<?xml version="1.0" encoding="UTF-8" standalone="yes" ?>
<!DOCTYPE bugzilla SYSTEM "https://bugs.webkit.org/page.cgi?id=bugzilla.dtd">

<bugzilla version="5.0.4.1"
          urlbase="https://bugs.webkit.org/"
          
          maintainer="admin@webkit.org"
>

    <bug>
          <bug_id>86241</bug_id>
          
          <creation_ts>2012-05-11 12:12:53 -0700</creation_ts>
          <short_desc>Introduce PropertyName class</short_desc>
          <delta_ts>2012-05-14 00:25:43 -0700</delta_ts>
          <reporter_accessible>1</reporter_accessible>
          <cclist_accessible>1</cclist_accessible>
          <classification_id>1</classification_id>
          <classification>Unclassified</classification>
          <product>WebKit</product>
          <component>JavaScriptCore</component>
          <version>528+ (Nightly build)</version>
          <rep_platform>Unspecified</rep_platform>
          <op_sys>Unspecified</op_sys>
          <bug_status>RESOLVED</bug_status>
          <resolution>FIXED</resolution>
          
          
          <bug_file_loc></bug_file_loc>
          <status_whiteboard></status_whiteboard>
          <keywords></keywords>
          <priority>P2</priority>
          <bug_severity>Normal</bug_severity>
          <target_milestone>---</target_milestone>
          <dependson>86283</dependson>
    
    <dependson>86295</dependson>
          
          <everconfirmed>1</everconfirmed>
          <reporter name="Gavin Barraclough">barraclough</reporter>
          <assigned_to name="Gavin Barraclough">barraclough</assigned_to>
          <cc>abarth</cc>
    
    <cc>cdumez</cc>
    
    <cc>eric.carlson</cc>
    
    <cc>feature-media-reviews</cc>
    
    <cc>ggaren</cc>
    
    <cc>gustavo</cc>
    
    <cc>haraken</cc>
    
    <cc>japhet</cc>
    
    <cc>loislo</cc>
    
    <cc>philn</cc>
    
    <cc>webkit.review.bot</cc>
    
    <cc>xan.lopez</cc>
          

      

      

      

          <comment_sort_order>oldest_to_newest</comment_sort_order>  
          <long_desc isprivate="0" >
    <commentid>621856</commentid>
    <comment_count>0</comment_count>
    <who name="Gavin Barraclough">barraclough</who>
    <bug_when>2012-05-11 12:12:53 -0700</bug_when>
    <thetext>Replace &apos;const Identifier&amp;&apos; arguments to functions accessing object properties with a new &apos;PropertyName&apos; type.
This change paves the way to allow for properties keyed by values that are not Identifiers.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>621863</commentid>
    <comment_count>1</comment_count>
      <attachid>141466</attachid>
    <who name="Gavin Barraclough">barraclough</who>
    <bug_when>2012-05-11 12:21:44 -0700</bug_when>
    <thetext>Created attachment 141466
Fix

No performance impact</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>621869</commentid>
    <comment_count>2</comment_count>
    <who name="WebKit Review Bot">webkit.review.bot</who>
    <bug_when>2012-05-11 12:27:30 -0700</bug_when>
    <thetext>Attachment 141466 did not pass style-queue:

Source/JavaScriptCore/runtime/JSNotAnObject.h:71:  The parameter name &quot;propertyName&quot; adds no information, so it should be removed.  [readability/parameter_name] [5]
Source/JavaScriptCore/runtime/JSNotAnObject.h:75:  The parameter name &quot;propertyName&quot; adds no information, so it should be removed.  [readability/parameter_name] [5]
Source/JavaScriptCore/runtime/JSNotAnObject.h:78:  The parameter name &quot;propertyName&quot; adds no information, so it should be removed.  [readability/parameter_name] [5]
Source/JavaScriptCore/runtime/JSFunction.h:58:  The parameter name &quot;nativeFunction&quot; adds no information, so it should be removed.  [readability/parameter_name] [5]
Source/JavaScriptCore/runtime/JSFunction.h:150:  The parameter name &quot;propertyName&quot; adds no information, so it should be removed.  [readability/parameter_name] [5]
Source/JavaScriptCore/runtime/JSFunction.h:152:  The parameter name &quot;propertyName&quot; adds no information, so it should be removed.  [readability/parameter_name] [5]
Source/JavaScriptCore/runtime/JSFunction.h:154:  The parameter name &quot;propertyName&quot; adds no information, so it should be removed.  [readability/parameter_name] [5]
Source/WebCore/bridge/runtime_object.h:48:  The parameter name &quot;propertyName&quot; adds no information, so it should be removed.  [readability/parameter_name] [5]
Source/WebCore/bridge/runtime_object.h:49:  The parameter name &quot;propertyName&quot; adds no information, so it should be removed.  [readability/parameter_name] [5]
Source/WebCore/bridge/runtime_object.h:50:  The parameter name &quot;propertyName&quot; adds no information, so it should be removed.  [readability/parameter_name] [5]
Source/WebCore/bridge/runtime_object.h:51:  The parameter name &quot;propertyName&quot; adds no information, so it should be removed.  [readability/parameter_name] [5]
Source/JavaScriptCore/runtime/JSArray.h:284:  The parameter name &quot;propertyName&quot; adds no information, so it should be removed.  [readability/parameter_name] [5]
Source/JavaScriptCore/runtime/JSArray.h:286:  The parameter name &quot;propertyName&quot; adds no information, so it should be removed.  [readability/parameter_name] [5]
Source/JavaScriptCore/runtime/JSActivation.h:68:  The parameter name &quot;propertyName&quot; adds no information, so it should be removed.  [readability/parameter_name] [5]
Source/WebCore/bridge/objc/objc_runtime.h:129:  The parameter name &quot;propertyName&quot; adds no information, so it should be removed.  [readability/parameter_name] [5]
Source/WebCore/bridge/objc/objc_runtime.h:131:  The parameter name &quot;propertyName&quot; adds no information, so it should be removed.  [readability/parameter_name] [5]
Source/WebCore/bridge/objc/objc_runtime.h:137:  _item is incorrectly named. Don&apos;t use underscores in your identifier names.  [readability/naming] [4]
Source/WebCore/bridge/c/c_instance.h:62:  The parameter name &quot;exec&quot; adds no information, so it should be removed.  [readability/parameter_name] [5]
Source/WebCore/bridge/c/c_instance.h:62:  The parameter name &quot;propertyName&quot; adds no information, so it should be removed.  [readability/parameter_name] [5]
Source/JavaScriptCore/runtime/StringPrototype.h:45:  The parameter name &quot;propertyName&quot; adds no information, so it should be removed.  [readability/parameter_name] [5]
Source/JavaScriptCore/runtime/Arguments.h:112:  The parameter name &quot;propertyName&quot; adds no information, so it should be removed.  [readability/parameter_name] [5]
Source/JavaScriptCore/runtime/Arguments.h:116:  The parameter name &quot;propertyName&quot; adds no information, so it should be removed.  [readability/parameter_name] [5]
Source/JavaScriptCore/runtime/Arguments.h:118:  The parameter name &quot;propertyName&quot; adds no information, so it should be removed.  [readability/parameter_name] [5]
Source/JavaScriptCore/runtime/Arguments.h:120:  The parameter name &quot;propertyName&quot; adds no information, so it should be removed.  [readability/parameter_name] [5]
Source/JavaScriptCore/runtime/Lookup.h:224:  The parameter name &quot;propertyName&quot; adds no information, so it should be removed.  [readability/parameter_name] [5]
Source/JavaScriptCore/runtime/RegExpObject.h:73:  The parameter name &quot;propertyName&quot; adds no information, so it should be removed.  [readability/parameter_name] [5]
Source/JavaScriptCore/runtime/RegExpObject.h:75:  The parameter name &quot;propertyName&quot; adds no information, so it should be removed.  [readability/parameter_name] [5]
Source/JavaScriptCore/runtime/RegExpObject.h:92:  The parameter name &quot;propertyName&quot; adds no information, so it should be removed.  [readability/parameter_name] [5]
Source/JavaScriptCore/runtime/RegExpObject.h:95:  The parameter name &quot;propertyName&quot; adds no information, so it should be removed.  [readability/parameter_name] [5]
Source/JavaScriptCore/runtime/Structure.h:89:  The parameter name &quot;propertyName&quot; adds no information, so it should be removed.  [readability/parameter_name] [5]
Source/JavaScriptCore/runtime/Structure.h:90:  The parameter name &quot;propertyName&quot; adds no information, so it should be removed.  [readability/parameter_name] [5]
Source/JavaScriptCore/runtime/Structure.h:91:  The parameter name &quot;propertyName&quot; adds no information, so it should be removed.  [readability/parameter_name] [5]
Source/JavaScriptCore/runtime/Structure.h:94:  The parameter name &quot;propertyName&quot; adds no information, so it should be removed.  [readability/parameter_name] [5]
Source/JavaScriptCore/runtime/Structure.h:111:  The parameter name &quot;propertyName&quot; adds no information, so it should be removed.  [readability/parameter_name] [5]
Source/JavaScriptCore/runtime/Structure.h:112:  The parameter name &quot;propertyName&quot; adds no information, so it should be removed.  [readability/parameter_name] [5]
Source/JavaScriptCore/runtime/Structure.h:139:  The parameter name &quot;propertyName&quot; adds no information, so it should be removed.  [readability/parameter_name] [5]
Source/JavaScriptCore/runtime/Structure.h:141:  The parameter name &quot;globalData&quot; adds no information, so it should be removed.  [readability/parameter_name] [5]
Source/JavaScriptCore/runtime/Structure.h:141:  The parameter name &quot;propertyName&quot; adds no information, so it should be removed.  [readability/parameter_name] [5]
Source/JavaScriptCore/runtime/Structure.h:160:  The parameter name &quot;propertyName&quot; adds no information, so it should be removed.  [readability/parameter_name] [5]
Source/JavaScriptCore/runtime/Structure.h:233:  The parameter name &quot;propertyName&quot; adds no information, so it should be removed.  [readability/parameter_name] [5]
Source/JavaScriptCore/runtime/Structure.h:234:  The parameter name &quot;propertyName&quot; adds no information, so it should be removed.  [readability/parameter_name] [5]
Source/WebCore/bindings/js/JSDOMBinding.h:340:  The parameter name &quot;propertyName&quot; adds no information, so it should be removed.  [readability/parameter_name] [5]
Source/WebCore/bindings/js/JSDOMWindowShell.h:81:  The parameter name &quot;propertyName&quot; adds no information, so it should be removed.  [readability/parameter_name] [5]
Source/WebCore/bindings/js/JSDOMWindowShell.h:82:  The parameter name &quot;propertyName&quot; adds no information, so it should be removed.  [readability/parameter_name] [5]
Source/WebCore/bindings/js/JSDOMWindowShell.h:83:  The parameter name &quot;propertyName&quot; adds no information, so it should be removed.  [readability/parameter_name] [5]
Source/WebCore/bindings/js/JSDOMWindowShell.h:84:  The parameter name &quot;propertyName&quot; adds no information, so it should be removed.  [readability/parameter_name] [5]
Source/WebCore/bindings/js/JSDOMWindowShell.h:85:  The parameter name &quot;propertyName&quot; adds no information, so it should be removed.  [readability/parameter_name] [5]
Source/WebCore/bindings/js/JSDOMWindowShell.h:88:  The parameter name &quot;propertyName&quot; adds no information, so it should be removed.  [readability/parameter_name] [5]
Source/JavaScriptCore/runtime/JSValue.h:222:  The parameter name &quot;propertyName&quot; adds no information, so it should be removed.  [readability/parameter_name] [5]
Source/JavaScriptCore/runtime/JSValue.h:223:  The parameter name &quot;propertyName&quot; adds no information, so it should be removed.  [readability/parameter_name] [5]
Source/JavaScriptCore/runtime/JSValue.h:226:  The parameter name &quot;propertyName&quot; adds no information, so it should be removed.  [readability/parameter_name] [5]
Source/JavaScriptCore/runtime/JSValue.h:227:  The parameter name &quot;propertyName&quot; adds no information, so it should be removed.  [readability/parameter_name] [5]
Source/WebCore/bridge/jni/jsc/JavaInstanceJSC.h:56:  The parameter name &quot;exec&quot; adds no information, so it should be removed.  [readability/parameter_name] [5]
Source/WebCore/bridge/jni/jsc/JavaInstanceJSC.h:56:  The parameter name &quot;propertyName&quot; adds no information, so it should be removed.  [readability/parameter_name] [5]
Source/WebKit2/WebProcess/Plugins/Netscape/JSNPObject.h:86:  The parameter name &quot;propertyName&quot; adds no information, so it should be removed.  [readability/parameter_name] [5]
Source/WebKit2/WebProcess/Plugins/Netscape/JSNPObject.h:87:  The parameter name &quot;propertyName&quot; adds no information, so it should be removed.  [readability/parameter_name] [5]
Source/WebKit2/WebProcess/Plugins/Netscape/JSNPObject.h:88:  The parameter name &quot;propertyName&quot; adds no information, so it should be removed.  [readability/parameter_name] [5]
Source/WebKit2/WebProcess/Plugins/Netscape/JSNPObject.h:90:  The parameter name &quot;propertyName&quot; adds no information, so it should be removed.  [readability/parameter_name] [5]
Source/JavaScriptCore/runtime/JSString.h:146:  The parameter name &quot;propertyName&quot; adds no information, so it should be removed.  [readability/parameter_name] [5]
Source/JavaScriptCore/runtime/JSString.h:148:  The parameter name &quot;propertyName&quot; adds no information, so it should be removed.  [readability/parameter_name] [5]
Source/JavaScriptCore/runtime/JSString.h:184:  The parameter name &quot;propertyName&quot; adds no information, so it should be removed.  [readability/parameter_name] [5]
Source/JavaScriptCore/debugger/DebuggerActivation.h:46:  The parameter name &quot;propertyName&quot; adds no information, so it should be removed.  [readability/parameter_name] [5]
Source/JavaScriptCore/debugger/DebuggerActivation.h:47:  The parameter name &quot;propertyName&quot; adds no information, so it should be removed.  [readability/parameter_name] [5]
Source/JavaScriptCore/debugger/DebuggerActivation.h:48:  The parameter name &quot;propertyName&quot; adds no information, so it should be removed.  [readability/parameter_name] [5]
Source/JavaScriptCore/debugger/DebuggerActivation.h:49:  The parameter name &quot;propertyName&quot; adds no information, so it should be removed.  [readability/parameter_name] [5]
Source/JavaScriptCore/debugger/DebuggerActivation.h:52:  The parameter name &quot;propertyName&quot; adds no information, so it should be removed.  [readability/parameter_name] [5]
Source/WebCore/bridge/objc/objc_instance.h:50:  The parameter name &quot;exec&quot; adds no information, so it should be removed.  [readability/parameter_name] [5]
Source/WebCore/bridge/objc/objc_instance.h:50:  The parameter name &quot;propertyName&quot; adds no information, so it should be removed.  [readability/parameter_name] [5]
Source/JavaScriptCore/runtime/JSCell.h:109:  The parameter name &quot;propertyName&quot; adds no information, so it should be removed.  [readability/parameter_name] [5]
Source/JavaScriptCore/runtime/JSCell.h:112:  The parameter name &quot;propertyName&quot; adds no information, so it should be removed.  [readability/parameter_name] [5]
Source/JavaScriptCore/runtime/JSCell.h:124:  The parameter name &quot;propertyName&quot; adds no information, so it should be removed.  [readability/parameter_name] [5]
Source/JavaScriptCore/runtime/JSCell.h:153:  The parameter name &quot;propertyName&quot; adds no information, so it should be removed.  [readability/parameter_name] [5]
Source/JavaScriptCore/runtime/JSCell.h:162:  The parameter name &quot;propertyName&quot; adds no information, so it should be removed.  [readability/parameter_name] [5]
Source/JavaScriptCore/runtime/JSCell.h:163:  The parameter name &quot;propertyName&quot; adds no information, so it should be removed.  [readability/parameter_name] [5]
Source/JavaScriptCore/runtime/RegExpConstructor.h:51:  The parameter name &quot;propertyName&quot; adds no information, so it should be removed.  [readability/parameter_name] [5]
Source/JavaScriptCore/runtime/RegExpConstructor.h:53:  The parameter name &quot;propertyName&quot; adds no information, so it should be removed.  [readability/parameter_name] [5]
Source/JavaScriptCore/runtime/JSGlobalObject.h:207:  The parameter name &quot;propertyName&quot; adds no information, so it should be removed.  [readability/parameter_name] [5]
Source/JavaScriptCore/runtime/JSGlobalObject.h:209:  The parameter name &quot;propertyName&quot; adds no information, so it should be removed.  [readability/parameter_name] [5]
Source/JavaScriptCore/runtime/JSGlobalObject.h:210:  The parameter name &quot;propertyName&quot; adds no information, so it should be removed.  [readability/parameter_name] [5]
Source/JavaScriptCore/runtime/JSGlobalObject.h:211:  The parameter name &quot;propertyName&quot; adds no information, so it should be removed.  [readability/parameter_name] [5]
Source/JavaScriptCore/runtime/JSGlobalObject.h:215:  The parameter name &quot;propertyName&quot; adds no information, so it should be removed.  [readability/parameter_name] [5]
Source/JavaScriptCore/runtime/NumberConstructor.h:41:  The parameter name &quot;propertyName&quot; adds no information, so it should be removed.  [readability/parameter_name] [5]
Source/WebCore/bridge/jsc/BridgeJSC.h:94:  The parameter name &quot;exec&quot; adds no information, so it should be removed.  [readability/parameter_name] [5]
Source/WebCore/bridge/jsc/BridgeJSC.h:94:  The parameter name &quot;propertyName&quot; adds no information, so it should be removed.  [readability/parameter_name] [5]
Source/JavaScriptCore/runtime/JSObject.h:78:  The parameter name &quot;exec&quot; adds no information, so it should be removed.  [readability/parameter_name] [5]
Source/JavaScriptCore/runtime/JSObject.h:78:  The parameter name &quot;entry&quot; adds no information, so it should be removed.  [readability/parameter_name] [5]
Source/JavaScriptCore/runtime/JSObject.h:78:  The parameter name &quot;propertyName&quot; adds no information, so it should be removed.  [readability/parameter_name] [5]
Source/JavaScriptCore/runtime/JSObject.h:78:  The parameter name &quot;slot&quot; adds no information, so it should be removed.  [readability/parameter_name] [5]
Source/JavaScriptCore/runtime/JSObject.h:98:  The parameter name &quot;propertyName&quot; adds no information, so it should be removed.  [readability/parameter_name] [5]
Source/JavaScriptCore/runtime/JSObject.h:101:  The parameter name &quot;propertyName&quot; adds no information, so it should be removed.  [readability/parameter_name] [5]
Source/JavaScriptCore/runtime/JSObject.h:103:  The parameter name &quot;propertyName&quot; adds no information, so it should be removed.  [readability/parameter_name] [5]
Source/JavaScriptCore/runtime/JSObject.h:105:  The parameter name &quot;propertyName&quot; adds no information, so it should be removed.  [readability/parameter_name] [5]
Source/JavaScriptCore/runtime/JSObject.h:111:  The parameter name &quot;propertyName&quot; adds no information, so it should be removed.  [readability/parameter_name] [5]
Source/JavaScriptCore/runtime/JSObject.h:118:  The parameter name &quot;propertyName&quot; adds no information, so it should be removed.  [readability/parameter_name] [5]
Source/JavaScriptCore/runtime/JSObject.h:119:  The parameter name &quot;propertyName&quot; adds no information, so it should be removed.  [readability/parameter_name] [5]
Source/JavaScriptCore/runtime/JSObject.h:120:  The parameter name &quot;propertyName&quot; adds no information, so it should be removed.  [readability/parameter_name] [5]
Source/JavaScriptCore/runtime/JSObject.h:121:  The parameter name &quot;propertyName&quot; adds no information, so it should be removed.  [readability/parameter_name] [5]
Source/JavaScriptCore/runtime/JSObject.h:122:  The parameter name &quot;propertyName&quot; adds no information, so it should be removed.  [readability/parameter_name] [5]
Source/JavaScriptCore/runtime/JSObject.h:126:  The parameter name &quot;propertyName&quot; adds no information, so it should be removed.  [readability/parameter_name] [5]
Source/JavaScriptCore/runtime/JSObject.h:128:  The parameter name &quot;propertyName&quot; adds no information, so it should be removed.  [readability/parameter_name] [5]
Source/JavaScriptCore/runtime/JSObject.h:130:  The parameter name &quot;propertyName&quot; adds no information, so it should be removed.  [readability/parameter_nFailed to run &quot;[&apos;Tools/Scripts/check-webkit-style&apos;, &apos;--diff-files&apos;, u&apos;Source/JavaScriptCore/API/JSCallbackFuncti...&quot; exit_code: 1
ame] [5]
Source/JavaScriptCore/runtime/JSObject.h:151:  The parameter name &quot;exec&quot; adds no information, so it should be removed.  [readability/parameter_name] [5]
Source/JavaScriptCore/runtime/JSObject.h:151:  The parameter name &quot;propertyName&quot; adds no information, so it should be removed.  [readability/parameter_name] [5]
Source/JavaScriptCore/runtime/JSObject.h:180:  The parameter name &quot;propertyName&quot; adds no information, so it should be removed.  [readability/parameter_name] [5]
Source/JavaScriptCore/runtime/JSObject.h:189:  The parameter name &quot;propertyName&quot; adds no information, so it should be removed.  [readability/parameter_name] [5]
Source/JavaScriptCore/runtime/JSObject.h:196:  The parameter name &quot;propertyName&quot; adds no information, so it should be removed.  [readability/parameter_name] [5]
Source/JavaScriptCore/runtime/JSObject.h:297:  The parameter name &quot;propertyName&quot; adds no information, so it should be removed.  [readability/parameter_name] [5]
Source/JavaScriptCore/runtime/JSObject.h:299:  The parameter name &quot;propertyName&quot; adds no information, so it should be removed.  [readability/parameter_name] [5]
Source/JavaScriptCore/runtime/JSObject.h:302:  The parameter name &quot;propertyName&quot; adds no information, so it should be removed.  [readability/parameter_name] [5]
Source/JavaScriptCore/runtime/StringObject.h:48:  The parameter name &quot;propertyName&quot; adds no information, so it should be removed.  [readability/parameter_name] [5]
Source/JavaScriptCore/runtime/StringObject.h:52:  The parameter name &quot;propertyName&quot; adds no information, so it should be removed.  [readability/parameter_name] [5]
Source/JavaScriptCore/runtime/StringObject.h:54:  The parameter name &quot;propertyName&quot; adds no information, so it should be removed.  [readability/parameter_name] [5]
Source/JavaScriptCore/runtime/StringObject.h:56:  The parameter name &quot;propertyName&quot; adds no information, so it should be removed.  [readability/parameter_name] [5]
Source/WebCore/bridge/objc/objc_class.h:44:  The parameter name &quot;instance&quot; adds no information, so it should be removed.  [readability/parameter_name] [5]
Source/WebCore/bridge/objc/objc_class.h:45:  The parameter name &quot;instance&quot; adds no information, so it should be removed.  [readability/parameter_name] [5]
Source/WebCore/bridge/objc/objc_class.h:47:  The parameter name &quot;exec&quot; adds no information, so it should be removed.  [readability/parameter_name] [5]
Source/WebCore/bridge/objc/objc_class.h:47:  The parameter name &quot;instance&quot; adds no information, so it should be removed.  [readability/parameter_name] [5]
Source/WebCore/bridge/objc/objc_class.h:47:  The parameter name &quot;propertyName&quot; adds no information, so it should be removed.  [readability/parameter_name] [5]
Source/WebKit/mac/Plugins/Hosted/ProxyInstance.h:69:  The parameter name &quot;exec&quot; adds no information, so it should be removed.  [readability/parameter_name] [5]
Source/WebKit/mac/Plugins/Hosted/ProxyInstance.h:69:  The parameter name &quot;propertyName&quot; adds no information, so it should be removed.  [readability/parameter_name] [5]
Source/JavaScriptCore/runtime/ObjectPrototype.h:54:  The parameter name &quot;propertyName&quot; adds no information, so it should be removed.  [readability/parameter_name] [5]
Source/WebCore/bridge/runtime_array.h:57:  The parameter name &quot;propertyName&quot; adds no information, so it should be removed.  [readability/parameter_name] [5]
Source/WebCore/bridge/runtime_array.h:60:  The parameter name &quot;propertyName&quot; adds no information, so it should be removed.  [readability/parameter_name] [5]
Total errors found: 123 in 150 files


If any of these errors are false positives, please file a bug against check-webkit-style.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>621870</commentid>
    <comment_count>3</comment_count>
      <attachid>141466</attachid>
    <who name="Gustavo Noronha (kov)">gustavo</who>
    <bug_when>2012-05-11 12:30:32 -0700</bug_when>
    <thetext>Comment on attachment 141466
Fix

Attachment 141466 did not pass gtk-ews (gtk):
Output: http://queues.webkit.org/results/12667459</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>621881</commentid>
    <comment_count>4</comment_count>
    <who name="Geoffrey Garen">ggaren</who>
    <bug_when>2012-05-11 12:35:56 -0700</bug_when>
    <thetext>svn add, please. :)</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>621883</commentid>
    <comment_count>5</comment_count>
      <attachid>141472</attachid>
    <who name="Gavin Barraclough">barraclough</who>
    <bug_when>2012-05-11 12:36:52 -0700</bug_when>
    <thetext>Created attachment 141472
ooops! - svn add</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>621890</commentid>
    <comment_count>6</comment_count>
      <attachid>141472</attachid>
    <who name="Geoffrey Garen">ggaren</who>
    <bug_when>2012-05-11 12:39:59 -0700</bug_when>
    <thetext>Comment on attachment 141472
ooops! - svn add

r=me</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>621893</commentid>
    <comment_count>7</comment_count>
    <who name="WebKit Review Bot">webkit.review.bot</who>
    <bug_when>2012-05-11 12:41:26 -0700</bug_when>
    <thetext>Attachment 141472 did not pass style-queue:

Source/JavaScriptCore/runtime/JSNotAnObject.h:71:  The parameter name &quot;propertyName&quot; adds no information, so it should be removed.  [readability/parameter_name] [5]
Source/JavaScriptCore/runtime/JSNotAnObject.h:75:  The parameter name &quot;propertyName&quot; adds no information, so it should be removed.  [readability/parameter_name] [5]
Source/JavaScriptCore/runtime/JSNotAnObject.h:78:  The parameter name &quot;propertyName&quot; adds no information, so it should be removed.  [readability/parameter_name] [5]
Source/JavaScriptCore/runtime/JSFunction.h:58:  The parameter name &quot;nativeFunction&quot; adds no information, so it should be removed.  [readability/parameter_name] [5]
Source/JavaScriptCore/runtime/JSFunction.h:150:  The parameter name &quot;propertyName&quot; adds no information, so it should be removed.  [readability/parameter_name] [5]
Source/JavaScriptCore/runtime/JSFunction.h:152:  The parameter name &quot;propertyName&quot; adds no information, so it should be removed.  [readability/parameter_name] [5]
Source/JavaScriptCore/runtime/JSFunction.h:154:  The parameter name &quot;propertyName&quot; adds no information, so it should be removed.  [readability/parameter_name] [5]
Source/WebCore/bridge/runtime_object.h:48:  The parameter name &quot;propertyName&quot; adds no information, so it should be removed.  [readability/parameter_name] [5]
Source/WebCore/bridge/runtime_object.h:49:  The parameter name &quot;propertyName&quot; adds no information, so it should be removed.  [readability/parameter_name] [5]
Source/WebCore/bridge/runtime_object.h:50:  The parameter name &quot;propertyName&quot; adds no information, so it should be removed.  [readability/parameter_name] [5]
Source/WebCore/bridge/runtime_object.h:51:  The parameter name &quot;propertyName&quot; adds no information, so it should be removed.  [readability/parameter_name] [5]
Source/JavaScriptCore/runtime/JSArray.h:284:  The parameter name &quot;propertyName&quot; adds no information, so it should be removed.  [readability/parameter_name] [5]
Source/JavaScriptCore/runtime/JSArray.h:286:  The parameter name &quot;propertyName&quot; adds no information, so it should be removed.  [readability/parameter_name] [5]
Source/JavaScriptCore/runtime/JSActivation.h:68:  The parameter name &quot;propertyName&quot; adds no information, so it should be removed.  [readability/parameter_name] [5]
Source/WebCore/bridge/objc/objc_runtime.h:129:  The parameter name &quot;propertyName&quot; adds no information, so it should be removed.  [readability/parameter_name] [5]
Source/WebCore/bridge/objc/objc_runtime.h:131:  The parameter name &quot;propertyName&quot; adds no information, so it should be removed.  [readability/parameter_name] [5]
Source/WebCore/bridge/objc/objc_runtime.h:137:  _item is incorrectly named. Don&apos;t use underscores in your identifier names.  [readability/naming] [4]
Source/WebCore/bindings/js/JSDOMBinding.h:340:  The parameter name &quot;propertyName&quot; adds no information, so it should be removed.  [readability/parameter_name] [5]
Source/JavaScriptCore/runtime/StringPrototype.h:45:  The parameter name &quot;propertyName&quot; adds no information, so it should be removed.  [readability/parameter_name] [5]
Source/JavaScriptCore/runtime/Arguments.h:112:  The parameter name &quot;propertyName&quot; adds no information, so it should be removed.  [readability/parameter_name] [5]
Source/JavaScriptCore/runtime/Arguments.h:116:  The parameter name &quot;propertyName&quot; adds no information, so it should be removed.  [readability/parameter_name] [5]
Source/JavaScriptCore/runtime/Arguments.h:118:  The parameter name &quot;propertyName&quot; adds no information, so it should be removed.  [readability/parameter_name] [5]
Source/JavaScriptCore/runtime/Arguments.h:120:  The parameter name &quot;propertyName&quot; adds no information, so it should be removed.  [readability/parameter_name] [5]
Source/WebCore/bridge/c/c_instance.h:62:  The parameter name &quot;exec&quot; adds no information, so it should be removed.  [readability/parameter_name] [5]
Source/WebCore/bridge/c/c_instance.h:62:  The parameter name &quot;propertyName&quot; adds no information, so it should be removed.  [readability/parameter_name] [5]
Source/JavaScriptCore/runtime/Lookup.h:224:  The parameter name &quot;propertyName&quot; adds no information, so it should be removed.  [readability/parameter_name] [5]
Source/JavaScriptCore/runtime/RegExpObject.h:73:  The parameter name &quot;propertyName&quot; adds no information, so it should be removed.  [readability/parameter_name] [5]
Source/JavaScriptCore/runtime/RegExpObject.h:75:  The parameter name &quot;propertyName&quot; adds no information, so it should be removed.  [readability/parameter_name] [5]
Source/JavaScriptCore/runtime/RegExpObject.h:92:  The parameter name &quot;propertyName&quot; adds no information, so it should be removed.  [readability/parameter_name] [5]
Source/JavaScriptCore/runtime/RegExpObject.h:95:  The parameter name &quot;propertyName&quot; adds no information, so it should be removed.  [readability/parameter_name] [5]
Source/JavaScriptCore/runtime/Structure.h:89:  The parameter name &quot;propertyName&quot; adds no information, so it should be removed.  [readability/parameter_name] [5]
Source/JavaScriptCore/runtime/Structure.h:90:  The parameter name &quot;propertyName&quot; adds no information, so it should be removed.  [readability/parameter_name] [5]
Source/JavaScriptCore/runtime/Structure.h:91:  The parameter name &quot;propertyName&quot; adds no information, so it should be removed.  [readability/parameter_name] [5]
Source/JavaScriptCore/runtime/Structure.h:94:  The parameter name &quot;propertyName&quot; adds no information, so it should be removed.  [readability/parameter_name] [5]
Source/JavaScriptCore/runtime/Structure.h:111:  The parameter name &quot;propertyName&quot; adds no information, so it should be removed.  [readability/parameter_name] [5]
Source/JavaScriptCore/runtime/Structure.h:112:  The parameter name &quot;propertyName&quot; adds no information, so it should be removed.  [readability/parameter_name] [5]
Source/JavaScriptCore/runtime/Structure.h:139:  The parameter name &quot;propertyName&quot; adds no information, so it should be removed.  [readability/parameter_name] [5]
Source/JavaScriptCore/runtime/Structure.h:141:  The parameter name &quot;globalData&quot; adds no information, so it should be removed.  [readability/parameter_name] [5]
Source/JavaScriptCore/runtime/Structure.h:141:  The parameter name &quot;propertyName&quot; adds no information, so it should be removed.  [readability/parameter_name] [5]
Source/JavaScriptCore/runtime/Structure.h:160:  The parameter name &quot;propertyName&quot; adds no information, so it should be removed.  [readability/parameter_name] [5]
Source/JavaScriptCore/runtime/Structure.h:233:  The parameter name &quot;propertyName&quot; adds no information, so it should be removed.  [readability/parameter_name] [5]
Source/JavaScriptCore/runtime/Structure.h:234:  The parameter name &quot;propertyName&quot; adds no information, so it should be removed.  [readability/parameter_name] [5]
Source/WebCore/bindings/js/JSDOMWindowShell.h:81:  The parameter name &quot;propertyName&quot; adds no information, so it should be removed.  [readability/parameter_name] [5]
Source/WebCore/bindings/js/JSDOMWindowShell.h:82:  The parameter name &quot;propertyName&quot; adds no information, so it should be removed.  [readability/parameter_name] [5]
Source/WebCore/bindings/js/JSDOMWindowShell.h:83:  The parameter name &quot;propertyName&quot; adds no information, so it should be removed.  [readability/parameter_name] [5]
Source/WebCore/bindings/js/JSDOMWindowShell.h:84:  The parameter name &quot;propertyName&quot; adds no information, so it should be removed.  [readability/parameter_name] [5]
Source/WebCore/bindings/js/JSDOMWindowShell.h:85:  The parameter name &quot;propertyName&quot; adds no information, so it should be removed.  [readability/parameter_name] [5]
Source/WebCore/bindings/js/JSDOMWindowShell.h:88:  The parameter name &quot;propertyName&quot; adds no information, so it should be removed.  [readability/parameter_name] [5]
Source/JavaScriptCore/runtime/JSValue.h:222:  The parameter name &quot;propertyName&quot; adds no information, so it should be removed.  [readability/parameter_name] [5]
Source/JavaScriptCore/runtime/JSValue.h:223:  The parameter name &quot;propertyName&quot; adds no information, so it should be removed.  [readability/parameter_name] [5]
Source/JavaScriptCore/runtime/JSValue.h:226:  The parameter name &quot;propertyName&quot; adds no information, so it should be removed.  [readability/parameter_name] [5]
Source/JavaScriptCore/runtime/JSValue.h:227:  The parameter name &quot;propertyName&quot; adds no information, so it should be removed.  [readability/parameter_name] [5]
Source/WebCore/bridge/jni/jsc/JavaInstanceJSC.h:56:  The parameter name &quot;exec&quot; adds no information, so it should be removed.  [readability/parameter_name] [5]
Source/WebCore/bridge/jni/jsc/JavaInstanceJSC.h:56:  The parameter name &quot;propertyName&quot; adds no information, so it should be removed.  [readability/parameter_name] [5]
Source/WebKit2/WebProcess/Plugins/Netscape/JSNPObject.h:86:  The parameter name &quot;propertyName&quot; adds no information, so it should be removed.  [readability/parameter_name] [5]
Source/WebKit2/WebProcess/Plugins/Netscape/JSNPObject.h:87:  The parameter name &quot;propertyName&quot; adds no information, so it should be removed.  [readability/parameter_name] [5]
Source/WebKit2/WebProcess/Plugins/Netscape/JSNPObject.h:88:  The parameter name &quot;propertyName&quot; adds no information, so it should be removed.  [readability/parameter_name] [5]
Source/WebKit2/WebProcess/Plugins/Netscape/JSNPObject.h:90:  The parameter name &quot;propertyName&quot; adds no information, so it should be removed.  [readability/parameter_name] [5]
Source/JavaScriptCore/runtime/JSString.h:146:  The parameter name &quot;propertyName&quot; adds no information, so it should be removed.  [readability/parameter_name] [5]
Source/JavaScriptCore/runtime/JSString.h:148:  The parameter name &quot;propertyName&quot; adds no information, so it should be removed.  [readability/parameter_name] [5]
Source/JavaScriptCore/runtime/JSString.h:184:  The parameter name &quot;propertyName&quot; adds no information, so it should be removed.  [readability/parameter_name] [5]
Source/JavaScriptCore/debugger/DebuggerActivation.h:46:  The parameter name &quot;propertyName&quot; adds no information, so it should be removed.  [readability/parameter_name] [5]
Source/JavaScriptCore/debugger/DebuggerActivation.h:47:  The parameter name &quot;propertyName&quot; adds no information, so it should be removed.  [readability/parameter_name] [5]
Source/JavaScriptCore/debugger/DebuggerActivation.h:48:  The parameter name &quot;propertyName&quot; adds no information, so it should be removed.  [readability/parameter_name] [5]
Source/JavaScriptCore/debugger/DebuggerActivation.h:49:  The parameter name &quot;propertyName&quot; adds no information, so it should be removed.  [readability/parameter_name] [5]
Source/JavaScriptCore/debugger/DebuggerActivation.h:52:  The parameter name &quot;propertyName&quot; adds no information, so it should be removed.  [readability/parameter_name] [5]
Source/WebCore/bridge/objc/objc_instance.h:50:  The parameter name &quot;exec&quot; adds no information, so it should be removed.  [readability/parameter_name] [5]
Source/WebCore/bridge/objc/objc_instance.h:50:  The parameter name &quot;propertyName&quot; adds no information, so it should be removed.  [readability/parameter_name] [5]
Source/JavaScriptCore/runtime/JSCell.h:109:  The parameter name &quot;propertyName&quot; adds no information, so it should be removed.  [readability/parameter_name] [5]
Source/JavaScriptCore/runtime/JSCell.h:112:  The parameter name &quot;propertyName&quot; adds no information, so it should be removed.  [readability/parameter_name] [5]
Source/JavaScriptCore/runtime/JSCell.h:124:  The parameter name &quot;propertyName&quot; adds no information, so it should be removed.  [readability/parameter_name] [5]
Source/JavaScriptCore/runtime/JSCell.h:153:  The parameter name &quot;propertyName&quot; adds no information, so it should be removed.  [readability/parameter_name] [5]
Source/JavaScriptCore/runtime/JSCell.h:162:  The parameter name &quot;propertyName&quot; adds no information, so it should be removed.  [readability/parameter_name] [5]
Source/JavaScriptCore/runtime/JSCell.h:163:  The parameter name &quot;propertyName&quot; adds no information, so it should be removed.  [readability/parameter_name] [5]
Source/JavaScriptCore/runtime/RegExpConstructor.h:51:  The parameter name &quot;propertyName&quot; adds no information, so it should be removed.  [readability/parameter_name] [5]
Source/JavaScriptCore/runtime/RegExpConstructor.h:53:  The parameter name &quot;propertyName&quot; adds no information, so it should be removed.  [readability/parameter_name] [5]
Source/JavaScriptCore/runtime/JSGlobalObject.h:207:  The parameter name &quot;propertyName&quot; adds no information, so it should be removed.  [readability/parameter_name] [5]
Source/JavaScriptCore/runtime/JSGlobalObject.h:209:  The parameter name &quot;propertyName&quot; adds no information, so it should be removed.  [readability/parameter_name] [5]
Source/JavaScriptCore/runtime/JSGlobalObject.h:210:  The parameter name &quot;propertyName&quot; adds no information, so it should be removed.  [readability/parameter_name] [5]
Source/JavaScriptCore/runtime/JSGlobalObject.h:211:  The parameter name &quot;propertyName&quot; adds no information, so it should be removed.  [readability/parameter_name] [5]
Source/JavaScriptCore/runtime/JSGlobalObject.h:215:  The parameter name &quot;propertyName&quot; adds no information, so it should be removed.  [readability/parameter_name] [5]
Source/JavaScriptCore/runtime/NumberConstructor.h:41:  The parameter name &quot;propertyName&quot; adds no information, so it should be removed.  [readability/parameter_name] [5]
Source/WebCore/bridge/jsc/BridgeJSC.h:94:  The parameter name &quot;exec&quot; adds no information, so it should be removed.  [readability/parameter_name] [5]
Source/WebCore/bridge/jsc/BridgeJSC.h:94:  The parameter name &quot;propertyName&quot; adds no information, so it should be removed.  [readability/parameter_name] [5]
Source/JavaScriptCore/runtime/JSObject.h:78:  The parameter name &quot;exec&quot; adds no information, so it should be removed.  [readability/parameter_name] [5]
Source/JavaScriptCore/runtime/JSObject.h:78:  The parameter name &quot;entry&quot; adds no information, so it should be removed.  [readability/parameter_name] [5]
Source/JavaScriptCore/runtime/JSObject.h:78:  The parameter name &quot;propertyName&quot; adds no information, so it should be removed.  [readability/parameter_name] [5]
Source/JavaScriptCore/runtime/JSObject.h:78:  The parameter name &quot;slot&quot; adds no information, so it should be removed.  [readability/parameter_name] [5]
Source/JavaScriptCore/runtime/JSObject.h:98:  The parameter name &quot;propertyName&quot; adds no information, so it should be removed.  [readability/parameter_name] [5]
Source/JavaScriptCore/runtime/JSObject.h:101:  The parameter name &quot;propertyName&quot; adds no information, so it should be removed.  [readability/parameter_name] [5]
Source/JavaScriptCore/runtime/JSObject.h:103:  The parameter name &quot;propertyName&quot; adds no information, so it should be removed.  [readability/parameter_name] [5]
Source/JavaScriptCore/runtime/JSObject.h:105:  The parameter name &quot;propertyName&quot; adds no information, so it should be removed.  [readability/parameter_name] [5]
Source/JavaScriptCore/runtime/JSObject.h:111:  The parameter name &quot;propertyName&quot; adds no information, so it should be removed.  [readability/parameter_name] [5]
Source/JavaScriptCore/runtime/JSObject.h:118:  The parameter name &quot;propertyName&quot; adds no information, so it should be removed.  [readability/parameter_name] [5]
Source/JavaScriptCore/runtime/JSObject.h:119:  The parameter name &quot;propertyName&quot; adds no information, so it should be removed.  [readability/parameter_name] [5]
Source/JavaScriptCore/runtime/JSObject.h:120:  The parameter name &quot;propertyName&quot; adds no information, so it should be removed.  [readability/parameter_name] [5]
Source/JavaScriptCore/runtime/JSObject.h:121:  The parameter name &quot;propertyName&quot; adds no information, so it should be removed.  [readability/parameter_name] [5]
Source/JavaScriptCore/runtime/JSObject.h:122:  The parameter name &quot;propertyName&quot; adds no information, so it should be removed.  [readability/parameter_name] [5]
Source/JavaScriptCore/runtime/JSObject.h:126:  The parameter name &quot;propertyName&quot; adds no information, so it should be removed.  [readability/parameter_name] [5]
Source/JavaScriptCore/runtime/JSObject.h:128:  The parameter name &quot;propertyName&quot; adds no information, so it should be removed.  [readability/parameter_name] [5]
Source/JavaScriptCore/runtime/JSObject.h:130:  The parameter name &quot;propertyName&quot; adds no information, so it should be removed.  [readability/parameter_nFailed to run &quot;[&apos;Tools/Scripts/check-webkit-style&apos;, &apos;--diff-files&apos;, u&apos;Source/JavaScriptCore/API/JSCallbackFuncti...&quot; exit_code: 1
ame] [5]
Source/JavaScriptCore/runtime/JSObject.h:151:  The parameter name &quot;exec&quot; adds no information, so it should be removed.  [readability/parameter_name] [5]
Source/JavaScriptCore/runtime/JSObject.h:151:  The parameter name &quot;propertyName&quot; adds no information, so it should be removed.  [readability/parameter_name] [5]
Source/JavaScriptCore/runtime/JSObject.h:180:  The parameter name &quot;propertyName&quot; adds no information, so it should be removed.  [readability/parameter_name] [5]
Source/JavaScriptCore/runtime/JSObject.h:189:  The parameter name &quot;propertyName&quot; adds no information, so it should be removed.  [readability/parameter_name] [5]
Source/JavaScriptCore/runtime/JSObject.h:196:  The parameter name &quot;propertyName&quot; adds no information, so it should be removed.  [readability/parameter_name] [5]
Source/JavaScriptCore/runtime/JSObject.h:297:  The parameter name &quot;propertyName&quot; adds no information, so it should be removed.  [readability/parameter_name] [5]
Source/JavaScriptCore/runtime/JSObject.h:299:  The parameter name &quot;propertyName&quot; adds no information, so it should be removed.  [readability/parameter_name] [5]
Source/JavaScriptCore/runtime/JSObject.h:302:  The parameter name &quot;propertyName&quot; adds no information, so it should be removed.  [readability/parameter_name] [5]
Source/JavaScriptCore/runtime/StringObject.h:48:  The parameter name &quot;propertyName&quot; adds no information, so it should be removed.  [readability/parameter_name] [5]
Source/JavaScriptCore/runtime/StringObject.h:52:  The parameter name &quot;propertyName&quot; adds no information, so it should be removed.  [readability/parameter_name] [5]
Source/JavaScriptCore/runtime/StringObject.h:54:  The parameter name &quot;propertyName&quot; adds no information, so it should be removed.  [readability/parameter_name] [5]
Source/JavaScriptCore/runtime/StringObject.h:56:  The parameter name &quot;propertyName&quot; adds no information, so it should be removed.  [readability/parameter_name] [5]
Source/WebCore/bridge/objc/objc_class.h:44:  The parameter name &quot;instance&quot; adds no information, so it should be removed.  [readability/parameter_name] [5]
Source/WebCore/bridge/objc/objc_class.h:45:  The parameter name &quot;instance&quot; adds no information, so it should be removed.  [readability/parameter_name] [5]
Source/WebCore/bridge/objc/objc_class.h:47:  The parameter name &quot;exec&quot; adds no information, so it should be removed.  [readability/parameter_name] [5]
Source/WebCore/bridge/objc/objc_class.h:47:  The parameter name &quot;instance&quot; adds no information, so it should be removed.  [readability/parameter_name] [5]
Source/WebCore/bridge/objc/objc_class.h:47:  The parameter name &quot;propertyName&quot; adds no information, so it should be removed.  [readability/parameter_name] [5]
Source/WebKit/mac/Plugins/Hosted/ProxyInstance.h:69:  The parameter name &quot;exec&quot; adds no information, so it should be removed.  [readability/parameter_name] [5]
Source/WebKit/mac/Plugins/Hosted/ProxyInstance.h:69:  The parameter name &quot;propertyName&quot; adds no information, so it should be removed.  [readability/parameter_name] [5]
Source/JavaScriptCore/runtime/ObjectPrototype.h:54:  The parameter name &quot;propertyName&quot; adds no information, so it should be removed.  [readability/parameter_name] [5]
Source/WebCore/bridge/runtime_array.h:57:  The parameter name &quot;propertyName&quot; adds no information, so it should be removed.  [readability/parameter_name] [5]
Source/WebCore/bridge/runtime_array.h:60:  The parameter name &quot;propertyName&quot; adds no information, so it should be removed.  [readability/parameter_name] [5]
Total errors found: 123 in 151 files


If any of these errors are false positives, please file a bug against check-webkit-style.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>621907</commentid>
    <comment_count>8</comment_count>
      <attachid>141472</attachid>
    <who name="Build Bot">buildbot</who>
    <bug_when>2012-05-11 12:59:38 -0700</bug_when>
    <thetext>Comment on attachment 141472
ooops! - svn add

Attachment 141472 did not pass win-ews (win):
Output: http://queues.webkit.org/results/12663793</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>621909</commentid>
    <comment_count>9</comment_count>
      <attachid>141472</attachid>
    <who name="Early Warning System Bot">webkit-ews</who>
    <bug_when>2012-05-11 13:01:50 -0700</bug_when>
    <thetext>Comment on attachment 141472
ooops! - svn add

Attachment 141472 did not pass qt-wk2-ews (qt):
Output: http://queues.webkit.org/results/12665671</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>621923</commentid>
    <comment_count>10</comment_count>
      <attachid>141472</attachid>
    <who name="Early Warning System Bot">webkit-ews</who>
    <bug_when>2012-05-11 13:21:12 -0700</bug_when>
    <thetext>Comment on attachment 141472
ooops! - svn add

Attachment 141472 did not pass qt-ews (qt):
Output: http://queues.webkit.org/results/12676294</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>621928</commentid>
    <comment_count>11</comment_count>
      <attachid>141484</attachid>
    <who name="Gavin Barraclough">barraclough</who>
    <bug_when>2012-05-11 13:29:35 -0700</bug_when>
    <thetext>Created attachment 141484
With syntax checker fixes</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>621932</commentid>
    <comment_count>12</comment_count>
    <who name="WebKit Review Bot">webkit.review.bot</who>
    <bug_when>2012-05-11 13:32:49 -0700</bug_when>
    <thetext>Attachment 141484 did not pass style-queue:

Failed to run &quot;[&apos;Tools/Scripts/check-webkit-style&apos;, &apos;--diff-files&apos;, u&apos;Source/JavaScriptCore/API/JSCallbackFuncti...&quot; exit_code: 1
Source/WebCore/bridge/objc/objc_runtime.h:137:  _item is incorrectly named. Don&apos;t use underscores in your identifier names.  [readability/naming] [4]
Source/WebCore/bridge/qt/qt_runtime_qt4.cpp:1467:  An else if statement should be written as an if statement when the prior &quot;if&quot; concludes with a return, break, continue or goto statement.  [readability/control_flow] [4]
Source/WebCore/bridge/qt/qt_runtime.cpp:1458:  An else if statement should be written as an if statement when the prior &quot;if&quot; concludes with a return, break, continue or goto statement.  [readability/control_flow] [4]
Source/WebCore/bridge/c/c_instance.h:62:  The parameter name &quot;exec&quot; adds no information, so it should be removed.  [readability/parameter_name] [5]
Source/JavaScriptCore/runtime/Structure.h:141:  The parameter name &quot;globalData&quot; adds no information, so it should be removed.  [readability/parameter_name] [5]
Source/WebCore/bridge/jni/jsc/JavaInstanceJSC.h:56:  The parameter name &quot;exec&quot; adds no information, so it should be removed.  [readability/parameter_name] [5]
Source/WebCore/bridge/qt/qt_instance.h:54:  The parameter name &quot;exec&quot; adds no information, so it should be removed.  [readability/parameter_name] [5]
Source/WebCore/bridge/qt/qt_instance.h:54:  The parameter name &quot;propertyName&quot; adds no information, so it should be removed.  [readability/parameter_name] [5]
Source/WebCore/bridge/objc/objc_instance.h:50:  The parameter name &quot;exec&quot; adds no information, so it should be removed.  [readability/parameter_name] [5]
Source/WebCore/bridge/qt/qt_pixmapruntime.h:35:  The parameter name &quot;exec&quot; adds no information, so it should be removed.  [readability/parameter_name] [5]
Source/WebCore/bridge/jsc/BridgeJSC.h:94:  The parameter name &quot;exec&quot; adds no information, so it should be removed.  [readability/parameter_name] [5]
Source/JavaScriptCore/runtime/JSObject.h:78:  The parameter name &quot;exec&quot; adds no information, so it should be removed.  [readability/parameter_name] [5]
Source/JavaScriptCore/runtime/JSObject.h:78:  The parameter name &quot;entry&quot; adds no information, so it should be removed.  [readability/parameter_name] [5]
Source/JavaScriptCore/runtime/JSObject.h:78:  The parameter name &quot;slot&quot; adds no information, so it should be removed.  [readability/parameter_name] [5]
Source/JavaScriptCore/runtime/JSObject.h:151:  The parameter name &quot;exec&quot; adds no information, so it should be removed.  [readability/parameter_name] [5]
Source/WebCore/bridge/objc/objc_class.h:44:  The parameter name &quot;instance&quot; adds no information, so it should be removed.  [readability/parameter_name] [5]
Source/WebCore/bridge/objc/objc_class.h:45:  The parameter name &quot;instance&quot; adds no information, so it should be removed.  [readability/parameter_name] [5]
Source/WebCore/bridge/objc/objc_class.h:47:  The parameter name &quot;exec&quot; adds no information, so it should be removed.  [readability/parameter_name] [5]
Source/WebCore/bridge/objc/objc_class.h:47:  The parameter name &quot;instance&quot; adds no information, so it should be removed.  [readability/parameter_name] [5]
Total errors found: 19 in 159 files


If any of these errors are false positives, please file a bug against check-webkit-style.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>621942</commentid>
    <comment_count>13</comment_count>
      <attachid>141488</attachid>
    <who name="Gavin Barraclough">barraclough</who>
    <bug_when>2012-05-11 13:45:05 -0700</bug_when>
    <thetext>Created attachment 141488
more stylebot fixes</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>621946</commentid>
    <comment_count>14</comment_count>
    <who name="WebKit Review Bot">webkit.review.bot</who>
    <bug_when>2012-05-11 13:49:49 -0700</bug_when>
    <thetext>Attachment 141488 did not pass style-queue:

Failed to run &quot;[&apos;Tools/Scripts/check-webkit-style&apos;, &apos;--diff-files&apos;, u&apos;Source/JavaScriptCore/API/JSCallbackFuncti...&quot; exit_code: 1
Source/WebCore/bridge/objc/objc_runtime.h:137:  _item is incorrectly named. Don&apos;t use underscores in your identifier names.  [readability/naming] [4]
Source/WebCore/bridge/qt/qt_runtime.cpp:1458:  An else if statement should be written as an if statement when the prior &quot;if&quot; concludes with a return, break, continue or goto statement.  [readability/control_flow] [4]
Source/WebCore/bridge/c/c_instance.h:62:  The parameter name &quot;exec&quot; adds no information, so it should be removed.  [readability/parameter_name] [5]
Total errors found: 3 in 160 files


If any of these errors are false positives, please file a bug against check-webkit-style.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>621958</commentid>
    <comment_count>15</comment_count>
      <attachid>141488</attachid>
    <who name="Build Bot">buildbot</who>
    <bug_when>2012-05-11 14:08:17 -0700</bug_when>
    <thetext>Comment on attachment 141488
more stylebot fixes

Attachment 141488 did not pass win-ews (win):
Output: http://queues.webkit.org/results/12676312</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>621964</commentid>
    <comment_count>16</comment_count>
      <attachid>141494</attachid>
    <who name="Gavin Barraclough">barraclough</who>
    <bug_when>2012-05-11 14:13:10 -0700</bug_when>
    <thetext>Created attachment 141494
more fixes</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>621965</commentid>
    <comment_count>17</comment_count>
      <attachid>141488</attachid>
    <who name="Early Warning System Bot">webkit-ews</who>
    <bug_when>2012-05-11 14:13:26 -0700</bug_when>
    <thetext>Comment on attachment 141488
more stylebot fixes

Attachment 141488 did not pass qt-wk2-ews (qt):
Output: http://queues.webkit.org/results/12663821</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>621971</commentid>
    <comment_count>18</comment_count>
    <who name="WebKit Review Bot">webkit.review.bot</who>
    <bug_when>2012-05-11 14:16:45 -0700</bug_when>
    <thetext>Attachment 141494 did not pass style-queue:

Failed to run &quot;[&apos;Tools/Scripts/check-webkit-style&apos;, &apos;--diff-files&apos;, u&apos;Source/JavaScriptCore/API/JSCallbackFuncti...&quot; exit_code: 1
Source/WebCore/bridge/objc/objc_runtime.h:137:  _item is incorrectly named. Don&apos;t use underscores in your identifier names.  [readability/naming] [4]
Total errors found: 1 in 160 files


If any of these errors are false positives, please file a bug against check-webkit-style.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>621984</commentid>
    <comment_count>19</comment_count>
      <attachid>141499</attachid>
    <who name="Gavin Barraclough">barraclough</who>
    <bug_when>2012-05-11 14:37:25 -0700</bug_when>
    <thetext>Created attachment 141499
and more fixes</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>621987</commentid>
    <comment_count>20</comment_count>
    <who name="WebKit Review Bot">webkit.review.bot</who>
    <bug_when>2012-05-11 14:40:12 -0700</bug_when>
    <thetext>Attachment 141499 did not pass style-queue:

Failed to run &quot;[&apos;Tools/Scripts/check-webkit-style&apos;, &apos;--diff-files&apos;, u&apos;Source/JavaScriptCore/API/JSCallbackFuncti...&quot; exit_code: 1
Source/WebCore/bridge/objc/objc_runtime.h:137:  _item is incorrectly named. Don&apos;t use underscores in your identifier names.  [readability/naming] [4]
Total errors found: 1 in 161 files


If any of these errors are false positives, please file a bug against check-webkit-style.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>622008</commentid>
    <comment_count>21</comment_count>
      <attachid>141505</attachid>
    <who name="Gavin Barraclough">barraclough</who>
    <bug_when>2012-05-11 15:15:08 -0700</bug_when>
    <thetext>Created attachment 141505
and a few more!</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>622016</commentid>
    <comment_count>22</comment_count>
    <who name="WebKit Review Bot">webkit.review.bot</who>
    <bug_when>2012-05-11 15:19:18 -0700</bug_when>
    <thetext>Attachment 141505 did not pass style-queue:

Source/WebCore/bindings/scripts/test/JS/JSTestObj.h:355:  jsTestObjCONDITIONAL_CONST is incorrectly named. Don&apos;t use underscores in your identifier names.  [readability/naming] [4]
Source/WebCore/bindings/scripts/test/JS/JSTestObj.h:357:  jsTestObjCONST_VALUE_0 is incorrectly named. Don&apos;t use underscores in your identifier names.  [readability/naming] [4]
Source/WebCore/bindings/scripts/test/JS/JSTestObj.h:358:  jsTestObjCONST_VALUE_1 is incorrectly named. Don&apos;t use underscores in your identifier names.  [readability/naming] [4]
Source/WebCore/bindings/scripts/test/JS/JSTestObj.h:359:  jsTestObjCONST_VALUE_2 is incorrectly named. Don&apos;t use underscores in your identifier names.  [readability/naming] [4]
Source/WebCore/bindings/scripts/test/JS/JSTestObj.h:360:  jsTestObjCONST_VALUE_4 is incorrectly named. Don&apos;t use underscores in your identifier names.  [readability/naming] [4]
Source/WebCore/bindings/scripts/test/JS/JSTestObj.h:361:  jsTestObjCONST_VALUE_8 is incorrectly named. Don&apos;t use underscores in your identifier names.  [readability/naming] [4]
Source/WebCore/bindings/scripts/test/JS/JSTestObj.h:362:  jsTestObjCONST_VALUE_9 is incorrectly named. Don&apos;t use underscores in your identifier names.  [readability/naming] [4]
Source/WebCore/bindings/scripts/test/JS/JSTestObj.h:363:  jsTestObjCONST_VALUE_10 is incorrectly named. Don&apos;t use underscores in your identifier names.  [readability/naming] [4]
Source/WebCore/bindings/scripts/test/JS/JSTestObj.h:364:  jsTestObjCONST_VALUE_11 is incorrectly named. Don&apos;t use underscores in your identifier names.  [readability/naming] [4]
Source/WebCore/bindings/scripts/test/JS/JSTestObj.h:365:  jsTestObjCONST_VALUE_12 is incorrectly named. Don&apos;t use underscores in your identifier names.  [readability/naming] [4]
Source/WebCore/bindings/scripts/test/JS/JSTestObj.h:366:  jsTestObjCONST_VALUE_13 is incorrectly named. Don&apos;t use underscores in your identifier names.  [readability/naming] [4]
Source/WebCore/bindings/scripts/test/JS/JSTestObj.h:367:  jsTestObjCONST_VALUE_14 is incorrectly named. Don&apos;t use underscores in your identifier names.  [readability/naming] [4]
Source/WebCore/bindings/scripts/test/JS/JSTestObj.h:368:  jsTestObjCONST_JAVASCRIPT is incorrectly named. Don&apos;t use underscores in your identifier names.  [readability/naming] [4]
Source/WebCore/bridge/objc/objc_runtime.h:137:  _item is incorrectly named. Don&apos;t use underscores in your identifier names.  [readability/naming] [4]
Source/WebCore/bindings/scripts/test/JS/JSTestObj.cpp:2661:  jsTestObjCONDITIONAL_CONST is incorrectly named. Don&apos;t use underscores in your identifier names.  [readability/naming] [4]
Source/WebCore/bindings/scripts/test/JS/JSTestObj.cpp:2668:  jsTestObjCONST_VALUE_0 is incorrectly named. Don&apos;t use underscores in your identifier names.  [readability/naming] [4]
Source/WebCore/bindings/scripts/test/JS/JSTestObj.cpp:2674:  jsTestObjCONST_VALUE_1 is incorrectly named. Don&apos;t use underscores in your identifier names.  [readability/naming] [4]
Source/WebCore/bindings/scripts/test/JS/JSTestObj.cpp:2680:  jsTestObjCONST_VALUE_2 is incorrectly named. Don&apos;t use underscores in your identifier names.  [readability/naming] [4]
Source/WebCore/bindings/scripts/test/JS/JSTestObj.cpp:2686:  jsTestObjCONST_VALUE_4 is incorrectly named. Don&apos;t use underscores in your identifier names.  [readability/naming] [4]
Source/WebCore/bindings/scripts/test/JS/JSTestObj.cpp:2692:  jsTestObjCONST_VALUE_8 is incorrectly named. Don&apos;t use underscores in your identifier names.  [readability/naming] [4]
Source/WebCore/bindings/scripts/test/JS/JSTestObj.cpp:2698:  jsTestObjCONST_VALUE_9 is incorrectly named. Don&apos;t use underscores in your identifier names.  [readability/naming] [4]
Source/WebCore/bindings/scripts/test/JS/JSTestObj.cpp:2704:  jsTestObjCONST_VALUE_10 is incorrectly named. Don&apos;t use underscores in your identifier names.  [readability/naming] [4]
Source/WebCore/bindings/scripts/test/JS/JSTestObj.cpp:2709:  jsTestObjCONST_VALUE_11 is incorrectly named. Don&apos;t use underscores in your identifier names.  [readability/naming] [4]
Source/Failed to run &quot;[&apos;Tools/Scripts/check-webkit-style&apos;, &apos;--diff-files&apos;, u&apos;Source/JavaScriptCore/API/JSCallbackFuncti...&quot; exit_code: 1
WebCore/bindings/scripts/test/JS/JSTestObj.cpp:2715:  jsTestObjCONST_VALUE_12 is incorrectly named. Don&apos;t use underscores in your identifier names.  [readability/naming] [4]
Source/WebCore/bindings/scripts/test/JS/JSTestObj.cpp:2721:  jsTestObjCONST_VALUE_13 is incorrectly named. Don&apos;t use underscores in your identifier names.  [readability/naming] [4]
Source/WebCore/bindings/scripts/test/JS/JSTestObj.cpp:2727:  jsTestObjCONST_VALUE_14 is incorrectly named. Don&apos;t use underscores in your identifier names.  [readability/naming] [4]
Source/WebCore/bindings/scripts/test/JS/JSTestObj.cpp:2733:  jsTestObjCONST_JAVASCRIPT is incorrectly named. Don&apos;t use underscores in your identifier names.  [readability/naming] [4]
Total errors found: 27 in 185 files


If any of these errors are false positives, please file a bug against check-webkit-style.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>622147</commentid>
    <comment_count>23</comment_count>
    <who name="Gavin Barraclough">barraclough</who>
    <bug_when>2012-05-11 17:39:01 -0700</bug_when>
    <thetext>Fixed in r116828</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>622307</commentid>
    <comment_count>24</comment_count>
    <who name="Chris Dumez">cdumez</who>
    <bug_when>2012-05-12 03:18:38 -0700</bug_when>
    <thetext>This patch seems to have caused 2 regressions on the EFL bot:
http://build.webkit.org/builders/EFL%20Linux%20Debug/builds/1547

Regressions: Unexpected text diff mismatch : (2)
  fast/dom/CSSStyleDeclaration/empty-string-property.html = TEXT
  fast/dom/collection-null-like-arguments.html = TEXT

Diffs look lie:
- document.all(&quot;&quot;): undefined
- document.all[&quot;&quot;]: undefined
- document.all.item(&quot;&quot;): undefined
+ document.all[&quot;&quot;]: [object HTMLHtmlElement]
+ document.all(&quot;&quot;): [object HTMLHtmlElement]
+ document.all.item(&quot;&quot;): [object HTMLHtmlElement]</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>622308</commentid>
    <comment_count>25</comment_count>
    <who name="Chris Dumez">cdumez</who>
    <bug_when>2012-05-12 03:18:39 -0700</bug_when>
    <thetext>This patch seems to have caused 2 regressions on the EFL bot:
http://build.webkit.org/builders/EFL%20Linux%20Debug/builds/1547

Regressions: Unexpected text diff mismatch : (2)
  fast/dom/CSSStyleDeclaration/empty-string-property.html = TEXT
  fast/dom/collection-null-like-arguments.html = TEXT

Diffs look lie:
- document.all(&quot;&quot;): undefined
- document.all[&quot;&quot;]: undefined
- document.all.item(&quot;&quot;): undefined
+ document.all[&quot;&quot;]: [object HTMLHtmlElement]
+ document.all(&quot;&quot;): [object HTMLHtmlElement]
+ document.all.item(&quot;&quot;): [object HTMLHtmlElement]</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>622311</commentid>
    <comment_count>26</comment_count>
    <who name="Chris Dumez">cdumez</who>
    <bug_when>2012-05-12 03:30:44 -0700</bug_when>
    <thetext>Apparently same regression on GTK port: Bug 86283.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>622329</commentid>
    <comment_count>27</comment_count>
    <who name="Ilya Tikhonovsky">loislo</who>
    <bug_when>2012-05-12 05:42:17 -0700</bug_when>
    <thetext>REGRESSION: almost all inspectors tests are crashing on Mac

http://build.webkit.org/results/Lion%20Debug%20(Tests)/r116850%20(6530)/inspector/debugger/debugger-expand-scope-crash-log.txt</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>622712</commentid>
    <comment_count>28</comment_count>
      <attachid>141654</attachid>
    <who name="Gavin Barraclough">barraclough</who>
    <bug_when>2012-05-13 23:58:10 -0700</bug_when>
    <thetext>Created attachment 141654
Bug fixes for a couple of regressions this patch introduced</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>622715</commentid>
    <comment_count>29</comment_count>
      <attachid>141654</attachid>
    <who name="Darin Adler">darin</who>
    <bug_when>2012-05-14 00:03:12 -0700</bug_when>
    <thetext>Comment on attachment 141654
Bug fixes for a couple of regressions this patch introduced

Code change looks OK. Are these both covered by existing tests?</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>622726</commentid>
    <comment_count>30</comment_count>
    <who name="Gavin Barraclough">barraclough</who>
    <bug_when>2012-05-14 00:25:43 -0700</bug_when>
    <thetext>(In reply to comment #29)
&gt; (From update of attachment 141654 [details])
&gt; Code change looks OK. Are these both covered by existing tests?

Yes - (ooops!) - thanks for the review.
Fixed in r116926.</thetext>
  </long_desc>
      
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>141466</attachid>
            <date>2012-05-11 12:21:44 -0700</date>
            <delta_ts>2012-05-11 12:36:52 -0700</delta_ts>
            <desc>Fix</desc>
            <filename>PropertyName.4.patch</filename>
            <type>text/plain</type>
            <size>386425</size>
            <attacher name="Gavin Barraclough">barraclough</attacher>
            
              <data encoding="base64">SW5kZXg6IFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9DaGFuZ2VMb2cKPT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291
cmNlL0phdmFTY3JpcHRDb3JlL0NoYW5nZUxvZwkocmV2aXNpb24gMTE2NzkyKQorKysgU291cmNl
L0phdmFTY3JpcHRDb3JlL0NoYW5nZUxvZwkod29ya2luZyBjb3B5KQpAQCAtMSwzICsxLDM4OCBA
QAorMjAxMi0wNS0xMSAgR2F2aW4gQmFycmFjbG91Z2ggIDxiYXJyYWNsb3VnaEBhcHBsZS5jb20+
CisKKyAgICAgICAgSW50cm9kdWNlIFByb3BlcnR5TmFtZSBjbGFzcworICAgICAgICBodHRwczov
L2J1Z3Mud2Via2l0Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9ODYyNDEKKworICAgICAgICBSZXZpZXdl
ZCBieSBOT0JPRFkgKE9PUFMhKS4KKworICAgICAgICBSZXBsYWNlICdjb25zdCBJZGVudGlmaWVy
JicgYXJndW1lbnRzIHRvIGZ1bmN0aW9ucyBhY2Nlc3Npbmcgb2JqZWN0IHByb3BlcnRpZXMgd2l0
aCBhIG5ldyAnUHJvcGVydHlOYW1lJyB0eXBlLgorICAgICAgICBUaGlzIGNoYW5nZSBwYXZlcyB0
aGUgd2F5IHRvIGFsbG93IGZvciBwcm9wZXJ0aWVzIGtleWVkIGJ5IHZhbHVlcyB0aGF0IGFyZSBu
b3QgSWRlbnRpZmllcnMuCisKKyAgICAgICAgVGhpcyBjaGFuZ2UgaXMgbGFyZ2VseSBhIG1lY2hh
bmljYWwgZmluZCAmIHJlcGxhY2UuCisgICAgICAgIEl0IGFsc28gY2hhbmdlcyBKU0Z1bmN0aW9u
J3MgY29uc3RydWN0b3IgdG8gdGFrZSBhIFVTdHJpbmcmIGluc3RlYWQgb2YgYW4gSWRlbnRpZmll
ciYKKyAgICAgICAgKHNpbmNlIGluIHNvbWUgY2FzZXMgd2UgY2FuIG5vIGxvbmdlciBndWFyYW50
ZWUgdGhhdCB3ZSdsbGwgaGF2ZSBhbiBJZGVudGlmaWVyKSwgYW5kCisgICAgICAgIHVuaWZpZXMg
SWRlbnRpZmllcidzIG1ldGhvZHMgdG8gb2J0YWluIGFycmF5IGluZGljZXMgb250byBQcm9wZXJ0
eU5hbWUuCisKKyAgICAgICAgVGhlIG5ldyBQcm9wZXJ0eU5hbWUgY2xhc3MgcmV0YWlucyB0aGUg
YWJpbGl0eSB0byBzdXBwb3J0IC5pbXBsKCkgYW5kIC51c3RyaW5nKCksIGJ1dAorICAgICAgICBp
biBhIGZ1dHVyZSBwYXRjaCB3ZSBtYXkgbmVlZCB0byByZXdvcmsgdGhpcywgc2luY2Ugbm90IGFs
bCBQcm9wZXJ0eU5hbWVzIHNob3VsZCBiZQorICAgICAgICBlcXVhbCBiYXNlZCBvbiB0aGVpciBz
dHJpbmcgcmVwcmVzZW50YXRpb24uCisKKyAgICAgICAgKiBBUEkvSlNDYWxsYmFja0Z1bmN0aW9u
LmNwcDoKKyAgICAgICAgKEpTQzo6SlNDYWxsYmFja0Z1bmN0aW9uOjpmaW5pc2hDcmVhdGlvbik6
CisgICAgICAgICogQVBJL0pTQ2FsbGJhY2tGdW5jdGlvbi5oOgorICAgICAgICAoSlNDYWxsYmFj
a0Z1bmN0aW9uKToKKyAgICAgICAgKEpTQzo6SlNDYWxsYmFja0Z1bmN0aW9uOjpjcmVhdGUpOgor
ICAgICAgICAqIEFQSS9KU0NhbGxiYWNrT2JqZWN0Lmg6CisgICAgICAgIChKU0NhbGxiYWNrT2Jq
ZWN0KToKKyAgICAgICAgKiBBUEkvSlNDYWxsYmFja09iamVjdEZ1bmN0aW9ucy5oOgorICAgICAg
ICAoSlNDOjo6OmdldE93blByb3BlcnR5U2xvdCk6CisgICAgICAgIChKU0M6Ojo6Z2V0T3duUHJv
cGVydHlEZXNjcmlwdG9yKToKKyAgICAgICAgKEpTQzo6OjpwdXQpOgorICAgICAgICAoSlNDOjo6
OmRlbGV0ZVByb3BlcnR5KToKKyAgICAgICAgKEpTQzo6OjpnZXRTdGF0aWNWYWx1ZSk6CisgICAg
ICAgIChKU0M6Ojo6c3RhdGljRnVuY3Rpb25HZXR0ZXIpOgorICAgICAgICAoSlNDOjo6OmNhbGxi
YWNrR2V0dGVyKToKKyAgICAgICAgKiBBUEkvSlNPYmplY3RSZWYuY3BwOgorICAgICAgICAoSlNP
YmplY3RNYWtlRnVuY3Rpb25XaXRoQ2FsbGJhY2spOgorICAgICAgICAqIEpTQ1R5cGVkQXJyYXlT
dHVicy5oOgorICAgICAgICAoSlNDKToKKyAgICAgICAgKiBKYXZhU2NyaXB0Q29yZS54Y29kZXBy
b2ovcHJvamVjdC5wYnhwcm9qOgorICAgICAgICAqIGRlYnVnZ2VyL0RlYnVnZ2VyQWN0aXZhdGlv
bi5jcHA6CisgICAgICAgIChKU0M6OkRlYnVnZ2VyQWN0aXZhdGlvbjo6Z2V0T3duUHJvcGVydHlT
bG90KToKKyAgICAgICAgKEpTQzo6RGVidWdnZXJBY3RpdmF0aW9uOjpwdXQpOgorICAgICAgICAo
SlNDOjpEZWJ1Z2dlckFjdGl2YXRpb246OnB1dERpcmVjdFZpcnR1YWwpOgorICAgICAgICAoSlND
OjpEZWJ1Z2dlckFjdGl2YXRpb246OmRlbGV0ZVByb3BlcnR5KToKKyAgICAgICAgKEpTQzo6RGVi
dWdnZXJBY3RpdmF0aW9uOjpnZXRPd25Qcm9wZXJ0eURlc2NyaXB0b3IpOgorICAgICAgICAoSlND
OjpEZWJ1Z2dlckFjdGl2YXRpb246OmRlZmluZU93blByb3BlcnR5KToKKyAgICAgICAgKiBkZWJ1
Z2dlci9EZWJ1Z2dlckFjdGl2YXRpb24uaDoKKyAgICAgICAgKERlYnVnZ2VyQWN0aXZhdGlvbik6
CisgICAgICAgICoganNjLmNwcDoKKyAgICAgICAgKEdsb2JhbE9iamVjdDo6YWRkRnVuY3Rpb24p
OgorICAgICAgICAoR2xvYmFsT2JqZWN0OjphZGRDb25zdHJ1Y3RhYmxlRnVuY3Rpb24pOgorICAg
ICAgICAqIHJ1bnRpbWUvQXJndW1lbnRzLmNwcDoKKyAgICAgICAgKEpTQzo6QXJndW1lbnRzOjpn
ZXRPd25Qcm9wZXJ0eVNsb3QpOgorICAgICAgICAoSlNDOjpBcmd1bWVudHM6OmdldE93blByb3Bl
cnR5RGVzY3JpcHRvcik6CisgICAgICAgIChKU0M6OkFyZ3VtZW50czo6cHV0KToKKyAgICAgICAg
KEpTQzo6QXJndW1lbnRzOjpkZWxldGVQcm9wZXJ0eSk6CisgICAgICAgIChKU0M6OkFyZ3VtZW50
czo6ZGVmaW5lT3duUHJvcGVydHkpOgorICAgICAgICAqIHJ1bnRpbWUvQXJndW1lbnRzLmg6Cisg
ICAgICAgIChBcmd1bWVudHMpOgorICAgICAgICAqIHJ1bnRpbWUvQXJyYXlDb25zdHJ1Y3Rvci5j
cHA6CisgICAgICAgIChKU0M6OkFycmF5Q29uc3RydWN0b3I6OmZpbmlzaENyZWF0aW9uKToKKyAg
ICAgICAgKEpTQzo6QXJyYXlDb25zdHJ1Y3Rvcjo6Z2V0T3duUHJvcGVydHlTbG90KToKKyAgICAg
ICAgKEpTQzo6QXJyYXlDb25zdHJ1Y3Rvcjo6Z2V0T3duUHJvcGVydHlEZXNjcmlwdG9yKToKKyAg
ICAgICAgKiBydW50aW1lL0FycmF5Q29uc3RydWN0b3IuaDoKKyAgICAgICAgKEFycmF5Q29uc3Ry
dWN0b3IpOgorICAgICAgICAqIHJ1bnRpbWUvQXJyYXlQcm90b3R5cGUuY3BwOgorICAgICAgICAo
SlNDOjpBcnJheVByb3RvdHlwZTo6Z2V0T3duUHJvcGVydHlTbG90KToKKyAgICAgICAgKEpTQzo6
QXJyYXlQcm90b3R5cGU6OmdldE93blByb3BlcnR5RGVzY3JpcHRvcik6CisgICAgICAgIChKU0M6
OnB1dFByb3BlcnR5KToKKyAgICAgICAgKiBydW50aW1lL0FycmF5UHJvdG90eXBlLmg6CisgICAg
ICAgIChBcnJheVByb3RvdHlwZSk6CisgICAgICAgICogcnVudGltZS9Cb29sZWFuQ29uc3RydWN0
b3IuY3BwOgorICAgICAgICAoSlNDOjpCb29sZWFuQ29uc3RydWN0b3I6OmZpbmlzaENyZWF0aW9u
KToKKyAgICAgICAgKiBydW50aW1lL0Jvb2xlYW5Qcm90b3R5cGUuY3BwOgorICAgICAgICAoSlND
OjpCb29sZWFuUHJvdG90eXBlOjpnZXRPd25Qcm9wZXJ0eVNsb3QpOgorICAgICAgICAoSlNDOjpC
b29sZWFuUHJvdG90eXBlOjpnZXRPd25Qcm9wZXJ0eURlc2NyaXB0b3IpOgorICAgICAgICAqIHJ1
bnRpbWUvQm9vbGVhblByb3RvdHlwZS5oOgorICAgICAgICAoQm9vbGVhblByb3RvdHlwZSk6Cisg
ICAgICAgICogcnVudGltZS9DbGFzc0luZm8uaDoKKyAgICAgICAgKE1ldGhvZFRhYmxlKToKKyAg
ICAgICAgKiBydW50aW1lL0RhdGVDb25zdHJ1Y3Rvci5jcHA6CisgICAgICAgIChKU0M6OkRhdGVD
b25zdHJ1Y3Rvcjo6ZmluaXNoQ3JlYXRpb24pOgorICAgICAgICAoSlNDOjpEYXRlQ29uc3RydWN0
b3I6OmdldE93blByb3BlcnR5U2xvdCk6CisgICAgICAgIChKU0M6OkRhdGVDb25zdHJ1Y3Rvcjo6
Z2V0T3duUHJvcGVydHlEZXNjcmlwdG9yKToKKyAgICAgICAgKiBydW50aW1lL0RhdGVDb25zdHJ1
Y3Rvci5oOgorICAgICAgICAoRGF0ZUNvbnN0cnVjdG9yKToKKyAgICAgICAgKiBydW50aW1lL0Rh
dGVQcm90b3R5cGUuY3BwOgorICAgICAgICAoSlNDOjpEYXRlUHJvdG90eXBlOjpnZXRPd25Qcm9w
ZXJ0eVNsb3QpOgorICAgICAgICAoSlNDOjpEYXRlUHJvdG90eXBlOjpnZXRPd25Qcm9wZXJ0eURl
c2NyaXB0b3IpOgorICAgICAgICAqIHJ1bnRpbWUvRGF0ZVByb3RvdHlwZS5oOgorICAgICAgICAo
RGF0ZVByb3RvdHlwZSk6CisgICAgICAgICogcnVudGltZS9FcnJvci5oOgorICAgICAgICAoSlND
OjpTdHJpY3RNb2RlVHlwZUVycm9yRnVuY3Rpb246OmNyZWF0ZSk6CisgICAgICAgICogcnVudGlt
ZS9FcnJvckNvbnN0cnVjdG9yLmNwcDoKKyAgICAgICAgKEpTQzo6RXJyb3JDb25zdHJ1Y3Rvcjo6
ZmluaXNoQ3JlYXRpb24pOgorICAgICAgICAqIHJ1bnRpbWUvRXJyb3JQcm90b3R5cGUuY3BwOgor
ICAgICAgICAoSlNDOjpFcnJvclByb3RvdHlwZTo6Z2V0T3duUHJvcGVydHlTbG90KToKKyAgICAg
ICAgKEpTQzo6RXJyb3JQcm90b3R5cGU6OmdldE93blByb3BlcnR5RGVzY3JpcHRvcik6CisgICAg
ICAgICogcnVudGltZS9FcnJvclByb3RvdHlwZS5oOgorICAgICAgICAoRXJyb3JQcm90b3R5cGUp
OgorICAgICAgICAqIHJ1bnRpbWUvRnVuY3Rpb25Db25zdHJ1Y3Rvci5jcHA6CisgICAgICAgIChK
U0M6OkZ1bmN0aW9uQ29uc3RydWN0b3I6OmZpbmlzaENyZWF0aW9uKToKKyAgICAgICAgKiBydW50
aW1lL0Z1bmN0aW9uUHJvdG90eXBlLmNwcDoKKyAgICAgICAgKEpTQzo6RnVuY3Rpb25Qcm90b3R5
cGU6OmZpbmlzaENyZWF0aW9uKToKKyAgICAgICAgKEpTQzo6RnVuY3Rpb25Qcm90b3R5cGU6OmFk
ZEZ1bmN0aW9uUHJvcGVydGllcyk6CisgICAgICAgIChKU0M6OmZ1bmN0aW9uUHJvdG9GdW5jQmlu
ZCk6CisgICAgICAgICogcnVudGltZS9GdW5jdGlvblByb3RvdHlwZS5oOgorICAgICAgICAoSlND
OjpGdW5jdGlvblByb3RvdHlwZTo6Y3JlYXRlKToKKyAgICAgICAgKEZ1bmN0aW9uUHJvdG90eXBl
KToKKyAgICAgICAgKiBydW50aW1lL0lkZW50aWZpZXIuY3BwOgorICAgICAgICAoSlNDKToKKyAg
ICAgICAgKiBydW50aW1lL0lkZW50aWZpZXIuaDoKKyAgICAgICAgKElkZW50aWZpZXIpOgorICAg
ICAgICAqIHJ1bnRpbWUvSW50ZXJuYWxGdW5jdGlvbi5jcHA6CisgICAgICAgIChKU0M6OkludGVy
bmFsRnVuY3Rpb246OmZpbmlzaENyZWF0aW9uKToKKyAgICAgICAgKiBydW50aW1lL0ludGVybmFs
RnVuY3Rpb24uaDoKKyAgICAgICAgKEludGVybmFsRnVuY3Rpb24pOgorICAgICAgICAqIHJ1bnRp
bWUvSlNBY3RpdmF0aW9uLmNwcDoKKyAgICAgICAgKEpTQzo6SlNBY3RpdmF0aW9uOjpzeW1ib2xU
YWJsZUdldCk6CisgICAgICAgIChKU0M6OkpTQWN0aXZhdGlvbjo6c3ltYm9sVGFibGVQdXQpOgor
ICAgICAgICAoSlNDOjpKU0FjdGl2YXRpb246OnN5bWJvbFRhYmxlUHV0V2l0aEF0dHJpYnV0ZXMp
OgorICAgICAgICAoSlNDOjpKU0FjdGl2YXRpb246OmdldE93blByb3BlcnR5U2xvdCk6CisgICAg
ICAgIChKU0M6OkpTQWN0aXZhdGlvbjo6cHV0KToKKyAgICAgICAgKEpTQzo6SlNBY3RpdmF0aW9u
OjpwdXREaXJlY3RWaXJ0dWFsKToKKyAgICAgICAgKEpTQzo6SlNBY3RpdmF0aW9uOjpkZWxldGVQ
cm9wZXJ0eSk6CisgICAgICAgIChKU0M6OkpTQWN0aXZhdGlvbjo6YXJndW1lbnRzR2V0dGVyKToK
KyAgICAgICAgKiBydW50aW1lL0pTQWN0aXZhdGlvbi5oOgorICAgICAgICAoSlNBY3RpdmF0aW9u
KToKKyAgICAgICAgKiBydW50aW1lL0pTQXJyYXkuY3BwOgorICAgICAgICAoSlNDOjpKU0FycmF5
OjpkZWZpbmVPd25Qcm9wZXJ0eSk6CisgICAgICAgIChKU0M6OkpTQXJyYXk6OmdldE93blByb3Bl
cnR5U2xvdCk6CisgICAgICAgIChKU0M6OkpTQXJyYXk6OmdldE93blByb3BlcnR5RGVzY3JpcHRv
cik6CisgICAgICAgIChKU0M6OkpTQXJyYXk6OnB1dCk6CisgICAgICAgIChKU0M6OkpTQXJyYXk6
OmRlbGV0ZVByb3BlcnR5KToKKyAgICAgICAgKiBydW50aW1lL0pTQXJyYXkuaDoKKyAgICAgICAg
KEpTQXJyYXkpOgorICAgICAgICAoSlNDKToKKyAgICAgICAgKiBydW50aW1lL0pTQm91bmRGdW5j
dGlvbi5jcHA6CisgICAgICAgIChKU0M6OkpTQm91bmRGdW5jdGlvbjo6Y3JlYXRlKToKKyAgICAg
ICAgKEpTQzo6SlNCb3VuZEZ1bmN0aW9uOjpmaW5pc2hDcmVhdGlvbik6CisgICAgICAgICogcnVu
dGltZS9KU0JvdW5kRnVuY3Rpb24uaDoKKyAgICAgICAgKEpTQm91bmRGdW5jdGlvbik6CisgICAg
ICAgICogcnVudGltZS9KU0NlbGwuY3BwOgorICAgICAgICAoSlNDOjpKU0NlbGw6OmdldE93blBy
b3BlcnR5U2xvdCk6CisgICAgICAgIChKU0M6OkpTQ2VsbDo6cHV0KToKKyAgICAgICAgKEpTQzo6
SlNDZWxsOjpkZWxldGVQcm9wZXJ0eSk6CisgICAgICAgIChKU0M6OkpTQ2VsbDo6cHV0RGlyZWN0
VmlydHVhbCk6CisgICAgICAgIChKU0M6OkpTQ2VsbDo6ZGVmaW5lT3duUHJvcGVydHkpOgorICAg
ICAgICAoSlNDOjpKU0NlbGw6OmdldE93blByb3BlcnR5RGVzY3JpcHRvcik6CisgICAgICAgICog
cnVudGltZS9KU0NlbGwuaDoKKyAgICAgICAgKEpTQ2VsbCk6CisgICAgICAgICogcnVudGltZS9K
U0Z1bmN0aW9uLmNwcDoKKyAgICAgICAgKEpTQzo6SlNGdW5jdGlvbjo6Y3JlYXRlKToKKyAgICAg
ICAgKEpTQzo6SlNGdW5jdGlvbjo6ZmluaXNoQ3JlYXRpb24pOgorICAgICAgICAoSlNDOjpKU0Z1
bmN0aW9uOjphcmd1bWVudHNHZXR0ZXIpOgorICAgICAgICAoSlNDOjpKU0Z1bmN0aW9uOjpjYWxs
ZXJHZXR0ZXIpOgorICAgICAgICAoSlNDOjpKU0Z1bmN0aW9uOjpsZW5ndGhHZXR0ZXIpOgorICAg
ICAgICAoSlNDOjpKU0Z1bmN0aW9uOjpnZXRPd25Qcm9wZXJ0eVNsb3QpOgorICAgICAgICAoSlND
OjpKU0Z1bmN0aW9uOjpnZXRPd25Qcm9wZXJ0eURlc2NyaXB0b3IpOgorICAgICAgICAoSlNDOjpK
U0Z1bmN0aW9uOjpwdXQpOgorICAgICAgICAoSlNDOjpKU0Z1bmN0aW9uOjpkZWxldGVQcm9wZXJ0
eSk6CisgICAgICAgIChKU0M6OkpTRnVuY3Rpb246OmRlZmluZU93blByb3BlcnR5KToKKyAgICAg
ICAgKEpTQzo6Z2V0Q2FsY3VsYXRlZERpc3BsYXlOYW1lKToKKyAgICAgICAgKiBydW50aW1lL0pT
RnVuY3Rpb24uaDoKKyAgICAgICAgKEpTRnVuY3Rpb24pOgorICAgICAgICAqIHJ1bnRpbWUvSlNH
bG9iYWxPYmplY3QuY3BwOgorICAgICAgICAoSlNDOjpKU0dsb2JhbE9iamVjdDo6cHV0KToKKyAg
ICAgICAgKEpTQzo6SlNHbG9iYWxPYmplY3Q6OnB1dERpcmVjdFZpcnR1YWwpOgorICAgICAgICAo
SlNDOjpKU0dsb2JhbE9iamVjdDo6ZGVmaW5lT3duUHJvcGVydHkpOgorICAgICAgICAoSlNDOjpK
U0dsb2JhbE9iamVjdDo6cmVzZXQpOgorICAgICAgICAoSlNDOjpKU0dsb2JhbE9iamVjdDo6Y3Jl
YXRlVGhyb3dUeXBlRXJyb3IpOgorICAgICAgICAoSlNDOjpKU0dsb2JhbE9iamVjdDo6Z2V0T3du
UHJvcGVydHlTbG90KToKKyAgICAgICAgKEpTQzo6SlNHbG9iYWxPYmplY3Q6OmdldE93blByb3Bl
cnR5RGVzY3JpcHRvcik6CisgICAgICAgICogcnVudGltZS9KU0dsb2JhbE9iamVjdC5oOgorICAg
ICAgICAoSlNHbG9iYWxPYmplY3QpOgorICAgICAgICAoSlNDOjpKU0dsb2JhbE9iamVjdDo6aGFz
T3duUHJvcGVydHlGb3JXcml0ZSk6CisgICAgICAgIChKU0M6OkpTR2xvYmFsT2JqZWN0OjpzeW1i
b2xUYWJsZUhhc1Byb3BlcnR5KToKKyAgICAgICAgKiBydW50aW1lL0pTTm90QW5PYmplY3QuY3Bw
OgorICAgICAgICAoSlNDOjpKU05vdEFuT2JqZWN0OjpnZXRPd25Qcm9wZXJ0eVNsb3QpOgorICAg
ICAgICAoSlNDOjpKU05vdEFuT2JqZWN0OjpnZXRPd25Qcm9wZXJ0eURlc2NyaXB0b3IpOgorICAg
ICAgICAoSlNDOjpKU05vdEFuT2JqZWN0OjpwdXQpOgorICAgICAgICAoSlNDOjpKU05vdEFuT2Jq
ZWN0OjpkZWxldGVQcm9wZXJ0eSk6CisgICAgICAgICogcnVudGltZS9KU05vdEFuT2JqZWN0Lmg6
CisgICAgICAgIChKU05vdEFuT2JqZWN0KToKKyAgICAgICAgKiBydW50aW1lL0pTT05PYmplY3Qu
Y3BwOgorICAgICAgICAoSlNDOjpKU09OT2JqZWN0OjpnZXRPd25Qcm9wZXJ0eVNsb3QpOgorICAg
ICAgICAoSlNDOjpKU09OT2JqZWN0OjpnZXRPd25Qcm9wZXJ0eURlc2NyaXB0b3IpOgorICAgICAg
ICAqIHJ1bnRpbWUvSlNPTk9iamVjdC5oOgorICAgICAgICAoSlNPTk9iamVjdCk6CisgICAgICAg
ICogcnVudGltZS9KU09iamVjdC5jcHA6CisgICAgICAgIChKU0M6OkpTT2JqZWN0OjpwdXQpOgor
ICAgICAgICAoSlNDOjpKU09iamVjdDo6cHV0RGlyZWN0VmlydHVhbCk6CisgICAgICAgIChKU0M6
OkpTT2JqZWN0OjpwdXREaXJlY3RBY2Nlc3Nvcik6CisgICAgICAgIChKU0M6OkpTT2JqZWN0Ojpo
YXNQcm9wZXJ0eSk6CisgICAgICAgIChKU0M6OkpTT2JqZWN0OjpkZWxldGVQcm9wZXJ0eSk6Cisg
ICAgICAgIChKU0M6OkpTT2JqZWN0OjpoYXNPd25Qcm9wZXJ0eSk6CisgICAgICAgIChKU0M6OmNh
bGxEZWZhdWx0VmFsdWVGdW5jdGlvbik6CisgICAgICAgIChKU0M6OkpTT2JqZWN0OjpmaW5kUHJv
cGVydHlIYXNoRW50cnkpOgorICAgICAgICAoSlNDOjpKU09iamVjdDo6Z2V0UHJvcGVydHlTcGVj
aWZpY1ZhbHVlKToKKyAgICAgICAgKEpTQzo6SlNPYmplY3Q6OnJlbW92ZURpcmVjdCk6CisgICAg
ICAgIChKU0M6OkpTT2JqZWN0OjpnZXRPd25Qcm9wZXJ0eURlc2NyaXB0b3IpOgorICAgICAgICAo
SlNDOjpKU09iamVjdDo6Z2V0UHJvcGVydHlEZXNjcmlwdG9yKToKKyAgICAgICAgKEpTQzo6cHV0
RGVzY3JpcHRvcik6CisgICAgICAgIChKU0M6OkpTT2JqZWN0OjpkZWZpbmVPd25Qcm9wZXJ0eSk6
CisgICAgICAgICogcnVudGltZS9KU09iamVjdC5oOgorICAgICAgICAoSlNPYmplY3QpOgorICAg
ICAgICAoSlNDOjpKU09iamVjdDo6Z2V0RGlyZWN0KToKKyAgICAgICAgKEpTQzo6SlNPYmplY3Q6
OmdldERpcmVjdExvY2F0aW9uKToKKyAgICAgICAgKEpTQzo6SlNPYmplY3Q6OmlubGluZUdldE93
blByb3BlcnR5U2xvdCk6CisgICAgICAgIChKU0M6OkpTT2JqZWN0OjpnZXRPd25Qcm9wZXJ0eVNs
b3QpOgorICAgICAgICAoSlNDOjpKU0NlbGw6OmZhc3RHZXRPd25Qcm9wZXJ0eVNsb3QpOgorICAg
ICAgICAoSlNDOjpKU09iamVjdDo6Z2V0UHJvcGVydHlTbG90KToKKyAgICAgICAgKEpTQzo6SlNP
YmplY3Q6OmdldCk6CisgICAgICAgIChKU0M6OkpTT2JqZWN0OjpwdXREaXJlY3RJbnRlcm5hbCk6
CisgICAgICAgIChKU0M6OkpTT2JqZWN0OjpwdXRPd25EYXRhUHJvcGVydHkpOgorICAgICAgICAo
SlNDOjpKU09iamVjdDo6cHV0RGlyZWN0KToKKyAgICAgICAgKEpTQzo6SlNPYmplY3Q6OnB1dERp
cmVjdFdpdGhvdXRUcmFuc2l0aW9uKToKKyAgICAgICAgKEpTQzo6SlNWYWx1ZTo6Z2V0KToKKyAg
ICAgICAgKEpTQzo6SlNWYWx1ZTo6cHV0KToKKyAgICAgICAgKiBydW50aW1lL0pTU3RhdGljU2Nv
cGVPYmplY3QuY3BwOgorICAgICAgICAoSlNDOjpKU1N0YXRpY1Njb3BlT2JqZWN0OjpwdXQpOgor
ICAgICAgICAoSlNDOjpKU1N0YXRpY1Njb3BlT2JqZWN0OjpwdXREaXJlY3RWaXJ0dWFsKToKKyAg
ICAgICAgKEpTQzo6SlNTdGF0aWNTY29wZU9iamVjdDo6Z2V0T3duUHJvcGVydHlTbG90KToKKyAg
ICAgICAgKiBydW50aW1lL0pTU3RhdGljU2NvcGVPYmplY3QuaDoKKyAgICAgICAgKEpTU3RhdGlj
U2NvcGVPYmplY3QpOgorICAgICAgICAqIHJ1bnRpbWUvSlNTdHJpbmcuY3BwOgorICAgICAgICAo
SlNDOjpKU1N0cmluZzo6Z2V0T3duUHJvcGVydHlTbG90KToKKyAgICAgICAgKEpTQzo6SlNTdHJp
bmc6OmdldFN0cmluZ1Byb3BlcnR5RGVzY3JpcHRvcik6CisgICAgICAgICogcnVudGltZS9KU1N0
cmluZy5oOgorICAgICAgICAoSlNTdHJpbmcpOgorICAgICAgICAoSlNDOjpKU1N0cmluZzo6Z2V0
U3RyaW5nUHJvcGVydHlTbG90KToKKyAgICAgICAgKiBydW50aW1lL0pTVmFsdWUuY3BwOgorICAg
ICAgICAoSlNDOjpKU1ZhbHVlOjpwdXRUb1ByaW1pdGl2ZSk6CisgICAgICAgICogcnVudGltZS9K
U1ZhbHVlLmg6CisgICAgICAgIChKU0MpOgorICAgICAgICAoSlNWYWx1ZSk6CisgICAgICAgICog
cnVudGltZS9KU1ZhcmlhYmxlT2JqZWN0LmNwcDoKKyAgICAgICAgKEpTQzo6SlNWYXJpYWJsZU9i
amVjdDo6ZGVsZXRlUHJvcGVydHkpOgorICAgICAgICAoSlNDOjpKU1ZhcmlhYmxlT2JqZWN0Ojpz
eW1ib2xUYWJsZUdldCk6CisgICAgICAgIChKU0M6OkpTVmFyaWFibGVPYmplY3Q6OnB1dERpcmVj
dFZpcnR1YWwpOgorICAgICAgICAqIHJ1bnRpbWUvSlNWYXJpYWJsZU9iamVjdC5oOgorICAgICAg
ICAoSlNWYXJpYWJsZU9iamVjdCk6CisgICAgICAgIChKU0M6OkpTVmFyaWFibGVPYmplY3Q6OnN5
bWJvbFRhYmxlR2V0KToKKyAgICAgICAgKEpTQzo6SlNWYXJpYWJsZU9iamVjdDo6c3ltYm9sVGFi
bGVQdXQpOgorICAgICAgICAoSlNDOjpKU1ZhcmlhYmxlT2JqZWN0OjpzeW1ib2xUYWJsZVB1dFdp
dGhBdHRyaWJ1dGVzKToKKyAgICAgICAgKiBydW50aW1lL0xvb2t1cC5jcHA6CisgICAgICAgIChK
U0M6OnNldFVwU3RhdGljRnVuY3Rpb25TbG90KToKKyAgICAgICAgKiBydW50aW1lL0xvb2t1cC5o
OgorICAgICAgICAoSlNDOjpIYXNoVGFibGU6OmVudHJ5KToKKyAgICAgICAgKEpTQyk6CisgICAg
ICAgIChKU0M6OmdldFN0YXRpY1Byb3BlcnR5U2xvdCk6CisgICAgICAgIChKU0M6OmdldFN0YXRp
Y1Byb3BlcnR5RGVzY3JpcHRvcik6CisgICAgICAgIChKU0M6OmdldFN0YXRpY0Z1bmN0aW9uU2xv
dCk6CisgICAgICAgIChKU0M6OmdldFN0YXRpY0Z1bmN0aW9uRGVzY3JpcHRvcik6CisgICAgICAg
IChKU0M6OmdldFN0YXRpY1ZhbHVlU2xvdCk6CisgICAgICAgIChKU0M6OmdldFN0YXRpY1ZhbHVl
RGVzY3JpcHRvcik6CisgICAgICAgIChKU0M6Omxvb2t1cFB1dCk6CisgICAgICAgICogcnVudGlt
ZS9NYXRoT2JqZWN0LmNwcDoKKyAgICAgICAgKEpTQzo6TWF0aE9iamVjdDo6Z2V0T3duUHJvcGVy
dHlTbG90KToKKyAgICAgICAgKEpTQzo6TWF0aE9iamVjdDo6Z2V0T3duUHJvcGVydHlEZXNjcmlw
dG9yKToKKyAgICAgICAgKiBydW50aW1lL01hdGhPYmplY3QuaDoKKyAgICAgICAgKE1hdGhPYmpl
Y3QpOgorICAgICAgICAqIHJ1bnRpbWUvTmF0aXZlRXJyb3JDb25zdHJ1Y3Rvci5oOgorICAgICAg
ICAoSlNDOjpOYXRpdmVFcnJvckNvbnN0cnVjdG9yOjpmaW5pc2hDcmVhdGlvbik6CisgICAgICAg
ICogcnVudGltZS9OdW1iZXJDb25zdHJ1Y3Rvci5jcHA6CisgICAgICAgIChKU0MpOgorICAgICAg
ICAoSlNDOjpOdW1iZXJDb25zdHJ1Y3Rvcjo6ZmluaXNoQ3JlYXRpb24pOgorICAgICAgICAoSlND
OjpOdW1iZXJDb25zdHJ1Y3Rvcjo6Z2V0T3duUHJvcGVydHlTbG90KToKKyAgICAgICAgKEpTQzo6
TnVtYmVyQ29uc3RydWN0b3I6OmdldE93blByb3BlcnR5RGVzY3JpcHRvcik6CisgICAgICAgIChK
U0M6Ok51bWJlckNvbnN0cnVjdG9yOjpwdXQpOgorICAgICAgICAoSlNDOjpudW1iZXJDb25zdHJ1
Y3Rvck5hTlZhbHVlKToKKyAgICAgICAgKEpTQzo6bnVtYmVyQ29uc3RydWN0b3JOZWdJbmZpbml0
eSk6CisgICAgICAgIChKU0M6Om51bWJlckNvbnN0cnVjdG9yUG9zSW5maW5pdHkpOgorICAgICAg
ICAoSlNDOjpudW1iZXJDb25zdHJ1Y3Rvck1heFZhbHVlKToKKyAgICAgICAgKEpTQzo6bnVtYmVy
Q29uc3RydWN0b3JNaW5WYWx1ZSk6CisgICAgICAgICogcnVudGltZS9OdW1iZXJDb25zdHJ1Y3Rv
ci5oOgorICAgICAgICAoTnVtYmVyQ29uc3RydWN0b3IpOgorICAgICAgICAqIHJ1bnRpbWUvTnVt
YmVyUHJvdG90eXBlLmNwcDoKKyAgICAgICAgKEpTQzo6TnVtYmVyUHJvdG90eXBlOjpnZXRPd25Q
cm9wZXJ0eVNsb3QpOgorICAgICAgICAoSlNDOjpOdW1iZXJQcm90b3R5cGU6OmdldE93blByb3Bl
cnR5RGVzY3JpcHRvcik6CisgICAgICAgICogcnVudGltZS9OdW1iZXJQcm90b3R5cGUuaDoKKyAg
ICAgICAgKE51bWJlclByb3RvdHlwZSk6CisgICAgICAgICogcnVudGltZS9PYmplY3RDb25zdHJ1
Y3Rvci5jcHA6CisgICAgICAgIChKU0M6Ok9iamVjdENvbnN0cnVjdG9yOjpmaW5pc2hDcmVhdGlv
bik6CisgICAgICAgIChKU0M6Ok9iamVjdENvbnN0cnVjdG9yOjpnZXRPd25Qcm9wZXJ0eVNsb3Qp
OgorICAgICAgICAoSlNDOjpPYmplY3RDb25zdHJ1Y3Rvcjo6Z2V0T3duUHJvcGVydHlEZXNjcmlw
dG9yKToKKyAgICAgICAgKiBydW50aW1lL09iamVjdENvbnN0cnVjdG9yLmg6CisgICAgICAgIChP
YmplY3RDb25zdHJ1Y3Rvcik6CisgICAgICAgICogcnVudGltZS9PYmplY3RQcm90b3R5cGUuY3Bw
OgorICAgICAgICAoSlNDOjpPYmplY3RQcm90b3R5cGU6OnB1dCk6CisgICAgICAgIChKU0M6Ok9i
amVjdFByb3RvdHlwZTo6ZGVmaW5lT3duUHJvcGVydHkpOgorICAgICAgICAoSlNDOjpPYmplY3RQ
cm90b3R5cGU6OmdldE93blByb3BlcnR5U2xvdCk6CisgICAgICAgIChKU0M6Ok9iamVjdFByb3Rv
dHlwZTo6Z2V0T3duUHJvcGVydHlEZXNjcmlwdG9yKToKKyAgICAgICAgKiBydW50aW1lL09iamVj
dFByb3RvdHlwZS5oOgorICAgICAgICAoT2JqZWN0UHJvdG90eXBlKToKKyAgICAgICAgKiBydW50
aW1lL1Byb3BlcnR5U2xvdC5oOgorICAgICAgICAoUHJvcGVydHlTbG90KToKKyAgICAgICAgKEpT
Qzo6UHJvcGVydHlTbG90OjpnZXRWYWx1ZSk6CisgICAgICAgICogcnVudGltZS9SZWdFeHBDb25z
dHJ1Y3Rvci5jcHA6CisgICAgICAgIChKU0MpOgorICAgICAgICAoSlNDOjpSZWdFeHBDb25zdHJ1
Y3Rvcjo6ZmluaXNoQ3JlYXRpb24pOgorICAgICAgICAoSlNDOjpSZWdFeHBDb25zdHJ1Y3Rvcjo6
Z2V0T3duUHJvcGVydHlTbG90KToKKyAgICAgICAgKEpTQzo6UmVnRXhwQ29uc3RydWN0b3I6Omdl
dE93blByb3BlcnR5RGVzY3JpcHRvcik6CisgICAgICAgIChKU0M6OnJlZ0V4cENvbnN0cnVjdG9y
RG9sbGFyMSk6CisgICAgICAgIChKU0M6OnJlZ0V4cENvbnN0cnVjdG9yRG9sbGFyMik6CisgICAg
ICAgIChKU0M6OnJlZ0V4cENvbnN0cnVjdG9yRG9sbGFyMyk6CisgICAgICAgIChKU0M6OnJlZ0V4
cENvbnN0cnVjdG9yRG9sbGFyNCk6CisgICAgICAgIChKU0M6OnJlZ0V4cENvbnN0cnVjdG9yRG9s
bGFyNSk6CisgICAgICAgIChKU0M6OnJlZ0V4cENvbnN0cnVjdG9yRG9sbGFyNik6CisgICAgICAg
IChKU0M6OnJlZ0V4cENvbnN0cnVjdG9yRG9sbGFyNyk6CisgICAgICAgIChKU0M6OnJlZ0V4cENv
bnN0cnVjdG9yRG9sbGFyOCk6CisgICAgICAgIChKU0M6OnJlZ0V4cENvbnN0cnVjdG9yRG9sbGFy
OSk6CisgICAgICAgIChKU0M6OnJlZ0V4cENvbnN0cnVjdG9ySW5wdXQpOgorICAgICAgICAoSlND
OjpyZWdFeHBDb25zdHJ1Y3Rvck11bHRpbGluZSk6CisgICAgICAgIChKU0M6OnJlZ0V4cENvbnN0
cnVjdG9yTGFzdE1hdGNoKToKKyAgICAgICAgKEpTQzo6cmVnRXhwQ29uc3RydWN0b3JMYXN0UGFy
ZW4pOgorICAgICAgICAoSlNDOjpyZWdFeHBDb25zdHJ1Y3RvckxlZnRDb250ZXh0KToKKyAgICAg
ICAgKEpTQzo6cmVnRXhwQ29uc3RydWN0b3JSaWdodENvbnRleHQpOgorICAgICAgICAoSlNDOjpS
ZWdFeHBDb25zdHJ1Y3Rvcjo6cHV0KToKKyAgICAgICAgKiBydW50aW1lL1JlZ0V4cENvbnN0cnVj
dG9yLmg6CisgICAgICAgIChSZWdFeHBDb25zdHJ1Y3Rvcik6CisgICAgICAgICogcnVudGltZS9S
ZWdFeHBNYXRjaGVzQXJyYXkuaDoKKyAgICAgICAgKEpTQzo6UmVnRXhwTWF0Y2hlc0FycmF5Ojpn
ZXRPd25Qcm9wZXJ0eVNsb3QpOgorICAgICAgICAoSlNDOjpSZWdFeHBNYXRjaGVzQXJyYXk6Omdl
dE93blByb3BlcnR5RGVzY3JpcHRvcik6CisgICAgICAgIChKU0M6OlJlZ0V4cE1hdGNoZXNBcnJh
eTo6cHV0KToKKyAgICAgICAgKEpTQzo6UmVnRXhwTWF0Y2hlc0FycmF5OjpkZWxldGVQcm9wZXJ0
eSk6CisgICAgICAgIChKU0M6OlJlZ0V4cE1hdGNoZXNBcnJheTo6ZGVmaW5lT3duUHJvcGVydHkp
OgorICAgICAgICAqIHJ1bnRpbWUvUmVnRXhwT2JqZWN0LmNwcDoKKyAgICAgICAgKEpTQyk6Cisg
ICAgICAgIChKU0M6OlJlZ0V4cE9iamVjdDo6Z2V0T3duUHJvcGVydHlTbG90KToKKyAgICAgICAg
KEpTQzo6UmVnRXhwT2JqZWN0OjpnZXRPd25Qcm9wZXJ0eURlc2NyaXB0b3IpOgorICAgICAgICAo
SlNDOjpSZWdFeHBPYmplY3Q6OmRlbGV0ZVByb3BlcnR5KToKKyAgICAgICAgKEpTQzo6UmVnRXhw
T2JqZWN0OjpkZWZpbmVPd25Qcm9wZXJ0eSk6CisgICAgICAgIChKU0M6OnJlZ0V4cE9iamVjdEds
b2JhbCk6CisgICAgICAgIChKU0M6OnJlZ0V4cE9iamVjdElnbm9yZUNhc2UpOgorICAgICAgICAo
SlNDOjpyZWdFeHBPYmplY3RNdWx0aWxpbmUpOgorICAgICAgICAoSlNDOjpyZWdFeHBPYmplY3RT
b3VyY2UpOgorICAgICAgICAoSlNDOjpSZWdFeHBPYmplY3Q6OnB1dCk6CisgICAgICAgICogcnVu
dGltZS9SZWdFeHBPYmplY3QuaDoKKyAgICAgICAgKFJlZ0V4cE9iamVjdCk6CisgICAgICAgICog
cnVudGltZS9SZWdFeHBQcm90b3R5cGUuY3BwOgorICAgICAgICAoSlNDOjpSZWdFeHBQcm90b3R5
cGU6OmdldE93blByb3BlcnR5U2xvdCk6CisgICAgICAgIChKU0M6OlJlZ0V4cFByb3RvdHlwZTo6
Z2V0T3duUHJvcGVydHlEZXNjcmlwdG9yKToKKyAgICAgICAgKiBydW50aW1lL1JlZ0V4cFByb3Rv
dHlwZS5oOgorICAgICAgICAoUmVnRXhwUHJvdG90eXBlKToKKyAgICAgICAgKiBydW50aW1lL1N0
cmljdEV2YWxBY3RpdmF0aW9uLmNwcDoKKyAgICAgICAgKEpTQzo6U3RyaWN0RXZhbEFjdGl2YXRp
b246OmRlbGV0ZVByb3BlcnR5KToKKyAgICAgICAgKiBydW50aW1lL1N0cmljdEV2YWxBY3RpdmF0
aW9uLmg6CisgICAgICAgIChTdHJpY3RFdmFsQWN0aXZhdGlvbik6CisgICAgICAgICogcnVudGlt
ZS9TdHJpbmdDb25zdHJ1Y3Rvci5jcHA6CisgICAgICAgIChKU0M6OlN0cmluZ0NvbnN0cnVjdG9y
OjpmaW5pc2hDcmVhdGlvbik6CisgICAgICAgIChKU0M6OlN0cmluZ0NvbnN0cnVjdG9yOjpnZXRP
d25Qcm9wZXJ0eVNsb3QpOgorICAgICAgICAoSlNDOjpTdHJpbmdDb25zdHJ1Y3Rvcjo6Z2V0T3du
UHJvcGVydHlEZXNjcmlwdG9yKToKKyAgICAgICAgKiBydW50aW1lL1N0cmluZ0NvbnN0cnVjdG9y
Lmg6CisgICAgICAgIChTdHJpbmdDb25zdHJ1Y3Rvcik6CisgICAgICAgICogcnVudGltZS9TdHJp
bmdPYmplY3QuY3BwOgorICAgICAgICAoSlNDOjpTdHJpbmdPYmplY3Q6OmdldE93blByb3BlcnR5
U2xvdCk6CisgICAgICAgIChKU0M6OlN0cmluZ09iamVjdDo6Z2V0T3duUHJvcGVydHlEZXNjcmlw
dG9yKToKKyAgICAgICAgKEpTQzo6U3RyaW5nT2JqZWN0OjpwdXQpOgorICAgICAgICAoSlNDOjpT
dHJpbmdPYmplY3Q6OmRlZmluZU93blByb3BlcnR5KToKKyAgICAgICAgKEpTQzo6U3RyaW5nT2Jq
ZWN0OjpkZWxldGVQcm9wZXJ0eSk6CisgICAgICAgICogcnVudGltZS9TdHJpbmdPYmplY3QuaDoK
KyAgICAgICAgKFN0cmluZ09iamVjdCk6CisgICAgICAgICogcnVudGltZS9TdHJpbmdQcm90b3R5
cGUuY3BwOgorICAgICAgICAoSlNDOjpTdHJpbmdQcm90b3R5cGU6OmdldE93blByb3BlcnR5U2xv
dCk6CisgICAgICAgIChKU0M6OlN0cmluZ1Byb3RvdHlwZTo6Z2V0T3duUHJvcGVydHlEZXNjcmlw
dG9yKToKKyAgICAgICAgKiBydW50aW1lL1N0cmluZ1Byb3RvdHlwZS5oOgorICAgICAgICAoU3Ry
aW5nUHJvdG90eXBlKToKKyAgICAgICAgKiBydW50aW1lL1N0cnVjdHVyZS5jcHA6CisgICAgICAg
IChKU0M6OlN0cnVjdHVyZTo6ZGVzcGVjaWZ5RGljdGlvbmFyeUZ1bmN0aW9uKToKKyAgICAgICAg
KEpTQzo6U3RydWN0dXJlOjphZGRQcm9wZXJ0eVRyYW5zaXRpb25Ub0V4aXN0aW5nU3RydWN0dXJl
KToKKyAgICAgICAgKEpTQzo6U3RydWN0dXJlOjphZGRQcm9wZXJ0eVRyYW5zaXRpb24pOgorICAg
ICAgICAoSlNDOjpTdHJ1Y3R1cmU6OnJlbW92ZVByb3BlcnR5VHJhbnNpdGlvbik6CisgICAgICAg
IChKU0M6OlN0cnVjdHVyZTo6ZGVzcGVjaWZ5RnVuY3Rpb25UcmFuc2l0aW9uKToKKyAgICAgICAg
KEpTQzo6U3RydWN0dXJlOjphdHRyaWJ1dGVDaGFuZ2VUcmFuc2l0aW9uKToKKyAgICAgICAgKEpT
Qzo6U3RydWN0dXJlOjphZGRQcm9wZXJ0eVdpdGhvdXRUcmFuc2l0aW9uKToKKyAgICAgICAgKEpT
Qzo6U3RydWN0dXJlOjpyZW1vdmVQcm9wZXJ0eVdpdGhvdXRUcmFuc2l0aW9uKToKKyAgICAgICAg
KEpTQzo6U3RydWN0dXJlOjpnZXQpOgorICAgICAgICAoSlNDOjpTdHJ1Y3R1cmU6OmRlc3BlY2lm
eUZ1bmN0aW9uKToKKyAgICAgICAgKEpTQzo6U3RydWN0dXJlOjpwdXRTcGVjaWZpY1ZhbHVlKToK
KyAgICAgICAgKEpTQzo6U3RydWN0dXJlOjpyZW1vdmUpOgorICAgICAgICAqIHJ1bnRpbWUvU3Ry
dWN0dXJlLmg6CisgICAgICAgIChTdHJ1Y3R1cmUpOgorICAgICAgICAoSlNDOjpTdHJ1Y3R1cmU6
OmdldCk6CisKIDIwMTItMDUtMTEgIFNhbSBXZWluaWcgIDxzYW1Ad2Via2l0Lm9yZz4KIAogICAg
ICAgICBGaXggY3Jhc2ggc2VlbiB3aGVuIHJ1bm5pbmcgd2l0aCBsaWJnbWFsbG9jCkluZGV4OiBT
b3VyY2UvSmF2YVNjcmlwdENvcmUvSlNDVHlwZWRBcnJheVN0dWJzLmgKPT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0g
U291cmNlL0phdmFTY3JpcHRDb3JlL0pTQ1R5cGVkQXJyYXlTdHVicy5oCShyZXZpc2lvbiAxMTY2
NjcpCisrKyBTb3VyY2UvSmF2YVNjcmlwdENvcmUvSlNDVHlwZWRBcnJheVN0dWJzLmgJKHdvcmtp
bmcgY29weSkKQEAgLTUyLDEwICs1MiwxMCBAQCBwdWJsaWM6IFwKICAgICAgICAgcmV0dXJuIHB0
cjsgXAogICAgIH1cCiBcCi0gICAgc3RhdGljIGJvb2wgZ2V0T3duUHJvcGVydHlTbG90KEpTQzo6
SlNDZWxsKiwgSlNDOjpFeGVjU3RhdGUqLCBjb25zdCBKU0M6OklkZW50aWZpZXImIHByb3BlcnR5
TmFtZSwgSlNDOjpQcm9wZXJ0eVNsb3QmKTtcCi0gICAgc3RhdGljIGJvb2wgZ2V0T3duUHJvcGVy
dHlEZXNjcmlwdG9yKEpTQzo6SlNPYmplY3QqLCBKU0M6OkV4ZWNTdGF0ZSosIGNvbnN0IEpTQzo6
SWRlbnRpZmllciYgcHJvcGVydHlOYW1lLCBKU0M6OlByb3BlcnR5RGVzY3JpcHRvciYpO1wKKyAg
ICBzdGF0aWMgYm9vbCBnZXRPd25Qcm9wZXJ0eVNsb3QoSlNDOjpKU0NlbGwqLCBKU0M6OkV4ZWNT
dGF0ZSosIEpTQzo6UHJvcGVydHlOYW1lIHByb3BlcnR5TmFtZSwgSlNDOjpQcm9wZXJ0eVNsb3Qm
KTtcCisgICAgc3RhdGljIGJvb2wgZ2V0T3duUHJvcGVydHlEZXNjcmlwdG9yKEpTQzo6SlNPYmpl
Y3QqLCBKU0M6OkV4ZWNTdGF0ZSosIEpTQzo6UHJvcGVydHlOYW1lIHByb3BlcnR5TmFtZSwgSlND
OjpQcm9wZXJ0eURlc2NyaXB0b3ImKTtcCiAgICAgc3RhdGljIGJvb2wgZ2V0T3duUHJvcGVydHlT
bG90QnlJbmRleChKU0M6OkpTQ2VsbCosIEpTQzo6RXhlY1N0YXRlKiwgdW5zaWduZWQgcHJvcGVy
dHlOYW1lLCBKU0M6OlByb3BlcnR5U2xvdCYpO1wKLSAgICBzdGF0aWMgdm9pZCBwdXQoSlNDOjpK
U0NlbGwqLCBKU0M6OkV4ZWNTdGF0ZSosIGNvbnN0IEpTQzo6SWRlbnRpZmllciYgcHJvcGVydHlO
YW1lLCBKU0M6OkpTVmFsdWUsIEpTQzo6UHV0UHJvcGVydHlTbG90Jik7XAorICAgIHN0YXRpYyB2
b2lkIHB1dChKU0M6OkpTQ2VsbCosIEpTQzo6RXhlY1N0YXRlKiwgSlNDOjpQcm9wZXJ0eU5hbWUg
cHJvcGVydHlOYW1lLCBKU0M6OkpTVmFsdWUsIEpTQzo6UHV0UHJvcGVydHlTbG90Jik7XAogICAg
IHN0YXRpYyB2b2lkIHB1dEJ5SW5kZXgoSlNDOjpKU0NlbGwqLCBKU0M6OkV4ZWNTdGF0ZSosIHVu
c2lnbmVkIHByb3BlcnR5TmFtZSwgSlNDOjpKU1ZhbHVlLCBib29sKTtcCiAgICAgc3RhdGljIGNv
bnN0IEpTQzo6Q2xhc3NJbmZvIHNfaW5mbztcCiBcCkBAIC05OCwyNiArOTgsMjYgQEAgdm9pZCBK
UyMjbmFtZSMjQXJyYXk6OmZpbmlzaENyZWF0aW9uKEpTRwogICAgIEFTU0VSVChpbmhlcml0cygm
c19pbmZvKSk7XAogfVwKIFwKLWJvb2wgSlMjI25hbWUjI0FycmF5OjpnZXRPd25Qcm9wZXJ0eVNs
b3QoSlNDZWxsKiBjZWxsLCBFeGVjU3RhdGUqIGV4ZWMsIGNvbnN0IElkZW50aWZpZXImIHByb3Bl
cnR5TmFtZSwgUHJvcGVydHlTbG90JiBzbG90KVwKK2Jvb2wgSlMjI25hbWUjI0FycmF5OjpnZXRP
d25Qcm9wZXJ0eVNsb3QoSlNDZWxsKiBjZWxsLCBFeGVjU3RhdGUqIGV4ZWMsIFByb3BlcnR5TmFt
ZSBwcm9wZXJ0eU5hbWUsIFByb3BlcnR5U2xvdCYgc2xvdClcCiB7XAogICAgIEpTIyNuYW1lIyNB
cnJheSogdGhpc09iamVjdCA9IGpzQ2FzdDxKUyMjbmFtZSMjQXJyYXkqPihjZWxsKTtcCiAgICAg
QVNTRVJUX0dDX09CSkVDVF9JTkhFUklUUyh0aGlzT2JqZWN0LCAmc19pbmZvKTtcCi0gICAgYm9v
bCBvaztcCi0gICAgdW5zaWduZWQgaW5kZXggPSBwcm9wZXJ0eU5hbWUudG9VSW50MzIob2spO1wK
LSAgICBpZiAob2sgJiYgaW5kZXggPCB0aGlzT2JqZWN0LT5tX3N0b3JhZ2VMZW5ndGgpIHtcCisg
ICAgdW5zaWduZWQgaW5kZXggPSBwcm9wZXJ0eU5hbWUuYXNJbmRleCgpO1wKKyAgICBpZiAoaW5k
ZXggPCB0aGlzT2JqZWN0LT5tX3N0b3JhZ2VMZW5ndGgpIHtcCisgICAgICAgIEFTU0VSVChpbmRl
eCAhPSBQcm9wZXJ0eU5hbWU6Ok5vdEFuSW5kZXgpO1wKICAgICAgICAgc2xvdC5zZXRWYWx1ZSh0
aGlzT2JqZWN0LT5nZXRCeUluZGV4KGV4ZWMsIGluZGV4KSk7XAogICAgICAgICByZXR1cm4gdHJ1
ZTtcCiAgICAgfVwKICAgICByZXR1cm4gQmFzZTo6Z2V0T3duUHJvcGVydHlTbG90KGNlbGwsIGV4
ZWMsIHByb3BlcnR5TmFtZSwgc2xvdCk7XAogfVwKIFwKLWJvb2wgSlMjI25hbWUjI0FycmF5Ojpn
ZXRPd25Qcm9wZXJ0eURlc2NyaXB0b3IoSlNPYmplY3QqIG9iamVjdCwgRXhlY1N0YXRlKiBleGVj
LCBjb25zdCBJZGVudGlmaWVyJiBwcm9wZXJ0eU5hbWUsIFByb3BlcnR5RGVzY3JpcHRvciYgZGVz
Y3JpcHRvcilcCitib29sIEpTIyNuYW1lIyNBcnJheTo6Z2V0T3duUHJvcGVydHlEZXNjcmlwdG9y
KEpTT2JqZWN0KiBvYmplY3QsIEV4ZWNTdGF0ZSogZXhlYywgUHJvcGVydHlOYW1lIHByb3BlcnR5
TmFtZSwgUHJvcGVydHlEZXNjcmlwdG9yJiBkZXNjcmlwdG9yKVwKIHtcCiAgICAgSlMjI25hbWUj
I0FycmF5KiB0aGlzT2JqZWN0ID0ganNDYXN0PEpTIyNuYW1lIyNBcnJheSo+KG9iamVjdCk7XAog
ICAgIEFTU0VSVF9HQ19PQkpFQ1RfSU5IRVJJVFModGhpc09iamVjdCwgJnNfaW5mbyk7XAotICAg
IGJvb2wgb2s7XAotICAgIHVuc2lnbmVkIGluZGV4ID0gcHJvcGVydHlOYW1lLnRvVUludDMyKG9r
KTtcCi0gICAgaWYgKG9rICYmIGluZGV4IDwgdGhpc09iamVjdC0+bV9zdG9yYWdlTGVuZ3RoKSB7
XAorICAgIHVuc2lnbmVkIGluZGV4ID0gcHJvcGVydHlOYW1lLmFzSW5kZXgoKTtcCisgICAgaWYg
KGluZGV4IDwgdGhpc09iamVjdC0+bV9zdG9yYWdlTGVuZ3RoKSB7XAorICAgICAgICBBU1NFUlQo
aW5kZXggIT0gUHJvcGVydHlOYW1lOjpOb3RBbkluZGV4KTtcCiAgICAgICAgIGRlc2NyaXB0b3Iu
c2V0RGVzY3JpcHRvcih0aGlzT2JqZWN0LT5nZXRCeUluZGV4KGV4ZWMsIGluZGV4KSwgRG9udERl
bGV0ZSk7XAogICAgICAgICByZXR1cm4gdHJ1ZTtcCiAgICAgfVwKQEAgLTEzNSwxMyArMTM1LDEy
IEBAIGJvb2wgSlMjI25hbWUjI0FycmF5OjpnZXRPd25Qcm9wZXJ0eVNsb3QKICAgICByZXR1cm4g
dGhpc09iamVjdC0+bWV0aG9kVGFibGUoKS0+Z2V0T3duUHJvcGVydHlTbG90KHRoaXNPYmplY3Qs
IGV4ZWMsIElkZW50aWZpZXI6OmZyb20oZXhlYywgcHJvcGVydHlOYW1lKSwgc2xvdCk7XAogfVwK
IFwKLXZvaWQgSlMjI25hbWUjI0FycmF5OjpwdXQoSlNDZWxsKiBjZWxsLCBFeGVjU3RhdGUqIGV4
ZWMsIGNvbnN0IElkZW50aWZpZXImIHByb3BlcnR5TmFtZSwgSlNWYWx1ZSB2YWx1ZSwgUHV0UHJv
cGVydHlTbG90JiBzbG90KVwKK3ZvaWQgSlMjI25hbWUjI0FycmF5OjpwdXQoSlNDZWxsKiBjZWxs
LCBFeGVjU3RhdGUqIGV4ZWMsIFByb3BlcnR5TmFtZSBwcm9wZXJ0eU5hbWUsIEpTVmFsdWUgdmFs
dWUsIFB1dFByb3BlcnR5U2xvdCYgc2xvdClcCiB7XAogICAgIEpTIyNuYW1lIyNBcnJheSogdGhp
c09iamVjdCA9IGpzQ2FzdDxKUyMjbmFtZSMjQXJyYXkqPihjZWxsKTtcCiAgICAgQVNTRVJUX0dD
X09CSkVDVF9JTkhFUklUUyh0aGlzT2JqZWN0LCAmc19pbmZvKTtcCi0gICAgYm9vbCBvaztcCi0g
ICAgdW5zaWduZWQgaW5kZXggPSBwcm9wZXJ0eU5hbWUudG9VSW50MzIob2spO1wKLSAgICBpZiAo
b2spIHtcCisgICAgdW5zaWduZWQgaW5kZXggPSBwcm9wZXJ0eU5hbWUuYXNJbmRleCgpO1wKKyAg
ICBpZiAoaW5kZXggIT0gUHJvcGVydHlOYW1lOjpOb3RBbkluZGV4KSB7XAogICAgICAgICB0aGlz
T2JqZWN0LT5pbmRleFNldHRlcihleGVjLCBpbmRleCwgdmFsdWUpO1wKICAgICAgICAgcmV0dXJu
O1wKICAgICB9XApJbmRleDogU291cmNlL0phdmFTY3JpcHRDb3JlL2pzYy5jcHAKPT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PQotLS0gU291cmNlL0phdmFTY3JpcHRDb3JlL2pzYy5jcHAJKHJldmlzaW9uIDExNjY2NykKKysr
IFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9qc2MuY3BwCSh3b3JraW5nIGNvcHkpCkBAIC0yMTgsMTMg
KzIxOCwxMyBAQCBwcm90ZWN0ZWQ6CiAgICAgdm9pZCBhZGRGdW5jdGlvbihKU0dsb2JhbERhdGEm
IGdsb2JhbERhdGEsIGNvbnN0IGNoYXIqIG5hbWUsIE5hdGl2ZUZ1bmN0aW9uIGZ1bmN0aW9uLCB1
bnNpZ25lZCBhcmd1bWVudHMpCiAgICAgewogICAgICAgICBJZGVudGlmaWVyIGlkZW50aWZpZXIo
Z2xvYmFsRXhlYygpLCBuYW1lKTsKLSAgICAgICAgcHV0RGlyZWN0KGdsb2JhbERhdGEsIGlkZW50
aWZpZXIsIEpTRnVuY3Rpb246OmNyZWF0ZShnbG9iYWxFeGVjKCksIHRoaXMsIGFyZ3VtZW50cywg
aWRlbnRpZmllciwgZnVuY3Rpb24pKTsKKyAgICAgICAgcHV0RGlyZWN0KGdsb2JhbERhdGEsIGlk
ZW50aWZpZXIsIEpTRnVuY3Rpb246OmNyZWF0ZShnbG9iYWxFeGVjKCksIHRoaXMsIGFyZ3VtZW50
cywgaWRlbnRpZmllci51c3RyaW5nKCksIGZ1bmN0aW9uKSk7CiAgICAgfQogICAgIAogICAgIHZv
aWQgYWRkQ29uc3RydWN0YWJsZUZ1bmN0aW9uKEpTR2xvYmFsRGF0YSYgZ2xvYmFsRGF0YSwgY29u
c3QgY2hhciogbmFtZSwgTmF0aXZlRnVuY3Rpb24gZnVuY3Rpb24sIHVuc2lnbmVkIGFyZ3VtZW50
cykKICAgICB7CiAgICAgICAgIElkZW50aWZpZXIgaWRlbnRpZmllcihnbG9iYWxFeGVjKCksIG5h
bWUpOwotICAgICAgICBwdXREaXJlY3QoZ2xvYmFsRGF0YSwgaWRlbnRpZmllciwgSlNGdW5jdGlv
bjo6Y3JlYXRlKGdsb2JhbEV4ZWMoKSwgdGhpcywgYXJndW1lbnRzLCBpZGVudGlmaWVyLCBmdW5j
dGlvbiwgTm9JbnRyaW5zaWMsIGZ1bmN0aW9uKSk7CisgICAgICAgIHB1dERpcmVjdChnbG9iYWxE
YXRhLCBpZGVudGlmaWVyLCBKU0Z1bmN0aW9uOjpjcmVhdGUoZ2xvYmFsRXhlYygpLCB0aGlzLCBh
cmd1bWVudHMsIGlkZW50aWZpZXIudXN0cmluZygpLCBmdW5jdGlvbiwgTm9JbnRyaW5zaWMsIGZ1
bmN0aW9uKSk7CiAgICAgfQogfTsKIENPTVBJTEVfQVNTRVJUKCFJc0ludGVnZXI8R2xvYmFsT2Jq
ZWN0Pjo6dmFsdWUsIFdURl9Jc0ludGVnZXJfR2xvYmFsT2JqZWN0X2ZhbHNlKTsKSW5kZXg6IFNv
dXJjZS9KYXZhU2NyaXB0Q29yZS9BUEkvSlNDYWxsYmFja0Z1bmN0aW9uLmNwcAo9PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
Ci0tLSBTb3VyY2UvSmF2YVNjcmlwdENvcmUvQVBJL0pTQ2FsbGJhY2tGdW5jdGlvbi5jcHAJKHJl
dmlzaW9uIDExNjY2NykKKysrIFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9BUEkvSlNDYWxsYmFja0Z1
bmN0aW9uLmNwcAkod29ya2luZyBjb3B5KQpAQCAtNDksNyArNDksNyBAQCBKU0NhbGxiYWNrRnVu
Y3Rpb246OkpTQ2FsbGJhY2tGdW5jdGlvbihKCiB7CiB9CiAKLXZvaWQgSlNDYWxsYmFja0Z1bmN0
aW9uOjpmaW5pc2hDcmVhdGlvbihKU0dsb2JhbERhdGEmIGdsb2JhbERhdGEsIGNvbnN0IElkZW50
aWZpZXImIG5hbWUpCit2b2lkIEpTQ2FsbGJhY2tGdW5jdGlvbjo6ZmluaXNoQ3JlYXRpb24oSlNH
bG9iYWxEYXRhJiBnbG9iYWxEYXRhLCBjb25zdCBVU3RyaW5nJiBuYW1lKQogewogICAgIEJhc2U6
OmZpbmlzaENyZWF0aW9uKGdsb2JhbERhdGEsIG5hbWUpOwogICAgIEFTU0VSVChpbmhlcml0cygm
c19pbmZvKSk7CkluZGV4OiBTb3VyY2UvSmF2YVNjcmlwdENvcmUvQVBJL0pTQ2FsbGJhY2tGdW5j
dGlvbi5oCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9BUEkvSlNDYWxsYmFj
a0Z1bmN0aW9uLmgJKHJldmlzaW9uIDExNjY2NykKKysrIFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9B
UEkvSlNDYWxsYmFja0Z1bmN0aW9uLmgJKHdvcmtpbmcgY29weSkKQEAgLTM0LDEyICszNCwxMiBA
QCBuYW1lc3BhY2UgSlNDIHsKIGNsYXNzIEpTQ2FsbGJhY2tGdW5jdGlvbiA6IHB1YmxpYyBJbnRl
cm5hbEZ1bmN0aW9uIHsKIHByb3RlY3RlZDoKICAgICBKU0NhbGxiYWNrRnVuY3Rpb24oSlNHbG9i
YWxPYmplY3QqLCBKU09iamVjdENhbGxBc0Z1bmN0aW9uQ2FsbGJhY2spOwotICAgIHZvaWQgZmlu
aXNoQ3JlYXRpb24oSlNHbG9iYWxEYXRhJiwgY29uc3QgSWRlbnRpZmllciYgbmFtZSk7CisgICAg
dm9pZCBmaW5pc2hDcmVhdGlvbihKU0dsb2JhbERhdGEmLCBjb25zdCBVU3RyaW5nJiBuYW1lKTsK
IAogcHVibGljOgogICAgIHR5cGVkZWYgSW50ZXJuYWxGdW5jdGlvbiBCYXNlOwogCi0gICAgc3Rh
dGljIEpTQ2FsbGJhY2tGdW5jdGlvbiogY3JlYXRlKEV4ZWNTdGF0ZSogZXhlYywgSlNHbG9iYWxP
YmplY3QqIGdsb2JhbE9iamVjdCwgSlNPYmplY3RDYWxsQXNGdW5jdGlvbkNhbGxiYWNrIGNhbGxi
YWNrLCBjb25zdCBJZGVudGlmaWVyJiBuYW1lKQorICAgIHN0YXRpYyBKU0NhbGxiYWNrRnVuY3Rp
b24qIGNyZWF0ZShFeGVjU3RhdGUqIGV4ZWMsIEpTR2xvYmFsT2JqZWN0KiBnbG9iYWxPYmplY3Qs
IEpTT2JqZWN0Q2FsbEFzRnVuY3Rpb25DYWxsYmFjayBjYWxsYmFjaywgY29uc3QgVVN0cmluZyYg
bmFtZSkKICAgICB7CiAgICAgICAgIEpTQ2FsbGJhY2tGdW5jdGlvbiogZnVuY3Rpb24gPSBuZXcg
KE5vdE51bGwsIGFsbG9jYXRlQ2VsbDxKU0NhbGxiYWNrRnVuY3Rpb24+KCpleGVjLT5oZWFwKCkp
KSBKU0NhbGxiYWNrRnVuY3Rpb24oZ2xvYmFsT2JqZWN0LCBjYWxsYmFjayk7CiAgICAgICAgIGZ1
bmN0aW9uLT5maW5pc2hDcmVhdGlvbihleGVjLT5nbG9iYWxEYXRhKCksIG5hbWUpOwpJbmRleDog
U291cmNlL0phdmFTY3JpcHRDb3JlL0FQSS9KU0NhbGxiYWNrT2JqZWN0LmgKPT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQot
LS0gU291cmNlL0phdmFTY3JpcHRDb3JlL0FQSS9KU0NhbGxiYWNrT2JqZWN0LmgJKHJldmlzaW9u
IDExNjY2NykKKysrIFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9BUEkvSlNDYWxsYmFja09iamVjdC5o
CSh3b3JraW5nIGNvcHkpCkBAIC0xNzcsMTIgKzE3NywxMiBAQCBwcml2YXRlOgogCiAgICAgc3Rh
dGljIEpTVmFsdWUgZGVmYXVsdFZhbHVlKGNvbnN0IEpTT2JqZWN0KiwgRXhlY1N0YXRlKiwgUHJl
ZmVycmVkUHJpbWl0aXZlVHlwZSk7CiAKLSAgICBzdGF0aWMgYm9vbCBnZXRPd25Qcm9wZXJ0eVNs
b3QoSlNDZWxsKiwgRXhlY1N0YXRlKiwgY29uc3QgSWRlbnRpZmllciYsIFByb3BlcnR5U2xvdCYp
OwotICAgIHN0YXRpYyBib29sIGdldE93blByb3BlcnR5RGVzY3JpcHRvcihKU09iamVjdCosIEV4
ZWNTdGF0ZSosIGNvbnN0IElkZW50aWZpZXImLCBQcm9wZXJ0eURlc2NyaXB0b3ImKTsKKyAgICBz
dGF0aWMgYm9vbCBnZXRPd25Qcm9wZXJ0eVNsb3QoSlNDZWxsKiwgRXhlY1N0YXRlKiwgUHJvcGVy
dHlOYW1lLCBQcm9wZXJ0eVNsb3QmKTsKKyAgICBzdGF0aWMgYm9vbCBnZXRPd25Qcm9wZXJ0eURl
c2NyaXB0b3IoSlNPYmplY3QqLCBFeGVjU3RhdGUqLCBQcm9wZXJ0eU5hbWUsIFByb3BlcnR5RGVz
Y3JpcHRvciYpOwogICAgIAotICAgIHN0YXRpYyB2b2lkIHB1dChKU0NlbGwqLCBFeGVjU3RhdGUq
LCBjb25zdCBJZGVudGlmaWVyJiwgSlNWYWx1ZSwgUHV0UHJvcGVydHlTbG90Jik7CisgICAgc3Rh
dGljIHZvaWQgcHV0KEpTQ2VsbCosIEV4ZWNTdGF0ZSosIFByb3BlcnR5TmFtZSwgSlNWYWx1ZSwg
UHV0UHJvcGVydHlTbG90Jik7CiAKLSAgICBzdGF0aWMgYm9vbCBkZWxldGVQcm9wZXJ0eShKU0Nl
bGwqLCBFeGVjU3RhdGUqLCBjb25zdCBJZGVudGlmaWVyJik7CisgICAgc3RhdGljIGJvb2wgZGVs
ZXRlUHJvcGVydHkoSlNDZWxsKiwgRXhlY1N0YXRlKiwgUHJvcGVydHlOYW1lKTsKICAgICBzdGF0
aWMgYm9vbCBkZWxldGVQcm9wZXJ0eUJ5SW5kZXgoSlNDZWxsKiwgRXhlY1N0YXRlKiwgdW5zaWdu
ZWQpOwogCiAgICAgc3RhdGljIGJvb2wgaGFzSW5zdGFuY2UoSlNPYmplY3QqLCBFeGVjU3RhdGUq
LCBKU1ZhbHVlLCBKU1ZhbHVlIHByb3RvKTsKQEAgLTIwOSw5ICsyMDksOSBAQCBwcml2YXRlOgog
ICAgIHN0YXRpYyBFbmNvZGVkSlNWYWx1ZSBKU0NfSE9TVF9DQUxMIGNhbGwoRXhlY1N0YXRlKik7
CiAgICAgc3RhdGljIEVuY29kZWRKU1ZhbHVlIEpTQ19IT1NUX0NBTEwgY29uc3RydWN0KEV4ZWNT
dGF0ZSopOwogICAgCi0gICAgSlNWYWx1ZSBnZXRTdGF0aWNWYWx1ZShFeGVjU3RhdGUqLCBjb25z
dCBJZGVudGlmaWVyJik7Ci0gICAgc3RhdGljIEpTVmFsdWUgc3RhdGljRnVuY3Rpb25HZXR0ZXIo
RXhlY1N0YXRlKiwgSlNWYWx1ZSwgY29uc3QgSWRlbnRpZmllciYpOwotICAgIHN0YXRpYyBKU1Zh
bHVlIGNhbGxiYWNrR2V0dGVyKEV4ZWNTdGF0ZSosIEpTVmFsdWUsIGNvbnN0IElkZW50aWZpZXIm
KTsKKyAgICBKU1ZhbHVlIGdldFN0YXRpY1ZhbHVlKEV4ZWNTdGF0ZSosIFByb3BlcnR5TmFtZSk7
CisgICAgc3RhdGljIEpTVmFsdWUgc3RhdGljRnVuY3Rpb25HZXR0ZXIoRXhlY1N0YXRlKiwgSlNW
YWx1ZSwgUHJvcGVydHlOYW1lKTsKKyAgICBzdGF0aWMgSlNWYWx1ZSBjYWxsYmFja0dldHRlcihF
eGVjU3RhdGUqLCBKU1ZhbHVlLCBQcm9wZXJ0eU5hbWUpOwogCiAgICAgT3duUHRyPEpTQ2FsbGJh
Y2tPYmplY3REYXRhPiBtX2NhbGxiYWNrT2JqZWN0RGF0YTsKIH07CkluZGV4OiBTb3VyY2UvSmF2
YVNjcmlwdENvcmUvQVBJL0pTQ2FsbGJhY2tPYmplY3RGdW5jdGlvbnMuaAo9PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0t
LSBTb3VyY2UvSmF2YVNjcmlwdENvcmUvQVBJL0pTQ2FsbGJhY2tPYmplY3RGdW5jdGlvbnMuaAko
cmV2aXNpb24gMTE2NjY3KQorKysgU291cmNlL0phdmFTY3JpcHRDb3JlL0FQSS9KU0NhbGxiYWNr
T2JqZWN0RnVuY3Rpb25zLmgJKHdvcmtpbmcgY29weSkKQEAgLTEyMiw3ICsxMjIsNyBAQCBVU3Ry
aW5nIEpTQ2FsbGJhY2tPYmplY3Q8UGFyZW50Pjo6Y2xhc3NOCiB9CiAKIHRlbXBsYXRlIDxjbGFz
cyBQYXJlbnQ+Ci1ib29sIEpTQ2FsbGJhY2tPYmplY3Q8UGFyZW50Pjo6Z2V0T3duUHJvcGVydHlT
bG90KEpTQ2VsbCogY2VsbCwgRXhlY1N0YXRlKiBleGVjLCBjb25zdCBJZGVudGlmaWVyJiBwcm9w
ZXJ0eU5hbWUsIFByb3BlcnR5U2xvdCYgc2xvdCkKK2Jvb2wgSlNDYWxsYmFja09iamVjdDxQYXJl
bnQ+OjpnZXRPd25Qcm9wZXJ0eVNsb3QoSlNDZWxsKiBjZWxsLCBFeGVjU3RhdGUqIGV4ZWMsIFBy
b3BlcnR5TmFtZSBwcm9wZXJ0eU5hbWUsIFByb3BlcnR5U2xvdCYgc2xvdCkKIHsKICAgICBKU0Nh
bGxiYWNrT2JqZWN0KiB0aGlzT2JqZWN0ID0ganNDYXN0PEpTQ2FsbGJhY2tPYmplY3QqPihjZWxs
KTsKICAgICBKU0NvbnRleHRSZWYgY3R4ID0gdG9SZWYoZXhlYyk7CkBAIC0yMDUsNyArMjA1LDcg
QEAgSlNWYWx1ZSBKU0NhbGxiYWNrT2JqZWN0PFBhcmVudD46OmRlZmF1bAogfQogCiB0ZW1wbGF0
ZSA8Y2xhc3MgUGFyZW50PgotYm9vbCBKU0NhbGxiYWNrT2JqZWN0PFBhcmVudD46OmdldE93blBy
b3BlcnR5RGVzY3JpcHRvcihKU09iamVjdCogb2JqZWN0LCBFeGVjU3RhdGUqIGV4ZWMsIGNvbnN0
IElkZW50aWZpZXImIHByb3BlcnR5TmFtZSwgUHJvcGVydHlEZXNjcmlwdG9yJiBkZXNjcmlwdG9y
KQorYm9vbCBKU0NhbGxiYWNrT2JqZWN0PFBhcmVudD46OmdldE93blByb3BlcnR5RGVzY3JpcHRv
cihKU09iamVjdCogb2JqZWN0LCBFeGVjU3RhdGUqIGV4ZWMsIFByb3BlcnR5TmFtZSBwcm9wZXJ0
eU5hbWUsIFByb3BlcnR5RGVzY3JpcHRvciYgZGVzY3JpcHRvcikKIHsKICAgICBKU0NhbGxiYWNr
T2JqZWN0KiB0aGlzT2JqZWN0ID0ganNDYXN0PEpTQ2FsbGJhY2tPYmplY3QqPihvYmplY3QpOwog
ICAgIFByb3BlcnR5U2xvdCBzbG90OwpAQCAtMjI1LDcgKzIyNSw3IEBAIGJvb2wgSlNDYWxsYmFj
a09iamVjdDxQYXJlbnQ+OjpnZXRPd25Qcm8KIH0KIAogdGVtcGxhdGUgPGNsYXNzIFBhcmVudD4K
LXZvaWQgSlNDYWxsYmFja09iamVjdDxQYXJlbnQ+OjpwdXQoSlNDZWxsKiBjZWxsLCBFeGVjU3Rh
dGUqIGV4ZWMsIGNvbnN0IElkZW50aWZpZXImIHByb3BlcnR5TmFtZSwgSlNWYWx1ZSB2YWx1ZSwg
UHV0UHJvcGVydHlTbG90JiBzbG90KQordm9pZCBKU0NhbGxiYWNrT2JqZWN0PFBhcmVudD46OnB1
dChKU0NlbGwqIGNlbGwsIEV4ZWNTdGF0ZSogZXhlYywgUHJvcGVydHlOYW1lIHByb3BlcnR5TmFt
ZSwgSlNWYWx1ZSB2YWx1ZSwgUHV0UHJvcGVydHlTbG90JiBzbG90KQogewogICAgIEpTQ2FsbGJh
Y2tPYmplY3QqIHRoaXNPYmplY3QgPSBqc0Nhc3Q8SlNDYWxsYmFja09iamVjdCo+KGNlbGwpOwog
ICAgIEpTQ29udGV4dFJlZiBjdHggPSB0b1JlZihleGVjKTsKQEAgLTI4NCw3ICsyODQsNyBAQCB2
b2lkIEpTQ2FsbGJhY2tPYmplY3Q8UGFyZW50Pjo6cHV0KEpTQ2VsCiB9CiAKIHRlbXBsYXRlIDxj
bGFzcyBQYXJlbnQ+Ci1ib29sIEpTQ2FsbGJhY2tPYmplY3Q8UGFyZW50Pjo6ZGVsZXRlUHJvcGVy
dHkoSlNDZWxsKiBjZWxsLCBFeGVjU3RhdGUqIGV4ZWMsIGNvbnN0IElkZW50aWZpZXImIHByb3Bl
cnR5TmFtZSkKK2Jvb2wgSlNDYWxsYmFja09iamVjdDxQYXJlbnQ+OjpkZWxldGVQcm9wZXJ0eShK
U0NlbGwqIGNlbGwsIEV4ZWNTdGF0ZSogZXhlYywgUHJvcGVydHlOYW1lIHByb3BlcnR5TmFtZSkK
IHsKICAgICBKU0NhbGxiYWNrT2JqZWN0KiB0aGlzT2JqZWN0ID0ganNDYXN0PEpTQ2FsbGJhY2tP
YmplY3QqPihjZWxsKTsKICAgICBKU0NvbnRleHRSZWYgY3R4ID0gdG9SZWYoZXhlYyk7CkBAIC01
MDQsNyArNTA0LDcgQEAgYm9vbCBKU0NhbGxiYWNrT2JqZWN0PFBhcmVudD46OmluaGVyaXRzKAog
fQogCiB0ZW1wbGF0ZSA8Y2xhc3MgUGFyZW50PgotSlNWYWx1ZSBKU0NhbGxiYWNrT2JqZWN0PFBh
cmVudD46OmdldFN0YXRpY1ZhbHVlKEV4ZWNTdGF0ZSogZXhlYywgY29uc3QgSWRlbnRpZmllciYg
cHJvcGVydHlOYW1lKQorSlNWYWx1ZSBKU0NhbGxiYWNrT2JqZWN0PFBhcmVudD46OmdldFN0YXRp
Y1ZhbHVlKEV4ZWNTdGF0ZSogZXhlYywgUHJvcGVydHlOYW1lIHByb3BlcnR5TmFtZSkKIHsKICAg
ICBKU09iamVjdFJlZiB0aGlzUmVmID0gdG9SZWYodGhpcyk7CiAgICAgUmVmUHRyPE9wYXF1ZUpT
U3RyaW5nPiBwcm9wZXJ0eU5hbWVSZWY7CkBAIC01MzMsNyArNTMzLDcgQEAgSlNWYWx1ZSBKU0Nh
bGxiYWNrT2JqZWN0PFBhcmVudD46OmdldFN0YQogfQogCiB0ZW1wbGF0ZSA8Y2xhc3MgUGFyZW50
PgotSlNWYWx1ZSBKU0NhbGxiYWNrT2JqZWN0PFBhcmVudD46OnN0YXRpY0Z1bmN0aW9uR2V0dGVy
KEV4ZWNTdGF0ZSogZXhlYywgSlNWYWx1ZSBzbG90UGFyZW50LCBjb25zdCBJZGVudGlmaWVyJiBw
cm9wZXJ0eU5hbWUpCitKU1ZhbHVlIEpTQ2FsbGJhY2tPYmplY3Q8UGFyZW50Pjo6c3RhdGljRnVu
Y3Rpb25HZXR0ZXIoRXhlY1N0YXRlKiBleGVjLCBKU1ZhbHVlIHNsb3RQYXJlbnQsIFByb3BlcnR5
TmFtZSBwcm9wZXJ0eU5hbWUpCiB7CiAgICAgSlNDYWxsYmFja09iamVjdCogdGhpc09iaiA9IGFz
Q2FsbGJhY2tPYmplY3Qoc2xvdFBhcmVudCk7CiAgICAgCkBAIC01NDcsNyArNTQ3LDcgQEAgSlNW
YWx1ZSBKU0NhbGxiYWNrT2JqZWN0PFBhcmVudD46OnN0YXRpYwogICAgICAgICAgICAgaWYgKFN0
YXRpY0Z1bmN0aW9uRW50cnkqIGVudHJ5ID0gc3RhdGljRnVuY3Rpb25zLT5nZXQocHJvcGVydHlO
YW1lLmltcGwoKSkpIHsKICAgICAgICAgICAgICAgICBpZiAoSlNPYmplY3RDYWxsQXNGdW5jdGlv
bkNhbGxiYWNrIGNhbGxBc0Z1bmN0aW9uID0gZW50cnktPmNhbGxBc0Z1bmN0aW9uKSB7CiAgICAg
ICAgICAgICAgICAgICAgIAotICAgICAgICAgICAgICAgICAgICBKU09iamVjdCogbyA9IEpTQ2Fs
bGJhY2tGdW5jdGlvbjo6Y3JlYXRlKGV4ZWMsIHRoaXNPYmotPmdsb2JhbE9iamVjdCgpLCBjYWxs
QXNGdW5jdGlvbiwgcHJvcGVydHlOYW1lKTsKKyAgICAgICAgICAgICAgICAgICAgSlNPYmplY3Qq
IG8gPSBKU0NhbGxiYWNrRnVuY3Rpb246OmNyZWF0ZShleGVjLCB0aGlzT2JqLT5nbG9iYWxPYmpl
Y3QoKSwgY2FsbEFzRnVuY3Rpb24sIHByb3BlcnR5TmFtZS51c3RyaW5nKCkpOwogICAgICAgICAg
ICAgICAgICAgICB0aGlzT2JqLT5wdXREaXJlY3QoZXhlYy0+Z2xvYmFsRGF0YSgpLCBwcm9wZXJ0
eU5hbWUsIG8sIGVudHJ5LT5hdHRyaWJ1dGVzKTsKICAgICAgICAgICAgICAgICAgICAgcmV0dXJu
IG87CiAgICAgICAgICAgICAgICAgfQpAQCAtNTU5LDcgKzU1OSw3IEBAIEpTVmFsdWUgSlNDYWxs
YmFja09iamVjdDxQYXJlbnQ+OjpzdGF0aWMKIH0KIAogdGVtcGxhdGUgPGNsYXNzIFBhcmVudD4K
LUpTVmFsdWUgSlNDYWxsYmFja09iamVjdDxQYXJlbnQ+OjpjYWxsYmFja0dldHRlcihFeGVjU3Rh
dGUqIGV4ZWMsIEpTVmFsdWUgc2xvdFBhcmVudCwgY29uc3QgSWRlbnRpZmllciYgcHJvcGVydHlO
YW1lKQorSlNWYWx1ZSBKU0NhbGxiYWNrT2JqZWN0PFBhcmVudD46OmNhbGxiYWNrR2V0dGVyKEV4
ZWNTdGF0ZSogZXhlYywgSlNWYWx1ZSBzbG90UGFyZW50LCBQcm9wZXJ0eU5hbWUgcHJvcGVydHlO
YW1lKQogewogICAgIEpTQ2FsbGJhY2tPYmplY3QqIHRoaXNPYmogPSBhc0NhbGxiYWNrT2JqZWN0
KHNsb3RQYXJlbnQpOwogICAgIApJbmRleDogU291cmNlL0phdmFTY3JpcHRDb3JlL0FQSS9KU09i
amVjdFJlZi5jcHAKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL0phdmFTY3JpcHRDb3JlL0FQSS9KU09i
amVjdFJlZi5jcHAJKHJldmlzaW9uIDExNjY2NykKKysrIFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9B
UEkvSlNPYmplY3RSZWYuY3BwCSh3b3JraW5nIGNvcHkpCkBAIC05MiwxMCArOTIsNyBAQCBKU09i
amVjdFJlZiBKU09iamVjdE1ha2VGdW5jdGlvbldpdGhDYWxsCiB7CiAgICAgRXhlY1N0YXRlKiBl
eGVjID0gdG9KUyhjdHgpOwogICAgIEFQSUVudHJ5U2hpbSBlbnRyeVNoaW0oZXhlYyk7Ci0KLSAg
ICBJZGVudGlmaWVyIG5hbWVJRCA9IG5hbWUgPyBuYW1lLT5pZGVudGlmaWVyKCZleGVjLT5nbG9i
YWxEYXRhKCkpIDogSWRlbnRpZmllcihleGVjLCAiYW5vbnltb3VzIik7Ci0gICAgCi0gICAgcmV0
dXJuIHRvUmVmKEpTQ2FsbGJhY2tGdW5jdGlvbjo6Y3JlYXRlKGV4ZWMsIGV4ZWMtPmxleGljYWxH
bG9iYWxPYmplY3QoKSwgY2FsbEFzRnVuY3Rpb24sIG5hbWVJRCkpOworICAgIHJldHVybiB0b1Jl
ZihKU0NhbGxiYWNrRnVuY3Rpb246OmNyZWF0ZShleGVjLCBleGVjLT5sZXhpY2FsR2xvYmFsT2Jq
ZWN0KCksIGNhbGxBc0Z1bmN0aW9uLCBuYW1lID8gbmFtZS0+dXN0cmluZygpIDogImFub255bW91
cyIpKTsKIH0KIAogSlNPYmplY3RSZWYgSlNPYmplY3RNYWtlQ29uc3RydWN0b3IoSlNDb250ZXh0
UmVmIGN0eCwgSlNDbGFzc1JlZiBqc0NsYXNzLCBKU09iamVjdENhbGxBc0NvbnN0cnVjdG9yQ2Fs
bGJhY2sgY2FsbEFzQ29uc3RydWN0b3IpCkluZGV4OiBTb3VyY2UvSmF2YVNjcmlwdENvcmUvSmF2
YVNjcmlwdENvcmUueGNvZGVwcm9qL3Byb2plY3QucGJ4cHJvago9PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3Vy
Y2UvSmF2YVNjcmlwdENvcmUvSmF2YVNjcmlwdENvcmUueGNvZGVwcm9qL3Byb2plY3QucGJ4cHJv
agkocmV2aXNpb24gMTE2NjcwKQorKysgU291cmNlL0phdmFTY3JpcHRDb3JlL0phdmFTY3JpcHRD
b3JlLnhjb2RlcHJvai9wcm9qZWN0LnBieHByb2oJKHdvcmtpbmcgY29weSkKQEAgLTM2Miw2ICsz
NjIsNyBAQAogCQk4NjA0RjUwNTE0M0NFMUMyMDBCMjk1RjUgLyogSlNHbG9iYWxUaGlzLmggaW4g
SGVhZGVycyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSA4NjA0RjUwMzE0M0NF
MUMxMDBCMjk1RjUgLyogSlNHbG9iYWxUaGlzLmggKi87IHNldHRpbmdzID0ge0FUVFJJQlVURVMg
PSAoUHJpdmF0ZSwgKTsgfTsgfTsKIAkJODYwQkQ4MDExNDhFQTZGMjAwMTEyQjJGIC8qIEludHJp
bnNpYy5oIGluIEhlYWRlcnMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gODZC
RjY0MkExNDhEQjJCNTAwNERFMzZBIC8qIEludHJpbnNpYy5oICovOyBzZXR0aW5ncyA9IHtBVFRS
SUJVVEVTID0gKFByaXZhdGUsICk7IH07IH07CiAJCTg2MTJFNENEMTUyMzg5RUMwMEM4MzZCRSAv
KiBNYXRjaFJlc3VsdC5oIGluIEhlYWRlcnMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxl
UmVmID0gODYxMkU0Q0IxNTIyOTE4NDAwQzgzNkJFIC8qIE1hdGNoUmVzdWx0LmggKi87IHNldHRp
bmdzID0ge0FUVFJJQlVURVMgPSAoUHJpdmF0ZSwgKTsgfTsgfTsKKwkJODYxNThBQjMxNTVDOEI0
MDAwQjQ1QzlDIC8qIFByb3BlcnR5TmFtZS5oIGluIEhlYWRlcnMgKi8gPSB7aXNhID0gUEJYQnVp
bGRGaWxlOyBmaWxlUmVmID0gODYxNThBQjIxNTVDOEIzRjAwQjQ1QzlDIC8qIFByb3BlcnR5TmFt
ZS5oICovOyBzZXR0aW5ncyA9IHtBVFRSSUJVVEVTID0gKFByaXZhdGUsICk7IH07IH07CiAJCTg2
M0IyM0UwMEZDNjExODkwMDcwM0FBNCAvKiBNYWNyb0Fzc2VtYmxlckNvZGVSZWYuaCBpbiBIZWFk
ZXJzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IDg2M0IyM0RGMEZDNjBFNjIw
MDcwM0FBNCAvKiBNYWNyb0Fzc2VtYmxlckNvZGVSZWYuaCAqLzsgc2V0dGluZ3MgPSB7QVRUUklC
VVRFUyA9IChQcml2YXRlLCApOyB9OyB9OwogCQk4NjNDNkQ5QzE1MjExMTFBMDA1ODVFNEUgLyog
WWFyckNhbm9uaWNhbGl6ZVVDUzIuY3BwIGluIFNvdXJjZXMgKi8gPSB7aXNhID0gUEJYQnVpbGRG
aWxlOyBmaWxlUmVmID0gODYzQzZEOTgxNTIxMTExMjAwNTg1RTRFIC8qIFlhcnJDYW5vbmljYWxp
emVVQ1MyLmNwcCAqLzsgfTsKIAkJODY0MkM1MTAxNTFDMDZBOTAwNDZENEVGIC8qIFJlZ0V4cENh
Y2hlZFJlc3VsdC5jcHAgaW4gU291cmNlcyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVS
ZWYgPSA4NkY3NUVGQjE1MUMwNjJGMDA3QzlCQTMgLyogUmVnRXhwQ2FjaGVkUmVzdWx0LmNwcCAq
LzsgfTsKQEAgLTEwMjAsNiArMTAyMSw3IEBACiAJCTg2MDRGNEYyMTQzQTZDNDQwMEIyOTVGNSAv
KiBDaGFuZ2VMb2cgKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgbGFzdEtub3duRmlsZVR5
cGUgPSB0ZXh0OyBwYXRoID0gQ2hhbmdlTG9nOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9Owog
CQk4NjA0RjUwMzE0M0NFMUMxMDBCMjk1RjUgLyogSlNHbG9iYWxUaGlzLmggKi8gPSB7aXNhID0g
UEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSBz
b3VyY2Vjb2RlLmMuaDsgcGF0aCA9IEpTR2xvYmFsVGhpcy5oOyBzb3VyY2VUcmVlID0gIjxncm91
cD4iOyB9OwogCQk4NjEyRTRDQjE1MjI5MTg0MDBDODM2QkUgLyogTWF0Y2hSZXN1bHQuaCAqLyA9
IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxl
VHlwZSA9IHNvdXJjZWNvZGUuYy5oOyBwYXRoID0gTWF0Y2hSZXN1bHQuaDsgc291cmNlVHJlZSA9
ICI8Z3JvdXA+IjsgfTsKKwkJODYxNThBQjIxNTVDOEIzRjAwQjQ1QzlDIC8qIFByb3BlcnR5TmFt
ZS5oICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RL
bm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jLmg7IHBhdGggPSBQcm9wZXJ0eU5hbWUuaDsgc291
cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKIAkJODYzQjIzREYwRkM2MEU2MjAwNzAzQUE0IC8qIE1h
Y3JvQXNzZW1ibGVyQ29kZVJlZi5oICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVF
bmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jLmg7IHBhdGggPSBN
YWNyb0Fzc2VtYmxlckNvZGVSZWYuaDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKIAkJODYz
QzZEOTgxNTIxMTExMjAwNTg1RTRFIC8qIFlhcnJDYW5vbmljYWxpemVVQ1MyLmNwcCAqLyA9IHtp
c2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlw
ZSA9IHNvdXJjZWNvZGUuY3BwLmNwcDsgbmFtZSA9IFlhcnJDYW5vbmljYWxpemVVQ1MyLmNwcDsg
cGF0aCA9IHlhcnIvWWFyckNhbm9uaWNhbGl6ZVVDUzIuY3BwOyBzb3VyY2VUcmVlID0gIjxncm91
cD4iOyB9OwogCQk4NjNDNkQ5OTE1MjExMTEyMDA1ODVFNEUgLyogWWFyckNhbm9uaWNhbGl6ZVVD
UzIuaCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0
S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuYy5oOyBuYW1lID0gWWFyckNhbm9uaWNhbGl6ZVVD
UzIuaDsgcGF0aCA9IHlhcnIvWWFyckNhbm9uaWNhbGl6ZVVDUzIuaDsgc291cmNlVHJlZSA9ICI8
Z3JvdXA+IjsgfTsKQEAgLTE5MzYsNiArMTkzOCw3IEBACiAJCQkJQTdGQjYwQTMxMDNGN0RDMjAw
MTdBMjg2IC8qIFByb3BlcnR5RGVzY3JpcHRvci5jcHAgKi8sCiAJCQkJQTdGQjYwNEIxMDNGNUVB
QjAwMTdBMjg2IC8qIFByb3BlcnR5RGVzY3JpcHRvci5oICovLAogCQkJCUJDOTU0MzdDMEVCQTcw
RkQwMDcyQjZEMyAvKiBQcm9wZXJ0eU1hcEhhc2hUYWJsZS5oICovLAorCQkJCTg2MTU4QUIyMTU1
QzhCM0YwMEI0NUM5QyAvKiBQcm9wZXJ0eU5hbWUuaCAqLywKIAkJCQk2NTQwMEMwRjBBNjlCQUYy
MDA1MDk4ODcgLyogUHJvcGVydHlOYW1lQXJyYXkuY3BwICovLAogCQkJCTY1NDAwQzEwMEE2OUJB
RjIwMDUwOTg4NyAvKiBQcm9wZXJ0eU5hbWVBcnJheS5oICovLAogCQkJCTY1NjIxRTZCMDg5RTg1
OTcwMDc2MEYzNSAvKiBQcm9wZXJ0eVNsb3QuY3BwICovLApAQCAtMjU4MCw2ICsyNTgzLDcgQEAK
IAkJCQkwRjFFM0E0NzE1MzRDQkI5MDAwRjk0NTYgLyogREZHRG91YmxlRm9ybWF0U3RhdGUuaCBp
biBIZWFkZXJzICovLAogCQkJCTE0MTUwMTMzMTU0QkIxM0YwMDVEOEM5OCAvKiBXZWFrU2V0SW5s
aW5lcy5oIGluIEhlYWRlcnMgKi8sCiAJCQkJMTQ4MTZFMUMxNTRDQzU2QzAwQjgwNTRDIC8qIEJs
b2NrQWxsb2NhdG9yLmggaW4gSGVhZGVycyAqLywKKwkJCQk4NjE1OEFCMzE1NUM4QjQwMDBCNDVD
OUMgLyogUHJvcGVydHlOYW1lLmggaW4gSGVhZGVycyAqLywKIAkJCSk7CiAJCQlydW5Pbmx5Rm9y
RGVwbG95bWVudFBvc3Rwcm9jZXNzaW5nID0gMDsKIAkJfTsKSW5kZXg6IFNvdXJjZS9KYXZhU2Ny
aXB0Q29yZS9kZWJ1Z2dlci9EZWJ1Z2dlckFjdGl2YXRpb24uY3BwCj09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNv
dXJjZS9KYXZhU2NyaXB0Q29yZS9kZWJ1Z2dlci9EZWJ1Z2dlckFjdGl2YXRpb24uY3BwCShyZXZp
c2lvbiAxMTY2NjcpCisrKyBTb3VyY2UvSmF2YVNjcmlwdENvcmUvZGVidWdnZXIvRGVidWdnZXJB
Y3RpdmF0aW9uLmNwcAkod29ya2luZyBjb3B5KQpAQCAtNjUsMjUgKzY1LDI1IEBAIFVTdHJpbmcg
RGVidWdnZXJBY3RpdmF0aW9uOjpjbGFzc05hbWUoY28KICAgICByZXR1cm4gdGhpc09iamVjdC0+
bV9hY3RpdmF0aW9uLT5tZXRob2RUYWJsZSgpLT5jbGFzc05hbWUodGhpc09iamVjdC0+bV9hY3Rp
dmF0aW9uLmdldCgpKTsKIH0KIAotYm9vbCBEZWJ1Z2dlckFjdGl2YXRpb246OmdldE93blByb3Bl
cnR5U2xvdChKU0NlbGwqIGNlbGwsIEV4ZWNTdGF0ZSogZXhlYywgY29uc3QgSWRlbnRpZmllciYg
cHJvcGVydHlOYW1lLCBQcm9wZXJ0eVNsb3QmIHNsb3QpCitib29sIERlYnVnZ2VyQWN0aXZhdGlv
bjo6Z2V0T3duUHJvcGVydHlTbG90KEpTQ2VsbCogY2VsbCwgRXhlY1N0YXRlKiBleGVjLCBQcm9w
ZXJ0eU5hbWUgcHJvcGVydHlOYW1lLCBQcm9wZXJ0eVNsb3QmIHNsb3QpCiB7CiAgICAgRGVidWdn
ZXJBY3RpdmF0aW9uKiB0aGlzT2JqZWN0ID0ganNDYXN0PERlYnVnZ2VyQWN0aXZhdGlvbio+KGNl
bGwpOwogICAgIHJldHVybiB0aGlzT2JqZWN0LT5tX2FjdGl2YXRpb24tPm1ldGhvZFRhYmxlKCkt
PmdldE93blByb3BlcnR5U2xvdCh0aGlzT2JqZWN0LT5tX2FjdGl2YXRpb24uZ2V0KCksIGV4ZWMs
IHByb3BlcnR5TmFtZSwgc2xvdCk7CiB9CiAKLXZvaWQgRGVidWdnZXJBY3RpdmF0aW9uOjpwdXQo
SlNDZWxsKiBjZWxsLCBFeGVjU3RhdGUqIGV4ZWMsIGNvbnN0IElkZW50aWZpZXImIHByb3BlcnR5
TmFtZSwgSlNWYWx1ZSB2YWx1ZSwgUHV0UHJvcGVydHlTbG90JiBzbG90KQordm9pZCBEZWJ1Z2dl
ckFjdGl2YXRpb246OnB1dChKU0NlbGwqIGNlbGwsIEV4ZWNTdGF0ZSogZXhlYywgUHJvcGVydHlO
YW1lIHByb3BlcnR5TmFtZSwgSlNWYWx1ZSB2YWx1ZSwgUHV0UHJvcGVydHlTbG90JiBzbG90KQog
ewogICAgIERlYnVnZ2VyQWN0aXZhdGlvbiogdGhpc09iamVjdCA9IGpzQ2FzdDxEZWJ1Z2dlckFj
dGl2YXRpb24qPihjZWxsKTsKICAgICB0aGlzT2JqZWN0LT5tX2FjdGl2YXRpb24tPm1ldGhvZFRh
YmxlKCktPnB1dCh0aGlzT2JqZWN0LT5tX2FjdGl2YXRpb24uZ2V0KCksIGV4ZWMsIHByb3BlcnR5
TmFtZSwgdmFsdWUsIHNsb3QpOwogfQogCi12b2lkIERlYnVnZ2VyQWN0aXZhdGlvbjo6cHV0RGly
ZWN0VmlydHVhbChKU09iamVjdCogb2JqZWN0LCBFeGVjU3RhdGUqIGV4ZWMsIGNvbnN0IElkZW50
aWZpZXImIHByb3BlcnR5TmFtZSwgSlNWYWx1ZSB2YWx1ZSwgdW5zaWduZWQgYXR0cmlidXRlcykK
K3ZvaWQgRGVidWdnZXJBY3RpdmF0aW9uOjpwdXREaXJlY3RWaXJ0dWFsKEpTT2JqZWN0KiBvYmpl
Y3QsIEV4ZWNTdGF0ZSogZXhlYywgUHJvcGVydHlOYW1lIHByb3BlcnR5TmFtZSwgSlNWYWx1ZSB2
YWx1ZSwgdW5zaWduZWQgYXR0cmlidXRlcykKIHsKICAgICBEZWJ1Z2dlckFjdGl2YXRpb24qIHRo
aXNPYmplY3QgPSBqc0Nhc3Q8RGVidWdnZXJBY3RpdmF0aW9uKj4ob2JqZWN0KTsKICAgICB0aGlz
T2JqZWN0LT5tX2FjdGl2YXRpb24tPm1ldGhvZFRhYmxlKCktPnB1dERpcmVjdFZpcnR1YWwodGhp
c09iamVjdC0+bV9hY3RpdmF0aW9uLmdldCgpLCBleGVjLCBwcm9wZXJ0eU5hbWUsIHZhbHVlLCBh
dHRyaWJ1dGVzKTsKIH0KIAotYm9vbCBEZWJ1Z2dlckFjdGl2YXRpb246OmRlbGV0ZVByb3BlcnR5
KEpTQ2VsbCogY2VsbCwgRXhlY1N0YXRlKiBleGVjLCBjb25zdCBJZGVudGlmaWVyJiBwcm9wZXJ0
eU5hbWUpCitib29sIERlYnVnZ2VyQWN0aXZhdGlvbjo6ZGVsZXRlUHJvcGVydHkoSlNDZWxsKiBj
ZWxsLCBFeGVjU3RhdGUqIGV4ZWMsIFByb3BlcnR5TmFtZSBwcm9wZXJ0eU5hbWUpCiB7CiAgICAg
RGVidWdnZXJBY3RpdmF0aW9uKiB0aGlzT2JqZWN0ID0ganNDYXN0PERlYnVnZ2VyQWN0aXZhdGlv
bio+KGNlbGwpOwogICAgIHJldHVybiB0aGlzT2JqZWN0LT5tX2FjdGl2YXRpb24tPm1ldGhvZFRh
YmxlKCktPmRlbGV0ZVByb3BlcnR5KHRoaXNPYmplY3QtPm1fYWN0aXZhdGlvbi5nZXQoKSwgZXhl
YywgcHJvcGVydHlOYW1lKTsKQEAgLTk1LDEzICs5NSwxMyBAQCB2b2lkIERlYnVnZ2VyQWN0aXZh
dGlvbjo6Z2V0T3duUHJvcGVydHlOCiAgICAgdGhpc09iamVjdC0+bV9hY3RpdmF0aW9uLT5tZXRo
b2RUYWJsZSgpLT5nZXRQcm9wZXJ0eU5hbWVzKHRoaXNPYmplY3QtPm1fYWN0aXZhdGlvbi5nZXQo
KSwgZXhlYywgcHJvcGVydHlOYW1lcywgbW9kZSk7CiB9CiAKLWJvb2wgRGVidWdnZXJBY3RpdmF0
aW9uOjpnZXRPd25Qcm9wZXJ0eURlc2NyaXB0b3IoSlNPYmplY3QqIG9iamVjdCwgRXhlY1N0YXRl
KiBleGVjLCBjb25zdCBJZGVudGlmaWVyJiBwcm9wZXJ0eU5hbWUsIFByb3BlcnR5RGVzY3JpcHRv
ciYgZGVzY3JpcHRvcikKK2Jvb2wgRGVidWdnZXJBY3RpdmF0aW9uOjpnZXRPd25Qcm9wZXJ0eURl
c2NyaXB0b3IoSlNPYmplY3QqIG9iamVjdCwgRXhlY1N0YXRlKiBleGVjLCBQcm9wZXJ0eU5hbWUg
cHJvcGVydHlOYW1lLCBQcm9wZXJ0eURlc2NyaXB0b3ImIGRlc2NyaXB0b3IpCiB7CiAgICAgRGVi
dWdnZXJBY3RpdmF0aW9uKiB0aGlzT2JqZWN0ID0ganNDYXN0PERlYnVnZ2VyQWN0aXZhdGlvbio+
KG9iamVjdCk7CiAgICAgcmV0dXJuIHRoaXNPYmplY3QtPm1fYWN0aXZhdGlvbi0+bWV0aG9kVGFi
bGUoKS0+Z2V0T3duUHJvcGVydHlEZXNjcmlwdG9yKHRoaXNPYmplY3QtPm1fYWN0aXZhdGlvbi5n
ZXQoKSwgZXhlYywgcHJvcGVydHlOYW1lLCBkZXNjcmlwdG9yKTsKIH0KIAotYm9vbCBEZWJ1Z2dl
ckFjdGl2YXRpb246OmRlZmluZU93blByb3BlcnR5KEpTT2JqZWN0KiBvYmplY3QsIEV4ZWNTdGF0
ZSogZXhlYywgY29uc3QgSWRlbnRpZmllciYgcHJvcGVydHlOYW1lLCBQcm9wZXJ0eURlc2NyaXB0
b3ImIGRlc2NyaXB0b3IsIGJvb2wgc2hvdWxkVGhyb3cpCitib29sIERlYnVnZ2VyQWN0aXZhdGlv
bjo6ZGVmaW5lT3duUHJvcGVydHkoSlNPYmplY3QqIG9iamVjdCwgRXhlY1N0YXRlKiBleGVjLCBQ
cm9wZXJ0eU5hbWUgcHJvcGVydHlOYW1lLCBQcm9wZXJ0eURlc2NyaXB0b3ImIGRlc2NyaXB0b3Is
IGJvb2wgc2hvdWxkVGhyb3cpCiB7CiAgICAgRGVidWdnZXJBY3RpdmF0aW9uKiB0aGlzT2JqZWN0
ID0ganNDYXN0PERlYnVnZ2VyQWN0aXZhdGlvbio+KG9iamVjdCk7CiAgICAgcmV0dXJuIHRoaXNP
YmplY3QtPm1fYWN0aXZhdGlvbi0+bWV0aG9kVGFibGUoKS0+ZGVmaW5lT3duUHJvcGVydHkodGhp
c09iamVjdC0+bV9hY3RpdmF0aW9uLmdldCgpLCBleGVjLCBwcm9wZXJ0eU5hbWUsIGRlc2NyaXB0
b3IsIHNob3VsZFRocm93KTsKSW5kZXg6IFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9kZWJ1Z2dlci9E
ZWJ1Z2dlckFjdGl2YXRpb24uaAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvSmF2YVNjcmlwdENvcmUv
ZGVidWdnZXIvRGVidWdnZXJBY3RpdmF0aW9uLmgJKHJldmlzaW9uIDExNjY2NykKKysrIFNvdXJj
ZS9KYXZhU2NyaXB0Q29yZS9kZWJ1Z2dlci9EZWJ1Z2dlckFjdGl2YXRpb24uaAkod29ya2luZyBj
b3B5KQpAQCAtNDMsMTMgKzQzLDEzIEBAIG5hbWVzcGFjZSBKU0MgewogCiAgICAgICAgIHN0YXRp
YyB2b2lkIHZpc2l0Q2hpbGRyZW4oSlNDZWxsKiwgU2xvdFZpc2l0b3ImKTsKICAgICAgICAgc3Rh
dGljIFVTdHJpbmcgY2xhc3NOYW1lKGNvbnN0IEpTT2JqZWN0Kik7Ci0gICAgICAgIHN0YXRpYyBi
b29sIGdldE93blByb3BlcnR5U2xvdChKU0NlbGwqLCBFeGVjU3RhdGUqLCBjb25zdCBJZGVudGlm
aWVyJiBwcm9wZXJ0eU5hbWUsIFByb3BlcnR5U2xvdCYpOwotICAgICAgICBzdGF0aWMgdm9pZCBw
dXQoSlNDZWxsKiwgRXhlY1N0YXRlKiwgY29uc3QgSWRlbnRpZmllciYgcHJvcGVydHlOYW1lLCBK
U1ZhbHVlLCBQdXRQcm9wZXJ0eVNsb3QmKTsKLSAgICAgICAgc3RhdGljIHZvaWQgcHV0RGlyZWN0
VmlydHVhbChKU09iamVjdCosIEV4ZWNTdGF0ZSosIGNvbnN0IElkZW50aWZpZXImIHByb3BlcnR5
TmFtZSwgSlNWYWx1ZSwgdW5zaWduZWQgYXR0cmlidXRlcyk7Ci0gICAgICAgIHN0YXRpYyBib29s
IGRlbGV0ZVByb3BlcnR5KEpTQ2VsbCosIEV4ZWNTdGF0ZSosIGNvbnN0IElkZW50aWZpZXImIHBy
b3BlcnR5TmFtZSk7CisgICAgICAgIHN0YXRpYyBib29sIGdldE93blByb3BlcnR5U2xvdChKU0Nl
bGwqLCBFeGVjU3RhdGUqLCBQcm9wZXJ0eU5hbWUgcHJvcGVydHlOYW1lLCBQcm9wZXJ0eVNsb3Qm
KTsKKyAgICAgICAgc3RhdGljIHZvaWQgcHV0KEpTQ2VsbCosIEV4ZWNTdGF0ZSosIFByb3BlcnR5
TmFtZSBwcm9wZXJ0eU5hbWUsIEpTVmFsdWUsIFB1dFByb3BlcnR5U2xvdCYpOworICAgICAgICBz
dGF0aWMgdm9pZCBwdXREaXJlY3RWaXJ0dWFsKEpTT2JqZWN0KiwgRXhlY1N0YXRlKiwgUHJvcGVy
dHlOYW1lIHByb3BlcnR5TmFtZSwgSlNWYWx1ZSwgdW5zaWduZWQgYXR0cmlidXRlcyk7CisgICAg
ICAgIHN0YXRpYyBib29sIGRlbGV0ZVByb3BlcnR5KEpTQ2VsbCosIEV4ZWNTdGF0ZSosIFByb3Bl
cnR5TmFtZSBwcm9wZXJ0eU5hbWUpOwogICAgICAgICBzdGF0aWMgdm9pZCBnZXRPd25Qcm9wZXJ0
eU5hbWVzKEpTT2JqZWN0KiwgRXhlY1N0YXRlKiwgUHJvcGVydHlOYW1lQXJyYXkmLCBFbnVtZXJh
dGlvbk1vZGUpOwotICAgICAgICBzdGF0aWMgYm9vbCBnZXRPd25Qcm9wZXJ0eURlc2NyaXB0b3Io
SlNPYmplY3QqLCBFeGVjU3RhdGUqLCBjb25zdCBJZGVudGlmaWVyJiwgUHJvcGVydHlEZXNjcmlw
dG9yJik7Ci0gICAgICAgIHN0YXRpYyBib29sIGRlZmluZU93blByb3BlcnR5KEpTT2JqZWN0Kiwg
RXhlY1N0YXRlKiwgY29uc3QgSWRlbnRpZmllciYgcHJvcGVydHlOYW1lLCBQcm9wZXJ0eURlc2Ny
aXB0b3ImLCBib29sIHNob3VsZFRocm93KTsKKyAgICAgICAgc3RhdGljIGJvb2wgZ2V0T3duUHJv
cGVydHlEZXNjcmlwdG9yKEpTT2JqZWN0KiwgRXhlY1N0YXRlKiwgUHJvcGVydHlOYW1lLCBQcm9w
ZXJ0eURlc2NyaXB0b3ImKTsKKyAgICAgICAgc3RhdGljIGJvb2wgZGVmaW5lT3duUHJvcGVydHko
SlNPYmplY3QqLCBFeGVjU3RhdGUqLCBQcm9wZXJ0eU5hbWUgcHJvcGVydHlOYW1lLCBQcm9wZXJ0
eURlc2NyaXB0b3ImLCBib29sIHNob3VsZFRocm93KTsKIAogICAgICAgICBKU19FWFBPUlREQVRB
IHN0YXRpYyBjb25zdCBDbGFzc0luZm8gc19pbmZvOwogCkluZGV4OiBTb3VyY2UvSmF2YVNjcmlw
dENvcmUvcnVudGltZS9Bcmd1bWVudHMuY3BwCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9KYXZhU2Ny
aXB0Q29yZS9ydW50aW1lL0FyZ3VtZW50cy5jcHAJKHJldmlzaW9uIDExNjY2NykKKysrIFNvdXJj
ZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL0FyZ3VtZW50cy5jcHAJKHdvcmtpbmcgY29weSkKQEAg
LTEyNCwxMiArMTI0LDEyIEBAIHZvaWQgQXJndW1lbnRzOjpjcmVhdGVTdHJpY3RNb2RlQ2FsbGVl
SWYKICAgICBtZXRob2RUYWJsZSgpLT5kZWZpbmVPd25Qcm9wZXJ0eSh0aGlzLCBleGVjLCBleGVj
LT5wcm9wZXJ0eU5hbWVzKCkuY2FsbGVlLCBkZXNjcmlwdG9yLCBmYWxzZSk7CiB9CiAKLWJvb2wg
QXJndW1lbnRzOjpnZXRPd25Qcm9wZXJ0eVNsb3QoSlNDZWxsKiBjZWxsLCBFeGVjU3RhdGUqIGV4
ZWMsIGNvbnN0IElkZW50aWZpZXImIHByb3BlcnR5TmFtZSwgUHJvcGVydHlTbG90JiBzbG90KQor
Ym9vbCBBcmd1bWVudHM6OmdldE93blByb3BlcnR5U2xvdChKU0NlbGwqIGNlbGwsIEV4ZWNTdGF0
ZSogZXhlYywgUHJvcGVydHlOYW1lIHByb3BlcnR5TmFtZSwgUHJvcGVydHlTbG90JiBzbG90KQog
ewogICAgIEFyZ3VtZW50cyogdGhpc09iamVjdCA9IGpzQ2FzdDxBcmd1bWVudHMqPihjZWxsKTsK
LSAgICBib29sIGlzQXJyYXlJbmRleDsKLSAgICB1bnNpZ25lZCBpID0gcHJvcGVydHlOYW1lLnRv
QXJyYXlJbmRleChpc0FycmF5SW5kZXgpOwotICAgIGlmIChpc0FycmF5SW5kZXggJiYgaSA8IHRo
aXNPYmplY3QtPmQtPm51bUFyZ3VtZW50cyAmJiAoIXRoaXNPYmplY3QtPmQtPmRlbGV0ZWRBcmd1
bWVudHMgfHwgIXRoaXNPYmplY3QtPmQtPmRlbGV0ZWRBcmd1bWVudHNbaV0pKSB7CisgICAgdW5z
aWduZWQgaSA9IHByb3BlcnR5TmFtZS5hc0luZGV4KCk7CisgICAgaWYgKGkgPCB0aGlzT2JqZWN0
LT5kLT5udW1Bcmd1bWVudHMgJiYgKCF0aGlzT2JqZWN0LT5kLT5kZWxldGVkQXJndW1lbnRzIHx8
ICF0aGlzT2JqZWN0LT5kLT5kZWxldGVkQXJndW1lbnRzW2ldKSkgeworICAgICAgICBBU1NFUlQo
aSA8IFByb3BlcnR5TmFtZTo6Tm90QW5JbmRleCk7CiAgICAgICAgIHNsb3Quc2V0VmFsdWUodGhp
c09iamVjdC0+YXJndW1lbnQoaSkuZ2V0KCkpOwogICAgICAgICByZXR1cm4gdHJ1ZTsKICAgICB9
CkBAIC0xNTMsMTIgKzE1MywxMiBAQCBib29sIEFyZ3VtZW50czo6Z2V0T3duUHJvcGVydHlTbG90
KEpTQ2VsCiAgICAgcmV0dXJuIEpTT2JqZWN0OjpnZXRPd25Qcm9wZXJ0eVNsb3QodGhpc09iamVj
dCwgZXhlYywgcHJvcGVydHlOYW1lLCBzbG90KTsKIH0KIAotYm9vbCBBcmd1bWVudHM6OmdldE93
blByb3BlcnR5RGVzY3JpcHRvcihKU09iamVjdCogb2JqZWN0LCBFeGVjU3RhdGUqIGV4ZWMsIGNv
bnN0IElkZW50aWZpZXImIHByb3BlcnR5TmFtZSwgUHJvcGVydHlEZXNjcmlwdG9yJiBkZXNjcmlw
dG9yKQorYm9vbCBBcmd1bWVudHM6OmdldE93blByb3BlcnR5RGVzY3JpcHRvcihKU09iamVjdCog
b2JqZWN0LCBFeGVjU3RhdGUqIGV4ZWMsIFByb3BlcnR5TmFtZSBwcm9wZXJ0eU5hbWUsIFByb3Bl
cnR5RGVzY3JpcHRvciYgZGVzY3JpcHRvcikKIHsKICAgICBBcmd1bWVudHMqIHRoaXNPYmplY3Qg
PSBqc0Nhc3Q8QXJndW1lbnRzKj4ob2JqZWN0KTsKLSAgICBib29sIGlzQXJyYXlJbmRleDsKLSAg
ICB1bnNpZ25lZCBpID0gcHJvcGVydHlOYW1lLnRvQXJyYXlJbmRleChpc0FycmF5SW5kZXgpOwot
ICAgIGlmIChpc0FycmF5SW5kZXggJiYgaSA8IHRoaXNPYmplY3QtPmQtPm51bUFyZ3VtZW50cyAm
JiAoIXRoaXNPYmplY3QtPmQtPmRlbGV0ZWRBcmd1bWVudHMgfHwgIXRoaXNPYmplY3QtPmQtPmRl
bGV0ZWRBcmd1bWVudHNbaV0pKSB7CisgICAgdW5zaWduZWQgaSA9IHByb3BlcnR5TmFtZS5hc0lu
ZGV4KCk7CisgICAgaWYgKGkgPCB0aGlzT2JqZWN0LT5kLT5udW1Bcmd1bWVudHMgJiYgKCF0aGlz
T2JqZWN0LT5kLT5kZWxldGVkQXJndW1lbnRzIHx8ICF0aGlzT2JqZWN0LT5kLT5kZWxldGVkQXJn
dW1lbnRzW2ldKSkgeworICAgICAgICBBU1NFUlQoaSA8IFByb3BlcnR5TmFtZTo6Tm90QW5JbmRl
eCk7CiAgICAgICAgIGRlc2NyaXB0b3Iuc2V0RGVzY3JpcHRvcih0aGlzT2JqZWN0LT5hcmd1bWVu
dChpKS5nZXQoKSwgTm9uZSk7CiAgICAgICAgIHJldHVybiB0cnVlOwogICAgIH0KQEAgLTIwOCwx
MiArMjA4LDEyIEBAIHZvaWQgQXJndW1lbnRzOjpwdXRCeUluZGV4KEpTQ2VsbCogY2VsbCwKICAg
ICBKU09iamVjdDo6cHV0KHRoaXNPYmplY3QsIGV4ZWMsIElkZW50aWZpZXIoZXhlYywgVVN0cmlu
Zzo6bnVtYmVyKGkpKSwgdmFsdWUsIHNsb3QpOwogfQogCi12b2lkIEFyZ3VtZW50czo6cHV0KEpT
Q2VsbCogY2VsbCwgRXhlY1N0YXRlKiBleGVjLCBjb25zdCBJZGVudGlmaWVyJiBwcm9wZXJ0eU5h
bWUsIEpTVmFsdWUgdmFsdWUsIFB1dFByb3BlcnR5U2xvdCYgc2xvdCkKK3ZvaWQgQXJndW1lbnRz
OjpwdXQoSlNDZWxsKiBjZWxsLCBFeGVjU3RhdGUqIGV4ZWMsIFByb3BlcnR5TmFtZSBwcm9wZXJ0
eU5hbWUsIEpTVmFsdWUgdmFsdWUsIFB1dFByb3BlcnR5U2xvdCYgc2xvdCkKIHsKICAgICBBcmd1
bWVudHMqIHRoaXNPYmplY3QgPSBqc0Nhc3Q8QXJndW1lbnRzKj4oY2VsbCk7Ci0gICAgYm9vbCBp
c0FycmF5SW5kZXg7Ci0gICAgdW5zaWduZWQgaSA9IHByb3BlcnR5TmFtZS50b0FycmF5SW5kZXgo
aXNBcnJheUluZGV4KTsKLSAgICBpZiAoaXNBcnJheUluZGV4ICYmIGkgPCB0aGlzT2JqZWN0LT5k
LT5udW1Bcmd1bWVudHMgJiYgKCF0aGlzT2JqZWN0LT5kLT5kZWxldGVkQXJndW1lbnRzIHx8ICF0
aGlzT2JqZWN0LT5kLT5kZWxldGVkQXJndW1lbnRzW2ldKSkgeworICAgIHVuc2lnbmVkIGkgPSBw
cm9wZXJ0eU5hbWUuYXNJbmRleCgpOworICAgIGlmIChpIDwgdGhpc09iamVjdC0+ZC0+bnVtQXJn
dW1lbnRzICYmICghdGhpc09iamVjdC0+ZC0+ZGVsZXRlZEFyZ3VtZW50cyB8fCAhdGhpc09iamVj
dC0+ZC0+ZGVsZXRlZEFyZ3VtZW50c1tpXSkpIHsKKyAgICAgICAgQVNTRVJUKGkgPCBQcm9wZXJ0
eU5hbWU6Ok5vdEFuSW5kZXgpOwogICAgICAgICB0aGlzT2JqZWN0LT5hcmd1bWVudChpKS5zZXQo
ZXhlYy0+Z2xvYmFsRGF0YSgpLCB0aGlzT2JqZWN0LCB2YWx1ZSk7CiAgICAgICAgIHJldHVybjsK
ICAgICB9CkBAIC0yNTksMTUgKzI1OSwxNSBAQCBib29sIEFyZ3VtZW50czo6ZGVsZXRlUHJvcGVy
dHlCeUluZGV4KEpTCiAgICAgcmV0dXJuIEpTT2JqZWN0OjpkZWxldGVQcm9wZXJ0eSh0aGlzT2Jq
ZWN0LCBleGVjLCBJZGVudGlmaWVyKGV4ZWMsIFVTdHJpbmc6Om51bWJlcihpKSkpOwogfQogCi1i
b29sIEFyZ3VtZW50czo6ZGVsZXRlUHJvcGVydHkoSlNDZWxsKiBjZWxsLCBFeGVjU3RhdGUqIGV4
ZWMsIGNvbnN0IElkZW50aWZpZXImIHByb3BlcnR5TmFtZSkgCitib29sIEFyZ3VtZW50czo6ZGVs
ZXRlUHJvcGVydHkoSlNDZWxsKiBjZWxsLCBFeGVjU3RhdGUqIGV4ZWMsIFByb3BlcnR5TmFtZSBw
cm9wZXJ0eU5hbWUpIAogewogICAgIGlmIChleGVjLT5nbG9iYWxEYXRhKCkuaXNJbkRlZmluZU93
blByb3BlcnR5KCkpCiAgICAgICAgIHJldHVybiBCYXNlOjpkZWxldGVQcm9wZXJ0eShjZWxsLCBl
eGVjLCBwcm9wZXJ0eU5hbWUpOwogCiAgICAgQXJndW1lbnRzKiB0aGlzT2JqZWN0ID0ganNDYXN0
PEFyZ3VtZW50cyo+KGNlbGwpOwotICAgIGJvb2wgaXNBcnJheUluZGV4OwotICAgIHVuc2lnbmVk
IGkgPSBwcm9wZXJ0eU5hbWUudG9BcnJheUluZGV4KGlzQXJyYXlJbmRleCk7Ci0gICAgaWYgKGlz
QXJyYXlJbmRleCAmJiBpIDwgdGhpc09iamVjdC0+ZC0+bnVtQXJndW1lbnRzKSB7CisgICAgdW5z
aWduZWQgaSA9IHByb3BlcnR5TmFtZS5hc0luZGV4KCk7CisgICAgaWYgKGkgPCB0aGlzT2JqZWN0
LT5kLT5udW1Bcmd1bWVudHMpIHsKKyAgICAgICAgQVNTRVJUKGkgPCBQcm9wZXJ0eU5hbWU6Ok5v
dEFuSW5kZXgpOwogICAgICAgICBpZiAoIUJhc2U6OmRlbGV0ZVByb3BlcnR5KGNlbGwsIGV4ZWMs
IHByb3BlcnR5TmFtZSkpCiAgICAgICAgICAgICByZXR1cm4gZmFsc2U7CiAKQEAgLTMwMCwxMiAr
MzAwLDEyIEBAIGJvb2wgQXJndW1lbnRzOjpkZWxldGVQcm9wZXJ0eShKU0NlbGwqIGMKICAgICBy
ZXR1cm4gSlNPYmplY3Q6OmRlbGV0ZVByb3BlcnR5KHRoaXNPYmplY3QsIGV4ZWMsIHByb3BlcnR5
TmFtZSk7CiB9CiAKLWJvb2wgQXJndW1lbnRzOjpkZWZpbmVPd25Qcm9wZXJ0eShKU09iamVjdCog
b2JqZWN0LCBFeGVjU3RhdGUqIGV4ZWMsIGNvbnN0IElkZW50aWZpZXImIHByb3BlcnR5TmFtZSwg
UHJvcGVydHlEZXNjcmlwdG9yJiBkZXNjcmlwdG9yLCBib29sIHNob3VsZFRocm93KQorYm9vbCBB
cmd1bWVudHM6OmRlZmluZU93blByb3BlcnR5KEpTT2JqZWN0KiBvYmplY3QsIEV4ZWNTdGF0ZSog
ZXhlYywgUHJvcGVydHlOYW1lIHByb3BlcnR5TmFtZSwgUHJvcGVydHlEZXNjcmlwdG9yJiBkZXNj
cmlwdG9yLCBib29sIHNob3VsZFRocm93KQogewogICAgIEFyZ3VtZW50cyogdGhpc09iamVjdCA9
IGpzQ2FzdDxBcmd1bWVudHMqPihvYmplY3QpOwotICAgIGJvb2wgaXNBcnJheUluZGV4OwotICAg
IHVuc2lnbmVkIGkgPSBwcm9wZXJ0eU5hbWUudG9BcnJheUluZGV4KGlzQXJyYXlJbmRleCk7Ci0g
ICAgaWYgKGlzQXJyYXlJbmRleCAmJiBpIDwgdGhpc09iamVjdC0+ZC0+bnVtQXJndW1lbnRzKSB7
CisgICAgdW5zaWduZWQgaSA9IHByb3BlcnR5TmFtZS5hc0luZGV4KCk7CisgICAgaWYgKGkgPCB0
aGlzT2JqZWN0LT5kLT5udW1Bcmd1bWVudHMpIHsKKyAgICAgICAgQVNTRVJUKGkgPCBQcm9wZXJ0
eU5hbWU6Ok5vdEFuSW5kZXgpOwogICAgICAgICAvLyBJZiB0aGUgcHJvcGVydHkgaXMgbm90IHll
dCBwcmVzZW50IG9uIHRoZSBvYmplY3QsIGFuZCBpcyBub3QgeWV0IG1hcmtlZCBhcyBkZWxldGVk
LCB0aGVuIGFkZCBpdCBub3cuCiAgICAgICAgIFByb3BlcnR5U2xvdCBzbG90OwogICAgICAgICBp
ZiAoKCF0aGlzT2JqZWN0LT5kLT5kZWxldGVkQXJndW1lbnRzIHx8ICF0aGlzT2JqZWN0LT5kLT5k
ZWxldGVkQXJndW1lbnRzW2ldKSAmJiAhSlNPYmplY3Q6OmdldE93blByb3BlcnR5U2xvdCh0aGlz
T2JqZWN0LCBleGVjLCBwcm9wZXJ0eU5hbWUsIHNsb3QpKQpJbmRleDogU291cmNlL0phdmFTY3Jp
cHRDb3JlL3J1bnRpbWUvQXJndW1lbnRzLmgKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL0phdmFTY3Jp
cHRDb3JlL3J1bnRpbWUvQXJndW1lbnRzLmgJKHJldmlzaW9uIDExNjY2NykKKysrIFNvdXJjZS9K
YXZhU2NyaXB0Q29yZS9ydW50aW1lL0FyZ3VtZW50cy5oCSh3b3JraW5nIGNvcHkpCkBAIC0xMDks
MTUgKzEwOSwxNSBAQCBuYW1lc3BhY2UgSlNDIHsKIAogICAgIHByaXZhdGU6CiAgICAgICAgIHN0
YXRpYyB2b2lkIGRlc3Ryb3koSlNDZWxsKik7Ci0gICAgICAgIHN0YXRpYyBib29sIGdldE93blBy
b3BlcnR5U2xvdChKU0NlbGwqLCBFeGVjU3RhdGUqLCBjb25zdCBJZGVudGlmaWVyJiBwcm9wZXJ0
eU5hbWUsIFByb3BlcnR5U2xvdCYpOworICAgICAgICBzdGF0aWMgYm9vbCBnZXRPd25Qcm9wZXJ0
eVNsb3QoSlNDZWxsKiwgRXhlY1N0YXRlKiwgUHJvcGVydHlOYW1lIHByb3BlcnR5TmFtZSwgUHJv
cGVydHlTbG90Jik7CiAgICAgICAgIHN0YXRpYyBib29sIGdldE93blByb3BlcnR5U2xvdEJ5SW5k
ZXgoSlNDZWxsKiwgRXhlY1N0YXRlKiwgdW5zaWduZWQgcHJvcGVydHlOYW1lLCBQcm9wZXJ0eVNs
b3QmKTsKLSAgICAgICAgc3RhdGljIGJvb2wgZ2V0T3duUHJvcGVydHlEZXNjcmlwdG9yKEpTT2Jq
ZWN0KiwgRXhlY1N0YXRlKiwgY29uc3QgSWRlbnRpZmllciYsIFByb3BlcnR5RGVzY3JpcHRvciYp
OworICAgICAgICBzdGF0aWMgYm9vbCBnZXRPd25Qcm9wZXJ0eURlc2NyaXB0b3IoSlNPYmplY3Qq
LCBFeGVjU3RhdGUqLCBQcm9wZXJ0eU5hbWUsIFByb3BlcnR5RGVzY3JpcHRvciYpOwogICAgICAg
ICBzdGF0aWMgdm9pZCBnZXRPd25Qcm9wZXJ0eU5hbWVzKEpTT2JqZWN0KiwgRXhlY1N0YXRlKiwg
UHJvcGVydHlOYW1lQXJyYXkmLCBFbnVtZXJhdGlvbk1vZGUpOwotICAgICAgICBzdGF0aWMgdm9p
ZCBwdXQoSlNDZWxsKiwgRXhlY1N0YXRlKiwgY29uc3QgSWRlbnRpZmllciYgcHJvcGVydHlOYW1l
LCBKU1ZhbHVlLCBQdXRQcm9wZXJ0eVNsb3QmKTsKKyAgICAgICAgc3RhdGljIHZvaWQgcHV0KEpT
Q2VsbCosIEV4ZWNTdGF0ZSosIFByb3BlcnR5TmFtZSBwcm9wZXJ0eU5hbWUsIEpTVmFsdWUsIFB1
dFByb3BlcnR5U2xvdCYpOwogICAgICAgICBzdGF0aWMgdm9pZCBwdXRCeUluZGV4KEpTQ2VsbCos
IEV4ZWNTdGF0ZSosIHVuc2lnbmVkIHByb3BlcnR5TmFtZSwgSlNWYWx1ZSwgYm9vbCBzaG91bGRU
aHJvdyk7Ci0gICAgICAgIHN0YXRpYyBib29sIGRlbGV0ZVByb3BlcnR5KEpTQ2VsbCosIEV4ZWNT
dGF0ZSosIGNvbnN0IElkZW50aWZpZXImIHByb3BlcnR5TmFtZSk7CisgICAgICAgIHN0YXRpYyBi
b29sIGRlbGV0ZVByb3BlcnR5KEpTQ2VsbCosIEV4ZWNTdGF0ZSosIFByb3BlcnR5TmFtZSBwcm9w
ZXJ0eU5hbWUpOwogICAgICAgICBzdGF0aWMgYm9vbCBkZWxldGVQcm9wZXJ0eUJ5SW5kZXgoSlND
ZWxsKiwgRXhlY1N0YXRlKiwgdW5zaWduZWQgcHJvcGVydHlOYW1lKTsKLSAgICAgICAgc3RhdGlj
IGJvb2wgZGVmaW5lT3duUHJvcGVydHkoSlNPYmplY3QqLCBFeGVjU3RhdGUqLCBjb25zdCBJZGVu
dGlmaWVyJiBwcm9wZXJ0eU5hbWUsIFByb3BlcnR5RGVzY3JpcHRvciYsIGJvb2wgc2hvdWxkVGhy
b3cpOworICAgICAgICBzdGF0aWMgYm9vbCBkZWZpbmVPd25Qcm9wZXJ0eShKU09iamVjdCosIEV4
ZWNTdGF0ZSosIFByb3BlcnR5TmFtZSBwcm9wZXJ0eU5hbWUsIFByb3BlcnR5RGVzY3JpcHRvciYs
IGJvb2wgc2hvdWxkVGhyb3cpOwogICAgICAgICB2b2lkIGNyZWF0ZVN0cmljdE1vZGVDYWxsZXJJ
Zk5lY2Vzc2FyeShFeGVjU3RhdGUqKTsKICAgICAgICAgdm9pZCBjcmVhdGVTdHJpY3RNb2RlQ2Fs
bGVlSWZOZWNlc3NhcnkoRXhlY1N0YXRlKik7CiAKSW5kZXg6IFNvdXJjZS9KYXZhU2NyaXB0Q29y
ZS9ydW50aW1lL0FycmF5Q29uc3RydWN0b3IuY3BwCj09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9KYXZh
U2NyaXB0Q29yZS9ydW50aW1lL0FycmF5Q29uc3RydWN0b3IuY3BwCShyZXZpc2lvbiAxMTY2Njcp
CisrKyBTb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9BcnJheUNvbnN0cnVjdG9yLmNwcAko
d29ya2luZyBjb3B5KQpAQCAtNjAsMTcgKzYwLDE3IEBAIEFycmF5Q29uc3RydWN0b3I6OkFycmF5
Q29uc3RydWN0b3IoSlNHbG8KIAogdm9pZCBBcnJheUNvbnN0cnVjdG9yOjpmaW5pc2hDcmVhdGlv
bihFeGVjU3RhdGUqIGV4ZWMsIEFycmF5UHJvdG90eXBlKiBhcnJheVByb3RvdHlwZSkKIHsKLSAg
ICBCYXNlOjpmaW5pc2hDcmVhdGlvbihleGVjLT5nbG9iYWxEYXRhKCksIElkZW50aWZpZXIoZXhl
YywgYXJyYXlQcm90b3R5cGUtPmNsYXNzSW5mbygpLT5jbGFzc05hbWUpKTsKKyAgICBCYXNlOjpm
aW5pc2hDcmVhdGlvbihleGVjLT5nbG9iYWxEYXRhKCksIGFycmF5UHJvdG90eXBlLT5jbGFzc0lu
Zm8oKS0+Y2xhc3NOYW1lKTsKICAgICBwdXREaXJlY3RXaXRob3V0VHJhbnNpdGlvbihleGVjLT5n
bG9iYWxEYXRhKCksIGV4ZWMtPnByb3BlcnR5TmFtZXMoKS5wcm90b3R5cGUsIGFycmF5UHJvdG90
eXBlLCBEb250RW51bSB8IERvbnREZWxldGUgfCBSZWFkT25seSk7CiAgICAgcHV0RGlyZWN0V2l0
aG91dFRyYW5zaXRpb24oZXhlYy0+Z2xvYmFsRGF0YSgpLCBleGVjLT5wcm9wZXJ0eU5hbWVzKCku
bGVuZ3RoLCBqc051bWJlcigxKSwgUmVhZE9ubHkgfCBEb250RW51bSB8IERvbnREZWxldGUpOwog
fQogCi1ib29sIEFycmF5Q29uc3RydWN0b3I6OmdldE93blByb3BlcnR5U2xvdChKU0NlbGwqIGNl
bGwsIEV4ZWNTdGF0ZSogZXhlYywgY29uc3QgSWRlbnRpZmllciYgcHJvcGVydHlOYW1lLCBQcm9w
ZXJ0eVNsb3QgJnNsb3QpCitib29sIEFycmF5Q29uc3RydWN0b3I6OmdldE93blByb3BlcnR5U2xv
dChKU0NlbGwqIGNlbGwsIEV4ZWNTdGF0ZSogZXhlYywgUHJvcGVydHlOYW1lIHByb3BlcnR5TmFt
ZSwgUHJvcGVydHlTbG90ICZzbG90KQogewogICAgIHJldHVybiBnZXRTdGF0aWNGdW5jdGlvblNs
b3Q8SW50ZXJuYWxGdW5jdGlvbj4oZXhlYywgRXhlY1N0YXRlOjphcnJheUNvbnN0cnVjdG9yVGFi
bGUoZXhlYyksIGpzQ2FzdDxBcnJheUNvbnN0cnVjdG9yKj4oY2VsbCksIHByb3BlcnR5TmFtZSwg
c2xvdCk7CiB9CiAKLWJvb2wgQXJyYXlDb25zdHJ1Y3Rvcjo6Z2V0T3duUHJvcGVydHlEZXNjcmlw
dG9yKEpTT2JqZWN0KiBvYmplY3QsIEV4ZWNTdGF0ZSogZXhlYywgY29uc3QgSWRlbnRpZmllciYg
cHJvcGVydHlOYW1lLCBQcm9wZXJ0eURlc2NyaXB0b3ImIGRlc2NyaXB0b3IpCitib29sIEFycmF5
Q29uc3RydWN0b3I6OmdldE93blByb3BlcnR5RGVzY3JpcHRvcihKU09iamVjdCogb2JqZWN0LCBF
eGVjU3RhdGUqIGV4ZWMsIFByb3BlcnR5TmFtZSBwcm9wZXJ0eU5hbWUsIFByb3BlcnR5RGVzY3Jp
cHRvciYgZGVzY3JpcHRvcikKIHsKICAgICByZXR1cm4gZ2V0U3RhdGljRnVuY3Rpb25EZXNjcmlw
dG9yPEludGVybmFsRnVuY3Rpb24+KGV4ZWMsIEV4ZWNTdGF0ZTo6YXJyYXlDb25zdHJ1Y3RvclRh
YmxlKGV4ZWMpLCBqc0Nhc3Q8QXJyYXlDb25zdHJ1Y3Rvcio+KG9iamVjdCksIHByb3BlcnR5TmFt
ZSwgZGVzY3JpcHRvcik7CiB9CkluZGV4OiBTb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9B
cnJheUNvbnN0cnVjdG9yLmgKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL0phdmFTY3JpcHRDb3JlL3J1
bnRpbWUvQXJyYXlDb25zdHJ1Y3Rvci5oCShyZXZpc2lvbiAxMTY2NjcpCisrKyBTb3VyY2UvSmF2
YVNjcmlwdENvcmUvcnVudGltZS9BcnJheUNvbnN0cnVjdG9yLmgJKHdvcmtpbmcgY29weSkKQEAg
LTUxLDkgKzUxLDkgQEAgbmFtZXNwYWNlIEpTQyB7CiAKICAgICBwcml2YXRlOgogICAgICAgICBB
cnJheUNvbnN0cnVjdG9yKEpTR2xvYmFsT2JqZWN0KiwgU3RydWN0dXJlKik7Ci0gICAgICAgIHN0
YXRpYyBib29sIGdldE93blByb3BlcnR5U2xvdChKU0NlbGwqLCBFeGVjU3RhdGUqLCBjb25zdCBJ
ZGVudGlmaWVyJiwgUHJvcGVydHlTbG90Jik7CisgICAgICAgIHN0YXRpYyBib29sIGdldE93blBy
b3BlcnR5U2xvdChKU0NlbGwqLCBFeGVjU3RhdGUqLCBQcm9wZXJ0eU5hbWUsIFByb3BlcnR5U2xv
dCYpOwogCi0gICAgICAgIHN0YXRpYyBib29sIGdldE93blByb3BlcnR5RGVzY3JpcHRvcihKU09i
amVjdCosIEV4ZWNTdGF0ZSosIGNvbnN0IElkZW50aWZpZXImLCBQcm9wZXJ0eURlc2NyaXB0b3Im
KTsKKyAgICAgICAgc3RhdGljIGJvb2wgZ2V0T3duUHJvcGVydHlEZXNjcmlwdG9yKEpTT2JqZWN0
KiwgRXhlY1N0YXRlKiwgUHJvcGVydHlOYW1lLCBQcm9wZXJ0eURlc2NyaXB0b3ImKTsKIAogICAg
ICAgICBzdGF0aWMgQ29uc3RydWN0VHlwZSBnZXRDb25zdHJ1Y3REYXRhKEpTQ2VsbCosIENvbnN0
cnVjdERhdGEmKTsKICAgICAgICAgc3RhdGljIENhbGxUeXBlIGdldENhbGxEYXRhKEpTQ2VsbCos
IENhbGxEYXRhJik7CkluZGV4OiBTb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9BcnJheVBy
b3RvdHlwZS5jcHAKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUv
QXJyYXlQcm90b3R5cGUuY3BwCShyZXZpc2lvbiAxMTY2NjcpCisrKyBTb3VyY2UvSmF2YVNjcmlw
dENvcmUvcnVudGltZS9BcnJheVByb3RvdHlwZS5jcHAJKHdvcmtpbmcgY29weSkKQEAgLTEyNiwx
MiArMTI2LDEyIEBAIHZvaWQgQXJyYXlQcm90b3R5cGU6OmZpbmlzaENyZWF0aW9uKEpTR2wKICAg
ICBBU1NFUlQoaW5oZXJpdHMoJnNfaW5mbykpOwogfQogCi1ib29sIEFycmF5UHJvdG90eXBlOjpn
ZXRPd25Qcm9wZXJ0eVNsb3QoSlNDZWxsKiBjZWxsLCBFeGVjU3RhdGUqIGV4ZWMsIGNvbnN0IElk
ZW50aWZpZXImIHByb3BlcnR5TmFtZSwgUHJvcGVydHlTbG90JiBzbG90KQorYm9vbCBBcnJheVBy
b3RvdHlwZTo6Z2V0T3duUHJvcGVydHlTbG90KEpTQ2VsbCogY2VsbCwgRXhlY1N0YXRlKiBleGVj
LCBQcm9wZXJ0eU5hbWUgcHJvcGVydHlOYW1lLCBQcm9wZXJ0eVNsb3QmIHNsb3QpCiB7CiAgICAg
cmV0dXJuIGdldFN0YXRpY0Z1bmN0aW9uU2xvdDxKU0FycmF5PihleGVjLCBFeGVjU3RhdGU6OmFy
cmF5UHJvdG90eXBlVGFibGUoZXhlYyksIGpzQ2FzdDxBcnJheVByb3RvdHlwZSo+KGNlbGwpLCBw
cm9wZXJ0eU5hbWUsIHNsb3QpOwogfQogCi1ib29sIEFycmF5UHJvdG90eXBlOjpnZXRPd25Qcm9w
ZXJ0eURlc2NyaXB0b3IoSlNPYmplY3QqIG9iamVjdCwgRXhlY1N0YXRlKiBleGVjLCBjb25zdCBJ
ZGVudGlmaWVyJiBwcm9wZXJ0eU5hbWUsIFByb3BlcnR5RGVzY3JpcHRvciYgZGVzY3JpcHRvcikK
K2Jvb2wgQXJyYXlQcm90b3R5cGU6OmdldE93blByb3BlcnR5RGVzY3JpcHRvcihKU09iamVjdCog
b2JqZWN0LCBFeGVjU3RhdGUqIGV4ZWMsIFByb3BlcnR5TmFtZSBwcm9wZXJ0eU5hbWUsIFByb3Bl
cnR5RGVzY3JpcHRvciYgZGVzY3JpcHRvcikKIHsKICAgICByZXR1cm4gZ2V0U3RhdGljRnVuY3Rp
b25EZXNjcmlwdG9yPEpTQXJyYXk+KGV4ZWMsIEV4ZWNTdGF0ZTo6YXJyYXlQcm90b3R5cGVUYWJs
ZShleGVjKSwganNDYXN0PEFycmF5UHJvdG90eXBlKj4ob2JqZWN0KSwgcHJvcGVydHlOYW1lLCBk
ZXNjcmlwdG9yKTsKIH0KQEAgLTE0Nyw3ICsxNDcsNyBAQCBzdGF0aWMgSlNWYWx1ZSBnZXRQcm9w
ZXJ0eShFeGVjU3RhdGUqIGV4CiAgICAgcmV0dXJuIHNsb3QuZ2V0VmFsdWUoZXhlYywgaW5kZXgp
OwogfQogCi1zdGF0aWMgdm9pZCBwdXRQcm9wZXJ0eShFeGVjU3RhdGUqIGV4ZWMsIEpTT2JqZWN0
KiBvYmosIGNvbnN0IElkZW50aWZpZXImIHByb3BlcnR5TmFtZSwgSlNWYWx1ZSB2YWx1ZSkKK3N0
YXRpYyB2b2lkIHB1dFByb3BlcnR5KEV4ZWNTdGF0ZSogZXhlYywgSlNPYmplY3QqIG9iaiwgUHJv
cGVydHlOYW1lIHByb3BlcnR5TmFtZSwgSlNWYWx1ZSB2YWx1ZSkKIHsKICAgICBQdXRQcm9wZXJ0
eVNsb3Qgc2xvdDsKICAgICBvYmotPm1ldGhvZFRhYmxlKCktPnB1dChvYmosIGV4ZWMsIHByb3Bl
cnR5TmFtZSwgdmFsdWUsIHNsb3QpOwpJbmRleDogU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRp
bWUvQXJyYXlQcm90b3R5cGUuaAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvSmF2YVNjcmlwdENvcmUv
cnVudGltZS9BcnJheVByb3RvdHlwZS5oCShyZXZpc2lvbiAxMTY2NjcpCisrKyBTb3VyY2UvSmF2
YVNjcmlwdENvcmUvcnVudGltZS9BcnJheVByb3RvdHlwZS5oCSh3b3JraW5nIGNvcHkpCkBAIC00
MCw4ICs0MCw4IEBAIG5hbWVzcGFjZSBKU0MgewogICAgICAgICAgICAgcmV0dXJuIHByb3RvdHlw
ZTsKICAgICAgICAgfQogICAgICAgICAKLSAgICAgICAgc3RhdGljIGJvb2wgZ2V0T3duUHJvcGVy
dHlTbG90KEpTQ2VsbCosIEV4ZWNTdGF0ZSosIGNvbnN0IElkZW50aWZpZXImLCBQcm9wZXJ0eVNs
b3QmKTsKLSAgICAgICAgc3RhdGljIGJvb2wgZ2V0T3duUHJvcGVydHlEZXNjcmlwdG9yKEpTT2Jq
ZWN0KiwgRXhlY1N0YXRlKiwgY29uc3QgSWRlbnRpZmllciYsIFByb3BlcnR5RGVzY3JpcHRvciYp
OworICAgICAgICBzdGF0aWMgYm9vbCBnZXRPd25Qcm9wZXJ0eVNsb3QoSlNDZWxsKiwgRXhlY1N0
YXRlKiwgUHJvcGVydHlOYW1lLCBQcm9wZXJ0eVNsb3QmKTsKKyAgICAgICAgc3RhdGljIGJvb2wg
Z2V0T3duUHJvcGVydHlEZXNjcmlwdG9yKEpTT2JqZWN0KiwgRXhlY1N0YXRlKiwgUHJvcGVydHlO
YW1lLCBQcm9wZXJ0eURlc2NyaXB0b3ImKTsKIAogICAgICAgICBzdGF0aWMgY29uc3QgQ2xhc3NJ
bmZvIHNfaW5mbzsKIApJbmRleDogU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvQm9vbGVh
bkNvbnN0cnVjdG9yLmNwcAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVu
dGltZS9Cb29sZWFuQ29uc3RydWN0b3IuY3BwCShyZXZpc2lvbiAxMTY2NjcpCisrKyBTb3VyY2Uv
SmF2YVNjcmlwdENvcmUvcnVudGltZS9Cb29sZWFuQ29uc3RydWN0b3IuY3BwCSh3b3JraW5nIGNv
cHkpCkBAIC0zOCw3ICszOCw3IEBAIEJvb2xlYW5Db25zdHJ1Y3Rvcjo6Qm9vbGVhbkNvbnN0cnVj
dG9yKEoKIAogdm9pZCBCb29sZWFuQ29uc3RydWN0b3I6OmZpbmlzaENyZWF0aW9uKEV4ZWNTdGF0
ZSogZXhlYywgQm9vbGVhblByb3RvdHlwZSogYm9vbGVhblByb3RvdHlwZSkKIHsKLSAgICBCYXNl
OjpmaW5pc2hDcmVhdGlvbihleGVjLT5nbG9iYWxEYXRhKCksIElkZW50aWZpZXIoZXhlYywgYm9v
bGVhblByb3RvdHlwZS0+Y2xhc3NJbmZvKCktPmNsYXNzTmFtZSkpOworICAgIEJhc2U6OmZpbmlz
aENyZWF0aW9uKGV4ZWMtPmdsb2JhbERhdGEoKSwgYm9vbGVhblByb3RvdHlwZS0+Y2xhc3NJbmZv
KCktPmNsYXNzTmFtZSk7CiAgICAgcHV0RGlyZWN0V2l0aG91dFRyYW5zaXRpb24oZXhlYy0+Z2xv
YmFsRGF0YSgpLCBleGVjLT5wcm9wZXJ0eU5hbWVzKCkucHJvdG90eXBlLCBib29sZWFuUHJvdG90
eXBlLCBEb250RW51bSB8IERvbnREZWxldGUgfCBSZWFkT25seSk7CiAKICAgICAvLyBuby4gb2Yg
YXJndW1lbnRzIGZvciBjb25zdHJ1Y3RvcgpJbmRleDogU291cmNlL0phdmFTY3JpcHRDb3JlL3J1
bnRpbWUvQm9vbGVhblByb3RvdHlwZS5jcHAKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL0phdmFTY3Jp
cHRDb3JlL3J1bnRpbWUvQm9vbGVhblByb3RvdHlwZS5jcHAJKHJldmlzaW9uIDExNjY2NykKKysr
IFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL0Jvb2xlYW5Qcm90b3R5cGUuY3BwCSh3b3Jr
aW5nIGNvcHkpCkBAIC02MywxMiArNjMsMTIgQEAgdm9pZCBCb29sZWFuUHJvdG90eXBlOjpmaW5p
c2hDcmVhdGlvbihFeAogICAgIEFTU0VSVChpbmhlcml0cygmc19pbmZvKSk7CiB9CiAKLWJvb2wg
Qm9vbGVhblByb3RvdHlwZTo6Z2V0T3duUHJvcGVydHlTbG90KEpTQ2VsbCogY2VsbCwgRXhlY1N0
YXRlKiBleGVjLCBjb25zdCBJZGVudGlmaWVyJiBwcm9wZXJ0eU5hbWUsIFByb3BlcnR5U2xvdCAm
c2xvdCkKK2Jvb2wgQm9vbGVhblByb3RvdHlwZTo6Z2V0T3duUHJvcGVydHlTbG90KEpTQ2VsbCog
Y2VsbCwgRXhlY1N0YXRlKiBleGVjLCBQcm9wZXJ0eU5hbWUgcHJvcGVydHlOYW1lLCBQcm9wZXJ0
eVNsb3QgJnNsb3QpCiB7CiAgICAgcmV0dXJuIGdldFN0YXRpY0Z1bmN0aW9uU2xvdDxCb29sZWFu
T2JqZWN0PihleGVjLCBFeGVjU3RhdGU6OmJvb2xlYW5Qcm90b3R5cGVUYWJsZShleGVjKSwganND
YXN0PEJvb2xlYW5Qcm90b3R5cGUqPihjZWxsKSwgcHJvcGVydHlOYW1lLCBzbG90KTsKIH0KIAot
Ym9vbCBCb29sZWFuUHJvdG90eXBlOjpnZXRPd25Qcm9wZXJ0eURlc2NyaXB0b3IoSlNPYmplY3Qq
IG9iamVjdCwgRXhlY1N0YXRlKiBleGVjLCBjb25zdCBJZGVudGlmaWVyJiBwcm9wZXJ0eU5hbWUs
IFByb3BlcnR5RGVzY3JpcHRvciYgZGVzY3JpcHRvcikKK2Jvb2wgQm9vbGVhblByb3RvdHlwZTo6
Z2V0T3duUHJvcGVydHlEZXNjcmlwdG9yKEpTT2JqZWN0KiBvYmplY3QsIEV4ZWNTdGF0ZSogZXhl
YywgUHJvcGVydHlOYW1lIHByb3BlcnR5TmFtZSwgUHJvcGVydHlEZXNjcmlwdG9yJiBkZXNjcmlw
dG9yKQogewogICAgIHJldHVybiBnZXRTdGF0aWNGdW5jdGlvbkRlc2NyaXB0b3I8Qm9vbGVhbk9i
amVjdD4oZXhlYywgRXhlY1N0YXRlOjpib29sZWFuUHJvdG90eXBlVGFibGUoZXhlYyksIGpzQ2Fz
dDxCb29sZWFuUHJvdG90eXBlKj4ob2JqZWN0KSwgcHJvcGVydHlOYW1lLCBkZXNjcmlwdG9yKTsK
IH0KSW5kZXg6IFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL0Jvb2xlYW5Qcm90b3R5cGUu
aAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09Ci0tLSBTb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9Cb29sZWFuUHJv
dG90eXBlLmgJKHJldmlzaW9uIDExNjY2NykKKysrIFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50
aW1lL0Jvb2xlYW5Qcm90b3R5cGUuaAkod29ya2luZyBjb3B5KQpAQCAtNDksOSArNDksOSBAQCBu
YW1lc3BhY2UgSlNDIHsKIAogICAgIHByaXZhdGU6CiAgICAgICAgIEJvb2xlYW5Qcm90b3R5cGUo
RXhlY1N0YXRlKiwgU3RydWN0dXJlKik7Ci0gICAgICAgIHN0YXRpYyBib29sIGdldE93blByb3Bl
cnR5U2xvdChKU0NlbGwqLCBFeGVjU3RhdGUqLCBjb25zdCBJZGVudGlmaWVyJiwgUHJvcGVydHlT
bG90Jik7CisgICAgICAgIHN0YXRpYyBib29sIGdldE93blByb3BlcnR5U2xvdChKU0NlbGwqLCBF
eGVjU3RhdGUqLCBQcm9wZXJ0eU5hbWUsIFByb3BlcnR5U2xvdCYpOwogCi0gICAgICAgIHN0YXRp
YyBib29sIGdldE93blByb3BlcnR5RGVzY3JpcHRvcihKU09iamVjdCosIEV4ZWNTdGF0ZSosIGNv
bnN0IElkZW50aWZpZXImLCBQcm9wZXJ0eURlc2NyaXB0b3ImKTsKKyAgICAgICAgc3RhdGljIGJv
b2wgZ2V0T3duUHJvcGVydHlEZXNjcmlwdG9yKEpTT2JqZWN0KiwgRXhlY1N0YXRlKiwgUHJvcGVy
dHlOYW1lLCBQcm9wZXJ0eURlc2NyaXB0b3ImKTsKICAgICB9OwogCiB9IC8vIG5hbWVzcGFjZSBK
U0MKSW5kZXg6IFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL0NsYXNzSW5mby5oCj09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT0KLS0tIFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL0NsYXNzSW5mby5oCShyZXZp
c2lvbiAxMTY2NjcpCisrKyBTb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9DbGFzc0luZm8u
aAkod29ya2luZyBjb3B5KQpAQCAtNDUsMTkgKzQ1LDE5IEBAIG5hbWVzcGFjZSBKU0MgewogICAg
ICAgICB0eXBlZGVmIENvbnN0cnVjdFR5cGUgKCpHZXRDb25zdHJ1Y3REYXRhRnVuY3Rpb25QdHIp
KEpTQ2VsbCosIENvbnN0cnVjdERhdGEmKTsKICAgICAgICAgR2V0Q29uc3RydWN0RGF0YUZ1bmN0
aW9uUHRyIGdldENvbnN0cnVjdERhdGE7CiAKLSAgICAgICAgdHlwZWRlZiB2b2lkICgqUHV0RnVu
Y3Rpb25QdHIpKEpTQ2VsbCosIEV4ZWNTdGF0ZSosIGNvbnN0IElkZW50aWZpZXImIHByb3BlcnR5
TmFtZSwgSlNWYWx1ZSwgUHV0UHJvcGVydHlTbG90Jik7CisgICAgICAgIHR5cGVkZWYgdm9pZCAo
KlB1dEZ1bmN0aW9uUHRyKShKU0NlbGwqLCBFeGVjU3RhdGUqLCBQcm9wZXJ0eU5hbWUgcHJvcGVy
dHlOYW1lLCBKU1ZhbHVlLCBQdXRQcm9wZXJ0eVNsb3QmKTsKICAgICAgICAgUHV0RnVuY3Rpb25Q
dHIgcHV0OwogCiAgICAgICAgIHR5cGVkZWYgdm9pZCAoKlB1dEJ5SW5kZXhGdW5jdGlvblB0ciko
SlNDZWxsKiwgRXhlY1N0YXRlKiwgdW5zaWduZWQgcHJvcGVydHlOYW1lLCBKU1ZhbHVlLCBib29s
IHNob3VsZFRocm93KTsKICAgICAgICAgUHV0QnlJbmRleEZ1bmN0aW9uUHRyIHB1dEJ5SW5kZXg7
CiAKLSAgICAgICAgdHlwZWRlZiBib29sICgqRGVsZXRlUHJvcGVydHlGdW5jdGlvblB0cikoSlND
ZWxsKiwgRXhlY1N0YXRlKiwgY29uc3QgSWRlbnRpZmllciYpOworICAgICAgICB0eXBlZGVmIGJv
b2wgKCpEZWxldGVQcm9wZXJ0eUZ1bmN0aW9uUHRyKShKU0NlbGwqLCBFeGVjU3RhdGUqLCBQcm9w
ZXJ0eU5hbWUpOwogICAgICAgICBEZWxldGVQcm9wZXJ0eUZ1bmN0aW9uUHRyIGRlbGV0ZVByb3Bl
cnR5OwogCiAgICAgICAgIHR5cGVkZWYgYm9vbCAoKkRlbGV0ZVByb3BlcnR5QnlJbmRleEZ1bmN0
aW9uUHRyKShKU0NlbGwqLCBFeGVjU3RhdGUqLCB1bnNpZ25lZCk7CiAgICAgICAgIERlbGV0ZVBy
b3BlcnR5QnlJbmRleEZ1bmN0aW9uUHRyIGRlbGV0ZVByb3BlcnR5QnlJbmRleDsKIAotICAgICAg
ICB0eXBlZGVmIGJvb2wgKCpHZXRPd25Qcm9wZXJ0eVNsb3RGdW5jdGlvblB0cikoSlNDZWxsKiwg
RXhlY1N0YXRlKiwgY29uc3QgSWRlbnRpZmllciYsIFByb3BlcnR5U2xvdCYpOworICAgICAgICB0
eXBlZGVmIGJvb2wgKCpHZXRPd25Qcm9wZXJ0eVNsb3RGdW5jdGlvblB0cikoSlNDZWxsKiwgRXhl
Y1N0YXRlKiwgUHJvcGVydHlOYW1lLCBQcm9wZXJ0eVNsb3QmKTsKICAgICAgICAgR2V0T3duUHJv
cGVydHlTbG90RnVuY3Rpb25QdHIgZ2V0T3duUHJvcGVydHlTbG90OwogCiAgICAgICAgIHR5cGVk
ZWYgYm9vbCAoKkdldE93blByb3BlcnR5U2xvdEJ5SW5kZXhGdW5jdGlvblB0cikoSlNDZWxsKiwg
RXhlY1N0YXRlKiwgdW5zaWduZWQsIFByb3BlcnR5U2xvdCYpOwpAQCAtODEsMTMgKzgxLDEzIEBA
IG5hbWVzcGFjZSBKU0MgewogICAgICAgICB0eXBlZGVmIGJvb2wgKCpIYXNJbnN0YW5jZUZ1bmN0
aW9uUHRyKShKU09iamVjdCosIEV4ZWNTdGF0ZSosIEpTVmFsdWUsIEpTVmFsdWUpOwogICAgICAg
ICBIYXNJbnN0YW5jZUZ1bmN0aW9uUHRyIGhhc0luc3RhbmNlOwogCi0gICAgICAgIHR5cGVkZWYg
dm9pZCAoKlB1dFdpdGhBdHRyaWJ1dGVzRnVuY3Rpb25QdHIpKEpTT2JqZWN0KiwgRXhlY1N0YXRl
KiwgY29uc3QgSWRlbnRpZmllciYgcHJvcGVydHlOYW1lLCBKU1ZhbHVlLCB1bnNpZ25lZCBhdHRy
aWJ1dGVzKTsKKyAgICAgICAgdHlwZWRlZiB2b2lkICgqUHV0V2l0aEF0dHJpYnV0ZXNGdW5jdGlv
blB0cikoSlNPYmplY3QqLCBFeGVjU3RhdGUqLCBQcm9wZXJ0eU5hbWUgcHJvcGVydHlOYW1lLCBK
U1ZhbHVlLCB1bnNpZ25lZCBhdHRyaWJ1dGVzKTsKICAgICAgICAgUHV0V2l0aEF0dHJpYnV0ZXNG
dW5jdGlvblB0ciBwdXREaXJlY3RWaXJ0dWFsOwogCi0gICAgICAgIHR5cGVkZWYgYm9vbCAoKkRl
ZmluZU93blByb3BlcnR5RnVuY3Rpb25QdHIpKEpTT2JqZWN0KiwgRXhlY1N0YXRlKiwgY29uc3Qg
SWRlbnRpZmllciYsIFByb3BlcnR5RGVzY3JpcHRvciYsIGJvb2wpOworICAgICAgICB0eXBlZGVm
IGJvb2wgKCpEZWZpbmVPd25Qcm9wZXJ0eUZ1bmN0aW9uUHRyKShKU09iamVjdCosIEV4ZWNTdGF0
ZSosIFByb3BlcnR5TmFtZSwgUHJvcGVydHlEZXNjcmlwdG9yJiwgYm9vbCk7CiAgICAgICAgIERl
ZmluZU93blByb3BlcnR5RnVuY3Rpb25QdHIgZGVmaW5lT3duUHJvcGVydHk7CiAKLSAgICAgICAg
dHlwZWRlZiBib29sICgqR2V0T3duUHJvcGVydHlEZXNjcmlwdG9yRnVuY3Rpb25QdHIpKEpTT2Jq
ZWN0KiwgRXhlY1N0YXRlKiwgY29uc3QgSWRlbnRpZmllciYsIFByb3BlcnR5RGVzY3JpcHRvciYp
OworICAgICAgICB0eXBlZGVmIGJvb2wgKCpHZXRPd25Qcm9wZXJ0eURlc2NyaXB0b3JGdW5jdGlv
blB0cikoSlNPYmplY3QqLCBFeGVjU3RhdGUqLCBQcm9wZXJ0eU5hbWUsIFByb3BlcnR5RGVzY3Jp
cHRvciYpOwogICAgICAgICBHZXRPd25Qcm9wZXJ0eURlc2NyaXB0b3JGdW5jdGlvblB0ciBnZXRP
d25Qcm9wZXJ0eURlc2NyaXB0b3I7CiAgICAgfTsKIApJbmRleDogU291cmNlL0phdmFTY3JpcHRD
b3JlL3J1bnRpbWUvRGF0ZUNvbnN0cnVjdG9yLmNwcAo9PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvSmF2
YVNjcmlwdENvcmUvcnVudGltZS9EYXRlQ29uc3RydWN0b3IuY3BwCShyZXZpc2lvbiAxMTY2Njcp
CisrKyBTb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9EYXRlQ29uc3RydWN0b3IuY3BwCSh3
b3JraW5nIGNvcHkpCkBAIC04MSwxNyArODEsMTcgQEAgRGF0ZUNvbnN0cnVjdG9yOjpEYXRlQ29u
c3RydWN0b3IoSlNHbG9iYQogCiB2b2lkIERhdGVDb25zdHJ1Y3Rvcjo6ZmluaXNoQ3JlYXRpb24o
RXhlY1N0YXRlKiBleGVjLCBEYXRlUHJvdG90eXBlKiBkYXRlUHJvdG90eXBlKQogewotICAgIEJh
c2U6OmZpbmlzaENyZWF0aW9uKGV4ZWMtPmdsb2JhbERhdGEoKSwgSWRlbnRpZmllcihleGVjLCBk
YXRlUHJvdG90eXBlLT5jbGFzc0luZm8oKS0+Y2xhc3NOYW1lKSk7CisgICAgQmFzZTo6ZmluaXNo
Q3JlYXRpb24oZXhlYy0+Z2xvYmFsRGF0YSgpLCBkYXRlUHJvdG90eXBlLT5jbGFzc0luZm8oKS0+
Y2xhc3NOYW1lKTsKICAgICBwdXREaXJlY3RXaXRob3V0VHJhbnNpdGlvbihleGVjLT5nbG9iYWxE
YXRhKCksIGV4ZWMtPnByb3BlcnR5TmFtZXMoKS5wcm90b3R5cGUsIGRhdGVQcm90b3R5cGUsIERv
bnRFbnVtIHwgRG9udERlbGV0ZSB8IFJlYWRPbmx5KTsKICAgICBwdXREaXJlY3RXaXRob3V0VHJh
bnNpdGlvbihleGVjLT5nbG9iYWxEYXRhKCksIGV4ZWMtPnByb3BlcnR5TmFtZXMoKS5sZW5ndGgs
IGpzTnVtYmVyKDcpLCBSZWFkT25seSB8IERvbnRFbnVtIHwgRG9udERlbGV0ZSk7CiB9CiAKLWJv
b2wgRGF0ZUNvbnN0cnVjdG9yOjpnZXRPd25Qcm9wZXJ0eVNsb3QoSlNDZWxsKiBjZWxsLCBFeGVj
U3RhdGUqIGV4ZWMsIGNvbnN0IElkZW50aWZpZXImIHByb3BlcnR5TmFtZSwgUHJvcGVydHlTbG90
ICZzbG90KQorYm9vbCBEYXRlQ29uc3RydWN0b3I6OmdldE93blByb3BlcnR5U2xvdChKU0NlbGwq
IGNlbGwsIEV4ZWNTdGF0ZSogZXhlYywgUHJvcGVydHlOYW1lIHByb3BlcnR5TmFtZSwgUHJvcGVy
dHlTbG90ICZzbG90KQogewogICAgIHJldHVybiBnZXRTdGF0aWNGdW5jdGlvblNsb3Q8SW50ZXJu
YWxGdW5jdGlvbj4oZXhlYywgRXhlY1N0YXRlOjpkYXRlQ29uc3RydWN0b3JUYWJsZShleGVjKSwg
anNDYXN0PERhdGVDb25zdHJ1Y3Rvcio+KGNlbGwpLCBwcm9wZXJ0eU5hbWUsIHNsb3QpOwogfQog
Ci1ib29sIERhdGVDb25zdHJ1Y3Rvcjo6Z2V0T3duUHJvcGVydHlEZXNjcmlwdG9yKEpTT2JqZWN0
KiBvYmplY3QsIEV4ZWNTdGF0ZSogZXhlYywgY29uc3QgSWRlbnRpZmllciYgcHJvcGVydHlOYW1l
LCBQcm9wZXJ0eURlc2NyaXB0b3ImIGRlc2NyaXB0b3IpCitib29sIERhdGVDb25zdHJ1Y3Rvcjo6
Z2V0T3duUHJvcGVydHlEZXNjcmlwdG9yKEpTT2JqZWN0KiBvYmplY3QsIEV4ZWNTdGF0ZSogZXhl
YywgUHJvcGVydHlOYW1lIHByb3BlcnR5TmFtZSwgUHJvcGVydHlEZXNjcmlwdG9yJiBkZXNjcmlw
dG9yKQogewogICAgIHJldHVybiBnZXRTdGF0aWNGdW5jdGlvbkRlc2NyaXB0b3I8SW50ZXJuYWxG
dW5jdGlvbj4oZXhlYywgRXhlY1N0YXRlOjpkYXRlQ29uc3RydWN0b3JUYWJsZShleGVjKSwganND
YXN0PERhdGVDb25zdHJ1Y3Rvcio+KG9iamVjdCksIHByb3BlcnR5TmFtZSwgZGVzY3JpcHRvcik7
CiB9CkluZGV4OiBTb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9EYXRlQ29uc3RydWN0b3Iu
aAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09Ci0tLSBTb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9EYXRlQ29uc3Ry
dWN0b3IuaAkocmV2aXNpb24gMTE2NjY3KQorKysgU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRp
bWUvRGF0ZUNvbnN0cnVjdG9yLmgJKHdvcmtpbmcgY29weSkKQEAgLTU0LDkgKzU0LDkgQEAgbmFt
ZXNwYWNlIEpTQyB7CiAgICAgICAgIHN0YXRpYyBDb25zdHJ1Y3RUeXBlIGdldENvbnN0cnVjdERh
dGEoSlNDZWxsKiwgQ29uc3RydWN0RGF0YSYpOwogICAgICAgICBzdGF0aWMgQ2FsbFR5cGUgZ2V0
Q2FsbERhdGEoSlNDZWxsKiwgQ2FsbERhdGEmKTsKIAotICAgICAgICBzdGF0aWMgYm9vbCBnZXRP
d25Qcm9wZXJ0eVNsb3QoSlNDZWxsKiwgRXhlY1N0YXRlKiwgY29uc3QgSWRlbnRpZmllciYsIFBy
b3BlcnR5U2xvdCYpOworICAgICAgICBzdGF0aWMgYm9vbCBnZXRPd25Qcm9wZXJ0eVNsb3QoSlND
ZWxsKiwgRXhlY1N0YXRlKiwgUHJvcGVydHlOYW1lLCBQcm9wZXJ0eVNsb3QmKTsKIAotICAgICAg
ICBzdGF0aWMgYm9vbCBnZXRPd25Qcm9wZXJ0eURlc2NyaXB0b3IoSlNPYmplY3QqLCBFeGVjU3Rh
dGUqLCBjb25zdCBJZGVudGlmaWVyJiwgUHJvcGVydHlEZXNjcmlwdG9yJik7CisgICAgICAgIHN0
YXRpYyBib29sIGdldE93blByb3BlcnR5RGVzY3JpcHRvcihKU09iamVjdCosIEV4ZWNTdGF0ZSos
IFByb3BlcnR5TmFtZSwgUHJvcGVydHlEZXNjcmlwdG9yJik7CiAgICAgfTsKIAogICAgIEpTT2Jq
ZWN0KiBjb25zdHJ1Y3REYXRlKEV4ZWNTdGF0ZSosIEpTR2xvYmFsT2JqZWN0KiwgY29uc3QgQXJn
TGlzdCYpOwpJbmRleDogU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvRGF0ZVByb3RvdHlw
ZS5jcHAKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PQotLS0gU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvRGF0ZVBy
b3RvdHlwZS5jcHAJKHJldmlzaW9uIDExNjY2NykKKysrIFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9y
dW50aW1lL0RhdGVQcm90b3R5cGUuY3BwCSh3b3JraW5nIGNvcHkpCkBAIC00NjcsMTIgKzQ2Nywx
MiBAQCB2b2lkIERhdGVQcm90b3R5cGU6OmZpbmlzaENyZWF0aW9uKEV4ZWNTCiAgICAgLy8gVGhl
IGNvbnN0cnVjdG9yIHdpbGwgYmUgYWRkZWQgbGF0ZXIsIGFmdGVyIERhdGVDb25zdHJ1Y3RvciBo
YXMgYmVlbiBidWlsdC4KIH0KIAotYm9vbCBEYXRlUHJvdG90eXBlOjpnZXRPd25Qcm9wZXJ0eVNs
b3QoSlNDZWxsKiBjZWxsLCBFeGVjU3RhdGUqIGV4ZWMsIGNvbnN0IElkZW50aWZpZXImIHByb3Bl
cnR5TmFtZSwgUHJvcGVydHlTbG90JiBzbG90KQorYm9vbCBEYXRlUHJvdG90eXBlOjpnZXRPd25Q
cm9wZXJ0eVNsb3QoSlNDZWxsKiBjZWxsLCBFeGVjU3RhdGUqIGV4ZWMsIFByb3BlcnR5TmFtZSBw
cm9wZXJ0eU5hbWUsIFByb3BlcnR5U2xvdCYgc2xvdCkKIHsKICAgICByZXR1cm4gZ2V0U3RhdGlj
RnVuY3Rpb25TbG90PEpTT2JqZWN0PihleGVjLCBFeGVjU3RhdGU6OmRhdGVUYWJsZShleGVjKSwg
anNDYXN0PERhdGVQcm90b3R5cGUqPihjZWxsKSwgcHJvcGVydHlOYW1lLCBzbG90KTsKIH0KIAot
Ym9vbCBEYXRlUHJvdG90eXBlOjpnZXRPd25Qcm9wZXJ0eURlc2NyaXB0b3IoSlNPYmplY3QqIG9i
amVjdCwgRXhlY1N0YXRlKiBleGVjLCBjb25zdCBJZGVudGlmaWVyJiBwcm9wZXJ0eU5hbWUsIFBy
b3BlcnR5RGVzY3JpcHRvciYgZGVzY3JpcHRvcikKK2Jvb2wgRGF0ZVByb3RvdHlwZTo6Z2V0T3du
UHJvcGVydHlEZXNjcmlwdG9yKEpTT2JqZWN0KiBvYmplY3QsIEV4ZWNTdGF0ZSogZXhlYywgUHJv
cGVydHlOYW1lIHByb3BlcnR5TmFtZSwgUHJvcGVydHlEZXNjcmlwdG9yJiBkZXNjcmlwdG9yKQog
ewogICAgIHJldHVybiBnZXRTdGF0aWNGdW5jdGlvbkRlc2NyaXB0b3I8SlNPYmplY3Q+KGV4ZWMs
IEV4ZWNTdGF0ZTo6ZGF0ZVRhYmxlKGV4ZWMpLCBqc0Nhc3Q8RGF0ZVByb3RvdHlwZSo+KG9iamVj
dCksIHByb3BlcnR5TmFtZSwgZGVzY3JpcHRvcik7CiB9CkluZGV4OiBTb3VyY2UvSmF2YVNjcmlw
dENvcmUvcnVudGltZS9EYXRlUHJvdG90eXBlLmgKPT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL0phdmFT
Y3JpcHRDb3JlL3J1bnRpbWUvRGF0ZVByb3RvdHlwZS5oCShyZXZpc2lvbiAxMTY2NjcpCisrKyBT
b3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9EYXRlUHJvdG90eXBlLmgJKHdvcmtpbmcgY29w
eSkKQEAgLTQwLDkgKzQwLDkgQEAgbmFtZXNwYWNlIEpTQyB7CiAgICAgICAgICAgICBwcm90b3R5
cGUtPmZpbmlzaENyZWF0aW9uKGV4ZWMsIGdsb2JhbE9iamVjdCk7CiAgICAgICAgICAgICByZXR1
cm4gcHJvdG90eXBlOwogICAgICAgICB9Ci0gICAgICAgIHN0YXRpYyBib29sIGdldE93blByb3Bl
cnR5U2xvdChKU0NlbGwqLCBFeGVjU3RhdGUqLCBjb25zdCBJZGVudGlmaWVyJiwgUHJvcGVydHlT
bG90Jik7CisgICAgICAgIHN0YXRpYyBib29sIGdldE93blByb3BlcnR5U2xvdChKU0NlbGwqLCBF
eGVjU3RhdGUqLCBQcm9wZXJ0eU5hbWUsIFByb3BlcnR5U2xvdCYpOwogCi0gICAgICAgIHN0YXRp
YyBib29sIGdldE93blByb3BlcnR5RGVzY3JpcHRvcihKU09iamVjdCosIEV4ZWNTdGF0ZSosIGNv
bnN0IElkZW50aWZpZXImLCBQcm9wZXJ0eURlc2NyaXB0b3ImKTsKKyAgICAgICAgc3RhdGljIGJv
b2wgZ2V0T3duUHJvcGVydHlEZXNjcmlwdG9yKEpTT2JqZWN0KiwgRXhlY1N0YXRlKiwgUHJvcGVy
dHlOYW1lLCBQcm9wZXJ0eURlc2NyaXB0b3ImKTsKIAogICAgICAgICBzdGF0aWMgY29uc3QgQ2xh
c3NJbmZvIHNfaW5mbzsKIApJbmRleDogU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvRXJy
b3IuaAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9FcnJvci5o
CShyZXZpc2lvbiAxMTY2NjcpCisrKyBTb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9FcnJv
ci5oCSh3b3JraW5nIGNvcHkpCkBAIC05MCw3ICs5MCw3IEBAIG5hbWVzcGFjZSBKU0MgewogICAg
ICAgICBzdGF0aWMgU3RyaWN0TW9kZVR5cGVFcnJvckZ1bmN0aW9uKiBjcmVhdGUoRXhlY1N0YXRl
KiBleGVjLCBKU0dsb2JhbE9iamVjdCogZ2xvYmFsT2JqZWN0LCBTdHJ1Y3R1cmUqIHN0cnVjdHVy
ZSwgY29uc3QgVVN0cmluZyYgbWVzc2FnZSkKICAgICAgICAgewogICAgICAgICAgICAgU3RyaWN0
TW9kZVR5cGVFcnJvckZ1bmN0aW9uKiBmdW5jdGlvbiA9IG5ldyAoTm90TnVsbCwgYWxsb2NhdGVD
ZWxsPFN0cmljdE1vZGVUeXBlRXJyb3JGdW5jdGlvbj4oKmV4ZWMtPmhlYXAoKSkpIFN0cmljdE1v
ZGVUeXBlRXJyb3JGdW5jdGlvbihnbG9iYWxPYmplY3QsIHN0cnVjdHVyZSwgbWVzc2FnZSk7Ci0g
ICAgICAgICAgICBmdW5jdGlvbi0+ZmluaXNoQ3JlYXRpb24oZXhlYy0+Z2xvYmFsRGF0YSgpLCBl
eGVjLT5nbG9iYWxEYXRhKCkucHJvcGVydHlOYW1lcy0+ZW1wdHlJZGVudGlmaWVyKTsKKyAgICAg
ICAgICAgIGZ1bmN0aW9uLT5maW5pc2hDcmVhdGlvbihleGVjLT5nbG9iYWxEYXRhKCksICIiKTsK
ICAgICAgICAgICAgIHJldHVybiBmdW5jdGlvbjsKICAgICAgICAgfQogICAgIApJbmRleDogU291
cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvRXJyb3JDb25zdHJ1Y3Rvci5jcHAKPT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PQotLS0gU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvRXJyb3JDb25zdHJ1Y3Rvci5jcHAJ
KHJldmlzaW9uIDExNjY2NykKKysrIFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL0Vycm9y
Q29uc3RydWN0b3IuY3BwCSh3b3JraW5nIGNvcHkpCkBAIC0zOSw3ICszOSw3IEBAIEVycm9yQ29u
c3RydWN0b3I6OkVycm9yQ29uc3RydWN0b3IoSlNHbG8KIAogdm9pZCBFcnJvckNvbnN0cnVjdG9y
OjpmaW5pc2hDcmVhdGlvbihFeGVjU3RhdGUqIGV4ZWMsIEVycm9yUHJvdG90eXBlKiBlcnJvclBy
b3RvdHlwZSkKIHsKLSAgICBCYXNlOjpmaW5pc2hDcmVhdGlvbihleGVjLT5nbG9iYWxEYXRhKCks
IElkZW50aWZpZXIoZXhlYywgZXJyb3JQcm90b3R5cGUtPmNsYXNzSW5mbygpLT5jbGFzc05hbWUp
KTsKKyAgICBCYXNlOjpmaW5pc2hDcmVhdGlvbihleGVjLT5nbG9iYWxEYXRhKCksIGVycm9yUHJv
dG90eXBlLT5jbGFzc0luZm8oKS0+Y2xhc3NOYW1lKTsKICAgICAvLyBFQ01BIDE1LjExLjMuMSBF
cnJvci5wcm90b3R5cGUKICAgICBwdXREaXJlY3RXaXRob3V0VHJhbnNpdGlvbihleGVjLT5nbG9i
YWxEYXRhKCksIGV4ZWMtPnByb3BlcnR5TmFtZXMoKS5wcm90b3R5cGUsIGVycm9yUHJvdG90eXBl
LCBEb250RW51bSB8IERvbnREZWxldGUgfCBSZWFkT25seSk7CiAgICAgcHV0RGlyZWN0V2l0aG91
dFRyYW5zaXRpb24oZXhlYy0+Z2xvYmFsRGF0YSgpLCBleGVjLT5wcm9wZXJ0eU5hbWVzKCkubGVu
Z3RoLCBqc051bWJlcigxKSwgRG9udERlbGV0ZSB8IFJlYWRPbmx5IHwgRG9udEVudW0pOwpJbmRl
eDogU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvRXJyb3JQcm90b3R5cGUuY3BwCj09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT0KLS0tIFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL0Vycm9yUHJvdG90eXBlLmNw
cAkocmV2aXNpb24gMTE2NjY3KQorKysgU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvRXJy
b3JQcm90b3R5cGUuY3BwCSh3b3JraW5nIGNvcHkpCkBAIC02MywxMiArNjMsMTIgQEAgdm9pZCBF
cnJvclByb3RvdHlwZTo6ZmluaXNoQ3JlYXRpb24oRXhlYwogICAgIHB1dERpcmVjdChleGVjLT5n
bG9iYWxEYXRhKCksIGV4ZWMtPnByb3BlcnR5TmFtZXMoKS5uYW1lLCBqc05vbnRyaXZpYWxTdHJp
bmcoZXhlYywgIkVycm9yIiksIERvbnRFbnVtKTsKIH0KIAotYm9vbCBFcnJvclByb3RvdHlwZTo6
Z2V0T3duUHJvcGVydHlTbG90KEpTQ2VsbCogY2VsbCwgRXhlY1N0YXRlKiBleGVjLCBjb25zdCBJ
ZGVudGlmaWVyJiBwcm9wZXJ0eU5hbWUsIFByb3BlcnR5U2xvdCAmc2xvdCkKK2Jvb2wgRXJyb3JQ
cm90b3R5cGU6OmdldE93blByb3BlcnR5U2xvdChKU0NlbGwqIGNlbGwsIEV4ZWNTdGF0ZSogZXhl
YywgUHJvcGVydHlOYW1lIHByb3BlcnR5TmFtZSwgUHJvcGVydHlTbG90ICZzbG90KQogewogICAg
IHJldHVybiBnZXRTdGF0aWNGdW5jdGlvblNsb3Q8RXJyb3JJbnN0YW5jZT4oZXhlYywgRXhlY1N0
YXRlOjplcnJvclByb3RvdHlwZVRhYmxlKGV4ZWMpLCBqc0Nhc3Q8RXJyb3JQcm90b3R5cGUqPihj
ZWxsKSwgcHJvcGVydHlOYW1lLCBzbG90KTsKIH0KIAotYm9vbCBFcnJvclByb3RvdHlwZTo6Z2V0
T3duUHJvcGVydHlEZXNjcmlwdG9yKEpTT2JqZWN0KiBvYmplY3QsIEV4ZWNTdGF0ZSogZXhlYywg
Y29uc3QgSWRlbnRpZmllciYgcHJvcGVydHlOYW1lLCBQcm9wZXJ0eURlc2NyaXB0b3ImIGRlc2Ny
aXB0b3IpCitib29sIEVycm9yUHJvdG90eXBlOjpnZXRPd25Qcm9wZXJ0eURlc2NyaXB0b3IoSlNP
YmplY3QqIG9iamVjdCwgRXhlY1N0YXRlKiBleGVjLCBQcm9wZXJ0eU5hbWUgcHJvcGVydHlOYW1l
LCBQcm9wZXJ0eURlc2NyaXB0b3ImIGRlc2NyaXB0b3IpCiB7CiAgICAgcmV0dXJuIGdldFN0YXRp
Y0Z1bmN0aW9uRGVzY3JpcHRvcjxFcnJvckluc3RhbmNlPihleGVjLCBFeGVjU3RhdGU6OmVycm9y
UHJvdG90eXBlVGFibGUoZXhlYyksIGpzQ2FzdDxFcnJvclByb3RvdHlwZSo+KG9iamVjdCksIHBy
b3BlcnR5TmFtZSwgZGVzY3JpcHRvcik7CiB9CkluZGV4OiBTb3VyY2UvSmF2YVNjcmlwdENvcmUv
cnVudGltZS9FcnJvclByb3RvdHlwZS5oCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9KYXZhU2NyaXB0
Q29yZS9ydW50aW1lL0Vycm9yUHJvdG90eXBlLmgJKHJldmlzaW9uIDExNjY2NykKKysrIFNvdXJj
ZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL0Vycm9yUHJvdG90eXBlLmgJKHdvcmtpbmcgY29weSkK
QEAgLTUyLDggKzUyLDggQEAgbmFtZXNwYWNlIEpTQyB7CiAgICAgICAgIHN0YXRpYyBjb25zdCB1
bnNpZ25lZCBTdHJ1Y3R1cmVGbGFncyA9IE92ZXJyaWRlc0dldE93blByb3BlcnR5U2xvdCB8IEVy
cm9ySW5zdGFuY2U6OlN0cnVjdHVyZUZsYWdzOwogCiAgICAgcHJpdmF0ZToKLSAgICAgICAgc3Rh
dGljIGJvb2wgZ2V0T3duUHJvcGVydHlTbG90KEpTQ2VsbCosIEV4ZWNTdGF0ZSosIGNvbnN0IElk
ZW50aWZpZXImLCBQcm9wZXJ0eVNsb3QmKTsKLSAgICAgICAgc3RhdGljIGJvb2wgZ2V0T3duUHJv
cGVydHlEZXNjcmlwdG9yKEpTT2JqZWN0KiwgRXhlY1N0YXRlKiwgY29uc3QgSWRlbnRpZmllciYs
IFByb3BlcnR5RGVzY3JpcHRvciYpOworICAgICAgICBzdGF0aWMgYm9vbCBnZXRPd25Qcm9wZXJ0
eVNsb3QoSlNDZWxsKiwgRXhlY1N0YXRlKiwgUHJvcGVydHlOYW1lLCBQcm9wZXJ0eVNsb3QmKTsK
KyAgICAgICAgc3RhdGljIGJvb2wgZ2V0T3duUHJvcGVydHlEZXNjcmlwdG9yKEpTT2JqZWN0Kiwg
RXhlY1N0YXRlKiwgUHJvcGVydHlOYW1lLCBQcm9wZXJ0eURlc2NyaXB0b3ImKTsKICAgICB9Owog
CiB9IC8vIG5hbWVzcGFjZSBKU0MKSW5kZXg6IFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1l
L0Z1bmN0aW9uQ29uc3RydWN0b3IuY3BwCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9KYXZhU2NyaXB0
Q29yZS9ydW50aW1lL0Z1bmN0aW9uQ29uc3RydWN0b3IuY3BwCShyZXZpc2lvbiAxMTY2NjcpCisr
KyBTb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9GdW5jdGlvbkNvbnN0cnVjdG9yLmNwcAko
d29ya2luZyBjb3B5KQpAQCAtNDcsNyArNDcsNyBAQCBGdW5jdGlvbkNvbnN0cnVjdG9yOjpGdW5j
dGlvbkNvbnN0cnVjdG9yCiAKIHZvaWQgRnVuY3Rpb25Db25zdHJ1Y3Rvcjo6ZmluaXNoQ3JlYXRp
b24oRXhlY1N0YXRlKiBleGVjLCBGdW5jdGlvblByb3RvdHlwZSogZnVuY3Rpb25Qcm90b3R5cGUp
CiB7Ci0gICAgQmFzZTo6ZmluaXNoQ3JlYXRpb24oZXhlYy0+Z2xvYmFsRGF0YSgpLCBJZGVudGlm
aWVyKGV4ZWMsIGZ1bmN0aW9uUHJvdG90eXBlLT5jbGFzc0luZm8oKS0+Y2xhc3NOYW1lKSk7Cisg
ICAgQmFzZTo6ZmluaXNoQ3JlYXRpb24oZXhlYy0+Z2xvYmFsRGF0YSgpLCBmdW5jdGlvblByb3Rv
dHlwZS0+Y2xhc3NJbmZvKCktPmNsYXNzTmFtZSk7CiAgICAgcHV0RGlyZWN0V2l0aG91dFRyYW5z
aXRpb24oZXhlYy0+Z2xvYmFsRGF0YSgpLCBleGVjLT5wcm9wZXJ0eU5hbWVzKCkucHJvdG90eXBl
LCBmdW5jdGlvblByb3RvdHlwZSwgRG9udEVudW0gfCBEb250RGVsZXRlIHwgUmVhZE9ubHkpOwog
CiAgICAgLy8gTnVtYmVyIG9mIGFyZ3VtZW50cyBmb3IgY29uc3RydWN0b3IKSW5kZXg6IFNvdXJj
ZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL0Z1bmN0aW9uUHJvdG90eXBlLmNwcAo9PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
Ci0tLSBTb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9GdW5jdGlvblByb3RvdHlwZS5jcHAJ
KHJldmlzaW9uIDExNjY2NykKKysrIFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL0Z1bmN0
aW9uUHJvdG90eXBlLmNwcAkod29ya2luZyBjb3B5KQpAQCAtNDcsNyArNDcsNyBAQCBGdW5jdGlv
blByb3RvdHlwZTo6RnVuY3Rpb25Qcm90b3R5cGUoSlNHCiB7CiB9CiAKLXZvaWQgRnVuY3Rpb25Q
cm90b3R5cGU6OmZpbmlzaENyZWF0aW9uKEV4ZWNTdGF0ZSogZXhlYywgY29uc3QgSWRlbnRpZmll
ciYgbmFtZSkKK3ZvaWQgRnVuY3Rpb25Qcm90b3R5cGU6OmZpbmlzaENyZWF0aW9uKEV4ZWNTdGF0
ZSogZXhlYywgY29uc3QgVVN0cmluZyYgbmFtZSkKIHsKICAgICBCYXNlOjpmaW5pc2hDcmVhdGlv
bihleGVjLT5nbG9iYWxEYXRhKCksIG5hbWUpOwogICAgIHB1dERpcmVjdFdpdGhvdXRUcmFuc2l0
aW9uKGV4ZWMtPmdsb2JhbERhdGEoKSwgZXhlYy0+cHJvcGVydHlOYW1lcygpLmxlbmd0aCwganNO
dW1iZXIoMCksIERvbnREZWxldGUgfCBSZWFkT25seSB8IERvbnRFbnVtKTsKQEAgLTU1LDE2ICs1
NSwxNiBAQCB2b2lkIEZ1bmN0aW9uUHJvdG90eXBlOjpmaW5pc2hDcmVhdGlvbihFCiAKIHZvaWQg
RnVuY3Rpb25Qcm90b3R5cGU6OmFkZEZ1bmN0aW9uUHJvcGVydGllcyhFeGVjU3RhdGUqIGV4ZWMs
IEpTR2xvYmFsT2JqZWN0KiBnbG9iYWxPYmplY3QsIEpTRnVuY3Rpb24qKiBjYWxsRnVuY3Rpb24s
IEpTRnVuY3Rpb24qKiBhcHBseUZ1bmN0aW9uKQogewotICAgIEpTRnVuY3Rpb24qIHRvU3RyaW5n
RnVuY3Rpb24gPSBKU0Z1bmN0aW9uOjpjcmVhdGUoZXhlYywgZ2xvYmFsT2JqZWN0LCAwLCBleGVj
LT5wcm9wZXJ0eU5hbWVzKCkudG9TdHJpbmcsIGZ1bmN0aW9uUHJvdG9GdW5jVG9TdHJpbmcpOwor
ICAgIEpTRnVuY3Rpb24qIHRvU3RyaW5nRnVuY3Rpb24gPSBKU0Z1bmN0aW9uOjpjcmVhdGUoZXhl
YywgZ2xvYmFsT2JqZWN0LCAwLCBleGVjLT5wcm9wZXJ0eU5hbWVzKCkudG9TdHJpbmcudXN0cmlu
ZygpLCBmdW5jdGlvblByb3RvRnVuY1RvU3RyaW5nKTsKICAgICBwdXREaXJlY3RXaXRob3V0VHJh
bnNpdGlvbihleGVjLT5nbG9iYWxEYXRhKCksIGV4ZWMtPnByb3BlcnR5TmFtZXMoKS50b1N0cmlu
ZywgdG9TdHJpbmdGdW5jdGlvbiwgRG9udEVudW0pOwogCi0gICAgKmFwcGx5RnVuY3Rpb24gPSBK
U0Z1bmN0aW9uOjpjcmVhdGUoZXhlYywgZ2xvYmFsT2JqZWN0LCAyLCBleGVjLT5wcm9wZXJ0eU5h
bWVzKCkuYXBwbHksIGZ1bmN0aW9uUHJvdG9GdW5jQXBwbHkpOworICAgICphcHBseUZ1bmN0aW9u
ID0gSlNGdW5jdGlvbjo6Y3JlYXRlKGV4ZWMsIGdsb2JhbE9iamVjdCwgMiwgZXhlYy0+cHJvcGVy
dHlOYW1lcygpLmFwcGx5LnVzdHJpbmcoKSwgZnVuY3Rpb25Qcm90b0Z1bmNBcHBseSk7CiAgICAg
cHV0RGlyZWN0V2l0aG91dFRyYW5zaXRpb24oZXhlYy0+Z2xvYmFsRGF0YSgpLCBleGVjLT5wcm9w
ZXJ0eU5hbWVzKCkuYXBwbHksICphcHBseUZ1bmN0aW9uLCBEb250RW51bSk7CiAKLSAgICAqY2Fs
bEZ1bmN0aW9uID0gSlNGdW5jdGlvbjo6Y3JlYXRlKGV4ZWMsIGdsb2JhbE9iamVjdCwgMSwgZXhl
Yy0+cHJvcGVydHlOYW1lcygpLmNhbGwsIGZ1bmN0aW9uUHJvdG9GdW5jQ2FsbCk7CisgICAgKmNh
bGxGdW5jdGlvbiA9IEpTRnVuY3Rpb246OmNyZWF0ZShleGVjLCBnbG9iYWxPYmplY3QsIDEsIGV4
ZWMtPnByb3BlcnR5TmFtZXMoKS5jYWxsLnVzdHJpbmcoKSwgZnVuY3Rpb25Qcm90b0Z1bmNDYWxs
KTsKICAgICBwdXREaXJlY3RXaXRob3V0VHJhbnNpdGlvbihleGVjLT5nbG9iYWxEYXRhKCksIGV4
ZWMtPnByb3BlcnR5TmFtZXMoKS5jYWxsLCAqY2FsbEZ1bmN0aW9uLCBEb250RW51bSk7CiAKLSAg
ICBKU0Z1bmN0aW9uKiBiaW5kRnVuY3Rpb24gPSBKU0Z1bmN0aW9uOjpjcmVhdGUoZXhlYywgZ2xv
YmFsT2JqZWN0LCAxLCBleGVjLT5wcm9wZXJ0eU5hbWVzKCkuYmluZCwgZnVuY3Rpb25Qcm90b0Z1
bmNCaW5kKTsKKyAgICBKU0Z1bmN0aW9uKiBiaW5kRnVuY3Rpb24gPSBKU0Z1bmN0aW9uOjpjcmVh
dGUoZXhlYywgZ2xvYmFsT2JqZWN0LCAxLCBleGVjLT5wcm9wZXJ0eU5hbWVzKCkuYmluZC51c3Ry
aW5nKCksIGZ1bmN0aW9uUHJvdG9GdW5jQmluZCk7CiAgICAgcHV0RGlyZWN0V2l0aG91dFRyYW5z
aXRpb24oZXhlYy0+Z2xvYmFsRGF0YSgpLCBleGVjLT5wcm9wZXJ0eU5hbWVzKCkuYmluZCwgYmlu
ZEZ1bmN0aW9uLCBEb250RW51bSk7CiB9CiAKQEAgLTIwNyw5ICsyMDcsOCBAQCBFbmNvZGVkSlNW
YWx1ZSBKU0NfSE9TVF9DQUxMIGZ1bmN0aW9uUHJvCiAgICAgICAgICAgICBsZW5ndGggPSB0YXJn
ZXRMZW5ndGggLSBudW1Cb3VuZEFyZ3M7CiAgICAgfQogCi0gICAgSWRlbnRpZmllciBuYW1lKGV4
ZWMsIHRhcmdldC5nZXQoZXhlYywgZXhlYy0+cHJvcGVydHlOYW1lcygpLm5hbWUpLnRvU3RyaW5n
KGV4ZWMpLT52YWx1ZShleGVjKSk7Ci0KLSAgICByZXR1cm4gSlNWYWx1ZTo6ZW5jb2RlKEpTQm91
bmRGdW5jdGlvbjo6Y3JlYXRlKGV4ZWMsIGdsb2JhbE9iamVjdCwgdGFyZ2V0T2JqZWN0LCBleGVj
LT5hcmd1bWVudCgwKSwgYm91bmRBcmdzLCBsZW5ndGgsIG5hbWUpKTsKKyAgICBKU1N0cmluZyog
bmFtZSA9IHRhcmdldC5nZXQoZXhlYywgZXhlYy0+cHJvcGVydHlOYW1lcygpLm5hbWUpLnRvU3Ry
aW5nKGV4ZWMpOworICAgIHJldHVybiBKU1ZhbHVlOjplbmNvZGUoSlNCb3VuZEZ1bmN0aW9uOjpj
cmVhdGUoZXhlYywgZ2xvYmFsT2JqZWN0LCB0YXJnZXRPYmplY3QsIGV4ZWMtPmFyZ3VtZW50KDAp
LCBib3VuZEFyZ3MsIGxlbmd0aCwgbmFtZS0+dmFsdWUoZXhlYykpKTsKIH0KIAogfSAvLyBuYW1l
c3BhY2UgSlNDCkluZGV4OiBTb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9GdW5jdGlvblBy
b3RvdHlwZS5oCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL0Z1
bmN0aW9uUHJvdG90eXBlLmgJKHJldmlzaW9uIDExNjY2NykKKysrIFNvdXJjZS9KYXZhU2NyaXB0
Q29yZS9ydW50aW1lL0Z1bmN0aW9uUHJvdG90eXBlLmgJKHdvcmtpbmcgY29weSkKQEAgLTMyLDcg
KzMyLDcgQEAgbmFtZXNwYWNlIEpTQyB7CiAgICAgICAgIHN0YXRpYyBGdW5jdGlvblByb3RvdHlw
ZSogY3JlYXRlKEV4ZWNTdGF0ZSogZXhlYywgSlNHbG9iYWxPYmplY3QqIGdsb2JhbE9iamVjdCwg
U3RydWN0dXJlKiBzdHJ1Y3R1cmUpCiAgICAgICAgIHsKICAgICAgICAgICAgIEZ1bmN0aW9uUHJv
dG90eXBlKiBwcm90b3R5cGUgPSBuZXcgKE5vdE51bGwsIGFsbG9jYXRlQ2VsbDxGdW5jdGlvblBy
b3RvdHlwZT4oKmV4ZWMtPmhlYXAoKSkpIEZ1bmN0aW9uUHJvdG90eXBlKGdsb2JhbE9iamVjdCwg
c3RydWN0dXJlKTsKLSAgICAgICAgICAgIHByb3RvdHlwZS0+ZmluaXNoQ3JlYXRpb24oZXhlYywg
ZXhlYy0+cHJvcGVydHlOYW1lcygpLm51bGxJZGVudGlmaWVyKTsKKyAgICAgICAgICAgIHByb3Rv
dHlwZS0+ZmluaXNoQ3JlYXRpb24oZXhlYywgIiIpOwogICAgICAgICAgICAgcmV0dXJuIHByb3Rv
dHlwZTsKICAgICAgICAgfQogICAgICAgICAKQEAgLTQ2LDcgKzQ2LDcgQEAgbmFtZXNwYWNlIEpT
QyB7CiAgICAgICAgIHN0YXRpYyBjb25zdCBDbGFzc0luZm8gc19pbmZvOwogCiAgICAgcHJvdGVj
dGVkOgotICAgICAgICB2b2lkIGZpbmlzaENyZWF0aW9uKEV4ZWNTdGF0ZSosIGNvbnN0IElkZW50
aWZpZXImIG5hbWUpOworICAgICAgICB2b2lkIGZpbmlzaENyZWF0aW9uKEV4ZWNTdGF0ZSosIGNv
bnN0IFVTdHJpbmcmIG5hbWUpOwogCiAgICAgcHJpdmF0ZToKICAgICAgICAgRnVuY3Rpb25Qcm90
b3R5cGUoSlNHbG9iYWxPYmplY3QqLCBTdHJ1Y3R1cmUqKTsKSW5kZXg6IFNvdXJjZS9KYXZhU2Ny
aXB0Q29yZS9ydW50aW1lL0lkZW50aWZpZXIuY3BwCj09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9KYXZh
U2NyaXB0Q29yZS9ydW50aW1lL0lkZW50aWZpZXIuY3BwCShyZXZpc2lvbiAxMTY2NjcpCisrKyBT
b3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9JZGVudGlmaWVyLmNwcAkod29ya2luZyBjb3B5
KQpAQCAtMTQ1LDU2ICsxNDUsNiBAQCBQYXNzUmVmUHRyPFN0cmluZ0ltcGw+IElkZW50aWZpZXI6
OmFkZDgoCiAgICAgcmV0dXJuIGFkZFJlc3VsdC5pc05ld0VudHJ5ID8gYWRvcHRSZWYoKmFkZFJl
c3VsdC5pdGVyYXRvcikgOiAqYWRkUmVzdWx0Lml0ZXJhdG9yOwogfQogCi10ZW1wbGF0ZSA8dHlw
ZW5hbWUgQ2hhclR5cGU+Ci1BTFdBWVNfSU5MSU5FIHVpbnQzMl90IElkZW50aWZpZXI6OnRvVUlu
dDMyRnJvbUNoYXJhY3RlcnMoY29uc3QgQ2hhclR5cGUqIGNoYXJhY3RlcnMsIHVuc2lnbmVkIGxl
bmd0aCwgYm9vbCYgb2spCi17Ci0gICAgLy8gR2V0IHRoZSBmaXJzdCBjaGFyYWN0ZXIsIHR1cm5p
bmcgaXQgaW50byBhIGRpZ2l0LgotICAgIHVpbnQzMl90IHZhbHVlID0gY2hhcmFjdGVyc1swXSAt
ICcwJzsKLSAgICBpZiAodmFsdWUgPiA5KQotICAgICAgICByZXR1cm4gMDsKLSAgICAKLSAgICAv
LyBDaGVjayBmb3IgbGVhZGluZyB6ZXJvcy4gSWYgdGhlIGZpcnN0IGNoYXJhY2hlciBpcyAwLCB0
aGVuIHRoZQotICAgIC8vIGxlbmd0aCBvZiB0aGUgc3RyaW5nIG11c3QgYmUgb25lIC0gZS5nLiAi
MDQyIiBpcyBub3QgZXF1YWwgdG8gIjQyIi4KLSAgICBpZiAoIXZhbHVlICYmIGxlbmd0aCA+IDEp
Ci0gICAgICAgIHJldHVybiAwOwotICAgIAotICAgIHdoaWxlICgtLWxlbmd0aCkgewotICAgICAg
ICAvLyBNdWx0aXBseSB2YWx1ZSBieSAxMCwgY2hlY2tpbmcgZm9yIG92ZXJmbG93IG91dCBvZiAz
MiBiaXRzLgotICAgICAgICBpZiAodmFsdWUgPiAweEZGRkZGRkZGVSAvIDEwKQotICAgICAgICAg
ICAgcmV0dXJuIDA7Ci0gICAgICAgIHZhbHVlICo9IDEwOwotICAgICAgICAKLSAgICAgICAgLy8g
R2V0IHRoZSBuZXh0IGNoYXJhY3RlciwgdHVybmluZyBpdCBpbnRvIGEgZGlnaXQuCi0gICAgICAg
IHVpbnQzMl90IG5ld1ZhbHVlID0gKigrK2NoYXJhY3RlcnMpIC0gJzAnOwotICAgICAgICBpZiAo
bmV3VmFsdWUgPiA5KQotICAgICAgICAgICAgcmV0dXJuIDA7Ci0gICAgICAgIAotICAgICAgICAv
LyBBZGQgaW4gdGhlIG9sZCB2YWx1ZSwgY2hlY2tpbmcgZm9yIG92ZXJmbG93IG91dCBvZiAzMiBi
aXRzLgotICAgICAgICBuZXdWYWx1ZSArPSB2YWx1ZTsKLSAgICAgICAgaWYgKG5ld1ZhbHVlIDwg
dmFsdWUpCi0gICAgICAgICAgICByZXR1cm4gMDsKLSAgICAgICAgdmFsdWUgPSBuZXdWYWx1ZTsK
LSAgICB9Ci0gICAgCi0gICAgb2sgPSB0cnVlOwotICAgIHJldHVybiB2YWx1ZTsKLX0KLQotdWlu
dDMyX3QgSWRlbnRpZmllcjo6dG9VSW50MzIoY29uc3QgVVN0cmluZyYgc3RyaW5nLCBib29sJiBv
aykKLXsKLSAgICBvayA9IGZhbHNlOwotCi0gICAgdW5zaWduZWQgbGVuZ3RoID0gc3RyaW5nLmxl
bmd0aCgpOwotCi0gICAgLy8gQW4gZW1wdHkgc3RyaW5nIGlzIG5vdCBhIG51bWJlci4KLSAgICBp
ZiAoIWxlbmd0aCkKLSAgICAgICAgcmV0dXJuIDA7Ci0KLSAgICBpZiAoc3RyaW5nLmlzOEJpdCgp
KQotICAgICAgICByZXR1cm4gdG9VSW50MzJGcm9tQ2hhcmFjdGVycyhzdHJpbmcuY2hhcmFjdGVy
czgoKSwgbGVuZ3RoLCBvayk7Ci0gICAgcmV0dXJuIHRvVUludDMyRnJvbUNoYXJhY3RlcnMoc3Ry
aW5nLmNoYXJhY3RlcnMxNigpLCBsZW5ndGgsIG9rKTsKLX0KLQogUGFzc1JlZlB0cjxTdHJpbmdJ
bXBsPiBJZGVudGlmaWVyOjphZGRTbG93Q2FzZShKU0dsb2JhbERhdGEqIGdsb2JhbERhdGEsIFN0
cmluZ0ltcGwqIHIpCiB7CiAgICAgQVNTRVJUKCFyLT5pc0lkZW50aWZpZXIoKSk7CkluZGV4OiBT
b3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9JZGVudGlmaWVyLmgKPT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0g
U291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvSWRlbnRpZmllci5oCShyZXZpc2lvbiAxMTY2
NjcpCisrKyBTb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9JZGVudGlmaWVyLmgJKHdvcmtp
bmcgY29weSkKQEAgLTYzLDEwICs2Myw2IEBAIG5hbWVzcGFjZSBKU0MgewogICAgICAgICBzdGF0
aWMgSWRlbnRpZmllciBmcm9tKEpTR2xvYmFsRGF0YSosIGludCB5KTsKICAgICAgICAgc3RhdGlj
IElkZW50aWZpZXIgZnJvbShKU0dsb2JhbERhdGEqLCBkb3VibGUgeSk7CiAKLSAgICAgICAgSlNf
RVhQT1JUX1BSSVZBVEUgc3RhdGljIHVpbnQzMl90IHRvVUludDMyKGNvbnN0IFVTdHJpbmcmLCBi
b29sJiBvayk7Ci0gICAgICAgIHVpbnQzMl90IHRvVUludDMyKGJvb2wmIG9rKSBjb25zdCB7IHJl
dHVybiB0b1VJbnQzMihtX3N0cmluZywgb2spOyB9Ci0gICAgICAgIHVuc2lnbmVkIHRvQXJyYXlJ
bmRleChib29sJiBvaykgY29uc3Q7Ci0KICAgICAgICAgYm9vbCBpc051bGwoKSBjb25zdCB7IHJl
dHVybiBtX3N0cmluZy5pc051bGwoKTsgfQogICAgICAgICBib29sIGlzRW1wdHkoKSBjb25zdCB7
IHJldHVybiBtX3N0cmluZy5pc0VtcHR5KCk7IH0KICAgICAgICAgCkluZGV4OiBTb3VyY2UvSmF2
YVNjcmlwdENvcmUvcnVudGltZS9JbnRlcm5hbEZ1bmN0aW9uLmNwcAo9PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBT
b3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9JbnRlcm5hbEZ1bmN0aW9uLmNwcAkocmV2aXNp
b24gMTE2NjY3KQorKysgU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvSW50ZXJuYWxGdW5j
dGlvbi5jcHAJKHdvcmtpbmcgY29weSkKQEAgLTM5LDEyICszOSwxMiBAQCBJbnRlcm5hbEZ1bmN0
aW9uOjpJbnRlcm5hbEZ1bmN0aW9uKEpTR2xvCiB7CiB9CiAKLXZvaWQgSW50ZXJuYWxGdW5jdGlv
bjo6ZmluaXNoQ3JlYXRpb24oSlNHbG9iYWxEYXRhJiBnbG9iYWxEYXRhLCBjb25zdCBJZGVudGlm
aWVyJiBuYW1lKQordm9pZCBJbnRlcm5hbEZ1bmN0aW9uOjpmaW5pc2hDcmVhdGlvbihKU0dsb2Jh
bERhdGEmIGdsb2JhbERhdGEsIGNvbnN0IFVTdHJpbmcmIG5hbWUpCiB7CiAgICAgQmFzZTo6Zmlu
aXNoQ3JlYXRpb24oZ2xvYmFsRGF0YSk7CiAgICAgQVNTRVJUKGluaGVyaXRzKCZzX2luZm8pKTsK
ICAgICBBU1NFUlQobWV0aG9kVGFibGUoKS0+Z2V0Q2FsbERhdGEgIT0gSW50ZXJuYWxGdW5jdGlv
bjo6c19pbmZvLm1ldGhvZFRhYmxlLmdldENhbGxEYXRhKTsKLSAgICBwdXREaXJlY3QoZ2xvYmFs
RGF0YSwgZ2xvYmFsRGF0YS5wcm9wZXJ0eU5hbWVzLT5uYW1lLCBqc1N0cmluZygmZ2xvYmFsRGF0
YSwgbmFtZS5pc051bGwoKSA/ICIiIDogbmFtZS51c3RyaW5nKCkpLCBEb250RGVsZXRlIHwgUmVh
ZE9ubHkgfCBEb250RW51bSk7CisgICAgcHV0RGlyZWN0KGdsb2JhbERhdGEsIGdsb2JhbERhdGEu
cHJvcGVydHlOYW1lcy0+bmFtZSwganNTdHJpbmcoJmdsb2JhbERhdGEsIG5hbWUuaXNOdWxsKCkg
PyAiIiA6IG5hbWUpLCBEb250RGVsZXRlIHwgUmVhZE9ubHkgfCBEb250RW51bSk7CiB9CiAKIGNv
bnN0IFVTdHJpbmcmIEludGVybmFsRnVuY3Rpb246Om5hbWUoRXhlY1N0YXRlKiBleGVjKQpJbmRl
eDogU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvSW50ZXJuYWxGdW5jdGlvbi5oCj09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT0KLS0tIFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL0ludGVybmFsRnVuY3Rpb24u
aAkocmV2aXNpb24gMTE2NjY3KQorKysgU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvSW50
ZXJuYWxGdW5jdGlvbi5oCSh3b3JraW5nIGNvcHkpCkBAIC01MSw3ICs1MSw3IEBAIG5hbWVzcGFj
ZSBKU0MgewogCiAgICAgICAgIEpTX0VYUE9SVF9QUklWQVRFIEludGVybmFsRnVuY3Rpb24oSlNH
bG9iYWxPYmplY3QqLCBTdHJ1Y3R1cmUqKTsKIAotICAgICAgICBKU19FWFBPUlRfUFJJVkFURSB2
b2lkIGZpbmlzaENyZWF0aW9uKEpTR2xvYmFsRGF0YSYsIGNvbnN0IElkZW50aWZpZXImIG5hbWUp
OworICAgICAgICBKU19FWFBPUlRfUFJJVkFURSB2b2lkIGZpbmlzaENyZWF0aW9uKEpTR2xvYmFs
RGF0YSYsIGNvbnN0IFVTdHJpbmcmIG5hbWUpOwogCiAgICAgICAgIHN0YXRpYyBDYWxsVHlwZSBn
ZXRDYWxsRGF0YShKU0NlbGwqLCBDYWxsRGF0YSYpOwogICAgIH07CkluZGV4OiBTb3VyY2UvSmF2
YVNjcmlwdENvcmUvcnVudGltZS9KU0FjdGl2YXRpb24uY3BwCj09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJj
ZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL0pTQWN0aXZhdGlvbi5jcHAJKHJldmlzaW9uIDExNjY2
NykKKysrIFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL0pTQWN0aXZhdGlvbi5jcHAJKHdv
cmtpbmcgY29weSkKQEAgLTkwLDcgKzkwLDcgQEAgdm9pZCBKU0FjdGl2YXRpb246OnZpc2l0Q2hp
bGRyZW4oSlNDZWxsKgogICAgIHZpc2l0b3IuYXBwZW5kVmFsdWVzKHJlZ2lzdGVyQXJyYXkgKyBv
ZmZzZXQsIHRoaXNPYmplY3QtPm1fbnVtQ2FwdHVyZWRWYXJzKTsKIH0KIAotaW5saW5lIGJvb2wg
SlNBY3RpdmF0aW9uOjpzeW1ib2xUYWJsZUdldChjb25zdCBJZGVudGlmaWVyJiBwcm9wZXJ0eU5h
bWUsIFByb3BlcnR5U2xvdCYgc2xvdCkKK2lubGluZSBib29sIEpTQWN0aXZhdGlvbjo6c3ltYm9s
VGFibGVHZXQoUHJvcGVydHlOYW1lIHByb3BlcnR5TmFtZSwgUHJvcGVydHlTbG90JiBzbG90KQog
ewogICAgIFN5bWJvbFRhYmxlRW50cnkgZW50cnkgPSBzeW1ib2xUYWJsZSgpLmlubGluZUdldChw
cm9wZXJ0eU5hbWUuaW1wbCgpKTsKICAgICBpZiAoZW50cnkuaXNOdWxsKCkpCkBAIC0xMDIsNyAr
MTAyLDcgQEAgaW5saW5lIGJvb2wgSlNBY3RpdmF0aW9uOjpzeW1ib2xUYWJsZUdldAogICAgIHJl
dHVybiB0cnVlOwogfQogCi1pbmxpbmUgYm9vbCBKU0FjdGl2YXRpb246OnN5bWJvbFRhYmxlUHV0
KEV4ZWNTdGF0ZSogZXhlYywgY29uc3QgSWRlbnRpZmllciYgcHJvcGVydHlOYW1lLCBKU1ZhbHVl
IHZhbHVlLCBib29sIHNob3VsZFRocm93KQoraW5saW5lIGJvb2wgSlNBY3RpdmF0aW9uOjpzeW1i
b2xUYWJsZVB1dChFeGVjU3RhdGUqIGV4ZWMsIFByb3BlcnR5TmFtZSBwcm9wZXJ0eU5hbWUsIEpT
VmFsdWUgdmFsdWUsIGJvb2wgc2hvdWxkVGhyb3cpCiB7CiAgICAgSlNHbG9iYWxEYXRhJiBnbG9i
YWxEYXRhID0gZXhlYy0+Z2xvYmFsRGF0YSgpOwogICAgIEFTU0VSVCghSGVhcDo6aGVhcCh2YWx1
ZSkgfHwgSGVhcDo6aGVhcCh2YWx1ZSkgPT0gSGVhcDo6aGVhcCh0aGlzKSk7CkBAIC0xMzcsNyAr
MTM3LDcgQEAgdm9pZCBKU0FjdGl2YXRpb246OmdldE93blByb3BlcnR5TmFtZXMoSgogICAgIEpT
T2JqZWN0OjpnZXRPd25Qcm9wZXJ0eU5hbWVzKHRoaXNPYmplY3QsIGV4ZWMsIHByb3BlcnR5TmFt
ZXMsIG1vZGUpOwogfQogCi1pbmxpbmUgYm9vbCBKU0FjdGl2YXRpb246OnN5bWJvbFRhYmxlUHV0
V2l0aEF0dHJpYnV0ZXMoSlNHbG9iYWxEYXRhJiBnbG9iYWxEYXRhLCBjb25zdCBJZGVudGlmaWVy
JiBwcm9wZXJ0eU5hbWUsIEpTVmFsdWUgdmFsdWUsIHVuc2lnbmVkIGF0dHJpYnV0ZXMpCitpbmxp
bmUgYm9vbCBKU0FjdGl2YXRpb246OnN5bWJvbFRhYmxlUHV0V2l0aEF0dHJpYnV0ZXMoSlNHbG9i
YWxEYXRhJiBnbG9iYWxEYXRhLCBQcm9wZXJ0eU5hbWUgcHJvcGVydHlOYW1lLCBKU1ZhbHVlIHZh
bHVlLCB1bnNpZ25lZCBhdHRyaWJ1dGVzKQogewogICAgIEFTU0VSVCghSGVhcDo6aGVhcCh2YWx1
ZSkgfHwgSGVhcDo6aGVhcCh2YWx1ZSkgPT0gSGVhcDo6aGVhcCh0aGlzKSk7CiAgICAgCkBAIC0x
NTQsNyArMTU0LDcgQEAgaW5saW5lIGJvb2wgSlNBY3RpdmF0aW9uOjpzeW1ib2xUYWJsZVB1dAog
ICAgIHJldHVybiB0cnVlOwogfQogCi1ib29sIEpTQWN0aXZhdGlvbjo6Z2V0T3duUHJvcGVydHlT
bG90KEpTQ2VsbCogY2VsbCwgRXhlY1N0YXRlKiBleGVjLCBjb25zdCBJZGVudGlmaWVyJiBwcm9w
ZXJ0eU5hbWUsIFByb3BlcnR5U2xvdCYgc2xvdCkKK2Jvb2wgSlNBY3RpdmF0aW9uOjpnZXRPd25Q
cm9wZXJ0eVNsb3QoSlNDZWxsKiBjZWxsLCBFeGVjU3RhdGUqIGV4ZWMsIFByb3BlcnR5TmFtZSBw
cm9wZXJ0eU5hbWUsIFByb3BlcnR5U2xvdCYgc2xvdCkKIHsKICAgICBKU0FjdGl2YXRpb24qIHRo
aXNPYmplY3QgPSBqc0Nhc3Q8SlNBY3RpdmF0aW9uKj4oY2VsbCk7CiAgICAgaWYgKHByb3BlcnR5
TmFtZSA9PSBleGVjLT5wcm9wZXJ0eU5hbWVzKCkuYXJndW1lbnRzKSB7CkBAIC0xNzcsNyArMTc3
LDcgQEAgYm9vbCBKU0FjdGl2YXRpb246OmdldE93blByb3BlcnR5U2xvdChKUwogICAgIHJldHVy
biBmYWxzZTsKIH0KIAotdm9pZCBKU0FjdGl2YXRpb246OnB1dChKU0NlbGwqIGNlbGwsIEV4ZWNT
dGF0ZSogZXhlYywgY29uc3QgSWRlbnRpZmllciYgcHJvcGVydHlOYW1lLCBKU1ZhbHVlIHZhbHVl
LCBQdXRQcm9wZXJ0eVNsb3QmIHNsb3QpCit2b2lkIEpTQWN0aXZhdGlvbjo6cHV0KEpTQ2VsbCog
Y2VsbCwgRXhlY1N0YXRlKiBleGVjLCBQcm9wZXJ0eU5hbWUgcHJvcGVydHlOYW1lLCBKU1ZhbHVl
IHZhbHVlLCBQdXRQcm9wZXJ0eVNsb3QmIHNsb3QpCiB7CiAgICAgSlNBY3RpdmF0aW9uKiB0aGlz
T2JqZWN0ID0ganNDYXN0PEpTQWN0aXZhdGlvbio+KGNlbGwpOwogICAgIEFTU0VSVCghSGVhcDo6
aGVhcCh2YWx1ZSkgfHwgSGVhcDo6aGVhcCh2YWx1ZSkgPT0gSGVhcDo6aGVhcCh0aGlzT2JqZWN0
KSk7CkBAIC0xOTMsNyArMTkzLDcgQEAgdm9pZCBKU0FjdGl2YXRpb246OnB1dChKU0NlbGwqIGNl
bGwsIEV4ZQogfQogCiAvLyBGSVhNRTogTWFrZSB0aGlzIGZ1bmN0aW9uIGhvbm9yIFJlYWRPbmx5
IChjb25zdCkgYW5kIERvbnRFbnVtCi12b2lkIEpTQWN0aXZhdGlvbjo6cHV0RGlyZWN0VmlydHVh
bChKU09iamVjdCogb2JqZWN0LCBFeGVjU3RhdGUqIGV4ZWMsIGNvbnN0IElkZW50aWZpZXImIHBy
b3BlcnR5TmFtZSwgSlNWYWx1ZSB2YWx1ZSwgdW5zaWduZWQgYXR0cmlidXRlcykKK3ZvaWQgSlNB
Y3RpdmF0aW9uOjpwdXREaXJlY3RWaXJ0dWFsKEpTT2JqZWN0KiBvYmplY3QsIEV4ZWNTdGF0ZSog
ZXhlYywgUHJvcGVydHlOYW1lIHByb3BlcnR5TmFtZSwgSlNWYWx1ZSB2YWx1ZSwgdW5zaWduZWQg
YXR0cmlidXRlcykKIHsKICAgICBKU0FjdGl2YXRpb24qIHRoaXNPYmplY3QgPSBqc0Nhc3Q8SlNB
Y3RpdmF0aW9uKj4ob2JqZWN0KTsKICAgICBBU1NFUlQoIUhlYXA6OmhlYXAodmFsdWUpIHx8IEhl
YXA6OmhlYXAodmFsdWUpID09IEhlYXA6OmhlYXAodGhpc09iamVjdCkpOwpAQCAtMjA4LDcgKzIw
OCw3IEBAIHZvaWQgSlNBY3RpdmF0aW9uOjpwdXREaXJlY3RWaXJ0dWFsKEpTT2IKICAgICBKU09i
amVjdDo6cHV0RGlyZWN0VmlydHVhbCh0aGlzT2JqZWN0LCBleGVjLCBwcm9wZXJ0eU5hbWUsIHZh
bHVlLCBhdHRyaWJ1dGVzKTsKIH0KIAotYm9vbCBKU0FjdGl2YXRpb246OmRlbGV0ZVByb3BlcnR5
KEpTQ2VsbCogY2VsbCwgRXhlY1N0YXRlKiBleGVjLCBjb25zdCBJZGVudGlmaWVyJiBwcm9wZXJ0
eU5hbWUpCitib29sIEpTQWN0aXZhdGlvbjo6ZGVsZXRlUHJvcGVydHkoSlNDZWxsKiBjZWxsLCBF
eGVjU3RhdGUqIGV4ZWMsIFByb3BlcnR5TmFtZSBwcm9wZXJ0eU5hbWUpCiB7CiAgICAgaWYgKHBy
b3BlcnR5TmFtZSA9PSBleGVjLT5wcm9wZXJ0eU5hbWVzKCkuYXJndW1lbnRzKQogICAgICAgICBy
ZXR1cm4gZmFsc2U7CkBAIC0yMjEsNyArMjIxLDcgQEAgSlNPYmplY3QqIEpTQWN0aXZhdGlvbjo6
dG9UaGlzT2JqZWN0KEpTQwogICAgIHJldHVybiBleGVjLT5nbG9iYWxUaGlzVmFsdWUoKTsKIH0K
IAotSlNWYWx1ZSBKU0FjdGl2YXRpb246OmFyZ3VtZW50c0dldHRlcihFeGVjU3RhdGUqLCBKU1Zh
bHVlIHNsb3RCYXNlLCBjb25zdCBJZGVudGlmaWVyJikKK0pTVmFsdWUgSlNBY3RpdmF0aW9uOjph
cmd1bWVudHNHZXR0ZXIoRXhlY1N0YXRlKiwgSlNWYWx1ZSBzbG90QmFzZSwgUHJvcGVydHlOYW1l
KQogewogICAgIEpTQWN0aXZhdGlvbiogYWN0aXZhdGlvbiA9IGFzQWN0aXZhdGlvbihzbG90QmFz
ZSk7CiAgICAgQ2FsbEZyYW1lKiBjYWxsRnJhbWUgPSBDYWxsRnJhbWU6OmNyZWF0ZShyZWludGVy
cHJldF9jYXN0PFJlZ2lzdGVyKj4oYWN0aXZhdGlvbi0+bV9yZWdpc3RlcnMpKTsKSW5kZXg6IFNv
dXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL0pTQWN0aXZhdGlvbi5oCj09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0t
IFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL0pTQWN0aXZhdGlvbi5oCShyZXZpc2lvbiAx
MTY2NjcpCisrKyBTb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9KU0FjdGl2YXRpb24uaAko
d29ya2luZyBjb3B5KQpAQCAtNTksMTMgKzU5LDEzIEBAIG5hbWVzcGFjZSBKU0MgewogCiAgICAg
ICAgIGJvb2wgaXNEeW5hbWljU2NvcGUoYm9vbCYgcmVxdWlyZXNEeW5hbWljQ2hlY2tzKSBjb25z
dDsKIAotICAgICAgICBzdGF0aWMgYm9vbCBnZXRPd25Qcm9wZXJ0eVNsb3QoSlNDZWxsKiwgRXhl
Y1N0YXRlKiwgY29uc3QgSWRlbnRpZmllciYsIFByb3BlcnR5U2xvdCYpOworICAgICAgICBzdGF0
aWMgYm9vbCBnZXRPd25Qcm9wZXJ0eVNsb3QoSlNDZWxsKiwgRXhlY1N0YXRlKiwgUHJvcGVydHlO
YW1lLCBQcm9wZXJ0eVNsb3QmKTsKICAgICAgICAgc3RhdGljIHZvaWQgZ2V0T3duUHJvcGVydHlO
YW1lcyhKU09iamVjdCosIEV4ZWNTdGF0ZSosIFByb3BlcnR5TmFtZUFycmF5JiwgRW51bWVyYXRp
b25Nb2RlKTsKIAotICAgICAgICBzdGF0aWMgdm9pZCBwdXQoSlNDZWxsKiwgRXhlY1N0YXRlKiwg
Y29uc3QgSWRlbnRpZmllciYsIEpTVmFsdWUsIFB1dFByb3BlcnR5U2xvdCYpOworICAgICAgICBz
dGF0aWMgdm9pZCBwdXQoSlNDZWxsKiwgRXhlY1N0YXRlKiwgUHJvcGVydHlOYW1lLCBKU1ZhbHVl
LCBQdXRQcm9wZXJ0eVNsb3QmKTsKIAotICAgICAgICBzdGF0aWMgdm9pZCBwdXREaXJlY3RWaXJ0
dWFsKEpTT2JqZWN0KiwgRXhlY1N0YXRlKiwgY29uc3QgSWRlbnRpZmllciYsIEpTVmFsdWUsIHVu
c2lnbmVkIGF0dHJpYnV0ZXMpOwotICAgICAgICBzdGF0aWMgYm9vbCBkZWxldGVQcm9wZXJ0eShK
U0NlbGwqLCBFeGVjU3RhdGUqLCBjb25zdCBJZGVudGlmaWVyJiBwcm9wZXJ0eU5hbWUpOworICAg
ICAgICBzdGF0aWMgdm9pZCBwdXREaXJlY3RWaXJ0dWFsKEpTT2JqZWN0KiwgRXhlY1N0YXRlKiwg
UHJvcGVydHlOYW1lLCBKU1ZhbHVlLCB1bnNpZ25lZCBhdHRyaWJ1dGVzKTsKKyAgICAgICAgc3Rh
dGljIGJvb2wgZGVsZXRlUHJvcGVydHkoSlNDZWxsKiwgRXhlY1N0YXRlKiwgUHJvcGVydHlOYW1l
IHByb3BlcnR5TmFtZSk7CiAKICAgICAgICAgc3RhdGljIEpTT2JqZWN0KiB0b1RoaXNPYmplY3Qo
SlNDZWxsKiwgRXhlY1N0YXRlKik7CiAKQEAgLTgyLDEzICs4MiwxMyBAQCBuYW1lc3BhY2UgSlND
IHsKICAgICAgICAgc3RhdGljIGNvbnN0IHVuc2lnbmVkIFN0cnVjdHVyZUZsYWdzID0gSXNFbnZp
cm9ubWVudFJlY29yZCB8IE92ZXJyaWRlc0dldE93blByb3BlcnR5U2xvdCB8IE92ZXJyaWRlc1Zp
c2l0Q2hpbGRyZW4gfCBPdmVycmlkZXNHZXRQcm9wZXJ0eU5hbWVzIHwgSlNWYXJpYWJsZU9iamVj
dDo6U3RydWN0dXJlRmxhZ3M7CiAKICAgICBwcml2YXRlOgotICAgICAgICBib29sIHN5bWJvbFRh
YmxlR2V0KGNvbnN0IElkZW50aWZpZXImLCBQcm9wZXJ0eVNsb3QmKTsKLSAgICAgICAgYm9vbCBz
eW1ib2xUYWJsZUdldChjb25zdCBJZGVudGlmaWVyJiwgUHJvcGVydHlEZXNjcmlwdG9yJik7Ci0g
ICAgICAgIGJvb2wgc3ltYm9sVGFibGVHZXQoY29uc3QgSWRlbnRpZmllciYsIFByb3BlcnR5U2xv
dCYsIGJvb2wmIHNsb3RJc1dyaXRlYWJsZSk7Ci0gICAgICAgIGJvb2wgc3ltYm9sVGFibGVQdXQo
RXhlY1N0YXRlKiwgY29uc3QgSWRlbnRpZmllciYsIEpTVmFsdWUsIGJvb2wgc2hvdWxkVGhyb3cp
OwotICAgICAgICBib29sIHN5bWJvbFRhYmxlUHV0V2l0aEF0dHJpYnV0ZXMoSlNHbG9iYWxEYXRh
JiwgY29uc3QgSWRlbnRpZmllciYsIEpTVmFsdWUsIHVuc2lnbmVkIGF0dHJpYnV0ZXMpOworICAg
ICAgICBib29sIHN5bWJvbFRhYmxlR2V0KFByb3BlcnR5TmFtZSwgUHJvcGVydHlTbG90Jik7Cisg
ICAgICAgIGJvb2wgc3ltYm9sVGFibGVHZXQoUHJvcGVydHlOYW1lLCBQcm9wZXJ0eURlc2NyaXB0
b3ImKTsKKyAgICAgICAgYm9vbCBzeW1ib2xUYWJsZUdldChQcm9wZXJ0eU5hbWUsIFByb3BlcnR5
U2xvdCYsIGJvb2wmIHNsb3RJc1dyaXRlYWJsZSk7CisgICAgICAgIGJvb2wgc3ltYm9sVGFibGVQ
dXQoRXhlY1N0YXRlKiwgUHJvcGVydHlOYW1lLCBKU1ZhbHVlLCBib29sIHNob3VsZFRocm93KTsK
KyAgICAgICAgYm9vbCBzeW1ib2xUYWJsZVB1dFdpdGhBdHRyaWJ1dGVzKEpTR2xvYmFsRGF0YSYs
IFByb3BlcnR5TmFtZSwgSlNWYWx1ZSwgdW5zaWduZWQgYXR0cmlidXRlcyk7CiAKLSAgICAgICAg
c3RhdGljIEpTVmFsdWUgYXJndW1lbnRzR2V0dGVyKEV4ZWNTdGF0ZSosIEpTVmFsdWUsIGNvbnN0
IElkZW50aWZpZXImKTsKKyAgICAgICAgc3RhdGljIEpTVmFsdWUgYXJndW1lbnRzR2V0dGVyKEV4
ZWNTdGF0ZSosIEpTVmFsdWUsIFByb3BlcnR5TmFtZSk7CiAgICAgICAgIE5FVkVSX0lOTElORSBQ
cm9wZXJ0eVNsb3Q6OkdldFZhbHVlRnVuYyBnZXRBcmd1bWVudHNHZXR0ZXIoKTsKIAogICAgICAg
ICBpbnQgbV9udW1DYXB0dXJlZEFyZ3M7CkluZGV4OiBTb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVu
dGltZS9KU0FycmF5LmNwcAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVu
dGltZS9KU0FycmF5LmNwcAkocmV2aXNpb24gMTE2NjY3KQorKysgU291cmNlL0phdmFTY3JpcHRD
b3JlL3J1bnRpbWUvSlNBcnJheS5jcHAJKHdvcmtpbmcgY29weSkKQEAgLTUzNSw3ICs1MzUsNyBA
QCB2b2lkIEpTQXJyYXk6OnNldExlbmd0aFdyaXRhYmxlKEV4ZWNTdGF0CiB9CiAKIC8vIERlZmlu
ZWQgaW4gRVM1LjEgMTUuNC41LjEKLWJvb2wgSlNBcnJheTo6ZGVmaW5lT3duUHJvcGVydHkoSlNP
YmplY3QqIG9iamVjdCwgRXhlY1N0YXRlKiBleGVjLCBjb25zdCBJZGVudGlmaWVyJiBwcm9wZXJ0
eU5hbWUsIFByb3BlcnR5RGVzY3JpcHRvciYgZGVzY3JpcHRvciwgYm9vbCB0aHJvd0V4Y2VwdGlv
bikKK2Jvb2wgSlNBcnJheTo6ZGVmaW5lT3duUHJvcGVydHkoSlNPYmplY3QqIG9iamVjdCwgRXhl
Y1N0YXRlKiBleGVjLCBQcm9wZXJ0eU5hbWUgcHJvcGVydHlOYW1lLCBQcm9wZXJ0eURlc2NyaXB0
b3ImIGRlc2NyaXB0b3IsIGJvb2wgdGhyb3dFeGNlcHRpb24pCiB7CiAgICAgSlNBcnJheSogYXJy
YXkgPSBqc0Nhc3Q8SlNBcnJheSo+KG9iamVjdCk7CiAKQEAgLTYxOCwxMCArNjE4LDkgQEAgYm9v
bCBKU0FycmF5OjpkZWZpbmVPd25Qcm9wZXJ0eShKU09iamVjdAogICAgIH0KIAogICAgIC8vIDQu
IEVsc2UgaWYgUCBpcyBhbiBhcnJheSBpbmRleCAoMTUuNCksIHRoZW4KLSAgICBib29sIGlzQXJy
YXlJbmRleDsKICAgICAvLyBhLiBMZXQgaW5kZXggYmUgVG9VaW50MzIoUCkuCi0gICAgdW5zaWdu
ZWQgaW5kZXggPSBwcm9wZXJ0eU5hbWUudG9BcnJheUluZGV4KGlzQXJyYXlJbmRleCk7Ci0gICAg
aWYgKGlzQXJyYXlJbmRleCkgeworICAgIHVuc2lnbmVkIGluZGV4ID0gcHJvcGVydHlOYW1lLmFz
SW5kZXgoKTsKKyAgICBpZiAoaW5kZXggIT0gUHJvcGVydHlOYW1lOjpOb3RBbkluZGV4KSB7CiAg
ICAgICAgIC8vIGIuIFJlamVjdCBpZiBpbmRleCA+PSBvbGRMZW4gYW5kIG9sZExlbkRlc2MuW1tX
cml0YWJsZV1dIGlzIGZhbHNlLgogICAgICAgICBpZiAoaW5kZXggPj0gYXJyYXktPmxlbmd0aCgp
ICYmICFhcnJheS0+aXNMZW5ndGhXcml0YWJsZSgpKQogICAgICAgICAgICAgcmV0dXJuIHJlamVj
dChleGVjLCB0aHJvd0V4Y2VwdGlvbiwgIkF0dGVtcHRpbmcgdG8gZGVmaW5lIG51bWVyaWMgcHJv
cGVydHkgb24gYXJyYXkgd2l0aCBub24td3JpdGFibGUgbGVuZ3RoIHByb3BlcnR5LiIpOwpAQCAt
NjY1LDcgKzY2NCw3IEBAIGJvb2wgSlNBcnJheTo6Z2V0T3duUHJvcGVydHlTbG90QnlJbmRleCgK
ICAgICByZXR1cm4gSlNPYmplY3Q6OmdldE93blByb3BlcnR5U2xvdCh0aGlzT2JqZWN0LCBleGVj
LCBJZGVudGlmaWVyOjpmcm9tKGV4ZWMsIGkpLCBzbG90KTsKIH0KIAotYm9vbCBKU0FycmF5Ojpn
ZXRPd25Qcm9wZXJ0eVNsb3QoSlNDZWxsKiBjZWxsLCBFeGVjU3RhdGUqIGV4ZWMsIGNvbnN0IElk
ZW50aWZpZXImIHByb3BlcnR5TmFtZSwgUHJvcGVydHlTbG90JiBzbG90KQorYm9vbCBKU0FycmF5
OjpnZXRPd25Qcm9wZXJ0eVNsb3QoSlNDZWxsKiBjZWxsLCBFeGVjU3RhdGUqIGV4ZWMsIFByb3Bl
cnR5TmFtZSBwcm9wZXJ0eU5hbWUsIFByb3BlcnR5U2xvdCYgc2xvdCkKIHsKICAgICBKU0FycmF5
KiB0aGlzT2JqZWN0ID0ganNDYXN0PEpTQXJyYXkqPihjZWxsKTsKICAgICBpZiAocHJvcGVydHlO
YW1lID09IGV4ZWMtPnByb3BlcnR5TmFtZXMoKS5sZW5ndGgpIHsKQEAgLTY3MywxNSArNjcyLDE0
IEBAIGJvb2wgSlNBcnJheTo6Z2V0T3duUHJvcGVydHlTbG90KEpTQ2VsbCoKICAgICAgICAgcmV0
dXJuIHRydWU7CiAgICAgfQogCi0gICAgYm9vbCBpc0FycmF5SW5kZXg7Ci0gICAgdW5zaWduZWQg
aSA9IHByb3BlcnR5TmFtZS50b0FycmF5SW5kZXgoaXNBcnJheUluZGV4KTsKLSAgICBpZiAoaXNB
cnJheUluZGV4KQorICAgIHVuc2lnbmVkIGkgPSBwcm9wZXJ0eU5hbWUuYXNJbmRleCgpOworICAg
IGlmIChpICE9IFByb3BlcnR5TmFtZTo6Tm90QW5JbmRleCkKICAgICAgICAgcmV0dXJuIEpTQXJy
YXk6OmdldE93blByb3BlcnR5U2xvdEJ5SW5kZXgodGhpc09iamVjdCwgZXhlYywgaSwgc2xvdCk7
CiAKICAgICByZXR1cm4gSlNPYmplY3Q6OmdldE93blByb3BlcnR5U2xvdCh0aGlzT2JqZWN0LCBl
eGVjLCBwcm9wZXJ0eU5hbWUsIHNsb3QpOwogfQogCi1ib29sIEpTQXJyYXk6OmdldE93blByb3Bl
cnR5RGVzY3JpcHRvcihKU09iamVjdCogb2JqZWN0LCBFeGVjU3RhdGUqIGV4ZWMsIGNvbnN0IElk
ZW50aWZpZXImIHByb3BlcnR5TmFtZSwgUHJvcGVydHlEZXNjcmlwdG9yJiBkZXNjcmlwdG9yKQor
Ym9vbCBKU0FycmF5OjpnZXRPd25Qcm9wZXJ0eURlc2NyaXB0b3IoSlNPYmplY3QqIG9iamVjdCwg
RXhlY1N0YXRlKiBleGVjLCBQcm9wZXJ0eU5hbWUgcHJvcGVydHlOYW1lLCBQcm9wZXJ0eURlc2Ny
aXB0b3ImIGRlc2NyaXB0b3IpCiB7CiAgICAgSlNBcnJheSogdGhpc09iamVjdCA9IGpzQ2FzdDxK
U0FycmF5Kj4ob2JqZWN0KTsKICAgICBpZiAocHJvcGVydHlOYW1lID09IGV4ZWMtPnByb3BlcnR5
TmFtZXMoKS5sZW5ndGgpIHsKQEAgLTY5MSw5ICs2ODksOCBAQCBib29sIEpTQXJyYXk6OmdldE93
blByb3BlcnR5RGVzY3JpcHRvcihKCiAKICAgICBBcnJheVN0b3JhZ2UqIHN0b3JhZ2UgPSB0aGlz
T2JqZWN0LT5tX3N0b3JhZ2U7CiAgICAgCi0gICAgYm9vbCBpc0FycmF5SW5kZXg7Ci0gICAgdW5z
aWduZWQgaSA9IHByb3BlcnR5TmFtZS50b0FycmF5SW5kZXgoaXNBcnJheUluZGV4KTsKLSAgICBp
ZiAoaXNBcnJheUluZGV4KSB7CisgICAgdW5zaWduZWQgaSA9IHByb3BlcnR5TmFtZS5hc0luZGV4
KCk7CisgICAgaWYgKGkgIT0gUHJvcGVydHlOYW1lOjpOb3RBbkluZGV4KSB7CiAgICAgICAgIGlm
IChpID49IHN0b3JhZ2UtPm1fbGVuZ3RoKQogICAgICAgICAgICAgcmV0dXJuIGZhbHNlOwogICAg
ICAgICBpZiAoaSA8IHRoaXNPYmplY3QtPm1fdmVjdG9yTGVuZ3RoKSB7CkBAIC03MTQsMTIgKzcx
MSwxMSBAQCBib29sIEpTQXJyYXk6OmdldE93blByb3BlcnR5RGVzY3JpcHRvcihKCiB9CiAKIC8v
IEVDTUEgMTUuNC41LjEKLXZvaWQgSlNBcnJheTo6cHV0KEpTQ2VsbCogY2VsbCwgRXhlY1N0YXRl
KiBleGVjLCBjb25zdCBJZGVudGlmaWVyJiBwcm9wZXJ0eU5hbWUsIEpTVmFsdWUgdmFsdWUsIFB1
dFByb3BlcnR5U2xvdCYgc2xvdCkKK3ZvaWQgSlNBcnJheTo6cHV0KEpTQ2VsbCogY2VsbCwgRXhl
Y1N0YXRlKiBleGVjLCBQcm9wZXJ0eU5hbWUgcHJvcGVydHlOYW1lLCBKU1ZhbHVlIHZhbHVlLCBQ
dXRQcm9wZXJ0eVNsb3QmIHNsb3QpCiB7CiAgICAgSlNBcnJheSogdGhpc09iamVjdCA9IGpzQ2Fz
dDxKU0FycmF5Kj4oY2VsbCk7Ci0gICAgYm9vbCBpc0FycmF5SW5kZXg7Ci0gICAgdW5zaWduZWQg
aSA9IHByb3BlcnR5TmFtZS50b0FycmF5SW5kZXgoaXNBcnJheUluZGV4KTsKLSAgICBpZiAoaXNB
cnJheUluZGV4KSB7CisgICAgdW5zaWduZWQgaSA9IHByb3BlcnR5TmFtZS5hc0luZGV4KCk7Cisg
ICAgaWYgKGkgIT0gUHJvcGVydHlOYW1lOjpOb3RBbkluZGV4KSB7CiAgICAgICAgIHB1dEJ5SW5k
ZXgodGhpc09iamVjdCwgZXhlYywgaSwgdmFsdWUsIHNsb3QuaXNTdHJpY3RNb2RlKCkpOwogICAg
ICAgICByZXR1cm47CiAgICAgfQpAQCAtOTE5LDEyICs5MTUsMTEgQEAgYm9vbCBKU0FycmF5Ojpw
dXREaXJlY3RJbmRleEJleW9uZFZlY3RvcgogICAgIHJldHVybiB0cnVlOwogfQogCi1ib29sIEpT
QXJyYXk6OmRlbGV0ZVByb3BlcnR5KEpTQ2VsbCogY2VsbCwgRXhlY1N0YXRlKiBleGVjLCBjb25z
dCBJZGVudGlmaWVyJiBwcm9wZXJ0eU5hbWUpCitib29sIEpTQXJyYXk6OmRlbGV0ZVByb3BlcnR5
KEpTQ2VsbCogY2VsbCwgRXhlY1N0YXRlKiBleGVjLCBQcm9wZXJ0eU5hbWUgcHJvcGVydHlOYW1l
KQogewogICAgIEpTQXJyYXkqIHRoaXNPYmplY3QgPSBqc0Nhc3Q8SlNBcnJheSo+KGNlbGwpOwot
ICAgIGJvb2wgaXNBcnJheUluZGV4OwotICAgIHVuc2lnbmVkIGkgPSBwcm9wZXJ0eU5hbWUudG9B
cnJheUluZGV4KGlzQXJyYXlJbmRleCk7Ci0gICAgaWYgKGlzQXJyYXlJbmRleCkKKyAgICB1bnNp
Z25lZCBpID0gcHJvcGVydHlOYW1lLmFzSW5kZXgoKTsKKyAgICBpZiAoaSAhPSBQcm9wZXJ0eU5h
bWU6Ok5vdEFuSW5kZXgpCiAgICAgICAgIHJldHVybiB0aGlzT2JqZWN0LT5tZXRob2RUYWJsZSgp
LT5kZWxldGVQcm9wZXJ0eUJ5SW5kZXgodGhpc09iamVjdCwgZXhlYywgaSk7CiAKICAgICBpZiAo
cHJvcGVydHlOYW1lID09IGV4ZWMtPnByb3BlcnR5TmFtZXMoKS5sZW5ndGgpCkluZGV4OiBTb3Vy
Y2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9KU0FycmF5LmgKPT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNl
L0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvSlNBcnJheS5oCShyZXZpc2lvbiAxMTY2NjcpCisrKyBT
b3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9KU0FycmF5LmgJKHdvcmtpbmcgY29weSkKQEAg
LTE2NCwxMSArMTY0LDExIEBAIG5hbWVzcGFjZSBKU0MgewogICAgICAgICAvLyAgIC0gY2FsbGVk
ICdjb21wbGV0ZUluaXRpYWxpemF0aW9uJyBhZnRlciBhbGwgcHJvcGVydGllcyBoYXZlIGJlZW4g
aW5pdGlhbGl6ZWQuCiAgICAgICAgIHN0YXRpYyBKU0FycmF5KiB0cnlDcmVhdGVVbmluaXRpYWxp
emVkKEpTR2xvYmFsRGF0YSYsIFN0cnVjdHVyZSosIHVuc2lnbmVkIGluaXRpYWxMZW5ndGgpOwog
Ci0gICAgICAgIEpTX0VYUE9SVF9QUklWQVRFIHN0YXRpYyBib29sIGRlZmluZU93blByb3BlcnR5
KEpTT2JqZWN0KiwgRXhlY1N0YXRlKiwgY29uc3QgSWRlbnRpZmllciYsIFByb3BlcnR5RGVzY3Jp
cHRvciYsIGJvb2wgdGhyb3dFeGNlcHRpb24pOworICAgICAgICBKU19FWFBPUlRfUFJJVkFURSBz
dGF0aWMgYm9vbCBkZWZpbmVPd25Qcm9wZXJ0eShKU09iamVjdCosIEV4ZWNTdGF0ZSosIFByb3Bl
cnR5TmFtZSwgUHJvcGVydHlEZXNjcmlwdG9yJiwgYm9vbCB0aHJvd0V4Y2VwdGlvbik7CiAKLSAg
ICAgICAgc3RhdGljIGJvb2wgZ2V0T3duUHJvcGVydHlTbG90KEpTQ2VsbCosIEV4ZWNTdGF0ZSos
IGNvbnN0IElkZW50aWZpZXImLCBQcm9wZXJ0eVNsb3QmKTsKKyAgICAgICAgc3RhdGljIGJvb2wg
Z2V0T3duUHJvcGVydHlTbG90KEpTQ2VsbCosIEV4ZWNTdGF0ZSosIFByb3BlcnR5TmFtZSwgUHJv
cGVydHlTbG90Jik7CiAgICAgICAgIEpTX0VYUE9SVF9QUklWQVRFIHN0YXRpYyBib29sIGdldE93
blByb3BlcnR5U2xvdEJ5SW5kZXgoSlNDZWxsKiwgRXhlY1N0YXRlKiwgdW5zaWduZWQgcHJvcGVy
dHlOYW1lLCBQcm9wZXJ0eVNsb3QmKTsKLSAgICAgICAgc3RhdGljIGJvb2wgZ2V0T3duUHJvcGVy
dHlEZXNjcmlwdG9yKEpTT2JqZWN0KiwgRXhlY1N0YXRlKiwgY29uc3QgSWRlbnRpZmllciYsIFBy
b3BlcnR5RGVzY3JpcHRvciYpOworICAgICAgICBzdGF0aWMgYm9vbCBnZXRPd25Qcm9wZXJ0eURl
c2NyaXB0b3IoSlNPYmplY3QqLCBFeGVjU3RhdGUqLCBQcm9wZXJ0eU5hbWUsIFByb3BlcnR5RGVz
Y3JpcHRvciYpOwogICAgICAgICBzdGF0aWMgdm9pZCBwdXRCeUluZGV4KEpTQ2VsbCosIEV4ZWNT
dGF0ZSosIHVuc2lnbmVkIHByb3BlcnR5TmFtZSwgSlNWYWx1ZSwgYm9vbCBzaG91bGRUaHJvdyk7
CiAgICAgICAgIC8vIFRoaXMgaXMgc2ltaWxhciB0byB0aGUgSlNPYmplY3Q6OnB1dERpcmVjdCog
bWV0aG9kczoKICAgICAgICAgLy8gIC0gdGhlIHByb3RvdHlwZSBjaGFpbiBpcyBub3QgY29uc3Vs
dGVkCkBAIC0yODEsOSArMjgxLDkgQEAgbmFtZXNwYWNlIEpTQyB7CiAKICAgICBwcm90ZWN0ZWQ6
CiAgICAgICAgIHN0YXRpYyBjb25zdCB1bnNpZ25lZCBTdHJ1Y3R1cmVGbGFncyA9IE92ZXJyaWRl
c0dldE93blByb3BlcnR5U2xvdCB8IE92ZXJyaWRlc1Zpc2l0Q2hpbGRyZW4gfCBPdmVycmlkZXNH
ZXRQcm9wZXJ0eU5hbWVzIHwgSlNPYmplY3Q6OlN0cnVjdHVyZUZsYWdzOwotICAgICAgICBzdGF0
aWMgdm9pZCBwdXQoSlNDZWxsKiwgRXhlY1N0YXRlKiwgY29uc3QgSWRlbnRpZmllciYgcHJvcGVy
dHlOYW1lLCBKU1ZhbHVlLCBQdXRQcm9wZXJ0eVNsb3QmKTsKKyAgICAgICAgc3RhdGljIHZvaWQg
cHV0KEpTQ2VsbCosIEV4ZWNTdGF0ZSosIFByb3BlcnR5TmFtZSBwcm9wZXJ0eU5hbWUsIEpTVmFs
dWUsIFB1dFByb3BlcnR5U2xvdCYpOwogCi0gICAgICAgIHN0YXRpYyBib29sIGRlbGV0ZVByb3Bl
cnR5KEpTQ2VsbCosIEV4ZWNTdGF0ZSosIGNvbnN0IElkZW50aWZpZXImIHByb3BlcnR5TmFtZSk7
CisgICAgICAgIHN0YXRpYyBib29sIGRlbGV0ZVByb3BlcnR5KEpTQ2VsbCosIEV4ZWNTdGF0ZSos
IFByb3BlcnR5TmFtZSBwcm9wZXJ0eU5hbWUpOwogICAgICAgICBzdGF0aWMgYm9vbCBkZWxldGVQ
cm9wZXJ0eUJ5SW5kZXgoSlNDZWxsKiwgRXhlY1N0YXRlKiwgdW5zaWduZWQgcHJvcGVydHlOYW1l
KTsKICAgICAgICAgc3RhdGljIHZvaWQgZ2V0T3duUHJvcGVydHlOYW1lcyhKU09iamVjdCosIEV4
ZWNTdGF0ZSosIFByb3BlcnR5TmFtZUFycmF5JiwgRW51bWVyYXRpb25Nb2RlKTsKIApAQCAtMzU3
LDE2ICszNTcsNiBAQCBuYW1lc3BhY2UgSlNDIHsKICAgICBpbmxpbmUgYm9vbCBpc0pTQXJyYXko
SlNDZWxsKiBjZWxsKSB7IHJldHVybiBjZWxsLT5jbGFzc0luZm8oKSA9PSAmSlNBcnJheTo6c19p
bmZvOyB9CiAgICAgaW5saW5lIGJvb2wgaXNKU0FycmF5KEpTVmFsdWUgdikgeyByZXR1cm4gdi5p
c0NlbGwoKSAmJiBpc0pTQXJyYXkodi5hc0NlbGwoKSk7IH0KIAotICAgIC8vIFJ1bGUgZnJvbSBF
Q01BIDE1LjIgYWJvdXQgd2hhdCBhbiBhcnJheSBpbmRleCBpcy4KLSAgICAvLyBNdXN0IGV4YWN0
bHkgbWF0Y2ggc3RyaW5nIGZvcm0gb2YgYW4gdW5zaWduZWQgaW50ZWdlciwgYW5kIGJlIGxlc3Mg
dGhhbiAyXjMyIC0gMS4KLSAgICBpbmxpbmUgdW5zaWduZWQgSWRlbnRpZmllcjo6dG9BcnJheUlu
ZGV4KGJvb2wmIG9rKSBjb25zdAotICAgIHsKLSAgICAgICAgdW5zaWduZWQgaSA9IHRvVUludDMy
KG9rKTsKLSAgICAgICAgaWYgKG9rICYmIGkgPj0gMHhGRkZGRkZGRlUpCi0gICAgICAgICAgICBv
ayA9IGZhbHNlOwotICAgICAgICByZXR1cm4gaTsKLSAgICB9Ci0KIC8vIFRoZSBkZWZpbml0aW9u
IG9mIE1BWF9TVE9SQUdFX1ZFQ1RPUl9MRU5HVEggaXMgZGVwZW5kYW50IG9uIHRoZSBkZWZpbml0
aW9uIHN0b3JhZ2VTaXplCiAvLyBmdW5jdGlvbiBiZWxvdyAtIHRoZSBNQVhfU1RPUkFHRV9WRUNU
T1JfTEVOR1RIIGxpbWl0IGlzIGRlZmluZWQgc3VjaCB0aGF0IHRoZSBzdG9yYWdlCiAvLyBzaXpl
IGNhbGN1bGF0aW9uIGNhbm5vdCBvdmVyZmxvdy4gIChzaXplb2YoQXJyYXlTdG9yYWdlKSAtIHNp
emVvZihXcml0ZUJhcnJpZXI8VW5rbm93bj4pKSArCkluZGV4OiBTb3VyY2UvSmF2YVNjcmlwdENv
cmUvcnVudGltZS9KU0JvdW5kRnVuY3Rpb24uY3BwCj09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9KYXZh
U2NyaXB0Q29yZS9ydW50aW1lL0pTQm91bmRGdW5jdGlvbi5jcHAJKHJldmlzaW9uIDExNjY2NykK
KysrIFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL0pTQm91bmRGdW5jdGlvbi5jcHAJKHdv
cmtpbmcgY29weSkKQEAgLTc2LDcgKzc2LDcgQEAgRW5jb2RlZEpTVmFsdWUgSlNDX0hPU1RfQ0FM
TCBib3VuZEZ1bmN0aQogICAgIHJldHVybiBKU1ZhbHVlOjplbmNvZGUoY29uc3RydWN0KGV4ZWMs
IHRhcmdldEZ1bmN0aW9uLCBjb25zdHJ1Y3RUeXBlLCBjb25zdHJ1Y3REYXRhLCBhcmdzKSk7CiB9
CiAKLUpTQm91bmRGdW5jdGlvbiogSlNCb3VuZEZ1bmN0aW9uOjpjcmVhdGUoRXhlY1N0YXRlKiBl
eGVjLCBKU0dsb2JhbE9iamVjdCogZ2xvYmFsT2JqZWN0LCBKU09iamVjdCogdGFyZ2V0RnVuY3Rp
b24sIEpTVmFsdWUgYm91bmRUaGlzLCBKU1ZhbHVlIGJvdW5kQXJncywgaW50IGxlbmd0aCwgY29u
c3QgSWRlbnRpZmllciYgbmFtZSkKK0pTQm91bmRGdW5jdGlvbiogSlNCb3VuZEZ1bmN0aW9uOjpj
cmVhdGUoRXhlY1N0YXRlKiBleGVjLCBKU0dsb2JhbE9iamVjdCogZ2xvYmFsT2JqZWN0LCBKU09i
amVjdCogdGFyZ2V0RnVuY3Rpb24sIEpTVmFsdWUgYm91bmRUaGlzLCBKU1ZhbHVlIGJvdW5kQXJn
cywgaW50IGxlbmd0aCwgY29uc3QgVVN0cmluZyYgbmFtZSkKIHsKICAgICBDb25zdHJ1Y3REYXRh
IGNvbnN0cnVjdERhdGE7CiAgICAgQ29uc3RydWN0VHlwZSBjb25zdHJ1Y3RUeXBlID0gSlNDOjpn
ZXRDb25zdHJ1Y3REYXRhKHRhcmdldEZ1bmN0aW9uLCBjb25zdHJ1Y3REYXRhKTsKQEAgLTEwNyw3
ICsxMDcsNyBAQCBKU0JvdW5kRnVuY3Rpb246OkpTQm91bmRGdW5jdGlvbihFeGVjU3RhCiB7CiB9
CiAKLXZvaWQgSlNCb3VuZEZ1bmN0aW9uOjpmaW5pc2hDcmVhdGlvbihFeGVjU3RhdGUqIGV4ZWMs
IE5hdGl2ZUV4ZWN1dGFibGUqIGV4ZWN1dGFibGUsIGludCBsZW5ndGgsIGNvbnN0IElkZW50aWZp
ZXImIG5hbWUpCit2b2lkIEpTQm91bmRGdW5jdGlvbjo6ZmluaXNoQ3JlYXRpb24oRXhlY1N0YXRl
KiBleGVjLCBOYXRpdmVFeGVjdXRhYmxlKiBleGVjdXRhYmxlLCBpbnQgbGVuZ3RoLCBjb25zdCBV
U3RyaW5nJiBuYW1lKQogewogICAgIEJhc2U6OmZpbmlzaENyZWF0aW9uKGV4ZWMsIGV4ZWN1dGFi
bGUsIGxlbmd0aCwgbmFtZSk7CiAgICAgQVNTRVJUKGluaGVyaXRzKCZzX2luZm8pKTsKSW5kZXg6
IFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL0pTQm91bmRGdW5jdGlvbi5oCj09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT0KLS0tIFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL0pTQm91bmRGdW5jdGlvbi5oCShy
ZXZpc2lvbiAxMTY2NjcpCisrKyBTb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9KU0JvdW5k
RnVuY3Rpb24uaAkod29ya2luZyBjb3B5KQpAQCAtMzcsNyArMzcsNyBAQCBjbGFzcyBKU0JvdW5k
RnVuY3Rpb24gOiBwdWJsaWMgSlNGdW5jdGlvCiBwdWJsaWM6CiAgICAgdHlwZWRlZiBKU0Z1bmN0
aW9uIEJhc2U7CiAKLSAgICBzdGF0aWMgSlNCb3VuZEZ1bmN0aW9uKiBjcmVhdGUoRXhlY1N0YXRl
KiwgSlNHbG9iYWxPYmplY3QqLCBKU09iamVjdCogdGFyZ2V0RnVuY3Rpb24sIEpTVmFsdWUgYm91
bmRUaGlzLCBKU1ZhbHVlIGJvdW5kQXJncywgaW50LCBjb25zdCBJZGVudGlmaWVyJik7CisgICAg
c3RhdGljIEpTQm91bmRGdW5jdGlvbiogY3JlYXRlKEV4ZWNTdGF0ZSosIEpTR2xvYmFsT2JqZWN0
KiwgSlNPYmplY3QqIHRhcmdldEZ1bmN0aW9uLCBKU1ZhbHVlIGJvdW5kVGhpcywgSlNWYWx1ZSBi
b3VuZEFyZ3MsIGludCwgY29uc3QgVVN0cmluZyYpOwogCiAgICAgc3RhdGljIGJvb2wgaGFzSW5z
dGFuY2UoSlNPYmplY3QqLCBFeGVjU3RhdGUqLCBKU1ZhbHVlLCBKU1ZhbHVlIHByb3RvKTsKIApA
QCAtNjEsNyArNjEsNyBAQCBwcm90ZWN0ZWQ6CiBwcml2YXRlOgogICAgIEpTQm91bmRGdW5jdGlv
bihFeGVjU3RhdGUqLCBKU0dsb2JhbE9iamVjdCosIFN0cnVjdHVyZSosIEpTT2JqZWN0KiB0YXJn
ZXRGdW5jdGlvbiwgSlNWYWx1ZSBib3VuZFRoaXMsIEpTVmFsdWUgYm91bmRBcmdzKTsKICAgICAK
LSAgICB2b2lkIGZpbmlzaENyZWF0aW9uKEV4ZWNTdGF0ZSosIE5hdGl2ZUV4ZWN1dGFibGUqLCBp
bnQsIGNvbnN0IElkZW50aWZpZXImKTsKKyAgICB2b2lkIGZpbmlzaENyZWF0aW9uKEV4ZWNTdGF0
ZSosIE5hdGl2ZUV4ZWN1dGFibGUqLCBpbnQsIGNvbnN0IFVTdHJpbmcmKTsKIAogICAgIFdyaXRl
QmFycmllcjxKU09iamVjdD4gbV90YXJnZXRGdW5jdGlvbjsKICAgICBXcml0ZUJhcnJpZXI8VW5r
bm93bj4gbV9ib3VuZFRoaXM7CkluZGV4OiBTb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9K
U0NlbGwuY3BwCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL0pT
Q2VsbC5jcHAJKHJldmlzaW9uIDExNjY2NykKKysrIFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50
aW1lL0pTQ2VsbC5jcHAJKHdvcmtpbmcgY29weSkKQEAgLTcxLDcgKzcxLDcgQEAgQ29uc3RydWN0
VHlwZSBKU0NlbGw6OmdldENvbnN0cnVjdERhdGEoSgogICAgIHJldHVybiBDb25zdHJ1Y3RUeXBl
Tm9uZTsKIH0KIAotYm9vbCBKU0NlbGw6OmdldE93blByb3BlcnR5U2xvdChKU0NlbGwqIGNlbGws
IEV4ZWNTdGF0ZSogZXhlYywgY29uc3QgSWRlbnRpZmllciYgaWRlbnRpZmllciwgUHJvcGVydHlT
bG90JiBzbG90KQorYm9vbCBKU0NlbGw6OmdldE93blByb3BlcnR5U2xvdChKU0NlbGwqIGNlbGws
IEV4ZWNTdGF0ZSogZXhlYywgUHJvcGVydHlOYW1lIGlkZW50aWZpZXIsIFByb3BlcnR5U2xvdCYg
c2xvdCkKIHsKICAgICAvLyBUaGlzIGlzIG5vdCBhIGdlbmVyYWwgcHVycG9zZSBpbXBsZW1lbnRh
dGlvbiBvZiBnZXRPd25Qcm9wZXJ0eVNsb3QuCiAgICAgLy8gSXQgc2hvdWxkIG9ubHkgYmUgY2Fs
bGVkIGJ5IEpTVmFsdWU6OmdldC4KQEAgLTk1LDcgKzk1LDcgQEAgYm9vbCBKU0NlbGw6OmdldE93
blByb3BlcnR5U2xvdEJ5SW5kZXgoSgogICAgIHJldHVybiB0cnVlOwogfQogCi12b2lkIEpTQ2Vs
bDo6cHV0KEpTQ2VsbCogY2VsbCwgRXhlY1N0YXRlKiBleGVjLCBjb25zdCBJZGVudGlmaWVyJiBp
ZGVudGlmaWVyLCBKU1ZhbHVlIHZhbHVlLCBQdXRQcm9wZXJ0eVNsb3QmIHNsb3QpCit2b2lkIEpT
Q2VsbDo6cHV0KEpTQ2VsbCogY2VsbCwgRXhlY1N0YXRlKiBleGVjLCBQcm9wZXJ0eU5hbWUgaWRl
bnRpZmllciwgSlNWYWx1ZSB2YWx1ZSwgUHV0UHJvcGVydHlTbG90JiBzbG90KQogewogICAgIGlm
IChjZWxsLT5pc1N0cmluZygpKSB7CiAgICAgICAgIEpTVmFsdWUoY2VsbCkucHV0VG9QcmltaXRp
dmUoZXhlYywgaWRlbnRpZmllciwgdmFsdWUsIHNsb3QpOwpAQCAtMTE2LDcgKzExNiw3IEBAIHZv
aWQgSlNDZWxsOjpwdXRCeUluZGV4KEpTQ2VsbCogY2VsbCwgRXgKICAgICB0aGlzT2JqZWN0LT5t
ZXRob2RUYWJsZSgpLT5wdXRCeUluZGV4KHRoaXNPYmplY3QsIGV4ZWMsIGlkZW50aWZpZXIsIHZh
bHVlLCBzaG91bGRUaHJvdyk7CiB9CiAKLWJvb2wgSlNDZWxsOjpkZWxldGVQcm9wZXJ0eShKU0Nl
bGwqIGNlbGwsIEV4ZWNTdGF0ZSogZXhlYywgY29uc3QgSWRlbnRpZmllciYgaWRlbnRpZmllcikK
K2Jvb2wgSlNDZWxsOjpkZWxldGVQcm9wZXJ0eShKU0NlbGwqIGNlbGwsIEV4ZWNTdGF0ZSogZXhl
YywgUHJvcGVydHlOYW1lIGlkZW50aWZpZXIpCiB7CiAgICAgSlNPYmplY3QqIHRoaXNPYmplY3Qg
PSBjZWxsLT50b09iamVjdChleGVjLCBleGVjLT5sZXhpY2FsR2xvYmFsT2JqZWN0KCkpOwogICAg
IHJldHVybiB0aGlzT2JqZWN0LT5tZXRob2RUYWJsZSgpLT5kZWxldGVQcm9wZXJ0eSh0aGlzT2Jq
ZWN0LCBleGVjLCBpZGVudGlmaWVyKTsKQEAgLTE5NSwxOCArMTk1LDE4IEBAIGJvb2wgSlNDZWxs
OjpoYXNJbnN0YW5jZShKU09iamVjdCosIEV4ZWMKICAgICByZXR1cm4gZmFsc2U7CiB9CiAKLXZv
aWQgSlNDZWxsOjpwdXREaXJlY3RWaXJ0dWFsKEpTT2JqZWN0KiwgRXhlY1N0YXRlKiwgY29uc3Qg
SWRlbnRpZmllciYsIEpTVmFsdWUsIHVuc2lnbmVkKQordm9pZCBKU0NlbGw6OnB1dERpcmVjdFZp
cnR1YWwoSlNPYmplY3QqLCBFeGVjU3RhdGUqLCBQcm9wZXJ0eU5hbWUsIEpTVmFsdWUsIHVuc2ln
bmVkKQogewogICAgIEFTU0VSVF9OT1RfUkVBQ0hFRCgpOwogfQogCi1ib29sIEpTQ2VsbDo6ZGVm
aW5lT3duUHJvcGVydHkoSlNPYmplY3QqLCBFeGVjU3RhdGUqLCBjb25zdCBJZGVudGlmaWVyJiwg
UHJvcGVydHlEZXNjcmlwdG9yJiwgYm9vbCkKK2Jvb2wgSlNDZWxsOjpkZWZpbmVPd25Qcm9wZXJ0
eShKU09iamVjdCosIEV4ZWNTdGF0ZSosIFByb3BlcnR5TmFtZSwgUHJvcGVydHlEZXNjcmlwdG9y
JiwgYm9vbCkKIHsKICAgICBBU1NFUlRfTk9UX1JFQUNIRUQoKTsKICAgICByZXR1cm4gZmFsc2U7
CiB9CiAKLWJvb2wgSlNDZWxsOjpnZXRPd25Qcm9wZXJ0eURlc2NyaXB0b3IoSlNPYmplY3QqLCBF
eGVjU3RhdGUqLCBjb25zdCBJZGVudGlmaWVyJiwgUHJvcGVydHlEZXNjcmlwdG9yJikKK2Jvb2wg
SlNDZWxsOjpnZXRPd25Qcm9wZXJ0eURlc2NyaXB0b3IoSlNPYmplY3QqLCBFeGVjU3RhdGUqLCBQ
cm9wZXJ0eU5hbWUsIFByb3BlcnR5RGVzY3JpcHRvciYpCiB7CiAgICAgQVNTRVJUX05PVF9SRUFD
SEVEKCk7CiAgICAgcmV0dXJuIGZhbHNlOwpJbmRleDogU291cmNlL0phdmFTY3JpcHRDb3JlL3J1
bnRpbWUvSlNDZWxsLmgKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRp
bWUvSlNDZWxsLmgJKHJldmlzaW9uIDExNjY2NykKKysrIFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9y
dW50aW1lL0pTQ2VsbC5oCSh3b3JraW5nIGNvcHkpCkBAIC0xMDYsMTAgKzEwNiwxMCBAQCBuYW1l
c3BhY2UgSlNDIHsKICAgICAgICAgY29uc3QgQ2xhc3NJbmZvKiBjbGFzc0luZm8oKSBjb25zdDsK
ICAgICAgICAgY29uc3QgQ2xhc3NJbmZvKiB2YWxpZGF0ZWRDbGFzc0luZm8oKSBjb25zdDsKICAg
ICAgICAgY29uc3QgTWV0aG9kVGFibGUqIG1ldGhvZFRhYmxlKCkgY29uc3Q7Ci0gICAgICAgIHN0
YXRpYyB2b2lkIHB1dChKU0NlbGwqLCBFeGVjU3RhdGUqLCBjb25zdCBJZGVudGlmaWVyJiBwcm9w
ZXJ0eU5hbWUsIEpTVmFsdWUsIFB1dFByb3BlcnR5U2xvdCYpOworICAgICAgICBzdGF0aWMgdm9p
ZCBwdXQoSlNDZWxsKiwgRXhlY1N0YXRlKiwgUHJvcGVydHlOYW1lIHByb3BlcnR5TmFtZSwgSlNW
YWx1ZSwgUHV0UHJvcGVydHlTbG90Jik7CiAgICAgICAgIHN0YXRpYyB2b2lkIHB1dEJ5SW5kZXgo
SlNDZWxsKiwgRXhlY1N0YXRlKiwgdW5zaWduZWQgcHJvcGVydHlOYW1lLCBKU1ZhbHVlLCBib29s
IHNob3VsZFRocm93KTsKICAgICAgICAgCi0gICAgICAgIHN0YXRpYyBib29sIGRlbGV0ZVByb3Bl
cnR5KEpTQ2VsbCosIEV4ZWNTdGF0ZSosIGNvbnN0IElkZW50aWZpZXImIHByb3BlcnR5TmFtZSk7
CisgICAgICAgIHN0YXRpYyBib29sIGRlbGV0ZVByb3BlcnR5KEpTQ2VsbCosIEV4ZWNTdGF0ZSos
IFByb3BlcnR5TmFtZSBwcm9wZXJ0eU5hbWUpOwogICAgICAgICBzdGF0aWMgYm9vbCBkZWxldGVQ
cm9wZXJ0eUJ5SW5kZXgoSlNDZWxsKiwgRXhlY1N0YXRlKiwgdW5zaWduZWQgcHJvcGVydHlOYW1l
KTsKIAogICAgICAgICBzdGF0aWMgSlNPYmplY3QqIHRvVGhpc09iamVjdChKU0NlbGwqLCBFeGVj
U3RhdGUqKTsKQEAgLTEyMSw3ICsxMjEsNyBAQCBuYW1lc3BhY2UgSlNDIHsKICAgICAgICAgLy8g
ZmFzdEdldE93blByb3BlcnR5U2xvdCB0byBnZXRPd25Qcm9wZXJ0eVNsb3QuIENhbGxlcnMgc2hv
dWxkIGFsd2F5cwogICAgICAgICAvLyBjYWxsIHRoaXMgZnVuY3Rpb24sIG5vdCBpdHMgc2xvd2Vy
IHZpcnR1YWwgY291bnRlcnBhcnQuIChGb3IgaW50ZWdlcgogICAgICAgICAvLyBwcm9wZXJ0eSBu
YW1lcywgd2Ugd2FudCBhIHNpbWlsYXIgaW50ZXJmYWNlIHdpdGggYXBwcm9wcmlhdGUgb3B0aW1p
emF0aW9ucy4pCi0gICAgICAgIGJvb2wgZmFzdEdldE93blByb3BlcnR5U2xvdChFeGVjU3RhdGUq
LCBjb25zdCBJZGVudGlmaWVyJiBwcm9wZXJ0eU5hbWUsIFByb3BlcnR5U2xvdCYpOworICAgICAg
ICBib29sIGZhc3RHZXRPd25Qcm9wZXJ0eVNsb3QoRXhlY1N0YXRlKiwgUHJvcGVydHlOYW1lIHBy
b3BlcnR5TmFtZSwgUHJvcGVydHlTbG90Jik7CiAgICAgICAgIEpTVmFsdWUgZmFzdEdldE93blBy
b3BlcnR5KEV4ZWNTdGF0ZSosIGNvbnN0IFVTdHJpbmcmKTsKIAogICAgICAgICBzdGF0aWMgcHRy
ZGlmZl90IHN0cnVjdHVyZU9mZnNldCgpCkBAIC0xNTAsNyArMTUwLDcgQEAgbmFtZXNwYWNlIEpT
QyB7CiAgICAgICAgIHZvaWQgZmluaXNoQ3JlYXRpb24oSlNHbG9iYWxEYXRhJiwgU3RydWN0dXJl
KiwgQ3JlYXRpbmdFYXJseUNlbGxUYWcpOwogCiAgICAgICAgIC8vIEJhc2UgaW1wbGVtZW50YXRp
b247IGZvciBub24tb2JqZWN0IGNsYXNzZXMgaW1wbGVtZW50cyBnZXRQcm9wZXJ0eVNsb3QuCi0g
ICAgICAgIHN0YXRpYyBib29sIGdldE93blByb3BlcnR5U2xvdChKU0NlbGwqLCBFeGVjU3RhdGUq
LCBjb25zdCBJZGVudGlmaWVyJiBwcm9wZXJ0eU5hbWUsIFByb3BlcnR5U2xvdCYpOworICAgICAg
ICBzdGF0aWMgYm9vbCBnZXRPd25Qcm9wZXJ0eVNsb3QoSlNDZWxsKiwgRXhlY1N0YXRlKiwgUHJv
cGVydHlOYW1lIHByb3BlcnR5TmFtZSwgUHJvcGVydHlTbG90Jik7CiAgICAgICAgIHN0YXRpYyBi
b29sIGdldE93blByb3BlcnR5U2xvdEJ5SW5kZXgoSlNDZWxsKiwgRXhlY1N0YXRlKiwgdW5zaWdu
ZWQgcHJvcGVydHlOYW1lLCBQcm9wZXJ0eVNsb3QmKTsKIAogICAgICAgICAvLyBEdW1teSBpbXBs
ZW1lbnRhdGlvbnMgb2Ygb3ZlcnJpZGUtYWJsZSBzdGF0aWMgZnVuY3Rpb25zIGZvciBjbGFzc2Vz
IHRvIHB1dCBpbiB0aGVpciBNZXRob2RUYWJsZQpAQCAtMTU5LDkgKzE1OSw5IEBAIG5hbWVzcGFj
ZSBKU0MgewogICAgICAgICBzdGF0aWMgTk9fUkVUVVJOX0RVRV9UT19BU1NFUlQgdm9pZCBnZXRQ
cm9wZXJ0eU5hbWVzKEpTT2JqZWN0KiwgRXhlY1N0YXRlKiwgUHJvcGVydHlOYW1lQXJyYXkmLCBF
bnVtZXJhdGlvbk1vZGUpOwogICAgICAgICBzdGF0aWMgVVN0cmluZyBjbGFzc05hbWUoY29uc3Qg
SlNPYmplY3QqKTsKICAgICAgICAgc3RhdGljIGJvb2wgaGFzSW5zdGFuY2UoSlNPYmplY3QqLCBF
eGVjU3RhdGUqLCBKU1ZhbHVlLCBKU1ZhbHVlIHByb3RvdHlwZVByb3BlcnR5KTsKLSAgICAgICAg
c3RhdGljIE5PX1JFVFVSTl9EVUVfVE9fQVNTRVJUIHZvaWQgcHV0RGlyZWN0VmlydHVhbChKU09i
amVjdCosIEV4ZWNTdGF0ZSosIGNvbnN0IElkZW50aWZpZXImIHByb3BlcnR5TmFtZSwgSlNWYWx1
ZSwgdW5zaWduZWQgYXR0cmlidXRlcyk7Ci0gICAgICAgIHN0YXRpYyBib29sIGRlZmluZU93blBy
b3BlcnR5KEpTT2JqZWN0KiwgRXhlY1N0YXRlKiwgY29uc3QgSWRlbnRpZmllciYgcHJvcGVydHlO
YW1lLCBQcm9wZXJ0eURlc2NyaXB0b3ImLCBib29sIHNob3VsZFRocm93KTsKLSAgICAgICAgc3Rh
dGljIGJvb2wgZ2V0T3duUHJvcGVydHlEZXNjcmlwdG9yKEpTT2JqZWN0KiwgRXhlY1N0YXRlKiwg
Y29uc3QgSWRlbnRpZmllciYsIFByb3BlcnR5RGVzY3JpcHRvciYpOworICAgICAgICBzdGF0aWMg
Tk9fUkVUVVJOX0RVRV9UT19BU1NFUlQgdm9pZCBwdXREaXJlY3RWaXJ0dWFsKEpTT2JqZWN0Kiwg
RXhlY1N0YXRlKiwgUHJvcGVydHlOYW1lIHByb3BlcnR5TmFtZSwgSlNWYWx1ZSwgdW5zaWduZWQg
YXR0cmlidXRlcyk7CisgICAgICAgIHN0YXRpYyBib29sIGRlZmluZU93blByb3BlcnR5KEpTT2Jq
ZWN0KiwgRXhlY1N0YXRlKiwgUHJvcGVydHlOYW1lIHByb3BlcnR5TmFtZSwgUHJvcGVydHlEZXNj
cmlwdG9yJiwgYm9vbCBzaG91bGRUaHJvdyk7CisgICAgICAgIHN0YXRpYyBib29sIGdldE93blBy
b3BlcnR5RGVzY3JpcHRvcihKU09iamVjdCosIEV4ZWNTdGF0ZSosIFByb3BlcnR5TmFtZSwgUHJv
cGVydHlEZXNjcmlwdG9yJik7CiAKICAgICBwcml2YXRlOgogICAgICAgICBmcmllbmQgY2xhc3Mg
TExJbnRPZmZzZXRzRXh0cmFjdG9yOwpJbmRleDogU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRp
bWUvSlNGdW5jdGlvbi5jcHAKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL0phdmFTY3JpcHRDb3JlL3J1
bnRpbWUvSlNGdW5jdGlvbi5jcHAJKHJldmlzaW9uIDExNjY3MCkKKysrIFNvdXJjZS9KYXZhU2Ny
aXB0Q29yZS9ydW50aW1lL0pTRnVuY3Rpb24uY3BwCSh3b3JraW5nIGNvcHkpCkBAIC01OSw3ICs1
OSw3IEBAIGJvb2wgSlNGdW5jdGlvbjo6aXNIb3N0RnVuY3Rpb25Ob25JbmxpbmUKICAgICByZXR1
cm4gaXNIb3N0RnVuY3Rpb24oKTsKIH0KIAotSlNGdW5jdGlvbiogSlNGdW5jdGlvbjo6Y3JlYXRl
KEV4ZWNTdGF0ZSogZXhlYywgSlNHbG9iYWxPYmplY3QqIGdsb2JhbE9iamVjdCwgaW50IGxlbmd0
aCwgY29uc3QgSWRlbnRpZmllciYgbmFtZSwgTmF0aXZlRnVuY3Rpb24gbmF0aXZlRnVuY3Rpb24s
IEludHJpbnNpYyBpbnRyaW5zaWMsIE5hdGl2ZUZ1bmN0aW9uIG5hdGl2ZUNvbnN0cnVjdG9yKQor
SlNGdW5jdGlvbiogSlNGdW5jdGlvbjo6Y3JlYXRlKEV4ZWNTdGF0ZSogZXhlYywgSlNHbG9iYWxP
YmplY3QqIGdsb2JhbE9iamVjdCwgaW50IGxlbmd0aCwgY29uc3QgVVN0cmluZyYgbmFtZSwgTmF0
aXZlRnVuY3Rpb24gbmF0aXZlRnVuY3Rpb24sIEludHJpbnNpYyBpbnRyaW5zaWMsIE5hdGl2ZUZ1
bmN0aW9uIG5hdGl2ZUNvbnN0cnVjdG9yKQogewogICAgIE5hdGl2ZUV4ZWN1dGFibGUqIGV4ZWN1
dGFibGU7CiAjaWYgIUVOQUJMRShKSVQpCkBAIC05MiwxMiArOTIsMTIgQEAgSlNGdW5jdGlvbjo6
SlNGdW5jdGlvbihFeGVjU3RhdGUqIGV4ZWMsIAogewogfQogCi12b2lkIEpTRnVuY3Rpb246OmZp
bmlzaENyZWF0aW9uKEV4ZWNTdGF0ZSogZXhlYywgTmF0aXZlRXhlY3V0YWJsZSogZXhlY3V0YWJs
ZSwgaW50IGxlbmd0aCwgY29uc3QgSWRlbnRpZmllciYgbmFtZSkKK3ZvaWQgSlNGdW5jdGlvbjo6
ZmluaXNoQ3JlYXRpb24oRXhlY1N0YXRlKiBleGVjLCBOYXRpdmVFeGVjdXRhYmxlKiBleGVjdXRh
YmxlLCBpbnQgbGVuZ3RoLCBjb25zdCBVU3RyaW5nJiBuYW1lKQogewogICAgIEJhc2U6OmZpbmlz
aENyZWF0aW9uKGV4ZWMtPmdsb2JhbERhdGEoKSk7CiAgICAgQVNTRVJUKGluaGVyaXRzKCZzX2lu
Zm8pKTsKICAgICBtX2V4ZWN1dGFibGUuc2V0KGV4ZWMtPmdsb2JhbERhdGEoKSwgdGhpcywgZXhl
Y3V0YWJsZSk7Ci0gICAgcHV0RGlyZWN0KGV4ZWMtPmdsb2JhbERhdGEoKSwgZXhlYy0+Z2xvYmFs
RGF0YSgpLnByb3BlcnR5TmFtZXMtPm5hbWUsIGpzU3RyaW5nKGV4ZWMsIG5hbWUuaXNOdWxsKCkg
PyAiIiA6IG5hbWUudXN0cmluZygpKSwgRG9udERlbGV0ZSB8IFJlYWRPbmx5IHwgRG9udEVudW0p
OworICAgIHB1dERpcmVjdChleGVjLT5nbG9iYWxEYXRhKCksIGV4ZWMtPmdsb2JhbERhdGEoKS5w
cm9wZXJ0eU5hbWVzLT5uYW1lLCBqc1N0cmluZyhleGVjLCBuYW1lLmlzTnVsbCgpID8gIiIgOiBu
YW1lKSwgRG9udERlbGV0ZSB8IFJlYWRPbmx5IHwgRG9udEVudW0pOwogICAgIHB1dERpcmVjdChl
eGVjLT5nbG9iYWxEYXRhKCksIGV4ZWMtPnByb3BlcnR5TmFtZXMoKS5sZW5ndGgsIGpzTnVtYmVy
KGxlbmd0aCksIERvbnREZWxldGUgfCBSZWFkT25seSB8IERvbnRFbnVtKTsKIH0KIApAQCAtMTgz
LDE0ICsxODMsMTQgQEAgQ2FsbFR5cGUgSlNGdW5jdGlvbjo6Z2V0Q2FsbERhdGEoSlNDZWxsKgog
ICAgIHJldHVybiBDYWxsVHlwZUpTOwogfQogCi1KU1ZhbHVlIEpTRnVuY3Rpb246OmFyZ3VtZW50
c0dldHRlcihFeGVjU3RhdGUqIGV4ZWMsIEpTVmFsdWUgc2xvdEJhc2UsIGNvbnN0IElkZW50aWZp
ZXImKQorSlNWYWx1ZSBKU0Z1bmN0aW9uOjphcmd1bWVudHNHZXR0ZXIoRXhlY1N0YXRlKiBleGVj
LCBKU1ZhbHVlIHNsb3RCYXNlLCBQcm9wZXJ0eU5hbWUpCiB7CiAgICAgSlNGdW5jdGlvbiogdGhp
c09iaiA9IGpzQ2FzdDxKU0Z1bmN0aW9uKj4oc2xvdEJhc2UpOwogICAgIEFTU0VSVCghdGhpc09i
ai0+aXNIb3N0RnVuY3Rpb24oKSk7CiAgICAgcmV0dXJuIGV4ZWMtPmludGVycHJldGVyKCktPnJl
dHJpZXZlQXJndW1lbnRzRnJvbVZNQ29kZShleGVjLCB0aGlzT2JqKTsKIH0KIAotSlNWYWx1ZSBK
U0Z1bmN0aW9uOjpjYWxsZXJHZXR0ZXIoRXhlY1N0YXRlKiBleGVjLCBKU1ZhbHVlIHNsb3RCYXNl
LCBjb25zdCBJZGVudGlmaWVyJikKK0pTVmFsdWUgSlNGdW5jdGlvbjo6Y2FsbGVyR2V0dGVyKEV4
ZWNTdGF0ZSogZXhlYywgSlNWYWx1ZSBzbG90QmFzZSwgUHJvcGVydHlOYW1lKQogewogICAgIEpT
RnVuY3Rpb24qIHRoaXNPYmogPSBqc0Nhc3Q8SlNGdW5jdGlvbio+KHNsb3RCYXNlKTsKICAgICBB
U1NFUlQoIXRoaXNPYmotPmlzSG9zdEZ1bmN0aW9uKCkpOwpAQCAtMjA1LDE0ICsyMDUsMTQgQEAg
SlNWYWx1ZSBKU0Z1bmN0aW9uOjpjYWxsZXJHZXR0ZXIoRXhlY1N0YQogICAgIHJldHVybiB0aHJv
d1R5cGVFcnJvcihleGVjLCAiRnVuY3Rpb24uY2FsbGVyIHVzZWQgdG8gcmV0cmlldmUgc3RyaWN0
IGNhbGxlciIpOwogfQogCi1KU1ZhbHVlIEpTRnVuY3Rpb246Omxlbmd0aEdldHRlcihFeGVjU3Rh
dGUqLCBKU1ZhbHVlIHNsb3RCYXNlLCBjb25zdCBJZGVudGlmaWVyJikKK0pTVmFsdWUgSlNGdW5j
dGlvbjo6bGVuZ3RoR2V0dGVyKEV4ZWNTdGF0ZSosIEpTVmFsdWUgc2xvdEJhc2UsIFByb3BlcnR5
TmFtZSkKIHsKICAgICBKU0Z1bmN0aW9uKiB0aGlzT2JqID0ganNDYXN0PEpTRnVuY3Rpb24qPihz
bG90QmFzZSk7CiAgICAgQVNTRVJUKCF0aGlzT2JqLT5pc0hvc3RGdW5jdGlvbigpKTsKICAgICBy
ZXR1cm4ganNOdW1iZXIodGhpc09iai0+anNFeGVjdXRhYmxlKCktPnBhcmFtZXRlckNvdW50KCkp
OwogfQogCi1ib29sIEpTRnVuY3Rpb246OmdldE93blByb3BlcnR5U2xvdChKU0NlbGwqIGNlbGws
IEV4ZWNTdGF0ZSogZXhlYywgY29uc3QgSWRlbnRpZmllciYgcHJvcGVydHlOYW1lLCBQcm9wZXJ0
eVNsb3QmIHNsb3QpCitib29sIEpTRnVuY3Rpb246OmdldE93blByb3BlcnR5U2xvdChKU0NlbGwq
IGNlbGwsIEV4ZWNTdGF0ZSogZXhlYywgUHJvcGVydHlOYW1lIHByb3BlcnR5TmFtZSwgUHJvcGVy
dHlTbG90JiBzbG90KQogewogICAgIEpTRnVuY3Rpb24qIHRoaXNPYmplY3QgPSBqc0Nhc3Q8SlNG
dW5jdGlvbio+KGNlbGwpOwogICAgIGlmICh0aGlzT2JqZWN0LT5pc0hvc3RGdW5jdGlvbigpKQpA
QCAtMjY3LDcgKzI2Nyw3IEBAIGJvb2wgSlNGdW5jdGlvbjo6Z2V0T3duUHJvcGVydHlTbG90KEpT
Q2UKICAgICByZXR1cm4gQmFzZTo6Z2V0T3duUHJvcGVydHlTbG90KHRoaXNPYmplY3QsIGV4ZWMs
IHByb3BlcnR5TmFtZSwgc2xvdCk7CiB9CiAKLWJvb2wgSlNGdW5jdGlvbjo6Z2V0T3duUHJvcGVy
dHlEZXNjcmlwdG9yKEpTT2JqZWN0KiBvYmplY3QsIEV4ZWNTdGF0ZSogZXhlYywgY29uc3QgSWRl
bnRpZmllciYgcHJvcGVydHlOYW1lLCBQcm9wZXJ0eURlc2NyaXB0b3ImIGRlc2NyaXB0b3IpCiti
b29sIEpTRnVuY3Rpb246OmdldE93blByb3BlcnR5RGVzY3JpcHRvcihKU09iamVjdCogb2JqZWN0
LCBFeGVjU3RhdGUqIGV4ZWMsIFByb3BlcnR5TmFtZSBwcm9wZXJ0eU5hbWUsIFByb3BlcnR5RGVz
Y3JpcHRvciYgZGVzY3JpcHRvcikKIHsKICAgICBKU0Z1bmN0aW9uKiB0aGlzT2JqZWN0ID0ganND
YXN0PEpTRnVuY3Rpb24qPihvYmplY3QpOwogICAgIGlmICh0aGlzT2JqZWN0LT5pc0hvc3RGdW5j
dGlvbigpKQpAQCAtMzMwLDcgKzMzMCw3IEBAIHZvaWQgSlNGdW5jdGlvbjo6Z2V0T3duUHJvcGVy
dHlOYW1lcyhKU08KICAgICBCYXNlOjpnZXRPd25Qcm9wZXJ0eU5hbWVzKHRoaXNPYmplY3QsIGV4
ZWMsIHByb3BlcnR5TmFtZXMsIG1vZGUpOwogfQogCi12b2lkIEpTRnVuY3Rpb246OnB1dChKU0Nl
bGwqIGNlbGwsIEV4ZWNTdGF0ZSogZXhlYywgY29uc3QgSWRlbnRpZmllciYgcHJvcGVydHlOYW1l
LCBKU1ZhbHVlIHZhbHVlLCBQdXRQcm9wZXJ0eVNsb3QmIHNsb3QpCit2b2lkIEpTRnVuY3Rpb246
OnB1dChKU0NlbGwqIGNlbGwsIEV4ZWNTdGF0ZSogZXhlYywgUHJvcGVydHlOYW1lIHByb3BlcnR5
TmFtZSwgSlNWYWx1ZSB2YWx1ZSwgUHV0UHJvcGVydHlTbG90JiBzbG90KQogewogICAgIEpTRnVu
Y3Rpb24qIHRoaXNPYmplY3QgPSBqc0Nhc3Q8SlNGdW5jdGlvbio+KGNlbGwpOwogICAgIGlmICh0
aGlzT2JqZWN0LT5pc0hvc3RGdW5jdGlvbigpKSB7CkBAIC0zNTksNyArMzU5LDcgQEAgdm9pZCBK
U0Z1bmN0aW9uOjpwdXQoSlNDZWxsKiBjZWxsLCBFeGVjUwogICAgIEJhc2U6OnB1dCh0aGlzT2Jq
ZWN0LCBleGVjLCBwcm9wZXJ0eU5hbWUsIHZhbHVlLCBzbG90KTsKIH0KIAotYm9vbCBKU0Z1bmN0
aW9uOjpkZWxldGVQcm9wZXJ0eShKU0NlbGwqIGNlbGwsIEV4ZWNTdGF0ZSogZXhlYywgY29uc3Qg
SWRlbnRpZmllciYgcHJvcGVydHlOYW1lKQorYm9vbCBKU0Z1bmN0aW9uOjpkZWxldGVQcm9wZXJ0
eShKU0NlbGwqIGNlbGwsIEV4ZWNTdGF0ZSogZXhlYywgUHJvcGVydHlOYW1lIHByb3BlcnR5TmFt
ZSkKIHsKICAgICBKU0Z1bmN0aW9uKiB0aGlzT2JqZWN0ID0ganNDYXN0PEpTRnVuY3Rpb24qPihj
ZWxsKTsKICAgICAvLyBGb3Igbm9uLWhvc3QgZnVuY3Rpb25zLCBkb24ndCBsZXQgdGhlc2UgcHJv
cGVydGllcyBieSBkZWxldGVkIC0gZXhjZXB0IGJ5IERlZmluZU93blByb3BlcnR5LgpAQCAtMzcy
LDcgKzM3Miw3IEBAIGJvb2wgSlNGdW5jdGlvbjo6ZGVsZXRlUHJvcGVydHkoSlNDZWxsKiAKICAg
ICByZXR1cm4gQmFzZTo6ZGVsZXRlUHJvcGVydHkodGhpc09iamVjdCwgZXhlYywgcHJvcGVydHlO
YW1lKTsKIH0KIAotYm9vbCBKU0Z1bmN0aW9uOjpkZWZpbmVPd25Qcm9wZXJ0eShKU09iamVjdCog
b2JqZWN0LCBFeGVjU3RhdGUqIGV4ZWMsIGNvbnN0IElkZW50aWZpZXImIHByb3BlcnR5TmFtZSwg
UHJvcGVydHlEZXNjcmlwdG9yJiBkZXNjcmlwdG9yLCBib29sIHRocm93RXhjZXB0aW9uKQorYm9v
bCBKU0Z1bmN0aW9uOjpkZWZpbmVPd25Qcm9wZXJ0eShKU09iamVjdCogb2JqZWN0LCBFeGVjU3Rh
dGUqIGV4ZWMsIFByb3BlcnR5TmFtZSBwcm9wZXJ0eU5hbWUsIFByb3BlcnR5RGVzY3JpcHRvciYg
ZGVzY3JpcHRvciwgYm9vbCB0aHJvd0V4Y2VwdGlvbikKIHsKICAgICBKU0Z1bmN0aW9uKiB0aGlz
T2JqZWN0ID0ganNDYXN0PEpTRnVuY3Rpb24qPihvYmplY3QpOwogICAgIGlmICh0aGlzT2JqZWN0
LT5pc0hvc3RGdW5jdGlvbigpKQpAQCAtNDU1LDcgKzQ1NSw3IEBAIFVTdHJpbmcgZ2V0Q2FsY3Vs
YXRlZERpc3BsYXlOYW1lKENhbGxGcmEKICAgICAgICAgcmV0dXJuIGZ1bmN0aW9uLT5jYWxjdWxh
dGVkRGlzcGxheU5hbWUoY2FsbEZyYW1lKTsKICAgICBpZiAoSW50ZXJuYWxGdW5jdGlvbiogZnVu
Y3Rpb24gPSBqc0R5bmFtaWNDYXN0PEludGVybmFsRnVuY3Rpb24qPihvYmplY3QpKQogICAgICAg
ICByZXR1cm4gZnVuY3Rpb24tPmNhbGN1bGF0ZWREaXNwbGF5TmFtZShjYWxsRnJhbWUpOwotICAg
IHJldHVybiBjYWxsRnJhbWUtPmdsb2JhbERhdGEoKS5wcm9wZXJ0eU5hbWVzLT5lbXB0eUlkZW50
aWZpZXIudXN0cmluZygpOworICAgIHJldHVybiAiIjsKIH0KIAogfSAvLyBuYW1lc3BhY2UgSlND
CkluZGV4OiBTb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9KU0Z1bmN0aW9uLmgKPT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PQotLS0gU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvSlNGdW5jdGlvbi5oCShyZXZp
c2lvbiAxMTY2NzApCisrKyBTb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9KU0Z1bmN0aW9u
LmgJKHdvcmtpbmcgY29weSkKQEAgLTU1LDcgKzU1LDcgQEAgbmFtZXNwYWNlIEpTQyB7CiAgICAg
cHVibGljOgogICAgICAgICB0eXBlZGVmIEpTTm9uRmluYWxPYmplY3QgQmFzZTsKIAotICAgICAg
ICBKU19FWFBPUlRfUFJJVkFURSBzdGF0aWMgSlNGdW5jdGlvbiogY3JlYXRlKEV4ZWNTdGF0ZSos
IEpTR2xvYmFsT2JqZWN0KiwgaW50IGxlbmd0aCwgY29uc3QgSWRlbnRpZmllciYgbmFtZSwgTmF0
aXZlRnVuY3Rpb24gbmF0aXZlRnVuY3Rpb24sIEludHJpbnNpYyA9IE5vSW50cmluc2ljLCBOYXRp
dmVGdW5jdGlvbiBuYXRpdmVDb25zdHJ1Y3RvciA9IGNhbGxIb3N0RnVuY3Rpb25Bc0NvbnN0cnVj
dG9yKTsKKyAgICAgICAgSlNfRVhQT1JUX1BSSVZBVEUgc3RhdGljIEpTRnVuY3Rpb24qIGNyZWF0
ZShFeGVjU3RhdGUqLCBKU0dsb2JhbE9iamVjdCosIGludCBsZW5ndGgsIGNvbnN0IFVTdHJpbmcm
IG5hbWUsIE5hdGl2ZUZ1bmN0aW9uIG5hdGl2ZUZ1bmN0aW9uLCBJbnRyaW5zaWMgPSBOb0ludHJp
bnNpYywgTmF0aXZlRnVuY3Rpb24gbmF0aXZlQ29uc3RydWN0b3IgPSBjYWxsSG9zdEZ1bmN0aW9u
QXNDb25zdHJ1Y3Rvcik7CiAKICAgICAgICAgc3RhdGljIEpTRnVuY3Rpb24qIGNyZWF0ZShFeGVj
U3RhdGUqIGV4ZWMsIEZ1bmN0aW9uRXhlY3V0YWJsZSogZXhlY3V0YWJsZSwgU2NvcGVDaGFpbk5v
ZGUqIHNjb3BlQ2hhaW4pCiAgICAgICAgIHsKQEAgLTEzOSwxOSArMTM5LDE5IEBAIG5hbWVzcGFj
ZSBKU0MgewogICAgICAgICBKU19FWFBPUlRfUFJJVkFURSBKU0Z1bmN0aW9uKEV4ZWNTdGF0ZSos
IEpTR2xvYmFsT2JqZWN0KiwgU3RydWN0dXJlKik7CiAgICAgICAgIEpTRnVuY3Rpb24oRXhlY1N0
YXRlKiwgRnVuY3Rpb25FeGVjdXRhYmxlKiwgU2NvcGVDaGFpbk5vZGUqKTsKICAgICAgICAgCi0g
ICAgICAgIHZvaWQgZmluaXNoQ3JlYXRpb24oRXhlY1N0YXRlKiwgTmF0aXZlRXhlY3V0YWJsZSos
IGludCBsZW5ndGgsIGNvbnN0IElkZW50aWZpZXImIG5hbWUpOworICAgICAgICB2b2lkIGZpbmlz
aENyZWF0aW9uKEV4ZWNTdGF0ZSosIE5hdGl2ZUV4ZWN1dGFibGUqLCBpbnQgbGVuZ3RoLCBjb25z
dCBVU3RyaW5nJiBuYW1lKTsKICAgICAgICAgdm9pZCBmaW5pc2hDcmVhdGlvbihFeGVjU3RhdGUq
LCBGdW5jdGlvbkV4ZWN1dGFibGUqLCBTY29wZUNoYWluTm9kZSopOwogCiAgICAgICAgIFN0cnVj
dHVyZSogY2FjaGVJbmhlcml0b3JJRChFeGVjU3RhdGUqKTsKIAotICAgICAgICBzdGF0aWMgYm9v
bCBnZXRPd25Qcm9wZXJ0eVNsb3QoSlNDZWxsKiwgRXhlY1N0YXRlKiwgY29uc3QgSWRlbnRpZmll
ciYsIFByb3BlcnR5U2xvdCYpOwotICAgICAgICBzdGF0aWMgYm9vbCBnZXRPd25Qcm9wZXJ0eURl
c2NyaXB0b3IoSlNPYmplY3QqLCBFeGVjU3RhdGUqLCBjb25zdCBJZGVudGlmaWVyJiwgUHJvcGVy
dHlEZXNjcmlwdG9yJik7CisgICAgICAgIHN0YXRpYyBib29sIGdldE93blByb3BlcnR5U2xvdChK
U0NlbGwqLCBFeGVjU3RhdGUqLCBQcm9wZXJ0eU5hbWUsIFByb3BlcnR5U2xvdCYpOworICAgICAg
ICBzdGF0aWMgYm9vbCBnZXRPd25Qcm9wZXJ0eURlc2NyaXB0b3IoSlNPYmplY3QqLCBFeGVjU3Rh
dGUqLCBQcm9wZXJ0eU5hbWUsIFByb3BlcnR5RGVzY3JpcHRvciYpOwogICAgICAgICBzdGF0aWMg
dm9pZCBnZXRPd25Qcm9wZXJ0eU5hbWVzKEpTT2JqZWN0KiwgRXhlY1N0YXRlKiwgUHJvcGVydHlO
YW1lQXJyYXkmLCBFbnVtZXJhdGlvbk1vZGUgPSBFeGNsdWRlRG9udEVudW1Qcm9wZXJ0aWVzKTsK
LSAgICAgICAgc3RhdGljIGJvb2wgZGVmaW5lT3duUHJvcGVydHkoSlNPYmplY3QqLCBFeGVjU3Rh
dGUqLCBjb25zdCBJZGVudGlmaWVyJiBwcm9wZXJ0eU5hbWUsIFByb3BlcnR5RGVzY3JpcHRvciYs
IGJvb2wgc2hvdWxkVGhyb3cpOworICAgICAgICBzdGF0aWMgYm9vbCBkZWZpbmVPd25Qcm9wZXJ0
eShKU09iamVjdCosIEV4ZWNTdGF0ZSosIFByb3BlcnR5TmFtZSBwcm9wZXJ0eU5hbWUsIFByb3Bl
cnR5RGVzY3JpcHRvciYsIGJvb2wgc2hvdWxkVGhyb3cpOwogCi0gICAgICAgIHN0YXRpYyB2b2lk
IHB1dChKU0NlbGwqLCBFeGVjU3RhdGUqLCBjb25zdCBJZGVudGlmaWVyJiBwcm9wZXJ0eU5hbWUs
IEpTVmFsdWUsIFB1dFByb3BlcnR5U2xvdCYpOworICAgICAgICBzdGF0aWMgdm9pZCBwdXQoSlND
ZWxsKiwgRXhlY1N0YXRlKiwgUHJvcGVydHlOYW1lIHByb3BlcnR5TmFtZSwgSlNWYWx1ZSwgUHV0
UHJvcGVydHlTbG90Jik7CiAKLSAgICAgICAgc3RhdGljIGJvb2wgZGVsZXRlUHJvcGVydHkoSlND
ZWxsKiwgRXhlY1N0YXRlKiwgY29uc3QgSWRlbnRpZmllciYgcHJvcGVydHlOYW1lKTsKKyAgICAg
ICAgc3RhdGljIGJvb2wgZGVsZXRlUHJvcGVydHkoSlNDZWxsKiwgRXhlY1N0YXRlKiwgUHJvcGVy
dHlOYW1lIHByb3BlcnR5TmFtZSk7CiAKICAgICAgICAgc3RhdGljIHZvaWQgdmlzaXRDaGlsZHJl
bihKU0NlbGwqLCBTbG90VmlzaXRvciYpOwogCkBAIC0xNjAsOSArMTYwLDkgQEAgbmFtZXNwYWNl
IEpTQyB7CiAgICAgICAgIAogICAgICAgICBKU19FWFBPUlRfUFJJVkFURSBib29sIGlzSG9zdEZ1
bmN0aW9uTm9uSW5saW5lKCkgY29uc3Q7CiAKLSAgICAgICAgc3RhdGljIEpTVmFsdWUgYXJndW1l
bnRzR2V0dGVyKEV4ZWNTdGF0ZSosIEpTVmFsdWUsIGNvbnN0IElkZW50aWZpZXImKTsKLSAgICAg
ICAgc3RhdGljIEpTVmFsdWUgY2FsbGVyR2V0dGVyKEV4ZWNTdGF0ZSosIEpTVmFsdWUsIGNvbnN0
IElkZW50aWZpZXImKTsKLSAgICAgICAgc3RhdGljIEpTVmFsdWUgbGVuZ3RoR2V0dGVyKEV4ZWNT
dGF0ZSosIEpTVmFsdWUsIGNvbnN0IElkZW50aWZpZXImKTsKKyAgICAgICAgc3RhdGljIEpTVmFs
dWUgYXJndW1lbnRzR2V0dGVyKEV4ZWNTdGF0ZSosIEpTVmFsdWUsIFByb3BlcnR5TmFtZSk7Cisg
ICAgICAgIHN0YXRpYyBKU1ZhbHVlIGNhbGxlckdldHRlcihFeGVjU3RhdGUqLCBKU1ZhbHVlLCBQ
cm9wZXJ0eU5hbWUpOworICAgICAgICBzdGF0aWMgSlNWYWx1ZSBsZW5ndGhHZXR0ZXIoRXhlY1N0
YXRlKiwgSlNWYWx1ZSwgUHJvcGVydHlOYW1lKTsKIAogICAgICAgICBXcml0ZUJhcnJpZXI8RXhl
Y3V0YWJsZUJhc2U+IG1fZXhlY3V0YWJsZTsKICAgICAgICAgV3JpdGVCYXJyaWVyPFNjb3BlQ2hh
aW5Ob2RlPiBtX3Njb3BlQ2hhaW47CkluZGV4OiBTb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGlt
ZS9KU0dsb2JhbE9iamVjdC5jcHAKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL0phdmFTY3JpcHRDb3Jl
L3J1bnRpbWUvSlNHbG9iYWxPYmplY3QuY3BwCShyZXZpc2lvbiAxMTY2NjcpCisrKyBTb3VyY2Uv
SmF2YVNjcmlwdENvcmUvcnVudGltZS9KU0dsb2JhbE9iamVjdC5jcHAJKHdvcmtpbmcgY29weSkK
QEAgLTE0Miw3ICsxNDIsNyBAQCB2b2lkIEpTR2xvYmFsT2JqZWN0Ojppbml0KEpTT2JqZWN0KiB0
aGlzCiAgICAgcmVzZXQocHJvdG90eXBlKCkpOwogfQogCi12b2lkIEpTR2xvYmFsT2JqZWN0Ojpw
dXQoSlNDZWxsKiBjZWxsLCBFeGVjU3RhdGUqIGV4ZWMsIGNvbnN0IElkZW50aWZpZXImIHByb3Bl
cnR5TmFtZSwgSlNWYWx1ZSB2YWx1ZSwgUHV0UHJvcGVydHlTbG90JiBzbG90KQordm9pZCBKU0ds
b2JhbE9iamVjdDo6cHV0KEpTQ2VsbCogY2VsbCwgRXhlY1N0YXRlKiBleGVjLCBQcm9wZXJ0eU5h
bWUgcHJvcGVydHlOYW1lLCBKU1ZhbHVlIHZhbHVlLCBQdXRQcm9wZXJ0eVNsb3QmIHNsb3QpCiB7
CiAgICAgSlNHbG9iYWxPYmplY3QqIHRoaXNPYmplY3QgPSBqc0Nhc3Q8SlNHbG9iYWxPYmplY3Qq
PihjZWxsKTsKICAgICBBU1NFUlQoIUhlYXA6OmhlYXAodmFsdWUpIHx8IEhlYXA6OmhlYXAodmFs
dWUpID09IEhlYXA6OmhlYXAodGhpc09iamVjdCkpOwpAQCAtMTUyLDcgKzE1Miw3IEBAIHZvaWQg
SlNHbG9iYWxPYmplY3Q6OnB1dChKU0NlbGwqIGNlbGwsIEUKICAgICBKU1ZhcmlhYmxlT2JqZWN0
OjpwdXQodGhpc09iamVjdCwgZXhlYywgcHJvcGVydHlOYW1lLCB2YWx1ZSwgc2xvdCk7CiB9CiAK
LXZvaWQgSlNHbG9iYWxPYmplY3Q6OnB1dERpcmVjdFZpcnR1YWwoSlNPYmplY3QqIG9iamVjdCwg
RXhlY1N0YXRlKiBleGVjLCBjb25zdCBJZGVudGlmaWVyJiBwcm9wZXJ0eU5hbWUsIEpTVmFsdWUg
dmFsdWUsIHVuc2lnbmVkIGF0dHJpYnV0ZXMpCit2b2lkIEpTR2xvYmFsT2JqZWN0OjpwdXREaXJl
Y3RWaXJ0dWFsKEpTT2JqZWN0KiBvYmplY3QsIEV4ZWNTdGF0ZSogZXhlYywgUHJvcGVydHlOYW1l
IHByb3BlcnR5TmFtZSwgSlNWYWx1ZSB2YWx1ZSwgdW5zaWduZWQgYXR0cmlidXRlcykKIHsKICAg
ICBKU0dsb2JhbE9iamVjdCogdGhpc09iamVjdCA9IGpzQ2FzdDxKU0dsb2JhbE9iamVjdCo+KG9i
amVjdCk7CiAgICAgQVNTRVJUKCFIZWFwOjpoZWFwKHZhbHVlKSB8fCBIZWFwOjpoZWFwKHZhbHVl
KSA9PSBIZWFwOjpoZWFwKHRoaXNPYmplY3QpKTsKQEAgLTE3MCw3ICsxNzAsNyBAQCB2b2lkIEpT
R2xvYmFsT2JqZWN0OjpwdXREaXJlY3RWaXJ0dWFsKEpTCiAgICAgfQogfQogCi1ib29sIEpTR2xv
YmFsT2JqZWN0OjpkZWZpbmVPd25Qcm9wZXJ0eShKU09iamVjdCogb2JqZWN0LCBFeGVjU3RhdGUq
IGV4ZWMsIGNvbnN0IElkZW50aWZpZXImIHByb3BlcnR5TmFtZSwgUHJvcGVydHlEZXNjcmlwdG9y
JiBkZXNjcmlwdG9yLCBib29sIHNob3VsZFRocm93KQorYm9vbCBKU0dsb2JhbE9iamVjdDo6ZGVm
aW5lT3duUHJvcGVydHkoSlNPYmplY3QqIG9iamVjdCwgRXhlY1N0YXRlKiBleGVjLCBQcm9wZXJ0
eU5hbWUgcHJvcGVydHlOYW1lLCBQcm9wZXJ0eURlc2NyaXB0b3ImIGRlc2NyaXB0b3IsIGJvb2wg
c2hvdWxkVGhyb3cpCiB7CiAgICAgSlNHbG9iYWxPYmplY3QqIHRoaXNPYmplY3QgPSBqc0Nhc3Q8
SlNHbG9iYWxPYmplY3QqPihvYmplY3QpOwogICAgIFByb3BlcnR5U2xvdCBzbG90OwpAQCAtMjA1
LDggKzIwNSw4IEBAIHZvaWQgSlNHbG9iYWxPYmplY3Q6OnJlc2V0KEpTVmFsdWUgcHJvdG8KICAg
ICBtX2FwcGx5RnVuY3Rpb24uc2V0KGV4ZWMtPmdsb2JhbERhdGEoKSwgdGhpcywgYXBwbHlGdW5j
dGlvbik7CiAgICAgbV9vYmplY3RQcm90b3R5cGUuc2V0KGV4ZWMtPmdsb2JhbERhdGEoKSwgdGhp
cywgT2JqZWN0UHJvdG90eXBlOjpjcmVhdGUoZXhlYywgdGhpcywgT2JqZWN0UHJvdG90eXBlOjpj
cmVhdGVTdHJ1Y3R1cmUoZXhlYy0+Z2xvYmFsRGF0YSgpLCB0aGlzLCBqc051bGwoKSkpKTsKICAg
ICBHZXR0ZXJTZXR0ZXIqIHByb3RvQWNjZXNzb3IgPSBHZXR0ZXJTZXR0ZXI6OmNyZWF0ZShleGVj
KTsKLSAgICBwcm90b0FjY2Vzc29yLT5zZXRHZXR0ZXIoZXhlYy0+Z2xvYmFsRGF0YSgpLCBKU0Z1
bmN0aW9uOjpjcmVhdGUoZXhlYywgdGhpcywgMCwgSWRlbnRpZmllcigpLCBnbG9iYWxGdW5jUHJv
dG9HZXR0ZXIpKTsKLSAgICBwcm90b0FjY2Vzc29yLT5zZXRTZXR0ZXIoZXhlYy0+Z2xvYmFsRGF0
YSgpLCBKU0Z1bmN0aW9uOjpjcmVhdGUoZXhlYywgdGhpcywgMCwgSWRlbnRpZmllcigpLCBnbG9i
YWxGdW5jUHJvdG9TZXR0ZXIpKTsKKyAgICBwcm90b0FjY2Vzc29yLT5zZXRHZXR0ZXIoZXhlYy0+
Z2xvYmFsRGF0YSgpLCBKU0Z1bmN0aW9uOjpjcmVhdGUoZXhlYywgdGhpcywgMCwgIiIsIGdsb2Jh
bEZ1bmNQcm90b0dldHRlcikpOworICAgIHByb3RvQWNjZXNzb3ItPnNldFNldHRlcihleGVjLT5n
bG9iYWxEYXRhKCksIEpTRnVuY3Rpb246OmNyZWF0ZShleGVjLCB0aGlzLCAwLCAiIiwgZ2xvYmFs
RnVuY1Byb3RvU2V0dGVyKSk7CiAgICAgbV9vYmplY3RQcm90b3R5cGUtPnB1dERpcmVjdEFjY2Vz
c29yKGV4ZWMtPmdsb2JhbERhdGEoKSwgZXhlYy0+cHJvcGVydHlOYW1lcygpLnVuZGVyc2NvcmVQ
cm90bywgcHJvdG9BY2Nlc3NvciwgQWNjZXNzb3IgfCBEb250RW51bSk7CiAgICAgbV9mdW5jdGlv
blByb3RvdHlwZS0+c3RydWN0dXJlKCktPnNldFByb3RvdHlwZVdpdGhvdXRUcmFuc2l0aW9uKGV4
ZWMtPmdsb2JhbERhdGEoKSwgbV9vYmplY3RQcm90b3R5cGUuZ2V0KCkpOwogCkBAIC0yOTMsNyAr
MjkzLDcgQEAgdm9pZCBKU0dsb2JhbE9iamVjdDo6cmVzZXQoSlNWYWx1ZSBwcm90bwogICAgIHB1
dERpcmVjdFdpdGhvdXRUcmFuc2l0aW9uKGV4ZWMtPmdsb2JhbERhdGEoKSwgSWRlbnRpZmllcihl
eGVjLCAiVHlwZUVycm9yIiksIG1fdHlwZUVycm9yQ29uc3RydWN0b3IuZ2V0KCksIERvbnRFbnVt
KTsKICAgICBwdXREaXJlY3RXaXRob3V0VHJhbnNpdGlvbihleGVjLT5nbG9iYWxEYXRhKCksIElk
ZW50aWZpZXIoZXhlYywgIlVSSUVycm9yIiksIG1fVVJJRXJyb3JDb25zdHJ1Y3Rvci5nZXQoKSwg
RG9udEVudW0pOwogCi0gICAgbV9ldmFsRnVuY3Rpb24uc2V0KGV4ZWMtPmdsb2JhbERhdGEoKSwg
dGhpcywgSlNGdW5jdGlvbjo6Y3JlYXRlKGV4ZWMsIHRoaXMsIDEsIGV4ZWMtPnByb3BlcnR5TmFt
ZXMoKS5ldmFsLCBnbG9iYWxGdW5jRXZhbCkpOworICAgIG1fZXZhbEZ1bmN0aW9uLnNldChleGVj
LT5nbG9iYWxEYXRhKCksIHRoaXMsIEpTRnVuY3Rpb246OmNyZWF0ZShleGVjLCB0aGlzLCAxLCBl
eGVjLT5wcm9wZXJ0eU5hbWVzKCkuZXZhbC51c3RyaW5nKCksIGdsb2JhbEZ1bmNFdmFsKSk7CiAg
ICAgcHV0RGlyZWN0V2l0aG91dFRyYW5zaXRpb24oZXhlYy0+Z2xvYmFsRGF0YSgpLCBleGVjLT5w
cm9wZXJ0eU5hbWVzKCkuZXZhbCwgbV9ldmFsRnVuY3Rpb24uZ2V0KCksIERvbnRFbnVtKTsKIAog
ICAgIHB1dERpcmVjdFdpdGhvdXRUcmFuc2l0aW9uKGV4ZWMtPmdsb2JhbERhdGEoKSwgSWRlbnRp
ZmllcihleGVjLCAiSlNPTiIpLCBKU09OT2JqZWN0OjpjcmVhdGUoZXhlYywgdGhpcywgSlNPTk9i
amVjdDo6Y3JlYXRlU3RydWN0dXJlKGV4ZWMtPmdsb2JhbERhdGEoKSwgdGhpcywgbV9vYmplY3RQ
cm90b3R5cGUuZ2V0KCkpKSwgRG9udEVudW0pOwpAQCAtMzExLDcgKzMxMSw3IEBAIHZvaWQgSlNH
bG9iYWxPYmplY3Q6OnJlc2V0KEpTVmFsdWUgcHJvdG8KIAogdm9pZCBKU0dsb2JhbE9iamVjdDo6
Y3JlYXRlVGhyb3dUeXBlRXJyb3IoRXhlY1N0YXRlKiBleGVjKQogewotICAgIEpTRnVuY3Rpb24q
IHRocm93ZXIgPSBKU0Z1bmN0aW9uOjpjcmVhdGUoZXhlYywgdGhpcywgMCwgSWRlbnRpZmllcigp
LCBnbG9iYWxGdW5jVGhyb3dUeXBlRXJyb3IpOworICAgIEpTRnVuY3Rpb24qIHRocm93ZXIgPSBK
U0Z1bmN0aW9uOjpjcmVhdGUoZXhlYywgdGhpcywgMCwgIiIsIGdsb2JhbEZ1bmNUaHJvd1R5cGVF
cnJvcik7CiAgICAgR2V0dGVyU2V0dGVyKiBnZXR0ZXJTZXR0ZXIgPSBHZXR0ZXJTZXR0ZXI6OmNy
ZWF0ZShleGVjKTsKICAgICBnZXR0ZXJTZXR0ZXItPnNldEdldHRlcihleGVjLT5nbG9iYWxEYXRh
KCksIHRocm93ZXIpOwogICAgIGdldHRlclNldHRlci0+c2V0U2V0dGVyKGV4ZWMtPmdsb2JhbERh
dGEoKSwgdGhyb3dlcik7CkBAIC00MzEsNyArNDMxLDcgQEAgdm9pZCBKU0dsb2JhbE9iamVjdDo6
YWRkU3RhdGljR2xvYmFscyhHbAogICAgIH0KIH0KIAotYm9vbCBKU0dsb2JhbE9iamVjdDo6Z2V0
T3duUHJvcGVydHlTbG90KEpTQ2VsbCogY2VsbCwgRXhlY1N0YXRlKiBleGVjLCBjb25zdCBJZGVu
dGlmaWVyJiBwcm9wZXJ0eU5hbWUsIFByb3BlcnR5U2xvdCYgc2xvdCkKK2Jvb2wgSlNHbG9iYWxP
YmplY3Q6OmdldE93blByb3BlcnR5U2xvdChKU0NlbGwqIGNlbGwsIEV4ZWNTdGF0ZSogZXhlYywg
UHJvcGVydHlOYW1lIHByb3BlcnR5TmFtZSwgUHJvcGVydHlTbG90JiBzbG90KQogewogICAgIEpT
R2xvYmFsT2JqZWN0KiB0aGlzT2JqZWN0ID0ganNDYXN0PEpTR2xvYmFsT2JqZWN0Kj4oY2VsbCk7
CiAgICAgaWYgKGdldFN0YXRpY0Z1bmN0aW9uU2xvdDxKU1ZhcmlhYmxlT2JqZWN0PihleGVjLCBF
eGVjU3RhdGU6Omdsb2JhbE9iamVjdFRhYmxlKGV4ZWMpLCB0aGlzT2JqZWN0LCBwcm9wZXJ0eU5h
bWUsIHNsb3QpKQpAQCAtNDM5LDcgKzQzOSw3IEBAIGJvb2wgSlNHbG9iYWxPYmplY3Q6OmdldE93
blByb3BlcnR5U2xvdCgKICAgICByZXR1cm4gdGhpc09iamVjdC0+c3ltYm9sVGFibGVHZXQocHJv
cGVydHlOYW1lLCBzbG90KTsKIH0KIAotYm9vbCBKU0dsb2JhbE9iamVjdDo6Z2V0T3duUHJvcGVy
dHlEZXNjcmlwdG9yKEpTT2JqZWN0KiBvYmplY3QsIEV4ZWNTdGF0ZSogZXhlYywgY29uc3QgSWRl
bnRpZmllciYgcHJvcGVydHlOYW1lLCBQcm9wZXJ0eURlc2NyaXB0b3ImIGRlc2NyaXB0b3IpCiti
b29sIEpTR2xvYmFsT2JqZWN0OjpnZXRPd25Qcm9wZXJ0eURlc2NyaXB0b3IoSlNPYmplY3QqIG9i
amVjdCwgRXhlY1N0YXRlKiBleGVjLCBQcm9wZXJ0eU5hbWUgcHJvcGVydHlOYW1lLCBQcm9wZXJ0
eURlc2NyaXB0b3ImIGRlc2NyaXB0b3IpCiB7CiAgICAgSlNHbG9iYWxPYmplY3QqIHRoaXNPYmpl
Y3QgPSBqc0Nhc3Q8SlNHbG9iYWxPYmplY3QqPihvYmplY3QpOwogICAgIGlmIChnZXRTdGF0aWNG
dW5jdGlvbkRlc2NyaXB0b3I8SlNWYXJpYWJsZU9iamVjdD4oZXhlYywgRXhlY1N0YXRlOjpnbG9i
YWxPYmplY3RUYWJsZShleGVjKSwgdGhpc09iamVjdCwgcHJvcGVydHlOYW1lLCBkZXNjcmlwdG9y
KSkKSW5kZXg6IFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL0pTR2xvYmFsT2JqZWN0LmgK
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PQotLS0gU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvSlNHbG9iYWxPYmpl
Y3QuaAkocmV2aXNpb24gMTE2NjY3KQorKysgU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUv
SlNHbG9iYWxPYmplY3QuaAkod29ya2luZyBjb3B5KQpAQCAtMTk5LDIwICsxOTksMjAgQEAgbmFt
ZXNwYWNlIEpTQyB7CiAKICAgICAgICAgSlNfRVhQT1JUX1BSSVZBVEUgc3RhdGljIHZvaWQgdmlz
aXRDaGlsZHJlbihKU0NlbGwqLCBTbG90VmlzaXRvciYpOwogCi0gICAgICAgIEpTX0VYUE9SVF9Q
UklWQVRFIHN0YXRpYyBib29sIGdldE93blByb3BlcnR5U2xvdChKU0NlbGwqLCBFeGVjU3RhdGUq
LCBjb25zdCBJZGVudGlmaWVyJiwgUHJvcGVydHlTbG90Jik7Ci0gICAgICAgIEpTX0VYUE9SVF9Q
UklWQVRFIHN0YXRpYyBib29sIGdldE93blByb3BlcnR5RGVzY3JpcHRvcihKU09iamVjdCosIEV4
ZWNTdGF0ZSosIGNvbnN0IElkZW50aWZpZXImLCBQcm9wZXJ0eURlc2NyaXB0b3ImKTsKLSAgICAg
ICAgYm9vbCBoYXNPd25Qcm9wZXJ0eUZvcldyaXRlKEV4ZWNTdGF0ZSosIGNvbnN0IElkZW50aWZp
ZXImKTsKLSAgICAgICAgSlNfRVhQT1JUX1BSSVZBVEUgc3RhdGljIHZvaWQgcHV0KEpTQ2VsbCos
IEV4ZWNTdGF0ZSosIGNvbnN0IElkZW50aWZpZXImLCBKU1ZhbHVlLCBQdXRQcm9wZXJ0eVNsb3Qm
KTsKLQotICAgICAgICBKU19FWFBPUlRfUFJJVkFURSBzdGF0aWMgdm9pZCBwdXREaXJlY3RWaXJ0
dWFsKEpTT2JqZWN0KiwgRXhlY1N0YXRlKiwgY29uc3QgSWRlbnRpZmllciYgcHJvcGVydHlOYW1l
LCBKU1ZhbHVlLCB1bnNpZ25lZCBhdHRyaWJ1dGVzKTsKLQotICAgICAgICBKU19FWFBPUlRfUFJJ
VkFURSBzdGF0aWMgdm9pZCBkZWZpbmVHZXR0ZXIoSlNPYmplY3QqLCBFeGVjU3RhdGUqLCBjb25z
dCBJZGVudGlmaWVyJiBwcm9wZXJ0eU5hbWUsIEpTT2JqZWN0KiBnZXR0ZXJGdW5jLCB1bnNpZ25l
ZCBhdHRyaWJ1dGVzKTsKLSAgICAgICAgSlNfRVhQT1JUX1BSSVZBVEUgc3RhdGljIHZvaWQgZGVm
aW5lU2V0dGVyKEpTT2JqZWN0KiwgRXhlY1N0YXRlKiwgY29uc3QgSWRlbnRpZmllciYgcHJvcGVy
dHlOYW1lLCBKU09iamVjdCogc2V0dGVyRnVuYywgdW5zaWduZWQgYXR0cmlidXRlcyk7Ci0gICAg
ICAgIEpTX0VYUE9SVF9QUklWQVRFIHN0YXRpYyBib29sIGRlZmluZU93blByb3BlcnR5KEpTT2Jq
ZWN0KiwgRXhlY1N0YXRlKiwgY29uc3QgSWRlbnRpZmllciYgcHJvcGVydHlOYW1lLCBQcm9wZXJ0
eURlc2NyaXB0b3ImLCBib29sIHNob3VsZFRocm93KTsKKyAgICAgICAgSlNfRVhQT1JUX1BSSVZB
VEUgc3RhdGljIGJvb2wgZ2V0T3duUHJvcGVydHlTbG90KEpTQ2VsbCosIEV4ZWNTdGF0ZSosIFBy
b3BlcnR5TmFtZSwgUHJvcGVydHlTbG90Jik7CisgICAgICAgIEpTX0VYUE9SVF9QUklWQVRFIHN0
YXRpYyBib29sIGdldE93blByb3BlcnR5RGVzY3JpcHRvcihKU09iamVjdCosIEV4ZWNTdGF0ZSos
IFByb3BlcnR5TmFtZSwgUHJvcGVydHlEZXNjcmlwdG9yJik7CisgICAgICAgIGJvb2wgaGFzT3du
UHJvcGVydHlGb3JXcml0ZShFeGVjU3RhdGUqLCBQcm9wZXJ0eU5hbWUpOworICAgICAgICBKU19F
WFBPUlRfUFJJVkFURSBzdGF0aWMgdm9pZCBwdXQoSlNDZWxsKiwgRXhlY1N0YXRlKiwgUHJvcGVy
dHlOYW1lLCBKU1ZhbHVlLCBQdXRQcm9wZXJ0eVNsb3QmKTsKKworICAgICAgICBKU19FWFBPUlRf
UFJJVkFURSBzdGF0aWMgdm9pZCBwdXREaXJlY3RWaXJ0dWFsKEpTT2JqZWN0KiwgRXhlY1N0YXRl
KiwgUHJvcGVydHlOYW1lIHByb3BlcnR5TmFtZSwgSlNWYWx1ZSwgdW5zaWduZWQgYXR0cmlidXRl
cyk7CisKKyAgICAgICAgSlNfRVhQT1JUX1BSSVZBVEUgc3RhdGljIHZvaWQgZGVmaW5lR2V0dGVy
KEpTT2JqZWN0KiwgRXhlY1N0YXRlKiwgUHJvcGVydHlOYW1lIHByb3BlcnR5TmFtZSwgSlNPYmpl
Y3QqIGdldHRlckZ1bmMsIHVuc2lnbmVkIGF0dHJpYnV0ZXMpOworICAgICAgICBKU19FWFBPUlRf
UFJJVkFURSBzdGF0aWMgdm9pZCBkZWZpbmVTZXR0ZXIoSlNPYmplY3QqLCBFeGVjU3RhdGUqLCBQ
cm9wZXJ0eU5hbWUgcHJvcGVydHlOYW1lLCBKU09iamVjdCogc2V0dGVyRnVuYywgdW5zaWduZWQg
YXR0cmlidXRlcyk7CisgICAgICAgIEpTX0VYUE9SVF9QUklWQVRFIHN0YXRpYyBib29sIGRlZmlu
ZU93blByb3BlcnR5KEpTT2JqZWN0KiwgRXhlY1N0YXRlKiwgUHJvcGVydHlOYW1lIHByb3BlcnR5
TmFtZSwgUHJvcGVydHlEZXNjcmlwdG9yJiwgYm9vbCBzaG91bGRUaHJvdyk7CiAKICAgICAgICAg
Ly8gV2UgdXNlIHRoaXMgaW4gdGhlIGNvZGUgZ2VuZXJhdG9yIGFzIHdlIHBlcmZvcm0gc3ltYm9s
IHRhYmxlCiAgICAgICAgIC8vIGxvb2t1cHMgcHJpb3IgdG8gaW5pdGlhbGl6aW5nIHRoZSBwcm9w
ZXJ0aWVzCi0gICAgICAgIGJvb2wgc3ltYm9sVGFibGVIYXNQcm9wZXJ0eShjb25zdCBJZGVudGlm
aWVyJiBwcm9wZXJ0eU5hbWUpOworICAgICAgICBib29sIHN5bWJvbFRhYmxlSGFzUHJvcGVydHko
UHJvcGVydHlOYW1lIHByb3BlcnR5TmFtZSk7CiAKICAgICAgICAgLy8gVGhlIGZvbGxvd2luZyBh
Y2Nlc3NvcnMgcmV0dXJuIHByaXN0aW5lIHZhbHVlcywgZXZlbiBpZiBhIHNjcmlwdCAKICAgICAg
ICAgLy8gcmVwbGFjZXMgdGhlIGdsb2JhbCBvYmplY3QncyBhc3NvY2lhdGVkIHByb3BlcnR5LgpA
QCAtMzY1LDcgKzM2NSw3IEBAIG5hbWVzcGFjZSBKU0MgewogICAgICAgICBtX3JlZ2lzdGVyQXJy
YXlTaXplID0gY291bnQ7CiAgICAgfQogCi0gICAgaW5saW5lIGJvb2wgSlNHbG9iYWxPYmplY3Q6
Omhhc093blByb3BlcnR5Rm9yV3JpdGUoRXhlY1N0YXRlKiBleGVjLCBjb25zdCBJZGVudGlmaWVy
JiBwcm9wZXJ0eU5hbWUpCisgICAgaW5saW5lIGJvb2wgSlNHbG9iYWxPYmplY3Q6Omhhc093blBy
b3BlcnR5Rm9yV3JpdGUoRXhlY1N0YXRlKiBleGVjLCBQcm9wZXJ0eU5hbWUgcHJvcGVydHlOYW1l
KQogICAgIHsKICAgICAgICAgUHJvcGVydHlTbG90IHNsb3Q7CiAgICAgICAgIGlmIChKU1Zhcmlh
YmxlT2JqZWN0OjpnZXRPd25Qcm9wZXJ0eVNsb3QodGhpcywgZXhlYywgcHJvcGVydHlOYW1lLCBz
bG90KSkKQEAgLTM3NCw3ICszNzQsNyBAQCBuYW1lc3BhY2UgSlNDIHsKICAgICAgICAgcmV0dXJu
IHN5bWJvbFRhYmxlR2V0KHByb3BlcnR5TmFtZSwgc2xvdCwgc2xvdElzV3JpdGVhYmxlKTsKICAg
ICB9CiAKLSAgICBpbmxpbmUgYm9vbCBKU0dsb2JhbE9iamVjdDo6c3ltYm9sVGFibGVIYXNQcm9w
ZXJ0eShjb25zdCBJZGVudGlmaWVyJiBwcm9wZXJ0eU5hbWUpCisgICAgaW5saW5lIGJvb2wgSlNH
bG9iYWxPYmplY3Q6OnN5bWJvbFRhYmxlSGFzUHJvcGVydHkoUHJvcGVydHlOYW1lIHByb3BlcnR5
TmFtZSkKICAgICB7CiAgICAgICAgIFN5bWJvbFRhYmxlRW50cnkgZW50cnkgPSBzeW1ib2xUYWJs
ZSgpLmlubGluZUdldChwcm9wZXJ0eU5hbWUuaW1wbCgpKTsKICAgICAgICAgcmV0dXJuICFlbnRy
eS5pc051bGwoKTsKSW5kZXg6IFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL0pTTm90QW5P
YmplY3QuY3BwCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL0pT
Tm90QW5PYmplY3QuY3BwCShyZXZpc2lvbiAxMTY2NjcpCisrKyBTb3VyY2UvSmF2YVNjcmlwdENv
cmUvcnVudGltZS9KU05vdEFuT2JqZWN0LmNwcAkod29ya2luZyBjb3B5KQpAQCAtNDcsNyArNDcs
NyBAQCBKU1ZhbHVlIEpTTm90QW5PYmplY3Q6OmRlZmF1bHRWYWx1ZShjb25zCiB9CiAKIC8vIEpT
T2JqZWN0IG1ldGhvZHMKLWJvb2wgSlNOb3RBbk9iamVjdDo6Z2V0T3duUHJvcGVydHlTbG90KEpT
Q2VsbCosIEV4ZWNTdGF0ZSogZXhlYywgY29uc3QgSWRlbnRpZmllciYsIFByb3BlcnR5U2xvdCYp
Citib29sIEpTTm90QW5PYmplY3Q6OmdldE93blByb3BlcnR5U2xvdChKU0NlbGwqLCBFeGVjU3Rh
dGUqIGV4ZWMsIFByb3BlcnR5TmFtZSwgUHJvcGVydHlTbG90JikKIHsKICAgICBBU1NFUlRfVU5V
U0VEKGV4ZWMsIGV4ZWMtPmhhZEV4Y2VwdGlvbigpKTsKICAgICByZXR1cm4gZmFsc2U7CkBAIC01
OSwxMyArNTksMTMgQEAgYm9vbCBKU05vdEFuT2JqZWN0OjpnZXRPd25Qcm9wZXJ0eVNsb3RCeQog
ICAgIHJldHVybiBmYWxzZTsKIH0KIAotYm9vbCBKU05vdEFuT2JqZWN0OjpnZXRPd25Qcm9wZXJ0
eURlc2NyaXB0b3IoSlNPYmplY3QqLCBFeGVjU3RhdGUqIGV4ZWMsIGNvbnN0IElkZW50aWZpZXIm
LCBQcm9wZXJ0eURlc2NyaXB0b3ImKQorYm9vbCBKU05vdEFuT2JqZWN0OjpnZXRPd25Qcm9wZXJ0
eURlc2NyaXB0b3IoSlNPYmplY3QqLCBFeGVjU3RhdGUqIGV4ZWMsIFByb3BlcnR5TmFtZSwgUHJv
cGVydHlEZXNjcmlwdG9yJikKIHsKICAgICBBU1NFUlRfVU5VU0VEKGV4ZWMsIGV4ZWMtPmhhZEV4
Y2VwdGlvbigpKTsKICAgICByZXR1cm4gZmFsc2U7CiB9CiAKLXZvaWQgSlNOb3RBbk9iamVjdDo6
cHV0KEpTQ2VsbCosIEV4ZWNTdGF0ZSogZXhlYywgY29uc3QgSWRlbnRpZmllciYgLCBKU1ZhbHVl
LCBQdXRQcm9wZXJ0eVNsb3QmKQordm9pZCBKU05vdEFuT2JqZWN0OjpwdXQoSlNDZWxsKiwgRXhl
Y1N0YXRlKiBleGVjLCBQcm9wZXJ0eU5hbWUgLCBKU1ZhbHVlLCBQdXRQcm9wZXJ0eVNsb3QmKQog
ewogICAgIEFTU0VSVF9VTlVTRUQoZXhlYywgZXhlYy0+aGFkRXhjZXB0aW9uKCkpOwogfQpAQCAt
NzUsNyArNzUsNyBAQCB2b2lkIEpTTm90QW5PYmplY3Q6OnB1dEJ5SW5kZXgoSlNDZWxsKiwgCiAg
ICAgQVNTRVJUX1VOVVNFRChleGVjLCBleGVjLT5oYWRFeGNlcHRpb24oKSk7CiB9CiAKLWJvb2wg
SlNOb3RBbk9iamVjdDo6ZGVsZXRlUHJvcGVydHkoSlNDZWxsKiwgRXhlY1N0YXRlKiBleGVjLCBj
b25zdCBJZGVudGlmaWVyJikKK2Jvb2wgSlNOb3RBbk9iamVjdDo6ZGVsZXRlUHJvcGVydHkoSlND
ZWxsKiwgRXhlY1N0YXRlKiBleGVjLCBQcm9wZXJ0eU5hbWUpCiB7CiAgICAgQVNTRVJUX1VOVVNF
RChleGVjLCBleGVjLT5oYWRFeGNlcHRpb24oKSk7CiAgICAgcmV0dXJuIGZhbHNlOwpJbmRleDog
U291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvSlNOb3RBbk9iamVjdC5oCj09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0K
LS0tIFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL0pTTm90QW5PYmplY3QuaAkocmV2aXNp
b24gMTE2NjY3KQorKysgU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvSlNOb3RBbk9iamVj
dC5oCSh3b3JraW5nIGNvcHkpCkBAIC02OCwxNCArNjgsMTQgQEAgbmFtZXNwYWNlIEpTQyB7CiAg
ICAgICAgIHN0YXRpYyBKU1ZhbHVlIGRlZmF1bHRWYWx1ZShjb25zdCBKU09iamVjdCosIEV4ZWNT
dGF0ZSosIFByZWZlcnJlZFByaW1pdGl2ZVR5cGUpOwogCiAgICAgICAgIC8vIEpTT2JqZWN0IG1l
dGhvZHMKLSAgICAgICAgc3RhdGljIGJvb2wgZ2V0T3duUHJvcGVydHlTbG90KEpTQ2VsbCosIEV4
ZWNTdGF0ZSosIGNvbnN0IElkZW50aWZpZXImIHByb3BlcnR5TmFtZSwgUHJvcGVydHlTbG90Jik7
CisgICAgICAgIHN0YXRpYyBib29sIGdldE93blByb3BlcnR5U2xvdChKU0NlbGwqLCBFeGVjU3Rh
dGUqLCBQcm9wZXJ0eU5hbWUgcHJvcGVydHlOYW1lLCBQcm9wZXJ0eVNsb3QmKTsKICAgICAgICAg
c3RhdGljIGJvb2wgZ2V0T3duUHJvcGVydHlTbG90QnlJbmRleChKU0NlbGwqLCBFeGVjU3RhdGUq
LCB1bnNpZ25lZCBwcm9wZXJ0eU5hbWUsIFByb3BlcnR5U2xvdCYpOwotICAgICAgICBzdGF0aWMg
Ym9vbCBnZXRPd25Qcm9wZXJ0eURlc2NyaXB0b3IoSlNPYmplY3QqLCBFeGVjU3RhdGUqLCBjb25z
dCBJZGVudGlmaWVyJiwgUHJvcGVydHlEZXNjcmlwdG9yJik7CisgICAgICAgIHN0YXRpYyBib29s
IGdldE93blByb3BlcnR5RGVzY3JpcHRvcihKU09iamVjdCosIEV4ZWNTdGF0ZSosIFByb3BlcnR5
TmFtZSwgUHJvcGVydHlEZXNjcmlwdG9yJik7CiAKLSAgICAgICAgc3RhdGljIHZvaWQgcHV0KEpT
Q2VsbCosIEV4ZWNTdGF0ZSosIGNvbnN0IElkZW50aWZpZXImIHByb3BlcnR5TmFtZSwgSlNWYWx1
ZSwgUHV0UHJvcGVydHlTbG90Jik7CisgICAgICAgIHN0YXRpYyB2b2lkIHB1dChKU0NlbGwqLCBF
eGVjU3RhdGUqLCBQcm9wZXJ0eU5hbWUgcHJvcGVydHlOYW1lLCBKU1ZhbHVlLCBQdXRQcm9wZXJ0
eVNsb3QmKTsKICAgICAgICAgc3RhdGljIHZvaWQgcHV0QnlJbmRleChKU0NlbGwqLCBFeGVjU3Rh
dGUqLCB1bnNpZ25lZCBwcm9wZXJ0eU5hbWUsIEpTVmFsdWUsIGJvb2wgc2hvdWxkVGhyb3cpOwog
Ci0gICAgICAgIHN0YXRpYyBib29sIGRlbGV0ZVByb3BlcnR5KEpTQ2VsbCosIEV4ZWNTdGF0ZSos
IGNvbnN0IElkZW50aWZpZXImIHByb3BlcnR5TmFtZSk7CisgICAgICAgIHN0YXRpYyBib29sIGRl
bGV0ZVByb3BlcnR5KEpTQ2VsbCosIEV4ZWNTdGF0ZSosIFByb3BlcnR5TmFtZSBwcm9wZXJ0eU5h
bWUpOwogICAgICAgICBzdGF0aWMgYm9vbCBkZWxldGVQcm9wZXJ0eUJ5SW5kZXgoSlNDZWxsKiwg
RXhlY1N0YXRlKiwgdW5zaWduZWQgcHJvcGVydHlOYW1lKTsKIAogICAgICAgICBzdGF0aWMgdm9p
ZCBnZXRPd25Qcm9wZXJ0eU5hbWVzKEpTT2JqZWN0KiwgRXhlY1N0YXRlKiwgUHJvcGVydHlOYW1l
QXJyYXkmLCBFbnVtZXJhdGlvbk1vZGUpOwpJbmRleDogU291cmNlL0phdmFTY3JpcHRDb3JlL3J1
bnRpbWUvSlNPTk9iamVjdC5jcHAKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL0phdmFTY3JpcHRDb3Jl
L3J1bnRpbWUvSlNPTk9iamVjdC5jcHAJKHJldmlzaW9uIDExNjY2NykKKysrIFNvdXJjZS9KYXZh
U2NyaXB0Q29yZS9ydW50aW1lL0pTT05PYmplY3QuY3BwCSh3b3JraW5nIGNvcHkpCkBAIC01OTUs
MTIgKzU5NSwxMiBAQCBjb25zdCBDbGFzc0luZm8gSlNPTk9iamVjdDo6c19pbmZvID0geyAiCiAK
IC8vIEVDTUEgMTUuOAogCi1ib29sIEpTT05PYmplY3Q6OmdldE93blByb3BlcnR5U2xvdChKU0Nl
bGwqIGNlbGwsIEV4ZWNTdGF0ZSogZXhlYywgY29uc3QgSWRlbnRpZmllciYgcHJvcGVydHlOYW1l
LCBQcm9wZXJ0eVNsb3QmIHNsb3QpCitib29sIEpTT05PYmplY3Q6OmdldE93blByb3BlcnR5U2xv
dChKU0NlbGwqIGNlbGwsIEV4ZWNTdGF0ZSogZXhlYywgUHJvcGVydHlOYW1lIHByb3BlcnR5TmFt
ZSwgUHJvcGVydHlTbG90JiBzbG90KQogewogICAgIHJldHVybiBnZXRTdGF0aWNGdW5jdGlvblNs
b3Q8SlNPYmplY3Q+KGV4ZWMsIEV4ZWNTdGF0ZTo6anNvblRhYmxlKGV4ZWMpLCBqc0Nhc3Q8SlNP
Tk9iamVjdCo+KGNlbGwpLCBwcm9wZXJ0eU5hbWUsIHNsb3QpOwogfQogCi1ib29sIEpTT05PYmpl
Y3Q6OmdldE93blByb3BlcnR5RGVzY3JpcHRvcihKU09iamVjdCogb2JqZWN0LCBFeGVjU3RhdGUq
IGV4ZWMsIGNvbnN0IElkZW50aWZpZXImIHByb3BlcnR5TmFtZSwgUHJvcGVydHlEZXNjcmlwdG9y
JiBkZXNjcmlwdG9yKQorYm9vbCBKU09OT2JqZWN0OjpnZXRPd25Qcm9wZXJ0eURlc2NyaXB0b3Io
SlNPYmplY3QqIG9iamVjdCwgRXhlY1N0YXRlKiBleGVjLCBQcm9wZXJ0eU5hbWUgcHJvcGVydHlO
YW1lLCBQcm9wZXJ0eURlc2NyaXB0b3ImIGRlc2NyaXB0b3IpCiB7CiAgICAgcmV0dXJuIGdldFN0
YXRpY0Z1bmN0aW9uRGVzY3JpcHRvcjxKU09iamVjdD4oZXhlYywgRXhlY1N0YXRlOjpqc29uVGFi
bGUoZXhlYyksIGpzQ2FzdDxKU09OT2JqZWN0Kj4ob2JqZWN0KSwgcHJvcGVydHlOYW1lLCBkZXNj
cmlwdG9yKTsKIH0KSW5kZXg6IFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL0pTT05PYmpl
Y3QuaAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9KU09OT2Jq
ZWN0LmgJKHJldmlzaW9uIDExNjY2NykKKysrIFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1l
L0pTT05PYmplY3QuaAkod29ya2luZyBjb3B5KQpAQCAtNTYsOCArNTYsOCBAQCBuYW1lc3BhY2Ug
SlNDIHsKIAogICAgIHByaXZhdGU6CiAgICAgICAgIEpTT05PYmplY3QoSlNHbG9iYWxPYmplY3Qq
LCBTdHJ1Y3R1cmUqKTsKLSAgICAgICAgc3RhdGljIGJvb2wgZ2V0T3duUHJvcGVydHlTbG90KEpT
Q2VsbCosIEV4ZWNTdGF0ZSosIGNvbnN0IElkZW50aWZpZXImLCBQcm9wZXJ0eVNsb3QmKTsKLSAg
ICAgICAgc3RhdGljIGJvb2wgZ2V0T3duUHJvcGVydHlEZXNjcmlwdG9yKEpTT2JqZWN0KiwgRXhl
Y1N0YXRlKiwgY29uc3QgSWRlbnRpZmllciYsIFByb3BlcnR5RGVzY3JpcHRvciYpOworICAgICAg
ICBzdGF0aWMgYm9vbCBnZXRPd25Qcm9wZXJ0eVNsb3QoSlNDZWxsKiwgRXhlY1N0YXRlKiwgUHJv
cGVydHlOYW1lLCBQcm9wZXJ0eVNsb3QmKTsKKyAgICAgICAgc3RhdGljIGJvb2wgZ2V0T3duUHJv
cGVydHlEZXNjcmlwdG9yKEpTT2JqZWN0KiwgRXhlY1N0YXRlKiwgUHJvcGVydHlOYW1lLCBQcm9w
ZXJ0eURlc2NyaXB0b3ImKTsKIAogICAgIH07CiAKSW5kZXg6IFNvdXJjZS9KYXZhU2NyaXB0Q29y
ZS9ydW50aW1lL0pTT2JqZWN0LmNwcAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvSmF2YVNjcmlwdENv
cmUvcnVudGltZS9KU09iamVjdC5jcHAJKHJldmlzaW9uIDExNjY2NykKKysrIFNvdXJjZS9KYXZh
U2NyaXB0Q29yZS9ydW50aW1lL0pTT2JqZWN0LmNwcAkod29ya2luZyBjb3B5KQpAQCAtMTIwLDcg
KzEyMCw3IEBAIGJvb2wgSlNPYmplY3Q6OmdldE93blByb3BlcnR5U2xvdEJ5SW5kZXgKIH0KIAog
Ly8gRUNNQSA4LjYuMi4yCi12b2lkIEpTT2JqZWN0OjpwdXQoSlNDZWxsKiBjZWxsLCBFeGVjU3Rh
dGUqIGV4ZWMsIGNvbnN0IElkZW50aWZpZXImIHByb3BlcnR5TmFtZSwgSlNWYWx1ZSB2YWx1ZSwg
UHV0UHJvcGVydHlTbG90JiBzbG90KQordm9pZCBKU09iamVjdDo6cHV0KEpTQ2VsbCogY2VsbCwg
RXhlY1N0YXRlKiBleGVjLCBQcm9wZXJ0eU5hbWUgcHJvcGVydHlOYW1lLCBKU1ZhbHVlIHZhbHVl
LCBQdXRQcm9wZXJ0eVNsb3QmIHNsb3QpCiB7CiAgICAgSlNPYmplY3QqIHRoaXNPYmplY3QgPSBq
c0Nhc3Q8SlNPYmplY3QqPihjZWxsKTsKICAgICBBU1NFUlQodmFsdWUpOwpAQCAtMTkyLDcgKzE5
Miw3IEBAIHZvaWQgSlNPYmplY3Q6OnB1dEJ5SW5kZXgoSlNDZWxsKiBjZWxsLCAKICAgICB0aGlz
T2JqZWN0LT5tZXRob2RUYWJsZSgpLT5wdXQodGhpc09iamVjdCwgZXhlYywgSWRlbnRpZmllcjo6
ZnJvbShleGVjLCBwcm9wZXJ0eU5hbWUpLCB2YWx1ZSwgc2xvdCk7CiB9CiAKLXZvaWQgSlNPYmpl
Y3Q6OnB1dERpcmVjdFZpcnR1YWwoSlNPYmplY3QqIG9iamVjdCwgRXhlY1N0YXRlKiBleGVjLCBj
b25zdCBJZGVudGlmaWVyJiBwcm9wZXJ0eU5hbWUsIEpTVmFsdWUgdmFsdWUsIHVuc2lnbmVkIGF0
dHJpYnV0ZXMpCit2b2lkIEpTT2JqZWN0OjpwdXREaXJlY3RWaXJ0dWFsKEpTT2JqZWN0KiBvYmpl
Y3QsIEV4ZWNTdGF0ZSogZXhlYywgUHJvcGVydHlOYW1lIHByb3BlcnR5TmFtZSwgSlNWYWx1ZSB2
YWx1ZSwgdW5zaWduZWQgYXR0cmlidXRlcykKIHsKICAgICBBU1NFUlQoIXZhbHVlLmlzR2V0dGVy
U2V0dGVyKCkgJiYgIShhdHRyaWJ1dGVzICYgQWNjZXNzb3IpKTsKICAgICBQdXRQcm9wZXJ0eVNs
b3Qgc2xvdDsKQEAgLTIyMSw3ICsyMjEsNyBAQCBib29sIEpTT2JqZWN0OjphbGxvd3NBY2Nlc3NG
cm9tKEV4ZWNTdGF0CiAgICAgcmV0dXJuIGdsb2JhbE9iamVjdC0+Z2xvYmFsT2JqZWN0TWV0aG9k
VGFibGUoKS0+YWxsb3dzQWNjZXNzRnJvbShnbG9iYWxPYmplY3QsIGV4ZWMpOwogfQogCi12b2lk
IEpTT2JqZWN0OjpwdXREaXJlY3RBY2Nlc3NvcihKU0dsb2JhbERhdGEmIGdsb2JhbERhdGEsIGNv
bnN0IElkZW50aWZpZXImIHByb3BlcnR5TmFtZSwgSlNWYWx1ZSB2YWx1ZSwgdW5zaWduZWQgYXR0
cmlidXRlcykKK3ZvaWQgSlNPYmplY3Q6OnB1dERpcmVjdEFjY2Vzc29yKEpTR2xvYmFsRGF0YSYg
Z2xvYmFsRGF0YSwgUHJvcGVydHlOYW1lIHByb3BlcnR5TmFtZSwgSlNWYWx1ZSB2YWx1ZSwgdW5z
aWduZWQgYXR0cmlidXRlcykKIHsKICAgICBBU1NFUlQodmFsdWUuaXNHZXR0ZXJTZXR0ZXIoKSAm
JiAoYXR0cmlidXRlcyAmIEFjY2Vzc29yKSk7CiAKQEAgLTI0MCw3ICsyNDAsNyBAQCB2b2lkIEpT
T2JqZWN0OjpwdXREaXJlY3RBY2Nlc3NvcihKU0dsb2JhCiAgICAgc3RydWN0dXJlKCktPnNldEhh
c0dldHRlclNldHRlclByb3BlcnRpZXMocHJvcGVydHlOYW1lID09IGdsb2JhbERhdGEucHJvcGVy
dHlOYW1lcy0+dW5kZXJzY29yZVByb3RvKTsKIH0KIAotYm9vbCBKU09iamVjdDo6aGFzUHJvcGVy
dHkoRXhlY1N0YXRlKiBleGVjLCBjb25zdCBJZGVudGlmaWVyJiBwcm9wZXJ0eU5hbWUpIGNvbnN0
Citib29sIEpTT2JqZWN0OjpoYXNQcm9wZXJ0eShFeGVjU3RhdGUqIGV4ZWMsIFByb3BlcnR5TmFt
ZSBwcm9wZXJ0eU5hbWUpIGNvbnN0CiB7CiAgICAgUHJvcGVydHlTbG90IHNsb3Q7CiAgICAgcmV0
dXJuIGNvbnN0X2Nhc3Q8SlNPYmplY3QqPih0aGlzKS0+Z2V0UHJvcGVydHlTbG90KGV4ZWMsIHBy
b3BlcnR5TmFtZSwgc2xvdCk7CkBAIC0yNTMsNyArMjUzLDcgQEAgYm9vbCBKU09iamVjdDo6aGFz
UHJvcGVydHkoRXhlY1N0YXRlKiBleAogfQogCiAvLyBFQ01BIDguNi4yLjUKLWJvb2wgSlNPYmpl
Y3Q6OmRlbGV0ZVByb3BlcnR5KEpTQ2VsbCogY2VsbCwgRXhlY1N0YXRlKiBleGVjLCBjb25zdCBJ
ZGVudGlmaWVyJiBwcm9wZXJ0eU5hbWUpCitib29sIEpTT2JqZWN0OjpkZWxldGVQcm9wZXJ0eShK
U0NlbGwqIGNlbGwsIEV4ZWNTdGF0ZSogZXhlYywgUHJvcGVydHlOYW1lIHByb3BlcnR5TmFtZSkK
IHsKICAgICBKU09iamVjdCogdGhpc09iamVjdCA9IGpzQ2FzdDxKU09iamVjdCo+KGNlbGwpOwog
CkBAIC0yNzgsNyArMjc4LDcgQEAgYm9vbCBKU09iamVjdDo6ZGVsZXRlUHJvcGVydHkoSlNDZWxs
KiBjZQogICAgIHJldHVybiB0cnVlOwogfQogCi1ib29sIEpTT2JqZWN0OjpoYXNPd25Qcm9wZXJ0
eShFeGVjU3RhdGUqIGV4ZWMsIGNvbnN0IElkZW50aWZpZXImIHByb3BlcnR5TmFtZSkgY29uc3QK
K2Jvb2wgSlNPYmplY3Q6Omhhc093blByb3BlcnR5KEV4ZWNTdGF0ZSogZXhlYywgUHJvcGVydHlO
YW1lIHByb3BlcnR5TmFtZSkgY29uc3QKIHsKICAgICBQcm9wZXJ0eVNsb3Qgc2xvdDsKICAgICBy
ZXR1cm4gY29uc3RfY2FzdDxKU09iamVjdCo+KHRoaXMpLT5tZXRob2RUYWJsZSgpLT5nZXRPd25Q
cm9wZXJ0eVNsb3QoY29uc3RfY2FzdDxKU09iamVjdCo+KHRoaXMpLCBleGVjLCBwcm9wZXJ0eU5h
bWUsIHNsb3QpOwpAQCAtMjkwLDcgKzI5MCw3IEBAIGJvb2wgSlNPYmplY3Q6OmRlbGV0ZVByb3Bl
cnR5QnlJbmRleChKU0MKICAgICByZXR1cm4gdGhpc09iamVjdC0+bWV0aG9kVGFibGUoKS0+ZGVs
ZXRlUHJvcGVydHkodGhpc09iamVjdCwgZXhlYywgSWRlbnRpZmllcjo6ZnJvbShleGVjLCBwcm9w
ZXJ0eU5hbWUpKTsKIH0KIAotc3RhdGljIEFMV0FZU19JTkxJTkUgSlNWYWx1ZSBjYWxsRGVmYXVs
dFZhbHVlRnVuY3Rpb24oRXhlY1N0YXRlKiBleGVjLCBjb25zdCBKU09iamVjdCogb2JqZWN0LCBj
b25zdCBJZGVudGlmaWVyJiBwcm9wZXJ0eU5hbWUpCitzdGF0aWMgQUxXQVlTX0lOTElORSBKU1Zh
bHVlIGNhbGxEZWZhdWx0VmFsdWVGdW5jdGlvbihFeGVjU3RhdGUqIGV4ZWMsIGNvbnN0IEpTT2Jq
ZWN0KiBvYmplY3QsIFByb3BlcnR5TmFtZSBwcm9wZXJ0eU5hbWUpCiB7CiAgICAgSlNWYWx1ZSBm
dW5jdGlvbiA9IG9iamVjdC0+Z2V0KGV4ZWMsIHByb3BlcnR5TmFtZSk7CiAgICAgQ2FsbERhdGEg
Y2FsbERhdGE7CkBAIC0zNDQsNyArMzQ0LDcgQEAgSlNWYWx1ZSBKU09iamVjdDo6ZGVmYXVsdFZh
bHVlKGNvbnN0IEpTTwogICAgIHJldHVybiB0aHJvd0Vycm9yKGV4ZWMsIGNyZWF0ZVR5cGVFcnJv
cihleGVjLCAiTm8gZGVmYXVsdCB2YWx1ZSIpKTsKIH0KIAotY29uc3QgSGFzaEVudHJ5KiBKU09i
amVjdDo6ZmluZFByb3BlcnR5SGFzaEVudHJ5KEV4ZWNTdGF0ZSogZXhlYywgY29uc3QgSWRlbnRp
ZmllciYgcHJvcGVydHlOYW1lKSBjb25zdAorY29uc3QgSGFzaEVudHJ5KiBKU09iamVjdDo6Zmlu
ZFByb3BlcnR5SGFzaEVudHJ5KEV4ZWNTdGF0ZSogZXhlYywgUHJvcGVydHlOYW1lIHByb3BlcnR5
TmFtZSkgY29uc3QKIHsKICAgICBmb3IgKGNvbnN0IENsYXNzSW5mbyogaW5mbyA9IGNsYXNzSW5m
bygpOyBpbmZvOyBpbmZvID0gaW5mby0+cGFyZW50Q2xhc3MpIHsKICAgICAgICAgaWYgKGNvbnN0
IEhhc2hUYWJsZSogcHJvcEhhc2hUYWJsZSA9IGluZm8tPnByb3BIYXNoVGFibGUoZXhlYykpIHsK
QEAgLTM4MSw3ICszODEsNyBAQCBib29sIEpTT2JqZWN0Ojpwcm9wZXJ0eUlzRW51bWVyYWJsZShF
eGVjCiAgICAgcmV0dXJuIGRlc2NyaXB0b3IuZW51bWVyYWJsZSgpOwogfQogCi1ib29sIEpTT2Jq
ZWN0OjpnZXRQcm9wZXJ0eVNwZWNpZmljVmFsdWUoRXhlY1N0YXRlKiBleGVjLCBjb25zdCBJZGVu
dGlmaWVyJiBwcm9wZXJ0eU5hbWUsIEpTQ2VsbComIHNwZWNpZmljVmFsdWUpIGNvbnN0Citib29s
IEpTT2JqZWN0OjpnZXRQcm9wZXJ0eVNwZWNpZmljVmFsdWUoRXhlY1N0YXRlKiBleGVjLCBQcm9w
ZXJ0eU5hbWUgcHJvcGVydHlOYW1lLCBKU0NlbGwqJiBzcGVjaWZpY1ZhbHVlKSBjb25zdAogewog
ICAgIHVuc2lnbmVkIGF0dHJpYnV0ZXM7CiAgICAgaWYgKHN0cnVjdHVyZSgpLT5nZXQoZXhlYy0+
Z2xvYmFsRGF0YSgpLCBwcm9wZXJ0eU5hbWUsIGF0dHJpYnV0ZXMsIHNwZWNpZmljVmFsdWUpICE9
IFdURjo6bm90Rm91bmQpCkBAIC01MTAsNyArNTEwLDcgQEAgdm9pZCBKU09iamVjdDo6cmVpZnlT
dGF0aWNGdW5jdGlvbnNGb3JEZQogICAgIHN0cnVjdHVyZSgpLT5zZXRTdGF0aWNGdW5jdGlvbnNS
ZWlmaWVkKCk7CiB9CiAKLXZvaWQgSlNPYmplY3Q6OnJlbW92ZURpcmVjdChKU0dsb2JhbERhdGEm
IGdsb2JhbERhdGEsIGNvbnN0IElkZW50aWZpZXImIHByb3BlcnR5TmFtZSkKK3ZvaWQgSlNPYmpl
Y3Q6OnJlbW92ZURpcmVjdChKU0dsb2JhbERhdGEmIGdsb2JhbERhdGEsIFByb3BlcnR5TmFtZSBw
cm9wZXJ0eU5hbWUpCiB7CiAgICAgaWYgKHN0cnVjdHVyZSgpLT5nZXQoZ2xvYmFsRGF0YSwgcHJv
cGVydHlOYW1lKSA9PSBXVEY6Om5vdEZvdW5kKQogICAgICAgICByZXR1cm47CkBAIC01ODMsNyAr
NTgzLDcgQEAgdm9pZCBKU09iamVjdDo6YWxsb2NhdGVQcm9wZXJ0eVN0b3JhZ2UoSgogICAgIG1f
cHJvcGVydHlTdG9yYWdlLnNldChnbG9iYWxEYXRhLCB0aGlzLCBuZXdQcm9wZXJ0eVN0b3JhZ2Up
OwogfQogCi1ib29sIEpTT2JqZWN0OjpnZXRPd25Qcm9wZXJ0eURlc2NyaXB0b3IoSlNPYmplY3Qq
IG9iamVjdCwgRXhlY1N0YXRlKiBleGVjLCBjb25zdCBJZGVudGlmaWVyJiBwcm9wZXJ0eU5hbWUs
IFByb3BlcnR5RGVzY3JpcHRvciYgZGVzY3JpcHRvcikKK2Jvb2wgSlNPYmplY3Q6OmdldE93blBy
b3BlcnR5RGVzY3JpcHRvcihKU09iamVjdCogb2JqZWN0LCBFeGVjU3RhdGUqIGV4ZWMsIFByb3Bl
cnR5TmFtZSBwcm9wZXJ0eU5hbWUsIFByb3BlcnR5RGVzY3JpcHRvciYgZGVzY3JpcHRvcikKIHsK
ICAgICB1bnNpZ25lZCBhdHRyaWJ1dGVzID0gMDsKICAgICBKU0NlbGwqIGNlbGwgPSAwOwpAQCAt
NTk0LDcgKzU5NCw3IEBAIGJvb2wgSlNPYmplY3Q6OmdldE93blByb3BlcnR5RGVzY3JpcHRvcigK
ICAgICByZXR1cm4gdHJ1ZTsKIH0KIAotYm9vbCBKU09iamVjdDo6Z2V0UHJvcGVydHlEZXNjcmlw
dG9yKEV4ZWNTdGF0ZSogZXhlYywgY29uc3QgSWRlbnRpZmllciYgcHJvcGVydHlOYW1lLCBQcm9w
ZXJ0eURlc2NyaXB0b3ImIGRlc2NyaXB0b3IpCitib29sIEpTT2JqZWN0OjpnZXRQcm9wZXJ0eURl
c2NyaXB0b3IoRXhlY1N0YXRlKiBleGVjLCBQcm9wZXJ0eU5hbWUgcHJvcGVydHlOYW1lLCBQcm9w
ZXJ0eURlc2NyaXB0b3ImIGRlc2NyaXB0b3IpCiB7CiAgICAgSlNPYmplY3QqIG9iamVjdCA9IHRo
aXM7CiAgICAgd2hpbGUgKHRydWUpIHsKQEAgLTYwNyw3ICs2MDcsNyBAQCBib29sIEpTT2JqZWN0
OjpnZXRQcm9wZXJ0eURlc2NyaXB0b3IoRXhlCiAgICAgfQogfQogCi1zdGF0aWMgYm9vbCBwdXRE
ZXNjcmlwdG9yKEV4ZWNTdGF0ZSogZXhlYywgSlNPYmplY3QqIHRhcmdldCwgY29uc3QgSWRlbnRp
ZmllciYgcHJvcGVydHlOYW1lLCBQcm9wZXJ0eURlc2NyaXB0b3ImIGRlc2NyaXB0b3IsIHVuc2ln
bmVkIGF0dHJpYnV0ZXMsIGNvbnN0IFByb3BlcnR5RGVzY3JpcHRvciYgb2xkRGVzY3JpcHRvcikK
K3N0YXRpYyBib29sIHB1dERlc2NyaXB0b3IoRXhlY1N0YXRlKiBleGVjLCBKU09iamVjdCogdGFy
Z2V0LCBQcm9wZXJ0eU5hbWUgcHJvcGVydHlOYW1lLCBQcm9wZXJ0eURlc2NyaXB0b3ImIGRlc2Ny
aXB0b3IsIHVuc2lnbmVkIGF0dHJpYnV0ZXMsIGNvbnN0IFByb3BlcnR5RGVzY3JpcHRvciYgb2xk
RGVzY3JpcHRvcikKIHsKICAgICBpZiAoZGVzY3JpcHRvci5pc0dlbmVyaWNEZXNjcmlwdG9yKCkg
fHwgZGVzY3JpcHRvci5pc0RhdGFEZXNjcmlwdG9yKCkpIHsKICAgICAgICAgaWYgKGRlc2NyaXB0
b3IuaXNHZW5lcmljRGVzY3JpcHRvcigpICYmIG9sZERlc2NyaXB0b3IuaXNBY2Nlc3NvckRlc2Ny
aXB0b3IoKSkgewpAQCAtNjYyLDcgKzY2Miw3IEBAIHByaXZhdGU6CiAgICAgSlNHbG9iYWxEYXRh
JiBtX2dsb2JhbERhdGE7CiB9OwogCi1ib29sIEpTT2JqZWN0OjpkZWZpbmVPd25Qcm9wZXJ0eShK
U09iamVjdCogb2JqZWN0LCBFeGVjU3RhdGUqIGV4ZWMsIGNvbnN0IElkZW50aWZpZXImIHByb3Bl
cnR5TmFtZSwgUHJvcGVydHlEZXNjcmlwdG9yJiBkZXNjcmlwdG9yLCBib29sIHRocm93RXhjZXB0
aW9uKQorYm9vbCBKU09iamVjdDo6ZGVmaW5lT3duUHJvcGVydHkoSlNPYmplY3QqIG9iamVjdCwg
RXhlY1N0YXRlKiBleGVjLCBQcm9wZXJ0eU5hbWUgcHJvcGVydHlOYW1lLCBQcm9wZXJ0eURlc2Ny
aXB0b3ImIGRlc2NyaXB0b3IsIGJvb2wgdGhyb3dFeGNlcHRpb24pCiB7CiAgICAgLy8gVHJhY2sg
b24gdGhlIGdsb2JhbGRhdGEgdGhhdCB3ZSdyZSBpbiBkZWZpbmUgcHJvcGVydHkuCiAgICAgLy8g
Q3VycmVudGx5IERlZmluZU93blByb3BlcnR5IHVzZXMgZGVsZXRlIHRvIHJlbW92ZSBwcm9wZXJ0
aWVzIHdoZW4gdGhleSBhcmUgYmVpbmcgcmVwbGFjZWQKSW5kZXg6IFNvdXJjZS9KYXZhU2NyaXB0
Q29yZS9ydW50aW1lL0pTT2JqZWN0LmgKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL0phdmFTY3JpcHRD
b3JlL3J1bnRpbWUvSlNPYmplY3QuaAkocmV2aXNpb24gMTE2NjY3KQorKysgU291cmNlL0phdmFT
Y3JpcHRDb3JlL3J1bnRpbWUvSlNPYmplY3QuaAkod29ya2luZyBjb3B5KQpAQCAtNzUsNyArNzUs
NyBAQCBuYW1lc3BhY2UgSlNDIHsKICAgICAgICAgZnJpZW5kIGNsYXNzIEpJVDsKICAgICAgICAg
ZnJpZW5kIGNsYXNzIEpTQ2VsbDsKICAgICAgICAgZnJpZW5kIGNsYXNzIE1hcmtlZEJsb2NrOwot
ICAgICAgICBKU19FWFBPUlRfUFJJVkFURSBmcmllbmQgYm9vbCBzZXRVcFN0YXRpY0Z1bmN0aW9u
U2xvdChFeGVjU3RhdGUqIGV4ZWMsIGNvbnN0IEhhc2hFbnRyeSogZW50cnksIEpTT2JqZWN0KiB0
aGlzT2JqLCBjb25zdCBJZGVudGlmaWVyJiBwcm9wZXJ0eU5hbWUsIFByb3BlcnR5U2xvdCYgc2xv
dCk7CisgICAgICAgIEpTX0VYUE9SVF9QUklWQVRFIGZyaWVuZCBib29sIHNldFVwU3RhdGljRnVu
Y3Rpb25TbG90KEV4ZWNTdGF0ZSogZXhlYywgY29uc3QgSGFzaEVudHJ5KiBlbnRyeSwgSlNPYmpl
Y3QqIHRoaXNPYmosIFByb3BlcnR5TmFtZSBwcm9wZXJ0eU5hbWUsIFByb3BlcnR5U2xvdCYgc2xv
dCk7CiAKICAgICAgICAgZW51bSBQdXRNb2RlIHsKICAgICAgICAgICAgIFB1dE1vZGVQdXQsCkBA
IC05NSwzOSArOTUsMzkgQEAgbmFtZXNwYWNlIEpTQyB7CiAgICAgICAgIAogICAgICAgICBTdHJ1
Y3R1cmUqIGluaGVyaXRvcklEKEpTR2xvYmFsRGF0YSYpOwogCi0gICAgICAgIEpTVmFsdWUgZ2V0
KEV4ZWNTdGF0ZSosIGNvbnN0IElkZW50aWZpZXImIHByb3BlcnR5TmFtZSkgY29uc3Q7CisgICAg
ICAgIEpTVmFsdWUgZ2V0KEV4ZWNTdGF0ZSosIFByb3BlcnR5TmFtZSBwcm9wZXJ0eU5hbWUpIGNv
bnN0OwogICAgICAgICBKU1ZhbHVlIGdldChFeGVjU3RhdGUqLCB1bnNpZ25lZCBwcm9wZXJ0eU5h
bWUpIGNvbnN0OwogCi0gICAgICAgIGJvb2wgZ2V0UHJvcGVydHlTbG90KEV4ZWNTdGF0ZSosIGNv
bnN0IElkZW50aWZpZXImIHByb3BlcnR5TmFtZSwgUHJvcGVydHlTbG90Jik7CisgICAgICAgIGJv
b2wgZ2V0UHJvcGVydHlTbG90KEV4ZWNTdGF0ZSosIFByb3BlcnR5TmFtZSBwcm9wZXJ0eU5hbWUs
IFByb3BlcnR5U2xvdCYpOwogICAgICAgICBib29sIGdldFByb3BlcnR5U2xvdChFeGVjU3RhdGUq
LCB1bnNpZ25lZCBwcm9wZXJ0eU5hbWUsIFByb3BlcnR5U2xvdCYpOwotICAgICAgICBKU19FWFBP
UlRfUFJJVkFURSBib29sIGdldFByb3BlcnR5RGVzY3JpcHRvcihFeGVjU3RhdGUqLCBjb25zdCBJ
ZGVudGlmaWVyJiBwcm9wZXJ0eU5hbWUsIFByb3BlcnR5RGVzY3JpcHRvciYpOworICAgICAgICBK
U19FWFBPUlRfUFJJVkFURSBib29sIGdldFByb3BlcnR5RGVzY3JpcHRvcihFeGVjU3RhdGUqLCBQ
cm9wZXJ0eU5hbWUgcHJvcGVydHlOYW1lLCBQcm9wZXJ0eURlc2NyaXB0b3ImKTsKIAotICAgICAg
ICBzdGF0aWMgYm9vbCBnZXRPd25Qcm9wZXJ0eVNsb3QoSlNDZWxsKiwgRXhlY1N0YXRlKiwgY29u
c3QgSWRlbnRpZmllciYgcHJvcGVydHlOYW1lLCBQcm9wZXJ0eVNsb3QmKTsKKyAgICAgICAgc3Rh
dGljIGJvb2wgZ2V0T3duUHJvcGVydHlTbG90KEpTQ2VsbCosIEV4ZWNTdGF0ZSosIFByb3BlcnR5
TmFtZSBwcm9wZXJ0eU5hbWUsIFByb3BlcnR5U2xvdCYpOwogICAgICAgICBKU19FWFBPUlRfUFJJ
VkFURSBzdGF0aWMgYm9vbCBnZXRPd25Qcm9wZXJ0eVNsb3RCeUluZGV4KEpTQ2VsbCosIEV4ZWNT
dGF0ZSosIHVuc2lnbmVkIHByb3BlcnR5TmFtZSwgUHJvcGVydHlTbG90Jik7Ci0gICAgICAgIEpT
X0VYUE9SVF9QUklWQVRFIHN0YXRpYyBib29sIGdldE93blByb3BlcnR5RGVzY3JpcHRvcihKU09i
amVjdCosIEV4ZWNTdGF0ZSosIGNvbnN0IElkZW50aWZpZXImLCBQcm9wZXJ0eURlc2NyaXB0b3Im
KTsKKyAgICAgICAgSlNfRVhQT1JUX1BSSVZBVEUgc3RhdGljIGJvb2wgZ2V0T3duUHJvcGVydHlE
ZXNjcmlwdG9yKEpTT2JqZWN0KiwgRXhlY1N0YXRlKiwgUHJvcGVydHlOYW1lLCBQcm9wZXJ0eURl
c2NyaXB0b3ImKTsKIAogICAgICAgICBib29sIGFsbG93c0FjY2Vzc0Zyb20oRXhlY1N0YXRlKik7
CiAKLSAgICAgICAgSlNfRVhQT1JUX1BSSVZBVEUgc3RhdGljIHZvaWQgcHV0KEpTQ2VsbCosIEV4
ZWNTdGF0ZSosIGNvbnN0IElkZW50aWZpZXImIHByb3BlcnR5TmFtZSwgSlNWYWx1ZSwgUHV0UHJv
cGVydHlTbG90Jik7CisgICAgICAgIEpTX0VYUE9SVF9QUklWQVRFIHN0YXRpYyB2b2lkIHB1dChK
U0NlbGwqLCBFeGVjU3RhdGUqLCBQcm9wZXJ0eU5hbWUgcHJvcGVydHlOYW1lLCBKU1ZhbHVlLCBQ
dXRQcm9wZXJ0eVNsb3QmKTsKICAgICAgICAgSlNfRVhQT1JUX1BSSVZBVEUgc3RhdGljIHZvaWQg
cHV0QnlJbmRleChKU0NlbGwqLCBFeGVjU3RhdGUqLCB1bnNpZ25lZCBwcm9wZXJ0eU5hbWUsIEpT
VmFsdWUsIGJvb2wgc2hvdWxkVGhyb3cpOwogCiAgICAgICAgIC8vIHB1dERpcmVjdCBpcyBlZmZl
Y3RpdmVseSBhbiB1bmNoZWNrZWQgdmVzaW9uIG9mICdkZWZpbmVPd25Qcm9wZXJ0eSc6CiAgICAg
ICAgIC8vICAtIHRoZSBwcm90b3R5cGUgY2hhaW4gaXMgbm90IGNvbnN1bHRlZAogICAgICAgICAv
LyAgLSBhY2Nlc3NvcnMgYXJlIG5vdCBjYWxsZWQuCiAgICAgICAgIC8vICAtIGF0dHJpYnV0ZXMg
d2lsbCBiZSByZXNwZWN0ZWQgKGFmdGVyIHRoZSBjYWxsIHRoZSBwcm9wZXJ0eSB3aWxsIGV4aXN0
IHdpdGggdGhlIGdpdmVuIGF0dHJpYnV0ZXMpCi0gICAgICAgIEpTX0VYUE9SVF9QUklWQVRFIHN0
YXRpYyB2b2lkIHB1dERpcmVjdFZpcnR1YWwoSlNPYmplY3QqLCBFeGVjU3RhdGUqLCBjb25zdCBJ
ZGVudGlmaWVyJiBwcm9wZXJ0eU5hbWUsIEpTVmFsdWUsIHVuc2lnbmVkIGF0dHJpYnV0ZXMpOwot
ICAgICAgICB2b2lkIHB1dERpcmVjdChKU0dsb2JhbERhdGEmLCBjb25zdCBJZGVudGlmaWVyJiBw
cm9wZXJ0eU5hbWUsIEpTVmFsdWUsIHVuc2lnbmVkIGF0dHJpYnV0ZXMgPSAwKTsKLSAgICAgICAg
dm9pZCBwdXREaXJlY3QoSlNHbG9iYWxEYXRhJiwgY29uc3QgSWRlbnRpZmllciYgcHJvcGVydHlO
YW1lLCBKU1ZhbHVlLCBQdXRQcm9wZXJ0eVNsb3QmKTsKLSAgICAgICAgdm9pZCBwdXREaXJlY3RX
aXRob3V0VHJhbnNpdGlvbihKU0dsb2JhbERhdGEmLCBjb25zdCBJZGVudGlmaWVyJiBwcm9wZXJ0
eU5hbWUsIEpTVmFsdWUsIHVuc2lnbmVkIGF0dHJpYnV0ZXMgPSAwKTsKLSAgICAgICAgdm9pZCBw
dXREaXJlY3RBY2Nlc3NvcihKU0dsb2JhbERhdGEmLCBjb25zdCBJZGVudGlmaWVyJiBwcm9wZXJ0
eU5hbWUsIEpTVmFsdWUsIHVuc2lnbmVkIGF0dHJpYnV0ZXMpOworICAgICAgICBKU19FWFBPUlRf
UFJJVkFURSBzdGF0aWMgdm9pZCBwdXREaXJlY3RWaXJ0dWFsKEpTT2JqZWN0KiwgRXhlY1N0YXRl
KiwgUHJvcGVydHlOYW1lIHByb3BlcnR5TmFtZSwgSlNWYWx1ZSwgdW5zaWduZWQgYXR0cmlidXRl
cyk7CisgICAgICAgIHZvaWQgcHV0RGlyZWN0KEpTR2xvYmFsRGF0YSYsIFByb3BlcnR5TmFtZSBw
cm9wZXJ0eU5hbWUsIEpTVmFsdWUsIHVuc2lnbmVkIGF0dHJpYnV0ZXMgPSAwKTsKKyAgICAgICAg
dm9pZCBwdXREaXJlY3QoSlNHbG9iYWxEYXRhJiwgUHJvcGVydHlOYW1lIHByb3BlcnR5TmFtZSwg
SlNWYWx1ZSwgUHV0UHJvcGVydHlTbG90Jik7CisgICAgICAgIHZvaWQgcHV0RGlyZWN0V2l0aG91
dFRyYW5zaXRpb24oSlNHbG9iYWxEYXRhJiwgUHJvcGVydHlOYW1lIHByb3BlcnR5TmFtZSwgSlNW
YWx1ZSwgdW5zaWduZWQgYXR0cmlidXRlcyA9IDApOworICAgICAgICB2b2lkIHB1dERpcmVjdEFj
Y2Vzc29yKEpTR2xvYmFsRGF0YSYsIFByb3BlcnR5TmFtZSBwcm9wZXJ0eU5hbWUsIEpTVmFsdWUs
IHVuc2lnbmVkIGF0dHJpYnV0ZXMpOwogCiAgICAgICAgIGJvb2wgcHJvcGVydHlJc0VudW1lcmFi
bGUoRXhlY1N0YXRlKiwgY29uc3QgSWRlbnRpZmllciYgcHJvcGVydHlOYW1lKSBjb25zdDsKIAot
ICAgICAgICBKU19FWFBPUlRfUFJJVkFURSBib29sIGhhc1Byb3BlcnR5KEV4ZWNTdGF0ZSosIGNv
bnN0IElkZW50aWZpZXImIHByb3BlcnR5TmFtZSkgY29uc3Q7CisgICAgICAgIEpTX0VYUE9SVF9Q
UklWQVRFIGJvb2wgaGFzUHJvcGVydHkoRXhlY1N0YXRlKiwgUHJvcGVydHlOYW1lIHByb3BlcnR5
TmFtZSkgY29uc3Q7CiAgICAgICAgIEpTX0VYUE9SVF9QUklWQVRFIGJvb2wgaGFzUHJvcGVydHko
RXhlY1N0YXRlKiwgdW5zaWduZWQgcHJvcGVydHlOYW1lKSBjb25zdDsKLSAgICAgICAgYm9vbCBo
YXNPd25Qcm9wZXJ0eShFeGVjU3RhdGUqLCBjb25zdCBJZGVudGlmaWVyJiBwcm9wZXJ0eU5hbWUp
IGNvbnN0OworICAgICAgICBib29sIGhhc093blByb3BlcnR5KEV4ZWNTdGF0ZSosIFByb3BlcnR5
TmFtZSBwcm9wZXJ0eU5hbWUpIGNvbnN0OwogCi0gICAgICAgIEpTX0VYUE9SVF9QUklWQVRFIHN0
YXRpYyBib29sIGRlbGV0ZVByb3BlcnR5KEpTQ2VsbCosIEV4ZWNTdGF0ZSosIGNvbnN0IElkZW50
aWZpZXImIHByb3BlcnR5TmFtZSk7CisgICAgICAgIEpTX0VYUE9SVF9QUklWQVRFIHN0YXRpYyBi
b29sIGRlbGV0ZVByb3BlcnR5KEpTQ2VsbCosIEV4ZWNTdGF0ZSosIFByb3BlcnR5TmFtZSBwcm9w
ZXJ0eU5hbWUpOwogICAgICAgICBKU19FWFBPUlRfUFJJVkFURSBzdGF0aWMgYm9vbCBkZWxldGVQ
cm9wZXJ0eUJ5SW5kZXgoSlNDZWxsKiwgRXhlY1N0YXRlKiwgdW5zaWduZWQgcHJvcGVydHlOYW1l
KTsKIAogICAgICAgICBKU19FWFBPUlRfUFJJVkFURSBzdGF0aWMgSlNWYWx1ZSBkZWZhdWx0VmFs
dWUoY29uc3QgSlNPYmplY3QqLCBFeGVjU3RhdGUqLCBQcmVmZXJyZWRQcmltaXRpdmVUeXBlKTsK
QEAgLTE0OCwyMiArMTQ4LDIyIEBAIG5hbWVzcGFjZSBKU0MgewogICAgICAgICBKU19FWFBPUlRf
UFJJVkFURSBzdGF0aWMgSlNPYmplY3QqIHRvVGhpc09iamVjdChKU0NlbGwqLCBFeGVjU3RhdGUq
KTsKICAgICAgICAgSlNPYmplY3QqIHVud3JhcHBlZE9iamVjdCgpOwogCi0gICAgICAgIGJvb2wg
Z2V0UHJvcGVydHlTcGVjaWZpY1ZhbHVlKEV4ZWNTdGF0ZSogZXhlYywgY29uc3QgSWRlbnRpZmll
ciYgcHJvcGVydHlOYW1lLCBKU0NlbGwqJiBzcGVjaWZpY0Z1bmN0aW9uKSBjb25zdDsKKyAgICAg
ICAgYm9vbCBnZXRQcm9wZXJ0eVNwZWNpZmljVmFsdWUoRXhlY1N0YXRlKiBleGVjLCBQcm9wZXJ0
eU5hbWUgcHJvcGVydHlOYW1lLCBKU0NlbGwqJiBzcGVjaWZpY0Z1bmN0aW9uKSBjb25zdDsKIAog
ICAgICAgICAvLyBUaGlzIGdldCBmdW5jdGlvbiBvbmx5IGxvb2tzIGF0IHRoZSBwcm9wZXJ0eSBt
YXAuCi0gICAgICAgIEpTVmFsdWUgZ2V0RGlyZWN0KEpTR2xvYmFsRGF0YSYgZ2xvYmFsRGF0YSwg
Y29uc3QgSWRlbnRpZmllciYgcHJvcGVydHlOYW1lKSBjb25zdAorICAgICAgICBKU1ZhbHVlIGdl
dERpcmVjdChKU0dsb2JhbERhdGEmIGdsb2JhbERhdGEsIFByb3BlcnR5TmFtZSBwcm9wZXJ0eU5h
bWUpIGNvbnN0CiAgICAgICAgIHsKICAgICAgICAgICAgIHNpemVfdCBvZmZzZXQgPSBzdHJ1Y3R1
cmUoKS0+Z2V0KGdsb2JhbERhdGEsIHByb3BlcnR5TmFtZSk7CiAgICAgICAgICAgICByZXR1cm4g
b2Zmc2V0ICE9IFdURjo6bm90Rm91bmQgPyBnZXREaXJlY3RPZmZzZXQob2Zmc2V0KSA6IEpTVmFs
dWUoKTsKICAgICAgICAgfQogCi0gICAgICAgIFdyaXRlQmFycmllckJhc2U8VW5rbm93bj4qIGdl
dERpcmVjdExvY2F0aW9uKEpTR2xvYmFsRGF0YSYgZ2xvYmFsRGF0YSwgY29uc3QgSWRlbnRpZmll
ciYgcHJvcGVydHlOYW1lKQorICAgICAgICBXcml0ZUJhcnJpZXJCYXNlPFVua25vd24+KiBnZXRE
aXJlY3RMb2NhdGlvbihKU0dsb2JhbERhdGEmIGdsb2JhbERhdGEsIFByb3BlcnR5TmFtZSBwcm9w
ZXJ0eU5hbWUpCiAgICAgICAgIHsKICAgICAgICAgICAgIHNpemVfdCBvZmZzZXQgPSBzdHJ1Y3R1
cmUoKS0+Z2V0KGdsb2JhbERhdGEsIHByb3BlcnR5TmFtZSk7CiAgICAgICAgICAgICByZXR1cm4g
b2Zmc2V0ICE9IFdURjo6bm90Rm91bmQgPyBsb2NhdGlvbkZvck9mZnNldChvZmZzZXQpIDogMDsK
ICAgICAgICAgfQogCi0gICAgICAgIFdyaXRlQmFycmllckJhc2U8VW5rbm93bj4qIGdldERpcmVj
dExvY2F0aW9uKEpTR2xvYmFsRGF0YSYgZ2xvYmFsRGF0YSwgY29uc3QgSWRlbnRpZmllciYgcHJv
cGVydHlOYW1lLCB1bnNpZ25lZCYgYXR0cmlidXRlcykKKyAgICAgICAgV3JpdGVCYXJyaWVyQmFz
ZTxVbmtub3duPiogZ2V0RGlyZWN0TG9jYXRpb24oSlNHbG9iYWxEYXRhJiBnbG9iYWxEYXRhLCBQ
cm9wZXJ0eU5hbWUgcHJvcGVydHlOYW1lLCB1bnNpZ25lZCYgYXR0cmlidXRlcykKICAgICAgICAg
ewogICAgICAgICAgICAgSlNDZWxsKiBzcGVjaWZpY0Z1bmN0aW9uOwogICAgICAgICAgICAgc2l6
ZV90IG9mZnNldCA9IHN0cnVjdHVyZSgpLT5nZXQoZ2xvYmFsRGF0YSwgcHJvcGVydHlOYW1lLCBh
dHRyaWJ1dGVzLCBzcGVjaWZpY0Z1bmN0aW9uKTsKQEAgLTE3Nyw3ICsxNzcsNyBAQCBuYW1lc3Bh
Y2UgSlNDIHsKIAogICAgICAgICB2b2lkIHRyYW5zaXRpb25UbyhKU0dsb2JhbERhdGEmLCBTdHJ1
Y3R1cmUqKTsKIAotICAgICAgICB2b2lkIHJlbW92ZURpcmVjdChKU0dsb2JhbERhdGEmLCBjb25z
dCBJZGVudGlmaWVyJiBwcm9wZXJ0eU5hbWUpOworICAgICAgICB2b2lkIHJlbW92ZURpcmVjdChK
U0dsb2JhbERhdGEmLCBQcm9wZXJ0eU5hbWUgcHJvcGVydHlOYW1lKTsKICAgICAgICAgYm9vbCBo
YXNDdXN0b21Qcm9wZXJ0aWVzKCkgeyByZXR1cm4gc3RydWN0dXJlKCktPmRpZFRyYW5zaXRpb24o
KTsgfQogICAgICAgICBib29sIGhhc0dldHRlclNldHRlclByb3BlcnRpZXMoKSB7IHJldHVybiBz
dHJ1Y3R1cmUoKS0+aGFzR2V0dGVyU2V0dGVyUHJvcGVydGllcygpOyB9CiAKQEAgLTE4NiwxNCAr
MTg2LDE0IEBAIG5hbWVzcGFjZSBKU0MgewogICAgICAgICAvLyAgLSBwcm92aWRlcyBubyBzcGVj
aWFsIGhhbmRsaW5nIGZvciBfX3Byb3RvX18KICAgICAgICAgLy8gIC0gZG9lcyBub3Qgd2FsayB0
aGUgcHJvdG90eXBlIGNoYWluICh0byBjaGVjayBmb3IgYWNjZXNzb3JzIG9yIG5vbi13cml0YWJs
ZSBwcm9wZXJ0aWVzKS4KICAgICAgICAgLy8gVGhpcyBpcyB1c2VkIGJ5IEpTQWN0aXZhdGlvbi4K
LSAgICAgICAgYm9vbCBwdXRPd25EYXRhUHJvcGVydHkoSlNHbG9iYWxEYXRhJiwgY29uc3QgSWRl
bnRpZmllciYgcHJvcGVydHlOYW1lLCBKU1ZhbHVlLCBQdXRQcm9wZXJ0eVNsb3QmKTsKKyAgICAg
ICAgYm9vbCBwdXRPd25EYXRhUHJvcGVydHkoSlNHbG9iYWxEYXRhJiwgUHJvcGVydHlOYW1lIHBy
b3BlcnR5TmFtZSwgSlNWYWx1ZSwgUHV0UHJvcGVydHlTbG90Jik7CiAKICAgICAgICAgLy8gRmFz
dCBhY2Nlc3MgdG8ga25vd24gcHJvcGVydHkgb2Zmc2V0cy4KICAgICAgICAgSlNWYWx1ZSBnZXRE
aXJlY3RPZmZzZXQoc2l6ZV90IG9mZnNldCkgY29uc3QgeyByZXR1cm4gcHJvcGVydHlTdG9yYWdl
KClbb2Zmc2V0XS5nZXQoKTsgfQogICAgICAgICB2b2lkIHB1dERpcmVjdE9mZnNldChKU0dsb2Jh
bERhdGEmIGdsb2JhbERhdGEsIHNpemVfdCBvZmZzZXQsIEpTVmFsdWUgdmFsdWUpIHsgcHJvcGVy
dHlTdG9yYWdlKClbb2Zmc2V0XS5zZXQoZ2xvYmFsRGF0YSwgdGhpcywgdmFsdWUpOyB9CiAgICAg
ICAgIHZvaWQgcHV0VW5kZWZpbmVkQXREaXJlY3RPZmZzZXQoc2l6ZV90IG9mZnNldCkgeyBwcm9w
ZXJ0eVN0b3JhZ2UoKVtvZmZzZXRdLnNldFVuZGVmaW5lZCgpOyB9CiAKLSAgICAgICAgSlNfRVhQ
T1JUX1BSSVZBVEUgc3RhdGljIGJvb2wgZGVmaW5lT3duUHJvcGVydHkoSlNPYmplY3QqLCBFeGVj
U3RhdGUqLCBjb25zdCBJZGVudGlmaWVyJiBwcm9wZXJ0eU5hbWUsIFByb3BlcnR5RGVzY3JpcHRv
ciYsIGJvb2wgc2hvdWxkVGhyb3cpOworICAgICAgICBKU19FWFBPUlRfUFJJVkFURSBzdGF0aWMg
Ym9vbCBkZWZpbmVPd25Qcm9wZXJ0eShKU09iamVjdCosIEV4ZWNTdGF0ZSosIFByb3BlcnR5TmFt
ZSBwcm9wZXJ0eU5hbWUsIFByb3BlcnR5RGVzY3JpcHRvciYsIGJvb2wgc2hvdWxkVGhyb3cpOwog
CiAgICAgICAgIGJvb2wgaXNHbG9iYWxPYmplY3QoKSBjb25zdDsKICAgICAgICAgYm9vbCBpc1Zh
cmlhYmxlT2JqZWN0KCkgY29uc3Q7CkBAIC0yOTQsMTIgKzI5NCwxMiBAQCBuYW1lc3BhY2UgSlND
IHsKICAgICAgICAgfQogCiAgICAgICAgIHRlbXBsYXRlPFB1dE1vZGU+Ci0gICAgICAgIGJvb2wg
cHV0RGlyZWN0SW50ZXJuYWwoSlNHbG9iYWxEYXRhJiwgY29uc3QgSWRlbnRpZmllciYgcHJvcGVy
dHlOYW1lLCBKU1ZhbHVlLCB1bnNpZ25lZCBhdHRyLCBQdXRQcm9wZXJ0eVNsb3QmLCBKU0NlbGwq
KTsKKyAgICAgICAgYm9vbCBwdXREaXJlY3RJbnRlcm5hbChKU0dsb2JhbERhdGEmLCBQcm9wZXJ0
eU5hbWUgcHJvcGVydHlOYW1lLCBKU1ZhbHVlLCB1bnNpZ25lZCBhdHRyLCBQdXRQcm9wZXJ0eVNs
b3QmLCBKU0NlbGwqKTsKIAotICAgICAgICBib29sIGlubGluZUdldE93blByb3BlcnR5U2xvdChF
eGVjU3RhdGUqLCBjb25zdCBJZGVudGlmaWVyJiBwcm9wZXJ0eU5hbWUsIFByb3BlcnR5U2xvdCYp
OworICAgICAgICBib29sIGlubGluZUdldE93blByb3BlcnR5U2xvdChFeGVjU3RhdGUqLCBQcm9w
ZXJ0eU5hbWUgcHJvcGVydHlOYW1lLCBQcm9wZXJ0eVNsb3QmKTsKICAgICAgICAgSlNfRVhQT1JU
X1BSSVZBVEUgdm9pZCBmaWxsR2V0dGVyUHJvcGVydHlTbG90KFByb3BlcnR5U2xvdCYsIFdyaXRl
QmFycmllckJhc2U8VW5rbm93bj4qIGxvY2F0aW9uKTsKIAotICAgICAgICBjb25zdCBIYXNoRW50
cnkqIGZpbmRQcm9wZXJ0eUhhc2hFbnRyeShFeGVjU3RhdGUqLCBjb25zdCBJZGVudGlmaWVyJiBw
cm9wZXJ0eU5hbWUpIGNvbnN0OworICAgICAgICBjb25zdCBIYXNoRW50cnkqIGZpbmRQcm9wZXJ0
eUhhc2hFbnRyeShFeGVjU3RhdGUqLCBQcm9wZXJ0eU5hbWUgcHJvcGVydHlOYW1lKSBjb25zdDsK
ICAgICAgICAgU3RydWN0dXJlKiBjcmVhdGVJbmhlcml0b3JJRChKU0dsb2JhbERhdGEmKTsKIAog
ICAgICAgICBTdG9yYWdlQmFycmllciBtX3Byb3BlcnR5U3RvcmFnZTsKQEAgLTUzOSw3ICs1Mzks
NyBAQCBpbmxpbmUgSlNPYmplY3QqIEpTVmFsdWU6OnRvVGhpc09iamVjdChFCiAgICAgcmV0dXJu
IGlzQ2VsbCgpID8gYXNDZWxsKCktPm1ldGhvZFRhYmxlKCktPnRvVGhpc09iamVjdChhc0NlbGwo
KSwgZXhlYykgOiB0b1RoaXNPYmplY3RTbG93Q2FzZShleGVjKTsKIH0KIAotQUxXQVlTX0lOTElO
RSBib29sIEpTT2JqZWN0OjppbmxpbmVHZXRPd25Qcm9wZXJ0eVNsb3QoRXhlY1N0YXRlKiBleGVj
LCBjb25zdCBJZGVudGlmaWVyJiBwcm9wZXJ0eU5hbWUsIFByb3BlcnR5U2xvdCYgc2xvdCkKK0FM
V0FZU19JTkxJTkUgYm9vbCBKU09iamVjdDo6aW5saW5lR2V0T3duUHJvcGVydHlTbG90KEV4ZWNT
dGF0ZSogZXhlYywgUHJvcGVydHlOYW1lIHByb3BlcnR5TmFtZSwgUHJvcGVydHlTbG90JiBzbG90
KQogewogICAgIGlmIChXcml0ZUJhcnJpZXJCYXNlPFVua25vd24+KiBsb2NhdGlvbiA9IGdldERp
cmVjdExvY2F0aW9uKGV4ZWMtPmdsb2JhbERhdGEoKSwgcHJvcGVydHlOYW1lKSkgewogICAgICAg
ICBpZiAoc3RydWN0dXJlKCktPmhhc0dldHRlclNldHRlclByb3BlcnRpZXMoKSAmJiBsb2NhdGlv
bi0+aXNHZXR0ZXJTZXR0ZXIoKSkKQEAgLTU1NSwxMiArNTU1LDEyIEBAIEFMV0FZU19JTkxJTkUg
Ym9vbCBKU09iamVjdDo6aW5saW5lR2V0T3cKIC8vIEl0IG1heSBzZWVtIGNyYXp5IHRvIGlubGlu
ZSBhIGZ1bmN0aW9uIHRoaXMgbGFyZ2UsIGVzcGVjaWFsbHkgYSB2aXJ0dWFsIGZ1bmN0aW9uLAog
Ly8gYnV0IGl0IG1ha2VzIGEgYmlnIGRpZmZlcmVuY2UgdG8gcHJvcGVydHkgbG9va3VwIHRoYXQg
ZGVyaXZlZCBjbGFzc2VzIGNhbiBpbmxpbmUgdGhlaXIKIC8vIGJhc2UgY2xhc3MgY2FsbCB0byB0
aGlzLgotQUxXQVlTX0lOTElORSBib29sIEpTT2JqZWN0OjpnZXRPd25Qcm9wZXJ0eVNsb3QoSlND
ZWxsKiBjZWxsLCBFeGVjU3RhdGUqIGV4ZWMsIGNvbnN0IElkZW50aWZpZXImIHByb3BlcnR5TmFt
ZSwgUHJvcGVydHlTbG90JiBzbG90KQorQUxXQVlTX0lOTElORSBib29sIEpTT2JqZWN0OjpnZXRP
d25Qcm9wZXJ0eVNsb3QoSlNDZWxsKiBjZWxsLCBFeGVjU3RhdGUqIGV4ZWMsIFByb3BlcnR5TmFt
ZSBwcm9wZXJ0eU5hbWUsIFByb3BlcnR5U2xvdCYgc2xvdCkKIHsKICAgICByZXR1cm4ganNDYXN0
PEpTT2JqZWN0Kj4oY2VsbCktPmlubGluZUdldE93blByb3BlcnR5U2xvdChleGVjLCBwcm9wZXJ0
eU5hbWUsIHNsb3QpOwogfQogCi1BTFdBWVNfSU5MSU5FIGJvb2wgSlNDZWxsOjpmYXN0R2V0T3du
UHJvcGVydHlTbG90KEV4ZWNTdGF0ZSogZXhlYywgY29uc3QgSWRlbnRpZmllciYgcHJvcGVydHlO
YW1lLCBQcm9wZXJ0eVNsb3QmIHNsb3QpCitBTFdBWVNfSU5MSU5FIGJvb2wgSlNDZWxsOjpmYXN0
R2V0T3duUHJvcGVydHlTbG90KEV4ZWNTdGF0ZSogZXhlYywgUHJvcGVydHlOYW1lIHByb3BlcnR5
TmFtZSwgUHJvcGVydHlTbG90JiBzbG90KQogewogICAgIGlmICghc3RydWN0dXJlKCktPnR5cGVJ
bmZvKCkub3ZlcnJpZGVzR2V0T3duUHJvcGVydHlTbG90KCkpCiAgICAgICAgIHJldHVybiBhc09i
amVjdCh0aGlzKS0+aW5saW5lR2V0T3duUHJvcGVydHlTbG90KGV4ZWMsIHByb3BlcnR5TmFtZSwg
c2xvdCk7CkBAIC01ODUsNyArNTg1LDcgQEAgQUxXQVlTX0lOTElORSBKU1ZhbHVlIEpTQ2VsbDo6
ZmFzdEdldE93bgogCiAvLyBJdCBtYXkgc2VlbSBjcmF6eSB0byBpbmxpbmUgYSBmdW5jdGlvbiB0
aGlzIGxhcmdlIGJ1dCBpdCBtYWtlcyBhIGJpZyBkaWZmZXJlbmNlCiAvLyBzaW5jZSB0aGlzIGlz
IGZ1bmN0aW9uIHZlcnkgaG90IGluIHZhcmlhYmxlIGxvb2t1cAotQUxXQVlTX0lOTElORSBib29s
IEpTT2JqZWN0OjpnZXRQcm9wZXJ0eVNsb3QoRXhlY1N0YXRlKiBleGVjLCBjb25zdCBJZGVudGlm
aWVyJiBwcm9wZXJ0eU5hbWUsIFByb3BlcnR5U2xvdCYgc2xvdCkKK0FMV0FZU19JTkxJTkUgYm9v
bCBKU09iamVjdDo6Z2V0UHJvcGVydHlTbG90KEV4ZWNTdGF0ZSogZXhlYywgUHJvcGVydHlOYW1l
IHByb3BlcnR5TmFtZSwgUHJvcGVydHlTbG90JiBzbG90KQogewogICAgIEpTT2JqZWN0KiBvYmpl
Y3QgPSB0aGlzOwogICAgIHdoaWxlICh0cnVlKSB7CkBAIC02MTEsNyArNjExLDcgQEAgQUxXQVlT
X0lOTElORSBib29sIEpTT2JqZWN0OjpnZXRQcm9wZXJ0eQogICAgIH0KIH0KIAotaW5saW5lIEpT
VmFsdWUgSlNPYmplY3Q6OmdldChFeGVjU3RhdGUqIGV4ZWMsIGNvbnN0IElkZW50aWZpZXImIHBy
b3BlcnR5TmFtZSkgY29uc3QKK2lubGluZSBKU1ZhbHVlIEpTT2JqZWN0OjpnZXQoRXhlY1N0YXRl
KiBleGVjLCBQcm9wZXJ0eU5hbWUgcHJvcGVydHlOYW1lKSBjb25zdAogewogICAgIFByb3BlcnR5
U2xvdCBzbG90KHRoaXMpOwogICAgIGlmIChjb25zdF9jYXN0PEpTT2JqZWN0Kj4odGhpcyktPmdl
dFByb3BlcnR5U2xvdChleGVjLCBwcm9wZXJ0eU5hbWUsIHNsb3QpKQpAQCAtNjMwLDcgKzYzMCw3
IEBAIGlubGluZSBKU1ZhbHVlIEpTT2JqZWN0OjpnZXQoRXhlY1N0YXRlKiAKIH0KIAogdGVtcGxh
dGU8SlNPYmplY3Q6OlB1dE1vZGUgbW9kZT4KLWlubGluZSBib29sIEpTT2JqZWN0OjpwdXREaXJl
Y3RJbnRlcm5hbChKU0dsb2JhbERhdGEmIGdsb2JhbERhdGEsIGNvbnN0IElkZW50aWZpZXImIHBy
b3BlcnR5TmFtZSwgSlNWYWx1ZSB2YWx1ZSwgdW5zaWduZWQgYXR0cmlidXRlcywgUHV0UHJvcGVy
dHlTbG90JiBzbG90LCBKU0NlbGwqIHNwZWNpZmljRnVuY3Rpb24pCitpbmxpbmUgYm9vbCBKU09i
amVjdDo6cHV0RGlyZWN0SW50ZXJuYWwoSlNHbG9iYWxEYXRhJiBnbG9iYWxEYXRhLCBQcm9wZXJ0
eU5hbWUgcHJvcGVydHlOYW1lLCBKU1ZhbHVlIHZhbHVlLCB1bnNpZ25lZCBhdHRyaWJ1dGVzLCBQ
dXRQcm9wZXJ0eVNsb3QmIHNsb3QsIEpTQ2VsbCogc3BlY2lmaWNGdW5jdGlvbikKIHsKICAgICBB
U1NFUlQodmFsdWUpOwogICAgIEFTU0VSVCh2YWx1ZS5pc0dldHRlclNldHRlcigpID09ICEhKGF0
dHJpYnV0ZXMgJiBBY2Nlc3NvcikpOwpAQCAtNzQyLDcgKzc0Miw3IEBAIGlubGluZSBib29sIEpT
T2JqZWN0OjpwdXREaXJlY3RJbnRlcm5hbCgKICAgICByZXR1cm4gdHJ1ZTsKIH0KIAotaW5saW5l
IGJvb2wgSlNPYmplY3Q6OnB1dE93bkRhdGFQcm9wZXJ0eShKU0dsb2JhbERhdGEmIGdsb2JhbERh
dGEsIGNvbnN0IElkZW50aWZpZXImIHByb3BlcnR5TmFtZSwgSlNWYWx1ZSB2YWx1ZSwgUHV0UHJv
cGVydHlTbG90JiBzbG90KQoraW5saW5lIGJvb2wgSlNPYmplY3Q6OnB1dE93bkRhdGFQcm9wZXJ0
eShKU0dsb2JhbERhdGEmIGdsb2JhbERhdGEsIFByb3BlcnR5TmFtZSBwcm9wZXJ0eU5hbWUsIEpT
VmFsdWUgdmFsdWUsIFB1dFByb3BlcnR5U2xvdCYgc2xvdCkKIHsKICAgICBBU1NFUlQodmFsdWUp
OwogICAgIEFTU0VSVCghSGVhcDo6aGVhcCh2YWx1ZSkgfHwgSGVhcDo6aGVhcCh2YWx1ZSkgPT0g
SGVhcDo6aGVhcCh0aGlzKSk7CkBAIC03NTEsMjAgKzc1MSwyMCBAQCBpbmxpbmUgYm9vbCBKU09i
amVjdDo6cHV0T3duRGF0YVByb3BlcnR5CiAgICAgcmV0dXJuIHB1dERpcmVjdEludGVybmFsPFB1
dE1vZGVQdXQ+KGdsb2JhbERhdGEsIHByb3BlcnR5TmFtZSwgdmFsdWUsIDAsIHNsb3QsIGdldEpT
RnVuY3Rpb24odmFsdWUpKTsKIH0KIAotaW5saW5lIHZvaWQgSlNPYmplY3Q6OnB1dERpcmVjdChK
U0dsb2JhbERhdGEmIGdsb2JhbERhdGEsIGNvbnN0IElkZW50aWZpZXImIHByb3BlcnR5TmFtZSwg
SlNWYWx1ZSB2YWx1ZSwgdW5zaWduZWQgYXR0cmlidXRlcykKK2lubGluZSB2b2lkIEpTT2JqZWN0
OjpwdXREaXJlY3QoSlNHbG9iYWxEYXRhJiBnbG9iYWxEYXRhLCBQcm9wZXJ0eU5hbWUgcHJvcGVy
dHlOYW1lLCBKU1ZhbHVlIHZhbHVlLCB1bnNpZ25lZCBhdHRyaWJ1dGVzKQogewogICAgIEFTU0VS
VCghdmFsdWUuaXNHZXR0ZXJTZXR0ZXIoKSAmJiAhKGF0dHJpYnV0ZXMgJiBBY2Nlc3NvcikpOwog
ICAgIFB1dFByb3BlcnR5U2xvdCBzbG90OwogICAgIHB1dERpcmVjdEludGVybmFsPFB1dE1vZGVE
ZWZpbmVPd25Qcm9wZXJ0eT4oZ2xvYmFsRGF0YSwgcHJvcGVydHlOYW1lLCB2YWx1ZSwgYXR0cmli
dXRlcywgc2xvdCwgZ2V0SlNGdW5jdGlvbih2YWx1ZSkpOwogfQogCi1pbmxpbmUgdm9pZCBKU09i
amVjdDo6cHV0RGlyZWN0KEpTR2xvYmFsRGF0YSYgZ2xvYmFsRGF0YSwgY29uc3QgSWRlbnRpZmll
ciYgcHJvcGVydHlOYW1lLCBKU1ZhbHVlIHZhbHVlLCBQdXRQcm9wZXJ0eVNsb3QmIHNsb3QpCitp
bmxpbmUgdm9pZCBKU09iamVjdDo6cHV0RGlyZWN0KEpTR2xvYmFsRGF0YSYgZ2xvYmFsRGF0YSwg
UHJvcGVydHlOYW1lIHByb3BlcnR5TmFtZSwgSlNWYWx1ZSB2YWx1ZSwgUHV0UHJvcGVydHlTbG90
JiBzbG90KQogewogICAgIEFTU0VSVCghdmFsdWUuaXNHZXR0ZXJTZXR0ZXIoKSk7CiAgICAgcHV0
RGlyZWN0SW50ZXJuYWw8UHV0TW9kZURlZmluZU93blByb3BlcnR5PihnbG9iYWxEYXRhLCBwcm9w
ZXJ0eU5hbWUsIHZhbHVlLCAwLCBzbG90LCBnZXRKU0Z1bmN0aW9uKHZhbHVlKSk7CiB9CiAKLWlu
bGluZSB2b2lkIEpTT2JqZWN0OjpwdXREaXJlY3RXaXRob3V0VHJhbnNpdGlvbihKU0dsb2JhbERh
dGEmIGdsb2JhbERhdGEsIGNvbnN0IElkZW50aWZpZXImIHByb3BlcnR5TmFtZSwgSlNWYWx1ZSB2
YWx1ZSwgdW5zaWduZWQgYXR0cmlidXRlcykKK2lubGluZSB2b2lkIEpTT2JqZWN0OjpwdXREaXJl
Y3RXaXRob3V0VHJhbnNpdGlvbihKU0dsb2JhbERhdGEmIGdsb2JhbERhdGEsIFByb3BlcnR5TmFt
ZSBwcm9wZXJ0eU5hbWUsIEpTVmFsdWUgdmFsdWUsIHVuc2lnbmVkIGF0dHJpYnV0ZXMpCiB7CiAg
ICAgQVNTRVJUKCF2YWx1ZS5pc0dldHRlclNldHRlcigpICYmICEoYXR0cmlidXRlcyAmIEFjY2Vz
c29yKSk7CiAgICAgc2l6ZV90IGN1cnJlbnRDYXBhY2l0eSA9IHN0cnVjdHVyZSgpLT5wcm9wZXJ0
eVN0b3JhZ2VDYXBhY2l0eSgpOwpAQCAtNzg2LDEzICs3ODYsMTMgQEAgaW5saW5lIEpTVmFsdWUg
SlNPYmplY3Q6OnRvUHJpbWl0aXZlKEV4ZQogICAgIHJldHVybiBtZXRob2RUYWJsZSgpLT5kZWZh
dWx0VmFsdWUodGhpcywgZXhlYywgcHJlZmVycmVkVHlwZSk7CiB9CiAKLWlubGluZSBKU1ZhbHVl
IEpTVmFsdWU6OmdldChFeGVjU3RhdGUqIGV4ZWMsIGNvbnN0IElkZW50aWZpZXImIHByb3BlcnR5
TmFtZSkgY29uc3QKK2lubGluZSBKU1ZhbHVlIEpTVmFsdWU6OmdldChFeGVjU3RhdGUqIGV4ZWMs
IFByb3BlcnR5TmFtZSBwcm9wZXJ0eU5hbWUpIGNvbnN0CiB7CiAgICAgUHJvcGVydHlTbG90IHNs
b3QoYXNWYWx1ZSgpKTsKICAgICByZXR1cm4gZ2V0KGV4ZWMsIHByb3BlcnR5TmFtZSwgc2xvdCk7
CiB9CiAKLWlubGluZSBKU1ZhbHVlIEpTVmFsdWU6OmdldChFeGVjU3RhdGUqIGV4ZWMsIGNvbnN0
IElkZW50aWZpZXImIHByb3BlcnR5TmFtZSwgUHJvcGVydHlTbG90JiBzbG90KSBjb25zdAoraW5s
aW5lIEpTVmFsdWUgSlNWYWx1ZTo6Z2V0KEV4ZWNTdGF0ZSogZXhlYywgUHJvcGVydHlOYW1lIHBy
b3BlcnR5TmFtZSwgUHJvcGVydHlTbG90JiBzbG90KSBjb25zdAogewogICAgIGlmIChVTkxJS0VM
WSghaXNDZWxsKCkpKSB7CiAgICAgICAgIEpTT2JqZWN0KiBwcm90b3R5cGUgPSBzeW50aGVzaXpl
UHJvdG90eXBlKGV4ZWMpOwpAQCAtODM2LDcgKzgzNiw3IEBAIGlubGluZSBKU1ZhbHVlIEpTVmFs
dWU6OmdldChFeGVjU3RhdGUqIGUKICAgICB9CiB9CiAKLWlubGluZSB2b2lkIEpTVmFsdWU6OnB1
dChFeGVjU3RhdGUqIGV4ZWMsIGNvbnN0IElkZW50aWZpZXImIHByb3BlcnR5TmFtZSwgSlNWYWx1
ZSB2YWx1ZSwgUHV0UHJvcGVydHlTbG90JiBzbG90KQoraW5saW5lIHZvaWQgSlNWYWx1ZTo6cHV0
KEV4ZWNTdGF0ZSogZXhlYywgUHJvcGVydHlOYW1lIHByb3BlcnR5TmFtZSwgSlNWYWx1ZSB2YWx1
ZSwgUHV0UHJvcGVydHlTbG90JiBzbG90KQogewogICAgIGlmIChVTkxJS0VMWSghaXNDZWxsKCkp
KSB7CiAgICAgICAgIHB1dFRvUHJpbWl0aXZlKGV4ZWMsIHByb3BlcnR5TmFtZSwgdmFsdWUsIHNs
b3QpOwpJbmRleDogU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvSlNTdGF0aWNTY29wZU9i
amVjdC5jcHAKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvSlNT
dGF0aWNTY29wZU9iamVjdC5jcHAJKHJldmlzaW9uIDExNjY2NykKKysrIFNvdXJjZS9KYXZhU2Ny
aXB0Q29yZS9ydW50aW1lL0pTU3RhdGljU2NvcGVPYmplY3QuY3BwCSh3b3JraW5nIGNvcHkpCkBA
IC01NCw3ICs1NCw3IEBAIEpTT2JqZWN0KiBKU1N0YXRpY1Njb3BlT2JqZWN0Ojp0b1RoaXNPYmoK
ICAgICByZXR1cm4gZXhlYy0+Z2xvYmFsVGhpc1ZhbHVlKCk7CiB9CiAKLXZvaWQgSlNTdGF0aWNT
Y29wZU9iamVjdDo6cHV0KEpTQ2VsbCogY2VsbCwgRXhlY1N0YXRlKiBleGVjLCBjb25zdCBJZGVu
dGlmaWVyJiBwcm9wZXJ0eU5hbWUsIEpTVmFsdWUgdmFsdWUsIFB1dFByb3BlcnR5U2xvdCYgc2xv
dCkKK3ZvaWQgSlNTdGF0aWNTY29wZU9iamVjdDo6cHV0KEpTQ2VsbCogY2VsbCwgRXhlY1N0YXRl
KiBleGVjLCBQcm9wZXJ0eU5hbWUgcHJvcGVydHlOYW1lLCBKU1ZhbHVlIHZhbHVlLCBQdXRQcm9w
ZXJ0eVNsb3QmIHNsb3QpCiB7CiAgICAgSlNTdGF0aWNTY29wZU9iamVjdCogdGhpc09iamVjdCA9
IGpzQ2FzdDxKU1N0YXRpY1Njb3BlT2JqZWN0Kj4oY2VsbCk7CiAgICAgaWYgKHNsb3QuaXNTdHJp
Y3RNb2RlKCkpIHsKQEAgLTc4LDcgKzc4LDcgQEAgdm9pZCBKU1N0YXRpY1Njb3BlT2JqZWN0Ojpw
dXQoSlNDZWxsKiBjZQogICAgIEFTU0VSVF9OT1RfUkVBQ0hFRCgpOwogfQogCi12b2lkIEpTU3Rh
dGljU2NvcGVPYmplY3Q6OnB1dERpcmVjdFZpcnR1YWwoSlNPYmplY3QqIG9iamVjdCwgRXhlY1N0
YXRlKiBleGVjLCBjb25zdCBJZGVudGlmaWVyJiBwcm9wZXJ0eU5hbWUsIEpTVmFsdWUgdmFsdWUs
IHVuc2lnbmVkIGF0dHJpYnV0ZXMpCit2b2lkIEpTU3RhdGljU2NvcGVPYmplY3Q6OnB1dERpcmVj
dFZpcnR1YWwoSlNPYmplY3QqIG9iamVjdCwgRXhlY1N0YXRlKiBleGVjLCBQcm9wZXJ0eU5hbWUg
cHJvcGVydHlOYW1lLCBKU1ZhbHVlIHZhbHVlLCB1bnNpZ25lZCBhdHRyaWJ1dGVzKQogewogICAg
IEpTU3RhdGljU2NvcGVPYmplY3QqIHRoaXNPYmplY3QgPSBqc0Nhc3Q8SlNTdGF0aWNTY29wZU9i
amVjdCo+KG9iamVjdCk7CiAgICAgaWYgKHRoaXNPYmplY3QtPnN5bWJvbFRhYmxlUHV0V2l0aEF0
dHJpYnV0ZXMoZXhlYy0+Z2xvYmFsRGF0YSgpLCBwcm9wZXJ0eU5hbWUsIHZhbHVlLCBhdHRyaWJ1
dGVzKSkKQEAgLTg3LDcgKzg3LDcgQEAgdm9pZCBKU1N0YXRpY1Njb3BlT2JqZWN0OjpwdXREaXJl
Y3RWaXJ0dQogICAgIEFTU0VSVF9OT1RfUkVBQ0hFRCgpOwogfQogCi1ib29sIEpTU3RhdGljU2Nv
cGVPYmplY3Q6OmdldE93blByb3BlcnR5U2xvdChKU0NlbGwqIGNlbGwsIEV4ZWNTdGF0ZSosIGNv
bnN0IElkZW50aWZpZXImIHByb3BlcnR5TmFtZSwgUHJvcGVydHlTbG90JiBzbG90KQorYm9vbCBK
U1N0YXRpY1Njb3BlT2JqZWN0OjpnZXRPd25Qcm9wZXJ0eVNsb3QoSlNDZWxsKiBjZWxsLCBFeGVj
U3RhdGUqLCBQcm9wZXJ0eU5hbWUgcHJvcGVydHlOYW1lLCBQcm9wZXJ0eVNsb3QmIHNsb3QpCiB7
CiAgICAgcmV0dXJuIGpzQ2FzdDxKU1N0YXRpY1Njb3BlT2JqZWN0Kj4oY2VsbCktPnN5bWJvbFRh
YmxlR2V0KHByb3BlcnR5TmFtZSwgc2xvdCk7CiB9CkluZGV4OiBTb3VyY2UvSmF2YVNjcmlwdENv
cmUvcnVudGltZS9KU1N0YXRpY1Njb3BlT2JqZWN0LmgKPT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL0ph
dmFTY3JpcHRDb3JlL3J1bnRpbWUvSlNTdGF0aWNTY29wZU9iamVjdC5oCShyZXZpc2lvbiAxMTY2
NjcpCisrKyBTb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9KU1N0YXRpY1Njb3BlT2JqZWN0
LmgJKHdvcmtpbmcgY29weSkKQEAgLTQ0LDEwICs0NCwxMCBAQCBuYW1lc3BhY2UgSlNDewogICAg
ICAgICBzdGF0aWMgdm9pZCB2aXNpdENoaWxkcmVuKEpTQ2VsbCosIFNsb3RWaXNpdG9yJik7CiAg
ICAgICAgIGJvb2wgaXNEeW5hbWljU2NvcGUoYm9vbCYgcmVxdWlyZXNEeW5hbWljQ2hlY2tzKSBj
b25zdDsKICAgICAgICAgc3RhdGljIEpTT2JqZWN0KiB0b1RoaXNPYmplY3QoSlNDZWxsKiwgRXhl
Y1N0YXRlKik7Ci0gICAgICAgIHN0YXRpYyBib29sIGdldE93blByb3BlcnR5U2xvdChKU0NlbGwq
LCBFeGVjU3RhdGUqLCBjb25zdCBJZGVudGlmaWVyJiwgUHJvcGVydHlTbG90Jik7Ci0gICAgICAg
IHN0YXRpYyB2b2lkIHB1dChKU0NlbGwqLCBFeGVjU3RhdGUqLCBjb25zdCBJZGVudGlmaWVyJiwg
SlNWYWx1ZSwgUHV0UHJvcGVydHlTbG90Jik7CisgICAgICAgIHN0YXRpYyBib29sIGdldE93blBy
b3BlcnR5U2xvdChKU0NlbGwqLCBFeGVjU3RhdGUqLCBQcm9wZXJ0eU5hbWUsIFByb3BlcnR5U2xv
dCYpOworICAgICAgICBzdGF0aWMgdm9pZCBwdXQoSlNDZWxsKiwgRXhlY1N0YXRlKiwgUHJvcGVy
dHlOYW1lLCBKU1ZhbHVlLCBQdXRQcm9wZXJ0eVNsb3QmKTsKIAotICAgICAgICBzdGF0aWMgdm9p
ZCBwdXREaXJlY3RWaXJ0dWFsKEpTT2JqZWN0KiwgRXhlY1N0YXRlKiwgY29uc3QgSWRlbnRpZmll
ciYsIEpTVmFsdWUsIHVuc2lnbmVkIGF0dHJpYnV0ZXMpOworICAgICAgICBzdGF0aWMgdm9pZCBw
dXREaXJlY3RWaXJ0dWFsKEpTT2JqZWN0KiwgRXhlY1N0YXRlKiwgUHJvcGVydHlOYW1lLCBKU1Zh
bHVlLCB1bnNpZ25lZCBhdHRyaWJ1dGVzKTsKIAogICAgICAgICBzdGF0aWMgU3RydWN0dXJlKiBj
cmVhdGVTdHJ1Y3R1cmUoSlNHbG9iYWxEYXRhJiBnbG9iYWxEYXRhLCBKU0dsb2JhbE9iamVjdCog
Z2xvYmFsT2JqZWN0LCBKU1ZhbHVlIHByb3RvKSB7IHJldHVybiBTdHJ1Y3R1cmU6OmNyZWF0ZShn
bG9iYWxEYXRhLCBnbG9iYWxPYmplY3QsIHByb3RvLCBUeXBlSW5mbyhTdGF0aWNTY29wZU9iamVj
dFR5cGUsIFN0cnVjdHVyZUZsYWdzKSwgJnNfaW5mbyk7IH0KIApJbmRleDogU291cmNlL0phdmFT
Y3JpcHRDb3JlL3J1bnRpbWUvSlNTdHJpbmcuY3BwCj09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9KYXZh
U2NyaXB0Q29yZS9ydW50aW1lL0pTU3RyaW5nLmNwcAkocmV2aXNpb24gMTE2NjY3KQorKysgU291
cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvSlNTdHJpbmcuY3BwCSh3b3JraW5nIGNvcHkpCkBA
IC0yNTcsNyArMjU3LDcgQEAgSlNPYmplY3QqIEpTU3RyaW5nOjp0b1RoaXNPYmplY3QoSlNDZWxs
KgogICAgIHJldHVybiBTdHJpbmdPYmplY3Q6OmNyZWF0ZShleGVjLCBleGVjLT5sZXhpY2FsR2xv
YmFsT2JqZWN0KCksIGpzQ2FzdDxKU1N0cmluZyo+KGNlbGwpKTsKIH0KIAotYm9vbCBKU1N0cmlu
Zzo6Z2V0T3duUHJvcGVydHlTbG90KEpTQ2VsbCogY2VsbCwgRXhlY1N0YXRlKiBleGVjLCBjb25z
dCBJZGVudGlmaWVyJiBwcm9wZXJ0eU5hbWUsIFByb3BlcnR5U2xvdCYgc2xvdCkKK2Jvb2wgSlNT
dHJpbmc6OmdldE93blByb3BlcnR5U2xvdChKU0NlbGwqIGNlbGwsIEV4ZWNTdGF0ZSogZXhlYywg
UHJvcGVydHlOYW1lIHByb3BlcnR5TmFtZSwgUHJvcGVydHlTbG90JiBzbG90KQogewogICAgIEpT
U3RyaW5nKiB0aGlzT2JqZWN0ID0ganNDYXN0PEpTU3RyaW5nKj4oY2VsbCk7CiAgICAgLy8gVGhl
IHNlbWFudGljcyBoZXJlIGFyZSByZWFsbHkgZ2V0UHJvcGVydHlTbG90LCBub3QgZ2V0T3duUHJv
cGVydHlTbG90LgpAQCAtMjc1LDE2ICsyNzUsMTYgQEAgYm9vbCBKU1N0cmluZzo6Z2V0T3duUHJv
cGVydHlTbG90KEpTQ2VsbAogICAgIHJldHVybiB0cnVlOwogfQogCi1ib29sIEpTU3RyaW5nOjpn
ZXRTdHJpbmdQcm9wZXJ0eURlc2NyaXB0b3IoRXhlY1N0YXRlKiBleGVjLCBjb25zdCBJZGVudGlm
aWVyJiBwcm9wZXJ0eU5hbWUsIFByb3BlcnR5RGVzY3JpcHRvciYgZGVzY3JpcHRvcikKK2Jvb2wg
SlNTdHJpbmc6OmdldFN0cmluZ1Byb3BlcnR5RGVzY3JpcHRvcihFeGVjU3RhdGUqIGV4ZWMsIFBy
b3BlcnR5TmFtZSBwcm9wZXJ0eU5hbWUsIFByb3BlcnR5RGVzY3JpcHRvciYgZGVzY3JpcHRvcikK
IHsKICAgICBpZiAocHJvcGVydHlOYW1lID09IGV4ZWMtPnByb3BlcnR5TmFtZXMoKS5sZW5ndGgp
IHsKICAgICAgICAgZGVzY3JpcHRvci5zZXREZXNjcmlwdG9yKGpzTnVtYmVyKG1fbGVuZ3RoKSwg
RG9udEVudW0gfCBEb250RGVsZXRlIHwgUmVhZE9ubHkpOwogICAgICAgICByZXR1cm4gdHJ1ZTsK
ICAgICB9CiAgICAgCi0gICAgYm9vbCBpc1N0cmljdFVJbnQzMjsKLSAgICB1bnNpZ25lZCBpID0g
cHJvcGVydHlOYW1lLnRvVUludDMyKGlzU3RyaWN0VUludDMyKTsKLSAgICBpZiAoaXNTdHJpY3RV
SW50MzIgJiYgaSA8IG1fbGVuZ3RoKSB7CisgICAgdW5zaWduZWQgaSA9IHByb3BlcnR5TmFtZS5h
c0luZGV4KCk7CisgICAgaWYgKGkgPCBtX2xlbmd0aCkgeworICAgICAgICBBU1NFUlQoaSAhPSBQ
cm9wZXJ0eU5hbWU6Ok5vdEFuSW5kZXgpOyAvLyBObyBuZWVkIGZvciBhbiBleHBsaWNpdCBjaGVj
aywgdGhlIGFib3ZlIHRlc3Qgd291bGQgYWx3YXlzIGZhaWwhCiAgICAgICAgIGRlc2NyaXB0b3Iu
c2V0RGVzY3JpcHRvcihnZXRJbmRleChleGVjLCBpKSwgRG9udERlbGV0ZSB8IFJlYWRPbmx5KTsK
ICAgICAgICAgcmV0dXJuIHRydWU7CiAgICAgfQpJbmRleDogU291cmNlL0phdmFTY3JpcHRDb3Jl
L3J1bnRpbWUvSlNTdHJpbmcuaAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvSmF2YVNjcmlwdENvcmUv
cnVudGltZS9KU1N0cmluZy5oCShyZXZpc2lvbiAxMTY2NjcpCisrKyBTb3VyY2UvSmF2YVNjcmlw
dENvcmUvcnVudGltZS9KU1N0cmluZy5oCSh3b3JraW5nIGNvcHkpCkBAIC0xNDMsOSArMTQzLDkg
QEAgbmFtZXNwYWNlIEpTQyB7CiAgICAgICAgIEpTT2JqZWN0KiB0b09iamVjdChFeGVjU3RhdGUq
LCBKU0dsb2JhbE9iamVjdCopIGNvbnN0OwogICAgICAgICBkb3VibGUgdG9OdW1iZXIoRXhlY1N0
YXRlKikgY29uc3Q7CiAgICAgICAgIAotICAgICAgICBib29sIGdldFN0cmluZ1Byb3BlcnR5U2xv
dChFeGVjU3RhdGUqLCBjb25zdCBJZGVudGlmaWVyJiBwcm9wZXJ0eU5hbWUsIFByb3BlcnR5U2xv
dCYpOworICAgICAgICBib29sIGdldFN0cmluZ1Byb3BlcnR5U2xvdChFeGVjU3RhdGUqLCBQcm9w
ZXJ0eU5hbWUgcHJvcGVydHlOYW1lLCBQcm9wZXJ0eVNsb3QmKTsKICAgICAgICAgYm9vbCBnZXRT
dHJpbmdQcm9wZXJ0eVNsb3QoRXhlY1N0YXRlKiwgdW5zaWduZWQgcHJvcGVydHlOYW1lLCBQcm9w
ZXJ0eVNsb3QmKTsKLSAgICAgICAgYm9vbCBnZXRTdHJpbmdQcm9wZXJ0eURlc2NyaXB0b3IoRXhl
Y1N0YXRlKiwgY29uc3QgSWRlbnRpZmllciYgcHJvcGVydHlOYW1lLCBQcm9wZXJ0eURlc2NyaXB0
b3ImKTsKKyAgICAgICAgYm9vbCBnZXRTdHJpbmdQcm9wZXJ0eURlc2NyaXB0b3IoRXhlY1N0YXRl
KiwgUHJvcGVydHlOYW1lIHByb3BlcnR5TmFtZSwgUHJvcGVydHlEZXNjcmlwdG9yJik7CiAKICAg
ICAgICAgYm9vbCBjYW5HZXRJbmRleCh1bnNpZ25lZCBpKSB7IHJldHVybiBpIDwgbV9sZW5ndGg7
IH0KICAgICAgICAgSlNTdHJpbmcqIGdldEluZGV4KEV4ZWNTdGF0ZSosIHVuc2lnbmVkKTsKQEAg
LTE4MSw3ICsxODEsNyBAQCBuYW1lc3BhY2UgSlNDIHsKICAgICAgICAgc3RhdGljIEpTT2JqZWN0
KiB0b1RoaXNPYmplY3QoSlNDZWxsKiwgRXhlY1N0YXRlKik7CiAKICAgICAgICAgLy8gQWN0dWFs
bHkgZ2V0UHJvcGVydHlTbG90LCBub3QgZ2V0T3duUHJvcGVydHlTbG90IChzZWUgSlNDZWxsKS4K
LSAgICAgICAgc3RhdGljIGJvb2wgZ2V0T3duUHJvcGVydHlTbG90KEpTQ2VsbCosIEV4ZWNTdGF0
ZSosIGNvbnN0IElkZW50aWZpZXImIHByb3BlcnR5TmFtZSwgUHJvcGVydHlTbG90Jik7CisgICAg
ICAgIHN0YXRpYyBib29sIGdldE93blByb3BlcnR5U2xvdChKU0NlbGwqLCBFeGVjU3RhdGUqLCBQ
cm9wZXJ0eU5hbWUgcHJvcGVydHlOYW1lLCBQcm9wZXJ0eVNsb3QmKTsKICAgICAgICAgc3RhdGlj
IGJvb2wgZ2V0T3duUHJvcGVydHlTbG90QnlJbmRleChKU0NlbGwqLCBFeGVjU3RhdGUqLCB1bnNp
Z25lZCBwcm9wZXJ0eU5hbWUsIFByb3BlcnR5U2xvdCYpOwogCiAgICAgICAgIFVTdHJpbmcmIHN0
cmluZygpIHsgQVNTRVJUKCFpc1JvcGUoKSk7IHJldHVybiBtX3ZhbHVlOyB9CkBAIC00NDksMTYg
KzQ0OSwxNiBAQCBuYW1lc3BhY2UgSlNDIHsKICAgICBpbmxpbmUgSlNTdHJpbmcqIGpzTm9udHJp
dmlhbFN0cmluZyhFeGVjU3RhdGUqIGV4ZWMsIGNvbnN0IGNoYXIqIHMpIHsgcmV0dXJuIGpzTm9u
dHJpdmlhbFN0cmluZygmZXhlYy0+Z2xvYmFsRGF0YSgpLCBzKTsgfQogICAgIGlubGluZSBKU1N0
cmluZyoganNPd25lZFN0cmluZyhFeGVjU3RhdGUqIGV4ZWMsIGNvbnN0IFVTdHJpbmcmIHMpIHsg
cmV0dXJuIGpzT3duZWRTdHJpbmcoJmV4ZWMtPmdsb2JhbERhdGEoKSwgcyk7IH0gCiAKLSAgICBB
TFdBWVNfSU5MSU5FIGJvb2wgSlNTdHJpbmc6OmdldFN0cmluZ1Byb3BlcnR5U2xvdChFeGVjU3Rh
dGUqIGV4ZWMsIGNvbnN0IElkZW50aWZpZXImIHByb3BlcnR5TmFtZSwgUHJvcGVydHlTbG90JiBz
bG90KQorICAgIEFMV0FZU19JTkxJTkUgYm9vbCBKU1N0cmluZzo6Z2V0U3RyaW5nUHJvcGVydHlT
bG90KEV4ZWNTdGF0ZSogZXhlYywgUHJvcGVydHlOYW1lIHByb3BlcnR5TmFtZSwgUHJvcGVydHlT
bG90JiBzbG90KQogICAgIHsKICAgICAgICAgaWYgKHByb3BlcnR5TmFtZSA9PSBleGVjLT5wcm9w
ZXJ0eU5hbWVzKCkubGVuZ3RoKSB7CiAgICAgICAgICAgICBzbG90LnNldFZhbHVlKGpzTnVtYmVy
KG1fbGVuZ3RoKSk7CiAgICAgICAgICAgICByZXR1cm4gdHJ1ZTsKICAgICAgICAgfQogCi0gICAg
ICAgIGJvb2wgaXNTdHJpY3RVSW50MzI7Ci0gICAgICAgIHVuc2lnbmVkIGkgPSBwcm9wZXJ0eU5h
bWUudG9VSW50MzIoaXNTdHJpY3RVSW50MzIpOwotICAgICAgICBpZiAoaXNTdHJpY3RVSW50MzIg
JiYgaSA8IG1fbGVuZ3RoKSB7CisgICAgICAgIHVuc2lnbmVkIGkgPSBwcm9wZXJ0eU5hbWUuYXNJ
bmRleCgpOworICAgICAgICBpZiAoaSA8IG1fbGVuZ3RoKSB7CisgICAgICAgICAgICBBU1NFUlQo
aSAhPSBQcm9wZXJ0eU5hbWU6Ok5vdEFuSW5kZXgpOyAvLyBObyBuZWVkIGZvciBhbiBleHBsaWNp
dCBjaGVjaywgdGhlIGFib3ZlIHRlc3Qgd291bGQgYWx3YXlzIGZhaWwhCiAgICAgICAgICAgICBz
bG90LnNldFZhbHVlKGdldEluZGV4KGV4ZWMsIGkpKTsKICAgICAgICAgICAgIHJldHVybiB0cnVl
OwogICAgICAgICB9CkluZGV4OiBTb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9KU1ZhbHVl
LmNwcAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9KU1ZhbHVl
LmNwcAkocmV2aXNpb24gMTE2NjY3KQorKysgU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUv
SlNWYWx1ZS5jcHAJKHdvcmtpbmcgY29weSkKQEAgLTEwOSw3ICsxMDksNyBAQCBKU09iamVjdCog
SlNWYWx1ZTo6c3ludGhlc2l6ZVByb3RvdHlwZShFCiB9CiAKIC8vIEVDTUEgOC43LjIKLXZvaWQg
SlNWYWx1ZTo6cHV0VG9QcmltaXRpdmUoRXhlY1N0YXRlKiBleGVjLCBjb25zdCBJZGVudGlmaWVy
JiBwcm9wZXJ0eU5hbWUsIEpTVmFsdWUgdmFsdWUsIFB1dFByb3BlcnR5U2xvdCYgc2xvdCkKK3Zv
aWQgSlNWYWx1ZTo6cHV0VG9QcmltaXRpdmUoRXhlY1N0YXRlKiBleGVjLCBQcm9wZXJ0eU5hbWUg
cHJvcGVydHlOYW1lLCBKU1ZhbHVlIHZhbHVlLCBQdXRQcm9wZXJ0eVNsb3QmIHNsb3QpCiB7CiAg
ICAgSlNHbG9iYWxEYXRhJiBnbG9iYWxEYXRhID0gZXhlYy0+Z2xvYmFsRGF0YSgpOwogCkluZGV4
OiBTb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9KU1ZhbHVlLmgKPT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0g
U291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvSlNWYWx1ZS5oCShyZXZpc2lvbiAxMTY2Njcp
CisrKyBTb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9KU1ZhbHVlLmgJKHdvcmtpbmcgY29w
eSkKQEAgLTM2LDEyICszNiwxMiBAQAogbmFtZXNwYWNlIEpTQyB7CiAKICAgICBjbGFzcyBFeGVj
U3RhdGU7Ci0gICAgY2xhc3MgSWRlbnRpZmllcjsKICAgICBjbGFzcyBKU0NlbGw7CiAgICAgY2xh
c3MgSlNHbG9iYWxEYXRhOwogICAgIGNsYXNzIEpTR2xvYmFsT2JqZWN0OwogICAgIGNsYXNzIEpT
T2JqZWN0OwogICAgIGNsYXNzIEpTU3RyaW5nOworICAgIGNsYXNzIFByb3BlcnR5TmFtZTsKICAg
ICBjbGFzcyBQcm9wZXJ0eVNsb3Q7CiAgICAgY2xhc3MgUHV0UHJvcGVydHlTbG90OwogICAgIGNs
YXNzIFVTdHJpbmc7CkBAIC0yMTksMTIgKzIxOSwxMiBAQCBuYW1lc3BhY2UgSlNDIHsKICAgICAg
ICAgZmxvYXQgdG9GbG9hdChFeGVjU3RhdGUqIGV4ZWMpIGNvbnN0IHsgcmV0dXJuIHN0YXRpY19j
YXN0PGZsb2F0Pih0b051bWJlcihleGVjKSk7IH0KIAogICAgICAgICAvLyBPYmplY3Qgb3BlcmF0
aW9ucywgd2l0aCB0aGUgdG9PYmplY3Qgb3BlcmF0aW9uIGluY2x1ZGVkLgotICAgICAgICBKU1Zh
bHVlIGdldChFeGVjU3RhdGUqLCBjb25zdCBJZGVudGlmaWVyJiBwcm9wZXJ0eU5hbWUpIGNvbnN0
OwotICAgICAgICBKU1ZhbHVlIGdldChFeGVjU3RhdGUqLCBjb25zdCBJZGVudGlmaWVyJiBwcm9w
ZXJ0eU5hbWUsIFByb3BlcnR5U2xvdCYpIGNvbnN0OworICAgICAgICBKU1ZhbHVlIGdldChFeGVj
U3RhdGUqLCBQcm9wZXJ0eU5hbWUgcHJvcGVydHlOYW1lKSBjb25zdDsKKyAgICAgICAgSlNWYWx1
ZSBnZXQoRXhlY1N0YXRlKiwgUHJvcGVydHlOYW1lIHByb3BlcnR5TmFtZSwgUHJvcGVydHlTbG90
JikgY29uc3Q7CiAgICAgICAgIEpTVmFsdWUgZ2V0KEV4ZWNTdGF0ZSosIHVuc2lnbmVkIHByb3Bl
cnR5TmFtZSkgY29uc3Q7CiAgICAgICAgIEpTVmFsdWUgZ2V0KEV4ZWNTdGF0ZSosIHVuc2lnbmVk
IHByb3BlcnR5TmFtZSwgUHJvcGVydHlTbG90JikgY29uc3Q7Ci0gICAgICAgIHZvaWQgcHV0KEV4
ZWNTdGF0ZSosIGNvbnN0IElkZW50aWZpZXImIHByb3BlcnR5TmFtZSwgSlNWYWx1ZSwgUHV0UHJv
cGVydHlTbG90Jik7Ci0gICAgICAgIHZvaWQgcHV0VG9QcmltaXRpdmUoRXhlY1N0YXRlKiwgY29u
c3QgSWRlbnRpZmllciYgcHJvcGVydHlOYW1lLCBKU1ZhbHVlLCBQdXRQcm9wZXJ0eVNsb3QmKTsK
KyAgICAgICAgdm9pZCBwdXQoRXhlY1N0YXRlKiwgUHJvcGVydHlOYW1lIHByb3BlcnR5TmFtZSwg
SlNWYWx1ZSwgUHV0UHJvcGVydHlTbG90Jik7CisgICAgICAgIHZvaWQgcHV0VG9QcmltaXRpdmUo
RXhlY1N0YXRlKiwgUHJvcGVydHlOYW1lIHByb3BlcnR5TmFtZSwgSlNWYWx1ZSwgUHV0UHJvcGVy
dHlTbG90Jik7CiAgICAgICAgIHZvaWQgcHV0QnlJbmRleChFeGVjU3RhdGUqLCB1bnNpZ25lZCBw
cm9wZXJ0eU5hbWUsIEpTVmFsdWUsIGJvb2wgc2hvdWxkVGhyb3cpOwogCiAgICAgICAgIEpTT2Jq
ZWN0KiB0b1RoaXNPYmplY3QoRXhlY1N0YXRlKikgY29uc3Q7CkluZGV4OiBTb3VyY2UvSmF2YVNj
cmlwdENvcmUvcnVudGltZS9KU1ZhcmlhYmxlT2JqZWN0LmNwcAo9PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3Vy
Y2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9KU1ZhcmlhYmxlT2JqZWN0LmNwcAkocmV2aXNpb24g
MTE2NjY3KQorKysgU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvSlNWYXJpYWJsZU9iamVj
dC5jcHAJKHdvcmtpbmcgY29weSkKQEAgLTQyLDcgKzQyLDcgQEAgdm9pZCBKU1ZhcmlhYmxlT2Jq
ZWN0OjpkZXN0cm95KEpTQ2VsbCogYwogICAgIGpzQ2FzdDxKU1ZhcmlhYmxlT2JqZWN0Kj4oY2Vs
bCktPkpTVmFyaWFibGVPYmplY3Q6On5KU1ZhcmlhYmxlT2JqZWN0KCk7CiB9CiAKLWJvb2wgSlNW
YXJpYWJsZU9iamVjdDo6ZGVsZXRlUHJvcGVydHkoSlNDZWxsKiBjZWxsLCBFeGVjU3RhdGUqIGV4
ZWMsIGNvbnN0IElkZW50aWZpZXImIHByb3BlcnR5TmFtZSkKK2Jvb2wgSlNWYXJpYWJsZU9iamVj
dDo6ZGVsZXRlUHJvcGVydHkoSlNDZWxsKiBjZWxsLCBFeGVjU3RhdGUqIGV4ZWMsIFByb3BlcnR5
TmFtZSBwcm9wZXJ0eU5hbWUpCiB7CiAgICAgSlNWYXJpYWJsZU9iamVjdCogdGhpc09iamVjdCA9
IGpzQ2FzdDxKU1ZhcmlhYmxlT2JqZWN0Kj4oY2VsbCk7CiAgICAgaWYgKHRoaXNPYmplY3QtPnN5
bWJvbFRhYmxlKCkuY29udGFpbnMocHJvcGVydHlOYW1lLmltcGwoKSkpCkBAIC02Myw3ICs2Myw3
IEBAIHZvaWQgSlNWYXJpYWJsZU9iamVjdDo6Z2V0T3duUHJvcGVydHlOYW0KICAgICBKU09iamVj
dDo6Z2V0T3duUHJvcGVydHlOYW1lcyh0aGlzT2JqZWN0LCBleGVjLCBwcm9wZXJ0eU5hbWVzLCBt
b2RlKTsKIH0KIAotYm9vbCBKU1ZhcmlhYmxlT2JqZWN0OjpzeW1ib2xUYWJsZUdldChjb25zdCBJ
ZGVudGlmaWVyJiBwcm9wZXJ0eU5hbWUsIFByb3BlcnR5RGVzY3JpcHRvciYgZGVzY3JpcHRvcikK
K2Jvb2wgSlNWYXJpYWJsZU9iamVjdDo6c3ltYm9sVGFibGVHZXQoUHJvcGVydHlOYW1lIHByb3Bl
cnR5TmFtZSwgUHJvcGVydHlEZXNjcmlwdG9yJiBkZXNjcmlwdG9yKQogewogICAgIFN5bWJvbFRh
YmxlRW50cnkgZW50cnkgPSBzeW1ib2xUYWJsZSgpLmlubGluZUdldChwcm9wZXJ0eU5hbWUuaW1w
bCgpKTsKICAgICBpZiAoIWVudHJ5LmlzTnVsbCgpKSB7CkBAIC03Myw3ICs3Myw3IEBAIGJvb2wg
SlNWYXJpYWJsZU9iamVjdDo6c3ltYm9sVGFibGVHZXQoY28KICAgICByZXR1cm4gZmFsc2U7CiB9
CiAKLXZvaWQgSlNWYXJpYWJsZU9iamVjdDo6cHV0RGlyZWN0VmlydHVhbChKU09iamVjdCosIEV4
ZWNTdGF0ZSosIGNvbnN0IElkZW50aWZpZXImLCBKU1ZhbHVlLCB1bnNpZ25lZCkKK3ZvaWQgSlNW
YXJpYWJsZU9iamVjdDo6cHV0RGlyZWN0VmlydHVhbChKU09iamVjdCosIEV4ZWNTdGF0ZSosIFBy
b3BlcnR5TmFtZSwgSlNWYWx1ZSwgdW5zaWduZWQpCiB7CiAgICAgQVNTRVJUX05PVF9SRUFDSEVE
KCk7CiB9CkluZGV4OiBTb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9KU1ZhcmlhYmxlT2Jq
ZWN0LmgKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PQotLS0gU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvSlNWYXJp
YWJsZU9iamVjdC5oCShyZXZpc2lvbiAxMTY2NjcpCisrKyBTb3VyY2UvSmF2YVNjcmlwdENvcmUv
cnVudGltZS9KU1ZhcmlhYmxlT2JqZWN0LmgJKHdvcmtpbmcgY29weSkKQEAgLTUyLDkgKzUyLDkg
QEAgbmFtZXNwYWNlIEpTQyB7CiAKICAgICAgICAgSlNfRVhQT1JUX1BSSVZBVEUgc3RhdGljIHZv
aWQgZGVzdHJveShKU0NlbGwqKTsKIAotICAgICAgICBzdGF0aWMgTk9fUkVUVVJOX0RVRV9UT19B
U1NFUlQgdm9pZCBwdXREaXJlY3RWaXJ0dWFsKEpTT2JqZWN0KiwgRXhlY1N0YXRlKiwgY29uc3Qg
SWRlbnRpZmllciYsIEpTVmFsdWUsIHVuc2lnbmVkIGF0dHJpYnV0ZXMpOworICAgICAgICBzdGF0
aWMgTk9fUkVUVVJOX0RVRV9UT19BU1NFUlQgdm9pZCBwdXREaXJlY3RWaXJ0dWFsKEpTT2JqZWN0
KiwgRXhlY1N0YXRlKiwgUHJvcGVydHlOYW1lLCBKU1ZhbHVlLCB1bnNpZ25lZCBhdHRyaWJ1dGVz
KTsKIAotICAgICAgICBKU19FWFBPUlRfUFJJVkFURSBzdGF0aWMgYm9vbCBkZWxldGVQcm9wZXJ0
eShKU0NlbGwqLCBFeGVjU3RhdGUqLCBjb25zdCBJZGVudGlmaWVyJik7CisgICAgICAgIEpTX0VY
UE9SVF9QUklWQVRFIHN0YXRpYyBib29sIGRlbGV0ZVByb3BlcnR5KEpTQ2VsbCosIEV4ZWNTdGF0
ZSosIFByb3BlcnR5TmFtZSk7CiAgICAgICAgIEpTX0VYUE9SVF9QUklWQVRFIHN0YXRpYyB2b2lk
IGdldE93blByb3BlcnR5TmFtZXMoSlNPYmplY3QqLCBFeGVjU3RhdGUqLCBQcm9wZXJ0eU5hbWVB
cnJheSYsIEVudW1lcmF0aW9uTW9kZSk7CiAgICAgICAgIAogICAgICAgICBib29sIGlzRHluYW1p
Y1Njb3BlKGJvb2wmIHJlcXVpcmVzRHluYW1pY0NoZWNrcykgY29uc3Q7CkBAIC04OSwxOCArODks
MTggQEAgbmFtZXNwYWNlIEpTQyB7CiAgICAgICAgIFBhc3NPd25BcnJheVB0cjxXcml0ZUJhcnJp
ZXI8VW5rbm93bj4gPiBjb3B5UmVnaXN0ZXJBcnJheShKU0dsb2JhbERhdGEmLCBXcml0ZUJhcnJp
ZXI8VW5rbm93bj4qIHNyYywgc2l6ZV90IGNvdW50LCBzaXplX3QgY2FsbGZyYW1lU3RhcnRzKTsK
ICAgICAgICAgdm9pZCBzZXRSZWdpc3RlcnMoV3JpdGVCYXJyaWVyPFVua25vd24+KiByZWdpc3Rl
cnMsIFBhc3NPd25BcnJheVB0cjxXcml0ZUJhcnJpZXI8VW5rbm93bj4gPiByZWdpc3RlckFycmF5
KTsKIAotICAgICAgICBib29sIHN5bWJvbFRhYmxlR2V0KGNvbnN0IElkZW50aWZpZXImLCBQcm9w
ZXJ0eVNsb3QmKTsKLSAgICAgICAgSlNfRVhQT1JUX1BSSVZBVEUgYm9vbCBzeW1ib2xUYWJsZUdl
dChjb25zdCBJZGVudGlmaWVyJiwgUHJvcGVydHlEZXNjcmlwdG9yJik7Ci0gICAgICAgIGJvb2wg
c3ltYm9sVGFibGVHZXQoY29uc3QgSWRlbnRpZmllciYsIFByb3BlcnR5U2xvdCYsIGJvb2wmIHNs
b3RJc1dyaXRlYWJsZSk7Ci0gICAgICAgIGJvb2wgc3ltYm9sVGFibGVQdXQoRXhlY1N0YXRlKiwg
Y29uc3QgSWRlbnRpZmllciYsIEpTVmFsdWUsIGJvb2wgc2hvdWxkVGhyb3cpOwotICAgICAgICBi
b29sIHN5bWJvbFRhYmxlUHV0V2l0aEF0dHJpYnV0ZXMoSlNHbG9iYWxEYXRhJiwgY29uc3QgSWRl
bnRpZmllciYsIEpTVmFsdWUsIHVuc2lnbmVkIGF0dHJpYnV0ZXMpOworICAgICAgICBib29sIHN5
bWJvbFRhYmxlR2V0KFByb3BlcnR5TmFtZSwgUHJvcGVydHlTbG90Jik7CisgICAgICAgIEpTX0VY
UE9SVF9QUklWQVRFIGJvb2wgc3ltYm9sVGFibGVHZXQoUHJvcGVydHlOYW1lLCBQcm9wZXJ0eURl
c2NyaXB0b3ImKTsKKyAgICAgICAgYm9vbCBzeW1ib2xUYWJsZUdldChQcm9wZXJ0eU5hbWUsIFBy
b3BlcnR5U2xvdCYsIGJvb2wmIHNsb3RJc1dyaXRlYWJsZSk7CisgICAgICAgIGJvb2wgc3ltYm9s
VGFibGVQdXQoRXhlY1N0YXRlKiwgUHJvcGVydHlOYW1lLCBKU1ZhbHVlLCBib29sIHNob3VsZFRo
cm93KTsKKyAgICAgICAgYm9vbCBzeW1ib2xUYWJsZVB1dFdpdGhBdHRyaWJ1dGVzKEpTR2xvYmFs
RGF0YSYsIFByb3BlcnR5TmFtZSwgSlNWYWx1ZSwgdW5zaWduZWQgYXR0cmlidXRlcyk7CiAKICAg
ICAgICAgU3ltYm9sVGFibGUqIG1fc3ltYm9sVGFibGU7IC8vIE1hcHMgbmFtZSAtPiBvZmZzZXQg
ZnJvbSAiciIgaW4gcmVnaXN0ZXIgZmlsZS4KICAgICAgICAgV3JpdGVCYXJyaWVyPFVua25vd24+
KiBtX3JlZ2lzdGVyczsgLy8gInIiIGluIHRoZSByZWdpc3RlciBmaWxlLgogICAgICAgICBPd25B
cnJheVB0cjxXcml0ZUJhcnJpZXI8VW5rbm93bj4gPiBtX3JlZ2lzdGVyQXJyYXk7IC8vIEluZGVw
ZW5kZW50IGNvcHkgb2YgcmVnaXN0ZXJzLCB1c2VkIHdoZW4gYSB2YXJpYWJsZSBvYmplY3QgY29w
aWVzIGl0cyByZWdpc3RlcnMgb3V0IG9mIHRoZSByZWdpc3RlciBmaWxlLgogICAgIH07CiAKLSAg
ICBpbmxpbmUgYm9vbCBKU1ZhcmlhYmxlT2JqZWN0OjpzeW1ib2xUYWJsZUdldChjb25zdCBJZGVu
dGlmaWVyJiBwcm9wZXJ0eU5hbWUsIFByb3BlcnR5U2xvdCYgc2xvdCkKKyAgICBpbmxpbmUgYm9v
bCBKU1ZhcmlhYmxlT2JqZWN0OjpzeW1ib2xUYWJsZUdldChQcm9wZXJ0eU5hbWUgcHJvcGVydHlO
YW1lLCBQcm9wZXJ0eVNsb3QmIHNsb3QpCiAgICAgewogICAgICAgICBTeW1ib2xUYWJsZUVudHJ5
IGVudHJ5ID0gc3ltYm9sVGFibGUoKS5pbmxpbmVHZXQocHJvcGVydHlOYW1lLmltcGwoKSk7CiAg
ICAgICAgIGlmICghZW50cnkuaXNOdWxsKCkpIHsKQEAgLTExMCw3ICsxMTAsNyBAQCBuYW1lc3Bh
Y2UgSlNDIHsKICAgICAgICAgcmV0dXJuIGZhbHNlOwogICAgIH0KIAotICAgIGlubGluZSBib29s
IEpTVmFyaWFibGVPYmplY3Q6OnN5bWJvbFRhYmxlR2V0KGNvbnN0IElkZW50aWZpZXImIHByb3Bl
cnR5TmFtZSwgUHJvcGVydHlTbG90JiBzbG90LCBib29sJiBzbG90SXNXcml0ZWFibGUpCisgICAg
aW5saW5lIGJvb2wgSlNWYXJpYWJsZU9iamVjdDo6c3ltYm9sVGFibGVHZXQoUHJvcGVydHlOYW1l
IHByb3BlcnR5TmFtZSwgUHJvcGVydHlTbG90JiBzbG90LCBib29sJiBzbG90SXNXcml0ZWFibGUp
CiAgICAgewogICAgICAgICBTeW1ib2xUYWJsZUVudHJ5IGVudHJ5ID0gc3ltYm9sVGFibGUoKS5p
bmxpbmVHZXQocHJvcGVydHlOYW1lLmltcGwoKSk7CiAgICAgICAgIGlmICghZW50cnkuaXNOdWxs
KCkpIHsKQEAgLTEyMSw3ICsxMjEsNyBAQCBuYW1lc3BhY2UgSlNDIHsKICAgICAgICAgcmV0dXJu
IGZhbHNlOwogICAgIH0KIAotICAgIGlubGluZSBib29sIEpTVmFyaWFibGVPYmplY3Q6OnN5bWJv
bFRhYmxlUHV0KEV4ZWNTdGF0ZSogZXhlYywgY29uc3QgSWRlbnRpZmllciYgcHJvcGVydHlOYW1l
LCBKU1ZhbHVlIHZhbHVlLCBib29sIHNob3VsZFRocm93KQorICAgIGlubGluZSBib29sIEpTVmFy
aWFibGVPYmplY3Q6OnN5bWJvbFRhYmxlUHV0KEV4ZWNTdGF0ZSogZXhlYywgUHJvcGVydHlOYW1l
IHByb3BlcnR5TmFtZSwgSlNWYWx1ZSB2YWx1ZSwgYm9vbCBzaG91bGRUaHJvdykKICAgICB7CiAg
ICAgICAgIEpTR2xvYmFsRGF0YSYgZ2xvYmFsRGF0YSA9IGV4ZWMtPmdsb2JhbERhdGEoKTsKICAg
ICAgICAgQVNTRVJUKCFIZWFwOjpoZWFwKHZhbHVlKSB8fCBIZWFwOjpoZWFwKHZhbHVlKSA9PSBI
ZWFwOjpoZWFwKHRoaXMpKTsKQEAgLTEzOCw3ICsxMzgsNyBAQCBuYW1lc3BhY2UgSlNDIHsKICAg
ICAgICAgcmV0dXJuIHRydWU7CiAgICAgfQogCi0gICAgaW5saW5lIGJvb2wgSlNWYXJpYWJsZU9i
amVjdDo6c3ltYm9sVGFibGVQdXRXaXRoQXR0cmlidXRlcyhKU0dsb2JhbERhdGEmIGdsb2JhbERh
dGEsIGNvbnN0IElkZW50aWZpZXImIHByb3BlcnR5TmFtZSwgSlNWYWx1ZSB2YWx1ZSwgdW5zaWdu
ZWQgYXR0cmlidXRlcykKKyAgICBpbmxpbmUgYm9vbCBKU1ZhcmlhYmxlT2JqZWN0OjpzeW1ib2xU
YWJsZVB1dFdpdGhBdHRyaWJ1dGVzKEpTR2xvYmFsRGF0YSYgZ2xvYmFsRGF0YSwgUHJvcGVydHlO
YW1lIHByb3BlcnR5TmFtZSwgSlNWYWx1ZSB2YWx1ZSwgdW5zaWduZWQgYXR0cmlidXRlcykKICAg
ICB7CiAgICAgICAgIEFTU0VSVCghSGVhcDo6aGVhcCh2YWx1ZSkgfHwgSGVhcDo6aGVhcCh2YWx1
ZSkgPT0gSGVhcDo6aGVhcCh0aGlzKSk7CiAKSW5kZXg6IFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9y
dW50aW1lL0xvb2t1cC5jcHAKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL0phdmFTY3JpcHRDb3JlL3J1
bnRpbWUvTG9va3VwLmNwcAkocmV2aXNpb24gMTE2NjY3KQorKysgU291cmNlL0phdmFTY3JpcHRD
b3JlL3J1bnRpbWUvTG9va3VwLmNwcAkod29ya2luZyBjb3B5KQpAQCAtNjQsNyArNjQsNyBAQCB2
b2lkIEhhc2hUYWJsZTo6ZGVsZXRlVGFibGUoKSBjb25zdAogICAgIH0KIH0KIAotYm9vbCBzZXRV
cFN0YXRpY0Z1bmN0aW9uU2xvdChFeGVjU3RhdGUqIGV4ZWMsIGNvbnN0IEhhc2hFbnRyeSogZW50
cnksIEpTT2JqZWN0KiB0aGlzT2JqLCBjb25zdCBJZGVudGlmaWVyJiBwcm9wZXJ0eU5hbWUsIFBy
b3BlcnR5U2xvdCYgc2xvdCkKK2Jvb2wgc2V0VXBTdGF0aWNGdW5jdGlvblNsb3QoRXhlY1N0YXRl
KiBleGVjLCBjb25zdCBIYXNoRW50cnkqIGVudHJ5LCBKU09iamVjdCogdGhpc09iaiwgUHJvcGVy
dHlOYW1lIHByb3BlcnR5TmFtZSwgUHJvcGVydHlTbG90JiBzbG90KQogewogICAgIEFTU0VSVCh0
aGlzT2JqLT5nbG9iYWxPYmplY3QoKSk7CiAgICAgQVNTRVJUKGVudHJ5LT5hdHRyaWJ1dGVzKCkg
JiBGdW5jdGlvbik7CkBAIC03Niw3ICs3Niw3IEBAIGJvb2wgc2V0VXBTdGF0aWNGdW5jdGlvblNs
b3QoRXhlY1N0YXRlKiAKICAgICAgICAgaWYgKHRoaXNPYmotPnN0YXRpY0Z1bmN0aW9uc1JlaWZp
ZWQoKSkKICAgICAgICAgICAgIHJldHVybiBmYWxzZTsKICAgICAKLSAgICAgICAgSlNGdW5jdGlv
biogZnVuY3Rpb24gPSBKU0Z1bmN0aW9uOjpjcmVhdGUoZXhlYywgdGhpc09iai0+Z2xvYmFsT2Jq
ZWN0KCksIGVudHJ5LT5mdW5jdGlvbkxlbmd0aCgpLCBwcm9wZXJ0eU5hbWUsIGVudHJ5LT5mdW5j
dGlvbigpLCBlbnRyeS0+aW50cmluc2ljKCkpOworICAgICAgICBKU0Z1bmN0aW9uKiBmdW5jdGlv
biA9IEpTRnVuY3Rpb246OmNyZWF0ZShleGVjLCB0aGlzT2JqLT5nbG9iYWxPYmplY3QoKSwgZW50
cnktPmZ1bmN0aW9uTGVuZ3RoKCksIHByb3BlcnR5TmFtZS51c3RyaW5nKCksIGVudHJ5LT5mdW5j
dGlvbigpLCBlbnRyeS0+aW50cmluc2ljKCkpOwogICAgICAgICB0aGlzT2JqLT5wdXREaXJlY3Qo
ZXhlYy0+Z2xvYmFsRGF0YSgpLCBwcm9wZXJ0eU5hbWUsIGZ1bmN0aW9uLCBlbnRyeS0+YXR0cmli
dXRlcygpKTsKICAgICAgICAgbG9jYXRpb24gPSB0aGlzT2JqLT5nZXREaXJlY3RMb2NhdGlvbihl
eGVjLT5nbG9iYWxEYXRhKCksIHByb3BlcnR5TmFtZSk7CiAgICAgfQpJbmRleDogU291cmNlL0ph
dmFTY3JpcHRDb3JlL3J1bnRpbWUvTG9va3VwLmgKPT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL0phdmFT
Y3JpcHRDb3JlL3J1bnRpbWUvTG9va3VwLmgJKHJldmlzaW9uIDExNjY2NykKKysrIFNvdXJjZS9K
YXZhU2NyaXB0Q29yZS9ydW50aW1lL0xvb2t1cC5oCSh3b3JraW5nIGNvcHkpCkBAIC0xMjksMTMg
KzEyOSwxMyBAQCBuYW1lc3BhY2UgSlNDIHsKICAgICAgICAgSlNfRVhQT1JUX1BSSVZBVEUgdm9p
ZCBkZWxldGVUYWJsZSgpIGNvbnN0OwogCiAgICAgICAgIC8vIEZpbmQgYW4gZW50cnkgaW4gdGhl
IHRhYmxlLCBhbmQgcmV0dXJuIHRoZSBlbnRyeS4KLSAgICAgICAgQUxXQVlTX0lOTElORSBjb25z
dCBIYXNoRW50cnkqIGVudHJ5KEpTR2xvYmFsRGF0YSogZ2xvYmFsRGF0YSwgY29uc3QgSWRlbnRp
ZmllciYgaWRlbnRpZmllcikgY29uc3QKKyAgICAgICAgQUxXQVlTX0lOTElORSBjb25zdCBIYXNo
RW50cnkqIGVudHJ5KEpTR2xvYmFsRGF0YSogZ2xvYmFsRGF0YSwgUHJvcGVydHlOYW1lIGlkZW50
aWZpZXIpIGNvbnN0CiAgICAgICAgIHsKICAgICAgICAgICAgIGluaXRpYWxpemVJZk5lZWRlZChn
bG9iYWxEYXRhKTsKICAgICAgICAgICAgIHJldHVybiBlbnRyeShpZGVudGlmaWVyKTsKICAgICAg
ICAgfQogCi0gICAgICAgIEFMV0FZU19JTkxJTkUgY29uc3QgSGFzaEVudHJ5KiBlbnRyeShFeGVj
U3RhdGUqIGV4ZWMsIGNvbnN0IElkZW50aWZpZXImIGlkZW50aWZpZXIpIGNvbnN0CisgICAgICAg
IEFMV0FZU19JTkxJTkUgY29uc3QgSGFzaEVudHJ5KiBlbnRyeShFeGVjU3RhdGUqIGV4ZWMsIFBy
b3BlcnR5TmFtZSBpZGVudGlmaWVyKSBjb25zdAogICAgICAgICB7CiAgICAgICAgICAgICBpbml0
aWFsaXplSWZOZWVkZWQoZXhlYyk7CiAgICAgICAgICAgICByZXR1cm4gZW50cnkoaWRlbnRpZmll
cik7CkBAIC0xOTksNyArMTk5LDcgQEAgbmFtZXNwYWNlIEpTQyB7CiAgICAgICAgIH0KIAogICAg
IHByaXZhdGU6Ci0gICAgICAgIEFMV0FZU19JTkxJTkUgY29uc3QgSGFzaEVudHJ5KiBlbnRyeShj
b25zdCBJZGVudGlmaWVyJiBpZGVudGlmaWVyKSBjb25zdAorICAgICAgICBBTFdBWVNfSU5MSU5F
IGNvbnN0IEhhc2hFbnRyeSogZW50cnkoUHJvcGVydHlOYW1lIGlkZW50aWZpZXIpIGNvbnN0CiAg
ICAgICAgIHsKICAgICAgICAgICAgIEFTU0VSVCh0YWJsZSk7CiAKQEAgLTIyMSw3ICsyMjEsNyBA
QCBuYW1lc3BhY2UgSlNDIHsKICAgICAgICAgSlNfRVhQT1JUX1BSSVZBVEUgdm9pZCBjcmVhdGVU
YWJsZShKU0dsb2JhbERhdGEqKSBjb25zdDsKICAgICB9OwogCi0gICAgSlNfRVhQT1JUX1BSSVZB
VEUgYm9vbCBzZXRVcFN0YXRpY0Z1bmN0aW9uU2xvdChFeGVjU3RhdGUqLCBjb25zdCBIYXNoRW50
cnkqLCBKU09iamVjdCogdGhpc09iamVjdCwgY29uc3QgSWRlbnRpZmllciYgcHJvcGVydHlOYW1l
LCBQcm9wZXJ0eVNsb3QmKTsKKyAgICBKU19FWFBPUlRfUFJJVkFURSBib29sIHNldFVwU3RhdGlj
RnVuY3Rpb25TbG90KEV4ZWNTdGF0ZSosIGNvbnN0IEhhc2hFbnRyeSosIEpTT2JqZWN0KiB0aGlz
T2JqZWN0LCBQcm9wZXJ0eU5hbWUgcHJvcGVydHlOYW1lLCBQcm9wZXJ0eVNsb3QmKTsKIAogICAg
IC8qKgogICAgICAqIFRoaXMgbWV0aG9kIGRvZXMgaXQgYWxsIChsb29raW5nIGluIHRoZSBoYXNo
dGFibGUsIGNoZWNraW5nIGZvciBmdW5jdGlvbgpAQCAtMjMwLDcgKzIzMCw3IEBAIG5hbWVzcGFj
ZSBKU0MgewogICAgICAqIHVua25vd24gcHJvcGVydHkpLgogICAgICAqLwogICAgIHRlbXBsYXRl
IDxjbGFzcyBUaGlzSW1wLCBjbGFzcyBQYXJlbnRJbXA+Ci0gICAgaW5saW5lIGJvb2wgZ2V0U3Rh
dGljUHJvcGVydHlTbG90KEV4ZWNTdGF0ZSogZXhlYywgY29uc3QgSGFzaFRhYmxlKiB0YWJsZSwg
VGhpc0ltcCogdGhpc09iaiwgY29uc3QgSWRlbnRpZmllciYgcHJvcGVydHlOYW1lLCBQcm9wZXJ0
eVNsb3QmIHNsb3QpCisgICAgaW5saW5lIGJvb2wgZ2V0U3RhdGljUHJvcGVydHlTbG90KEV4ZWNT
dGF0ZSogZXhlYywgY29uc3QgSGFzaFRhYmxlKiB0YWJsZSwgVGhpc0ltcCogdGhpc09iaiwgUHJv
cGVydHlOYW1lIHByb3BlcnR5TmFtZSwgUHJvcGVydHlTbG90JiBzbG90KQogICAgIHsKICAgICAg
ICAgY29uc3QgSGFzaEVudHJ5KiBlbnRyeSA9IHRhYmxlLT5lbnRyeShleGVjLCBwcm9wZXJ0eU5h
bWUpOwogCkBAIC0yNDUsNyArMjQ1LDcgQEAgbmFtZXNwYWNlIEpTQyB7CiAgICAgfQogCiAgICAg
dGVtcGxhdGUgPGNsYXNzIFRoaXNJbXAsIGNsYXNzIFBhcmVudEltcD4KLSAgICBpbmxpbmUgYm9v
bCBnZXRTdGF0aWNQcm9wZXJ0eURlc2NyaXB0b3IoRXhlY1N0YXRlKiBleGVjLCBjb25zdCBIYXNo
VGFibGUqIHRhYmxlLCBUaGlzSW1wKiB0aGlzT2JqLCBjb25zdCBJZGVudGlmaWVyJiBwcm9wZXJ0
eU5hbWUsIFByb3BlcnR5RGVzY3JpcHRvciYgZGVzY3JpcHRvcikKKyAgICBpbmxpbmUgYm9vbCBn
ZXRTdGF0aWNQcm9wZXJ0eURlc2NyaXB0b3IoRXhlY1N0YXRlKiBleGVjLCBjb25zdCBIYXNoVGFi
bGUqIHRhYmxlLCBUaGlzSW1wKiB0aGlzT2JqLCBQcm9wZXJ0eU5hbWUgcHJvcGVydHlOYW1lLCBQ
cm9wZXJ0eURlc2NyaXB0b3ImIGRlc2NyaXB0b3IpCiAgICAgewogICAgICAgICBjb25zdCBIYXNo
RW50cnkqIGVudHJ5ID0gdGFibGUtPmVudHJ5KGV4ZWMsIHByb3BlcnR5TmFtZSk7CiAgICAgICAg
IApAQCAtMjcxLDcgKzI3MSw3IEBAIG5hbWVzcGFjZSBKU0MgewogICAgICAqIGEgZHVtbXkgZ2V0
VmFsdWVQcm9wZXJ0eS4KICAgICAgKi8KICAgICB0ZW1wbGF0ZSA8Y2xhc3MgUGFyZW50SW1wPgot
ICAgIGlubGluZSBib29sIGdldFN0YXRpY0Z1bmN0aW9uU2xvdChFeGVjU3RhdGUqIGV4ZWMsIGNv
bnN0IEhhc2hUYWJsZSogdGFibGUsIEpTT2JqZWN0KiB0aGlzT2JqLCBjb25zdCBJZGVudGlmaWVy
JiBwcm9wZXJ0eU5hbWUsIFByb3BlcnR5U2xvdCYgc2xvdCkKKyAgICBpbmxpbmUgYm9vbCBnZXRT
dGF0aWNGdW5jdGlvblNsb3QoRXhlY1N0YXRlKiBleGVjLCBjb25zdCBIYXNoVGFibGUqIHRhYmxl
LCBKU09iamVjdCogdGhpc09iaiwgUHJvcGVydHlOYW1lIHByb3BlcnR5TmFtZSwgUHJvcGVydHlT
bG90JiBzbG90KQogICAgIHsKICAgICAgICAgaWYgKFBhcmVudEltcDo6Z2V0T3duUHJvcGVydHlT
bG90KHRoaXNPYmosIGV4ZWMsIHByb3BlcnR5TmFtZSwgc2xvdCkpCiAgICAgICAgICAgICByZXR1
cm4gdHJ1ZTsKQEAgLTI4OSw3ICsyODksNyBAQCBuYW1lc3BhY2UgSlNDIHsKICAgICAgKiBhIGR1
bW15IGdldFZhbHVlUHJvcGVydHkuCiAgICAgICovCiAgICAgdGVtcGxhdGUgPGNsYXNzIFBhcmVu
dEltcD4KLSAgICBpbmxpbmUgYm9vbCBnZXRTdGF0aWNGdW5jdGlvbkRlc2NyaXB0b3IoRXhlY1N0
YXRlKiBleGVjLCBjb25zdCBIYXNoVGFibGUqIHRhYmxlLCBKU09iamVjdCogdGhpc09iaiwgY29u
c3QgSWRlbnRpZmllciYgcHJvcGVydHlOYW1lLCBQcm9wZXJ0eURlc2NyaXB0b3ImIGRlc2NyaXB0
b3IpCisgICAgaW5saW5lIGJvb2wgZ2V0U3RhdGljRnVuY3Rpb25EZXNjcmlwdG9yKEV4ZWNTdGF0
ZSogZXhlYywgY29uc3QgSGFzaFRhYmxlKiB0YWJsZSwgSlNPYmplY3QqIHRoaXNPYmosIFByb3Bl
cnR5TmFtZSBwcm9wZXJ0eU5hbWUsIFByb3BlcnR5RGVzY3JpcHRvciYgZGVzY3JpcHRvcikKICAg
ICB7CiAgICAgICAgIGlmIChQYXJlbnRJbXA6OmdldE93blByb3BlcnR5RGVzY3JpcHRvcihzdGF0
aWNfY2FzdDxQYXJlbnRJbXAqPih0aGlzT2JqKSwgZXhlYywgcHJvcGVydHlOYW1lLCBkZXNjcmlw
dG9yKSkKICAgICAgICAgICAgIHJldHVybiB0cnVlOwpAQCAtMzEwLDcgKzMxMCw3IEBAIG5hbWVz
cGFjZSBKU0MgewogICAgICAqIFVzaW5nIHRoaXMgaW5zdGVhZCBvZiBnZXRTdGF0aWNQcm9wZXJ0
eVNsb3QgcmVtb3ZlcyB0aGUgbmVlZCBmb3IgYSBGdW5jSW1wIGNsYXNzLgogICAgICAqLwogICAg
IHRlbXBsYXRlIDxjbGFzcyBUaGlzSW1wLCBjbGFzcyBQYXJlbnRJbXA+Ci0gICAgaW5saW5lIGJv
b2wgZ2V0U3RhdGljVmFsdWVTbG90KEV4ZWNTdGF0ZSogZXhlYywgY29uc3QgSGFzaFRhYmxlKiB0
YWJsZSwgVGhpc0ltcCogdGhpc09iaiwgY29uc3QgSWRlbnRpZmllciYgcHJvcGVydHlOYW1lLCBQ
cm9wZXJ0eVNsb3QmIHNsb3QpCisgICAgaW5saW5lIGJvb2wgZ2V0U3RhdGljVmFsdWVTbG90KEV4
ZWNTdGF0ZSogZXhlYywgY29uc3QgSGFzaFRhYmxlKiB0YWJsZSwgVGhpc0ltcCogdGhpc09iaiwg
UHJvcGVydHlOYW1lIHByb3BlcnR5TmFtZSwgUHJvcGVydHlTbG90JiBzbG90KQogICAgIHsKICAg
ICAgICAgY29uc3QgSGFzaEVudHJ5KiBlbnRyeSA9IHRhYmxlLT5lbnRyeShleGVjLCBwcm9wZXJ0
eU5hbWUpOwogCkBAIC0zMjgsNyArMzI4LDcgQEAgbmFtZXNwYWNlIEpTQyB7CiAgICAgICogVXNp
bmcgdGhpcyBpbnN0ZWFkIG9mIGdldFN0YXRpY1Byb3BlcnR5RGVzY3JpcHRvciByZW1vdmVzIHRo
ZSBuZWVkIGZvciBhIEZ1bmNJbXAgY2xhc3MuCiAgICAgICovCiAgICAgdGVtcGxhdGUgPGNsYXNz
IFRoaXNJbXAsIGNsYXNzIFBhcmVudEltcD4KLSAgICBpbmxpbmUgYm9vbCBnZXRTdGF0aWNWYWx1
ZURlc2NyaXB0b3IoRXhlY1N0YXRlKiBleGVjLCBjb25zdCBIYXNoVGFibGUqIHRhYmxlLCBUaGlz
SW1wKiB0aGlzT2JqLCBjb25zdCBJZGVudGlmaWVyJiBwcm9wZXJ0eU5hbWUsIFByb3BlcnR5RGVz
Y3JpcHRvciYgZGVzY3JpcHRvcikKKyAgICBpbmxpbmUgYm9vbCBnZXRTdGF0aWNWYWx1ZURlc2Ny
aXB0b3IoRXhlY1N0YXRlKiBleGVjLCBjb25zdCBIYXNoVGFibGUqIHRhYmxlLCBUaGlzSW1wKiB0
aGlzT2JqLCBQcm9wZXJ0eU5hbWUgcHJvcGVydHlOYW1lLCBQcm9wZXJ0eURlc2NyaXB0b3ImIGRl
c2NyaXB0b3IpCiAgICAgewogICAgICAgICBjb25zdCBIYXNoRW50cnkqIGVudHJ5ID0gdGFibGUt
PmVudHJ5KGV4ZWMsIHByb3BlcnR5TmFtZSk7CiAgICAgICAgIApAQCAtMzQ4LDcgKzM0OCw3IEBA
IG5hbWVzcGFjZSBKU0MgewogICAgICAqIGlzIGZvdW5kIGl0IHNldHMgdGhlIHZhbHVlIGFuZCBy
ZXR1cm5zIHRydWUsIGVsc2UgaXQgcmV0dXJucyBmYWxzZS4KICAgICAgKi8KICAgICB0ZW1wbGF0
ZSA8Y2xhc3MgVGhpc0ltcD4KLSAgICBpbmxpbmUgYm9vbCBsb29rdXBQdXQoRXhlY1N0YXRlKiBl
eGVjLCBjb25zdCBJZGVudGlmaWVyJiBwcm9wZXJ0eU5hbWUsIEpTVmFsdWUgdmFsdWUsIGNvbnN0
IEhhc2hUYWJsZSogdGFibGUsIFRoaXNJbXAqIHRoaXNPYmosIGJvb2wgc2hvdWxkVGhyb3cgPSBm
YWxzZSkKKyAgICBpbmxpbmUgYm9vbCBsb29rdXBQdXQoRXhlY1N0YXRlKiBleGVjLCBQcm9wZXJ0
eU5hbWUgcHJvcGVydHlOYW1lLCBKU1ZhbHVlIHZhbHVlLCBjb25zdCBIYXNoVGFibGUqIHRhYmxl
LCBUaGlzSW1wKiB0aGlzT2JqLCBib29sIHNob3VsZFRocm93ID0gZmFsc2UpCiAgICAgewogICAg
ICAgICBjb25zdCBIYXNoRW50cnkqIGVudHJ5ID0gdGFibGUtPmVudHJ5KGV4ZWMsIHByb3BlcnR5
TmFtZSk7CiAgICAgICAgIApAQCAtMzczLDcgKzM3Myw3IEBAIG5hbWVzcGFjZSBKU0MgewogICAg
ICAqIHRoZW4gaXQgY2FsbHMgcHV0KCkgb24gdGhlIFBhcmVudEltcCBjbGFzcy4KICAgICAgKi8K
ICAgICB0ZW1wbGF0ZSA8Y2xhc3MgVGhpc0ltcCwgY2xhc3MgUGFyZW50SW1wPgotICAgIGlubGlu
ZSB2b2lkIGxvb2t1cFB1dChFeGVjU3RhdGUqIGV4ZWMsIGNvbnN0IElkZW50aWZpZXImIHByb3Bl
cnR5TmFtZSwgSlNWYWx1ZSB2YWx1ZSwgY29uc3QgSGFzaFRhYmxlKiB0YWJsZSwgVGhpc0ltcCog
dGhpc09iaiwgUHV0UHJvcGVydHlTbG90JiBzbG90KQorICAgIGlubGluZSB2b2lkIGxvb2t1cFB1
dChFeGVjU3RhdGUqIGV4ZWMsIFByb3BlcnR5TmFtZSBwcm9wZXJ0eU5hbWUsIEpTVmFsdWUgdmFs
dWUsIGNvbnN0IEhhc2hUYWJsZSogdGFibGUsIFRoaXNJbXAqIHRoaXNPYmosIFB1dFByb3BlcnR5
U2xvdCYgc2xvdCkKICAgICB7CiAgICAgICAgIGlmICghbG9va3VwUHV0PFRoaXNJbXA+KGV4ZWMs
IHByb3BlcnR5TmFtZSwgdmFsdWUsIHRhYmxlLCB0aGlzT2JqLCBzbG90LmlzU3RyaWN0TW9kZSgp
KSkKICAgICAgICAgICAgIFBhcmVudEltcDo6cHV0KHRoaXNPYmosIGV4ZWMsIHByb3BlcnR5TmFt
ZSwgdmFsdWUsIHNsb3QpOyAvLyBub3QgZm91bmQ6IGZvcndhcmQgdG8gcGFyZW50CkluZGV4OiBT
b3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9NYXRoT2JqZWN0LmNwcAo9PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0t
LSBTb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9NYXRoT2JqZWN0LmNwcAkocmV2aXNpb24g
MTE2NjY3KQorKysgU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvTWF0aE9iamVjdC5jcHAJ
KHdvcmtpbmcgY29weSkKQEAgLTEwNiwxMiArMTA2LDEyIEBAIHZvaWQgTWF0aE9iamVjdDo6Zmlu
aXNoQ3JlYXRpb24oRXhlY1N0YXQKICAgICBwdXREaXJlY3RXaXRob3V0VHJhbnNpdGlvbihleGVj
LT5nbG9iYWxEYXRhKCksIElkZW50aWZpZXIoZXhlYywgIlNRUlQyIiksIGpzTnVtYmVyKHNxcnQo
Mi4wKSksIERvbnREZWxldGUgfCBEb250RW51bSB8IFJlYWRPbmx5KTsKIH0KIAotYm9vbCBNYXRo
T2JqZWN0OjpnZXRPd25Qcm9wZXJ0eVNsb3QoSlNDZWxsKiBjZWxsLCBFeGVjU3RhdGUqIGV4ZWMs
IGNvbnN0IElkZW50aWZpZXImIHByb3BlcnR5TmFtZSwgUHJvcGVydHlTbG90ICZzbG90KQorYm9v
bCBNYXRoT2JqZWN0OjpnZXRPd25Qcm9wZXJ0eVNsb3QoSlNDZWxsKiBjZWxsLCBFeGVjU3RhdGUq
IGV4ZWMsIFByb3BlcnR5TmFtZSBwcm9wZXJ0eU5hbWUsIFByb3BlcnR5U2xvdCAmc2xvdCkKIHsK
ICAgICByZXR1cm4gZ2V0U3RhdGljRnVuY3Rpb25TbG90PEpTT2JqZWN0PihleGVjLCBFeGVjU3Rh
dGU6Om1hdGhUYWJsZShleGVjKSwganNDYXN0PE1hdGhPYmplY3QqPihjZWxsKSwgcHJvcGVydHlO
YW1lLCBzbG90KTsKIH0KIAotYm9vbCBNYXRoT2JqZWN0OjpnZXRPd25Qcm9wZXJ0eURlc2NyaXB0
b3IoSlNPYmplY3QqIG9iamVjdCwgRXhlY1N0YXRlKiBleGVjLCBjb25zdCBJZGVudGlmaWVyJiBw
cm9wZXJ0eU5hbWUsIFByb3BlcnR5RGVzY3JpcHRvciYgZGVzY3JpcHRvcikKK2Jvb2wgTWF0aE9i
amVjdDo6Z2V0T3duUHJvcGVydHlEZXNjcmlwdG9yKEpTT2JqZWN0KiBvYmplY3QsIEV4ZWNTdGF0
ZSogZXhlYywgUHJvcGVydHlOYW1lIHByb3BlcnR5TmFtZSwgUHJvcGVydHlEZXNjcmlwdG9yJiBk
ZXNjcmlwdG9yKQogewogICAgIHJldHVybiBnZXRTdGF0aWNGdW5jdGlvbkRlc2NyaXB0b3I8SlNP
YmplY3Q+KGV4ZWMsIEV4ZWNTdGF0ZTo6bWF0aFRhYmxlKGV4ZWMpLCBqc0Nhc3Q8TWF0aE9iamVj
dCo+KG9iamVjdCksIHByb3BlcnR5TmFtZSwgZGVzY3JpcHRvcik7CiB9CkluZGV4OiBTb3VyY2Uv
SmF2YVNjcmlwdENvcmUvcnVudGltZS9NYXRoT2JqZWN0LmgKPT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNl
L0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvTWF0aE9iamVjdC5oCShyZXZpc2lvbiAxMTY2NjcpCisr
KyBTb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9NYXRoT2JqZWN0LmgJKHdvcmtpbmcgY29w
eSkKQEAgLTM4LDggKzM4LDggQEAgbmFtZXNwYWNlIEpTQyB7CiAgICAgICAgICAgICBvYmplY3Qt
PmZpbmlzaENyZWF0aW9uKGV4ZWMsIGdsb2JhbE9iamVjdCk7CiAgICAgICAgICAgICByZXR1cm4g
b2JqZWN0OwogICAgICAgICB9Ci0gICAgICAgIHN0YXRpYyBib29sIGdldE93blByb3BlcnR5U2xv
dChKU0NlbGwqLCBFeGVjU3RhdGUqLCBjb25zdCBJZGVudGlmaWVyJiwgUHJvcGVydHlTbG90Jik7
Ci0gICAgICAgIHN0YXRpYyBib29sIGdldE93blByb3BlcnR5RGVzY3JpcHRvcihKU09iamVjdCos
IEV4ZWNTdGF0ZSosIGNvbnN0IElkZW50aWZpZXImLCBQcm9wZXJ0eURlc2NyaXB0b3ImKTsKKyAg
ICAgICAgc3RhdGljIGJvb2wgZ2V0T3duUHJvcGVydHlTbG90KEpTQ2VsbCosIEV4ZWNTdGF0ZSos
IFByb3BlcnR5TmFtZSwgUHJvcGVydHlTbG90Jik7CisgICAgICAgIHN0YXRpYyBib29sIGdldE93
blByb3BlcnR5RGVzY3JpcHRvcihKU09iamVjdCosIEV4ZWNTdGF0ZSosIFByb3BlcnR5TmFtZSwg
UHJvcGVydHlEZXNjcmlwdG9yJik7CiAKICAgICAgICAgc3RhdGljIGNvbnN0IENsYXNzSW5mbyBz
X2luZm87CiAKSW5kZXg6IFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL05hdGl2ZUVycm9y
Q29uc3RydWN0b3IuaAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGlt
ZS9OYXRpdmVFcnJvckNvbnN0cnVjdG9yLmgJKHJldmlzaW9uIDExNjY2NykKKysrIFNvdXJjZS9K
YXZhU2NyaXB0Q29yZS9ydW50aW1lL05hdGl2ZUVycm9yQ29uc3RydWN0b3IuaAkod29ya2luZyBj
b3B5KQpAQCAtNTMsNyArNTMsNyBAQCBuYW1lc3BhY2UgSlNDIHsKICAgICBwcm90ZWN0ZWQ6CiAg
ICAgICAgIHZvaWQgZmluaXNoQ3JlYXRpb24oRXhlY1N0YXRlKiBleGVjLCBKU0dsb2JhbE9iamVj
dCogZ2xvYmFsT2JqZWN0LCBTdHJ1Y3R1cmUqIHByb3RvdHlwZVN0cnVjdHVyZSwgY29uc3QgVVN0
cmluZyYgbmFtZSkKICAgICAgICAgewotICAgICAgICAgICAgQmFzZTo6ZmluaXNoQ3JlYXRpb24o
ZXhlYy0+Z2xvYmFsRGF0YSgpLCBJZGVudGlmaWVyKGV4ZWMsIG5hbWUpKTsKKyAgICAgICAgICAg
IEJhc2U6OmZpbmlzaENyZWF0aW9uKGV4ZWMtPmdsb2JhbERhdGEoKSwgbmFtZSk7CiAgICAgICAg
ICAgICBBU1NFUlQoaW5oZXJpdHMoJnNfaW5mbykpOwogCiAgICAgICAgICAgICBOYXRpdmVFcnJv
clByb3RvdHlwZSogcHJvdG90eXBlID0gTmF0aXZlRXJyb3JQcm90b3R5cGU6OmNyZWF0ZShleGVj
LCBnbG9iYWxPYmplY3QsIHByb3RvdHlwZVN0cnVjdHVyZSwgbmFtZSwgdGhpcyk7CkluZGV4OiBT
b3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9OdW1iZXJDb25zdHJ1Y3Rvci5jcHAKPT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PQotLS0gU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvTnVtYmVyQ29uc3RydWN0b3Iu
Y3BwCShyZXZpc2lvbiAxMTY2NjcpCisrKyBTb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9O
dW1iZXJDb25zdHJ1Y3Rvci5jcHAJKHdvcmtpbmcgY29weSkKQEAgLTMwLDExICszMCwxMSBAQCBu
YW1lc3BhY2UgSlNDIHsKIAogQVNTRVJUX0NMQVNTX0ZJVFNfSU5fQ0VMTChOdW1iZXJDb25zdHJ1
Y3Rvcik7CiAKLXN0YXRpYyBKU1ZhbHVlIG51bWJlckNvbnN0cnVjdG9yTmFOVmFsdWUoRXhlY1N0
YXRlKiwgSlNWYWx1ZSwgY29uc3QgSWRlbnRpZmllciYpOwotc3RhdGljIEpTVmFsdWUgbnVtYmVy
Q29uc3RydWN0b3JOZWdJbmZpbml0eShFeGVjU3RhdGUqLCBKU1ZhbHVlLCBjb25zdCBJZGVudGlm
aWVyJik7Ci1zdGF0aWMgSlNWYWx1ZSBudW1iZXJDb25zdHJ1Y3RvclBvc0luZmluaXR5KEV4ZWNT
dGF0ZSosIEpTVmFsdWUsIGNvbnN0IElkZW50aWZpZXImKTsKLXN0YXRpYyBKU1ZhbHVlIG51bWJl
ckNvbnN0cnVjdG9yTWF4VmFsdWUoRXhlY1N0YXRlKiwgSlNWYWx1ZSwgY29uc3QgSWRlbnRpZmll
ciYpOwotc3RhdGljIEpTVmFsdWUgbnVtYmVyQ29uc3RydWN0b3JNaW5WYWx1ZShFeGVjU3RhdGUq
LCBKU1ZhbHVlLCBjb25zdCBJZGVudGlmaWVyJik7CitzdGF0aWMgSlNWYWx1ZSBudW1iZXJDb25z
dHJ1Y3Rvck5hTlZhbHVlKEV4ZWNTdGF0ZSosIEpTVmFsdWUsIFByb3BlcnR5TmFtZSk7CitzdGF0
aWMgSlNWYWx1ZSBudW1iZXJDb25zdHJ1Y3Rvck5lZ0luZmluaXR5KEV4ZWNTdGF0ZSosIEpTVmFs
dWUsIFByb3BlcnR5TmFtZSk7CitzdGF0aWMgSlNWYWx1ZSBudW1iZXJDb25zdHJ1Y3RvclBvc0lu
ZmluaXR5KEV4ZWNTdGF0ZSosIEpTVmFsdWUsIFByb3BlcnR5TmFtZSk7CitzdGF0aWMgSlNWYWx1
ZSBudW1iZXJDb25zdHJ1Y3Rvck1heFZhbHVlKEV4ZWNTdGF0ZSosIEpTVmFsdWUsIFByb3BlcnR5
TmFtZSk7CitzdGF0aWMgSlNWYWx1ZSBudW1iZXJDb25zdHJ1Y3Rvck1pblZhbHVlKEV4ZWNTdGF0
ZSosIEpTVmFsdWUsIFByb3BlcnR5TmFtZSk7CiAKIH0gLy8gbmFtZXNwYWNlIEpTQwogCkBAIC02
Myw3ICs2Myw3IEBAIE51bWJlckNvbnN0cnVjdG9yOjpOdW1iZXJDb25zdHJ1Y3RvcihKU0cKIAog
dm9pZCBOdW1iZXJDb25zdHJ1Y3Rvcjo6ZmluaXNoQ3JlYXRpb24oRXhlY1N0YXRlKiBleGVjLCBO
dW1iZXJQcm90b3R5cGUqIG51bWJlclByb3RvdHlwZSkKIHsKLSAgICBCYXNlOjpmaW5pc2hDcmVh
dGlvbihleGVjLT5nbG9iYWxEYXRhKCksIElkZW50aWZpZXIoZXhlYywgbnVtYmVyUHJvdG90eXBl
LT5zX2luZm8uY2xhc3NOYW1lKSk7CisgICAgQmFzZTo6ZmluaXNoQ3JlYXRpb24oZXhlYy0+Z2xv
YmFsRGF0YSgpLCBudW1iZXJQcm90b3R5cGUtPnNfaW5mby5jbGFzc05hbWUpOwogICAgIEFTU0VS
VChpbmhlcml0cygmc19pbmZvKSk7CiAKICAgICAvLyBOdW1iZXIuUHJvdG90eXBlCkBAIC03Myw0
MiArNzMsNDIgQEAgdm9pZCBOdW1iZXJDb25zdHJ1Y3Rvcjo6ZmluaXNoQ3JlYXRpb24oRQogICAg
IHB1dERpcmVjdFdpdGhvdXRUcmFuc2l0aW9uKGV4ZWMtPmdsb2JhbERhdGEoKSwgZXhlYy0+cHJv
cGVydHlOYW1lcygpLmxlbmd0aCwganNOdW1iZXIoMSksIFJlYWRPbmx5IHwgRG9udEVudW0gfCBE
b250RGVsZXRlKTsKIH0KIAotYm9vbCBOdW1iZXJDb25zdHJ1Y3Rvcjo6Z2V0T3duUHJvcGVydHlT
bG90KEpTQ2VsbCogY2VsbCwgRXhlY1N0YXRlKiBleGVjLCBjb25zdCBJZGVudGlmaWVyJiBwcm9w
ZXJ0eU5hbWUsIFByb3BlcnR5U2xvdCYgc2xvdCkKK2Jvb2wgTnVtYmVyQ29uc3RydWN0b3I6Omdl
dE93blByb3BlcnR5U2xvdChKU0NlbGwqIGNlbGwsIEV4ZWNTdGF0ZSogZXhlYywgUHJvcGVydHlO
YW1lIHByb3BlcnR5TmFtZSwgUHJvcGVydHlTbG90JiBzbG90KQogewogICAgIHJldHVybiBnZXRT
dGF0aWNWYWx1ZVNsb3Q8TnVtYmVyQ29uc3RydWN0b3IsIEludGVybmFsRnVuY3Rpb24+KGV4ZWMs
IEV4ZWNTdGF0ZTo6bnVtYmVyQ29uc3RydWN0b3JUYWJsZShleGVjKSwganNDYXN0PE51bWJlckNv
bnN0cnVjdG9yKj4oY2VsbCksIHByb3BlcnR5TmFtZSwgc2xvdCk7CiB9CiAKLWJvb2wgTnVtYmVy
Q29uc3RydWN0b3I6OmdldE93blByb3BlcnR5RGVzY3JpcHRvcihKU09iamVjdCogb2JqZWN0LCBF
eGVjU3RhdGUqIGV4ZWMsIGNvbnN0IElkZW50aWZpZXImIHByb3BlcnR5TmFtZSwgUHJvcGVydHlE
ZXNjcmlwdG9yJiBkZXNjcmlwdG9yKQorYm9vbCBOdW1iZXJDb25zdHJ1Y3Rvcjo6Z2V0T3duUHJv
cGVydHlEZXNjcmlwdG9yKEpTT2JqZWN0KiBvYmplY3QsIEV4ZWNTdGF0ZSogZXhlYywgUHJvcGVy
dHlOYW1lIHByb3BlcnR5TmFtZSwgUHJvcGVydHlEZXNjcmlwdG9yJiBkZXNjcmlwdG9yKQogewog
ICAgIHJldHVybiBnZXRTdGF0aWNWYWx1ZURlc2NyaXB0b3I8TnVtYmVyQ29uc3RydWN0b3IsIElu
dGVybmFsRnVuY3Rpb24+KGV4ZWMsIEV4ZWNTdGF0ZTo6bnVtYmVyQ29uc3RydWN0b3JUYWJsZShl
eGVjKSwganNDYXN0PE51bWJlckNvbnN0cnVjdG9yKj4ob2JqZWN0KSwgcHJvcGVydHlOYW1lLCBk
ZXNjcmlwdG9yKTsKIH0KIAotdm9pZCBOdW1iZXJDb25zdHJ1Y3Rvcjo6cHV0KEpTQ2VsbCogY2Vs
bCwgRXhlY1N0YXRlKiBleGVjLCBjb25zdCBJZGVudGlmaWVyJiBwcm9wZXJ0eU5hbWUsIEpTVmFs
dWUgdmFsdWUsIFB1dFByb3BlcnR5U2xvdCYgc2xvdCkKK3ZvaWQgTnVtYmVyQ29uc3RydWN0b3I6
OnB1dChKU0NlbGwqIGNlbGwsIEV4ZWNTdGF0ZSogZXhlYywgUHJvcGVydHlOYW1lIHByb3BlcnR5
TmFtZSwgSlNWYWx1ZSB2YWx1ZSwgUHV0UHJvcGVydHlTbG90JiBzbG90KQogewogICAgIGxvb2t1
cFB1dDxOdW1iZXJDb25zdHJ1Y3RvciwgSW50ZXJuYWxGdW5jdGlvbj4oZXhlYywgcHJvcGVydHlO
YW1lLCB2YWx1ZSwgRXhlY1N0YXRlOjpudW1iZXJDb25zdHJ1Y3RvclRhYmxlKGV4ZWMpLCBqc0Nh
c3Q8TnVtYmVyQ29uc3RydWN0b3IqPihjZWxsKSwgc2xvdCk7CiB9CiAKLXN0YXRpYyBKU1ZhbHVl
IG51bWJlckNvbnN0cnVjdG9yTmFOVmFsdWUoRXhlY1N0YXRlKiwgSlNWYWx1ZSwgY29uc3QgSWRl
bnRpZmllciYpCitzdGF0aWMgSlNWYWx1ZSBudW1iZXJDb25zdHJ1Y3Rvck5hTlZhbHVlKEV4ZWNT
dGF0ZSosIEpTVmFsdWUsIFByb3BlcnR5TmFtZSkKIHsKICAgICByZXR1cm4ganNOYU4oKTsKIH0K
IAotc3RhdGljIEpTVmFsdWUgbnVtYmVyQ29uc3RydWN0b3JOZWdJbmZpbml0eShFeGVjU3RhdGUq
LCBKU1ZhbHVlLCBjb25zdCBJZGVudGlmaWVyJikKK3N0YXRpYyBKU1ZhbHVlIG51bWJlckNvbnN0
cnVjdG9yTmVnSW5maW5pdHkoRXhlY1N0YXRlKiwgSlNWYWx1ZSwgUHJvcGVydHlOYW1lKQogewog
ICAgIHJldHVybiBqc051bWJlcigtc3RkOjpudW1lcmljX2xpbWl0czxkb3VibGU+OjppbmZpbml0
eSgpKTsKIH0KIAotc3RhdGljIEpTVmFsdWUgbnVtYmVyQ29uc3RydWN0b3JQb3NJbmZpbml0eShF
eGVjU3RhdGUqLCBKU1ZhbHVlLCBjb25zdCBJZGVudGlmaWVyJikKK3N0YXRpYyBKU1ZhbHVlIG51
bWJlckNvbnN0cnVjdG9yUG9zSW5maW5pdHkoRXhlY1N0YXRlKiwgSlNWYWx1ZSwgUHJvcGVydHlO
YW1lKQogewogICAgIHJldHVybiBqc051bWJlcihzdGQ6Om51bWVyaWNfbGltaXRzPGRvdWJsZT46
OmluZmluaXR5KCkpOwogfQogCi1zdGF0aWMgSlNWYWx1ZSBudW1iZXJDb25zdHJ1Y3Rvck1heFZh
bHVlKEV4ZWNTdGF0ZSosIEpTVmFsdWUsIGNvbnN0IElkZW50aWZpZXImKQorc3RhdGljIEpTVmFs
dWUgbnVtYmVyQ29uc3RydWN0b3JNYXhWYWx1ZShFeGVjU3RhdGUqLCBKU1ZhbHVlLCBQcm9wZXJ0
eU5hbWUpCiB7CiAgICAgcmV0dXJuIGpzTnVtYmVyKDEuNzk3NjkzMTM0ODYyMzE1N0UrMzA4KTsK
IH0KIAotc3RhdGljIEpTVmFsdWUgbnVtYmVyQ29uc3RydWN0b3JNaW5WYWx1ZShFeGVjU3RhdGUq
LCBKU1ZhbHVlLCBjb25zdCBJZGVudGlmaWVyJikKK3N0YXRpYyBKU1ZhbHVlIG51bWJlckNvbnN0
cnVjdG9yTWluVmFsdWUoRXhlY1N0YXRlKiwgSlNWYWx1ZSwgUHJvcGVydHlOYW1lKQogewogICAg
IHJldHVybiBqc051bWJlcig1RS0zMjQpOwogfQpJbmRleDogU291cmNlL0phdmFTY3JpcHRDb3Jl
L3J1bnRpbWUvTnVtYmVyQ29uc3RydWN0b3IuaAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvSmF2YVNj
cmlwdENvcmUvcnVudGltZS9OdW1iZXJDb25zdHJ1Y3Rvci5oCShyZXZpc2lvbiAxMTY2NjcpCisr
KyBTb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9OdW1iZXJDb25zdHJ1Y3Rvci5oCSh3b3Jr
aW5nIGNvcHkpCkBAIC0zOCwxMCArMzgsMTAgQEAgbmFtZXNwYWNlIEpTQyB7CiAgICAgICAgICAg
ICByZXR1cm4gY29uc3RydWN0b3I7CiAgICAgICAgIH0KIAotICAgICAgICBzdGF0aWMgdm9pZCBw
dXQoSlNDZWxsKiwgRXhlY1N0YXRlKiwgY29uc3QgSWRlbnRpZmllciYgcHJvcGVydHlOYW1lLCBK
U1ZhbHVlLCBQdXRQcm9wZXJ0eVNsb3QmKTsKKyAgICAgICAgc3RhdGljIHZvaWQgcHV0KEpTQ2Vs
bCosIEV4ZWNTdGF0ZSosIFByb3BlcnR5TmFtZSBwcm9wZXJ0eU5hbWUsIEpTVmFsdWUsIFB1dFBy
b3BlcnR5U2xvdCYpOwogCi0gICAgICAgIHN0YXRpYyBib29sIGdldE93blByb3BlcnR5U2xvdChK
U0NlbGwqLCBFeGVjU3RhdGUqLCBjb25zdCBJZGVudGlmaWVyJiwgUHJvcGVydHlTbG90Jik7Ci0g
ICAgICAgIHN0YXRpYyBib29sIGdldE93blByb3BlcnR5RGVzY3JpcHRvcihKU09iamVjdCosIEV4
ZWNTdGF0ZSosIGNvbnN0IElkZW50aWZpZXImLCBQcm9wZXJ0eURlc2NyaXB0b3ImKTsKKyAgICAg
ICAgc3RhdGljIGJvb2wgZ2V0T3duUHJvcGVydHlTbG90KEpTQ2VsbCosIEV4ZWNTdGF0ZSosIFBy
b3BlcnR5TmFtZSwgUHJvcGVydHlTbG90Jik7CisgICAgICAgIHN0YXRpYyBib29sIGdldE93blBy
b3BlcnR5RGVzY3JpcHRvcihKU09iamVjdCosIEV4ZWNTdGF0ZSosIFByb3BlcnR5TmFtZSwgUHJv
cGVydHlEZXNjcmlwdG9yJik7CiAgICAgICAgIEpTVmFsdWUgZ2V0VmFsdWVQcm9wZXJ0eShFeGVj
U3RhdGUqLCBpbnQgdG9rZW4pIGNvbnN0OwogCiAgICAgICAgIHN0YXRpYyBjb25zdCBDbGFzc0lu
Zm8gc19pbmZvOwpJbmRleDogU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvTnVtYmVyUHJv
dG90eXBlLmNwcAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9O
dW1iZXJQcm90b3R5cGUuY3BwCShyZXZpc2lvbiAxMTY2NjcpCisrKyBTb3VyY2UvSmF2YVNjcmlw
dENvcmUvcnVudGltZS9OdW1iZXJQcm90b3R5cGUuY3BwCSh3b3JraW5nIGNvcHkpCkBAIC04NCwx
MiArODQsMTIgQEAgdm9pZCBOdW1iZXJQcm90b3R5cGU6OmZpbmlzaENyZWF0aW9uKEV4ZQogICAg
IEFTU0VSVChpbmhlcml0cygmc19pbmZvKSk7CiB9CiAKLWJvb2wgTnVtYmVyUHJvdG90eXBlOjpn
ZXRPd25Qcm9wZXJ0eVNsb3QoSlNDZWxsKiBjZWxsLCBFeGVjU3RhdGUqIGV4ZWMsIGNvbnN0IElk
ZW50aWZpZXImIHByb3BlcnR5TmFtZSwgUHJvcGVydHlTbG90ICZzbG90KQorYm9vbCBOdW1iZXJQ
cm90b3R5cGU6OmdldE93blByb3BlcnR5U2xvdChKU0NlbGwqIGNlbGwsIEV4ZWNTdGF0ZSogZXhl
YywgUHJvcGVydHlOYW1lIHByb3BlcnR5TmFtZSwgUHJvcGVydHlTbG90ICZzbG90KQogewogICAg
IHJldHVybiBnZXRTdGF0aWNGdW5jdGlvblNsb3Q8TnVtYmVyT2JqZWN0PihleGVjLCBFeGVjU3Rh
dGU6Om51bWJlclByb3RvdHlwZVRhYmxlKGV4ZWMpLCBqc0Nhc3Q8TnVtYmVyUHJvdG90eXBlKj4o
Y2VsbCksIHByb3BlcnR5TmFtZSwgc2xvdCk7CiB9CiAKLWJvb2wgTnVtYmVyUHJvdG90eXBlOjpn
ZXRPd25Qcm9wZXJ0eURlc2NyaXB0b3IoSlNPYmplY3QqIG9iamVjdCwgRXhlY1N0YXRlKiBleGVj
LCBjb25zdCBJZGVudGlmaWVyJiBwcm9wZXJ0eU5hbWUsIFByb3BlcnR5RGVzY3JpcHRvciYgZGVz
Y3JpcHRvcikKK2Jvb2wgTnVtYmVyUHJvdG90eXBlOjpnZXRPd25Qcm9wZXJ0eURlc2NyaXB0b3Io
SlNPYmplY3QqIG9iamVjdCwgRXhlY1N0YXRlKiBleGVjLCBQcm9wZXJ0eU5hbWUgcHJvcGVydHlO
YW1lLCBQcm9wZXJ0eURlc2NyaXB0b3ImIGRlc2NyaXB0b3IpCiB7CiAgICAgcmV0dXJuIGdldFN0
YXRpY0Z1bmN0aW9uRGVzY3JpcHRvcjxOdW1iZXJPYmplY3Q+KGV4ZWMsIEV4ZWNTdGF0ZTo6bnVt
YmVyUHJvdG90eXBlVGFibGUoZXhlYyksIGpzQ2FzdDxOdW1iZXJQcm90b3R5cGUqPihvYmplY3Qp
LCBwcm9wZXJ0eU5hbWUsIGRlc2NyaXB0b3IpOwogfQpJbmRleDogU291cmNlL0phdmFTY3JpcHRD
b3JlL3J1bnRpbWUvTnVtYmVyUHJvdG90eXBlLmgKPT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL0phdmFT
Y3JpcHRDb3JlL3J1bnRpbWUvTnVtYmVyUHJvdG90eXBlLmgJKHJldmlzaW9uIDExNjY2NykKKysr
IFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL051bWJlclByb3RvdHlwZS5oCSh3b3JraW5n
IGNvcHkpCkBAIC00OSw4ICs0OSw4IEBAIG5hbWVzcGFjZSBKU0MgewogCiAgICAgcHJpdmF0ZToK
ICAgICAgICAgTnVtYmVyUHJvdG90eXBlKEV4ZWNTdGF0ZSosIFN0cnVjdHVyZSopOwotICAgICAg
ICBzdGF0aWMgYm9vbCBnZXRPd25Qcm9wZXJ0eVNsb3QoSlNDZWxsKiwgRXhlY1N0YXRlKiwgY29u
c3QgSWRlbnRpZmllciYsIFByb3BlcnR5U2xvdCYpOwotICAgICAgICBzdGF0aWMgYm9vbCBnZXRP
d25Qcm9wZXJ0eURlc2NyaXB0b3IoSlNPYmplY3QqLCBFeGVjU3RhdGUqLCBjb25zdCBJZGVudGlm
aWVyJiwgUHJvcGVydHlEZXNjcmlwdG9yJik7CisgICAgICAgIHN0YXRpYyBib29sIGdldE93blBy
b3BlcnR5U2xvdChKU0NlbGwqLCBFeGVjU3RhdGUqLCBQcm9wZXJ0eU5hbWUsIFByb3BlcnR5U2xv
dCYpOworICAgICAgICBzdGF0aWMgYm9vbCBnZXRPd25Qcm9wZXJ0eURlc2NyaXB0b3IoSlNPYmpl
Y3QqLCBFeGVjU3RhdGUqLCBQcm9wZXJ0eU5hbWUsIFByb3BlcnR5RGVzY3JpcHRvciYpOwogICAg
IH07CiAKIH0gLy8gbmFtZXNwYWNlIEpTQwpJbmRleDogU291cmNlL0phdmFTY3JpcHRDb3JlL3J1
bnRpbWUvT2JqZWN0Q29uc3RydWN0b3IuY3BwCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9KYXZhU2Ny
aXB0Q29yZS9ydW50aW1lL09iamVjdENvbnN0cnVjdG9yLmNwcAkocmV2aXNpb24gMTE2NjY3KQor
KysgU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvT2JqZWN0Q29uc3RydWN0b3IuY3BwCSh3
b3JraW5nIGNvcHkpCkBAIC04NCwxOSArODQsMTkgQEAgT2JqZWN0Q29uc3RydWN0b3I6Ok9iamVj
dENvbnN0cnVjdG9yKEpTRwogCiB2b2lkIE9iamVjdENvbnN0cnVjdG9yOjpmaW5pc2hDcmVhdGlv
bihFeGVjU3RhdGUqIGV4ZWMsIE9iamVjdFByb3RvdHlwZSogb2JqZWN0UHJvdG90eXBlKQogewot
ICAgIEJhc2U6OmZpbmlzaENyZWF0aW9uKGV4ZWMtPmdsb2JhbERhdGEoKSwgSWRlbnRpZmllcihl
eGVjLCAiT2JqZWN0IikpOworICAgIEJhc2U6OmZpbmlzaENyZWF0aW9uKGV4ZWMtPmdsb2JhbERh
dGEoKSwgSWRlbnRpZmllcihleGVjLCAiT2JqZWN0IikudXN0cmluZygpKTsKICAgICAvLyBFQ01B
IDE1LjIuMy4xCiAgICAgcHV0RGlyZWN0V2l0aG91dFRyYW5zaXRpb24oZXhlYy0+Z2xvYmFsRGF0
YSgpLCBleGVjLT5wcm9wZXJ0eU5hbWVzKCkucHJvdG90eXBlLCBvYmplY3RQcm90b3R5cGUsIERv
bnRFbnVtIHwgRG9udERlbGV0ZSB8IFJlYWRPbmx5KTsKICAgICAvLyBuby4gb2YgYXJndW1lbnRz
IGZvciBjb25zdHJ1Y3RvcgogICAgIHB1dERpcmVjdFdpdGhvdXRUcmFuc2l0aW9uKGV4ZWMtPmds
b2JhbERhdGEoKSwgZXhlYy0+cHJvcGVydHlOYW1lcygpLmxlbmd0aCwganNOdW1iZXIoMSksIFJl
YWRPbmx5IHwgRG9udEVudW0gfCBEb250RGVsZXRlKTsKIH0KIAotYm9vbCBPYmplY3RDb25zdHJ1
Y3Rvcjo6Z2V0T3duUHJvcGVydHlTbG90KEpTQ2VsbCogY2VsbCwgRXhlY1N0YXRlKiBleGVjLCBj
b25zdCBJZGVudGlmaWVyJiBwcm9wZXJ0eU5hbWUsIFByb3BlcnR5U2xvdCAmc2xvdCkKK2Jvb2wg
T2JqZWN0Q29uc3RydWN0b3I6OmdldE93blByb3BlcnR5U2xvdChKU0NlbGwqIGNlbGwsIEV4ZWNT
dGF0ZSogZXhlYywgUHJvcGVydHlOYW1lIHByb3BlcnR5TmFtZSwgUHJvcGVydHlTbG90ICZzbG90
KQogewogICAgIHJldHVybiBnZXRTdGF0aWNGdW5jdGlvblNsb3Q8SlNPYmplY3Q+KGV4ZWMsIEV4
ZWNTdGF0ZTo6b2JqZWN0Q29uc3RydWN0b3JUYWJsZShleGVjKSwganNDYXN0PE9iamVjdENvbnN0
cnVjdG9yKj4oY2VsbCksIHByb3BlcnR5TmFtZSwgc2xvdCk7CiB9CiAKLWJvb2wgT2JqZWN0Q29u
c3RydWN0b3I6OmdldE93blByb3BlcnR5RGVzY3JpcHRvcihKU09iamVjdCogb2JqZWN0LCBFeGVj
U3RhdGUqIGV4ZWMsIGNvbnN0IElkZW50aWZpZXImIHByb3BlcnR5TmFtZSwgUHJvcGVydHlEZXNj
cmlwdG9yJiBkZXNjcmlwdG9yKQorYm9vbCBPYmplY3RDb25zdHJ1Y3Rvcjo6Z2V0T3duUHJvcGVy
dHlEZXNjcmlwdG9yKEpTT2JqZWN0KiBvYmplY3QsIEV4ZWNTdGF0ZSogZXhlYywgUHJvcGVydHlO
YW1lIHByb3BlcnR5TmFtZSwgUHJvcGVydHlEZXNjcmlwdG9yJiBkZXNjcmlwdG9yKQogewogICAg
IHJldHVybiBnZXRTdGF0aWNGdW5jdGlvbkRlc2NyaXB0b3I8SlNPYmplY3Q+KGV4ZWMsIEV4ZWNT
dGF0ZTo6b2JqZWN0Q29uc3RydWN0b3JUYWJsZShleGVjKSwganNDYXN0PE9iamVjdENvbnN0cnVj
dG9yKj4ob2JqZWN0KSwgcHJvcGVydHlOYW1lLCBkZXNjcmlwdG9yKTsKIH0KSW5kZXg6IFNvdXJj
ZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL09iamVjdENvbnN0cnVjdG9yLmgKPT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQot
LS0gU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvT2JqZWN0Q29uc3RydWN0b3IuaAkocmV2
aXNpb24gMTE2NjY3KQorKysgU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvT2JqZWN0Q29u
c3RydWN0b3IuaAkod29ya2luZyBjb3B5KQpAQCAtMzgsOCArMzgsOCBAQCBuYW1lc3BhY2UgSlND
IHsKICAgICAgICAgICAgIHJldHVybiBjb25zdHJ1Y3RvcjsKICAgICAgICAgfQogCi0gICAgICAg
IHN0YXRpYyBib29sIGdldE93blByb3BlcnR5U2xvdChKU0NlbGwqLCBFeGVjU3RhdGUqLCBjb25z
dCBJZGVudGlmaWVyJiwgUHJvcGVydHlTbG90Jik7Ci0gICAgICAgIHN0YXRpYyBib29sIGdldE93
blByb3BlcnR5RGVzY3JpcHRvcihKU09iamVjdCosIEV4ZWNTdGF0ZSosIGNvbnN0IElkZW50aWZp
ZXImLCBQcm9wZXJ0eURlc2NyaXB0b3ImKTsKKyAgICAgICAgc3RhdGljIGJvb2wgZ2V0T3duUHJv
cGVydHlTbG90KEpTQ2VsbCosIEV4ZWNTdGF0ZSosIFByb3BlcnR5TmFtZSwgUHJvcGVydHlTbG90
Jik7CisgICAgICAgIHN0YXRpYyBib29sIGdldE93blByb3BlcnR5RGVzY3JpcHRvcihKU09iamVj
dCosIEV4ZWNTdGF0ZSosIFByb3BlcnR5TmFtZSwgUHJvcGVydHlEZXNjcmlwdG9yJik7CiAKICAg
ICAgICAgc3RhdGljIGNvbnN0IENsYXNzSW5mbyBzX2luZm87CiAKSW5kZXg6IFNvdXJjZS9KYXZh
U2NyaXB0Q29yZS9ydW50aW1lL09iamVjdFByb3RvdHlwZS5jcHAKPT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291
cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvT2JqZWN0UHJvdG90eXBlLmNwcAkocmV2aXNpb24g
MTE2NjY3KQorKysgU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvT2JqZWN0UHJvdG90eXBl
LmNwcAkod29ya2luZyBjb3B5KQpAQCAtNzcsMjggKzc3LDIyIEBAIHZvaWQgT2JqZWN0UHJvdG90
eXBlOjpmaW5pc2hDcmVhdGlvbihKU0cKICAgICBBU1NFUlQoaW5oZXJpdHMoJnNfaW5mbykpOwog
fQogCi12b2lkIE9iamVjdFByb3RvdHlwZTo6cHV0KEpTQ2VsbCogY2VsbCwgRXhlY1N0YXRlKiBl
eGVjLCBjb25zdCBJZGVudGlmaWVyJiBwcm9wZXJ0eU5hbWUsIEpTVmFsdWUgdmFsdWUsIFB1dFBy
b3BlcnR5U2xvdCYgc2xvdCkKK3ZvaWQgT2JqZWN0UHJvdG90eXBlOjpwdXQoSlNDZWxsKiBjZWxs
LCBFeGVjU3RhdGUqIGV4ZWMsIFByb3BlcnR5TmFtZSBwcm9wZXJ0eU5hbWUsIEpTVmFsdWUgdmFs
dWUsIFB1dFByb3BlcnR5U2xvdCYgc2xvdCkKIHsKICAgICBPYmplY3RQcm90b3R5cGUqIHRoaXNP
YmplY3QgPSBqc0Nhc3Q8T2JqZWN0UHJvdG90eXBlKj4oY2VsbCk7CiAgICAgQmFzZTo6cHV0KGNl
bGwsIGV4ZWMsIHByb3BlcnR5TmFtZSwgdmFsdWUsIHNsb3QpOwogCi0gICAgaWYgKHRoaXNPYmpl
Y3QtPm1faGFzTm9Qcm9wZXJ0aWVzV2l0aFVJbnQzMk5hbWVzKSB7Ci0gICAgICAgIGJvb2wgaXNV
SW50MzI7Ci0gICAgICAgIHByb3BlcnR5TmFtZS50b1VJbnQzMihpc1VJbnQzMik7Ci0gICAgICAg
IHRoaXNPYmplY3QtPm1faGFzTm9Qcm9wZXJ0aWVzV2l0aFVJbnQzMk5hbWVzID0gIWlzVUludDMy
OwotICAgIH0KKyAgICBpZiAodGhpc09iamVjdC0+bV9oYXNOb1Byb3BlcnRpZXNXaXRoVUludDMy
TmFtZXMgJiYgcHJvcGVydHlOYW1lLmFzSW5kZXgoKSAhPSBQcm9wZXJ0eU5hbWU6Ok5vdEFuSW5k
ZXgpCisgICAgICAgIHRoaXNPYmplY3QtPm1faGFzTm9Qcm9wZXJ0aWVzV2l0aFVJbnQzMk5hbWVz
ID0gZmFsc2U7CiB9CiAKLWJvb2wgT2JqZWN0UHJvdG90eXBlOjpkZWZpbmVPd25Qcm9wZXJ0eShK
U09iamVjdCogb2JqZWN0LCBFeGVjU3RhdGUqIGV4ZWMsIGNvbnN0IElkZW50aWZpZXImIHByb3Bl
cnR5TmFtZSwgUHJvcGVydHlEZXNjcmlwdG9yJiBkZXNjcmlwdG9yLCBib29sIHNob3VsZFRocm93
KQorYm9vbCBPYmplY3RQcm90b3R5cGU6OmRlZmluZU93blByb3BlcnR5KEpTT2JqZWN0KiBvYmpl
Y3QsIEV4ZWNTdGF0ZSogZXhlYywgUHJvcGVydHlOYW1lIHByb3BlcnR5TmFtZSwgUHJvcGVydHlE
ZXNjcmlwdG9yJiBkZXNjcmlwdG9yLCBib29sIHNob3VsZFRocm93KQogewogICAgIE9iamVjdFBy
b3RvdHlwZSogdGhpc09iamVjdCA9IGpzQ2FzdDxPYmplY3RQcm90b3R5cGUqPihvYmplY3QpOwog
ICAgIGJvb2wgcmVzdWx0ID0gQmFzZTo6ZGVmaW5lT3duUHJvcGVydHkob2JqZWN0LCBleGVjLCBw
cm9wZXJ0eU5hbWUsIGRlc2NyaXB0b3IsIHNob3VsZFRocm93KTsKIAotICAgIGlmICh0aGlzT2Jq
ZWN0LT5tX2hhc05vUHJvcGVydGllc1dpdGhVSW50MzJOYW1lcykgewotICAgICAgICBib29sIGlz
VUludDMyOwotICAgICAgICBwcm9wZXJ0eU5hbWUudG9VSW50MzIoaXNVSW50MzIpOwotICAgICAg
ICB0aGlzT2JqZWN0LT5tX2hhc05vUHJvcGVydGllc1dpdGhVSW50MzJOYW1lcyA9ICFpc1VJbnQz
MjsKLSAgICB9CisgICAgaWYgKHRoaXNPYmplY3QtPm1faGFzTm9Qcm9wZXJ0aWVzV2l0aFVJbnQz
Mk5hbWVzICYmIHByb3BlcnR5TmFtZS5hc0luZGV4KCkgIT0gUHJvcGVydHlOYW1lOjpOb3RBbklu
ZGV4KQorICAgICAgICB0aGlzT2JqZWN0LT5tX2hhc05vUHJvcGVydGllc1dpdGhVSW50MzJOYW1l
cyA9IGZhbHNlOwogCiAgICAgcmV0dXJuIHJlc3VsdDsKIH0KQEAgLTExMSwxMiArMTA1LDEyIEBA
IGJvb2wgT2JqZWN0UHJvdG90eXBlOjpnZXRPd25Qcm9wZXJ0eVNsb3QKICAgICByZXR1cm4gQmFz
ZTo6Z2V0T3duUHJvcGVydHlTbG90QnlJbmRleCh0aGlzT2JqZWN0LCBleGVjLCBwcm9wZXJ0eU5h
bWUsIHNsb3QpOwogfQogCi1ib29sIE9iamVjdFByb3RvdHlwZTo6Z2V0T3duUHJvcGVydHlTbG90
KEpTQ2VsbCogY2VsbCwgRXhlY1N0YXRlKiBleGVjLCBjb25zdCBJZGVudGlmaWVyJiBwcm9wZXJ0
eU5hbWUsIFByb3BlcnR5U2xvdCAmc2xvdCkKK2Jvb2wgT2JqZWN0UHJvdG90eXBlOjpnZXRPd25Q
cm9wZXJ0eVNsb3QoSlNDZWxsKiBjZWxsLCBFeGVjU3RhdGUqIGV4ZWMsIFByb3BlcnR5TmFtZSBw
cm9wZXJ0eU5hbWUsIFByb3BlcnR5U2xvdCAmc2xvdCkKIHsKICAgICByZXR1cm4gZ2V0U3RhdGlj
RnVuY3Rpb25TbG90PEpTTm9uRmluYWxPYmplY3Q+KGV4ZWMsIEV4ZWNTdGF0ZTo6b2JqZWN0UHJv
dG90eXBlVGFibGUoZXhlYyksIGpzQ2FzdDxPYmplY3RQcm90b3R5cGUqPihjZWxsKSwgcHJvcGVy
dHlOYW1lLCBzbG90KTsKIH0KIAotYm9vbCBPYmplY3RQcm90b3R5cGU6OmdldE93blByb3BlcnR5
RGVzY3JpcHRvcihKU09iamVjdCogb2JqZWN0LCBFeGVjU3RhdGUqIGV4ZWMsIGNvbnN0IElkZW50
aWZpZXImIHByb3BlcnR5TmFtZSwgUHJvcGVydHlEZXNjcmlwdG9yJiBkZXNjcmlwdG9yKQorYm9v
bCBPYmplY3RQcm90b3R5cGU6OmdldE93blByb3BlcnR5RGVzY3JpcHRvcihKU09iamVjdCogb2Jq
ZWN0LCBFeGVjU3RhdGUqIGV4ZWMsIFByb3BlcnR5TmFtZSBwcm9wZXJ0eU5hbWUsIFByb3BlcnR5
RGVzY3JpcHRvciYgZGVzY3JpcHRvcikKIHsKICAgICByZXR1cm4gZ2V0U3RhdGljRnVuY3Rpb25E
ZXNjcmlwdG9yPEpTTm9uRmluYWxPYmplY3Q+KGV4ZWMsIEV4ZWNTdGF0ZTo6b2JqZWN0UHJvdG90
eXBlVGFibGUoZXhlYyksIGpzQ2FzdDxPYmplY3RQcm90b3R5cGUqPihvYmplY3QpLCBwcm9wZXJ0
eU5hbWUsIGRlc2NyaXB0b3IpOwogfQpJbmRleDogU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRp
bWUvT2JqZWN0UHJvdG90eXBlLmgKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL0phdmFTY3JpcHRDb3Jl
L3J1bnRpbWUvT2JqZWN0UHJvdG90eXBlLmgJKHJldmlzaW9uIDExNjY2NykKKysrIFNvdXJjZS9K
YXZhU2NyaXB0Q29yZS9ydW50aW1lL09iamVjdFByb3RvdHlwZS5oCSh3b3JraW5nIGNvcHkpCkBA
IC01MCwxMiArNTAsMTIgQEAgbmFtZXNwYWNlIEpTQyB7CiAKICAgICBwcml2YXRlOgogICAgICAg
ICBPYmplY3RQcm90b3R5cGUoRXhlY1N0YXRlKiwgU3RydWN0dXJlKik7Ci0gICAgICAgIHN0YXRp
YyB2b2lkIHB1dChKU0NlbGwqLCBFeGVjU3RhdGUqLCBjb25zdCBJZGVudGlmaWVyJiwgSlNWYWx1
ZSwgUHV0UHJvcGVydHlTbG90Jik7Ci0gICAgICAgIHN0YXRpYyBib29sIGRlZmluZU93blByb3Bl
cnR5KEpTT2JqZWN0KiwgRXhlY1N0YXRlKiwgY29uc3QgSWRlbnRpZmllciYgcHJvcGVydHlOYW1l
LCBQcm9wZXJ0eURlc2NyaXB0b3ImLCBib29sIHNob3VsZFRocm93KTsKKyAgICAgICAgc3RhdGlj
IHZvaWQgcHV0KEpTQ2VsbCosIEV4ZWNTdGF0ZSosIFByb3BlcnR5TmFtZSwgSlNWYWx1ZSwgUHV0
UHJvcGVydHlTbG90Jik7CisgICAgICAgIHN0YXRpYyBib29sIGRlZmluZU93blByb3BlcnR5KEpT
T2JqZWN0KiwgRXhlY1N0YXRlKiwgUHJvcGVydHlOYW1lIHByb3BlcnR5TmFtZSwgUHJvcGVydHlE
ZXNjcmlwdG9yJiwgYm9vbCBzaG91bGRUaHJvdyk7CiAKLSAgICAgICAgc3RhdGljIGJvb2wgZ2V0
T3duUHJvcGVydHlTbG90KEpTQ2VsbCosIEV4ZWNTdGF0ZSosIGNvbnN0IElkZW50aWZpZXImLCBQ
cm9wZXJ0eVNsb3QmKTsKKyAgICAgICAgc3RhdGljIGJvb2wgZ2V0T3duUHJvcGVydHlTbG90KEpT
Q2VsbCosIEV4ZWNTdGF0ZSosIFByb3BlcnR5TmFtZSwgUHJvcGVydHlTbG90Jik7CiAgICAgICAg
IHN0YXRpYyBib29sIGdldE93blByb3BlcnR5U2xvdEJ5SW5kZXgoSlNDZWxsKiwgRXhlY1N0YXRl
KiwgdW5zaWduZWQgcHJvcGVydHlOYW1lLCBQcm9wZXJ0eVNsb3QmKTsKLSAgICAgICAgc3RhdGlj
IGJvb2wgZ2V0T3duUHJvcGVydHlEZXNjcmlwdG9yKEpTT2JqZWN0KiwgRXhlY1N0YXRlKiwgY29u
c3QgSWRlbnRpZmllciYsIFByb3BlcnR5RGVzY3JpcHRvciYpOworICAgICAgICBzdGF0aWMgYm9v
bCBnZXRPd25Qcm9wZXJ0eURlc2NyaXB0b3IoSlNPYmplY3QqLCBFeGVjU3RhdGUqLCBQcm9wZXJ0
eU5hbWUsIFByb3BlcnR5RGVzY3JpcHRvciYpOwogCiAgICAgICAgIGJvb2wgbV9oYXNOb1Byb3Bl
cnRpZXNXaXRoVUludDMyTmFtZXM7CiAgICAgfTsKSW5kZXg6IFNvdXJjZS9KYXZhU2NyaXB0Q29y
ZS9ydW50aW1lL1Byb3BlcnR5U2xvdC5oCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9KYXZhU2NyaXB0
Q29yZS9ydW50aW1lL1Byb3BlcnR5U2xvdC5oCShyZXZpc2lvbiAxMTY2NjcpCisrKyBTb3VyY2Uv
SmF2YVNjcmlwdENvcmUvcnVudGltZS9Qcm9wZXJ0eVNsb3QuaAkod29ya2luZyBjb3B5KQpAQCAt
MjEsOCArMjEsOCBAQAogI2lmbmRlZiBQcm9wZXJ0eVNsb3RfaAogI2RlZmluZSBQcm9wZXJ0eVNs
b3RfaAogCi0jaW5jbHVkZSAiSWRlbnRpZmllci5oIgogI2luY2x1ZGUgIkpTVmFsdWUuaCIKKyNp
bmNsdWRlICJQcm9wZXJ0eU5hbWUuaCIKICNpbmNsdWRlICJSZWdpc3Rlci5oIgogI2luY2x1ZGUg
PHd0Zi9Bc3NlcnRpb25zLmg+CiAjaW5jbHVkZSA8d3RmL05vdEZvdW5kLmg+CkBAIC02MSwxMCAr
NjEsMTAgQEAgbmFtZXNwYWNlIEpTQyB7CiAgICAgICAgICAgICBjbGVhclZhbHVlKCk7CiAgICAg
ICAgIH0KIAotICAgICAgICB0eXBlZGVmIEpTVmFsdWUgKCpHZXRWYWx1ZUZ1bmMpKEV4ZWNTdGF0
ZSosIEpTVmFsdWUgc2xvdEJhc2UsIGNvbnN0IElkZW50aWZpZXImKTsKKyAgICAgICAgdHlwZWRl
ZiBKU1ZhbHVlICgqR2V0VmFsdWVGdW5jKShFeGVjU3RhdGUqLCBKU1ZhbHVlIHNsb3RCYXNlLCBQ
cm9wZXJ0eU5hbWUpOwogICAgICAgICB0eXBlZGVmIEpTVmFsdWUgKCpHZXRJbmRleFZhbHVlRnVu
YykoRXhlY1N0YXRlKiwgSlNWYWx1ZSBzbG90QmFzZSwgdW5zaWduZWQpOwogCi0gICAgICAgIEpT
VmFsdWUgZ2V0VmFsdWUoRXhlY1N0YXRlKiBleGVjLCBjb25zdCBJZGVudGlmaWVyJiBwcm9wZXJ0
eU5hbWUpIGNvbnN0CisgICAgICAgIEpTVmFsdWUgZ2V0VmFsdWUoRXhlY1N0YXRlKiBleGVjLCBQ
cm9wZXJ0eU5hbWUgcHJvcGVydHlOYW1lKSBjb25zdAogICAgICAgICB7CiAgICAgICAgICAgICBp
ZiAobV9nZXRWYWx1ZSA9PSBKU0NfVkFMVUVfTUFSS0VSKQogICAgICAgICAgICAgICAgIHJldHVy
biBtX3ZhbHVlOwpJbmRleDogU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvUmVnRXhwQ29u
c3RydWN0b3IuY3BwCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1l
L1JlZ0V4cENvbnN0cnVjdG9yLmNwcAkocmV2aXNpb24gMTE2NjY3KQorKysgU291cmNlL0phdmFT
Y3JpcHRDb3JlL3J1bnRpbWUvUmVnRXhwQ29uc3RydWN0b3IuY3BwCSh3b3JraW5nIGNvcHkpCkBA
IC0yOCwyMSArMjgsMjEgQEAKIAogbmFtZXNwYWNlIEpTQyB7CiAKLXN0YXRpYyBKU1ZhbHVlIHJl
Z0V4cENvbnN0cnVjdG9ySW5wdXQoRXhlY1N0YXRlKiwgSlNWYWx1ZSwgY29uc3QgSWRlbnRpZmll
ciYpOwotc3RhdGljIEpTVmFsdWUgcmVnRXhwQ29uc3RydWN0b3JNdWx0aWxpbmUoRXhlY1N0YXRl
KiwgSlNWYWx1ZSwgY29uc3QgSWRlbnRpZmllciYpOwotc3RhdGljIEpTVmFsdWUgcmVnRXhwQ29u
c3RydWN0b3JMYXN0TWF0Y2goRXhlY1N0YXRlKiwgSlNWYWx1ZSwgY29uc3QgSWRlbnRpZmllciYp
Owotc3RhdGljIEpTVmFsdWUgcmVnRXhwQ29uc3RydWN0b3JMYXN0UGFyZW4oRXhlY1N0YXRlKiwg
SlNWYWx1ZSwgY29uc3QgSWRlbnRpZmllciYpOwotc3RhdGljIEpTVmFsdWUgcmVnRXhwQ29uc3Ry
dWN0b3JMZWZ0Q29udGV4dChFeGVjU3RhdGUqLCBKU1ZhbHVlLCBjb25zdCBJZGVudGlmaWVyJik7
Ci1zdGF0aWMgSlNWYWx1ZSByZWdFeHBDb25zdHJ1Y3RvclJpZ2h0Q29udGV4dChFeGVjU3RhdGUq
LCBKU1ZhbHVlLCBjb25zdCBJZGVudGlmaWVyJik7Ci1zdGF0aWMgSlNWYWx1ZSByZWdFeHBDb25z
dHJ1Y3RvckRvbGxhcjEoRXhlY1N0YXRlKiwgSlNWYWx1ZSwgY29uc3QgSWRlbnRpZmllciYpOwot
c3RhdGljIEpTVmFsdWUgcmVnRXhwQ29uc3RydWN0b3JEb2xsYXIyKEV4ZWNTdGF0ZSosIEpTVmFs
dWUsIGNvbnN0IElkZW50aWZpZXImKTsKLXN0YXRpYyBKU1ZhbHVlIHJlZ0V4cENvbnN0cnVjdG9y
RG9sbGFyMyhFeGVjU3RhdGUqLCBKU1ZhbHVlLCBjb25zdCBJZGVudGlmaWVyJik7Ci1zdGF0aWMg
SlNWYWx1ZSByZWdFeHBDb25zdHJ1Y3RvckRvbGxhcjQoRXhlY1N0YXRlKiwgSlNWYWx1ZSwgY29u
c3QgSWRlbnRpZmllciYpOwotc3RhdGljIEpTVmFsdWUgcmVnRXhwQ29uc3RydWN0b3JEb2xsYXI1
KEV4ZWNTdGF0ZSosIEpTVmFsdWUsIGNvbnN0IElkZW50aWZpZXImKTsKLXN0YXRpYyBKU1ZhbHVl
IHJlZ0V4cENvbnN0cnVjdG9yRG9sbGFyNihFeGVjU3RhdGUqLCBKU1ZhbHVlLCBjb25zdCBJZGVu
dGlmaWVyJik7Ci1zdGF0aWMgSlNWYWx1ZSByZWdFeHBDb25zdHJ1Y3RvckRvbGxhcjcoRXhlY1N0
YXRlKiwgSlNWYWx1ZSwgY29uc3QgSWRlbnRpZmllciYpOwotc3RhdGljIEpTVmFsdWUgcmVnRXhw
Q29uc3RydWN0b3JEb2xsYXI4KEV4ZWNTdGF0ZSosIEpTVmFsdWUsIGNvbnN0IElkZW50aWZpZXIm
KTsKLXN0YXRpYyBKU1ZhbHVlIHJlZ0V4cENvbnN0cnVjdG9yRG9sbGFyOShFeGVjU3RhdGUqLCBK
U1ZhbHVlLCBjb25zdCBJZGVudGlmaWVyJik7CitzdGF0aWMgSlNWYWx1ZSByZWdFeHBDb25zdHJ1
Y3RvcklucHV0KEV4ZWNTdGF0ZSosIEpTVmFsdWUsIFByb3BlcnR5TmFtZSk7CitzdGF0aWMgSlNW
YWx1ZSByZWdFeHBDb25zdHJ1Y3Rvck11bHRpbGluZShFeGVjU3RhdGUqLCBKU1ZhbHVlLCBQcm9w
ZXJ0eU5hbWUpOworc3RhdGljIEpTVmFsdWUgcmVnRXhwQ29uc3RydWN0b3JMYXN0TWF0Y2goRXhl
Y1N0YXRlKiwgSlNWYWx1ZSwgUHJvcGVydHlOYW1lKTsKK3N0YXRpYyBKU1ZhbHVlIHJlZ0V4cENv
bnN0cnVjdG9yTGFzdFBhcmVuKEV4ZWNTdGF0ZSosIEpTVmFsdWUsIFByb3BlcnR5TmFtZSk7Citz
dGF0aWMgSlNWYWx1ZSByZWdFeHBDb25zdHJ1Y3RvckxlZnRDb250ZXh0KEV4ZWNTdGF0ZSosIEpT
VmFsdWUsIFByb3BlcnR5TmFtZSk7CitzdGF0aWMgSlNWYWx1ZSByZWdFeHBDb25zdHJ1Y3RvclJp
Z2h0Q29udGV4dChFeGVjU3RhdGUqLCBKU1ZhbHVlLCBQcm9wZXJ0eU5hbWUpOworc3RhdGljIEpT
VmFsdWUgcmVnRXhwQ29uc3RydWN0b3JEb2xsYXIxKEV4ZWNTdGF0ZSosIEpTVmFsdWUsIFByb3Bl
cnR5TmFtZSk7CitzdGF0aWMgSlNWYWx1ZSByZWdFeHBDb25zdHJ1Y3RvckRvbGxhcjIoRXhlY1N0
YXRlKiwgSlNWYWx1ZSwgUHJvcGVydHlOYW1lKTsKK3N0YXRpYyBKU1ZhbHVlIHJlZ0V4cENvbnN0
cnVjdG9yRG9sbGFyMyhFeGVjU3RhdGUqLCBKU1ZhbHVlLCBQcm9wZXJ0eU5hbWUpOworc3RhdGlj
IEpTVmFsdWUgcmVnRXhwQ29uc3RydWN0b3JEb2xsYXI0KEV4ZWNTdGF0ZSosIEpTVmFsdWUsIFBy
b3BlcnR5TmFtZSk7CitzdGF0aWMgSlNWYWx1ZSByZWdFeHBDb25zdHJ1Y3RvckRvbGxhcjUoRXhl
Y1N0YXRlKiwgSlNWYWx1ZSwgUHJvcGVydHlOYW1lKTsKK3N0YXRpYyBKU1ZhbHVlIHJlZ0V4cENv
bnN0cnVjdG9yRG9sbGFyNihFeGVjU3RhdGUqLCBKU1ZhbHVlLCBQcm9wZXJ0eU5hbWUpOworc3Rh
dGljIEpTVmFsdWUgcmVnRXhwQ29uc3RydWN0b3JEb2xsYXI3KEV4ZWNTdGF0ZSosIEpTVmFsdWUs
IFByb3BlcnR5TmFtZSk7CitzdGF0aWMgSlNWYWx1ZSByZWdFeHBDb25zdHJ1Y3RvckRvbGxhcjgo
RXhlY1N0YXRlKiwgSlNWYWx1ZSwgUHJvcGVydHlOYW1lKTsKK3N0YXRpYyBKU1ZhbHVlIHJlZ0V4
cENvbnN0cnVjdG9yRG9sbGFyOShFeGVjU3RhdGUqLCBKU1ZhbHVlLCBQcm9wZXJ0eU5hbWUpOwog
CiBzdGF0aWMgdm9pZCBzZXRSZWdFeHBDb25zdHJ1Y3RvcklucHV0KEV4ZWNTdGF0ZSosIEpTT2Jq
ZWN0KiwgSlNWYWx1ZSk7CiBzdGF0aWMgdm9pZCBzZXRSZWdFeHBDb25zdHJ1Y3Rvck11bHRpbGlu
ZShFeGVjU3RhdGUqLCBKU09iamVjdCosIEpTVmFsdWUpOwpAQCAtOTIsNyArOTIsNyBAQCBSZWdF
eHBDb25zdHJ1Y3Rvcjo6UmVnRXhwQ29uc3RydWN0b3IoSlNHCiAKIHZvaWQgUmVnRXhwQ29uc3Ry
dWN0b3I6OmZpbmlzaENyZWF0aW9uKEV4ZWNTdGF0ZSogZXhlYywgUmVnRXhwUHJvdG90eXBlKiBy
ZWdFeHBQcm90b3R5cGUpCiB7Ci0gICAgQmFzZTo6ZmluaXNoQ3JlYXRpb24oZXhlYy0+Z2xvYmFs
RGF0YSgpLCBJZGVudGlmaWVyKGV4ZWMsICJSZWdFeHAiKSk7CisgICAgQmFzZTo6ZmluaXNoQ3Jl
YXRpb24oZXhlYy0+Z2xvYmFsRGF0YSgpLCBJZGVudGlmaWVyKGV4ZWMsICJSZWdFeHAiKS51c3Ry
aW5nKCkpOwogICAgIEFTU0VSVChpbmhlcml0cygmc19pbmZvKSk7CiAKICAgICAvLyBFQ01BIDE1
LjEwLjUuMSBSZWdFeHAucHJvdG90eXBlCkBAIC0xNTQsOTIgKzE1NCw5MiBAQCBKU1ZhbHVlIFJl
Z0V4cENvbnN0cnVjdG9yOjpnZXRSaWdodENvbnRlCiAgICAgcmV0dXJuIG1fY2FjaGVkUmVzdWx0
Lmxhc3RSZXN1bHQoZXhlYywgdGhpcyktPnJpZ2h0Q29udGV4dChleGVjKTsKIH0KICAgICAKLWJv
b2wgUmVnRXhwQ29uc3RydWN0b3I6OmdldE93blByb3BlcnR5U2xvdChKU0NlbGwqIGNlbGwsIEV4
ZWNTdGF0ZSogZXhlYywgY29uc3QgSWRlbnRpZmllciYgcHJvcGVydHlOYW1lLCBQcm9wZXJ0eVNs
b3QmIHNsb3QpCitib29sIFJlZ0V4cENvbnN0cnVjdG9yOjpnZXRPd25Qcm9wZXJ0eVNsb3QoSlND
ZWxsKiBjZWxsLCBFeGVjU3RhdGUqIGV4ZWMsIFByb3BlcnR5TmFtZSBwcm9wZXJ0eU5hbWUsIFBy
b3BlcnR5U2xvdCYgc2xvdCkKIHsKICAgICByZXR1cm4gZ2V0U3RhdGljVmFsdWVTbG90PFJlZ0V4
cENvbnN0cnVjdG9yLCBJbnRlcm5hbEZ1bmN0aW9uPihleGVjLCBFeGVjU3RhdGU6OnJlZ0V4cENv
bnN0cnVjdG9yVGFibGUoZXhlYyksIGpzQ2FzdDxSZWdFeHBDb25zdHJ1Y3Rvcio+KGNlbGwpLCBw
cm9wZXJ0eU5hbWUsIHNsb3QpOwogfQogCi1ib29sIFJlZ0V4cENvbnN0cnVjdG9yOjpnZXRPd25Q
cm9wZXJ0eURlc2NyaXB0b3IoSlNPYmplY3QqIG9iamVjdCwgRXhlY1N0YXRlKiBleGVjLCBjb25z
dCBJZGVudGlmaWVyJiBwcm9wZXJ0eU5hbWUsIFByb3BlcnR5RGVzY3JpcHRvciYgZGVzY3JpcHRv
cikKK2Jvb2wgUmVnRXhwQ29uc3RydWN0b3I6OmdldE93blByb3BlcnR5RGVzY3JpcHRvcihKU09i
amVjdCogb2JqZWN0LCBFeGVjU3RhdGUqIGV4ZWMsIFByb3BlcnR5TmFtZSBwcm9wZXJ0eU5hbWUs
IFByb3BlcnR5RGVzY3JpcHRvciYgZGVzY3JpcHRvcikKIHsKICAgICByZXR1cm4gZ2V0U3RhdGlj
VmFsdWVEZXNjcmlwdG9yPFJlZ0V4cENvbnN0cnVjdG9yLCBJbnRlcm5hbEZ1bmN0aW9uPihleGVj
LCBFeGVjU3RhdGU6OnJlZ0V4cENvbnN0cnVjdG9yVGFibGUoZXhlYyksIGpzQ2FzdDxSZWdFeHBD
b25zdHJ1Y3Rvcio+KG9iamVjdCksIHByb3BlcnR5TmFtZSwgZGVzY3JpcHRvcik7CiB9CiAKLUpT
VmFsdWUgcmVnRXhwQ29uc3RydWN0b3JEb2xsYXIxKEV4ZWNTdGF0ZSogZXhlYywgSlNWYWx1ZSBz
bG90QmFzZSwgY29uc3QgSWRlbnRpZmllciYpCitKU1ZhbHVlIHJlZ0V4cENvbnN0cnVjdG9yRG9s
bGFyMShFeGVjU3RhdGUqIGV4ZWMsIEpTVmFsdWUgc2xvdEJhc2UsIFByb3BlcnR5TmFtZSkKIHsK
ICAgICByZXR1cm4gYXNSZWdFeHBDb25zdHJ1Y3RvcihzbG90QmFzZSktPmdldEJhY2tyZWYoZXhl
YywgMSk7CiB9CiAKLUpTVmFsdWUgcmVnRXhwQ29uc3RydWN0b3JEb2xsYXIyKEV4ZWNTdGF0ZSog
ZXhlYywgSlNWYWx1ZSBzbG90QmFzZSwgY29uc3QgSWRlbnRpZmllciYpCitKU1ZhbHVlIHJlZ0V4
cENvbnN0cnVjdG9yRG9sbGFyMihFeGVjU3RhdGUqIGV4ZWMsIEpTVmFsdWUgc2xvdEJhc2UsIFBy
b3BlcnR5TmFtZSkKIHsKICAgICByZXR1cm4gYXNSZWdFeHBDb25zdHJ1Y3RvcihzbG90QmFzZSkt
PmdldEJhY2tyZWYoZXhlYywgMik7CiB9CiAKLUpTVmFsdWUgcmVnRXhwQ29uc3RydWN0b3JEb2xs
YXIzKEV4ZWNTdGF0ZSogZXhlYywgSlNWYWx1ZSBzbG90QmFzZSwgY29uc3QgSWRlbnRpZmllciYp
CitKU1ZhbHVlIHJlZ0V4cENvbnN0cnVjdG9yRG9sbGFyMyhFeGVjU3RhdGUqIGV4ZWMsIEpTVmFs
dWUgc2xvdEJhc2UsIFByb3BlcnR5TmFtZSkKIHsKICAgICByZXR1cm4gYXNSZWdFeHBDb25zdHJ1
Y3RvcihzbG90QmFzZSktPmdldEJhY2tyZWYoZXhlYywgMyk7CiB9CiAKLUpTVmFsdWUgcmVnRXhw
Q29uc3RydWN0b3JEb2xsYXI0KEV4ZWNTdGF0ZSogZXhlYywgSlNWYWx1ZSBzbG90QmFzZSwgY29u
c3QgSWRlbnRpZmllciYpCitKU1ZhbHVlIHJlZ0V4cENvbnN0cnVjdG9yRG9sbGFyNChFeGVjU3Rh
dGUqIGV4ZWMsIEpTVmFsdWUgc2xvdEJhc2UsIFByb3BlcnR5TmFtZSkKIHsKICAgICByZXR1cm4g
YXNSZWdFeHBDb25zdHJ1Y3RvcihzbG90QmFzZSktPmdldEJhY2tyZWYoZXhlYywgNCk7CiB9CiAK
LUpTVmFsdWUgcmVnRXhwQ29uc3RydWN0b3JEb2xsYXI1KEV4ZWNTdGF0ZSogZXhlYywgSlNWYWx1
ZSBzbG90QmFzZSwgY29uc3QgSWRlbnRpZmllciYpCitKU1ZhbHVlIHJlZ0V4cENvbnN0cnVjdG9y
RG9sbGFyNShFeGVjU3RhdGUqIGV4ZWMsIEpTVmFsdWUgc2xvdEJhc2UsIFByb3BlcnR5TmFtZSkK
IHsKICAgICByZXR1cm4gYXNSZWdFeHBDb25zdHJ1Y3RvcihzbG90QmFzZSktPmdldEJhY2tyZWYo
ZXhlYywgNSk7CiB9CiAKLUpTVmFsdWUgcmVnRXhwQ29uc3RydWN0b3JEb2xsYXI2KEV4ZWNTdGF0
ZSogZXhlYywgSlNWYWx1ZSBzbG90QmFzZSwgY29uc3QgSWRlbnRpZmllciYpCitKU1ZhbHVlIHJl
Z0V4cENvbnN0cnVjdG9yRG9sbGFyNihFeGVjU3RhdGUqIGV4ZWMsIEpTVmFsdWUgc2xvdEJhc2Us
IFByb3BlcnR5TmFtZSkKIHsKICAgICByZXR1cm4gYXNSZWdFeHBDb25zdHJ1Y3RvcihzbG90QmFz
ZSktPmdldEJhY2tyZWYoZXhlYywgNik7CiB9CiAKLUpTVmFsdWUgcmVnRXhwQ29uc3RydWN0b3JE
b2xsYXI3KEV4ZWNTdGF0ZSogZXhlYywgSlNWYWx1ZSBzbG90QmFzZSwgY29uc3QgSWRlbnRpZmll
ciYpCitKU1ZhbHVlIHJlZ0V4cENvbnN0cnVjdG9yRG9sbGFyNyhFeGVjU3RhdGUqIGV4ZWMsIEpT
VmFsdWUgc2xvdEJhc2UsIFByb3BlcnR5TmFtZSkKIHsKICAgICByZXR1cm4gYXNSZWdFeHBDb25z
dHJ1Y3RvcihzbG90QmFzZSktPmdldEJhY2tyZWYoZXhlYywgNyk7CiB9CiAKLUpTVmFsdWUgcmVn
RXhwQ29uc3RydWN0b3JEb2xsYXI4KEV4ZWNTdGF0ZSogZXhlYywgSlNWYWx1ZSBzbG90QmFzZSwg
Y29uc3QgSWRlbnRpZmllciYpCitKU1ZhbHVlIHJlZ0V4cENvbnN0cnVjdG9yRG9sbGFyOChFeGVj
U3RhdGUqIGV4ZWMsIEpTVmFsdWUgc2xvdEJhc2UsIFByb3BlcnR5TmFtZSkKIHsKICAgICByZXR1
cm4gYXNSZWdFeHBDb25zdHJ1Y3RvcihzbG90QmFzZSktPmdldEJhY2tyZWYoZXhlYywgOCk7CiB9
CiAKLUpTVmFsdWUgcmVnRXhwQ29uc3RydWN0b3JEb2xsYXI5KEV4ZWNTdGF0ZSogZXhlYywgSlNW
YWx1ZSBzbG90QmFzZSwgY29uc3QgSWRlbnRpZmllciYpCitKU1ZhbHVlIHJlZ0V4cENvbnN0cnVj
dG9yRG9sbGFyOShFeGVjU3RhdGUqIGV4ZWMsIEpTVmFsdWUgc2xvdEJhc2UsIFByb3BlcnR5TmFt
ZSkKIHsKICAgICByZXR1cm4gYXNSZWdFeHBDb25zdHJ1Y3RvcihzbG90QmFzZSktPmdldEJhY2ty
ZWYoZXhlYywgOSk7CiB9CiAKLUpTVmFsdWUgcmVnRXhwQ29uc3RydWN0b3JJbnB1dChFeGVjU3Rh
dGUqLCBKU1ZhbHVlIHNsb3RCYXNlLCBjb25zdCBJZGVudGlmaWVyJikKK0pTVmFsdWUgcmVnRXhw
Q29uc3RydWN0b3JJbnB1dChFeGVjU3RhdGUqLCBKU1ZhbHVlIHNsb3RCYXNlLCBQcm9wZXJ0eU5h
bWUpCiB7CiAgICAgcmV0dXJuIGFzUmVnRXhwQ29uc3RydWN0b3Ioc2xvdEJhc2UpLT5pbnB1dCgp
OwogfQogCi1KU1ZhbHVlIHJlZ0V4cENvbnN0cnVjdG9yTXVsdGlsaW5lKEV4ZWNTdGF0ZSosIEpT
VmFsdWUgc2xvdEJhc2UsIGNvbnN0IElkZW50aWZpZXImKQorSlNWYWx1ZSByZWdFeHBDb25zdHJ1
Y3Rvck11bHRpbGluZShFeGVjU3RhdGUqLCBKU1ZhbHVlIHNsb3RCYXNlLCBQcm9wZXJ0eU5hbWUp
CiB7CiAgICAgcmV0dXJuIGpzQm9vbGVhbihhc1JlZ0V4cENvbnN0cnVjdG9yKHNsb3RCYXNlKS0+
bXVsdGlsaW5lKCkpOwogfQogCi1KU1ZhbHVlIHJlZ0V4cENvbnN0cnVjdG9yTGFzdE1hdGNoKEV4
ZWNTdGF0ZSogZXhlYywgSlNWYWx1ZSBzbG90QmFzZSwgY29uc3QgSWRlbnRpZmllciYpCitKU1Zh
bHVlIHJlZ0V4cENvbnN0cnVjdG9yTGFzdE1hdGNoKEV4ZWNTdGF0ZSogZXhlYywgSlNWYWx1ZSBz
bG90QmFzZSwgUHJvcGVydHlOYW1lKQogewogICAgIHJldHVybiBhc1JlZ0V4cENvbnN0cnVjdG9y
KHNsb3RCYXNlKS0+Z2V0QmFja3JlZihleGVjLCAwKTsKIH0KIAotSlNWYWx1ZSByZWdFeHBDb25z
dHJ1Y3Rvckxhc3RQYXJlbihFeGVjU3RhdGUqIGV4ZWMsIEpTVmFsdWUgc2xvdEJhc2UsIGNvbnN0
IElkZW50aWZpZXImKQorSlNWYWx1ZSByZWdFeHBDb25zdHJ1Y3Rvckxhc3RQYXJlbihFeGVjU3Rh
dGUqIGV4ZWMsIEpTVmFsdWUgc2xvdEJhc2UsIFByb3BlcnR5TmFtZSkKIHsKICAgICByZXR1cm4g
YXNSZWdFeHBDb25zdHJ1Y3RvcihzbG90QmFzZSktPmdldExhc3RQYXJlbihleGVjKTsKIH0KIAot
SlNWYWx1ZSByZWdFeHBDb25zdHJ1Y3RvckxlZnRDb250ZXh0KEV4ZWNTdGF0ZSogZXhlYywgSlNW
YWx1ZSBzbG90QmFzZSwgY29uc3QgSWRlbnRpZmllciYpCitKU1ZhbHVlIHJlZ0V4cENvbnN0cnVj
dG9yTGVmdENvbnRleHQoRXhlY1N0YXRlKiBleGVjLCBKU1ZhbHVlIHNsb3RCYXNlLCBQcm9wZXJ0
eU5hbWUpCiB7CiAgICAgcmV0dXJuIGFzUmVnRXhwQ29uc3RydWN0b3Ioc2xvdEJhc2UpLT5nZXRM
ZWZ0Q29udGV4dChleGVjKTsKIH0KIAotSlNWYWx1ZSByZWdFeHBDb25zdHJ1Y3RvclJpZ2h0Q29u
dGV4dChFeGVjU3RhdGUqIGV4ZWMsIEpTVmFsdWUgc2xvdEJhc2UsIGNvbnN0IElkZW50aWZpZXIm
KQorSlNWYWx1ZSByZWdFeHBDb25zdHJ1Y3RvclJpZ2h0Q29udGV4dChFeGVjU3RhdGUqIGV4ZWMs
IEpTVmFsdWUgc2xvdEJhc2UsIFByb3BlcnR5TmFtZSkKIHsKICAgICByZXR1cm4gYXNSZWdFeHBD
b25zdHJ1Y3RvcihzbG90QmFzZSktPmdldFJpZ2h0Q29udGV4dChleGVjKTsKIH0KIAotdm9pZCBS
ZWdFeHBDb25zdHJ1Y3Rvcjo6cHV0KEpTQ2VsbCogY2VsbCwgRXhlY1N0YXRlKiBleGVjLCBjb25z
dCBJZGVudGlmaWVyJiBwcm9wZXJ0eU5hbWUsIEpTVmFsdWUgdmFsdWUsIFB1dFByb3BlcnR5U2xv
dCYgc2xvdCkKK3ZvaWQgUmVnRXhwQ29uc3RydWN0b3I6OnB1dChKU0NlbGwqIGNlbGwsIEV4ZWNT
dGF0ZSogZXhlYywgUHJvcGVydHlOYW1lIHByb3BlcnR5TmFtZSwgSlNWYWx1ZSB2YWx1ZSwgUHV0
UHJvcGVydHlTbG90JiBzbG90KQogewogICAgIGxvb2t1cFB1dDxSZWdFeHBDb25zdHJ1Y3Rvciwg
SW50ZXJuYWxGdW5jdGlvbj4oZXhlYywgcHJvcGVydHlOYW1lLCB2YWx1ZSwgRXhlY1N0YXRlOjpy
ZWdFeHBDb25zdHJ1Y3RvclRhYmxlKGV4ZWMpLCBqc0Nhc3Q8UmVnRXhwQ29uc3RydWN0b3IqPihj
ZWxsKSwgc2xvdCk7CiB9CkluZGV4OiBTb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9SZWdF
eHBDb25zdHJ1Y3Rvci5oCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50
aW1lL1JlZ0V4cENvbnN0cnVjdG9yLmgJKHJldmlzaW9uIDExNjY2NykKKysrIFNvdXJjZS9KYXZh
U2NyaXB0Q29yZS9ydW50aW1lL1JlZ0V4cENvbnN0cnVjdG9yLmgJKHdvcmtpbmcgY29weSkKQEAg
LTQ4LDEwICs0OCwxMCBAQCBuYW1lc3BhY2UgSlNDIHsKICAgICAgICAgICAgIHJldHVybiBTdHJ1
Y3R1cmU6OmNyZWF0ZShnbG9iYWxEYXRhLCBnbG9iYWxPYmplY3QsIHByb3RvdHlwZSwgVHlwZUlu
Zm8oT2JqZWN0VHlwZSwgU3RydWN0dXJlRmxhZ3MpLCAmc19pbmZvKTsKICAgICAgICAgfQogCi0g
ICAgICAgIHN0YXRpYyB2b2lkIHB1dChKU0NlbGwqLCBFeGVjU3RhdGUqLCBjb25zdCBJZGVudGlm
aWVyJiBwcm9wZXJ0eU5hbWUsIEpTVmFsdWUsIFB1dFByb3BlcnR5U2xvdCYpOworICAgICAgICBz
dGF0aWMgdm9pZCBwdXQoSlNDZWxsKiwgRXhlY1N0YXRlKiwgUHJvcGVydHlOYW1lIHByb3BlcnR5
TmFtZSwgSlNWYWx1ZSwgUHV0UHJvcGVydHlTbG90Jik7CiAKLSAgICAgICAgc3RhdGljIGJvb2wg
Z2V0T3duUHJvcGVydHlTbG90KEpTQ2VsbCosIEV4ZWNTdGF0ZSosIGNvbnN0IElkZW50aWZpZXIm
IHByb3BlcnR5TmFtZSwgUHJvcGVydHlTbG90Jik7Ci0gICAgICAgIHN0YXRpYyBib29sIGdldE93
blByb3BlcnR5RGVzY3JpcHRvcihKU09iamVjdCosIEV4ZWNTdGF0ZSosIGNvbnN0IElkZW50aWZp
ZXImLCBQcm9wZXJ0eURlc2NyaXB0b3ImKTsKKyAgICAgICAgc3RhdGljIGJvb2wgZ2V0T3duUHJv
cGVydHlTbG90KEpTQ2VsbCosIEV4ZWNTdGF0ZSosIFByb3BlcnR5TmFtZSBwcm9wZXJ0eU5hbWUs
IFByb3BlcnR5U2xvdCYpOworICAgICAgICBzdGF0aWMgYm9vbCBnZXRPd25Qcm9wZXJ0eURlc2Ny
aXB0b3IoSlNPYmplY3QqLCBFeGVjU3RhdGUqLCBQcm9wZXJ0eU5hbWUsIFByb3BlcnR5RGVzY3Jp
cHRvciYpOwogCiAgICAgICAgIHN0YXRpYyBjb25zdCBDbGFzc0luZm8gc19pbmZvOwogCkluZGV4
OiBTb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9SZWdFeHBNYXRjaGVzQXJyYXkuaAo9PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09Ci0tLSBTb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9SZWdFeHBNYXRjaGVzQXJy
YXkuaAkocmV2aXNpb24gMTE2NjY3KQorKysgU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUv
UmVnRXhwTWF0Y2hlc0FycmF5LmgJKHdvcmtpbmcgY29weSkKQEAgLTgxLDcgKzgxLDcgQEAgbmFt
ZXNwYWNlIEpTQyB7CiAgICAgICAgICAgICAgICAgcmVpZnlNYXRjaFByb3BlcnR5KGV4ZWMpOwog
ICAgICAgICB9CiAKLSAgICAgICAgc3RhdGljIGJvb2wgZ2V0T3duUHJvcGVydHlTbG90KEpTQ2Vs
bCogY2VsbCwgRXhlY1N0YXRlKiBleGVjLCBjb25zdCBJZGVudGlmaWVyJiBwcm9wZXJ0eU5hbWUs
IFByb3BlcnR5U2xvdCYgc2xvdCkKKyAgICAgICAgc3RhdGljIGJvb2wgZ2V0T3duUHJvcGVydHlT
bG90KEpTQ2VsbCogY2VsbCwgRXhlY1N0YXRlKiBleGVjLCBQcm9wZXJ0eU5hbWUgcHJvcGVydHlO
YW1lLCBQcm9wZXJ0eVNsb3QmIHNsb3QpCiAgICAgICAgIHsKICAgICAgICAgICAgIFJlZ0V4cE1h
dGNoZXNBcnJheSogdGhpc09iamVjdCA9IGpzQ2FzdDxSZWdFeHBNYXRjaGVzQXJyYXkqPihjZWxs
KTsKICAgICAgICAgICAgIHRoaXNPYmplY3QtPnJlaWZ5QWxsUHJvcGVydGllc0lmTmVjZXNzYXJ5
KGV4ZWMpOwpAQCAtOTgsMTQgKzk4LDE0IEBAIG5hbWVzcGFjZSBKU0MgewogICAgICAgICAgICAg
cmV0dXJuIEpTQXJyYXk6OmdldE93blByb3BlcnR5U2xvdEJ5SW5kZXgodGhpc09iamVjdCwgZXhl
YywgcHJvcGVydHlOYW1lLCBzbG90KTsKICAgICAgICAgfQogCi0gICAgICAgIHN0YXRpYyBib29s
IGdldE93blByb3BlcnR5RGVzY3JpcHRvcihKU09iamVjdCogb2JqZWN0LCBFeGVjU3RhdGUqIGV4
ZWMsIGNvbnN0IElkZW50aWZpZXImIHByb3BlcnR5TmFtZSwgUHJvcGVydHlEZXNjcmlwdG9yJiBk
ZXNjcmlwdG9yKQorICAgICAgICBzdGF0aWMgYm9vbCBnZXRPd25Qcm9wZXJ0eURlc2NyaXB0b3Io
SlNPYmplY3QqIG9iamVjdCwgRXhlY1N0YXRlKiBleGVjLCBQcm9wZXJ0eU5hbWUgcHJvcGVydHlO
YW1lLCBQcm9wZXJ0eURlc2NyaXB0b3ImIGRlc2NyaXB0b3IpCiAgICAgICAgIHsKICAgICAgICAg
ICAgIFJlZ0V4cE1hdGNoZXNBcnJheSogdGhpc09iamVjdCA9IGpzQ2FzdDxSZWdFeHBNYXRjaGVz
QXJyYXkqPihvYmplY3QpOwogICAgICAgICAgICAgdGhpc09iamVjdC0+cmVpZnlBbGxQcm9wZXJ0
aWVzSWZOZWNlc3NhcnkoZXhlYyk7CiAgICAgICAgICAgICByZXR1cm4gSlNBcnJheTo6Z2V0T3du
UHJvcGVydHlEZXNjcmlwdG9yKHRoaXNPYmplY3QsIGV4ZWMsIHByb3BlcnR5TmFtZSwgZGVzY3Jp
cHRvcik7CiAgICAgICAgIH0KIAotICAgICAgICBzdGF0aWMgdm9pZCBwdXQoSlNDZWxsKiBjZWxs
LCBFeGVjU3RhdGUqIGV4ZWMsIGNvbnN0IElkZW50aWZpZXImIHByb3BlcnR5TmFtZSwgSlNWYWx1
ZSB2LCBQdXRQcm9wZXJ0eVNsb3QmIHNsb3QpCisgICAgICAgIHN0YXRpYyB2b2lkIHB1dChKU0Nl
bGwqIGNlbGwsIEV4ZWNTdGF0ZSogZXhlYywgUHJvcGVydHlOYW1lIHByb3BlcnR5TmFtZSwgSlNW
YWx1ZSB2LCBQdXRQcm9wZXJ0eVNsb3QmIHNsb3QpCiAgICAgICAgIHsKICAgICAgICAgICAgIFJl
Z0V4cE1hdGNoZXNBcnJheSogdGhpc09iamVjdCA9IGpzQ2FzdDxSZWdFeHBNYXRjaGVzQXJyYXkq
PihjZWxsKTsKICAgICAgICAgICAgIHRoaXNPYmplY3QtPnJlaWZ5QWxsUHJvcGVydGllc0lmTmVj
ZXNzYXJ5KGV4ZWMpOwpAQCAtMTE5LDcgKzExOSw3IEBAIG5hbWVzcGFjZSBKU0MgewogICAgICAg
ICAgICAgSlNBcnJheTo6cHV0QnlJbmRleCh0aGlzT2JqZWN0LCBleGVjLCBwcm9wZXJ0eU5hbWUs
IHYsIHNob3VsZFRocm93KTsKICAgICAgICAgfQogCi0gICAgICAgIHN0YXRpYyBib29sIGRlbGV0
ZVByb3BlcnR5KEpTQ2VsbCogY2VsbCwgRXhlY1N0YXRlKiBleGVjLCBjb25zdCBJZGVudGlmaWVy
JiBwcm9wZXJ0eU5hbWUpCisgICAgICAgIHN0YXRpYyBib29sIGRlbGV0ZVByb3BlcnR5KEpTQ2Vs
bCogY2VsbCwgRXhlY1N0YXRlKiBleGVjLCBQcm9wZXJ0eU5hbWUgcHJvcGVydHlOYW1lKQogICAg
ICAgICB7CiAgICAgICAgICAgICBSZWdFeHBNYXRjaGVzQXJyYXkqIHRoaXNPYmplY3QgPSBqc0Nh
c3Q8UmVnRXhwTWF0Y2hlc0FycmF5Kj4oY2VsbCk7CiAgICAgICAgICAgICB0aGlzT2JqZWN0LT5y
ZWlmeUFsbFByb3BlcnRpZXNJZk5lY2Vzc2FyeShleGVjKTsKQEAgLTE0MCw3ICsxNDAsNyBAQCBu
YW1lc3BhY2UgSlNDIHsKICAgICAgICAgICAgIEpTQXJyYXk6OmdldE93blByb3BlcnR5TmFtZXMo
dGhpc09iamVjdCwgZXhlYywgYXJyLCBtb2RlKTsKICAgICAgICAgfQogCi0gICAgICAgIHN0YXRp
YyBib29sIGRlZmluZU93blByb3BlcnR5KEpTT2JqZWN0KiBvYmplY3QsIEV4ZWNTdGF0ZSogZXhl
YywgY29uc3QgSWRlbnRpZmllciYgcHJvcGVydHlOYW1lLCBQcm9wZXJ0eURlc2NyaXB0b3ImIGRl
c2NyaXB0b3IsIGJvb2wgc2hvdWxkVGhyb3cpCisgICAgICAgIHN0YXRpYyBib29sIGRlZmluZU93
blByb3BlcnR5KEpTT2JqZWN0KiBvYmplY3QsIEV4ZWNTdGF0ZSogZXhlYywgUHJvcGVydHlOYW1l
IHByb3BlcnR5TmFtZSwgUHJvcGVydHlEZXNjcmlwdG9yJiBkZXNjcmlwdG9yLCBib29sIHNob3Vs
ZFRocm93KQogICAgICAgICB7CiAgICAgICAgICAgICBSZWdFeHBNYXRjaGVzQXJyYXkqIHRoaXNP
YmplY3QgPSBqc0Nhc3Q8UmVnRXhwTWF0Y2hlc0FycmF5Kj4ob2JqZWN0KTsKICAgICAgICAgICAg
IHRoaXNPYmplY3QtPnJlaWZ5QWxsUHJvcGVydGllc0lmTmVjZXNzYXJ5KGV4ZWMpOwpJbmRleDog
U291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvUmVnRXhwT2JqZWN0LmNwcAo9PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
Ci0tLSBTb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9SZWdFeHBPYmplY3QuY3BwCShyZXZp
c2lvbiAxMTY2NjcpCisrKyBTb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9SZWdFeHBPYmpl
Y3QuY3BwCSh3b3JraW5nIGNvcHkpCkBAIC0zNywxMCArMzcsMTAgQEAKIAogbmFtZXNwYWNlIEpT
QyB7CiAKLXN0YXRpYyBKU1ZhbHVlIHJlZ0V4cE9iamVjdEdsb2JhbChFeGVjU3RhdGUqLCBKU1Zh
bHVlLCBjb25zdCBJZGVudGlmaWVyJik7Ci1zdGF0aWMgSlNWYWx1ZSByZWdFeHBPYmplY3RJZ25v
cmVDYXNlKEV4ZWNTdGF0ZSosIEpTVmFsdWUsIGNvbnN0IElkZW50aWZpZXImKTsKLXN0YXRpYyBK
U1ZhbHVlIHJlZ0V4cE9iamVjdE11bHRpbGluZShFeGVjU3RhdGUqLCBKU1ZhbHVlLCBjb25zdCBJ
ZGVudGlmaWVyJik7Ci1zdGF0aWMgSlNWYWx1ZSByZWdFeHBPYmplY3RTb3VyY2UoRXhlY1N0YXRl
KiwgSlNWYWx1ZSwgY29uc3QgSWRlbnRpZmllciYpOworc3RhdGljIEpTVmFsdWUgcmVnRXhwT2Jq
ZWN0R2xvYmFsKEV4ZWNTdGF0ZSosIEpTVmFsdWUsIFByb3BlcnR5TmFtZSk7CitzdGF0aWMgSlNW
YWx1ZSByZWdFeHBPYmplY3RJZ25vcmVDYXNlKEV4ZWNTdGF0ZSosIEpTVmFsdWUsIFByb3BlcnR5
TmFtZSk7CitzdGF0aWMgSlNWYWx1ZSByZWdFeHBPYmplY3RNdWx0aWxpbmUoRXhlY1N0YXRlKiwg
SlNWYWx1ZSwgUHJvcGVydHlOYW1lKTsKK3N0YXRpYyBKU1ZhbHVlIHJlZ0V4cE9iamVjdFNvdXJj
ZShFeGVjU3RhdGUqLCBKU1ZhbHVlLCBQcm9wZXJ0eU5hbWUpOwogCiB9IC8vIG5hbWVzcGFjZSBK
U0MKIApAQCAtODgsNyArODgsNyBAQCB2b2lkIFJlZ0V4cE9iamVjdDo6dmlzaXRDaGlsZHJlbihK
U0NlbGwqCiAgICAgICAgIHZpc2l0b3IuYXBwZW5kKCZ0aGlzT2JqZWN0LT5tX2xhc3RJbmRleCk7
CiB9CiAKLWJvb2wgUmVnRXhwT2JqZWN0OjpnZXRPd25Qcm9wZXJ0eVNsb3QoSlNDZWxsKiBjZWxs
LCBFeGVjU3RhdGUqIGV4ZWMsIGNvbnN0IElkZW50aWZpZXImIHByb3BlcnR5TmFtZSwgUHJvcGVy
dHlTbG90JiBzbG90KQorYm9vbCBSZWdFeHBPYmplY3Q6OmdldE93blByb3BlcnR5U2xvdChKU0Nl
bGwqIGNlbGwsIEV4ZWNTdGF0ZSogZXhlYywgUHJvcGVydHlOYW1lIHByb3BlcnR5TmFtZSwgUHJv
cGVydHlTbG90JiBzbG90KQogewogICAgIGlmIChwcm9wZXJ0eU5hbWUgPT0gZXhlYy0+cHJvcGVy
dHlOYW1lcygpLmxhc3RJbmRleCkgewogICAgICAgICBSZWdFeHBPYmplY3QqIHJlZ0V4cCA9IGFz
UmVnRXhwT2JqZWN0KGNlbGwpOwpAQCAtOTgsNyArOTgsNyBAQCBib29sIFJlZ0V4cE9iamVjdDo6
Z2V0T3duUHJvcGVydHlTbG90KEpTCiAgICAgcmV0dXJuIGdldFN0YXRpY1ZhbHVlU2xvdDxSZWdF
eHBPYmplY3QsIEpTT2JqZWN0PihleGVjLCBFeGVjU3RhdGU6OnJlZ0V4cFRhYmxlKGV4ZWMpLCBq
c0Nhc3Q8UmVnRXhwT2JqZWN0Kj4oY2VsbCksIHByb3BlcnR5TmFtZSwgc2xvdCk7CiB9CiAKLWJv
b2wgUmVnRXhwT2JqZWN0OjpnZXRPd25Qcm9wZXJ0eURlc2NyaXB0b3IoSlNPYmplY3QqIG9iamVj
dCwgRXhlY1N0YXRlKiBleGVjLCBjb25zdCBJZGVudGlmaWVyJiBwcm9wZXJ0eU5hbWUsIFByb3Bl
cnR5RGVzY3JpcHRvciYgZGVzY3JpcHRvcikKK2Jvb2wgUmVnRXhwT2JqZWN0OjpnZXRPd25Qcm9w
ZXJ0eURlc2NyaXB0b3IoSlNPYmplY3QqIG9iamVjdCwgRXhlY1N0YXRlKiBleGVjLCBQcm9wZXJ0
eU5hbWUgcHJvcGVydHlOYW1lLCBQcm9wZXJ0eURlc2NyaXB0b3ImIGRlc2NyaXB0b3IpCiB7CiAg
ICAgaWYgKHByb3BlcnR5TmFtZSA9PSBleGVjLT5wcm9wZXJ0eU5hbWVzKCkubGFzdEluZGV4KSB7
CiAgICAgICAgIFJlZ0V4cE9iamVjdCogcmVnRXhwID0gYXNSZWdFeHBPYmplY3Qob2JqZWN0KTsK
QEAgLTEwOCw3ICsxMDgsNyBAQCBib29sIFJlZ0V4cE9iamVjdDo6Z2V0T3duUHJvcGVydHlEZXNj
cmlwCiAgICAgcmV0dXJuIGdldFN0YXRpY1ZhbHVlRGVzY3JpcHRvcjxSZWdFeHBPYmplY3QsIEpT
T2JqZWN0PihleGVjLCBFeGVjU3RhdGU6OnJlZ0V4cFRhYmxlKGV4ZWMpLCBqc0Nhc3Q8UmVnRXhw
T2JqZWN0Kj4ob2JqZWN0KSwgcHJvcGVydHlOYW1lLCBkZXNjcmlwdG9yKTsKIH0KIAotYm9vbCBS
ZWdFeHBPYmplY3Q6OmRlbGV0ZVByb3BlcnR5KEpTQ2VsbCogY2VsbCwgRXhlY1N0YXRlKiBleGVj
LCBjb25zdCBJZGVudGlmaWVyJiBwcm9wZXJ0eU5hbWUpCitib29sIFJlZ0V4cE9iamVjdDo6ZGVs
ZXRlUHJvcGVydHkoSlNDZWxsKiBjZWxsLCBFeGVjU3RhdGUqIGV4ZWMsIFByb3BlcnR5TmFtZSBw
cm9wZXJ0eU5hbWUpCiB7CiAgICAgaWYgKHByb3BlcnR5TmFtZSA9PSBleGVjLT5wcm9wZXJ0eU5h
bWVzKCkubGFzdEluZGV4KQogICAgICAgICByZXR1cm4gZmFsc2U7CkBAIC0xMzYsNyArMTM2LDcg
QEAgc3RhdGljIGJvb2wgcmVqZWN0KEV4ZWNTdGF0ZSogZXhlYywgYm9vbAogICAgIHJldHVybiBm
YWxzZTsKIH0KIAotYm9vbCBSZWdFeHBPYmplY3Q6OmRlZmluZU93blByb3BlcnR5KEpTT2JqZWN0
KiBvYmplY3QsIEV4ZWNTdGF0ZSogZXhlYywgY29uc3QgSWRlbnRpZmllciYgcHJvcGVydHlOYW1l
LCBQcm9wZXJ0eURlc2NyaXB0b3ImIGRlc2NyaXB0b3IsIGJvb2wgc2hvdWxkVGhyb3cpCitib29s
IFJlZ0V4cE9iamVjdDo6ZGVmaW5lT3duUHJvcGVydHkoSlNPYmplY3QqIG9iamVjdCwgRXhlY1N0
YXRlKiBleGVjLCBQcm9wZXJ0eU5hbWUgcHJvcGVydHlOYW1lLCBQcm9wZXJ0eURlc2NyaXB0b3Im
IGRlc2NyaXB0b3IsIGJvb2wgc2hvdWxkVGhyb3cpCiB7CiAgICAgaWYgKHByb3BlcnR5TmFtZSA9
PSBleGVjLT5wcm9wZXJ0eU5hbWVzKCkubGFzdEluZGV4KSB7CiAgICAgICAgIFJlZ0V4cE9iamVj
dCogcmVnRXhwID0gYXNSZWdFeHBPYmplY3Qob2JqZWN0KTsKQEAgLTE2MywyMiArMTYzLDIyIEBA
IGJvb2wgUmVnRXhwT2JqZWN0OjpkZWZpbmVPd25Qcm9wZXJ0eShKU08KICAgICByZXR1cm4gQmFz
ZTo6ZGVmaW5lT3duUHJvcGVydHkob2JqZWN0LCBleGVjLCBwcm9wZXJ0eU5hbWUsIGRlc2NyaXB0
b3IsIHNob3VsZFRocm93KTsKIH0KIAotSlNWYWx1ZSByZWdFeHBPYmplY3RHbG9iYWwoRXhlY1N0
YXRlKiwgSlNWYWx1ZSBzbG90QmFzZSwgY29uc3QgSWRlbnRpZmllciYpCitKU1ZhbHVlIHJlZ0V4
cE9iamVjdEdsb2JhbChFeGVjU3RhdGUqLCBKU1ZhbHVlIHNsb3RCYXNlLCBQcm9wZXJ0eU5hbWUp
CiB7CiAgICAgcmV0dXJuIGpzQm9vbGVhbihhc1JlZ0V4cE9iamVjdChzbG90QmFzZSktPnJlZ0V4
cCgpLT5nbG9iYWwoKSk7CiB9CiAKLUpTVmFsdWUgcmVnRXhwT2JqZWN0SWdub3JlQ2FzZShFeGVj
U3RhdGUqLCBKU1ZhbHVlIHNsb3RCYXNlLCBjb25zdCBJZGVudGlmaWVyJikKK0pTVmFsdWUgcmVn
RXhwT2JqZWN0SWdub3JlQ2FzZShFeGVjU3RhdGUqLCBKU1ZhbHVlIHNsb3RCYXNlLCBQcm9wZXJ0
eU5hbWUpCiB7CiAgICAgcmV0dXJuIGpzQm9vbGVhbihhc1JlZ0V4cE9iamVjdChzbG90QmFzZSkt
PnJlZ0V4cCgpLT5pZ25vcmVDYXNlKCkpOwogfQogIAotSlNWYWx1ZSByZWdFeHBPYmplY3RNdWx0
aWxpbmUoRXhlY1N0YXRlKiwgSlNWYWx1ZSBzbG90QmFzZSwgY29uc3QgSWRlbnRpZmllciYpCitK
U1ZhbHVlIHJlZ0V4cE9iamVjdE11bHRpbGluZShFeGVjU3RhdGUqLCBKU1ZhbHVlIHNsb3RCYXNl
LCBQcm9wZXJ0eU5hbWUpCiB7ICAgICAgICAgICAgCiAgICAgcmV0dXJuIGpzQm9vbGVhbihhc1Jl
Z0V4cE9iamVjdChzbG90QmFzZSktPnJlZ0V4cCgpLT5tdWx0aWxpbmUoKSk7CiB9CiAKLUpTVmFs
dWUgcmVnRXhwT2JqZWN0U291cmNlKEV4ZWNTdGF0ZSogZXhlYywgSlNWYWx1ZSBzbG90QmFzZSwg
Y29uc3QgSWRlbnRpZmllciYpCitKU1ZhbHVlIHJlZ0V4cE9iamVjdFNvdXJjZShFeGVjU3RhdGUq
IGV4ZWMsIEpTVmFsdWUgc2xvdEJhc2UsIFByb3BlcnR5TmFtZSkKIHsKICAgICBVU3RyaW5nIHBh
dHRlcm4gPSBhc1JlZ0V4cE9iamVjdChzbG90QmFzZSktPnJlZ0V4cCgpLT5wYXR0ZXJuKCk7CiAg
ICAgdW5zaWduZWQgbGVuZ3RoID0gcGF0dGVybi5sZW5ndGgoKTsKQEAgLTI2OCw3ICsyNjgsNyBA
QCBKU1ZhbHVlIHJlZ0V4cE9iamVjdFNvdXJjZShFeGVjU3RhdGUqIGV4CiAgICAgcmV0dXJuIGpz
U3RyaW5nKGV4ZWMsIHJlc3VsdC50b1VTdHJpbmcoKSk7CiB9CiAKLXZvaWQgUmVnRXhwT2JqZWN0
OjpwdXQoSlNDZWxsKiBjZWxsLCBFeGVjU3RhdGUqIGV4ZWMsIGNvbnN0IElkZW50aWZpZXImIHBy
b3BlcnR5TmFtZSwgSlNWYWx1ZSB2YWx1ZSwgUHV0UHJvcGVydHlTbG90JiBzbG90KQordm9pZCBS
ZWdFeHBPYmplY3Q6OnB1dChKU0NlbGwqIGNlbGwsIEV4ZWNTdGF0ZSogZXhlYywgUHJvcGVydHlO
YW1lIHByb3BlcnR5TmFtZSwgSlNWYWx1ZSB2YWx1ZSwgUHV0UHJvcGVydHlTbG90JiBzbG90KQog
ewogICAgIGlmIChwcm9wZXJ0eU5hbWUgPT0gZXhlYy0+cHJvcGVydHlOYW1lcygpLmxhc3RJbmRl
eCkgewogICAgICAgICBhc1JlZ0V4cE9iamVjdChjZWxsKS0+c2V0TGFzdEluZGV4KGV4ZWMsIHZh
bHVlLCBzbG90LmlzU3RyaWN0TW9kZSgpKTsKSW5kZXg6IFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9y
dW50aW1lL1JlZ0V4cE9iamVjdC5oCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9KYXZhU2NyaXB0Q29y
ZS9ydW50aW1lL1JlZ0V4cE9iamVjdC5oCShyZXZpc2lvbiAxMTY2NjcpCisrKyBTb3VyY2UvSmF2
YVNjcmlwdENvcmUvcnVudGltZS9SZWdFeHBPYmplY3QuaAkod29ya2luZyBjb3B5KQpAQCAtNzAs
OSArNzAsOSBAQCBuYW1lc3BhY2UgSlNDIHsKICAgICAgICAgYm9vbCB0ZXN0KEV4ZWNTdGF0ZSog
ZXhlYywgSlNTdHJpbmcqIHN0cmluZykgeyByZXR1cm4gbWF0Y2goZXhlYywgc3RyaW5nKTsgfQog
ICAgICAgICBKU1ZhbHVlIGV4ZWMoRXhlY1N0YXRlKiwgSlNTdHJpbmcqKTsKIAotICAgICAgICBz
dGF0aWMgYm9vbCBnZXRPd25Qcm9wZXJ0eVNsb3QoSlNDZWxsKiwgRXhlY1N0YXRlKiwgY29uc3Qg
SWRlbnRpZmllciYgcHJvcGVydHlOYW1lLCBQcm9wZXJ0eVNsb3QmKTsKLSAgICAgICAgc3RhdGlj
IGJvb2wgZ2V0T3duUHJvcGVydHlEZXNjcmlwdG9yKEpTT2JqZWN0KiwgRXhlY1N0YXRlKiwgY29u
c3QgSWRlbnRpZmllciYsIFByb3BlcnR5RGVzY3JpcHRvciYpOwotICAgICAgICBzdGF0aWMgdm9p
ZCBwdXQoSlNDZWxsKiwgRXhlY1N0YXRlKiwgY29uc3QgSWRlbnRpZmllciYgcHJvcGVydHlOYW1l
LCBKU1ZhbHVlLCBQdXRQcm9wZXJ0eVNsb3QmKTsKKyAgICAgICAgc3RhdGljIGJvb2wgZ2V0T3du
UHJvcGVydHlTbG90KEpTQ2VsbCosIEV4ZWNTdGF0ZSosIFByb3BlcnR5TmFtZSBwcm9wZXJ0eU5h
bWUsIFByb3BlcnR5U2xvdCYpOworICAgICAgICBzdGF0aWMgYm9vbCBnZXRPd25Qcm9wZXJ0eURl
c2NyaXB0b3IoSlNPYmplY3QqLCBFeGVjU3RhdGUqLCBQcm9wZXJ0eU5hbWUsIFByb3BlcnR5RGVz
Y3JpcHRvciYpOworICAgICAgICBzdGF0aWMgdm9pZCBwdXQoSlNDZWxsKiwgRXhlY1N0YXRlKiwg
UHJvcGVydHlOYW1lIHByb3BlcnR5TmFtZSwgSlNWYWx1ZSwgUHV0UHJvcGVydHlTbG90Jik7CiAK
ICAgICAgICAgc3RhdGljIEpTX0VYUE9SVERBVEEgY29uc3QgQ2xhc3NJbmZvIHNfaW5mbzsKIApA
QCAtODksMTAgKzg5LDEwIEBAIG5hbWVzcGFjZSBKU0MgewogCiAgICAgICAgIHN0YXRpYyB2b2lk
IHZpc2l0Q2hpbGRyZW4oSlNDZWxsKiwgU2xvdFZpc2l0b3ImKTsKIAotICAgICAgICBKU19FWFBP
UlRfUFJJVkFURSBzdGF0aWMgYm9vbCBkZWxldGVQcm9wZXJ0eShKU0NlbGwqLCBFeGVjU3RhdGUq
LCBjb25zdCBJZGVudGlmaWVyJiBwcm9wZXJ0eU5hbWUpOworICAgICAgICBKU19FWFBPUlRfUFJJ
VkFURSBzdGF0aWMgYm9vbCBkZWxldGVQcm9wZXJ0eShKU0NlbGwqLCBFeGVjU3RhdGUqLCBQcm9w
ZXJ0eU5hbWUgcHJvcGVydHlOYW1lKTsKICAgICAgICAgSlNfRVhQT1JUX1BSSVZBVEUgc3RhdGlj
IHZvaWQgZ2V0T3duUHJvcGVydHlOYW1lcyhKU09iamVjdCosIEV4ZWNTdGF0ZSosIFByb3BlcnR5
TmFtZUFycmF5JiwgRW51bWVyYXRpb25Nb2RlKTsKICAgICAgICAgSlNfRVhQT1JUX1BSSVZBVEUg
c3RhdGljIHZvaWQgZ2V0UHJvcGVydHlOYW1lcyhKU09iamVjdCosIEV4ZWNTdGF0ZSosIFByb3Bl
cnR5TmFtZUFycmF5JiwgRW51bWVyYXRpb25Nb2RlKTsKLSAgICAgICAgSlNfRVhQT1JUX1BSSVZB
VEUgc3RhdGljIGJvb2wgZGVmaW5lT3duUHJvcGVydHkoSlNPYmplY3QqLCBFeGVjU3RhdGUqLCBj
b25zdCBJZGVudGlmaWVyJiBwcm9wZXJ0eU5hbWUsIFByb3BlcnR5RGVzY3JpcHRvciYsIGJvb2wg
c2hvdWxkVGhyb3cpOworICAgICAgICBKU19FWFBPUlRfUFJJVkFURSBzdGF0aWMgYm9vbCBkZWZp
bmVPd25Qcm9wZXJ0eShKU09iamVjdCosIEV4ZWNTdGF0ZSosIFByb3BlcnR5TmFtZSBwcm9wZXJ0
eU5hbWUsIFByb3BlcnR5RGVzY3JpcHRvciYsIGJvb2wgc2hvdWxkVGhyb3cpOwogCiAgICAgcHJp
dmF0ZToKICAgICAgICAgTWF0Y2hSZXN1bHQgbWF0Y2goRXhlY1N0YXRlKiwgSlNTdHJpbmcqKTsK
SW5kZXg6IFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL1JlZ0V4cFByb3RvdHlwZS5jcHAK
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PQotLS0gU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvUmVnRXhwUHJvdG90
eXBlLmNwcAkocmV2aXNpb24gMTE2NjY3KQorKysgU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRp
bWUvUmVnRXhwUHJvdG90eXBlLmNwcAkod29ya2luZyBjb3B5KQpAQCAtNjcsMTIgKzY3LDEyIEBA
IFJlZ0V4cFByb3RvdHlwZTo6UmVnRXhwUHJvdG90eXBlKEpTR2xvYmEKIHsKIH0KIAotYm9vbCBS
ZWdFeHBQcm90b3R5cGU6OmdldE93blByb3BlcnR5U2xvdChKU0NlbGwqIGNlbGwsIEV4ZWNTdGF0
ZSogZXhlYywgY29uc3QgSWRlbnRpZmllciYgcHJvcGVydHlOYW1lLCBQcm9wZXJ0eVNsb3QgJnNs
b3QpCitib29sIFJlZ0V4cFByb3RvdHlwZTo6Z2V0T3duUHJvcGVydHlTbG90KEpTQ2VsbCogY2Vs
bCwgRXhlY1N0YXRlKiBleGVjLCBQcm9wZXJ0eU5hbWUgcHJvcGVydHlOYW1lLCBQcm9wZXJ0eVNs
b3QgJnNsb3QpCiB7CiAgICAgcmV0dXJuIGdldFN0YXRpY0Z1bmN0aW9uU2xvdDxSZWdFeHBPYmpl
Y3Q+KGV4ZWMsIEV4ZWNTdGF0ZTo6cmVnRXhwUHJvdG90eXBlVGFibGUoZXhlYyksIGpzQ2FzdDxS
ZWdFeHBQcm90b3R5cGUqPihjZWxsKSwgcHJvcGVydHlOYW1lLCBzbG90KTsKIH0KIAotYm9vbCBS
ZWdFeHBQcm90b3R5cGU6OmdldE93blByb3BlcnR5RGVzY3JpcHRvcihKU09iamVjdCogb2JqZWN0
LCBFeGVjU3RhdGUqIGV4ZWMsIGNvbnN0IElkZW50aWZpZXImIHByb3BlcnR5TmFtZSwgUHJvcGVy
dHlEZXNjcmlwdG9yJiBkZXNjcmlwdG9yKQorYm9vbCBSZWdFeHBQcm90b3R5cGU6OmdldE93blBy
b3BlcnR5RGVzY3JpcHRvcihKU09iamVjdCogb2JqZWN0LCBFeGVjU3RhdGUqIGV4ZWMsIFByb3Bl
cnR5TmFtZSBwcm9wZXJ0eU5hbWUsIFByb3BlcnR5RGVzY3JpcHRvciYgZGVzY3JpcHRvcikKIHsK
ICAgICByZXR1cm4gZ2V0U3RhdGljRnVuY3Rpb25EZXNjcmlwdG9yPFJlZ0V4cE9iamVjdD4oZXhl
YywgRXhlY1N0YXRlOjpyZWdFeHBQcm90b3R5cGVUYWJsZShleGVjKSwganNDYXN0PFJlZ0V4cFBy
b3RvdHlwZSo+KG9iamVjdCksIHByb3BlcnR5TmFtZSwgZGVzY3JpcHRvcik7CiB9CkluZGV4OiBT
b3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9SZWdFeHBQcm90b3R5cGUuaAo9PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
Ci0tLSBTb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9SZWdFeHBQcm90b3R5cGUuaAkocmV2
aXNpb24gMTE2NjY3KQorKysgU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvUmVnRXhwUHJv
dG90eXBlLmgJKHdvcmtpbmcgY29weSkKQEAgLTQ5LDggKzQ5LDggQEAgbmFtZXNwYWNlIEpTQyB7
CiAgICAgICAgIHN0YXRpYyBjb25zdCB1bnNpZ25lZCBTdHJ1Y3R1cmVGbGFncyA9IE92ZXJyaWRl
c0dldE93blByb3BlcnR5U2xvdCB8IFJlZ0V4cE9iamVjdDo6U3RydWN0dXJlRmxhZ3M7CiAKICAg
ICBwcml2YXRlOgotICAgICAgICBzdGF0aWMgYm9vbCBnZXRPd25Qcm9wZXJ0eVNsb3QoSlNDZWxs
KiwgRXhlY1N0YXRlKiwgY29uc3QgSWRlbnRpZmllciYsIFByb3BlcnR5U2xvdCYpOwotICAgICAg
ICBzdGF0aWMgYm9vbCBnZXRPd25Qcm9wZXJ0eURlc2NyaXB0b3IoSlNPYmplY3QqLCBFeGVjU3Rh
dGUqLCBjb25zdCBJZGVudGlmaWVyJiwgUHJvcGVydHlEZXNjcmlwdG9yJik7CisgICAgICAgIHN0
YXRpYyBib29sIGdldE93blByb3BlcnR5U2xvdChKU0NlbGwqLCBFeGVjU3RhdGUqLCBQcm9wZXJ0
eU5hbWUsIFByb3BlcnR5U2xvdCYpOworICAgICAgICBzdGF0aWMgYm9vbCBnZXRPd25Qcm9wZXJ0
eURlc2NyaXB0b3IoSlNPYmplY3QqLCBFeGVjU3RhdGUqLCBQcm9wZXJ0eU5hbWUsIFByb3BlcnR5
RGVzY3JpcHRvciYpOwogICAgIH07CiAKIH0gLy8gbmFtZXNwYWNlIEpTQwpJbmRleDogU291cmNl
L0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvU3RyaWN0RXZhbEFjdGl2YXRpb24uY3BwCj09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT0KLS0tIFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL1N0cmljdEV2YWxBY3RpdmF0aW9u
LmNwcAkocmV2aXNpb24gMTE2NjY3KQorKysgU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUv
U3RyaWN0RXZhbEFjdGl2YXRpb24uY3BwCSh3b3JraW5nIGNvcHkpCkBAIC0zNyw3ICszNyw3IEBA
IFN0cmljdEV2YWxBY3RpdmF0aW9uOjpTdHJpY3RFdmFsQWN0aXZhdGkKIHsKIH0KIAotYm9vbCBT
dHJpY3RFdmFsQWN0aXZhdGlvbjo6ZGVsZXRlUHJvcGVydHkoSlNDZWxsKiwgRXhlY1N0YXRlKiwg
Y29uc3QgSWRlbnRpZmllciYpCitib29sIFN0cmljdEV2YWxBY3RpdmF0aW9uOjpkZWxldGVQcm9w
ZXJ0eShKU0NlbGwqLCBFeGVjU3RhdGUqLCBQcm9wZXJ0eU5hbWUpCiB7CiAgICAgcmV0dXJuIGZh
bHNlOwogfQpJbmRleDogU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvU3RyaWN0RXZhbEFj
dGl2YXRpb24uaAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9T
dHJpY3RFdmFsQWN0aXZhdGlvbi5oCShyZXZpc2lvbiAxMTY2NjcpCisrKyBTb3VyY2UvSmF2YVNj
cmlwdENvcmUvcnVudGltZS9TdHJpY3RFdmFsQWN0aXZhdGlvbi5oCSh3b3JraW5nIGNvcHkpCkBA
IC00MSw3ICs0MSw3IEBAIHB1YmxpYzoKICAgICAgICAgcmV0dXJuIGFjdGl2YXRpb247CiAgICAg
fQogCi0gICAgc3RhdGljIGJvb2wgZGVsZXRlUHJvcGVydHkoSlNDZWxsKiwgRXhlY1N0YXRlKiwg
Y29uc3QgSWRlbnRpZmllciYpOworICAgIHN0YXRpYyBib29sIGRlbGV0ZVByb3BlcnR5KEpTQ2Vs
bCosIEV4ZWNTdGF0ZSosIFByb3BlcnR5TmFtZSk7CiAgICAgc3RhdGljIEpTT2JqZWN0KiB0b1Ro
aXNPYmplY3QoSlNDZWxsKiwgRXhlY1N0YXRlKik7CiAKICAgICBzdGF0aWMgU3RydWN0dXJlKiBj
cmVhdGVTdHJ1Y3R1cmUoSlNHbG9iYWxEYXRhJiBnbG9iYWxEYXRhLCBKU0dsb2JhbE9iamVjdCog
Z2xvYmFsT2JqZWN0LCBKU1ZhbHVlIHByb3RvdHlwZSkKSW5kZXg6IFNvdXJjZS9KYXZhU2NyaXB0
Q29yZS9ydW50aW1lL1N0cmluZ0NvbnN0cnVjdG9yLmNwcAo9PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2Uv
SmF2YVNjcmlwdENvcmUvcnVudGltZS9TdHJpbmdDb25zdHJ1Y3Rvci5jcHAJKHJldmlzaW9uIDEx
NjY2NykKKysrIFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL1N0cmluZ0NvbnN0cnVjdG9y
LmNwcAkod29ya2luZyBjb3B5KQpAQCAtNTUsMTcgKzU1LDE3IEBAIFN0cmluZ0NvbnN0cnVjdG9y
OjpTdHJpbmdDb25zdHJ1Y3RvcihKU0cKIAogdm9pZCBTdHJpbmdDb25zdHJ1Y3Rvcjo6ZmluaXNo
Q3JlYXRpb24oRXhlY1N0YXRlKiBleGVjLCBTdHJpbmdQcm90b3R5cGUqIHN0cmluZ1Byb3RvdHlw
ZSkKIHsKLSAgICBCYXNlOjpmaW5pc2hDcmVhdGlvbihleGVjLT5nbG9iYWxEYXRhKCksIElkZW50
aWZpZXIoZXhlYywgc3RyaW5nUHJvdG90eXBlLT5jbGFzc0luZm8oKS0+Y2xhc3NOYW1lKSk7Cisg
ICAgQmFzZTo6ZmluaXNoQ3JlYXRpb24oZXhlYy0+Z2xvYmFsRGF0YSgpLCBzdHJpbmdQcm90b3R5
cGUtPmNsYXNzSW5mbygpLT5jbGFzc05hbWUpOwogICAgIHB1dERpcmVjdFdpdGhvdXRUcmFuc2l0
aW9uKGV4ZWMtPmdsb2JhbERhdGEoKSwgZXhlYy0+cHJvcGVydHlOYW1lcygpLnByb3RvdHlwZSwg
c3RyaW5nUHJvdG90eXBlLCBSZWFkT25seSB8IERvbnRFbnVtIHwgRG9udERlbGV0ZSk7CiAgICAg
cHV0RGlyZWN0V2l0aG91dFRyYW5zaXRpb24oZXhlYy0+Z2xvYmFsRGF0YSgpLCBleGVjLT5wcm9w
ZXJ0eU5hbWVzKCkubGVuZ3RoLCBqc051bWJlcigxKSwgUmVhZE9ubHkgfCBEb250RW51bSB8IERv
bnREZWxldGUpOwogfQogCi1ib29sIFN0cmluZ0NvbnN0cnVjdG9yOjpnZXRPd25Qcm9wZXJ0eVNs
b3QoSlNDZWxsKiBjZWxsLCBFeGVjU3RhdGUqIGV4ZWMsIGNvbnN0IElkZW50aWZpZXImIHByb3Bl
cnR5TmFtZSwgUHJvcGVydHlTbG90ICZzbG90KQorYm9vbCBTdHJpbmdDb25zdHJ1Y3Rvcjo6Z2V0
T3duUHJvcGVydHlTbG90KEpTQ2VsbCogY2VsbCwgRXhlY1N0YXRlKiBleGVjLCBQcm9wZXJ0eU5h
bWUgcHJvcGVydHlOYW1lLCBQcm9wZXJ0eVNsb3QgJnNsb3QpCiB7CiAgICAgcmV0dXJuIGdldFN0
YXRpY0Z1bmN0aW9uU2xvdDxJbnRlcm5hbEZ1bmN0aW9uPihleGVjLCBFeGVjU3RhdGU6OnN0cmlu
Z0NvbnN0cnVjdG9yVGFibGUoZXhlYyksIGpzQ2FzdDxTdHJpbmdDb25zdHJ1Y3Rvcio+KGNlbGwp
LCBwcm9wZXJ0eU5hbWUsIHNsb3QpOwogfQogCi1ib29sIFN0cmluZ0NvbnN0cnVjdG9yOjpnZXRP
d25Qcm9wZXJ0eURlc2NyaXB0b3IoSlNPYmplY3QqIG9iamVjdCwgRXhlY1N0YXRlKiBleGVjLCBj
b25zdCBJZGVudGlmaWVyJiBwcm9wZXJ0eU5hbWUsIFByb3BlcnR5RGVzY3JpcHRvciYgZGVzY3Jp
cHRvcikKK2Jvb2wgU3RyaW5nQ29uc3RydWN0b3I6OmdldE93blByb3BlcnR5RGVzY3JpcHRvcihK
U09iamVjdCogb2JqZWN0LCBFeGVjU3RhdGUqIGV4ZWMsIFByb3BlcnR5TmFtZSBwcm9wZXJ0eU5h
bWUsIFByb3BlcnR5RGVzY3JpcHRvciYgZGVzY3JpcHRvcikKIHsKICAgICByZXR1cm4gZ2V0U3Rh
dGljRnVuY3Rpb25EZXNjcmlwdG9yPEludGVybmFsRnVuY3Rpb24+KGV4ZWMsIEV4ZWNTdGF0ZTo6
c3RyaW5nQ29uc3RydWN0b3JUYWJsZShleGVjKSwganNDYXN0PFN0cmluZ0NvbnN0cnVjdG9yKj4o
b2JqZWN0KSwgcHJvcGVydHlOYW1lLCBkZXNjcmlwdG9yKTsKIH0KSW5kZXg6IFNvdXJjZS9KYXZh
U2NyaXB0Q29yZS9ydW50aW1lL1N0cmluZ0NvbnN0cnVjdG9yLmgKPT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291
cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvU3RyaW5nQ29uc3RydWN0b3IuaAkocmV2aXNpb24g
MTE2NjY3KQorKysgU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvU3RyaW5nQ29uc3RydWN0
b3IuaAkod29ya2luZyBjb3B5KQpAQCAtNTQsOCArNTQsOCBAQCBuYW1lc3BhY2UgSlNDIHsKICAg
ICAgICAgc3RhdGljIENvbnN0cnVjdFR5cGUgZ2V0Q29uc3RydWN0RGF0YShKU0NlbGwqLCBDb25z
dHJ1Y3REYXRhJik7CiAgICAgICAgIHN0YXRpYyBDYWxsVHlwZSBnZXRDYWxsRGF0YShKU0NlbGwq
LCBDYWxsRGF0YSYpOwogCi0gICAgICAgIHN0YXRpYyBib29sIGdldE93blByb3BlcnR5U2xvdChK
U0NlbGwqLCBFeGVjU3RhdGUqLCBjb25zdCBJZGVudGlmaWVyJiwgUHJvcGVydHlTbG90Jik7Ci0g
ICAgICAgIHN0YXRpYyBib29sIGdldE93blByb3BlcnR5RGVzY3JpcHRvcihKU09iamVjdCosIEV4
ZWNTdGF0ZSosIGNvbnN0IElkZW50aWZpZXImLCBQcm9wZXJ0eURlc2NyaXB0b3ImKTsKKyAgICAg
ICAgc3RhdGljIGJvb2wgZ2V0T3duUHJvcGVydHlTbG90KEpTQ2VsbCosIEV4ZWNTdGF0ZSosIFBy
b3BlcnR5TmFtZSwgUHJvcGVydHlTbG90Jik7CisgICAgICAgIHN0YXRpYyBib29sIGdldE93blBy
b3BlcnR5RGVzY3JpcHRvcihKU09iamVjdCosIEV4ZWNTdGF0ZSosIFByb3BlcnR5TmFtZSwgUHJv
cGVydHlEZXNjcmlwdG9yJik7CiAgICAgfTsKIAogfSAvLyBuYW1lc3BhY2UgSlNDCkluZGV4OiBT
b3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9TdHJpbmdPYmplY3QuY3BwCj09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0K
LS0tIFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL1N0cmluZ09iamVjdC5jcHAJKHJldmlz
aW9uIDExNjY2NykKKysrIFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL1N0cmluZ09iamVj
dC5jcHAJKHdvcmtpbmcgY29weSkKQEAgLTQzLDcgKzQzLDcgQEAgdm9pZCBTdHJpbmdPYmplY3Q6
OmZpbmlzaENyZWF0aW9uKEpTR2xvYgogICAgIHNldEludGVybmFsVmFsdWUoZ2xvYmFsRGF0YSwg
c3RyaW5nKTsKIH0KIAotYm9vbCBTdHJpbmdPYmplY3Q6OmdldE93blByb3BlcnR5U2xvdChKU0Nl
bGwqIGNlbGwsIEV4ZWNTdGF0ZSogZXhlYywgY29uc3QgSWRlbnRpZmllciYgcHJvcGVydHlOYW1l
LCBQcm9wZXJ0eVNsb3QmIHNsb3QpCitib29sIFN0cmluZ09iamVjdDo6Z2V0T3duUHJvcGVydHlT
bG90KEpTQ2VsbCogY2VsbCwgRXhlY1N0YXRlKiBleGVjLCBQcm9wZXJ0eU5hbWUgcHJvcGVydHlO
YW1lLCBQcm9wZXJ0eVNsb3QmIHNsb3QpCiB7CiAgICAgU3RyaW5nT2JqZWN0KiB0aGlzT2JqZWN0
ID0ganNDYXN0PFN0cmluZ09iamVjdCo+KGNlbGwpOwogICAgIGlmICh0aGlzT2JqZWN0LT5pbnRl
cm5hbFZhbHVlKCktPmdldFN0cmluZ1Byb3BlcnR5U2xvdChleGVjLCBwcm9wZXJ0eU5hbWUsIHNs
b3QpKQpAQCAtNTksNyArNTksNyBAQCBib29sIFN0cmluZ09iamVjdDo6Z2V0T3duUHJvcGVydHlT
bG90QnlJCiAgICAgcmV0dXJuIEpTT2JqZWN0OjpnZXRPd25Qcm9wZXJ0eVNsb3QodGhpc09iamVj
dCwgZXhlYywgSWRlbnRpZmllcjo6ZnJvbShleGVjLCBwcm9wZXJ0eU5hbWUpLCBzbG90KTsKIH0K
IAotYm9vbCBTdHJpbmdPYmplY3Q6OmdldE93blByb3BlcnR5RGVzY3JpcHRvcihKU09iamVjdCog
b2JqZWN0LCBFeGVjU3RhdGUqIGV4ZWMsIGNvbnN0IElkZW50aWZpZXImIHByb3BlcnR5TmFtZSwg
UHJvcGVydHlEZXNjcmlwdG9yJiBkZXNjcmlwdG9yKQorYm9vbCBTdHJpbmdPYmplY3Q6OmdldE93
blByb3BlcnR5RGVzY3JpcHRvcihKU09iamVjdCogb2JqZWN0LCBFeGVjU3RhdGUqIGV4ZWMsIFBy
b3BlcnR5TmFtZSBwcm9wZXJ0eU5hbWUsIFByb3BlcnR5RGVzY3JpcHRvciYgZGVzY3JpcHRvcikK
IHsKICAgICBTdHJpbmdPYmplY3QqIHRoaXNPYmplY3QgPSBqc0Nhc3Q8U3RyaW5nT2JqZWN0Kj4o
b2JqZWN0KTsKICAgICBpZiAodGhpc09iamVjdC0+aW50ZXJuYWxWYWx1ZSgpLT5nZXRTdHJpbmdQ
cm9wZXJ0eURlc2NyaXB0b3IoZXhlYywgcHJvcGVydHlOYW1lLCBkZXNjcmlwdG9yKSkKQEAgLTY3
LDcgKzY3LDcgQEAgYm9vbCBTdHJpbmdPYmplY3Q6OmdldE93blByb3BlcnR5RGVzY3JpcAogICAg
IHJldHVybiBKU09iamVjdDo6Z2V0T3duUHJvcGVydHlEZXNjcmlwdG9yKHRoaXNPYmplY3QsIGV4
ZWMsIHByb3BlcnR5TmFtZSwgZGVzY3JpcHRvcik7CiB9CiAKLXZvaWQgU3RyaW5nT2JqZWN0Ojpw
dXQoSlNDZWxsKiBjZWxsLCBFeGVjU3RhdGUqIGV4ZWMsIGNvbnN0IElkZW50aWZpZXImIHByb3Bl
cnR5TmFtZSwgSlNWYWx1ZSB2YWx1ZSwgUHV0UHJvcGVydHlTbG90JiBzbG90KQordm9pZCBTdHJp
bmdPYmplY3Q6OnB1dChKU0NlbGwqIGNlbGwsIEV4ZWNTdGF0ZSogZXhlYywgUHJvcGVydHlOYW1l
IHByb3BlcnR5TmFtZSwgSlNWYWx1ZSB2YWx1ZSwgUHV0UHJvcGVydHlTbG90JiBzbG90KQogewog
ICAgIGlmIChwcm9wZXJ0eU5hbWUgPT0gZXhlYy0+cHJvcGVydHlOYW1lcygpLmxlbmd0aCkgewog
ICAgICAgICBpZiAoc2xvdC5pc1N0cmljdE1vZGUoKSkKQEAgLTc3LDcgKzc3LDcgQEAgdm9pZCBT
dHJpbmdPYmplY3Q6OnB1dChKU0NlbGwqIGNlbGwsIEV4ZQogICAgIEpTT2JqZWN0OjpwdXQoY2Vs
bCwgZXhlYywgcHJvcGVydHlOYW1lLCB2YWx1ZSwgc2xvdCk7CiB9CiAKLWJvb2wgU3RyaW5nT2Jq
ZWN0OjpkZWZpbmVPd25Qcm9wZXJ0eShKU09iamVjdCogb2JqZWN0LCBFeGVjU3RhdGUqIGV4ZWMs
IGNvbnN0IElkZW50aWZpZXImIHByb3BlcnR5TmFtZSwgUHJvcGVydHlEZXNjcmlwdG9yJiBkZXNj
cmlwdG9yLCBib29sIHRocm93RXhjZXB0aW9uKQorYm9vbCBTdHJpbmdPYmplY3Q6OmRlZmluZU93
blByb3BlcnR5KEpTT2JqZWN0KiBvYmplY3QsIEV4ZWNTdGF0ZSogZXhlYywgUHJvcGVydHlOYW1l
IHByb3BlcnR5TmFtZSwgUHJvcGVydHlEZXNjcmlwdG9yJiBkZXNjcmlwdG9yLCBib29sIHRocm93
RXhjZXB0aW9uKQogewogICAgIFN0cmluZ09iamVjdCogdGhpc09iamVjdCA9IGpzQ2FzdDxTdHJp
bmdPYmplY3QqPihvYmplY3QpOwogCkBAIC0xMTksMTUgKzExOSwxNiBAQCBib29sIFN0cmluZ09i
amVjdDo6ZGVmaW5lT3duUHJvcGVydHkoSlNPCiAgICAgcmV0dXJuIEJhc2U6OmRlZmluZU93blBy
b3BlcnR5KG9iamVjdCwgZXhlYywgcHJvcGVydHlOYW1lLCBkZXNjcmlwdG9yLCB0aHJvd0V4Y2Vw
dGlvbik7CiB9CiAKLWJvb2wgU3RyaW5nT2JqZWN0OjpkZWxldGVQcm9wZXJ0eShKU0NlbGwqIGNl
bGwsIEV4ZWNTdGF0ZSogZXhlYywgY29uc3QgSWRlbnRpZmllciYgcHJvcGVydHlOYW1lKQorYm9v
bCBTdHJpbmdPYmplY3Q6OmRlbGV0ZVByb3BlcnR5KEpTQ2VsbCogY2VsbCwgRXhlY1N0YXRlKiBl
eGVjLCBQcm9wZXJ0eU5hbWUgcHJvcGVydHlOYW1lKQogewogICAgIFN0cmluZ09iamVjdCogdGhp
c09iamVjdCA9IGpzQ2FzdDxTdHJpbmdPYmplY3QqPihjZWxsKTsKICAgICBpZiAocHJvcGVydHlO
YW1lID09IGV4ZWMtPnByb3BlcnR5TmFtZXMoKS5sZW5ndGgpCiAgICAgICAgIHJldHVybiBmYWxz
ZTsKLSAgICBib29sIGlzU3RyaWN0VUludDMyOwotICAgIHVuc2lnbmVkIGkgPSBwcm9wZXJ0eU5h
bWUudG9VSW50MzIoaXNTdHJpY3RVSW50MzIpOwotICAgIGlmIChpc1N0cmljdFVJbnQzMiAmJiB0
aGlzT2JqZWN0LT5pbnRlcm5hbFZhbHVlKCktPmNhbkdldEluZGV4KGkpKQorICAgIHVuc2lnbmVk
IGkgPSBwcm9wZXJ0eU5hbWUuYXNJbmRleCgpOworICAgIGlmICh0aGlzT2JqZWN0LT5pbnRlcm5h
bFZhbHVlKCktPmNhbkdldEluZGV4KGkpKSB7CisgICAgICAgIEFTU0VSVChpICE9IFByb3BlcnR5
TmFtZTo6Tm90QW5JbmRleCk7IC8vIE5vIG5lZWQgZm9yIGFuIGV4cGxpY2l0IGNoZWNrLCB0aGUg
YWJvdmUgdGVzdCB3b3VsZCBhbHdheXMgZmFpbCEKICAgICAgICAgcmV0dXJuIGZhbHNlOworICAg
IH0KICAgICByZXR1cm4gSlNPYmplY3Q6OmRlbGV0ZVByb3BlcnR5KHRoaXNPYmplY3QsIGV4ZWMs
IHByb3BlcnR5TmFtZSk7CiB9CiAKSW5kZXg6IFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1l
L1N0cmluZ09iamVjdC5oCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50
aW1lL1N0cmluZ09iamVjdC5oCShyZXZpc2lvbiAxMTY2NjcpCisrKyBTb3VyY2UvSmF2YVNjcmlw
dENvcmUvcnVudGltZS9TdHJpbmdPYmplY3QuaAkod29ya2luZyBjb3B5KQpAQCAtNDUsMTUgKzQ1
LDE1IEBAIG5hbWVzcGFjZSBKU0MgewogICAgICAgICB9CiAgICAgICAgIHN0YXRpYyBTdHJpbmdP
YmplY3QqIGNyZWF0ZShFeGVjU3RhdGUqLCBKU0dsb2JhbE9iamVjdCosIEpTU3RyaW5nKik7CiAK
LSAgICAgICAgc3RhdGljIGJvb2wgZ2V0T3duUHJvcGVydHlTbG90KEpTQ2VsbCosIEV4ZWNTdGF0
ZSosIGNvbnN0IElkZW50aWZpZXImIHByb3BlcnR5TmFtZSwgUHJvcGVydHlTbG90Jik7CisgICAg
ICAgIHN0YXRpYyBib29sIGdldE93blByb3BlcnR5U2xvdChKU0NlbGwqLCBFeGVjU3RhdGUqLCBQ
cm9wZXJ0eU5hbWUgcHJvcGVydHlOYW1lLCBQcm9wZXJ0eVNsb3QmKTsKICAgICAgICAgc3RhdGlj
IGJvb2wgZ2V0T3duUHJvcGVydHlTbG90QnlJbmRleChKU0NlbGwqLCBFeGVjU3RhdGUqLCB1bnNp
Z25lZCBwcm9wZXJ0eU5hbWUsIFByb3BlcnR5U2xvdCYpOwotICAgICAgICBzdGF0aWMgYm9vbCBn
ZXRPd25Qcm9wZXJ0eURlc2NyaXB0b3IoSlNPYmplY3QqLCBFeGVjU3RhdGUqLCBjb25zdCBJZGVu
dGlmaWVyJiwgUHJvcGVydHlEZXNjcmlwdG9yJik7CisgICAgICAgIHN0YXRpYyBib29sIGdldE93
blByb3BlcnR5RGVzY3JpcHRvcihKU09iamVjdCosIEV4ZWNTdGF0ZSosIFByb3BlcnR5TmFtZSwg
UHJvcGVydHlEZXNjcmlwdG9yJik7CiAKLSAgICAgICAgc3RhdGljIHZvaWQgcHV0KEpTQ2VsbCos
IEV4ZWNTdGF0ZSosIGNvbnN0IElkZW50aWZpZXImIHByb3BlcnR5TmFtZSwgSlNWYWx1ZSwgUHV0
UHJvcGVydHlTbG90Jik7CisgICAgICAgIHN0YXRpYyB2b2lkIHB1dChKU0NlbGwqLCBFeGVjU3Rh
dGUqLCBQcm9wZXJ0eU5hbWUgcHJvcGVydHlOYW1lLCBKU1ZhbHVlLCBQdXRQcm9wZXJ0eVNsb3Qm
KTsKIAotICAgICAgICBzdGF0aWMgYm9vbCBkZWxldGVQcm9wZXJ0eShKU0NlbGwqLCBFeGVjU3Rh
dGUqLCBjb25zdCBJZGVudGlmaWVyJiBwcm9wZXJ0eU5hbWUpOworICAgICAgICBzdGF0aWMgYm9v
bCBkZWxldGVQcm9wZXJ0eShKU0NlbGwqLCBFeGVjU3RhdGUqLCBQcm9wZXJ0eU5hbWUgcHJvcGVy
dHlOYW1lKTsKICAgICAgICAgc3RhdGljIHZvaWQgZ2V0T3duUHJvcGVydHlOYW1lcyhKU09iamVj
dCosIEV4ZWNTdGF0ZSosIFByb3BlcnR5TmFtZUFycmF5JiwgRW51bWVyYXRpb25Nb2RlKTsKLSAg
ICAgICAgc3RhdGljIGJvb2wgZGVmaW5lT3duUHJvcGVydHkoSlNPYmplY3QqLCBFeGVjU3RhdGUq
LCBjb25zdCBJZGVudGlmaWVyJiBwcm9wZXJ0eU5hbWUsIFByb3BlcnR5RGVzY3JpcHRvciYsIGJv
b2wgc2hvdWxkVGhyb3cpOworICAgICAgICBzdGF0aWMgYm9vbCBkZWZpbmVPd25Qcm9wZXJ0eShK
U09iamVjdCosIEV4ZWNTdGF0ZSosIFByb3BlcnR5TmFtZSBwcm9wZXJ0eU5hbWUsIFByb3BlcnR5
RGVzY3JpcHRvciYsIGJvb2wgc2hvdWxkVGhyb3cpOwogCiAgICAgICAgIHN0YXRpYyBjb25zdCBK
U19FWFBPUlREQVRBIENsYXNzSW5mbyBzX2luZm87CiAKSW5kZXg6IFNvdXJjZS9KYXZhU2NyaXB0
Q29yZS9ydW50aW1lL1N0cmluZ1Byb3RvdHlwZS5jcHAKPT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL0ph
dmFTY3JpcHRDb3JlL3J1bnRpbWUvU3RyaW5nUHJvdG90eXBlLmNwcAkocmV2aXNpb24gMTE2NjY3
KQorKysgU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvU3RyaW5nUHJvdG90eXBlLmNwcAko
d29ya2luZyBjb3B5KQpAQCAtMTQ3LDEyICsxNDcsMTIgQEAgdm9pZCBTdHJpbmdQcm90b3R5cGU6
OmZpbmlzaENyZWF0aW9uKEV4ZQogICAgIHB1dERpcmVjdFdpdGhvdXRUcmFuc2l0aW9uKGV4ZWMt
Pmdsb2JhbERhdGEoKSwgZXhlYy0+cHJvcGVydHlOYW1lcygpLmxlbmd0aCwganNOdW1iZXIoMCks
IERvbnREZWxldGUgfCBSZWFkT25seSB8IERvbnRFbnVtKTsKIH0KIAotYm9vbCBTdHJpbmdQcm90
b3R5cGU6OmdldE93blByb3BlcnR5U2xvdChKU0NlbGwqIGNlbGwsIEV4ZWNTdGF0ZSogZXhlYywg
Y29uc3QgSWRlbnRpZmllciYgcHJvcGVydHlOYW1lLCBQcm9wZXJ0eVNsb3QgJnNsb3QpCitib29s
IFN0cmluZ1Byb3RvdHlwZTo6Z2V0T3duUHJvcGVydHlTbG90KEpTQ2VsbCogY2VsbCwgRXhlY1N0
YXRlKiBleGVjLCBQcm9wZXJ0eU5hbWUgcHJvcGVydHlOYW1lLCBQcm9wZXJ0eVNsb3QgJnNsb3Qp
CiB7CiAgICAgcmV0dXJuIGdldFN0YXRpY0Z1bmN0aW9uU2xvdDxTdHJpbmdPYmplY3Q+KGV4ZWMs
IEV4ZWNTdGF0ZTo6c3RyaW5nVGFibGUoZXhlYyksIGpzQ2FzdDxTdHJpbmdQcm90b3R5cGUqPihj
ZWxsKSwgcHJvcGVydHlOYW1lLCBzbG90KTsKIH0KIAotYm9vbCBTdHJpbmdQcm90b3R5cGU6Omdl
dE93blByb3BlcnR5RGVzY3JpcHRvcihKU09iamVjdCogb2JqZWN0LCBFeGVjU3RhdGUqIGV4ZWMs
IGNvbnN0IElkZW50aWZpZXImIHByb3BlcnR5TmFtZSwgUHJvcGVydHlEZXNjcmlwdG9yJiBkZXNj
cmlwdG9yKQorYm9vbCBTdHJpbmdQcm90b3R5cGU6OmdldE93blByb3BlcnR5RGVzY3JpcHRvcihK
U09iamVjdCogb2JqZWN0LCBFeGVjU3RhdGUqIGV4ZWMsIFByb3BlcnR5TmFtZSBwcm9wZXJ0eU5h
bWUsIFByb3BlcnR5RGVzY3JpcHRvciYgZGVzY3JpcHRvcikKIHsKICAgICByZXR1cm4gZ2V0U3Rh
dGljRnVuY3Rpb25EZXNjcmlwdG9yPFN0cmluZ09iamVjdD4oZXhlYywgRXhlY1N0YXRlOjpzdHJp
bmdUYWJsZShleGVjKSwganNDYXN0PFN0cmluZ1Byb3RvdHlwZSo+KG9iamVjdCksIHByb3BlcnR5
TmFtZSwgZGVzY3JpcHRvcik7CiB9CkluZGV4OiBTb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGlt
ZS9TdHJpbmdQcm90b3R5cGUuaAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvSmF2YVNjcmlwdENvcmUv
cnVudGltZS9TdHJpbmdQcm90b3R5cGUuaAkocmV2aXNpb24gMTE2NjY3KQorKysgU291cmNlL0ph
dmFTY3JpcHRDb3JlL3J1bnRpbWUvU3RyaW5nUHJvdG90eXBlLmgJKHdvcmtpbmcgY29weSkKQEAg
LTQyLDggKzQyLDggQEAgbmFtZXNwYWNlIEpTQyB7CiAgICAgICAgICAgICByZXR1cm4gcHJvdG90
eXBlOwogICAgICAgICB9CiAKLSAgICAgICAgc3RhdGljIGJvb2wgZ2V0T3duUHJvcGVydHlTbG90
KEpTQ2VsbCosIEV4ZWNTdGF0ZSosIGNvbnN0IElkZW50aWZpZXImIHByb3BlcnR5TmFtZSwgUHJv
cGVydHlTbG90Jik7Ci0gICAgICAgIHN0YXRpYyBib29sIGdldE93blByb3BlcnR5RGVzY3JpcHRv
cihKU09iamVjdCosIEV4ZWNTdGF0ZSosIGNvbnN0IElkZW50aWZpZXImLCBQcm9wZXJ0eURlc2Ny
aXB0b3ImKTsKKyAgICAgICAgc3RhdGljIGJvb2wgZ2V0T3duUHJvcGVydHlTbG90KEpTQ2VsbCos
IEV4ZWNTdGF0ZSosIFByb3BlcnR5TmFtZSBwcm9wZXJ0eU5hbWUsIFByb3BlcnR5U2xvdCYpOwor
ICAgICAgICBzdGF0aWMgYm9vbCBnZXRPd25Qcm9wZXJ0eURlc2NyaXB0b3IoSlNPYmplY3QqLCBF
eGVjU3RhdGUqLCBQcm9wZXJ0eU5hbWUsIFByb3BlcnR5RGVzY3JpcHRvciYpOwogCiAgICAgICAg
IHN0YXRpYyBTdHJ1Y3R1cmUqIGNyZWF0ZVN0cnVjdHVyZShKU0dsb2JhbERhdGEmIGdsb2JhbERh
dGEsIEpTR2xvYmFsT2JqZWN0KiBnbG9iYWxPYmplY3QsIEpTVmFsdWUgcHJvdG90eXBlKQogICAg
ICAgICB7CkluZGV4OiBTb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9TdHJ1Y3R1cmUuY3Bw
Cj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT0KLS0tIFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL1N0cnVjdHVyZS5j
cHAJKHJldmlzaW9uIDExNjY2NykKKysrIFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL1N0
cnVjdHVyZS5jcHAJKHdvcmtpbmcgY29weSkKQEAgLTI2LDcgKzI2LDYgQEAKICNpbmNsdWRlICJj
b25maWcuaCIKICNpbmNsdWRlICJTdHJ1Y3R1cmUuaCIKIAotI2luY2x1ZGUgIklkZW50aWZpZXIu
aCIKICNpbmNsdWRlICJKU09iamVjdC5oIgogI2luY2x1ZGUgIkpTUHJvcGVydHlOYW1lSXRlcmF0
b3IuaCIKICNpbmNsdWRlICJMb29rdXAuaCIKQEAgLTI2Nyw3ICsyNjYsNyBAQCB2b2lkIFN0cnVj
dHVyZTo6Z3Jvd1Byb3BlcnR5U3RvcmFnZUNhcGFjCiAgICAgICAgIG1fcHJvcGVydHlTdG9yYWdl
Q2FwYWNpdHkgKj0gMjsKIH0KIAotdm9pZCBTdHJ1Y3R1cmU6OmRlc3BlY2lmeURpY3Rpb25hcnlG
dW5jdGlvbihKU0dsb2JhbERhdGEmIGdsb2JhbERhdGEsIGNvbnN0IElkZW50aWZpZXImIHByb3Bl
cnR5TmFtZSkKK3ZvaWQgU3RydWN0dXJlOjpkZXNwZWNpZnlEaWN0aW9uYXJ5RnVuY3Rpb24oSlNH
bG9iYWxEYXRhJiBnbG9iYWxEYXRhLCBjb25zdCBQcm9wZXJ0eU5hbWUmIHByb3BlcnR5TmFtZSkK
IHsKICAgICBTdHJpbmdJbXBsKiByZXAgPSBwcm9wZXJ0eU5hbWUuaW1wbCgpOwogCkBAIC0yODEs
NyArMjgwLDcgQEAgdm9pZCBTdHJ1Y3R1cmU6OmRlc3BlY2lmeURpY3Rpb25hcnlGdW5jdAogICAg
IGVudHJ5LT5zcGVjaWZpY1ZhbHVlLmNsZWFyKCk7CiB9CiAKLVN0cnVjdHVyZSogU3RydWN0dXJl
OjphZGRQcm9wZXJ0eVRyYW5zaXRpb25Ub0V4aXN0aW5nU3RydWN0dXJlKFN0cnVjdHVyZSogc3Ry
dWN0dXJlLCBjb25zdCBJZGVudGlmaWVyJiBwcm9wZXJ0eU5hbWUsIHVuc2lnbmVkIGF0dHJpYnV0
ZXMsIEpTQ2VsbCogc3BlY2lmaWNWYWx1ZSwgc2l6ZV90JiBvZmZzZXQpCitTdHJ1Y3R1cmUqIFN0
cnVjdHVyZTo6YWRkUHJvcGVydHlUcmFuc2l0aW9uVG9FeGlzdGluZ1N0cnVjdHVyZShTdHJ1Y3R1
cmUqIHN0cnVjdHVyZSwgY29uc3QgUHJvcGVydHlOYW1lJiBwcm9wZXJ0eU5hbWUsIHVuc2lnbmVk
IGF0dHJpYnV0ZXMsIEpTQ2VsbCogc3BlY2lmaWNWYWx1ZSwgc2l6ZV90JiBvZmZzZXQpCiB7CiAg
ICAgQVNTRVJUKCFzdHJ1Y3R1cmUtPmlzRGljdGlvbmFyeSgpKTsKICAgICBBU1NFUlQoc3RydWN0
dXJlLT5pc09iamVjdCgpKTsKQEAgLTI5OCw3ICsyOTcsNyBAQCBTdHJ1Y3R1cmUqIFN0cnVjdHVy
ZTo6YWRkUHJvcGVydHlUcmFuc2l0CiAgICAgcmV0dXJuIDA7CiB9CiAKLVN0cnVjdHVyZSogU3Ry
dWN0dXJlOjphZGRQcm9wZXJ0eVRyYW5zaXRpb24oSlNHbG9iYWxEYXRhJiBnbG9iYWxEYXRhLCBT
dHJ1Y3R1cmUqIHN0cnVjdHVyZSwgY29uc3QgSWRlbnRpZmllciYgcHJvcGVydHlOYW1lLCB1bnNp
Z25lZCBhdHRyaWJ1dGVzLCBKU0NlbGwqIHNwZWNpZmljVmFsdWUsIHNpemVfdCYgb2Zmc2V0KQor
U3RydWN0dXJlKiBTdHJ1Y3R1cmU6OmFkZFByb3BlcnR5VHJhbnNpdGlvbihKU0dsb2JhbERhdGEm
IGdsb2JhbERhdGEsIFN0cnVjdHVyZSogc3RydWN0dXJlLCBjb25zdCBQcm9wZXJ0eU5hbWUmIHBy
b3BlcnR5TmFtZSwgdW5zaWduZWQgYXR0cmlidXRlcywgSlNDZWxsKiBzcGVjaWZpY1ZhbHVlLCBz
aXplX3QmIG9mZnNldCkKIHsKICAgICAvLyBJZiB3ZSBoYXZlIGEgc3BlY2lmaWMgZnVuY3Rpb24s
IHdlIG1heSBoYXZlIGdvdCB0byB0aGlzIHBvaW50IGlmIHRoZXJlIGlzCiAgICAgLy8gYWxyZWFk
eSBhIHRyYW5zaXRpb24gd2l0aCB0aGUgY29ycmVjdCBwcm9wZXJ0eSBuYW1lIGFuZCBhdHRyaWJ1
dGVzLCBidXQKQEAgLTM1NSw3ICszNTQsNyBAQCBTdHJ1Y3R1cmUqIFN0cnVjdHVyZTo6YWRkUHJv
cGVydHlUcmFuc2l0CiAgICAgcmV0dXJuIHRyYW5zaXRpb247CiB9CiAKLVN0cnVjdHVyZSogU3Ry
dWN0dXJlOjpyZW1vdmVQcm9wZXJ0eVRyYW5zaXRpb24oSlNHbG9iYWxEYXRhJiBnbG9iYWxEYXRh
LCBTdHJ1Y3R1cmUqIHN0cnVjdHVyZSwgY29uc3QgSWRlbnRpZmllciYgcHJvcGVydHlOYW1lLCBz
aXplX3QmIG9mZnNldCkKK1N0cnVjdHVyZSogU3RydWN0dXJlOjpyZW1vdmVQcm9wZXJ0eVRyYW5z
aXRpb24oSlNHbG9iYWxEYXRhJiBnbG9iYWxEYXRhLCBTdHJ1Y3R1cmUqIHN0cnVjdHVyZSwgY29u
c3QgUHJvcGVydHlOYW1lJiBwcm9wZXJ0eU5hbWUsIHNpemVfdCYgb2Zmc2V0KQogewogICAgIEFT
U0VSVCghc3RydWN0dXJlLT5pc1VuY2FjaGVhYmxlRGljdGlvbmFyeSgpKTsKIApAQCAtMzgxLDcg
KzM4MCw3IEBAIFN0cnVjdHVyZSogU3RydWN0dXJlOjpjaGFuZ2VQcm90b3R5cGVUcmEKICAgICBy
ZXR1cm4gdHJhbnNpdGlvbjsKIH0KIAotU3RydWN0dXJlKiBTdHJ1Y3R1cmU6OmRlc3BlY2lmeUZ1
bmN0aW9uVHJhbnNpdGlvbihKU0dsb2JhbERhdGEmIGdsb2JhbERhdGEsIFN0cnVjdHVyZSogc3Ry
dWN0dXJlLCBjb25zdCBJZGVudGlmaWVyJiByZXBsYWNlRnVuY3Rpb24pCitTdHJ1Y3R1cmUqIFN0
cnVjdHVyZTo6ZGVzcGVjaWZ5RnVuY3Rpb25UcmFuc2l0aW9uKEpTR2xvYmFsRGF0YSYgZ2xvYmFs
RGF0YSwgU3RydWN0dXJlKiBzdHJ1Y3R1cmUsIGNvbnN0IFByb3BlcnR5TmFtZSYgcmVwbGFjZUZ1
bmN0aW9uKQogewogICAgIEFTU0VSVChzdHJ1Y3R1cmUtPm1fc3BlY2lmaWNGdW5jdGlvblRocmFz
aENvdW50IDwgbWF4U3BlY2lmaWNGdW5jdGlvblRocmFzaENvdW50KTsKICAgICBTdHJ1Y3R1cmUq
IHRyYW5zaXRpb24gPSBjcmVhdGUoZ2xvYmFsRGF0YSwgc3RydWN0dXJlKTsKQEAgLTQwNCw3ICs0
MDMsNyBAQCBTdHJ1Y3R1cmUqIFN0cnVjdHVyZTo6ZGVzcGVjaWZ5RnVuY3Rpb25UCiAgICAgcmV0
dXJuIHRyYW5zaXRpb247CiB9CiAKLVN0cnVjdHVyZSogU3RydWN0dXJlOjphdHRyaWJ1dGVDaGFu
Z2VUcmFuc2l0aW9uKEpTR2xvYmFsRGF0YSYgZ2xvYmFsRGF0YSwgU3RydWN0dXJlKiBzdHJ1Y3R1
cmUsIGNvbnN0IElkZW50aWZpZXImIHByb3BlcnR5TmFtZSwgdW5zaWduZWQgYXR0cmlidXRlcykK
K1N0cnVjdHVyZSogU3RydWN0dXJlOjphdHRyaWJ1dGVDaGFuZ2VUcmFuc2l0aW9uKEpTR2xvYmFs
RGF0YSYgZ2xvYmFsRGF0YSwgU3RydWN0dXJlKiBzdHJ1Y3R1cmUsIGNvbnN0IFByb3BlcnR5TmFt
ZSYgcHJvcGVydHlOYW1lLCB1bnNpZ25lZCBhdHRyaWJ1dGVzKQogewogICAgIGlmICghc3RydWN0
dXJlLT5pc1VuY2FjaGVhYmxlRGljdGlvbmFyeSgpKSB7CiAgICAgICAgIFN0cnVjdHVyZSogdHJh
bnNpdGlvbiA9IGNyZWF0ZShnbG9iYWxEYXRhLCBzdHJ1Y3R1cmUpOwpAQCAtNTYyLDcgKzU2MSw3
IEBAIFN0cnVjdHVyZSogU3RydWN0dXJlOjpmbGF0dGVuRGljdGlvbmFyeVMKICAgICByZXR1cm4g
dGhpczsKIH0KIAotc2l6ZV90IFN0cnVjdHVyZTo6YWRkUHJvcGVydHlXaXRob3V0VHJhbnNpdGlv
bihKU0dsb2JhbERhdGEmIGdsb2JhbERhdGEsIGNvbnN0IElkZW50aWZpZXImIHByb3BlcnR5TmFt
ZSwgdW5zaWduZWQgYXR0cmlidXRlcywgSlNDZWxsKiBzcGVjaWZpY1ZhbHVlKQorc2l6ZV90IFN0
cnVjdHVyZTo6YWRkUHJvcGVydHlXaXRob3V0VHJhbnNpdGlvbihKU0dsb2JhbERhdGEmIGdsb2Jh
bERhdGEsIGNvbnN0IFByb3BlcnR5TmFtZSYgcHJvcGVydHlOYW1lLCB1bnNpZ25lZCBhdHRyaWJ1
dGVzLCBKU0NlbGwqIHNwZWNpZmljVmFsdWUpCiB7CiAgICAgQVNTRVJUKCFtX2VudW1lcmF0aW9u
Q2FjaGUpOwogCkBAIC01NzksNyArNTc4LDcgQEAgc2l6ZV90IFN0cnVjdHVyZTo6YWRkUHJvcGVy
dHlXaXRob3V0VHJhbgogICAgIHJldHVybiBvZmZzZXQ7CiB9CiAKLXNpemVfdCBTdHJ1Y3R1cmU6
OnJlbW92ZVByb3BlcnR5V2l0aG91dFRyYW5zaXRpb24oSlNHbG9iYWxEYXRhJiBnbG9iYWxEYXRh
LCBjb25zdCBJZGVudGlmaWVyJiBwcm9wZXJ0eU5hbWUpCitzaXplX3QgU3RydWN0dXJlOjpyZW1v
dmVQcm9wZXJ0eVdpdGhvdXRUcmFuc2l0aW9uKEpTR2xvYmFsRGF0YSYgZ2xvYmFsRGF0YSwgY29u
c3QgUHJvcGVydHlOYW1lJiBwcm9wZXJ0eU5hbWUpCiB7CiAgICAgQVNTRVJUKGlzVW5jYWNoZWFi
bGVEaWN0aW9uYXJ5KCkpOwogICAgIEFTU0VSVCghbV9lbnVtZXJhdGlvbkNhY2hlKTsKQEAgLTYz
NiwxMyArNjM1LDE1IEBAIFBhc3NPd25QdHI8UHJvcGVydHlUYWJsZT4gU3RydWN0dXJlOjpjb3AK
ICAgICByZXR1cm4gYWRvcHRQdHIobV9wcm9wZXJ0eVRhYmxlID8gbmV3IFByb3BlcnR5VGFibGUo
Z2xvYmFsRGF0YSwgb3duZXIsICptX3Byb3BlcnR5VGFibGUpIDogbmV3IFByb3BlcnR5VGFibGUo
bV9vZmZzZXQgPT0gbm9PZmZzZXQgPyAwIDogbV9vZmZzZXQpKTsKIH0KIAotc2l6ZV90IFN0cnVj
dHVyZTo6Z2V0KEpTR2xvYmFsRGF0YSYgZ2xvYmFsRGF0YSwgU3RyaW5nSW1wbCogcHJvcGVydHlO
YW1lLCB1bnNpZ25lZCYgYXR0cmlidXRlcywgSlNDZWxsKiYgc3BlY2lmaWNWYWx1ZSkKK3NpemVf
dCBTdHJ1Y3R1cmU6OmdldChKU0dsb2JhbERhdGEmIGdsb2JhbERhdGEsIGNvbnN0IFByb3BlcnR5
TmFtZSYgcHJvcGVydHlOYW1lLCB1bnNpZ25lZCYgYXR0cmlidXRlcywgSlNDZWxsKiYgc3BlY2lm
aWNWYWx1ZSkKIHsKKyAgICBBU1NFUlQoc3RydWN0dXJlKCktPmNsYXNzSW5mbygpID09ICZzX2lu
Zm8pOworCiAgICAgbWF0ZXJpYWxpemVQcm9wZXJ0eU1hcElmTmVjZXNzYXJ5KGdsb2JhbERhdGEp
OwogICAgIGlmICghbV9wcm9wZXJ0eVRhYmxlKQogICAgICAgICByZXR1cm4gV1RGOjpub3RGb3Vu
ZDsKIAotICAgIFByb3BlcnR5TWFwRW50cnkqIGVudHJ5ID0gbV9wcm9wZXJ0eVRhYmxlLT5maW5k
KHByb3BlcnR5TmFtZSkuZmlyc3Q7CisgICAgUHJvcGVydHlNYXBFbnRyeSogZW50cnkgPSBtX3By
b3BlcnR5VGFibGUtPmZpbmQocHJvcGVydHlOYW1lLmltcGwoKSkuZmlyc3Q7CiAgICAgaWYgKCFl
bnRyeSkKICAgICAgICAgcmV0dXJuIFdURjo6bm90Rm91bmQ7CiAKQEAgLTY1MSwxMyArNjUyLDEy
IEBAIHNpemVfdCBTdHJ1Y3R1cmU6OmdldChKU0dsb2JhbERhdGEmIGdsb2IKICAgICByZXR1cm4g
ZW50cnktPm9mZnNldDsKIH0KIAotYm9vbCBTdHJ1Y3R1cmU6OmRlc3BlY2lmeUZ1bmN0aW9uKEpT
R2xvYmFsRGF0YSYgZ2xvYmFsRGF0YSwgY29uc3QgSWRlbnRpZmllciYgcHJvcGVydHlOYW1lKQor
Ym9vbCBTdHJ1Y3R1cmU6OmRlc3BlY2lmeUZ1bmN0aW9uKEpTR2xvYmFsRGF0YSYgZ2xvYmFsRGF0
YSwgY29uc3QgUHJvcGVydHlOYW1lJiBwcm9wZXJ0eU5hbWUpCiB7CiAgICAgbWF0ZXJpYWxpemVQ
cm9wZXJ0eU1hcElmTmVjZXNzYXJ5KGdsb2JhbERhdGEpOwogICAgIGlmICghbV9wcm9wZXJ0eVRh
YmxlKQogICAgICAgICByZXR1cm4gZmFsc2U7CiAKLSAgICBBU1NFUlQoIXByb3BlcnR5TmFtZS5p
c051bGwoKSk7CiAgICAgUHJvcGVydHlNYXBFbnRyeSogZW50cnkgPSBtX3Byb3BlcnR5VGFibGUt
PmZpbmQocHJvcGVydHlOYW1lLmltcGwoKSkuZmlyc3Q7CiAgICAgaWYgKCFlbnRyeSkKICAgICAg
ICAgcmV0dXJuIGZhbHNlOwpAQCAtNjc4LDkgKzY3OCw4IEBAIHZvaWQgU3RydWN0dXJlOjpkZXNw
ZWNpZnlBbGxGdW5jdGlvbnMoSlMKICAgICAgICAgaXRlci0+c3BlY2lmaWNWYWx1ZS5jbGVhcigp
OwogfQogCi1zaXplX3QgU3RydWN0dXJlOjpwdXRTcGVjaWZpY1ZhbHVlKEpTR2xvYmFsRGF0YSYg
Z2xvYmFsRGF0YSwgY29uc3QgSWRlbnRpZmllciYgcHJvcGVydHlOYW1lLCB1bnNpZ25lZCBhdHRy
aWJ1dGVzLCBKU0NlbGwqIHNwZWNpZmljVmFsdWUpCitzaXplX3QgU3RydWN0dXJlOjpwdXRTcGVj
aWZpY1ZhbHVlKEpTR2xvYmFsRGF0YSYgZ2xvYmFsRGF0YSwgY29uc3QgUHJvcGVydHlOYW1lJiBw
cm9wZXJ0eU5hbWUsIHVuc2lnbmVkIGF0dHJpYnV0ZXMsIEpTQ2VsbCogc3BlY2lmaWNWYWx1ZSkK
IHsKLSAgICBBU1NFUlQoIXByb3BlcnR5TmFtZS5pc051bGwoKSk7CiAgICAgQVNTRVJUKGdldChn
bG9iYWxEYXRhLCBwcm9wZXJ0eU5hbWUpID09IG5vdEZvdW5kKTsKIAogICAgIGNoZWNrQ29uc2lz
dGVuY3koKTsKQEAgLTcwNSwxMCArNzA0LDggQEAgc2l6ZV90IFN0cnVjdHVyZTo6cHV0U3BlY2lm
aWNWYWx1ZShKU0dsbwogICAgIHJldHVybiBuZXdPZmZzZXQ7CiB9CiAKLXNpemVfdCBTdHJ1Y3R1
cmU6OnJlbW92ZShjb25zdCBJZGVudGlmaWVyJiBwcm9wZXJ0eU5hbWUpCitzaXplX3QgU3RydWN0
dXJlOjpyZW1vdmUoY29uc3QgUHJvcGVydHlOYW1lJiBwcm9wZXJ0eU5hbWUpCiB7Ci0gICAgQVNT
RVJUKCFwcm9wZXJ0eU5hbWUuaXNOdWxsKCkpOwotCiAgICAgY2hlY2tDb25zaXN0ZW5jeSgpOwog
CiAgICAgU3RyaW5nSW1wbCogcmVwID0gcHJvcGVydHlOYW1lLmltcGwoKTsKSW5kZXg6IFNvdXJj
ZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL1N0cnVjdHVyZS5oCj09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJj
ZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL1N0cnVjdHVyZS5oCShyZXZpc2lvbiAxMTY2NjcpCisr
KyBTb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9TdHJ1Y3R1cmUuaAkod29ya2luZyBjb3B5
KQpAQCAtMjcsMTEgKzI3LDExIEBACiAjZGVmaW5lIFN0cnVjdHVyZV9oCiAKICNpbmNsdWRlICJD
bGFzc0luZm8uaCIKLSNpbmNsdWRlICJJZGVudGlmaWVyLmgiCiAjaW5jbHVkZSAiSlNDZWxsLmgi
CiAjaW5jbHVkZSAiSlNUeXBlLmgiCiAjaW5jbHVkZSAiSlNWYWx1ZS5oIgogI2luY2x1ZGUgIlBy
b3BlcnR5TWFwSGFzaFRhYmxlLmgiCisjaW5jbHVkZSAiUHJvcGVydHlOYW1lLmgiCiAjaW5jbHVk
ZSAiUHJvcGVydHlOYW1lQXJyYXkuaCIKICNpbmNsdWRlICJQcm90ZWN0LmgiCiAjaW5jbHVkZSAi
U3RydWN0dXJlVHJhbnNpdGlvblRhYmxlLmgiCkBAIC04NiwxMiArODYsMTIgQEAgbmFtZXNwYWNl
IEpTQyB7CiAgICAgcHVibGljOgogICAgICAgICBzdGF0aWMgdm9pZCBkdW1wU3RhdGlzdGljcygp
OwogCi0gICAgICAgIEpTX0VYUE9SVF9QUklWQVRFIHN0YXRpYyBTdHJ1Y3R1cmUqIGFkZFByb3Bl
cnR5VHJhbnNpdGlvbihKU0dsb2JhbERhdGEmLCBTdHJ1Y3R1cmUqLCBjb25zdCBJZGVudGlmaWVy
JiBwcm9wZXJ0eU5hbWUsIHVuc2lnbmVkIGF0dHJpYnV0ZXMsIEpTQ2VsbCogc3BlY2lmaWNWYWx1
ZSwgc2l6ZV90JiBvZmZzZXQpOwotICAgICAgICBKU19FWFBPUlRfUFJJVkFURSBzdGF0aWMgU3Ry
dWN0dXJlKiBhZGRQcm9wZXJ0eVRyYW5zaXRpb25Ub0V4aXN0aW5nU3RydWN0dXJlKFN0cnVjdHVy
ZSosIGNvbnN0IElkZW50aWZpZXImIHByb3BlcnR5TmFtZSwgdW5zaWduZWQgYXR0cmlidXRlcywg
SlNDZWxsKiBzcGVjaWZpY1ZhbHVlLCBzaXplX3QmIG9mZnNldCk7Ci0gICAgICAgIHN0YXRpYyBT
dHJ1Y3R1cmUqIHJlbW92ZVByb3BlcnR5VHJhbnNpdGlvbihKU0dsb2JhbERhdGEmLCBTdHJ1Y3R1
cmUqLCBjb25zdCBJZGVudGlmaWVyJiBwcm9wZXJ0eU5hbWUsIHNpemVfdCYgb2Zmc2V0KTsKKyAg
ICAgICAgSlNfRVhQT1JUX1BSSVZBVEUgc3RhdGljIFN0cnVjdHVyZSogYWRkUHJvcGVydHlUcmFu
c2l0aW9uKEpTR2xvYmFsRGF0YSYsIFN0cnVjdHVyZSosIGNvbnN0IFByb3BlcnR5TmFtZSYgcHJv
cGVydHlOYW1lLCB1bnNpZ25lZCBhdHRyaWJ1dGVzLCBKU0NlbGwqIHNwZWNpZmljVmFsdWUsIHNp
emVfdCYgb2Zmc2V0KTsKKyAgICAgICAgSlNfRVhQT1JUX1BSSVZBVEUgc3RhdGljIFN0cnVjdHVy
ZSogYWRkUHJvcGVydHlUcmFuc2l0aW9uVG9FeGlzdGluZ1N0cnVjdHVyZShTdHJ1Y3R1cmUqLCBj
b25zdCBQcm9wZXJ0eU5hbWUmIHByb3BlcnR5TmFtZSwgdW5zaWduZWQgYXR0cmlidXRlcywgSlND
ZWxsKiBzcGVjaWZpY1ZhbHVlLCBzaXplX3QmIG9mZnNldCk7CisgICAgICAgIHN0YXRpYyBTdHJ1
Y3R1cmUqIHJlbW92ZVByb3BlcnR5VHJhbnNpdGlvbihKU0dsb2JhbERhdGEmLCBTdHJ1Y3R1cmUq
LCBjb25zdCBQcm9wZXJ0eU5hbWUmIHByb3BlcnR5TmFtZSwgc2l6ZV90JiBvZmZzZXQpOwogICAg
ICAgICBKU19FWFBPUlRfUFJJVkFURSBzdGF0aWMgU3RydWN0dXJlKiBjaGFuZ2VQcm90b3R5cGVU
cmFuc2l0aW9uKEpTR2xvYmFsRGF0YSYsIFN0cnVjdHVyZSosIEpTVmFsdWUgcHJvdG90eXBlKTsK
LSAgICAgICAgSlNfRVhQT1JUX1BSSVZBVEUgc3RhdGljIFN0cnVjdHVyZSogZGVzcGVjaWZ5RnVu
Y3Rpb25UcmFuc2l0aW9uKEpTR2xvYmFsRGF0YSYsIFN0cnVjdHVyZSosIGNvbnN0IElkZW50aWZp
ZXImKTsKLSAgICAgICAgc3RhdGljIFN0cnVjdHVyZSogYXR0cmlidXRlQ2hhbmdlVHJhbnNpdGlv
bihKU0dsb2JhbERhdGEmLCBTdHJ1Y3R1cmUqLCBjb25zdCBJZGVudGlmaWVyJiBwcm9wZXJ0eU5h
bWUsIHVuc2lnbmVkIGF0dHJpYnV0ZXMpOworICAgICAgICBKU19FWFBPUlRfUFJJVkFURSBzdGF0
aWMgU3RydWN0dXJlKiBkZXNwZWNpZnlGdW5jdGlvblRyYW5zaXRpb24oSlNHbG9iYWxEYXRhJiwg
U3RydWN0dXJlKiwgY29uc3QgUHJvcGVydHlOYW1lJik7CisgICAgICAgIHN0YXRpYyBTdHJ1Y3R1
cmUqIGF0dHJpYnV0ZUNoYW5nZVRyYW5zaXRpb24oSlNHbG9iYWxEYXRhJiwgU3RydWN0dXJlKiwg
Y29uc3QgUHJvcGVydHlOYW1lJiBwcm9wZXJ0eU5hbWUsIHVuc2lnbmVkIGF0dHJpYnV0ZXMpOwog
ICAgICAgICBzdGF0aWMgU3RydWN0dXJlKiB0b0NhY2hlYWJsZURpY3Rpb25hcnlUcmFuc2l0aW9u
KEpTR2xvYmFsRGF0YSYsIFN0cnVjdHVyZSopOwogICAgICAgICBzdGF0aWMgU3RydWN0dXJlKiB0
b1VuY2FjaGVhYmxlRGljdGlvbmFyeVRyYW5zaXRpb24oSlNHbG9iYWxEYXRhJiwgU3RydWN0dXJl
Kik7CiAgICAgICAgIHN0YXRpYyBTdHJ1Y3R1cmUqIHNlYWxUcmFuc2l0aW9uKEpTR2xvYmFsRGF0
YSYsIFN0cnVjdHVyZSopOwpAQCAtMTA4LDggKzEwOCw4IEBAIG5hbWVzcGFjZSBKU0MgewogICAg
ICAgICBzdGF0aWMgdm9pZCBkZXN0cm95KEpTQ2VsbCopOwogCiAgICAgICAgIC8vIFRoZXNlIHNo
b3VsZCBiZSB1c2VkIHdpdGggY2F1dGlvbi4gIAotICAgICAgICBKU19FWFBPUlRfUFJJVkFURSBz
aXplX3QgYWRkUHJvcGVydHlXaXRob3V0VHJhbnNpdGlvbihKU0dsb2JhbERhdGEmLCBjb25zdCBJ
ZGVudGlmaWVyJiBwcm9wZXJ0eU5hbWUsIHVuc2lnbmVkIGF0dHJpYnV0ZXMsIEpTQ2VsbCogc3Bl
Y2lmaWNWYWx1ZSk7Ci0gICAgICAgIHNpemVfdCByZW1vdmVQcm9wZXJ0eVdpdGhvdXRUcmFuc2l0
aW9uKEpTR2xvYmFsRGF0YSYsIGNvbnN0IElkZW50aWZpZXImIHByb3BlcnR5TmFtZSk7CisgICAg
ICAgIEpTX0VYUE9SVF9QUklWQVRFIHNpemVfdCBhZGRQcm9wZXJ0eVdpdGhvdXRUcmFuc2l0aW9u
KEpTR2xvYmFsRGF0YSYsIGNvbnN0IFByb3BlcnR5TmFtZSYgcHJvcGVydHlOYW1lLCB1bnNpZ25l
ZCBhdHRyaWJ1dGVzLCBKU0NlbGwqIHNwZWNpZmljVmFsdWUpOworICAgICAgICBzaXplX3QgcmVt
b3ZlUHJvcGVydHlXaXRob3V0VHJhbnNpdGlvbihKU0dsb2JhbERhdGEmLCBjb25zdCBQcm9wZXJ0
eU5hbWUmIHByb3BlcnR5TmFtZSk7CiAgICAgICAgIHZvaWQgc2V0UHJvdG90eXBlV2l0aG91dFRy
YW5zaXRpb24oSlNHbG9iYWxEYXRhJiBnbG9iYWxEYXRhLCBKU1ZhbHVlIHByb3RvdHlwZSkgeyBt
X3Byb3RvdHlwZS5zZXQoZ2xvYmFsRGF0YSwgdGhpcywgcHJvdG90eXBlKTsgfQogICAgICAgICAK
ICAgICAgICAgYm9vbCBpc0RpY3Rpb25hcnkoKSBjb25zdCB7IHJldHVybiBtX2RpY3Rpb25hcnlL
aW5kICE9IE5vbmVEaWN0aW9uYXJ5S2luZDsgfQpAQCAtMTM2LDE1ICsxMzYsOSBAQCBuYW1lc3Bh
Y2UgSlNDIHsKICAgICAgICAgdW5zaWduZWQgcHJvcGVydHlTdG9yYWdlU2l6ZSgpIGNvbnN0IHsg
QVNTRVJUKHN0cnVjdHVyZSgpLT5jbGFzc0luZm8oKSA9PSAmc19pbmZvKTsgcmV0dXJuIChtX3By
b3BlcnR5VGFibGUgPyBtX3Byb3BlcnR5VGFibGUtPnByb3BlcnR5U3RvcmFnZVNpemUoKSA6IHN0
YXRpY19jYXN0PHVuc2lnbmVkPihtX29mZnNldCArIDEpKTsgfQogICAgICAgICBib29sIGlzVXNp
bmdJbmxpbmVTdG9yYWdlKCkgY29uc3Q7CiAKLSAgICAgICAgc2l6ZV90IGdldChKU0dsb2JhbERh
dGEmLCBjb25zdCBJZGVudGlmaWVyJiBwcm9wZXJ0eU5hbWUpOworICAgICAgICBzaXplX3QgZ2V0
KEpTR2xvYmFsRGF0YSYsIGNvbnN0IFByb3BlcnR5TmFtZSYgcHJvcGVydHlOYW1lKTsKICAgICAg
ICAgc2l6ZV90IGdldChKU0dsb2JhbERhdGEmLCBjb25zdCBVU3RyaW5nJiBuYW1lKTsKLSAgICAg
ICAgSlNfRVhQT1JUX1BSSVZBVEUgc2l6ZV90IGdldChKU0dsb2JhbERhdGEmLCBTdHJpbmdJbXBs
KiBwcm9wZXJ0eU5hbWUsIHVuc2lnbmVkJiBhdHRyaWJ1dGVzLCBKU0NlbGwqJiBzcGVjaWZpY1Zh
bHVlKTsKLSAgICAgICAgc2l6ZV90IGdldChKU0dsb2JhbERhdGEmIGdsb2JhbERhdGEsIGNvbnN0
IElkZW50aWZpZXImIHByb3BlcnR5TmFtZSwgdW5zaWduZWQmIGF0dHJpYnV0ZXMsIEpTQ2VsbCom
IHNwZWNpZmljVmFsdWUpCi0gICAgICAgIHsKLSAgICAgICAgICAgIEFTU0VSVCghcHJvcGVydHlO
YW1lLmlzTnVsbCgpKTsKLSAgICAgICAgICAgIEFTU0VSVChzdHJ1Y3R1cmUoKS0+Y2xhc3NJbmZv
KCkgPT0gJnNfaW5mbyk7Ci0gICAgICAgICAgICByZXR1cm4gZ2V0KGdsb2JhbERhdGEsIHByb3Bl
cnR5TmFtZS5pbXBsKCksIGF0dHJpYnV0ZXMsIHNwZWNpZmljVmFsdWUpOwotICAgICAgICB9Cisg
ICAgICAgIEpTX0VYUE9SVF9QUklWQVRFIHNpemVfdCBnZXQoSlNHbG9iYWxEYXRhJiBnbG9iYWxE
YXRhLCBjb25zdCBQcm9wZXJ0eU5hbWUmIHByb3BlcnR5TmFtZSwgdW5zaWduZWQmIGF0dHJpYnV0
ZXMsIEpTQ2VsbComIHNwZWNpZmljVmFsdWUpOwogCiAgICAgICAgIGJvb2wgaGFzR2V0dGVyU2V0
dGVyUHJvcGVydGllcygpIGNvbnN0IHsgcmV0dXJuIG1faGFzR2V0dGVyU2V0dGVyUHJvcGVydGll
czsgfQogICAgICAgICBib29sIGhhc1JlYWRPbmx5T3JHZXR0ZXJTZXR0ZXJQcm9wZXJ0aWVzRXhj
bHVkaW5nUHJvdG8oKSBjb25zdCB7IHJldHVybiBtX2hhc1JlYWRPbmx5T3JHZXR0ZXJTZXR0ZXJQ
cm9wZXJ0aWVzRXhjbHVkaW5nUHJvdG87IH0KQEAgLTE2Myw3ICsxNTcsNyBAQCBuYW1lc3BhY2Ug
SlNDIHsKICAgICAgICAgCiAgICAgICAgIGJvb2wgaXNFbXB0eSgpIGNvbnN0IHsgcmV0dXJuIG1f
cHJvcGVydHlUYWJsZSA/IG1fcHJvcGVydHlUYWJsZS0+aXNFbXB0eSgpIDogbV9vZmZzZXQgPT0g
bm9PZmZzZXQ7IH0KIAotICAgICAgICBKU19FWFBPUlRfUFJJVkFURSB2b2lkIGRlc3BlY2lmeURp
Y3Rpb25hcnlGdW5jdGlvbihKU0dsb2JhbERhdGEmLCBjb25zdCBJZGVudGlmaWVyJiBwcm9wZXJ0
eU5hbWUpOworICAgICAgICBKU19FWFBPUlRfUFJJVkFURSB2b2lkIGRlc3BlY2lmeURpY3Rpb25h
cnlGdW5jdGlvbihKU0dsb2JhbERhdGEmLCBjb25zdCBQcm9wZXJ0eU5hbWUmIHByb3BlcnR5TmFt
ZSk7CiAgICAgICAgIHZvaWQgZGlzYWJsZVNwZWNpZmljRnVuY3Rpb25UcmFja2luZygpIHsgbV9z
cGVjaWZpY0Z1bmN0aW9uVGhyYXNoQ291bnQgPSBtYXhTcGVjaWZpY0Z1bmN0aW9uVGhyYXNoQ291
bnQ7IH0KIAogICAgICAgICB2b2lkIHNldEVudW1lcmF0aW9uQ2FjaGUoSlNHbG9iYWxEYXRhJiwg
SlNQcm9wZXJ0eU5hbWVJdGVyYXRvciogZW51bWVyYXRpb25DYWNoZSk7IC8vIERlZmluZWQgaW4g
SlNQcm9wZXJ0eU5hbWVJdGVyYXRvci5oLgpAQCAtMjE2LDcgKzIxMCw3IEBAIG5hbWVzcGFjZSBK
U0MgewogCiAgICAgcHJpdmF0ZToKICAgICAgICAgZnJpZW5kIGNsYXNzIExMSW50T2Zmc2V0c0V4
dHJhY3RvcjsKLSAgICAgICAgCisKICAgICAgICAgSlNfRVhQT1JUX1BSSVZBVEUgU3RydWN0dXJl
KEpTR2xvYmFsRGF0YSYsIEpTR2xvYmFsT2JqZWN0KiwgSlNWYWx1ZSBwcm90b3R5cGUsIGNvbnN0
IFR5cGVJbmZvJiwgY29uc3QgQ2xhc3NJbmZvKik7CiAgICAgICAgIFN0cnVjdHVyZShKU0dsb2Jh
bERhdGEmKTsKICAgICAgICAgU3RydWN0dXJlKEpTR2xvYmFsRGF0YSYsIGNvbnN0IFN0cnVjdHVy
ZSopOwpAQCAtMjM2LDEzICsyMzAsMTMgQEAgbmFtZXNwYWNlIEpTQyB7CiAgICAgICAgIH0gRGlj
dGlvbmFyeUtpbmQ7CiAgICAgICAgIHN0YXRpYyBTdHJ1Y3R1cmUqIHRvRGljdGlvbmFyeVRyYW5z
aXRpb24oSlNHbG9iYWxEYXRhJiwgU3RydWN0dXJlKiwgRGljdGlvbmFyeUtpbmQpOwogCi0gICAg
ICAgIHNpemVfdCBwdXRTcGVjaWZpY1ZhbHVlKEpTR2xvYmFsRGF0YSYsIGNvbnN0IElkZW50aWZp
ZXImIHByb3BlcnR5TmFtZSwgdW5zaWduZWQgYXR0cmlidXRlcywgSlNDZWxsKiBzcGVjaWZpY1Zh
bHVlKTsKLSAgICAgICAgc2l6ZV90IHJlbW92ZShjb25zdCBJZGVudGlmaWVyJiBwcm9wZXJ0eU5h
bWUpOworICAgICAgICBzaXplX3QgcHV0U3BlY2lmaWNWYWx1ZShKU0dsb2JhbERhdGEmLCBjb25z
dCBQcm9wZXJ0eU5hbWUmIHByb3BlcnR5TmFtZSwgdW5zaWduZWQgYXR0cmlidXRlcywgSlNDZWxs
KiBzcGVjaWZpY1ZhbHVlKTsKKyAgICAgICAgc2l6ZV90IHJlbW92ZShjb25zdCBQcm9wZXJ0eU5h
bWUmIHByb3BlcnR5TmFtZSk7CiAKICAgICAgICAgdm9pZCBjcmVhdGVQcm9wZXJ0eU1hcCh1bnNp
Z25lZCBrZXlDb3VudCA9IDApOwogICAgICAgICB2b2lkIGNoZWNrQ29uc2lzdGVuY3koKTsKIAot
ICAgICAgICBib29sIGRlc3BlY2lmeUZ1bmN0aW9uKEpTR2xvYmFsRGF0YSYsIGNvbnN0IElkZW50
aWZpZXImKTsKKyAgICAgICAgYm9vbCBkZXNwZWNpZnlGdW5jdGlvbihKU0dsb2JhbERhdGEmLCBj
b25zdCBQcm9wZXJ0eU5hbWUmKTsKICAgICAgICAgdm9pZCBkZXNwZWNpZnlBbGxGdW5jdGlvbnMo
SlNHbG9iYWxEYXRhJik7CiAKICAgICAgICAgUGFzc093blB0cjxQcm9wZXJ0eVRhYmxlPiBjb3B5
UHJvcGVydHlUYWJsZShKU0dsb2JhbERhdGEmLCBTdHJ1Y3R1cmUqIG93bmVyKTsKQEAgLTMxNCw3
ICszMDgsNyBAQCBuYW1lc3BhY2UgSlNDIHsKICAgICAgICAgdW5zaWduZWQgbV9zdGF0aWNGdW5j
dGlvblJlaWZpZWQ7CiAgICAgfTsKIAotICAgIGlubGluZSBzaXplX3QgU3RydWN0dXJlOjpnZXQo
SlNHbG9iYWxEYXRhJiBnbG9iYWxEYXRhLCBjb25zdCBJZGVudGlmaWVyJiBwcm9wZXJ0eU5hbWUp
CisgICAgaW5saW5lIHNpemVfdCBTdHJ1Y3R1cmU6OmdldChKU0dsb2JhbERhdGEmIGdsb2JhbERh
dGEsIGNvbnN0IFByb3BlcnR5TmFtZSYgcHJvcGVydHlOYW1lKQogICAgIHsKICAgICAgICAgQVNT
RVJUKHN0cnVjdHVyZSgpLT5jbGFzc0luZm8oKSA9PSAmc19pbmZvKTsKICAgICAgICAgbWF0ZXJp
YWxpemVQcm9wZXJ0eU1hcElmTmVjZXNzYXJ5KGdsb2JhbERhdGEpOwpJbmRleDogU291cmNlL1dl
YkNvcmUvQ2hhbmdlTG9nCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9XZWJDb3JlL0NoYW5nZUxvZwko
cmV2aXNpb24gMTE2NzkyKQorKysgU291cmNlL1dlYkNvcmUvQ2hhbmdlTG9nCSh3b3JraW5nIGNv
cHkpCkBAIC0xLDMgKzEsMjI5IEBACisyMDEyLTA1LTExICBHYXZpbiBCYXJyYWNsb3VnaCAgPGJh
cnJhY2xvdWdoQGFwcGxlLmNvbT4KKworICAgICAgICBJbnRyb2R1Y2UgUHJvcGVydHlOYW1lIGNs
YXNzCisgICAgICAgIGh0dHBzOi8vYnVncy53ZWJraXQub3JnL3Nob3dfYnVnLmNnaT9pZD04NjI0
MQorCisgICAgICAgIFJldmlld2VkIGJ5IE5PQk9EWSAoT09QUyEpLgorCisgICAgICAgIFJlcGxh
Y2UgJ2NvbnN0IElkZW50aWZpZXImJyBhcmd1bWVudHMgdG8gZnVuY3Rpb25zIGFjY2Vzc2luZyBv
YmplY3QgcHJvcGVydGllcyB3aXRoIGEgbmV3ICdQcm9wZXJ0eU5hbWUnIHR5cGUuCisgICAgICAg
IFRoaXMgY2hhbmdlIHBhdmVzIHRoZSB3YXkgdG8gYWxsb3cgZm9yIHByb3BlcnRpZXMga2V5ZWQg
YnkgdmFsdWVzIHRoYXQgYXJlIG5vdCBJZGVudGlmaWVycy4KKworICAgICAgICBUaGlzIGNoYW5n
ZSBpcyBsYXJnZWx5IGEgbWVjaGFuaWNhbCBmaW5kICYgcmVwbGFjZS4KKyAgICAgICAgSXQgYWxz
byBjaGFuZ2VzIEpTRnVuY3Rpb24ncyBjb25zdHJ1Y3RvciB0byB0YWtlIGEgVVN0cmluZyYgaW5z
dGVhZCBvZiBhbiBJZGVudGlmaWVyJgorICAgICAgICAoc2luY2UgaW4gc29tZSBjYXNlcyB3ZSBj
YW4gbm8gbG9uZ2VyIGd1YXJhbnRlZSB0aGF0IHdlJ2xsbCBoYXZlIGFuIElkZW50aWZpZXIpLCBh
bmQKKyAgICAgICAgdW5pZmllcyBJZGVudGlmaWVyJ3MgbWV0aG9kcyB0byBvYnRhaW4gYXJyYXkg
aW5kaWNlcyBvbnRvIFByb3BlcnR5TmFtZS4KKworICAgICAgICBUaGUgbmV3IFByb3BlcnR5TmFt
ZSBjbGFzcyByZXRhaW5zIHRoZSBhYmlsaXR5IHRvIHN1cHBvcnQgLmltcGwoKSBhbmQgLnVzdHJp
bmcoKSwgYnV0CisgICAgICAgIGluIGEgZnV0dXJlIHBhdGNoIHdlIG1heSBuZWVkIHRvIHJld29y
ayB0aGlzLCBzaW5jZSBub3QgYWxsIFByb3BlcnR5TmFtZXMgc2hvdWxkIGJlCisgICAgICAgIGVx
dWFsIGJhc2VkIG9uIHRoZWlyIHN0cmluZyByZXByZXNlbnRhdGlvbi4KKworICAgICAgICAqIFdl
YkNvcmUuZXhwLmluOgorICAgICAgICAqIGJpbmRpbmdzL2pzL0pTQ1NTU3R5bGVEZWNsYXJhdGlv
bkN1c3RvbS5jcHA6CisgICAgICAgIChXZWJDb3JlOjpjc3NQcm9wZXJ0eUlERm9ySlNDU1NQcm9w
ZXJ0eU5hbWUpOgorICAgICAgICAoV2ViQ29yZTo6SlNDU1NTdHlsZURlY2xhcmF0aW9uOjpnZXRP
d25Qcm9wZXJ0eVNsb3REZWxlZ2F0ZSk6CisgICAgICAgIChXZWJDb3JlOjpKU0NTU1N0eWxlRGVj
bGFyYXRpb246OmdldE93blByb3BlcnR5RGVzY3JpcHRvckRlbGVnYXRlKToKKyAgICAgICAgKFdl
YkNvcmU6OkpTQ1NTU3R5bGVEZWNsYXJhdGlvbjo6cHV0RGVsZWdhdGUpOgorICAgICAgICAqIGJp
bmRpbmdzL2pzL0pTRE9NQmluZGluZy5jcHA6CisgICAgICAgIChXZWJDb3JlOjpmaW5kQXRvbWlj
U3RyaW5nKToKKyAgICAgICAgKFdlYkNvcmU6Om9iamVjdFRvU3RyaW5nRnVuY3Rpb25HZXR0ZXIp
OgorICAgICAgICAqIGJpbmRpbmdzL2pzL0pTRE9NQmluZGluZy5oOgorICAgICAgICAoV2ViQ29y
ZSk6CisgICAgICAgIChXZWJDb3JlOjpwcm9wZXJ0eU5hbWVUb1N0cmluZyk6CisgICAgICAgIChX
ZWJDb3JlOjpwcm9wZXJ0eU5hbWVUb0F0b21pY1N0cmluZyk6CisgICAgICAgICogYmluZGluZ3Mv
anMvSlNET01NaW1lVHlwZUFycmF5Q3VzdG9tLmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OkpTRE9N
TWltZVR5cGVBcnJheTo6Y2FuR2V0SXRlbXNGb3JOYW1lKToKKyAgICAgICAgKFdlYkNvcmU6OkpT
RE9NTWltZVR5cGVBcnJheTo6bmFtZUdldHRlcik6CisgICAgICAgICogYmluZGluZ3MvanMvSlNE
T01QbHVnaW5BcnJheUN1c3RvbS5jcHA6CisgICAgICAgIChXZWJDb3JlOjpKU0RPTVBsdWdpbkFy
cmF5OjpjYW5HZXRJdGVtc0Zvck5hbWUpOgorICAgICAgICAoV2ViQ29yZTo6SlNET01QbHVnaW5B
cnJheTo6bmFtZUdldHRlcik6CisgICAgICAgICogYmluZGluZ3MvanMvSlNET01QbHVnaW5DdXN0
b20uY3BwOgorICAgICAgICAoV2ViQ29yZTo6SlNET01QbHVnaW46OmNhbkdldEl0ZW1zRm9yTmFt
ZSk6CisgICAgICAgIChXZWJDb3JlOjpKU0RPTVBsdWdpbjo6bmFtZUdldHRlcik6CisgICAgICAg
ICogYmluZGluZ3MvanMvSlNET01TdHJpbmdNYXBDdXN0b20uY3BwOgorICAgICAgICAoV2ViQ29y
ZTo6SlNET01TdHJpbmdNYXA6OmNhbkdldEl0ZW1zRm9yTmFtZSk6CisgICAgICAgIChXZWJDb3Jl
OjpKU0RPTVN0cmluZ01hcDo6bmFtZUdldHRlcik6CisgICAgICAgIChXZWJDb3JlOjpKU0RPTVN0
cmluZ01hcDo6ZGVsZXRlUHJvcGVydHkpOgorICAgICAgICAoV2ViQ29yZTo6SlNET01TdHJpbmdN
YXA6OnB1dERlbGVnYXRlKToKKyAgICAgICAgKiBiaW5kaW5ncy9qcy9KU0RPTVdpbmRvd0N1c3Rv
bS5jcHA6CisgICAgICAgIChXZWJDb3JlOjpub25DYWNoaW5nU3RhdGljRnVuY3Rpb25HZXR0ZXIp
OgorICAgICAgICAoV2ViQ29yZTo6Y2hpbGRGcmFtZUdldHRlcik6CisgICAgICAgIChXZWJDb3Jl
OjpuYW1lZEl0ZW1HZXR0ZXIpOgorICAgICAgICAoV2ViQ29yZTo6SlNET01XaW5kb3c6OmdldE93
blByb3BlcnR5U2xvdCk6CisgICAgICAgIChXZWJDb3JlOjpKU0RPTVdpbmRvdzo6Z2V0T3duUHJv
cGVydHlEZXNjcmlwdG9yKToKKyAgICAgICAgKFdlYkNvcmU6OkpTRE9NV2luZG93OjpwdXQpOgor
ICAgICAgICAoV2ViQ29yZTo6SlNET01XaW5kb3c6OmRlbGV0ZVByb3BlcnR5KToKKyAgICAgICAg
KFdlYkNvcmU6OkpTRE9NV2luZG93OjpkZWZpbmVPd25Qcm9wZXJ0eSk6CisgICAgICAgICogYmlu
ZGluZ3MvanMvSlNET01XaW5kb3dTaGVsbC5jcHA6CisgICAgICAgIChXZWJDb3JlOjpKU0RPTVdp
bmRvd1NoZWxsOjpnZXRPd25Qcm9wZXJ0eVNsb3QpOgorICAgICAgICAoV2ViQ29yZTo6SlNET01X
aW5kb3dTaGVsbDo6Z2V0T3duUHJvcGVydHlEZXNjcmlwdG9yKToKKyAgICAgICAgKFdlYkNvcmU6
OkpTRE9NV2luZG93U2hlbGw6OnB1dCk6CisgICAgICAgIChXZWJDb3JlOjpKU0RPTVdpbmRvd1No
ZWxsOjpwdXREaXJlY3RWaXJ0dWFsKToKKyAgICAgICAgKFdlYkNvcmU6OkpTRE9NV2luZG93U2hl
bGw6OmRlZmluZU93blByb3BlcnR5KToKKyAgICAgICAgKFdlYkNvcmU6OkpTRE9NV2luZG93U2hl
bGw6OmRlbGV0ZVByb3BlcnR5KToKKyAgICAgICAgKiBiaW5kaW5ncy9qcy9KU0RPTVdpbmRvd1No
ZWxsLmg6CisgICAgICAgIChKU0RPTVdpbmRvd1NoZWxsKToKKyAgICAgICAgKiBiaW5kaW5ncy9q
cy9KU0hUTUxBbGxDb2xsZWN0aW9uQ3VzdG9tLmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OmdldE5h
bWVkSXRlbXMpOgorICAgICAgICAoV2ViQ29yZTo6Y2FsbEhUTUxBbGxDb2xsZWN0aW9uKToKKyAg
ICAgICAgKFdlYkNvcmU6OkpTSFRNTEFsbENvbGxlY3Rpb246OmNhbkdldEl0ZW1zRm9yTmFtZSk6
CisgICAgICAgIChXZWJDb3JlOjpKU0hUTUxBbGxDb2xsZWN0aW9uOjpuYW1lR2V0dGVyKToKKyAg
ICAgICAgKFdlYkNvcmU6OkpTSFRNTEFsbENvbGxlY3Rpb246Oml0ZW0pOgorICAgICAgICAqIGJp
bmRpbmdzL2pzL0pTSFRNTEFwcGxldEVsZW1lbnRDdXN0b20uY3BwOgorICAgICAgICAoV2ViQ29y
ZTo6SlNIVE1MQXBwbGV0RWxlbWVudDo6Z2V0T3duUHJvcGVydHlTbG90RGVsZWdhdGUpOgorICAg
ICAgICAoV2ViQ29yZTo6SlNIVE1MQXBwbGV0RWxlbWVudDo6Z2V0T3duUHJvcGVydHlEZXNjcmlw
dG9yRGVsZWdhdGUpOgorICAgICAgICAoV2ViQ29yZTo6SlNIVE1MQXBwbGV0RWxlbWVudDo6cHV0
RGVsZWdhdGUpOgorICAgICAgICAqIGJpbmRpbmdzL2pzL0pTSFRNTENvbGxlY3Rpb25DdXN0b20u
Y3BwOgorICAgICAgICAoV2ViQ29yZTo6Z2V0TmFtZWRJdGVtcyk6CisgICAgICAgIChXZWJDb3Jl
OjpKU0hUTUxDb2xsZWN0aW9uOjpjYW5HZXRJdGVtc0Zvck5hbWUpOgorICAgICAgICAoV2ViQ29y
ZTo6SlNIVE1MQ29sbGVjdGlvbjo6bmFtZUdldHRlcik6CisgICAgICAgICogYmluZGluZ3MvanMv
SlNIVE1MRG9jdW1lbnRDdXN0b20uY3BwOgorICAgICAgICAoV2ViQ29yZTo6SlNIVE1MRG9jdW1l
bnQ6OmNhbkdldEl0ZW1zRm9yTmFtZSk6CisgICAgICAgIChXZWJDb3JlOjpKU0hUTUxEb2N1bWVu
dDo6bmFtZUdldHRlcik6CisgICAgICAgICogYmluZGluZ3MvanMvSlNIVE1MRW1iZWRFbGVtZW50
Q3VzdG9tLmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OkpTSFRNTEVtYmVkRWxlbWVudDo6Z2V0T3du
UHJvcGVydHlTbG90RGVsZWdhdGUpOgorICAgICAgICAoV2ViQ29yZTo6SlNIVE1MRW1iZWRFbGVt
ZW50OjpnZXRPd25Qcm9wZXJ0eURlc2NyaXB0b3JEZWxlZ2F0ZSk6CisgICAgICAgIChXZWJDb3Jl
OjpKU0hUTUxFbWJlZEVsZW1lbnQ6OnB1dERlbGVnYXRlKToKKyAgICAgICAgKiBiaW5kaW5ncy9q
cy9KU0hUTUxGb3JtRWxlbWVudEN1c3RvbS5jcHA6CisgICAgICAgIChXZWJDb3JlOjpKU0hUTUxG
b3JtRWxlbWVudDo6Y2FuR2V0SXRlbXNGb3JOYW1lKToKKyAgICAgICAgKFdlYkNvcmU6OkpTSFRN
TEZvcm1FbGVtZW50OjpuYW1lR2V0dGVyKToKKyAgICAgICAgKiBiaW5kaW5ncy9qcy9KU0hUTUxG
cmFtZVNldEVsZW1lbnRDdXN0b20uY3BwOgorICAgICAgICAoV2ViQ29yZTo6SlNIVE1MRnJhbWVT
ZXRFbGVtZW50OjpjYW5HZXRJdGVtc0Zvck5hbWUpOgorICAgICAgICAoV2ViQ29yZTo6SlNIVE1M
RnJhbWVTZXRFbGVtZW50OjpuYW1lR2V0dGVyKToKKyAgICAgICAgKiBiaW5kaW5ncy9qcy9KU0hU
TUxPYmplY3RFbGVtZW50Q3VzdG9tLmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OkpTSFRNTE9iamVj
dEVsZW1lbnQ6OmdldE93blByb3BlcnR5U2xvdERlbGVnYXRlKToKKyAgICAgICAgKFdlYkNvcmU6
OkpTSFRNTE9iamVjdEVsZW1lbnQ6OmdldE93blByb3BlcnR5RGVzY3JpcHRvckRlbGVnYXRlKToK
KyAgICAgICAgKFdlYkNvcmU6OkpTSFRNTE9iamVjdEVsZW1lbnQ6OnB1dERlbGVnYXRlKToKKyAg
ICAgICAgKiBiaW5kaW5ncy9qcy9KU0hpc3RvcnlDdXN0b20uY3BwOgorICAgICAgICAoV2ViQ29y
ZTo6bm9uQ2FjaGluZ1N0YXRpY0JhY2tGdW5jdGlvbkdldHRlcik6CisgICAgICAgIChXZWJDb3Jl
Ojpub25DYWNoaW5nU3RhdGljRm9yd2FyZEZ1bmN0aW9uR2V0dGVyKToKKyAgICAgICAgKFdlYkNv
cmU6Om5vbkNhY2hpbmdTdGF0aWNHb0Z1bmN0aW9uR2V0dGVyKToKKyAgICAgICAgKFdlYkNvcmU6
OkpTSGlzdG9yeTo6Z2V0T3duUHJvcGVydHlTbG90RGVsZWdhdGUpOgorICAgICAgICAoV2ViQ29y
ZTo6SlNIaXN0b3J5OjpnZXRPd25Qcm9wZXJ0eURlc2NyaXB0b3JEZWxlZ2F0ZSk6CisgICAgICAg
IChXZWJDb3JlOjpKU0hpc3Rvcnk6OnB1dERlbGVnYXRlKToKKyAgICAgICAgKFdlYkNvcmU6OkpT
SGlzdG9yeTo6ZGVsZXRlUHJvcGVydHkpOgorICAgICAgICAqIGJpbmRpbmdzL2pzL0pTTG9jYXRp
b25DdXN0b20uY3BwOgorICAgICAgICAoV2ViQ29yZTo6bm9uQ2FjaGluZ1N0YXRpY1JlcGxhY2VG
dW5jdGlvbkdldHRlcik6CisgICAgICAgIChXZWJDb3JlOjpub25DYWNoaW5nU3RhdGljUmVsb2Fk
RnVuY3Rpb25HZXR0ZXIpOgorICAgICAgICAoV2ViQ29yZTo6bm9uQ2FjaGluZ1N0YXRpY0Fzc2ln
bkZ1bmN0aW9uR2V0dGVyKToKKyAgICAgICAgKFdlYkNvcmU6OkpTTG9jYXRpb246OmdldE93blBy
b3BlcnR5U2xvdERlbGVnYXRlKToKKyAgICAgICAgKFdlYkNvcmU6OkpTTG9jYXRpb246OmdldE93
blByb3BlcnR5RGVzY3JpcHRvckRlbGVnYXRlKToKKyAgICAgICAgKFdlYkNvcmU6OkpTTG9jYXRp
b246OnB1dERlbGVnYXRlKToKKyAgICAgICAgKFdlYkNvcmU6OkpTTG9jYXRpb246OmRlbGV0ZVBy
b3BlcnR5KToKKyAgICAgICAgKFdlYkNvcmU6OkpTTG9jYXRpb246OmRlZmluZU93blByb3BlcnR5
KToKKyAgICAgICAgKFdlYkNvcmU6OkpTTG9jYXRpb25Qcm90b3R5cGU6OnB1dERlbGVnYXRlKToK
KyAgICAgICAgKFdlYkNvcmU6OkpTTG9jYXRpb25Qcm90b3R5cGU6OmRlZmluZU93blByb3BlcnR5
KToKKyAgICAgICAgKiBiaW5kaW5ncy9qcy9KU05hbWVkTm9kZU1hcEN1c3RvbS5jcHA6CisgICAg
ICAgIChXZWJDb3JlOjpKU05hbWVkTm9kZU1hcDo6Y2FuR2V0SXRlbXNGb3JOYW1lKToKKyAgICAg
ICAgKFdlYkNvcmU6OkpTTmFtZWROb2RlTWFwOjpuYW1lR2V0dGVyKToKKyAgICAgICAgKiBiaW5k
aW5ncy9qcy9KU05vZGVMaXN0Q3VzdG9tLmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OkpTTm9kZUxp
c3Q6OmNhbkdldEl0ZW1zRm9yTmFtZSk6CisgICAgICAgIChXZWJDb3JlOjpKU05vZGVMaXN0Ojpu
YW1lR2V0dGVyKToKKyAgICAgICAgKiBiaW5kaW5ncy9qcy9KU1BsdWdpbkVsZW1lbnRGdW5jdGlv
bnMuY3BwOgorICAgICAgICAoV2ViQ29yZTo6cnVudGltZU9iamVjdFByb3BlcnR5R2V0dGVyKToK
KyAgICAgICAgKFdlYkNvcmU6OnJ1bnRpbWVPYmplY3RDdXN0b21HZXRPd25Qcm9wZXJ0eVNsb3Qp
OgorICAgICAgICAoV2ViQ29yZTo6cnVudGltZU9iamVjdEN1c3RvbUdldE93blByb3BlcnR5RGVz
Y3JpcHRvcik6CisgICAgICAgIChXZWJDb3JlOjpydW50aW1lT2JqZWN0Q3VzdG9tUHV0KToKKyAg
ICAgICAgKiBiaW5kaW5ncy9qcy9KU1BsdWdpbkVsZW1lbnRGdW5jdGlvbnMuaDoKKyAgICAgICAg
KFdlYkNvcmUpOgorICAgICAgICAqIGJpbmRpbmdzL2pzL0pTU3RvcmFnZUN1c3RvbS5jcHA6Cisg
ICAgICAgIChXZWJDb3JlOjpKU1N0b3JhZ2U6OmNhbkdldEl0ZW1zRm9yTmFtZSk6CisgICAgICAg
IChXZWJDb3JlOjpKU1N0b3JhZ2U6Om5hbWVHZXR0ZXIpOgorICAgICAgICAoV2ViQ29yZTo6SlNT
dG9yYWdlOjpkZWxldGVQcm9wZXJ0eSk6CisgICAgICAgIChXZWJDb3JlOjpKU1N0b3JhZ2U6OnB1
dERlbGVnYXRlKToKKyAgICAgICAgKiBiaW5kaW5ncy9qcy9KU1N0eWxlU2hlZXRMaXN0Q3VzdG9t
LmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OkpTU3R5bGVTaGVldExpc3Q6OmNhbkdldEl0ZW1zRm9y
TmFtZSk6CisgICAgICAgIChXZWJDb3JlOjpKU1N0eWxlU2hlZXRMaXN0OjpuYW1lR2V0dGVyKToK
KyAgICAgICAgKiBiaW5kaW5ncy9qcy9KU1dvcmtlckNvbnRleHRDdXN0b20uY3BwOgorICAgICAg
ICAoV2ViQ29yZTo6SlNXb3JrZXJDb250ZXh0OjpnZXRPd25Qcm9wZXJ0eVNsb3REZWxlZ2F0ZSk6
CisgICAgICAgIChXZWJDb3JlOjpKU1dvcmtlckNvbnRleHQ6OmdldE93blByb3BlcnR5RGVzY3Jp
cHRvckRlbGVnYXRlKToKKyAgICAgICAgKiBiaW5kaW5ncy9zY3JpcHRzL0NvZGVHZW5lcmF0b3JK
Uy5wbToKKyAgICAgICAgKEdlbmVyYXRlR2V0T3duUHJvcGVydHlTbG90Qm9keSk6CisgICAgICAg
IChHZW5lcmF0ZUdldE93blByb3BlcnR5RGVzY3JpcHRvckJvZHkpOgorICAgICAgICAoR2VuZXJh
dGVIZWFkZXIpOgorICAgICAgICAoR2VuZXJhdGVJbXBsZW1lbnRhdGlvbik6CisgICAgICAgIChH
ZW5lcmF0ZUNvbnN0cnVjdG9yRGVjbGFyYXRpb24pOgorICAgICAgICAoR2VuZXJhdGVDb25zdHJ1
Y3RvckRlZmluaXRpb24pOgorICAgICAgICAqIGJyaWRnZS9jL2NfY2xhc3MuY3BwOgorICAgICAg
ICAoSlNDOjpCaW5kaW5nczo6Q0NsYXNzOjptZXRob2RzTmFtZWQpOgorICAgICAgICAoSlNDOjpC
aW5kaW5nczo6Q0NsYXNzOjpmaWVsZE5hbWVkKToKKyAgICAgICAgKiBicmlkZ2UvYy9jX2NsYXNz
Lmg6CisgICAgICAgIChDQ2xhc3MpOgorICAgICAgICAqIGJyaWRnZS9jL2NfaW5zdGFuY2UuY3Bw
OgorICAgICAgICAoSlNDOjpCaW5kaW5nczo6Q1J1bnRpbWVNZXRob2Q6OmNyZWF0ZSk6CisgICAg
ICAgIChKU0M6OkJpbmRpbmdzOjpDUnVudGltZU1ldGhvZDo6ZmluaXNoQ3JlYXRpb24pOgorICAg
ICAgICAoSlNDOjpCaW5kaW5nczo6Q0luc3RhbmNlOjpnZXRNZXRob2QpOgorICAgICAgICAqIGJy
aWRnZS9jL2NfaW5zdGFuY2UuaDoKKyAgICAgICAgKENJbnN0YW5jZSk6CisgICAgICAgICogYnJp
ZGdlL2puaS9qc2MvSmF2YUNsYXNzSlNDLmNwcDoKKyAgICAgICAgKEphdmFDbGFzczo6bWV0aG9k
c05hbWVkKToKKyAgICAgICAgKEphdmFDbGFzczo6ZmllbGROYW1lZCk6CisgICAgICAgICogYnJp
ZGdlL2puaS9qc2MvSmF2YUNsYXNzSlNDLmg6CisgICAgICAgIChKYXZhQ2xhc3MpOgorICAgICAg
ICAqIGJyaWRnZS9qbmkvanNjL0phdmFJbnN0YW5jZUpTQy5jcHA6CisgICAgICAgIChKYXZhUnVu
dGltZU1ldGhvZDo6Y3JlYXRlKToKKyAgICAgICAgKEphdmFSdW50aW1lTWV0aG9kOjpmaW5pc2hD
cmVhdGlvbik6CisgICAgICAgICogYnJpZGdlL2puaS9qc2MvSmF2YUluc3RhbmNlSlNDLmg6Cisg
ICAgICAgIChKYXZhSW5zdGFuY2UpOgorICAgICAgICAqIGJyaWRnZS9qc2MvQnJpZGdlSlNDLmg6
CisgICAgICAgIChDbGFzcyk6CisgICAgICAgIChKU0M6OkJpbmRpbmdzOjpDbGFzczo6ZmFsbGJh
Y2tPYmplY3QpOgorICAgICAgICAoSlNDOjpCaW5kaW5nczo6SW5zdGFuY2U6OnNldFZhbHVlT2ZV
bmRlZmluZWRGaWVsZCk6CisgICAgICAgIChJbnN0YW5jZSk6CisgICAgICAgIChKU0M6OkJpbmRp
bmdzOjpJbnN0YW5jZTo6Z2V0T3duUHJvcGVydHlTbG90KToKKyAgICAgICAgKEpTQzo6QmluZGlu
Z3M6Okluc3RhbmNlOjpnZXRPd25Qcm9wZXJ0eURlc2NyaXB0b3IpOgorICAgICAgICAoSlNDOjpC
aW5kaW5nczo6SW5zdGFuY2U6OnB1dCk6CisgICAgICAgICogYnJpZGdlL29iamMvb2JqY19jbGFz
cy5oOgorICAgICAgICAoT2JqY0NsYXNzKToKKyAgICAgICAgKiBicmlkZ2Uvb2JqYy9vYmpjX2Ns
YXNzLm1tOgorICAgICAgICAoSlNDOjpCaW5kaW5nczo6T2JqY0NsYXNzOjptZXRob2RzTmFtZWQp
OgorICAgICAgICAoSlNDOjpCaW5kaW5nczo6T2JqY0NsYXNzOjpmaWVsZE5hbWVkKToKKyAgICAg
ICAgKEpTQzo6QmluZGluZ3M6Ok9iamNDbGFzczo6ZmFsbGJhY2tPYmplY3QpOgorICAgICAgICAq
IGJyaWRnZS9vYmpjL29iamNfaW5zdGFuY2UuaDoKKyAgICAgICAgKE9iamNJbnN0YW5jZSk6Cisg
ICAgICAgICogYnJpZGdlL29iamMvb2JqY19pbnN0YW5jZS5tbToKKyAgICAgICAgKE9iakNSdW50
aW1lTWV0aG9kOjpjcmVhdGUpOgorICAgICAgICAoT2JqQ1J1bnRpbWVNZXRob2Q6OmZpbmlzaENy
ZWF0aW9uKToKKyAgICAgICAgKE9iamNJbnN0YW5jZTo6c2V0VmFsdWVPZlVuZGVmaW5lZEZpZWxk
KToKKyAgICAgICAgKE9iamNJbnN0YW5jZTo6Z2V0VmFsdWVPZlVuZGVmaW5lZEZpZWxkKToKKyAg
ICAgICAgKiBicmlkZ2Uvb2JqYy9vYmpjX3J1bnRpbWUuaDoKKyAgICAgICAgKEpTQzo6QmluZGlu
Z3M6Ok9iamNGYWxsYmFja09iamVjdEltcDo6Y3JlYXRlKToKKyAgICAgICAgKEpTQzo6QmluZGlu
Z3M6Ok9iamNGYWxsYmFja09iamVjdEltcDo6cHJvcGVydHlOYW1lKToKKyAgICAgICAgKE9iamNG
YWxsYmFja09iamVjdEltcCk6CisgICAgICAgICogYnJpZGdlL29iamMvb2JqY19ydW50aW1lLm1t
OgorICAgICAgICAoSlNDOjpCaW5kaW5nczo6T2JqY0ZhbGxiYWNrT2JqZWN0SW1wOjpPYmpjRmFs
bGJhY2tPYmplY3RJbXApOgorICAgICAgICAoSlNDOjpCaW5kaW5nczo6T2JqY0ZhbGxiYWNrT2Jq
ZWN0SW1wOjpnZXRPd25Qcm9wZXJ0eVNsb3QpOgorICAgICAgICAoSlNDOjpCaW5kaW5nczo6T2Jq
Y0ZhbGxiYWNrT2JqZWN0SW1wOjpnZXRPd25Qcm9wZXJ0eURlc2NyaXB0b3IpOgorICAgICAgICAo
SlNDOjpCaW5kaW5nczo6T2JqY0ZhbGxiYWNrT2JqZWN0SW1wOjpwdXQpOgorICAgICAgICAoSlND
OjpCaW5kaW5nczo6Y2FsbE9iakNGYWxsYmFja09iamVjdCk6CisgICAgICAgIChKU0M6OkJpbmRp
bmdzOjpPYmpjRmFsbGJhY2tPYmplY3RJbXA6OmRlbGV0ZVByb3BlcnR5KToKKyAgICAgICAgKEpT
Qzo6QmluZGluZ3M6Ok9iamNGYWxsYmFja09iamVjdEltcDo6ZGVmYXVsdFZhbHVlKToKKyAgICAg
ICAgKiBicmlkZ2UvcnVudGltZV9hcnJheS5jcHA6CisgICAgICAgIChKU0M6OlJ1bnRpbWVBcnJh
eTo6bGVuZ3RoR2V0dGVyKToKKyAgICAgICAgKEpTQzo6UnVudGltZUFycmF5OjpnZXRPd25Qcm9w
ZXJ0eVNsb3QpOgorICAgICAgICAoSlNDOjpSdW50aW1lQXJyYXk6OmdldE93blByb3BlcnR5RGVz
Y3JpcHRvcik6CisgICAgICAgIChKU0M6OlJ1bnRpbWVBcnJheTo6cHV0KToKKyAgICAgICAgKEpT
Qzo6UnVudGltZUFycmF5OjpkZWxldGVQcm9wZXJ0eSk6CisgICAgICAgICogYnJpZGdlL3J1bnRp
bWVfYXJyYXkuaDoKKyAgICAgICAgKFJ1bnRpbWVBcnJheSk6CisgICAgICAgICogYnJpZGdlL3J1
bnRpbWVfbWV0aG9kLmNwcDoKKyAgICAgICAgKEpTQzo6UnVudGltZU1ldGhvZDo6ZmluaXNoQ3Jl
YXRpb24pOgorICAgICAgICAoSlNDOjpSdW50aW1lTWV0aG9kOjpsZW5ndGhHZXR0ZXIpOgorICAg
ICAgICAoSlNDOjpSdW50aW1lTWV0aG9kOjpnZXRPd25Qcm9wZXJ0eVNsb3QpOgorICAgICAgICAo
SlNDOjpSdW50aW1lTWV0aG9kOjpnZXRPd25Qcm9wZXJ0eURlc2NyaXB0b3IpOgorICAgICAgICAq
IGJyaWRnZS9ydW50aW1lX21ldGhvZC5oOgorICAgICAgICAoSlNDOjpSdW50aW1lTWV0aG9kOjpj
cmVhdGUpOgorICAgICAgICAoUnVudGltZU1ldGhvZCk6CisgICAgICAgICogYnJpZGdlL3J1bnRp
bWVfb2JqZWN0LmNwcDoKKyAgICAgICAgKEpTQzo6QmluZGluZ3M6OlJ1bnRpbWVPYmplY3Q6OmZh
bGxiYWNrT2JqZWN0R2V0dGVyKToKKyAgICAgICAgKEpTQzo6QmluZGluZ3M6OlJ1bnRpbWVPYmpl
Y3Q6OmZpZWxkR2V0dGVyKToKKyAgICAgICAgKEpTQzo6QmluZGluZ3M6OlJ1bnRpbWVPYmplY3Q6
Om1ldGhvZEdldHRlcik6CisgICAgICAgIChKU0M6OkJpbmRpbmdzOjpSdW50aW1lT2JqZWN0Ojpn
ZXRPd25Qcm9wZXJ0eVNsb3QpOgorICAgICAgICAoSlNDOjpCaW5kaW5nczo6UnVudGltZU9iamVj
dDo6Z2V0T3duUHJvcGVydHlEZXNjcmlwdG9yKToKKyAgICAgICAgKEpTQzo6QmluZGluZ3M6OlJ1
bnRpbWVPYmplY3Q6OnB1dCk6CisgICAgICAgIChKU0M6OkJpbmRpbmdzOjpSdW50aW1lT2JqZWN0
OjpkZWxldGVQcm9wZXJ0eSk6CisgICAgICAgICogYnJpZGdlL3J1bnRpbWVfb2JqZWN0Lmg6Cisg
ICAgICAgIChSdW50aW1lT2JqZWN0KToKKwogMjAxMi0wNS0xMSAgU2ltb24gRnJhc2VyICA8c2lt
b24uZnJhc2VyQGFwcGxlLmNvbT4KIAogICAgICAgICBDVkRpc3BsYXlMaW5rIGtlZXBzIHJ1bm5p
bmcgYWZ0ZXIgYSBzaW5nbGUgcmVxdWVzdEFuaW1hdGlvbkZyYW1lCkluZGV4OiBTb3VyY2UvV2Vi
Q29yZS9XZWJDb3JlLmV4cC5pbgo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2ViQ29yZS9XZWJDb3Jl
LmV4cC5pbgkocmV2aXNpb24gMTE2NjY3KQorKysgU291cmNlL1dlYkNvcmUvV2ViQ29yZS5leHAu
aW4JKHdvcmtpbmcgY29weSkKQEAgLTE4ODQsMjIgKzE4ODQsMjIgQEAgX19aTjdXZWJDb3JlNUZy
YW1lMjZzZW5kT3JpZW50YXRpb25DaGFuZwogCiAjaWYgVVNFKFBMVUdJTl9IT1NUX1BST0NFU1Mp
CiBfX1pOM0pTQzEzUnVudGltZU1ldGhvZDExZ2V0Q2FsbERhdGFFUE5TXzZKU0NlbGxFUk5TXzhD
YWxsRGF0YUUKLV9fWk4zSlNDMTNSdW50aW1lTWV0aG9kMTRmaW5pc2hDcmVhdGlvbkVSTlNfMTJK
U0dsb2JhbERhdGFFUktOU18xMElkZW50aWZpZXJFCi1fX1pOM0pTQzEzUnVudGltZU1ldGhvZDE4
Z2V0T3duUHJvcGVydHlTbG90RVBOU182SlNDZWxsRVBOU185RXhlY1N0YXRlRVJLTlNfMTBJZGVu
dGlmaWVyRVJOU18xMlByb3BlcnR5U2xvdEUKLV9fWk4zSlNDMTNSdW50aW1lTWV0aG9kMjRnZXRP
d25Qcm9wZXJ0eURlc2NyaXB0b3JFUE5TXzhKU09iamVjdEVQTlNfOUV4ZWNTdGF0ZUVSS05TXzEw
SWRlbnRpZmllckVSTlNfMThQcm9wZXJ0eURlc2NyaXB0b3JFCitfX1pOM0pTQzEzUnVudGltZU1l
dGhvZDE0ZmluaXNoQ3JlYXRpb25FUk5TXzEySlNHbG9iYWxEYXRhRVJLTlNfN1VTdHJpbmdFCitf
X1pOM0pTQzEzUnVudGltZU1ldGhvZDE4Z2V0T3duUHJvcGVydHlTbG90RVBOU182SlNDZWxsRVBO
U185RXhlY1N0YXRlRU5TXzEyUHJvcGVydHlOYW1lRVJOU18xMlByb3BlcnR5U2xvdEUKK19fWk4z
SlNDMTNSdW50aW1lTWV0aG9kMjRnZXRPd25Qcm9wZXJ0eURlc2NyaXB0b3JFUE5TXzhKU09iamVj
dEVQTlNfOUV4ZWNTdGF0ZUVOU18xMlByb3BlcnR5TmFtZUVSTlNfMThQcm9wZXJ0eURlc2NyaXB0
b3JFCiBfX1pOM0pTQzEzUnVudGltZU1ldGhvZDZzX2luZm9FCiBfX1pOM0pTQzEzUnVudGltZU1l
dGhvZDdkZXN0cm95RVBOU182SlNDZWxsRQogX19aTjNKU0MxM1J1bnRpbWVNZXRob2RDMkVQTlNf
MTRKU0dsb2JhbE9iamVjdEVQTlNfOVN0cnVjdHVyZUVSTjNXVEY2VmVjdG9ySVBOU184QmluZGlu
Z3M2TWV0aG9kRUxtMEVFRQogX19aTjNKU0M4QmluZGluZ3MxMFJvb3RPYmplY3REMUV2CiBfX1pO
M0pTQzhCaW5kaW5nczEzUnVudGltZU9iamVjdDExZ2V0Q2FsbERhdGFFUE5TXzZKU0NlbGxFUk5T
XzhDYWxsRGF0YUUKIF9fWk4zSlNDOEJpbmRpbmdzMTNSdW50aW1lT2JqZWN0MTJkZWZhdWx0VmFs
dWVFUEtOU184SlNPYmplY3RFUE5TXzlFeGVjU3RhdGVFTlNfMjJQcmVmZXJyZWRQcmltaXRpdmVU
eXBlRQotX19aTjNKU0M4QmluZGluZ3MxM1J1bnRpbWVPYmplY3QxNGRlbGV0ZVByb3BlcnR5RVBO
U182SlNDZWxsRVBOU185RXhlY1N0YXRlRVJLTlNfMTBJZGVudGlmaWVyRQorX19aTjNKU0M4Qmlu
ZGluZ3MxM1J1bnRpbWVPYmplY3QxNGRlbGV0ZVByb3BlcnR5RVBOU182SlNDZWxsRVBOU185RXhl
Y1N0YXRlRU5TXzEyUHJvcGVydHlOYW1lRQogX19aTjNKU0M4QmluZGluZ3MxM1J1bnRpbWVPYmpl
Y3QxNGZpbmlzaENyZWF0aW9uRVBOU18xNEpTR2xvYmFsT2JqZWN0RQogX19aTjNKU0M4QmluZGlu
Z3MxM1J1bnRpbWVPYmplY3QxNmdldENvbnN0cnVjdERhdGFFUE5TXzZKU0NlbGxFUk5TXzEzQ29u
c3RydWN0RGF0YUUKLV9fWk4zSlNDOEJpbmRpbmdzMTNSdW50aW1lT2JqZWN0MThnZXRPd25Qcm9w
ZXJ0eVNsb3RFUE5TXzZKU0NlbGxFUE5TXzlFeGVjU3RhdGVFUktOU18xMElkZW50aWZpZXJFUk5T
XzEyUHJvcGVydHlTbG90RQorX19aTjNKU0M4QmluZGluZ3MxM1J1bnRpbWVPYmplY3QxOGdldE93
blByb3BlcnR5U2xvdEVQTlNfNkpTQ2VsbEVQTlNfOUV4ZWNTdGF0ZUVOU18xMlByb3BlcnR5TmFt
ZUVSTlNfMTJQcm9wZXJ0eVNsb3RFCiBfX1pOM0pTQzhCaW5kaW5nczEzUnVudGltZU9iamVjdDE5
Z2V0T3duUHJvcGVydHlOYW1lc0VQTlNfOEpTT2JqZWN0RVBOU185RXhlY1N0YXRlRVJOU18xN1By
b3BlcnR5TmFtZUFycmF5RU5TXzE1RW51bWVyYXRpb25Nb2RlRQotX19aTjNKU0M4QmluZGluZ3Mx
M1J1bnRpbWVPYmplY3QyNGdldE93blByb3BlcnR5RGVzY3JpcHRvckVQTlNfOEpTT2JqZWN0RVBO
U185RXhlY1N0YXRlRVJLTlNfMTBJZGVudGlmaWVyRVJOU18xOFByb3BlcnR5RGVzY3JpcHRvckUK
LV9fWk4zSlNDOEJpbmRpbmdzMTNSdW50aW1lT2JqZWN0M3B1dEVQTlNfNkpTQ2VsbEVQTlNfOUV4
ZWNTdGF0ZUVSS05TXzEwSWRlbnRpZmllckVOU183SlNWYWx1ZUVSTlNfMTVQdXRQcm9wZXJ0eVNs
b3RFCitfX1pOM0pTQzhCaW5kaW5nczEzUnVudGltZU9iamVjdDI0Z2V0T3duUHJvcGVydHlEZXNj
cmlwdG9yRVBOU184SlNPYmplY3RFUE5TXzlFeGVjU3RhdGVFTlNfMTJQcm9wZXJ0eU5hbWVFUk5T
XzE4UHJvcGVydHlEZXNjcmlwdG9yRQorX19aTjNKU0M4QmluZGluZ3MxM1J1bnRpbWVPYmplY3Qz
cHV0RVBOU182SlNDZWxsRVBOU185RXhlY1N0YXRlRU5TXzEyUHJvcGVydHlOYW1lRU5TXzdKU1Zh
bHVlRVJOU18xNVB1dFByb3BlcnR5U2xvdEUKIF9fWk4zSlNDOEJpbmRpbmdzMTNSdW50aW1lT2Jq
ZWN0NnNfaW5mb0UKIF9fWk4zSlNDOEJpbmRpbmdzMTNSdW50aW1lT2JqZWN0N2Rlc3Ryb3lFUE5T
XzZKU0NlbGxFCiBfX1pOM0pTQzhCaW5kaW5nczEzUnVudGltZU9iamVjdEMyRVBOU185RXhlY1N0
YXRlRVBOU18xNEpTR2xvYmFsT2JqZWN0RVBOU185U3RydWN0dXJlRU4zV1RGMTBQYXNzUmVmUHRy
SU5TMF84SW5zdGFuY2VFRUUKSW5kZXg6IFNvdXJjZS9XZWJDb3JlL2JpbmRpbmdzL2pzL0pTQ1NT
U3R5bGVEZWNsYXJhdGlvbkN1c3RvbS5jcHAKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL1dlYkNvcmUv
YmluZGluZ3MvanMvSlNDU1NTdHlsZURlY2xhcmF0aW9uQ3VzdG9tLmNwcAkocmV2aXNpb24gMTE2
NjY3KQorKysgU291cmNlL1dlYkNvcmUvYmluZGluZ3MvanMvSlNDU1NTdHlsZURlY2xhcmF0aW9u
Q3VzdG9tLmNwcAkod29ya2luZyBjb3B5KQpAQCAtMTc2LDE2ICsxNzYsMTYgQEAgc3RhdGljIGlu
bGluZSB2b2lkIHdyaXRlRXB1YlByZWZpeChjaGFyKgogICAgICpidWZmZXIrKyA9ICctJzsKIH0K
IAotc3RhdGljIENTU1Byb3BlcnR5SW5mbyBjc3NQcm9wZXJ0eUlERm9ySlNDU1NQcm9wZXJ0eU5h
bWUoY29uc3QgSWRlbnRpZmllciYgcHJvcGVydHlOYW1lKQorc3RhdGljIENTU1Byb3BlcnR5SW5m
byBjc3NQcm9wZXJ0eUlERm9ySlNDU1NQcm9wZXJ0eU5hbWUoUHJvcGVydHlOYW1lIHByb3BlcnR5
TmFtZSkKIHsKICAgICBDU1NQcm9wZXJ0eUluZm8gcHJvcGVydHlJbmZvID0ge0NTU1Byb3BlcnR5
SW52YWxpZCwgZmFsc2V9OwogICAgIGJvb2wgaGFkUGl4ZWxPclBvc1ByZWZpeCA9IGZhbHNlOwog
Ci0gICAgdW5zaWduZWQgbGVuZ3RoID0gcHJvcGVydHlOYW1lLmxlbmd0aCgpOworICAgIFN0cmlu
Z0ltcGwqIHByb3BlcnR5TmFtZVN0cmluZyA9IHByb3BlcnR5TmFtZS5pbXBsKCk7CisgICAgdW5z
aWduZWQgbGVuZ3RoID0gcHJvcGVydHlOYW1lU3RyaW5nLT5sZW5ndGgoKTsKICAgICBpZiAoIWxl
bmd0aCkKICAgICAgICAgcmV0dXJuIHByb3BlcnR5SW5mbzsKIAotICAgIFN0cmluZ0ltcGwqIHBy
b3BlcnR5TmFtZVN0cmluZyA9IHByb3BlcnR5TmFtZS5pbXBsKCk7CiAgICAgU3RyaW5nIHN0cmlu
Z0ZvckNhY2hlID0gU3RyaW5nKHByb3BlcnR5TmFtZVN0cmluZyk7CiAgICAgdHlwZWRlZiBIYXNo
TWFwPFN0cmluZywgQ1NTUHJvcGVydHlJbmZvPiBDU1NQcm9wZXJ0eUluZm9NYXA7CiAgICAgREVG
SU5FX1NUQVRJQ19MT0NBTChDU1NQcm9wZXJ0eUluZm9NYXAsIHByb3BlcnR5SW5mb0NhY2hlLCAo
KSk7CkBAIC0zMjAsNyArMzIwLDcgQEAgc3RhdGljIEpTVmFsdWUgY3NzUHJvcGVydHlHZXR0ZXJD
YWxsYmFjawogICAgIHJldHVybiBjc3NQcm9wZXJ0eUdldHRlcihleGVjLCBqc0Nhc3Q8SlNDU1NT
dHlsZURlY2xhcmF0aW9uKj4oYXNPYmplY3Qoc2xvdEJhc2UpKSwgcHJvcGVydHlJRCk7CiB9CiAK
LWJvb2wgSlNDU1NTdHlsZURlY2xhcmF0aW9uOjpnZXRPd25Qcm9wZXJ0eVNsb3REZWxlZ2F0ZShF
eGVjU3RhdGUqLCBjb25zdCBJZGVudGlmaWVyJiBwcm9wZXJ0eUlkZW50aWZpZXIsIFByb3BlcnR5
U2xvdCYgc2xvdCkKK2Jvb2wgSlNDU1NTdHlsZURlY2xhcmF0aW9uOjpnZXRPd25Qcm9wZXJ0eVNs
b3REZWxlZ2F0ZShFeGVjU3RhdGUqLCBQcm9wZXJ0eU5hbWUgcHJvcGVydHlJZGVudGlmaWVyLCBQ
cm9wZXJ0eVNsb3QmIHNsb3QpCiB7CiAgICAgQ1NTUHJvcGVydHlJbmZvIHByb3BlcnR5SW5mbyA9
IGNzc1Byb3BlcnR5SURGb3JKU0NTU1Byb3BlcnR5TmFtZShwcm9wZXJ0eUlkZW50aWZpZXIpOwog
ICAgIGlmICghcHJvcGVydHlJbmZvLnByb3BlcnR5SUQpCkBAIC0zMzMsNyArMzMzLDcgQEAgYm9v
bCBKU0NTU1N0eWxlRGVjbGFyYXRpb246OmdldE93blByb3BlcgogICAgIHJldHVybiB0cnVlOwog
fQogCi1ib29sIEpTQ1NTU3R5bGVEZWNsYXJhdGlvbjo6Z2V0T3duUHJvcGVydHlEZXNjcmlwdG9y
RGVsZWdhdGUoSlNDOjpFeGVjU3RhdGUqIGV4ZWMsIGNvbnN0IEpTQzo6SWRlbnRpZmllciYgcHJv
cGVydHlJZGVudGlmaWVyLCBKU0M6OlByb3BlcnR5RGVzY3JpcHRvciYgZGVzY3JpcHRvcikKK2Jv
b2wgSlNDU1NTdHlsZURlY2xhcmF0aW9uOjpnZXRPd25Qcm9wZXJ0eURlc2NyaXB0b3JEZWxlZ2F0
ZShKU0M6OkV4ZWNTdGF0ZSogZXhlYywgSlNDOjpQcm9wZXJ0eU5hbWUgcHJvcGVydHlJZGVudGlm
aWVyLCBKU0M6OlByb3BlcnR5RGVzY3JpcHRvciYgZGVzY3JpcHRvcikKIHsKICAgICBDU1NQcm9w
ZXJ0eUluZm8gcHJvcGVydHlJbmZvID0gY3NzUHJvcGVydHlJREZvckpTQ1NTUHJvcGVydHlOYW1l
KHByb3BlcnR5SWRlbnRpZmllcik7CiAgICAgaWYgKCFwcm9wZXJ0eUluZm8ucHJvcGVydHlJRCkK
QEAgLTM0OCw3ICszNDgsNyBAQCBib29sIEpTQ1NTU3R5bGVEZWNsYXJhdGlvbjo6Z2V0T3duUHJv
cGVyCiAgICAgcmV0dXJuIHRydWU7CiB9CiAKLWJvb2wgSlNDU1NTdHlsZURlY2xhcmF0aW9uOjpw
dXREZWxlZ2F0ZShFeGVjU3RhdGUqIGV4ZWMsIGNvbnN0IElkZW50aWZpZXImIHByb3BlcnR5TmFt
ZSwgSlNWYWx1ZSB2YWx1ZSwgUHV0UHJvcGVydHlTbG90JikKK2Jvb2wgSlNDU1NTdHlsZURlY2xh
cmF0aW9uOjpwdXREZWxlZ2F0ZShFeGVjU3RhdGUqIGV4ZWMsIFByb3BlcnR5TmFtZSBwcm9wZXJ0
eU5hbWUsIEpTVmFsdWUgdmFsdWUsIFB1dFByb3BlcnR5U2xvdCYpCiB7CiAgICAgQ1NTUHJvcGVy
dHlJbmZvIHByb3BlcnR5SW5mbyA9IGNzc1Byb3BlcnR5SURGb3JKU0NTU1Byb3BlcnR5TmFtZShw
cm9wZXJ0eU5hbWUpOwogICAgIGlmICghcHJvcGVydHlJbmZvLnByb3BlcnR5SUQpCkluZGV4OiBT
b3VyY2UvV2ViQ29yZS9iaW5kaW5ncy9qcy9KU0RPTUJpbmRpbmcuY3BwCj09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0t
IFNvdXJjZS9XZWJDb3JlL2JpbmRpbmdzL2pzL0pTRE9NQmluZGluZy5jcHAJKHJldmlzaW9uIDEx
NjY2NykKKysrIFNvdXJjZS9XZWJDb3JlL2JpbmRpbmdzL2pzL0pTRE9NQmluZGluZy5jcHAJKHdv
cmtpbmcgY29weSkKQEAgLTEwNywxMSArMTA3LDExIEBAIEpTVmFsdWUganNTdHJpbmdPckZhbHNl
KEV4ZWNTdGF0ZSogZXhlYywKICAgICByZXR1cm4ganNTdHJpbmcoZXhlYywgdXJsLnN0cmluZygp
KTsKIH0KIAotQXRvbWljU3RyaW5nSW1wbCogZmluZEF0b21pY1N0cmluZyhjb25zdCBJZGVudGlm
aWVyJiBpZGVudGlmaWVyKQorQXRvbWljU3RyaW5nSW1wbCogZmluZEF0b21pY1N0cmluZyhQcm9w
ZXJ0eU5hbWUgcHJvcGVydHlOYW1lKQogewotICAgIGlmIChpZGVudGlmaWVyLmlzTnVsbCgpKQor
ICAgIFN0cmluZ0ltcGwqIGltcGwgPSBwcm9wZXJ0eU5hbWUuaW1wbCgpOworICAgIGlmICghaW1w
bCkKICAgICAgICAgcmV0dXJuIDA7Ci0gICAgU3RyaW5nSW1wbCogaW1wbCA9IGlkZW50aWZpZXIu
aW1wbCgpOwogICAgIEFTU0VSVChpbXBsLT5leGlzdGluZ0hhc2goKSk7CiAgICAgcmV0dXJuIEF0
b21pY1N0cmluZzo6ZmluZChpbXBsLT5jaGFyYWN0ZXJzKCksIGltcGwtPmxlbmd0aCgpLCBpbXBs
LT5leGlzdGluZ0hhc2goKSk7CiB9CkBAIC0yNDMsOSArMjQzLDkgQEAgdm9pZCBwcmludEVycm9y
TWVzc2FnZUZvckZyYW1lKEZyYW1lKiBmcgogICAgIGZyYW1lLT5kb21XaW5kb3coKS0+cHJpbnRF
cnJvck1lc3NhZ2UobWVzc2FnZSk7CiB9CiAKLUpTVmFsdWUgb2JqZWN0VG9TdHJpbmdGdW5jdGlv
bkdldHRlcihFeGVjU3RhdGUqIGV4ZWMsIEpTVmFsdWUsIGNvbnN0IElkZW50aWZpZXImIHByb3Bl
cnR5TmFtZSkKK0pTVmFsdWUgb2JqZWN0VG9TdHJpbmdGdW5jdGlvbkdldHRlcihFeGVjU3RhdGUq
IGV4ZWMsIEpTVmFsdWUsIFByb3BlcnR5TmFtZSBwcm9wZXJ0eU5hbWUpCiB7Ci0gICAgcmV0dXJu
IEpTRnVuY3Rpb246OmNyZWF0ZShleGVjLCBleGVjLT5sZXhpY2FsR2xvYmFsT2JqZWN0KCksIDAs
IHByb3BlcnR5TmFtZSwgb2JqZWN0UHJvdG9GdW5jVG9TdHJpbmcpOworICAgIHJldHVybiBKU0Z1
bmN0aW9uOjpjcmVhdGUoZXhlYywgZXhlYy0+bGV4aWNhbEdsb2JhbE9iamVjdCgpLCAwLCBwcm9w
ZXJ0eU5hbWUuaW1wbCgpLCBvYmplY3RQcm90b0Z1bmNUb1N0cmluZyk7CiB9CiAKIFN0cnVjdHVy
ZSogZ2V0Q2FjaGVkRE9NU3RydWN0dXJlKEpTRE9NR2xvYmFsT2JqZWN0KiBnbG9iYWxPYmplY3Qs
IGNvbnN0IENsYXNzSW5mbyogY2xhc3NJbmZvKQpJbmRleDogU291cmNlL1dlYkNvcmUvYmluZGlu
Z3MvanMvSlNET01CaW5kaW5nLmgKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL1dlYkNvcmUvYmluZGlu
Z3MvanMvSlNET01CaW5kaW5nLmgJKHJldmlzaW9uIDExNjY2NykKKysrIFNvdXJjZS9XZWJDb3Jl
L2JpbmRpbmdzL2pzL0pTRE9NQmluZGluZy5oCSh3b3JraW5nIGNvcHkpCkBAIC0yNTIsMTMgKzI1
MiwxMyBAQCBlbnVtIFBhcmFtZXRlckRlZmF1bHRQb2xpY3kgewogICAgIC8vIG9iamVjdCwgdG8g
bGV0IHRoZSBlbmdpbmUga25vdyB0aGF0IGNvbGxlY3RpbmcgdGhlIEpTU3RyaW5nIHdyYXBwZXIg
aXMgdW5saWtlbHkgdG8gc2F2ZSBtZW1vcnkuCiAgICAgSlNDOjpKU1ZhbHVlIGpzT3duZWRTdHJp
bmdPck51bGwoSlNDOjpFeGVjU3RhdGUqLCBjb25zdCBTdHJpbmcmKTsgCiAKLSAgICBTdHJpbmcg
aWRlbnRpZmllclRvU3RyaW5nKGNvbnN0IEpTQzo6SWRlbnRpZmllciYpOworICAgIFN0cmluZyBw
cm9wZXJ0eU5hbWVUb1N0cmluZyhKU0M6OlByb3BlcnR5TmFtZSk7CiAgICAgU3RyaW5nIHVzdHJp
bmdUb1N0cmluZyhjb25zdCBKU0M6OlVTdHJpbmcmKTsKICAgICBKU0M6OlVTdHJpbmcgc3RyaW5n
VG9VU3RyaW5nKGNvbnN0IFN0cmluZyYpOwogCi0gICAgQXRvbWljU3RyaW5nIGlkZW50aWZpZXJU
b0F0b21pY1N0cmluZyhjb25zdCBKU0M6OklkZW50aWZpZXImKTsKKyAgICBBdG9taWNTdHJpbmcg
cHJvcGVydHlOYW1lVG9BdG9taWNTdHJpbmcoSlNDOjpQcm9wZXJ0eU5hbWUpOwogICAgIEF0b21p
Y1N0cmluZyB1c3RyaW5nVG9BdG9taWNTdHJpbmcoY29uc3QgSlNDOjpVU3RyaW5nJik7Ci0gICAg
QXRvbWljU3RyaW5nSW1wbCogZmluZEF0b21pY1N0cmluZyhjb25zdCBKU0M6OklkZW50aWZpZXIm
KTsKKyAgICBBdG9taWNTdHJpbmdJbXBsKiBmaW5kQXRvbWljU3RyaW5nKEpTQzo6UHJvcGVydHlO
YW1lKTsKIAogICAgIFN0cmluZyB2YWx1ZVRvU3RyaW5nV2l0aE51bGxDaGVjayhKU0M6OkV4ZWNT
dGF0ZSosIEpTQzo6SlNWYWx1ZSk7IC8vIG51bGwgaWYgdGhlIHZhbHVlIGlzIG51bGwKICAgICBT
dHJpbmcgdmFsdWVUb1N0cmluZ1dpdGhVbmRlZmluZWRPck51bGxDaGVjayhKU0M6OkV4ZWNTdGF0
ZSosIEpTQzo6SlNWYWx1ZSk7IC8vIG51bGwgaWYgdGhlIHZhbHVlIGlzIG51bGwgb3IgdW5kZWZp
bmVkCkBAIC0zMzcsNyArMzM3LDcgQEAgZW51bSBQYXJhbWV0ZXJEZWZhdWx0UG9saWN5IHsKICAg
ICBET01XaW5kb3cqIGZpcnN0RE9NV2luZG93KEpTQzo6RXhlY1N0YXRlKik7CiAKICAgICB2b2lk
IHByaW50RXJyb3JNZXNzYWdlRm9yRnJhbWUoRnJhbWUqLCBjb25zdCBTdHJpbmcmIG1lc3NhZ2Up
OwotICAgIEpTQzo6SlNWYWx1ZSBvYmplY3RUb1N0cmluZ0Z1bmN0aW9uR2V0dGVyKEpTQzo6RXhl
Y1N0YXRlKiwgSlNDOjpKU1ZhbHVlLCBjb25zdCBKU0M6OklkZW50aWZpZXImIHByb3BlcnR5TmFt
ZSk7CisgICAgSlNDOjpKU1ZhbHVlIG9iamVjdFRvU3RyaW5nRnVuY3Rpb25HZXR0ZXIoSlNDOjpF
eGVjU3RhdGUqLCBKU0M6OkpTVmFsdWUsIEpTQzo6UHJvcGVydHlOYW1lIHByb3BlcnR5TmFtZSk7
CiAKICAgICBpbmxpbmUgSlNDOjpKU1ZhbHVlIGpzU3RyaW5nKEpTQzo6RXhlY1N0YXRlKiBleGVj
LCBjb25zdCBTdHJpbmcmIHMpCiAgICAgewpAQCAtMzcxLDkgKzM3MSw5IEBAIGVudW0gUGFyYW1l
dGVyRGVmYXVsdFBvbGljeSB7CiAgICAgICAgIHJldHVybiBKU0M6OlVTdHJpbmcocy5pbXBsKCkp
OwogICAgIH0KIAotICAgIGlubGluZSBTdHJpbmcgaWRlbnRpZmllclRvU3RyaW5nKGNvbnN0IEpT
Qzo6SWRlbnRpZmllciYgaSkKKyAgICBpbmxpbmUgU3RyaW5nIHByb3BlcnR5TmFtZVRvU3RyaW5n
KEpTQzo6UHJvcGVydHlOYW1lIHByb3BlcnR5TmFtZSkKICAgICB7Ci0gICAgICAgIHJldHVybiBp
LmltcGwoKTsKKyAgICAgICAgcmV0dXJuIHByb3BlcnR5TmFtZS5pbXBsKCk7CiAgICAgfQogCiAg
ICAgaW5saW5lIEF0b21pY1N0cmluZyB1c3RyaW5nVG9BdG9taWNTdHJpbmcoY29uc3QgSlNDOjpV
U3RyaW5nJiB1KQpAQCAtMzgxLDkgKzM4MSw5IEBAIGVudW0gUGFyYW1ldGVyRGVmYXVsdFBvbGlj
eSB7CiAgICAgICAgIHJldHVybiBBdG9taWNTdHJpbmcodS5pbXBsKCkpOwogICAgIH0KIAotICAg
IGlubGluZSBBdG9taWNTdHJpbmcgaWRlbnRpZmllclRvQXRvbWljU3RyaW5nKGNvbnN0IEpTQzo6
SWRlbnRpZmllciYgaWRlbnRpZmllcikKKyAgICBpbmxpbmUgQXRvbWljU3RyaW5nIHByb3BlcnR5
TmFtZVRvQXRvbWljU3RyaW5nKEpTQzo6UHJvcGVydHlOYW1lIHByb3BlcnR5TmFtZSkKICAgICB7
Ci0gICAgICAgIHJldHVybiBBdG9taWNTdHJpbmcoaWRlbnRpZmllci5pbXBsKCkpOworICAgICAg
ICByZXR1cm4gQXRvbWljU3RyaW5nKHByb3BlcnR5TmFtZS5pbXBsKCkpOwogICAgIH0KIAogICAg
IGlubGluZSBWZWN0b3I8dW5zaWduZWQgbG9uZz4ganNVbnNpZ25lZExvbmdBcnJheVRvVmVjdG9y
KEpTQzo6RXhlY1N0YXRlKiBleGVjLCBKU0M6OkpTVmFsdWUgdmFsdWUpCkluZGV4OiBTb3VyY2Uv
V2ViQ29yZS9iaW5kaW5ncy9qcy9KU0RPTU1pbWVUeXBlQXJyYXlDdXN0b20uY3BwCj09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT0KLS0tIFNvdXJjZS9XZWJDb3JlL2JpbmRpbmdzL2pzL0pTRE9NTWltZVR5cGVBcnJheUN1c3Rv
bS5jcHAJKHJldmlzaW9uIDExNjY2NykKKysrIFNvdXJjZS9XZWJDb3JlL2JpbmRpbmdzL2pzL0pT
RE9NTWltZVR5cGVBcnJheUN1c3RvbS5jcHAJKHdvcmtpbmcgY29weSkKQEAgLTI4LDE1ICsyOCwx
NSBAQCBuYW1lc3BhY2UgV2ViQ29yZSB7CiAKIHVzaW5nIG5hbWVzcGFjZSBKU0M7CiAKLWJvb2wg
SlNET01NaW1lVHlwZUFycmF5OjpjYW5HZXRJdGVtc0Zvck5hbWUoRXhlY1N0YXRlKiwgRE9NTWlt
ZVR5cGVBcnJheSogbWltZVR5cGVBcnJheSwgY29uc3QgSWRlbnRpZmllciYgcHJvcGVydHlOYW1l
KQorYm9vbCBKU0RPTU1pbWVUeXBlQXJyYXk6OmNhbkdldEl0ZW1zRm9yTmFtZShFeGVjU3RhdGUq
LCBET01NaW1lVHlwZUFycmF5KiBtaW1lVHlwZUFycmF5LCBQcm9wZXJ0eU5hbWUgcHJvcGVydHlO
YW1lKQogewotICAgIHJldHVybiBtaW1lVHlwZUFycmF5LT5jYW5HZXRJdGVtc0Zvck5hbWUoaWRl
bnRpZmllclRvQXRvbWljU3RyaW5nKHByb3BlcnR5TmFtZSkpOworICAgIHJldHVybiBtaW1lVHlw
ZUFycmF5LT5jYW5HZXRJdGVtc0Zvck5hbWUocHJvcGVydHlOYW1lVG9BdG9taWNTdHJpbmcocHJv
cGVydHlOYW1lKSk7CiB9CiAKLUpTVmFsdWUgSlNET01NaW1lVHlwZUFycmF5OjpuYW1lR2V0dGVy
KEV4ZWNTdGF0ZSogZXhlYywgSlNWYWx1ZSBzbG90QmFzZSwgY29uc3QgSWRlbnRpZmllciYgcHJv
cGVydHlOYW1lKQorSlNWYWx1ZSBKU0RPTU1pbWVUeXBlQXJyYXk6Om5hbWVHZXR0ZXIoRXhlY1N0
YXRlKiBleGVjLCBKU1ZhbHVlIHNsb3RCYXNlLCBQcm9wZXJ0eU5hbWUgcHJvcGVydHlOYW1lKQog
ewogICAgIEpTRE9NTWltZVR5cGVBcnJheSogdGhpc09iaiA9IGpzQ2FzdDxKU0RPTU1pbWVUeXBl
QXJyYXkqPihhc09iamVjdChzbG90QmFzZSkpOwotICAgIHJldHVybiB0b0pTKGV4ZWMsIHRoaXNP
YmotPmdsb2JhbE9iamVjdCgpLCB0aGlzT2JqLT5pbXBsKCktPm5hbWVkSXRlbShpZGVudGlmaWVy
VG9BdG9taWNTdHJpbmcocHJvcGVydHlOYW1lKSkpOworICAgIHJldHVybiB0b0pTKGV4ZWMsIHRo
aXNPYmotPmdsb2JhbE9iamVjdCgpLCB0aGlzT2JqLT5pbXBsKCktPm5hbWVkSXRlbShwcm9wZXJ0
eU5hbWVUb0F0b21pY1N0cmluZyhwcm9wZXJ0eU5hbWUpKSk7CiB9CiAKIH0gLy8gbmFtZXNwYWNl
IFdlYkNvcmUKSW5kZXg6IFNvdXJjZS9XZWJDb3JlL2JpbmRpbmdzL2pzL0pTRE9NUGx1Z2luQXJy
YXlDdXN0b20uY3BwCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9XZWJDb3JlL2JpbmRpbmdzL2pzL0pT
RE9NUGx1Z2luQXJyYXlDdXN0b20uY3BwCShyZXZpc2lvbiAxMTY2NjcpCisrKyBTb3VyY2UvV2Vi
Q29yZS9iaW5kaW5ncy9qcy9KU0RPTVBsdWdpbkFycmF5Q3VzdG9tLmNwcAkod29ya2luZyBjb3B5
KQpAQCAtMjgsMTUgKzI4LDE1IEBAIG5hbWVzcGFjZSBXZWJDb3JlIHsKIAogdXNpbmcgbmFtZXNw
YWNlIEpTQzsKIAotYm9vbCBKU0RPTVBsdWdpbkFycmF5OjpjYW5HZXRJdGVtc0Zvck5hbWUoRXhl
Y1N0YXRlKiwgRE9NUGx1Z2luQXJyYXkqIHBsdWdpbkFycmF5LCBjb25zdCBJZGVudGlmaWVyJiBw
cm9wZXJ0eU5hbWUpCitib29sIEpTRE9NUGx1Z2luQXJyYXk6OmNhbkdldEl0ZW1zRm9yTmFtZShF
eGVjU3RhdGUqLCBET01QbHVnaW5BcnJheSogcGx1Z2luQXJyYXksIFByb3BlcnR5TmFtZSBwcm9w
ZXJ0eU5hbWUpCiB7Ci0gICAgcmV0dXJuIHBsdWdpbkFycmF5LT5jYW5HZXRJdGVtc0Zvck5hbWUo
aWRlbnRpZmllclRvQXRvbWljU3RyaW5nKHByb3BlcnR5TmFtZSkpOworICAgIHJldHVybiBwbHVn
aW5BcnJheS0+Y2FuR2V0SXRlbXNGb3JOYW1lKHByb3BlcnR5TmFtZVRvQXRvbWljU3RyaW5nKHBy
b3BlcnR5TmFtZSkpOwogfQogCi1KU1ZhbHVlIEpTRE9NUGx1Z2luQXJyYXk6Om5hbWVHZXR0ZXIo
RXhlY1N0YXRlKiBleGVjLCBKU1ZhbHVlIHNsb3RCYXNlLCBjb25zdCBJZGVudGlmaWVyJiBwcm9w
ZXJ0eU5hbWUpCitKU1ZhbHVlIEpTRE9NUGx1Z2luQXJyYXk6Om5hbWVHZXR0ZXIoRXhlY1N0YXRl
KiBleGVjLCBKU1ZhbHVlIHNsb3RCYXNlLCBQcm9wZXJ0eU5hbWUgcHJvcGVydHlOYW1lKQogewog
ICAgIEpTRE9NUGx1Z2luQXJyYXkqIHRoaXNPYmogPSBqc0Nhc3Q8SlNET01QbHVnaW5BcnJheSo+
KGFzT2JqZWN0KHNsb3RCYXNlKSk7Ci0gICAgcmV0dXJuIHRvSlMoZXhlYywgdGhpc09iai0+Z2xv
YmFsT2JqZWN0KCksIHRoaXNPYmotPmltcGwoKS0+bmFtZWRJdGVtKGlkZW50aWZpZXJUb0F0b21p
Y1N0cmluZyhwcm9wZXJ0eU5hbWUpKSk7CisgICAgcmV0dXJuIHRvSlMoZXhlYywgdGhpc09iai0+
Z2xvYmFsT2JqZWN0KCksIHRoaXNPYmotPmltcGwoKS0+bmFtZWRJdGVtKHByb3BlcnR5TmFtZVRv
QXRvbWljU3RyaW5nKHByb3BlcnR5TmFtZSkpKTsKIH0KIAogfSAvLyBuYW1lc3BhY2UgV2ViQ29y
ZQpJbmRleDogU291cmNlL1dlYkNvcmUvYmluZGluZ3MvanMvSlNET01QbHVnaW5DdXN0b20uY3Bw
Cj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT0KLS0tIFNvdXJjZS9XZWJDb3JlL2JpbmRpbmdzL2pzL0pTRE9NUGx1Z2luQ3Vz
dG9tLmNwcAkocmV2aXNpb24gMTE2NjY3KQorKysgU291cmNlL1dlYkNvcmUvYmluZGluZ3MvanMv
SlNET01QbHVnaW5DdXN0b20uY3BwCSh3b3JraW5nIGNvcHkpCkBAIC0yNywxNSArMjcsMTUgQEAg
bmFtZXNwYWNlIFdlYkNvcmUgewogCiB1c2luZyBuYW1lc3BhY2UgSlNDOwogCi1ib29sIEpTRE9N
UGx1Z2luOjpjYW5HZXRJdGVtc0Zvck5hbWUoRXhlY1N0YXRlKiwgRE9NUGx1Z2luKiBwbHVnaW4s
IGNvbnN0IElkZW50aWZpZXImIHByb3BlcnR5TmFtZSkKK2Jvb2wgSlNET01QbHVnaW46OmNhbkdl
dEl0ZW1zRm9yTmFtZShFeGVjU3RhdGUqLCBET01QbHVnaW4qIHBsdWdpbiwgUHJvcGVydHlOYW1l
IHByb3BlcnR5TmFtZSkKIHsKLSAgICByZXR1cm4gcGx1Z2luLT5jYW5HZXRJdGVtc0Zvck5hbWUo
aWRlbnRpZmllclRvQXRvbWljU3RyaW5nKHByb3BlcnR5TmFtZSkpOworICAgIHJldHVybiBwbHVn
aW4tPmNhbkdldEl0ZW1zRm9yTmFtZShwcm9wZXJ0eU5hbWVUb0F0b21pY1N0cmluZyhwcm9wZXJ0
eU5hbWUpKTsKIH0KIAotSlNWYWx1ZSBKU0RPTVBsdWdpbjo6bmFtZUdldHRlcihFeGVjU3RhdGUq
IGV4ZWMsIEpTVmFsdWUgc2xvdEJhc2UsIGNvbnN0IElkZW50aWZpZXImIHByb3BlcnR5TmFtZSkK
K0pTVmFsdWUgSlNET01QbHVnaW46Om5hbWVHZXR0ZXIoRXhlY1N0YXRlKiBleGVjLCBKU1ZhbHVl
IHNsb3RCYXNlLCBQcm9wZXJ0eU5hbWUgcHJvcGVydHlOYW1lKQogewogICAgIEpTRE9NUGx1Z2lu
KiB0aGlzT2JqID0ganNDYXN0PEpTRE9NUGx1Z2luKj4oYXNPYmplY3Qoc2xvdEJhc2UpKTsKLSAg
ICByZXR1cm4gdG9KUyhleGVjLCB0aGlzT2JqLT5nbG9iYWxPYmplY3QoKSwgdGhpc09iai0+aW1w
bCgpLT5uYW1lZEl0ZW0oaWRlbnRpZmllclRvQXRvbWljU3RyaW5nKHByb3BlcnR5TmFtZSkpKTsK
KyAgICByZXR1cm4gdG9KUyhleGVjLCB0aGlzT2JqLT5nbG9iYWxPYmplY3QoKSwgdGhpc09iai0+
aW1wbCgpLT5uYW1lZEl0ZW0ocHJvcGVydHlOYW1lVG9BdG9taWNTdHJpbmcocHJvcGVydHlOYW1l
KSkpOwogfQogCiB9IC8vIG5hbWVzcGFjZSBXZWJDb3JlCkluZGV4OiBTb3VyY2UvV2ViQ29yZS9i
aW5kaW5ncy9qcy9KU0RPTVN0cmluZ01hcEN1c3RvbS5jcHAKPT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNl
L1dlYkNvcmUvYmluZGluZ3MvanMvSlNET01TdHJpbmdNYXBDdXN0b20uY3BwCShyZXZpc2lvbiAx
MTY2NjcpCisrKyBTb3VyY2UvV2ViQ29yZS9iaW5kaW5ncy9qcy9KU0RPTVN0cmluZ01hcEN1c3Rv
bS5jcHAJKHdvcmtpbmcgY29weSkKQEAgLTM1LDE1ICszNSwxNSBAQCB1c2luZyBuYW1lc3BhY2Ug
SlNDOwogCiBuYW1lc3BhY2UgV2ViQ29yZSB7CiAKLWJvb2wgSlNET01TdHJpbmdNYXA6OmNhbkdl
dEl0ZW1zRm9yTmFtZShFeGVjU3RhdGUqLCBET01TdHJpbmdNYXAqIGltcGwsIGNvbnN0IElkZW50
aWZpZXImIHByb3BlcnR5TmFtZSkKK2Jvb2wgSlNET01TdHJpbmdNYXA6OmNhbkdldEl0ZW1zRm9y
TmFtZShFeGVjU3RhdGUqLCBET01TdHJpbmdNYXAqIGltcGwsIFByb3BlcnR5TmFtZSBwcm9wZXJ0
eU5hbWUpCiB7Ci0gICAgcmV0dXJuIGltcGwtPmNvbnRhaW5zKGlkZW50aWZpZXJUb0F0b21pY1N0
cmluZyhwcm9wZXJ0eU5hbWUpKTsKKyAgICByZXR1cm4gaW1wbC0+Y29udGFpbnMocHJvcGVydHlO
YW1lVG9BdG9taWNTdHJpbmcocHJvcGVydHlOYW1lKSk7CiB9CiAKLUpTVmFsdWUgSlNET01TdHJp
bmdNYXA6Om5hbWVHZXR0ZXIoRXhlY1N0YXRlKiBleGVjLCBKU1ZhbHVlIHNsb3RCYXNlLCBjb25z
dCBJZGVudGlmaWVyJiBwcm9wZXJ0eU5hbWUpCitKU1ZhbHVlIEpTRE9NU3RyaW5nTWFwOjpuYW1l
R2V0dGVyKEV4ZWNTdGF0ZSogZXhlYywgSlNWYWx1ZSBzbG90QmFzZSwgUHJvcGVydHlOYW1lIHBy
b3BlcnR5TmFtZSkKIHsKICAgICBKU0RPTVN0cmluZ01hcCogdGhpc09iaiA9IGpzQ2FzdDxKU0RP
TVN0cmluZ01hcCo+KGFzT2JqZWN0KHNsb3RCYXNlKSk7Ci0gICAgcmV0dXJuIGpzU3RyaW5nKGV4
ZWMsIHRoaXNPYmotPmltcGwoKS0+aXRlbShpZGVudGlmaWVyVG9BdG9taWNTdHJpbmcocHJvcGVy
dHlOYW1lKSkpOworICAgIHJldHVybiBqc1N0cmluZyhleGVjLCB0aGlzT2JqLT5pbXBsKCktPml0
ZW0ocHJvcGVydHlOYW1lVG9BdG9taWNTdHJpbmcocHJvcGVydHlOYW1lKSkpOwogfQogCiB2b2lk
IEpTRE9NU3RyaW5nTWFwOjpnZXRPd25Qcm9wZXJ0eU5hbWVzKEpTT2JqZWN0KiBvYmplY3QsIEV4
ZWNTdGF0ZSogZXhlYywgUHJvcGVydHlOYW1lQXJyYXkmIHByb3BlcnR5TmFtZXMsIEVudW1lcmF0
aW9uTW9kZSBtb2RlKQpAQCAtNTgsMTAgKzU4LDEwIEBAIHZvaWQgSlNET01TdHJpbmdNYXA6Omdl
dE93blByb3BlcnR5TmFtZXMKICAgICBCYXNlOjpnZXRPd25Qcm9wZXJ0eU5hbWVzKHRoaXNPYmpl
Y3QsIGV4ZWMsIHByb3BlcnR5TmFtZXMsIG1vZGUpOwogfQogCi1ib29sIEpTRE9NU3RyaW5nTWFw
OjpkZWxldGVQcm9wZXJ0eShKU0NlbGwqIGNlbGwsIEV4ZWNTdGF0ZSogZXhlYywgY29uc3QgSWRl
bnRpZmllciYgcHJvcGVydHlOYW1lKQorYm9vbCBKU0RPTVN0cmluZ01hcDo6ZGVsZXRlUHJvcGVy
dHkoSlNDZWxsKiBjZWxsLCBFeGVjU3RhdGUqIGV4ZWMsIFByb3BlcnR5TmFtZSBwcm9wZXJ0eU5h
bWUpCiB7CiAgICAgSlNET01TdHJpbmdNYXAqIHRoaXNPYmplY3QgPSBqc0Nhc3Q8SlNET01TdHJp
bmdNYXAqPihjZWxsKTsKLSAgICBBdG9taWNTdHJpbmcgc3RyaW5nTmFtZSA9IGlkZW50aWZpZXJU
b0F0b21pY1N0cmluZyhwcm9wZXJ0eU5hbWUpOworICAgIEF0b21pY1N0cmluZyBzdHJpbmdOYW1l
ID0gcHJvcGVydHlOYW1lVG9BdG9taWNTdHJpbmcocHJvcGVydHlOYW1lKTsKICAgICBpZiAoIXRo
aXNPYmplY3QtPm1faW1wbC0+Y29udGFpbnMoc3RyaW5nTmFtZSkpCiAgICAgICAgIHJldHVybiBm
YWxzZTsKICAgICBFeGNlcHRpb25Db2RlIGVjID0gMDsKQEAgLTcwLDEzICs3MCwxMyBAQCBib29s
IEpTRE9NU3RyaW5nTWFwOjpkZWxldGVQcm9wZXJ0eShKU0NlCiAgICAgcmV0dXJuICFlYzsKIH0K
IAotYm9vbCBKU0RPTVN0cmluZ01hcDo6cHV0RGVsZWdhdGUoRXhlY1N0YXRlKiBleGVjLCBjb25z
dCBJZGVudGlmaWVyJiBwcm9wZXJ0eU5hbWUsIEpTVmFsdWUgdmFsdWUsIFB1dFByb3BlcnR5U2xv
dCYpCitib29sIEpTRE9NU3RyaW5nTWFwOjpwdXREZWxlZ2F0ZShFeGVjU3RhdGUqIGV4ZWMsIFBy
b3BlcnR5TmFtZSBwcm9wZXJ0eU5hbWUsIEpTVmFsdWUgdmFsdWUsIFB1dFByb3BlcnR5U2xvdCYp
CiB7CiAgICAgU3RyaW5nIHN0cmluZ1ZhbHVlID0gdXN0cmluZ1RvU3RyaW5nKHZhbHVlLnRvU3Ry
aW5nKGV4ZWMpLT52YWx1ZShleGVjKSk7CiAgICAgaWYgKGV4ZWMtPmhhZEV4Y2VwdGlvbigpKQog
ICAgICAgICByZXR1cm4gZmFsc2U7CiAgICAgRXhjZXB0aW9uQ29kZSBlYyA9IDA7Ci0gICAgaW1w
bCgpLT5zZXRJdGVtKGlkZW50aWZpZXJUb1N0cmluZyhwcm9wZXJ0eU5hbWUpLCBzdHJpbmdWYWx1
ZSwgZWMpOworICAgIGltcGwoKS0+c2V0SXRlbShwcm9wZXJ0eU5hbWVUb1N0cmluZyhwcm9wZXJ0
eU5hbWUpLCBzdHJpbmdWYWx1ZSwgZWMpOwogICAgIHNldERPTUV4Y2VwdGlvbihleGVjLCBlYyk7
CiAgICAgcmV0dXJuICFlYzsKIH0KSW5kZXg6IFNvdXJjZS9XZWJDb3JlL2JpbmRpbmdzL2pzL0pT
RE9NV2luZG93Q3VzdG9tLmNwcAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2ViQ29yZS9iaW5kaW5n
cy9qcy9KU0RPTVdpbmRvd0N1c3RvbS5jcHAJKHJldmlzaW9uIDExNjY2NykKKysrIFNvdXJjZS9X
ZWJDb3JlL2JpbmRpbmdzL2pzL0pTRE9NV2luZG93Q3VzdG9tLmNwcAkod29ya2luZyBjb3B5KQpA
QCAtOTIsMTQgKzkyLDE0IEBAIHZvaWQgSlNET01XaW5kb3c6OnZpc2l0Q2hpbGRyZW4oSlNDZWxs
KiAKIH0KIAogdGVtcGxhdGU8TmF0aXZlRnVuY3Rpb24gbmF0aXZlRnVuY3Rpb24sIGludCBsZW5n
dGg+Ci1KU1ZhbHVlIG5vbkNhY2hpbmdTdGF0aWNGdW5jdGlvbkdldHRlcihFeGVjU3RhdGUqIGV4
ZWMsIEpTVmFsdWUsIGNvbnN0IElkZW50aWZpZXImIHByb3BlcnR5TmFtZSkKK0pTVmFsdWUgbm9u
Q2FjaGluZ1N0YXRpY0Z1bmN0aW9uR2V0dGVyKEV4ZWNTdGF0ZSogZXhlYywgSlNWYWx1ZSwgUHJv
cGVydHlOYW1lIHByb3BlcnR5TmFtZSkKIHsKLSAgICByZXR1cm4gSlNGdW5jdGlvbjo6Y3JlYXRl
KGV4ZWMsIGV4ZWMtPmxleGljYWxHbG9iYWxPYmplY3QoKSwgbGVuZ3RoLCBwcm9wZXJ0eU5hbWUs
IG5hdGl2ZUZ1bmN0aW9uKTsKKyAgICByZXR1cm4gSlNGdW5jdGlvbjo6Y3JlYXRlKGV4ZWMsIGV4
ZWMtPmxleGljYWxHbG9iYWxPYmplY3QoKSwgbGVuZ3RoLCBwcm9wZXJ0eU5hbWUuaW1wbCgpLCBu
YXRpdmVGdW5jdGlvbik7CiB9CiAKLXN0YXRpYyBKU1ZhbHVlIGNoaWxkRnJhbWVHZXR0ZXIoRXhl
Y1N0YXRlKiBleGVjLCBKU1ZhbHVlIHNsb3RCYXNlLCBjb25zdCBJZGVudGlmaWVyJiBwcm9wZXJ0
eU5hbWUpCitzdGF0aWMgSlNWYWx1ZSBjaGlsZEZyYW1lR2V0dGVyKEV4ZWNTdGF0ZSogZXhlYywg
SlNWYWx1ZSBzbG90QmFzZSwgUHJvcGVydHlOYW1lIHByb3BlcnR5TmFtZSkKIHsKLSAgICByZXR1
cm4gdG9KUyhleGVjLCBqc0Nhc3Q8SlNET01XaW5kb3cqPihhc09iamVjdChzbG90QmFzZSkpLT5p
bXBsKCktPmZyYW1lKCktPnRyZWUoKS0+c2NvcGVkQ2hpbGQoaWRlbnRpZmllclRvQXRvbWljU3Ry
aW5nKHByb3BlcnR5TmFtZSkpLT5kb21XaW5kb3coKSk7CisgICAgcmV0dXJuIHRvSlMoZXhlYywg
anNDYXN0PEpTRE9NV2luZG93Kj4oYXNPYmplY3Qoc2xvdEJhc2UpKS0+aW1wbCgpLT5mcmFtZSgp
LT50cmVlKCktPnNjb3BlZENoaWxkKHByb3BlcnR5TmFtZVRvQXRvbWljU3RyaW5nKHByb3BlcnR5
TmFtZSkpLT5kb21XaW5kb3coKSk7CiB9CiAKIHN0YXRpYyBKU1ZhbHVlIGluZGV4R2V0dGVyKEV4
ZWNTdGF0ZSogZXhlYywgSlNWYWx1ZSBzbG90QmFzZSwgdW5zaWduZWQgaW5kZXgpCkBAIC0xMDcs
NyArMTA3LDcgQEAgc3RhdGljIEpTVmFsdWUgaW5kZXhHZXR0ZXIoRXhlY1N0YXRlKiBleAogICAg
IHJldHVybiB0b0pTKGV4ZWMsIGpzQ2FzdDxKU0RPTVdpbmRvdyo+KGFzT2JqZWN0KHNsb3RCYXNl
KSktPmltcGwoKS0+ZnJhbWUoKS0+dHJlZSgpLT5zY29wZWRDaGlsZChpbmRleCktPmRvbVdpbmRv
dygpKTsKIH0KIAotc3RhdGljIEpTVmFsdWUgbmFtZWRJdGVtR2V0dGVyKEV4ZWNTdGF0ZSogZXhl
YywgSlNWYWx1ZSBzbG90QmFzZSwgY29uc3QgSWRlbnRpZmllciYgcHJvcGVydHlOYW1lKQorc3Rh
dGljIEpTVmFsdWUgbmFtZWRJdGVtR2V0dGVyKEV4ZWNTdGF0ZSogZXhlYywgSlNWYWx1ZSBzbG90
QmFzZSwgUHJvcGVydHlOYW1lIHByb3BlcnR5TmFtZSkKIHsKICAgICBKU0RPTVdpbmRvd0Jhc2Uq
IHRoaXNPYmogPSBqc0Nhc3Q8SlNET01XaW5kb3cqPihhc09iamVjdChzbG90QmFzZSkpOwogICAg
IERvY3VtZW50KiBkb2N1bWVudCA9IHRoaXNPYmotPmltcGwoKS0+ZnJhbWUoKS0+ZG9jdW1lbnQo
KTsKQEAgLTExNiwxMyArMTE2LDEzIEBAIHN0YXRpYyBKU1ZhbHVlIG5hbWVkSXRlbUdldHRlcihF
eGVjU3RhdGUKICAgICBBU1NFUlQoZG9jdW1lbnQpOwogICAgIEFTU0VSVChkb2N1bWVudC0+aXNI
VE1MRG9jdW1lbnQoKSk7CiAKLSAgICBIVE1MQ29sbGVjdGlvbiogY29sbGVjdGlvbiA9IGRvY3Vt
ZW50LT53aW5kb3dOYW1lZEl0ZW1zKGlkZW50aWZpZXJUb0F0b21pY1N0cmluZyhwcm9wZXJ0eU5h
bWUpKTsKKyAgICBIVE1MQ29sbGVjdGlvbiogY29sbGVjdGlvbiA9IGRvY3VtZW50LT53aW5kb3dO
YW1lZEl0ZW1zKHByb3BlcnR5TmFtZVRvQXRvbWljU3RyaW5nKHByb3BlcnR5TmFtZSkpOwogICAg
IGlmIChjb2xsZWN0aW9uLT5sZW5ndGgoKSA9PSAxKQogICAgICAgICByZXR1cm4gdG9KUyhleGVj
LCB0aGlzT2JqLCBjb2xsZWN0aW9uLT5maXJzdEl0ZW0oKSk7CiAgICAgcmV0dXJuIHRvSlMoZXhl
YywgdGhpc09iaiwgY29sbGVjdGlvbik7CiB9CiAKLWJvb2wgSlNET01XaW5kb3c6OmdldE93blBy
b3BlcnR5U2xvdChKU0NlbGwqIGNlbGwsIEV4ZWNTdGF0ZSogZXhlYywgY29uc3QgSWRlbnRpZmll
ciYgcHJvcGVydHlOYW1lLCBQcm9wZXJ0eVNsb3QmIHNsb3QpCitib29sIEpTRE9NV2luZG93Ojpn
ZXRPd25Qcm9wZXJ0eVNsb3QoSlNDZWxsKiBjZWxsLCBFeGVjU3RhdGUqIGV4ZWMsIFByb3BlcnR5
TmFtZSBwcm9wZXJ0eU5hbWUsIFByb3BlcnR5U2xvdCYgc2xvdCkKIHsKICAgICBKU0RPTVdpbmRv
dyogdGhpc09iamVjdCA9IGpzQ2FzdDxKU0RPTVdpbmRvdyo+KGNlbGwpOwogICAgIC8vIFdoZW4g
YWNjZXNzaW5nIGEgV2luZG93IGNyb3NzLWRvbWFpbiwgZnVuY3Rpb25zIGFyZSBhbHdheXMgdGhl
IG5hdGl2ZSBidWlsdC1pbiBvbmVzLCBhbmQgdGhleQpAQCAtMjIwLDcgKzIyMCw3IEBAIGJvb2wg
SlNET01XaW5kb3c6OmdldE93blByb3BlcnR5U2xvdChKU0MKICAgICAvLyBuYW1pbmcgZnJhbWVz
IHRoaW5ncyB0aGF0IGNvbmZsaWN0IHdpdGggd2luZG93IHByb3BlcnRpZXMgdGhhdAogICAgIC8v
IGFyZSBpbiBNb3ogYnV0IG5vdCBJRS4gU2luY2Ugd2UgaGF2ZSBzb21lIG9mIHRoZXNlLCB3ZSBo
YXZlIHRvIGRvCiAgICAgLy8gaXQgdGhlIE1veiB3YXkuCi0gICAgaWYgKHRoaXNPYmplY3QtPmlt
cGwoKS0+ZnJhbWUoKS0+dHJlZSgpLT5zY29wZWRDaGlsZChpZGVudGlmaWVyVG9BdG9taWNTdHJp
bmcocHJvcGVydHlOYW1lKSkpIHsKKyAgICBpZiAodGhpc09iamVjdC0+aW1wbCgpLT5mcmFtZSgp
LT50cmVlKCktPnNjb3BlZENoaWxkKHByb3BlcnR5TmFtZVRvQXRvbWljU3RyaW5nKHByb3BlcnR5
TmFtZSkpKSB7CiAgICAgICAgIHNsb3Quc2V0Q3VzdG9tKHRoaXNPYmplY3QsIGNoaWxkRnJhbWVH
ZXR0ZXIpOwogICAgICAgICByZXR1cm4gdHJ1ZTsKICAgICB9CkBAIC0yNDIsOSArMjQyLDkgQEAg
Ym9vbCBKU0RPTVdpbmRvdzo6Z2V0T3duUHJvcGVydHlTbG90KEpTQwogICAgIC8vIFdlIG5lZWQg
dG8gdGVzdCB0aGUgY29ycmVjdCBwcmlvcml0eSBvcmRlci4KIAogICAgIC8vIGFsbG93IHdpbmRv
d1sxXSBvciBwYXJlbnRbMV0gZXRjLiAoIzU2OTgzKQotICAgIGJvb2wgb2s7Ci0gICAgdW5zaWdu
ZWQgaSA9IHByb3BlcnR5TmFtZS50b0FycmF5SW5kZXgob2spOwotICAgIGlmIChvayAmJiBpIDwg
dGhpc09iamVjdC0+aW1wbCgpLT5mcmFtZSgpLT50cmVlKCktPnNjb3BlZENoaWxkQ291bnQoKSkg
eworICAgIHVuc2lnbmVkIGkgPSBwcm9wZXJ0eU5hbWUuYXNJbmRleCgpOworICAgIGlmIChpIDwg
dGhpc09iamVjdC0+aW1wbCgpLT5mcmFtZSgpLT50cmVlKCktPnNjb3BlZENoaWxkQ291bnQoKSkg
eworICAgICAgICBBU1NFUlQoaSAhPSBQcm9wZXJ0eU5hbWU6Ok5vdEFuSW5kZXgpOwogICAgICAg
ICBzbG90LnNldEN1c3RvbUluZGV4KHRoaXNPYmplY3QsIGksIGluZGV4R2V0dGVyKTsKICAgICAg
ICAgcmV0dXJuIHRydWU7CiAgICAgfQpAQCAtMjY4LDcgKzI2OCw3IEBAIGJvb2wgSlNET01XaW5k
b3c6OmdldE93blByb3BlcnR5U2xvdChKU0MKICAgICByZXR1cm4gQmFzZTo6Z2V0T3duUHJvcGVy
dHlTbG90KHRoaXNPYmplY3QsIGV4ZWMsIHByb3BlcnR5TmFtZSwgc2xvdCk7CiB9CiAKLWJvb2wg
SlNET01XaW5kb3c6OmdldE93blByb3BlcnR5RGVzY3JpcHRvcihKU09iamVjdCogb2JqZWN0LCBF
eGVjU3RhdGUqIGV4ZWMsIGNvbnN0IElkZW50aWZpZXImIHByb3BlcnR5TmFtZSwgUHJvcGVydHlE
ZXNjcmlwdG9yJiBkZXNjcmlwdG9yKQorYm9vbCBKU0RPTVdpbmRvdzo6Z2V0T3duUHJvcGVydHlE
ZXNjcmlwdG9yKEpTT2JqZWN0KiBvYmplY3QsIEV4ZWNTdGF0ZSogZXhlYywgUHJvcGVydHlOYW1l
IHByb3BlcnR5TmFtZSwgUHJvcGVydHlEZXNjcmlwdG9yJiBkZXNjcmlwdG9yKQogewogICAgIEpT
RE9NV2luZG93KiB0aGlzT2JqZWN0ID0ganNDYXN0PEpTRE9NV2luZG93Kj4ob2JqZWN0KTsKICAg
ICAvLyBOZXZlciBhbGxvdyBjcm9zcy1kb21haW4gZ2V0T3duUHJvcGVydHlEZXNjcmlwdG9yCkBA
IC0zMTAsMTYgKzMxMCwxNiBAQCBib29sIEpTRE9NV2luZG93OjpnZXRPd25Qcm9wZXJ0eURlc2Ny
aXB0CiAgICAgLy8gbmFtaW5nIGZyYW1lcyB0aGluZ3MgdGhhdCBjb25mbGljdCB3aXRoIHdpbmRv
dyBwcm9wZXJ0aWVzIHRoYXQKICAgICAvLyBhcmUgaW4gTW96IGJ1dCBub3QgSUUuIFNpbmNlIHdl
IGhhdmUgc29tZSBvZiB0aGVzZSwgd2UgaGF2ZSB0byBkbwogICAgIC8vIGl0IHRoZSBNb3ogd2F5
LgotICAgIGlmICh0aGlzT2JqZWN0LT5pbXBsKCktPmZyYW1lKCktPnRyZWUoKS0+c2NvcGVkQ2hp
bGQoaWRlbnRpZmllclRvQXRvbWljU3RyaW5nKHByb3BlcnR5TmFtZSkpKSB7CisgICAgaWYgKHRo
aXNPYmplY3QtPmltcGwoKS0+ZnJhbWUoKS0+dHJlZSgpLT5zY29wZWRDaGlsZChwcm9wZXJ0eU5h
bWVUb0F0b21pY1N0cmluZyhwcm9wZXJ0eU5hbWUpKSkgewogICAgICAgICBQcm9wZXJ0eVNsb3Qg
c2xvdDsKICAgICAgICAgc2xvdC5zZXRDdXN0b20odGhpc09iamVjdCwgY2hpbGRGcmFtZUdldHRl
cik7CiAgICAgICAgIGRlc2NyaXB0b3Iuc2V0RGVzY3JpcHRvcihzbG90LmdldFZhbHVlKGV4ZWMs
IHByb3BlcnR5TmFtZSksIFJlYWRPbmx5IHwgRG9udERlbGV0ZSB8IERvbnRFbnVtKTsKICAgICAg
ICAgcmV0dXJuIHRydWU7CiAgICAgfQogICAgIAotICAgIGJvb2wgb2s7Ci0gICAgdW5zaWduZWQg
aSA9IHByb3BlcnR5TmFtZS50b0FycmF5SW5kZXgob2spOwotICAgIGlmIChvayAmJiBpIDwgdGhp
c09iamVjdC0+aW1wbCgpLT5mcmFtZSgpLT50cmVlKCktPnNjb3BlZENoaWxkQ291bnQoKSkgewor
ICAgIHVuc2lnbmVkIGkgPSBwcm9wZXJ0eU5hbWUuYXNJbmRleCgpOworICAgIGlmIChpIDwgdGhp
c09iamVjdC0+aW1wbCgpLT5mcmFtZSgpLT50cmVlKCktPnNjb3BlZENoaWxkQ291bnQoKSkgewor
ICAgICAgICBBU1NFUlQoaSAhPSBQcm9wZXJ0eU5hbWU6Ok5vdEFuSW5kZXgpOwogICAgICAgICBQ
cm9wZXJ0eVNsb3Qgc2xvdDsKICAgICAgICAgc2xvdC5zZXRDdXN0b21JbmRleCh0aGlzT2JqZWN0
LCBpLCBpbmRleEdldHRlcik7CiAgICAgICAgIGRlc2NyaXB0b3Iuc2V0RGVzY3JpcHRvcihzbG90
LmdldFZhbHVlKGV4ZWMsIHByb3BlcnR5TmFtZSksIFJlYWRPbmx5IHwgRG9udERlbGV0ZSB8IERv
bnRFbnVtKTsKQEAgLTM0MSw3ICszNDEsNyBAQCBib29sIEpTRE9NV2luZG93OjpnZXRPd25Qcm9w
ZXJ0eURlc2NyaXB0CiAgICAgcmV0dXJuIEJhc2U6OmdldE93blByb3BlcnR5RGVzY3JpcHRvcih0
aGlzT2JqZWN0LCBleGVjLCBwcm9wZXJ0eU5hbWUsIGRlc2NyaXB0b3IpOwogfQogCi12b2lkIEpT
RE9NV2luZG93OjpwdXQoSlNDZWxsKiBjZWxsLCBFeGVjU3RhdGUqIGV4ZWMsIGNvbnN0IElkZW50
aWZpZXImIHByb3BlcnR5TmFtZSwgSlNWYWx1ZSB2YWx1ZSwgUHV0UHJvcGVydHlTbG90JiBzbG90
KQordm9pZCBKU0RPTVdpbmRvdzo6cHV0KEpTQ2VsbCogY2VsbCwgRXhlY1N0YXRlKiBleGVjLCBQ
cm9wZXJ0eU5hbWUgcHJvcGVydHlOYW1lLCBKU1ZhbHVlIHZhbHVlLCBQdXRQcm9wZXJ0eVNsb3Qm
IHNsb3QpCiB7CiAgICAgSlNET01XaW5kb3cqIHRoaXNPYmplY3QgPSBqc0Nhc3Q8SlNET01XaW5k
b3cqPihjZWxsKTsKICAgICBpZiAoIXRoaXNPYmplY3QtPmltcGwoKS0+ZnJhbWUoKSkKQEAgLTM2
MSw3ICszNjEsNyBAQCB2b2lkIEpTRE9NV2luZG93OjpwdXQoSlNDZWxsKiBjZWxsLCBFeGVjCiAg
ICAgICAgIEJhc2U6OnB1dCh0aGlzT2JqZWN0LCBleGVjLCBwcm9wZXJ0eU5hbWUsIHZhbHVlLCBz
bG90KTsKIH0KIAotYm9vbCBKU0RPTVdpbmRvdzo6ZGVsZXRlUHJvcGVydHkoSlNDZWxsKiBjZWxs
LCBFeGVjU3RhdGUqIGV4ZWMsIGNvbnN0IElkZW50aWZpZXImIHByb3BlcnR5TmFtZSkKK2Jvb2wg
SlNET01XaW5kb3c6OmRlbGV0ZVByb3BlcnR5KEpTQ2VsbCogY2VsbCwgRXhlY1N0YXRlKiBleGVj
LCBQcm9wZXJ0eU5hbWUgcHJvcGVydHlOYW1lKQogewogICAgIEpTRE9NV2luZG93KiB0aGlzT2Jq
ZWN0ID0ganNDYXN0PEpTRE9NV2luZG93Kj4oY2VsbCk7CiAgICAgLy8gT25seSBhbGxvdyBkZWxl
dGluZyBwcm9wZXJ0aWVzIGJ5IGZyYW1lcyBpbiB0aGUgc2FtZSBvcmlnaW4uCkBAIC0zODgsNyAr
Mzg4LDcgQEAgdm9pZCBKU0RPTVdpbmRvdzo6Z2V0T3duUHJvcGVydHlOYW1lcyhKUwogICAgIEJh
c2U6OmdldE93blByb3BlcnR5TmFtZXModGhpc09iamVjdCwgZXhlYywgcHJvcGVydHlOYW1lcywg
bW9kZSk7CiB9CiAKLWJvb2wgSlNET01XaW5kb3c6OmRlZmluZU93blByb3BlcnR5KEpTQzo6SlNP
YmplY3QqIG9iamVjdCwgSlNDOjpFeGVjU3RhdGUqIGV4ZWMsIGNvbnN0IEpTQzo6SWRlbnRpZmll
ciYgcHJvcGVydHlOYW1lLCBKU0M6OlByb3BlcnR5RGVzY3JpcHRvciYgZGVzY3JpcHRvciwgYm9v
bCBzaG91bGRUaHJvdykKK2Jvb2wgSlNET01XaW5kb3c6OmRlZmluZU93blByb3BlcnR5KEpTQzo6
SlNPYmplY3QqIG9iamVjdCwgSlNDOjpFeGVjU3RhdGUqIGV4ZWMsIEpTQzo6UHJvcGVydHlOYW1l
IHByb3BlcnR5TmFtZSwgSlNDOjpQcm9wZXJ0eURlc2NyaXB0b3ImIGRlc2NyaXB0b3IsIGJvb2wg
c2hvdWxkVGhyb3cpCiB7CiAgICAgSlNET01XaW5kb3cqIHRoaXNPYmplY3QgPSBqc0Nhc3Q8SlNE
T01XaW5kb3cqPihvYmplY3QpOwogICAgIC8vIE9ubHkgYWxsb3cgZGVmaW5pbmcgcHJvcGVydGll
cyBpbiB0aGlzIHdheSBieSBmcmFtZXMgaW4gdGhlIHNhbWUgb3JpZ2luLCBhcyBpdCBhbGxvd3Mg
c2V0dGVycyB0byBiZSBpbnRyb2R1Y2VkLgpAQCAtMzk2LDcgKzM5Niw3IEBAIGJvb2wgSlNET01X
aW5kb3c6OmRlZmluZU93blByb3BlcnR5KEpTQzoKICAgICAgICAgcmV0dXJuIGZhbHNlOwogCiAg
ICAgLy8gRG9uJ3QgYWxsb3cgc2hhZG93aW5nIGxvY2F0aW9uIHVzaW5nIGFjY2Vzc29yIHByb3Bl
cnRpZXMuCi0gICAgaWYgKGRlc2NyaXB0b3IuaXNBY2Nlc3NvckRlc2NyaXB0b3IoKSAmJiBwcm9w
ZXJ0eU5hbWUgPT0gImxvY2F0aW9uIikKKyAgICBpZiAoZGVzY3JpcHRvci5pc0FjY2Vzc29yRGVz
Y3JpcHRvcigpICYmIHByb3BlcnR5TmFtZSA9PSBJZGVudGlmaWVyKGV4ZWMsICJsb2NhdGlvbiIp
KQogICAgICAgICByZXR1cm4gZmFsc2U7CiAKICAgICByZXR1cm4gQmFzZTo6ZGVmaW5lT3duUHJv
cGVydHkodGhpc09iamVjdCwgZXhlYywgcHJvcGVydHlOYW1lLCBkZXNjcmlwdG9yLCBzaG91bGRU
aHJvdyk7CkluZGV4OiBTb3VyY2UvV2ViQ29yZS9iaW5kaW5ncy9qcy9KU0RPTVdpbmRvd1NoZWxs
LmNwcAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2ViQ29yZS9iaW5kaW5ncy9qcy9KU0RPTVdpbmRv
d1NoZWxsLmNwcAkocmV2aXNpb24gMTE2NjY3KQorKysgU291cmNlL1dlYkNvcmUvYmluZGluZ3Mv
anMvSlNET01XaW5kb3dTaGVsbC5jcHAJKHdvcmtpbmcgY29weSkKQEAgLTkxLDM3ICs5MSwzNyBA
QCBVU3RyaW5nIEpTRE9NV2luZG93U2hlbGw6OmNsYXNzTmFtZShjb25zCiAgICAgcmV0dXJuIHRo
aXNPYmplY3QtPndpbmRvdygpLT5tZXRob2RUYWJsZSgpLT5jbGFzc05hbWUodGhpc09iamVjdC0+
d2luZG93KCkpOwogfQogCi1ib29sIEpTRE9NV2luZG93U2hlbGw6OmdldE93blByb3BlcnR5U2xv
dChKU0NlbGwqIGNlbGwsIEV4ZWNTdGF0ZSogZXhlYywgY29uc3QgSWRlbnRpZmllciYgcHJvcGVy
dHlOYW1lLCBQcm9wZXJ0eVNsb3QmIHNsb3QpCitib29sIEpTRE9NV2luZG93U2hlbGw6OmdldE93
blByb3BlcnR5U2xvdChKU0NlbGwqIGNlbGwsIEV4ZWNTdGF0ZSogZXhlYywgUHJvcGVydHlOYW1l
IHByb3BlcnR5TmFtZSwgUHJvcGVydHlTbG90JiBzbG90KQogewogICAgIEpTRE9NV2luZG93U2hl
bGwqIHRoaXNPYmplY3QgPSBqc0Nhc3Q8SlNET01XaW5kb3dTaGVsbCo+KGNlbGwpOwogICAgIHJl
dHVybiB0aGlzT2JqZWN0LT53aW5kb3coKS0+bWV0aG9kVGFibGUoKS0+Z2V0T3duUHJvcGVydHlT
bG90KHRoaXNPYmplY3QtPndpbmRvdygpLCBleGVjLCBwcm9wZXJ0eU5hbWUsIHNsb3QpOwogfQog
Ci1ib29sIEpTRE9NV2luZG93U2hlbGw6OmdldE93blByb3BlcnR5RGVzY3JpcHRvcihKU09iamVj
dCogb2JqZWN0LCBFeGVjU3RhdGUqIGV4ZWMsIGNvbnN0IElkZW50aWZpZXImIHByb3BlcnR5TmFt
ZSwgUHJvcGVydHlEZXNjcmlwdG9yJiBkZXNjcmlwdG9yKQorYm9vbCBKU0RPTVdpbmRvd1NoZWxs
OjpnZXRPd25Qcm9wZXJ0eURlc2NyaXB0b3IoSlNPYmplY3QqIG9iamVjdCwgRXhlY1N0YXRlKiBl
eGVjLCBQcm9wZXJ0eU5hbWUgcHJvcGVydHlOYW1lLCBQcm9wZXJ0eURlc2NyaXB0b3ImIGRlc2Ny
aXB0b3IpCiB7CiAgICAgSlNET01XaW5kb3dTaGVsbCogdGhpc09iamVjdCA9IGpzQ2FzdDxKU0RP
TVdpbmRvd1NoZWxsKj4ob2JqZWN0KTsKICAgICByZXR1cm4gdGhpc09iamVjdC0+d2luZG93KCkt
Pm1ldGhvZFRhYmxlKCktPmdldE93blByb3BlcnR5RGVzY3JpcHRvcih0aGlzT2JqZWN0LT53aW5k
b3coKSwgZXhlYywgcHJvcGVydHlOYW1lLCBkZXNjcmlwdG9yKTsKIH0KIAotdm9pZCBKU0RPTVdp
bmRvd1NoZWxsOjpwdXQoSlNDZWxsKiBjZWxsLCBFeGVjU3RhdGUqIGV4ZWMsIGNvbnN0IElkZW50
aWZpZXImIHByb3BlcnR5TmFtZSwgSlNWYWx1ZSB2YWx1ZSwgUHV0UHJvcGVydHlTbG90JiBzbG90
KQordm9pZCBKU0RPTVdpbmRvd1NoZWxsOjpwdXQoSlNDZWxsKiBjZWxsLCBFeGVjU3RhdGUqIGV4
ZWMsIFByb3BlcnR5TmFtZSBwcm9wZXJ0eU5hbWUsIEpTVmFsdWUgdmFsdWUsIFB1dFByb3BlcnR5
U2xvdCYgc2xvdCkKIHsKICAgICBKU0RPTVdpbmRvd1NoZWxsKiB0aGlzT2JqZWN0ID0ganNDYXN0
PEpTRE9NV2luZG93U2hlbGwqPihjZWxsKTsKICAgICB0aGlzT2JqZWN0LT53aW5kb3coKS0+bWV0
aG9kVGFibGUoKS0+cHV0KHRoaXNPYmplY3QtPndpbmRvdygpLCBleGVjLCBwcm9wZXJ0eU5hbWUs
IHZhbHVlLCBzbG90KTsKIH0KIAotdm9pZCBKU0RPTVdpbmRvd1NoZWxsOjpwdXREaXJlY3RWaXJ0
dWFsKEpTT2JqZWN0KiBvYmplY3QsIEV4ZWNTdGF0ZSogZXhlYywgY29uc3QgSWRlbnRpZmllciYg
cHJvcGVydHlOYW1lLCBKU1ZhbHVlIHZhbHVlLCB1bnNpZ25lZCBhdHRyaWJ1dGVzKQordm9pZCBK
U0RPTVdpbmRvd1NoZWxsOjpwdXREaXJlY3RWaXJ0dWFsKEpTT2JqZWN0KiBvYmplY3QsIEV4ZWNT
dGF0ZSogZXhlYywgUHJvcGVydHlOYW1lIHByb3BlcnR5TmFtZSwgSlNWYWx1ZSB2YWx1ZSwgdW5z
aWduZWQgYXR0cmlidXRlcykKIHsKICAgICBKU0RPTVdpbmRvd1NoZWxsKiB0aGlzT2JqZWN0ID0g
anNDYXN0PEpTRE9NV2luZG93U2hlbGwqPihvYmplY3QpOwogICAgIHRoaXNPYmplY3QtPndpbmRv
dygpLT5wdXREaXJlY3RWaXJ0dWFsKHRoaXNPYmplY3QtPndpbmRvdygpLCBleGVjLCBwcm9wZXJ0
eU5hbWUsIHZhbHVlLCBhdHRyaWJ1dGVzKTsKIH0KIAotYm9vbCBKU0RPTVdpbmRvd1NoZWxsOjpk
ZWZpbmVPd25Qcm9wZXJ0eShKU0M6OkpTT2JqZWN0KiBvYmplY3QsIEpTQzo6RXhlY1N0YXRlKiBl
eGVjLCBjb25zdCBKU0M6OklkZW50aWZpZXImIHByb3BlcnR5TmFtZSwgSlNDOjpQcm9wZXJ0eURl
c2NyaXB0b3ImIGRlc2NyaXB0b3IsIGJvb2wgc2hvdWxkVGhyb3cpCitib29sIEpTRE9NV2luZG93
U2hlbGw6OmRlZmluZU93blByb3BlcnR5KEpTQzo6SlNPYmplY3QqIG9iamVjdCwgSlNDOjpFeGVj
U3RhdGUqIGV4ZWMsIEpTQzo6UHJvcGVydHlOYW1lIHByb3BlcnR5TmFtZSwgSlNDOjpQcm9wZXJ0
eURlc2NyaXB0b3ImIGRlc2NyaXB0b3IsIGJvb2wgc2hvdWxkVGhyb3cpCiB7CiAgICAgSlNET01X
aW5kb3dTaGVsbCogdGhpc09iamVjdCA9IGpzQ2FzdDxKU0RPTVdpbmRvd1NoZWxsKj4ob2JqZWN0
KTsKICAgICByZXR1cm4gdGhpc09iamVjdC0+d2luZG93KCktPm1ldGhvZFRhYmxlKCktPmRlZmlu
ZU93blByb3BlcnR5KHRoaXNPYmplY3QtPndpbmRvdygpLCBleGVjLCBwcm9wZXJ0eU5hbWUsIGRl
c2NyaXB0b3IsIHNob3VsZFRocm93KTsKIH0KIAotYm9vbCBKU0RPTVdpbmRvd1NoZWxsOjpkZWxl
dGVQcm9wZXJ0eShKU0NlbGwqIGNlbGwsIEV4ZWNTdGF0ZSogZXhlYywgY29uc3QgSWRlbnRpZmll
ciYgcHJvcGVydHlOYW1lKQorYm9vbCBKU0RPTVdpbmRvd1NoZWxsOjpkZWxldGVQcm9wZXJ0eShK
U0NlbGwqIGNlbGwsIEV4ZWNTdGF0ZSogZXhlYywgUHJvcGVydHlOYW1lIHByb3BlcnR5TmFtZSkK
IHsKICAgICBKU0RPTVdpbmRvd1NoZWxsKiB0aGlzT2JqZWN0ID0ganNDYXN0PEpTRE9NV2luZG93
U2hlbGwqPihjZWxsKTsKICAgICByZXR1cm4gdGhpc09iamVjdC0+d2luZG93KCktPm1ldGhvZFRh
YmxlKCktPmRlbGV0ZVByb3BlcnR5KHRoaXNPYmplY3QtPndpbmRvdygpLCBleGVjLCBwcm9wZXJ0
eU5hbWUpOwpJbmRleDogU291cmNlL1dlYkNvcmUvYmluZGluZ3MvanMvSlNET01XaW5kb3dTaGVs
bC5oCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9XZWJDb3JlL2JpbmRpbmdzL2pzL0pTRE9NV2luZG93
U2hlbGwuaAkocmV2aXNpb24gMTE2NjY3KQorKysgU291cmNlL1dlYkNvcmUvYmluZGluZ3MvanMv
SlNET01XaW5kb3dTaGVsbC5oCSh3b3JraW5nIGNvcHkpCkBAIC03OCwxNCArNzgsMTQgQEAgbmFt
ZXNwYWNlIFdlYkNvcmUgewogICAgICAgICBzdGF0aWMgY29uc3QgdW5zaWduZWQgU3RydWN0dXJl
RmxhZ3MgPSBKU0M6Ok92ZXJyaWRlc0dldE93blByb3BlcnR5U2xvdCB8IEpTQzo6T3ZlcnJpZGVz
R2V0UHJvcGVydHlOYW1lcyB8IEJhc2U6OlN0cnVjdHVyZUZsYWdzOwogCiAgICAgICAgIHN0YXRp
YyBKU0M6OlVTdHJpbmcgY2xhc3NOYW1lKGNvbnN0IEpTQzo6SlNPYmplY3QqKTsKLSAgICAgICAg
c3RhdGljIGJvb2wgZ2V0T3duUHJvcGVydHlTbG90KEpTQzo6SlNDZWxsKiwgSlNDOjpFeGVjU3Rh
dGUqLCBjb25zdCBKU0M6OklkZW50aWZpZXImIHByb3BlcnR5TmFtZSwgSlNDOjpQcm9wZXJ0eVNs
b3QmKTsKLSAgICAgICAgc3RhdGljIGJvb2wgZ2V0T3duUHJvcGVydHlEZXNjcmlwdG9yKEpTQzo6
SlNPYmplY3QqLCBKU0M6OkV4ZWNTdGF0ZSosIGNvbnN0IEpTQzo6SWRlbnRpZmllciYgcHJvcGVy
dHlOYW1lLCBKU0M6OlByb3BlcnR5RGVzY3JpcHRvciYpOwotICAgICAgICBzdGF0aWMgdm9pZCBw
dXQoSlNDOjpKU0NlbGwqLCBKU0M6OkV4ZWNTdGF0ZSosIGNvbnN0IEpTQzo6SWRlbnRpZmllciYg
cHJvcGVydHlOYW1lLCBKU0M6OkpTVmFsdWUsIEpTQzo6UHV0UHJvcGVydHlTbG90Jik7Ci0gICAg
ICAgIHN0YXRpYyB2b2lkIHB1dERpcmVjdFZpcnR1YWwoSlNDOjpKU09iamVjdCosIEpTQzo6RXhl
Y1N0YXRlKiwgY29uc3QgSlNDOjpJZGVudGlmaWVyJiBwcm9wZXJ0eU5hbWUsIEpTQzo6SlNWYWx1
ZSwgdW5zaWduZWQgYXR0cmlidXRlcyk7Ci0gICAgICAgIHN0YXRpYyBib29sIGRlbGV0ZVByb3Bl
cnR5KEpTQzo6SlNDZWxsKiwgSlNDOjpFeGVjU3RhdGUqLCBjb25zdCBKU0M6OklkZW50aWZpZXIm
IHByb3BlcnR5TmFtZSk7CisgICAgICAgIHN0YXRpYyBib29sIGdldE93blByb3BlcnR5U2xvdChK
U0M6OkpTQ2VsbCosIEpTQzo6RXhlY1N0YXRlKiwgSlNDOjpQcm9wZXJ0eU5hbWUgcHJvcGVydHlO
YW1lLCBKU0M6OlByb3BlcnR5U2xvdCYpOworICAgICAgICBzdGF0aWMgYm9vbCBnZXRPd25Qcm9w
ZXJ0eURlc2NyaXB0b3IoSlNDOjpKU09iamVjdCosIEpTQzo6RXhlY1N0YXRlKiwgSlNDOjpQcm9w
ZXJ0eU5hbWUgcHJvcGVydHlOYW1lLCBKU0M6OlByb3BlcnR5RGVzY3JpcHRvciYpOworICAgICAg
ICBzdGF0aWMgdm9pZCBwdXQoSlNDOjpKU0NlbGwqLCBKU0M6OkV4ZWNTdGF0ZSosIEpTQzo6UHJv
cGVydHlOYW1lIHByb3BlcnR5TmFtZSwgSlNDOjpKU1ZhbHVlLCBKU0M6OlB1dFByb3BlcnR5U2xv
dCYpOworICAgICAgICBzdGF0aWMgdm9pZCBwdXREaXJlY3RWaXJ0dWFsKEpTQzo6SlNPYmplY3Qq
LCBKU0M6OkV4ZWNTdGF0ZSosIEpTQzo6UHJvcGVydHlOYW1lIHByb3BlcnR5TmFtZSwgSlNDOjpK
U1ZhbHVlLCB1bnNpZ25lZCBhdHRyaWJ1dGVzKTsKKyAgICAgICAgc3RhdGljIGJvb2wgZGVsZXRl
UHJvcGVydHkoSlNDOjpKU0NlbGwqLCBKU0M6OkV4ZWNTdGF0ZSosIEpTQzo6UHJvcGVydHlOYW1l
IHByb3BlcnR5TmFtZSk7CiAgICAgICAgIHN0YXRpYyB2b2lkIGdldE93blByb3BlcnR5TmFtZXMo
SlNDOjpKU09iamVjdCosIEpTQzo6RXhlY1N0YXRlKiwgSlNDOjpQcm9wZXJ0eU5hbWVBcnJheSYs
IEpTQzo6RW51bWVyYXRpb25Nb2RlKTsKICAgICAgICAgc3RhdGljIHZvaWQgZ2V0UHJvcGVydHlO
YW1lcyhKU0M6OkpTT2JqZWN0KiwgSlNDOjpFeGVjU3RhdGUqLCBKU0M6OlByb3BlcnR5TmFtZUFy
cmF5JiwgSlNDOjpFbnVtZXJhdGlvbk1vZGUpOwotICAgICAgICBzdGF0aWMgYm9vbCBkZWZpbmVP
d25Qcm9wZXJ0eShKU0M6OkpTT2JqZWN0KiwgSlNDOjpFeGVjU3RhdGUqLCBjb25zdCBKU0M6Oklk
ZW50aWZpZXImIHByb3BlcnR5TmFtZSwgSlNDOjpQcm9wZXJ0eURlc2NyaXB0b3ImLCBib29sIHNo
b3VsZFRocm93KTsKKyAgICAgICAgc3RhdGljIGJvb2wgZGVmaW5lT3duUHJvcGVydHkoSlNDOjpK
U09iamVjdCosIEpTQzo6RXhlY1N0YXRlKiwgSlNDOjpQcm9wZXJ0eU5hbWUgcHJvcGVydHlOYW1l
LCBKU0M6OlByb3BlcnR5RGVzY3JpcHRvciYsIGJvb2wgc2hvdWxkVGhyb3cpOwogCiAgICAgICAg
IFJlZlB0cjxET01XcmFwcGVyV29ybGQ+IG1fd29ybGQ7CiAgICAgfTsKSW5kZXg6IFNvdXJjZS9X
ZWJDb3JlL2JpbmRpbmdzL2pzL0pTSFRNTEFsbENvbGxlY3Rpb25DdXN0b20uY3BwCj09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT0KLS0tIFNvdXJjZS9XZWJDb3JlL2JpbmRpbmdzL2pzL0pTSFRNTEFsbENvbGxlY3Rpb25DdXN0
b20uY3BwCShyZXZpc2lvbiAxMTY2NjcpCisrKyBTb3VyY2UvV2ViQ29yZS9iaW5kaW5ncy9qcy9K
U0hUTUxBbGxDb2xsZWN0aW9uQ3VzdG9tLmNwcAkod29ya2luZyBjb3B5KQpAQCAtNDEsMTAgKzQx
LDEwIEBAIHVzaW5nIG5hbWVzcGFjZSBKU0M7CiAKIG5hbWVzcGFjZSBXZWJDb3JlIHsKIAotc3Rh
dGljIEpTVmFsdWUgZ2V0TmFtZWRJdGVtcyhFeGVjU3RhdGUqIGV4ZWMsIEpTSFRNTEFsbENvbGxl
Y3Rpb24qIGNvbGxlY3Rpb24sIGNvbnN0IElkZW50aWZpZXImIHByb3BlcnR5TmFtZSkKK3N0YXRp
YyBKU1ZhbHVlIGdldE5hbWVkSXRlbXMoRXhlY1N0YXRlKiBleGVjLCBKU0hUTUxBbGxDb2xsZWN0
aW9uKiBjb2xsZWN0aW9uLCBQcm9wZXJ0eU5hbWUgcHJvcGVydHlOYW1lKQogewogICAgIFZlY3Rv
cjxSZWZQdHI8Tm9kZT4gPiBuYW1lZEl0ZW1zOwotICAgIGNvbGxlY3Rpb24tPmltcGwoKS0+bmFt
ZWRJdGVtcyhpZGVudGlmaWVyVG9BdG9taWNTdHJpbmcocHJvcGVydHlOYW1lKSwgbmFtZWRJdGVt
cyk7CisgICAgY29sbGVjdGlvbi0+aW1wbCgpLT5uYW1lZEl0ZW1zKHByb3BlcnR5TmFtZVRvQXRv
bWljU3RyaW5nKHByb3BlcnR5TmFtZSksIG5hbWVkSXRlbXMpOwogCiAgICAgaWYgKG5hbWVkSXRl
bXMuaXNFbXB0eSgpKQogICAgICAgICByZXR1cm4ganNVbmRlZmluZWQoKTsKQEAgLTcxLDEwICs3
MSw5IEBAIHN0YXRpYyBFbmNvZGVkSlNWYWx1ZSBKU0NfSE9TVF9DQUxMIGNhbGwKIAogICAgIGlm
IChleGVjLT5hcmd1bWVudENvdW50KCkgPT0gMSkgewogICAgICAgICAvLyBTdXBwb3J0IGZvciBk
b2N1bWVudC5hbGwoPGluZGV4PikgZXRjLgotICAgICAgICBib29sIG9rOwogICAgICAgICBVU3Ry
aW5nIHN0cmluZyA9IGV4ZWMtPmFyZ3VtZW50KDApLnRvU3RyaW5nKGV4ZWMpLT52YWx1ZShleGVj
KTsKLSAgICAgICAgdW5zaWduZWQgaW5kZXggPSBJZGVudGlmaWVyOjp0b1VJbnQzMihzdHJpbmcs
IG9rKTsKLSAgICAgICAgaWYgKG9rKQorICAgICAgICB1bnNpZ25lZCBpbmRleCA9IHRvVUludDMy
RnJvbVN0cmluZ0ltcGwoc3RyaW5nLmltcGwoKSk7CisgICAgICAgIGlmIChpbmRleCAhPSBQcm9w
ZXJ0eU5hbWU6Ok5vdEFuSW5kZXgpCiAgICAgICAgICAgICByZXR1cm4gSlNWYWx1ZTo6ZW5jb2Rl
KHRvSlMoZXhlYywganNDb2xsZWN0aW9uLT5nbG9iYWxPYmplY3QoKSwgY29sbGVjdGlvbi0+aXRl
bShpbmRleCkpKTsKIAogICAgICAgICAvLyBTdXBwb3J0IGZvciBkb2N1bWVudC5pbWFnZXMoJzxu
YW1lPicpIGV0Yy4KQEAgLTgyLDEwICs4MSw5IEBAIHN0YXRpYyBFbmNvZGVkSlNWYWx1ZSBKU0Nf
SE9TVF9DQUxMIGNhbGwKICAgICB9CiAKICAgICAvLyBUaGUgc2Vjb25kIGFyZywgaWYgc2V0LCBp
cyB0aGUgaW5kZXggb2YgdGhlIGl0ZW0gd2Ugd2FudAotICAgIGJvb2wgb2s7CiAgICAgVVN0cmlu
ZyBzdHJpbmcgPSBleGVjLT5hcmd1bWVudCgwKS50b1N0cmluZyhleGVjKS0+dmFsdWUoZXhlYyk7
Ci0gICAgdW5zaWduZWQgaW5kZXggPSBJZGVudGlmaWVyOjp0b1VJbnQzMihleGVjLT5hcmd1bWVu
dCgxKS50b1N0cmluZyhleGVjKS0+dmFsdWUoZXhlYyksIG9rKTsKLSAgICBpZiAob2spIHsKKyAg
ICB1bnNpZ25lZCBpbmRleCA9IHRvVUludDMyRnJvbVN0cmluZ0ltcGwoZXhlYy0+YXJndW1lbnQo
MSkudG9TdHJpbmcoZXhlYyktPnZhbHVlKGV4ZWMpLmltcGwoKSk7CisgICAgaWYgKGluZGV4ICE9
IFByb3BlcnR5TmFtZTo6Tm90QW5JbmRleCkgewogICAgICAgICBpZiAoTm9kZSogbm9kZSA9IGNv
bGxlY3Rpb24tPm5hbWVkSXRlbVdpdGhJbmRleCh1c3RyaW5nVG9BdG9taWNTdHJpbmcoc3RyaW5n
KSwgaW5kZXgpKQogICAgICAgICAgICAgcmV0dXJuIEpTVmFsdWU6OmVuY29kZSh0b0pTKGV4ZWMs
IGpzQ29sbGVjdGlvbi0+Z2xvYmFsT2JqZWN0KCksIG5vZGUpKTsKICAgICB9CkBAIC05OSwxMiAr
OTcsMTIgQEAgQ2FsbFR5cGUgSlNIVE1MQWxsQ29sbGVjdGlvbjo6Z2V0Q2FsbERhdAogICAgIHJl
dHVybiBDYWxsVHlwZUhvc3Q7CiB9CiAKLWJvb2wgSlNIVE1MQWxsQ29sbGVjdGlvbjo6Y2FuR2V0
SXRlbXNGb3JOYW1lKEV4ZWNTdGF0ZSosIEhUTUxBbGxDb2xsZWN0aW9uKiBjb2xsZWN0aW9uLCBj
b25zdCBJZGVudGlmaWVyJiBwcm9wZXJ0eU5hbWUpCitib29sIEpTSFRNTEFsbENvbGxlY3Rpb246
OmNhbkdldEl0ZW1zRm9yTmFtZShFeGVjU3RhdGUqLCBIVE1MQWxsQ29sbGVjdGlvbiogY29sbGVj
dGlvbiwgUHJvcGVydHlOYW1lIHByb3BlcnR5TmFtZSkKIHsKLSAgICByZXR1cm4gY29sbGVjdGlv
bi0+aGFzTmFtZWRJdGVtKGlkZW50aWZpZXJUb0F0b21pY1N0cmluZyhwcm9wZXJ0eU5hbWUpKTsK
KyAgICByZXR1cm4gY29sbGVjdGlvbi0+aGFzTmFtZWRJdGVtKHByb3BlcnR5TmFtZVRvQXRvbWlj
U3RyaW5nKHByb3BlcnR5TmFtZSkpOwogfQogCi1KU1ZhbHVlIEpTSFRNTEFsbENvbGxlY3Rpb246
Om5hbWVHZXR0ZXIoRXhlY1N0YXRlKiBleGVjLCBKU1ZhbHVlIHNsb3RCYXNlLCBjb25zdCBJZGVu
dGlmaWVyJiBwcm9wZXJ0eU5hbWUpCitKU1ZhbHVlIEpTSFRNTEFsbENvbGxlY3Rpb246Om5hbWVH
ZXR0ZXIoRXhlY1N0YXRlKiBleGVjLCBKU1ZhbHVlIHNsb3RCYXNlLCBQcm9wZXJ0eU5hbWUgcHJv
cGVydHlOYW1lKQogewogICAgIEpTSFRNTEFsbENvbGxlY3Rpb24qIHRoaXNPYmogPSBqc0Nhc3Q8
SlNIVE1MQWxsQ29sbGVjdGlvbio+KGFzT2JqZWN0KHNsb3RCYXNlKSk7CiAgICAgcmV0dXJuIGdl
dE5hbWVkSXRlbXMoZXhlYywgdGhpc09iaiwgcHJvcGVydHlOYW1lKTsKQEAgLTExMiw5ICsxMTAs
OCBAQCBKU1ZhbHVlIEpTSFRNTEFsbENvbGxlY3Rpb246Om5hbWVHZXR0ZXIoCiAKIEpTVmFsdWUg
SlNIVE1MQWxsQ29sbGVjdGlvbjo6aXRlbShFeGVjU3RhdGUqIGV4ZWMpCiB7Ci0gICAgYm9vbCBv
azsKLSAgICB1aW50MzJfdCBpbmRleCA9IElkZW50aWZpZXI6OnRvVUludDMyKGV4ZWMtPmFyZ3Vt
ZW50KDApLnRvU3RyaW5nKGV4ZWMpLT52YWx1ZShleGVjKSwgb2spOwotICAgIGlmIChvaykKKyAg
ICB1aW50MzJfdCBpbmRleCA9IHRvVUludDMyRnJvbVN0cmluZ0ltcGwoZXhlYy0+YXJndW1lbnQo
MCkudG9TdHJpbmcoZXhlYyktPnZhbHVlKGV4ZWMpLmltcGwoKSk7CisgICAgaWYgKGluZGV4ICE9
IFByb3BlcnR5TmFtZTo6Tm90QW5JbmRleCkKICAgICAgICAgcmV0dXJuIHRvSlMoZXhlYywgZ2xv
YmFsT2JqZWN0KCksIGltcGwoKS0+aXRlbShpbmRleCkpOwogICAgIHJldHVybiBnZXROYW1lZEl0
ZW1zKGV4ZWMsIHRoaXMsIElkZW50aWZpZXIoZXhlYywgZXhlYy0+YXJndW1lbnQoMCkudG9TdHJp
bmcoZXhlYyktPnZhbHVlKGV4ZWMpKSk7CiB9CkluZGV4OiBTb3VyY2UvV2ViQ29yZS9iaW5kaW5n
cy9qcy9KU0hUTUxBcHBsZXRFbGVtZW50Q3VzdG9tLmNwcAo9PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2Uv
V2ViQ29yZS9iaW5kaW5ncy9qcy9KU0hUTUxBcHBsZXRFbGVtZW50Q3VzdG9tLmNwcAkocmV2aXNp
b24gMTE2NjY3KQorKysgU291cmNlL1dlYkNvcmUvYmluZGluZ3MvanMvSlNIVE1MQXBwbGV0RWxl
bWVudEN1c3RvbS5jcHAJKHdvcmtpbmcgY29weSkKQEAgLTMzLDE3ICszMywxNyBAQCBuYW1lc3Bh
Y2UgV2ViQ29yZSB7CiAKIHVzaW5nIG5hbWVzcGFjZSBKU0M7CiAKLWJvb2wgSlNIVE1MQXBwbGV0
RWxlbWVudDo6Z2V0T3duUHJvcGVydHlTbG90RGVsZWdhdGUoRXhlY1N0YXRlKiBleGVjLCBjb25z
dCBJZGVudGlmaWVyJiBwcm9wZXJ0eU5hbWUsIFByb3BlcnR5U2xvdCYgc2xvdCkKK2Jvb2wgSlNI
VE1MQXBwbGV0RWxlbWVudDo6Z2V0T3duUHJvcGVydHlTbG90RGVsZWdhdGUoRXhlY1N0YXRlKiBl
eGVjLCBQcm9wZXJ0eU5hbWUgcHJvcGVydHlOYW1lLCBQcm9wZXJ0eVNsb3QmIHNsb3QpCiB7CiAg
ICAgcmV0dXJuIHJ1bnRpbWVPYmplY3RDdXN0b21HZXRPd25Qcm9wZXJ0eVNsb3QoZXhlYywgcHJv
cGVydHlOYW1lLCBzbG90LCB0aGlzKTsKIH0KIAotYm9vbCBKU0hUTUxBcHBsZXRFbGVtZW50Ojpn
ZXRPd25Qcm9wZXJ0eURlc2NyaXB0b3JEZWxlZ2F0ZShFeGVjU3RhdGUqIGV4ZWMsIGNvbnN0IElk
ZW50aWZpZXImIHByb3BlcnR5TmFtZSwgUHJvcGVydHlEZXNjcmlwdG9yJiBkZXNjcmlwdG9yKQor
Ym9vbCBKU0hUTUxBcHBsZXRFbGVtZW50OjpnZXRPd25Qcm9wZXJ0eURlc2NyaXB0b3JEZWxlZ2F0
ZShFeGVjU3RhdGUqIGV4ZWMsIFByb3BlcnR5TmFtZSBwcm9wZXJ0eU5hbWUsIFByb3BlcnR5RGVz
Y3JpcHRvciYgZGVzY3JpcHRvcikKIHsKICAgICByZXR1cm4gcnVudGltZU9iamVjdEN1c3RvbUdl
dE93blByb3BlcnR5RGVzY3JpcHRvcihleGVjLCBwcm9wZXJ0eU5hbWUsIGRlc2NyaXB0b3IsIHRo
aXMpOwogfQogCi1ib29sIEpTSFRNTEFwcGxldEVsZW1lbnQ6OnB1dERlbGVnYXRlKEV4ZWNTdGF0
ZSogZXhlYywgY29uc3QgSWRlbnRpZmllciYgcHJvcGVydHlOYW1lLCBKU1ZhbHVlIHZhbHVlLCBQ
dXRQcm9wZXJ0eVNsb3QmIHNsb3QpCitib29sIEpTSFRNTEFwcGxldEVsZW1lbnQ6OnB1dERlbGVn
YXRlKEV4ZWNTdGF0ZSogZXhlYywgUHJvcGVydHlOYW1lIHByb3BlcnR5TmFtZSwgSlNWYWx1ZSB2
YWx1ZSwgUHV0UHJvcGVydHlTbG90JiBzbG90KQogewogICAgIHJldHVybiBydW50aW1lT2JqZWN0
Q3VzdG9tUHV0KGV4ZWMsIHByb3BlcnR5TmFtZSwgdmFsdWUsIHRoaXMsIHNsb3QpOwogfQpJbmRl
eDogU291cmNlL1dlYkNvcmUvYmluZGluZ3MvanMvSlNIVE1MQ29sbGVjdGlvbkN1c3RvbS5jcHAK
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PQotLS0gU291cmNlL1dlYkNvcmUvYmluZGluZ3MvanMvSlNIVE1MQ29sbGVjdGlv
bkN1c3RvbS5jcHAJKHJldmlzaW9uIDExNjY2NykKKysrIFNvdXJjZS9XZWJDb3JlL2JpbmRpbmdz
L2pzL0pTSFRNTENvbGxlY3Rpb25DdXN0b20uY3BwCSh3b3JraW5nIGNvcHkpCkBAIC0zOSwxMCAr
MzksMTAgQEAgdXNpbmcgbmFtZXNwYWNlIEpTQzsKIAogbmFtZXNwYWNlIFdlYkNvcmUgewogCi1z
dGF0aWMgSlNWYWx1ZSBnZXROYW1lZEl0ZW1zKEV4ZWNTdGF0ZSogZXhlYywgSlNIVE1MQ29sbGVj
dGlvbiogY29sbGVjdGlvbiwgY29uc3QgSWRlbnRpZmllciYgcHJvcGVydHlOYW1lKQorc3RhdGlj
IEpTVmFsdWUgZ2V0TmFtZWRJdGVtcyhFeGVjU3RhdGUqIGV4ZWMsIEpTSFRNTENvbGxlY3Rpb24q
IGNvbGxlY3Rpb24sIFByb3BlcnR5TmFtZSBwcm9wZXJ0eU5hbWUpCiB7CiAgICAgVmVjdG9yPFJl
ZlB0cjxOb2RlPiA+IG5hbWVkSXRlbXM7Ci0gICAgY29uc3QgQXRvbWljU3RyaW5nJiBuYW1lID0g
aWRlbnRpZmllclRvQXRvbWljU3RyaW5nKHByb3BlcnR5TmFtZSk7CisgICAgY29uc3QgQXRvbWlj
U3RyaW5nJiBuYW1lID0gcHJvcGVydHlOYW1lVG9BdG9taWNTdHJpbmcocHJvcGVydHlOYW1lKTsK
ICAgICBjb2xsZWN0aW9uLT5pbXBsKCktPm5hbWVkSXRlbXMobmFtZSwgbmFtZWRJdGVtcyk7CiAK
ICAgICBpZiAobmFtZWRJdGVtcy5pc0VtcHR5KCkpCkBAIC01OSwxMiArNTksMTIgQEAgc3RhdGlj
IEpTVmFsdWUgZ2V0TmFtZWRJdGVtcyhFeGVjU3RhdGUqIAogICAgIHJldHVybiB0b0pTKGV4ZWMs
IGNvbGxlY3Rpb24tPmdsb2JhbE9iamVjdCgpLCBTdGF0aWNOb2RlTGlzdDo6YWRvcHQobmFtZWRJ
dGVtcykuZ2V0KCkpOwogfQogCi1ib29sIEpTSFRNTENvbGxlY3Rpb246OmNhbkdldEl0ZW1zRm9y
TmFtZShFeGVjU3RhdGUqLCBIVE1MQ29sbGVjdGlvbiogY29sbGVjdGlvbiwgY29uc3QgSWRlbnRp
ZmllciYgcHJvcGVydHlOYW1lKQorYm9vbCBKU0hUTUxDb2xsZWN0aW9uOjpjYW5HZXRJdGVtc0Zv
ck5hbWUoRXhlY1N0YXRlKiwgSFRNTENvbGxlY3Rpb24qIGNvbGxlY3Rpb24sIFByb3BlcnR5TmFt
ZSBwcm9wZXJ0eU5hbWUpCiB7Ci0gICAgcmV0dXJuIGNvbGxlY3Rpb24tPmhhc05hbWVkSXRlbShp
ZGVudGlmaWVyVG9BdG9taWNTdHJpbmcocHJvcGVydHlOYW1lKSk7CisgICAgcmV0dXJuIGNvbGxl
Y3Rpb24tPmhhc05hbWVkSXRlbShwcm9wZXJ0eU5hbWVUb0F0b21pY1N0cmluZyhwcm9wZXJ0eU5h
bWUpKTsKIH0KIAotSlNWYWx1ZSBKU0hUTUxDb2xsZWN0aW9uOjpuYW1lR2V0dGVyKEV4ZWNTdGF0
ZSogZXhlYywgSlNWYWx1ZSBzbG90QmFzZSwgY29uc3QgSWRlbnRpZmllciYgcHJvcGVydHlOYW1l
KQorSlNWYWx1ZSBKU0hUTUxDb2xsZWN0aW9uOjpuYW1lR2V0dGVyKEV4ZWNTdGF0ZSogZXhlYywg
SlNWYWx1ZSBzbG90QmFzZSwgUHJvcGVydHlOYW1lIHByb3BlcnR5TmFtZSkKIHsKICAgICBKU0hU
TUxDb2xsZWN0aW9uKiB0aGlzT2JqID0ganNDYXN0PEpTSFRNTENvbGxlY3Rpb24qPihhc09iamVj
dChzbG90QmFzZSkpOwogICAgIHJldHVybiBnZXROYW1lZEl0ZW1zKGV4ZWMsIHRoaXNPYmosIHBy
b3BlcnR5TmFtZSk7CkluZGV4OiBTb3VyY2UvV2ViQ29yZS9iaW5kaW5ncy9qcy9KU0hUTUxEb2N1
bWVudEN1c3RvbS5jcHAKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL1dlYkNvcmUvYmluZGluZ3MvanMv
SlNIVE1MRG9jdW1lbnRDdXN0b20uY3BwCShyZXZpc2lvbiAxMTY2NjcpCisrKyBTb3VyY2UvV2Vi
Q29yZS9iaW5kaW5ncy9qcy9KU0hUTUxEb2N1bWVudEN1c3RvbS5jcHAJKHdvcmtpbmcgY29weSkK
QEAgLTUxLDE4ICs1MSwxOCBAQCBuYW1lc3BhY2UgV2ViQ29yZSB7CiAKIHVzaW5nIG5hbWVzcGFj
ZSBIVE1MTmFtZXM7CiAKLWJvb2wgSlNIVE1MRG9jdW1lbnQ6OmNhbkdldEl0ZW1zRm9yTmFtZShF
eGVjU3RhdGUqLCBIVE1MRG9jdW1lbnQqIGRvY3VtZW50LCBjb25zdCBJZGVudGlmaWVyJiBwcm9w
ZXJ0eU5hbWUpCitib29sIEpTSFRNTERvY3VtZW50OjpjYW5HZXRJdGVtc0Zvck5hbWUoRXhlY1N0
YXRlKiwgSFRNTERvY3VtZW50KiBkb2N1bWVudCwgUHJvcGVydHlOYW1lIHByb3BlcnR5TmFtZSkK
IHsKICAgICBBdG9taWNTdHJpbmdJbXBsKiBhdG9taWNQcm9wZXJ0eU5hbWUgPSBmaW5kQXRvbWlj
U3RyaW5nKHByb3BlcnR5TmFtZSk7CiAgICAgcmV0dXJuIGF0b21pY1Byb3BlcnR5TmFtZSAmJiAo
ZG9jdW1lbnQtPmhhc05hbWVkSXRlbShhdG9taWNQcm9wZXJ0eU5hbWUpIHx8IGRvY3VtZW50LT5o
YXNFeHRyYU5hbWVkSXRlbShhdG9taWNQcm9wZXJ0eU5hbWUpKTsKIH0KIAotSlNWYWx1ZSBKU0hU
TUxEb2N1bWVudDo6bmFtZUdldHRlcihFeGVjU3RhdGUqIGV4ZWMsIEpTVmFsdWUgc2xvdEJhc2Us
IGNvbnN0IElkZW50aWZpZXImIHByb3BlcnR5TmFtZSkKK0pTVmFsdWUgSlNIVE1MRG9jdW1lbnQ6
Om5hbWVHZXR0ZXIoRXhlY1N0YXRlKiBleGVjLCBKU1ZhbHVlIHNsb3RCYXNlLCBQcm9wZXJ0eU5h
bWUgcHJvcGVydHlOYW1lKQogewogICAgIEpTSFRNTERvY3VtZW50KiB0aGlzT2JqID0ganNDYXN0
PEpTSFRNTERvY3VtZW50Kj4oYXNPYmplY3Qoc2xvdEJhc2UpKTsKICAgICBIVE1MRG9jdW1lbnQq
IGRvY3VtZW50ID0gc3RhdGljX2Nhc3Q8SFRNTERvY3VtZW50Kj4odGhpc09iai0+aW1wbCgpKTsK
IAotICAgIEhUTUxDb2xsZWN0aW9uKiBjb2xsZWN0aW9uID0gZG9jdW1lbnQtPmRvY3VtZW50TmFt
ZWRJdGVtcyhpZGVudGlmaWVyVG9BdG9taWNTdHJpbmcocHJvcGVydHlOYW1lKSk7CisgICAgSFRN
TENvbGxlY3Rpb24qIGNvbGxlY3Rpb24gPSBkb2N1bWVudC0+ZG9jdW1lbnROYW1lZEl0ZW1zKHBy
b3BlcnR5TmFtZVRvQXRvbWljU3RyaW5nKHByb3BlcnR5TmFtZSkpOwogCiAgICAgdW5zaWduZWQg
bGVuZ3RoID0gY29sbGVjdGlvbi0+bGVuZ3RoKCk7CiAgICAgaWYgKCFsZW5ndGgpCkluZGV4OiBT
b3VyY2UvV2ViQ29yZS9iaW5kaW5ncy9qcy9KU0hUTUxFbWJlZEVsZW1lbnRDdXN0b20uY3BwCj09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT0KLS0tIFNvdXJjZS9XZWJDb3JlL2JpbmRpbmdzL2pzL0pTSFRNTEVtYmVkRWxlbWVu
dEN1c3RvbS5jcHAJKHJldmlzaW9uIDExNjY2NykKKysrIFNvdXJjZS9XZWJDb3JlL2JpbmRpbmdz
L2pzL0pTSFRNTEVtYmVkRWxlbWVudEN1c3RvbS5jcHAJKHdvcmtpbmcgY29weSkKQEAgLTMzLDE3
ICszMywxNyBAQCBuYW1lc3BhY2UgV2ViQ29yZSB7CiAKIHVzaW5nIG5hbWVzcGFjZSBKU0M7CiAK
LWJvb2wgSlNIVE1MRW1iZWRFbGVtZW50OjpnZXRPd25Qcm9wZXJ0eVNsb3REZWxlZ2F0ZShFeGVj
U3RhdGUqIGV4ZWMsIGNvbnN0IElkZW50aWZpZXImIHByb3BlcnR5TmFtZSwgUHJvcGVydHlTbG90
JiBzbG90KQorYm9vbCBKU0hUTUxFbWJlZEVsZW1lbnQ6OmdldE93blByb3BlcnR5U2xvdERlbGVn
YXRlKEV4ZWNTdGF0ZSogZXhlYywgUHJvcGVydHlOYW1lIHByb3BlcnR5TmFtZSwgUHJvcGVydHlT
bG90JiBzbG90KQogewogICAgIHJldHVybiBydW50aW1lT2JqZWN0Q3VzdG9tR2V0T3duUHJvcGVy
dHlTbG90KGV4ZWMsIHByb3BlcnR5TmFtZSwgc2xvdCwgdGhpcyk7CiB9CiAKLWJvb2wgSlNIVE1M
RW1iZWRFbGVtZW50OjpnZXRPd25Qcm9wZXJ0eURlc2NyaXB0b3JEZWxlZ2F0ZShFeGVjU3RhdGUq
IGV4ZWMsIGNvbnN0IElkZW50aWZpZXImIHByb3BlcnR5TmFtZSwgUHJvcGVydHlEZXNjcmlwdG9y
JiBkZXNjcmlwdG9yKQorYm9vbCBKU0hUTUxFbWJlZEVsZW1lbnQ6OmdldE93blByb3BlcnR5RGVz
Y3JpcHRvckRlbGVnYXRlKEV4ZWNTdGF0ZSogZXhlYywgUHJvcGVydHlOYW1lIHByb3BlcnR5TmFt
ZSwgUHJvcGVydHlEZXNjcmlwdG9yJiBkZXNjcmlwdG9yKQogewogICAgIHJldHVybiBydW50aW1l
T2JqZWN0Q3VzdG9tR2V0T3duUHJvcGVydHlEZXNjcmlwdG9yKGV4ZWMsIHByb3BlcnR5TmFtZSwg
ZGVzY3JpcHRvciwgdGhpcyk7CiB9CiAKLWJvb2wgSlNIVE1MRW1iZWRFbGVtZW50OjpwdXREZWxl
Z2F0ZShFeGVjU3RhdGUqIGV4ZWMsIGNvbnN0IElkZW50aWZpZXImIHByb3BlcnR5TmFtZSwgSlNW
YWx1ZSB2YWx1ZSwgUHV0UHJvcGVydHlTbG90JiBzbG90KQorYm9vbCBKU0hUTUxFbWJlZEVsZW1l
bnQ6OnB1dERlbGVnYXRlKEV4ZWNTdGF0ZSogZXhlYywgUHJvcGVydHlOYW1lIHByb3BlcnR5TmFt
ZSwgSlNWYWx1ZSB2YWx1ZSwgUHV0UHJvcGVydHlTbG90JiBzbG90KQogewogICAgIHJldHVybiBy
dW50aW1lT2JqZWN0Q3VzdG9tUHV0KGV4ZWMsIHByb3BlcnR5TmFtZSwgdmFsdWUsIHRoaXMsIHNs
b3QpOwogfQpJbmRleDogU291cmNlL1dlYkNvcmUvYmluZGluZ3MvanMvSlNIVE1MRm9ybUVsZW1l
bnRDdXN0b20uY3BwCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9XZWJDb3JlL2JpbmRpbmdzL2pzL0pT
SFRNTEZvcm1FbGVtZW50Q3VzdG9tLmNwcAkocmV2aXNpb24gMTE2NjY3KQorKysgU291cmNlL1dl
YkNvcmUvYmluZGluZ3MvanMvSlNIVE1MRm9ybUVsZW1lbnRDdXN0b20uY3BwCSh3b3JraW5nIGNv
cHkpCkBAIC0zNywyMCArMzcsMjAgQEAgdXNpbmcgbmFtZXNwYWNlIEpTQzsKIAogbmFtZXNwYWNl
IFdlYkNvcmUgewogCi1ib29sIEpTSFRNTEZvcm1FbGVtZW50OjpjYW5HZXRJdGVtc0Zvck5hbWUo
RXhlY1N0YXRlKiwgSFRNTEZvcm1FbGVtZW50KiBmb3JtLCBjb25zdCBJZGVudGlmaWVyJiBwcm9w
ZXJ0eU5hbWUpCitib29sIEpTSFRNTEZvcm1FbGVtZW50OjpjYW5HZXRJdGVtc0Zvck5hbWUoRXhl
Y1N0YXRlKiwgSFRNTEZvcm1FbGVtZW50KiBmb3JtLCBQcm9wZXJ0eU5hbWUgcHJvcGVydHlOYW1l
KQogewogICAgIFZlY3RvcjxSZWZQdHI8Tm9kZT4gPiBuYW1lZEl0ZW1zOwotICAgIGZvcm0tPmdl
dE5hbWVkRWxlbWVudHMoaWRlbnRpZmllclRvQXRvbWljU3RyaW5nKHByb3BlcnR5TmFtZSksIG5h
bWVkSXRlbXMpOworICAgIGZvcm0tPmdldE5hbWVkRWxlbWVudHMocHJvcGVydHlOYW1lVG9BdG9t
aWNTdHJpbmcocHJvcGVydHlOYW1lKSwgbmFtZWRJdGVtcyk7CiAgICAgcmV0dXJuIG5hbWVkSXRl
bXMuc2l6ZSgpOwogfQogCi1KU1ZhbHVlIEpTSFRNTEZvcm1FbGVtZW50OjpuYW1lR2V0dGVyKEV4
ZWNTdGF0ZSogZXhlYywgSlNWYWx1ZSBzbG90QmFzZSwgY29uc3QgSWRlbnRpZmllciYgcHJvcGVy
dHlOYW1lKQorSlNWYWx1ZSBKU0hUTUxGb3JtRWxlbWVudDo6bmFtZUdldHRlcihFeGVjU3RhdGUq
IGV4ZWMsIEpTVmFsdWUgc2xvdEJhc2UsIFByb3BlcnR5TmFtZSBwcm9wZXJ0eU5hbWUpCiB7CiAg
ICAgSlNIVE1MRWxlbWVudCoganNGb3JtID0ganNDYXN0PEpTSFRNTEZvcm1FbGVtZW50Kj4oYXNP
YmplY3Qoc2xvdEJhc2UpKTsKICAgICBIVE1MRm9ybUVsZW1lbnQqIGZvcm0gPSBzdGF0aWNfY2Fz
dDxIVE1MRm9ybUVsZW1lbnQqPihqc0Zvcm0tPmltcGwoKSk7CiAKICAgICBWZWN0b3I8UmVmUHRy
PE5vZGU+ID4gbmFtZWRJdGVtczsKLSAgICBmb3JtLT5nZXROYW1lZEVsZW1lbnRzKGlkZW50aWZp
ZXJUb0F0b21pY1N0cmluZyhwcm9wZXJ0eU5hbWUpLCBuYW1lZEl0ZW1zKTsKKyAgICBmb3JtLT5n
ZXROYW1lZEVsZW1lbnRzKHByb3BlcnR5TmFtZVRvQXRvbWljU3RyaW5nKHByb3BlcnR5TmFtZSks
IG5hbWVkSXRlbXMpOwogICAgIAogICAgIGlmIChuYW1lZEl0ZW1zLmlzRW1wdHkoKSkKICAgICAg
ICAgcmV0dXJuIGpzVW5kZWZpbmVkKCk7CkluZGV4OiBTb3VyY2UvV2ViQ29yZS9iaW5kaW5ncy9q
cy9KU0hUTUxGcmFtZVNldEVsZW1lbnRDdXN0b20uY3BwCj09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9X
ZWJDb3JlL2JpbmRpbmdzL2pzL0pTSFRNTEZyYW1lU2V0RWxlbWVudEN1c3RvbS5jcHAJKHJldmlz
aW9uIDExNjY2NykKKysrIFNvdXJjZS9XZWJDb3JlL2JpbmRpbmdzL2pzL0pTSFRNTEZyYW1lU2V0
RWxlbWVudEN1c3RvbS5jcHAJKHdvcmtpbmcgY29weSkKQEAgLTQxLDE2ICs0MSwxNiBAQCBuYW1l
c3BhY2UgV2ViQ29yZSB7CiAKIHVzaW5nIG5hbWVzcGFjZSBIVE1MTmFtZXM7CiAKLWJvb2wgSlNI
VE1MRnJhbWVTZXRFbGVtZW50OjpjYW5HZXRJdGVtc0Zvck5hbWUoRXhlY1N0YXRlKiwgSFRNTEZy
YW1lU2V0RWxlbWVudCogZnJhbWVTZXQsIGNvbnN0IElkZW50aWZpZXImIHByb3BlcnR5TmFtZSkK
K2Jvb2wgSlNIVE1MRnJhbWVTZXRFbGVtZW50OjpjYW5HZXRJdGVtc0Zvck5hbWUoRXhlY1N0YXRl
KiwgSFRNTEZyYW1lU2V0RWxlbWVudCogZnJhbWVTZXQsIFByb3BlcnR5TmFtZSBwcm9wZXJ0eU5h
bWUpCiB7Ci0gICAgTm9kZSogZnJhbWUgPSBmcmFtZVNldC0+Y2hpbGRyZW4oKS0+bmFtZWRJdGVt
KGlkZW50aWZpZXJUb0F0b21pY1N0cmluZyhwcm9wZXJ0eU5hbWUpKTsKKyAgICBOb2RlKiBmcmFt
ZSA9IGZyYW1lU2V0LT5jaGlsZHJlbigpLT5uYW1lZEl0ZW0ocHJvcGVydHlOYW1lVG9BdG9taWNT
dHJpbmcocHJvcGVydHlOYW1lKSk7CiAgICAgcmV0dXJuIGZyYW1lICYmIGZyYW1lLT5oYXNUYWdO
YW1lKGZyYW1lVGFnKTsKIH0KIAotSlNWYWx1ZSBKU0hUTUxGcmFtZVNldEVsZW1lbnQ6Om5hbWVH
ZXR0ZXIoRXhlY1N0YXRlKiBleGVjLCBKU1ZhbHVlIHNsb3RCYXNlLCBjb25zdCBJZGVudGlmaWVy
JiBwcm9wZXJ0eU5hbWUpCitKU1ZhbHVlIEpTSFRNTEZyYW1lU2V0RWxlbWVudDo6bmFtZUdldHRl
cihFeGVjU3RhdGUqIGV4ZWMsIEpTVmFsdWUgc2xvdEJhc2UsIFByb3BlcnR5TmFtZSBwcm9wZXJ0
eU5hbWUpCiB7CiAgICAgSFRNTEVsZW1lbnQqIGVsZW1lbnQgPSBqc0Nhc3Q8SlNIVE1MRWxlbWVu
dCo+KGFzT2JqZWN0KHNsb3RCYXNlKSktPmltcGwoKTsKLSAgICBOb2RlKiBmcmFtZUVsZW1lbnQg
PSBlbGVtZW50LT5jaGlsZHJlbigpLT5uYW1lZEl0ZW0oaWRlbnRpZmllclRvQXRvbWljU3RyaW5n
KHByb3BlcnR5TmFtZSkpOworICAgIE5vZGUqIGZyYW1lRWxlbWVudCA9IGVsZW1lbnQtPmNoaWxk
cmVuKCktPm5hbWVkSXRlbShwcm9wZXJ0eU5hbWVUb0F0b21pY1N0cmluZyhwcm9wZXJ0eU5hbWUp
KTsKICAgICBpZiAoRG9jdW1lbnQqIGRvY3VtZW50ID0gc3RhdGljX2Nhc3Q8SFRNTEZyYW1lRWxl
bWVudCo+KGZyYW1lRWxlbWVudCktPmNvbnRlbnREb2N1bWVudCgpKSB7CiAgICAgICAgIGlmIChK
U0RPTVdpbmRvd1NoZWxsKiB3aW5kb3cgPSB0b0pTRE9NV2luZG93U2hlbGwoZG9jdW1lbnQtPmZy
YW1lKCksIGN1cnJlbnRXb3JsZChleGVjKSkpCiAgICAgICAgICAgICByZXR1cm4gd2luZG93OwpJ
bmRleDogU291cmNlL1dlYkNvcmUvYmluZGluZ3MvanMvSlNIVE1MT2JqZWN0RWxlbWVudEN1c3Rv
bS5jcHAKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PQotLS0gU291cmNlL1dlYkNvcmUvYmluZGluZ3MvanMvSlNIVE1MT2Jq
ZWN0RWxlbWVudEN1c3RvbS5jcHAJKHJldmlzaW9uIDExNjY2NykKKysrIFNvdXJjZS9XZWJDb3Jl
L2JpbmRpbmdzL2pzL0pTSFRNTE9iamVjdEVsZW1lbnRDdXN0b20uY3BwCSh3b3JraW5nIGNvcHkp
CkBAIC0zMywxNyArMzMsMTcgQEAgbmFtZXNwYWNlIFdlYkNvcmUgewogCiB1c2luZyBuYW1lc3Bh
Y2UgSlNDOwogCi1ib29sIEpTSFRNTE9iamVjdEVsZW1lbnQ6OmdldE93blByb3BlcnR5U2xvdERl
bGVnYXRlKEV4ZWNTdGF0ZSogZXhlYywgY29uc3QgSWRlbnRpZmllciYgcHJvcGVydHlOYW1lLCBQ
cm9wZXJ0eVNsb3QmIHNsb3QpCitib29sIEpTSFRNTE9iamVjdEVsZW1lbnQ6OmdldE93blByb3Bl
cnR5U2xvdERlbGVnYXRlKEV4ZWNTdGF0ZSogZXhlYywgUHJvcGVydHlOYW1lIHByb3BlcnR5TmFt
ZSwgUHJvcGVydHlTbG90JiBzbG90KQogewogICAgIHJldHVybiBydW50aW1lT2JqZWN0Q3VzdG9t
R2V0T3duUHJvcGVydHlTbG90KGV4ZWMsIHByb3BlcnR5TmFtZSwgc2xvdCwgdGhpcyk7CiB9CiAK
LWJvb2wgSlNIVE1MT2JqZWN0RWxlbWVudDo6Z2V0T3duUHJvcGVydHlEZXNjcmlwdG9yRGVsZWdh
dGUoRXhlY1N0YXRlKiBleGVjLCBjb25zdCBJZGVudGlmaWVyJiBwcm9wZXJ0eU5hbWUsIFByb3Bl
cnR5RGVzY3JpcHRvciYgZGVzY3JpcHRvcikKK2Jvb2wgSlNIVE1MT2JqZWN0RWxlbWVudDo6Z2V0
T3duUHJvcGVydHlEZXNjcmlwdG9yRGVsZWdhdGUoRXhlY1N0YXRlKiBleGVjLCBQcm9wZXJ0eU5h
bWUgcHJvcGVydHlOYW1lLCBQcm9wZXJ0eURlc2NyaXB0b3ImIGRlc2NyaXB0b3IpCiB7CiAgICAg
cmV0dXJuIHJ1bnRpbWVPYmplY3RDdXN0b21HZXRPd25Qcm9wZXJ0eURlc2NyaXB0b3IoZXhlYywg
cHJvcGVydHlOYW1lLCBkZXNjcmlwdG9yLCB0aGlzKTsKIH0KIAotYm9vbCBKU0hUTUxPYmplY3RF
bGVtZW50OjpwdXREZWxlZ2F0ZShFeGVjU3RhdGUqIGV4ZWMsIGNvbnN0IElkZW50aWZpZXImIHBy
b3BlcnR5TmFtZSwgSlNWYWx1ZSB2YWx1ZSwgUHV0UHJvcGVydHlTbG90JiBzbG90KQorYm9vbCBK
U0hUTUxPYmplY3RFbGVtZW50OjpwdXREZWxlZ2F0ZShFeGVjU3RhdGUqIGV4ZWMsIFByb3BlcnR5
TmFtZSBwcm9wZXJ0eU5hbWUsIEpTVmFsdWUgdmFsdWUsIFB1dFByb3BlcnR5U2xvdCYgc2xvdCkK
IHsKICAgICByZXR1cm4gcnVudGltZU9iamVjdEN1c3RvbVB1dChleGVjLCBwcm9wZXJ0eU5hbWUs
IHZhbHVlLCB0aGlzLCBzbG90KTsKIH0KSW5kZXg6IFNvdXJjZS9XZWJDb3JlL2JpbmRpbmdzL2pz
L0pTSGlzdG9yeUN1c3RvbS5jcHAKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL1dlYkNvcmUvYmluZGlu
Z3MvanMvSlNIaXN0b3J5Q3VzdG9tLmNwcAkocmV2aXNpb24gMTE2NjY3KQorKysgU291cmNlL1dl
YkNvcmUvYmluZGluZ3MvanMvSlNIaXN0b3J5Q3VzdG9tLmNwcAkod29ya2luZyBjb3B5KQpAQCAt
MzgsMjIgKzM4LDIyIEBAIHVzaW5nIG5hbWVzcGFjZSBKU0M7CiAKIG5hbWVzcGFjZSBXZWJDb3Jl
IHsKIAotc3RhdGljIEpTVmFsdWUgbm9uQ2FjaGluZ1N0YXRpY0JhY2tGdW5jdGlvbkdldHRlcihF
eGVjU3RhdGUqIGV4ZWMsIEpTVmFsdWUsIGNvbnN0IElkZW50aWZpZXImIHByb3BlcnR5TmFtZSkK
K3N0YXRpYyBKU1ZhbHVlIG5vbkNhY2hpbmdTdGF0aWNCYWNrRnVuY3Rpb25HZXR0ZXIoRXhlY1N0
YXRlKiBleGVjLCBKU1ZhbHVlLCBQcm9wZXJ0eU5hbWUgcHJvcGVydHlOYW1lKQogewotICAgIHJl
dHVybiBKU0Z1bmN0aW9uOjpjcmVhdGUoZXhlYywgZXhlYy0+bGV4aWNhbEdsb2JhbE9iamVjdCgp
LCAwLCBwcm9wZXJ0eU5hbWUsIGpzSGlzdG9yeVByb3RvdHlwZUZ1bmN0aW9uQmFjayk7CisgICAg
cmV0dXJuIEpTRnVuY3Rpb246OmNyZWF0ZShleGVjLCBleGVjLT5sZXhpY2FsR2xvYmFsT2JqZWN0
KCksIDAsIHByb3BlcnR5TmFtZS5pbXBsKCksIGpzSGlzdG9yeVByb3RvdHlwZUZ1bmN0aW9uQmFj
ayk7CiB9CiAKLXN0YXRpYyBKU1ZhbHVlIG5vbkNhY2hpbmdTdGF0aWNGb3J3YXJkRnVuY3Rpb25H
ZXR0ZXIoRXhlY1N0YXRlKiBleGVjLCBKU1ZhbHVlLCBjb25zdCBJZGVudGlmaWVyJiBwcm9wZXJ0
eU5hbWUpCitzdGF0aWMgSlNWYWx1ZSBub25DYWNoaW5nU3RhdGljRm9yd2FyZEZ1bmN0aW9uR2V0
dGVyKEV4ZWNTdGF0ZSogZXhlYywgSlNWYWx1ZSwgUHJvcGVydHlOYW1lIHByb3BlcnR5TmFtZSkK
IHsKLSAgICByZXR1cm4gSlNGdW5jdGlvbjo6Y3JlYXRlKGV4ZWMsIGV4ZWMtPmxleGljYWxHbG9i
YWxPYmplY3QoKSwgMCwgcHJvcGVydHlOYW1lLCBqc0hpc3RvcnlQcm90b3R5cGVGdW5jdGlvbkZv
cndhcmQpOworICAgIHJldHVybiBKU0Z1bmN0aW9uOjpjcmVhdGUoZXhlYywgZXhlYy0+bGV4aWNh
bEdsb2JhbE9iamVjdCgpLCAwLCBwcm9wZXJ0eU5hbWUuaW1wbCgpLCBqc0hpc3RvcnlQcm90b3R5
cGVGdW5jdGlvbkZvcndhcmQpOwogfQogCi1zdGF0aWMgSlNWYWx1ZSBub25DYWNoaW5nU3RhdGlj
R29GdW5jdGlvbkdldHRlcihFeGVjU3RhdGUqIGV4ZWMsIEpTVmFsdWUsIGNvbnN0IElkZW50aWZp
ZXImIHByb3BlcnR5TmFtZSkKK3N0YXRpYyBKU1ZhbHVlIG5vbkNhY2hpbmdTdGF0aWNHb0Z1bmN0
aW9uR2V0dGVyKEV4ZWNTdGF0ZSogZXhlYywgSlNWYWx1ZSwgUHJvcGVydHlOYW1lIHByb3BlcnR5
TmFtZSkKIHsKLSAgICByZXR1cm4gSlNGdW5jdGlvbjo6Y3JlYXRlKGV4ZWMsIGV4ZWMtPmxleGlj
YWxHbG9iYWxPYmplY3QoKSwgMSwgcHJvcGVydHlOYW1lLCBqc0hpc3RvcnlQcm90b3R5cGVGdW5j
dGlvbkdvKTsKKyAgICByZXR1cm4gSlNGdW5jdGlvbjo6Y3JlYXRlKGV4ZWMsIGV4ZWMtPmxleGlj
YWxHbG9iYWxPYmplY3QoKSwgMSwgcHJvcGVydHlOYW1lLmltcGwoKSwganNIaXN0b3J5UHJvdG90
eXBlRnVuY3Rpb25Hbyk7CiB9CiAKLWJvb2wgSlNIaXN0b3J5OjpnZXRPd25Qcm9wZXJ0eVNsb3RE
ZWxlZ2F0ZShFeGVjU3RhdGUqIGV4ZWMsIGNvbnN0IElkZW50aWZpZXImIHByb3BlcnR5TmFtZSwg
UHJvcGVydHlTbG90JiBzbG90KQorYm9vbCBKU0hpc3Rvcnk6OmdldE93blByb3BlcnR5U2xvdERl
bGVnYXRlKEV4ZWNTdGF0ZSogZXhlYywgUHJvcGVydHlOYW1lIHByb3BlcnR5TmFtZSwgUHJvcGVy
dHlTbG90JiBzbG90KQogewogICAgIC8vIFdoZW4gYWNjZXNzaW5nIEhpc3RvcnkgY3Jvc3MtZG9t
YWluLCBmdW5jdGlvbnMgYXJlIGFsd2F5cyB0aGUgbmF0aXZlIGJ1aWx0LWluIG9uZXMuCiAgICAg
Ly8gU2VlIEpTRE9NV2luZG93OjpnZXRPd25Qcm9wZXJ0eVNsb3REZWxlZ2F0ZSBmb3IgYWRkaXRp
b25hbCBkZXRhaWxzLgpAQCAtOTMsNyArOTMsNyBAQCBib29sIEpTSGlzdG9yeTo6Z2V0T3duUHJv
cGVydHlTbG90RGVsZWdhCiAgICAgcmV0dXJuIHRydWU7CiB9CiAKLWJvb2wgSlNIaXN0b3J5Ojpn
ZXRPd25Qcm9wZXJ0eURlc2NyaXB0b3JEZWxlZ2F0ZShFeGVjU3RhdGUqIGV4ZWMsIGNvbnN0IElk
ZW50aWZpZXImIHByb3BlcnR5TmFtZSwgUHJvcGVydHlEZXNjcmlwdG9yJiBkZXNjcmlwdG9yKQor
Ym9vbCBKU0hpc3Rvcnk6OmdldE93blByb3BlcnR5RGVzY3JpcHRvckRlbGVnYXRlKEV4ZWNTdGF0
ZSogZXhlYywgUHJvcGVydHlOYW1lIHByb3BlcnR5TmFtZSwgUHJvcGVydHlEZXNjcmlwdG9yJiBk
ZXNjcmlwdG9yKQogewogICAgIGlmICghaW1wbCgpLT5mcmFtZSgpKSB7CiAgICAgICAgIGRlc2Ny
aXB0b3Iuc2V0VW5kZWZpbmVkKCk7CkBAIC0xMzgsNyArMTM4LDcgQEAgYm9vbCBKU0hpc3Rvcnk6
OmdldE93blByb3BlcnR5RGVzY3JpcHRvcgogICAgIHJldHVybiB0cnVlOwogfQogCi1ib29sIEpT
SGlzdG9yeTo6cHV0RGVsZWdhdGUoRXhlY1N0YXRlKiBleGVjLCBjb25zdCBJZGVudGlmaWVyJiwg
SlNWYWx1ZSwgUHV0UHJvcGVydHlTbG90JikKK2Jvb2wgSlNIaXN0b3J5OjpwdXREZWxlZ2F0ZShF
eGVjU3RhdGUqIGV4ZWMsIFByb3BlcnR5TmFtZSwgSlNWYWx1ZSwgUHV0UHJvcGVydHlTbG90JikK
IHsKICAgICAvLyBPbmx5IGFsbG93IHB1dHRpbmcgYnkgZnJhbWVzIGluIHRoZSBzYW1lIG9yaWdp
bi4KICAgICBpZiAoIXNob3VsZEFsbG93QWNjZXNzVG9GcmFtZShleGVjLCBpbXBsKCktPmZyYW1l
KCkpKQpAQCAtMTQ2LDcgKzE0Niw3IEBAIGJvb2wgSlNIaXN0b3J5OjpwdXREZWxlZ2F0ZShFeGVj
U3RhdGUqIGUKICAgICByZXR1cm4gZmFsc2U7CiB9CiAKLWJvb2wgSlNIaXN0b3J5OjpkZWxldGVQ
cm9wZXJ0eShKU0NlbGwqIGNlbGwsIEV4ZWNTdGF0ZSogZXhlYywgY29uc3QgSWRlbnRpZmllciYg
cHJvcGVydHlOYW1lKQorYm9vbCBKU0hpc3Rvcnk6OmRlbGV0ZVByb3BlcnR5KEpTQ2VsbCogY2Vs
bCwgRXhlY1N0YXRlKiBleGVjLCBQcm9wZXJ0eU5hbWUgcHJvcGVydHlOYW1lKQogewogICAgIEpT
SGlzdG9yeSogdGhpc09iamVjdCA9IGpzQ2FzdDxKU0hpc3RvcnkqPihjZWxsKTsKICAgICAvLyBP
bmx5IGFsbG93IGRlbGV0aW5nIGJ5IGZyYW1lcyBpbiB0aGUgc2FtZSBvcmlnaW4uCkluZGV4OiBT
b3VyY2UvV2ViQ29yZS9iaW5kaW5ncy9qcy9KU0xvY2F0aW9uQ3VzdG9tLmNwcAo9PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
Ci0tLSBTb3VyY2UvV2ViQ29yZS9iaW5kaW5ncy9qcy9KU0xvY2F0aW9uQ3VzdG9tLmNwcAkocmV2
aXNpb24gMTE2NjY3KQorKysgU291cmNlL1dlYkNvcmUvYmluZGluZ3MvanMvSlNMb2NhdGlvbkN1
c3RvbS5jcHAJKHdvcmtpbmcgY29weSkKQEAgLTMwLDIyICszMCwyMiBAQCB1c2luZyBuYW1lc3Bh
Y2UgSlNDOwogCiBuYW1lc3BhY2UgV2ViQ29yZSB7CiAKLXN0YXRpYyBKU1ZhbHVlIG5vbkNhY2hp
bmdTdGF0aWNSZXBsYWNlRnVuY3Rpb25HZXR0ZXIoRXhlY1N0YXRlKiBleGVjLCBKU1ZhbHVlLCBj
b25zdCBJZGVudGlmaWVyJiBwcm9wZXJ0eU5hbWUpCitzdGF0aWMgSlNWYWx1ZSBub25DYWNoaW5n
U3RhdGljUmVwbGFjZUZ1bmN0aW9uR2V0dGVyKEV4ZWNTdGF0ZSogZXhlYywgSlNWYWx1ZSwgUHJv
cGVydHlOYW1lIHByb3BlcnR5TmFtZSkKIHsKLSAgICByZXR1cm4gSlNGdW5jdGlvbjo6Y3JlYXRl
KGV4ZWMsIGV4ZWMtPmxleGljYWxHbG9iYWxPYmplY3QoKSwgMSwgcHJvcGVydHlOYW1lLCBqc0xv
Y2F0aW9uUHJvdG90eXBlRnVuY3Rpb25SZXBsYWNlKTsKKyAgICByZXR1cm4gSlNGdW5jdGlvbjo6
Y3JlYXRlKGV4ZWMsIGV4ZWMtPmxleGljYWxHbG9iYWxPYmplY3QoKSwgMSwgcHJvcGVydHlOYW1l
LmltcGwoKSwganNMb2NhdGlvblByb3RvdHlwZUZ1bmN0aW9uUmVwbGFjZSk7CiB9CiAKLXN0YXRp
YyBKU1ZhbHVlIG5vbkNhY2hpbmdTdGF0aWNSZWxvYWRGdW5jdGlvbkdldHRlcihFeGVjU3RhdGUq
IGV4ZWMsIEpTVmFsdWUsIGNvbnN0IElkZW50aWZpZXImIHByb3BlcnR5TmFtZSkKK3N0YXRpYyBK
U1ZhbHVlIG5vbkNhY2hpbmdTdGF0aWNSZWxvYWRGdW5jdGlvbkdldHRlcihFeGVjU3RhdGUqIGV4
ZWMsIEpTVmFsdWUsIFByb3BlcnR5TmFtZSBwcm9wZXJ0eU5hbWUpCiB7Ci0gICAgcmV0dXJuIEpT
RnVuY3Rpb246OmNyZWF0ZShleGVjLCBleGVjLT5sZXhpY2FsR2xvYmFsT2JqZWN0KCksIDAsIHBy
b3BlcnR5TmFtZSwganNMb2NhdGlvblByb3RvdHlwZUZ1bmN0aW9uUmVsb2FkKTsKKyAgICByZXR1
cm4gSlNGdW5jdGlvbjo6Y3JlYXRlKGV4ZWMsIGV4ZWMtPmxleGljYWxHbG9iYWxPYmplY3QoKSwg
MCwgcHJvcGVydHlOYW1lLmltcGwoKSwganNMb2NhdGlvblByb3RvdHlwZUZ1bmN0aW9uUmVsb2Fk
KTsKIH0KIAotc3RhdGljIEpTVmFsdWUgbm9uQ2FjaGluZ1N0YXRpY0Fzc2lnbkZ1bmN0aW9uR2V0
dGVyKEV4ZWNTdGF0ZSogZXhlYywgSlNWYWx1ZSwgY29uc3QgSWRlbnRpZmllciYgcHJvcGVydHlO
YW1lKQorc3RhdGljIEpTVmFsdWUgbm9uQ2FjaGluZ1N0YXRpY0Fzc2lnbkZ1bmN0aW9uR2V0dGVy
KEV4ZWNTdGF0ZSogZXhlYywgSlNWYWx1ZSwgUHJvcGVydHlOYW1lIHByb3BlcnR5TmFtZSkKIHsK
LSAgICByZXR1cm4gSlNGdW5jdGlvbjo6Y3JlYXRlKGV4ZWMsIGV4ZWMtPmxleGljYWxHbG9iYWxP
YmplY3QoKSwgMSwgcHJvcGVydHlOYW1lLCBqc0xvY2F0aW9uUHJvdG90eXBlRnVuY3Rpb25Bc3Np
Z24pOworICAgIHJldHVybiBKU0Z1bmN0aW9uOjpjcmVhdGUoZXhlYywgZXhlYy0+bGV4aWNhbEds
b2JhbE9iamVjdCgpLCAxLCBwcm9wZXJ0eU5hbWUuaW1wbCgpLCBqc0xvY2F0aW9uUHJvdG90eXBl
RnVuY3Rpb25Bc3NpZ24pOwogfQogCi1ib29sIEpTTG9jYXRpb246OmdldE93blByb3BlcnR5U2xv
dERlbGVnYXRlKEV4ZWNTdGF0ZSogZXhlYywgY29uc3QgSWRlbnRpZmllciYgcHJvcGVydHlOYW1l
LCBQcm9wZXJ0eVNsb3QmIHNsb3QpCitib29sIEpTTG9jYXRpb246OmdldE93blByb3BlcnR5U2xv
dERlbGVnYXRlKEV4ZWNTdGF0ZSogZXhlYywgUHJvcGVydHlOYW1lIHByb3BlcnR5TmFtZSwgUHJv
cGVydHlTbG90JiBzbG90KQogewogICAgIEZyYW1lKiBmcmFtZSA9IGltcGwoKS0+ZnJhbWUoKTsK
ICAgICBpZiAoIWZyYW1lKSB7CkBAIC04Niw3ICs4Niw3IEBAIGJvb2wgSlNMb2NhdGlvbjo6Z2V0
T3duUHJvcGVydHlTbG90RGVsZWcKICAgICByZXR1cm4gdHJ1ZTsKIH0KIAotYm9vbCBKU0xvY2F0
aW9uOjpnZXRPd25Qcm9wZXJ0eURlc2NyaXB0b3JEZWxlZ2F0ZShFeGVjU3RhdGUqIGV4ZWMsIGNv
bnN0IElkZW50aWZpZXImIHByb3BlcnR5TmFtZSwgUHJvcGVydHlEZXNjcmlwdG9yJiBkZXNjcmlw
dG9yKQorYm9vbCBKU0xvY2F0aW9uOjpnZXRPd25Qcm9wZXJ0eURlc2NyaXB0b3JEZWxlZ2F0ZShF
eGVjU3RhdGUqIGV4ZWMsIFByb3BlcnR5TmFtZSBwcm9wZXJ0eU5hbWUsIFByb3BlcnR5RGVzY3Jp
cHRvciYgZGVzY3JpcHRvcikKIHsKICAgICBGcmFtZSogZnJhbWUgPSBpbXBsKCktPmZyYW1lKCk7
CiAgICAgaWYgKCFmcmFtZSkgewpAQCAtMTI1LDcgKzEyNSw3IEBAIGJvb2wgSlNMb2NhdGlvbjo6
Z2V0T3duUHJvcGVydHlEZXNjcmlwdG8KICAgICByZXR1cm4gdHJ1ZTsKIH0KIAotYm9vbCBKU0xv
Y2F0aW9uOjpwdXREZWxlZ2F0ZShFeGVjU3RhdGUqIGV4ZWMsIGNvbnN0IElkZW50aWZpZXImIHBy
b3BlcnR5TmFtZSwgSlNWYWx1ZSB2YWx1ZSwgUHV0UHJvcGVydHlTbG90JiBzbG90KQorYm9vbCBK
U0xvY2F0aW9uOjpwdXREZWxlZ2F0ZShFeGVjU3RhdGUqIGV4ZWMsIFByb3BlcnR5TmFtZSBwcm9w
ZXJ0eU5hbWUsIEpTVmFsdWUgdmFsdWUsIFB1dFByb3BlcnR5U2xvdCYgc2xvdCkKIHsKICAgICBG
cmFtZSogZnJhbWUgPSBpbXBsKCktPmZyYW1lKCk7CiAgICAgaWYgKCFmcmFtZSkKQEAgLTE1Miw3
ICsxNTIsNyBAQCBib29sIEpTTG9jYXRpb246OnB1dERlbGVnYXRlKEV4ZWNTdGF0ZSogCiAgICAg
cmV0dXJuIGZhbHNlOwogfQogCi1ib29sIEpTTG9jYXRpb246OmRlbGV0ZVByb3BlcnR5KEpTQ2Vs
bCogY2VsbCwgRXhlY1N0YXRlKiBleGVjLCBjb25zdCBJZGVudGlmaWVyJiBwcm9wZXJ0eU5hbWUp
Citib29sIEpTTG9jYXRpb246OmRlbGV0ZVByb3BlcnR5KEpTQ2VsbCogY2VsbCwgRXhlY1N0YXRl
KiBleGVjLCBQcm9wZXJ0eU5hbWUgcHJvcGVydHlOYW1lKQogewogICAgIEpTTG9jYXRpb24qIHRo
aXNPYmplY3QgPSBqc0Nhc3Q8SlNMb2NhdGlvbio+KGNlbGwpOwogICAgIC8vIE9ubHkgYWxsb3cg
ZGVsZXRpbmcgYnkgZnJhbWVzIGluIHRoZSBzYW1lIG9yaWdpbi4KQEAgLTE3MCw3ICsxNzAsNyBA
QCB2b2lkIEpTTG9jYXRpb246OmdldE93blByb3BlcnR5TmFtZXMoSlNPCiAgICAgQmFzZTo6Z2V0
T3duUHJvcGVydHlOYW1lcyh0aGlzT2JqZWN0LCBleGVjLCBwcm9wZXJ0eU5hbWVzLCBtb2RlKTsK
IH0KIAotYm9vbCBKU0xvY2F0aW9uOjpkZWZpbmVPd25Qcm9wZXJ0eShKU09iamVjdCogb2JqZWN0
LCBFeGVjU3RhdGUqIGV4ZWMsIGNvbnN0IElkZW50aWZpZXImIHByb3BlcnR5TmFtZSwgUHJvcGVy
dHlEZXNjcmlwdG9yJiBkZXNjcmlwdG9yLCBib29sIHRocm93RXhjZXB0aW9uKQorYm9vbCBKU0xv
Y2F0aW9uOjpkZWZpbmVPd25Qcm9wZXJ0eShKU09iamVjdCogb2JqZWN0LCBFeGVjU3RhdGUqIGV4
ZWMsIFByb3BlcnR5TmFtZSBwcm9wZXJ0eU5hbWUsIFByb3BlcnR5RGVzY3JpcHRvciYgZGVzY3Jp
cHRvciwgYm9vbCB0aHJvd0V4Y2VwdGlvbikKIHsKICAgICBpZiAoZGVzY3JpcHRvci5pc0FjY2Vz
c29yRGVzY3JpcHRvcigpICYmIChwcm9wZXJ0eU5hbWUgPT0gZXhlYy0+cHJvcGVydHlOYW1lcygp
LnRvU3RyaW5nIHx8IHByb3BlcnR5TmFtZSA9PSBleGVjLT5wcm9wZXJ0eU5hbWVzKCkudmFsdWVP
ZikpCiAgICAgICAgIHJldHVybiBmYWxzZTsKQEAgLTI3NiwxMiArMjc2LDEyIEBAIEpTVmFsdWUg
SlNMb2NhdGlvbjo6dG9TdHJpbmdGdW5jdGlvbihFeGUKICAgICByZXR1cm4ganNTdHJpbmcoZXhl
YywgaW1wbCgpLT50b1N0cmluZygpKTsKIH0KIAotYm9vbCBKU0xvY2F0aW9uUHJvdG90eXBlOjpw
dXREZWxlZ2F0ZShFeGVjU3RhdGUqIGV4ZWMsIGNvbnN0IElkZW50aWZpZXImIHByb3BlcnR5TmFt
ZSwgSlNWYWx1ZSwgUHV0UHJvcGVydHlTbG90JikKK2Jvb2wgSlNMb2NhdGlvblByb3RvdHlwZTo6
cHV0RGVsZWdhdGUoRXhlY1N0YXRlKiBleGVjLCBQcm9wZXJ0eU5hbWUgcHJvcGVydHlOYW1lLCBK
U1ZhbHVlLCBQdXRQcm9wZXJ0eVNsb3QmKQogewogICAgIHJldHVybiAocHJvcGVydHlOYW1lID09
IGV4ZWMtPnByb3BlcnR5TmFtZXMoKS50b1N0cmluZyB8fCBwcm9wZXJ0eU5hbWUgPT0gZXhlYy0+
cHJvcGVydHlOYW1lcygpLnZhbHVlT2YpOwogfQogCi1ib29sIEpTTG9jYXRpb25Qcm90b3R5cGU6
OmRlZmluZU93blByb3BlcnR5KEpTT2JqZWN0KiBvYmplY3QsIEV4ZWNTdGF0ZSogZXhlYywgY29u
c3QgSWRlbnRpZmllciYgcHJvcGVydHlOYW1lLCBQcm9wZXJ0eURlc2NyaXB0b3ImIGRlc2NyaXB0
b3IsIGJvb2wgdGhyb3dFeGNlcHRpb24pCitib29sIEpTTG9jYXRpb25Qcm90b3R5cGU6OmRlZmlu
ZU93blByb3BlcnR5KEpTT2JqZWN0KiBvYmplY3QsIEV4ZWNTdGF0ZSogZXhlYywgUHJvcGVydHlO
YW1lIHByb3BlcnR5TmFtZSwgUHJvcGVydHlEZXNjcmlwdG9yJiBkZXNjcmlwdG9yLCBib29sIHRo
cm93RXhjZXB0aW9uKQogewogICAgIGlmIChkZXNjcmlwdG9yLmlzQWNjZXNzb3JEZXNjcmlwdG9y
KCkgJiYgKHByb3BlcnR5TmFtZSA9PSBleGVjLT5wcm9wZXJ0eU5hbWVzKCkudG9TdHJpbmcgfHwg
cHJvcGVydHlOYW1lID09IGV4ZWMtPnByb3BlcnR5TmFtZXMoKS52YWx1ZU9mKSkKICAgICAgICAg
cmV0dXJuIGZhbHNlOwpJbmRleDogU291cmNlL1dlYkNvcmUvYmluZGluZ3MvanMvSlNOYW1lZE5v
ZGVNYXBDdXN0b20uY3BwCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9XZWJDb3JlL2JpbmRpbmdzL2pz
L0pTTmFtZWROb2RlTWFwQ3VzdG9tLmNwcAkocmV2aXNpb24gMTE2NjY3KQorKysgU291cmNlL1dl
YkNvcmUvYmluZGluZ3MvanMvSlNOYW1lZE5vZGVNYXBDdXN0b20uY3BwCSh3b3JraW5nIGNvcHkp
CkBAIC0zNSwxNSArMzUsMTUgQEAgdXNpbmcgbmFtZXNwYWNlIEpTQzsKIAogbmFtZXNwYWNlIFdl
YkNvcmUgewogCi1ib29sIEpTTmFtZWROb2RlTWFwOjpjYW5HZXRJdGVtc0Zvck5hbWUoRXhlY1N0
YXRlKiwgTmFtZWROb2RlTWFwKiBpbXBsLCBjb25zdCBJZGVudGlmaWVyJiBwcm9wZXJ0eU5hbWUp
Citib29sIEpTTmFtZWROb2RlTWFwOjpjYW5HZXRJdGVtc0Zvck5hbWUoRXhlY1N0YXRlKiwgTmFt
ZWROb2RlTWFwKiBpbXBsLCBQcm9wZXJ0eU5hbWUgcHJvcGVydHlOYW1lKQogewotICAgIHJldHVy
biBpbXBsLT5nZXROYW1lZEl0ZW0oaWRlbnRpZmllclRvU3RyaW5nKHByb3BlcnR5TmFtZSkpOwor
ICAgIHJldHVybiBpbXBsLT5nZXROYW1lZEl0ZW0ocHJvcGVydHlOYW1lVG9TdHJpbmcocHJvcGVy
dHlOYW1lKSk7CiB9CiAKLUpTVmFsdWUgSlNOYW1lZE5vZGVNYXA6Om5hbWVHZXR0ZXIoRXhlY1N0
YXRlKiBleGVjLCBKU1ZhbHVlIHNsb3RCYXNlLCBjb25zdCBJZGVudGlmaWVyJiBwcm9wZXJ0eU5h
bWUpCitKU1ZhbHVlIEpTTmFtZWROb2RlTWFwOjpuYW1lR2V0dGVyKEV4ZWNTdGF0ZSogZXhlYywg
SlNWYWx1ZSBzbG90QmFzZSwgUHJvcGVydHlOYW1lIHByb3BlcnR5TmFtZSkKIHsKICAgICBKU05h
bWVkTm9kZU1hcCogdGhpc09iaiA9IGpzQ2FzdDxKU05hbWVkTm9kZU1hcCo+KGFzT2JqZWN0KHNs
b3RCYXNlKSk7Ci0gICAgcmV0dXJuIHRvSlMoZXhlYywgdGhpc09iai0+Z2xvYmFsT2JqZWN0KCks
IHRoaXNPYmotPmltcGwoKS0+Z2V0TmFtZWRJdGVtKGlkZW50aWZpZXJUb1N0cmluZyhwcm9wZXJ0
eU5hbWUpKSk7CisgICAgcmV0dXJuIHRvSlMoZXhlYywgdGhpc09iai0+Z2xvYmFsT2JqZWN0KCks
IHRoaXNPYmotPmltcGwoKS0+Z2V0TmFtZWRJdGVtKHByb3BlcnR5TmFtZVRvU3RyaW5nKHByb3Bl
cnR5TmFtZSkpKTsKIH0KIAogdm9pZCBKU05hbWVkTm9kZU1hcDo6dmlzaXRDaGlsZHJlbihKU0Nl
bGwqIGNlbGwsIFNsb3RWaXNpdG9yJiB2aXNpdG9yKQpJbmRleDogU291cmNlL1dlYkNvcmUvYmlu
ZGluZ3MvanMvSlNOb2RlTGlzdEN1c3RvbS5jcHAKPT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL1dlYkNv
cmUvYmluZGluZ3MvanMvSlNOb2RlTGlzdEN1c3RvbS5jcHAJKHJldmlzaW9uIDExNjY2NykKKysr
IFNvdXJjZS9XZWJDb3JlL2JpbmRpbmdzL2pzL0pTTm9kZUxpc3RDdXN0b20uY3BwCSh3b3JraW5n
IGNvcHkpCkBAIC00NiwxNSArNDYsMTUgQEAgYm9vbCBKU05vZGVMaXN0T3duZXI6OmlzUmVhY2hh
YmxlRnJvbU9wYQogICAgIHJldHVybiB2aXNpdG9yLmNvbnRhaW5zT3BhcXVlUm9vdChyb290KHN0
YXRpY19jYXN0PER5bmFtaWNOb2RlTGlzdCo+KGpzTm9kZUxpc3QtPmltcGwoKSktPm5vZGUoKSkp
OwogfQogCi1ib29sIEpTTm9kZUxpc3Q6OmNhbkdldEl0ZW1zRm9yTmFtZShFeGVjU3RhdGUqLCBO
b2RlTGlzdCogaW1wbCwgY29uc3QgSWRlbnRpZmllciYgcHJvcGVydHlOYW1lKQorYm9vbCBKU05v
ZGVMaXN0OjpjYW5HZXRJdGVtc0Zvck5hbWUoRXhlY1N0YXRlKiwgTm9kZUxpc3QqIGltcGwsIFBy
b3BlcnR5TmFtZSBwcm9wZXJ0eU5hbWUpCiB7Ci0gICAgcmV0dXJuIGltcGwtPml0ZW1XaXRoTmFt
ZShpZGVudGlmaWVyVG9BdG9taWNTdHJpbmcocHJvcGVydHlOYW1lKSk7CisgICAgcmV0dXJuIGlt
cGwtPml0ZW1XaXRoTmFtZShwcm9wZXJ0eU5hbWVUb0F0b21pY1N0cmluZyhwcm9wZXJ0eU5hbWUp
KTsKIH0KIAotSlNWYWx1ZSBKU05vZGVMaXN0OjpuYW1lR2V0dGVyKEV4ZWNTdGF0ZSogZXhlYywg
SlNWYWx1ZSBzbG90QmFzZSwgY29uc3QgSWRlbnRpZmllciYgcHJvcGVydHlOYW1lKQorSlNWYWx1
ZSBKU05vZGVMaXN0OjpuYW1lR2V0dGVyKEV4ZWNTdGF0ZSogZXhlYywgSlNWYWx1ZSBzbG90QmFz
ZSwgUHJvcGVydHlOYW1lIHByb3BlcnR5TmFtZSkKIHsKICAgICBKU05vZGVMaXN0KiB0aGlzT2Jq
ID0ganNDYXN0PEpTTm9kZUxpc3QqPihhc09iamVjdChzbG90QmFzZSkpOwotICAgIHJldHVybiB0
b0pTKGV4ZWMsIHRoaXNPYmotPmdsb2JhbE9iamVjdCgpLCB0aGlzT2JqLT5pbXBsKCktPml0ZW1X
aXRoTmFtZShpZGVudGlmaWVyVG9BdG9taWNTdHJpbmcocHJvcGVydHlOYW1lKSkpOworICAgIHJl
dHVybiB0b0pTKGV4ZWMsIHRoaXNPYmotPmdsb2JhbE9iamVjdCgpLCB0aGlzT2JqLT5pbXBsKCkt
Pml0ZW1XaXRoTmFtZShwcm9wZXJ0eU5hbWVUb0F0b21pY1N0cmluZyhwcm9wZXJ0eU5hbWUpKSk7
CiB9CiAKIH0gLy8gbmFtZXNwYWNlIFdlYkNvcmUKSW5kZXg6IFNvdXJjZS9XZWJDb3JlL2JpbmRp
bmdzL2pzL0pTUGx1Z2luRWxlbWVudEZ1bmN0aW9ucy5jcHAKPT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNl
L1dlYkNvcmUvYmluZGluZ3MvanMvSlNQbHVnaW5FbGVtZW50RnVuY3Rpb25zLmNwcAkocmV2aXNp
b24gMTE2NjY3KQorKysgU291cmNlL1dlYkNvcmUvYmluZGluZ3MvanMvSlNQbHVnaW5FbGVtZW50
RnVuY3Rpb25zLmNwcAkod29ya2luZyBjb3B5KQpAQCAtMTAwLDcgKzEwMCw3IEBAIEpTT2JqZWN0
KiBwbHVnaW5TY3JpcHRPYmplY3QoRXhlY1N0YXRlKiAKICAgICByZXR1cm4gaW5zdGFuY2UtPmNy
ZWF0ZVJ1bnRpbWVPYmplY3QoZXhlYyk7CiB9CiAgICAgCi1KU1ZhbHVlIHJ1bnRpbWVPYmplY3RQ
cm9wZXJ0eUdldHRlcihFeGVjU3RhdGUqIGV4ZWMsIEpTVmFsdWUgc2xvdEJhc2UsIGNvbnN0IElk
ZW50aWZpZXImIHByb3BlcnR5TmFtZSkKK0pTVmFsdWUgcnVudGltZU9iamVjdFByb3BlcnR5R2V0
dGVyKEV4ZWNTdGF0ZSogZXhlYywgSlNWYWx1ZSBzbG90QmFzZSwgUHJvcGVydHlOYW1lIHByb3Bl
cnR5TmFtZSkKIHsKICAgICBKU0hUTUxFbGVtZW50KiBlbGVtZW50ID0ganNDYXN0PEpTSFRNTEVs
ZW1lbnQqPihhc09iamVjdChzbG90QmFzZSkpOwogICAgIEpTT2JqZWN0KiBzY3JpcHRPYmplY3Qg
PSBwbHVnaW5TY3JpcHRPYmplY3QoZXhlYywgZWxlbWVudCk7CkBAIC0xMTAsNyArMTEwLDcgQEAg
SlNWYWx1ZSBydW50aW1lT2JqZWN0UHJvcGVydHlHZXR0ZXIoRXhlYwogICAgIHJldHVybiBzY3Jp
cHRPYmplY3QtPmdldChleGVjLCBwcm9wZXJ0eU5hbWUpOwogfQogCi1ib29sIHJ1bnRpbWVPYmpl
Y3RDdXN0b21HZXRPd25Qcm9wZXJ0eVNsb3QoRXhlY1N0YXRlKiBleGVjLCBjb25zdCBJZGVudGlm
aWVyJiBwcm9wZXJ0eU5hbWUsIFByb3BlcnR5U2xvdCYgc2xvdCwgSlNIVE1MRWxlbWVudCogZWxl
bWVudCkKK2Jvb2wgcnVudGltZU9iamVjdEN1c3RvbUdldE93blByb3BlcnR5U2xvdChFeGVjU3Rh
dGUqIGV4ZWMsIFByb3BlcnR5TmFtZSBwcm9wZXJ0eU5hbWUsIFByb3BlcnR5U2xvdCYgc2xvdCwg
SlNIVE1MRWxlbWVudCogZWxlbWVudCkKIHsKICAgICBKU09iamVjdCogc2NyaXB0T2JqZWN0ID0g
cGx1Z2luU2NyaXB0T2JqZWN0KGV4ZWMsIGVsZW1lbnQpOwogICAgIGlmICghc2NyaXB0T2JqZWN0
KQpAQCAtMTIyLDcgKzEyMiw3IEBAIGJvb2wgcnVudGltZU9iamVjdEN1c3RvbUdldE93blByb3Bl
cnR5U2wKICAgICByZXR1cm4gdHJ1ZTsKIH0KIAotYm9vbCBydW50aW1lT2JqZWN0Q3VzdG9tR2V0
T3duUHJvcGVydHlEZXNjcmlwdG9yKEV4ZWNTdGF0ZSogZXhlYywgY29uc3QgSWRlbnRpZmllciYg
cHJvcGVydHlOYW1lLCBQcm9wZXJ0eURlc2NyaXB0b3ImIGRlc2NyaXB0b3IsIEpTSFRNTEVsZW1l
bnQqIGVsZW1lbnQpCitib29sIHJ1bnRpbWVPYmplY3RDdXN0b21HZXRPd25Qcm9wZXJ0eURlc2Ny
aXB0b3IoRXhlY1N0YXRlKiBleGVjLCBQcm9wZXJ0eU5hbWUgcHJvcGVydHlOYW1lLCBQcm9wZXJ0
eURlc2NyaXB0b3ImIGRlc2NyaXB0b3IsIEpTSFRNTEVsZW1lbnQqIGVsZW1lbnQpCiB7CiAgICAg
SlNPYmplY3QqIHNjcmlwdE9iamVjdCA9IHBsdWdpblNjcmlwdE9iamVjdChleGVjLCBlbGVtZW50
KTsKICAgICBpZiAoIXNjcmlwdE9iamVjdCkKQEAgLTEzOCw3ICsxMzgsNyBAQCBib29sIHJ1bnRp
bWVPYmplY3RDdXN0b21HZXRPd25Qcm9wZXJ0eURlCiAgICAgcmV0dXJuIHRydWU7CiB9CiAKLWJv
b2wgcnVudGltZU9iamVjdEN1c3RvbVB1dChFeGVjU3RhdGUqIGV4ZWMsIGNvbnN0IElkZW50aWZp
ZXImIHByb3BlcnR5TmFtZSwgSlNWYWx1ZSB2YWx1ZSwgSlNIVE1MRWxlbWVudCogZWxlbWVudCwg
UHV0UHJvcGVydHlTbG90JiBzbG90KQorYm9vbCBydW50aW1lT2JqZWN0Q3VzdG9tUHV0KEV4ZWNT
dGF0ZSogZXhlYywgUHJvcGVydHlOYW1lIHByb3BlcnR5TmFtZSwgSlNWYWx1ZSB2YWx1ZSwgSlNI
VE1MRWxlbWVudCogZWxlbWVudCwgUHV0UHJvcGVydHlTbG90JiBzbG90KQogewogICAgIEpTT2Jq
ZWN0KiBzY3JpcHRPYmplY3QgPSBwbHVnaW5TY3JpcHRPYmplY3QoZXhlYywgZWxlbWVudCk7CiAg
ICAgaWYgKCFzY3JpcHRPYmplY3QpCkluZGV4OiBTb3VyY2UvV2ViQ29yZS9iaW5kaW5ncy9qcy9K
U1BsdWdpbkVsZW1lbnRGdW5jdGlvbnMuaAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2ViQ29yZS9i
aW5kaW5ncy9qcy9KU1BsdWdpbkVsZW1lbnRGdW5jdGlvbnMuaAkocmV2aXNpb24gMTE2NjY3KQor
KysgU291cmNlL1dlYkNvcmUvYmluZGluZ3MvanMvSlNQbHVnaW5FbGVtZW50RnVuY3Rpb25zLmgJ
KHdvcmtpbmcgY29weSkKQEAgLTM4LDEwICszOCwxMCBAQCBuYW1lc3BhY2UgV2ViQ29yZSB7CiAg
ICAgSlNDOjpCaW5kaW5nczo6SW5zdGFuY2UqIHBsdWdpbkluc3RhbmNlKE5vZGUqKTsKICAgICBK
U0M6OkpTT2JqZWN0KiBwbHVnaW5TY3JpcHRPYmplY3QoSlNDOjpFeGVjU3RhdGUqIGV4ZWMsIEpT
SFRNTEVsZW1lbnQqIGpzSFRNTEVsZW1lbnQpOwogCi0gICAgSlNDOjpKU1ZhbHVlIHJ1bnRpbWVP
YmplY3RQcm9wZXJ0eUdldHRlcihKU0M6OkV4ZWNTdGF0ZSosIEpTQzo6SlNWYWx1ZSwgY29uc3Qg
SlNDOjpJZGVudGlmaWVyJik7Ci0gICAgYm9vbCBydW50aW1lT2JqZWN0Q3VzdG9tR2V0T3duUHJv
cGVydHlTbG90KEpTQzo6RXhlY1N0YXRlKiwgY29uc3QgSlNDOjpJZGVudGlmaWVyJiwgSlNDOjpQ
cm9wZXJ0eVNsb3QmLCBKU0hUTUxFbGVtZW50Kik7Ci0gICAgYm9vbCBydW50aW1lT2JqZWN0Q3Vz
dG9tR2V0T3duUHJvcGVydHlEZXNjcmlwdG9yKEpTQzo6RXhlY1N0YXRlKiwgY29uc3QgSlNDOjpJ
ZGVudGlmaWVyJiwgSlNDOjpQcm9wZXJ0eURlc2NyaXB0b3ImLCBKU0hUTUxFbGVtZW50Kik7Ci0g
ICAgYm9vbCBydW50aW1lT2JqZWN0Q3VzdG9tUHV0KEpTQzo6RXhlY1N0YXRlKiwgY29uc3QgSlND
OjpJZGVudGlmaWVyJiwgSlNDOjpKU1ZhbHVlLCBKU0hUTUxFbGVtZW50KiwgSlNDOjpQdXRQcm9w
ZXJ0eVNsb3QmKTsKKyAgICBKU0M6OkpTVmFsdWUgcnVudGltZU9iamVjdFByb3BlcnR5R2V0dGVy
KEpTQzo6RXhlY1N0YXRlKiwgSlNDOjpKU1ZhbHVlLCBKU0M6OlByb3BlcnR5TmFtZSk7CisgICAg
Ym9vbCBydW50aW1lT2JqZWN0Q3VzdG9tR2V0T3duUHJvcGVydHlTbG90KEpTQzo6RXhlY1N0YXRl
KiwgSlNDOjpQcm9wZXJ0eU5hbWUsIEpTQzo6UHJvcGVydHlTbG90JiwgSlNIVE1MRWxlbWVudCop
OworICAgIGJvb2wgcnVudGltZU9iamVjdEN1c3RvbUdldE93blByb3BlcnR5RGVzY3JpcHRvcihK
U0M6OkV4ZWNTdGF0ZSosIEpTQzo6UHJvcGVydHlOYW1lLCBKU0M6OlByb3BlcnR5RGVzY3JpcHRv
ciYsIEpTSFRNTEVsZW1lbnQqKTsKKyAgICBib29sIHJ1bnRpbWVPYmplY3RDdXN0b21QdXQoSlND
OjpFeGVjU3RhdGUqLCBKU0M6OlByb3BlcnR5TmFtZSwgSlNDOjpKU1ZhbHVlLCBKU0hUTUxFbGVt
ZW50KiwgSlNDOjpQdXRQcm9wZXJ0eVNsb3QmKTsKICAgICBKU0M6OkNhbGxUeXBlIHJ1bnRpbWVP
YmplY3RHZXRDYWxsRGF0YShKU0hUTUxFbGVtZW50KiwgSlNDOjpDYWxsRGF0YSYpOwogCiB9IC8v
IG5hbWVzcGFjZSBXZWJDb3JlCkluZGV4OiBTb3VyY2UvV2ViQ29yZS9iaW5kaW5ncy9qcy9KU1N0
b3JhZ2VDdXN0b20uY3BwCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9XZWJDb3JlL2JpbmRpbmdzL2pz
L0pTU3RvcmFnZUN1c3RvbS5jcHAJKHJldmlzaW9uIDExNjY2NykKKysrIFNvdXJjZS9XZWJDb3Jl
L2JpbmRpbmdzL2pzL0pTU3RvcmFnZUN1c3RvbS5jcHAJKHdvcmtpbmcgY29weSkKQEAgLTM0LDEy
ICszNCwxMiBAQCB1c2luZyBuYW1lc3BhY2UgSlNDOwogCiBuYW1lc3BhY2UgV2ViQ29yZSB7CiAK
LWJvb2wgSlNTdG9yYWdlOjpjYW5HZXRJdGVtc0Zvck5hbWUoRXhlY1N0YXRlKiwgU3RvcmFnZSog
aW1wbCwgY29uc3QgSWRlbnRpZmllciYgcHJvcGVydHlOYW1lKQorYm9vbCBKU1N0b3JhZ2U6OmNh
bkdldEl0ZW1zRm9yTmFtZShFeGVjU3RhdGUqLCBTdG9yYWdlKiBpbXBsLCBQcm9wZXJ0eU5hbWUg
cHJvcGVydHlOYW1lKQogewotICAgIHJldHVybiBpbXBsLT5jb250YWlucyhpZGVudGlmaWVyVG9T
dHJpbmcocHJvcGVydHlOYW1lKSk7CisgICAgcmV0dXJuIGltcGwtPmNvbnRhaW5zKHByb3BlcnR5
TmFtZVRvU3RyaW5nKHByb3BlcnR5TmFtZSkpOwogfQogCi1KU1ZhbHVlIEpTU3RvcmFnZTo6bmFt
ZUdldHRlcihFeGVjU3RhdGUqIGV4ZWMsIEpTVmFsdWUgc2xvdEJhc2UsIGNvbnN0IElkZW50aWZp
ZXImIHByb3BlcnR5TmFtZSkKK0pTVmFsdWUgSlNTdG9yYWdlOjpuYW1lR2V0dGVyKEV4ZWNTdGF0
ZSogZXhlYywgSlNWYWx1ZSBzbG90QmFzZSwgUHJvcGVydHlOYW1lIHByb3BlcnR5TmFtZSkKIHsK
ICAgICBKU1N0b3JhZ2UqIHRoaXNPYmogPSBqc0Nhc3Q8SlNTdG9yYWdlKj4oYXNPYmplY3Qoc2xv
dEJhc2UpKTsKICAgICAgICAgCkBAIC00NywxMCArNDcsMTAgQEAgSlNWYWx1ZSBKU1N0b3JhZ2U6
Om5hbWVHZXR0ZXIoRXhlY1N0YXRlKgogICAgIGlmIChwcm90b3R5cGUuaXNPYmplY3QoKSAmJiBh
c09iamVjdChwcm90b3R5cGUpLT5oYXNQcm9wZXJ0eShleGVjLCBwcm9wZXJ0eU5hbWUpKQogICAg
ICAgICByZXR1cm4gYXNPYmplY3QocHJvdG90eXBlKS0+Z2V0KGV4ZWMsIHByb3BlcnR5TmFtZSk7
CiAgCi0gICAgcmV0dXJuIGpzU3RyaW5nT3JOdWxsKGV4ZWMsIHRoaXNPYmotPmltcGwoKS0+Z2V0
SXRlbShpZGVudGlmaWVyVG9TdHJpbmcocHJvcGVydHlOYW1lKSkpOworICAgIHJldHVybiBqc1N0
cmluZ09yTnVsbChleGVjLCB0aGlzT2JqLT5pbXBsKCktPmdldEl0ZW0ocHJvcGVydHlOYW1lVG9T
dHJpbmcocHJvcGVydHlOYW1lKSkpOwogfQogCi1ib29sIEpTU3RvcmFnZTo6ZGVsZXRlUHJvcGVy
dHkoSlNDZWxsKiBjZWxsLCBFeGVjU3RhdGUqIGV4ZWMsIGNvbnN0IElkZW50aWZpZXImIHByb3Bl
cnR5TmFtZSkKK2Jvb2wgSlNTdG9yYWdlOjpkZWxldGVQcm9wZXJ0eShKU0NlbGwqIGNlbGwsIEV4
ZWNTdGF0ZSogZXhlYywgUHJvcGVydHlOYW1lIHByb3BlcnR5TmFtZSkKIHsKICAgICBKU1N0b3Jh
Z2UqIHRoaXNPYmplY3QgPSBqc0Nhc3Q8SlNTdG9yYWdlKj4oY2VsbCk7CiAgICAgLy8gT25seSBw
ZXJmb3JtIHRoZSBjdXN0b20gZGVsZXRlIGlmIHRoZSBvYmplY3QgZG9lc24ndCBoYXZlIGEgbmF0
aXZlIHByb3BlcnR5IGJ5IHRoaXMgbmFtZS4KQEAgLTY0LDcgKzY0LDcgQEAgYm9vbCBKU1N0b3Jh
Z2U6OmRlbGV0ZVByb3BlcnR5KEpTQ2VsbCogYwogICAgIGlmIChwcm90b3R5cGUuaXNPYmplY3Qo
KSAmJiBhc09iamVjdChwcm90b3R5cGUpLT5oYXNQcm9wZXJ0eShleGVjLCBwcm9wZXJ0eU5hbWUp
KQogICAgICAgICByZXR1cm4gZmFsc2U7CiAKLSAgICB0aGlzT2JqZWN0LT5tX2ltcGwtPnJlbW92
ZUl0ZW0oaWRlbnRpZmllclRvU3RyaW5nKHByb3BlcnR5TmFtZSkpOworICAgIHRoaXNPYmplY3Qt
Pm1faW1wbC0+cmVtb3ZlSXRlbShwcm9wZXJ0eU5hbWVUb1N0cmluZyhwcm9wZXJ0eU5hbWUpKTsK
ICAgICByZXR1cm4gdHJ1ZTsKIH0KIApAQCAtNzgsNyArNzgsNyBAQCB2b2lkIEpTU3RvcmFnZTo6
Z2V0T3duUHJvcGVydHlOYW1lcyhKU09iCiAgICAgQmFzZTo6Z2V0T3duUHJvcGVydHlOYW1lcyh0
aGlzT2JqZWN0LCBleGVjLCBwcm9wZXJ0eU5hbWVzLCBtb2RlKTsKIH0KIAotYm9vbCBKU1N0b3Jh
Z2U6OnB1dERlbGVnYXRlKEV4ZWNTdGF0ZSogZXhlYywgY29uc3QgSWRlbnRpZmllciYgcHJvcGVy
dHlOYW1lLCBKU1ZhbHVlIHZhbHVlLCBQdXRQcm9wZXJ0eVNsb3QmKQorYm9vbCBKU1N0b3JhZ2U6
OnB1dERlbGVnYXRlKEV4ZWNTdGF0ZSogZXhlYywgUHJvcGVydHlOYW1lIHByb3BlcnR5TmFtZSwg
SlNWYWx1ZSB2YWx1ZSwgUHV0UHJvcGVydHlTbG90JikKIHsKICAgICAvLyBPbmx5IHBlcmZvcm0g
dGhlIGN1c3RvbSBwdXQgaWYgdGhlIG9iamVjdCBkb2Vzbid0IGhhdmUgYSBuYXRpdmUgcHJvcGVy
dHkgYnkgdGhpcyBuYW1lLgogICAgIC8vIFNpbmNlIGhhc1Byb3BlcnR5KCkgd291bGQgZW5kIHVw
IGNhbGxpbmcgY2FuR2V0SXRlbXNGb3JOYW1lKCkgYW5kIGJlIGZvb2xlZCwgd2UgbmVlZCB0byBj
aGVjawpAQCAtOTYsNyArOTYsNyBAQCBib29sIEpTU3RvcmFnZTo6cHV0RGVsZWdhdGUoRXhlY1N0
YXRlKiBlCiAgICAgICAgIHJldHVybiB0cnVlOwogICAgIAogICAgIEV4Y2VwdGlvbkNvZGUgZWMg
PSAwOwotICAgIGltcGwoKS0+c2V0SXRlbShpZGVudGlmaWVyVG9TdHJpbmcocHJvcGVydHlOYW1l
KSwgc3RyaW5nVmFsdWUsIGVjKTsKKyAgICBpbXBsKCktPnNldEl0ZW0ocHJvcGVydHlOYW1lVG9T
dHJpbmcocHJvcGVydHlOYW1lKSwgc3RyaW5nVmFsdWUsIGVjKTsKICAgICBzZXRET01FeGNlcHRp
b24oZXhlYywgZWMpOwogCiAgICAgcmV0dXJuIHRydWU7CkluZGV4OiBTb3VyY2UvV2ViQ29yZS9i
aW5kaW5ncy9qcy9KU1N0eWxlU2hlZXRMaXN0Q3VzdG9tLmNwcAo9PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3Vy
Y2UvV2ViQ29yZS9iaW5kaW5ncy9qcy9KU1N0eWxlU2hlZXRMaXN0Q3VzdG9tLmNwcAkocmV2aXNp
b24gMTE2NjY3KQorKysgU291cmNlL1dlYkNvcmUvYmluZGluZ3MvanMvSlNTdHlsZVNoZWV0TGlz
dEN1c3RvbS5jcHAJKHdvcmtpbmcgY29weSkKQEAgLTM1LDE1ICszNSwxNSBAQCB1c2luZyBuYW1l
c3BhY2UgSlNDOwogCiBuYW1lc3BhY2UgV2ViQ29yZSB7CiAKLWJvb2wgSlNTdHlsZVNoZWV0TGlz
dDo6Y2FuR2V0SXRlbXNGb3JOYW1lKEV4ZWNTdGF0ZSosIFN0eWxlU2hlZXRMaXN0KiBzdHlsZVNo
ZWV0TGlzdCwgY29uc3QgSWRlbnRpZmllciYgcHJvcGVydHlOYW1lKQorYm9vbCBKU1N0eWxlU2hl
ZXRMaXN0OjpjYW5HZXRJdGVtc0Zvck5hbWUoRXhlY1N0YXRlKiwgU3R5bGVTaGVldExpc3QqIHN0
eWxlU2hlZXRMaXN0LCBQcm9wZXJ0eU5hbWUgcHJvcGVydHlOYW1lKQogewotICAgIHJldHVybiBz
dHlsZVNoZWV0TGlzdC0+Z2V0TmFtZWRJdGVtKGlkZW50aWZpZXJUb1N0cmluZyhwcm9wZXJ0eU5h
bWUpKTsKKyAgICByZXR1cm4gc3R5bGVTaGVldExpc3QtPmdldE5hbWVkSXRlbShwcm9wZXJ0eU5h
bWVUb1N0cmluZyhwcm9wZXJ0eU5hbWUpKTsKIH0KIAotSlNWYWx1ZSBKU1N0eWxlU2hlZXRMaXN0
OjpuYW1lR2V0dGVyKEV4ZWNTdGF0ZSogZXhlYywgSlNWYWx1ZSBzbG90QmFzZSwgY29uc3QgSWRl
bnRpZmllciYgcHJvcGVydHlOYW1lKQorSlNWYWx1ZSBKU1N0eWxlU2hlZXRMaXN0OjpuYW1lR2V0
dGVyKEV4ZWNTdGF0ZSogZXhlYywgSlNWYWx1ZSBzbG90QmFzZSwgUHJvcGVydHlOYW1lIHByb3Bl
cnR5TmFtZSkKIHsKICAgICBKU1N0eWxlU2hlZXRMaXN0KiB0aGlzT2JqID0ganNDYXN0PEpTU3R5
bGVTaGVldExpc3QqPihhc09iamVjdChzbG90QmFzZSkpOwotICAgIEhUTUxTdHlsZUVsZW1lbnQq
IGVsZW1lbnQgPSB0aGlzT2JqLT5pbXBsKCktPmdldE5hbWVkSXRlbShpZGVudGlmaWVyVG9TdHJp
bmcocHJvcGVydHlOYW1lKSk7CisgICAgSFRNTFN0eWxlRWxlbWVudCogZWxlbWVudCA9IHRoaXNP
YmotPmltcGwoKS0+Z2V0TmFtZWRJdGVtKHByb3BlcnR5TmFtZVRvU3RyaW5nKHByb3BlcnR5TmFt
ZSkpOwogICAgIEFTU0VSVChlbGVtZW50KTsKICAgICByZXR1cm4gdG9KUyhleGVjLCB0aGlzT2Jq
LT5nbG9iYWxPYmplY3QoKSwgZWxlbWVudC0+c2hlZXQoKSk7CiB9CkluZGV4OiBTb3VyY2UvV2Vi
Q29yZS9iaW5kaW5ncy9qcy9KU1dvcmtlckNvbnRleHRDdXN0b20uY3BwCj09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0t
IFNvdXJjZS9XZWJDb3JlL2JpbmRpbmdzL2pzL0pTV29ya2VyQ29udGV4dEN1c3RvbS5jcHAJKHJl
dmlzaW9uIDExNjY2NykKKysrIFNvdXJjZS9XZWJDb3JlL2JpbmRpbmdzL2pzL0pTV29ya2VyQ29u
dGV4dEN1c3RvbS5jcHAJKHdvcmtpbmcgY29weSkKQEAgLTY5LDcgKzY5LDcgQEAgdm9pZCBKU1dv
cmtlckNvbnRleHQ6OnZpc2l0Q2hpbGRyZW4oSlNDZQogICAgIHRoaXNPYmplY3QtPmltcGwoKS0+
dmlzaXRKU0V2ZW50TGlzdGVuZXJzKHZpc2l0b3IpOwogfQogCi1ib29sIEpTV29ya2VyQ29udGV4
dDo6Z2V0T3duUHJvcGVydHlTbG90RGVsZWdhdGUoRXhlY1N0YXRlKiBleGVjLCBjb25zdCBJZGVu
dGlmaWVyJiBwcm9wZXJ0eU5hbWUsIFByb3BlcnR5U2xvdCYgc2xvdCkKK2Jvb2wgSlNXb3JrZXJD
b250ZXh0OjpnZXRPd25Qcm9wZXJ0eVNsb3REZWxlZ2F0ZShFeGVjU3RhdGUqIGV4ZWMsIFByb3Bl
cnR5TmFtZSBwcm9wZXJ0eU5hbWUsIFByb3BlcnR5U2xvdCYgc2xvdCkKIHsKICAgICAvLyBMb29r
IGZvciBvdmVycmlkZXMgYmVmb3JlIGxvb2tpbmcgYXQgYW55IG9mIG91ciBvd24gcHJvcGVydGll
cy4KICAgICBpZiAoSlNHbG9iYWxPYmplY3Q6OmdldE93blByb3BlcnR5U2xvdCh0aGlzLCBleGVj
LCBwcm9wZXJ0eU5hbWUsIHNsb3QpKQpAQCAtNzcsNyArNzcsNyBAQCBib29sIEpTV29ya2VyQ29u
dGV4dDo6Z2V0T3duUHJvcGVydHlTbG90CiAgICAgcmV0dXJuIGZhbHNlOwogfQogCi1ib29sIEpT
V29ya2VyQ29udGV4dDo6Z2V0T3duUHJvcGVydHlEZXNjcmlwdG9yRGVsZWdhdGUoRXhlY1N0YXRl
KiBleGVjLCBjb25zdCBJZGVudGlmaWVyJiBwcm9wZXJ0eU5hbWUsIFByb3BlcnR5RGVzY3JpcHRv
ciYgZGVzY3JpcHRvcikKK2Jvb2wgSlNXb3JrZXJDb250ZXh0OjpnZXRPd25Qcm9wZXJ0eURlc2Ny
aXB0b3JEZWxlZ2F0ZShFeGVjU3RhdGUqIGV4ZWMsIFByb3BlcnR5TmFtZSBwcm9wZXJ0eU5hbWUs
IFByb3BlcnR5RGVzY3JpcHRvciYgZGVzY3JpcHRvcikKIHsKICAgICAvLyBMb29rIGZvciBvdmVy
cmlkZXMgYmVmb3JlIGxvb2tpbmcgYXQgYW55IG9mIG91ciBvd24gcHJvcGVydGllcy4KICAgICBp
ZiAoSlNHbG9iYWxPYmplY3Q6OmdldE93blByb3BlcnR5RGVzY3JpcHRvcih0aGlzLCBleGVjLCBw
cm9wZXJ0eU5hbWUsIGRlc2NyaXB0b3IpKQpJbmRleDogU291cmNlL1dlYkNvcmUvYmluZGluZ3Mv
c2NyaXB0cy9Db2RlR2VuZXJhdG9ySlMucG0KPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL1dlYkNvcmUv
YmluZGluZ3Mvc2NyaXB0cy9Db2RlR2VuZXJhdG9ySlMucG0JKHJldmlzaW9uIDExNjY2NykKKysr
IFNvdXJjZS9XZWJDb3JlL2JpbmRpbmdzL3NjcmlwdHMvQ29kZUdlbmVyYXRvckpTLnBtCSh3b3Jr
aW5nIGNvcHkpCkBAIC00MTIsMTUgKzQxMiwxNCBAQCBzdWIgR2VuZXJhdGVHZXRPd25Qcm9wZXJ0
eVNsb3RCb2R5CiAgICAgfQogCiAgICAgaWYgKCRkYXRhTm9kZS0+ZXh0ZW5kZWRBdHRyaWJ1dGVz
LT57IkluZGV4ZWRHZXR0ZXIifSB8fCAkZGF0YU5vZGUtPmV4dGVuZGVkQXR0cmlidXRlcy0+eyJO
dW1lcmljSW5kZXhlZEdldHRlciJ9KSB7Ci0gICAgICAgIHB1c2goQGdldE93blByb3BlcnR5U2xv
dEltcGwsICIgICAgYm9vbCBvaztcbiIpOwotICAgICAgICBwdXNoKEBnZXRPd25Qcm9wZXJ0eVNs
b3RJbXBsLCAiICAgIHVuc2lnbmVkIGluZGV4ID0gcHJvcGVydHlOYW1lLnRvVUludDMyKG9rKTtc
biIpOworICAgICAgICBwdXNoKEBnZXRPd25Qcm9wZXJ0eVNsb3RJbXBsLCAiICAgIHVuc2lnbmVk
IGluZGV4ID0gcHJvcGVydHlOYW1lLmFzSW5kZXgoKTtcbiIpOwogCiAgICAgICAgICMgSWYgdGhl
IGl0ZW0gZnVuY3Rpb24gcmV0dXJucyBhIHN0cmluZyB0aGVuIHdlIGxldCB0aGUgVHJlYXRSZXR1
cm5lZE51bGxTdHJpbmdBcyBoYW5kbGUgdGhlIGNhc2VzCiAgICAgICAgICMgd2hlcmUgdGhlIGlu
ZGV4IGlzIG91dCBvZiByYW5nZS4KICAgICAgICAgaWYgKEluZGV4R2V0dGVyUmV0dXJuc1N0cmlu
Z3MoJGltcGxDbGFzc05hbWUpKSB7Ci0gICAgICAgICAgICBwdXNoKEBnZXRPd25Qcm9wZXJ0eVNs
b3RJbXBsLCAiICAgIGlmIChvaykge1xuIik7CisgICAgICAgICAgICBwdXNoKEBnZXRPd25Qcm9w
ZXJ0eVNsb3RJbXBsLCAiICAgIGlmIChpbmRleCAhPSBQcm9wZXJ0eU5hbWU6Ok5vdEFuSW5kZXgp
IHtcbiIpOwogICAgICAgICB9IGVsc2UgewotICAgICAgICAgICAgcHVzaChAZ2V0T3duUHJvcGVy
dHlTbG90SW1wbCwgIiAgICBpZiAob2sgJiYgaW5kZXggPCBzdGF0aWNfY2FzdDwkaW1wbENsYXNz
TmFtZSo+KHRoaXNPYmplY3QtPmltcGwoKSktPmxlbmd0aCgpKSB7XG4iKTsKKyAgICAgICAgICAg
IHB1c2goQGdldE93blByb3BlcnR5U2xvdEltcGwsICIgICAgaWYgKGluZGV4ICE9IFByb3BlcnR5
TmFtZTo6Tm90QW5JbmRleCAmJiBpbmRleCA8IHN0YXRpY19jYXN0PCRpbXBsQ2xhc3NOYW1lKj4o
dGhpc09iamVjdC0+aW1wbCgpKS0+bGVuZ3RoKCkpIHtcbiIpOwogICAgICAgICB9CiAgICAgICAg
IGlmICgkZGF0YU5vZGUtPmV4dGVuZGVkQXR0cmlidXRlcy0+eyJOdW1lcmljSW5kZXhlZEdldHRl
ciJ9KSB7CiAgICAgICAgICAgICBwdXNoKEBnZXRPd25Qcm9wZXJ0eVNsb3RJbXBsLCAiICAgICAg
ICBzbG90LnNldFZhbHVlKHRoaXNPYmplY3QtPmdldEJ5SW5kZXgoZXhlYywgaW5kZXgpKTtcbiIp
OwpAQCAtNTA2LDkgKzUwNSw4IEBAIHN1YiBHZW5lcmF0ZUdldE93blByb3BlcnR5RGVzY3JpcHRv
ckJvZHkKICAgICB9CiAKICAgICBpZiAoJGRhdGFOb2RlLT5leHRlbmRlZEF0dHJpYnV0ZXMtPnsi
SW5kZXhlZEdldHRlciJ9IHx8ICRkYXRhTm9kZS0+ZXh0ZW5kZWRBdHRyaWJ1dGVzLT57Ik51bWVy
aWNJbmRleGVkR2V0dGVyIn0pIHsKLSAgICAgICAgcHVzaChAZ2V0T3duUHJvcGVydHlEZXNjcmlw
dG9ySW1wbCwgIiAgICBib29sIG9rO1xuIik7Ci0gICAgICAgIHB1c2goQGdldE93blByb3BlcnR5
RGVzY3JpcHRvckltcGwsICIgICAgdW5zaWduZWQgaW5kZXggPSBwcm9wZXJ0eU5hbWUudG9VSW50
MzIob2spO1xuIik7Ci0gICAgICAgIHB1c2goQGdldE93blByb3BlcnR5RGVzY3JpcHRvckltcGws
ICIgICAgaWYgKG9rICYmIGluZGV4IDwgc3RhdGljX2Nhc3Q8JGltcGxDbGFzc05hbWUqPih0aGlz
T2JqZWN0LT5pbXBsKCkpLT5sZW5ndGgoKSkge1xuIik7CisgICAgICAgIHB1c2goQGdldE93blBy
b3BlcnR5RGVzY3JpcHRvckltcGwsICIgICAgdW5zaWduZWQgaW5kZXggPSBwcm9wZXJ0eU5hbWUu
YXNJbmRleCgpO1xuIik7CisgICAgICAgIHB1c2goQGdldE93blByb3BlcnR5RGVzY3JpcHRvcklt
cGwsICIgICAgaWYgKGluZGV4ICE9IFByb3BlcnR5TmFtZTo6Tm90QW5JbmRleCAmJiBpbmRleCA8
IHN0YXRpY19jYXN0PCRpbXBsQ2xhc3NOYW1lKj4odGhpc09iamVjdC0+aW1wbCgpKS0+bGVuZ3Ro
KCkpIHtcbiIpOwogICAgICAgICBpZiAoJGRhdGFOb2RlLT5leHRlbmRlZEF0dHJpYnV0ZXMtPnsi
TnVtZXJpY0luZGV4ZWRHZXR0ZXIifSkgewogICAgICAgICAgICAgIyBBc3N1bWUgdGhhdCBpZiB0
aGVyZSdzIGEgc2V0dGVyLCB0aGUgaW5kZXggd2lsbCBiZSB3cml0YWJsZQogICAgICAgICAgICAg
aWYgKCRkYXRhTm9kZS0+ZXh0ZW5kZWRBdHRyaWJ1dGVzLT57IkN1c3RvbUluZGV4ZWRTZXR0ZXIi
fSkgewpAQCAtNzQyLDExICs3NDAsMTEgQEAgc3ViIEdlbmVyYXRlSGVhZGVyCiAKICAgICAjIEdl
dHRlcnMKICAgICBpZiAoJGhhc0dldHRlcikgewotICAgICAgICBwdXNoKEBoZWFkZXJDb250ZW50
LCAiICAgIHN0YXRpYyBib29sIGdldE93blByb3BlcnR5U2xvdChKU0M6OkpTQ2VsbCosIEpTQzo6
RXhlY1N0YXRlKiwgY29uc3QgSlNDOjpJZGVudGlmaWVyJiBwcm9wZXJ0eU5hbWUsIEpTQzo6UHJv
cGVydHlTbG90Jik7XG4iKTsKLSAgICAgICAgcHVzaChAaGVhZGVyQ29udGVudCwgIiAgICBzdGF0
aWMgYm9vbCBnZXRPd25Qcm9wZXJ0eURlc2NyaXB0b3IoSlNDOjpKU09iamVjdCosIEpTQzo6RXhl
Y1N0YXRlKiwgY29uc3QgSlNDOjpJZGVudGlmaWVyJiBwcm9wZXJ0eU5hbWUsIEpTQzo6UHJvcGVy
dHlEZXNjcmlwdG9yJik7XG4iKTsKKyAgICAgICAgcHVzaChAaGVhZGVyQ29udGVudCwgIiAgICBz
dGF0aWMgYm9vbCBnZXRPd25Qcm9wZXJ0eVNsb3QoSlNDOjpKU0NlbGwqLCBKU0M6OkV4ZWNTdGF0
ZSosIEpTQzo6UHJvcGVydHlOYW1lIHByb3BlcnR5TmFtZSwgSlNDOjpQcm9wZXJ0eVNsb3QmKTtc
biIpOworICAgICAgICBwdXNoKEBoZWFkZXJDb250ZW50LCAiICAgIHN0YXRpYyBib29sIGdldE93
blByb3BlcnR5RGVzY3JpcHRvcihKU0M6OkpTT2JqZWN0KiwgSlNDOjpFeGVjU3RhdGUqLCBKU0M6
OlByb3BlcnR5TmFtZSBwcm9wZXJ0eU5hbWUsIEpTQzo6UHJvcGVydHlEZXNjcmlwdG9yJik7XG4i
KTsKICAgICAgICAgcHVzaChAaGVhZGVyQ29udGVudCwgIiAgICBzdGF0aWMgYm9vbCBnZXRPd25Q
cm9wZXJ0eVNsb3RCeUluZGV4KEpTQzo6SlNDZWxsKiwgSlNDOjpFeGVjU3RhdGUqLCB1bnNpZ25l
ZCBwcm9wZXJ0eU5hbWUsIEpTQzo6UHJvcGVydHlTbG90Jik7XG4iKSBpZiAoJGRhdGFOb2RlLT5l
eHRlbmRlZEF0dHJpYnV0ZXMtPnsiSW5kZXhlZEdldHRlciJ9IHx8ICRkYXRhTm9kZS0+ZXh0ZW5k
ZWRBdHRyaWJ1dGVzLT57Ik51bWVyaWNJbmRleGVkR2V0dGVyIn0pICYmICEkZGF0YU5vZGUtPmV4
dGVuZGVkQXR0cmlidXRlcy0+eyJDdXN0b21OYW1lZEdldHRlciJ9OwotICAgICAgICBwdXNoKEBo
ZWFkZXJDb250ZW50LCAiICAgIGJvb2wgZ2V0T3duUHJvcGVydHlTbG90RGVsZWdhdGUoSlNDOjpF
eGVjU3RhdGUqLCBjb25zdCBKU0M6OklkZW50aWZpZXImLCBKU0M6OlByb3BlcnR5U2xvdCYpO1xu
IikgaWYgJGRhdGFOb2RlLT5leHRlbmRlZEF0dHJpYnV0ZXMtPnsiSlNDdXN0b21HZXRPd25Qcm9w
ZXJ0eVNsb3RBbmREZXNjcmlwdG9yIn07Ci0gICAgICAgIHB1c2goQGhlYWRlckNvbnRlbnQsICIg
ICAgYm9vbCBnZXRPd25Qcm9wZXJ0eURlc2NyaXB0b3JEZWxlZ2F0ZShKU0M6OkV4ZWNTdGF0ZSos
IGNvbnN0IEpTQzo6SWRlbnRpZmllciYsIEpTQzo6UHJvcGVydHlEZXNjcmlwdG9yJik7XG4iKSBp
ZiAkZGF0YU5vZGUtPmV4dGVuZGVkQXR0cmlidXRlcy0+eyJKU0N1c3RvbUdldE93blByb3BlcnR5
U2xvdEFuZERlc2NyaXB0b3IifTsKKyAgICAgICAgcHVzaChAaGVhZGVyQ29udGVudCwgIiAgICBi
b29sIGdldE93blByb3BlcnR5U2xvdERlbGVnYXRlKEpTQzo6RXhlY1N0YXRlKiwgSlNDOjpQcm9w
ZXJ0eU5hbWUsIEpTQzo6UHJvcGVydHlTbG90Jik7XG4iKSBpZiAkZGF0YU5vZGUtPmV4dGVuZGVk
QXR0cmlidXRlcy0+eyJKU0N1c3RvbUdldE93blByb3BlcnR5U2xvdEFuZERlc2NyaXB0b3IifTsK
KyAgICAgICAgcHVzaChAaGVhZGVyQ29udGVudCwgIiAgICBib29sIGdldE93blByb3BlcnR5RGVz
Y3JpcHRvckRlbGVnYXRlKEpTQzo6RXhlY1N0YXRlKiwgSlNDOjpQcm9wZXJ0eU5hbWUsIEpTQzo6
UHJvcGVydHlEZXNjcmlwdG9yJik7XG4iKSBpZiAkZGF0YU5vZGUtPmV4dGVuZGVkQXR0cmlidXRl
cy0+eyJKU0N1c3RvbUdldE93blByb3BlcnR5U2xvdEFuZERlc2NyaXB0b3IifTsKICAgICAgICAg
JHN0cnVjdHVyZUZsYWdzeyJKU0M6Ok92ZXJyaWRlc0dldE93blByb3BlcnR5U2xvdCJ9ID0gMTsK
ICAgICB9CiAKQEAgLTc2NSw5ICs3NjMsOSBAQCBzdWIgR2VuZXJhdGVIZWFkZXIKIAogICAgICMg
R2V0dGVycwogICAgIGlmICgkaGFzU2V0dGVyKSB7Ci0gICAgICAgIHB1c2goQGhlYWRlckNvbnRl
bnQsICIgICAgc3RhdGljIHZvaWQgcHV0KEpTQzo6SlNDZWxsKiwgSlNDOjpFeGVjU3RhdGUqLCBj
b25zdCBKU0M6OklkZW50aWZpZXImIHByb3BlcnR5TmFtZSwgSlNDOjpKU1ZhbHVlLCBKU0M6OlB1
dFByb3BlcnR5U2xvdCYpO1xuIik7CisgICAgICAgIHB1c2goQGhlYWRlckNvbnRlbnQsICIgICAg
c3RhdGljIHZvaWQgcHV0KEpTQzo6SlNDZWxsKiwgSlNDOjpFeGVjU3RhdGUqLCBKU0M6OlByb3Bl
cnR5TmFtZSBwcm9wZXJ0eU5hbWUsIEpTQzo6SlNWYWx1ZSwgSlNDOjpQdXRQcm9wZXJ0eVNsb3Qm
KTtcbiIpOwogICAgICAgICBwdXNoKEBoZWFkZXJDb250ZW50LCAiICAgIHN0YXRpYyB2b2lkIHB1
dEJ5SW5kZXgoSlNDOjpKU0NlbGwqLCBKU0M6OkV4ZWNTdGF0ZSosIHVuc2lnbmVkIHByb3BlcnR5
TmFtZSwgSlNDOjpKU1ZhbHVlLCBib29sIHNob3VsZFRocm93KTtcbiIpIGlmICRkYXRhTm9kZS0+
ZXh0ZW5kZWRBdHRyaWJ1dGVzLT57IkN1c3RvbUluZGV4ZWRTZXR0ZXIifTsKLSAgICAgICAgcHVz
aChAaGVhZGVyQ29udGVudCwgIiAgICBib29sIHB1dERlbGVnYXRlKEpTQzo6RXhlY1N0YXRlKiwg
Y29uc3QgSlNDOjpJZGVudGlmaWVyJiwgSlNDOjpKU1ZhbHVlLCBKU0M6OlB1dFByb3BlcnR5U2xv
dCYpO1xuIikgaWYgJGRhdGFOb2RlLT5leHRlbmRlZEF0dHJpYnV0ZXMtPnsiQ3VzdG9tTmFtZWRT
ZXR0ZXIifTsKKyAgICAgICAgcHVzaChAaGVhZGVyQ29udGVudCwgIiAgICBib29sIHB1dERlbGVn
YXRlKEpTQzo6RXhlY1N0YXRlKiwgSlNDOjpQcm9wZXJ0eU5hbWUsIEpTQzo6SlNWYWx1ZSwgSlND
OjpQdXRQcm9wZXJ0eVNsb3QmKTtcbiIpIGlmICRkYXRhTm9kZS0+ZXh0ZW5kZWRBdHRyaWJ1dGVz
LT57IkN1c3RvbU5hbWVkU2V0dGVyIn07CiAgICAgfQogCiAgICAgaWYgKCEkaGFzUGFyZW50KSB7
CkBAIC03OTgsNyArNzk2LDcgQEAgc3ViIEdlbmVyYXRlSGVhZGVyCiAgICAgcHVzaChAaGVhZGVy
Q29udGVudCwgIiAgICBzdGF0aWMgSlNDOjpDYWxsVHlwZSBnZXRDYWxsRGF0YShKU0M6OkpTQ2Vs
bCosIEpTQzo6Q2FsbERhdGEmKTtcblxuIikgaWYgJGRhdGFOb2RlLT5leHRlbmRlZEF0dHJpYnV0
ZXMtPnsiQ3VzdG9tQ2FsbCJ9OwogCiAgICAgIyBDdXN0b20gZGVsZXRlUHJvcGVydHkgZnVuY3Rp
b24KLSAgICBwdXNoKEBoZWFkZXJDb250ZW50LCAiICAgIHN0YXRpYyBib29sIGRlbGV0ZVByb3Bl
cnR5KEpTQzo6SlNDZWxsKiwgSlNDOjpFeGVjU3RhdGUqLCBjb25zdCBKU0M6OklkZW50aWZpZXIm
KTtcbiIpIGlmICRkYXRhTm9kZS0+ZXh0ZW5kZWRBdHRyaWJ1dGVzLT57IkN1c3RvbURlbGV0ZVBy
b3BlcnR5In07CisgICAgcHVzaChAaGVhZGVyQ29udGVudCwgIiAgICBzdGF0aWMgYm9vbCBkZWxl
dGVQcm9wZXJ0eShKU0M6OkpTQ2VsbCosIEpTQzo6RXhlY1N0YXRlKiwgSlNDOjpQcm9wZXJ0eU5h
bWUpO1xuIikgaWYgJGRhdGFOb2RlLT5leHRlbmRlZEF0dHJpYnV0ZXMtPnsiQ3VzdG9tRGVsZXRl
UHJvcGVydHkifTsKIAogICAgICMgQ3VzdG9tIGdldFByb3BlcnR5TmFtZXMgZnVuY3Rpb24gZXhp
c3RzIG9uIERPTVdpbmRvdwogICAgIGlmICgkaW50ZXJmYWNlTmFtZSBlcSAiRE9NV2luZG93Iikg
ewpAQCAtODEzLDcgKzgxMSw3IEBAIHN1YiBHZW5lcmF0ZUhlYWRlcgogICAgIH0KIAogICAgICMg
Q3VzdG9tIGRlZmluZU93blByb3BlcnR5IGZ1bmN0aW9uCi0gICAgcHVzaChAaGVhZGVyQ29udGVu
dCwgIiAgICBzdGF0aWMgYm9vbCBkZWZpbmVPd25Qcm9wZXJ0eShKU0M6OkpTT2JqZWN0KiwgSlND
OjpFeGVjU3RhdGUqLCBjb25zdCBKU0M6OklkZW50aWZpZXImIHByb3BlcnR5TmFtZSwgSlNDOjpQ
cm9wZXJ0eURlc2NyaXB0b3ImLCBib29sIHNob3VsZFRocm93KTtcbiIpIGlmICRkYXRhTm9kZS0+
ZXh0ZW5kZWRBdHRyaWJ1dGVzLT57IkpTQ3VzdG9tRGVmaW5lT3duUHJvcGVydHkifTsKKyAgICBw
dXNoKEBoZWFkZXJDb250ZW50LCAiICAgIHN0YXRpYyBib29sIGRlZmluZU93blByb3BlcnR5KEpT
Qzo6SlNPYmplY3QqLCBKU0M6OkV4ZWNTdGF0ZSosIEpTQzo6UHJvcGVydHlOYW1lIHByb3BlcnR5
TmFtZSwgSlNDOjpQcm9wZXJ0eURlc2NyaXB0b3ImLCBib29sIHNob3VsZFRocm93KTtcbiIpIGlm
ICRkYXRhTm9kZS0+ZXh0ZW5kZWRBdHRyaWJ1dGVzLT57IkpTQ3VzdG9tRGVmaW5lT3duUHJvcGVy
dHkifTsKIAogICAgICMgT3ZlcnJpZGUgdG9Cb29sZWFuIHRvIHJldHVybiBmYWxzZSBmb3Igb2Jq
ZWN0cyB0aGF0IHdhbnQgdG8gJ01hc3F1ZXJhZGVzQXNVbmRlZmluZWQnLgogICAgIGlmICgkZGF0
YU5vZGUtPmV4dGVuZGVkQXR0cmlidXRlcy0+eyJNYXNxdWVyYWRlc0FzVW5kZWZpbmVkIn0pIHsK
QEAgLTk0OCwyMCArOTQ2LDIwIEBAIHN1YiBHZW5lcmF0ZUhlYWRlcgogICAgICMgTmFtZSBnZXR0
ZXIKICAgICBpZiAoJGRhdGFOb2RlLT5leHRlbmRlZEF0dHJpYnV0ZXMtPnsiTmFtZWRHZXR0ZXIi
fSB8fCAkZGF0YU5vZGUtPmV4dGVuZGVkQXR0cmlidXRlcy0+eyJDdXN0b21OYW1lZEdldHRlciJ9
KSB7CiAgICAgICAgIHB1c2goQGhlYWRlckNvbnRlbnQsICJwcml2YXRlOlxuIik7Ci0gICAgICAg
IHB1c2goQGhlYWRlckNvbnRlbnQsICIgICAgc3RhdGljIGJvb2wgY2FuR2V0SXRlbXNGb3JOYW1l
KEpTQzo6RXhlY1N0YXRlKiwgJGltcGxDbGFzc05hbWUqLCBjb25zdCBKU0M6OklkZW50aWZpZXIm
KTtcbiIpOwotICAgICAgICBwdXNoKEBoZWFkZXJDb250ZW50LCAiICAgIHN0YXRpYyBKU0M6OkpT
VmFsdWUgbmFtZUdldHRlcihKU0M6OkV4ZWNTdGF0ZSosIEpTQzo6SlNWYWx1ZSwgY29uc3QgSlND
OjpJZGVudGlmaWVyJik7XG4iKTsKKyAgICAgICAgcHVzaChAaGVhZGVyQ29udGVudCwgIiAgICBz
dGF0aWMgYm9vbCBjYW5HZXRJdGVtc0Zvck5hbWUoSlNDOjpFeGVjU3RhdGUqLCAkaW1wbENsYXNz
TmFtZSosIEpTQzo6UHJvcGVydHlOYW1lKTtcbiIpOworICAgICAgICBwdXNoKEBoZWFkZXJDb250
ZW50LCAiICAgIHN0YXRpYyBKU0M6OkpTVmFsdWUgbmFtZUdldHRlcihKU0M6OkV4ZWNTdGF0ZSos
IEpTQzo6SlNWYWx1ZSwgSlNDOjpQcm9wZXJ0eU5hbWUpO1xuIik7CiAgICAgfQogCiAgICAgcHVz
aChAaGVhZGVyQ29udGVudCwgIn07XG5cbiIpOwogCiAgICAgaWYgKCRkYXRhTm9kZS0+ZXh0ZW5k
ZWRBdHRyaWJ1dGVzLT57IkpTSW5saW5lR2V0T3duUHJvcGVydHlTbG90In0gJiYgISRkYXRhTm9k
ZS0+ZXh0ZW5kZWRBdHRyaWJ1dGVzLT57IkN1c3RvbUdldE93blByb3BlcnR5U2xvdCJ9KSB7Ci0g
ICAgICAgIHB1c2goQGhlYWRlckNvbnRlbnQsICJBTFdBWVNfSU5MSU5FIGJvb2wgJHtjbGFzc05h
bWV9OjpnZXRPd25Qcm9wZXJ0eVNsb3QoSlNDOjpKU0NlbGwqIGNlbGwsIEpTQzo6RXhlY1N0YXRl
KiBleGVjLCBjb25zdCBKU0M6OklkZW50aWZpZXImIHByb3BlcnR5TmFtZSwgSlNDOjpQcm9wZXJ0
eVNsb3QmIHNsb3QpXG4iKTsKKyAgICAgICAgcHVzaChAaGVhZGVyQ29udGVudCwgIkFMV0FZU19J
TkxJTkUgYm9vbCAke2NsYXNzTmFtZX06OmdldE93blByb3BlcnR5U2xvdChKU0M6OkpTQ2VsbCog
Y2VsbCwgSlNDOjpFeGVjU3RhdGUqIGV4ZWMsIEpTQzo6UHJvcGVydHlOYW1lIHByb3BlcnR5TmFt
ZSwgSlNDOjpQcm9wZXJ0eVNsb3QmIHNsb3QpXG4iKTsKICAgICAgICAgcHVzaChAaGVhZGVyQ29u
dGVudCwgIntcbiIpOwogICAgICAgICBwdXNoKEBoZWFkZXJDb250ZW50LCAiICAgICR7Y2xhc3NO
YW1lfSogdGhpc09iamVjdCA9IEpTQzo6anNDYXN0PCR7Y2xhc3NOYW1lfSo+KGNlbGwpO1xuIik7
CiAgICAgICAgIHB1c2goQGhlYWRlckNvbnRlbnQsICIgICAgQVNTRVJUX0dDX09CSkVDVF9JTkhF
UklUUyh0aGlzT2JqZWN0LCAmc19pbmZvKTtcbiIpOwogICAgICAgICBwdXNoKEBoZWFkZXJDb250
ZW50LCBHZW5lcmF0ZUdldE93blByb3BlcnR5U2xvdEJvZHkoJGRhdGFOb2RlLCAkaW50ZXJmYWNl
TmFtZSwgJGNsYXNzTmFtZSwgJGltcGxDbGFzc05hbWUsICRudW1BdHRyaWJ1dGVzID4gMCwgMSkp
OwogICAgICAgICBwdXNoKEBoZWFkZXJDb250ZW50LCAifVxuXG4iKTsKLSAgICAgICAgcHVzaChA
aGVhZGVyQ29udGVudCwgIkFMV0FZU19JTkxJTkUgYm9vbCAke2NsYXNzTmFtZX06OmdldE93blBy
b3BlcnR5RGVzY3JpcHRvcihKU0M6OkpTT2JqZWN0KiBvYmplY3QsIEpTQzo6RXhlY1N0YXRlKiBl
eGVjLCBjb25zdCBKU0M6OklkZW50aWZpZXImIHByb3BlcnR5TmFtZSwgSlNDOjpQcm9wZXJ0eURl
c2NyaXB0b3ImIGRlc2NyaXB0b3IpXG4iKTsKKyAgICAgICAgcHVzaChAaGVhZGVyQ29udGVudCwg
IkFMV0FZU19JTkxJTkUgYm9vbCAke2NsYXNzTmFtZX06OmdldE93blByb3BlcnR5RGVzY3JpcHRv
cihKU0M6OkpTT2JqZWN0KiBvYmplY3QsIEpTQzo6RXhlY1N0YXRlKiBleGVjLCBKU0M6OlByb3Bl
cnR5TmFtZSBwcm9wZXJ0eU5hbWUsIEpTQzo6UHJvcGVydHlEZXNjcmlwdG9yJiBkZXNjcmlwdG9y
KVxuIik7CiAgICAgICAgIHB1c2goQGhlYWRlckNvbnRlbnQsICJ7XG4iKTsKICAgICAgICAgcHVz
aChAaGVhZGVyQ29udGVudCwgIiAgICAke2NsYXNzTmFtZX0qIHRoaXNPYmplY3QgPSBKU0M6Ompz
Q2FzdDwke2NsYXNzTmFtZX0qPihvYmplY3QpO1xuIik7CiAgICAgICAgIHB1c2goQGhlYWRlckNv
bnRlbnQsICIgICAgQVNTRVJUX0dDX09CSkVDVF9JTkhFUklUUyh0aGlzT2JqZWN0LCAmc19pbmZv
KTtcbiIpOwpAQCAtMTAyNiw4ICsxMDI0LDggQEAgc3ViIEdlbmVyYXRlSGVhZGVyCiAKICAgICBw
dXNoKEBoZWFkZXJDb250ZW50LCAiICAgIHN0YXRpYyBjb25zdCBKU0M6OkNsYXNzSW5mbyBzX2lu
Zm87XG4iKTsKICAgICBpZiAoJG51bUZ1bmN0aW9ucyA+IDAgfHwgJG51bUNvbnN0YW50cyA+IDAp
IHsKLSAgICAgICAgcHVzaChAaGVhZGVyQ29udGVudCwgIiAgICBzdGF0aWMgYm9vbCBnZXRPd25Q
cm9wZXJ0eVNsb3QoSlNDOjpKU0NlbGwqLCBKU0M6OkV4ZWNTdGF0ZSosIGNvbnN0IEpTQzo6SWRl
bnRpZmllciYsIEpTQzo6UHJvcGVydHlTbG90Jik7XG4iKTsKLSAgICAgICAgcHVzaChAaGVhZGVy
Q29udGVudCwgIiAgICBzdGF0aWMgYm9vbCBnZXRPd25Qcm9wZXJ0eURlc2NyaXB0b3IoSlNDOjpK
U09iamVjdCosIEpTQzo6RXhlY1N0YXRlKiwgY29uc3QgSlNDOjpJZGVudGlmaWVyJiwgSlNDOjpQ
cm9wZXJ0eURlc2NyaXB0b3ImKTtcbiIpOworICAgICAgICBwdXNoKEBoZWFkZXJDb250ZW50LCAi
ICAgIHN0YXRpYyBib29sIGdldE93blByb3BlcnR5U2xvdChKU0M6OkpTQ2VsbCosIEpTQzo6RXhl
Y1N0YXRlKiwgSlNDOjpQcm9wZXJ0eU5hbWUsIEpTQzo6UHJvcGVydHlTbG90Jik7XG4iKTsKKyAg
ICAgICAgcHVzaChAaGVhZGVyQ29udGVudCwgIiAgICBzdGF0aWMgYm9vbCBnZXRPd25Qcm9wZXJ0
eURlc2NyaXB0b3IoSlNDOjpKU09iamVjdCosIEpTQzo6RXhlY1N0YXRlKiwgSlNDOjpQcm9wZXJ0
eU5hbWUsIEpTQzo6UHJvcGVydHlEZXNjcmlwdG9yJik7XG4iKTsKICAgICAgICAgJHN0cnVjdHVy
ZUZsYWdzeyJKU0M6Ok92ZXJyaWRlc0dldE93blByb3BlcnR5U2xvdCJ9ID0gMTsKICAgICB9CiAg
ICAgaWYgKCRkYXRhTm9kZS0+ZXh0ZW5kZWRBdHRyaWJ1dGVzLT57IkpTQ3VzdG9tTWFya0Z1bmN0
aW9uIn0gb3IgJG5lZWRzTWFya0NoaWxkcmVuKSB7CkBAIC0xMDM5LDEyICsxMDM3LDEyIEBAIHN1
YiBHZW5lcmF0ZUhlYWRlcgogICAgICAgICAiICAgICAgICByZXR1cm4gSlNDOjpTdHJ1Y3R1cmU6
OmNyZWF0ZShnbG9iYWxEYXRhLCBnbG9iYWxPYmplY3QsIHByb3RvdHlwZSwgSlNDOjpUeXBlSW5m
byhKU0M6Ok9iamVjdFR5cGUsIFN0cnVjdHVyZUZsYWdzKSwgJnNfaW5mbyk7XG4iIC4KICAgICAg
ICAgIiAgICB9XG4iKTsKICAgICBpZiAoJGRhdGFOb2RlLT5leHRlbmRlZEF0dHJpYnV0ZXMtPnsi
SlNDdXN0b21OYW1lZEdldHRlck9uUHJvdG90eXBlIn0pIHsKLSAgICAgICAgcHVzaChAaGVhZGVy
Q29udGVudCwgIiAgICBzdGF0aWMgdm9pZCBwdXQoSlNDOjpKU0NlbGwqLCBKU0M6OkV4ZWNTdGF0
ZSosIGNvbnN0IEpTQzo6SWRlbnRpZmllciYgcHJvcGVydHlOYW1lLCBKU0M6OkpTVmFsdWUsIEpT
Qzo6UHV0UHJvcGVydHlTbG90Jik7XG4iKTsKLSAgICAgICAgcHVzaChAaGVhZGVyQ29udGVudCwg
IiAgICBib29sIHB1dERlbGVnYXRlKEpTQzo6RXhlY1N0YXRlKiwgY29uc3QgSlNDOjpJZGVudGlm
aWVyJiwgSlNDOjpKU1ZhbHVlLCBKU0M6OlB1dFByb3BlcnR5U2xvdCYpO1xuIik7CisgICAgICAg
IHB1c2goQGhlYWRlckNvbnRlbnQsICIgICAgc3RhdGljIHZvaWQgcHV0KEpTQzo6SlNDZWxsKiwg
SlNDOjpFeGVjU3RhdGUqLCBKU0M6OlByb3BlcnR5TmFtZSBwcm9wZXJ0eU5hbWUsIEpTQzo6SlNW
YWx1ZSwgSlNDOjpQdXRQcm9wZXJ0eVNsb3QmKTtcbiIpOworICAgICAgICBwdXNoKEBoZWFkZXJD
b250ZW50LCAiICAgIGJvb2wgcHV0RGVsZWdhdGUoSlNDOjpFeGVjU3RhdGUqLCBKU0M6OlByb3Bl
cnR5TmFtZSwgSlNDOjpKU1ZhbHVlLCBKU0M6OlB1dFByb3BlcnR5U2xvdCYpO1xuIik7CiAgICAg
fQogCiAgICAgIyBDdXN0b20gZGVmaW5lT3duUHJvcGVydHkgZnVuY3Rpb24KLSAgICBwdXNoKEBo
ZWFkZXJDb250ZW50LCAiICAgIHN0YXRpYyBib29sIGRlZmluZU93blByb3BlcnR5KEpTQzo6SlNP
YmplY3QqLCBKU0M6OkV4ZWNTdGF0ZSosIGNvbnN0IEpTQzo6SWRlbnRpZmllciYgcHJvcGVydHlO
YW1lLCBKU0M6OlByb3BlcnR5RGVzY3JpcHRvciYsIGJvb2wgc2hvdWxkVGhyb3cpO1xuIikgaWYg
JGRhdGFOb2RlLT5leHRlbmRlZEF0dHJpYnV0ZXMtPnsiSlNDdXN0b21EZWZpbmVPd25Qcm9wZXJ0
eU9uUHJvdG90eXBlIn07CisgICAgcHVzaChAaGVhZGVyQ29udGVudCwgIiAgICBzdGF0aWMgYm9v
bCBkZWZpbmVPd25Qcm9wZXJ0eShKU0M6OkpTT2JqZWN0KiwgSlNDOjpFeGVjU3RhdGUqLCBKU0M6
OlByb3BlcnR5TmFtZSBwcm9wZXJ0eU5hbWUsIEpTQzo6UHJvcGVydHlEZXNjcmlwdG9yJiwgYm9v
bCBzaG91bGRUaHJvdyk7XG4iKSBpZiAkZGF0YU5vZGUtPmV4dGVuZGVkQXR0cmlidXRlcy0+eyJK
U0N1c3RvbURlZmluZU93blByb3BlcnR5T25Qcm90b3R5cGUifTsKIAogICAgIHB1c2goQGhlYWRl
ckNvbnRlbnQsICJcbnByaXZhdGU6XG4iKTsKICAgICBwdXNoKEBoZWFkZXJDb250ZW50LCAiICAg
ICR7Y2xhc3NOYW1lfVByb3RvdHlwZShKU0M6OkpTR2xvYmFsRGF0YSYgZ2xvYmFsRGF0YSwgSlND
OjpKU0dsb2JhbE9iamVjdCosIEpTQzo6U3RydWN0dXJlKiBzdHJ1Y3R1cmUpIDogSlNDOjpKU05v
bkZpbmFsT2JqZWN0KGdsb2JhbERhdGEsIHN0cnVjdHVyZSkgeyB9XG4iKTsKQEAgLTEwODIsNyAr
MTA4MCw3IEBAIHN1YiBHZW5lcmF0ZUhlYWRlcgogICAgICAgICAgICAgbXkgJGNvbmRpdGlvbmFs
U3RyaW5nID0gJGNvZGVHZW5lcmF0b3ItPkdlbmVyYXRlQ29uZGl0aW9uYWxTdHJpbmcoJGF0dHJp
YnV0ZS0+c2lnbmF0dXJlKTsKICAgICAgICAgICAgIHB1c2goQGhlYWRlckNvbnRlbnQsICIjaWYg
JHtjb25kaXRpb25hbFN0cmluZ31cbiIpIGlmICRjb25kaXRpb25hbFN0cmluZzsKICAgICAgICAg
ICAgIG15ICRnZXR0ZXIgPSAianMiIC4gJGludGVyZmFjZU5hbWUgLiAkY29kZUdlbmVyYXRvci0+
V0tfdWNmaXJzdCgkYXR0cmlidXRlLT5zaWduYXR1cmUtPm5hbWUpIC4gKCRhdHRyaWJ1dGUtPnNp
Z25hdHVyZS0+dHlwZSA9fiAvQ29uc3RydWN0b3IkLyA/ICJDb25zdHJ1Y3RvciIgOiAiIik7Ci0g
ICAgICAgICAgICBwdXNoKEBoZWFkZXJDb250ZW50LCAiSlNDOjpKU1ZhbHVlICR7Z2V0dGVyfShK
U0M6OkV4ZWNTdGF0ZSosIEpTQzo6SlNWYWx1ZSwgY29uc3QgSlNDOjpJZGVudGlmaWVyJik7XG4i
KTsKKyAgICAgICAgICAgIHB1c2goQGhlYWRlckNvbnRlbnQsICJKU0M6OkpTVmFsdWUgJHtnZXR0
ZXJ9KEpTQzo6RXhlY1N0YXRlKiwgSlNDOjpKU1ZhbHVlLCBKU0M6OlByb3BlcnR5TmFtZSk7XG4i
KTsKICAgICAgICAgICAgIHVubGVzcyAoJGF0dHJpYnV0ZS0+dHlwZSA9fiAvcmVhZG9ubHkvKSB7
CiAgICAgICAgICAgICAgICAgbXkgJHNldHRlciA9ICJzZXRKUyIgLiAkaW50ZXJmYWNlTmFtZSAu
ICRjb2RlR2VuZXJhdG9yLT5XS191Y2ZpcnN0KCRhdHRyaWJ1dGUtPnNpZ25hdHVyZS0+bmFtZSkg
LiAoJGF0dHJpYnV0ZS0+c2lnbmF0dXJlLT50eXBlID1+IC9Db25zdHJ1Y3RvciQvID8gIkNvbnN0
cnVjdG9yIiA6ICIiKTsKICAgICAgICAgICAgICAgICBwdXNoKEBoZWFkZXJDb250ZW50LCAidm9p
ZCAke3NldHRlcn0oSlNDOjpFeGVjU3RhdGUqLCBKU0M6OkpTT2JqZWN0KiwgSlNDOjpKU1ZhbHVl
KTtcbiIpOwpAQCAtMTA5Miw3ICsxMDkwLDcgQEAgc3ViIEdlbmVyYXRlSGVhZGVyCiAgICAgICAg
IAogICAgICAgICBpZiAoISRkYXRhTm9kZS0+ZXh0ZW5kZWRBdHRyaWJ1dGVzLT57Ik9taXRDb25z
dHJ1Y3RvciJ9KSB7CiAgICAgICAgICAgICBteSAkZ2V0dGVyID0gImpzIiAuICRpbnRlcmZhY2VO
YW1lIC4gIkNvbnN0cnVjdG9yIjsKLSAgICAgICAgICAgIHB1c2goQGhlYWRlckNvbnRlbnQsICJK
U0M6OkpTVmFsdWUgJHtnZXR0ZXJ9KEpTQzo6RXhlY1N0YXRlKiwgSlNDOjpKU1ZhbHVlLCBjb25z
dCBKU0M6OklkZW50aWZpZXImKTtcbiIpOworICAgICAgICAgICAgcHVzaChAaGVhZGVyQ29udGVu
dCwgIkpTQzo6SlNWYWx1ZSAke2dldHRlcn0oSlNDOjpFeGVjU3RhdGUqLCBKU0M6OkpTVmFsdWUs
IEpTQzo6UHJvcGVydHlOYW1lKTtcbiIpOwogICAgICAgICB9CiAKICAgICAgICAgaWYgKCRkYXRh
Tm9kZS0+ZXh0ZW5kZWRBdHRyaWJ1dGVzLT57IlJlcGxhY2VhYmxlQ29uc3RydWN0b3IifSkgewpA
QCAtMTEwNyw3ICsxMTA1LDcgQEAgc3ViIEdlbmVyYXRlSGVhZGVyCiAgICAgICAgICAgICBteSAk
Y29uZGl0aW9uYWxTdHJpbmcgPSAkY29kZUdlbmVyYXRvci0+R2VuZXJhdGVDb25kaXRpb25hbFN0
cmluZygkY29uc3RhbnQpOwogICAgICAgICAgICAgcHVzaChAaGVhZGVyQ29udGVudCwgIiNpZiAk
e2NvbmRpdGlvbmFsU3RyaW5nfVxuIikgaWYgJGNvbmRpdGlvbmFsU3RyaW5nOwogICAgICAgICAg
ICAgbXkgJGdldHRlciA9ICJqcyIgLiAkaW50ZXJmYWNlTmFtZSAuICRjb2RlR2VuZXJhdG9yLT5X
S191Y2ZpcnN0KCRjb25zdGFudC0+bmFtZSk7Ci0gICAgICAgICAgICBwdXNoKEBoZWFkZXJDb250
ZW50LCAiSlNDOjpKU1ZhbHVlICR7Z2V0dGVyfShKU0M6OkV4ZWNTdGF0ZSosIEpTQzo6SlNWYWx1
ZSwgY29uc3QgSlNDOjpJZGVudGlmaWVyJik7XG4iKTsKKyAgICAgICAgICAgIHB1c2goQGhlYWRl
ckNvbnRlbnQsICJKU0M6OkpTVmFsdWUgJHtnZXR0ZXJ9KEpTQzo6RXhlY1N0YXRlKiwgSlNDOjpK
U1ZhbHVlLCBKU0M6OlByb3BlcnR5TmFtZSk7XG4iKTsKICAgICAgICAgICAgIHB1c2goQGhlYWRl
ckNvbnRlbnQsICIjZW5kaWZcbiIpIGlmICRjb25kaXRpb25hbFN0cmluZzsKICAgICAgICAgfQog
ICAgIH0KQEAgLTE0ODAsNyArMTQ3OCw3IEBAIHN1YiBHZW5lcmF0ZUltcGxlbWVudGF0aW9uCiAg
ICAgfQogCiAgICAgaWYgKCRudW1Db25zdGFudHMgPiAwIHx8ICRudW1GdW5jdGlvbnMgPiAwKSB7
Ci0gICAgICAgIHB1c2goQGltcGxDb250ZW50LCAiYm9vbCAke2NsYXNzTmFtZX1Qcm90b3R5cGU6
OmdldE93blByb3BlcnR5U2xvdChKU0NlbGwqIGNlbGwsIEV4ZWNTdGF0ZSogZXhlYywgY29uc3Qg
SWRlbnRpZmllciYgcHJvcGVydHlOYW1lLCBQcm9wZXJ0eVNsb3QmIHNsb3QpXG4iKTsKKyAgICAg
ICAgcHVzaChAaW1wbENvbnRlbnQsICJib29sICR7Y2xhc3NOYW1lfVByb3RvdHlwZTo6Z2V0T3du
UHJvcGVydHlTbG90KEpTQ2VsbCogY2VsbCwgRXhlY1N0YXRlKiBleGVjLCBQcm9wZXJ0eU5hbWUg
cHJvcGVydHlOYW1lLCBQcm9wZXJ0eVNsb3QmIHNsb3QpXG4iKTsKICAgICAgICAgcHVzaChAaW1w
bENvbnRlbnQsICJ7XG4iKTsKICAgICAgICAgcHVzaChAaW1wbENvbnRlbnQsICIgICAgJHtjbGFz
c05hbWV9UHJvdG90eXBlKiB0aGlzT2JqZWN0ID0ganNDYXN0PCR7Y2xhc3NOYW1lfVByb3RvdHlw
ZSo+KGNlbGwpO1xuIik7CiAKQEAgLTE0OTUsNyArMTQ5Myw3IEBAIHN1YiBHZW5lcmF0ZUltcGxl
bWVudGF0aW9uCiAgICAgICAgIH0KICAgICAgICAgcHVzaChAaW1wbENvbnRlbnQsICJ9XG5cbiIp
OwogCi0gICAgICAgIHB1c2goQGltcGxDb250ZW50LCAiYm9vbCAke2NsYXNzTmFtZX1Qcm90b3R5
cGU6OmdldE93blByb3BlcnR5RGVzY3JpcHRvcihKU09iamVjdCogb2JqZWN0LCBFeGVjU3RhdGUq
IGV4ZWMsIGNvbnN0IElkZW50aWZpZXImIHByb3BlcnR5TmFtZSwgUHJvcGVydHlEZXNjcmlwdG9y
JiBkZXNjcmlwdG9yKVxuIik7CisgICAgICAgIHB1c2goQGltcGxDb250ZW50LCAiYm9vbCAke2Ns
YXNzTmFtZX1Qcm90b3R5cGU6OmdldE93blByb3BlcnR5RGVzY3JpcHRvcihKU09iamVjdCogb2Jq
ZWN0LCBFeGVjU3RhdGUqIGV4ZWMsIFByb3BlcnR5TmFtZSBwcm9wZXJ0eU5hbWUsIFByb3BlcnR5
RGVzY3JpcHRvciYgZGVzY3JpcHRvcilcbiIpOwogICAgICAgICBwdXNoKEBpbXBsQ29udGVudCwg
IntcbiIpOwogICAgICAgICBwdXNoKEBpbXBsQ29udGVudCwgIiAgICAke2NsYXNzTmFtZX1Qcm90
b3R5cGUqIHRoaXNPYmplY3QgPSBqc0Nhc3Q8JHtjbGFzc05hbWV9UHJvdG90eXBlKj4ob2JqZWN0
KTtcbiIpOwogCkBAIC0xNTEyLDcgKzE1MTAsNyBAQCBzdWIgR2VuZXJhdGVJbXBsZW1lbnRhdGlv
bgogICAgIH0KIAogICAgIGlmICgkZGF0YU5vZGUtPmV4dGVuZGVkQXR0cmlidXRlcy0+eyJKU0N1
c3RvbU5hbWVkR2V0dGVyT25Qcm90b3R5cGUifSkgewotICAgICAgICBwdXNoKEBpbXBsQ29udGVu
dCwgInZvaWQgJHtjbGFzc05hbWV9UHJvdG90eXBlOjpwdXQoSlNDZWxsKiBjZWxsLCBFeGVjU3Rh
dGUqIGV4ZWMsIGNvbnN0IElkZW50aWZpZXImIHByb3BlcnR5TmFtZSwgSlNWYWx1ZSB2YWx1ZSwg
UHV0UHJvcGVydHlTbG90JiBzbG90KVxuIik7CisgICAgICAgIHB1c2goQGltcGxDb250ZW50LCAi
dm9pZCAke2NsYXNzTmFtZX1Qcm90b3R5cGU6OnB1dChKU0NlbGwqIGNlbGwsIEV4ZWNTdGF0ZSog
ZXhlYywgUHJvcGVydHlOYW1lIHByb3BlcnR5TmFtZSwgSlNWYWx1ZSB2YWx1ZSwgUHV0UHJvcGVy
dHlTbG90JiBzbG90KVxuIik7CiAgICAgICAgIHB1c2goQGltcGxDb250ZW50LCAie1xuIik7CiAg
ICAgICAgIHB1c2goQGltcGxDb250ZW50LCAiICAgICR7Y2xhc3NOYW1lfVByb3RvdHlwZSogdGhp
c09iamVjdCA9IGpzQ2FzdDwke2NsYXNzTmFtZX1Qcm90b3R5cGUqPihjZWxsKTtcbiIpOwogICAg
ICAgICBwdXNoKEBpbXBsQ29udGVudCwgIiAgICBpZiAodGhpc09iamVjdC0+cHV0RGVsZWdhdGUo
ZXhlYywgcHJvcGVydHlOYW1lLCB2YWx1ZSwgc2xvdCkpXG4iKTsKQEAgLTE2MzIsMTMgKzE2MzAs
MTMgQEAgc3ViIEdlbmVyYXRlSW1wbGVtZW50YXRpb24KICAgICAjIEF0dHJpYnV0ZXMKICAgICBp
ZiAoJGhhc0dldHRlcikgewogICAgICAgICBpZiAoISRkYXRhTm9kZS0+ZXh0ZW5kZWRBdHRyaWJ1
dGVzLT57IkpTSW5saW5lR2V0T3duUHJvcGVydHlTbG90In0gJiYgISRkYXRhTm9kZS0+ZXh0ZW5k
ZWRBdHRyaWJ1dGVzLT57IkN1c3RvbUdldE93blByb3BlcnR5U2xvdCJ9KSB7Ci0gICAgICAgICAg
ICBwdXNoKEBpbXBsQ29udGVudCwgImJvb2wgJHtjbGFzc05hbWV9OjpnZXRPd25Qcm9wZXJ0eVNs
b3QoSlNDZWxsKiBjZWxsLCBFeGVjU3RhdGUqIGV4ZWMsIGNvbnN0IElkZW50aWZpZXImIHByb3Bl
cnR5TmFtZSwgUHJvcGVydHlTbG90JiBzbG90KVxuIik7CisgICAgICAgICAgICBwdXNoKEBpbXBs
Q29udGVudCwgImJvb2wgJHtjbGFzc05hbWV9OjpnZXRPd25Qcm9wZXJ0eVNsb3QoSlNDZWxsKiBj
ZWxsLCBFeGVjU3RhdGUqIGV4ZWMsIFByb3BlcnR5TmFtZSBwcm9wZXJ0eU5hbWUsIFByb3BlcnR5
U2xvdCYgc2xvdClcbiIpOwogICAgICAgICAgICAgcHVzaChAaW1wbENvbnRlbnQsICJ7XG4iKTsK
ICAgICAgICAgICAgIHB1c2goQGltcGxDb250ZW50LCAiICAgICR7Y2xhc3NOYW1lfSogdGhpc09i
amVjdCA9IGpzQ2FzdDwke2NsYXNzTmFtZX0qPihjZWxsKTtcbiIpOwogICAgICAgICAgICAgcHVz
aChAaW1wbENvbnRlbnQsICIgICAgQVNTRVJUX0dDX09CSkVDVF9JTkhFUklUUyh0aGlzT2JqZWN0
LCAmc19pbmZvKTtcbiIpOwogICAgICAgICAgICAgcHVzaChAaW1wbENvbnRlbnQsIEdlbmVyYXRl
R2V0T3duUHJvcGVydHlTbG90Qm9keSgkZGF0YU5vZGUsICRpbnRlcmZhY2VOYW1lLCAkY2xhc3NO
YW1lLCAkaW1wbENsYXNzTmFtZSwgJG51bUF0dHJpYnV0ZXMgPiAwLCAwKSk7CiAgICAgICAgICAg
ICBwdXNoKEBpbXBsQ29udGVudCwgIn1cblxuIik7Ci0gICAgICAgICAgICBwdXNoKEBpbXBsQ29u
dGVudCwgImJvb2wgJHtjbGFzc05hbWV9OjpnZXRPd25Qcm9wZXJ0eURlc2NyaXB0b3IoSlNPYmpl
Y3QqIG9iamVjdCwgRXhlY1N0YXRlKiBleGVjLCBjb25zdCBJZGVudGlmaWVyJiBwcm9wZXJ0eU5h
bWUsIFByb3BlcnR5RGVzY3JpcHRvciYgZGVzY3JpcHRvcilcbiIpOworICAgICAgICAgICAgcHVz
aChAaW1wbENvbnRlbnQsICJib29sICR7Y2xhc3NOYW1lfTo6Z2V0T3duUHJvcGVydHlEZXNjcmlw
dG9yKEpTT2JqZWN0KiBvYmplY3QsIEV4ZWNTdGF0ZSogZXhlYywgUHJvcGVydHlOYW1lIHByb3Bl
cnR5TmFtZSwgUHJvcGVydHlEZXNjcmlwdG9yJiBkZXNjcmlwdG9yKVxuIik7CiAgICAgICAgICAg
ICBwdXNoKEBpbXBsQ29udGVudCwgIntcbiIpOwogICAgICAgICAgICAgcHVzaChAaW1wbENvbnRl
bnQsICIgICAgJHtjbGFzc05hbWV9KiB0aGlzT2JqZWN0ID0ganNDYXN0PCR7Y2xhc3NOYW1lfSo+
KG9iamVjdCk7XG4iKTsKICAgICAgICAgICAgIHB1c2goQGltcGxDb250ZW50LCAiICAgIEFTU0VS
VF9HQ19PQkpFQ1RfSU5IRVJJVFModGhpc09iamVjdCwgJnNfaW5mbyk7XG4iKTsKQEAgLTE2NzQs
NyArMTY3Miw3IEBAIHN1YiBHZW5lcmF0ZUltcGxlbWVudGF0aW9uCiAgICAgICAgICAgICAgICAg
bXkgJGF0dHJpYnV0ZUNvbmRpdGlvbmFsU3RyaW5nID0gJGNvZGVHZW5lcmF0b3ItPkdlbmVyYXRl
Q29uZGl0aW9uYWxTdHJpbmcoJGF0dHJpYnV0ZS0+c2lnbmF0dXJlKTsKICAgICAgICAgICAgICAg
ICBwdXNoKEBpbXBsQ29udGVudCwgIiNpZiAke2F0dHJpYnV0ZUNvbmRpdGlvbmFsU3RyaW5nfVxu
IikgaWYgJGF0dHJpYnV0ZUNvbmRpdGlvbmFsU3RyaW5nOwogCi0gICAgICAgICAgICAgICAgcHVz
aChAaW1wbENvbnRlbnQsICJKU1ZhbHVlICR7Z2V0RnVuY3Rpb25OYW1lfShFeGVjU3RhdGUqIGV4
ZWMsIEpTVmFsdWUgc2xvdEJhc2UsIGNvbnN0IElkZW50aWZpZXImKVxuIik7CisgICAgICAgICAg
ICAgICAgcHVzaChAaW1wbENvbnRlbnQsICJKU1ZhbHVlICR7Z2V0RnVuY3Rpb25OYW1lfShFeGVj
U3RhdGUqIGV4ZWMsIEpTVmFsdWUgc2xvdEJhc2UsIFByb3BlcnR5TmFtZSlcbiIpOwogICAgICAg
ICAgICAgICAgIHB1c2goQGltcGxDb250ZW50LCAie1xuIik7CiAgICAgICAgICAgICAgICAgcHVz
aChAaW1wbENvbnRlbnQsICIgICAgJHtjbGFzc05hbWV9KiBjYXN0ZWRUaGlzID0ganNDYXN0PCRj
bGFzc05hbWUqPihhc09iamVjdChzbG90QmFzZSkpO1xuIik7CiAKQEAgLTE3OTMsNyArMTc5MSw3
IEBAIHN1YiBHZW5lcmF0ZUltcGxlbWVudGF0aW9uCiAgICAgICAgICAgICBpZiAoISRkYXRhTm9k
ZS0+ZXh0ZW5kZWRBdHRyaWJ1dGVzLT57Ik9taXRDb25zdHJ1Y3RvciJ9KSB7CiAgICAgICAgICAg
ICAgICAgbXkgJGNvbnN0cnVjdG9yRnVuY3Rpb25OYW1lID0gImpzIiAuICRpbnRlcmZhY2VOYW1l
IC4gIkNvbnN0cnVjdG9yIjsKIAotICAgICAgICAgICAgICAgIHB1c2goQGltcGxDb250ZW50LCAi
SlNWYWx1ZSAke2NvbnN0cnVjdG9yRnVuY3Rpb25OYW1lfShFeGVjU3RhdGUqIGV4ZWMsIEpTVmFs
dWUgc2xvdEJhc2UsIGNvbnN0IElkZW50aWZpZXImKVxuIik7CisgICAgICAgICAgICAgICAgcHVz
aChAaW1wbENvbnRlbnQsICJKU1ZhbHVlICR7Y29uc3RydWN0b3JGdW5jdGlvbk5hbWV9KEV4ZWNT
dGF0ZSogZXhlYywgSlNWYWx1ZSBzbG90QmFzZSwgUHJvcGVydHlOYW1lKVxuIik7CiAgICAgICAg
ICAgICAgICAgcHVzaChAaW1wbENvbnRlbnQsICJ7XG4iKTsKICAgICAgICAgICAgICAgICBwdXNo
KEBpbXBsQ29udGVudCwgIiAgICAke2NsYXNzTmFtZX0qIGRvbU9iamVjdCA9IGpzQ2FzdDwkY2xh
c3NOYW1lKj4oYXNPYmplY3Qoc2xvdEJhc2UpKTtcbiIpOwogCkBAIC0xODE5LDE0ICsxODE3LDEz
IEBAIHN1YiBHZW5lcmF0ZUltcGxlbWVudGF0aW9uCiAKICAgICAgICAgaWYgKCRoYXNTZXR0ZXIp
IHsKICAgICAgICAgICAgIGlmICghJGRhdGFOb2RlLT5leHRlbmRlZEF0dHJpYnV0ZXMtPnsiQ3Vz
dG9tUHV0RnVuY3Rpb24ifSkgewotICAgICAgICAgICAgICAgIHB1c2goQGltcGxDb250ZW50LCAi
dm9pZCAke2NsYXNzTmFtZX06OnB1dChKU0NlbGwqIGNlbGwsIEV4ZWNTdGF0ZSogZXhlYywgY29u
c3QgSWRlbnRpZmllciYgcHJvcGVydHlOYW1lLCBKU1ZhbHVlIHZhbHVlLCBQdXRQcm9wZXJ0eVNs
b3QmIHNsb3QpXG4iKTsKKyAgICAgICAgICAgICAgICBwdXNoKEBpbXBsQ29udGVudCwgInZvaWQg
JHtjbGFzc05hbWV9OjpwdXQoSlNDZWxsKiBjZWxsLCBFeGVjU3RhdGUqIGV4ZWMsIFByb3BlcnR5
TmFtZSBwcm9wZXJ0eU5hbWUsIEpTVmFsdWUgdmFsdWUsIFB1dFByb3BlcnR5U2xvdCYgc2xvdClc
biIpOwogICAgICAgICAgICAgICAgIHB1c2goQGltcGxDb250ZW50LCAie1xuIik7CiAgICAgICAg
ICAgICAgICAgcHVzaChAaW1wbENvbnRlbnQsICIgICAgJHtjbGFzc05hbWV9KiB0aGlzT2JqZWN0
ID0ganNDYXN0PCR7Y2xhc3NOYW1lfSo+KGNlbGwpO1xuIik7CiAgICAgICAgICAgICAgICAgcHVz
aChAaW1wbENvbnRlbnQsICIgICAgQVNTRVJUX0dDX09CSkVDVF9JTkhFUklUUyh0aGlzT2JqZWN0
LCAmc19pbmZvKTtcbiIpOwogICAgICAgICAgICAgICAgIGlmICgkZGF0YU5vZGUtPmV4dGVuZGVk
QXR0cmlidXRlcy0+eyJDdXN0b21JbmRleGVkU2V0dGVyIn0pIHsKLSAgICAgICAgICAgICAgICAg
ICAgcHVzaChAaW1wbENvbnRlbnQsICIgICAgYm9vbCBvaztcbiIpOwotICAgICAgICAgICAgICAg
ICAgICBwdXNoKEBpbXBsQ29udGVudCwgIiAgICB1bnNpZ25lZCBpbmRleCA9IHByb3BlcnR5TmFt
ZS50b1VJbnQzMihvayk7XG4iKTsKLSAgICAgICAgICAgICAgICAgICAgcHVzaChAaW1wbENvbnRl
bnQsICIgICAgaWYgKG9rKSB7XG4iKTsKKyAgICAgICAgICAgICAgICAgICAgcHVzaChAaW1wbENv
bnRlbnQsICIgICAgdW5zaWduZWQgaW5kZXggPSBwcm9wZXJ0eU5hbWUuYXNJbmRleCgpO1xuIik7
CisgICAgICAgICAgICAgICAgICAgIHB1c2goQGltcGxDb250ZW50LCAiICAgIGlmIChpbmRleCAh
PSBQcm9wZXJ0eU5hbWU6Ok5vdEFuSW5kZXgpIHtcbiIpOwogICAgICAgICAgICAgICAgICAgICBw
dXNoKEBpbXBsQ29udGVudCwgIiAgICAgICAgdGhpc09iamVjdC0+aW5kZXhTZXR0ZXIoZXhlYywg
aW5kZXgsIHZhbHVlKTtcbiIpOwogICAgICAgICAgICAgICAgICAgICBwdXNoKEBpbXBsQ29udGVu
dCwgIiAgICAgICAgcmV0dXJuO1xuIik7CiAgICAgICAgICAgICAgICAgICAgIHB1c2goQGltcGxD
b250ZW50LCAiICAgIH1cbiIpOwpAQCAtMjE5OCw3ICsyMTk1LDcgQEAgc3ViIEdlbmVyYXRlSW1w
bGVtZW50YXRpb24KICAgICAgICAgICAgIH0KIAogICAgICAgICAgICAgIyBGSVhNRTogdGhpcyBj
YXN0cyBpbnRvIGludCB0byBtYXRjaCBvdXIgcHJldmlvdXMgYmVoYXZpb3Igd2hpY2ggdHVybmVk
IDB4RkZGRkZGRkYgaW4gLTEgZm9yIE5vZGVGaWx0ZXIuU0hPV19BTEwKLSAgICAgICAgICAgIHB1
c2goQGltcGxDb250ZW50LCAiSlNWYWx1ZSAke2dldHRlcn0oRXhlY1N0YXRlKiBleGVjLCBKU1Zh
bHVlLCBjb25zdCBJZGVudGlmaWVyJilcbiIpOworICAgICAgICAgICAgcHVzaChAaW1wbENvbnRl
bnQsICJKU1ZhbHVlICR7Z2V0dGVyfShFeGVjU3RhdGUqIGV4ZWMsIEpTVmFsdWUsIFByb3BlcnR5
TmFtZSlcbiIpOwogICAgICAgICAgICAgcHVzaChAaW1wbENvbnRlbnQsICJ7XG4iKTsKICAgICAg
ICAgICAgIGlmICgkY29uc3RhbnQtPnR5cGUgZXEgIkRPTVN0cmluZyIpIHsKICAgICAgICAgICAg
ICAgICBwdXNoKEBpbXBsQ29udGVudCwgIiAgICByZXR1cm4ganNTdHJpbmdPck51bGwoZXhlYywg
U3RyaW5nKCIgLiAkY29uc3RhbnQtPnZhbHVlIC4gIikpO1xuIik7CkBAIC0yMjQ3LDE0ICsyMjQ0
LDE0IEBAIHN1YiBHZW5lcmF0ZUltcGxlbWVudGF0aW9uCiAKICAgICBpZiAoJGludGVyZmFjZU5h
bWUgZXEgIkhUTUxQcm9wZXJ0aWVzQ29sbGVjdGlvbiIpIHsKICAgICAgICAgaWYgKCRkYXRhTm9k
ZS0+ZXh0ZW5kZWRBdHRyaWJ1dGVzLT57Ik5hbWVkR2V0dGVyIn0pIHsKLSAgICAgICAgICAgIHB1
c2goQGltcGxDb250ZW50LCAiYm9vbCAke2NsYXNzTmFtZX06OmNhbkdldEl0ZW1zRm9yTmFtZShF
eGVjU3RhdGUqLCAkaW1wbENsYXNzTmFtZSogY29sbGVjdGlvbiwgY29uc3QgSWRlbnRpZmllciYg
cHJvcGVydHlOYW1lKVxuIik7CisgICAgICAgICAgICBwdXNoKEBpbXBsQ29udGVudCwgImJvb2wg
JHtjbGFzc05hbWV9OjpjYW5HZXRJdGVtc0Zvck5hbWUoRXhlY1N0YXRlKiwgJGltcGxDbGFzc05h
bWUqIGNvbGxlY3Rpb24sIFByb3BlcnR5TmFtZSBwcm9wZXJ0eU5hbWUpXG4iKTsKICAgICAgICAg
ICAgIHB1c2goQGltcGxDb250ZW50LCAie1xuIik7Ci0gICAgICAgICAgICBwdXNoKEBpbXBsQ29u
dGVudCwgIiAgICByZXR1cm4gY29sbGVjdGlvbi0+aGFzTmFtZWRJdGVtKGlkZW50aWZpZXJUb0F0
b21pY1N0cmluZyhwcm9wZXJ0eU5hbWUpKTtcbiIpOworICAgICAgICAgICAgcHVzaChAaW1wbENv
bnRlbnQsICIgICAgcmV0dXJuIGNvbGxlY3Rpb24tPmhhc05hbWVkSXRlbShwcm9wZXJ0eU5hbWVU
b0F0b21pY1N0cmluZyhwcm9wZXJ0eU5hbWUpKTtcbiIpOwogICAgICAgICAgICAgcHVzaChAaW1w
bENvbnRlbnQsICJ9XG5cbiIpOwotICAgICAgICAgICAgcHVzaChAaW1wbENvbnRlbnQsICJKU1Zh
bHVlICR7Y2xhc3NOYW1lfTo6bmFtZUdldHRlcihFeGVjU3RhdGUqIGV4ZWMsIEpTVmFsdWUgc2xv
dEJhc2UsIGNvbnN0IElkZW50aWZpZXImIHByb3BlcnR5TmFtZSlcbiIpOworICAgICAgICAgICAg
cHVzaChAaW1wbENvbnRlbnQsICJKU1ZhbHVlICR7Y2xhc3NOYW1lfTo6bmFtZUdldHRlcihFeGVj
U3RhdGUqIGV4ZWMsIEpTVmFsdWUgc2xvdEJhc2UsIFByb3BlcnR5TmFtZSBwcm9wZXJ0eU5hbWUp
XG4iKTsKICAgICAgICAgICAgIHB1c2goQGltcGxDb250ZW50LCAie1xuIik7CiAgICAgICAgICAg
ICBwdXNoKEBpbXBsQ29udGVudCwgIiAgICAke2NsYXNzTmFtZX0qIHRoaXNPYmogPSBqc0Nhc3Q8
JGNsYXNzTmFtZSo+KGFzT2JqZWN0KHNsb3RCYXNlKSk7XG4iKTsKLSAgICAgICAgICAgIHB1c2go
QGltcGxDb250ZW50LCAiICAgIHJldHVybiB0b0pTKGV4ZWMsIHRoaXNPYmotPmdsb2JhbE9iamVj
dCgpLCBzdGF0aWNfY2FzdDwkaW1wbENsYXNzTmFtZSo+KHRoaXNPYmotPmltcGwoKSktPm5hbWVk
SXRlbShpZGVudGlmaWVyVG9BdG9taWNTdHJpbmcocHJvcGVydHlOYW1lKSkpO1xuIik7CisgICAg
ICAgICAgICBwdXNoKEBpbXBsQ29udGVudCwgIiAgICByZXR1cm4gdG9KUyhleGVjLCB0aGlzT2Jq
LT5nbG9iYWxPYmplY3QoKSwgc3RhdGljX2Nhc3Q8JGltcGxDbGFzc05hbWUqPih0aGlzT2JqLT5p
bXBsKCkpLT5uYW1lZEl0ZW0ocHJvcGVydHlOYW1lVG9BdG9taWNTdHJpbmcocHJvcGVydHlOYW1l
KSkpO1xuIik7CiAgICAgICAgICAgICBwdXNoKEBpbXBsQ29udGVudCwgIn1cblxuIik7CiAgICAg
ICAgIH0KICAgICB9CkBAIC0zMzg3LDggKzMzODQsOCBAQCBzdWIgR2VuZXJhdGVDb25zdHJ1Y3Rv
ckRlY2xhcmF0aW9uCiAgICAgcHVzaChAJG91dHB1dEFycmF5LCAiICAgICAgICByZXR1cm4gcHRy
O1xuIik7CiAgICAgcHVzaChAJG91dHB1dEFycmF5LCAiICAgIH1cblxuIik7CiAKLSAgICBwdXNo
KEAkb3V0cHV0QXJyYXksICIgICAgc3RhdGljIGJvb2wgZ2V0T3duUHJvcGVydHlTbG90KEpTQzo6
SlNDZWxsKiwgSlNDOjpFeGVjU3RhdGUqLCBjb25zdCBKU0M6OklkZW50aWZpZXImLCBKU0M6OlBy
b3BlcnR5U2xvdCYpO1xuIik7Ci0gICAgcHVzaChAJG91dHB1dEFycmF5LCAiICAgIHN0YXRpYyBi
b29sIGdldE93blByb3BlcnR5RGVzY3JpcHRvcihKU0M6OkpTT2JqZWN0KiwgSlNDOjpFeGVjU3Rh
dGUqLCBjb25zdCBKU0M6OklkZW50aWZpZXImLCBKU0M6OlByb3BlcnR5RGVzY3JpcHRvciYpO1xu
Iik7CisgICAgcHVzaChAJG91dHB1dEFycmF5LCAiICAgIHN0YXRpYyBib29sIGdldE93blByb3Bl
cnR5U2xvdChKU0M6OkpTQ2VsbCosIEpTQzo6RXhlY1N0YXRlKiwgSlNDOjpQcm9wZXJ0eU5hbWUs
IEpTQzo6UHJvcGVydHlTbG90Jik7XG4iKTsKKyAgICBwdXNoKEAkb3V0cHV0QXJyYXksICIgICAg
c3RhdGljIGJvb2wgZ2V0T3duUHJvcGVydHlEZXNjcmlwdG9yKEpTQzo6SlNPYmplY3QqLCBKU0M6
OkV4ZWNTdGF0ZSosIEpTQzo6UHJvcGVydHlOYW1lLCBKU0M6OlByb3BlcnR5RGVzY3JpcHRvciYp
O1xuIik7CiAgICAgcHVzaChAJG91dHB1dEFycmF5LCAiICAgIHN0YXRpYyBjb25zdCBKU0M6OkNs
YXNzSW5mbyBzX2luZm87XG4iKTsKIAogICAgIHB1c2goQCRvdXRwdXRBcnJheSwgIiAgICBzdGF0
aWMgSlNDOjpTdHJ1Y3R1cmUqIGNyZWF0ZVN0cnVjdHVyZShKU0M6OkpTR2xvYmFsRGF0YSYgZ2xv
YmFsRGF0YSwgSlNDOjpKU0dsb2JhbE9iamVjdCogZ2xvYmFsT2JqZWN0LCBKU0M6OkpTVmFsdWUg
cHJvdG90eXBlKVxuIik7CkBAIC0zNTA0LDEyICszNTAxLDEyIEBAIHN1YiBHZW5lcmF0ZUNvbnN0
cnVjdG9yRGVmaW5pdGlvbgogCiAgICAgICAgIG15ICRraW5kID0gJGhhc1N0YXRpY0Z1bmN0aW9u
cyA/ICJQcm9wZXJ0eSIgOiAiVmFsdWUiOwogCi0gICAgICAgIHB1c2goQCRvdXRwdXRBcnJheSwg
ImJvb2wgJHtjb25zdHJ1Y3RvckNsYXNzTmFtZX06OmdldE93blByb3BlcnR5U2xvdChKU0NlbGwq
IGNlbGwsIEV4ZWNTdGF0ZSogZXhlYywgY29uc3QgSWRlbnRpZmllciYgcHJvcGVydHlOYW1lLCBQ
cm9wZXJ0eVNsb3QmIHNsb3QpXG4iKTsKKyAgICAgICAgcHVzaChAJG91dHB1dEFycmF5LCAiYm9v
bCAke2NvbnN0cnVjdG9yQ2xhc3NOYW1lfTo6Z2V0T3duUHJvcGVydHlTbG90KEpTQ2VsbCogY2Vs
bCwgRXhlY1N0YXRlKiBleGVjLCBQcm9wZXJ0eU5hbWUgcHJvcGVydHlOYW1lLCBQcm9wZXJ0eVNs
b3QmIHNsb3QpXG4iKTsKICAgICAgICAgcHVzaChAJG91dHB1dEFycmF5LCAie1xuIik7CiAgICAg
ICAgIHB1c2goQCRvdXRwdXRBcnJheSwgIiAgICByZXR1cm4gZ2V0U3RhdGljJHtraW5kfVNsb3Q8
JHtjb25zdHJ1Y3RvckNsYXNzTmFtZX0sIEpTRE9NV3JhcHBlcj4oZXhlYywgJiR7Y29uc3RydWN0
b3JDbGFzc05hbWV9VGFibGUsIGpzQ2FzdDwke2NvbnN0cnVjdG9yQ2xhc3NOYW1lfSo+KGNlbGwp
LCBwcm9wZXJ0eU5hbWUsIHNsb3QpO1xuIik7CiAgICAgICAgIHB1c2goQCRvdXRwdXRBcnJheSwg
In1cblxuIik7CiAKLSAgICAgICAgcHVzaChAJG91dHB1dEFycmF5LCAiYm9vbCAke2NvbnN0cnVj
dG9yQ2xhc3NOYW1lfTo6Z2V0T3duUHJvcGVydHlEZXNjcmlwdG9yKEpTT2JqZWN0KiBvYmplY3Qs
IEV4ZWNTdGF0ZSogZXhlYywgY29uc3QgSWRlbnRpZmllciYgcHJvcGVydHlOYW1lLCBQcm9wZXJ0
eURlc2NyaXB0b3ImIGRlc2NyaXB0b3IpXG4iKTsKKyAgICAgICAgcHVzaChAJG91dHB1dEFycmF5
LCAiYm9vbCAke2NvbnN0cnVjdG9yQ2xhc3NOYW1lfTo6Z2V0T3duUHJvcGVydHlEZXNjcmlwdG9y
KEpTT2JqZWN0KiBvYmplY3QsIEV4ZWNTdGF0ZSogZXhlYywgUHJvcGVydHlOYW1lIHByb3BlcnR5
TmFtZSwgUHJvcGVydHlEZXNjcmlwdG9yJiBkZXNjcmlwdG9yKVxuIik7CiAgICAgICAgIHB1c2go
QCRvdXRwdXRBcnJheSwgIntcbiIpOwogICAgICAgICBwdXNoKEAkb3V0cHV0QXJyYXksICIgICAg
cmV0dXJuIGdldFN0YXRpYyR7a2luZH1EZXNjcmlwdG9yPCR7Y29uc3RydWN0b3JDbGFzc05hbWV9
LCBKU0RPTVdyYXBwZXI+KGV4ZWMsICYke2NvbnN0cnVjdG9yQ2xhc3NOYW1lfVRhYmxlLCBqc0Nh
c3Q8JHtjb25zdHJ1Y3RvckNsYXNzTmFtZX0qPihvYmplY3QpLCBwcm9wZXJ0eU5hbWUsIGRlc2Ny
aXB0b3IpO1xuIik7CiAgICAgICAgIHB1c2goQCRvdXRwdXRBcnJheSwgIn1cblxuIik7CkluZGV4
OiBTb3VyY2UvV2ViQ29yZS9icmlkZ2UvcnVudGltZV9hcnJheS5jcHAKPT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0g
U291cmNlL1dlYkNvcmUvYnJpZGdlL3J1bnRpbWVfYXJyYXkuY3BwCShyZXZpc2lvbiAxMTY2Njcp
CisrKyBTb3VyY2UvV2ViQ29yZS9icmlkZ2UvcnVudGltZV9hcnJheS5jcHAJKHdvcmtpbmcgY29w
eSkKQEAgLTYwLDcgKzYwLDcgQEAgdm9pZCBSdW50aW1lQXJyYXk6OmRlc3Ryb3koSlNDZWxsKiBj
ZWxsKQogICAgIGpzQ2FzdDxSdW50aW1lQXJyYXkqPihjZWxsKS0+UnVudGltZUFycmF5Ojp+UnVu
dGltZUFycmF5KCk7CiB9CiAKLUpTVmFsdWUgUnVudGltZUFycmF5OjpsZW5ndGhHZXR0ZXIoRXhl
Y1N0YXRlKiwgSlNWYWx1ZSBzbG90QmFzZSwgY29uc3QgSWRlbnRpZmllciYpCitKU1ZhbHVlIFJ1
bnRpbWVBcnJheTo6bGVuZ3RoR2V0dGVyKEV4ZWNTdGF0ZSosIEpTVmFsdWUgc2xvdEJhc2UsIFBy
b3BlcnR5TmFtZSkKIHsKICAgICBSdW50aW1lQXJyYXkqIHRoaXNPYmogPSBzdGF0aWNfY2FzdDxS
dW50aW1lQXJyYXkqPihhc09iamVjdChzbG90QmFzZSkpOwogICAgIHJldHVybiBqc051bWJlcih0
aGlzT2JqLT5nZXRMZW5ndGgoKSk7CkBAIC04NSw3ICs4NSw3IEBAIHZvaWQgUnVudGltZUFycmF5
OjpnZXRPd25Qcm9wZXJ0eU5hbWVzKEoKICAgICBKU09iamVjdDo6Z2V0T3duUHJvcGVydHlOYW1l
cyh0aGlzT2JqZWN0LCBleGVjLCBwcm9wZXJ0eU5hbWVzLCBtb2RlKTsKIH0KIAotYm9vbCBSdW50
aW1lQXJyYXk6OmdldE93blByb3BlcnR5U2xvdChKU0NlbGwqIGNlbGwsIEV4ZWNTdGF0ZSogZXhl
YywgY29uc3QgSWRlbnRpZmllciYgcHJvcGVydHlOYW1lLCBQcm9wZXJ0eVNsb3QmIHNsb3QpCiti
b29sIFJ1bnRpbWVBcnJheTo6Z2V0T3duUHJvcGVydHlTbG90KEpTQ2VsbCogY2VsbCwgRXhlY1N0
YXRlKiBleGVjLCBQcm9wZXJ0eU5hbWUgcHJvcGVydHlOYW1lLCBQcm9wZXJ0eVNsb3QmIHNsb3Qp
CiB7CiAgICAgUnVudGltZUFycmF5KiB0aGlzT2JqZWN0ID0ganNDYXN0PFJ1bnRpbWVBcnJheSo+
KGNlbGwpOwogICAgIGlmIChwcm9wZXJ0eU5hbWUgPT0gZXhlYy0+cHJvcGVydHlOYW1lcygpLmxl
bmd0aCkgewpAQCAtOTMsMTkgKzkzLDE3IEBAIGJvb2wgUnVudGltZUFycmF5OjpnZXRPd25Qcm9w
ZXJ0eVNsb3QoSlMKICAgICAgICAgcmV0dXJuIHRydWU7CiAgICAgfQogICAgIAotICAgIGJvb2wg
b2s7Ci0gICAgdW5zaWduZWQgaW5kZXggPSBwcm9wZXJ0eU5hbWUudG9BcnJheUluZGV4KG9rKTsK
LSAgICBpZiAob2spIHsKLSAgICAgICAgaWYgKGluZGV4IDwgdGhpc09iamVjdC0+Z2V0TGVuZ3Ro
KCkpIHsKLSAgICAgICAgICAgIHNsb3Quc2V0Q3VzdG9tSW5kZXgodGhpc09iamVjdCwgaW5kZXgs
IHRoaXNPYmplY3QtPmluZGV4R2V0dGVyKTsKLSAgICAgICAgICAgIHJldHVybiB0cnVlOwotICAg
ICAgICB9CisgICAgdW5zaWduZWQgaW5kZXggPSBwcm9wZXJ0eU5hbWUuYXNJbmRleCgpOworICAg
IGlmIChpbmRleCA8IHRoaXNPYmplY3QtPmdldExlbmd0aCgpKSB7CisgICAgICAgIEFTU0VSVChp
bmRleCAhPSBQcm9wZXJ0eU5hbWU6Ok5vdEFuSW5kZXgpOworICAgICAgICBzbG90LnNldEN1c3Rv
bUluZGV4KHRoaXNPYmplY3QsIGluZGV4LCB0aGlzT2JqZWN0LT5pbmRleEdldHRlcik7CisgICAg
ICAgIHJldHVybiB0cnVlOwogICAgIH0KICAgICAKICAgICByZXR1cm4gSlNPYmplY3Q6OmdldE93
blByb3BlcnR5U2xvdCh0aGlzT2JqZWN0LCBleGVjLCBwcm9wZXJ0eU5hbWUsIHNsb3QpOwogfQog
Ci1ib29sIFJ1bnRpbWVBcnJheTo6Z2V0T3duUHJvcGVydHlEZXNjcmlwdG9yKEpTT2JqZWN0KiBv
YmplY3QsIEV4ZWNTdGF0ZSogZXhlYywgY29uc3QgSWRlbnRpZmllciYgcHJvcGVydHlOYW1lLCBQ
cm9wZXJ0eURlc2NyaXB0b3ImIGRlc2NyaXB0b3IpCitib29sIFJ1bnRpbWVBcnJheTo6Z2V0T3du
UHJvcGVydHlEZXNjcmlwdG9yKEpTT2JqZWN0KiBvYmplY3QsIEV4ZWNTdGF0ZSogZXhlYywgUHJv
cGVydHlOYW1lIHByb3BlcnR5TmFtZSwgUHJvcGVydHlEZXNjcmlwdG9yJiBkZXNjcmlwdG9yKQog
ewogICAgIFJ1bnRpbWVBcnJheSogdGhpc09iamVjdCA9IGpzQ2FzdDxSdW50aW1lQXJyYXkqPihv
YmplY3QpOwogICAgIGlmIChwcm9wZXJ0eU5hbWUgPT0gZXhlYy0+cHJvcGVydHlOYW1lcygpLmxl
bmd0aCkgewpAQCAtMTE1LDE1ICsxMTMsMTMgQEAgYm9vbCBSdW50aW1lQXJyYXk6OmdldE93blBy
b3BlcnR5RGVzY3JpcAogICAgICAgICByZXR1cm4gdHJ1ZTsKICAgICB9CiAgICAgCi0gICAgYm9v
bCBvazsKLSAgICB1bnNpZ25lZCBpbmRleCA9IHByb3BlcnR5TmFtZS50b0FycmF5SW5kZXgob2sp
OwotICAgIGlmIChvaykgewotICAgICAgICBpZiAoaW5kZXggPCB0aGlzT2JqZWN0LT5nZXRMZW5n
dGgoKSkgewotICAgICAgICAgICAgUHJvcGVydHlTbG90IHNsb3Q7Ci0gICAgICAgICAgICBzbG90
LnNldEN1c3RvbUluZGV4KHRoaXNPYmplY3QsIGluZGV4LCBpbmRleEdldHRlcik7Ci0gICAgICAg
ICAgICBkZXNjcmlwdG9yLnNldERlc2NyaXB0b3Ioc2xvdC5nZXRWYWx1ZShleGVjLCBwcm9wZXJ0
eU5hbWUpLCBEb250RGVsZXRlIHwgRG9udEVudW0pOwotICAgICAgICAgICAgcmV0dXJuIHRydWU7
Ci0gICAgICAgIH0KKyAgICB1bnNpZ25lZCBpbmRleCA9IHByb3BlcnR5TmFtZS5hc0luZGV4KCk7
CisgICAgaWYgKGluZGV4IDwgdGhpc09iamVjdC0+Z2V0TGVuZ3RoKCkpIHsKKyAgICAgICAgQVNT
RVJUKGluZGV4ICE9IFByb3BlcnR5TmFtZTo6Tm90QW5JbmRleCk7CisgICAgICAgIFByb3BlcnR5
U2xvdCBzbG90OworICAgICAgICBzbG90LnNldEN1c3RvbUluZGV4KHRoaXNPYmplY3QsIGluZGV4
LCBpbmRleEdldHRlcik7CisgICAgICAgIGRlc2NyaXB0b3Iuc2V0RGVzY3JpcHRvcihzbG90Lmdl
dFZhbHVlKGV4ZWMsIHByb3BlcnR5TmFtZSksIERvbnREZWxldGUgfCBEb250RW51bSk7CisgICAg
ICAgIHJldHVybiB0cnVlOwogICAgIH0KICAgICAKICAgICByZXR1cm4gSlNPYmplY3Q6OmdldE93
blByb3BlcnR5RGVzY3JpcHRvcih0aGlzT2JqZWN0LCBleGVjLCBwcm9wZXJ0eU5hbWUsIGRlc2Ny
aXB0b3IpOwpAQCAtMTQwLDcgKzEzNiw3IEBAIGJvb2wgUnVudGltZUFycmF5OjpnZXRPd25Qcm9w
ZXJ0eVNsb3RCeUkKICAgICByZXR1cm4gSlNPYmplY3Q6OmdldE93blByb3BlcnR5U2xvdEJ5SW5k
ZXgodGhpc09iamVjdCwgZXhlYywgaW5kZXgsIHNsb3QpOwogfQogCi12b2lkIFJ1bnRpbWVBcnJh
eTo6cHV0KEpTQ2VsbCogY2VsbCwgRXhlY1N0YXRlKiBleGVjLCBjb25zdCBJZGVudGlmaWVyJiBw
cm9wZXJ0eU5hbWUsIEpTVmFsdWUgdmFsdWUsIFB1dFByb3BlcnR5U2xvdCYgc2xvdCkKK3ZvaWQg
UnVudGltZUFycmF5OjpwdXQoSlNDZWxsKiBjZWxsLCBFeGVjU3RhdGUqIGV4ZWMsIFByb3BlcnR5
TmFtZSBwcm9wZXJ0eU5hbWUsIEpTVmFsdWUgdmFsdWUsIFB1dFByb3BlcnR5U2xvdCYgc2xvdCkK
IHsKICAgICBSdW50aW1lQXJyYXkqIHRoaXNPYmplY3QgPSBqc0Nhc3Q8UnVudGltZUFycmF5Kj4o
Y2VsbCk7CiAgICAgaWYgKHByb3BlcnR5TmFtZSA9PSBleGVjLT5wcm9wZXJ0eU5hbWVzKCkubGVu
Z3RoKSB7CkBAIC0xNDgsOSArMTQ0LDggQEAgdm9pZCBSdW50aW1lQXJyYXk6OnB1dChKU0NlbGwq
IGNlbGwsIEV4ZQogICAgICAgICByZXR1cm47CiAgICAgfQogICAgIAotICAgIGJvb2wgb2s7Ci0g
ICAgdW5zaWduZWQgaW5kZXggPSBwcm9wZXJ0eU5hbWUudG9BcnJheUluZGV4KG9rKTsKLSAgICBp
ZiAob2spIHsKKyAgICB1bnNpZ25lZCBpbmRleCA9IHByb3BlcnR5TmFtZS5hc0luZGV4KCk7Cisg
ICAgaWYgKGluZGV4ICE9IFByb3BlcnR5TmFtZTo6Tm90QW5JbmRleCkgewogICAgICAgICB0aGlz
T2JqZWN0LT5nZXRDb25jcmV0ZUFycmF5KCktPnNldFZhbHVlQXQoZXhlYywgaW5kZXgsIHZhbHVl
KTsKICAgICAgICAgcmV0dXJuOwogICAgIH0KQEAgLTE2OSw3ICsxNjQsNyBAQCB2b2lkIFJ1bnRp
bWVBcnJheTo6cHV0QnlJbmRleChKU0NlbGwqIGNlCiAgICAgdGhpc09iamVjdC0+Z2V0Q29uY3Jl
dGVBcnJheSgpLT5zZXRWYWx1ZUF0KGV4ZWMsIGluZGV4LCB2YWx1ZSk7CiB9CiAKLWJvb2wgUnVu
dGltZUFycmF5OjpkZWxldGVQcm9wZXJ0eShKU0NlbGwqLCBFeGVjU3RhdGUqLCBjb25zdCBJZGVu
dGlmaWVyJikKK2Jvb2wgUnVudGltZUFycmF5OjpkZWxldGVQcm9wZXJ0eShKU0NlbGwqLCBFeGVj
U3RhdGUqLCBQcm9wZXJ0eU5hbWUpCiB7CiAgICAgcmV0dXJuIGZhbHNlOwogfQpJbmRleDogU291
cmNlL1dlYkNvcmUvYnJpZGdlL3J1bnRpbWVfYXJyYXkuaAo9PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2Uv
V2ViQ29yZS9icmlkZ2UvcnVudGltZV9hcnJheS5oCShyZXZpc2lvbiAxMTY2NjcpCisrKyBTb3Vy
Y2UvV2ViQ29yZS9icmlkZ2UvcnVudGltZV9hcnJheS5oCSh3b3JraW5nIGNvcHkpCkBAIC01MSwx
MyArNTEsMTMgQEAgcHVibGljOgogICAgIHN0YXRpYyB2b2lkIGRlc3Ryb3koSlNDZWxsKik7CiAK
ICAgICBzdGF0aWMgdm9pZCBnZXRPd25Qcm9wZXJ0eU5hbWVzKEpTT2JqZWN0KiwgRXhlY1N0YXRl
KiwgUHJvcGVydHlOYW1lQXJyYXkmLCBFbnVtZXJhdGlvbk1vZGUpOwotICAgIHN0YXRpYyBib29s
IGdldE93blByb3BlcnR5U2xvdChKU0NlbGwqLCBFeGVjU3RhdGUqLCBjb25zdCBJZGVudGlmaWVy
JiwgUHJvcGVydHlTbG90Jik7CisgICAgc3RhdGljIGJvb2wgZ2V0T3duUHJvcGVydHlTbG90KEpT
Q2VsbCosIEV4ZWNTdGF0ZSosIFByb3BlcnR5TmFtZSwgUHJvcGVydHlTbG90Jik7CiAgICAgc3Rh
dGljIGJvb2wgZ2V0T3duUHJvcGVydHlTbG90QnlJbmRleChKU0NlbGwqLCBFeGVjU3RhdGUqLCB1
bnNpZ25lZCwgUHJvcGVydHlTbG90Jik7Ci0gICAgc3RhdGljIGJvb2wgZ2V0T3duUHJvcGVydHlE
ZXNjcmlwdG9yKEpTT2JqZWN0KiwgRXhlY1N0YXRlKiwgY29uc3QgSWRlbnRpZmllciYsIFByb3Bl
cnR5RGVzY3JpcHRvciYpOwotICAgIHN0YXRpYyB2b2lkIHB1dChKU0NlbGwqLCBFeGVjU3RhdGUq
LCBjb25zdCBJZGVudGlmaWVyJiBwcm9wZXJ0eU5hbWUsIEpTVmFsdWUsIFB1dFByb3BlcnR5U2xv
dCYpOworICAgIHN0YXRpYyBib29sIGdldE93blByb3BlcnR5RGVzY3JpcHRvcihKU09iamVjdCos
IEV4ZWNTdGF0ZSosIFByb3BlcnR5TmFtZSwgUHJvcGVydHlEZXNjcmlwdG9yJik7CisgICAgc3Rh
dGljIHZvaWQgcHV0KEpTQ2VsbCosIEV4ZWNTdGF0ZSosIFByb3BlcnR5TmFtZSBwcm9wZXJ0eU5h
bWUsIEpTVmFsdWUsIFB1dFByb3BlcnR5U2xvdCYpOwogICAgIHN0YXRpYyB2b2lkIHB1dEJ5SW5k
ZXgoSlNDZWxsKiwgRXhlY1N0YXRlKiwgdW5zaWduZWQgcHJvcGVydHlOYW1lLCBKU1ZhbHVlLCBi
b29sIHNob3VsZFRocm93KTsKICAgICAKLSAgICBzdGF0aWMgYm9vbCBkZWxldGVQcm9wZXJ0eShK
U0NlbGwqLCBFeGVjU3RhdGUqLCBjb25zdCBJZGVudGlmaWVyICZwcm9wZXJ0eU5hbWUpOworICAg
IHN0YXRpYyBib29sIGRlbGV0ZVByb3BlcnR5KEpTQ2VsbCosIEV4ZWNTdGF0ZSosIFByb3BlcnR5
TmFtZSBwcm9wZXJ0eU5hbWUpOwogICAgIHN0YXRpYyBib29sIGRlbGV0ZVByb3BlcnR5QnlJbmRl
eChKU0NlbGwqLCBFeGVjU3RhdGUqLCB1bnNpZ25lZCBwcm9wZXJ0eU5hbWUpOwogICAgIAogICAg
IHVuc2lnbmVkIGdldExlbmd0aCgpIGNvbnN0IHsgcmV0dXJuIG1fYXJyYXktPmdldExlbmd0aCgp
OyB9CkBAIC04Myw3ICs4Myw3IEBAIHByb3RlY3RlZDoKIAogcHJpdmF0ZToKICAgICBSdW50aW1l
QXJyYXkoRXhlY1N0YXRlKiwgU3RydWN0dXJlKik7Ci0gICAgc3RhdGljIEpTVmFsdWUgbGVuZ3Ro
R2V0dGVyKEV4ZWNTdGF0ZSosIEpTVmFsdWUsIGNvbnN0IElkZW50aWZpZXImKTsKKyAgICBzdGF0
aWMgSlNWYWx1ZSBsZW5ndGhHZXR0ZXIoRXhlY1N0YXRlKiwgSlNWYWx1ZSwgUHJvcGVydHlOYW1l
KTsKICAgICBzdGF0aWMgSlNWYWx1ZSBpbmRleEdldHRlcihFeGVjU3RhdGUqLCBKU1ZhbHVlLCB1
bnNpZ25lZCk7CiAKICAgICBCaW5kaW5nc0FycmF5KiBtX2FycmF5OwpJbmRleDogU291cmNlL1dl
YkNvcmUvYnJpZGdlL3J1bnRpbWVfbWV0aG9kLmNwcAo9PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2Vi
Q29yZS9icmlkZ2UvcnVudGltZV9tZXRob2QuY3BwCShyZXZpc2lvbiAxMTY2NjcpCisrKyBTb3Vy
Y2UvV2ViQ29yZS9icmlkZ2UvcnVudGltZV9tZXRob2QuY3BwCSh3b3JraW5nIGNvcHkpCkBAIC01
NSwxMyArNTUsMTMgQEAgdm9pZCBSdW50aW1lTWV0aG9kOjpkZXN0cm95KEpTQ2VsbCogY2VsbAog
ICAgIGpzQ2FzdDxSdW50aW1lTWV0aG9kKj4oY2VsbCktPlJ1bnRpbWVNZXRob2Q6On5SdW50aW1l
TWV0aG9kKCk7CiB9CiAKLXZvaWQgUnVudGltZU1ldGhvZDo6ZmluaXNoQ3JlYXRpb24oSlNHbG9i
YWxEYXRhJiBnbG9iYWxEYXRhLCBjb25zdCBJZGVudGlmaWVyJiBpZGVudCkKK3ZvaWQgUnVudGlt
ZU1ldGhvZDo6ZmluaXNoQ3JlYXRpb24oSlNHbG9iYWxEYXRhJiBnbG9iYWxEYXRhLCBjb25zdCBV
U3RyaW5nJiBpZGVudCkKIHsKICAgICBCYXNlOjpmaW5pc2hDcmVhdGlvbihnbG9iYWxEYXRhLCBp
ZGVudCk7CiAgICAgQVNTRVJUKGluaGVyaXRzKCZzX2luZm8pKTsKIH0KIAotSlNWYWx1ZSBSdW50
aW1lTWV0aG9kOjpsZW5ndGhHZXR0ZXIoRXhlY1N0YXRlKiwgSlNWYWx1ZSBzbG90QmFzZSwgY29u
c3QgSWRlbnRpZmllciYpCitKU1ZhbHVlIFJ1bnRpbWVNZXRob2Q6Omxlbmd0aEdldHRlcihFeGVj
U3RhdGUqLCBKU1ZhbHVlIHNsb3RCYXNlLCBQcm9wZXJ0eU5hbWUpCiB7CiAgICAgUnVudGltZU1l
dGhvZCogdGhpc09iaiA9IHN0YXRpY19jYXN0PFJ1bnRpbWVNZXRob2QqPihhc09iamVjdChzbG90
QmFzZSkpOwogCkBAIC03NCw3ICs3NCw3IEBAIEpTVmFsdWUgUnVudGltZU1ldGhvZDo6bGVuZ3Ro
R2V0dGVyKEV4ZWMKICAgICByZXR1cm4ganNOdW1iZXIodGhpc09iai0+X21ldGhvZExpc3QtPmF0
KDApLT5udW1QYXJhbWV0ZXJzKCkpOwogfQogCi1ib29sIFJ1bnRpbWVNZXRob2Q6OmdldE93blBy
b3BlcnR5U2xvdChKU0NlbGwqIGNlbGwsIEV4ZWNTdGF0ZSogZXhlYywgY29uc3QgSWRlbnRpZmll
ciYgcHJvcGVydHlOYW1lLCBQcm9wZXJ0eVNsb3QgJnNsb3QpCitib29sIFJ1bnRpbWVNZXRob2Q6
OmdldE93blByb3BlcnR5U2xvdChKU0NlbGwqIGNlbGwsIEV4ZWNTdGF0ZSogZXhlYywgUHJvcGVy
dHlOYW1lIHByb3BlcnR5TmFtZSwgUHJvcGVydHlTbG90ICZzbG90KQogewogICAgIFJ1bnRpbWVN
ZXRob2QqIHRoaXNPYmplY3QgPSBqc0Nhc3Q8UnVudGltZU1ldGhvZCo+KGNlbGwpOwogICAgIGlm
IChwcm9wZXJ0eU5hbWUgPT0gZXhlYy0+cHJvcGVydHlOYW1lcygpLmxlbmd0aCkgewpAQCAtODUs
NyArODUsNyBAQCBib29sIFJ1bnRpbWVNZXRob2Q6OmdldE93blByb3BlcnR5U2xvdChKCiAgICAg
cmV0dXJuIEludGVybmFsRnVuY3Rpb246OmdldE93blByb3BlcnR5U2xvdCh0aGlzT2JqZWN0LCBl
eGVjLCBwcm9wZXJ0eU5hbWUsIHNsb3QpOwogfQogCi1ib29sIFJ1bnRpbWVNZXRob2Q6OmdldE93
blByb3BlcnR5RGVzY3JpcHRvcihKU09iamVjdCogb2JqZWN0LCBFeGVjU3RhdGUqIGV4ZWMsIGNv
bnN0IElkZW50aWZpZXImIHByb3BlcnR5TmFtZSwgUHJvcGVydHlEZXNjcmlwdG9yICZkZXNjcmlw
dG9yKQorYm9vbCBSdW50aW1lTWV0aG9kOjpnZXRPd25Qcm9wZXJ0eURlc2NyaXB0b3IoSlNPYmpl
Y3QqIG9iamVjdCwgRXhlY1N0YXRlKiBleGVjLCBQcm9wZXJ0eU5hbWUgcHJvcGVydHlOYW1lLCBQ
cm9wZXJ0eURlc2NyaXB0b3IgJmRlc2NyaXB0b3IpCiB7CiAgICAgUnVudGltZU1ldGhvZCogdGhp
c09iamVjdCA9IGpzQ2FzdDxSdW50aW1lTWV0aG9kKj4ob2JqZWN0KTsKICAgICBpZiAocHJvcGVy
dHlOYW1lID09IGV4ZWMtPnByb3BlcnR5TmFtZXMoKS5sZW5ndGgpIHsKSW5kZXg6IFNvdXJjZS9X
ZWJDb3JlL2JyaWRnZS9ydW50aW1lX21ldGhvZC5oCj09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9XZWJD
b3JlL2JyaWRnZS9ydW50aW1lX21ldGhvZC5oCShyZXZpc2lvbiAxMTY2NjcpCisrKyBTb3VyY2Uv
V2ViQ29yZS9icmlkZ2UvcnVudGltZV9tZXRob2QuaAkod29ya2luZyBjb3B5KQpAQCAtMzksNyAr
MzksNyBAQCBwdWJsaWM6CiAKICAgICBzdGF0aWMgdm9pZCBkZXN0cm95KEpTQ2VsbCopOwogCi0g
ICAgc3RhdGljIFJ1bnRpbWVNZXRob2QqIGNyZWF0ZShFeGVjU3RhdGUqIGV4ZWMsIEpTR2xvYmFs
T2JqZWN0KiBnbG9iYWxPYmplY3QsIFN0cnVjdHVyZSogc3RydWN0dXJlLCBjb25zdCBJZGVudGlm
aWVyJiBuYW1lLCBCaW5kaW5nczo6TWV0aG9kTGlzdCYgbWV0aG9kTGlzdCkKKyAgICBzdGF0aWMg
UnVudGltZU1ldGhvZCogY3JlYXRlKEV4ZWNTdGF0ZSogZXhlYywgSlNHbG9iYWxPYmplY3QqIGds
b2JhbE9iamVjdCwgU3RydWN0dXJlKiBzdHJ1Y3R1cmUsIGNvbnN0IFVTdHJpbmcmIG5hbWUsIEJp
bmRpbmdzOjpNZXRob2RMaXN0JiBtZXRob2RMaXN0KQogICAgIHsKICAgICAgICAgUnVudGltZU1l
dGhvZCogbWV0aG9kID0gbmV3IChOb3ROdWxsLCBhbGxvY2F0ZUNlbGw8UnVudGltZU1ldGhvZD4o
KmV4ZWMtPmhlYXAoKSkpIFJ1bnRpbWVNZXRob2QoZ2xvYmFsT2JqZWN0LCBzdHJ1Y3R1cmUsIG1l
dGhvZExpc3QpOwogICAgICAgICBtZXRob2QtPmZpbmlzaENyZWF0aW9uKGV4ZWMtPmdsb2JhbERh
dGEoKSwgbmFtZSk7CkBAIC02MiwxNSArNjIsMTUgQEAgcHVibGljOgogCiBwcm90ZWN0ZWQ6CiAg
ICAgUnVudGltZU1ldGhvZChKU0dsb2JhbE9iamVjdCosIFN0cnVjdHVyZSosIEJpbmRpbmdzOjpN
ZXRob2RMaXN0Jik7Ci0gICAgdm9pZCBmaW5pc2hDcmVhdGlvbihKU0dsb2JhbERhdGEmLCBjb25z
dCBJZGVudGlmaWVyJik7CisgICAgdm9pZCBmaW5pc2hDcmVhdGlvbihKU0dsb2JhbERhdGEmLCBj
b25zdCBVU3RyaW5nJik7CiAgICAgc3RhdGljIGNvbnN0IHVuc2lnbmVkIFN0cnVjdHVyZUZsYWdz
ID0gT3ZlcnJpZGVzR2V0T3duUHJvcGVydHlTbG90IHwgSW50ZXJuYWxGdW5jdGlvbjo6U3RydWN0
dXJlRmxhZ3M7CiAgICAgc3RhdGljIENhbGxUeXBlIGdldENhbGxEYXRhKEpTQ2VsbCosIENhbGxE
YXRhJik7CiAKLSAgICBzdGF0aWMgYm9vbCBnZXRPd25Qcm9wZXJ0eVNsb3QoSlNDZWxsKiwgRXhl
Y1N0YXRlKiwgY29uc3QgSWRlbnRpZmllciYsIFByb3BlcnR5U2xvdCYpOwotICAgIHN0YXRpYyBi
b29sIGdldE93blByb3BlcnR5RGVzY3JpcHRvcihKU09iamVjdCosIEV4ZWNTdGF0ZSosIGNvbnN0
IElkZW50aWZpZXImLCBQcm9wZXJ0eURlc2NyaXB0b3ImKTsKKyAgICBzdGF0aWMgYm9vbCBnZXRP
d25Qcm9wZXJ0eVNsb3QoSlNDZWxsKiwgRXhlY1N0YXRlKiwgUHJvcGVydHlOYW1lLCBQcm9wZXJ0
eVNsb3QmKTsKKyAgICBzdGF0aWMgYm9vbCBnZXRPd25Qcm9wZXJ0eURlc2NyaXB0b3IoSlNPYmpl
Y3QqLCBFeGVjU3RhdGUqLCBQcm9wZXJ0eU5hbWUsIFByb3BlcnR5RGVzY3JpcHRvciYpOwogCiBw
cml2YXRlOgotICAgIHN0YXRpYyBKU1ZhbHVlIGxlbmd0aEdldHRlcihFeGVjU3RhdGUqLCBKU1Zh
bHVlLCBjb25zdCBJZGVudGlmaWVyJik7CisgICAgc3RhdGljIEpTVmFsdWUgbGVuZ3RoR2V0dGVy
KEV4ZWNTdGF0ZSosIEpTVmFsdWUsIFByb3BlcnR5TmFtZSk7CiAKICAgICBPd25QdHI8QmluZGlu
Z3M6Ok1ldGhvZExpc3Q+IF9tZXRob2RMaXN0OwogfTsKSW5kZXg6IFNvdXJjZS9XZWJDb3JlL2Jy
aWRnZS9ydW50aW1lX29iamVjdC5jcHAKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL1dlYkNvcmUvYnJp
ZGdlL3J1bnRpbWVfb2JqZWN0LmNwcAkocmV2aXNpb24gMTE2NjY3KQorKysgU291cmNlL1dlYkNv
cmUvYnJpZGdlL3J1bnRpbWVfb2JqZWN0LmNwcAkod29ya2luZyBjb3B5KQpAQCAtNjQsNyArNjQs
NyBAQCB2b2lkIFJ1bnRpbWVPYmplY3Q6OmludmFsaWRhdGUoKQogICAgIG1faW5zdGFuY2UgPSAw
OwogfQogCi1KU1ZhbHVlIFJ1bnRpbWVPYmplY3Q6OmZhbGxiYWNrT2JqZWN0R2V0dGVyKEV4ZWNT
dGF0ZSogZXhlYywgSlNWYWx1ZSBzbG90QmFzZSwgY29uc3QgSWRlbnRpZmllciYgcHJvcGVydHlO
YW1lKQorSlNWYWx1ZSBSdW50aW1lT2JqZWN0OjpmYWxsYmFja09iamVjdEdldHRlcihFeGVjU3Rh
dGUqIGV4ZWMsIEpTVmFsdWUgc2xvdEJhc2UsIFByb3BlcnR5TmFtZSBwcm9wZXJ0eU5hbWUpCiB7
CiAgICAgUnVudGltZU9iamVjdCogdGhpc09iaiA9IHN0YXRpY19jYXN0PFJ1bnRpbWVPYmplY3Qq
Pihhc09iamVjdChzbG90QmFzZSkpOwogICAgIFJlZlB0cjxJbnN0YW5jZT4gaW5zdGFuY2UgPSB0
aGlzT2JqLT5tX2luc3RhbmNlOwpAQCAtODIsNyArODIsNyBAQCBKU1ZhbHVlIFJ1bnRpbWVPYmpl
Y3Q6OmZhbGxiYWNrT2JqZWN0R2V0CiAgICAgcmV0dXJuIHJlc3VsdDsKIH0KIAotSlNWYWx1ZSBS
dW50aW1lT2JqZWN0OjpmaWVsZEdldHRlcihFeGVjU3RhdGUqIGV4ZWMsIEpTVmFsdWUgc2xvdEJh
c2UsIGNvbnN0IElkZW50aWZpZXImIHByb3BlcnR5TmFtZSkKK0pTVmFsdWUgUnVudGltZU9iamVj
dDo6ZmllbGRHZXR0ZXIoRXhlY1N0YXRlKiBleGVjLCBKU1ZhbHVlIHNsb3RCYXNlLCBQcm9wZXJ0
eU5hbWUgcHJvcGVydHlOYW1lKQogeyAgICAKICAgICBSdW50aW1lT2JqZWN0KiB0aGlzT2JqID0g
c3RhdGljX2Nhc3Q8UnVudGltZU9iamVjdCo+KGFzT2JqZWN0KHNsb3RCYXNlKSk7CiAgICAgUmVm
UHRyPEluc3RhbmNlPiBpbnN0YW5jZSA9IHRoaXNPYmotPm1faW5zdGFuY2U7CkBAIC0xMDEsNyAr
MTAxLDcgQEAgSlNWYWx1ZSBSdW50aW1lT2JqZWN0OjpmaWVsZEdldHRlcihFeGVjUwogICAgIHJl
dHVybiByZXN1bHQ7CiB9CiAKLUpTVmFsdWUgUnVudGltZU9iamVjdDo6bWV0aG9kR2V0dGVyKEV4
ZWNTdGF0ZSogZXhlYywgSlNWYWx1ZSBzbG90QmFzZSwgY29uc3QgSWRlbnRpZmllciYgcHJvcGVy
dHlOYW1lKQorSlNWYWx1ZSBSdW50aW1lT2JqZWN0OjptZXRob2RHZXR0ZXIoRXhlY1N0YXRlKiBl
eGVjLCBKU1ZhbHVlIHNsb3RCYXNlLCBQcm9wZXJ0eU5hbWUgcHJvcGVydHlOYW1lKQogewogICAg
IFJ1bnRpbWVPYmplY3QqIHRoaXNPYmogPSBzdGF0aWNfY2FzdDxSdW50aW1lT2JqZWN0Kj4oYXNP
YmplY3Qoc2xvdEJhc2UpKTsKICAgICBSZWZQdHI8SW5zdGFuY2U+IGluc3RhbmNlID0gdGhpc09i
ai0+bV9pbnN0YW5jZTsKQEAgLTExOCw3ICsxMTgsNyBAQCBKU1ZhbHVlIFJ1bnRpbWVPYmplY3Q6
Om1ldGhvZEdldHRlcihFeGVjCiAgICAgcmV0dXJuIG1ldGhvZDsKIH0KIAotYm9vbCBSdW50aW1l
T2JqZWN0OjpnZXRPd25Qcm9wZXJ0eVNsb3QoSlNDZWxsKiBjZWxsLCBFeGVjU3RhdGUgKmV4ZWMs
IGNvbnN0IElkZW50aWZpZXImIHByb3BlcnR5TmFtZSwgUHJvcGVydHlTbG90JiBzbG90KQorYm9v
bCBSdW50aW1lT2JqZWN0OjpnZXRPd25Qcm9wZXJ0eVNsb3QoSlNDZWxsKiBjZWxsLCBFeGVjU3Rh
dGUgKmV4ZWMsIFByb3BlcnR5TmFtZSBwcm9wZXJ0eU5hbWUsIFByb3BlcnR5U2xvdCYgc2xvdCkK
IHsKICAgICBSdW50aW1lT2JqZWN0KiB0aGlzT2JqZWN0ID0ganNDYXN0PFJ1bnRpbWVPYmplY3Qq
PihjZWxsKTsKICAgICBpZiAoIXRoaXNPYmplY3QtPm1faW5zdGFuY2UpIHsKQEAgLTE2NCw3ICsx
NjQsNyBAQCBib29sIFJ1bnRpbWVPYmplY3Q6OmdldE93blByb3BlcnR5U2xvdChKCiAgICAgcmV0
dXJuIGluc3RhbmNlLT5nZXRPd25Qcm9wZXJ0eVNsb3QodGhpc09iamVjdCwgZXhlYywgcHJvcGVy
dHlOYW1lLCBzbG90KTsKIH0KIAotYm9vbCBSdW50aW1lT2JqZWN0OjpnZXRPd25Qcm9wZXJ0eURl
c2NyaXB0b3IoSlNPYmplY3QqIG9iamVjdCwgRXhlY1N0YXRlICpleGVjLCBjb25zdCBJZGVudGlm
aWVyJiBwcm9wZXJ0eU5hbWUsIFByb3BlcnR5RGVzY3JpcHRvciYgZGVzY3JpcHRvcikKK2Jvb2wg
UnVudGltZU9iamVjdDo6Z2V0T3duUHJvcGVydHlEZXNjcmlwdG9yKEpTT2JqZWN0KiBvYmplY3Qs
IEV4ZWNTdGF0ZSAqZXhlYywgUHJvcGVydHlOYW1lIHByb3BlcnR5TmFtZSwgUHJvcGVydHlEZXNj
cmlwdG9yJiBkZXNjcmlwdG9yKQogewogICAgIFJ1bnRpbWVPYmplY3QqIHRoaXNPYmplY3QgPSBq
c0Nhc3Q8UnVudGltZU9iamVjdCo+KG9iamVjdCk7CiAgICAgaWYgKCF0aGlzT2JqZWN0LT5tX2lu
c3RhbmNlKSB7CkBAIC0yMTQsNyArMjE0LDcgQEAgYm9vbCBSdW50aW1lT2JqZWN0OjpnZXRPd25Q
cm9wZXJ0eURlc2NyaQogICAgIHJldHVybiBpbnN0YW5jZS0+Z2V0T3duUHJvcGVydHlEZXNjcmlw
dG9yKHRoaXNPYmplY3QsIGV4ZWMsIHByb3BlcnR5TmFtZSwgZGVzY3JpcHRvcik7CiB9CiAKLXZv
aWQgUnVudGltZU9iamVjdDo6cHV0KEpTQ2VsbCogY2VsbCwgRXhlY1N0YXRlKiBleGVjLCBjb25z
dCBJZGVudGlmaWVyJiBwcm9wZXJ0eU5hbWUsIEpTVmFsdWUgdmFsdWUsIFB1dFByb3BlcnR5U2xv
dCYgc2xvdCkKK3ZvaWQgUnVudGltZU9iamVjdDo6cHV0KEpTQ2VsbCogY2VsbCwgRXhlY1N0YXRl
KiBleGVjLCBQcm9wZXJ0eU5hbWUgcHJvcGVydHlOYW1lLCBKU1ZhbHVlIHZhbHVlLCBQdXRQcm9w
ZXJ0eVNsb3QmIHNsb3QpCiB7CiAgICAgUnVudGltZU9iamVjdCogdGhpc09iamVjdCA9IGpzQ2Fz
dDxSdW50aW1lT2JqZWN0Kj4oY2VsbCk7CiAgICAgaWYgKCF0aGlzT2JqZWN0LT5tX2luc3RhbmNl
KSB7CkBAIC0yMzUsNyArMjM1LDcgQEAgdm9pZCBSdW50aW1lT2JqZWN0OjpwdXQoSlNDZWxsKiBj
ZWxsLCBFeAogICAgIGluc3RhbmNlLT5lbmQoKTsKIH0KIAotYm9vbCBSdW50aW1lT2JqZWN0Ojpk
ZWxldGVQcm9wZXJ0eShKU0NlbGwqLCBFeGVjU3RhdGUqLCBjb25zdCBJZGVudGlmaWVyJikKK2Jv
b2wgUnVudGltZU9iamVjdDo6ZGVsZXRlUHJvcGVydHkoSlNDZWxsKiwgRXhlY1N0YXRlKiwgUHJv
cGVydHlOYW1lKQogewogICAgIC8vIENhbiBuZXZlciByZW1vdmUgYSBwcm9wZXJ0eSBvZiBhIFJ1
bnRpbWVPYmplY3QuCiAgICAgcmV0dXJuIGZhbHNlOwpJbmRleDogU291cmNlL1dlYkNvcmUvYnJp
ZGdlL3J1bnRpbWVfb2JqZWN0LmgKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL1dlYkNvcmUvYnJpZGdl
L3J1bnRpbWVfb2JqZWN0LmgJKHJldmlzaW9uIDExNjY2NykKKysrIFNvdXJjZS9XZWJDb3JlL2Jy
aWRnZS9ydW50aW1lX29iamVjdC5oCSh3b3JraW5nIGNvcHkpCkBAIC00NSwxMCArNDUsMTAgQEAg
cHVibGljOgogCiAgICAgc3RhdGljIHZvaWQgZGVzdHJveShKU0NlbGwqKTsKIAotICAgIHN0YXRp
YyBib29sIGdldE93blByb3BlcnR5U2xvdChKU0NlbGwqLCBFeGVjU3RhdGUqLCBjb25zdCBJZGVu
dGlmaWVyJiBwcm9wZXJ0eU5hbWUsIFByb3BlcnR5U2xvdCYpOwotICAgIHN0YXRpYyBib29sIGdl
dE93blByb3BlcnR5RGVzY3JpcHRvcihKU09iamVjdCosIEV4ZWNTdGF0ZSosIGNvbnN0IElkZW50
aWZpZXImIHByb3BlcnR5TmFtZSwgUHJvcGVydHlEZXNjcmlwdG9yJik7Ci0gICAgc3RhdGljIHZv
aWQgcHV0KEpTQ2VsbCosIEV4ZWNTdGF0ZSosIGNvbnN0IElkZW50aWZpZXImIHByb3BlcnR5TmFt
ZSwgSlNWYWx1ZSwgUHV0UHJvcGVydHlTbG90Jik7Ci0gICAgc3RhdGljIGJvb2wgZGVsZXRlUHJv
cGVydHkoSlNDZWxsKiwgRXhlY1N0YXRlKiwgY29uc3QgSWRlbnRpZmllciYgcHJvcGVydHlOYW1l
KTsKKyAgICBzdGF0aWMgYm9vbCBnZXRPd25Qcm9wZXJ0eVNsb3QoSlNDZWxsKiwgRXhlY1N0YXRl
KiwgUHJvcGVydHlOYW1lIHByb3BlcnR5TmFtZSwgUHJvcGVydHlTbG90Jik7CisgICAgc3RhdGlj
IGJvb2wgZ2V0T3duUHJvcGVydHlEZXNjcmlwdG9yKEpTT2JqZWN0KiwgRXhlY1N0YXRlKiwgUHJv
cGVydHlOYW1lIHByb3BlcnR5TmFtZSwgUHJvcGVydHlEZXNjcmlwdG9yJik7CisgICAgc3RhdGlj
IHZvaWQgcHV0KEpTQ2VsbCosIEV4ZWNTdGF0ZSosIFByb3BlcnR5TmFtZSBwcm9wZXJ0eU5hbWUs
IEpTVmFsdWUsIFB1dFByb3BlcnR5U2xvdCYpOworICAgIHN0YXRpYyBib29sIGRlbGV0ZVByb3Bl
cnR5KEpTQ2VsbCosIEV4ZWNTdGF0ZSosIFByb3BlcnR5TmFtZSBwcm9wZXJ0eU5hbWUpOwogICAg
IHN0YXRpYyBKU1ZhbHVlIGRlZmF1bHRWYWx1ZShjb25zdCBKU09iamVjdCosIEV4ZWNTdGF0ZSos
IFByZWZlcnJlZFByaW1pdGl2ZVR5cGUpOwogICAgIHN0YXRpYyBDYWxsVHlwZSBnZXRDYWxsRGF0
YShKU0NlbGwqLCBDYWxsRGF0YSYpOwogICAgIHN0YXRpYyBDb25zdHJ1Y3RUeXBlIGdldENvbnN0
cnVjdERhdGEoSlNDZWxsKiwgQ29uc3RydWN0RGF0YSYpOwpAQCAtNzksOSArNzksOSBAQCBwcm90
ZWN0ZWQ6CiAgICAgc3RhdGljIGNvbnN0IHVuc2lnbmVkIFN0cnVjdHVyZUZsYWdzID0gT3ZlcnJp
ZGVzR2V0T3duUHJvcGVydHlTbG90IHwgT3ZlcnJpZGVzR2V0UHJvcGVydHlOYW1lcyB8IEJhc2U6
OlN0cnVjdHVyZUZsYWdzOwogCiBwcml2YXRlOgotICAgIHN0YXRpYyBKU1ZhbHVlIGZhbGxiYWNr
T2JqZWN0R2V0dGVyKEV4ZWNTdGF0ZSosIEpTVmFsdWUsIGNvbnN0IElkZW50aWZpZXImKTsKLSAg
ICBzdGF0aWMgSlNWYWx1ZSBmaWVsZEdldHRlcihFeGVjU3RhdGUqLCBKU1ZhbHVlLCBjb25zdCBJ
ZGVudGlmaWVyJik7Ci0gICAgc3RhdGljIEpTVmFsdWUgbWV0aG9kR2V0dGVyKEV4ZWNTdGF0ZSos
IEpTVmFsdWUsIGNvbnN0IElkZW50aWZpZXImKTsKKyAgICBzdGF0aWMgSlNWYWx1ZSBmYWxsYmFj
a09iamVjdEdldHRlcihFeGVjU3RhdGUqLCBKU1ZhbHVlLCBQcm9wZXJ0eU5hbWUpOworICAgIHN0
YXRpYyBKU1ZhbHVlIGZpZWxkR2V0dGVyKEV4ZWNTdGF0ZSosIEpTVmFsdWUsIFByb3BlcnR5TmFt
ZSk7CisgICAgc3RhdGljIEpTVmFsdWUgbWV0aG9kR2V0dGVyKEV4ZWNTdGF0ZSosIEpTVmFsdWUs
IFByb3BlcnR5TmFtZSk7CiAKICAgICBSZWZQdHI8SW5zdGFuY2U+IG1faW5zdGFuY2U7CiB9OwpJ
bmRleDogU291cmNlL1dlYkNvcmUvYnJpZGdlL2MvY19jbGFzcy5jcHAKPT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0g
U291cmNlL1dlYkNvcmUvYnJpZGdlL2MvY19jbGFzcy5jcHAJKHJldmlzaW9uIDExNjY2NykKKysr
IFNvdXJjZS9XZWJDb3JlL2JyaWRnZS9jL2NfY2xhc3MuY3BwCSh3b3JraW5nIGNvcHkpCkBAIC03
MywyNCArNzMsMjYgQEAgQ0NsYXNzKiBDQ2xhc3M6OmNsYXNzRm9ySXNBKE5QQ2xhc3MqIGlzYQog
ICAgIHJldHVybiBhQ2xhc3M7CiB9CiAKLU1ldGhvZExpc3QgQ0NsYXNzOjptZXRob2RzTmFtZWQo
Y29uc3QgSWRlbnRpZmllciYgaWRlbnRpZmllciwgSW5zdGFuY2UqIGluc3RhbmNlKSBjb25zdAor
TWV0aG9kTGlzdCBDQ2xhc3M6Om1ldGhvZHNOYW1lZChQcm9wZXJ0eU5hbWUgaWRlbnRpZmllciwg
SW5zdGFuY2UqIGluc3RhbmNlKSBjb25zdAogeworICAgIFVTdHJpbmcgbmFtZShpZGVudGlmaWVy
LmltcGwoKSk7CisgICAgCiAgICAgTWV0aG9kTGlzdCBtZXRob2RMaXN0OwogCi0gICAgTWV0aG9k
KiBtZXRob2QgPSBfbWV0aG9kcy5nZXQoaWRlbnRpZmllci51c3RyaW5nKCkuaW1wbCgpKTsKKyAg
ICBNZXRob2QqIG1ldGhvZCA9IF9tZXRob2RzLmdldChuYW1lLmltcGwoKSk7CiAgICAgaWYgKG1l
dGhvZCkgewogICAgICAgICBtZXRob2RMaXN0LmFwcGVuZChtZXRob2QpOwogICAgICAgICByZXR1
cm4gbWV0aG9kTGlzdDsKICAgICB9CiAKLSAgICBOUElkZW50aWZpZXIgaWRlbnQgPSBfTlBOX0dl
dFN0cmluZ0lkZW50aWZpZXIoaWRlbnRpZmllci5hc2NpaSgpLmRhdGEoKSk7CisgICAgTlBJZGVu
dGlmaWVyIGlkZW50ID0gX05QTl9HZXRTdHJpbmdJZGVudGlmaWVyKG5hbWUuYXNjaWkoKS5kYXRh
KCkpOwogICAgIGNvbnN0IENJbnN0YW5jZSogaW5zdCA9IHN0YXRpY19jYXN0PGNvbnN0IENJbnN0
YW5jZSo+KGluc3RhbmNlKTsKICAgICBOUE9iamVjdCogb2JqID0gaW5zdC0+Z2V0T2JqZWN0KCk7
CiAgICAgaWYgKF9pc2EtPmhhc01ldGhvZCAmJiBfaXNhLT5oYXNNZXRob2Qob2JqLCBpZGVudCkp
ewogICAgICAgICBNZXRob2QqIGFNZXRob2QgPSBuZXcgQ01ldGhvZChpZGVudCk7IC8vIGRlbGV0
ZWQgaW4gdGhlIENDbGFzcyBkZXN0cnVjdG9yCiAgICAgICAgIHsKICAgICAgICAgICAgIEpTTG9j
ayBsb2NrKFNpbGVuY2VBc3NlcnRpb25zT25seSk7Ci0gICAgICAgICAgICBfbWV0aG9kcy5zZXQo
aWRlbnRpZmllci51c3RyaW5nKCkuaW1wbCgpLCBhTWV0aG9kKTsKKyAgICAgICAgICAgIF9tZXRo
b2RzLnNldChuYW1lLmltcGwoKSwgYU1ldGhvZCk7CiAgICAgICAgIH0KICAgICAgICAgbWV0aG9k
TGlzdC5hcHBlbmQoYU1ldGhvZCk7CiAgICAgfQpAQCAtOTgsMjAgKzEwMCwyMiBAQCBNZXRob2RM
aXN0IENDbGFzczo6bWV0aG9kc05hbWVkKGNvbnN0IElkCiAgICAgcmV0dXJuIG1ldGhvZExpc3Q7
CiB9CiAKLUZpZWxkKiBDQ2xhc3M6OmZpZWxkTmFtZWQoY29uc3QgSWRlbnRpZmllciYgaWRlbnRp
ZmllciwgSW5zdGFuY2UqIGluc3RhbmNlKSBjb25zdAorRmllbGQqIENDbGFzczo6ZmllbGROYW1l
ZChQcm9wZXJ0eU5hbWUgaWRlbnRpZmllciwgSW5zdGFuY2UqIGluc3RhbmNlKSBjb25zdAogewot
ICAgIEZpZWxkKiBhRmllbGQgPSBfZmllbGRzLmdldChpZGVudGlmaWVyLnVzdHJpbmcoKS5pbXBs
KCkpOworICAgIFVTdHJpbmcgbmFtZShpZGVudGlmaWVyLmltcGwoKSk7CisgICAgCisgICAgRmll
bGQqIGFGaWVsZCA9IF9maWVsZHMuZ2V0KG5hbWUuaW1wbCgpKTsKICAgICBpZiAoYUZpZWxkKQog
ICAgICAgICByZXR1cm4gYUZpZWxkOwogICAgIAotICAgIE5QSWRlbnRpZmllciBpZGVudCA9IF9O
UE5fR2V0U3RyaW5nSWRlbnRpZmllcihpZGVudGlmaWVyLmFzY2lpKCkuZGF0YSgpKTsKKyAgICBO
UElkZW50aWZpZXIgaWRlbnQgPSBfTlBOX0dldFN0cmluZ0lkZW50aWZpZXIobmFtZS5hc2NpaSgp
LmRhdGEoKSk7CiAgICAgY29uc3QgQ0luc3RhbmNlKiBpbnN0ID0gc3RhdGljX2Nhc3Q8Y29uc3Qg
Q0luc3RhbmNlKj4oaW5zdGFuY2UpOwogICAgIE5QT2JqZWN0KiBvYmogPSBpbnN0LT5nZXRPYmpl
Y3QoKTsKICAgICBpZiAoX2lzYS0+aGFzUHJvcGVydHkgJiYgX2lzYS0+aGFzUHJvcGVydHkob2Jq
LCBpZGVudCkpewogICAgICAgICBhRmllbGQgPSBuZXcgQ0ZpZWxkKGlkZW50KTsgLy8gZGVsZXRl
ZCBpbiB0aGUgQ0NsYXNzIGRlc3RydWN0b3IKICAgICAgICAgewogICAgICAgICAgICAgSlNMb2Nr
IGxvY2soU2lsZW5jZUFzc2VydGlvbnNPbmx5KTsKLSAgICAgICAgICAgIF9maWVsZHMuc2V0KGlk
ZW50aWZpZXIudXN0cmluZygpLmltcGwoKSwgYUZpZWxkKTsKKyAgICAgICAgICAgIF9maWVsZHMu
c2V0KG5hbWUuaW1wbCgpLCBhRmllbGQpOwogICAgICAgICB9CiAgICAgfQogICAgIHJldHVybiBh
RmllbGQ7CkluZGV4OiBTb3VyY2UvV2ViQ29yZS9icmlkZ2UvYy9jX2NsYXNzLmgKPT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PQotLS0gU291cmNlL1dlYkNvcmUvYnJpZGdlL2MvY19jbGFzcy5oCShyZXZpc2lvbiAxMTY2Njcp
CisrKyBTb3VyY2UvV2ViQ29yZS9icmlkZ2UvYy9jX2NsYXNzLmgJKHdvcmtpbmcgY29weSkKQEAg
LTQzLDggKzQzLDggQEAgcHVibGljOgogICAgIHN0YXRpYyBDQ2xhc3MqIGNsYXNzRm9ySXNBKE5Q
Q2xhc3MqKTsKICAgICB2aXJ0dWFsIH5DQ2xhc3MoKTsKIAotICAgIHZpcnR1YWwgTWV0aG9kTGlz
dCBtZXRob2RzTmFtZWQoY29uc3QgSWRlbnRpZmllciYsIEluc3RhbmNlKikgY29uc3Q7Ci0gICAg
dmlydHVhbCBGaWVsZCogZmllbGROYW1lZChjb25zdCBJZGVudGlmaWVyJiwgSW5zdGFuY2UqKSBj
b25zdDsKKyAgICB2aXJ0dWFsIE1ldGhvZExpc3QgbWV0aG9kc05hbWVkKFByb3BlcnR5TmFtZSwg
SW5zdGFuY2UqKSBjb25zdDsKKyAgICB2aXJ0dWFsIEZpZWxkKiBmaWVsZE5hbWVkKFByb3BlcnR5
TmFtZSwgSW5zdGFuY2UqKSBjb25zdDsKIAogcHJpdmF0ZToKICAgICBOUENsYXNzKiBfaXNhOwpJ
bmRleDogU291cmNlL1dlYkNvcmUvYnJpZGdlL2MvY19pbnN0YW5jZS5jcHAKPT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQot
LS0gU291cmNlL1dlYkNvcmUvYnJpZGdlL2MvY19pbnN0YW5jZS5jcHAJKHJldmlzaW9uIDExNjY2
NykKKysrIFNvdXJjZS9XZWJDb3JlL2JyaWRnZS9jL2NfaW5zdGFuY2UuY3BwCSh3b3JraW5nIGNv
cHkpCkBAIC0xMTMsNyArMTEzLDcgQEAgY2xhc3MgQ1J1bnRpbWVNZXRob2QgOiBwdWJsaWMgUnVu
dGltZU1ldAogcHVibGljOgogICAgIHR5cGVkZWYgUnVudGltZU1ldGhvZCBCYXNlOwogCi0gICAg
c3RhdGljIENSdW50aW1lTWV0aG9kKiBjcmVhdGUoRXhlY1N0YXRlKiBleGVjLCBKU0dsb2JhbE9i
amVjdCogZ2xvYmFsT2JqZWN0LCBjb25zdCBJZGVudGlmaWVyJiBuYW1lLCBCaW5kaW5nczo6TWV0
aG9kTGlzdCYgbGlzdCkKKyAgICBzdGF0aWMgQ1J1bnRpbWVNZXRob2QqIGNyZWF0ZShFeGVjU3Rh
dGUqIGV4ZWMsIEpTR2xvYmFsT2JqZWN0KiBnbG9iYWxPYmplY3QsIGNvbnN0IFVTdHJpbmcmIG5h
bWUsIEJpbmRpbmdzOjpNZXRob2RMaXN0JiBsaXN0KQogICAgIHsKICAgICAgICAgLy8gRklYTUU6
IGRlcHJlY2F0ZWRHZXRET01TdHJ1Y3R1cmUgdXNlcyB0aGUgcHJvdG90eXBlIG9mZiBvZiB0aGUg
d3JvbmcgZ2xvYmFsIG9iamVjdAogICAgICAgICAvLyBXZSBuZWVkIHRvIHBhc3MgaW4gdGhlIHJp
Z2h0IGdsb2JhbCBvYmplY3QgZm9yICJpIi4KQEAgLTEzNiw3ICsxMzYsNyBAQCBwcml2YXRlOgog
ICAgIHsKICAgICB9CiAKLSAgICB2b2lkIGZpbmlzaENyZWF0aW9uKEpTR2xvYmFsRGF0YSYgZ2xv
YmFsRGF0YSwgY29uc3QgSWRlbnRpZmllciYgbmFtZSkKKyAgICB2b2lkIGZpbmlzaENyZWF0aW9u
KEpTR2xvYmFsRGF0YSYgZ2xvYmFsRGF0YSwgY29uc3QgVVN0cmluZyYgbmFtZSkKICAgICB7CiAg
ICAgICAgIEJhc2U6OmZpbmlzaENyZWF0aW9uKGdsb2JhbERhdGEsIG5hbWUpOwogICAgICAgICBB
U1NFUlQoaW5oZXJpdHMoJnNfaW5mbykpOwpAQCAtMTQ2LDEwICsxNDYsMTAgQEAgcHJpdmF0ZToK
IAogY29uc3QgQ2xhc3NJbmZvIENSdW50aW1lTWV0aG9kOjpzX2luZm8gPSB7ICJDUnVudGltZU1l
dGhvZCIsICZSdW50aW1lTWV0aG9kOjpzX2luZm8sIDAsIDAsIENSRUFURV9NRVRIT0RfVEFCTEUo
Q1J1bnRpbWVNZXRob2QpIH07CiAKLUpTVmFsdWUgQ0luc3RhbmNlOjpnZXRNZXRob2QoRXhlY1N0
YXRlKiBleGVjLCBjb25zdCBJZGVudGlmaWVyJiBwcm9wZXJ0eU5hbWUpCitKU1ZhbHVlIENJbnN0
YW5jZTo6Z2V0TWV0aG9kKEV4ZWNTdGF0ZSogZXhlYywgUHJvcGVydHlOYW1lIHByb3BlcnR5TmFt
ZSkKIHsKICAgICBNZXRob2RMaXN0IG1ldGhvZExpc3QgPSBnZXRDbGFzcygpLT5tZXRob2RzTmFt
ZWQocHJvcGVydHlOYW1lLCB0aGlzKTsKLSAgICByZXR1cm4gQ1J1bnRpbWVNZXRob2Q6OmNyZWF0
ZShleGVjLCBleGVjLT5sZXhpY2FsR2xvYmFsT2JqZWN0KCksIHByb3BlcnR5TmFtZSwgbWV0aG9k
TGlzdCk7CisgICAgcmV0dXJuIENSdW50aW1lTWV0aG9kOjpjcmVhdGUoZXhlYywgZXhlYy0+bGV4
aWNhbEdsb2JhbE9iamVjdCgpLCBwcm9wZXJ0eU5hbWUuaW1wbCgpLCBtZXRob2RMaXN0KTsKIH0K
IAogSlNWYWx1ZSBDSW5zdGFuY2U6Omludm9rZU1ldGhvZChFeGVjU3RhdGUqIGV4ZWMsIFJ1bnRp
bWVNZXRob2QqIHJ1bnRpbWVNZXRob2QpCkluZGV4OiBTb3VyY2UvV2ViQ29yZS9icmlkZ2UvYy9j
X2luc3RhbmNlLmgKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL1dlYkNvcmUvYnJpZGdlL2MvY19pbnN0
YW5jZS5oCShyZXZpc2lvbiAxMTY2NjcpCisrKyBTb3VyY2UvV2ViQ29yZS9icmlkZ2UvYy9jX2lu
c3RhbmNlLmgJKHdvcmtpbmcgY29weSkKQEAgLTU5LDcgKzU5LDcgQEAgcHVibGljOgogICAgIHZp
cnR1YWwgSlNWYWx1ZSB2YWx1ZU9mKEV4ZWNTdGF0ZSopIGNvbnN0OwogICAgIHZpcnR1YWwgSlNW
YWx1ZSBkZWZhdWx0VmFsdWUoRXhlY1N0YXRlKiwgUHJlZmVycmVkUHJpbWl0aXZlVHlwZSkgY29u
c3Q7CiAKLSAgICB2aXJ0dWFsIEpTVmFsdWUgZ2V0TWV0aG9kKEV4ZWNTdGF0ZSogZXhlYywgY29u
c3QgSWRlbnRpZmllciYgcHJvcGVydHlOYW1lKTsKKyAgICB2aXJ0dWFsIEpTVmFsdWUgZ2V0TWV0
aG9kKEV4ZWNTdGF0ZSogZXhlYywgUHJvcGVydHlOYW1lIHByb3BlcnR5TmFtZSk7CiAgICAgdmly
dHVhbCBKU1ZhbHVlIGludm9rZU1ldGhvZChFeGVjU3RhdGUqLCBSdW50aW1lTWV0aG9kKiBtZXRo
b2QpOwogICAgIHZpcnR1YWwgYm9vbCBzdXBwb3J0c0ludm9rZURlZmF1bHRNZXRob2QoKSBjb25z
dDsKICAgICB2aXJ0dWFsIEpTVmFsdWUgaW52b2tlRGVmYXVsdE1ldGhvZChFeGVjU3RhdGUqKTsK
SW5kZXg6IFNvdXJjZS9XZWJDb3JlL2JyaWRnZS9qbmkvanNjL0phdmFDbGFzc0pTQy5jcHAKPT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PQotLS0gU291cmNlL1dlYkNvcmUvYnJpZGdlL2puaS9qc2MvSmF2YUNsYXNzSlNDLmNw
cAkocmV2aXNpb24gMTE2NjY3KQorKysgU291cmNlL1dlYkNvcmUvYnJpZGdlL2puaS9qc2MvSmF2
YUNsYXNzSlNDLmNwcAkod29ya2luZyBjb3B5KQpAQCAtMTE0LDcgKzExNCw3IEBAIEphdmFDbGFz
czo6fkphdmFDbGFzcygpCiAgICAgbV9tZXRob2RzLmNsZWFyKCk7CiB9CiAKLU1ldGhvZExpc3Qg
SmF2YUNsYXNzOjptZXRob2RzTmFtZWQoY29uc3QgSWRlbnRpZmllciYgaWRlbnRpZmllciwgSW5z
dGFuY2UqKSBjb25zdAorTWV0aG9kTGlzdCBKYXZhQ2xhc3M6Om1ldGhvZHNOYW1lZChQcm9wZXJ0
eU5hbWUgaWRlbnRpZmllciwgSW5zdGFuY2UqKSBjb25zdAogewogICAgIE1ldGhvZExpc3QqIG1l
dGhvZExpc3QgPSBtX21ldGhvZHMuZ2V0KGlkZW50aWZpZXIudXN0cmluZygpLmltcGwoKSk7CiAK
QEAgLTEyMyw3ICsxMjMsNyBAQCBNZXRob2RMaXN0IEphdmFDbGFzczo6bWV0aG9kc05hbWVkKGNv
bnN0CiAgICAgcmV0dXJuIE1ldGhvZExpc3QoKTsKIH0KIAotRmllbGQqIEphdmFDbGFzczo6Zmll
bGROYW1lZChjb25zdCBJZGVudGlmaWVyJiBpZGVudGlmaWVyLCBJbnN0YW5jZSopIGNvbnN0CitG
aWVsZCogSmF2YUNsYXNzOjpmaWVsZE5hbWVkKFByb3BlcnR5TmFtZSBpZGVudGlmaWVyLCBJbnN0
YW5jZSopIGNvbnN0CiB7CiAgICAgcmV0dXJuIG1fZmllbGRzLmdldChpZGVudGlmaWVyLnVzdHJp
bmcoKS5pbXBsKCkpOwogfQpJbmRleDogU291cmNlL1dlYkNvcmUvYnJpZGdlL2puaS9qc2MvSmF2
YUNsYXNzSlNDLmgKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL1dlYkNvcmUvYnJpZGdlL2puaS9qc2Mv
SmF2YUNsYXNzSlNDLmgJKHJldmlzaW9uIDExNjY2NykKKysrIFNvdXJjZS9XZWJDb3JlL2JyaWRn
ZS9qbmkvanNjL0phdmFDbGFzc0pTQy5oCSh3b3JraW5nIGNvcHkpCkBAIC00MSw4ICs0MSw4IEBA
IHB1YmxpYzoKICAgICBKYXZhQ2xhc3Moam9iamVjdCk7CiAgICAgfkphdmFDbGFzcygpOwogCi0g
ICAgdmlydHVhbCBNZXRob2RMaXN0IG1ldGhvZHNOYW1lZChjb25zdCBJZGVudGlmaWVyJiwgSW5z
dGFuY2UqKSBjb25zdDsKLSAgICB2aXJ0dWFsIEZpZWxkKiBmaWVsZE5hbWVkKGNvbnN0IElkZW50
aWZpZXImLCBJbnN0YW5jZSopIGNvbnN0OworICAgIHZpcnR1YWwgTWV0aG9kTGlzdCBtZXRob2Rz
TmFtZWQoUHJvcGVydHlOYW1lLCBJbnN0YW5jZSopIGNvbnN0OworICAgIHZpcnR1YWwgRmllbGQq
IGZpZWxkTmFtZWQoUHJvcGVydHlOYW1lLCBJbnN0YW5jZSopIGNvbnN0OwogCiAgICAgYm9vbCBp
c051bWJlckNsYXNzKCkgY29uc3Q7CiAgICAgYm9vbCBpc0Jvb2xlYW5DbGFzcygpIGNvbnN0OwpJ
bmRleDogU291cmNlL1dlYkNvcmUvYnJpZGdlL2puaS9qc2MvSmF2YUluc3RhbmNlSlNDLmNwcAo9
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09Ci0tLSBTb3VyY2UvV2ViQ29yZS9icmlkZ2Uvam5pL2pzYy9KYXZhSW5zdGFuY2VK
U0MuY3BwCShyZXZpc2lvbiAxMTY2NjcpCisrKyBTb3VyY2UvV2ViQ29yZS9icmlkZ2Uvam5pL2pz
Yy9KYXZhSW5zdGFuY2VKU0MuY3BwCSh3b3JraW5nIGNvcHkpCkBAIC0xMTgsNyArMTE4LDcgQEAg
Y2xhc3MgSmF2YVJ1bnRpbWVNZXRob2QgOiBwdWJsaWMgUnVudGltZQogcHVibGljOgogICAgIHR5
cGVkZWYgUnVudGltZU1ldGhvZCBCYXNlOwogCi0gICAgc3RhdGljIEphdmFSdW50aW1lTWV0aG9k
KiBjcmVhdGUoRXhlY1N0YXRlKiBleGVjLCBKU0dsb2JhbE9iamVjdCogZ2xvYmFsT2JqZWN0LCBj
b25zdCBJZGVudGlmaWVyJiBuYW1lLCBCaW5kaW5nczo6TWV0aG9kTGlzdCYgbGlzdCkKKyAgICBz
dGF0aWMgSmF2YVJ1bnRpbWVNZXRob2QqIGNyZWF0ZShFeGVjU3RhdGUqIGV4ZWMsIEpTR2xvYmFs
T2JqZWN0KiBnbG9iYWxPYmplY3QsIGNvbnN0IFVTdHJpbmcmIG5hbWUsIEJpbmRpbmdzOjpNZXRo
b2RMaXN0JiBsaXN0KQogICAgIHsKICAgICAgICAgLy8gRklYTUU6IGRlcHJlY2F0ZWRHZXRET01T
dHJ1Y3R1cmUgdXNlcyB0aGUgcHJvdG90eXBlIG9mZiBvZiB0aGUgd3JvbmcgZ2xvYmFsIG9iamVj
dAogICAgICAgICAvLyBXZSBuZWVkIHRvIHBhc3MgaW4gdGhlIHJpZ2h0IGdsb2JhbCBvYmplY3Qg
Zm9yICJpIi4KQEAgLTE0MSw3ICsxNDEsNyBAQCBwcml2YXRlOgogICAgIHsKICAgICB9CiAKLSAg
ICB2b2lkIGZpbmlzaENyZWF0aW9uKEpTR2xvYmFsRGF0YSYgZ2xvYmFsRGF0YSwgY29uc3QgSWRl
bnRpZmllciYgbmFtZSkKKyAgICB2b2lkIGZpbmlzaENyZWF0aW9uKEpTR2xvYmFsRGF0YSYgZ2xv
YmFsRGF0YSwgY29uc3QgVVN0cmluZyYgbmFtZSkKICAgICB7CiAgICAgICAgIEJhc2U6OmZpbmlz
aENyZWF0aW9uKGdsb2JhbERhdGEsIG5hbWUpOwogICAgICAgICBBU1NFUlQoaW5oZXJpdHMoJnNf
aW5mbykpOwpAQCAtMTUwLDEwICsxNTAsMTAgQEAgcHJpdmF0ZToKIAogY29uc3QgQ2xhc3NJbmZv
IEphdmFSdW50aW1lTWV0aG9kOjpzX2luZm8gPSB7ICJKYXZhUnVudGltZU1ldGhvZCIsICZSdW50
aW1lTWV0aG9kOjpzX2luZm8sIDAsIDAsIENSRUFURV9NRVRIT0RfVEFCTEUoSmF2YVJ1bnRpbWVN
ZXRob2QpIH07CiAKLUpTVmFsdWUgSmF2YUluc3RhbmNlOjpnZXRNZXRob2QoRXhlY1N0YXRlKiBl
eGVjLCBjb25zdCBJZGVudGlmaWVyJiBwcm9wZXJ0eU5hbWUpCitKU1ZhbHVlIEphdmFJbnN0YW5j
ZTo6Z2V0TWV0aG9kKEV4ZWNTdGF0ZSogZXhlYywgUHJvcGVydHlOYW1lIHByb3BlcnR5TmFtZSkK
IHsKICAgICBNZXRob2RMaXN0IG1ldGhvZExpc3QgPSBnZXRDbGFzcygpLT5tZXRob2RzTmFtZWQo
cHJvcGVydHlOYW1lLCB0aGlzKTsKLSAgICByZXR1cm4gSmF2YVJ1bnRpbWVNZXRob2Q6OmNyZWF0
ZShleGVjLCBleGVjLT5sZXhpY2FsR2xvYmFsT2JqZWN0KCksIHByb3BlcnR5TmFtZSwgbWV0aG9k
TGlzdCk7CisgICAgcmV0dXJuIEphdmFSdW50aW1lTWV0aG9kOjpjcmVhdGUoZXhlYywgZXhlYy0+
bGV4aWNhbEdsb2JhbE9iamVjdCgpLCBwcm9wZXJ0eU5hbWUudXN0cmluZygpLCBtZXRob2RMaXN0
KTsKIH0KIAogSlNWYWx1ZSBKYXZhSW5zdGFuY2U6Omludm9rZU1ldGhvZChFeGVjU3RhdGUqIGV4
ZWMsIFJ1bnRpbWVNZXRob2QqIHJ1bnRpbWVNZXRob2QpCkluZGV4OiBTb3VyY2UvV2ViQ29yZS9i
cmlkZ2Uvam5pL2pzYy9KYXZhSW5zdGFuY2VKU0MuaAo9PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2Vi
Q29yZS9icmlkZ2Uvam5pL2pzYy9KYXZhSW5zdGFuY2VKU0MuaAkocmV2aXNpb24gMTE2NjY3KQor
KysgU291cmNlL1dlYkNvcmUvYnJpZGdlL2puaS9qc2MvSmF2YUluc3RhbmNlSlNDLmgJKHdvcmtp
bmcgY29weSkKQEAgLTUzLDcgKzUzLDcgQEAgcHVibGljOgogICAgIHZpcnR1YWwgSlNWYWx1ZSB2
YWx1ZU9mKEV4ZWNTdGF0ZSopIGNvbnN0OwogICAgIHZpcnR1YWwgSlNWYWx1ZSBkZWZhdWx0VmFs
dWUoRXhlY1N0YXRlKiwgUHJlZmVycmVkUHJpbWl0aXZlVHlwZSkgY29uc3Q7CiAKLSAgICB2aXJ0
dWFsIEpTVmFsdWUgZ2V0TWV0aG9kKEV4ZWNTdGF0ZSogZXhlYywgY29uc3QgSWRlbnRpZmllciYg
cHJvcGVydHlOYW1lKTsKKyAgICB2aXJ0dWFsIEpTVmFsdWUgZ2V0TWV0aG9kKEV4ZWNTdGF0ZSog
ZXhlYywgUHJvcGVydHlOYW1lIHByb3BlcnR5TmFtZSk7CiAgICAgdmlydHVhbCBKU1ZhbHVlIGlu
dm9rZU1ldGhvZChFeGVjU3RhdGUqIGV4ZWMsIFJ1bnRpbWVNZXRob2QqIG1ldGhvZCk7CiAKICAg
ICBqb2JqZWN0IGphdmFJbnN0YW5jZSgpIGNvbnN0IHsgcmV0dXJuIG1faW5zdGFuY2UtPmluc3Rh
bmNlKCk7IH0KSW5kZXg6IFNvdXJjZS9XZWJDb3JlL2JyaWRnZS9qc2MvQnJpZGdlSlNDLmgKPT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PQotLS0gU291cmNlL1dlYkNvcmUvYnJpZGdlL2pzYy9CcmlkZ2VKU0MuaAkocmV2aXNp
b24gMTE2NjY3KQorKysgU291cmNlL1dlYkNvcmUvYnJpZGdlL2pzYy9CcmlkZ2VKU0MuaAkod29y
a2luZyBjb3B5KQpAQCAtNjIsOSArNjIsOSBAQCBjbGFzcyBDbGFzcyB7CiAgICAgV1RGX01BS0Vf
Tk9OQ09QWUFCTEUoQ2xhc3MpOyBXVEZfTUFLRV9GQVNUX0FMTE9DQVRFRDsKIHB1YmxpYzoKICAg
ICBDbGFzcygpIHsgfQotICAgIHZpcnR1YWwgTWV0aG9kTGlzdCBtZXRob2RzTmFtZWQoY29uc3Qg
SWRlbnRpZmllciYsIEluc3RhbmNlKikgY29uc3QgPSAwOwotICAgIHZpcnR1YWwgRmllbGQqIGZp
ZWxkTmFtZWQoY29uc3QgSWRlbnRpZmllciYsIEluc3RhbmNlKikgY29uc3QgPSAwOwotICAgIHZp
cnR1YWwgSlNWYWx1ZSBmYWxsYmFja09iamVjdChFeGVjU3RhdGUqLCBJbnN0YW5jZSosIGNvbnN0
IElkZW50aWZpZXImKSB7IHJldHVybiBqc1VuZGVmaW5lZCgpOyB9CisgICAgdmlydHVhbCBNZXRo
b2RMaXN0IG1ldGhvZHNOYW1lZChQcm9wZXJ0eU5hbWUsIEluc3RhbmNlKikgY29uc3QgPSAwOwor
ICAgIHZpcnR1YWwgRmllbGQqIGZpZWxkTmFtZWQoUHJvcGVydHlOYW1lLCBJbnN0YW5jZSopIGNv
bnN0ID0gMDsKKyAgICB2aXJ0dWFsIEpTVmFsdWUgZmFsbGJhY2tPYmplY3QoRXhlY1N0YXRlKiwg
SW5zdGFuY2UqLCBQcm9wZXJ0eU5hbWUpIHsgcmV0dXJuIGpzVW5kZWZpbmVkKCk7IH0KIAogICAg
IHZpcnR1YWwgfkNsYXNzKCkgeyB9CiB9OwpAQCAtODksOSArODksOSBAQCBwdWJsaWM6CiAgICAg
dm9pZCB3aWxsSW52YWxpZGF0ZVJ1bnRpbWVPYmplY3QoKTsKIAogICAgIC8vIFJldHVybnMgZmFs
c2UgaWYgdGhlIHZhbHVlIHdhcyBub3Qgc2V0IHN1Y2Nlc3NmdWxseS4KLSAgICB2aXJ0dWFsIGJv
b2wgc2V0VmFsdWVPZlVuZGVmaW5lZEZpZWxkKEV4ZWNTdGF0ZSosIGNvbnN0IElkZW50aWZpZXIm
LCBKU1ZhbHVlKSB7IHJldHVybiBmYWxzZTsgfQorICAgIHZpcnR1YWwgYm9vbCBzZXRWYWx1ZU9m
VW5kZWZpbmVkRmllbGQoRXhlY1N0YXRlKiwgUHJvcGVydHlOYW1lLCBKU1ZhbHVlKSB7IHJldHVy
biBmYWxzZTsgfQogCi0gICAgdmlydHVhbCBKU1ZhbHVlIGdldE1ldGhvZChFeGVjU3RhdGUqIGV4
ZWMsIGNvbnN0IElkZW50aWZpZXImIHByb3BlcnR5TmFtZSkgPSAwOworICAgIHZpcnR1YWwgSlNW
YWx1ZSBnZXRNZXRob2QoRXhlY1N0YXRlKiBleGVjLCBQcm9wZXJ0eU5hbWUgcHJvcGVydHlOYW1l
KSA9IDA7CiAgICAgdmlydHVhbCBKU1ZhbHVlIGludm9rZU1ldGhvZChFeGVjU3RhdGUqLCBSdW50
aW1lTWV0aG9kKiBtZXRob2QpID0gMDsKIAogICAgIHZpcnR1YWwgYm9vbCBzdXBwb3J0c0ludm9r
ZURlZmF1bHRNZXRob2QoKSBjb25zdCB7IHJldHVybiBmYWxzZTsgfQpAQCAtMTEwLDkgKzExMCw5
IEBAIHB1YmxpYzoKIAogICAgIHZpcnR1YWwgfkluc3RhbmNlKCk7CiAKLSAgICB2aXJ0dWFsIGJv
b2wgZ2V0T3duUHJvcGVydHlTbG90KEpTT2JqZWN0KiwgRXhlY1N0YXRlKiwgY29uc3QgSWRlbnRp
ZmllciYsIFByb3BlcnR5U2xvdCYpIHsgcmV0dXJuIGZhbHNlOyB9Ci0gICAgdmlydHVhbCBib29s
IGdldE93blByb3BlcnR5RGVzY3JpcHRvcihKU09iamVjdCosIEV4ZWNTdGF0ZSosIGNvbnN0IElk
ZW50aWZpZXImLCBQcm9wZXJ0eURlc2NyaXB0b3ImKSB7IHJldHVybiBmYWxzZTsgfQotICAgIHZp
cnR1YWwgdm9pZCBwdXQoSlNPYmplY3QqLCBFeGVjU3RhdGUqLCBjb25zdCBJZGVudGlmaWVyJiwg
SlNWYWx1ZSwgUHV0UHJvcGVydHlTbG90JikgeyB9CisgICAgdmlydHVhbCBib29sIGdldE93blBy
b3BlcnR5U2xvdChKU09iamVjdCosIEV4ZWNTdGF0ZSosIFByb3BlcnR5TmFtZSwgUHJvcGVydHlT
bG90JikgeyByZXR1cm4gZmFsc2U7IH0KKyAgICB2aXJ0dWFsIGJvb2wgZ2V0T3duUHJvcGVydHlE
ZXNjcmlwdG9yKEpTT2JqZWN0KiwgRXhlY1N0YXRlKiwgUHJvcGVydHlOYW1lLCBQcm9wZXJ0eURl
c2NyaXB0b3ImKSB7IHJldHVybiBmYWxzZTsgfQorICAgIHZpcnR1YWwgdm9pZCBwdXQoSlNPYmpl
Y3QqLCBFeGVjU3RhdGUqLCBQcm9wZXJ0eU5hbWUsIEpTVmFsdWUsIFB1dFByb3BlcnR5U2xvdCYp
IHsgfQogCiBwcm90ZWN0ZWQ6CiAgICAgdmlydHVhbCB2b2lkIHZpcnR1YWxCZWdpbigpIHsgfQpJ
bmRleDogU291cmNlL1dlYkNvcmUvYnJpZGdlL29iamMvb2JqY19jbGFzcy5oCj09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0K
LS0tIFNvdXJjZS9XZWJDb3JlL2JyaWRnZS9vYmpjL29iamNfY2xhc3MuaAkocmV2aXNpb24gMTE2
NjY3KQorKysgU291cmNlL1dlYkNvcmUvYnJpZGdlL29iamMvb2JqY19jbGFzcy5oCSh3b3JraW5n
IGNvcHkpCkBAIC00MSwxMCArNDEsMTAgQEAgcHVibGljOgogICAgIC8vIFJldHVybiB0aGUgY2Fj
aGVkIE9iakMgb2YgdGhlIHNwZWNpZmllZCBuYW1lLgogICAgIHN0YXRpYyBPYmpjQ2xhc3MgKmNs
YXNzRm9ySXNBKENsYXNzU3RydWN0UHRyKTsKICAgICAKLSAgICB2aXJ0dWFsIE1ldGhvZExpc3Qg
bWV0aG9kc05hbWVkKGNvbnN0IElkZW50aWZpZXImLCBJbnN0YW5jZSAqaW5zdGFuY2UpIGNvbnN0
OwotICAgIHZpcnR1YWwgRmllbGQgKmZpZWxkTmFtZWQoY29uc3QgSWRlbnRpZmllciYsIEluc3Rh
bmNlICppbnN0YW5jZSkgY29uc3Q7CisgICAgdmlydHVhbCBNZXRob2RMaXN0IG1ldGhvZHNOYW1l
ZChQcm9wZXJ0eU5hbWUsIEluc3RhbmNlICppbnN0YW5jZSkgY29uc3Q7CisgICAgdmlydHVhbCBG
aWVsZCAqZmllbGROYW1lZChQcm9wZXJ0eU5hbWUsIEluc3RhbmNlICppbnN0YW5jZSkgY29uc3Q7
CiAKLSAgICB2aXJ0dWFsIEpTVmFsdWUgZmFsbGJhY2tPYmplY3QoRXhlY1N0YXRlICpleGVjLCBJ
bnN0YW5jZSAqaW5zdGFuY2UsIGNvbnN0IElkZW50aWZpZXIgJnByb3BlcnR5TmFtZSk7CisgICAg
dmlydHVhbCBKU1ZhbHVlIGZhbGxiYWNrT2JqZWN0KEV4ZWNTdGF0ZSAqZXhlYywgSW5zdGFuY2Ug
Kmluc3RhbmNlLCBQcm9wZXJ0eU5hbWUgcHJvcGVydHlOYW1lKTsKICAgICAKICAgICBDbGFzc1N0
cnVjdFB0ciBpc2EoKSB7IHJldHVybiBfaXNhOyB9CiAgICAgCkluZGV4OiBTb3VyY2UvV2ViQ29y
ZS9icmlkZ2Uvb2JqYy9vYmpjX2NsYXNzLm1tCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9XZWJDb3Jl
L2JyaWRnZS9vYmpjL29iamNfY2xhc3MubW0JKHJldmlzaW9uIDExNjY2NykKKysrIFNvdXJjZS9X
ZWJDb3JlL2JyaWRnZS9vYmpjL29iamNfY2xhc3MubW0JKHdvcmtpbmcgY29weSkKQEAgLTk1LDcg
Kzk1LDcgQEAgc3RhdGljIGlubGluZSB2b2lkIGNvbnZlcnRKU01ldGhvZE5hbWVUbwogICAgIH0K
IH0KIAotTWV0aG9kTGlzdCBPYmpjQ2xhc3M6Om1ldGhvZHNOYW1lZChjb25zdCBJZGVudGlmaWVy
JiBpZGVudGlmaWVyLCBJbnN0YW5jZSopIGNvbnN0CitNZXRob2RMaXN0IE9iamNDbGFzczo6bWV0
aG9kc05hbWVkKFByb3BlcnR5TmFtZSBpZGVudGlmaWVyLCBJbnN0YW5jZSopIGNvbnN0CiB7CiAg
ICAgTWV0aG9kTGlzdCBtZXRob2RMaXN0OwogICAgIGlmIChNZXRob2QqIG1ldGhvZCA9IG1fbWV0
aG9kQ2FjaGUuZ2V0KGlkZW50aWZpZXIuaW1wbCgpKSkgewpAQCAtMTAzLDcgKzEwMyw3IEBAIE1l
dGhvZExpc3QgT2JqY0NsYXNzOjptZXRob2RzTmFtZWQoY29uc3QKICAgICAgICAgcmV0dXJuIG1l
dGhvZExpc3Q7CiAgICAgfQogCi0gICAgQ1N0cmluZyBqc05hbWUgPSBpZGVudGlmaWVyLmFzY2lp
KCk7CisgICAgQ1N0cmluZyBqc05hbWUgPSBpZGVudGlmaWVyLnVzdHJpbmcoKS5hc2NpaSgpOwog
ICAgIEpTTmFtZUNvbnZlcnNpb25CdWZmZXIgYnVmZmVyOwogICAgIGNvbnZlcnRKU01ldGhvZE5h
bWVUb09iamMoanNOYW1lLCBidWZmZXIpOwogICAgIFJldGFpblB0cjxDRlN0cmluZ1JlZj4gbWV0
aG9kTmFtZShBZG9wdENGLCBDRlN0cmluZ0NyZWF0ZVdpdGhDU3RyaW5nKE5VTEwsIGJ1ZmZlci5k
YXRhKCksIGtDRlN0cmluZ0VuY29kaW5nQVNDSUkpKTsKQEAgLTE0Myw3ICsxNDMsNyBAQCBNZXRo
b2RMaXN0IE9iamNDbGFzczo6bWV0aG9kc05hbWVkKGNvbnN0CiAgICAgcmV0dXJuIG1ldGhvZExp
c3Q7CiB9CiAKLUZpZWxkKiBPYmpjQ2xhc3M6OmZpZWxkTmFtZWQoY29uc3QgSWRlbnRpZmllciYg
aWRlbnRpZmllciwgSW5zdGFuY2UqIGluc3RhbmNlKSBjb25zdAorRmllbGQqIE9iamNDbGFzczo6
ZmllbGROYW1lZChQcm9wZXJ0eU5hbWUgaWRlbnRpZmllciwgSW5zdGFuY2UqIGluc3RhbmNlKSBj
b25zdAogewogICAgIEZpZWxkKiBmaWVsZCA9IG1fZmllbGRDYWNoZS5nZXQoaWRlbnRpZmllci5p
bXBsKCkpOwogICAgIGlmIChmaWVsZCkKQEAgLTE1MSw3ICsxNTEsNyBAQCBGaWVsZCogT2JqY0Ns
YXNzOjpmaWVsZE5hbWVkKGNvbnN0IElkZW50CiAKICAgICBDbGFzc1N0cnVjdFB0ciB0aGlzQ2xh
c3MgPSBfaXNhOwogCi0gICAgQ1N0cmluZyBqc05hbWUgPSBpZGVudGlmaWVyLmFzY2lpKCk7Cisg
ICAgQ1N0cmluZyBqc05hbWUgPSBpZGVudGlmaWVyLnVzdHJpbmcoKS5hc2NpaSgpOwogICAgIFJl
dGFpblB0cjxDRlN0cmluZ1JlZj4gZmllbGROYW1lKEFkb3B0Q0YsIENGU3RyaW5nQ3JlYXRlV2l0
aENTdHJpbmcoTlVMTCwganNOYW1lLmRhdGEoKSwga0NGU3RyaW5nRW5jb2RpbmdBU0NJSSkpOwog
ICAgIGlkIHRhcmdldE9iamVjdCA9IChzdGF0aWNfY2FzdDxPYmpjSW5zdGFuY2UqPihpbnN0YW5j
ZSkpLT5nZXRPYmplY3QoKTsKICAgICBpZCBhdHRyaWJ1dGVzID0gW3RhcmdldE9iamVjdCBhdHRy
aWJ1dGVLZXlzXTsKQEAgLTIyMSwxNCArMjIxLDE0IEBAIEZpZWxkKiBPYmpjQ2xhc3M6OmZpZWxk
TmFtZWQoY29uc3QgSWRlbnQKICAgICByZXR1cm4gZmllbGQ7CiB9CiAKLUpTVmFsdWUgT2JqY0Ns
YXNzOjpmYWxsYmFja09iamVjdChFeGVjU3RhdGUqIGV4ZWMsIEluc3RhbmNlKiBpbnN0YW5jZSwg
Y29uc3QgSWRlbnRpZmllciAmcHJvcGVydHlOYW1lKQorSlNWYWx1ZSBPYmpjQ2xhc3M6OmZhbGxi
YWNrT2JqZWN0KEV4ZWNTdGF0ZSogZXhlYywgSW5zdGFuY2UqIGluc3RhbmNlLCBQcm9wZXJ0eU5h
bWUgcHJvcGVydHlOYW1lKQogewogICAgIE9iamNJbnN0YW5jZSogb2JqY0luc3RhbmNlID0gc3Rh
dGljX2Nhc3Q8T2JqY0luc3RhbmNlKj4oaW5zdGFuY2UpOwogICAgIGlkIHRhcmdldE9iamVjdCA9
IG9iamNJbnN0YW5jZS0+Z2V0T2JqZWN0KCk7CiAgICAgCiAgICAgaWYgKCFbdGFyZ2V0T2JqZWN0
IHJlc3BvbmRzVG9TZWxlY3RvcjpAc2VsZWN0b3IoaW52b2tlVW5kZWZpbmVkTWV0aG9kRnJvbVdl
YlNjcmlwdDp3aXRoQXJndW1lbnRzOildKQogICAgICAgICByZXR1cm4ganNVbmRlZmluZWQoKTsK
LSAgICByZXR1cm4gT2JqY0ZhbGxiYWNrT2JqZWN0SW1wOjpjcmVhdGUoZXhlYywgZXhlYy0+bGV4
aWNhbEdsb2JhbE9iamVjdCgpLCBvYmpjSW5zdGFuY2UsIHByb3BlcnR5TmFtZSk7CisgICAgcmV0
dXJuIE9iamNGYWxsYmFja09iamVjdEltcDo6Y3JlYXRlKGV4ZWMsIGV4ZWMtPmxleGljYWxHbG9i
YWxPYmplY3QoKSwgb2JqY0luc3RhbmNlLCBwcm9wZXJ0eU5hbWUuaW1wbCgpKTsKIH0KIAogfQpJ
bmRleDogU291cmNlL1dlYkNvcmUvYnJpZGdlL29iamMvb2JqY19pbnN0YW5jZS5oCj09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT0KLS0tIFNvdXJjZS9XZWJDb3JlL2JyaWRnZS9vYmpjL29iamNfaW5zdGFuY2UuaAkocmV2aXNp
b24gMTE2NjY3KQorKysgU291cmNlL1dlYkNvcmUvYnJpZGdlL29iamMvb2JqY19pbnN0YW5jZS5o
CSh3b3JraW5nIGNvcHkpCkBAIC00NywxNCArNDcsMTQgQEAgcHVibGljOgogICAgIHZpcnR1YWwg
SlNWYWx1ZSB2YWx1ZU9mKEV4ZWNTdGF0ZSopIGNvbnN0OwogICAgIHZpcnR1YWwgSlNWYWx1ZSBk
ZWZhdWx0VmFsdWUoRXhlY1N0YXRlKiwgUHJlZmVycmVkUHJpbWl0aXZlVHlwZSkgY29uc3Q7CiAK
LSAgICB2aXJ0dWFsIEpTVmFsdWUgZ2V0TWV0aG9kKEV4ZWNTdGF0ZSogZXhlYywgY29uc3QgSWRl
bnRpZmllciYgcHJvcGVydHlOYW1lKTsKKyAgICB2aXJ0dWFsIEpTVmFsdWUgZ2V0TWV0aG9kKEV4
ZWNTdGF0ZSogZXhlYywgUHJvcGVydHlOYW1lIHByb3BlcnR5TmFtZSk7CiAgICAgSlNWYWx1ZSBp
bnZva2VPYmpjTWV0aG9kKEV4ZWNTdGF0ZSosIE9iamNNZXRob2QqIG1ldGhvZCk7CiAgICAgdmly
dHVhbCBKU1ZhbHVlIGludm9rZU1ldGhvZChFeGVjU3RhdGUqLCBSdW50aW1lTWV0aG9kKiBtZXRo
b2QpOwogICAgIHZpcnR1YWwgYm9vbCBzdXBwb3J0c0ludm9rZURlZmF1bHRNZXRob2QoKSBjb25z
dDsKICAgICB2aXJ0dWFsIEpTVmFsdWUgaW52b2tlRGVmYXVsdE1ldGhvZChFeGVjU3RhdGUqKTsK
IAotICAgIEpTVmFsdWUgZ2V0VmFsdWVPZlVuZGVmaW5lZEZpZWxkKEV4ZWNTdGF0ZSosIGNvbnN0
IElkZW50aWZpZXImKSBjb25zdDsKLSAgICB2aXJ0dWFsIGJvb2wgc2V0VmFsdWVPZlVuZGVmaW5l
ZEZpZWxkKEV4ZWNTdGF0ZSosIGNvbnN0IElkZW50aWZpZXImLCBKU1ZhbHVlKTsKKyAgICBKU1Zh
bHVlIGdldFZhbHVlT2ZVbmRlZmluZWRGaWVsZChFeGVjU3RhdGUqLCBQcm9wZXJ0eU5hbWUpIGNv
bnN0OworICAgIHZpcnR1YWwgYm9vbCBzZXRWYWx1ZU9mVW5kZWZpbmVkRmllbGQoRXhlY1N0YXRl
KiwgUHJvcGVydHlOYW1lLCBKU1ZhbHVlKTsKIAogICAgIE9iamVjdFN0cnVjdFB0ciBnZXRPYmpl
Y3QoKSBjb25zdCB7IHJldHVybiBfaW5zdGFuY2UuZ2V0KCk7IH0KICAgICAKSW5kZXg6IFNvdXJj
ZS9XZWJDb3JlL2JyaWRnZS9vYmpjL29iamNfaW5zdGFuY2UubW0KPT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291
cmNlL1dlYkNvcmUvYnJpZGdlL29iamMvb2JqY19pbnN0YW5jZS5tbQkocmV2aXNpb24gMTE2NjY3
KQorKysgU291cmNlL1dlYkNvcmUvYnJpZGdlL29iamMvb2JqY19pbnN0YW5jZS5tbQkod29ya2lu
ZyBjb3B5KQpAQCAtMTgxLDcgKzE4MSw3IEBAIGJvb2wgT2JqY0luc3RhbmNlOjpzdXBwb3J0c0lu
dm9rZURlZmF1bHQKIAogY2xhc3MgT2JqQ1J1bnRpbWVNZXRob2QgOiBwdWJsaWMgUnVudGltZU1l
dGhvZCB7CiBwdWJsaWM6Ci0gICAgc3RhdGljIE9iakNSdW50aW1lTWV0aG9kKiBjcmVhdGUoRXhl
Y1N0YXRlKiBleGVjLCBKU0dsb2JhbE9iamVjdCogZ2xvYmFsT2JqZWN0LCBjb25zdCBJZGVudGlm
aWVyJiBuYW1lLCBCaW5kaW5nczo6TWV0aG9kTGlzdCYgbGlzdCkKKyAgICBzdGF0aWMgT2JqQ1J1
bnRpbWVNZXRob2QqIGNyZWF0ZShFeGVjU3RhdGUqIGV4ZWMsIEpTR2xvYmFsT2JqZWN0KiBnbG9i
YWxPYmplY3QsIGNvbnN0IFVTdHJpbmcmIG5hbWUsIEJpbmRpbmdzOjpNZXRob2RMaXN0JiBsaXN0
KQogICAgIHsKICAgICAgICAgLy8gRklYTUU6IGRlcHJlY2F0ZWRHZXRET01TdHJ1Y3R1cmUgdXNl
cyB0aGUgcHJvdG90eXBlIG9mZiBvZiB0aGUgd3JvbmcgZ2xvYmFsIG9iamVjdAogICAgICAgICAv
LyBXZSBuZWVkIHRvIHBhc3MgaW4gdGhlIHJpZ2h0IGdsb2JhbCBvYmplY3QgZm9yICJpIi4KQEAg
LTIwNiw3ICsyMDYsNyBAQCBwcml2YXRlOgogICAgIHsKICAgICB9CiAKLSAgICB2b2lkIGZpbmlz
aENyZWF0aW9uKEpTR2xvYmFsRGF0YSYgZ2xvYmFsRGF0YSwgY29uc3QgSWRlbnRpZmllciYgbmFt
ZSkKKyAgICB2b2lkIGZpbmlzaENyZWF0aW9uKEpTR2xvYmFsRGF0YSYgZ2xvYmFsRGF0YSwgY29u
c3QgVVN0cmluZyYgbmFtZSkKICAgICB7CiAgICAgICAgIEJhc2U6OmZpbmlzaENyZWF0aW9uKGds
b2JhbERhdGEsIG5hbWUpOwogICAgICAgICBBU1NFUlQoaW5oZXJpdHMoJnNfaW5mbykpOwpAQCAt
MjE1LDEwICsyMTUsMTAgQEAgcHJpdmF0ZToKIAogY29uc3QgQ2xhc3NJbmZvIE9iakNSdW50aW1l
TWV0aG9kOjpzX2luZm8gPSB7ICJPYmpDUnVudGltZU1ldGhvZCIsICZSdW50aW1lTWV0aG9kOjpz
X2luZm8sIDAsIDAsIENSRUFURV9NRVRIT0RfVEFCTEUoT2JqQ1J1bnRpbWVNZXRob2QpIH07CiAK
LUpTVmFsdWUgT2JqY0luc3RhbmNlOjpnZXRNZXRob2QoRXhlY1N0YXRlKiBleGVjLCBjb25zdCBJ
ZGVudGlmaWVyJiBwcm9wZXJ0eU5hbWUpCitKU1ZhbHVlIE9iamNJbnN0YW5jZTo6Z2V0TWV0aG9k
KEV4ZWNTdGF0ZSogZXhlYywgUHJvcGVydHlOYW1lIHByb3BlcnR5TmFtZSkKIHsKICAgICBNZXRo
b2RMaXN0IG1ldGhvZExpc3QgPSBnZXRDbGFzcygpLT5tZXRob2RzTmFtZWQocHJvcGVydHlOYW1l
LCB0aGlzKTsKLSAgICByZXR1cm4gT2JqQ1J1bnRpbWVNZXRob2Q6OmNyZWF0ZShleGVjLCBleGVj
LT5sZXhpY2FsR2xvYmFsT2JqZWN0KCksIHByb3BlcnR5TmFtZSwgbWV0aG9kTGlzdCk7CisgICAg
cmV0dXJuIE9iakNSdW50aW1lTWV0aG9kOjpjcmVhdGUoZXhlYywgZXhlYy0+bGV4aWNhbEdsb2Jh
bE9iamVjdCgpLCBwcm9wZXJ0eU5hbWUudXN0cmluZygpLCBtZXRob2RMaXN0KTsKIH0KIAogSlNW
YWx1ZSBPYmpjSW5zdGFuY2U6Omludm9rZU1ldGhvZChFeGVjU3RhdGUqIGV4ZWMsIFJ1bnRpbWVN
ZXRob2QqIHJ1bnRpbWVNZXRob2QpCkBAIC00MDEsNyArNDAxLDcgQEAgSlNWYWx1ZSBPYmpjSW5z
dGFuY2U6Omludm9rZURlZmF1bHRNZXRobwogICAgIHJldHVybiBjb25zdF9jYXN0PEpTVmFsdWUm
PihyZXN1bHQpOwogfQogCi1ib29sIE9iamNJbnN0YW5jZTo6c2V0VmFsdWVPZlVuZGVmaW5lZEZp
ZWxkKEV4ZWNTdGF0ZSogZXhlYywgY29uc3QgSWRlbnRpZmllciYgcHJvcGVydHksIEpTVmFsdWUg
YVZhbHVlKQorYm9vbCBPYmpjSW5zdGFuY2U6OnNldFZhbHVlT2ZVbmRlZmluZWRGaWVsZChFeGVj
U3RhdGUqIGV4ZWMsIFByb3BlcnR5TmFtZSBwcm9wZXJ0eSwgSlNWYWx1ZSBhVmFsdWUpCiB7CiAg
ICAgaWQgdGFyZ2V0T2JqZWN0ID0gZ2V0T2JqZWN0KCk7CiAgICAgaWYgKCFbdGFyZ2V0T2JqZWN0
IHJlc3BvbmRzVG9TZWxlY3RvcjpAc2VsZWN0b3Ioc2V0VmFsdWU6Zm9yVW5kZWZpbmVkS2V5Oild
KQpAQCAtNDE4LDcgKzQxOCw3IEBAIGJvb2wgT2JqY0luc3RhbmNlOjpzZXRWYWx1ZU9mVW5kZWZp
bmVkRmkKICAgICAgICAgT2JqY1ZhbHVlIG9iamNWYWx1ZSA9IGNvbnZlcnRWYWx1ZVRvT2JqY1Zh
bHVlKGV4ZWMsIGFWYWx1ZSwgT2JqY09iamVjdFR5cGUpOwogCiAgICAgICAgIEB0cnkgewotICAg
ICAgICAgICAgW3RhcmdldE9iamVjdCBzZXRWYWx1ZTpvYmpjVmFsdWUub2JqZWN0VmFsdWUgZm9y
VW5kZWZpbmVkS2V5OltOU1N0cmluZyBzdHJpbmdXaXRoQ1N0cmluZzpwcm9wZXJ0eS5hc2NpaSgp
LmRhdGEoKSBlbmNvZGluZzpOU0FTQ0lJU3RyaW5nRW5jb2RpbmddXTsKKyAgICAgICAgICAgIFt0
YXJnZXRPYmplY3Qgc2V0VmFsdWU6b2JqY1ZhbHVlLm9iamVjdFZhbHVlIGZvclVuZGVmaW5lZEtl
eTpbTlNTdHJpbmcgc3RyaW5nV2l0aENTdHJpbmc6cHJvcGVydHkudXN0cmluZygpLmFzY2lpKCku
ZGF0YSgpIGVuY29kaW5nOk5TQVNDSUlTdHJpbmdFbmNvZGluZ11dOwogICAgICAgICB9IEBjYXRj
aChOU0V4Y2VwdGlvbiogbG9jYWxFeGNlcHRpb24pIHsKICAgICAgICAgICAgIC8vIERvIG5vdGhp
bmcuICBDbGFzcyBkaWQgbm90IG92ZXJyaWRlIHZhbHVlRm9yVW5kZWZpbmVkS2V5Oi4KICAgICAg
ICAgfQpAQCAtNDI5LDcgKzQyOSw3IEBAIGJvb2wgT2JqY0luc3RhbmNlOjpzZXRWYWx1ZU9mVW5k
ZWZpbmVkRmkKICAgICByZXR1cm4gdHJ1ZTsKIH0KIAotSlNWYWx1ZSBPYmpjSW5zdGFuY2U6Omdl
dFZhbHVlT2ZVbmRlZmluZWRGaWVsZChFeGVjU3RhdGUqIGV4ZWMsIGNvbnN0IElkZW50aWZpZXIm
IHByb3BlcnR5KSBjb25zdAorSlNWYWx1ZSBPYmpjSW5zdGFuY2U6OmdldFZhbHVlT2ZVbmRlZmlu
ZWRGaWVsZChFeGVjU3RhdGUqIGV4ZWMsIFByb3BlcnR5TmFtZSBwcm9wZXJ0eSkgY29uc3QKIHsK
ICAgICBKU1ZhbHVlIHJlc3VsdCA9IGpzVW5kZWZpbmVkKCk7CiAgICAgCkBAIC00NDQsNyArNDQ0
LDcgQEAgSlNWYWx1ZSBPYmpjSW5zdGFuY2U6OmdldFZhbHVlT2ZVbmRlZmluZQogICAgICAgICBz
ZXRHbG9iYWxFeGNlcHRpb24obmlsKTsKICAgICAKICAgICAgICAgQHRyeSB7Ci0gICAgICAgICAg
ICBpZCBvYmpjVmFsdWUgPSBbdGFyZ2V0T2JqZWN0IHZhbHVlRm9yVW5kZWZpbmVkS2V5OltOU1N0
cmluZyBzdHJpbmdXaXRoQ1N0cmluZzpwcm9wZXJ0eS5hc2NpaSgpLmRhdGEoKSBlbmNvZGluZzpO
U0FTQ0lJU3RyaW5nRW5jb2RpbmddXTsKKyAgICAgICAgICAgIGlkIG9iamNWYWx1ZSA9IFt0YXJn
ZXRPYmplY3QgdmFsdWVGb3JVbmRlZmluZWRLZXk6W05TU3RyaW5nIHN0cmluZ1dpdGhDU3RyaW5n
OnByb3BlcnR5LnVzdHJpbmcoKS5hc2NpaSgpLmRhdGEoKSBlbmNvZGluZzpOU0FTQ0lJU3RyaW5n
RW5jb2RpbmddXTsKICAgICAgICAgICAgIHJlc3VsdCA9IGNvbnZlcnRPYmpjVmFsdWVUb1ZhbHVl
KGV4ZWMsICZvYmpjVmFsdWUsIE9iamNPYmplY3RUeXBlLCBtX3Jvb3RPYmplY3QuZ2V0KCkpOwog
ICAgICAgICB9IEBjYXRjaChOU0V4Y2VwdGlvbiogbG9jYWxFeGNlcHRpb24pIHsKICAgICAgICAg
ICAgIC8vIERvIG5vdGhpbmcuICBDbGFzcyBkaWQgbm90IG92ZXJyaWRlIHZhbHVlRm9yVW5kZWZp
bmVkS2V5Oi4KSW5kZXg6IFNvdXJjZS9XZWJDb3JlL2JyaWRnZS9vYmpjL29iamNfcnVudGltZS5o
Cj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT0KLS0tIFNvdXJjZS9XZWJDb3JlL2JyaWRnZS9vYmpjL29iamNfcnVudGltZS5o
CShyZXZpc2lvbiAxMTY2NjcpCisrKyBTb3VyY2UvV2ViQ29yZS9icmlkZ2Uvb2JqYy9vYmpjX3J1
bnRpbWUuaAkod29ya2luZyBjb3B5KQpAQCAtOTQsNyArOTQsNyBAQCBjbGFzcyBPYmpjRmFsbGJh
Y2tPYmplY3RJbXAgOiBwdWJsaWMgSlNOCiBwdWJsaWM6CiAgICAgdHlwZWRlZiBKU05vbkZpbmFs
T2JqZWN0IEJhc2U7CiAKLSAgICBzdGF0aWMgT2JqY0ZhbGxiYWNrT2JqZWN0SW1wKiBjcmVhdGUo
RXhlY1N0YXRlKiBleGVjLCBKU0dsb2JhbE9iamVjdCogZ2xvYmFsT2JqZWN0LCBPYmpjSW5zdGFu
Y2UqIGluc3RhbmNlLCBjb25zdCBJZGVudGlmaWVyJiBwcm9wZXJ0eU5hbWUpCisgICAgc3RhdGlj
IE9iamNGYWxsYmFja09iamVjdEltcCogY3JlYXRlKEV4ZWNTdGF0ZSogZXhlYywgSlNHbG9iYWxP
YmplY3QqIGdsb2JhbE9iamVjdCwgT2JqY0luc3RhbmNlKiBpbnN0YW5jZSwgY29uc3QgVVN0cmlu
ZyYgcHJvcGVydHlOYW1lKQogICAgIHsKICAgICAgICAgLy8gRklYTUU6IGRlcHJlY2F0ZWRHZXRE
T01TdHJ1Y3R1cmUgdXNlcyB0aGUgcHJvdG90eXBlIG9mZiBvZiB0aGUgd3JvbmcgZ2xvYmFsIG9i
amVjdAogICAgICAgICBTdHJ1Y3R1cmUqIGRvbVN0cnVjdHVyZSA9IFdlYkNvcmU6OmRlcHJlY2F0
ZWRHZXRET01TdHJ1Y3R1cmU8T2JqY0ZhbGxiYWNrT2JqZWN0SW1wPihleGVjKTsKQEAgLTEwNSw3
ICsxMDUsNyBAQCBwdWJsaWM6CiAKICAgICBzdGF0aWMgY29uc3QgQ2xhc3NJbmZvIHNfaW5mbzsK
IAotICAgIGNvbnN0IElkZW50aWZpZXImIHByb3BlcnR5TmFtZSgpIGNvbnN0IHsgcmV0dXJuIF9p
dGVtOyB9CisgICAgY29uc3QgVVN0cmluZyYgcHJvcGVydHlOYW1lKCkgY29uc3QgeyByZXR1cm4g
X2l0ZW07IH0KIAogICAgIHN0YXRpYyBPYmplY3RQcm90b3R5cGUqIGNyZWF0ZVByb3RvdHlwZShF
eGVjU3RhdGUqLCBKU0dsb2JhbE9iamVjdCogZ2xvYmFsT2JqZWN0KQogICAgIHsKQEAgLTEyMSwy
MCArMTIxLDIwIEBAIHByb3RlY3RlZDoKICAgICB2b2lkIGZpbmlzaENyZWF0aW9uKEpTR2xvYmFs
T2JqZWN0Kik7CiAKIHByaXZhdGU6Ci0gICAgT2JqY0ZhbGxiYWNrT2JqZWN0SW1wKEpTR2xvYmFs
T2JqZWN0KiwgU3RydWN0dXJlKiwgT2JqY0luc3RhbmNlKiwgY29uc3QgSWRlbnRpZmllciYgcHJv
cGVydHlOYW1lKTsKKyAgICBPYmpjRmFsbGJhY2tPYmplY3RJbXAoSlNHbG9iYWxPYmplY3QqLCBT
dHJ1Y3R1cmUqLCBPYmpjSW5zdGFuY2UqLCBjb25zdCBVU3RyaW5nJiBwcm9wZXJ0eU5hbWUpOwog
ICAgIHN0YXRpYyB2b2lkIGRlc3Ryb3koSlNDZWxsKik7CiAgICAgc3RhdGljIGNvbnN0IHVuc2ln
bmVkIFN0cnVjdHVyZUZsYWdzID0gT3ZlcnJpZGVzR2V0T3duUHJvcGVydHlTbG90IHwgSlNPYmpl
Y3Q6OlN0cnVjdHVyZUZsYWdzOwotICAgIHN0YXRpYyBib29sIGdldE93blByb3BlcnR5U2xvdChK
U0NlbGwqLCBFeGVjU3RhdGUqLCBjb25zdCBJZGVudGlmaWVyJiwgUHJvcGVydHlTbG90Jik7Ci0g
ICAgc3RhdGljIGJvb2wgZ2V0T3duUHJvcGVydHlEZXNjcmlwdG9yKEpTT2JqZWN0KiwgRXhlY1N0
YXRlKiwgY29uc3QgSWRlbnRpZmllciYsIFByb3BlcnR5RGVzY3JpcHRvciYpOwotICAgIHN0YXRp
YyB2b2lkIHB1dChKU0NlbGwqLCBFeGVjU3RhdGUqLCBjb25zdCBJZGVudGlmaWVyJiBwcm9wZXJ0
eU5hbWUsIEpTVmFsdWUsIFB1dFByb3BlcnR5U2xvdCYpOworICAgIHN0YXRpYyBib29sIGdldE93
blByb3BlcnR5U2xvdChKU0NlbGwqLCBFeGVjU3RhdGUqLCBQcm9wZXJ0eU5hbWUsIFByb3BlcnR5
U2xvdCYpOworICAgIHN0YXRpYyBib29sIGdldE93blByb3BlcnR5RGVzY3JpcHRvcihKU09iamVj
dCosIEV4ZWNTdGF0ZSosIFByb3BlcnR5TmFtZSwgUHJvcGVydHlEZXNjcmlwdG9yJik7CisgICAg
c3RhdGljIHZvaWQgcHV0KEpTQ2VsbCosIEV4ZWNTdGF0ZSosIFByb3BlcnR5TmFtZSBwcm9wZXJ0
eU5hbWUsIEpTVmFsdWUsIFB1dFByb3BlcnR5U2xvdCYpOwogICAgIHN0YXRpYyBDYWxsVHlwZSBn
ZXRDYWxsRGF0YShKU0NlbGwqLCBDYWxsRGF0YSYpOwotICAgIHN0YXRpYyBib29sIGRlbGV0ZVBy
b3BlcnR5KEpTQ2VsbCosIEV4ZWNTdGF0ZSosIGNvbnN0IElkZW50aWZpZXImIHByb3BlcnR5TmFt
ZSk7CisgICAgc3RhdGljIGJvb2wgZGVsZXRlUHJvcGVydHkoSlNDZWxsKiwgRXhlY1N0YXRlKiwg
UHJvcGVydHlOYW1lIHByb3BlcnR5TmFtZSk7CiAgICAgc3RhdGljIEpTVmFsdWUgZGVmYXVsdFZh
bHVlKGNvbnN0IEpTT2JqZWN0KiwgRXhlY1N0YXRlKiwgUHJlZmVycmVkUHJpbWl0aXZlVHlwZSk7
CiAKICAgICBib29sIHRvQm9vbGVhbihFeGVjU3RhdGUqKSBjb25zdDsgLy8gRklYTUU6IEN1cnJl
bnRseSB0aGlzIGlzIGJyb2tlbiBiZWNhdXNlIG5vbmUgb2YgdGhlIHN1cGVyY2xhc3NlcyBhcmUg
bWFya2VkIHZpcnR1YWwuIFdlIG5lZWQgdG8gc29sdmUgdGhpcyBpbiB0aGUgbG9uZ2VyIHRlcm0u
CiAKICAgICBSZWZQdHI8T2JqY0luc3RhbmNlPiBfaW5zdGFuY2U7Ci0gICAgSWRlbnRpZmllciBf
aXRlbTsKKyAgICBVU3RyaW5nIF9pdGVtOwogfTsKIAogfSAvLyBuYW1lc3BhY2UgQmluZGluZ3MK
SW5kZXg6IFNvdXJjZS9XZWJDb3JlL2JyaWRnZS9vYmpjL29iamNfcnVudGltZS5tbQo9PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09Ci0tLSBTb3VyY2UvV2ViQ29yZS9icmlkZ2Uvb2JqYy9vYmpjX3J1bnRpbWUubW0JKHJldmlz
aW9uIDExNjY2NykKKysrIFNvdXJjZS9XZWJDb3JlL2JyaWRnZS9vYmpjL29iamNfcnVudGltZS5t
bQkod29ya2luZyBjb3B5KQpAQCAtMTkyLDcgKzE5Miw3IEBAIHVuc2lnbmVkIGludCBPYmpjQXJy
YXk6OmdldExlbmd0aCgpIGNvbnMKIAogY29uc3QgQ2xhc3NJbmZvIE9iamNGYWxsYmFja09iamVj
dEltcDo6c19pbmZvID0geyAiT2JqY0ZhbGxiYWNrT2JqZWN0IiwgJkpTTm9uRmluYWxPYmplY3Q6
OnNfaW5mbywgMCwgMCwgQ1JFQVRFX01FVEhPRF9UQUJMRShPYmpjRmFsbGJhY2tPYmplY3RJbXAp
IH07CiAKLU9iamNGYWxsYmFja09iamVjdEltcDo6T2JqY0ZhbGxiYWNrT2JqZWN0SW1wKEpTR2xv
YmFsT2JqZWN0KiBnbG9iYWxPYmplY3QsIFN0cnVjdHVyZSogc3RydWN0dXJlLCBPYmpjSW5zdGFu
Y2UqIGksIGNvbnN0IElkZW50aWZpZXImIHByb3BlcnR5TmFtZSkKK09iamNGYWxsYmFja09iamVj
dEltcDo6T2JqY0ZhbGxiYWNrT2JqZWN0SW1wKEpTR2xvYmFsT2JqZWN0KiBnbG9iYWxPYmplY3Qs
IFN0cnVjdHVyZSogc3RydWN0dXJlLCBPYmpjSW5zdGFuY2UqIGksIGNvbnN0IFVTdHJpbmcmIHBy
b3BlcnR5TmFtZSkKICAgICA6IEpTTm9uRmluYWxPYmplY3QoZ2xvYmFsT2JqZWN0LT5nbG9iYWxE
YXRhKCksIHN0cnVjdHVyZSkKICAgICAsIF9pbnN0YW5jZShpKQogICAgICwgX2l0ZW0ocHJvcGVy
dHlOYW1lKQpAQCAtMjEwLDIxICsyMTAsMjEgQEAgdm9pZCBPYmpjRmFsbGJhY2tPYmplY3RJbXA6
OmZpbmlzaENyZWF0aQogICAgIEFTU0VSVChpbmhlcml0cygmc19pbmZvKSk7CiB9CiAKLWJvb2wg
T2JqY0ZhbGxiYWNrT2JqZWN0SW1wOjpnZXRPd25Qcm9wZXJ0eVNsb3QoSlNDZWxsKiwgRXhlY1N0
YXRlKiwgY29uc3QgSWRlbnRpZmllciYsIFByb3BlcnR5U2xvdCYgc2xvdCkKK2Jvb2wgT2JqY0Zh
bGxiYWNrT2JqZWN0SW1wOjpnZXRPd25Qcm9wZXJ0eVNsb3QoSlNDZWxsKiwgRXhlY1N0YXRlKiwg
UHJvcGVydHlOYW1lLCBQcm9wZXJ0eVNsb3QmIHNsb3QpCiB7CiAgICAgLy8ga2VlcCB0aGUgcHJv
dG90eXBlIGZyb20gZ2V0dGluZyBjYWxsZWQgaW5zdGVhZCBvZiBqdXN0IHJldHVybmluZyBmYWxz
ZQogICAgIHNsb3Quc2V0VW5kZWZpbmVkKCk7CiAgICAgcmV0dXJuIHRydWU7CiB9CiAKLWJvb2wg
T2JqY0ZhbGxiYWNrT2JqZWN0SW1wOjpnZXRPd25Qcm9wZXJ0eURlc2NyaXB0b3IoSlNPYmplY3Qq
LCBFeGVjU3RhdGUqLCBjb25zdCBJZGVudGlmaWVyJiwgUHJvcGVydHlEZXNjcmlwdG9yJiBkZXNj
cmlwdG9yKQorYm9vbCBPYmpjRmFsbGJhY2tPYmplY3RJbXA6OmdldE93blByb3BlcnR5RGVzY3Jp
cHRvcihKU09iamVjdCosIEV4ZWNTdGF0ZSosIFByb3BlcnR5TmFtZSwgUHJvcGVydHlEZXNjcmlw
dG9yJiBkZXNjcmlwdG9yKQogewogICAgIC8vIGtlZXAgdGhlIHByb3RvdHlwZSBmcm9tIGdldHRp
bmcgY2FsbGVkIGluc3RlYWQgb2YganVzdCByZXR1cm5pbmcgZmFsc2UKICAgICBkZXNjcmlwdG9y
LnNldFVuZGVmaW5lZCgpOwogICAgIHJldHVybiB0cnVlOwogfQogCi12b2lkIE9iamNGYWxsYmFj
a09iamVjdEltcDo6cHV0KEpTQ2VsbCosIEV4ZWNTdGF0ZSosIGNvbnN0IElkZW50aWZpZXImLCBK
U1ZhbHVlLCBQdXRQcm9wZXJ0eVNsb3QmKQordm9pZCBPYmpjRmFsbGJhY2tPYmplY3RJbXA6OnB1
dChKU0NlbGwqLCBFeGVjU3RhdGUqLCBQcm9wZXJ0eU5hbWUsIEpTVmFsdWUsIFB1dFByb3BlcnR5
U2xvdCYpCiB7CiB9CiAKQEAgLTI0OSw3ICsyNDksNyBAQCBzdGF0aWMgRW5jb2RlZEpTVmFsdWUg
SlNDX0hPU1RfQ0FMTCBjYWxsCiAgICAgaWYgKFt0YXJnZXRPYmplY3QgcmVzcG9uZHNUb1NlbGVj
dG9yOkBzZWxlY3RvcihpbnZva2VVbmRlZmluZWRNZXRob2RGcm9tV2ViU2NyaXB0OndpdGhBcmd1
bWVudHM6KV0pewogICAgICAgICBPYmpjQ2xhc3MqIG9iamNDbGFzcyA9IHN0YXRpY19jYXN0PE9i
amNDbGFzcyo+KG9iamNJbnN0YW5jZS0+Z2V0Q2xhc3MoKSk7CiAgICAgICAgIE93blB0cjxPYmpj
TWV0aG9kPiBmYWxsYmFja01ldGhvZChhZG9wdFB0cihuZXcgT2JqY01ldGhvZChvYmpjQ2xhc3Mt
PmlzYSgpLCBAc2VsZWN0b3IoaW52b2tlVW5kZWZpbmVkTWV0aG9kRnJvbVdlYlNjcmlwdDp3aXRo
QXJndW1lbnRzOikpKSk7Ci0gICAgICAgIGNvbnN0IElkZW50aWZpZXImIG5hbWVJZGVudGlmaWVy
ID0gc3RhdGljX2Nhc3Q8T2JqY0ZhbGxiYWNrT2JqZWN0SW1wKj4oZXhlYy0+Y2FsbGVlKCkpLT5w
cm9wZXJ0eU5hbWUoKTsKKyAgICAgICAgY29uc3QgVVN0cmluZyYgbmFtZUlkZW50aWZpZXIgPSBz
dGF0aWNfY2FzdDxPYmpjRmFsbGJhY2tPYmplY3RJbXAqPihleGVjLT5jYWxsZWUoKSktPnByb3Bl
cnR5TmFtZSgpOwogICAgICAgICBSZXRhaW5QdHI8Q0ZTdHJpbmdSZWY+IG5hbWUoQWRvcHRDRiwg
Q0ZTdHJpbmdDcmVhdGVXaXRoQ2hhcmFjdGVycygwLCBuYW1lSWRlbnRpZmllci5jaGFyYWN0ZXJz
KCksIG5hbWVJZGVudGlmaWVyLmxlbmd0aCgpKSk7CiAgICAgICAgIGZhbGxiYWNrTWV0aG9kLT5z
ZXRKYXZhU2NyaXB0TmFtZShuYW1lLmdldCgpKTsKICAgICAgICAgcmVzdWx0ID0gb2JqY0luc3Rh
bmNlLT5pbnZva2VPYmpjTWV0aG9kKGV4ZWMsIGZhbGxiYWNrTWV0aG9kLmdldCgpKTsKQEAgLTI3
MCw3ICsyNzAsNyBAQCBDYWxsVHlwZSBPYmpjRmFsbGJhY2tPYmplY3RJbXA6OmdldENhbGxECiAg
ICAgcmV0dXJuIENhbGxUeXBlSG9zdDsKIH0KIAotYm9vbCBPYmpjRmFsbGJhY2tPYmplY3RJbXA6
OmRlbGV0ZVByb3BlcnR5KEpTQ2VsbCosIEV4ZWNTdGF0ZSosIGNvbnN0IElkZW50aWZpZXImKQor
Ym9vbCBPYmpjRmFsbGJhY2tPYmplY3RJbXA6OmRlbGV0ZVByb3BlcnR5KEpTQ2VsbCosIEV4ZWNT
dGF0ZSosIFByb3BlcnR5TmFtZSkKIHsKICAgICByZXR1cm4gZmFsc2U7CiB9CkBAIC0yNzgsNyAr
Mjc4LDcgQEAgYm9vbCBPYmpjRmFsbGJhY2tPYmplY3RJbXA6OmRlbGV0ZVByb3BlcgogSlNWYWx1
ZSBPYmpjRmFsbGJhY2tPYmplY3RJbXA6OmRlZmF1bHRWYWx1ZShjb25zdCBKU09iamVjdCogb2Jq
ZWN0LCBFeGVjU3RhdGUqIGV4ZWMsIFByZWZlcnJlZFByaW1pdGl2ZVR5cGUpCiB7CiAgICAgY29u
c3QgT2JqY0ZhbGxiYWNrT2JqZWN0SW1wKiB0aGlzT2JqZWN0ID0ganNDYXN0PGNvbnN0IE9iamNG
YWxsYmFja09iamVjdEltcCo+KG9iamVjdCk7Ci0gICAgcmV0dXJuIHRoaXNPYmplY3QtPl9pbnN0
YW5jZS0+Z2V0VmFsdWVPZlVuZGVmaW5lZEZpZWxkKGV4ZWMsIHRoaXNPYmplY3QtPl9pdGVtKTsK
KyAgICByZXR1cm4gdGhpc09iamVjdC0+X2luc3RhbmNlLT5nZXRWYWx1ZU9mVW5kZWZpbmVkRmll
bGQoZXhlYywgSWRlbnRpZmllcihleGVjLCB0aGlzT2JqZWN0LT5faXRlbSkpOwogfQogCiBib29s
IE9iamNGYWxsYmFja09iamVjdEltcDo6dG9Cb29sZWFuKEV4ZWNTdGF0ZSAqKSBjb25zdApJbmRl
eDogU291cmNlL1dlYktpdDIvQ2hhbmdlTG9nCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9XZWJLaXQy
L0NoYW5nZUxvZwkocmV2aXNpb24gMTE2NzkyKQorKysgU291cmNlL1dlYktpdDIvQ2hhbmdlTG9n
CSh3b3JraW5nIGNvcHkpCkBAIC0xLDMgKzEsMzggQEAKKzIwMTItMDUtMTEgIEdhdmluIEJhcnJh
Y2xvdWdoICA8YmFycmFjbG91Z2hAYXBwbGUuY29tPgorCisgICAgICAgIEludHJvZHVjZSBQcm9w
ZXJ0eU5hbWUgY2xhc3MKKyAgICAgICAgaHR0cHM6Ly9idWdzLndlYmtpdC5vcmcvc2hvd19idWcu
Y2dpP2lkPTg2MjQxCisKKyAgICAgICAgUmV2aWV3ZWQgYnkgTk9CT0RZIChPT1BTISkuCisKKyAg
ICAgICAgUmVwbGFjZSAnY29uc3QgSWRlbnRpZmllciYnIGFyZ3VtZW50cyB0byBmdW5jdGlvbnMg
YWNjZXNzaW5nIG9iamVjdCBwcm9wZXJ0aWVzIHdpdGggYSBuZXcgJ1Byb3BlcnR5TmFtZScgdHlw
ZS4KKyAgICAgICAgVGhpcyBjaGFuZ2UgcGF2ZXMgdGhlIHdheSB0byBhbGxvdyBmb3IgcHJvcGVy
dGllcyBrZXllZCBieSB2YWx1ZXMgdGhhdCBhcmUgbm90IElkZW50aWZpZXJzLgorCisgICAgICAg
IFRoaXMgY2hhbmdlIGlzIGxhcmdlbHkgYSBtZWNoYW5pY2FsIGZpbmQgJiByZXBsYWNlLgorICAg
ICAgICBJdCBhbHNvIGNoYW5nZXMgSlNGdW5jdGlvbidzIGNvbnN0cnVjdG9yIHRvIHRha2UgYSBV
U3RyaW5nJiBpbnN0ZWFkIG9mIGFuIElkZW50aWZpZXImCisgICAgICAgIChzaW5jZSBpbiBzb21l
IGNhc2VzIHdlIGNhbiBubyBsb25nZXIgZ3VhcmFudGVlIHRoYXQgd2UnbGxsIGhhdmUgYW4gSWRl
bnRpZmllciksIGFuZAorICAgICAgICB1bmlmaWVzIElkZW50aWZpZXIncyBtZXRob2RzIHRvIG9i
dGFpbiBhcnJheSBpbmRpY2VzIG9udG8gUHJvcGVydHlOYW1lLgorCisgICAgICAgIFRoZSBuZXcg
UHJvcGVydHlOYW1lIGNsYXNzIHJldGFpbnMgdGhlIGFiaWxpdHkgdG8gc3VwcG9ydCAuaW1wbCgp
IGFuZCAudXN0cmluZygpLCBidXQKKyAgICAgICAgaW4gYSBmdXR1cmUgcGF0Y2ggd2UgbWF5IG5l
ZWQgdG8gcmV3b3JrIHRoaXMsIHNpbmNlIG5vdCBhbGwgUHJvcGVydHlOYW1lcyBzaG91bGQgYmUK
KyAgICAgICAgZXF1YWwgYmFzZWQgb24gdGhlaXIgc3RyaW5nIHJlcHJlc2VudGF0aW9uLgorCisg
ICAgICAgICogV2ViUHJvY2Vzcy9QbHVnaW5zL05ldHNjYXBlL0pTTlBNZXRob2QuY3BwOgorICAg
ICAgICAoV2ViS2l0OjpKU05QTWV0aG9kOjpmaW5pc2hDcmVhdGlvbik6CisgICAgICAgICogV2Vi
UHJvY2Vzcy9QbHVnaW5zL05ldHNjYXBlL0pTTlBNZXRob2QuaDoKKyAgICAgICAgKFdlYktpdDo6
SlNOUE1ldGhvZDo6Y3JlYXRlKToKKyAgICAgICAgKEpTTlBNZXRob2QpOgorICAgICAgICAqIFdl
YlByb2Nlc3MvUGx1Z2lucy9OZXRzY2FwZS9KU05QT2JqZWN0LmNwcDoKKyAgICAgICAgKFdlYktp
dDo6bnBJZGVudGlmaWVyRnJvbUlkZW50aWZpZXIpOgorICAgICAgICAoV2ViS2l0OjpKU05QT2Jq
ZWN0OjpnZXRPd25Qcm9wZXJ0eVNsb3QpOgorICAgICAgICAoV2ViS2l0OjpKU05QT2JqZWN0Ojpn
ZXRPd25Qcm9wZXJ0eURlc2NyaXB0b3IpOgorICAgICAgICAoV2ViS2l0OjpKU05QT2JqZWN0Ojpw
dXQpOgorICAgICAgICAoV2ViS2l0OjpKU05QT2JqZWN0OjpkZWxldGVQcm9wZXJ0eSk6CisgICAg
ICAgIChXZWJLaXQ6OkpTTlBPYmplY3Q6OnByb3BlcnR5R2V0dGVyKToKKyAgICAgICAgKFdlYktp
dDo6SlNOUE9iamVjdDo6bWV0aG9kR2V0dGVyKToKKyAgICAgICAgKiBXZWJQcm9jZXNzL1BsdWdp
bnMvTmV0c2NhcGUvSlNOUE9iamVjdC5oOgorICAgICAgICAoSlNOUE9iamVjdCk6CisKIDIwMTIt
MDUtMTEgIEd1c3Rhdm8gTm9yb25oYSBTaWx2YSAgPGduc0Bnbm9tZS5vcmc+CiAKICAgICAgICAg
UkVHUkVTU0lPTihyMTE2MjA1KTogW0dUS106IGJ1aWxkIG5vIGxvbmdlciBzdXBwb3J0cyB0aGlu
IGFyY2hpdmVzCkluZGV4OiBTb3VyY2UvV2ViS2l0Mi9XZWJQcm9jZXNzL1BsdWdpbnMvTmV0c2Nh
cGUvSlNOUE1ldGhvZC5jcHAKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL1dlYktpdDIvV2ViUHJvY2Vz
cy9QbHVnaW5zL05ldHNjYXBlL0pTTlBNZXRob2QuY3BwCShyZXZpc2lvbiAxMTY2NjcpCisrKyBT
b3VyY2UvV2ViS2l0Mi9XZWJQcm9jZXNzL1BsdWdpbnMvTmV0c2NhcGUvSlNOUE1ldGhvZC5jcHAJ
KHdvcmtpbmcgY29weSkKQEAgLTQ5LDcgKzQ5LDcgQEAgSlNOUE1ldGhvZDo6SlNOUE1ldGhvZChK
U0dsb2JhbE9iamVjdCogZwogewogfQogCi12b2lkIEpTTlBNZXRob2Q6OmZpbmlzaENyZWF0aW9u
KEpTR2xvYmFsRGF0YSYgZ2xvYmFsRGF0YSwgY29uc3QgSWRlbnRpZmllciYgbmFtZSkKK3ZvaWQg
SlNOUE1ldGhvZDo6ZmluaXNoQ3JlYXRpb24oSlNHbG9iYWxEYXRhJiBnbG9iYWxEYXRhLCBjb25z
dCBVU3RyaW5nJiBuYW1lKQogewogICAgIEJhc2U6OmZpbmlzaENyZWF0aW9uKGdsb2JhbERhdGEs
IG5hbWUpOwogICAgIEFTU0VSVChpbmhlcml0cygmc19pbmZvKSk7CkluZGV4OiBTb3VyY2UvV2Vi
S2l0Mi9XZWJQcm9jZXNzL1BsdWdpbnMvTmV0c2NhcGUvSlNOUE1ldGhvZC5oCj09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0K
LS0tIFNvdXJjZS9XZWJLaXQyL1dlYlByb2Nlc3MvUGx1Z2lucy9OZXRzY2FwZS9KU05QTWV0aG9k
LmgJKHJldmlzaW9uIDExNjY2NykKKysrIFNvdXJjZS9XZWJLaXQyL1dlYlByb2Nlc3MvUGx1Z2lu
cy9OZXRzY2FwZS9KU05QTWV0aG9kLmgJKHdvcmtpbmcgY29weSkKQEAgLTM5LDcgKzM5LDcgQEAg
Y2xhc3MgSlNOUE1ldGhvZCA6IHB1YmxpYyBKU0M6OkludGVybmFsRgogcHVibGljOgogICAgIHR5
cGVkZWYgSlNDOjpJbnRlcm5hbEZ1bmN0aW9uIEJhc2U7CiAKLSAgICBzdGF0aWMgSlNOUE1ldGhv
ZCogY3JlYXRlKEpTQzo6RXhlY1N0YXRlKiBleGVjLCBKU0M6OkpTR2xvYmFsT2JqZWN0KiBnbG9i
YWxPYmplY3QsIGNvbnN0IEpTQzo6SWRlbnRpZmllciYgbmFtZSwgTlBJZGVudGlmaWVyIG5wSWRl
bnQpCisgICAgc3RhdGljIEpTTlBNZXRob2QqIGNyZWF0ZShKU0M6OkV4ZWNTdGF0ZSogZXhlYywg
SlNDOjpKU0dsb2JhbE9iamVjdCogZ2xvYmFsT2JqZWN0LCBjb25zdCBKU0M6OlVTdHJpbmcmIG5h
bWUsIE5QSWRlbnRpZmllciBucElkZW50KQogICAgIHsKICAgICAgICAgSlNDOjpTdHJ1Y3R1cmUq
IHN0cnVjdHVyZSA9IGNyZWF0ZVN0cnVjdHVyZShleGVjLT5nbG9iYWxEYXRhKCksIGdsb2JhbE9i
amVjdCwgZ2xvYmFsT2JqZWN0LT5mdW5jdGlvblByb3RvdHlwZSgpKTsKICAgICAgICAgSlNOUE1l
dGhvZCogbWV0aG9kID0gbmV3IChKU0M6OmFsbG9jYXRlQ2VsbDxKU05QTWV0aG9kPigqZXhlYy0+
aGVhcCgpKSkgSlNOUE1ldGhvZChnbG9iYWxPYmplY3QsIHN0cnVjdHVyZSwgbnBJZGVudCk7CkBA
IC01Miw3ICs1Miw3IEBAIHB1YmxpYzoKICAgICBOUElkZW50aWZpZXIgbnBJZGVudGlmaWVyKCkg
Y29uc3QgeyByZXR1cm4gbV9ucElkZW50aWZpZXI7IH0KIAogcHJvdGVjdGVkOgotICAgIHZvaWQg
ZmluaXNoQ3JlYXRpb24oSlNDOjpKU0dsb2JhbERhdGEmLCBjb25zdCBKU0M6OklkZW50aWZpZXIm
IG5hbWUpOworICAgIHZvaWQgZmluaXNoQ3JlYXRpb24oSlNDOjpKU0dsb2JhbERhdGEmLCBjb25z
dCBKU0M6OlVTdHJpbmcmIG5hbWUpOwogCiBwcml2YXRlOiAgICAKICAgICBKU05QTWV0aG9kKEpT
Qzo6SlNHbG9iYWxPYmplY3QqLCBKU0M6OlN0cnVjdHVyZSosIE5QSWRlbnRpZmllcik7CkluZGV4
OiBTb3VyY2UvV2ViS2l0Mi9XZWJQcm9jZXNzL1BsdWdpbnMvTmV0c2NhcGUvSlNOUE9iamVjdC5j
cHAKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PQotLS0gU291cmNlL1dlYktpdDIvV2ViUHJvY2Vzcy9QbHVnaW5zL05ldHNj
YXBlL0pTTlBPYmplY3QuY3BwCShyZXZpc2lvbiAxMTY2NjcpCisrKyBTb3VyY2UvV2ViS2l0Mi9X
ZWJQcm9jZXNzL1BsdWdpbnMvTmV0c2NhcGUvSlNOUE9iamVjdC5jcHAJKHdvcmtpbmcgY29weSkK
QEAgLTQzLDcgKzQzLDcgQEAgdXNpbmcgbmFtZXNwYWNlIFdlYkNvcmU7CiAKIG5hbWVzcGFjZSBX
ZWJLaXQgewogCi1zdGF0aWMgTlBJZGVudGlmaWVyIG5wSWRlbnRpZmllckZyb21JZGVudGlmaWVy
KGNvbnN0IElkZW50aWZpZXImIGlkZW50aWZpZXIpCitzdGF0aWMgTlBJZGVudGlmaWVyIG5wSWRl
bnRpZmllckZyb21JZGVudGlmaWVyKFByb3BlcnR5TmFtZSBpZGVudGlmaWVyKQogewogICAgIHJl
dHVybiBzdGF0aWNfY2FzdDxOUElkZW50aWZpZXI+KElkZW50aWZpZXJSZXA6OmdldChpZGVudGlm
aWVyLnVzdHJpbmcoKS51dGY4KCkuZGF0YSgpKSk7CiB9CkBAIC0yNTIsNyArMjUyLDcgQEAgQ29u
c3RydWN0VHlwZSBKU05QT2JqZWN0OjpnZXRDb25zdHJ1Y3REYQogICAgIHJldHVybiBDb25zdHJ1
Y3RUeXBlSG9zdDsKIH0KIAotYm9vbCBKU05QT2JqZWN0OjpnZXRPd25Qcm9wZXJ0eVNsb3QoSlND
ZWxsKiBjZWxsLCBFeGVjU3RhdGUqIGV4ZWMsIGNvbnN0IElkZW50aWZpZXImIHByb3BlcnR5TmFt
ZSwgUHJvcGVydHlTbG90JiBzbG90KQorYm9vbCBKU05QT2JqZWN0OjpnZXRPd25Qcm9wZXJ0eVNs
b3QoSlNDZWxsKiBjZWxsLCBFeGVjU3RhdGUqIGV4ZWMsIFByb3BlcnR5TmFtZSBwcm9wZXJ0eU5h
bWUsIFByb3BlcnR5U2xvdCYgc2xvdCkKIHsKICAgICBKU05QT2JqZWN0KiB0aGlzT2JqZWN0ID0g
SlNDOjpqc0Nhc3Q8SlNOUE9iamVjdCo+KGNlbGwpOwogICAgIEFTU0VSVF9HQ19PQkpFQ1RfSU5I
RVJJVFModGhpc09iamVjdCwgJnNfaW5mbyk7CkBAIC0yNzgsNyArMjc4LDcgQEAgYm9vbCBKU05Q
T2JqZWN0OjpnZXRPd25Qcm9wZXJ0eVNsb3QoSlNDZQogICAgIHJldHVybiBmYWxzZTsKIH0KIAot
Ym9vbCBKU05QT2JqZWN0OjpnZXRPd25Qcm9wZXJ0eURlc2NyaXB0b3IoSlNPYmplY3QqIG9iamVj
dCwgRXhlY1N0YXRlKiBleGVjLCBjb25zdCBJZGVudGlmaWVyJiBwcm9wZXJ0eU5hbWUsIFByb3Bl
cnR5RGVzY3JpcHRvciYgZGVzY3JpcHRvcikKK2Jvb2wgSlNOUE9iamVjdDo6Z2V0T3duUHJvcGVy
dHlEZXNjcmlwdG9yKEpTT2JqZWN0KiBvYmplY3QsIEV4ZWNTdGF0ZSogZXhlYywgUHJvcGVydHlO
YW1lIHByb3BlcnR5TmFtZSwgUHJvcGVydHlEZXNjcmlwdG9yJiBkZXNjcmlwdG9yKQogewogICAg
IEpTTlBPYmplY3QqIHRoaXNPYmplY3QgPSBqc0Nhc3Q8SlNOUE9iamVjdCo+KG9iamVjdCk7CiAg
ICAgQVNTRVJUX0dDX09CSkVDVF9JTkhFUklUUyh0aGlzT2JqZWN0LCAmc19pbmZvKTsKQEAgLTMw
OCw3ICszMDgsNyBAQCBib29sIEpTTlBPYmplY3Q6OmdldE93blByb3BlcnR5RGVzY3JpcHRvCiAg
ICAgcmV0dXJuIGZhbHNlOwogfQogCi12b2lkIEpTTlBPYmplY3Q6OnB1dChKU0NlbGwqIGNlbGws
IEV4ZWNTdGF0ZSogZXhlYywgY29uc3QgSWRlbnRpZmllciYgcHJvcGVydHlOYW1lLCBKU1ZhbHVl
IHZhbHVlLCBQdXRQcm9wZXJ0eVNsb3QmKQordm9pZCBKU05QT2JqZWN0OjpwdXQoSlNDZWxsKiBj
ZWxsLCBFeGVjU3RhdGUqIGV4ZWMsIFByb3BlcnR5TmFtZSBwcm9wZXJ0eU5hbWUsIEpTVmFsdWUg
dmFsdWUsIFB1dFByb3BlcnR5U2xvdCYpCiB7CiAgICAgSlNOUE9iamVjdCogdGhpc09iamVjdCA9
IEpTQzo6anNDYXN0PEpTTlBPYmplY3QqPihjZWxsKTsKICAgICBBU1NFUlRfR0NfT0JKRUNUX0lO
SEVSSVRTKHRoaXNPYmplY3QsICZzX2luZm8pOwpAQCAtMzQ3LDcgKzM0Nyw3IEBAIHZvaWQgSlNO
UE9iamVjdDo6cHV0KEpTQ2VsbCogY2VsbCwgRXhlY1MKICAgICByZWxlYXNlTlBWYXJpYW50VmFs
dWUoJnZhcmlhbnQpOwogfQogCi1ib29sIEpTTlBPYmplY3Q6OmRlbGV0ZVByb3BlcnR5KEpTQ2Vs
bCogY2VsbCwgRXhlY1N0YXRlKiBleGVjLCBjb25zdCBJZGVudGlmaWVyJiBwcm9wZXJ0eU5hbWUp
Citib29sIEpTTlBPYmplY3Q6OmRlbGV0ZVByb3BlcnR5KEpTQ2VsbCogY2VsbCwgRXhlY1N0YXRl
KiBleGVjLCBQcm9wZXJ0eU5hbWUgcHJvcGVydHlOYW1lKQogewogICAgIHJldHVybiBqc0Nhc3Q8
SlNOUE9iamVjdCo+KGNlbGwpLT5kZWxldGVQcm9wZXJ0eShleGVjLCBucElkZW50aWZpZXJGcm9t
SWRlbnRpZmllcihwcm9wZXJ0eU5hbWUpKTsKIH0KQEAgLTQzNiw3ICs0MzYsNyBAQCB2b2lkIEpT
TlBPYmplY3Q6OmdldE93blByb3BlcnR5TmFtZXMoSlNPCiAgICAgbnBuTWVtRnJlZShpZGVudGlm
aWVycyk7CiB9CiAKLUpTVmFsdWUgSlNOUE9iamVjdDo6cHJvcGVydHlHZXR0ZXIoRXhlY1N0YXRl
KiBleGVjLCBKU1ZhbHVlIHNsb3RCYXNlLCBjb25zdCBJZGVudGlmaWVyJiBwcm9wZXJ0eU5hbWUp
CitKU1ZhbHVlIEpTTlBPYmplY3Q6OnByb3BlcnR5R2V0dGVyKEV4ZWNTdGF0ZSogZXhlYywgSlNW
YWx1ZSBzbG90QmFzZSwgUHJvcGVydHlOYW1lIHByb3BlcnR5TmFtZSkKIHsKICAgICBKU05QT2Jq
ZWN0KiB0aGlzT2JqID0gc3RhdGljX2Nhc3Q8SlNOUE9iamVjdCo+KGFzT2JqZWN0KHNsb3RCYXNl
KSk7CiAgICAgQVNTRVJUX0dDX09CSkVDVF9JTkhFUklUUyh0aGlzT2JqLCAmc19pbmZvKTsKQEAg
LTQ3Miw3ICs0NzIsNyBAQCBKU1ZhbHVlIEpTTlBPYmplY3Q6OnByb3BlcnR5R2V0dGVyKEV4ZWNT
CiAgICAgcmV0dXJuIHByb3BlcnR5VmFsdWU7CiB9CiAKLUpTVmFsdWUgSlNOUE9iamVjdDo6bWV0
aG9kR2V0dGVyKEV4ZWNTdGF0ZSogZXhlYywgSlNWYWx1ZSBzbG90QmFzZSwgY29uc3QgSWRlbnRp
ZmllciYgbWV0aG9kTmFtZSkKK0pTVmFsdWUgSlNOUE9iamVjdDo6bWV0aG9kR2V0dGVyKEV4ZWNT
dGF0ZSogZXhlYywgSlNWYWx1ZSBzbG90QmFzZSwgUHJvcGVydHlOYW1lIG1ldGhvZE5hbWUpCiB7
CiAgICAgSlNOUE9iamVjdCogdGhpc09iaiA9IHN0YXRpY19jYXN0PEpTTlBPYmplY3QqPihhc09i
amVjdChzbG90QmFzZSkpOwogICAgIEFTU0VSVF9HQ19PQkpFQ1RfSU5IRVJJVFModGhpc09iaiwg
JnNfaW5mbyk7CkBAIC00ODEsNyArNDgxLDcgQEAgSlNWYWx1ZSBKU05QT2JqZWN0OjptZXRob2RH
ZXR0ZXIoRXhlY1N0YQogICAgICAgICByZXR1cm4gdGhyb3dJbnZhbGlkQWNjZXNzRXJyb3IoZXhl
Yyk7CiAKICAgICBOUElkZW50aWZpZXIgbnBJZGVudGlmaWVyID0gbnBJZGVudGlmaWVyRnJvbUlk
ZW50aWZpZXIobWV0aG9kTmFtZSk7Ci0gICAgcmV0dXJuIEpTTlBNZXRob2Q6OmNyZWF0ZShleGVj
LCB0aGlzT2JqLT5nbG9iYWxPYmplY3QoKSwgbWV0aG9kTmFtZSwgbnBJZGVudGlmaWVyKTsKKyAg
ICByZXR1cm4gSlNOUE1ldGhvZDo6Y3JlYXRlKGV4ZWMsIHRoaXNPYmotPmdsb2JhbE9iamVjdCgp
LCBtZXRob2ROYW1lLnVzdHJpbmcoKSwgbnBJZGVudGlmaWVyKTsKIH0KIAogSlNPYmplY3QqIEpT
TlBPYmplY3Q6OnRocm93SW52YWxpZEFjY2Vzc0Vycm9yKEV4ZWNTdGF0ZSogZXhlYykKSW5kZXg6
IFNvdXJjZS9XZWJLaXQyL1dlYlByb2Nlc3MvUGx1Z2lucy9OZXRzY2FwZS9KU05QT2JqZWN0LmgK
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PQotLS0gU291cmNlL1dlYktpdDIvV2ViUHJvY2Vzcy9QbHVnaW5zL05ldHNjYXBl
L0pTTlBPYmplY3QuaAkocmV2aXNpb24gMTE2NjY3KQorKysgU291cmNlL1dlYktpdDIvV2ViUHJv
Y2Vzcy9QbHVnaW5zL05ldHNjYXBlL0pTTlBPYmplY3QuaAkod29ya2luZyBjb3B5KQpAQCAtODMs
MTkgKzgzLDE5IEBAIHByaXZhdGU6CiAgICAgc3RhdGljIEpTQzo6Q2FsbFR5cGUgZ2V0Q2FsbERh
dGEoSlNDOjpKU0NlbGwqLCBKU0M6OkNhbGxEYXRhJik7CiAgICAgc3RhdGljIEpTQzo6Q29uc3Ry
dWN0VHlwZSBnZXRDb25zdHJ1Y3REYXRhKEpTQzo6SlNDZWxsKiwgSlNDOjpDb25zdHJ1Y3REYXRh
Jik7CiAKLSAgICBzdGF0aWMgYm9vbCBnZXRPd25Qcm9wZXJ0eVNsb3QoSlNDOjpKU0NlbGwqLCBK
U0M6OkV4ZWNTdGF0ZSosIGNvbnN0IEpTQzo6SWRlbnRpZmllciYgcHJvcGVydHlOYW1lLCBKU0M6
OlByb3BlcnR5U2xvdCYpOwotICAgIHN0YXRpYyBib29sIGdldE93blByb3BlcnR5RGVzY3JpcHRv
cihKU0M6OkpTT2JqZWN0KiwgSlNDOjpFeGVjU3RhdGUqLCBjb25zdCBKU0M6OklkZW50aWZpZXIm
IHByb3BlcnR5TmFtZSwgSlNDOjpQcm9wZXJ0eURlc2NyaXB0b3ImKTsKLSAgICBzdGF0aWMgdm9p
ZCBwdXQoSlNDOjpKU0NlbGwqLCBKU0M6OkV4ZWNTdGF0ZSosIGNvbnN0IEpTQzo6SWRlbnRpZmll
ciYgcHJvcGVydHlOYW1lLCBKU0M6OkpTVmFsdWUsIEpTQzo6UHV0UHJvcGVydHlTbG90Jik7Cisg
ICAgc3RhdGljIGJvb2wgZ2V0T3duUHJvcGVydHlTbG90KEpTQzo6SlNDZWxsKiwgSlNDOjpFeGVj
U3RhdGUqLCBKU0M6OlByb3BlcnR5TmFtZSBwcm9wZXJ0eU5hbWUsIEpTQzo6UHJvcGVydHlTbG90
Jik7CisgICAgc3RhdGljIGJvb2wgZ2V0T3duUHJvcGVydHlEZXNjcmlwdG9yKEpTQzo6SlNPYmpl
Y3QqLCBKU0M6OkV4ZWNTdGF0ZSosIEpTQzo6UHJvcGVydHlOYW1lIHByb3BlcnR5TmFtZSwgSlND
OjpQcm9wZXJ0eURlc2NyaXB0b3ImKTsKKyAgICBzdGF0aWMgdm9pZCBwdXQoSlNDOjpKU0NlbGwq
LCBKU0M6OkV4ZWNTdGF0ZSosIEpTQzo6UHJvcGVydHlOYW1lIHByb3BlcnR5TmFtZSwgSlNDOjpK
U1ZhbHVlLCBKU0M6OlB1dFByb3BlcnR5U2xvdCYpOwogCi0gICAgc3RhdGljIGJvb2wgZGVsZXRl
UHJvcGVydHkoSlNDOjpKU0NlbGwqLCBKU0M6OkV4ZWNTdGF0ZSosIGNvbnN0IEpTQzo6SWRlbnRp
ZmllciYgcHJvcGVydHlOYW1lKTsKKyAgICBzdGF0aWMgYm9vbCBkZWxldGVQcm9wZXJ0eShKU0M6
OkpTQ2VsbCosIEpTQzo6RXhlY1N0YXRlKiwgSlNDOjpQcm9wZXJ0eU5hbWUgcHJvcGVydHlOYW1l
KTsKICAgICBzdGF0aWMgYm9vbCBkZWxldGVQcm9wZXJ0eUJ5SW5kZXgoSlNDOjpKU0NlbGwqLCBK
U0M6OkV4ZWNTdGF0ZSosIHVuc2lnbmVkIHByb3BlcnR5TmFtZSk7CiAKICAgICBib29sIGRlbGV0
ZVByb3BlcnR5KEpTQzo6RXhlY1N0YXRlKiwgTlBJZGVudGlmaWVyIHByb3BlcnR5TmFtZSk7CiAK
ICAgICBzdGF0aWMgdm9pZCBnZXRPd25Qcm9wZXJ0eU5hbWVzKEpTQzo6SlNPYmplY3QqLCBKU0M6
OkV4ZWNTdGF0ZSosIEpTQzo6UHJvcGVydHlOYW1lQXJyYXkmLCBKU0M6OkVudW1lcmF0aW9uTW9k
ZSk7CiAKLSAgICBzdGF0aWMgSlNDOjpKU1ZhbHVlIHByb3BlcnR5R2V0dGVyKEpTQzo6RXhlY1N0
YXRlKiwgSlNDOjpKU1ZhbHVlLCBjb25zdCBKU0M6OklkZW50aWZpZXImKTsKLSAgICBzdGF0aWMg
SlNDOjpKU1ZhbHVlIG1ldGhvZEdldHRlcihKU0M6OkV4ZWNTdGF0ZSosIEpTQzo6SlNWYWx1ZSwg
Y29uc3QgSlNDOjpJZGVudGlmaWVyJik7CisgICAgc3RhdGljIEpTQzo6SlNWYWx1ZSBwcm9wZXJ0
eUdldHRlcihKU0M6OkV4ZWNTdGF0ZSosIEpTQzo6SlNWYWx1ZSwgSlNDOjpQcm9wZXJ0eU5hbWUp
OworICAgIHN0YXRpYyBKU0M6OkpTVmFsdWUgbWV0aG9kR2V0dGVyKEpTQzo6RXhlY1N0YXRlKiwg
SlNDOjpKU1ZhbHVlLCBKU0M6OlByb3BlcnR5TmFtZSk7CiAgICAgc3RhdGljIEpTQzo6SlNPYmpl
Y3QqIHRocm93SW52YWxpZEFjY2Vzc0Vycm9yKEpTQzo6RXhlY1N0YXRlKik7CiAKICAgICBOUFJ1
bnRpbWVPYmplY3RNYXAqIG1fb2JqZWN0TWFwOwpJbmRleDogU291cmNlL1dlYktpdC9tYWMvQ2hh
bmdlTG9nCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9XZWJLaXQvbWFjL0NoYW5nZUxvZwkocmV2aXNp
b24gMTE2NzkyKQorKysgU291cmNlL1dlYktpdC9tYWMvQ2hhbmdlTG9nCSh3b3JraW5nIGNvcHkp
CkBAIC0xLDMgKzEsMzQgQEAKKzIwMTItMDUtMTEgIEdhdmluIEJhcnJhY2xvdWdoICA8YmFycmFj
bG91Z2hAYXBwbGUuY29tPgorCisgICAgICAgIEludHJvZHVjZSBQcm9wZXJ0eU5hbWUgY2xhc3MK
KyAgICAgICAgaHR0cHM6Ly9idWdzLndlYmtpdC5vcmcvc2hvd19idWcuY2dpP2lkPTg2MjQxCisK
KyAgICAgICAgUmV2aWV3ZWQgYnkgTk9CT0RZIChPT1BTISkuCisKKyAgICAgICAgUmVwbGFjZSAn
Y29uc3QgSWRlbnRpZmllciYnIGFyZ3VtZW50cyB0byBmdW5jdGlvbnMgYWNjZXNzaW5nIG9iamVj
dCBwcm9wZXJ0aWVzIHdpdGggYSBuZXcgJ1Byb3BlcnR5TmFtZScgdHlwZS4KKyAgICAgICAgVGhp
cyBjaGFuZ2UgcGF2ZXMgdGhlIHdheSB0byBhbGxvdyBmb3IgcHJvcGVydGllcyBrZXllZCBieSB2
YWx1ZXMgdGhhdCBhcmUgbm90IElkZW50aWZpZXJzLgorCisgICAgICAgIFRoaXMgY2hhbmdlIGlz
IGxhcmdlbHkgYSBtZWNoYW5pY2FsIGZpbmQgJiByZXBsYWNlLgorICAgICAgICBJdCBhbHNvIGNo
YW5nZXMgSlNGdW5jdGlvbidzIGNvbnN0cnVjdG9yIHRvIHRha2UgYSBVU3RyaW5nJiBpbnN0ZWFk
IG9mIGFuIElkZW50aWZpZXImCisgICAgICAgIChzaW5jZSBpbiBzb21lIGNhc2VzIHdlIGNhbiBu
byBsb25nZXIgZ3VhcmFudGVlIHRoYXQgd2UnbGxsIGhhdmUgYW4gSWRlbnRpZmllciksIGFuZAor
ICAgICAgICB1bmlmaWVzIElkZW50aWZpZXIncyBtZXRob2RzIHRvIG9idGFpbiBhcnJheSBpbmRp
Y2VzIG9udG8gUHJvcGVydHlOYW1lLgorCisgICAgICAgIFRoZSBuZXcgUHJvcGVydHlOYW1lIGNs
YXNzIHJldGFpbnMgdGhlIGFiaWxpdHkgdG8gc3VwcG9ydCAuaW1wbCgpIGFuZCAudXN0cmluZygp
LCBidXQKKyAgICAgICAgaW4gYSBmdXR1cmUgcGF0Y2ggd2UgbWF5IG5lZWQgdG8gcmV3b3JrIHRo
aXMsIHNpbmNlIG5vdCBhbGwgUHJvcGVydHlOYW1lcyBzaG91bGQgYmUKKyAgICAgICAgZXF1YWwg
YmFzZWQgb24gdGhlaXIgc3RyaW5nIHJlcHJlc2VudGF0aW9uLgorCisgICAgICAgICogUGx1Z2lu
cy9Ib3N0ZWQvUHJveHlJbnN0YW5jZS5oOgorICAgICAgICAoUHJveHlJbnN0YW5jZSk6CisgICAg
ICAgICogUGx1Z2lucy9Ib3N0ZWQvUHJveHlJbnN0YW5jZS5tbToKKyAgICAgICAgKFByb3h5Q2xh
c3MpOgorICAgICAgICAoV2ViS2l0OjpQcm94eUNsYXNzOjptZXRob2RzTmFtZWQpOgorICAgICAg
ICAoV2ViS2l0OjpQcm94eUNsYXNzOjpmaWVsZE5hbWVkKToKKyAgICAgICAgKFdlYktpdDo6UHJv
eHlSdW50aW1lTWV0aG9kOjpjcmVhdGUpOgorICAgICAgICAoV2ViS2l0OjpQcm94eVJ1bnRpbWVN
ZXRob2Q6OmZpbmlzaENyZWF0aW9uKToKKyAgICAgICAgKFdlYktpdDo6UHJveHlJbnN0YW5jZTo6
Z2V0TWV0aG9kKToKKyAgICAgICAgKFdlYktpdDo6UHJveHlJbnN0YW5jZTo6bWV0aG9kc05hbWVk
KToKKyAgICAgICAgKFdlYktpdDo6UHJveHlJbnN0YW5jZTo6ZmllbGROYW1lZCk6CisKIDIwMTIt
MDUtMTAgIEd5dXlvdW5nIEtpbSAgPGd5dXlvdW5nLmtpbUBzYW1zdW5nLmNvbT4KIAogICAgICAg
ICBNb3ZlIHJlc3VtZUFuaW1hdGlvbnMgdG8gdXNlIEludGVybmFscyBpbnRlcmZhY2UKSW5kZXg6
IFNvdXJjZS9XZWJLaXQvbWFjL1BsdWdpbnMvSG9zdGVkL1Byb3h5SW5zdGFuY2UuaAo9PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09Ci0tLSBTb3VyY2UvV2ViS2l0L21hYy9QbHVnaW5zL0hvc3RlZC9Qcm94eUluc3RhbmNlLmgJ
KHJldmlzaW9uIDExNjY2NykKKysrIFNvdXJjZS9XZWJLaXQvbWFjL1BsdWdpbnMvSG9zdGVkL1By
b3h5SW5zdGFuY2UuaAkod29ya2luZyBjb3B5KQpAQCAtNDYsOCArNDYsOCBAQCBwdWJsaWM6CiAg
ICAgfQogICAgIH5Qcm94eUluc3RhbmNlKCk7CiAKLSAgICBKU0M6OkJpbmRpbmdzOjpNZXRob2RM
aXN0IG1ldGhvZHNOYW1lZChjb25zdCBKU0M6OklkZW50aWZpZXImKTsKLSAgICBKU0M6OkJpbmRp
bmdzOjpGaWVsZCogZmllbGROYW1lZChjb25zdCBKU0M6OklkZW50aWZpZXImKTsKKyAgICBKU0M6
OkJpbmRpbmdzOjpNZXRob2RMaXN0IG1ldGhvZHNOYW1lZChKU0M6OlByb3BlcnR5TmFtZSk7Cisg
ICAgSlNDOjpCaW5kaW5nczo6RmllbGQqIGZpZWxkTmFtZWQoSlNDOjpQcm9wZXJ0eU5hbWUpOwog
CiAgICAgSlNDOjpKU1ZhbHVlIGZpZWxkVmFsdWUoSlNDOjpFeGVjU3RhdGUqLCBjb25zdCBKU0M6
OkJpbmRpbmdzOjpGaWVsZCopIGNvbnN0OwogICAgIHZvaWQgc2V0RmllbGRWYWx1ZShKU0M6OkV4
ZWNTdGF0ZSosIGNvbnN0IEpTQzo6QmluZGluZ3M6OkZpZWxkKiwgSlNDOjpKU1ZhbHVlKSBjb25z
dDsKQEAgLTY2LDcgKzY2LDcgQEAgcHJpdmF0ZToKIAogICAgIHZpcnR1YWwgSlNDOjpCaW5kaW5n
czo6Q2xhc3MqIGdldENsYXNzKCkgY29uc3Q7CiAKLSAgICB2aXJ0dWFsIEpTQzo6SlNWYWx1ZSBn
ZXRNZXRob2QoSlNDOjpFeGVjU3RhdGUqIGV4ZWMsIGNvbnN0IEpTQzo6SWRlbnRpZmllciYgcHJv
cGVydHlOYW1lKTsKKyAgICB2aXJ0dWFsIEpTQzo6SlNWYWx1ZSBnZXRNZXRob2QoSlNDOjpFeGVj
U3RhdGUqIGV4ZWMsIEpTQzo6UHJvcGVydHlOYW1lIHByb3BlcnR5TmFtZSk7CiAgICAgdmlydHVh
bCBKU0M6OkpTVmFsdWUgaW52b2tlTWV0aG9kKEpTQzo6RXhlY1N0YXRlKiwgSlNDOjpSdW50aW1l
TWV0aG9kKik7CiAKICAgICB2aXJ0dWFsIGJvb2wgc3VwcG9ydHNJbnZva2VEZWZhdWx0TWV0aG9k
KCkgY29uc3Q7CkluZGV4OiBTb3VyY2UvV2ViS2l0L21hYy9QbHVnaW5zL0hvc3RlZC9Qcm94eUlu
c3RhbmNlLm1tCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9XZWJLaXQvbWFjL1BsdWdpbnMvSG9zdGVk
L1Byb3h5SW5zdGFuY2UubW0JKHJldmlzaW9uIDExNjY2NykKKysrIFNvdXJjZS9XZWJLaXQvbWFj
L1BsdWdpbnMvSG9zdGVkL1Byb3h5SW5zdGFuY2UubW0JKHdvcmtpbmcgY29weSkKQEAgLTUwLDE2
ICs1MCwxNiBAQCBuYW1lc3BhY2UgV2ViS2l0IHsKIAogY2xhc3MgUHJveHlDbGFzcyA6IHB1Ymxp
YyBKU0M6OkJpbmRpbmdzOjpDbGFzcyB7CiBwcml2YXRlOgotICAgIHZpcnR1YWwgTWV0aG9kTGlz
dCBtZXRob2RzTmFtZWQoY29uc3QgSWRlbnRpZmllciYsIEluc3RhbmNlKikgY29uc3Q7Ci0gICAg
dmlydHVhbCBGaWVsZCogZmllbGROYW1lZChjb25zdCBJZGVudGlmaWVyJiwgSW5zdGFuY2UqKSBj
b25zdDsKKyAgICB2aXJ0dWFsIE1ldGhvZExpc3QgbWV0aG9kc05hbWVkKFByb3BlcnR5TmFtZSwg
SW5zdGFuY2UqKSBjb25zdDsKKyAgICB2aXJ0dWFsIEZpZWxkKiBmaWVsZE5hbWVkKFByb3BlcnR5
TmFtZSwgSW5zdGFuY2UqKSBjb25zdDsKIH07CiAKLU1ldGhvZExpc3QgUHJveHlDbGFzczo6bWV0
aG9kc05hbWVkKGNvbnN0IElkZW50aWZpZXImIGlkZW50aWZpZXIsIEluc3RhbmNlKiBpbnN0YW5j
ZSkgY29uc3QKK01ldGhvZExpc3QgUHJveHlDbGFzczo6bWV0aG9kc05hbWVkKFByb3BlcnR5TmFt
ZSBpZGVudGlmaWVyLCBJbnN0YW5jZSogaW5zdGFuY2UpIGNvbnN0CiB7CiAgICAgcmV0dXJuIHN0
YXRpY19jYXN0PFByb3h5SW5zdGFuY2UqPihpbnN0YW5jZSktPm1ldGhvZHNOYW1lZChpZGVudGlm
aWVyKTsKIH0KIAotRmllbGQqIFByb3h5Q2xhc3M6OmZpZWxkTmFtZWQoY29uc3QgSWRlbnRpZmll
ciYgaWRlbnRpZmllciwgSW5zdGFuY2UqIGluc3RhbmNlKSBjb25zdAorRmllbGQqIFByb3h5Q2xh
c3M6OmZpZWxkTmFtZWQoUHJvcGVydHlOYW1lIGlkZW50aWZpZXIsIEluc3RhbmNlKiBpbnN0YW5j
ZSkgY29uc3QKIHsKICAgICByZXR1cm4gc3RhdGljX2Nhc3Q8UHJveHlJbnN0YW5jZSo+KGluc3Rh
bmNlKS0+ZmllbGROYW1lZChpZGVudGlmaWVyKTsKIH0KQEAgLTE4MSw3ICsxODEsNyBAQCBjbGFz
cyBQcm94eVJ1bnRpbWVNZXRob2QgOiBwdWJsaWMgUnVudGltCiBwdWJsaWM6CiAgICAgdHlwZWRl
ZiBSdW50aW1lTWV0aG9kIEJhc2U7CiAKLSAgICBzdGF0aWMgUHJveHlSdW50aW1lTWV0aG9kKiBj
cmVhdGUoRXhlY1N0YXRlKiBleGVjLCBKU0dsb2JhbE9iamVjdCogZ2xvYmFsT2JqZWN0LCBjb25z
dCBJZGVudGlmaWVyJiBuYW1lLCBCaW5kaW5nczo6TWV0aG9kTGlzdCYgbGlzdCkKKyAgICBzdGF0
aWMgUHJveHlSdW50aW1lTWV0aG9kKiBjcmVhdGUoRXhlY1N0YXRlKiBleGVjLCBKU0dsb2JhbE9i
amVjdCogZ2xvYmFsT2JqZWN0LCBjb25zdCBVU3RyaW5nJiBuYW1lLCBCaW5kaW5nczo6TWV0aG9k
TGlzdCYgbGlzdCkKICAgICB7CiAgICAgICAgIC8vIEZJWE1FOiBkZXByZWNhdGVkR2V0RE9NU3Ry
dWN0dXJlIHVzZXMgdGhlIHByb3RvdHlwZSBvZmYgb2YgdGhlIHdyb25nIGdsb2JhbCBvYmplY3QK
ICAgICAgICAgLy8gZXhlYy1nbG9iYWxEYXRhKCkgaXMgYWxzbyBsaWtlbHkgd3JvbmcuCkBAIC0y
MDQsNyArMjA0LDcgQEAgcHJpdmF0ZToKICAgICB7CiAgICAgfQogCi0gICAgdm9pZCBmaW5pc2hD
cmVhdGlvbihKU0dsb2JhbERhdGEmIGdsb2JhbERhdGEsIGNvbnN0IElkZW50aWZpZXImIG5hbWUp
CisgICAgdm9pZCBmaW5pc2hDcmVhdGlvbihKU0dsb2JhbERhdGEmIGdsb2JhbERhdGEsIGNvbnN0
IFVTdHJpbmcmIG5hbWUpCiAgICAgewogICAgICAgICBCYXNlOjpmaW5pc2hDcmVhdGlvbihnbG9i
YWxEYXRhLCBuYW1lKTsKICAgICAgICAgQVNTRVJUKGluaGVyaXRzKCZzX2luZm8pKTsKQEAgLTIx
MywxMCArMjEzLDEwIEBAIHByaXZhdGU6CiAKIGNvbnN0IENsYXNzSW5mbyBQcm94eVJ1bnRpbWVN
ZXRob2Q6OnNfaW5mbyA9IHsgIlByb3h5UnVudGltZU1ldGhvZCIsICZSdW50aW1lTWV0aG9kOjpz
X2luZm8sIDAsIDAsIENSRUFURV9NRVRIT0RfVEFCTEUoUHJveHlSdW50aW1lTWV0aG9kKSB9Owog
Ci1KU1ZhbHVlIFByb3h5SW5zdGFuY2U6OmdldE1ldGhvZChKU0M6OkV4ZWNTdGF0ZSogZXhlYywg
Y29uc3QgSlNDOjpJZGVudGlmaWVyJiBwcm9wZXJ0eU5hbWUpCitKU1ZhbHVlIFByb3h5SW5zdGFu
Y2U6OmdldE1ldGhvZChKU0M6OkV4ZWNTdGF0ZSogZXhlYywgUHJvcGVydHlOYW1lIHByb3BlcnR5
TmFtZSkKIHsKICAgICBNZXRob2RMaXN0IG1ldGhvZExpc3QgPSBnZXRDbGFzcygpLT5tZXRob2Rz
TmFtZWQocHJvcGVydHlOYW1lLCB0aGlzKTsKLSAgICByZXR1cm4gUHJveHlSdW50aW1lTWV0aG9k
OjpjcmVhdGUoZXhlYywgZXhlYy0+bGV4aWNhbEdsb2JhbE9iamVjdCgpLCBwcm9wZXJ0eU5hbWUs
IG1ldGhvZExpc3QpOworICAgIHJldHVybiBQcm94eVJ1bnRpbWVNZXRob2Q6OmNyZWF0ZShleGVj
LCBleGVjLT5sZXhpY2FsR2xvYmFsT2JqZWN0KCksIHByb3BlcnR5TmFtZS5pbXBsKCksIG1ldGhv
ZExpc3QpOwogfQogCiBKU1ZhbHVlIFByb3h5SW5zdGFuY2U6Omludm9rZU1ldGhvZChFeGVjU3Rh
dGUqIGV4ZWMsIEpTQzo6UnVudGltZU1ldGhvZCogcnVudGltZU1ldGhvZCkKQEAgLTM0Niw3ICsz
NDYsNyBAQCB2b2lkIFByb3h5SW5zdGFuY2U6OmdldFByb3BlcnR5TmFtZXMoRXhlCiAgICAgfQog
fQogCi1NZXRob2RMaXN0IFByb3h5SW5zdGFuY2U6Om1ldGhvZHNOYW1lZChjb25zdCBJZGVudGlm
aWVyJiBpZGVudGlmaWVyKQorTWV0aG9kTGlzdCBQcm94eUluc3RhbmNlOjptZXRob2RzTmFtZWQo
UHJvcGVydHlOYW1lIGlkZW50aWZpZXIpCiB7CiAgICAgaWYgKCFtX2luc3RhbmNlUHJveHkpCiAg
ICAgICAgIHJldHVybiBNZXRob2RMaXN0KCk7CkBAIC0zNjAsNyArMzYwLDcgQEAgTWV0aG9kTGlz
dCBQcm94eUluc3RhbmNlOjptZXRob2RzTmFtZWQoYwogICAgICAgICByZXR1cm4gbWV0aG9kTGlz
dDsKICAgICB9CiAgICAgCi0gICAgdWludDY0X3QgbWV0aG9kTmFtZSA9IHJlaW50ZXJwcmV0X2Nh
c3Q8dWludDY0X3Q+KF9OUE5fR2V0U3RyaW5nSWRlbnRpZmllcihpZGVudGlmaWVyLmFzY2lpKCku
ZGF0YSgpKSk7CisgICAgdWludDY0X3QgbWV0aG9kTmFtZSA9IHJlaW50ZXJwcmV0X2Nhc3Q8dWlu
dDY0X3Q+KF9OUE5fR2V0U3RyaW5nSWRlbnRpZmllcihpZGVudGlmaWVyLnVzdHJpbmcoKS5hc2Np
aSgpLmRhdGEoKSkpOwogICAgIHVpbnQzMl90IHJlcXVlc3RJRCA9IG1faW5zdGFuY2VQcm94eS0+
bmV4dFJlcXVlc3RJRCgpOwogICAgIAogICAgIGlmIChfV0tQSE5QT2JqZWN0SGFzTWV0aG9kKG1f
aW5zdGFuY2VQcm94eS0+aG9zdFByb3h5KCktPnBvcnQoKSwKQEAgLTM4Niw3ICszODYsNyBAQCBN
ZXRob2RMaXN0IFByb3h5SW5zdGFuY2U6Om1ldGhvZHNOYW1lZChjCiAgICAgcmV0dXJuIG1ldGhv
ZExpc3Q7CiB9CiAKLUZpZWxkKiBQcm94eUluc3RhbmNlOjpmaWVsZE5hbWVkKGNvbnN0IElkZW50
aWZpZXImIGlkZW50aWZpZXIpCitGaWVsZCogUHJveHlJbnN0YW5jZTo6ZmllbGROYW1lZChQcm9w
ZXJ0eU5hbWUgaWRlbnRpZmllcikKIHsKICAgICBpZiAoIW1faW5zdGFuY2VQcm94eSkKICAgICAg
ICAgcmV0dXJuIDA7CkBAIC0zOTYsNyArMzk2LDcgQEAgRmllbGQqIFByb3h5SW5zdGFuY2U6OmZp
ZWxkTmFtZWQoY29uc3QgSQogICAgIGlmIChleGlzdGluZ01hcEVudHJ5ICE9IG1fZmllbGRzLmVu
ZCgpKQogICAgICAgICByZXR1cm4gZXhpc3RpbmdNYXBFbnRyeS0+c2Vjb25kOwogICAgIAotICAg
IHVpbnQ2NF90IHByb3BlcnR5TmFtZSA9IHJlaW50ZXJwcmV0X2Nhc3Q8dWludDY0X3Q+KF9OUE5f
R2V0U3RyaW5nSWRlbnRpZmllcihpZGVudGlmaWVyLmFzY2lpKCkuZGF0YSgpKSk7CisgICAgdWlu
dDY0X3QgcHJvcGVydHlOYW1lID0gcmVpbnRlcnByZXRfY2FzdDx1aW50NjRfdD4oX05QTl9HZXRT
dHJpbmdJZGVudGlmaWVyKGlkZW50aWZpZXIudXN0cmluZygpLmFzY2lpKCkuZGF0YSgpKSk7CiAg
ICAgdWludDMyX3QgcmVxdWVzdElEID0gbV9pbnN0YW5jZVByb3h5LT5uZXh0UmVxdWVzdElEKCk7
CiAgICAgCiAgICAgaWYgKF9XS1BITlBPYmplY3RIYXNQcm9wZXJ0eShtX2luc3RhbmNlUHJveHkt
Pmhvc3RQcm94eSgpLT5wb3J0KCksCg==
</data>
<flag name="review"
          id="147608"
          type_id="1"
          status="-"
          setter="ggaren"
    />
    <flag name="commit-queue"
          id="147613"
          type_id="3"
          status="-"
          setter="gustavo"
    />
          </attachment>
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>141472</attachid>
            <date>2012-05-11 12:36:52 -0700</date>
            <delta_ts>2012-05-11 13:29:35 -0700</delta_ts>
            <desc>ooops! - svn add</desc>
            <filename>PropertyName.5.patch</filename>
            <type>text/plain</type>
            <size>390659</size>
            <attacher name="Gavin Barraclough">barraclough</attacher>
            
              <data encoding="base64">SW5kZXg6IFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9DaGFuZ2VMb2cKPT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291
cmNlL0phdmFTY3JpcHRDb3JlL0NoYW5nZUxvZwkocmV2aXNpb24gMTE2NzkyKQorKysgU291cmNl
L0phdmFTY3JpcHRDb3JlL0NoYW5nZUxvZwkod29ya2luZyBjb3B5KQpAQCAtMSwzICsxLDM4OCBA
QAorMjAxMi0wNS0xMSAgR2F2aW4gQmFycmFjbG91Z2ggIDxiYXJyYWNsb3VnaEBhcHBsZS5jb20+
CisKKyAgICAgICAgSW50cm9kdWNlIFByb3BlcnR5TmFtZSBjbGFzcworICAgICAgICBodHRwczov
L2J1Z3Mud2Via2l0Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9ODYyNDEKKworICAgICAgICBSZXZpZXdl
ZCBieSBOT0JPRFkgKE9PUFMhKS4KKworICAgICAgICBSZXBsYWNlICdjb25zdCBJZGVudGlmaWVy
JicgYXJndW1lbnRzIHRvIGZ1bmN0aW9ucyBhY2Nlc3Npbmcgb2JqZWN0IHByb3BlcnRpZXMgd2l0
aCBhIG5ldyAnUHJvcGVydHlOYW1lJyB0eXBlLgorICAgICAgICBUaGlzIGNoYW5nZSBwYXZlcyB0
aGUgd2F5IHRvIGFsbG93IGZvciBwcm9wZXJ0aWVzIGtleWVkIGJ5IHZhbHVlcyB0aGF0IGFyZSBu
b3QgSWRlbnRpZmllcnMuCisKKyAgICAgICAgVGhpcyBjaGFuZ2UgaXMgbGFyZ2VseSBhIG1lY2hh
bmljYWwgZmluZCAmIHJlcGxhY2UuCisgICAgICAgIEl0IGFsc28gY2hhbmdlcyBKU0Z1bmN0aW9u
J3MgY29uc3RydWN0b3IgdG8gdGFrZSBhIFVTdHJpbmcmIGluc3RlYWQgb2YgYW4gSWRlbnRpZmll
ciYKKyAgICAgICAgKHNpbmNlIGluIHNvbWUgY2FzZXMgd2UgY2FuIG5vIGxvbmdlciBndWFyYW50
ZWUgdGhhdCB3ZSdsbGwgaGF2ZSBhbiBJZGVudGlmaWVyKSwgYW5kCisgICAgICAgIHVuaWZpZXMg
SWRlbnRpZmllcidzIG1ldGhvZHMgdG8gb2J0YWluIGFycmF5IGluZGljZXMgb250byBQcm9wZXJ0
eU5hbWUuCisKKyAgICAgICAgVGhlIG5ldyBQcm9wZXJ0eU5hbWUgY2xhc3MgcmV0YWlucyB0aGUg
YWJpbGl0eSB0byBzdXBwb3J0IC5pbXBsKCkgYW5kIC51c3RyaW5nKCksIGJ1dAorICAgICAgICBp
biBhIGZ1dHVyZSBwYXRjaCB3ZSBtYXkgbmVlZCB0byByZXdvcmsgdGhpcywgc2luY2Ugbm90IGFs
bCBQcm9wZXJ0eU5hbWVzIHNob3VsZCBiZQorICAgICAgICBlcXVhbCBiYXNlZCBvbiB0aGVpciBz
dHJpbmcgcmVwcmVzZW50YXRpb24uCisKKyAgICAgICAgKiBBUEkvSlNDYWxsYmFja0Z1bmN0aW9u
LmNwcDoKKyAgICAgICAgKEpTQzo6SlNDYWxsYmFja0Z1bmN0aW9uOjpmaW5pc2hDcmVhdGlvbik6
CisgICAgICAgICogQVBJL0pTQ2FsbGJhY2tGdW5jdGlvbi5oOgorICAgICAgICAoSlNDYWxsYmFj
a0Z1bmN0aW9uKToKKyAgICAgICAgKEpTQzo6SlNDYWxsYmFja0Z1bmN0aW9uOjpjcmVhdGUpOgor
ICAgICAgICAqIEFQSS9KU0NhbGxiYWNrT2JqZWN0Lmg6CisgICAgICAgIChKU0NhbGxiYWNrT2Jq
ZWN0KToKKyAgICAgICAgKiBBUEkvSlNDYWxsYmFja09iamVjdEZ1bmN0aW9ucy5oOgorICAgICAg
ICAoSlNDOjo6OmdldE93blByb3BlcnR5U2xvdCk6CisgICAgICAgIChKU0M6Ojo6Z2V0T3duUHJv
cGVydHlEZXNjcmlwdG9yKToKKyAgICAgICAgKEpTQzo6OjpwdXQpOgorICAgICAgICAoSlNDOjo6
OmRlbGV0ZVByb3BlcnR5KToKKyAgICAgICAgKEpTQzo6OjpnZXRTdGF0aWNWYWx1ZSk6CisgICAg
ICAgIChKU0M6Ojo6c3RhdGljRnVuY3Rpb25HZXR0ZXIpOgorICAgICAgICAoSlNDOjo6OmNhbGxi
YWNrR2V0dGVyKToKKyAgICAgICAgKiBBUEkvSlNPYmplY3RSZWYuY3BwOgorICAgICAgICAoSlNP
YmplY3RNYWtlRnVuY3Rpb25XaXRoQ2FsbGJhY2spOgorICAgICAgICAqIEpTQ1R5cGVkQXJyYXlT
dHVicy5oOgorICAgICAgICAoSlNDKToKKyAgICAgICAgKiBKYXZhU2NyaXB0Q29yZS54Y29kZXBy
b2ovcHJvamVjdC5wYnhwcm9qOgorICAgICAgICAqIGRlYnVnZ2VyL0RlYnVnZ2VyQWN0aXZhdGlv
bi5jcHA6CisgICAgICAgIChKU0M6OkRlYnVnZ2VyQWN0aXZhdGlvbjo6Z2V0T3duUHJvcGVydHlT
bG90KToKKyAgICAgICAgKEpTQzo6RGVidWdnZXJBY3RpdmF0aW9uOjpwdXQpOgorICAgICAgICAo
SlNDOjpEZWJ1Z2dlckFjdGl2YXRpb246OnB1dERpcmVjdFZpcnR1YWwpOgorICAgICAgICAoSlND
OjpEZWJ1Z2dlckFjdGl2YXRpb246OmRlbGV0ZVByb3BlcnR5KToKKyAgICAgICAgKEpTQzo6RGVi
dWdnZXJBY3RpdmF0aW9uOjpnZXRPd25Qcm9wZXJ0eURlc2NyaXB0b3IpOgorICAgICAgICAoSlND
OjpEZWJ1Z2dlckFjdGl2YXRpb246OmRlZmluZU93blByb3BlcnR5KToKKyAgICAgICAgKiBkZWJ1
Z2dlci9EZWJ1Z2dlckFjdGl2YXRpb24uaDoKKyAgICAgICAgKERlYnVnZ2VyQWN0aXZhdGlvbik6
CisgICAgICAgICoganNjLmNwcDoKKyAgICAgICAgKEdsb2JhbE9iamVjdDo6YWRkRnVuY3Rpb24p
OgorICAgICAgICAoR2xvYmFsT2JqZWN0OjphZGRDb25zdHJ1Y3RhYmxlRnVuY3Rpb24pOgorICAg
ICAgICAqIHJ1bnRpbWUvQXJndW1lbnRzLmNwcDoKKyAgICAgICAgKEpTQzo6QXJndW1lbnRzOjpn
ZXRPd25Qcm9wZXJ0eVNsb3QpOgorICAgICAgICAoSlNDOjpBcmd1bWVudHM6OmdldE93blByb3Bl
cnR5RGVzY3JpcHRvcik6CisgICAgICAgIChKU0M6OkFyZ3VtZW50czo6cHV0KToKKyAgICAgICAg
KEpTQzo6QXJndW1lbnRzOjpkZWxldGVQcm9wZXJ0eSk6CisgICAgICAgIChKU0M6OkFyZ3VtZW50
czo6ZGVmaW5lT3duUHJvcGVydHkpOgorICAgICAgICAqIHJ1bnRpbWUvQXJndW1lbnRzLmg6Cisg
ICAgICAgIChBcmd1bWVudHMpOgorICAgICAgICAqIHJ1bnRpbWUvQXJyYXlDb25zdHJ1Y3Rvci5j
cHA6CisgICAgICAgIChKU0M6OkFycmF5Q29uc3RydWN0b3I6OmZpbmlzaENyZWF0aW9uKToKKyAg
ICAgICAgKEpTQzo6QXJyYXlDb25zdHJ1Y3Rvcjo6Z2V0T3duUHJvcGVydHlTbG90KToKKyAgICAg
ICAgKEpTQzo6QXJyYXlDb25zdHJ1Y3Rvcjo6Z2V0T3duUHJvcGVydHlEZXNjcmlwdG9yKToKKyAg
ICAgICAgKiBydW50aW1lL0FycmF5Q29uc3RydWN0b3IuaDoKKyAgICAgICAgKEFycmF5Q29uc3Ry
dWN0b3IpOgorICAgICAgICAqIHJ1bnRpbWUvQXJyYXlQcm90b3R5cGUuY3BwOgorICAgICAgICAo
SlNDOjpBcnJheVByb3RvdHlwZTo6Z2V0T3duUHJvcGVydHlTbG90KToKKyAgICAgICAgKEpTQzo6
QXJyYXlQcm90b3R5cGU6OmdldE93blByb3BlcnR5RGVzY3JpcHRvcik6CisgICAgICAgIChKU0M6
OnB1dFByb3BlcnR5KToKKyAgICAgICAgKiBydW50aW1lL0FycmF5UHJvdG90eXBlLmg6CisgICAg
ICAgIChBcnJheVByb3RvdHlwZSk6CisgICAgICAgICogcnVudGltZS9Cb29sZWFuQ29uc3RydWN0
b3IuY3BwOgorICAgICAgICAoSlNDOjpCb29sZWFuQ29uc3RydWN0b3I6OmZpbmlzaENyZWF0aW9u
KToKKyAgICAgICAgKiBydW50aW1lL0Jvb2xlYW5Qcm90b3R5cGUuY3BwOgorICAgICAgICAoSlND
OjpCb29sZWFuUHJvdG90eXBlOjpnZXRPd25Qcm9wZXJ0eVNsb3QpOgorICAgICAgICAoSlNDOjpC
b29sZWFuUHJvdG90eXBlOjpnZXRPd25Qcm9wZXJ0eURlc2NyaXB0b3IpOgorICAgICAgICAqIHJ1
bnRpbWUvQm9vbGVhblByb3RvdHlwZS5oOgorICAgICAgICAoQm9vbGVhblByb3RvdHlwZSk6Cisg
ICAgICAgICogcnVudGltZS9DbGFzc0luZm8uaDoKKyAgICAgICAgKE1ldGhvZFRhYmxlKToKKyAg
ICAgICAgKiBydW50aW1lL0RhdGVDb25zdHJ1Y3Rvci5jcHA6CisgICAgICAgIChKU0M6OkRhdGVD
b25zdHJ1Y3Rvcjo6ZmluaXNoQ3JlYXRpb24pOgorICAgICAgICAoSlNDOjpEYXRlQ29uc3RydWN0
b3I6OmdldE93blByb3BlcnR5U2xvdCk6CisgICAgICAgIChKU0M6OkRhdGVDb25zdHJ1Y3Rvcjo6
Z2V0T3duUHJvcGVydHlEZXNjcmlwdG9yKToKKyAgICAgICAgKiBydW50aW1lL0RhdGVDb25zdHJ1
Y3Rvci5oOgorICAgICAgICAoRGF0ZUNvbnN0cnVjdG9yKToKKyAgICAgICAgKiBydW50aW1lL0Rh
dGVQcm90b3R5cGUuY3BwOgorICAgICAgICAoSlNDOjpEYXRlUHJvdG90eXBlOjpnZXRPd25Qcm9w
ZXJ0eVNsb3QpOgorICAgICAgICAoSlNDOjpEYXRlUHJvdG90eXBlOjpnZXRPd25Qcm9wZXJ0eURl
c2NyaXB0b3IpOgorICAgICAgICAqIHJ1bnRpbWUvRGF0ZVByb3RvdHlwZS5oOgorICAgICAgICAo
RGF0ZVByb3RvdHlwZSk6CisgICAgICAgICogcnVudGltZS9FcnJvci5oOgorICAgICAgICAoSlND
OjpTdHJpY3RNb2RlVHlwZUVycm9yRnVuY3Rpb246OmNyZWF0ZSk6CisgICAgICAgICogcnVudGlt
ZS9FcnJvckNvbnN0cnVjdG9yLmNwcDoKKyAgICAgICAgKEpTQzo6RXJyb3JDb25zdHJ1Y3Rvcjo6
ZmluaXNoQ3JlYXRpb24pOgorICAgICAgICAqIHJ1bnRpbWUvRXJyb3JQcm90b3R5cGUuY3BwOgor
ICAgICAgICAoSlNDOjpFcnJvclByb3RvdHlwZTo6Z2V0T3duUHJvcGVydHlTbG90KToKKyAgICAg
ICAgKEpTQzo6RXJyb3JQcm90b3R5cGU6OmdldE93blByb3BlcnR5RGVzY3JpcHRvcik6CisgICAg
ICAgICogcnVudGltZS9FcnJvclByb3RvdHlwZS5oOgorICAgICAgICAoRXJyb3JQcm90b3R5cGUp
OgorICAgICAgICAqIHJ1bnRpbWUvRnVuY3Rpb25Db25zdHJ1Y3Rvci5jcHA6CisgICAgICAgIChK
U0M6OkZ1bmN0aW9uQ29uc3RydWN0b3I6OmZpbmlzaENyZWF0aW9uKToKKyAgICAgICAgKiBydW50
aW1lL0Z1bmN0aW9uUHJvdG90eXBlLmNwcDoKKyAgICAgICAgKEpTQzo6RnVuY3Rpb25Qcm90b3R5
cGU6OmZpbmlzaENyZWF0aW9uKToKKyAgICAgICAgKEpTQzo6RnVuY3Rpb25Qcm90b3R5cGU6OmFk
ZEZ1bmN0aW9uUHJvcGVydGllcyk6CisgICAgICAgIChKU0M6OmZ1bmN0aW9uUHJvdG9GdW5jQmlu
ZCk6CisgICAgICAgICogcnVudGltZS9GdW5jdGlvblByb3RvdHlwZS5oOgorICAgICAgICAoSlND
OjpGdW5jdGlvblByb3RvdHlwZTo6Y3JlYXRlKToKKyAgICAgICAgKEZ1bmN0aW9uUHJvdG90eXBl
KToKKyAgICAgICAgKiBydW50aW1lL0lkZW50aWZpZXIuY3BwOgorICAgICAgICAoSlNDKToKKyAg
ICAgICAgKiBydW50aW1lL0lkZW50aWZpZXIuaDoKKyAgICAgICAgKElkZW50aWZpZXIpOgorICAg
ICAgICAqIHJ1bnRpbWUvSW50ZXJuYWxGdW5jdGlvbi5jcHA6CisgICAgICAgIChKU0M6OkludGVy
bmFsRnVuY3Rpb246OmZpbmlzaENyZWF0aW9uKToKKyAgICAgICAgKiBydW50aW1lL0ludGVybmFs
RnVuY3Rpb24uaDoKKyAgICAgICAgKEludGVybmFsRnVuY3Rpb24pOgorICAgICAgICAqIHJ1bnRp
bWUvSlNBY3RpdmF0aW9uLmNwcDoKKyAgICAgICAgKEpTQzo6SlNBY3RpdmF0aW9uOjpzeW1ib2xU
YWJsZUdldCk6CisgICAgICAgIChKU0M6OkpTQWN0aXZhdGlvbjo6c3ltYm9sVGFibGVQdXQpOgor
ICAgICAgICAoSlNDOjpKU0FjdGl2YXRpb246OnN5bWJvbFRhYmxlUHV0V2l0aEF0dHJpYnV0ZXMp
OgorICAgICAgICAoSlNDOjpKU0FjdGl2YXRpb246OmdldE93blByb3BlcnR5U2xvdCk6CisgICAg
ICAgIChKU0M6OkpTQWN0aXZhdGlvbjo6cHV0KToKKyAgICAgICAgKEpTQzo6SlNBY3RpdmF0aW9u
OjpwdXREaXJlY3RWaXJ0dWFsKToKKyAgICAgICAgKEpTQzo6SlNBY3RpdmF0aW9uOjpkZWxldGVQ
cm9wZXJ0eSk6CisgICAgICAgIChKU0M6OkpTQWN0aXZhdGlvbjo6YXJndW1lbnRzR2V0dGVyKToK
KyAgICAgICAgKiBydW50aW1lL0pTQWN0aXZhdGlvbi5oOgorICAgICAgICAoSlNBY3RpdmF0aW9u
KToKKyAgICAgICAgKiBydW50aW1lL0pTQXJyYXkuY3BwOgorICAgICAgICAoSlNDOjpKU0FycmF5
OjpkZWZpbmVPd25Qcm9wZXJ0eSk6CisgICAgICAgIChKU0M6OkpTQXJyYXk6OmdldE93blByb3Bl
cnR5U2xvdCk6CisgICAgICAgIChKU0M6OkpTQXJyYXk6OmdldE93blByb3BlcnR5RGVzY3JpcHRv
cik6CisgICAgICAgIChKU0M6OkpTQXJyYXk6OnB1dCk6CisgICAgICAgIChKU0M6OkpTQXJyYXk6
OmRlbGV0ZVByb3BlcnR5KToKKyAgICAgICAgKiBydW50aW1lL0pTQXJyYXkuaDoKKyAgICAgICAg
KEpTQXJyYXkpOgorICAgICAgICAoSlNDKToKKyAgICAgICAgKiBydW50aW1lL0pTQm91bmRGdW5j
dGlvbi5jcHA6CisgICAgICAgIChKU0M6OkpTQm91bmRGdW5jdGlvbjo6Y3JlYXRlKToKKyAgICAg
ICAgKEpTQzo6SlNCb3VuZEZ1bmN0aW9uOjpmaW5pc2hDcmVhdGlvbik6CisgICAgICAgICogcnVu
dGltZS9KU0JvdW5kRnVuY3Rpb24uaDoKKyAgICAgICAgKEpTQm91bmRGdW5jdGlvbik6CisgICAg
ICAgICogcnVudGltZS9KU0NlbGwuY3BwOgorICAgICAgICAoSlNDOjpKU0NlbGw6OmdldE93blBy
b3BlcnR5U2xvdCk6CisgICAgICAgIChKU0M6OkpTQ2VsbDo6cHV0KToKKyAgICAgICAgKEpTQzo6
SlNDZWxsOjpkZWxldGVQcm9wZXJ0eSk6CisgICAgICAgIChKU0M6OkpTQ2VsbDo6cHV0RGlyZWN0
VmlydHVhbCk6CisgICAgICAgIChKU0M6OkpTQ2VsbDo6ZGVmaW5lT3duUHJvcGVydHkpOgorICAg
ICAgICAoSlNDOjpKU0NlbGw6OmdldE93blByb3BlcnR5RGVzY3JpcHRvcik6CisgICAgICAgICog
cnVudGltZS9KU0NlbGwuaDoKKyAgICAgICAgKEpTQ2VsbCk6CisgICAgICAgICogcnVudGltZS9K
U0Z1bmN0aW9uLmNwcDoKKyAgICAgICAgKEpTQzo6SlNGdW5jdGlvbjo6Y3JlYXRlKToKKyAgICAg
ICAgKEpTQzo6SlNGdW5jdGlvbjo6ZmluaXNoQ3JlYXRpb24pOgorICAgICAgICAoSlNDOjpKU0Z1
bmN0aW9uOjphcmd1bWVudHNHZXR0ZXIpOgorICAgICAgICAoSlNDOjpKU0Z1bmN0aW9uOjpjYWxs
ZXJHZXR0ZXIpOgorICAgICAgICAoSlNDOjpKU0Z1bmN0aW9uOjpsZW5ndGhHZXR0ZXIpOgorICAg
ICAgICAoSlNDOjpKU0Z1bmN0aW9uOjpnZXRPd25Qcm9wZXJ0eVNsb3QpOgorICAgICAgICAoSlND
OjpKU0Z1bmN0aW9uOjpnZXRPd25Qcm9wZXJ0eURlc2NyaXB0b3IpOgorICAgICAgICAoSlNDOjpK
U0Z1bmN0aW9uOjpwdXQpOgorICAgICAgICAoSlNDOjpKU0Z1bmN0aW9uOjpkZWxldGVQcm9wZXJ0
eSk6CisgICAgICAgIChKU0M6OkpTRnVuY3Rpb246OmRlZmluZU93blByb3BlcnR5KToKKyAgICAg
ICAgKEpTQzo6Z2V0Q2FsY3VsYXRlZERpc3BsYXlOYW1lKToKKyAgICAgICAgKiBydW50aW1lL0pT
RnVuY3Rpb24uaDoKKyAgICAgICAgKEpTRnVuY3Rpb24pOgorICAgICAgICAqIHJ1bnRpbWUvSlNH
bG9iYWxPYmplY3QuY3BwOgorICAgICAgICAoSlNDOjpKU0dsb2JhbE9iamVjdDo6cHV0KToKKyAg
ICAgICAgKEpTQzo6SlNHbG9iYWxPYmplY3Q6OnB1dERpcmVjdFZpcnR1YWwpOgorICAgICAgICAo
SlNDOjpKU0dsb2JhbE9iamVjdDo6ZGVmaW5lT3duUHJvcGVydHkpOgorICAgICAgICAoSlNDOjpK
U0dsb2JhbE9iamVjdDo6cmVzZXQpOgorICAgICAgICAoSlNDOjpKU0dsb2JhbE9iamVjdDo6Y3Jl
YXRlVGhyb3dUeXBlRXJyb3IpOgorICAgICAgICAoSlNDOjpKU0dsb2JhbE9iamVjdDo6Z2V0T3du
UHJvcGVydHlTbG90KToKKyAgICAgICAgKEpTQzo6SlNHbG9iYWxPYmplY3Q6OmdldE93blByb3Bl
cnR5RGVzY3JpcHRvcik6CisgICAgICAgICogcnVudGltZS9KU0dsb2JhbE9iamVjdC5oOgorICAg
ICAgICAoSlNHbG9iYWxPYmplY3QpOgorICAgICAgICAoSlNDOjpKU0dsb2JhbE9iamVjdDo6aGFz
T3duUHJvcGVydHlGb3JXcml0ZSk6CisgICAgICAgIChKU0M6OkpTR2xvYmFsT2JqZWN0OjpzeW1i
b2xUYWJsZUhhc1Byb3BlcnR5KToKKyAgICAgICAgKiBydW50aW1lL0pTTm90QW5PYmplY3QuY3Bw
OgorICAgICAgICAoSlNDOjpKU05vdEFuT2JqZWN0OjpnZXRPd25Qcm9wZXJ0eVNsb3QpOgorICAg
ICAgICAoSlNDOjpKU05vdEFuT2JqZWN0OjpnZXRPd25Qcm9wZXJ0eURlc2NyaXB0b3IpOgorICAg
ICAgICAoSlNDOjpKU05vdEFuT2JqZWN0OjpwdXQpOgorICAgICAgICAoSlNDOjpKU05vdEFuT2Jq
ZWN0OjpkZWxldGVQcm9wZXJ0eSk6CisgICAgICAgICogcnVudGltZS9KU05vdEFuT2JqZWN0Lmg6
CisgICAgICAgIChKU05vdEFuT2JqZWN0KToKKyAgICAgICAgKiBydW50aW1lL0pTT05PYmplY3Qu
Y3BwOgorICAgICAgICAoSlNDOjpKU09OT2JqZWN0OjpnZXRPd25Qcm9wZXJ0eVNsb3QpOgorICAg
ICAgICAoSlNDOjpKU09OT2JqZWN0OjpnZXRPd25Qcm9wZXJ0eURlc2NyaXB0b3IpOgorICAgICAg
ICAqIHJ1bnRpbWUvSlNPTk9iamVjdC5oOgorICAgICAgICAoSlNPTk9iamVjdCk6CisgICAgICAg
ICogcnVudGltZS9KU09iamVjdC5jcHA6CisgICAgICAgIChKU0M6OkpTT2JqZWN0OjpwdXQpOgor
ICAgICAgICAoSlNDOjpKU09iamVjdDo6cHV0RGlyZWN0VmlydHVhbCk6CisgICAgICAgIChKU0M6
OkpTT2JqZWN0OjpwdXREaXJlY3RBY2Nlc3Nvcik6CisgICAgICAgIChKU0M6OkpTT2JqZWN0Ojpo
YXNQcm9wZXJ0eSk6CisgICAgICAgIChKU0M6OkpTT2JqZWN0OjpkZWxldGVQcm9wZXJ0eSk6Cisg
ICAgICAgIChKU0M6OkpTT2JqZWN0OjpoYXNPd25Qcm9wZXJ0eSk6CisgICAgICAgIChKU0M6OmNh
bGxEZWZhdWx0VmFsdWVGdW5jdGlvbik6CisgICAgICAgIChKU0M6OkpTT2JqZWN0OjpmaW5kUHJv
cGVydHlIYXNoRW50cnkpOgorICAgICAgICAoSlNDOjpKU09iamVjdDo6Z2V0UHJvcGVydHlTcGVj
aWZpY1ZhbHVlKToKKyAgICAgICAgKEpTQzo6SlNPYmplY3Q6OnJlbW92ZURpcmVjdCk6CisgICAg
ICAgIChKU0M6OkpTT2JqZWN0OjpnZXRPd25Qcm9wZXJ0eURlc2NyaXB0b3IpOgorICAgICAgICAo
SlNDOjpKU09iamVjdDo6Z2V0UHJvcGVydHlEZXNjcmlwdG9yKToKKyAgICAgICAgKEpTQzo6cHV0
RGVzY3JpcHRvcik6CisgICAgICAgIChKU0M6OkpTT2JqZWN0OjpkZWZpbmVPd25Qcm9wZXJ0eSk6
CisgICAgICAgICogcnVudGltZS9KU09iamVjdC5oOgorICAgICAgICAoSlNPYmplY3QpOgorICAg
ICAgICAoSlNDOjpKU09iamVjdDo6Z2V0RGlyZWN0KToKKyAgICAgICAgKEpTQzo6SlNPYmplY3Q6
OmdldERpcmVjdExvY2F0aW9uKToKKyAgICAgICAgKEpTQzo6SlNPYmplY3Q6OmlubGluZUdldE93
blByb3BlcnR5U2xvdCk6CisgICAgICAgIChKU0M6OkpTT2JqZWN0OjpnZXRPd25Qcm9wZXJ0eVNs
b3QpOgorICAgICAgICAoSlNDOjpKU0NlbGw6OmZhc3RHZXRPd25Qcm9wZXJ0eVNsb3QpOgorICAg
ICAgICAoSlNDOjpKU09iamVjdDo6Z2V0UHJvcGVydHlTbG90KToKKyAgICAgICAgKEpTQzo6SlNP
YmplY3Q6OmdldCk6CisgICAgICAgIChKU0M6OkpTT2JqZWN0OjpwdXREaXJlY3RJbnRlcm5hbCk6
CisgICAgICAgIChKU0M6OkpTT2JqZWN0OjpwdXRPd25EYXRhUHJvcGVydHkpOgorICAgICAgICAo
SlNDOjpKU09iamVjdDo6cHV0RGlyZWN0KToKKyAgICAgICAgKEpTQzo6SlNPYmplY3Q6OnB1dERp
cmVjdFdpdGhvdXRUcmFuc2l0aW9uKToKKyAgICAgICAgKEpTQzo6SlNWYWx1ZTo6Z2V0KToKKyAg
ICAgICAgKEpTQzo6SlNWYWx1ZTo6cHV0KToKKyAgICAgICAgKiBydW50aW1lL0pTU3RhdGljU2Nv
cGVPYmplY3QuY3BwOgorICAgICAgICAoSlNDOjpKU1N0YXRpY1Njb3BlT2JqZWN0OjpwdXQpOgor
ICAgICAgICAoSlNDOjpKU1N0YXRpY1Njb3BlT2JqZWN0OjpwdXREaXJlY3RWaXJ0dWFsKToKKyAg
ICAgICAgKEpTQzo6SlNTdGF0aWNTY29wZU9iamVjdDo6Z2V0T3duUHJvcGVydHlTbG90KToKKyAg
ICAgICAgKiBydW50aW1lL0pTU3RhdGljU2NvcGVPYmplY3QuaDoKKyAgICAgICAgKEpTU3RhdGlj
U2NvcGVPYmplY3QpOgorICAgICAgICAqIHJ1bnRpbWUvSlNTdHJpbmcuY3BwOgorICAgICAgICAo
SlNDOjpKU1N0cmluZzo6Z2V0T3duUHJvcGVydHlTbG90KToKKyAgICAgICAgKEpTQzo6SlNTdHJp
bmc6OmdldFN0cmluZ1Byb3BlcnR5RGVzY3JpcHRvcik6CisgICAgICAgICogcnVudGltZS9KU1N0
cmluZy5oOgorICAgICAgICAoSlNTdHJpbmcpOgorICAgICAgICAoSlNDOjpKU1N0cmluZzo6Z2V0
U3RyaW5nUHJvcGVydHlTbG90KToKKyAgICAgICAgKiBydW50aW1lL0pTVmFsdWUuY3BwOgorICAg
ICAgICAoSlNDOjpKU1ZhbHVlOjpwdXRUb1ByaW1pdGl2ZSk6CisgICAgICAgICogcnVudGltZS9K
U1ZhbHVlLmg6CisgICAgICAgIChKU0MpOgorICAgICAgICAoSlNWYWx1ZSk6CisgICAgICAgICog
cnVudGltZS9KU1ZhcmlhYmxlT2JqZWN0LmNwcDoKKyAgICAgICAgKEpTQzo6SlNWYXJpYWJsZU9i
amVjdDo6ZGVsZXRlUHJvcGVydHkpOgorICAgICAgICAoSlNDOjpKU1ZhcmlhYmxlT2JqZWN0Ojpz
eW1ib2xUYWJsZUdldCk6CisgICAgICAgIChKU0M6OkpTVmFyaWFibGVPYmplY3Q6OnB1dERpcmVj
dFZpcnR1YWwpOgorICAgICAgICAqIHJ1bnRpbWUvSlNWYXJpYWJsZU9iamVjdC5oOgorICAgICAg
ICAoSlNWYXJpYWJsZU9iamVjdCk6CisgICAgICAgIChKU0M6OkpTVmFyaWFibGVPYmplY3Q6OnN5
bWJvbFRhYmxlR2V0KToKKyAgICAgICAgKEpTQzo6SlNWYXJpYWJsZU9iamVjdDo6c3ltYm9sVGFi
bGVQdXQpOgorICAgICAgICAoSlNDOjpKU1ZhcmlhYmxlT2JqZWN0OjpzeW1ib2xUYWJsZVB1dFdp
dGhBdHRyaWJ1dGVzKToKKyAgICAgICAgKiBydW50aW1lL0xvb2t1cC5jcHA6CisgICAgICAgIChK
U0M6OnNldFVwU3RhdGljRnVuY3Rpb25TbG90KToKKyAgICAgICAgKiBydW50aW1lL0xvb2t1cC5o
OgorICAgICAgICAoSlNDOjpIYXNoVGFibGU6OmVudHJ5KToKKyAgICAgICAgKEpTQyk6CisgICAg
ICAgIChKU0M6OmdldFN0YXRpY1Byb3BlcnR5U2xvdCk6CisgICAgICAgIChKU0M6OmdldFN0YXRp
Y1Byb3BlcnR5RGVzY3JpcHRvcik6CisgICAgICAgIChKU0M6OmdldFN0YXRpY0Z1bmN0aW9uU2xv
dCk6CisgICAgICAgIChKU0M6OmdldFN0YXRpY0Z1bmN0aW9uRGVzY3JpcHRvcik6CisgICAgICAg
IChKU0M6OmdldFN0YXRpY1ZhbHVlU2xvdCk6CisgICAgICAgIChKU0M6OmdldFN0YXRpY1ZhbHVl
RGVzY3JpcHRvcik6CisgICAgICAgIChKU0M6Omxvb2t1cFB1dCk6CisgICAgICAgICogcnVudGlt
ZS9NYXRoT2JqZWN0LmNwcDoKKyAgICAgICAgKEpTQzo6TWF0aE9iamVjdDo6Z2V0T3duUHJvcGVy
dHlTbG90KToKKyAgICAgICAgKEpTQzo6TWF0aE9iamVjdDo6Z2V0T3duUHJvcGVydHlEZXNjcmlw
dG9yKToKKyAgICAgICAgKiBydW50aW1lL01hdGhPYmplY3QuaDoKKyAgICAgICAgKE1hdGhPYmpl
Y3QpOgorICAgICAgICAqIHJ1bnRpbWUvTmF0aXZlRXJyb3JDb25zdHJ1Y3Rvci5oOgorICAgICAg
ICAoSlNDOjpOYXRpdmVFcnJvckNvbnN0cnVjdG9yOjpmaW5pc2hDcmVhdGlvbik6CisgICAgICAg
ICogcnVudGltZS9OdW1iZXJDb25zdHJ1Y3Rvci5jcHA6CisgICAgICAgIChKU0MpOgorICAgICAg
ICAoSlNDOjpOdW1iZXJDb25zdHJ1Y3Rvcjo6ZmluaXNoQ3JlYXRpb24pOgorICAgICAgICAoSlND
OjpOdW1iZXJDb25zdHJ1Y3Rvcjo6Z2V0T3duUHJvcGVydHlTbG90KToKKyAgICAgICAgKEpTQzo6
TnVtYmVyQ29uc3RydWN0b3I6OmdldE93blByb3BlcnR5RGVzY3JpcHRvcik6CisgICAgICAgIChK
U0M6Ok51bWJlckNvbnN0cnVjdG9yOjpwdXQpOgorICAgICAgICAoSlNDOjpudW1iZXJDb25zdHJ1
Y3Rvck5hTlZhbHVlKToKKyAgICAgICAgKEpTQzo6bnVtYmVyQ29uc3RydWN0b3JOZWdJbmZpbml0
eSk6CisgICAgICAgIChKU0M6Om51bWJlckNvbnN0cnVjdG9yUG9zSW5maW5pdHkpOgorICAgICAg
ICAoSlNDOjpudW1iZXJDb25zdHJ1Y3Rvck1heFZhbHVlKToKKyAgICAgICAgKEpTQzo6bnVtYmVy
Q29uc3RydWN0b3JNaW5WYWx1ZSk6CisgICAgICAgICogcnVudGltZS9OdW1iZXJDb25zdHJ1Y3Rv
ci5oOgorICAgICAgICAoTnVtYmVyQ29uc3RydWN0b3IpOgorICAgICAgICAqIHJ1bnRpbWUvTnVt
YmVyUHJvdG90eXBlLmNwcDoKKyAgICAgICAgKEpTQzo6TnVtYmVyUHJvdG90eXBlOjpnZXRPd25Q
cm9wZXJ0eVNsb3QpOgorICAgICAgICAoSlNDOjpOdW1iZXJQcm90b3R5cGU6OmdldE93blByb3Bl
cnR5RGVzY3JpcHRvcik6CisgICAgICAgICogcnVudGltZS9OdW1iZXJQcm90b3R5cGUuaDoKKyAg
ICAgICAgKE51bWJlclByb3RvdHlwZSk6CisgICAgICAgICogcnVudGltZS9PYmplY3RDb25zdHJ1
Y3Rvci5jcHA6CisgICAgICAgIChKU0M6Ok9iamVjdENvbnN0cnVjdG9yOjpmaW5pc2hDcmVhdGlv
bik6CisgICAgICAgIChKU0M6Ok9iamVjdENvbnN0cnVjdG9yOjpnZXRPd25Qcm9wZXJ0eVNsb3Qp
OgorICAgICAgICAoSlNDOjpPYmplY3RDb25zdHJ1Y3Rvcjo6Z2V0T3duUHJvcGVydHlEZXNjcmlw
dG9yKToKKyAgICAgICAgKiBydW50aW1lL09iamVjdENvbnN0cnVjdG9yLmg6CisgICAgICAgIChP
YmplY3RDb25zdHJ1Y3Rvcik6CisgICAgICAgICogcnVudGltZS9PYmplY3RQcm90b3R5cGUuY3Bw
OgorICAgICAgICAoSlNDOjpPYmplY3RQcm90b3R5cGU6OnB1dCk6CisgICAgICAgIChKU0M6Ok9i
amVjdFByb3RvdHlwZTo6ZGVmaW5lT3duUHJvcGVydHkpOgorICAgICAgICAoSlNDOjpPYmplY3RQ
cm90b3R5cGU6OmdldE93blByb3BlcnR5U2xvdCk6CisgICAgICAgIChKU0M6Ok9iamVjdFByb3Rv
dHlwZTo6Z2V0T3duUHJvcGVydHlEZXNjcmlwdG9yKToKKyAgICAgICAgKiBydW50aW1lL09iamVj
dFByb3RvdHlwZS5oOgorICAgICAgICAoT2JqZWN0UHJvdG90eXBlKToKKyAgICAgICAgKiBydW50
aW1lL1Byb3BlcnR5U2xvdC5oOgorICAgICAgICAoUHJvcGVydHlTbG90KToKKyAgICAgICAgKEpT
Qzo6UHJvcGVydHlTbG90OjpnZXRWYWx1ZSk6CisgICAgICAgICogcnVudGltZS9SZWdFeHBDb25z
dHJ1Y3Rvci5jcHA6CisgICAgICAgIChKU0MpOgorICAgICAgICAoSlNDOjpSZWdFeHBDb25zdHJ1
Y3Rvcjo6ZmluaXNoQ3JlYXRpb24pOgorICAgICAgICAoSlNDOjpSZWdFeHBDb25zdHJ1Y3Rvcjo6
Z2V0T3duUHJvcGVydHlTbG90KToKKyAgICAgICAgKEpTQzo6UmVnRXhwQ29uc3RydWN0b3I6Omdl
dE93blByb3BlcnR5RGVzY3JpcHRvcik6CisgICAgICAgIChKU0M6OnJlZ0V4cENvbnN0cnVjdG9y
RG9sbGFyMSk6CisgICAgICAgIChKU0M6OnJlZ0V4cENvbnN0cnVjdG9yRG9sbGFyMik6CisgICAg
ICAgIChKU0M6OnJlZ0V4cENvbnN0cnVjdG9yRG9sbGFyMyk6CisgICAgICAgIChKU0M6OnJlZ0V4
cENvbnN0cnVjdG9yRG9sbGFyNCk6CisgICAgICAgIChKU0M6OnJlZ0V4cENvbnN0cnVjdG9yRG9s
bGFyNSk6CisgICAgICAgIChKU0M6OnJlZ0V4cENvbnN0cnVjdG9yRG9sbGFyNik6CisgICAgICAg
IChKU0M6OnJlZ0V4cENvbnN0cnVjdG9yRG9sbGFyNyk6CisgICAgICAgIChKU0M6OnJlZ0V4cENv
bnN0cnVjdG9yRG9sbGFyOCk6CisgICAgICAgIChKU0M6OnJlZ0V4cENvbnN0cnVjdG9yRG9sbGFy
OSk6CisgICAgICAgIChKU0M6OnJlZ0V4cENvbnN0cnVjdG9ySW5wdXQpOgorICAgICAgICAoSlND
OjpyZWdFeHBDb25zdHJ1Y3Rvck11bHRpbGluZSk6CisgICAgICAgIChKU0M6OnJlZ0V4cENvbnN0
cnVjdG9yTGFzdE1hdGNoKToKKyAgICAgICAgKEpTQzo6cmVnRXhwQ29uc3RydWN0b3JMYXN0UGFy
ZW4pOgorICAgICAgICAoSlNDOjpyZWdFeHBDb25zdHJ1Y3RvckxlZnRDb250ZXh0KToKKyAgICAg
ICAgKEpTQzo6cmVnRXhwQ29uc3RydWN0b3JSaWdodENvbnRleHQpOgorICAgICAgICAoSlNDOjpS
ZWdFeHBDb25zdHJ1Y3Rvcjo6cHV0KToKKyAgICAgICAgKiBydW50aW1lL1JlZ0V4cENvbnN0cnVj
dG9yLmg6CisgICAgICAgIChSZWdFeHBDb25zdHJ1Y3Rvcik6CisgICAgICAgICogcnVudGltZS9S
ZWdFeHBNYXRjaGVzQXJyYXkuaDoKKyAgICAgICAgKEpTQzo6UmVnRXhwTWF0Y2hlc0FycmF5Ojpn
ZXRPd25Qcm9wZXJ0eVNsb3QpOgorICAgICAgICAoSlNDOjpSZWdFeHBNYXRjaGVzQXJyYXk6Omdl
dE93blByb3BlcnR5RGVzY3JpcHRvcik6CisgICAgICAgIChKU0M6OlJlZ0V4cE1hdGNoZXNBcnJh
eTo6cHV0KToKKyAgICAgICAgKEpTQzo6UmVnRXhwTWF0Y2hlc0FycmF5OjpkZWxldGVQcm9wZXJ0
eSk6CisgICAgICAgIChKU0M6OlJlZ0V4cE1hdGNoZXNBcnJheTo6ZGVmaW5lT3duUHJvcGVydHkp
OgorICAgICAgICAqIHJ1bnRpbWUvUmVnRXhwT2JqZWN0LmNwcDoKKyAgICAgICAgKEpTQyk6Cisg
ICAgICAgIChKU0M6OlJlZ0V4cE9iamVjdDo6Z2V0T3duUHJvcGVydHlTbG90KToKKyAgICAgICAg
KEpTQzo6UmVnRXhwT2JqZWN0OjpnZXRPd25Qcm9wZXJ0eURlc2NyaXB0b3IpOgorICAgICAgICAo
SlNDOjpSZWdFeHBPYmplY3Q6OmRlbGV0ZVByb3BlcnR5KToKKyAgICAgICAgKEpTQzo6UmVnRXhw
T2JqZWN0OjpkZWZpbmVPd25Qcm9wZXJ0eSk6CisgICAgICAgIChKU0M6OnJlZ0V4cE9iamVjdEds
b2JhbCk6CisgICAgICAgIChKU0M6OnJlZ0V4cE9iamVjdElnbm9yZUNhc2UpOgorICAgICAgICAo
SlNDOjpyZWdFeHBPYmplY3RNdWx0aWxpbmUpOgorICAgICAgICAoSlNDOjpyZWdFeHBPYmplY3RT
b3VyY2UpOgorICAgICAgICAoSlNDOjpSZWdFeHBPYmplY3Q6OnB1dCk6CisgICAgICAgICogcnVu
dGltZS9SZWdFeHBPYmplY3QuaDoKKyAgICAgICAgKFJlZ0V4cE9iamVjdCk6CisgICAgICAgICog
cnVudGltZS9SZWdFeHBQcm90b3R5cGUuY3BwOgorICAgICAgICAoSlNDOjpSZWdFeHBQcm90b3R5
cGU6OmdldE93blByb3BlcnR5U2xvdCk6CisgICAgICAgIChKU0M6OlJlZ0V4cFByb3RvdHlwZTo6
Z2V0T3duUHJvcGVydHlEZXNjcmlwdG9yKToKKyAgICAgICAgKiBydW50aW1lL1JlZ0V4cFByb3Rv
dHlwZS5oOgorICAgICAgICAoUmVnRXhwUHJvdG90eXBlKToKKyAgICAgICAgKiBydW50aW1lL1N0
cmljdEV2YWxBY3RpdmF0aW9uLmNwcDoKKyAgICAgICAgKEpTQzo6U3RyaWN0RXZhbEFjdGl2YXRp
b246OmRlbGV0ZVByb3BlcnR5KToKKyAgICAgICAgKiBydW50aW1lL1N0cmljdEV2YWxBY3RpdmF0
aW9uLmg6CisgICAgICAgIChTdHJpY3RFdmFsQWN0aXZhdGlvbik6CisgICAgICAgICogcnVudGlt
ZS9TdHJpbmdDb25zdHJ1Y3Rvci5jcHA6CisgICAgICAgIChKU0M6OlN0cmluZ0NvbnN0cnVjdG9y
OjpmaW5pc2hDcmVhdGlvbik6CisgICAgICAgIChKU0M6OlN0cmluZ0NvbnN0cnVjdG9yOjpnZXRP
d25Qcm9wZXJ0eVNsb3QpOgorICAgICAgICAoSlNDOjpTdHJpbmdDb25zdHJ1Y3Rvcjo6Z2V0T3du
UHJvcGVydHlEZXNjcmlwdG9yKToKKyAgICAgICAgKiBydW50aW1lL1N0cmluZ0NvbnN0cnVjdG9y
Lmg6CisgICAgICAgIChTdHJpbmdDb25zdHJ1Y3Rvcik6CisgICAgICAgICogcnVudGltZS9TdHJp
bmdPYmplY3QuY3BwOgorICAgICAgICAoSlNDOjpTdHJpbmdPYmplY3Q6OmdldE93blByb3BlcnR5
U2xvdCk6CisgICAgICAgIChKU0M6OlN0cmluZ09iamVjdDo6Z2V0T3duUHJvcGVydHlEZXNjcmlw
dG9yKToKKyAgICAgICAgKEpTQzo6U3RyaW5nT2JqZWN0OjpwdXQpOgorICAgICAgICAoSlNDOjpT
dHJpbmdPYmplY3Q6OmRlZmluZU93blByb3BlcnR5KToKKyAgICAgICAgKEpTQzo6U3RyaW5nT2Jq
ZWN0OjpkZWxldGVQcm9wZXJ0eSk6CisgICAgICAgICogcnVudGltZS9TdHJpbmdPYmplY3QuaDoK
KyAgICAgICAgKFN0cmluZ09iamVjdCk6CisgICAgICAgICogcnVudGltZS9TdHJpbmdQcm90b3R5
cGUuY3BwOgorICAgICAgICAoSlNDOjpTdHJpbmdQcm90b3R5cGU6OmdldE93blByb3BlcnR5U2xv
dCk6CisgICAgICAgIChKU0M6OlN0cmluZ1Byb3RvdHlwZTo6Z2V0T3duUHJvcGVydHlEZXNjcmlw
dG9yKToKKyAgICAgICAgKiBydW50aW1lL1N0cmluZ1Byb3RvdHlwZS5oOgorICAgICAgICAoU3Ry
aW5nUHJvdG90eXBlKToKKyAgICAgICAgKiBydW50aW1lL1N0cnVjdHVyZS5jcHA6CisgICAgICAg
IChKU0M6OlN0cnVjdHVyZTo6ZGVzcGVjaWZ5RGljdGlvbmFyeUZ1bmN0aW9uKToKKyAgICAgICAg
KEpTQzo6U3RydWN0dXJlOjphZGRQcm9wZXJ0eVRyYW5zaXRpb25Ub0V4aXN0aW5nU3RydWN0dXJl
KToKKyAgICAgICAgKEpTQzo6U3RydWN0dXJlOjphZGRQcm9wZXJ0eVRyYW5zaXRpb24pOgorICAg
ICAgICAoSlNDOjpTdHJ1Y3R1cmU6OnJlbW92ZVByb3BlcnR5VHJhbnNpdGlvbik6CisgICAgICAg
IChKU0M6OlN0cnVjdHVyZTo6ZGVzcGVjaWZ5RnVuY3Rpb25UcmFuc2l0aW9uKToKKyAgICAgICAg
KEpTQzo6U3RydWN0dXJlOjphdHRyaWJ1dGVDaGFuZ2VUcmFuc2l0aW9uKToKKyAgICAgICAgKEpT
Qzo6U3RydWN0dXJlOjphZGRQcm9wZXJ0eVdpdGhvdXRUcmFuc2l0aW9uKToKKyAgICAgICAgKEpT
Qzo6U3RydWN0dXJlOjpyZW1vdmVQcm9wZXJ0eVdpdGhvdXRUcmFuc2l0aW9uKToKKyAgICAgICAg
KEpTQzo6U3RydWN0dXJlOjpnZXQpOgorICAgICAgICAoSlNDOjpTdHJ1Y3R1cmU6OmRlc3BlY2lm
eUZ1bmN0aW9uKToKKyAgICAgICAgKEpTQzo6U3RydWN0dXJlOjpwdXRTcGVjaWZpY1ZhbHVlKToK
KyAgICAgICAgKEpTQzo6U3RydWN0dXJlOjpyZW1vdmUpOgorICAgICAgICAqIHJ1bnRpbWUvU3Ry
dWN0dXJlLmg6CisgICAgICAgIChTdHJ1Y3R1cmUpOgorICAgICAgICAoSlNDOjpTdHJ1Y3R1cmU6
OmdldCk6CisKIDIwMTItMDUtMTEgIFNhbSBXZWluaWcgIDxzYW1Ad2Via2l0Lm9yZz4KIAogICAg
ICAgICBGaXggY3Jhc2ggc2VlbiB3aGVuIHJ1bm5pbmcgd2l0aCBsaWJnbWFsbG9jCkluZGV4OiBT
b3VyY2UvSmF2YVNjcmlwdENvcmUvSlNDVHlwZWRBcnJheVN0dWJzLmgKPT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0g
U291cmNlL0phdmFTY3JpcHRDb3JlL0pTQ1R5cGVkQXJyYXlTdHVicy5oCShyZXZpc2lvbiAxMTY2
NjcpCisrKyBTb3VyY2UvSmF2YVNjcmlwdENvcmUvSlNDVHlwZWRBcnJheVN0dWJzLmgJKHdvcmtp
bmcgY29weSkKQEAgLTUyLDEwICs1MiwxMCBAQCBwdWJsaWM6IFwKICAgICAgICAgcmV0dXJuIHB0
cjsgXAogICAgIH1cCiBcCi0gICAgc3RhdGljIGJvb2wgZ2V0T3duUHJvcGVydHlTbG90KEpTQzo6
SlNDZWxsKiwgSlNDOjpFeGVjU3RhdGUqLCBjb25zdCBKU0M6OklkZW50aWZpZXImIHByb3BlcnR5
TmFtZSwgSlNDOjpQcm9wZXJ0eVNsb3QmKTtcCi0gICAgc3RhdGljIGJvb2wgZ2V0T3duUHJvcGVy
dHlEZXNjcmlwdG9yKEpTQzo6SlNPYmplY3QqLCBKU0M6OkV4ZWNTdGF0ZSosIGNvbnN0IEpTQzo6
SWRlbnRpZmllciYgcHJvcGVydHlOYW1lLCBKU0M6OlByb3BlcnR5RGVzY3JpcHRvciYpO1wKKyAg
ICBzdGF0aWMgYm9vbCBnZXRPd25Qcm9wZXJ0eVNsb3QoSlNDOjpKU0NlbGwqLCBKU0M6OkV4ZWNT
dGF0ZSosIEpTQzo6UHJvcGVydHlOYW1lIHByb3BlcnR5TmFtZSwgSlNDOjpQcm9wZXJ0eVNsb3Qm
KTtcCisgICAgc3RhdGljIGJvb2wgZ2V0T3duUHJvcGVydHlEZXNjcmlwdG9yKEpTQzo6SlNPYmpl
Y3QqLCBKU0M6OkV4ZWNTdGF0ZSosIEpTQzo6UHJvcGVydHlOYW1lIHByb3BlcnR5TmFtZSwgSlND
OjpQcm9wZXJ0eURlc2NyaXB0b3ImKTtcCiAgICAgc3RhdGljIGJvb2wgZ2V0T3duUHJvcGVydHlT
bG90QnlJbmRleChKU0M6OkpTQ2VsbCosIEpTQzo6RXhlY1N0YXRlKiwgdW5zaWduZWQgcHJvcGVy
dHlOYW1lLCBKU0M6OlByb3BlcnR5U2xvdCYpO1wKLSAgICBzdGF0aWMgdm9pZCBwdXQoSlNDOjpK
U0NlbGwqLCBKU0M6OkV4ZWNTdGF0ZSosIGNvbnN0IEpTQzo6SWRlbnRpZmllciYgcHJvcGVydHlO
YW1lLCBKU0M6OkpTVmFsdWUsIEpTQzo6UHV0UHJvcGVydHlTbG90Jik7XAorICAgIHN0YXRpYyB2
b2lkIHB1dChKU0M6OkpTQ2VsbCosIEpTQzo6RXhlY1N0YXRlKiwgSlNDOjpQcm9wZXJ0eU5hbWUg
cHJvcGVydHlOYW1lLCBKU0M6OkpTVmFsdWUsIEpTQzo6UHV0UHJvcGVydHlTbG90Jik7XAogICAg
IHN0YXRpYyB2b2lkIHB1dEJ5SW5kZXgoSlNDOjpKU0NlbGwqLCBKU0M6OkV4ZWNTdGF0ZSosIHVu
c2lnbmVkIHByb3BlcnR5TmFtZSwgSlNDOjpKU1ZhbHVlLCBib29sKTtcCiAgICAgc3RhdGljIGNv
bnN0IEpTQzo6Q2xhc3NJbmZvIHNfaW5mbztcCiBcCkBAIC05OCwyNiArOTgsMjYgQEAgdm9pZCBK
UyMjbmFtZSMjQXJyYXk6OmZpbmlzaENyZWF0aW9uKEpTRwogICAgIEFTU0VSVChpbmhlcml0cygm
c19pbmZvKSk7XAogfVwKIFwKLWJvb2wgSlMjI25hbWUjI0FycmF5OjpnZXRPd25Qcm9wZXJ0eVNs
b3QoSlNDZWxsKiBjZWxsLCBFeGVjU3RhdGUqIGV4ZWMsIGNvbnN0IElkZW50aWZpZXImIHByb3Bl
cnR5TmFtZSwgUHJvcGVydHlTbG90JiBzbG90KVwKK2Jvb2wgSlMjI25hbWUjI0FycmF5OjpnZXRP
d25Qcm9wZXJ0eVNsb3QoSlNDZWxsKiBjZWxsLCBFeGVjU3RhdGUqIGV4ZWMsIFByb3BlcnR5TmFt
ZSBwcm9wZXJ0eU5hbWUsIFByb3BlcnR5U2xvdCYgc2xvdClcCiB7XAogICAgIEpTIyNuYW1lIyNB
cnJheSogdGhpc09iamVjdCA9IGpzQ2FzdDxKUyMjbmFtZSMjQXJyYXkqPihjZWxsKTtcCiAgICAg
QVNTRVJUX0dDX09CSkVDVF9JTkhFUklUUyh0aGlzT2JqZWN0LCAmc19pbmZvKTtcCi0gICAgYm9v
bCBvaztcCi0gICAgdW5zaWduZWQgaW5kZXggPSBwcm9wZXJ0eU5hbWUudG9VSW50MzIob2spO1wK
LSAgICBpZiAob2sgJiYgaW5kZXggPCB0aGlzT2JqZWN0LT5tX3N0b3JhZ2VMZW5ndGgpIHtcCisg
ICAgdW5zaWduZWQgaW5kZXggPSBwcm9wZXJ0eU5hbWUuYXNJbmRleCgpO1wKKyAgICBpZiAoaW5k
ZXggPCB0aGlzT2JqZWN0LT5tX3N0b3JhZ2VMZW5ndGgpIHtcCisgICAgICAgIEFTU0VSVChpbmRl
eCAhPSBQcm9wZXJ0eU5hbWU6Ok5vdEFuSW5kZXgpO1wKICAgICAgICAgc2xvdC5zZXRWYWx1ZSh0
aGlzT2JqZWN0LT5nZXRCeUluZGV4KGV4ZWMsIGluZGV4KSk7XAogICAgICAgICByZXR1cm4gdHJ1
ZTtcCiAgICAgfVwKICAgICByZXR1cm4gQmFzZTo6Z2V0T3duUHJvcGVydHlTbG90KGNlbGwsIGV4
ZWMsIHByb3BlcnR5TmFtZSwgc2xvdCk7XAogfVwKIFwKLWJvb2wgSlMjI25hbWUjI0FycmF5Ojpn
ZXRPd25Qcm9wZXJ0eURlc2NyaXB0b3IoSlNPYmplY3QqIG9iamVjdCwgRXhlY1N0YXRlKiBleGVj
LCBjb25zdCBJZGVudGlmaWVyJiBwcm9wZXJ0eU5hbWUsIFByb3BlcnR5RGVzY3JpcHRvciYgZGVz
Y3JpcHRvcilcCitib29sIEpTIyNuYW1lIyNBcnJheTo6Z2V0T3duUHJvcGVydHlEZXNjcmlwdG9y
KEpTT2JqZWN0KiBvYmplY3QsIEV4ZWNTdGF0ZSogZXhlYywgUHJvcGVydHlOYW1lIHByb3BlcnR5
TmFtZSwgUHJvcGVydHlEZXNjcmlwdG9yJiBkZXNjcmlwdG9yKVwKIHtcCiAgICAgSlMjI25hbWUj
I0FycmF5KiB0aGlzT2JqZWN0ID0ganNDYXN0PEpTIyNuYW1lIyNBcnJheSo+KG9iamVjdCk7XAog
ICAgIEFTU0VSVF9HQ19PQkpFQ1RfSU5IRVJJVFModGhpc09iamVjdCwgJnNfaW5mbyk7XAotICAg
IGJvb2wgb2s7XAotICAgIHVuc2lnbmVkIGluZGV4ID0gcHJvcGVydHlOYW1lLnRvVUludDMyKG9r
KTtcCi0gICAgaWYgKG9rICYmIGluZGV4IDwgdGhpc09iamVjdC0+bV9zdG9yYWdlTGVuZ3RoKSB7
XAorICAgIHVuc2lnbmVkIGluZGV4ID0gcHJvcGVydHlOYW1lLmFzSW5kZXgoKTtcCisgICAgaWYg
KGluZGV4IDwgdGhpc09iamVjdC0+bV9zdG9yYWdlTGVuZ3RoKSB7XAorICAgICAgICBBU1NFUlQo
aW5kZXggIT0gUHJvcGVydHlOYW1lOjpOb3RBbkluZGV4KTtcCiAgICAgICAgIGRlc2NyaXB0b3Iu
c2V0RGVzY3JpcHRvcih0aGlzT2JqZWN0LT5nZXRCeUluZGV4KGV4ZWMsIGluZGV4KSwgRG9udERl
bGV0ZSk7XAogICAgICAgICByZXR1cm4gdHJ1ZTtcCiAgICAgfVwKQEAgLTEzNSwxMyArMTM1LDEy
IEBAIGJvb2wgSlMjI25hbWUjI0FycmF5OjpnZXRPd25Qcm9wZXJ0eVNsb3QKICAgICByZXR1cm4g
dGhpc09iamVjdC0+bWV0aG9kVGFibGUoKS0+Z2V0T3duUHJvcGVydHlTbG90KHRoaXNPYmplY3Qs
IGV4ZWMsIElkZW50aWZpZXI6OmZyb20oZXhlYywgcHJvcGVydHlOYW1lKSwgc2xvdCk7XAogfVwK
IFwKLXZvaWQgSlMjI25hbWUjI0FycmF5OjpwdXQoSlNDZWxsKiBjZWxsLCBFeGVjU3RhdGUqIGV4
ZWMsIGNvbnN0IElkZW50aWZpZXImIHByb3BlcnR5TmFtZSwgSlNWYWx1ZSB2YWx1ZSwgUHV0UHJv
cGVydHlTbG90JiBzbG90KVwKK3ZvaWQgSlMjI25hbWUjI0FycmF5OjpwdXQoSlNDZWxsKiBjZWxs
LCBFeGVjU3RhdGUqIGV4ZWMsIFByb3BlcnR5TmFtZSBwcm9wZXJ0eU5hbWUsIEpTVmFsdWUgdmFs
dWUsIFB1dFByb3BlcnR5U2xvdCYgc2xvdClcCiB7XAogICAgIEpTIyNuYW1lIyNBcnJheSogdGhp
c09iamVjdCA9IGpzQ2FzdDxKUyMjbmFtZSMjQXJyYXkqPihjZWxsKTtcCiAgICAgQVNTRVJUX0dD
X09CSkVDVF9JTkhFUklUUyh0aGlzT2JqZWN0LCAmc19pbmZvKTtcCi0gICAgYm9vbCBvaztcCi0g
ICAgdW5zaWduZWQgaW5kZXggPSBwcm9wZXJ0eU5hbWUudG9VSW50MzIob2spO1wKLSAgICBpZiAo
b2spIHtcCisgICAgdW5zaWduZWQgaW5kZXggPSBwcm9wZXJ0eU5hbWUuYXNJbmRleCgpO1wKKyAg
ICBpZiAoaW5kZXggIT0gUHJvcGVydHlOYW1lOjpOb3RBbkluZGV4KSB7XAogICAgICAgICB0aGlz
T2JqZWN0LT5pbmRleFNldHRlcihleGVjLCBpbmRleCwgdmFsdWUpO1wKICAgICAgICAgcmV0dXJu
O1wKICAgICB9XApJbmRleDogU291cmNlL0phdmFTY3JpcHRDb3JlL2pzYy5jcHAKPT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PQotLS0gU291cmNlL0phdmFTY3JpcHRDb3JlL2pzYy5jcHAJKHJldmlzaW9uIDExNjY2NykKKysr
IFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9qc2MuY3BwCSh3b3JraW5nIGNvcHkpCkBAIC0yMTgsMTMg
KzIxOCwxMyBAQCBwcm90ZWN0ZWQ6CiAgICAgdm9pZCBhZGRGdW5jdGlvbihKU0dsb2JhbERhdGEm
IGdsb2JhbERhdGEsIGNvbnN0IGNoYXIqIG5hbWUsIE5hdGl2ZUZ1bmN0aW9uIGZ1bmN0aW9uLCB1
bnNpZ25lZCBhcmd1bWVudHMpCiAgICAgewogICAgICAgICBJZGVudGlmaWVyIGlkZW50aWZpZXIo
Z2xvYmFsRXhlYygpLCBuYW1lKTsKLSAgICAgICAgcHV0RGlyZWN0KGdsb2JhbERhdGEsIGlkZW50
aWZpZXIsIEpTRnVuY3Rpb246OmNyZWF0ZShnbG9iYWxFeGVjKCksIHRoaXMsIGFyZ3VtZW50cywg
aWRlbnRpZmllciwgZnVuY3Rpb24pKTsKKyAgICAgICAgcHV0RGlyZWN0KGdsb2JhbERhdGEsIGlk
ZW50aWZpZXIsIEpTRnVuY3Rpb246OmNyZWF0ZShnbG9iYWxFeGVjKCksIHRoaXMsIGFyZ3VtZW50
cywgaWRlbnRpZmllci51c3RyaW5nKCksIGZ1bmN0aW9uKSk7CiAgICAgfQogICAgIAogICAgIHZv
aWQgYWRkQ29uc3RydWN0YWJsZUZ1bmN0aW9uKEpTR2xvYmFsRGF0YSYgZ2xvYmFsRGF0YSwgY29u
c3QgY2hhciogbmFtZSwgTmF0aXZlRnVuY3Rpb24gZnVuY3Rpb24sIHVuc2lnbmVkIGFyZ3VtZW50
cykKICAgICB7CiAgICAgICAgIElkZW50aWZpZXIgaWRlbnRpZmllcihnbG9iYWxFeGVjKCksIG5h
bWUpOwotICAgICAgICBwdXREaXJlY3QoZ2xvYmFsRGF0YSwgaWRlbnRpZmllciwgSlNGdW5jdGlv
bjo6Y3JlYXRlKGdsb2JhbEV4ZWMoKSwgdGhpcywgYXJndW1lbnRzLCBpZGVudGlmaWVyLCBmdW5j
dGlvbiwgTm9JbnRyaW5zaWMsIGZ1bmN0aW9uKSk7CisgICAgICAgIHB1dERpcmVjdChnbG9iYWxE
YXRhLCBpZGVudGlmaWVyLCBKU0Z1bmN0aW9uOjpjcmVhdGUoZ2xvYmFsRXhlYygpLCB0aGlzLCBh
cmd1bWVudHMsIGlkZW50aWZpZXIudXN0cmluZygpLCBmdW5jdGlvbiwgTm9JbnRyaW5zaWMsIGZ1
bmN0aW9uKSk7CiAgICAgfQogfTsKIENPTVBJTEVfQVNTRVJUKCFJc0ludGVnZXI8R2xvYmFsT2Jq
ZWN0Pjo6dmFsdWUsIFdURl9Jc0ludGVnZXJfR2xvYmFsT2JqZWN0X2ZhbHNlKTsKSW5kZXg6IFNv
dXJjZS9KYXZhU2NyaXB0Q29yZS9BUEkvSlNDYWxsYmFja0Z1bmN0aW9uLmNwcAo9PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
Ci0tLSBTb3VyY2UvSmF2YVNjcmlwdENvcmUvQVBJL0pTQ2FsbGJhY2tGdW5jdGlvbi5jcHAJKHJl
dmlzaW9uIDExNjY2NykKKysrIFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9BUEkvSlNDYWxsYmFja0Z1
bmN0aW9uLmNwcAkod29ya2luZyBjb3B5KQpAQCAtNDksNyArNDksNyBAQCBKU0NhbGxiYWNrRnVu
Y3Rpb246OkpTQ2FsbGJhY2tGdW5jdGlvbihKCiB7CiB9CiAKLXZvaWQgSlNDYWxsYmFja0Z1bmN0
aW9uOjpmaW5pc2hDcmVhdGlvbihKU0dsb2JhbERhdGEmIGdsb2JhbERhdGEsIGNvbnN0IElkZW50
aWZpZXImIG5hbWUpCit2b2lkIEpTQ2FsbGJhY2tGdW5jdGlvbjo6ZmluaXNoQ3JlYXRpb24oSlNH
bG9iYWxEYXRhJiBnbG9iYWxEYXRhLCBjb25zdCBVU3RyaW5nJiBuYW1lKQogewogICAgIEJhc2U6
OmZpbmlzaENyZWF0aW9uKGdsb2JhbERhdGEsIG5hbWUpOwogICAgIEFTU0VSVChpbmhlcml0cygm
c19pbmZvKSk7CkluZGV4OiBTb3VyY2UvSmF2YVNjcmlwdENvcmUvQVBJL0pTQ2FsbGJhY2tGdW5j
dGlvbi5oCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9BUEkvSlNDYWxsYmFj
a0Z1bmN0aW9uLmgJKHJldmlzaW9uIDExNjY2NykKKysrIFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9B
UEkvSlNDYWxsYmFja0Z1bmN0aW9uLmgJKHdvcmtpbmcgY29weSkKQEAgLTM0LDEyICszNCwxMiBA
QCBuYW1lc3BhY2UgSlNDIHsKIGNsYXNzIEpTQ2FsbGJhY2tGdW5jdGlvbiA6IHB1YmxpYyBJbnRl
cm5hbEZ1bmN0aW9uIHsKIHByb3RlY3RlZDoKICAgICBKU0NhbGxiYWNrRnVuY3Rpb24oSlNHbG9i
YWxPYmplY3QqLCBKU09iamVjdENhbGxBc0Z1bmN0aW9uQ2FsbGJhY2spOwotICAgIHZvaWQgZmlu
aXNoQ3JlYXRpb24oSlNHbG9iYWxEYXRhJiwgY29uc3QgSWRlbnRpZmllciYgbmFtZSk7CisgICAg
dm9pZCBmaW5pc2hDcmVhdGlvbihKU0dsb2JhbERhdGEmLCBjb25zdCBVU3RyaW5nJiBuYW1lKTsK
IAogcHVibGljOgogICAgIHR5cGVkZWYgSW50ZXJuYWxGdW5jdGlvbiBCYXNlOwogCi0gICAgc3Rh
dGljIEpTQ2FsbGJhY2tGdW5jdGlvbiogY3JlYXRlKEV4ZWNTdGF0ZSogZXhlYywgSlNHbG9iYWxP
YmplY3QqIGdsb2JhbE9iamVjdCwgSlNPYmplY3RDYWxsQXNGdW5jdGlvbkNhbGxiYWNrIGNhbGxi
YWNrLCBjb25zdCBJZGVudGlmaWVyJiBuYW1lKQorICAgIHN0YXRpYyBKU0NhbGxiYWNrRnVuY3Rp
b24qIGNyZWF0ZShFeGVjU3RhdGUqIGV4ZWMsIEpTR2xvYmFsT2JqZWN0KiBnbG9iYWxPYmplY3Qs
IEpTT2JqZWN0Q2FsbEFzRnVuY3Rpb25DYWxsYmFjayBjYWxsYmFjaywgY29uc3QgVVN0cmluZyYg
bmFtZSkKICAgICB7CiAgICAgICAgIEpTQ2FsbGJhY2tGdW5jdGlvbiogZnVuY3Rpb24gPSBuZXcg
KE5vdE51bGwsIGFsbG9jYXRlQ2VsbDxKU0NhbGxiYWNrRnVuY3Rpb24+KCpleGVjLT5oZWFwKCkp
KSBKU0NhbGxiYWNrRnVuY3Rpb24oZ2xvYmFsT2JqZWN0LCBjYWxsYmFjayk7CiAgICAgICAgIGZ1
bmN0aW9uLT5maW5pc2hDcmVhdGlvbihleGVjLT5nbG9iYWxEYXRhKCksIG5hbWUpOwpJbmRleDog
U291cmNlL0phdmFTY3JpcHRDb3JlL0FQSS9KU0NhbGxiYWNrT2JqZWN0LmgKPT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQot
LS0gU291cmNlL0phdmFTY3JpcHRDb3JlL0FQSS9KU0NhbGxiYWNrT2JqZWN0LmgJKHJldmlzaW9u
IDExNjY2NykKKysrIFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9BUEkvSlNDYWxsYmFja09iamVjdC5o
CSh3b3JraW5nIGNvcHkpCkBAIC0xNzcsMTIgKzE3NywxMiBAQCBwcml2YXRlOgogCiAgICAgc3Rh
dGljIEpTVmFsdWUgZGVmYXVsdFZhbHVlKGNvbnN0IEpTT2JqZWN0KiwgRXhlY1N0YXRlKiwgUHJl
ZmVycmVkUHJpbWl0aXZlVHlwZSk7CiAKLSAgICBzdGF0aWMgYm9vbCBnZXRPd25Qcm9wZXJ0eVNs
b3QoSlNDZWxsKiwgRXhlY1N0YXRlKiwgY29uc3QgSWRlbnRpZmllciYsIFByb3BlcnR5U2xvdCYp
OwotICAgIHN0YXRpYyBib29sIGdldE93blByb3BlcnR5RGVzY3JpcHRvcihKU09iamVjdCosIEV4
ZWNTdGF0ZSosIGNvbnN0IElkZW50aWZpZXImLCBQcm9wZXJ0eURlc2NyaXB0b3ImKTsKKyAgICBz
dGF0aWMgYm9vbCBnZXRPd25Qcm9wZXJ0eVNsb3QoSlNDZWxsKiwgRXhlY1N0YXRlKiwgUHJvcGVy
dHlOYW1lLCBQcm9wZXJ0eVNsb3QmKTsKKyAgICBzdGF0aWMgYm9vbCBnZXRPd25Qcm9wZXJ0eURl
c2NyaXB0b3IoSlNPYmplY3QqLCBFeGVjU3RhdGUqLCBQcm9wZXJ0eU5hbWUsIFByb3BlcnR5RGVz
Y3JpcHRvciYpOwogICAgIAotICAgIHN0YXRpYyB2b2lkIHB1dChKU0NlbGwqLCBFeGVjU3RhdGUq
LCBjb25zdCBJZGVudGlmaWVyJiwgSlNWYWx1ZSwgUHV0UHJvcGVydHlTbG90Jik7CisgICAgc3Rh
dGljIHZvaWQgcHV0KEpTQ2VsbCosIEV4ZWNTdGF0ZSosIFByb3BlcnR5TmFtZSwgSlNWYWx1ZSwg
UHV0UHJvcGVydHlTbG90Jik7CiAKLSAgICBzdGF0aWMgYm9vbCBkZWxldGVQcm9wZXJ0eShKU0Nl
bGwqLCBFeGVjU3RhdGUqLCBjb25zdCBJZGVudGlmaWVyJik7CisgICAgc3RhdGljIGJvb2wgZGVs
ZXRlUHJvcGVydHkoSlNDZWxsKiwgRXhlY1N0YXRlKiwgUHJvcGVydHlOYW1lKTsKICAgICBzdGF0
aWMgYm9vbCBkZWxldGVQcm9wZXJ0eUJ5SW5kZXgoSlNDZWxsKiwgRXhlY1N0YXRlKiwgdW5zaWdu
ZWQpOwogCiAgICAgc3RhdGljIGJvb2wgaGFzSW5zdGFuY2UoSlNPYmplY3QqLCBFeGVjU3RhdGUq
LCBKU1ZhbHVlLCBKU1ZhbHVlIHByb3RvKTsKQEAgLTIwOSw5ICsyMDksOSBAQCBwcml2YXRlOgog
ICAgIHN0YXRpYyBFbmNvZGVkSlNWYWx1ZSBKU0NfSE9TVF9DQUxMIGNhbGwoRXhlY1N0YXRlKik7
CiAgICAgc3RhdGljIEVuY29kZWRKU1ZhbHVlIEpTQ19IT1NUX0NBTEwgY29uc3RydWN0KEV4ZWNT
dGF0ZSopOwogICAgCi0gICAgSlNWYWx1ZSBnZXRTdGF0aWNWYWx1ZShFeGVjU3RhdGUqLCBjb25z
dCBJZGVudGlmaWVyJik7Ci0gICAgc3RhdGljIEpTVmFsdWUgc3RhdGljRnVuY3Rpb25HZXR0ZXIo
RXhlY1N0YXRlKiwgSlNWYWx1ZSwgY29uc3QgSWRlbnRpZmllciYpOwotICAgIHN0YXRpYyBKU1Zh
bHVlIGNhbGxiYWNrR2V0dGVyKEV4ZWNTdGF0ZSosIEpTVmFsdWUsIGNvbnN0IElkZW50aWZpZXIm
KTsKKyAgICBKU1ZhbHVlIGdldFN0YXRpY1ZhbHVlKEV4ZWNTdGF0ZSosIFByb3BlcnR5TmFtZSk7
CisgICAgc3RhdGljIEpTVmFsdWUgc3RhdGljRnVuY3Rpb25HZXR0ZXIoRXhlY1N0YXRlKiwgSlNW
YWx1ZSwgUHJvcGVydHlOYW1lKTsKKyAgICBzdGF0aWMgSlNWYWx1ZSBjYWxsYmFja0dldHRlcihF
eGVjU3RhdGUqLCBKU1ZhbHVlLCBQcm9wZXJ0eU5hbWUpOwogCiAgICAgT3duUHRyPEpTQ2FsbGJh
Y2tPYmplY3REYXRhPiBtX2NhbGxiYWNrT2JqZWN0RGF0YTsKIH07CkluZGV4OiBTb3VyY2UvSmF2
YVNjcmlwdENvcmUvQVBJL0pTQ2FsbGJhY2tPYmplY3RGdW5jdGlvbnMuaAo9PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0t
LSBTb3VyY2UvSmF2YVNjcmlwdENvcmUvQVBJL0pTQ2FsbGJhY2tPYmplY3RGdW5jdGlvbnMuaAko
cmV2aXNpb24gMTE2NjY3KQorKysgU291cmNlL0phdmFTY3JpcHRDb3JlL0FQSS9KU0NhbGxiYWNr
T2JqZWN0RnVuY3Rpb25zLmgJKHdvcmtpbmcgY29weSkKQEAgLTEyMiw3ICsxMjIsNyBAQCBVU3Ry
aW5nIEpTQ2FsbGJhY2tPYmplY3Q8UGFyZW50Pjo6Y2xhc3NOCiB9CiAKIHRlbXBsYXRlIDxjbGFz
cyBQYXJlbnQ+Ci1ib29sIEpTQ2FsbGJhY2tPYmplY3Q8UGFyZW50Pjo6Z2V0T3duUHJvcGVydHlT
bG90KEpTQ2VsbCogY2VsbCwgRXhlY1N0YXRlKiBleGVjLCBjb25zdCBJZGVudGlmaWVyJiBwcm9w
ZXJ0eU5hbWUsIFByb3BlcnR5U2xvdCYgc2xvdCkKK2Jvb2wgSlNDYWxsYmFja09iamVjdDxQYXJl
bnQ+OjpnZXRPd25Qcm9wZXJ0eVNsb3QoSlNDZWxsKiBjZWxsLCBFeGVjU3RhdGUqIGV4ZWMsIFBy
b3BlcnR5TmFtZSBwcm9wZXJ0eU5hbWUsIFByb3BlcnR5U2xvdCYgc2xvdCkKIHsKICAgICBKU0Nh
bGxiYWNrT2JqZWN0KiB0aGlzT2JqZWN0ID0ganNDYXN0PEpTQ2FsbGJhY2tPYmplY3QqPihjZWxs
KTsKICAgICBKU0NvbnRleHRSZWYgY3R4ID0gdG9SZWYoZXhlYyk7CkBAIC0yMDUsNyArMjA1LDcg
QEAgSlNWYWx1ZSBKU0NhbGxiYWNrT2JqZWN0PFBhcmVudD46OmRlZmF1bAogfQogCiB0ZW1wbGF0
ZSA8Y2xhc3MgUGFyZW50PgotYm9vbCBKU0NhbGxiYWNrT2JqZWN0PFBhcmVudD46OmdldE93blBy
b3BlcnR5RGVzY3JpcHRvcihKU09iamVjdCogb2JqZWN0LCBFeGVjU3RhdGUqIGV4ZWMsIGNvbnN0
IElkZW50aWZpZXImIHByb3BlcnR5TmFtZSwgUHJvcGVydHlEZXNjcmlwdG9yJiBkZXNjcmlwdG9y
KQorYm9vbCBKU0NhbGxiYWNrT2JqZWN0PFBhcmVudD46OmdldE93blByb3BlcnR5RGVzY3JpcHRv
cihKU09iamVjdCogb2JqZWN0LCBFeGVjU3RhdGUqIGV4ZWMsIFByb3BlcnR5TmFtZSBwcm9wZXJ0
eU5hbWUsIFByb3BlcnR5RGVzY3JpcHRvciYgZGVzY3JpcHRvcikKIHsKICAgICBKU0NhbGxiYWNr
T2JqZWN0KiB0aGlzT2JqZWN0ID0ganNDYXN0PEpTQ2FsbGJhY2tPYmplY3QqPihvYmplY3QpOwog
ICAgIFByb3BlcnR5U2xvdCBzbG90OwpAQCAtMjI1LDcgKzIyNSw3IEBAIGJvb2wgSlNDYWxsYmFj
a09iamVjdDxQYXJlbnQ+OjpnZXRPd25Qcm8KIH0KIAogdGVtcGxhdGUgPGNsYXNzIFBhcmVudD4K
LXZvaWQgSlNDYWxsYmFja09iamVjdDxQYXJlbnQ+OjpwdXQoSlNDZWxsKiBjZWxsLCBFeGVjU3Rh
dGUqIGV4ZWMsIGNvbnN0IElkZW50aWZpZXImIHByb3BlcnR5TmFtZSwgSlNWYWx1ZSB2YWx1ZSwg
UHV0UHJvcGVydHlTbG90JiBzbG90KQordm9pZCBKU0NhbGxiYWNrT2JqZWN0PFBhcmVudD46OnB1
dChKU0NlbGwqIGNlbGwsIEV4ZWNTdGF0ZSogZXhlYywgUHJvcGVydHlOYW1lIHByb3BlcnR5TmFt
ZSwgSlNWYWx1ZSB2YWx1ZSwgUHV0UHJvcGVydHlTbG90JiBzbG90KQogewogICAgIEpTQ2FsbGJh
Y2tPYmplY3QqIHRoaXNPYmplY3QgPSBqc0Nhc3Q8SlNDYWxsYmFja09iamVjdCo+KGNlbGwpOwog
ICAgIEpTQ29udGV4dFJlZiBjdHggPSB0b1JlZihleGVjKTsKQEAgLTI4NCw3ICsyODQsNyBAQCB2
b2lkIEpTQ2FsbGJhY2tPYmplY3Q8UGFyZW50Pjo6cHV0KEpTQ2VsCiB9CiAKIHRlbXBsYXRlIDxj
bGFzcyBQYXJlbnQ+Ci1ib29sIEpTQ2FsbGJhY2tPYmplY3Q8UGFyZW50Pjo6ZGVsZXRlUHJvcGVy
dHkoSlNDZWxsKiBjZWxsLCBFeGVjU3RhdGUqIGV4ZWMsIGNvbnN0IElkZW50aWZpZXImIHByb3Bl
cnR5TmFtZSkKK2Jvb2wgSlNDYWxsYmFja09iamVjdDxQYXJlbnQ+OjpkZWxldGVQcm9wZXJ0eShK
U0NlbGwqIGNlbGwsIEV4ZWNTdGF0ZSogZXhlYywgUHJvcGVydHlOYW1lIHByb3BlcnR5TmFtZSkK
IHsKICAgICBKU0NhbGxiYWNrT2JqZWN0KiB0aGlzT2JqZWN0ID0ganNDYXN0PEpTQ2FsbGJhY2tP
YmplY3QqPihjZWxsKTsKICAgICBKU0NvbnRleHRSZWYgY3R4ID0gdG9SZWYoZXhlYyk7CkBAIC01
MDQsNyArNTA0LDcgQEAgYm9vbCBKU0NhbGxiYWNrT2JqZWN0PFBhcmVudD46OmluaGVyaXRzKAog
fQogCiB0ZW1wbGF0ZSA8Y2xhc3MgUGFyZW50PgotSlNWYWx1ZSBKU0NhbGxiYWNrT2JqZWN0PFBh
cmVudD46OmdldFN0YXRpY1ZhbHVlKEV4ZWNTdGF0ZSogZXhlYywgY29uc3QgSWRlbnRpZmllciYg
cHJvcGVydHlOYW1lKQorSlNWYWx1ZSBKU0NhbGxiYWNrT2JqZWN0PFBhcmVudD46OmdldFN0YXRp
Y1ZhbHVlKEV4ZWNTdGF0ZSogZXhlYywgUHJvcGVydHlOYW1lIHByb3BlcnR5TmFtZSkKIHsKICAg
ICBKU09iamVjdFJlZiB0aGlzUmVmID0gdG9SZWYodGhpcyk7CiAgICAgUmVmUHRyPE9wYXF1ZUpT
U3RyaW5nPiBwcm9wZXJ0eU5hbWVSZWY7CkBAIC01MzMsNyArNTMzLDcgQEAgSlNWYWx1ZSBKU0Nh
bGxiYWNrT2JqZWN0PFBhcmVudD46OmdldFN0YQogfQogCiB0ZW1wbGF0ZSA8Y2xhc3MgUGFyZW50
PgotSlNWYWx1ZSBKU0NhbGxiYWNrT2JqZWN0PFBhcmVudD46OnN0YXRpY0Z1bmN0aW9uR2V0dGVy
KEV4ZWNTdGF0ZSogZXhlYywgSlNWYWx1ZSBzbG90UGFyZW50LCBjb25zdCBJZGVudGlmaWVyJiBw
cm9wZXJ0eU5hbWUpCitKU1ZhbHVlIEpTQ2FsbGJhY2tPYmplY3Q8UGFyZW50Pjo6c3RhdGljRnVu
Y3Rpb25HZXR0ZXIoRXhlY1N0YXRlKiBleGVjLCBKU1ZhbHVlIHNsb3RQYXJlbnQsIFByb3BlcnR5
TmFtZSBwcm9wZXJ0eU5hbWUpCiB7CiAgICAgSlNDYWxsYmFja09iamVjdCogdGhpc09iaiA9IGFz
Q2FsbGJhY2tPYmplY3Qoc2xvdFBhcmVudCk7CiAgICAgCkBAIC01NDcsNyArNTQ3LDcgQEAgSlNW
YWx1ZSBKU0NhbGxiYWNrT2JqZWN0PFBhcmVudD46OnN0YXRpYwogICAgICAgICAgICAgaWYgKFN0
YXRpY0Z1bmN0aW9uRW50cnkqIGVudHJ5ID0gc3RhdGljRnVuY3Rpb25zLT5nZXQocHJvcGVydHlO
YW1lLmltcGwoKSkpIHsKICAgICAgICAgICAgICAgICBpZiAoSlNPYmplY3RDYWxsQXNGdW5jdGlv
bkNhbGxiYWNrIGNhbGxBc0Z1bmN0aW9uID0gZW50cnktPmNhbGxBc0Z1bmN0aW9uKSB7CiAgICAg
ICAgICAgICAgICAgICAgIAotICAgICAgICAgICAgICAgICAgICBKU09iamVjdCogbyA9IEpTQ2Fs
bGJhY2tGdW5jdGlvbjo6Y3JlYXRlKGV4ZWMsIHRoaXNPYmotPmdsb2JhbE9iamVjdCgpLCBjYWxs
QXNGdW5jdGlvbiwgcHJvcGVydHlOYW1lKTsKKyAgICAgICAgICAgICAgICAgICAgSlNPYmplY3Qq
IG8gPSBKU0NhbGxiYWNrRnVuY3Rpb246OmNyZWF0ZShleGVjLCB0aGlzT2JqLT5nbG9iYWxPYmpl
Y3QoKSwgY2FsbEFzRnVuY3Rpb24sIHByb3BlcnR5TmFtZS51c3RyaW5nKCkpOwogICAgICAgICAg
ICAgICAgICAgICB0aGlzT2JqLT5wdXREaXJlY3QoZXhlYy0+Z2xvYmFsRGF0YSgpLCBwcm9wZXJ0
eU5hbWUsIG8sIGVudHJ5LT5hdHRyaWJ1dGVzKTsKICAgICAgICAgICAgICAgICAgICAgcmV0dXJu
IG87CiAgICAgICAgICAgICAgICAgfQpAQCAtNTU5LDcgKzU1OSw3IEBAIEpTVmFsdWUgSlNDYWxs
YmFja09iamVjdDxQYXJlbnQ+OjpzdGF0aWMKIH0KIAogdGVtcGxhdGUgPGNsYXNzIFBhcmVudD4K
LUpTVmFsdWUgSlNDYWxsYmFja09iamVjdDxQYXJlbnQ+OjpjYWxsYmFja0dldHRlcihFeGVjU3Rh
dGUqIGV4ZWMsIEpTVmFsdWUgc2xvdFBhcmVudCwgY29uc3QgSWRlbnRpZmllciYgcHJvcGVydHlO
YW1lKQorSlNWYWx1ZSBKU0NhbGxiYWNrT2JqZWN0PFBhcmVudD46OmNhbGxiYWNrR2V0dGVyKEV4
ZWNTdGF0ZSogZXhlYywgSlNWYWx1ZSBzbG90UGFyZW50LCBQcm9wZXJ0eU5hbWUgcHJvcGVydHlO
YW1lKQogewogICAgIEpTQ2FsbGJhY2tPYmplY3QqIHRoaXNPYmogPSBhc0NhbGxiYWNrT2JqZWN0
KHNsb3RQYXJlbnQpOwogICAgIApJbmRleDogU291cmNlL0phdmFTY3JpcHRDb3JlL0FQSS9KU09i
amVjdFJlZi5jcHAKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL0phdmFTY3JpcHRDb3JlL0FQSS9KU09i
amVjdFJlZi5jcHAJKHJldmlzaW9uIDExNjY2NykKKysrIFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9B
UEkvSlNPYmplY3RSZWYuY3BwCSh3b3JraW5nIGNvcHkpCkBAIC05MiwxMCArOTIsNyBAQCBKU09i
amVjdFJlZiBKU09iamVjdE1ha2VGdW5jdGlvbldpdGhDYWxsCiB7CiAgICAgRXhlY1N0YXRlKiBl
eGVjID0gdG9KUyhjdHgpOwogICAgIEFQSUVudHJ5U2hpbSBlbnRyeVNoaW0oZXhlYyk7Ci0KLSAg
ICBJZGVudGlmaWVyIG5hbWVJRCA9IG5hbWUgPyBuYW1lLT5pZGVudGlmaWVyKCZleGVjLT5nbG9i
YWxEYXRhKCkpIDogSWRlbnRpZmllcihleGVjLCAiYW5vbnltb3VzIik7Ci0gICAgCi0gICAgcmV0
dXJuIHRvUmVmKEpTQ2FsbGJhY2tGdW5jdGlvbjo6Y3JlYXRlKGV4ZWMsIGV4ZWMtPmxleGljYWxH
bG9iYWxPYmplY3QoKSwgY2FsbEFzRnVuY3Rpb24sIG5hbWVJRCkpOworICAgIHJldHVybiB0b1Jl
ZihKU0NhbGxiYWNrRnVuY3Rpb246OmNyZWF0ZShleGVjLCBleGVjLT5sZXhpY2FsR2xvYmFsT2Jq
ZWN0KCksIGNhbGxBc0Z1bmN0aW9uLCBuYW1lID8gbmFtZS0+dXN0cmluZygpIDogImFub255bW91
cyIpKTsKIH0KIAogSlNPYmplY3RSZWYgSlNPYmplY3RNYWtlQ29uc3RydWN0b3IoSlNDb250ZXh0
UmVmIGN0eCwgSlNDbGFzc1JlZiBqc0NsYXNzLCBKU09iamVjdENhbGxBc0NvbnN0cnVjdG9yQ2Fs
bGJhY2sgY2FsbEFzQ29uc3RydWN0b3IpCkluZGV4OiBTb3VyY2UvSmF2YVNjcmlwdENvcmUvSmF2
YVNjcmlwdENvcmUueGNvZGVwcm9qL3Byb2plY3QucGJ4cHJvago9PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3Vy
Y2UvSmF2YVNjcmlwdENvcmUvSmF2YVNjcmlwdENvcmUueGNvZGVwcm9qL3Byb2plY3QucGJ4cHJv
agkocmV2aXNpb24gMTE2NjcwKQorKysgU291cmNlL0phdmFTY3JpcHRDb3JlL0phdmFTY3JpcHRD
b3JlLnhjb2RlcHJvai9wcm9qZWN0LnBieHByb2oJKHdvcmtpbmcgY29weSkKQEAgLTM2Miw2ICsz
NjIsNyBAQAogCQk4NjA0RjUwNTE0M0NFMUMyMDBCMjk1RjUgLyogSlNHbG9iYWxUaGlzLmggaW4g
SGVhZGVycyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSA4NjA0RjUwMzE0M0NF
MUMxMDBCMjk1RjUgLyogSlNHbG9iYWxUaGlzLmggKi87IHNldHRpbmdzID0ge0FUVFJJQlVURVMg
PSAoUHJpdmF0ZSwgKTsgfTsgfTsKIAkJODYwQkQ4MDExNDhFQTZGMjAwMTEyQjJGIC8qIEludHJp
bnNpYy5oIGluIEhlYWRlcnMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gODZC
RjY0MkExNDhEQjJCNTAwNERFMzZBIC8qIEludHJpbnNpYy5oICovOyBzZXR0aW5ncyA9IHtBVFRS
SUJVVEVTID0gKFByaXZhdGUsICk7IH07IH07CiAJCTg2MTJFNENEMTUyMzg5RUMwMEM4MzZCRSAv
KiBNYXRjaFJlc3VsdC5oIGluIEhlYWRlcnMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxl
UmVmID0gODYxMkU0Q0IxNTIyOTE4NDAwQzgzNkJFIC8qIE1hdGNoUmVzdWx0LmggKi87IHNldHRp
bmdzID0ge0FUVFJJQlVURVMgPSAoUHJpdmF0ZSwgKTsgfTsgfTsKKwkJODYxNThBQjMxNTVDOEI0
MDAwQjQ1QzlDIC8qIFByb3BlcnR5TmFtZS5oIGluIEhlYWRlcnMgKi8gPSB7aXNhID0gUEJYQnVp
bGRGaWxlOyBmaWxlUmVmID0gODYxNThBQjIxNTVDOEIzRjAwQjQ1QzlDIC8qIFByb3BlcnR5TmFt
ZS5oICovOyBzZXR0aW5ncyA9IHtBVFRSSUJVVEVTID0gKFByaXZhdGUsICk7IH07IH07CiAJCTg2
M0IyM0UwMEZDNjExODkwMDcwM0FBNCAvKiBNYWNyb0Fzc2VtYmxlckNvZGVSZWYuaCBpbiBIZWFk
ZXJzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IDg2M0IyM0RGMEZDNjBFNjIw
MDcwM0FBNCAvKiBNYWNyb0Fzc2VtYmxlckNvZGVSZWYuaCAqLzsgc2V0dGluZ3MgPSB7QVRUUklC
VVRFUyA9IChQcml2YXRlLCApOyB9OyB9OwogCQk4NjNDNkQ5QzE1MjExMTFBMDA1ODVFNEUgLyog
WWFyckNhbm9uaWNhbGl6ZVVDUzIuY3BwIGluIFNvdXJjZXMgKi8gPSB7aXNhID0gUEJYQnVpbGRG
aWxlOyBmaWxlUmVmID0gODYzQzZEOTgxNTIxMTExMjAwNTg1RTRFIC8qIFlhcnJDYW5vbmljYWxp
emVVQ1MyLmNwcCAqLzsgfTsKIAkJODY0MkM1MTAxNTFDMDZBOTAwNDZENEVGIC8qIFJlZ0V4cENh
Y2hlZFJlc3VsdC5jcHAgaW4gU291cmNlcyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVS
ZWYgPSA4NkY3NUVGQjE1MUMwNjJGMDA3QzlCQTMgLyogUmVnRXhwQ2FjaGVkUmVzdWx0LmNwcCAq
LzsgfTsKQEAgLTEwMjAsNiArMTAyMSw3IEBACiAJCTg2MDRGNEYyMTQzQTZDNDQwMEIyOTVGNSAv
KiBDaGFuZ2VMb2cgKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgbGFzdEtub3duRmlsZVR5
cGUgPSB0ZXh0OyBwYXRoID0gQ2hhbmdlTG9nOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9Owog
CQk4NjA0RjUwMzE0M0NFMUMxMDBCMjk1RjUgLyogSlNHbG9iYWxUaGlzLmggKi8gPSB7aXNhID0g
UEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSBz
b3VyY2Vjb2RlLmMuaDsgcGF0aCA9IEpTR2xvYmFsVGhpcy5oOyBzb3VyY2VUcmVlID0gIjxncm91
cD4iOyB9OwogCQk4NjEyRTRDQjE1MjI5MTg0MDBDODM2QkUgLyogTWF0Y2hSZXN1bHQuaCAqLyA9
IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxl
VHlwZSA9IHNvdXJjZWNvZGUuYy5oOyBwYXRoID0gTWF0Y2hSZXN1bHQuaDsgc291cmNlVHJlZSA9
ICI8Z3JvdXA+IjsgfTsKKwkJODYxNThBQjIxNTVDOEIzRjAwQjQ1QzlDIC8qIFByb3BlcnR5TmFt
ZS5oICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RL
bm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jLmg7IHBhdGggPSBQcm9wZXJ0eU5hbWUuaDsgc291
cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKIAkJODYzQjIzREYwRkM2MEU2MjAwNzAzQUE0IC8qIE1h
Y3JvQXNzZW1ibGVyQ29kZVJlZi5oICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVF
bmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jLmg7IHBhdGggPSBN
YWNyb0Fzc2VtYmxlckNvZGVSZWYuaDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKIAkJODYz
QzZEOTgxNTIxMTExMjAwNTg1RTRFIC8qIFlhcnJDYW5vbmljYWxpemVVQ1MyLmNwcCAqLyA9IHtp
c2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlw
ZSA9IHNvdXJjZWNvZGUuY3BwLmNwcDsgbmFtZSA9IFlhcnJDYW5vbmljYWxpemVVQ1MyLmNwcDsg
cGF0aCA9IHlhcnIvWWFyckNhbm9uaWNhbGl6ZVVDUzIuY3BwOyBzb3VyY2VUcmVlID0gIjxncm91
cD4iOyB9OwogCQk4NjNDNkQ5OTE1MjExMTEyMDA1ODVFNEUgLyogWWFyckNhbm9uaWNhbGl6ZVVD
UzIuaCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0
S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuYy5oOyBuYW1lID0gWWFyckNhbm9uaWNhbGl6ZVVD
UzIuaDsgcGF0aCA9IHlhcnIvWWFyckNhbm9uaWNhbGl6ZVVDUzIuaDsgc291cmNlVHJlZSA9ICI8
Z3JvdXA+IjsgfTsKQEAgLTE5MzYsNiArMTkzOCw3IEBACiAJCQkJQTdGQjYwQTMxMDNGN0RDMjAw
MTdBMjg2IC8qIFByb3BlcnR5RGVzY3JpcHRvci5jcHAgKi8sCiAJCQkJQTdGQjYwNEIxMDNGNUVB
QjAwMTdBMjg2IC8qIFByb3BlcnR5RGVzY3JpcHRvci5oICovLAogCQkJCUJDOTU0MzdDMEVCQTcw
RkQwMDcyQjZEMyAvKiBQcm9wZXJ0eU1hcEhhc2hUYWJsZS5oICovLAorCQkJCTg2MTU4QUIyMTU1
QzhCM0YwMEI0NUM5QyAvKiBQcm9wZXJ0eU5hbWUuaCAqLywKIAkJCQk2NTQwMEMwRjBBNjlCQUYy
MDA1MDk4ODcgLyogUHJvcGVydHlOYW1lQXJyYXkuY3BwICovLAogCQkJCTY1NDAwQzEwMEE2OUJB
RjIwMDUwOTg4NyAvKiBQcm9wZXJ0eU5hbWVBcnJheS5oICovLAogCQkJCTY1NjIxRTZCMDg5RTg1
OTcwMDc2MEYzNSAvKiBQcm9wZXJ0eVNsb3QuY3BwICovLApAQCAtMjU4MCw2ICsyNTgzLDcgQEAK
IAkJCQkwRjFFM0E0NzE1MzRDQkI5MDAwRjk0NTYgLyogREZHRG91YmxlRm9ybWF0U3RhdGUuaCBp
biBIZWFkZXJzICovLAogCQkJCTE0MTUwMTMzMTU0QkIxM0YwMDVEOEM5OCAvKiBXZWFrU2V0SW5s
aW5lcy5oIGluIEhlYWRlcnMgKi8sCiAJCQkJMTQ4MTZFMUMxNTRDQzU2QzAwQjgwNTRDIC8qIEJs
b2NrQWxsb2NhdG9yLmggaW4gSGVhZGVycyAqLywKKwkJCQk4NjE1OEFCMzE1NUM4QjQwMDBCNDVD
OUMgLyogUHJvcGVydHlOYW1lLmggaW4gSGVhZGVycyAqLywKIAkJCSk7CiAJCQlydW5Pbmx5Rm9y
RGVwbG95bWVudFBvc3Rwcm9jZXNzaW5nID0gMDsKIAkJfTsKSW5kZXg6IFNvdXJjZS9KYXZhU2Ny
aXB0Q29yZS9kZWJ1Z2dlci9EZWJ1Z2dlckFjdGl2YXRpb24uY3BwCj09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNv
dXJjZS9KYXZhU2NyaXB0Q29yZS9kZWJ1Z2dlci9EZWJ1Z2dlckFjdGl2YXRpb24uY3BwCShyZXZp
c2lvbiAxMTY2NjcpCisrKyBTb3VyY2UvSmF2YVNjcmlwdENvcmUvZGVidWdnZXIvRGVidWdnZXJB
Y3RpdmF0aW9uLmNwcAkod29ya2luZyBjb3B5KQpAQCAtNjUsMjUgKzY1LDI1IEBAIFVTdHJpbmcg
RGVidWdnZXJBY3RpdmF0aW9uOjpjbGFzc05hbWUoY28KICAgICByZXR1cm4gdGhpc09iamVjdC0+
bV9hY3RpdmF0aW9uLT5tZXRob2RUYWJsZSgpLT5jbGFzc05hbWUodGhpc09iamVjdC0+bV9hY3Rp
dmF0aW9uLmdldCgpKTsKIH0KIAotYm9vbCBEZWJ1Z2dlckFjdGl2YXRpb246OmdldE93blByb3Bl
cnR5U2xvdChKU0NlbGwqIGNlbGwsIEV4ZWNTdGF0ZSogZXhlYywgY29uc3QgSWRlbnRpZmllciYg
cHJvcGVydHlOYW1lLCBQcm9wZXJ0eVNsb3QmIHNsb3QpCitib29sIERlYnVnZ2VyQWN0aXZhdGlv
bjo6Z2V0T3duUHJvcGVydHlTbG90KEpTQ2VsbCogY2VsbCwgRXhlY1N0YXRlKiBleGVjLCBQcm9w
ZXJ0eU5hbWUgcHJvcGVydHlOYW1lLCBQcm9wZXJ0eVNsb3QmIHNsb3QpCiB7CiAgICAgRGVidWdn
ZXJBY3RpdmF0aW9uKiB0aGlzT2JqZWN0ID0ganNDYXN0PERlYnVnZ2VyQWN0aXZhdGlvbio+KGNl
bGwpOwogICAgIHJldHVybiB0aGlzT2JqZWN0LT5tX2FjdGl2YXRpb24tPm1ldGhvZFRhYmxlKCkt
PmdldE93blByb3BlcnR5U2xvdCh0aGlzT2JqZWN0LT5tX2FjdGl2YXRpb24uZ2V0KCksIGV4ZWMs
IHByb3BlcnR5TmFtZSwgc2xvdCk7CiB9CiAKLXZvaWQgRGVidWdnZXJBY3RpdmF0aW9uOjpwdXQo
SlNDZWxsKiBjZWxsLCBFeGVjU3RhdGUqIGV4ZWMsIGNvbnN0IElkZW50aWZpZXImIHByb3BlcnR5
TmFtZSwgSlNWYWx1ZSB2YWx1ZSwgUHV0UHJvcGVydHlTbG90JiBzbG90KQordm9pZCBEZWJ1Z2dl
ckFjdGl2YXRpb246OnB1dChKU0NlbGwqIGNlbGwsIEV4ZWNTdGF0ZSogZXhlYywgUHJvcGVydHlO
YW1lIHByb3BlcnR5TmFtZSwgSlNWYWx1ZSB2YWx1ZSwgUHV0UHJvcGVydHlTbG90JiBzbG90KQog
ewogICAgIERlYnVnZ2VyQWN0aXZhdGlvbiogdGhpc09iamVjdCA9IGpzQ2FzdDxEZWJ1Z2dlckFj
dGl2YXRpb24qPihjZWxsKTsKICAgICB0aGlzT2JqZWN0LT5tX2FjdGl2YXRpb24tPm1ldGhvZFRh
YmxlKCktPnB1dCh0aGlzT2JqZWN0LT5tX2FjdGl2YXRpb24uZ2V0KCksIGV4ZWMsIHByb3BlcnR5
TmFtZSwgdmFsdWUsIHNsb3QpOwogfQogCi12b2lkIERlYnVnZ2VyQWN0aXZhdGlvbjo6cHV0RGly
ZWN0VmlydHVhbChKU09iamVjdCogb2JqZWN0LCBFeGVjU3RhdGUqIGV4ZWMsIGNvbnN0IElkZW50
aWZpZXImIHByb3BlcnR5TmFtZSwgSlNWYWx1ZSB2YWx1ZSwgdW5zaWduZWQgYXR0cmlidXRlcykK
K3ZvaWQgRGVidWdnZXJBY3RpdmF0aW9uOjpwdXREaXJlY3RWaXJ0dWFsKEpTT2JqZWN0KiBvYmpl
Y3QsIEV4ZWNTdGF0ZSogZXhlYywgUHJvcGVydHlOYW1lIHByb3BlcnR5TmFtZSwgSlNWYWx1ZSB2
YWx1ZSwgdW5zaWduZWQgYXR0cmlidXRlcykKIHsKICAgICBEZWJ1Z2dlckFjdGl2YXRpb24qIHRo
aXNPYmplY3QgPSBqc0Nhc3Q8RGVidWdnZXJBY3RpdmF0aW9uKj4ob2JqZWN0KTsKICAgICB0aGlz
T2JqZWN0LT5tX2FjdGl2YXRpb24tPm1ldGhvZFRhYmxlKCktPnB1dERpcmVjdFZpcnR1YWwodGhp
c09iamVjdC0+bV9hY3RpdmF0aW9uLmdldCgpLCBleGVjLCBwcm9wZXJ0eU5hbWUsIHZhbHVlLCBh
dHRyaWJ1dGVzKTsKIH0KIAotYm9vbCBEZWJ1Z2dlckFjdGl2YXRpb246OmRlbGV0ZVByb3BlcnR5
KEpTQ2VsbCogY2VsbCwgRXhlY1N0YXRlKiBleGVjLCBjb25zdCBJZGVudGlmaWVyJiBwcm9wZXJ0
eU5hbWUpCitib29sIERlYnVnZ2VyQWN0aXZhdGlvbjo6ZGVsZXRlUHJvcGVydHkoSlNDZWxsKiBj
ZWxsLCBFeGVjU3RhdGUqIGV4ZWMsIFByb3BlcnR5TmFtZSBwcm9wZXJ0eU5hbWUpCiB7CiAgICAg
RGVidWdnZXJBY3RpdmF0aW9uKiB0aGlzT2JqZWN0ID0ganNDYXN0PERlYnVnZ2VyQWN0aXZhdGlv
bio+KGNlbGwpOwogICAgIHJldHVybiB0aGlzT2JqZWN0LT5tX2FjdGl2YXRpb24tPm1ldGhvZFRh
YmxlKCktPmRlbGV0ZVByb3BlcnR5KHRoaXNPYmplY3QtPm1fYWN0aXZhdGlvbi5nZXQoKSwgZXhl
YywgcHJvcGVydHlOYW1lKTsKQEAgLTk1LDEzICs5NSwxMyBAQCB2b2lkIERlYnVnZ2VyQWN0aXZh
dGlvbjo6Z2V0T3duUHJvcGVydHlOCiAgICAgdGhpc09iamVjdC0+bV9hY3RpdmF0aW9uLT5tZXRo
b2RUYWJsZSgpLT5nZXRQcm9wZXJ0eU5hbWVzKHRoaXNPYmplY3QtPm1fYWN0aXZhdGlvbi5nZXQo
KSwgZXhlYywgcHJvcGVydHlOYW1lcywgbW9kZSk7CiB9CiAKLWJvb2wgRGVidWdnZXJBY3RpdmF0
aW9uOjpnZXRPd25Qcm9wZXJ0eURlc2NyaXB0b3IoSlNPYmplY3QqIG9iamVjdCwgRXhlY1N0YXRl
KiBleGVjLCBjb25zdCBJZGVudGlmaWVyJiBwcm9wZXJ0eU5hbWUsIFByb3BlcnR5RGVzY3JpcHRv
ciYgZGVzY3JpcHRvcikKK2Jvb2wgRGVidWdnZXJBY3RpdmF0aW9uOjpnZXRPd25Qcm9wZXJ0eURl
c2NyaXB0b3IoSlNPYmplY3QqIG9iamVjdCwgRXhlY1N0YXRlKiBleGVjLCBQcm9wZXJ0eU5hbWUg
cHJvcGVydHlOYW1lLCBQcm9wZXJ0eURlc2NyaXB0b3ImIGRlc2NyaXB0b3IpCiB7CiAgICAgRGVi
dWdnZXJBY3RpdmF0aW9uKiB0aGlzT2JqZWN0ID0ganNDYXN0PERlYnVnZ2VyQWN0aXZhdGlvbio+
KG9iamVjdCk7CiAgICAgcmV0dXJuIHRoaXNPYmplY3QtPm1fYWN0aXZhdGlvbi0+bWV0aG9kVGFi
bGUoKS0+Z2V0T3duUHJvcGVydHlEZXNjcmlwdG9yKHRoaXNPYmplY3QtPm1fYWN0aXZhdGlvbi5n
ZXQoKSwgZXhlYywgcHJvcGVydHlOYW1lLCBkZXNjcmlwdG9yKTsKIH0KIAotYm9vbCBEZWJ1Z2dl
ckFjdGl2YXRpb246OmRlZmluZU93blByb3BlcnR5KEpTT2JqZWN0KiBvYmplY3QsIEV4ZWNTdGF0
ZSogZXhlYywgY29uc3QgSWRlbnRpZmllciYgcHJvcGVydHlOYW1lLCBQcm9wZXJ0eURlc2NyaXB0
b3ImIGRlc2NyaXB0b3IsIGJvb2wgc2hvdWxkVGhyb3cpCitib29sIERlYnVnZ2VyQWN0aXZhdGlv
bjo6ZGVmaW5lT3duUHJvcGVydHkoSlNPYmplY3QqIG9iamVjdCwgRXhlY1N0YXRlKiBleGVjLCBQ
cm9wZXJ0eU5hbWUgcHJvcGVydHlOYW1lLCBQcm9wZXJ0eURlc2NyaXB0b3ImIGRlc2NyaXB0b3Is
IGJvb2wgc2hvdWxkVGhyb3cpCiB7CiAgICAgRGVidWdnZXJBY3RpdmF0aW9uKiB0aGlzT2JqZWN0
ID0ganNDYXN0PERlYnVnZ2VyQWN0aXZhdGlvbio+KG9iamVjdCk7CiAgICAgcmV0dXJuIHRoaXNP
YmplY3QtPm1fYWN0aXZhdGlvbi0+bWV0aG9kVGFibGUoKS0+ZGVmaW5lT3duUHJvcGVydHkodGhp
c09iamVjdC0+bV9hY3RpdmF0aW9uLmdldCgpLCBleGVjLCBwcm9wZXJ0eU5hbWUsIGRlc2NyaXB0
b3IsIHNob3VsZFRocm93KTsKSW5kZXg6IFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9kZWJ1Z2dlci9E
ZWJ1Z2dlckFjdGl2YXRpb24uaAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvSmF2YVNjcmlwdENvcmUv
ZGVidWdnZXIvRGVidWdnZXJBY3RpdmF0aW9uLmgJKHJldmlzaW9uIDExNjY2NykKKysrIFNvdXJj
ZS9KYXZhU2NyaXB0Q29yZS9kZWJ1Z2dlci9EZWJ1Z2dlckFjdGl2YXRpb24uaAkod29ya2luZyBj
b3B5KQpAQCAtNDMsMTMgKzQzLDEzIEBAIG5hbWVzcGFjZSBKU0MgewogCiAgICAgICAgIHN0YXRp
YyB2b2lkIHZpc2l0Q2hpbGRyZW4oSlNDZWxsKiwgU2xvdFZpc2l0b3ImKTsKICAgICAgICAgc3Rh
dGljIFVTdHJpbmcgY2xhc3NOYW1lKGNvbnN0IEpTT2JqZWN0Kik7Ci0gICAgICAgIHN0YXRpYyBi
b29sIGdldE93blByb3BlcnR5U2xvdChKU0NlbGwqLCBFeGVjU3RhdGUqLCBjb25zdCBJZGVudGlm
aWVyJiBwcm9wZXJ0eU5hbWUsIFByb3BlcnR5U2xvdCYpOwotICAgICAgICBzdGF0aWMgdm9pZCBw
dXQoSlNDZWxsKiwgRXhlY1N0YXRlKiwgY29uc3QgSWRlbnRpZmllciYgcHJvcGVydHlOYW1lLCBK
U1ZhbHVlLCBQdXRQcm9wZXJ0eVNsb3QmKTsKLSAgICAgICAgc3RhdGljIHZvaWQgcHV0RGlyZWN0
VmlydHVhbChKU09iamVjdCosIEV4ZWNTdGF0ZSosIGNvbnN0IElkZW50aWZpZXImIHByb3BlcnR5
TmFtZSwgSlNWYWx1ZSwgdW5zaWduZWQgYXR0cmlidXRlcyk7Ci0gICAgICAgIHN0YXRpYyBib29s
IGRlbGV0ZVByb3BlcnR5KEpTQ2VsbCosIEV4ZWNTdGF0ZSosIGNvbnN0IElkZW50aWZpZXImIHBy
b3BlcnR5TmFtZSk7CisgICAgICAgIHN0YXRpYyBib29sIGdldE93blByb3BlcnR5U2xvdChKU0Nl
bGwqLCBFeGVjU3RhdGUqLCBQcm9wZXJ0eU5hbWUgcHJvcGVydHlOYW1lLCBQcm9wZXJ0eVNsb3Qm
KTsKKyAgICAgICAgc3RhdGljIHZvaWQgcHV0KEpTQ2VsbCosIEV4ZWNTdGF0ZSosIFByb3BlcnR5
TmFtZSBwcm9wZXJ0eU5hbWUsIEpTVmFsdWUsIFB1dFByb3BlcnR5U2xvdCYpOworICAgICAgICBz
dGF0aWMgdm9pZCBwdXREaXJlY3RWaXJ0dWFsKEpTT2JqZWN0KiwgRXhlY1N0YXRlKiwgUHJvcGVy
dHlOYW1lIHByb3BlcnR5TmFtZSwgSlNWYWx1ZSwgdW5zaWduZWQgYXR0cmlidXRlcyk7CisgICAg
ICAgIHN0YXRpYyBib29sIGRlbGV0ZVByb3BlcnR5KEpTQ2VsbCosIEV4ZWNTdGF0ZSosIFByb3Bl
cnR5TmFtZSBwcm9wZXJ0eU5hbWUpOwogICAgICAgICBzdGF0aWMgdm9pZCBnZXRPd25Qcm9wZXJ0
eU5hbWVzKEpTT2JqZWN0KiwgRXhlY1N0YXRlKiwgUHJvcGVydHlOYW1lQXJyYXkmLCBFbnVtZXJh
dGlvbk1vZGUpOwotICAgICAgICBzdGF0aWMgYm9vbCBnZXRPd25Qcm9wZXJ0eURlc2NyaXB0b3Io
SlNPYmplY3QqLCBFeGVjU3RhdGUqLCBjb25zdCBJZGVudGlmaWVyJiwgUHJvcGVydHlEZXNjcmlw
dG9yJik7Ci0gICAgICAgIHN0YXRpYyBib29sIGRlZmluZU93blByb3BlcnR5KEpTT2JqZWN0Kiwg
RXhlY1N0YXRlKiwgY29uc3QgSWRlbnRpZmllciYgcHJvcGVydHlOYW1lLCBQcm9wZXJ0eURlc2Ny
aXB0b3ImLCBib29sIHNob3VsZFRocm93KTsKKyAgICAgICAgc3RhdGljIGJvb2wgZ2V0T3duUHJv
cGVydHlEZXNjcmlwdG9yKEpTT2JqZWN0KiwgRXhlY1N0YXRlKiwgUHJvcGVydHlOYW1lLCBQcm9w
ZXJ0eURlc2NyaXB0b3ImKTsKKyAgICAgICAgc3RhdGljIGJvb2wgZGVmaW5lT3duUHJvcGVydHko
SlNPYmplY3QqLCBFeGVjU3RhdGUqLCBQcm9wZXJ0eU5hbWUgcHJvcGVydHlOYW1lLCBQcm9wZXJ0
eURlc2NyaXB0b3ImLCBib29sIHNob3VsZFRocm93KTsKIAogICAgICAgICBKU19FWFBPUlREQVRB
IHN0YXRpYyBjb25zdCBDbGFzc0luZm8gc19pbmZvOwogCkluZGV4OiBTb3VyY2UvSmF2YVNjcmlw
dENvcmUvcnVudGltZS9Bcmd1bWVudHMuY3BwCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9KYXZhU2Ny
aXB0Q29yZS9ydW50aW1lL0FyZ3VtZW50cy5jcHAJKHJldmlzaW9uIDExNjY2NykKKysrIFNvdXJj
ZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL0FyZ3VtZW50cy5jcHAJKHdvcmtpbmcgY29weSkKQEAg
LTEyNCwxMiArMTI0LDEyIEBAIHZvaWQgQXJndW1lbnRzOjpjcmVhdGVTdHJpY3RNb2RlQ2FsbGVl
SWYKICAgICBtZXRob2RUYWJsZSgpLT5kZWZpbmVPd25Qcm9wZXJ0eSh0aGlzLCBleGVjLCBleGVj
LT5wcm9wZXJ0eU5hbWVzKCkuY2FsbGVlLCBkZXNjcmlwdG9yLCBmYWxzZSk7CiB9CiAKLWJvb2wg
QXJndW1lbnRzOjpnZXRPd25Qcm9wZXJ0eVNsb3QoSlNDZWxsKiBjZWxsLCBFeGVjU3RhdGUqIGV4
ZWMsIGNvbnN0IElkZW50aWZpZXImIHByb3BlcnR5TmFtZSwgUHJvcGVydHlTbG90JiBzbG90KQor
Ym9vbCBBcmd1bWVudHM6OmdldE93blByb3BlcnR5U2xvdChKU0NlbGwqIGNlbGwsIEV4ZWNTdGF0
ZSogZXhlYywgUHJvcGVydHlOYW1lIHByb3BlcnR5TmFtZSwgUHJvcGVydHlTbG90JiBzbG90KQog
ewogICAgIEFyZ3VtZW50cyogdGhpc09iamVjdCA9IGpzQ2FzdDxBcmd1bWVudHMqPihjZWxsKTsK
LSAgICBib29sIGlzQXJyYXlJbmRleDsKLSAgICB1bnNpZ25lZCBpID0gcHJvcGVydHlOYW1lLnRv
QXJyYXlJbmRleChpc0FycmF5SW5kZXgpOwotICAgIGlmIChpc0FycmF5SW5kZXggJiYgaSA8IHRo
aXNPYmplY3QtPmQtPm51bUFyZ3VtZW50cyAmJiAoIXRoaXNPYmplY3QtPmQtPmRlbGV0ZWRBcmd1
bWVudHMgfHwgIXRoaXNPYmplY3QtPmQtPmRlbGV0ZWRBcmd1bWVudHNbaV0pKSB7CisgICAgdW5z
aWduZWQgaSA9IHByb3BlcnR5TmFtZS5hc0luZGV4KCk7CisgICAgaWYgKGkgPCB0aGlzT2JqZWN0
LT5kLT5udW1Bcmd1bWVudHMgJiYgKCF0aGlzT2JqZWN0LT5kLT5kZWxldGVkQXJndW1lbnRzIHx8
ICF0aGlzT2JqZWN0LT5kLT5kZWxldGVkQXJndW1lbnRzW2ldKSkgeworICAgICAgICBBU1NFUlQo
aSA8IFByb3BlcnR5TmFtZTo6Tm90QW5JbmRleCk7CiAgICAgICAgIHNsb3Quc2V0VmFsdWUodGhp
c09iamVjdC0+YXJndW1lbnQoaSkuZ2V0KCkpOwogICAgICAgICByZXR1cm4gdHJ1ZTsKICAgICB9
CkBAIC0xNTMsMTIgKzE1MywxMiBAQCBib29sIEFyZ3VtZW50czo6Z2V0T3duUHJvcGVydHlTbG90
KEpTQ2VsCiAgICAgcmV0dXJuIEpTT2JqZWN0OjpnZXRPd25Qcm9wZXJ0eVNsb3QodGhpc09iamVj
dCwgZXhlYywgcHJvcGVydHlOYW1lLCBzbG90KTsKIH0KIAotYm9vbCBBcmd1bWVudHM6OmdldE93
blByb3BlcnR5RGVzY3JpcHRvcihKU09iamVjdCogb2JqZWN0LCBFeGVjU3RhdGUqIGV4ZWMsIGNv
bnN0IElkZW50aWZpZXImIHByb3BlcnR5TmFtZSwgUHJvcGVydHlEZXNjcmlwdG9yJiBkZXNjcmlw
dG9yKQorYm9vbCBBcmd1bWVudHM6OmdldE93blByb3BlcnR5RGVzY3JpcHRvcihKU09iamVjdCog
b2JqZWN0LCBFeGVjU3RhdGUqIGV4ZWMsIFByb3BlcnR5TmFtZSBwcm9wZXJ0eU5hbWUsIFByb3Bl
cnR5RGVzY3JpcHRvciYgZGVzY3JpcHRvcikKIHsKICAgICBBcmd1bWVudHMqIHRoaXNPYmplY3Qg
PSBqc0Nhc3Q8QXJndW1lbnRzKj4ob2JqZWN0KTsKLSAgICBib29sIGlzQXJyYXlJbmRleDsKLSAg
ICB1bnNpZ25lZCBpID0gcHJvcGVydHlOYW1lLnRvQXJyYXlJbmRleChpc0FycmF5SW5kZXgpOwot
ICAgIGlmIChpc0FycmF5SW5kZXggJiYgaSA8IHRoaXNPYmplY3QtPmQtPm51bUFyZ3VtZW50cyAm
JiAoIXRoaXNPYmplY3QtPmQtPmRlbGV0ZWRBcmd1bWVudHMgfHwgIXRoaXNPYmplY3QtPmQtPmRl
bGV0ZWRBcmd1bWVudHNbaV0pKSB7CisgICAgdW5zaWduZWQgaSA9IHByb3BlcnR5TmFtZS5hc0lu
ZGV4KCk7CisgICAgaWYgKGkgPCB0aGlzT2JqZWN0LT5kLT5udW1Bcmd1bWVudHMgJiYgKCF0aGlz
T2JqZWN0LT5kLT5kZWxldGVkQXJndW1lbnRzIHx8ICF0aGlzT2JqZWN0LT5kLT5kZWxldGVkQXJn
dW1lbnRzW2ldKSkgeworICAgICAgICBBU1NFUlQoaSA8IFByb3BlcnR5TmFtZTo6Tm90QW5JbmRl
eCk7CiAgICAgICAgIGRlc2NyaXB0b3Iuc2V0RGVzY3JpcHRvcih0aGlzT2JqZWN0LT5hcmd1bWVu
dChpKS5nZXQoKSwgTm9uZSk7CiAgICAgICAgIHJldHVybiB0cnVlOwogICAgIH0KQEAgLTIwOCwx
MiArMjA4LDEyIEBAIHZvaWQgQXJndW1lbnRzOjpwdXRCeUluZGV4KEpTQ2VsbCogY2VsbCwKICAg
ICBKU09iamVjdDo6cHV0KHRoaXNPYmplY3QsIGV4ZWMsIElkZW50aWZpZXIoZXhlYywgVVN0cmlu
Zzo6bnVtYmVyKGkpKSwgdmFsdWUsIHNsb3QpOwogfQogCi12b2lkIEFyZ3VtZW50czo6cHV0KEpT
Q2VsbCogY2VsbCwgRXhlY1N0YXRlKiBleGVjLCBjb25zdCBJZGVudGlmaWVyJiBwcm9wZXJ0eU5h
bWUsIEpTVmFsdWUgdmFsdWUsIFB1dFByb3BlcnR5U2xvdCYgc2xvdCkKK3ZvaWQgQXJndW1lbnRz
OjpwdXQoSlNDZWxsKiBjZWxsLCBFeGVjU3RhdGUqIGV4ZWMsIFByb3BlcnR5TmFtZSBwcm9wZXJ0
eU5hbWUsIEpTVmFsdWUgdmFsdWUsIFB1dFByb3BlcnR5U2xvdCYgc2xvdCkKIHsKICAgICBBcmd1
bWVudHMqIHRoaXNPYmplY3QgPSBqc0Nhc3Q8QXJndW1lbnRzKj4oY2VsbCk7Ci0gICAgYm9vbCBp
c0FycmF5SW5kZXg7Ci0gICAgdW5zaWduZWQgaSA9IHByb3BlcnR5TmFtZS50b0FycmF5SW5kZXgo
aXNBcnJheUluZGV4KTsKLSAgICBpZiAoaXNBcnJheUluZGV4ICYmIGkgPCB0aGlzT2JqZWN0LT5k
LT5udW1Bcmd1bWVudHMgJiYgKCF0aGlzT2JqZWN0LT5kLT5kZWxldGVkQXJndW1lbnRzIHx8ICF0
aGlzT2JqZWN0LT5kLT5kZWxldGVkQXJndW1lbnRzW2ldKSkgeworICAgIHVuc2lnbmVkIGkgPSBw
cm9wZXJ0eU5hbWUuYXNJbmRleCgpOworICAgIGlmIChpIDwgdGhpc09iamVjdC0+ZC0+bnVtQXJn
dW1lbnRzICYmICghdGhpc09iamVjdC0+ZC0+ZGVsZXRlZEFyZ3VtZW50cyB8fCAhdGhpc09iamVj
dC0+ZC0+ZGVsZXRlZEFyZ3VtZW50c1tpXSkpIHsKKyAgICAgICAgQVNTRVJUKGkgPCBQcm9wZXJ0
eU5hbWU6Ok5vdEFuSW5kZXgpOwogICAgICAgICB0aGlzT2JqZWN0LT5hcmd1bWVudChpKS5zZXQo
ZXhlYy0+Z2xvYmFsRGF0YSgpLCB0aGlzT2JqZWN0LCB2YWx1ZSk7CiAgICAgICAgIHJldHVybjsK
ICAgICB9CkBAIC0yNTksMTUgKzI1OSwxNSBAQCBib29sIEFyZ3VtZW50czo6ZGVsZXRlUHJvcGVy
dHlCeUluZGV4KEpTCiAgICAgcmV0dXJuIEpTT2JqZWN0OjpkZWxldGVQcm9wZXJ0eSh0aGlzT2Jq
ZWN0LCBleGVjLCBJZGVudGlmaWVyKGV4ZWMsIFVTdHJpbmc6Om51bWJlcihpKSkpOwogfQogCi1i
b29sIEFyZ3VtZW50czo6ZGVsZXRlUHJvcGVydHkoSlNDZWxsKiBjZWxsLCBFeGVjU3RhdGUqIGV4
ZWMsIGNvbnN0IElkZW50aWZpZXImIHByb3BlcnR5TmFtZSkgCitib29sIEFyZ3VtZW50czo6ZGVs
ZXRlUHJvcGVydHkoSlNDZWxsKiBjZWxsLCBFeGVjU3RhdGUqIGV4ZWMsIFByb3BlcnR5TmFtZSBw
cm9wZXJ0eU5hbWUpIAogewogICAgIGlmIChleGVjLT5nbG9iYWxEYXRhKCkuaXNJbkRlZmluZU93
blByb3BlcnR5KCkpCiAgICAgICAgIHJldHVybiBCYXNlOjpkZWxldGVQcm9wZXJ0eShjZWxsLCBl
eGVjLCBwcm9wZXJ0eU5hbWUpOwogCiAgICAgQXJndW1lbnRzKiB0aGlzT2JqZWN0ID0ganNDYXN0
PEFyZ3VtZW50cyo+KGNlbGwpOwotICAgIGJvb2wgaXNBcnJheUluZGV4OwotICAgIHVuc2lnbmVk
IGkgPSBwcm9wZXJ0eU5hbWUudG9BcnJheUluZGV4KGlzQXJyYXlJbmRleCk7Ci0gICAgaWYgKGlz
QXJyYXlJbmRleCAmJiBpIDwgdGhpc09iamVjdC0+ZC0+bnVtQXJndW1lbnRzKSB7CisgICAgdW5z
aWduZWQgaSA9IHByb3BlcnR5TmFtZS5hc0luZGV4KCk7CisgICAgaWYgKGkgPCB0aGlzT2JqZWN0
LT5kLT5udW1Bcmd1bWVudHMpIHsKKyAgICAgICAgQVNTRVJUKGkgPCBQcm9wZXJ0eU5hbWU6Ok5v
dEFuSW5kZXgpOwogICAgICAgICBpZiAoIUJhc2U6OmRlbGV0ZVByb3BlcnR5KGNlbGwsIGV4ZWMs
IHByb3BlcnR5TmFtZSkpCiAgICAgICAgICAgICByZXR1cm4gZmFsc2U7CiAKQEAgLTMwMCwxMiAr
MzAwLDEyIEBAIGJvb2wgQXJndW1lbnRzOjpkZWxldGVQcm9wZXJ0eShKU0NlbGwqIGMKICAgICBy
ZXR1cm4gSlNPYmplY3Q6OmRlbGV0ZVByb3BlcnR5KHRoaXNPYmplY3QsIGV4ZWMsIHByb3BlcnR5
TmFtZSk7CiB9CiAKLWJvb2wgQXJndW1lbnRzOjpkZWZpbmVPd25Qcm9wZXJ0eShKU09iamVjdCog
b2JqZWN0LCBFeGVjU3RhdGUqIGV4ZWMsIGNvbnN0IElkZW50aWZpZXImIHByb3BlcnR5TmFtZSwg
UHJvcGVydHlEZXNjcmlwdG9yJiBkZXNjcmlwdG9yLCBib29sIHNob3VsZFRocm93KQorYm9vbCBB
cmd1bWVudHM6OmRlZmluZU93blByb3BlcnR5KEpTT2JqZWN0KiBvYmplY3QsIEV4ZWNTdGF0ZSog
ZXhlYywgUHJvcGVydHlOYW1lIHByb3BlcnR5TmFtZSwgUHJvcGVydHlEZXNjcmlwdG9yJiBkZXNj
cmlwdG9yLCBib29sIHNob3VsZFRocm93KQogewogICAgIEFyZ3VtZW50cyogdGhpc09iamVjdCA9
IGpzQ2FzdDxBcmd1bWVudHMqPihvYmplY3QpOwotICAgIGJvb2wgaXNBcnJheUluZGV4OwotICAg
IHVuc2lnbmVkIGkgPSBwcm9wZXJ0eU5hbWUudG9BcnJheUluZGV4KGlzQXJyYXlJbmRleCk7Ci0g
ICAgaWYgKGlzQXJyYXlJbmRleCAmJiBpIDwgdGhpc09iamVjdC0+ZC0+bnVtQXJndW1lbnRzKSB7
CisgICAgdW5zaWduZWQgaSA9IHByb3BlcnR5TmFtZS5hc0luZGV4KCk7CisgICAgaWYgKGkgPCB0
aGlzT2JqZWN0LT5kLT5udW1Bcmd1bWVudHMpIHsKKyAgICAgICAgQVNTRVJUKGkgPCBQcm9wZXJ0
eU5hbWU6Ok5vdEFuSW5kZXgpOwogICAgICAgICAvLyBJZiB0aGUgcHJvcGVydHkgaXMgbm90IHll
dCBwcmVzZW50IG9uIHRoZSBvYmplY3QsIGFuZCBpcyBub3QgeWV0IG1hcmtlZCBhcyBkZWxldGVk
LCB0aGVuIGFkZCBpdCBub3cuCiAgICAgICAgIFByb3BlcnR5U2xvdCBzbG90OwogICAgICAgICBp
ZiAoKCF0aGlzT2JqZWN0LT5kLT5kZWxldGVkQXJndW1lbnRzIHx8ICF0aGlzT2JqZWN0LT5kLT5k
ZWxldGVkQXJndW1lbnRzW2ldKSAmJiAhSlNPYmplY3Q6OmdldE93blByb3BlcnR5U2xvdCh0aGlz
T2JqZWN0LCBleGVjLCBwcm9wZXJ0eU5hbWUsIHNsb3QpKQpJbmRleDogU291cmNlL0phdmFTY3Jp
cHRDb3JlL3J1bnRpbWUvQXJndW1lbnRzLmgKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL0phdmFTY3Jp
cHRDb3JlL3J1bnRpbWUvQXJndW1lbnRzLmgJKHJldmlzaW9uIDExNjY2NykKKysrIFNvdXJjZS9K
YXZhU2NyaXB0Q29yZS9ydW50aW1lL0FyZ3VtZW50cy5oCSh3b3JraW5nIGNvcHkpCkBAIC0xMDks
MTUgKzEwOSwxNSBAQCBuYW1lc3BhY2UgSlNDIHsKIAogICAgIHByaXZhdGU6CiAgICAgICAgIHN0
YXRpYyB2b2lkIGRlc3Ryb3koSlNDZWxsKik7Ci0gICAgICAgIHN0YXRpYyBib29sIGdldE93blBy
b3BlcnR5U2xvdChKU0NlbGwqLCBFeGVjU3RhdGUqLCBjb25zdCBJZGVudGlmaWVyJiBwcm9wZXJ0
eU5hbWUsIFByb3BlcnR5U2xvdCYpOworICAgICAgICBzdGF0aWMgYm9vbCBnZXRPd25Qcm9wZXJ0
eVNsb3QoSlNDZWxsKiwgRXhlY1N0YXRlKiwgUHJvcGVydHlOYW1lIHByb3BlcnR5TmFtZSwgUHJv
cGVydHlTbG90Jik7CiAgICAgICAgIHN0YXRpYyBib29sIGdldE93blByb3BlcnR5U2xvdEJ5SW5k
ZXgoSlNDZWxsKiwgRXhlY1N0YXRlKiwgdW5zaWduZWQgcHJvcGVydHlOYW1lLCBQcm9wZXJ0eVNs
b3QmKTsKLSAgICAgICAgc3RhdGljIGJvb2wgZ2V0T3duUHJvcGVydHlEZXNjcmlwdG9yKEpTT2Jq
ZWN0KiwgRXhlY1N0YXRlKiwgY29uc3QgSWRlbnRpZmllciYsIFByb3BlcnR5RGVzY3JpcHRvciYp
OworICAgICAgICBzdGF0aWMgYm9vbCBnZXRPd25Qcm9wZXJ0eURlc2NyaXB0b3IoSlNPYmplY3Qq
LCBFeGVjU3RhdGUqLCBQcm9wZXJ0eU5hbWUsIFByb3BlcnR5RGVzY3JpcHRvciYpOwogICAgICAg
ICBzdGF0aWMgdm9pZCBnZXRPd25Qcm9wZXJ0eU5hbWVzKEpTT2JqZWN0KiwgRXhlY1N0YXRlKiwg
UHJvcGVydHlOYW1lQXJyYXkmLCBFbnVtZXJhdGlvbk1vZGUpOwotICAgICAgICBzdGF0aWMgdm9p
ZCBwdXQoSlNDZWxsKiwgRXhlY1N0YXRlKiwgY29uc3QgSWRlbnRpZmllciYgcHJvcGVydHlOYW1l
LCBKU1ZhbHVlLCBQdXRQcm9wZXJ0eVNsb3QmKTsKKyAgICAgICAgc3RhdGljIHZvaWQgcHV0KEpT
Q2VsbCosIEV4ZWNTdGF0ZSosIFByb3BlcnR5TmFtZSBwcm9wZXJ0eU5hbWUsIEpTVmFsdWUsIFB1
dFByb3BlcnR5U2xvdCYpOwogICAgICAgICBzdGF0aWMgdm9pZCBwdXRCeUluZGV4KEpTQ2VsbCos
IEV4ZWNTdGF0ZSosIHVuc2lnbmVkIHByb3BlcnR5TmFtZSwgSlNWYWx1ZSwgYm9vbCBzaG91bGRU
aHJvdyk7Ci0gICAgICAgIHN0YXRpYyBib29sIGRlbGV0ZVByb3BlcnR5KEpTQ2VsbCosIEV4ZWNT
dGF0ZSosIGNvbnN0IElkZW50aWZpZXImIHByb3BlcnR5TmFtZSk7CisgICAgICAgIHN0YXRpYyBi
b29sIGRlbGV0ZVByb3BlcnR5KEpTQ2VsbCosIEV4ZWNTdGF0ZSosIFByb3BlcnR5TmFtZSBwcm9w
ZXJ0eU5hbWUpOwogICAgICAgICBzdGF0aWMgYm9vbCBkZWxldGVQcm9wZXJ0eUJ5SW5kZXgoSlND
ZWxsKiwgRXhlY1N0YXRlKiwgdW5zaWduZWQgcHJvcGVydHlOYW1lKTsKLSAgICAgICAgc3RhdGlj
IGJvb2wgZGVmaW5lT3duUHJvcGVydHkoSlNPYmplY3QqLCBFeGVjU3RhdGUqLCBjb25zdCBJZGVu
dGlmaWVyJiBwcm9wZXJ0eU5hbWUsIFByb3BlcnR5RGVzY3JpcHRvciYsIGJvb2wgc2hvdWxkVGhy
b3cpOworICAgICAgICBzdGF0aWMgYm9vbCBkZWZpbmVPd25Qcm9wZXJ0eShKU09iamVjdCosIEV4
ZWNTdGF0ZSosIFByb3BlcnR5TmFtZSBwcm9wZXJ0eU5hbWUsIFByb3BlcnR5RGVzY3JpcHRvciYs
IGJvb2wgc2hvdWxkVGhyb3cpOwogICAgICAgICB2b2lkIGNyZWF0ZVN0cmljdE1vZGVDYWxsZXJJ
Zk5lY2Vzc2FyeShFeGVjU3RhdGUqKTsKICAgICAgICAgdm9pZCBjcmVhdGVTdHJpY3RNb2RlQ2Fs
bGVlSWZOZWNlc3NhcnkoRXhlY1N0YXRlKik7CiAKSW5kZXg6IFNvdXJjZS9KYXZhU2NyaXB0Q29y
ZS9ydW50aW1lL0FycmF5Q29uc3RydWN0b3IuY3BwCj09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9KYXZh
U2NyaXB0Q29yZS9ydW50aW1lL0FycmF5Q29uc3RydWN0b3IuY3BwCShyZXZpc2lvbiAxMTY2Njcp
CisrKyBTb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9BcnJheUNvbnN0cnVjdG9yLmNwcAko
d29ya2luZyBjb3B5KQpAQCAtNjAsMTcgKzYwLDE3IEBAIEFycmF5Q29uc3RydWN0b3I6OkFycmF5
Q29uc3RydWN0b3IoSlNHbG8KIAogdm9pZCBBcnJheUNvbnN0cnVjdG9yOjpmaW5pc2hDcmVhdGlv
bihFeGVjU3RhdGUqIGV4ZWMsIEFycmF5UHJvdG90eXBlKiBhcnJheVByb3RvdHlwZSkKIHsKLSAg
ICBCYXNlOjpmaW5pc2hDcmVhdGlvbihleGVjLT5nbG9iYWxEYXRhKCksIElkZW50aWZpZXIoZXhl
YywgYXJyYXlQcm90b3R5cGUtPmNsYXNzSW5mbygpLT5jbGFzc05hbWUpKTsKKyAgICBCYXNlOjpm
aW5pc2hDcmVhdGlvbihleGVjLT5nbG9iYWxEYXRhKCksIGFycmF5UHJvdG90eXBlLT5jbGFzc0lu
Zm8oKS0+Y2xhc3NOYW1lKTsKICAgICBwdXREaXJlY3RXaXRob3V0VHJhbnNpdGlvbihleGVjLT5n
bG9iYWxEYXRhKCksIGV4ZWMtPnByb3BlcnR5TmFtZXMoKS5wcm90b3R5cGUsIGFycmF5UHJvdG90
eXBlLCBEb250RW51bSB8IERvbnREZWxldGUgfCBSZWFkT25seSk7CiAgICAgcHV0RGlyZWN0V2l0
aG91dFRyYW5zaXRpb24oZXhlYy0+Z2xvYmFsRGF0YSgpLCBleGVjLT5wcm9wZXJ0eU5hbWVzKCku
bGVuZ3RoLCBqc051bWJlcigxKSwgUmVhZE9ubHkgfCBEb250RW51bSB8IERvbnREZWxldGUpOwog
fQogCi1ib29sIEFycmF5Q29uc3RydWN0b3I6OmdldE93blByb3BlcnR5U2xvdChKU0NlbGwqIGNl
bGwsIEV4ZWNTdGF0ZSogZXhlYywgY29uc3QgSWRlbnRpZmllciYgcHJvcGVydHlOYW1lLCBQcm9w
ZXJ0eVNsb3QgJnNsb3QpCitib29sIEFycmF5Q29uc3RydWN0b3I6OmdldE93blByb3BlcnR5U2xv
dChKU0NlbGwqIGNlbGwsIEV4ZWNTdGF0ZSogZXhlYywgUHJvcGVydHlOYW1lIHByb3BlcnR5TmFt
ZSwgUHJvcGVydHlTbG90ICZzbG90KQogewogICAgIHJldHVybiBnZXRTdGF0aWNGdW5jdGlvblNs
b3Q8SW50ZXJuYWxGdW5jdGlvbj4oZXhlYywgRXhlY1N0YXRlOjphcnJheUNvbnN0cnVjdG9yVGFi
bGUoZXhlYyksIGpzQ2FzdDxBcnJheUNvbnN0cnVjdG9yKj4oY2VsbCksIHByb3BlcnR5TmFtZSwg
c2xvdCk7CiB9CiAKLWJvb2wgQXJyYXlDb25zdHJ1Y3Rvcjo6Z2V0T3duUHJvcGVydHlEZXNjcmlw
dG9yKEpTT2JqZWN0KiBvYmplY3QsIEV4ZWNTdGF0ZSogZXhlYywgY29uc3QgSWRlbnRpZmllciYg
cHJvcGVydHlOYW1lLCBQcm9wZXJ0eURlc2NyaXB0b3ImIGRlc2NyaXB0b3IpCitib29sIEFycmF5
Q29uc3RydWN0b3I6OmdldE93blByb3BlcnR5RGVzY3JpcHRvcihKU09iamVjdCogb2JqZWN0LCBF
eGVjU3RhdGUqIGV4ZWMsIFByb3BlcnR5TmFtZSBwcm9wZXJ0eU5hbWUsIFByb3BlcnR5RGVzY3Jp
cHRvciYgZGVzY3JpcHRvcikKIHsKICAgICByZXR1cm4gZ2V0U3RhdGljRnVuY3Rpb25EZXNjcmlw
dG9yPEludGVybmFsRnVuY3Rpb24+KGV4ZWMsIEV4ZWNTdGF0ZTo6YXJyYXlDb25zdHJ1Y3RvclRh
YmxlKGV4ZWMpLCBqc0Nhc3Q8QXJyYXlDb25zdHJ1Y3Rvcio+KG9iamVjdCksIHByb3BlcnR5TmFt
ZSwgZGVzY3JpcHRvcik7CiB9CkluZGV4OiBTb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9B
cnJheUNvbnN0cnVjdG9yLmgKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL0phdmFTY3JpcHRDb3JlL3J1
bnRpbWUvQXJyYXlDb25zdHJ1Y3Rvci5oCShyZXZpc2lvbiAxMTY2NjcpCisrKyBTb3VyY2UvSmF2
YVNjcmlwdENvcmUvcnVudGltZS9BcnJheUNvbnN0cnVjdG9yLmgJKHdvcmtpbmcgY29weSkKQEAg
LTUxLDkgKzUxLDkgQEAgbmFtZXNwYWNlIEpTQyB7CiAKICAgICBwcml2YXRlOgogICAgICAgICBB
cnJheUNvbnN0cnVjdG9yKEpTR2xvYmFsT2JqZWN0KiwgU3RydWN0dXJlKik7Ci0gICAgICAgIHN0
YXRpYyBib29sIGdldE93blByb3BlcnR5U2xvdChKU0NlbGwqLCBFeGVjU3RhdGUqLCBjb25zdCBJ
ZGVudGlmaWVyJiwgUHJvcGVydHlTbG90Jik7CisgICAgICAgIHN0YXRpYyBib29sIGdldE93blBy
b3BlcnR5U2xvdChKU0NlbGwqLCBFeGVjU3RhdGUqLCBQcm9wZXJ0eU5hbWUsIFByb3BlcnR5U2xv
dCYpOwogCi0gICAgICAgIHN0YXRpYyBib29sIGdldE93blByb3BlcnR5RGVzY3JpcHRvcihKU09i
amVjdCosIEV4ZWNTdGF0ZSosIGNvbnN0IElkZW50aWZpZXImLCBQcm9wZXJ0eURlc2NyaXB0b3Im
KTsKKyAgICAgICAgc3RhdGljIGJvb2wgZ2V0T3duUHJvcGVydHlEZXNjcmlwdG9yKEpTT2JqZWN0
KiwgRXhlY1N0YXRlKiwgUHJvcGVydHlOYW1lLCBQcm9wZXJ0eURlc2NyaXB0b3ImKTsKIAogICAg
ICAgICBzdGF0aWMgQ29uc3RydWN0VHlwZSBnZXRDb25zdHJ1Y3REYXRhKEpTQ2VsbCosIENvbnN0
cnVjdERhdGEmKTsKICAgICAgICAgc3RhdGljIENhbGxUeXBlIGdldENhbGxEYXRhKEpTQ2VsbCos
IENhbGxEYXRhJik7CkluZGV4OiBTb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9BcnJheVBy
b3RvdHlwZS5jcHAKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUv
QXJyYXlQcm90b3R5cGUuY3BwCShyZXZpc2lvbiAxMTY2NjcpCisrKyBTb3VyY2UvSmF2YVNjcmlw
dENvcmUvcnVudGltZS9BcnJheVByb3RvdHlwZS5jcHAJKHdvcmtpbmcgY29weSkKQEAgLTEyNiwx
MiArMTI2LDEyIEBAIHZvaWQgQXJyYXlQcm90b3R5cGU6OmZpbmlzaENyZWF0aW9uKEpTR2wKICAg
ICBBU1NFUlQoaW5oZXJpdHMoJnNfaW5mbykpOwogfQogCi1ib29sIEFycmF5UHJvdG90eXBlOjpn
ZXRPd25Qcm9wZXJ0eVNsb3QoSlNDZWxsKiBjZWxsLCBFeGVjU3RhdGUqIGV4ZWMsIGNvbnN0IElk
ZW50aWZpZXImIHByb3BlcnR5TmFtZSwgUHJvcGVydHlTbG90JiBzbG90KQorYm9vbCBBcnJheVBy
b3RvdHlwZTo6Z2V0T3duUHJvcGVydHlTbG90KEpTQ2VsbCogY2VsbCwgRXhlY1N0YXRlKiBleGVj
LCBQcm9wZXJ0eU5hbWUgcHJvcGVydHlOYW1lLCBQcm9wZXJ0eVNsb3QmIHNsb3QpCiB7CiAgICAg
cmV0dXJuIGdldFN0YXRpY0Z1bmN0aW9uU2xvdDxKU0FycmF5PihleGVjLCBFeGVjU3RhdGU6OmFy
cmF5UHJvdG90eXBlVGFibGUoZXhlYyksIGpzQ2FzdDxBcnJheVByb3RvdHlwZSo+KGNlbGwpLCBw
cm9wZXJ0eU5hbWUsIHNsb3QpOwogfQogCi1ib29sIEFycmF5UHJvdG90eXBlOjpnZXRPd25Qcm9w
ZXJ0eURlc2NyaXB0b3IoSlNPYmplY3QqIG9iamVjdCwgRXhlY1N0YXRlKiBleGVjLCBjb25zdCBJ
ZGVudGlmaWVyJiBwcm9wZXJ0eU5hbWUsIFByb3BlcnR5RGVzY3JpcHRvciYgZGVzY3JpcHRvcikK
K2Jvb2wgQXJyYXlQcm90b3R5cGU6OmdldE93blByb3BlcnR5RGVzY3JpcHRvcihKU09iamVjdCog
b2JqZWN0LCBFeGVjU3RhdGUqIGV4ZWMsIFByb3BlcnR5TmFtZSBwcm9wZXJ0eU5hbWUsIFByb3Bl
cnR5RGVzY3JpcHRvciYgZGVzY3JpcHRvcikKIHsKICAgICByZXR1cm4gZ2V0U3RhdGljRnVuY3Rp
b25EZXNjcmlwdG9yPEpTQXJyYXk+KGV4ZWMsIEV4ZWNTdGF0ZTo6YXJyYXlQcm90b3R5cGVUYWJs
ZShleGVjKSwganNDYXN0PEFycmF5UHJvdG90eXBlKj4ob2JqZWN0KSwgcHJvcGVydHlOYW1lLCBk
ZXNjcmlwdG9yKTsKIH0KQEAgLTE0Nyw3ICsxNDcsNyBAQCBzdGF0aWMgSlNWYWx1ZSBnZXRQcm9w
ZXJ0eShFeGVjU3RhdGUqIGV4CiAgICAgcmV0dXJuIHNsb3QuZ2V0VmFsdWUoZXhlYywgaW5kZXgp
OwogfQogCi1zdGF0aWMgdm9pZCBwdXRQcm9wZXJ0eShFeGVjU3RhdGUqIGV4ZWMsIEpTT2JqZWN0
KiBvYmosIGNvbnN0IElkZW50aWZpZXImIHByb3BlcnR5TmFtZSwgSlNWYWx1ZSB2YWx1ZSkKK3N0
YXRpYyB2b2lkIHB1dFByb3BlcnR5KEV4ZWNTdGF0ZSogZXhlYywgSlNPYmplY3QqIG9iaiwgUHJv
cGVydHlOYW1lIHByb3BlcnR5TmFtZSwgSlNWYWx1ZSB2YWx1ZSkKIHsKICAgICBQdXRQcm9wZXJ0
eVNsb3Qgc2xvdDsKICAgICBvYmotPm1ldGhvZFRhYmxlKCktPnB1dChvYmosIGV4ZWMsIHByb3Bl
cnR5TmFtZSwgdmFsdWUsIHNsb3QpOwpJbmRleDogU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRp
bWUvQXJyYXlQcm90b3R5cGUuaAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvSmF2YVNjcmlwdENvcmUv
cnVudGltZS9BcnJheVByb3RvdHlwZS5oCShyZXZpc2lvbiAxMTY2NjcpCisrKyBTb3VyY2UvSmF2
YVNjcmlwdENvcmUvcnVudGltZS9BcnJheVByb3RvdHlwZS5oCSh3b3JraW5nIGNvcHkpCkBAIC00
MCw4ICs0MCw4IEBAIG5hbWVzcGFjZSBKU0MgewogICAgICAgICAgICAgcmV0dXJuIHByb3RvdHlw
ZTsKICAgICAgICAgfQogICAgICAgICAKLSAgICAgICAgc3RhdGljIGJvb2wgZ2V0T3duUHJvcGVy
dHlTbG90KEpTQ2VsbCosIEV4ZWNTdGF0ZSosIGNvbnN0IElkZW50aWZpZXImLCBQcm9wZXJ0eVNs
b3QmKTsKLSAgICAgICAgc3RhdGljIGJvb2wgZ2V0T3duUHJvcGVydHlEZXNjcmlwdG9yKEpTT2Jq
ZWN0KiwgRXhlY1N0YXRlKiwgY29uc3QgSWRlbnRpZmllciYsIFByb3BlcnR5RGVzY3JpcHRvciYp
OworICAgICAgICBzdGF0aWMgYm9vbCBnZXRPd25Qcm9wZXJ0eVNsb3QoSlNDZWxsKiwgRXhlY1N0
YXRlKiwgUHJvcGVydHlOYW1lLCBQcm9wZXJ0eVNsb3QmKTsKKyAgICAgICAgc3RhdGljIGJvb2wg
Z2V0T3duUHJvcGVydHlEZXNjcmlwdG9yKEpTT2JqZWN0KiwgRXhlY1N0YXRlKiwgUHJvcGVydHlO
YW1lLCBQcm9wZXJ0eURlc2NyaXB0b3ImKTsKIAogICAgICAgICBzdGF0aWMgY29uc3QgQ2xhc3NJ
bmZvIHNfaW5mbzsKIApJbmRleDogU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvQm9vbGVh
bkNvbnN0cnVjdG9yLmNwcAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVu
dGltZS9Cb29sZWFuQ29uc3RydWN0b3IuY3BwCShyZXZpc2lvbiAxMTY2NjcpCisrKyBTb3VyY2Uv
SmF2YVNjcmlwdENvcmUvcnVudGltZS9Cb29sZWFuQ29uc3RydWN0b3IuY3BwCSh3b3JraW5nIGNv
cHkpCkBAIC0zOCw3ICszOCw3IEBAIEJvb2xlYW5Db25zdHJ1Y3Rvcjo6Qm9vbGVhbkNvbnN0cnVj
dG9yKEoKIAogdm9pZCBCb29sZWFuQ29uc3RydWN0b3I6OmZpbmlzaENyZWF0aW9uKEV4ZWNTdGF0
ZSogZXhlYywgQm9vbGVhblByb3RvdHlwZSogYm9vbGVhblByb3RvdHlwZSkKIHsKLSAgICBCYXNl
OjpmaW5pc2hDcmVhdGlvbihleGVjLT5nbG9iYWxEYXRhKCksIElkZW50aWZpZXIoZXhlYywgYm9v
bGVhblByb3RvdHlwZS0+Y2xhc3NJbmZvKCktPmNsYXNzTmFtZSkpOworICAgIEJhc2U6OmZpbmlz
aENyZWF0aW9uKGV4ZWMtPmdsb2JhbERhdGEoKSwgYm9vbGVhblByb3RvdHlwZS0+Y2xhc3NJbmZv
KCktPmNsYXNzTmFtZSk7CiAgICAgcHV0RGlyZWN0V2l0aG91dFRyYW5zaXRpb24oZXhlYy0+Z2xv
YmFsRGF0YSgpLCBleGVjLT5wcm9wZXJ0eU5hbWVzKCkucHJvdG90eXBlLCBib29sZWFuUHJvdG90
eXBlLCBEb250RW51bSB8IERvbnREZWxldGUgfCBSZWFkT25seSk7CiAKICAgICAvLyBuby4gb2Yg
YXJndW1lbnRzIGZvciBjb25zdHJ1Y3RvcgpJbmRleDogU291cmNlL0phdmFTY3JpcHRDb3JlL3J1
bnRpbWUvQm9vbGVhblByb3RvdHlwZS5jcHAKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL0phdmFTY3Jp
cHRDb3JlL3J1bnRpbWUvQm9vbGVhblByb3RvdHlwZS5jcHAJKHJldmlzaW9uIDExNjY2NykKKysr
IFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL0Jvb2xlYW5Qcm90b3R5cGUuY3BwCSh3b3Jr
aW5nIGNvcHkpCkBAIC02MywxMiArNjMsMTIgQEAgdm9pZCBCb29sZWFuUHJvdG90eXBlOjpmaW5p
c2hDcmVhdGlvbihFeAogICAgIEFTU0VSVChpbmhlcml0cygmc19pbmZvKSk7CiB9CiAKLWJvb2wg
Qm9vbGVhblByb3RvdHlwZTo6Z2V0T3duUHJvcGVydHlTbG90KEpTQ2VsbCogY2VsbCwgRXhlY1N0
YXRlKiBleGVjLCBjb25zdCBJZGVudGlmaWVyJiBwcm9wZXJ0eU5hbWUsIFByb3BlcnR5U2xvdCAm
c2xvdCkKK2Jvb2wgQm9vbGVhblByb3RvdHlwZTo6Z2V0T3duUHJvcGVydHlTbG90KEpTQ2VsbCog
Y2VsbCwgRXhlY1N0YXRlKiBleGVjLCBQcm9wZXJ0eU5hbWUgcHJvcGVydHlOYW1lLCBQcm9wZXJ0
eVNsb3QgJnNsb3QpCiB7CiAgICAgcmV0dXJuIGdldFN0YXRpY0Z1bmN0aW9uU2xvdDxCb29sZWFu
T2JqZWN0PihleGVjLCBFeGVjU3RhdGU6OmJvb2xlYW5Qcm90b3R5cGVUYWJsZShleGVjKSwganND
YXN0PEJvb2xlYW5Qcm90b3R5cGUqPihjZWxsKSwgcHJvcGVydHlOYW1lLCBzbG90KTsKIH0KIAot
Ym9vbCBCb29sZWFuUHJvdG90eXBlOjpnZXRPd25Qcm9wZXJ0eURlc2NyaXB0b3IoSlNPYmplY3Qq
IG9iamVjdCwgRXhlY1N0YXRlKiBleGVjLCBjb25zdCBJZGVudGlmaWVyJiBwcm9wZXJ0eU5hbWUs
IFByb3BlcnR5RGVzY3JpcHRvciYgZGVzY3JpcHRvcikKK2Jvb2wgQm9vbGVhblByb3RvdHlwZTo6
Z2V0T3duUHJvcGVydHlEZXNjcmlwdG9yKEpTT2JqZWN0KiBvYmplY3QsIEV4ZWNTdGF0ZSogZXhl
YywgUHJvcGVydHlOYW1lIHByb3BlcnR5TmFtZSwgUHJvcGVydHlEZXNjcmlwdG9yJiBkZXNjcmlw
dG9yKQogewogICAgIHJldHVybiBnZXRTdGF0aWNGdW5jdGlvbkRlc2NyaXB0b3I8Qm9vbGVhbk9i
amVjdD4oZXhlYywgRXhlY1N0YXRlOjpib29sZWFuUHJvdG90eXBlVGFibGUoZXhlYyksIGpzQ2Fz
dDxCb29sZWFuUHJvdG90eXBlKj4ob2JqZWN0KSwgcHJvcGVydHlOYW1lLCBkZXNjcmlwdG9yKTsK
IH0KSW5kZXg6IFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL0Jvb2xlYW5Qcm90b3R5cGUu
aAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09Ci0tLSBTb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9Cb29sZWFuUHJv
dG90eXBlLmgJKHJldmlzaW9uIDExNjY2NykKKysrIFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50
aW1lL0Jvb2xlYW5Qcm90b3R5cGUuaAkod29ya2luZyBjb3B5KQpAQCAtNDksOSArNDksOSBAQCBu
YW1lc3BhY2UgSlNDIHsKIAogICAgIHByaXZhdGU6CiAgICAgICAgIEJvb2xlYW5Qcm90b3R5cGUo
RXhlY1N0YXRlKiwgU3RydWN0dXJlKik7Ci0gICAgICAgIHN0YXRpYyBib29sIGdldE93blByb3Bl
cnR5U2xvdChKU0NlbGwqLCBFeGVjU3RhdGUqLCBjb25zdCBJZGVudGlmaWVyJiwgUHJvcGVydHlT
bG90Jik7CisgICAgICAgIHN0YXRpYyBib29sIGdldE93blByb3BlcnR5U2xvdChKU0NlbGwqLCBF
eGVjU3RhdGUqLCBQcm9wZXJ0eU5hbWUsIFByb3BlcnR5U2xvdCYpOwogCi0gICAgICAgIHN0YXRp
YyBib29sIGdldE93blByb3BlcnR5RGVzY3JpcHRvcihKU09iamVjdCosIEV4ZWNTdGF0ZSosIGNv
bnN0IElkZW50aWZpZXImLCBQcm9wZXJ0eURlc2NyaXB0b3ImKTsKKyAgICAgICAgc3RhdGljIGJv
b2wgZ2V0T3duUHJvcGVydHlEZXNjcmlwdG9yKEpTT2JqZWN0KiwgRXhlY1N0YXRlKiwgUHJvcGVy
dHlOYW1lLCBQcm9wZXJ0eURlc2NyaXB0b3ImKTsKICAgICB9OwogCiB9IC8vIG5hbWVzcGFjZSBK
U0MKSW5kZXg6IFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL0NsYXNzSW5mby5oCj09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT0KLS0tIFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL0NsYXNzSW5mby5oCShyZXZp
c2lvbiAxMTY2NjcpCisrKyBTb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9DbGFzc0luZm8u
aAkod29ya2luZyBjb3B5KQpAQCAtNDUsMTkgKzQ1LDE5IEBAIG5hbWVzcGFjZSBKU0MgewogICAg
ICAgICB0eXBlZGVmIENvbnN0cnVjdFR5cGUgKCpHZXRDb25zdHJ1Y3REYXRhRnVuY3Rpb25QdHIp
KEpTQ2VsbCosIENvbnN0cnVjdERhdGEmKTsKICAgICAgICAgR2V0Q29uc3RydWN0RGF0YUZ1bmN0
aW9uUHRyIGdldENvbnN0cnVjdERhdGE7CiAKLSAgICAgICAgdHlwZWRlZiB2b2lkICgqUHV0RnVu
Y3Rpb25QdHIpKEpTQ2VsbCosIEV4ZWNTdGF0ZSosIGNvbnN0IElkZW50aWZpZXImIHByb3BlcnR5
TmFtZSwgSlNWYWx1ZSwgUHV0UHJvcGVydHlTbG90Jik7CisgICAgICAgIHR5cGVkZWYgdm9pZCAo
KlB1dEZ1bmN0aW9uUHRyKShKU0NlbGwqLCBFeGVjU3RhdGUqLCBQcm9wZXJ0eU5hbWUgcHJvcGVy
dHlOYW1lLCBKU1ZhbHVlLCBQdXRQcm9wZXJ0eVNsb3QmKTsKICAgICAgICAgUHV0RnVuY3Rpb25Q
dHIgcHV0OwogCiAgICAgICAgIHR5cGVkZWYgdm9pZCAoKlB1dEJ5SW5kZXhGdW5jdGlvblB0ciko
SlNDZWxsKiwgRXhlY1N0YXRlKiwgdW5zaWduZWQgcHJvcGVydHlOYW1lLCBKU1ZhbHVlLCBib29s
IHNob3VsZFRocm93KTsKICAgICAgICAgUHV0QnlJbmRleEZ1bmN0aW9uUHRyIHB1dEJ5SW5kZXg7
CiAKLSAgICAgICAgdHlwZWRlZiBib29sICgqRGVsZXRlUHJvcGVydHlGdW5jdGlvblB0cikoSlND
ZWxsKiwgRXhlY1N0YXRlKiwgY29uc3QgSWRlbnRpZmllciYpOworICAgICAgICB0eXBlZGVmIGJv
b2wgKCpEZWxldGVQcm9wZXJ0eUZ1bmN0aW9uUHRyKShKU0NlbGwqLCBFeGVjU3RhdGUqLCBQcm9w
ZXJ0eU5hbWUpOwogICAgICAgICBEZWxldGVQcm9wZXJ0eUZ1bmN0aW9uUHRyIGRlbGV0ZVByb3Bl
cnR5OwogCiAgICAgICAgIHR5cGVkZWYgYm9vbCAoKkRlbGV0ZVByb3BlcnR5QnlJbmRleEZ1bmN0
aW9uUHRyKShKU0NlbGwqLCBFeGVjU3RhdGUqLCB1bnNpZ25lZCk7CiAgICAgICAgIERlbGV0ZVBy
b3BlcnR5QnlJbmRleEZ1bmN0aW9uUHRyIGRlbGV0ZVByb3BlcnR5QnlJbmRleDsKIAotICAgICAg
ICB0eXBlZGVmIGJvb2wgKCpHZXRPd25Qcm9wZXJ0eVNsb3RGdW5jdGlvblB0cikoSlNDZWxsKiwg
RXhlY1N0YXRlKiwgY29uc3QgSWRlbnRpZmllciYsIFByb3BlcnR5U2xvdCYpOworICAgICAgICB0
eXBlZGVmIGJvb2wgKCpHZXRPd25Qcm9wZXJ0eVNsb3RGdW5jdGlvblB0cikoSlNDZWxsKiwgRXhl
Y1N0YXRlKiwgUHJvcGVydHlOYW1lLCBQcm9wZXJ0eVNsb3QmKTsKICAgICAgICAgR2V0T3duUHJv
cGVydHlTbG90RnVuY3Rpb25QdHIgZ2V0T3duUHJvcGVydHlTbG90OwogCiAgICAgICAgIHR5cGVk
ZWYgYm9vbCAoKkdldE93blByb3BlcnR5U2xvdEJ5SW5kZXhGdW5jdGlvblB0cikoSlNDZWxsKiwg
RXhlY1N0YXRlKiwgdW5zaWduZWQsIFByb3BlcnR5U2xvdCYpOwpAQCAtODEsMTMgKzgxLDEzIEBA
IG5hbWVzcGFjZSBKU0MgewogICAgICAgICB0eXBlZGVmIGJvb2wgKCpIYXNJbnN0YW5jZUZ1bmN0
aW9uUHRyKShKU09iamVjdCosIEV4ZWNTdGF0ZSosIEpTVmFsdWUsIEpTVmFsdWUpOwogICAgICAg
ICBIYXNJbnN0YW5jZUZ1bmN0aW9uUHRyIGhhc0luc3RhbmNlOwogCi0gICAgICAgIHR5cGVkZWYg
dm9pZCAoKlB1dFdpdGhBdHRyaWJ1dGVzRnVuY3Rpb25QdHIpKEpTT2JqZWN0KiwgRXhlY1N0YXRl
KiwgY29uc3QgSWRlbnRpZmllciYgcHJvcGVydHlOYW1lLCBKU1ZhbHVlLCB1bnNpZ25lZCBhdHRy
aWJ1dGVzKTsKKyAgICAgICAgdHlwZWRlZiB2b2lkICgqUHV0V2l0aEF0dHJpYnV0ZXNGdW5jdGlv
blB0cikoSlNPYmplY3QqLCBFeGVjU3RhdGUqLCBQcm9wZXJ0eU5hbWUgcHJvcGVydHlOYW1lLCBK
U1ZhbHVlLCB1bnNpZ25lZCBhdHRyaWJ1dGVzKTsKICAgICAgICAgUHV0V2l0aEF0dHJpYnV0ZXNG
dW5jdGlvblB0ciBwdXREaXJlY3RWaXJ0dWFsOwogCi0gICAgICAgIHR5cGVkZWYgYm9vbCAoKkRl
ZmluZU93blByb3BlcnR5RnVuY3Rpb25QdHIpKEpTT2JqZWN0KiwgRXhlY1N0YXRlKiwgY29uc3Qg
SWRlbnRpZmllciYsIFByb3BlcnR5RGVzY3JpcHRvciYsIGJvb2wpOworICAgICAgICB0eXBlZGVm
IGJvb2wgKCpEZWZpbmVPd25Qcm9wZXJ0eUZ1bmN0aW9uUHRyKShKU09iamVjdCosIEV4ZWNTdGF0
ZSosIFByb3BlcnR5TmFtZSwgUHJvcGVydHlEZXNjcmlwdG9yJiwgYm9vbCk7CiAgICAgICAgIERl
ZmluZU93blByb3BlcnR5RnVuY3Rpb25QdHIgZGVmaW5lT3duUHJvcGVydHk7CiAKLSAgICAgICAg
dHlwZWRlZiBib29sICgqR2V0T3duUHJvcGVydHlEZXNjcmlwdG9yRnVuY3Rpb25QdHIpKEpTT2Jq
ZWN0KiwgRXhlY1N0YXRlKiwgY29uc3QgSWRlbnRpZmllciYsIFByb3BlcnR5RGVzY3JpcHRvciYp
OworICAgICAgICB0eXBlZGVmIGJvb2wgKCpHZXRPd25Qcm9wZXJ0eURlc2NyaXB0b3JGdW5jdGlv
blB0cikoSlNPYmplY3QqLCBFeGVjU3RhdGUqLCBQcm9wZXJ0eU5hbWUsIFByb3BlcnR5RGVzY3Jp
cHRvciYpOwogICAgICAgICBHZXRPd25Qcm9wZXJ0eURlc2NyaXB0b3JGdW5jdGlvblB0ciBnZXRP
d25Qcm9wZXJ0eURlc2NyaXB0b3I7CiAgICAgfTsKIApJbmRleDogU291cmNlL0phdmFTY3JpcHRD
b3JlL3J1bnRpbWUvRGF0ZUNvbnN0cnVjdG9yLmNwcAo9PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvSmF2
YVNjcmlwdENvcmUvcnVudGltZS9EYXRlQ29uc3RydWN0b3IuY3BwCShyZXZpc2lvbiAxMTY2Njcp
CisrKyBTb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9EYXRlQ29uc3RydWN0b3IuY3BwCSh3
b3JraW5nIGNvcHkpCkBAIC04MSwxNyArODEsMTcgQEAgRGF0ZUNvbnN0cnVjdG9yOjpEYXRlQ29u
c3RydWN0b3IoSlNHbG9iYQogCiB2b2lkIERhdGVDb25zdHJ1Y3Rvcjo6ZmluaXNoQ3JlYXRpb24o
RXhlY1N0YXRlKiBleGVjLCBEYXRlUHJvdG90eXBlKiBkYXRlUHJvdG90eXBlKQogewotICAgIEJh
c2U6OmZpbmlzaENyZWF0aW9uKGV4ZWMtPmdsb2JhbERhdGEoKSwgSWRlbnRpZmllcihleGVjLCBk
YXRlUHJvdG90eXBlLT5jbGFzc0luZm8oKS0+Y2xhc3NOYW1lKSk7CisgICAgQmFzZTo6ZmluaXNo
Q3JlYXRpb24oZXhlYy0+Z2xvYmFsRGF0YSgpLCBkYXRlUHJvdG90eXBlLT5jbGFzc0luZm8oKS0+
Y2xhc3NOYW1lKTsKICAgICBwdXREaXJlY3RXaXRob3V0VHJhbnNpdGlvbihleGVjLT5nbG9iYWxE
YXRhKCksIGV4ZWMtPnByb3BlcnR5TmFtZXMoKS5wcm90b3R5cGUsIGRhdGVQcm90b3R5cGUsIERv
bnRFbnVtIHwgRG9udERlbGV0ZSB8IFJlYWRPbmx5KTsKICAgICBwdXREaXJlY3RXaXRob3V0VHJh
bnNpdGlvbihleGVjLT5nbG9iYWxEYXRhKCksIGV4ZWMtPnByb3BlcnR5TmFtZXMoKS5sZW5ndGgs
IGpzTnVtYmVyKDcpLCBSZWFkT25seSB8IERvbnRFbnVtIHwgRG9udERlbGV0ZSk7CiB9CiAKLWJv
b2wgRGF0ZUNvbnN0cnVjdG9yOjpnZXRPd25Qcm9wZXJ0eVNsb3QoSlNDZWxsKiBjZWxsLCBFeGVj
U3RhdGUqIGV4ZWMsIGNvbnN0IElkZW50aWZpZXImIHByb3BlcnR5TmFtZSwgUHJvcGVydHlTbG90
ICZzbG90KQorYm9vbCBEYXRlQ29uc3RydWN0b3I6OmdldE93blByb3BlcnR5U2xvdChKU0NlbGwq
IGNlbGwsIEV4ZWNTdGF0ZSogZXhlYywgUHJvcGVydHlOYW1lIHByb3BlcnR5TmFtZSwgUHJvcGVy
dHlTbG90ICZzbG90KQogewogICAgIHJldHVybiBnZXRTdGF0aWNGdW5jdGlvblNsb3Q8SW50ZXJu
YWxGdW5jdGlvbj4oZXhlYywgRXhlY1N0YXRlOjpkYXRlQ29uc3RydWN0b3JUYWJsZShleGVjKSwg
anNDYXN0PERhdGVDb25zdHJ1Y3Rvcio+KGNlbGwpLCBwcm9wZXJ0eU5hbWUsIHNsb3QpOwogfQog
Ci1ib29sIERhdGVDb25zdHJ1Y3Rvcjo6Z2V0T3duUHJvcGVydHlEZXNjcmlwdG9yKEpTT2JqZWN0
KiBvYmplY3QsIEV4ZWNTdGF0ZSogZXhlYywgY29uc3QgSWRlbnRpZmllciYgcHJvcGVydHlOYW1l
LCBQcm9wZXJ0eURlc2NyaXB0b3ImIGRlc2NyaXB0b3IpCitib29sIERhdGVDb25zdHJ1Y3Rvcjo6
Z2V0T3duUHJvcGVydHlEZXNjcmlwdG9yKEpTT2JqZWN0KiBvYmplY3QsIEV4ZWNTdGF0ZSogZXhl
YywgUHJvcGVydHlOYW1lIHByb3BlcnR5TmFtZSwgUHJvcGVydHlEZXNjcmlwdG9yJiBkZXNjcmlw
dG9yKQogewogICAgIHJldHVybiBnZXRTdGF0aWNGdW5jdGlvbkRlc2NyaXB0b3I8SW50ZXJuYWxG
dW5jdGlvbj4oZXhlYywgRXhlY1N0YXRlOjpkYXRlQ29uc3RydWN0b3JUYWJsZShleGVjKSwganND
YXN0PERhdGVDb25zdHJ1Y3Rvcio+KG9iamVjdCksIHByb3BlcnR5TmFtZSwgZGVzY3JpcHRvcik7
CiB9CkluZGV4OiBTb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9EYXRlQ29uc3RydWN0b3Iu
aAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09Ci0tLSBTb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9EYXRlQ29uc3Ry
dWN0b3IuaAkocmV2aXNpb24gMTE2NjY3KQorKysgU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRp
bWUvRGF0ZUNvbnN0cnVjdG9yLmgJKHdvcmtpbmcgY29weSkKQEAgLTU0LDkgKzU0LDkgQEAgbmFt
ZXNwYWNlIEpTQyB7CiAgICAgICAgIHN0YXRpYyBDb25zdHJ1Y3RUeXBlIGdldENvbnN0cnVjdERh
dGEoSlNDZWxsKiwgQ29uc3RydWN0RGF0YSYpOwogICAgICAgICBzdGF0aWMgQ2FsbFR5cGUgZ2V0
Q2FsbERhdGEoSlNDZWxsKiwgQ2FsbERhdGEmKTsKIAotICAgICAgICBzdGF0aWMgYm9vbCBnZXRP
d25Qcm9wZXJ0eVNsb3QoSlNDZWxsKiwgRXhlY1N0YXRlKiwgY29uc3QgSWRlbnRpZmllciYsIFBy
b3BlcnR5U2xvdCYpOworICAgICAgICBzdGF0aWMgYm9vbCBnZXRPd25Qcm9wZXJ0eVNsb3QoSlND
ZWxsKiwgRXhlY1N0YXRlKiwgUHJvcGVydHlOYW1lLCBQcm9wZXJ0eVNsb3QmKTsKIAotICAgICAg
ICBzdGF0aWMgYm9vbCBnZXRPd25Qcm9wZXJ0eURlc2NyaXB0b3IoSlNPYmplY3QqLCBFeGVjU3Rh
dGUqLCBjb25zdCBJZGVudGlmaWVyJiwgUHJvcGVydHlEZXNjcmlwdG9yJik7CisgICAgICAgIHN0
YXRpYyBib29sIGdldE93blByb3BlcnR5RGVzY3JpcHRvcihKU09iamVjdCosIEV4ZWNTdGF0ZSos
IFByb3BlcnR5TmFtZSwgUHJvcGVydHlEZXNjcmlwdG9yJik7CiAgICAgfTsKIAogICAgIEpTT2Jq
ZWN0KiBjb25zdHJ1Y3REYXRlKEV4ZWNTdGF0ZSosIEpTR2xvYmFsT2JqZWN0KiwgY29uc3QgQXJn
TGlzdCYpOwpJbmRleDogU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvRGF0ZVByb3RvdHlw
ZS5jcHAKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PQotLS0gU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvRGF0ZVBy
b3RvdHlwZS5jcHAJKHJldmlzaW9uIDExNjY2NykKKysrIFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9y
dW50aW1lL0RhdGVQcm90b3R5cGUuY3BwCSh3b3JraW5nIGNvcHkpCkBAIC00NjcsMTIgKzQ2Nywx
MiBAQCB2b2lkIERhdGVQcm90b3R5cGU6OmZpbmlzaENyZWF0aW9uKEV4ZWNTCiAgICAgLy8gVGhl
IGNvbnN0cnVjdG9yIHdpbGwgYmUgYWRkZWQgbGF0ZXIsIGFmdGVyIERhdGVDb25zdHJ1Y3RvciBo
YXMgYmVlbiBidWlsdC4KIH0KIAotYm9vbCBEYXRlUHJvdG90eXBlOjpnZXRPd25Qcm9wZXJ0eVNs
b3QoSlNDZWxsKiBjZWxsLCBFeGVjU3RhdGUqIGV4ZWMsIGNvbnN0IElkZW50aWZpZXImIHByb3Bl
cnR5TmFtZSwgUHJvcGVydHlTbG90JiBzbG90KQorYm9vbCBEYXRlUHJvdG90eXBlOjpnZXRPd25Q
cm9wZXJ0eVNsb3QoSlNDZWxsKiBjZWxsLCBFeGVjU3RhdGUqIGV4ZWMsIFByb3BlcnR5TmFtZSBw
cm9wZXJ0eU5hbWUsIFByb3BlcnR5U2xvdCYgc2xvdCkKIHsKICAgICByZXR1cm4gZ2V0U3RhdGlj
RnVuY3Rpb25TbG90PEpTT2JqZWN0PihleGVjLCBFeGVjU3RhdGU6OmRhdGVUYWJsZShleGVjKSwg
anNDYXN0PERhdGVQcm90b3R5cGUqPihjZWxsKSwgcHJvcGVydHlOYW1lLCBzbG90KTsKIH0KIAot
Ym9vbCBEYXRlUHJvdG90eXBlOjpnZXRPd25Qcm9wZXJ0eURlc2NyaXB0b3IoSlNPYmplY3QqIG9i
amVjdCwgRXhlY1N0YXRlKiBleGVjLCBjb25zdCBJZGVudGlmaWVyJiBwcm9wZXJ0eU5hbWUsIFBy
b3BlcnR5RGVzY3JpcHRvciYgZGVzY3JpcHRvcikKK2Jvb2wgRGF0ZVByb3RvdHlwZTo6Z2V0T3du
UHJvcGVydHlEZXNjcmlwdG9yKEpTT2JqZWN0KiBvYmplY3QsIEV4ZWNTdGF0ZSogZXhlYywgUHJv
cGVydHlOYW1lIHByb3BlcnR5TmFtZSwgUHJvcGVydHlEZXNjcmlwdG9yJiBkZXNjcmlwdG9yKQog
ewogICAgIHJldHVybiBnZXRTdGF0aWNGdW5jdGlvbkRlc2NyaXB0b3I8SlNPYmplY3Q+KGV4ZWMs
IEV4ZWNTdGF0ZTo6ZGF0ZVRhYmxlKGV4ZWMpLCBqc0Nhc3Q8RGF0ZVByb3RvdHlwZSo+KG9iamVj
dCksIHByb3BlcnR5TmFtZSwgZGVzY3JpcHRvcik7CiB9CkluZGV4OiBTb3VyY2UvSmF2YVNjcmlw
dENvcmUvcnVudGltZS9EYXRlUHJvdG90eXBlLmgKPT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL0phdmFT
Y3JpcHRDb3JlL3J1bnRpbWUvRGF0ZVByb3RvdHlwZS5oCShyZXZpc2lvbiAxMTY2NjcpCisrKyBT
b3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9EYXRlUHJvdG90eXBlLmgJKHdvcmtpbmcgY29w
eSkKQEAgLTQwLDkgKzQwLDkgQEAgbmFtZXNwYWNlIEpTQyB7CiAgICAgICAgICAgICBwcm90b3R5
cGUtPmZpbmlzaENyZWF0aW9uKGV4ZWMsIGdsb2JhbE9iamVjdCk7CiAgICAgICAgICAgICByZXR1
cm4gcHJvdG90eXBlOwogICAgICAgICB9Ci0gICAgICAgIHN0YXRpYyBib29sIGdldE93blByb3Bl
cnR5U2xvdChKU0NlbGwqLCBFeGVjU3RhdGUqLCBjb25zdCBJZGVudGlmaWVyJiwgUHJvcGVydHlT
bG90Jik7CisgICAgICAgIHN0YXRpYyBib29sIGdldE93blByb3BlcnR5U2xvdChKU0NlbGwqLCBF
eGVjU3RhdGUqLCBQcm9wZXJ0eU5hbWUsIFByb3BlcnR5U2xvdCYpOwogCi0gICAgICAgIHN0YXRp
YyBib29sIGdldE93blByb3BlcnR5RGVzY3JpcHRvcihKU09iamVjdCosIEV4ZWNTdGF0ZSosIGNv
bnN0IElkZW50aWZpZXImLCBQcm9wZXJ0eURlc2NyaXB0b3ImKTsKKyAgICAgICAgc3RhdGljIGJv
b2wgZ2V0T3duUHJvcGVydHlEZXNjcmlwdG9yKEpTT2JqZWN0KiwgRXhlY1N0YXRlKiwgUHJvcGVy
dHlOYW1lLCBQcm9wZXJ0eURlc2NyaXB0b3ImKTsKIAogICAgICAgICBzdGF0aWMgY29uc3QgQ2xh
c3NJbmZvIHNfaW5mbzsKIApJbmRleDogU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvRXJy
b3IuaAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9FcnJvci5o
CShyZXZpc2lvbiAxMTY2NjcpCisrKyBTb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9FcnJv
ci5oCSh3b3JraW5nIGNvcHkpCkBAIC05MCw3ICs5MCw3IEBAIG5hbWVzcGFjZSBKU0MgewogICAg
ICAgICBzdGF0aWMgU3RyaWN0TW9kZVR5cGVFcnJvckZ1bmN0aW9uKiBjcmVhdGUoRXhlY1N0YXRl
KiBleGVjLCBKU0dsb2JhbE9iamVjdCogZ2xvYmFsT2JqZWN0LCBTdHJ1Y3R1cmUqIHN0cnVjdHVy
ZSwgY29uc3QgVVN0cmluZyYgbWVzc2FnZSkKICAgICAgICAgewogICAgICAgICAgICAgU3RyaWN0
TW9kZVR5cGVFcnJvckZ1bmN0aW9uKiBmdW5jdGlvbiA9IG5ldyAoTm90TnVsbCwgYWxsb2NhdGVD
ZWxsPFN0cmljdE1vZGVUeXBlRXJyb3JGdW5jdGlvbj4oKmV4ZWMtPmhlYXAoKSkpIFN0cmljdE1v
ZGVUeXBlRXJyb3JGdW5jdGlvbihnbG9iYWxPYmplY3QsIHN0cnVjdHVyZSwgbWVzc2FnZSk7Ci0g
ICAgICAgICAgICBmdW5jdGlvbi0+ZmluaXNoQ3JlYXRpb24oZXhlYy0+Z2xvYmFsRGF0YSgpLCBl
eGVjLT5nbG9iYWxEYXRhKCkucHJvcGVydHlOYW1lcy0+ZW1wdHlJZGVudGlmaWVyKTsKKyAgICAg
ICAgICAgIGZ1bmN0aW9uLT5maW5pc2hDcmVhdGlvbihleGVjLT5nbG9iYWxEYXRhKCksICIiKTsK
ICAgICAgICAgICAgIHJldHVybiBmdW5jdGlvbjsKICAgICAgICAgfQogICAgIApJbmRleDogU291
cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvRXJyb3JDb25zdHJ1Y3Rvci5jcHAKPT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PQotLS0gU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvRXJyb3JDb25zdHJ1Y3Rvci5jcHAJ
KHJldmlzaW9uIDExNjY2NykKKysrIFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL0Vycm9y
Q29uc3RydWN0b3IuY3BwCSh3b3JraW5nIGNvcHkpCkBAIC0zOSw3ICszOSw3IEBAIEVycm9yQ29u
c3RydWN0b3I6OkVycm9yQ29uc3RydWN0b3IoSlNHbG8KIAogdm9pZCBFcnJvckNvbnN0cnVjdG9y
OjpmaW5pc2hDcmVhdGlvbihFeGVjU3RhdGUqIGV4ZWMsIEVycm9yUHJvdG90eXBlKiBlcnJvclBy
b3RvdHlwZSkKIHsKLSAgICBCYXNlOjpmaW5pc2hDcmVhdGlvbihleGVjLT5nbG9iYWxEYXRhKCks
IElkZW50aWZpZXIoZXhlYywgZXJyb3JQcm90b3R5cGUtPmNsYXNzSW5mbygpLT5jbGFzc05hbWUp
KTsKKyAgICBCYXNlOjpmaW5pc2hDcmVhdGlvbihleGVjLT5nbG9iYWxEYXRhKCksIGVycm9yUHJv
dG90eXBlLT5jbGFzc0luZm8oKS0+Y2xhc3NOYW1lKTsKICAgICAvLyBFQ01BIDE1LjExLjMuMSBF
cnJvci5wcm90b3R5cGUKICAgICBwdXREaXJlY3RXaXRob3V0VHJhbnNpdGlvbihleGVjLT5nbG9i
YWxEYXRhKCksIGV4ZWMtPnByb3BlcnR5TmFtZXMoKS5wcm90b3R5cGUsIGVycm9yUHJvdG90eXBl
LCBEb250RW51bSB8IERvbnREZWxldGUgfCBSZWFkT25seSk7CiAgICAgcHV0RGlyZWN0V2l0aG91
dFRyYW5zaXRpb24oZXhlYy0+Z2xvYmFsRGF0YSgpLCBleGVjLT5wcm9wZXJ0eU5hbWVzKCkubGVu
Z3RoLCBqc051bWJlcigxKSwgRG9udERlbGV0ZSB8IFJlYWRPbmx5IHwgRG9udEVudW0pOwpJbmRl
eDogU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvRXJyb3JQcm90b3R5cGUuY3BwCj09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT0KLS0tIFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL0Vycm9yUHJvdG90eXBlLmNw
cAkocmV2aXNpb24gMTE2NjY3KQorKysgU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvRXJy
b3JQcm90b3R5cGUuY3BwCSh3b3JraW5nIGNvcHkpCkBAIC02MywxMiArNjMsMTIgQEAgdm9pZCBF
cnJvclByb3RvdHlwZTo6ZmluaXNoQ3JlYXRpb24oRXhlYwogICAgIHB1dERpcmVjdChleGVjLT5n
bG9iYWxEYXRhKCksIGV4ZWMtPnByb3BlcnR5TmFtZXMoKS5uYW1lLCBqc05vbnRyaXZpYWxTdHJp
bmcoZXhlYywgIkVycm9yIiksIERvbnRFbnVtKTsKIH0KIAotYm9vbCBFcnJvclByb3RvdHlwZTo6
Z2V0T3duUHJvcGVydHlTbG90KEpTQ2VsbCogY2VsbCwgRXhlY1N0YXRlKiBleGVjLCBjb25zdCBJ
ZGVudGlmaWVyJiBwcm9wZXJ0eU5hbWUsIFByb3BlcnR5U2xvdCAmc2xvdCkKK2Jvb2wgRXJyb3JQ
cm90b3R5cGU6OmdldE93blByb3BlcnR5U2xvdChKU0NlbGwqIGNlbGwsIEV4ZWNTdGF0ZSogZXhl
YywgUHJvcGVydHlOYW1lIHByb3BlcnR5TmFtZSwgUHJvcGVydHlTbG90ICZzbG90KQogewogICAg
IHJldHVybiBnZXRTdGF0aWNGdW5jdGlvblNsb3Q8RXJyb3JJbnN0YW5jZT4oZXhlYywgRXhlY1N0
YXRlOjplcnJvclByb3RvdHlwZVRhYmxlKGV4ZWMpLCBqc0Nhc3Q8RXJyb3JQcm90b3R5cGUqPihj
ZWxsKSwgcHJvcGVydHlOYW1lLCBzbG90KTsKIH0KIAotYm9vbCBFcnJvclByb3RvdHlwZTo6Z2V0
T3duUHJvcGVydHlEZXNjcmlwdG9yKEpTT2JqZWN0KiBvYmplY3QsIEV4ZWNTdGF0ZSogZXhlYywg
Y29uc3QgSWRlbnRpZmllciYgcHJvcGVydHlOYW1lLCBQcm9wZXJ0eURlc2NyaXB0b3ImIGRlc2Ny
aXB0b3IpCitib29sIEVycm9yUHJvdG90eXBlOjpnZXRPd25Qcm9wZXJ0eURlc2NyaXB0b3IoSlNP
YmplY3QqIG9iamVjdCwgRXhlY1N0YXRlKiBleGVjLCBQcm9wZXJ0eU5hbWUgcHJvcGVydHlOYW1l
LCBQcm9wZXJ0eURlc2NyaXB0b3ImIGRlc2NyaXB0b3IpCiB7CiAgICAgcmV0dXJuIGdldFN0YXRp
Y0Z1bmN0aW9uRGVzY3JpcHRvcjxFcnJvckluc3RhbmNlPihleGVjLCBFeGVjU3RhdGU6OmVycm9y
UHJvdG90eXBlVGFibGUoZXhlYyksIGpzQ2FzdDxFcnJvclByb3RvdHlwZSo+KG9iamVjdCksIHBy
b3BlcnR5TmFtZSwgZGVzY3JpcHRvcik7CiB9CkluZGV4OiBTb3VyY2UvSmF2YVNjcmlwdENvcmUv
cnVudGltZS9FcnJvclByb3RvdHlwZS5oCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9KYXZhU2NyaXB0
Q29yZS9ydW50aW1lL0Vycm9yUHJvdG90eXBlLmgJKHJldmlzaW9uIDExNjY2NykKKysrIFNvdXJj
ZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL0Vycm9yUHJvdG90eXBlLmgJKHdvcmtpbmcgY29weSkK
QEAgLTUyLDggKzUyLDggQEAgbmFtZXNwYWNlIEpTQyB7CiAgICAgICAgIHN0YXRpYyBjb25zdCB1
bnNpZ25lZCBTdHJ1Y3R1cmVGbGFncyA9IE92ZXJyaWRlc0dldE93blByb3BlcnR5U2xvdCB8IEVy
cm9ySW5zdGFuY2U6OlN0cnVjdHVyZUZsYWdzOwogCiAgICAgcHJpdmF0ZToKLSAgICAgICAgc3Rh
dGljIGJvb2wgZ2V0T3duUHJvcGVydHlTbG90KEpTQ2VsbCosIEV4ZWNTdGF0ZSosIGNvbnN0IElk
ZW50aWZpZXImLCBQcm9wZXJ0eVNsb3QmKTsKLSAgICAgICAgc3RhdGljIGJvb2wgZ2V0T3duUHJv
cGVydHlEZXNjcmlwdG9yKEpTT2JqZWN0KiwgRXhlY1N0YXRlKiwgY29uc3QgSWRlbnRpZmllciYs
IFByb3BlcnR5RGVzY3JpcHRvciYpOworICAgICAgICBzdGF0aWMgYm9vbCBnZXRPd25Qcm9wZXJ0
eVNsb3QoSlNDZWxsKiwgRXhlY1N0YXRlKiwgUHJvcGVydHlOYW1lLCBQcm9wZXJ0eVNsb3QmKTsK
KyAgICAgICAgc3RhdGljIGJvb2wgZ2V0T3duUHJvcGVydHlEZXNjcmlwdG9yKEpTT2JqZWN0Kiwg
RXhlY1N0YXRlKiwgUHJvcGVydHlOYW1lLCBQcm9wZXJ0eURlc2NyaXB0b3ImKTsKICAgICB9Owog
CiB9IC8vIG5hbWVzcGFjZSBKU0MKSW5kZXg6IFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1l
L0Z1bmN0aW9uQ29uc3RydWN0b3IuY3BwCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9KYXZhU2NyaXB0
Q29yZS9ydW50aW1lL0Z1bmN0aW9uQ29uc3RydWN0b3IuY3BwCShyZXZpc2lvbiAxMTY2NjcpCisr
KyBTb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9GdW5jdGlvbkNvbnN0cnVjdG9yLmNwcAko
d29ya2luZyBjb3B5KQpAQCAtNDcsNyArNDcsNyBAQCBGdW5jdGlvbkNvbnN0cnVjdG9yOjpGdW5j
dGlvbkNvbnN0cnVjdG9yCiAKIHZvaWQgRnVuY3Rpb25Db25zdHJ1Y3Rvcjo6ZmluaXNoQ3JlYXRp
b24oRXhlY1N0YXRlKiBleGVjLCBGdW5jdGlvblByb3RvdHlwZSogZnVuY3Rpb25Qcm90b3R5cGUp
CiB7Ci0gICAgQmFzZTo6ZmluaXNoQ3JlYXRpb24oZXhlYy0+Z2xvYmFsRGF0YSgpLCBJZGVudGlm
aWVyKGV4ZWMsIGZ1bmN0aW9uUHJvdG90eXBlLT5jbGFzc0luZm8oKS0+Y2xhc3NOYW1lKSk7Cisg
ICAgQmFzZTo6ZmluaXNoQ3JlYXRpb24oZXhlYy0+Z2xvYmFsRGF0YSgpLCBmdW5jdGlvblByb3Rv
dHlwZS0+Y2xhc3NJbmZvKCktPmNsYXNzTmFtZSk7CiAgICAgcHV0RGlyZWN0V2l0aG91dFRyYW5z
aXRpb24oZXhlYy0+Z2xvYmFsRGF0YSgpLCBleGVjLT5wcm9wZXJ0eU5hbWVzKCkucHJvdG90eXBl
LCBmdW5jdGlvblByb3RvdHlwZSwgRG9udEVudW0gfCBEb250RGVsZXRlIHwgUmVhZE9ubHkpOwog
CiAgICAgLy8gTnVtYmVyIG9mIGFyZ3VtZW50cyBmb3IgY29uc3RydWN0b3IKSW5kZXg6IFNvdXJj
ZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL0Z1bmN0aW9uUHJvdG90eXBlLmNwcAo9PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
Ci0tLSBTb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9GdW5jdGlvblByb3RvdHlwZS5jcHAJ
KHJldmlzaW9uIDExNjY2NykKKysrIFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL0Z1bmN0
aW9uUHJvdG90eXBlLmNwcAkod29ya2luZyBjb3B5KQpAQCAtNDcsNyArNDcsNyBAQCBGdW5jdGlv
blByb3RvdHlwZTo6RnVuY3Rpb25Qcm90b3R5cGUoSlNHCiB7CiB9CiAKLXZvaWQgRnVuY3Rpb25Q
cm90b3R5cGU6OmZpbmlzaENyZWF0aW9uKEV4ZWNTdGF0ZSogZXhlYywgY29uc3QgSWRlbnRpZmll
ciYgbmFtZSkKK3ZvaWQgRnVuY3Rpb25Qcm90b3R5cGU6OmZpbmlzaENyZWF0aW9uKEV4ZWNTdGF0
ZSogZXhlYywgY29uc3QgVVN0cmluZyYgbmFtZSkKIHsKICAgICBCYXNlOjpmaW5pc2hDcmVhdGlv
bihleGVjLT5nbG9iYWxEYXRhKCksIG5hbWUpOwogICAgIHB1dERpcmVjdFdpdGhvdXRUcmFuc2l0
aW9uKGV4ZWMtPmdsb2JhbERhdGEoKSwgZXhlYy0+cHJvcGVydHlOYW1lcygpLmxlbmd0aCwganNO
dW1iZXIoMCksIERvbnREZWxldGUgfCBSZWFkT25seSB8IERvbnRFbnVtKTsKQEAgLTU1LDE2ICs1
NSwxNiBAQCB2b2lkIEZ1bmN0aW9uUHJvdG90eXBlOjpmaW5pc2hDcmVhdGlvbihFCiAKIHZvaWQg
RnVuY3Rpb25Qcm90b3R5cGU6OmFkZEZ1bmN0aW9uUHJvcGVydGllcyhFeGVjU3RhdGUqIGV4ZWMs
IEpTR2xvYmFsT2JqZWN0KiBnbG9iYWxPYmplY3QsIEpTRnVuY3Rpb24qKiBjYWxsRnVuY3Rpb24s
IEpTRnVuY3Rpb24qKiBhcHBseUZ1bmN0aW9uKQogewotICAgIEpTRnVuY3Rpb24qIHRvU3RyaW5n
RnVuY3Rpb24gPSBKU0Z1bmN0aW9uOjpjcmVhdGUoZXhlYywgZ2xvYmFsT2JqZWN0LCAwLCBleGVj
LT5wcm9wZXJ0eU5hbWVzKCkudG9TdHJpbmcsIGZ1bmN0aW9uUHJvdG9GdW5jVG9TdHJpbmcpOwor
ICAgIEpTRnVuY3Rpb24qIHRvU3RyaW5nRnVuY3Rpb24gPSBKU0Z1bmN0aW9uOjpjcmVhdGUoZXhl
YywgZ2xvYmFsT2JqZWN0LCAwLCBleGVjLT5wcm9wZXJ0eU5hbWVzKCkudG9TdHJpbmcudXN0cmlu
ZygpLCBmdW5jdGlvblByb3RvRnVuY1RvU3RyaW5nKTsKICAgICBwdXREaXJlY3RXaXRob3V0VHJh
bnNpdGlvbihleGVjLT5nbG9iYWxEYXRhKCksIGV4ZWMtPnByb3BlcnR5TmFtZXMoKS50b1N0cmlu
ZywgdG9TdHJpbmdGdW5jdGlvbiwgRG9udEVudW0pOwogCi0gICAgKmFwcGx5RnVuY3Rpb24gPSBK
U0Z1bmN0aW9uOjpjcmVhdGUoZXhlYywgZ2xvYmFsT2JqZWN0LCAyLCBleGVjLT5wcm9wZXJ0eU5h
bWVzKCkuYXBwbHksIGZ1bmN0aW9uUHJvdG9GdW5jQXBwbHkpOworICAgICphcHBseUZ1bmN0aW9u
ID0gSlNGdW5jdGlvbjo6Y3JlYXRlKGV4ZWMsIGdsb2JhbE9iamVjdCwgMiwgZXhlYy0+cHJvcGVy
dHlOYW1lcygpLmFwcGx5LnVzdHJpbmcoKSwgZnVuY3Rpb25Qcm90b0Z1bmNBcHBseSk7CiAgICAg
cHV0RGlyZWN0V2l0aG91dFRyYW5zaXRpb24oZXhlYy0+Z2xvYmFsRGF0YSgpLCBleGVjLT5wcm9w
ZXJ0eU5hbWVzKCkuYXBwbHksICphcHBseUZ1bmN0aW9uLCBEb250RW51bSk7CiAKLSAgICAqY2Fs
bEZ1bmN0aW9uID0gSlNGdW5jdGlvbjo6Y3JlYXRlKGV4ZWMsIGdsb2JhbE9iamVjdCwgMSwgZXhl
Yy0+cHJvcGVydHlOYW1lcygpLmNhbGwsIGZ1bmN0aW9uUHJvdG9GdW5jQ2FsbCk7CisgICAgKmNh
bGxGdW5jdGlvbiA9IEpTRnVuY3Rpb246OmNyZWF0ZShleGVjLCBnbG9iYWxPYmplY3QsIDEsIGV4
ZWMtPnByb3BlcnR5TmFtZXMoKS5jYWxsLnVzdHJpbmcoKSwgZnVuY3Rpb25Qcm90b0Z1bmNDYWxs
KTsKICAgICBwdXREaXJlY3RXaXRob3V0VHJhbnNpdGlvbihleGVjLT5nbG9iYWxEYXRhKCksIGV4
ZWMtPnByb3BlcnR5TmFtZXMoKS5jYWxsLCAqY2FsbEZ1bmN0aW9uLCBEb250RW51bSk7CiAKLSAg
ICBKU0Z1bmN0aW9uKiBiaW5kRnVuY3Rpb24gPSBKU0Z1bmN0aW9uOjpjcmVhdGUoZXhlYywgZ2xv
YmFsT2JqZWN0LCAxLCBleGVjLT5wcm9wZXJ0eU5hbWVzKCkuYmluZCwgZnVuY3Rpb25Qcm90b0Z1
bmNCaW5kKTsKKyAgICBKU0Z1bmN0aW9uKiBiaW5kRnVuY3Rpb24gPSBKU0Z1bmN0aW9uOjpjcmVh
dGUoZXhlYywgZ2xvYmFsT2JqZWN0LCAxLCBleGVjLT5wcm9wZXJ0eU5hbWVzKCkuYmluZC51c3Ry
aW5nKCksIGZ1bmN0aW9uUHJvdG9GdW5jQmluZCk7CiAgICAgcHV0RGlyZWN0V2l0aG91dFRyYW5z
aXRpb24oZXhlYy0+Z2xvYmFsRGF0YSgpLCBleGVjLT5wcm9wZXJ0eU5hbWVzKCkuYmluZCwgYmlu
ZEZ1bmN0aW9uLCBEb250RW51bSk7CiB9CiAKQEAgLTIwNyw5ICsyMDcsOCBAQCBFbmNvZGVkSlNW
YWx1ZSBKU0NfSE9TVF9DQUxMIGZ1bmN0aW9uUHJvCiAgICAgICAgICAgICBsZW5ndGggPSB0YXJn
ZXRMZW5ndGggLSBudW1Cb3VuZEFyZ3M7CiAgICAgfQogCi0gICAgSWRlbnRpZmllciBuYW1lKGV4
ZWMsIHRhcmdldC5nZXQoZXhlYywgZXhlYy0+cHJvcGVydHlOYW1lcygpLm5hbWUpLnRvU3RyaW5n
KGV4ZWMpLT52YWx1ZShleGVjKSk7Ci0KLSAgICByZXR1cm4gSlNWYWx1ZTo6ZW5jb2RlKEpTQm91
bmRGdW5jdGlvbjo6Y3JlYXRlKGV4ZWMsIGdsb2JhbE9iamVjdCwgdGFyZ2V0T2JqZWN0LCBleGVj
LT5hcmd1bWVudCgwKSwgYm91bmRBcmdzLCBsZW5ndGgsIG5hbWUpKTsKKyAgICBKU1N0cmluZyog
bmFtZSA9IHRhcmdldC5nZXQoZXhlYywgZXhlYy0+cHJvcGVydHlOYW1lcygpLm5hbWUpLnRvU3Ry
aW5nKGV4ZWMpOworICAgIHJldHVybiBKU1ZhbHVlOjplbmNvZGUoSlNCb3VuZEZ1bmN0aW9uOjpj
cmVhdGUoZXhlYywgZ2xvYmFsT2JqZWN0LCB0YXJnZXRPYmplY3QsIGV4ZWMtPmFyZ3VtZW50KDAp
LCBib3VuZEFyZ3MsIGxlbmd0aCwgbmFtZS0+dmFsdWUoZXhlYykpKTsKIH0KIAogfSAvLyBuYW1l
c3BhY2UgSlNDCkluZGV4OiBTb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9GdW5jdGlvblBy
b3RvdHlwZS5oCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL0Z1
bmN0aW9uUHJvdG90eXBlLmgJKHJldmlzaW9uIDExNjY2NykKKysrIFNvdXJjZS9KYXZhU2NyaXB0
Q29yZS9ydW50aW1lL0Z1bmN0aW9uUHJvdG90eXBlLmgJKHdvcmtpbmcgY29weSkKQEAgLTMyLDcg
KzMyLDcgQEAgbmFtZXNwYWNlIEpTQyB7CiAgICAgICAgIHN0YXRpYyBGdW5jdGlvblByb3RvdHlw
ZSogY3JlYXRlKEV4ZWNTdGF0ZSogZXhlYywgSlNHbG9iYWxPYmplY3QqIGdsb2JhbE9iamVjdCwg
U3RydWN0dXJlKiBzdHJ1Y3R1cmUpCiAgICAgICAgIHsKICAgICAgICAgICAgIEZ1bmN0aW9uUHJv
dG90eXBlKiBwcm90b3R5cGUgPSBuZXcgKE5vdE51bGwsIGFsbG9jYXRlQ2VsbDxGdW5jdGlvblBy
b3RvdHlwZT4oKmV4ZWMtPmhlYXAoKSkpIEZ1bmN0aW9uUHJvdG90eXBlKGdsb2JhbE9iamVjdCwg
c3RydWN0dXJlKTsKLSAgICAgICAgICAgIHByb3RvdHlwZS0+ZmluaXNoQ3JlYXRpb24oZXhlYywg
ZXhlYy0+cHJvcGVydHlOYW1lcygpLm51bGxJZGVudGlmaWVyKTsKKyAgICAgICAgICAgIHByb3Rv
dHlwZS0+ZmluaXNoQ3JlYXRpb24oZXhlYywgIiIpOwogICAgICAgICAgICAgcmV0dXJuIHByb3Rv
dHlwZTsKICAgICAgICAgfQogICAgICAgICAKQEAgLTQ2LDcgKzQ2LDcgQEAgbmFtZXNwYWNlIEpT
QyB7CiAgICAgICAgIHN0YXRpYyBjb25zdCBDbGFzc0luZm8gc19pbmZvOwogCiAgICAgcHJvdGVj
dGVkOgotICAgICAgICB2b2lkIGZpbmlzaENyZWF0aW9uKEV4ZWNTdGF0ZSosIGNvbnN0IElkZW50
aWZpZXImIG5hbWUpOworICAgICAgICB2b2lkIGZpbmlzaENyZWF0aW9uKEV4ZWNTdGF0ZSosIGNv
bnN0IFVTdHJpbmcmIG5hbWUpOwogCiAgICAgcHJpdmF0ZToKICAgICAgICAgRnVuY3Rpb25Qcm90
b3R5cGUoSlNHbG9iYWxPYmplY3QqLCBTdHJ1Y3R1cmUqKTsKSW5kZXg6IFNvdXJjZS9KYXZhU2Ny
aXB0Q29yZS9ydW50aW1lL0lkZW50aWZpZXIuY3BwCj09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9KYXZh
U2NyaXB0Q29yZS9ydW50aW1lL0lkZW50aWZpZXIuY3BwCShyZXZpc2lvbiAxMTY2NjcpCisrKyBT
b3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9JZGVudGlmaWVyLmNwcAkod29ya2luZyBjb3B5
KQpAQCAtMTQ1LDU2ICsxNDUsNiBAQCBQYXNzUmVmUHRyPFN0cmluZ0ltcGw+IElkZW50aWZpZXI6
OmFkZDgoCiAgICAgcmV0dXJuIGFkZFJlc3VsdC5pc05ld0VudHJ5ID8gYWRvcHRSZWYoKmFkZFJl
c3VsdC5pdGVyYXRvcikgOiAqYWRkUmVzdWx0Lml0ZXJhdG9yOwogfQogCi10ZW1wbGF0ZSA8dHlw
ZW5hbWUgQ2hhclR5cGU+Ci1BTFdBWVNfSU5MSU5FIHVpbnQzMl90IElkZW50aWZpZXI6OnRvVUlu
dDMyRnJvbUNoYXJhY3RlcnMoY29uc3QgQ2hhclR5cGUqIGNoYXJhY3RlcnMsIHVuc2lnbmVkIGxl
bmd0aCwgYm9vbCYgb2spCi17Ci0gICAgLy8gR2V0IHRoZSBmaXJzdCBjaGFyYWN0ZXIsIHR1cm5p
bmcgaXQgaW50byBhIGRpZ2l0LgotICAgIHVpbnQzMl90IHZhbHVlID0gY2hhcmFjdGVyc1swXSAt
ICcwJzsKLSAgICBpZiAodmFsdWUgPiA5KQotICAgICAgICByZXR1cm4gMDsKLSAgICAKLSAgICAv
LyBDaGVjayBmb3IgbGVhZGluZyB6ZXJvcy4gSWYgdGhlIGZpcnN0IGNoYXJhY2hlciBpcyAwLCB0
aGVuIHRoZQotICAgIC8vIGxlbmd0aCBvZiB0aGUgc3RyaW5nIG11c3QgYmUgb25lIC0gZS5nLiAi
MDQyIiBpcyBub3QgZXF1YWwgdG8gIjQyIi4KLSAgICBpZiAoIXZhbHVlICYmIGxlbmd0aCA+IDEp
Ci0gICAgICAgIHJldHVybiAwOwotICAgIAotICAgIHdoaWxlICgtLWxlbmd0aCkgewotICAgICAg
ICAvLyBNdWx0aXBseSB2YWx1ZSBieSAxMCwgY2hlY2tpbmcgZm9yIG92ZXJmbG93IG91dCBvZiAz
MiBiaXRzLgotICAgICAgICBpZiAodmFsdWUgPiAweEZGRkZGRkZGVSAvIDEwKQotICAgICAgICAg
ICAgcmV0dXJuIDA7Ci0gICAgICAgIHZhbHVlICo9IDEwOwotICAgICAgICAKLSAgICAgICAgLy8g
R2V0IHRoZSBuZXh0IGNoYXJhY3RlciwgdHVybmluZyBpdCBpbnRvIGEgZGlnaXQuCi0gICAgICAg
IHVpbnQzMl90IG5ld1ZhbHVlID0gKigrK2NoYXJhY3RlcnMpIC0gJzAnOwotICAgICAgICBpZiAo
bmV3VmFsdWUgPiA5KQotICAgICAgICAgICAgcmV0dXJuIDA7Ci0gICAgICAgIAotICAgICAgICAv
LyBBZGQgaW4gdGhlIG9sZCB2YWx1ZSwgY2hlY2tpbmcgZm9yIG92ZXJmbG93IG91dCBvZiAzMiBi
aXRzLgotICAgICAgICBuZXdWYWx1ZSArPSB2YWx1ZTsKLSAgICAgICAgaWYgKG5ld1ZhbHVlIDwg
dmFsdWUpCi0gICAgICAgICAgICByZXR1cm4gMDsKLSAgICAgICAgdmFsdWUgPSBuZXdWYWx1ZTsK
LSAgICB9Ci0gICAgCi0gICAgb2sgPSB0cnVlOwotICAgIHJldHVybiB2YWx1ZTsKLX0KLQotdWlu
dDMyX3QgSWRlbnRpZmllcjo6dG9VSW50MzIoY29uc3QgVVN0cmluZyYgc3RyaW5nLCBib29sJiBv
aykKLXsKLSAgICBvayA9IGZhbHNlOwotCi0gICAgdW5zaWduZWQgbGVuZ3RoID0gc3RyaW5nLmxl
bmd0aCgpOwotCi0gICAgLy8gQW4gZW1wdHkgc3RyaW5nIGlzIG5vdCBhIG51bWJlci4KLSAgICBp
ZiAoIWxlbmd0aCkKLSAgICAgICAgcmV0dXJuIDA7Ci0KLSAgICBpZiAoc3RyaW5nLmlzOEJpdCgp
KQotICAgICAgICByZXR1cm4gdG9VSW50MzJGcm9tQ2hhcmFjdGVycyhzdHJpbmcuY2hhcmFjdGVy
czgoKSwgbGVuZ3RoLCBvayk7Ci0gICAgcmV0dXJuIHRvVUludDMyRnJvbUNoYXJhY3RlcnMoc3Ry
aW5nLmNoYXJhY3RlcnMxNigpLCBsZW5ndGgsIG9rKTsKLX0KLQogUGFzc1JlZlB0cjxTdHJpbmdJ
bXBsPiBJZGVudGlmaWVyOjphZGRTbG93Q2FzZShKU0dsb2JhbERhdGEqIGdsb2JhbERhdGEsIFN0
cmluZ0ltcGwqIHIpCiB7CiAgICAgQVNTRVJUKCFyLT5pc0lkZW50aWZpZXIoKSk7CkluZGV4OiBT
b3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9JZGVudGlmaWVyLmgKPT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0g
U291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvSWRlbnRpZmllci5oCShyZXZpc2lvbiAxMTY2
NjcpCisrKyBTb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9JZGVudGlmaWVyLmgJKHdvcmtp
bmcgY29weSkKQEAgLTYzLDEwICs2Myw2IEBAIG5hbWVzcGFjZSBKU0MgewogICAgICAgICBzdGF0
aWMgSWRlbnRpZmllciBmcm9tKEpTR2xvYmFsRGF0YSosIGludCB5KTsKICAgICAgICAgc3RhdGlj
IElkZW50aWZpZXIgZnJvbShKU0dsb2JhbERhdGEqLCBkb3VibGUgeSk7CiAKLSAgICAgICAgSlNf
RVhQT1JUX1BSSVZBVEUgc3RhdGljIHVpbnQzMl90IHRvVUludDMyKGNvbnN0IFVTdHJpbmcmLCBi
b29sJiBvayk7Ci0gICAgICAgIHVpbnQzMl90IHRvVUludDMyKGJvb2wmIG9rKSBjb25zdCB7IHJl
dHVybiB0b1VJbnQzMihtX3N0cmluZywgb2spOyB9Ci0gICAgICAgIHVuc2lnbmVkIHRvQXJyYXlJ
bmRleChib29sJiBvaykgY29uc3Q7Ci0KICAgICAgICAgYm9vbCBpc051bGwoKSBjb25zdCB7IHJl
dHVybiBtX3N0cmluZy5pc051bGwoKTsgfQogICAgICAgICBib29sIGlzRW1wdHkoKSBjb25zdCB7
IHJldHVybiBtX3N0cmluZy5pc0VtcHR5KCk7IH0KICAgICAgICAgCkluZGV4OiBTb3VyY2UvSmF2
YVNjcmlwdENvcmUvcnVudGltZS9JbnRlcm5hbEZ1bmN0aW9uLmNwcAo9PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBT
b3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9JbnRlcm5hbEZ1bmN0aW9uLmNwcAkocmV2aXNp
b24gMTE2NjY3KQorKysgU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvSW50ZXJuYWxGdW5j
dGlvbi5jcHAJKHdvcmtpbmcgY29weSkKQEAgLTM5LDEyICszOSwxMiBAQCBJbnRlcm5hbEZ1bmN0
aW9uOjpJbnRlcm5hbEZ1bmN0aW9uKEpTR2xvCiB7CiB9CiAKLXZvaWQgSW50ZXJuYWxGdW5jdGlv
bjo6ZmluaXNoQ3JlYXRpb24oSlNHbG9iYWxEYXRhJiBnbG9iYWxEYXRhLCBjb25zdCBJZGVudGlm
aWVyJiBuYW1lKQordm9pZCBJbnRlcm5hbEZ1bmN0aW9uOjpmaW5pc2hDcmVhdGlvbihKU0dsb2Jh
bERhdGEmIGdsb2JhbERhdGEsIGNvbnN0IFVTdHJpbmcmIG5hbWUpCiB7CiAgICAgQmFzZTo6Zmlu
aXNoQ3JlYXRpb24oZ2xvYmFsRGF0YSk7CiAgICAgQVNTRVJUKGluaGVyaXRzKCZzX2luZm8pKTsK
ICAgICBBU1NFUlQobWV0aG9kVGFibGUoKS0+Z2V0Q2FsbERhdGEgIT0gSW50ZXJuYWxGdW5jdGlv
bjo6c19pbmZvLm1ldGhvZFRhYmxlLmdldENhbGxEYXRhKTsKLSAgICBwdXREaXJlY3QoZ2xvYmFs
RGF0YSwgZ2xvYmFsRGF0YS5wcm9wZXJ0eU5hbWVzLT5uYW1lLCBqc1N0cmluZygmZ2xvYmFsRGF0
YSwgbmFtZS5pc051bGwoKSA/ICIiIDogbmFtZS51c3RyaW5nKCkpLCBEb250RGVsZXRlIHwgUmVh
ZE9ubHkgfCBEb250RW51bSk7CisgICAgcHV0RGlyZWN0KGdsb2JhbERhdGEsIGdsb2JhbERhdGEu
cHJvcGVydHlOYW1lcy0+bmFtZSwganNTdHJpbmcoJmdsb2JhbERhdGEsIG5hbWUuaXNOdWxsKCkg
PyAiIiA6IG5hbWUpLCBEb250RGVsZXRlIHwgUmVhZE9ubHkgfCBEb250RW51bSk7CiB9CiAKIGNv
bnN0IFVTdHJpbmcmIEludGVybmFsRnVuY3Rpb246Om5hbWUoRXhlY1N0YXRlKiBleGVjKQpJbmRl
eDogU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvSW50ZXJuYWxGdW5jdGlvbi5oCj09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT0KLS0tIFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL0ludGVybmFsRnVuY3Rpb24u
aAkocmV2aXNpb24gMTE2NjY3KQorKysgU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvSW50
ZXJuYWxGdW5jdGlvbi5oCSh3b3JraW5nIGNvcHkpCkBAIC01MSw3ICs1MSw3IEBAIG5hbWVzcGFj
ZSBKU0MgewogCiAgICAgICAgIEpTX0VYUE9SVF9QUklWQVRFIEludGVybmFsRnVuY3Rpb24oSlNH
bG9iYWxPYmplY3QqLCBTdHJ1Y3R1cmUqKTsKIAotICAgICAgICBKU19FWFBPUlRfUFJJVkFURSB2
b2lkIGZpbmlzaENyZWF0aW9uKEpTR2xvYmFsRGF0YSYsIGNvbnN0IElkZW50aWZpZXImIG5hbWUp
OworICAgICAgICBKU19FWFBPUlRfUFJJVkFURSB2b2lkIGZpbmlzaENyZWF0aW9uKEpTR2xvYmFs
RGF0YSYsIGNvbnN0IFVTdHJpbmcmIG5hbWUpOwogCiAgICAgICAgIHN0YXRpYyBDYWxsVHlwZSBn
ZXRDYWxsRGF0YShKU0NlbGwqLCBDYWxsRGF0YSYpOwogICAgIH07CkluZGV4OiBTb3VyY2UvSmF2
YVNjcmlwdENvcmUvcnVudGltZS9KU0FjdGl2YXRpb24uY3BwCj09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJj
ZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL0pTQWN0aXZhdGlvbi5jcHAJKHJldmlzaW9uIDExNjY2
NykKKysrIFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL0pTQWN0aXZhdGlvbi5jcHAJKHdv
cmtpbmcgY29weSkKQEAgLTkwLDcgKzkwLDcgQEAgdm9pZCBKU0FjdGl2YXRpb246OnZpc2l0Q2hp
bGRyZW4oSlNDZWxsKgogICAgIHZpc2l0b3IuYXBwZW5kVmFsdWVzKHJlZ2lzdGVyQXJyYXkgKyBv
ZmZzZXQsIHRoaXNPYmplY3QtPm1fbnVtQ2FwdHVyZWRWYXJzKTsKIH0KIAotaW5saW5lIGJvb2wg
SlNBY3RpdmF0aW9uOjpzeW1ib2xUYWJsZUdldChjb25zdCBJZGVudGlmaWVyJiBwcm9wZXJ0eU5h
bWUsIFByb3BlcnR5U2xvdCYgc2xvdCkKK2lubGluZSBib29sIEpTQWN0aXZhdGlvbjo6c3ltYm9s
VGFibGVHZXQoUHJvcGVydHlOYW1lIHByb3BlcnR5TmFtZSwgUHJvcGVydHlTbG90JiBzbG90KQog
ewogICAgIFN5bWJvbFRhYmxlRW50cnkgZW50cnkgPSBzeW1ib2xUYWJsZSgpLmlubGluZUdldChw
cm9wZXJ0eU5hbWUuaW1wbCgpKTsKICAgICBpZiAoZW50cnkuaXNOdWxsKCkpCkBAIC0xMDIsNyAr
MTAyLDcgQEAgaW5saW5lIGJvb2wgSlNBY3RpdmF0aW9uOjpzeW1ib2xUYWJsZUdldAogICAgIHJl
dHVybiB0cnVlOwogfQogCi1pbmxpbmUgYm9vbCBKU0FjdGl2YXRpb246OnN5bWJvbFRhYmxlUHV0
KEV4ZWNTdGF0ZSogZXhlYywgY29uc3QgSWRlbnRpZmllciYgcHJvcGVydHlOYW1lLCBKU1ZhbHVl
IHZhbHVlLCBib29sIHNob3VsZFRocm93KQoraW5saW5lIGJvb2wgSlNBY3RpdmF0aW9uOjpzeW1i
b2xUYWJsZVB1dChFeGVjU3RhdGUqIGV4ZWMsIFByb3BlcnR5TmFtZSBwcm9wZXJ0eU5hbWUsIEpT
VmFsdWUgdmFsdWUsIGJvb2wgc2hvdWxkVGhyb3cpCiB7CiAgICAgSlNHbG9iYWxEYXRhJiBnbG9i
YWxEYXRhID0gZXhlYy0+Z2xvYmFsRGF0YSgpOwogICAgIEFTU0VSVCghSGVhcDo6aGVhcCh2YWx1
ZSkgfHwgSGVhcDo6aGVhcCh2YWx1ZSkgPT0gSGVhcDo6aGVhcCh0aGlzKSk7CkBAIC0xMzcsNyAr
MTM3LDcgQEAgdm9pZCBKU0FjdGl2YXRpb246OmdldE93blByb3BlcnR5TmFtZXMoSgogICAgIEpT
T2JqZWN0OjpnZXRPd25Qcm9wZXJ0eU5hbWVzKHRoaXNPYmplY3QsIGV4ZWMsIHByb3BlcnR5TmFt
ZXMsIG1vZGUpOwogfQogCi1pbmxpbmUgYm9vbCBKU0FjdGl2YXRpb246OnN5bWJvbFRhYmxlUHV0
V2l0aEF0dHJpYnV0ZXMoSlNHbG9iYWxEYXRhJiBnbG9iYWxEYXRhLCBjb25zdCBJZGVudGlmaWVy
JiBwcm9wZXJ0eU5hbWUsIEpTVmFsdWUgdmFsdWUsIHVuc2lnbmVkIGF0dHJpYnV0ZXMpCitpbmxp
bmUgYm9vbCBKU0FjdGl2YXRpb246OnN5bWJvbFRhYmxlUHV0V2l0aEF0dHJpYnV0ZXMoSlNHbG9i
YWxEYXRhJiBnbG9iYWxEYXRhLCBQcm9wZXJ0eU5hbWUgcHJvcGVydHlOYW1lLCBKU1ZhbHVlIHZh
bHVlLCB1bnNpZ25lZCBhdHRyaWJ1dGVzKQogewogICAgIEFTU0VSVCghSGVhcDo6aGVhcCh2YWx1
ZSkgfHwgSGVhcDo6aGVhcCh2YWx1ZSkgPT0gSGVhcDo6aGVhcCh0aGlzKSk7CiAgICAgCkBAIC0x
NTQsNyArMTU0LDcgQEAgaW5saW5lIGJvb2wgSlNBY3RpdmF0aW9uOjpzeW1ib2xUYWJsZVB1dAog
ICAgIHJldHVybiB0cnVlOwogfQogCi1ib29sIEpTQWN0aXZhdGlvbjo6Z2V0T3duUHJvcGVydHlT
bG90KEpTQ2VsbCogY2VsbCwgRXhlY1N0YXRlKiBleGVjLCBjb25zdCBJZGVudGlmaWVyJiBwcm9w
ZXJ0eU5hbWUsIFByb3BlcnR5U2xvdCYgc2xvdCkKK2Jvb2wgSlNBY3RpdmF0aW9uOjpnZXRPd25Q
cm9wZXJ0eVNsb3QoSlNDZWxsKiBjZWxsLCBFeGVjU3RhdGUqIGV4ZWMsIFByb3BlcnR5TmFtZSBw
cm9wZXJ0eU5hbWUsIFByb3BlcnR5U2xvdCYgc2xvdCkKIHsKICAgICBKU0FjdGl2YXRpb24qIHRo
aXNPYmplY3QgPSBqc0Nhc3Q8SlNBY3RpdmF0aW9uKj4oY2VsbCk7CiAgICAgaWYgKHByb3BlcnR5
TmFtZSA9PSBleGVjLT5wcm9wZXJ0eU5hbWVzKCkuYXJndW1lbnRzKSB7CkBAIC0xNzcsNyArMTc3
LDcgQEAgYm9vbCBKU0FjdGl2YXRpb246OmdldE93blByb3BlcnR5U2xvdChKUwogICAgIHJldHVy
biBmYWxzZTsKIH0KIAotdm9pZCBKU0FjdGl2YXRpb246OnB1dChKU0NlbGwqIGNlbGwsIEV4ZWNT
dGF0ZSogZXhlYywgY29uc3QgSWRlbnRpZmllciYgcHJvcGVydHlOYW1lLCBKU1ZhbHVlIHZhbHVl
LCBQdXRQcm9wZXJ0eVNsb3QmIHNsb3QpCit2b2lkIEpTQWN0aXZhdGlvbjo6cHV0KEpTQ2VsbCog
Y2VsbCwgRXhlY1N0YXRlKiBleGVjLCBQcm9wZXJ0eU5hbWUgcHJvcGVydHlOYW1lLCBKU1ZhbHVl
IHZhbHVlLCBQdXRQcm9wZXJ0eVNsb3QmIHNsb3QpCiB7CiAgICAgSlNBY3RpdmF0aW9uKiB0aGlz
T2JqZWN0ID0ganNDYXN0PEpTQWN0aXZhdGlvbio+KGNlbGwpOwogICAgIEFTU0VSVCghSGVhcDo6
aGVhcCh2YWx1ZSkgfHwgSGVhcDo6aGVhcCh2YWx1ZSkgPT0gSGVhcDo6aGVhcCh0aGlzT2JqZWN0
KSk7CkBAIC0xOTMsNyArMTkzLDcgQEAgdm9pZCBKU0FjdGl2YXRpb246OnB1dChKU0NlbGwqIGNl
bGwsIEV4ZQogfQogCiAvLyBGSVhNRTogTWFrZSB0aGlzIGZ1bmN0aW9uIGhvbm9yIFJlYWRPbmx5
IChjb25zdCkgYW5kIERvbnRFbnVtCi12b2lkIEpTQWN0aXZhdGlvbjo6cHV0RGlyZWN0VmlydHVh
bChKU09iamVjdCogb2JqZWN0LCBFeGVjU3RhdGUqIGV4ZWMsIGNvbnN0IElkZW50aWZpZXImIHBy
b3BlcnR5TmFtZSwgSlNWYWx1ZSB2YWx1ZSwgdW5zaWduZWQgYXR0cmlidXRlcykKK3ZvaWQgSlNB
Y3RpdmF0aW9uOjpwdXREaXJlY3RWaXJ0dWFsKEpTT2JqZWN0KiBvYmplY3QsIEV4ZWNTdGF0ZSog
ZXhlYywgUHJvcGVydHlOYW1lIHByb3BlcnR5TmFtZSwgSlNWYWx1ZSB2YWx1ZSwgdW5zaWduZWQg
YXR0cmlidXRlcykKIHsKICAgICBKU0FjdGl2YXRpb24qIHRoaXNPYmplY3QgPSBqc0Nhc3Q8SlNB
Y3RpdmF0aW9uKj4ob2JqZWN0KTsKICAgICBBU1NFUlQoIUhlYXA6OmhlYXAodmFsdWUpIHx8IEhl
YXA6OmhlYXAodmFsdWUpID09IEhlYXA6OmhlYXAodGhpc09iamVjdCkpOwpAQCAtMjA4LDcgKzIw
OCw3IEBAIHZvaWQgSlNBY3RpdmF0aW9uOjpwdXREaXJlY3RWaXJ0dWFsKEpTT2IKICAgICBKU09i
amVjdDo6cHV0RGlyZWN0VmlydHVhbCh0aGlzT2JqZWN0LCBleGVjLCBwcm9wZXJ0eU5hbWUsIHZh
bHVlLCBhdHRyaWJ1dGVzKTsKIH0KIAotYm9vbCBKU0FjdGl2YXRpb246OmRlbGV0ZVByb3BlcnR5
KEpTQ2VsbCogY2VsbCwgRXhlY1N0YXRlKiBleGVjLCBjb25zdCBJZGVudGlmaWVyJiBwcm9wZXJ0
eU5hbWUpCitib29sIEpTQWN0aXZhdGlvbjo6ZGVsZXRlUHJvcGVydHkoSlNDZWxsKiBjZWxsLCBF
eGVjU3RhdGUqIGV4ZWMsIFByb3BlcnR5TmFtZSBwcm9wZXJ0eU5hbWUpCiB7CiAgICAgaWYgKHBy
b3BlcnR5TmFtZSA9PSBleGVjLT5wcm9wZXJ0eU5hbWVzKCkuYXJndW1lbnRzKQogICAgICAgICBy
ZXR1cm4gZmFsc2U7CkBAIC0yMjEsNyArMjIxLDcgQEAgSlNPYmplY3QqIEpTQWN0aXZhdGlvbjo6
dG9UaGlzT2JqZWN0KEpTQwogICAgIHJldHVybiBleGVjLT5nbG9iYWxUaGlzVmFsdWUoKTsKIH0K
IAotSlNWYWx1ZSBKU0FjdGl2YXRpb246OmFyZ3VtZW50c0dldHRlcihFeGVjU3RhdGUqLCBKU1Zh
bHVlIHNsb3RCYXNlLCBjb25zdCBJZGVudGlmaWVyJikKK0pTVmFsdWUgSlNBY3RpdmF0aW9uOjph
cmd1bWVudHNHZXR0ZXIoRXhlY1N0YXRlKiwgSlNWYWx1ZSBzbG90QmFzZSwgUHJvcGVydHlOYW1l
KQogewogICAgIEpTQWN0aXZhdGlvbiogYWN0aXZhdGlvbiA9IGFzQWN0aXZhdGlvbihzbG90QmFz
ZSk7CiAgICAgQ2FsbEZyYW1lKiBjYWxsRnJhbWUgPSBDYWxsRnJhbWU6OmNyZWF0ZShyZWludGVy
cHJldF9jYXN0PFJlZ2lzdGVyKj4oYWN0aXZhdGlvbi0+bV9yZWdpc3RlcnMpKTsKSW5kZXg6IFNv
dXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL0pTQWN0aXZhdGlvbi5oCj09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0t
IFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL0pTQWN0aXZhdGlvbi5oCShyZXZpc2lvbiAx
MTY2NjcpCisrKyBTb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9KU0FjdGl2YXRpb24uaAko
d29ya2luZyBjb3B5KQpAQCAtNTksMTMgKzU5LDEzIEBAIG5hbWVzcGFjZSBKU0MgewogCiAgICAg
ICAgIGJvb2wgaXNEeW5hbWljU2NvcGUoYm9vbCYgcmVxdWlyZXNEeW5hbWljQ2hlY2tzKSBjb25z
dDsKIAotICAgICAgICBzdGF0aWMgYm9vbCBnZXRPd25Qcm9wZXJ0eVNsb3QoSlNDZWxsKiwgRXhl
Y1N0YXRlKiwgY29uc3QgSWRlbnRpZmllciYsIFByb3BlcnR5U2xvdCYpOworICAgICAgICBzdGF0
aWMgYm9vbCBnZXRPd25Qcm9wZXJ0eVNsb3QoSlNDZWxsKiwgRXhlY1N0YXRlKiwgUHJvcGVydHlO
YW1lLCBQcm9wZXJ0eVNsb3QmKTsKICAgICAgICAgc3RhdGljIHZvaWQgZ2V0T3duUHJvcGVydHlO
YW1lcyhKU09iamVjdCosIEV4ZWNTdGF0ZSosIFByb3BlcnR5TmFtZUFycmF5JiwgRW51bWVyYXRp
b25Nb2RlKTsKIAotICAgICAgICBzdGF0aWMgdm9pZCBwdXQoSlNDZWxsKiwgRXhlY1N0YXRlKiwg
Y29uc3QgSWRlbnRpZmllciYsIEpTVmFsdWUsIFB1dFByb3BlcnR5U2xvdCYpOworICAgICAgICBz
dGF0aWMgdm9pZCBwdXQoSlNDZWxsKiwgRXhlY1N0YXRlKiwgUHJvcGVydHlOYW1lLCBKU1ZhbHVl
LCBQdXRQcm9wZXJ0eVNsb3QmKTsKIAotICAgICAgICBzdGF0aWMgdm9pZCBwdXREaXJlY3RWaXJ0
dWFsKEpTT2JqZWN0KiwgRXhlY1N0YXRlKiwgY29uc3QgSWRlbnRpZmllciYsIEpTVmFsdWUsIHVu
c2lnbmVkIGF0dHJpYnV0ZXMpOwotICAgICAgICBzdGF0aWMgYm9vbCBkZWxldGVQcm9wZXJ0eShK
U0NlbGwqLCBFeGVjU3RhdGUqLCBjb25zdCBJZGVudGlmaWVyJiBwcm9wZXJ0eU5hbWUpOworICAg
ICAgICBzdGF0aWMgdm9pZCBwdXREaXJlY3RWaXJ0dWFsKEpTT2JqZWN0KiwgRXhlY1N0YXRlKiwg
UHJvcGVydHlOYW1lLCBKU1ZhbHVlLCB1bnNpZ25lZCBhdHRyaWJ1dGVzKTsKKyAgICAgICAgc3Rh
dGljIGJvb2wgZGVsZXRlUHJvcGVydHkoSlNDZWxsKiwgRXhlY1N0YXRlKiwgUHJvcGVydHlOYW1l
IHByb3BlcnR5TmFtZSk7CiAKICAgICAgICAgc3RhdGljIEpTT2JqZWN0KiB0b1RoaXNPYmplY3Qo
SlNDZWxsKiwgRXhlY1N0YXRlKik7CiAKQEAgLTgyLDEzICs4MiwxMyBAQCBuYW1lc3BhY2UgSlND
IHsKICAgICAgICAgc3RhdGljIGNvbnN0IHVuc2lnbmVkIFN0cnVjdHVyZUZsYWdzID0gSXNFbnZp
cm9ubWVudFJlY29yZCB8IE92ZXJyaWRlc0dldE93blByb3BlcnR5U2xvdCB8IE92ZXJyaWRlc1Zp
c2l0Q2hpbGRyZW4gfCBPdmVycmlkZXNHZXRQcm9wZXJ0eU5hbWVzIHwgSlNWYXJpYWJsZU9iamVj
dDo6U3RydWN0dXJlRmxhZ3M7CiAKICAgICBwcml2YXRlOgotICAgICAgICBib29sIHN5bWJvbFRh
YmxlR2V0KGNvbnN0IElkZW50aWZpZXImLCBQcm9wZXJ0eVNsb3QmKTsKLSAgICAgICAgYm9vbCBz
eW1ib2xUYWJsZUdldChjb25zdCBJZGVudGlmaWVyJiwgUHJvcGVydHlEZXNjcmlwdG9yJik7Ci0g
ICAgICAgIGJvb2wgc3ltYm9sVGFibGVHZXQoY29uc3QgSWRlbnRpZmllciYsIFByb3BlcnR5U2xv
dCYsIGJvb2wmIHNsb3RJc1dyaXRlYWJsZSk7Ci0gICAgICAgIGJvb2wgc3ltYm9sVGFibGVQdXQo
RXhlY1N0YXRlKiwgY29uc3QgSWRlbnRpZmllciYsIEpTVmFsdWUsIGJvb2wgc2hvdWxkVGhyb3cp
OwotICAgICAgICBib29sIHN5bWJvbFRhYmxlUHV0V2l0aEF0dHJpYnV0ZXMoSlNHbG9iYWxEYXRh
JiwgY29uc3QgSWRlbnRpZmllciYsIEpTVmFsdWUsIHVuc2lnbmVkIGF0dHJpYnV0ZXMpOworICAg
ICAgICBib29sIHN5bWJvbFRhYmxlR2V0KFByb3BlcnR5TmFtZSwgUHJvcGVydHlTbG90Jik7Cisg
ICAgICAgIGJvb2wgc3ltYm9sVGFibGVHZXQoUHJvcGVydHlOYW1lLCBQcm9wZXJ0eURlc2NyaXB0
b3ImKTsKKyAgICAgICAgYm9vbCBzeW1ib2xUYWJsZUdldChQcm9wZXJ0eU5hbWUsIFByb3BlcnR5
U2xvdCYsIGJvb2wmIHNsb3RJc1dyaXRlYWJsZSk7CisgICAgICAgIGJvb2wgc3ltYm9sVGFibGVQ
dXQoRXhlY1N0YXRlKiwgUHJvcGVydHlOYW1lLCBKU1ZhbHVlLCBib29sIHNob3VsZFRocm93KTsK
KyAgICAgICAgYm9vbCBzeW1ib2xUYWJsZVB1dFdpdGhBdHRyaWJ1dGVzKEpTR2xvYmFsRGF0YSYs
IFByb3BlcnR5TmFtZSwgSlNWYWx1ZSwgdW5zaWduZWQgYXR0cmlidXRlcyk7CiAKLSAgICAgICAg
c3RhdGljIEpTVmFsdWUgYXJndW1lbnRzR2V0dGVyKEV4ZWNTdGF0ZSosIEpTVmFsdWUsIGNvbnN0
IElkZW50aWZpZXImKTsKKyAgICAgICAgc3RhdGljIEpTVmFsdWUgYXJndW1lbnRzR2V0dGVyKEV4
ZWNTdGF0ZSosIEpTVmFsdWUsIFByb3BlcnR5TmFtZSk7CiAgICAgICAgIE5FVkVSX0lOTElORSBQ
cm9wZXJ0eVNsb3Q6OkdldFZhbHVlRnVuYyBnZXRBcmd1bWVudHNHZXR0ZXIoKTsKIAogICAgICAg
ICBpbnQgbV9udW1DYXB0dXJlZEFyZ3M7CkluZGV4OiBTb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVu
dGltZS9KU0FycmF5LmNwcAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVu
dGltZS9KU0FycmF5LmNwcAkocmV2aXNpb24gMTE2NjY3KQorKysgU291cmNlL0phdmFTY3JpcHRD
b3JlL3J1bnRpbWUvSlNBcnJheS5jcHAJKHdvcmtpbmcgY29weSkKQEAgLTUzNSw3ICs1MzUsNyBA
QCB2b2lkIEpTQXJyYXk6OnNldExlbmd0aFdyaXRhYmxlKEV4ZWNTdGF0CiB9CiAKIC8vIERlZmlu
ZWQgaW4gRVM1LjEgMTUuNC41LjEKLWJvb2wgSlNBcnJheTo6ZGVmaW5lT3duUHJvcGVydHkoSlNP
YmplY3QqIG9iamVjdCwgRXhlY1N0YXRlKiBleGVjLCBjb25zdCBJZGVudGlmaWVyJiBwcm9wZXJ0
eU5hbWUsIFByb3BlcnR5RGVzY3JpcHRvciYgZGVzY3JpcHRvciwgYm9vbCB0aHJvd0V4Y2VwdGlv
bikKK2Jvb2wgSlNBcnJheTo6ZGVmaW5lT3duUHJvcGVydHkoSlNPYmplY3QqIG9iamVjdCwgRXhl
Y1N0YXRlKiBleGVjLCBQcm9wZXJ0eU5hbWUgcHJvcGVydHlOYW1lLCBQcm9wZXJ0eURlc2NyaXB0
b3ImIGRlc2NyaXB0b3IsIGJvb2wgdGhyb3dFeGNlcHRpb24pCiB7CiAgICAgSlNBcnJheSogYXJy
YXkgPSBqc0Nhc3Q8SlNBcnJheSo+KG9iamVjdCk7CiAKQEAgLTYxOCwxMCArNjE4LDkgQEAgYm9v
bCBKU0FycmF5OjpkZWZpbmVPd25Qcm9wZXJ0eShKU09iamVjdAogICAgIH0KIAogICAgIC8vIDQu
IEVsc2UgaWYgUCBpcyBhbiBhcnJheSBpbmRleCAoMTUuNCksIHRoZW4KLSAgICBib29sIGlzQXJy
YXlJbmRleDsKICAgICAvLyBhLiBMZXQgaW5kZXggYmUgVG9VaW50MzIoUCkuCi0gICAgdW5zaWdu
ZWQgaW5kZXggPSBwcm9wZXJ0eU5hbWUudG9BcnJheUluZGV4KGlzQXJyYXlJbmRleCk7Ci0gICAg
aWYgKGlzQXJyYXlJbmRleCkgeworICAgIHVuc2lnbmVkIGluZGV4ID0gcHJvcGVydHlOYW1lLmFz
SW5kZXgoKTsKKyAgICBpZiAoaW5kZXggIT0gUHJvcGVydHlOYW1lOjpOb3RBbkluZGV4KSB7CiAg
ICAgICAgIC8vIGIuIFJlamVjdCBpZiBpbmRleCA+PSBvbGRMZW4gYW5kIG9sZExlbkRlc2MuW1tX
cml0YWJsZV1dIGlzIGZhbHNlLgogICAgICAgICBpZiAoaW5kZXggPj0gYXJyYXktPmxlbmd0aCgp
ICYmICFhcnJheS0+aXNMZW5ndGhXcml0YWJsZSgpKQogICAgICAgICAgICAgcmV0dXJuIHJlamVj
dChleGVjLCB0aHJvd0V4Y2VwdGlvbiwgIkF0dGVtcHRpbmcgdG8gZGVmaW5lIG51bWVyaWMgcHJv
cGVydHkgb24gYXJyYXkgd2l0aCBub24td3JpdGFibGUgbGVuZ3RoIHByb3BlcnR5LiIpOwpAQCAt
NjY1LDcgKzY2NCw3IEBAIGJvb2wgSlNBcnJheTo6Z2V0T3duUHJvcGVydHlTbG90QnlJbmRleCgK
ICAgICByZXR1cm4gSlNPYmplY3Q6OmdldE93blByb3BlcnR5U2xvdCh0aGlzT2JqZWN0LCBleGVj
LCBJZGVudGlmaWVyOjpmcm9tKGV4ZWMsIGkpLCBzbG90KTsKIH0KIAotYm9vbCBKU0FycmF5Ojpn
ZXRPd25Qcm9wZXJ0eVNsb3QoSlNDZWxsKiBjZWxsLCBFeGVjU3RhdGUqIGV4ZWMsIGNvbnN0IElk
ZW50aWZpZXImIHByb3BlcnR5TmFtZSwgUHJvcGVydHlTbG90JiBzbG90KQorYm9vbCBKU0FycmF5
OjpnZXRPd25Qcm9wZXJ0eVNsb3QoSlNDZWxsKiBjZWxsLCBFeGVjU3RhdGUqIGV4ZWMsIFByb3Bl
cnR5TmFtZSBwcm9wZXJ0eU5hbWUsIFByb3BlcnR5U2xvdCYgc2xvdCkKIHsKICAgICBKU0FycmF5
KiB0aGlzT2JqZWN0ID0ganNDYXN0PEpTQXJyYXkqPihjZWxsKTsKICAgICBpZiAocHJvcGVydHlO
YW1lID09IGV4ZWMtPnByb3BlcnR5TmFtZXMoKS5sZW5ndGgpIHsKQEAgLTY3MywxNSArNjcyLDE0
IEBAIGJvb2wgSlNBcnJheTo6Z2V0T3duUHJvcGVydHlTbG90KEpTQ2VsbCoKICAgICAgICAgcmV0
dXJuIHRydWU7CiAgICAgfQogCi0gICAgYm9vbCBpc0FycmF5SW5kZXg7Ci0gICAgdW5zaWduZWQg
aSA9IHByb3BlcnR5TmFtZS50b0FycmF5SW5kZXgoaXNBcnJheUluZGV4KTsKLSAgICBpZiAoaXNB
cnJheUluZGV4KQorICAgIHVuc2lnbmVkIGkgPSBwcm9wZXJ0eU5hbWUuYXNJbmRleCgpOworICAg
IGlmIChpICE9IFByb3BlcnR5TmFtZTo6Tm90QW5JbmRleCkKICAgICAgICAgcmV0dXJuIEpTQXJy
YXk6OmdldE93blByb3BlcnR5U2xvdEJ5SW5kZXgodGhpc09iamVjdCwgZXhlYywgaSwgc2xvdCk7
CiAKICAgICByZXR1cm4gSlNPYmplY3Q6OmdldE93blByb3BlcnR5U2xvdCh0aGlzT2JqZWN0LCBl
eGVjLCBwcm9wZXJ0eU5hbWUsIHNsb3QpOwogfQogCi1ib29sIEpTQXJyYXk6OmdldE93blByb3Bl
cnR5RGVzY3JpcHRvcihKU09iamVjdCogb2JqZWN0LCBFeGVjU3RhdGUqIGV4ZWMsIGNvbnN0IElk
ZW50aWZpZXImIHByb3BlcnR5TmFtZSwgUHJvcGVydHlEZXNjcmlwdG9yJiBkZXNjcmlwdG9yKQor
Ym9vbCBKU0FycmF5OjpnZXRPd25Qcm9wZXJ0eURlc2NyaXB0b3IoSlNPYmplY3QqIG9iamVjdCwg
RXhlY1N0YXRlKiBleGVjLCBQcm9wZXJ0eU5hbWUgcHJvcGVydHlOYW1lLCBQcm9wZXJ0eURlc2Ny
aXB0b3ImIGRlc2NyaXB0b3IpCiB7CiAgICAgSlNBcnJheSogdGhpc09iamVjdCA9IGpzQ2FzdDxK
U0FycmF5Kj4ob2JqZWN0KTsKICAgICBpZiAocHJvcGVydHlOYW1lID09IGV4ZWMtPnByb3BlcnR5
TmFtZXMoKS5sZW5ndGgpIHsKQEAgLTY5MSw5ICs2ODksOCBAQCBib29sIEpTQXJyYXk6OmdldE93
blByb3BlcnR5RGVzY3JpcHRvcihKCiAKICAgICBBcnJheVN0b3JhZ2UqIHN0b3JhZ2UgPSB0aGlz
T2JqZWN0LT5tX3N0b3JhZ2U7CiAgICAgCi0gICAgYm9vbCBpc0FycmF5SW5kZXg7Ci0gICAgdW5z
aWduZWQgaSA9IHByb3BlcnR5TmFtZS50b0FycmF5SW5kZXgoaXNBcnJheUluZGV4KTsKLSAgICBp
ZiAoaXNBcnJheUluZGV4KSB7CisgICAgdW5zaWduZWQgaSA9IHByb3BlcnR5TmFtZS5hc0luZGV4
KCk7CisgICAgaWYgKGkgIT0gUHJvcGVydHlOYW1lOjpOb3RBbkluZGV4KSB7CiAgICAgICAgIGlm
IChpID49IHN0b3JhZ2UtPm1fbGVuZ3RoKQogICAgICAgICAgICAgcmV0dXJuIGZhbHNlOwogICAg
ICAgICBpZiAoaSA8IHRoaXNPYmplY3QtPm1fdmVjdG9yTGVuZ3RoKSB7CkBAIC03MTQsMTIgKzcx
MSwxMSBAQCBib29sIEpTQXJyYXk6OmdldE93blByb3BlcnR5RGVzY3JpcHRvcihKCiB9CiAKIC8v
IEVDTUEgMTUuNC41LjEKLXZvaWQgSlNBcnJheTo6cHV0KEpTQ2VsbCogY2VsbCwgRXhlY1N0YXRl
KiBleGVjLCBjb25zdCBJZGVudGlmaWVyJiBwcm9wZXJ0eU5hbWUsIEpTVmFsdWUgdmFsdWUsIFB1
dFByb3BlcnR5U2xvdCYgc2xvdCkKK3ZvaWQgSlNBcnJheTo6cHV0KEpTQ2VsbCogY2VsbCwgRXhl
Y1N0YXRlKiBleGVjLCBQcm9wZXJ0eU5hbWUgcHJvcGVydHlOYW1lLCBKU1ZhbHVlIHZhbHVlLCBQ
dXRQcm9wZXJ0eVNsb3QmIHNsb3QpCiB7CiAgICAgSlNBcnJheSogdGhpc09iamVjdCA9IGpzQ2Fz
dDxKU0FycmF5Kj4oY2VsbCk7Ci0gICAgYm9vbCBpc0FycmF5SW5kZXg7Ci0gICAgdW5zaWduZWQg
aSA9IHByb3BlcnR5TmFtZS50b0FycmF5SW5kZXgoaXNBcnJheUluZGV4KTsKLSAgICBpZiAoaXNB
cnJheUluZGV4KSB7CisgICAgdW5zaWduZWQgaSA9IHByb3BlcnR5TmFtZS5hc0luZGV4KCk7Cisg
ICAgaWYgKGkgIT0gUHJvcGVydHlOYW1lOjpOb3RBbkluZGV4KSB7CiAgICAgICAgIHB1dEJ5SW5k
ZXgodGhpc09iamVjdCwgZXhlYywgaSwgdmFsdWUsIHNsb3QuaXNTdHJpY3RNb2RlKCkpOwogICAg
ICAgICByZXR1cm47CiAgICAgfQpAQCAtOTE5LDEyICs5MTUsMTEgQEAgYm9vbCBKU0FycmF5Ojpw
dXREaXJlY3RJbmRleEJleW9uZFZlY3RvcgogICAgIHJldHVybiB0cnVlOwogfQogCi1ib29sIEpT
QXJyYXk6OmRlbGV0ZVByb3BlcnR5KEpTQ2VsbCogY2VsbCwgRXhlY1N0YXRlKiBleGVjLCBjb25z
dCBJZGVudGlmaWVyJiBwcm9wZXJ0eU5hbWUpCitib29sIEpTQXJyYXk6OmRlbGV0ZVByb3BlcnR5
KEpTQ2VsbCogY2VsbCwgRXhlY1N0YXRlKiBleGVjLCBQcm9wZXJ0eU5hbWUgcHJvcGVydHlOYW1l
KQogewogICAgIEpTQXJyYXkqIHRoaXNPYmplY3QgPSBqc0Nhc3Q8SlNBcnJheSo+KGNlbGwpOwot
ICAgIGJvb2wgaXNBcnJheUluZGV4OwotICAgIHVuc2lnbmVkIGkgPSBwcm9wZXJ0eU5hbWUudG9B
cnJheUluZGV4KGlzQXJyYXlJbmRleCk7Ci0gICAgaWYgKGlzQXJyYXlJbmRleCkKKyAgICB1bnNp
Z25lZCBpID0gcHJvcGVydHlOYW1lLmFzSW5kZXgoKTsKKyAgICBpZiAoaSAhPSBQcm9wZXJ0eU5h
bWU6Ok5vdEFuSW5kZXgpCiAgICAgICAgIHJldHVybiB0aGlzT2JqZWN0LT5tZXRob2RUYWJsZSgp
LT5kZWxldGVQcm9wZXJ0eUJ5SW5kZXgodGhpc09iamVjdCwgZXhlYywgaSk7CiAKICAgICBpZiAo
cHJvcGVydHlOYW1lID09IGV4ZWMtPnByb3BlcnR5TmFtZXMoKS5sZW5ndGgpCkluZGV4OiBTb3Vy
Y2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9KU0FycmF5LmgKPT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNl
L0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvSlNBcnJheS5oCShyZXZpc2lvbiAxMTY2NjcpCisrKyBT
b3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9KU0FycmF5LmgJKHdvcmtpbmcgY29weSkKQEAg
LTE2NCwxMSArMTY0LDExIEBAIG5hbWVzcGFjZSBKU0MgewogICAgICAgICAvLyAgIC0gY2FsbGVk
ICdjb21wbGV0ZUluaXRpYWxpemF0aW9uJyBhZnRlciBhbGwgcHJvcGVydGllcyBoYXZlIGJlZW4g
aW5pdGlhbGl6ZWQuCiAgICAgICAgIHN0YXRpYyBKU0FycmF5KiB0cnlDcmVhdGVVbmluaXRpYWxp
emVkKEpTR2xvYmFsRGF0YSYsIFN0cnVjdHVyZSosIHVuc2lnbmVkIGluaXRpYWxMZW5ndGgpOwog
Ci0gICAgICAgIEpTX0VYUE9SVF9QUklWQVRFIHN0YXRpYyBib29sIGRlZmluZU93blByb3BlcnR5
KEpTT2JqZWN0KiwgRXhlY1N0YXRlKiwgY29uc3QgSWRlbnRpZmllciYsIFByb3BlcnR5RGVzY3Jp
cHRvciYsIGJvb2wgdGhyb3dFeGNlcHRpb24pOworICAgICAgICBKU19FWFBPUlRfUFJJVkFURSBz
dGF0aWMgYm9vbCBkZWZpbmVPd25Qcm9wZXJ0eShKU09iamVjdCosIEV4ZWNTdGF0ZSosIFByb3Bl
cnR5TmFtZSwgUHJvcGVydHlEZXNjcmlwdG9yJiwgYm9vbCB0aHJvd0V4Y2VwdGlvbik7CiAKLSAg
ICAgICAgc3RhdGljIGJvb2wgZ2V0T3duUHJvcGVydHlTbG90KEpTQ2VsbCosIEV4ZWNTdGF0ZSos
IGNvbnN0IElkZW50aWZpZXImLCBQcm9wZXJ0eVNsb3QmKTsKKyAgICAgICAgc3RhdGljIGJvb2wg
Z2V0T3duUHJvcGVydHlTbG90KEpTQ2VsbCosIEV4ZWNTdGF0ZSosIFByb3BlcnR5TmFtZSwgUHJv
cGVydHlTbG90Jik7CiAgICAgICAgIEpTX0VYUE9SVF9QUklWQVRFIHN0YXRpYyBib29sIGdldE93
blByb3BlcnR5U2xvdEJ5SW5kZXgoSlNDZWxsKiwgRXhlY1N0YXRlKiwgdW5zaWduZWQgcHJvcGVy
dHlOYW1lLCBQcm9wZXJ0eVNsb3QmKTsKLSAgICAgICAgc3RhdGljIGJvb2wgZ2V0T3duUHJvcGVy
dHlEZXNjcmlwdG9yKEpTT2JqZWN0KiwgRXhlY1N0YXRlKiwgY29uc3QgSWRlbnRpZmllciYsIFBy
b3BlcnR5RGVzY3JpcHRvciYpOworICAgICAgICBzdGF0aWMgYm9vbCBnZXRPd25Qcm9wZXJ0eURl
c2NyaXB0b3IoSlNPYmplY3QqLCBFeGVjU3RhdGUqLCBQcm9wZXJ0eU5hbWUsIFByb3BlcnR5RGVz
Y3JpcHRvciYpOwogICAgICAgICBzdGF0aWMgdm9pZCBwdXRCeUluZGV4KEpTQ2VsbCosIEV4ZWNT
dGF0ZSosIHVuc2lnbmVkIHByb3BlcnR5TmFtZSwgSlNWYWx1ZSwgYm9vbCBzaG91bGRUaHJvdyk7
CiAgICAgICAgIC8vIFRoaXMgaXMgc2ltaWxhciB0byB0aGUgSlNPYmplY3Q6OnB1dERpcmVjdCog
bWV0aG9kczoKICAgICAgICAgLy8gIC0gdGhlIHByb3RvdHlwZSBjaGFpbiBpcyBub3QgY29uc3Vs
dGVkCkBAIC0yODEsOSArMjgxLDkgQEAgbmFtZXNwYWNlIEpTQyB7CiAKICAgICBwcm90ZWN0ZWQ6
CiAgICAgICAgIHN0YXRpYyBjb25zdCB1bnNpZ25lZCBTdHJ1Y3R1cmVGbGFncyA9IE92ZXJyaWRl
c0dldE93blByb3BlcnR5U2xvdCB8IE92ZXJyaWRlc1Zpc2l0Q2hpbGRyZW4gfCBPdmVycmlkZXNH
ZXRQcm9wZXJ0eU5hbWVzIHwgSlNPYmplY3Q6OlN0cnVjdHVyZUZsYWdzOwotICAgICAgICBzdGF0
aWMgdm9pZCBwdXQoSlNDZWxsKiwgRXhlY1N0YXRlKiwgY29uc3QgSWRlbnRpZmllciYgcHJvcGVy
dHlOYW1lLCBKU1ZhbHVlLCBQdXRQcm9wZXJ0eVNsb3QmKTsKKyAgICAgICAgc3RhdGljIHZvaWQg
cHV0KEpTQ2VsbCosIEV4ZWNTdGF0ZSosIFByb3BlcnR5TmFtZSBwcm9wZXJ0eU5hbWUsIEpTVmFs
dWUsIFB1dFByb3BlcnR5U2xvdCYpOwogCi0gICAgICAgIHN0YXRpYyBib29sIGRlbGV0ZVByb3Bl
cnR5KEpTQ2VsbCosIEV4ZWNTdGF0ZSosIGNvbnN0IElkZW50aWZpZXImIHByb3BlcnR5TmFtZSk7
CisgICAgICAgIHN0YXRpYyBib29sIGRlbGV0ZVByb3BlcnR5KEpTQ2VsbCosIEV4ZWNTdGF0ZSos
IFByb3BlcnR5TmFtZSBwcm9wZXJ0eU5hbWUpOwogICAgICAgICBzdGF0aWMgYm9vbCBkZWxldGVQ
cm9wZXJ0eUJ5SW5kZXgoSlNDZWxsKiwgRXhlY1N0YXRlKiwgdW5zaWduZWQgcHJvcGVydHlOYW1l
KTsKICAgICAgICAgc3RhdGljIHZvaWQgZ2V0T3duUHJvcGVydHlOYW1lcyhKU09iamVjdCosIEV4
ZWNTdGF0ZSosIFByb3BlcnR5TmFtZUFycmF5JiwgRW51bWVyYXRpb25Nb2RlKTsKIApAQCAtMzU3
LDE2ICszNTcsNiBAQCBuYW1lc3BhY2UgSlNDIHsKICAgICBpbmxpbmUgYm9vbCBpc0pTQXJyYXko
SlNDZWxsKiBjZWxsKSB7IHJldHVybiBjZWxsLT5jbGFzc0luZm8oKSA9PSAmSlNBcnJheTo6c19p
bmZvOyB9CiAgICAgaW5saW5lIGJvb2wgaXNKU0FycmF5KEpTVmFsdWUgdikgeyByZXR1cm4gdi5p
c0NlbGwoKSAmJiBpc0pTQXJyYXkodi5hc0NlbGwoKSk7IH0KIAotICAgIC8vIFJ1bGUgZnJvbSBF
Q01BIDE1LjIgYWJvdXQgd2hhdCBhbiBhcnJheSBpbmRleCBpcy4KLSAgICAvLyBNdXN0IGV4YWN0
bHkgbWF0Y2ggc3RyaW5nIGZvcm0gb2YgYW4gdW5zaWduZWQgaW50ZWdlciwgYW5kIGJlIGxlc3Mg
dGhhbiAyXjMyIC0gMS4KLSAgICBpbmxpbmUgdW5zaWduZWQgSWRlbnRpZmllcjo6dG9BcnJheUlu
ZGV4KGJvb2wmIG9rKSBjb25zdAotICAgIHsKLSAgICAgICAgdW5zaWduZWQgaSA9IHRvVUludDMy
KG9rKTsKLSAgICAgICAgaWYgKG9rICYmIGkgPj0gMHhGRkZGRkZGRlUpCi0gICAgICAgICAgICBv
ayA9IGZhbHNlOwotICAgICAgICByZXR1cm4gaTsKLSAgICB9Ci0KIC8vIFRoZSBkZWZpbml0aW9u
IG9mIE1BWF9TVE9SQUdFX1ZFQ1RPUl9MRU5HVEggaXMgZGVwZW5kYW50IG9uIHRoZSBkZWZpbml0
aW9uIHN0b3JhZ2VTaXplCiAvLyBmdW5jdGlvbiBiZWxvdyAtIHRoZSBNQVhfU1RPUkFHRV9WRUNU
T1JfTEVOR1RIIGxpbWl0IGlzIGRlZmluZWQgc3VjaCB0aGF0IHRoZSBzdG9yYWdlCiAvLyBzaXpl
IGNhbGN1bGF0aW9uIGNhbm5vdCBvdmVyZmxvdy4gIChzaXplb2YoQXJyYXlTdG9yYWdlKSAtIHNp
emVvZihXcml0ZUJhcnJpZXI8VW5rbm93bj4pKSArCkluZGV4OiBTb3VyY2UvSmF2YVNjcmlwdENv
cmUvcnVudGltZS9KU0JvdW5kRnVuY3Rpb24uY3BwCj09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9KYXZh
U2NyaXB0Q29yZS9ydW50aW1lL0pTQm91bmRGdW5jdGlvbi5jcHAJKHJldmlzaW9uIDExNjY2NykK
KysrIFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL0pTQm91bmRGdW5jdGlvbi5jcHAJKHdv
cmtpbmcgY29weSkKQEAgLTc2LDcgKzc2LDcgQEAgRW5jb2RlZEpTVmFsdWUgSlNDX0hPU1RfQ0FM
TCBib3VuZEZ1bmN0aQogICAgIHJldHVybiBKU1ZhbHVlOjplbmNvZGUoY29uc3RydWN0KGV4ZWMs
IHRhcmdldEZ1bmN0aW9uLCBjb25zdHJ1Y3RUeXBlLCBjb25zdHJ1Y3REYXRhLCBhcmdzKSk7CiB9
CiAKLUpTQm91bmRGdW5jdGlvbiogSlNCb3VuZEZ1bmN0aW9uOjpjcmVhdGUoRXhlY1N0YXRlKiBl
eGVjLCBKU0dsb2JhbE9iamVjdCogZ2xvYmFsT2JqZWN0LCBKU09iamVjdCogdGFyZ2V0RnVuY3Rp
b24sIEpTVmFsdWUgYm91bmRUaGlzLCBKU1ZhbHVlIGJvdW5kQXJncywgaW50IGxlbmd0aCwgY29u
c3QgSWRlbnRpZmllciYgbmFtZSkKK0pTQm91bmRGdW5jdGlvbiogSlNCb3VuZEZ1bmN0aW9uOjpj
cmVhdGUoRXhlY1N0YXRlKiBleGVjLCBKU0dsb2JhbE9iamVjdCogZ2xvYmFsT2JqZWN0LCBKU09i
amVjdCogdGFyZ2V0RnVuY3Rpb24sIEpTVmFsdWUgYm91bmRUaGlzLCBKU1ZhbHVlIGJvdW5kQXJn
cywgaW50IGxlbmd0aCwgY29uc3QgVVN0cmluZyYgbmFtZSkKIHsKICAgICBDb25zdHJ1Y3REYXRh
IGNvbnN0cnVjdERhdGE7CiAgICAgQ29uc3RydWN0VHlwZSBjb25zdHJ1Y3RUeXBlID0gSlNDOjpn
ZXRDb25zdHJ1Y3REYXRhKHRhcmdldEZ1bmN0aW9uLCBjb25zdHJ1Y3REYXRhKTsKQEAgLTEwNyw3
ICsxMDcsNyBAQCBKU0JvdW5kRnVuY3Rpb246OkpTQm91bmRGdW5jdGlvbihFeGVjU3RhCiB7CiB9
CiAKLXZvaWQgSlNCb3VuZEZ1bmN0aW9uOjpmaW5pc2hDcmVhdGlvbihFeGVjU3RhdGUqIGV4ZWMs
IE5hdGl2ZUV4ZWN1dGFibGUqIGV4ZWN1dGFibGUsIGludCBsZW5ndGgsIGNvbnN0IElkZW50aWZp
ZXImIG5hbWUpCit2b2lkIEpTQm91bmRGdW5jdGlvbjo6ZmluaXNoQ3JlYXRpb24oRXhlY1N0YXRl
KiBleGVjLCBOYXRpdmVFeGVjdXRhYmxlKiBleGVjdXRhYmxlLCBpbnQgbGVuZ3RoLCBjb25zdCBV
U3RyaW5nJiBuYW1lKQogewogICAgIEJhc2U6OmZpbmlzaENyZWF0aW9uKGV4ZWMsIGV4ZWN1dGFi
bGUsIGxlbmd0aCwgbmFtZSk7CiAgICAgQVNTRVJUKGluaGVyaXRzKCZzX2luZm8pKTsKSW5kZXg6
IFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL0pTQm91bmRGdW5jdGlvbi5oCj09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT0KLS0tIFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL0pTQm91bmRGdW5jdGlvbi5oCShy
ZXZpc2lvbiAxMTY2NjcpCisrKyBTb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9KU0JvdW5k
RnVuY3Rpb24uaAkod29ya2luZyBjb3B5KQpAQCAtMzcsNyArMzcsNyBAQCBjbGFzcyBKU0JvdW5k
RnVuY3Rpb24gOiBwdWJsaWMgSlNGdW5jdGlvCiBwdWJsaWM6CiAgICAgdHlwZWRlZiBKU0Z1bmN0
aW9uIEJhc2U7CiAKLSAgICBzdGF0aWMgSlNCb3VuZEZ1bmN0aW9uKiBjcmVhdGUoRXhlY1N0YXRl
KiwgSlNHbG9iYWxPYmplY3QqLCBKU09iamVjdCogdGFyZ2V0RnVuY3Rpb24sIEpTVmFsdWUgYm91
bmRUaGlzLCBKU1ZhbHVlIGJvdW5kQXJncywgaW50LCBjb25zdCBJZGVudGlmaWVyJik7CisgICAg
c3RhdGljIEpTQm91bmRGdW5jdGlvbiogY3JlYXRlKEV4ZWNTdGF0ZSosIEpTR2xvYmFsT2JqZWN0
KiwgSlNPYmplY3QqIHRhcmdldEZ1bmN0aW9uLCBKU1ZhbHVlIGJvdW5kVGhpcywgSlNWYWx1ZSBi
b3VuZEFyZ3MsIGludCwgY29uc3QgVVN0cmluZyYpOwogCiAgICAgc3RhdGljIGJvb2wgaGFzSW5z
dGFuY2UoSlNPYmplY3QqLCBFeGVjU3RhdGUqLCBKU1ZhbHVlLCBKU1ZhbHVlIHByb3RvKTsKIApA
QCAtNjEsNyArNjEsNyBAQCBwcm90ZWN0ZWQ6CiBwcml2YXRlOgogICAgIEpTQm91bmRGdW5jdGlv
bihFeGVjU3RhdGUqLCBKU0dsb2JhbE9iamVjdCosIFN0cnVjdHVyZSosIEpTT2JqZWN0KiB0YXJn
ZXRGdW5jdGlvbiwgSlNWYWx1ZSBib3VuZFRoaXMsIEpTVmFsdWUgYm91bmRBcmdzKTsKICAgICAK
LSAgICB2b2lkIGZpbmlzaENyZWF0aW9uKEV4ZWNTdGF0ZSosIE5hdGl2ZUV4ZWN1dGFibGUqLCBp
bnQsIGNvbnN0IElkZW50aWZpZXImKTsKKyAgICB2b2lkIGZpbmlzaENyZWF0aW9uKEV4ZWNTdGF0
ZSosIE5hdGl2ZUV4ZWN1dGFibGUqLCBpbnQsIGNvbnN0IFVTdHJpbmcmKTsKIAogICAgIFdyaXRl
QmFycmllcjxKU09iamVjdD4gbV90YXJnZXRGdW5jdGlvbjsKICAgICBXcml0ZUJhcnJpZXI8VW5r
bm93bj4gbV9ib3VuZFRoaXM7CkluZGV4OiBTb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9K
U0NlbGwuY3BwCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL0pT
Q2VsbC5jcHAJKHJldmlzaW9uIDExNjY2NykKKysrIFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50
aW1lL0pTQ2VsbC5jcHAJKHdvcmtpbmcgY29weSkKQEAgLTcxLDcgKzcxLDcgQEAgQ29uc3RydWN0
VHlwZSBKU0NlbGw6OmdldENvbnN0cnVjdERhdGEoSgogICAgIHJldHVybiBDb25zdHJ1Y3RUeXBl
Tm9uZTsKIH0KIAotYm9vbCBKU0NlbGw6OmdldE93blByb3BlcnR5U2xvdChKU0NlbGwqIGNlbGws
IEV4ZWNTdGF0ZSogZXhlYywgY29uc3QgSWRlbnRpZmllciYgaWRlbnRpZmllciwgUHJvcGVydHlT
bG90JiBzbG90KQorYm9vbCBKU0NlbGw6OmdldE93blByb3BlcnR5U2xvdChKU0NlbGwqIGNlbGws
IEV4ZWNTdGF0ZSogZXhlYywgUHJvcGVydHlOYW1lIGlkZW50aWZpZXIsIFByb3BlcnR5U2xvdCYg
c2xvdCkKIHsKICAgICAvLyBUaGlzIGlzIG5vdCBhIGdlbmVyYWwgcHVycG9zZSBpbXBsZW1lbnRh
dGlvbiBvZiBnZXRPd25Qcm9wZXJ0eVNsb3QuCiAgICAgLy8gSXQgc2hvdWxkIG9ubHkgYmUgY2Fs
bGVkIGJ5IEpTVmFsdWU6OmdldC4KQEAgLTk1LDcgKzk1LDcgQEAgYm9vbCBKU0NlbGw6OmdldE93
blByb3BlcnR5U2xvdEJ5SW5kZXgoSgogICAgIHJldHVybiB0cnVlOwogfQogCi12b2lkIEpTQ2Vs
bDo6cHV0KEpTQ2VsbCogY2VsbCwgRXhlY1N0YXRlKiBleGVjLCBjb25zdCBJZGVudGlmaWVyJiBp
ZGVudGlmaWVyLCBKU1ZhbHVlIHZhbHVlLCBQdXRQcm9wZXJ0eVNsb3QmIHNsb3QpCit2b2lkIEpT
Q2VsbDo6cHV0KEpTQ2VsbCogY2VsbCwgRXhlY1N0YXRlKiBleGVjLCBQcm9wZXJ0eU5hbWUgaWRl
bnRpZmllciwgSlNWYWx1ZSB2YWx1ZSwgUHV0UHJvcGVydHlTbG90JiBzbG90KQogewogICAgIGlm
IChjZWxsLT5pc1N0cmluZygpKSB7CiAgICAgICAgIEpTVmFsdWUoY2VsbCkucHV0VG9QcmltaXRp
dmUoZXhlYywgaWRlbnRpZmllciwgdmFsdWUsIHNsb3QpOwpAQCAtMTE2LDcgKzExNiw3IEBAIHZv
aWQgSlNDZWxsOjpwdXRCeUluZGV4KEpTQ2VsbCogY2VsbCwgRXgKICAgICB0aGlzT2JqZWN0LT5t
ZXRob2RUYWJsZSgpLT5wdXRCeUluZGV4KHRoaXNPYmplY3QsIGV4ZWMsIGlkZW50aWZpZXIsIHZh
bHVlLCBzaG91bGRUaHJvdyk7CiB9CiAKLWJvb2wgSlNDZWxsOjpkZWxldGVQcm9wZXJ0eShKU0Nl
bGwqIGNlbGwsIEV4ZWNTdGF0ZSogZXhlYywgY29uc3QgSWRlbnRpZmllciYgaWRlbnRpZmllcikK
K2Jvb2wgSlNDZWxsOjpkZWxldGVQcm9wZXJ0eShKU0NlbGwqIGNlbGwsIEV4ZWNTdGF0ZSogZXhl
YywgUHJvcGVydHlOYW1lIGlkZW50aWZpZXIpCiB7CiAgICAgSlNPYmplY3QqIHRoaXNPYmplY3Qg
PSBjZWxsLT50b09iamVjdChleGVjLCBleGVjLT5sZXhpY2FsR2xvYmFsT2JqZWN0KCkpOwogICAg
IHJldHVybiB0aGlzT2JqZWN0LT5tZXRob2RUYWJsZSgpLT5kZWxldGVQcm9wZXJ0eSh0aGlzT2Jq
ZWN0LCBleGVjLCBpZGVudGlmaWVyKTsKQEAgLTE5NSwxOCArMTk1LDE4IEBAIGJvb2wgSlNDZWxs
OjpoYXNJbnN0YW5jZShKU09iamVjdCosIEV4ZWMKICAgICByZXR1cm4gZmFsc2U7CiB9CiAKLXZv
aWQgSlNDZWxsOjpwdXREaXJlY3RWaXJ0dWFsKEpTT2JqZWN0KiwgRXhlY1N0YXRlKiwgY29uc3Qg
SWRlbnRpZmllciYsIEpTVmFsdWUsIHVuc2lnbmVkKQordm9pZCBKU0NlbGw6OnB1dERpcmVjdFZp
cnR1YWwoSlNPYmplY3QqLCBFeGVjU3RhdGUqLCBQcm9wZXJ0eU5hbWUsIEpTVmFsdWUsIHVuc2ln
bmVkKQogewogICAgIEFTU0VSVF9OT1RfUkVBQ0hFRCgpOwogfQogCi1ib29sIEpTQ2VsbDo6ZGVm
aW5lT3duUHJvcGVydHkoSlNPYmplY3QqLCBFeGVjU3RhdGUqLCBjb25zdCBJZGVudGlmaWVyJiwg
UHJvcGVydHlEZXNjcmlwdG9yJiwgYm9vbCkKK2Jvb2wgSlNDZWxsOjpkZWZpbmVPd25Qcm9wZXJ0
eShKU09iamVjdCosIEV4ZWNTdGF0ZSosIFByb3BlcnR5TmFtZSwgUHJvcGVydHlEZXNjcmlwdG9y
JiwgYm9vbCkKIHsKICAgICBBU1NFUlRfTk9UX1JFQUNIRUQoKTsKICAgICByZXR1cm4gZmFsc2U7
CiB9CiAKLWJvb2wgSlNDZWxsOjpnZXRPd25Qcm9wZXJ0eURlc2NyaXB0b3IoSlNPYmplY3QqLCBF
eGVjU3RhdGUqLCBjb25zdCBJZGVudGlmaWVyJiwgUHJvcGVydHlEZXNjcmlwdG9yJikKK2Jvb2wg
SlNDZWxsOjpnZXRPd25Qcm9wZXJ0eURlc2NyaXB0b3IoSlNPYmplY3QqLCBFeGVjU3RhdGUqLCBQ
cm9wZXJ0eU5hbWUsIFByb3BlcnR5RGVzY3JpcHRvciYpCiB7CiAgICAgQVNTRVJUX05PVF9SRUFD
SEVEKCk7CiAgICAgcmV0dXJuIGZhbHNlOwpJbmRleDogU291cmNlL0phdmFTY3JpcHRDb3JlL3J1
bnRpbWUvSlNDZWxsLmgKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRp
bWUvSlNDZWxsLmgJKHJldmlzaW9uIDExNjY2NykKKysrIFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9y
dW50aW1lL0pTQ2VsbC5oCSh3b3JraW5nIGNvcHkpCkBAIC0xMDYsMTAgKzEwNiwxMCBAQCBuYW1l
c3BhY2UgSlNDIHsKICAgICAgICAgY29uc3QgQ2xhc3NJbmZvKiBjbGFzc0luZm8oKSBjb25zdDsK
ICAgICAgICAgY29uc3QgQ2xhc3NJbmZvKiB2YWxpZGF0ZWRDbGFzc0luZm8oKSBjb25zdDsKICAg
ICAgICAgY29uc3QgTWV0aG9kVGFibGUqIG1ldGhvZFRhYmxlKCkgY29uc3Q7Ci0gICAgICAgIHN0
YXRpYyB2b2lkIHB1dChKU0NlbGwqLCBFeGVjU3RhdGUqLCBjb25zdCBJZGVudGlmaWVyJiBwcm9w
ZXJ0eU5hbWUsIEpTVmFsdWUsIFB1dFByb3BlcnR5U2xvdCYpOworICAgICAgICBzdGF0aWMgdm9p
ZCBwdXQoSlNDZWxsKiwgRXhlY1N0YXRlKiwgUHJvcGVydHlOYW1lIHByb3BlcnR5TmFtZSwgSlNW
YWx1ZSwgUHV0UHJvcGVydHlTbG90Jik7CiAgICAgICAgIHN0YXRpYyB2b2lkIHB1dEJ5SW5kZXgo
SlNDZWxsKiwgRXhlY1N0YXRlKiwgdW5zaWduZWQgcHJvcGVydHlOYW1lLCBKU1ZhbHVlLCBib29s
IHNob3VsZFRocm93KTsKICAgICAgICAgCi0gICAgICAgIHN0YXRpYyBib29sIGRlbGV0ZVByb3Bl
cnR5KEpTQ2VsbCosIEV4ZWNTdGF0ZSosIGNvbnN0IElkZW50aWZpZXImIHByb3BlcnR5TmFtZSk7
CisgICAgICAgIHN0YXRpYyBib29sIGRlbGV0ZVByb3BlcnR5KEpTQ2VsbCosIEV4ZWNTdGF0ZSos
IFByb3BlcnR5TmFtZSBwcm9wZXJ0eU5hbWUpOwogICAgICAgICBzdGF0aWMgYm9vbCBkZWxldGVQ
cm9wZXJ0eUJ5SW5kZXgoSlNDZWxsKiwgRXhlY1N0YXRlKiwgdW5zaWduZWQgcHJvcGVydHlOYW1l
KTsKIAogICAgICAgICBzdGF0aWMgSlNPYmplY3QqIHRvVGhpc09iamVjdChKU0NlbGwqLCBFeGVj
U3RhdGUqKTsKQEAgLTEyMSw3ICsxMjEsNyBAQCBuYW1lc3BhY2UgSlNDIHsKICAgICAgICAgLy8g
ZmFzdEdldE93blByb3BlcnR5U2xvdCB0byBnZXRPd25Qcm9wZXJ0eVNsb3QuIENhbGxlcnMgc2hv
dWxkIGFsd2F5cwogICAgICAgICAvLyBjYWxsIHRoaXMgZnVuY3Rpb24sIG5vdCBpdHMgc2xvd2Vy
IHZpcnR1YWwgY291bnRlcnBhcnQuIChGb3IgaW50ZWdlcgogICAgICAgICAvLyBwcm9wZXJ0eSBu
YW1lcywgd2Ugd2FudCBhIHNpbWlsYXIgaW50ZXJmYWNlIHdpdGggYXBwcm9wcmlhdGUgb3B0aW1p
emF0aW9ucy4pCi0gICAgICAgIGJvb2wgZmFzdEdldE93blByb3BlcnR5U2xvdChFeGVjU3RhdGUq
LCBjb25zdCBJZGVudGlmaWVyJiBwcm9wZXJ0eU5hbWUsIFByb3BlcnR5U2xvdCYpOworICAgICAg
ICBib29sIGZhc3RHZXRPd25Qcm9wZXJ0eVNsb3QoRXhlY1N0YXRlKiwgUHJvcGVydHlOYW1lIHBy
b3BlcnR5TmFtZSwgUHJvcGVydHlTbG90Jik7CiAgICAgICAgIEpTVmFsdWUgZmFzdEdldE93blBy
b3BlcnR5KEV4ZWNTdGF0ZSosIGNvbnN0IFVTdHJpbmcmKTsKIAogICAgICAgICBzdGF0aWMgcHRy
ZGlmZl90IHN0cnVjdHVyZU9mZnNldCgpCkBAIC0xNTAsNyArMTUwLDcgQEAgbmFtZXNwYWNlIEpT
QyB7CiAgICAgICAgIHZvaWQgZmluaXNoQ3JlYXRpb24oSlNHbG9iYWxEYXRhJiwgU3RydWN0dXJl
KiwgQ3JlYXRpbmdFYXJseUNlbGxUYWcpOwogCiAgICAgICAgIC8vIEJhc2UgaW1wbGVtZW50YXRp
b247IGZvciBub24tb2JqZWN0IGNsYXNzZXMgaW1wbGVtZW50cyBnZXRQcm9wZXJ0eVNsb3QuCi0g
ICAgICAgIHN0YXRpYyBib29sIGdldE93blByb3BlcnR5U2xvdChKU0NlbGwqLCBFeGVjU3RhdGUq
LCBjb25zdCBJZGVudGlmaWVyJiBwcm9wZXJ0eU5hbWUsIFByb3BlcnR5U2xvdCYpOworICAgICAg
ICBzdGF0aWMgYm9vbCBnZXRPd25Qcm9wZXJ0eVNsb3QoSlNDZWxsKiwgRXhlY1N0YXRlKiwgUHJv
cGVydHlOYW1lIHByb3BlcnR5TmFtZSwgUHJvcGVydHlTbG90Jik7CiAgICAgICAgIHN0YXRpYyBi
b29sIGdldE93blByb3BlcnR5U2xvdEJ5SW5kZXgoSlNDZWxsKiwgRXhlY1N0YXRlKiwgdW5zaWdu
ZWQgcHJvcGVydHlOYW1lLCBQcm9wZXJ0eVNsb3QmKTsKIAogICAgICAgICAvLyBEdW1teSBpbXBs
ZW1lbnRhdGlvbnMgb2Ygb3ZlcnJpZGUtYWJsZSBzdGF0aWMgZnVuY3Rpb25zIGZvciBjbGFzc2Vz
IHRvIHB1dCBpbiB0aGVpciBNZXRob2RUYWJsZQpAQCAtMTU5LDkgKzE1OSw5IEBAIG5hbWVzcGFj
ZSBKU0MgewogICAgICAgICBzdGF0aWMgTk9fUkVUVVJOX0RVRV9UT19BU1NFUlQgdm9pZCBnZXRQ
cm9wZXJ0eU5hbWVzKEpTT2JqZWN0KiwgRXhlY1N0YXRlKiwgUHJvcGVydHlOYW1lQXJyYXkmLCBF
bnVtZXJhdGlvbk1vZGUpOwogICAgICAgICBzdGF0aWMgVVN0cmluZyBjbGFzc05hbWUoY29uc3Qg
SlNPYmplY3QqKTsKICAgICAgICAgc3RhdGljIGJvb2wgaGFzSW5zdGFuY2UoSlNPYmplY3QqLCBF
eGVjU3RhdGUqLCBKU1ZhbHVlLCBKU1ZhbHVlIHByb3RvdHlwZVByb3BlcnR5KTsKLSAgICAgICAg
c3RhdGljIE5PX1JFVFVSTl9EVUVfVE9fQVNTRVJUIHZvaWQgcHV0RGlyZWN0VmlydHVhbChKU09i
amVjdCosIEV4ZWNTdGF0ZSosIGNvbnN0IElkZW50aWZpZXImIHByb3BlcnR5TmFtZSwgSlNWYWx1
ZSwgdW5zaWduZWQgYXR0cmlidXRlcyk7Ci0gICAgICAgIHN0YXRpYyBib29sIGRlZmluZU93blBy
b3BlcnR5KEpTT2JqZWN0KiwgRXhlY1N0YXRlKiwgY29uc3QgSWRlbnRpZmllciYgcHJvcGVydHlO
YW1lLCBQcm9wZXJ0eURlc2NyaXB0b3ImLCBib29sIHNob3VsZFRocm93KTsKLSAgICAgICAgc3Rh
dGljIGJvb2wgZ2V0T3duUHJvcGVydHlEZXNjcmlwdG9yKEpTT2JqZWN0KiwgRXhlY1N0YXRlKiwg
Y29uc3QgSWRlbnRpZmllciYsIFByb3BlcnR5RGVzY3JpcHRvciYpOworICAgICAgICBzdGF0aWMg
Tk9fUkVUVVJOX0RVRV9UT19BU1NFUlQgdm9pZCBwdXREaXJlY3RWaXJ0dWFsKEpTT2JqZWN0Kiwg
RXhlY1N0YXRlKiwgUHJvcGVydHlOYW1lIHByb3BlcnR5TmFtZSwgSlNWYWx1ZSwgdW5zaWduZWQg
YXR0cmlidXRlcyk7CisgICAgICAgIHN0YXRpYyBib29sIGRlZmluZU93blByb3BlcnR5KEpTT2Jq
ZWN0KiwgRXhlY1N0YXRlKiwgUHJvcGVydHlOYW1lIHByb3BlcnR5TmFtZSwgUHJvcGVydHlEZXNj
cmlwdG9yJiwgYm9vbCBzaG91bGRUaHJvdyk7CisgICAgICAgIHN0YXRpYyBib29sIGdldE93blBy
b3BlcnR5RGVzY3JpcHRvcihKU09iamVjdCosIEV4ZWNTdGF0ZSosIFByb3BlcnR5TmFtZSwgUHJv
cGVydHlEZXNjcmlwdG9yJik7CiAKICAgICBwcml2YXRlOgogICAgICAgICBmcmllbmQgY2xhc3Mg
TExJbnRPZmZzZXRzRXh0cmFjdG9yOwpJbmRleDogU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRp
bWUvSlNGdW5jdGlvbi5jcHAKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL0phdmFTY3JpcHRDb3JlL3J1
bnRpbWUvSlNGdW5jdGlvbi5jcHAJKHJldmlzaW9uIDExNjY3MCkKKysrIFNvdXJjZS9KYXZhU2Ny
aXB0Q29yZS9ydW50aW1lL0pTRnVuY3Rpb24uY3BwCSh3b3JraW5nIGNvcHkpCkBAIC01OSw3ICs1
OSw3IEBAIGJvb2wgSlNGdW5jdGlvbjo6aXNIb3N0RnVuY3Rpb25Ob25JbmxpbmUKICAgICByZXR1
cm4gaXNIb3N0RnVuY3Rpb24oKTsKIH0KIAotSlNGdW5jdGlvbiogSlNGdW5jdGlvbjo6Y3JlYXRl
KEV4ZWNTdGF0ZSogZXhlYywgSlNHbG9iYWxPYmplY3QqIGdsb2JhbE9iamVjdCwgaW50IGxlbmd0
aCwgY29uc3QgSWRlbnRpZmllciYgbmFtZSwgTmF0aXZlRnVuY3Rpb24gbmF0aXZlRnVuY3Rpb24s
IEludHJpbnNpYyBpbnRyaW5zaWMsIE5hdGl2ZUZ1bmN0aW9uIG5hdGl2ZUNvbnN0cnVjdG9yKQor
SlNGdW5jdGlvbiogSlNGdW5jdGlvbjo6Y3JlYXRlKEV4ZWNTdGF0ZSogZXhlYywgSlNHbG9iYWxP
YmplY3QqIGdsb2JhbE9iamVjdCwgaW50IGxlbmd0aCwgY29uc3QgVVN0cmluZyYgbmFtZSwgTmF0
aXZlRnVuY3Rpb24gbmF0aXZlRnVuY3Rpb24sIEludHJpbnNpYyBpbnRyaW5zaWMsIE5hdGl2ZUZ1
bmN0aW9uIG5hdGl2ZUNvbnN0cnVjdG9yKQogewogICAgIE5hdGl2ZUV4ZWN1dGFibGUqIGV4ZWN1
dGFibGU7CiAjaWYgIUVOQUJMRShKSVQpCkBAIC05MiwxMiArOTIsMTIgQEAgSlNGdW5jdGlvbjo6
SlNGdW5jdGlvbihFeGVjU3RhdGUqIGV4ZWMsIAogewogfQogCi12b2lkIEpTRnVuY3Rpb246OmZp
bmlzaENyZWF0aW9uKEV4ZWNTdGF0ZSogZXhlYywgTmF0aXZlRXhlY3V0YWJsZSogZXhlY3V0YWJs
ZSwgaW50IGxlbmd0aCwgY29uc3QgSWRlbnRpZmllciYgbmFtZSkKK3ZvaWQgSlNGdW5jdGlvbjo6
ZmluaXNoQ3JlYXRpb24oRXhlY1N0YXRlKiBleGVjLCBOYXRpdmVFeGVjdXRhYmxlKiBleGVjdXRh
YmxlLCBpbnQgbGVuZ3RoLCBjb25zdCBVU3RyaW5nJiBuYW1lKQogewogICAgIEJhc2U6OmZpbmlz
aENyZWF0aW9uKGV4ZWMtPmdsb2JhbERhdGEoKSk7CiAgICAgQVNTRVJUKGluaGVyaXRzKCZzX2lu
Zm8pKTsKICAgICBtX2V4ZWN1dGFibGUuc2V0KGV4ZWMtPmdsb2JhbERhdGEoKSwgdGhpcywgZXhl
Y3V0YWJsZSk7Ci0gICAgcHV0RGlyZWN0KGV4ZWMtPmdsb2JhbERhdGEoKSwgZXhlYy0+Z2xvYmFs
RGF0YSgpLnByb3BlcnR5TmFtZXMtPm5hbWUsIGpzU3RyaW5nKGV4ZWMsIG5hbWUuaXNOdWxsKCkg
PyAiIiA6IG5hbWUudXN0cmluZygpKSwgRG9udERlbGV0ZSB8IFJlYWRPbmx5IHwgRG9udEVudW0p
OworICAgIHB1dERpcmVjdChleGVjLT5nbG9iYWxEYXRhKCksIGV4ZWMtPmdsb2JhbERhdGEoKS5w
cm9wZXJ0eU5hbWVzLT5uYW1lLCBqc1N0cmluZyhleGVjLCBuYW1lLmlzTnVsbCgpID8gIiIgOiBu
YW1lKSwgRG9udERlbGV0ZSB8IFJlYWRPbmx5IHwgRG9udEVudW0pOwogICAgIHB1dERpcmVjdChl
eGVjLT5nbG9iYWxEYXRhKCksIGV4ZWMtPnByb3BlcnR5TmFtZXMoKS5sZW5ndGgsIGpzTnVtYmVy
KGxlbmd0aCksIERvbnREZWxldGUgfCBSZWFkT25seSB8IERvbnRFbnVtKTsKIH0KIApAQCAtMTgz
LDE0ICsxODMsMTQgQEAgQ2FsbFR5cGUgSlNGdW5jdGlvbjo6Z2V0Q2FsbERhdGEoSlNDZWxsKgog
ICAgIHJldHVybiBDYWxsVHlwZUpTOwogfQogCi1KU1ZhbHVlIEpTRnVuY3Rpb246OmFyZ3VtZW50
c0dldHRlcihFeGVjU3RhdGUqIGV4ZWMsIEpTVmFsdWUgc2xvdEJhc2UsIGNvbnN0IElkZW50aWZp
ZXImKQorSlNWYWx1ZSBKU0Z1bmN0aW9uOjphcmd1bWVudHNHZXR0ZXIoRXhlY1N0YXRlKiBleGVj
LCBKU1ZhbHVlIHNsb3RCYXNlLCBQcm9wZXJ0eU5hbWUpCiB7CiAgICAgSlNGdW5jdGlvbiogdGhp
c09iaiA9IGpzQ2FzdDxKU0Z1bmN0aW9uKj4oc2xvdEJhc2UpOwogICAgIEFTU0VSVCghdGhpc09i
ai0+aXNIb3N0RnVuY3Rpb24oKSk7CiAgICAgcmV0dXJuIGV4ZWMtPmludGVycHJldGVyKCktPnJl
dHJpZXZlQXJndW1lbnRzRnJvbVZNQ29kZShleGVjLCB0aGlzT2JqKTsKIH0KIAotSlNWYWx1ZSBK
U0Z1bmN0aW9uOjpjYWxsZXJHZXR0ZXIoRXhlY1N0YXRlKiBleGVjLCBKU1ZhbHVlIHNsb3RCYXNl
LCBjb25zdCBJZGVudGlmaWVyJikKK0pTVmFsdWUgSlNGdW5jdGlvbjo6Y2FsbGVyR2V0dGVyKEV4
ZWNTdGF0ZSogZXhlYywgSlNWYWx1ZSBzbG90QmFzZSwgUHJvcGVydHlOYW1lKQogewogICAgIEpT
RnVuY3Rpb24qIHRoaXNPYmogPSBqc0Nhc3Q8SlNGdW5jdGlvbio+KHNsb3RCYXNlKTsKICAgICBB
U1NFUlQoIXRoaXNPYmotPmlzSG9zdEZ1bmN0aW9uKCkpOwpAQCAtMjA1LDE0ICsyMDUsMTQgQEAg
SlNWYWx1ZSBKU0Z1bmN0aW9uOjpjYWxsZXJHZXR0ZXIoRXhlY1N0YQogICAgIHJldHVybiB0aHJv
d1R5cGVFcnJvcihleGVjLCAiRnVuY3Rpb24uY2FsbGVyIHVzZWQgdG8gcmV0cmlldmUgc3RyaWN0
IGNhbGxlciIpOwogfQogCi1KU1ZhbHVlIEpTRnVuY3Rpb246Omxlbmd0aEdldHRlcihFeGVjU3Rh
dGUqLCBKU1ZhbHVlIHNsb3RCYXNlLCBjb25zdCBJZGVudGlmaWVyJikKK0pTVmFsdWUgSlNGdW5j
dGlvbjo6bGVuZ3RoR2V0dGVyKEV4ZWNTdGF0ZSosIEpTVmFsdWUgc2xvdEJhc2UsIFByb3BlcnR5
TmFtZSkKIHsKICAgICBKU0Z1bmN0aW9uKiB0aGlzT2JqID0ganNDYXN0PEpTRnVuY3Rpb24qPihz
bG90QmFzZSk7CiAgICAgQVNTRVJUKCF0aGlzT2JqLT5pc0hvc3RGdW5jdGlvbigpKTsKICAgICBy
ZXR1cm4ganNOdW1iZXIodGhpc09iai0+anNFeGVjdXRhYmxlKCktPnBhcmFtZXRlckNvdW50KCkp
OwogfQogCi1ib29sIEpTRnVuY3Rpb246OmdldE93blByb3BlcnR5U2xvdChKU0NlbGwqIGNlbGws
IEV4ZWNTdGF0ZSogZXhlYywgY29uc3QgSWRlbnRpZmllciYgcHJvcGVydHlOYW1lLCBQcm9wZXJ0
eVNsb3QmIHNsb3QpCitib29sIEpTRnVuY3Rpb246OmdldE93blByb3BlcnR5U2xvdChKU0NlbGwq
IGNlbGwsIEV4ZWNTdGF0ZSogZXhlYywgUHJvcGVydHlOYW1lIHByb3BlcnR5TmFtZSwgUHJvcGVy
dHlTbG90JiBzbG90KQogewogICAgIEpTRnVuY3Rpb24qIHRoaXNPYmplY3QgPSBqc0Nhc3Q8SlNG
dW5jdGlvbio+KGNlbGwpOwogICAgIGlmICh0aGlzT2JqZWN0LT5pc0hvc3RGdW5jdGlvbigpKQpA
QCAtMjY3LDcgKzI2Nyw3IEBAIGJvb2wgSlNGdW5jdGlvbjo6Z2V0T3duUHJvcGVydHlTbG90KEpT
Q2UKICAgICByZXR1cm4gQmFzZTo6Z2V0T3duUHJvcGVydHlTbG90KHRoaXNPYmplY3QsIGV4ZWMs
IHByb3BlcnR5TmFtZSwgc2xvdCk7CiB9CiAKLWJvb2wgSlNGdW5jdGlvbjo6Z2V0T3duUHJvcGVy
dHlEZXNjcmlwdG9yKEpTT2JqZWN0KiBvYmplY3QsIEV4ZWNTdGF0ZSogZXhlYywgY29uc3QgSWRl
bnRpZmllciYgcHJvcGVydHlOYW1lLCBQcm9wZXJ0eURlc2NyaXB0b3ImIGRlc2NyaXB0b3IpCiti
b29sIEpTRnVuY3Rpb246OmdldE93blByb3BlcnR5RGVzY3JpcHRvcihKU09iamVjdCogb2JqZWN0
LCBFeGVjU3RhdGUqIGV4ZWMsIFByb3BlcnR5TmFtZSBwcm9wZXJ0eU5hbWUsIFByb3BlcnR5RGVz
Y3JpcHRvciYgZGVzY3JpcHRvcikKIHsKICAgICBKU0Z1bmN0aW9uKiB0aGlzT2JqZWN0ID0ganND
YXN0PEpTRnVuY3Rpb24qPihvYmplY3QpOwogICAgIGlmICh0aGlzT2JqZWN0LT5pc0hvc3RGdW5j
dGlvbigpKQpAQCAtMzMwLDcgKzMzMCw3IEBAIHZvaWQgSlNGdW5jdGlvbjo6Z2V0T3duUHJvcGVy
dHlOYW1lcyhKU08KICAgICBCYXNlOjpnZXRPd25Qcm9wZXJ0eU5hbWVzKHRoaXNPYmplY3QsIGV4
ZWMsIHByb3BlcnR5TmFtZXMsIG1vZGUpOwogfQogCi12b2lkIEpTRnVuY3Rpb246OnB1dChKU0Nl
bGwqIGNlbGwsIEV4ZWNTdGF0ZSogZXhlYywgY29uc3QgSWRlbnRpZmllciYgcHJvcGVydHlOYW1l
LCBKU1ZhbHVlIHZhbHVlLCBQdXRQcm9wZXJ0eVNsb3QmIHNsb3QpCit2b2lkIEpTRnVuY3Rpb246
OnB1dChKU0NlbGwqIGNlbGwsIEV4ZWNTdGF0ZSogZXhlYywgUHJvcGVydHlOYW1lIHByb3BlcnR5
TmFtZSwgSlNWYWx1ZSB2YWx1ZSwgUHV0UHJvcGVydHlTbG90JiBzbG90KQogewogICAgIEpTRnVu
Y3Rpb24qIHRoaXNPYmplY3QgPSBqc0Nhc3Q8SlNGdW5jdGlvbio+KGNlbGwpOwogICAgIGlmICh0
aGlzT2JqZWN0LT5pc0hvc3RGdW5jdGlvbigpKSB7CkBAIC0zNTksNyArMzU5LDcgQEAgdm9pZCBK
U0Z1bmN0aW9uOjpwdXQoSlNDZWxsKiBjZWxsLCBFeGVjUwogICAgIEJhc2U6OnB1dCh0aGlzT2Jq
ZWN0LCBleGVjLCBwcm9wZXJ0eU5hbWUsIHZhbHVlLCBzbG90KTsKIH0KIAotYm9vbCBKU0Z1bmN0
aW9uOjpkZWxldGVQcm9wZXJ0eShKU0NlbGwqIGNlbGwsIEV4ZWNTdGF0ZSogZXhlYywgY29uc3Qg
SWRlbnRpZmllciYgcHJvcGVydHlOYW1lKQorYm9vbCBKU0Z1bmN0aW9uOjpkZWxldGVQcm9wZXJ0
eShKU0NlbGwqIGNlbGwsIEV4ZWNTdGF0ZSogZXhlYywgUHJvcGVydHlOYW1lIHByb3BlcnR5TmFt
ZSkKIHsKICAgICBKU0Z1bmN0aW9uKiB0aGlzT2JqZWN0ID0ganNDYXN0PEpTRnVuY3Rpb24qPihj
ZWxsKTsKICAgICAvLyBGb3Igbm9uLWhvc3QgZnVuY3Rpb25zLCBkb24ndCBsZXQgdGhlc2UgcHJv
cGVydGllcyBieSBkZWxldGVkIC0gZXhjZXB0IGJ5IERlZmluZU93blByb3BlcnR5LgpAQCAtMzcy
LDcgKzM3Miw3IEBAIGJvb2wgSlNGdW5jdGlvbjo6ZGVsZXRlUHJvcGVydHkoSlNDZWxsKiAKICAg
ICByZXR1cm4gQmFzZTo6ZGVsZXRlUHJvcGVydHkodGhpc09iamVjdCwgZXhlYywgcHJvcGVydHlO
YW1lKTsKIH0KIAotYm9vbCBKU0Z1bmN0aW9uOjpkZWZpbmVPd25Qcm9wZXJ0eShKU09iamVjdCog
b2JqZWN0LCBFeGVjU3RhdGUqIGV4ZWMsIGNvbnN0IElkZW50aWZpZXImIHByb3BlcnR5TmFtZSwg
UHJvcGVydHlEZXNjcmlwdG9yJiBkZXNjcmlwdG9yLCBib29sIHRocm93RXhjZXB0aW9uKQorYm9v
bCBKU0Z1bmN0aW9uOjpkZWZpbmVPd25Qcm9wZXJ0eShKU09iamVjdCogb2JqZWN0LCBFeGVjU3Rh
dGUqIGV4ZWMsIFByb3BlcnR5TmFtZSBwcm9wZXJ0eU5hbWUsIFByb3BlcnR5RGVzY3JpcHRvciYg
ZGVzY3JpcHRvciwgYm9vbCB0aHJvd0V4Y2VwdGlvbikKIHsKICAgICBKU0Z1bmN0aW9uKiB0aGlz
T2JqZWN0ID0ganNDYXN0PEpTRnVuY3Rpb24qPihvYmplY3QpOwogICAgIGlmICh0aGlzT2JqZWN0
LT5pc0hvc3RGdW5jdGlvbigpKQpAQCAtNDU1LDcgKzQ1NSw3IEBAIFVTdHJpbmcgZ2V0Q2FsY3Vs
YXRlZERpc3BsYXlOYW1lKENhbGxGcmEKICAgICAgICAgcmV0dXJuIGZ1bmN0aW9uLT5jYWxjdWxh
dGVkRGlzcGxheU5hbWUoY2FsbEZyYW1lKTsKICAgICBpZiAoSW50ZXJuYWxGdW5jdGlvbiogZnVu
Y3Rpb24gPSBqc0R5bmFtaWNDYXN0PEludGVybmFsRnVuY3Rpb24qPihvYmplY3QpKQogICAgICAg
ICByZXR1cm4gZnVuY3Rpb24tPmNhbGN1bGF0ZWREaXNwbGF5TmFtZShjYWxsRnJhbWUpOwotICAg
IHJldHVybiBjYWxsRnJhbWUtPmdsb2JhbERhdGEoKS5wcm9wZXJ0eU5hbWVzLT5lbXB0eUlkZW50
aWZpZXIudXN0cmluZygpOworICAgIHJldHVybiAiIjsKIH0KIAogfSAvLyBuYW1lc3BhY2UgSlND
CkluZGV4OiBTb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9KU0Z1bmN0aW9uLmgKPT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PQotLS0gU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvSlNGdW5jdGlvbi5oCShyZXZp
c2lvbiAxMTY2NzApCisrKyBTb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9KU0Z1bmN0aW9u
LmgJKHdvcmtpbmcgY29weSkKQEAgLTU1LDcgKzU1LDcgQEAgbmFtZXNwYWNlIEpTQyB7CiAgICAg
cHVibGljOgogICAgICAgICB0eXBlZGVmIEpTTm9uRmluYWxPYmplY3QgQmFzZTsKIAotICAgICAg
ICBKU19FWFBPUlRfUFJJVkFURSBzdGF0aWMgSlNGdW5jdGlvbiogY3JlYXRlKEV4ZWNTdGF0ZSos
IEpTR2xvYmFsT2JqZWN0KiwgaW50IGxlbmd0aCwgY29uc3QgSWRlbnRpZmllciYgbmFtZSwgTmF0
aXZlRnVuY3Rpb24gbmF0aXZlRnVuY3Rpb24sIEludHJpbnNpYyA9IE5vSW50cmluc2ljLCBOYXRp
dmVGdW5jdGlvbiBuYXRpdmVDb25zdHJ1Y3RvciA9IGNhbGxIb3N0RnVuY3Rpb25Bc0NvbnN0cnVj
dG9yKTsKKyAgICAgICAgSlNfRVhQT1JUX1BSSVZBVEUgc3RhdGljIEpTRnVuY3Rpb24qIGNyZWF0
ZShFeGVjU3RhdGUqLCBKU0dsb2JhbE9iamVjdCosIGludCBsZW5ndGgsIGNvbnN0IFVTdHJpbmcm
IG5hbWUsIE5hdGl2ZUZ1bmN0aW9uIG5hdGl2ZUZ1bmN0aW9uLCBJbnRyaW5zaWMgPSBOb0ludHJp
bnNpYywgTmF0aXZlRnVuY3Rpb24gbmF0aXZlQ29uc3RydWN0b3IgPSBjYWxsSG9zdEZ1bmN0aW9u
QXNDb25zdHJ1Y3Rvcik7CiAKICAgICAgICAgc3RhdGljIEpTRnVuY3Rpb24qIGNyZWF0ZShFeGVj
U3RhdGUqIGV4ZWMsIEZ1bmN0aW9uRXhlY3V0YWJsZSogZXhlY3V0YWJsZSwgU2NvcGVDaGFpbk5v
ZGUqIHNjb3BlQ2hhaW4pCiAgICAgICAgIHsKQEAgLTEzOSwxOSArMTM5LDE5IEBAIG5hbWVzcGFj
ZSBKU0MgewogICAgICAgICBKU19FWFBPUlRfUFJJVkFURSBKU0Z1bmN0aW9uKEV4ZWNTdGF0ZSos
IEpTR2xvYmFsT2JqZWN0KiwgU3RydWN0dXJlKik7CiAgICAgICAgIEpTRnVuY3Rpb24oRXhlY1N0
YXRlKiwgRnVuY3Rpb25FeGVjdXRhYmxlKiwgU2NvcGVDaGFpbk5vZGUqKTsKICAgICAgICAgCi0g
ICAgICAgIHZvaWQgZmluaXNoQ3JlYXRpb24oRXhlY1N0YXRlKiwgTmF0aXZlRXhlY3V0YWJsZSos
IGludCBsZW5ndGgsIGNvbnN0IElkZW50aWZpZXImIG5hbWUpOworICAgICAgICB2b2lkIGZpbmlz
aENyZWF0aW9uKEV4ZWNTdGF0ZSosIE5hdGl2ZUV4ZWN1dGFibGUqLCBpbnQgbGVuZ3RoLCBjb25z
dCBVU3RyaW5nJiBuYW1lKTsKICAgICAgICAgdm9pZCBmaW5pc2hDcmVhdGlvbihFeGVjU3RhdGUq
LCBGdW5jdGlvbkV4ZWN1dGFibGUqLCBTY29wZUNoYWluTm9kZSopOwogCiAgICAgICAgIFN0cnVj
dHVyZSogY2FjaGVJbmhlcml0b3JJRChFeGVjU3RhdGUqKTsKIAotICAgICAgICBzdGF0aWMgYm9v
bCBnZXRPd25Qcm9wZXJ0eVNsb3QoSlNDZWxsKiwgRXhlY1N0YXRlKiwgY29uc3QgSWRlbnRpZmll
ciYsIFByb3BlcnR5U2xvdCYpOwotICAgICAgICBzdGF0aWMgYm9vbCBnZXRPd25Qcm9wZXJ0eURl
c2NyaXB0b3IoSlNPYmplY3QqLCBFeGVjU3RhdGUqLCBjb25zdCBJZGVudGlmaWVyJiwgUHJvcGVy
dHlEZXNjcmlwdG9yJik7CisgICAgICAgIHN0YXRpYyBib29sIGdldE93blByb3BlcnR5U2xvdChK
U0NlbGwqLCBFeGVjU3RhdGUqLCBQcm9wZXJ0eU5hbWUsIFByb3BlcnR5U2xvdCYpOworICAgICAg
ICBzdGF0aWMgYm9vbCBnZXRPd25Qcm9wZXJ0eURlc2NyaXB0b3IoSlNPYmplY3QqLCBFeGVjU3Rh
dGUqLCBQcm9wZXJ0eU5hbWUsIFByb3BlcnR5RGVzY3JpcHRvciYpOwogICAgICAgICBzdGF0aWMg
dm9pZCBnZXRPd25Qcm9wZXJ0eU5hbWVzKEpTT2JqZWN0KiwgRXhlY1N0YXRlKiwgUHJvcGVydHlO
YW1lQXJyYXkmLCBFbnVtZXJhdGlvbk1vZGUgPSBFeGNsdWRlRG9udEVudW1Qcm9wZXJ0aWVzKTsK
LSAgICAgICAgc3RhdGljIGJvb2wgZGVmaW5lT3duUHJvcGVydHkoSlNPYmplY3QqLCBFeGVjU3Rh
dGUqLCBjb25zdCBJZGVudGlmaWVyJiBwcm9wZXJ0eU5hbWUsIFByb3BlcnR5RGVzY3JpcHRvciYs
IGJvb2wgc2hvdWxkVGhyb3cpOworICAgICAgICBzdGF0aWMgYm9vbCBkZWZpbmVPd25Qcm9wZXJ0
eShKU09iamVjdCosIEV4ZWNTdGF0ZSosIFByb3BlcnR5TmFtZSBwcm9wZXJ0eU5hbWUsIFByb3Bl
cnR5RGVzY3JpcHRvciYsIGJvb2wgc2hvdWxkVGhyb3cpOwogCi0gICAgICAgIHN0YXRpYyB2b2lk
IHB1dChKU0NlbGwqLCBFeGVjU3RhdGUqLCBjb25zdCBJZGVudGlmaWVyJiBwcm9wZXJ0eU5hbWUs
IEpTVmFsdWUsIFB1dFByb3BlcnR5U2xvdCYpOworICAgICAgICBzdGF0aWMgdm9pZCBwdXQoSlND
ZWxsKiwgRXhlY1N0YXRlKiwgUHJvcGVydHlOYW1lIHByb3BlcnR5TmFtZSwgSlNWYWx1ZSwgUHV0
UHJvcGVydHlTbG90Jik7CiAKLSAgICAgICAgc3RhdGljIGJvb2wgZGVsZXRlUHJvcGVydHkoSlND
ZWxsKiwgRXhlY1N0YXRlKiwgY29uc3QgSWRlbnRpZmllciYgcHJvcGVydHlOYW1lKTsKKyAgICAg
ICAgc3RhdGljIGJvb2wgZGVsZXRlUHJvcGVydHkoSlNDZWxsKiwgRXhlY1N0YXRlKiwgUHJvcGVy
dHlOYW1lIHByb3BlcnR5TmFtZSk7CiAKICAgICAgICAgc3RhdGljIHZvaWQgdmlzaXRDaGlsZHJl
bihKU0NlbGwqLCBTbG90VmlzaXRvciYpOwogCkBAIC0xNjAsOSArMTYwLDkgQEAgbmFtZXNwYWNl
IEpTQyB7CiAgICAgICAgIAogICAgICAgICBKU19FWFBPUlRfUFJJVkFURSBib29sIGlzSG9zdEZ1
bmN0aW9uTm9uSW5saW5lKCkgY29uc3Q7CiAKLSAgICAgICAgc3RhdGljIEpTVmFsdWUgYXJndW1l
bnRzR2V0dGVyKEV4ZWNTdGF0ZSosIEpTVmFsdWUsIGNvbnN0IElkZW50aWZpZXImKTsKLSAgICAg
ICAgc3RhdGljIEpTVmFsdWUgY2FsbGVyR2V0dGVyKEV4ZWNTdGF0ZSosIEpTVmFsdWUsIGNvbnN0
IElkZW50aWZpZXImKTsKLSAgICAgICAgc3RhdGljIEpTVmFsdWUgbGVuZ3RoR2V0dGVyKEV4ZWNT
dGF0ZSosIEpTVmFsdWUsIGNvbnN0IElkZW50aWZpZXImKTsKKyAgICAgICAgc3RhdGljIEpTVmFs
dWUgYXJndW1lbnRzR2V0dGVyKEV4ZWNTdGF0ZSosIEpTVmFsdWUsIFByb3BlcnR5TmFtZSk7Cisg
ICAgICAgIHN0YXRpYyBKU1ZhbHVlIGNhbGxlckdldHRlcihFeGVjU3RhdGUqLCBKU1ZhbHVlLCBQ
cm9wZXJ0eU5hbWUpOworICAgICAgICBzdGF0aWMgSlNWYWx1ZSBsZW5ndGhHZXR0ZXIoRXhlY1N0
YXRlKiwgSlNWYWx1ZSwgUHJvcGVydHlOYW1lKTsKIAogICAgICAgICBXcml0ZUJhcnJpZXI8RXhl
Y3V0YWJsZUJhc2U+IG1fZXhlY3V0YWJsZTsKICAgICAgICAgV3JpdGVCYXJyaWVyPFNjb3BlQ2hh
aW5Ob2RlPiBtX3Njb3BlQ2hhaW47CkluZGV4OiBTb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGlt
ZS9KU0dsb2JhbE9iamVjdC5jcHAKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL0phdmFTY3JpcHRDb3Jl
L3J1bnRpbWUvSlNHbG9iYWxPYmplY3QuY3BwCShyZXZpc2lvbiAxMTY2NjcpCisrKyBTb3VyY2Uv
SmF2YVNjcmlwdENvcmUvcnVudGltZS9KU0dsb2JhbE9iamVjdC5jcHAJKHdvcmtpbmcgY29weSkK
QEAgLTE0Miw3ICsxNDIsNyBAQCB2b2lkIEpTR2xvYmFsT2JqZWN0Ojppbml0KEpTT2JqZWN0KiB0
aGlzCiAgICAgcmVzZXQocHJvdG90eXBlKCkpOwogfQogCi12b2lkIEpTR2xvYmFsT2JqZWN0Ojpw
dXQoSlNDZWxsKiBjZWxsLCBFeGVjU3RhdGUqIGV4ZWMsIGNvbnN0IElkZW50aWZpZXImIHByb3Bl
cnR5TmFtZSwgSlNWYWx1ZSB2YWx1ZSwgUHV0UHJvcGVydHlTbG90JiBzbG90KQordm9pZCBKU0ds
b2JhbE9iamVjdDo6cHV0KEpTQ2VsbCogY2VsbCwgRXhlY1N0YXRlKiBleGVjLCBQcm9wZXJ0eU5h
bWUgcHJvcGVydHlOYW1lLCBKU1ZhbHVlIHZhbHVlLCBQdXRQcm9wZXJ0eVNsb3QmIHNsb3QpCiB7
CiAgICAgSlNHbG9iYWxPYmplY3QqIHRoaXNPYmplY3QgPSBqc0Nhc3Q8SlNHbG9iYWxPYmplY3Qq
PihjZWxsKTsKICAgICBBU1NFUlQoIUhlYXA6OmhlYXAodmFsdWUpIHx8IEhlYXA6OmhlYXAodmFs
dWUpID09IEhlYXA6OmhlYXAodGhpc09iamVjdCkpOwpAQCAtMTUyLDcgKzE1Miw3IEBAIHZvaWQg
SlNHbG9iYWxPYmplY3Q6OnB1dChKU0NlbGwqIGNlbGwsIEUKICAgICBKU1ZhcmlhYmxlT2JqZWN0
OjpwdXQodGhpc09iamVjdCwgZXhlYywgcHJvcGVydHlOYW1lLCB2YWx1ZSwgc2xvdCk7CiB9CiAK
LXZvaWQgSlNHbG9iYWxPYmplY3Q6OnB1dERpcmVjdFZpcnR1YWwoSlNPYmplY3QqIG9iamVjdCwg
RXhlY1N0YXRlKiBleGVjLCBjb25zdCBJZGVudGlmaWVyJiBwcm9wZXJ0eU5hbWUsIEpTVmFsdWUg
dmFsdWUsIHVuc2lnbmVkIGF0dHJpYnV0ZXMpCit2b2lkIEpTR2xvYmFsT2JqZWN0OjpwdXREaXJl
Y3RWaXJ0dWFsKEpTT2JqZWN0KiBvYmplY3QsIEV4ZWNTdGF0ZSogZXhlYywgUHJvcGVydHlOYW1l
IHByb3BlcnR5TmFtZSwgSlNWYWx1ZSB2YWx1ZSwgdW5zaWduZWQgYXR0cmlidXRlcykKIHsKICAg
ICBKU0dsb2JhbE9iamVjdCogdGhpc09iamVjdCA9IGpzQ2FzdDxKU0dsb2JhbE9iamVjdCo+KG9i
amVjdCk7CiAgICAgQVNTRVJUKCFIZWFwOjpoZWFwKHZhbHVlKSB8fCBIZWFwOjpoZWFwKHZhbHVl
KSA9PSBIZWFwOjpoZWFwKHRoaXNPYmplY3QpKTsKQEAgLTE3MCw3ICsxNzAsNyBAQCB2b2lkIEpT
R2xvYmFsT2JqZWN0OjpwdXREaXJlY3RWaXJ0dWFsKEpTCiAgICAgfQogfQogCi1ib29sIEpTR2xv
YmFsT2JqZWN0OjpkZWZpbmVPd25Qcm9wZXJ0eShKU09iamVjdCogb2JqZWN0LCBFeGVjU3RhdGUq
IGV4ZWMsIGNvbnN0IElkZW50aWZpZXImIHByb3BlcnR5TmFtZSwgUHJvcGVydHlEZXNjcmlwdG9y
JiBkZXNjcmlwdG9yLCBib29sIHNob3VsZFRocm93KQorYm9vbCBKU0dsb2JhbE9iamVjdDo6ZGVm
aW5lT3duUHJvcGVydHkoSlNPYmplY3QqIG9iamVjdCwgRXhlY1N0YXRlKiBleGVjLCBQcm9wZXJ0
eU5hbWUgcHJvcGVydHlOYW1lLCBQcm9wZXJ0eURlc2NyaXB0b3ImIGRlc2NyaXB0b3IsIGJvb2wg
c2hvdWxkVGhyb3cpCiB7CiAgICAgSlNHbG9iYWxPYmplY3QqIHRoaXNPYmplY3QgPSBqc0Nhc3Q8
SlNHbG9iYWxPYmplY3QqPihvYmplY3QpOwogICAgIFByb3BlcnR5U2xvdCBzbG90OwpAQCAtMjA1
LDggKzIwNSw4IEBAIHZvaWQgSlNHbG9iYWxPYmplY3Q6OnJlc2V0KEpTVmFsdWUgcHJvdG8KICAg
ICBtX2FwcGx5RnVuY3Rpb24uc2V0KGV4ZWMtPmdsb2JhbERhdGEoKSwgdGhpcywgYXBwbHlGdW5j
dGlvbik7CiAgICAgbV9vYmplY3RQcm90b3R5cGUuc2V0KGV4ZWMtPmdsb2JhbERhdGEoKSwgdGhp
cywgT2JqZWN0UHJvdG90eXBlOjpjcmVhdGUoZXhlYywgdGhpcywgT2JqZWN0UHJvdG90eXBlOjpj
cmVhdGVTdHJ1Y3R1cmUoZXhlYy0+Z2xvYmFsRGF0YSgpLCB0aGlzLCBqc051bGwoKSkpKTsKICAg
ICBHZXR0ZXJTZXR0ZXIqIHByb3RvQWNjZXNzb3IgPSBHZXR0ZXJTZXR0ZXI6OmNyZWF0ZShleGVj
KTsKLSAgICBwcm90b0FjY2Vzc29yLT5zZXRHZXR0ZXIoZXhlYy0+Z2xvYmFsRGF0YSgpLCBKU0Z1
bmN0aW9uOjpjcmVhdGUoZXhlYywgdGhpcywgMCwgSWRlbnRpZmllcigpLCBnbG9iYWxGdW5jUHJv
dG9HZXR0ZXIpKTsKLSAgICBwcm90b0FjY2Vzc29yLT5zZXRTZXR0ZXIoZXhlYy0+Z2xvYmFsRGF0
YSgpLCBKU0Z1bmN0aW9uOjpjcmVhdGUoZXhlYywgdGhpcywgMCwgSWRlbnRpZmllcigpLCBnbG9i
YWxGdW5jUHJvdG9TZXR0ZXIpKTsKKyAgICBwcm90b0FjY2Vzc29yLT5zZXRHZXR0ZXIoZXhlYy0+
Z2xvYmFsRGF0YSgpLCBKU0Z1bmN0aW9uOjpjcmVhdGUoZXhlYywgdGhpcywgMCwgIiIsIGdsb2Jh
bEZ1bmNQcm90b0dldHRlcikpOworICAgIHByb3RvQWNjZXNzb3ItPnNldFNldHRlcihleGVjLT5n
bG9iYWxEYXRhKCksIEpTRnVuY3Rpb246OmNyZWF0ZShleGVjLCB0aGlzLCAwLCAiIiwgZ2xvYmFs
RnVuY1Byb3RvU2V0dGVyKSk7CiAgICAgbV9vYmplY3RQcm90b3R5cGUtPnB1dERpcmVjdEFjY2Vz
c29yKGV4ZWMtPmdsb2JhbERhdGEoKSwgZXhlYy0+cHJvcGVydHlOYW1lcygpLnVuZGVyc2NvcmVQ
cm90bywgcHJvdG9BY2Nlc3NvciwgQWNjZXNzb3IgfCBEb250RW51bSk7CiAgICAgbV9mdW5jdGlv
blByb3RvdHlwZS0+c3RydWN0dXJlKCktPnNldFByb3RvdHlwZVdpdGhvdXRUcmFuc2l0aW9uKGV4
ZWMtPmdsb2JhbERhdGEoKSwgbV9vYmplY3RQcm90b3R5cGUuZ2V0KCkpOwogCkBAIC0yOTMsNyAr
MjkzLDcgQEAgdm9pZCBKU0dsb2JhbE9iamVjdDo6cmVzZXQoSlNWYWx1ZSBwcm90bwogICAgIHB1
dERpcmVjdFdpdGhvdXRUcmFuc2l0aW9uKGV4ZWMtPmdsb2JhbERhdGEoKSwgSWRlbnRpZmllcihl
eGVjLCAiVHlwZUVycm9yIiksIG1fdHlwZUVycm9yQ29uc3RydWN0b3IuZ2V0KCksIERvbnRFbnVt
KTsKICAgICBwdXREaXJlY3RXaXRob3V0VHJhbnNpdGlvbihleGVjLT5nbG9iYWxEYXRhKCksIElk
ZW50aWZpZXIoZXhlYywgIlVSSUVycm9yIiksIG1fVVJJRXJyb3JDb25zdHJ1Y3Rvci5nZXQoKSwg
RG9udEVudW0pOwogCi0gICAgbV9ldmFsRnVuY3Rpb24uc2V0KGV4ZWMtPmdsb2JhbERhdGEoKSwg
dGhpcywgSlNGdW5jdGlvbjo6Y3JlYXRlKGV4ZWMsIHRoaXMsIDEsIGV4ZWMtPnByb3BlcnR5TmFt
ZXMoKS5ldmFsLCBnbG9iYWxGdW5jRXZhbCkpOworICAgIG1fZXZhbEZ1bmN0aW9uLnNldChleGVj
LT5nbG9iYWxEYXRhKCksIHRoaXMsIEpTRnVuY3Rpb246OmNyZWF0ZShleGVjLCB0aGlzLCAxLCBl
eGVjLT5wcm9wZXJ0eU5hbWVzKCkuZXZhbC51c3RyaW5nKCksIGdsb2JhbEZ1bmNFdmFsKSk7CiAg
ICAgcHV0RGlyZWN0V2l0aG91dFRyYW5zaXRpb24oZXhlYy0+Z2xvYmFsRGF0YSgpLCBleGVjLT5w
cm9wZXJ0eU5hbWVzKCkuZXZhbCwgbV9ldmFsRnVuY3Rpb24uZ2V0KCksIERvbnRFbnVtKTsKIAog
ICAgIHB1dERpcmVjdFdpdGhvdXRUcmFuc2l0aW9uKGV4ZWMtPmdsb2JhbERhdGEoKSwgSWRlbnRp
ZmllcihleGVjLCAiSlNPTiIpLCBKU09OT2JqZWN0OjpjcmVhdGUoZXhlYywgdGhpcywgSlNPTk9i
amVjdDo6Y3JlYXRlU3RydWN0dXJlKGV4ZWMtPmdsb2JhbERhdGEoKSwgdGhpcywgbV9vYmplY3RQ
cm90b3R5cGUuZ2V0KCkpKSwgRG9udEVudW0pOwpAQCAtMzExLDcgKzMxMSw3IEBAIHZvaWQgSlNH
bG9iYWxPYmplY3Q6OnJlc2V0KEpTVmFsdWUgcHJvdG8KIAogdm9pZCBKU0dsb2JhbE9iamVjdDo6
Y3JlYXRlVGhyb3dUeXBlRXJyb3IoRXhlY1N0YXRlKiBleGVjKQogewotICAgIEpTRnVuY3Rpb24q
IHRocm93ZXIgPSBKU0Z1bmN0aW9uOjpjcmVhdGUoZXhlYywgdGhpcywgMCwgSWRlbnRpZmllcigp
LCBnbG9iYWxGdW5jVGhyb3dUeXBlRXJyb3IpOworICAgIEpTRnVuY3Rpb24qIHRocm93ZXIgPSBK
U0Z1bmN0aW9uOjpjcmVhdGUoZXhlYywgdGhpcywgMCwgIiIsIGdsb2JhbEZ1bmNUaHJvd1R5cGVF
cnJvcik7CiAgICAgR2V0dGVyU2V0dGVyKiBnZXR0ZXJTZXR0ZXIgPSBHZXR0ZXJTZXR0ZXI6OmNy
ZWF0ZShleGVjKTsKICAgICBnZXR0ZXJTZXR0ZXItPnNldEdldHRlcihleGVjLT5nbG9iYWxEYXRh
KCksIHRocm93ZXIpOwogICAgIGdldHRlclNldHRlci0+c2V0U2V0dGVyKGV4ZWMtPmdsb2JhbERh
dGEoKSwgdGhyb3dlcik7CkBAIC00MzEsNyArNDMxLDcgQEAgdm9pZCBKU0dsb2JhbE9iamVjdDo6
YWRkU3RhdGljR2xvYmFscyhHbAogICAgIH0KIH0KIAotYm9vbCBKU0dsb2JhbE9iamVjdDo6Z2V0
T3duUHJvcGVydHlTbG90KEpTQ2VsbCogY2VsbCwgRXhlY1N0YXRlKiBleGVjLCBjb25zdCBJZGVu
dGlmaWVyJiBwcm9wZXJ0eU5hbWUsIFByb3BlcnR5U2xvdCYgc2xvdCkKK2Jvb2wgSlNHbG9iYWxP
YmplY3Q6OmdldE93blByb3BlcnR5U2xvdChKU0NlbGwqIGNlbGwsIEV4ZWNTdGF0ZSogZXhlYywg
UHJvcGVydHlOYW1lIHByb3BlcnR5TmFtZSwgUHJvcGVydHlTbG90JiBzbG90KQogewogICAgIEpT
R2xvYmFsT2JqZWN0KiB0aGlzT2JqZWN0ID0ganNDYXN0PEpTR2xvYmFsT2JqZWN0Kj4oY2VsbCk7
CiAgICAgaWYgKGdldFN0YXRpY0Z1bmN0aW9uU2xvdDxKU1ZhcmlhYmxlT2JqZWN0PihleGVjLCBF
eGVjU3RhdGU6Omdsb2JhbE9iamVjdFRhYmxlKGV4ZWMpLCB0aGlzT2JqZWN0LCBwcm9wZXJ0eU5h
bWUsIHNsb3QpKQpAQCAtNDM5LDcgKzQzOSw3IEBAIGJvb2wgSlNHbG9iYWxPYmplY3Q6OmdldE93
blByb3BlcnR5U2xvdCgKICAgICByZXR1cm4gdGhpc09iamVjdC0+c3ltYm9sVGFibGVHZXQocHJv
cGVydHlOYW1lLCBzbG90KTsKIH0KIAotYm9vbCBKU0dsb2JhbE9iamVjdDo6Z2V0T3duUHJvcGVy
dHlEZXNjcmlwdG9yKEpTT2JqZWN0KiBvYmplY3QsIEV4ZWNTdGF0ZSogZXhlYywgY29uc3QgSWRl
bnRpZmllciYgcHJvcGVydHlOYW1lLCBQcm9wZXJ0eURlc2NyaXB0b3ImIGRlc2NyaXB0b3IpCiti
b29sIEpTR2xvYmFsT2JqZWN0OjpnZXRPd25Qcm9wZXJ0eURlc2NyaXB0b3IoSlNPYmplY3QqIG9i
amVjdCwgRXhlY1N0YXRlKiBleGVjLCBQcm9wZXJ0eU5hbWUgcHJvcGVydHlOYW1lLCBQcm9wZXJ0
eURlc2NyaXB0b3ImIGRlc2NyaXB0b3IpCiB7CiAgICAgSlNHbG9iYWxPYmplY3QqIHRoaXNPYmpl
Y3QgPSBqc0Nhc3Q8SlNHbG9iYWxPYmplY3QqPihvYmplY3QpOwogICAgIGlmIChnZXRTdGF0aWNG
dW5jdGlvbkRlc2NyaXB0b3I8SlNWYXJpYWJsZU9iamVjdD4oZXhlYywgRXhlY1N0YXRlOjpnbG9i
YWxPYmplY3RUYWJsZShleGVjKSwgdGhpc09iamVjdCwgcHJvcGVydHlOYW1lLCBkZXNjcmlwdG9y
KSkKSW5kZXg6IFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL0pTR2xvYmFsT2JqZWN0LmgK
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PQotLS0gU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvSlNHbG9iYWxPYmpl
Y3QuaAkocmV2aXNpb24gMTE2NjY3KQorKysgU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUv
SlNHbG9iYWxPYmplY3QuaAkod29ya2luZyBjb3B5KQpAQCAtMTk5LDIwICsxOTksMjAgQEAgbmFt
ZXNwYWNlIEpTQyB7CiAKICAgICAgICAgSlNfRVhQT1JUX1BSSVZBVEUgc3RhdGljIHZvaWQgdmlz
aXRDaGlsZHJlbihKU0NlbGwqLCBTbG90VmlzaXRvciYpOwogCi0gICAgICAgIEpTX0VYUE9SVF9Q
UklWQVRFIHN0YXRpYyBib29sIGdldE93blByb3BlcnR5U2xvdChKU0NlbGwqLCBFeGVjU3RhdGUq
LCBjb25zdCBJZGVudGlmaWVyJiwgUHJvcGVydHlTbG90Jik7Ci0gICAgICAgIEpTX0VYUE9SVF9Q
UklWQVRFIHN0YXRpYyBib29sIGdldE93blByb3BlcnR5RGVzY3JpcHRvcihKU09iamVjdCosIEV4
ZWNTdGF0ZSosIGNvbnN0IElkZW50aWZpZXImLCBQcm9wZXJ0eURlc2NyaXB0b3ImKTsKLSAgICAg
ICAgYm9vbCBoYXNPd25Qcm9wZXJ0eUZvcldyaXRlKEV4ZWNTdGF0ZSosIGNvbnN0IElkZW50aWZp
ZXImKTsKLSAgICAgICAgSlNfRVhQT1JUX1BSSVZBVEUgc3RhdGljIHZvaWQgcHV0KEpTQ2VsbCos
IEV4ZWNTdGF0ZSosIGNvbnN0IElkZW50aWZpZXImLCBKU1ZhbHVlLCBQdXRQcm9wZXJ0eVNsb3Qm
KTsKLQotICAgICAgICBKU19FWFBPUlRfUFJJVkFURSBzdGF0aWMgdm9pZCBwdXREaXJlY3RWaXJ0
dWFsKEpTT2JqZWN0KiwgRXhlY1N0YXRlKiwgY29uc3QgSWRlbnRpZmllciYgcHJvcGVydHlOYW1l
LCBKU1ZhbHVlLCB1bnNpZ25lZCBhdHRyaWJ1dGVzKTsKLQotICAgICAgICBKU19FWFBPUlRfUFJJ
VkFURSBzdGF0aWMgdm9pZCBkZWZpbmVHZXR0ZXIoSlNPYmplY3QqLCBFeGVjU3RhdGUqLCBjb25z
dCBJZGVudGlmaWVyJiBwcm9wZXJ0eU5hbWUsIEpTT2JqZWN0KiBnZXR0ZXJGdW5jLCB1bnNpZ25l
ZCBhdHRyaWJ1dGVzKTsKLSAgICAgICAgSlNfRVhQT1JUX1BSSVZBVEUgc3RhdGljIHZvaWQgZGVm
aW5lU2V0dGVyKEpTT2JqZWN0KiwgRXhlY1N0YXRlKiwgY29uc3QgSWRlbnRpZmllciYgcHJvcGVy
dHlOYW1lLCBKU09iamVjdCogc2V0dGVyRnVuYywgdW5zaWduZWQgYXR0cmlidXRlcyk7Ci0gICAg
ICAgIEpTX0VYUE9SVF9QUklWQVRFIHN0YXRpYyBib29sIGRlZmluZU93blByb3BlcnR5KEpTT2Jq
ZWN0KiwgRXhlY1N0YXRlKiwgY29uc3QgSWRlbnRpZmllciYgcHJvcGVydHlOYW1lLCBQcm9wZXJ0
eURlc2NyaXB0b3ImLCBib29sIHNob3VsZFRocm93KTsKKyAgICAgICAgSlNfRVhQT1JUX1BSSVZB
VEUgc3RhdGljIGJvb2wgZ2V0T3duUHJvcGVydHlTbG90KEpTQ2VsbCosIEV4ZWNTdGF0ZSosIFBy
b3BlcnR5TmFtZSwgUHJvcGVydHlTbG90Jik7CisgICAgICAgIEpTX0VYUE9SVF9QUklWQVRFIHN0
YXRpYyBib29sIGdldE93blByb3BlcnR5RGVzY3JpcHRvcihKU09iamVjdCosIEV4ZWNTdGF0ZSos
IFByb3BlcnR5TmFtZSwgUHJvcGVydHlEZXNjcmlwdG9yJik7CisgICAgICAgIGJvb2wgaGFzT3du
UHJvcGVydHlGb3JXcml0ZShFeGVjU3RhdGUqLCBQcm9wZXJ0eU5hbWUpOworICAgICAgICBKU19F
WFBPUlRfUFJJVkFURSBzdGF0aWMgdm9pZCBwdXQoSlNDZWxsKiwgRXhlY1N0YXRlKiwgUHJvcGVy
dHlOYW1lLCBKU1ZhbHVlLCBQdXRQcm9wZXJ0eVNsb3QmKTsKKworICAgICAgICBKU19FWFBPUlRf
UFJJVkFURSBzdGF0aWMgdm9pZCBwdXREaXJlY3RWaXJ0dWFsKEpTT2JqZWN0KiwgRXhlY1N0YXRl
KiwgUHJvcGVydHlOYW1lIHByb3BlcnR5TmFtZSwgSlNWYWx1ZSwgdW5zaWduZWQgYXR0cmlidXRl
cyk7CisKKyAgICAgICAgSlNfRVhQT1JUX1BSSVZBVEUgc3RhdGljIHZvaWQgZGVmaW5lR2V0dGVy
KEpTT2JqZWN0KiwgRXhlY1N0YXRlKiwgUHJvcGVydHlOYW1lIHByb3BlcnR5TmFtZSwgSlNPYmpl
Y3QqIGdldHRlckZ1bmMsIHVuc2lnbmVkIGF0dHJpYnV0ZXMpOworICAgICAgICBKU19FWFBPUlRf
UFJJVkFURSBzdGF0aWMgdm9pZCBkZWZpbmVTZXR0ZXIoSlNPYmplY3QqLCBFeGVjU3RhdGUqLCBQ
cm9wZXJ0eU5hbWUgcHJvcGVydHlOYW1lLCBKU09iamVjdCogc2V0dGVyRnVuYywgdW5zaWduZWQg
YXR0cmlidXRlcyk7CisgICAgICAgIEpTX0VYUE9SVF9QUklWQVRFIHN0YXRpYyBib29sIGRlZmlu
ZU93blByb3BlcnR5KEpTT2JqZWN0KiwgRXhlY1N0YXRlKiwgUHJvcGVydHlOYW1lIHByb3BlcnR5
TmFtZSwgUHJvcGVydHlEZXNjcmlwdG9yJiwgYm9vbCBzaG91bGRUaHJvdyk7CiAKICAgICAgICAg
Ly8gV2UgdXNlIHRoaXMgaW4gdGhlIGNvZGUgZ2VuZXJhdG9yIGFzIHdlIHBlcmZvcm0gc3ltYm9s
IHRhYmxlCiAgICAgICAgIC8vIGxvb2t1cHMgcHJpb3IgdG8gaW5pdGlhbGl6aW5nIHRoZSBwcm9w
ZXJ0aWVzCi0gICAgICAgIGJvb2wgc3ltYm9sVGFibGVIYXNQcm9wZXJ0eShjb25zdCBJZGVudGlm
aWVyJiBwcm9wZXJ0eU5hbWUpOworICAgICAgICBib29sIHN5bWJvbFRhYmxlSGFzUHJvcGVydHko
UHJvcGVydHlOYW1lIHByb3BlcnR5TmFtZSk7CiAKICAgICAgICAgLy8gVGhlIGZvbGxvd2luZyBh
Y2Nlc3NvcnMgcmV0dXJuIHByaXN0aW5lIHZhbHVlcywgZXZlbiBpZiBhIHNjcmlwdCAKICAgICAg
ICAgLy8gcmVwbGFjZXMgdGhlIGdsb2JhbCBvYmplY3QncyBhc3NvY2lhdGVkIHByb3BlcnR5LgpA
QCAtMzY1LDcgKzM2NSw3IEBAIG5hbWVzcGFjZSBKU0MgewogICAgICAgICBtX3JlZ2lzdGVyQXJy
YXlTaXplID0gY291bnQ7CiAgICAgfQogCi0gICAgaW5saW5lIGJvb2wgSlNHbG9iYWxPYmplY3Q6
Omhhc093blByb3BlcnR5Rm9yV3JpdGUoRXhlY1N0YXRlKiBleGVjLCBjb25zdCBJZGVudGlmaWVy
JiBwcm9wZXJ0eU5hbWUpCisgICAgaW5saW5lIGJvb2wgSlNHbG9iYWxPYmplY3Q6Omhhc093blBy
b3BlcnR5Rm9yV3JpdGUoRXhlY1N0YXRlKiBleGVjLCBQcm9wZXJ0eU5hbWUgcHJvcGVydHlOYW1l
KQogICAgIHsKICAgICAgICAgUHJvcGVydHlTbG90IHNsb3Q7CiAgICAgICAgIGlmIChKU1Zhcmlh
YmxlT2JqZWN0OjpnZXRPd25Qcm9wZXJ0eVNsb3QodGhpcywgZXhlYywgcHJvcGVydHlOYW1lLCBz
bG90KSkKQEAgLTM3NCw3ICszNzQsNyBAQCBuYW1lc3BhY2UgSlNDIHsKICAgICAgICAgcmV0dXJu
IHN5bWJvbFRhYmxlR2V0KHByb3BlcnR5TmFtZSwgc2xvdCwgc2xvdElzV3JpdGVhYmxlKTsKICAg
ICB9CiAKLSAgICBpbmxpbmUgYm9vbCBKU0dsb2JhbE9iamVjdDo6c3ltYm9sVGFibGVIYXNQcm9w
ZXJ0eShjb25zdCBJZGVudGlmaWVyJiBwcm9wZXJ0eU5hbWUpCisgICAgaW5saW5lIGJvb2wgSlNH
bG9iYWxPYmplY3Q6OnN5bWJvbFRhYmxlSGFzUHJvcGVydHkoUHJvcGVydHlOYW1lIHByb3BlcnR5
TmFtZSkKICAgICB7CiAgICAgICAgIFN5bWJvbFRhYmxlRW50cnkgZW50cnkgPSBzeW1ib2xUYWJs
ZSgpLmlubGluZUdldChwcm9wZXJ0eU5hbWUuaW1wbCgpKTsKICAgICAgICAgcmV0dXJuICFlbnRy
eS5pc051bGwoKTsKSW5kZXg6IFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL0pTTm90QW5P
YmplY3QuY3BwCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL0pT
Tm90QW5PYmplY3QuY3BwCShyZXZpc2lvbiAxMTY2NjcpCisrKyBTb3VyY2UvSmF2YVNjcmlwdENv
cmUvcnVudGltZS9KU05vdEFuT2JqZWN0LmNwcAkod29ya2luZyBjb3B5KQpAQCAtNDcsNyArNDcs
NyBAQCBKU1ZhbHVlIEpTTm90QW5PYmplY3Q6OmRlZmF1bHRWYWx1ZShjb25zCiB9CiAKIC8vIEpT
T2JqZWN0IG1ldGhvZHMKLWJvb2wgSlNOb3RBbk9iamVjdDo6Z2V0T3duUHJvcGVydHlTbG90KEpT
Q2VsbCosIEV4ZWNTdGF0ZSogZXhlYywgY29uc3QgSWRlbnRpZmllciYsIFByb3BlcnR5U2xvdCYp
Citib29sIEpTTm90QW5PYmplY3Q6OmdldE93blByb3BlcnR5U2xvdChKU0NlbGwqLCBFeGVjU3Rh
dGUqIGV4ZWMsIFByb3BlcnR5TmFtZSwgUHJvcGVydHlTbG90JikKIHsKICAgICBBU1NFUlRfVU5V
U0VEKGV4ZWMsIGV4ZWMtPmhhZEV4Y2VwdGlvbigpKTsKICAgICByZXR1cm4gZmFsc2U7CkBAIC01
OSwxMyArNTksMTMgQEAgYm9vbCBKU05vdEFuT2JqZWN0OjpnZXRPd25Qcm9wZXJ0eVNsb3RCeQog
ICAgIHJldHVybiBmYWxzZTsKIH0KIAotYm9vbCBKU05vdEFuT2JqZWN0OjpnZXRPd25Qcm9wZXJ0
eURlc2NyaXB0b3IoSlNPYmplY3QqLCBFeGVjU3RhdGUqIGV4ZWMsIGNvbnN0IElkZW50aWZpZXIm
LCBQcm9wZXJ0eURlc2NyaXB0b3ImKQorYm9vbCBKU05vdEFuT2JqZWN0OjpnZXRPd25Qcm9wZXJ0
eURlc2NyaXB0b3IoSlNPYmplY3QqLCBFeGVjU3RhdGUqIGV4ZWMsIFByb3BlcnR5TmFtZSwgUHJv
cGVydHlEZXNjcmlwdG9yJikKIHsKICAgICBBU1NFUlRfVU5VU0VEKGV4ZWMsIGV4ZWMtPmhhZEV4
Y2VwdGlvbigpKTsKICAgICByZXR1cm4gZmFsc2U7CiB9CiAKLXZvaWQgSlNOb3RBbk9iamVjdDo6
cHV0KEpTQ2VsbCosIEV4ZWNTdGF0ZSogZXhlYywgY29uc3QgSWRlbnRpZmllciYgLCBKU1ZhbHVl
LCBQdXRQcm9wZXJ0eVNsb3QmKQordm9pZCBKU05vdEFuT2JqZWN0OjpwdXQoSlNDZWxsKiwgRXhl
Y1N0YXRlKiBleGVjLCBQcm9wZXJ0eU5hbWUgLCBKU1ZhbHVlLCBQdXRQcm9wZXJ0eVNsb3QmKQog
ewogICAgIEFTU0VSVF9VTlVTRUQoZXhlYywgZXhlYy0+aGFkRXhjZXB0aW9uKCkpOwogfQpAQCAt
NzUsNyArNzUsNyBAQCB2b2lkIEpTTm90QW5PYmplY3Q6OnB1dEJ5SW5kZXgoSlNDZWxsKiwgCiAg
ICAgQVNTRVJUX1VOVVNFRChleGVjLCBleGVjLT5oYWRFeGNlcHRpb24oKSk7CiB9CiAKLWJvb2wg
SlNOb3RBbk9iamVjdDo6ZGVsZXRlUHJvcGVydHkoSlNDZWxsKiwgRXhlY1N0YXRlKiBleGVjLCBj
b25zdCBJZGVudGlmaWVyJikKK2Jvb2wgSlNOb3RBbk9iamVjdDo6ZGVsZXRlUHJvcGVydHkoSlND
ZWxsKiwgRXhlY1N0YXRlKiBleGVjLCBQcm9wZXJ0eU5hbWUpCiB7CiAgICAgQVNTRVJUX1VOVVNF
RChleGVjLCBleGVjLT5oYWRFeGNlcHRpb24oKSk7CiAgICAgcmV0dXJuIGZhbHNlOwpJbmRleDog
U291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvSlNOb3RBbk9iamVjdC5oCj09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0K
LS0tIFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL0pTTm90QW5PYmplY3QuaAkocmV2aXNp
b24gMTE2NjY3KQorKysgU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvSlNOb3RBbk9iamVj
dC5oCSh3b3JraW5nIGNvcHkpCkBAIC02OCwxNCArNjgsMTQgQEAgbmFtZXNwYWNlIEpTQyB7CiAg
ICAgICAgIHN0YXRpYyBKU1ZhbHVlIGRlZmF1bHRWYWx1ZShjb25zdCBKU09iamVjdCosIEV4ZWNT
dGF0ZSosIFByZWZlcnJlZFByaW1pdGl2ZVR5cGUpOwogCiAgICAgICAgIC8vIEpTT2JqZWN0IG1l
dGhvZHMKLSAgICAgICAgc3RhdGljIGJvb2wgZ2V0T3duUHJvcGVydHlTbG90KEpTQ2VsbCosIEV4
ZWNTdGF0ZSosIGNvbnN0IElkZW50aWZpZXImIHByb3BlcnR5TmFtZSwgUHJvcGVydHlTbG90Jik7
CisgICAgICAgIHN0YXRpYyBib29sIGdldE93blByb3BlcnR5U2xvdChKU0NlbGwqLCBFeGVjU3Rh
dGUqLCBQcm9wZXJ0eU5hbWUgcHJvcGVydHlOYW1lLCBQcm9wZXJ0eVNsb3QmKTsKICAgICAgICAg
c3RhdGljIGJvb2wgZ2V0T3duUHJvcGVydHlTbG90QnlJbmRleChKU0NlbGwqLCBFeGVjU3RhdGUq
LCB1bnNpZ25lZCBwcm9wZXJ0eU5hbWUsIFByb3BlcnR5U2xvdCYpOwotICAgICAgICBzdGF0aWMg
Ym9vbCBnZXRPd25Qcm9wZXJ0eURlc2NyaXB0b3IoSlNPYmplY3QqLCBFeGVjU3RhdGUqLCBjb25z
dCBJZGVudGlmaWVyJiwgUHJvcGVydHlEZXNjcmlwdG9yJik7CisgICAgICAgIHN0YXRpYyBib29s
IGdldE93blByb3BlcnR5RGVzY3JpcHRvcihKU09iamVjdCosIEV4ZWNTdGF0ZSosIFByb3BlcnR5
TmFtZSwgUHJvcGVydHlEZXNjcmlwdG9yJik7CiAKLSAgICAgICAgc3RhdGljIHZvaWQgcHV0KEpT
Q2VsbCosIEV4ZWNTdGF0ZSosIGNvbnN0IElkZW50aWZpZXImIHByb3BlcnR5TmFtZSwgSlNWYWx1
ZSwgUHV0UHJvcGVydHlTbG90Jik7CisgICAgICAgIHN0YXRpYyB2b2lkIHB1dChKU0NlbGwqLCBF
eGVjU3RhdGUqLCBQcm9wZXJ0eU5hbWUgcHJvcGVydHlOYW1lLCBKU1ZhbHVlLCBQdXRQcm9wZXJ0
eVNsb3QmKTsKICAgICAgICAgc3RhdGljIHZvaWQgcHV0QnlJbmRleChKU0NlbGwqLCBFeGVjU3Rh
dGUqLCB1bnNpZ25lZCBwcm9wZXJ0eU5hbWUsIEpTVmFsdWUsIGJvb2wgc2hvdWxkVGhyb3cpOwog
Ci0gICAgICAgIHN0YXRpYyBib29sIGRlbGV0ZVByb3BlcnR5KEpTQ2VsbCosIEV4ZWNTdGF0ZSos
IGNvbnN0IElkZW50aWZpZXImIHByb3BlcnR5TmFtZSk7CisgICAgICAgIHN0YXRpYyBib29sIGRl
bGV0ZVByb3BlcnR5KEpTQ2VsbCosIEV4ZWNTdGF0ZSosIFByb3BlcnR5TmFtZSBwcm9wZXJ0eU5h
bWUpOwogICAgICAgICBzdGF0aWMgYm9vbCBkZWxldGVQcm9wZXJ0eUJ5SW5kZXgoSlNDZWxsKiwg
RXhlY1N0YXRlKiwgdW5zaWduZWQgcHJvcGVydHlOYW1lKTsKIAogICAgICAgICBzdGF0aWMgdm9p
ZCBnZXRPd25Qcm9wZXJ0eU5hbWVzKEpTT2JqZWN0KiwgRXhlY1N0YXRlKiwgUHJvcGVydHlOYW1l
QXJyYXkmLCBFbnVtZXJhdGlvbk1vZGUpOwpJbmRleDogU291cmNlL0phdmFTY3JpcHRDb3JlL3J1
bnRpbWUvSlNPTk9iamVjdC5jcHAKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL0phdmFTY3JpcHRDb3Jl
L3J1bnRpbWUvSlNPTk9iamVjdC5jcHAJKHJldmlzaW9uIDExNjY2NykKKysrIFNvdXJjZS9KYXZh
U2NyaXB0Q29yZS9ydW50aW1lL0pTT05PYmplY3QuY3BwCSh3b3JraW5nIGNvcHkpCkBAIC01OTUs
MTIgKzU5NSwxMiBAQCBjb25zdCBDbGFzc0luZm8gSlNPTk9iamVjdDo6c19pbmZvID0geyAiCiAK
IC8vIEVDTUEgMTUuOAogCi1ib29sIEpTT05PYmplY3Q6OmdldE93blByb3BlcnR5U2xvdChKU0Nl
bGwqIGNlbGwsIEV4ZWNTdGF0ZSogZXhlYywgY29uc3QgSWRlbnRpZmllciYgcHJvcGVydHlOYW1l
LCBQcm9wZXJ0eVNsb3QmIHNsb3QpCitib29sIEpTT05PYmplY3Q6OmdldE93blByb3BlcnR5U2xv
dChKU0NlbGwqIGNlbGwsIEV4ZWNTdGF0ZSogZXhlYywgUHJvcGVydHlOYW1lIHByb3BlcnR5TmFt
ZSwgUHJvcGVydHlTbG90JiBzbG90KQogewogICAgIHJldHVybiBnZXRTdGF0aWNGdW5jdGlvblNs
b3Q8SlNPYmplY3Q+KGV4ZWMsIEV4ZWNTdGF0ZTo6anNvblRhYmxlKGV4ZWMpLCBqc0Nhc3Q8SlNP
Tk9iamVjdCo+KGNlbGwpLCBwcm9wZXJ0eU5hbWUsIHNsb3QpOwogfQogCi1ib29sIEpTT05PYmpl
Y3Q6OmdldE93blByb3BlcnR5RGVzY3JpcHRvcihKU09iamVjdCogb2JqZWN0LCBFeGVjU3RhdGUq
IGV4ZWMsIGNvbnN0IElkZW50aWZpZXImIHByb3BlcnR5TmFtZSwgUHJvcGVydHlEZXNjcmlwdG9y
JiBkZXNjcmlwdG9yKQorYm9vbCBKU09OT2JqZWN0OjpnZXRPd25Qcm9wZXJ0eURlc2NyaXB0b3Io
SlNPYmplY3QqIG9iamVjdCwgRXhlY1N0YXRlKiBleGVjLCBQcm9wZXJ0eU5hbWUgcHJvcGVydHlO
YW1lLCBQcm9wZXJ0eURlc2NyaXB0b3ImIGRlc2NyaXB0b3IpCiB7CiAgICAgcmV0dXJuIGdldFN0
YXRpY0Z1bmN0aW9uRGVzY3JpcHRvcjxKU09iamVjdD4oZXhlYywgRXhlY1N0YXRlOjpqc29uVGFi
bGUoZXhlYyksIGpzQ2FzdDxKU09OT2JqZWN0Kj4ob2JqZWN0KSwgcHJvcGVydHlOYW1lLCBkZXNj
cmlwdG9yKTsKIH0KSW5kZXg6IFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL0pTT05PYmpl
Y3QuaAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9KU09OT2Jq
ZWN0LmgJKHJldmlzaW9uIDExNjY2NykKKysrIFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1l
L0pTT05PYmplY3QuaAkod29ya2luZyBjb3B5KQpAQCAtNTYsOCArNTYsOCBAQCBuYW1lc3BhY2Ug
SlNDIHsKIAogICAgIHByaXZhdGU6CiAgICAgICAgIEpTT05PYmplY3QoSlNHbG9iYWxPYmplY3Qq
LCBTdHJ1Y3R1cmUqKTsKLSAgICAgICAgc3RhdGljIGJvb2wgZ2V0T3duUHJvcGVydHlTbG90KEpT
Q2VsbCosIEV4ZWNTdGF0ZSosIGNvbnN0IElkZW50aWZpZXImLCBQcm9wZXJ0eVNsb3QmKTsKLSAg
ICAgICAgc3RhdGljIGJvb2wgZ2V0T3duUHJvcGVydHlEZXNjcmlwdG9yKEpTT2JqZWN0KiwgRXhl
Y1N0YXRlKiwgY29uc3QgSWRlbnRpZmllciYsIFByb3BlcnR5RGVzY3JpcHRvciYpOworICAgICAg
ICBzdGF0aWMgYm9vbCBnZXRPd25Qcm9wZXJ0eVNsb3QoSlNDZWxsKiwgRXhlY1N0YXRlKiwgUHJv
cGVydHlOYW1lLCBQcm9wZXJ0eVNsb3QmKTsKKyAgICAgICAgc3RhdGljIGJvb2wgZ2V0T3duUHJv
cGVydHlEZXNjcmlwdG9yKEpTT2JqZWN0KiwgRXhlY1N0YXRlKiwgUHJvcGVydHlOYW1lLCBQcm9w
ZXJ0eURlc2NyaXB0b3ImKTsKIAogICAgIH07CiAKSW5kZXg6IFNvdXJjZS9KYXZhU2NyaXB0Q29y
ZS9ydW50aW1lL0pTT2JqZWN0LmNwcAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvSmF2YVNjcmlwdENv
cmUvcnVudGltZS9KU09iamVjdC5jcHAJKHJldmlzaW9uIDExNjY2NykKKysrIFNvdXJjZS9KYXZh
U2NyaXB0Q29yZS9ydW50aW1lL0pTT2JqZWN0LmNwcAkod29ya2luZyBjb3B5KQpAQCAtMTIwLDcg
KzEyMCw3IEBAIGJvb2wgSlNPYmplY3Q6OmdldE93blByb3BlcnR5U2xvdEJ5SW5kZXgKIH0KIAog
Ly8gRUNNQSA4LjYuMi4yCi12b2lkIEpTT2JqZWN0OjpwdXQoSlNDZWxsKiBjZWxsLCBFeGVjU3Rh
dGUqIGV4ZWMsIGNvbnN0IElkZW50aWZpZXImIHByb3BlcnR5TmFtZSwgSlNWYWx1ZSB2YWx1ZSwg
UHV0UHJvcGVydHlTbG90JiBzbG90KQordm9pZCBKU09iamVjdDo6cHV0KEpTQ2VsbCogY2VsbCwg
RXhlY1N0YXRlKiBleGVjLCBQcm9wZXJ0eU5hbWUgcHJvcGVydHlOYW1lLCBKU1ZhbHVlIHZhbHVl
LCBQdXRQcm9wZXJ0eVNsb3QmIHNsb3QpCiB7CiAgICAgSlNPYmplY3QqIHRoaXNPYmplY3QgPSBq
c0Nhc3Q8SlNPYmplY3QqPihjZWxsKTsKICAgICBBU1NFUlQodmFsdWUpOwpAQCAtMTkyLDcgKzE5
Miw3IEBAIHZvaWQgSlNPYmplY3Q6OnB1dEJ5SW5kZXgoSlNDZWxsKiBjZWxsLCAKICAgICB0aGlz
T2JqZWN0LT5tZXRob2RUYWJsZSgpLT5wdXQodGhpc09iamVjdCwgZXhlYywgSWRlbnRpZmllcjo6
ZnJvbShleGVjLCBwcm9wZXJ0eU5hbWUpLCB2YWx1ZSwgc2xvdCk7CiB9CiAKLXZvaWQgSlNPYmpl
Y3Q6OnB1dERpcmVjdFZpcnR1YWwoSlNPYmplY3QqIG9iamVjdCwgRXhlY1N0YXRlKiBleGVjLCBj
b25zdCBJZGVudGlmaWVyJiBwcm9wZXJ0eU5hbWUsIEpTVmFsdWUgdmFsdWUsIHVuc2lnbmVkIGF0
dHJpYnV0ZXMpCit2b2lkIEpTT2JqZWN0OjpwdXREaXJlY3RWaXJ0dWFsKEpTT2JqZWN0KiBvYmpl
Y3QsIEV4ZWNTdGF0ZSogZXhlYywgUHJvcGVydHlOYW1lIHByb3BlcnR5TmFtZSwgSlNWYWx1ZSB2
YWx1ZSwgdW5zaWduZWQgYXR0cmlidXRlcykKIHsKICAgICBBU1NFUlQoIXZhbHVlLmlzR2V0dGVy
U2V0dGVyKCkgJiYgIShhdHRyaWJ1dGVzICYgQWNjZXNzb3IpKTsKICAgICBQdXRQcm9wZXJ0eVNs
b3Qgc2xvdDsKQEAgLTIyMSw3ICsyMjEsNyBAQCBib29sIEpTT2JqZWN0OjphbGxvd3NBY2Nlc3NG
cm9tKEV4ZWNTdGF0CiAgICAgcmV0dXJuIGdsb2JhbE9iamVjdC0+Z2xvYmFsT2JqZWN0TWV0aG9k
VGFibGUoKS0+YWxsb3dzQWNjZXNzRnJvbShnbG9iYWxPYmplY3QsIGV4ZWMpOwogfQogCi12b2lk
IEpTT2JqZWN0OjpwdXREaXJlY3RBY2Nlc3NvcihKU0dsb2JhbERhdGEmIGdsb2JhbERhdGEsIGNv
bnN0IElkZW50aWZpZXImIHByb3BlcnR5TmFtZSwgSlNWYWx1ZSB2YWx1ZSwgdW5zaWduZWQgYXR0
cmlidXRlcykKK3ZvaWQgSlNPYmplY3Q6OnB1dERpcmVjdEFjY2Vzc29yKEpTR2xvYmFsRGF0YSYg
Z2xvYmFsRGF0YSwgUHJvcGVydHlOYW1lIHByb3BlcnR5TmFtZSwgSlNWYWx1ZSB2YWx1ZSwgdW5z
aWduZWQgYXR0cmlidXRlcykKIHsKICAgICBBU1NFUlQodmFsdWUuaXNHZXR0ZXJTZXR0ZXIoKSAm
JiAoYXR0cmlidXRlcyAmIEFjY2Vzc29yKSk7CiAKQEAgLTI0MCw3ICsyNDAsNyBAQCB2b2lkIEpT
T2JqZWN0OjpwdXREaXJlY3RBY2Nlc3NvcihKU0dsb2JhCiAgICAgc3RydWN0dXJlKCktPnNldEhh
c0dldHRlclNldHRlclByb3BlcnRpZXMocHJvcGVydHlOYW1lID09IGdsb2JhbERhdGEucHJvcGVy
dHlOYW1lcy0+dW5kZXJzY29yZVByb3RvKTsKIH0KIAotYm9vbCBKU09iamVjdDo6aGFzUHJvcGVy
dHkoRXhlY1N0YXRlKiBleGVjLCBjb25zdCBJZGVudGlmaWVyJiBwcm9wZXJ0eU5hbWUpIGNvbnN0
Citib29sIEpTT2JqZWN0OjpoYXNQcm9wZXJ0eShFeGVjU3RhdGUqIGV4ZWMsIFByb3BlcnR5TmFt
ZSBwcm9wZXJ0eU5hbWUpIGNvbnN0CiB7CiAgICAgUHJvcGVydHlTbG90IHNsb3Q7CiAgICAgcmV0
dXJuIGNvbnN0X2Nhc3Q8SlNPYmplY3QqPih0aGlzKS0+Z2V0UHJvcGVydHlTbG90KGV4ZWMsIHBy
b3BlcnR5TmFtZSwgc2xvdCk7CkBAIC0yNTMsNyArMjUzLDcgQEAgYm9vbCBKU09iamVjdDo6aGFz
UHJvcGVydHkoRXhlY1N0YXRlKiBleAogfQogCiAvLyBFQ01BIDguNi4yLjUKLWJvb2wgSlNPYmpl
Y3Q6OmRlbGV0ZVByb3BlcnR5KEpTQ2VsbCogY2VsbCwgRXhlY1N0YXRlKiBleGVjLCBjb25zdCBJ
ZGVudGlmaWVyJiBwcm9wZXJ0eU5hbWUpCitib29sIEpTT2JqZWN0OjpkZWxldGVQcm9wZXJ0eShK
U0NlbGwqIGNlbGwsIEV4ZWNTdGF0ZSogZXhlYywgUHJvcGVydHlOYW1lIHByb3BlcnR5TmFtZSkK
IHsKICAgICBKU09iamVjdCogdGhpc09iamVjdCA9IGpzQ2FzdDxKU09iamVjdCo+KGNlbGwpOwog
CkBAIC0yNzgsNyArMjc4LDcgQEAgYm9vbCBKU09iamVjdDo6ZGVsZXRlUHJvcGVydHkoSlNDZWxs
KiBjZQogICAgIHJldHVybiB0cnVlOwogfQogCi1ib29sIEpTT2JqZWN0OjpoYXNPd25Qcm9wZXJ0
eShFeGVjU3RhdGUqIGV4ZWMsIGNvbnN0IElkZW50aWZpZXImIHByb3BlcnR5TmFtZSkgY29uc3QK
K2Jvb2wgSlNPYmplY3Q6Omhhc093blByb3BlcnR5KEV4ZWNTdGF0ZSogZXhlYywgUHJvcGVydHlO
YW1lIHByb3BlcnR5TmFtZSkgY29uc3QKIHsKICAgICBQcm9wZXJ0eVNsb3Qgc2xvdDsKICAgICBy
ZXR1cm4gY29uc3RfY2FzdDxKU09iamVjdCo+KHRoaXMpLT5tZXRob2RUYWJsZSgpLT5nZXRPd25Q
cm9wZXJ0eVNsb3QoY29uc3RfY2FzdDxKU09iamVjdCo+KHRoaXMpLCBleGVjLCBwcm9wZXJ0eU5h
bWUsIHNsb3QpOwpAQCAtMjkwLDcgKzI5MCw3IEBAIGJvb2wgSlNPYmplY3Q6OmRlbGV0ZVByb3Bl
cnR5QnlJbmRleChKU0MKICAgICByZXR1cm4gdGhpc09iamVjdC0+bWV0aG9kVGFibGUoKS0+ZGVs
ZXRlUHJvcGVydHkodGhpc09iamVjdCwgZXhlYywgSWRlbnRpZmllcjo6ZnJvbShleGVjLCBwcm9w
ZXJ0eU5hbWUpKTsKIH0KIAotc3RhdGljIEFMV0FZU19JTkxJTkUgSlNWYWx1ZSBjYWxsRGVmYXVs
dFZhbHVlRnVuY3Rpb24oRXhlY1N0YXRlKiBleGVjLCBjb25zdCBKU09iamVjdCogb2JqZWN0LCBj
b25zdCBJZGVudGlmaWVyJiBwcm9wZXJ0eU5hbWUpCitzdGF0aWMgQUxXQVlTX0lOTElORSBKU1Zh
bHVlIGNhbGxEZWZhdWx0VmFsdWVGdW5jdGlvbihFeGVjU3RhdGUqIGV4ZWMsIGNvbnN0IEpTT2Jq
ZWN0KiBvYmplY3QsIFByb3BlcnR5TmFtZSBwcm9wZXJ0eU5hbWUpCiB7CiAgICAgSlNWYWx1ZSBm
dW5jdGlvbiA9IG9iamVjdC0+Z2V0KGV4ZWMsIHByb3BlcnR5TmFtZSk7CiAgICAgQ2FsbERhdGEg
Y2FsbERhdGE7CkBAIC0zNDQsNyArMzQ0LDcgQEAgSlNWYWx1ZSBKU09iamVjdDo6ZGVmYXVsdFZh
bHVlKGNvbnN0IEpTTwogICAgIHJldHVybiB0aHJvd0Vycm9yKGV4ZWMsIGNyZWF0ZVR5cGVFcnJv
cihleGVjLCAiTm8gZGVmYXVsdCB2YWx1ZSIpKTsKIH0KIAotY29uc3QgSGFzaEVudHJ5KiBKU09i
amVjdDo6ZmluZFByb3BlcnR5SGFzaEVudHJ5KEV4ZWNTdGF0ZSogZXhlYywgY29uc3QgSWRlbnRp
ZmllciYgcHJvcGVydHlOYW1lKSBjb25zdAorY29uc3QgSGFzaEVudHJ5KiBKU09iamVjdDo6Zmlu
ZFByb3BlcnR5SGFzaEVudHJ5KEV4ZWNTdGF0ZSogZXhlYywgUHJvcGVydHlOYW1lIHByb3BlcnR5
TmFtZSkgY29uc3QKIHsKICAgICBmb3IgKGNvbnN0IENsYXNzSW5mbyogaW5mbyA9IGNsYXNzSW5m
bygpOyBpbmZvOyBpbmZvID0gaW5mby0+cGFyZW50Q2xhc3MpIHsKICAgICAgICAgaWYgKGNvbnN0
IEhhc2hUYWJsZSogcHJvcEhhc2hUYWJsZSA9IGluZm8tPnByb3BIYXNoVGFibGUoZXhlYykpIHsK
QEAgLTM4MSw3ICszODEsNyBAQCBib29sIEpTT2JqZWN0Ojpwcm9wZXJ0eUlzRW51bWVyYWJsZShF
eGVjCiAgICAgcmV0dXJuIGRlc2NyaXB0b3IuZW51bWVyYWJsZSgpOwogfQogCi1ib29sIEpTT2Jq
ZWN0OjpnZXRQcm9wZXJ0eVNwZWNpZmljVmFsdWUoRXhlY1N0YXRlKiBleGVjLCBjb25zdCBJZGVu
dGlmaWVyJiBwcm9wZXJ0eU5hbWUsIEpTQ2VsbComIHNwZWNpZmljVmFsdWUpIGNvbnN0Citib29s
IEpTT2JqZWN0OjpnZXRQcm9wZXJ0eVNwZWNpZmljVmFsdWUoRXhlY1N0YXRlKiBleGVjLCBQcm9w
ZXJ0eU5hbWUgcHJvcGVydHlOYW1lLCBKU0NlbGwqJiBzcGVjaWZpY1ZhbHVlKSBjb25zdAogewog
ICAgIHVuc2lnbmVkIGF0dHJpYnV0ZXM7CiAgICAgaWYgKHN0cnVjdHVyZSgpLT5nZXQoZXhlYy0+
Z2xvYmFsRGF0YSgpLCBwcm9wZXJ0eU5hbWUsIGF0dHJpYnV0ZXMsIHNwZWNpZmljVmFsdWUpICE9
IFdURjo6bm90Rm91bmQpCkBAIC01MTAsNyArNTEwLDcgQEAgdm9pZCBKU09iamVjdDo6cmVpZnlT
dGF0aWNGdW5jdGlvbnNGb3JEZQogICAgIHN0cnVjdHVyZSgpLT5zZXRTdGF0aWNGdW5jdGlvbnNS
ZWlmaWVkKCk7CiB9CiAKLXZvaWQgSlNPYmplY3Q6OnJlbW92ZURpcmVjdChKU0dsb2JhbERhdGEm
IGdsb2JhbERhdGEsIGNvbnN0IElkZW50aWZpZXImIHByb3BlcnR5TmFtZSkKK3ZvaWQgSlNPYmpl
Y3Q6OnJlbW92ZURpcmVjdChKU0dsb2JhbERhdGEmIGdsb2JhbERhdGEsIFByb3BlcnR5TmFtZSBw
cm9wZXJ0eU5hbWUpCiB7CiAgICAgaWYgKHN0cnVjdHVyZSgpLT5nZXQoZ2xvYmFsRGF0YSwgcHJv
cGVydHlOYW1lKSA9PSBXVEY6Om5vdEZvdW5kKQogICAgICAgICByZXR1cm47CkBAIC01ODMsNyAr
NTgzLDcgQEAgdm9pZCBKU09iamVjdDo6YWxsb2NhdGVQcm9wZXJ0eVN0b3JhZ2UoSgogICAgIG1f
cHJvcGVydHlTdG9yYWdlLnNldChnbG9iYWxEYXRhLCB0aGlzLCBuZXdQcm9wZXJ0eVN0b3JhZ2Up
OwogfQogCi1ib29sIEpTT2JqZWN0OjpnZXRPd25Qcm9wZXJ0eURlc2NyaXB0b3IoSlNPYmplY3Qq
IG9iamVjdCwgRXhlY1N0YXRlKiBleGVjLCBjb25zdCBJZGVudGlmaWVyJiBwcm9wZXJ0eU5hbWUs
IFByb3BlcnR5RGVzY3JpcHRvciYgZGVzY3JpcHRvcikKK2Jvb2wgSlNPYmplY3Q6OmdldE93blBy
b3BlcnR5RGVzY3JpcHRvcihKU09iamVjdCogb2JqZWN0LCBFeGVjU3RhdGUqIGV4ZWMsIFByb3Bl
cnR5TmFtZSBwcm9wZXJ0eU5hbWUsIFByb3BlcnR5RGVzY3JpcHRvciYgZGVzY3JpcHRvcikKIHsK
ICAgICB1bnNpZ25lZCBhdHRyaWJ1dGVzID0gMDsKICAgICBKU0NlbGwqIGNlbGwgPSAwOwpAQCAt
NTk0LDcgKzU5NCw3IEBAIGJvb2wgSlNPYmplY3Q6OmdldE93blByb3BlcnR5RGVzY3JpcHRvcigK
ICAgICByZXR1cm4gdHJ1ZTsKIH0KIAotYm9vbCBKU09iamVjdDo6Z2V0UHJvcGVydHlEZXNjcmlw
dG9yKEV4ZWNTdGF0ZSogZXhlYywgY29uc3QgSWRlbnRpZmllciYgcHJvcGVydHlOYW1lLCBQcm9w
ZXJ0eURlc2NyaXB0b3ImIGRlc2NyaXB0b3IpCitib29sIEpTT2JqZWN0OjpnZXRQcm9wZXJ0eURl
c2NyaXB0b3IoRXhlY1N0YXRlKiBleGVjLCBQcm9wZXJ0eU5hbWUgcHJvcGVydHlOYW1lLCBQcm9w
ZXJ0eURlc2NyaXB0b3ImIGRlc2NyaXB0b3IpCiB7CiAgICAgSlNPYmplY3QqIG9iamVjdCA9IHRo
aXM7CiAgICAgd2hpbGUgKHRydWUpIHsKQEAgLTYwNyw3ICs2MDcsNyBAQCBib29sIEpTT2JqZWN0
OjpnZXRQcm9wZXJ0eURlc2NyaXB0b3IoRXhlCiAgICAgfQogfQogCi1zdGF0aWMgYm9vbCBwdXRE
ZXNjcmlwdG9yKEV4ZWNTdGF0ZSogZXhlYywgSlNPYmplY3QqIHRhcmdldCwgY29uc3QgSWRlbnRp
ZmllciYgcHJvcGVydHlOYW1lLCBQcm9wZXJ0eURlc2NyaXB0b3ImIGRlc2NyaXB0b3IsIHVuc2ln
bmVkIGF0dHJpYnV0ZXMsIGNvbnN0IFByb3BlcnR5RGVzY3JpcHRvciYgb2xkRGVzY3JpcHRvcikK
K3N0YXRpYyBib29sIHB1dERlc2NyaXB0b3IoRXhlY1N0YXRlKiBleGVjLCBKU09iamVjdCogdGFy
Z2V0LCBQcm9wZXJ0eU5hbWUgcHJvcGVydHlOYW1lLCBQcm9wZXJ0eURlc2NyaXB0b3ImIGRlc2Ny
aXB0b3IsIHVuc2lnbmVkIGF0dHJpYnV0ZXMsIGNvbnN0IFByb3BlcnR5RGVzY3JpcHRvciYgb2xk
RGVzY3JpcHRvcikKIHsKICAgICBpZiAoZGVzY3JpcHRvci5pc0dlbmVyaWNEZXNjcmlwdG9yKCkg
fHwgZGVzY3JpcHRvci5pc0RhdGFEZXNjcmlwdG9yKCkpIHsKICAgICAgICAgaWYgKGRlc2NyaXB0
b3IuaXNHZW5lcmljRGVzY3JpcHRvcigpICYmIG9sZERlc2NyaXB0b3IuaXNBY2Nlc3NvckRlc2Ny
aXB0b3IoKSkgewpAQCAtNjYyLDcgKzY2Miw3IEBAIHByaXZhdGU6CiAgICAgSlNHbG9iYWxEYXRh
JiBtX2dsb2JhbERhdGE7CiB9OwogCi1ib29sIEpTT2JqZWN0OjpkZWZpbmVPd25Qcm9wZXJ0eShK
U09iamVjdCogb2JqZWN0LCBFeGVjU3RhdGUqIGV4ZWMsIGNvbnN0IElkZW50aWZpZXImIHByb3Bl
cnR5TmFtZSwgUHJvcGVydHlEZXNjcmlwdG9yJiBkZXNjcmlwdG9yLCBib29sIHRocm93RXhjZXB0
aW9uKQorYm9vbCBKU09iamVjdDo6ZGVmaW5lT3duUHJvcGVydHkoSlNPYmplY3QqIG9iamVjdCwg
RXhlY1N0YXRlKiBleGVjLCBQcm9wZXJ0eU5hbWUgcHJvcGVydHlOYW1lLCBQcm9wZXJ0eURlc2Ny
aXB0b3ImIGRlc2NyaXB0b3IsIGJvb2wgdGhyb3dFeGNlcHRpb24pCiB7CiAgICAgLy8gVHJhY2sg
b24gdGhlIGdsb2JhbGRhdGEgdGhhdCB3ZSdyZSBpbiBkZWZpbmUgcHJvcGVydHkuCiAgICAgLy8g
Q3VycmVudGx5IERlZmluZU93blByb3BlcnR5IHVzZXMgZGVsZXRlIHRvIHJlbW92ZSBwcm9wZXJ0
aWVzIHdoZW4gdGhleSBhcmUgYmVpbmcgcmVwbGFjZWQKSW5kZXg6IFNvdXJjZS9KYXZhU2NyaXB0
Q29yZS9ydW50aW1lL0pTT2JqZWN0LmgKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL0phdmFTY3JpcHRD
b3JlL3J1bnRpbWUvSlNPYmplY3QuaAkocmV2aXNpb24gMTE2NjY3KQorKysgU291cmNlL0phdmFT
Y3JpcHRDb3JlL3J1bnRpbWUvSlNPYmplY3QuaAkod29ya2luZyBjb3B5KQpAQCAtNzUsNyArNzUs
NyBAQCBuYW1lc3BhY2UgSlNDIHsKICAgICAgICAgZnJpZW5kIGNsYXNzIEpJVDsKICAgICAgICAg
ZnJpZW5kIGNsYXNzIEpTQ2VsbDsKICAgICAgICAgZnJpZW5kIGNsYXNzIE1hcmtlZEJsb2NrOwot
ICAgICAgICBKU19FWFBPUlRfUFJJVkFURSBmcmllbmQgYm9vbCBzZXRVcFN0YXRpY0Z1bmN0aW9u
U2xvdChFeGVjU3RhdGUqIGV4ZWMsIGNvbnN0IEhhc2hFbnRyeSogZW50cnksIEpTT2JqZWN0KiB0
aGlzT2JqLCBjb25zdCBJZGVudGlmaWVyJiBwcm9wZXJ0eU5hbWUsIFByb3BlcnR5U2xvdCYgc2xv
dCk7CisgICAgICAgIEpTX0VYUE9SVF9QUklWQVRFIGZyaWVuZCBib29sIHNldFVwU3RhdGljRnVu
Y3Rpb25TbG90KEV4ZWNTdGF0ZSogZXhlYywgY29uc3QgSGFzaEVudHJ5KiBlbnRyeSwgSlNPYmpl
Y3QqIHRoaXNPYmosIFByb3BlcnR5TmFtZSBwcm9wZXJ0eU5hbWUsIFByb3BlcnR5U2xvdCYgc2xv
dCk7CiAKICAgICAgICAgZW51bSBQdXRNb2RlIHsKICAgICAgICAgICAgIFB1dE1vZGVQdXQsCkBA
IC05NSwzOSArOTUsMzkgQEAgbmFtZXNwYWNlIEpTQyB7CiAgICAgICAgIAogICAgICAgICBTdHJ1
Y3R1cmUqIGluaGVyaXRvcklEKEpTR2xvYmFsRGF0YSYpOwogCi0gICAgICAgIEpTVmFsdWUgZ2V0
KEV4ZWNTdGF0ZSosIGNvbnN0IElkZW50aWZpZXImIHByb3BlcnR5TmFtZSkgY29uc3Q7CisgICAg
ICAgIEpTVmFsdWUgZ2V0KEV4ZWNTdGF0ZSosIFByb3BlcnR5TmFtZSBwcm9wZXJ0eU5hbWUpIGNv
bnN0OwogICAgICAgICBKU1ZhbHVlIGdldChFeGVjU3RhdGUqLCB1bnNpZ25lZCBwcm9wZXJ0eU5h
bWUpIGNvbnN0OwogCi0gICAgICAgIGJvb2wgZ2V0UHJvcGVydHlTbG90KEV4ZWNTdGF0ZSosIGNv
bnN0IElkZW50aWZpZXImIHByb3BlcnR5TmFtZSwgUHJvcGVydHlTbG90Jik7CisgICAgICAgIGJv
b2wgZ2V0UHJvcGVydHlTbG90KEV4ZWNTdGF0ZSosIFByb3BlcnR5TmFtZSBwcm9wZXJ0eU5hbWUs
IFByb3BlcnR5U2xvdCYpOwogICAgICAgICBib29sIGdldFByb3BlcnR5U2xvdChFeGVjU3RhdGUq
LCB1bnNpZ25lZCBwcm9wZXJ0eU5hbWUsIFByb3BlcnR5U2xvdCYpOwotICAgICAgICBKU19FWFBP
UlRfUFJJVkFURSBib29sIGdldFByb3BlcnR5RGVzY3JpcHRvcihFeGVjU3RhdGUqLCBjb25zdCBJ
ZGVudGlmaWVyJiBwcm9wZXJ0eU5hbWUsIFByb3BlcnR5RGVzY3JpcHRvciYpOworICAgICAgICBK
U19FWFBPUlRfUFJJVkFURSBib29sIGdldFByb3BlcnR5RGVzY3JpcHRvcihFeGVjU3RhdGUqLCBQ
cm9wZXJ0eU5hbWUgcHJvcGVydHlOYW1lLCBQcm9wZXJ0eURlc2NyaXB0b3ImKTsKIAotICAgICAg
ICBzdGF0aWMgYm9vbCBnZXRPd25Qcm9wZXJ0eVNsb3QoSlNDZWxsKiwgRXhlY1N0YXRlKiwgY29u
c3QgSWRlbnRpZmllciYgcHJvcGVydHlOYW1lLCBQcm9wZXJ0eVNsb3QmKTsKKyAgICAgICAgc3Rh
dGljIGJvb2wgZ2V0T3duUHJvcGVydHlTbG90KEpTQ2VsbCosIEV4ZWNTdGF0ZSosIFByb3BlcnR5
TmFtZSBwcm9wZXJ0eU5hbWUsIFByb3BlcnR5U2xvdCYpOwogICAgICAgICBKU19FWFBPUlRfUFJJ
VkFURSBzdGF0aWMgYm9vbCBnZXRPd25Qcm9wZXJ0eVNsb3RCeUluZGV4KEpTQ2VsbCosIEV4ZWNT
dGF0ZSosIHVuc2lnbmVkIHByb3BlcnR5TmFtZSwgUHJvcGVydHlTbG90Jik7Ci0gICAgICAgIEpT
X0VYUE9SVF9QUklWQVRFIHN0YXRpYyBib29sIGdldE93blByb3BlcnR5RGVzY3JpcHRvcihKU09i
amVjdCosIEV4ZWNTdGF0ZSosIGNvbnN0IElkZW50aWZpZXImLCBQcm9wZXJ0eURlc2NyaXB0b3Im
KTsKKyAgICAgICAgSlNfRVhQT1JUX1BSSVZBVEUgc3RhdGljIGJvb2wgZ2V0T3duUHJvcGVydHlE
ZXNjcmlwdG9yKEpTT2JqZWN0KiwgRXhlY1N0YXRlKiwgUHJvcGVydHlOYW1lLCBQcm9wZXJ0eURl
c2NyaXB0b3ImKTsKIAogICAgICAgICBib29sIGFsbG93c0FjY2Vzc0Zyb20oRXhlY1N0YXRlKik7
CiAKLSAgICAgICAgSlNfRVhQT1JUX1BSSVZBVEUgc3RhdGljIHZvaWQgcHV0KEpTQ2VsbCosIEV4
ZWNTdGF0ZSosIGNvbnN0IElkZW50aWZpZXImIHByb3BlcnR5TmFtZSwgSlNWYWx1ZSwgUHV0UHJv
cGVydHlTbG90Jik7CisgICAgICAgIEpTX0VYUE9SVF9QUklWQVRFIHN0YXRpYyB2b2lkIHB1dChK
U0NlbGwqLCBFeGVjU3RhdGUqLCBQcm9wZXJ0eU5hbWUgcHJvcGVydHlOYW1lLCBKU1ZhbHVlLCBQ
dXRQcm9wZXJ0eVNsb3QmKTsKICAgICAgICAgSlNfRVhQT1JUX1BSSVZBVEUgc3RhdGljIHZvaWQg
cHV0QnlJbmRleChKU0NlbGwqLCBFeGVjU3RhdGUqLCB1bnNpZ25lZCBwcm9wZXJ0eU5hbWUsIEpT
VmFsdWUsIGJvb2wgc2hvdWxkVGhyb3cpOwogCiAgICAgICAgIC8vIHB1dERpcmVjdCBpcyBlZmZl
Y3RpdmVseSBhbiB1bmNoZWNrZWQgdmVzaW9uIG9mICdkZWZpbmVPd25Qcm9wZXJ0eSc6CiAgICAg
ICAgIC8vICAtIHRoZSBwcm90b3R5cGUgY2hhaW4gaXMgbm90IGNvbnN1bHRlZAogICAgICAgICAv
LyAgLSBhY2Nlc3NvcnMgYXJlIG5vdCBjYWxsZWQuCiAgICAgICAgIC8vICAtIGF0dHJpYnV0ZXMg
d2lsbCBiZSByZXNwZWN0ZWQgKGFmdGVyIHRoZSBjYWxsIHRoZSBwcm9wZXJ0eSB3aWxsIGV4aXN0
IHdpdGggdGhlIGdpdmVuIGF0dHJpYnV0ZXMpCi0gICAgICAgIEpTX0VYUE9SVF9QUklWQVRFIHN0
YXRpYyB2b2lkIHB1dERpcmVjdFZpcnR1YWwoSlNPYmplY3QqLCBFeGVjU3RhdGUqLCBjb25zdCBJ
ZGVudGlmaWVyJiBwcm9wZXJ0eU5hbWUsIEpTVmFsdWUsIHVuc2lnbmVkIGF0dHJpYnV0ZXMpOwot
ICAgICAgICB2b2lkIHB1dERpcmVjdChKU0dsb2JhbERhdGEmLCBjb25zdCBJZGVudGlmaWVyJiBw
cm9wZXJ0eU5hbWUsIEpTVmFsdWUsIHVuc2lnbmVkIGF0dHJpYnV0ZXMgPSAwKTsKLSAgICAgICAg
dm9pZCBwdXREaXJlY3QoSlNHbG9iYWxEYXRhJiwgY29uc3QgSWRlbnRpZmllciYgcHJvcGVydHlO
YW1lLCBKU1ZhbHVlLCBQdXRQcm9wZXJ0eVNsb3QmKTsKLSAgICAgICAgdm9pZCBwdXREaXJlY3RX
aXRob3V0VHJhbnNpdGlvbihKU0dsb2JhbERhdGEmLCBjb25zdCBJZGVudGlmaWVyJiBwcm9wZXJ0
eU5hbWUsIEpTVmFsdWUsIHVuc2lnbmVkIGF0dHJpYnV0ZXMgPSAwKTsKLSAgICAgICAgdm9pZCBw
dXREaXJlY3RBY2Nlc3NvcihKU0dsb2JhbERhdGEmLCBjb25zdCBJZGVudGlmaWVyJiBwcm9wZXJ0
eU5hbWUsIEpTVmFsdWUsIHVuc2lnbmVkIGF0dHJpYnV0ZXMpOworICAgICAgICBKU19FWFBPUlRf
UFJJVkFURSBzdGF0aWMgdm9pZCBwdXREaXJlY3RWaXJ0dWFsKEpTT2JqZWN0KiwgRXhlY1N0YXRl
KiwgUHJvcGVydHlOYW1lIHByb3BlcnR5TmFtZSwgSlNWYWx1ZSwgdW5zaWduZWQgYXR0cmlidXRl
cyk7CisgICAgICAgIHZvaWQgcHV0RGlyZWN0KEpTR2xvYmFsRGF0YSYsIFByb3BlcnR5TmFtZSBw
cm9wZXJ0eU5hbWUsIEpTVmFsdWUsIHVuc2lnbmVkIGF0dHJpYnV0ZXMgPSAwKTsKKyAgICAgICAg
dm9pZCBwdXREaXJlY3QoSlNHbG9iYWxEYXRhJiwgUHJvcGVydHlOYW1lIHByb3BlcnR5TmFtZSwg
SlNWYWx1ZSwgUHV0UHJvcGVydHlTbG90Jik7CisgICAgICAgIHZvaWQgcHV0RGlyZWN0V2l0aG91
dFRyYW5zaXRpb24oSlNHbG9iYWxEYXRhJiwgUHJvcGVydHlOYW1lIHByb3BlcnR5TmFtZSwgSlNW
YWx1ZSwgdW5zaWduZWQgYXR0cmlidXRlcyA9IDApOworICAgICAgICB2b2lkIHB1dERpcmVjdEFj
Y2Vzc29yKEpTR2xvYmFsRGF0YSYsIFByb3BlcnR5TmFtZSBwcm9wZXJ0eU5hbWUsIEpTVmFsdWUs
IHVuc2lnbmVkIGF0dHJpYnV0ZXMpOwogCiAgICAgICAgIGJvb2wgcHJvcGVydHlJc0VudW1lcmFi
bGUoRXhlY1N0YXRlKiwgY29uc3QgSWRlbnRpZmllciYgcHJvcGVydHlOYW1lKSBjb25zdDsKIAot
ICAgICAgICBKU19FWFBPUlRfUFJJVkFURSBib29sIGhhc1Byb3BlcnR5KEV4ZWNTdGF0ZSosIGNv
bnN0IElkZW50aWZpZXImIHByb3BlcnR5TmFtZSkgY29uc3Q7CisgICAgICAgIEpTX0VYUE9SVF9Q
UklWQVRFIGJvb2wgaGFzUHJvcGVydHkoRXhlY1N0YXRlKiwgUHJvcGVydHlOYW1lIHByb3BlcnR5
TmFtZSkgY29uc3Q7CiAgICAgICAgIEpTX0VYUE9SVF9QUklWQVRFIGJvb2wgaGFzUHJvcGVydHko
RXhlY1N0YXRlKiwgdW5zaWduZWQgcHJvcGVydHlOYW1lKSBjb25zdDsKLSAgICAgICAgYm9vbCBo
YXNPd25Qcm9wZXJ0eShFeGVjU3RhdGUqLCBjb25zdCBJZGVudGlmaWVyJiBwcm9wZXJ0eU5hbWUp
IGNvbnN0OworICAgICAgICBib29sIGhhc093blByb3BlcnR5KEV4ZWNTdGF0ZSosIFByb3BlcnR5
TmFtZSBwcm9wZXJ0eU5hbWUpIGNvbnN0OwogCi0gICAgICAgIEpTX0VYUE9SVF9QUklWQVRFIHN0
YXRpYyBib29sIGRlbGV0ZVByb3BlcnR5KEpTQ2VsbCosIEV4ZWNTdGF0ZSosIGNvbnN0IElkZW50
aWZpZXImIHByb3BlcnR5TmFtZSk7CisgICAgICAgIEpTX0VYUE9SVF9QUklWQVRFIHN0YXRpYyBi
b29sIGRlbGV0ZVByb3BlcnR5KEpTQ2VsbCosIEV4ZWNTdGF0ZSosIFByb3BlcnR5TmFtZSBwcm9w
ZXJ0eU5hbWUpOwogICAgICAgICBKU19FWFBPUlRfUFJJVkFURSBzdGF0aWMgYm9vbCBkZWxldGVQ
cm9wZXJ0eUJ5SW5kZXgoSlNDZWxsKiwgRXhlY1N0YXRlKiwgdW5zaWduZWQgcHJvcGVydHlOYW1l
KTsKIAogICAgICAgICBKU19FWFBPUlRfUFJJVkFURSBzdGF0aWMgSlNWYWx1ZSBkZWZhdWx0VmFs
dWUoY29uc3QgSlNPYmplY3QqLCBFeGVjU3RhdGUqLCBQcmVmZXJyZWRQcmltaXRpdmVUeXBlKTsK
QEAgLTE0OCwyMiArMTQ4LDIyIEBAIG5hbWVzcGFjZSBKU0MgewogICAgICAgICBKU19FWFBPUlRf
UFJJVkFURSBzdGF0aWMgSlNPYmplY3QqIHRvVGhpc09iamVjdChKU0NlbGwqLCBFeGVjU3RhdGUq
KTsKICAgICAgICAgSlNPYmplY3QqIHVud3JhcHBlZE9iamVjdCgpOwogCi0gICAgICAgIGJvb2wg
Z2V0UHJvcGVydHlTcGVjaWZpY1ZhbHVlKEV4ZWNTdGF0ZSogZXhlYywgY29uc3QgSWRlbnRpZmll
ciYgcHJvcGVydHlOYW1lLCBKU0NlbGwqJiBzcGVjaWZpY0Z1bmN0aW9uKSBjb25zdDsKKyAgICAg
ICAgYm9vbCBnZXRQcm9wZXJ0eVNwZWNpZmljVmFsdWUoRXhlY1N0YXRlKiBleGVjLCBQcm9wZXJ0
eU5hbWUgcHJvcGVydHlOYW1lLCBKU0NlbGwqJiBzcGVjaWZpY0Z1bmN0aW9uKSBjb25zdDsKIAog
ICAgICAgICAvLyBUaGlzIGdldCBmdW5jdGlvbiBvbmx5IGxvb2tzIGF0IHRoZSBwcm9wZXJ0eSBt
YXAuCi0gICAgICAgIEpTVmFsdWUgZ2V0RGlyZWN0KEpTR2xvYmFsRGF0YSYgZ2xvYmFsRGF0YSwg
Y29uc3QgSWRlbnRpZmllciYgcHJvcGVydHlOYW1lKSBjb25zdAorICAgICAgICBKU1ZhbHVlIGdl
dERpcmVjdChKU0dsb2JhbERhdGEmIGdsb2JhbERhdGEsIFByb3BlcnR5TmFtZSBwcm9wZXJ0eU5h
bWUpIGNvbnN0CiAgICAgICAgIHsKICAgICAgICAgICAgIHNpemVfdCBvZmZzZXQgPSBzdHJ1Y3R1
cmUoKS0+Z2V0KGdsb2JhbERhdGEsIHByb3BlcnR5TmFtZSk7CiAgICAgICAgICAgICByZXR1cm4g
b2Zmc2V0ICE9IFdURjo6bm90Rm91bmQgPyBnZXREaXJlY3RPZmZzZXQob2Zmc2V0KSA6IEpTVmFs
dWUoKTsKICAgICAgICAgfQogCi0gICAgICAgIFdyaXRlQmFycmllckJhc2U8VW5rbm93bj4qIGdl
dERpcmVjdExvY2F0aW9uKEpTR2xvYmFsRGF0YSYgZ2xvYmFsRGF0YSwgY29uc3QgSWRlbnRpZmll
ciYgcHJvcGVydHlOYW1lKQorICAgICAgICBXcml0ZUJhcnJpZXJCYXNlPFVua25vd24+KiBnZXRE
aXJlY3RMb2NhdGlvbihKU0dsb2JhbERhdGEmIGdsb2JhbERhdGEsIFByb3BlcnR5TmFtZSBwcm9w
ZXJ0eU5hbWUpCiAgICAgICAgIHsKICAgICAgICAgICAgIHNpemVfdCBvZmZzZXQgPSBzdHJ1Y3R1
cmUoKS0+Z2V0KGdsb2JhbERhdGEsIHByb3BlcnR5TmFtZSk7CiAgICAgICAgICAgICByZXR1cm4g
b2Zmc2V0ICE9IFdURjo6bm90Rm91bmQgPyBsb2NhdGlvbkZvck9mZnNldChvZmZzZXQpIDogMDsK
ICAgICAgICAgfQogCi0gICAgICAgIFdyaXRlQmFycmllckJhc2U8VW5rbm93bj4qIGdldERpcmVj
dExvY2F0aW9uKEpTR2xvYmFsRGF0YSYgZ2xvYmFsRGF0YSwgY29uc3QgSWRlbnRpZmllciYgcHJv
cGVydHlOYW1lLCB1bnNpZ25lZCYgYXR0cmlidXRlcykKKyAgICAgICAgV3JpdGVCYXJyaWVyQmFz
ZTxVbmtub3duPiogZ2V0RGlyZWN0TG9jYXRpb24oSlNHbG9iYWxEYXRhJiBnbG9iYWxEYXRhLCBQ
cm9wZXJ0eU5hbWUgcHJvcGVydHlOYW1lLCB1bnNpZ25lZCYgYXR0cmlidXRlcykKICAgICAgICAg
ewogICAgICAgICAgICAgSlNDZWxsKiBzcGVjaWZpY0Z1bmN0aW9uOwogICAgICAgICAgICAgc2l6
ZV90IG9mZnNldCA9IHN0cnVjdHVyZSgpLT5nZXQoZ2xvYmFsRGF0YSwgcHJvcGVydHlOYW1lLCBh
dHRyaWJ1dGVzLCBzcGVjaWZpY0Z1bmN0aW9uKTsKQEAgLTE3Nyw3ICsxNzcsNyBAQCBuYW1lc3Bh
Y2UgSlNDIHsKIAogICAgICAgICB2b2lkIHRyYW5zaXRpb25UbyhKU0dsb2JhbERhdGEmLCBTdHJ1
Y3R1cmUqKTsKIAotICAgICAgICB2b2lkIHJlbW92ZURpcmVjdChKU0dsb2JhbERhdGEmLCBjb25z
dCBJZGVudGlmaWVyJiBwcm9wZXJ0eU5hbWUpOworICAgICAgICB2b2lkIHJlbW92ZURpcmVjdChK
U0dsb2JhbERhdGEmLCBQcm9wZXJ0eU5hbWUgcHJvcGVydHlOYW1lKTsKICAgICAgICAgYm9vbCBo
YXNDdXN0b21Qcm9wZXJ0aWVzKCkgeyByZXR1cm4gc3RydWN0dXJlKCktPmRpZFRyYW5zaXRpb24o
KTsgfQogICAgICAgICBib29sIGhhc0dldHRlclNldHRlclByb3BlcnRpZXMoKSB7IHJldHVybiBz
dHJ1Y3R1cmUoKS0+aGFzR2V0dGVyU2V0dGVyUHJvcGVydGllcygpOyB9CiAKQEAgLTE4NiwxNCAr
MTg2LDE0IEBAIG5hbWVzcGFjZSBKU0MgewogICAgICAgICAvLyAgLSBwcm92aWRlcyBubyBzcGVj
aWFsIGhhbmRsaW5nIGZvciBfX3Byb3RvX18KICAgICAgICAgLy8gIC0gZG9lcyBub3Qgd2FsayB0
aGUgcHJvdG90eXBlIGNoYWluICh0byBjaGVjayBmb3IgYWNjZXNzb3JzIG9yIG5vbi13cml0YWJs
ZSBwcm9wZXJ0aWVzKS4KICAgICAgICAgLy8gVGhpcyBpcyB1c2VkIGJ5IEpTQWN0aXZhdGlvbi4K
LSAgICAgICAgYm9vbCBwdXRPd25EYXRhUHJvcGVydHkoSlNHbG9iYWxEYXRhJiwgY29uc3QgSWRl
bnRpZmllciYgcHJvcGVydHlOYW1lLCBKU1ZhbHVlLCBQdXRQcm9wZXJ0eVNsb3QmKTsKKyAgICAg
ICAgYm9vbCBwdXRPd25EYXRhUHJvcGVydHkoSlNHbG9iYWxEYXRhJiwgUHJvcGVydHlOYW1lIHBy
b3BlcnR5TmFtZSwgSlNWYWx1ZSwgUHV0UHJvcGVydHlTbG90Jik7CiAKICAgICAgICAgLy8gRmFz
dCBhY2Nlc3MgdG8ga25vd24gcHJvcGVydHkgb2Zmc2V0cy4KICAgICAgICAgSlNWYWx1ZSBnZXRE
aXJlY3RPZmZzZXQoc2l6ZV90IG9mZnNldCkgY29uc3QgeyByZXR1cm4gcHJvcGVydHlTdG9yYWdl
KClbb2Zmc2V0XS5nZXQoKTsgfQogICAgICAgICB2b2lkIHB1dERpcmVjdE9mZnNldChKU0dsb2Jh
bERhdGEmIGdsb2JhbERhdGEsIHNpemVfdCBvZmZzZXQsIEpTVmFsdWUgdmFsdWUpIHsgcHJvcGVy
dHlTdG9yYWdlKClbb2Zmc2V0XS5zZXQoZ2xvYmFsRGF0YSwgdGhpcywgdmFsdWUpOyB9CiAgICAg
ICAgIHZvaWQgcHV0VW5kZWZpbmVkQXREaXJlY3RPZmZzZXQoc2l6ZV90IG9mZnNldCkgeyBwcm9w
ZXJ0eVN0b3JhZ2UoKVtvZmZzZXRdLnNldFVuZGVmaW5lZCgpOyB9CiAKLSAgICAgICAgSlNfRVhQ
T1JUX1BSSVZBVEUgc3RhdGljIGJvb2wgZGVmaW5lT3duUHJvcGVydHkoSlNPYmplY3QqLCBFeGVj
U3RhdGUqLCBjb25zdCBJZGVudGlmaWVyJiBwcm9wZXJ0eU5hbWUsIFByb3BlcnR5RGVzY3JpcHRv
ciYsIGJvb2wgc2hvdWxkVGhyb3cpOworICAgICAgICBKU19FWFBPUlRfUFJJVkFURSBzdGF0aWMg
Ym9vbCBkZWZpbmVPd25Qcm9wZXJ0eShKU09iamVjdCosIEV4ZWNTdGF0ZSosIFByb3BlcnR5TmFt
ZSBwcm9wZXJ0eU5hbWUsIFByb3BlcnR5RGVzY3JpcHRvciYsIGJvb2wgc2hvdWxkVGhyb3cpOwog
CiAgICAgICAgIGJvb2wgaXNHbG9iYWxPYmplY3QoKSBjb25zdDsKICAgICAgICAgYm9vbCBpc1Zh
cmlhYmxlT2JqZWN0KCkgY29uc3Q7CkBAIC0yOTQsMTIgKzI5NCwxMiBAQCBuYW1lc3BhY2UgSlND
IHsKICAgICAgICAgfQogCiAgICAgICAgIHRlbXBsYXRlPFB1dE1vZGU+Ci0gICAgICAgIGJvb2wg
cHV0RGlyZWN0SW50ZXJuYWwoSlNHbG9iYWxEYXRhJiwgY29uc3QgSWRlbnRpZmllciYgcHJvcGVy
dHlOYW1lLCBKU1ZhbHVlLCB1bnNpZ25lZCBhdHRyLCBQdXRQcm9wZXJ0eVNsb3QmLCBKU0NlbGwq
KTsKKyAgICAgICAgYm9vbCBwdXREaXJlY3RJbnRlcm5hbChKU0dsb2JhbERhdGEmLCBQcm9wZXJ0
eU5hbWUgcHJvcGVydHlOYW1lLCBKU1ZhbHVlLCB1bnNpZ25lZCBhdHRyLCBQdXRQcm9wZXJ0eVNs
b3QmLCBKU0NlbGwqKTsKIAotICAgICAgICBib29sIGlubGluZUdldE93blByb3BlcnR5U2xvdChF
eGVjU3RhdGUqLCBjb25zdCBJZGVudGlmaWVyJiBwcm9wZXJ0eU5hbWUsIFByb3BlcnR5U2xvdCYp
OworICAgICAgICBib29sIGlubGluZUdldE93blByb3BlcnR5U2xvdChFeGVjU3RhdGUqLCBQcm9w
ZXJ0eU5hbWUgcHJvcGVydHlOYW1lLCBQcm9wZXJ0eVNsb3QmKTsKICAgICAgICAgSlNfRVhQT1JU
X1BSSVZBVEUgdm9pZCBmaWxsR2V0dGVyUHJvcGVydHlTbG90KFByb3BlcnR5U2xvdCYsIFdyaXRl
QmFycmllckJhc2U8VW5rbm93bj4qIGxvY2F0aW9uKTsKIAotICAgICAgICBjb25zdCBIYXNoRW50
cnkqIGZpbmRQcm9wZXJ0eUhhc2hFbnRyeShFeGVjU3RhdGUqLCBjb25zdCBJZGVudGlmaWVyJiBw
cm9wZXJ0eU5hbWUpIGNvbnN0OworICAgICAgICBjb25zdCBIYXNoRW50cnkqIGZpbmRQcm9wZXJ0
eUhhc2hFbnRyeShFeGVjU3RhdGUqLCBQcm9wZXJ0eU5hbWUgcHJvcGVydHlOYW1lKSBjb25zdDsK
ICAgICAgICAgU3RydWN0dXJlKiBjcmVhdGVJbmhlcml0b3JJRChKU0dsb2JhbERhdGEmKTsKIAog
ICAgICAgICBTdG9yYWdlQmFycmllciBtX3Byb3BlcnR5U3RvcmFnZTsKQEAgLTUzOSw3ICs1Mzks
NyBAQCBpbmxpbmUgSlNPYmplY3QqIEpTVmFsdWU6OnRvVGhpc09iamVjdChFCiAgICAgcmV0dXJu
IGlzQ2VsbCgpID8gYXNDZWxsKCktPm1ldGhvZFRhYmxlKCktPnRvVGhpc09iamVjdChhc0NlbGwo
KSwgZXhlYykgOiB0b1RoaXNPYmplY3RTbG93Q2FzZShleGVjKTsKIH0KIAotQUxXQVlTX0lOTElO
RSBib29sIEpTT2JqZWN0OjppbmxpbmVHZXRPd25Qcm9wZXJ0eVNsb3QoRXhlY1N0YXRlKiBleGVj
LCBjb25zdCBJZGVudGlmaWVyJiBwcm9wZXJ0eU5hbWUsIFByb3BlcnR5U2xvdCYgc2xvdCkKK0FM
V0FZU19JTkxJTkUgYm9vbCBKU09iamVjdDo6aW5saW5lR2V0T3duUHJvcGVydHlTbG90KEV4ZWNT
dGF0ZSogZXhlYywgUHJvcGVydHlOYW1lIHByb3BlcnR5TmFtZSwgUHJvcGVydHlTbG90JiBzbG90
KQogewogICAgIGlmIChXcml0ZUJhcnJpZXJCYXNlPFVua25vd24+KiBsb2NhdGlvbiA9IGdldERp
cmVjdExvY2F0aW9uKGV4ZWMtPmdsb2JhbERhdGEoKSwgcHJvcGVydHlOYW1lKSkgewogICAgICAg
ICBpZiAoc3RydWN0dXJlKCktPmhhc0dldHRlclNldHRlclByb3BlcnRpZXMoKSAmJiBsb2NhdGlv
bi0+aXNHZXR0ZXJTZXR0ZXIoKSkKQEAgLTU1NSwxMiArNTU1LDEyIEBAIEFMV0FZU19JTkxJTkUg
Ym9vbCBKU09iamVjdDo6aW5saW5lR2V0T3cKIC8vIEl0IG1heSBzZWVtIGNyYXp5IHRvIGlubGlu
ZSBhIGZ1bmN0aW9uIHRoaXMgbGFyZ2UsIGVzcGVjaWFsbHkgYSB2aXJ0dWFsIGZ1bmN0aW9uLAog
Ly8gYnV0IGl0IG1ha2VzIGEgYmlnIGRpZmZlcmVuY2UgdG8gcHJvcGVydHkgbG9va3VwIHRoYXQg
ZGVyaXZlZCBjbGFzc2VzIGNhbiBpbmxpbmUgdGhlaXIKIC8vIGJhc2UgY2xhc3MgY2FsbCB0byB0
aGlzLgotQUxXQVlTX0lOTElORSBib29sIEpTT2JqZWN0OjpnZXRPd25Qcm9wZXJ0eVNsb3QoSlND
ZWxsKiBjZWxsLCBFeGVjU3RhdGUqIGV4ZWMsIGNvbnN0IElkZW50aWZpZXImIHByb3BlcnR5TmFt
ZSwgUHJvcGVydHlTbG90JiBzbG90KQorQUxXQVlTX0lOTElORSBib29sIEpTT2JqZWN0OjpnZXRP
d25Qcm9wZXJ0eVNsb3QoSlNDZWxsKiBjZWxsLCBFeGVjU3RhdGUqIGV4ZWMsIFByb3BlcnR5TmFt
ZSBwcm9wZXJ0eU5hbWUsIFByb3BlcnR5U2xvdCYgc2xvdCkKIHsKICAgICByZXR1cm4ganNDYXN0
PEpTT2JqZWN0Kj4oY2VsbCktPmlubGluZUdldE93blByb3BlcnR5U2xvdChleGVjLCBwcm9wZXJ0
eU5hbWUsIHNsb3QpOwogfQogCi1BTFdBWVNfSU5MSU5FIGJvb2wgSlNDZWxsOjpmYXN0R2V0T3du
UHJvcGVydHlTbG90KEV4ZWNTdGF0ZSogZXhlYywgY29uc3QgSWRlbnRpZmllciYgcHJvcGVydHlO
YW1lLCBQcm9wZXJ0eVNsb3QmIHNsb3QpCitBTFdBWVNfSU5MSU5FIGJvb2wgSlNDZWxsOjpmYXN0
R2V0T3duUHJvcGVydHlTbG90KEV4ZWNTdGF0ZSogZXhlYywgUHJvcGVydHlOYW1lIHByb3BlcnR5
TmFtZSwgUHJvcGVydHlTbG90JiBzbG90KQogewogICAgIGlmICghc3RydWN0dXJlKCktPnR5cGVJ
bmZvKCkub3ZlcnJpZGVzR2V0T3duUHJvcGVydHlTbG90KCkpCiAgICAgICAgIHJldHVybiBhc09i
amVjdCh0aGlzKS0+aW5saW5lR2V0T3duUHJvcGVydHlTbG90KGV4ZWMsIHByb3BlcnR5TmFtZSwg
c2xvdCk7CkBAIC01ODUsNyArNTg1LDcgQEAgQUxXQVlTX0lOTElORSBKU1ZhbHVlIEpTQ2VsbDo6
ZmFzdEdldE93bgogCiAvLyBJdCBtYXkgc2VlbSBjcmF6eSB0byBpbmxpbmUgYSBmdW5jdGlvbiB0
aGlzIGxhcmdlIGJ1dCBpdCBtYWtlcyBhIGJpZyBkaWZmZXJlbmNlCiAvLyBzaW5jZSB0aGlzIGlz
IGZ1bmN0aW9uIHZlcnkgaG90IGluIHZhcmlhYmxlIGxvb2t1cAotQUxXQVlTX0lOTElORSBib29s
IEpTT2JqZWN0OjpnZXRQcm9wZXJ0eVNsb3QoRXhlY1N0YXRlKiBleGVjLCBjb25zdCBJZGVudGlm
aWVyJiBwcm9wZXJ0eU5hbWUsIFByb3BlcnR5U2xvdCYgc2xvdCkKK0FMV0FZU19JTkxJTkUgYm9v
bCBKU09iamVjdDo6Z2V0UHJvcGVydHlTbG90KEV4ZWNTdGF0ZSogZXhlYywgUHJvcGVydHlOYW1l
IHByb3BlcnR5TmFtZSwgUHJvcGVydHlTbG90JiBzbG90KQogewogICAgIEpTT2JqZWN0KiBvYmpl
Y3QgPSB0aGlzOwogICAgIHdoaWxlICh0cnVlKSB7CkBAIC02MTEsNyArNjExLDcgQEAgQUxXQVlT
X0lOTElORSBib29sIEpTT2JqZWN0OjpnZXRQcm9wZXJ0eQogICAgIH0KIH0KIAotaW5saW5lIEpT
VmFsdWUgSlNPYmplY3Q6OmdldChFeGVjU3RhdGUqIGV4ZWMsIGNvbnN0IElkZW50aWZpZXImIHBy
b3BlcnR5TmFtZSkgY29uc3QKK2lubGluZSBKU1ZhbHVlIEpTT2JqZWN0OjpnZXQoRXhlY1N0YXRl
KiBleGVjLCBQcm9wZXJ0eU5hbWUgcHJvcGVydHlOYW1lKSBjb25zdAogewogICAgIFByb3BlcnR5
U2xvdCBzbG90KHRoaXMpOwogICAgIGlmIChjb25zdF9jYXN0PEpTT2JqZWN0Kj4odGhpcyktPmdl
dFByb3BlcnR5U2xvdChleGVjLCBwcm9wZXJ0eU5hbWUsIHNsb3QpKQpAQCAtNjMwLDcgKzYzMCw3
IEBAIGlubGluZSBKU1ZhbHVlIEpTT2JqZWN0OjpnZXQoRXhlY1N0YXRlKiAKIH0KIAogdGVtcGxh
dGU8SlNPYmplY3Q6OlB1dE1vZGUgbW9kZT4KLWlubGluZSBib29sIEpTT2JqZWN0OjpwdXREaXJl
Y3RJbnRlcm5hbChKU0dsb2JhbERhdGEmIGdsb2JhbERhdGEsIGNvbnN0IElkZW50aWZpZXImIHBy
b3BlcnR5TmFtZSwgSlNWYWx1ZSB2YWx1ZSwgdW5zaWduZWQgYXR0cmlidXRlcywgUHV0UHJvcGVy
dHlTbG90JiBzbG90LCBKU0NlbGwqIHNwZWNpZmljRnVuY3Rpb24pCitpbmxpbmUgYm9vbCBKU09i
amVjdDo6cHV0RGlyZWN0SW50ZXJuYWwoSlNHbG9iYWxEYXRhJiBnbG9iYWxEYXRhLCBQcm9wZXJ0
eU5hbWUgcHJvcGVydHlOYW1lLCBKU1ZhbHVlIHZhbHVlLCB1bnNpZ25lZCBhdHRyaWJ1dGVzLCBQ
dXRQcm9wZXJ0eVNsb3QmIHNsb3QsIEpTQ2VsbCogc3BlY2lmaWNGdW5jdGlvbikKIHsKICAgICBB
U1NFUlQodmFsdWUpOwogICAgIEFTU0VSVCh2YWx1ZS5pc0dldHRlclNldHRlcigpID09ICEhKGF0
dHJpYnV0ZXMgJiBBY2Nlc3NvcikpOwpAQCAtNzQyLDcgKzc0Miw3IEBAIGlubGluZSBib29sIEpT
T2JqZWN0OjpwdXREaXJlY3RJbnRlcm5hbCgKICAgICByZXR1cm4gdHJ1ZTsKIH0KIAotaW5saW5l
IGJvb2wgSlNPYmplY3Q6OnB1dE93bkRhdGFQcm9wZXJ0eShKU0dsb2JhbERhdGEmIGdsb2JhbERh
dGEsIGNvbnN0IElkZW50aWZpZXImIHByb3BlcnR5TmFtZSwgSlNWYWx1ZSB2YWx1ZSwgUHV0UHJv
cGVydHlTbG90JiBzbG90KQoraW5saW5lIGJvb2wgSlNPYmplY3Q6OnB1dE93bkRhdGFQcm9wZXJ0
eShKU0dsb2JhbERhdGEmIGdsb2JhbERhdGEsIFByb3BlcnR5TmFtZSBwcm9wZXJ0eU5hbWUsIEpT
VmFsdWUgdmFsdWUsIFB1dFByb3BlcnR5U2xvdCYgc2xvdCkKIHsKICAgICBBU1NFUlQodmFsdWUp
OwogICAgIEFTU0VSVCghSGVhcDo6aGVhcCh2YWx1ZSkgfHwgSGVhcDo6aGVhcCh2YWx1ZSkgPT0g
SGVhcDo6aGVhcCh0aGlzKSk7CkBAIC03NTEsMjAgKzc1MSwyMCBAQCBpbmxpbmUgYm9vbCBKU09i
amVjdDo6cHV0T3duRGF0YVByb3BlcnR5CiAgICAgcmV0dXJuIHB1dERpcmVjdEludGVybmFsPFB1
dE1vZGVQdXQ+KGdsb2JhbERhdGEsIHByb3BlcnR5TmFtZSwgdmFsdWUsIDAsIHNsb3QsIGdldEpT
RnVuY3Rpb24odmFsdWUpKTsKIH0KIAotaW5saW5lIHZvaWQgSlNPYmplY3Q6OnB1dERpcmVjdChK
U0dsb2JhbERhdGEmIGdsb2JhbERhdGEsIGNvbnN0IElkZW50aWZpZXImIHByb3BlcnR5TmFtZSwg
SlNWYWx1ZSB2YWx1ZSwgdW5zaWduZWQgYXR0cmlidXRlcykKK2lubGluZSB2b2lkIEpTT2JqZWN0
OjpwdXREaXJlY3QoSlNHbG9iYWxEYXRhJiBnbG9iYWxEYXRhLCBQcm9wZXJ0eU5hbWUgcHJvcGVy
dHlOYW1lLCBKU1ZhbHVlIHZhbHVlLCB1bnNpZ25lZCBhdHRyaWJ1dGVzKQogewogICAgIEFTU0VS
VCghdmFsdWUuaXNHZXR0ZXJTZXR0ZXIoKSAmJiAhKGF0dHJpYnV0ZXMgJiBBY2Nlc3NvcikpOwog
ICAgIFB1dFByb3BlcnR5U2xvdCBzbG90OwogICAgIHB1dERpcmVjdEludGVybmFsPFB1dE1vZGVE
ZWZpbmVPd25Qcm9wZXJ0eT4oZ2xvYmFsRGF0YSwgcHJvcGVydHlOYW1lLCB2YWx1ZSwgYXR0cmli
dXRlcywgc2xvdCwgZ2V0SlNGdW5jdGlvbih2YWx1ZSkpOwogfQogCi1pbmxpbmUgdm9pZCBKU09i
amVjdDo6cHV0RGlyZWN0KEpTR2xvYmFsRGF0YSYgZ2xvYmFsRGF0YSwgY29uc3QgSWRlbnRpZmll
ciYgcHJvcGVydHlOYW1lLCBKU1ZhbHVlIHZhbHVlLCBQdXRQcm9wZXJ0eVNsb3QmIHNsb3QpCitp
bmxpbmUgdm9pZCBKU09iamVjdDo6cHV0RGlyZWN0KEpTR2xvYmFsRGF0YSYgZ2xvYmFsRGF0YSwg
UHJvcGVydHlOYW1lIHByb3BlcnR5TmFtZSwgSlNWYWx1ZSB2YWx1ZSwgUHV0UHJvcGVydHlTbG90
JiBzbG90KQogewogICAgIEFTU0VSVCghdmFsdWUuaXNHZXR0ZXJTZXR0ZXIoKSk7CiAgICAgcHV0
RGlyZWN0SW50ZXJuYWw8UHV0TW9kZURlZmluZU93blByb3BlcnR5PihnbG9iYWxEYXRhLCBwcm9w
ZXJ0eU5hbWUsIHZhbHVlLCAwLCBzbG90LCBnZXRKU0Z1bmN0aW9uKHZhbHVlKSk7CiB9CiAKLWlu
bGluZSB2b2lkIEpTT2JqZWN0OjpwdXREaXJlY3RXaXRob3V0VHJhbnNpdGlvbihKU0dsb2JhbERh
dGEmIGdsb2JhbERhdGEsIGNvbnN0IElkZW50aWZpZXImIHByb3BlcnR5TmFtZSwgSlNWYWx1ZSB2
YWx1ZSwgdW5zaWduZWQgYXR0cmlidXRlcykKK2lubGluZSB2b2lkIEpTT2JqZWN0OjpwdXREaXJl
Y3RXaXRob3V0VHJhbnNpdGlvbihKU0dsb2JhbERhdGEmIGdsb2JhbERhdGEsIFByb3BlcnR5TmFt
ZSBwcm9wZXJ0eU5hbWUsIEpTVmFsdWUgdmFsdWUsIHVuc2lnbmVkIGF0dHJpYnV0ZXMpCiB7CiAg
ICAgQVNTRVJUKCF2YWx1ZS5pc0dldHRlclNldHRlcigpICYmICEoYXR0cmlidXRlcyAmIEFjY2Vz
c29yKSk7CiAgICAgc2l6ZV90IGN1cnJlbnRDYXBhY2l0eSA9IHN0cnVjdHVyZSgpLT5wcm9wZXJ0
eVN0b3JhZ2VDYXBhY2l0eSgpOwpAQCAtNzg2LDEzICs3ODYsMTMgQEAgaW5saW5lIEpTVmFsdWUg
SlNPYmplY3Q6OnRvUHJpbWl0aXZlKEV4ZQogICAgIHJldHVybiBtZXRob2RUYWJsZSgpLT5kZWZh
dWx0VmFsdWUodGhpcywgZXhlYywgcHJlZmVycmVkVHlwZSk7CiB9CiAKLWlubGluZSBKU1ZhbHVl
IEpTVmFsdWU6OmdldChFeGVjU3RhdGUqIGV4ZWMsIGNvbnN0IElkZW50aWZpZXImIHByb3BlcnR5
TmFtZSkgY29uc3QKK2lubGluZSBKU1ZhbHVlIEpTVmFsdWU6OmdldChFeGVjU3RhdGUqIGV4ZWMs
IFByb3BlcnR5TmFtZSBwcm9wZXJ0eU5hbWUpIGNvbnN0CiB7CiAgICAgUHJvcGVydHlTbG90IHNs
b3QoYXNWYWx1ZSgpKTsKICAgICByZXR1cm4gZ2V0KGV4ZWMsIHByb3BlcnR5TmFtZSwgc2xvdCk7
CiB9CiAKLWlubGluZSBKU1ZhbHVlIEpTVmFsdWU6OmdldChFeGVjU3RhdGUqIGV4ZWMsIGNvbnN0
IElkZW50aWZpZXImIHByb3BlcnR5TmFtZSwgUHJvcGVydHlTbG90JiBzbG90KSBjb25zdAoraW5s
aW5lIEpTVmFsdWUgSlNWYWx1ZTo6Z2V0KEV4ZWNTdGF0ZSogZXhlYywgUHJvcGVydHlOYW1lIHBy
b3BlcnR5TmFtZSwgUHJvcGVydHlTbG90JiBzbG90KSBjb25zdAogewogICAgIGlmIChVTkxJS0VM
WSghaXNDZWxsKCkpKSB7CiAgICAgICAgIEpTT2JqZWN0KiBwcm90b3R5cGUgPSBzeW50aGVzaXpl
UHJvdG90eXBlKGV4ZWMpOwpAQCAtODM2LDcgKzgzNiw3IEBAIGlubGluZSBKU1ZhbHVlIEpTVmFs
dWU6OmdldChFeGVjU3RhdGUqIGUKICAgICB9CiB9CiAKLWlubGluZSB2b2lkIEpTVmFsdWU6OnB1
dChFeGVjU3RhdGUqIGV4ZWMsIGNvbnN0IElkZW50aWZpZXImIHByb3BlcnR5TmFtZSwgSlNWYWx1
ZSB2YWx1ZSwgUHV0UHJvcGVydHlTbG90JiBzbG90KQoraW5saW5lIHZvaWQgSlNWYWx1ZTo6cHV0
KEV4ZWNTdGF0ZSogZXhlYywgUHJvcGVydHlOYW1lIHByb3BlcnR5TmFtZSwgSlNWYWx1ZSB2YWx1
ZSwgUHV0UHJvcGVydHlTbG90JiBzbG90KQogewogICAgIGlmIChVTkxJS0VMWSghaXNDZWxsKCkp
KSB7CiAgICAgICAgIHB1dFRvUHJpbWl0aXZlKGV4ZWMsIHByb3BlcnR5TmFtZSwgdmFsdWUsIHNs
b3QpOwpJbmRleDogU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvSlNTdGF0aWNTY29wZU9i
amVjdC5jcHAKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvSlNT
dGF0aWNTY29wZU9iamVjdC5jcHAJKHJldmlzaW9uIDExNjY2NykKKysrIFNvdXJjZS9KYXZhU2Ny
aXB0Q29yZS9ydW50aW1lL0pTU3RhdGljU2NvcGVPYmplY3QuY3BwCSh3b3JraW5nIGNvcHkpCkBA
IC01NCw3ICs1NCw3IEBAIEpTT2JqZWN0KiBKU1N0YXRpY1Njb3BlT2JqZWN0Ojp0b1RoaXNPYmoK
ICAgICByZXR1cm4gZXhlYy0+Z2xvYmFsVGhpc1ZhbHVlKCk7CiB9CiAKLXZvaWQgSlNTdGF0aWNT
Y29wZU9iamVjdDo6cHV0KEpTQ2VsbCogY2VsbCwgRXhlY1N0YXRlKiBleGVjLCBjb25zdCBJZGVu
dGlmaWVyJiBwcm9wZXJ0eU5hbWUsIEpTVmFsdWUgdmFsdWUsIFB1dFByb3BlcnR5U2xvdCYgc2xv
dCkKK3ZvaWQgSlNTdGF0aWNTY29wZU9iamVjdDo6cHV0KEpTQ2VsbCogY2VsbCwgRXhlY1N0YXRl
KiBleGVjLCBQcm9wZXJ0eU5hbWUgcHJvcGVydHlOYW1lLCBKU1ZhbHVlIHZhbHVlLCBQdXRQcm9w
ZXJ0eVNsb3QmIHNsb3QpCiB7CiAgICAgSlNTdGF0aWNTY29wZU9iamVjdCogdGhpc09iamVjdCA9
IGpzQ2FzdDxKU1N0YXRpY1Njb3BlT2JqZWN0Kj4oY2VsbCk7CiAgICAgaWYgKHNsb3QuaXNTdHJp
Y3RNb2RlKCkpIHsKQEAgLTc4LDcgKzc4LDcgQEAgdm9pZCBKU1N0YXRpY1Njb3BlT2JqZWN0Ojpw
dXQoSlNDZWxsKiBjZQogICAgIEFTU0VSVF9OT1RfUkVBQ0hFRCgpOwogfQogCi12b2lkIEpTU3Rh
dGljU2NvcGVPYmplY3Q6OnB1dERpcmVjdFZpcnR1YWwoSlNPYmplY3QqIG9iamVjdCwgRXhlY1N0
YXRlKiBleGVjLCBjb25zdCBJZGVudGlmaWVyJiBwcm9wZXJ0eU5hbWUsIEpTVmFsdWUgdmFsdWUs
IHVuc2lnbmVkIGF0dHJpYnV0ZXMpCit2b2lkIEpTU3RhdGljU2NvcGVPYmplY3Q6OnB1dERpcmVj
dFZpcnR1YWwoSlNPYmplY3QqIG9iamVjdCwgRXhlY1N0YXRlKiBleGVjLCBQcm9wZXJ0eU5hbWUg
cHJvcGVydHlOYW1lLCBKU1ZhbHVlIHZhbHVlLCB1bnNpZ25lZCBhdHRyaWJ1dGVzKQogewogICAg
IEpTU3RhdGljU2NvcGVPYmplY3QqIHRoaXNPYmplY3QgPSBqc0Nhc3Q8SlNTdGF0aWNTY29wZU9i
amVjdCo+KG9iamVjdCk7CiAgICAgaWYgKHRoaXNPYmplY3QtPnN5bWJvbFRhYmxlUHV0V2l0aEF0
dHJpYnV0ZXMoZXhlYy0+Z2xvYmFsRGF0YSgpLCBwcm9wZXJ0eU5hbWUsIHZhbHVlLCBhdHRyaWJ1
dGVzKSkKQEAgLTg3LDcgKzg3LDcgQEAgdm9pZCBKU1N0YXRpY1Njb3BlT2JqZWN0OjpwdXREaXJl
Y3RWaXJ0dQogICAgIEFTU0VSVF9OT1RfUkVBQ0hFRCgpOwogfQogCi1ib29sIEpTU3RhdGljU2Nv
cGVPYmplY3Q6OmdldE93blByb3BlcnR5U2xvdChKU0NlbGwqIGNlbGwsIEV4ZWNTdGF0ZSosIGNv
bnN0IElkZW50aWZpZXImIHByb3BlcnR5TmFtZSwgUHJvcGVydHlTbG90JiBzbG90KQorYm9vbCBK
U1N0YXRpY1Njb3BlT2JqZWN0OjpnZXRPd25Qcm9wZXJ0eVNsb3QoSlNDZWxsKiBjZWxsLCBFeGVj
U3RhdGUqLCBQcm9wZXJ0eU5hbWUgcHJvcGVydHlOYW1lLCBQcm9wZXJ0eVNsb3QmIHNsb3QpCiB7
CiAgICAgcmV0dXJuIGpzQ2FzdDxKU1N0YXRpY1Njb3BlT2JqZWN0Kj4oY2VsbCktPnN5bWJvbFRh
YmxlR2V0KHByb3BlcnR5TmFtZSwgc2xvdCk7CiB9CkluZGV4OiBTb3VyY2UvSmF2YVNjcmlwdENv
cmUvcnVudGltZS9KU1N0YXRpY1Njb3BlT2JqZWN0LmgKPT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL0ph
dmFTY3JpcHRDb3JlL3J1bnRpbWUvSlNTdGF0aWNTY29wZU9iamVjdC5oCShyZXZpc2lvbiAxMTY2
NjcpCisrKyBTb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9KU1N0YXRpY1Njb3BlT2JqZWN0
LmgJKHdvcmtpbmcgY29weSkKQEAgLTQ0LDEwICs0NCwxMCBAQCBuYW1lc3BhY2UgSlNDewogICAg
ICAgICBzdGF0aWMgdm9pZCB2aXNpdENoaWxkcmVuKEpTQ2VsbCosIFNsb3RWaXNpdG9yJik7CiAg
ICAgICAgIGJvb2wgaXNEeW5hbWljU2NvcGUoYm9vbCYgcmVxdWlyZXNEeW5hbWljQ2hlY2tzKSBj
b25zdDsKICAgICAgICAgc3RhdGljIEpTT2JqZWN0KiB0b1RoaXNPYmplY3QoSlNDZWxsKiwgRXhl
Y1N0YXRlKik7Ci0gICAgICAgIHN0YXRpYyBib29sIGdldE93blByb3BlcnR5U2xvdChKU0NlbGwq
LCBFeGVjU3RhdGUqLCBjb25zdCBJZGVudGlmaWVyJiwgUHJvcGVydHlTbG90Jik7Ci0gICAgICAg
IHN0YXRpYyB2b2lkIHB1dChKU0NlbGwqLCBFeGVjU3RhdGUqLCBjb25zdCBJZGVudGlmaWVyJiwg
SlNWYWx1ZSwgUHV0UHJvcGVydHlTbG90Jik7CisgICAgICAgIHN0YXRpYyBib29sIGdldE93blBy
b3BlcnR5U2xvdChKU0NlbGwqLCBFeGVjU3RhdGUqLCBQcm9wZXJ0eU5hbWUsIFByb3BlcnR5U2xv
dCYpOworICAgICAgICBzdGF0aWMgdm9pZCBwdXQoSlNDZWxsKiwgRXhlY1N0YXRlKiwgUHJvcGVy
dHlOYW1lLCBKU1ZhbHVlLCBQdXRQcm9wZXJ0eVNsb3QmKTsKIAotICAgICAgICBzdGF0aWMgdm9p
ZCBwdXREaXJlY3RWaXJ0dWFsKEpTT2JqZWN0KiwgRXhlY1N0YXRlKiwgY29uc3QgSWRlbnRpZmll
ciYsIEpTVmFsdWUsIHVuc2lnbmVkIGF0dHJpYnV0ZXMpOworICAgICAgICBzdGF0aWMgdm9pZCBw
dXREaXJlY3RWaXJ0dWFsKEpTT2JqZWN0KiwgRXhlY1N0YXRlKiwgUHJvcGVydHlOYW1lLCBKU1Zh
bHVlLCB1bnNpZ25lZCBhdHRyaWJ1dGVzKTsKIAogICAgICAgICBzdGF0aWMgU3RydWN0dXJlKiBj
cmVhdGVTdHJ1Y3R1cmUoSlNHbG9iYWxEYXRhJiBnbG9iYWxEYXRhLCBKU0dsb2JhbE9iamVjdCog
Z2xvYmFsT2JqZWN0LCBKU1ZhbHVlIHByb3RvKSB7IHJldHVybiBTdHJ1Y3R1cmU6OmNyZWF0ZShn
bG9iYWxEYXRhLCBnbG9iYWxPYmplY3QsIHByb3RvLCBUeXBlSW5mbyhTdGF0aWNTY29wZU9iamVj
dFR5cGUsIFN0cnVjdHVyZUZsYWdzKSwgJnNfaW5mbyk7IH0KIApJbmRleDogU291cmNlL0phdmFT
Y3JpcHRDb3JlL3J1bnRpbWUvSlNTdHJpbmcuY3BwCj09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9KYXZh
U2NyaXB0Q29yZS9ydW50aW1lL0pTU3RyaW5nLmNwcAkocmV2aXNpb24gMTE2NjY3KQorKysgU291
cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvSlNTdHJpbmcuY3BwCSh3b3JraW5nIGNvcHkpCkBA
IC0yNTcsNyArMjU3LDcgQEAgSlNPYmplY3QqIEpTU3RyaW5nOjp0b1RoaXNPYmplY3QoSlNDZWxs
KgogICAgIHJldHVybiBTdHJpbmdPYmplY3Q6OmNyZWF0ZShleGVjLCBleGVjLT5sZXhpY2FsR2xv
YmFsT2JqZWN0KCksIGpzQ2FzdDxKU1N0cmluZyo+KGNlbGwpKTsKIH0KIAotYm9vbCBKU1N0cmlu
Zzo6Z2V0T3duUHJvcGVydHlTbG90KEpTQ2VsbCogY2VsbCwgRXhlY1N0YXRlKiBleGVjLCBjb25z
dCBJZGVudGlmaWVyJiBwcm9wZXJ0eU5hbWUsIFByb3BlcnR5U2xvdCYgc2xvdCkKK2Jvb2wgSlNT
dHJpbmc6OmdldE93blByb3BlcnR5U2xvdChKU0NlbGwqIGNlbGwsIEV4ZWNTdGF0ZSogZXhlYywg
UHJvcGVydHlOYW1lIHByb3BlcnR5TmFtZSwgUHJvcGVydHlTbG90JiBzbG90KQogewogICAgIEpT
U3RyaW5nKiB0aGlzT2JqZWN0ID0ganNDYXN0PEpTU3RyaW5nKj4oY2VsbCk7CiAgICAgLy8gVGhl
IHNlbWFudGljcyBoZXJlIGFyZSByZWFsbHkgZ2V0UHJvcGVydHlTbG90LCBub3QgZ2V0T3duUHJv
cGVydHlTbG90LgpAQCAtMjc1LDE2ICsyNzUsMTYgQEAgYm9vbCBKU1N0cmluZzo6Z2V0T3duUHJv
cGVydHlTbG90KEpTQ2VsbAogICAgIHJldHVybiB0cnVlOwogfQogCi1ib29sIEpTU3RyaW5nOjpn
ZXRTdHJpbmdQcm9wZXJ0eURlc2NyaXB0b3IoRXhlY1N0YXRlKiBleGVjLCBjb25zdCBJZGVudGlm
aWVyJiBwcm9wZXJ0eU5hbWUsIFByb3BlcnR5RGVzY3JpcHRvciYgZGVzY3JpcHRvcikKK2Jvb2wg
SlNTdHJpbmc6OmdldFN0cmluZ1Byb3BlcnR5RGVzY3JpcHRvcihFeGVjU3RhdGUqIGV4ZWMsIFBy
b3BlcnR5TmFtZSBwcm9wZXJ0eU5hbWUsIFByb3BlcnR5RGVzY3JpcHRvciYgZGVzY3JpcHRvcikK
IHsKICAgICBpZiAocHJvcGVydHlOYW1lID09IGV4ZWMtPnByb3BlcnR5TmFtZXMoKS5sZW5ndGgp
IHsKICAgICAgICAgZGVzY3JpcHRvci5zZXREZXNjcmlwdG9yKGpzTnVtYmVyKG1fbGVuZ3RoKSwg
RG9udEVudW0gfCBEb250RGVsZXRlIHwgUmVhZE9ubHkpOwogICAgICAgICByZXR1cm4gdHJ1ZTsK
ICAgICB9CiAgICAgCi0gICAgYm9vbCBpc1N0cmljdFVJbnQzMjsKLSAgICB1bnNpZ25lZCBpID0g
cHJvcGVydHlOYW1lLnRvVUludDMyKGlzU3RyaWN0VUludDMyKTsKLSAgICBpZiAoaXNTdHJpY3RV
SW50MzIgJiYgaSA8IG1fbGVuZ3RoKSB7CisgICAgdW5zaWduZWQgaSA9IHByb3BlcnR5TmFtZS5h
c0luZGV4KCk7CisgICAgaWYgKGkgPCBtX2xlbmd0aCkgeworICAgICAgICBBU1NFUlQoaSAhPSBQ
cm9wZXJ0eU5hbWU6Ok5vdEFuSW5kZXgpOyAvLyBObyBuZWVkIGZvciBhbiBleHBsaWNpdCBjaGVj
aywgdGhlIGFib3ZlIHRlc3Qgd291bGQgYWx3YXlzIGZhaWwhCiAgICAgICAgIGRlc2NyaXB0b3Iu
c2V0RGVzY3JpcHRvcihnZXRJbmRleChleGVjLCBpKSwgRG9udERlbGV0ZSB8IFJlYWRPbmx5KTsK
ICAgICAgICAgcmV0dXJuIHRydWU7CiAgICAgfQpJbmRleDogU291cmNlL0phdmFTY3JpcHRDb3Jl
L3J1bnRpbWUvSlNTdHJpbmcuaAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvSmF2YVNjcmlwdENvcmUv
cnVudGltZS9KU1N0cmluZy5oCShyZXZpc2lvbiAxMTY2NjcpCisrKyBTb3VyY2UvSmF2YVNjcmlw
dENvcmUvcnVudGltZS9KU1N0cmluZy5oCSh3b3JraW5nIGNvcHkpCkBAIC0xNDMsOSArMTQzLDkg
QEAgbmFtZXNwYWNlIEpTQyB7CiAgICAgICAgIEpTT2JqZWN0KiB0b09iamVjdChFeGVjU3RhdGUq
LCBKU0dsb2JhbE9iamVjdCopIGNvbnN0OwogICAgICAgICBkb3VibGUgdG9OdW1iZXIoRXhlY1N0
YXRlKikgY29uc3Q7CiAgICAgICAgIAotICAgICAgICBib29sIGdldFN0cmluZ1Byb3BlcnR5U2xv
dChFeGVjU3RhdGUqLCBjb25zdCBJZGVudGlmaWVyJiBwcm9wZXJ0eU5hbWUsIFByb3BlcnR5U2xv
dCYpOworICAgICAgICBib29sIGdldFN0cmluZ1Byb3BlcnR5U2xvdChFeGVjU3RhdGUqLCBQcm9w
ZXJ0eU5hbWUgcHJvcGVydHlOYW1lLCBQcm9wZXJ0eVNsb3QmKTsKICAgICAgICAgYm9vbCBnZXRT
dHJpbmdQcm9wZXJ0eVNsb3QoRXhlY1N0YXRlKiwgdW5zaWduZWQgcHJvcGVydHlOYW1lLCBQcm9w
ZXJ0eVNsb3QmKTsKLSAgICAgICAgYm9vbCBnZXRTdHJpbmdQcm9wZXJ0eURlc2NyaXB0b3IoRXhl
Y1N0YXRlKiwgY29uc3QgSWRlbnRpZmllciYgcHJvcGVydHlOYW1lLCBQcm9wZXJ0eURlc2NyaXB0
b3ImKTsKKyAgICAgICAgYm9vbCBnZXRTdHJpbmdQcm9wZXJ0eURlc2NyaXB0b3IoRXhlY1N0YXRl
KiwgUHJvcGVydHlOYW1lIHByb3BlcnR5TmFtZSwgUHJvcGVydHlEZXNjcmlwdG9yJik7CiAKICAg
ICAgICAgYm9vbCBjYW5HZXRJbmRleCh1bnNpZ25lZCBpKSB7IHJldHVybiBpIDwgbV9sZW5ndGg7
IH0KICAgICAgICAgSlNTdHJpbmcqIGdldEluZGV4KEV4ZWNTdGF0ZSosIHVuc2lnbmVkKTsKQEAg
LTE4MSw3ICsxODEsNyBAQCBuYW1lc3BhY2UgSlNDIHsKICAgICAgICAgc3RhdGljIEpTT2JqZWN0
KiB0b1RoaXNPYmplY3QoSlNDZWxsKiwgRXhlY1N0YXRlKik7CiAKICAgICAgICAgLy8gQWN0dWFs
bHkgZ2V0UHJvcGVydHlTbG90LCBub3QgZ2V0T3duUHJvcGVydHlTbG90IChzZWUgSlNDZWxsKS4K
LSAgICAgICAgc3RhdGljIGJvb2wgZ2V0T3duUHJvcGVydHlTbG90KEpTQ2VsbCosIEV4ZWNTdGF0
ZSosIGNvbnN0IElkZW50aWZpZXImIHByb3BlcnR5TmFtZSwgUHJvcGVydHlTbG90Jik7CisgICAg
ICAgIHN0YXRpYyBib29sIGdldE93blByb3BlcnR5U2xvdChKU0NlbGwqLCBFeGVjU3RhdGUqLCBQ
cm9wZXJ0eU5hbWUgcHJvcGVydHlOYW1lLCBQcm9wZXJ0eVNsb3QmKTsKICAgICAgICAgc3RhdGlj
IGJvb2wgZ2V0T3duUHJvcGVydHlTbG90QnlJbmRleChKU0NlbGwqLCBFeGVjU3RhdGUqLCB1bnNp
Z25lZCBwcm9wZXJ0eU5hbWUsIFByb3BlcnR5U2xvdCYpOwogCiAgICAgICAgIFVTdHJpbmcmIHN0
cmluZygpIHsgQVNTRVJUKCFpc1JvcGUoKSk7IHJldHVybiBtX3ZhbHVlOyB9CkBAIC00NDksMTYg
KzQ0OSwxNiBAQCBuYW1lc3BhY2UgSlNDIHsKICAgICBpbmxpbmUgSlNTdHJpbmcqIGpzTm9udHJp
dmlhbFN0cmluZyhFeGVjU3RhdGUqIGV4ZWMsIGNvbnN0IGNoYXIqIHMpIHsgcmV0dXJuIGpzTm9u
dHJpdmlhbFN0cmluZygmZXhlYy0+Z2xvYmFsRGF0YSgpLCBzKTsgfQogICAgIGlubGluZSBKU1N0
cmluZyoganNPd25lZFN0cmluZyhFeGVjU3RhdGUqIGV4ZWMsIGNvbnN0IFVTdHJpbmcmIHMpIHsg
cmV0dXJuIGpzT3duZWRTdHJpbmcoJmV4ZWMtPmdsb2JhbERhdGEoKSwgcyk7IH0gCiAKLSAgICBB
TFdBWVNfSU5MSU5FIGJvb2wgSlNTdHJpbmc6OmdldFN0cmluZ1Byb3BlcnR5U2xvdChFeGVjU3Rh
dGUqIGV4ZWMsIGNvbnN0IElkZW50aWZpZXImIHByb3BlcnR5TmFtZSwgUHJvcGVydHlTbG90JiBz
bG90KQorICAgIEFMV0FZU19JTkxJTkUgYm9vbCBKU1N0cmluZzo6Z2V0U3RyaW5nUHJvcGVydHlT
bG90KEV4ZWNTdGF0ZSogZXhlYywgUHJvcGVydHlOYW1lIHByb3BlcnR5TmFtZSwgUHJvcGVydHlT
bG90JiBzbG90KQogICAgIHsKICAgICAgICAgaWYgKHByb3BlcnR5TmFtZSA9PSBleGVjLT5wcm9w
ZXJ0eU5hbWVzKCkubGVuZ3RoKSB7CiAgICAgICAgICAgICBzbG90LnNldFZhbHVlKGpzTnVtYmVy
KG1fbGVuZ3RoKSk7CiAgICAgICAgICAgICByZXR1cm4gdHJ1ZTsKICAgICAgICAgfQogCi0gICAg
ICAgIGJvb2wgaXNTdHJpY3RVSW50MzI7Ci0gICAgICAgIHVuc2lnbmVkIGkgPSBwcm9wZXJ0eU5h
bWUudG9VSW50MzIoaXNTdHJpY3RVSW50MzIpOwotICAgICAgICBpZiAoaXNTdHJpY3RVSW50MzIg
JiYgaSA8IG1fbGVuZ3RoKSB7CisgICAgICAgIHVuc2lnbmVkIGkgPSBwcm9wZXJ0eU5hbWUuYXNJ
bmRleCgpOworICAgICAgICBpZiAoaSA8IG1fbGVuZ3RoKSB7CisgICAgICAgICAgICBBU1NFUlQo
aSAhPSBQcm9wZXJ0eU5hbWU6Ok5vdEFuSW5kZXgpOyAvLyBObyBuZWVkIGZvciBhbiBleHBsaWNp
dCBjaGVjaywgdGhlIGFib3ZlIHRlc3Qgd291bGQgYWx3YXlzIGZhaWwhCiAgICAgICAgICAgICBz
bG90LnNldFZhbHVlKGdldEluZGV4KGV4ZWMsIGkpKTsKICAgICAgICAgICAgIHJldHVybiB0cnVl
OwogICAgICAgICB9CkluZGV4OiBTb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9KU1ZhbHVl
LmNwcAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9KU1ZhbHVl
LmNwcAkocmV2aXNpb24gMTE2NjY3KQorKysgU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUv
SlNWYWx1ZS5jcHAJKHdvcmtpbmcgY29weSkKQEAgLTEwOSw3ICsxMDksNyBAQCBKU09iamVjdCog
SlNWYWx1ZTo6c3ludGhlc2l6ZVByb3RvdHlwZShFCiB9CiAKIC8vIEVDTUEgOC43LjIKLXZvaWQg
SlNWYWx1ZTo6cHV0VG9QcmltaXRpdmUoRXhlY1N0YXRlKiBleGVjLCBjb25zdCBJZGVudGlmaWVy
JiBwcm9wZXJ0eU5hbWUsIEpTVmFsdWUgdmFsdWUsIFB1dFByb3BlcnR5U2xvdCYgc2xvdCkKK3Zv
aWQgSlNWYWx1ZTo6cHV0VG9QcmltaXRpdmUoRXhlY1N0YXRlKiBleGVjLCBQcm9wZXJ0eU5hbWUg
cHJvcGVydHlOYW1lLCBKU1ZhbHVlIHZhbHVlLCBQdXRQcm9wZXJ0eVNsb3QmIHNsb3QpCiB7CiAg
ICAgSlNHbG9iYWxEYXRhJiBnbG9iYWxEYXRhID0gZXhlYy0+Z2xvYmFsRGF0YSgpOwogCkluZGV4
OiBTb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9KU1ZhbHVlLmgKPT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0g
U291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvSlNWYWx1ZS5oCShyZXZpc2lvbiAxMTY2Njcp
CisrKyBTb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9KU1ZhbHVlLmgJKHdvcmtpbmcgY29w
eSkKQEAgLTM2LDEyICszNiwxMiBAQAogbmFtZXNwYWNlIEpTQyB7CiAKICAgICBjbGFzcyBFeGVj
U3RhdGU7Ci0gICAgY2xhc3MgSWRlbnRpZmllcjsKICAgICBjbGFzcyBKU0NlbGw7CiAgICAgY2xh
c3MgSlNHbG9iYWxEYXRhOwogICAgIGNsYXNzIEpTR2xvYmFsT2JqZWN0OwogICAgIGNsYXNzIEpT
T2JqZWN0OwogICAgIGNsYXNzIEpTU3RyaW5nOworICAgIGNsYXNzIFByb3BlcnR5TmFtZTsKICAg
ICBjbGFzcyBQcm9wZXJ0eVNsb3Q7CiAgICAgY2xhc3MgUHV0UHJvcGVydHlTbG90OwogICAgIGNs
YXNzIFVTdHJpbmc7CkBAIC0yMTksMTIgKzIxOSwxMiBAQCBuYW1lc3BhY2UgSlNDIHsKICAgICAg
ICAgZmxvYXQgdG9GbG9hdChFeGVjU3RhdGUqIGV4ZWMpIGNvbnN0IHsgcmV0dXJuIHN0YXRpY19j
YXN0PGZsb2F0Pih0b051bWJlcihleGVjKSk7IH0KIAogICAgICAgICAvLyBPYmplY3Qgb3BlcmF0
aW9ucywgd2l0aCB0aGUgdG9PYmplY3Qgb3BlcmF0aW9uIGluY2x1ZGVkLgotICAgICAgICBKU1Zh
bHVlIGdldChFeGVjU3RhdGUqLCBjb25zdCBJZGVudGlmaWVyJiBwcm9wZXJ0eU5hbWUpIGNvbnN0
OwotICAgICAgICBKU1ZhbHVlIGdldChFeGVjU3RhdGUqLCBjb25zdCBJZGVudGlmaWVyJiBwcm9w
ZXJ0eU5hbWUsIFByb3BlcnR5U2xvdCYpIGNvbnN0OworICAgICAgICBKU1ZhbHVlIGdldChFeGVj
U3RhdGUqLCBQcm9wZXJ0eU5hbWUgcHJvcGVydHlOYW1lKSBjb25zdDsKKyAgICAgICAgSlNWYWx1
ZSBnZXQoRXhlY1N0YXRlKiwgUHJvcGVydHlOYW1lIHByb3BlcnR5TmFtZSwgUHJvcGVydHlTbG90
JikgY29uc3Q7CiAgICAgICAgIEpTVmFsdWUgZ2V0KEV4ZWNTdGF0ZSosIHVuc2lnbmVkIHByb3Bl
cnR5TmFtZSkgY29uc3Q7CiAgICAgICAgIEpTVmFsdWUgZ2V0KEV4ZWNTdGF0ZSosIHVuc2lnbmVk
IHByb3BlcnR5TmFtZSwgUHJvcGVydHlTbG90JikgY29uc3Q7Ci0gICAgICAgIHZvaWQgcHV0KEV4
ZWNTdGF0ZSosIGNvbnN0IElkZW50aWZpZXImIHByb3BlcnR5TmFtZSwgSlNWYWx1ZSwgUHV0UHJv
cGVydHlTbG90Jik7Ci0gICAgICAgIHZvaWQgcHV0VG9QcmltaXRpdmUoRXhlY1N0YXRlKiwgY29u
c3QgSWRlbnRpZmllciYgcHJvcGVydHlOYW1lLCBKU1ZhbHVlLCBQdXRQcm9wZXJ0eVNsb3QmKTsK
KyAgICAgICAgdm9pZCBwdXQoRXhlY1N0YXRlKiwgUHJvcGVydHlOYW1lIHByb3BlcnR5TmFtZSwg
SlNWYWx1ZSwgUHV0UHJvcGVydHlTbG90Jik7CisgICAgICAgIHZvaWQgcHV0VG9QcmltaXRpdmUo
RXhlY1N0YXRlKiwgUHJvcGVydHlOYW1lIHByb3BlcnR5TmFtZSwgSlNWYWx1ZSwgUHV0UHJvcGVy
dHlTbG90Jik7CiAgICAgICAgIHZvaWQgcHV0QnlJbmRleChFeGVjU3RhdGUqLCB1bnNpZ25lZCBw
cm9wZXJ0eU5hbWUsIEpTVmFsdWUsIGJvb2wgc2hvdWxkVGhyb3cpOwogCiAgICAgICAgIEpTT2Jq
ZWN0KiB0b1RoaXNPYmplY3QoRXhlY1N0YXRlKikgY29uc3Q7CkluZGV4OiBTb3VyY2UvSmF2YVNj
cmlwdENvcmUvcnVudGltZS9KU1ZhcmlhYmxlT2JqZWN0LmNwcAo9PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3Vy
Y2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9KU1ZhcmlhYmxlT2JqZWN0LmNwcAkocmV2aXNpb24g
MTE2NjY3KQorKysgU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvSlNWYXJpYWJsZU9iamVj
dC5jcHAJKHdvcmtpbmcgY29weSkKQEAgLTQyLDcgKzQyLDcgQEAgdm9pZCBKU1ZhcmlhYmxlT2Jq
ZWN0OjpkZXN0cm95KEpTQ2VsbCogYwogICAgIGpzQ2FzdDxKU1ZhcmlhYmxlT2JqZWN0Kj4oY2Vs
bCktPkpTVmFyaWFibGVPYmplY3Q6On5KU1ZhcmlhYmxlT2JqZWN0KCk7CiB9CiAKLWJvb2wgSlNW
YXJpYWJsZU9iamVjdDo6ZGVsZXRlUHJvcGVydHkoSlNDZWxsKiBjZWxsLCBFeGVjU3RhdGUqIGV4
ZWMsIGNvbnN0IElkZW50aWZpZXImIHByb3BlcnR5TmFtZSkKK2Jvb2wgSlNWYXJpYWJsZU9iamVj
dDo6ZGVsZXRlUHJvcGVydHkoSlNDZWxsKiBjZWxsLCBFeGVjU3RhdGUqIGV4ZWMsIFByb3BlcnR5
TmFtZSBwcm9wZXJ0eU5hbWUpCiB7CiAgICAgSlNWYXJpYWJsZU9iamVjdCogdGhpc09iamVjdCA9
IGpzQ2FzdDxKU1ZhcmlhYmxlT2JqZWN0Kj4oY2VsbCk7CiAgICAgaWYgKHRoaXNPYmplY3QtPnN5
bWJvbFRhYmxlKCkuY29udGFpbnMocHJvcGVydHlOYW1lLmltcGwoKSkpCkBAIC02Myw3ICs2Myw3
IEBAIHZvaWQgSlNWYXJpYWJsZU9iamVjdDo6Z2V0T3duUHJvcGVydHlOYW0KICAgICBKU09iamVj
dDo6Z2V0T3duUHJvcGVydHlOYW1lcyh0aGlzT2JqZWN0LCBleGVjLCBwcm9wZXJ0eU5hbWVzLCBt
b2RlKTsKIH0KIAotYm9vbCBKU1ZhcmlhYmxlT2JqZWN0OjpzeW1ib2xUYWJsZUdldChjb25zdCBJ
ZGVudGlmaWVyJiBwcm9wZXJ0eU5hbWUsIFByb3BlcnR5RGVzY3JpcHRvciYgZGVzY3JpcHRvcikK
K2Jvb2wgSlNWYXJpYWJsZU9iamVjdDo6c3ltYm9sVGFibGVHZXQoUHJvcGVydHlOYW1lIHByb3Bl
cnR5TmFtZSwgUHJvcGVydHlEZXNjcmlwdG9yJiBkZXNjcmlwdG9yKQogewogICAgIFN5bWJvbFRh
YmxlRW50cnkgZW50cnkgPSBzeW1ib2xUYWJsZSgpLmlubGluZUdldChwcm9wZXJ0eU5hbWUuaW1w
bCgpKTsKICAgICBpZiAoIWVudHJ5LmlzTnVsbCgpKSB7CkBAIC03Myw3ICs3Myw3IEBAIGJvb2wg
SlNWYXJpYWJsZU9iamVjdDo6c3ltYm9sVGFibGVHZXQoY28KICAgICByZXR1cm4gZmFsc2U7CiB9
CiAKLXZvaWQgSlNWYXJpYWJsZU9iamVjdDo6cHV0RGlyZWN0VmlydHVhbChKU09iamVjdCosIEV4
ZWNTdGF0ZSosIGNvbnN0IElkZW50aWZpZXImLCBKU1ZhbHVlLCB1bnNpZ25lZCkKK3ZvaWQgSlNW
YXJpYWJsZU9iamVjdDo6cHV0RGlyZWN0VmlydHVhbChKU09iamVjdCosIEV4ZWNTdGF0ZSosIFBy
b3BlcnR5TmFtZSwgSlNWYWx1ZSwgdW5zaWduZWQpCiB7CiAgICAgQVNTRVJUX05PVF9SRUFDSEVE
KCk7CiB9CkluZGV4OiBTb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9KU1ZhcmlhYmxlT2Jq
ZWN0LmgKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PQotLS0gU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvSlNWYXJp
YWJsZU9iamVjdC5oCShyZXZpc2lvbiAxMTY2NjcpCisrKyBTb3VyY2UvSmF2YVNjcmlwdENvcmUv
cnVudGltZS9KU1ZhcmlhYmxlT2JqZWN0LmgJKHdvcmtpbmcgY29weSkKQEAgLTUyLDkgKzUyLDkg
QEAgbmFtZXNwYWNlIEpTQyB7CiAKICAgICAgICAgSlNfRVhQT1JUX1BSSVZBVEUgc3RhdGljIHZv
aWQgZGVzdHJveShKU0NlbGwqKTsKIAotICAgICAgICBzdGF0aWMgTk9fUkVUVVJOX0RVRV9UT19B
U1NFUlQgdm9pZCBwdXREaXJlY3RWaXJ0dWFsKEpTT2JqZWN0KiwgRXhlY1N0YXRlKiwgY29uc3Qg
SWRlbnRpZmllciYsIEpTVmFsdWUsIHVuc2lnbmVkIGF0dHJpYnV0ZXMpOworICAgICAgICBzdGF0
aWMgTk9fUkVUVVJOX0RVRV9UT19BU1NFUlQgdm9pZCBwdXREaXJlY3RWaXJ0dWFsKEpTT2JqZWN0
KiwgRXhlY1N0YXRlKiwgUHJvcGVydHlOYW1lLCBKU1ZhbHVlLCB1bnNpZ25lZCBhdHRyaWJ1dGVz
KTsKIAotICAgICAgICBKU19FWFBPUlRfUFJJVkFURSBzdGF0aWMgYm9vbCBkZWxldGVQcm9wZXJ0
eShKU0NlbGwqLCBFeGVjU3RhdGUqLCBjb25zdCBJZGVudGlmaWVyJik7CisgICAgICAgIEpTX0VY
UE9SVF9QUklWQVRFIHN0YXRpYyBib29sIGRlbGV0ZVByb3BlcnR5KEpTQ2VsbCosIEV4ZWNTdGF0
ZSosIFByb3BlcnR5TmFtZSk7CiAgICAgICAgIEpTX0VYUE9SVF9QUklWQVRFIHN0YXRpYyB2b2lk
IGdldE93blByb3BlcnR5TmFtZXMoSlNPYmplY3QqLCBFeGVjU3RhdGUqLCBQcm9wZXJ0eU5hbWVB
cnJheSYsIEVudW1lcmF0aW9uTW9kZSk7CiAgICAgICAgIAogICAgICAgICBib29sIGlzRHluYW1p
Y1Njb3BlKGJvb2wmIHJlcXVpcmVzRHluYW1pY0NoZWNrcykgY29uc3Q7CkBAIC04OSwxOCArODks
MTggQEAgbmFtZXNwYWNlIEpTQyB7CiAgICAgICAgIFBhc3NPd25BcnJheVB0cjxXcml0ZUJhcnJp
ZXI8VW5rbm93bj4gPiBjb3B5UmVnaXN0ZXJBcnJheShKU0dsb2JhbERhdGEmLCBXcml0ZUJhcnJp
ZXI8VW5rbm93bj4qIHNyYywgc2l6ZV90IGNvdW50LCBzaXplX3QgY2FsbGZyYW1lU3RhcnRzKTsK
ICAgICAgICAgdm9pZCBzZXRSZWdpc3RlcnMoV3JpdGVCYXJyaWVyPFVua25vd24+KiByZWdpc3Rl
cnMsIFBhc3NPd25BcnJheVB0cjxXcml0ZUJhcnJpZXI8VW5rbm93bj4gPiByZWdpc3RlckFycmF5
KTsKIAotICAgICAgICBib29sIHN5bWJvbFRhYmxlR2V0KGNvbnN0IElkZW50aWZpZXImLCBQcm9w
ZXJ0eVNsb3QmKTsKLSAgICAgICAgSlNfRVhQT1JUX1BSSVZBVEUgYm9vbCBzeW1ib2xUYWJsZUdl
dChjb25zdCBJZGVudGlmaWVyJiwgUHJvcGVydHlEZXNjcmlwdG9yJik7Ci0gICAgICAgIGJvb2wg
c3ltYm9sVGFibGVHZXQoY29uc3QgSWRlbnRpZmllciYsIFByb3BlcnR5U2xvdCYsIGJvb2wmIHNs
b3RJc1dyaXRlYWJsZSk7Ci0gICAgICAgIGJvb2wgc3ltYm9sVGFibGVQdXQoRXhlY1N0YXRlKiwg
Y29uc3QgSWRlbnRpZmllciYsIEpTVmFsdWUsIGJvb2wgc2hvdWxkVGhyb3cpOwotICAgICAgICBi
b29sIHN5bWJvbFRhYmxlUHV0V2l0aEF0dHJpYnV0ZXMoSlNHbG9iYWxEYXRhJiwgY29uc3QgSWRl
bnRpZmllciYsIEpTVmFsdWUsIHVuc2lnbmVkIGF0dHJpYnV0ZXMpOworICAgICAgICBib29sIHN5
bWJvbFRhYmxlR2V0KFByb3BlcnR5TmFtZSwgUHJvcGVydHlTbG90Jik7CisgICAgICAgIEpTX0VY
UE9SVF9QUklWQVRFIGJvb2wgc3ltYm9sVGFibGVHZXQoUHJvcGVydHlOYW1lLCBQcm9wZXJ0eURl
c2NyaXB0b3ImKTsKKyAgICAgICAgYm9vbCBzeW1ib2xUYWJsZUdldChQcm9wZXJ0eU5hbWUsIFBy
b3BlcnR5U2xvdCYsIGJvb2wmIHNsb3RJc1dyaXRlYWJsZSk7CisgICAgICAgIGJvb2wgc3ltYm9s
VGFibGVQdXQoRXhlY1N0YXRlKiwgUHJvcGVydHlOYW1lLCBKU1ZhbHVlLCBib29sIHNob3VsZFRo
cm93KTsKKyAgICAgICAgYm9vbCBzeW1ib2xUYWJsZVB1dFdpdGhBdHRyaWJ1dGVzKEpTR2xvYmFs
RGF0YSYsIFByb3BlcnR5TmFtZSwgSlNWYWx1ZSwgdW5zaWduZWQgYXR0cmlidXRlcyk7CiAKICAg
ICAgICAgU3ltYm9sVGFibGUqIG1fc3ltYm9sVGFibGU7IC8vIE1hcHMgbmFtZSAtPiBvZmZzZXQg
ZnJvbSAiciIgaW4gcmVnaXN0ZXIgZmlsZS4KICAgICAgICAgV3JpdGVCYXJyaWVyPFVua25vd24+
KiBtX3JlZ2lzdGVyczsgLy8gInIiIGluIHRoZSByZWdpc3RlciBmaWxlLgogICAgICAgICBPd25B
cnJheVB0cjxXcml0ZUJhcnJpZXI8VW5rbm93bj4gPiBtX3JlZ2lzdGVyQXJyYXk7IC8vIEluZGVw
ZW5kZW50IGNvcHkgb2YgcmVnaXN0ZXJzLCB1c2VkIHdoZW4gYSB2YXJpYWJsZSBvYmplY3QgY29w
aWVzIGl0cyByZWdpc3RlcnMgb3V0IG9mIHRoZSByZWdpc3RlciBmaWxlLgogICAgIH07CiAKLSAg
ICBpbmxpbmUgYm9vbCBKU1ZhcmlhYmxlT2JqZWN0OjpzeW1ib2xUYWJsZUdldChjb25zdCBJZGVu
dGlmaWVyJiBwcm9wZXJ0eU5hbWUsIFByb3BlcnR5U2xvdCYgc2xvdCkKKyAgICBpbmxpbmUgYm9v
bCBKU1ZhcmlhYmxlT2JqZWN0OjpzeW1ib2xUYWJsZUdldChQcm9wZXJ0eU5hbWUgcHJvcGVydHlO
YW1lLCBQcm9wZXJ0eVNsb3QmIHNsb3QpCiAgICAgewogICAgICAgICBTeW1ib2xUYWJsZUVudHJ5
IGVudHJ5ID0gc3ltYm9sVGFibGUoKS5pbmxpbmVHZXQocHJvcGVydHlOYW1lLmltcGwoKSk7CiAg
ICAgICAgIGlmICghZW50cnkuaXNOdWxsKCkpIHsKQEAgLTExMCw3ICsxMTAsNyBAQCBuYW1lc3Bh
Y2UgSlNDIHsKICAgICAgICAgcmV0dXJuIGZhbHNlOwogICAgIH0KIAotICAgIGlubGluZSBib29s
IEpTVmFyaWFibGVPYmplY3Q6OnN5bWJvbFRhYmxlR2V0KGNvbnN0IElkZW50aWZpZXImIHByb3Bl
cnR5TmFtZSwgUHJvcGVydHlTbG90JiBzbG90LCBib29sJiBzbG90SXNXcml0ZWFibGUpCisgICAg
aW5saW5lIGJvb2wgSlNWYXJpYWJsZU9iamVjdDo6c3ltYm9sVGFibGVHZXQoUHJvcGVydHlOYW1l
IHByb3BlcnR5TmFtZSwgUHJvcGVydHlTbG90JiBzbG90LCBib29sJiBzbG90SXNXcml0ZWFibGUp
CiAgICAgewogICAgICAgICBTeW1ib2xUYWJsZUVudHJ5IGVudHJ5ID0gc3ltYm9sVGFibGUoKS5p
bmxpbmVHZXQocHJvcGVydHlOYW1lLmltcGwoKSk7CiAgICAgICAgIGlmICghZW50cnkuaXNOdWxs
KCkpIHsKQEAgLTEyMSw3ICsxMjEsNyBAQCBuYW1lc3BhY2UgSlNDIHsKICAgICAgICAgcmV0dXJu
IGZhbHNlOwogICAgIH0KIAotICAgIGlubGluZSBib29sIEpTVmFyaWFibGVPYmplY3Q6OnN5bWJv
bFRhYmxlUHV0KEV4ZWNTdGF0ZSogZXhlYywgY29uc3QgSWRlbnRpZmllciYgcHJvcGVydHlOYW1l
LCBKU1ZhbHVlIHZhbHVlLCBib29sIHNob3VsZFRocm93KQorICAgIGlubGluZSBib29sIEpTVmFy
aWFibGVPYmplY3Q6OnN5bWJvbFRhYmxlUHV0KEV4ZWNTdGF0ZSogZXhlYywgUHJvcGVydHlOYW1l
IHByb3BlcnR5TmFtZSwgSlNWYWx1ZSB2YWx1ZSwgYm9vbCBzaG91bGRUaHJvdykKICAgICB7CiAg
ICAgICAgIEpTR2xvYmFsRGF0YSYgZ2xvYmFsRGF0YSA9IGV4ZWMtPmdsb2JhbERhdGEoKTsKICAg
ICAgICAgQVNTRVJUKCFIZWFwOjpoZWFwKHZhbHVlKSB8fCBIZWFwOjpoZWFwKHZhbHVlKSA9PSBI
ZWFwOjpoZWFwKHRoaXMpKTsKQEAgLTEzOCw3ICsxMzgsNyBAQCBuYW1lc3BhY2UgSlNDIHsKICAg
ICAgICAgcmV0dXJuIHRydWU7CiAgICAgfQogCi0gICAgaW5saW5lIGJvb2wgSlNWYXJpYWJsZU9i
amVjdDo6c3ltYm9sVGFibGVQdXRXaXRoQXR0cmlidXRlcyhKU0dsb2JhbERhdGEmIGdsb2JhbERh
dGEsIGNvbnN0IElkZW50aWZpZXImIHByb3BlcnR5TmFtZSwgSlNWYWx1ZSB2YWx1ZSwgdW5zaWdu
ZWQgYXR0cmlidXRlcykKKyAgICBpbmxpbmUgYm9vbCBKU1ZhcmlhYmxlT2JqZWN0OjpzeW1ib2xU
YWJsZVB1dFdpdGhBdHRyaWJ1dGVzKEpTR2xvYmFsRGF0YSYgZ2xvYmFsRGF0YSwgUHJvcGVydHlO
YW1lIHByb3BlcnR5TmFtZSwgSlNWYWx1ZSB2YWx1ZSwgdW5zaWduZWQgYXR0cmlidXRlcykKICAg
ICB7CiAgICAgICAgIEFTU0VSVCghSGVhcDo6aGVhcCh2YWx1ZSkgfHwgSGVhcDo6aGVhcCh2YWx1
ZSkgPT0gSGVhcDo6aGVhcCh0aGlzKSk7CiAKSW5kZXg6IFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9y
dW50aW1lL0xvb2t1cC5jcHAKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL0phdmFTY3JpcHRDb3JlL3J1
bnRpbWUvTG9va3VwLmNwcAkocmV2aXNpb24gMTE2NjY3KQorKysgU291cmNlL0phdmFTY3JpcHRD
b3JlL3J1bnRpbWUvTG9va3VwLmNwcAkod29ya2luZyBjb3B5KQpAQCAtNjQsNyArNjQsNyBAQCB2
b2lkIEhhc2hUYWJsZTo6ZGVsZXRlVGFibGUoKSBjb25zdAogICAgIH0KIH0KIAotYm9vbCBzZXRV
cFN0YXRpY0Z1bmN0aW9uU2xvdChFeGVjU3RhdGUqIGV4ZWMsIGNvbnN0IEhhc2hFbnRyeSogZW50
cnksIEpTT2JqZWN0KiB0aGlzT2JqLCBjb25zdCBJZGVudGlmaWVyJiBwcm9wZXJ0eU5hbWUsIFBy
b3BlcnR5U2xvdCYgc2xvdCkKK2Jvb2wgc2V0VXBTdGF0aWNGdW5jdGlvblNsb3QoRXhlY1N0YXRl
KiBleGVjLCBjb25zdCBIYXNoRW50cnkqIGVudHJ5LCBKU09iamVjdCogdGhpc09iaiwgUHJvcGVy
dHlOYW1lIHByb3BlcnR5TmFtZSwgUHJvcGVydHlTbG90JiBzbG90KQogewogICAgIEFTU0VSVCh0
aGlzT2JqLT5nbG9iYWxPYmplY3QoKSk7CiAgICAgQVNTRVJUKGVudHJ5LT5hdHRyaWJ1dGVzKCkg
JiBGdW5jdGlvbik7CkBAIC03Niw3ICs3Niw3IEBAIGJvb2wgc2V0VXBTdGF0aWNGdW5jdGlvblNs
b3QoRXhlY1N0YXRlKiAKICAgICAgICAgaWYgKHRoaXNPYmotPnN0YXRpY0Z1bmN0aW9uc1JlaWZp
ZWQoKSkKICAgICAgICAgICAgIHJldHVybiBmYWxzZTsKICAgICAKLSAgICAgICAgSlNGdW5jdGlv
biogZnVuY3Rpb24gPSBKU0Z1bmN0aW9uOjpjcmVhdGUoZXhlYywgdGhpc09iai0+Z2xvYmFsT2Jq
ZWN0KCksIGVudHJ5LT5mdW5jdGlvbkxlbmd0aCgpLCBwcm9wZXJ0eU5hbWUsIGVudHJ5LT5mdW5j
dGlvbigpLCBlbnRyeS0+aW50cmluc2ljKCkpOworICAgICAgICBKU0Z1bmN0aW9uKiBmdW5jdGlv
biA9IEpTRnVuY3Rpb246OmNyZWF0ZShleGVjLCB0aGlzT2JqLT5nbG9iYWxPYmplY3QoKSwgZW50
cnktPmZ1bmN0aW9uTGVuZ3RoKCksIHByb3BlcnR5TmFtZS51c3RyaW5nKCksIGVudHJ5LT5mdW5j
dGlvbigpLCBlbnRyeS0+aW50cmluc2ljKCkpOwogICAgICAgICB0aGlzT2JqLT5wdXREaXJlY3Qo
ZXhlYy0+Z2xvYmFsRGF0YSgpLCBwcm9wZXJ0eU5hbWUsIGZ1bmN0aW9uLCBlbnRyeS0+YXR0cmli
dXRlcygpKTsKICAgICAgICAgbG9jYXRpb24gPSB0aGlzT2JqLT5nZXREaXJlY3RMb2NhdGlvbihl
eGVjLT5nbG9iYWxEYXRhKCksIHByb3BlcnR5TmFtZSk7CiAgICAgfQpJbmRleDogU291cmNlL0ph
dmFTY3JpcHRDb3JlL3J1bnRpbWUvTG9va3VwLmgKPT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL0phdmFT
Y3JpcHRDb3JlL3J1bnRpbWUvTG9va3VwLmgJKHJldmlzaW9uIDExNjY2NykKKysrIFNvdXJjZS9K
YXZhU2NyaXB0Q29yZS9ydW50aW1lL0xvb2t1cC5oCSh3b3JraW5nIGNvcHkpCkBAIC0xMjksMTMg
KzEyOSwxMyBAQCBuYW1lc3BhY2UgSlNDIHsKICAgICAgICAgSlNfRVhQT1JUX1BSSVZBVEUgdm9p
ZCBkZWxldGVUYWJsZSgpIGNvbnN0OwogCiAgICAgICAgIC8vIEZpbmQgYW4gZW50cnkgaW4gdGhl
IHRhYmxlLCBhbmQgcmV0dXJuIHRoZSBlbnRyeS4KLSAgICAgICAgQUxXQVlTX0lOTElORSBjb25z
dCBIYXNoRW50cnkqIGVudHJ5KEpTR2xvYmFsRGF0YSogZ2xvYmFsRGF0YSwgY29uc3QgSWRlbnRp
ZmllciYgaWRlbnRpZmllcikgY29uc3QKKyAgICAgICAgQUxXQVlTX0lOTElORSBjb25zdCBIYXNo
RW50cnkqIGVudHJ5KEpTR2xvYmFsRGF0YSogZ2xvYmFsRGF0YSwgUHJvcGVydHlOYW1lIGlkZW50
aWZpZXIpIGNvbnN0CiAgICAgICAgIHsKICAgICAgICAgICAgIGluaXRpYWxpemVJZk5lZWRlZChn
bG9iYWxEYXRhKTsKICAgICAgICAgICAgIHJldHVybiBlbnRyeShpZGVudGlmaWVyKTsKICAgICAg
ICAgfQogCi0gICAgICAgIEFMV0FZU19JTkxJTkUgY29uc3QgSGFzaEVudHJ5KiBlbnRyeShFeGVj
U3RhdGUqIGV4ZWMsIGNvbnN0IElkZW50aWZpZXImIGlkZW50aWZpZXIpIGNvbnN0CisgICAgICAg
IEFMV0FZU19JTkxJTkUgY29uc3QgSGFzaEVudHJ5KiBlbnRyeShFeGVjU3RhdGUqIGV4ZWMsIFBy
b3BlcnR5TmFtZSBpZGVudGlmaWVyKSBjb25zdAogICAgICAgICB7CiAgICAgICAgICAgICBpbml0
aWFsaXplSWZOZWVkZWQoZXhlYyk7CiAgICAgICAgICAgICByZXR1cm4gZW50cnkoaWRlbnRpZmll
cik7CkBAIC0xOTksNyArMTk5LDcgQEAgbmFtZXNwYWNlIEpTQyB7CiAgICAgICAgIH0KIAogICAg
IHByaXZhdGU6Ci0gICAgICAgIEFMV0FZU19JTkxJTkUgY29uc3QgSGFzaEVudHJ5KiBlbnRyeShj
b25zdCBJZGVudGlmaWVyJiBpZGVudGlmaWVyKSBjb25zdAorICAgICAgICBBTFdBWVNfSU5MSU5F
IGNvbnN0IEhhc2hFbnRyeSogZW50cnkoUHJvcGVydHlOYW1lIGlkZW50aWZpZXIpIGNvbnN0CiAg
ICAgICAgIHsKICAgICAgICAgICAgIEFTU0VSVCh0YWJsZSk7CiAKQEAgLTIyMSw3ICsyMjEsNyBA
QCBuYW1lc3BhY2UgSlNDIHsKICAgICAgICAgSlNfRVhQT1JUX1BSSVZBVEUgdm9pZCBjcmVhdGVU
YWJsZShKU0dsb2JhbERhdGEqKSBjb25zdDsKICAgICB9OwogCi0gICAgSlNfRVhQT1JUX1BSSVZB
VEUgYm9vbCBzZXRVcFN0YXRpY0Z1bmN0aW9uU2xvdChFeGVjU3RhdGUqLCBjb25zdCBIYXNoRW50
cnkqLCBKU09iamVjdCogdGhpc09iamVjdCwgY29uc3QgSWRlbnRpZmllciYgcHJvcGVydHlOYW1l
LCBQcm9wZXJ0eVNsb3QmKTsKKyAgICBKU19FWFBPUlRfUFJJVkFURSBib29sIHNldFVwU3RhdGlj
RnVuY3Rpb25TbG90KEV4ZWNTdGF0ZSosIGNvbnN0IEhhc2hFbnRyeSosIEpTT2JqZWN0KiB0aGlz
T2JqZWN0LCBQcm9wZXJ0eU5hbWUgcHJvcGVydHlOYW1lLCBQcm9wZXJ0eVNsb3QmKTsKIAogICAg
IC8qKgogICAgICAqIFRoaXMgbWV0aG9kIGRvZXMgaXQgYWxsIChsb29raW5nIGluIHRoZSBoYXNo
dGFibGUsIGNoZWNraW5nIGZvciBmdW5jdGlvbgpAQCAtMjMwLDcgKzIzMCw3IEBAIG5hbWVzcGFj
ZSBKU0MgewogICAgICAqIHVua25vd24gcHJvcGVydHkpLgogICAgICAqLwogICAgIHRlbXBsYXRl
IDxjbGFzcyBUaGlzSW1wLCBjbGFzcyBQYXJlbnRJbXA+Ci0gICAgaW5saW5lIGJvb2wgZ2V0U3Rh
dGljUHJvcGVydHlTbG90KEV4ZWNTdGF0ZSogZXhlYywgY29uc3QgSGFzaFRhYmxlKiB0YWJsZSwg
VGhpc0ltcCogdGhpc09iaiwgY29uc3QgSWRlbnRpZmllciYgcHJvcGVydHlOYW1lLCBQcm9wZXJ0
eVNsb3QmIHNsb3QpCisgICAgaW5saW5lIGJvb2wgZ2V0U3RhdGljUHJvcGVydHlTbG90KEV4ZWNT
dGF0ZSogZXhlYywgY29uc3QgSGFzaFRhYmxlKiB0YWJsZSwgVGhpc0ltcCogdGhpc09iaiwgUHJv
cGVydHlOYW1lIHByb3BlcnR5TmFtZSwgUHJvcGVydHlTbG90JiBzbG90KQogICAgIHsKICAgICAg
ICAgY29uc3QgSGFzaEVudHJ5KiBlbnRyeSA9IHRhYmxlLT5lbnRyeShleGVjLCBwcm9wZXJ0eU5h
bWUpOwogCkBAIC0yNDUsNyArMjQ1LDcgQEAgbmFtZXNwYWNlIEpTQyB7CiAgICAgfQogCiAgICAg
dGVtcGxhdGUgPGNsYXNzIFRoaXNJbXAsIGNsYXNzIFBhcmVudEltcD4KLSAgICBpbmxpbmUgYm9v
bCBnZXRTdGF0aWNQcm9wZXJ0eURlc2NyaXB0b3IoRXhlY1N0YXRlKiBleGVjLCBjb25zdCBIYXNo
VGFibGUqIHRhYmxlLCBUaGlzSW1wKiB0aGlzT2JqLCBjb25zdCBJZGVudGlmaWVyJiBwcm9wZXJ0
eU5hbWUsIFByb3BlcnR5RGVzY3JpcHRvciYgZGVzY3JpcHRvcikKKyAgICBpbmxpbmUgYm9vbCBn
ZXRTdGF0aWNQcm9wZXJ0eURlc2NyaXB0b3IoRXhlY1N0YXRlKiBleGVjLCBjb25zdCBIYXNoVGFi
bGUqIHRhYmxlLCBUaGlzSW1wKiB0aGlzT2JqLCBQcm9wZXJ0eU5hbWUgcHJvcGVydHlOYW1lLCBQ
cm9wZXJ0eURlc2NyaXB0b3ImIGRlc2NyaXB0b3IpCiAgICAgewogICAgICAgICBjb25zdCBIYXNo
RW50cnkqIGVudHJ5ID0gdGFibGUtPmVudHJ5KGV4ZWMsIHByb3BlcnR5TmFtZSk7CiAgICAgICAg
IApAQCAtMjcxLDcgKzI3MSw3IEBAIG5hbWVzcGFjZSBKU0MgewogICAgICAqIGEgZHVtbXkgZ2V0
VmFsdWVQcm9wZXJ0eS4KICAgICAgKi8KICAgICB0ZW1wbGF0ZSA8Y2xhc3MgUGFyZW50SW1wPgot
ICAgIGlubGluZSBib29sIGdldFN0YXRpY0Z1bmN0aW9uU2xvdChFeGVjU3RhdGUqIGV4ZWMsIGNv
bnN0IEhhc2hUYWJsZSogdGFibGUsIEpTT2JqZWN0KiB0aGlzT2JqLCBjb25zdCBJZGVudGlmaWVy
JiBwcm9wZXJ0eU5hbWUsIFByb3BlcnR5U2xvdCYgc2xvdCkKKyAgICBpbmxpbmUgYm9vbCBnZXRT
dGF0aWNGdW5jdGlvblNsb3QoRXhlY1N0YXRlKiBleGVjLCBjb25zdCBIYXNoVGFibGUqIHRhYmxl
LCBKU09iamVjdCogdGhpc09iaiwgUHJvcGVydHlOYW1lIHByb3BlcnR5TmFtZSwgUHJvcGVydHlT
bG90JiBzbG90KQogICAgIHsKICAgICAgICAgaWYgKFBhcmVudEltcDo6Z2V0T3duUHJvcGVydHlT
bG90KHRoaXNPYmosIGV4ZWMsIHByb3BlcnR5TmFtZSwgc2xvdCkpCiAgICAgICAgICAgICByZXR1
cm4gdHJ1ZTsKQEAgLTI4OSw3ICsyODksNyBAQCBuYW1lc3BhY2UgSlNDIHsKICAgICAgKiBhIGR1
bW15IGdldFZhbHVlUHJvcGVydHkuCiAgICAgICovCiAgICAgdGVtcGxhdGUgPGNsYXNzIFBhcmVu
dEltcD4KLSAgICBpbmxpbmUgYm9vbCBnZXRTdGF0aWNGdW5jdGlvbkRlc2NyaXB0b3IoRXhlY1N0
YXRlKiBleGVjLCBjb25zdCBIYXNoVGFibGUqIHRhYmxlLCBKU09iamVjdCogdGhpc09iaiwgY29u
c3QgSWRlbnRpZmllciYgcHJvcGVydHlOYW1lLCBQcm9wZXJ0eURlc2NyaXB0b3ImIGRlc2NyaXB0
b3IpCisgICAgaW5saW5lIGJvb2wgZ2V0U3RhdGljRnVuY3Rpb25EZXNjcmlwdG9yKEV4ZWNTdGF0
ZSogZXhlYywgY29uc3QgSGFzaFRhYmxlKiB0YWJsZSwgSlNPYmplY3QqIHRoaXNPYmosIFByb3Bl
cnR5TmFtZSBwcm9wZXJ0eU5hbWUsIFByb3BlcnR5RGVzY3JpcHRvciYgZGVzY3JpcHRvcikKICAg
ICB7CiAgICAgICAgIGlmIChQYXJlbnRJbXA6OmdldE93blByb3BlcnR5RGVzY3JpcHRvcihzdGF0
aWNfY2FzdDxQYXJlbnRJbXAqPih0aGlzT2JqKSwgZXhlYywgcHJvcGVydHlOYW1lLCBkZXNjcmlw
dG9yKSkKICAgICAgICAgICAgIHJldHVybiB0cnVlOwpAQCAtMzEwLDcgKzMxMCw3IEBAIG5hbWVz
cGFjZSBKU0MgewogICAgICAqIFVzaW5nIHRoaXMgaW5zdGVhZCBvZiBnZXRTdGF0aWNQcm9wZXJ0
eVNsb3QgcmVtb3ZlcyB0aGUgbmVlZCBmb3IgYSBGdW5jSW1wIGNsYXNzLgogICAgICAqLwogICAg
IHRlbXBsYXRlIDxjbGFzcyBUaGlzSW1wLCBjbGFzcyBQYXJlbnRJbXA+Ci0gICAgaW5saW5lIGJv
b2wgZ2V0U3RhdGljVmFsdWVTbG90KEV4ZWNTdGF0ZSogZXhlYywgY29uc3QgSGFzaFRhYmxlKiB0
YWJsZSwgVGhpc0ltcCogdGhpc09iaiwgY29uc3QgSWRlbnRpZmllciYgcHJvcGVydHlOYW1lLCBQ
cm9wZXJ0eVNsb3QmIHNsb3QpCisgICAgaW5saW5lIGJvb2wgZ2V0U3RhdGljVmFsdWVTbG90KEV4
ZWNTdGF0ZSogZXhlYywgY29uc3QgSGFzaFRhYmxlKiB0YWJsZSwgVGhpc0ltcCogdGhpc09iaiwg
UHJvcGVydHlOYW1lIHByb3BlcnR5TmFtZSwgUHJvcGVydHlTbG90JiBzbG90KQogICAgIHsKICAg
ICAgICAgY29uc3QgSGFzaEVudHJ5KiBlbnRyeSA9IHRhYmxlLT5lbnRyeShleGVjLCBwcm9wZXJ0
eU5hbWUpOwogCkBAIC0zMjgsNyArMzI4LDcgQEAgbmFtZXNwYWNlIEpTQyB7CiAgICAgICogVXNp
bmcgdGhpcyBpbnN0ZWFkIG9mIGdldFN0YXRpY1Byb3BlcnR5RGVzY3JpcHRvciByZW1vdmVzIHRo
ZSBuZWVkIGZvciBhIEZ1bmNJbXAgY2xhc3MuCiAgICAgICovCiAgICAgdGVtcGxhdGUgPGNsYXNz
IFRoaXNJbXAsIGNsYXNzIFBhcmVudEltcD4KLSAgICBpbmxpbmUgYm9vbCBnZXRTdGF0aWNWYWx1
ZURlc2NyaXB0b3IoRXhlY1N0YXRlKiBleGVjLCBjb25zdCBIYXNoVGFibGUqIHRhYmxlLCBUaGlz
SW1wKiB0aGlzT2JqLCBjb25zdCBJZGVudGlmaWVyJiBwcm9wZXJ0eU5hbWUsIFByb3BlcnR5RGVz
Y3JpcHRvciYgZGVzY3JpcHRvcikKKyAgICBpbmxpbmUgYm9vbCBnZXRTdGF0aWNWYWx1ZURlc2Ny
aXB0b3IoRXhlY1N0YXRlKiBleGVjLCBjb25zdCBIYXNoVGFibGUqIHRhYmxlLCBUaGlzSW1wKiB0
aGlzT2JqLCBQcm9wZXJ0eU5hbWUgcHJvcGVydHlOYW1lLCBQcm9wZXJ0eURlc2NyaXB0b3ImIGRl
c2NyaXB0b3IpCiAgICAgewogICAgICAgICBjb25zdCBIYXNoRW50cnkqIGVudHJ5ID0gdGFibGUt
PmVudHJ5KGV4ZWMsIHByb3BlcnR5TmFtZSk7CiAgICAgICAgIApAQCAtMzQ4LDcgKzM0OCw3IEBA
IG5hbWVzcGFjZSBKU0MgewogICAgICAqIGlzIGZvdW5kIGl0IHNldHMgdGhlIHZhbHVlIGFuZCBy
ZXR1cm5zIHRydWUsIGVsc2UgaXQgcmV0dXJucyBmYWxzZS4KICAgICAgKi8KICAgICB0ZW1wbGF0
ZSA8Y2xhc3MgVGhpc0ltcD4KLSAgICBpbmxpbmUgYm9vbCBsb29rdXBQdXQoRXhlY1N0YXRlKiBl
eGVjLCBjb25zdCBJZGVudGlmaWVyJiBwcm9wZXJ0eU5hbWUsIEpTVmFsdWUgdmFsdWUsIGNvbnN0
IEhhc2hUYWJsZSogdGFibGUsIFRoaXNJbXAqIHRoaXNPYmosIGJvb2wgc2hvdWxkVGhyb3cgPSBm
YWxzZSkKKyAgICBpbmxpbmUgYm9vbCBsb29rdXBQdXQoRXhlY1N0YXRlKiBleGVjLCBQcm9wZXJ0
eU5hbWUgcHJvcGVydHlOYW1lLCBKU1ZhbHVlIHZhbHVlLCBjb25zdCBIYXNoVGFibGUqIHRhYmxl
LCBUaGlzSW1wKiB0aGlzT2JqLCBib29sIHNob3VsZFRocm93ID0gZmFsc2UpCiAgICAgewogICAg
ICAgICBjb25zdCBIYXNoRW50cnkqIGVudHJ5ID0gdGFibGUtPmVudHJ5KGV4ZWMsIHByb3BlcnR5
TmFtZSk7CiAgICAgICAgIApAQCAtMzczLDcgKzM3Myw3IEBAIG5hbWVzcGFjZSBKU0MgewogICAg
ICAqIHRoZW4gaXQgY2FsbHMgcHV0KCkgb24gdGhlIFBhcmVudEltcCBjbGFzcy4KICAgICAgKi8K
ICAgICB0ZW1wbGF0ZSA8Y2xhc3MgVGhpc0ltcCwgY2xhc3MgUGFyZW50SW1wPgotICAgIGlubGlu
ZSB2b2lkIGxvb2t1cFB1dChFeGVjU3RhdGUqIGV4ZWMsIGNvbnN0IElkZW50aWZpZXImIHByb3Bl
cnR5TmFtZSwgSlNWYWx1ZSB2YWx1ZSwgY29uc3QgSGFzaFRhYmxlKiB0YWJsZSwgVGhpc0ltcCog
dGhpc09iaiwgUHV0UHJvcGVydHlTbG90JiBzbG90KQorICAgIGlubGluZSB2b2lkIGxvb2t1cFB1
dChFeGVjU3RhdGUqIGV4ZWMsIFByb3BlcnR5TmFtZSBwcm9wZXJ0eU5hbWUsIEpTVmFsdWUgdmFs
dWUsIGNvbnN0IEhhc2hUYWJsZSogdGFibGUsIFRoaXNJbXAqIHRoaXNPYmosIFB1dFByb3BlcnR5
U2xvdCYgc2xvdCkKICAgICB7CiAgICAgICAgIGlmICghbG9va3VwUHV0PFRoaXNJbXA+KGV4ZWMs
IHByb3BlcnR5TmFtZSwgdmFsdWUsIHRhYmxlLCB0aGlzT2JqLCBzbG90LmlzU3RyaWN0TW9kZSgp
KSkKICAgICAgICAgICAgIFBhcmVudEltcDo6cHV0KHRoaXNPYmosIGV4ZWMsIHByb3BlcnR5TmFt
ZSwgdmFsdWUsIHNsb3QpOyAvLyBub3QgZm91bmQ6IGZvcndhcmQgdG8gcGFyZW50CkluZGV4OiBT
b3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9NYXRoT2JqZWN0LmNwcAo9PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0t
LSBTb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9NYXRoT2JqZWN0LmNwcAkocmV2aXNpb24g
MTE2NjY3KQorKysgU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvTWF0aE9iamVjdC5jcHAJ
KHdvcmtpbmcgY29weSkKQEAgLTEwNiwxMiArMTA2LDEyIEBAIHZvaWQgTWF0aE9iamVjdDo6Zmlu
aXNoQ3JlYXRpb24oRXhlY1N0YXQKICAgICBwdXREaXJlY3RXaXRob3V0VHJhbnNpdGlvbihleGVj
LT5nbG9iYWxEYXRhKCksIElkZW50aWZpZXIoZXhlYywgIlNRUlQyIiksIGpzTnVtYmVyKHNxcnQo
Mi4wKSksIERvbnREZWxldGUgfCBEb250RW51bSB8IFJlYWRPbmx5KTsKIH0KIAotYm9vbCBNYXRo
T2JqZWN0OjpnZXRPd25Qcm9wZXJ0eVNsb3QoSlNDZWxsKiBjZWxsLCBFeGVjU3RhdGUqIGV4ZWMs
IGNvbnN0IElkZW50aWZpZXImIHByb3BlcnR5TmFtZSwgUHJvcGVydHlTbG90ICZzbG90KQorYm9v
bCBNYXRoT2JqZWN0OjpnZXRPd25Qcm9wZXJ0eVNsb3QoSlNDZWxsKiBjZWxsLCBFeGVjU3RhdGUq
IGV4ZWMsIFByb3BlcnR5TmFtZSBwcm9wZXJ0eU5hbWUsIFByb3BlcnR5U2xvdCAmc2xvdCkKIHsK
ICAgICByZXR1cm4gZ2V0U3RhdGljRnVuY3Rpb25TbG90PEpTT2JqZWN0PihleGVjLCBFeGVjU3Rh
dGU6Om1hdGhUYWJsZShleGVjKSwganNDYXN0PE1hdGhPYmplY3QqPihjZWxsKSwgcHJvcGVydHlO
YW1lLCBzbG90KTsKIH0KIAotYm9vbCBNYXRoT2JqZWN0OjpnZXRPd25Qcm9wZXJ0eURlc2NyaXB0
b3IoSlNPYmplY3QqIG9iamVjdCwgRXhlY1N0YXRlKiBleGVjLCBjb25zdCBJZGVudGlmaWVyJiBw
cm9wZXJ0eU5hbWUsIFByb3BlcnR5RGVzY3JpcHRvciYgZGVzY3JpcHRvcikKK2Jvb2wgTWF0aE9i
amVjdDo6Z2V0T3duUHJvcGVydHlEZXNjcmlwdG9yKEpTT2JqZWN0KiBvYmplY3QsIEV4ZWNTdGF0
ZSogZXhlYywgUHJvcGVydHlOYW1lIHByb3BlcnR5TmFtZSwgUHJvcGVydHlEZXNjcmlwdG9yJiBk
ZXNjcmlwdG9yKQogewogICAgIHJldHVybiBnZXRTdGF0aWNGdW5jdGlvbkRlc2NyaXB0b3I8SlNP
YmplY3Q+KGV4ZWMsIEV4ZWNTdGF0ZTo6bWF0aFRhYmxlKGV4ZWMpLCBqc0Nhc3Q8TWF0aE9iamVj
dCo+KG9iamVjdCksIHByb3BlcnR5TmFtZSwgZGVzY3JpcHRvcik7CiB9CkluZGV4OiBTb3VyY2Uv
SmF2YVNjcmlwdENvcmUvcnVudGltZS9NYXRoT2JqZWN0LmgKPT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNl
L0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvTWF0aE9iamVjdC5oCShyZXZpc2lvbiAxMTY2NjcpCisr
KyBTb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9NYXRoT2JqZWN0LmgJKHdvcmtpbmcgY29w
eSkKQEAgLTM4LDggKzM4LDggQEAgbmFtZXNwYWNlIEpTQyB7CiAgICAgICAgICAgICBvYmplY3Qt
PmZpbmlzaENyZWF0aW9uKGV4ZWMsIGdsb2JhbE9iamVjdCk7CiAgICAgICAgICAgICByZXR1cm4g
b2JqZWN0OwogICAgICAgICB9Ci0gICAgICAgIHN0YXRpYyBib29sIGdldE93blByb3BlcnR5U2xv
dChKU0NlbGwqLCBFeGVjU3RhdGUqLCBjb25zdCBJZGVudGlmaWVyJiwgUHJvcGVydHlTbG90Jik7
Ci0gICAgICAgIHN0YXRpYyBib29sIGdldE93blByb3BlcnR5RGVzY3JpcHRvcihKU09iamVjdCos
IEV4ZWNTdGF0ZSosIGNvbnN0IElkZW50aWZpZXImLCBQcm9wZXJ0eURlc2NyaXB0b3ImKTsKKyAg
ICAgICAgc3RhdGljIGJvb2wgZ2V0T3duUHJvcGVydHlTbG90KEpTQ2VsbCosIEV4ZWNTdGF0ZSos
IFByb3BlcnR5TmFtZSwgUHJvcGVydHlTbG90Jik7CisgICAgICAgIHN0YXRpYyBib29sIGdldE93
blByb3BlcnR5RGVzY3JpcHRvcihKU09iamVjdCosIEV4ZWNTdGF0ZSosIFByb3BlcnR5TmFtZSwg
UHJvcGVydHlEZXNjcmlwdG9yJik7CiAKICAgICAgICAgc3RhdGljIGNvbnN0IENsYXNzSW5mbyBz
X2luZm87CiAKSW5kZXg6IFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL05hdGl2ZUVycm9y
Q29uc3RydWN0b3IuaAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGlt
ZS9OYXRpdmVFcnJvckNvbnN0cnVjdG9yLmgJKHJldmlzaW9uIDExNjY2NykKKysrIFNvdXJjZS9K
YXZhU2NyaXB0Q29yZS9ydW50aW1lL05hdGl2ZUVycm9yQ29uc3RydWN0b3IuaAkod29ya2luZyBj
b3B5KQpAQCAtNTMsNyArNTMsNyBAQCBuYW1lc3BhY2UgSlNDIHsKICAgICBwcm90ZWN0ZWQ6CiAg
ICAgICAgIHZvaWQgZmluaXNoQ3JlYXRpb24oRXhlY1N0YXRlKiBleGVjLCBKU0dsb2JhbE9iamVj
dCogZ2xvYmFsT2JqZWN0LCBTdHJ1Y3R1cmUqIHByb3RvdHlwZVN0cnVjdHVyZSwgY29uc3QgVVN0
cmluZyYgbmFtZSkKICAgICAgICAgewotICAgICAgICAgICAgQmFzZTo6ZmluaXNoQ3JlYXRpb24o
ZXhlYy0+Z2xvYmFsRGF0YSgpLCBJZGVudGlmaWVyKGV4ZWMsIG5hbWUpKTsKKyAgICAgICAgICAg
IEJhc2U6OmZpbmlzaENyZWF0aW9uKGV4ZWMtPmdsb2JhbERhdGEoKSwgbmFtZSk7CiAgICAgICAg
ICAgICBBU1NFUlQoaW5oZXJpdHMoJnNfaW5mbykpOwogCiAgICAgICAgICAgICBOYXRpdmVFcnJv
clByb3RvdHlwZSogcHJvdG90eXBlID0gTmF0aXZlRXJyb3JQcm90b3R5cGU6OmNyZWF0ZShleGVj
LCBnbG9iYWxPYmplY3QsIHByb3RvdHlwZVN0cnVjdHVyZSwgbmFtZSwgdGhpcyk7CkluZGV4OiBT
b3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9OdW1iZXJDb25zdHJ1Y3Rvci5jcHAKPT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PQotLS0gU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvTnVtYmVyQ29uc3RydWN0b3Iu
Y3BwCShyZXZpc2lvbiAxMTY2NjcpCisrKyBTb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9O
dW1iZXJDb25zdHJ1Y3Rvci5jcHAJKHdvcmtpbmcgY29weSkKQEAgLTMwLDExICszMCwxMSBAQCBu
YW1lc3BhY2UgSlNDIHsKIAogQVNTRVJUX0NMQVNTX0ZJVFNfSU5fQ0VMTChOdW1iZXJDb25zdHJ1
Y3Rvcik7CiAKLXN0YXRpYyBKU1ZhbHVlIG51bWJlckNvbnN0cnVjdG9yTmFOVmFsdWUoRXhlY1N0
YXRlKiwgSlNWYWx1ZSwgY29uc3QgSWRlbnRpZmllciYpOwotc3RhdGljIEpTVmFsdWUgbnVtYmVy
Q29uc3RydWN0b3JOZWdJbmZpbml0eShFeGVjU3RhdGUqLCBKU1ZhbHVlLCBjb25zdCBJZGVudGlm
aWVyJik7Ci1zdGF0aWMgSlNWYWx1ZSBudW1iZXJDb25zdHJ1Y3RvclBvc0luZmluaXR5KEV4ZWNT
dGF0ZSosIEpTVmFsdWUsIGNvbnN0IElkZW50aWZpZXImKTsKLXN0YXRpYyBKU1ZhbHVlIG51bWJl
ckNvbnN0cnVjdG9yTWF4VmFsdWUoRXhlY1N0YXRlKiwgSlNWYWx1ZSwgY29uc3QgSWRlbnRpZmll
ciYpOwotc3RhdGljIEpTVmFsdWUgbnVtYmVyQ29uc3RydWN0b3JNaW5WYWx1ZShFeGVjU3RhdGUq
LCBKU1ZhbHVlLCBjb25zdCBJZGVudGlmaWVyJik7CitzdGF0aWMgSlNWYWx1ZSBudW1iZXJDb25z
dHJ1Y3Rvck5hTlZhbHVlKEV4ZWNTdGF0ZSosIEpTVmFsdWUsIFByb3BlcnR5TmFtZSk7CitzdGF0
aWMgSlNWYWx1ZSBudW1iZXJDb25zdHJ1Y3Rvck5lZ0luZmluaXR5KEV4ZWNTdGF0ZSosIEpTVmFs
dWUsIFByb3BlcnR5TmFtZSk7CitzdGF0aWMgSlNWYWx1ZSBudW1iZXJDb25zdHJ1Y3RvclBvc0lu
ZmluaXR5KEV4ZWNTdGF0ZSosIEpTVmFsdWUsIFByb3BlcnR5TmFtZSk7CitzdGF0aWMgSlNWYWx1
ZSBudW1iZXJDb25zdHJ1Y3Rvck1heFZhbHVlKEV4ZWNTdGF0ZSosIEpTVmFsdWUsIFByb3BlcnR5
TmFtZSk7CitzdGF0aWMgSlNWYWx1ZSBudW1iZXJDb25zdHJ1Y3Rvck1pblZhbHVlKEV4ZWNTdGF0
ZSosIEpTVmFsdWUsIFByb3BlcnR5TmFtZSk7CiAKIH0gLy8gbmFtZXNwYWNlIEpTQwogCkBAIC02
Myw3ICs2Myw3IEBAIE51bWJlckNvbnN0cnVjdG9yOjpOdW1iZXJDb25zdHJ1Y3RvcihKU0cKIAog
dm9pZCBOdW1iZXJDb25zdHJ1Y3Rvcjo6ZmluaXNoQ3JlYXRpb24oRXhlY1N0YXRlKiBleGVjLCBO
dW1iZXJQcm90b3R5cGUqIG51bWJlclByb3RvdHlwZSkKIHsKLSAgICBCYXNlOjpmaW5pc2hDcmVh
dGlvbihleGVjLT5nbG9iYWxEYXRhKCksIElkZW50aWZpZXIoZXhlYywgbnVtYmVyUHJvdG90eXBl
LT5zX2luZm8uY2xhc3NOYW1lKSk7CisgICAgQmFzZTo6ZmluaXNoQ3JlYXRpb24oZXhlYy0+Z2xv
YmFsRGF0YSgpLCBudW1iZXJQcm90b3R5cGUtPnNfaW5mby5jbGFzc05hbWUpOwogICAgIEFTU0VS
VChpbmhlcml0cygmc19pbmZvKSk7CiAKICAgICAvLyBOdW1iZXIuUHJvdG90eXBlCkBAIC03Myw0
MiArNzMsNDIgQEAgdm9pZCBOdW1iZXJDb25zdHJ1Y3Rvcjo6ZmluaXNoQ3JlYXRpb24oRQogICAg
IHB1dERpcmVjdFdpdGhvdXRUcmFuc2l0aW9uKGV4ZWMtPmdsb2JhbERhdGEoKSwgZXhlYy0+cHJv
cGVydHlOYW1lcygpLmxlbmd0aCwganNOdW1iZXIoMSksIFJlYWRPbmx5IHwgRG9udEVudW0gfCBE
b250RGVsZXRlKTsKIH0KIAotYm9vbCBOdW1iZXJDb25zdHJ1Y3Rvcjo6Z2V0T3duUHJvcGVydHlT
bG90KEpTQ2VsbCogY2VsbCwgRXhlY1N0YXRlKiBleGVjLCBjb25zdCBJZGVudGlmaWVyJiBwcm9w
ZXJ0eU5hbWUsIFByb3BlcnR5U2xvdCYgc2xvdCkKK2Jvb2wgTnVtYmVyQ29uc3RydWN0b3I6Omdl
dE93blByb3BlcnR5U2xvdChKU0NlbGwqIGNlbGwsIEV4ZWNTdGF0ZSogZXhlYywgUHJvcGVydHlO
YW1lIHByb3BlcnR5TmFtZSwgUHJvcGVydHlTbG90JiBzbG90KQogewogICAgIHJldHVybiBnZXRT
dGF0aWNWYWx1ZVNsb3Q8TnVtYmVyQ29uc3RydWN0b3IsIEludGVybmFsRnVuY3Rpb24+KGV4ZWMs
IEV4ZWNTdGF0ZTo6bnVtYmVyQ29uc3RydWN0b3JUYWJsZShleGVjKSwganNDYXN0PE51bWJlckNv
bnN0cnVjdG9yKj4oY2VsbCksIHByb3BlcnR5TmFtZSwgc2xvdCk7CiB9CiAKLWJvb2wgTnVtYmVy
Q29uc3RydWN0b3I6OmdldE93blByb3BlcnR5RGVzY3JpcHRvcihKU09iamVjdCogb2JqZWN0LCBF
eGVjU3RhdGUqIGV4ZWMsIGNvbnN0IElkZW50aWZpZXImIHByb3BlcnR5TmFtZSwgUHJvcGVydHlE
ZXNjcmlwdG9yJiBkZXNjcmlwdG9yKQorYm9vbCBOdW1iZXJDb25zdHJ1Y3Rvcjo6Z2V0T3duUHJv
cGVydHlEZXNjcmlwdG9yKEpTT2JqZWN0KiBvYmplY3QsIEV4ZWNTdGF0ZSogZXhlYywgUHJvcGVy
dHlOYW1lIHByb3BlcnR5TmFtZSwgUHJvcGVydHlEZXNjcmlwdG9yJiBkZXNjcmlwdG9yKQogewog
ICAgIHJldHVybiBnZXRTdGF0aWNWYWx1ZURlc2NyaXB0b3I8TnVtYmVyQ29uc3RydWN0b3IsIElu
dGVybmFsRnVuY3Rpb24+KGV4ZWMsIEV4ZWNTdGF0ZTo6bnVtYmVyQ29uc3RydWN0b3JUYWJsZShl
eGVjKSwganNDYXN0PE51bWJlckNvbnN0cnVjdG9yKj4ob2JqZWN0KSwgcHJvcGVydHlOYW1lLCBk
ZXNjcmlwdG9yKTsKIH0KIAotdm9pZCBOdW1iZXJDb25zdHJ1Y3Rvcjo6cHV0KEpTQ2VsbCogY2Vs
bCwgRXhlY1N0YXRlKiBleGVjLCBjb25zdCBJZGVudGlmaWVyJiBwcm9wZXJ0eU5hbWUsIEpTVmFs
dWUgdmFsdWUsIFB1dFByb3BlcnR5U2xvdCYgc2xvdCkKK3ZvaWQgTnVtYmVyQ29uc3RydWN0b3I6
OnB1dChKU0NlbGwqIGNlbGwsIEV4ZWNTdGF0ZSogZXhlYywgUHJvcGVydHlOYW1lIHByb3BlcnR5
TmFtZSwgSlNWYWx1ZSB2YWx1ZSwgUHV0UHJvcGVydHlTbG90JiBzbG90KQogewogICAgIGxvb2t1
cFB1dDxOdW1iZXJDb25zdHJ1Y3RvciwgSW50ZXJuYWxGdW5jdGlvbj4oZXhlYywgcHJvcGVydHlO
YW1lLCB2YWx1ZSwgRXhlY1N0YXRlOjpudW1iZXJDb25zdHJ1Y3RvclRhYmxlKGV4ZWMpLCBqc0Nh
c3Q8TnVtYmVyQ29uc3RydWN0b3IqPihjZWxsKSwgc2xvdCk7CiB9CiAKLXN0YXRpYyBKU1ZhbHVl
IG51bWJlckNvbnN0cnVjdG9yTmFOVmFsdWUoRXhlY1N0YXRlKiwgSlNWYWx1ZSwgY29uc3QgSWRl
bnRpZmllciYpCitzdGF0aWMgSlNWYWx1ZSBudW1iZXJDb25zdHJ1Y3Rvck5hTlZhbHVlKEV4ZWNT
dGF0ZSosIEpTVmFsdWUsIFByb3BlcnR5TmFtZSkKIHsKICAgICByZXR1cm4ganNOYU4oKTsKIH0K
IAotc3RhdGljIEpTVmFsdWUgbnVtYmVyQ29uc3RydWN0b3JOZWdJbmZpbml0eShFeGVjU3RhdGUq
LCBKU1ZhbHVlLCBjb25zdCBJZGVudGlmaWVyJikKK3N0YXRpYyBKU1ZhbHVlIG51bWJlckNvbnN0
cnVjdG9yTmVnSW5maW5pdHkoRXhlY1N0YXRlKiwgSlNWYWx1ZSwgUHJvcGVydHlOYW1lKQogewog
ICAgIHJldHVybiBqc051bWJlcigtc3RkOjpudW1lcmljX2xpbWl0czxkb3VibGU+OjppbmZpbml0
eSgpKTsKIH0KIAotc3RhdGljIEpTVmFsdWUgbnVtYmVyQ29uc3RydWN0b3JQb3NJbmZpbml0eShF
eGVjU3RhdGUqLCBKU1ZhbHVlLCBjb25zdCBJZGVudGlmaWVyJikKK3N0YXRpYyBKU1ZhbHVlIG51
bWJlckNvbnN0cnVjdG9yUG9zSW5maW5pdHkoRXhlY1N0YXRlKiwgSlNWYWx1ZSwgUHJvcGVydHlO
YW1lKQogewogICAgIHJldHVybiBqc051bWJlcihzdGQ6Om51bWVyaWNfbGltaXRzPGRvdWJsZT46
OmluZmluaXR5KCkpOwogfQogCi1zdGF0aWMgSlNWYWx1ZSBudW1iZXJDb25zdHJ1Y3Rvck1heFZh
bHVlKEV4ZWNTdGF0ZSosIEpTVmFsdWUsIGNvbnN0IElkZW50aWZpZXImKQorc3RhdGljIEpTVmFs
dWUgbnVtYmVyQ29uc3RydWN0b3JNYXhWYWx1ZShFeGVjU3RhdGUqLCBKU1ZhbHVlLCBQcm9wZXJ0
eU5hbWUpCiB7CiAgICAgcmV0dXJuIGpzTnVtYmVyKDEuNzk3NjkzMTM0ODYyMzE1N0UrMzA4KTsK
IH0KIAotc3RhdGljIEpTVmFsdWUgbnVtYmVyQ29uc3RydWN0b3JNaW5WYWx1ZShFeGVjU3RhdGUq
LCBKU1ZhbHVlLCBjb25zdCBJZGVudGlmaWVyJikKK3N0YXRpYyBKU1ZhbHVlIG51bWJlckNvbnN0
cnVjdG9yTWluVmFsdWUoRXhlY1N0YXRlKiwgSlNWYWx1ZSwgUHJvcGVydHlOYW1lKQogewogICAg
IHJldHVybiBqc051bWJlcig1RS0zMjQpOwogfQpJbmRleDogU291cmNlL0phdmFTY3JpcHRDb3Jl
L3J1bnRpbWUvTnVtYmVyQ29uc3RydWN0b3IuaAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvSmF2YVNj
cmlwdENvcmUvcnVudGltZS9OdW1iZXJDb25zdHJ1Y3Rvci5oCShyZXZpc2lvbiAxMTY2NjcpCisr
KyBTb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9OdW1iZXJDb25zdHJ1Y3Rvci5oCSh3b3Jr
aW5nIGNvcHkpCkBAIC0zOCwxMCArMzgsMTAgQEAgbmFtZXNwYWNlIEpTQyB7CiAgICAgICAgICAg
ICByZXR1cm4gY29uc3RydWN0b3I7CiAgICAgICAgIH0KIAotICAgICAgICBzdGF0aWMgdm9pZCBw
dXQoSlNDZWxsKiwgRXhlY1N0YXRlKiwgY29uc3QgSWRlbnRpZmllciYgcHJvcGVydHlOYW1lLCBK
U1ZhbHVlLCBQdXRQcm9wZXJ0eVNsb3QmKTsKKyAgICAgICAgc3RhdGljIHZvaWQgcHV0KEpTQ2Vs
bCosIEV4ZWNTdGF0ZSosIFByb3BlcnR5TmFtZSBwcm9wZXJ0eU5hbWUsIEpTVmFsdWUsIFB1dFBy
b3BlcnR5U2xvdCYpOwogCi0gICAgICAgIHN0YXRpYyBib29sIGdldE93blByb3BlcnR5U2xvdChK
U0NlbGwqLCBFeGVjU3RhdGUqLCBjb25zdCBJZGVudGlmaWVyJiwgUHJvcGVydHlTbG90Jik7Ci0g
ICAgICAgIHN0YXRpYyBib29sIGdldE93blByb3BlcnR5RGVzY3JpcHRvcihKU09iamVjdCosIEV4
ZWNTdGF0ZSosIGNvbnN0IElkZW50aWZpZXImLCBQcm9wZXJ0eURlc2NyaXB0b3ImKTsKKyAgICAg
ICAgc3RhdGljIGJvb2wgZ2V0T3duUHJvcGVydHlTbG90KEpTQ2VsbCosIEV4ZWNTdGF0ZSosIFBy
b3BlcnR5TmFtZSwgUHJvcGVydHlTbG90Jik7CisgICAgICAgIHN0YXRpYyBib29sIGdldE93blBy
b3BlcnR5RGVzY3JpcHRvcihKU09iamVjdCosIEV4ZWNTdGF0ZSosIFByb3BlcnR5TmFtZSwgUHJv
cGVydHlEZXNjcmlwdG9yJik7CiAgICAgICAgIEpTVmFsdWUgZ2V0VmFsdWVQcm9wZXJ0eShFeGVj
U3RhdGUqLCBpbnQgdG9rZW4pIGNvbnN0OwogCiAgICAgICAgIHN0YXRpYyBjb25zdCBDbGFzc0lu
Zm8gc19pbmZvOwpJbmRleDogU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvTnVtYmVyUHJv
dG90eXBlLmNwcAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9O
dW1iZXJQcm90b3R5cGUuY3BwCShyZXZpc2lvbiAxMTY2NjcpCisrKyBTb3VyY2UvSmF2YVNjcmlw
dENvcmUvcnVudGltZS9OdW1iZXJQcm90b3R5cGUuY3BwCSh3b3JraW5nIGNvcHkpCkBAIC04NCwx
MiArODQsMTIgQEAgdm9pZCBOdW1iZXJQcm90b3R5cGU6OmZpbmlzaENyZWF0aW9uKEV4ZQogICAg
IEFTU0VSVChpbmhlcml0cygmc19pbmZvKSk7CiB9CiAKLWJvb2wgTnVtYmVyUHJvdG90eXBlOjpn
ZXRPd25Qcm9wZXJ0eVNsb3QoSlNDZWxsKiBjZWxsLCBFeGVjU3RhdGUqIGV4ZWMsIGNvbnN0IElk
ZW50aWZpZXImIHByb3BlcnR5TmFtZSwgUHJvcGVydHlTbG90ICZzbG90KQorYm9vbCBOdW1iZXJQ
cm90b3R5cGU6OmdldE93blByb3BlcnR5U2xvdChKU0NlbGwqIGNlbGwsIEV4ZWNTdGF0ZSogZXhl
YywgUHJvcGVydHlOYW1lIHByb3BlcnR5TmFtZSwgUHJvcGVydHlTbG90ICZzbG90KQogewogICAg
IHJldHVybiBnZXRTdGF0aWNGdW5jdGlvblNsb3Q8TnVtYmVyT2JqZWN0PihleGVjLCBFeGVjU3Rh
dGU6Om51bWJlclByb3RvdHlwZVRhYmxlKGV4ZWMpLCBqc0Nhc3Q8TnVtYmVyUHJvdG90eXBlKj4o
Y2VsbCksIHByb3BlcnR5TmFtZSwgc2xvdCk7CiB9CiAKLWJvb2wgTnVtYmVyUHJvdG90eXBlOjpn
ZXRPd25Qcm9wZXJ0eURlc2NyaXB0b3IoSlNPYmplY3QqIG9iamVjdCwgRXhlY1N0YXRlKiBleGVj
LCBjb25zdCBJZGVudGlmaWVyJiBwcm9wZXJ0eU5hbWUsIFByb3BlcnR5RGVzY3JpcHRvciYgZGVz
Y3JpcHRvcikKK2Jvb2wgTnVtYmVyUHJvdG90eXBlOjpnZXRPd25Qcm9wZXJ0eURlc2NyaXB0b3Io
SlNPYmplY3QqIG9iamVjdCwgRXhlY1N0YXRlKiBleGVjLCBQcm9wZXJ0eU5hbWUgcHJvcGVydHlO
YW1lLCBQcm9wZXJ0eURlc2NyaXB0b3ImIGRlc2NyaXB0b3IpCiB7CiAgICAgcmV0dXJuIGdldFN0
YXRpY0Z1bmN0aW9uRGVzY3JpcHRvcjxOdW1iZXJPYmplY3Q+KGV4ZWMsIEV4ZWNTdGF0ZTo6bnVt
YmVyUHJvdG90eXBlVGFibGUoZXhlYyksIGpzQ2FzdDxOdW1iZXJQcm90b3R5cGUqPihvYmplY3Qp
LCBwcm9wZXJ0eU5hbWUsIGRlc2NyaXB0b3IpOwogfQpJbmRleDogU291cmNlL0phdmFTY3JpcHRD
b3JlL3J1bnRpbWUvTnVtYmVyUHJvdG90eXBlLmgKPT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL0phdmFT
Y3JpcHRDb3JlL3J1bnRpbWUvTnVtYmVyUHJvdG90eXBlLmgJKHJldmlzaW9uIDExNjY2NykKKysr
IFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL051bWJlclByb3RvdHlwZS5oCSh3b3JraW5n
IGNvcHkpCkBAIC00OSw4ICs0OSw4IEBAIG5hbWVzcGFjZSBKU0MgewogCiAgICAgcHJpdmF0ZToK
ICAgICAgICAgTnVtYmVyUHJvdG90eXBlKEV4ZWNTdGF0ZSosIFN0cnVjdHVyZSopOwotICAgICAg
ICBzdGF0aWMgYm9vbCBnZXRPd25Qcm9wZXJ0eVNsb3QoSlNDZWxsKiwgRXhlY1N0YXRlKiwgY29u
c3QgSWRlbnRpZmllciYsIFByb3BlcnR5U2xvdCYpOwotICAgICAgICBzdGF0aWMgYm9vbCBnZXRP
d25Qcm9wZXJ0eURlc2NyaXB0b3IoSlNPYmplY3QqLCBFeGVjU3RhdGUqLCBjb25zdCBJZGVudGlm
aWVyJiwgUHJvcGVydHlEZXNjcmlwdG9yJik7CisgICAgICAgIHN0YXRpYyBib29sIGdldE93blBy
b3BlcnR5U2xvdChKU0NlbGwqLCBFeGVjU3RhdGUqLCBQcm9wZXJ0eU5hbWUsIFByb3BlcnR5U2xv
dCYpOworICAgICAgICBzdGF0aWMgYm9vbCBnZXRPd25Qcm9wZXJ0eURlc2NyaXB0b3IoSlNPYmpl
Y3QqLCBFeGVjU3RhdGUqLCBQcm9wZXJ0eU5hbWUsIFByb3BlcnR5RGVzY3JpcHRvciYpOwogICAg
IH07CiAKIH0gLy8gbmFtZXNwYWNlIEpTQwpJbmRleDogU291cmNlL0phdmFTY3JpcHRDb3JlL3J1
bnRpbWUvT2JqZWN0Q29uc3RydWN0b3IuY3BwCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9KYXZhU2Ny
aXB0Q29yZS9ydW50aW1lL09iamVjdENvbnN0cnVjdG9yLmNwcAkocmV2aXNpb24gMTE2NjY3KQor
KysgU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvT2JqZWN0Q29uc3RydWN0b3IuY3BwCSh3
b3JraW5nIGNvcHkpCkBAIC04NCwxOSArODQsMTkgQEAgT2JqZWN0Q29uc3RydWN0b3I6Ok9iamVj
dENvbnN0cnVjdG9yKEpTRwogCiB2b2lkIE9iamVjdENvbnN0cnVjdG9yOjpmaW5pc2hDcmVhdGlv
bihFeGVjU3RhdGUqIGV4ZWMsIE9iamVjdFByb3RvdHlwZSogb2JqZWN0UHJvdG90eXBlKQogewot
ICAgIEJhc2U6OmZpbmlzaENyZWF0aW9uKGV4ZWMtPmdsb2JhbERhdGEoKSwgSWRlbnRpZmllcihl
eGVjLCAiT2JqZWN0IikpOworICAgIEJhc2U6OmZpbmlzaENyZWF0aW9uKGV4ZWMtPmdsb2JhbERh
dGEoKSwgSWRlbnRpZmllcihleGVjLCAiT2JqZWN0IikudXN0cmluZygpKTsKICAgICAvLyBFQ01B
IDE1LjIuMy4xCiAgICAgcHV0RGlyZWN0V2l0aG91dFRyYW5zaXRpb24oZXhlYy0+Z2xvYmFsRGF0
YSgpLCBleGVjLT5wcm9wZXJ0eU5hbWVzKCkucHJvdG90eXBlLCBvYmplY3RQcm90b3R5cGUsIERv
bnRFbnVtIHwgRG9udERlbGV0ZSB8IFJlYWRPbmx5KTsKICAgICAvLyBuby4gb2YgYXJndW1lbnRz
IGZvciBjb25zdHJ1Y3RvcgogICAgIHB1dERpcmVjdFdpdGhvdXRUcmFuc2l0aW9uKGV4ZWMtPmds
b2JhbERhdGEoKSwgZXhlYy0+cHJvcGVydHlOYW1lcygpLmxlbmd0aCwganNOdW1iZXIoMSksIFJl
YWRPbmx5IHwgRG9udEVudW0gfCBEb250RGVsZXRlKTsKIH0KIAotYm9vbCBPYmplY3RDb25zdHJ1
Y3Rvcjo6Z2V0T3duUHJvcGVydHlTbG90KEpTQ2VsbCogY2VsbCwgRXhlY1N0YXRlKiBleGVjLCBj
b25zdCBJZGVudGlmaWVyJiBwcm9wZXJ0eU5hbWUsIFByb3BlcnR5U2xvdCAmc2xvdCkKK2Jvb2wg
T2JqZWN0Q29uc3RydWN0b3I6OmdldE93blByb3BlcnR5U2xvdChKU0NlbGwqIGNlbGwsIEV4ZWNT
dGF0ZSogZXhlYywgUHJvcGVydHlOYW1lIHByb3BlcnR5TmFtZSwgUHJvcGVydHlTbG90ICZzbG90
KQogewogICAgIHJldHVybiBnZXRTdGF0aWNGdW5jdGlvblNsb3Q8SlNPYmplY3Q+KGV4ZWMsIEV4
ZWNTdGF0ZTo6b2JqZWN0Q29uc3RydWN0b3JUYWJsZShleGVjKSwganNDYXN0PE9iamVjdENvbnN0
cnVjdG9yKj4oY2VsbCksIHByb3BlcnR5TmFtZSwgc2xvdCk7CiB9CiAKLWJvb2wgT2JqZWN0Q29u
c3RydWN0b3I6OmdldE93blByb3BlcnR5RGVzY3JpcHRvcihKU09iamVjdCogb2JqZWN0LCBFeGVj
U3RhdGUqIGV4ZWMsIGNvbnN0IElkZW50aWZpZXImIHByb3BlcnR5TmFtZSwgUHJvcGVydHlEZXNj
cmlwdG9yJiBkZXNjcmlwdG9yKQorYm9vbCBPYmplY3RDb25zdHJ1Y3Rvcjo6Z2V0T3duUHJvcGVy
dHlEZXNjcmlwdG9yKEpTT2JqZWN0KiBvYmplY3QsIEV4ZWNTdGF0ZSogZXhlYywgUHJvcGVydHlO
YW1lIHByb3BlcnR5TmFtZSwgUHJvcGVydHlEZXNjcmlwdG9yJiBkZXNjcmlwdG9yKQogewogICAg
IHJldHVybiBnZXRTdGF0aWNGdW5jdGlvbkRlc2NyaXB0b3I8SlNPYmplY3Q+KGV4ZWMsIEV4ZWNT
dGF0ZTo6b2JqZWN0Q29uc3RydWN0b3JUYWJsZShleGVjKSwganNDYXN0PE9iamVjdENvbnN0cnVj
dG9yKj4ob2JqZWN0KSwgcHJvcGVydHlOYW1lLCBkZXNjcmlwdG9yKTsKIH0KSW5kZXg6IFNvdXJj
ZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL09iamVjdENvbnN0cnVjdG9yLmgKPT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQot
LS0gU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvT2JqZWN0Q29uc3RydWN0b3IuaAkocmV2
aXNpb24gMTE2NjY3KQorKysgU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvT2JqZWN0Q29u
c3RydWN0b3IuaAkod29ya2luZyBjb3B5KQpAQCAtMzgsOCArMzgsOCBAQCBuYW1lc3BhY2UgSlND
IHsKICAgICAgICAgICAgIHJldHVybiBjb25zdHJ1Y3RvcjsKICAgICAgICAgfQogCi0gICAgICAg
IHN0YXRpYyBib29sIGdldE93blByb3BlcnR5U2xvdChKU0NlbGwqLCBFeGVjU3RhdGUqLCBjb25z
dCBJZGVudGlmaWVyJiwgUHJvcGVydHlTbG90Jik7Ci0gICAgICAgIHN0YXRpYyBib29sIGdldE93
blByb3BlcnR5RGVzY3JpcHRvcihKU09iamVjdCosIEV4ZWNTdGF0ZSosIGNvbnN0IElkZW50aWZp
ZXImLCBQcm9wZXJ0eURlc2NyaXB0b3ImKTsKKyAgICAgICAgc3RhdGljIGJvb2wgZ2V0T3duUHJv
cGVydHlTbG90KEpTQ2VsbCosIEV4ZWNTdGF0ZSosIFByb3BlcnR5TmFtZSwgUHJvcGVydHlTbG90
Jik7CisgICAgICAgIHN0YXRpYyBib29sIGdldE93blByb3BlcnR5RGVzY3JpcHRvcihKU09iamVj
dCosIEV4ZWNTdGF0ZSosIFByb3BlcnR5TmFtZSwgUHJvcGVydHlEZXNjcmlwdG9yJik7CiAKICAg
ICAgICAgc3RhdGljIGNvbnN0IENsYXNzSW5mbyBzX2luZm87CiAKSW5kZXg6IFNvdXJjZS9KYXZh
U2NyaXB0Q29yZS9ydW50aW1lL09iamVjdFByb3RvdHlwZS5jcHAKPT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291
cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvT2JqZWN0UHJvdG90eXBlLmNwcAkocmV2aXNpb24g
MTE2NjY3KQorKysgU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvT2JqZWN0UHJvdG90eXBl
LmNwcAkod29ya2luZyBjb3B5KQpAQCAtNzcsMjggKzc3LDIyIEBAIHZvaWQgT2JqZWN0UHJvdG90
eXBlOjpmaW5pc2hDcmVhdGlvbihKU0cKICAgICBBU1NFUlQoaW5oZXJpdHMoJnNfaW5mbykpOwog
fQogCi12b2lkIE9iamVjdFByb3RvdHlwZTo6cHV0KEpTQ2VsbCogY2VsbCwgRXhlY1N0YXRlKiBl
eGVjLCBjb25zdCBJZGVudGlmaWVyJiBwcm9wZXJ0eU5hbWUsIEpTVmFsdWUgdmFsdWUsIFB1dFBy
b3BlcnR5U2xvdCYgc2xvdCkKK3ZvaWQgT2JqZWN0UHJvdG90eXBlOjpwdXQoSlNDZWxsKiBjZWxs
LCBFeGVjU3RhdGUqIGV4ZWMsIFByb3BlcnR5TmFtZSBwcm9wZXJ0eU5hbWUsIEpTVmFsdWUgdmFs
dWUsIFB1dFByb3BlcnR5U2xvdCYgc2xvdCkKIHsKICAgICBPYmplY3RQcm90b3R5cGUqIHRoaXNP
YmplY3QgPSBqc0Nhc3Q8T2JqZWN0UHJvdG90eXBlKj4oY2VsbCk7CiAgICAgQmFzZTo6cHV0KGNl
bGwsIGV4ZWMsIHByb3BlcnR5TmFtZSwgdmFsdWUsIHNsb3QpOwogCi0gICAgaWYgKHRoaXNPYmpl
Y3QtPm1faGFzTm9Qcm9wZXJ0aWVzV2l0aFVJbnQzMk5hbWVzKSB7Ci0gICAgICAgIGJvb2wgaXNV
SW50MzI7Ci0gICAgICAgIHByb3BlcnR5TmFtZS50b1VJbnQzMihpc1VJbnQzMik7Ci0gICAgICAg
IHRoaXNPYmplY3QtPm1faGFzTm9Qcm9wZXJ0aWVzV2l0aFVJbnQzMk5hbWVzID0gIWlzVUludDMy
OwotICAgIH0KKyAgICBpZiAodGhpc09iamVjdC0+bV9oYXNOb1Byb3BlcnRpZXNXaXRoVUludDMy
TmFtZXMgJiYgcHJvcGVydHlOYW1lLmFzSW5kZXgoKSAhPSBQcm9wZXJ0eU5hbWU6Ok5vdEFuSW5k
ZXgpCisgICAgICAgIHRoaXNPYmplY3QtPm1faGFzTm9Qcm9wZXJ0aWVzV2l0aFVJbnQzMk5hbWVz
ID0gZmFsc2U7CiB9CiAKLWJvb2wgT2JqZWN0UHJvdG90eXBlOjpkZWZpbmVPd25Qcm9wZXJ0eShK
U09iamVjdCogb2JqZWN0LCBFeGVjU3RhdGUqIGV4ZWMsIGNvbnN0IElkZW50aWZpZXImIHByb3Bl
cnR5TmFtZSwgUHJvcGVydHlEZXNjcmlwdG9yJiBkZXNjcmlwdG9yLCBib29sIHNob3VsZFRocm93
KQorYm9vbCBPYmplY3RQcm90b3R5cGU6OmRlZmluZU93blByb3BlcnR5KEpTT2JqZWN0KiBvYmpl
Y3QsIEV4ZWNTdGF0ZSogZXhlYywgUHJvcGVydHlOYW1lIHByb3BlcnR5TmFtZSwgUHJvcGVydHlE
ZXNjcmlwdG9yJiBkZXNjcmlwdG9yLCBib29sIHNob3VsZFRocm93KQogewogICAgIE9iamVjdFBy
b3RvdHlwZSogdGhpc09iamVjdCA9IGpzQ2FzdDxPYmplY3RQcm90b3R5cGUqPihvYmplY3QpOwog
ICAgIGJvb2wgcmVzdWx0ID0gQmFzZTo6ZGVmaW5lT3duUHJvcGVydHkob2JqZWN0LCBleGVjLCBw
cm9wZXJ0eU5hbWUsIGRlc2NyaXB0b3IsIHNob3VsZFRocm93KTsKIAotICAgIGlmICh0aGlzT2Jq
ZWN0LT5tX2hhc05vUHJvcGVydGllc1dpdGhVSW50MzJOYW1lcykgewotICAgICAgICBib29sIGlz
VUludDMyOwotICAgICAgICBwcm9wZXJ0eU5hbWUudG9VSW50MzIoaXNVSW50MzIpOwotICAgICAg
ICB0aGlzT2JqZWN0LT5tX2hhc05vUHJvcGVydGllc1dpdGhVSW50MzJOYW1lcyA9ICFpc1VJbnQz
MjsKLSAgICB9CisgICAgaWYgKHRoaXNPYmplY3QtPm1faGFzTm9Qcm9wZXJ0aWVzV2l0aFVJbnQz
Mk5hbWVzICYmIHByb3BlcnR5TmFtZS5hc0luZGV4KCkgIT0gUHJvcGVydHlOYW1lOjpOb3RBbklu
ZGV4KQorICAgICAgICB0aGlzT2JqZWN0LT5tX2hhc05vUHJvcGVydGllc1dpdGhVSW50MzJOYW1l
cyA9IGZhbHNlOwogCiAgICAgcmV0dXJuIHJlc3VsdDsKIH0KQEAgLTExMSwxMiArMTA1LDEyIEBA
IGJvb2wgT2JqZWN0UHJvdG90eXBlOjpnZXRPd25Qcm9wZXJ0eVNsb3QKICAgICByZXR1cm4gQmFz
ZTo6Z2V0T3duUHJvcGVydHlTbG90QnlJbmRleCh0aGlzT2JqZWN0LCBleGVjLCBwcm9wZXJ0eU5h
bWUsIHNsb3QpOwogfQogCi1ib29sIE9iamVjdFByb3RvdHlwZTo6Z2V0T3duUHJvcGVydHlTbG90
KEpTQ2VsbCogY2VsbCwgRXhlY1N0YXRlKiBleGVjLCBjb25zdCBJZGVudGlmaWVyJiBwcm9wZXJ0
eU5hbWUsIFByb3BlcnR5U2xvdCAmc2xvdCkKK2Jvb2wgT2JqZWN0UHJvdG90eXBlOjpnZXRPd25Q
cm9wZXJ0eVNsb3QoSlNDZWxsKiBjZWxsLCBFeGVjU3RhdGUqIGV4ZWMsIFByb3BlcnR5TmFtZSBw
cm9wZXJ0eU5hbWUsIFByb3BlcnR5U2xvdCAmc2xvdCkKIHsKICAgICByZXR1cm4gZ2V0U3RhdGlj
RnVuY3Rpb25TbG90PEpTTm9uRmluYWxPYmplY3Q+KGV4ZWMsIEV4ZWNTdGF0ZTo6b2JqZWN0UHJv
dG90eXBlVGFibGUoZXhlYyksIGpzQ2FzdDxPYmplY3RQcm90b3R5cGUqPihjZWxsKSwgcHJvcGVy
dHlOYW1lLCBzbG90KTsKIH0KIAotYm9vbCBPYmplY3RQcm90b3R5cGU6OmdldE93blByb3BlcnR5
RGVzY3JpcHRvcihKU09iamVjdCogb2JqZWN0LCBFeGVjU3RhdGUqIGV4ZWMsIGNvbnN0IElkZW50
aWZpZXImIHByb3BlcnR5TmFtZSwgUHJvcGVydHlEZXNjcmlwdG9yJiBkZXNjcmlwdG9yKQorYm9v
bCBPYmplY3RQcm90b3R5cGU6OmdldE93blByb3BlcnR5RGVzY3JpcHRvcihKU09iamVjdCogb2Jq
ZWN0LCBFeGVjU3RhdGUqIGV4ZWMsIFByb3BlcnR5TmFtZSBwcm9wZXJ0eU5hbWUsIFByb3BlcnR5
RGVzY3JpcHRvciYgZGVzY3JpcHRvcikKIHsKICAgICByZXR1cm4gZ2V0U3RhdGljRnVuY3Rpb25E
ZXNjcmlwdG9yPEpTTm9uRmluYWxPYmplY3Q+KGV4ZWMsIEV4ZWNTdGF0ZTo6b2JqZWN0UHJvdG90
eXBlVGFibGUoZXhlYyksIGpzQ2FzdDxPYmplY3RQcm90b3R5cGUqPihvYmplY3QpLCBwcm9wZXJ0
eU5hbWUsIGRlc2NyaXB0b3IpOwogfQpJbmRleDogU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRp
bWUvT2JqZWN0UHJvdG90eXBlLmgKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL0phdmFTY3JpcHRDb3Jl
L3J1bnRpbWUvT2JqZWN0UHJvdG90eXBlLmgJKHJldmlzaW9uIDExNjY2NykKKysrIFNvdXJjZS9K
YXZhU2NyaXB0Q29yZS9ydW50aW1lL09iamVjdFByb3RvdHlwZS5oCSh3b3JraW5nIGNvcHkpCkBA
IC01MCwxMiArNTAsMTIgQEAgbmFtZXNwYWNlIEpTQyB7CiAKICAgICBwcml2YXRlOgogICAgICAg
ICBPYmplY3RQcm90b3R5cGUoRXhlY1N0YXRlKiwgU3RydWN0dXJlKik7Ci0gICAgICAgIHN0YXRp
YyB2b2lkIHB1dChKU0NlbGwqLCBFeGVjU3RhdGUqLCBjb25zdCBJZGVudGlmaWVyJiwgSlNWYWx1
ZSwgUHV0UHJvcGVydHlTbG90Jik7Ci0gICAgICAgIHN0YXRpYyBib29sIGRlZmluZU93blByb3Bl
cnR5KEpTT2JqZWN0KiwgRXhlY1N0YXRlKiwgY29uc3QgSWRlbnRpZmllciYgcHJvcGVydHlOYW1l
LCBQcm9wZXJ0eURlc2NyaXB0b3ImLCBib29sIHNob3VsZFRocm93KTsKKyAgICAgICAgc3RhdGlj
IHZvaWQgcHV0KEpTQ2VsbCosIEV4ZWNTdGF0ZSosIFByb3BlcnR5TmFtZSwgSlNWYWx1ZSwgUHV0
UHJvcGVydHlTbG90Jik7CisgICAgICAgIHN0YXRpYyBib29sIGRlZmluZU93blByb3BlcnR5KEpT
T2JqZWN0KiwgRXhlY1N0YXRlKiwgUHJvcGVydHlOYW1lIHByb3BlcnR5TmFtZSwgUHJvcGVydHlE
ZXNjcmlwdG9yJiwgYm9vbCBzaG91bGRUaHJvdyk7CiAKLSAgICAgICAgc3RhdGljIGJvb2wgZ2V0
T3duUHJvcGVydHlTbG90KEpTQ2VsbCosIEV4ZWNTdGF0ZSosIGNvbnN0IElkZW50aWZpZXImLCBQ
cm9wZXJ0eVNsb3QmKTsKKyAgICAgICAgc3RhdGljIGJvb2wgZ2V0T3duUHJvcGVydHlTbG90KEpT
Q2VsbCosIEV4ZWNTdGF0ZSosIFByb3BlcnR5TmFtZSwgUHJvcGVydHlTbG90Jik7CiAgICAgICAg
IHN0YXRpYyBib29sIGdldE93blByb3BlcnR5U2xvdEJ5SW5kZXgoSlNDZWxsKiwgRXhlY1N0YXRl
KiwgdW5zaWduZWQgcHJvcGVydHlOYW1lLCBQcm9wZXJ0eVNsb3QmKTsKLSAgICAgICAgc3RhdGlj
IGJvb2wgZ2V0T3duUHJvcGVydHlEZXNjcmlwdG9yKEpTT2JqZWN0KiwgRXhlY1N0YXRlKiwgY29u
c3QgSWRlbnRpZmllciYsIFByb3BlcnR5RGVzY3JpcHRvciYpOworICAgICAgICBzdGF0aWMgYm9v
bCBnZXRPd25Qcm9wZXJ0eURlc2NyaXB0b3IoSlNPYmplY3QqLCBFeGVjU3RhdGUqLCBQcm9wZXJ0
eU5hbWUsIFByb3BlcnR5RGVzY3JpcHRvciYpOwogCiAgICAgICAgIGJvb2wgbV9oYXNOb1Byb3Bl
cnRpZXNXaXRoVUludDMyTmFtZXM7CiAgICAgfTsKSW5kZXg6IFNvdXJjZS9KYXZhU2NyaXB0Q29y
ZS9ydW50aW1lL1Byb3BlcnR5TmFtZS5oCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9KYXZhU2NyaXB0
Q29yZS9ydW50aW1lL1Byb3BlcnR5TmFtZS5oCShyZXZpc2lvbiAwKQorKysgU291cmNlL0phdmFT
Y3JpcHRDb3JlL3J1bnRpbWUvUHJvcGVydHlOYW1lLmgJKHJldmlzaW9uIDApCkBAIC0wLDAgKzEs
MTMxIEBACisvKgorICogQ29weXJpZ2h0IChDKSAyMDEyIEFwcGxlIEluYy4gQWxsIHJpZ2h0cyBy
ZXNlcnZlZC4KKyAqCisgKiBSZWRpc3RyaWJ1dGlvbiBhbmQgdXNlIGluIHNvdXJjZSBhbmQgYmlu
YXJ5IGZvcm1zLCB3aXRoIG9yIHdpdGhvdXQKKyAqIG1vZGlmaWNhdGlvbiwgYXJlIHBlcm1pdHRl
ZCBwcm92aWRlZCB0aGF0IHRoZSBmb2xsb3dpbmcgY29uZGl0aW9ucworICogYXJlIG1ldDoKKyAq
IDEuIFJlZGlzdHJpYnV0aW9ucyBvZiBzb3VyY2UgY29kZSBtdXN0IHJldGFpbiB0aGUgYWJvdmUg
Y29weXJpZ2h0CisgKiAgICBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUg
Zm9sbG93aW5nIGRpc2NsYWltZXIuCisgKiAyLiBSZWRpc3RyaWJ1dGlvbnMgaW4gYmluYXJ5IGZv
cm0gbXVzdCByZXByb2R1Y2UgdGhlIGFib3ZlIGNvcHlyaWdodAorICogICAgbm90aWNlLCB0aGlz
IGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyIGluIHRoZQor
ICogICAgZG9jdW1lbnRhdGlvbiBhbmQvb3Igb3RoZXIgbWF0ZXJpYWxzIHByb3ZpZGVkIHdpdGgg
dGhlIGRpc3RyaWJ1dGlvbi4KKyAqCisgKiBUSElTIFNPRlRXQVJFIElTIFBST1ZJREVEIEJZIEFQ
UExFIElOQy4gQU5EIElUUyBDT05UUklCVVRPUlMgYGBBUyBJUycnCisgKiBBTkQgQU5ZIEVYUFJF
U1MgT1IgSU1QTElFRCBXQVJSQU5USUVTLCBJTkNMVURJTkcsIEJVVCBOT1QgTElNSVRFRCBUTywK
KyAqIFRIRSBJTVBMSUVEIFdBUlJBTlRJRVMgT0YgTUVSQ0hBTlRBQklMSVRZIEFORCBGSVRORVNT
IEZPUiBBIFBBUlRJQ1VMQVIKKyAqIFBVUlBPU0UgQVJFIERJU0NMQUlNRUQuIElOIE5PIEVWRU5U
IFNIQUxMIEFQUExFIElOQy4gT1IgSVRTIENPTlRSSUJVVE9SUworICogQkUgTElBQkxFIEZPUiBB
TlkgRElSRUNULCBJTkRJUkVDVCwgSU5DSURFTlRBTCwgU1BFQ0lBTCwgRVhFTVBMQVJZLCBPUgor
ICogQ09OU0VRVUVOVElBTCBEQU1BR0VTIChJTkNMVURJTkcsIEJVVCBOT1QgTElNSVRFRCBUTywg
UFJPQ1VSRU1FTlQgT0YKKyAqIFNVQlNUSVRVVEUgR09PRFMgT1IgU0VSVklDRVM7IExPU1MgT0Yg
VVNFLCBEQVRBLCBPUiBQUk9GSVRTOyBPUiBCVVNJTkVTUworICogSU5URVJSVVBUSU9OKSBIT1dF
VkVSIENBVVNFRCBBTkQgT04gQU5ZIFRIRU9SWSBPRiBMSUFCSUxJVFksIFdIRVRIRVIgSU4KKyAq
IENPTlRSQUNULCBTVFJJQ1QgTElBQklMSVRZLCBPUiBUT1JUIChJTkNMVURJTkcgTkVHTElHRU5D
RSBPUiBPVEhFUldJU0UpCisgKiBBUklTSU5HIElOIEFOWSBXQVkgT1VUIE9GIFRIRSBVU0UgT0Yg
VEhJUyBTT0ZUV0FSRSwgRVZFTiBJRiBBRFZJU0VEIE9GCisgKiBUSEUgUE9TU0lCSUxJVFkgT0Yg
U1VDSCBEQU1BR0UuCisgKi8KKworI2lmbmRlZiBQcm9wZXJ0eU5hbWVfaAorI2RlZmluZSBQcm9w
ZXJ0eU5hbWVfaAorCisjaW5jbHVkZSAiSWRlbnRpZmllci5oIgorCituYW1lc3BhY2UgSlNDIHsK
KwordGVtcGxhdGUgPHR5cGVuYW1lIENoYXJUeXBlPgorQUxXQVlTX0lOTElORSB1aW50MzJfdCB0
b1VJbnQzMkZyb21DaGFyYWN0ZXJzKGNvbnN0IENoYXJUeXBlKiBjaGFyYWN0ZXJzLCB1bnNpZ25l
ZCBsZW5ndGgpCit7CisgICAgLy8gQW4gZW1wdHkgc3RyaW5nIGlzIG5vdCBhIG51bWJlci4KKyAg
ICBpZiAoIWxlbmd0aCkKKyAgICAgICAgcmV0dXJuIDA7CisKKyAgICAvLyBHZXQgdGhlIGZpcnN0
IGNoYXJhY3RlciwgdHVybmluZyBpdCBpbnRvIGEgZGlnaXQuCisgICAgdWludDMyX3QgdmFsdWUg
PSBjaGFyYWN0ZXJzWzBdIC0gJzAnOworICAgIGlmICh2YWx1ZSA+IDkpCisgICAgICAgIHJldHVy
biBVSU5UX01BWDsKKyAgICAKKyAgICAvLyBDaGVjayBmb3IgbGVhZGluZyB6ZXJvcy4gSWYgdGhl
IGZpcnN0IGNoYXJhY2hlciBpcyAwLCB0aGVuIHRoZQorICAgIC8vIGxlbmd0aCBvZiB0aGUgc3Ry
aW5nIG11c3QgYmUgb25lIC0gZS5nLiAiMDQyIiBpcyBub3QgZXF1YWwgdG8gIjQyIi4KKyAgICBp
ZiAoIXZhbHVlICYmIGxlbmd0aCA+IDEpCisgICAgICAgIHJldHVybiBVSU5UX01BWDsKKyAgICAK
KyAgICB3aGlsZSAoLS1sZW5ndGgpIHsKKyAgICAgICAgLy8gTXVsdGlwbHkgdmFsdWUgYnkgMTAs
IGNoZWNraW5nIGZvciBvdmVyZmxvdyBvdXQgb2YgMzIgYml0cy4KKyAgICAgICAgaWYgKHZhbHVl
ID4gMHhGRkZGRkZGRlUgLyAxMCkKKyAgICAgICAgICAgIHJldHVybiBVSU5UX01BWDsKKyAgICAg
ICAgdmFsdWUgKj0gMTA7CisgICAgICAgIAorICAgICAgICAvLyBHZXQgdGhlIG5leHQgY2hhcmFj
dGVyLCB0dXJuaW5nIGl0IGludG8gYSBkaWdpdC4KKyAgICAgICAgdWludDMyX3QgbmV3VmFsdWUg
PSAqKCsrY2hhcmFjdGVycykgLSAnMCc7CisgICAgICAgIGlmIChuZXdWYWx1ZSA+IDkpCisgICAg
ICAgICAgICByZXR1cm4gVUlOVF9NQVg7CisgICAgICAgIAorICAgICAgICAvLyBBZGQgaW4gdGhl
IG9sZCB2YWx1ZSwgY2hlY2tpbmcgZm9yIG92ZXJmbG93IG91dCBvZiAzMiBiaXRzLgorICAgICAg
ICBuZXdWYWx1ZSArPSB2YWx1ZTsKKyAgICAgICAgaWYgKG5ld1ZhbHVlIDwgdmFsdWUpCisgICAg
ICAgICAgICByZXR1cm4gVUlOVF9NQVg7CisgICAgICAgIHZhbHVlID0gbmV3VmFsdWU7CisgICAg
fQorICAgIAorICAgIHJldHVybiB2YWx1ZTsKK30KKworQUxXQVlTX0lOTElORSB1aW50MzJfdCB0
b1VJbnQzMkZyb21TdHJpbmdJbXBsKFN0cmluZ0ltcGwqIGltcGwpCit7CisgICAgaWYgKGltcGwt
PmlzOEJpdCgpKQorICAgICAgICByZXR1cm4gdG9VSW50MzJGcm9tQ2hhcmFjdGVycyhpbXBsLT5j
aGFyYWN0ZXJzOCgpLCBpbXBsLT5sZW5ndGgoKSk7CisgICAgcmV0dXJuIHRvVUludDMyRnJvbUNo
YXJhY3RlcnMoaW1wbC0+Y2hhcmFjdGVyczE2KCksIGltcGwtPmxlbmd0aCgpKTsKK30KKworY2xh
c3MgUHJvcGVydHlOYW1lIHsKK3B1YmxpYzoKKyAgICBQcm9wZXJ0eU5hbWUoY29uc3QgSWRlbnRp
ZmllciYgcHJvcGVydHlOYW1lKQorICAgICAgICA6IG1faW1wbChwcm9wZXJ0eU5hbWUuaW1wbCgp
KQorICAgIHsKKyAgICAgICAgQVNTRVJUKCFwcm9wZXJ0eU5hbWUuaXNOdWxsKCkpOworICAgIH0K
KworICAgIFN0cmluZ0ltcGwqIGltcGwoKSBjb25zdCB7IHJldHVybiBtX2ltcGw7IH0KKyAgICBV
U3RyaW5nIHVzdHJpbmcoKSBjb25zdCB7IHJldHVybiBtX2ltcGw7IH0KKworICAgIHN0YXRpYyBj
b25zdCB1aW50MzJfdCBOb3RBbkluZGV4ID0gVUlOVF9NQVg7CisgICAgdWludDMyX3QgYXNJbmRl
eCgpCisgICAgeworICAgICAgICByZXR1cm4gdG9VSW50MzJGcm9tU3RyaW5nSW1wbChtX2ltcGwp
OworICAgIH0KKworcHJpdmF0ZToKKyAgICBTdHJpbmdJbXBsKiBtX2ltcGw7Cit9OworCitpbmxp
bmUgYm9vbCBvcGVyYXRvcj09KFByb3BlcnR5TmFtZSBhLCBjb25zdCBJZGVudGlmaWVyJiBiKQor
eworICAgIHJldHVybiBhLmltcGwoKSA9PSBiLmltcGwoKTsKK30KKworaW5saW5lIGJvb2wgb3Bl
cmF0b3I9PShjb25zdCBJZGVudGlmaWVyJiBhLCBQcm9wZXJ0eU5hbWUgYikKK3sKKyAgICByZXR1
cm4gYS5pbXBsKCkgPT0gYi5pbXBsKCk7Cit9CisKK2lubGluZSBib29sIG9wZXJhdG9yPT0oUHJv
cGVydHlOYW1lIGEsIFByb3BlcnR5TmFtZSBiKQoreworICAgIHJldHVybiBhLmltcGwoKSA9PSBi
LmltcGwoKTsKK30KKworaW5saW5lIGJvb2wgb3BlcmF0b3IhPShQcm9wZXJ0eU5hbWUgYSwgY29u
c3QgSWRlbnRpZmllciYgYikKK3sKKyAgICByZXR1cm4gYS5pbXBsKCkgIT0gYi5pbXBsKCk7Cit9
CisKK2lubGluZSBib29sIG9wZXJhdG9yIT0oY29uc3QgSWRlbnRpZmllciYgYSwgUHJvcGVydHlO
YW1lIGIpCit7CisgICAgcmV0dXJuIGEuaW1wbCgpICE9IGIuaW1wbCgpOworfQorCitpbmxpbmUg
Ym9vbCBvcGVyYXRvciE9KFByb3BlcnR5TmFtZSBhLCBQcm9wZXJ0eU5hbWUgYikKK3sKKyAgICBy
ZXR1cm4gYS5pbXBsKCkgIT0gYi5pbXBsKCk7Cit9CisKK30KKworI2VuZGlmCkluZGV4OiBTb3Vy
Y2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9Qcm9wZXJ0eVNsb3QuaAo9PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBT
b3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9Qcm9wZXJ0eVNsb3QuaAkocmV2aXNpb24gMTE2
NjY3KQorKysgU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvUHJvcGVydHlTbG90LmgJKHdv
cmtpbmcgY29weSkKQEAgLTIxLDggKzIxLDggQEAKICNpZm5kZWYgUHJvcGVydHlTbG90X2gKICNk
ZWZpbmUgUHJvcGVydHlTbG90X2gKIAotI2luY2x1ZGUgIklkZW50aWZpZXIuaCIKICNpbmNsdWRl
ICJKU1ZhbHVlLmgiCisjaW5jbHVkZSAiUHJvcGVydHlOYW1lLmgiCiAjaW5jbHVkZSAiUmVnaXN0
ZXIuaCIKICNpbmNsdWRlIDx3dGYvQXNzZXJ0aW9ucy5oPgogI2luY2x1ZGUgPHd0Zi9Ob3RGb3Vu
ZC5oPgpAQCAtNjEsMTAgKzYxLDEwIEBAIG5hbWVzcGFjZSBKU0MgewogICAgICAgICAgICAgY2xl
YXJWYWx1ZSgpOwogICAgICAgICB9CiAKLSAgICAgICAgdHlwZWRlZiBKU1ZhbHVlICgqR2V0VmFs
dWVGdW5jKShFeGVjU3RhdGUqLCBKU1ZhbHVlIHNsb3RCYXNlLCBjb25zdCBJZGVudGlmaWVyJik7
CisgICAgICAgIHR5cGVkZWYgSlNWYWx1ZSAoKkdldFZhbHVlRnVuYykoRXhlY1N0YXRlKiwgSlNW
YWx1ZSBzbG90QmFzZSwgUHJvcGVydHlOYW1lKTsKICAgICAgICAgdHlwZWRlZiBKU1ZhbHVlICgq
R2V0SW5kZXhWYWx1ZUZ1bmMpKEV4ZWNTdGF0ZSosIEpTVmFsdWUgc2xvdEJhc2UsIHVuc2lnbmVk
KTsKIAotICAgICAgICBKU1ZhbHVlIGdldFZhbHVlKEV4ZWNTdGF0ZSogZXhlYywgY29uc3QgSWRl
bnRpZmllciYgcHJvcGVydHlOYW1lKSBjb25zdAorICAgICAgICBKU1ZhbHVlIGdldFZhbHVlKEV4
ZWNTdGF0ZSogZXhlYywgUHJvcGVydHlOYW1lIHByb3BlcnR5TmFtZSkgY29uc3QKICAgICAgICAg
ewogICAgICAgICAgICAgaWYgKG1fZ2V0VmFsdWUgPT0gSlNDX1ZBTFVFX01BUktFUikKICAgICAg
ICAgICAgICAgICByZXR1cm4gbV92YWx1ZTsKSW5kZXg6IFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9y
dW50aW1lL1JlZ0V4cENvbnN0cnVjdG9yLmNwcAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvSmF2YVNj
cmlwdENvcmUvcnVudGltZS9SZWdFeHBDb25zdHJ1Y3Rvci5jcHAJKHJldmlzaW9uIDExNjY2NykK
KysrIFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL1JlZ0V4cENvbnN0cnVjdG9yLmNwcAko
d29ya2luZyBjb3B5KQpAQCAtMjgsMjEgKzI4LDIxIEBACiAKIG5hbWVzcGFjZSBKU0MgewogCi1z
dGF0aWMgSlNWYWx1ZSByZWdFeHBDb25zdHJ1Y3RvcklucHV0KEV4ZWNTdGF0ZSosIEpTVmFsdWUs
IGNvbnN0IElkZW50aWZpZXImKTsKLXN0YXRpYyBKU1ZhbHVlIHJlZ0V4cENvbnN0cnVjdG9yTXVs
dGlsaW5lKEV4ZWNTdGF0ZSosIEpTVmFsdWUsIGNvbnN0IElkZW50aWZpZXImKTsKLXN0YXRpYyBK
U1ZhbHVlIHJlZ0V4cENvbnN0cnVjdG9yTGFzdE1hdGNoKEV4ZWNTdGF0ZSosIEpTVmFsdWUsIGNv
bnN0IElkZW50aWZpZXImKTsKLXN0YXRpYyBKU1ZhbHVlIHJlZ0V4cENvbnN0cnVjdG9yTGFzdFBh
cmVuKEV4ZWNTdGF0ZSosIEpTVmFsdWUsIGNvbnN0IElkZW50aWZpZXImKTsKLXN0YXRpYyBKU1Zh
bHVlIHJlZ0V4cENvbnN0cnVjdG9yTGVmdENvbnRleHQoRXhlY1N0YXRlKiwgSlNWYWx1ZSwgY29u
c3QgSWRlbnRpZmllciYpOwotc3RhdGljIEpTVmFsdWUgcmVnRXhwQ29uc3RydWN0b3JSaWdodENv
bnRleHQoRXhlY1N0YXRlKiwgSlNWYWx1ZSwgY29uc3QgSWRlbnRpZmllciYpOwotc3RhdGljIEpT
VmFsdWUgcmVnRXhwQ29uc3RydWN0b3JEb2xsYXIxKEV4ZWNTdGF0ZSosIEpTVmFsdWUsIGNvbnN0
IElkZW50aWZpZXImKTsKLXN0YXRpYyBKU1ZhbHVlIHJlZ0V4cENvbnN0cnVjdG9yRG9sbGFyMihF
eGVjU3RhdGUqLCBKU1ZhbHVlLCBjb25zdCBJZGVudGlmaWVyJik7Ci1zdGF0aWMgSlNWYWx1ZSBy
ZWdFeHBDb25zdHJ1Y3RvckRvbGxhcjMoRXhlY1N0YXRlKiwgSlNWYWx1ZSwgY29uc3QgSWRlbnRp
ZmllciYpOwotc3RhdGljIEpTVmFsdWUgcmVnRXhwQ29uc3RydWN0b3JEb2xsYXI0KEV4ZWNTdGF0
ZSosIEpTVmFsdWUsIGNvbnN0IElkZW50aWZpZXImKTsKLXN0YXRpYyBKU1ZhbHVlIHJlZ0V4cENv
bnN0cnVjdG9yRG9sbGFyNShFeGVjU3RhdGUqLCBKU1ZhbHVlLCBjb25zdCBJZGVudGlmaWVyJik7
Ci1zdGF0aWMgSlNWYWx1ZSByZWdFeHBDb25zdHJ1Y3RvckRvbGxhcjYoRXhlY1N0YXRlKiwgSlNW
YWx1ZSwgY29uc3QgSWRlbnRpZmllciYpOwotc3RhdGljIEpTVmFsdWUgcmVnRXhwQ29uc3RydWN0
b3JEb2xsYXI3KEV4ZWNTdGF0ZSosIEpTVmFsdWUsIGNvbnN0IElkZW50aWZpZXImKTsKLXN0YXRp
YyBKU1ZhbHVlIHJlZ0V4cENvbnN0cnVjdG9yRG9sbGFyOChFeGVjU3RhdGUqLCBKU1ZhbHVlLCBj
b25zdCBJZGVudGlmaWVyJik7Ci1zdGF0aWMgSlNWYWx1ZSByZWdFeHBDb25zdHJ1Y3RvckRvbGxh
cjkoRXhlY1N0YXRlKiwgSlNWYWx1ZSwgY29uc3QgSWRlbnRpZmllciYpOworc3RhdGljIEpTVmFs
dWUgcmVnRXhwQ29uc3RydWN0b3JJbnB1dChFeGVjU3RhdGUqLCBKU1ZhbHVlLCBQcm9wZXJ0eU5h
bWUpOworc3RhdGljIEpTVmFsdWUgcmVnRXhwQ29uc3RydWN0b3JNdWx0aWxpbmUoRXhlY1N0YXRl
KiwgSlNWYWx1ZSwgUHJvcGVydHlOYW1lKTsKK3N0YXRpYyBKU1ZhbHVlIHJlZ0V4cENvbnN0cnVj
dG9yTGFzdE1hdGNoKEV4ZWNTdGF0ZSosIEpTVmFsdWUsIFByb3BlcnR5TmFtZSk7CitzdGF0aWMg
SlNWYWx1ZSByZWdFeHBDb25zdHJ1Y3Rvckxhc3RQYXJlbihFeGVjU3RhdGUqLCBKU1ZhbHVlLCBQ
cm9wZXJ0eU5hbWUpOworc3RhdGljIEpTVmFsdWUgcmVnRXhwQ29uc3RydWN0b3JMZWZ0Q29udGV4
dChFeGVjU3RhdGUqLCBKU1ZhbHVlLCBQcm9wZXJ0eU5hbWUpOworc3RhdGljIEpTVmFsdWUgcmVn
RXhwQ29uc3RydWN0b3JSaWdodENvbnRleHQoRXhlY1N0YXRlKiwgSlNWYWx1ZSwgUHJvcGVydHlO
YW1lKTsKK3N0YXRpYyBKU1ZhbHVlIHJlZ0V4cENvbnN0cnVjdG9yRG9sbGFyMShFeGVjU3RhdGUq
LCBKU1ZhbHVlLCBQcm9wZXJ0eU5hbWUpOworc3RhdGljIEpTVmFsdWUgcmVnRXhwQ29uc3RydWN0
b3JEb2xsYXIyKEV4ZWNTdGF0ZSosIEpTVmFsdWUsIFByb3BlcnR5TmFtZSk7CitzdGF0aWMgSlNW
YWx1ZSByZWdFeHBDb25zdHJ1Y3RvckRvbGxhcjMoRXhlY1N0YXRlKiwgSlNWYWx1ZSwgUHJvcGVy
dHlOYW1lKTsKK3N0YXRpYyBKU1ZhbHVlIHJlZ0V4cENvbnN0cnVjdG9yRG9sbGFyNChFeGVjU3Rh
dGUqLCBKU1ZhbHVlLCBQcm9wZXJ0eU5hbWUpOworc3RhdGljIEpTVmFsdWUgcmVnRXhwQ29uc3Ry
dWN0b3JEb2xsYXI1KEV4ZWNTdGF0ZSosIEpTVmFsdWUsIFByb3BlcnR5TmFtZSk7CitzdGF0aWMg
SlNWYWx1ZSByZWdFeHBDb25zdHJ1Y3RvckRvbGxhcjYoRXhlY1N0YXRlKiwgSlNWYWx1ZSwgUHJv
cGVydHlOYW1lKTsKK3N0YXRpYyBKU1ZhbHVlIHJlZ0V4cENvbnN0cnVjdG9yRG9sbGFyNyhFeGVj
U3RhdGUqLCBKU1ZhbHVlLCBQcm9wZXJ0eU5hbWUpOworc3RhdGljIEpTVmFsdWUgcmVnRXhwQ29u
c3RydWN0b3JEb2xsYXI4KEV4ZWNTdGF0ZSosIEpTVmFsdWUsIFByb3BlcnR5TmFtZSk7CitzdGF0
aWMgSlNWYWx1ZSByZWdFeHBDb25zdHJ1Y3RvckRvbGxhcjkoRXhlY1N0YXRlKiwgSlNWYWx1ZSwg
UHJvcGVydHlOYW1lKTsKIAogc3RhdGljIHZvaWQgc2V0UmVnRXhwQ29uc3RydWN0b3JJbnB1dChF
eGVjU3RhdGUqLCBKU09iamVjdCosIEpTVmFsdWUpOwogc3RhdGljIHZvaWQgc2V0UmVnRXhwQ29u
c3RydWN0b3JNdWx0aWxpbmUoRXhlY1N0YXRlKiwgSlNPYmplY3QqLCBKU1ZhbHVlKTsKQEAgLTky
LDcgKzkyLDcgQEAgUmVnRXhwQ29uc3RydWN0b3I6OlJlZ0V4cENvbnN0cnVjdG9yKEpTRwogCiB2
b2lkIFJlZ0V4cENvbnN0cnVjdG9yOjpmaW5pc2hDcmVhdGlvbihFeGVjU3RhdGUqIGV4ZWMsIFJl
Z0V4cFByb3RvdHlwZSogcmVnRXhwUHJvdG90eXBlKQogewotICAgIEJhc2U6OmZpbmlzaENyZWF0
aW9uKGV4ZWMtPmdsb2JhbERhdGEoKSwgSWRlbnRpZmllcihleGVjLCAiUmVnRXhwIikpOworICAg
IEJhc2U6OmZpbmlzaENyZWF0aW9uKGV4ZWMtPmdsb2JhbERhdGEoKSwgSWRlbnRpZmllcihleGVj
LCAiUmVnRXhwIikudXN0cmluZygpKTsKICAgICBBU1NFUlQoaW5oZXJpdHMoJnNfaW5mbykpOwog
CiAgICAgLy8gRUNNQSAxNS4xMC41LjEgUmVnRXhwLnByb3RvdHlwZQpAQCAtMTU0LDkyICsxNTQs
OTIgQEAgSlNWYWx1ZSBSZWdFeHBDb25zdHJ1Y3Rvcjo6Z2V0UmlnaHRDb250ZQogICAgIHJldHVy
biBtX2NhY2hlZFJlc3VsdC5sYXN0UmVzdWx0KGV4ZWMsIHRoaXMpLT5yaWdodENvbnRleHQoZXhl
Yyk7CiB9CiAgICAgCi1ib29sIFJlZ0V4cENvbnN0cnVjdG9yOjpnZXRPd25Qcm9wZXJ0eVNsb3Qo
SlNDZWxsKiBjZWxsLCBFeGVjU3RhdGUqIGV4ZWMsIGNvbnN0IElkZW50aWZpZXImIHByb3BlcnR5
TmFtZSwgUHJvcGVydHlTbG90JiBzbG90KQorYm9vbCBSZWdFeHBDb25zdHJ1Y3Rvcjo6Z2V0T3du
UHJvcGVydHlTbG90KEpTQ2VsbCogY2VsbCwgRXhlY1N0YXRlKiBleGVjLCBQcm9wZXJ0eU5hbWUg
cHJvcGVydHlOYW1lLCBQcm9wZXJ0eVNsb3QmIHNsb3QpCiB7CiAgICAgcmV0dXJuIGdldFN0YXRp
Y1ZhbHVlU2xvdDxSZWdFeHBDb25zdHJ1Y3RvciwgSW50ZXJuYWxGdW5jdGlvbj4oZXhlYywgRXhl
Y1N0YXRlOjpyZWdFeHBDb25zdHJ1Y3RvclRhYmxlKGV4ZWMpLCBqc0Nhc3Q8UmVnRXhwQ29uc3Ry
dWN0b3IqPihjZWxsKSwgcHJvcGVydHlOYW1lLCBzbG90KTsKIH0KIAotYm9vbCBSZWdFeHBDb25z
dHJ1Y3Rvcjo6Z2V0T3duUHJvcGVydHlEZXNjcmlwdG9yKEpTT2JqZWN0KiBvYmplY3QsIEV4ZWNT
dGF0ZSogZXhlYywgY29uc3QgSWRlbnRpZmllciYgcHJvcGVydHlOYW1lLCBQcm9wZXJ0eURlc2Ny
aXB0b3ImIGRlc2NyaXB0b3IpCitib29sIFJlZ0V4cENvbnN0cnVjdG9yOjpnZXRPd25Qcm9wZXJ0
eURlc2NyaXB0b3IoSlNPYmplY3QqIG9iamVjdCwgRXhlY1N0YXRlKiBleGVjLCBQcm9wZXJ0eU5h
bWUgcHJvcGVydHlOYW1lLCBQcm9wZXJ0eURlc2NyaXB0b3ImIGRlc2NyaXB0b3IpCiB7CiAgICAg
cmV0dXJuIGdldFN0YXRpY1ZhbHVlRGVzY3JpcHRvcjxSZWdFeHBDb25zdHJ1Y3RvciwgSW50ZXJu
YWxGdW5jdGlvbj4oZXhlYywgRXhlY1N0YXRlOjpyZWdFeHBDb25zdHJ1Y3RvclRhYmxlKGV4ZWMp
LCBqc0Nhc3Q8UmVnRXhwQ29uc3RydWN0b3IqPihvYmplY3QpLCBwcm9wZXJ0eU5hbWUsIGRlc2Ny
aXB0b3IpOwogfQogCi1KU1ZhbHVlIHJlZ0V4cENvbnN0cnVjdG9yRG9sbGFyMShFeGVjU3RhdGUq
IGV4ZWMsIEpTVmFsdWUgc2xvdEJhc2UsIGNvbnN0IElkZW50aWZpZXImKQorSlNWYWx1ZSByZWdF
eHBDb25zdHJ1Y3RvckRvbGxhcjEoRXhlY1N0YXRlKiBleGVjLCBKU1ZhbHVlIHNsb3RCYXNlLCBQ
cm9wZXJ0eU5hbWUpCiB7CiAgICAgcmV0dXJuIGFzUmVnRXhwQ29uc3RydWN0b3Ioc2xvdEJhc2Up
LT5nZXRCYWNrcmVmKGV4ZWMsIDEpOwogfQogCi1KU1ZhbHVlIHJlZ0V4cENvbnN0cnVjdG9yRG9s
bGFyMihFeGVjU3RhdGUqIGV4ZWMsIEpTVmFsdWUgc2xvdEJhc2UsIGNvbnN0IElkZW50aWZpZXIm
KQorSlNWYWx1ZSByZWdFeHBDb25zdHJ1Y3RvckRvbGxhcjIoRXhlY1N0YXRlKiBleGVjLCBKU1Zh
bHVlIHNsb3RCYXNlLCBQcm9wZXJ0eU5hbWUpCiB7CiAgICAgcmV0dXJuIGFzUmVnRXhwQ29uc3Ry
dWN0b3Ioc2xvdEJhc2UpLT5nZXRCYWNrcmVmKGV4ZWMsIDIpOwogfQogCi1KU1ZhbHVlIHJlZ0V4
cENvbnN0cnVjdG9yRG9sbGFyMyhFeGVjU3RhdGUqIGV4ZWMsIEpTVmFsdWUgc2xvdEJhc2UsIGNv
bnN0IElkZW50aWZpZXImKQorSlNWYWx1ZSByZWdFeHBDb25zdHJ1Y3RvckRvbGxhcjMoRXhlY1N0
YXRlKiBleGVjLCBKU1ZhbHVlIHNsb3RCYXNlLCBQcm9wZXJ0eU5hbWUpCiB7CiAgICAgcmV0dXJu
IGFzUmVnRXhwQ29uc3RydWN0b3Ioc2xvdEJhc2UpLT5nZXRCYWNrcmVmKGV4ZWMsIDMpOwogfQog
Ci1KU1ZhbHVlIHJlZ0V4cENvbnN0cnVjdG9yRG9sbGFyNChFeGVjU3RhdGUqIGV4ZWMsIEpTVmFs
dWUgc2xvdEJhc2UsIGNvbnN0IElkZW50aWZpZXImKQorSlNWYWx1ZSByZWdFeHBDb25zdHJ1Y3Rv
ckRvbGxhcjQoRXhlY1N0YXRlKiBleGVjLCBKU1ZhbHVlIHNsb3RCYXNlLCBQcm9wZXJ0eU5hbWUp
CiB7CiAgICAgcmV0dXJuIGFzUmVnRXhwQ29uc3RydWN0b3Ioc2xvdEJhc2UpLT5nZXRCYWNrcmVm
KGV4ZWMsIDQpOwogfQogCi1KU1ZhbHVlIHJlZ0V4cENvbnN0cnVjdG9yRG9sbGFyNShFeGVjU3Rh
dGUqIGV4ZWMsIEpTVmFsdWUgc2xvdEJhc2UsIGNvbnN0IElkZW50aWZpZXImKQorSlNWYWx1ZSBy
ZWdFeHBDb25zdHJ1Y3RvckRvbGxhcjUoRXhlY1N0YXRlKiBleGVjLCBKU1ZhbHVlIHNsb3RCYXNl
LCBQcm9wZXJ0eU5hbWUpCiB7CiAgICAgcmV0dXJuIGFzUmVnRXhwQ29uc3RydWN0b3Ioc2xvdEJh
c2UpLT5nZXRCYWNrcmVmKGV4ZWMsIDUpOwogfQogCi1KU1ZhbHVlIHJlZ0V4cENvbnN0cnVjdG9y
RG9sbGFyNihFeGVjU3RhdGUqIGV4ZWMsIEpTVmFsdWUgc2xvdEJhc2UsIGNvbnN0IElkZW50aWZp
ZXImKQorSlNWYWx1ZSByZWdFeHBDb25zdHJ1Y3RvckRvbGxhcjYoRXhlY1N0YXRlKiBleGVjLCBK
U1ZhbHVlIHNsb3RCYXNlLCBQcm9wZXJ0eU5hbWUpCiB7CiAgICAgcmV0dXJuIGFzUmVnRXhwQ29u
c3RydWN0b3Ioc2xvdEJhc2UpLT5nZXRCYWNrcmVmKGV4ZWMsIDYpOwogfQogCi1KU1ZhbHVlIHJl
Z0V4cENvbnN0cnVjdG9yRG9sbGFyNyhFeGVjU3RhdGUqIGV4ZWMsIEpTVmFsdWUgc2xvdEJhc2Us
IGNvbnN0IElkZW50aWZpZXImKQorSlNWYWx1ZSByZWdFeHBDb25zdHJ1Y3RvckRvbGxhcjcoRXhl
Y1N0YXRlKiBleGVjLCBKU1ZhbHVlIHNsb3RCYXNlLCBQcm9wZXJ0eU5hbWUpCiB7CiAgICAgcmV0
dXJuIGFzUmVnRXhwQ29uc3RydWN0b3Ioc2xvdEJhc2UpLT5nZXRCYWNrcmVmKGV4ZWMsIDcpOwog
fQogCi1KU1ZhbHVlIHJlZ0V4cENvbnN0cnVjdG9yRG9sbGFyOChFeGVjU3RhdGUqIGV4ZWMsIEpT
VmFsdWUgc2xvdEJhc2UsIGNvbnN0IElkZW50aWZpZXImKQorSlNWYWx1ZSByZWdFeHBDb25zdHJ1
Y3RvckRvbGxhcjgoRXhlY1N0YXRlKiBleGVjLCBKU1ZhbHVlIHNsb3RCYXNlLCBQcm9wZXJ0eU5h
bWUpCiB7CiAgICAgcmV0dXJuIGFzUmVnRXhwQ29uc3RydWN0b3Ioc2xvdEJhc2UpLT5nZXRCYWNr
cmVmKGV4ZWMsIDgpOwogfQogCi1KU1ZhbHVlIHJlZ0V4cENvbnN0cnVjdG9yRG9sbGFyOShFeGVj
U3RhdGUqIGV4ZWMsIEpTVmFsdWUgc2xvdEJhc2UsIGNvbnN0IElkZW50aWZpZXImKQorSlNWYWx1
ZSByZWdFeHBDb25zdHJ1Y3RvckRvbGxhcjkoRXhlY1N0YXRlKiBleGVjLCBKU1ZhbHVlIHNsb3RC
YXNlLCBQcm9wZXJ0eU5hbWUpCiB7CiAgICAgcmV0dXJuIGFzUmVnRXhwQ29uc3RydWN0b3Ioc2xv
dEJhc2UpLT5nZXRCYWNrcmVmKGV4ZWMsIDkpOwogfQogCi1KU1ZhbHVlIHJlZ0V4cENvbnN0cnVj
dG9ySW5wdXQoRXhlY1N0YXRlKiwgSlNWYWx1ZSBzbG90QmFzZSwgY29uc3QgSWRlbnRpZmllciYp
CitKU1ZhbHVlIHJlZ0V4cENvbnN0cnVjdG9ySW5wdXQoRXhlY1N0YXRlKiwgSlNWYWx1ZSBzbG90
QmFzZSwgUHJvcGVydHlOYW1lKQogewogICAgIHJldHVybiBhc1JlZ0V4cENvbnN0cnVjdG9yKHNs
b3RCYXNlKS0+aW5wdXQoKTsKIH0KIAotSlNWYWx1ZSByZWdFeHBDb25zdHJ1Y3Rvck11bHRpbGlu
ZShFeGVjU3RhdGUqLCBKU1ZhbHVlIHNsb3RCYXNlLCBjb25zdCBJZGVudGlmaWVyJikKK0pTVmFs
dWUgcmVnRXhwQ29uc3RydWN0b3JNdWx0aWxpbmUoRXhlY1N0YXRlKiwgSlNWYWx1ZSBzbG90QmFz
ZSwgUHJvcGVydHlOYW1lKQogewogICAgIHJldHVybiBqc0Jvb2xlYW4oYXNSZWdFeHBDb25zdHJ1
Y3RvcihzbG90QmFzZSktPm11bHRpbGluZSgpKTsKIH0KIAotSlNWYWx1ZSByZWdFeHBDb25zdHJ1
Y3Rvckxhc3RNYXRjaChFeGVjU3RhdGUqIGV4ZWMsIEpTVmFsdWUgc2xvdEJhc2UsIGNvbnN0IElk
ZW50aWZpZXImKQorSlNWYWx1ZSByZWdFeHBDb25zdHJ1Y3Rvckxhc3RNYXRjaChFeGVjU3RhdGUq
IGV4ZWMsIEpTVmFsdWUgc2xvdEJhc2UsIFByb3BlcnR5TmFtZSkKIHsKICAgICByZXR1cm4gYXNS
ZWdFeHBDb25zdHJ1Y3RvcihzbG90QmFzZSktPmdldEJhY2tyZWYoZXhlYywgMCk7CiB9CiAKLUpT
VmFsdWUgcmVnRXhwQ29uc3RydWN0b3JMYXN0UGFyZW4oRXhlY1N0YXRlKiBleGVjLCBKU1ZhbHVl
IHNsb3RCYXNlLCBjb25zdCBJZGVudGlmaWVyJikKK0pTVmFsdWUgcmVnRXhwQ29uc3RydWN0b3JM
YXN0UGFyZW4oRXhlY1N0YXRlKiBleGVjLCBKU1ZhbHVlIHNsb3RCYXNlLCBQcm9wZXJ0eU5hbWUp
CiB7CiAgICAgcmV0dXJuIGFzUmVnRXhwQ29uc3RydWN0b3Ioc2xvdEJhc2UpLT5nZXRMYXN0UGFy
ZW4oZXhlYyk7CiB9CiAKLUpTVmFsdWUgcmVnRXhwQ29uc3RydWN0b3JMZWZ0Q29udGV4dChFeGVj
U3RhdGUqIGV4ZWMsIEpTVmFsdWUgc2xvdEJhc2UsIGNvbnN0IElkZW50aWZpZXImKQorSlNWYWx1
ZSByZWdFeHBDb25zdHJ1Y3RvckxlZnRDb250ZXh0KEV4ZWNTdGF0ZSogZXhlYywgSlNWYWx1ZSBz
bG90QmFzZSwgUHJvcGVydHlOYW1lKQogewogICAgIHJldHVybiBhc1JlZ0V4cENvbnN0cnVjdG9y
KHNsb3RCYXNlKS0+Z2V0TGVmdENvbnRleHQoZXhlYyk7CiB9CiAKLUpTVmFsdWUgcmVnRXhwQ29u
c3RydWN0b3JSaWdodENvbnRleHQoRXhlY1N0YXRlKiBleGVjLCBKU1ZhbHVlIHNsb3RCYXNlLCBj
b25zdCBJZGVudGlmaWVyJikKK0pTVmFsdWUgcmVnRXhwQ29uc3RydWN0b3JSaWdodENvbnRleHQo
RXhlY1N0YXRlKiBleGVjLCBKU1ZhbHVlIHNsb3RCYXNlLCBQcm9wZXJ0eU5hbWUpCiB7CiAgICAg
cmV0dXJuIGFzUmVnRXhwQ29uc3RydWN0b3Ioc2xvdEJhc2UpLT5nZXRSaWdodENvbnRleHQoZXhl
Yyk7CiB9CiAKLXZvaWQgUmVnRXhwQ29uc3RydWN0b3I6OnB1dChKU0NlbGwqIGNlbGwsIEV4ZWNT
dGF0ZSogZXhlYywgY29uc3QgSWRlbnRpZmllciYgcHJvcGVydHlOYW1lLCBKU1ZhbHVlIHZhbHVl
LCBQdXRQcm9wZXJ0eVNsb3QmIHNsb3QpCit2b2lkIFJlZ0V4cENvbnN0cnVjdG9yOjpwdXQoSlND
ZWxsKiBjZWxsLCBFeGVjU3RhdGUqIGV4ZWMsIFByb3BlcnR5TmFtZSBwcm9wZXJ0eU5hbWUsIEpT
VmFsdWUgdmFsdWUsIFB1dFByb3BlcnR5U2xvdCYgc2xvdCkKIHsKICAgICBsb29rdXBQdXQ8UmVn
RXhwQ29uc3RydWN0b3IsIEludGVybmFsRnVuY3Rpb24+KGV4ZWMsIHByb3BlcnR5TmFtZSwgdmFs
dWUsIEV4ZWNTdGF0ZTo6cmVnRXhwQ29uc3RydWN0b3JUYWJsZShleGVjKSwganNDYXN0PFJlZ0V4
cENvbnN0cnVjdG9yKj4oY2VsbCksIHNsb3QpOwogfQpJbmRleDogU291cmNlL0phdmFTY3JpcHRD
b3JlL3J1bnRpbWUvUmVnRXhwQ29uc3RydWN0b3IuaAo9PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvSmF2
YVNjcmlwdENvcmUvcnVudGltZS9SZWdFeHBDb25zdHJ1Y3Rvci5oCShyZXZpc2lvbiAxMTY2Njcp
CisrKyBTb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9SZWdFeHBDb25zdHJ1Y3Rvci5oCSh3
b3JraW5nIGNvcHkpCkBAIC00OCwxMCArNDgsMTAgQEAgbmFtZXNwYWNlIEpTQyB7CiAgICAgICAg
ICAgICByZXR1cm4gU3RydWN0dXJlOjpjcmVhdGUoZ2xvYmFsRGF0YSwgZ2xvYmFsT2JqZWN0LCBw
cm90b3R5cGUsIFR5cGVJbmZvKE9iamVjdFR5cGUsIFN0cnVjdHVyZUZsYWdzKSwgJnNfaW5mbyk7
CiAgICAgICAgIH0KIAotICAgICAgICBzdGF0aWMgdm9pZCBwdXQoSlNDZWxsKiwgRXhlY1N0YXRl
KiwgY29uc3QgSWRlbnRpZmllciYgcHJvcGVydHlOYW1lLCBKU1ZhbHVlLCBQdXRQcm9wZXJ0eVNs
b3QmKTsKKyAgICAgICAgc3RhdGljIHZvaWQgcHV0KEpTQ2VsbCosIEV4ZWNTdGF0ZSosIFByb3Bl
cnR5TmFtZSBwcm9wZXJ0eU5hbWUsIEpTVmFsdWUsIFB1dFByb3BlcnR5U2xvdCYpOwogCi0gICAg
ICAgIHN0YXRpYyBib29sIGdldE93blByb3BlcnR5U2xvdChKU0NlbGwqLCBFeGVjU3RhdGUqLCBj
b25zdCBJZGVudGlmaWVyJiBwcm9wZXJ0eU5hbWUsIFByb3BlcnR5U2xvdCYpOwotICAgICAgICBz
dGF0aWMgYm9vbCBnZXRPd25Qcm9wZXJ0eURlc2NyaXB0b3IoSlNPYmplY3QqLCBFeGVjU3RhdGUq
LCBjb25zdCBJZGVudGlmaWVyJiwgUHJvcGVydHlEZXNjcmlwdG9yJik7CisgICAgICAgIHN0YXRp
YyBib29sIGdldE93blByb3BlcnR5U2xvdChKU0NlbGwqLCBFeGVjU3RhdGUqLCBQcm9wZXJ0eU5h
bWUgcHJvcGVydHlOYW1lLCBQcm9wZXJ0eVNsb3QmKTsKKyAgICAgICAgc3RhdGljIGJvb2wgZ2V0
T3duUHJvcGVydHlEZXNjcmlwdG9yKEpTT2JqZWN0KiwgRXhlY1N0YXRlKiwgUHJvcGVydHlOYW1l
LCBQcm9wZXJ0eURlc2NyaXB0b3ImKTsKIAogICAgICAgICBzdGF0aWMgY29uc3QgQ2xhc3NJbmZv
IHNfaW5mbzsKIApJbmRleDogU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvUmVnRXhwTWF0
Y2hlc0FycmF5LmgKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUv
UmVnRXhwTWF0Y2hlc0FycmF5LmgJKHJldmlzaW9uIDExNjY2NykKKysrIFNvdXJjZS9KYXZhU2Ny
aXB0Q29yZS9ydW50aW1lL1JlZ0V4cE1hdGNoZXNBcnJheS5oCSh3b3JraW5nIGNvcHkpCkBAIC04
MSw3ICs4MSw3IEBAIG5hbWVzcGFjZSBKU0MgewogICAgICAgICAgICAgICAgIHJlaWZ5TWF0Y2hQ
cm9wZXJ0eShleGVjKTsKICAgICAgICAgfQogCi0gICAgICAgIHN0YXRpYyBib29sIGdldE93blBy
b3BlcnR5U2xvdChKU0NlbGwqIGNlbGwsIEV4ZWNTdGF0ZSogZXhlYywgY29uc3QgSWRlbnRpZmll
ciYgcHJvcGVydHlOYW1lLCBQcm9wZXJ0eVNsb3QmIHNsb3QpCisgICAgICAgIHN0YXRpYyBib29s
IGdldE93blByb3BlcnR5U2xvdChKU0NlbGwqIGNlbGwsIEV4ZWNTdGF0ZSogZXhlYywgUHJvcGVy
dHlOYW1lIHByb3BlcnR5TmFtZSwgUHJvcGVydHlTbG90JiBzbG90KQogICAgICAgICB7CiAgICAg
ICAgICAgICBSZWdFeHBNYXRjaGVzQXJyYXkqIHRoaXNPYmplY3QgPSBqc0Nhc3Q8UmVnRXhwTWF0
Y2hlc0FycmF5Kj4oY2VsbCk7CiAgICAgICAgICAgICB0aGlzT2JqZWN0LT5yZWlmeUFsbFByb3Bl
cnRpZXNJZk5lY2Vzc2FyeShleGVjKTsKQEAgLTk4LDE0ICs5OCwxNCBAQCBuYW1lc3BhY2UgSlND
IHsKICAgICAgICAgICAgIHJldHVybiBKU0FycmF5OjpnZXRPd25Qcm9wZXJ0eVNsb3RCeUluZGV4
KHRoaXNPYmplY3QsIGV4ZWMsIHByb3BlcnR5TmFtZSwgc2xvdCk7CiAgICAgICAgIH0KIAotICAg
ICAgICBzdGF0aWMgYm9vbCBnZXRPd25Qcm9wZXJ0eURlc2NyaXB0b3IoSlNPYmplY3QqIG9iamVj
dCwgRXhlY1N0YXRlKiBleGVjLCBjb25zdCBJZGVudGlmaWVyJiBwcm9wZXJ0eU5hbWUsIFByb3Bl
cnR5RGVzY3JpcHRvciYgZGVzY3JpcHRvcikKKyAgICAgICAgc3RhdGljIGJvb2wgZ2V0T3duUHJv
cGVydHlEZXNjcmlwdG9yKEpTT2JqZWN0KiBvYmplY3QsIEV4ZWNTdGF0ZSogZXhlYywgUHJvcGVy
dHlOYW1lIHByb3BlcnR5TmFtZSwgUHJvcGVydHlEZXNjcmlwdG9yJiBkZXNjcmlwdG9yKQogICAg
ICAgICB7CiAgICAgICAgICAgICBSZWdFeHBNYXRjaGVzQXJyYXkqIHRoaXNPYmplY3QgPSBqc0Nh
c3Q8UmVnRXhwTWF0Y2hlc0FycmF5Kj4ob2JqZWN0KTsKICAgICAgICAgICAgIHRoaXNPYmplY3Qt
PnJlaWZ5QWxsUHJvcGVydGllc0lmTmVjZXNzYXJ5KGV4ZWMpOwogICAgICAgICAgICAgcmV0dXJu
IEpTQXJyYXk6OmdldE93blByb3BlcnR5RGVzY3JpcHRvcih0aGlzT2JqZWN0LCBleGVjLCBwcm9w
ZXJ0eU5hbWUsIGRlc2NyaXB0b3IpOwogICAgICAgICB9CiAKLSAgICAgICAgc3RhdGljIHZvaWQg
cHV0KEpTQ2VsbCogY2VsbCwgRXhlY1N0YXRlKiBleGVjLCBjb25zdCBJZGVudGlmaWVyJiBwcm9w
ZXJ0eU5hbWUsIEpTVmFsdWUgdiwgUHV0UHJvcGVydHlTbG90JiBzbG90KQorICAgICAgICBzdGF0
aWMgdm9pZCBwdXQoSlNDZWxsKiBjZWxsLCBFeGVjU3RhdGUqIGV4ZWMsIFByb3BlcnR5TmFtZSBw
cm9wZXJ0eU5hbWUsIEpTVmFsdWUgdiwgUHV0UHJvcGVydHlTbG90JiBzbG90KQogICAgICAgICB7
CiAgICAgICAgICAgICBSZWdFeHBNYXRjaGVzQXJyYXkqIHRoaXNPYmplY3QgPSBqc0Nhc3Q8UmVn
RXhwTWF0Y2hlc0FycmF5Kj4oY2VsbCk7CiAgICAgICAgICAgICB0aGlzT2JqZWN0LT5yZWlmeUFs
bFByb3BlcnRpZXNJZk5lY2Vzc2FyeShleGVjKTsKQEAgLTExOSw3ICsxMTksNyBAQCBuYW1lc3Bh
Y2UgSlNDIHsKICAgICAgICAgICAgIEpTQXJyYXk6OnB1dEJ5SW5kZXgodGhpc09iamVjdCwgZXhl
YywgcHJvcGVydHlOYW1lLCB2LCBzaG91bGRUaHJvdyk7CiAgICAgICAgIH0KIAotICAgICAgICBz
dGF0aWMgYm9vbCBkZWxldGVQcm9wZXJ0eShKU0NlbGwqIGNlbGwsIEV4ZWNTdGF0ZSogZXhlYywg
Y29uc3QgSWRlbnRpZmllciYgcHJvcGVydHlOYW1lKQorICAgICAgICBzdGF0aWMgYm9vbCBkZWxl
dGVQcm9wZXJ0eShKU0NlbGwqIGNlbGwsIEV4ZWNTdGF0ZSogZXhlYywgUHJvcGVydHlOYW1lIHBy
b3BlcnR5TmFtZSkKICAgICAgICAgewogICAgICAgICAgICAgUmVnRXhwTWF0Y2hlc0FycmF5KiB0
aGlzT2JqZWN0ID0ganNDYXN0PFJlZ0V4cE1hdGNoZXNBcnJheSo+KGNlbGwpOwogICAgICAgICAg
ICAgdGhpc09iamVjdC0+cmVpZnlBbGxQcm9wZXJ0aWVzSWZOZWNlc3NhcnkoZXhlYyk7CkBAIC0x
NDAsNyArMTQwLDcgQEAgbmFtZXNwYWNlIEpTQyB7CiAgICAgICAgICAgICBKU0FycmF5OjpnZXRP
d25Qcm9wZXJ0eU5hbWVzKHRoaXNPYmplY3QsIGV4ZWMsIGFyciwgbW9kZSk7CiAgICAgICAgIH0K
IAotICAgICAgICBzdGF0aWMgYm9vbCBkZWZpbmVPd25Qcm9wZXJ0eShKU09iamVjdCogb2JqZWN0
LCBFeGVjU3RhdGUqIGV4ZWMsIGNvbnN0IElkZW50aWZpZXImIHByb3BlcnR5TmFtZSwgUHJvcGVy
dHlEZXNjcmlwdG9yJiBkZXNjcmlwdG9yLCBib29sIHNob3VsZFRocm93KQorICAgICAgICBzdGF0
aWMgYm9vbCBkZWZpbmVPd25Qcm9wZXJ0eShKU09iamVjdCogb2JqZWN0LCBFeGVjU3RhdGUqIGV4
ZWMsIFByb3BlcnR5TmFtZSBwcm9wZXJ0eU5hbWUsIFByb3BlcnR5RGVzY3JpcHRvciYgZGVzY3Jp
cHRvciwgYm9vbCBzaG91bGRUaHJvdykKICAgICAgICAgewogICAgICAgICAgICAgUmVnRXhwTWF0
Y2hlc0FycmF5KiB0aGlzT2JqZWN0ID0ganNDYXN0PFJlZ0V4cE1hdGNoZXNBcnJheSo+KG9iamVj
dCk7CiAgICAgICAgICAgICB0aGlzT2JqZWN0LT5yZWlmeUFsbFByb3BlcnRpZXNJZk5lY2Vzc2Fy
eShleGVjKTsKSW5kZXg6IFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL1JlZ0V4cE9iamVj
dC5jcHAKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PQotLS0gU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvUmVnRXhw
T2JqZWN0LmNwcAkocmV2aXNpb24gMTE2NjY3KQorKysgU291cmNlL0phdmFTY3JpcHRDb3JlL3J1
bnRpbWUvUmVnRXhwT2JqZWN0LmNwcAkod29ya2luZyBjb3B5KQpAQCAtMzcsMTAgKzM3LDEwIEBA
CiAKIG5hbWVzcGFjZSBKU0MgewogCi1zdGF0aWMgSlNWYWx1ZSByZWdFeHBPYmplY3RHbG9iYWwo
RXhlY1N0YXRlKiwgSlNWYWx1ZSwgY29uc3QgSWRlbnRpZmllciYpOwotc3RhdGljIEpTVmFsdWUg
cmVnRXhwT2JqZWN0SWdub3JlQ2FzZShFeGVjU3RhdGUqLCBKU1ZhbHVlLCBjb25zdCBJZGVudGlm
aWVyJik7Ci1zdGF0aWMgSlNWYWx1ZSByZWdFeHBPYmplY3RNdWx0aWxpbmUoRXhlY1N0YXRlKiwg
SlNWYWx1ZSwgY29uc3QgSWRlbnRpZmllciYpOwotc3RhdGljIEpTVmFsdWUgcmVnRXhwT2JqZWN0
U291cmNlKEV4ZWNTdGF0ZSosIEpTVmFsdWUsIGNvbnN0IElkZW50aWZpZXImKTsKK3N0YXRpYyBK
U1ZhbHVlIHJlZ0V4cE9iamVjdEdsb2JhbChFeGVjU3RhdGUqLCBKU1ZhbHVlLCBQcm9wZXJ0eU5h
bWUpOworc3RhdGljIEpTVmFsdWUgcmVnRXhwT2JqZWN0SWdub3JlQ2FzZShFeGVjU3RhdGUqLCBK
U1ZhbHVlLCBQcm9wZXJ0eU5hbWUpOworc3RhdGljIEpTVmFsdWUgcmVnRXhwT2JqZWN0TXVsdGls
aW5lKEV4ZWNTdGF0ZSosIEpTVmFsdWUsIFByb3BlcnR5TmFtZSk7CitzdGF0aWMgSlNWYWx1ZSBy
ZWdFeHBPYmplY3RTb3VyY2UoRXhlY1N0YXRlKiwgSlNWYWx1ZSwgUHJvcGVydHlOYW1lKTsKIAog
fSAvLyBuYW1lc3BhY2UgSlNDCiAKQEAgLTg4LDcgKzg4LDcgQEAgdm9pZCBSZWdFeHBPYmplY3Q6
OnZpc2l0Q2hpbGRyZW4oSlNDZWxsKgogICAgICAgICB2aXNpdG9yLmFwcGVuZCgmdGhpc09iamVj
dC0+bV9sYXN0SW5kZXgpOwogfQogCi1ib29sIFJlZ0V4cE9iamVjdDo6Z2V0T3duUHJvcGVydHlT
bG90KEpTQ2VsbCogY2VsbCwgRXhlY1N0YXRlKiBleGVjLCBjb25zdCBJZGVudGlmaWVyJiBwcm9w
ZXJ0eU5hbWUsIFByb3BlcnR5U2xvdCYgc2xvdCkKK2Jvb2wgUmVnRXhwT2JqZWN0OjpnZXRPd25Q
cm9wZXJ0eVNsb3QoSlNDZWxsKiBjZWxsLCBFeGVjU3RhdGUqIGV4ZWMsIFByb3BlcnR5TmFtZSBw
cm9wZXJ0eU5hbWUsIFByb3BlcnR5U2xvdCYgc2xvdCkKIHsKICAgICBpZiAocHJvcGVydHlOYW1l
ID09IGV4ZWMtPnByb3BlcnR5TmFtZXMoKS5sYXN0SW5kZXgpIHsKICAgICAgICAgUmVnRXhwT2Jq
ZWN0KiByZWdFeHAgPSBhc1JlZ0V4cE9iamVjdChjZWxsKTsKQEAgLTk4LDcgKzk4LDcgQEAgYm9v
bCBSZWdFeHBPYmplY3Q6OmdldE93blByb3BlcnR5U2xvdChKUwogICAgIHJldHVybiBnZXRTdGF0
aWNWYWx1ZVNsb3Q8UmVnRXhwT2JqZWN0LCBKU09iamVjdD4oZXhlYywgRXhlY1N0YXRlOjpyZWdF
eHBUYWJsZShleGVjKSwganNDYXN0PFJlZ0V4cE9iamVjdCo+KGNlbGwpLCBwcm9wZXJ0eU5hbWUs
IHNsb3QpOwogfQogCi1ib29sIFJlZ0V4cE9iamVjdDo6Z2V0T3duUHJvcGVydHlEZXNjcmlwdG9y
KEpTT2JqZWN0KiBvYmplY3QsIEV4ZWNTdGF0ZSogZXhlYywgY29uc3QgSWRlbnRpZmllciYgcHJv
cGVydHlOYW1lLCBQcm9wZXJ0eURlc2NyaXB0b3ImIGRlc2NyaXB0b3IpCitib29sIFJlZ0V4cE9i
amVjdDo6Z2V0T3duUHJvcGVydHlEZXNjcmlwdG9yKEpTT2JqZWN0KiBvYmplY3QsIEV4ZWNTdGF0
ZSogZXhlYywgUHJvcGVydHlOYW1lIHByb3BlcnR5TmFtZSwgUHJvcGVydHlEZXNjcmlwdG9yJiBk
ZXNjcmlwdG9yKQogewogICAgIGlmIChwcm9wZXJ0eU5hbWUgPT0gZXhlYy0+cHJvcGVydHlOYW1l
cygpLmxhc3RJbmRleCkgewogICAgICAgICBSZWdFeHBPYmplY3QqIHJlZ0V4cCA9IGFzUmVnRXhw
T2JqZWN0KG9iamVjdCk7CkBAIC0xMDgsNyArMTA4LDcgQEAgYm9vbCBSZWdFeHBPYmplY3Q6Omdl
dE93blByb3BlcnR5RGVzY3JpcAogICAgIHJldHVybiBnZXRTdGF0aWNWYWx1ZURlc2NyaXB0b3I8
UmVnRXhwT2JqZWN0LCBKU09iamVjdD4oZXhlYywgRXhlY1N0YXRlOjpyZWdFeHBUYWJsZShleGVj
KSwganNDYXN0PFJlZ0V4cE9iamVjdCo+KG9iamVjdCksIHByb3BlcnR5TmFtZSwgZGVzY3JpcHRv
cik7CiB9CiAKLWJvb2wgUmVnRXhwT2JqZWN0OjpkZWxldGVQcm9wZXJ0eShKU0NlbGwqIGNlbGws
IEV4ZWNTdGF0ZSogZXhlYywgY29uc3QgSWRlbnRpZmllciYgcHJvcGVydHlOYW1lKQorYm9vbCBS
ZWdFeHBPYmplY3Q6OmRlbGV0ZVByb3BlcnR5KEpTQ2VsbCogY2VsbCwgRXhlY1N0YXRlKiBleGVj
LCBQcm9wZXJ0eU5hbWUgcHJvcGVydHlOYW1lKQogewogICAgIGlmIChwcm9wZXJ0eU5hbWUgPT0g
ZXhlYy0+cHJvcGVydHlOYW1lcygpLmxhc3RJbmRleCkKICAgICAgICAgcmV0dXJuIGZhbHNlOwpA
QCAtMTM2LDcgKzEzNiw3IEBAIHN0YXRpYyBib29sIHJlamVjdChFeGVjU3RhdGUqIGV4ZWMsIGJv
b2wKICAgICByZXR1cm4gZmFsc2U7CiB9CiAKLWJvb2wgUmVnRXhwT2JqZWN0OjpkZWZpbmVPd25Q
cm9wZXJ0eShKU09iamVjdCogb2JqZWN0LCBFeGVjU3RhdGUqIGV4ZWMsIGNvbnN0IElkZW50aWZp
ZXImIHByb3BlcnR5TmFtZSwgUHJvcGVydHlEZXNjcmlwdG9yJiBkZXNjcmlwdG9yLCBib29sIHNo
b3VsZFRocm93KQorYm9vbCBSZWdFeHBPYmplY3Q6OmRlZmluZU93blByb3BlcnR5KEpTT2JqZWN0
KiBvYmplY3QsIEV4ZWNTdGF0ZSogZXhlYywgUHJvcGVydHlOYW1lIHByb3BlcnR5TmFtZSwgUHJv
cGVydHlEZXNjcmlwdG9yJiBkZXNjcmlwdG9yLCBib29sIHNob3VsZFRocm93KQogewogICAgIGlm
IChwcm9wZXJ0eU5hbWUgPT0gZXhlYy0+cHJvcGVydHlOYW1lcygpLmxhc3RJbmRleCkgewogICAg
ICAgICBSZWdFeHBPYmplY3QqIHJlZ0V4cCA9IGFzUmVnRXhwT2JqZWN0KG9iamVjdCk7CkBAIC0x
NjMsMjIgKzE2MywyMiBAQCBib29sIFJlZ0V4cE9iamVjdDo6ZGVmaW5lT3duUHJvcGVydHkoSlNP
CiAgICAgcmV0dXJuIEJhc2U6OmRlZmluZU93blByb3BlcnR5KG9iamVjdCwgZXhlYywgcHJvcGVy
dHlOYW1lLCBkZXNjcmlwdG9yLCBzaG91bGRUaHJvdyk7CiB9CiAKLUpTVmFsdWUgcmVnRXhwT2Jq
ZWN0R2xvYmFsKEV4ZWNTdGF0ZSosIEpTVmFsdWUgc2xvdEJhc2UsIGNvbnN0IElkZW50aWZpZXIm
KQorSlNWYWx1ZSByZWdFeHBPYmplY3RHbG9iYWwoRXhlY1N0YXRlKiwgSlNWYWx1ZSBzbG90QmFz
ZSwgUHJvcGVydHlOYW1lKQogewogICAgIHJldHVybiBqc0Jvb2xlYW4oYXNSZWdFeHBPYmplY3Qo
c2xvdEJhc2UpLT5yZWdFeHAoKS0+Z2xvYmFsKCkpOwogfQogCi1KU1ZhbHVlIHJlZ0V4cE9iamVj
dElnbm9yZUNhc2UoRXhlY1N0YXRlKiwgSlNWYWx1ZSBzbG90QmFzZSwgY29uc3QgSWRlbnRpZmll
ciYpCitKU1ZhbHVlIHJlZ0V4cE9iamVjdElnbm9yZUNhc2UoRXhlY1N0YXRlKiwgSlNWYWx1ZSBz
bG90QmFzZSwgUHJvcGVydHlOYW1lKQogewogICAgIHJldHVybiBqc0Jvb2xlYW4oYXNSZWdFeHBP
YmplY3Qoc2xvdEJhc2UpLT5yZWdFeHAoKS0+aWdub3JlQ2FzZSgpKTsKIH0KICAKLUpTVmFsdWUg
cmVnRXhwT2JqZWN0TXVsdGlsaW5lKEV4ZWNTdGF0ZSosIEpTVmFsdWUgc2xvdEJhc2UsIGNvbnN0
IElkZW50aWZpZXImKQorSlNWYWx1ZSByZWdFeHBPYmplY3RNdWx0aWxpbmUoRXhlY1N0YXRlKiwg
SlNWYWx1ZSBzbG90QmFzZSwgUHJvcGVydHlOYW1lKQogeyAgICAgICAgICAgIAogICAgIHJldHVy
biBqc0Jvb2xlYW4oYXNSZWdFeHBPYmplY3Qoc2xvdEJhc2UpLT5yZWdFeHAoKS0+bXVsdGlsaW5l
KCkpOwogfQogCi1KU1ZhbHVlIHJlZ0V4cE9iamVjdFNvdXJjZShFeGVjU3RhdGUqIGV4ZWMsIEpT
VmFsdWUgc2xvdEJhc2UsIGNvbnN0IElkZW50aWZpZXImKQorSlNWYWx1ZSByZWdFeHBPYmplY3RT
b3VyY2UoRXhlY1N0YXRlKiBleGVjLCBKU1ZhbHVlIHNsb3RCYXNlLCBQcm9wZXJ0eU5hbWUpCiB7
CiAgICAgVVN0cmluZyBwYXR0ZXJuID0gYXNSZWdFeHBPYmplY3Qoc2xvdEJhc2UpLT5yZWdFeHAo
KS0+cGF0dGVybigpOwogICAgIHVuc2lnbmVkIGxlbmd0aCA9IHBhdHRlcm4ubGVuZ3RoKCk7CkBA
IC0yNjgsNyArMjY4LDcgQEAgSlNWYWx1ZSByZWdFeHBPYmplY3RTb3VyY2UoRXhlY1N0YXRlKiBl
eAogICAgIHJldHVybiBqc1N0cmluZyhleGVjLCByZXN1bHQudG9VU3RyaW5nKCkpOwogfQogCi12
b2lkIFJlZ0V4cE9iamVjdDo6cHV0KEpTQ2VsbCogY2VsbCwgRXhlY1N0YXRlKiBleGVjLCBjb25z
dCBJZGVudGlmaWVyJiBwcm9wZXJ0eU5hbWUsIEpTVmFsdWUgdmFsdWUsIFB1dFByb3BlcnR5U2xv
dCYgc2xvdCkKK3ZvaWQgUmVnRXhwT2JqZWN0OjpwdXQoSlNDZWxsKiBjZWxsLCBFeGVjU3RhdGUq
IGV4ZWMsIFByb3BlcnR5TmFtZSBwcm9wZXJ0eU5hbWUsIEpTVmFsdWUgdmFsdWUsIFB1dFByb3Bl
cnR5U2xvdCYgc2xvdCkKIHsKICAgICBpZiAocHJvcGVydHlOYW1lID09IGV4ZWMtPnByb3BlcnR5
TmFtZXMoKS5sYXN0SW5kZXgpIHsKICAgICAgICAgYXNSZWdFeHBPYmplY3QoY2VsbCktPnNldExh
c3RJbmRleChleGVjLCB2YWx1ZSwgc2xvdC5pc1N0cmljdE1vZGUoKSk7CkluZGV4OiBTb3VyY2Uv
SmF2YVNjcmlwdENvcmUvcnVudGltZS9SZWdFeHBPYmplY3QuaAo9PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3Vy
Y2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9SZWdFeHBPYmplY3QuaAkocmV2aXNpb24gMTE2NjY3
KQorKysgU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvUmVnRXhwT2JqZWN0LmgJKHdvcmtp
bmcgY29weSkKQEAgLTcwLDkgKzcwLDkgQEAgbmFtZXNwYWNlIEpTQyB7CiAgICAgICAgIGJvb2wg
dGVzdChFeGVjU3RhdGUqIGV4ZWMsIEpTU3RyaW5nKiBzdHJpbmcpIHsgcmV0dXJuIG1hdGNoKGV4
ZWMsIHN0cmluZyk7IH0KICAgICAgICAgSlNWYWx1ZSBleGVjKEV4ZWNTdGF0ZSosIEpTU3RyaW5n
Kik7CiAKLSAgICAgICAgc3RhdGljIGJvb2wgZ2V0T3duUHJvcGVydHlTbG90KEpTQ2VsbCosIEV4
ZWNTdGF0ZSosIGNvbnN0IElkZW50aWZpZXImIHByb3BlcnR5TmFtZSwgUHJvcGVydHlTbG90Jik7
Ci0gICAgICAgIHN0YXRpYyBib29sIGdldE93blByb3BlcnR5RGVzY3JpcHRvcihKU09iamVjdCos
IEV4ZWNTdGF0ZSosIGNvbnN0IElkZW50aWZpZXImLCBQcm9wZXJ0eURlc2NyaXB0b3ImKTsKLSAg
ICAgICAgc3RhdGljIHZvaWQgcHV0KEpTQ2VsbCosIEV4ZWNTdGF0ZSosIGNvbnN0IElkZW50aWZp
ZXImIHByb3BlcnR5TmFtZSwgSlNWYWx1ZSwgUHV0UHJvcGVydHlTbG90Jik7CisgICAgICAgIHN0
YXRpYyBib29sIGdldE93blByb3BlcnR5U2xvdChKU0NlbGwqLCBFeGVjU3RhdGUqLCBQcm9wZXJ0
eU5hbWUgcHJvcGVydHlOYW1lLCBQcm9wZXJ0eVNsb3QmKTsKKyAgICAgICAgc3RhdGljIGJvb2wg
Z2V0T3duUHJvcGVydHlEZXNjcmlwdG9yKEpTT2JqZWN0KiwgRXhlY1N0YXRlKiwgUHJvcGVydHlO
YW1lLCBQcm9wZXJ0eURlc2NyaXB0b3ImKTsKKyAgICAgICAgc3RhdGljIHZvaWQgcHV0KEpTQ2Vs
bCosIEV4ZWNTdGF0ZSosIFByb3BlcnR5TmFtZSBwcm9wZXJ0eU5hbWUsIEpTVmFsdWUsIFB1dFBy
b3BlcnR5U2xvdCYpOwogCiAgICAgICAgIHN0YXRpYyBKU19FWFBPUlREQVRBIGNvbnN0IENsYXNz
SW5mbyBzX2luZm87CiAKQEAgLTg5LDEwICs4OSwxMCBAQCBuYW1lc3BhY2UgSlNDIHsKIAogICAg
ICAgICBzdGF0aWMgdm9pZCB2aXNpdENoaWxkcmVuKEpTQ2VsbCosIFNsb3RWaXNpdG9yJik7CiAK
LSAgICAgICAgSlNfRVhQT1JUX1BSSVZBVEUgc3RhdGljIGJvb2wgZGVsZXRlUHJvcGVydHkoSlND
ZWxsKiwgRXhlY1N0YXRlKiwgY29uc3QgSWRlbnRpZmllciYgcHJvcGVydHlOYW1lKTsKKyAgICAg
ICAgSlNfRVhQT1JUX1BSSVZBVEUgc3RhdGljIGJvb2wgZGVsZXRlUHJvcGVydHkoSlNDZWxsKiwg
RXhlY1N0YXRlKiwgUHJvcGVydHlOYW1lIHByb3BlcnR5TmFtZSk7CiAgICAgICAgIEpTX0VYUE9S
VF9QUklWQVRFIHN0YXRpYyB2b2lkIGdldE93blByb3BlcnR5TmFtZXMoSlNPYmplY3QqLCBFeGVj
U3RhdGUqLCBQcm9wZXJ0eU5hbWVBcnJheSYsIEVudW1lcmF0aW9uTW9kZSk7CiAgICAgICAgIEpT
X0VYUE9SVF9QUklWQVRFIHN0YXRpYyB2b2lkIGdldFByb3BlcnR5TmFtZXMoSlNPYmplY3QqLCBF
eGVjU3RhdGUqLCBQcm9wZXJ0eU5hbWVBcnJheSYsIEVudW1lcmF0aW9uTW9kZSk7Ci0gICAgICAg
IEpTX0VYUE9SVF9QUklWQVRFIHN0YXRpYyBib29sIGRlZmluZU93blByb3BlcnR5KEpTT2JqZWN0
KiwgRXhlY1N0YXRlKiwgY29uc3QgSWRlbnRpZmllciYgcHJvcGVydHlOYW1lLCBQcm9wZXJ0eURl
c2NyaXB0b3ImLCBib29sIHNob3VsZFRocm93KTsKKyAgICAgICAgSlNfRVhQT1JUX1BSSVZBVEUg
c3RhdGljIGJvb2wgZGVmaW5lT3duUHJvcGVydHkoSlNPYmplY3QqLCBFeGVjU3RhdGUqLCBQcm9w
ZXJ0eU5hbWUgcHJvcGVydHlOYW1lLCBQcm9wZXJ0eURlc2NyaXB0b3ImLCBib29sIHNob3VsZFRo
cm93KTsKIAogICAgIHByaXZhdGU6CiAgICAgICAgIE1hdGNoUmVzdWx0IG1hdGNoKEV4ZWNTdGF0
ZSosIEpTU3RyaW5nKik7CkluZGV4OiBTb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9SZWdF
eHBQcm90b3R5cGUuY3BwCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50
aW1lL1JlZ0V4cFByb3RvdHlwZS5jcHAJKHJldmlzaW9uIDExNjY2NykKKysrIFNvdXJjZS9KYXZh
U2NyaXB0Q29yZS9ydW50aW1lL1JlZ0V4cFByb3RvdHlwZS5jcHAJKHdvcmtpbmcgY29weSkKQEAg
LTY3LDEyICs2NywxMiBAQCBSZWdFeHBQcm90b3R5cGU6OlJlZ0V4cFByb3RvdHlwZShKU0dsb2Jh
CiB7CiB9CiAKLWJvb2wgUmVnRXhwUHJvdG90eXBlOjpnZXRPd25Qcm9wZXJ0eVNsb3QoSlNDZWxs
KiBjZWxsLCBFeGVjU3RhdGUqIGV4ZWMsIGNvbnN0IElkZW50aWZpZXImIHByb3BlcnR5TmFtZSwg
UHJvcGVydHlTbG90ICZzbG90KQorYm9vbCBSZWdFeHBQcm90b3R5cGU6OmdldE93blByb3BlcnR5
U2xvdChKU0NlbGwqIGNlbGwsIEV4ZWNTdGF0ZSogZXhlYywgUHJvcGVydHlOYW1lIHByb3BlcnR5
TmFtZSwgUHJvcGVydHlTbG90ICZzbG90KQogewogICAgIHJldHVybiBnZXRTdGF0aWNGdW5jdGlv
blNsb3Q8UmVnRXhwT2JqZWN0PihleGVjLCBFeGVjU3RhdGU6OnJlZ0V4cFByb3RvdHlwZVRhYmxl
KGV4ZWMpLCBqc0Nhc3Q8UmVnRXhwUHJvdG90eXBlKj4oY2VsbCksIHByb3BlcnR5TmFtZSwgc2xv
dCk7CiB9CiAKLWJvb2wgUmVnRXhwUHJvdG90eXBlOjpnZXRPd25Qcm9wZXJ0eURlc2NyaXB0b3Io
SlNPYmplY3QqIG9iamVjdCwgRXhlY1N0YXRlKiBleGVjLCBjb25zdCBJZGVudGlmaWVyJiBwcm9w
ZXJ0eU5hbWUsIFByb3BlcnR5RGVzY3JpcHRvciYgZGVzY3JpcHRvcikKK2Jvb2wgUmVnRXhwUHJv
dG90eXBlOjpnZXRPd25Qcm9wZXJ0eURlc2NyaXB0b3IoSlNPYmplY3QqIG9iamVjdCwgRXhlY1N0
YXRlKiBleGVjLCBQcm9wZXJ0eU5hbWUgcHJvcGVydHlOYW1lLCBQcm9wZXJ0eURlc2NyaXB0b3Im
IGRlc2NyaXB0b3IpCiB7CiAgICAgcmV0dXJuIGdldFN0YXRpY0Z1bmN0aW9uRGVzY3JpcHRvcjxS
ZWdFeHBPYmplY3Q+KGV4ZWMsIEV4ZWNTdGF0ZTo6cmVnRXhwUHJvdG90eXBlVGFibGUoZXhlYyks
IGpzQ2FzdDxSZWdFeHBQcm90b3R5cGUqPihvYmplY3QpLCBwcm9wZXJ0eU5hbWUsIGRlc2NyaXB0
b3IpOwogfQpJbmRleDogU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvUmVnRXhwUHJvdG90
eXBlLmgKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PQotLS0gU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvUmVnRXhw
UHJvdG90eXBlLmgJKHJldmlzaW9uIDExNjY2NykKKysrIFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9y
dW50aW1lL1JlZ0V4cFByb3RvdHlwZS5oCSh3b3JraW5nIGNvcHkpCkBAIC00OSw4ICs0OSw4IEBA
IG5hbWVzcGFjZSBKU0MgewogICAgICAgICBzdGF0aWMgY29uc3QgdW5zaWduZWQgU3RydWN0dXJl
RmxhZ3MgPSBPdmVycmlkZXNHZXRPd25Qcm9wZXJ0eVNsb3QgfCBSZWdFeHBPYmplY3Q6OlN0cnVj
dHVyZUZsYWdzOwogCiAgICAgcHJpdmF0ZToKLSAgICAgICAgc3RhdGljIGJvb2wgZ2V0T3duUHJv
cGVydHlTbG90KEpTQ2VsbCosIEV4ZWNTdGF0ZSosIGNvbnN0IElkZW50aWZpZXImLCBQcm9wZXJ0
eVNsb3QmKTsKLSAgICAgICAgc3RhdGljIGJvb2wgZ2V0T3duUHJvcGVydHlEZXNjcmlwdG9yKEpT
T2JqZWN0KiwgRXhlY1N0YXRlKiwgY29uc3QgSWRlbnRpZmllciYsIFByb3BlcnR5RGVzY3JpcHRv
ciYpOworICAgICAgICBzdGF0aWMgYm9vbCBnZXRPd25Qcm9wZXJ0eVNsb3QoSlNDZWxsKiwgRXhl
Y1N0YXRlKiwgUHJvcGVydHlOYW1lLCBQcm9wZXJ0eVNsb3QmKTsKKyAgICAgICAgc3RhdGljIGJv
b2wgZ2V0T3duUHJvcGVydHlEZXNjcmlwdG9yKEpTT2JqZWN0KiwgRXhlY1N0YXRlKiwgUHJvcGVy
dHlOYW1lLCBQcm9wZXJ0eURlc2NyaXB0b3ImKTsKICAgICB9OwogCiB9IC8vIG5hbWVzcGFjZSBK
U0MKSW5kZXg6IFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL1N0cmljdEV2YWxBY3RpdmF0
aW9uLmNwcAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9TdHJp
Y3RFdmFsQWN0aXZhdGlvbi5jcHAJKHJldmlzaW9uIDExNjY2NykKKysrIFNvdXJjZS9KYXZhU2Ny
aXB0Q29yZS9ydW50aW1lL1N0cmljdEV2YWxBY3RpdmF0aW9uLmNwcAkod29ya2luZyBjb3B5KQpA
QCAtMzcsNyArMzcsNyBAQCBTdHJpY3RFdmFsQWN0aXZhdGlvbjo6U3RyaWN0RXZhbEFjdGl2YXRp
CiB7CiB9CiAKLWJvb2wgU3RyaWN0RXZhbEFjdGl2YXRpb246OmRlbGV0ZVByb3BlcnR5KEpTQ2Vs
bCosIEV4ZWNTdGF0ZSosIGNvbnN0IElkZW50aWZpZXImKQorYm9vbCBTdHJpY3RFdmFsQWN0aXZh
dGlvbjo6ZGVsZXRlUHJvcGVydHkoSlNDZWxsKiwgRXhlY1N0YXRlKiwgUHJvcGVydHlOYW1lKQog
ewogICAgIHJldHVybiBmYWxzZTsKIH0KSW5kZXg6IFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50
aW1lL1N0cmljdEV2YWxBY3RpdmF0aW9uLmgKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL0phdmFTY3Jp
cHRDb3JlL3J1bnRpbWUvU3RyaWN0RXZhbEFjdGl2YXRpb24uaAkocmV2aXNpb24gMTE2NjY3KQor
KysgU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvU3RyaWN0RXZhbEFjdGl2YXRpb24uaAko
d29ya2luZyBjb3B5KQpAQCAtNDEsNyArNDEsNyBAQCBwdWJsaWM6CiAgICAgICAgIHJldHVybiBh
Y3RpdmF0aW9uOwogICAgIH0KIAotICAgIHN0YXRpYyBib29sIGRlbGV0ZVByb3BlcnR5KEpTQ2Vs
bCosIEV4ZWNTdGF0ZSosIGNvbnN0IElkZW50aWZpZXImKTsKKyAgICBzdGF0aWMgYm9vbCBkZWxl
dGVQcm9wZXJ0eShKU0NlbGwqLCBFeGVjU3RhdGUqLCBQcm9wZXJ0eU5hbWUpOwogICAgIHN0YXRp
YyBKU09iamVjdCogdG9UaGlzT2JqZWN0KEpTQ2VsbCosIEV4ZWNTdGF0ZSopOwogCiAgICAgc3Rh
dGljIFN0cnVjdHVyZSogY3JlYXRlU3RydWN0dXJlKEpTR2xvYmFsRGF0YSYgZ2xvYmFsRGF0YSwg
SlNHbG9iYWxPYmplY3QqIGdsb2JhbE9iamVjdCwgSlNWYWx1ZSBwcm90b3R5cGUpCkluZGV4OiBT
b3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9TdHJpbmdDb25zdHJ1Y3Rvci5jcHAKPT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PQotLS0gU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvU3RyaW5nQ29uc3RydWN0b3Iu
Y3BwCShyZXZpc2lvbiAxMTY2NjcpCisrKyBTb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9T
dHJpbmdDb25zdHJ1Y3Rvci5jcHAJKHdvcmtpbmcgY29weSkKQEAgLTU1LDE3ICs1NSwxNyBAQCBT
dHJpbmdDb25zdHJ1Y3Rvcjo6U3RyaW5nQ29uc3RydWN0b3IoSlNHCiAKIHZvaWQgU3RyaW5nQ29u
c3RydWN0b3I6OmZpbmlzaENyZWF0aW9uKEV4ZWNTdGF0ZSogZXhlYywgU3RyaW5nUHJvdG90eXBl
KiBzdHJpbmdQcm90b3R5cGUpCiB7Ci0gICAgQmFzZTo6ZmluaXNoQ3JlYXRpb24oZXhlYy0+Z2xv
YmFsRGF0YSgpLCBJZGVudGlmaWVyKGV4ZWMsIHN0cmluZ1Byb3RvdHlwZS0+Y2xhc3NJbmZvKCkt
PmNsYXNzTmFtZSkpOworICAgIEJhc2U6OmZpbmlzaENyZWF0aW9uKGV4ZWMtPmdsb2JhbERhdGEo
KSwgc3RyaW5nUHJvdG90eXBlLT5jbGFzc0luZm8oKS0+Y2xhc3NOYW1lKTsKICAgICBwdXREaXJl
Y3RXaXRob3V0VHJhbnNpdGlvbihleGVjLT5nbG9iYWxEYXRhKCksIGV4ZWMtPnByb3BlcnR5TmFt
ZXMoKS5wcm90b3R5cGUsIHN0cmluZ1Byb3RvdHlwZSwgUmVhZE9ubHkgfCBEb250RW51bSB8IERv
bnREZWxldGUpOwogICAgIHB1dERpcmVjdFdpdGhvdXRUcmFuc2l0aW9uKGV4ZWMtPmdsb2JhbERh
dGEoKSwgZXhlYy0+cHJvcGVydHlOYW1lcygpLmxlbmd0aCwganNOdW1iZXIoMSksIFJlYWRPbmx5
IHwgRG9udEVudW0gfCBEb250RGVsZXRlKTsKIH0KIAotYm9vbCBTdHJpbmdDb25zdHJ1Y3Rvcjo6
Z2V0T3duUHJvcGVydHlTbG90KEpTQ2VsbCogY2VsbCwgRXhlY1N0YXRlKiBleGVjLCBjb25zdCBJ
ZGVudGlmaWVyJiBwcm9wZXJ0eU5hbWUsIFByb3BlcnR5U2xvdCAmc2xvdCkKK2Jvb2wgU3RyaW5n
Q29uc3RydWN0b3I6OmdldE93blByb3BlcnR5U2xvdChKU0NlbGwqIGNlbGwsIEV4ZWNTdGF0ZSog
ZXhlYywgUHJvcGVydHlOYW1lIHByb3BlcnR5TmFtZSwgUHJvcGVydHlTbG90ICZzbG90KQogewog
ICAgIHJldHVybiBnZXRTdGF0aWNGdW5jdGlvblNsb3Q8SW50ZXJuYWxGdW5jdGlvbj4oZXhlYywg
RXhlY1N0YXRlOjpzdHJpbmdDb25zdHJ1Y3RvclRhYmxlKGV4ZWMpLCBqc0Nhc3Q8U3RyaW5nQ29u
c3RydWN0b3IqPihjZWxsKSwgcHJvcGVydHlOYW1lLCBzbG90KTsKIH0KIAotYm9vbCBTdHJpbmdD
b25zdHJ1Y3Rvcjo6Z2V0T3duUHJvcGVydHlEZXNjcmlwdG9yKEpTT2JqZWN0KiBvYmplY3QsIEV4
ZWNTdGF0ZSogZXhlYywgY29uc3QgSWRlbnRpZmllciYgcHJvcGVydHlOYW1lLCBQcm9wZXJ0eURl
c2NyaXB0b3ImIGRlc2NyaXB0b3IpCitib29sIFN0cmluZ0NvbnN0cnVjdG9yOjpnZXRPd25Qcm9w
ZXJ0eURlc2NyaXB0b3IoSlNPYmplY3QqIG9iamVjdCwgRXhlY1N0YXRlKiBleGVjLCBQcm9wZXJ0
eU5hbWUgcHJvcGVydHlOYW1lLCBQcm9wZXJ0eURlc2NyaXB0b3ImIGRlc2NyaXB0b3IpCiB7CiAg
ICAgcmV0dXJuIGdldFN0YXRpY0Z1bmN0aW9uRGVzY3JpcHRvcjxJbnRlcm5hbEZ1bmN0aW9uPihl
eGVjLCBFeGVjU3RhdGU6OnN0cmluZ0NvbnN0cnVjdG9yVGFibGUoZXhlYyksIGpzQ2FzdDxTdHJp
bmdDb25zdHJ1Y3Rvcio+KG9iamVjdCksIHByb3BlcnR5TmFtZSwgZGVzY3JpcHRvcik7CiB9Cklu
ZGV4OiBTb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9TdHJpbmdDb25zdHJ1Y3Rvci5oCj09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT0KLS0tIFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL1N0cmluZ0NvbnN0cnVj
dG9yLmgJKHJldmlzaW9uIDExNjY2NykKKysrIFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1l
L1N0cmluZ0NvbnN0cnVjdG9yLmgJKHdvcmtpbmcgY29weSkKQEAgLTU0LDggKzU0LDggQEAgbmFt
ZXNwYWNlIEpTQyB7CiAgICAgICAgIHN0YXRpYyBDb25zdHJ1Y3RUeXBlIGdldENvbnN0cnVjdERh
dGEoSlNDZWxsKiwgQ29uc3RydWN0RGF0YSYpOwogICAgICAgICBzdGF0aWMgQ2FsbFR5cGUgZ2V0
Q2FsbERhdGEoSlNDZWxsKiwgQ2FsbERhdGEmKTsKIAotICAgICAgICBzdGF0aWMgYm9vbCBnZXRP
d25Qcm9wZXJ0eVNsb3QoSlNDZWxsKiwgRXhlY1N0YXRlKiwgY29uc3QgSWRlbnRpZmllciYsIFBy
b3BlcnR5U2xvdCYpOwotICAgICAgICBzdGF0aWMgYm9vbCBnZXRPd25Qcm9wZXJ0eURlc2NyaXB0
b3IoSlNPYmplY3QqLCBFeGVjU3RhdGUqLCBjb25zdCBJZGVudGlmaWVyJiwgUHJvcGVydHlEZXNj
cmlwdG9yJik7CisgICAgICAgIHN0YXRpYyBib29sIGdldE93blByb3BlcnR5U2xvdChKU0NlbGwq
LCBFeGVjU3RhdGUqLCBQcm9wZXJ0eU5hbWUsIFByb3BlcnR5U2xvdCYpOworICAgICAgICBzdGF0
aWMgYm9vbCBnZXRPd25Qcm9wZXJ0eURlc2NyaXB0b3IoSlNPYmplY3QqLCBFeGVjU3RhdGUqLCBQ
cm9wZXJ0eU5hbWUsIFByb3BlcnR5RGVzY3JpcHRvciYpOwogICAgIH07CiAKIH0gLy8gbmFtZXNw
YWNlIEpTQwpJbmRleDogU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvU3RyaW5nT2JqZWN0
LmNwcAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9TdHJpbmdP
YmplY3QuY3BwCShyZXZpc2lvbiAxMTY2NjcpCisrKyBTb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVu
dGltZS9TdHJpbmdPYmplY3QuY3BwCSh3b3JraW5nIGNvcHkpCkBAIC00Myw3ICs0Myw3IEBAIHZv
aWQgU3RyaW5nT2JqZWN0OjpmaW5pc2hDcmVhdGlvbihKU0dsb2IKICAgICBzZXRJbnRlcm5hbFZh
bHVlKGdsb2JhbERhdGEsIHN0cmluZyk7CiB9CiAKLWJvb2wgU3RyaW5nT2JqZWN0OjpnZXRPd25Q
cm9wZXJ0eVNsb3QoSlNDZWxsKiBjZWxsLCBFeGVjU3RhdGUqIGV4ZWMsIGNvbnN0IElkZW50aWZp
ZXImIHByb3BlcnR5TmFtZSwgUHJvcGVydHlTbG90JiBzbG90KQorYm9vbCBTdHJpbmdPYmplY3Q6
OmdldE93blByb3BlcnR5U2xvdChKU0NlbGwqIGNlbGwsIEV4ZWNTdGF0ZSogZXhlYywgUHJvcGVy
dHlOYW1lIHByb3BlcnR5TmFtZSwgUHJvcGVydHlTbG90JiBzbG90KQogewogICAgIFN0cmluZ09i
amVjdCogdGhpc09iamVjdCA9IGpzQ2FzdDxTdHJpbmdPYmplY3QqPihjZWxsKTsKICAgICBpZiAo
dGhpc09iamVjdC0+aW50ZXJuYWxWYWx1ZSgpLT5nZXRTdHJpbmdQcm9wZXJ0eVNsb3QoZXhlYywg
cHJvcGVydHlOYW1lLCBzbG90KSkKQEAgLTU5LDcgKzU5LDcgQEAgYm9vbCBTdHJpbmdPYmplY3Q6
OmdldE93blByb3BlcnR5U2xvdEJ5SQogICAgIHJldHVybiBKU09iamVjdDo6Z2V0T3duUHJvcGVy
dHlTbG90KHRoaXNPYmplY3QsIGV4ZWMsIElkZW50aWZpZXI6OmZyb20oZXhlYywgcHJvcGVydHlO
YW1lKSwgc2xvdCk7CiB9CiAKLWJvb2wgU3RyaW5nT2JqZWN0OjpnZXRPd25Qcm9wZXJ0eURlc2Ny
aXB0b3IoSlNPYmplY3QqIG9iamVjdCwgRXhlY1N0YXRlKiBleGVjLCBjb25zdCBJZGVudGlmaWVy
JiBwcm9wZXJ0eU5hbWUsIFByb3BlcnR5RGVzY3JpcHRvciYgZGVzY3JpcHRvcikKK2Jvb2wgU3Ry
aW5nT2JqZWN0OjpnZXRPd25Qcm9wZXJ0eURlc2NyaXB0b3IoSlNPYmplY3QqIG9iamVjdCwgRXhl
Y1N0YXRlKiBleGVjLCBQcm9wZXJ0eU5hbWUgcHJvcGVydHlOYW1lLCBQcm9wZXJ0eURlc2NyaXB0
b3ImIGRlc2NyaXB0b3IpCiB7CiAgICAgU3RyaW5nT2JqZWN0KiB0aGlzT2JqZWN0ID0ganNDYXN0
PFN0cmluZ09iamVjdCo+KG9iamVjdCk7CiAgICAgaWYgKHRoaXNPYmplY3QtPmludGVybmFsVmFs
dWUoKS0+Z2V0U3RyaW5nUHJvcGVydHlEZXNjcmlwdG9yKGV4ZWMsIHByb3BlcnR5TmFtZSwgZGVz
Y3JpcHRvcikpCkBAIC02Nyw3ICs2Nyw3IEBAIGJvb2wgU3RyaW5nT2JqZWN0OjpnZXRPd25Qcm9w
ZXJ0eURlc2NyaXAKICAgICByZXR1cm4gSlNPYmplY3Q6OmdldE93blByb3BlcnR5RGVzY3JpcHRv
cih0aGlzT2JqZWN0LCBleGVjLCBwcm9wZXJ0eU5hbWUsIGRlc2NyaXB0b3IpOwogfQogCi12b2lk
IFN0cmluZ09iamVjdDo6cHV0KEpTQ2VsbCogY2VsbCwgRXhlY1N0YXRlKiBleGVjLCBjb25zdCBJ
ZGVudGlmaWVyJiBwcm9wZXJ0eU5hbWUsIEpTVmFsdWUgdmFsdWUsIFB1dFByb3BlcnR5U2xvdCYg
c2xvdCkKK3ZvaWQgU3RyaW5nT2JqZWN0OjpwdXQoSlNDZWxsKiBjZWxsLCBFeGVjU3RhdGUqIGV4
ZWMsIFByb3BlcnR5TmFtZSBwcm9wZXJ0eU5hbWUsIEpTVmFsdWUgdmFsdWUsIFB1dFByb3BlcnR5
U2xvdCYgc2xvdCkKIHsKICAgICBpZiAocHJvcGVydHlOYW1lID09IGV4ZWMtPnByb3BlcnR5TmFt
ZXMoKS5sZW5ndGgpIHsKICAgICAgICAgaWYgKHNsb3QuaXNTdHJpY3RNb2RlKCkpCkBAIC03Nyw3
ICs3Nyw3IEBAIHZvaWQgU3RyaW5nT2JqZWN0OjpwdXQoSlNDZWxsKiBjZWxsLCBFeGUKICAgICBK
U09iamVjdDo6cHV0KGNlbGwsIGV4ZWMsIHByb3BlcnR5TmFtZSwgdmFsdWUsIHNsb3QpOwogfQog
Ci1ib29sIFN0cmluZ09iamVjdDo6ZGVmaW5lT3duUHJvcGVydHkoSlNPYmplY3QqIG9iamVjdCwg
RXhlY1N0YXRlKiBleGVjLCBjb25zdCBJZGVudGlmaWVyJiBwcm9wZXJ0eU5hbWUsIFByb3BlcnR5
RGVzY3JpcHRvciYgZGVzY3JpcHRvciwgYm9vbCB0aHJvd0V4Y2VwdGlvbikKK2Jvb2wgU3RyaW5n
T2JqZWN0OjpkZWZpbmVPd25Qcm9wZXJ0eShKU09iamVjdCogb2JqZWN0LCBFeGVjU3RhdGUqIGV4
ZWMsIFByb3BlcnR5TmFtZSBwcm9wZXJ0eU5hbWUsIFByb3BlcnR5RGVzY3JpcHRvciYgZGVzY3Jp
cHRvciwgYm9vbCB0aHJvd0V4Y2VwdGlvbikKIHsKICAgICBTdHJpbmdPYmplY3QqIHRoaXNPYmpl
Y3QgPSBqc0Nhc3Q8U3RyaW5nT2JqZWN0Kj4ob2JqZWN0KTsKIApAQCAtMTE5LDE1ICsxMTksMTYg
QEAgYm9vbCBTdHJpbmdPYmplY3Q6OmRlZmluZU93blByb3BlcnR5KEpTTwogICAgIHJldHVybiBC
YXNlOjpkZWZpbmVPd25Qcm9wZXJ0eShvYmplY3QsIGV4ZWMsIHByb3BlcnR5TmFtZSwgZGVzY3Jp
cHRvciwgdGhyb3dFeGNlcHRpb24pOwogfQogCi1ib29sIFN0cmluZ09iamVjdDo6ZGVsZXRlUHJv
cGVydHkoSlNDZWxsKiBjZWxsLCBFeGVjU3RhdGUqIGV4ZWMsIGNvbnN0IElkZW50aWZpZXImIHBy
b3BlcnR5TmFtZSkKK2Jvb2wgU3RyaW5nT2JqZWN0OjpkZWxldGVQcm9wZXJ0eShKU0NlbGwqIGNl
bGwsIEV4ZWNTdGF0ZSogZXhlYywgUHJvcGVydHlOYW1lIHByb3BlcnR5TmFtZSkKIHsKICAgICBT
dHJpbmdPYmplY3QqIHRoaXNPYmplY3QgPSBqc0Nhc3Q8U3RyaW5nT2JqZWN0Kj4oY2VsbCk7CiAg
ICAgaWYgKHByb3BlcnR5TmFtZSA9PSBleGVjLT5wcm9wZXJ0eU5hbWVzKCkubGVuZ3RoKQogICAg
ICAgICByZXR1cm4gZmFsc2U7Ci0gICAgYm9vbCBpc1N0cmljdFVJbnQzMjsKLSAgICB1bnNpZ25l
ZCBpID0gcHJvcGVydHlOYW1lLnRvVUludDMyKGlzU3RyaWN0VUludDMyKTsKLSAgICBpZiAoaXNT
dHJpY3RVSW50MzIgJiYgdGhpc09iamVjdC0+aW50ZXJuYWxWYWx1ZSgpLT5jYW5HZXRJbmRleChp
KSkKKyAgICB1bnNpZ25lZCBpID0gcHJvcGVydHlOYW1lLmFzSW5kZXgoKTsKKyAgICBpZiAodGhp
c09iamVjdC0+aW50ZXJuYWxWYWx1ZSgpLT5jYW5HZXRJbmRleChpKSkgeworICAgICAgICBBU1NF
UlQoaSAhPSBQcm9wZXJ0eU5hbWU6Ok5vdEFuSW5kZXgpOyAvLyBObyBuZWVkIGZvciBhbiBleHBs
aWNpdCBjaGVjaywgdGhlIGFib3ZlIHRlc3Qgd291bGQgYWx3YXlzIGZhaWwhCiAgICAgICAgIHJl
dHVybiBmYWxzZTsKKyAgICB9CiAgICAgcmV0dXJuIEpTT2JqZWN0OjpkZWxldGVQcm9wZXJ0eSh0
aGlzT2JqZWN0LCBleGVjLCBwcm9wZXJ0eU5hbWUpOwogfQogCkluZGV4OiBTb3VyY2UvSmF2YVNj
cmlwdENvcmUvcnVudGltZS9TdHJpbmdPYmplY3QuaAo9PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvSmF2
YVNjcmlwdENvcmUvcnVudGltZS9TdHJpbmdPYmplY3QuaAkocmV2aXNpb24gMTE2NjY3KQorKysg
U291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvU3RyaW5nT2JqZWN0LmgJKHdvcmtpbmcgY29w
eSkKQEAgLTQ1LDE1ICs0NSwxNSBAQCBuYW1lc3BhY2UgSlNDIHsKICAgICAgICAgfQogICAgICAg
ICBzdGF0aWMgU3RyaW5nT2JqZWN0KiBjcmVhdGUoRXhlY1N0YXRlKiwgSlNHbG9iYWxPYmplY3Qq
LCBKU1N0cmluZyopOwogCi0gICAgICAgIHN0YXRpYyBib29sIGdldE93blByb3BlcnR5U2xvdChK
U0NlbGwqLCBFeGVjU3RhdGUqLCBjb25zdCBJZGVudGlmaWVyJiBwcm9wZXJ0eU5hbWUsIFByb3Bl
cnR5U2xvdCYpOworICAgICAgICBzdGF0aWMgYm9vbCBnZXRPd25Qcm9wZXJ0eVNsb3QoSlNDZWxs
KiwgRXhlY1N0YXRlKiwgUHJvcGVydHlOYW1lIHByb3BlcnR5TmFtZSwgUHJvcGVydHlTbG90Jik7
CiAgICAgICAgIHN0YXRpYyBib29sIGdldE93blByb3BlcnR5U2xvdEJ5SW5kZXgoSlNDZWxsKiwg
RXhlY1N0YXRlKiwgdW5zaWduZWQgcHJvcGVydHlOYW1lLCBQcm9wZXJ0eVNsb3QmKTsKLSAgICAg
ICAgc3RhdGljIGJvb2wgZ2V0T3duUHJvcGVydHlEZXNjcmlwdG9yKEpTT2JqZWN0KiwgRXhlY1N0
YXRlKiwgY29uc3QgSWRlbnRpZmllciYsIFByb3BlcnR5RGVzY3JpcHRvciYpOworICAgICAgICBz
dGF0aWMgYm9vbCBnZXRPd25Qcm9wZXJ0eURlc2NyaXB0b3IoSlNPYmplY3QqLCBFeGVjU3RhdGUq
LCBQcm9wZXJ0eU5hbWUsIFByb3BlcnR5RGVzY3JpcHRvciYpOwogCi0gICAgICAgIHN0YXRpYyB2
b2lkIHB1dChKU0NlbGwqLCBFeGVjU3RhdGUqLCBjb25zdCBJZGVudGlmaWVyJiBwcm9wZXJ0eU5h
bWUsIEpTVmFsdWUsIFB1dFByb3BlcnR5U2xvdCYpOworICAgICAgICBzdGF0aWMgdm9pZCBwdXQo
SlNDZWxsKiwgRXhlY1N0YXRlKiwgUHJvcGVydHlOYW1lIHByb3BlcnR5TmFtZSwgSlNWYWx1ZSwg
UHV0UHJvcGVydHlTbG90Jik7CiAKLSAgICAgICAgc3RhdGljIGJvb2wgZGVsZXRlUHJvcGVydHko
SlNDZWxsKiwgRXhlY1N0YXRlKiwgY29uc3QgSWRlbnRpZmllciYgcHJvcGVydHlOYW1lKTsKKyAg
ICAgICAgc3RhdGljIGJvb2wgZGVsZXRlUHJvcGVydHkoSlNDZWxsKiwgRXhlY1N0YXRlKiwgUHJv
cGVydHlOYW1lIHByb3BlcnR5TmFtZSk7CiAgICAgICAgIHN0YXRpYyB2b2lkIGdldE93blByb3Bl
cnR5TmFtZXMoSlNPYmplY3QqLCBFeGVjU3RhdGUqLCBQcm9wZXJ0eU5hbWVBcnJheSYsIEVudW1l
cmF0aW9uTW9kZSk7Ci0gICAgICAgIHN0YXRpYyBib29sIGRlZmluZU93blByb3BlcnR5KEpTT2Jq
ZWN0KiwgRXhlY1N0YXRlKiwgY29uc3QgSWRlbnRpZmllciYgcHJvcGVydHlOYW1lLCBQcm9wZXJ0
eURlc2NyaXB0b3ImLCBib29sIHNob3VsZFRocm93KTsKKyAgICAgICAgc3RhdGljIGJvb2wgZGVm
aW5lT3duUHJvcGVydHkoSlNPYmplY3QqLCBFeGVjU3RhdGUqLCBQcm9wZXJ0eU5hbWUgcHJvcGVy
dHlOYW1lLCBQcm9wZXJ0eURlc2NyaXB0b3ImLCBib29sIHNob3VsZFRocm93KTsKIAogICAgICAg
ICBzdGF0aWMgY29uc3QgSlNfRVhQT1JUREFUQSBDbGFzc0luZm8gc19pbmZvOwogCkluZGV4OiBT
b3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9TdHJpbmdQcm90b3R5cGUuY3BwCj09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT0KLS0tIFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL1N0cmluZ1Byb3RvdHlwZS5jcHAJ
KHJldmlzaW9uIDExNjY2NykKKysrIFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL1N0cmlu
Z1Byb3RvdHlwZS5jcHAJKHdvcmtpbmcgY29weSkKQEAgLTE0NywxMiArMTQ3LDEyIEBAIHZvaWQg
U3RyaW5nUHJvdG90eXBlOjpmaW5pc2hDcmVhdGlvbihFeGUKICAgICBwdXREaXJlY3RXaXRob3V0
VHJhbnNpdGlvbihleGVjLT5nbG9iYWxEYXRhKCksIGV4ZWMtPnByb3BlcnR5TmFtZXMoKS5sZW5n
dGgsIGpzTnVtYmVyKDApLCBEb250RGVsZXRlIHwgUmVhZE9ubHkgfCBEb250RW51bSk7CiB9CiAK
LWJvb2wgU3RyaW5nUHJvdG90eXBlOjpnZXRPd25Qcm9wZXJ0eVNsb3QoSlNDZWxsKiBjZWxsLCBF
eGVjU3RhdGUqIGV4ZWMsIGNvbnN0IElkZW50aWZpZXImIHByb3BlcnR5TmFtZSwgUHJvcGVydHlT
bG90ICZzbG90KQorYm9vbCBTdHJpbmdQcm90b3R5cGU6OmdldE93blByb3BlcnR5U2xvdChKU0Nl
bGwqIGNlbGwsIEV4ZWNTdGF0ZSogZXhlYywgUHJvcGVydHlOYW1lIHByb3BlcnR5TmFtZSwgUHJv
cGVydHlTbG90ICZzbG90KQogewogICAgIHJldHVybiBnZXRTdGF0aWNGdW5jdGlvblNsb3Q8U3Ry
aW5nT2JqZWN0PihleGVjLCBFeGVjU3RhdGU6OnN0cmluZ1RhYmxlKGV4ZWMpLCBqc0Nhc3Q8U3Ry
aW5nUHJvdG90eXBlKj4oY2VsbCksIHByb3BlcnR5TmFtZSwgc2xvdCk7CiB9CiAKLWJvb2wgU3Ry
aW5nUHJvdG90eXBlOjpnZXRPd25Qcm9wZXJ0eURlc2NyaXB0b3IoSlNPYmplY3QqIG9iamVjdCwg
RXhlY1N0YXRlKiBleGVjLCBjb25zdCBJZGVudGlmaWVyJiBwcm9wZXJ0eU5hbWUsIFByb3BlcnR5
RGVzY3JpcHRvciYgZGVzY3JpcHRvcikKK2Jvb2wgU3RyaW5nUHJvdG90eXBlOjpnZXRPd25Qcm9w
ZXJ0eURlc2NyaXB0b3IoSlNPYmplY3QqIG9iamVjdCwgRXhlY1N0YXRlKiBleGVjLCBQcm9wZXJ0
eU5hbWUgcHJvcGVydHlOYW1lLCBQcm9wZXJ0eURlc2NyaXB0b3ImIGRlc2NyaXB0b3IpCiB7CiAg
ICAgcmV0dXJuIGdldFN0YXRpY0Z1bmN0aW9uRGVzY3JpcHRvcjxTdHJpbmdPYmplY3Q+KGV4ZWMs
IEV4ZWNTdGF0ZTo6c3RyaW5nVGFibGUoZXhlYyksIGpzQ2FzdDxTdHJpbmdQcm90b3R5cGUqPihv
YmplY3QpLCBwcm9wZXJ0eU5hbWUsIGRlc2NyaXB0b3IpOwogfQpJbmRleDogU291cmNlL0phdmFT
Y3JpcHRDb3JlL3J1bnRpbWUvU3RyaW5nUHJvdG90eXBlLmgKPT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNl
L0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvU3RyaW5nUHJvdG90eXBlLmgJKHJldmlzaW9uIDExNjY2
NykKKysrIFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL1N0cmluZ1Byb3RvdHlwZS5oCSh3
b3JraW5nIGNvcHkpCkBAIC00Miw4ICs0Miw4IEBAIG5hbWVzcGFjZSBKU0MgewogICAgICAgICAg
ICAgcmV0dXJuIHByb3RvdHlwZTsKICAgICAgICAgfQogCi0gICAgICAgIHN0YXRpYyBib29sIGdl
dE93blByb3BlcnR5U2xvdChKU0NlbGwqLCBFeGVjU3RhdGUqLCBjb25zdCBJZGVudGlmaWVyJiBw
cm9wZXJ0eU5hbWUsIFByb3BlcnR5U2xvdCYpOwotICAgICAgICBzdGF0aWMgYm9vbCBnZXRPd25Q
cm9wZXJ0eURlc2NyaXB0b3IoSlNPYmplY3QqLCBFeGVjU3RhdGUqLCBjb25zdCBJZGVudGlmaWVy
JiwgUHJvcGVydHlEZXNjcmlwdG9yJik7CisgICAgICAgIHN0YXRpYyBib29sIGdldE93blByb3Bl
cnR5U2xvdChKU0NlbGwqLCBFeGVjU3RhdGUqLCBQcm9wZXJ0eU5hbWUgcHJvcGVydHlOYW1lLCBQ
cm9wZXJ0eVNsb3QmKTsKKyAgICAgICAgc3RhdGljIGJvb2wgZ2V0T3duUHJvcGVydHlEZXNjcmlw
dG9yKEpTT2JqZWN0KiwgRXhlY1N0YXRlKiwgUHJvcGVydHlOYW1lLCBQcm9wZXJ0eURlc2NyaXB0
b3ImKTsKIAogICAgICAgICBzdGF0aWMgU3RydWN0dXJlKiBjcmVhdGVTdHJ1Y3R1cmUoSlNHbG9i
YWxEYXRhJiBnbG9iYWxEYXRhLCBKU0dsb2JhbE9iamVjdCogZ2xvYmFsT2JqZWN0LCBKU1ZhbHVl
IHByb3RvdHlwZSkKICAgICAgICAgewpJbmRleDogU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRp
bWUvU3RydWN0dXJlLmNwcAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVu
dGltZS9TdHJ1Y3R1cmUuY3BwCShyZXZpc2lvbiAxMTY2NjcpCisrKyBTb3VyY2UvSmF2YVNjcmlw
dENvcmUvcnVudGltZS9TdHJ1Y3R1cmUuY3BwCSh3b3JraW5nIGNvcHkpCkBAIC0yNiw3ICsyNiw2
IEBACiAjaW5jbHVkZSAiY29uZmlnLmgiCiAjaW5jbHVkZSAiU3RydWN0dXJlLmgiCiAKLSNpbmNs
dWRlICJJZGVudGlmaWVyLmgiCiAjaW5jbHVkZSAiSlNPYmplY3QuaCIKICNpbmNsdWRlICJKU1By
b3BlcnR5TmFtZUl0ZXJhdG9yLmgiCiAjaW5jbHVkZSAiTG9va3VwLmgiCkBAIC0yNjcsNyArMjY2
LDcgQEAgdm9pZCBTdHJ1Y3R1cmU6Omdyb3dQcm9wZXJ0eVN0b3JhZ2VDYXBhYwogICAgICAgICBt
X3Byb3BlcnR5U3RvcmFnZUNhcGFjaXR5ICo9IDI7CiB9CiAKLXZvaWQgU3RydWN0dXJlOjpkZXNw
ZWNpZnlEaWN0aW9uYXJ5RnVuY3Rpb24oSlNHbG9iYWxEYXRhJiBnbG9iYWxEYXRhLCBjb25zdCBJ
ZGVudGlmaWVyJiBwcm9wZXJ0eU5hbWUpCit2b2lkIFN0cnVjdHVyZTo6ZGVzcGVjaWZ5RGljdGlv
bmFyeUZ1bmN0aW9uKEpTR2xvYmFsRGF0YSYgZ2xvYmFsRGF0YSwgY29uc3QgUHJvcGVydHlOYW1l
JiBwcm9wZXJ0eU5hbWUpCiB7CiAgICAgU3RyaW5nSW1wbCogcmVwID0gcHJvcGVydHlOYW1lLmlt
cGwoKTsKIApAQCAtMjgxLDcgKzI4MCw3IEBAIHZvaWQgU3RydWN0dXJlOjpkZXNwZWNpZnlEaWN0
aW9uYXJ5RnVuY3QKICAgICBlbnRyeS0+c3BlY2lmaWNWYWx1ZS5jbGVhcigpOwogfQogCi1TdHJ1
Y3R1cmUqIFN0cnVjdHVyZTo6YWRkUHJvcGVydHlUcmFuc2l0aW9uVG9FeGlzdGluZ1N0cnVjdHVy
ZShTdHJ1Y3R1cmUqIHN0cnVjdHVyZSwgY29uc3QgSWRlbnRpZmllciYgcHJvcGVydHlOYW1lLCB1
bnNpZ25lZCBhdHRyaWJ1dGVzLCBKU0NlbGwqIHNwZWNpZmljVmFsdWUsIHNpemVfdCYgb2Zmc2V0
KQorU3RydWN0dXJlKiBTdHJ1Y3R1cmU6OmFkZFByb3BlcnR5VHJhbnNpdGlvblRvRXhpc3RpbmdT
dHJ1Y3R1cmUoU3RydWN0dXJlKiBzdHJ1Y3R1cmUsIGNvbnN0IFByb3BlcnR5TmFtZSYgcHJvcGVy
dHlOYW1lLCB1bnNpZ25lZCBhdHRyaWJ1dGVzLCBKU0NlbGwqIHNwZWNpZmljVmFsdWUsIHNpemVf
dCYgb2Zmc2V0KQogewogICAgIEFTU0VSVCghc3RydWN0dXJlLT5pc0RpY3Rpb25hcnkoKSk7CiAg
ICAgQVNTRVJUKHN0cnVjdHVyZS0+aXNPYmplY3QoKSk7CkBAIC0yOTgsNyArMjk3LDcgQEAgU3Ry
dWN0dXJlKiBTdHJ1Y3R1cmU6OmFkZFByb3BlcnR5VHJhbnNpdAogICAgIHJldHVybiAwOwogfQog
Ci1TdHJ1Y3R1cmUqIFN0cnVjdHVyZTo6YWRkUHJvcGVydHlUcmFuc2l0aW9uKEpTR2xvYmFsRGF0
YSYgZ2xvYmFsRGF0YSwgU3RydWN0dXJlKiBzdHJ1Y3R1cmUsIGNvbnN0IElkZW50aWZpZXImIHBy
b3BlcnR5TmFtZSwgdW5zaWduZWQgYXR0cmlidXRlcywgSlNDZWxsKiBzcGVjaWZpY1ZhbHVlLCBz
aXplX3QmIG9mZnNldCkKK1N0cnVjdHVyZSogU3RydWN0dXJlOjphZGRQcm9wZXJ0eVRyYW5zaXRp
b24oSlNHbG9iYWxEYXRhJiBnbG9iYWxEYXRhLCBTdHJ1Y3R1cmUqIHN0cnVjdHVyZSwgY29uc3Qg
UHJvcGVydHlOYW1lJiBwcm9wZXJ0eU5hbWUsIHVuc2lnbmVkIGF0dHJpYnV0ZXMsIEpTQ2VsbCog
c3BlY2lmaWNWYWx1ZSwgc2l6ZV90JiBvZmZzZXQpCiB7CiAgICAgLy8gSWYgd2UgaGF2ZSBhIHNw
ZWNpZmljIGZ1bmN0aW9uLCB3ZSBtYXkgaGF2ZSBnb3QgdG8gdGhpcyBwb2ludCBpZiB0aGVyZSBp
cwogICAgIC8vIGFscmVhZHkgYSB0cmFuc2l0aW9uIHdpdGggdGhlIGNvcnJlY3QgcHJvcGVydHkg
bmFtZSBhbmQgYXR0cmlidXRlcywgYnV0CkBAIC0zNTUsNyArMzU0LDcgQEAgU3RydWN0dXJlKiBT
dHJ1Y3R1cmU6OmFkZFByb3BlcnR5VHJhbnNpdAogICAgIHJldHVybiB0cmFuc2l0aW9uOwogfQog
Ci1TdHJ1Y3R1cmUqIFN0cnVjdHVyZTo6cmVtb3ZlUHJvcGVydHlUcmFuc2l0aW9uKEpTR2xvYmFs
RGF0YSYgZ2xvYmFsRGF0YSwgU3RydWN0dXJlKiBzdHJ1Y3R1cmUsIGNvbnN0IElkZW50aWZpZXIm
IHByb3BlcnR5TmFtZSwgc2l6ZV90JiBvZmZzZXQpCitTdHJ1Y3R1cmUqIFN0cnVjdHVyZTo6cmVt
b3ZlUHJvcGVydHlUcmFuc2l0aW9uKEpTR2xvYmFsRGF0YSYgZ2xvYmFsRGF0YSwgU3RydWN0dXJl
KiBzdHJ1Y3R1cmUsIGNvbnN0IFByb3BlcnR5TmFtZSYgcHJvcGVydHlOYW1lLCBzaXplX3QmIG9m
ZnNldCkKIHsKICAgICBBU1NFUlQoIXN0cnVjdHVyZS0+aXNVbmNhY2hlYWJsZURpY3Rpb25hcnko
KSk7CiAKQEAgLTM4MSw3ICszODAsNyBAQCBTdHJ1Y3R1cmUqIFN0cnVjdHVyZTo6Y2hhbmdlUHJv
dG90eXBlVHJhCiAgICAgcmV0dXJuIHRyYW5zaXRpb247CiB9CiAKLVN0cnVjdHVyZSogU3RydWN0
dXJlOjpkZXNwZWNpZnlGdW5jdGlvblRyYW5zaXRpb24oSlNHbG9iYWxEYXRhJiBnbG9iYWxEYXRh
LCBTdHJ1Y3R1cmUqIHN0cnVjdHVyZSwgY29uc3QgSWRlbnRpZmllciYgcmVwbGFjZUZ1bmN0aW9u
KQorU3RydWN0dXJlKiBTdHJ1Y3R1cmU6OmRlc3BlY2lmeUZ1bmN0aW9uVHJhbnNpdGlvbihKU0ds
b2JhbERhdGEmIGdsb2JhbERhdGEsIFN0cnVjdHVyZSogc3RydWN0dXJlLCBjb25zdCBQcm9wZXJ0
eU5hbWUmIHJlcGxhY2VGdW5jdGlvbikKIHsKICAgICBBU1NFUlQoc3RydWN0dXJlLT5tX3NwZWNp
ZmljRnVuY3Rpb25UaHJhc2hDb3VudCA8IG1heFNwZWNpZmljRnVuY3Rpb25UaHJhc2hDb3VudCk7
CiAgICAgU3RydWN0dXJlKiB0cmFuc2l0aW9uID0gY3JlYXRlKGdsb2JhbERhdGEsIHN0cnVjdHVy
ZSk7CkBAIC00MDQsNyArNDAzLDcgQEAgU3RydWN0dXJlKiBTdHJ1Y3R1cmU6OmRlc3BlY2lmeUZ1
bmN0aW9uVAogICAgIHJldHVybiB0cmFuc2l0aW9uOwogfQogCi1TdHJ1Y3R1cmUqIFN0cnVjdHVy
ZTo6YXR0cmlidXRlQ2hhbmdlVHJhbnNpdGlvbihKU0dsb2JhbERhdGEmIGdsb2JhbERhdGEsIFN0
cnVjdHVyZSogc3RydWN0dXJlLCBjb25zdCBJZGVudGlmaWVyJiBwcm9wZXJ0eU5hbWUsIHVuc2ln
bmVkIGF0dHJpYnV0ZXMpCitTdHJ1Y3R1cmUqIFN0cnVjdHVyZTo6YXR0cmlidXRlQ2hhbmdlVHJh
bnNpdGlvbihKU0dsb2JhbERhdGEmIGdsb2JhbERhdGEsIFN0cnVjdHVyZSogc3RydWN0dXJlLCBj
b25zdCBQcm9wZXJ0eU5hbWUmIHByb3BlcnR5TmFtZSwgdW5zaWduZWQgYXR0cmlidXRlcykKIHsK
ICAgICBpZiAoIXN0cnVjdHVyZS0+aXNVbmNhY2hlYWJsZURpY3Rpb25hcnkoKSkgewogICAgICAg
ICBTdHJ1Y3R1cmUqIHRyYW5zaXRpb24gPSBjcmVhdGUoZ2xvYmFsRGF0YSwgc3RydWN0dXJlKTsK
QEAgLTU2Miw3ICs1NjEsNyBAQCBTdHJ1Y3R1cmUqIFN0cnVjdHVyZTo6ZmxhdHRlbkRpY3Rpb25h
cnlTCiAgICAgcmV0dXJuIHRoaXM7CiB9CiAKLXNpemVfdCBTdHJ1Y3R1cmU6OmFkZFByb3BlcnR5
V2l0aG91dFRyYW5zaXRpb24oSlNHbG9iYWxEYXRhJiBnbG9iYWxEYXRhLCBjb25zdCBJZGVudGlm
aWVyJiBwcm9wZXJ0eU5hbWUsIHVuc2lnbmVkIGF0dHJpYnV0ZXMsIEpTQ2VsbCogc3BlY2lmaWNW
YWx1ZSkKK3NpemVfdCBTdHJ1Y3R1cmU6OmFkZFByb3BlcnR5V2l0aG91dFRyYW5zaXRpb24oSlNH
bG9iYWxEYXRhJiBnbG9iYWxEYXRhLCBjb25zdCBQcm9wZXJ0eU5hbWUmIHByb3BlcnR5TmFtZSwg
dW5zaWduZWQgYXR0cmlidXRlcywgSlNDZWxsKiBzcGVjaWZpY1ZhbHVlKQogewogICAgIEFTU0VS
VCghbV9lbnVtZXJhdGlvbkNhY2hlKTsKIApAQCAtNTc5LDcgKzU3OCw3IEBAIHNpemVfdCBTdHJ1
Y3R1cmU6OmFkZFByb3BlcnR5V2l0aG91dFRyYW4KICAgICByZXR1cm4gb2Zmc2V0OwogfQogCi1z
aXplX3QgU3RydWN0dXJlOjpyZW1vdmVQcm9wZXJ0eVdpdGhvdXRUcmFuc2l0aW9uKEpTR2xvYmFs
RGF0YSYgZ2xvYmFsRGF0YSwgY29uc3QgSWRlbnRpZmllciYgcHJvcGVydHlOYW1lKQorc2l6ZV90
IFN0cnVjdHVyZTo6cmVtb3ZlUHJvcGVydHlXaXRob3V0VHJhbnNpdGlvbihKU0dsb2JhbERhdGEm
IGdsb2JhbERhdGEsIGNvbnN0IFByb3BlcnR5TmFtZSYgcHJvcGVydHlOYW1lKQogewogICAgIEFT
U0VSVChpc1VuY2FjaGVhYmxlRGljdGlvbmFyeSgpKTsKICAgICBBU1NFUlQoIW1fZW51bWVyYXRp
b25DYWNoZSk7CkBAIC02MzYsMTMgKzYzNSwxNSBAQCBQYXNzT3duUHRyPFByb3BlcnR5VGFibGU+
IFN0cnVjdHVyZTo6Y29wCiAgICAgcmV0dXJuIGFkb3B0UHRyKG1fcHJvcGVydHlUYWJsZSA/IG5l
dyBQcm9wZXJ0eVRhYmxlKGdsb2JhbERhdGEsIG93bmVyLCAqbV9wcm9wZXJ0eVRhYmxlKSA6IG5l
dyBQcm9wZXJ0eVRhYmxlKG1fb2Zmc2V0ID09IG5vT2Zmc2V0ID8gMCA6IG1fb2Zmc2V0KSk7CiB9
CiAKLXNpemVfdCBTdHJ1Y3R1cmU6OmdldChKU0dsb2JhbERhdGEmIGdsb2JhbERhdGEsIFN0cmlu
Z0ltcGwqIHByb3BlcnR5TmFtZSwgdW5zaWduZWQmIGF0dHJpYnV0ZXMsIEpTQ2VsbComIHNwZWNp
ZmljVmFsdWUpCitzaXplX3QgU3RydWN0dXJlOjpnZXQoSlNHbG9iYWxEYXRhJiBnbG9iYWxEYXRh
LCBjb25zdCBQcm9wZXJ0eU5hbWUmIHByb3BlcnR5TmFtZSwgdW5zaWduZWQmIGF0dHJpYnV0ZXMs
IEpTQ2VsbComIHNwZWNpZmljVmFsdWUpCiB7CisgICAgQVNTRVJUKHN0cnVjdHVyZSgpLT5jbGFz
c0luZm8oKSA9PSAmc19pbmZvKTsKKwogICAgIG1hdGVyaWFsaXplUHJvcGVydHlNYXBJZk5lY2Vz
c2FyeShnbG9iYWxEYXRhKTsKICAgICBpZiAoIW1fcHJvcGVydHlUYWJsZSkKICAgICAgICAgcmV0
dXJuIFdURjo6bm90Rm91bmQ7CiAKLSAgICBQcm9wZXJ0eU1hcEVudHJ5KiBlbnRyeSA9IG1fcHJv
cGVydHlUYWJsZS0+ZmluZChwcm9wZXJ0eU5hbWUpLmZpcnN0OworICAgIFByb3BlcnR5TWFwRW50
cnkqIGVudHJ5ID0gbV9wcm9wZXJ0eVRhYmxlLT5maW5kKHByb3BlcnR5TmFtZS5pbXBsKCkpLmZp
cnN0OwogICAgIGlmICghZW50cnkpCiAgICAgICAgIHJldHVybiBXVEY6Om5vdEZvdW5kOwogCkBA
IC02NTEsMTMgKzY1MiwxMiBAQCBzaXplX3QgU3RydWN0dXJlOjpnZXQoSlNHbG9iYWxEYXRhJiBn
bG9iCiAgICAgcmV0dXJuIGVudHJ5LT5vZmZzZXQ7CiB9CiAKLWJvb2wgU3RydWN0dXJlOjpkZXNw
ZWNpZnlGdW5jdGlvbihKU0dsb2JhbERhdGEmIGdsb2JhbERhdGEsIGNvbnN0IElkZW50aWZpZXIm
IHByb3BlcnR5TmFtZSkKK2Jvb2wgU3RydWN0dXJlOjpkZXNwZWNpZnlGdW5jdGlvbihKU0dsb2Jh
bERhdGEmIGdsb2JhbERhdGEsIGNvbnN0IFByb3BlcnR5TmFtZSYgcHJvcGVydHlOYW1lKQogewog
ICAgIG1hdGVyaWFsaXplUHJvcGVydHlNYXBJZk5lY2Vzc2FyeShnbG9iYWxEYXRhKTsKICAgICBp
ZiAoIW1fcHJvcGVydHlUYWJsZSkKICAgICAgICAgcmV0dXJuIGZhbHNlOwogCi0gICAgQVNTRVJU
KCFwcm9wZXJ0eU5hbWUuaXNOdWxsKCkpOwogICAgIFByb3BlcnR5TWFwRW50cnkqIGVudHJ5ID0g
bV9wcm9wZXJ0eVRhYmxlLT5maW5kKHByb3BlcnR5TmFtZS5pbXBsKCkpLmZpcnN0OwogICAgIGlm
ICghZW50cnkpCiAgICAgICAgIHJldHVybiBmYWxzZTsKQEAgLTY3OCw5ICs2NzgsOCBAQCB2b2lk
IFN0cnVjdHVyZTo6ZGVzcGVjaWZ5QWxsRnVuY3Rpb25zKEpTCiAgICAgICAgIGl0ZXItPnNwZWNp
ZmljVmFsdWUuY2xlYXIoKTsKIH0KIAotc2l6ZV90IFN0cnVjdHVyZTo6cHV0U3BlY2lmaWNWYWx1
ZShKU0dsb2JhbERhdGEmIGdsb2JhbERhdGEsIGNvbnN0IElkZW50aWZpZXImIHByb3BlcnR5TmFt
ZSwgdW5zaWduZWQgYXR0cmlidXRlcywgSlNDZWxsKiBzcGVjaWZpY1ZhbHVlKQorc2l6ZV90IFN0
cnVjdHVyZTo6cHV0U3BlY2lmaWNWYWx1ZShKU0dsb2JhbERhdGEmIGdsb2JhbERhdGEsIGNvbnN0
IFByb3BlcnR5TmFtZSYgcHJvcGVydHlOYW1lLCB1bnNpZ25lZCBhdHRyaWJ1dGVzLCBKU0NlbGwq
IHNwZWNpZmljVmFsdWUpCiB7Ci0gICAgQVNTRVJUKCFwcm9wZXJ0eU5hbWUuaXNOdWxsKCkpOwog
ICAgIEFTU0VSVChnZXQoZ2xvYmFsRGF0YSwgcHJvcGVydHlOYW1lKSA9PSBub3RGb3VuZCk7CiAK
ICAgICBjaGVja0NvbnNpc3RlbmN5KCk7CkBAIC03MDUsMTAgKzcwNCw4IEBAIHNpemVfdCBTdHJ1
Y3R1cmU6OnB1dFNwZWNpZmljVmFsdWUoSlNHbG8KICAgICByZXR1cm4gbmV3T2Zmc2V0OwogfQog
Ci1zaXplX3QgU3RydWN0dXJlOjpyZW1vdmUoY29uc3QgSWRlbnRpZmllciYgcHJvcGVydHlOYW1l
KQorc2l6ZV90IFN0cnVjdHVyZTo6cmVtb3ZlKGNvbnN0IFByb3BlcnR5TmFtZSYgcHJvcGVydHlO
YW1lKQogewotICAgIEFTU0VSVCghcHJvcGVydHlOYW1lLmlzTnVsbCgpKTsKLQogICAgIGNoZWNr
Q29uc2lzdGVuY3koKTsKIAogICAgIFN0cmluZ0ltcGwqIHJlcCA9IHByb3BlcnR5TmFtZS5pbXBs
KCk7CkluZGV4OiBTb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9TdHJ1Y3R1cmUuaAo9PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09Ci0tLSBTb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9TdHJ1Y3R1cmUuaAkocmV2
aXNpb24gMTE2NjY3KQorKysgU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvU3RydWN0dXJl
LmgJKHdvcmtpbmcgY29weSkKQEAgLTI3LDExICsyNywxMSBAQAogI2RlZmluZSBTdHJ1Y3R1cmVf
aAogCiAjaW5jbHVkZSAiQ2xhc3NJbmZvLmgiCi0jaW5jbHVkZSAiSWRlbnRpZmllci5oIgogI2lu
Y2x1ZGUgIkpTQ2VsbC5oIgogI2luY2x1ZGUgIkpTVHlwZS5oIgogI2luY2x1ZGUgIkpTVmFsdWUu
aCIKICNpbmNsdWRlICJQcm9wZXJ0eU1hcEhhc2hUYWJsZS5oIgorI2luY2x1ZGUgIlByb3BlcnR5
TmFtZS5oIgogI2luY2x1ZGUgIlByb3BlcnR5TmFtZUFycmF5LmgiCiAjaW5jbHVkZSAiUHJvdGVj
dC5oIgogI2luY2x1ZGUgIlN0cnVjdHVyZVRyYW5zaXRpb25UYWJsZS5oIgpAQCAtODYsMTIgKzg2
LDEyIEBAIG5hbWVzcGFjZSBKU0MgewogICAgIHB1YmxpYzoKICAgICAgICAgc3RhdGljIHZvaWQg
ZHVtcFN0YXRpc3RpY3MoKTsKIAotICAgICAgICBKU19FWFBPUlRfUFJJVkFURSBzdGF0aWMgU3Ry
dWN0dXJlKiBhZGRQcm9wZXJ0eVRyYW5zaXRpb24oSlNHbG9iYWxEYXRhJiwgU3RydWN0dXJlKiwg
Y29uc3QgSWRlbnRpZmllciYgcHJvcGVydHlOYW1lLCB1bnNpZ25lZCBhdHRyaWJ1dGVzLCBKU0Nl
bGwqIHNwZWNpZmljVmFsdWUsIHNpemVfdCYgb2Zmc2V0KTsKLSAgICAgICAgSlNfRVhQT1JUX1BS
SVZBVEUgc3RhdGljIFN0cnVjdHVyZSogYWRkUHJvcGVydHlUcmFuc2l0aW9uVG9FeGlzdGluZ1N0
cnVjdHVyZShTdHJ1Y3R1cmUqLCBjb25zdCBJZGVudGlmaWVyJiBwcm9wZXJ0eU5hbWUsIHVuc2ln
bmVkIGF0dHJpYnV0ZXMsIEpTQ2VsbCogc3BlY2lmaWNWYWx1ZSwgc2l6ZV90JiBvZmZzZXQpOwot
ICAgICAgICBzdGF0aWMgU3RydWN0dXJlKiByZW1vdmVQcm9wZXJ0eVRyYW5zaXRpb24oSlNHbG9i
YWxEYXRhJiwgU3RydWN0dXJlKiwgY29uc3QgSWRlbnRpZmllciYgcHJvcGVydHlOYW1lLCBzaXpl
X3QmIG9mZnNldCk7CisgICAgICAgIEpTX0VYUE9SVF9QUklWQVRFIHN0YXRpYyBTdHJ1Y3R1cmUq
IGFkZFByb3BlcnR5VHJhbnNpdGlvbihKU0dsb2JhbERhdGEmLCBTdHJ1Y3R1cmUqLCBjb25zdCBQ
cm9wZXJ0eU5hbWUmIHByb3BlcnR5TmFtZSwgdW5zaWduZWQgYXR0cmlidXRlcywgSlNDZWxsKiBz
cGVjaWZpY1ZhbHVlLCBzaXplX3QmIG9mZnNldCk7CisgICAgICAgIEpTX0VYUE9SVF9QUklWQVRF
IHN0YXRpYyBTdHJ1Y3R1cmUqIGFkZFByb3BlcnR5VHJhbnNpdGlvblRvRXhpc3RpbmdTdHJ1Y3R1
cmUoU3RydWN0dXJlKiwgY29uc3QgUHJvcGVydHlOYW1lJiBwcm9wZXJ0eU5hbWUsIHVuc2lnbmVk
IGF0dHJpYnV0ZXMsIEpTQ2VsbCogc3BlY2lmaWNWYWx1ZSwgc2l6ZV90JiBvZmZzZXQpOworICAg
ICAgICBzdGF0aWMgU3RydWN0dXJlKiByZW1vdmVQcm9wZXJ0eVRyYW5zaXRpb24oSlNHbG9iYWxE
YXRhJiwgU3RydWN0dXJlKiwgY29uc3QgUHJvcGVydHlOYW1lJiBwcm9wZXJ0eU5hbWUsIHNpemVf
dCYgb2Zmc2V0KTsKICAgICAgICAgSlNfRVhQT1JUX1BSSVZBVEUgc3RhdGljIFN0cnVjdHVyZSog
Y2hhbmdlUHJvdG90eXBlVHJhbnNpdGlvbihKU0dsb2JhbERhdGEmLCBTdHJ1Y3R1cmUqLCBKU1Zh
bHVlIHByb3RvdHlwZSk7Ci0gICAgICAgIEpTX0VYUE9SVF9QUklWQVRFIHN0YXRpYyBTdHJ1Y3R1
cmUqIGRlc3BlY2lmeUZ1bmN0aW9uVHJhbnNpdGlvbihKU0dsb2JhbERhdGEmLCBTdHJ1Y3R1cmUq
LCBjb25zdCBJZGVudGlmaWVyJik7Ci0gICAgICAgIHN0YXRpYyBTdHJ1Y3R1cmUqIGF0dHJpYnV0
ZUNoYW5nZVRyYW5zaXRpb24oSlNHbG9iYWxEYXRhJiwgU3RydWN0dXJlKiwgY29uc3QgSWRlbnRp
ZmllciYgcHJvcGVydHlOYW1lLCB1bnNpZ25lZCBhdHRyaWJ1dGVzKTsKKyAgICAgICAgSlNfRVhQ
T1JUX1BSSVZBVEUgc3RhdGljIFN0cnVjdHVyZSogZGVzcGVjaWZ5RnVuY3Rpb25UcmFuc2l0aW9u
KEpTR2xvYmFsRGF0YSYsIFN0cnVjdHVyZSosIGNvbnN0IFByb3BlcnR5TmFtZSYpOworICAgICAg
ICBzdGF0aWMgU3RydWN0dXJlKiBhdHRyaWJ1dGVDaGFuZ2VUcmFuc2l0aW9uKEpTR2xvYmFsRGF0
YSYsIFN0cnVjdHVyZSosIGNvbnN0IFByb3BlcnR5TmFtZSYgcHJvcGVydHlOYW1lLCB1bnNpZ25l
ZCBhdHRyaWJ1dGVzKTsKICAgICAgICAgc3RhdGljIFN0cnVjdHVyZSogdG9DYWNoZWFibGVEaWN0
aW9uYXJ5VHJhbnNpdGlvbihKU0dsb2JhbERhdGEmLCBTdHJ1Y3R1cmUqKTsKICAgICAgICAgc3Rh
dGljIFN0cnVjdHVyZSogdG9VbmNhY2hlYWJsZURpY3Rpb25hcnlUcmFuc2l0aW9uKEpTR2xvYmFs
RGF0YSYsIFN0cnVjdHVyZSopOwogICAgICAgICBzdGF0aWMgU3RydWN0dXJlKiBzZWFsVHJhbnNp
dGlvbihKU0dsb2JhbERhdGEmLCBTdHJ1Y3R1cmUqKTsKQEAgLTEwOCw4ICsxMDgsOCBAQCBuYW1l
c3BhY2UgSlNDIHsKICAgICAgICAgc3RhdGljIHZvaWQgZGVzdHJveShKU0NlbGwqKTsKIAogICAg
ICAgICAvLyBUaGVzZSBzaG91bGQgYmUgdXNlZCB3aXRoIGNhdXRpb24uICAKLSAgICAgICAgSlNf
RVhQT1JUX1BSSVZBVEUgc2l6ZV90IGFkZFByb3BlcnR5V2l0aG91dFRyYW5zaXRpb24oSlNHbG9i
YWxEYXRhJiwgY29uc3QgSWRlbnRpZmllciYgcHJvcGVydHlOYW1lLCB1bnNpZ25lZCBhdHRyaWJ1
dGVzLCBKU0NlbGwqIHNwZWNpZmljVmFsdWUpOwotICAgICAgICBzaXplX3QgcmVtb3ZlUHJvcGVy
dHlXaXRob3V0VHJhbnNpdGlvbihKU0dsb2JhbERhdGEmLCBjb25zdCBJZGVudGlmaWVyJiBwcm9w
ZXJ0eU5hbWUpOworICAgICAgICBKU19FWFBPUlRfUFJJVkFURSBzaXplX3QgYWRkUHJvcGVydHlX
aXRob3V0VHJhbnNpdGlvbihKU0dsb2JhbERhdGEmLCBjb25zdCBQcm9wZXJ0eU5hbWUmIHByb3Bl
cnR5TmFtZSwgdW5zaWduZWQgYXR0cmlidXRlcywgSlNDZWxsKiBzcGVjaWZpY1ZhbHVlKTsKKyAg
ICAgICAgc2l6ZV90IHJlbW92ZVByb3BlcnR5V2l0aG91dFRyYW5zaXRpb24oSlNHbG9iYWxEYXRh
JiwgY29uc3QgUHJvcGVydHlOYW1lJiBwcm9wZXJ0eU5hbWUpOwogICAgICAgICB2b2lkIHNldFBy
b3RvdHlwZVdpdGhvdXRUcmFuc2l0aW9uKEpTR2xvYmFsRGF0YSYgZ2xvYmFsRGF0YSwgSlNWYWx1
ZSBwcm90b3R5cGUpIHsgbV9wcm90b3R5cGUuc2V0KGdsb2JhbERhdGEsIHRoaXMsIHByb3RvdHlw
ZSk7IH0KICAgICAgICAgCiAgICAgICAgIGJvb2wgaXNEaWN0aW9uYXJ5KCkgY29uc3QgeyByZXR1
cm4gbV9kaWN0aW9uYXJ5S2luZCAhPSBOb25lRGljdGlvbmFyeUtpbmQ7IH0KQEAgLTEzNiwxNSAr
MTM2LDkgQEAgbmFtZXNwYWNlIEpTQyB7CiAgICAgICAgIHVuc2lnbmVkIHByb3BlcnR5U3RvcmFn
ZVNpemUoKSBjb25zdCB7IEFTU0VSVChzdHJ1Y3R1cmUoKS0+Y2xhc3NJbmZvKCkgPT0gJnNfaW5m
byk7IHJldHVybiAobV9wcm9wZXJ0eVRhYmxlID8gbV9wcm9wZXJ0eVRhYmxlLT5wcm9wZXJ0eVN0
b3JhZ2VTaXplKCkgOiBzdGF0aWNfY2FzdDx1bnNpZ25lZD4obV9vZmZzZXQgKyAxKSk7IH0KICAg
ICAgICAgYm9vbCBpc1VzaW5nSW5saW5lU3RvcmFnZSgpIGNvbnN0OwogCi0gICAgICAgIHNpemVf
dCBnZXQoSlNHbG9iYWxEYXRhJiwgY29uc3QgSWRlbnRpZmllciYgcHJvcGVydHlOYW1lKTsKKyAg
ICAgICAgc2l6ZV90IGdldChKU0dsb2JhbERhdGEmLCBjb25zdCBQcm9wZXJ0eU5hbWUmIHByb3Bl
cnR5TmFtZSk7CiAgICAgICAgIHNpemVfdCBnZXQoSlNHbG9iYWxEYXRhJiwgY29uc3QgVVN0cmlu
ZyYgbmFtZSk7Ci0gICAgICAgIEpTX0VYUE9SVF9QUklWQVRFIHNpemVfdCBnZXQoSlNHbG9iYWxE
YXRhJiwgU3RyaW5nSW1wbCogcHJvcGVydHlOYW1lLCB1bnNpZ25lZCYgYXR0cmlidXRlcywgSlND
ZWxsKiYgc3BlY2lmaWNWYWx1ZSk7Ci0gICAgICAgIHNpemVfdCBnZXQoSlNHbG9iYWxEYXRhJiBn
bG9iYWxEYXRhLCBjb25zdCBJZGVudGlmaWVyJiBwcm9wZXJ0eU5hbWUsIHVuc2lnbmVkJiBhdHRy
aWJ1dGVzLCBKU0NlbGwqJiBzcGVjaWZpY1ZhbHVlKQotICAgICAgICB7Ci0gICAgICAgICAgICBB
U1NFUlQoIXByb3BlcnR5TmFtZS5pc051bGwoKSk7Ci0gICAgICAgICAgICBBU1NFUlQoc3RydWN0
dXJlKCktPmNsYXNzSW5mbygpID09ICZzX2luZm8pOwotICAgICAgICAgICAgcmV0dXJuIGdldChn
bG9iYWxEYXRhLCBwcm9wZXJ0eU5hbWUuaW1wbCgpLCBhdHRyaWJ1dGVzLCBzcGVjaWZpY1ZhbHVl
KTsKLSAgICAgICAgfQorICAgICAgICBKU19FWFBPUlRfUFJJVkFURSBzaXplX3QgZ2V0KEpTR2xv
YmFsRGF0YSYgZ2xvYmFsRGF0YSwgY29uc3QgUHJvcGVydHlOYW1lJiBwcm9wZXJ0eU5hbWUsIHVu
c2lnbmVkJiBhdHRyaWJ1dGVzLCBKU0NlbGwqJiBzcGVjaWZpY1ZhbHVlKTsKIAogICAgICAgICBi
b29sIGhhc0dldHRlclNldHRlclByb3BlcnRpZXMoKSBjb25zdCB7IHJldHVybiBtX2hhc0dldHRl
clNldHRlclByb3BlcnRpZXM7IH0KICAgICAgICAgYm9vbCBoYXNSZWFkT25seU9yR2V0dGVyU2V0
dGVyUHJvcGVydGllc0V4Y2x1ZGluZ1Byb3RvKCkgY29uc3QgeyByZXR1cm4gbV9oYXNSZWFkT25s
eU9yR2V0dGVyU2V0dGVyUHJvcGVydGllc0V4Y2x1ZGluZ1Byb3RvOyB9CkBAIC0xNjMsNyArMTU3
LDcgQEAgbmFtZXNwYWNlIEpTQyB7CiAgICAgICAgIAogICAgICAgICBib29sIGlzRW1wdHkoKSBj
b25zdCB7IHJldHVybiBtX3Byb3BlcnR5VGFibGUgPyBtX3Byb3BlcnR5VGFibGUtPmlzRW1wdHko
KSA6IG1fb2Zmc2V0ID09IG5vT2Zmc2V0OyB9CiAKLSAgICAgICAgSlNfRVhQT1JUX1BSSVZBVEUg
dm9pZCBkZXNwZWNpZnlEaWN0aW9uYXJ5RnVuY3Rpb24oSlNHbG9iYWxEYXRhJiwgY29uc3QgSWRl
bnRpZmllciYgcHJvcGVydHlOYW1lKTsKKyAgICAgICAgSlNfRVhQT1JUX1BSSVZBVEUgdm9pZCBk
ZXNwZWNpZnlEaWN0aW9uYXJ5RnVuY3Rpb24oSlNHbG9iYWxEYXRhJiwgY29uc3QgUHJvcGVydHlO
YW1lJiBwcm9wZXJ0eU5hbWUpOwogICAgICAgICB2b2lkIGRpc2FibGVTcGVjaWZpY0Z1bmN0aW9u
VHJhY2tpbmcoKSB7IG1fc3BlY2lmaWNGdW5jdGlvblRocmFzaENvdW50ID0gbWF4U3BlY2lmaWNG
dW5jdGlvblRocmFzaENvdW50OyB9CiAKICAgICAgICAgdm9pZCBzZXRFbnVtZXJhdGlvbkNhY2hl
KEpTR2xvYmFsRGF0YSYsIEpTUHJvcGVydHlOYW1lSXRlcmF0b3IqIGVudW1lcmF0aW9uQ2FjaGUp
OyAvLyBEZWZpbmVkIGluIEpTUHJvcGVydHlOYW1lSXRlcmF0b3IuaC4KQEAgLTIxNiw3ICsyMTAs
NyBAQCBuYW1lc3BhY2UgSlNDIHsKIAogICAgIHByaXZhdGU6CiAgICAgICAgIGZyaWVuZCBjbGFz
cyBMTEludE9mZnNldHNFeHRyYWN0b3I7Ci0gICAgICAgIAorCiAgICAgICAgIEpTX0VYUE9SVF9Q
UklWQVRFIFN0cnVjdHVyZShKU0dsb2JhbERhdGEmLCBKU0dsb2JhbE9iamVjdCosIEpTVmFsdWUg
cHJvdG90eXBlLCBjb25zdCBUeXBlSW5mbyYsIGNvbnN0IENsYXNzSW5mbyopOwogICAgICAgICBT
dHJ1Y3R1cmUoSlNHbG9iYWxEYXRhJik7CiAgICAgICAgIFN0cnVjdHVyZShKU0dsb2JhbERhdGEm
LCBjb25zdCBTdHJ1Y3R1cmUqKTsKQEAgLTIzNiwxMyArMjMwLDEzIEBAIG5hbWVzcGFjZSBKU0Mg
ewogICAgICAgICB9IERpY3Rpb25hcnlLaW5kOwogICAgICAgICBzdGF0aWMgU3RydWN0dXJlKiB0
b0RpY3Rpb25hcnlUcmFuc2l0aW9uKEpTR2xvYmFsRGF0YSYsIFN0cnVjdHVyZSosIERpY3Rpb25h
cnlLaW5kKTsKIAotICAgICAgICBzaXplX3QgcHV0U3BlY2lmaWNWYWx1ZShKU0dsb2JhbERhdGEm
LCBjb25zdCBJZGVudGlmaWVyJiBwcm9wZXJ0eU5hbWUsIHVuc2lnbmVkIGF0dHJpYnV0ZXMsIEpT
Q2VsbCogc3BlY2lmaWNWYWx1ZSk7Ci0gICAgICAgIHNpemVfdCByZW1vdmUoY29uc3QgSWRlbnRp
ZmllciYgcHJvcGVydHlOYW1lKTsKKyAgICAgICAgc2l6ZV90IHB1dFNwZWNpZmljVmFsdWUoSlNH
bG9iYWxEYXRhJiwgY29uc3QgUHJvcGVydHlOYW1lJiBwcm9wZXJ0eU5hbWUsIHVuc2lnbmVkIGF0
dHJpYnV0ZXMsIEpTQ2VsbCogc3BlY2lmaWNWYWx1ZSk7CisgICAgICAgIHNpemVfdCByZW1vdmUo
Y29uc3QgUHJvcGVydHlOYW1lJiBwcm9wZXJ0eU5hbWUpOwogCiAgICAgICAgIHZvaWQgY3JlYXRl
UHJvcGVydHlNYXAodW5zaWduZWQga2V5Q291bnQgPSAwKTsKICAgICAgICAgdm9pZCBjaGVja0Nv
bnNpc3RlbmN5KCk7CiAKLSAgICAgICAgYm9vbCBkZXNwZWNpZnlGdW5jdGlvbihKU0dsb2JhbERh
dGEmLCBjb25zdCBJZGVudGlmaWVyJik7CisgICAgICAgIGJvb2wgZGVzcGVjaWZ5RnVuY3Rpb24o
SlNHbG9iYWxEYXRhJiwgY29uc3QgUHJvcGVydHlOYW1lJik7CiAgICAgICAgIHZvaWQgZGVzcGVj
aWZ5QWxsRnVuY3Rpb25zKEpTR2xvYmFsRGF0YSYpOwogCiAgICAgICAgIFBhc3NPd25QdHI8UHJv
cGVydHlUYWJsZT4gY29weVByb3BlcnR5VGFibGUoSlNHbG9iYWxEYXRhJiwgU3RydWN0dXJlKiBv
d25lcik7CkBAIC0zMTQsNyArMzA4LDcgQEAgbmFtZXNwYWNlIEpTQyB7CiAgICAgICAgIHVuc2ln
bmVkIG1fc3RhdGljRnVuY3Rpb25SZWlmaWVkOwogICAgIH07CiAKLSAgICBpbmxpbmUgc2l6ZV90
IFN0cnVjdHVyZTo6Z2V0KEpTR2xvYmFsRGF0YSYgZ2xvYmFsRGF0YSwgY29uc3QgSWRlbnRpZmll
ciYgcHJvcGVydHlOYW1lKQorICAgIGlubGluZSBzaXplX3QgU3RydWN0dXJlOjpnZXQoSlNHbG9i
YWxEYXRhJiBnbG9iYWxEYXRhLCBjb25zdCBQcm9wZXJ0eU5hbWUmIHByb3BlcnR5TmFtZSkKICAg
ICB7CiAgICAgICAgIEFTU0VSVChzdHJ1Y3R1cmUoKS0+Y2xhc3NJbmZvKCkgPT0gJnNfaW5mbyk7
CiAgICAgICAgIG1hdGVyaWFsaXplUHJvcGVydHlNYXBJZk5lY2Vzc2FyeShnbG9iYWxEYXRhKTsK
SW5kZXg6IFNvdXJjZS9XZWJDb3JlL0NoYW5nZUxvZwo9PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2Vi
Q29yZS9DaGFuZ2VMb2cJKHJldmlzaW9uIDExNjc5MikKKysrIFNvdXJjZS9XZWJDb3JlL0NoYW5n
ZUxvZwkod29ya2luZyBjb3B5KQpAQCAtMSwzICsxLDIyOSBAQAorMjAxMi0wNS0xMSAgR2F2aW4g
QmFycmFjbG91Z2ggIDxiYXJyYWNsb3VnaEBhcHBsZS5jb20+CisKKyAgICAgICAgSW50cm9kdWNl
IFByb3BlcnR5TmFtZSBjbGFzcworICAgICAgICBodHRwczovL2J1Z3Mud2Via2l0Lm9yZy9zaG93
X2J1Zy5jZ2k/aWQ9ODYyNDEKKworICAgICAgICBSZXZpZXdlZCBieSBOT0JPRFkgKE9PUFMhKS4K
KworICAgICAgICBSZXBsYWNlICdjb25zdCBJZGVudGlmaWVyJicgYXJndW1lbnRzIHRvIGZ1bmN0
aW9ucyBhY2Nlc3Npbmcgb2JqZWN0IHByb3BlcnRpZXMgd2l0aCBhIG5ldyAnUHJvcGVydHlOYW1l
JyB0eXBlLgorICAgICAgICBUaGlzIGNoYW5nZSBwYXZlcyB0aGUgd2F5IHRvIGFsbG93IGZvciBw
cm9wZXJ0aWVzIGtleWVkIGJ5IHZhbHVlcyB0aGF0IGFyZSBub3QgSWRlbnRpZmllcnMuCisKKyAg
ICAgICAgVGhpcyBjaGFuZ2UgaXMgbGFyZ2VseSBhIG1lY2hhbmljYWwgZmluZCAmIHJlcGxhY2Uu
CisgICAgICAgIEl0IGFsc28gY2hhbmdlcyBKU0Z1bmN0aW9uJ3MgY29uc3RydWN0b3IgdG8gdGFr
ZSBhIFVTdHJpbmcmIGluc3RlYWQgb2YgYW4gSWRlbnRpZmllciYKKyAgICAgICAgKHNpbmNlIGlu
IHNvbWUgY2FzZXMgd2UgY2FuIG5vIGxvbmdlciBndWFyYW50ZWUgdGhhdCB3ZSdsbGwgaGF2ZSBh
biBJZGVudGlmaWVyKSwgYW5kCisgICAgICAgIHVuaWZpZXMgSWRlbnRpZmllcidzIG1ldGhvZHMg
dG8gb2J0YWluIGFycmF5IGluZGljZXMgb250byBQcm9wZXJ0eU5hbWUuCisKKyAgICAgICAgVGhl
IG5ldyBQcm9wZXJ0eU5hbWUgY2xhc3MgcmV0YWlucyB0aGUgYWJpbGl0eSB0byBzdXBwb3J0IC5p
bXBsKCkgYW5kIC51c3RyaW5nKCksIGJ1dAorICAgICAgICBpbiBhIGZ1dHVyZSBwYXRjaCB3ZSBt
YXkgbmVlZCB0byByZXdvcmsgdGhpcywgc2luY2Ugbm90IGFsbCBQcm9wZXJ0eU5hbWVzIHNob3Vs
ZCBiZQorICAgICAgICBlcXVhbCBiYXNlZCBvbiB0aGVpciBzdHJpbmcgcmVwcmVzZW50YXRpb24u
CisKKyAgICAgICAgKiBXZWJDb3JlLmV4cC5pbjoKKyAgICAgICAgKiBiaW5kaW5ncy9qcy9KU0NT
U1N0eWxlRGVjbGFyYXRpb25DdXN0b20uY3BwOgorICAgICAgICAoV2ViQ29yZTo6Y3NzUHJvcGVy
dHlJREZvckpTQ1NTUHJvcGVydHlOYW1lKToKKyAgICAgICAgKFdlYkNvcmU6OkpTQ1NTU3R5bGVE
ZWNsYXJhdGlvbjo6Z2V0T3duUHJvcGVydHlTbG90RGVsZWdhdGUpOgorICAgICAgICAoV2ViQ29y
ZTo6SlNDU1NTdHlsZURlY2xhcmF0aW9uOjpnZXRPd25Qcm9wZXJ0eURlc2NyaXB0b3JEZWxlZ2F0
ZSk6CisgICAgICAgIChXZWJDb3JlOjpKU0NTU1N0eWxlRGVjbGFyYXRpb246OnB1dERlbGVnYXRl
KToKKyAgICAgICAgKiBiaW5kaW5ncy9qcy9KU0RPTUJpbmRpbmcuY3BwOgorICAgICAgICAoV2Vi
Q29yZTo6ZmluZEF0b21pY1N0cmluZyk6CisgICAgICAgIChXZWJDb3JlOjpvYmplY3RUb1N0cmlu
Z0Z1bmN0aW9uR2V0dGVyKToKKyAgICAgICAgKiBiaW5kaW5ncy9qcy9KU0RPTUJpbmRpbmcuaDoK
KyAgICAgICAgKFdlYkNvcmUpOgorICAgICAgICAoV2ViQ29yZTo6cHJvcGVydHlOYW1lVG9TdHJp
bmcpOgorICAgICAgICAoV2ViQ29yZTo6cHJvcGVydHlOYW1lVG9BdG9taWNTdHJpbmcpOgorICAg
ICAgICAqIGJpbmRpbmdzL2pzL0pTRE9NTWltZVR5cGVBcnJheUN1c3RvbS5jcHA6CisgICAgICAg
IChXZWJDb3JlOjpKU0RPTU1pbWVUeXBlQXJyYXk6OmNhbkdldEl0ZW1zRm9yTmFtZSk6CisgICAg
ICAgIChXZWJDb3JlOjpKU0RPTU1pbWVUeXBlQXJyYXk6Om5hbWVHZXR0ZXIpOgorICAgICAgICAq
IGJpbmRpbmdzL2pzL0pTRE9NUGx1Z2luQXJyYXlDdXN0b20uY3BwOgorICAgICAgICAoV2ViQ29y
ZTo6SlNET01QbHVnaW5BcnJheTo6Y2FuR2V0SXRlbXNGb3JOYW1lKToKKyAgICAgICAgKFdlYkNv
cmU6OkpTRE9NUGx1Z2luQXJyYXk6Om5hbWVHZXR0ZXIpOgorICAgICAgICAqIGJpbmRpbmdzL2pz
L0pTRE9NUGx1Z2luQ3VzdG9tLmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OkpTRE9NUGx1Z2luOjpj
YW5HZXRJdGVtc0Zvck5hbWUpOgorICAgICAgICAoV2ViQ29yZTo6SlNET01QbHVnaW46Om5hbWVH
ZXR0ZXIpOgorICAgICAgICAqIGJpbmRpbmdzL2pzL0pTRE9NU3RyaW5nTWFwQ3VzdG9tLmNwcDoK
KyAgICAgICAgKFdlYkNvcmU6OkpTRE9NU3RyaW5nTWFwOjpjYW5HZXRJdGVtc0Zvck5hbWUpOgor
ICAgICAgICAoV2ViQ29yZTo6SlNET01TdHJpbmdNYXA6Om5hbWVHZXR0ZXIpOgorICAgICAgICAo
V2ViQ29yZTo6SlNET01TdHJpbmdNYXA6OmRlbGV0ZVByb3BlcnR5KToKKyAgICAgICAgKFdlYkNv
cmU6OkpTRE9NU3RyaW5nTWFwOjpwdXREZWxlZ2F0ZSk6CisgICAgICAgICogYmluZGluZ3MvanMv
SlNET01XaW5kb3dDdXN0b20uY3BwOgorICAgICAgICAoV2ViQ29yZTo6bm9uQ2FjaGluZ1N0YXRp
Y0Z1bmN0aW9uR2V0dGVyKToKKyAgICAgICAgKFdlYkNvcmU6OmNoaWxkRnJhbWVHZXR0ZXIpOgor
ICAgICAgICAoV2ViQ29yZTo6bmFtZWRJdGVtR2V0dGVyKToKKyAgICAgICAgKFdlYkNvcmU6OkpT
RE9NV2luZG93OjpnZXRPd25Qcm9wZXJ0eVNsb3QpOgorICAgICAgICAoV2ViQ29yZTo6SlNET01X
aW5kb3c6OmdldE93blByb3BlcnR5RGVzY3JpcHRvcik6CisgICAgICAgIChXZWJDb3JlOjpKU0RP
TVdpbmRvdzo6cHV0KToKKyAgICAgICAgKFdlYkNvcmU6OkpTRE9NV2luZG93OjpkZWxldGVQcm9w
ZXJ0eSk6CisgICAgICAgIChXZWJDb3JlOjpKU0RPTVdpbmRvdzo6ZGVmaW5lT3duUHJvcGVydHkp
OgorICAgICAgICAqIGJpbmRpbmdzL2pzL0pTRE9NV2luZG93U2hlbGwuY3BwOgorICAgICAgICAo
V2ViQ29yZTo6SlNET01XaW5kb3dTaGVsbDo6Z2V0T3duUHJvcGVydHlTbG90KToKKyAgICAgICAg
KFdlYkNvcmU6OkpTRE9NV2luZG93U2hlbGw6OmdldE93blByb3BlcnR5RGVzY3JpcHRvcik6Cisg
ICAgICAgIChXZWJDb3JlOjpKU0RPTVdpbmRvd1NoZWxsOjpwdXQpOgorICAgICAgICAoV2ViQ29y
ZTo6SlNET01XaW5kb3dTaGVsbDo6cHV0RGlyZWN0VmlydHVhbCk6CisgICAgICAgIChXZWJDb3Jl
OjpKU0RPTVdpbmRvd1NoZWxsOjpkZWZpbmVPd25Qcm9wZXJ0eSk6CisgICAgICAgIChXZWJDb3Jl
OjpKU0RPTVdpbmRvd1NoZWxsOjpkZWxldGVQcm9wZXJ0eSk6CisgICAgICAgICogYmluZGluZ3Mv
anMvSlNET01XaW5kb3dTaGVsbC5oOgorICAgICAgICAoSlNET01XaW5kb3dTaGVsbCk6CisgICAg
ICAgICogYmluZGluZ3MvanMvSlNIVE1MQWxsQ29sbGVjdGlvbkN1c3RvbS5jcHA6CisgICAgICAg
IChXZWJDb3JlOjpnZXROYW1lZEl0ZW1zKToKKyAgICAgICAgKFdlYkNvcmU6OmNhbGxIVE1MQWxs
Q29sbGVjdGlvbik6CisgICAgICAgIChXZWJDb3JlOjpKU0hUTUxBbGxDb2xsZWN0aW9uOjpjYW5H
ZXRJdGVtc0Zvck5hbWUpOgorICAgICAgICAoV2ViQ29yZTo6SlNIVE1MQWxsQ29sbGVjdGlvbjo6
bmFtZUdldHRlcik6CisgICAgICAgIChXZWJDb3JlOjpKU0hUTUxBbGxDb2xsZWN0aW9uOjppdGVt
KToKKyAgICAgICAgKiBiaW5kaW5ncy9qcy9KU0hUTUxBcHBsZXRFbGVtZW50Q3VzdG9tLmNwcDoK
KyAgICAgICAgKFdlYkNvcmU6OkpTSFRNTEFwcGxldEVsZW1lbnQ6OmdldE93blByb3BlcnR5U2xv
dERlbGVnYXRlKToKKyAgICAgICAgKFdlYkNvcmU6OkpTSFRNTEFwcGxldEVsZW1lbnQ6OmdldE93
blByb3BlcnR5RGVzY3JpcHRvckRlbGVnYXRlKToKKyAgICAgICAgKFdlYkNvcmU6OkpTSFRNTEFw
cGxldEVsZW1lbnQ6OnB1dERlbGVnYXRlKToKKyAgICAgICAgKiBiaW5kaW5ncy9qcy9KU0hUTUxD
b2xsZWN0aW9uQ3VzdG9tLmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OmdldE5hbWVkSXRlbXMpOgor
ICAgICAgICAoV2ViQ29yZTo6SlNIVE1MQ29sbGVjdGlvbjo6Y2FuR2V0SXRlbXNGb3JOYW1lKToK
KyAgICAgICAgKFdlYkNvcmU6OkpTSFRNTENvbGxlY3Rpb246Om5hbWVHZXR0ZXIpOgorICAgICAg
ICAqIGJpbmRpbmdzL2pzL0pTSFRNTERvY3VtZW50Q3VzdG9tLmNwcDoKKyAgICAgICAgKFdlYkNv
cmU6OkpTSFRNTERvY3VtZW50OjpjYW5HZXRJdGVtc0Zvck5hbWUpOgorICAgICAgICAoV2ViQ29y
ZTo6SlNIVE1MRG9jdW1lbnQ6Om5hbWVHZXR0ZXIpOgorICAgICAgICAqIGJpbmRpbmdzL2pzL0pT
SFRNTEVtYmVkRWxlbWVudEN1c3RvbS5jcHA6CisgICAgICAgIChXZWJDb3JlOjpKU0hUTUxFbWJl
ZEVsZW1lbnQ6OmdldE93blByb3BlcnR5U2xvdERlbGVnYXRlKToKKyAgICAgICAgKFdlYkNvcmU6
OkpTSFRNTEVtYmVkRWxlbWVudDo6Z2V0T3duUHJvcGVydHlEZXNjcmlwdG9yRGVsZWdhdGUpOgor
ICAgICAgICAoV2ViQ29yZTo6SlNIVE1MRW1iZWRFbGVtZW50OjpwdXREZWxlZ2F0ZSk6CisgICAg
ICAgICogYmluZGluZ3MvanMvSlNIVE1MRm9ybUVsZW1lbnRDdXN0b20uY3BwOgorICAgICAgICAo
V2ViQ29yZTo6SlNIVE1MRm9ybUVsZW1lbnQ6OmNhbkdldEl0ZW1zRm9yTmFtZSk6CisgICAgICAg
IChXZWJDb3JlOjpKU0hUTUxGb3JtRWxlbWVudDo6bmFtZUdldHRlcik6CisgICAgICAgICogYmlu
ZGluZ3MvanMvSlNIVE1MRnJhbWVTZXRFbGVtZW50Q3VzdG9tLmNwcDoKKyAgICAgICAgKFdlYkNv
cmU6OkpTSFRNTEZyYW1lU2V0RWxlbWVudDo6Y2FuR2V0SXRlbXNGb3JOYW1lKToKKyAgICAgICAg
KFdlYkNvcmU6OkpTSFRNTEZyYW1lU2V0RWxlbWVudDo6bmFtZUdldHRlcik6CisgICAgICAgICog
YmluZGluZ3MvanMvSlNIVE1MT2JqZWN0RWxlbWVudEN1c3RvbS5jcHA6CisgICAgICAgIChXZWJD
b3JlOjpKU0hUTUxPYmplY3RFbGVtZW50OjpnZXRPd25Qcm9wZXJ0eVNsb3REZWxlZ2F0ZSk6Cisg
ICAgICAgIChXZWJDb3JlOjpKU0hUTUxPYmplY3RFbGVtZW50OjpnZXRPd25Qcm9wZXJ0eURlc2Ny
aXB0b3JEZWxlZ2F0ZSk6CisgICAgICAgIChXZWJDb3JlOjpKU0hUTUxPYmplY3RFbGVtZW50Ojpw
dXREZWxlZ2F0ZSk6CisgICAgICAgICogYmluZGluZ3MvanMvSlNIaXN0b3J5Q3VzdG9tLmNwcDoK
KyAgICAgICAgKFdlYkNvcmU6Om5vbkNhY2hpbmdTdGF0aWNCYWNrRnVuY3Rpb25HZXR0ZXIpOgor
ICAgICAgICAoV2ViQ29yZTo6bm9uQ2FjaGluZ1N0YXRpY0ZvcndhcmRGdW5jdGlvbkdldHRlcik6
CisgICAgICAgIChXZWJDb3JlOjpub25DYWNoaW5nU3RhdGljR29GdW5jdGlvbkdldHRlcik6Cisg
ICAgICAgIChXZWJDb3JlOjpKU0hpc3Rvcnk6OmdldE93blByb3BlcnR5U2xvdERlbGVnYXRlKToK
KyAgICAgICAgKFdlYkNvcmU6OkpTSGlzdG9yeTo6Z2V0T3duUHJvcGVydHlEZXNjcmlwdG9yRGVs
ZWdhdGUpOgorICAgICAgICAoV2ViQ29yZTo6SlNIaXN0b3J5OjpwdXREZWxlZ2F0ZSk6CisgICAg
ICAgIChXZWJDb3JlOjpKU0hpc3Rvcnk6OmRlbGV0ZVByb3BlcnR5KToKKyAgICAgICAgKiBiaW5k
aW5ncy9qcy9KU0xvY2F0aW9uQ3VzdG9tLmNwcDoKKyAgICAgICAgKFdlYkNvcmU6Om5vbkNhY2hp
bmdTdGF0aWNSZXBsYWNlRnVuY3Rpb25HZXR0ZXIpOgorICAgICAgICAoV2ViQ29yZTo6bm9uQ2Fj
aGluZ1N0YXRpY1JlbG9hZEZ1bmN0aW9uR2V0dGVyKToKKyAgICAgICAgKFdlYkNvcmU6Om5vbkNh
Y2hpbmdTdGF0aWNBc3NpZ25GdW5jdGlvbkdldHRlcik6CisgICAgICAgIChXZWJDb3JlOjpKU0xv
Y2F0aW9uOjpnZXRPd25Qcm9wZXJ0eVNsb3REZWxlZ2F0ZSk6CisgICAgICAgIChXZWJDb3JlOjpK
U0xvY2F0aW9uOjpnZXRPd25Qcm9wZXJ0eURlc2NyaXB0b3JEZWxlZ2F0ZSk6CisgICAgICAgIChX
ZWJDb3JlOjpKU0xvY2F0aW9uOjpwdXREZWxlZ2F0ZSk6CisgICAgICAgIChXZWJDb3JlOjpKU0xv
Y2F0aW9uOjpkZWxldGVQcm9wZXJ0eSk6CisgICAgICAgIChXZWJDb3JlOjpKU0xvY2F0aW9uOjpk
ZWZpbmVPd25Qcm9wZXJ0eSk6CisgICAgICAgIChXZWJDb3JlOjpKU0xvY2F0aW9uUHJvdG90eXBl
OjpwdXREZWxlZ2F0ZSk6CisgICAgICAgIChXZWJDb3JlOjpKU0xvY2F0aW9uUHJvdG90eXBlOjpk
ZWZpbmVPd25Qcm9wZXJ0eSk6CisgICAgICAgICogYmluZGluZ3MvanMvSlNOYW1lZE5vZGVNYXBD
dXN0b20uY3BwOgorICAgICAgICAoV2ViQ29yZTo6SlNOYW1lZE5vZGVNYXA6OmNhbkdldEl0ZW1z
Rm9yTmFtZSk6CisgICAgICAgIChXZWJDb3JlOjpKU05hbWVkTm9kZU1hcDo6bmFtZUdldHRlcik6
CisgICAgICAgICogYmluZGluZ3MvanMvSlNOb2RlTGlzdEN1c3RvbS5jcHA6CisgICAgICAgIChX
ZWJDb3JlOjpKU05vZGVMaXN0OjpjYW5HZXRJdGVtc0Zvck5hbWUpOgorICAgICAgICAoV2ViQ29y
ZTo6SlNOb2RlTGlzdDo6bmFtZUdldHRlcik6CisgICAgICAgICogYmluZGluZ3MvanMvSlNQbHVn
aW5FbGVtZW50RnVuY3Rpb25zLmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OnJ1bnRpbWVPYmplY3RQ
cm9wZXJ0eUdldHRlcik6CisgICAgICAgIChXZWJDb3JlOjpydW50aW1lT2JqZWN0Q3VzdG9tR2V0
T3duUHJvcGVydHlTbG90KToKKyAgICAgICAgKFdlYkNvcmU6OnJ1bnRpbWVPYmplY3RDdXN0b21H
ZXRPd25Qcm9wZXJ0eURlc2NyaXB0b3IpOgorICAgICAgICAoV2ViQ29yZTo6cnVudGltZU9iamVj
dEN1c3RvbVB1dCk6CisgICAgICAgICogYmluZGluZ3MvanMvSlNQbHVnaW5FbGVtZW50RnVuY3Rp
b25zLmg6CisgICAgICAgIChXZWJDb3JlKToKKyAgICAgICAgKiBiaW5kaW5ncy9qcy9KU1N0b3Jh
Z2VDdXN0b20uY3BwOgorICAgICAgICAoV2ViQ29yZTo6SlNTdG9yYWdlOjpjYW5HZXRJdGVtc0Zv
ck5hbWUpOgorICAgICAgICAoV2ViQ29yZTo6SlNTdG9yYWdlOjpuYW1lR2V0dGVyKToKKyAgICAg
ICAgKFdlYkNvcmU6OkpTU3RvcmFnZTo6ZGVsZXRlUHJvcGVydHkpOgorICAgICAgICAoV2ViQ29y
ZTo6SlNTdG9yYWdlOjpwdXREZWxlZ2F0ZSk6CisgICAgICAgICogYmluZGluZ3MvanMvSlNTdHls
ZVNoZWV0TGlzdEN1c3RvbS5jcHA6CisgICAgICAgIChXZWJDb3JlOjpKU1N0eWxlU2hlZXRMaXN0
OjpjYW5HZXRJdGVtc0Zvck5hbWUpOgorICAgICAgICAoV2ViQ29yZTo6SlNTdHlsZVNoZWV0TGlz
dDo6bmFtZUdldHRlcik6CisgICAgICAgICogYmluZGluZ3MvanMvSlNXb3JrZXJDb250ZXh0Q3Vz
dG9tLmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OkpTV29ya2VyQ29udGV4dDo6Z2V0T3duUHJvcGVy
dHlTbG90RGVsZWdhdGUpOgorICAgICAgICAoV2ViQ29yZTo6SlNXb3JrZXJDb250ZXh0OjpnZXRP
d25Qcm9wZXJ0eURlc2NyaXB0b3JEZWxlZ2F0ZSk6CisgICAgICAgICogYmluZGluZ3Mvc2NyaXB0
cy9Db2RlR2VuZXJhdG9ySlMucG06CisgICAgICAgIChHZW5lcmF0ZUdldE93blByb3BlcnR5U2xv
dEJvZHkpOgorICAgICAgICAoR2VuZXJhdGVHZXRPd25Qcm9wZXJ0eURlc2NyaXB0b3JCb2R5KToK
KyAgICAgICAgKEdlbmVyYXRlSGVhZGVyKToKKyAgICAgICAgKEdlbmVyYXRlSW1wbGVtZW50YXRp
b24pOgorICAgICAgICAoR2VuZXJhdGVDb25zdHJ1Y3RvckRlY2xhcmF0aW9uKToKKyAgICAgICAg
KEdlbmVyYXRlQ29uc3RydWN0b3JEZWZpbml0aW9uKToKKyAgICAgICAgKiBicmlkZ2UvYy9jX2Ns
YXNzLmNwcDoKKyAgICAgICAgKEpTQzo6QmluZGluZ3M6OkNDbGFzczo6bWV0aG9kc05hbWVkKToK
KyAgICAgICAgKEpTQzo6QmluZGluZ3M6OkNDbGFzczo6ZmllbGROYW1lZCk6CisgICAgICAgICog
YnJpZGdlL2MvY19jbGFzcy5oOgorICAgICAgICAoQ0NsYXNzKToKKyAgICAgICAgKiBicmlkZ2Uv
Yy9jX2luc3RhbmNlLmNwcDoKKyAgICAgICAgKEpTQzo6QmluZGluZ3M6OkNSdW50aW1lTWV0aG9k
OjpjcmVhdGUpOgorICAgICAgICAoSlNDOjpCaW5kaW5nczo6Q1J1bnRpbWVNZXRob2Q6OmZpbmlz
aENyZWF0aW9uKToKKyAgICAgICAgKEpTQzo6QmluZGluZ3M6OkNJbnN0YW5jZTo6Z2V0TWV0aG9k
KToKKyAgICAgICAgKiBicmlkZ2UvYy9jX2luc3RhbmNlLmg6CisgICAgICAgIChDSW5zdGFuY2Up
OgorICAgICAgICAqIGJyaWRnZS9qbmkvanNjL0phdmFDbGFzc0pTQy5jcHA6CisgICAgICAgIChK
YXZhQ2xhc3M6Om1ldGhvZHNOYW1lZCk6CisgICAgICAgIChKYXZhQ2xhc3M6OmZpZWxkTmFtZWQp
OgorICAgICAgICAqIGJyaWRnZS9qbmkvanNjL0phdmFDbGFzc0pTQy5oOgorICAgICAgICAoSmF2
YUNsYXNzKToKKyAgICAgICAgKiBicmlkZ2Uvam5pL2pzYy9KYXZhSW5zdGFuY2VKU0MuY3BwOgor
ICAgICAgICAoSmF2YVJ1bnRpbWVNZXRob2Q6OmNyZWF0ZSk6CisgICAgICAgIChKYXZhUnVudGlt
ZU1ldGhvZDo6ZmluaXNoQ3JlYXRpb24pOgorICAgICAgICAqIGJyaWRnZS9qbmkvanNjL0phdmFJ
bnN0YW5jZUpTQy5oOgorICAgICAgICAoSmF2YUluc3RhbmNlKToKKyAgICAgICAgKiBicmlkZ2Uv
anNjL0JyaWRnZUpTQy5oOgorICAgICAgICAoQ2xhc3MpOgorICAgICAgICAoSlNDOjpCaW5kaW5n
czo6Q2xhc3M6OmZhbGxiYWNrT2JqZWN0KToKKyAgICAgICAgKEpTQzo6QmluZGluZ3M6Okluc3Rh
bmNlOjpzZXRWYWx1ZU9mVW5kZWZpbmVkRmllbGQpOgorICAgICAgICAoSW5zdGFuY2UpOgorICAg
ICAgICAoSlNDOjpCaW5kaW5nczo6SW5zdGFuY2U6OmdldE93blByb3BlcnR5U2xvdCk6CisgICAg
ICAgIChKU0M6OkJpbmRpbmdzOjpJbnN0YW5jZTo6Z2V0T3duUHJvcGVydHlEZXNjcmlwdG9yKToK
KyAgICAgICAgKEpTQzo6QmluZGluZ3M6Okluc3RhbmNlOjpwdXQpOgorICAgICAgICAqIGJyaWRn
ZS9vYmpjL29iamNfY2xhc3MuaDoKKyAgICAgICAgKE9iamNDbGFzcyk6CisgICAgICAgICogYnJp
ZGdlL29iamMvb2JqY19jbGFzcy5tbToKKyAgICAgICAgKEpTQzo6QmluZGluZ3M6Ok9iamNDbGFz
czo6bWV0aG9kc05hbWVkKToKKyAgICAgICAgKEpTQzo6QmluZGluZ3M6Ok9iamNDbGFzczo6Zmll
bGROYW1lZCk6CisgICAgICAgIChKU0M6OkJpbmRpbmdzOjpPYmpjQ2xhc3M6OmZhbGxiYWNrT2Jq
ZWN0KToKKyAgICAgICAgKiBicmlkZ2Uvb2JqYy9vYmpjX2luc3RhbmNlLmg6CisgICAgICAgIChP
YmpjSW5zdGFuY2UpOgorICAgICAgICAqIGJyaWRnZS9vYmpjL29iamNfaW5zdGFuY2UubW06Cisg
ICAgICAgIChPYmpDUnVudGltZU1ldGhvZDo6Y3JlYXRlKToKKyAgICAgICAgKE9iakNSdW50aW1l
TWV0aG9kOjpmaW5pc2hDcmVhdGlvbik6CisgICAgICAgIChPYmpjSW5zdGFuY2U6OnNldFZhbHVl
T2ZVbmRlZmluZWRGaWVsZCk6CisgICAgICAgIChPYmpjSW5zdGFuY2U6OmdldFZhbHVlT2ZVbmRl
ZmluZWRGaWVsZCk6CisgICAgICAgICogYnJpZGdlL29iamMvb2JqY19ydW50aW1lLmg6CisgICAg
ICAgIChKU0M6OkJpbmRpbmdzOjpPYmpjRmFsbGJhY2tPYmplY3RJbXA6OmNyZWF0ZSk6CisgICAg
ICAgIChKU0M6OkJpbmRpbmdzOjpPYmpjRmFsbGJhY2tPYmplY3RJbXA6OnByb3BlcnR5TmFtZSk6
CisgICAgICAgIChPYmpjRmFsbGJhY2tPYmplY3RJbXApOgorICAgICAgICAqIGJyaWRnZS9vYmpj
L29iamNfcnVudGltZS5tbToKKyAgICAgICAgKEpTQzo6QmluZGluZ3M6Ok9iamNGYWxsYmFja09i
amVjdEltcDo6T2JqY0ZhbGxiYWNrT2JqZWN0SW1wKToKKyAgICAgICAgKEpTQzo6QmluZGluZ3M6
Ok9iamNGYWxsYmFja09iamVjdEltcDo6Z2V0T3duUHJvcGVydHlTbG90KToKKyAgICAgICAgKEpT
Qzo6QmluZGluZ3M6Ok9iamNGYWxsYmFja09iamVjdEltcDo6Z2V0T3duUHJvcGVydHlEZXNjcmlw
dG9yKToKKyAgICAgICAgKEpTQzo6QmluZGluZ3M6Ok9iamNGYWxsYmFja09iamVjdEltcDo6cHV0
KToKKyAgICAgICAgKEpTQzo6QmluZGluZ3M6OmNhbGxPYmpDRmFsbGJhY2tPYmplY3QpOgorICAg
ICAgICAoSlNDOjpCaW5kaW5nczo6T2JqY0ZhbGxiYWNrT2JqZWN0SW1wOjpkZWxldGVQcm9wZXJ0
eSk6CisgICAgICAgIChKU0M6OkJpbmRpbmdzOjpPYmpjRmFsbGJhY2tPYmplY3RJbXA6OmRlZmF1
bHRWYWx1ZSk6CisgICAgICAgICogYnJpZGdlL3J1bnRpbWVfYXJyYXkuY3BwOgorICAgICAgICAo
SlNDOjpSdW50aW1lQXJyYXk6Omxlbmd0aEdldHRlcik6CisgICAgICAgIChKU0M6OlJ1bnRpbWVB
cnJheTo6Z2V0T3duUHJvcGVydHlTbG90KToKKyAgICAgICAgKEpTQzo6UnVudGltZUFycmF5Ojpn
ZXRPd25Qcm9wZXJ0eURlc2NyaXB0b3IpOgorICAgICAgICAoSlNDOjpSdW50aW1lQXJyYXk6OnB1
dCk6CisgICAgICAgIChKU0M6OlJ1bnRpbWVBcnJheTo6ZGVsZXRlUHJvcGVydHkpOgorICAgICAg
ICAqIGJyaWRnZS9ydW50aW1lX2FycmF5Lmg6CisgICAgICAgIChSdW50aW1lQXJyYXkpOgorICAg
ICAgICAqIGJyaWRnZS9ydW50aW1lX21ldGhvZC5jcHA6CisgICAgICAgIChKU0M6OlJ1bnRpbWVN
ZXRob2Q6OmZpbmlzaENyZWF0aW9uKToKKyAgICAgICAgKEpTQzo6UnVudGltZU1ldGhvZDo6bGVu
Z3RoR2V0dGVyKToKKyAgICAgICAgKEpTQzo6UnVudGltZU1ldGhvZDo6Z2V0T3duUHJvcGVydHlT
bG90KToKKyAgICAgICAgKEpTQzo6UnVudGltZU1ldGhvZDo6Z2V0T3duUHJvcGVydHlEZXNjcmlw
dG9yKToKKyAgICAgICAgKiBicmlkZ2UvcnVudGltZV9tZXRob2QuaDoKKyAgICAgICAgKEpTQzo6
UnVudGltZU1ldGhvZDo6Y3JlYXRlKToKKyAgICAgICAgKFJ1bnRpbWVNZXRob2QpOgorICAgICAg
ICAqIGJyaWRnZS9ydW50aW1lX29iamVjdC5jcHA6CisgICAgICAgIChKU0M6OkJpbmRpbmdzOjpS
dW50aW1lT2JqZWN0OjpmYWxsYmFja09iamVjdEdldHRlcik6CisgICAgICAgIChKU0M6OkJpbmRp
bmdzOjpSdW50aW1lT2JqZWN0OjpmaWVsZEdldHRlcik6CisgICAgICAgIChKU0M6OkJpbmRpbmdz
OjpSdW50aW1lT2JqZWN0OjptZXRob2RHZXR0ZXIpOgorICAgICAgICAoSlNDOjpCaW5kaW5nczo6
UnVudGltZU9iamVjdDo6Z2V0T3duUHJvcGVydHlTbG90KToKKyAgICAgICAgKEpTQzo6QmluZGlu
Z3M6OlJ1bnRpbWVPYmplY3Q6OmdldE93blByb3BlcnR5RGVzY3JpcHRvcik6CisgICAgICAgIChK
U0M6OkJpbmRpbmdzOjpSdW50aW1lT2JqZWN0OjpwdXQpOgorICAgICAgICAoSlNDOjpCaW5kaW5n
czo6UnVudGltZU9iamVjdDo6ZGVsZXRlUHJvcGVydHkpOgorICAgICAgICAqIGJyaWRnZS9ydW50
aW1lX29iamVjdC5oOgorICAgICAgICAoUnVudGltZU9iamVjdCk6CisKIDIwMTItMDUtMTEgIFNp
bW9uIEZyYXNlciAgPHNpbW9uLmZyYXNlckBhcHBsZS5jb20+CiAKICAgICAgICAgQ1ZEaXNwbGF5
TGluayBrZWVwcyBydW5uaW5nIGFmdGVyIGEgc2luZ2xlIHJlcXVlc3RBbmltYXRpb25GcmFtZQpJ
bmRleDogU291cmNlL1dlYkNvcmUvV2ViQ29yZS5leHAuaW4KPT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNl
L1dlYkNvcmUvV2ViQ29yZS5leHAuaW4JKHJldmlzaW9uIDExNjY2NykKKysrIFNvdXJjZS9XZWJD
b3JlL1dlYkNvcmUuZXhwLmluCSh3b3JraW5nIGNvcHkpCkBAIC0xODg0LDIyICsxODg0LDIyIEBA
IF9fWk43V2ViQ29yZTVGcmFtZTI2c2VuZE9yaWVudGF0aW9uQ2hhbmcKIAogI2lmIFVTRShQTFVH
SU5fSE9TVF9QUk9DRVNTKQogX19aTjNKU0MxM1J1bnRpbWVNZXRob2QxMWdldENhbGxEYXRhRVBO
U182SlNDZWxsRVJOU184Q2FsbERhdGFFCi1fX1pOM0pTQzEzUnVudGltZU1ldGhvZDE0ZmluaXNo
Q3JlYXRpb25FUk5TXzEySlNHbG9iYWxEYXRhRVJLTlNfMTBJZGVudGlmaWVyRQotX19aTjNKU0Mx
M1J1bnRpbWVNZXRob2QxOGdldE93blByb3BlcnR5U2xvdEVQTlNfNkpTQ2VsbEVQTlNfOUV4ZWNT
dGF0ZUVSS05TXzEwSWRlbnRpZmllckVSTlNfMTJQcm9wZXJ0eVNsb3RFCi1fX1pOM0pTQzEzUnVu
dGltZU1ldGhvZDI0Z2V0T3duUHJvcGVydHlEZXNjcmlwdG9yRVBOU184SlNPYmplY3RFUE5TXzlF
eGVjU3RhdGVFUktOU18xMElkZW50aWZpZXJFUk5TXzE4UHJvcGVydHlEZXNjcmlwdG9yRQorX19a
TjNKU0MxM1J1bnRpbWVNZXRob2QxNGZpbmlzaENyZWF0aW9uRVJOU18xMkpTR2xvYmFsRGF0YUVS
S05TXzdVU3RyaW5nRQorX19aTjNKU0MxM1J1bnRpbWVNZXRob2QxOGdldE93blByb3BlcnR5U2xv
dEVQTlNfNkpTQ2VsbEVQTlNfOUV4ZWNTdGF0ZUVOU18xMlByb3BlcnR5TmFtZUVSTlNfMTJQcm9w
ZXJ0eVNsb3RFCitfX1pOM0pTQzEzUnVudGltZU1ldGhvZDI0Z2V0T3duUHJvcGVydHlEZXNjcmlw
dG9yRVBOU184SlNPYmplY3RFUE5TXzlFeGVjU3RhdGVFTlNfMTJQcm9wZXJ0eU5hbWVFUk5TXzE4
UHJvcGVydHlEZXNjcmlwdG9yRQogX19aTjNKU0MxM1J1bnRpbWVNZXRob2Q2c19pbmZvRQogX19a
TjNKU0MxM1J1bnRpbWVNZXRob2Q3ZGVzdHJveUVQTlNfNkpTQ2VsbEUKIF9fWk4zSlNDMTNSdW50
aW1lTWV0aG9kQzJFUE5TXzE0SlNHbG9iYWxPYmplY3RFUE5TXzlTdHJ1Y3R1cmVFUk4zV1RGNlZl
Y3RvcklQTlNfOEJpbmRpbmdzNk1ldGhvZEVMbTBFRUUKIF9fWk4zSlNDOEJpbmRpbmdzMTBSb290
T2JqZWN0RDFFdgogX19aTjNKU0M4QmluZGluZ3MxM1J1bnRpbWVPYmplY3QxMWdldENhbGxEYXRh
RVBOU182SlNDZWxsRVJOU184Q2FsbERhdGFFCiBfX1pOM0pTQzhCaW5kaW5nczEzUnVudGltZU9i
amVjdDEyZGVmYXVsdFZhbHVlRVBLTlNfOEpTT2JqZWN0RVBOU185RXhlY1N0YXRlRU5TXzIyUHJl
ZmVycmVkUHJpbWl0aXZlVHlwZUUKLV9fWk4zSlNDOEJpbmRpbmdzMTNSdW50aW1lT2JqZWN0MTRk
ZWxldGVQcm9wZXJ0eUVQTlNfNkpTQ2VsbEVQTlNfOUV4ZWNTdGF0ZUVSS05TXzEwSWRlbnRpZmll
ckUKK19fWk4zSlNDOEJpbmRpbmdzMTNSdW50aW1lT2JqZWN0MTRkZWxldGVQcm9wZXJ0eUVQTlNf
NkpTQ2VsbEVQTlNfOUV4ZWNTdGF0ZUVOU18xMlByb3BlcnR5TmFtZUUKIF9fWk4zSlNDOEJpbmRp
bmdzMTNSdW50aW1lT2JqZWN0MTRmaW5pc2hDcmVhdGlvbkVQTlNfMTRKU0dsb2JhbE9iamVjdEUK
IF9fWk4zSlNDOEJpbmRpbmdzMTNSdW50aW1lT2JqZWN0MTZnZXRDb25zdHJ1Y3REYXRhRVBOU182
SlNDZWxsRVJOU18xM0NvbnN0cnVjdERhdGFFCi1fX1pOM0pTQzhCaW5kaW5nczEzUnVudGltZU9i
amVjdDE4Z2V0T3duUHJvcGVydHlTbG90RVBOU182SlNDZWxsRVBOU185RXhlY1N0YXRlRVJLTlNf
MTBJZGVudGlmaWVyRVJOU18xMlByb3BlcnR5U2xvdEUKK19fWk4zSlNDOEJpbmRpbmdzMTNSdW50
aW1lT2JqZWN0MThnZXRPd25Qcm9wZXJ0eVNsb3RFUE5TXzZKU0NlbGxFUE5TXzlFeGVjU3RhdGVF
TlNfMTJQcm9wZXJ0eU5hbWVFUk5TXzEyUHJvcGVydHlTbG90RQogX19aTjNKU0M4QmluZGluZ3Mx
M1J1bnRpbWVPYmplY3QxOWdldE93blByb3BlcnR5TmFtZXNFUE5TXzhKU09iamVjdEVQTlNfOUV4
ZWNTdGF0ZUVSTlNfMTdQcm9wZXJ0eU5hbWVBcnJheUVOU18xNUVudW1lcmF0aW9uTW9kZUUKLV9f
Wk4zSlNDOEJpbmRpbmdzMTNSdW50aW1lT2JqZWN0MjRnZXRPd25Qcm9wZXJ0eURlc2NyaXB0b3JF
UE5TXzhKU09iamVjdEVQTlNfOUV4ZWNTdGF0ZUVSS05TXzEwSWRlbnRpZmllckVSTlNfMThQcm9w
ZXJ0eURlc2NyaXB0b3JFCi1fX1pOM0pTQzhCaW5kaW5nczEzUnVudGltZU9iamVjdDNwdXRFUE5T
XzZKU0NlbGxFUE5TXzlFeGVjU3RhdGVFUktOU18xMElkZW50aWZpZXJFTlNfN0pTVmFsdWVFUk5T
XzE1UHV0UHJvcGVydHlTbG90RQorX19aTjNKU0M4QmluZGluZ3MxM1J1bnRpbWVPYmplY3QyNGdl
dE93blByb3BlcnR5RGVzY3JpcHRvckVQTlNfOEpTT2JqZWN0RVBOU185RXhlY1N0YXRlRU5TXzEy
UHJvcGVydHlOYW1lRVJOU18xOFByb3BlcnR5RGVzY3JpcHRvckUKK19fWk4zSlNDOEJpbmRpbmdz
MTNSdW50aW1lT2JqZWN0M3B1dEVQTlNfNkpTQ2VsbEVQTlNfOUV4ZWNTdGF0ZUVOU18xMlByb3Bl
cnR5TmFtZUVOU183SlNWYWx1ZUVSTlNfMTVQdXRQcm9wZXJ0eVNsb3RFCiBfX1pOM0pTQzhCaW5k
aW5nczEzUnVudGltZU9iamVjdDZzX2luZm9FCiBfX1pOM0pTQzhCaW5kaW5nczEzUnVudGltZU9i
amVjdDdkZXN0cm95RVBOU182SlNDZWxsRQogX19aTjNKU0M4QmluZGluZ3MxM1J1bnRpbWVPYmpl
Y3RDMkVQTlNfOUV4ZWNTdGF0ZUVQTlNfMTRKU0dsb2JhbE9iamVjdEVQTlNfOVN0cnVjdHVyZUVO
M1dURjEwUGFzc1JlZlB0cklOUzBfOEluc3RhbmNlRUVFCkluZGV4OiBTb3VyY2UvV2ViQ29yZS9i
aW5kaW5ncy9qcy9KU0NTU1N0eWxlRGVjbGFyYXRpb25DdXN0b20uY3BwCj09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0t
IFNvdXJjZS9XZWJDb3JlL2JpbmRpbmdzL2pzL0pTQ1NTU3R5bGVEZWNsYXJhdGlvbkN1c3RvbS5j
cHAJKHJldmlzaW9uIDExNjY2NykKKysrIFNvdXJjZS9XZWJDb3JlL2JpbmRpbmdzL2pzL0pTQ1NT
U3R5bGVEZWNsYXJhdGlvbkN1c3RvbS5jcHAJKHdvcmtpbmcgY29weSkKQEAgLTE3NiwxNiArMTc2
LDE2IEBAIHN0YXRpYyBpbmxpbmUgdm9pZCB3cml0ZUVwdWJQcmVmaXgoY2hhcioKICAgICAqYnVm
ZmVyKysgPSAnLSc7CiB9CiAKLXN0YXRpYyBDU1NQcm9wZXJ0eUluZm8gY3NzUHJvcGVydHlJREZv
ckpTQ1NTUHJvcGVydHlOYW1lKGNvbnN0IElkZW50aWZpZXImIHByb3BlcnR5TmFtZSkKK3N0YXRp
YyBDU1NQcm9wZXJ0eUluZm8gY3NzUHJvcGVydHlJREZvckpTQ1NTUHJvcGVydHlOYW1lKFByb3Bl
cnR5TmFtZSBwcm9wZXJ0eU5hbWUpCiB7CiAgICAgQ1NTUHJvcGVydHlJbmZvIHByb3BlcnR5SW5m
byA9IHtDU1NQcm9wZXJ0eUludmFsaWQsIGZhbHNlfTsKICAgICBib29sIGhhZFBpeGVsT3JQb3NQ
cmVmaXggPSBmYWxzZTsKIAotICAgIHVuc2lnbmVkIGxlbmd0aCA9IHByb3BlcnR5TmFtZS5sZW5n
dGgoKTsKKyAgICBTdHJpbmdJbXBsKiBwcm9wZXJ0eU5hbWVTdHJpbmcgPSBwcm9wZXJ0eU5hbWUu
aW1wbCgpOworICAgIHVuc2lnbmVkIGxlbmd0aCA9IHByb3BlcnR5TmFtZVN0cmluZy0+bGVuZ3Ro
KCk7CiAgICAgaWYgKCFsZW5ndGgpCiAgICAgICAgIHJldHVybiBwcm9wZXJ0eUluZm87CiAKLSAg
ICBTdHJpbmdJbXBsKiBwcm9wZXJ0eU5hbWVTdHJpbmcgPSBwcm9wZXJ0eU5hbWUuaW1wbCgpOwog
ICAgIFN0cmluZyBzdHJpbmdGb3JDYWNoZSA9IFN0cmluZyhwcm9wZXJ0eU5hbWVTdHJpbmcpOwog
ICAgIHR5cGVkZWYgSGFzaE1hcDxTdHJpbmcsIENTU1Byb3BlcnR5SW5mbz4gQ1NTUHJvcGVydHlJ
bmZvTWFwOwogICAgIERFRklORV9TVEFUSUNfTE9DQUwoQ1NTUHJvcGVydHlJbmZvTWFwLCBwcm9w
ZXJ0eUluZm9DYWNoZSwgKCkpOwpAQCAtMzIwLDcgKzMyMCw3IEBAIHN0YXRpYyBKU1ZhbHVlIGNz
c1Byb3BlcnR5R2V0dGVyQ2FsbGJhY2sKICAgICByZXR1cm4gY3NzUHJvcGVydHlHZXR0ZXIoZXhl
YywganNDYXN0PEpTQ1NTU3R5bGVEZWNsYXJhdGlvbio+KGFzT2JqZWN0KHNsb3RCYXNlKSksIHBy
b3BlcnR5SUQpOwogfQogCi1ib29sIEpTQ1NTU3R5bGVEZWNsYXJhdGlvbjo6Z2V0T3duUHJvcGVy
dHlTbG90RGVsZWdhdGUoRXhlY1N0YXRlKiwgY29uc3QgSWRlbnRpZmllciYgcHJvcGVydHlJZGVu
dGlmaWVyLCBQcm9wZXJ0eVNsb3QmIHNsb3QpCitib29sIEpTQ1NTU3R5bGVEZWNsYXJhdGlvbjo6
Z2V0T3duUHJvcGVydHlTbG90RGVsZWdhdGUoRXhlY1N0YXRlKiwgUHJvcGVydHlOYW1lIHByb3Bl
cnR5SWRlbnRpZmllciwgUHJvcGVydHlTbG90JiBzbG90KQogewogICAgIENTU1Byb3BlcnR5SW5m
byBwcm9wZXJ0eUluZm8gPSBjc3NQcm9wZXJ0eUlERm9ySlNDU1NQcm9wZXJ0eU5hbWUocHJvcGVy
dHlJZGVudGlmaWVyKTsKICAgICBpZiAoIXByb3BlcnR5SW5mby5wcm9wZXJ0eUlEKQpAQCAtMzMz
LDcgKzMzMyw3IEBAIGJvb2wgSlNDU1NTdHlsZURlY2xhcmF0aW9uOjpnZXRPd25Qcm9wZXIKICAg
ICByZXR1cm4gdHJ1ZTsKIH0KIAotYm9vbCBKU0NTU1N0eWxlRGVjbGFyYXRpb246OmdldE93blBy
b3BlcnR5RGVzY3JpcHRvckRlbGVnYXRlKEpTQzo6RXhlY1N0YXRlKiBleGVjLCBjb25zdCBKU0M6
OklkZW50aWZpZXImIHByb3BlcnR5SWRlbnRpZmllciwgSlNDOjpQcm9wZXJ0eURlc2NyaXB0b3Im
IGRlc2NyaXB0b3IpCitib29sIEpTQ1NTU3R5bGVEZWNsYXJhdGlvbjo6Z2V0T3duUHJvcGVydHlE
ZXNjcmlwdG9yRGVsZWdhdGUoSlNDOjpFeGVjU3RhdGUqIGV4ZWMsIEpTQzo6UHJvcGVydHlOYW1l
IHByb3BlcnR5SWRlbnRpZmllciwgSlNDOjpQcm9wZXJ0eURlc2NyaXB0b3ImIGRlc2NyaXB0b3Ip
CiB7CiAgICAgQ1NTUHJvcGVydHlJbmZvIHByb3BlcnR5SW5mbyA9IGNzc1Byb3BlcnR5SURGb3JK
U0NTU1Byb3BlcnR5TmFtZShwcm9wZXJ0eUlkZW50aWZpZXIpOwogICAgIGlmICghcHJvcGVydHlJ
bmZvLnByb3BlcnR5SUQpCkBAIC0zNDgsNyArMzQ4LDcgQEAgYm9vbCBKU0NTU1N0eWxlRGVjbGFy
YXRpb246OmdldE93blByb3BlcgogICAgIHJldHVybiB0cnVlOwogfQogCi1ib29sIEpTQ1NTU3R5
bGVEZWNsYXJhdGlvbjo6cHV0RGVsZWdhdGUoRXhlY1N0YXRlKiBleGVjLCBjb25zdCBJZGVudGlm
aWVyJiBwcm9wZXJ0eU5hbWUsIEpTVmFsdWUgdmFsdWUsIFB1dFByb3BlcnR5U2xvdCYpCitib29s
IEpTQ1NTU3R5bGVEZWNsYXJhdGlvbjo6cHV0RGVsZWdhdGUoRXhlY1N0YXRlKiBleGVjLCBQcm9w
ZXJ0eU5hbWUgcHJvcGVydHlOYW1lLCBKU1ZhbHVlIHZhbHVlLCBQdXRQcm9wZXJ0eVNsb3QmKQog
ewogICAgIENTU1Byb3BlcnR5SW5mbyBwcm9wZXJ0eUluZm8gPSBjc3NQcm9wZXJ0eUlERm9ySlND
U1NQcm9wZXJ0eU5hbWUocHJvcGVydHlOYW1lKTsKICAgICBpZiAoIXByb3BlcnR5SW5mby5wcm9w
ZXJ0eUlEKQpJbmRleDogU291cmNlL1dlYkNvcmUvYmluZGluZ3MvanMvSlNET01CaW5kaW5nLmNw
cAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2ViQ29yZS9iaW5kaW5ncy9qcy9KU0RPTUJpbmRpbmcu
Y3BwCShyZXZpc2lvbiAxMTY2NjcpCisrKyBTb3VyY2UvV2ViQ29yZS9iaW5kaW5ncy9qcy9KU0RP
TUJpbmRpbmcuY3BwCSh3b3JraW5nIGNvcHkpCkBAIC0xMDcsMTEgKzEwNywxMSBAQCBKU1ZhbHVl
IGpzU3RyaW5nT3JGYWxzZShFeGVjU3RhdGUqIGV4ZWMsCiAgICAgcmV0dXJuIGpzU3RyaW5nKGV4
ZWMsIHVybC5zdHJpbmcoKSk7CiB9CiAKLUF0b21pY1N0cmluZ0ltcGwqIGZpbmRBdG9taWNTdHJp
bmcoY29uc3QgSWRlbnRpZmllciYgaWRlbnRpZmllcikKK0F0b21pY1N0cmluZ0ltcGwqIGZpbmRB
dG9taWNTdHJpbmcoUHJvcGVydHlOYW1lIHByb3BlcnR5TmFtZSkKIHsKLSAgICBpZiAoaWRlbnRp
Zmllci5pc051bGwoKSkKKyAgICBTdHJpbmdJbXBsKiBpbXBsID0gcHJvcGVydHlOYW1lLmltcGwo
KTsKKyAgICBpZiAoIWltcGwpCiAgICAgICAgIHJldHVybiAwOwotICAgIFN0cmluZ0ltcGwqIGlt
cGwgPSBpZGVudGlmaWVyLmltcGwoKTsKICAgICBBU1NFUlQoaW1wbC0+ZXhpc3RpbmdIYXNoKCkp
OwogICAgIHJldHVybiBBdG9taWNTdHJpbmc6OmZpbmQoaW1wbC0+Y2hhcmFjdGVycygpLCBpbXBs
LT5sZW5ndGgoKSwgaW1wbC0+ZXhpc3RpbmdIYXNoKCkpOwogfQpAQCAtMjQzLDkgKzI0Myw5IEBA
IHZvaWQgcHJpbnRFcnJvck1lc3NhZ2VGb3JGcmFtZShGcmFtZSogZnIKICAgICBmcmFtZS0+ZG9t
V2luZG93KCktPnByaW50RXJyb3JNZXNzYWdlKG1lc3NhZ2UpOwogfQogCi1KU1ZhbHVlIG9iamVj
dFRvU3RyaW5nRnVuY3Rpb25HZXR0ZXIoRXhlY1N0YXRlKiBleGVjLCBKU1ZhbHVlLCBjb25zdCBJ
ZGVudGlmaWVyJiBwcm9wZXJ0eU5hbWUpCitKU1ZhbHVlIG9iamVjdFRvU3RyaW5nRnVuY3Rpb25H
ZXR0ZXIoRXhlY1N0YXRlKiBleGVjLCBKU1ZhbHVlLCBQcm9wZXJ0eU5hbWUgcHJvcGVydHlOYW1l
KQogewotICAgIHJldHVybiBKU0Z1bmN0aW9uOjpjcmVhdGUoZXhlYywgZXhlYy0+bGV4aWNhbEds
b2JhbE9iamVjdCgpLCAwLCBwcm9wZXJ0eU5hbWUsIG9iamVjdFByb3RvRnVuY1RvU3RyaW5nKTsK
KyAgICByZXR1cm4gSlNGdW5jdGlvbjo6Y3JlYXRlKGV4ZWMsIGV4ZWMtPmxleGljYWxHbG9iYWxP
YmplY3QoKSwgMCwgcHJvcGVydHlOYW1lLmltcGwoKSwgb2JqZWN0UHJvdG9GdW5jVG9TdHJpbmcp
OwogfQogCiBTdHJ1Y3R1cmUqIGdldENhY2hlZERPTVN0cnVjdHVyZShKU0RPTUdsb2JhbE9iamVj
dCogZ2xvYmFsT2JqZWN0LCBjb25zdCBDbGFzc0luZm8qIGNsYXNzSW5mbykKSW5kZXg6IFNvdXJj
ZS9XZWJDb3JlL2JpbmRpbmdzL2pzL0pTRE9NQmluZGluZy5oCj09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJj
ZS9XZWJDb3JlL2JpbmRpbmdzL2pzL0pTRE9NQmluZGluZy5oCShyZXZpc2lvbiAxMTY2NjcpCisr
KyBTb3VyY2UvV2ViQ29yZS9iaW5kaW5ncy9qcy9KU0RPTUJpbmRpbmcuaAkod29ya2luZyBjb3B5
KQpAQCAtMjUyLDEzICsyNTIsMTMgQEAgZW51bSBQYXJhbWV0ZXJEZWZhdWx0UG9saWN5IHsKICAg
ICAvLyBvYmplY3QsIHRvIGxldCB0aGUgZW5naW5lIGtub3cgdGhhdCBjb2xsZWN0aW5nIHRoZSBK
U1N0cmluZyB3cmFwcGVyIGlzIHVubGlrZWx5IHRvIHNhdmUgbWVtb3J5LgogICAgIEpTQzo6SlNW
YWx1ZSBqc093bmVkU3RyaW5nT3JOdWxsKEpTQzo6RXhlY1N0YXRlKiwgY29uc3QgU3RyaW5nJik7
IAogCi0gICAgU3RyaW5nIGlkZW50aWZpZXJUb1N0cmluZyhjb25zdCBKU0M6OklkZW50aWZpZXIm
KTsKKyAgICBTdHJpbmcgcHJvcGVydHlOYW1lVG9TdHJpbmcoSlNDOjpQcm9wZXJ0eU5hbWUpOwog
ICAgIFN0cmluZyB1c3RyaW5nVG9TdHJpbmcoY29uc3QgSlNDOjpVU3RyaW5nJik7CiAgICAgSlND
OjpVU3RyaW5nIHN0cmluZ1RvVVN0cmluZyhjb25zdCBTdHJpbmcmKTsKIAotICAgIEF0b21pY1N0
cmluZyBpZGVudGlmaWVyVG9BdG9taWNTdHJpbmcoY29uc3QgSlNDOjpJZGVudGlmaWVyJik7Cisg
ICAgQXRvbWljU3RyaW5nIHByb3BlcnR5TmFtZVRvQXRvbWljU3RyaW5nKEpTQzo6UHJvcGVydHlO
YW1lKTsKICAgICBBdG9taWNTdHJpbmcgdXN0cmluZ1RvQXRvbWljU3RyaW5nKGNvbnN0IEpTQzo6
VVN0cmluZyYpOwotICAgIEF0b21pY1N0cmluZ0ltcGwqIGZpbmRBdG9taWNTdHJpbmcoY29uc3Qg
SlNDOjpJZGVudGlmaWVyJik7CisgICAgQXRvbWljU3RyaW5nSW1wbCogZmluZEF0b21pY1N0cmlu
ZyhKU0M6OlByb3BlcnR5TmFtZSk7CiAKICAgICBTdHJpbmcgdmFsdWVUb1N0cmluZ1dpdGhOdWxs
Q2hlY2soSlNDOjpFeGVjU3RhdGUqLCBKU0M6OkpTVmFsdWUpOyAvLyBudWxsIGlmIHRoZSB2YWx1
ZSBpcyBudWxsCiAgICAgU3RyaW5nIHZhbHVlVG9TdHJpbmdXaXRoVW5kZWZpbmVkT3JOdWxsQ2hl
Y2soSlNDOjpFeGVjU3RhdGUqLCBKU0M6OkpTVmFsdWUpOyAvLyBudWxsIGlmIHRoZSB2YWx1ZSBp
cyBudWxsIG9yIHVuZGVmaW5lZApAQCAtMzM3LDcgKzMzNyw3IEBAIGVudW0gUGFyYW1ldGVyRGVm
YXVsdFBvbGljeSB7CiAgICAgRE9NV2luZG93KiBmaXJzdERPTVdpbmRvdyhKU0M6OkV4ZWNTdGF0
ZSopOwogCiAgICAgdm9pZCBwcmludEVycm9yTWVzc2FnZUZvckZyYW1lKEZyYW1lKiwgY29uc3Qg
U3RyaW5nJiBtZXNzYWdlKTsKLSAgICBKU0M6OkpTVmFsdWUgb2JqZWN0VG9TdHJpbmdGdW5jdGlv
bkdldHRlcihKU0M6OkV4ZWNTdGF0ZSosIEpTQzo6SlNWYWx1ZSwgY29uc3QgSlNDOjpJZGVudGlm
aWVyJiBwcm9wZXJ0eU5hbWUpOworICAgIEpTQzo6SlNWYWx1ZSBvYmplY3RUb1N0cmluZ0Z1bmN0
aW9uR2V0dGVyKEpTQzo6RXhlY1N0YXRlKiwgSlNDOjpKU1ZhbHVlLCBKU0M6OlByb3BlcnR5TmFt
ZSBwcm9wZXJ0eU5hbWUpOwogCiAgICAgaW5saW5lIEpTQzo6SlNWYWx1ZSBqc1N0cmluZyhKU0M6
OkV4ZWNTdGF0ZSogZXhlYywgY29uc3QgU3RyaW5nJiBzKQogICAgIHsKQEAgLTM3MSw5ICszNzEs
OSBAQCBlbnVtIFBhcmFtZXRlckRlZmF1bHRQb2xpY3kgewogICAgICAgICByZXR1cm4gSlNDOjpV
U3RyaW5nKHMuaW1wbCgpKTsKICAgICB9CiAKLSAgICBpbmxpbmUgU3RyaW5nIGlkZW50aWZpZXJU
b1N0cmluZyhjb25zdCBKU0M6OklkZW50aWZpZXImIGkpCisgICAgaW5saW5lIFN0cmluZyBwcm9w
ZXJ0eU5hbWVUb1N0cmluZyhKU0M6OlByb3BlcnR5TmFtZSBwcm9wZXJ0eU5hbWUpCiAgICAgewot
ICAgICAgICByZXR1cm4gaS5pbXBsKCk7CisgICAgICAgIHJldHVybiBwcm9wZXJ0eU5hbWUuaW1w
bCgpOwogICAgIH0KIAogICAgIGlubGluZSBBdG9taWNTdHJpbmcgdXN0cmluZ1RvQXRvbWljU3Ry
aW5nKGNvbnN0IEpTQzo6VVN0cmluZyYgdSkKQEAgLTM4MSw5ICszODEsOSBAQCBlbnVtIFBhcmFt
ZXRlckRlZmF1bHRQb2xpY3kgewogICAgICAgICByZXR1cm4gQXRvbWljU3RyaW5nKHUuaW1wbCgp
KTsKICAgICB9CiAKLSAgICBpbmxpbmUgQXRvbWljU3RyaW5nIGlkZW50aWZpZXJUb0F0b21pY1N0
cmluZyhjb25zdCBKU0M6OklkZW50aWZpZXImIGlkZW50aWZpZXIpCisgICAgaW5saW5lIEF0b21p
Y1N0cmluZyBwcm9wZXJ0eU5hbWVUb0F0b21pY1N0cmluZyhKU0M6OlByb3BlcnR5TmFtZSBwcm9w
ZXJ0eU5hbWUpCiAgICAgewotICAgICAgICByZXR1cm4gQXRvbWljU3RyaW5nKGlkZW50aWZpZXIu
aW1wbCgpKTsKKyAgICAgICAgcmV0dXJuIEF0b21pY1N0cmluZyhwcm9wZXJ0eU5hbWUuaW1wbCgp
KTsKICAgICB9CiAKICAgICBpbmxpbmUgVmVjdG9yPHVuc2lnbmVkIGxvbmc+IGpzVW5zaWduZWRM
b25nQXJyYXlUb1ZlY3RvcihKU0M6OkV4ZWNTdGF0ZSogZXhlYywgSlNDOjpKU1ZhbHVlIHZhbHVl
KQpJbmRleDogU291cmNlL1dlYkNvcmUvYmluZGluZ3MvanMvSlNET01NaW1lVHlwZUFycmF5Q3Vz
dG9tLmNwcAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2ViQ29yZS9iaW5kaW5ncy9qcy9KU0RPTU1p
bWVUeXBlQXJyYXlDdXN0b20uY3BwCShyZXZpc2lvbiAxMTY2NjcpCisrKyBTb3VyY2UvV2ViQ29y
ZS9iaW5kaW5ncy9qcy9KU0RPTU1pbWVUeXBlQXJyYXlDdXN0b20uY3BwCSh3b3JraW5nIGNvcHkp
CkBAIC0yOCwxNSArMjgsMTUgQEAgbmFtZXNwYWNlIFdlYkNvcmUgewogCiB1c2luZyBuYW1lc3Bh
Y2UgSlNDOwogCi1ib29sIEpTRE9NTWltZVR5cGVBcnJheTo6Y2FuR2V0SXRlbXNGb3JOYW1lKEV4
ZWNTdGF0ZSosIERPTU1pbWVUeXBlQXJyYXkqIG1pbWVUeXBlQXJyYXksIGNvbnN0IElkZW50aWZp
ZXImIHByb3BlcnR5TmFtZSkKK2Jvb2wgSlNET01NaW1lVHlwZUFycmF5OjpjYW5HZXRJdGVtc0Zv
ck5hbWUoRXhlY1N0YXRlKiwgRE9NTWltZVR5cGVBcnJheSogbWltZVR5cGVBcnJheSwgUHJvcGVy
dHlOYW1lIHByb3BlcnR5TmFtZSkKIHsKLSAgICByZXR1cm4gbWltZVR5cGVBcnJheS0+Y2FuR2V0
SXRlbXNGb3JOYW1lKGlkZW50aWZpZXJUb0F0b21pY1N0cmluZyhwcm9wZXJ0eU5hbWUpKTsKKyAg
ICByZXR1cm4gbWltZVR5cGVBcnJheS0+Y2FuR2V0SXRlbXNGb3JOYW1lKHByb3BlcnR5TmFtZVRv
QXRvbWljU3RyaW5nKHByb3BlcnR5TmFtZSkpOwogfQogCi1KU1ZhbHVlIEpTRE9NTWltZVR5cGVB
cnJheTo6bmFtZUdldHRlcihFeGVjU3RhdGUqIGV4ZWMsIEpTVmFsdWUgc2xvdEJhc2UsIGNvbnN0
IElkZW50aWZpZXImIHByb3BlcnR5TmFtZSkKK0pTVmFsdWUgSlNET01NaW1lVHlwZUFycmF5Ojpu
YW1lR2V0dGVyKEV4ZWNTdGF0ZSogZXhlYywgSlNWYWx1ZSBzbG90QmFzZSwgUHJvcGVydHlOYW1l
IHByb3BlcnR5TmFtZSkKIHsKICAgICBKU0RPTU1pbWVUeXBlQXJyYXkqIHRoaXNPYmogPSBqc0Nh
c3Q8SlNET01NaW1lVHlwZUFycmF5Kj4oYXNPYmplY3Qoc2xvdEJhc2UpKTsKLSAgICByZXR1cm4g
dG9KUyhleGVjLCB0aGlzT2JqLT5nbG9iYWxPYmplY3QoKSwgdGhpc09iai0+aW1wbCgpLT5uYW1l
ZEl0ZW0oaWRlbnRpZmllclRvQXRvbWljU3RyaW5nKHByb3BlcnR5TmFtZSkpKTsKKyAgICByZXR1
cm4gdG9KUyhleGVjLCB0aGlzT2JqLT5nbG9iYWxPYmplY3QoKSwgdGhpc09iai0+aW1wbCgpLT5u
YW1lZEl0ZW0ocHJvcGVydHlOYW1lVG9BdG9taWNTdHJpbmcocHJvcGVydHlOYW1lKSkpOwogfQog
CiB9IC8vIG5hbWVzcGFjZSBXZWJDb3JlCkluZGV4OiBTb3VyY2UvV2ViQ29yZS9iaW5kaW5ncy9q
cy9KU0RPTVBsdWdpbkFycmF5Q3VzdG9tLmNwcAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2ViQ29y
ZS9iaW5kaW5ncy9qcy9KU0RPTVBsdWdpbkFycmF5Q3VzdG9tLmNwcAkocmV2aXNpb24gMTE2NjY3
KQorKysgU291cmNlL1dlYkNvcmUvYmluZGluZ3MvanMvSlNET01QbHVnaW5BcnJheUN1c3RvbS5j
cHAJKHdvcmtpbmcgY29weSkKQEAgLTI4LDE1ICsyOCwxNSBAQCBuYW1lc3BhY2UgV2ViQ29yZSB7
CiAKIHVzaW5nIG5hbWVzcGFjZSBKU0M7CiAKLWJvb2wgSlNET01QbHVnaW5BcnJheTo6Y2FuR2V0
SXRlbXNGb3JOYW1lKEV4ZWNTdGF0ZSosIERPTVBsdWdpbkFycmF5KiBwbHVnaW5BcnJheSwgY29u
c3QgSWRlbnRpZmllciYgcHJvcGVydHlOYW1lKQorYm9vbCBKU0RPTVBsdWdpbkFycmF5OjpjYW5H
ZXRJdGVtc0Zvck5hbWUoRXhlY1N0YXRlKiwgRE9NUGx1Z2luQXJyYXkqIHBsdWdpbkFycmF5LCBQ
cm9wZXJ0eU5hbWUgcHJvcGVydHlOYW1lKQogewotICAgIHJldHVybiBwbHVnaW5BcnJheS0+Y2Fu
R2V0SXRlbXNGb3JOYW1lKGlkZW50aWZpZXJUb0F0b21pY1N0cmluZyhwcm9wZXJ0eU5hbWUpKTsK
KyAgICByZXR1cm4gcGx1Z2luQXJyYXktPmNhbkdldEl0ZW1zRm9yTmFtZShwcm9wZXJ0eU5hbWVU
b0F0b21pY1N0cmluZyhwcm9wZXJ0eU5hbWUpKTsKIH0KIAotSlNWYWx1ZSBKU0RPTVBsdWdpbkFy
cmF5OjpuYW1lR2V0dGVyKEV4ZWNTdGF0ZSogZXhlYywgSlNWYWx1ZSBzbG90QmFzZSwgY29uc3Qg
SWRlbnRpZmllciYgcHJvcGVydHlOYW1lKQorSlNWYWx1ZSBKU0RPTVBsdWdpbkFycmF5OjpuYW1l
R2V0dGVyKEV4ZWNTdGF0ZSogZXhlYywgSlNWYWx1ZSBzbG90QmFzZSwgUHJvcGVydHlOYW1lIHBy
b3BlcnR5TmFtZSkKIHsKICAgICBKU0RPTVBsdWdpbkFycmF5KiB0aGlzT2JqID0ganNDYXN0PEpT
RE9NUGx1Z2luQXJyYXkqPihhc09iamVjdChzbG90QmFzZSkpOwotICAgIHJldHVybiB0b0pTKGV4
ZWMsIHRoaXNPYmotPmdsb2JhbE9iamVjdCgpLCB0aGlzT2JqLT5pbXBsKCktPm5hbWVkSXRlbShp
ZGVudGlmaWVyVG9BdG9taWNTdHJpbmcocHJvcGVydHlOYW1lKSkpOworICAgIHJldHVybiB0b0pT
KGV4ZWMsIHRoaXNPYmotPmdsb2JhbE9iamVjdCgpLCB0aGlzT2JqLT5pbXBsKCktPm5hbWVkSXRl
bShwcm9wZXJ0eU5hbWVUb0F0b21pY1N0cmluZyhwcm9wZXJ0eU5hbWUpKSk7CiB9CiAKIH0gLy8g
bmFtZXNwYWNlIFdlYkNvcmUKSW5kZXg6IFNvdXJjZS9XZWJDb3JlL2JpbmRpbmdzL2pzL0pTRE9N
UGx1Z2luQ3VzdG9tLmNwcAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2ViQ29yZS9iaW5kaW5ncy9q
cy9KU0RPTVBsdWdpbkN1c3RvbS5jcHAJKHJldmlzaW9uIDExNjY2NykKKysrIFNvdXJjZS9XZWJD
b3JlL2JpbmRpbmdzL2pzL0pTRE9NUGx1Z2luQ3VzdG9tLmNwcAkod29ya2luZyBjb3B5KQpAQCAt
MjcsMTUgKzI3LDE1IEBAIG5hbWVzcGFjZSBXZWJDb3JlIHsKIAogdXNpbmcgbmFtZXNwYWNlIEpT
QzsKIAotYm9vbCBKU0RPTVBsdWdpbjo6Y2FuR2V0SXRlbXNGb3JOYW1lKEV4ZWNTdGF0ZSosIERP
TVBsdWdpbiogcGx1Z2luLCBjb25zdCBJZGVudGlmaWVyJiBwcm9wZXJ0eU5hbWUpCitib29sIEpT
RE9NUGx1Z2luOjpjYW5HZXRJdGVtc0Zvck5hbWUoRXhlY1N0YXRlKiwgRE9NUGx1Z2luKiBwbHVn
aW4sIFByb3BlcnR5TmFtZSBwcm9wZXJ0eU5hbWUpCiB7Ci0gICAgcmV0dXJuIHBsdWdpbi0+Y2Fu
R2V0SXRlbXNGb3JOYW1lKGlkZW50aWZpZXJUb0F0b21pY1N0cmluZyhwcm9wZXJ0eU5hbWUpKTsK
KyAgICByZXR1cm4gcGx1Z2luLT5jYW5HZXRJdGVtc0Zvck5hbWUocHJvcGVydHlOYW1lVG9BdG9t
aWNTdHJpbmcocHJvcGVydHlOYW1lKSk7CiB9CiAKLUpTVmFsdWUgSlNET01QbHVnaW46Om5hbWVH
ZXR0ZXIoRXhlY1N0YXRlKiBleGVjLCBKU1ZhbHVlIHNsb3RCYXNlLCBjb25zdCBJZGVudGlmaWVy
JiBwcm9wZXJ0eU5hbWUpCitKU1ZhbHVlIEpTRE9NUGx1Z2luOjpuYW1lR2V0dGVyKEV4ZWNTdGF0
ZSogZXhlYywgSlNWYWx1ZSBzbG90QmFzZSwgUHJvcGVydHlOYW1lIHByb3BlcnR5TmFtZSkKIHsK
ICAgICBKU0RPTVBsdWdpbiogdGhpc09iaiA9IGpzQ2FzdDxKU0RPTVBsdWdpbio+KGFzT2JqZWN0
KHNsb3RCYXNlKSk7Ci0gICAgcmV0dXJuIHRvSlMoZXhlYywgdGhpc09iai0+Z2xvYmFsT2JqZWN0
KCksIHRoaXNPYmotPmltcGwoKS0+bmFtZWRJdGVtKGlkZW50aWZpZXJUb0F0b21pY1N0cmluZyhw
cm9wZXJ0eU5hbWUpKSk7CisgICAgcmV0dXJuIHRvSlMoZXhlYywgdGhpc09iai0+Z2xvYmFsT2Jq
ZWN0KCksIHRoaXNPYmotPmltcGwoKS0+bmFtZWRJdGVtKHByb3BlcnR5TmFtZVRvQXRvbWljU3Ry
aW5nKHByb3BlcnR5TmFtZSkpKTsKIH0KIAogfSAvLyBuYW1lc3BhY2UgV2ViQ29yZQpJbmRleDog
U291cmNlL1dlYkNvcmUvYmluZGluZ3MvanMvSlNET01TdHJpbmdNYXBDdXN0b20uY3BwCj09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT0KLS0tIFNvdXJjZS9XZWJDb3JlL2JpbmRpbmdzL2pzL0pTRE9NU3RyaW5nTWFwQ3VzdG9t
LmNwcAkocmV2aXNpb24gMTE2NjY3KQorKysgU291cmNlL1dlYkNvcmUvYmluZGluZ3MvanMvSlNE
T01TdHJpbmdNYXBDdXN0b20uY3BwCSh3b3JraW5nIGNvcHkpCkBAIC0zNSwxNSArMzUsMTUgQEAg
dXNpbmcgbmFtZXNwYWNlIEpTQzsKIAogbmFtZXNwYWNlIFdlYkNvcmUgewogCi1ib29sIEpTRE9N
U3RyaW5nTWFwOjpjYW5HZXRJdGVtc0Zvck5hbWUoRXhlY1N0YXRlKiwgRE9NU3RyaW5nTWFwKiBp
bXBsLCBjb25zdCBJZGVudGlmaWVyJiBwcm9wZXJ0eU5hbWUpCitib29sIEpTRE9NU3RyaW5nTWFw
OjpjYW5HZXRJdGVtc0Zvck5hbWUoRXhlY1N0YXRlKiwgRE9NU3RyaW5nTWFwKiBpbXBsLCBQcm9w
ZXJ0eU5hbWUgcHJvcGVydHlOYW1lKQogewotICAgIHJldHVybiBpbXBsLT5jb250YWlucyhpZGVu
dGlmaWVyVG9BdG9taWNTdHJpbmcocHJvcGVydHlOYW1lKSk7CisgICAgcmV0dXJuIGltcGwtPmNv
bnRhaW5zKHByb3BlcnR5TmFtZVRvQXRvbWljU3RyaW5nKHByb3BlcnR5TmFtZSkpOwogfQogCi1K
U1ZhbHVlIEpTRE9NU3RyaW5nTWFwOjpuYW1lR2V0dGVyKEV4ZWNTdGF0ZSogZXhlYywgSlNWYWx1
ZSBzbG90QmFzZSwgY29uc3QgSWRlbnRpZmllciYgcHJvcGVydHlOYW1lKQorSlNWYWx1ZSBKU0RP
TVN0cmluZ01hcDo6bmFtZUdldHRlcihFeGVjU3RhdGUqIGV4ZWMsIEpTVmFsdWUgc2xvdEJhc2Us
IFByb3BlcnR5TmFtZSBwcm9wZXJ0eU5hbWUpCiB7CiAgICAgSlNET01TdHJpbmdNYXAqIHRoaXNP
YmogPSBqc0Nhc3Q8SlNET01TdHJpbmdNYXAqPihhc09iamVjdChzbG90QmFzZSkpOwotICAgIHJl
dHVybiBqc1N0cmluZyhleGVjLCB0aGlzT2JqLT5pbXBsKCktPml0ZW0oaWRlbnRpZmllclRvQXRv
bWljU3RyaW5nKHByb3BlcnR5TmFtZSkpKTsKKyAgICByZXR1cm4ganNTdHJpbmcoZXhlYywgdGhp
c09iai0+aW1wbCgpLT5pdGVtKHByb3BlcnR5TmFtZVRvQXRvbWljU3RyaW5nKHByb3BlcnR5TmFt
ZSkpKTsKIH0KIAogdm9pZCBKU0RPTVN0cmluZ01hcDo6Z2V0T3duUHJvcGVydHlOYW1lcyhKU09i
amVjdCogb2JqZWN0LCBFeGVjU3RhdGUqIGV4ZWMsIFByb3BlcnR5TmFtZUFycmF5JiBwcm9wZXJ0
eU5hbWVzLCBFbnVtZXJhdGlvbk1vZGUgbW9kZSkKQEAgLTU4LDEwICs1OCwxMCBAQCB2b2lkIEpT
RE9NU3RyaW5nTWFwOjpnZXRPd25Qcm9wZXJ0eU5hbWVzCiAgICAgQmFzZTo6Z2V0T3duUHJvcGVy
dHlOYW1lcyh0aGlzT2JqZWN0LCBleGVjLCBwcm9wZXJ0eU5hbWVzLCBtb2RlKTsKIH0KIAotYm9v
bCBKU0RPTVN0cmluZ01hcDo6ZGVsZXRlUHJvcGVydHkoSlNDZWxsKiBjZWxsLCBFeGVjU3RhdGUq
IGV4ZWMsIGNvbnN0IElkZW50aWZpZXImIHByb3BlcnR5TmFtZSkKK2Jvb2wgSlNET01TdHJpbmdN
YXA6OmRlbGV0ZVByb3BlcnR5KEpTQ2VsbCogY2VsbCwgRXhlY1N0YXRlKiBleGVjLCBQcm9wZXJ0
eU5hbWUgcHJvcGVydHlOYW1lKQogewogICAgIEpTRE9NU3RyaW5nTWFwKiB0aGlzT2JqZWN0ID0g
anNDYXN0PEpTRE9NU3RyaW5nTWFwKj4oY2VsbCk7Ci0gICAgQXRvbWljU3RyaW5nIHN0cmluZ05h
bWUgPSBpZGVudGlmaWVyVG9BdG9taWNTdHJpbmcocHJvcGVydHlOYW1lKTsKKyAgICBBdG9taWNT
dHJpbmcgc3RyaW5nTmFtZSA9IHByb3BlcnR5TmFtZVRvQXRvbWljU3RyaW5nKHByb3BlcnR5TmFt
ZSk7CiAgICAgaWYgKCF0aGlzT2JqZWN0LT5tX2ltcGwtPmNvbnRhaW5zKHN0cmluZ05hbWUpKQog
ICAgICAgICByZXR1cm4gZmFsc2U7CiAgICAgRXhjZXB0aW9uQ29kZSBlYyA9IDA7CkBAIC03MCwx
MyArNzAsMTMgQEAgYm9vbCBKU0RPTVN0cmluZ01hcDo6ZGVsZXRlUHJvcGVydHkoSlNDZQogICAg
IHJldHVybiAhZWM7CiB9CiAKLWJvb2wgSlNET01TdHJpbmdNYXA6OnB1dERlbGVnYXRlKEV4ZWNT
dGF0ZSogZXhlYywgY29uc3QgSWRlbnRpZmllciYgcHJvcGVydHlOYW1lLCBKU1ZhbHVlIHZhbHVl
LCBQdXRQcm9wZXJ0eVNsb3QmKQorYm9vbCBKU0RPTVN0cmluZ01hcDo6cHV0RGVsZWdhdGUoRXhl
Y1N0YXRlKiBleGVjLCBQcm9wZXJ0eU5hbWUgcHJvcGVydHlOYW1lLCBKU1ZhbHVlIHZhbHVlLCBQ
dXRQcm9wZXJ0eVNsb3QmKQogewogICAgIFN0cmluZyBzdHJpbmdWYWx1ZSA9IHVzdHJpbmdUb1N0
cmluZyh2YWx1ZS50b1N0cmluZyhleGVjKS0+dmFsdWUoZXhlYykpOwogICAgIGlmIChleGVjLT5o
YWRFeGNlcHRpb24oKSkKICAgICAgICAgcmV0dXJuIGZhbHNlOwogICAgIEV4Y2VwdGlvbkNvZGUg
ZWMgPSAwOwotICAgIGltcGwoKS0+c2V0SXRlbShpZGVudGlmaWVyVG9TdHJpbmcocHJvcGVydHlO
YW1lKSwgc3RyaW5nVmFsdWUsIGVjKTsKKyAgICBpbXBsKCktPnNldEl0ZW0ocHJvcGVydHlOYW1l
VG9TdHJpbmcocHJvcGVydHlOYW1lKSwgc3RyaW5nVmFsdWUsIGVjKTsKICAgICBzZXRET01FeGNl
cHRpb24oZXhlYywgZWMpOwogICAgIHJldHVybiAhZWM7CiB9CkluZGV4OiBTb3VyY2UvV2ViQ29y
ZS9iaW5kaW5ncy9qcy9KU0RPTVdpbmRvd0N1c3RvbS5jcHAKPT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNl
L1dlYkNvcmUvYmluZGluZ3MvanMvSlNET01XaW5kb3dDdXN0b20uY3BwCShyZXZpc2lvbiAxMTY2
NjcpCisrKyBTb3VyY2UvV2ViQ29yZS9iaW5kaW5ncy9qcy9KU0RPTVdpbmRvd0N1c3RvbS5jcHAJ
KHdvcmtpbmcgY29weSkKQEAgLTkyLDE0ICs5MiwxNCBAQCB2b2lkIEpTRE9NV2luZG93Ojp2aXNp
dENoaWxkcmVuKEpTQ2VsbCogCiB9CiAKIHRlbXBsYXRlPE5hdGl2ZUZ1bmN0aW9uIG5hdGl2ZUZ1
bmN0aW9uLCBpbnQgbGVuZ3RoPgotSlNWYWx1ZSBub25DYWNoaW5nU3RhdGljRnVuY3Rpb25HZXR0
ZXIoRXhlY1N0YXRlKiBleGVjLCBKU1ZhbHVlLCBjb25zdCBJZGVudGlmaWVyJiBwcm9wZXJ0eU5h
bWUpCitKU1ZhbHVlIG5vbkNhY2hpbmdTdGF0aWNGdW5jdGlvbkdldHRlcihFeGVjU3RhdGUqIGV4
ZWMsIEpTVmFsdWUsIFByb3BlcnR5TmFtZSBwcm9wZXJ0eU5hbWUpCiB7Ci0gICAgcmV0dXJuIEpT
RnVuY3Rpb246OmNyZWF0ZShleGVjLCBleGVjLT5sZXhpY2FsR2xvYmFsT2JqZWN0KCksIGxlbmd0
aCwgcHJvcGVydHlOYW1lLCBuYXRpdmVGdW5jdGlvbik7CisgICAgcmV0dXJuIEpTRnVuY3Rpb246
OmNyZWF0ZShleGVjLCBleGVjLT5sZXhpY2FsR2xvYmFsT2JqZWN0KCksIGxlbmd0aCwgcHJvcGVy
dHlOYW1lLmltcGwoKSwgbmF0aXZlRnVuY3Rpb24pOwogfQogCi1zdGF0aWMgSlNWYWx1ZSBjaGls
ZEZyYW1lR2V0dGVyKEV4ZWNTdGF0ZSogZXhlYywgSlNWYWx1ZSBzbG90QmFzZSwgY29uc3QgSWRl
bnRpZmllciYgcHJvcGVydHlOYW1lKQorc3RhdGljIEpTVmFsdWUgY2hpbGRGcmFtZUdldHRlcihF
eGVjU3RhdGUqIGV4ZWMsIEpTVmFsdWUgc2xvdEJhc2UsIFByb3BlcnR5TmFtZSBwcm9wZXJ0eU5h
bWUpCiB7Ci0gICAgcmV0dXJuIHRvSlMoZXhlYywganNDYXN0PEpTRE9NV2luZG93Kj4oYXNPYmpl
Y3Qoc2xvdEJhc2UpKS0+aW1wbCgpLT5mcmFtZSgpLT50cmVlKCktPnNjb3BlZENoaWxkKGlkZW50
aWZpZXJUb0F0b21pY1N0cmluZyhwcm9wZXJ0eU5hbWUpKS0+ZG9tV2luZG93KCkpOworICAgIHJl
dHVybiB0b0pTKGV4ZWMsIGpzQ2FzdDxKU0RPTVdpbmRvdyo+KGFzT2JqZWN0KHNsb3RCYXNlKSkt
PmltcGwoKS0+ZnJhbWUoKS0+dHJlZSgpLT5zY29wZWRDaGlsZChwcm9wZXJ0eU5hbWVUb0F0b21p
Y1N0cmluZyhwcm9wZXJ0eU5hbWUpKS0+ZG9tV2luZG93KCkpOwogfQogCiBzdGF0aWMgSlNWYWx1
ZSBpbmRleEdldHRlcihFeGVjU3RhdGUqIGV4ZWMsIEpTVmFsdWUgc2xvdEJhc2UsIHVuc2lnbmVk
IGluZGV4KQpAQCAtMTA3LDcgKzEwNyw3IEBAIHN0YXRpYyBKU1ZhbHVlIGluZGV4R2V0dGVyKEV4
ZWNTdGF0ZSogZXgKICAgICByZXR1cm4gdG9KUyhleGVjLCBqc0Nhc3Q8SlNET01XaW5kb3cqPihh
c09iamVjdChzbG90QmFzZSkpLT5pbXBsKCktPmZyYW1lKCktPnRyZWUoKS0+c2NvcGVkQ2hpbGQo
aW5kZXgpLT5kb21XaW5kb3coKSk7CiB9CiAKLXN0YXRpYyBKU1ZhbHVlIG5hbWVkSXRlbUdldHRl
cihFeGVjU3RhdGUqIGV4ZWMsIEpTVmFsdWUgc2xvdEJhc2UsIGNvbnN0IElkZW50aWZpZXImIHBy
b3BlcnR5TmFtZSkKK3N0YXRpYyBKU1ZhbHVlIG5hbWVkSXRlbUdldHRlcihFeGVjU3RhdGUqIGV4
ZWMsIEpTVmFsdWUgc2xvdEJhc2UsIFByb3BlcnR5TmFtZSBwcm9wZXJ0eU5hbWUpCiB7CiAgICAg
SlNET01XaW5kb3dCYXNlKiB0aGlzT2JqID0ganNDYXN0PEpTRE9NV2luZG93Kj4oYXNPYmplY3Qo
c2xvdEJhc2UpKTsKICAgICBEb2N1bWVudCogZG9jdW1lbnQgPSB0aGlzT2JqLT5pbXBsKCktPmZy
YW1lKCktPmRvY3VtZW50KCk7CkBAIC0xMTYsMTMgKzExNiwxMyBAQCBzdGF0aWMgSlNWYWx1ZSBu
YW1lZEl0ZW1HZXR0ZXIoRXhlY1N0YXRlCiAgICAgQVNTRVJUKGRvY3VtZW50KTsKICAgICBBU1NF
UlQoZG9jdW1lbnQtPmlzSFRNTERvY3VtZW50KCkpOwogCi0gICAgSFRNTENvbGxlY3Rpb24qIGNv
bGxlY3Rpb24gPSBkb2N1bWVudC0+d2luZG93TmFtZWRJdGVtcyhpZGVudGlmaWVyVG9BdG9taWNT
dHJpbmcocHJvcGVydHlOYW1lKSk7CisgICAgSFRNTENvbGxlY3Rpb24qIGNvbGxlY3Rpb24gPSBk
b2N1bWVudC0+d2luZG93TmFtZWRJdGVtcyhwcm9wZXJ0eU5hbWVUb0F0b21pY1N0cmluZyhwcm9w
ZXJ0eU5hbWUpKTsKICAgICBpZiAoY29sbGVjdGlvbi0+bGVuZ3RoKCkgPT0gMSkKICAgICAgICAg
cmV0dXJuIHRvSlMoZXhlYywgdGhpc09iaiwgY29sbGVjdGlvbi0+Zmlyc3RJdGVtKCkpOwogICAg
IHJldHVybiB0b0pTKGV4ZWMsIHRoaXNPYmosIGNvbGxlY3Rpb24pOwogfQogCi1ib29sIEpTRE9N
V2luZG93OjpnZXRPd25Qcm9wZXJ0eVNsb3QoSlNDZWxsKiBjZWxsLCBFeGVjU3RhdGUqIGV4ZWMs
IGNvbnN0IElkZW50aWZpZXImIHByb3BlcnR5TmFtZSwgUHJvcGVydHlTbG90JiBzbG90KQorYm9v
bCBKU0RPTVdpbmRvdzo6Z2V0T3duUHJvcGVydHlTbG90KEpTQ2VsbCogY2VsbCwgRXhlY1N0YXRl
KiBleGVjLCBQcm9wZXJ0eU5hbWUgcHJvcGVydHlOYW1lLCBQcm9wZXJ0eVNsb3QmIHNsb3QpCiB7
CiAgICAgSlNET01XaW5kb3cqIHRoaXNPYmplY3QgPSBqc0Nhc3Q8SlNET01XaW5kb3cqPihjZWxs
KTsKICAgICAvLyBXaGVuIGFjY2Vzc2luZyBhIFdpbmRvdyBjcm9zcy1kb21haW4sIGZ1bmN0aW9u
cyBhcmUgYWx3YXlzIHRoZSBuYXRpdmUgYnVpbHQtaW4gb25lcywgYW5kIHRoZXkKQEAgLTIyMCw3
ICsyMjAsNyBAQCBib29sIEpTRE9NV2luZG93OjpnZXRPd25Qcm9wZXJ0eVNsb3QoSlNDCiAgICAg
Ly8gbmFtaW5nIGZyYW1lcyB0aGluZ3MgdGhhdCBjb25mbGljdCB3aXRoIHdpbmRvdyBwcm9wZXJ0
aWVzIHRoYXQKICAgICAvLyBhcmUgaW4gTW96IGJ1dCBub3QgSUUuIFNpbmNlIHdlIGhhdmUgc29t
ZSBvZiB0aGVzZSwgd2UgaGF2ZSB0byBkbwogICAgIC8vIGl0IHRoZSBNb3ogd2F5LgotICAgIGlm
ICh0aGlzT2JqZWN0LT5pbXBsKCktPmZyYW1lKCktPnRyZWUoKS0+c2NvcGVkQ2hpbGQoaWRlbnRp
ZmllclRvQXRvbWljU3RyaW5nKHByb3BlcnR5TmFtZSkpKSB7CisgICAgaWYgKHRoaXNPYmplY3Qt
PmltcGwoKS0+ZnJhbWUoKS0+dHJlZSgpLT5zY29wZWRDaGlsZChwcm9wZXJ0eU5hbWVUb0F0b21p
Y1N0cmluZyhwcm9wZXJ0eU5hbWUpKSkgewogICAgICAgICBzbG90LnNldEN1c3RvbSh0aGlzT2Jq
ZWN0LCBjaGlsZEZyYW1lR2V0dGVyKTsKICAgICAgICAgcmV0dXJuIHRydWU7CiAgICAgfQpAQCAt
MjQyLDkgKzI0Miw5IEBAIGJvb2wgSlNET01XaW5kb3c6OmdldE93blByb3BlcnR5U2xvdChKU0MK
ICAgICAvLyBXZSBuZWVkIHRvIHRlc3QgdGhlIGNvcnJlY3QgcHJpb3JpdHkgb3JkZXIuCiAKICAg
ICAvLyBhbGxvdyB3aW5kb3dbMV0gb3IgcGFyZW50WzFdIGV0Yy4gKCM1Njk4MykKLSAgICBib29s
IG9rOwotICAgIHVuc2lnbmVkIGkgPSBwcm9wZXJ0eU5hbWUudG9BcnJheUluZGV4KG9rKTsKLSAg
ICBpZiAob2sgJiYgaSA8IHRoaXNPYmplY3QtPmltcGwoKS0+ZnJhbWUoKS0+dHJlZSgpLT5zY29w
ZWRDaGlsZENvdW50KCkpIHsKKyAgICB1bnNpZ25lZCBpID0gcHJvcGVydHlOYW1lLmFzSW5kZXgo
KTsKKyAgICBpZiAoaSA8IHRoaXNPYmplY3QtPmltcGwoKS0+ZnJhbWUoKS0+dHJlZSgpLT5zY29w
ZWRDaGlsZENvdW50KCkpIHsKKyAgICAgICAgQVNTRVJUKGkgIT0gUHJvcGVydHlOYW1lOjpOb3RB
bkluZGV4KTsKICAgICAgICAgc2xvdC5zZXRDdXN0b21JbmRleCh0aGlzT2JqZWN0LCBpLCBpbmRl
eEdldHRlcik7CiAgICAgICAgIHJldHVybiB0cnVlOwogICAgIH0KQEAgLTI2OCw3ICsyNjgsNyBA
QCBib29sIEpTRE9NV2luZG93OjpnZXRPd25Qcm9wZXJ0eVNsb3QoSlNDCiAgICAgcmV0dXJuIEJh
c2U6OmdldE93blByb3BlcnR5U2xvdCh0aGlzT2JqZWN0LCBleGVjLCBwcm9wZXJ0eU5hbWUsIHNs
b3QpOwogfQogCi1ib29sIEpTRE9NV2luZG93OjpnZXRPd25Qcm9wZXJ0eURlc2NyaXB0b3IoSlNP
YmplY3QqIG9iamVjdCwgRXhlY1N0YXRlKiBleGVjLCBjb25zdCBJZGVudGlmaWVyJiBwcm9wZXJ0
eU5hbWUsIFByb3BlcnR5RGVzY3JpcHRvciYgZGVzY3JpcHRvcikKK2Jvb2wgSlNET01XaW5kb3c6
OmdldE93blByb3BlcnR5RGVzY3JpcHRvcihKU09iamVjdCogb2JqZWN0LCBFeGVjU3RhdGUqIGV4
ZWMsIFByb3BlcnR5TmFtZSBwcm9wZXJ0eU5hbWUsIFByb3BlcnR5RGVzY3JpcHRvciYgZGVzY3Jp
cHRvcikKIHsKICAgICBKU0RPTVdpbmRvdyogdGhpc09iamVjdCA9IGpzQ2FzdDxKU0RPTVdpbmRv
dyo+KG9iamVjdCk7CiAgICAgLy8gTmV2ZXIgYWxsb3cgY3Jvc3MtZG9tYWluIGdldE93blByb3Bl
cnR5RGVzY3JpcHRvcgpAQCAtMzEwLDE2ICszMTAsMTYgQEAgYm9vbCBKU0RPTVdpbmRvdzo6Z2V0
T3duUHJvcGVydHlEZXNjcmlwdAogICAgIC8vIG5hbWluZyBmcmFtZXMgdGhpbmdzIHRoYXQgY29u
ZmxpY3Qgd2l0aCB3aW5kb3cgcHJvcGVydGllcyB0aGF0CiAgICAgLy8gYXJlIGluIE1veiBidXQg
bm90IElFLiBTaW5jZSB3ZSBoYXZlIHNvbWUgb2YgdGhlc2UsIHdlIGhhdmUgdG8gZG8KICAgICAv
LyBpdCB0aGUgTW96IHdheS4KLSAgICBpZiAodGhpc09iamVjdC0+aW1wbCgpLT5mcmFtZSgpLT50
cmVlKCktPnNjb3BlZENoaWxkKGlkZW50aWZpZXJUb0F0b21pY1N0cmluZyhwcm9wZXJ0eU5hbWUp
KSkgeworICAgIGlmICh0aGlzT2JqZWN0LT5pbXBsKCktPmZyYW1lKCktPnRyZWUoKS0+c2NvcGVk
Q2hpbGQocHJvcGVydHlOYW1lVG9BdG9taWNTdHJpbmcocHJvcGVydHlOYW1lKSkpIHsKICAgICAg
ICAgUHJvcGVydHlTbG90IHNsb3Q7CiAgICAgICAgIHNsb3Quc2V0Q3VzdG9tKHRoaXNPYmplY3Qs
IGNoaWxkRnJhbWVHZXR0ZXIpOwogICAgICAgICBkZXNjcmlwdG9yLnNldERlc2NyaXB0b3Ioc2xv
dC5nZXRWYWx1ZShleGVjLCBwcm9wZXJ0eU5hbWUpLCBSZWFkT25seSB8IERvbnREZWxldGUgfCBE
b250RW51bSk7CiAgICAgICAgIHJldHVybiB0cnVlOwogICAgIH0KICAgICAKLSAgICBib29sIG9r
OwotICAgIHVuc2lnbmVkIGkgPSBwcm9wZXJ0eU5hbWUudG9BcnJheUluZGV4KG9rKTsKLSAgICBp
ZiAob2sgJiYgaSA8IHRoaXNPYmplY3QtPmltcGwoKS0+ZnJhbWUoKS0+dHJlZSgpLT5zY29wZWRD
aGlsZENvdW50KCkpIHsKKyAgICB1bnNpZ25lZCBpID0gcHJvcGVydHlOYW1lLmFzSW5kZXgoKTsK
KyAgICBpZiAoaSA8IHRoaXNPYmplY3QtPmltcGwoKS0+ZnJhbWUoKS0+dHJlZSgpLT5zY29wZWRD
aGlsZENvdW50KCkpIHsKKyAgICAgICAgQVNTRVJUKGkgIT0gUHJvcGVydHlOYW1lOjpOb3RBbklu
ZGV4KTsKICAgICAgICAgUHJvcGVydHlTbG90IHNsb3Q7CiAgICAgICAgIHNsb3Quc2V0Q3VzdG9t
SW5kZXgodGhpc09iamVjdCwgaSwgaW5kZXhHZXR0ZXIpOwogICAgICAgICBkZXNjcmlwdG9yLnNl
dERlc2NyaXB0b3Ioc2xvdC5nZXRWYWx1ZShleGVjLCBwcm9wZXJ0eU5hbWUpLCBSZWFkT25seSB8
IERvbnREZWxldGUgfCBEb250RW51bSk7CkBAIC0zNDEsNyArMzQxLDcgQEAgYm9vbCBKU0RPTVdp
bmRvdzo6Z2V0T3duUHJvcGVydHlEZXNjcmlwdAogICAgIHJldHVybiBCYXNlOjpnZXRPd25Qcm9w
ZXJ0eURlc2NyaXB0b3IodGhpc09iamVjdCwgZXhlYywgcHJvcGVydHlOYW1lLCBkZXNjcmlwdG9y
KTsKIH0KIAotdm9pZCBKU0RPTVdpbmRvdzo6cHV0KEpTQ2VsbCogY2VsbCwgRXhlY1N0YXRlKiBl
eGVjLCBjb25zdCBJZGVudGlmaWVyJiBwcm9wZXJ0eU5hbWUsIEpTVmFsdWUgdmFsdWUsIFB1dFBy
b3BlcnR5U2xvdCYgc2xvdCkKK3ZvaWQgSlNET01XaW5kb3c6OnB1dChKU0NlbGwqIGNlbGwsIEV4
ZWNTdGF0ZSogZXhlYywgUHJvcGVydHlOYW1lIHByb3BlcnR5TmFtZSwgSlNWYWx1ZSB2YWx1ZSwg
UHV0UHJvcGVydHlTbG90JiBzbG90KQogewogICAgIEpTRE9NV2luZG93KiB0aGlzT2JqZWN0ID0g
anNDYXN0PEpTRE9NV2luZG93Kj4oY2VsbCk7CiAgICAgaWYgKCF0aGlzT2JqZWN0LT5pbXBsKCkt
PmZyYW1lKCkpCkBAIC0zNjEsNyArMzYxLDcgQEAgdm9pZCBKU0RPTVdpbmRvdzo6cHV0KEpTQ2Vs
bCogY2VsbCwgRXhlYwogICAgICAgICBCYXNlOjpwdXQodGhpc09iamVjdCwgZXhlYywgcHJvcGVy
dHlOYW1lLCB2YWx1ZSwgc2xvdCk7CiB9CiAKLWJvb2wgSlNET01XaW5kb3c6OmRlbGV0ZVByb3Bl
cnR5KEpTQ2VsbCogY2VsbCwgRXhlY1N0YXRlKiBleGVjLCBjb25zdCBJZGVudGlmaWVyJiBwcm9w
ZXJ0eU5hbWUpCitib29sIEpTRE9NV2luZG93OjpkZWxldGVQcm9wZXJ0eShKU0NlbGwqIGNlbGws
IEV4ZWNTdGF0ZSogZXhlYywgUHJvcGVydHlOYW1lIHByb3BlcnR5TmFtZSkKIHsKICAgICBKU0RP
TVdpbmRvdyogdGhpc09iamVjdCA9IGpzQ2FzdDxKU0RPTVdpbmRvdyo+KGNlbGwpOwogICAgIC8v
IE9ubHkgYWxsb3cgZGVsZXRpbmcgcHJvcGVydGllcyBieSBmcmFtZXMgaW4gdGhlIHNhbWUgb3Jp
Z2luLgpAQCAtMzg4LDcgKzM4OCw3IEBAIHZvaWQgSlNET01XaW5kb3c6OmdldE93blByb3BlcnR5
TmFtZXMoSlMKICAgICBCYXNlOjpnZXRPd25Qcm9wZXJ0eU5hbWVzKHRoaXNPYmplY3QsIGV4ZWMs
IHByb3BlcnR5TmFtZXMsIG1vZGUpOwogfQogCi1ib29sIEpTRE9NV2luZG93OjpkZWZpbmVPd25Q
cm9wZXJ0eShKU0M6OkpTT2JqZWN0KiBvYmplY3QsIEpTQzo6RXhlY1N0YXRlKiBleGVjLCBjb25z
dCBKU0M6OklkZW50aWZpZXImIHByb3BlcnR5TmFtZSwgSlNDOjpQcm9wZXJ0eURlc2NyaXB0b3Im
IGRlc2NyaXB0b3IsIGJvb2wgc2hvdWxkVGhyb3cpCitib29sIEpTRE9NV2luZG93OjpkZWZpbmVP
d25Qcm9wZXJ0eShKU0M6OkpTT2JqZWN0KiBvYmplY3QsIEpTQzo6RXhlY1N0YXRlKiBleGVjLCBK
U0M6OlByb3BlcnR5TmFtZSBwcm9wZXJ0eU5hbWUsIEpTQzo6UHJvcGVydHlEZXNjcmlwdG9yJiBk
ZXNjcmlwdG9yLCBib29sIHNob3VsZFRocm93KQogewogICAgIEpTRE9NV2luZG93KiB0aGlzT2Jq
ZWN0ID0ganNDYXN0PEpTRE9NV2luZG93Kj4ob2JqZWN0KTsKICAgICAvLyBPbmx5IGFsbG93IGRl
ZmluaW5nIHByb3BlcnRpZXMgaW4gdGhpcyB3YXkgYnkgZnJhbWVzIGluIHRoZSBzYW1lIG9yaWdp
biwgYXMgaXQgYWxsb3dzIHNldHRlcnMgdG8gYmUgaW50cm9kdWNlZC4KQEAgLTM5Niw3ICszOTYs
NyBAQCBib29sIEpTRE9NV2luZG93OjpkZWZpbmVPd25Qcm9wZXJ0eShKU0M6CiAgICAgICAgIHJl
dHVybiBmYWxzZTsKIAogICAgIC8vIERvbid0IGFsbG93IHNoYWRvd2luZyBsb2NhdGlvbiB1c2lu
ZyBhY2Nlc3NvciBwcm9wZXJ0aWVzLgotICAgIGlmIChkZXNjcmlwdG9yLmlzQWNjZXNzb3JEZXNj
cmlwdG9yKCkgJiYgcHJvcGVydHlOYW1lID09ICJsb2NhdGlvbiIpCisgICAgaWYgKGRlc2NyaXB0
b3IuaXNBY2Nlc3NvckRlc2NyaXB0b3IoKSAmJiBwcm9wZXJ0eU5hbWUgPT0gSWRlbnRpZmllcihl
eGVjLCAibG9jYXRpb24iKSkKICAgICAgICAgcmV0dXJuIGZhbHNlOwogCiAgICAgcmV0dXJuIEJh
c2U6OmRlZmluZU93blByb3BlcnR5KHRoaXNPYmplY3QsIGV4ZWMsIHByb3BlcnR5TmFtZSwgZGVz
Y3JpcHRvciwgc2hvdWxkVGhyb3cpOwpJbmRleDogU291cmNlL1dlYkNvcmUvYmluZGluZ3MvanMv
SlNET01XaW5kb3dTaGVsbC5jcHAKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL1dlYkNvcmUvYmluZGlu
Z3MvanMvSlNET01XaW5kb3dTaGVsbC5jcHAJKHJldmlzaW9uIDExNjY2NykKKysrIFNvdXJjZS9X
ZWJDb3JlL2JpbmRpbmdzL2pzL0pTRE9NV2luZG93U2hlbGwuY3BwCSh3b3JraW5nIGNvcHkpCkBA
IC05MSwzNyArOTEsMzcgQEAgVVN0cmluZyBKU0RPTVdpbmRvd1NoZWxsOjpjbGFzc05hbWUoY29u
cwogICAgIHJldHVybiB0aGlzT2JqZWN0LT53aW5kb3coKS0+bWV0aG9kVGFibGUoKS0+Y2xhc3NO
YW1lKHRoaXNPYmplY3QtPndpbmRvdygpKTsKIH0KIAotYm9vbCBKU0RPTVdpbmRvd1NoZWxsOjpn
ZXRPd25Qcm9wZXJ0eVNsb3QoSlNDZWxsKiBjZWxsLCBFeGVjU3RhdGUqIGV4ZWMsIGNvbnN0IElk
ZW50aWZpZXImIHByb3BlcnR5TmFtZSwgUHJvcGVydHlTbG90JiBzbG90KQorYm9vbCBKU0RPTVdp
bmRvd1NoZWxsOjpnZXRPd25Qcm9wZXJ0eVNsb3QoSlNDZWxsKiBjZWxsLCBFeGVjU3RhdGUqIGV4
ZWMsIFByb3BlcnR5TmFtZSBwcm9wZXJ0eU5hbWUsIFByb3BlcnR5U2xvdCYgc2xvdCkKIHsKICAg
ICBKU0RPTVdpbmRvd1NoZWxsKiB0aGlzT2JqZWN0ID0ganNDYXN0PEpTRE9NV2luZG93U2hlbGwq
PihjZWxsKTsKICAgICByZXR1cm4gdGhpc09iamVjdC0+d2luZG93KCktPm1ldGhvZFRhYmxlKCkt
PmdldE93blByb3BlcnR5U2xvdCh0aGlzT2JqZWN0LT53aW5kb3coKSwgZXhlYywgcHJvcGVydHlO
YW1lLCBzbG90KTsKIH0KIAotYm9vbCBKU0RPTVdpbmRvd1NoZWxsOjpnZXRPd25Qcm9wZXJ0eURl
c2NyaXB0b3IoSlNPYmplY3QqIG9iamVjdCwgRXhlY1N0YXRlKiBleGVjLCBjb25zdCBJZGVudGlm
aWVyJiBwcm9wZXJ0eU5hbWUsIFByb3BlcnR5RGVzY3JpcHRvciYgZGVzY3JpcHRvcikKK2Jvb2wg
SlNET01XaW5kb3dTaGVsbDo6Z2V0T3duUHJvcGVydHlEZXNjcmlwdG9yKEpTT2JqZWN0KiBvYmpl
Y3QsIEV4ZWNTdGF0ZSogZXhlYywgUHJvcGVydHlOYW1lIHByb3BlcnR5TmFtZSwgUHJvcGVydHlE
ZXNjcmlwdG9yJiBkZXNjcmlwdG9yKQogewogICAgIEpTRE9NV2luZG93U2hlbGwqIHRoaXNPYmpl
Y3QgPSBqc0Nhc3Q8SlNET01XaW5kb3dTaGVsbCo+KG9iamVjdCk7CiAgICAgcmV0dXJuIHRoaXNP
YmplY3QtPndpbmRvdygpLT5tZXRob2RUYWJsZSgpLT5nZXRPd25Qcm9wZXJ0eURlc2NyaXB0b3Io
dGhpc09iamVjdC0+d2luZG93KCksIGV4ZWMsIHByb3BlcnR5TmFtZSwgZGVzY3JpcHRvcik7CiB9
CiAKLXZvaWQgSlNET01XaW5kb3dTaGVsbDo6cHV0KEpTQ2VsbCogY2VsbCwgRXhlY1N0YXRlKiBl
eGVjLCBjb25zdCBJZGVudGlmaWVyJiBwcm9wZXJ0eU5hbWUsIEpTVmFsdWUgdmFsdWUsIFB1dFBy
b3BlcnR5U2xvdCYgc2xvdCkKK3ZvaWQgSlNET01XaW5kb3dTaGVsbDo6cHV0KEpTQ2VsbCogY2Vs
bCwgRXhlY1N0YXRlKiBleGVjLCBQcm9wZXJ0eU5hbWUgcHJvcGVydHlOYW1lLCBKU1ZhbHVlIHZh
bHVlLCBQdXRQcm9wZXJ0eVNsb3QmIHNsb3QpCiB7CiAgICAgSlNET01XaW5kb3dTaGVsbCogdGhp
c09iamVjdCA9IGpzQ2FzdDxKU0RPTVdpbmRvd1NoZWxsKj4oY2VsbCk7CiAgICAgdGhpc09iamVj
dC0+d2luZG93KCktPm1ldGhvZFRhYmxlKCktPnB1dCh0aGlzT2JqZWN0LT53aW5kb3coKSwgZXhl
YywgcHJvcGVydHlOYW1lLCB2YWx1ZSwgc2xvdCk7CiB9CiAKLXZvaWQgSlNET01XaW5kb3dTaGVs
bDo6cHV0RGlyZWN0VmlydHVhbChKU09iamVjdCogb2JqZWN0LCBFeGVjU3RhdGUqIGV4ZWMsIGNv
bnN0IElkZW50aWZpZXImIHByb3BlcnR5TmFtZSwgSlNWYWx1ZSB2YWx1ZSwgdW5zaWduZWQgYXR0
cmlidXRlcykKK3ZvaWQgSlNET01XaW5kb3dTaGVsbDo6cHV0RGlyZWN0VmlydHVhbChKU09iamVj
dCogb2JqZWN0LCBFeGVjU3RhdGUqIGV4ZWMsIFByb3BlcnR5TmFtZSBwcm9wZXJ0eU5hbWUsIEpT
VmFsdWUgdmFsdWUsIHVuc2lnbmVkIGF0dHJpYnV0ZXMpCiB7CiAgICAgSlNET01XaW5kb3dTaGVs
bCogdGhpc09iamVjdCA9IGpzQ2FzdDxKU0RPTVdpbmRvd1NoZWxsKj4ob2JqZWN0KTsKICAgICB0
aGlzT2JqZWN0LT53aW5kb3coKS0+cHV0RGlyZWN0VmlydHVhbCh0aGlzT2JqZWN0LT53aW5kb3co
KSwgZXhlYywgcHJvcGVydHlOYW1lLCB2YWx1ZSwgYXR0cmlidXRlcyk7CiB9CiAKLWJvb2wgSlNE
T01XaW5kb3dTaGVsbDo6ZGVmaW5lT3duUHJvcGVydHkoSlNDOjpKU09iamVjdCogb2JqZWN0LCBK
U0M6OkV4ZWNTdGF0ZSogZXhlYywgY29uc3QgSlNDOjpJZGVudGlmaWVyJiBwcm9wZXJ0eU5hbWUs
IEpTQzo6UHJvcGVydHlEZXNjcmlwdG9yJiBkZXNjcmlwdG9yLCBib29sIHNob3VsZFRocm93KQor
Ym9vbCBKU0RPTVdpbmRvd1NoZWxsOjpkZWZpbmVPd25Qcm9wZXJ0eShKU0M6OkpTT2JqZWN0KiBv
YmplY3QsIEpTQzo6RXhlY1N0YXRlKiBleGVjLCBKU0M6OlByb3BlcnR5TmFtZSBwcm9wZXJ0eU5h
bWUsIEpTQzo6UHJvcGVydHlEZXNjcmlwdG9yJiBkZXNjcmlwdG9yLCBib29sIHNob3VsZFRocm93
KQogewogICAgIEpTRE9NV2luZG93U2hlbGwqIHRoaXNPYmplY3QgPSBqc0Nhc3Q8SlNET01XaW5k
b3dTaGVsbCo+KG9iamVjdCk7CiAgICAgcmV0dXJuIHRoaXNPYmplY3QtPndpbmRvdygpLT5tZXRo
b2RUYWJsZSgpLT5kZWZpbmVPd25Qcm9wZXJ0eSh0aGlzT2JqZWN0LT53aW5kb3coKSwgZXhlYywg
cHJvcGVydHlOYW1lLCBkZXNjcmlwdG9yLCBzaG91bGRUaHJvdyk7CiB9CiAKLWJvb2wgSlNET01X
aW5kb3dTaGVsbDo6ZGVsZXRlUHJvcGVydHkoSlNDZWxsKiBjZWxsLCBFeGVjU3RhdGUqIGV4ZWMs
IGNvbnN0IElkZW50aWZpZXImIHByb3BlcnR5TmFtZSkKK2Jvb2wgSlNET01XaW5kb3dTaGVsbDo6
ZGVsZXRlUHJvcGVydHkoSlNDZWxsKiBjZWxsLCBFeGVjU3RhdGUqIGV4ZWMsIFByb3BlcnR5TmFt
ZSBwcm9wZXJ0eU5hbWUpCiB7CiAgICAgSlNET01XaW5kb3dTaGVsbCogdGhpc09iamVjdCA9IGpz
Q2FzdDxKU0RPTVdpbmRvd1NoZWxsKj4oY2VsbCk7CiAgICAgcmV0dXJuIHRoaXNPYmplY3QtPndp
bmRvdygpLT5tZXRob2RUYWJsZSgpLT5kZWxldGVQcm9wZXJ0eSh0aGlzT2JqZWN0LT53aW5kb3co
KSwgZXhlYywgcHJvcGVydHlOYW1lKTsKSW5kZXg6IFNvdXJjZS9XZWJDb3JlL2JpbmRpbmdzL2pz
L0pTRE9NV2luZG93U2hlbGwuaAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2ViQ29yZS9iaW5kaW5n
cy9qcy9KU0RPTVdpbmRvd1NoZWxsLmgJKHJldmlzaW9uIDExNjY2NykKKysrIFNvdXJjZS9XZWJD
b3JlL2JpbmRpbmdzL2pzL0pTRE9NV2luZG93U2hlbGwuaAkod29ya2luZyBjb3B5KQpAQCAtNzgs
MTQgKzc4LDE0IEBAIG5hbWVzcGFjZSBXZWJDb3JlIHsKICAgICAgICAgc3RhdGljIGNvbnN0IHVu
c2lnbmVkIFN0cnVjdHVyZUZsYWdzID0gSlNDOjpPdmVycmlkZXNHZXRPd25Qcm9wZXJ0eVNsb3Qg
fCBKU0M6Ok92ZXJyaWRlc0dldFByb3BlcnR5TmFtZXMgfCBCYXNlOjpTdHJ1Y3R1cmVGbGFnczsK
IAogICAgICAgICBzdGF0aWMgSlNDOjpVU3RyaW5nIGNsYXNzTmFtZShjb25zdCBKU0M6OkpTT2Jq
ZWN0Kik7Ci0gICAgICAgIHN0YXRpYyBib29sIGdldE93blByb3BlcnR5U2xvdChKU0M6OkpTQ2Vs
bCosIEpTQzo6RXhlY1N0YXRlKiwgY29uc3QgSlNDOjpJZGVudGlmaWVyJiBwcm9wZXJ0eU5hbWUs
IEpTQzo6UHJvcGVydHlTbG90Jik7Ci0gICAgICAgIHN0YXRpYyBib29sIGdldE93blByb3BlcnR5
RGVzY3JpcHRvcihKU0M6OkpTT2JqZWN0KiwgSlNDOjpFeGVjU3RhdGUqLCBjb25zdCBKU0M6Oklk
ZW50aWZpZXImIHByb3BlcnR5TmFtZSwgSlNDOjpQcm9wZXJ0eURlc2NyaXB0b3ImKTsKLSAgICAg
ICAgc3RhdGljIHZvaWQgcHV0KEpTQzo6SlNDZWxsKiwgSlNDOjpFeGVjU3RhdGUqLCBjb25zdCBK
U0M6OklkZW50aWZpZXImIHByb3BlcnR5TmFtZSwgSlNDOjpKU1ZhbHVlLCBKU0M6OlB1dFByb3Bl
cnR5U2xvdCYpOwotICAgICAgICBzdGF0aWMgdm9pZCBwdXREaXJlY3RWaXJ0dWFsKEpTQzo6SlNP
YmplY3QqLCBKU0M6OkV4ZWNTdGF0ZSosIGNvbnN0IEpTQzo6SWRlbnRpZmllciYgcHJvcGVydHlO
YW1lLCBKU0M6OkpTVmFsdWUsIHVuc2lnbmVkIGF0dHJpYnV0ZXMpOwotICAgICAgICBzdGF0aWMg
Ym9vbCBkZWxldGVQcm9wZXJ0eShKU0M6OkpTQ2VsbCosIEpTQzo6RXhlY1N0YXRlKiwgY29uc3Qg
SlNDOjpJZGVudGlmaWVyJiBwcm9wZXJ0eU5hbWUpOworICAgICAgICBzdGF0aWMgYm9vbCBnZXRP
d25Qcm9wZXJ0eVNsb3QoSlNDOjpKU0NlbGwqLCBKU0M6OkV4ZWNTdGF0ZSosIEpTQzo6UHJvcGVy
dHlOYW1lIHByb3BlcnR5TmFtZSwgSlNDOjpQcm9wZXJ0eVNsb3QmKTsKKyAgICAgICAgc3RhdGlj
IGJvb2wgZ2V0T3duUHJvcGVydHlEZXNjcmlwdG9yKEpTQzo6SlNPYmplY3QqLCBKU0M6OkV4ZWNT
dGF0ZSosIEpTQzo6UHJvcGVydHlOYW1lIHByb3BlcnR5TmFtZSwgSlNDOjpQcm9wZXJ0eURlc2Ny
aXB0b3ImKTsKKyAgICAgICAgc3RhdGljIHZvaWQgcHV0KEpTQzo6SlNDZWxsKiwgSlNDOjpFeGVj
U3RhdGUqLCBKU0M6OlByb3BlcnR5TmFtZSBwcm9wZXJ0eU5hbWUsIEpTQzo6SlNWYWx1ZSwgSlND
OjpQdXRQcm9wZXJ0eVNsb3QmKTsKKyAgICAgICAgc3RhdGljIHZvaWQgcHV0RGlyZWN0VmlydHVh
bChKU0M6OkpTT2JqZWN0KiwgSlNDOjpFeGVjU3RhdGUqLCBKU0M6OlByb3BlcnR5TmFtZSBwcm9w
ZXJ0eU5hbWUsIEpTQzo6SlNWYWx1ZSwgdW5zaWduZWQgYXR0cmlidXRlcyk7CisgICAgICAgIHN0
YXRpYyBib29sIGRlbGV0ZVByb3BlcnR5KEpTQzo6SlNDZWxsKiwgSlNDOjpFeGVjU3RhdGUqLCBK
U0M6OlByb3BlcnR5TmFtZSBwcm9wZXJ0eU5hbWUpOwogICAgICAgICBzdGF0aWMgdm9pZCBnZXRP
d25Qcm9wZXJ0eU5hbWVzKEpTQzo6SlNPYmplY3QqLCBKU0M6OkV4ZWNTdGF0ZSosIEpTQzo6UHJv
cGVydHlOYW1lQXJyYXkmLCBKU0M6OkVudW1lcmF0aW9uTW9kZSk7CiAgICAgICAgIHN0YXRpYyB2
b2lkIGdldFByb3BlcnR5TmFtZXMoSlNDOjpKU09iamVjdCosIEpTQzo6RXhlY1N0YXRlKiwgSlND
OjpQcm9wZXJ0eU5hbWVBcnJheSYsIEpTQzo6RW51bWVyYXRpb25Nb2RlKTsKLSAgICAgICAgc3Rh
dGljIGJvb2wgZGVmaW5lT3duUHJvcGVydHkoSlNDOjpKU09iamVjdCosIEpTQzo6RXhlY1N0YXRl
KiwgY29uc3QgSlNDOjpJZGVudGlmaWVyJiBwcm9wZXJ0eU5hbWUsIEpTQzo6UHJvcGVydHlEZXNj
cmlwdG9yJiwgYm9vbCBzaG91bGRUaHJvdyk7CisgICAgICAgIHN0YXRpYyBib29sIGRlZmluZU93
blByb3BlcnR5KEpTQzo6SlNPYmplY3QqLCBKU0M6OkV4ZWNTdGF0ZSosIEpTQzo6UHJvcGVydHlO
YW1lIHByb3BlcnR5TmFtZSwgSlNDOjpQcm9wZXJ0eURlc2NyaXB0b3ImLCBib29sIHNob3VsZFRo
cm93KTsKIAogICAgICAgICBSZWZQdHI8RE9NV3JhcHBlcldvcmxkPiBtX3dvcmxkOwogICAgIH07
CkluZGV4OiBTb3VyY2UvV2ViQ29yZS9iaW5kaW5ncy9qcy9KU0hUTUxBbGxDb2xsZWN0aW9uQ3Vz
dG9tLmNwcAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2ViQ29yZS9iaW5kaW5ncy9qcy9KU0hUTUxB
bGxDb2xsZWN0aW9uQ3VzdG9tLmNwcAkocmV2aXNpb24gMTE2NjY3KQorKysgU291cmNlL1dlYkNv
cmUvYmluZGluZ3MvanMvSlNIVE1MQWxsQ29sbGVjdGlvbkN1c3RvbS5jcHAJKHdvcmtpbmcgY29w
eSkKQEAgLTQxLDEwICs0MSwxMCBAQCB1c2luZyBuYW1lc3BhY2UgSlNDOwogCiBuYW1lc3BhY2Ug
V2ViQ29yZSB7CiAKLXN0YXRpYyBKU1ZhbHVlIGdldE5hbWVkSXRlbXMoRXhlY1N0YXRlKiBleGVj
LCBKU0hUTUxBbGxDb2xsZWN0aW9uKiBjb2xsZWN0aW9uLCBjb25zdCBJZGVudGlmaWVyJiBwcm9w
ZXJ0eU5hbWUpCitzdGF0aWMgSlNWYWx1ZSBnZXROYW1lZEl0ZW1zKEV4ZWNTdGF0ZSogZXhlYywg
SlNIVE1MQWxsQ29sbGVjdGlvbiogY29sbGVjdGlvbiwgUHJvcGVydHlOYW1lIHByb3BlcnR5TmFt
ZSkKIHsKICAgICBWZWN0b3I8UmVmUHRyPE5vZGU+ID4gbmFtZWRJdGVtczsKLSAgICBjb2xsZWN0
aW9uLT5pbXBsKCktPm5hbWVkSXRlbXMoaWRlbnRpZmllclRvQXRvbWljU3RyaW5nKHByb3BlcnR5
TmFtZSksIG5hbWVkSXRlbXMpOworICAgIGNvbGxlY3Rpb24tPmltcGwoKS0+bmFtZWRJdGVtcyhw
cm9wZXJ0eU5hbWVUb0F0b21pY1N0cmluZyhwcm9wZXJ0eU5hbWUpLCBuYW1lZEl0ZW1zKTsKIAog
ICAgIGlmIChuYW1lZEl0ZW1zLmlzRW1wdHkoKSkKICAgICAgICAgcmV0dXJuIGpzVW5kZWZpbmVk
KCk7CkBAIC03MSwxMCArNzEsOSBAQCBzdGF0aWMgRW5jb2RlZEpTVmFsdWUgSlNDX0hPU1RfQ0FM
TCBjYWxsCiAKICAgICBpZiAoZXhlYy0+YXJndW1lbnRDb3VudCgpID09IDEpIHsKICAgICAgICAg
Ly8gU3VwcG9ydCBmb3IgZG9jdW1lbnQuYWxsKDxpbmRleD4pIGV0Yy4KLSAgICAgICAgYm9vbCBv
azsKICAgICAgICAgVVN0cmluZyBzdHJpbmcgPSBleGVjLT5hcmd1bWVudCgwKS50b1N0cmluZyhl
eGVjKS0+dmFsdWUoZXhlYyk7Ci0gICAgICAgIHVuc2lnbmVkIGluZGV4ID0gSWRlbnRpZmllcjo6
dG9VSW50MzIoc3RyaW5nLCBvayk7Ci0gICAgICAgIGlmIChvaykKKyAgICAgICAgdW5zaWduZWQg
aW5kZXggPSB0b1VJbnQzMkZyb21TdHJpbmdJbXBsKHN0cmluZy5pbXBsKCkpOworICAgICAgICBp
ZiAoaW5kZXggIT0gUHJvcGVydHlOYW1lOjpOb3RBbkluZGV4KQogICAgICAgICAgICAgcmV0dXJu
IEpTVmFsdWU6OmVuY29kZSh0b0pTKGV4ZWMsIGpzQ29sbGVjdGlvbi0+Z2xvYmFsT2JqZWN0KCks
IGNvbGxlY3Rpb24tPml0ZW0oaW5kZXgpKSk7CiAKICAgICAgICAgLy8gU3VwcG9ydCBmb3IgZG9j
dW1lbnQuaW1hZ2VzKCc8bmFtZT4nKSBldGMuCkBAIC04MiwxMCArODEsOSBAQCBzdGF0aWMgRW5j
b2RlZEpTVmFsdWUgSlNDX0hPU1RfQ0FMTCBjYWxsCiAgICAgfQogCiAgICAgLy8gVGhlIHNlY29u
ZCBhcmcsIGlmIHNldCwgaXMgdGhlIGluZGV4IG9mIHRoZSBpdGVtIHdlIHdhbnQKLSAgICBib29s
IG9rOwogICAgIFVTdHJpbmcgc3RyaW5nID0gZXhlYy0+YXJndW1lbnQoMCkudG9TdHJpbmcoZXhl
YyktPnZhbHVlKGV4ZWMpOwotICAgIHVuc2lnbmVkIGluZGV4ID0gSWRlbnRpZmllcjo6dG9VSW50
MzIoZXhlYy0+YXJndW1lbnQoMSkudG9TdHJpbmcoZXhlYyktPnZhbHVlKGV4ZWMpLCBvayk7Ci0g
ICAgaWYgKG9rKSB7CisgICAgdW5zaWduZWQgaW5kZXggPSB0b1VJbnQzMkZyb21TdHJpbmdJbXBs
KGV4ZWMtPmFyZ3VtZW50KDEpLnRvU3RyaW5nKGV4ZWMpLT52YWx1ZShleGVjKS5pbXBsKCkpOwor
ICAgIGlmIChpbmRleCAhPSBQcm9wZXJ0eU5hbWU6Ok5vdEFuSW5kZXgpIHsKICAgICAgICAgaWYg
KE5vZGUqIG5vZGUgPSBjb2xsZWN0aW9uLT5uYW1lZEl0ZW1XaXRoSW5kZXgodXN0cmluZ1RvQXRv
bWljU3RyaW5nKHN0cmluZyksIGluZGV4KSkKICAgICAgICAgICAgIHJldHVybiBKU1ZhbHVlOjpl
bmNvZGUodG9KUyhleGVjLCBqc0NvbGxlY3Rpb24tPmdsb2JhbE9iamVjdCgpLCBub2RlKSk7CiAg
ICAgfQpAQCAtOTksMTIgKzk3LDEyIEBAIENhbGxUeXBlIEpTSFRNTEFsbENvbGxlY3Rpb246Omdl
dENhbGxEYXQKICAgICByZXR1cm4gQ2FsbFR5cGVIb3N0OwogfQogCi1ib29sIEpTSFRNTEFsbENv
bGxlY3Rpb246OmNhbkdldEl0ZW1zRm9yTmFtZShFeGVjU3RhdGUqLCBIVE1MQWxsQ29sbGVjdGlv
biogY29sbGVjdGlvbiwgY29uc3QgSWRlbnRpZmllciYgcHJvcGVydHlOYW1lKQorYm9vbCBKU0hU
TUxBbGxDb2xsZWN0aW9uOjpjYW5HZXRJdGVtc0Zvck5hbWUoRXhlY1N0YXRlKiwgSFRNTEFsbENv
bGxlY3Rpb24qIGNvbGxlY3Rpb24sIFByb3BlcnR5TmFtZSBwcm9wZXJ0eU5hbWUpCiB7Ci0gICAg
cmV0dXJuIGNvbGxlY3Rpb24tPmhhc05hbWVkSXRlbShpZGVudGlmaWVyVG9BdG9taWNTdHJpbmco
cHJvcGVydHlOYW1lKSk7CisgICAgcmV0dXJuIGNvbGxlY3Rpb24tPmhhc05hbWVkSXRlbShwcm9w
ZXJ0eU5hbWVUb0F0b21pY1N0cmluZyhwcm9wZXJ0eU5hbWUpKTsKIH0KIAotSlNWYWx1ZSBKU0hU
TUxBbGxDb2xsZWN0aW9uOjpuYW1lR2V0dGVyKEV4ZWNTdGF0ZSogZXhlYywgSlNWYWx1ZSBzbG90
QmFzZSwgY29uc3QgSWRlbnRpZmllciYgcHJvcGVydHlOYW1lKQorSlNWYWx1ZSBKU0hUTUxBbGxD
b2xsZWN0aW9uOjpuYW1lR2V0dGVyKEV4ZWNTdGF0ZSogZXhlYywgSlNWYWx1ZSBzbG90QmFzZSwg
UHJvcGVydHlOYW1lIHByb3BlcnR5TmFtZSkKIHsKICAgICBKU0hUTUxBbGxDb2xsZWN0aW9uKiB0
aGlzT2JqID0ganNDYXN0PEpTSFRNTEFsbENvbGxlY3Rpb24qPihhc09iamVjdChzbG90QmFzZSkp
OwogICAgIHJldHVybiBnZXROYW1lZEl0ZW1zKGV4ZWMsIHRoaXNPYmosIHByb3BlcnR5TmFtZSk7
CkBAIC0xMTIsOSArMTEwLDggQEAgSlNWYWx1ZSBKU0hUTUxBbGxDb2xsZWN0aW9uOjpuYW1lR2V0
dGVyKAogCiBKU1ZhbHVlIEpTSFRNTEFsbENvbGxlY3Rpb246Oml0ZW0oRXhlY1N0YXRlKiBleGVj
KQogewotICAgIGJvb2wgb2s7Ci0gICAgdWludDMyX3QgaW5kZXggPSBJZGVudGlmaWVyOjp0b1VJ
bnQzMihleGVjLT5hcmd1bWVudCgwKS50b1N0cmluZyhleGVjKS0+dmFsdWUoZXhlYyksIG9rKTsK
LSAgICBpZiAob2spCisgICAgdWludDMyX3QgaW5kZXggPSB0b1VJbnQzMkZyb21TdHJpbmdJbXBs
KGV4ZWMtPmFyZ3VtZW50KDApLnRvU3RyaW5nKGV4ZWMpLT52YWx1ZShleGVjKS5pbXBsKCkpOwor
ICAgIGlmIChpbmRleCAhPSBQcm9wZXJ0eU5hbWU6Ok5vdEFuSW5kZXgpCiAgICAgICAgIHJldHVy
biB0b0pTKGV4ZWMsIGdsb2JhbE9iamVjdCgpLCBpbXBsKCktPml0ZW0oaW5kZXgpKTsKICAgICBy
ZXR1cm4gZ2V0TmFtZWRJdGVtcyhleGVjLCB0aGlzLCBJZGVudGlmaWVyKGV4ZWMsIGV4ZWMtPmFy
Z3VtZW50KDApLnRvU3RyaW5nKGV4ZWMpLT52YWx1ZShleGVjKSkpOwogfQpJbmRleDogU291cmNl
L1dlYkNvcmUvYmluZGluZ3MvanMvSlNIVE1MQXBwbGV0RWxlbWVudEN1c3RvbS5jcHAKPT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PQotLS0gU291cmNlL1dlYkNvcmUvYmluZGluZ3MvanMvSlNIVE1MQXBwbGV0RWxlbWVudEN1
c3RvbS5jcHAJKHJldmlzaW9uIDExNjY2NykKKysrIFNvdXJjZS9XZWJDb3JlL2JpbmRpbmdzL2pz
L0pTSFRNTEFwcGxldEVsZW1lbnRDdXN0b20uY3BwCSh3b3JraW5nIGNvcHkpCkBAIC0zMywxNyAr
MzMsMTcgQEAgbmFtZXNwYWNlIFdlYkNvcmUgewogCiB1c2luZyBuYW1lc3BhY2UgSlNDOwogCi1i
b29sIEpTSFRNTEFwcGxldEVsZW1lbnQ6OmdldE93blByb3BlcnR5U2xvdERlbGVnYXRlKEV4ZWNT
dGF0ZSogZXhlYywgY29uc3QgSWRlbnRpZmllciYgcHJvcGVydHlOYW1lLCBQcm9wZXJ0eVNsb3Qm
IHNsb3QpCitib29sIEpTSFRNTEFwcGxldEVsZW1lbnQ6OmdldE93blByb3BlcnR5U2xvdERlbGVn
YXRlKEV4ZWNTdGF0ZSogZXhlYywgUHJvcGVydHlOYW1lIHByb3BlcnR5TmFtZSwgUHJvcGVydHlT
bG90JiBzbG90KQogewogICAgIHJldHVybiBydW50aW1lT2JqZWN0Q3VzdG9tR2V0T3duUHJvcGVy
dHlTbG90KGV4ZWMsIHByb3BlcnR5TmFtZSwgc2xvdCwgdGhpcyk7CiB9CiAKLWJvb2wgSlNIVE1M
QXBwbGV0RWxlbWVudDo6Z2V0T3duUHJvcGVydHlEZXNjcmlwdG9yRGVsZWdhdGUoRXhlY1N0YXRl
KiBleGVjLCBjb25zdCBJZGVudGlmaWVyJiBwcm9wZXJ0eU5hbWUsIFByb3BlcnR5RGVzY3JpcHRv
ciYgZGVzY3JpcHRvcikKK2Jvb2wgSlNIVE1MQXBwbGV0RWxlbWVudDo6Z2V0T3duUHJvcGVydHlE
ZXNjcmlwdG9yRGVsZWdhdGUoRXhlY1N0YXRlKiBleGVjLCBQcm9wZXJ0eU5hbWUgcHJvcGVydHlO
YW1lLCBQcm9wZXJ0eURlc2NyaXB0b3ImIGRlc2NyaXB0b3IpCiB7CiAgICAgcmV0dXJuIHJ1bnRp
bWVPYmplY3RDdXN0b21HZXRPd25Qcm9wZXJ0eURlc2NyaXB0b3IoZXhlYywgcHJvcGVydHlOYW1l
LCBkZXNjcmlwdG9yLCB0aGlzKTsKIH0KIAotYm9vbCBKU0hUTUxBcHBsZXRFbGVtZW50OjpwdXRE
ZWxlZ2F0ZShFeGVjU3RhdGUqIGV4ZWMsIGNvbnN0IElkZW50aWZpZXImIHByb3BlcnR5TmFtZSwg
SlNWYWx1ZSB2YWx1ZSwgUHV0UHJvcGVydHlTbG90JiBzbG90KQorYm9vbCBKU0hUTUxBcHBsZXRF
bGVtZW50OjpwdXREZWxlZ2F0ZShFeGVjU3RhdGUqIGV4ZWMsIFByb3BlcnR5TmFtZSBwcm9wZXJ0
eU5hbWUsIEpTVmFsdWUgdmFsdWUsIFB1dFByb3BlcnR5U2xvdCYgc2xvdCkKIHsKICAgICByZXR1
cm4gcnVudGltZU9iamVjdEN1c3RvbVB1dChleGVjLCBwcm9wZXJ0eU5hbWUsIHZhbHVlLCB0aGlz
LCBzbG90KTsKIH0KSW5kZXg6IFNvdXJjZS9XZWJDb3JlL2JpbmRpbmdzL2pzL0pTSFRNTENvbGxl
Y3Rpb25DdXN0b20uY3BwCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9XZWJDb3JlL2JpbmRpbmdzL2pz
L0pTSFRNTENvbGxlY3Rpb25DdXN0b20uY3BwCShyZXZpc2lvbiAxMTY2NjcpCisrKyBTb3VyY2Uv
V2ViQ29yZS9iaW5kaW5ncy9qcy9KU0hUTUxDb2xsZWN0aW9uQ3VzdG9tLmNwcAkod29ya2luZyBj
b3B5KQpAQCAtMzksMTAgKzM5LDEwIEBAIHVzaW5nIG5hbWVzcGFjZSBKU0M7CiAKIG5hbWVzcGFj
ZSBXZWJDb3JlIHsKIAotc3RhdGljIEpTVmFsdWUgZ2V0TmFtZWRJdGVtcyhFeGVjU3RhdGUqIGV4
ZWMsIEpTSFRNTENvbGxlY3Rpb24qIGNvbGxlY3Rpb24sIGNvbnN0IElkZW50aWZpZXImIHByb3Bl
cnR5TmFtZSkKK3N0YXRpYyBKU1ZhbHVlIGdldE5hbWVkSXRlbXMoRXhlY1N0YXRlKiBleGVjLCBK
U0hUTUxDb2xsZWN0aW9uKiBjb2xsZWN0aW9uLCBQcm9wZXJ0eU5hbWUgcHJvcGVydHlOYW1lKQog
ewogICAgIFZlY3RvcjxSZWZQdHI8Tm9kZT4gPiBuYW1lZEl0ZW1zOwotICAgIGNvbnN0IEF0b21p
Y1N0cmluZyYgbmFtZSA9IGlkZW50aWZpZXJUb0F0b21pY1N0cmluZyhwcm9wZXJ0eU5hbWUpOwor
ICAgIGNvbnN0IEF0b21pY1N0cmluZyYgbmFtZSA9IHByb3BlcnR5TmFtZVRvQXRvbWljU3RyaW5n
KHByb3BlcnR5TmFtZSk7CiAgICAgY29sbGVjdGlvbi0+aW1wbCgpLT5uYW1lZEl0ZW1zKG5hbWUs
IG5hbWVkSXRlbXMpOwogCiAgICAgaWYgKG5hbWVkSXRlbXMuaXNFbXB0eSgpKQpAQCAtNTksMTIg
KzU5LDEyIEBAIHN0YXRpYyBKU1ZhbHVlIGdldE5hbWVkSXRlbXMoRXhlY1N0YXRlKiAKICAgICBy
ZXR1cm4gdG9KUyhleGVjLCBjb2xsZWN0aW9uLT5nbG9iYWxPYmplY3QoKSwgU3RhdGljTm9kZUxp
c3Q6OmFkb3B0KG5hbWVkSXRlbXMpLmdldCgpKTsKIH0KIAotYm9vbCBKU0hUTUxDb2xsZWN0aW9u
OjpjYW5HZXRJdGVtc0Zvck5hbWUoRXhlY1N0YXRlKiwgSFRNTENvbGxlY3Rpb24qIGNvbGxlY3Rp
b24sIGNvbnN0IElkZW50aWZpZXImIHByb3BlcnR5TmFtZSkKK2Jvb2wgSlNIVE1MQ29sbGVjdGlv
bjo6Y2FuR2V0SXRlbXNGb3JOYW1lKEV4ZWNTdGF0ZSosIEhUTUxDb2xsZWN0aW9uKiBjb2xsZWN0
aW9uLCBQcm9wZXJ0eU5hbWUgcHJvcGVydHlOYW1lKQogewotICAgIHJldHVybiBjb2xsZWN0aW9u
LT5oYXNOYW1lZEl0ZW0oaWRlbnRpZmllclRvQXRvbWljU3RyaW5nKHByb3BlcnR5TmFtZSkpOwor
ICAgIHJldHVybiBjb2xsZWN0aW9uLT5oYXNOYW1lZEl0ZW0ocHJvcGVydHlOYW1lVG9BdG9taWNT
dHJpbmcocHJvcGVydHlOYW1lKSk7CiB9CiAKLUpTVmFsdWUgSlNIVE1MQ29sbGVjdGlvbjo6bmFt
ZUdldHRlcihFeGVjU3RhdGUqIGV4ZWMsIEpTVmFsdWUgc2xvdEJhc2UsIGNvbnN0IElkZW50aWZp
ZXImIHByb3BlcnR5TmFtZSkKK0pTVmFsdWUgSlNIVE1MQ29sbGVjdGlvbjo6bmFtZUdldHRlcihF
eGVjU3RhdGUqIGV4ZWMsIEpTVmFsdWUgc2xvdEJhc2UsIFByb3BlcnR5TmFtZSBwcm9wZXJ0eU5h
bWUpCiB7CiAgICAgSlNIVE1MQ29sbGVjdGlvbiogdGhpc09iaiA9IGpzQ2FzdDxKU0hUTUxDb2xs
ZWN0aW9uKj4oYXNPYmplY3Qoc2xvdEJhc2UpKTsKICAgICByZXR1cm4gZ2V0TmFtZWRJdGVtcyhl
eGVjLCB0aGlzT2JqLCBwcm9wZXJ0eU5hbWUpOwpJbmRleDogU291cmNlL1dlYkNvcmUvYmluZGlu
Z3MvanMvSlNIVE1MRG9jdW1lbnRDdXN0b20uY3BwCj09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9XZWJD
b3JlL2JpbmRpbmdzL2pzL0pTSFRNTERvY3VtZW50Q3VzdG9tLmNwcAkocmV2aXNpb24gMTE2NjY3
KQorKysgU291cmNlL1dlYkNvcmUvYmluZGluZ3MvanMvSlNIVE1MRG9jdW1lbnRDdXN0b20uY3Bw
CSh3b3JraW5nIGNvcHkpCkBAIC01MSwxOCArNTEsMTggQEAgbmFtZXNwYWNlIFdlYkNvcmUgewog
CiB1c2luZyBuYW1lc3BhY2UgSFRNTE5hbWVzOwogCi1ib29sIEpTSFRNTERvY3VtZW50OjpjYW5H
ZXRJdGVtc0Zvck5hbWUoRXhlY1N0YXRlKiwgSFRNTERvY3VtZW50KiBkb2N1bWVudCwgY29uc3Qg
SWRlbnRpZmllciYgcHJvcGVydHlOYW1lKQorYm9vbCBKU0hUTUxEb2N1bWVudDo6Y2FuR2V0SXRl
bXNGb3JOYW1lKEV4ZWNTdGF0ZSosIEhUTUxEb2N1bWVudCogZG9jdW1lbnQsIFByb3BlcnR5TmFt
ZSBwcm9wZXJ0eU5hbWUpCiB7CiAgICAgQXRvbWljU3RyaW5nSW1wbCogYXRvbWljUHJvcGVydHlO
YW1lID0gZmluZEF0b21pY1N0cmluZyhwcm9wZXJ0eU5hbWUpOwogICAgIHJldHVybiBhdG9taWNQ
cm9wZXJ0eU5hbWUgJiYgKGRvY3VtZW50LT5oYXNOYW1lZEl0ZW0oYXRvbWljUHJvcGVydHlOYW1l
KSB8fCBkb2N1bWVudC0+aGFzRXh0cmFOYW1lZEl0ZW0oYXRvbWljUHJvcGVydHlOYW1lKSk7CiB9
CiAKLUpTVmFsdWUgSlNIVE1MRG9jdW1lbnQ6Om5hbWVHZXR0ZXIoRXhlY1N0YXRlKiBleGVjLCBK
U1ZhbHVlIHNsb3RCYXNlLCBjb25zdCBJZGVudGlmaWVyJiBwcm9wZXJ0eU5hbWUpCitKU1ZhbHVl
IEpTSFRNTERvY3VtZW50OjpuYW1lR2V0dGVyKEV4ZWNTdGF0ZSogZXhlYywgSlNWYWx1ZSBzbG90
QmFzZSwgUHJvcGVydHlOYW1lIHByb3BlcnR5TmFtZSkKIHsKICAgICBKU0hUTUxEb2N1bWVudCog
dGhpc09iaiA9IGpzQ2FzdDxKU0hUTUxEb2N1bWVudCo+KGFzT2JqZWN0KHNsb3RCYXNlKSk7CiAg
ICAgSFRNTERvY3VtZW50KiBkb2N1bWVudCA9IHN0YXRpY19jYXN0PEhUTUxEb2N1bWVudCo+KHRo
aXNPYmotPmltcGwoKSk7CiAKLSAgICBIVE1MQ29sbGVjdGlvbiogY29sbGVjdGlvbiA9IGRvY3Vt
ZW50LT5kb2N1bWVudE5hbWVkSXRlbXMoaWRlbnRpZmllclRvQXRvbWljU3RyaW5nKHByb3BlcnR5
TmFtZSkpOworICAgIEhUTUxDb2xsZWN0aW9uKiBjb2xsZWN0aW9uID0gZG9jdW1lbnQtPmRvY3Vt
ZW50TmFtZWRJdGVtcyhwcm9wZXJ0eU5hbWVUb0F0b21pY1N0cmluZyhwcm9wZXJ0eU5hbWUpKTsK
IAogICAgIHVuc2lnbmVkIGxlbmd0aCA9IGNvbGxlY3Rpb24tPmxlbmd0aCgpOwogICAgIGlmICgh
bGVuZ3RoKQpJbmRleDogU291cmNlL1dlYkNvcmUvYmluZGluZ3MvanMvSlNIVE1MRW1iZWRFbGVt
ZW50Q3VzdG9tLmNwcAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2ViQ29yZS9iaW5kaW5ncy9qcy9K
U0hUTUxFbWJlZEVsZW1lbnRDdXN0b20uY3BwCShyZXZpc2lvbiAxMTY2NjcpCisrKyBTb3VyY2Uv
V2ViQ29yZS9iaW5kaW5ncy9qcy9KU0hUTUxFbWJlZEVsZW1lbnRDdXN0b20uY3BwCSh3b3JraW5n
IGNvcHkpCkBAIC0zMywxNyArMzMsMTcgQEAgbmFtZXNwYWNlIFdlYkNvcmUgewogCiB1c2luZyBu
YW1lc3BhY2UgSlNDOwogCi1ib29sIEpTSFRNTEVtYmVkRWxlbWVudDo6Z2V0T3duUHJvcGVydHlT
bG90RGVsZWdhdGUoRXhlY1N0YXRlKiBleGVjLCBjb25zdCBJZGVudGlmaWVyJiBwcm9wZXJ0eU5h
bWUsIFByb3BlcnR5U2xvdCYgc2xvdCkKK2Jvb2wgSlNIVE1MRW1iZWRFbGVtZW50OjpnZXRPd25Q
cm9wZXJ0eVNsb3REZWxlZ2F0ZShFeGVjU3RhdGUqIGV4ZWMsIFByb3BlcnR5TmFtZSBwcm9wZXJ0
eU5hbWUsIFByb3BlcnR5U2xvdCYgc2xvdCkKIHsKICAgICByZXR1cm4gcnVudGltZU9iamVjdEN1
c3RvbUdldE93blByb3BlcnR5U2xvdChleGVjLCBwcm9wZXJ0eU5hbWUsIHNsb3QsIHRoaXMpOwog
fQogCi1ib29sIEpTSFRNTEVtYmVkRWxlbWVudDo6Z2V0T3duUHJvcGVydHlEZXNjcmlwdG9yRGVs
ZWdhdGUoRXhlY1N0YXRlKiBleGVjLCBjb25zdCBJZGVudGlmaWVyJiBwcm9wZXJ0eU5hbWUsIFBy
b3BlcnR5RGVzY3JpcHRvciYgZGVzY3JpcHRvcikKK2Jvb2wgSlNIVE1MRW1iZWRFbGVtZW50Ojpn
ZXRPd25Qcm9wZXJ0eURlc2NyaXB0b3JEZWxlZ2F0ZShFeGVjU3RhdGUqIGV4ZWMsIFByb3BlcnR5
TmFtZSBwcm9wZXJ0eU5hbWUsIFByb3BlcnR5RGVzY3JpcHRvciYgZGVzY3JpcHRvcikKIHsKICAg
ICByZXR1cm4gcnVudGltZU9iamVjdEN1c3RvbUdldE93blByb3BlcnR5RGVzY3JpcHRvcihleGVj
LCBwcm9wZXJ0eU5hbWUsIGRlc2NyaXB0b3IsIHRoaXMpOwogfQogCi1ib29sIEpTSFRNTEVtYmVk
RWxlbWVudDo6cHV0RGVsZWdhdGUoRXhlY1N0YXRlKiBleGVjLCBjb25zdCBJZGVudGlmaWVyJiBw
cm9wZXJ0eU5hbWUsIEpTVmFsdWUgdmFsdWUsIFB1dFByb3BlcnR5U2xvdCYgc2xvdCkKK2Jvb2wg
SlNIVE1MRW1iZWRFbGVtZW50OjpwdXREZWxlZ2F0ZShFeGVjU3RhdGUqIGV4ZWMsIFByb3BlcnR5
TmFtZSBwcm9wZXJ0eU5hbWUsIEpTVmFsdWUgdmFsdWUsIFB1dFByb3BlcnR5U2xvdCYgc2xvdCkK
IHsKICAgICByZXR1cm4gcnVudGltZU9iamVjdEN1c3RvbVB1dChleGVjLCBwcm9wZXJ0eU5hbWUs
IHZhbHVlLCB0aGlzLCBzbG90KTsKIH0KSW5kZXg6IFNvdXJjZS9XZWJDb3JlL2JpbmRpbmdzL2pz
L0pTSFRNTEZvcm1FbGVtZW50Q3VzdG9tLmNwcAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2ViQ29y
ZS9iaW5kaW5ncy9qcy9KU0hUTUxGb3JtRWxlbWVudEN1c3RvbS5jcHAJKHJldmlzaW9uIDExNjY2
NykKKysrIFNvdXJjZS9XZWJDb3JlL2JpbmRpbmdzL2pzL0pTSFRNTEZvcm1FbGVtZW50Q3VzdG9t
LmNwcAkod29ya2luZyBjb3B5KQpAQCAtMzcsMjAgKzM3LDIwIEBAIHVzaW5nIG5hbWVzcGFjZSBK
U0M7CiAKIG5hbWVzcGFjZSBXZWJDb3JlIHsKIAotYm9vbCBKU0hUTUxGb3JtRWxlbWVudDo6Y2Fu
R2V0SXRlbXNGb3JOYW1lKEV4ZWNTdGF0ZSosIEhUTUxGb3JtRWxlbWVudCogZm9ybSwgY29uc3Qg
SWRlbnRpZmllciYgcHJvcGVydHlOYW1lKQorYm9vbCBKU0hUTUxGb3JtRWxlbWVudDo6Y2FuR2V0
SXRlbXNGb3JOYW1lKEV4ZWNTdGF0ZSosIEhUTUxGb3JtRWxlbWVudCogZm9ybSwgUHJvcGVydHlO
YW1lIHByb3BlcnR5TmFtZSkKIHsKICAgICBWZWN0b3I8UmVmUHRyPE5vZGU+ID4gbmFtZWRJdGVt
czsKLSAgICBmb3JtLT5nZXROYW1lZEVsZW1lbnRzKGlkZW50aWZpZXJUb0F0b21pY1N0cmluZyhw
cm9wZXJ0eU5hbWUpLCBuYW1lZEl0ZW1zKTsKKyAgICBmb3JtLT5nZXROYW1lZEVsZW1lbnRzKHBy
b3BlcnR5TmFtZVRvQXRvbWljU3RyaW5nKHByb3BlcnR5TmFtZSksIG5hbWVkSXRlbXMpOwogICAg
IHJldHVybiBuYW1lZEl0ZW1zLnNpemUoKTsKIH0KIAotSlNWYWx1ZSBKU0hUTUxGb3JtRWxlbWVu
dDo6bmFtZUdldHRlcihFeGVjU3RhdGUqIGV4ZWMsIEpTVmFsdWUgc2xvdEJhc2UsIGNvbnN0IElk
ZW50aWZpZXImIHByb3BlcnR5TmFtZSkKK0pTVmFsdWUgSlNIVE1MRm9ybUVsZW1lbnQ6Om5hbWVH
ZXR0ZXIoRXhlY1N0YXRlKiBleGVjLCBKU1ZhbHVlIHNsb3RCYXNlLCBQcm9wZXJ0eU5hbWUgcHJv
cGVydHlOYW1lKQogewogICAgIEpTSFRNTEVsZW1lbnQqIGpzRm9ybSA9IGpzQ2FzdDxKU0hUTUxG
b3JtRWxlbWVudCo+KGFzT2JqZWN0KHNsb3RCYXNlKSk7CiAgICAgSFRNTEZvcm1FbGVtZW50KiBm
b3JtID0gc3RhdGljX2Nhc3Q8SFRNTEZvcm1FbGVtZW50Kj4oanNGb3JtLT5pbXBsKCkpOwogCiAg
ICAgVmVjdG9yPFJlZlB0cjxOb2RlPiA+IG5hbWVkSXRlbXM7Ci0gICAgZm9ybS0+Z2V0TmFtZWRF
bGVtZW50cyhpZGVudGlmaWVyVG9BdG9taWNTdHJpbmcocHJvcGVydHlOYW1lKSwgbmFtZWRJdGVt
cyk7CisgICAgZm9ybS0+Z2V0TmFtZWRFbGVtZW50cyhwcm9wZXJ0eU5hbWVUb0F0b21pY1N0cmlu
Zyhwcm9wZXJ0eU5hbWUpLCBuYW1lZEl0ZW1zKTsKICAgICAKICAgICBpZiAobmFtZWRJdGVtcy5p
c0VtcHR5KCkpCiAgICAgICAgIHJldHVybiBqc1VuZGVmaW5lZCgpOwpJbmRleDogU291cmNlL1dl
YkNvcmUvYmluZGluZ3MvanMvSlNIVE1MRnJhbWVTZXRFbGVtZW50Q3VzdG9tLmNwcAo9PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09Ci0tLSBTb3VyY2UvV2ViQ29yZS9iaW5kaW5ncy9qcy9KU0hUTUxGcmFtZVNldEVsZW1lbnRD
dXN0b20uY3BwCShyZXZpc2lvbiAxMTY2NjcpCisrKyBTb3VyY2UvV2ViQ29yZS9iaW5kaW5ncy9q
cy9KU0hUTUxGcmFtZVNldEVsZW1lbnRDdXN0b20uY3BwCSh3b3JraW5nIGNvcHkpCkBAIC00MSwx
NiArNDEsMTYgQEAgbmFtZXNwYWNlIFdlYkNvcmUgewogCiB1c2luZyBuYW1lc3BhY2UgSFRNTE5h
bWVzOwogCi1ib29sIEpTSFRNTEZyYW1lU2V0RWxlbWVudDo6Y2FuR2V0SXRlbXNGb3JOYW1lKEV4
ZWNTdGF0ZSosIEhUTUxGcmFtZVNldEVsZW1lbnQqIGZyYW1lU2V0LCBjb25zdCBJZGVudGlmaWVy
JiBwcm9wZXJ0eU5hbWUpCitib29sIEpTSFRNTEZyYW1lU2V0RWxlbWVudDo6Y2FuR2V0SXRlbXNG
b3JOYW1lKEV4ZWNTdGF0ZSosIEhUTUxGcmFtZVNldEVsZW1lbnQqIGZyYW1lU2V0LCBQcm9wZXJ0
eU5hbWUgcHJvcGVydHlOYW1lKQogewotICAgIE5vZGUqIGZyYW1lID0gZnJhbWVTZXQtPmNoaWxk
cmVuKCktPm5hbWVkSXRlbShpZGVudGlmaWVyVG9BdG9taWNTdHJpbmcocHJvcGVydHlOYW1lKSk7
CisgICAgTm9kZSogZnJhbWUgPSBmcmFtZVNldC0+Y2hpbGRyZW4oKS0+bmFtZWRJdGVtKHByb3Bl
cnR5TmFtZVRvQXRvbWljU3RyaW5nKHByb3BlcnR5TmFtZSkpOwogICAgIHJldHVybiBmcmFtZSAm
JiBmcmFtZS0+aGFzVGFnTmFtZShmcmFtZVRhZyk7CiB9CiAKLUpTVmFsdWUgSlNIVE1MRnJhbWVT
ZXRFbGVtZW50OjpuYW1lR2V0dGVyKEV4ZWNTdGF0ZSogZXhlYywgSlNWYWx1ZSBzbG90QmFzZSwg
Y29uc3QgSWRlbnRpZmllciYgcHJvcGVydHlOYW1lKQorSlNWYWx1ZSBKU0hUTUxGcmFtZVNldEVs
ZW1lbnQ6Om5hbWVHZXR0ZXIoRXhlY1N0YXRlKiBleGVjLCBKU1ZhbHVlIHNsb3RCYXNlLCBQcm9w
ZXJ0eU5hbWUgcHJvcGVydHlOYW1lKQogewogICAgIEhUTUxFbGVtZW50KiBlbGVtZW50ID0ganND
YXN0PEpTSFRNTEVsZW1lbnQqPihhc09iamVjdChzbG90QmFzZSkpLT5pbXBsKCk7Ci0gICAgTm9k
ZSogZnJhbWVFbGVtZW50ID0gZWxlbWVudC0+Y2hpbGRyZW4oKS0+bmFtZWRJdGVtKGlkZW50aWZp
ZXJUb0F0b21pY1N0cmluZyhwcm9wZXJ0eU5hbWUpKTsKKyAgICBOb2RlKiBmcmFtZUVsZW1lbnQg
PSBlbGVtZW50LT5jaGlsZHJlbigpLT5uYW1lZEl0ZW0ocHJvcGVydHlOYW1lVG9BdG9taWNTdHJp
bmcocHJvcGVydHlOYW1lKSk7CiAgICAgaWYgKERvY3VtZW50KiBkb2N1bWVudCA9IHN0YXRpY19j
YXN0PEhUTUxGcmFtZUVsZW1lbnQqPihmcmFtZUVsZW1lbnQpLT5jb250ZW50RG9jdW1lbnQoKSkg
ewogICAgICAgICBpZiAoSlNET01XaW5kb3dTaGVsbCogd2luZG93ID0gdG9KU0RPTVdpbmRvd1No
ZWxsKGRvY3VtZW50LT5mcmFtZSgpLCBjdXJyZW50V29ybGQoZXhlYykpKQogICAgICAgICAgICAg
cmV0dXJuIHdpbmRvdzsKSW5kZXg6IFNvdXJjZS9XZWJDb3JlL2JpbmRpbmdzL2pzL0pTSFRNTE9i
amVjdEVsZW1lbnRDdXN0b20uY3BwCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9XZWJDb3JlL2JpbmRp
bmdzL2pzL0pTSFRNTE9iamVjdEVsZW1lbnRDdXN0b20uY3BwCShyZXZpc2lvbiAxMTY2NjcpCisr
KyBTb3VyY2UvV2ViQ29yZS9iaW5kaW5ncy9qcy9KU0hUTUxPYmplY3RFbGVtZW50Q3VzdG9tLmNw
cAkod29ya2luZyBjb3B5KQpAQCAtMzMsMTcgKzMzLDE3IEBAIG5hbWVzcGFjZSBXZWJDb3JlIHsK
IAogdXNpbmcgbmFtZXNwYWNlIEpTQzsKIAotYm9vbCBKU0hUTUxPYmplY3RFbGVtZW50OjpnZXRP
d25Qcm9wZXJ0eVNsb3REZWxlZ2F0ZShFeGVjU3RhdGUqIGV4ZWMsIGNvbnN0IElkZW50aWZpZXIm
IHByb3BlcnR5TmFtZSwgUHJvcGVydHlTbG90JiBzbG90KQorYm9vbCBKU0hUTUxPYmplY3RFbGVt
ZW50OjpnZXRPd25Qcm9wZXJ0eVNsb3REZWxlZ2F0ZShFeGVjU3RhdGUqIGV4ZWMsIFByb3BlcnR5
TmFtZSBwcm9wZXJ0eU5hbWUsIFByb3BlcnR5U2xvdCYgc2xvdCkKIHsKICAgICByZXR1cm4gcnVu
dGltZU9iamVjdEN1c3RvbUdldE93blByb3BlcnR5U2xvdChleGVjLCBwcm9wZXJ0eU5hbWUsIHNs
b3QsIHRoaXMpOwogfQogCi1ib29sIEpTSFRNTE9iamVjdEVsZW1lbnQ6OmdldE93blByb3BlcnR5
RGVzY3JpcHRvckRlbGVnYXRlKEV4ZWNTdGF0ZSogZXhlYywgY29uc3QgSWRlbnRpZmllciYgcHJv
cGVydHlOYW1lLCBQcm9wZXJ0eURlc2NyaXB0b3ImIGRlc2NyaXB0b3IpCitib29sIEpTSFRNTE9i
amVjdEVsZW1lbnQ6OmdldE93blByb3BlcnR5RGVzY3JpcHRvckRlbGVnYXRlKEV4ZWNTdGF0ZSog
ZXhlYywgUHJvcGVydHlOYW1lIHByb3BlcnR5TmFtZSwgUHJvcGVydHlEZXNjcmlwdG9yJiBkZXNj
cmlwdG9yKQogewogICAgIHJldHVybiBydW50aW1lT2JqZWN0Q3VzdG9tR2V0T3duUHJvcGVydHlE
ZXNjcmlwdG9yKGV4ZWMsIHByb3BlcnR5TmFtZSwgZGVzY3JpcHRvciwgdGhpcyk7CiB9CiAKLWJv
b2wgSlNIVE1MT2JqZWN0RWxlbWVudDo6cHV0RGVsZWdhdGUoRXhlY1N0YXRlKiBleGVjLCBjb25z
dCBJZGVudGlmaWVyJiBwcm9wZXJ0eU5hbWUsIEpTVmFsdWUgdmFsdWUsIFB1dFByb3BlcnR5U2xv
dCYgc2xvdCkKK2Jvb2wgSlNIVE1MT2JqZWN0RWxlbWVudDo6cHV0RGVsZWdhdGUoRXhlY1N0YXRl
KiBleGVjLCBQcm9wZXJ0eU5hbWUgcHJvcGVydHlOYW1lLCBKU1ZhbHVlIHZhbHVlLCBQdXRQcm9w
ZXJ0eVNsb3QmIHNsb3QpCiB7CiAgICAgcmV0dXJuIHJ1bnRpbWVPYmplY3RDdXN0b21QdXQoZXhl
YywgcHJvcGVydHlOYW1lLCB2YWx1ZSwgdGhpcywgc2xvdCk7CiB9CkluZGV4OiBTb3VyY2UvV2Vi
Q29yZS9iaW5kaW5ncy9qcy9KU0hpc3RvcnlDdXN0b20uY3BwCj09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJj
ZS9XZWJDb3JlL2JpbmRpbmdzL2pzL0pTSGlzdG9yeUN1c3RvbS5jcHAJKHJldmlzaW9uIDExNjY2
NykKKysrIFNvdXJjZS9XZWJDb3JlL2JpbmRpbmdzL2pzL0pTSGlzdG9yeUN1c3RvbS5jcHAJKHdv
cmtpbmcgY29weSkKQEAgLTM4LDIyICszOCwyMiBAQCB1c2luZyBuYW1lc3BhY2UgSlNDOwogCiBu
YW1lc3BhY2UgV2ViQ29yZSB7CiAKLXN0YXRpYyBKU1ZhbHVlIG5vbkNhY2hpbmdTdGF0aWNCYWNr
RnVuY3Rpb25HZXR0ZXIoRXhlY1N0YXRlKiBleGVjLCBKU1ZhbHVlLCBjb25zdCBJZGVudGlmaWVy
JiBwcm9wZXJ0eU5hbWUpCitzdGF0aWMgSlNWYWx1ZSBub25DYWNoaW5nU3RhdGljQmFja0Z1bmN0
aW9uR2V0dGVyKEV4ZWNTdGF0ZSogZXhlYywgSlNWYWx1ZSwgUHJvcGVydHlOYW1lIHByb3BlcnR5
TmFtZSkKIHsKLSAgICByZXR1cm4gSlNGdW5jdGlvbjo6Y3JlYXRlKGV4ZWMsIGV4ZWMtPmxleGlj
YWxHbG9iYWxPYmplY3QoKSwgMCwgcHJvcGVydHlOYW1lLCBqc0hpc3RvcnlQcm90b3R5cGVGdW5j
dGlvbkJhY2spOworICAgIHJldHVybiBKU0Z1bmN0aW9uOjpjcmVhdGUoZXhlYywgZXhlYy0+bGV4
aWNhbEdsb2JhbE9iamVjdCgpLCAwLCBwcm9wZXJ0eU5hbWUuaW1wbCgpLCBqc0hpc3RvcnlQcm90
b3R5cGVGdW5jdGlvbkJhY2spOwogfQogCi1zdGF0aWMgSlNWYWx1ZSBub25DYWNoaW5nU3RhdGlj
Rm9yd2FyZEZ1bmN0aW9uR2V0dGVyKEV4ZWNTdGF0ZSogZXhlYywgSlNWYWx1ZSwgY29uc3QgSWRl
bnRpZmllciYgcHJvcGVydHlOYW1lKQorc3RhdGljIEpTVmFsdWUgbm9uQ2FjaGluZ1N0YXRpY0Zv
cndhcmRGdW5jdGlvbkdldHRlcihFeGVjU3RhdGUqIGV4ZWMsIEpTVmFsdWUsIFByb3BlcnR5TmFt
ZSBwcm9wZXJ0eU5hbWUpCiB7Ci0gICAgcmV0dXJuIEpTRnVuY3Rpb246OmNyZWF0ZShleGVjLCBl
eGVjLT5sZXhpY2FsR2xvYmFsT2JqZWN0KCksIDAsIHByb3BlcnR5TmFtZSwganNIaXN0b3J5UHJv
dG90eXBlRnVuY3Rpb25Gb3J3YXJkKTsKKyAgICByZXR1cm4gSlNGdW5jdGlvbjo6Y3JlYXRlKGV4
ZWMsIGV4ZWMtPmxleGljYWxHbG9iYWxPYmplY3QoKSwgMCwgcHJvcGVydHlOYW1lLmltcGwoKSwg
anNIaXN0b3J5UHJvdG90eXBlRnVuY3Rpb25Gb3J3YXJkKTsKIH0KIAotc3RhdGljIEpTVmFsdWUg
bm9uQ2FjaGluZ1N0YXRpY0dvRnVuY3Rpb25HZXR0ZXIoRXhlY1N0YXRlKiBleGVjLCBKU1ZhbHVl
LCBjb25zdCBJZGVudGlmaWVyJiBwcm9wZXJ0eU5hbWUpCitzdGF0aWMgSlNWYWx1ZSBub25DYWNo
aW5nU3RhdGljR29GdW5jdGlvbkdldHRlcihFeGVjU3RhdGUqIGV4ZWMsIEpTVmFsdWUsIFByb3Bl
cnR5TmFtZSBwcm9wZXJ0eU5hbWUpCiB7Ci0gICAgcmV0dXJuIEpTRnVuY3Rpb246OmNyZWF0ZShl
eGVjLCBleGVjLT5sZXhpY2FsR2xvYmFsT2JqZWN0KCksIDEsIHByb3BlcnR5TmFtZSwganNIaXN0
b3J5UHJvdG90eXBlRnVuY3Rpb25Hbyk7CisgICAgcmV0dXJuIEpTRnVuY3Rpb246OmNyZWF0ZShl
eGVjLCBleGVjLT5sZXhpY2FsR2xvYmFsT2JqZWN0KCksIDEsIHByb3BlcnR5TmFtZS5pbXBsKCks
IGpzSGlzdG9yeVByb3RvdHlwZUZ1bmN0aW9uR28pOwogfQogCi1ib29sIEpTSGlzdG9yeTo6Z2V0
T3duUHJvcGVydHlTbG90RGVsZWdhdGUoRXhlY1N0YXRlKiBleGVjLCBjb25zdCBJZGVudGlmaWVy
JiBwcm9wZXJ0eU5hbWUsIFByb3BlcnR5U2xvdCYgc2xvdCkKK2Jvb2wgSlNIaXN0b3J5OjpnZXRP
d25Qcm9wZXJ0eVNsb3REZWxlZ2F0ZShFeGVjU3RhdGUqIGV4ZWMsIFByb3BlcnR5TmFtZSBwcm9w
ZXJ0eU5hbWUsIFByb3BlcnR5U2xvdCYgc2xvdCkKIHsKICAgICAvLyBXaGVuIGFjY2Vzc2luZyBI
aXN0b3J5IGNyb3NzLWRvbWFpbiwgZnVuY3Rpb25zIGFyZSBhbHdheXMgdGhlIG5hdGl2ZSBidWls
dC1pbiBvbmVzLgogICAgIC8vIFNlZSBKU0RPTVdpbmRvdzo6Z2V0T3duUHJvcGVydHlTbG90RGVs
ZWdhdGUgZm9yIGFkZGl0aW9uYWwgZGV0YWlscy4KQEAgLTkzLDcgKzkzLDcgQEAgYm9vbCBKU0hp
c3Rvcnk6OmdldE93blByb3BlcnR5U2xvdERlbGVnYQogICAgIHJldHVybiB0cnVlOwogfQogCi1i
b29sIEpTSGlzdG9yeTo6Z2V0T3duUHJvcGVydHlEZXNjcmlwdG9yRGVsZWdhdGUoRXhlY1N0YXRl
KiBleGVjLCBjb25zdCBJZGVudGlmaWVyJiBwcm9wZXJ0eU5hbWUsIFByb3BlcnR5RGVzY3JpcHRv
ciYgZGVzY3JpcHRvcikKK2Jvb2wgSlNIaXN0b3J5OjpnZXRPd25Qcm9wZXJ0eURlc2NyaXB0b3JE
ZWxlZ2F0ZShFeGVjU3RhdGUqIGV4ZWMsIFByb3BlcnR5TmFtZSBwcm9wZXJ0eU5hbWUsIFByb3Bl
cnR5RGVzY3JpcHRvciYgZGVzY3JpcHRvcikKIHsKICAgICBpZiAoIWltcGwoKS0+ZnJhbWUoKSkg
ewogICAgICAgICBkZXNjcmlwdG9yLnNldFVuZGVmaW5lZCgpOwpAQCAtMTM4LDcgKzEzOCw3IEBA
IGJvb2wgSlNIaXN0b3J5OjpnZXRPd25Qcm9wZXJ0eURlc2NyaXB0b3IKICAgICByZXR1cm4gdHJ1
ZTsKIH0KIAotYm9vbCBKU0hpc3Rvcnk6OnB1dERlbGVnYXRlKEV4ZWNTdGF0ZSogZXhlYywgY29u
c3QgSWRlbnRpZmllciYsIEpTVmFsdWUsIFB1dFByb3BlcnR5U2xvdCYpCitib29sIEpTSGlzdG9y
eTo6cHV0RGVsZWdhdGUoRXhlY1N0YXRlKiBleGVjLCBQcm9wZXJ0eU5hbWUsIEpTVmFsdWUsIFB1
dFByb3BlcnR5U2xvdCYpCiB7CiAgICAgLy8gT25seSBhbGxvdyBwdXR0aW5nIGJ5IGZyYW1lcyBp
biB0aGUgc2FtZSBvcmlnaW4uCiAgICAgaWYgKCFzaG91bGRBbGxvd0FjY2Vzc1RvRnJhbWUoZXhl
YywgaW1wbCgpLT5mcmFtZSgpKSkKQEAgLTE0Niw3ICsxNDYsNyBAQCBib29sIEpTSGlzdG9yeTo6
cHV0RGVsZWdhdGUoRXhlY1N0YXRlKiBlCiAgICAgcmV0dXJuIGZhbHNlOwogfQogCi1ib29sIEpT
SGlzdG9yeTo6ZGVsZXRlUHJvcGVydHkoSlNDZWxsKiBjZWxsLCBFeGVjU3RhdGUqIGV4ZWMsIGNv
bnN0IElkZW50aWZpZXImIHByb3BlcnR5TmFtZSkKK2Jvb2wgSlNIaXN0b3J5OjpkZWxldGVQcm9w
ZXJ0eShKU0NlbGwqIGNlbGwsIEV4ZWNTdGF0ZSogZXhlYywgUHJvcGVydHlOYW1lIHByb3BlcnR5
TmFtZSkKIHsKICAgICBKU0hpc3RvcnkqIHRoaXNPYmplY3QgPSBqc0Nhc3Q8SlNIaXN0b3J5Kj4o
Y2VsbCk7CiAgICAgLy8gT25seSBhbGxvdyBkZWxldGluZyBieSBmcmFtZXMgaW4gdGhlIHNhbWUg
b3JpZ2luLgpJbmRleDogU291cmNlL1dlYkNvcmUvYmluZGluZ3MvanMvSlNMb2NhdGlvbkN1c3Rv
bS5jcHAKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PQotLS0gU291cmNlL1dlYkNvcmUvYmluZGluZ3MvanMvSlNMb2NhdGlv
bkN1c3RvbS5jcHAJKHJldmlzaW9uIDExNjY2NykKKysrIFNvdXJjZS9XZWJDb3JlL2JpbmRpbmdz
L2pzL0pTTG9jYXRpb25DdXN0b20uY3BwCSh3b3JraW5nIGNvcHkpCkBAIC0zMCwyMiArMzAsMjIg
QEAgdXNpbmcgbmFtZXNwYWNlIEpTQzsKIAogbmFtZXNwYWNlIFdlYkNvcmUgewogCi1zdGF0aWMg
SlNWYWx1ZSBub25DYWNoaW5nU3RhdGljUmVwbGFjZUZ1bmN0aW9uR2V0dGVyKEV4ZWNTdGF0ZSog
ZXhlYywgSlNWYWx1ZSwgY29uc3QgSWRlbnRpZmllciYgcHJvcGVydHlOYW1lKQorc3RhdGljIEpT
VmFsdWUgbm9uQ2FjaGluZ1N0YXRpY1JlcGxhY2VGdW5jdGlvbkdldHRlcihFeGVjU3RhdGUqIGV4
ZWMsIEpTVmFsdWUsIFByb3BlcnR5TmFtZSBwcm9wZXJ0eU5hbWUpCiB7Ci0gICAgcmV0dXJuIEpT
RnVuY3Rpb246OmNyZWF0ZShleGVjLCBleGVjLT5sZXhpY2FsR2xvYmFsT2JqZWN0KCksIDEsIHBy
b3BlcnR5TmFtZSwganNMb2NhdGlvblByb3RvdHlwZUZ1bmN0aW9uUmVwbGFjZSk7CisgICAgcmV0
dXJuIEpTRnVuY3Rpb246OmNyZWF0ZShleGVjLCBleGVjLT5sZXhpY2FsR2xvYmFsT2JqZWN0KCks
IDEsIHByb3BlcnR5TmFtZS5pbXBsKCksIGpzTG9jYXRpb25Qcm90b3R5cGVGdW5jdGlvblJlcGxh
Y2UpOwogfQogCi1zdGF0aWMgSlNWYWx1ZSBub25DYWNoaW5nU3RhdGljUmVsb2FkRnVuY3Rpb25H
ZXR0ZXIoRXhlY1N0YXRlKiBleGVjLCBKU1ZhbHVlLCBjb25zdCBJZGVudGlmaWVyJiBwcm9wZXJ0
eU5hbWUpCitzdGF0aWMgSlNWYWx1ZSBub25DYWNoaW5nU3RhdGljUmVsb2FkRnVuY3Rpb25HZXR0
ZXIoRXhlY1N0YXRlKiBleGVjLCBKU1ZhbHVlLCBQcm9wZXJ0eU5hbWUgcHJvcGVydHlOYW1lKQog
ewotICAgIHJldHVybiBKU0Z1bmN0aW9uOjpjcmVhdGUoZXhlYywgZXhlYy0+bGV4aWNhbEdsb2Jh
bE9iamVjdCgpLCAwLCBwcm9wZXJ0eU5hbWUsIGpzTG9jYXRpb25Qcm90b3R5cGVGdW5jdGlvblJl
bG9hZCk7CisgICAgcmV0dXJuIEpTRnVuY3Rpb246OmNyZWF0ZShleGVjLCBleGVjLT5sZXhpY2Fs
R2xvYmFsT2JqZWN0KCksIDAsIHByb3BlcnR5TmFtZS5pbXBsKCksIGpzTG9jYXRpb25Qcm90b3R5
cGVGdW5jdGlvblJlbG9hZCk7CiB9CiAKLXN0YXRpYyBKU1ZhbHVlIG5vbkNhY2hpbmdTdGF0aWNB
c3NpZ25GdW5jdGlvbkdldHRlcihFeGVjU3RhdGUqIGV4ZWMsIEpTVmFsdWUsIGNvbnN0IElkZW50
aWZpZXImIHByb3BlcnR5TmFtZSkKK3N0YXRpYyBKU1ZhbHVlIG5vbkNhY2hpbmdTdGF0aWNBc3Np
Z25GdW5jdGlvbkdldHRlcihFeGVjU3RhdGUqIGV4ZWMsIEpTVmFsdWUsIFByb3BlcnR5TmFtZSBw
cm9wZXJ0eU5hbWUpCiB7Ci0gICAgcmV0dXJuIEpTRnVuY3Rpb246OmNyZWF0ZShleGVjLCBleGVj
LT5sZXhpY2FsR2xvYmFsT2JqZWN0KCksIDEsIHByb3BlcnR5TmFtZSwganNMb2NhdGlvblByb3Rv
dHlwZUZ1bmN0aW9uQXNzaWduKTsKKyAgICByZXR1cm4gSlNGdW5jdGlvbjo6Y3JlYXRlKGV4ZWMs
IGV4ZWMtPmxleGljYWxHbG9iYWxPYmplY3QoKSwgMSwgcHJvcGVydHlOYW1lLmltcGwoKSwganNM
b2NhdGlvblByb3RvdHlwZUZ1bmN0aW9uQXNzaWduKTsKIH0KIAotYm9vbCBKU0xvY2F0aW9uOjpn
ZXRPd25Qcm9wZXJ0eVNsb3REZWxlZ2F0ZShFeGVjU3RhdGUqIGV4ZWMsIGNvbnN0IElkZW50aWZp
ZXImIHByb3BlcnR5TmFtZSwgUHJvcGVydHlTbG90JiBzbG90KQorYm9vbCBKU0xvY2F0aW9uOjpn
ZXRPd25Qcm9wZXJ0eVNsb3REZWxlZ2F0ZShFeGVjU3RhdGUqIGV4ZWMsIFByb3BlcnR5TmFtZSBw
cm9wZXJ0eU5hbWUsIFByb3BlcnR5U2xvdCYgc2xvdCkKIHsKICAgICBGcmFtZSogZnJhbWUgPSBp
bXBsKCktPmZyYW1lKCk7CiAgICAgaWYgKCFmcmFtZSkgewpAQCAtODYsNyArODYsNyBAQCBib29s
IEpTTG9jYXRpb246OmdldE93blByb3BlcnR5U2xvdERlbGVnCiAgICAgcmV0dXJuIHRydWU7CiB9
CiAKLWJvb2wgSlNMb2NhdGlvbjo6Z2V0T3duUHJvcGVydHlEZXNjcmlwdG9yRGVsZWdhdGUoRXhl
Y1N0YXRlKiBleGVjLCBjb25zdCBJZGVudGlmaWVyJiBwcm9wZXJ0eU5hbWUsIFByb3BlcnR5RGVz
Y3JpcHRvciYgZGVzY3JpcHRvcikKK2Jvb2wgSlNMb2NhdGlvbjo6Z2V0T3duUHJvcGVydHlEZXNj
cmlwdG9yRGVsZWdhdGUoRXhlY1N0YXRlKiBleGVjLCBQcm9wZXJ0eU5hbWUgcHJvcGVydHlOYW1l
LCBQcm9wZXJ0eURlc2NyaXB0b3ImIGRlc2NyaXB0b3IpCiB7CiAgICAgRnJhbWUqIGZyYW1lID0g
aW1wbCgpLT5mcmFtZSgpOwogICAgIGlmICghZnJhbWUpIHsKQEAgLTEyNSw3ICsxMjUsNyBAQCBi
b29sIEpTTG9jYXRpb246OmdldE93blByb3BlcnR5RGVzY3JpcHRvCiAgICAgcmV0dXJuIHRydWU7
CiB9CiAKLWJvb2wgSlNMb2NhdGlvbjo6cHV0RGVsZWdhdGUoRXhlY1N0YXRlKiBleGVjLCBjb25z
dCBJZGVudGlmaWVyJiBwcm9wZXJ0eU5hbWUsIEpTVmFsdWUgdmFsdWUsIFB1dFByb3BlcnR5U2xv
dCYgc2xvdCkKK2Jvb2wgSlNMb2NhdGlvbjo6cHV0RGVsZWdhdGUoRXhlY1N0YXRlKiBleGVjLCBQ
cm9wZXJ0eU5hbWUgcHJvcGVydHlOYW1lLCBKU1ZhbHVlIHZhbHVlLCBQdXRQcm9wZXJ0eVNsb3Qm
IHNsb3QpCiB7CiAgICAgRnJhbWUqIGZyYW1lID0gaW1wbCgpLT5mcmFtZSgpOwogICAgIGlmICgh
ZnJhbWUpCkBAIC0xNTIsNyArMTUyLDcgQEAgYm9vbCBKU0xvY2F0aW9uOjpwdXREZWxlZ2F0ZShF
eGVjU3RhdGUqIAogICAgIHJldHVybiBmYWxzZTsKIH0KIAotYm9vbCBKU0xvY2F0aW9uOjpkZWxl
dGVQcm9wZXJ0eShKU0NlbGwqIGNlbGwsIEV4ZWNTdGF0ZSogZXhlYywgY29uc3QgSWRlbnRpZmll
ciYgcHJvcGVydHlOYW1lKQorYm9vbCBKU0xvY2F0aW9uOjpkZWxldGVQcm9wZXJ0eShKU0NlbGwq
IGNlbGwsIEV4ZWNTdGF0ZSogZXhlYywgUHJvcGVydHlOYW1lIHByb3BlcnR5TmFtZSkKIHsKICAg
ICBKU0xvY2F0aW9uKiB0aGlzT2JqZWN0ID0ganNDYXN0PEpTTG9jYXRpb24qPihjZWxsKTsKICAg
ICAvLyBPbmx5IGFsbG93IGRlbGV0aW5nIGJ5IGZyYW1lcyBpbiB0aGUgc2FtZSBvcmlnaW4uCkBA
IC0xNzAsNyArMTcwLDcgQEAgdm9pZCBKU0xvY2F0aW9uOjpnZXRPd25Qcm9wZXJ0eU5hbWVzKEpT
TwogICAgIEJhc2U6OmdldE93blByb3BlcnR5TmFtZXModGhpc09iamVjdCwgZXhlYywgcHJvcGVy
dHlOYW1lcywgbW9kZSk7CiB9CiAKLWJvb2wgSlNMb2NhdGlvbjo6ZGVmaW5lT3duUHJvcGVydHko
SlNPYmplY3QqIG9iamVjdCwgRXhlY1N0YXRlKiBleGVjLCBjb25zdCBJZGVudGlmaWVyJiBwcm9w
ZXJ0eU5hbWUsIFByb3BlcnR5RGVzY3JpcHRvciYgZGVzY3JpcHRvciwgYm9vbCB0aHJvd0V4Y2Vw
dGlvbikKK2Jvb2wgSlNMb2NhdGlvbjo6ZGVmaW5lT3duUHJvcGVydHkoSlNPYmplY3QqIG9iamVj
dCwgRXhlY1N0YXRlKiBleGVjLCBQcm9wZXJ0eU5hbWUgcHJvcGVydHlOYW1lLCBQcm9wZXJ0eURl
c2NyaXB0b3ImIGRlc2NyaXB0b3IsIGJvb2wgdGhyb3dFeGNlcHRpb24pCiB7CiAgICAgaWYgKGRl
c2NyaXB0b3IuaXNBY2Nlc3NvckRlc2NyaXB0b3IoKSAmJiAocHJvcGVydHlOYW1lID09IGV4ZWMt
PnByb3BlcnR5TmFtZXMoKS50b1N0cmluZyB8fCBwcm9wZXJ0eU5hbWUgPT0gZXhlYy0+cHJvcGVy
dHlOYW1lcygpLnZhbHVlT2YpKQogICAgICAgICByZXR1cm4gZmFsc2U7CkBAIC0yNzYsMTIgKzI3
NiwxMiBAQCBKU1ZhbHVlIEpTTG9jYXRpb246OnRvU3RyaW5nRnVuY3Rpb24oRXhlCiAgICAgcmV0
dXJuIGpzU3RyaW5nKGV4ZWMsIGltcGwoKS0+dG9TdHJpbmcoKSk7CiB9CiAKLWJvb2wgSlNMb2Nh
dGlvblByb3RvdHlwZTo6cHV0RGVsZWdhdGUoRXhlY1N0YXRlKiBleGVjLCBjb25zdCBJZGVudGlm
aWVyJiBwcm9wZXJ0eU5hbWUsIEpTVmFsdWUsIFB1dFByb3BlcnR5U2xvdCYpCitib29sIEpTTG9j
YXRpb25Qcm90b3R5cGU6OnB1dERlbGVnYXRlKEV4ZWNTdGF0ZSogZXhlYywgUHJvcGVydHlOYW1l
IHByb3BlcnR5TmFtZSwgSlNWYWx1ZSwgUHV0UHJvcGVydHlTbG90JikKIHsKICAgICByZXR1cm4g
KHByb3BlcnR5TmFtZSA9PSBleGVjLT5wcm9wZXJ0eU5hbWVzKCkudG9TdHJpbmcgfHwgcHJvcGVy
dHlOYW1lID09IGV4ZWMtPnByb3BlcnR5TmFtZXMoKS52YWx1ZU9mKTsKIH0KIAotYm9vbCBKU0xv
Y2F0aW9uUHJvdG90eXBlOjpkZWZpbmVPd25Qcm9wZXJ0eShKU09iamVjdCogb2JqZWN0LCBFeGVj
U3RhdGUqIGV4ZWMsIGNvbnN0IElkZW50aWZpZXImIHByb3BlcnR5TmFtZSwgUHJvcGVydHlEZXNj
cmlwdG9yJiBkZXNjcmlwdG9yLCBib29sIHRocm93RXhjZXB0aW9uKQorYm9vbCBKU0xvY2F0aW9u
UHJvdG90eXBlOjpkZWZpbmVPd25Qcm9wZXJ0eShKU09iamVjdCogb2JqZWN0LCBFeGVjU3RhdGUq
IGV4ZWMsIFByb3BlcnR5TmFtZSBwcm9wZXJ0eU5hbWUsIFByb3BlcnR5RGVzY3JpcHRvciYgZGVz
Y3JpcHRvciwgYm9vbCB0aHJvd0V4Y2VwdGlvbikKIHsKICAgICBpZiAoZGVzY3JpcHRvci5pc0Fj
Y2Vzc29yRGVzY3JpcHRvcigpICYmIChwcm9wZXJ0eU5hbWUgPT0gZXhlYy0+cHJvcGVydHlOYW1l
cygpLnRvU3RyaW5nIHx8IHByb3BlcnR5TmFtZSA9PSBleGVjLT5wcm9wZXJ0eU5hbWVzKCkudmFs
dWVPZikpCiAgICAgICAgIHJldHVybiBmYWxzZTsKSW5kZXg6IFNvdXJjZS9XZWJDb3JlL2JpbmRp
bmdzL2pzL0pTTmFtZWROb2RlTWFwQ3VzdG9tLmNwcAo9PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2Vi
Q29yZS9iaW5kaW5ncy9qcy9KU05hbWVkTm9kZU1hcEN1c3RvbS5jcHAJKHJldmlzaW9uIDExNjY2
NykKKysrIFNvdXJjZS9XZWJDb3JlL2JpbmRpbmdzL2pzL0pTTmFtZWROb2RlTWFwQ3VzdG9tLmNw
cAkod29ya2luZyBjb3B5KQpAQCAtMzUsMTUgKzM1LDE1IEBAIHVzaW5nIG5hbWVzcGFjZSBKU0M7
CiAKIG5hbWVzcGFjZSBXZWJDb3JlIHsKIAotYm9vbCBKU05hbWVkTm9kZU1hcDo6Y2FuR2V0SXRl
bXNGb3JOYW1lKEV4ZWNTdGF0ZSosIE5hbWVkTm9kZU1hcCogaW1wbCwgY29uc3QgSWRlbnRpZmll
ciYgcHJvcGVydHlOYW1lKQorYm9vbCBKU05hbWVkTm9kZU1hcDo6Y2FuR2V0SXRlbXNGb3JOYW1l
KEV4ZWNTdGF0ZSosIE5hbWVkTm9kZU1hcCogaW1wbCwgUHJvcGVydHlOYW1lIHByb3BlcnR5TmFt
ZSkKIHsKLSAgICByZXR1cm4gaW1wbC0+Z2V0TmFtZWRJdGVtKGlkZW50aWZpZXJUb1N0cmluZyhw
cm9wZXJ0eU5hbWUpKTsKKyAgICByZXR1cm4gaW1wbC0+Z2V0TmFtZWRJdGVtKHByb3BlcnR5TmFt
ZVRvU3RyaW5nKHByb3BlcnR5TmFtZSkpOwogfQogCi1KU1ZhbHVlIEpTTmFtZWROb2RlTWFwOjpu
YW1lR2V0dGVyKEV4ZWNTdGF0ZSogZXhlYywgSlNWYWx1ZSBzbG90QmFzZSwgY29uc3QgSWRlbnRp
ZmllciYgcHJvcGVydHlOYW1lKQorSlNWYWx1ZSBKU05hbWVkTm9kZU1hcDo6bmFtZUdldHRlcihF
eGVjU3RhdGUqIGV4ZWMsIEpTVmFsdWUgc2xvdEJhc2UsIFByb3BlcnR5TmFtZSBwcm9wZXJ0eU5h
bWUpCiB7CiAgICAgSlNOYW1lZE5vZGVNYXAqIHRoaXNPYmogPSBqc0Nhc3Q8SlNOYW1lZE5vZGVN
YXAqPihhc09iamVjdChzbG90QmFzZSkpOwotICAgIHJldHVybiB0b0pTKGV4ZWMsIHRoaXNPYmot
Pmdsb2JhbE9iamVjdCgpLCB0aGlzT2JqLT5pbXBsKCktPmdldE5hbWVkSXRlbShpZGVudGlmaWVy
VG9TdHJpbmcocHJvcGVydHlOYW1lKSkpOworICAgIHJldHVybiB0b0pTKGV4ZWMsIHRoaXNPYmot
Pmdsb2JhbE9iamVjdCgpLCB0aGlzT2JqLT5pbXBsKCktPmdldE5hbWVkSXRlbShwcm9wZXJ0eU5h
bWVUb1N0cmluZyhwcm9wZXJ0eU5hbWUpKSk7CiB9CiAKIHZvaWQgSlNOYW1lZE5vZGVNYXA6OnZp
c2l0Q2hpbGRyZW4oSlNDZWxsKiBjZWxsLCBTbG90VmlzaXRvciYgdmlzaXRvcikKSW5kZXg6IFNv
dXJjZS9XZWJDb3JlL2JpbmRpbmdzL2pzL0pTTm9kZUxpc3RDdXN0b20uY3BwCj09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0K
LS0tIFNvdXJjZS9XZWJDb3JlL2JpbmRpbmdzL2pzL0pTTm9kZUxpc3RDdXN0b20uY3BwCShyZXZp
c2lvbiAxMTY2NjcpCisrKyBTb3VyY2UvV2ViQ29yZS9iaW5kaW5ncy9qcy9KU05vZGVMaXN0Q3Vz
dG9tLmNwcAkod29ya2luZyBjb3B5KQpAQCAtNDYsMTUgKzQ2LDE1IEBAIGJvb2wgSlNOb2RlTGlz
dE93bmVyOjppc1JlYWNoYWJsZUZyb21PcGEKICAgICByZXR1cm4gdmlzaXRvci5jb250YWluc09w
YXF1ZVJvb3Qocm9vdChzdGF0aWNfY2FzdDxEeW5hbWljTm9kZUxpc3QqPihqc05vZGVMaXN0LT5p
bXBsKCkpLT5ub2RlKCkpKTsKIH0KIAotYm9vbCBKU05vZGVMaXN0OjpjYW5HZXRJdGVtc0Zvck5h
bWUoRXhlY1N0YXRlKiwgTm9kZUxpc3QqIGltcGwsIGNvbnN0IElkZW50aWZpZXImIHByb3BlcnR5
TmFtZSkKK2Jvb2wgSlNOb2RlTGlzdDo6Y2FuR2V0SXRlbXNGb3JOYW1lKEV4ZWNTdGF0ZSosIE5v
ZGVMaXN0KiBpbXBsLCBQcm9wZXJ0eU5hbWUgcHJvcGVydHlOYW1lKQogewotICAgIHJldHVybiBp
bXBsLT5pdGVtV2l0aE5hbWUoaWRlbnRpZmllclRvQXRvbWljU3RyaW5nKHByb3BlcnR5TmFtZSkp
OworICAgIHJldHVybiBpbXBsLT5pdGVtV2l0aE5hbWUocHJvcGVydHlOYW1lVG9BdG9taWNTdHJp
bmcocHJvcGVydHlOYW1lKSk7CiB9CiAKLUpTVmFsdWUgSlNOb2RlTGlzdDo6bmFtZUdldHRlcihF
eGVjU3RhdGUqIGV4ZWMsIEpTVmFsdWUgc2xvdEJhc2UsIGNvbnN0IElkZW50aWZpZXImIHByb3Bl
cnR5TmFtZSkKK0pTVmFsdWUgSlNOb2RlTGlzdDo6bmFtZUdldHRlcihFeGVjU3RhdGUqIGV4ZWMs
IEpTVmFsdWUgc2xvdEJhc2UsIFByb3BlcnR5TmFtZSBwcm9wZXJ0eU5hbWUpCiB7CiAgICAgSlNO
b2RlTGlzdCogdGhpc09iaiA9IGpzQ2FzdDxKU05vZGVMaXN0Kj4oYXNPYmplY3Qoc2xvdEJhc2Up
KTsKLSAgICByZXR1cm4gdG9KUyhleGVjLCB0aGlzT2JqLT5nbG9iYWxPYmplY3QoKSwgdGhpc09i
ai0+aW1wbCgpLT5pdGVtV2l0aE5hbWUoaWRlbnRpZmllclRvQXRvbWljU3RyaW5nKHByb3BlcnR5
TmFtZSkpKTsKKyAgICByZXR1cm4gdG9KUyhleGVjLCB0aGlzT2JqLT5nbG9iYWxPYmplY3QoKSwg
dGhpc09iai0+aW1wbCgpLT5pdGVtV2l0aE5hbWUocHJvcGVydHlOYW1lVG9BdG9taWNTdHJpbmco
cHJvcGVydHlOYW1lKSkpOwogfQogCiB9IC8vIG5hbWVzcGFjZSBXZWJDb3JlCkluZGV4OiBTb3Vy
Y2UvV2ViQ29yZS9iaW5kaW5ncy9qcy9KU1BsdWdpbkVsZW1lbnRGdW5jdGlvbnMuY3BwCj09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT0KLS0tIFNvdXJjZS9XZWJDb3JlL2JpbmRpbmdzL2pzL0pTUGx1Z2luRWxlbWVudEZ1bmN0
aW9ucy5jcHAJKHJldmlzaW9uIDExNjY2NykKKysrIFNvdXJjZS9XZWJDb3JlL2JpbmRpbmdzL2pz
L0pTUGx1Z2luRWxlbWVudEZ1bmN0aW9ucy5jcHAJKHdvcmtpbmcgY29weSkKQEAgLTEwMCw3ICsx
MDAsNyBAQCBKU09iamVjdCogcGx1Z2luU2NyaXB0T2JqZWN0KEV4ZWNTdGF0ZSogCiAgICAgcmV0
dXJuIGluc3RhbmNlLT5jcmVhdGVSdW50aW1lT2JqZWN0KGV4ZWMpOwogfQogICAgIAotSlNWYWx1
ZSBydW50aW1lT2JqZWN0UHJvcGVydHlHZXR0ZXIoRXhlY1N0YXRlKiBleGVjLCBKU1ZhbHVlIHNs
b3RCYXNlLCBjb25zdCBJZGVudGlmaWVyJiBwcm9wZXJ0eU5hbWUpCitKU1ZhbHVlIHJ1bnRpbWVP
YmplY3RQcm9wZXJ0eUdldHRlcihFeGVjU3RhdGUqIGV4ZWMsIEpTVmFsdWUgc2xvdEJhc2UsIFBy
b3BlcnR5TmFtZSBwcm9wZXJ0eU5hbWUpCiB7CiAgICAgSlNIVE1MRWxlbWVudCogZWxlbWVudCA9
IGpzQ2FzdDxKU0hUTUxFbGVtZW50Kj4oYXNPYmplY3Qoc2xvdEJhc2UpKTsKICAgICBKU09iamVj
dCogc2NyaXB0T2JqZWN0ID0gcGx1Z2luU2NyaXB0T2JqZWN0KGV4ZWMsIGVsZW1lbnQpOwpAQCAt
MTEwLDcgKzExMCw3IEBAIEpTVmFsdWUgcnVudGltZU9iamVjdFByb3BlcnR5R2V0dGVyKEV4ZWMK
ICAgICByZXR1cm4gc2NyaXB0T2JqZWN0LT5nZXQoZXhlYywgcHJvcGVydHlOYW1lKTsKIH0KIAot
Ym9vbCBydW50aW1lT2JqZWN0Q3VzdG9tR2V0T3duUHJvcGVydHlTbG90KEV4ZWNTdGF0ZSogZXhl
YywgY29uc3QgSWRlbnRpZmllciYgcHJvcGVydHlOYW1lLCBQcm9wZXJ0eVNsb3QmIHNsb3QsIEpT
SFRNTEVsZW1lbnQqIGVsZW1lbnQpCitib29sIHJ1bnRpbWVPYmplY3RDdXN0b21HZXRPd25Qcm9w
ZXJ0eVNsb3QoRXhlY1N0YXRlKiBleGVjLCBQcm9wZXJ0eU5hbWUgcHJvcGVydHlOYW1lLCBQcm9w
ZXJ0eVNsb3QmIHNsb3QsIEpTSFRNTEVsZW1lbnQqIGVsZW1lbnQpCiB7CiAgICAgSlNPYmplY3Qq
IHNjcmlwdE9iamVjdCA9IHBsdWdpblNjcmlwdE9iamVjdChleGVjLCBlbGVtZW50KTsKICAgICBp
ZiAoIXNjcmlwdE9iamVjdCkKQEAgLTEyMiw3ICsxMjIsNyBAQCBib29sIHJ1bnRpbWVPYmplY3RD
dXN0b21HZXRPd25Qcm9wZXJ0eVNsCiAgICAgcmV0dXJuIHRydWU7CiB9CiAKLWJvb2wgcnVudGlt
ZU9iamVjdEN1c3RvbUdldE93blByb3BlcnR5RGVzY3JpcHRvcihFeGVjU3RhdGUqIGV4ZWMsIGNv
bnN0IElkZW50aWZpZXImIHByb3BlcnR5TmFtZSwgUHJvcGVydHlEZXNjcmlwdG9yJiBkZXNjcmlw
dG9yLCBKU0hUTUxFbGVtZW50KiBlbGVtZW50KQorYm9vbCBydW50aW1lT2JqZWN0Q3VzdG9tR2V0
T3duUHJvcGVydHlEZXNjcmlwdG9yKEV4ZWNTdGF0ZSogZXhlYywgUHJvcGVydHlOYW1lIHByb3Bl
cnR5TmFtZSwgUHJvcGVydHlEZXNjcmlwdG9yJiBkZXNjcmlwdG9yLCBKU0hUTUxFbGVtZW50KiBl
bGVtZW50KQogewogICAgIEpTT2JqZWN0KiBzY3JpcHRPYmplY3QgPSBwbHVnaW5TY3JpcHRPYmpl
Y3QoZXhlYywgZWxlbWVudCk7CiAgICAgaWYgKCFzY3JpcHRPYmplY3QpCkBAIC0xMzgsNyArMTM4
LDcgQEAgYm9vbCBydW50aW1lT2JqZWN0Q3VzdG9tR2V0T3duUHJvcGVydHlEZQogICAgIHJldHVy
biB0cnVlOwogfQogCi1ib29sIHJ1bnRpbWVPYmplY3RDdXN0b21QdXQoRXhlY1N0YXRlKiBleGVj
LCBjb25zdCBJZGVudGlmaWVyJiBwcm9wZXJ0eU5hbWUsIEpTVmFsdWUgdmFsdWUsIEpTSFRNTEVs
ZW1lbnQqIGVsZW1lbnQsIFB1dFByb3BlcnR5U2xvdCYgc2xvdCkKK2Jvb2wgcnVudGltZU9iamVj
dEN1c3RvbVB1dChFeGVjU3RhdGUqIGV4ZWMsIFByb3BlcnR5TmFtZSBwcm9wZXJ0eU5hbWUsIEpT
VmFsdWUgdmFsdWUsIEpTSFRNTEVsZW1lbnQqIGVsZW1lbnQsIFB1dFByb3BlcnR5U2xvdCYgc2xv
dCkKIHsKICAgICBKU09iamVjdCogc2NyaXB0T2JqZWN0ID0gcGx1Z2luU2NyaXB0T2JqZWN0KGV4
ZWMsIGVsZW1lbnQpOwogICAgIGlmICghc2NyaXB0T2JqZWN0KQpJbmRleDogU291cmNlL1dlYkNv
cmUvYmluZGluZ3MvanMvSlNQbHVnaW5FbGVtZW50RnVuY3Rpb25zLmgKPT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0g
U291cmNlL1dlYkNvcmUvYmluZGluZ3MvanMvSlNQbHVnaW5FbGVtZW50RnVuY3Rpb25zLmgJKHJl
dmlzaW9uIDExNjY2NykKKysrIFNvdXJjZS9XZWJDb3JlL2JpbmRpbmdzL2pzL0pTUGx1Z2luRWxl
bWVudEZ1bmN0aW9ucy5oCSh3b3JraW5nIGNvcHkpCkBAIC0zOCwxMCArMzgsMTAgQEAgbmFtZXNw
YWNlIFdlYkNvcmUgewogICAgIEpTQzo6QmluZGluZ3M6Okluc3RhbmNlKiBwbHVnaW5JbnN0YW5j
ZShOb2RlKik7CiAgICAgSlNDOjpKU09iamVjdCogcGx1Z2luU2NyaXB0T2JqZWN0KEpTQzo6RXhl
Y1N0YXRlKiBleGVjLCBKU0hUTUxFbGVtZW50KiBqc0hUTUxFbGVtZW50KTsKIAotICAgIEpTQzo6
SlNWYWx1ZSBydW50aW1lT2JqZWN0UHJvcGVydHlHZXR0ZXIoSlNDOjpFeGVjU3RhdGUqLCBKU0M6
OkpTVmFsdWUsIGNvbnN0IEpTQzo6SWRlbnRpZmllciYpOwotICAgIGJvb2wgcnVudGltZU9iamVj
dEN1c3RvbUdldE93blByb3BlcnR5U2xvdChKU0M6OkV4ZWNTdGF0ZSosIGNvbnN0IEpTQzo6SWRl
bnRpZmllciYsIEpTQzo6UHJvcGVydHlTbG90JiwgSlNIVE1MRWxlbWVudCopOwotICAgIGJvb2wg
cnVudGltZU9iamVjdEN1c3RvbUdldE93blByb3BlcnR5RGVzY3JpcHRvcihKU0M6OkV4ZWNTdGF0
ZSosIGNvbnN0IEpTQzo6SWRlbnRpZmllciYsIEpTQzo6UHJvcGVydHlEZXNjcmlwdG9yJiwgSlNI
VE1MRWxlbWVudCopOwotICAgIGJvb2wgcnVudGltZU9iamVjdEN1c3RvbVB1dChKU0M6OkV4ZWNT
dGF0ZSosIGNvbnN0IEpTQzo6SWRlbnRpZmllciYsIEpTQzo6SlNWYWx1ZSwgSlNIVE1MRWxlbWVu
dCosIEpTQzo6UHV0UHJvcGVydHlTbG90Jik7CisgICAgSlNDOjpKU1ZhbHVlIHJ1bnRpbWVPYmpl
Y3RQcm9wZXJ0eUdldHRlcihKU0M6OkV4ZWNTdGF0ZSosIEpTQzo6SlNWYWx1ZSwgSlNDOjpQcm9w
ZXJ0eU5hbWUpOworICAgIGJvb2wgcnVudGltZU9iamVjdEN1c3RvbUdldE93blByb3BlcnR5U2xv
dChKU0M6OkV4ZWNTdGF0ZSosIEpTQzo6UHJvcGVydHlOYW1lLCBKU0M6OlByb3BlcnR5U2xvdCYs
IEpTSFRNTEVsZW1lbnQqKTsKKyAgICBib29sIHJ1bnRpbWVPYmplY3RDdXN0b21HZXRPd25Qcm9w
ZXJ0eURlc2NyaXB0b3IoSlNDOjpFeGVjU3RhdGUqLCBKU0M6OlByb3BlcnR5TmFtZSwgSlNDOjpQ
cm9wZXJ0eURlc2NyaXB0b3ImLCBKU0hUTUxFbGVtZW50Kik7CisgICAgYm9vbCBydW50aW1lT2Jq
ZWN0Q3VzdG9tUHV0KEpTQzo6RXhlY1N0YXRlKiwgSlNDOjpQcm9wZXJ0eU5hbWUsIEpTQzo6SlNW
YWx1ZSwgSlNIVE1MRWxlbWVudCosIEpTQzo6UHV0UHJvcGVydHlTbG90Jik7CiAgICAgSlNDOjpD
YWxsVHlwZSBydW50aW1lT2JqZWN0R2V0Q2FsbERhdGEoSlNIVE1MRWxlbWVudCosIEpTQzo6Q2Fs
bERhdGEmKTsKIAogfSAvLyBuYW1lc3BhY2UgV2ViQ29yZQpJbmRleDogU291cmNlL1dlYkNvcmUv
YmluZGluZ3MvanMvSlNTdG9yYWdlQ3VzdG9tLmNwcAo9PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2Vi
Q29yZS9iaW5kaW5ncy9qcy9KU1N0b3JhZ2VDdXN0b20uY3BwCShyZXZpc2lvbiAxMTY2NjcpCisr
KyBTb3VyY2UvV2ViQ29yZS9iaW5kaW5ncy9qcy9KU1N0b3JhZ2VDdXN0b20uY3BwCSh3b3JraW5n
IGNvcHkpCkBAIC0zNCwxMiArMzQsMTIgQEAgdXNpbmcgbmFtZXNwYWNlIEpTQzsKIAogbmFtZXNw
YWNlIFdlYkNvcmUgewogCi1ib29sIEpTU3RvcmFnZTo6Y2FuR2V0SXRlbXNGb3JOYW1lKEV4ZWNT
dGF0ZSosIFN0b3JhZ2UqIGltcGwsIGNvbnN0IElkZW50aWZpZXImIHByb3BlcnR5TmFtZSkKK2Jv
b2wgSlNTdG9yYWdlOjpjYW5HZXRJdGVtc0Zvck5hbWUoRXhlY1N0YXRlKiwgU3RvcmFnZSogaW1w
bCwgUHJvcGVydHlOYW1lIHByb3BlcnR5TmFtZSkKIHsKLSAgICByZXR1cm4gaW1wbC0+Y29udGFp
bnMoaWRlbnRpZmllclRvU3RyaW5nKHByb3BlcnR5TmFtZSkpOworICAgIHJldHVybiBpbXBsLT5j
b250YWlucyhwcm9wZXJ0eU5hbWVUb1N0cmluZyhwcm9wZXJ0eU5hbWUpKTsKIH0KIAotSlNWYWx1
ZSBKU1N0b3JhZ2U6Om5hbWVHZXR0ZXIoRXhlY1N0YXRlKiBleGVjLCBKU1ZhbHVlIHNsb3RCYXNl
LCBjb25zdCBJZGVudGlmaWVyJiBwcm9wZXJ0eU5hbWUpCitKU1ZhbHVlIEpTU3RvcmFnZTo6bmFt
ZUdldHRlcihFeGVjU3RhdGUqIGV4ZWMsIEpTVmFsdWUgc2xvdEJhc2UsIFByb3BlcnR5TmFtZSBw
cm9wZXJ0eU5hbWUpCiB7CiAgICAgSlNTdG9yYWdlKiB0aGlzT2JqID0ganNDYXN0PEpTU3RvcmFn
ZSo+KGFzT2JqZWN0KHNsb3RCYXNlKSk7CiAgICAgICAgIApAQCAtNDcsMTAgKzQ3LDEwIEBAIEpT
VmFsdWUgSlNTdG9yYWdlOjpuYW1lR2V0dGVyKEV4ZWNTdGF0ZSoKICAgICBpZiAocHJvdG90eXBl
LmlzT2JqZWN0KCkgJiYgYXNPYmplY3QocHJvdG90eXBlKS0+aGFzUHJvcGVydHkoZXhlYywgcHJv
cGVydHlOYW1lKSkKICAgICAgICAgcmV0dXJuIGFzT2JqZWN0KHByb3RvdHlwZSktPmdldChleGVj
LCBwcm9wZXJ0eU5hbWUpOwogIAotICAgIHJldHVybiBqc1N0cmluZ09yTnVsbChleGVjLCB0aGlz
T2JqLT5pbXBsKCktPmdldEl0ZW0oaWRlbnRpZmllclRvU3RyaW5nKHByb3BlcnR5TmFtZSkpKTsK
KyAgICByZXR1cm4ganNTdHJpbmdPck51bGwoZXhlYywgdGhpc09iai0+aW1wbCgpLT5nZXRJdGVt
KHByb3BlcnR5TmFtZVRvU3RyaW5nKHByb3BlcnR5TmFtZSkpKTsKIH0KIAotYm9vbCBKU1N0b3Jh
Z2U6OmRlbGV0ZVByb3BlcnR5KEpTQ2VsbCogY2VsbCwgRXhlY1N0YXRlKiBleGVjLCBjb25zdCBJ
ZGVudGlmaWVyJiBwcm9wZXJ0eU5hbWUpCitib29sIEpTU3RvcmFnZTo6ZGVsZXRlUHJvcGVydHko
SlNDZWxsKiBjZWxsLCBFeGVjU3RhdGUqIGV4ZWMsIFByb3BlcnR5TmFtZSBwcm9wZXJ0eU5hbWUp
CiB7CiAgICAgSlNTdG9yYWdlKiB0aGlzT2JqZWN0ID0ganNDYXN0PEpTU3RvcmFnZSo+KGNlbGwp
OwogICAgIC8vIE9ubHkgcGVyZm9ybSB0aGUgY3VzdG9tIGRlbGV0ZSBpZiB0aGUgb2JqZWN0IGRv
ZXNuJ3QgaGF2ZSBhIG5hdGl2ZSBwcm9wZXJ0eSBieSB0aGlzIG5hbWUuCkBAIC02NCw3ICs2NCw3
IEBAIGJvb2wgSlNTdG9yYWdlOjpkZWxldGVQcm9wZXJ0eShKU0NlbGwqIGMKICAgICBpZiAocHJv
dG90eXBlLmlzT2JqZWN0KCkgJiYgYXNPYmplY3QocHJvdG90eXBlKS0+aGFzUHJvcGVydHkoZXhl
YywgcHJvcGVydHlOYW1lKSkKICAgICAgICAgcmV0dXJuIGZhbHNlOwogCi0gICAgdGhpc09iamVj
dC0+bV9pbXBsLT5yZW1vdmVJdGVtKGlkZW50aWZpZXJUb1N0cmluZyhwcm9wZXJ0eU5hbWUpKTsK
KyAgICB0aGlzT2JqZWN0LT5tX2ltcGwtPnJlbW92ZUl0ZW0ocHJvcGVydHlOYW1lVG9TdHJpbmco
cHJvcGVydHlOYW1lKSk7CiAgICAgcmV0dXJuIHRydWU7CiB9CiAKQEAgLTc4LDcgKzc4LDcgQEAg
dm9pZCBKU1N0b3JhZ2U6OmdldE93blByb3BlcnR5TmFtZXMoSlNPYgogICAgIEJhc2U6OmdldE93
blByb3BlcnR5TmFtZXModGhpc09iamVjdCwgZXhlYywgcHJvcGVydHlOYW1lcywgbW9kZSk7CiB9
CiAKLWJvb2wgSlNTdG9yYWdlOjpwdXREZWxlZ2F0ZShFeGVjU3RhdGUqIGV4ZWMsIGNvbnN0IElk
ZW50aWZpZXImIHByb3BlcnR5TmFtZSwgSlNWYWx1ZSB2YWx1ZSwgUHV0UHJvcGVydHlTbG90JikK
K2Jvb2wgSlNTdG9yYWdlOjpwdXREZWxlZ2F0ZShFeGVjU3RhdGUqIGV4ZWMsIFByb3BlcnR5TmFt
ZSBwcm9wZXJ0eU5hbWUsIEpTVmFsdWUgdmFsdWUsIFB1dFByb3BlcnR5U2xvdCYpCiB7CiAgICAg
Ly8gT25seSBwZXJmb3JtIHRoZSBjdXN0b20gcHV0IGlmIHRoZSBvYmplY3QgZG9lc24ndCBoYXZl
IGEgbmF0aXZlIHByb3BlcnR5IGJ5IHRoaXMgbmFtZS4KICAgICAvLyBTaW5jZSBoYXNQcm9wZXJ0
eSgpIHdvdWxkIGVuZCB1cCBjYWxsaW5nIGNhbkdldEl0ZW1zRm9yTmFtZSgpIGFuZCBiZSBmb29s
ZWQsIHdlIG5lZWQgdG8gY2hlY2sKQEAgLTk2LDcgKzk2LDcgQEAgYm9vbCBKU1N0b3JhZ2U6OnB1
dERlbGVnYXRlKEV4ZWNTdGF0ZSogZQogICAgICAgICByZXR1cm4gdHJ1ZTsKICAgICAKICAgICBF
eGNlcHRpb25Db2RlIGVjID0gMDsKLSAgICBpbXBsKCktPnNldEl0ZW0oaWRlbnRpZmllclRvU3Ry
aW5nKHByb3BlcnR5TmFtZSksIHN0cmluZ1ZhbHVlLCBlYyk7CisgICAgaW1wbCgpLT5zZXRJdGVt
KHByb3BlcnR5TmFtZVRvU3RyaW5nKHByb3BlcnR5TmFtZSksIHN0cmluZ1ZhbHVlLCBlYyk7CiAg
ICAgc2V0RE9NRXhjZXB0aW9uKGV4ZWMsIGVjKTsKIAogICAgIHJldHVybiB0cnVlOwpJbmRleDog
U291cmNlL1dlYkNvcmUvYmluZGluZ3MvanMvSlNTdHlsZVNoZWV0TGlzdEN1c3RvbS5jcHAKPT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PQotLS0gU291cmNlL1dlYkNvcmUvYmluZGluZ3MvanMvSlNTdHlsZVNoZWV0TGlzdEN1
c3RvbS5jcHAJKHJldmlzaW9uIDExNjY2NykKKysrIFNvdXJjZS9XZWJDb3JlL2JpbmRpbmdzL2pz
L0pTU3R5bGVTaGVldExpc3RDdXN0b20uY3BwCSh3b3JraW5nIGNvcHkpCkBAIC0zNSwxNSArMzUs
MTUgQEAgdXNpbmcgbmFtZXNwYWNlIEpTQzsKIAogbmFtZXNwYWNlIFdlYkNvcmUgewogCi1ib29s
IEpTU3R5bGVTaGVldExpc3Q6OmNhbkdldEl0ZW1zRm9yTmFtZShFeGVjU3RhdGUqLCBTdHlsZVNo
ZWV0TGlzdCogc3R5bGVTaGVldExpc3QsIGNvbnN0IElkZW50aWZpZXImIHByb3BlcnR5TmFtZSkK
K2Jvb2wgSlNTdHlsZVNoZWV0TGlzdDo6Y2FuR2V0SXRlbXNGb3JOYW1lKEV4ZWNTdGF0ZSosIFN0
eWxlU2hlZXRMaXN0KiBzdHlsZVNoZWV0TGlzdCwgUHJvcGVydHlOYW1lIHByb3BlcnR5TmFtZSkK
IHsKLSAgICByZXR1cm4gc3R5bGVTaGVldExpc3QtPmdldE5hbWVkSXRlbShpZGVudGlmaWVyVG9T
dHJpbmcocHJvcGVydHlOYW1lKSk7CisgICAgcmV0dXJuIHN0eWxlU2hlZXRMaXN0LT5nZXROYW1l
ZEl0ZW0ocHJvcGVydHlOYW1lVG9TdHJpbmcocHJvcGVydHlOYW1lKSk7CiB9CiAKLUpTVmFsdWUg
SlNTdHlsZVNoZWV0TGlzdDo6bmFtZUdldHRlcihFeGVjU3RhdGUqIGV4ZWMsIEpTVmFsdWUgc2xv
dEJhc2UsIGNvbnN0IElkZW50aWZpZXImIHByb3BlcnR5TmFtZSkKK0pTVmFsdWUgSlNTdHlsZVNo
ZWV0TGlzdDo6bmFtZUdldHRlcihFeGVjU3RhdGUqIGV4ZWMsIEpTVmFsdWUgc2xvdEJhc2UsIFBy
b3BlcnR5TmFtZSBwcm9wZXJ0eU5hbWUpCiB7CiAgICAgSlNTdHlsZVNoZWV0TGlzdCogdGhpc09i
aiA9IGpzQ2FzdDxKU1N0eWxlU2hlZXRMaXN0Kj4oYXNPYmplY3Qoc2xvdEJhc2UpKTsKLSAgICBI
VE1MU3R5bGVFbGVtZW50KiBlbGVtZW50ID0gdGhpc09iai0+aW1wbCgpLT5nZXROYW1lZEl0ZW0o
aWRlbnRpZmllclRvU3RyaW5nKHByb3BlcnR5TmFtZSkpOworICAgIEhUTUxTdHlsZUVsZW1lbnQq
IGVsZW1lbnQgPSB0aGlzT2JqLT5pbXBsKCktPmdldE5hbWVkSXRlbShwcm9wZXJ0eU5hbWVUb1N0
cmluZyhwcm9wZXJ0eU5hbWUpKTsKICAgICBBU1NFUlQoZWxlbWVudCk7CiAgICAgcmV0dXJuIHRv
SlMoZXhlYywgdGhpc09iai0+Z2xvYmFsT2JqZWN0KCksIGVsZW1lbnQtPnNoZWV0KCkpOwogfQpJ
bmRleDogU291cmNlL1dlYkNvcmUvYmluZGluZ3MvanMvSlNXb3JrZXJDb250ZXh0Q3VzdG9tLmNw
cAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2ViQ29yZS9iaW5kaW5ncy9qcy9KU1dvcmtlckNvbnRl
eHRDdXN0b20uY3BwCShyZXZpc2lvbiAxMTY2NjcpCisrKyBTb3VyY2UvV2ViQ29yZS9iaW5kaW5n
cy9qcy9KU1dvcmtlckNvbnRleHRDdXN0b20uY3BwCSh3b3JraW5nIGNvcHkpCkBAIC02OSw3ICs2
OSw3IEBAIHZvaWQgSlNXb3JrZXJDb250ZXh0Ojp2aXNpdENoaWxkcmVuKEpTQ2UKICAgICB0aGlz
T2JqZWN0LT5pbXBsKCktPnZpc2l0SlNFdmVudExpc3RlbmVycyh2aXNpdG9yKTsKIH0KIAotYm9v
bCBKU1dvcmtlckNvbnRleHQ6OmdldE93blByb3BlcnR5U2xvdERlbGVnYXRlKEV4ZWNTdGF0ZSog
ZXhlYywgY29uc3QgSWRlbnRpZmllciYgcHJvcGVydHlOYW1lLCBQcm9wZXJ0eVNsb3QmIHNsb3Qp
Citib29sIEpTV29ya2VyQ29udGV4dDo6Z2V0T3duUHJvcGVydHlTbG90RGVsZWdhdGUoRXhlY1N0
YXRlKiBleGVjLCBQcm9wZXJ0eU5hbWUgcHJvcGVydHlOYW1lLCBQcm9wZXJ0eVNsb3QmIHNsb3Qp
CiB7CiAgICAgLy8gTG9vayBmb3Igb3ZlcnJpZGVzIGJlZm9yZSBsb29raW5nIGF0IGFueSBvZiBv
dXIgb3duIHByb3BlcnRpZXMuCiAgICAgaWYgKEpTR2xvYmFsT2JqZWN0OjpnZXRPd25Qcm9wZXJ0
eVNsb3QodGhpcywgZXhlYywgcHJvcGVydHlOYW1lLCBzbG90KSkKQEAgLTc3LDcgKzc3LDcgQEAg
Ym9vbCBKU1dvcmtlckNvbnRleHQ6OmdldE93blByb3BlcnR5U2xvdAogICAgIHJldHVybiBmYWxz
ZTsKIH0KIAotYm9vbCBKU1dvcmtlckNvbnRleHQ6OmdldE93blByb3BlcnR5RGVzY3JpcHRvckRl
bGVnYXRlKEV4ZWNTdGF0ZSogZXhlYywgY29uc3QgSWRlbnRpZmllciYgcHJvcGVydHlOYW1lLCBQ
cm9wZXJ0eURlc2NyaXB0b3ImIGRlc2NyaXB0b3IpCitib29sIEpTV29ya2VyQ29udGV4dDo6Z2V0
T3duUHJvcGVydHlEZXNjcmlwdG9yRGVsZWdhdGUoRXhlY1N0YXRlKiBleGVjLCBQcm9wZXJ0eU5h
bWUgcHJvcGVydHlOYW1lLCBQcm9wZXJ0eURlc2NyaXB0b3ImIGRlc2NyaXB0b3IpCiB7CiAgICAg
Ly8gTG9vayBmb3Igb3ZlcnJpZGVzIGJlZm9yZSBsb29raW5nIGF0IGFueSBvZiBvdXIgb3duIHBy
b3BlcnRpZXMuCiAgICAgaWYgKEpTR2xvYmFsT2JqZWN0OjpnZXRPd25Qcm9wZXJ0eURlc2NyaXB0
b3IodGhpcywgZXhlYywgcHJvcGVydHlOYW1lLCBkZXNjcmlwdG9yKSkKSW5kZXg6IFNvdXJjZS9X
ZWJDb3JlL2JpbmRpbmdzL3NjcmlwdHMvQ29kZUdlbmVyYXRvckpTLnBtCj09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0t
IFNvdXJjZS9XZWJDb3JlL2JpbmRpbmdzL3NjcmlwdHMvQ29kZUdlbmVyYXRvckpTLnBtCShyZXZp
c2lvbiAxMTY2NjcpCisrKyBTb3VyY2UvV2ViQ29yZS9iaW5kaW5ncy9zY3JpcHRzL0NvZGVHZW5l
cmF0b3JKUy5wbQkod29ya2luZyBjb3B5KQpAQCAtNDEyLDE1ICs0MTIsMTQgQEAgc3ViIEdlbmVy
YXRlR2V0T3duUHJvcGVydHlTbG90Qm9keQogICAgIH0KIAogICAgIGlmICgkZGF0YU5vZGUtPmV4
dGVuZGVkQXR0cmlidXRlcy0+eyJJbmRleGVkR2V0dGVyIn0gfHwgJGRhdGFOb2RlLT5leHRlbmRl
ZEF0dHJpYnV0ZXMtPnsiTnVtZXJpY0luZGV4ZWRHZXR0ZXIifSkgewotICAgICAgICBwdXNoKEBn
ZXRPd25Qcm9wZXJ0eVNsb3RJbXBsLCAiICAgIGJvb2wgb2s7XG4iKTsKLSAgICAgICAgcHVzaChA
Z2V0T3duUHJvcGVydHlTbG90SW1wbCwgIiAgICB1bnNpZ25lZCBpbmRleCA9IHByb3BlcnR5TmFt
ZS50b1VJbnQzMihvayk7XG4iKTsKKyAgICAgICAgcHVzaChAZ2V0T3duUHJvcGVydHlTbG90SW1w
bCwgIiAgICB1bnNpZ25lZCBpbmRleCA9IHByb3BlcnR5TmFtZS5hc0luZGV4KCk7XG4iKTsKIAog
ICAgICAgICAjIElmIHRoZSBpdGVtIGZ1bmN0aW9uIHJldHVybnMgYSBzdHJpbmcgdGhlbiB3ZSBs
ZXQgdGhlIFRyZWF0UmV0dXJuZWROdWxsU3RyaW5nQXMgaGFuZGxlIHRoZSBjYXNlcwogICAgICAg
ICAjIHdoZXJlIHRoZSBpbmRleCBpcyBvdXQgb2YgcmFuZ2UuCiAgICAgICAgIGlmIChJbmRleEdl
dHRlclJldHVybnNTdHJpbmdzKCRpbXBsQ2xhc3NOYW1lKSkgewotICAgICAgICAgICAgcHVzaChA
Z2V0T3duUHJvcGVydHlTbG90SW1wbCwgIiAgICBpZiAob2spIHtcbiIpOworICAgICAgICAgICAg
cHVzaChAZ2V0T3duUHJvcGVydHlTbG90SW1wbCwgIiAgICBpZiAoaW5kZXggIT0gUHJvcGVydHlO
YW1lOjpOb3RBbkluZGV4KSB7XG4iKTsKICAgICAgICAgfSBlbHNlIHsKLSAgICAgICAgICAgIHB1
c2goQGdldE93blByb3BlcnR5U2xvdEltcGwsICIgICAgaWYgKG9rICYmIGluZGV4IDwgc3RhdGlj
X2Nhc3Q8JGltcGxDbGFzc05hbWUqPih0aGlzT2JqZWN0LT5pbXBsKCkpLT5sZW5ndGgoKSkge1xu
Iik7CisgICAgICAgICAgICBwdXNoKEBnZXRPd25Qcm9wZXJ0eVNsb3RJbXBsLCAiICAgIGlmIChp
bmRleCAhPSBQcm9wZXJ0eU5hbWU6Ok5vdEFuSW5kZXggJiYgaW5kZXggPCBzdGF0aWNfY2FzdDwk
aW1wbENsYXNzTmFtZSo+KHRoaXNPYmplY3QtPmltcGwoKSktPmxlbmd0aCgpKSB7XG4iKTsKICAg
ICAgICAgfQogICAgICAgICBpZiAoJGRhdGFOb2RlLT5leHRlbmRlZEF0dHJpYnV0ZXMtPnsiTnVt
ZXJpY0luZGV4ZWRHZXR0ZXIifSkgewogICAgICAgICAgICAgcHVzaChAZ2V0T3duUHJvcGVydHlT
bG90SW1wbCwgIiAgICAgICAgc2xvdC5zZXRWYWx1ZSh0aGlzT2JqZWN0LT5nZXRCeUluZGV4KGV4
ZWMsIGluZGV4KSk7XG4iKTsKQEAgLTUwNiw5ICs1MDUsOCBAQCBzdWIgR2VuZXJhdGVHZXRPd25Q
cm9wZXJ0eURlc2NyaXB0b3JCb2R5CiAgICAgfQogCiAgICAgaWYgKCRkYXRhTm9kZS0+ZXh0ZW5k
ZWRBdHRyaWJ1dGVzLT57IkluZGV4ZWRHZXR0ZXIifSB8fCAkZGF0YU5vZGUtPmV4dGVuZGVkQXR0
cmlidXRlcy0+eyJOdW1lcmljSW5kZXhlZEdldHRlciJ9KSB7Ci0gICAgICAgIHB1c2goQGdldE93
blByb3BlcnR5RGVzY3JpcHRvckltcGwsICIgICAgYm9vbCBvaztcbiIpOwotICAgICAgICBwdXNo
KEBnZXRPd25Qcm9wZXJ0eURlc2NyaXB0b3JJbXBsLCAiICAgIHVuc2lnbmVkIGluZGV4ID0gcHJv
cGVydHlOYW1lLnRvVUludDMyKG9rKTtcbiIpOwotICAgICAgICBwdXNoKEBnZXRPd25Qcm9wZXJ0
eURlc2NyaXB0b3JJbXBsLCAiICAgIGlmIChvayAmJiBpbmRleCA8IHN0YXRpY19jYXN0PCRpbXBs
Q2xhc3NOYW1lKj4odGhpc09iamVjdC0+aW1wbCgpKS0+bGVuZ3RoKCkpIHtcbiIpOworICAgICAg
ICBwdXNoKEBnZXRPd25Qcm9wZXJ0eURlc2NyaXB0b3JJbXBsLCAiICAgIHVuc2lnbmVkIGluZGV4
ID0gcHJvcGVydHlOYW1lLmFzSW5kZXgoKTtcbiIpOworICAgICAgICBwdXNoKEBnZXRPd25Qcm9w
ZXJ0eURlc2NyaXB0b3JJbXBsLCAiICAgIGlmIChpbmRleCAhPSBQcm9wZXJ0eU5hbWU6Ok5vdEFu
SW5kZXggJiYgaW5kZXggPCBzdGF0aWNfY2FzdDwkaW1wbENsYXNzTmFtZSo+KHRoaXNPYmplY3Qt
PmltcGwoKSktPmxlbmd0aCgpKSB7XG4iKTsKICAgICAgICAgaWYgKCRkYXRhTm9kZS0+ZXh0ZW5k
ZWRBdHRyaWJ1dGVzLT57Ik51bWVyaWNJbmRleGVkR2V0dGVyIn0pIHsKICAgICAgICAgICAgICMg
QXNzdW1lIHRoYXQgaWYgdGhlcmUncyBhIHNldHRlciwgdGhlIGluZGV4IHdpbGwgYmUgd3JpdGFi
bGUKICAgICAgICAgICAgIGlmICgkZGF0YU5vZGUtPmV4dGVuZGVkQXR0cmlidXRlcy0+eyJDdXN0
b21JbmRleGVkU2V0dGVyIn0pIHsKQEAgLTc0MiwxMSArNzQwLDExIEBAIHN1YiBHZW5lcmF0ZUhl
YWRlcgogCiAgICAgIyBHZXR0ZXJzCiAgICAgaWYgKCRoYXNHZXR0ZXIpIHsKLSAgICAgICAgcHVz
aChAaGVhZGVyQ29udGVudCwgIiAgICBzdGF0aWMgYm9vbCBnZXRPd25Qcm9wZXJ0eVNsb3QoSlND
OjpKU0NlbGwqLCBKU0M6OkV4ZWNTdGF0ZSosIGNvbnN0IEpTQzo6SWRlbnRpZmllciYgcHJvcGVy
dHlOYW1lLCBKU0M6OlByb3BlcnR5U2xvdCYpO1xuIik7Ci0gICAgICAgIHB1c2goQGhlYWRlckNv
bnRlbnQsICIgICAgc3RhdGljIGJvb2wgZ2V0T3duUHJvcGVydHlEZXNjcmlwdG9yKEpTQzo6SlNP
YmplY3QqLCBKU0M6OkV4ZWNTdGF0ZSosIGNvbnN0IEpTQzo6SWRlbnRpZmllciYgcHJvcGVydHlO
YW1lLCBKU0M6OlByb3BlcnR5RGVzY3JpcHRvciYpO1xuIik7CisgICAgICAgIHB1c2goQGhlYWRl
ckNvbnRlbnQsICIgICAgc3RhdGljIGJvb2wgZ2V0T3duUHJvcGVydHlTbG90KEpTQzo6SlNDZWxs
KiwgSlNDOjpFeGVjU3RhdGUqLCBKU0M6OlByb3BlcnR5TmFtZSBwcm9wZXJ0eU5hbWUsIEpTQzo6
UHJvcGVydHlTbG90Jik7XG4iKTsKKyAgICAgICAgcHVzaChAaGVhZGVyQ29udGVudCwgIiAgICBz
dGF0aWMgYm9vbCBnZXRPd25Qcm9wZXJ0eURlc2NyaXB0b3IoSlNDOjpKU09iamVjdCosIEpTQzo6
RXhlY1N0YXRlKiwgSlNDOjpQcm9wZXJ0eU5hbWUgcHJvcGVydHlOYW1lLCBKU0M6OlByb3BlcnR5
RGVzY3JpcHRvciYpO1xuIik7CiAgICAgICAgIHB1c2goQGhlYWRlckNvbnRlbnQsICIgICAgc3Rh
dGljIGJvb2wgZ2V0T3duUHJvcGVydHlTbG90QnlJbmRleChKU0M6OkpTQ2VsbCosIEpTQzo6RXhl
Y1N0YXRlKiwgdW5zaWduZWQgcHJvcGVydHlOYW1lLCBKU0M6OlByb3BlcnR5U2xvdCYpO1xuIikg
aWYgKCRkYXRhTm9kZS0+ZXh0ZW5kZWRBdHRyaWJ1dGVzLT57IkluZGV4ZWRHZXR0ZXIifSB8fCAk
ZGF0YU5vZGUtPmV4dGVuZGVkQXR0cmlidXRlcy0+eyJOdW1lcmljSW5kZXhlZEdldHRlciJ9KSAm
JiAhJGRhdGFOb2RlLT5leHRlbmRlZEF0dHJpYnV0ZXMtPnsiQ3VzdG9tTmFtZWRHZXR0ZXIifTsK
LSAgICAgICAgcHVzaChAaGVhZGVyQ29udGVudCwgIiAgICBib29sIGdldE93blByb3BlcnR5U2xv
dERlbGVnYXRlKEpTQzo6RXhlY1N0YXRlKiwgY29uc3QgSlNDOjpJZGVudGlmaWVyJiwgSlNDOjpQ
cm9wZXJ0eVNsb3QmKTtcbiIpIGlmICRkYXRhTm9kZS0+ZXh0ZW5kZWRBdHRyaWJ1dGVzLT57IkpT
Q3VzdG9tR2V0T3duUHJvcGVydHlTbG90QW5kRGVzY3JpcHRvciJ9OwotICAgICAgICBwdXNoKEBo
ZWFkZXJDb250ZW50LCAiICAgIGJvb2wgZ2V0T3duUHJvcGVydHlEZXNjcmlwdG9yRGVsZWdhdGUo
SlNDOjpFeGVjU3RhdGUqLCBjb25zdCBKU0M6OklkZW50aWZpZXImLCBKU0M6OlByb3BlcnR5RGVz
Y3JpcHRvciYpO1xuIikgaWYgJGRhdGFOb2RlLT5leHRlbmRlZEF0dHJpYnV0ZXMtPnsiSlNDdXN0
b21HZXRPd25Qcm9wZXJ0eVNsb3RBbmREZXNjcmlwdG9yIn07CisgICAgICAgIHB1c2goQGhlYWRl
ckNvbnRlbnQsICIgICAgYm9vbCBnZXRPd25Qcm9wZXJ0eVNsb3REZWxlZ2F0ZShKU0M6OkV4ZWNT
dGF0ZSosIEpTQzo6UHJvcGVydHlOYW1lLCBKU0M6OlByb3BlcnR5U2xvdCYpO1xuIikgaWYgJGRh
dGFOb2RlLT5leHRlbmRlZEF0dHJpYnV0ZXMtPnsiSlNDdXN0b21HZXRPd25Qcm9wZXJ0eVNsb3RB
bmREZXNjcmlwdG9yIn07CisgICAgICAgIHB1c2goQGhlYWRlckNvbnRlbnQsICIgICAgYm9vbCBn
ZXRPd25Qcm9wZXJ0eURlc2NyaXB0b3JEZWxlZ2F0ZShKU0M6OkV4ZWNTdGF0ZSosIEpTQzo6UHJv
cGVydHlOYW1lLCBKU0M6OlByb3BlcnR5RGVzY3JpcHRvciYpO1xuIikgaWYgJGRhdGFOb2RlLT5l
eHRlbmRlZEF0dHJpYnV0ZXMtPnsiSlNDdXN0b21HZXRPd25Qcm9wZXJ0eVNsb3RBbmREZXNjcmlw
dG9yIn07CiAgICAgICAgICRzdHJ1Y3R1cmVGbGFnc3siSlNDOjpPdmVycmlkZXNHZXRPd25Qcm9w
ZXJ0eVNsb3QifSA9IDE7CiAgICAgfQogCkBAIC03NjUsOSArNzYzLDkgQEAgc3ViIEdlbmVyYXRl
SGVhZGVyCiAKICAgICAjIEdldHRlcnMKICAgICBpZiAoJGhhc1NldHRlcikgewotICAgICAgICBw
dXNoKEBoZWFkZXJDb250ZW50LCAiICAgIHN0YXRpYyB2b2lkIHB1dChKU0M6OkpTQ2VsbCosIEpT
Qzo6RXhlY1N0YXRlKiwgY29uc3QgSlNDOjpJZGVudGlmaWVyJiBwcm9wZXJ0eU5hbWUsIEpTQzo6
SlNWYWx1ZSwgSlNDOjpQdXRQcm9wZXJ0eVNsb3QmKTtcbiIpOworICAgICAgICBwdXNoKEBoZWFk
ZXJDb250ZW50LCAiICAgIHN0YXRpYyB2b2lkIHB1dChKU0M6OkpTQ2VsbCosIEpTQzo6RXhlY1N0
YXRlKiwgSlNDOjpQcm9wZXJ0eU5hbWUgcHJvcGVydHlOYW1lLCBKU0M6OkpTVmFsdWUsIEpTQzo6
UHV0UHJvcGVydHlTbG90Jik7XG4iKTsKICAgICAgICAgcHVzaChAaGVhZGVyQ29udGVudCwgIiAg
ICBzdGF0aWMgdm9pZCBwdXRCeUluZGV4KEpTQzo6SlNDZWxsKiwgSlNDOjpFeGVjU3RhdGUqLCB1
bnNpZ25lZCBwcm9wZXJ0eU5hbWUsIEpTQzo6SlNWYWx1ZSwgYm9vbCBzaG91bGRUaHJvdyk7XG4i
KSBpZiAkZGF0YU5vZGUtPmV4dGVuZGVkQXR0cmlidXRlcy0+eyJDdXN0b21JbmRleGVkU2V0dGVy
In07Ci0gICAgICAgIHB1c2goQGhlYWRlckNvbnRlbnQsICIgICAgYm9vbCBwdXREZWxlZ2F0ZShK
U0M6OkV4ZWNTdGF0ZSosIGNvbnN0IEpTQzo6SWRlbnRpZmllciYsIEpTQzo6SlNWYWx1ZSwgSlND
OjpQdXRQcm9wZXJ0eVNsb3QmKTtcbiIpIGlmICRkYXRhTm9kZS0+ZXh0ZW5kZWRBdHRyaWJ1dGVz
LT57IkN1c3RvbU5hbWVkU2V0dGVyIn07CisgICAgICAgIHB1c2goQGhlYWRlckNvbnRlbnQsICIg
ICAgYm9vbCBwdXREZWxlZ2F0ZShKU0M6OkV4ZWNTdGF0ZSosIEpTQzo6UHJvcGVydHlOYW1lLCBK
U0M6OkpTVmFsdWUsIEpTQzo6UHV0UHJvcGVydHlTbG90Jik7XG4iKSBpZiAkZGF0YU5vZGUtPmV4
dGVuZGVkQXR0cmlidXRlcy0+eyJDdXN0b21OYW1lZFNldHRlciJ9OwogICAgIH0KIAogICAgIGlm
ICghJGhhc1BhcmVudCkgewpAQCAtNzk4LDcgKzc5Niw3IEBAIHN1YiBHZW5lcmF0ZUhlYWRlcgog
ICAgIHB1c2goQGhlYWRlckNvbnRlbnQsICIgICAgc3RhdGljIEpTQzo6Q2FsbFR5cGUgZ2V0Q2Fs
bERhdGEoSlNDOjpKU0NlbGwqLCBKU0M6OkNhbGxEYXRhJik7XG5cbiIpIGlmICRkYXRhTm9kZS0+
ZXh0ZW5kZWRBdHRyaWJ1dGVzLT57IkN1c3RvbUNhbGwifTsKIAogICAgICMgQ3VzdG9tIGRlbGV0
ZVByb3BlcnR5IGZ1bmN0aW9uCi0gICAgcHVzaChAaGVhZGVyQ29udGVudCwgIiAgICBzdGF0aWMg
Ym9vbCBkZWxldGVQcm9wZXJ0eShKU0M6OkpTQ2VsbCosIEpTQzo6RXhlY1N0YXRlKiwgY29uc3Qg
SlNDOjpJZGVudGlmaWVyJik7XG4iKSBpZiAkZGF0YU5vZGUtPmV4dGVuZGVkQXR0cmlidXRlcy0+
eyJDdXN0b21EZWxldGVQcm9wZXJ0eSJ9OworICAgIHB1c2goQGhlYWRlckNvbnRlbnQsICIgICAg
c3RhdGljIGJvb2wgZGVsZXRlUHJvcGVydHkoSlNDOjpKU0NlbGwqLCBKU0M6OkV4ZWNTdGF0ZSos
IEpTQzo6UHJvcGVydHlOYW1lKTtcbiIpIGlmICRkYXRhTm9kZS0+ZXh0ZW5kZWRBdHRyaWJ1dGVz
LT57IkN1c3RvbURlbGV0ZVByb3BlcnR5In07CiAKICAgICAjIEN1c3RvbSBnZXRQcm9wZXJ0eU5h
bWVzIGZ1bmN0aW9uIGV4aXN0cyBvbiBET01XaW5kb3cKICAgICBpZiAoJGludGVyZmFjZU5hbWUg
ZXEgIkRPTVdpbmRvdyIpIHsKQEAgLTgxMyw3ICs4MTEsNyBAQCBzdWIgR2VuZXJhdGVIZWFkZXIK
ICAgICB9CiAKICAgICAjIEN1c3RvbSBkZWZpbmVPd25Qcm9wZXJ0eSBmdW5jdGlvbgotICAgIHB1
c2goQGhlYWRlckNvbnRlbnQsICIgICAgc3RhdGljIGJvb2wgZGVmaW5lT3duUHJvcGVydHkoSlND
OjpKU09iamVjdCosIEpTQzo6RXhlY1N0YXRlKiwgY29uc3QgSlNDOjpJZGVudGlmaWVyJiBwcm9w
ZXJ0eU5hbWUsIEpTQzo6UHJvcGVydHlEZXNjcmlwdG9yJiwgYm9vbCBzaG91bGRUaHJvdyk7XG4i
KSBpZiAkZGF0YU5vZGUtPmV4dGVuZGVkQXR0cmlidXRlcy0+eyJKU0N1c3RvbURlZmluZU93blBy
b3BlcnR5In07CisgICAgcHVzaChAaGVhZGVyQ29udGVudCwgIiAgICBzdGF0aWMgYm9vbCBkZWZp
bmVPd25Qcm9wZXJ0eShKU0M6OkpTT2JqZWN0KiwgSlNDOjpFeGVjU3RhdGUqLCBKU0M6OlByb3Bl
cnR5TmFtZSBwcm9wZXJ0eU5hbWUsIEpTQzo6UHJvcGVydHlEZXNjcmlwdG9yJiwgYm9vbCBzaG91
bGRUaHJvdyk7XG4iKSBpZiAkZGF0YU5vZGUtPmV4dGVuZGVkQXR0cmlidXRlcy0+eyJKU0N1c3Rv
bURlZmluZU93blByb3BlcnR5In07CiAKICAgICAjIE92ZXJyaWRlIHRvQm9vbGVhbiB0byByZXR1
cm4gZmFsc2UgZm9yIG9iamVjdHMgdGhhdCB3YW50IHRvICdNYXNxdWVyYWRlc0FzVW5kZWZpbmVk
Jy4KICAgICBpZiAoJGRhdGFOb2RlLT5leHRlbmRlZEF0dHJpYnV0ZXMtPnsiTWFzcXVlcmFkZXNB
c1VuZGVmaW5lZCJ9KSB7CkBAIC05NDgsMjAgKzk0NiwyMCBAQCBzdWIgR2VuZXJhdGVIZWFkZXIK
ICAgICAjIE5hbWUgZ2V0dGVyCiAgICAgaWYgKCRkYXRhTm9kZS0+ZXh0ZW5kZWRBdHRyaWJ1dGVz
LT57Ik5hbWVkR2V0dGVyIn0gfHwgJGRhdGFOb2RlLT5leHRlbmRlZEF0dHJpYnV0ZXMtPnsiQ3Vz
dG9tTmFtZWRHZXR0ZXIifSkgewogICAgICAgICBwdXNoKEBoZWFkZXJDb250ZW50LCAicHJpdmF0
ZTpcbiIpOwotICAgICAgICBwdXNoKEBoZWFkZXJDb250ZW50LCAiICAgIHN0YXRpYyBib29sIGNh
bkdldEl0ZW1zRm9yTmFtZShKU0M6OkV4ZWNTdGF0ZSosICRpbXBsQ2xhc3NOYW1lKiwgY29uc3Qg
SlNDOjpJZGVudGlmaWVyJik7XG4iKTsKLSAgICAgICAgcHVzaChAaGVhZGVyQ29udGVudCwgIiAg
ICBzdGF0aWMgSlNDOjpKU1ZhbHVlIG5hbWVHZXR0ZXIoSlNDOjpFeGVjU3RhdGUqLCBKU0M6OkpT
VmFsdWUsIGNvbnN0IEpTQzo6SWRlbnRpZmllciYpO1xuIik7CisgICAgICAgIHB1c2goQGhlYWRl
ckNvbnRlbnQsICIgICAgc3RhdGljIGJvb2wgY2FuR2V0SXRlbXNGb3JOYW1lKEpTQzo6RXhlY1N0
YXRlKiwgJGltcGxDbGFzc05hbWUqLCBKU0M6OlByb3BlcnR5TmFtZSk7XG4iKTsKKyAgICAgICAg
cHVzaChAaGVhZGVyQ29udGVudCwgIiAgICBzdGF0aWMgSlNDOjpKU1ZhbHVlIG5hbWVHZXR0ZXIo
SlNDOjpFeGVjU3RhdGUqLCBKU0M6OkpTVmFsdWUsIEpTQzo6UHJvcGVydHlOYW1lKTtcbiIpOwog
ICAgIH0KIAogICAgIHB1c2goQGhlYWRlckNvbnRlbnQsICJ9O1xuXG4iKTsKIAogICAgIGlmICgk
ZGF0YU5vZGUtPmV4dGVuZGVkQXR0cmlidXRlcy0+eyJKU0lubGluZUdldE93blByb3BlcnR5U2xv
dCJ9ICYmICEkZGF0YU5vZGUtPmV4dGVuZGVkQXR0cmlidXRlcy0+eyJDdXN0b21HZXRPd25Qcm9w
ZXJ0eVNsb3QifSkgewotICAgICAgICBwdXNoKEBoZWFkZXJDb250ZW50LCAiQUxXQVlTX0lOTElO
RSBib29sICR7Y2xhc3NOYW1lfTo6Z2V0T3duUHJvcGVydHlTbG90KEpTQzo6SlNDZWxsKiBjZWxs
LCBKU0M6OkV4ZWNTdGF0ZSogZXhlYywgY29uc3QgSlNDOjpJZGVudGlmaWVyJiBwcm9wZXJ0eU5h
bWUsIEpTQzo6UHJvcGVydHlTbG90JiBzbG90KVxuIik7CisgICAgICAgIHB1c2goQGhlYWRlckNv
bnRlbnQsICJBTFdBWVNfSU5MSU5FIGJvb2wgJHtjbGFzc05hbWV9OjpnZXRPd25Qcm9wZXJ0eVNs
b3QoSlNDOjpKU0NlbGwqIGNlbGwsIEpTQzo6RXhlY1N0YXRlKiBleGVjLCBKU0M6OlByb3BlcnR5
TmFtZSBwcm9wZXJ0eU5hbWUsIEpTQzo6UHJvcGVydHlTbG90JiBzbG90KVxuIik7CiAgICAgICAg
IHB1c2goQGhlYWRlckNvbnRlbnQsICJ7XG4iKTsKICAgICAgICAgcHVzaChAaGVhZGVyQ29udGVu
dCwgIiAgICAke2NsYXNzTmFtZX0qIHRoaXNPYmplY3QgPSBKU0M6OmpzQ2FzdDwke2NsYXNzTmFt
ZX0qPihjZWxsKTtcbiIpOwogICAgICAgICBwdXNoKEBoZWFkZXJDb250ZW50LCAiICAgIEFTU0VS
VF9HQ19PQkpFQ1RfSU5IRVJJVFModGhpc09iamVjdCwgJnNfaW5mbyk7XG4iKTsKICAgICAgICAg
cHVzaChAaGVhZGVyQ29udGVudCwgR2VuZXJhdGVHZXRPd25Qcm9wZXJ0eVNsb3RCb2R5KCRkYXRh
Tm9kZSwgJGludGVyZmFjZU5hbWUsICRjbGFzc05hbWUsICRpbXBsQ2xhc3NOYW1lLCAkbnVtQXR0
cmlidXRlcyA+IDAsIDEpKTsKICAgICAgICAgcHVzaChAaGVhZGVyQ29udGVudCwgIn1cblxuIik7
Ci0gICAgICAgIHB1c2goQGhlYWRlckNvbnRlbnQsICJBTFdBWVNfSU5MSU5FIGJvb2wgJHtjbGFz
c05hbWV9OjpnZXRPd25Qcm9wZXJ0eURlc2NyaXB0b3IoSlNDOjpKU09iamVjdCogb2JqZWN0LCBK
U0M6OkV4ZWNTdGF0ZSogZXhlYywgY29uc3QgSlNDOjpJZGVudGlmaWVyJiBwcm9wZXJ0eU5hbWUs
IEpTQzo6UHJvcGVydHlEZXNjcmlwdG9yJiBkZXNjcmlwdG9yKVxuIik7CisgICAgICAgIHB1c2go
QGhlYWRlckNvbnRlbnQsICJBTFdBWVNfSU5MSU5FIGJvb2wgJHtjbGFzc05hbWV9OjpnZXRPd25Q
cm9wZXJ0eURlc2NyaXB0b3IoSlNDOjpKU09iamVjdCogb2JqZWN0LCBKU0M6OkV4ZWNTdGF0ZSog
ZXhlYywgSlNDOjpQcm9wZXJ0eU5hbWUgcHJvcGVydHlOYW1lLCBKU0M6OlByb3BlcnR5RGVzY3Jp
cHRvciYgZGVzY3JpcHRvcilcbiIpOwogICAgICAgICBwdXNoKEBoZWFkZXJDb250ZW50LCAie1xu
Iik7CiAgICAgICAgIHB1c2goQGhlYWRlckNvbnRlbnQsICIgICAgJHtjbGFzc05hbWV9KiB0aGlz
T2JqZWN0ID0gSlNDOjpqc0Nhc3Q8JHtjbGFzc05hbWV9Kj4ob2JqZWN0KTtcbiIpOwogICAgICAg
ICBwdXNoKEBoZWFkZXJDb250ZW50LCAiICAgIEFTU0VSVF9HQ19PQkpFQ1RfSU5IRVJJVFModGhp
c09iamVjdCwgJnNfaW5mbyk7XG4iKTsKQEAgLTEwMjYsOCArMTAyNCw4IEBAIHN1YiBHZW5lcmF0
ZUhlYWRlcgogCiAgICAgcHVzaChAaGVhZGVyQ29udGVudCwgIiAgICBzdGF0aWMgY29uc3QgSlND
OjpDbGFzc0luZm8gc19pbmZvO1xuIik7CiAgICAgaWYgKCRudW1GdW5jdGlvbnMgPiAwIHx8ICRu
dW1Db25zdGFudHMgPiAwKSB7Ci0gICAgICAgIHB1c2goQGhlYWRlckNvbnRlbnQsICIgICAgc3Rh
dGljIGJvb2wgZ2V0T3duUHJvcGVydHlTbG90KEpTQzo6SlNDZWxsKiwgSlNDOjpFeGVjU3RhdGUq
LCBjb25zdCBKU0M6OklkZW50aWZpZXImLCBKU0M6OlByb3BlcnR5U2xvdCYpO1xuIik7Ci0gICAg
ICAgIHB1c2goQGhlYWRlckNvbnRlbnQsICIgICAgc3RhdGljIGJvb2wgZ2V0T3duUHJvcGVydHlE
ZXNjcmlwdG9yKEpTQzo6SlNPYmplY3QqLCBKU0M6OkV4ZWNTdGF0ZSosIGNvbnN0IEpTQzo6SWRl
bnRpZmllciYsIEpTQzo6UHJvcGVydHlEZXNjcmlwdG9yJik7XG4iKTsKKyAgICAgICAgcHVzaChA
aGVhZGVyQ29udGVudCwgIiAgICBzdGF0aWMgYm9vbCBnZXRPd25Qcm9wZXJ0eVNsb3QoSlNDOjpK
U0NlbGwqLCBKU0M6OkV4ZWNTdGF0ZSosIEpTQzo6UHJvcGVydHlOYW1lLCBKU0M6OlByb3BlcnR5
U2xvdCYpO1xuIik7CisgICAgICAgIHB1c2goQGhlYWRlckNvbnRlbnQsICIgICAgc3RhdGljIGJv
b2wgZ2V0T3duUHJvcGVydHlEZXNjcmlwdG9yKEpTQzo6SlNPYmplY3QqLCBKU0M6OkV4ZWNTdGF0
ZSosIEpTQzo6UHJvcGVydHlOYW1lLCBKU0M6OlByb3BlcnR5RGVzY3JpcHRvciYpO1xuIik7CiAg
ICAgICAgICRzdHJ1Y3R1cmVGbGFnc3siSlNDOjpPdmVycmlkZXNHZXRPd25Qcm9wZXJ0eVNsb3Qi
fSA9IDE7CiAgICAgfQogICAgIGlmICgkZGF0YU5vZGUtPmV4dGVuZGVkQXR0cmlidXRlcy0+eyJK
U0N1c3RvbU1hcmtGdW5jdGlvbiJ9IG9yICRuZWVkc01hcmtDaGlsZHJlbikgewpAQCAtMTAzOSwx
MiArMTAzNywxMiBAQCBzdWIgR2VuZXJhdGVIZWFkZXIKICAgICAgICAgIiAgICAgICAgcmV0dXJu
IEpTQzo6U3RydWN0dXJlOjpjcmVhdGUoZ2xvYmFsRGF0YSwgZ2xvYmFsT2JqZWN0LCBwcm90b3R5
cGUsIEpTQzo6VHlwZUluZm8oSlNDOjpPYmplY3RUeXBlLCBTdHJ1Y3R1cmVGbGFncyksICZzX2lu
Zm8pO1xuIiAuCiAgICAgICAgICIgICAgfVxuIik7CiAgICAgaWYgKCRkYXRhTm9kZS0+ZXh0ZW5k
ZWRBdHRyaWJ1dGVzLT57IkpTQ3VzdG9tTmFtZWRHZXR0ZXJPblByb3RvdHlwZSJ9KSB7Ci0gICAg
ICAgIHB1c2goQGhlYWRlckNvbnRlbnQsICIgICAgc3RhdGljIHZvaWQgcHV0KEpTQzo6SlNDZWxs
KiwgSlNDOjpFeGVjU3RhdGUqLCBjb25zdCBKU0M6OklkZW50aWZpZXImIHByb3BlcnR5TmFtZSwg
SlNDOjpKU1ZhbHVlLCBKU0M6OlB1dFByb3BlcnR5U2xvdCYpO1xuIik7Ci0gICAgICAgIHB1c2go
QGhlYWRlckNvbnRlbnQsICIgICAgYm9vbCBwdXREZWxlZ2F0ZShKU0M6OkV4ZWNTdGF0ZSosIGNv
bnN0IEpTQzo6SWRlbnRpZmllciYsIEpTQzo6SlNWYWx1ZSwgSlNDOjpQdXRQcm9wZXJ0eVNsb3Qm
KTtcbiIpOworICAgICAgICBwdXNoKEBoZWFkZXJDb250ZW50LCAiICAgIHN0YXRpYyB2b2lkIHB1
dChKU0M6OkpTQ2VsbCosIEpTQzo6RXhlY1N0YXRlKiwgSlNDOjpQcm9wZXJ0eU5hbWUgcHJvcGVy
dHlOYW1lLCBKU0M6OkpTVmFsdWUsIEpTQzo6UHV0UHJvcGVydHlTbG90Jik7XG4iKTsKKyAgICAg
ICAgcHVzaChAaGVhZGVyQ29udGVudCwgIiAgICBib29sIHB1dERlbGVnYXRlKEpTQzo6RXhlY1N0
YXRlKiwgSlNDOjpQcm9wZXJ0eU5hbWUsIEpTQzo6SlNWYWx1ZSwgSlNDOjpQdXRQcm9wZXJ0eVNs
b3QmKTtcbiIpOwogICAgIH0KIAogICAgICMgQ3VzdG9tIGRlZmluZU93blByb3BlcnR5IGZ1bmN0
aW9uCi0gICAgcHVzaChAaGVhZGVyQ29udGVudCwgIiAgICBzdGF0aWMgYm9vbCBkZWZpbmVPd25Q
cm9wZXJ0eShKU0M6OkpTT2JqZWN0KiwgSlNDOjpFeGVjU3RhdGUqLCBjb25zdCBKU0M6OklkZW50
aWZpZXImIHByb3BlcnR5TmFtZSwgSlNDOjpQcm9wZXJ0eURlc2NyaXB0b3ImLCBib29sIHNob3Vs
ZFRocm93KTtcbiIpIGlmICRkYXRhTm9kZS0+ZXh0ZW5kZWRBdHRyaWJ1dGVzLT57IkpTQ3VzdG9t
RGVmaW5lT3duUHJvcGVydHlPblByb3RvdHlwZSJ9OworICAgIHB1c2goQGhlYWRlckNvbnRlbnQs
ICIgICAgc3RhdGljIGJvb2wgZGVmaW5lT3duUHJvcGVydHkoSlNDOjpKU09iamVjdCosIEpTQzo6
RXhlY1N0YXRlKiwgSlNDOjpQcm9wZXJ0eU5hbWUgcHJvcGVydHlOYW1lLCBKU0M6OlByb3BlcnR5
RGVzY3JpcHRvciYsIGJvb2wgc2hvdWxkVGhyb3cpO1xuIikgaWYgJGRhdGFOb2RlLT5leHRlbmRl
ZEF0dHJpYnV0ZXMtPnsiSlNDdXN0b21EZWZpbmVPd25Qcm9wZXJ0eU9uUHJvdG90eXBlIn07CiAK
ICAgICBwdXNoKEBoZWFkZXJDb250ZW50LCAiXG5wcml2YXRlOlxuIik7CiAgICAgcHVzaChAaGVh
ZGVyQ29udGVudCwgIiAgICAke2NsYXNzTmFtZX1Qcm90b3R5cGUoSlNDOjpKU0dsb2JhbERhdGEm
IGdsb2JhbERhdGEsIEpTQzo6SlNHbG9iYWxPYmplY3QqLCBKU0M6OlN0cnVjdHVyZSogc3RydWN0
dXJlKSA6IEpTQzo6SlNOb25GaW5hbE9iamVjdChnbG9iYWxEYXRhLCBzdHJ1Y3R1cmUpIHsgfVxu
Iik7CkBAIC0xMDgyLDcgKzEwODAsNyBAQCBzdWIgR2VuZXJhdGVIZWFkZXIKICAgICAgICAgICAg
IG15ICRjb25kaXRpb25hbFN0cmluZyA9ICRjb2RlR2VuZXJhdG9yLT5HZW5lcmF0ZUNvbmRpdGlv
bmFsU3RyaW5nKCRhdHRyaWJ1dGUtPnNpZ25hdHVyZSk7CiAgICAgICAgICAgICBwdXNoKEBoZWFk
ZXJDb250ZW50LCAiI2lmICR7Y29uZGl0aW9uYWxTdHJpbmd9XG4iKSBpZiAkY29uZGl0aW9uYWxT
dHJpbmc7CiAgICAgICAgICAgICBteSAkZ2V0dGVyID0gImpzIiAuICRpbnRlcmZhY2VOYW1lIC4g
JGNvZGVHZW5lcmF0b3ItPldLX3VjZmlyc3QoJGF0dHJpYnV0ZS0+c2lnbmF0dXJlLT5uYW1lKSAu
ICgkYXR0cmlidXRlLT5zaWduYXR1cmUtPnR5cGUgPX4gL0NvbnN0cnVjdG9yJC8gPyAiQ29uc3Ry
dWN0b3IiIDogIiIpOwotICAgICAgICAgICAgcHVzaChAaGVhZGVyQ29udGVudCwgIkpTQzo6SlNW
YWx1ZSAke2dldHRlcn0oSlNDOjpFeGVjU3RhdGUqLCBKU0M6OkpTVmFsdWUsIGNvbnN0IEpTQzo6
SWRlbnRpZmllciYpO1xuIik7CisgICAgICAgICAgICBwdXNoKEBoZWFkZXJDb250ZW50LCAiSlND
OjpKU1ZhbHVlICR7Z2V0dGVyfShKU0M6OkV4ZWNTdGF0ZSosIEpTQzo6SlNWYWx1ZSwgSlNDOjpQ
cm9wZXJ0eU5hbWUpO1xuIik7CiAgICAgICAgICAgICB1bmxlc3MgKCRhdHRyaWJ1dGUtPnR5cGUg
PX4gL3JlYWRvbmx5LykgewogICAgICAgICAgICAgICAgIG15ICRzZXR0ZXIgPSAic2V0SlMiIC4g
JGludGVyZmFjZU5hbWUgLiAkY29kZUdlbmVyYXRvci0+V0tfdWNmaXJzdCgkYXR0cmlidXRlLT5z
aWduYXR1cmUtPm5hbWUpIC4gKCRhdHRyaWJ1dGUtPnNpZ25hdHVyZS0+dHlwZSA9fiAvQ29uc3Ry
dWN0b3IkLyA/ICJDb25zdHJ1Y3RvciIgOiAiIik7CiAgICAgICAgICAgICAgICAgcHVzaChAaGVh
ZGVyQ29udGVudCwgInZvaWQgJHtzZXR0ZXJ9KEpTQzo6RXhlY1N0YXRlKiwgSlNDOjpKU09iamVj
dCosIEpTQzo6SlNWYWx1ZSk7XG4iKTsKQEAgLTEwOTIsNyArMTA5MCw3IEBAIHN1YiBHZW5lcmF0
ZUhlYWRlcgogICAgICAgICAKICAgICAgICAgaWYgKCEkZGF0YU5vZGUtPmV4dGVuZGVkQXR0cmli
dXRlcy0+eyJPbWl0Q29uc3RydWN0b3IifSkgewogICAgICAgICAgICAgbXkgJGdldHRlciA9ICJq
cyIgLiAkaW50ZXJmYWNlTmFtZSAuICJDb25zdHJ1Y3RvciI7Ci0gICAgICAgICAgICBwdXNoKEBo
ZWFkZXJDb250ZW50LCAiSlNDOjpKU1ZhbHVlICR7Z2V0dGVyfShKU0M6OkV4ZWNTdGF0ZSosIEpT
Qzo6SlNWYWx1ZSwgY29uc3QgSlNDOjpJZGVudGlmaWVyJik7XG4iKTsKKyAgICAgICAgICAgIHB1
c2goQGhlYWRlckNvbnRlbnQsICJKU0M6OkpTVmFsdWUgJHtnZXR0ZXJ9KEpTQzo6RXhlY1N0YXRl
KiwgSlNDOjpKU1ZhbHVlLCBKU0M6OlByb3BlcnR5TmFtZSk7XG4iKTsKICAgICAgICAgfQogCiAg
ICAgICAgIGlmICgkZGF0YU5vZGUtPmV4dGVuZGVkQXR0cmlidXRlcy0+eyJSZXBsYWNlYWJsZUNv
bnN0cnVjdG9yIn0pIHsKQEAgLTExMDcsNyArMTEwNSw3IEBAIHN1YiBHZW5lcmF0ZUhlYWRlcgog
ICAgICAgICAgICAgbXkgJGNvbmRpdGlvbmFsU3RyaW5nID0gJGNvZGVHZW5lcmF0b3ItPkdlbmVy
YXRlQ29uZGl0aW9uYWxTdHJpbmcoJGNvbnN0YW50KTsKICAgICAgICAgICAgIHB1c2goQGhlYWRl
ckNvbnRlbnQsICIjaWYgJHtjb25kaXRpb25hbFN0cmluZ31cbiIpIGlmICRjb25kaXRpb25hbFN0
cmluZzsKICAgICAgICAgICAgIG15ICRnZXR0ZXIgPSAianMiIC4gJGludGVyZmFjZU5hbWUgLiAk
Y29kZUdlbmVyYXRvci0+V0tfdWNmaXJzdCgkY29uc3RhbnQtPm5hbWUpOwotICAgICAgICAgICAg
cHVzaChAaGVhZGVyQ29udGVudCwgIkpTQzo6SlNWYWx1ZSAke2dldHRlcn0oSlNDOjpFeGVjU3Rh
dGUqLCBKU0M6OkpTVmFsdWUsIGNvbnN0IEpTQzo6SWRlbnRpZmllciYpO1xuIik7CisgICAgICAg
ICAgICBwdXNoKEBoZWFkZXJDb250ZW50LCAiSlNDOjpKU1ZhbHVlICR7Z2V0dGVyfShKU0M6OkV4
ZWNTdGF0ZSosIEpTQzo6SlNWYWx1ZSwgSlNDOjpQcm9wZXJ0eU5hbWUpO1xuIik7CiAgICAgICAg
ICAgICBwdXNoKEBoZWFkZXJDb250ZW50LCAiI2VuZGlmXG4iKSBpZiAkY29uZGl0aW9uYWxTdHJp
bmc7CiAgICAgICAgIH0KICAgICB9CkBAIC0xNDgwLDcgKzE0NzgsNyBAQCBzdWIgR2VuZXJhdGVJ
bXBsZW1lbnRhdGlvbgogICAgIH0KIAogICAgIGlmICgkbnVtQ29uc3RhbnRzID4gMCB8fCAkbnVt
RnVuY3Rpb25zID4gMCkgewotICAgICAgICBwdXNoKEBpbXBsQ29udGVudCwgImJvb2wgJHtjbGFz
c05hbWV9UHJvdG90eXBlOjpnZXRPd25Qcm9wZXJ0eVNsb3QoSlNDZWxsKiBjZWxsLCBFeGVjU3Rh
dGUqIGV4ZWMsIGNvbnN0IElkZW50aWZpZXImIHByb3BlcnR5TmFtZSwgUHJvcGVydHlTbG90JiBz
bG90KVxuIik7CisgICAgICAgIHB1c2goQGltcGxDb250ZW50LCAiYm9vbCAke2NsYXNzTmFtZX1Q
cm90b3R5cGU6OmdldE93blByb3BlcnR5U2xvdChKU0NlbGwqIGNlbGwsIEV4ZWNTdGF0ZSogZXhl
YywgUHJvcGVydHlOYW1lIHByb3BlcnR5TmFtZSwgUHJvcGVydHlTbG90JiBzbG90KVxuIik7CiAg
ICAgICAgIHB1c2goQGltcGxDb250ZW50LCAie1xuIik7CiAgICAgICAgIHB1c2goQGltcGxDb250
ZW50LCAiICAgICR7Y2xhc3NOYW1lfVByb3RvdHlwZSogdGhpc09iamVjdCA9IGpzQ2FzdDwke2Ns
YXNzTmFtZX1Qcm90b3R5cGUqPihjZWxsKTtcbiIpOwogCkBAIC0xNDk1LDcgKzE0OTMsNyBAQCBz
dWIgR2VuZXJhdGVJbXBsZW1lbnRhdGlvbgogICAgICAgICB9CiAgICAgICAgIHB1c2goQGltcGxD
b250ZW50LCAifVxuXG4iKTsKIAotICAgICAgICBwdXNoKEBpbXBsQ29udGVudCwgImJvb2wgJHtj
bGFzc05hbWV9UHJvdG90eXBlOjpnZXRPd25Qcm9wZXJ0eURlc2NyaXB0b3IoSlNPYmplY3QqIG9i
amVjdCwgRXhlY1N0YXRlKiBleGVjLCBjb25zdCBJZGVudGlmaWVyJiBwcm9wZXJ0eU5hbWUsIFBy
b3BlcnR5RGVzY3JpcHRvciYgZGVzY3JpcHRvcilcbiIpOworICAgICAgICBwdXNoKEBpbXBsQ29u
dGVudCwgImJvb2wgJHtjbGFzc05hbWV9UHJvdG90eXBlOjpnZXRPd25Qcm9wZXJ0eURlc2NyaXB0
b3IoSlNPYmplY3QqIG9iamVjdCwgRXhlY1N0YXRlKiBleGVjLCBQcm9wZXJ0eU5hbWUgcHJvcGVy
dHlOYW1lLCBQcm9wZXJ0eURlc2NyaXB0b3ImIGRlc2NyaXB0b3IpXG4iKTsKICAgICAgICAgcHVz
aChAaW1wbENvbnRlbnQsICJ7XG4iKTsKICAgICAgICAgcHVzaChAaW1wbENvbnRlbnQsICIgICAg
JHtjbGFzc05hbWV9UHJvdG90eXBlKiB0aGlzT2JqZWN0ID0ganNDYXN0PCR7Y2xhc3NOYW1lfVBy
b3RvdHlwZSo+KG9iamVjdCk7XG4iKTsKIApAQCAtMTUxMiw3ICsxNTEwLDcgQEAgc3ViIEdlbmVy
YXRlSW1wbGVtZW50YXRpb24KICAgICB9CiAKICAgICBpZiAoJGRhdGFOb2RlLT5leHRlbmRlZEF0
dHJpYnV0ZXMtPnsiSlNDdXN0b21OYW1lZEdldHRlck9uUHJvdG90eXBlIn0pIHsKLSAgICAgICAg
cHVzaChAaW1wbENvbnRlbnQsICJ2b2lkICR7Y2xhc3NOYW1lfVByb3RvdHlwZTo6cHV0KEpTQ2Vs
bCogY2VsbCwgRXhlY1N0YXRlKiBleGVjLCBjb25zdCBJZGVudGlmaWVyJiBwcm9wZXJ0eU5hbWUs
IEpTVmFsdWUgdmFsdWUsIFB1dFByb3BlcnR5U2xvdCYgc2xvdClcbiIpOworICAgICAgICBwdXNo
KEBpbXBsQ29udGVudCwgInZvaWQgJHtjbGFzc05hbWV9UHJvdG90eXBlOjpwdXQoSlNDZWxsKiBj
ZWxsLCBFeGVjU3RhdGUqIGV4ZWMsIFByb3BlcnR5TmFtZSBwcm9wZXJ0eU5hbWUsIEpTVmFsdWUg
dmFsdWUsIFB1dFByb3BlcnR5U2xvdCYgc2xvdClcbiIpOwogICAgICAgICBwdXNoKEBpbXBsQ29u
dGVudCwgIntcbiIpOwogICAgICAgICBwdXNoKEBpbXBsQ29udGVudCwgIiAgICAke2NsYXNzTmFt
ZX1Qcm90b3R5cGUqIHRoaXNPYmplY3QgPSBqc0Nhc3Q8JHtjbGFzc05hbWV9UHJvdG90eXBlKj4o
Y2VsbCk7XG4iKTsKICAgICAgICAgcHVzaChAaW1wbENvbnRlbnQsICIgICAgaWYgKHRoaXNPYmpl
Y3QtPnB1dERlbGVnYXRlKGV4ZWMsIHByb3BlcnR5TmFtZSwgdmFsdWUsIHNsb3QpKVxuIik7CkBA
IC0xNjMyLDEzICsxNjMwLDEzIEBAIHN1YiBHZW5lcmF0ZUltcGxlbWVudGF0aW9uCiAgICAgIyBB
dHRyaWJ1dGVzCiAgICAgaWYgKCRoYXNHZXR0ZXIpIHsKICAgICAgICAgaWYgKCEkZGF0YU5vZGUt
PmV4dGVuZGVkQXR0cmlidXRlcy0+eyJKU0lubGluZUdldE93blByb3BlcnR5U2xvdCJ9ICYmICEk
ZGF0YU5vZGUtPmV4dGVuZGVkQXR0cmlidXRlcy0+eyJDdXN0b21HZXRPd25Qcm9wZXJ0eVNsb3Qi
fSkgewotICAgICAgICAgICAgcHVzaChAaW1wbENvbnRlbnQsICJib29sICR7Y2xhc3NOYW1lfTo6
Z2V0T3duUHJvcGVydHlTbG90KEpTQ2VsbCogY2VsbCwgRXhlY1N0YXRlKiBleGVjLCBjb25zdCBJ
ZGVudGlmaWVyJiBwcm9wZXJ0eU5hbWUsIFByb3BlcnR5U2xvdCYgc2xvdClcbiIpOworICAgICAg
ICAgICAgcHVzaChAaW1wbENvbnRlbnQsICJib29sICR7Y2xhc3NOYW1lfTo6Z2V0T3duUHJvcGVy
dHlTbG90KEpTQ2VsbCogY2VsbCwgRXhlY1N0YXRlKiBleGVjLCBQcm9wZXJ0eU5hbWUgcHJvcGVy
dHlOYW1lLCBQcm9wZXJ0eVNsb3QmIHNsb3QpXG4iKTsKICAgICAgICAgICAgIHB1c2goQGltcGxD
b250ZW50LCAie1xuIik7CiAgICAgICAgICAgICBwdXNoKEBpbXBsQ29udGVudCwgIiAgICAke2Ns
YXNzTmFtZX0qIHRoaXNPYmplY3QgPSBqc0Nhc3Q8JHtjbGFzc05hbWV9Kj4oY2VsbCk7XG4iKTsK
ICAgICAgICAgICAgIHB1c2goQGltcGxDb250ZW50LCAiICAgIEFTU0VSVF9HQ19PQkpFQ1RfSU5I
RVJJVFModGhpc09iamVjdCwgJnNfaW5mbyk7XG4iKTsKICAgICAgICAgICAgIHB1c2goQGltcGxD
b250ZW50LCBHZW5lcmF0ZUdldE93blByb3BlcnR5U2xvdEJvZHkoJGRhdGFOb2RlLCAkaW50ZXJm
YWNlTmFtZSwgJGNsYXNzTmFtZSwgJGltcGxDbGFzc05hbWUsICRudW1BdHRyaWJ1dGVzID4gMCwg
MCkpOwogICAgICAgICAgICAgcHVzaChAaW1wbENvbnRlbnQsICJ9XG5cbiIpOwotICAgICAgICAg
ICAgcHVzaChAaW1wbENvbnRlbnQsICJib29sICR7Y2xhc3NOYW1lfTo6Z2V0T3duUHJvcGVydHlE
ZXNjcmlwdG9yKEpTT2JqZWN0KiBvYmplY3QsIEV4ZWNTdGF0ZSogZXhlYywgY29uc3QgSWRlbnRp
ZmllciYgcHJvcGVydHlOYW1lLCBQcm9wZXJ0eURlc2NyaXB0b3ImIGRlc2NyaXB0b3IpXG4iKTsK
KyAgICAgICAgICAgIHB1c2goQGltcGxDb250ZW50LCAiYm9vbCAke2NsYXNzTmFtZX06OmdldE93
blByb3BlcnR5RGVzY3JpcHRvcihKU09iamVjdCogb2JqZWN0LCBFeGVjU3RhdGUqIGV4ZWMsIFBy
b3BlcnR5TmFtZSBwcm9wZXJ0eU5hbWUsIFByb3BlcnR5RGVzY3JpcHRvciYgZGVzY3JpcHRvcilc
biIpOwogICAgICAgICAgICAgcHVzaChAaW1wbENvbnRlbnQsICJ7XG4iKTsKICAgICAgICAgICAg
IHB1c2goQGltcGxDb250ZW50LCAiICAgICR7Y2xhc3NOYW1lfSogdGhpc09iamVjdCA9IGpzQ2Fz
dDwke2NsYXNzTmFtZX0qPihvYmplY3QpO1xuIik7CiAgICAgICAgICAgICBwdXNoKEBpbXBsQ29u
dGVudCwgIiAgICBBU1NFUlRfR0NfT0JKRUNUX0lOSEVSSVRTKHRoaXNPYmplY3QsICZzX2luZm8p
O1xuIik7CkBAIC0xNjc0LDcgKzE2NzIsNyBAQCBzdWIgR2VuZXJhdGVJbXBsZW1lbnRhdGlvbgog
ICAgICAgICAgICAgICAgIG15ICRhdHRyaWJ1dGVDb25kaXRpb25hbFN0cmluZyA9ICRjb2RlR2Vu
ZXJhdG9yLT5HZW5lcmF0ZUNvbmRpdGlvbmFsU3RyaW5nKCRhdHRyaWJ1dGUtPnNpZ25hdHVyZSk7
CiAgICAgICAgICAgICAgICAgcHVzaChAaW1wbENvbnRlbnQsICIjaWYgJHthdHRyaWJ1dGVDb25k
aXRpb25hbFN0cmluZ31cbiIpIGlmICRhdHRyaWJ1dGVDb25kaXRpb25hbFN0cmluZzsKIAotICAg
ICAgICAgICAgICAgIHB1c2goQGltcGxDb250ZW50LCAiSlNWYWx1ZSAke2dldEZ1bmN0aW9uTmFt
ZX0oRXhlY1N0YXRlKiBleGVjLCBKU1ZhbHVlIHNsb3RCYXNlLCBjb25zdCBJZGVudGlmaWVyJilc
biIpOworICAgICAgICAgICAgICAgIHB1c2goQGltcGxDb250ZW50LCAiSlNWYWx1ZSAke2dldEZ1
bmN0aW9uTmFtZX0oRXhlY1N0YXRlKiBleGVjLCBKU1ZhbHVlIHNsb3RCYXNlLCBQcm9wZXJ0eU5h
bWUpXG4iKTsKICAgICAgICAgICAgICAgICBwdXNoKEBpbXBsQ29udGVudCwgIntcbiIpOwogICAg
ICAgICAgICAgICAgIHB1c2goQGltcGxDb250ZW50LCAiICAgICR7Y2xhc3NOYW1lfSogY2FzdGVk
VGhpcyA9IGpzQ2FzdDwkY2xhc3NOYW1lKj4oYXNPYmplY3Qoc2xvdEJhc2UpKTtcbiIpOwogCkBA
IC0xNzkzLDcgKzE3OTEsNyBAQCBzdWIgR2VuZXJhdGVJbXBsZW1lbnRhdGlvbgogICAgICAgICAg
ICAgaWYgKCEkZGF0YU5vZGUtPmV4dGVuZGVkQXR0cmlidXRlcy0+eyJPbWl0Q29uc3RydWN0b3Ii
fSkgewogICAgICAgICAgICAgICAgIG15ICRjb25zdHJ1Y3RvckZ1bmN0aW9uTmFtZSA9ICJqcyIg
LiAkaW50ZXJmYWNlTmFtZSAuICJDb25zdHJ1Y3RvciI7CiAKLSAgICAgICAgICAgICAgICBwdXNo
KEBpbXBsQ29udGVudCwgIkpTVmFsdWUgJHtjb25zdHJ1Y3RvckZ1bmN0aW9uTmFtZX0oRXhlY1N0
YXRlKiBleGVjLCBKU1ZhbHVlIHNsb3RCYXNlLCBjb25zdCBJZGVudGlmaWVyJilcbiIpOworICAg
ICAgICAgICAgICAgIHB1c2goQGltcGxDb250ZW50LCAiSlNWYWx1ZSAke2NvbnN0cnVjdG9yRnVu
Y3Rpb25OYW1lfShFeGVjU3RhdGUqIGV4ZWMsIEpTVmFsdWUgc2xvdEJhc2UsIFByb3BlcnR5TmFt
ZSlcbiIpOwogICAgICAgICAgICAgICAgIHB1c2goQGltcGxDb250ZW50LCAie1xuIik7CiAgICAg
ICAgICAgICAgICAgcHVzaChAaW1wbENvbnRlbnQsICIgICAgJHtjbGFzc05hbWV9KiBkb21PYmpl
Y3QgPSBqc0Nhc3Q8JGNsYXNzTmFtZSo+KGFzT2JqZWN0KHNsb3RCYXNlKSk7XG4iKTsKIApAQCAt
MTgxOSwxNCArMTgxNywxMyBAQCBzdWIgR2VuZXJhdGVJbXBsZW1lbnRhdGlvbgogCiAgICAgICAg
IGlmICgkaGFzU2V0dGVyKSB7CiAgICAgICAgICAgICBpZiAoISRkYXRhTm9kZS0+ZXh0ZW5kZWRB
dHRyaWJ1dGVzLT57IkN1c3RvbVB1dEZ1bmN0aW9uIn0pIHsKLSAgICAgICAgICAgICAgICBwdXNo
KEBpbXBsQ29udGVudCwgInZvaWQgJHtjbGFzc05hbWV9OjpwdXQoSlNDZWxsKiBjZWxsLCBFeGVj
U3RhdGUqIGV4ZWMsIGNvbnN0IElkZW50aWZpZXImIHByb3BlcnR5TmFtZSwgSlNWYWx1ZSB2YWx1
ZSwgUHV0UHJvcGVydHlTbG90JiBzbG90KVxuIik7CisgICAgICAgICAgICAgICAgcHVzaChAaW1w
bENvbnRlbnQsICJ2b2lkICR7Y2xhc3NOYW1lfTo6cHV0KEpTQ2VsbCogY2VsbCwgRXhlY1N0YXRl
KiBleGVjLCBQcm9wZXJ0eU5hbWUgcHJvcGVydHlOYW1lLCBKU1ZhbHVlIHZhbHVlLCBQdXRQcm9w
ZXJ0eVNsb3QmIHNsb3QpXG4iKTsKICAgICAgICAgICAgICAgICBwdXNoKEBpbXBsQ29udGVudCwg
IntcbiIpOwogICAgICAgICAgICAgICAgIHB1c2goQGltcGxDb250ZW50LCAiICAgICR7Y2xhc3NO
YW1lfSogdGhpc09iamVjdCA9IGpzQ2FzdDwke2NsYXNzTmFtZX0qPihjZWxsKTtcbiIpOwogICAg
ICAgICAgICAgICAgIHB1c2goQGltcGxDb250ZW50LCAiICAgIEFTU0VSVF9HQ19PQkpFQ1RfSU5I
RVJJVFModGhpc09iamVjdCwgJnNfaW5mbyk7XG4iKTsKICAgICAgICAgICAgICAgICBpZiAoJGRh
dGFOb2RlLT5leHRlbmRlZEF0dHJpYnV0ZXMtPnsiQ3VzdG9tSW5kZXhlZFNldHRlciJ9KSB7Ci0g
ICAgICAgICAgICAgICAgICAgIHB1c2goQGltcGxDb250ZW50LCAiICAgIGJvb2wgb2s7XG4iKTsK
LSAgICAgICAgICAgICAgICAgICAgcHVzaChAaW1wbENvbnRlbnQsICIgICAgdW5zaWduZWQgaW5k
ZXggPSBwcm9wZXJ0eU5hbWUudG9VSW50MzIob2spO1xuIik7Ci0gICAgICAgICAgICAgICAgICAg
IHB1c2goQGltcGxDb250ZW50LCAiICAgIGlmIChvaykge1xuIik7CisgICAgICAgICAgICAgICAg
ICAgIHB1c2goQGltcGxDb250ZW50LCAiICAgIHVuc2lnbmVkIGluZGV4ID0gcHJvcGVydHlOYW1l
LmFzSW5kZXgoKTtcbiIpOworICAgICAgICAgICAgICAgICAgICBwdXNoKEBpbXBsQ29udGVudCwg
IiAgICBpZiAoaW5kZXggIT0gUHJvcGVydHlOYW1lOjpOb3RBbkluZGV4KSB7XG4iKTsKICAgICAg
ICAgICAgICAgICAgICAgcHVzaChAaW1wbENvbnRlbnQsICIgICAgICAgIHRoaXNPYmplY3QtPmlu
ZGV4U2V0dGVyKGV4ZWMsIGluZGV4LCB2YWx1ZSk7XG4iKTsKICAgICAgICAgICAgICAgICAgICAg
cHVzaChAaW1wbENvbnRlbnQsICIgICAgICAgIHJldHVybjtcbiIpOwogICAgICAgICAgICAgICAg
ICAgICBwdXNoKEBpbXBsQ29udGVudCwgIiAgICB9XG4iKTsKQEAgLTIxOTgsNyArMjE5NSw3IEBA
IHN1YiBHZW5lcmF0ZUltcGxlbWVudGF0aW9uCiAgICAgICAgICAgICB9CiAKICAgICAgICAgICAg
ICMgRklYTUU6IHRoaXMgY2FzdHMgaW50byBpbnQgdG8gbWF0Y2ggb3VyIHByZXZpb3VzIGJlaGF2
aW9yIHdoaWNoIHR1cm5lZCAweEZGRkZGRkZGIGluIC0xIGZvciBOb2RlRmlsdGVyLlNIT1dfQUxM
Ci0gICAgICAgICAgICBwdXNoKEBpbXBsQ29udGVudCwgIkpTVmFsdWUgJHtnZXR0ZXJ9KEV4ZWNT
dGF0ZSogZXhlYywgSlNWYWx1ZSwgY29uc3QgSWRlbnRpZmllciYpXG4iKTsKKyAgICAgICAgICAg
IHB1c2goQGltcGxDb250ZW50LCAiSlNWYWx1ZSAke2dldHRlcn0oRXhlY1N0YXRlKiBleGVjLCBK
U1ZhbHVlLCBQcm9wZXJ0eU5hbWUpXG4iKTsKICAgICAgICAgICAgIHB1c2goQGltcGxDb250ZW50
LCAie1xuIik7CiAgICAgICAgICAgICBpZiAoJGNvbnN0YW50LT50eXBlIGVxICJET01TdHJpbmci
KSB7CiAgICAgICAgICAgICAgICAgcHVzaChAaW1wbENvbnRlbnQsICIgICAgcmV0dXJuIGpzU3Ry
aW5nT3JOdWxsKGV4ZWMsIFN0cmluZygiIC4gJGNvbnN0YW50LT52YWx1ZSAuICIpKTtcbiIpOwpA
QCAtMjI0NywxNCArMjI0NCwxNCBAQCBzdWIgR2VuZXJhdGVJbXBsZW1lbnRhdGlvbgogCiAgICAg
aWYgKCRpbnRlcmZhY2VOYW1lIGVxICJIVE1MUHJvcGVydGllc0NvbGxlY3Rpb24iKSB7CiAgICAg
ICAgIGlmICgkZGF0YU5vZGUtPmV4dGVuZGVkQXR0cmlidXRlcy0+eyJOYW1lZEdldHRlciJ9KSB7
Ci0gICAgICAgICAgICBwdXNoKEBpbXBsQ29udGVudCwgImJvb2wgJHtjbGFzc05hbWV9OjpjYW5H
ZXRJdGVtc0Zvck5hbWUoRXhlY1N0YXRlKiwgJGltcGxDbGFzc05hbWUqIGNvbGxlY3Rpb24sIGNv
bnN0IElkZW50aWZpZXImIHByb3BlcnR5TmFtZSlcbiIpOworICAgICAgICAgICAgcHVzaChAaW1w
bENvbnRlbnQsICJib29sICR7Y2xhc3NOYW1lfTo6Y2FuR2V0SXRlbXNGb3JOYW1lKEV4ZWNTdGF0
ZSosICRpbXBsQ2xhc3NOYW1lKiBjb2xsZWN0aW9uLCBQcm9wZXJ0eU5hbWUgcHJvcGVydHlOYW1l
KVxuIik7CiAgICAgICAgICAgICBwdXNoKEBpbXBsQ29udGVudCwgIntcbiIpOwotICAgICAgICAg
ICAgcHVzaChAaW1wbENvbnRlbnQsICIgICAgcmV0dXJuIGNvbGxlY3Rpb24tPmhhc05hbWVkSXRl
bShpZGVudGlmaWVyVG9BdG9taWNTdHJpbmcocHJvcGVydHlOYW1lKSk7XG4iKTsKKyAgICAgICAg
ICAgIHB1c2goQGltcGxDb250ZW50LCAiICAgIHJldHVybiBjb2xsZWN0aW9uLT5oYXNOYW1lZEl0
ZW0ocHJvcGVydHlOYW1lVG9BdG9taWNTdHJpbmcocHJvcGVydHlOYW1lKSk7XG4iKTsKICAgICAg
ICAgICAgIHB1c2goQGltcGxDb250ZW50LCAifVxuXG4iKTsKLSAgICAgICAgICAgIHB1c2goQGlt
cGxDb250ZW50LCAiSlNWYWx1ZSAke2NsYXNzTmFtZX06Om5hbWVHZXR0ZXIoRXhlY1N0YXRlKiBl
eGVjLCBKU1ZhbHVlIHNsb3RCYXNlLCBjb25zdCBJZGVudGlmaWVyJiBwcm9wZXJ0eU5hbWUpXG4i
KTsKKyAgICAgICAgICAgIHB1c2goQGltcGxDb250ZW50LCAiSlNWYWx1ZSAke2NsYXNzTmFtZX06
Om5hbWVHZXR0ZXIoRXhlY1N0YXRlKiBleGVjLCBKU1ZhbHVlIHNsb3RCYXNlLCBQcm9wZXJ0eU5h
bWUgcHJvcGVydHlOYW1lKVxuIik7CiAgICAgICAgICAgICBwdXNoKEBpbXBsQ29udGVudCwgIntc
biIpOwogICAgICAgICAgICAgcHVzaChAaW1wbENvbnRlbnQsICIgICAgJHtjbGFzc05hbWV9KiB0
aGlzT2JqID0ganNDYXN0PCRjbGFzc05hbWUqPihhc09iamVjdChzbG90QmFzZSkpO1xuIik7Ci0g
ICAgICAgICAgICBwdXNoKEBpbXBsQ29udGVudCwgIiAgICByZXR1cm4gdG9KUyhleGVjLCB0aGlz
T2JqLT5nbG9iYWxPYmplY3QoKSwgc3RhdGljX2Nhc3Q8JGltcGxDbGFzc05hbWUqPih0aGlzT2Jq
LT5pbXBsKCkpLT5uYW1lZEl0ZW0oaWRlbnRpZmllclRvQXRvbWljU3RyaW5nKHByb3BlcnR5TmFt
ZSkpKTtcbiIpOworICAgICAgICAgICAgcHVzaChAaW1wbENvbnRlbnQsICIgICAgcmV0dXJuIHRv
SlMoZXhlYywgdGhpc09iai0+Z2xvYmFsT2JqZWN0KCksIHN0YXRpY19jYXN0PCRpbXBsQ2xhc3NO
YW1lKj4odGhpc09iai0+aW1wbCgpKS0+bmFtZWRJdGVtKHByb3BlcnR5TmFtZVRvQXRvbWljU3Ry
aW5nKHByb3BlcnR5TmFtZSkpKTtcbiIpOwogICAgICAgICAgICAgcHVzaChAaW1wbENvbnRlbnQs
ICJ9XG5cbiIpOwogICAgICAgICB9CiAgICAgfQpAQCAtMzM4Nyw4ICszMzg0LDggQEAgc3ViIEdl
bmVyYXRlQ29uc3RydWN0b3JEZWNsYXJhdGlvbgogICAgIHB1c2goQCRvdXRwdXRBcnJheSwgIiAg
ICAgICAgcmV0dXJuIHB0cjtcbiIpOwogICAgIHB1c2goQCRvdXRwdXRBcnJheSwgIiAgICB9XG5c
biIpOwogCi0gICAgcHVzaChAJG91dHB1dEFycmF5LCAiICAgIHN0YXRpYyBib29sIGdldE93blBy
b3BlcnR5U2xvdChKU0M6OkpTQ2VsbCosIEpTQzo6RXhlY1N0YXRlKiwgY29uc3QgSlNDOjpJZGVu
dGlmaWVyJiwgSlNDOjpQcm9wZXJ0eVNsb3QmKTtcbiIpOwotICAgIHB1c2goQCRvdXRwdXRBcnJh
eSwgIiAgICBzdGF0aWMgYm9vbCBnZXRPd25Qcm9wZXJ0eURlc2NyaXB0b3IoSlNDOjpKU09iamVj
dCosIEpTQzo6RXhlY1N0YXRlKiwgY29uc3QgSlNDOjpJZGVudGlmaWVyJiwgSlNDOjpQcm9wZXJ0
eURlc2NyaXB0b3ImKTtcbiIpOworICAgIHB1c2goQCRvdXRwdXRBcnJheSwgIiAgICBzdGF0aWMg
Ym9vbCBnZXRPd25Qcm9wZXJ0eVNsb3QoSlNDOjpKU0NlbGwqLCBKU0M6OkV4ZWNTdGF0ZSosIEpT
Qzo6UHJvcGVydHlOYW1lLCBKU0M6OlByb3BlcnR5U2xvdCYpO1xuIik7CisgICAgcHVzaChAJG91
dHB1dEFycmF5LCAiICAgIHN0YXRpYyBib29sIGdldE93blByb3BlcnR5RGVzY3JpcHRvcihKU0M6
OkpTT2JqZWN0KiwgSlNDOjpFeGVjU3RhdGUqLCBKU0M6OlByb3BlcnR5TmFtZSwgSlNDOjpQcm9w
ZXJ0eURlc2NyaXB0b3ImKTtcbiIpOwogICAgIHB1c2goQCRvdXRwdXRBcnJheSwgIiAgICBzdGF0
aWMgY29uc3QgSlNDOjpDbGFzc0luZm8gc19pbmZvO1xuIik7CiAKICAgICBwdXNoKEAkb3V0cHV0
QXJyYXksICIgICAgc3RhdGljIEpTQzo6U3RydWN0dXJlKiBjcmVhdGVTdHJ1Y3R1cmUoSlNDOjpK
U0dsb2JhbERhdGEmIGdsb2JhbERhdGEsIEpTQzo6SlNHbG9iYWxPYmplY3QqIGdsb2JhbE9iamVj
dCwgSlNDOjpKU1ZhbHVlIHByb3RvdHlwZSlcbiIpOwpAQCAtMzUwNCwxMiArMzUwMSwxMiBAQCBz
dWIgR2VuZXJhdGVDb25zdHJ1Y3RvckRlZmluaXRpb24KIAogICAgICAgICBteSAka2luZCA9ICRo
YXNTdGF0aWNGdW5jdGlvbnMgPyAiUHJvcGVydHkiIDogIlZhbHVlIjsKIAotICAgICAgICBwdXNo
KEAkb3V0cHV0QXJyYXksICJib29sICR7Y29uc3RydWN0b3JDbGFzc05hbWV9OjpnZXRPd25Qcm9w
ZXJ0eVNsb3QoSlNDZWxsKiBjZWxsLCBFeGVjU3RhdGUqIGV4ZWMsIGNvbnN0IElkZW50aWZpZXIm
IHByb3BlcnR5TmFtZSwgUHJvcGVydHlTbG90JiBzbG90KVxuIik7CisgICAgICAgIHB1c2goQCRv
dXRwdXRBcnJheSwgImJvb2wgJHtjb25zdHJ1Y3RvckNsYXNzTmFtZX06OmdldE93blByb3BlcnR5
U2xvdChKU0NlbGwqIGNlbGwsIEV4ZWNTdGF0ZSogZXhlYywgUHJvcGVydHlOYW1lIHByb3BlcnR5
TmFtZSwgUHJvcGVydHlTbG90JiBzbG90KVxuIik7CiAgICAgICAgIHB1c2goQCRvdXRwdXRBcnJh
eSwgIntcbiIpOwogICAgICAgICBwdXNoKEAkb3V0cHV0QXJyYXksICIgICAgcmV0dXJuIGdldFN0
YXRpYyR7a2luZH1TbG90PCR7Y29uc3RydWN0b3JDbGFzc05hbWV9LCBKU0RPTVdyYXBwZXI+KGV4
ZWMsICYke2NvbnN0cnVjdG9yQ2xhc3NOYW1lfVRhYmxlLCBqc0Nhc3Q8JHtjb25zdHJ1Y3RvckNs
YXNzTmFtZX0qPihjZWxsKSwgcHJvcGVydHlOYW1lLCBzbG90KTtcbiIpOwogICAgICAgICBwdXNo
KEAkb3V0cHV0QXJyYXksICJ9XG5cbiIpOwogCi0gICAgICAgIHB1c2goQCRvdXRwdXRBcnJheSwg
ImJvb2wgJHtjb25zdHJ1Y3RvckNsYXNzTmFtZX06OmdldE93blByb3BlcnR5RGVzY3JpcHRvcihK
U09iamVjdCogb2JqZWN0LCBFeGVjU3RhdGUqIGV4ZWMsIGNvbnN0IElkZW50aWZpZXImIHByb3Bl
cnR5TmFtZSwgUHJvcGVydHlEZXNjcmlwdG9yJiBkZXNjcmlwdG9yKVxuIik7CisgICAgICAgIHB1
c2goQCRvdXRwdXRBcnJheSwgImJvb2wgJHtjb25zdHJ1Y3RvckNsYXNzTmFtZX06OmdldE93blBy
b3BlcnR5RGVzY3JpcHRvcihKU09iamVjdCogb2JqZWN0LCBFeGVjU3RhdGUqIGV4ZWMsIFByb3Bl
cnR5TmFtZSBwcm9wZXJ0eU5hbWUsIFByb3BlcnR5RGVzY3JpcHRvciYgZGVzY3JpcHRvcilcbiIp
OwogICAgICAgICBwdXNoKEAkb3V0cHV0QXJyYXksICJ7XG4iKTsKICAgICAgICAgcHVzaChAJG91
dHB1dEFycmF5LCAiICAgIHJldHVybiBnZXRTdGF0aWMke2tpbmR9RGVzY3JpcHRvcjwke2NvbnN0
cnVjdG9yQ2xhc3NOYW1lfSwgSlNET01XcmFwcGVyPihleGVjLCAmJHtjb25zdHJ1Y3RvckNsYXNz
TmFtZX1UYWJsZSwganNDYXN0PCR7Y29uc3RydWN0b3JDbGFzc05hbWV9Kj4ob2JqZWN0KSwgcHJv
cGVydHlOYW1lLCBkZXNjcmlwdG9yKTtcbiIpOwogICAgICAgICBwdXNoKEAkb3V0cHV0QXJyYXks
ICJ9XG5cbiIpOwpJbmRleDogU291cmNlL1dlYkNvcmUvYnJpZGdlL3J1bnRpbWVfYXJyYXkuY3Bw
Cj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT0KLS0tIFNvdXJjZS9XZWJDb3JlL2JyaWRnZS9ydW50aW1lX2FycmF5LmNwcAko
cmV2aXNpb24gMTE2NjY3KQorKysgU291cmNlL1dlYkNvcmUvYnJpZGdlL3J1bnRpbWVfYXJyYXku
Y3BwCSh3b3JraW5nIGNvcHkpCkBAIC02MCw3ICs2MCw3IEBAIHZvaWQgUnVudGltZUFycmF5Ojpk
ZXN0cm95KEpTQ2VsbCogY2VsbCkKICAgICBqc0Nhc3Q8UnVudGltZUFycmF5Kj4oY2VsbCktPlJ1
bnRpbWVBcnJheTo6flJ1bnRpbWVBcnJheSgpOwogfQogCi1KU1ZhbHVlIFJ1bnRpbWVBcnJheTo6
bGVuZ3RoR2V0dGVyKEV4ZWNTdGF0ZSosIEpTVmFsdWUgc2xvdEJhc2UsIGNvbnN0IElkZW50aWZp
ZXImKQorSlNWYWx1ZSBSdW50aW1lQXJyYXk6Omxlbmd0aEdldHRlcihFeGVjU3RhdGUqLCBKU1Zh
bHVlIHNsb3RCYXNlLCBQcm9wZXJ0eU5hbWUpCiB7CiAgICAgUnVudGltZUFycmF5KiB0aGlzT2Jq
ID0gc3RhdGljX2Nhc3Q8UnVudGltZUFycmF5Kj4oYXNPYmplY3Qoc2xvdEJhc2UpKTsKICAgICBy
ZXR1cm4ganNOdW1iZXIodGhpc09iai0+Z2V0TGVuZ3RoKCkpOwpAQCAtODUsNyArODUsNyBAQCB2
b2lkIFJ1bnRpbWVBcnJheTo6Z2V0T3duUHJvcGVydHlOYW1lcyhKCiAgICAgSlNPYmplY3Q6Omdl
dE93blByb3BlcnR5TmFtZXModGhpc09iamVjdCwgZXhlYywgcHJvcGVydHlOYW1lcywgbW9kZSk7
CiB9CiAKLWJvb2wgUnVudGltZUFycmF5OjpnZXRPd25Qcm9wZXJ0eVNsb3QoSlNDZWxsKiBjZWxs
LCBFeGVjU3RhdGUqIGV4ZWMsIGNvbnN0IElkZW50aWZpZXImIHByb3BlcnR5TmFtZSwgUHJvcGVy
dHlTbG90JiBzbG90KQorYm9vbCBSdW50aW1lQXJyYXk6OmdldE93blByb3BlcnR5U2xvdChKU0Nl
bGwqIGNlbGwsIEV4ZWNTdGF0ZSogZXhlYywgUHJvcGVydHlOYW1lIHByb3BlcnR5TmFtZSwgUHJv
cGVydHlTbG90JiBzbG90KQogewogICAgIFJ1bnRpbWVBcnJheSogdGhpc09iamVjdCA9IGpzQ2Fz
dDxSdW50aW1lQXJyYXkqPihjZWxsKTsKICAgICBpZiAocHJvcGVydHlOYW1lID09IGV4ZWMtPnBy
b3BlcnR5TmFtZXMoKS5sZW5ndGgpIHsKQEAgLTkzLDE5ICs5MywxNyBAQCBib29sIFJ1bnRpbWVB
cnJheTo6Z2V0T3duUHJvcGVydHlTbG90KEpTCiAgICAgICAgIHJldHVybiB0cnVlOwogICAgIH0K
ICAgICAKLSAgICBib29sIG9rOwotICAgIHVuc2lnbmVkIGluZGV4ID0gcHJvcGVydHlOYW1lLnRv
QXJyYXlJbmRleChvayk7Ci0gICAgaWYgKG9rKSB7Ci0gICAgICAgIGlmIChpbmRleCA8IHRoaXNP
YmplY3QtPmdldExlbmd0aCgpKSB7Ci0gICAgICAgICAgICBzbG90LnNldEN1c3RvbUluZGV4KHRo
aXNPYmplY3QsIGluZGV4LCB0aGlzT2JqZWN0LT5pbmRleEdldHRlcik7Ci0gICAgICAgICAgICBy
ZXR1cm4gdHJ1ZTsKLSAgICAgICAgfQorICAgIHVuc2lnbmVkIGluZGV4ID0gcHJvcGVydHlOYW1l
LmFzSW5kZXgoKTsKKyAgICBpZiAoaW5kZXggPCB0aGlzT2JqZWN0LT5nZXRMZW5ndGgoKSkgewor
ICAgICAgICBBU1NFUlQoaW5kZXggIT0gUHJvcGVydHlOYW1lOjpOb3RBbkluZGV4KTsKKyAgICAg
ICAgc2xvdC5zZXRDdXN0b21JbmRleCh0aGlzT2JqZWN0LCBpbmRleCwgdGhpc09iamVjdC0+aW5k
ZXhHZXR0ZXIpOworICAgICAgICByZXR1cm4gdHJ1ZTsKICAgICB9CiAgICAgCiAgICAgcmV0dXJu
IEpTT2JqZWN0OjpnZXRPd25Qcm9wZXJ0eVNsb3QodGhpc09iamVjdCwgZXhlYywgcHJvcGVydHlO
YW1lLCBzbG90KTsKIH0KIAotYm9vbCBSdW50aW1lQXJyYXk6OmdldE93blByb3BlcnR5RGVzY3Jp
cHRvcihKU09iamVjdCogb2JqZWN0LCBFeGVjU3RhdGUqIGV4ZWMsIGNvbnN0IElkZW50aWZpZXIm
IHByb3BlcnR5TmFtZSwgUHJvcGVydHlEZXNjcmlwdG9yJiBkZXNjcmlwdG9yKQorYm9vbCBSdW50
aW1lQXJyYXk6OmdldE93blByb3BlcnR5RGVzY3JpcHRvcihKU09iamVjdCogb2JqZWN0LCBFeGVj
U3RhdGUqIGV4ZWMsIFByb3BlcnR5TmFtZSBwcm9wZXJ0eU5hbWUsIFByb3BlcnR5RGVzY3JpcHRv
ciYgZGVzY3JpcHRvcikKIHsKICAgICBSdW50aW1lQXJyYXkqIHRoaXNPYmplY3QgPSBqc0Nhc3Q8
UnVudGltZUFycmF5Kj4ob2JqZWN0KTsKICAgICBpZiAocHJvcGVydHlOYW1lID09IGV4ZWMtPnBy
b3BlcnR5TmFtZXMoKS5sZW5ndGgpIHsKQEAgLTExNSwxNSArMTEzLDEzIEBAIGJvb2wgUnVudGlt
ZUFycmF5OjpnZXRPd25Qcm9wZXJ0eURlc2NyaXAKICAgICAgICAgcmV0dXJuIHRydWU7CiAgICAg
fQogICAgIAotICAgIGJvb2wgb2s7Ci0gICAgdW5zaWduZWQgaW5kZXggPSBwcm9wZXJ0eU5hbWUu
dG9BcnJheUluZGV4KG9rKTsKLSAgICBpZiAob2spIHsKLSAgICAgICAgaWYgKGluZGV4IDwgdGhp
c09iamVjdC0+Z2V0TGVuZ3RoKCkpIHsKLSAgICAgICAgICAgIFByb3BlcnR5U2xvdCBzbG90Owot
ICAgICAgICAgICAgc2xvdC5zZXRDdXN0b21JbmRleCh0aGlzT2JqZWN0LCBpbmRleCwgaW5kZXhH
ZXR0ZXIpOwotICAgICAgICAgICAgZGVzY3JpcHRvci5zZXREZXNjcmlwdG9yKHNsb3QuZ2V0VmFs
dWUoZXhlYywgcHJvcGVydHlOYW1lKSwgRG9udERlbGV0ZSB8IERvbnRFbnVtKTsKLSAgICAgICAg
ICAgIHJldHVybiB0cnVlOwotICAgICAgICB9CisgICAgdW5zaWduZWQgaW5kZXggPSBwcm9wZXJ0
eU5hbWUuYXNJbmRleCgpOworICAgIGlmIChpbmRleCA8IHRoaXNPYmplY3QtPmdldExlbmd0aCgp
KSB7CisgICAgICAgIEFTU0VSVChpbmRleCAhPSBQcm9wZXJ0eU5hbWU6Ok5vdEFuSW5kZXgpOwor
ICAgICAgICBQcm9wZXJ0eVNsb3Qgc2xvdDsKKyAgICAgICAgc2xvdC5zZXRDdXN0b21JbmRleCh0
aGlzT2JqZWN0LCBpbmRleCwgaW5kZXhHZXR0ZXIpOworICAgICAgICBkZXNjcmlwdG9yLnNldERl
c2NyaXB0b3Ioc2xvdC5nZXRWYWx1ZShleGVjLCBwcm9wZXJ0eU5hbWUpLCBEb250RGVsZXRlIHwg
RG9udEVudW0pOworICAgICAgICByZXR1cm4gdHJ1ZTsKICAgICB9CiAgICAgCiAgICAgcmV0dXJu
IEpTT2JqZWN0OjpnZXRPd25Qcm9wZXJ0eURlc2NyaXB0b3IodGhpc09iamVjdCwgZXhlYywgcHJv
cGVydHlOYW1lLCBkZXNjcmlwdG9yKTsKQEAgLTE0MCw3ICsxMzYsNyBAQCBib29sIFJ1bnRpbWVB
cnJheTo6Z2V0T3duUHJvcGVydHlTbG90QnlJCiAgICAgcmV0dXJuIEpTT2JqZWN0OjpnZXRPd25Q
cm9wZXJ0eVNsb3RCeUluZGV4KHRoaXNPYmplY3QsIGV4ZWMsIGluZGV4LCBzbG90KTsKIH0KIAot
dm9pZCBSdW50aW1lQXJyYXk6OnB1dChKU0NlbGwqIGNlbGwsIEV4ZWNTdGF0ZSogZXhlYywgY29u
c3QgSWRlbnRpZmllciYgcHJvcGVydHlOYW1lLCBKU1ZhbHVlIHZhbHVlLCBQdXRQcm9wZXJ0eVNs
b3QmIHNsb3QpCit2b2lkIFJ1bnRpbWVBcnJheTo6cHV0KEpTQ2VsbCogY2VsbCwgRXhlY1N0YXRl
KiBleGVjLCBQcm9wZXJ0eU5hbWUgcHJvcGVydHlOYW1lLCBKU1ZhbHVlIHZhbHVlLCBQdXRQcm9w
ZXJ0eVNsb3QmIHNsb3QpCiB7CiAgICAgUnVudGltZUFycmF5KiB0aGlzT2JqZWN0ID0ganNDYXN0
PFJ1bnRpbWVBcnJheSo+KGNlbGwpOwogICAgIGlmIChwcm9wZXJ0eU5hbWUgPT0gZXhlYy0+cHJv
cGVydHlOYW1lcygpLmxlbmd0aCkgewpAQCAtMTQ4LDkgKzE0NCw4IEBAIHZvaWQgUnVudGltZUFy
cmF5OjpwdXQoSlNDZWxsKiBjZWxsLCBFeGUKICAgICAgICAgcmV0dXJuOwogICAgIH0KICAgICAK
LSAgICBib29sIG9rOwotICAgIHVuc2lnbmVkIGluZGV4ID0gcHJvcGVydHlOYW1lLnRvQXJyYXlJ
bmRleChvayk7Ci0gICAgaWYgKG9rKSB7CisgICAgdW5zaWduZWQgaW5kZXggPSBwcm9wZXJ0eU5h
bWUuYXNJbmRleCgpOworICAgIGlmIChpbmRleCAhPSBQcm9wZXJ0eU5hbWU6Ok5vdEFuSW5kZXgp
IHsKICAgICAgICAgdGhpc09iamVjdC0+Z2V0Q29uY3JldGVBcnJheSgpLT5zZXRWYWx1ZUF0KGV4
ZWMsIGluZGV4LCB2YWx1ZSk7CiAgICAgICAgIHJldHVybjsKICAgICB9CkBAIC0xNjksNyArMTY0
LDcgQEAgdm9pZCBSdW50aW1lQXJyYXk6OnB1dEJ5SW5kZXgoSlNDZWxsKiBjZQogICAgIHRoaXNP
YmplY3QtPmdldENvbmNyZXRlQXJyYXkoKS0+c2V0VmFsdWVBdChleGVjLCBpbmRleCwgdmFsdWUp
OwogfQogCi1ib29sIFJ1bnRpbWVBcnJheTo6ZGVsZXRlUHJvcGVydHkoSlNDZWxsKiwgRXhlY1N0
YXRlKiwgY29uc3QgSWRlbnRpZmllciYpCitib29sIFJ1bnRpbWVBcnJheTo6ZGVsZXRlUHJvcGVy
dHkoSlNDZWxsKiwgRXhlY1N0YXRlKiwgUHJvcGVydHlOYW1lKQogewogICAgIHJldHVybiBmYWxz
ZTsKIH0KSW5kZXg6IFNvdXJjZS9XZWJDb3JlL2JyaWRnZS9ydW50aW1lX2FycmF5LmgKPT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PQotLS0gU291cmNlL1dlYkNvcmUvYnJpZGdlL3J1bnRpbWVfYXJyYXkuaAkocmV2aXNpb24g
MTE2NjY3KQorKysgU291cmNlL1dlYkNvcmUvYnJpZGdlL3J1bnRpbWVfYXJyYXkuaAkod29ya2lu
ZyBjb3B5KQpAQCAtNTEsMTMgKzUxLDEzIEBAIHB1YmxpYzoKICAgICBzdGF0aWMgdm9pZCBkZXN0
cm95KEpTQ2VsbCopOwogCiAgICAgc3RhdGljIHZvaWQgZ2V0T3duUHJvcGVydHlOYW1lcyhKU09i
amVjdCosIEV4ZWNTdGF0ZSosIFByb3BlcnR5TmFtZUFycmF5JiwgRW51bWVyYXRpb25Nb2RlKTsK
LSAgICBzdGF0aWMgYm9vbCBnZXRPd25Qcm9wZXJ0eVNsb3QoSlNDZWxsKiwgRXhlY1N0YXRlKiwg
Y29uc3QgSWRlbnRpZmllciYsIFByb3BlcnR5U2xvdCYpOworICAgIHN0YXRpYyBib29sIGdldE93
blByb3BlcnR5U2xvdChKU0NlbGwqLCBFeGVjU3RhdGUqLCBQcm9wZXJ0eU5hbWUsIFByb3BlcnR5
U2xvdCYpOwogICAgIHN0YXRpYyBib29sIGdldE93blByb3BlcnR5U2xvdEJ5SW5kZXgoSlNDZWxs
KiwgRXhlY1N0YXRlKiwgdW5zaWduZWQsIFByb3BlcnR5U2xvdCYpOwotICAgIHN0YXRpYyBib29s
IGdldE93blByb3BlcnR5RGVzY3JpcHRvcihKU09iamVjdCosIEV4ZWNTdGF0ZSosIGNvbnN0IElk
ZW50aWZpZXImLCBQcm9wZXJ0eURlc2NyaXB0b3ImKTsKLSAgICBzdGF0aWMgdm9pZCBwdXQoSlND
ZWxsKiwgRXhlY1N0YXRlKiwgY29uc3QgSWRlbnRpZmllciYgcHJvcGVydHlOYW1lLCBKU1ZhbHVl
LCBQdXRQcm9wZXJ0eVNsb3QmKTsKKyAgICBzdGF0aWMgYm9vbCBnZXRPd25Qcm9wZXJ0eURlc2Ny
aXB0b3IoSlNPYmplY3QqLCBFeGVjU3RhdGUqLCBQcm9wZXJ0eU5hbWUsIFByb3BlcnR5RGVzY3Jp
cHRvciYpOworICAgIHN0YXRpYyB2b2lkIHB1dChKU0NlbGwqLCBFeGVjU3RhdGUqLCBQcm9wZXJ0
eU5hbWUgcHJvcGVydHlOYW1lLCBKU1ZhbHVlLCBQdXRQcm9wZXJ0eVNsb3QmKTsKICAgICBzdGF0
aWMgdm9pZCBwdXRCeUluZGV4KEpTQ2VsbCosIEV4ZWNTdGF0ZSosIHVuc2lnbmVkIHByb3BlcnR5
TmFtZSwgSlNWYWx1ZSwgYm9vbCBzaG91bGRUaHJvdyk7CiAgICAgCi0gICAgc3RhdGljIGJvb2wg
ZGVsZXRlUHJvcGVydHkoSlNDZWxsKiwgRXhlY1N0YXRlKiwgY29uc3QgSWRlbnRpZmllciAmcHJv
cGVydHlOYW1lKTsKKyAgICBzdGF0aWMgYm9vbCBkZWxldGVQcm9wZXJ0eShKU0NlbGwqLCBFeGVj
U3RhdGUqLCBQcm9wZXJ0eU5hbWUgcHJvcGVydHlOYW1lKTsKICAgICBzdGF0aWMgYm9vbCBkZWxl
dGVQcm9wZXJ0eUJ5SW5kZXgoSlNDZWxsKiwgRXhlY1N0YXRlKiwgdW5zaWduZWQgcHJvcGVydHlO
YW1lKTsKICAgICAKICAgICB1bnNpZ25lZCBnZXRMZW5ndGgoKSBjb25zdCB7IHJldHVybiBtX2Fy
cmF5LT5nZXRMZW5ndGgoKTsgfQpAQCAtODMsNyArODMsNyBAQCBwcm90ZWN0ZWQ6CiAKIHByaXZh
dGU6CiAgICAgUnVudGltZUFycmF5KEV4ZWNTdGF0ZSosIFN0cnVjdHVyZSopOwotICAgIHN0YXRp
YyBKU1ZhbHVlIGxlbmd0aEdldHRlcihFeGVjU3RhdGUqLCBKU1ZhbHVlLCBjb25zdCBJZGVudGlm
aWVyJik7CisgICAgc3RhdGljIEpTVmFsdWUgbGVuZ3RoR2V0dGVyKEV4ZWNTdGF0ZSosIEpTVmFs
dWUsIFByb3BlcnR5TmFtZSk7CiAgICAgc3RhdGljIEpTVmFsdWUgaW5kZXhHZXR0ZXIoRXhlY1N0
YXRlKiwgSlNWYWx1ZSwgdW5zaWduZWQpOwogCiAgICAgQmluZGluZ3NBcnJheSogbV9hcnJheTsK
SW5kZXg6IFNvdXJjZS9XZWJDb3JlL2JyaWRnZS9ydW50aW1lX21ldGhvZC5jcHAKPT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PQotLS0gU291cmNlL1dlYkNvcmUvYnJpZGdlL3J1bnRpbWVfbWV0aG9kLmNwcAkocmV2aXNpb24g
MTE2NjY3KQorKysgU291cmNlL1dlYkNvcmUvYnJpZGdlL3J1bnRpbWVfbWV0aG9kLmNwcAkod29y
a2luZyBjb3B5KQpAQCAtNTUsMTMgKzU1LDEzIEBAIHZvaWQgUnVudGltZU1ldGhvZDo6ZGVzdHJv
eShKU0NlbGwqIGNlbGwKICAgICBqc0Nhc3Q8UnVudGltZU1ldGhvZCo+KGNlbGwpLT5SdW50aW1l
TWV0aG9kOjp+UnVudGltZU1ldGhvZCgpOwogfQogCi12b2lkIFJ1bnRpbWVNZXRob2Q6OmZpbmlz
aENyZWF0aW9uKEpTR2xvYmFsRGF0YSYgZ2xvYmFsRGF0YSwgY29uc3QgSWRlbnRpZmllciYgaWRl
bnQpCit2b2lkIFJ1bnRpbWVNZXRob2Q6OmZpbmlzaENyZWF0aW9uKEpTR2xvYmFsRGF0YSYgZ2xv
YmFsRGF0YSwgY29uc3QgVVN0cmluZyYgaWRlbnQpCiB7CiAgICAgQmFzZTo6ZmluaXNoQ3JlYXRp
b24oZ2xvYmFsRGF0YSwgaWRlbnQpOwogICAgIEFTU0VSVChpbmhlcml0cygmc19pbmZvKSk7CiB9
CiAKLUpTVmFsdWUgUnVudGltZU1ldGhvZDo6bGVuZ3RoR2V0dGVyKEV4ZWNTdGF0ZSosIEpTVmFs
dWUgc2xvdEJhc2UsIGNvbnN0IElkZW50aWZpZXImKQorSlNWYWx1ZSBSdW50aW1lTWV0aG9kOjps
ZW5ndGhHZXR0ZXIoRXhlY1N0YXRlKiwgSlNWYWx1ZSBzbG90QmFzZSwgUHJvcGVydHlOYW1lKQog
ewogICAgIFJ1bnRpbWVNZXRob2QqIHRoaXNPYmogPSBzdGF0aWNfY2FzdDxSdW50aW1lTWV0aG9k
Kj4oYXNPYmplY3Qoc2xvdEJhc2UpKTsKIApAQCAtNzQsNyArNzQsNyBAQCBKU1ZhbHVlIFJ1bnRp
bWVNZXRob2Q6Omxlbmd0aEdldHRlcihFeGVjCiAgICAgcmV0dXJuIGpzTnVtYmVyKHRoaXNPYmot
Pl9tZXRob2RMaXN0LT5hdCgwKS0+bnVtUGFyYW1ldGVycygpKTsKIH0KIAotYm9vbCBSdW50aW1l
TWV0aG9kOjpnZXRPd25Qcm9wZXJ0eVNsb3QoSlNDZWxsKiBjZWxsLCBFeGVjU3RhdGUqIGV4ZWMs
IGNvbnN0IElkZW50aWZpZXImIHByb3BlcnR5TmFtZSwgUHJvcGVydHlTbG90ICZzbG90KQorYm9v
bCBSdW50aW1lTWV0aG9kOjpnZXRPd25Qcm9wZXJ0eVNsb3QoSlNDZWxsKiBjZWxsLCBFeGVjU3Rh
dGUqIGV4ZWMsIFByb3BlcnR5TmFtZSBwcm9wZXJ0eU5hbWUsIFByb3BlcnR5U2xvdCAmc2xvdCkK
IHsKICAgICBSdW50aW1lTWV0aG9kKiB0aGlzT2JqZWN0ID0ganNDYXN0PFJ1bnRpbWVNZXRob2Qq
PihjZWxsKTsKICAgICBpZiAocHJvcGVydHlOYW1lID09IGV4ZWMtPnByb3BlcnR5TmFtZXMoKS5s
ZW5ndGgpIHsKQEAgLTg1LDcgKzg1LDcgQEAgYm9vbCBSdW50aW1lTWV0aG9kOjpnZXRPd25Qcm9w
ZXJ0eVNsb3QoSgogICAgIHJldHVybiBJbnRlcm5hbEZ1bmN0aW9uOjpnZXRPd25Qcm9wZXJ0eVNs
b3QodGhpc09iamVjdCwgZXhlYywgcHJvcGVydHlOYW1lLCBzbG90KTsKIH0KIAotYm9vbCBSdW50
aW1lTWV0aG9kOjpnZXRPd25Qcm9wZXJ0eURlc2NyaXB0b3IoSlNPYmplY3QqIG9iamVjdCwgRXhl
Y1N0YXRlKiBleGVjLCBjb25zdCBJZGVudGlmaWVyJiBwcm9wZXJ0eU5hbWUsIFByb3BlcnR5RGVz
Y3JpcHRvciAmZGVzY3JpcHRvcikKK2Jvb2wgUnVudGltZU1ldGhvZDo6Z2V0T3duUHJvcGVydHlE
ZXNjcmlwdG9yKEpTT2JqZWN0KiBvYmplY3QsIEV4ZWNTdGF0ZSogZXhlYywgUHJvcGVydHlOYW1l
IHByb3BlcnR5TmFtZSwgUHJvcGVydHlEZXNjcmlwdG9yICZkZXNjcmlwdG9yKQogewogICAgIFJ1
bnRpbWVNZXRob2QqIHRoaXNPYmplY3QgPSBqc0Nhc3Q8UnVudGltZU1ldGhvZCo+KG9iamVjdCk7
CiAgICAgaWYgKHByb3BlcnR5TmFtZSA9PSBleGVjLT5wcm9wZXJ0eU5hbWVzKCkubGVuZ3RoKSB7
CkluZGV4OiBTb3VyY2UvV2ViQ29yZS9icmlkZ2UvcnVudGltZV9tZXRob2QuaAo9PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
Ci0tLSBTb3VyY2UvV2ViQ29yZS9icmlkZ2UvcnVudGltZV9tZXRob2QuaAkocmV2aXNpb24gMTE2
NjY3KQorKysgU291cmNlL1dlYkNvcmUvYnJpZGdlL3J1bnRpbWVfbWV0aG9kLmgJKHdvcmtpbmcg
Y29weSkKQEAgLTM5LDcgKzM5LDcgQEAgcHVibGljOgogCiAgICAgc3RhdGljIHZvaWQgZGVzdHJv
eShKU0NlbGwqKTsKIAotICAgIHN0YXRpYyBSdW50aW1lTWV0aG9kKiBjcmVhdGUoRXhlY1N0YXRl
KiBleGVjLCBKU0dsb2JhbE9iamVjdCogZ2xvYmFsT2JqZWN0LCBTdHJ1Y3R1cmUqIHN0cnVjdHVy
ZSwgY29uc3QgSWRlbnRpZmllciYgbmFtZSwgQmluZGluZ3M6Ok1ldGhvZExpc3QmIG1ldGhvZExp
c3QpCisgICAgc3RhdGljIFJ1bnRpbWVNZXRob2QqIGNyZWF0ZShFeGVjU3RhdGUqIGV4ZWMsIEpT
R2xvYmFsT2JqZWN0KiBnbG9iYWxPYmplY3QsIFN0cnVjdHVyZSogc3RydWN0dXJlLCBjb25zdCBV
U3RyaW5nJiBuYW1lLCBCaW5kaW5nczo6TWV0aG9kTGlzdCYgbWV0aG9kTGlzdCkKICAgICB7CiAg
ICAgICAgIFJ1bnRpbWVNZXRob2QqIG1ldGhvZCA9IG5ldyAoTm90TnVsbCwgYWxsb2NhdGVDZWxs
PFJ1bnRpbWVNZXRob2Q+KCpleGVjLT5oZWFwKCkpKSBSdW50aW1lTWV0aG9kKGdsb2JhbE9iamVj
dCwgc3RydWN0dXJlLCBtZXRob2RMaXN0KTsKICAgICAgICAgbWV0aG9kLT5maW5pc2hDcmVhdGlv
bihleGVjLT5nbG9iYWxEYXRhKCksIG5hbWUpOwpAQCAtNjIsMTUgKzYyLDE1IEBAIHB1YmxpYzoK
IAogcHJvdGVjdGVkOgogICAgIFJ1bnRpbWVNZXRob2QoSlNHbG9iYWxPYmplY3QqLCBTdHJ1Y3R1
cmUqLCBCaW5kaW5nczo6TWV0aG9kTGlzdCYpOwotICAgIHZvaWQgZmluaXNoQ3JlYXRpb24oSlNH
bG9iYWxEYXRhJiwgY29uc3QgSWRlbnRpZmllciYpOworICAgIHZvaWQgZmluaXNoQ3JlYXRpb24o
SlNHbG9iYWxEYXRhJiwgY29uc3QgVVN0cmluZyYpOwogICAgIHN0YXRpYyBjb25zdCB1bnNpZ25l
ZCBTdHJ1Y3R1cmVGbGFncyA9IE92ZXJyaWRlc0dldE93blByb3BlcnR5U2xvdCB8IEludGVybmFs
RnVuY3Rpb246OlN0cnVjdHVyZUZsYWdzOwogICAgIHN0YXRpYyBDYWxsVHlwZSBnZXRDYWxsRGF0
YShKU0NlbGwqLCBDYWxsRGF0YSYpOwogCi0gICAgc3RhdGljIGJvb2wgZ2V0T3duUHJvcGVydHlT
bG90KEpTQ2VsbCosIEV4ZWNTdGF0ZSosIGNvbnN0IElkZW50aWZpZXImLCBQcm9wZXJ0eVNsb3Qm
KTsKLSAgICBzdGF0aWMgYm9vbCBnZXRPd25Qcm9wZXJ0eURlc2NyaXB0b3IoSlNPYmplY3QqLCBF
eGVjU3RhdGUqLCBjb25zdCBJZGVudGlmaWVyJiwgUHJvcGVydHlEZXNjcmlwdG9yJik7CisgICAg
c3RhdGljIGJvb2wgZ2V0T3duUHJvcGVydHlTbG90KEpTQ2VsbCosIEV4ZWNTdGF0ZSosIFByb3Bl
cnR5TmFtZSwgUHJvcGVydHlTbG90Jik7CisgICAgc3RhdGljIGJvb2wgZ2V0T3duUHJvcGVydHlE
ZXNjcmlwdG9yKEpTT2JqZWN0KiwgRXhlY1N0YXRlKiwgUHJvcGVydHlOYW1lLCBQcm9wZXJ0eURl
c2NyaXB0b3ImKTsKIAogcHJpdmF0ZToKLSAgICBzdGF0aWMgSlNWYWx1ZSBsZW5ndGhHZXR0ZXIo
RXhlY1N0YXRlKiwgSlNWYWx1ZSwgY29uc3QgSWRlbnRpZmllciYpOworICAgIHN0YXRpYyBKU1Zh
bHVlIGxlbmd0aEdldHRlcihFeGVjU3RhdGUqLCBKU1ZhbHVlLCBQcm9wZXJ0eU5hbWUpOwogCiAg
ICAgT3duUHRyPEJpbmRpbmdzOjpNZXRob2RMaXN0PiBfbWV0aG9kTGlzdDsKIH07CkluZGV4OiBT
b3VyY2UvV2ViQ29yZS9icmlkZ2UvcnVudGltZV9vYmplY3QuY3BwCj09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNv
dXJjZS9XZWJDb3JlL2JyaWRnZS9ydW50aW1lX29iamVjdC5jcHAJKHJldmlzaW9uIDExNjY2NykK
KysrIFNvdXJjZS9XZWJDb3JlL2JyaWRnZS9ydW50aW1lX29iamVjdC5jcHAJKHdvcmtpbmcgY29w
eSkKQEAgLTY0LDcgKzY0LDcgQEAgdm9pZCBSdW50aW1lT2JqZWN0OjppbnZhbGlkYXRlKCkKICAg
ICBtX2luc3RhbmNlID0gMDsKIH0KIAotSlNWYWx1ZSBSdW50aW1lT2JqZWN0OjpmYWxsYmFja09i
amVjdEdldHRlcihFeGVjU3RhdGUqIGV4ZWMsIEpTVmFsdWUgc2xvdEJhc2UsIGNvbnN0IElkZW50
aWZpZXImIHByb3BlcnR5TmFtZSkKK0pTVmFsdWUgUnVudGltZU9iamVjdDo6ZmFsbGJhY2tPYmpl
Y3RHZXR0ZXIoRXhlY1N0YXRlKiBleGVjLCBKU1ZhbHVlIHNsb3RCYXNlLCBQcm9wZXJ0eU5hbWUg
cHJvcGVydHlOYW1lKQogewogICAgIFJ1bnRpbWVPYmplY3QqIHRoaXNPYmogPSBzdGF0aWNfY2Fz
dDxSdW50aW1lT2JqZWN0Kj4oYXNPYmplY3Qoc2xvdEJhc2UpKTsKICAgICBSZWZQdHI8SW5zdGFu
Y2U+IGluc3RhbmNlID0gdGhpc09iai0+bV9pbnN0YW5jZTsKQEAgLTgyLDcgKzgyLDcgQEAgSlNW
YWx1ZSBSdW50aW1lT2JqZWN0OjpmYWxsYmFja09iamVjdEdldAogICAgIHJldHVybiByZXN1bHQ7
CiB9CiAKLUpTVmFsdWUgUnVudGltZU9iamVjdDo6ZmllbGRHZXR0ZXIoRXhlY1N0YXRlKiBleGVj
LCBKU1ZhbHVlIHNsb3RCYXNlLCBjb25zdCBJZGVudGlmaWVyJiBwcm9wZXJ0eU5hbWUpCitKU1Zh
bHVlIFJ1bnRpbWVPYmplY3Q6OmZpZWxkR2V0dGVyKEV4ZWNTdGF0ZSogZXhlYywgSlNWYWx1ZSBz
bG90QmFzZSwgUHJvcGVydHlOYW1lIHByb3BlcnR5TmFtZSkKIHsgICAgCiAgICAgUnVudGltZU9i
amVjdCogdGhpc09iaiA9IHN0YXRpY19jYXN0PFJ1bnRpbWVPYmplY3QqPihhc09iamVjdChzbG90
QmFzZSkpOwogICAgIFJlZlB0cjxJbnN0YW5jZT4gaW5zdGFuY2UgPSB0aGlzT2JqLT5tX2luc3Rh
bmNlOwpAQCAtMTAxLDcgKzEwMSw3IEBAIEpTVmFsdWUgUnVudGltZU9iamVjdDo6ZmllbGRHZXR0
ZXIoRXhlY1MKICAgICByZXR1cm4gcmVzdWx0OwogfQogCi1KU1ZhbHVlIFJ1bnRpbWVPYmplY3Q6
Om1ldGhvZEdldHRlcihFeGVjU3RhdGUqIGV4ZWMsIEpTVmFsdWUgc2xvdEJhc2UsIGNvbnN0IElk
ZW50aWZpZXImIHByb3BlcnR5TmFtZSkKK0pTVmFsdWUgUnVudGltZU9iamVjdDo6bWV0aG9kR2V0
dGVyKEV4ZWNTdGF0ZSogZXhlYywgSlNWYWx1ZSBzbG90QmFzZSwgUHJvcGVydHlOYW1lIHByb3Bl
cnR5TmFtZSkKIHsKICAgICBSdW50aW1lT2JqZWN0KiB0aGlzT2JqID0gc3RhdGljX2Nhc3Q8UnVu
dGltZU9iamVjdCo+KGFzT2JqZWN0KHNsb3RCYXNlKSk7CiAgICAgUmVmUHRyPEluc3RhbmNlPiBp
bnN0YW5jZSA9IHRoaXNPYmotPm1faW5zdGFuY2U7CkBAIC0xMTgsNyArMTE4LDcgQEAgSlNWYWx1
ZSBSdW50aW1lT2JqZWN0OjptZXRob2RHZXR0ZXIoRXhlYwogICAgIHJldHVybiBtZXRob2Q7CiB9
CiAKLWJvb2wgUnVudGltZU9iamVjdDo6Z2V0T3duUHJvcGVydHlTbG90KEpTQ2VsbCogY2VsbCwg
RXhlY1N0YXRlICpleGVjLCBjb25zdCBJZGVudGlmaWVyJiBwcm9wZXJ0eU5hbWUsIFByb3BlcnR5
U2xvdCYgc2xvdCkKK2Jvb2wgUnVudGltZU9iamVjdDo6Z2V0T3duUHJvcGVydHlTbG90KEpTQ2Vs
bCogY2VsbCwgRXhlY1N0YXRlICpleGVjLCBQcm9wZXJ0eU5hbWUgcHJvcGVydHlOYW1lLCBQcm9w
ZXJ0eVNsb3QmIHNsb3QpCiB7CiAgICAgUnVudGltZU9iamVjdCogdGhpc09iamVjdCA9IGpzQ2Fz
dDxSdW50aW1lT2JqZWN0Kj4oY2VsbCk7CiAgICAgaWYgKCF0aGlzT2JqZWN0LT5tX2luc3RhbmNl
KSB7CkBAIC0xNjQsNyArMTY0LDcgQEAgYm9vbCBSdW50aW1lT2JqZWN0OjpnZXRPd25Qcm9wZXJ0
eVNsb3QoSgogICAgIHJldHVybiBpbnN0YW5jZS0+Z2V0T3duUHJvcGVydHlTbG90KHRoaXNPYmpl
Y3QsIGV4ZWMsIHByb3BlcnR5TmFtZSwgc2xvdCk7CiB9CiAKLWJvb2wgUnVudGltZU9iamVjdDo6
Z2V0T3duUHJvcGVydHlEZXNjcmlwdG9yKEpTT2JqZWN0KiBvYmplY3QsIEV4ZWNTdGF0ZSAqZXhl
YywgY29uc3QgSWRlbnRpZmllciYgcHJvcGVydHlOYW1lLCBQcm9wZXJ0eURlc2NyaXB0b3ImIGRl
c2NyaXB0b3IpCitib29sIFJ1bnRpbWVPYmplY3Q6OmdldE93blByb3BlcnR5RGVzY3JpcHRvcihK
U09iamVjdCogb2JqZWN0LCBFeGVjU3RhdGUgKmV4ZWMsIFByb3BlcnR5TmFtZSBwcm9wZXJ0eU5h
bWUsIFByb3BlcnR5RGVzY3JpcHRvciYgZGVzY3JpcHRvcikKIHsKICAgICBSdW50aW1lT2JqZWN0
KiB0aGlzT2JqZWN0ID0ganNDYXN0PFJ1bnRpbWVPYmplY3QqPihvYmplY3QpOwogICAgIGlmICgh
dGhpc09iamVjdC0+bV9pbnN0YW5jZSkgewpAQCAtMjE0LDcgKzIxNCw3IEBAIGJvb2wgUnVudGlt
ZU9iamVjdDo6Z2V0T3duUHJvcGVydHlEZXNjcmkKICAgICByZXR1cm4gaW5zdGFuY2UtPmdldE93
blByb3BlcnR5RGVzY3JpcHRvcih0aGlzT2JqZWN0LCBleGVjLCBwcm9wZXJ0eU5hbWUsIGRlc2Ny
aXB0b3IpOwogfQogCi12b2lkIFJ1bnRpbWVPYmplY3Q6OnB1dChKU0NlbGwqIGNlbGwsIEV4ZWNT
dGF0ZSogZXhlYywgY29uc3QgSWRlbnRpZmllciYgcHJvcGVydHlOYW1lLCBKU1ZhbHVlIHZhbHVl
LCBQdXRQcm9wZXJ0eVNsb3QmIHNsb3QpCit2b2lkIFJ1bnRpbWVPYmplY3Q6OnB1dChKU0NlbGwq
IGNlbGwsIEV4ZWNTdGF0ZSogZXhlYywgUHJvcGVydHlOYW1lIHByb3BlcnR5TmFtZSwgSlNWYWx1
ZSB2YWx1ZSwgUHV0UHJvcGVydHlTbG90JiBzbG90KQogewogICAgIFJ1bnRpbWVPYmplY3QqIHRo
aXNPYmplY3QgPSBqc0Nhc3Q8UnVudGltZU9iamVjdCo+KGNlbGwpOwogICAgIGlmICghdGhpc09i
amVjdC0+bV9pbnN0YW5jZSkgewpAQCAtMjM1LDcgKzIzNSw3IEBAIHZvaWQgUnVudGltZU9iamVj
dDo6cHV0KEpTQ2VsbCogY2VsbCwgRXgKICAgICBpbnN0YW5jZS0+ZW5kKCk7CiB9CiAKLWJvb2wg
UnVudGltZU9iamVjdDo6ZGVsZXRlUHJvcGVydHkoSlNDZWxsKiwgRXhlY1N0YXRlKiwgY29uc3Qg
SWRlbnRpZmllciYpCitib29sIFJ1bnRpbWVPYmplY3Q6OmRlbGV0ZVByb3BlcnR5KEpTQ2VsbCos
IEV4ZWNTdGF0ZSosIFByb3BlcnR5TmFtZSkKIHsKICAgICAvLyBDYW4gbmV2ZXIgcmVtb3ZlIGEg
cHJvcGVydHkgb2YgYSBSdW50aW1lT2JqZWN0LgogICAgIHJldHVybiBmYWxzZTsKSW5kZXg6IFNv
dXJjZS9XZWJDb3JlL2JyaWRnZS9ydW50aW1lX29iamVjdC5oCj09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJj
ZS9XZWJDb3JlL2JyaWRnZS9ydW50aW1lX29iamVjdC5oCShyZXZpc2lvbiAxMTY2NjcpCisrKyBT
b3VyY2UvV2ViQ29yZS9icmlkZ2UvcnVudGltZV9vYmplY3QuaAkod29ya2luZyBjb3B5KQpAQCAt
NDUsMTAgKzQ1LDEwIEBAIHB1YmxpYzoKIAogICAgIHN0YXRpYyB2b2lkIGRlc3Ryb3koSlNDZWxs
Kik7CiAKLSAgICBzdGF0aWMgYm9vbCBnZXRPd25Qcm9wZXJ0eVNsb3QoSlNDZWxsKiwgRXhlY1N0
YXRlKiwgY29uc3QgSWRlbnRpZmllciYgcHJvcGVydHlOYW1lLCBQcm9wZXJ0eVNsb3QmKTsKLSAg
ICBzdGF0aWMgYm9vbCBnZXRPd25Qcm9wZXJ0eURlc2NyaXB0b3IoSlNPYmplY3QqLCBFeGVjU3Rh
dGUqLCBjb25zdCBJZGVudGlmaWVyJiBwcm9wZXJ0eU5hbWUsIFByb3BlcnR5RGVzY3JpcHRvciYp
OwotICAgIHN0YXRpYyB2b2lkIHB1dChKU0NlbGwqLCBFeGVjU3RhdGUqLCBjb25zdCBJZGVudGlm
aWVyJiBwcm9wZXJ0eU5hbWUsIEpTVmFsdWUsIFB1dFByb3BlcnR5U2xvdCYpOwotICAgIHN0YXRp
YyBib29sIGRlbGV0ZVByb3BlcnR5KEpTQ2VsbCosIEV4ZWNTdGF0ZSosIGNvbnN0IElkZW50aWZp
ZXImIHByb3BlcnR5TmFtZSk7CisgICAgc3RhdGljIGJvb2wgZ2V0T3duUHJvcGVydHlTbG90KEpT
Q2VsbCosIEV4ZWNTdGF0ZSosIFByb3BlcnR5TmFtZSBwcm9wZXJ0eU5hbWUsIFByb3BlcnR5U2xv
dCYpOworICAgIHN0YXRpYyBib29sIGdldE93blByb3BlcnR5RGVzY3JpcHRvcihKU09iamVjdCos
IEV4ZWNTdGF0ZSosIFByb3BlcnR5TmFtZSBwcm9wZXJ0eU5hbWUsIFByb3BlcnR5RGVzY3JpcHRv
ciYpOworICAgIHN0YXRpYyB2b2lkIHB1dChKU0NlbGwqLCBFeGVjU3RhdGUqLCBQcm9wZXJ0eU5h
bWUgcHJvcGVydHlOYW1lLCBKU1ZhbHVlLCBQdXRQcm9wZXJ0eVNsb3QmKTsKKyAgICBzdGF0aWMg
Ym9vbCBkZWxldGVQcm9wZXJ0eShKU0NlbGwqLCBFeGVjU3RhdGUqLCBQcm9wZXJ0eU5hbWUgcHJv
cGVydHlOYW1lKTsKICAgICBzdGF0aWMgSlNWYWx1ZSBkZWZhdWx0VmFsdWUoY29uc3QgSlNPYmpl
Y3QqLCBFeGVjU3RhdGUqLCBQcmVmZXJyZWRQcmltaXRpdmVUeXBlKTsKICAgICBzdGF0aWMgQ2Fs
bFR5cGUgZ2V0Q2FsbERhdGEoSlNDZWxsKiwgQ2FsbERhdGEmKTsKICAgICBzdGF0aWMgQ29uc3Ry
dWN0VHlwZSBnZXRDb25zdHJ1Y3REYXRhKEpTQ2VsbCosIENvbnN0cnVjdERhdGEmKTsKQEAgLTc5
LDkgKzc5LDkgQEAgcHJvdGVjdGVkOgogICAgIHN0YXRpYyBjb25zdCB1bnNpZ25lZCBTdHJ1Y3R1
cmVGbGFncyA9IE92ZXJyaWRlc0dldE93blByb3BlcnR5U2xvdCB8IE92ZXJyaWRlc0dldFByb3Bl
cnR5TmFtZXMgfCBCYXNlOjpTdHJ1Y3R1cmVGbGFnczsKIAogcHJpdmF0ZToKLSAgICBzdGF0aWMg
SlNWYWx1ZSBmYWxsYmFja09iamVjdEdldHRlcihFeGVjU3RhdGUqLCBKU1ZhbHVlLCBjb25zdCBJ
ZGVudGlmaWVyJik7Ci0gICAgc3RhdGljIEpTVmFsdWUgZmllbGRHZXR0ZXIoRXhlY1N0YXRlKiwg
SlNWYWx1ZSwgY29uc3QgSWRlbnRpZmllciYpOwotICAgIHN0YXRpYyBKU1ZhbHVlIG1ldGhvZEdl
dHRlcihFeGVjU3RhdGUqLCBKU1ZhbHVlLCBjb25zdCBJZGVudGlmaWVyJik7CisgICAgc3RhdGlj
IEpTVmFsdWUgZmFsbGJhY2tPYmplY3RHZXR0ZXIoRXhlY1N0YXRlKiwgSlNWYWx1ZSwgUHJvcGVy
dHlOYW1lKTsKKyAgICBzdGF0aWMgSlNWYWx1ZSBmaWVsZEdldHRlcihFeGVjU3RhdGUqLCBKU1Zh
bHVlLCBQcm9wZXJ0eU5hbWUpOworICAgIHN0YXRpYyBKU1ZhbHVlIG1ldGhvZEdldHRlcihFeGVj
U3RhdGUqLCBKU1ZhbHVlLCBQcm9wZXJ0eU5hbWUpOwogCiAgICAgUmVmUHRyPEluc3RhbmNlPiBt
X2luc3RhbmNlOwogfTsKSW5kZXg6IFNvdXJjZS9XZWJDb3JlL2JyaWRnZS9jL2NfY2xhc3MuY3Bw
Cj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT0KLS0tIFNvdXJjZS9XZWJDb3JlL2JyaWRnZS9jL2NfY2xhc3MuY3BwCShyZXZp
c2lvbiAxMTY2NjcpCisrKyBTb3VyY2UvV2ViQ29yZS9icmlkZ2UvYy9jX2NsYXNzLmNwcAkod29y
a2luZyBjb3B5KQpAQCAtNzMsMjQgKzczLDI2IEBAIENDbGFzcyogQ0NsYXNzOjpjbGFzc0Zvcklz
QShOUENsYXNzKiBpc2EKICAgICByZXR1cm4gYUNsYXNzOwogfQogCi1NZXRob2RMaXN0IENDbGFz
czo6bWV0aG9kc05hbWVkKGNvbnN0IElkZW50aWZpZXImIGlkZW50aWZpZXIsIEluc3RhbmNlKiBp
bnN0YW5jZSkgY29uc3QKK01ldGhvZExpc3QgQ0NsYXNzOjptZXRob2RzTmFtZWQoUHJvcGVydHlO
YW1lIGlkZW50aWZpZXIsIEluc3RhbmNlKiBpbnN0YW5jZSkgY29uc3QKIHsKKyAgICBVU3RyaW5n
IG5hbWUoaWRlbnRpZmllci5pbXBsKCkpOworICAgIAogICAgIE1ldGhvZExpc3QgbWV0aG9kTGlz
dDsKIAotICAgIE1ldGhvZCogbWV0aG9kID0gX21ldGhvZHMuZ2V0KGlkZW50aWZpZXIudXN0cmlu
ZygpLmltcGwoKSk7CisgICAgTWV0aG9kKiBtZXRob2QgPSBfbWV0aG9kcy5nZXQobmFtZS5pbXBs
KCkpOwogICAgIGlmIChtZXRob2QpIHsKICAgICAgICAgbWV0aG9kTGlzdC5hcHBlbmQobWV0aG9k
KTsKICAgICAgICAgcmV0dXJuIG1ldGhvZExpc3Q7CiAgICAgfQogCi0gICAgTlBJZGVudGlmaWVy
IGlkZW50ID0gX05QTl9HZXRTdHJpbmdJZGVudGlmaWVyKGlkZW50aWZpZXIuYXNjaWkoKS5kYXRh
KCkpOworICAgIE5QSWRlbnRpZmllciBpZGVudCA9IF9OUE5fR2V0U3RyaW5nSWRlbnRpZmllcihu
YW1lLmFzY2lpKCkuZGF0YSgpKTsKICAgICBjb25zdCBDSW5zdGFuY2UqIGluc3QgPSBzdGF0aWNf
Y2FzdDxjb25zdCBDSW5zdGFuY2UqPihpbnN0YW5jZSk7CiAgICAgTlBPYmplY3QqIG9iaiA9IGlu
c3QtPmdldE9iamVjdCgpOwogICAgIGlmIChfaXNhLT5oYXNNZXRob2QgJiYgX2lzYS0+aGFzTWV0
aG9kKG9iaiwgaWRlbnQpKXsKICAgICAgICAgTWV0aG9kKiBhTWV0aG9kID0gbmV3IENNZXRob2Qo
aWRlbnQpOyAvLyBkZWxldGVkIGluIHRoZSBDQ2xhc3MgZGVzdHJ1Y3RvcgogICAgICAgICB7CiAg
ICAgICAgICAgICBKU0xvY2sgbG9jayhTaWxlbmNlQXNzZXJ0aW9uc09ubHkpOwotICAgICAgICAg
ICAgX21ldGhvZHMuc2V0KGlkZW50aWZpZXIudXN0cmluZygpLmltcGwoKSwgYU1ldGhvZCk7Cisg
ICAgICAgICAgICBfbWV0aG9kcy5zZXQobmFtZS5pbXBsKCksIGFNZXRob2QpOwogICAgICAgICB9
CiAgICAgICAgIG1ldGhvZExpc3QuYXBwZW5kKGFNZXRob2QpOwogICAgIH0KQEAgLTk4LDIwICsx
MDAsMjIgQEAgTWV0aG9kTGlzdCBDQ2xhc3M6Om1ldGhvZHNOYW1lZChjb25zdCBJZAogICAgIHJl
dHVybiBtZXRob2RMaXN0OwogfQogCi1GaWVsZCogQ0NsYXNzOjpmaWVsZE5hbWVkKGNvbnN0IElk
ZW50aWZpZXImIGlkZW50aWZpZXIsIEluc3RhbmNlKiBpbnN0YW5jZSkgY29uc3QKK0ZpZWxkKiBD
Q2xhc3M6OmZpZWxkTmFtZWQoUHJvcGVydHlOYW1lIGlkZW50aWZpZXIsIEluc3RhbmNlKiBpbnN0
YW5jZSkgY29uc3QKIHsKLSAgICBGaWVsZCogYUZpZWxkID0gX2ZpZWxkcy5nZXQoaWRlbnRpZmll
ci51c3RyaW5nKCkuaW1wbCgpKTsKKyAgICBVU3RyaW5nIG5hbWUoaWRlbnRpZmllci5pbXBsKCkp
OworICAgIAorICAgIEZpZWxkKiBhRmllbGQgPSBfZmllbGRzLmdldChuYW1lLmltcGwoKSk7CiAg
ICAgaWYgKGFGaWVsZCkKICAgICAgICAgcmV0dXJuIGFGaWVsZDsKICAgICAKLSAgICBOUElkZW50
aWZpZXIgaWRlbnQgPSBfTlBOX0dldFN0cmluZ0lkZW50aWZpZXIoaWRlbnRpZmllci5hc2NpaSgp
LmRhdGEoKSk7CisgICAgTlBJZGVudGlmaWVyIGlkZW50ID0gX05QTl9HZXRTdHJpbmdJZGVudGlm
aWVyKG5hbWUuYXNjaWkoKS5kYXRhKCkpOwogICAgIGNvbnN0IENJbnN0YW5jZSogaW5zdCA9IHN0
YXRpY19jYXN0PGNvbnN0IENJbnN0YW5jZSo+KGluc3RhbmNlKTsKICAgICBOUE9iamVjdCogb2Jq
ID0gaW5zdC0+Z2V0T2JqZWN0KCk7CiAgICAgaWYgKF9pc2EtPmhhc1Byb3BlcnR5ICYmIF9pc2Et
Pmhhc1Byb3BlcnR5KG9iaiwgaWRlbnQpKXsKICAgICAgICAgYUZpZWxkID0gbmV3IENGaWVsZChp
ZGVudCk7IC8vIGRlbGV0ZWQgaW4gdGhlIENDbGFzcyBkZXN0cnVjdG9yCiAgICAgICAgIHsKICAg
ICAgICAgICAgIEpTTG9jayBsb2NrKFNpbGVuY2VBc3NlcnRpb25zT25seSk7Ci0gICAgICAgICAg
ICBfZmllbGRzLnNldChpZGVudGlmaWVyLnVzdHJpbmcoKS5pbXBsKCksIGFGaWVsZCk7CisgICAg
ICAgICAgICBfZmllbGRzLnNldChuYW1lLmltcGwoKSwgYUZpZWxkKTsKICAgICAgICAgfQogICAg
IH0KICAgICByZXR1cm4gYUZpZWxkOwpJbmRleDogU291cmNlL1dlYkNvcmUvYnJpZGdlL2MvY19j
bGFzcy5oCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9XZWJDb3JlL2JyaWRnZS9jL2NfY2xhc3MuaAko
cmV2aXNpb24gMTE2NjY3KQorKysgU291cmNlL1dlYkNvcmUvYnJpZGdlL2MvY19jbGFzcy5oCSh3
b3JraW5nIGNvcHkpCkBAIC00Myw4ICs0Myw4IEBAIHB1YmxpYzoKICAgICBzdGF0aWMgQ0NsYXNz
KiBjbGFzc0ZvcklzQShOUENsYXNzKik7CiAgICAgdmlydHVhbCB+Q0NsYXNzKCk7CiAKLSAgICB2
aXJ0dWFsIE1ldGhvZExpc3QgbWV0aG9kc05hbWVkKGNvbnN0IElkZW50aWZpZXImLCBJbnN0YW5j
ZSopIGNvbnN0OwotICAgIHZpcnR1YWwgRmllbGQqIGZpZWxkTmFtZWQoY29uc3QgSWRlbnRpZmll
ciYsIEluc3RhbmNlKikgY29uc3Q7CisgICAgdmlydHVhbCBNZXRob2RMaXN0IG1ldGhvZHNOYW1l
ZChQcm9wZXJ0eU5hbWUsIEluc3RhbmNlKikgY29uc3Q7CisgICAgdmlydHVhbCBGaWVsZCogZmll
bGROYW1lZChQcm9wZXJ0eU5hbWUsIEluc3RhbmNlKikgY29uc3Q7CiAKIHByaXZhdGU6CiAgICAg
TlBDbGFzcyogX2lzYTsKSW5kZXg6IFNvdXJjZS9XZWJDb3JlL2JyaWRnZS9jL2NfaW5zdGFuY2Uu
Y3BwCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9XZWJDb3JlL2JyaWRnZS9jL2NfaW5zdGFuY2UuY3Bw
CShyZXZpc2lvbiAxMTY2NjcpCisrKyBTb3VyY2UvV2ViQ29yZS9icmlkZ2UvYy9jX2luc3RhbmNl
LmNwcAkod29ya2luZyBjb3B5KQpAQCAtMTEzLDcgKzExMyw3IEBAIGNsYXNzIENSdW50aW1lTWV0
aG9kIDogcHVibGljIFJ1bnRpbWVNZXQKIHB1YmxpYzoKICAgICB0eXBlZGVmIFJ1bnRpbWVNZXRo
b2QgQmFzZTsKIAotICAgIHN0YXRpYyBDUnVudGltZU1ldGhvZCogY3JlYXRlKEV4ZWNTdGF0ZSog
ZXhlYywgSlNHbG9iYWxPYmplY3QqIGdsb2JhbE9iamVjdCwgY29uc3QgSWRlbnRpZmllciYgbmFt
ZSwgQmluZGluZ3M6Ok1ldGhvZExpc3QmIGxpc3QpCisgICAgc3RhdGljIENSdW50aW1lTWV0aG9k
KiBjcmVhdGUoRXhlY1N0YXRlKiBleGVjLCBKU0dsb2JhbE9iamVjdCogZ2xvYmFsT2JqZWN0LCBj
b25zdCBVU3RyaW5nJiBuYW1lLCBCaW5kaW5nczo6TWV0aG9kTGlzdCYgbGlzdCkKICAgICB7CiAg
ICAgICAgIC8vIEZJWE1FOiBkZXByZWNhdGVkR2V0RE9NU3RydWN0dXJlIHVzZXMgdGhlIHByb3Rv
dHlwZSBvZmYgb2YgdGhlIHdyb25nIGdsb2JhbCBvYmplY3QKICAgICAgICAgLy8gV2UgbmVlZCB0
byBwYXNzIGluIHRoZSByaWdodCBnbG9iYWwgb2JqZWN0IGZvciAiaSIuCkBAIC0xMzYsNyArMTM2
LDcgQEAgcHJpdmF0ZToKICAgICB7CiAgICAgfQogCi0gICAgdm9pZCBmaW5pc2hDcmVhdGlvbihK
U0dsb2JhbERhdGEmIGdsb2JhbERhdGEsIGNvbnN0IElkZW50aWZpZXImIG5hbWUpCisgICAgdm9p
ZCBmaW5pc2hDcmVhdGlvbihKU0dsb2JhbERhdGEmIGdsb2JhbERhdGEsIGNvbnN0IFVTdHJpbmcm
IG5hbWUpCiAgICAgewogICAgICAgICBCYXNlOjpmaW5pc2hDcmVhdGlvbihnbG9iYWxEYXRhLCBu
YW1lKTsKICAgICAgICAgQVNTRVJUKGluaGVyaXRzKCZzX2luZm8pKTsKQEAgLTE0NiwxMCArMTQ2
LDEwIEBAIHByaXZhdGU6CiAKIGNvbnN0IENsYXNzSW5mbyBDUnVudGltZU1ldGhvZDo6c19pbmZv
ID0geyAiQ1J1bnRpbWVNZXRob2QiLCAmUnVudGltZU1ldGhvZDo6c19pbmZvLCAwLCAwLCBDUkVB
VEVfTUVUSE9EX1RBQkxFKENSdW50aW1lTWV0aG9kKSB9OwogCi1KU1ZhbHVlIENJbnN0YW5jZTo6
Z2V0TWV0aG9kKEV4ZWNTdGF0ZSogZXhlYywgY29uc3QgSWRlbnRpZmllciYgcHJvcGVydHlOYW1l
KQorSlNWYWx1ZSBDSW5zdGFuY2U6OmdldE1ldGhvZChFeGVjU3RhdGUqIGV4ZWMsIFByb3BlcnR5
TmFtZSBwcm9wZXJ0eU5hbWUpCiB7CiAgICAgTWV0aG9kTGlzdCBtZXRob2RMaXN0ID0gZ2V0Q2xh
c3MoKS0+bWV0aG9kc05hbWVkKHByb3BlcnR5TmFtZSwgdGhpcyk7Ci0gICAgcmV0dXJuIENSdW50
aW1lTWV0aG9kOjpjcmVhdGUoZXhlYywgZXhlYy0+bGV4aWNhbEdsb2JhbE9iamVjdCgpLCBwcm9w
ZXJ0eU5hbWUsIG1ldGhvZExpc3QpOworICAgIHJldHVybiBDUnVudGltZU1ldGhvZDo6Y3JlYXRl
KGV4ZWMsIGV4ZWMtPmxleGljYWxHbG9iYWxPYmplY3QoKSwgcHJvcGVydHlOYW1lLmltcGwoKSwg
bWV0aG9kTGlzdCk7CiB9CiAKIEpTVmFsdWUgQ0luc3RhbmNlOjppbnZva2VNZXRob2QoRXhlY1N0
YXRlKiBleGVjLCBSdW50aW1lTWV0aG9kKiBydW50aW1lTWV0aG9kKQpJbmRleDogU291cmNlL1dl
YkNvcmUvYnJpZGdlL2MvY19pbnN0YW5jZS5oCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9XZWJDb3Jl
L2JyaWRnZS9jL2NfaW5zdGFuY2UuaAkocmV2aXNpb24gMTE2NjY3KQorKysgU291cmNlL1dlYkNv
cmUvYnJpZGdlL2MvY19pbnN0YW5jZS5oCSh3b3JraW5nIGNvcHkpCkBAIC01OSw3ICs1OSw3IEBA
IHB1YmxpYzoKICAgICB2aXJ0dWFsIEpTVmFsdWUgdmFsdWVPZihFeGVjU3RhdGUqKSBjb25zdDsK
ICAgICB2aXJ0dWFsIEpTVmFsdWUgZGVmYXVsdFZhbHVlKEV4ZWNTdGF0ZSosIFByZWZlcnJlZFBy
aW1pdGl2ZVR5cGUpIGNvbnN0OwogCi0gICAgdmlydHVhbCBKU1ZhbHVlIGdldE1ldGhvZChFeGVj
U3RhdGUqIGV4ZWMsIGNvbnN0IElkZW50aWZpZXImIHByb3BlcnR5TmFtZSk7CisgICAgdmlydHVh
bCBKU1ZhbHVlIGdldE1ldGhvZChFeGVjU3RhdGUqIGV4ZWMsIFByb3BlcnR5TmFtZSBwcm9wZXJ0
eU5hbWUpOwogICAgIHZpcnR1YWwgSlNWYWx1ZSBpbnZva2VNZXRob2QoRXhlY1N0YXRlKiwgUnVu
dGltZU1ldGhvZCogbWV0aG9kKTsKICAgICB2aXJ0dWFsIGJvb2wgc3VwcG9ydHNJbnZva2VEZWZh
dWx0TWV0aG9kKCkgY29uc3Q7CiAgICAgdmlydHVhbCBKU1ZhbHVlIGludm9rZURlZmF1bHRNZXRo
b2QoRXhlY1N0YXRlKik7CkluZGV4OiBTb3VyY2UvV2ViQ29yZS9icmlkZ2Uvam5pL2pzYy9KYXZh
Q2xhc3NKU0MuY3BwCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9XZWJDb3JlL2JyaWRnZS9qbmkvanNj
L0phdmFDbGFzc0pTQy5jcHAJKHJldmlzaW9uIDExNjY2NykKKysrIFNvdXJjZS9XZWJDb3JlL2Jy
aWRnZS9qbmkvanNjL0phdmFDbGFzc0pTQy5jcHAJKHdvcmtpbmcgY29weSkKQEAgLTExNCw3ICsx
MTQsNyBAQCBKYXZhQ2xhc3M6On5KYXZhQ2xhc3MoKQogICAgIG1fbWV0aG9kcy5jbGVhcigpOwog
fQogCi1NZXRob2RMaXN0IEphdmFDbGFzczo6bWV0aG9kc05hbWVkKGNvbnN0IElkZW50aWZpZXIm
IGlkZW50aWZpZXIsIEluc3RhbmNlKikgY29uc3QKK01ldGhvZExpc3QgSmF2YUNsYXNzOjptZXRo
b2RzTmFtZWQoUHJvcGVydHlOYW1lIGlkZW50aWZpZXIsIEluc3RhbmNlKikgY29uc3QKIHsKICAg
ICBNZXRob2RMaXN0KiBtZXRob2RMaXN0ID0gbV9tZXRob2RzLmdldChpZGVudGlmaWVyLnVzdHJp
bmcoKS5pbXBsKCkpOwogCkBAIC0xMjMsNyArMTIzLDcgQEAgTWV0aG9kTGlzdCBKYXZhQ2xhc3M6
Om1ldGhvZHNOYW1lZChjb25zdAogICAgIHJldHVybiBNZXRob2RMaXN0KCk7CiB9CiAKLUZpZWxk
KiBKYXZhQ2xhc3M6OmZpZWxkTmFtZWQoY29uc3QgSWRlbnRpZmllciYgaWRlbnRpZmllciwgSW5z
dGFuY2UqKSBjb25zdAorRmllbGQqIEphdmFDbGFzczo6ZmllbGROYW1lZChQcm9wZXJ0eU5hbWUg
aWRlbnRpZmllciwgSW5zdGFuY2UqKSBjb25zdAogewogICAgIHJldHVybiBtX2ZpZWxkcy5nZXQo
aWRlbnRpZmllci51c3RyaW5nKCkuaW1wbCgpKTsKIH0KSW5kZXg6IFNvdXJjZS9XZWJDb3JlL2Jy
aWRnZS9qbmkvanNjL0phdmFDbGFzc0pTQy5oCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9XZWJDb3Jl
L2JyaWRnZS9qbmkvanNjL0phdmFDbGFzc0pTQy5oCShyZXZpc2lvbiAxMTY2NjcpCisrKyBTb3Vy
Y2UvV2ViQ29yZS9icmlkZ2Uvam5pL2pzYy9KYXZhQ2xhc3NKU0MuaAkod29ya2luZyBjb3B5KQpA
QCAtNDEsOCArNDEsOCBAQCBwdWJsaWM6CiAgICAgSmF2YUNsYXNzKGpvYmplY3QpOwogICAgIH5K
YXZhQ2xhc3MoKTsKIAotICAgIHZpcnR1YWwgTWV0aG9kTGlzdCBtZXRob2RzTmFtZWQoY29uc3Qg
SWRlbnRpZmllciYsIEluc3RhbmNlKikgY29uc3Q7Ci0gICAgdmlydHVhbCBGaWVsZCogZmllbGRO
YW1lZChjb25zdCBJZGVudGlmaWVyJiwgSW5zdGFuY2UqKSBjb25zdDsKKyAgICB2aXJ0dWFsIE1l
dGhvZExpc3QgbWV0aG9kc05hbWVkKFByb3BlcnR5TmFtZSwgSW5zdGFuY2UqKSBjb25zdDsKKyAg
ICB2aXJ0dWFsIEZpZWxkKiBmaWVsZE5hbWVkKFByb3BlcnR5TmFtZSwgSW5zdGFuY2UqKSBjb25z
dDsKIAogICAgIGJvb2wgaXNOdW1iZXJDbGFzcygpIGNvbnN0OwogICAgIGJvb2wgaXNCb29sZWFu
Q2xhc3MoKSBjb25zdDsKSW5kZXg6IFNvdXJjZS9XZWJDb3JlL2JyaWRnZS9qbmkvanNjL0phdmFJ
bnN0YW5jZUpTQy5jcHAKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL1dlYkNvcmUvYnJpZGdlL2puaS9q
c2MvSmF2YUluc3RhbmNlSlNDLmNwcAkocmV2aXNpb24gMTE2NjY3KQorKysgU291cmNlL1dlYkNv
cmUvYnJpZGdlL2puaS9qc2MvSmF2YUluc3RhbmNlSlNDLmNwcAkod29ya2luZyBjb3B5KQpAQCAt
MTE4LDcgKzExOCw3IEBAIGNsYXNzIEphdmFSdW50aW1lTWV0aG9kIDogcHVibGljIFJ1bnRpbWUK
IHB1YmxpYzoKICAgICB0eXBlZGVmIFJ1bnRpbWVNZXRob2QgQmFzZTsKIAotICAgIHN0YXRpYyBK
YXZhUnVudGltZU1ldGhvZCogY3JlYXRlKEV4ZWNTdGF0ZSogZXhlYywgSlNHbG9iYWxPYmplY3Qq
IGdsb2JhbE9iamVjdCwgY29uc3QgSWRlbnRpZmllciYgbmFtZSwgQmluZGluZ3M6Ok1ldGhvZExp
c3QmIGxpc3QpCisgICAgc3RhdGljIEphdmFSdW50aW1lTWV0aG9kKiBjcmVhdGUoRXhlY1N0YXRl
KiBleGVjLCBKU0dsb2JhbE9iamVjdCogZ2xvYmFsT2JqZWN0LCBjb25zdCBVU3RyaW5nJiBuYW1l
LCBCaW5kaW5nczo6TWV0aG9kTGlzdCYgbGlzdCkKICAgICB7CiAgICAgICAgIC8vIEZJWE1FOiBk
ZXByZWNhdGVkR2V0RE9NU3RydWN0dXJlIHVzZXMgdGhlIHByb3RvdHlwZSBvZmYgb2YgdGhlIHdy
b25nIGdsb2JhbCBvYmplY3QKICAgICAgICAgLy8gV2UgbmVlZCB0byBwYXNzIGluIHRoZSByaWdo
dCBnbG9iYWwgb2JqZWN0IGZvciAiaSIuCkBAIC0xNDEsNyArMTQxLDcgQEAgcHJpdmF0ZToKICAg
ICB7CiAgICAgfQogCi0gICAgdm9pZCBmaW5pc2hDcmVhdGlvbihKU0dsb2JhbERhdGEmIGdsb2Jh
bERhdGEsIGNvbnN0IElkZW50aWZpZXImIG5hbWUpCisgICAgdm9pZCBmaW5pc2hDcmVhdGlvbihK
U0dsb2JhbERhdGEmIGdsb2JhbERhdGEsIGNvbnN0IFVTdHJpbmcmIG5hbWUpCiAgICAgewogICAg
ICAgICBCYXNlOjpmaW5pc2hDcmVhdGlvbihnbG9iYWxEYXRhLCBuYW1lKTsKICAgICAgICAgQVNT
RVJUKGluaGVyaXRzKCZzX2luZm8pKTsKQEAgLTE1MCwxMCArMTUwLDEwIEBAIHByaXZhdGU6CiAK
IGNvbnN0IENsYXNzSW5mbyBKYXZhUnVudGltZU1ldGhvZDo6c19pbmZvID0geyAiSmF2YVJ1bnRp
bWVNZXRob2QiLCAmUnVudGltZU1ldGhvZDo6c19pbmZvLCAwLCAwLCBDUkVBVEVfTUVUSE9EX1RB
QkxFKEphdmFSdW50aW1lTWV0aG9kKSB9OwogCi1KU1ZhbHVlIEphdmFJbnN0YW5jZTo6Z2V0TWV0
aG9kKEV4ZWNTdGF0ZSogZXhlYywgY29uc3QgSWRlbnRpZmllciYgcHJvcGVydHlOYW1lKQorSlNW
YWx1ZSBKYXZhSW5zdGFuY2U6OmdldE1ldGhvZChFeGVjU3RhdGUqIGV4ZWMsIFByb3BlcnR5TmFt
ZSBwcm9wZXJ0eU5hbWUpCiB7CiAgICAgTWV0aG9kTGlzdCBtZXRob2RMaXN0ID0gZ2V0Q2xhc3Mo
KS0+bWV0aG9kc05hbWVkKHByb3BlcnR5TmFtZSwgdGhpcyk7Ci0gICAgcmV0dXJuIEphdmFSdW50
aW1lTWV0aG9kOjpjcmVhdGUoZXhlYywgZXhlYy0+bGV4aWNhbEdsb2JhbE9iamVjdCgpLCBwcm9w
ZXJ0eU5hbWUsIG1ldGhvZExpc3QpOworICAgIHJldHVybiBKYXZhUnVudGltZU1ldGhvZDo6Y3Jl
YXRlKGV4ZWMsIGV4ZWMtPmxleGljYWxHbG9iYWxPYmplY3QoKSwgcHJvcGVydHlOYW1lLnVzdHJp
bmcoKSwgbWV0aG9kTGlzdCk7CiB9CiAKIEpTVmFsdWUgSmF2YUluc3RhbmNlOjppbnZva2VNZXRo
b2QoRXhlY1N0YXRlKiBleGVjLCBSdW50aW1lTWV0aG9kKiBydW50aW1lTWV0aG9kKQpJbmRleDog
U291cmNlL1dlYkNvcmUvYnJpZGdlL2puaS9qc2MvSmF2YUluc3RhbmNlSlNDLmgKPT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PQotLS0gU291cmNlL1dlYkNvcmUvYnJpZGdlL2puaS9qc2MvSmF2YUluc3RhbmNlSlNDLmgJKHJl
dmlzaW9uIDExNjY2NykKKysrIFNvdXJjZS9XZWJDb3JlL2JyaWRnZS9qbmkvanNjL0phdmFJbnN0
YW5jZUpTQy5oCSh3b3JraW5nIGNvcHkpCkBAIC01Myw3ICs1Myw3IEBAIHB1YmxpYzoKICAgICB2
aXJ0dWFsIEpTVmFsdWUgdmFsdWVPZihFeGVjU3RhdGUqKSBjb25zdDsKICAgICB2aXJ0dWFsIEpT
VmFsdWUgZGVmYXVsdFZhbHVlKEV4ZWNTdGF0ZSosIFByZWZlcnJlZFByaW1pdGl2ZVR5cGUpIGNv
bnN0OwogCi0gICAgdmlydHVhbCBKU1ZhbHVlIGdldE1ldGhvZChFeGVjU3RhdGUqIGV4ZWMsIGNv
bnN0IElkZW50aWZpZXImIHByb3BlcnR5TmFtZSk7CisgICAgdmlydHVhbCBKU1ZhbHVlIGdldE1l
dGhvZChFeGVjU3RhdGUqIGV4ZWMsIFByb3BlcnR5TmFtZSBwcm9wZXJ0eU5hbWUpOwogICAgIHZp
cnR1YWwgSlNWYWx1ZSBpbnZva2VNZXRob2QoRXhlY1N0YXRlKiBleGVjLCBSdW50aW1lTWV0aG9k
KiBtZXRob2QpOwogCiAgICAgam9iamVjdCBqYXZhSW5zdGFuY2UoKSBjb25zdCB7IHJldHVybiBt
X2luc3RhbmNlLT5pbnN0YW5jZSgpOyB9CkluZGV4OiBTb3VyY2UvV2ViQ29yZS9icmlkZ2UvanNj
L0JyaWRnZUpTQy5oCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9XZWJDb3JlL2JyaWRnZS9qc2MvQnJp
ZGdlSlNDLmgJKHJldmlzaW9uIDExNjY2NykKKysrIFNvdXJjZS9XZWJDb3JlL2JyaWRnZS9qc2Mv
QnJpZGdlSlNDLmgJKHdvcmtpbmcgY29weSkKQEAgLTYyLDkgKzYyLDkgQEAgY2xhc3MgQ2xhc3Mg
ewogICAgIFdURl9NQUtFX05PTkNPUFlBQkxFKENsYXNzKTsgV1RGX01BS0VfRkFTVF9BTExPQ0FU
RUQ7CiBwdWJsaWM6CiAgICAgQ2xhc3MoKSB7IH0KLSAgICB2aXJ0dWFsIE1ldGhvZExpc3QgbWV0
aG9kc05hbWVkKGNvbnN0IElkZW50aWZpZXImLCBJbnN0YW5jZSopIGNvbnN0ID0gMDsKLSAgICB2
aXJ0dWFsIEZpZWxkKiBmaWVsZE5hbWVkKGNvbnN0IElkZW50aWZpZXImLCBJbnN0YW5jZSopIGNv
bnN0ID0gMDsKLSAgICB2aXJ0dWFsIEpTVmFsdWUgZmFsbGJhY2tPYmplY3QoRXhlY1N0YXRlKiwg
SW5zdGFuY2UqLCBjb25zdCBJZGVudGlmaWVyJikgeyByZXR1cm4ganNVbmRlZmluZWQoKTsgfQor
ICAgIHZpcnR1YWwgTWV0aG9kTGlzdCBtZXRob2RzTmFtZWQoUHJvcGVydHlOYW1lLCBJbnN0YW5j
ZSopIGNvbnN0ID0gMDsKKyAgICB2aXJ0dWFsIEZpZWxkKiBmaWVsZE5hbWVkKFByb3BlcnR5TmFt
ZSwgSW5zdGFuY2UqKSBjb25zdCA9IDA7CisgICAgdmlydHVhbCBKU1ZhbHVlIGZhbGxiYWNrT2Jq
ZWN0KEV4ZWNTdGF0ZSosIEluc3RhbmNlKiwgUHJvcGVydHlOYW1lKSB7IHJldHVybiBqc1VuZGVm
aW5lZCgpOyB9CiAKICAgICB2aXJ0dWFsIH5DbGFzcygpIHsgfQogfTsKQEAgLTg5LDkgKzg5LDkg
QEAgcHVibGljOgogICAgIHZvaWQgd2lsbEludmFsaWRhdGVSdW50aW1lT2JqZWN0KCk7CiAKICAg
ICAvLyBSZXR1cm5zIGZhbHNlIGlmIHRoZSB2YWx1ZSB3YXMgbm90IHNldCBzdWNjZXNzZnVsbHku
Ci0gICAgdmlydHVhbCBib29sIHNldFZhbHVlT2ZVbmRlZmluZWRGaWVsZChFeGVjU3RhdGUqLCBj
b25zdCBJZGVudGlmaWVyJiwgSlNWYWx1ZSkgeyByZXR1cm4gZmFsc2U7IH0KKyAgICB2aXJ0dWFs
IGJvb2wgc2V0VmFsdWVPZlVuZGVmaW5lZEZpZWxkKEV4ZWNTdGF0ZSosIFByb3BlcnR5TmFtZSwg
SlNWYWx1ZSkgeyByZXR1cm4gZmFsc2U7IH0KIAotICAgIHZpcnR1YWwgSlNWYWx1ZSBnZXRNZXRo
b2QoRXhlY1N0YXRlKiBleGVjLCBjb25zdCBJZGVudGlmaWVyJiBwcm9wZXJ0eU5hbWUpID0gMDsK
KyAgICB2aXJ0dWFsIEpTVmFsdWUgZ2V0TWV0aG9kKEV4ZWNTdGF0ZSogZXhlYywgUHJvcGVydHlO
YW1lIHByb3BlcnR5TmFtZSkgPSAwOwogICAgIHZpcnR1YWwgSlNWYWx1ZSBpbnZva2VNZXRob2Qo
RXhlY1N0YXRlKiwgUnVudGltZU1ldGhvZCogbWV0aG9kKSA9IDA7CiAKICAgICB2aXJ0dWFsIGJv
b2wgc3VwcG9ydHNJbnZva2VEZWZhdWx0TWV0aG9kKCkgY29uc3QgeyByZXR1cm4gZmFsc2U7IH0K
QEAgLTExMCw5ICsxMTAsOSBAQCBwdWJsaWM6CiAKICAgICB2aXJ0dWFsIH5JbnN0YW5jZSgpOwog
Ci0gICAgdmlydHVhbCBib29sIGdldE93blByb3BlcnR5U2xvdChKU09iamVjdCosIEV4ZWNTdGF0
ZSosIGNvbnN0IElkZW50aWZpZXImLCBQcm9wZXJ0eVNsb3QmKSB7IHJldHVybiBmYWxzZTsgfQot
ICAgIHZpcnR1YWwgYm9vbCBnZXRPd25Qcm9wZXJ0eURlc2NyaXB0b3IoSlNPYmplY3QqLCBFeGVj
U3RhdGUqLCBjb25zdCBJZGVudGlmaWVyJiwgUHJvcGVydHlEZXNjcmlwdG9yJikgeyByZXR1cm4g
ZmFsc2U7IH0KLSAgICB2aXJ0dWFsIHZvaWQgcHV0KEpTT2JqZWN0KiwgRXhlY1N0YXRlKiwgY29u
c3QgSWRlbnRpZmllciYsIEpTVmFsdWUsIFB1dFByb3BlcnR5U2xvdCYpIHsgfQorICAgIHZpcnR1
YWwgYm9vbCBnZXRPd25Qcm9wZXJ0eVNsb3QoSlNPYmplY3QqLCBFeGVjU3RhdGUqLCBQcm9wZXJ0
eU5hbWUsIFByb3BlcnR5U2xvdCYpIHsgcmV0dXJuIGZhbHNlOyB9CisgICAgdmlydHVhbCBib29s
IGdldE93blByb3BlcnR5RGVzY3JpcHRvcihKU09iamVjdCosIEV4ZWNTdGF0ZSosIFByb3BlcnR5
TmFtZSwgUHJvcGVydHlEZXNjcmlwdG9yJikgeyByZXR1cm4gZmFsc2U7IH0KKyAgICB2aXJ0dWFs
IHZvaWQgcHV0KEpTT2JqZWN0KiwgRXhlY1N0YXRlKiwgUHJvcGVydHlOYW1lLCBKU1ZhbHVlLCBQ
dXRQcm9wZXJ0eVNsb3QmKSB7IH0KIAogcHJvdGVjdGVkOgogICAgIHZpcnR1YWwgdm9pZCB2aXJ0
dWFsQmVnaW4oKSB7IH0KSW5kZXg6IFNvdXJjZS9XZWJDb3JlL2JyaWRnZS9vYmpjL29iamNfY2xh
c3MuaAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2ViQ29yZS9icmlkZ2Uvb2JqYy9vYmpjX2NsYXNz
LmgJKHJldmlzaW9uIDExNjY2NykKKysrIFNvdXJjZS9XZWJDb3JlL2JyaWRnZS9vYmpjL29iamNf
Y2xhc3MuaAkod29ya2luZyBjb3B5KQpAQCAtNDEsMTAgKzQxLDEwIEBAIHB1YmxpYzoKICAgICAv
LyBSZXR1cm4gdGhlIGNhY2hlZCBPYmpDIG9mIHRoZSBzcGVjaWZpZWQgbmFtZS4KICAgICBzdGF0
aWMgT2JqY0NsYXNzICpjbGFzc0ZvcklzQShDbGFzc1N0cnVjdFB0cik7CiAgICAgCi0gICAgdmly
dHVhbCBNZXRob2RMaXN0IG1ldGhvZHNOYW1lZChjb25zdCBJZGVudGlmaWVyJiwgSW5zdGFuY2Ug
Kmluc3RhbmNlKSBjb25zdDsKLSAgICB2aXJ0dWFsIEZpZWxkICpmaWVsZE5hbWVkKGNvbnN0IElk
ZW50aWZpZXImLCBJbnN0YW5jZSAqaW5zdGFuY2UpIGNvbnN0OworICAgIHZpcnR1YWwgTWV0aG9k
TGlzdCBtZXRob2RzTmFtZWQoUHJvcGVydHlOYW1lLCBJbnN0YW5jZSAqaW5zdGFuY2UpIGNvbnN0
OworICAgIHZpcnR1YWwgRmllbGQgKmZpZWxkTmFtZWQoUHJvcGVydHlOYW1lLCBJbnN0YW5jZSAq
aW5zdGFuY2UpIGNvbnN0OwogCi0gICAgdmlydHVhbCBKU1ZhbHVlIGZhbGxiYWNrT2JqZWN0KEV4
ZWNTdGF0ZSAqZXhlYywgSW5zdGFuY2UgKmluc3RhbmNlLCBjb25zdCBJZGVudGlmaWVyICZwcm9w
ZXJ0eU5hbWUpOworICAgIHZpcnR1YWwgSlNWYWx1ZSBmYWxsYmFja09iamVjdChFeGVjU3RhdGUg
KmV4ZWMsIEluc3RhbmNlICppbnN0YW5jZSwgUHJvcGVydHlOYW1lIHByb3BlcnR5TmFtZSk7CiAg
ICAgCiAgICAgQ2xhc3NTdHJ1Y3RQdHIgaXNhKCkgeyByZXR1cm4gX2lzYTsgfQogICAgIApJbmRl
eDogU291cmNlL1dlYkNvcmUvYnJpZGdlL29iamMvb2JqY19jbGFzcy5tbQo9PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0t
LSBTb3VyY2UvV2ViQ29yZS9icmlkZ2Uvb2JqYy9vYmpjX2NsYXNzLm1tCShyZXZpc2lvbiAxMTY2
NjcpCisrKyBTb3VyY2UvV2ViQ29yZS9icmlkZ2Uvb2JqYy9vYmpjX2NsYXNzLm1tCSh3b3JraW5n
IGNvcHkpCkBAIC05NSw3ICs5NSw3IEBAIHN0YXRpYyBpbmxpbmUgdm9pZCBjb252ZXJ0SlNNZXRo
b2ROYW1lVG8KICAgICB9CiB9CiAKLU1ldGhvZExpc3QgT2JqY0NsYXNzOjptZXRob2RzTmFtZWQo
Y29uc3QgSWRlbnRpZmllciYgaWRlbnRpZmllciwgSW5zdGFuY2UqKSBjb25zdAorTWV0aG9kTGlz
dCBPYmpjQ2xhc3M6Om1ldGhvZHNOYW1lZChQcm9wZXJ0eU5hbWUgaWRlbnRpZmllciwgSW5zdGFu
Y2UqKSBjb25zdAogewogICAgIE1ldGhvZExpc3QgbWV0aG9kTGlzdDsKICAgICBpZiAoTWV0aG9k
KiBtZXRob2QgPSBtX21ldGhvZENhY2hlLmdldChpZGVudGlmaWVyLmltcGwoKSkpIHsKQEAgLTEw
Myw3ICsxMDMsNyBAQCBNZXRob2RMaXN0IE9iamNDbGFzczo6bWV0aG9kc05hbWVkKGNvbnN0CiAg
ICAgICAgIHJldHVybiBtZXRob2RMaXN0OwogICAgIH0KIAotICAgIENTdHJpbmcganNOYW1lID0g
aWRlbnRpZmllci5hc2NpaSgpOworICAgIENTdHJpbmcganNOYW1lID0gaWRlbnRpZmllci51c3Ry
aW5nKCkuYXNjaWkoKTsKICAgICBKU05hbWVDb252ZXJzaW9uQnVmZmVyIGJ1ZmZlcjsKICAgICBj
b252ZXJ0SlNNZXRob2ROYW1lVG9PYmpjKGpzTmFtZSwgYnVmZmVyKTsKICAgICBSZXRhaW5QdHI8
Q0ZTdHJpbmdSZWY+IG1ldGhvZE5hbWUoQWRvcHRDRiwgQ0ZTdHJpbmdDcmVhdGVXaXRoQ1N0cmlu
ZyhOVUxMLCBidWZmZXIuZGF0YSgpLCBrQ0ZTdHJpbmdFbmNvZGluZ0FTQ0lJKSk7CkBAIC0xNDMs
NyArMTQzLDcgQEAgTWV0aG9kTGlzdCBPYmpjQ2xhc3M6Om1ldGhvZHNOYW1lZChjb25zdAogICAg
IHJldHVybiBtZXRob2RMaXN0OwogfQogCi1GaWVsZCogT2JqY0NsYXNzOjpmaWVsZE5hbWVkKGNv
bnN0IElkZW50aWZpZXImIGlkZW50aWZpZXIsIEluc3RhbmNlKiBpbnN0YW5jZSkgY29uc3QKK0Zp
ZWxkKiBPYmpjQ2xhc3M6OmZpZWxkTmFtZWQoUHJvcGVydHlOYW1lIGlkZW50aWZpZXIsIEluc3Rh
bmNlKiBpbnN0YW5jZSkgY29uc3QKIHsKICAgICBGaWVsZCogZmllbGQgPSBtX2ZpZWxkQ2FjaGUu
Z2V0KGlkZW50aWZpZXIuaW1wbCgpKTsKICAgICBpZiAoZmllbGQpCkBAIC0xNTEsNyArMTUxLDcg
QEAgRmllbGQqIE9iamNDbGFzczo6ZmllbGROYW1lZChjb25zdCBJZGVudAogCiAgICAgQ2xhc3NT
dHJ1Y3RQdHIgdGhpc0NsYXNzID0gX2lzYTsKIAotICAgIENTdHJpbmcganNOYW1lID0gaWRlbnRp
Zmllci5hc2NpaSgpOworICAgIENTdHJpbmcganNOYW1lID0gaWRlbnRpZmllci51c3RyaW5nKCku
YXNjaWkoKTsKICAgICBSZXRhaW5QdHI8Q0ZTdHJpbmdSZWY+IGZpZWxkTmFtZShBZG9wdENGLCBD
RlN0cmluZ0NyZWF0ZVdpdGhDU3RyaW5nKE5VTEwsIGpzTmFtZS5kYXRhKCksIGtDRlN0cmluZ0Vu
Y29kaW5nQVNDSUkpKTsKICAgICBpZCB0YXJnZXRPYmplY3QgPSAoc3RhdGljX2Nhc3Q8T2JqY0lu
c3RhbmNlKj4oaW5zdGFuY2UpKS0+Z2V0T2JqZWN0KCk7CiAgICAgaWQgYXR0cmlidXRlcyA9IFt0
YXJnZXRPYmplY3QgYXR0cmlidXRlS2V5c107CkBAIC0yMjEsMTQgKzIyMSwxNCBAQCBGaWVsZCog
T2JqY0NsYXNzOjpmaWVsZE5hbWVkKGNvbnN0IElkZW50CiAgICAgcmV0dXJuIGZpZWxkOwogfQog
Ci1KU1ZhbHVlIE9iamNDbGFzczo6ZmFsbGJhY2tPYmplY3QoRXhlY1N0YXRlKiBleGVjLCBJbnN0
YW5jZSogaW5zdGFuY2UsIGNvbnN0IElkZW50aWZpZXIgJnByb3BlcnR5TmFtZSkKK0pTVmFsdWUg
T2JqY0NsYXNzOjpmYWxsYmFja09iamVjdChFeGVjU3RhdGUqIGV4ZWMsIEluc3RhbmNlKiBpbnN0
YW5jZSwgUHJvcGVydHlOYW1lIHByb3BlcnR5TmFtZSkKIHsKICAgICBPYmpjSW5zdGFuY2UqIG9i
amNJbnN0YW5jZSA9IHN0YXRpY19jYXN0PE9iamNJbnN0YW5jZSo+KGluc3RhbmNlKTsKICAgICBp
ZCB0YXJnZXRPYmplY3QgPSBvYmpjSW5zdGFuY2UtPmdldE9iamVjdCgpOwogICAgIAogICAgIGlm
ICghW3RhcmdldE9iamVjdCByZXNwb25kc1RvU2VsZWN0b3I6QHNlbGVjdG9yKGludm9rZVVuZGVm
aW5lZE1ldGhvZEZyb21XZWJTY3JpcHQ6d2l0aEFyZ3VtZW50czopXSkKICAgICAgICAgcmV0dXJu
IGpzVW5kZWZpbmVkKCk7Ci0gICAgcmV0dXJuIE9iamNGYWxsYmFja09iamVjdEltcDo6Y3JlYXRl
KGV4ZWMsIGV4ZWMtPmxleGljYWxHbG9iYWxPYmplY3QoKSwgb2JqY0luc3RhbmNlLCBwcm9wZXJ0
eU5hbWUpOworICAgIHJldHVybiBPYmpjRmFsbGJhY2tPYmplY3RJbXA6OmNyZWF0ZShleGVjLCBl
eGVjLT5sZXhpY2FsR2xvYmFsT2JqZWN0KCksIG9iamNJbnN0YW5jZSwgcHJvcGVydHlOYW1lLmlt
cGwoKSk7CiB9CiAKIH0KSW5kZXg6IFNvdXJjZS9XZWJDb3JlL2JyaWRnZS9vYmpjL29iamNfaW5z
dGFuY2UuaAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2ViQ29yZS9icmlkZ2Uvb2JqYy9vYmpjX2lu
c3RhbmNlLmgJKHJldmlzaW9uIDExNjY2NykKKysrIFNvdXJjZS9XZWJDb3JlL2JyaWRnZS9vYmpj
L29iamNfaW5zdGFuY2UuaAkod29ya2luZyBjb3B5KQpAQCAtNDcsMTQgKzQ3LDE0IEBAIHB1Ymxp
YzoKICAgICB2aXJ0dWFsIEpTVmFsdWUgdmFsdWVPZihFeGVjU3RhdGUqKSBjb25zdDsKICAgICB2
aXJ0dWFsIEpTVmFsdWUgZGVmYXVsdFZhbHVlKEV4ZWNTdGF0ZSosIFByZWZlcnJlZFByaW1pdGl2
ZVR5cGUpIGNvbnN0OwogCi0gICAgdmlydHVhbCBKU1ZhbHVlIGdldE1ldGhvZChFeGVjU3RhdGUq
IGV4ZWMsIGNvbnN0IElkZW50aWZpZXImIHByb3BlcnR5TmFtZSk7CisgICAgdmlydHVhbCBKU1Zh
bHVlIGdldE1ldGhvZChFeGVjU3RhdGUqIGV4ZWMsIFByb3BlcnR5TmFtZSBwcm9wZXJ0eU5hbWUp
OwogICAgIEpTVmFsdWUgaW52b2tlT2JqY01ldGhvZChFeGVjU3RhdGUqLCBPYmpjTWV0aG9kKiBt
ZXRob2QpOwogICAgIHZpcnR1YWwgSlNWYWx1ZSBpbnZva2VNZXRob2QoRXhlY1N0YXRlKiwgUnVu
dGltZU1ldGhvZCogbWV0aG9kKTsKICAgICB2aXJ0dWFsIGJvb2wgc3VwcG9ydHNJbnZva2VEZWZh
dWx0TWV0aG9kKCkgY29uc3Q7CiAgICAgdmlydHVhbCBKU1ZhbHVlIGludm9rZURlZmF1bHRNZXRo
b2QoRXhlY1N0YXRlKik7CiAKLSAgICBKU1ZhbHVlIGdldFZhbHVlT2ZVbmRlZmluZWRGaWVsZChF
eGVjU3RhdGUqLCBjb25zdCBJZGVudGlmaWVyJikgY29uc3Q7Ci0gICAgdmlydHVhbCBib29sIHNl
dFZhbHVlT2ZVbmRlZmluZWRGaWVsZChFeGVjU3RhdGUqLCBjb25zdCBJZGVudGlmaWVyJiwgSlNW
YWx1ZSk7CisgICAgSlNWYWx1ZSBnZXRWYWx1ZU9mVW5kZWZpbmVkRmllbGQoRXhlY1N0YXRlKiwg
UHJvcGVydHlOYW1lKSBjb25zdDsKKyAgICB2aXJ0dWFsIGJvb2wgc2V0VmFsdWVPZlVuZGVmaW5l
ZEZpZWxkKEV4ZWNTdGF0ZSosIFByb3BlcnR5TmFtZSwgSlNWYWx1ZSk7CiAKICAgICBPYmplY3RT
dHJ1Y3RQdHIgZ2V0T2JqZWN0KCkgY29uc3QgeyByZXR1cm4gX2luc3RhbmNlLmdldCgpOyB9CiAg
ICAgCkluZGV4OiBTb3VyY2UvV2ViQ29yZS9icmlkZ2Uvb2JqYy9vYmpjX2luc3RhbmNlLm1tCj09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT0KLS0tIFNvdXJjZS9XZWJDb3JlL2JyaWRnZS9vYmpjL29iamNfaW5zdGFuY2UubW0J
KHJldmlzaW9uIDExNjY2NykKKysrIFNvdXJjZS9XZWJDb3JlL2JyaWRnZS9vYmpjL29iamNfaW5z
dGFuY2UubW0JKHdvcmtpbmcgY29weSkKQEAgLTE4MSw3ICsxODEsNyBAQCBib29sIE9iamNJbnN0
YW5jZTo6c3VwcG9ydHNJbnZva2VEZWZhdWx0CiAKIGNsYXNzIE9iakNSdW50aW1lTWV0aG9kIDog
cHVibGljIFJ1bnRpbWVNZXRob2QgewogcHVibGljOgotICAgIHN0YXRpYyBPYmpDUnVudGltZU1l
dGhvZCogY3JlYXRlKEV4ZWNTdGF0ZSogZXhlYywgSlNHbG9iYWxPYmplY3QqIGdsb2JhbE9iamVj
dCwgY29uc3QgSWRlbnRpZmllciYgbmFtZSwgQmluZGluZ3M6Ok1ldGhvZExpc3QmIGxpc3QpCisg
ICAgc3RhdGljIE9iakNSdW50aW1lTWV0aG9kKiBjcmVhdGUoRXhlY1N0YXRlKiBleGVjLCBKU0ds
b2JhbE9iamVjdCogZ2xvYmFsT2JqZWN0LCBjb25zdCBVU3RyaW5nJiBuYW1lLCBCaW5kaW5nczo6
TWV0aG9kTGlzdCYgbGlzdCkKICAgICB7CiAgICAgICAgIC8vIEZJWE1FOiBkZXByZWNhdGVkR2V0
RE9NU3RydWN0dXJlIHVzZXMgdGhlIHByb3RvdHlwZSBvZmYgb2YgdGhlIHdyb25nIGdsb2JhbCBv
YmplY3QKICAgICAgICAgLy8gV2UgbmVlZCB0byBwYXNzIGluIHRoZSByaWdodCBnbG9iYWwgb2Jq
ZWN0IGZvciAiaSIuCkBAIC0yMDYsNyArMjA2LDcgQEAgcHJpdmF0ZToKICAgICB7CiAgICAgfQog
Ci0gICAgdm9pZCBmaW5pc2hDcmVhdGlvbihKU0dsb2JhbERhdGEmIGdsb2JhbERhdGEsIGNvbnN0
IElkZW50aWZpZXImIG5hbWUpCisgICAgdm9pZCBmaW5pc2hDcmVhdGlvbihKU0dsb2JhbERhdGEm
IGdsb2JhbERhdGEsIGNvbnN0IFVTdHJpbmcmIG5hbWUpCiAgICAgewogICAgICAgICBCYXNlOjpm
aW5pc2hDcmVhdGlvbihnbG9iYWxEYXRhLCBuYW1lKTsKICAgICAgICAgQVNTRVJUKGluaGVyaXRz
KCZzX2luZm8pKTsKQEAgLTIxNSwxMCArMjE1LDEwIEBAIHByaXZhdGU6CiAKIGNvbnN0IENsYXNz
SW5mbyBPYmpDUnVudGltZU1ldGhvZDo6c19pbmZvID0geyAiT2JqQ1J1bnRpbWVNZXRob2QiLCAm
UnVudGltZU1ldGhvZDo6c19pbmZvLCAwLCAwLCBDUkVBVEVfTUVUSE9EX1RBQkxFKE9iakNSdW50
aW1lTWV0aG9kKSB9OwogCi1KU1ZhbHVlIE9iamNJbnN0YW5jZTo6Z2V0TWV0aG9kKEV4ZWNTdGF0
ZSogZXhlYywgY29uc3QgSWRlbnRpZmllciYgcHJvcGVydHlOYW1lKQorSlNWYWx1ZSBPYmpjSW5z
dGFuY2U6OmdldE1ldGhvZChFeGVjU3RhdGUqIGV4ZWMsIFByb3BlcnR5TmFtZSBwcm9wZXJ0eU5h
bWUpCiB7CiAgICAgTWV0aG9kTGlzdCBtZXRob2RMaXN0ID0gZ2V0Q2xhc3MoKS0+bWV0aG9kc05h
bWVkKHByb3BlcnR5TmFtZSwgdGhpcyk7Ci0gICAgcmV0dXJuIE9iakNSdW50aW1lTWV0aG9kOjpj
cmVhdGUoZXhlYywgZXhlYy0+bGV4aWNhbEdsb2JhbE9iamVjdCgpLCBwcm9wZXJ0eU5hbWUsIG1l
dGhvZExpc3QpOworICAgIHJldHVybiBPYmpDUnVudGltZU1ldGhvZDo6Y3JlYXRlKGV4ZWMsIGV4
ZWMtPmxleGljYWxHbG9iYWxPYmplY3QoKSwgcHJvcGVydHlOYW1lLnVzdHJpbmcoKSwgbWV0aG9k
TGlzdCk7CiB9CiAKIEpTVmFsdWUgT2JqY0luc3RhbmNlOjppbnZva2VNZXRob2QoRXhlY1N0YXRl
KiBleGVjLCBSdW50aW1lTWV0aG9kKiBydW50aW1lTWV0aG9kKQpAQCAtNDAxLDcgKzQwMSw3IEBA
IEpTVmFsdWUgT2JqY0luc3RhbmNlOjppbnZva2VEZWZhdWx0TWV0aG8KICAgICByZXR1cm4gY29u
c3RfY2FzdDxKU1ZhbHVlJj4ocmVzdWx0KTsKIH0KIAotYm9vbCBPYmpjSW5zdGFuY2U6OnNldFZh
bHVlT2ZVbmRlZmluZWRGaWVsZChFeGVjU3RhdGUqIGV4ZWMsIGNvbnN0IElkZW50aWZpZXImIHBy
b3BlcnR5LCBKU1ZhbHVlIGFWYWx1ZSkKK2Jvb2wgT2JqY0luc3RhbmNlOjpzZXRWYWx1ZU9mVW5k
ZWZpbmVkRmllbGQoRXhlY1N0YXRlKiBleGVjLCBQcm9wZXJ0eU5hbWUgcHJvcGVydHksIEpTVmFs
dWUgYVZhbHVlKQogewogICAgIGlkIHRhcmdldE9iamVjdCA9IGdldE9iamVjdCgpOwogICAgIGlm
ICghW3RhcmdldE9iamVjdCByZXNwb25kc1RvU2VsZWN0b3I6QHNlbGVjdG9yKHNldFZhbHVlOmZv
clVuZGVmaW5lZEtleTopXSkKQEAgLTQxOCw3ICs0MTgsNyBAQCBib29sIE9iamNJbnN0YW5jZTo6
c2V0VmFsdWVPZlVuZGVmaW5lZEZpCiAgICAgICAgIE9iamNWYWx1ZSBvYmpjVmFsdWUgPSBjb252
ZXJ0VmFsdWVUb09iamNWYWx1ZShleGVjLCBhVmFsdWUsIE9iamNPYmplY3RUeXBlKTsKIAogICAg
ICAgICBAdHJ5IHsKLSAgICAgICAgICAgIFt0YXJnZXRPYmplY3Qgc2V0VmFsdWU6b2JqY1ZhbHVl
Lm9iamVjdFZhbHVlIGZvclVuZGVmaW5lZEtleTpbTlNTdHJpbmcgc3RyaW5nV2l0aENTdHJpbmc6
cHJvcGVydHkuYXNjaWkoKS5kYXRhKCkgZW5jb2Rpbmc6TlNBU0NJSVN0cmluZ0VuY29kaW5nXV07
CisgICAgICAgICAgICBbdGFyZ2V0T2JqZWN0IHNldFZhbHVlOm9iamNWYWx1ZS5vYmplY3RWYWx1
ZSBmb3JVbmRlZmluZWRLZXk6W05TU3RyaW5nIHN0cmluZ1dpdGhDU3RyaW5nOnByb3BlcnR5LnVz
dHJpbmcoKS5hc2NpaSgpLmRhdGEoKSBlbmNvZGluZzpOU0FTQ0lJU3RyaW5nRW5jb2RpbmddXTsK
ICAgICAgICAgfSBAY2F0Y2goTlNFeGNlcHRpb24qIGxvY2FsRXhjZXB0aW9uKSB7CiAgICAgICAg
ICAgICAvLyBEbyBub3RoaW5nLiAgQ2xhc3MgZGlkIG5vdCBvdmVycmlkZSB2YWx1ZUZvclVuZGVm
aW5lZEtleTouCiAgICAgICAgIH0KQEAgLTQyOSw3ICs0MjksNyBAQCBib29sIE9iamNJbnN0YW5j
ZTo6c2V0VmFsdWVPZlVuZGVmaW5lZEZpCiAgICAgcmV0dXJuIHRydWU7CiB9CiAKLUpTVmFsdWUg
T2JqY0luc3RhbmNlOjpnZXRWYWx1ZU9mVW5kZWZpbmVkRmllbGQoRXhlY1N0YXRlKiBleGVjLCBj
b25zdCBJZGVudGlmaWVyJiBwcm9wZXJ0eSkgY29uc3QKK0pTVmFsdWUgT2JqY0luc3RhbmNlOjpn
ZXRWYWx1ZU9mVW5kZWZpbmVkRmllbGQoRXhlY1N0YXRlKiBleGVjLCBQcm9wZXJ0eU5hbWUgcHJv
cGVydHkpIGNvbnN0CiB7CiAgICAgSlNWYWx1ZSByZXN1bHQgPSBqc1VuZGVmaW5lZCgpOwogICAg
IApAQCAtNDQ0LDcgKzQ0NCw3IEBAIEpTVmFsdWUgT2JqY0luc3RhbmNlOjpnZXRWYWx1ZU9mVW5k
ZWZpbmUKICAgICAgICAgc2V0R2xvYmFsRXhjZXB0aW9uKG5pbCk7CiAgICAgCiAgICAgICAgIEB0
cnkgewotICAgICAgICAgICAgaWQgb2JqY1ZhbHVlID0gW3RhcmdldE9iamVjdCB2YWx1ZUZvclVu
ZGVmaW5lZEtleTpbTlNTdHJpbmcgc3RyaW5nV2l0aENTdHJpbmc6cHJvcGVydHkuYXNjaWkoKS5k
YXRhKCkgZW5jb2Rpbmc6TlNBU0NJSVN0cmluZ0VuY29kaW5nXV07CisgICAgICAgICAgICBpZCBv
YmpjVmFsdWUgPSBbdGFyZ2V0T2JqZWN0IHZhbHVlRm9yVW5kZWZpbmVkS2V5OltOU1N0cmluZyBz
dHJpbmdXaXRoQ1N0cmluZzpwcm9wZXJ0eS51c3RyaW5nKCkuYXNjaWkoKS5kYXRhKCkgZW5jb2Rp
bmc6TlNBU0NJSVN0cmluZ0VuY29kaW5nXV07CiAgICAgICAgICAgICByZXN1bHQgPSBjb252ZXJ0
T2JqY1ZhbHVlVG9WYWx1ZShleGVjLCAmb2JqY1ZhbHVlLCBPYmpjT2JqZWN0VHlwZSwgbV9yb290
T2JqZWN0LmdldCgpKTsKICAgICAgICAgfSBAY2F0Y2goTlNFeGNlcHRpb24qIGxvY2FsRXhjZXB0
aW9uKSB7CiAgICAgICAgICAgICAvLyBEbyBub3RoaW5nLiAgQ2xhc3MgZGlkIG5vdCBvdmVycmlk
ZSB2YWx1ZUZvclVuZGVmaW5lZEtleTouCkluZGV4OiBTb3VyY2UvV2ViQ29yZS9icmlkZ2Uvb2Jq
Yy9vYmpjX3J1bnRpbWUuaAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2ViQ29yZS9icmlkZ2Uvb2Jq
Yy9vYmpjX3J1bnRpbWUuaAkocmV2aXNpb24gMTE2NjY3KQorKysgU291cmNlL1dlYkNvcmUvYnJp
ZGdlL29iamMvb2JqY19ydW50aW1lLmgJKHdvcmtpbmcgY29weSkKQEAgLTk0LDcgKzk0LDcgQEAg
Y2xhc3MgT2JqY0ZhbGxiYWNrT2JqZWN0SW1wIDogcHVibGljIEpTTgogcHVibGljOgogICAgIHR5
cGVkZWYgSlNOb25GaW5hbE9iamVjdCBCYXNlOwogCi0gICAgc3RhdGljIE9iamNGYWxsYmFja09i
amVjdEltcCogY3JlYXRlKEV4ZWNTdGF0ZSogZXhlYywgSlNHbG9iYWxPYmplY3QqIGdsb2JhbE9i
amVjdCwgT2JqY0luc3RhbmNlKiBpbnN0YW5jZSwgY29uc3QgSWRlbnRpZmllciYgcHJvcGVydHlO
YW1lKQorICAgIHN0YXRpYyBPYmpjRmFsbGJhY2tPYmplY3RJbXAqIGNyZWF0ZShFeGVjU3RhdGUq
IGV4ZWMsIEpTR2xvYmFsT2JqZWN0KiBnbG9iYWxPYmplY3QsIE9iamNJbnN0YW5jZSogaW5zdGFu
Y2UsIGNvbnN0IFVTdHJpbmcmIHByb3BlcnR5TmFtZSkKICAgICB7CiAgICAgICAgIC8vIEZJWE1F
OiBkZXByZWNhdGVkR2V0RE9NU3RydWN0dXJlIHVzZXMgdGhlIHByb3RvdHlwZSBvZmYgb2YgdGhl
IHdyb25nIGdsb2JhbCBvYmplY3QKICAgICAgICAgU3RydWN0dXJlKiBkb21TdHJ1Y3R1cmUgPSBX
ZWJDb3JlOjpkZXByZWNhdGVkR2V0RE9NU3RydWN0dXJlPE9iamNGYWxsYmFja09iamVjdEltcD4o
ZXhlYyk7CkBAIC0xMDUsNyArMTA1LDcgQEAgcHVibGljOgogCiAgICAgc3RhdGljIGNvbnN0IENs
YXNzSW5mbyBzX2luZm87CiAKLSAgICBjb25zdCBJZGVudGlmaWVyJiBwcm9wZXJ0eU5hbWUoKSBj
b25zdCB7IHJldHVybiBfaXRlbTsgfQorICAgIGNvbnN0IFVTdHJpbmcmIHByb3BlcnR5TmFtZSgp
IGNvbnN0IHsgcmV0dXJuIF9pdGVtOyB9CiAKICAgICBzdGF0aWMgT2JqZWN0UHJvdG90eXBlKiBj
cmVhdGVQcm90b3R5cGUoRXhlY1N0YXRlKiwgSlNHbG9iYWxPYmplY3QqIGdsb2JhbE9iamVjdCkK
ICAgICB7CkBAIC0xMjEsMjAgKzEyMSwyMCBAQCBwcm90ZWN0ZWQ6CiAgICAgdm9pZCBmaW5pc2hD
cmVhdGlvbihKU0dsb2JhbE9iamVjdCopOwogCiBwcml2YXRlOgotICAgIE9iamNGYWxsYmFja09i
amVjdEltcChKU0dsb2JhbE9iamVjdCosIFN0cnVjdHVyZSosIE9iamNJbnN0YW5jZSosIGNvbnN0
IElkZW50aWZpZXImIHByb3BlcnR5TmFtZSk7CisgICAgT2JqY0ZhbGxiYWNrT2JqZWN0SW1wKEpT
R2xvYmFsT2JqZWN0KiwgU3RydWN0dXJlKiwgT2JqY0luc3RhbmNlKiwgY29uc3QgVVN0cmluZyYg
cHJvcGVydHlOYW1lKTsKICAgICBzdGF0aWMgdm9pZCBkZXN0cm95KEpTQ2VsbCopOwogICAgIHN0
YXRpYyBjb25zdCB1bnNpZ25lZCBTdHJ1Y3R1cmVGbGFncyA9IE92ZXJyaWRlc0dldE93blByb3Bl
cnR5U2xvdCB8IEpTT2JqZWN0OjpTdHJ1Y3R1cmVGbGFnczsKLSAgICBzdGF0aWMgYm9vbCBnZXRP
d25Qcm9wZXJ0eVNsb3QoSlNDZWxsKiwgRXhlY1N0YXRlKiwgY29uc3QgSWRlbnRpZmllciYsIFBy
b3BlcnR5U2xvdCYpOwotICAgIHN0YXRpYyBib29sIGdldE93blByb3BlcnR5RGVzY3JpcHRvcihK
U09iamVjdCosIEV4ZWNTdGF0ZSosIGNvbnN0IElkZW50aWZpZXImLCBQcm9wZXJ0eURlc2NyaXB0
b3ImKTsKLSAgICBzdGF0aWMgdm9pZCBwdXQoSlNDZWxsKiwgRXhlY1N0YXRlKiwgY29uc3QgSWRl
bnRpZmllciYgcHJvcGVydHlOYW1lLCBKU1ZhbHVlLCBQdXRQcm9wZXJ0eVNsb3QmKTsKKyAgICBz
dGF0aWMgYm9vbCBnZXRPd25Qcm9wZXJ0eVNsb3QoSlNDZWxsKiwgRXhlY1N0YXRlKiwgUHJvcGVy
dHlOYW1lLCBQcm9wZXJ0eVNsb3QmKTsKKyAgICBzdGF0aWMgYm9vbCBnZXRPd25Qcm9wZXJ0eURl
c2NyaXB0b3IoSlNPYmplY3QqLCBFeGVjU3RhdGUqLCBQcm9wZXJ0eU5hbWUsIFByb3BlcnR5RGVz
Y3JpcHRvciYpOworICAgIHN0YXRpYyB2b2lkIHB1dChKU0NlbGwqLCBFeGVjU3RhdGUqLCBQcm9w
ZXJ0eU5hbWUgcHJvcGVydHlOYW1lLCBKU1ZhbHVlLCBQdXRQcm9wZXJ0eVNsb3QmKTsKICAgICBz
dGF0aWMgQ2FsbFR5cGUgZ2V0Q2FsbERhdGEoSlNDZWxsKiwgQ2FsbERhdGEmKTsKLSAgICBzdGF0
aWMgYm9vbCBkZWxldGVQcm9wZXJ0eShKU0NlbGwqLCBFeGVjU3RhdGUqLCBjb25zdCBJZGVudGlm
aWVyJiBwcm9wZXJ0eU5hbWUpOworICAgIHN0YXRpYyBib29sIGRlbGV0ZVByb3BlcnR5KEpTQ2Vs
bCosIEV4ZWNTdGF0ZSosIFByb3BlcnR5TmFtZSBwcm9wZXJ0eU5hbWUpOwogICAgIHN0YXRpYyBK
U1ZhbHVlIGRlZmF1bHRWYWx1ZShjb25zdCBKU09iamVjdCosIEV4ZWNTdGF0ZSosIFByZWZlcnJl
ZFByaW1pdGl2ZVR5cGUpOwogCiAgICAgYm9vbCB0b0Jvb2xlYW4oRXhlY1N0YXRlKikgY29uc3Q7
IC8vIEZJWE1FOiBDdXJyZW50bHkgdGhpcyBpcyBicm9rZW4gYmVjYXVzZSBub25lIG9mIHRoZSBz
dXBlcmNsYXNzZXMgYXJlIG1hcmtlZCB2aXJ0dWFsLiBXZSBuZWVkIHRvIHNvbHZlIHRoaXMgaW4g
dGhlIGxvbmdlciB0ZXJtLgogCiAgICAgUmVmUHRyPE9iamNJbnN0YW5jZT4gX2luc3RhbmNlOwot
ICAgIElkZW50aWZpZXIgX2l0ZW07CisgICAgVVN0cmluZyBfaXRlbTsKIH07CiAKIH0gLy8gbmFt
ZXNwYWNlIEJpbmRpbmdzCkluZGV4OiBTb3VyY2UvV2ViQ29yZS9icmlkZ2Uvb2JqYy9vYmpjX3J1
bnRpbWUubW0KPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL1dlYkNvcmUvYnJpZGdlL29iamMvb2JqY19y
dW50aW1lLm1tCShyZXZpc2lvbiAxMTY2NjcpCisrKyBTb3VyY2UvV2ViQ29yZS9icmlkZ2Uvb2Jq
Yy9vYmpjX3J1bnRpbWUubW0JKHdvcmtpbmcgY29weSkKQEAgLTE5Miw3ICsxOTIsNyBAQCB1bnNp
Z25lZCBpbnQgT2JqY0FycmF5OjpnZXRMZW5ndGgoKSBjb25zCiAKIGNvbnN0IENsYXNzSW5mbyBP
YmpjRmFsbGJhY2tPYmplY3RJbXA6OnNfaW5mbyA9IHsgIk9iamNGYWxsYmFja09iamVjdCIsICZK
U05vbkZpbmFsT2JqZWN0OjpzX2luZm8sIDAsIDAsIENSRUFURV9NRVRIT0RfVEFCTEUoT2JqY0Zh
bGxiYWNrT2JqZWN0SW1wKSB9OwogCi1PYmpjRmFsbGJhY2tPYmplY3RJbXA6Ok9iamNGYWxsYmFj
a09iamVjdEltcChKU0dsb2JhbE9iamVjdCogZ2xvYmFsT2JqZWN0LCBTdHJ1Y3R1cmUqIHN0cnVj
dHVyZSwgT2JqY0luc3RhbmNlKiBpLCBjb25zdCBJZGVudGlmaWVyJiBwcm9wZXJ0eU5hbWUpCitP
YmpjRmFsbGJhY2tPYmplY3RJbXA6Ok9iamNGYWxsYmFja09iamVjdEltcChKU0dsb2JhbE9iamVj
dCogZ2xvYmFsT2JqZWN0LCBTdHJ1Y3R1cmUqIHN0cnVjdHVyZSwgT2JqY0luc3RhbmNlKiBpLCBj
b25zdCBVU3RyaW5nJiBwcm9wZXJ0eU5hbWUpCiAgICAgOiBKU05vbkZpbmFsT2JqZWN0KGdsb2Jh
bE9iamVjdC0+Z2xvYmFsRGF0YSgpLCBzdHJ1Y3R1cmUpCiAgICAgLCBfaW5zdGFuY2UoaSkKICAg
ICAsIF9pdGVtKHByb3BlcnR5TmFtZSkKQEAgLTIxMCwyMSArMjEwLDIxIEBAIHZvaWQgT2JqY0Zh
bGxiYWNrT2JqZWN0SW1wOjpmaW5pc2hDcmVhdGkKICAgICBBU1NFUlQoaW5oZXJpdHMoJnNfaW5m
bykpOwogfQogCi1ib29sIE9iamNGYWxsYmFja09iamVjdEltcDo6Z2V0T3duUHJvcGVydHlTbG90
KEpTQ2VsbCosIEV4ZWNTdGF0ZSosIGNvbnN0IElkZW50aWZpZXImLCBQcm9wZXJ0eVNsb3QmIHNs
b3QpCitib29sIE9iamNGYWxsYmFja09iamVjdEltcDo6Z2V0T3duUHJvcGVydHlTbG90KEpTQ2Vs
bCosIEV4ZWNTdGF0ZSosIFByb3BlcnR5TmFtZSwgUHJvcGVydHlTbG90JiBzbG90KQogewogICAg
IC8vIGtlZXAgdGhlIHByb3RvdHlwZSBmcm9tIGdldHRpbmcgY2FsbGVkIGluc3RlYWQgb2YganVz
dCByZXR1cm5pbmcgZmFsc2UKICAgICBzbG90LnNldFVuZGVmaW5lZCgpOwogICAgIHJldHVybiB0
cnVlOwogfQogCi1ib29sIE9iamNGYWxsYmFja09iamVjdEltcDo6Z2V0T3duUHJvcGVydHlEZXNj
cmlwdG9yKEpTT2JqZWN0KiwgRXhlY1N0YXRlKiwgY29uc3QgSWRlbnRpZmllciYsIFByb3BlcnR5
RGVzY3JpcHRvciYgZGVzY3JpcHRvcikKK2Jvb2wgT2JqY0ZhbGxiYWNrT2JqZWN0SW1wOjpnZXRP
d25Qcm9wZXJ0eURlc2NyaXB0b3IoSlNPYmplY3QqLCBFeGVjU3RhdGUqLCBQcm9wZXJ0eU5hbWUs
IFByb3BlcnR5RGVzY3JpcHRvciYgZGVzY3JpcHRvcikKIHsKICAgICAvLyBrZWVwIHRoZSBwcm90
b3R5cGUgZnJvbSBnZXR0aW5nIGNhbGxlZCBpbnN0ZWFkIG9mIGp1c3QgcmV0dXJuaW5nIGZhbHNl
CiAgICAgZGVzY3JpcHRvci5zZXRVbmRlZmluZWQoKTsKICAgICByZXR1cm4gdHJ1ZTsKIH0KIAot
dm9pZCBPYmpjRmFsbGJhY2tPYmplY3RJbXA6OnB1dChKU0NlbGwqLCBFeGVjU3RhdGUqLCBjb25z
dCBJZGVudGlmaWVyJiwgSlNWYWx1ZSwgUHV0UHJvcGVydHlTbG90JikKK3ZvaWQgT2JqY0ZhbGxi
YWNrT2JqZWN0SW1wOjpwdXQoSlNDZWxsKiwgRXhlY1N0YXRlKiwgUHJvcGVydHlOYW1lLCBKU1Zh
bHVlLCBQdXRQcm9wZXJ0eVNsb3QmKQogewogfQogCkBAIC0yNDksNyArMjQ5LDcgQEAgc3RhdGlj
IEVuY29kZWRKU1ZhbHVlIEpTQ19IT1NUX0NBTEwgY2FsbAogICAgIGlmIChbdGFyZ2V0T2JqZWN0
IHJlc3BvbmRzVG9TZWxlY3RvcjpAc2VsZWN0b3IoaW52b2tlVW5kZWZpbmVkTWV0aG9kRnJvbVdl
YlNjcmlwdDp3aXRoQXJndW1lbnRzOildKXsKICAgICAgICAgT2JqY0NsYXNzKiBvYmpjQ2xhc3Mg
PSBzdGF0aWNfY2FzdDxPYmpjQ2xhc3MqPihvYmpjSW5zdGFuY2UtPmdldENsYXNzKCkpOwogICAg
ICAgICBPd25QdHI8T2JqY01ldGhvZD4gZmFsbGJhY2tNZXRob2QoYWRvcHRQdHIobmV3IE9iamNN
ZXRob2Qob2JqY0NsYXNzLT5pc2EoKSwgQHNlbGVjdG9yKGludm9rZVVuZGVmaW5lZE1ldGhvZEZy
b21XZWJTY3JpcHQ6d2l0aEFyZ3VtZW50czopKSkpOwotICAgICAgICBjb25zdCBJZGVudGlmaWVy
JiBuYW1lSWRlbnRpZmllciA9IHN0YXRpY19jYXN0PE9iamNGYWxsYmFja09iamVjdEltcCo+KGV4
ZWMtPmNhbGxlZSgpKS0+cHJvcGVydHlOYW1lKCk7CisgICAgICAgIGNvbnN0IFVTdHJpbmcmIG5h
bWVJZGVudGlmaWVyID0gc3RhdGljX2Nhc3Q8T2JqY0ZhbGxiYWNrT2JqZWN0SW1wKj4oZXhlYy0+
Y2FsbGVlKCkpLT5wcm9wZXJ0eU5hbWUoKTsKICAgICAgICAgUmV0YWluUHRyPENGU3RyaW5nUmVm
PiBuYW1lKEFkb3B0Q0YsIENGU3RyaW5nQ3JlYXRlV2l0aENoYXJhY3RlcnMoMCwgbmFtZUlkZW50
aWZpZXIuY2hhcmFjdGVycygpLCBuYW1lSWRlbnRpZmllci5sZW5ndGgoKSkpOwogICAgICAgICBm
YWxsYmFja01ldGhvZC0+c2V0SmF2YVNjcmlwdE5hbWUobmFtZS5nZXQoKSk7CiAgICAgICAgIHJl
c3VsdCA9IG9iamNJbnN0YW5jZS0+aW52b2tlT2JqY01ldGhvZChleGVjLCBmYWxsYmFja01ldGhv
ZC5nZXQoKSk7CkBAIC0yNzAsNyArMjcwLDcgQEAgQ2FsbFR5cGUgT2JqY0ZhbGxiYWNrT2JqZWN0
SW1wOjpnZXRDYWxsRAogICAgIHJldHVybiBDYWxsVHlwZUhvc3Q7CiB9CiAKLWJvb2wgT2JqY0Zh
bGxiYWNrT2JqZWN0SW1wOjpkZWxldGVQcm9wZXJ0eShKU0NlbGwqLCBFeGVjU3RhdGUqLCBjb25z
dCBJZGVudGlmaWVyJikKK2Jvb2wgT2JqY0ZhbGxiYWNrT2JqZWN0SW1wOjpkZWxldGVQcm9wZXJ0
eShKU0NlbGwqLCBFeGVjU3RhdGUqLCBQcm9wZXJ0eU5hbWUpCiB7CiAgICAgcmV0dXJuIGZhbHNl
OwogfQpAQCAtMjc4LDcgKzI3OCw3IEBAIGJvb2wgT2JqY0ZhbGxiYWNrT2JqZWN0SW1wOjpkZWxl
dGVQcm9wZXIKIEpTVmFsdWUgT2JqY0ZhbGxiYWNrT2JqZWN0SW1wOjpkZWZhdWx0VmFsdWUoY29u
c3QgSlNPYmplY3QqIG9iamVjdCwgRXhlY1N0YXRlKiBleGVjLCBQcmVmZXJyZWRQcmltaXRpdmVU
eXBlKQogewogICAgIGNvbnN0IE9iamNGYWxsYmFja09iamVjdEltcCogdGhpc09iamVjdCA9IGpz
Q2FzdDxjb25zdCBPYmpjRmFsbGJhY2tPYmplY3RJbXAqPihvYmplY3QpOwotICAgIHJldHVybiB0
aGlzT2JqZWN0LT5faW5zdGFuY2UtPmdldFZhbHVlT2ZVbmRlZmluZWRGaWVsZChleGVjLCB0aGlz
T2JqZWN0LT5faXRlbSk7CisgICAgcmV0dXJuIHRoaXNPYmplY3QtPl9pbnN0YW5jZS0+Z2V0VmFs
dWVPZlVuZGVmaW5lZEZpZWxkKGV4ZWMsIElkZW50aWZpZXIoZXhlYywgdGhpc09iamVjdC0+X2l0
ZW0pKTsKIH0KIAogYm9vbCBPYmpjRmFsbGJhY2tPYmplY3RJbXA6OnRvQm9vbGVhbihFeGVjU3Rh
dGUgKikgY29uc3QKSW5kZXg6IFNvdXJjZS9XZWJLaXQyL0NoYW5nZUxvZwo9PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0t
LSBTb3VyY2UvV2ViS2l0Mi9DaGFuZ2VMb2cJKHJldmlzaW9uIDExNjc5MikKKysrIFNvdXJjZS9X
ZWJLaXQyL0NoYW5nZUxvZwkod29ya2luZyBjb3B5KQpAQCAtMSwzICsxLDM4IEBACisyMDEyLTA1
LTExICBHYXZpbiBCYXJyYWNsb3VnaCAgPGJhcnJhY2xvdWdoQGFwcGxlLmNvbT4KKworICAgICAg
ICBJbnRyb2R1Y2UgUHJvcGVydHlOYW1lIGNsYXNzCisgICAgICAgIGh0dHBzOi8vYnVncy53ZWJr
aXQub3JnL3Nob3dfYnVnLmNnaT9pZD04NjI0MQorCisgICAgICAgIFJldmlld2VkIGJ5IE5PQk9E
WSAoT09QUyEpLgorCisgICAgICAgIFJlcGxhY2UgJ2NvbnN0IElkZW50aWZpZXImJyBhcmd1bWVu
dHMgdG8gZnVuY3Rpb25zIGFjY2Vzc2luZyBvYmplY3QgcHJvcGVydGllcyB3aXRoIGEgbmV3ICdQ
cm9wZXJ0eU5hbWUnIHR5cGUuCisgICAgICAgIFRoaXMgY2hhbmdlIHBhdmVzIHRoZSB3YXkgdG8g
YWxsb3cgZm9yIHByb3BlcnRpZXMga2V5ZWQgYnkgdmFsdWVzIHRoYXQgYXJlIG5vdCBJZGVudGlm
aWVycy4KKworICAgICAgICBUaGlzIGNoYW5nZSBpcyBsYXJnZWx5IGEgbWVjaGFuaWNhbCBmaW5k
ICYgcmVwbGFjZS4KKyAgICAgICAgSXQgYWxzbyBjaGFuZ2VzIEpTRnVuY3Rpb24ncyBjb25zdHJ1
Y3RvciB0byB0YWtlIGEgVVN0cmluZyYgaW5zdGVhZCBvZiBhbiBJZGVudGlmaWVyJgorICAgICAg
ICAoc2luY2UgaW4gc29tZSBjYXNlcyB3ZSBjYW4gbm8gbG9uZ2VyIGd1YXJhbnRlZSB0aGF0IHdl
J2xsbCBoYXZlIGFuIElkZW50aWZpZXIpLCBhbmQKKyAgICAgICAgdW5pZmllcyBJZGVudGlmaWVy
J3MgbWV0aG9kcyB0byBvYnRhaW4gYXJyYXkgaW5kaWNlcyBvbnRvIFByb3BlcnR5TmFtZS4KKwor
ICAgICAgICBUaGUgbmV3IFByb3BlcnR5TmFtZSBjbGFzcyByZXRhaW5zIHRoZSBhYmlsaXR5IHRv
IHN1cHBvcnQgLmltcGwoKSBhbmQgLnVzdHJpbmcoKSwgYnV0CisgICAgICAgIGluIGEgZnV0dXJl
IHBhdGNoIHdlIG1heSBuZWVkIHRvIHJld29yayB0aGlzLCBzaW5jZSBub3QgYWxsIFByb3BlcnR5
TmFtZXMgc2hvdWxkIGJlCisgICAgICAgIGVxdWFsIGJhc2VkIG9uIHRoZWlyIHN0cmluZyByZXBy
ZXNlbnRhdGlvbi4KKworICAgICAgICAqIFdlYlByb2Nlc3MvUGx1Z2lucy9OZXRzY2FwZS9KU05Q
TWV0aG9kLmNwcDoKKyAgICAgICAgKFdlYktpdDo6SlNOUE1ldGhvZDo6ZmluaXNoQ3JlYXRpb24p
OgorICAgICAgICAqIFdlYlByb2Nlc3MvUGx1Z2lucy9OZXRzY2FwZS9KU05QTWV0aG9kLmg6Cisg
ICAgICAgIChXZWJLaXQ6OkpTTlBNZXRob2Q6OmNyZWF0ZSk6CisgICAgICAgIChKU05QTWV0aG9k
KToKKyAgICAgICAgKiBXZWJQcm9jZXNzL1BsdWdpbnMvTmV0c2NhcGUvSlNOUE9iamVjdC5jcHA6
CisgICAgICAgIChXZWJLaXQ6Om5wSWRlbnRpZmllckZyb21JZGVudGlmaWVyKToKKyAgICAgICAg
KFdlYktpdDo6SlNOUE9iamVjdDo6Z2V0T3duUHJvcGVydHlTbG90KToKKyAgICAgICAgKFdlYktp
dDo6SlNOUE9iamVjdDo6Z2V0T3duUHJvcGVydHlEZXNjcmlwdG9yKToKKyAgICAgICAgKFdlYktp
dDo6SlNOUE9iamVjdDo6cHV0KToKKyAgICAgICAgKFdlYktpdDo6SlNOUE9iamVjdDo6ZGVsZXRl
UHJvcGVydHkpOgorICAgICAgICAoV2ViS2l0OjpKU05QT2JqZWN0Ojpwcm9wZXJ0eUdldHRlcik6
CisgICAgICAgIChXZWJLaXQ6OkpTTlBPYmplY3Q6Om1ldGhvZEdldHRlcik6CisgICAgICAgICog
V2ViUHJvY2Vzcy9QbHVnaW5zL05ldHNjYXBlL0pTTlBPYmplY3QuaDoKKyAgICAgICAgKEpTTlBP
YmplY3QpOgorCiAyMDEyLTA1LTExICBHdXN0YXZvIE5vcm9uaGEgU2lsdmEgIDxnbnNAZ25vbWUu
b3JnPgogCiAgICAgICAgIFJFR1JFU1NJT04ocjExNjIwNSk6IFtHVEtdOiBidWlsZCBubyBsb25n
ZXIgc3VwcG9ydHMgdGhpbiBhcmNoaXZlcwpJbmRleDogU291cmNlL1dlYktpdDIvV2ViUHJvY2Vz
cy9QbHVnaW5zL05ldHNjYXBlL0pTTlBNZXRob2QuY3BwCj09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9X
ZWJLaXQyL1dlYlByb2Nlc3MvUGx1Z2lucy9OZXRzY2FwZS9KU05QTWV0aG9kLmNwcAkocmV2aXNp
b24gMTE2NjY3KQorKysgU291cmNlL1dlYktpdDIvV2ViUHJvY2Vzcy9QbHVnaW5zL05ldHNjYXBl
L0pTTlBNZXRob2QuY3BwCSh3b3JraW5nIGNvcHkpCkBAIC00OSw3ICs0OSw3IEBAIEpTTlBNZXRo
b2Q6OkpTTlBNZXRob2QoSlNHbG9iYWxPYmplY3QqIGcKIHsKIH0KIAotdm9pZCBKU05QTWV0aG9k
OjpmaW5pc2hDcmVhdGlvbihKU0dsb2JhbERhdGEmIGdsb2JhbERhdGEsIGNvbnN0IElkZW50aWZp
ZXImIG5hbWUpCit2b2lkIEpTTlBNZXRob2Q6OmZpbmlzaENyZWF0aW9uKEpTR2xvYmFsRGF0YSYg
Z2xvYmFsRGF0YSwgY29uc3QgVVN0cmluZyYgbmFtZSkKIHsKICAgICBCYXNlOjpmaW5pc2hDcmVh
dGlvbihnbG9iYWxEYXRhLCBuYW1lKTsKICAgICBBU1NFUlQoaW5oZXJpdHMoJnNfaW5mbykpOwpJ
bmRleDogU291cmNlL1dlYktpdDIvV2ViUHJvY2Vzcy9QbHVnaW5zL05ldHNjYXBlL0pTTlBNZXRo
b2QuaAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2ViS2l0Mi9XZWJQcm9jZXNzL1BsdWdpbnMvTmV0
c2NhcGUvSlNOUE1ldGhvZC5oCShyZXZpc2lvbiAxMTY2NjcpCisrKyBTb3VyY2UvV2ViS2l0Mi9X
ZWJQcm9jZXNzL1BsdWdpbnMvTmV0c2NhcGUvSlNOUE1ldGhvZC5oCSh3b3JraW5nIGNvcHkpCkBA
IC0zOSw3ICszOSw3IEBAIGNsYXNzIEpTTlBNZXRob2QgOiBwdWJsaWMgSlNDOjpJbnRlcm5hbEYK
IHB1YmxpYzoKICAgICB0eXBlZGVmIEpTQzo6SW50ZXJuYWxGdW5jdGlvbiBCYXNlOwogCi0gICAg
c3RhdGljIEpTTlBNZXRob2QqIGNyZWF0ZShKU0M6OkV4ZWNTdGF0ZSogZXhlYywgSlNDOjpKU0ds
b2JhbE9iamVjdCogZ2xvYmFsT2JqZWN0LCBjb25zdCBKU0M6OklkZW50aWZpZXImIG5hbWUsIE5Q
SWRlbnRpZmllciBucElkZW50KQorICAgIHN0YXRpYyBKU05QTWV0aG9kKiBjcmVhdGUoSlNDOjpF
eGVjU3RhdGUqIGV4ZWMsIEpTQzo6SlNHbG9iYWxPYmplY3QqIGdsb2JhbE9iamVjdCwgY29uc3Qg
SlNDOjpVU3RyaW5nJiBuYW1lLCBOUElkZW50aWZpZXIgbnBJZGVudCkKICAgICB7CiAgICAgICAg
IEpTQzo6U3RydWN0dXJlKiBzdHJ1Y3R1cmUgPSBjcmVhdGVTdHJ1Y3R1cmUoZXhlYy0+Z2xvYmFs
RGF0YSgpLCBnbG9iYWxPYmplY3QsIGdsb2JhbE9iamVjdC0+ZnVuY3Rpb25Qcm90b3R5cGUoKSk7
CiAgICAgICAgIEpTTlBNZXRob2QqIG1ldGhvZCA9IG5ldyAoSlNDOjphbGxvY2F0ZUNlbGw8SlNO
UE1ldGhvZD4oKmV4ZWMtPmhlYXAoKSkpIEpTTlBNZXRob2QoZ2xvYmFsT2JqZWN0LCBzdHJ1Y3R1
cmUsIG5wSWRlbnQpOwpAQCAtNTIsNyArNTIsNyBAQCBwdWJsaWM6CiAgICAgTlBJZGVudGlmaWVy
IG5wSWRlbnRpZmllcigpIGNvbnN0IHsgcmV0dXJuIG1fbnBJZGVudGlmaWVyOyB9CiAKIHByb3Rl
Y3RlZDoKLSAgICB2b2lkIGZpbmlzaENyZWF0aW9uKEpTQzo6SlNHbG9iYWxEYXRhJiwgY29uc3Qg
SlNDOjpJZGVudGlmaWVyJiBuYW1lKTsKKyAgICB2b2lkIGZpbmlzaENyZWF0aW9uKEpTQzo6SlNH
bG9iYWxEYXRhJiwgY29uc3QgSlNDOjpVU3RyaW5nJiBuYW1lKTsKIAogcHJpdmF0ZTogICAgCiAg
ICAgSlNOUE1ldGhvZChKU0M6OkpTR2xvYmFsT2JqZWN0KiwgSlNDOjpTdHJ1Y3R1cmUqLCBOUElk
ZW50aWZpZXIpOwpJbmRleDogU291cmNlL1dlYktpdDIvV2ViUHJvY2Vzcy9QbHVnaW5zL05ldHNj
YXBlL0pTTlBPYmplY3QuY3BwCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9XZWJLaXQyL1dlYlByb2Nl
c3MvUGx1Z2lucy9OZXRzY2FwZS9KU05QT2JqZWN0LmNwcAkocmV2aXNpb24gMTE2NjY3KQorKysg
U291cmNlL1dlYktpdDIvV2ViUHJvY2Vzcy9QbHVnaW5zL05ldHNjYXBlL0pTTlBPYmplY3QuY3Bw
CSh3b3JraW5nIGNvcHkpCkBAIC00Myw3ICs0Myw3IEBAIHVzaW5nIG5hbWVzcGFjZSBXZWJDb3Jl
OwogCiBuYW1lc3BhY2UgV2ViS2l0IHsKIAotc3RhdGljIE5QSWRlbnRpZmllciBucElkZW50aWZp
ZXJGcm9tSWRlbnRpZmllcihjb25zdCBJZGVudGlmaWVyJiBpZGVudGlmaWVyKQorc3RhdGljIE5Q
SWRlbnRpZmllciBucElkZW50aWZpZXJGcm9tSWRlbnRpZmllcihQcm9wZXJ0eU5hbWUgaWRlbnRp
ZmllcikKIHsKICAgICByZXR1cm4gc3RhdGljX2Nhc3Q8TlBJZGVudGlmaWVyPihJZGVudGlmaWVy
UmVwOjpnZXQoaWRlbnRpZmllci51c3RyaW5nKCkudXRmOCgpLmRhdGEoKSkpOwogfQpAQCAtMjUy
LDcgKzI1Miw3IEBAIENvbnN0cnVjdFR5cGUgSlNOUE9iamVjdDo6Z2V0Q29uc3RydWN0RGEKICAg
ICByZXR1cm4gQ29uc3RydWN0VHlwZUhvc3Q7CiB9CiAKLWJvb2wgSlNOUE9iamVjdDo6Z2V0T3du
UHJvcGVydHlTbG90KEpTQ2VsbCogY2VsbCwgRXhlY1N0YXRlKiBleGVjLCBjb25zdCBJZGVudGlm
aWVyJiBwcm9wZXJ0eU5hbWUsIFByb3BlcnR5U2xvdCYgc2xvdCkKK2Jvb2wgSlNOUE9iamVjdDo6
Z2V0T3duUHJvcGVydHlTbG90KEpTQ2VsbCogY2VsbCwgRXhlY1N0YXRlKiBleGVjLCBQcm9wZXJ0
eU5hbWUgcHJvcGVydHlOYW1lLCBQcm9wZXJ0eVNsb3QmIHNsb3QpCiB7CiAgICAgSlNOUE9iamVj
dCogdGhpc09iamVjdCA9IEpTQzo6anNDYXN0PEpTTlBPYmplY3QqPihjZWxsKTsKICAgICBBU1NF
UlRfR0NfT0JKRUNUX0lOSEVSSVRTKHRoaXNPYmplY3QsICZzX2luZm8pOwpAQCAtMjc4LDcgKzI3
OCw3IEBAIGJvb2wgSlNOUE9iamVjdDo6Z2V0T3duUHJvcGVydHlTbG90KEpTQ2UKICAgICByZXR1
cm4gZmFsc2U7CiB9CiAKLWJvb2wgSlNOUE9iamVjdDo6Z2V0T3duUHJvcGVydHlEZXNjcmlwdG9y
KEpTT2JqZWN0KiBvYmplY3QsIEV4ZWNTdGF0ZSogZXhlYywgY29uc3QgSWRlbnRpZmllciYgcHJv
cGVydHlOYW1lLCBQcm9wZXJ0eURlc2NyaXB0b3ImIGRlc2NyaXB0b3IpCitib29sIEpTTlBPYmpl
Y3Q6OmdldE93blByb3BlcnR5RGVzY3JpcHRvcihKU09iamVjdCogb2JqZWN0LCBFeGVjU3RhdGUq
IGV4ZWMsIFByb3BlcnR5TmFtZSBwcm9wZXJ0eU5hbWUsIFByb3BlcnR5RGVzY3JpcHRvciYgZGVz
Y3JpcHRvcikKIHsKICAgICBKU05QT2JqZWN0KiB0aGlzT2JqZWN0ID0ganNDYXN0PEpTTlBPYmpl
Y3QqPihvYmplY3QpOwogICAgIEFTU0VSVF9HQ19PQkpFQ1RfSU5IRVJJVFModGhpc09iamVjdCwg
JnNfaW5mbyk7CkBAIC0zMDgsNyArMzA4LDcgQEAgYm9vbCBKU05QT2JqZWN0OjpnZXRPd25Qcm9w
ZXJ0eURlc2NyaXB0bwogICAgIHJldHVybiBmYWxzZTsKIH0KIAotdm9pZCBKU05QT2JqZWN0Ojpw
dXQoSlNDZWxsKiBjZWxsLCBFeGVjU3RhdGUqIGV4ZWMsIGNvbnN0IElkZW50aWZpZXImIHByb3Bl
cnR5TmFtZSwgSlNWYWx1ZSB2YWx1ZSwgUHV0UHJvcGVydHlTbG90JikKK3ZvaWQgSlNOUE9iamVj
dDo6cHV0KEpTQ2VsbCogY2VsbCwgRXhlY1N0YXRlKiBleGVjLCBQcm9wZXJ0eU5hbWUgcHJvcGVy
dHlOYW1lLCBKU1ZhbHVlIHZhbHVlLCBQdXRQcm9wZXJ0eVNsb3QmKQogewogICAgIEpTTlBPYmpl
Y3QqIHRoaXNPYmplY3QgPSBKU0M6OmpzQ2FzdDxKU05QT2JqZWN0Kj4oY2VsbCk7CiAgICAgQVNT
RVJUX0dDX09CSkVDVF9JTkhFUklUUyh0aGlzT2JqZWN0LCAmc19pbmZvKTsKQEAgLTM0Nyw3ICsz
NDcsNyBAQCB2b2lkIEpTTlBPYmplY3Q6OnB1dChKU0NlbGwqIGNlbGwsIEV4ZWNTCiAgICAgcmVs
ZWFzZU5QVmFyaWFudFZhbHVlKCZ2YXJpYW50KTsKIH0KIAotYm9vbCBKU05QT2JqZWN0OjpkZWxl
dGVQcm9wZXJ0eShKU0NlbGwqIGNlbGwsIEV4ZWNTdGF0ZSogZXhlYywgY29uc3QgSWRlbnRpZmll
ciYgcHJvcGVydHlOYW1lKQorYm9vbCBKU05QT2JqZWN0OjpkZWxldGVQcm9wZXJ0eShKU0NlbGwq
IGNlbGwsIEV4ZWNTdGF0ZSogZXhlYywgUHJvcGVydHlOYW1lIHByb3BlcnR5TmFtZSkKIHsKICAg
ICByZXR1cm4ganNDYXN0PEpTTlBPYmplY3QqPihjZWxsKS0+ZGVsZXRlUHJvcGVydHkoZXhlYywg
bnBJZGVudGlmaWVyRnJvbUlkZW50aWZpZXIocHJvcGVydHlOYW1lKSk7CiB9CkBAIC00MzYsNyAr
NDM2LDcgQEAgdm9pZCBKU05QT2JqZWN0OjpnZXRPd25Qcm9wZXJ0eU5hbWVzKEpTTwogICAgIG5w
bk1lbUZyZWUoaWRlbnRpZmllcnMpOwogfQogCi1KU1ZhbHVlIEpTTlBPYmplY3Q6OnByb3BlcnR5
R2V0dGVyKEV4ZWNTdGF0ZSogZXhlYywgSlNWYWx1ZSBzbG90QmFzZSwgY29uc3QgSWRlbnRpZmll
ciYgcHJvcGVydHlOYW1lKQorSlNWYWx1ZSBKU05QT2JqZWN0Ojpwcm9wZXJ0eUdldHRlcihFeGVj
U3RhdGUqIGV4ZWMsIEpTVmFsdWUgc2xvdEJhc2UsIFByb3BlcnR5TmFtZSBwcm9wZXJ0eU5hbWUp
CiB7CiAgICAgSlNOUE9iamVjdCogdGhpc09iaiA9IHN0YXRpY19jYXN0PEpTTlBPYmplY3QqPihh
c09iamVjdChzbG90QmFzZSkpOwogICAgIEFTU0VSVF9HQ19PQkpFQ1RfSU5IRVJJVFModGhpc09i
aiwgJnNfaW5mbyk7CkBAIC00NzIsNyArNDcyLDcgQEAgSlNWYWx1ZSBKU05QT2JqZWN0Ojpwcm9w
ZXJ0eUdldHRlcihFeGVjUwogICAgIHJldHVybiBwcm9wZXJ0eVZhbHVlOwogfQogCi1KU1ZhbHVl
IEpTTlBPYmplY3Q6Om1ldGhvZEdldHRlcihFeGVjU3RhdGUqIGV4ZWMsIEpTVmFsdWUgc2xvdEJh
c2UsIGNvbnN0IElkZW50aWZpZXImIG1ldGhvZE5hbWUpCitKU1ZhbHVlIEpTTlBPYmplY3Q6Om1l
dGhvZEdldHRlcihFeGVjU3RhdGUqIGV4ZWMsIEpTVmFsdWUgc2xvdEJhc2UsIFByb3BlcnR5TmFt
ZSBtZXRob2ROYW1lKQogewogICAgIEpTTlBPYmplY3QqIHRoaXNPYmogPSBzdGF0aWNfY2FzdDxK
U05QT2JqZWN0Kj4oYXNPYmplY3Qoc2xvdEJhc2UpKTsKICAgICBBU1NFUlRfR0NfT0JKRUNUX0lO
SEVSSVRTKHRoaXNPYmosICZzX2luZm8pOwpAQCAtNDgxLDcgKzQ4MSw3IEBAIEpTVmFsdWUgSlNO
UE9iamVjdDo6bWV0aG9kR2V0dGVyKEV4ZWNTdGEKICAgICAgICAgcmV0dXJuIHRocm93SW52YWxp
ZEFjY2Vzc0Vycm9yKGV4ZWMpOwogCiAgICAgTlBJZGVudGlmaWVyIG5wSWRlbnRpZmllciA9IG5w
SWRlbnRpZmllckZyb21JZGVudGlmaWVyKG1ldGhvZE5hbWUpOwotICAgIHJldHVybiBKU05QTWV0
aG9kOjpjcmVhdGUoZXhlYywgdGhpc09iai0+Z2xvYmFsT2JqZWN0KCksIG1ldGhvZE5hbWUsIG5w
SWRlbnRpZmllcik7CisgICAgcmV0dXJuIEpTTlBNZXRob2Q6OmNyZWF0ZShleGVjLCB0aGlzT2Jq
LT5nbG9iYWxPYmplY3QoKSwgbWV0aG9kTmFtZS51c3RyaW5nKCksIG5wSWRlbnRpZmllcik7CiB9
CiAKIEpTT2JqZWN0KiBKU05QT2JqZWN0Ojp0aHJvd0ludmFsaWRBY2Nlc3NFcnJvcihFeGVjU3Rh
dGUqIGV4ZWMpCkluZGV4OiBTb3VyY2UvV2ViS2l0Mi9XZWJQcm9jZXNzL1BsdWdpbnMvTmV0c2Nh
cGUvSlNOUE9iamVjdC5oCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9XZWJLaXQyL1dlYlByb2Nlc3Mv
UGx1Z2lucy9OZXRzY2FwZS9KU05QT2JqZWN0LmgJKHJldmlzaW9uIDExNjY2NykKKysrIFNvdXJj
ZS9XZWJLaXQyL1dlYlByb2Nlc3MvUGx1Z2lucy9OZXRzY2FwZS9KU05QT2JqZWN0LmgJKHdvcmtp
bmcgY29weSkKQEAgLTgzLDE5ICs4MywxOSBAQCBwcml2YXRlOgogICAgIHN0YXRpYyBKU0M6OkNh
bGxUeXBlIGdldENhbGxEYXRhKEpTQzo6SlNDZWxsKiwgSlNDOjpDYWxsRGF0YSYpOwogICAgIHN0
YXRpYyBKU0M6OkNvbnN0cnVjdFR5cGUgZ2V0Q29uc3RydWN0RGF0YShKU0M6OkpTQ2VsbCosIEpT
Qzo6Q29uc3RydWN0RGF0YSYpOwogCi0gICAgc3RhdGljIGJvb2wgZ2V0T3duUHJvcGVydHlTbG90
KEpTQzo6SlNDZWxsKiwgSlNDOjpFeGVjU3RhdGUqLCBjb25zdCBKU0M6OklkZW50aWZpZXImIHBy
b3BlcnR5TmFtZSwgSlNDOjpQcm9wZXJ0eVNsb3QmKTsKLSAgICBzdGF0aWMgYm9vbCBnZXRPd25Q
cm9wZXJ0eURlc2NyaXB0b3IoSlNDOjpKU09iamVjdCosIEpTQzo6RXhlY1N0YXRlKiwgY29uc3Qg
SlNDOjpJZGVudGlmaWVyJiBwcm9wZXJ0eU5hbWUsIEpTQzo6UHJvcGVydHlEZXNjcmlwdG9yJik7
Ci0gICAgc3RhdGljIHZvaWQgcHV0KEpTQzo6SlNDZWxsKiwgSlNDOjpFeGVjU3RhdGUqLCBjb25z
dCBKU0M6OklkZW50aWZpZXImIHByb3BlcnR5TmFtZSwgSlNDOjpKU1ZhbHVlLCBKU0M6OlB1dFBy
b3BlcnR5U2xvdCYpOworICAgIHN0YXRpYyBib29sIGdldE93blByb3BlcnR5U2xvdChKU0M6OkpT
Q2VsbCosIEpTQzo6RXhlY1N0YXRlKiwgSlNDOjpQcm9wZXJ0eU5hbWUgcHJvcGVydHlOYW1lLCBK
U0M6OlByb3BlcnR5U2xvdCYpOworICAgIHN0YXRpYyBib29sIGdldE93blByb3BlcnR5RGVzY3Jp
cHRvcihKU0M6OkpTT2JqZWN0KiwgSlNDOjpFeGVjU3RhdGUqLCBKU0M6OlByb3BlcnR5TmFtZSBw
cm9wZXJ0eU5hbWUsIEpTQzo6UHJvcGVydHlEZXNjcmlwdG9yJik7CisgICAgc3RhdGljIHZvaWQg
cHV0KEpTQzo6SlNDZWxsKiwgSlNDOjpFeGVjU3RhdGUqLCBKU0M6OlByb3BlcnR5TmFtZSBwcm9w
ZXJ0eU5hbWUsIEpTQzo6SlNWYWx1ZSwgSlNDOjpQdXRQcm9wZXJ0eVNsb3QmKTsKIAotICAgIHN0
YXRpYyBib29sIGRlbGV0ZVByb3BlcnR5KEpTQzo6SlNDZWxsKiwgSlNDOjpFeGVjU3RhdGUqLCBj
b25zdCBKU0M6OklkZW50aWZpZXImIHByb3BlcnR5TmFtZSk7CisgICAgc3RhdGljIGJvb2wgZGVs
ZXRlUHJvcGVydHkoSlNDOjpKU0NlbGwqLCBKU0M6OkV4ZWNTdGF0ZSosIEpTQzo6UHJvcGVydHlO
YW1lIHByb3BlcnR5TmFtZSk7CiAgICAgc3RhdGljIGJvb2wgZGVsZXRlUHJvcGVydHlCeUluZGV4
KEpTQzo6SlNDZWxsKiwgSlNDOjpFeGVjU3RhdGUqLCB1bnNpZ25lZCBwcm9wZXJ0eU5hbWUpOwog
CiAgICAgYm9vbCBkZWxldGVQcm9wZXJ0eShKU0M6OkV4ZWNTdGF0ZSosIE5QSWRlbnRpZmllciBw
cm9wZXJ0eU5hbWUpOwogCiAgICAgc3RhdGljIHZvaWQgZ2V0T3duUHJvcGVydHlOYW1lcyhKU0M6
OkpTT2JqZWN0KiwgSlNDOjpFeGVjU3RhdGUqLCBKU0M6OlByb3BlcnR5TmFtZUFycmF5JiwgSlND
OjpFbnVtZXJhdGlvbk1vZGUpOwogCi0gICAgc3RhdGljIEpTQzo6SlNWYWx1ZSBwcm9wZXJ0eUdl
dHRlcihKU0M6OkV4ZWNTdGF0ZSosIEpTQzo6SlNWYWx1ZSwgY29uc3QgSlNDOjpJZGVudGlmaWVy
Jik7Ci0gICAgc3RhdGljIEpTQzo6SlNWYWx1ZSBtZXRob2RHZXR0ZXIoSlNDOjpFeGVjU3RhdGUq
LCBKU0M6OkpTVmFsdWUsIGNvbnN0IEpTQzo6SWRlbnRpZmllciYpOworICAgIHN0YXRpYyBKU0M6
OkpTVmFsdWUgcHJvcGVydHlHZXR0ZXIoSlNDOjpFeGVjU3RhdGUqLCBKU0M6OkpTVmFsdWUsIEpT
Qzo6UHJvcGVydHlOYW1lKTsKKyAgICBzdGF0aWMgSlNDOjpKU1ZhbHVlIG1ldGhvZEdldHRlcihK
U0M6OkV4ZWNTdGF0ZSosIEpTQzo6SlNWYWx1ZSwgSlNDOjpQcm9wZXJ0eU5hbWUpOwogICAgIHN0
YXRpYyBKU0M6OkpTT2JqZWN0KiB0aHJvd0ludmFsaWRBY2Nlc3NFcnJvcihKU0M6OkV4ZWNTdGF0
ZSopOwogCiAgICAgTlBSdW50aW1lT2JqZWN0TWFwKiBtX29iamVjdE1hcDsKSW5kZXg6IFNvdXJj
ZS9XZWJLaXQvbWFjL0NoYW5nZUxvZwo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2ViS2l0L21hYy9D
aGFuZ2VMb2cJKHJldmlzaW9uIDExNjc5MikKKysrIFNvdXJjZS9XZWJLaXQvbWFjL0NoYW5nZUxv
Zwkod29ya2luZyBjb3B5KQpAQCAtMSwzICsxLDM0IEBACisyMDEyLTA1LTExICBHYXZpbiBCYXJy
YWNsb3VnaCAgPGJhcnJhY2xvdWdoQGFwcGxlLmNvbT4KKworICAgICAgICBJbnRyb2R1Y2UgUHJv
cGVydHlOYW1lIGNsYXNzCisgICAgICAgIGh0dHBzOi8vYnVncy53ZWJraXQub3JnL3Nob3dfYnVn
LmNnaT9pZD04NjI0MQorCisgICAgICAgIFJldmlld2VkIGJ5IE5PQk9EWSAoT09QUyEpLgorCisg
ICAgICAgIFJlcGxhY2UgJ2NvbnN0IElkZW50aWZpZXImJyBhcmd1bWVudHMgdG8gZnVuY3Rpb25z
IGFjY2Vzc2luZyBvYmplY3QgcHJvcGVydGllcyB3aXRoIGEgbmV3ICdQcm9wZXJ0eU5hbWUnIHR5
cGUuCisgICAgICAgIFRoaXMgY2hhbmdlIHBhdmVzIHRoZSB3YXkgdG8gYWxsb3cgZm9yIHByb3Bl
cnRpZXMga2V5ZWQgYnkgdmFsdWVzIHRoYXQgYXJlIG5vdCBJZGVudGlmaWVycy4KKworICAgICAg
ICBUaGlzIGNoYW5nZSBpcyBsYXJnZWx5IGEgbWVjaGFuaWNhbCBmaW5kICYgcmVwbGFjZS4KKyAg
ICAgICAgSXQgYWxzbyBjaGFuZ2VzIEpTRnVuY3Rpb24ncyBjb25zdHJ1Y3RvciB0byB0YWtlIGEg
VVN0cmluZyYgaW5zdGVhZCBvZiBhbiBJZGVudGlmaWVyJgorICAgICAgICAoc2luY2UgaW4gc29t
ZSBjYXNlcyB3ZSBjYW4gbm8gbG9uZ2VyIGd1YXJhbnRlZSB0aGF0IHdlJ2xsbCBoYXZlIGFuIElk
ZW50aWZpZXIpLCBhbmQKKyAgICAgICAgdW5pZmllcyBJZGVudGlmaWVyJ3MgbWV0aG9kcyB0byBv
YnRhaW4gYXJyYXkgaW5kaWNlcyBvbnRvIFByb3BlcnR5TmFtZS4KKworICAgICAgICBUaGUgbmV3
IFByb3BlcnR5TmFtZSBjbGFzcyByZXRhaW5zIHRoZSBhYmlsaXR5IHRvIHN1cHBvcnQgLmltcGwo
KSBhbmQgLnVzdHJpbmcoKSwgYnV0CisgICAgICAgIGluIGEgZnV0dXJlIHBhdGNoIHdlIG1heSBu
ZWVkIHRvIHJld29yayB0aGlzLCBzaW5jZSBub3QgYWxsIFByb3BlcnR5TmFtZXMgc2hvdWxkIGJl
CisgICAgICAgIGVxdWFsIGJhc2VkIG9uIHRoZWlyIHN0cmluZyByZXByZXNlbnRhdGlvbi4KKwor
ICAgICAgICAqIFBsdWdpbnMvSG9zdGVkL1Byb3h5SW5zdGFuY2UuaDoKKyAgICAgICAgKFByb3h5
SW5zdGFuY2UpOgorICAgICAgICAqIFBsdWdpbnMvSG9zdGVkL1Byb3h5SW5zdGFuY2UubW06Cisg
ICAgICAgIChQcm94eUNsYXNzKToKKyAgICAgICAgKFdlYktpdDo6UHJveHlDbGFzczo6bWV0aG9k
c05hbWVkKToKKyAgICAgICAgKFdlYktpdDo6UHJveHlDbGFzczo6ZmllbGROYW1lZCk6CisgICAg
ICAgIChXZWJLaXQ6OlByb3h5UnVudGltZU1ldGhvZDo6Y3JlYXRlKToKKyAgICAgICAgKFdlYktp
dDo6UHJveHlSdW50aW1lTWV0aG9kOjpmaW5pc2hDcmVhdGlvbik6CisgICAgICAgIChXZWJLaXQ6
OlByb3h5SW5zdGFuY2U6OmdldE1ldGhvZCk6CisgICAgICAgIChXZWJLaXQ6OlByb3h5SW5zdGFu
Y2U6Om1ldGhvZHNOYW1lZCk6CisgICAgICAgIChXZWJLaXQ6OlByb3h5SW5zdGFuY2U6OmZpZWxk
TmFtZWQpOgorCiAyMDEyLTA1LTEwICBHeXV5b3VuZyBLaW0gIDxneXV5b3VuZy5raW1Ac2Ftc3Vu
Zy5jb20+CiAKICAgICAgICAgTW92ZSByZXN1bWVBbmltYXRpb25zIHRvIHVzZSBJbnRlcm5hbHMg
aW50ZXJmYWNlCkluZGV4OiBTb3VyY2UvV2ViS2l0L21hYy9QbHVnaW5zL0hvc3RlZC9Qcm94eUlu
c3RhbmNlLmgKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL1dlYktpdC9tYWMvUGx1Z2lucy9Ib3N0ZWQv
UHJveHlJbnN0YW5jZS5oCShyZXZpc2lvbiAxMTY2NjcpCisrKyBTb3VyY2UvV2ViS2l0L21hYy9Q
bHVnaW5zL0hvc3RlZC9Qcm94eUluc3RhbmNlLmgJKHdvcmtpbmcgY29weSkKQEAgLTQ2LDggKzQ2
LDggQEAgcHVibGljOgogICAgIH0KICAgICB+UHJveHlJbnN0YW5jZSgpOwogCi0gICAgSlNDOjpC
aW5kaW5nczo6TWV0aG9kTGlzdCBtZXRob2RzTmFtZWQoY29uc3QgSlNDOjpJZGVudGlmaWVyJik7
Ci0gICAgSlNDOjpCaW5kaW5nczo6RmllbGQqIGZpZWxkTmFtZWQoY29uc3QgSlNDOjpJZGVudGlm
aWVyJik7CisgICAgSlNDOjpCaW5kaW5nczo6TWV0aG9kTGlzdCBtZXRob2RzTmFtZWQoSlNDOjpQ
cm9wZXJ0eU5hbWUpOworICAgIEpTQzo6QmluZGluZ3M6OkZpZWxkKiBmaWVsZE5hbWVkKEpTQzo6
UHJvcGVydHlOYW1lKTsKIAogICAgIEpTQzo6SlNWYWx1ZSBmaWVsZFZhbHVlKEpTQzo6RXhlY1N0
YXRlKiwgY29uc3QgSlNDOjpCaW5kaW5nczo6RmllbGQqKSBjb25zdDsKICAgICB2b2lkIHNldEZp
ZWxkVmFsdWUoSlNDOjpFeGVjU3RhdGUqLCBjb25zdCBKU0M6OkJpbmRpbmdzOjpGaWVsZCosIEpT
Qzo6SlNWYWx1ZSkgY29uc3Q7CkBAIC02Niw3ICs2Niw3IEBAIHByaXZhdGU6CiAKICAgICB2aXJ0
dWFsIEpTQzo6QmluZGluZ3M6OkNsYXNzKiBnZXRDbGFzcygpIGNvbnN0OwogCi0gICAgdmlydHVh
bCBKU0M6OkpTVmFsdWUgZ2V0TWV0aG9kKEpTQzo6RXhlY1N0YXRlKiBleGVjLCBjb25zdCBKU0M6
OklkZW50aWZpZXImIHByb3BlcnR5TmFtZSk7CisgICAgdmlydHVhbCBKU0M6OkpTVmFsdWUgZ2V0
TWV0aG9kKEpTQzo6RXhlY1N0YXRlKiBleGVjLCBKU0M6OlByb3BlcnR5TmFtZSBwcm9wZXJ0eU5h
bWUpOwogICAgIHZpcnR1YWwgSlNDOjpKU1ZhbHVlIGludm9rZU1ldGhvZChKU0M6OkV4ZWNTdGF0
ZSosIEpTQzo6UnVudGltZU1ldGhvZCopOwogCiAgICAgdmlydHVhbCBib29sIHN1cHBvcnRzSW52
b2tlRGVmYXVsdE1ldGhvZCgpIGNvbnN0OwpJbmRleDogU291cmNlL1dlYktpdC9tYWMvUGx1Z2lu
cy9Ib3N0ZWQvUHJveHlJbnN0YW5jZS5tbQo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2ViS2l0L21h
Yy9QbHVnaW5zL0hvc3RlZC9Qcm94eUluc3RhbmNlLm1tCShyZXZpc2lvbiAxMTY2NjcpCisrKyBT
b3VyY2UvV2ViS2l0L21hYy9QbHVnaW5zL0hvc3RlZC9Qcm94eUluc3RhbmNlLm1tCSh3b3JraW5n
IGNvcHkpCkBAIC01MCwxNiArNTAsMTYgQEAgbmFtZXNwYWNlIFdlYktpdCB7CiAKIGNsYXNzIFBy
b3h5Q2xhc3MgOiBwdWJsaWMgSlNDOjpCaW5kaW5nczo6Q2xhc3MgewogcHJpdmF0ZToKLSAgICB2
aXJ0dWFsIE1ldGhvZExpc3QgbWV0aG9kc05hbWVkKGNvbnN0IElkZW50aWZpZXImLCBJbnN0YW5j
ZSopIGNvbnN0OwotICAgIHZpcnR1YWwgRmllbGQqIGZpZWxkTmFtZWQoY29uc3QgSWRlbnRpZmll
ciYsIEluc3RhbmNlKikgY29uc3Q7CisgICAgdmlydHVhbCBNZXRob2RMaXN0IG1ldGhvZHNOYW1l
ZChQcm9wZXJ0eU5hbWUsIEluc3RhbmNlKikgY29uc3Q7CisgICAgdmlydHVhbCBGaWVsZCogZmll
bGROYW1lZChQcm9wZXJ0eU5hbWUsIEluc3RhbmNlKikgY29uc3Q7CiB9OwogCi1NZXRob2RMaXN0
IFByb3h5Q2xhc3M6Om1ldGhvZHNOYW1lZChjb25zdCBJZGVudGlmaWVyJiBpZGVudGlmaWVyLCBJ
bnN0YW5jZSogaW5zdGFuY2UpIGNvbnN0CitNZXRob2RMaXN0IFByb3h5Q2xhc3M6Om1ldGhvZHNO
YW1lZChQcm9wZXJ0eU5hbWUgaWRlbnRpZmllciwgSW5zdGFuY2UqIGluc3RhbmNlKSBjb25zdAog
ewogICAgIHJldHVybiBzdGF0aWNfY2FzdDxQcm94eUluc3RhbmNlKj4oaW5zdGFuY2UpLT5tZXRo
b2RzTmFtZWQoaWRlbnRpZmllcik7CiB9CiAKLUZpZWxkKiBQcm94eUNsYXNzOjpmaWVsZE5hbWVk
KGNvbnN0IElkZW50aWZpZXImIGlkZW50aWZpZXIsIEluc3RhbmNlKiBpbnN0YW5jZSkgY29uc3QK
K0ZpZWxkKiBQcm94eUNsYXNzOjpmaWVsZE5hbWVkKFByb3BlcnR5TmFtZSBpZGVudGlmaWVyLCBJ
bnN0YW5jZSogaW5zdGFuY2UpIGNvbnN0CiB7CiAgICAgcmV0dXJuIHN0YXRpY19jYXN0PFByb3h5
SW5zdGFuY2UqPihpbnN0YW5jZSktPmZpZWxkTmFtZWQoaWRlbnRpZmllcik7CiB9CkBAIC0xODEs
NyArMTgxLDcgQEAgY2xhc3MgUHJveHlSdW50aW1lTWV0aG9kIDogcHVibGljIFJ1bnRpbQogcHVi
bGljOgogICAgIHR5cGVkZWYgUnVudGltZU1ldGhvZCBCYXNlOwogCi0gICAgc3RhdGljIFByb3h5
UnVudGltZU1ldGhvZCogY3JlYXRlKEV4ZWNTdGF0ZSogZXhlYywgSlNHbG9iYWxPYmplY3QqIGds
b2JhbE9iamVjdCwgY29uc3QgSWRlbnRpZmllciYgbmFtZSwgQmluZGluZ3M6Ok1ldGhvZExpc3Qm
IGxpc3QpCisgICAgc3RhdGljIFByb3h5UnVudGltZU1ldGhvZCogY3JlYXRlKEV4ZWNTdGF0ZSog
ZXhlYywgSlNHbG9iYWxPYmplY3QqIGdsb2JhbE9iamVjdCwgY29uc3QgVVN0cmluZyYgbmFtZSwg
QmluZGluZ3M6Ok1ldGhvZExpc3QmIGxpc3QpCiAgICAgewogICAgICAgICAvLyBGSVhNRTogZGVw
cmVjYXRlZEdldERPTVN0cnVjdHVyZSB1c2VzIHRoZSBwcm90b3R5cGUgb2ZmIG9mIHRoZSB3cm9u
ZyBnbG9iYWwgb2JqZWN0CiAgICAgICAgIC8vIGV4ZWMtZ2xvYmFsRGF0YSgpIGlzIGFsc28gbGlr
ZWx5IHdyb25nLgpAQCAtMjA0LDcgKzIwNCw3IEBAIHByaXZhdGU6CiAgICAgewogICAgIH0KIAot
ICAgIHZvaWQgZmluaXNoQ3JlYXRpb24oSlNHbG9iYWxEYXRhJiBnbG9iYWxEYXRhLCBjb25zdCBJ
ZGVudGlmaWVyJiBuYW1lKQorICAgIHZvaWQgZmluaXNoQ3JlYXRpb24oSlNHbG9iYWxEYXRhJiBn
bG9iYWxEYXRhLCBjb25zdCBVU3RyaW5nJiBuYW1lKQogICAgIHsKICAgICAgICAgQmFzZTo6Zmlu
aXNoQ3JlYXRpb24oZ2xvYmFsRGF0YSwgbmFtZSk7CiAgICAgICAgIEFTU0VSVChpbmhlcml0cygm
c19pbmZvKSk7CkBAIC0yMTMsMTAgKzIxMywxMCBAQCBwcml2YXRlOgogCiBjb25zdCBDbGFzc0lu
Zm8gUHJveHlSdW50aW1lTWV0aG9kOjpzX2luZm8gPSB7ICJQcm94eVJ1bnRpbWVNZXRob2QiLCAm
UnVudGltZU1ldGhvZDo6c19pbmZvLCAwLCAwLCBDUkVBVEVfTUVUSE9EX1RBQkxFKFByb3h5UnVu
dGltZU1ldGhvZCkgfTsKIAotSlNWYWx1ZSBQcm94eUluc3RhbmNlOjpnZXRNZXRob2QoSlNDOjpF
eGVjU3RhdGUqIGV4ZWMsIGNvbnN0IEpTQzo6SWRlbnRpZmllciYgcHJvcGVydHlOYW1lKQorSlNW
YWx1ZSBQcm94eUluc3RhbmNlOjpnZXRNZXRob2QoSlNDOjpFeGVjU3RhdGUqIGV4ZWMsIFByb3Bl
cnR5TmFtZSBwcm9wZXJ0eU5hbWUpCiB7CiAgICAgTWV0aG9kTGlzdCBtZXRob2RMaXN0ID0gZ2V0
Q2xhc3MoKS0+bWV0aG9kc05hbWVkKHByb3BlcnR5TmFtZSwgdGhpcyk7Ci0gICAgcmV0dXJuIFBy
b3h5UnVudGltZU1ldGhvZDo6Y3JlYXRlKGV4ZWMsIGV4ZWMtPmxleGljYWxHbG9iYWxPYmplY3Qo
KSwgcHJvcGVydHlOYW1lLCBtZXRob2RMaXN0KTsKKyAgICByZXR1cm4gUHJveHlSdW50aW1lTWV0
aG9kOjpjcmVhdGUoZXhlYywgZXhlYy0+bGV4aWNhbEdsb2JhbE9iamVjdCgpLCBwcm9wZXJ0eU5h
bWUuaW1wbCgpLCBtZXRob2RMaXN0KTsKIH0KIAogSlNWYWx1ZSBQcm94eUluc3RhbmNlOjppbnZv
a2VNZXRob2QoRXhlY1N0YXRlKiBleGVjLCBKU0M6OlJ1bnRpbWVNZXRob2QqIHJ1bnRpbWVNZXRo
b2QpCkBAIC0zNDYsNyArMzQ2LDcgQEAgdm9pZCBQcm94eUluc3RhbmNlOjpnZXRQcm9wZXJ0eU5h
bWVzKEV4ZQogICAgIH0KIH0KIAotTWV0aG9kTGlzdCBQcm94eUluc3RhbmNlOjptZXRob2RzTmFt
ZWQoY29uc3QgSWRlbnRpZmllciYgaWRlbnRpZmllcikKK01ldGhvZExpc3QgUHJveHlJbnN0YW5j
ZTo6bWV0aG9kc05hbWVkKFByb3BlcnR5TmFtZSBpZGVudGlmaWVyKQogewogICAgIGlmICghbV9p
bnN0YW5jZVByb3h5KQogICAgICAgICByZXR1cm4gTWV0aG9kTGlzdCgpOwpAQCAtMzYwLDcgKzM2
MCw3IEBAIE1ldGhvZExpc3QgUHJveHlJbnN0YW5jZTo6bWV0aG9kc05hbWVkKGMKICAgICAgICAg
cmV0dXJuIG1ldGhvZExpc3Q7CiAgICAgfQogICAgIAotICAgIHVpbnQ2NF90IG1ldGhvZE5hbWUg
PSByZWludGVycHJldF9jYXN0PHVpbnQ2NF90PihfTlBOX0dldFN0cmluZ0lkZW50aWZpZXIoaWRl
bnRpZmllci5hc2NpaSgpLmRhdGEoKSkpOworICAgIHVpbnQ2NF90IG1ldGhvZE5hbWUgPSByZWlu
dGVycHJldF9jYXN0PHVpbnQ2NF90PihfTlBOX0dldFN0cmluZ0lkZW50aWZpZXIoaWRlbnRpZmll
ci51c3RyaW5nKCkuYXNjaWkoKS5kYXRhKCkpKTsKICAgICB1aW50MzJfdCByZXF1ZXN0SUQgPSBt
X2luc3RhbmNlUHJveHktPm5leHRSZXF1ZXN0SUQoKTsKICAgICAKICAgICBpZiAoX1dLUEhOUE9i
amVjdEhhc01ldGhvZChtX2luc3RhbmNlUHJveHktPmhvc3RQcm94eSgpLT5wb3J0KCksCkBAIC0z
ODYsNyArMzg2LDcgQEAgTWV0aG9kTGlzdCBQcm94eUluc3RhbmNlOjptZXRob2RzTmFtZWQoYwog
ICAgIHJldHVybiBtZXRob2RMaXN0OwogfQogCi1GaWVsZCogUHJveHlJbnN0YW5jZTo6ZmllbGRO
YW1lZChjb25zdCBJZGVudGlmaWVyJiBpZGVudGlmaWVyKQorRmllbGQqIFByb3h5SW5zdGFuY2U6
OmZpZWxkTmFtZWQoUHJvcGVydHlOYW1lIGlkZW50aWZpZXIpCiB7CiAgICAgaWYgKCFtX2luc3Rh
bmNlUHJveHkpCiAgICAgICAgIHJldHVybiAwOwpAQCAtMzk2LDcgKzM5Niw3IEBAIEZpZWxkKiBQ
cm94eUluc3RhbmNlOjpmaWVsZE5hbWVkKGNvbnN0IEkKICAgICBpZiAoZXhpc3RpbmdNYXBFbnRy
eSAhPSBtX2ZpZWxkcy5lbmQoKSkKICAgICAgICAgcmV0dXJuIGV4aXN0aW5nTWFwRW50cnktPnNl
Y29uZDsKICAgICAKLSAgICB1aW50NjRfdCBwcm9wZXJ0eU5hbWUgPSByZWludGVycHJldF9jYXN0
PHVpbnQ2NF90PihfTlBOX0dldFN0cmluZ0lkZW50aWZpZXIoaWRlbnRpZmllci5hc2NpaSgpLmRh
dGEoKSkpOworICAgIHVpbnQ2NF90IHByb3BlcnR5TmFtZSA9IHJlaW50ZXJwcmV0X2Nhc3Q8dWlu
dDY0X3Q+KF9OUE5fR2V0U3RyaW5nSWRlbnRpZmllcihpZGVudGlmaWVyLnVzdHJpbmcoKS5hc2Np
aSgpLmRhdGEoKSkpOwogICAgIHVpbnQzMl90IHJlcXVlc3RJRCA9IG1faW5zdGFuY2VQcm94eS0+
bmV4dFJlcXVlc3RJRCgpOwogICAgIAogICAgIGlmIChfV0tQSE5QT2JqZWN0SGFzUHJvcGVydHko
bV9pbnN0YW5jZVByb3h5LT5ob3N0UHJveHkoKS0+cG9ydCgpLAo=
</data>
<flag name="review"
          id="147618"
          type_id="1"
          status="+"
          setter="ggaren"
    />
    <flag name="commit-queue"
          id="147628"
          type_id="3"
          status="-"
          setter="buildbot"
    />
          </attachment>
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>141484</attachid>
            <date>2012-05-11 13:29:35 -0700</date>
            <delta_ts>2012-05-11 13:45:05 -0700</delta_ts>
            <desc>With syntax checker fixes</desc>
            <filename>PropertyName.6.patch</filename>
            <type>text/plain</type>
            <size>426063</size>
            <attacher name="Gavin Barraclough">barraclough</attacher>
            
              <data encoding="base64">SW5kZXg6IFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9DaGFuZ2VMb2cKPT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291
cmNlL0phdmFTY3JpcHRDb3JlL0NoYW5nZUxvZwkocmV2aXNpb24gMTE2NzkyKQorKysgU291cmNl
L0phdmFTY3JpcHRDb3JlL0NoYW5nZUxvZwkod29ya2luZyBjb3B5KQpAQCAtMSwzICsxLDM4OCBA
QAorMjAxMi0wNS0xMSAgR2F2aW4gQmFycmFjbG91Z2ggIDxiYXJyYWNsb3VnaEBhcHBsZS5jb20+
CisKKyAgICAgICAgSW50cm9kdWNlIFByb3BlcnR5TmFtZSBjbGFzcworICAgICAgICBodHRwczov
L2J1Z3Mud2Via2l0Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9ODYyNDEKKworICAgICAgICBSZXZpZXdl
ZCBieSBOT0JPRFkgKE9PUFMhKS4KKworICAgICAgICBSZXBsYWNlICdjb25zdCBJZGVudGlmaWVy
JicgYXJndW1lbnRzIHRvIGZ1bmN0aW9ucyBhY2Nlc3Npbmcgb2JqZWN0IHByb3BlcnRpZXMgd2l0
aCBhIG5ldyAnUHJvcGVydHlOYW1lJyB0eXBlLgorICAgICAgICBUaGlzIGNoYW5nZSBwYXZlcyB0
aGUgd2F5IHRvIGFsbG93IGZvciBwcm9wZXJ0aWVzIGtleWVkIGJ5IHZhbHVlcyB0aGF0IGFyZSBu
b3QgSWRlbnRpZmllcnMuCisKKyAgICAgICAgVGhpcyBjaGFuZ2UgaXMgbGFyZ2VseSBhIG1lY2hh
bmljYWwgZmluZCAmIHJlcGxhY2UuCisgICAgICAgIEl0IGFsc28gY2hhbmdlcyBKU0Z1bmN0aW9u
J3MgY29uc3RydWN0b3IgdG8gdGFrZSBhIFVTdHJpbmcmIGluc3RlYWQgb2YgYW4gSWRlbnRpZmll
ciYKKyAgICAgICAgKHNpbmNlIGluIHNvbWUgY2FzZXMgd2UgY2FuIG5vIGxvbmdlciBndWFyYW50
ZWUgdGhhdCB3ZSdsbGwgaGF2ZSBhbiBJZGVudGlmaWVyKSwgYW5kCisgICAgICAgIHVuaWZpZXMg
SWRlbnRpZmllcidzIG1ldGhvZHMgdG8gb2J0YWluIGFycmF5IGluZGljZXMgb250byBQcm9wZXJ0
eU5hbWUuCisKKyAgICAgICAgVGhlIG5ldyBQcm9wZXJ0eU5hbWUgY2xhc3MgcmV0YWlucyB0aGUg
YWJpbGl0eSB0byBzdXBwb3J0IC5pbXBsKCkgYW5kIC51c3RyaW5nKCksIGJ1dAorICAgICAgICBp
biBhIGZ1dHVyZSBwYXRjaCB3ZSBtYXkgbmVlZCB0byByZXdvcmsgdGhpcywgc2luY2Ugbm90IGFs
bCBQcm9wZXJ0eU5hbWVzIHNob3VsZCBiZQorICAgICAgICBlcXVhbCBiYXNlZCBvbiB0aGVpciBz
dHJpbmcgcmVwcmVzZW50YXRpb24uCisKKyAgICAgICAgKiBBUEkvSlNDYWxsYmFja0Z1bmN0aW9u
LmNwcDoKKyAgICAgICAgKEpTQzo6SlNDYWxsYmFja0Z1bmN0aW9uOjpmaW5pc2hDcmVhdGlvbik6
CisgICAgICAgICogQVBJL0pTQ2FsbGJhY2tGdW5jdGlvbi5oOgorICAgICAgICAoSlNDYWxsYmFj
a0Z1bmN0aW9uKToKKyAgICAgICAgKEpTQzo6SlNDYWxsYmFja0Z1bmN0aW9uOjpjcmVhdGUpOgor
ICAgICAgICAqIEFQSS9KU0NhbGxiYWNrT2JqZWN0Lmg6CisgICAgICAgIChKU0NhbGxiYWNrT2Jq
ZWN0KToKKyAgICAgICAgKiBBUEkvSlNDYWxsYmFja09iamVjdEZ1bmN0aW9ucy5oOgorICAgICAg
ICAoSlNDOjo6OmdldE93blByb3BlcnR5U2xvdCk6CisgICAgICAgIChKU0M6Ojo6Z2V0T3duUHJv
cGVydHlEZXNjcmlwdG9yKToKKyAgICAgICAgKEpTQzo6OjpwdXQpOgorICAgICAgICAoSlNDOjo6
OmRlbGV0ZVByb3BlcnR5KToKKyAgICAgICAgKEpTQzo6OjpnZXRTdGF0aWNWYWx1ZSk6CisgICAg
ICAgIChKU0M6Ojo6c3RhdGljRnVuY3Rpb25HZXR0ZXIpOgorICAgICAgICAoSlNDOjo6OmNhbGxi
YWNrR2V0dGVyKToKKyAgICAgICAgKiBBUEkvSlNPYmplY3RSZWYuY3BwOgorICAgICAgICAoSlNP
YmplY3RNYWtlRnVuY3Rpb25XaXRoQ2FsbGJhY2spOgorICAgICAgICAqIEpTQ1R5cGVkQXJyYXlT
dHVicy5oOgorICAgICAgICAoSlNDKToKKyAgICAgICAgKiBKYXZhU2NyaXB0Q29yZS54Y29kZXBy
b2ovcHJvamVjdC5wYnhwcm9qOgorICAgICAgICAqIGRlYnVnZ2VyL0RlYnVnZ2VyQWN0aXZhdGlv
bi5jcHA6CisgICAgICAgIChKU0M6OkRlYnVnZ2VyQWN0aXZhdGlvbjo6Z2V0T3duUHJvcGVydHlT
bG90KToKKyAgICAgICAgKEpTQzo6RGVidWdnZXJBY3RpdmF0aW9uOjpwdXQpOgorICAgICAgICAo
SlNDOjpEZWJ1Z2dlckFjdGl2YXRpb246OnB1dERpcmVjdFZpcnR1YWwpOgorICAgICAgICAoSlND
OjpEZWJ1Z2dlckFjdGl2YXRpb246OmRlbGV0ZVByb3BlcnR5KToKKyAgICAgICAgKEpTQzo6RGVi
dWdnZXJBY3RpdmF0aW9uOjpnZXRPd25Qcm9wZXJ0eURlc2NyaXB0b3IpOgorICAgICAgICAoSlND
OjpEZWJ1Z2dlckFjdGl2YXRpb246OmRlZmluZU93blByb3BlcnR5KToKKyAgICAgICAgKiBkZWJ1
Z2dlci9EZWJ1Z2dlckFjdGl2YXRpb24uaDoKKyAgICAgICAgKERlYnVnZ2VyQWN0aXZhdGlvbik6
CisgICAgICAgICoganNjLmNwcDoKKyAgICAgICAgKEdsb2JhbE9iamVjdDo6YWRkRnVuY3Rpb24p
OgorICAgICAgICAoR2xvYmFsT2JqZWN0OjphZGRDb25zdHJ1Y3RhYmxlRnVuY3Rpb24pOgorICAg
ICAgICAqIHJ1bnRpbWUvQXJndW1lbnRzLmNwcDoKKyAgICAgICAgKEpTQzo6QXJndW1lbnRzOjpn
ZXRPd25Qcm9wZXJ0eVNsb3QpOgorICAgICAgICAoSlNDOjpBcmd1bWVudHM6OmdldE93blByb3Bl
cnR5RGVzY3JpcHRvcik6CisgICAgICAgIChKU0M6OkFyZ3VtZW50czo6cHV0KToKKyAgICAgICAg
KEpTQzo6QXJndW1lbnRzOjpkZWxldGVQcm9wZXJ0eSk6CisgICAgICAgIChKU0M6OkFyZ3VtZW50
czo6ZGVmaW5lT3duUHJvcGVydHkpOgorICAgICAgICAqIHJ1bnRpbWUvQXJndW1lbnRzLmg6Cisg
ICAgICAgIChBcmd1bWVudHMpOgorICAgICAgICAqIHJ1bnRpbWUvQXJyYXlDb25zdHJ1Y3Rvci5j
cHA6CisgICAgICAgIChKU0M6OkFycmF5Q29uc3RydWN0b3I6OmZpbmlzaENyZWF0aW9uKToKKyAg
ICAgICAgKEpTQzo6QXJyYXlDb25zdHJ1Y3Rvcjo6Z2V0T3duUHJvcGVydHlTbG90KToKKyAgICAg
ICAgKEpTQzo6QXJyYXlDb25zdHJ1Y3Rvcjo6Z2V0T3duUHJvcGVydHlEZXNjcmlwdG9yKToKKyAg
ICAgICAgKiBydW50aW1lL0FycmF5Q29uc3RydWN0b3IuaDoKKyAgICAgICAgKEFycmF5Q29uc3Ry
dWN0b3IpOgorICAgICAgICAqIHJ1bnRpbWUvQXJyYXlQcm90b3R5cGUuY3BwOgorICAgICAgICAo
SlNDOjpBcnJheVByb3RvdHlwZTo6Z2V0T3duUHJvcGVydHlTbG90KToKKyAgICAgICAgKEpTQzo6
QXJyYXlQcm90b3R5cGU6OmdldE93blByb3BlcnR5RGVzY3JpcHRvcik6CisgICAgICAgIChKU0M6
OnB1dFByb3BlcnR5KToKKyAgICAgICAgKiBydW50aW1lL0FycmF5UHJvdG90eXBlLmg6CisgICAg
ICAgIChBcnJheVByb3RvdHlwZSk6CisgICAgICAgICogcnVudGltZS9Cb29sZWFuQ29uc3RydWN0
b3IuY3BwOgorICAgICAgICAoSlNDOjpCb29sZWFuQ29uc3RydWN0b3I6OmZpbmlzaENyZWF0aW9u
KToKKyAgICAgICAgKiBydW50aW1lL0Jvb2xlYW5Qcm90b3R5cGUuY3BwOgorICAgICAgICAoSlND
OjpCb29sZWFuUHJvdG90eXBlOjpnZXRPd25Qcm9wZXJ0eVNsb3QpOgorICAgICAgICAoSlNDOjpC
b29sZWFuUHJvdG90eXBlOjpnZXRPd25Qcm9wZXJ0eURlc2NyaXB0b3IpOgorICAgICAgICAqIHJ1
bnRpbWUvQm9vbGVhblByb3RvdHlwZS5oOgorICAgICAgICAoQm9vbGVhblByb3RvdHlwZSk6Cisg
ICAgICAgICogcnVudGltZS9DbGFzc0luZm8uaDoKKyAgICAgICAgKE1ldGhvZFRhYmxlKToKKyAg
ICAgICAgKiBydW50aW1lL0RhdGVDb25zdHJ1Y3Rvci5jcHA6CisgICAgICAgIChKU0M6OkRhdGVD
b25zdHJ1Y3Rvcjo6ZmluaXNoQ3JlYXRpb24pOgorICAgICAgICAoSlNDOjpEYXRlQ29uc3RydWN0
b3I6OmdldE93blByb3BlcnR5U2xvdCk6CisgICAgICAgIChKU0M6OkRhdGVDb25zdHJ1Y3Rvcjo6
Z2V0T3duUHJvcGVydHlEZXNjcmlwdG9yKToKKyAgICAgICAgKiBydW50aW1lL0RhdGVDb25zdHJ1
Y3Rvci5oOgorICAgICAgICAoRGF0ZUNvbnN0cnVjdG9yKToKKyAgICAgICAgKiBydW50aW1lL0Rh
dGVQcm90b3R5cGUuY3BwOgorICAgICAgICAoSlNDOjpEYXRlUHJvdG90eXBlOjpnZXRPd25Qcm9w
ZXJ0eVNsb3QpOgorICAgICAgICAoSlNDOjpEYXRlUHJvdG90eXBlOjpnZXRPd25Qcm9wZXJ0eURl
c2NyaXB0b3IpOgorICAgICAgICAqIHJ1bnRpbWUvRGF0ZVByb3RvdHlwZS5oOgorICAgICAgICAo
RGF0ZVByb3RvdHlwZSk6CisgICAgICAgICogcnVudGltZS9FcnJvci5oOgorICAgICAgICAoSlND
OjpTdHJpY3RNb2RlVHlwZUVycm9yRnVuY3Rpb246OmNyZWF0ZSk6CisgICAgICAgICogcnVudGlt
ZS9FcnJvckNvbnN0cnVjdG9yLmNwcDoKKyAgICAgICAgKEpTQzo6RXJyb3JDb25zdHJ1Y3Rvcjo6
ZmluaXNoQ3JlYXRpb24pOgorICAgICAgICAqIHJ1bnRpbWUvRXJyb3JQcm90b3R5cGUuY3BwOgor
ICAgICAgICAoSlNDOjpFcnJvclByb3RvdHlwZTo6Z2V0T3duUHJvcGVydHlTbG90KToKKyAgICAg
ICAgKEpTQzo6RXJyb3JQcm90b3R5cGU6OmdldE93blByb3BlcnR5RGVzY3JpcHRvcik6CisgICAg
ICAgICogcnVudGltZS9FcnJvclByb3RvdHlwZS5oOgorICAgICAgICAoRXJyb3JQcm90b3R5cGUp
OgorICAgICAgICAqIHJ1bnRpbWUvRnVuY3Rpb25Db25zdHJ1Y3Rvci5jcHA6CisgICAgICAgIChK
U0M6OkZ1bmN0aW9uQ29uc3RydWN0b3I6OmZpbmlzaENyZWF0aW9uKToKKyAgICAgICAgKiBydW50
aW1lL0Z1bmN0aW9uUHJvdG90eXBlLmNwcDoKKyAgICAgICAgKEpTQzo6RnVuY3Rpb25Qcm90b3R5
cGU6OmZpbmlzaENyZWF0aW9uKToKKyAgICAgICAgKEpTQzo6RnVuY3Rpb25Qcm90b3R5cGU6OmFk
ZEZ1bmN0aW9uUHJvcGVydGllcyk6CisgICAgICAgIChKU0M6OmZ1bmN0aW9uUHJvdG9GdW5jQmlu
ZCk6CisgICAgICAgICogcnVudGltZS9GdW5jdGlvblByb3RvdHlwZS5oOgorICAgICAgICAoSlND
OjpGdW5jdGlvblByb3RvdHlwZTo6Y3JlYXRlKToKKyAgICAgICAgKEZ1bmN0aW9uUHJvdG90eXBl
KToKKyAgICAgICAgKiBydW50aW1lL0lkZW50aWZpZXIuY3BwOgorICAgICAgICAoSlNDKToKKyAg
ICAgICAgKiBydW50aW1lL0lkZW50aWZpZXIuaDoKKyAgICAgICAgKElkZW50aWZpZXIpOgorICAg
ICAgICAqIHJ1bnRpbWUvSW50ZXJuYWxGdW5jdGlvbi5jcHA6CisgICAgICAgIChKU0M6OkludGVy
bmFsRnVuY3Rpb246OmZpbmlzaENyZWF0aW9uKToKKyAgICAgICAgKiBydW50aW1lL0ludGVybmFs
RnVuY3Rpb24uaDoKKyAgICAgICAgKEludGVybmFsRnVuY3Rpb24pOgorICAgICAgICAqIHJ1bnRp
bWUvSlNBY3RpdmF0aW9uLmNwcDoKKyAgICAgICAgKEpTQzo6SlNBY3RpdmF0aW9uOjpzeW1ib2xU
YWJsZUdldCk6CisgICAgICAgIChKU0M6OkpTQWN0aXZhdGlvbjo6c3ltYm9sVGFibGVQdXQpOgor
ICAgICAgICAoSlNDOjpKU0FjdGl2YXRpb246OnN5bWJvbFRhYmxlUHV0V2l0aEF0dHJpYnV0ZXMp
OgorICAgICAgICAoSlNDOjpKU0FjdGl2YXRpb246OmdldE93blByb3BlcnR5U2xvdCk6CisgICAg
ICAgIChKU0M6OkpTQWN0aXZhdGlvbjo6cHV0KToKKyAgICAgICAgKEpTQzo6SlNBY3RpdmF0aW9u
OjpwdXREaXJlY3RWaXJ0dWFsKToKKyAgICAgICAgKEpTQzo6SlNBY3RpdmF0aW9uOjpkZWxldGVQ
cm9wZXJ0eSk6CisgICAgICAgIChKU0M6OkpTQWN0aXZhdGlvbjo6YXJndW1lbnRzR2V0dGVyKToK
KyAgICAgICAgKiBydW50aW1lL0pTQWN0aXZhdGlvbi5oOgorICAgICAgICAoSlNBY3RpdmF0aW9u
KToKKyAgICAgICAgKiBydW50aW1lL0pTQXJyYXkuY3BwOgorICAgICAgICAoSlNDOjpKU0FycmF5
OjpkZWZpbmVPd25Qcm9wZXJ0eSk6CisgICAgICAgIChKU0M6OkpTQXJyYXk6OmdldE93blByb3Bl
cnR5U2xvdCk6CisgICAgICAgIChKU0M6OkpTQXJyYXk6OmdldE93blByb3BlcnR5RGVzY3JpcHRv
cik6CisgICAgICAgIChKU0M6OkpTQXJyYXk6OnB1dCk6CisgICAgICAgIChKU0M6OkpTQXJyYXk6
OmRlbGV0ZVByb3BlcnR5KToKKyAgICAgICAgKiBydW50aW1lL0pTQXJyYXkuaDoKKyAgICAgICAg
KEpTQXJyYXkpOgorICAgICAgICAoSlNDKToKKyAgICAgICAgKiBydW50aW1lL0pTQm91bmRGdW5j
dGlvbi5jcHA6CisgICAgICAgIChKU0M6OkpTQm91bmRGdW5jdGlvbjo6Y3JlYXRlKToKKyAgICAg
ICAgKEpTQzo6SlNCb3VuZEZ1bmN0aW9uOjpmaW5pc2hDcmVhdGlvbik6CisgICAgICAgICogcnVu
dGltZS9KU0JvdW5kRnVuY3Rpb24uaDoKKyAgICAgICAgKEpTQm91bmRGdW5jdGlvbik6CisgICAg
ICAgICogcnVudGltZS9KU0NlbGwuY3BwOgorICAgICAgICAoSlNDOjpKU0NlbGw6OmdldE93blBy
b3BlcnR5U2xvdCk6CisgICAgICAgIChKU0M6OkpTQ2VsbDo6cHV0KToKKyAgICAgICAgKEpTQzo6
SlNDZWxsOjpkZWxldGVQcm9wZXJ0eSk6CisgICAgICAgIChKU0M6OkpTQ2VsbDo6cHV0RGlyZWN0
VmlydHVhbCk6CisgICAgICAgIChKU0M6OkpTQ2VsbDo6ZGVmaW5lT3duUHJvcGVydHkpOgorICAg
ICAgICAoSlNDOjpKU0NlbGw6OmdldE93blByb3BlcnR5RGVzY3JpcHRvcik6CisgICAgICAgICog
cnVudGltZS9KU0NlbGwuaDoKKyAgICAgICAgKEpTQ2VsbCk6CisgICAgICAgICogcnVudGltZS9K
U0Z1bmN0aW9uLmNwcDoKKyAgICAgICAgKEpTQzo6SlNGdW5jdGlvbjo6Y3JlYXRlKToKKyAgICAg
ICAgKEpTQzo6SlNGdW5jdGlvbjo6ZmluaXNoQ3JlYXRpb24pOgorICAgICAgICAoSlNDOjpKU0Z1
bmN0aW9uOjphcmd1bWVudHNHZXR0ZXIpOgorICAgICAgICAoSlNDOjpKU0Z1bmN0aW9uOjpjYWxs
ZXJHZXR0ZXIpOgorICAgICAgICAoSlNDOjpKU0Z1bmN0aW9uOjpsZW5ndGhHZXR0ZXIpOgorICAg
ICAgICAoSlNDOjpKU0Z1bmN0aW9uOjpnZXRPd25Qcm9wZXJ0eVNsb3QpOgorICAgICAgICAoSlND
OjpKU0Z1bmN0aW9uOjpnZXRPd25Qcm9wZXJ0eURlc2NyaXB0b3IpOgorICAgICAgICAoSlNDOjpK
U0Z1bmN0aW9uOjpwdXQpOgorICAgICAgICAoSlNDOjpKU0Z1bmN0aW9uOjpkZWxldGVQcm9wZXJ0
eSk6CisgICAgICAgIChKU0M6OkpTRnVuY3Rpb246OmRlZmluZU93blByb3BlcnR5KToKKyAgICAg
ICAgKEpTQzo6Z2V0Q2FsY3VsYXRlZERpc3BsYXlOYW1lKToKKyAgICAgICAgKiBydW50aW1lL0pT
RnVuY3Rpb24uaDoKKyAgICAgICAgKEpTRnVuY3Rpb24pOgorICAgICAgICAqIHJ1bnRpbWUvSlNH
bG9iYWxPYmplY3QuY3BwOgorICAgICAgICAoSlNDOjpKU0dsb2JhbE9iamVjdDo6cHV0KToKKyAg
ICAgICAgKEpTQzo6SlNHbG9iYWxPYmplY3Q6OnB1dERpcmVjdFZpcnR1YWwpOgorICAgICAgICAo
SlNDOjpKU0dsb2JhbE9iamVjdDo6ZGVmaW5lT3duUHJvcGVydHkpOgorICAgICAgICAoSlNDOjpK
U0dsb2JhbE9iamVjdDo6cmVzZXQpOgorICAgICAgICAoSlNDOjpKU0dsb2JhbE9iamVjdDo6Y3Jl
YXRlVGhyb3dUeXBlRXJyb3IpOgorICAgICAgICAoSlNDOjpKU0dsb2JhbE9iamVjdDo6Z2V0T3du
UHJvcGVydHlTbG90KToKKyAgICAgICAgKEpTQzo6SlNHbG9iYWxPYmplY3Q6OmdldE93blByb3Bl
cnR5RGVzY3JpcHRvcik6CisgICAgICAgICogcnVudGltZS9KU0dsb2JhbE9iamVjdC5oOgorICAg
ICAgICAoSlNHbG9iYWxPYmplY3QpOgorICAgICAgICAoSlNDOjpKU0dsb2JhbE9iamVjdDo6aGFz
T3duUHJvcGVydHlGb3JXcml0ZSk6CisgICAgICAgIChKU0M6OkpTR2xvYmFsT2JqZWN0OjpzeW1i
b2xUYWJsZUhhc1Byb3BlcnR5KToKKyAgICAgICAgKiBydW50aW1lL0pTTm90QW5PYmplY3QuY3Bw
OgorICAgICAgICAoSlNDOjpKU05vdEFuT2JqZWN0OjpnZXRPd25Qcm9wZXJ0eVNsb3QpOgorICAg
ICAgICAoSlNDOjpKU05vdEFuT2JqZWN0OjpnZXRPd25Qcm9wZXJ0eURlc2NyaXB0b3IpOgorICAg
ICAgICAoSlNDOjpKU05vdEFuT2JqZWN0OjpwdXQpOgorICAgICAgICAoSlNDOjpKU05vdEFuT2Jq
ZWN0OjpkZWxldGVQcm9wZXJ0eSk6CisgICAgICAgICogcnVudGltZS9KU05vdEFuT2JqZWN0Lmg6
CisgICAgICAgIChKU05vdEFuT2JqZWN0KToKKyAgICAgICAgKiBydW50aW1lL0pTT05PYmplY3Qu
Y3BwOgorICAgICAgICAoSlNDOjpKU09OT2JqZWN0OjpnZXRPd25Qcm9wZXJ0eVNsb3QpOgorICAg
ICAgICAoSlNDOjpKU09OT2JqZWN0OjpnZXRPd25Qcm9wZXJ0eURlc2NyaXB0b3IpOgorICAgICAg
ICAqIHJ1bnRpbWUvSlNPTk9iamVjdC5oOgorICAgICAgICAoSlNPTk9iamVjdCk6CisgICAgICAg
ICogcnVudGltZS9KU09iamVjdC5jcHA6CisgICAgICAgIChKU0M6OkpTT2JqZWN0OjpwdXQpOgor
ICAgICAgICAoSlNDOjpKU09iamVjdDo6cHV0RGlyZWN0VmlydHVhbCk6CisgICAgICAgIChKU0M6
OkpTT2JqZWN0OjpwdXREaXJlY3RBY2Nlc3Nvcik6CisgICAgICAgIChKU0M6OkpTT2JqZWN0Ojpo
YXNQcm9wZXJ0eSk6CisgICAgICAgIChKU0M6OkpTT2JqZWN0OjpkZWxldGVQcm9wZXJ0eSk6Cisg
ICAgICAgIChKU0M6OkpTT2JqZWN0OjpoYXNPd25Qcm9wZXJ0eSk6CisgICAgICAgIChKU0M6OmNh
bGxEZWZhdWx0VmFsdWVGdW5jdGlvbik6CisgICAgICAgIChKU0M6OkpTT2JqZWN0OjpmaW5kUHJv
cGVydHlIYXNoRW50cnkpOgorICAgICAgICAoSlNDOjpKU09iamVjdDo6Z2V0UHJvcGVydHlTcGVj
aWZpY1ZhbHVlKToKKyAgICAgICAgKEpTQzo6SlNPYmplY3Q6OnJlbW92ZURpcmVjdCk6CisgICAg
ICAgIChKU0M6OkpTT2JqZWN0OjpnZXRPd25Qcm9wZXJ0eURlc2NyaXB0b3IpOgorICAgICAgICAo
SlNDOjpKU09iamVjdDo6Z2V0UHJvcGVydHlEZXNjcmlwdG9yKToKKyAgICAgICAgKEpTQzo6cHV0
RGVzY3JpcHRvcik6CisgICAgICAgIChKU0M6OkpTT2JqZWN0OjpkZWZpbmVPd25Qcm9wZXJ0eSk6
CisgICAgICAgICogcnVudGltZS9KU09iamVjdC5oOgorICAgICAgICAoSlNPYmplY3QpOgorICAg
ICAgICAoSlNDOjpKU09iamVjdDo6Z2V0RGlyZWN0KToKKyAgICAgICAgKEpTQzo6SlNPYmplY3Q6
OmdldERpcmVjdExvY2F0aW9uKToKKyAgICAgICAgKEpTQzo6SlNPYmplY3Q6OmlubGluZUdldE93
blByb3BlcnR5U2xvdCk6CisgICAgICAgIChKU0M6OkpTT2JqZWN0OjpnZXRPd25Qcm9wZXJ0eVNs
b3QpOgorICAgICAgICAoSlNDOjpKU0NlbGw6OmZhc3RHZXRPd25Qcm9wZXJ0eVNsb3QpOgorICAg
ICAgICAoSlNDOjpKU09iamVjdDo6Z2V0UHJvcGVydHlTbG90KToKKyAgICAgICAgKEpTQzo6SlNP
YmplY3Q6OmdldCk6CisgICAgICAgIChKU0M6OkpTT2JqZWN0OjpwdXREaXJlY3RJbnRlcm5hbCk6
CisgICAgICAgIChKU0M6OkpTT2JqZWN0OjpwdXRPd25EYXRhUHJvcGVydHkpOgorICAgICAgICAo
SlNDOjpKU09iamVjdDo6cHV0RGlyZWN0KToKKyAgICAgICAgKEpTQzo6SlNPYmplY3Q6OnB1dERp
cmVjdFdpdGhvdXRUcmFuc2l0aW9uKToKKyAgICAgICAgKEpTQzo6SlNWYWx1ZTo6Z2V0KToKKyAg
ICAgICAgKEpTQzo6SlNWYWx1ZTo6cHV0KToKKyAgICAgICAgKiBydW50aW1lL0pTU3RhdGljU2Nv
cGVPYmplY3QuY3BwOgorICAgICAgICAoSlNDOjpKU1N0YXRpY1Njb3BlT2JqZWN0OjpwdXQpOgor
ICAgICAgICAoSlNDOjpKU1N0YXRpY1Njb3BlT2JqZWN0OjpwdXREaXJlY3RWaXJ0dWFsKToKKyAg
ICAgICAgKEpTQzo6SlNTdGF0aWNTY29wZU9iamVjdDo6Z2V0T3duUHJvcGVydHlTbG90KToKKyAg
ICAgICAgKiBydW50aW1lL0pTU3RhdGljU2NvcGVPYmplY3QuaDoKKyAgICAgICAgKEpTU3RhdGlj
U2NvcGVPYmplY3QpOgorICAgICAgICAqIHJ1bnRpbWUvSlNTdHJpbmcuY3BwOgorICAgICAgICAo
SlNDOjpKU1N0cmluZzo6Z2V0T3duUHJvcGVydHlTbG90KToKKyAgICAgICAgKEpTQzo6SlNTdHJp
bmc6OmdldFN0cmluZ1Byb3BlcnR5RGVzY3JpcHRvcik6CisgICAgICAgICogcnVudGltZS9KU1N0
cmluZy5oOgorICAgICAgICAoSlNTdHJpbmcpOgorICAgICAgICAoSlNDOjpKU1N0cmluZzo6Z2V0
U3RyaW5nUHJvcGVydHlTbG90KToKKyAgICAgICAgKiBydW50aW1lL0pTVmFsdWUuY3BwOgorICAg
ICAgICAoSlNDOjpKU1ZhbHVlOjpwdXRUb1ByaW1pdGl2ZSk6CisgICAgICAgICogcnVudGltZS9K
U1ZhbHVlLmg6CisgICAgICAgIChKU0MpOgorICAgICAgICAoSlNWYWx1ZSk6CisgICAgICAgICog
cnVudGltZS9KU1ZhcmlhYmxlT2JqZWN0LmNwcDoKKyAgICAgICAgKEpTQzo6SlNWYXJpYWJsZU9i
amVjdDo6ZGVsZXRlUHJvcGVydHkpOgorICAgICAgICAoSlNDOjpKU1ZhcmlhYmxlT2JqZWN0Ojpz
eW1ib2xUYWJsZUdldCk6CisgICAgICAgIChKU0M6OkpTVmFyaWFibGVPYmplY3Q6OnB1dERpcmVj
dFZpcnR1YWwpOgorICAgICAgICAqIHJ1bnRpbWUvSlNWYXJpYWJsZU9iamVjdC5oOgorICAgICAg
ICAoSlNWYXJpYWJsZU9iamVjdCk6CisgICAgICAgIChKU0M6OkpTVmFyaWFibGVPYmplY3Q6OnN5
bWJvbFRhYmxlR2V0KToKKyAgICAgICAgKEpTQzo6SlNWYXJpYWJsZU9iamVjdDo6c3ltYm9sVGFi
bGVQdXQpOgorICAgICAgICAoSlNDOjpKU1ZhcmlhYmxlT2JqZWN0OjpzeW1ib2xUYWJsZVB1dFdp
dGhBdHRyaWJ1dGVzKToKKyAgICAgICAgKiBydW50aW1lL0xvb2t1cC5jcHA6CisgICAgICAgIChK
U0M6OnNldFVwU3RhdGljRnVuY3Rpb25TbG90KToKKyAgICAgICAgKiBydW50aW1lL0xvb2t1cC5o
OgorICAgICAgICAoSlNDOjpIYXNoVGFibGU6OmVudHJ5KToKKyAgICAgICAgKEpTQyk6CisgICAg
ICAgIChKU0M6OmdldFN0YXRpY1Byb3BlcnR5U2xvdCk6CisgICAgICAgIChKU0M6OmdldFN0YXRp
Y1Byb3BlcnR5RGVzY3JpcHRvcik6CisgICAgICAgIChKU0M6OmdldFN0YXRpY0Z1bmN0aW9uU2xv
dCk6CisgICAgICAgIChKU0M6OmdldFN0YXRpY0Z1bmN0aW9uRGVzY3JpcHRvcik6CisgICAgICAg
IChKU0M6OmdldFN0YXRpY1ZhbHVlU2xvdCk6CisgICAgICAgIChKU0M6OmdldFN0YXRpY1ZhbHVl
RGVzY3JpcHRvcik6CisgICAgICAgIChKU0M6Omxvb2t1cFB1dCk6CisgICAgICAgICogcnVudGlt
ZS9NYXRoT2JqZWN0LmNwcDoKKyAgICAgICAgKEpTQzo6TWF0aE9iamVjdDo6Z2V0T3duUHJvcGVy
dHlTbG90KToKKyAgICAgICAgKEpTQzo6TWF0aE9iamVjdDo6Z2V0T3duUHJvcGVydHlEZXNjcmlw
dG9yKToKKyAgICAgICAgKiBydW50aW1lL01hdGhPYmplY3QuaDoKKyAgICAgICAgKE1hdGhPYmpl
Y3QpOgorICAgICAgICAqIHJ1bnRpbWUvTmF0aXZlRXJyb3JDb25zdHJ1Y3Rvci5oOgorICAgICAg
ICAoSlNDOjpOYXRpdmVFcnJvckNvbnN0cnVjdG9yOjpmaW5pc2hDcmVhdGlvbik6CisgICAgICAg
ICogcnVudGltZS9OdW1iZXJDb25zdHJ1Y3Rvci5jcHA6CisgICAgICAgIChKU0MpOgorICAgICAg
ICAoSlNDOjpOdW1iZXJDb25zdHJ1Y3Rvcjo6ZmluaXNoQ3JlYXRpb24pOgorICAgICAgICAoSlND
OjpOdW1iZXJDb25zdHJ1Y3Rvcjo6Z2V0T3duUHJvcGVydHlTbG90KToKKyAgICAgICAgKEpTQzo6
TnVtYmVyQ29uc3RydWN0b3I6OmdldE93blByb3BlcnR5RGVzY3JpcHRvcik6CisgICAgICAgIChK
U0M6Ok51bWJlckNvbnN0cnVjdG9yOjpwdXQpOgorICAgICAgICAoSlNDOjpudW1iZXJDb25zdHJ1
Y3Rvck5hTlZhbHVlKToKKyAgICAgICAgKEpTQzo6bnVtYmVyQ29uc3RydWN0b3JOZWdJbmZpbml0
eSk6CisgICAgICAgIChKU0M6Om51bWJlckNvbnN0cnVjdG9yUG9zSW5maW5pdHkpOgorICAgICAg
ICAoSlNDOjpudW1iZXJDb25zdHJ1Y3Rvck1heFZhbHVlKToKKyAgICAgICAgKEpTQzo6bnVtYmVy
Q29uc3RydWN0b3JNaW5WYWx1ZSk6CisgICAgICAgICogcnVudGltZS9OdW1iZXJDb25zdHJ1Y3Rv
ci5oOgorICAgICAgICAoTnVtYmVyQ29uc3RydWN0b3IpOgorICAgICAgICAqIHJ1bnRpbWUvTnVt
YmVyUHJvdG90eXBlLmNwcDoKKyAgICAgICAgKEpTQzo6TnVtYmVyUHJvdG90eXBlOjpnZXRPd25Q
cm9wZXJ0eVNsb3QpOgorICAgICAgICAoSlNDOjpOdW1iZXJQcm90b3R5cGU6OmdldE93blByb3Bl
cnR5RGVzY3JpcHRvcik6CisgICAgICAgICogcnVudGltZS9OdW1iZXJQcm90b3R5cGUuaDoKKyAg
ICAgICAgKE51bWJlclByb3RvdHlwZSk6CisgICAgICAgICogcnVudGltZS9PYmplY3RDb25zdHJ1
Y3Rvci5jcHA6CisgICAgICAgIChKU0M6Ok9iamVjdENvbnN0cnVjdG9yOjpmaW5pc2hDcmVhdGlv
bik6CisgICAgICAgIChKU0M6Ok9iamVjdENvbnN0cnVjdG9yOjpnZXRPd25Qcm9wZXJ0eVNsb3Qp
OgorICAgICAgICAoSlNDOjpPYmplY3RDb25zdHJ1Y3Rvcjo6Z2V0T3duUHJvcGVydHlEZXNjcmlw
dG9yKToKKyAgICAgICAgKiBydW50aW1lL09iamVjdENvbnN0cnVjdG9yLmg6CisgICAgICAgIChP
YmplY3RDb25zdHJ1Y3Rvcik6CisgICAgICAgICogcnVudGltZS9PYmplY3RQcm90b3R5cGUuY3Bw
OgorICAgICAgICAoSlNDOjpPYmplY3RQcm90b3R5cGU6OnB1dCk6CisgICAgICAgIChKU0M6Ok9i
amVjdFByb3RvdHlwZTo6ZGVmaW5lT3duUHJvcGVydHkpOgorICAgICAgICAoSlNDOjpPYmplY3RQ
cm90b3R5cGU6OmdldE93blByb3BlcnR5U2xvdCk6CisgICAgICAgIChKU0M6Ok9iamVjdFByb3Rv
dHlwZTo6Z2V0T3duUHJvcGVydHlEZXNjcmlwdG9yKToKKyAgICAgICAgKiBydW50aW1lL09iamVj
dFByb3RvdHlwZS5oOgorICAgICAgICAoT2JqZWN0UHJvdG90eXBlKToKKyAgICAgICAgKiBydW50
aW1lL1Byb3BlcnR5U2xvdC5oOgorICAgICAgICAoUHJvcGVydHlTbG90KToKKyAgICAgICAgKEpT
Qzo6UHJvcGVydHlTbG90OjpnZXRWYWx1ZSk6CisgICAgICAgICogcnVudGltZS9SZWdFeHBDb25z
dHJ1Y3Rvci5jcHA6CisgICAgICAgIChKU0MpOgorICAgICAgICAoSlNDOjpSZWdFeHBDb25zdHJ1
Y3Rvcjo6ZmluaXNoQ3JlYXRpb24pOgorICAgICAgICAoSlNDOjpSZWdFeHBDb25zdHJ1Y3Rvcjo6
Z2V0T3duUHJvcGVydHlTbG90KToKKyAgICAgICAgKEpTQzo6UmVnRXhwQ29uc3RydWN0b3I6Omdl
dE93blByb3BlcnR5RGVzY3JpcHRvcik6CisgICAgICAgIChKU0M6OnJlZ0V4cENvbnN0cnVjdG9y
RG9sbGFyMSk6CisgICAgICAgIChKU0M6OnJlZ0V4cENvbnN0cnVjdG9yRG9sbGFyMik6CisgICAg
ICAgIChKU0M6OnJlZ0V4cENvbnN0cnVjdG9yRG9sbGFyMyk6CisgICAgICAgIChKU0M6OnJlZ0V4
cENvbnN0cnVjdG9yRG9sbGFyNCk6CisgICAgICAgIChKU0M6OnJlZ0V4cENvbnN0cnVjdG9yRG9s
bGFyNSk6CisgICAgICAgIChKU0M6OnJlZ0V4cENvbnN0cnVjdG9yRG9sbGFyNik6CisgICAgICAg
IChKU0M6OnJlZ0V4cENvbnN0cnVjdG9yRG9sbGFyNyk6CisgICAgICAgIChKU0M6OnJlZ0V4cENv
bnN0cnVjdG9yRG9sbGFyOCk6CisgICAgICAgIChKU0M6OnJlZ0V4cENvbnN0cnVjdG9yRG9sbGFy
OSk6CisgICAgICAgIChKU0M6OnJlZ0V4cENvbnN0cnVjdG9ySW5wdXQpOgorICAgICAgICAoSlND
OjpyZWdFeHBDb25zdHJ1Y3Rvck11bHRpbGluZSk6CisgICAgICAgIChKU0M6OnJlZ0V4cENvbnN0
cnVjdG9yTGFzdE1hdGNoKToKKyAgICAgICAgKEpTQzo6cmVnRXhwQ29uc3RydWN0b3JMYXN0UGFy
ZW4pOgorICAgICAgICAoSlNDOjpyZWdFeHBDb25zdHJ1Y3RvckxlZnRDb250ZXh0KToKKyAgICAg
ICAgKEpTQzo6cmVnRXhwQ29uc3RydWN0b3JSaWdodENvbnRleHQpOgorICAgICAgICAoSlNDOjpS
ZWdFeHBDb25zdHJ1Y3Rvcjo6cHV0KToKKyAgICAgICAgKiBydW50aW1lL1JlZ0V4cENvbnN0cnVj
dG9yLmg6CisgICAgICAgIChSZWdFeHBDb25zdHJ1Y3Rvcik6CisgICAgICAgICogcnVudGltZS9S
ZWdFeHBNYXRjaGVzQXJyYXkuaDoKKyAgICAgICAgKEpTQzo6UmVnRXhwTWF0Y2hlc0FycmF5Ojpn
ZXRPd25Qcm9wZXJ0eVNsb3QpOgorICAgICAgICAoSlNDOjpSZWdFeHBNYXRjaGVzQXJyYXk6Omdl
dE93blByb3BlcnR5RGVzY3JpcHRvcik6CisgICAgICAgIChKU0M6OlJlZ0V4cE1hdGNoZXNBcnJh
eTo6cHV0KToKKyAgICAgICAgKEpTQzo6UmVnRXhwTWF0Y2hlc0FycmF5OjpkZWxldGVQcm9wZXJ0
eSk6CisgICAgICAgIChKU0M6OlJlZ0V4cE1hdGNoZXNBcnJheTo6ZGVmaW5lT3duUHJvcGVydHkp
OgorICAgICAgICAqIHJ1bnRpbWUvUmVnRXhwT2JqZWN0LmNwcDoKKyAgICAgICAgKEpTQyk6Cisg
ICAgICAgIChKU0M6OlJlZ0V4cE9iamVjdDo6Z2V0T3duUHJvcGVydHlTbG90KToKKyAgICAgICAg
KEpTQzo6UmVnRXhwT2JqZWN0OjpnZXRPd25Qcm9wZXJ0eURlc2NyaXB0b3IpOgorICAgICAgICAo
SlNDOjpSZWdFeHBPYmplY3Q6OmRlbGV0ZVByb3BlcnR5KToKKyAgICAgICAgKEpTQzo6UmVnRXhw
T2JqZWN0OjpkZWZpbmVPd25Qcm9wZXJ0eSk6CisgICAgICAgIChKU0M6OnJlZ0V4cE9iamVjdEds
b2JhbCk6CisgICAgICAgIChKU0M6OnJlZ0V4cE9iamVjdElnbm9yZUNhc2UpOgorICAgICAgICAo
SlNDOjpyZWdFeHBPYmplY3RNdWx0aWxpbmUpOgorICAgICAgICAoSlNDOjpyZWdFeHBPYmplY3RT
b3VyY2UpOgorICAgICAgICAoSlNDOjpSZWdFeHBPYmplY3Q6OnB1dCk6CisgICAgICAgICogcnVu
dGltZS9SZWdFeHBPYmplY3QuaDoKKyAgICAgICAgKFJlZ0V4cE9iamVjdCk6CisgICAgICAgICog
cnVudGltZS9SZWdFeHBQcm90b3R5cGUuY3BwOgorICAgICAgICAoSlNDOjpSZWdFeHBQcm90b3R5
cGU6OmdldE93blByb3BlcnR5U2xvdCk6CisgICAgICAgIChKU0M6OlJlZ0V4cFByb3RvdHlwZTo6
Z2V0T3duUHJvcGVydHlEZXNjcmlwdG9yKToKKyAgICAgICAgKiBydW50aW1lL1JlZ0V4cFByb3Rv
dHlwZS5oOgorICAgICAgICAoUmVnRXhwUHJvdG90eXBlKToKKyAgICAgICAgKiBydW50aW1lL1N0
cmljdEV2YWxBY3RpdmF0aW9uLmNwcDoKKyAgICAgICAgKEpTQzo6U3RyaWN0RXZhbEFjdGl2YXRp
b246OmRlbGV0ZVByb3BlcnR5KToKKyAgICAgICAgKiBydW50aW1lL1N0cmljdEV2YWxBY3RpdmF0
aW9uLmg6CisgICAgICAgIChTdHJpY3RFdmFsQWN0aXZhdGlvbik6CisgICAgICAgICogcnVudGlt
ZS9TdHJpbmdDb25zdHJ1Y3Rvci5jcHA6CisgICAgICAgIChKU0M6OlN0cmluZ0NvbnN0cnVjdG9y
OjpmaW5pc2hDcmVhdGlvbik6CisgICAgICAgIChKU0M6OlN0cmluZ0NvbnN0cnVjdG9yOjpnZXRP
d25Qcm9wZXJ0eVNsb3QpOgorICAgICAgICAoSlNDOjpTdHJpbmdDb25zdHJ1Y3Rvcjo6Z2V0T3du
UHJvcGVydHlEZXNjcmlwdG9yKToKKyAgICAgICAgKiBydW50aW1lL1N0cmluZ0NvbnN0cnVjdG9y
Lmg6CisgICAgICAgIChTdHJpbmdDb25zdHJ1Y3Rvcik6CisgICAgICAgICogcnVudGltZS9TdHJp
bmdPYmplY3QuY3BwOgorICAgICAgICAoSlNDOjpTdHJpbmdPYmplY3Q6OmdldE93blByb3BlcnR5
U2xvdCk6CisgICAgICAgIChKU0M6OlN0cmluZ09iamVjdDo6Z2V0T3duUHJvcGVydHlEZXNjcmlw
dG9yKToKKyAgICAgICAgKEpTQzo6U3RyaW5nT2JqZWN0OjpwdXQpOgorICAgICAgICAoSlNDOjpT
dHJpbmdPYmplY3Q6OmRlZmluZU93blByb3BlcnR5KToKKyAgICAgICAgKEpTQzo6U3RyaW5nT2Jq
ZWN0OjpkZWxldGVQcm9wZXJ0eSk6CisgICAgICAgICogcnVudGltZS9TdHJpbmdPYmplY3QuaDoK
KyAgICAgICAgKFN0cmluZ09iamVjdCk6CisgICAgICAgICogcnVudGltZS9TdHJpbmdQcm90b3R5
cGUuY3BwOgorICAgICAgICAoSlNDOjpTdHJpbmdQcm90b3R5cGU6OmdldE93blByb3BlcnR5U2xv
dCk6CisgICAgICAgIChKU0M6OlN0cmluZ1Byb3RvdHlwZTo6Z2V0T3duUHJvcGVydHlEZXNjcmlw
dG9yKToKKyAgICAgICAgKiBydW50aW1lL1N0cmluZ1Byb3RvdHlwZS5oOgorICAgICAgICAoU3Ry
aW5nUHJvdG90eXBlKToKKyAgICAgICAgKiBydW50aW1lL1N0cnVjdHVyZS5jcHA6CisgICAgICAg
IChKU0M6OlN0cnVjdHVyZTo6ZGVzcGVjaWZ5RGljdGlvbmFyeUZ1bmN0aW9uKToKKyAgICAgICAg
KEpTQzo6U3RydWN0dXJlOjphZGRQcm9wZXJ0eVRyYW5zaXRpb25Ub0V4aXN0aW5nU3RydWN0dXJl
KToKKyAgICAgICAgKEpTQzo6U3RydWN0dXJlOjphZGRQcm9wZXJ0eVRyYW5zaXRpb24pOgorICAg
ICAgICAoSlNDOjpTdHJ1Y3R1cmU6OnJlbW92ZVByb3BlcnR5VHJhbnNpdGlvbik6CisgICAgICAg
IChKU0M6OlN0cnVjdHVyZTo6ZGVzcGVjaWZ5RnVuY3Rpb25UcmFuc2l0aW9uKToKKyAgICAgICAg
KEpTQzo6U3RydWN0dXJlOjphdHRyaWJ1dGVDaGFuZ2VUcmFuc2l0aW9uKToKKyAgICAgICAgKEpT
Qzo6U3RydWN0dXJlOjphZGRQcm9wZXJ0eVdpdGhvdXRUcmFuc2l0aW9uKToKKyAgICAgICAgKEpT
Qzo6U3RydWN0dXJlOjpyZW1vdmVQcm9wZXJ0eVdpdGhvdXRUcmFuc2l0aW9uKToKKyAgICAgICAg
KEpTQzo6U3RydWN0dXJlOjpnZXQpOgorICAgICAgICAoSlNDOjpTdHJ1Y3R1cmU6OmRlc3BlY2lm
eUZ1bmN0aW9uKToKKyAgICAgICAgKEpTQzo6U3RydWN0dXJlOjpwdXRTcGVjaWZpY1ZhbHVlKToK
KyAgICAgICAgKEpTQzo6U3RydWN0dXJlOjpyZW1vdmUpOgorICAgICAgICAqIHJ1bnRpbWUvU3Ry
dWN0dXJlLmg6CisgICAgICAgIChTdHJ1Y3R1cmUpOgorICAgICAgICAoSlNDOjpTdHJ1Y3R1cmU6
OmdldCk6CisKIDIwMTItMDUtMTEgIFNhbSBXZWluaWcgIDxzYW1Ad2Via2l0Lm9yZz4KIAogICAg
ICAgICBGaXggY3Jhc2ggc2VlbiB3aGVuIHJ1bm5pbmcgd2l0aCBsaWJnbWFsbG9jCkluZGV4OiBT
b3VyY2UvSmF2YVNjcmlwdENvcmUvSlNDVHlwZWRBcnJheVN0dWJzLmgKPT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0g
U291cmNlL0phdmFTY3JpcHRDb3JlL0pTQ1R5cGVkQXJyYXlTdHVicy5oCShyZXZpc2lvbiAxMTY2
NjcpCisrKyBTb3VyY2UvSmF2YVNjcmlwdENvcmUvSlNDVHlwZWRBcnJheVN0dWJzLmgJKHdvcmtp
bmcgY29weSkKQEAgLTUyLDEwICs1MiwxMCBAQCBwdWJsaWM6IFwKICAgICAgICAgcmV0dXJuIHB0
cjsgXAogICAgIH1cCiBcCi0gICAgc3RhdGljIGJvb2wgZ2V0T3duUHJvcGVydHlTbG90KEpTQzo6
SlNDZWxsKiwgSlNDOjpFeGVjU3RhdGUqLCBjb25zdCBKU0M6OklkZW50aWZpZXImIHByb3BlcnR5
TmFtZSwgSlNDOjpQcm9wZXJ0eVNsb3QmKTtcCi0gICAgc3RhdGljIGJvb2wgZ2V0T3duUHJvcGVy
dHlEZXNjcmlwdG9yKEpTQzo6SlNPYmplY3QqLCBKU0M6OkV4ZWNTdGF0ZSosIGNvbnN0IEpTQzo6
SWRlbnRpZmllciYgcHJvcGVydHlOYW1lLCBKU0M6OlByb3BlcnR5RGVzY3JpcHRvciYpO1wKKyAg
ICBzdGF0aWMgYm9vbCBnZXRPd25Qcm9wZXJ0eVNsb3QoSlNDOjpKU0NlbGwqLCBKU0M6OkV4ZWNT
dGF0ZSosIEpTQzo6UHJvcGVydHlOYW1lIHByb3BlcnR5TmFtZSwgSlNDOjpQcm9wZXJ0eVNsb3Qm
KTtcCisgICAgc3RhdGljIGJvb2wgZ2V0T3duUHJvcGVydHlEZXNjcmlwdG9yKEpTQzo6SlNPYmpl
Y3QqLCBKU0M6OkV4ZWNTdGF0ZSosIEpTQzo6UHJvcGVydHlOYW1lIHByb3BlcnR5TmFtZSwgSlND
OjpQcm9wZXJ0eURlc2NyaXB0b3ImKTtcCiAgICAgc3RhdGljIGJvb2wgZ2V0T3duUHJvcGVydHlT
bG90QnlJbmRleChKU0M6OkpTQ2VsbCosIEpTQzo6RXhlY1N0YXRlKiwgdW5zaWduZWQgcHJvcGVy
dHlOYW1lLCBKU0M6OlByb3BlcnR5U2xvdCYpO1wKLSAgICBzdGF0aWMgdm9pZCBwdXQoSlNDOjpK
U0NlbGwqLCBKU0M6OkV4ZWNTdGF0ZSosIGNvbnN0IEpTQzo6SWRlbnRpZmllciYgcHJvcGVydHlO
YW1lLCBKU0M6OkpTVmFsdWUsIEpTQzo6UHV0UHJvcGVydHlTbG90Jik7XAorICAgIHN0YXRpYyB2
b2lkIHB1dChKU0M6OkpTQ2VsbCosIEpTQzo6RXhlY1N0YXRlKiwgSlNDOjpQcm9wZXJ0eU5hbWUg
cHJvcGVydHlOYW1lLCBKU0M6OkpTVmFsdWUsIEpTQzo6UHV0UHJvcGVydHlTbG90Jik7XAogICAg
IHN0YXRpYyB2b2lkIHB1dEJ5SW5kZXgoSlNDOjpKU0NlbGwqLCBKU0M6OkV4ZWNTdGF0ZSosIHVu
c2lnbmVkIHByb3BlcnR5TmFtZSwgSlNDOjpKU1ZhbHVlLCBib29sKTtcCiAgICAgc3RhdGljIGNv
bnN0IEpTQzo6Q2xhc3NJbmZvIHNfaW5mbztcCiBcCkBAIC05OCwyNiArOTgsMjYgQEAgdm9pZCBK
UyMjbmFtZSMjQXJyYXk6OmZpbmlzaENyZWF0aW9uKEpTRwogICAgIEFTU0VSVChpbmhlcml0cygm
c19pbmZvKSk7XAogfVwKIFwKLWJvb2wgSlMjI25hbWUjI0FycmF5OjpnZXRPd25Qcm9wZXJ0eVNs
b3QoSlNDZWxsKiBjZWxsLCBFeGVjU3RhdGUqIGV4ZWMsIGNvbnN0IElkZW50aWZpZXImIHByb3Bl
cnR5TmFtZSwgUHJvcGVydHlTbG90JiBzbG90KVwKK2Jvb2wgSlMjI25hbWUjI0FycmF5OjpnZXRP
d25Qcm9wZXJ0eVNsb3QoSlNDZWxsKiBjZWxsLCBFeGVjU3RhdGUqIGV4ZWMsIFByb3BlcnR5TmFt
ZSBwcm9wZXJ0eU5hbWUsIFByb3BlcnR5U2xvdCYgc2xvdClcCiB7XAogICAgIEpTIyNuYW1lIyNB
cnJheSogdGhpc09iamVjdCA9IGpzQ2FzdDxKUyMjbmFtZSMjQXJyYXkqPihjZWxsKTtcCiAgICAg
QVNTRVJUX0dDX09CSkVDVF9JTkhFUklUUyh0aGlzT2JqZWN0LCAmc19pbmZvKTtcCi0gICAgYm9v
bCBvaztcCi0gICAgdW5zaWduZWQgaW5kZXggPSBwcm9wZXJ0eU5hbWUudG9VSW50MzIob2spO1wK
LSAgICBpZiAob2sgJiYgaW5kZXggPCB0aGlzT2JqZWN0LT5tX3N0b3JhZ2VMZW5ndGgpIHtcCisg
ICAgdW5zaWduZWQgaW5kZXggPSBwcm9wZXJ0eU5hbWUuYXNJbmRleCgpO1wKKyAgICBpZiAoaW5k
ZXggPCB0aGlzT2JqZWN0LT5tX3N0b3JhZ2VMZW5ndGgpIHtcCisgICAgICAgIEFTU0VSVChpbmRl
eCAhPSBQcm9wZXJ0eU5hbWU6Ok5vdEFuSW5kZXgpO1wKICAgICAgICAgc2xvdC5zZXRWYWx1ZSh0
aGlzT2JqZWN0LT5nZXRCeUluZGV4KGV4ZWMsIGluZGV4KSk7XAogICAgICAgICByZXR1cm4gdHJ1
ZTtcCiAgICAgfVwKICAgICByZXR1cm4gQmFzZTo6Z2V0T3duUHJvcGVydHlTbG90KGNlbGwsIGV4
ZWMsIHByb3BlcnR5TmFtZSwgc2xvdCk7XAogfVwKIFwKLWJvb2wgSlMjI25hbWUjI0FycmF5Ojpn
ZXRPd25Qcm9wZXJ0eURlc2NyaXB0b3IoSlNPYmplY3QqIG9iamVjdCwgRXhlY1N0YXRlKiBleGVj
LCBjb25zdCBJZGVudGlmaWVyJiBwcm9wZXJ0eU5hbWUsIFByb3BlcnR5RGVzY3JpcHRvciYgZGVz
Y3JpcHRvcilcCitib29sIEpTIyNuYW1lIyNBcnJheTo6Z2V0T3duUHJvcGVydHlEZXNjcmlwdG9y
KEpTT2JqZWN0KiBvYmplY3QsIEV4ZWNTdGF0ZSogZXhlYywgUHJvcGVydHlOYW1lIHByb3BlcnR5
TmFtZSwgUHJvcGVydHlEZXNjcmlwdG9yJiBkZXNjcmlwdG9yKVwKIHtcCiAgICAgSlMjI25hbWUj
I0FycmF5KiB0aGlzT2JqZWN0ID0ganNDYXN0PEpTIyNuYW1lIyNBcnJheSo+KG9iamVjdCk7XAog
ICAgIEFTU0VSVF9HQ19PQkpFQ1RfSU5IRVJJVFModGhpc09iamVjdCwgJnNfaW5mbyk7XAotICAg
IGJvb2wgb2s7XAotICAgIHVuc2lnbmVkIGluZGV4ID0gcHJvcGVydHlOYW1lLnRvVUludDMyKG9r
KTtcCi0gICAgaWYgKG9rICYmIGluZGV4IDwgdGhpc09iamVjdC0+bV9zdG9yYWdlTGVuZ3RoKSB7
XAorICAgIHVuc2lnbmVkIGluZGV4ID0gcHJvcGVydHlOYW1lLmFzSW5kZXgoKTtcCisgICAgaWYg
KGluZGV4IDwgdGhpc09iamVjdC0+bV9zdG9yYWdlTGVuZ3RoKSB7XAorICAgICAgICBBU1NFUlQo
aW5kZXggIT0gUHJvcGVydHlOYW1lOjpOb3RBbkluZGV4KTtcCiAgICAgICAgIGRlc2NyaXB0b3Iu
c2V0RGVzY3JpcHRvcih0aGlzT2JqZWN0LT5nZXRCeUluZGV4KGV4ZWMsIGluZGV4KSwgRG9udERl
bGV0ZSk7XAogICAgICAgICByZXR1cm4gdHJ1ZTtcCiAgICAgfVwKQEAgLTEzNSwxMyArMTM1LDEy
IEBAIGJvb2wgSlMjI25hbWUjI0FycmF5OjpnZXRPd25Qcm9wZXJ0eVNsb3QKICAgICByZXR1cm4g
dGhpc09iamVjdC0+bWV0aG9kVGFibGUoKS0+Z2V0T3duUHJvcGVydHlTbG90KHRoaXNPYmplY3Qs
IGV4ZWMsIElkZW50aWZpZXI6OmZyb20oZXhlYywgcHJvcGVydHlOYW1lKSwgc2xvdCk7XAogfVwK
IFwKLXZvaWQgSlMjI25hbWUjI0FycmF5OjpwdXQoSlNDZWxsKiBjZWxsLCBFeGVjU3RhdGUqIGV4
ZWMsIGNvbnN0IElkZW50aWZpZXImIHByb3BlcnR5TmFtZSwgSlNWYWx1ZSB2YWx1ZSwgUHV0UHJv
cGVydHlTbG90JiBzbG90KVwKK3ZvaWQgSlMjI25hbWUjI0FycmF5OjpwdXQoSlNDZWxsKiBjZWxs
LCBFeGVjU3RhdGUqIGV4ZWMsIFByb3BlcnR5TmFtZSBwcm9wZXJ0eU5hbWUsIEpTVmFsdWUgdmFs
dWUsIFB1dFByb3BlcnR5U2xvdCYgc2xvdClcCiB7XAogICAgIEpTIyNuYW1lIyNBcnJheSogdGhp
c09iamVjdCA9IGpzQ2FzdDxKUyMjbmFtZSMjQXJyYXkqPihjZWxsKTtcCiAgICAgQVNTRVJUX0dD
X09CSkVDVF9JTkhFUklUUyh0aGlzT2JqZWN0LCAmc19pbmZvKTtcCi0gICAgYm9vbCBvaztcCi0g
ICAgdW5zaWduZWQgaW5kZXggPSBwcm9wZXJ0eU5hbWUudG9VSW50MzIob2spO1wKLSAgICBpZiAo
b2spIHtcCisgICAgdW5zaWduZWQgaW5kZXggPSBwcm9wZXJ0eU5hbWUuYXNJbmRleCgpO1wKKyAg
ICBpZiAoaW5kZXggIT0gUHJvcGVydHlOYW1lOjpOb3RBbkluZGV4KSB7XAogICAgICAgICB0aGlz
T2JqZWN0LT5pbmRleFNldHRlcihleGVjLCBpbmRleCwgdmFsdWUpO1wKICAgICAgICAgcmV0dXJu
O1wKICAgICB9XApJbmRleDogU291cmNlL0phdmFTY3JpcHRDb3JlL2pzYy5jcHAKPT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PQotLS0gU291cmNlL0phdmFTY3JpcHRDb3JlL2pzYy5jcHAJKHJldmlzaW9uIDExNjY2NykKKysr
IFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9qc2MuY3BwCSh3b3JraW5nIGNvcHkpCkBAIC0yMTgsMTMg
KzIxOCwxMyBAQCBwcm90ZWN0ZWQ6CiAgICAgdm9pZCBhZGRGdW5jdGlvbihKU0dsb2JhbERhdGEm
IGdsb2JhbERhdGEsIGNvbnN0IGNoYXIqIG5hbWUsIE5hdGl2ZUZ1bmN0aW9uIGZ1bmN0aW9uLCB1
bnNpZ25lZCBhcmd1bWVudHMpCiAgICAgewogICAgICAgICBJZGVudGlmaWVyIGlkZW50aWZpZXIo
Z2xvYmFsRXhlYygpLCBuYW1lKTsKLSAgICAgICAgcHV0RGlyZWN0KGdsb2JhbERhdGEsIGlkZW50
aWZpZXIsIEpTRnVuY3Rpb246OmNyZWF0ZShnbG9iYWxFeGVjKCksIHRoaXMsIGFyZ3VtZW50cywg
aWRlbnRpZmllciwgZnVuY3Rpb24pKTsKKyAgICAgICAgcHV0RGlyZWN0KGdsb2JhbERhdGEsIGlk
ZW50aWZpZXIsIEpTRnVuY3Rpb246OmNyZWF0ZShnbG9iYWxFeGVjKCksIHRoaXMsIGFyZ3VtZW50
cywgaWRlbnRpZmllci51c3RyaW5nKCksIGZ1bmN0aW9uKSk7CiAgICAgfQogICAgIAogICAgIHZv
aWQgYWRkQ29uc3RydWN0YWJsZUZ1bmN0aW9uKEpTR2xvYmFsRGF0YSYgZ2xvYmFsRGF0YSwgY29u
c3QgY2hhciogbmFtZSwgTmF0aXZlRnVuY3Rpb24gZnVuY3Rpb24sIHVuc2lnbmVkIGFyZ3VtZW50
cykKICAgICB7CiAgICAgICAgIElkZW50aWZpZXIgaWRlbnRpZmllcihnbG9iYWxFeGVjKCksIG5h
bWUpOwotICAgICAgICBwdXREaXJlY3QoZ2xvYmFsRGF0YSwgaWRlbnRpZmllciwgSlNGdW5jdGlv
bjo6Y3JlYXRlKGdsb2JhbEV4ZWMoKSwgdGhpcywgYXJndW1lbnRzLCBpZGVudGlmaWVyLCBmdW5j
dGlvbiwgTm9JbnRyaW5zaWMsIGZ1bmN0aW9uKSk7CisgICAgICAgIHB1dERpcmVjdChnbG9iYWxE
YXRhLCBpZGVudGlmaWVyLCBKU0Z1bmN0aW9uOjpjcmVhdGUoZ2xvYmFsRXhlYygpLCB0aGlzLCBh
cmd1bWVudHMsIGlkZW50aWZpZXIudXN0cmluZygpLCBmdW5jdGlvbiwgTm9JbnRyaW5zaWMsIGZ1
bmN0aW9uKSk7CiAgICAgfQogfTsKIENPTVBJTEVfQVNTRVJUKCFJc0ludGVnZXI8R2xvYmFsT2Jq
ZWN0Pjo6dmFsdWUsIFdURl9Jc0ludGVnZXJfR2xvYmFsT2JqZWN0X2ZhbHNlKTsKSW5kZXg6IFNv
dXJjZS9KYXZhU2NyaXB0Q29yZS9BUEkvSlNDYWxsYmFja0Z1bmN0aW9uLmNwcAo9PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
Ci0tLSBTb3VyY2UvSmF2YVNjcmlwdENvcmUvQVBJL0pTQ2FsbGJhY2tGdW5jdGlvbi5jcHAJKHJl
dmlzaW9uIDExNjY2NykKKysrIFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9BUEkvSlNDYWxsYmFja0Z1
bmN0aW9uLmNwcAkod29ya2luZyBjb3B5KQpAQCAtNDksNyArNDksNyBAQCBKU0NhbGxiYWNrRnVu
Y3Rpb246OkpTQ2FsbGJhY2tGdW5jdGlvbihKCiB7CiB9CiAKLXZvaWQgSlNDYWxsYmFja0Z1bmN0
aW9uOjpmaW5pc2hDcmVhdGlvbihKU0dsb2JhbERhdGEmIGdsb2JhbERhdGEsIGNvbnN0IElkZW50
aWZpZXImIG5hbWUpCit2b2lkIEpTQ2FsbGJhY2tGdW5jdGlvbjo6ZmluaXNoQ3JlYXRpb24oSlNH
bG9iYWxEYXRhJiBnbG9iYWxEYXRhLCBjb25zdCBVU3RyaW5nJiBuYW1lKQogewogICAgIEJhc2U6
OmZpbmlzaENyZWF0aW9uKGdsb2JhbERhdGEsIG5hbWUpOwogICAgIEFTU0VSVChpbmhlcml0cygm
c19pbmZvKSk7CkluZGV4OiBTb3VyY2UvSmF2YVNjcmlwdENvcmUvQVBJL0pTQ2FsbGJhY2tGdW5j
dGlvbi5oCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9BUEkvSlNDYWxsYmFj
a0Z1bmN0aW9uLmgJKHJldmlzaW9uIDExNjY2NykKKysrIFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9B
UEkvSlNDYWxsYmFja0Z1bmN0aW9uLmgJKHdvcmtpbmcgY29weSkKQEAgLTM0LDEyICszNCwxMiBA
QCBuYW1lc3BhY2UgSlNDIHsKIGNsYXNzIEpTQ2FsbGJhY2tGdW5jdGlvbiA6IHB1YmxpYyBJbnRl
cm5hbEZ1bmN0aW9uIHsKIHByb3RlY3RlZDoKICAgICBKU0NhbGxiYWNrRnVuY3Rpb24oSlNHbG9i
YWxPYmplY3QqLCBKU09iamVjdENhbGxBc0Z1bmN0aW9uQ2FsbGJhY2spOwotICAgIHZvaWQgZmlu
aXNoQ3JlYXRpb24oSlNHbG9iYWxEYXRhJiwgY29uc3QgSWRlbnRpZmllciYgbmFtZSk7CisgICAg
dm9pZCBmaW5pc2hDcmVhdGlvbihKU0dsb2JhbERhdGEmLCBjb25zdCBVU3RyaW5nJiBuYW1lKTsK
IAogcHVibGljOgogICAgIHR5cGVkZWYgSW50ZXJuYWxGdW5jdGlvbiBCYXNlOwogCi0gICAgc3Rh
dGljIEpTQ2FsbGJhY2tGdW5jdGlvbiogY3JlYXRlKEV4ZWNTdGF0ZSogZXhlYywgSlNHbG9iYWxP
YmplY3QqIGdsb2JhbE9iamVjdCwgSlNPYmplY3RDYWxsQXNGdW5jdGlvbkNhbGxiYWNrIGNhbGxi
YWNrLCBjb25zdCBJZGVudGlmaWVyJiBuYW1lKQorICAgIHN0YXRpYyBKU0NhbGxiYWNrRnVuY3Rp
b24qIGNyZWF0ZShFeGVjU3RhdGUqIGV4ZWMsIEpTR2xvYmFsT2JqZWN0KiBnbG9iYWxPYmplY3Qs
IEpTT2JqZWN0Q2FsbEFzRnVuY3Rpb25DYWxsYmFjayBjYWxsYmFjaywgY29uc3QgVVN0cmluZyYg
bmFtZSkKICAgICB7CiAgICAgICAgIEpTQ2FsbGJhY2tGdW5jdGlvbiogZnVuY3Rpb24gPSBuZXcg
KE5vdE51bGwsIGFsbG9jYXRlQ2VsbDxKU0NhbGxiYWNrRnVuY3Rpb24+KCpleGVjLT5oZWFwKCkp
KSBKU0NhbGxiYWNrRnVuY3Rpb24oZ2xvYmFsT2JqZWN0LCBjYWxsYmFjayk7CiAgICAgICAgIGZ1
bmN0aW9uLT5maW5pc2hDcmVhdGlvbihleGVjLT5nbG9iYWxEYXRhKCksIG5hbWUpOwpJbmRleDog
U291cmNlL0phdmFTY3JpcHRDb3JlL0FQSS9KU0NhbGxiYWNrT2JqZWN0LmgKPT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQot
LS0gU291cmNlL0phdmFTY3JpcHRDb3JlL0FQSS9KU0NhbGxiYWNrT2JqZWN0LmgJKHJldmlzaW9u
IDExNjY2NykKKysrIFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9BUEkvSlNDYWxsYmFja09iamVjdC5o
CSh3b3JraW5nIGNvcHkpCkBAIC0xNzcsMTIgKzE3NywxMiBAQCBwcml2YXRlOgogCiAgICAgc3Rh
dGljIEpTVmFsdWUgZGVmYXVsdFZhbHVlKGNvbnN0IEpTT2JqZWN0KiwgRXhlY1N0YXRlKiwgUHJl
ZmVycmVkUHJpbWl0aXZlVHlwZSk7CiAKLSAgICBzdGF0aWMgYm9vbCBnZXRPd25Qcm9wZXJ0eVNs
b3QoSlNDZWxsKiwgRXhlY1N0YXRlKiwgY29uc3QgSWRlbnRpZmllciYsIFByb3BlcnR5U2xvdCYp
OwotICAgIHN0YXRpYyBib29sIGdldE93blByb3BlcnR5RGVzY3JpcHRvcihKU09iamVjdCosIEV4
ZWNTdGF0ZSosIGNvbnN0IElkZW50aWZpZXImLCBQcm9wZXJ0eURlc2NyaXB0b3ImKTsKKyAgICBz
dGF0aWMgYm9vbCBnZXRPd25Qcm9wZXJ0eVNsb3QoSlNDZWxsKiwgRXhlY1N0YXRlKiwgUHJvcGVy
dHlOYW1lLCBQcm9wZXJ0eVNsb3QmKTsKKyAgICBzdGF0aWMgYm9vbCBnZXRPd25Qcm9wZXJ0eURl
c2NyaXB0b3IoSlNPYmplY3QqLCBFeGVjU3RhdGUqLCBQcm9wZXJ0eU5hbWUsIFByb3BlcnR5RGVz
Y3JpcHRvciYpOwogICAgIAotICAgIHN0YXRpYyB2b2lkIHB1dChKU0NlbGwqLCBFeGVjU3RhdGUq
LCBjb25zdCBJZGVudGlmaWVyJiwgSlNWYWx1ZSwgUHV0UHJvcGVydHlTbG90Jik7CisgICAgc3Rh
dGljIHZvaWQgcHV0KEpTQ2VsbCosIEV4ZWNTdGF0ZSosIFByb3BlcnR5TmFtZSwgSlNWYWx1ZSwg
UHV0UHJvcGVydHlTbG90Jik7CiAKLSAgICBzdGF0aWMgYm9vbCBkZWxldGVQcm9wZXJ0eShKU0Nl
bGwqLCBFeGVjU3RhdGUqLCBjb25zdCBJZGVudGlmaWVyJik7CisgICAgc3RhdGljIGJvb2wgZGVs
ZXRlUHJvcGVydHkoSlNDZWxsKiwgRXhlY1N0YXRlKiwgUHJvcGVydHlOYW1lKTsKICAgICBzdGF0
aWMgYm9vbCBkZWxldGVQcm9wZXJ0eUJ5SW5kZXgoSlNDZWxsKiwgRXhlY1N0YXRlKiwgdW5zaWdu
ZWQpOwogCiAgICAgc3RhdGljIGJvb2wgaGFzSW5zdGFuY2UoSlNPYmplY3QqLCBFeGVjU3RhdGUq
LCBKU1ZhbHVlLCBKU1ZhbHVlIHByb3RvKTsKQEAgLTIwOSw5ICsyMDksOSBAQCBwcml2YXRlOgog
ICAgIHN0YXRpYyBFbmNvZGVkSlNWYWx1ZSBKU0NfSE9TVF9DQUxMIGNhbGwoRXhlY1N0YXRlKik7
CiAgICAgc3RhdGljIEVuY29kZWRKU1ZhbHVlIEpTQ19IT1NUX0NBTEwgY29uc3RydWN0KEV4ZWNT
dGF0ZSopOwogICAgCi0gICAgSlNWYWx1ZSBnZXRTdGF0aWNWYWx1ZShFeGVjU3RhdGUqLCBjb25z
dCBJZGVudGlmaWVyJik7Ci0gICAgc3RhdGljIEpTVmFsdWUgc3RhdGljRnVuY3Rpb25HZXR0ZXIo
RXhlY1N0YXRlKiwgSlNWYWx1ZSwgY29uc3QgSWRlbnRpZmllciYpOwotICAgIHN0YXRpYyBKU1Zh
bHVlIGNhbGxiYWNrR2V0dGVyKEV4ZWNTdGF0ZSosIEpTVmFsdWUsIGNvbnN0IElkZW50aWZpZXIm
KTsKKyAgICBKU1ZhbHVlIGdldFN0YXRpY1ZhbHVlKEV4ZWNTdGF0ZSosIFByb3BlcnR5TmFtZSk7
CisgICAgc3RhdGljIEpTVmFsdWUgc3RhdGljRnVuY3Rpb25HZXR0ZXIoRXhlY1N0YXRlKiwgSlNW
YWx1ZSwgUHJvcGVydHlOYW1lKTsKKyAgICBzdGF0aWMgSlNWYWx1ZSBjYWxsYmFja0dldHRlcihF
eGVjU3RhdGUqLCBKU1ZhbHVlLCBQcm9wZXJ0eU5hbWUpOwogCiAgICAgT3duUHRyPEpTQ2FsbGJh
Y2tPYmplY3REYXRhPiBtX2NhbGxiYWNrT2JqZWN0RGF0YTsKIH07CkluZGV4OiBTb3VyY2UvSmF2
YVNjcmlwdENvcmUvQVBJL0pTQ2FsbGJhY2tPYmplY3RGdW5jdGlvbnMuaAo9PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0t
LSBTb3VyY2UvSmF2YVNjcmlwdENvcmUvQVBJL0pTQ2FsbGJhY2tPYmplY3RGdW5jdGlvbnMuaAko
cmV2aXNpb24gMTE2NjY3KQorKysgU291cmNlL0phdmFTY3JpcHRDb3JlL0FQSS9KU0NhbGxiYWNr
T2JqZWN0RnVuY3Rpb25zLmgJKHdvcmtpbmcgY29weSkKQEAgLTEyMiw3ICsxMjIsNyBAQCBVU3Ry
aW5nIEpTQ2FsbGJhY2tPYmplY3Q8UGFyZW50Pjo6Y2xhc3NOCiB9CiAKIHRlbXBsYXRlIDxjbGFz
cyBQYXJlbnQ+Ci1ib29sIEpTQ2FsbGJhY2tPYmplY3Q8UGFyZW50Pjo6Z2V0T3duUHJvcGVydHlT
bG90KEpTQ2VsbCogY2VsbCwgRXhlY1N0YXRlKiBleGVjLCBjb25zdCBJZGVudGlmaWVyJiBwcm9w
ZXJ0eU5hbWUsIFByb3BlcnR5U2xvdCYgc2xvdCkKK2Jvb2wgSlNDYWxsYmFja09iamVjdDxQYXJl
bnQ+OjpnZXRPd25Qcm9wZXJ0eVNsb3QoSlNDZWxsKiBjZWxsLCBFeGVjU3RhdGUqIGV4ZWMsIFBy
b3BlcnR5TmFtZSBwcm9wZXJ0eU5hbWUsIFByb3BlcnR5U2xvdCYgc2xvdCkKIHsKICAgICBKU0Nh
bGxiYWNrT2JqZWN0KiB0aGlzT2JqZWN0ID0ganNDYXN0PEpTQ2FsbGJhY2tPYmplY3QqPihjZWxs
KTsKICAgICBKU0NvbnRleHRSZWYgY3R4ID0gdG9SZWYoZXhlYyk7CkBAIC0yMDUsNyArMjA1LDcg
QEAgSlNWYWx1ZSBKU0NhbGxiYWNrT2JqZWN0PFBhcmVudD46OmRlZmF1bAogfQogCiB0ZW1wbGF0
ZSA8Y2xhc3MgUGFyZW50PgotYm9vbCBKU0NhbGxiYWNrT2JqZWN0PFBhcmVudD46OmdldE93blBy
b3BlcnR5RGVzY3JpcHRvcihKU09iamVjdCogb2JqZWN0LCBFeGVjU3RhdGUqIGV4ZWMsIGNvbnN0
IElkZW50aWZpZXImIHByb3BlcnR5TmFtZSwgUHJvcGVydHlEZXNjcmlwdG9yJiBkZXNjcmlwdG9y
KQorYm9vbCBKU0NhbGxiYWNrT2JqZWN0PFBhcmVudD46OmdldE93blByb3BlcnR5RGVzY3JpcHRv
cihKU09iamVjdCogb2JqZWN0LCBFeGVjU3RhdGUqIGV4ZWMsIFByb3BlcnR5TmFtZSBwcm9wZXJ0
eU5hbWUsIFByb3BlcnR5RGVzY3JpcHRvciYgZGVzY3JpcHRvcikKIHsKICAgICBKU0NhbGxiYWNr
T2JqZWN0KiB0aGlzT2JqZWN0ID0ganNDYXN0PEpTQ2FsbGJhY2tPYmplY3QqPihvYmplY3QpOwog
ICAgIFByb3BlcnR5U2xvdCBzbG90OwpAQCAtMjI1LDcgKzIyNSw3IEBAIGJvb2wgSlNDYWxsYmFj
a09iamVjdDxQYXJlbnQ+OjpnZXRPd25Qcm8KIH0KIAogdGVtcGxhdGUgPGNsYXNzIFBhcmVudD4K
LXZvaWQgSlNDYWxsYmFja09iamVjdDxQYXJlbnQ+OjpwdXQoSlNDZWxsKiBjZWxsLCBFeGVjU3Rh
dGUqIGV4ZWMsIGNvbnN0IElkZW50aWZpZXImIHByb3BlcnR5TmFtZSwgSlNWYWx1ZSB2YWx1ZSwg
UHV0UHJvcGVydHlTbG90JiBzbG90KQordm9pZCBKU0NhbGxiYWNrT2JqZWN0PFBhcmVudD46OnB1
dChKU0NlbGwqIGNlbGwsIEV4ZWNTdGF0ZSogZXhlYywgUHJvcGVydHlOYW1lIHByb3BlcnR5TmFt
ZSwgSlNWYWx1ZSB2YWx1ZSwgUHV0UHJvcGVydHlTbG90JiBzbG90KQogewogICAgIEpTQ2FsbGJh
Y2tPYmplY3QqIHRoaXNPYmplY3QgPSBqc0Nhc3Q8SlNDYWxsYmFja09iamVjdCo+KGNlbGwpOwog
ICAgIEpTQ29udGV4dFJlZiBjdHggPSB0b1JlZihleGVjKTsKQEAgLTI4NCw3ICsyODQsNyBAQCB2
b2lkIEpTQ2FsbGJhY2tPYmplY3Q8UGFyZW50Pjo6cHV0KEpTQ2VsCiB9CiAKIHRlbXBsYXRlIDxj
bGFzcyBQYXJlbnQ+Ci1ib29sIEpTQ2FsbGJhY2tPYmplY3Q8UGFyZW50Pjo6ZGVsZXRlUHJvcGVy
dHkoSlNDZWxsKiBjZWxsLCBFeGVjU3RhdGUqIGV4ZWMsIGNvbnN0IElkZW50aWZpZXImIHByb3Bl
cnR5TmFtZSkKK2Jvb2wgSlNDYWxsYmFja09iamVjdDxQYXJlbnQ+OjpkZWxldGVQcm9wZXJ0eShK
U0NlbGwqIGNlbGwsIEV4ZWNTdGF0ZSogZXhlYywgUHJvcGVydHlOYW1lIHByb3BlcnR5TmFtZSkK
IHsKICAgICBKU0NhbGxiYWNrT2JqZWN0KiB0aGlzT2JqZWN0ID0ganNDYXN0PEpTQ2FsbGJhY2tP
YmplY3QqPihjZWxsKTsKICAgICBKU0NvbnRleHRSZWYgY3R4ID0gdG9SZWYoZXhlYyk7CkBAIC01
MDQsNyArNTA0LDcgQEAgYm9vbCBKU0NhbGxiYWNrT2JqZWN0PFBhcmVudD46OmluaGVyaXRzKAog
fQogCiB0ZW1wbGF0ZSA8Y2xhc3MgUGFyZW50PgotSlNWYWx1ZSBKU0NhbGxiYWNrT2JqZWN0PFBh
cmVudD46OmdldFN0YXRpY1ZhbHVlKEV4ZWNTdGF0ZSogZXhlYywgY29uc3QgSWRlbnRpZmllciYg
cHJvcGVydHlOYW1lKQorSlNWYWx1ZSBKU0NhbGxiYWNrT2JqZWN0PFBhcmVudD46OmdldFN0YXRp
Y1ZhbHVlKEV4ZWNTdGF0ZSogZXhlYywgUHJvcGVydHlOYW1lIHByb3BlcnR5TmFtZSkKIHsKICAg
ICBKU09iamVjdFJlZiB0aGlzUmVmID0gdG9SZWYodGhpcyk7CiAgICAgUmVmUHRyPE9wYXF1ZUpT
U3RyaW5nPiBwcm9wZXJ0eU5hbWVSZWY7CkBAIC01MzMsNyArNTMzLDcgQEAgSlNWYWx1ZSBKU0Nh
bGxiYWNrT2JqZWN0PFBhcmVudD46OmdldFN0YQogfQogCiB0ZW1wbGF0ZSA8Y2xhc3MgUGFyZW50
PgotSlNWYWx1ZSBKU0NhbGxiYWNrT2JqZWN0PFBhcmVudD46OnN0YXRpY0Z1bmN0aW9uR2V0dGVy
KEV4ZWNTdGF0ZSogZXhlYywgSlNWYWx1ZSBzbG90UGFyZW50LCBjb25zdCBJZGVudGlmaWVyJiBw
cm9wZXJ0eU5hbWUpCitKU1ZhbHVlIEpTQ2FsbGJhY2tPYmplY3Q8UGFyZW50Pjo6c3RhdGljRnVu
Y3Rpb25HZXR0ZXIoRXhlY1N0YXRlKiBleGVjLCBKU1ZhbHVlIHNsb3RQYXJlbnQsIFByb3BlcnR5
TmFtZSBwcm9wZXJ0eU5hbWUpCiB7CiAgICAgSlNDYWxsYmFja09iamVjdCogdGhpc09iaiA9IGFz
Q2FsbGJhY2tPYmplY3Qoc2xvdFBhcmVudCk7CiAgICAgCkBAIC01NDcsNyArNTQ3LDcgQEAgSlNW
YWx1ZSBKU0NhbGxiYWNrT2JqZWN0PFBhcmVudD46OnN0YXRpYwogICAgICAgICAgICAgaWYgKFN0
YXRpY0Z1bmN0aW9uRW50cnkqIGVudHJ5ID0gc3RhdGljRnVuY3Rpb25zLT5nZXQocHJvcGVydHlO
YW1lLmltcGwoKSkpIHsKICAgICAgICAgICAgICAgICBpZiAoSlNPYmplY3RDYWxsQXNGdW5jdGlv
bkNhbGxiYWNrIGNhbGxBc0Z1bmN0aW9uID0gZW50cnktPmNhbGxBc0Z1bmN0aW9uKSB7CiAgICAg
ICAgICAgICAgICAgICAgIAotICAgICAgICAgICAgICAgICAgICBKU09iamVjdCogbyA9IEpTQ2Fs
bGJhY2tGdW5jdGlvbjo6Y3JlYXRlKGV4ZWMsIHRoaXNPYmotPmdsb2JhbE9iamVjdCgpLCBjYWxs
QXNGdW5jdGlvbiwgcHJvcGVydHlOYW1lKTsKKyAgICAgICAgICAgICAgICAgICAgSlNPYmplY3Qq
IG8gPSBKU0NhbGxiYWNrRnVuY3Rpb246OmNyZWF0ZShleGVjLCB0aGlzT2JqLT5nbG9iYWxPYmpl
Y3QoKSwgY2FsbEFzRnVuY3Rpb24sIHByb3BlcnR5TmFtZS51c3RyaW5nKCkpOwogICAgICAgICAg
ICAgICAgICAgICB0aGlzT2JqLT5wdXREaXJlY3QoZXhlYy0+Z2xvYmFsRGF0YSgpLCBwcm9wZXJ0
eU5hbWUsIG8sIGVudHJ5LT5hdHRyaWJ1dGVzKTsKICAgICAgICAgICAgICAgICAgICAgcmV0dXJu
IG87CiAgICAgICAgICAgICAgICAgfQpAQCAtNTU5LDcgKzU1OSw3IEBAIEpTVmFsdWUgSlNDYWxs
YmFja09iamVjdDxQYXJlbnQ+OjpzdGF0aWMKIH0KIAogdGVtcGxhdGUgPGNsYXNzIFBhcmVudD4K
LUpTVmFsdWUgSlNDYWxsYmFja09iamVjdDxQYXJlbnQ+OjpjYWxsYmFja0dldHRlcihFeGVjU3Rh
dGUqIGV4ZWMsIEpTVmFsdWUgc2xvdFBhcmVudCwgY29uc3QgSWRlbnRpZmllciYgcHJvcGVydHlO
YW1lKQorSlNWYWx1ZSBKU0NhbGxiYWNrT2JqZWN0PFBhcmVudD46OmNhbGxiYWNrR2V0dGVyKEV4
ZWNTdGF0ZSogZXhlYywgSlNWYWx1ZSBzbG90UGFyZW50LCBQcm9wZXJ0eU5hbWUgcHJvcGVydHlO
YW1lKQogewogICAgIEpTQ2FsbGJhY2tPYmplY3QqIHRoaXNPYmogPSBhc0NhbGxiYWNrT2JqZWN0
KHNsb3RQYXJlbnQpOwogICAgIApJbmRleDogU291cmNlL0phdmFTY3JpcHRDb3JlL0FQSS9KU09i
amVjdFJlZi5jcHAKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL0phdmFTY3JpcHRDb3JlL0FQSS9KU09i
amVjdFJlZi5jcHAJKHJldmlzaW9uIDExNjY2NykKKysrIFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9B
UEkvSlNPYmplY3RSZWYuY3BwCSh3b3JraW5nIGNvcHkpCkBAIC05MiwxMCArOTIsNyBAQCBKU09i
amVjdFJlZiBKU09iamVjdE1ha2VGdW5jdGlvbldpdGhDYWxsCiB7CiAgICAgRXhlY1N0YXRlKiBl
eGVjID0gdG9KUyhjdHgpOwogICAgIEFQSUVudHJ5U2hpbSBlbnRyeVNoaW0oZXhlYyk7Ci0KLSAg
ICBJZGVudGlmaWVyIG5hbWVJRCA9IG5hbWUgPyBuYW1lLT5pZGVudGlmaWVyKCZleGVjLT5nbG9i
YWxEYXRhKCkpIDogSWRlbnRpZmllcihleGVjLCAiYW5vbnltb3VzIik7Ci0gICAgCi0gICAgcmV0
dXJuIHRvUmVmKEpTQ2FsbGJhY2tGdW5jdGlvbjo6Y3JlYXRlKGV4ZWMsIGV4ZWMtPmxleGljYWxH
bG9iYWxPYmplY3QoKSwgY2FsbEFzRnVuY3Rpb24sIG5hbWVJRCkpOworICAgIHJldHVybiB0b1Jl
ZihKU0NhbGxiYWNrRnVuY3Rpb246OmNyZWF0ZShleGVjLCBleGVjLT5sZXhpY2FsR2xvYmFsT2Jq
ZWN0KCksIGNhbGxBc0Z1bmN0aW9uLCBuYW1lID8gbmFtZS0+dXN0cmluZygpIDogImFub255bW91
cyIpKTsKIH0KIAogSlNPYmplY3RSZWYgSlNPYmplY3RNYWtlQ29uc3RydWN0b3IoSlNDb250ZXh0
UmVmIGN0eCwgSlNDbGFzc1JlZiBqc0NsYXNzLCBKU09iamVjdENhbGxBc0NvbnN0cnVjdG9yQ2Fs
bGJhY2sgY2FsbEFzQ29uc3RydWN0b3IpCkluZGV4OiBTb3VyY2UvSmF2YVNjcmlwdENvcmUvSmF2
YVNjcmlwdENvcmUudmNwcm9qL0phdmFTY3JpcHRDb3JlL0phdmFTY3JpcHRDb3JlLmRlZgo9PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09Ci0tLSBTb3VyY2UvSmF2YVNjcmlwdENvcmUvSmF2YVNjcmlwdENvcmUudmNwcm9qL0ph
dmFTY3JpcHRDb3JlL0phdmFTY3JpcHRDb3JlLmRlZgkocmV2aXNpb24gMTE2NjY3KQorKysgU291
cmNlL0phdmFTY3JpcHRDb3JlL0phdmFTY3JpcHRDb3JlLnZjcHJvai9KYXZhU2NyaXB0Q29yZS9K
YXZhU2NyaXB0Q29yZS5kZWYJKHdvcmtpbmcgY29weSkKQEAgLTU2LDkgKzU2LDYgQEAgRVhQT1JU
UwogICAgID9hZGRCeXRlc0BTSEExQFdURkBAUUFFWFBCRUlAWgogICAgID9hZGRDdXJyZW50VGhy
ZWFkQE1hY2hpbmVUaHJlYWRzQEpTQ0BAUUFFWFhaCiAgICAgP2FkZEZpbmFsaXplckBIZWFwQEpT
Q0BAUUFFWFBBVkpTQ2VsbEAyQFA2QVgwQFpAWgotICAgID9hZGRQcm9wZXJ0eVRyYW5zaXRpb25A
U3RydWN0dXJlQEpTQ0BAU0FQQVYxMkBBQVZKU0dsb2JhbERhdGFAMkBQQVYxMkBBQlZJZGVudGlm
aWVyQDJASVBBVkpTQ2VsbEAyQEFBSUBaCi0gICAgP2FkZFByb3BlcnR5VHJhbnNpdGlvblRvRXhp
c3RpbmdTdHJ1Y3R1cmVAU3RydWN0dXJlQEpTQ0BAU0FQQVYxMkBQQVYxMkBBQlZJZGVudGlmaWVy
QDJASVBBVkpTQ2VsbEAyQEFBSUBaCi0gICAgP2FkZFByb3BlcnR5V2l0aG91dFRyYW5zaXRpb25A
U3RydWN0dXJlQEpTQ0BAUUFFSUFBVkpTR2xvYmFsRGF0YUAyQEFCVklkZW50aWZpZXJAMkBJUEFW
SlNDZWxsQDJAQFoKICAgICA/YWRkU2xvd0Nhc2VASWRlbnRpZmllckBKU0NAQENBP0FWPyRQYXNz
UmVmUHRyQFZTdHJpbmdJbXBsQFdURkBAQFdURkBAUEFWRXhlY1N0YXRlQDJAUEFWU3RyaW5nSW1w
bEA0QEBaCiAgICAgP2FkZFNsb3dDYXNlQElkZW50aWZpZXJASlNDQEBDQT9BVj8kUGFzc1JlZlB0
ckBWU3RyaW5nSW1wbEBXVEZAQEBXVEZAQFBBVkpTR2xvYmFsRGF0YUAyQFBBVlN0cmluZ0ltcGxA
NEBAWgogICAgID9hZGRTdGF0aWNHbG9iYWxzQEpTR2xvYmFsT2JqZWN0QEpTQ0BASUFFWFBBVUds
b2JhbFByb3BlcnR5SW5mb0AxMkBIQFoKQEAgLTk4LDExICs5NSw5IEBAIEVYUE9SVFMKICAgICA/
Y29uc3RydWN0QEpTQ0BAWUFQQVZKU09iamVjdEAxQFBBVkV4ZWNTdGF0ZUAxQFZKU1ZhbHVlQDFA
VzRDb25zdHJ1Y3RUeXBlQDFAQUJUQ29uc3RydWN0RGF0YUAxQEFCVkFyZ0xpc3RAMUBAWgogICAg
ID9jb25zdHJ1Y3RBcnJheUBKU0NAQFlBUEFWSlNBcnJheUAxQFBBVkV4ZWNTdGF0ZUAxQEFCVkFy
Z0xpc3RAMUBAWgogICAgID9jb25zdHJ1Y3RFbXB0eU9iamVjdEBKU0NAQFlBUEFWSlNPYmplY3RA
MUBQQVZFeGVjU3RhdGVAMUBAWgotICAgID9jb25zdHJ1Y3RGdW5jdGlvblNraXBwaW5nRXZhbEVu
YWJsZWRDaGVja0BKU0NAQFlBUEFWSlNPYmplY3RAMUBQQVZFeGVjU3RhdGVAMUBQQVZKU0dsb2Jh
bE9iamVjdEAxQEFCVkFyZ0xpc3RAMUBBQlZJZGVudGlmaWVyQDFAQUJWVVN0cmluZ0AxQEFCVlRl
eHRQb3NpdGlvbkBXVEZAQEBaCiAgICAgP2NvbnZlcnRMYXRpbjFUb1VURjhAVW5pY29kZUBXVEZA
QFlBP0FXNENvbnZlcnNpb25SZXN1bHRAMTJAUEFQQkVQQkVQQVBBRFBBREBaCiAgICAgP2NvbnZl
cnRVVEYxNlRvVVRGOEBVbmljb2RlQFdURkBAWUE/QVc0Q29udmVyc2lvblJlc3VsdEAxMkBQQVBC
X1dQQl9XUEFQQURQQURfTkBaCiAgICAgP2NvbnZlcnRVVEY4VG9VVEYxNkBVbmljb2RlQFdURkBA
WUE/QVc0Q29udmVyc2lvblJlc3VsdEAxMkBQQVBCRFBCRFBBUEFfV1BBX1dfTkBaCi0gICAgP2Ny
ZWF0ZUBKU0Z1bmN0aW9uQEpTQ0BAU0FQQVYxMkBQQVZFeGVjU3RhdGVAMkBQQVZKU0dsb2JhbE9i
amVjdEAyQEhBQlZJZGVudGlmaWVyQDJAUDZJX0owQFpXNEludHJpbnNpY0AyQDNAWgogICAgID9j
cmVhdGVASlNHbG9iYWxEYXRhQEpTQ0BAU0E/QVY/JFBhc3NSZWZQdHJAVkpTR2xvYmFsRGF0YUBK
U0NAQEBXVEZAQFc0VGhyZWFkU3RhY2tUeXBlQDJAVzRIZWFwU2l6ZUAyQEBaCiAgICAgP2NyZWF0
ZUBPcGFxdWVKU1N0cmluZ0BAU0E/QVY/JFBhc3NSZWZQdHJAVU9wYXF1ZUpTU3RyaW5nQEBAV1RG
QEBBQlZVU3RyaW5nQEpTQ0BAQFoKICAgICA/Y3JlYXRlQFJlZ0V4cEBKU0NAQFNBUEFWMTJAQUFW
SlNHbG9iYWxEYXRhQDJAQUJWVVN0cmluZ0AyQFc0UmVnRXhwRmxhZ3NAMkBAWgpAQCAtMTMzLDE5
ICsxMjgsMTMgQEAgRVhQT1JUUwogICAgID9kYXlJblllYXJAV1RGQEBZQUhOSEBaCiAgICAgP2Rl
Y3JlbWVudEBSZWZDb3VudGVkTGVha0NvdW50ZXJAV1RGQEBRQUVYWFoKICAgICA/ZGVmYXVsdFZh
bHVlQEpTT2JqZWN0QEpTQ0BAU0E/QVZKU1ZhbHVlQDJAUEJWMTJAUEFWRXhlY1N0YXRlQDJAVzRQ
cmVmZXJyZWRQcmltaXRpdmVUeXBlQDJAQFoKLSAgICA/ZGVmaW5lT3duUHJvcGVydHlASlNHbG9i
YWxPYmplY3RASlNDQEBTQV9OUEFWSlNPYmplY3RAMkBQQVZFeGVjU3RhdGVAMkBBQlZJZGVudGlm
aWVyQDJAQUFWUHJvcGVydHlEZXNjcmlwdG9yQDJAX05AWgotICAgID9kZWZpbmVPd25Qcm9wZXJ0
eUBKU09iamVjdEBKU0NAQFNBX05QQVYxMkBQQVZFeGVjU3RhdGVAMkBBQlZJZGVudGlmaWVyQDJA
QUFWUHJvcGVydHlEZXNjcmlwdG9yQDJAX05AWgogICAgID9kZWxldGVPd25lZFB0ckBXVEZAQFlB
WFBBVUhCSVRNQVBfX0BAQFoKICAgICA/ZGVsZXRlT3duZWRQdHJAV1RGQEBZQVhQQVVIQlJVU0hf
X0BAQFoKICAgICA/ZGVsZXRlT3duZWRQdHJAV1RGQEBZQVhQQVVIRENfX0BAQFoKICAgICA/ZGVs
ZXRlT3duZWRQdHJAV1RGQEBZQVhQQVVIRk9OVF9fQEBAWgogICAgID9kZWxldGVPd25lZFB0ckBX
VEZAQFlBWFBBVUhSR05fX0BAQFoKLSAgICA/ZGVsZXRlUHJvcGVydHlASlNPYmplY3RASlNDQEBT
QV9OUEFWSlNDZWxsQDJAUEFWRXhlY1N0YXRlQDJAQUJWSWRlbnRpZmllckAyQEBaCi0gICAgP2Rl
bGV0ZVByb3BlcnR5QEpTVmFyaWFibGVPYmplY3RASlNDQEBTQV9OUEFWSlNDZWxsQDJAUEFWRXhl
Y1N0YXRlQDJAQUJWSWRlbnRpZmllckAyQEBaCiAgICAgP2RlbGV0ZVByb3BlcnR5QnlJbmRleEBK
U09iamVjdEBKU0NAQFNBX05QQVZKU0NlbGxAMkBQQVZFeGVjU3RhdGVAMkBJQFoKICAgICA/ZGVs
ZXRlVGFibGVASGFzaFRhYmxlQEpTQ0BAUUJFWFhaCi0gICAgP2Rlc3BlY2lmeURpY3Rpb25hcnlG
dW5jdGlvbkBTdHJ1Y3R1cmVASlNDQEBRQUVYQUFWSlNHbG9iYWxEYXRhQDJAQUJWSWRlbnRpZmll
ckAyQEBaCi0gICAgP2Rlc3BlY2lmeUZ1bmN0aW9uVHJhbnNpdGlvbkBTdHJ1Y3R1cmVASlNDQEBT
QVBBVjEyQEFBVkpTR2xvYmFsRGF0YUAyQFBBVjEyQEFCVklkZW50aWZpZXJAMkBAWgogICAgID9k
ZXN0cm95QEpTQ2VsbEBKU0NAQEtBWFBBVjEyQEBaCiAgICAgP2Rlc3Ryb3lASlNHbG9iYWxPYmpl
Y3RASlNDQEBTQVhQQVZKU0NlbGxAMkBAWgogICAgID9kZXN0cm95QE91dE9mTGluZUJpdHNAQml0
VmVjdG9yQFdURkBAU0FYUEFWMTIzQEBaCkBAIC0xNzcsNyArMTY2LDYgQEAgRVhQT1JUUwogICAg
ID9maW5hbGl6ZUBXZWFrSGFuZGxlT3duZXJASlNDQEBVQUVYVj8kSGFuZGxlQFc0VW5rbm93bkBK
U0NAQEAyQFBBWEBaCiAgICAgP2ZpbmRBbGxvY2F0b3JAV2Vha1NldEBKU0NAQEFBRVBBVUZyZWVD
ZWxsQFdlYWtCbG9ja0AyQFhaCiAgICAgP2ZpbmlzaENyZWF0aW9uQERhdGVJbnN0YW5jZUBKU0NA
QElBRVhBQVZKU0dsb2JhbERhdGFAMkBOQFoKLSAgICA/ZmluaXNoQ3JlYXRpb25ASW50ZXJuYWxG
dW5jdGlvbkBKU0NAQElBRVhBQVZKU0dsb2JhbERhdGFAMkBBQlZJZGVudGlmaWVyQDJAQFoKICAg
ICA/ZmluaXNoQ3JlYXRpb25ASlNBcnJheUBKU0NAQElBRVhBQVZKU0dsb2JhbERhdGFAMkBJQFoK
ICAgICA/ZmluaXNoQ3JlYXRpb25AUmVnRXhwT2JqZWN0QEpTQ0BASUFFWFBBVkpTR2xvYmFsT2Jq
ZWN0QDJAQFoKICAgICA/ZmluaXNoQ3JlYXRpb25AU3RyaW5nT2JqZWN0QEpTQ0BASUFFWEFBVkpT
R2xvYmFsRGF0YUAyQFBBVkpTU3RyaW5nQDJAQFoKQEAgLTE4NiwyMSArMTc0LDE2IEBAIEVYUE9S
VFMKICAgICA/ZnJvbUBJZGVudGlmaWVyQEpTQ0BAU0E/QVYxMkBQQVZFeGVjU3RhdGVAMkBJQFoK
ICAgICA/ZnVuY3Rpb25HZXR0ZXJAUHJvcGVydHlTbG90QEpTQ0BAQUJFP0FWSlNWYWx1ZUAyQFBB
VkV4ZWNTdGF0ZUAyQEBaCiAgICAgP2Z1bmN0aW9uTmFtZUBEZWJ1Z2dlckNhbGxGcmFtZUBKU0NA
QFFCRVBCVlVTdHJpbmdAMkBYWgotICAgID9nZXRAU3RydWN0dXJlQEpTQ0BAUUFFSUFBVkpTR2xv
YmFsRGF0YUAyQEFCVklkZW50aWZpZXJAMkBBQUlBQVBBVkpTQ2VsbEAyQEBaCiAgICAgP2dldEBT
dHJ1Y3R1cmVASlNDQEBRQUVJQUFWSlNHbG9iYWxEYXRhQDJAUEFWU3RyaW5nSW1wbEBXVEZAQEFB
SUFBUEFWSlNDZWxsQDJAQFoKICAgICA/Z2V0Q2FsY3VsYXRlZERpc3BsYXlOYW1lQEpTQ0BAWUE/
QVZVU3RyaW5nQDFAUEFWRXhlY1N0YXRlQDFAUEFWSlNPYmplY3RAMUBAWgogICAgID9nZXRDYWxs
RGF0YUBKU0NlbGxASlNDQEBTQT9BVzRDYWxsVHlwZUAyQFBBVjEyQEFBVENhbGxEYXRhQDJAQFoK
ICAgICA/Z2V0Q29uc3RydWN0RGF0YUBKU0NlbGxASlNDQEBTQT9BVzRDb25zdHJ1Y3RUeXBlQDJA
UEFWMTJAQUFUQ29uc3RydWN0RGF0YUAyQEBaCiAgICAgP2dldEN1cnJlbnRMb2NhbFRpbWVAV1RG
QEBZQVhQQVV0bUBAQFoKICAgICA/Z2V0T2JqZWN0QEpTQ2VsbEBKU0NAQFFBRVBBVkpTT2JqZWN0
QDJAWFoKLSAgICA/Z2V0T3duUHJvcGVydHlEZXNjcmlwdG9yQEpTR2xvYmFsT2JqZWN0QEpTQ0BA
U0FfTlBBVkpTT2JqZWN0QDJAUEFWRXhlY1N0YXRlQDJAQUJWSWRlbnRpZmllckAyQEFBVlByb3Bl
cnR5RGVzY3JpcHRvckAyQEBaCi0gICAgP2dldE93blByb3BlcnR5RGVzY3JpcHRvckBKU09iamVj
dEBKU0NAQFNBX05QQVYxMkBQQVZFeGVjU3RhdGVAMkBBQlZJZGVudGlmaWVyQDJAQUFWUHJvcGVy
dHlEZXNjcmlwdG9yQDJAQFoKICAgICA/Z2V0T3duUHJvcGVydHlOYW1lc0BKU09iamVjdEBKU0NA
QFNBWFBBVjEyQFBBVkV4ZWNTdGF0ZUAyQEFBVlByb3BlcnR5TmFtZUFycmF5QDJAVzRFbnVtZXJh
dGlvbk1vZGVAMkBAWgogICAgID9nZXRPd25Qcm9wZXJ0eU5hbWVzQEpTVmFyaWFibGVPYmplY3RA
SlNDQEBTQVhQQVZKU09iamVjdEAyQFBBVkV4ZWNTdGF0ZUAyQEFBVlByb3BlcnR5TmFtZUFycmF5
QDJAVzRFbnVtZXJhdGlvbk1vZGVAMkBAWgotICAgID9nZXRPd25Qcm9wZXJ0eVNsb3RASlNHbG9i
YWxPYmplY3RASlNDQEBTQV9OUEFWSlNDZWxsQDJAUEFWRXhlY1N0YXRlQDJAQUJWSWRlbnRpZmll
ckAyQEFBVlByb3BlcnR5U2xvdEAyQEBaCiAgICAgP2dldE93blByb3BlcnR5U2xvdEJ5SW5kZXhA
SlNBcnJheUBKU0NAQFNBX05QQVZKU0NlbGxAMkBQQVZFeGVjU3RhdGVAMkBJQUFWUHJvcGVydHlT
bG90QDJAQFoKICAgICA/Z2V0T3duUHJvcGVydHlTbG90QnlJbmRleEBKU09iamVjdEBKU0NAQFNB
X05QQVZKU0NlbGxAMkBQQVZFeGVjU3RhdGVAMkBJQUFWUHJvcGVydHlTbG90QDJAQFoKLSAgICA/
Z2V0UHJvcGVydHlEZXNjcmlwdG9yQEpTT2JqZWN0QEpTQ0BAUUFFX05QQVZFeGVjU3RhdGVAMkBB
QlZJZGVudGlmaWVyQDJAQUFWUHJvcGVydHlEZXNjcmlwdG9yQDJAQFoKICAgICA/Z2V0UHJvcGVy
dHlOYW1lc0BKU09iamVjdEBKU0NAQFNBWFBBVjEyQFBBVkV4ZWNTdGF0ZUAyQEFBVlByb3BlcnR5
TmFtZUFycmF5QDJAVzRFbnVtZXJhdGlvbk1vZGVAMkBAWgogICAgID9nZXRTbGljZUBBcmdMaXN0
QEpTQ0BAUUJFWEhBQVYxMkBAWgogICAgID9nZXRTdGFja1RyYWNlQEludGVycHJldGVyQEpTQ0BA
U0FYUEFWSlNHbG9iYWxEYXRhQDJAQUFWPyRWZWN0b3JAVVN0YWNrRnJhbWVASlNDQEAkMEFAQFdU
RkBAQFoKQEAgLTIxMSw3ICsxOTQsNiBAQCBFWFBPUlRTCiAgICAgP2dsb2JhbE9iamVjdENvdW50
QEhlYXBASlNDQEBRQUVJWFoKICAgICA/Z3Jvd0BIYW5kbGVTZXRASlNDQEBBQUVYWFoKICAgICA/
aGFzSW5zdGFuY2VASlNPYmplY3RASlNDQEBTQV9OUEFWMTJAUEFWRXhlY1N0YXRlQDJAVkpTVmFs
dWVAMkAyQFoKLSAgICA/aGFzUHJvcGVydHlASlNPYmplY3RASlNDQEBRQkVfTlBBVkV4ZWNTdGF0
ZUAyQEFCVklkZW50aWZpZXJAMkBAWgogICAgID9oYXNQcm9wZXJ0eUBKU09iamVjdEBKU0NAQFFC
RV9OUEFWRXhlY1N0YXRlQDJASUBaCiAgICAgP2hhc2hTbG93Q2FzZUBTdHJpbmdJbXBsQFdURkBA
QUJFSVhaCiAgICAgP2hlYXBASGVhcEBKU0NAQFNBUEFWMTJAVkpTVmFsdWVAMkBAWgpAQCAtMjY2
LDEyICsyNDgsOCBAQCBFWFBPUlRTCiAgICAgP3Byb3RlY3RlZEdsb2JhbE9iamVjdENvdW50QEhl
YXBASlNDQEBRQUVJWFoKICAgICA/cHJvdGVjdGVkT2JqZWN0Q291bnRASGVhcEBKU0NAQFFBRUlY
WgogICAgID9wcm90ZWN0ZWRPYmplY3RUeXBlQ291bnRzQEhlYXBASlNDQEBRQUU/QVY/JFBhc3NP
d25QdHJAVj8kSGFzaENvdW50ZWRTZXRAUEJEVT8kUHRySGFzaEBQQkRAV1RGQEBVPyRIYXNoVHJh
aXRzQFBCREAyQEBXVEZAQEBXVEZAQFhaCi0gICAgP3B1dEBKU0dsb2JhbE9iamVjdEBKU0NAQFNB
WFBBVkpTQ2VsbEAyQFBBVkV4ZWNTdGF0ZUAyQEFCVklkZW50aWZpZXJAMkBWSlNWYWx1ZUAyQEFB
VlB1dFByb3BlcnR5U2xvdEAyQEBaCi0gICAgP3B1dEBKU09iamVjdEBKU0NAQFNBWFBBVkpTQ2Vs
bEAyQFBBVkV4ZWNTdGF0ZUAyQEFCVklkZW50aWZpZXJAMkBWSlNWYWx1ZUAyQEFBVlB1dFByb3Bl
cnR5U2xvdEAyQEBaCiAgICAgP3B1dEJ5SW5kZXhASlNPYmplY3RASlNDQEBTQVhQQVZKU0NlbGxA
MkBQQVZFeGVjU3RhdGVAMkBJVkpTVmFsdWVAMkBfTkBaCiAgICAgP3B1dERpcmVjdEluZGV4QmV5
b25kVmVjdG9yTGVuZ3RoQEpTQXJyYXlASlNDQEBBQUVfTlBBVkV4ZWNTdGF0ZUAyQElWSlNWYWx1
ZUAyQF9OQFoKLSAgICA/cHV0RGlyZWN0VmlydHVhbEBKU0dsb2JhbE9iamVjdEBKU0NAQFNBWFBB
VkpTT2JqZWN0QDJAUEFWRXhlY1N0YXRlQDJAQUJWSWRlbnRpZmllckAyQFZKU1ZhbHVlQDJASUBa
Ci0gICAgP3B1dERpcmVjdFZpcnR1YWxASlNPYmplY3RASlNDQEBTQVhQQVYxMkBQQVZFeGVjU3Rh
dGVAMkBBQlZJZGVudGlmaWVyQDJAVkpTVmFsdWVAMkBJQFoKICAgICA/cmFuZG9tTnVtYmVyQFdU
RkBAWUFOWFoKICAgICA/cmVjb21waWxlQWxsSlNGdW5jdGlvbnNARGVidWdnZXJASlNDQEBRQUVY
UEFWSlNHbG9iYWxEYXRhQDJAQFoKICAgICA/cmVnRXhwRmxhZ3NASlNDQEBZQT9BVzRSZWdFeHBG
bGFnc0AxQEFCVlVTdHJpbmdAMUBAWgpAQCAtMzA0LDcgKzI4Miw2IEBAIEVYUE9SVFMKICAgICA/
c2V0U2V0dGVyQFByb3BlcnR5RGVzY3JpcHRvckBKU0NAQFFBRVhWSlNWYWx1ZUAyQEBaCiAgICAg
P3NldFVuZGVmaW5lZEBQcm9wZXJ0eURlc2NyaXB0b3JASlNDQEBRQUVYWFoKICAgICA/c2V0VW53
cmFwcGVkT2JqZWN0QEpTR2xvYmFsVGhpc0BKU0NAQElBRVhBQVZKU0dsb2JhbERhdGFAMkBQQVZK
U0dsb2JhbE9iamVjdEAyQEBaCi0gICAgP3NldFVwU3RhdGljRnVuY3Rpb25TbG90QEpTQ0BAWUFf
TlBBVkV4ZWNTdGF0ZUAxQFBCVkhhc2hFbnRyeUAxQFBBVkpTT2JqZWN0QDFAQUJWSWRlbnRpZmll
ckAxQEFBVlByb3BlcnR5U2xvdEAxQEBaCiAgICAgP3NldFdyaXRhYmxlQFByb3BlcnR5RGVzY3Jp
cHRvckBKU0NAQFFBRVhfTkBaCiAgICAgP3NldHRlckBQcm9wZXJ0eURlc2NyaXB0b3JASlNDQEBR
QkU/QVZKU1ZhbHVlQDJAWFoKICAgICA/c2hyaW5rVG9GaXRAU3RyaW5nQnVpbGRlckBXVEZAQFFB
RVhYWgpAQCAtMzIwLDcgKzI5Nyw2IEBAIEVYUE9SVFMKICAgICA/c3RvcFByb2ZpbGluZ0BQcm9m
aWxlckBKU0NAQFFBRT9BVj8kUGFzc1JlZlB0ckBWUHJvZmlsZUBKU0NAQEBXVEZAQFBBVkV4ZWNT
dGF0ZUAyQEFCVlVTdHJpbmdAMkBAWgogICAgID9zdG9wU2FtcGxpbmdASlNHbG9iYWxEYXRhQEpT
Q0BAUUFFWFhaCiAgICAgP3N1YnN0cmluZ1NoYXJpbmdJbXBsQFVTdHJpbmdASlNDQEBRQkU/QVYx
MkBJSUBaCi0gICAgP3N5bWJvbFRhYmxlR2V0QEpTVmFyaWFibGVPYmplY3RASlNDQEBJQUVfTkFC
VklkZW50aWZpZXJAMkBBQVZQcm9wZXJ0eURlc2NyaXB0b3JAMkBAWgogICAgID9zeW50aGVzaXpl
UHJvdG90eXBlQEpTVmFsdWVASlNDQEBRQkVQQVZKU09iamVjdEAyQFBBVkV4ZWNTdGF0ZUAyQEBa
CiAgICAgP3RoaXNPYmplY3RARGVidWdnZXJDYWxsRnJhbWVASlNDQEBRQkVQQVZKU09iamVjdEAy
QFhaCiAgICAgP3Rocm93RXJyb3JASlNDQEBZQT9BVkpTVmFsdWVAMUBQQVZFeGVjU3RhdGVAMUBW
MjFAQFoKQEAgLTM0Myw3ICszMTksNiBAQCBFWFBPUlRTCiAgICAgP3RvU3RyaW5nU2xvd0Nhc2VA
SlNWYWx1ZUBKU0NAQEFCRVBBVkpTU3RyaW5nQDJAUEFWRXhlY1N0YXRlQDJAQFoKICAgICA/dG9U
aGlzT2JqZWN0QEpTT2JqZWN0QEpTQ0BAU0FQQVYxMkBQQVZKU0NlbGxAMkBQQVZFeGVjU3RhdGVA
MkBAWgogICAgID90b1RoaXNPYmplY3RTbG93Q2FzZUBKU1ZhbHVlQEpTQ0BAQUJFUEFWSlNPYmpl
Y3RAMkBQQVZFeGVjU3RhdGVAMkBAWgotICAgID90b1VJbnQzMkBJZGVudGlmaWVyQEpTQ0BAU0FJ
QUJWVVN0cmluZ0AyQEFBX05AWgogICAgID90cmFuc2ZlckBBcnJheUJ1ZmZlckBXVEZAQFFBRV9O
QUFWQXJyYXlCdWZmZXJDb250ZW50c0AyQEFBVj8kVmVjdG9yQFY/JFJlZlB0ckBWQXJyYXlCdWZm
ZXJWaWV3QFdURkBAQFdURkBAJDBBQEAyQEBaCiAgICAgP3RyeUZhc3RDYWxsb2NAV1RGQEBZQT9B
VVRyeU1hbGxvY1JldHVyblZhbHVlQDFASUlAWgogICAgID90cnlGYXN0TWFsbG9jQFdURkBAWUE/
QVVUcnlNYWxsb2NSZXR1cm5WYWx1ZUAxQElAWgpJbmRleDogU291cmNlL0phdmFTY3JpcHRDb3Jl
L0phdmFTY3JpcHRDb3JlLnhjb2RlcHJvai9wcm9qZWN0LnBieHByb2oKPT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0g
U291cmNlL0phdmFTY3JpcHRDb3JlL0phdmFTY3JpcHRDb3JlLnhjb2RlcHJvai9wcm9qZWN0LnBi
eHByb2oJKHJldmlzaW9uIDExNjY3MCkKKysrIFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9KYXZhU2Ny
aXB0Q29yZS54Y29kZXByb2ovcHJvamVjdC5wYnhwcm9qCSh3b3JraW5nIGNvcHkpCkBAIC0zNjIs
NiArMzYyLDcgQEAKIAkJODYwNEY1MDUxNDNDRTFDMjAwQjI5NUY1IC8qIEpTR2xvYmFsVGhpcy5o
IGluIEhlYWRlcnMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gODYwNEY1MDMx
NDNDRTFDMTAwQjI5NUY1IC8qIEpTR2xvYmFsVGhpcy5oICovOyBzZXR0aW5ncyA9IHtBVFRSSUJV
VEVTID0gKFByaXZhdGUsICk7IH07IH07CiAJCTg2MEJEODAxMTQ4RUE2RjIwMDExMkIyRiAvKiBJ
bnRyaW5zaWMuaCBpbiBIZWFkZXJzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9
IDg2QkY2NDJBMTQ4REIyQjUwMDRERTM2QSAvKiBJbnRyaW5zaWMuaCAqLzsgc2V0dGluZ3MgPSB7
QVRUUklCVVRFUyA9IChQcml2YXRlLCApOyB9OyB9OwogCQk4NjEyRTRDRDE1MjM4OUVDMDBDODM2
QkUgLyogTWF0Y2hSZXN1bHQuaCBpbiBIZWFkZXJzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsg
ZmlsZVJlZiA9IDg2MTJFNENCMTUyMjkxODQwMEM4MzZCRSAvKiBNYXRjaFJlc3VsdC5oICovOyBz
ZXR0aW5ncyA9IHtBVFRSSUJVVEVTID0gKFByaXZhdGUsICk7IH07IH07CisJCTg2MTU4QUIzMTU1
QzhCNDAwMEI0NUM5QyAvKiBQcm9wZXJ0eU5hbWUuaCBpbiBIZWFkZXJzICovID0ge2lzYSA9IFBC
WEJ1aWxkRmlsZTsgZmlsZVJlZiA9IDg2MTU4QUIyMTU1QzhCM0YwMEI0NUM5QyAvKiBQcm9wZXJ0
eU5hbWUuaCAqLzsgc2V0dGluZ3MgPSB7QVRUUklCVVRFUyA9IChQcml2YXRlLCApOyB9OyB9Owog
CQk4NjNCMjNFMDBGQzYxMTg5MDA3MDNBQTQgLyogTWFjcm9Bc3NlbWJsZXJDb2RlUmVmLmggaW4g
SGVhZGVycyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSA4NjNCMjNERjBGQzYw
RTYyMDA3MDNBQTQgLyogTWFjcm9Bc3NlbWJsZXJDb2RlUmVmLmggKi87IHNldHRpbmdzID0ge0FU
VFJJQlVURVMgPSAoUHJpdmF0ZSwgKTsgfTsgfTsKIAkJODYzQzZEOUMxNTIxMTExQTAwNTg1RTRF
IC8qIFlhcnJDYW5vbmljYWxpemVVQ1MyLmNwcCBpbiBTb3VyY2VzICovID0ge2lzYSA9IFBCWEJ1
aWxkRmlsZTsgZmlsZVJlZiA9IDg2M0M2RDk4MTUyMTExMTIwMDU4NUU0RSAvKiBZYXJyQ2Fub25p
Y2FsaXplVUNTMi5jcHAgKi87IH07CiAJCTg2NDJDNTEwMTUxQzA2QTkwMDQ2RDRFRiAvKiBSZWdF
eHBDYWNoZWRSZXN1bHQuY3BwIGluIFNvdXJjZXMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBm
aWxlUmVmID0gODZGNzVFRkIxNTFDMDYyRjAwN0M5QkEzIC8qIFJlZ0V4cENhY2hlZFJlc3VsdC5j
cHAgKi87IH07CkBAIC0xMDIwLDYgKzEwMjEsNyBAQAogCQk4NjA0RjRGMjE0M0E2QzQ0MDBCMjk1
RjUgLyogQ2hhbmdlTG9nICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGxhc3RLbm93bkZp
bGVUeXBlID0gdGV4dDsgcGF0aCA9IENoYW5nZUxvZzsgc291cmNlVHJlZSA9ICI8Z3JvdXA+Ijsg
fTsKIAkJODYwNEY1MDMxNDNDRTFDMTAwQjI5NUY1IC8qIEpTR2xvYmFsVGhpcy5oICovID0ge2lz
YSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBl
ID0gc291cmNlY29kZS5jLmg7IHBhdGggPSBKU0dsb2JhbFRoaXMuaDsgc291cmNlVHJlZSA9ICI8
Z3JvdXA+IjsgfTsKIAkJODYxMkU0Q0IxNTIyOTE4NDAwQzgzNkJFIC8qIE1hdGNoUmVzdWx0Lmgg
Ki8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3du
RmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmMuaDsgcGF0aCA9IE1hdGNoUmVzdWx0Lmg7IHNvdXJjZVRy
ZWUgPSAiPGdyb3VwPiI7IH07CisJCTg2MTU4QUIyMTU1QzhCM0YwMEI0NUM5QyAvKiBQcm9wZXJ0
eU5hbWUuaCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBs
YXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuYy5oOyBwYXRoID0gUHJvcGVydHlOYW1lLmg7
IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CiAJCTg2M0IyM0RGMEZDNjBFNjIwMDcwM0FBNCAv
KiBNYWNyb0Fzc2VtYmxlckNvZGVSZWYuaCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBm
aWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuYy5oOyBwYXRo
ID0gTWFjcm9Bc3NlbWJsZXJDb2RlUmVmLmg7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CiAJ
CTg2M0M2RDk4MTUyMTExMTIwMDU4NUU0RSAvKiBZYXJyQ2Fub25pY2FsaXplVUNTMi5jcHAgKi8g
PSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmls
ZVR5cGUgPSBzb3VyY2Vjb2RlLmNwcC5jcHA7IG5hbWUgPSBZYXJyQ2Fub25pY2FsaXplVUNTMi5j
cHA7IHBhdGggPSB5YXJyL1lhcnJDYW5vbmljYWxpemVVQ1MyLmNwcDsgc291cmNlVHJlZSA9ICI8
Z3JvdXA+IjsgfTsKIAkJODYzQzZEOTkxNTIxMTExMjAwNTg1RTRFIC8qIFlhcnJDYW5vbmljYWxp
emVVQ1MyLmggKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsg
bGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmMuaDsgbmFtZSA9IFlhcnJDYW5vbmljYWxp
emVVQ1MyLmg7IHBhdGggPSB5YXJyL1lhcnJDYW5vbmljYWxpemVVQ1MyLmg7IHNvdXJjZVRyZWUg
PSAiPGdyb3VwPiI7IH07CkBAIC0xOTM2LDYgKzE5MzgsNyBAQAogCQkJCUE3RkI2MEEzMTAzRjdE
QzIwMDE3QTI4NiAvKiBQcm9wZXJ0eURlc2NyaXB0b3IuY3BwICovLAogCQkJCUE3RkI2MDRCMTAz
RjVFQUIwMDE3QTI4NiAvKiBQcm9wZXJ0eURlc2NyaXB0b3IuaCAqLywKIAkJCQlCQzk1NDM3QzBF
QkE3MEZEMDA3MkI2RDMgLyogUHJvcGVydHlNYXBIYXNoVGFibGUuaCAqLywKKwkJCQk4NjE1OEFC
MjE1NUM4QjNGMDBCNDVDOUMgLyogUHJvcGVydHlOYW1lLmggKi8sCiAJCQkJNjU0MDBDMEYwQTY5
QkFGMjAwNTA5ODg3IC8qIFByb3BlcnR5TmFtZUFycmF5LmNwcCAqLywKIAkJCQk2NTQwMEMxMDBB
NjlCQUYyMDA1MDk4ODcgLyogUHJvcGVydHlOYW1lQXJyYXkuaCAqLywKIAkJCQk2NTYyMUU2QjA4
OUU4NTk3MDA3NjBGMzUgLyogUHJvcGVydHlTbG90LmNwcCAqLywKQEAgLTI1ODAsNiArMjU4Myw3
IEBACiAJCQkJMEYxRTNBNDcxNTM0Q0JCOTAwMEY5NDU2IC8qIERGR0RvdWJsZUZvcm1hdFN0YXRl
LmggaW4gSGVhZGVycyAqLywKIAkJCQkxNDE1MDEzMzE1NEJCMTNGMDA1RDhDOTggLyogV2Vha1Nl
dElubGluZXMuaCBpbiBIZWFkZXJzICovLAogCQkJCTE0ODE2RTFDMTU0Q0M1NkMwMEI4MDU0QyAv
KiBCbG9ja0FsbG9jYXRvci5oIGluIEhlYWRlcnMgKi8sCisJCQkJODYxNThBQjMxNTVDOEI0MDAw
QjQ1QzlDIC8qIFByb3BlcnR5TmFtZS5oIGluIEhlYWRlcnMgKi8sCiAJCQkpOwogCQkJcnVuT25s
eUZvckRlcGxveW1lbnRQb3N0cHJvY2Vzc2luZyA9IDA7CiAJCX07CkluZGV4OiBTb3VyY2UvSmF2
YVNjcmlwdENvcmUvZGVidWdnZXIvRGVidWdnZXJBY3RpdmF0aW9uLmNwcAo9PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0t
LSBTb3VyY2UvSmF2YVNjcmlwdENvcmUvZGVidWdnZXIvRGVidWdnZXJBY3RpdmF0aW9uLmNwcAko
cmV2aXNpb24gMTE2NjY3KQorKysgU291cmNlL0phdmFTY3JpcHRDb3JlL2RlYnVnZ2VyL0RlYnVn
Z2VyQWN0aXZhdGlvbi5jcHAJKHdvcmtpbmcgY29weSkKQEAgLTY1LDI1ICs2NSwyNSBAQCBVU3Ry
aW5nIERlYnVnZ2VyQWN0aXZhdGlvbjo6Y2xhc3NOYW1lKGNvCiAgICAgcmV0dXJuIHRoaXNPYmpl
Y3QtPm1fYWN0aXZhdGlvbi0+bWV0aG9kVGFibGUoKS0+Y2xhc3NOYW1lKHRoaXNPYmplY3QtPm1f
YWN0aXZhdGlvbi5nZXQoKSk7CiB9CiAKLWJvb2wgRGVidWdnZXJBY3RpdmF0aW9uOjpnZXRPd25Q
cm9wZXJ0eVNsb3QoSlNDZWxsKiBjZWxsLCBFeGVjU3RhdGUqIGV4ZWMsIGNvbnN0IElkZW50aWZp
ZXImIHByb3BlcnR5TmFtZSwgUHJvcGVydHlTbG90JiBzbG90KQorYm9vbCBEZWJ1Z2dlckFjdGl2
YXRpb246OmdldE93blByb3BlcnR5U2xvdChKU0NlbGwqIGNlbGwsIEV4ZWNTdGF0ZSogZXhlYywg
UHJvcGVydHlOYW1lIHByb3BlcnR5TmFtZSwgUHJvcGVydHlTbG90JiBzbG90KQogewogICAgIERl
YnVnZ2VyQWN0aXZhdGlvbiogdGhpc09iamVjdCA9IGpzQ2FzdDxEZWJ1Z2dlckFjdGl2YXRpb24q
PihjZWxsKTsKICAgICByZXR1cm4gdGhpc09iamVjdC0+bV9hY3RpdmF0aW9uLT5tZXRob2RUYWJs
ZSgpLT5nZXRPd25Qcm9wZXJ0eVNsb3QodGhpc09iamVjdC0+bV9hY3RpdmF0aW9uLmdldCgpLCBl
eGVjLCBwcm9wZXJ0eU5hbWUsIHNsb3QpOwogfQogCi12b2lkIERlYnVnZ2VyQWN0aXZhdGlvbjo6
cHV0KEpTQ2VsbCogY2VsbCwgRXhlY1N0YXRlKiBleGVjLCBjb25zdCBJZGVudGlmaWVyJiBwcm9w
ZXJ0eU5hbWUsIEpTVmFsdWUgdmFsdWUsIFB1dFByb3BlcnR5U2xvdCYgc2xvdCkKK3ZvaWQgRGVi
dWdnZXJBY3RpdmF0aW9uOjpwdXQoSlNDZWxsKiBjZWxsLCBFeGVjU3RhdGUqIGV4ZWMsIFByb3Bl
cnR5TmFtZSBwcm9wZXJ0eU5hbWUsIEpTVmFsdWUgdmFsdWUsIFB1dFByb3BlcnR5U2xvdCYgc2xv
dCkKIHsKICAgICBEZWJ1Z2dlckFjdGl2YXRpb24qIHRoaXNPYmplY3QgPSBqc0Nhc3Q8RGVidWdn
ZXJBY3RpdmF0aW9uKj4oY2VsbCk7CiAgICAgdGhpc09iamVjdC0+bV9hY3RpdmF0aW9uLT5tZXRo
b2RUYWJsZSgpLT5wdXQodGhpc09iamVjdC0+bV9hY3RpdmF0aW9uLmdldCgpLCBleGVjLCBwcm9w
ZXJ0eU5hbWUsIHZhbHVlLCBzbG90KTsKIH0KIAotdm9pZCBEZWJ1Z2dlckFjdGl2YXRpb246OnB1
dERpcmVjdFZpcnR1YWwoSlNPYmplY3QqIG9iamVjdCwgRXhlY1N0YXRlKiBleGVjLCBjb25zdCBJ
ZGVudGlmaWVyJiBwcm9wZXJ0eU5hbWUsIEpTVmFsdWUgdmFsdWUsIHVuc2lnbmVkIGF0dHJpYnV0
ZXMpCit2b2lkIERlYnVnZ2VyQWN0aXZhdGlvbjo6cHV0RGlyZWN0VmlydHVhbChKU09iamVjdCog
b2JqZWN0LCBFeGVjU3RhdGUqIGV4ZWMsIFByb3BlcnR5TmFtZSBwcm9wZXJ0eU5hbWUsIEpTVmFs
dWUgdmFsdWUsIHVuc2lnbmVkIGF0dHJpYnV0ZXMpCiB7CiAgICAgRGVidWdnZXJBY3RpdmF0aW9u
KiB0aGlzT2JqZWN0ID0ganNDYXN0PERlYnVnZ2VyQWN0aXZhdGlvbio+KG9iamVjdCk7CiAgICAg
dGhpc09iamVjdC0+bV9hY3RpdmF0aW9uLT5tZXRob2RUYWJsZSgpLT5wdXREaXJlY3RWaXJ0dWFs
KHRoaXNPYmplY3QtPm1fYWN0aXZhdGlvbi5nZXQoKSwgZXhlYywgcHJvcGVydHlOYW1lLCB2YWx1
ZSwgYXR0cmlidXRlcyk7CiB9CiAKLWJvb2wgRGVidWdnZXJBY3RpdmF0aW9uOjpkZWxldGVQcm9w
ZXJ0eShKU0NlbGwqIGNlbGwsIEV4ZWNTdGF0ZSogZXhlYywgY29uc3QgSWRlbnRpZmllciYgcHJv
cGVydHlOYW1lKQorYm9vbCBEZWJ1Z2dlckFjdGl2YXRpb246OmRlbGV0ZVByb3BlcnR5KEpTQ2Vs
bCogY2VsbCwgRXhlY1N0YXRlKiBleGVjLCBQcm9wZXJ0eU5hbWUgcHJvcGVydHlOYW1lKQogewog
ICAgIERlYnVnZ2VyQWN0aXZhdGlvbiogdGhpc09iamVjdCA9IGpzQ2FzdDxEZWJ1Z2dlckFjdGl2
YXRpb24qPihjZWxsKTsKICAgICByZXR1cm4gdGhpc09iamVjdC0+bV9hY3RpdmF0aW9uLT5tZXRo
b2RUYWJsZSgpLT5kZWxldGVQcm9wZXJ0eSh0aGlzT2JqZWN0LT5tX2FjdGl2YXRpb24uZ2V0KCks
IGV4ZWMsIHByb3BlcnR5TmFtZSk7CkBAIC05NSwxMyArOTUsMTMgQEAgdm9pZCBEZWJ1Z2dlckFj
dGl2YXRpb246OmdldE93blByb3BlcnR5TgogICAgIHRoaXNPYmplY3QtPm1fYWN0aXZhdGlvbi0+
bWV0aG9kVGFibGUoKS0+Z2V0UHJvcGVydHlOYW1lcyh0aGlzT2JqZWN0LT5tX2FjdGl2YXRpb24u
Z2V0KCksIGV4ZWMsIHByb3BlcnR5TmFtZXMsIG1vZGUpOwogfQogCi1ib29sIERlYnVnZ2VyQWN0
aXZhdGlvbjo6Z2V0T3duUHJvcGVydHlEZXNjcmlwdG9yKEpTT2JqZWN0KiBvYmplY3QsIEV4ZWNT
dGF0ZSogZXhlYywgY29uc3QgSWRlbnRpZmllciYgcHJvcGVydHlOYW1lLCBQcm9wZXJ0eURlc2Ny
aXB0b3ImIGRlc2NyaXB0b3IpCitib29sIERlYnVnZ2VyQWN0aXZhdGlvbjo6Z2V0T3duUHJvcGVy
dHlEZXNjcmlwdG9yKEpTT2JqZWN0KiBvYmplY3QsIEV4ZWNTdGF0ZSogZXhlYywgUHJvcGVydHlO
YW1lIHByb3BlcnR5TmFtZSwgUHJvcGVydHlEZXNjcmlwdG9yJiBkZXNjcmlwdG9yKQogewogICAg
IERlYnVnZ2VyQWN0aXZhdGlvbiogdGhpc09iamVjdCA9IGpzQ2FzdDxEZWJ1Z2dlckFjdGl2YXRp
b24qPihvYmplY3QpOwogICAgIHJldHVybiB0aGlzT2JqZWN0LT5tX2FjdGl2YXRpb24tPm1ldGhv
ZFRhYmxlKCktPmdldE93blByb3BlcnR5RGVzY3JpcHRvcih0aGlzT2JqZWN0LT5tX2FjdGl2YXRp
b24uZ2V0KCksIGV4ZWMsIHByb3BlcnR5TmFtZSwgZGVzY3JpcHRvcik7CiB9CiAKLWJvb2wgRGVi
dWdnZXJBY3RpdmF0aW9uOjpkZWZpbmVPd25Qcm9wZXJ0eShKU09iamVjdCogb2JqZWN0LCBFeGVj
U3RhdGUqIGV4ZWMsIGNvbnN0IElkZW50aWZpZXImIHByb3BlcnR5TmFtZSwgUHJvcGVydHlEZXNj
cmlwdG9yJiBkZXNjcmlwdG9yLCBib29sIHNob3VsZFRocm93KQorYm9vbCBEZWJ1Z2dlckFjdGl2
YXRpb246OmRlZmluZU93blByb3BlcnR5KEpTT2JqZWN0KiBvYmplY3QsIEV4ZWNTdGF0ZSogZXhl
YywgUHJvcGVydHlOYW1lIHByb3BlcnR5TmFtZSwgUHJvcGVydHlEZXNjcmlwdG9yJiBkZXNjcmlw
dG9yLCBib29sIHNob3VsZFRocm93KQogewogICAgIERlYnVnZ2VyQWN0aXZhdGlvbiogdGhpc09i
amVjdCA9IGpzQ2FzdDxEZWJ1Z2dlckFjdGl2YXRpb24qPihvYmplY3QpOwogICAgIHJldHVybiB0
aGlzT2JqZWN0LT5tX2FjdGl2YXRpb24tPm1ldGhvZFRhYmxlKCktPmRlZmluZU93blByb3BlcnR5
KHRoaXNPYmplY3QtPm1fYWN0aXZhdGlvbi5nZXQoKSwgZXhlYywgcHJvcGVydHlOYW1lLCBkZXNj
cmlwdG9yLCBzaG91bGRUaHJvdyk7CkluZGV4OiBTb3VyY2UvSmF2YVNjcmlwdENvcmUvZGVidWdn
ZXIvRGVidWdnZXJBY3RpdmF0aW9uLmgKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL0phdmFTY3JpcHRD
b3JlL2RlYnVnZ2VyL0RlYnVnZ2VyQWN0aXZhdGlvbi5oCShyZXZpc2lvbiAxMTY2NjcpCisrKyBT
b3VyY2UvSmF2YVNjcmlwdENvcmUvZGVidWdnZXIvRGVidWdnZXJBY3RpdmF0aW9uLmgJKHdvcmtp
bmcgY29weSkKQEAgLTQzLDEzICs0MywxMyBAQCBuYW1lc3BhY2UgSlNDIHsKIAogICAgICAgICBz
dGF0aWMgdm9pZCB2aXNpdENoaWxkcmVuKEpTQ2VsbCosIFNsb3RWaXNpdG9yJik7CiAgICAgICAg
IHN0YXRpYyBVU3RyaW5nIGNsYXNzTmFtZShjb25zdCBKU09iamVjdCopOwotICAgICAgICBzdGF0
aWMgYm9vbCBnZXRPd25Qcm9wZXJ0eVNsb3QoSlNDZWxsKiwgRXhlY1N0YXRlKiwgY29uc3QgSWRl
bnRpZmllciYgcHJvcGVydHlOYW1lLCBQcm9wZXJ0eVNsb3QmKTsKLSAgICAgICAgc3RhdGljIHZv
aWQgcHV0KEpTQ2VsbCosIEV4ZWNTdGF0ZSosIGNvbnN0IElkZW50aWZpZXImIHByb3BlcnR5TmFt
ZSwgSlNWYWx1ZSwgUHV0UHJvcGVydHlTbG90Jik7Ci0gICAgICAgIHN0YXRpYyB2b2lkIHB1dERp
cmVjdFZpcnR1YWwoSlNPYmplY3QqLCBFeGVjU3RhdGUqLCBjb25zdCBJZGVudGlmaWVyJiBwcm9w
ZXJ0eU5hbWUsIEpTVmFsdWUsIHVuc2lnbmVkIGF0dHJpYnV0ZXMpOwotICAgICAgICBzdGF0aWMg
Ym9vbCBkZWxldGVQcm9wZXJ0eShKU0NlbGwqLCBFeGVjU3RhdGUqLCBjb25zdCBJZGVudGlmaWVy
JiBwcm9wZXJ0eU5hbWUpOworICAgICAgICBzdGF0aWMgYm9vbCBnZXRPd25Qcm9wZXJ0eVNsb3Qo
SlNDZWxsKiwgRXhlY1N0YXRlKiwgUHJvcGVydHlOYW1lLCBQcm9wZXJ0eVNsb3QmKTsKKyAgICAg
ICAgc3RhdGljIHZvaWQgcHV0KEpTQ2VsbCosIEV4ZWNTdGF0ZSosIFByb3BlcnR5TmFtZSwgSlNW
YWx1ZSwgUHV0UHJvcGVydHlTbG90Jik7CisgICAgICAgIHN0YXRpYyB2b2lkIHB1dERpcmVjdFZp
cnR1YWwoSlNPYmplY3QqLCBFeGVjU3RhdGUqLCBQcm9wZXJ0eU5hbWUsIEpTVmFsdWUsIHVuc2ln
bmVkIGF0dHJpYnV0ZXMpOworICAgICAgICBzdGF0aWMgYm9vbCBkZWxldGVQcm9wZXJ0eShKU0Nl
bGwqLCBFeGVjU3RhdGUqLCBQcm9wZXJ0eU5hbWUpOwogICAgICAgICBzdGF0aWMgdm9pZCBnZXRP
d25Qcm9wZXJ0eU5hbWVzKEpTT2JqZWN0KiwgRXhlY1N0YXRlKiwgUHJvcGVydHlOYW1lQXJyYXkm
LCBFbnVtZXJhdGlvbk1vZGUpOwotICAgICAgICBzdGF0aWMgYm9vbCBnZXRPd25Qcm9wZXJ0eURl
c2NyaXB0b3IoSlNPYmplY3QqLCBFeGVjU3RhdGUqLCBjb25zdCBJZGVudGlmaWVyJiwgUHJvcGVy
dHlEZXNjcmlwdG9yJik7Ci0gICAgICAgIHN0YXRpYyBib29sIGRlZmluZU93blByb3BlcnR5KEpT
T2JqZWN0KiwgRXhlY1N0YXRlKiwgY29uc3QgSWRlbnRpZmllciYgcHJvcGVydHlOYW1lLCBQcm9w
ZXJ0eURlc2NyaXB0b3ImLCBib29sIHNob3VsZFRocm93KTsKKyAgICAgICAgc3RhdGljIGJvb2wg
Z2V0T3duUHJvcGVydHlEZXNjcmlwdG9yKEpTT2JqZWN0KiwgRXhlY1N0YXRlKiwgUHJvcGVydHlO
YW1lLCBQcm9wZXJ0eURlc2NyaXB0b3ImKTsKKyAgICAgICAgc3RhdGljIGJvb2wgZGVmaW5lT3du
UHJvcGVydHkoSlNPYmplY3QqLCBFeGVjU3RhdGUqLCBQcm9wZXJ0eU5hbWUsIFByb3BlcnR5RGVz
Y3JpcHRvciYsIGJvb2wgc2hvdWxkVGhyb3cpOwogCiAgICAgICAgIEpTX0VYUE9SVERBVEEgc3Rh
dGljIGNvbnN0IENsYXNzSW5mbyBzX2luZm87CiAKSW5kZXg6IFNvdXJjZS9KYXZhU2NyaXB0Q29y
ZS9ydW50aW1lL0FyZ3VtZW50cy5jcHAKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL0phdmFTY3JpcHRD
b3JlL3J1bnRpbWUvQXJndW1lbnRzLmNwcAkocmV2aXNpb24gMTE2NjY3KQorKysgU291cmNlL0ph
dmFTY3JpcHRDb3JlL3J1bnRpbWUvQXJndW1lbnRzLmNwcAkod29ya2luZyBjb3B5KQpAQCAtMTI0
LDEyICsxMjQsMTIgQEAgdm9pZCBBcmd1bWVudHM6OmNyZWF0ZVN0cmljdE1vZGVDYWxsZWVJZgog
ICAgIG1ldGhvZFRhYmxlKCktPmRlZmluZU93blByb3BlcnR5KHRoaXMsIGV4ZWMsIGV4ZWMtPnBy
b3BlcnR5TmFtZXMoKS5jYWxsZWUsIGRlc2NyaXB0b3IsIGZhbHNlKTsKIH0KIAotYm9vbCBBcmd1
bWVudHM6OmdldE93blByb3BlcnR5U2xvdChKU0NlbGwqIGNlbGwsIEV4ZWNTdGF0ZSogZXhlYywg
Y29uc3QgSWRlbnRpZmllciYgcHJvcGVydHlOYW1lLCBQcm9wZXJ0eVNsb3QmIHNsb3QpCitib29s
IEFyZ3VtZW50czo6Z2V0T3duUHJvcGVydHlTbG90KEpTQ2VsbCogY2VsbCwgRXhlY1N0YXRlKiBl
eGVjLCBQcm9wZXJ0eU5hbWUgcHJvcGVydHlOYW1lLCBQcm9wZXJ0eVNsb3QmIHNsb3QpCiB7CiAg
ICAgQXJndW1lbnRzKiB0aGlzT2JqZWN0ID0ganNDYXN0PEFyZ3VtZW50cyo+KGNlbGwpOwotICAg
IGJvb2wgaXNBcnJheUluZGV4OwotICAgIHVuc2lnbmVkIGkgPSBwcm9wZXJ0eU5hbWUudG9BcnJh
eUluZGV4KGlzQXJyYXlJbmRleCk7Ci0gICAgaWYgKGlzQXJyYXlJbmRleCAmJiBpIDwgdGhpc09i
amVjdC0+ZC0+bnVtQXJndW1lbnRzICYmICghdGhpc09iamVjdC0+ZC0+ZGVsZXRlZEFyZ3VtZW50
cyB8fCAhdGhpc09iamVjdC0+ZC0+ZGVsZXRlZEFyZ3VtZW50c1tpXSkpIHsKKyAgICB1bnNpZ25l
ZCBpID0gcHJvcGVydHlOYW1lLmFzSW5kZXgoKTsKKyAgICBpZiAoaSA8IHRoaXNPYmplY3QtPmQt
Pm51bUFyZ3VtZW50cyAmJiAoIXRoaXNPYmplY3QtPmQtPmRlbGV0ZWRBcmd1bWVudHMgfHwgIXRo
aXNPYmplY3QtPmQtPmRlbGV0ZWRBcmd1bWVudHNbaV0pKSB7CisgICAgICAgIEFTU0VSVChpIDwg
UHJvcGVydHlOYW1lOjpOb3RBbkluZGV4KTsKICAgICAgICAgc2xvdC5zZXRWYWx1ZSh0aGlzT2Jq
ZWN0LT5hcmd1bWVudChpKS5nZXQoKSk7CiAgICAgICAgIHJldHVybiB0cnVlOwogICAgIH0KQEAg
LTE1MywxMiArMTUzLDEyIEBAIGJvb2wgQXJndW1lbnRzOjpnZXRPd25Qcm9wZXJ0eVNsb3QoSlND
ZWwKICAgICByZXR1cm4gSlNPYmplY3Q6OmdldE93blByb3BlcnR5U2xvdCh0aGlzT2JqZWN0LCBl
eGVjLCBwcm9wZXJ0eU5hbWUsIHNsb3QpOwogfQogCi1ib29sIEFyZ3VtZW50czo6Z2V0T3duUHJv
cGVydHlEZXNjcmlwdG9yKEpTT2JqZWN0KiBvYmplY3QsIEV4ZWNTdGF0ZSogZXhlYywgY29uc3Qg
SWRlbnRpZmllciYgcHJvcGVydHlOYW1lLCBQcm9wZXJ0eURlc2NyaXB0b3ImIGRlc2NyaXB0b3Ip
Citib29sIEFyZ3VtZW50czo6Z2V0T3duUHJvcGVydHlEZXNjcmlwdG9yKEpTT2JqZWN0KiBvYmpl
Y3QsIEV4ZWNTdGF0ZSogZXhlYywgUHJvcGVydHlOYW1lIHByb3BlcnR5TmFtZSwgUHJvcGVydHlE
ZXNjcmlwdG9yJiBkZXNjcmlwdG9yKQogewogICAgIEFyZ3VtZW50cyogdGhpc09iamVjdCA9IGpz
Q2FzdDxBcmd1bWVudHMqPihvYmplY3QpOwotICAgIGJvb2wgaXNBcnJheUluZGV4OwotICAgIHVu
c2lnbmVkIGkgPSBwcm9wZXJ0eU5hbWUudG9BcnJheUluZGV4KGlzQXJyYXlJbmRleCk7Ci0gICAg
aWYgKGlzQXJyYXlJbmRleCAmJiBpIDwgdGhpc09iamVjdC0+ZC0+bnVtQXJndW1lbnRzICYmICgh
dGhpc09iamVjdC0+ZC0+ZGVsZXRlZEFyZ3VtZW50cyB8fCAhdGhpc09iamVjdC0+ZC0+ZGVsZXRl
ZEFyZ3VtZW50c1tpXSkpIHsKKyAgICB1bnNpZ25lZCBpID0gcHJvcGVydHlOYW1lLmFzSW5kZXgo
KTsKKyAgICBpZiAoaSA8IHRoaXNPYmplY3QtPmQtPm51bUFyZ3VtZW50cyAmJiAoIXRoaXNPYmpl
Y3QtPmQtPmRlbGV0ZWRBcmd1bWVudHMgfHwgIXRoaXNPYmplY3QtPmQtPmRlbGV0ZWRBcmd1bWVu
dHNbaV0pKSB7CisgICAgICAgIEFTU0VSVChpIDwgUHJvcGVydHlOYW1lOjpOb3RBbkluZGV4KTsK
ICAgICAgICAgZGVzY3JpcHRvci5zZXREZXNjcmlwdG9yKHRoaXNPYmplY3QtPmFyZ3VtZW50KGkp
LmdldCgpLCBOb25lKTsKICAgICAgICAgcmV0dXJuIHRydWU7CiAgICAgfQpAQCAtMjA4LDEyICsy
MDgsMTIgQEAgdm9pZCBBcmd1bWVudHM6OnB1dEJ5SW5kZXgoSlNDZWxsKiBjZWxsLAogICAgIEpT
T2JqZWN0OjpwdXQodGhpc09iamVjdCwgZXhlYywgSWRlbnRpZmllcihleGVjLCBVU3RyaW5nOjpu
dW1iZXIoaSkpLCB2YWx1ZSwgc2xvdCk7CiB9CiAKLXZvaWQgQXJndW1lbnRzOjpwdXQoSlNDZWxs
KiBjZWxsLCBFeGVjU3RhdGUqIGV4ZWMsIGNvbnN0IElkZW50aWZpZXImIHByb3BlcnR5TmFtZSwg
SlNWYWx1ZSB2YWx1ZSwgUHV0UHJvcGVydHlTbG90JiBzbG90KQordm9pZCBBcmd1bWVudHM6OnB1
dChKU0NlbGwqIGNlbGwsIEV4ZWNTdGF0ZSogZXhlYywgUHJvcGVydHlOYW1lIHByb3BlcnR5TmFt
ZSwgSlNWYWx1ZSB2YWx1ZSwgUHV0UHJvcGVydHlTbG90JiBzbG90KQogewogICAgIEFyZ3VtZW50
cyogdGhpc09iamVjdCA9IGpzQ2FzdDxBcmd1bWVudHMqPihjZWxsKTsKLSAgICBib29sIGlzQXJy
YXlJbmRleDsKLSAgICB1bnNpZ25lZCBpID0gcHJvcGVydHlOYW1lLnRvQXJyYXlJbmRleChpc0Fy
cmF5SW5kZXgpOwotICAgIGlmIChpc0FycmF5SW5kZXggJiYgaSA8IHRoaXNPYmplY3QtPmQtPm51
bUFyZ3VtZW50cyAmJiAoIXRoaXNPYmplY3QtPmQtPmRlbGV0ZWRBcmd1bWVudHMgfHwgIXRoaXNP
YmplY3QtPmQtPmRlbGV0ZWRBcmd1bWVudHNbaV0pKSB7CisgICAgdW5zaWduZWQgaSA9IHByb3Bl
cnR5TmFtZS5hc0luZGV4KCk7CisgICAgaWYgKGkgPCB0aGlzT2JqZWN0LT5kLT5udW1Bcmd1bWVu
dHMgJiYgKCF0aGlzT2JqZWN0LT5kLT5kZWxldGVkQXJndW1lbnRzIHx8ICF0aGlzT2JqZWN0LT5k
LT5kZWxldGVkQXJndW1lbnRzW2ldKSkgeworICAgICAgICBBU1NFUlQoaSA8IFByb3BlcnR5TmFt
ZTo6Tm90QW5JbmRleCk7CiAgICAgICAgIHRoaXNPYmplY3QtPmFyZ3VtZW50KGkpLnNldChleGVj
LT5nbG9iYWxEYXRhKCksIHRoaXNPYmplY3QsIHZhbHVlKTsKICAgICAgICAgcmV0dXJuOwogICAg
IH0KQEAgLTI1OSwxNSArMjU5LDE1IEBAIGJvb2wgQXJndW1lbnRzOjpkZWxldGVQcm9wZXJ0eUJ5
SW5kZXgoSlMKICAgICByZXR1cm4gSlNPYmplY3Q6OmRlbGV0ZVByb3BlcnR5KHRoaXNPYmplY3Qs
IGV4ZWMsIElkZW50aWZpZXIoZXhlYywgVVN0cmluZzo6bnVtYmVyKGkpKSk7CiB9CiAKLWJvb2wg
QXJndW1lbnRzOjpkZWxldGVQcm9wZXJ0eShKU0NlbGwqIGNlbGwsIEV4ZWNTdGF0ZSogZXhlYywg
Y29uc3QgSWRlbnRpZmllciYgcHJvcGVydHlOYW1lKSAKK2Jvb2wgQXJndW1lbnRzOjpkZWxldGVQ
cm9wZXJ0eShKU0NlbGwqIGNlbGwsIEV4ZWNTdGF0ZSogZXhlYywgUHJvcGVydHlOYW1lIHByb3Bl
cnR5TmFtZSkgCiB7CiAgICAgaWYgKGV4ZWMtPmdsb2JhbERhdGEoKS5pc0luRGVmaW5lT3duUHJv
cGVydHkoKSkKICAgICAgICAgcmV0dXJuIEJhc2U6OmRlbGV0ZVByb3BlcnR5KGNlbGwsIGV4ZWMs
IHByb3BlcnR5TmFtZSk7CiAKICAgICBBcmd1bWVudHMqIHRoaXNPYmplY3QgPSBqc0Nhc3Q8QXJn
dW1lbnRzKj4oY2VsbCk7Ci0gICAgYm9vbCBpc0FycmF5SW5kZXg7Ci0gICAgdW5zaWduZWQgaSA9
IHByb3BlcnR5TmFtZS50b0FycmF5SW5kZXgoaXNBcnJheUluZGV4KTsKLSAgICBpZiAoaXNBcnJh
eUluZGV4ICYmIGkgPCB0aGlzT2JqZWN0LT5kLT5udW1Bcmd1bWVudHMpIHsKKyAgICB1bnNpZ25l
ZCBpID0gcHJvcGVydHlOYW1lLmFzSW5kZXgoKTsKKyAgICBpZiAoaSA8IHRoaXNPYmplY3QtPmQt
Pm51bUFyZ3VtZW50cykgeworICAgICAgICBBU1NFUlQoaSA8IFByb3BlcnR5TmFtZTo6Tm90QW5J
bmRleCk7CiAgICAgICAgIGlmICghQmFzZTo6ZGVsZXRlUHJvcGVydHkoY2VsbCwgZXhlYywgcHJv
cGVydHlOYW1lKSkKICAgICAgICAgICAgIHJldHVybiBmYWxzZTsKIApAQCAtMzAwLDEyICszMDAs
MTIgQEAgYm9vbCBBcmd1bWVudHM6OmRlbGV0ZVByb3BlcnR5KEpTQ2VsbCogYwogICAgIHJldHVy
biBKU09iamVjdDo6ZGVsZXRlUHJvcGVydHkodGhpc09iamVjdCwgZXhlYywgcHJvcGVydHlOYW1l
KTsKIH0KIAotYm9vbCBBcmd1bWVudHM6OmRlZmluZU93blByb3BlcnR5KEpTT2JqZWN0KiBvYmpl
Y3QsIEV4ZWNTdGF0ZSogZXhlYywgY29uc3QgSWRlbnRpZmllciYgcHJvcGVydHlOYW1lLCBQcm9w
ZXJ0eURlc2NyaXB0b3ImIGRlc2NyaXB0b3IsIGJvb2wgc2hvdWxkVGhyb3cpCitib29sIEFyZ3Vt
ZW50czo6ZGVmaW5lT3duUHJvcGVydHkoSlNPYmplY3QqIG9iamVjdCwgRXhlY1N0YXRlKiBleGVj
LCBQcm9wZXJ0eU5hbWUgcHJvcGVydHlOYW1lLCBQcm9wZXJ0eURlc2NyaXB0b3ImIGRlc2NyaXB0
b3IsIGJvb2wgc2hvdWxkVGhyb3cpCiB7CiAgICAgQXJndW1lbnRzKiB0aGlzT2JqZWN0ID0ganND
YXN0PEFyZ3VtZW50cyo+KG9iamVjdCk7Ci0gICAgYm9vbCBpc0FycmF5SW5kZXg7Ci0gICAgdW5z
aWduZWQgaSA9IHByb3BlcnR5TmFtZS50b0FycmF5SW5kZXgoaXNBcnJheUluZGV4KTsKLSAgICBp
ZiAoaXNBcnJheUluZGV4ICYmIGkgPCB0aGlzT2JqZWN0LT5kLT5udW1Bcmd1bWVudHMpIHsKKyAg
ICB1bnNpZ25lZCBpID0gcHJvcGVydHlOYW1lLmFzSW5kZXgoKTsKKyAgICBpZiAoaSA8IHRoaXNP
YmplY3QtPmQtPm51bUFyZ3VtZW50cykgeworICAgICAgICBBU1NFUlQoaSA8IFByb3BlcnR5TmFt
ZTo6Tm90QW5JbmRleCk7CiAgICAgICAgIC8vIElmIHRoZSBwcm9wZXJ0eSBpcyBub3QgeWV0IHBy
ZXNlbnQgb24gdGhlIG9iamVjdCwgYW5kIGlzIG5vdCB5ZXQgbWFya2VkIGFzIGRlbGV0ZWQsIHRo
ZW4gYWRkIGl0IG5vdy4KICAgICAgICAgUHJvcGVydHlTbG90IHNsb3Q7CiAgICAgICAgIGlmICgo
IXRoaXNPYmplY3QtPmQtPmRlbGV0ZWRBcmd1bWVudHMgfHwgIXRoaXNPYmplY3QtPmQtPmRlbGV0
ZWRBcmd1bWVudHNbaV0pICYmICFKU09iamVjdDo6Z2V0T3duUHJvcGVydHlTbG90KHRoaXNPYmpl
Y3QsIGV4ZWMsIHByb3BlcnR5TmFtZSwgc2xvdCkpCkluZGV4OiBTb3VyY2UvSmF2YVNjcmlwdENv
cmUvcnVudGltZS9Bcmd1bWVudHMuaAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvSmF2YVNjcmlwdENv
cmUvcnVudGltZS9Bcmd1bWVudHMuaAkocmV2aXNpb24gMTE2NjY3KQorKysgU291cmNlL0phdmFT
Y3JpcHRDb3JlL3J1bnRpbWUvQXJndW1lbnRzLmgJKHdvcmtpbmcgY29weSkKQEAgLTEwOSwxNSAr
MTA5LDE1IEBAIG5hbWVzcGFjZSBKU0MgewogCiAgICAgcHJpdmF0ZToKICAgICAgICAgc3RhdGlj
IHZvaWQgZGVzdHJveShKU0NlbGwqKTsKLSAgICAgICAgc3RhdGljIGJvb2wgZ2V0T3duUHJvcGVy
dHlTbG90KEpTQ2VsbCosIEV4ZWNTdGF0ZSosIGNvbnN0IElkZW50aWZpZXImIHByb3BlcnR5TmFt
ZSwgUHJvcGVydHlTbG90Jik7CisgICAgICAgIHN0YXRpYyBib29sIGdldE93blByb3BlcnR5U2xv
dChKU0NlbGwqLCBFeGVjU3RhdGUqLCBQcm9wZXJ0eU5hbWUsIFByb3BlcnR5U2xvdCYpOwogICAg
ICAgICBzdGF0aWMgYm9vbCBnZXRPd25Qcm9wZXJ0eVNsb3RCeUluZGV4KEpTQ2VsbCosIEV4ZWNT
dGF0ZSosIHVuc2lnbmVkIHByb3BlcnR5TmFtZSwgUHJvcGVydHlTbG90Jik7Ci0gICAgICAgIHN0
YXRpYyBib29sIGdldE93blByb3BlcnR5RGVzY3JpcHRvcihKU09iamVjdCosIEV4ZWNTdGF0ZSos
IGNvbnN0IElkZW50aWZpZXImLCBQcm9wZXJ0eURlc2NyaXB0b3ImKTsKKyAgICAgICAgc3RhdGlj
IGJvb2wgZ2V0T3duUHJvcGVydHlEZXNjcmlwdG9yKEpTT2JqZWN0KiwgRXhlY1N0YXRlKiwgUHJv
cGVydHlOYW1lLCBQcm9wZXJ0eURlc2NyaXB0b3ImKTsKICAgICAgICAgc3RhdGljIHZvaWQgZ2V0
T3duUHJvcGVydHlOYW1lcyhKU09iamVjdCosIEV4ZWNTdGF0ZSosIFByb3BlcnR5TmFtZUFycmF5
JiwgRW51bWVyYXRpb25Nb2RlKTsKLSAgICAgICAgc3RhdGljIHZvaWQgcHV0KEpTQ2VsbCosIEV4
ZWNTdGF0ZSosIGNvbnN0IElkZW50aWZpZXImIHByb3BlcnR5TmFtZSwgSlNWYWx1ZSwgUHV0UHJv
cGVydHlTbG90Jik7CisgICAgICAgIHN0YXRpYyB2b2lkIHB1dChKU0NlbGwqLCBFeGVjU3RhdGUq
LCBQcm9wZXJ0eU5hbWUsIEpTVmFsdWUsIFB1dFByb3BlcnR5U2xvdCYpOwogICAgICAgICBzdGF0
aWMgdm9pZCBwdXRCeUluZGV4KEpTQ2VsbCosIEV4ZWNTdGF0ZSosIHVuc2lnbmVkIHByb3BlcnR5
TmFtZSwgSlNWYWx1ZSwgYm9vbCBzaG91bGRUaHJvdyk7Ci0gICAgICAgIHN0YXRpYyBib29sIGRl
bGV0ZVByb3BlcnR5KEpTQ2VsbCosIEV4ZWNTdGF0ZSosIGNvbnN0IElkZW50aWZpZXImIHByb3Bl
cnR5TmFtZSk7CisgICAgICAgIHN0YXRpYyBib29sIGRlbGV0ZVByb3BlcnR5KEpTQ2VsbCosIEV4
ZWNTdGF0ZSosIFByb3BlcnR5TmFtZSk7CiAgICAgICAgIHN0YXRpYyBib29sIGRlbGV0ZVByb3Bl
cnR5QnlJbmRleChKU0NlbGwqLCBFeGVjU3RhdGUqLCB1bnNpZ25lZCBwcm9wZXJ0eU5hbWUpOwot
ICAgICAgICBzdGF0aWMgYm9vbCBkZWZpbmVPd25Qcm9wZXJ0eShKU09iamVjdCosIEV4ZWNTdGF0
ZSosIGNvbnN0IElkZW50aWZpZXImIHByb3BlcnR5TmFtZSwgUHJvcGVydHlEZXNjcmlwdG9yJiwg
Ym9vbCBzaG91bGRUaHJvdyk7CisgICAgICAgIHN0YXRpYyBib29sIGRlZmluZU93blByb3BlcnR5
KEpTT2JqZWN0KiwgRXhlY1N0YXRlKiwgUHJvcGVydHlOYW1lLCBQcm9wZXJ0eURlc2NyaXB0b3Im
LCBib29sIHNob3VsZFRocm93KTsKICAgICAgICAgdm9pZCBjcmVhdGVTdHJpY3RNb2RlQ2FsbGVy
SWZOZWNlc3NhcnkoRXhlY1N0YXRlKik7CiAgICAgICAgIHZvaWQgY3JlYXRlU3RyaWN0TW9kZUNh
bGxlZUlmTmVjZXNzYXJ5KEV4ZWNTdGF0ZSopOwogCkluZGV4OiBTb3VyY2UvSmF2YVNjcmlwdENv
cmUvcnVudGltZS9BcnJheUNvbnN0cnVjdG9yLmNwcAo9PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvSmF2
YVNjcmlwdENvcmUvcnVudGltZS9BcnJheUNvbnN0cnVjdG9yLmNwcAkocmV2aXNpb24gMTE2NjY3
KQorKysgU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvQXJyYXlDb25zdHJ1Y3Rvci5jcHAJ
KHdvcmtpbmcgY29weSkKQEAgLTYwLDE3ICs2MCwxNyBAQCBBcnJheUNvbnN0cnVjdG9yOjpBcnJh
eUNvbnN0cnVjdG9yKEpTR2xvCiAKIHZvaWQgQXJyYXlDb25zdHJ1Y3Rvcjo6ZmluaXNoQ3JlYXRp
b24oRXhlY1N0YXRlKiBleGVjLCBBcnJheVByb3RvdHlwZSogYXJyYXlQcm90b3R5cGUpCiB7Ci0g
ICAgQmFzZTo6ZmluaXNoQ3JlYXRpb24oZXhlYy0+Z2xvYmFsRGF0YSgpLCBJZGVudGlmaWVyKGV4
ZWMsIGFycmF5UHJvdG90eXBlLT5jbGFzc0luZm8oKS0+Y2xhc3NOYW1lKSk7CisgICAgQmFzZTo6
ZmluaXNoQ3JlYXRpb24oZXhlYy0+Z2xvYmFsRGF0YSgpLCBhcnJheVByb3RvdHlwZS0+Y2xhc3NJ
bmZvKCktPmNsYXNzTmFtZSk7CiAgICAgcHV0RGlyZWN0V2l0aG91dFRyYW5zaXRpb24oZXhlYy0+
Z2xvYmFsRGF0YSgpLCBleGVjLT5wcm9wZXJ0eU5hbWVzKCkucHJvdG90eXBlLCBhcnJheVByb3Rv
dHlwZSwgRG9udEVudW0gfCBEb250RGVsZXRlIHwgUmVhZE9ubHkpOwogICAgIHB1dERpcmVjdFdp
dGhvdXRUcmFuc2l0aW9uKGV4ZWMtPmdsb2JhbERhdGEoKSwgZXhlYy0+cHJvcGVydHlOYW1lcygp
Lmxlbmd0aCwganNOdW1iZXIoMSksIFJlYWRPbmx5IHwgRG9udEVudW0gfCBEb250RGVsZXRlKTsK
IH0KIAotYm9vbCBBcnJheUNvbnN0cnVjdG9yOjpnZXRPd25Qcm9wZXJ0eVNsb3QoSlNDZWxsKiBj
ZWxsLCBFeGVjU3RhdGUqIGV4ZWMsIGNvbnN0IElkZW50aWZpZXImIHByb3BlcnR5TmFtZSwgUHJv
cGVydHlTbG90ICZzbG90KQorYm9vbCBBcnJheUNvbnN0cnVjdG9yOjpnZXRPd25Qcm9wZXJ0eVNs
b3QoSlNDZWxsKiBjZWxsLCBFeGVjU3RhdGUqIGV4ZWMsIFByb3BlcnR5TmFtZSBwcm9wZXJ0eU5h
bWUsIFByb3BlcnR5U2xvdCAmc2xvdCkKIHsKICAgICByZXR1cm4gZ2V0U3RhdGljRnVuY3Rpb25T
bG90PEludGVybmFsRnVuY3Rpb24+KGV4ZWMsIEV4ZWNTdGF0ZTo6YXJyYXlDb25zdHJ1Y3RvclRh
YmxlKGV4ZWMpLCBqc0Nhc3Q8QXJyYXlDb25zdHJ1Y3Rvcio+KGNlbGwpLCBwcm9wZXJ0eU5hbWUs
IHNsb3QpOwogfQogCi1ib29sIEFycmF5Q29uc3RydWN0b3I6OmdldE93blByb3BlcnR5RGVzY3Jp
cHRvcihKU09iamVjdCogb2JqZWN0LCBFeGVjU3RhdGUqIGV4ZWMsIGNvbnN0IElkZW50aWZpZXIm
IHByb3BlcnR5TmFtZSwgUHJvcGVydHlEZXNjcmlwdG9yJiBkZXNjcmlwdG9yKQorYm9vbCBBcnJh
eUNvbnN0cnVjdG9yOjpnZXRPd25Qcm9wZXJ0eURlc2NyaXB0b3IoSlNPYmplY3QqIG9iamVjdCwg
RXhlY1N0YXRlKiBleGVjLCBQcm9wZXJ0eU5hbWUgcHJvcGVydHlOYW1lLCBQcm9wZXJ0eURlc2Ny
aXB0b3ImIGRlc2NyaXB0b3IpCiB7CiAgICAgcmV0dXJuIGdldFN0YXRpY0Z1bmN0aW9uRGVzY3Jp
cHRvcjxJbnRlcm5hbEZ1bmN0aW9uPihleGVjLCBFeGVjU3RhdGU6OmFycmF5Q29uc3RydWN0b3JU
YWJsZShleGVjKSwganNDYXN0PEFycmF5Q29uc3RydWN0b3IqPihvYmplY3QpLCBwcm9wZXJ0eU5h
bWUsIGRlc2NyaXB0b3IpOwogfQpJbmRleDogU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUv
QXJyYXlDb25zdHJ1Y3Rvci5oCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9y
dW50aW1lL0FycmF5Q29uc3RydWN0b3IuaAkocmV2aXNpb24gMTE2NjY3KQorKysgU291cmNlL0ph
dmFTY3JpcHRDb3JlL3J1bnRpbWUvQXJyYXlDb25zdHJ1Y3Rvci5oCSh3b3JraW5nIGNvcHkpCkBA
IC01MSw5ICs1MSw5IEBAIG5hbWVzcGFjZSBKU0MgewogCiAgICAgcHJpdmF0ZToKICAgICAgICAg
QXJyYXlDb25zdHJ1Y3RvcihKU0dsb2JhbE9iamVjdCosIFN0cnVjdHVyZSopOwotICAgICAgICBz
dGF0aWMgYm9vbCBnZXRPd25Qcm9wZXJ0eVNsb3QoSlNDZWxsKiwgRXhlY1N0YXRlKiwgY29uc3Qg
SWRlbnRpZmllciYsIFByb3BlcnR5U2xvdCYpOworICAgICAgICBzdGF0aWMgYm9vbCBnZXRPd25Q
cm9wZXJ0eVNsb3QoSlNDZWxsKiwgRXhlY1N0YXRlKiwgUHJvcGVydHlOYW1lLCBQcm9wZXJ0eVNs
b3QmKTsKIAotICAgICAgICBzdGF0aWMgYm9vbCBnZXRPd25Qcm9wZXJ0eURlc2NyaXB0b3IoSlNP
YmplY3QqLCBFeGVjU3RhdGUqLCBjb25zdCBJZGVudGlmaWVyJiwgUHJvcGVydHlEZXNjcmlwdG9y
Jik7CisgICAgICAgIHN0YXRpYyBib29sIGdldE93blByb3BlcnR5RGVzY3JpcHRvcihKU09iamVj
dCosIEV4ZWNTdGF0ZSosIFByb3BlcnR5TmFtZSwgUHJvcGVydHlEZXNjcmlwdG9yJik7CiAKICAg
ICAgICAgc3RhdGljIENvbnN0cnVjdFR5cGUgZ2V0Q29uc3RydWN0RGF0YShKU0NlbGwqLCBDb25z
dHJ1Y3REYXRhJik7CiAgICAgICAgIHN0YXRpYyBDYWxsVHlwZSBnZXRDYWxsRGF0YShKU0NlbGwq
LCBDYWxsRGF0YSYpOwpJbmRleDogU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvQXJyYXlQ
cm90b3R5cGUuY3BwCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1l
L0FycmF5UHJvdG90eXBlLmNwcAkocmV2aXNpb24gMTE2NjY3KQorKysgU291cmNlL0phdmFTY3Jp
cHRDb3JlL3J1bnRpbWUvQXJyYXlQcm90b3R5cGUuY3BwCSh3b3JraW5nIGNvcHkpCkBAIC0xMjYs
MTIgKzEyNiwxMiBAQCB2b2lkIEFycmF5UHJvdG90eXBlOjpmaW5pc2hDcmVhdGlvbihKU0dsCiAg
ICAgQVNTRVJUKGluaGVyaXRzKCZzX2luZm8pKTsKIH0KIAotYm9vbCBBcnJheVByb3RvdHlwZTo6
Z2V0T3duUHJvcGVydHlTbG90KEpTQ2VsbCogY2VsbCwgRXhlY1N0YXRlKiBleGVjLCBjb25zdCBJ
ZGVudGlmaWVyJiBwcm9wZXJ0eU5hbWUsIFByb3BlcnR5U2xvdCYgc2xvdCkKK2Jvb2wgQXJyYXlQ
cm90b3R5cGU6OmdldE93blByb3BlcnR5U2xvdChKU0NlbGwqIGNlbGwsIEV4ZWNTdGF0ZSogZXhl
YywgUHJvcGVydHlOYW1lIHByb3BlcnR5TmFtZSwgUHJvcGVydHlTbG90JiBzbG90KQogewogICAg
IHJldHVybiBnZXRTdGF0aWNGdW5jdGlvblNsb3Q8SlNBcnJheT4oZXhlYywgRXhlY1N0YXRlOjph
cnJheVByb3RvdHlwZVRhYmxlKGV4ZWMpLCBqc0Nhc3Q8QXJyYXlQcm90b3R5cGUqPihjZWxsKSwg
cHJvcGVydHlOYW1lLCBzbG90KTsKIH0KIAotYm9vbCBBcnJheVByb3RvdHlwZTo6Z2V0T3duUHJv
cGVydHlEZXNjcmlwdG9yKEpTT2JqZWN0KiBvYmplY3QsIEV4ZWNTdGF0ZSogZXhlYywgY29uc3Qg
SWRlbnRpZmllciYgcHJvcGVydHlOYW1lLCBQcm9wZXJ0eURlc2NyaXB0b3ImIGRlc2NyaXB0b3Ip
Citib29sIEFycmF5UHJvdG90eXBlOjpnZXRPd25Qcm9wZXJ0eURlc2NyaXB0b3IoSlNPYmplY3Qq
IG9iamVjdCwgRXhlY1N0YXRlKiBleGVjLCBQcm9wZXJ0eU5hbWUgcHJvcGVydHlOYW1lLCBQcm9w
ZXJ0eURlc2NyaXB0b3ImIGRlc2NyaXB0b3IpCiB7CiAgICAgcmV0dXJuIGdldFN0YXRpY0Z1bmN0
aW9uRGVzY3JpcHRvcjxKU0FycmF5PihleGVjLCBFeGVjU3RhdGU6OmFycmF5UHJvdG90eXBlVGFi
bGUoZXhlYyksIGpzQ2FzdDxBcnJheVByb3RvdHlwZSo+KG9iamVjdCksIHByb3BlcnR5TmFtZSwg
ZGVzY3JpcHRvcik7CiB9CkBAIC0xNDcsNyArMTQ3LDcgQEAgc3RhdGljIEpTVmFsdWUgZ2V0UHJv
cGVydHkoRXhlY1N0YXRlKiBleAogICAgIHJldHVybiBzbG90LmdldFZhbHVlKGV4ZWMsIGluZGV4
KTsKIH0KIAotc3RhdGljIHZvaWQgcHV0UHJvcGVydHkoRXhlY1N0YXRlKiBleGVjLCBKU09iamVj
dCogb2JqLCBjb25zdCBJZGVudGlmaWVyJiBwcm9wZXJ0eU5hbWUsIEpTVmFsdWUgdmFsdWUpCitz
dGF0aWMgdm9pZCBwdXRQcm9wZXJ0eShFeGVjU3RhdGUqIGV4ZWMsIEpTT2JqZWN0KiBvYmosIFBy
b3BlcnR5TmFtZSBwcm9wZXJ0eU5hbWUsIEpTVmFsdWUgdmFsdWUpCiB7CiAgICAgUHV0UHJvcGVy
dHlTbG90IHNsb3Q7CiAgICAgb2JqLT5tZXRob2RUYWJsZSgpLT5wdXQob2JqLCBleGVjLCBwcm9w
ZXJ0eU5hbWUsIHZhbHVlLCBzbG90KTsKSW5kZXg6IFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50
aW1lL0FycmF5UHJvdG90eXBlLmgKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL0phdmFTY3JpcHRDb3Jl
L3J1bnRpbWUvQXJyYXlQcm90b3R5cGUuaAkocmV2aXNpb24gMTE2NjY3KQorKysgU291cmNlL0ph
dmFTY3JpcHRDb3JlL3J1bnRpbWUvQXJyYXlQcm90b3R5cGUuaAkod29ya2luZyBjb3B5KQpAQCAt
NDAsOCArNDAsOCBAQCBuYW1lc3BhY2UgSlNDIHsKICAgICAgICAgICAgIHJldHVybiBwcm90b3R5
cGU7CiAgICAgICAgIH0KICAgICAgICAgCi0gICAgICAgIHN0YXRpYyBib29sIGdldE93blByb3Bl
cnR5U2xvdChKU0NlbGwqLCBFeGVjU3RhdGUqLCBjb25zdCBJZGVudGlmaWVyJiwgUHJvcGVydHlT
bG90Jik7Ci0gICAgICAgIHN0YXRpYyBib29sIGdldE93blByb3BlcnR5RGVzY3JpcHRvcihKU09i
amVjdCosIEV4ZWNTdGF0ZSosIGNvbnN0IElkZW50aWZpZXImLCBQcm9wZXJ0eURlc2NyaXB0b3Im
KTsKKyAgICAgICAgc3RhdGljIGJvb2wgZ2V0T3duUHJvcGVydHlTbG90KEpTQ2VsbCosIEV4ZWNT
dGF0ZSosIFByb3BlcnR5TmFtZSwgUHJvcGVydHlTbG90Jik7CisgICAgICAgIHN0YXRpYyBib29s
IGdldE93blByb3BlcnR5RGVzY3JpcHRvcihKU09iamVjdCosIEV4ZWNTdGF0ZSosIFByb3BlcnR5
TmFtZSwgUHJvcGVydHlEZXNjcmlwdG9yJik7CiAKICAgICAgICAgc3RhdGljIGNvbnN0IENsYXNz
SW5mbyBzX2luZm87CiAKSW5kZXg6IFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL0Jvb2xl
YW5Db25zdHJ1Y3Rvci5jcHAKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL0phdmFTY3JpcHRDb3JlL3J1
bnRpbWUvQm9vbGVhbkNvbnN0cnVjdG9yLmNwcAkocmV2aXNpb24gMTE2NjY3KQorKysgU291cmNl
L0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvQm9vbGVhbkNvbnN0cnVjdG9yLmNwcAkod29ya2luZyBj
b3B5KQpAQCAtMzgsNyArMzgsNyBAQCBCb29sZWFuQ29uc3RydWN0b3I6OkJvb2xlYW5Db25zdHJ1
Y3RvcihKCiAKIHZvaWQgQm9vbGVhbkNvbnN0cnVjdG9yOjpmaW5pc2hDcmVhdGlvbihFeGVjU3Rh
dGUqIGV4ZWMsIEJvb2xlYW5Qcm90b3R5cGUqIGJvb2xlYW5Qcm90b3R5cGUpCiB7Ci0gICAgQmFz
ZTo6ZmluaXNoQ3JlYXRpb24oZXhlYy0+Z2xvYmFsRGF0YSgpLCBJZGVudGlmaWVyKGV4ZWMsIGJv
b2xlYW5Qcm90b3R5cGUtPmNsYXNzSW5mbygpLT5jbGFzc05hbWUpKTsKKyAgICBCYXNlOjpmaW5p
c2hDcmVhdGlvbihleGVjLT5nbG9iYWxEYXRhKCksIGJvb2xlYW5Qcm90b3R5cGUtPmNsYXNzSW5m
bygpLT5jbGFzc05hbWUpOwogICAgIHB1dERpcmVjdFdpdGhvdXRUcmFuc2l0aW9uKGV4ZWMtPmds
b2JhbERhdGEoKSwgZXhlYy0+cHJvcGVydHlOYW1lcygpLnByb3RvdHlwZSwgYm9vbGVhblByb3Rv
dHlwZSwgRG9udEVudW0gfCBEb250RGVsZXRlIHwgUmVhZE9ubHkpOwogCiAgICAgLy8gbm8uIG9m
IGFyZ3VtZW50cyBmb3IgY29uc3RydWN0b3IKSW5kZXg6IFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9y
dW50aW1lL0Jvb2xlYW5Qcm90b3R5cGUuY3BwCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9KYXZhU2Ny
aXB0Q29yZS9ydW50aW1lL0Jvb2xlYW5Qcm90b3R5cGUuY3BwCShyZXZpc2lvbiAxMTY2NjcpCisr
KyBTb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9Cb29sZWFuUHJvdG90eXBlLmNwcAkod29y
a2luZyBjb3B5KQpAQCAtNjMsMTIgKzYzLDEyIEBAIHZvaWQgQm9vbGVhblByb3RvdHlwZTo6Zmlu
aXNoQ3JlYXRpb24oRXgKICAgICBBU1NFUlQoaW5oZXJpdHMoJnNfaW5mbykpOwogfQogCi1ib29s
IEJvb2xlYW5Qcm90b3R5cGU6OmdldE93blByb3BlcnR5U2xvdChKU0NlbGwqIGNlbGwsIEV4ZWNT
dGF0ZSogZXhlYywgY29uc3QgSWRlbnRpZmllciYgcHJvcGVydHlOYW1lLCBQcm9wZXJ0eVNsb3Qg
JnNsb3QpCitib29sIEJvb2xlYW5Qcm90b3R5cGU6OmdldE93blByb3BlcnR5U2xvdChKU0NlbGwq
IGNlbGwsIEV4ZWNTdGF0ZSogZXhlYywgUHJvcGVydHlOYW1lIHByb3BlcnR5TmFtZSwgUHJvcGVy
dHlTbG90ICZzbG90KQogewogICAgIHJldHVybiBnZXRTdGF0aWNGdW5jdGlvblNsb3Q8Qm9vbGVh
bk9iamVjdD4oZXhlYywgRXhlY1N0YXRlOjpib29sZWFuUHJvdG90eXBlVGFibGUoZXhlYyksIGpz
Q2FzdDxCb29sZWFuUHJvdG90eXBlKj4oY2VsbCksIHByb3BlcnR5TmFtZSwgc2xvdCk7CiB9CiAK
LWJvb2wgQm9vbGVhblByb3RvdHlwZTo6Z2V0T3duUHJvcGVydHlEZXNjcmlwdG9yKEpTT2JqZWN0
KiBvYmplY3QsIEV4ZWNTdGF0ZSogZXhlYywgY29uc3QgSWRlbnRpZmllciYgcHJvcGVydHlOYW1l
LCBQcm9wZXJ0eURlc2NyaXB0b3ImIGRlc2NyaXB0b3IpCitib29sIEJvb2xlYW5Qcm90b3R5cGU6
OmdldE93blByb3BlcnR5RGVzY3JpcHRvcihKU09iamVjdCogb2JqZWN0LCBFeGVjU3RhdGUqIGV4
ZWMsIFByb3BlcnR5TmFtZSBwcm9wZXJ0eU5hbWUsIFByb3BlcnR5RGVzY3JpcHRvciYgZGVzY3Jp
cHRvcikKIHsKICAgICByZXR1cm4gZ2V0U3RhdGljRnVuY3Rpb25EZXNjcmlwdG9yPEJvb2xlYW5P
YmplY3Q+KGV4ZWMsIEV4ZWNTdGF0ZTo6Ym9vbGVhblByb3RvdHlwZVRhYmxlKGV4ZWMpLCBqc0Nh
c3Q8Qm9vbGVhblByb3RvdHlwZSo+KG9iamVjdCksIHByb3BlcnR5TmFtZSwgZGVzY3JpcHRvcik7
CiB9CkluZGV4OiBTb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9Cb29sZWFuUHJvdG90eXBl
LmgKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PQotLS0gU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvQm9vbGVhblBy
b3RvdHlwZS5oCShyZXZpc2lvbiAxMTY2NjcpCisrKyBTb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVu
dGltZS9Cb29sZWFuUHJvdG90eXBlLmgJKHdvcmtpbmcgY29weSkKQEAgLTQ5LDkgKzQ5LDkgQEAg
bmFtZXNwYWNlIEpTQyB7CiAKICAgICBwcml2YXRlOgogICAgICAgICBCb29sZWFuUHJvdG90eXBl
KEV4ZWNTdGF0ZSosIFN0cnVjdHVyZSopOwotICAgICAgICBzdGF0aWMgYm9vbCBnZXRPd25Qcm9w
ZXJ0eVNsb3QoSlNDZWxsKiwgRXhlY1N0YXRlKiwgY29uc3QgSWRlbnRpZmllciYsIFByb3BlcnR5
U2xvdCYpOworICAgICAgICBzdGF0aWMgYm9vbCBnZXRPd25Qcm9wZXJ0eVNsb3QoSlNDZWxsKiwg
RXhlY1N0YXRlKiwgUHJvcGVydHlOYW1lLCBQcm9wZXJ0eVNsb3QmKTsKIAotICAgICAgICBzdGF0
aWMgYm9vbCBnZXRPd25Qcm9wZXJ0eURlc2NyaXB0b3IoSlNPYmplY3QqLCBFeGVjU3RhdGUqLCBj
b25zdCBJZGVudGlmaWVyJiwgUHJvcGVydHlEZXNjcmlwdG9yJik7CisgICAgICAgIHN0YXRpYyBi
b29sIGdldE93blByb3BlcnR5RGVzY3JpcHRvcihKU09iamVjdCosIEV4ZWNTdGF0ZSosIFByb3Bl
cnR5TmFtZSwgUHJvcGVydHlEZXNjcmlwdG9yJik7CiAgICAgfTsKIAogfSAvLyBuYW1lc3BhY2Ug
SlNDCkluZGV4OiBTb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9DbGFzc0luZm8uaAo9PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09Ci0tLSBTb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9DbGFzc0luZm8uaAkocmV2
aXNpb24gMTE2NjY3KQorKysgU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvQ2xhc3NJbmZv
LmgJKHdvcmtpbmcgY29weSkKQEAgLTQ1LDE5ICs0NSwxOSBAQCBuYW1lc3BhY2UgSlNDIHsKICAg
ICAgICAgdHlwZWRlZiBDb25zdHJ1Y3RUeXBlICgqR2V0Q29uc3RydWN0RGF0YUZ1bmN0aW9uUHRy
KShKU0NlbGwqLCBDb25zdHJ1Y3REYXRhJik7CiAgICAgICAgIEdldENvbnN0cnVjdERhdGFGdW5j
dGlvblB0ciBnZXRDb25zdHJ1Y3REYXRhOwogCi0gICAgICAgIHR5cGVkZWYgdm9pZCAoKlB1dEZ1
bmN0aW9uUHRyKShKU0NlbGwqLCBFeGVjU3RhdGUqLCBjb25zdCBJZGVudGlmaWVyJiBwcm9wZXJ0
eU5hbWUsIEpTVmFsdWUsIFB1dFByb3BlcnR5U2xvdCYpOworICAgICAgICB0eXBlZGVmIHZvaWQg
KCpQdXRGdW5jdGlvblB0cikoSlNDZWxsKiwgRXhlY1N0YXRlKiwgUHJvcGVydHlOYW1lIHByb3Bl
cnR5TmFtZSwgSlNWYWx1ZSwgUHV0UHJvcGVydHlTbG90Jik7CiAgICAgICAgIFB1dEZ1bmN0aW9u
UHRyIHB1dDsKIAogICAgICAgICB0eXBlZGVmIHZvaWQgKCpQdXRCeUluZGV4RnVuY3Rpb25QdHIp
KEpTQ2VsbCosIEV4ZWNTdGF0ZSosIHVuc2lnbmVkIHByb3BlcnR5TmFtZSwgSlNWYWx1ZSwgYm9v
bCBzaG91bGRUaHJvdyk7CiAgICAgICAgIFB1dEJ5SW5kZXhGdW5jdGlvblB0ciBwdXRCeUluZGV4
OwogCi0gICAgICAgIHR5cGVkZWYgYm9vbCAoKkRlbGV0ZVByb3BlcnR5RnVuY3Rpb25QdHIpKEpT
Q2VsbCosIEV4ZWNTdGF0ZSosIGNvbnN0IElkZW50aWZpZXImKTsKKyAgICAgICAgdHlwZWRlZiBi
b29sICgqRGVsZXRlUHJvcGVydHlGdW5jdGlvblB0cikoSlNDZWxsKiwgRXhlY1N0YXRlKiwgUHJv
cGVydHlOYW1lKTsKICAgICAgICAgRGVsZXRlUHJvcGVydHlGdW5jdGlvblB0ciBkZWxldGVQcm9w
ZXJ0eTsKIAogICAgICAgICB0eXBlZGVmIGJvb2wgKCpEZWxldGVQcm9wZXJ0eUJ5SW5kZXhGdW5j
dGlvblB0cikoSlNDZWxsKiwgRXhlY1N0YXRlKiwgdW5zaWduZWQpOwogICAgICAgICBEZWxldGVQ
cm9wZXJ0eUJ5SW5kZXhGdW5jdGlvblB0ciBkZWxldGVQcm9wZXJ0eUJ5SW5kZXg7CiAKLSAgICAg
ICAgdHlwZWRlZiBib29sICgqR2V0T3duUHJvcGVydHlTbG90RnVuY3Rpb25QdHIpKEpTQ2VsbCos
IEV4ZWNTdGF0ZSosIGNvbnN0IElkZW50aWZpZXImLCBQcm9wZXJ0eVNsb3QmKTsKKyAgICAgICAg
dHlwZWRlZiBib29sICgqR2V0T3duUHJvcGVydHlTbG90RnVuY3Rpb25QdHIpKEpTQ2VsbCosIEV4
ZWNTdGF0ZSosIFByb3BlcnR5TmFtZSwgUHJvcGVydHlTbG90Jik7CiAgICAgICAgIEdldE93blBy
b3BlcnR5U2xvdEZ1bmN0aW9uUHRyIGdldE93blByb3BlcnR5U2xvdDsKIAogICAgICAgICB0eXBl
ZGVmIGJvb2wgKCpHZXRPd25Qcm9wZXJ0eVNsb3RCeUluZGV4RnVuY3Rpb25QdHIpKEpTQ2VsbCos
IEV4ZWNTdGF0ZSosIHVuc2lnbmVkLCBQcm9wZXJ0eVNsb3QmKTsKQEAgLTgxLDEzICs4MSwxMyBA
QCBuYW1lc3BhY2UgSlNDIHsKICAgICAgICAgdHlwZWRlZiBib29sICgqSGFzSW5zdGFuY2VGdW5j
dGlvblB0cikoSlNPYmplY3QqLCBFeGVjU3RhdGUqLCBKU1ZhbHVlLCBKU1ZhbHVlKTsKICAgICAg
ICAgSGFzSW5zdGFuY2VGdW5jdGlvblB0ciBoYXNJbnN0YW5jZTsKIAotICAgICAgICB0eXBlZGVm
IHZvaWQgKCpQdXRXaXRoQXR0cmlidXRlc0Z1bmN0aW9uUHRyKShKU09iamVjdCosIEV4ZWNTdGF0
ZSosIGNvbnN0IElkZW50aWZpZXImIHByb3BlcnR5TmFtZSwgSlNWYWx1ZSwgdW5zaWduZWQgYXR0
cmlidXRlcyk7CisgICAgICAgIHR5cGVkZWYgdm9pZCAoKlB1dFdpdGhBdHRyaWJ1dGVzRnVuY3Rp
b25QdHIpKEpTT2JqZWN0KiwgRXhlY1N0YXRlKiwgUHJvcGVydHlOYW1lIHByb3BlcnR5TmFtZSwg
SlNWYWx1ZSwgdW5zaWduZWQgYXR0cmlidXRlcyk7CiAgICAgICAgIFB1dFdpdGhBdHRyaWJ1dGVz
RnVuY3Rpb25QdHIgcHV0RGlyZWN0VmlydHVhbDsKIAotICAgICAgICB0eXBlZGVmIGJvb2wgKCpE
ZWZpbmVPd25Qcm9wZXJ0eUZ1bmN0aW9uUHRyKShKU09iamVjdCosIEV4ZWNTdGF0ZSosIGNvbnN0
IElkZW50aWZpZXImLCBQcm9wZXJ0eURlc2NyaXB0b3ImLCBib29sKTsKKyAgICAgICAgdHlwZWRl
ZiBib29sICgqRGVmaW5lT3duUHJvcGVydHlGdW5jdGlvblB0cikoSlNPYmplY3QqLCBFeGVjU3Rh
dGUqLCBQcm9wZXJ0eU5hbWUsIFByb3BlcnR5RGVzY3JpcHRvciYsIGJvb2wpOwogICAgICAgICBE
ZWZpbmVPd25Qcm9wZXJ0eUZ1bmN0aW9uUHRyIGRlZmluZU93blByb3BlcnR5OwogCi0gICAgICAg
IHR5cGVkZWYgYm9vbCAoKkdldE93blByb3BlcnR5RGVzY3JpcHRvckZ1bmN0aW9uUHRyKShKU09i
amVjdCosIEV4ZWNTdGF0ZSosIGNvbnN0IElkZW50aWZpZXImLCBQcm9wZXJ0eURlc2NyaXB0b3Im
KTsKKyAgICAgICAgdHlwZWRlZiBib29sICgqR2V0T3duUHJvcGVydHlEZXNjcmlwdG9yRnVuY3Rp
b25QdHIpKEpTT2JqZWN0KiwgRXhlY1N0YXRlKiwgUHJvcGVydHlOYW1lLCBQcm9wZXJ0eURlc2Ny
aXB0b3ImKTsKICAgICAgICAgR2V0T3duUHJvcGVydHlEZXNjcmlwdG9yRnVuY3Rpb25QdHIgZ2V0
T3duUHJvcGVydHlEZXNjcmlwdG9yOwogICAgIH07CiAKSW5kZXg6IFNvdXJjZS9KYXZhU2NyaXB0
Q29yZS9ydW50aW1lL0RhdGVDb25zdHJ1Y3Rvci5jcHAKPT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL0ph
dmFTY3JpcHRDb3JlL3J1bnRpbWUvRGF0ZUNvbnN0cnVjdG9yLmNwcAkocmV2aXNpb24gMTE2NjY3
KQorKysgU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvRGF0ZUNvbnN0cnVjdG9yLmNwcAko
d29ya2luZyBjb3B5KQpAQCAtODEsMTcgKzgxLDE3IEBAIERhdGVDb25zdHJ1Y3Rvcjo6RGF0ZUNv
bnN0cnVjdG9yKEpTR2xvYmEKIAogdm9pZCBEYXRlQ29uc3RydWN0b3I6OmZpbmlzaENyZWF0aW9u
KEV4ZWNTdGF0ZSogZXhlYywgRGF0ZVByb3RvdHlwZSogZGF0ZVByb3RvdHlwZSkKIHsKLSAgICBC
YXNlOjpmaW5pc2hDcmVhdGlvbihleGVjLT5nbG9iYWxEYXRhKCksIElkZW50aWZpZXIoZXhlYywg
ZGF0ZVByb3RvdHlwZS0+Y2xhc3NJbmZvKCktPmNsYXNzTmFtZSkpOworICAgIEJhc2U6OmZpbmlz
aENyZWF0aW9uKGV4ZWMtPmdsb2JhbERhdGEoKSwgZGF0ZVByb3RvdHlwZS0+Y2xhc3NJbmZvKCkt
PmNsYXNzTmFtZSk7CiAgICAgcHV0RGlyZWN0V2l0aG91dFRyYW5zaXRpb24oZXhlYy0+Z2xvYmFs
RGF0YSgpLCBleGVjLT5wcm9wZXJ0eU5hbWVzKCkucHJvdG90eXBlLCBkYXRlUHJvdG90eXBlLCBE
b250RW51bSB8IERvbnREZWxldGUgfCBSZWFkT25seSk7CiAgICAgcHV0RGlyZWN0V2l0aG91dFRy
YW5zaXRpb24oZXhlYy0+Z2xvYmFsRGF0YSgpLCBleGVjLT5wcm9wZXJ0eU5hbWVzKCkubGVuZ3Ro
LCBqc051bWJlcig3KSwgUmVhZE9ubHkgfCBEb250RW51bSB8IERvbnREZWxldGUpOwogfQogCi1i
b29sIERhdGVDb25zdHJ1Y3Rvcjo6Z2V0T3duUHJvcGVydHlTbG90KEpTQ2VsbCogY2VsbCwgRXhl
Y1N0YXRlKiBleGVjLCBjb25zdCBJZGVudGlmaWVyJiBwcm9wZXJ0eU5hbWUsIFByb3BlcnR5U2xv
dCAmc2xvdCkKK2Jvb2wgRGF0ZUNvbnN0cnVjdG9yOjpnZXRPd25Qcm9wZXJ0eVNsb3QoSlNDZWxs
KiBjZWxsLCBFeGVjU3RhdGUqIGV4ZWMsIFByb3BlcnR5TmFtZSBwcm9wZXJ0eU5hbWUsIFByb3Bl
cnR5U2xvdCAmc2xvdCkKIHsKICAgICByZXR1cm4gZ2V0U3RhdGljRnVuY3Rpb25TbG90PEludGVy
bmFsRnVuY3Rpb24+KGV4ZWMsIEV4ZWNTdGF0ZTo6ZGF0ZUNvbnN0cnVjdG9yVGFibGUoZXhlYyks
IGpzQ2FzdDxEYXRlQ29uc3RydWN0b3IqPihjZWxsKSwgcHJvcGVydHlOYW1lLCBzbG90KTsKIH0K
IAotYm9vbCBEYXRlQ29uc3RydWN0b3I6OmdldE93blByb3BlcnR5RGVzY3JpcHRvcihKU09iamVj
dCogb2JqZWN0LCBFeGVjU3RhdGUqIGV4ZWMsIGNvbnN0IElkZW50aWZpZXImIHByb3BlcnR5TmFt
ZSwgUHJvcGVydHlEZXNjcmlwdG9yJiBkZXNjcmlwdG9yKQorYm9vbCBEYXRlQ29uc3RydWN0b3I6
OmdldE93blByb3BlcnR5RGVzY3JpcHRvcihKU09iamVjdCogb2JqZWN0LCBFeGVjU3RhdGUqIGV4
ZWMsIFByb3BlcnR5TmFtZSBwcm9wZXJ0eU5hbWUsIFByb3BlcnR5RGVzY3JpcHRvciYgZGVzY3Jp
cHRvcikKIHsKICAgICByZXR1cm4gZ2V0U3RhdGljRnVuY3Rpb25EZXNjcmlwdG9yPEludGVybmFs
RnVuY3Rpb24+KGV4ZWMsIEV4ZWNTdGF0ZTo6ZGF0ZUNvbnN0cnVjdG9yVGFibGUoZXhlYyksIGpz
Q2FzdDxEYXRlQ29uc3RydWN0b3IqPihvYmplY3QpLCBwcm9wZXJ0eU5hbWUsIGRlc2NyaXB0b3Ip
OwogfQpJbmRleDogU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvRGF0ZUNvbnN0cnVjdG9y
LmgKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PQotLS0gU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvRGF0ZUNvbnN0
cnVjdG9yLmgJKHJldmlzaW9uIDExNjY2NykKKysrIFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50
aW1lL0RhdGVDb25zdHJ1Y3Rvci5oCSh3b3JraW5nIGNvcHkpCkBAIC01NCw5ICs1NCw5IEBAIG5h
bWVzcGFjZSBKU0MgewogICAgICAgICBzdGF0aWMgQ29uc3RydWN0VHlwZSBnZXRDb25zdHJ1Y3RE
YXRhKEpTQ2VsbCosIENvbnN0cnVjdERhdGEmKTsKICAgICAgICAgc3RhdGljIENhbGxUeXBlIGdl
dENhbGxEYXRhKEpTQ2VsbCosIENhbGxEYXRhJik7CiAKLSAgICAgICAgc3RhdGljIGJvb2wgZ2V0
T3duUHJvcGVydHlTbG90KEpTQ2VsbCosIEV4ZWNTdGF0ZSosIGNvbnN0IElkZW50aWZpZXImLCBQ
cm9wZXJ0eVNsb3QmKTsKKyAgICAgICAgc3RhdGljIGJvb2wgZ2V0T3duUHJvcGVydHlTbG90KEpT
Q2VsbCosIEV4ZWNTdGF0ZSosIFByb3BlcnR5TmFtZSwgUHJvcGVydHlTbG90Jik7CiAKLSAgICAg
ICAgc3RhdGljIGJvb2wgZ2V0T3duUHJvcGVydHlEZXNjcmlwdG9yKEpTT2JqZWN0KiwgRXhlY1N0
YXRlKiwgY29uc3QgSWRlbnRpZmllciYsIFByb3BlcnR5RGVzY3JpcHRvciYpOworICAgICAgICBz
dGF0aWMgYm9vbCBnZXRPd25Qcm9wZXJ0eURlc2NyaXB0b3IoSlNPYmplY3QqLCBFeGVjU3RhdGUq
LCBQcm9wZXJ0eU5hbWUsIFByb3BlcnR5RGVzY3JpcHRvciYpOwogICAgIH07CiAKICAgICBKU09i
amVjdCogY29uc3RydWN0RGF0ZShFeGVjU3RhdGUqLCBKU0dsb2JhbE9iamVjdCosIGNvbnN0IEFy
Z0xpc3QmKTsKSW5kZXg6IFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL0RhdGVQcm90b3R5
cGUuY3BwCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL0RhdGVQ
cm90b3R5cGUuY3BwCShyZXZpc2lvbiAxMTY2NjcpCisrKyBTb3VyY2UvSmF2YVNjcmlwdENvcmUv
cnVudGltZS9EYXRlUHJvdG90eXBlLmNwcAkod29ya2luZyBjb3B5KQpAQCAtNDY3LDEyICs0Njcs
MTIgQEAgdm9pZCBEYXRlUHJvdG90eXBlOjpmaW5pc2hDcmVhdGlvbihFeGVjUwogICAgIC8vIFRo
ZSBjb25zdHJ1Y3RvciB3aWxsIGJlIGFkZGVkIGxhdGVyLCBhZnRlciBEYXRlQ29uc3RydWN0b3Ig
aGFzIGJlZW4gYnVpbHQuCiB9CiAKLWJvb2wgRGF0ZVByb3RvdHlwZTo6Z2V0T3duUHJvcGVydHlT
bG90KEpTQ2VsbCogY2VsbCwgRXhlY1N0YXRlKiBleGVjLCBjb25zdCBJZGVudGlmaWVyJiBwcm9w
ZXJ0eU5hbWUsIFByb3BlcnR5U2xvdCYgc2xvdCkKK2Jvb2wgRGF0ZVByb3RvdHlwZTo6Z2V0T3du
UHJvcGVydHlTbG90KEpTQ2VsbCogY2VsbCwgRXhlY1N0YXRlKiBleGVjLCBQcm9wZXJ0eU5hbWUg
cHJvcGVydHlOYW1lLCBQcm9wZXJ0eVNsb3QmIHNsb3QpCiB7CiAgICAgcmV0dXJuIGdldFN0YXRp
Y0Z1bmN0aW9uU2xvdDxKU09iamVjdD4oZXhlYywgRXhlY1N0YXRlOjpkYXRlVGFibGUoZXhlYyks
IGpzQ2FzdDxEYXRlUHJvdG90eXBlKj4oY2VsbCksIHByb3BlcnR5TmFtZSwgc2xvdCk7CiB9CiAK
LWJvb2wgRGF0ZVByb3RvdHlwZTo6Z2V0T3duUHJvcGVydHlEZXNjcmlwdG9yKEpTT2JqZWN0KiBv
YmplY3QsIEV4ZWNTdGF0ZSogZXhlYywgY29uc3QgSWRlbnRpZmllciYgcHJvcGVydHlOYW1lLCBQ
cm9wZXJ0eURlc2NyaXB0b3ImIGRlc2NyaXB0b3IpCitib29sIERhdGVQcm90b3R5cGU6OmdldE93
blByb3BlcnR5RGVzY3JpcHRvcihKU09iamVjdCogb2JqZWN0LCBFeGVjU3RhdGUqIGV4ZWMsIFBy
b3BlcnR5TmFtZSBwcm9wZXJ0eU5hbWUsIFByb3BlcnR5RGVzY3JpcHRvciYgZGVzY3JpcHRvcikK
IHsKICAgICByZXR1cm4gZ2V0U3RhdGljRnVuY3Rpb25EZXNjcmlwdG9yPEpTT2JqZWN0PihleGVj
LCBFeGVjU3RhdGU6OmRhdGVUYWJsZShleGVjKSwganNDYXN0PERhdGVQcm90b3R5cGUqPihvYmpl
Y3QpLCBwcm9wZXJ0eU5hbWUsIGRlc2NyaXB0b3IpOwogfQpJbmRleDogU291cmNlL0phdmFTY3Jp
cHRDb3JlL3J1bnRpbWUvRGF0ZVByb3RvdHlwZS5oCj09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9KYXZh
U2NyaXB0Q29yZS9ydW50aW1lL0RhdGVQcm90b3R5cGUuaAkocmV2aXNpb24gMTE2NjY3KQorKysg
U291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvRGF0ZVByb3RvdHlwZS5oCSh3b3JraW5nIGNv
cHkpCkBAIC00MCw5ICs0MCw5IEBAIG5hbWVzcGFjZSBKU0MgewogICAgICAgICAgICAgcHJvdG90
eXBlLT5maW5pc2hDcmVhdGlvbihleGVjLCBnbG9iYWxPYmplY3QpOwogICAgICAgICAgICAgcmV0
dXJuIHByb3RvdHlwZTsKICAgICAgICAgfQotICAgICAgICBzdGF0aWMgYm9vbCBnZXRPd25Qcm9w
ZXJ0eVNsb3QoSlNDZWxsKiwgRXhlY1N0YXRlKiwgY29uc3QgSWRlbnRpZmllciYsIFByb3BlcnR5
U2xvdCYpOworICAgICAgICBzdGF0aWMgYm9vbCBnZXRPd25Qcm9wZXJ0eVNsb3QoSlNDZWxsKiwg
RXhlY1N0YXRlKiwgUHJvcGVydHlOYW1lLCBQcm9wZXJ0eVNsb3QmKTsKIAotICAgICAgICBzdGF0
aWMgYm9vbCBnZXRPd25Qcm9wZXJ0eURlc2NyaXB0b3IoSlNPYmplY3QqLCBFeGVjU3RhdGUqLCBj
b25zdCBJZGVudGlmaWVyJiwgUHJvcGVydHlEZXNjcmlwdG9yJik7CisgICAgICAgIHN0YXRpYyBi
b29sIGdldE93blByb3BlcnR5RGVzY3JpcHRvcihKU09iamVjdCosIEV4ZWNTdGF0ZSosIFByb3Bl
cnR5TmFtZSwgUHJvcGVydHlEZXNjcmlwdG9yJik7CiAKICAgICAgICAgc3RhdGljIGNvbnN0IENs
YXNzSW5mbyBzX2luZm87CiAKSW5kZXg6IFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL0Vy
cm9yLmgKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PQotLS0gU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvRXJyb3Iu
aAkocmV2aXNpb24gMTE2NjY3KQorKysgU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvRXJy
b3IuaAkod29ya2luZyBjb3B5KQpAQCAtOTAsNyArOTAsNyBAQCBuYW1lc3BhY2UgSlNDIHsKICAg
ICAgICAgc3RhdGljIFN0cmljdE1vZGVUeXBlRXJyb3JGdW5jdGlvbiogY3JlYXRlKEV4ZWNTdGF0
ZSogZXhlYywgSlNHbG9iYWxPYmplY3QqIGdsb2JhbE9iamVjdCwgU3RydWN0dXJlKiBzdHJ1Y3R1
cmUsIGNvbnN0IFVTdHJpbmcmIG1lc3NhZ2UpCiAgICAgICAgIHsKICAgICAgICAgICAgIFN0cmlj
dE1vZGVUeXBlRXJyb3JGdW5jdGlvbiogZnVuY3Rpb24gPSBuZXcgKE5vdE51bGwsIGFsbG9jYXRl
Q2VsbDxTdHJpY3RNb2RlVHlwZUVycm9yRnVuY3Rpb24+KCpleGVjLT5oZWFwKCkpKSBTdHJpY3RN
b2RlVHlwZUVycm9yRnVuY3Rpb24oZ2xvYmFsT2JqZWN0LCBzdHJ1Y3R1cmUsIG1lc3NhZ2UpOwot
ICAgICAgICAgICAgZnVuY3Rpb24tPmZpbmlzaENyZWF0aW9uKGV4ZWMtPmdsb2JhbERhdGEoKSwg
ZXhlYy0+Z2xvYmFsRGF0YSgpLnByb3BlcnR5TmFtZXMtPmVtcHR5SWRlbnRpZmllcik7CisgICAg
ICAgICAgICBmdW5jdGlvbi0+ZmluaXNoQ3JlYXRpb24oZXhlYy0+Z2xvYmFsRGF0YSgpLCAiIik7
CiAgICAgICAgICAgICByZXR1cm4gZnVuY3Rpb247CiAgICAgICAgIH0KICAgICAKSW5kZXg6IFNv
dXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL0Vycm9yQ29uc3RydWN0b3IuY3BwCj09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT0KLS0tIFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL0Vycm9yQ29uc3RydWN0b3IuY3Bw
CShyZXZpc2lvbiAxMTY2NjcpCisrKyBTb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9FcnJv
ckNvbnN0cnVjdG9yLmNwcAkod29ya2luZyBjb3B5KQpAQCAtMzksNyArMzksNyBAQCBFcnJvckNv
bnN0cnVjdG9yOjpFcnJvckNvbnN0cnVjdG9yKEpTR2xvCiAKIHZvaWQgRXJyb3JDb25zdHJ1Y3Rv
cjo6ZmluaXNoQ3JlYXRpb24oRXhlY1N0YXRlKiBleGVjLCBFcnJvclByb3RvdHlwZSogZXJyb3JQ
cm90b3R5cGUpCiB7Ci0gICAgQmFzZTo6ZmluaXNoQ3JlYXRpb24oZXhlYy0+Z2xvYmFsRGF0YSgp
LCBJZGVudGlmaWVyKGV4ZWMsIGVycm9yUHJvdG90eXBlLT5jbGFzc0luZm8oKS0+Y2xhc3NOYW1l
KSk7CisgICAgQmFzZTo6ZmluaXNoQ3JlYXRpb24oZXhlYy0+Z2xvYmFsRGF0YSgpLCBlcnJvclBy
b3RvdHlwZS0+Y2xhc3NJbmZvKCktPmNsYXNzTmFtZSk7CiAgICAgLy8gRUNNQSAxNS4xMS4zLjEg
RXJyb3IucHJvdG90eXBlCiAgICAgcHV0RGlyZWN0V2l0aG91dFRyYW5zaXRpb24oZXhlYy0+Z2xv
YmFsRGF0YSgpLCBleGVjLT5wcm9wZXJ0eU5hbWVzKCkucHJvdG90eXBlLCBlcnJvclByb3RvdHlw
ZSwgRG9udEVudW0gfCBEb250RGVsZXRlIHwgUmVhZE9ubHkpOwogICAgIHB1dERpcmVjdFdpdGhv
dXRUcmFuc2l0aW9uKGV4ZWMtPmdsb2JhbERhdGEoKSwgZXhlYy0+cHJvcGVydHlOYW1lcygpLmxl
bmd0aCwganNOdW1iZXIoMSksIERvbnREZWxldGUgfCBSZWFkT25seSB8IERvbnRFbnVtKTsKSW5k
ZXg6IFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL0Vycm9yUHJvdG90eXBlLmNwcAo9PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09Ci0tLSBTb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9FcnJvclByb3RvdHlwZS5j
cHAJKHJldmlzaW9uIDExNjY2NykKKysrIFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL0Vy
cm9yUHJvdG90eXBlLmNwcAkod29ya2luZyBjb3B5KQpAQCAtNjMsMTIgKzYzLDEyIEBAIHZvaWQg
RXJyb3JQcm90b3R5cGU6OmZpbmlzaENyZWF0aW9uKEV4ZWMKICAgICBwdXREaXJlY3QoZXhlYy0+
Z2xvYmFsRGF0YSgpLCBleGVjLT5wcm9wZXJ0eU5hbWVzKCkubmFtZSwganNOb250cml2aWFsU3Ry
aW5nKGV4ZWMsICJFcnJvciIpLCBEb250RW51bSk7CiB9CiAKLWJvb2wgRXJyb3JQcm90b3R5cGU6
OmdldE93blByb3BlcnR5U2xvdChKU0NlbGwqIGNlbGwsIEV4ZWNTdGF0ZSogZXhlYywgY29uc3Qg
SWRlbnRpZmllciYgcHJvcGVydHlOYW1lLCBQcm9wZXJ0eVNsb3QgJnNsb3QpCitib29sIEVycm9y
UHJvdG90eXBlOjpnZXRPd25Qcm9wZXJ0eVNsb3QoSlNDZWxsKiBjZWxsLCBFeGVjU3RhdGUqIGV4
ZWMsIFByb3BlcnR5TmFtZSBwcm9wZXJ0eU5hbWUsIFByb3BlcnR5U2xvdCAmc2xvdCkKIHsKICAg
ICByZXR1cm4gZ2V0U3RhdGljRnVuY3Rpb25TbG90PEVycm9ySW5zdGFuY2U+KGV4ZWMsIEV4ZWNT
dGF0ZTo6ZXJyb3JQcm90b3R5cGVUYWJsZShleGVjKSwganNDYXN0PEVycm9yUHJvdG90eXBlKj4o
Y2VsbCksIHByb3BlcnR5TmFtZSwgc2xvdCk7CiB9CiAKLWJvb2wgRXJyb3JQcm90b3R5cGU6Omdl
dE93blByb3BlcnR5RGVzY3JpcHRvcihKU09iamVjdCogb2JqZWN0LCBFeGVjU3RhdGUqIGV4ZWMs
IGNvbnN0IElkZW50aWZpZXImIHByb3BlcnR5TmFtZSwgUHJvcGVydHlEZXNjcmlwdG9yJiBkZXNj
cmlwdG9yKQorYm9vbCBFcnJvclByb3RvdHlwZTo6Z2V0T3duUHJvcGVydHlEZXNjcmlwdG9yKEpT
T2JqZWN0KiBvYmplY3QsIEV4ZWNTdGF0ZSogZXhlYywgUHJvcGVydHlOYW1lIHByb3BlcnR5TmFt
ZSwgUHJvcGVydHlEZXNjcmlwdG9yJiBkZXNjcmlwdG9yKQogewogICAgIHJldHVybiBnZXRTdGF0
aWNGdW5jdGlvbkRlc2NyaXB0b3I8RXJyb3JJbnN0YW5jZT4oZXhlYywgRXhlY1N0YXRlOjplcnJv
clByb3RvdHlwZVRhYmxlKGV4ZWMpLCBqc0Nhc3Q8RXJyb3JQcm90b3R5cGUqPihvYmplY3QpLCBw
cm9wZXJ0eU5hbWUsIGRlc2NyaXB0b3IpOwogfQpJbmRleDogU291cmNlL0phdmFTY3JpcHRDb3Jl
L3J1bnRpbWUvRXJyb3JQcm90b3R5cGUuaAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvSmF2YVNjcmlw
dENvcmUvcnVudGltZS9FcnJvclByb3RvdHlwZS5oCShyZXZpc2lvbiAxMTY2NjcpCisrKyBTb3Vy
Y2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9FcnJvclByb3RvdHlwZS5oCSh3b3JraW5nIGNvcHkp
CkBAIC01Miw4ICs1Miw4IEBAIG5hbWVzcGFjZSBKU0MgewogICAgICAgICBzdGF0aWMgY29uc3Qg
dW5zaWduZWQgU3RydWN0dXJlRmxhZ3MgPSBPdmVycmlkZXNHZXRPd25Qcm9wZXJ0eVNsb3QgfCBF
cnJvckluc3RhbmNlOjpTdHJ1Y3R1cmVGbGFnczsKIAogICAgIHByaXZhdGU6Ci0gICAgICAgIHN0
YXRpYyBib29sIGdldE93blByb3BlcnR5U2xvdChKU0NlbGwqLCBFeGVjU3RhdGUqLCBjb25zdCBJ
ZGVudGlmaWVyJiwgUHJvcGVydHlTbG90Jik7Ci0gICAgICAgIHN0YXRpYyBib29sIGdldE93blBy
b3BlcnR5RGVzY3JpcHRvcihKU09iamVjdCosIEV4ZWNTdGF0ZSosIGNvbnN0IElkZW50aWZpZXIm
LCBQcm9wZXJ0eURlc2NyaXB0b3ImKTsKKyAgICAgICAgc3RhdGljIGJvb2wgZ2V0T3duUHJvcGVy
dHlTbG90KEpTQ2VsbCosIEV4ZWNTdGF0ZSosIFByb3BlcnR5TmFtZSwgUHJvcGVydHlTbG90Jik7
CisgICAgICAgIHN0YXRpYyBib29sIGdldE93blByb3BlcnR5RGVzY3JpcHRvcihKU09iamVjdCos
IEV4ZWNTdGF0ZSosIFByb3BlcnR5TmFtZSwgUHJvcGVydHlEZXNjcmlwdG9yJik7CiAgICAgfTsK
IAogfSAvLyBuYW1lc3BhY2UgSlNDCkluZGV4OiBTb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGlt
ZS9GdW5jdGlvbkNvbnN0cnVjdG9yLmNwcAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvSmF2YVNjcmlw
dENvcmUvcnVudGltZS9GdW5jdGlvbkNvbnN0cnVjdG9yLmNwcAkocmV2aXNpb24gMTE2NjY3KQor
KysgU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvRnVuY3Rpb25Db25zdHJ1Y3Rvci5jcHAJ
KHdvcmtpbmcgY29weSkKQEAgLTQ3LDcgKzQ3LDcgQEAgRnVuY3Rpb25Db25zdHJ1Y3Rvcjo6RnVu
Y3Rpb25Db25zdHJ1Y3RvcgogCiB2b2lkIEZ1bmN0aW9uQ29uc3RydWN0b3I6OmZpbmlzaENyZWF0
aW9uKEV4ZWNTdGF0ZSogZXhlYywgRnVuY3Rpb25Qcm90b3R5cGUqIGZ1bmN0aW9uUHJvdG90eXBl
KQogewotICAgIEJhc2U6OmZpbmlzaENyZWF0aW9uKGV4ZWMtPmdsb2JhbERhdGEoKSwgSWRlbnRp
ZmllcihleGVjLCBmdW5jdGlvblByb3RvdHlwZS0+Y2xhc3NJbmZvKCktPmNsYXNzTmFtZSkpOwor
ICAgIEJhc2U6OmZpbmlzaENyZWF0aW9uKGV4ZWMtPmdsb2JhbERhdGEoKSwgZnVuY3Rpb25Qcm90
b3R5cGUtPmNsYXNzSW5mbygpLT5jbGFzc05hbWUpOwogICAgIHB1dERpcmVjdFdpdGhvdXRUcmFu
c2l0aW9uKGV4ZWMtPmdsb2JhbERhdGEoKSwgZXhlYy0+cHJvcGVydHlOYW1lcygpLnByb3RvdHlw
ZSwgZnVuY3Rpb25Qcm90b3R5cGUsIERvbnRFbnVtIHwgRG9udERlbGV0ZSB8IFJlYWRPbmx5KTsK
IAogICAgIC8vIE51bWJlciBvZiBhcmd1bWVudHMgZm9yIGNvbnN0cnVjdG9yCkluZGV4OiBTb3Vy
Y2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9GdW5jdGlvblByb3RvdHlwZS5jcHAKPT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PQotLS0gU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvRnVuY3Rpb25Qcm90b3R5cGUuY3Bw
CShyZXZpc2lvbiAxMTY2NjcpCisrKyBTb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9GdW5j
dGlvblByb3RvdHlwZS5jcHAJKHdvcmtpbmcgY29weSkKQEAgLTQ3LDcgKzQ3LDcgQEAgRnVuY3Rp
b25Qcm90b3R5cGU6OkZ1bmN0aW9uUHJvdG90eXBlKEpTRwogewogfQogCi12b2lkIEZ1bmN0aW9u
UHJvdG90eXBlOjpmaW5pc2hDcmVhdGlvbihFeGVjU3RhdGUqIGV4ZWMsIGNvbnN0IElkZW50aWZp
ZXImIG5hbWUpCit2b2lkIEZ1bmN0aW9uUHJvdG90eXBlOjpmaW5pc2hDcmVhdGlvbihFeGVjU3Rh
dGUqIGV4ZWMsIGNvbnN0IFVTdHJpbmcmIG5hbWUpCiB7CiAgICAgQmFzZTo6ZmluaXNoQ3JlYXRp
b24oZXhlYy0+Z2xvYmFsRGF0YSgpLCBuYW1lKTsKICAgICBwdXREaXJlY3RXaXRob3V0VHJhbnNp
dGlvbihleGVjLT5nbG9iYWxEYXRhKCksIGV4ZWMtPnByb3BlcnR5TmFtZXMoKS5sZW5ndGgsIGpz
TnVtYmVyKDApLCBEb250RGVsZXRlIHwgUmVhZE9ubHkgfCBEb250RW51bSk7CkBAIC01NSwxNiAr
NTUsMTYgQEAgdm9pZCBGdW5jdGlvblByb3RvdHlwZTo6ZmluaXNoQ3JlYXRpb24oRQogCiB2b2lk
IEZ1bmN0aW9uUHJvdG90eXBlOjphZGRGdW5jdGlvblByb3BlcnRpZXMoRXhlY1N0YXRlKiBleGVj
LCBKU0dsb2JhbE9iamVjdCogZ2xvYmFsT2JqZWN0LCBKU0Z1bmN0aW9uKiogY2FsbEZ1bmN0aW9u
LCBKU0Z1bmN0aW9uKiogYXBwbHlGdW5jdGlvbikKIHsKLSAgICBKU0Z1bmN0aW9uKiB0b1N0cmlu
Z0Z1bmN0aW9uID0gSlNGdW5jdGlvbjo6Y3JlYXRlKGV4ZWMsIGdsb2JhbE9iamVjdCwgMCwgZXhl
Yy0+cHJvcGVydHlOYW1lcygpLnRvU3RyaW5nLCBmdW5jdGlvblByb3RvRnVuY1RvU3RyaW5nKTsK
KyAgICBKU0Z1bmN0aW9uKiB0b1N0cmluZ0Z1bmN0aW9uID0gSlNGdW5jdGlvbjo6Y3JlYXRlKGV4
ZWMsIGdsb2JhbE9iamVjdCwgMCwgZXhlYy0+cHJvcGVydHlOYW1lcygpLnRvU3RyaW5nLnVzdHJp
bmcoKSwgZnVuY3Rpb25Qcm90b0Z1bmNUb1N0cmluZyk7CiAgICAgcHV0RGlyZWN0V2l0aG91dFRy
YW5zaXRpb24oZXhlYy0+Z2xvYmFsRGF0YSgpLCBleGVjLT5wcm9wZXJ0eU5hbWVzKCkudG9TdHJp
bmcsIHRvU3RyaW5nRnVuY3Rpb24sIERvbnRFbnVtKTsKIAotICAgICphcHBseUZ1bmN0aW9uID0g
SlNGdW5jdGlvbjo6Y3JlYXRlKGV4ZWMsIGdsb2JhbE9iamVjdCwgMiwgZXhlYy0+cHJvcGVydHlO
YW1lcygpLmFwcGx5LCBmdW5jdGlvblByb3RvRnVuY0FwcGx5KTsKKyAgICAqYXBwbHlGdW5jdGlv
biA9IEpTRnVuY3Rpb246OmNyZWF0ZShleGVjLCBnbG9iYWxPYmplY3QsIDIsIGV4ZWMtPnByb3Bl
cnR5TmFtZXMoKS5hcHBseS51c3RyaW5nKCksIGZ1bmN0aW9uUHJvdG9GdW5jQXBwbHkpOwogICAg
IHB1dERpcmVjdFdpdGhvdXRUcmFuc2l0aW9uKGV4ZWMtPmdsb2JhbERhdGEoKSwgZXhlYy0+cHJv
cGVydHlOYW1lcygpLmFwcGx5LCAqYXBwbHlGdW5jdGlvbiwgRG9udEVudW0pOwogCi0gICAgKmNh
bGxGdW5jdGlvbiA9IEpTRnVuY3Rpb246OmNyZWF0ZShleGVjLCBnbG9iYWxPYmplY3QsIDEsIGV4
ZWMtPnByb3BlcnR5TmFtZXMoKS5jYWxsLCBmdW5jdGlvblByb3RvRnVuY0NhbGwpOworICAgICpj
YWxsRnVuY3Rpb24gPSBKU0Z1bmN0aW9uOjpjcmVhdGUoZXhlYywgZ2xvYmFsT2JqZWN0LCAxLCBl
eGVjLT5wcm9wZXJ0eU5hbWVzKCkuY2FsbC51c3RyaW5nKCksIGZ1bmN0aW9uUHJvdG9GdW5jQ2Fs
bCk7CiAgICAgcHV0RGlyZWN0V2l0aG91dFRyYW5zaXRpb24oZXhlYy0+Z2xvYmFsRGF0YSgpLCBl
eGVjLT5wcm9wZXJ0eU5hbWVzKCkuY2FsbCwgKmNhbGxGdW5jdGlvbiwgRG9udEVudW0pOwogCi0g
ICAgSlNGdW5jdGlvbiogYmluZEZ1bmN0aW9uID0gSlNGdW5jdGlvbjo6Y3JlYXRlKGV4ZWMsIGds
b2JhbE9iamVjdCwgMSwgZXhlYy0+cHJvcGVydHlOYW1lcygpLmJpbmQsIGZ1bmN0aW9uUHJvdG9G
dW5jQmluZCk7CisgICAgSlNGdW5jdGlvbiogYmluZEZ1bmN0aW9uID0gSlNGdW5jdGlvbjo6Y3Jl
YXRlKGV4ZWMsIGdsb2JhbE9iamVjdCwgMSwgZXhlYy0+cHJvcGVydHlOYW1lcygpLmJpbmQudXN0
cmluZygpLCBmdW5jdGlvblByb3RvRnVuY0JpbmQpOwogICAgIHB1dERpcmVjdFdpdGhvdXRUcmFu
c2l0aW9uKGV4ZWMtPmdsb2JhbERhdGEoKSwgZXhlYy0+cHJvcGVydHlOYW1lcygpLmJpbmQsIGJp
bmRGdW5jdGlvbiwgRG9udEVudW0pOwogfQogCkBAIC0yMDcsOSArMjA3LDggQEAgRW5jb2RlZEpT
VmFsdWUgSlNDX0hPU1RfQ0FMTCBmdW5jdGlvblBybwogICAgICAgICAgICAgbGVuZ3RoID0gdGFy
Z2V0TGVuZ3RoIC0gbnVtQm91bmRBcmdzOwogICAgIH0KIAotICAgIElkZW50aWZpZXIgbmFtZShl
eGVjLCB0YXJnZXQuZ2V0KGV4ZWMsIGV4ZWMtPnByb3BlcnR5TmFtZXMoKS5uYW1lKS50b1N0cmlu
ZyhleGVjKS0+dmFsdWUoZXhlYykpOwotCi0gICAgcmV0dXJuIEpTVmFsdWU6OmVuY29kZShKU0Jv
dW5kRnVuY3Rpb246OmNyZWF0ZShleGVjLCBnbG9iYWxPYmplY3QsIHRhcmdldE9iamVjdCwgZXhl
Yy0+YXJndW1lbnQoMCksIGJvdW5kQXJncywgbGVuZ3RoLCBuYW1lKSk7CisgICAgSlNTdHJpbmcq
IG5hbWUgPSB0YXJnZXQuZ2V0KGV4ZWMsIGV4ZWMtPnByb3BlcnR5TmFtZXMoKS5uYW1lKS50b1N0
cmluZyhleGVjKTsKKyAgICByZXR1cm4gSlNWYWx1ZTo6ZW5jb2RlKEpTQm91bmRGdW5jdGlvbjo6
Y3JlYXRlKGV4ZWMsIGdsb2JhbE9iamVjdCwgdGFyZ2V0T2JqZWN0LCBleGVjLT5hcmd1bWVudCgw
KSwgYm91bmRBcmdzLCBsZW5ndGgsIG5hbWUtPnZhbHVlKGV4ZWMpKSk7CiB9CiAKIH0gLy8gbmFt
ZXNwYWNlIEpTQwpJbmRleDogU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvRnVuY3Rpb25Q
cm90b3R5cGUuaAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9G
dW5jdGlvblByb3RvdHlwZS5oCShyZXZpc2lvbiAxMTY2NjcpCisrKyBTb3VyY2UvSmF2YVNjcmlw
dENvcmUvcnVudGltZS9GdW5jdGlvblByb3RvdHlwZS5oCSh3b3JraW5nIGNvcHkpCkBAIC0zMiw3
ICszMiw3IEBAIG5hbWVzcGFjZSBKU0MgewogICAgICAgICBzdGF0aWMgRnVuY3Rpb25Qcm90b3R5
cGUqIGNyZWF0ZShFeGVjU3RhdGUqIGV4ZWMsIEpTR2xvYmFsT2JqZWN0KiBnbG9iYWxPYmplY3Qs
IFN0cnVjdHVyZSogc3RydWN0dXJlKQogICAgICAgICB7CiAgICAgICAgICAgICBGdW5jdGlvblBy
b3RvdHlwZSogcHJvdG90eXBlID0gbmV3IChOb3ROdWxsLCBhbGxvY2F0ZUNlbGw8RnVuY3Rpb25Q
cm90b3R5cGU+KCpleGVjLT5oZWFwKCkpKSBGdW5jdGlvblByb3RvdHlwZShnbG9iYWxPYmplY3Qs
IHN0cnVjdHVyZSk7Ci0gICAgICAgICAgICBwcm90b3R5cGUtPmZpbmlzaENyZWF0aW9uKGV4ZWMs
IGV4ZWMtPnByb3BlcnR5TmFtZXMoKS5udWxsSWRlbnRpZmllcik7CisgICAgICAgICAgICBwcm90
b3R5cGUtPmZpbmlzaENyZWF0aW9uKGV4ZWMsICIiKTsKICAgICAgICAgICAgIHJldHVybiBwcm90
b3R5cGU7CiAgICAgICAgIH0KICAgICAgICAgCkBAIC00Niw3ICs0Niw3IEBAIG5hbWVzcGFjZSBK
U0MgewogICAgICAgICBzdGF0aWMgY29uc3QgQ2xhc3NJbmZvIHNfaW5mbzsKIAogICAgIHByb3Rl
Y3RlZDoKLSAgICAgICAgdm9pZCBmaW5pc2hDcmVhdGlvbihFeGVjU3RhdGUqLCBjb25zdCBJZGVu
dGlmaWVyJiBuYW1lKTsKKyAgICAgICAgdm9pZCBmaW5pc2hDcmVhdGlvbihFeGVjU3RhdGUqLCBj
b25zdCBVU3RyaW5nJiBuYW1lKTsKIAogICAgIHByaXZhdGU6CiAgICAgICAgIEZ1bmN0aW9uUHJv
dG90eXBlKEpTR2xvYmFsT2JqZWN0KiwgU3RydWN0dXJlKik7CkluZGV4OiBTb3VyY2UvSmF2YVNj
cmlwdENvcmUvcnVudGltZS9JZGVudGlmaWVyLmNwcAo9PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvSmF2
YVNjcmlwdENvcmUvcnVudGltZS9JZGVudGlmaWVyLmNwcAkocmV2aXNpb24gMTE2NjY3KQorKysg
U291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvSWRlbnRpZmllci5jcHAJKHdvcmtpbmcgY29w
eSkKQEAgLTE0NSw1NiArMTQ1LDYgQEAgUGFzc1JlZlB0cjxTdHJpbmdJbXBsPiBJZGVudGlmaWVy
OjphZGQ4KAogICAgIHJldHVybiBhZGRSZXN1bHQuaXNOZXdFbnRyeSA/IGFkb3B0UmVmKCphZGRS
ZXN1bHQuaXRlcmF0b3IpIDogKmFkZFJlc3VsdC5pdGVyYXRvcjsKIH0KIAotdGVtcGxhdGUgPHR5
cGVuYW1lIENoYXJUeXBlPgotQUxXQVlTX0lOTElORSB1aW50MzJfdCBJZGVudGlmaWVyOjp0b1VJ
bnQzMkZyb21DaGFyYWN0ZXJzKGNvbnN0IENoYXJUeXBlKiBjaGFyYWN0ZXJzLCB1bnNpZ25lZCBs
ZW5ndGgsIGJvb2wmIG9rKQotewotICAgIC8vIEdldCB0aGUgZmlyc3QgY2hhcmFjdGVyLCB0dXJu
aW5nIGl0IGludG8gYSBkaWdpdC4KLSAgICB1aW50MzJfdCB2YWx1ZSA9IGNoYXJhY3RlcnNbMF0g
LSAnMCc7Ci0gICAgaWYgKHZhbHVlID4gOSkKLSAgICAgICAgcmV0dXJuIDA7Ci0gICAgCi0gICAg
Ly8gQ2hlY2sgZm9yIGxlYWRpbmcgemVyb3MuIElmIHRoZSBmaXJzdCBjaGFyYWNoZXIgaXMgMCwg
dGhlbiB0aGUKLSAgICAvLyBsZW5ndGggb2YgdGhlIHN0cmluZyBtdXN0IGJlIG9uZSAtIGUuZy4g
IjA0MiIgaXMgbm90IGVxdWFsIHRvICI0MiIuCi0gICAgaWYgKCF2YWx1ZSAmJiBsZW5ndGggPiAx
KQotICAgICAgICByZXR1cm4gMDsKLSAgICAKLSAgICB3aGlsZSAoLS1sZW5ndGgpIHsKLSAgICAg
ICAgLy8gTXVsdGlwbHkgdmFsdWUgYnkgMTAsIGNoZWNraW5nIGZvciBvdmVyZmxvdyBvdXQgb2Yg
MzIgYml0cy4KLSAgICAgICAgaWYgKHZhbHVlID4gMHhGRkZGRkZGRlUgLyAxMCkKLSAgICAgICAg
ICAgIHJldHVybiAwOwotICAgICAgICB2YWx1ZSAqPSAxMDsKLSAgICAgICAgCi0gICAgICAgIC8v
IEdldCB0aGUgbmV4dCBjaGFyYWN0ZXIsIHR1cm5pbmcgaXQgaW50byBhIGRpZ2l0LgotICAgICAg
ICB1aW50MzJfdCBuZXdWYWx1ZSA9ICooKytjaGFyYWN0ZXJzKSAtICcwJzsKLSAgICAgICAgaWYg
KG5ld1ZhbHVlID4gOSkKLSAgICAgICAgICAgIHJldHVybiAwOwotICAgICAgICAKLSAgICAgICAg
Ly8gQWRkIGluIHRoZSBvbGQgdmFsdWUsIGNoZWNraW5nIGZvciBvdmVyZmxvdyBvdXQgb2YgMzIg
Yml0cy4KLSAgICAgICAgbmV3VmFsdWUgKz0gdmFsdWU7Ci0gICAgICAgIGlmIChuZXdWYWx1ZSA8
IHZhbHVlKQotICAgICAgICAgICAgcmV0dXJuIDA7Ci0gICAgICAgIHZhbHVlID0gbmV3VmFsdWU7
Ci0gICAgfQotICAgIAotICAgIG9rID0gdHJ1ZTsKLSAgICByZXR1cm4gdmFsdWU7Ci19Ci0KLXVp
bnQzMl90IElkZW50aWZpZXI6OnRvVUludDMyKGNvbnN0IFVTdHJpbmcmIHN0cmluZywgYm9vbCYg
b2spCi17Ci0gICAgb2sgPSBmYWxzZTsKLQotICAgIHVuc2lnbmVkIGxlbmd0aCA9IHN0cmluZy5s
ZW5ndGgoKTsKLQotICAgIC8vIEFuIGVtcHR5IHN0cmluZyBpcyBub3QgYSBudW1iZXIuCi0gICAg
aWYgKCFsZW5ndGgpCi0gICAgICAgIHJldHVybiAwOwotCi0gICAgaWYgKHN0cmluZy5pczhCaXQo
KSkKLSAgICAgICAgcmV0dXJuIHRvVUludDMyRnJvbUNoYXJhY3RlcnMoc3RyaW5nLmNoYXJhY3Rl
cnM4KCksIGxlbmd0aCwgb2spOwotICAgIHJldHVybiB0b1VJbnQzMkZyb21DaGFyYWN0ZXJzKHN0
cmluZy5jaGFyYWN0ZXJzMTYoKSwgbGVuZ3RoLCBvayk7Ci19Ci0KIFBhc3NSZWZQdHI8U3RyaW5n
SW1wbD4gSWRlbnRpZmllcjo6YWRkU2xvd0Nhc2UoSlNHbG9iYWxEYXRhKiBnbG9iYWxEYXRhLCBT
dHJpbmdJbXBsKiByKQogewogICAgIEFTU0VSVCghci0+aXNJZGVudGlmaWVyKCkpOwpJbmRleDog
U291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvSWRlbnRpZmllci5oCj09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0t
IFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL0lkZW50aWZpZXIuaAkocmV2aXNpb24gMTE2
NjY3KQorKysgU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvSWRlbnRpZmllci5oCSh3b3Jr
aW5nIGNvcHkpCkBAIC02MywxMCArNjMsNiBAQCBuYW1lc3BhY2UgSlNDIHsKICAgICAgICAgc3Rh
dGljIElkZW50aWZpZXIgZnJvbShKU0dsb2JhbERhdGEqLCBpbnQgeSk7CiAgICAgICAgIHN0YXRp
YyBJZGVudGlmaWVyIGZyb20oSlNHbG9iYWxEYXRhKiwgZG91YmxlIHkpOwogCi0gICAgICAgIEpT
X0VYUE9SVF9QUklWQVRFIHN0YXRpYyB1aW50MzJfdCB0b1VJbnQzMihjb25zdCBVU3RyaW5nJiwg
Ym9vbCYgb2spOwotICAgICAgICB1aW50MzJfdCB0b1VJbnQzMihib29sJiBvaykgY29uc3QgeyBy
ZXR1cm4gdG9VSW50MzIobV9zdHJpbmcsIG9rKTsgfQotICAgICAgICB1bnNpZ25lZCB0b0FycmF5
SW5kZXgoYm9vbCYgb2spIGNvbnN0OwotCiAgICAgICAgIGJvb2wgaXNOdWxsKCkgY29uc3QgeyBy
ZXR1cm4gbV9zdHJpbmcuaXNOdWxsKCk7IH0KICAgICAgICAgYm9vbCBpc0VtcHR5KCkgY29uc3Qg
eyByZXR1cm4gbV9zdHJpbmcuaXNFbXB0eSgpOyB9CiAgICAgICAgIApJbmRleDogU291cmNlL0ph
dmFTY3JpcHRDb3JlL3J1bnRpbWUvSW50ZXJuYWxGdW5jdGlvbi5jcHAKPT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0g
U291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvSW50ZXJuYWxGdW5jdGlvbi5jcHAJKHJldmlz
aW9uIDExNjY2NykKKysrIFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL0ludGVybmFsRnVu
Y3Rpb24uY3BwCSh3b3JraW5nIGNvcHkpCkBAIC0zOSwxMiArMzksMTIgQEAgSW50ZXJuYWxGdW5j
dGlvbjo6SW50ZXJuYWxGdW5jdGlvbihKU0dsbwogewogfQogCi12b2lkIEludGVybmFsRnVuY3Rp
b246OmZpbmlzaENyZWF0aW9uKEpTR2xvYmFsRGF0YSYgZ2xvYmFsRGF0YSwgY29uc3QgSWRlbnRp
ZmllciYgbmFtZSkKK3ZvaWQgSW50ZXJuYWxGdW5jdGlvbjo6ZmluaXNoQ3JlYXRpb24oSlNHbG9i
YWxEYXRhJiBnbG9iYWxEYXRhLCBjb25zdCBVU3RyaW5nJiBuYW1lKQogewogICAgIEJhc2U6OmZp
bmlzaENyZWF0aW9uKGdsb2JhbERhdGEpOwogICAgIEFTU0VSVChpbmhlcml0cygmc19pbmZvKSk7
CiAgICAgQVNTRVJUKG1ldGhvZFRhYmxlKCktPmdldENhbGxEYXRhICE9IEludGVybmFsRnVuY3Rp
b246OnNfaW5mby5tZXRob2RUYWJsZS5nZXRDYWxsRGF0YSk7Ci0gICAgcHV0RGlyZWN0KGdsb2Jh
bERhdGEsIGdsb2JhbERhdGEucHJvcGVydHlOYW1lcy0+bmFtZSwganNTdHJpbmcoJmdsb2JhbERh
dGEsIG5hbWUuaXNOdWxsKCkgPyAiIiA6IG5hbWUudXN0cmluZygpKSwgRG9udERlbGV0ZSB8IFJl
YWRPbmx5IHwgRG9udEVudW0pOworICAgIHB1dERpcmVjdChnbG9iYWxEYXRhLCBnbG9iYWxEYXRh
LnByb3BlcnR5TmFtZXMtPm5hbWUsIGpzU3RyaW5nKCZnbG9iYWxEYXRhLCBuYW1lLmlzTnVsbCgp
ID8gIiIgOiBuYW1lKSwgRG9udERlbGV0ZSB8IFJlYWRPbmx5IHwgRG9udEVudW0pOwogfQogCiBj
b25zdCBVU3RyaW5nJiBJbnRlcm5hbEZ1bmN0aW9uOjpuYW1lKEV4ZWNTdGF0ZSogZXhlYykKSW5k
ZXg6IFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL0ludGVybmFsRnVuY3Rpb24uaAo9PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09Ci0tLSBTb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9JbnRlcm5hbEZ1bmN0aW9u
LmgJKHJldmlzaW9uIDExNjY2NykKKysrIFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL0lu
dGVybmFsRnVuY3Rpb24uaAkod29ya2luZyBjb3B5KQpAQCAtNTEsNyArNTEsNyBAQCBuYW1lc3Bh
Y2UgSlNDIHsKIAogICAgICAgICBKU19FWFBPUlRfUFJJVkFURSBJbnRlcm5hbEZ1bmN0aW9uKEpT
R2xvYmFsT2JqZWN0KiwgU3RydWN0dXJlKik7CiAKLSAgICAgICAgSlNfRVhQT1JUX1BSSVZBVEUg
dm9pZCBmaW5pc2hDcmVhdGlvbihKU0dsb2JhbERhdGEmLCBjb25zdCBJZGVudGlmaWVyJiBuYW1l
KTsKKyAgICAgICAgSlNfRVhQT1JUX1BSSVZBVEUgdm9pZCBmaW5pc2hDcmVhdGlvbihKU0dsb2Jh
bERhdGEmLCBjb25zdCBVU3RyaW5nJiBuYW1lKTsKIAogICAgICAgICBzdGF0aWMgQ2FsbFR5cGUg
Z2V0Q2FsbERhdGEoSlNDZWxsKiwgQ2FsbERhdGEmKTsKICAgICB9OwpJbmRleDogU291cmNlL0ph
dmFTY3JpcHRDb3JlL3J1bnRpbWUvSlNBY3RpdmF0aW9uLmNwcAo9PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3Vy
Y2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9KU0FjdGl2YXRpb24uY3BwCShyZXZpc2lvbiAxMTY2
NjcpCisrKyBTb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9KU0FjdGl2YXRpb24uY3BwCSh3
b3JraW5nIGNvcHkpCkBAIC05MCw3ICs5MCw3IEBAIHZvaWQgSlNBY3RpdmF0aW9uOjp2aXNpdENo
aWxkcmVuKEpTQ2VsbCoKICAgICB2aXNpdG9yLmFwcGVuZFZhbHVlcyhyZWdpc3RlckFycmF5ICsg
b2Zmc2V0LCB0aGlzT2JqZWN0LT5tX251bUNhcHR1cmVkVmFycyk7CiB9CiAKLWlubGluZSBib29s
IEpTQWN0aXZhdGlvbjo6c3ltYm9sVGFibGVHZXQoY29uc3QgSWRlbnRpZmllciYgcHJvcGVydHlO
YW1lLCBQcm9wZXJ0eVNsb3QmIHNsb3QpCitpbmxpbmUgYm9vbCBKU0FjdGl2YXRpb246OnN5bWJv
bFRhYmxlR2V0KFByb3BlcnR5TmFtZSBwcm9wZXJ0eU5hbWUsIFByb3BlcnR5U2xvdCYgc2xvdCkK
IHsKICAgICBTeW1ib2xUYWJsZUVudHJ5IGVudHJ5ID0gc3ltYm9sVGFibGUoKS5pbmxpbmVHZXQo
cHJvcGVydHlOYW1lLmltcGwoKSk7CiAgICAgaWYgKGVudHJ5LmlzTnVsbCgpKQpAQCAtMTAyLDcg
KzEwMiw3IEBAIGlubGluZSBib29sIEpTQWN0aXZhdGlvbjo6c3ltYm9sVGFibGVHZXQKICAgICBy
ZXR1cm4gdHJ1ZTsKIH0KIAotaW5saW5lIGJvb2wgSlNBY3RpdmF0aW9uOjpzeW1ib2xUYWJsZVB1
dChFeGVjU3RhdGUqIGV4ZWMsIGNvbnN0IElkZW50aWZpZXImIHByb3BlcnR5TmFtZSwgSlNWYWx1
ZSB2YWx1ZSwgYm9vbCBzaG91bGRUaHJvdykKK2lubGluZSBib29sIEpTQWN0aXZhdGlvbjo6c3lt
Ym9sVGFibGVQdXQoRXhlY1N0YXRlKiBleGVjLCBQcm9wZXJ0eU5hbWUgcHJvcGVydHlOYW1lLCBK
U1ZhbHVlIHZhbHVlLCBib29sIHNob3VsZFRocm93KQogewogICAgIEpTR2xvYmFsRGF0YSYgZ2xv
YmFsRGF0YSA9IGV4ZWMtPmdsb2JhbERhdGEoKTsKICAgICBBU1NFUlQoIUhlYXA6OmhlYXAodmFs
dWUpIHx8IEhlYXA6OmhlYXAodmFsdWUpID09IEhlYXA6OmhlYXAodGhpcykpOwpAQCAtMTM3LDcg
KzEzNyw3IEBAIHZvaWQgSlNBY3RpdmF0aW9uOjpnZXRPd25Qcm9wZXJ0eU5hbWVzKEoKICAgICBK
U09iamVjdDo6Z2V0T3duUHJvcGVydHlOYW1lcyh0aGlzT2JqZWN0LCBleGVjLCBwcm9wZXJ0eU5h
bWVzLCBtb2RlKTsKIH0KIAotaW5saW5lIGJvb2wgSlNBY3RpdmF0aW9uOjpzeW1ib2xUYWJsZVB1
dFdpdGhBdHRyaWJ1dGVzKEpTR2xvYmFsRGF0YSYgZ2xvYmFsRGF0YSwgY29uc3QgSWRlbnRpZmll
ciYgcHJvcGVydHlOYW1lLCBKU1ZhbHVlIHZhbHVlLCB1bnNpZ25lZCBhdHRyaWJ1dGVzKQoraW5s
aW5lIGJvb2wgSlNBY3RpdmF0aW9uOjpzeW1ib2xUYWJsZVB1dFdpdGhBdHRyaWJ1dGVzKEpTR2xv
YmFsRGF0YSYgZ2xvYmFsRGF0YSwgUHJvcGVydHlOYW1lIHByb3BlcnR5TmFtZSwgSlNWYWx1ZSB2
YWx1ZSwgdW5zaWduZWQgYXR0cmlidXRlcykKIHsKICAgICBBU1NFUlQoIUhlYXA6OmhlYXAodmFs
dWUpIHx8IEhlYXA6OmhlYXAodmFsdWUpID09IEhlYXA6OmhlYXAodGhpcykpOwogICAgIApAQCAt
MTU0LDcgKzE1NCw3IEBAIGlubGluZSBib29sIEpTQWN0aXZhdGlvbjo6c3ltYm9sVGFibGVQdXQK
ICAgICByZXR1cm4gdHJ1ZTsKIH0KIAotYm9vbCBKU0FjdGl2YXRpb246OmdldE93blByb3BlcnR5
U2xvdChKU0NlbGwqIGNlbGwsIEV4ZWNTdGF0ZSogZXhlYywgY29uc3QgSWRlbnRpZmllciYgcHJv
cGVydHlOYW1lLCBQcm9wZXJ0eVNsb3QmIHNsb3QpCitib29sIEpTQWN0aXZhdGlvbjo6Z2V0T3du
UHJvcGVydHlTbG90KEpTQ2VsbCogY2VsbCwgRXhlY1N0YXRlKiBleGVjLCBQcm9wZXJ0eU5hbWUg
cHJvcGVydHlOYW1lLCBQcm9wZXJ0eVNsb3QmIHNsb3QpCiB7CiAgICAgSlNBY3RpdmF0aW9uKiB0
aGlzT2JqZWN0ID0ganNDYXN0PEpTQWN0aXZhdGlvbio+KGNlbGwpOwogICAgIGlmIChwcm9wZXJ0
eU5hbWUgPT0gZXhlYy0+cHJvcGVydHlOYW1lcygpLmFyZ3VtZW50cykgewpAQCAtMTc3LDcgKzE3
Nyw3IEBAIGJvb2wgSlNBY3RpdmF0aW9uOjpnZXRPd25Qcm9wZXJ0eVNsb3QoSlMKICAgICByZXR1
cm4gZmFsc2U7CiB9CiAKLXZvaWQgSlNBY3RpdmF0aW9uOjpwdXQoSlNDZWxsKiBjZWxsLCBFeGVj
U3RhdGUqIGV4ZWMsIGNvbnN0IElkZW50aWZpZXImIHByb3BlcnR5TmFtZSwgSlNWYWx1ZSB2YWx1
ZSwgUHV0UHJvcGVydHlTbG90JiBzbG90KQordm9pZCBKU0FjdGl2YXRpb246OnB1dChKU0NlbGwq
IGNlbGwsIEV4ZWNTdGF0ZSogZXhlYywgUHJvcGVydHlOYW1lIHByb3BlcnR5TmFtZSwgSlNWYWx1
ZSB2YWx1ZSwgUHV0UHJvcGVydHlTbG90JiBzbG90KQogewogICAgIEpTQWN0aXZhdGlvbiogdGhp
c09iamVjdCA9IGpzQ2FzdDxKU0FjdGl2YXRpb24qPihjZWxsKTsKICAgICBBU1NFUlQoIUhlYXA6
OmhlYXAodmFsdWUpIHx8IEhlYXA6OmhlYXAodmFsdWUpID09IEhlYXA6OmhlYXAodGhpc09iamVj
dCkpOwpAQCAtMTkzLDcgKzE5Myw3IEBAIHZvaWQgSlNBY3RpdmF0aW9uOjpwdXQoSlNDZWxsKiBj
ZWxsLCBFeGUKIH0KIAogLy8gRklYTUU6IE1ha2UgdGhpcyBmdW5jdGlvbiBob25vciBSZWFkT25s
eSAoY29uc3QpIGFuZCBEb250RW51bQotdm9pZCBKU0FjdGl2YXRpb246OnB1dERpcmVjdFZpcnR1
YWwoSlNPYmplY3QqIG9iamVjdCwgRXhlY1N0YXRlKiBleGVjLCBjb25zdCBJZGVudGlmaWVyJiBw
cm9wZXJ0eU5hbWUsIEpTVmFsdWUgdmFsdWUsIHVuc2lnbmVkIGF0dHJpYnV0ZXMpCit2b2lkIEpT
QWN0aXZhdGlvbjo6cHV0RGlyZWN0VmlydHVhbChKU09iamVjdCogb2JqZWN0LCBFeGVjU3RhdGUq
IGV4ZWMsIFByb3BlcnR5TmFtZSBwcm9wZXJ0eU5hbWUsIEpTVmFsdWUgdmFsdWUsIHVuc2lnbmVk
IGF0dHJpYnV0ZXMpCiB7CiAgICAgSlNBY3RpdmF0aW9uKiB0aGlzT2JqZWN0ID0ganNDYXN0PEpT
QWN0aXZhdGlvbio+KG9iamVjdCk7CiAgICAgQVNTRVJUKCFIZWFwOjpoZWFwKHZhbHVlKSB8fCBI
ZWFwOjpoZWFwKHZhbHVlKSA9PSBIZWFwOjpoZWFwKHRoaXNPYmplY3QpKTsKQEAgLTIwOCw3ICsy
MDgsNyBAQCB2b2lkIEpTQWN0aXZhdGlvbjo6cHV0RGlyZWN0VmlydHVhbChKU09iCiAgICAgSlNP
YmplY3Q6OnB1dERpcmVjdFZpcnR1YWwodGhpc09iamVjdCwgZXhlYywgcHJvcGVydHlOYW1lLCB2
YWx1ZSwgYXR0cmlidXRlcyk7CiB9CiAKLWJvb2wgSlNBY3RpdmF0aW9uOjpkZWxldGVQcm9wZXJ0
eShKU0NlbGwqIGNlbGwsIEV4ZWNTdGF0ZSogZXhlYywgY29uc3QgSWRlbnRpZmllciYgcHJvcGVy
dHlOYW1lKQorYm9vbCBKU0FjdGl2YXRpb246OmRlbGV0ZVByb3BlcnR5KEpTQ2VsbCogY2VsbCwg
RXhlY1N0YXRlKiBleGVjLCBQcm9wZXJ0eU5hbWUgcHJvcGVydHlOYW1lKQogewogICAgIGlmIChw
cm9wZXJ0eU5hbWUgPT0gZXhlYy0+cHJvcGVydHlOYW1lcygpLmFyZ3VtZW50cykKICAgICAgICAg
cmV0dXJuIGZhbHNlOwpAQCAtMjIxLDcgKzIyMSw3IEBAIEpTT2JqZWN0KiBKU0FjdGl2YXRpb246
OnRvVGhpc09iamVjdChKU0MKICAgICByZXR1cm4gZXhlYy0+Z2xvYmFsVGhpc1ZhbHVlKCk7CiB9
CiAKLUpTVmFsdWUgSlNBY3RpdmF0aW9uOjphcmd1bWVudHNHZXR0ZXIoRXhlY1N0YXRlKiwgSlNW
YWx1ZSBzbG90QmFzZSwgY29uc3QgSWRlbnRpZmllciYpCitKU1ZhbHVlIEpTQWN0aXZhdGlvbjo6
YXJndW1lbnRzR2V0dGVyKEV4ZWNTdGF0ZSosIEpTVmFsdWUgc2xvdEJhc2UsIFByb3BlcnR5TmFt
ZSkKIHsKICAgICBKU0FjdGl2YXRpb24qIGFjdGl2YXRpb24gPSBhc0FjdGl2YXRpb24oc2xvdEJh
c2UpOwogICAgIENhbGxGcmFtZSogY2FsbEZyYW1lID0gQ2FsbEZyYW1lOjpjcmVhdGUocmVpbnRl
cnByZXRfY2FzdDxSZWdpc3Rlcio+KGFjdGl2YXRpb24tPm1fcmVnaXN0ZXJzKSk7CkluZGV4OiBT
b3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9KU0FjdGl2YXRpb24uaAo9PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0t
LSBTb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9KU0FjdGl2YXRpb24uaAkocmV2aXNpb24g
MTE2NjY3KQorKysgU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvSlNBY3RpdmF0aW9uLmgJ
KHdvcmtpbmcgY29weSkKQEAgLTU5LDEzICs1OSwxMyBAQCBuYW1lc3BhY2UgSlNDIHsKIAogICAg
ICAgICBib29sIGlzRHluYW1pY1Njb3BlKGJvb2wmIHJlcXVpcmVzRHluYW1pY0NoZWNrcykgY29u
c3Q7CiAKLSAgICAgICAgc3RhdGljIGJvb2wgZ2V0T3duUHJvcGVydHlTbG90KEpTQ2VsbCosIEV4
ZWNTdGF0ZSosIGNvbnN0IElkZW50aWZpZXImLCBQcm9wZXJ0eVNsb3QmKTsKKyAgICAgICAgc3Rh
dGljIGJvb2wgZ2V0T3duUHJvcGVydHlTbG90KEpTQ2VsbCosIEV4ZWNTdGF0ZSosIFByb3BlcnR5
TmFtZSwgUHJvcGVydHlTbG90Jik7CiAgICAgICAgIHN0YXRpYyB2b2lkIGdldE93blByb3BlcnR5
TmFtZXMoSlNPYmplY3QqLCBFeGVjU3RhdGUqLCBQcm9wZXJ0eU5hbWVBcnJheSYsIEVudW1lcmF0
aW9uTW9kZSk7CiAKLSAgICAgICAgc3RhdGljIHZvaWQgcHV0KEpTQ2VsbCosIEV4ZWNTdGF0ZSos
IGNvbnN0IElkZW50aWZpZXImLCBKU1ZhbHVlLCBQdXRQcm9wZXJ0eVNsb3QmKTsKKyAgICAgICAg
c3RhdGljIHZvaWQgcHV0KEpTQ2VsbCosIEV4ZWNTdGF0ZSosIFByb3BlcnR5TmFtZSwgSlNWYWx1
ZSwgUHV0UHJvcGVydHlTbG90Jik7CiAKLSAgICAgICAgc3RhdGljIHZvaWQgcHV0RGlyZWN0Vmly
dHVhbChKU09iamVjdCosIEV4ZWNTdGF0ZSosIGNvbnN0IElkZW50aWZpZXImLCBKU1ZhbHVlLCB1
bnNpZ25lZCBhdHRyaWJ1dGVzKTsKLSAgICAgICAgc3RhdGljIGJvb2wgZGVsZXRlUHJvcGVydHko
SlNDZWxsKiwgRXhlY1N0YXRlKiwgY29uc3QgSWRlbnRpZmllciYgcHJvcGVydHlOYW1lKTsKKyAg
ICAgICAgc3RhdGljIHZvaWQgcHV0RGlyZWN0VmlydHVhbChKU09iamVjdCosIEV4ZWNTdGF0ZSos
IFByb3BlcnR5TmFtZSwgSlNWYWx1ZSwgdW5zaWduZWQgYXR0cmlidXRlcyk7CisgICAgICAgIHN0
YXRpYyBib29sIGRlbGV0ZVByb3BlcnR5KEpTQ2VsbCosIEV4ZWNTdGF0ZSosIFByb3BlcnR5TmFt
ZSk7CiAKICAgICAgICAgc3RhdGljIEpTT2JqZWN0KiB0b1RoaXNPYmplY3QoSlNDZWxsKiwgRXhl
Y1N0YXRlKik7CiAKQEAgLTgyLDEzICs4MiwxMyBAQCBuYW1lc3BhY2UgSlNDIHsKICAgICAgICAg
c3RhdGljIGNvbnN0IHVuc2lnbmVkIFN0cnVjdHVyZUZsYWdzID0gSXNFbnZpcm9ubWVudFJlY29y
ZCB8IE92ZXJyaWRlc0dldE93blByb3BlcnR5U2xvdCB8IE92ZXJyaWRlc1Zpc2l0Q2hpbGRyZW4g
fCBPdmVycmlkZXNHZXRQcm9wZXJ0eU5hbWVzIHwgSlNWYXJpYWJsZU9iamVjdDo6U3RydWN0dXJl
RmxhZ3M7CiAKICAgICBwcml2YXRlOgotICAgICAgICBib29sIHN5bWJvbFRhYmxlR2V0KGNvbnN0
IElkZW50aWZpZXImLCBQcm9wZXJ0eVNsb3QmKTsKLSAgICAgICAgYm9vbCBzeW1ib2xUYWJsZUdl
dChjb25zdCBJZGVudGlmaWVyJiwgUHJvcGVydHlEZXNjcmlwdG9yJik7Ci0gICAgICAgIGJvb2wg
c3ltYm9sVGFibGVHZXQoY29uc3QgSWRlbnRpZmllciYsIFByb3BlcnR5U2xvdCYsIGJvb2wmIHNs
b3RJc1dyaXRlYWJsZSk7Ci0gICAgICAgIGJvb2wgc3ltYm9sVGFibGVQdXQoRXhlY1N0YXRlKiwg
Y29uc3QgSWRlbnRpZmllciYsIEpTVmFsdWUsIGJvb2wgc2hvdWxkVGhyb3cpOwotICAgICAgICBi
b29sIHN5bWJvbFRhYmxlUHV0V2l0aEF0dHJpYnV0ZXMoSlNHbG9iYWxEYXRhJiwgY29uc3QgSWRl
bnRpZmllciYsIEpTVmFsdWUsIHVuc2lnbmVkIGF0dHJpYnV0ZXMpOworICAgICAgICBib29sIHN5
bWJvbFRhYmxlR2V0KFByb3BlcnR5TmFtZSwgUHJvcGVydHlTbG90Jik7CisgICAgICAgIGJvb2wg
c3ltYm9sVGFibGVHZXQoUHJvcGVydHlOYW1lLCBQcm9wZXJ0eURlc2NyaXB0b3ImKTsKKyAgICAg
ICAgYm9vbCBzeW1ib2xUYWJsZUdldChQcm9wZXJ0eU5hbWUsIFByb3BlcnR5U2xvdCYsIGJvb2wm
IHNsb3RJc1dyaXRlYWJsZSk7CisgICAgICAgIGJvb2wgc3ltYm9sVGFibGVQdXQoRXhlY1N0YXRl
KiwgUHJvcGVydHlOYW1lLCBKU1ZhbHVlLCBib29sIHNob3VsZFRocm93KTsKKyAgICAgICAgYm9v
bCBzeW1ib2xUYWJsZVB1dFdpdGhBdHRyaWJ1dGVzKEpTR2xvYmFsRGF0YSYsIFByb3BlcnR5TmFt
ZSwgSlNWYWx1ZSwgdW5zaWduZWQgYXR0cmlidXRlcyk7CiAKLSAgICAgICAgc3RhdGljIEpTVmFs
dWUgYXJndW1lbnRzR2V0dGVyKEV4ZWNTdGF0ZSosIEpTVmFsdWUsIGNvbnN0IElkZW50aWZpZXIm
KTsKKyAgICAgICAgc3RhdGljIEpTVmFsdWUgYXJndW1lbnRzR2V0dGVyKEV4ZWNTdGF0ZSosIEpT
VmFsdWUsIFByb3BlcnR5TmFtZSk7CiAgICAgICAgIE5FVkVSX0lOTElORSBQcm9wZXJ0eVNsb3Q6
OkdldFZhbHVlRnVuYyBnZXRBcmd1bWVudHNHZXR0ZXIoKTsKIAogICAgICAgICBpbnQgbV9udW1D
YXB0dXJlZEFyZ3M7CkluZGV4OiBTb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9KU0FycmF5
LmNwcAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9KU0FycmF5
LmNwcAkocmV2aXNpb24gMTE2NjY3KQorKysgU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUv
SlNBcnJheS5jcHAJKHdvcmtpbmcgY29weSkKQEAgLTUzNSw3ICs1MzUsNyBAQCB2b2lkIEpTQXJy
YXk6OnNldExlbmd0aFdyaXRhYmxlKEV4ZWNTdGF0CiB9CiAKIC8vIERlZmluZWQgaW4gRVM1LjEg
MTUuNC41LjEKLWJvb2wgSlNBcnJheTo6ZGVmaW5lT3duUHJvcGVydHkoSlNPYmplY3QqIG9iamVj
dCwgRXhlY1N0YXRlKiBleGVjLCBjb25zdCBJZGVudGlmaWVyJiBwcm9wZXJ0eU5hbWUsIFByb3Bl
cnR5RGVzY3JpcHRvciYgZGVzY3JpcHRvciwgYm9vbCB0aHJvd0V4Y2VwdGlvbikKK2Jvb2wgSlNB
cnJheTo6ZGVmaW5lT3duUHJvcGVydHkoSlNPYmplY3QqIG9iamVjdCwgRXhlY1N0YXRlKiBleGVj
LCBQcm9wZXJ0eU5hbWUgcHJvcGVydHlOYW1lLCBQcm9wZXJ0eURlc2NyaXB0b3ImIGRlc2NyaXB0
b3IsIGJvb2wgdGhyb3dFeGNlcHRpb24pCiB7CiAgICAgSlNBcnJheSogYXJyYXkgPSBqc0Nhc3Q8
SlNBcnJheSo+KG9iamVjdCk7CiAKQEAgLTYxOCwxMCArNjE4LDkgQEAgYm9vbCBKU0FycmF5Ojpk
ZWZpbmVPd25Qcm9wZXJ0eShKU09iamVjdAogICAgIH0KIAogICAgIC8vIDQuIEVsc2UgaWYgUCBp
cyBhbiBhcnJheSBpbmRleCAoMTUuNCksIHRoZW4KLSAgICBib29sIGlzQXJyYXlJbmRleDsKICAg
ICAvLyBhLiBMZXQgaW5kZXggYmUgVG9VaW50MzIoUCkuCi0gICAgdW5zaWduZWQgaW5kZXggPSBw
cm9wZXJ0eU5hbWUudG9BcnJheUluZGV4KGlzQXJyYXlJbmRleCk7Ci0gICAgaWYgKGlzQXJyYXlJ
bmRleCkgeworICAgIHVuc2lnbmVkIGluZGV4ID0gcHJvcGVydHlOYW1lLmFzSW5kZXgoKTsKKyAg
ICBpZiAoaW5kZXggIT0gUHJvcGVydHlOYW1lOjpOb3RBbkluZGV4KSB7CiAgICAgICAgIC8vIGIu
IFJlamVjdCBpZiBpbmRleCA+PSBvbGRMZW4gYW5kIG9sZExlbkRlc2MuW1tXcml0YWJsZV1dIGlz
IGZhbHNlLgogICAgICAgICBpZiAoaW5kZXggPj0gYXJyYXktPmxlbmd0aCgpICYmICFhcnJheS0+
aXNMZW5ndGhXcml0YWJsZSgpKQogICAgICAgICAgICAgcmV0dXJuIHJlamVjdChleGVjLCB0aHJv
d0V4Y2VwdGlvbiwgIkF0dGVtcHRpbmcgdG8gZGVmaW5lIG51bWVyaWMgcHJvcGVydHkgb24gYXJy
YXkgd2l0aCBub24td3JpdGFibGUgbGVuZ3RoIHByb3BlcnR5LiIpOwpAQCAtNjY1LDcgKzY2NCw3
IEBAIGJvb2wgSlNBcnJheTo6Z2V0T3duUHJvcGVydHlTbG90QnlJbmRleCgKICAgICByZXR1cm4g
SlNPYmplY3Q6OmdldE93blByb3BlcnR5U2xvdCh0aGlzT2JqZWN0LCBleGVjLCBJZGVudGlmaWVy
Ojpmcm9tKGV4ZWMsIGkpLCBzbG90KTsKIH0KIAotYm9vbCBKU0FycmF5OjpnZXRPd25Qcm9wZXJ0
eVNsb3QoSlNDZWxsKiBjZWxsLCBFeGVjU3RhdGUqIGV4ZWMsIGNvbnN0IElkZW50aWZpZXImIHBy
b3BlcnR5TmFtZSwgUHJvcGVydHlTbG90JiBzbG90KQorYm9vbCBKU0FycmF5OjpnZXRPd25Qcm9w
ZXJ0eVNsb3QoSlNDZWxsKiBjZWxsLCBFeGVjU3RhdGUqIGV4ZWMsIFByb3BlcnR5TmFtZSBwcm9w
ZXJ0eU5hbWUsIFByb3BlcnR5U2xvdCYgc2xvdCkKIHsKICAgICBKU0FycmF5KiB0aGlzT2JqZWN0
ID0ganNDYXN0PEpTQXJyYXkqPihjZWxsKTsKICAgICBpZiAocHJvcGVydHlOYW1lID09IGV4ZWMt
PnByb3BlcnR5TmFtZXMoKS5sZW5ndGgpIHsKQEAgLTY3MywxNSArNjcyLDE0IEBAIGJvb2wgSlNB
cnJheTo6Z2V0T3duUHJvcGVydHlTbG90KEpTQ2VsbCoKICAgICAgICAgcmV0dXJuIHRydWU7CiAg
ICAgfQogCi0gICAgYm9vbCBpc0FycmF5SW5kZXg7Ci0gICAgdW5zaWduZWQgaSA9IHByb3BlcnR5
TmFtZS50b0FycmF5SW5kZXgoaXNBcnJheUluZGV4KTsKLSAgICBpZiAoaXNBcnJheUluZGV4KQor
ICAgIHVuc2lnbmVkIGkgPSBwcm9wZXJ0eU5hbWUuYXNJbmRleCgpOworICAgIGlmIChpICE9IFBy
b3BlcnR5TmFtZTo6Tm90QW5JbmRleCkKICAgICAgICAgcmV0dXJuIEpTQXJyYXk6OmdldE93blBy
b3BlcnR5U2xvdEJ5SW5kZXgodGhpc09iamVjdCwgZXhlYywgaSwgc2xvdCk7CiAKICAgICByZXR1
cm4gSlNPYmplY3Q6OmdldE93blByb3BlcnR5U2xvdCh0aGlzT2JqZWN0LCBleGVjLCBwcm9wZXJ0
eU5hbWUsIHNsb3QpOwogfQogCi1ib29sIEpTQXJyYXk6OmdldE93blByb3BlcnR5RGVzY3JpcHRv
cihKU09iamVjdCogb2JqZWN0LCBFeGVjU3RhdGUqIGV4ZWMsIGNvbnN0IElkZW50aWZpZXImIHBy
b3BlcnR5TmFtZSwgUHJvcGVydHlEZXNjcmlwdG9yJiBkZXNjcmlwdG9yKQorYm9vbCBKU0FycmF5
OjpnZXRPd25Qcm9wZXJ0eURlc2NyaXB0b3IoSlNPYmplY3QqIG9iamVjdCwgRXhlY1N0YXRlKiBl
eGVjLCBQcm9wZXJ0eU5hbWUgcHJvcGVydHlOYW1lLCBQcm9wZXJ0eURlc2NyaXB0b3ImIGRlc2Ny
aXB0b3IpCiB7CiAgICAgSlNBcnJheSogdGhpc09iamVjdCA9IGpzQ2FzdDxKU0FycmF5Kj4ob2Jq
ZWN0KTsKICAgICBpZiAocHJvcGVydHlOYW1lID09IGV4ZWMtPnByb3BlcnR5TmFtZXMoKS5sZW5n
dGgpIHsKQEAgLTY5MSw5ICs2ODksOCBAQCBib29sIEpTQXJyYXk6OmdldE93blByb3BlcnR5RGVz
Y3JpcHRvcihKCiAKICAgICBBcnJheVN0b3JhZ2UqIHN0b3JhZ2UgPSB0aGlzT2JqZWN0LT5tX3N0
b3JhZ2U7CiAgICAgCi0gICAgYm9vbCBpc0FycmF5SW5kZXg7Ci0gICAgdW5zaWduZWQgaSA9IHBy
b3BlcnR5TmFtZS50b0FycmF5SW5kZXgoaXNBcnJheUluZGV4KTsKLSAgICBpZiAoaXNBcnJheUlu
ZGV4KSB7CisgICAgdW5zaWduZWQgaSA9IHByb3BlcnR5TmFtZS5hc0luZGV4KCk7CisgICAgaWYg
KGkgIT0gUHJvcGVydHlOYW1lOjpOb3RBbkluZGV4KSB7CiAgICAgICAgIGlmIChpID49IHN0b3Jh
Z2UtPm1fbGVuZ3RoKQogICAgICAgICAgICAgcmV0dXJuIGZhbHNlOwogICAgICAgICBpZiAoaSA8
IHRoaXNPYmplY3QtPm1fdmVjdG9yTGVuZ3RoKSB7CkBAIC03MTQsMTIgKzcxMSwxMSBAQCBib29s
IEpTQXJyYXk6OmdldE93blByb3BlcnR5RGVzY3JpcHRvcihKCiB9CiAKIC8vIEVDTUEgMTUuNC41
LjEKLXZvaWQgSlNBcnJheTo6cHV0KEpTQ2VsbCogY2VsbCwgRXhlY1N0YXRlKiBleGVjLCBjb25z
dCBJZGVudGlmaWVyJiBwcm9wZXJ0eU5hbWUsIEpTVmFsdWUgdmFsdWUsIFB1dFByb3BlcnR5U2xv
dCYgc2xvdCkKK3ZvaWQgSlNBcnJheTo6cHV0KEpTQ2VsbCogY2VsbCwgRXhlY1N0YXRlKiBleGVj
LCBQcm9wZXJ0eU5hbWUgcHJvcGVydHlOYW1lLCBKU1ZhbHVlIHZhbHVlLCBQdXRQcm9wZXJ0eVNs
b3QmIHNsb3QpCiB7CiAgICAgSlNBcnJheSogdGhpc09iamVjdCA9IGpzQ2FzdDxKU0FycmF5Kj4o
Y2VsbCk7Ci0gICAgYm9vbCBpc0FycmF5SW5kZXg7Ci0gICAgdW5zaWduZWQgaSA9IHByb3BlcnR5
TmFtZS50b0FycmF5SW5kZXgoaXNBcnJheUluZGV4KTsKLSAgICBpZiAoaXNBcnJheUluZGV4KSB7
CisgICAgdW5zaWduZWQgaSA9IHByb3BlcnR5TmFtZS5hc0luZGV4KCk7CisgICAgaWYgKGkgIT0g
UHJvcGVydHlOYW1lOjpOb3RBbkluZGV4KSB7CiAgICAgICAgIHB1dEJ5SW5kZXgodGhpc09iamVj
dCwgZXhlYywgaSwgdmFsdWUsIHNsb3QuaXNTdHJpY3RNb2RlKCkpOwogICAgICAgICByZXR1cm47
CiAgICAgfQpAQCAtOTE5LDEyICs5MTUsMTEgQEAgYm9vbCBKU0FycmF5OjpwdXREaXJlY3RJbmRl
eEJleW9uZFZlY3RvcgogICAgIHJldHVybiB0cnVlOwogfQogCi1ib29sIEpTQXJyYXk6OmRlbGV0
ZVByb3BlcnR5KEpTQ2VsbCogY2VsbCwgRXhlY1N0YXRlKiBleGVjLCBjb25zdCBJZGVudGlmaWVy
JiBwcm9wZXJ0eU5hbWUpCitib29sIEpTQXJyYXk6OmRlbGV0ZVByb3BlcnR5KEpTQ2VsbCogY2Vs
bCwgRXhlY1N0YXRlKiBleGVjLCBQcm9wZXJ0eU5hbWUgcHJvcGVydHlOYW1lKQogewogICAgIEpT
QXJyYXkqIHRoaXNPYmplY3QgPSBqc0Nhc3Q8SlNBcnJheSo+KGNlbGwpOwotICAgIGJvb2wgaXNB
cnJheUluZGV4OwotICAgIHVuc2lnbmVkIGkgPSBwcm9wZXJ0eU5hbWUudG9BcnJheUluZGV4KGlz
QXJyYXlJbmRleCk7Ci0gICAgaWYgKGlzQXJyYXlJbmRleCkKKyAgICB1bnNpZ25lZCBpID0gcHJv
cGVydHlOYW1lLmFzSW5kZXgoKTsKKyAgICBpZiAoaSAhPSBQcm9wZXJ0eU5hbWU6Ok5vdEFuSW5k
ZXgpCiAgICAgICAgIHJldHVybiB0aGlzT2JqZWN0LT5tZXRob2RUYWJsZSgpLT5kZWxldGVQcm9w
ZXJ0eUJ5SW5kZXgodGhpc09iamVjdCwgZXhlYywgaSk7CiAKICAgICBpZiAocHJvcGVydHlOYW1l
ID09IGV4ZWMtPnByb3BlcnR5TmFtZXMoKS5sZW5ndGgpCkluZGV4OiBTb3VyY2UvSmF2YVNjcmlw
dENvcmUvcnVudGltZS9KU0FycmF5LmgKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL0phdmFTY3JpcHRD
b3JlL3J1bnRpbWUvSlNBcnJheS5oCShyZXZpc2lvbiAxMTY2NjcpCisrKyBTb3VyY2UvSmF2YVNj
cmlwdENvcmUvcnVudGltZS9KU0FycmF5LmgJKHdvcmtpbmcgY29weSkKQEAgLTE2NCwxMSArMTY0
LDExIEBAIG5hbWVzcGFjZSBKU0MgewogICAgICAgICAvLyAgIC0gY2FsbGVkICdjb21wbGV0ZUlu
aXRpYWxpemF0aW9uJyBhZnRlciBhbGwgcHJvcGVydGllcyBoYXZlIGJlZW4gaW5pdGlhbGl6ZWQu
CiAgICAgICAgIHN0YXRpYyBKU0FycmF5KiB0cnlDcmVhdGVVbmluaXRpYWxpemVkKEpTR2xvYmFs
RGF0YSYsIFN0cnVjdHVyZSosIHVuc2lnbmVkIGluaXRpYWxMZW5ndGgpOwogCi0gICAgICAgIEpT
X0VYUE9SVF9QUklWQVRFIHN0YXRpYyBib29sIGRlZmluZU93blByb3BlcnR5KEpTT2JqZWN0Kiwg
RXhlY1N0YXRlKiwgY29uc3QgSWRlbnRpZmllciYsIFByb3BlcnR5RGVzY3JpcHRvciYsIGJvb2wg
dGhyb3dFeGNlcHRpb24pOworICAgICAgICBKU19FWFBPUlRfUFJJVkFURSBzdGF0aWMgYm9vbCBk
ZWZpbmVPd25Qcm9wZXJ0eShKU09iamVjdCosIEV4ZWNTdGF0ZSosIFByb3BlcnR5TmFtZSwgUHJv
cGVydHlEZXNjcmlwdG9yJiwgYm9vbCB0aHJvd0V4Y2VwdGlvbik7CiAKLSAgICAgICAgc3RhdGlj
IGJvb2wgZ2V0T3duUHJvcGVydHlTbG90KEpTQ2VsbCosIEV4ZWNTdGF0ZSosIGNvbnN0IElkZW50
aWZpZXImLCBQcm9wZXJ0eVNsb3QmKTsKKyAgICAgICAgc3RhdGljIGJvb2wgZ2V0T3duUHJvcGVy
dHlTbG90KEpTQ2VsbCosIEV4ZWNTdGF0ZSosIFByb3BlcnR5TmFtZSwgUHJvcGVydHlTbG90Jik7
CiAgICAgICAgIEpTX0VYUE9SVF9QUklWQVRFIHN0YXRpYyBib29sIGdldE93blByb3BlcnR5U2xv
dEJ5SW5kZXgoSlNDZWxsKiwgRXhlY1N0YXRlKiwgdW5zaWduZWQgcHJvcGVydHlOYW1lLCBQcm9w
ZXJ0eVNsb3QmKTsKLSAgICAgICAgc3RhdGljIGJvb2wgZ2V0T3duUHJvcGVydHlEZXNjcmlwdG9y
KEpTT2JqZWN0KiwgRXhlY1N0YXRlKiwgY29uc3QgSWRlbnRpZmllciYsIFByb3BlcnR5RGVzY3Jp
cHRvciYpOworICAgICAgICBzdGF0aWMgYm9vbCBnZXRPd25Qcm9wZXJ0eURlc2NyaXB0b3IoSlNP
YmplY3QqLCBFeGVjU3RhdGUqLCBQcm9wZXJ0eU5hbWUsIFByb3BlcnR5RGVzY3JpcHRvciYpOwog
ICAgICAgICBzdGF0aWMgdm9pZCBwdXRCeUluZGV4KEpTQ2VsbCosIEV4ZWNTdGF0ZSosIHVuc2ln
bmVkIHByb3BlcnR5TmFtZSwgSlNWYWx1ZSwgYm9vbCBzaG91bGRUaHJvdyk7CiAgICAgICAgIC8v
IFRoaXMgaXMgc2ltaWxhciB0byB0aGUgSlNPYmplY3Q6OnB1dERpcmVjdCogbWV0aG9kczoKICAg
ICAgICAgLy8gIC0gdGhlIHByb3RvdHlwZSBjaGFpbiBpcyBub3QgY29uc3VsdGVkCkBAIC0yODEs
OSArMjgxLDkgQEAgbmFtZXNwYWNlIEpTQyB7CiAKICAgICBwcm90ZWN0ZWQ6CiAgICAgICAgIHN0
YXRpYyBjb25zdCB1bnNpZ25lZCBTdHJ1Y3R1cmVGbGFncyA9IE92ZXJyaWRlc0dldE93blByb3Bl
cnR5U2xvdCB8IE92ZXJyaWRlc1Zpc2l0Q2hpbGRyZW4gfCBPdmVycmlkZXNHZXRQcm9wZXJ0eU5h
bWVzIHwgSlNPYmplY3Q6OlN0cnVjdHVyZUZsYWdzOwotICAgICAgICBzdGF0aWMgdm9pZCBwdXQo
SlNDZWxsKiwgRXhlY1N0YXRlKiwgY29uc3QgSWRlbnRpZmllciYgcHJvcGVydHlOYW1lLCBKU1Zh
bHVlLCBQdXRQcm9wZXJ0eVNsb3QmKTsKKyAgICAgICAgc3RhdGljIHZvaWQgcHV0KEpTQ2VsbCos
IEV4ZWNTdGF0ZSosIFByb3BlcnR5TmFtZSwgSlNWYWx1ZSwgUHV0UHJvcGVydHlTbG90Jik7CiAK
LSAgICAgICAgc3RhdGljIGJvb2wgZGVsZXRlUHJvcGVydHkoSlNDZWxsKiwgRXhlY1N0YXRlKiwg
Y29uc3QgSWRlbnRpZmllciYgcHJvcGVydHlOYW1lKTsKKyAgICAgICAgc3RhdGljIGJvb2wgZGVs
ZXRlUHJvcGVydHkoSlNDZWxsKiwgRXhlY1N0YXRlKiwgUHJvcGVydHlOYW1lKTsKICAgICAgICAg
c3RhdGljIGJvb2wgZGVsZXRlUHJvcGVydHlCeUluZGV4KEpTQ2VsbCosIEV4ZWNTdGF0ZSosIHVu
c2lnbmVkIHByb3BlcnR5TmFtZSk7CiAgICAgICAgIHN0YXRpYyB2b2lkIGdldE93blByb3BlcnR5
TmFtZXMoSlNPYmplY3QqLCBFeGVjU3RhdGUqLCBQcm9wZXJ0eU5hbWVBcnJheSYsIEVudW1lcmF0
aW9uTW9kZSk7CiAKQEAgLTM1NywxNiArMzU3LDYgQEAgbmFtZXNwYWNlIEpTQyB7CiAgICAgaW5s
aW5lIGJvb2wgaXNKU0FycmF5KEpTQ2VsbCogY2VsbCkgeyByZXR1cm4gY2VsbC0+Y2xhc3NJbmZv
KCkgPT0gJkpTQXJyYXk6OnNfaW5mbzsgfQogICAgIGlubGluZSBib29sIGlzSlNBcnJheShKU1Zh
bHVlIHYpIHsgcmV0dXJuIHYuaXNDZWxsKCkgJiYgaXNKU0FycmF5KHYuYXNDZWxsKCkpOyB9CiAK
LSAgICAvLyBSdWxlIGZyb20gRUNNQSAxNS4yIGFib3V0IHdoYXQgYW4gYXJyYXkgaW5kZXggaXMu
Ci0gICAgLy8gTXVzdCBleGFjdGx5IG1hdGNoIHN0cmluZyBmb3JtIG9mIGFuIHVuc2lnbmVkIGlu
dGVnZXIsIGFuZCBiZSBsZXNzIHRoYW4gMl4zMiAtIDEuCi0gICAgaW5saW5lIHVuc2lnbmVkIElk
ZW50aWZpZXI6OnRvQXJyYXlJbmRleChib29sJiBvaykgY29uc3QKLSAgICB7Ci0gICAgICAgIHVu
c2lnbmVkIGkgPSB0b1VJbnQzMihvayk7Ci0gICAgICAgIGlmIChvayAmJiBpID49IDB4RkZGRkZG
RkZVKQotICAgICAgICAgICAgb2sgPSBmYWxzZTsKLSAgICAgICAgcmV0dXJuIGk7Ci0gICAgfQot
CiAvLyBUaGUgZGVmaW5pdGlvbiBvZiBNQVhfU1RPUkFHRV9WRUNUT1JfTEVOR1RIIGlzIGRlcGVu
ZGFudCBvbiB0aGUgZGVmaW5pdGlvbiBzdG9yYWdlU2l6ZQogLy8gZnVuY3Rpb24gYmVsb3cgLSB0
aGUgTUFYX1NUT1JBR0VfVkVDVE9SX0xFTkdUSCBsaW1pdCBpcyBkZWZpbmVkIHN1Y2ggdGhhdCB0
aGUgc3RvcmFnZQogLy8gc2l6ZSBjYWxjdWxhdGlvbiBjYW5ub3Qgb3ZlcmZsb3cuICAoc2l6ZW9m
KEFycmF5U3RvcmFnZSkgLSBzaXplb2YoV3JpdGVCYXJyaWVyPFVua25vd24+KSkgKwpJbmRleDog
U291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvSlNCb3VuZEZ1bmN0aW9uLmNwcAo9PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09Ci0tLSBTb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9KU0JvdW5kRnVuY3Rpb24uY3Bw
CShyZXZpc2lvbiAxMTY2NjcpCisrKyBTb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9KU0Jv
dW5kRnVuY3Rpb24uY3BwCSh3b3JraW5nIGNvcHkpCkBAIC03Niw3ICs3Niw3IEBAIEVuY29kZWRK
U1ZhbHVlIEpTQ19IT1NUX0NBTEwgYm91bmRGdW5jdGkKICAgICByZXR1cm4gSlNWYWx1ZTo6ZW5j
b2RlKGNvbnN0cnVjdChleGVjLCB0YXJnZXRGdW5jdGlvbiwgY29uc3RydWN0VHlwZSwgY29uc3Ry
dWN0RGF0YSwgYXJncykpOwogfQogCi1KU0JvdW5kRnVuY3Rpb24qIEpTQm91bmRGdW5jdGlvbjo6
Y3JlYXRlKEV4ZWNTdGF0ZSogZXhlYywgSlNHbG9iYWxPYmplY3QqIGdsb2JhbE9iamVjdCwgSlNP
YmplY3QqIHRhcmdldEZ1bmN0aW9uLCBKU1ZhbHVlIGJvdW5kVGhpcywgSlNWYWx1ZSBib3VuZEFy
Z3MsIGludCBsZW5ndGgsIGNvbnN0IElkZW50aWZpZXImIG5hbWUpCitKU0JvdW5kRnVuY3Rpb24q
IEpTQm91bmRGdW5jdGlvbjo6Y3JlYXRlKEV4ZWNTdGF0ZSogZXhlYywgSlNHbG9iYWxPYmplY3Qq
IGdsb2JhbE9iamVjdCwgSlNPYmplY3QqIHRhcmdldEZ1bmN0aW9uLCBKU1ZhbHVlIGJvdW5kVGhp
cywgSlNWYWx1ZSBib3VuZEFyZ3MsIGludCBsZW5ndGgsIGNvbnN0IFVTdHJpbmcmIG5hbWUpCiB7
CiAgICAgQ29uc3RydWN0RGF0YSBjb25zdHJ1Y3REYXRhOwogICAgIENvbnN0cnVjdFR5cGUgY29u
c3RydWN0VHlwZSA9IEpTQzo6Z2V0Q29uc3RydWN0RGF0YSh0YXJnZXRGdW5jdGlvbiwgY29uc3Ry
dWN0RGF0YSk7CkBAIC0xMDcsNyArMTA3LDcgQEAgSlNCb3VuZEZ1bmN0aW9uOjpKU0JvdW5kRnVu
Y3Rpb24oRXhlY1N0YQogewogfQogCi12b2lkIEpTQm91bmRGdW5jdGlvbjo6ZmluaXNoQ3JlYXRp
b24oRXhlY1N0YXRlKiBleGVjLCBOYXRpdmVFeGVjdXRhYmxlKiBleGVjdXRhYmxlLCBpbnQgbGVu
Z3RoLCBjb25zdCBJZGVudGlmaWVyJiBuYW1lKQordm9pZCBKU0JvdW5kRnVuY3Rpb246OmZpbmlz
aENyZWF0aW9uKEV4ZWNTdGF0ZSogZXhlYywgTmF0aXZlRXhlY3V0YWJsZSogZXhlY3V0YWJsZSwg
aW50IGxlbmd0aCwgY29uc3QgVVN0cmluZyYgbmFtZSkKIHsKICAgICBCYXNlOjpmaW5pc2hDcmVh
dGlvbihleGVjLCBleGVjdXRhYmxlLCBsZW5ndGgsIG5hbWUpOwogICAgIEFTU0VSVChpbmhlcml0
cygmc19pbmZvKSk7CkluZGV4OiBTb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9KU0JvdW5k
RnVuY3Rpb24uaAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9K
U0JvdW5kRnVuY3Rpb24uaAkocmV2aXNpb24gMTE2NjY3KQorKysgU291cmNlL0phdmFTY3JpcHRD
b3JlL3J1bnRpbWUvSlNCb3VuZEZ1bmN0aW9uLmgJKHdvcmtpbmcgY29weSkKQEAgLTM3LDcgKzM3
LDcgQEAgY2xhc3MgSlNCb3VuZEZ1bmN0aW9uIDogcHVibGljIEpTRnVuY3RpbwogcHVibGljOgog
ICAgIHR5cGVkZWYgSlNGdW5jdGlvbiBCYXNlOwogCi0gICAgc3RhdGljIEpTQm91bmRGdW5jdGlv
biogY3JlYXRlKEV4ZWNTdGF0ZSosIEpTR2xvYmFsT2JqZWN0KiwgSlNPYmplY3QqIHRhcmdldEZ1
bmN0aW9uLCBKU1ZhbHVlIGJvdW5kVGhpcywgSlNWYWx1ZSBib3VuZEFyZ3MsIGludCwgY29uc3Qg
SWRlbnRpZmllciYpOworICAgIHN0YXRpYyBKU0JvdW5kRnVuY3Rpb24qIGNyZWF0ZShFeGVjU3Rh
dGUqLCBKU0dsb2JhbE9iamVjdCosIEpTT2JqZWN0KiB0YXJnZXRGdW5jdGlvbiwgSlNWYWx1ZSBi
b3VuZFRoaXMsIEpTVmFsdWUgYm91bmRBcmdzLCBpbnQsIGNvbnN0IFVTdHJpbmcmKTsKIAogICAg
IHN0YXRpYyBib29sIGhhc0luc3RhbmNlKEpTT2JqZWN0KiwgRXhlY1N0YXRlKiwgSlNWYWx1ZSwg
SlNWYWx1ZSBwcm90byk7CiAKQEAgLTYxLDcgKzYxLDcgQEAgcHJvdGVjdGVkOgogcHJpdmF0ZToK
ICAgICBKU0JvdW5kRnVuY3Rpb24oRXhlY1N0YXRlKiwgSlNHbG9iYWxPYmplY3QqLCBTdHJ1Y3R1
cmUqLCBKU09iamVjdCogdGFyZ2V0RnVuY3Rpb24sIEpTVmFsdWUgYm91bmRUaGlzLCBKU1ZhbHVl
IGJvdW5kQXJncyk7CiAgICAgCi0gICAgdm9pZCBmaW5pc2hDcmVhdGlvbihFeGVjU3RhdGUqLCBO
YXRpdmVFeGVjdXRhYmxlKiwgaW50LCBjb25zdCBJZGVudGlmaWVyJik7CisgICAgdm9pZCBmaW5p
c2hDcmVhdGlvbihFeGVjU3RhdGUqLCBOYXRpdmVFeGVjdXRhYmxlKiwgaW50LCBjb25zdCBVU3Ry
aW5nJik7CiAKICAgICBXcml0ZUJhcnJpZXI8SlNPYmplY3Q+IG1fdGFyZ2V0RnVuY3Rpb247CiAg
ICAgV3JpdGVCYXJyaWVyPFVua25vd24+IG1fYm91bmRUaGlzOwpJbmRleDogU291cmNlL0phdmFT
Y3JpcHRDb3JlL3J1bnRpbWUvSlNDZWxsLmNwcAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvSmF2YVNj
cmlwdENvcmUvcnVudGltZS9KU0NlbGwuY3BwCShyZXZpc2lvbiAxMTY2NjcpCisrKyBTb3VyY2Uv
SmF2YVNjcmlwdENvcmUvcnVudGltZS9KU0NlbGwuY3BwCSh3b3JraW5nIGNvcHkpCkBAIC03MSw3
ICs3MSw3IEBAIENvbnN0cnVjdFR5cGUgSlNDZWxsOjpnZXRDb25zdHJ1Y3REYXRhKEoKICAgICBy
ZXR1cm4gQ29uc3RydWN0VHlwZU5vbmU7CiB9CiAKLWJvb2wgSlNDZWxsOjpnZXRPd25Qcm9wZXJ0
eVNsb3QoSlNDZWxsKiBjZWxsLCBFeGVjU3RhdGUqIGV4ZWMsIGNvbnN0IElkZW50aWZpZXImIGlk
ZW50aWZpZXIsIFByb3BlcnR5U2xvdCYgc2xvdCkKK2Jvb2wgSlNDZWxsOjpnZXRPd25Qcm9wZXJ0
eVNsb3QoSlNDZWxsKiBjZWxsLCBFeGVjU3RhdGUqIGV4ZWMsIFByb3BlcnR5TmFtZSBpZGVudGlm
aWVyLCBQcm9wZXJ0eVNsb3QmIHNsb3QpCiB7CiAgICAgLy8gVGhpcyBpcyBub3QgYSBnZW5lcmFs
IHB1cnBvc2UgaW1wbGVtZW50YXRpb24gb2YgZ2V0T3duUHJvcGVydHlTbG90LgogICAgIC8vIEl0
IHNob3VsZCBvbmx5IGJlIGNhbGxlZCBieSBKU1ZhbHVlOjpnZXQuCkBAIC05NSw3ICs5NSw3IEBA
IGJvb2wgSlNDZWxsOjpnZXRPd25Qcm9wZXJ0eVNsb3RCeUluZGV4KEoKICAgICByZXR1cm4gdHJ1
ZTsKIH0KIAotdm9pZCBKU0NlbGw6OnB1dChKU0NlbGwqIGNlbGwsIEV4ZWNTdGF0ZSogZXhlYywg
Y29uc3QgSWRlbnRpZmllciYgaWRlbnRpZmllciwgSlNWYWx1ZSB2YWx1ZSwgUHV0UHJvcGVydHlT
bG90JiBzbG90KQordm9pZCBKU0NlbGw6OnB1dChKU0NlbGwqIGNlbGwsIEV4ZWNTdGF0ZSogZXhl
YywgUHJvcGVydHlOYW1lIGlkZW50aWZpZXIsIEpTVmFsdWUgdmFsdWUsIFB1dFByb3BlcnR5U2xv
dCYgc2xvdCkKIHsKICAgICBpZiAoY2VsbC0+aXNTdHJpbmcoKSkgewogICAgICAgICBKU1ZhbHVl
KGNlbGwpLnB1dFRvUHJpbWl0aXZlKGV4ZWMsIGlkZW50aWZpZXIsIHZhbHVlLCBzbG90KTsKQEAg
LTExNiw3ICsxMTYsNyBAQCB2b2lkIEpTQ2VsbDo6cHV0QnlJbmRleChKU0NlbGwqIGNlbGwsIEV4
CiAgICAgdGhpc09iamVjdC0+bWV0aG9kVGFibGUoKS0+cHV0QnlJbmRleCh0aGlzT2JqZWN0LCBl
eGVjLCBpZGVudGlmaWVyLCB2YWx1ZSwgc2hvdWxkVGhyb3cpOwogfQogCi1ib29sIEpTQ2VsbDo6
ZGVsZXRlUHJvcGVydHkoSlNDZWxsKiBjZWxsLCBFeGVjU3RhdGUqIGV4ZWMsIGNvbnN0IElkZW50
aWZpZXImIGlkZW50aWZpZXIpCitib29sIEpTQ2VsbDo6ZGVsZXRlUHJvcGVydHkoSlNDZWxsKiBj
ZWxsLCBFeGVjU3RhdGUqIGV4ZWMsIFByb3BlcnR5TmFtZSBpZGVudGlmaWVyKQogewogICAgIEpT
T2JqZWN0KiB0aGlzT2JqZWN0ID0gY2VsbC0+dG9PYmplY3QoZXhlYywgZXhlYy0+bGV4aWNhbEds
b2JhbE9iamVjdCgpKTsKICAgICByZXR1cm4gdGhpc09iamVjdC0+bWV0aG9kVGFibGUoKS0+ZGVs
ZXRlUHJvcGVydHkodGhpc09iamVjdCwgZXhlYywgaWRlbnRpZmllcik7CkBAIC0xOTUsMTggKzE5
NSwxOCBAQCBib29sIEpTQ2VsbDo6aGFzSW5zdGFuY2UoSlNPYmplY3QqLCBFeGVjCiAgICAgcmV0
dXJuIGZhbHNlOwogfQogCi12b2lkIEpTQ2VsbDo6cHV0RGlyZWN0VmlydHVhbChKU09iamVjdCos
IEV4ZWNTdGF0ZSosIGNvbnN0IElkZW50aWZpZXImLCBKU1ZhbHVlLCB1bnNpZ25lZCkKK3ZvaWQg
SlNDZWxsOjpwdXREaXJlY3RWaXJ0dWFsKEpTT2JqZWN0KiwgRXhlY1N0YXRlKiwgUHJvcGVydHlO
YW1lLCBKU1ZhbHVlLCB1bnNpZ25lZCkKIHsKICAgICBBU1NFUlRfTk9UX1JFQUNIRUQoKTsKIH0K
IAotYm9vbCBKU0NlbGw6OmRlZmluZU93blByb3BlcnR5KEpTT2JqZWN0KiwgRXhlY1N0YXRlKiwg
Y29uc3QgSWRlbnRpZmllciYsIFByb3BlcnR5RGVzY3JpcHRvciYsIGJvb2wpCitib29sIEpTQ2Vs
bDo6ZGVmaW5lT3duUHJvcGVydHkoSlNPYmplY3QqLCBFeGVjU3RhdGUqLCBQcm9wZXJ0eU5hbWUs
IFByb3BlcnR5RGVzY3JpcHRvciYsIGJvb2wpCiB7CiAgICAgQVNTRVJUX05PVF9SRUFDSEVEKCk7
CiAgICAgcmV0dXJuIGZhbHNlOwogfQogCi1ib29sIEpTQ2VsbDo6Z2V0T3duUHJvcGVydHlEZXNj
cmlwdG9yKEpTT2JqZWN0KiwgRXhlY1N0YXRlKiwgY29uc3QgSWRlbnRpZmllciYsIFByb3BlcnR5
RGVzY3JpcHRvciYpCitib29sIEpTQ2VsbDo6Z2V0T3duUHJvcGVydHlEZXNjcmlwdG9yKEpTT2Jq
ZWN0KiwgRXhlY1N0YXRlKiwgUHJvcGVydHlOYW1lLCBQcm9wZXJ0eURlc2NyaXB0b3ImKQogewog
ICAgIEFTU0VSVF9OT1RfUkVBQ0hFRCgpOwogICAgIHJldHVybiBmYWxzZTsKSW5kZXg6IFNvdXJj
ZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL0pTQ2VsbC5oCj09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9K
YXZhU2NyaXB0Q29yZS9ydW50aW1lL0pTQ2VsbC5oCShyZXZpc2lvbiAxMTY2NjcpCisrKyBTb3Vy
Y2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9KU0NlbGwuaAkod29ya2luZyBjb3B5KQpAQCAtMTA2
LDEwICsxMDYsMTAgQEAgbmFtZXNwYWNlIEpTQyB7CiAgICAgICAgIGNvbnN0IENsYXNzSW5mbyog
Y2xhc3NJbmZvKCkgY29uc3Q7CiAgICAgICAgIGNvbnN0IENsYXNzSW5mbyogdmFsaWRhdGVkQ2xh
c3NJbmZvKCkgY29uc3Q7CiAgICAgICAgIGNvbnN0IE1ldGhvZFRhYmxlKiBtZXRob2RUYWJsZSgp
IGNvbnN0OwotICAgICAgICBzdGF0aWMgdm9pZCBwdXQoSlNDZWxsKiwgRXhlY1N0YXRlKiwgY29u
c3QgSWRlbnRpZmllciYgcHJvcGVydHlOYW1lLCBKU1ZhbHVlLCBQdXRQcm9wZXJ0eVNsb3QmKTsK
KyAgICAgICAgc3RhdGljIHZvaWQgcHV0KEpTQ2VsbCosIEV4ZWNTdGF0ZSosIFByb3BlcnR5TmFt
ZSwgSlNWYWx1ZSwgUHV0UHJvcGVydHlTbG90Jik7CiAgICAgICAgIHN0YXRpYyB2b2lkIHB1dEJ5
SW5kZXgoSlNDZWxsKiwgRXhlY1N0YXRlKiwgdW5zaWduZWQgcHJvcGVydHlOYW1lLCBKU1ZhbHVl
LCBib29sIHNob3VsZFRocm93KTsKICAgICAgICAgCi0gICAgICAgIHN0YXRpYyBib29sIGRlbGV0
ZVByb3BlcnR5KEpTQ2VsbCosIEV4ZWNTdGF0ZSosIGNvbnN0IElkZW50aWZpZXImIHByb3BlcnR5
TmFtZSk7CisgICAgICAgIHN0YXRpYyBib29sIGRlbGV0ZVByb3BlcnR5KEpTQ2VsbCosIEV4ZWNT
dGF0ZSosIFByb3BlcnR5TmFtZSk7CiAgICAgICAgIHN0YXRpYyBib29sIGRlbGV0ZVByb3BlcnR5
QnlJbmRleChKU0NlbGwqLCBFeGVjU3RhdGUqLCB1bnNpZ25lZCBwcm9wZXJ0eU5hbWUpOwogCiAg
ICAgICAgIHN0YXRpYyBKU09iamVjdCogdG9UaGlzT2JqZWN0KEpTQ2VsbCosIEV4ZWNTdGF0ZSop
OwpAQCAtMTIxLDcgKzEyMSw3IEBAIG5hbWVzcGFjZSBKU0MgewogICAgICAgICAvLyBmYXN0R2V0
T3duUHJvcGVydHlTbG90IHRvIGdldE93blByb3BlcnR5U2xvdC4gQ2FsbGVycyBzaG91bGQgYWx3
YXlzCiAgICAgICAgIC8vIGNhbGwgdGhpcyBmdW5jdGlvbiwgbm90IGl0cyBzbG93ZXIgdmlydHVh
bCBjb3VudGVycGFydC4gKEZvciBpbnRlZ2VyCiAgICAgICAgIC8vIHByb3BlcnR5IG5hbWVzLCB3
ZSB3YW50IGEgc2ltaWxhciBpbnRlcmZhY2Ugd2l0aCBhcHByb3ByaWF0ZSBvcHRpbWl6YXRpb25z
LikKLSAgICAgICAgYm9vbCBmYXN0R2V0T3duUHJvcGVydHlTbG90KEV4ZWNTdGF0ZSosIGNvbnN0
IElkZW50aWZpZXImIHByb3BlcnR5TmFtZSwgUHJvcGVydHlTbG90Jik7CisgICAgICAgIGJvb2wg
ZmFzdEdldE93blByb3BlcnR5U2xvdChFeGVjU3RhdGUqLCBQcm9wZXJ0eU5hbWUsIFByb3BlcnR5
U2xvdCYpOwogICAgICAgICBKU1ZhbHVlIGZhc3RHZXRPd25Qcm9wZXJ0eShFeGVjU3RhdGUqLCBj
b25zdCBVU3RyaW5nJik7CiAKICAgICAgICAgc3RhdGljIHB0cmRpZmZfdCBzdHJ1Y3R1cmVPZmZz
ZXQoKQpAQCAtMTUwLDcgKzE1MCw3IEBAIG5hbWVzcGFjZSBKU0MgewogICAgICAgICB2b2lkIGZp
bmlzaENyZWF0aW9uKEpTR2xvYmFsRGF0YSYsIFN0cnVjdHVyZSosIENyZWF0aW5nRWFybHlDZWxs
VGFnKTsKIAogICAgICAgICAvLyBCYXNlIGltcGxlbWVudGF0aW9uOyBmb3Igbm9uLW9iamVjdCBj
bGFzc2VzIGltcGxlbWVudHMgZ2V0UHJvcGVydHlTbG90LgotICAgICAgICBzdGF0aWMgYm9vbCBn
ZXRPd25Qcm9wZXJ0eVNsb3QoSlNDZWxsKiwgRXhlY1N0YXRlKiwgY29uc3QgSWRlbnRpZmllciYg
cHJvcGVydHlOYW1lLCBQcm9wZXJ0eVNsb3QmKTsKKyAgICAgICAgc3RhdGljIGJvb2wgZ2V0T3du
UHJvcGVydHlTbG90KEpTQ2VsbCosIEV4ZWNTdGF0ZSosIFByb3BlcnR5TmFtZSwgUHJvcGVydHlT
bG90Jik7CiAgICAgICAgIHN0YXRpYyBib29sIGdldE93blByb3BlcnR5U2xvdEJ5SW5kZXgoSlND
ZWxsKiwgRXhlY1N0YXRlKiwgdW5zaWduZWQgcHJvcGVydHlOYW1lLCBQcm9wZXJ0eVNsb3QmKTsK
IAogICAgICAgICAvLyBEdW1teSBpbXBsZW1lbnRhdGlvbnMgb2Ygb3ZlcnJpZGUtYWJsZSBzdGF0
aWMgZnVuY3Rpb25zIGZvciBjbGFzc2VzIHRvIHB1dCBpbiB0aGVpciBNZXRob2RUYWJsZQpAQCAt
MTU5LDkgKzE1OSw5IEBAIG5hbWVzcGFjZSBKU0MgewogICAgICAgICBzdGF0aWMgTk9fUkVUVVJO
X0RVRV9UT19BU1NFUlQgdm9pZCBnZXRQcm9wZXJ0eU5hbWVzKEpTT2JqZWN0KiwgRXhlY1N0YXRl
KiwgUHJvcGVydHlOYW1lQXJyYXkmLCBFbnVtZXJhdGlvbk1vZGUpOwogICAgICAgICBzdGF0aWMg
VVN0cmluZyBjbGFzc05hbWUoY29uc3QgSlNPYmplY3QqKTsKICAgICAgICAgc3RhdGljIGJvb2wg
aGFzSW5zdGFuY2UoSlNPYmplY3QqLCBFeGVjU3RhdGUqLCBKU1ZhbHVlLCBKU1ZhbHVlIHByb3Rv
dHlwZVByb3BlcnR5KTsKLSAgICAgICAgc3RhdGljIE5PX1JFVFVSTl9EVUVfVE9fQVNTRVJUIHZv
aWQgcHV0RGlyZWN0VmlydHVhbChKU09iamVjdCosIEV4ZWNTdGF0ZSosIGNvbnN0IElkZW50aWZp
ZXImIHByb3BlcnR5TmFtZSwgSlNWYWx1ZSwgdW5zaWduZWQgYXR0cmlidXRlcyk7Ci0gICAgICAg
IHN0YXRpYyBib29sIGRlZmluZU93blByb3BlcnR5KEpTT2JqZWN0KiwgRXhlY1N0YXRlKiwgY29u
c3QgSWRlbnRpZmllciYgcHJvcGVydHlOYW1lLCBQcm9wZXJ0eURlc2NyaXB0b3ImLCBib29sIHNo
b3VsZFRocm93KTsKLSAgICAgICAgc3RhdGljIGJvb2wgZ2V0T3duUHJvcGVydHlEZXNjcmlwdG9y
KEpTT2JqZWN0KiwgRXhlY1N0YXRlKiwgY29uc3QgSWRlbnRpZmllciYsIFByb3BlcnR5RGVzY3Jp
cHRvciYpOworICAgICAgICBzdGF0aWMgTk9fUkVUVVJOX0RVRV9UT19BU1NFUlQgdm9pZCBwdXRE
aXJlY3RWaXJ0dWFsKEpTT2JqZWN0KiwgRXhlY1N0YXRlKiwgUHJvcGVydHlOYW1lLCBKU1ZhbHVl
LCB1bnNpZ25lZCBhdHRyaWJ1dGVzKTsKKyAgICAgICAgc3RhdGljIGJvb2wgZGVmaW5lT3duUHJv
cGVydHkoSlNPYmplY3QqLCBFeGVjU3RhdGUqLCBQcm9wZXJ0eU5hbWUsIFByb3BlcnR5RGVzY3Jp
cHRvciYsIGJvb2wgc2hvdWxkVGhyb3cpOworICAgICAgICBzdGF0aWMgYm9vbCBnZXRPd25Qcm9w
ZXJ0eURlc2NyaXB0b3IoSlNPYmplY3QqLCBFeGVjU3RhdGUqLCBQcm9wZXJ0eU5hbWUsIFByb3Bl
cnR5RGVzY3JpcHRvciYpOwogCiAgICAgcHJpdmF0ZToKICAgICAgICAgZnJpZW5kIGNsYXNzIExM
SW50T2Zmc2V0c0V4dHJhY3RvcjsKSW5kZXg6IFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1l
L0pTRnVuY3Rpb24uY3BwCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50
aW1lL0pTRnVuY3Rpb24uY3BwCShyZXZpc2lvbiAxMTY2NzApCisrKyBTb3VyY2UvSmF2YVNjcmlw
dENvcmUvcnVudGltZS9KU0Z1bmN0aW9uLmNwcAkod29ya2luZyBjb3B5KQpAQCAtNTksNyArNTks
NyBAQCBib29sIEpTRnVuY3Rpb246OmlzSG9zdEZ1bmN0aW9uTm9uSW5saW5lCiAgICAgcmV0dXJu
IGlzSG9zdEZ1bmN0aW9uKCk7CiB9CiAKLUpTRnVuY3Rpb24qIEpTRnVuY3Rpb246OmNyZWF0ZShF
eGVjU3RhdGUqIGV4ZWMsIEpTR2xvYmFsT2JqZWN0KiBnbG9iYWxPYmplY3QsIGludCBsZW5ndGgs
IGNvbnN0IElkZW50aWZpZXImIG5hbWUsIE5hdGl2ZUZ1bmN0aW9uIG5hdGl2ZUZ1bmN0aW9uLCBJ
bnRyaW5zaWMgaW50cmluc2ljLCBOYXRpdmVGdW5jdGlvbiBuYXRpdmVDb25zdHJ1Y3RvcikKK0pT
RnVuY3Rpb24qIEpTRnVuY3Rpb246OmNyZWF0ZShFeGVjU3RhdGUqIGV4ZWMsIEpTR2xvYmFsT2Jq
ZWN0KiBnbG9iYWxPYmplY3QsIGludCBsZW5ndGgsIGNvbnN0IFVTdHJpbmcmIG5hbWUsIE5hdGl2
ZUZ1bmN0aW9uIG5hdGl2ZUZ1bmN0aW9uLCBJbnRyaW5zaWMgaW50cmluc2ljLCBOYXRpdmVGdW5j
dGlvbiBuYXRpdmVDb25zdHJ1Y3RvcikKIHsKICAgICBOYXRpdmVFeGVjdXRhYmxlKiBleGVjdXRh
YmxlOwogI2lmICFFTkFCTEUoSklUKQpAQCAtOTIsMTIgKzkyLDEyIEBAIEpTRnVuY3Rpb246OkpT
RnVuY3Rpb24oRXhlY1N0YXRlKiBleGVjLCAKIHsKIH0KIAotdm9pZCBKU0Z1bmN0aW9uOjpmaW5p
c2hDcmVhdGlvbihFeGVjU3RhdGUqIGV4ZWMsIE5hdGl2ZUV4ZWN1dGFibGUqIGV4ZWN1dGFibGUs
IGludCBsZW5ndGgsIGNvbnN0IElkZW50aWZpZXImIG5hbWUpCit2b2lkIEpTRnVuY3Rpb246OmZp
bmlzaENyZWF0aW9uKEV4ZWNTdGF0ZSogZXhlYywgTmF0aXZlRXhlY3V0YWJsZSogZXhlY3V0YWJs
ZSwgaW50IGxlbmd0aCwgY29uc3QgVVN0cmluZyYgbmFtZSkKIHsKICAgICBCYXNlOjpmaW5pc2hD
cmVhdGlvbihleGVjLT5nbG9iYWxEYXRhKCkpOwogICAgIEFTU0VSVChpbmhlcml0cygmc19pbmZv
KSk7CiAgICAgbV9leGVjdXRhYmxlLnNldChleGVjLT5nbG9iYWxEYXRhKCksIHRoaXMsIGV4ZWN1
dGFibGUpOwotICAgIHB1dERpcmVjdChleGVjLT5nbG9iYWxEYXRhKCksIGV4ZWMtPmdsb2JhbERh
dGEoKS5wcm9wZXJ0eU5hbWVzLT5uYW1lLCBqc1N0cmluZyhleGVjLCBuYW1lLmlzTnVsbCgpID8g
IiIgOiBuYW1lLnVzdHJpbmcoKSksIERvbnREZWxldGUgfCBSZWFkT25seSB8IERvbnRFbnVtKTsK
KyAgICBwdXREaXJlY3QoZXhlYy0+Z2xvYmFsRGF0YSgpLCBleGVjLT5nbG9iYWxEYXRhKCkucHJv
cGVydHlOYW1lcy0+bmFtZSwganNTdHJpbmcoZXhlYywgbmFtZS5pc051bGwoKSA/ICIiIDogbmFt
ZSksIERvbnREZWxldGUgfCBSZWFkT25seSB8IERvbnRFbnVtKTsKICAgICBwdXREaXJlY3QoZXhl
Yy0+Z2xvYmFsRGF0YSgpLCBleGVjLT5wcm9wZXJ0eU5hbWVzKCkubGVuZ3RoLCBqc051bWJlcihs
ZW5ndGgpLCBEb250RGVsZXRlIHwgUmVhZE9ubHkgfCBEb250RW51bSk7CiB9CiAKQEAgLTE4Mywx
NCArMTgzLDE0IEBAIENhbGxUeXBlIEpTRnVuY3Rpb246OmdldENhbGxEYXRhKEpTQ2VsbCoKICAg
ICByZXR1cm4gQ2FsbFR5cGVKUzsKIH0KIAotSlNWYWx1ZSBKU0Z1bmN0aW9uOjphcmd1bWVudHNH
ZXR0ZXIoRXhlY1N0YXRlKiBleGVjLCBKU1ZhbHVlIHNsb3RCYXNlLCBjb25zdCBJZGVudGlmaWVy
JikKK0pTVmFsdWUgSlNGdW5jdGlvbjo6YXJndW1lbnRzR2V0dGVyKEV4ZWNTdGF0ZSogZXhlYywg
SlNWYWx1ZSBzbG90QmFzZSwgUHJvcGVydHlOYW1lKQogewogICAgIEpTRnVuY3Rpb24qIHRoaXNP
YmogPSBqc0Nhc3Q8SlNGdW5jdGlvbio+KHNsb3RCYXNlKTsKICAgICBBU1NFUlQoIXRoaXNPYmot
PmlzSG9zdEZ1bmN0aW9uKCkpOwogICAgIHJldHVybiBleGVjLT5pbnRlcnByZXRlcigpLT5yZXRy
aWV2ZUFyZ3VtZW50c0Zyb21WTUNvZGUoZXhlYywgdGhpc09iaik7CiB9CiAKLUpTVmFsdWUgSlNG
dW5jdGlvbjo6Y2FsbGVyR2V0dGVyKEV4ZWNTdGF0ZSogZXhlYywgSlNWYWx1ZSBzbG90QmFzZSwg
Y29uc3QgSWRlbnRpZmllciYpCitKU1ZhbHVlIEpTRnVuY3Rpb246OmNhbGxlckdldHRlcihFeGVj
U3RhdGUqIGV4ZWMsIEpTVmFsdWUgc2xvdEJhc2UsIFByb3BlcnR5TmFtZSkKIHsKICAgICBKU0Z1
bmN0aW9uKiB0aGlzT2JqID0ganNDYXN0PEpTRnVuY3Rpb24qPihzbG90QmFzZSk7CiAgICAgQVNT
RVJUKCF0aGlzT2JqLT5pc0hvc3RGdW5jdGlvbigpKTsKQEAgLTIwNSwxNCArMjA1LDE0IEBAIEpT
VmFsdWUgSlNGdW5jdGlvbjo6Y2FsbGVyR2V0dGVyKEV4ZWNTdGEKICAgICByZXR1cm4gdGhyb3dU
eXBlRXJyb3IoZXhlYywgIkZ1bmN0aW9uLmNhbGxlciB1c2VkIHRvIHJldHJpZXZlIHN0cmljdCBj
YWxsZXIiKTsKIH0KIAotSlNWYWx1ZSBKU0Z1bmN0aW9uOjpsZW5ndGhHZXR0ZXIoRXhlY1N0YXRl
KiwgSlNWYWx1ZSBzbG90QmFzZSwgY29uc3QgSWRlbnRpZmllciYpCitKU1ZhbHVlIEpTRnVuY3Rp
b246Omxlbmd0aEdldHRlcihFeGVjU3RhdGUqLCBKU1ZhbHVlIHNsb3RCYXNlLCBQcm9wZXJ0eU5h
bWUpCiB7CiAgICAgSlNGdW5jdGlvbiogdGhpc09iaiA9IGpzQ2FzdDxKU0Z1bmN0aW9uKj4oc2xv
dEJhc2UpOwogICAgIEFTU0VSVCghdGhpc09iai0+aXNIb3N0RnVuY3Rpb24oKSk7CiAgICAgcmV0
dXJuIGpzTnVtYmVyKHRoaXNPYmotPmpzRXhlY3V0YWJsZSgpLT5wYXJhbWV0ZXJDb3VudCgpKTsK
IH0KIAotYm9vbCBKU0Z1bmN0aW9uOjpnZXRPd25Qcm9wZXJ0eVNsb3QoSlNDZWxsKiBjZWxsLCBF
eGVjU3RhdGUqIGV4ZWMsIGNvbnN0IElkZW50aWZpZXImIHByb3BlcnR5TmFtZSwgUHJvcGVydHlT
bG90JiBzbG90KQorYm9vbCBKU0Z1bmN0aW9uOjpnZXRPd25Qcm9wZXJ0eVNsb3QoSlNDZWxsKiBj
ZWxsLCBFeGVjU3RhdGUqIGV4ZWMsIFByb3BlcnR5TmFtZSBwcm9wZXJ0eU5hbWUsIFByb3BlcnR5
U2xvdCYgc2xvdCkKIHsKICAgICBKU0Z1bmN0aW9uKiB0aGlzT2JqZWN0ID0ganNDYXN0PEpTRnVu
Y3Rpb24qPihjZWxsKTsKICAgICBpZiAodGhpc09iamVjdC0+aXNIb3N0RnVuY3Rpb24oKSkKQEAg
LTI2Nyw3ICsyNjcsNyBAQCBib29sIEpTRnVuY3Rpb246OmdldE93blByb3BlcnR5U2xvdChKU0Nl
CiAgICAgcmV0dXJuIEJhc2U6OmdldE93blByb3BlcnR5U2xvdCh0aGlzT2JqZWN0LCBleGVjLCBw
cm9wZXJ0eU5hbWUsIHNsb3QpOwogfQogCi1ib29sIEpTRnVuY3Rpb246OmdldE93blByb3BlcnR5
RGVzY3JpcHRvcihKU09iamVjdCogb2JqZWN0LCBFeGVjU3RhdGUqIGV4ZWMsIGNvbnN0IElkZW50
aWZpZXImIHByb3BlcnR5TmFtZSwgUHJvcGVydHlEZXNjcmlwdG9yJiBkZXNjcmlwdG9yKQorYm9v
bCBKU0Z1bmN0aW9uOjpnZXRPd25Qcm9wZXJ0eURlc2NyaXB0b3IoSlNPYmplY3QqIG9iamVjdCwg
RXhlY1N0YXRlKiBleGVjLCBQcm9wZXJ0eU5hbWUgcHJvcGVydHlOYW1lLCBQcm9wZXJ0eURlc2Ny
aXB0b3ImIGRlc2NyaXB0b3IpCiB7CiAgICAgSlNGdW5jdGlvbiogdGhpc09iamVjdCA9IGpzQ2Fz
dDxKU0Z1bmN0aW9uKj4ob2JqZWN0KTsKICAgICBpZiAodGhpc09iamVjdC0+aXNIb3N0RnVuY3Rp
b24oKSkKQEAgLTMzMCw3ICszMzAsNyBAQCB2b2lkIEpTRnVuY3Rpb246OmdldE93blByb3BlcnR5
TmFtZXMoSlNPCiAgICAgQmFzZTo6Z2V0T3duUHJvcGVydHlOYW1lcyh0aGlzT2JqZWN0LCBleGVj
LCBwcm9wZXJ0eU5hbWVzLCBtb2RlKTsKIH0KIAotdm9pZCBKU0Z1bmN0aW9uOjpwdXQoSlNDZWxs
KiBjZWxsLCBFeGVjU3RhdGUqIGV4ZWMsIGNvbnN0IElkZW50aWZpZXImIHByb3BlcnR5TmFtZSwg
SlNWYWx1ZSB2YWx1ZSwgUHV0UHJvcGVydHlTbG90JiBzbG90KQordm9pZCBKU0Z1bmN0aW9uOjpw
dXQoSlNDZWxsKiBjZWxsLCBFeGVjU3RhdGUqIGV4ZWMsIFByb3BlcnR5TmFtZSBwcm9wZXJ0eU5h
bWUsIEpTVmFsdWUgdmFsdWUsIFB1dFByb3BlcnR5U2xvdCYgc2xvdCkKIHsKICAgICBKU0Z1bmN0
aW9uKiB0aGlzT2JqZWN0ID0ganNDYXN0PEpTRnVuY3Rpb24qPihjZWxsKTsKICAgICBpZiAodGhp
c09iamVjdC0+aXNIb3N0RnVuY3Rpb24oKSkgewpAQCAtMzU5LDcgKzM1OSw3IEBAIHZvaWQgSlNG
dW5jdGlvbjo6cHV0KEpTQ2VsbCogY2VsbCwgRXhlY1MKICAgICBCYXNlOjpwdXQodGhpc09iamVj
dCwgZXhlYywgcHJvcGVydHlOYW1lLCB2YWx1ZSwgc2xvdCk7CiB9CiAKLWJvb2wgSlNGdW5jdGlv
bjo6ZGVsZXRlUHJvcGVydHkoSlNDZWxsKiBjZWxsLCBFeGVjU3RhdGUqIGV4ZWMsIGNvbnN0IElk
ZW50aWZpZXImIHByb3BlcnR5TmFtZSkKK2Jvb2wgSlNGdW5jdGlvbjo6ZGVsZXRlUHJvcGVydHko
SlNDZWxsKiBjZWxsLCBFeGVjU3RhdGUqIGV4ZWMsIFByb3BlcnR5TmFtZSBwcm9wZXJ0eU5hbWUp
CiB7CiAgICAgSlNGdW5jdGlvbiogdGhpc09iamVjdCA9IGpzQ2FzdDxKU0Z1bmN0aW9uKj4oY2Vs
bCk7CiAgICAgLy8gRm9yIG5vbi1ob3N0IGZ1bmN0aW9ucywgZG9uJ3QgbGV0IHRoZXNlIHByb3Bl
cnRpZXMgYnkgZGVsZXRlZCAtIGV4Y2VwdCBieSBEZWZpbmVPd25Qcm9wZXJ0eS4KQEAgLTM3Miw3
ICszNzIsNyBAQCBib29sIEpTRnVuY3Rpb246OmRlbGV0ZVByb3BlcnR5KEpTQ2VsbCogCiAgICAg
cmV0dXJuIEJhc2U6OmRlbGV0ZVByb3BlcnR5KHRoaXNPYmplY3QsIGV4ZWMsIHByb3BlcnR5TmFt
ZSk7CiB9CiAKLWJvb2wgSlNGdW5jdGlvbjo6ZGVmaW5lT3duUHJvcGVydHkoSlNPYmplY3QqIG9i
amVjdCwgRXhlY1N0YXRlKiBleGVjLCBjb25zdCBJZGVudGlmaWVyJiBwcm9wZXJ0eU5hbWUsIFBy
b3BlcnR5RGVzY3JpcHRvciYgZGVzY3JpcHRvciwgYm9vbCB0aHJvd0V4Y2VwdGlvbikKK2Jvb2wg
SlNGdW5jdGlvbjo6ZGVmaW5lT3duUHJvcGVydHkoSlNPYmplY3QqIG9iamVjdCwgRXhlY1N0YXRl
KiBleGVjLCBQcm9wZXJ0eU5hbWUgcHJvcGVydHlOYW1lLCBQcm9wZXJ0eURlc2NyaXB0b3ImIGRl
c2NyaXB0b3IsIGJvb2wgdGhyb3dFeGNlcHRpb24pCiB7CiAgICAgSlNGdW5jdGlvbiogdGhpc09i
amVjdCA9IGpzQ2FzdDxKU0Z1bmN0aW9uKj4ob2JqZWN0KTsKICAgICBpZiAodGhpc09iamVjdC0+
aXNIb3N0RnVuY3Rpb24oKSkKQEAgLTQ1NSw3ICs0NTUsNyBAQCBVU3RyaW5nIGdldENhbGN1bGF0
ZWREaXNwbGF5TmFtZShDYWxsRnJhCiAgICAgICAgIHJldHVybiBmdW5jdGlvbi0+Y2FsY3VsYXRl
ZERpc3BsYXlOYW1lKGNhbGxGcmFtZSk7CiAgICAgaWYgKEludGVybmFsRnVuY3Rpb24qIGZ1bmN0
aW9uID0ganNEeW5hbWljQ2FzdDxJbnRlcm5hbEZ1bmN0aW9uKj4ob2JqZWN0KSkKICAgICAgICAg
cmV0dXJuIGZ1bmN0aW9uLT5jYWxjdWxhdGVkRGlzcGxheU5hbWUoY2FsbEZyYW1lKTsKLSAgICBy
ZXR1cm4gY2FsbEZyYW1lLT5nbG9iYWxEYXRhKCkucHJvcGVydHlOYW1lcy0+ZW1wdHlJZGVudGlm
aWVyLnVzdHJpbmcoKTsKKyAgICByZXR1cm4gIiI7CiB9CiAKIH0gLy8gbmFtZXNwYWNlIEpTQwpJ
bmRleDogU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvSlNGdW5jdGlvbi5oCj09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT0KLS0tIFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL0pTRnVuY3Rpb24uaAkocmV2aXNp
b24gMTE2NjcwKQorKysgU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvSlNGdW5jdGlvbi5o
CSh3b3JraW5nIGNvcHkpCkBAIC01NSw3ICs1NSw3IEBAIG5hbWVzcGFjZSBKU0MgewogICAgIHB1
YmxpYzoKICAgICAgICAgdHlwZWRlZiBKU05vbkZpbmFsT2JqZWN0IEJhc2U7CiAKLSAgICAgICAg
SlNfRVhQT1JUX1BSSVZBVEUgc3RhdGljIEpTRnVuY3Rpb24qIGNyZWF0ZShFeGVjU3RhdGUqLCBK
U0dsb2JhbE9iamVjdCosIGludCBsZW5ndGgsIGNvbnN0IElkZW50aWZpZXImIG5hbWUsIE5hdGl2
ZUZ1bmN0aW9uIG5hdGl2ZUZ1bmN0aW9uLCBJbnRyaW5zaWMgPSBOb0ludHJpbnNpYywgTmF0aXZl
RnVuY3Rpb24gbmF0aXZlQ29uc3RydWN0b3IgPSBjYWxsSG9zdEZ1bmN0aW9uQXNDb25zdHJ1Y3Rv
cik7CisgICAgICAgIEpTX0VYUE9SVF9QUklWQVRFIHN0YXRpYyBKU0Z1bmN0aW9uKiBjcmVhdGUo
RXhlY1N0YXRlKiwgSlNHbG9iYWxPYmplY3QqLCBpbnQgbGVuZ3RoLCBjb25zdCBVU3RyaW5nJiBu
YW1lLCBOYXRpdmVGdW5jdGlvbiwgSW50cmluc2ljID0gTm9JbnRyaW5zaWMsIE5hdGl2ZUZ1bmN0
aW9uIG5hdGl2ZUNvbnN0cnVjdG9yID0gY2FsbEhvc3RGdW5jdGlvbkFzQ29uc3RydWN0b3IpOwog
CiAgICAgICAgIHN0YXRpYyBKU0Z1bmN0aW9uKiBjcmVhdGUoRXhlY1N0YXRlKiBleGVjLCBGdW5j
dGlvbkV4ZWN1dGFibGUqIGV4ZWN1dGFibGUsIFNjb3BlQ2hhaW5Ob2RlKiBzY29wZUNoYWluKQog
ICAgICAgICB7CkBAIC0xMzksMTkgKzEzOSwxOSBAQCBuYW1lc3BhY2UgSlNDIHsKICAgICAgICAg
SlNfRVhQT1JUX1BSSVZBVEUgSlNGdW5jdGlvbihFeGVjU3RhdGUqLCBKU0dsb2JhbE9iamVjdCos
IFN0cnVjdHVyZSopOwogICAgICAgICBKU0Z1bmN0aW9uKEV4ZWNTdGF0ZSosIEZ1bmN0aW9uRXhl
Y3V0YWJsZSosIFNjb3BlQ2hhaW5Ob2RlKik7CiAgICAgICAgIAotICAgICAgICB2b2lkIGZpbmlz
aENyZWF0aW9uKEV4ZWNTdGF0ZSosIE5hdGl2ZUV4ZWN1dGFibGUqLCBpbnQgbGVuZ3RoLCBjb25z
dCBJZGVudGlmaWVyJiBuYW1lKTsKKyAgICAgICAgdm9pZCBmaW5pc2hDcmVhdGlvbihFeGVjU3Rh
dGUqLCBOYXRpdmVFeGVjdXRhYmxlKiwgaW50IGxlbmd0aCwgY29uc3QgVVN0cmluZyYgbmFtZSk7
CiAgICAgICAgIHZvaWQgZmluaXNoQ3JlYXRpb24oRXhlY1N0YXRlKiwgRnVuY3Rpb25FeGVjdXRh
YmxlKiwgU2NvcGVDaGFpbk5vZGUqKTsKIAogICAgICAgICBTdHJ1Y3R1cmUqIGNhY2hlSW5oZXJp
dG9ySUQoRXhlY1N0YXRlKik7CiAKLSAgICAgICAgc3RhdGljIGJvb2wgZ2V0T3duUHJvcGVydHlT
bG90KEpTQ2VsbCosIEV4ZWNTdGF0ZSosIGNvbnN0IElkZW50aWZpZXImLCBQcm9wZXJ0eVNsb3Qm
KTsKLSAgICAgICAgc3RhdGljIGJvb2wgZ2V0T3duUHJvcGVydHlEZXNjcmlwdG9yKEpTT2JqZWN0
KiwgRXhlY1N0YXRlKiwgY29uc3QgSWRlbnRpZmllciYsIFByb3BlcnR5RGVzY3JpcHRvciYpOwor
ICAgICAgICBzdGF0aWMgYm9vbCBnZXRPd25Qcm9wZXJ0eVNsb3QoSlNDZWxsKiwgRXhlY1N0YXRl
KiwgUHJvcGVydHlOYW1lLCBQcm9wZXJ0eVNsb3QmKTsKKyAgICAgICAgc3RhdGljIGJvb2wgZ2V0
T3duUHJvcGVydHlEZXNjcmlwdG9yKEpTT2JqZWN0KiwgRXhlY1N0YXRlKiwgUHJvcGVydHlOYW1l
LCBQcm9wZXJ0eURlc2NyaXB0b3ImKTsKICAgICAgICAgc3RhdGljIHZvaWQgZ2V0T3duUHJvcGVy
dHlOYW1lcyhKU09iamVjdCosIEV4ZWNTdGF0ZSosIFByb3BlcnR5TmFtZUFycmF5JiwgRW51bWVy
YXRpb25Nb2RlID0gRXhjbHVkZURvbnRFbnVtUHJvcGVydGllcyk7Ci0gICAgICAgIHN0YXRpYyBi
b29sIGRlZmluZU93blByb3BlcnR5KEpTT2JqZWN0KiwgRXhlY1N0YXRlKiwgY29uc3QgSWRlbnRp
ZmllciYgcHJvcGVydHlOYW1lLCBQcm9wZXJ0eURlc2NyaXB0b3ImLCBib29sIHNob3VsZFRocm93
KTsKKyAgICAgICAgc3RhdGljIGJvb2wgZGVmaW5lT3duUHJvcGVydHkoSlNPYmplY3QqLCBFeGVj
U3RhdGUqLCBQcm9wZXJ0eU5hbWUsIFByb3BlcnR5RGVzY3JpcHRvciYsIGJvb2wgc2hvdWxkVGhy
b3cpOwogCi0gICAgICAgIHN0YXRpYyB2b2lkIHB1dChKU0NlbGwqLCBFeGVjU3RhdGUqLCBjb25z
dCBJZGVudGlmaWVyJiBwcm9wZXJ0eU5hbWUsIEpTVmFsdWUsIFB1dFByb3BlcnR5U2xvdCYpOwor
ICAgICAgICBzdGF0aWMgdm9pZCBwdXQoSlNDZWxsKiwgRXhlY1N0YXRlKiwgUHJvcGVydHlOYW1l
LCBKU1ZhbHVlLCBQdXRQcm9wZXJ0eVNsb3QmKTsKIAotICAgICAgICBzdGF0aWMgYm9vbCBkZWxl
dGVQcm9wZXJ0eShKU0NlbGwqLCBFeGVjU3RhdGUqLCBjb25zdCBJZGVudGlmaWVyJiBwcm9wZXJ0
eU5hbWUpOworICAgICAgICBzdGF0aWMgYm9vbCBkZWxldGVQcm9wZXJ0eShKU0NlbGwqLCBFeGVj
U3RhdGUqLCBQcm9wZXJ0eU5hbWUpOwogCiAgICAgICAgIHN0YXRpYyB2b2lkIHZpc2l0Q2hpbGRy
ZW4oSlNDZWxsKiwgU2xvdFZpc2l0b3ImKTsKIApAQCAtMTYwLDkgKzE2MCw5IEBAIG5hbWVzcGFj
ZSBKU0MgewogICAgICAgICAKICAgICAgICAgSlNfRVhQT1JUX1BSSVZBVEUgYm9vbCBpc0hvc3RG
dW5jdGlvbk5vbklubGluZSgpIGNvbnN0OwogCi0gICAgICAgIHN0YXRpYyBKU1ZhbHVlIGFyZ3Vt
ZW50c0dldHRlcihFeGVjU3RhdGUqLCBKU1ZhbHVlLCBjb25zdCBJZGVudGlmaWVyJik7Ci0gICAg
ICAgIHN0YXRpYyBKU1ZhbHVlIGNhbGxlckdldHRlcihFeGVjU3RhdGUqLCBKU1ZhbHVlLCBjb25z
dCBJZGVudGlmaWVyJik7Ci0gICAgICAgIHN0YXRpYyBKU1ZhbHVlIGxlbmd0aEdldHRlcihFeGVj
U3RhdGUqLCBKU1ZhbHVlLCBjb25zdCBJZGVudGlmaWVyJik7CisgICAgICAgIHN0YXRpYyBKU1Zh
bHVlIGFyZ3VtZW50c0dldHRlcihFeGVjU3RhdGUqLCBKU1ZhbHVlLCBQcm9wZXJ0eU5hbWUpOwor
ICAgICAgICBzdGF0aWMgSlNWYWx1ZSBjYWxsZXJHZXR0ZXIoRXhlY1N0YXRlKiwgSlNWYWx1ZSwg
UHJvcGVydHlOYW1lKTsKKyAgICAgICAgc3RhdGljIEpTVmFsdWUgbGVuZ3RoR2V0dGVyKEV4ZWNT
dGF0ZSosIEpTVmFsdWUsIFByb3BlcnR5TmFtZSk7CiAKICAgICAgICAgV3JpdGVCYXJyaWVyPEV4
ZWN1dGFibGVCYXNlPiBtX2V4ZWN1dGFibGU7CiAgICAgICAgIFdyaXRlQmFycmllcjxTY29wZUNo
YWluTm9kZT4gbV9zY29wZUNoYWluOwpJbmRleDogU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRp
bWUvSlNHbG9iYWxPYmplY3QuY3BwCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9KYXZhU2NyaXB0Q29y
ZS9ydW50aW1lL0pTR2xvYmFsT2JqZWN0LmNwcAkocmV2aXNpb24gMTE2NjY3KQorKysgU291cmNl
L0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvSlNHbG9iYWxPYmplY3QuY3BwCSh3b3JraW5nIGNvcHkp
CkBAIC0xNDIsNyArMTQyLDcgQEAgdm9pZCBKU0dsb2JhbE9iamVjdDo6aW5pdChKU09iamVjdCog
dGhpcwogICAgIHJlc2V0KHByb3RvdHlwZSgpKTsKIH0KIAotdm9pZCBKU0dsb2JhbE9iamVjdDo6
cHV0KEpTQ2VsbCogY2VsbCwgRXhlY1N0YXRlKiBleGVjLCBjb25zdCBJZGVudGlmaWVyJiBwcm9w
ZXJ0eU5hbWUsIEpTVmFsdWUgdmFsdWUsIFB1dFByb3BlcnR5U2xvdCYgc2xvdCkKK3ZvaWQgSlNH
bG9iYWxPYmplY3Q6OnB1dChKU0NlbGwqIGNlbGwsIEV4ZWNTdGF0ZSogZXhlYywgUHJvcGVydHlO
YW1lIHByb3BlcnR5TmFtZSwgSlNWYWx1ZSB2YWx1ZSwgUHV0UHJvcGVydHlTbG90JiBzbG90KQog
ewogICAgIEpTR2xvYmFsT2JqZWN0KiB0aGlzT2JqZWN0ID0ganNDYXN0PEpTR2xvYmFsT2JqZWN0
Kj4oY2VsbCk7CiAgICAgQVNTRVJUKCFIZWFwOjpoZWFwKHZhbHVlKSB8fCBIZWFwOjpoZWFwKHZh
bHVlKSA9PSBIZWFwOjpoZWFwKHRoaXNPYmplY3QpKTsKQEAgLTE1Miw3ICsxNTIsNyBAQCB2b2lk
IEpTR2xvYmFsT2JqZWN0OjpwdXQoSlNDZWxsKiBjZWxsLCBFCiAgICAgSlNWYXJpYWJsZU9iamVj
dDo6cHV0KHRoaXNPYmplY3QsIGV4ZWMsIHByb3BlcnR5TmFtZSwgdmFsdWUsIHNsb3QpOwogfQog
Ci12b2lkIEpTR2xvYmFsT2JqZWN0OjpwdXREaXJlY3RWaXJ0dWFsKEpTT2JqZWN0KiBvYmplY3Qs
IEV4ZWNTdGF0ZSogZXhlYywgY29uc3QgSWRlbnRpZmllciYgcHJvcGVydHlOYW1lLCBKU1ZhbHVl
IHZhbHVlLCB1bnNpZ25lZCBhdHRyaWJ1dGVzKQordm9pZCBKU0dsb2JhbE9iamVjdDo6cHV0RGly
ZWN0VmlydHVhbChKU09iamVjdCogb2JqZWN0LCBFeGVjU3RhdGUqIGV4ZWMsIFByb3BlcnR5TmFt
ZSBwcm9wZXJ0eU5hbWUsIEpTVmFsdWUgdmFsdWUsIHVuc2lnbmVkIGF0dHJpYnV0ZXMpCiB7CiAg
ICAgSlNHbG9iYWxPYmplY3QqIHRoaXNPYmplY3QgPSBqc0Nhc3Q8SlNHbG9iYWxPYmplY3QqPihv
YmplY3QpOwogICAgIEFTU0VSVCghSGVhcDo6aGVhcCh2YWx1ZSkgfHwgSGVhcDo6aGVhcCh2YWx1
ZSkgPT0gSGVhcDo6aGVhcCh0aGlzT2JqZWN0KSk7CkBAIC0xNzAsNyArMTcwLDcgQEAgdm9pZCBK
U0dsb2JhbE9iamVjdDo6cHV0RGlyZWN0VmlydHVhbChKUwogICAgIH0KIH0KIAotYm9vbCBKU0ds
b2JhbE9iamVjdDo6ZGVmaW5lT3duUHJvcGVydHkoSlNPYmplY3QqIG9iamVjdCwgRXhlY1N0YXRl
KiBleGVjLCBjb25zdCBJZGVudGlmaWVyJiBwcm9wZXJ0eU5hbWUsIFByb3BlcnR5RGVzY3JpcHRv
ciYgZGVzY3JpcHRvciwgYm9vbCBzaG91bGRUaHJvdykKK2Jvb2wgSlNHbG9iYWxPYmplY3Q6OmRl
ZmluZU93blByb3BlcnR5KEpTT2JqZWN0KiBvYmplY3QsIEV4ZWNTdGF0ZSogZXhlYywgUHJvcGVy
dHlOYW1lIHByb3BlcnR5TmFtZSwgUHJvcGVydHlEZXNjcmlwdG9yJiBkZXNjcmlwdG9yLCBib29s
IHNob3VsZFRocm93KQogewogICAgIEpTR2xvYmFsT2JqZWN0KiB0aGlzT2JqZWN0ID0ganNDYXN0
PEpTR2xvYmFsT2JqZWN0Kj4ob2JqZWN0KTsKICAgICBQcm9wZXJ0eVNsb3Qgc2xvdDsKQEAgLTIw
NSw4ICsyMDUsOCBAQCB2b2lkIEpTR2xvYmFsT2JqZWN0OjpyZXNldChKU1ZhbHVlIHByb3RvCiAg
ICAgbV9hcHBseUZ1bmN0aW9uLnNldChleGVjLT5nbG9iYWxEYXRhKCksIHRoaXMsIGFwcGx5RnVu
Y3Rpb24pOwogICAgIG1fb2JqZWN0UHJvdG90eXBlLnNldChleGVjLT5nbG9iYWxEYXRhKCksIHRo
aXMsIE9iamVjdFByb3RvdHlwZTo6Y3JlYXRlKGV4ZWMsIHRoaXMsIE9iamVjdFByb3RvdHlwZTo6
Y3JlYXRlU3RydWN0dXJlKGV4ZWMtPmdsb2JhbERhdGEoKSwgdGhpcywganNOdWxsKCkpKSk7CiAg
ICAgR2V0dGVyU2V0dGVyKiBwcm90b0FjY2Vzc29yID0gR2V0dGVyU2V0dGVyOjpjcmVhdGUoZXhl
Yyk7Ci0gICAgcHJvdG9BY2Nlc3Nvci0+c2V0R2V0dGVyKGV4ZWMtPmdsb2JhbERhdGEoKSwgSlNG
dW5jdGlvbjo6Y3JlYXRlKGV4ZWMsIHRoaXMsIDAsIElkZW50aWZpZXIoKSwgZ2xvYmFsRnVuY1By
b3RvR2V0dGVyKSk7Ci0gICAgcHJvdG9BY2Nlc3Nvci0+c2V0U2V0dGVyKGV4ZWMtPmdsb2JhbERh
dGEoKSwgSlNGdW5jdGlvbjo6Y3JlYXRlKGV4ZWMsIHRoaXMsIDAsIElkZW50aWZpZXIoKSwgZ2xv
YmFsRnVuY1Byb3RvU2V0dGVyKSk7CisgICAgcHJvdG9BY2Nlc3Nvci0+c2V0R2V0dGVyKGV4ZWMt
Pmdsb2JhbERhdGEoKSwgSlNGdW5jdGlvbjo6Y3JlYXRlKGV4ZWMsIHRoaXMsIDAsICIiLCBnbG9i
YWxGdW5jUHJvdG9HZXR0ZXIpKTsKKyAgICBwcm90b0FjY2Vzc29yLT5zZXRTZXR0ZXIoZXhlYy0+
Z2xvYmFsRGF0YSgpLCBKU0Z1bmN0aW9uOjpjcmVhdGUoZXhlYywgdGhpcywgMCwgIiIsIGdsb2Jh
bEZ1bmNQcm90b1NldHRlcikpOwogICAgIG1fb2JqZWN0UHJvdG90eXBlLT5wdXREaXJlY3RBY2Nl
c3NvcihleGVjLT5nbG9iYWxEYXRhKCksIGV4ZWMtPnByb3BlcnR5TmFtZXMoKS51bmRlcnNjb3Jl
UHJvdG8sIHByb3RvQWNjZXNzb3IsIEFjY2Vzc29yIHwgRG9udEVudW0pOwogICAgIG1fZnVuY3Rp
b25Qcm90b3R5cGUtPnN0cnVjdHVyZSgpLT5zZXRQcm90b3R5cGVXaXRob3V0VHJhbnNpdGlvbihl
eGVjLT5nbG9iYWxEYXRhKCksIG1fb2JqZWN0UHJvdG90eXBlLmdldCgpKTsKIApAQCAtMjkzLDcg
KzI5Myw3IEBAIHZvaWQgSlNHbG9iYWxPYmplY3Q6OnJlc2V0KEpTVmFsdWUgcHJvdG8KICAgICBw
dXREaXJlY3RXaXRob3V0VHJhbnNpdGlvbihleGVjLT5nbG9iYWxEYXRhKCksIElkZW50aWZpZXIo
ZXhlYywgIlR5cGVFcnJvciIpLCBtX3R5cGVFcnJvckNvbnN0cnVjdG9yLmdldCgpLCBEb250RW51
bSk7CiAgICAgcHV0RGlyZWN0V2l0aG91dFRyYW5zaXRpb24oZXhlYy0+Z2xvYmFsRGF0YSgpLCBJ
ZGVudGlmaWVyKGV4ZWMsICJVUklFcnJvciIpLCBtX1VSSUVycm9yQ29uc3RydWN0b3IuZ2V0KCks
IERvbnRFbnVtKTsKIAotICAgIG1fZXZhbEZ1bmN0aW9uLnNldChleGVjLT5nbG9iYWxEYXRhKCks
IHRoaXMsIEpTRnVuY3Rpb246OmNyZWF0ZShleGVjLCB0aGlzLCAxLCBleGVjLT5wcm9wZXJ0eU5h
bWVzKCkuZXZhbCwgZ2xvYmFsRnVuY0V2YWwpKTsKKyAgICBtX2V2YWxGdW5jdGlvbi5zZXQoZXhl
Yy0+Z2xvYmFsRGF0YSgpLCB0aGlzLCBKU0Z1bmN0aW9uOjpjcmVhdGUoZXhlYywgdGhpcywgMSwg
ZXhlYy0+cHJvcGVydHlOYW1lcygpLmV2YWwudXN0cmluZygpLCBnbG9iYWxGdW5jRXZhbCkpOwog
ICAgIHB1dERpcmVjdFdpdGhvdXRUcmFuc2l0aW9uKGV4ZWMtPmdsb2JhbERhdGEoKSwgZXhlYy0+
cHJvcGVydHlOYW1lcygpLmV2YWwsIG1fZXZhbEZ1bmN0aW9uLmdldCgpLCBEb250RW51bSk7CiAK
ICAgICBwdXREaXJlY3RXaXRob3V0VHJhbnNpdGlvbihleGVjLT5nbG9iYWxEYXRhKCksIElkZW50
aWZpZXIoZXhlYywgIkpTT04iKSwgSlNPTk9iamVjdDo6Y3JlYXRlKGV4ZWMsIHRoaXMsIEpTT05P
YmplY3Q6OmNyZWF0ZVN0cnVjdHVyZShleGVjLT5nbG9iYWxEYXRhKCksIHRoaXMsIG1fb2JqZWN0
UHJvdG90eXBlLmdldCgpKSksIERvbnRFbnVtKTsKQEAgLTMxMSw3ICszMTEsNyBAQCB2b2lkIEpT
R2xvYmFsT2JqZWN0OjpyZXNldChKU1ZhbHVlIHByb3RvCiAKIHZvaWQgSlNHbG9iYWxPYmplY3Q6
OmNyZWF0ZVRocm93VHlwZUVycm9yKEV4ZWNTdGF0ZSogZXhlYykKIHsKLSAgICBKU0Z1bmN0aW9u
KiB0aHJvd2VyID0gSlNGdW5jdGlvbjo6Y3JlYXRlKGV4ZWMsIHRoaXMsIDAsIElkZW50aWZpZXIo
KSwgZ2xvYmFsRnVuY1Rocm93VHlwZUVycm9yKTsKKyAgICBKU0Z1bmN0aW9uKiB0aHJvd2VyID0g
SlNGdW5jdGlvbjo6Y3JlYXRlKGV4ZWMsIHRoaXMsIDAsICIiLCBnbG9iYWxGdW5jVGhyb3dUeXBl
RXJyb3IpOwogICAgIEdldHRlclNldHRlciogZ2V0dGVyU2V0dGVyID0gR2V0dGVyU2V0dGVyOjpj
cmVhdGUoZXhlYyk7CiAgICAgZ2V0dGVyU2V0dGVyLT5zZXRHZXR0ZXIoZXhlYy0+Z2xvYmFsRGF0
YSgpLCB0aHJvd2VyKTsKICAgICBnZXR0ZXJTZXR0ZXItPnNldFNldHRlcihleGVjLT5nbG9iYWxE
YXRhKCksIHRocm93ZXIpOwpAQCAtNDMxLDcgKzQzMSw3IEBAIHZvaWQgSlNHbG9iYWxPYmplY3Q6
OmFkZFN0YXRpY0dsb2JhbHMoR2wKICAgICB9CiB9CiAKLWJvb2wgSlNHbG9iYWxPYmplY3Q6Omdl
dE93blByb3BlcnR5U2xvdChKU0NlbGwqIGNlbGwsIEV4ZWNTdGF0ZSogZXhlYywgY29uc3QgSWRl
bnRpZmllciYgcHJvcGVydHlOYW1lLCBQcm9wZXJ0eVNsb3QmIHNsb3QpCitib29sIEpTR2xvYmFs
T2JqZWN0OjpnZXRPd25Qcm9wZXJ0eVNsb3QoSlNDZWxsKiBjZWxsLCBFeGVjU3RhdGUqIGV4ZWMs
IFByb3BlcnR5TmFtZSBwcm9wZXJ0eU5hbWUsIFByb3BlcnR5U2xvdCYgc2xvdCkKIHsKICAgICBK
U0dsb2JhbE9iamVjdCogdGhpc09iamVjdCA9IGpzQ2FzdDxKU0dsb2JhbE9iamVjdCo+KGNlbGwp
OwogICAgIGlmIChnZXRTdGF0aWNGdW5jdGlvblNsb3Q8SlNWYXJpYWJsZU9iamVjdD4oZXhlYywg
RXhlY1N0YXRlOjpnbG9iYWxPYmplY3RUYWJsZShleGVjKSwgdGhpc09iamVjdCwgcHJvcGVydHlO
YW1lLCBzbG90KSkKQEAgLTQzOSw3ICs0MzksNyBAQCBib29sIEpTR2xvYmFsT2JqZWN0OjpnZXRP
d25Qcm9wZXJ0eVNsb3QoCiAgICAgcmV0dXJuIHRoaXNPYmplY3QtPnN5bWJvbFRhYmxlR2V0KHBy
b3BlcnR5TmFtZSwgc2xvdCk7CiB9CiAKLWJvb2wgSlNHbG9iYWxPYmplY3Q6OmdldE93blByb3Bl
cnR5RGVzY3JpcHRvcihKU09iamVjdCogb2JqZWN0LCBFeGVjU3RhdGUqIGV4ZWMsIGNvbnN0IElk
ZW50aWZpZXImIHByb3BlcnR5TmFtZSwgUHJvcGVydHlEZXNjcmlwdG9yJiBkZXNjcmlwdG9yKQor
Ym9vbCBKU0dsb2JhbE9iamVjdDo6Z2V0T3duUHJvcGVydHlEZXNjcmlwdG9yKEpTT2JqZWN0KiBv
YmplY3QsIEV4ZWNTdGF0ZSogZXhlYywgUHJvcGVydHlOYW1lIHByb3BlcnR5TmFtZSwgUHJvcGVy
dHlEZXNjcmlwdG9yJiBkZXNjcmlwdG9yKQogewogICAgIEpTR2xvYmFsT2JqZWN0KiB0aGlzT2Jq
ZWN0ID0ganNDYXN0PEpTR2xvYmFsT2JqZWN0Kj4ob2JqZWN0KTsKICAgICBpZiAoZ2V0U3RhdGlj
RnVuY3Rpb25EZXNjcmlwdG9yPEpTVmFyaWFibGVPYmplY3Q+KGV4ZWMsIEV4ZWNTdGF0ZTo6Z2xv
YmFsT2JqZWN0VGFibGUoZXhlYyksIHRoaXNPYmplY3QsIHByb3BlcnR5TmFtZSwgZGVzY3JpcHRv
cikpCkluZGV4OiBTb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9KU0dsb2JhbE9iamVjdC5o
Cj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT0KLS0tIFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL0pTR2xvYmFsT2Jq
ZWN0LmgJKHJldmlzaW9uIDExNjY2NykKKysrIFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1l
L0pTR2xvYmFsT2JqZWN0LmgJKHdvcmtpbmcgY29weSkKQEAgLTE5OSwyMCArMTk5LDIwIEBAIG5h
bWVzcGFjZSBKU0MgewogCiAgICAgICAgIEpTX0VYUE9SVF9QUklWQVRFIHN0YXRpYyB2b2lkIHZp
c2l0Q2hpbGRyZW4oSlNDZWxsKiwgU2xvdFZpc2l0b3ImKTsKIAotICAgICAgICBKU19FWFBPUlRf
UFJJVkFURSBzdGF0aWMgYm9vbCBnZXRPd25Qcm9wZXJ0eVNsb3QoSlNDZWxsKiwgRXhlY1N0YXRl
KiwgY29uc3QgSWRlbnRpZmllciYsIFByb3BlcnR5U2xvdCYpOwotICAgICAgICBKU19FWFBPUlRf
UFJJVkFURSBzdGF0aWMgYm9vbCBnZXRPd25Qcm9wZXJ0eURlc2NyaXB0b3IoSlNPYmplY3QqLCBF
eGVjU3RhdGUqLCBjb25zdCBJZGVudGlmaWVyJiwgUHJvcGVydHlEZXNjcmlwdG9yJik7Ci0gICAg
ICAgIGJvb2wgaGFzT3duUHJvcGVydHlGb3JXcml0ZShFeGVjU3RhdGUqLCBjb25zdCBJZGVudGlm
aWVyJik7Ci0gICAgICAgIEpTX0VYUE9SVF9QUklWQVRFIHN0YXRpYyB2b2lkIHB1dChKU0NlbGwq
LCBFeGVjU3RhdGUqLCBjb25zdCBJZGVudGlmaWVyJiwgSlNWYWx1ZSwgUHV0UHJvcGVydHlTbG90
Jik7Ci0KLSAgICAgICAgSlNfRVhQT1JUX1BSSVZBVEUgc3RhdGljIHZvaWQgcHV0RGlyZWN0Vmly
dHVhbChKU09iamVjdCosIEV4ZWNTdGF0ZSosIGNvbnN0IElkZW50aWZpZXImIHByb3BlcnR5TmFt
ZSwgSlNWYWx1ZSwgdW5zaWduZWQgYXR0cmlidXRlcyk7Ci0KLSAgICAgICAgSlNfRVhQT1JUX1BS
SVZBVEUgc3RhdGljIHZvaWQgZGVmaW5lR2V0dGVyKEpTT2JqZWN0KiwgRXhlY1N0YXRlKiwgY29u
c3QgSWRlbnRpZmllciYgcHJvcGVydHlOYW1lLCBKU09iamVjdCogZ2V0dGVyRnVuYywgdW5zaWdu
ZWQgYXR0cmlidXRlcyk7Ci0gICAgICAgIEpTX0VYUE9SVF9QUklWQVRFIHN0YXRpYyB2b2lkIGRl
ZmluZVNldHRlcihKU09iamVjdCosIEV4ZWNTdGF0ZSosIGNvbnN0IElkZW50aWZpZXImIHByb3Bl
cnR5TmFtZSwgSlNPYmplY3QqIHNldHRlckZ1bmMsIHVuc2lnbmVkIGF0dHJpYnV0ZXMpOwotICAg
ICAgICBKU19FWFBPUlRfUFJJVkFURSBzdGF0aWMgYm9vbCBkZWZpbmVPd25Qcm9wZXJ0eShKU09i
amVjdCosIEV4ZWNTdGF0ZSosIGNvbnN0IElkZW50aWZpZXImIHByb3BlcnR5TmFtZSwgUHJvcGVy
dHlEZXNjcmlwdG9yJiwgYm9vbCBzaG91bGRUaHJvdyk7CisgICAgICAgIEpTX0VYUE9SVF9QUklW
QVRFIHN0YXRpYyBib29sIGdldE93blByb3BlcnR5U2xvdChKU0NlbGwqLCBFeGVjU3RhdGUqLCBQ
cm9wZXJ0eU5hbWUsIFByb3BlcnR5U2xvdCYpOworICAgICAgICBKU19FWFBPUlRfUFJJVkFURSBz
dGF0aWMgYm9vbCBnZXRPd25Qcm9wZXJ0eURlc2NyaXB0b3IoSlNPYmplY3QqLCBFeGVjU3RhdGUq
LCBQcm9wZXJ0eU5hbWUsIFByb3BlcnR5RGVzY3JpcHRvciYpOworICAgICAgICBib29sIGhhc093
blByb3BlcnR5Rm9yV3JpdGUoRXhlY1N0YXRlKiwgUHJvcGVydHlOYW1lKTsKKyAgICAgICAgSlNf
RVhQT1JUX1BSSVZBVEUgc3RhdGljIHZvaWQgcHV0KEpTQ2VsbCosIEV4ZWNTdGF0ZSosIFByb3Bl
cnR5TmFtZSwgSlNWYWx1ZSwgUHV0UHJvcGVydHlTbG90Jik7CisKKyAgICAgICAgSlNfRVhQT1JU
X1BSSVZBVEUgc3RhdGljIHZvaWQgcHV0RGlyZWN0VmlydHVhbChKU09iamVjdCosIEV4ZWNTdGF0
ZSosIFByb3BlcnR5TmFtZSwgSlNWYWx1ZSwgdW5zaWduZWQgYXR0cmlidXRlcyk7CisKKyAgICAg
ICAgSlNfRVhQT1JUX1BSSVZBVEUgc3RhdGljIHZvaWQgZGVmaW5lR2V0dGVyKEpTT2JqZWN0Kiwg
RXhlY1N0YXRlKiwgUHJvcGVydHlOYW1lLCBKU09iamVjdCogZ2V0dGVyRnVuYywgdW5zaWduZWQg
YXR0cmlidXRlcyk7CisgICAgICAgIEpTX0VYUE9SVF9QUklWQVRFIHN0YXRpYyB2b2lkIGRlZmlu
ZVNldHRlcihKU09iamVjdCosIEV4ZWNTdGF0ZSosIFByb3BlcnR5TmFtZSwgSlNPYmplY3QqIHNl
dHRlckZ1bmMsIHVuc2lnbmVkIGF0dHJpYnV0ZXMpOworICAgICAgICBKU19FWFBPUlRfUFJJVkFU
RSBzdGF0aWMgYm9vbCBkZWZpbmVPd25Qcm9wZXJ0eShKU09iamVjdCosIEV4ZWNTdGF0ZSosIFBy
b3BlcnR5TmFtZSwgUHJvcGVydHlEZXNjcmlwdG9yJiwgYm9vbCBzaG91bGRUaHJvdyk7CiAKICAg
ICAgICAgLy8gV2UgdXNlIHRoaXMgaW4gdGhlIGNvZGUgZ2VuZXJhdG9yIGFzIHdlIHBlcmZvcm0g
c3ltYm9sIHRhYmxlCiAgICAgICAgIC8vIGxvb2t1cHMgcHJpb3IgdG8gaW5pdGlhbGl6aW5nIHRo
ZSBwcm9wZXJ0aWVzCi0gICAgICAgIGJvb2wgc3ltYm9sVGFibGVIYXNQcm9wZXJ0eShjb25zdCBJ
ZGVudGlmaWVyJiBwcm9wZXJ0eU5hbWUpOworICAgICAgICBib29sIHN5bWJvbFRhYmxlSGFzUHJv
cGVydHkoUHJvcGVydHlOYW1lKTsKIAogICAgICAgICAvLyBUaGUgZm9sbG93aW5nIGFjY2Vzc29y
cyByZXR1cm4gcHJpc3RpbmUgdmFsdWVzLCBldmVuIGlmIGEgc2NyaXB0IAogICAgICAgICAvLyBy
ZXBsYWNlcyB0aGUgZ2xvYmFsIG9iamVjdCdzIGFzc29jaWF0ZWQgcHJvcGVydHkuCkBAIC0zNjUs
NyArMzY1LDcgQEAgbmFtZXNwYWNlIEpTQyB7CiAgICAgICAgIG1fcmVnaXN0ZXJBcnJheVNpemUg
PSBjb3VudDsKICAgICB9CiAKLSAgICBpbmxpbmUgYm9vbCBKU0dsb2JhbE9iamVjdDo6aGFzT3du
UHJvcGVydHlGb3JXcml0ZShFeGVjU3RhdGUqIGV4ZWMsIGNvbnN0IElkZW50aWZpZXImIHByb3Bl
cnR5TmFtZSkKKyAgICBpbmxpbmUgYm9vbCBKU0dsb2JhbE9iamVjdDo6aGFzT3duUHJvcGVydHlG
b3JXcml0ZShFeGVjU3RhdGUqIGV4ZWMsIFByb3BlcnR5TmFtZSBwcm9wZXJ0eU5hbWUpCiAgICAg
ewogICAgICAgICBQcm9wZXJ0eVNsb3Qgc2xvdDsKICAgICAgICAgaWYgKEpTVmFyaWFibGVPYmpl
Y3Q6OmdldE93blByb3BlcnR5U2xvdCh0aGlzLCBleGVjLCBwcm9wZXJ0eU5hbWUsIHNsb3QpKQpA
QCAtMzc0LDcgKzM3NCw3IEBAIG5hbWVzcGFjZSBKU0MgewogICAgICAgICByZXR1cm4gc3ltYm9s
VGFibGVHZXQocHJvcGVydHlOYW1lLCBzbG90LCBzbG90SXNXcml0ZWFibGUpOwogICAgIH0KIAot
ICAgIGlubGluZSBib29sIEpTR2xvYmFsT2JqZWN0OjpzeW1ib2xUYWJsZUhhc1Byb3BlcnR5KGNv
bnN0IElkZW50aWZpZXImIHByb3BlcnR5TmFtZSkKKyAgICBpbmxpbmUgYm9vbCBKU0dsb2JhbE9i
amVjdDo6c3ltYm9sVGFibGVIYXNQcm9wZXJ0eShQcm9wZXJ0eU5hbWUgcHJvcGVydHlOYW1lKQog
ICAgIHsKICAgICAgICAgU3ltYm9sVGFibGVFbnRyeSBlbnRyeSA9IHN5bWJvbFRhYmxlKCkuaW5s
aW5lR2V0KHByb3BlcnR5TmFtZS5pbXBsKCkpOwogICAgICAgICByZXR1cm4gIWVudHJ5LmlzTnVs
bCgpOwpJbmRleDogU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvSlNOb3RBbk9iamVjdC5j
cHAKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PQotLS0gU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvSlNOb3RBbk9i
amVjdC5jcHAJKHJldmlzaW9uIDExNjY2NykKKysrIFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50
aW1lL0pTTm90QW5PYmplY3QuY3BwCSh3b3JraW5nIGNvcHkpCkBAIC00Nyw3ICs0Nyw3IEBAIEpT
VmFsdWUgSlNOb3RBbk9iamVjdDo6ZGVmYXVsdFZhbHVlKGNvbnMKIH0KIAogLy8gSlNPYmplY3Qg
bWV0aG9kcwotYm9vbCBKU05vdEFuT2JqZWN0OjpnZXRPd25Qcm9wZXJ0eVNsb3QoSlNDZWxsKiwg
RXhlY1N0YXRlKiBleGVjLCBjb25zdCBJZGVudGlmaWVyJiwgUHJvcGVydHlTbG90JikKK2Jvb2wg
SlNOb3RBbk9iamVjdDo6Z2V0T3duUHJvcGVydHlTbG90KEpTQ2VsbCosIEV4ZWNTdGF0ZSogZXhl
YywgUHJvcGVydHlOYW1lLCBQcm9wZXJ0eVNsb3QmKQogewogICAgIEFTU0VSVF9VTlVTRUQoZXhl
YywgZXhlYy0+aGFkRXhjZXB0aW9uKCkpOwogICAgIHJldHVybiBmYWxzZTsKQEAgLTU5LDEzICs1
OSwxMyBAQCBib29sIEpTTm90QW5PYmplY3Q6OmdldE93blByb3BlcnR5U2xvdEJ5CiAgICAgcmV0
dXJuIGZhbHNlOwogfQogCi1ib29sIEpTTm90QW5PYmplY3Q6OmdldE93blByb3BlcnR5RGVzY3Jp
cHRvcihKU09iamVjdCosIEV4ZWNTdGF0ZSogZXhlYywgY29uc3QgSWRlbnRpZmllciYsIFByb3Bl
cnR5RGVzY3JpcHRvciYpCitib29sIEpTTm90QW5PYmplY3Q6OmdldE93blByb3BlcnR5RGVzY3Jp
cHRvcihKU09iamVjdCosIEV4ZWNTdGF0ZSogZXhlYywgUHJvcGVydHlOYW1lLCBQcm9wZXJ0eURl
c2NyaXB0b3ImKQogewogICAgIEFTU0VSVF9VTlVTRUQoZXhlYywgZXhlYy0+aGFkRXhjZXB0aW9u
KCkpOwogICAgIHJldHVybiBmYWxzZTsKIH0KIAotdm9pZCBKU05vdEFuT2JqZWN0OjpwdXQoSlND
ZWxsKiwgRXhlY1N0YXRlKiBleGVjLCBjb25zdCBJZGVudGlmaWVyJiAsIEpTVmFsdWUsIFB1dFBy
b3BlcnR5U2xvdCYpCit2b2lkIEpTTm90QW5PYmplY3Q6OnB1dChKU0NlbGwqLCBFeGVjU3RhdGUq
IGV4ZWMsIFByb3BlcnR5TmFtZSAsIEpTVmFsdWUsIFB1dFByb3BlcnR5U2xvdCYpCiB7CiAgICAg
QVNTRVJUX1VOVVNFRChleGVjLCBleGVjLT5oYWRFeGNlcHRpb24oKSk7CiB9CkBAIC03NSw3ICs3
NSw3IEBAIHZvaWQgSlNOb3RBbk9iamVjdDo6cHV0QnlJbmRleChKU0NlbGwqLCAKICAgICBBU1NF
UlRfVU5VU0VEKGV4ZWMsIGV4ZWMtPmhhZEV4Y2VwdGlvbigpKTsKIH0KIAotYm9vbCBKU05vdEFu
T2JqZWN0OjpkZWxldGVQcm9wZXJ0eShKU0NlbGwqLCBFeGVjU3RhdGUqIGV4ZWMsIGNvbnN0IElk
ZW50aWZpZXImKQorYm9vbCBKU05vdEFuT2JqZWN0OjpkZWxldGVQcm9wZXJ0eShKU0NlbGwqLCBF
eGVjU3RhdGUqIGV4ZWMsIFByb3BlcnR5TmFtZSkKIHsKICAgICBBU1NFUlRfVU5VU0VEKGV4ZWMs
IGV4ZWMtPmhhZEV4Y2VwdGlvbigpKTsKICAgICByZXR1cm4gZmFsc2U7CkluZGV4OiBTb3VyY2Uv
SmF2YVNjcmlwdENvcmUvcnVudGltZS9KU05vdEFuT2JqZWN0LmgKPT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291
cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvSlNOb3RBbk9iamVjdC5oCShyZXZpc2lvbiAxMTY2
NjcpCisrKyBTb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9KU05vdEFuT2JqZWN0LmgJKHdv
cmtpbmcgY29weSkKQEAgLTY4LDE0ICs2OCwxNCBAQCBuYW1lc3BhY2UgSlNDIHsKICAgICAgICAg
c3RhdGljIEpTVmFsdWUgZGVmYXVsdFZhbHVlKGNvbnN0IEpTT2JqZWN0KiwgRXhlY1N0YXRlKiwg
UHJlZmVycmVkUHJpbWl0aXZlVHlwZSk7CiAKICAgICAgICAgLy8gSlNPYmplY3QgbWV0aG9kcwot
ICAgICAgICBzdGF0aWMgYm9vbCBnZXRPd25Qcm9wZXJ0eVNsb3QoSlNDZWxsKiwgRXhlY1N0YXRl
KiwgY29uc3QgSWRlbnRpZmllciYgcHJvcGVydHlOYW1lLCBQcm9wZXJ0eVNsb3QmKTsKKyAgICAg
ICAgc3RhdGljIGJvb2wgZ2V0T3duUHJvcGVydHlTbG90KEpTQ2VsbCosIEV4ZWNTdGF0ZSosIFBy
b3BlcnR5TmFtZSwgUHJvcGVydHlTbG90Jik7CiAgICAgICAgIHN0YXRpYyBib29sIGdldE93blBy
b3BlcnR5U2xvdEJ5SW5kZXgoSlNDZWxsKiwgRXhlY1N0YXRlKiwgdW5zaWduZWQgcHJvcGVydHlO
YW1lLCBQcm9wZXJ0eVNsb3QmKTsKLSAgICAgICAgc3RhdGljIGJvb2wgZ2V0T3duUHJvcGVydHlE
ZXNjcmlwdG9yKEpTT2JqZWN0KiwgRXhlY1N0YXRlKiwgY29uc3QgSWRlbnRpZmllciYsIFByb3Bl
cnR5RGVzY3JpcHRvciYpOworICAgICAgICBzdGF0aWMgYm9vbCBnZXRPd25Qcm9wZXJ0eURlc2Ny
aXB0b3IoSlNPYmplY3QqLCBFeGVjU3RhdGUqLCBQcm9wZXJ0eU5hbWUsIFByb3BlcnR5RGVzY3Jp
cHRvciYpOwogCi0gICAgICAgIHN0YXRpYyB2b2lkIHB1dChKU0NlbGwqLCBFeGVjU3RhdGUqLCBj
b25zdCBJZGVudGlmaWVyJiBwcm9wZXJ0eU5hbWUsIEpTVmFsdWUsIFB1dFByb3BlcnR5U2xvdCYp
OworICAgICAgICBzdGF0aWMgdm9pZCBwdXQoSlNDZWxsKiwgRXhlY1N0YXRlKiwgUHJvcGVydHlO
YW1lLCBKU1ZhbHVlLCBQdXRQcm9wZXJ0eVNsb3QmKTsKICAgICAgICAgc3RhdGljIHZvaWQgcHV0
QnlJbmRleChKU0NlbGwqLCBFeGVjU3RhdGUqLCB1bnNpZ25lZCBwcm9wZXJ0eU5hbWUsIEpTVmFs
dWUsIGJvb2wgc2hvdWxkVGhyb3cpOwogCi0gICAgICAgIHN0YXRpYyBib29sIGRlbGV0ZVByb3Bl
cnR5KEpTQ2VsbCosIEV4ZWNTdGF0ZSosIGNvbnN0IElkZW50aWZpZXImIHByb3BlcnR5TmFtZSk7
CisgICAgICAgIHN0YXRpYyBib29sIGRlbGV0ZVByb3BlcnR5KEpTQ2VsbCosIEV4ZWNTdGF0ZSos
IFByb3BlcnR5TmFtZSk7CiAgICAgICAgIHN0YXRpYyBib29sIGRlbGV0ZVByb3BlcnR5QnlJbmRl
eChKU0NlbGwqLCBFeGVjU3RhdGUqLCB1bnNpZ25lZCBwcm9wZXJ0eU5hbWUpOwogCiAgICAgICAg
IHN0YXRpYyB2b2lkIGdldE93blByb3BlcnR5TmFtZXMoSlNPYmplY3QqLCBFeGVjU3RhdGUqLCBQ
cm9wZXJ0eU5hbWVBcnJheSYsIEVudW1lcmF0aW9uTW9kZSk7CkluZGV4OiBTb3VyY2UvSmF2YVNj
cmlwdENvcmUvcnVudGltZS9KU09OT2JqZWN0LmNwcAo9PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvSmF2
YVNjcmlwdENvcmUvcnVudGltZS9KU09OT2JqZWN0LmNwcAkocmV2aXNpb24gMTE2NjY3KQorKysg
U291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvSlNPTk9iamVjdC5jcHAJKHdvcmtpbmcgY29w
eSkKQEAgLTU5NSwxMiArNTk1LDEyIEBAIGNvbnN0IENsYXNzSW5mbyBKU09OT2JqZWN0OjpzX2lu
Zm8gPSB7ICIKIAogLy8gRUNNQSAxNS44CiAKLWJvb2wgSlNPTk9iamVjdDo6Z2V0T3duUHJvcGVy
dHlTbG90KEpTQ2VsbCogY2VsbCwgRXhlY1N0YXRlKiBleGVjLCBjb25zdCBJZGVudGlmaWVyJiBw
cm9wZXJ0eU5hbWUsIFByb3BlcnR5U2xvdCYgc2xvdCkKK2Jvb2wgSlNPTk9iamVjdDo6Z2V0T3du
UHJvcGVydHlTbG90KEpTQ2VsbCogY2VsbCwgRXhlY1N0YXRlKiBleGVjLCBQcm9wZXJ0eU5hbWUg
cHJvcGVydHlOYW1lLCBQcm9wZXJ0eVNsb3QmIHNsb3QpCiB7CiAgICAgcmV0dXJuIGdldFN0YXRp
Y0Z1bmN0aW9uU2xvdDxKU09iamVjdD4oZXhlYywgRXhlY1N0YXRlOjpqc29uVGFibGUoZXhlYyks
IGpzQ2FzdDxKU09OT2JqZWN0Kj4oY2VsbCksIHByb3BlcnR5TmFtZSwgc2xvdCk7CiB9CiAKLWJv
b2wgSlNPTk9iamVjdDo6Z2V0T3duUHJvcGVydHlEZXNjcmlwdG9yKEpTT2JqZWN0KiBvYmplY3Qs
IEV4ZWNTdGF0ZSogZXhlYywgY29uc3QgSWRlbnRpZmllciYgcHJvcGVydHlOYW1lLCBQcm9wZXJ0
eURlc2NyaXB0b3ImIGRlc2NyaXB0b3IpCitib29sIEpTT05PYmplY3Q6OmdldE93blByb3BlcnR5
RGVzY3JpcHRvcihKU09iamVjdCogb2JqZWN0LCBFeGVjU3RhdGUqIGV4ZWMsIFByb3BlcnR5TmFt
ZSBwcm9wZXJ0eU5hbWUsIFByb3BlcnR5RGVzY3JpcHRvciYgZGVzY3JpcHRvcikKIHsKICAgICBy
ZXR1cm4gZ2V0U3RhdGljRnVuY3Rpb25EZXNjcmlwdG9yPEpTT2JqZWN0PihleGVjLCBFeGVjU3Rh
dGU6Ompzb25UYWJsZShleGVjKSwganNDYXN0PEpTT05PYmplY3QqPihvYmplY3QpLCBwcm9wZXJ0
eU5hbWUsIGRlc2NyaXB0b3IpOwogfQpJbmRleDogU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRp
bWUvSlNPTk9iamVjdC5oCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50
aW1lL0pTT05PYmplY3QuaAkocmV2aXNpb24gMTE2NjY3KQorKysgU291cmNlL0phdmFTY3JpcHRD
b3JlL3J1bnRpbWUvSlNPTk9iamVjdC5oCSh3b3JraW5nIGNvcHkpCkBAIC01Niw4ICs1Niw4IEBA
IG5hbWVzcGFjZSBKU0MgewogCiAgICAgcHJpdmF0ZToKICAgICAgICAgSlNPTk9iamVjdChKU0ds
b2JhbE9iamVjdCosIFN0cnVjdHVyZSopOwotICAgICAgICBzdGF0aWMgYm9vbCBnZXRPd25Qcm9w
ZXJ0eVNsb3QoSlNDZWxsKiwgRXhlY1N0YXRlKiwgY29uc3QgSWRlbnRpZmllciYsIFByb3BlcnR5
U2xvdCYpOwotICAgICAgICBzdGF0aWMgYm9vbCBnZXRPd25Qcm9wZXJ0eURlc2NyaXB0b3IoSlNP
YmplY3QqLCBFeGVjU3RhdGUqLCBjb25zdCBJZGVudGlmaWVyJiwgUHJvcGVydHlEZXNjcmlwdG9y
Jik7CisgICAgICAgIHN0YXRpYyBib29sIGdldE93blByb3BlcnR5U2xvdChKU0NlbGwqLCBFeGVj
U3RhdGUqLCBQcm9wZXJ0eU5hbWUsIFByb3BlcnR5U2xvdCYpOworICAgICAgICBzdGF0aWMgYm9v
bCBnZXRPd25Qcm9wZXJ0eURlc2NyaXB0b3IoSlNPYmplY3QqLCBFeGVjU3RhdGUqLCBQcm9wZXJ0
eU5hbWUsIFByb3BlcnR5RGVzY3JpcHRvciYpOwogCiAgICAgfTsKIApJbmRleDogU291cmNlL0ph
dmFTY3JpcHRDb3JlL3J1bnRpbWUvSlNPYmplY3QuY3BwCj09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9K
YXZhU2NyaXB0Q29yZS9ydW50aW1lL0pTT2JqZWN0LmNwcAkocmV2aXNpb24gMTE2NjY3KQorKysg
U291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvSlNPYmplY3QuY3BwCSh3b3JraW5nIGNvcHkp
CkBAIC0xMjAsNyArMTIwLDcgQEAgYm9vbCBKU09iamVjdDo6Z2V0T3duUHJvcGVydHlTbG90QnlJ
bmRleAogfQogCiAvLyBFQ01BIDguNi4yLjIKLXZvaWQgSlNPYmplY3Q6OnB1dChKU0NlbGwqIGNl
bGwsIEV4ZWNTdGF0ZSogZXhlYywgY29uc3QgSWRlbnRpZmllciYgcHJvcGVydHlOYW1lLCBKU1Zh
bHVlIHZhbHVlLCBQdXRQcm9wZXJ0eVNsb3QmIHNsb3QpCit2b2lkIEpTT2JqZWN0OjpwdXQoSlND
ZWxsKiBjZWxsLCBFeGVjU3RhdGUqIGV4ZWMsIFByb3BlcnR5TmFtZSBwcm9wZXJ0eU5hbWUsIEpT
VmFsdWUgdmFsdWUsIFB1dFByb3BlcnR5U2xvdCYgc2xvdCkKIHsKICAgICBKU09iamVjdCogdGhp
c09iamVjdCA9IGpzQ2FzdDxKU09iamVjdCo+KGNlbGwpOwogICAgIEFTU0VSVCh2YWx1ZSk7CkBA
IC0xOTIsNyArMTkyLDcgQEAgdm9pZCBKU09iamVjdDo6cHV0QnlJbmRleChKU0NlbGwqIGNlbGws
IAogICAgIHRoaXNPYmplY3QtPm1ldGhvZFRhYmxlKCktPnB1dCh0aGlzT2JqZWN0LCBleGVjLCBJ
ZGVudGlmaWVyOjpmcm9tKGV4ZWMsIHByb3BlcnR5TmFtZSksIHZhbHVlLCBzbG90KTsKIH0KIAot
dm9pZCBKU09iamVjdDo6cHV0RGlyZWN0VmlydHVhbChKU09iamVjdCogb2JqZWN0LCBFeGVjU3Rh
dGUqIGV4ZWMsIGNvbnN0IElkZW50aWZpZXImIHByb3BlcnR5TmFtZSwgSlNWYWx1ZSB2YWx1ZSwg
dW5zaWduZWQgYXR0cmlidXRlcykKK3ZvaWQgSlNPYmplY3Q6OnB1dERpcmVjdFZpcnR1YWwoSlNP
YmplY3QqIG9iamVjdCwgRXhlY1N0YXRlKiBleGVjLCBQcm9wZXJ0eU5hbWUgcHJvcGVydHlOYW1l
LCBKU1ZhbHVlIHZhbHVlLCB1bnNpZ25lZCBhdHRyaWJ1dGVzKQogewogICAgIEFTU0VSVCghdmFs
dWUuaXNHZXR0ZXJTZXR0ZXIoKSAmJiAhKGF0dHJpYnV0ZXMgJiBBY2Nlc3NvcikpOwogICAgIFB1
dFByb3BlcnR5U2xvdCBzbG90OwpAQCAtMjIxLDcgKzIyMSw3IEBAIGJvb2wgSlNPYmplY3Q6OmFs
bG93c0FjY2Vzc0Zyb20oRXhlY1N0YXQKICAgICByZXR1cm4gZ2xvYmFsT2JqZWN0LT5nbG9iYWxP
YmplY3RNZXRob2RUYWJsZSgpLT5hbGxvd3NBY2Nlc3NGcm9tKGdsb2JhbE9iamVjdCwgZXhlYyk7
CiB9CiAKLXZvaWQgSlNPYmplY3Q6OnB1dERpcmVjdEFjY2Vzc29yKEpTR2xvYmFsRGF0YSYgZ2xv
YmFsRGF0YSwgY29uc3QgSWRlbnRpZmllciYgcHJvcGVydHlOYW1lLCBKU1ZhbHVlIHZhbHVlLCB1
bnNpZ25lZCBhdHRyaWJ1dGVzKQordm9pZCBKU09iamVjdDo6cHV0RGlyZWN0QWNjZXNzb3IoSlNH
bG9iYWxEYXRhJiBnbG9iYWxEYXRhLCBQcm9wZXJ0eU5hbWUgcHJvcGVydHlOYW1lLCBKU1ZhbHVl
IHZhbHVlLCB1bnNpZ25lZCBhdHRyaWJ1dGVzKQogewogICAgIEFTU0VSVCh2YWx1ZS5pc0dldHRl
clNldHRlcigpICYmIChhdHRyaWJ1dGVzICYgQWNjZXNzb3IpKTsKIApAQCAtMjQwLDcgKzI0MCw3
IEBAIHZvaWQgSlNPYmplY3Q6OnB1dERpcmVjdEFjY2Vzc29yKEpTR2xvYmEKICAgICBzdHJ1Y3R1
cmUoKS0+c2V0SGFzR2V0dGVyU2V0dGVyUHJvcGVydGllcyhwcm9wZXJ0eU5hbWUgPT0gZ2xvYmFs
RGF0YS5wcm9wZXJ0eU5hbWVzLT51bmRlcnNjb3JlUHJvdG8pOwogfQogCi1ib29sIEpTT2JqZWN0
OjpoYXNQcm9wZXJ0eShFeGVjU3RhdGUqIGV4ZWMsIGNvbnN0IElkZW50aWZpZXImIHByb3BlcnR5
TmFtZSkgY29uc3QKK2Jvb2wgSlNPYmplY3Q6Omhhc1Byb3BlcnR5KEV4ZWNTdGF0ZSogZXhlYywg
UHJvcGVydHlOYW1lIHByb3BlcnR5TmFtZSkgY29uc3QKIHsKICAgICBQcm9wZXJ0eVNsb3Qgc2xv
dDsKICAgICByZXR1cm4gY29uc3RfY2FzdDxKU09iamVjdCo+KHRoaXMpLT5nZXRQcm9wZXJ0eVNs
b3QoZXhlYywgcHJvcGVydHlOYW1lLCBzbG90KTsKQEAgLTI1Myw3ICsyNTMsNyBAQCBib29sIEpT
T2JqZWN0OjpoYXNQcm9wZXJ0eShFeGVjU3RhdGUqIGV4CiB9CiAKIC8vIEVDTUEgOC42LjIuNQot
Ym9vbCBKU09iamVjdDo6ZGVsZXRlUHJvcGVydHkoSlNDZWxsKiBjZWxsLCBFeGVjU3RhdGUqIGV4
ZWMsIGNvbnN0IElkZW50aWZpZXImIHByb3BlcnR5TmFtZSkKK2Jvb2wgSlNPYmplY3Q6OmRlbGV0
ZVByb3BlcnR5KEpTQ2VsbCogY2VsbCwgRXhlY1N0YXRlKiBleGVjLCBQcm9wZXJ0eU5hbWUgcHJv
cGVydHlOYW1lKQogewogICAgIEpTT2JqZWN0KiB0aGlzT2JqZWN0ID0ganNDYXN0PEpTT2JqZWN0
Kj4oY2VsbCk7CiAKQEAgLTI3OCw3ICsyNzgsNyBAQCBib29sIEpTT2JqZWN0OjpkZWxldGVQcm9w
ZXJ0eShKU0NlbGwqIGNlCiAgICAgcmV0dXJuIHRydWU7CiB9CiAKLWJvb2wgSlNPYmplY3Q6Omhh
c093blByb3BlcnR5KEV4ZWNTdGF0ZSogZXhlYywgY29uc3QgSWRlbnRpZmllciYgcHJvcGVydHlO
YW1lKSBjb25zdAorYm9vbCBKU09iamVjdDo6aGFzT3duUHJvcGVydHkoRXhlY1N0YXRlKiBleGVj
LCBQcm9wZXJ0eU5hbWUgcHJvcGVydHlOYW1lKSBjb25zdAogewogICAgIFByb3BlcnR5U2xvdCBz
bG90OwogICAgIHJldHVybiBjb25zdF9jYXN0PEpTT2JqZWN0Kj4odGhpcyktPm1ldGhvZFRhYmxl
KCktPmdldE93blByb3BlcnR5U2xvdChjb25zdF9jYXN0PEpTT2JqZWN0Kj4odGhpcyksIGV4ZWMs
IHByb3BlcnR5TmFtZSwgc2xvdCk7CkBAIC0yOTAsNyArMjkwLDcgQEAgYm9vbCBKU09iamVjdDo6
ZGVsZXRlUHJvcGVydHlCeUluZGV4KEpTQwogICAgIHJldHVybiB0aGlzT2JqZWN0LT5tZXRob2RU
YWJsZSgpLT5kZWxldGVQcm9wZXJ0eSh0aGlzT2JqZWN0LCBleGVjLCBJZGVudGlmaWVyOjpmcm9t
KGV4ZWMsIHByb3BlcnR5TmFtZSkpOwogfQogCi1zdGF0aWMgQUxXQVlTX0lOTElORSBKU1ZhbHVl
IGNhbGxEZWZhdWx0VmFsdWVGdW5jdGlvbihFeGVjU3RhdGUqIGV4ZWMsIGNvbnN0IEpTT2JqZWN0
KiBvYmplY3QsIGNvbnN0IElkZW50aWZpZXImIHByb3BlcnR5TmFtZSkKK3N0YXRpYyBBTFdBWVNf
SU5MSU5FIEpTVmFsdWUgY2FsbERlZmF1bHRWYWx1ZUZ1bmN0aW9uKEV4ZWNTdGF0ZSogZXhlYywg
Y29uc3QgSlNPYmplY3QqIG9iamVjdCwgUHJvcGVydHlOYW1lIHByb3BlcnR5TmFtZSkKIHsKICAg
ICBKU1ZhbHVlIGZ1bmN0aW9uID0gb2JqZWN0LT5nZXQoZXhlYywgcHJvcGVydHlOYW1lKTsKICAg
ICBDYWxsRGF0YSBjYWxsRGF0YTsKQEAgLTM0NCw3ICszNDQsNyBAQCBKU1ZhbHVlIEpTT2JqZWN0
OjpkZWZhdWx0VmFsdWUoY29uc3QgSlNPCiAgICAgcmV0dXJuIHRocm93RXJyb3IoZXhlYywgY3Jl
YXRlVHlwZUVycm9yKGV4ZWMsICJObyBkZWZhdWx0IHZhbHVlIikpOwogfQogCi1jb25zdCBIYXNo
RW50cnkqIEpTT2JqZWN0OjpmaW5kUHJvcGVydHlIYXNoRW50cnkoRXhlY1N0YXRlKiBleGVjLCBj
b25zdCBJZGVudGlmaWVyJiBwcm9wZXJ0eU5hbWUpIGNvbnN0Citjb25zdCBIYXNoRW50cnkqIEpT
T2JqZWN0OjpmaW5kUHJvcGVydHlIYXNoRW50cnkoRXhlY1N0YXRlKiBleGVjLCBQcm9wZXJ0eU5h
bWUgcHJvcGVydHlOYW1lKSBjb25zdAogewogICAgIGZvciAoY29uc3QgQ2xhc3NJbmZvKiBpbmZv
ID0gY2xhc3NJbmZvKCk7IGluZm87IGluZm8gPSBpbmZvLT5wYXJlbnRDbGFzcykgewogICAgICAg
ICBpZiAoY29uc3QgSGFzaFRhYmxlKiBwcm9wSGFzaFRhYmxlID0gaW5mby0+cHJvcEhhc2hUYWJs
ZShleGVjKSkgewpAQCAtMzgxLDcgKzM4MSw3IEBAIGJvb2wgSlNPYmplY3Q6OnByb3BlcnR5SXNF
bnVtZXJhYmxlKEV4ZWMKICAgICByZXR1cm4gZGVzY3JpcHRvci5lbnVtZXJhYmxlKCk7CiB9CiAK
LWJvb2wgSlNPYmplY3Q6OmdldFByb3BlcnR5U3BlY2lmaWNWYWx1ZShFeGVjU3RhdGUqIGV4ZWMs
IGNvbnN0IElkZW50aWZpZXImIHByb3BlcnR5TmFtZSwgSlNDZWxsKiYgc3BlY2lmaWNWYWx1ZSkg
Y29uc3QKK2Jvb2wgSlNPYmplY3Q6OmdldFByb3BlcnR5U3BlY2lmaWNWYWx1ZShFeGVjU3RhdGUq
IGV4ZWMsIFByb3BlcnR5TmFtZSBwcm9wZXJ0eU5hbWUsIEpTQ2VsbComIHNwZWNpZmljVmFsdWUp
IGNvbnN0CiB7CiAgICAgdW5zaWduZWQgYXR0cmlidXRlczsKICAgICBpZiAoc3RydWN0dXJlKCkt
PmdldChleGVjLT5nbG9iYWxEYXRhKCksIHByb3BlcnR5TmFtZSwgYXR0cmlidXRlcywgc3BlY2lm
aWNWYWx1ZSkgIT0gV1RGOjpub3RGb3VuZCkKQEAgLTUxMCw3ICs1MTAsNyBAQCB2b2lkIEpTT2Jq
ZWN0OjpyZWlmeVN0YXRpY0Z1bmN0aW9uc0ZvckRlCiAgICAgc3RydWN0dXJlKCktPnNldFN0YXRp
Y0Z1bmN0aW9uc1JlaWZpZWQoKTsKIH0KIAotdm9pZCBKU09iamVjdDo6cmVtb3ZlRGlyZWN0KEpT
R2xvYmFsRGF0YSYgZ2xvYmFsRGF0YSwgY29uc3QgSWRlbnRpZmllciYgcHJvcGVydHlOYW1lKQor
dm9pZCBKU09iamVjdDo6cmVtb3ZlRGlyZWN0KEpTR2xvYmFsRGF0YSYgZ2xvYmFsRGF0YSwgUHJv
cGVydHlOYW1lIHByb3BlcnR5TmFtZSkKIHsKICAgICBpZiAoc3RydWN0dXJlKCktPmdldChnbG9i
YWxEYXRhLCBwcm9wZXJ0eU5hbWUpID09IFdURjo6bm90Rm91bmQpCiAgICAgICAgIHJldHVybjsK
QEAgLTU4Myw3ICs1ODMsNyBAQCB2b2lkIEpTT2JqZWN0OjphbGxvY2F0ZVByb3BlcnR5U3RvcmFn
ZShKCiAgICAgbV9wcm9wZXJ0eVN0b3JhZ2Uuc2V0KGdsb2JhbERhdGEsIHRoaXMsIG5ld1Byb3Bl
cnR5U3RvcmFnZSk7CiB9CiAKLWJvb2wgSlNPYmplY3Q6OmdldE93blByb3BlcnR5RGVzY3JpcHRv
cihKU09iamVjdCogb2JqZWN0LCBFeGVjU3RhdGUqIGV4ZWMsIGNvbnN0IElkZW50aWZpZXImIHBy
b3BlcnR5TmFtZSwgUHJvcGVydHlEZXNjcmlwdG9yJiBkZXNjcmlwdG9yKQorYm9vbCBKU09iamVj
dDo6Z2V0T3duUHJvcGVydHlEZXNjcmlwdG9yKEpTT2JqZWN0KiBvYmplY3QsIEV4ZWNTdGF0ZSog
ZXhlYywgUHJvcGVydHlOYW1lIHByb3BlcnR5TmFtZSwgUHJvcGVydHlEZXNjcmlwdG9yJiBkZXNj
cmlwdG9yKQogewogICAgIHVuc2lnbmVkIGF0dHJpYnV0ZXMgPSAwOwogICAgIEpTQ2VsbCogY2Vs
bCA9IDA7CkBAIC01OTQsNyArNTk0LDcgQEAgYm9vbCBKU09iamVjdDo6Z2V0T3duUHJvcGVydHlE
ZXNjcmlwdG9yKAogICAgIHJldHVybiB0cnVlOwogfQogCi1ib29sIEpTT2JqZWN0OjpnZXRQcm9w
ZXJ0eURlc2NyaXB0b3IoRXhlY1N0YXRlKiBleGVjLCBjb25zdCBJZGVudGlmaWVyJiBwcm9wZXJ0
eU5hbWUsIFByb3BlcnR5RGVzY3JpcHRvciYgZGVzY3JpcHRvcikKK2Jvb2wgSlNPYmplY3Q6Omdl
dFByb3BlcnR5RGVzY3JpcHRvcihFeGVjU3RhdGUqIGV4ZWMsIFByb3BlcnR5TmFtZSBwcm9wZXJ0
eU5hbWUsIFByb3BlcnR5RGVzY3JpcHRvciYgZGVzY3JpcHRvcikKIHsKICAgICBKU09iamVjdCog
b2JqZWN0ID0gdGhpczsKICAgICB3aGlsZSAodHJ1ZSkgewpAQCAtNjA3LDcgKzYwNyw3IEBAIGJv
b2wgSlNPYmplY3Q6OmdldFByb3BlcnR5RGVzY3JpcHRvcihFeGUKICAgICB9CiB9CiAKLXN0YXRp
YyBib29sIHB1dERlc2NyaXB0b3IoRXhlY1N0YXRlKiBleGVjLCBKU09iamVjdCogdGFyZ2V0LCBj
b25zdCBJZGVudGlmaWVyJiBwcm9wZXJ0eU5hbWUsIFByb3BlcnR5RGVzY3JpcHRvciYgZGVzY3Jp
cHRvciwgdW5zaWduZWQgYXR0cmlidXRlcywgY29uc3QgUHJvcGVydHlEZXNjcmlwdG9yJiBvbGRE
ZXNjcmlwdG9yKQorc3RhdGljIGJvb2wgcHV0RGVzY3JpcHRvcihFeGVjU3RhdGUqIGV4ZWMsIEpT
T2JqZWN0KiB0YXJnZXQsIFByb3BlcnR5TmFtZSBwcm9wZXJ0eU5hbWUsIFByb3BlcnR5RGVzY3Jp
cHRvciYgZGVzY3JpcHRvciwgdW5zaWduZWQgYXR0cmlidXRlcywgY29uc3QgUHJvcGVydHlEZXNj
cmlwdG9yJiBvbGREZXNjcmlwdG9yKQogewogICAgIGlmIChkZXNjcmlwdG9yLmlzR2VuZXJpY0Rl
c2NyaXB0b3IoKSB8fCBkZXNjcmlwdG9yLmlzRGF0YURlc2NyaXB0b3IoKSkgewogICAgICAgICBp
ZiAoZGVzY3JpcHRvci5pc0dlbmVyaWNEZXNjcmlwdG9yKCkgJiYgb2xkRGVzY3JpcHRvci5pc0Fj
Y2Vzc29yRGVzY3JpcHRvcigpKSB7CkBAIC02NjIsNyArNjYyLDcgQEAgcHJpdmF0ZToKICAgICBK
U0dsb2JhbERhdGEmIG1fZ2xvYmFsRGF0YTsKIH07CiAKLWJvb2wgSlNPYmplY3Q6OmRlZmluZU93
blByb3BlcnR5KEpTT2JqZWN0KiBvYmplY3QsIEV4ZWNTdGF0ZSogZXhlYywgY29uc3QgSWRlbnRp
ZmllciYgcHJvcGVydHlOYW1lLCBQcm9wZXJ0eURlc2NyaXB0b3ImIGRlc2NyaXB0b3IsIGJvb2wg
dGhyb3dFeGNlcHRpb24pCitib29sIEpTT2JqZWN0OjpkZWZpbmVPd25Qcm9wZXJ0eShKU09iamVj
dCogb2JqZWN0LCBFeGVjU3RhdGUqIGV4ZWMsIFByb3BlcnR5TmFtZSBwcm9wZXJ0eU5hbWUsIFBy
b3BlcnR5RGVzY3JpcHRvciYgZGVzY3JpcHRvciwgYm9vbCB0aHJvd0V4Y2VwdGlvbikKIHsKICAg
ICAvLyBUcmFjayBvbiB0aGUgZ2xvYmFsZGF0YSB0aGF0IHdlJ3JlIGluIGRlZmluZSBwcm9wZXJ0
eS4KICAgICAvLyBDdXJyZW50bHkgRGVmaW5lT3duUHJvcGVydHkgdXNlcyBkZWxldGUgdG8gcmVt
b3ZlIHByb3BlcnRpZXMgd2hlbiB0aGV5IGFyZSBiZWluZyByZXBsYWNlZApJbmRleDogU291cmNl
L0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvSlNPYmplY3QuaAo9PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2Uv
SmF2YVNjcmlwdENvcmUvcnVudGltZS9KU09iamVjdC5oCShyZXZpc2lvbiAxMTY2NjcpCisrKyBT
b3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9KU09iamVjdC5oCSh3b3JraW5nIGNvcHkpCkBA
IC03NSw3ICs3NSw3IEBAIG5hbWVzcGFjZSBKU0MgewogICAgICAgICBmcmllbmQgY2xhc3MgSklU
OwogICAgICAgICBmcmllbmQgY2xhc3MgSlNDZWxsOwogICAgICAgICBmcmllbmQgY2xhc3MgTWFy
a2VkQmxvY2s7Ci0gICAgICAgIEpTX0VYUE9SVF9QUklWQVRFIGZyaWVuZCBib29sIHNldFVwU3Rh
dGljRnVuY3Rpb25TbG90KEV4ZWNTdGF0ZSogZXhlYywgY29uc3QgSGFzaEVudHJ5KiBlbnRyeSwg
SlNPYmplY3QqIHRoaXNPYmosIGNvbnN0IElkZW50aWZpZXImIHByb3BlcnR5TmFtZSwgUHJvcGVy
dHlTbG90JiBzbG90KTsKKyAgICAgICAgSlNfRVhQT1JUX1BSSVZBVEUgZnJpZW5kIGJvb2wgc2V0
VXBTdGF0aWNGdW5jdGlvblNsb3QoRXhlY1N0YXRlKiBleGVjLCBjb25zdCBIYXNoRW50cnkqIGVu
dHJ5LCBKU09iamVjdCogdGhpc09iaiwgUHJvcGVydHlOYW1lLCBQcm9wZXJ0eVNsb3QmIHNsb3Qp
OwogCiAgICAgICAgIGVudW0gUHV0TW9kZSB7CiAgICAgICAgICAgICBQdXRNb2RlUHV0LApAQCAt
OTUsMzkgKzk1LDM5IEBAIG5hbWVzcGFjZSBKU0MgewogICAgICAgICAKICAgICAgICAgU3RydWN0
dXJlKiBpbmhlcml0b3JJRChKU0dsb2JhbERhdGEmKTsKIAotICAgICAgICBKU1ZhbHVlIGdldChF
eGVjU3RhdGUqLCBjb25zdCBJZGVudGlmaWVyJiBwcm9wZXJ0eU5hbWUpIGNvbnN0OworICAgICAg
ICBKU1ZhbHVlIGdldChFeGVjU3RhdGUqLCBQcm9wZXJ0eU5hbWUpIGNvbnN0OwogICAgICAgICBK
U1ZhbHVlIGdldChFeGVjU3RhdGUqLCB1bnNpZ25lZCBwcm9wZXJ0eU5hbWUpIGNvbnN0OwogCi0g
ICAgICAgIGJvb2wgZ2V0UHJvcGVydHlTbG90KEV4ZWNTdGF0ZSosIGNvbnN0IElkZW50aWZpZXIm
IHByb3BlcnR5TmFtZSwgUHJvcGVydHlTbG90Jik7CisgICAgICAgIGJvb2wgZ2V0UHJvcGVydHlT
bG90KEV4ZWNTdGF0ZSosIFByb3BlcnR5TmFtZSwgUHJvcGVydHlTbG90Jik7CiAgICAgICAgIGJv
b2wgZ2V0UHJvcGVydHlTbG90KEV4ZWNTdGF0ZSosIHVuc2lnbmVkIHByb3BlcnR5TmFtZSwgUHJv
cGVydHlTbG90Jik7Ci0gICAgICAgIEpTX0VYUE9SVF9QUklWQVRFIGJvb2wgZ2V0UHJvcGVydHlE
ZXNjcmlwdG9yKEV4ZWNTdGF0ZSosIGNvbnN0IElkZW50aWZpZXImIHByb3BlcnR5TmFtZSwgUHJv
cGVydHlEZXNjcmlwdG9yJik7CisgICAgICAgIEpTX0VYUE9SVF9QUklWQVRFIGJvb2wgZ2V0UHJv
cGVydHlEZXNjcmlwdG9yKEV4ZWNTdGF0ZSosIFByb3BlcnR5TmFtZSwgUHJvcGVydHlEZXNjcmlw
dG9yJik7CiAKLSAgICAgICAgc3RhdGljIGJvb2wgZ2V0T3duUHJvcGVydHlTbG90KEpTQ2VsbCos
IEV4ZWNTdGF0ZSosIGNvbnN0IElkZW50aWZpZXImIHByb3BlcnR5TmFtZSwgUHJvcGVydHlTbG90
Jik7CisgICAgICAgIHN0YXRpYyBib29sIGdldE93blByb3BlcnR5U2xvdChKU0NlbGwqLCBFeGVj
U3RhdGUqLCBQcm9wZXJ0eU5hbWUsIFByb3BlcnR5U2xvdCYpOwogICAgICAgICBKU19FWFBPUlRf
UFJJVkFURSBzdGF0aWMgYm9vbCBnZXRPd25Qcm9wZXJ0eVNsb3RCeUluZGV4KEpTQ2VsbCosIEV4
ZWNTdGF0ZSosIHVuc2lnbmVkIHByb3BlcnR5TmFtZSwgUHJvcGVydHlTbG90Jik7Ci0gICAgICAg
IEpTX0VYUE9SVF9QUklWQVRFIHN0YXRpYyBib29sIGdldE93blByb3BlcnR5RGVzY3JpcHRvcihK
U09iamVjdCosIEV4ZWNTdGF0ZSosIGNvbnN0IElkZW50aWZpZXImLCBQcm9wZXJ0eURlc2NyaXB0
b3ImKTsKKyAgICAgICAgSlNfRVhQT1JUX1BSSVZBVEUgc3RhdGljIGJvb2wgZ2V0T3duUHJvcGVy
dHlEZXNjcmlwdG9yKEpTT2JqZWN0KiwgRXhlY1N0YXRlKiwgUHJvcGVydHlOYW1lLCBQcm9wZXJ0
eURlc2NyaXB0b3ImKTsKIAogICAgICAgICBib29sIGFsbG93c0FjY2Vzc0Zyb20oRXhlY1N0YXRl
Kik7CiAKLSAgICAgICAgSlNfRVhQT1JUX1BSSVZBVEUgc3RhdGljIHZvaWQgcHV0KEpTQ2VsbCos
IEV4ZWNTdGF0ZSosIGNvbnN0IElkZW50aWZpZXImIHByb3BlcnR5TmFtZSwgSlNWYWx1ZSwgUHV0
UHJvcGVydHlTbG90Jik7CisgICAgICAgIEpTX0VYUE9SVF9QUklWQVRFIHN0YXRpYyB2b2lkIHB1
dChKU0NlbGwqLCBFeGVjU3RhdGUqLCBQcm9wZXJ0eU5hbWUsIEpTVmFsdWUsIFB1dFByb3BlcnR5
U2xvdCYpOwogICAgICAgICBKU19FWFBPUlRfUFJJVkFURSBzdGF0aWMgdm9pZCBwdXRCeUluZGV4
KEpTQ2VsbCosIEV4ZWNTdGF0ZSosIHVuc2lnbmVkIHByb3BlcnR5TmFtZSwgSlNWYWx1ZSwgYm9v
bCBzaG91bGRUaHJvdyk7CiAKICAgICAgICAgLy8gcHV0RGlyZWN0IGlzIGVmZmVjdGl2ZWx5IGFu
IHVuY2hlY2tlZCB2ZXNpb24gb2YgJ2RlZmluZU93blByb3BlcnR5JzoKICAgICAgICAgLy8gIC0g
dGhlIHByb3RvdHlwZSBjaGFpbiBpcyBub3QgY29uc3VsdGVkCiAgICAgICAgIC8vICAtIGFjY2Vz
c29ycyBhcmUgbm90IGNhbGxlZC4KICAgICAgICAgLy8gIC0gYXR0cmlidXRlcyB3aWxsIGJlIHJl
c3BlY3RlZCAoYWZ0ZXIgdGhlIGNhbGwgdGhlIHByb3BlcnR5IHdpbGwgZXhpc3Qgd2l0aCB0aGUg
Z2l2ZW4gYXR0cmlidXRlcykKLSAgICAgICAgSlNfRVhQT1JUX1BSSVZBVEUgc3RhdGljIHZvaWQg
cHV0RGlyZWN0VmlydHVhbChKU09iamVjdCosIEV4ZWNTdGF0ZSosIGNvbnN0IElkZW50aWZpZXIm
IHByb3BlcnR5TmFtZSwgSlNWYWx1ZSwgdW5zaWduZWQgYXR0cmlidXRlcyk7Ci0gICAgICAgIHZv
aWQgcHV0RGlyZWN0KEpTR2xvYmFsRGF0YSYsIGNvbnN0IElkZW50aWZpZXImIHByb3BlcnR5TmFt
ZSwgSlNWYWx1ZSwgdW5zaWduZWQgYXR0cmlidXRlcyA9IDApOwotICAgICAgICB2b2lkIHB1dERp
cmVjdChKU0dsb2JhbERhdGEmLCBjb25zdCBJZGVudGlmaWVyJiBwcm9wZXJ0eU5hbWUsIEpTVmFs
dWUsIFB1dFByb3BlcnR5U2xvdCYpOwotICAgICAgICB2b2lkIHB1dERpcmVjdFdpdGhvdXRUcmFu
c2l0aW9uKEpTR2xvYmFsRGF0YSYsIGNvbnN0IElkZW50aWZpZXImIHByb3BlcnR5TmFtZSwgSlNW
YWx1ZSwgdW5zaWduZWQgYXR0cmlidXRlcyA9IDApOwotICAgICAgICB2b2lkIHB1dERpcmVjdEFj
Y2Vzc29yKEpTR2xvYmFsRGF0YSYsIGNvbnN0IElkZW50aWZpZXImIHByb3BlcnR5TmFtZSwgSlNW
YWx1ZSwgdW5zaWduZWQgYXR0cmlidXRlcyk7CisgICAgICAgIEpTX0VYUE9SVF9QUklWQVRFIHN0
YXRpYyB2b2lkIHB1dERpcmVjdFZpcnR1YWwoSlNPYmplY3QqLCBFeGVjU3RhdGUqLCBQcm9wZXJ0
eU5hbWUsIEpTVmFsdWUsIHVuc2lnbmVkIGF0dHJpYnV0ZXMpOworICAgICAgICB2b2lkIHB1dERp
cmVjdChKU0dsb2JhbERhdGEmLCBQcm9wZXJ0eU5hbWUsIEpTVmFsdWUsIHVuc2lnbmVkIGF0dHJp
YnV0ZXMgPSAwKTsKKyAgICAgICAgdm9pZCBwdXREaXJlY3QoSlNHbG9iYWxEYXRhJiwgUHJvcGVy
dHlOYW1lLCBKU1ZhbHVlLCBQdXRQcm9wZXJ0eVNsb3QmKTsKKyAgICAgICAgdm9pZCBwdXREaXJl
Y3RXaXRob3V0VHJhbnNpdGlvbihKU0dsb2JhbERhdGEmLCBQcm9wZXJ0eU5hbWUsIEpTVmFsdWUs
IHVuc2lnbmVkIGF0dHJpYnV0ZXMgPSAwKTsKKyAgICAgICAgdm9pZCBwdXREaXJlY3RBY2Nlc3Nv
cihKU0dsb2JhbERhdGEmLCBQcm9wZXJ0eU5hbWUsIEpTVmFsdWUsIHVuc2lnbmVkIGF0dHJpYnV0
ZXMpOwogCiAgICAgICAgIGJvb2wgcHJvcGVydHlJc0VudW1lcmFibGUoRXhlY1N0YXRlKiwgY29u
c3QgSWRlbnRpZmllciYgcHJvcGVydHlOYW1lKSBjb25zdDsKIAotICAgICAgICBKU19FWFBPUlRf
UFJJVkFURSBib29sIGhhc1Byb3BlcnR5KEV4ZWNTdGF0ZSosIGNvbnN0IElkZW50aWZpZXImIHBy
b3BlcnR5TmFtZSkgY29uc3Q7CisgICAgICAgIEpTX0VYUE9SVF9QUklWQVRFIGJvb2wgaGFzUHJv
cGVydHkoRXhlY1N0YXRlKiwgUHJvcGVydHlOYW1lKSBjb25zdDsKICAgICAgICAgSlNfRVhQT1JU
X1BSSVZBVEUgYm9vbCBoYXNQcm9wZXJ0eShFeGVjU3RhdGUqLCB1bnNpZ25lZCBwcm9wZXJ0eU5h
bWUpIGNvbnN0OwotICAgICAgICBib29sIGhhc093blByb3BlcnR5KEV4ZWNTdGF0ZSosIGNvbnN0
IElkZW50aWZpZXImIHByb3BlcnR5TmFtZSkgY29uc3Q7CisgICAgICAgIGJvb2wgaGFzT3duUHJv
cGVydHkoRXhlY1N0YXRlKiwgUHJvcGVydHlOYW1lKSBjb25zdDsKIAotICAgICAgICBKU19FWFBP
UlRfUFJJVkFURSBzdGF0aWMgYm9vbCBkZWxldGVQcm9wZXJ0eShKU0NlbGwqLCBFeGVjU3RhdGUq
LCBjb25zdCBJZGVudGlmaWVyJiBwcm9wZXJ0eU5hbWUpOworICAgICAgICBKU19FWFBPUlRfUFJJ
VkFURSBzdGF0aWMgYm9vbCBkZWxldGVQcm9wZXJ0eShKU0NlbGwqLCBFeGVjU3RhdGUqLCBQcm9w
ZXJ0eU5hbWUpOwogICAgICAgICBKU19FWFBPUlRfUFJJVkFURSBzdGF0aWMgYm9vbCBkZWxldGVQ
cm9wZXJ0eUJ5SW5kZXgoSlNDZWxsKiwgRXhlY1N0YXRlKiwgdW5zaWduZWQgcHJvcGVydHlOYW1l
KTsKIAogICAgICAgICBKU19FWFBPUlRfUFJJVkFURSBzdGF0aWMgSlNWYWx1ZSBkZWZhdWx0VmFs
dWUoY29uc3QgSlNPYmplY3QqLCBFeGVjU3RhdGUqLCBQcmVmZXJyZWRQcmltaXRpdmVUeXBlKTsK
QEAgLTE0OCwyMiArMTQ4LDIyIEBAIG5hbWVzcGFjZSBKU0MgewogICAgICAgICBKU19FWFBPUlRf
UFJJVkFURSBzdGF0aWMgSlNPYmplY3QqIHRvVGhpc09iamVjdChKU0NlbGwqLCBFeGVjU3RhdGUq
KTsKICAgICAgICAgSlNPYmplY3QqIHVud3JhcHBlZE9iamVjdCgpOwogCi0gICAgICAgIGJvb2wg
Z2V0UHJvcGVydHlTcGVjaWZpY1ZhbHVlKEV4ZWNTdGF0ZSogZXhlYywgY29uc3QgSWRlbnRpZmll
ciYgcHJvcGVydHlOYW1lLCBKU0NlbGwqJiBzcGVjaWZpY0Z1bmN0aW9uKSBjb25zdDsKKyAgICAg
ICAgYm9vbCBnZXRQcm9wZXJ0eVNwZWNpZmljVmFsdWUoRXhlY1N0YXRlKiBleGVjLCBQcm9wZXJ0
eU5hbWUsIEpTQ2VsbComIHNwZWNpZmljRnVuY3Rpb24pIGNvbnN0OwogCiAgICAgICAgIC8vIFRo
aXMgZ2V0IGZ1bmN0aW9uIG9ubHkgbG9va3MgYXQgdGhlIHByb3BlcnR5IG1hcC4KLSAgICAgICAg
SlNWYWx1ZSBnZXREaXJlY3QoSlNHbG9iYWxEYXRhJiBnbG9iYWxEYXRhLCBjb25zdCBJZGVudGlm
aWVyJiBwcm9wZXJ0eU5hbWUpIGNvbnN0CisgICAgICAgIEpTVmFsdWUgZ2V0RGlyZWN0KEpTR2xv
YmFsRGF0YSYgZ2xvYmFsRGF0YSwgUHJvcGVydHlOYW1lIHByb3BlcnR5TmFtZSkgY29uc3QKICAg
ICAgICAgewogICAgICAgICAgICAgc2l6ZV90IG9mZnNldCA9IHN0cnVjdHVyZSgpLT5nZXQoZ2xv
YmFsRGF0YSwgcHJvcGVydHlOYW1lKTsKICAgICAgICAgICAgIHJldHVybiBvZmZzZXQgIT0gV1RG
Ojpub3RGb3VuZCA/IGdldERpcmVjdE9mZnNldChvZmZzZXQpIDogSlNWYWx1ZSgpOwogICAgICAg
ICB9CiAKLSAgICAgICAgV3JpdGVCYXJyaWVyQmFzZTxVbmtub3duPiogZ2V0RGlyZWN0TG9jYXRp
b24oSlNHbG9iYWxEYXRhJiBnbG9iYWxEYXRhLCBjb25zdCBJZGVudGlmaWVyJiBwcm9wZXJ0eU5h
bWUpCisgICAgICAgIFdyaXRlQmFycmllckJhc2U8VW5rbm93bj4qIGdldERpcmVjdExvY2F0aW9u
KEpTR2xvYmFsRGF0YSYgZ2xvYmFsRGF0YSwgUHJvcGVydHlOYW1lIHByb3BlcnR5TmFtZSkKICAg
ICAgICAgewogICAgICAgICAgICAgc2l6ZV90IG9mZnNldCA9IHN0cnVjdHVyZSgpLT5nZXQoZ2xv
YmFsRGF0YSwgcHJvcGVydHlOYW1lKTsKICAgICAgICAgICAgIHJldHVybiBvZmZzZXQgIT0gV1RG
Ojpub3RGb3VuZCA/IGxvY2F0aW9uRm9yT2Zmc2V0KG9mZnNldCkgOiAwOwogICAgICAgICB9CiAK
LSAgICAgICAgV3JpdGVCYXJyaWVyQmFzZTxVbmtub3duPiogZ2V0RGlyZWN0TG9jYXRpb24oSlNH
bG9iYWxEYXRhJiBnbG9iYWxEYXRhLCBjb25zdCBJZGVudGlmaWVyJiBwcm9wZXJ0eU5hbWUsIHVu
c2lnbmVkJiBhdHRyaWJ1dGVzKQorICAgICAgICBXcml0ZUJhcnJpZXJCYXNlPFVua25vd24+KiBn
ZXREaXJlY3RMb2NhdGlvbihKU0dsb2JhbERhdGEmIGdsb2JhbERhdGEsIFByb3BlcnR5TmFtZSBw
cm9wZXJ0eU5hbWUsIHVuc2lnbmVkJiBhdHRyaWJ1dGVzKQogICAgICAgICB7CiAgICAgICAgICAg
ICBKU0NlbGwqIHNwZWNpZmljRnVuY3Rpb247CiAgICAgICAgICAgICBzaXplX3Qgb2Zmc2V0ID0g
c3RydWN0dXJlKCktPmdldChnbG9iYWxEYXRhLCBwcm9wZXJ0eU5hbWUsIGF0dHJpYnV0ZXMsIHNw
ZWNpZmljRnVuY3Rpb24pOwpAQCAtMTc3LDcgKzE3Nyw3IEBAIG5hbWVzcGFjZSBKU0MgewogCiAg
ICAgICAgIHZvaWQgdHJhbnNpdGlvblRvKEpTR2xvYmFsRGF0YSYsIFN0cnVjdHVyZSopOwogCi0g
ICAgICAgIHZvaWQgcmVtb3ZlRGlyZWN0KEpTR2xvYmFsRGF0YSYsIGNvbnN0IElkZW50aWZpZXIm
IHByb3BlcnR5TmFtZSk7CisgICAgICAgIHZvaWQgcmVtb3ZlRGlyZWN0KEpTR2xvYmFsRGF0YSYs
IFByb3BlcnR5TmFtZSk7CiAgICAgICAgIGJvb2wgaGFzQ3VzdG9tUHJvcGVydGllcygpIHsgcmV0
dXJuIHN0cnVjdHVyZSgpLT5kaWRUcmFuc2l0aW9uKCk7IH0KICAgICAgICAgYm9vbCBoYXNHZXR0
ZXJTZXR0ZXJQcm9wZXJ0aWVzKCkgeyByZXR1cm4gc3RydWN0dXJlKCktPmhhc0dldHRlclNldHRl
clByb3BlcnRpZXMoKTsgfQogCkBAIC0xODYsMTQgKzE4NiwxNCBAQCBuYW1lc3BhY2UgSlNDIHsK
ICAgICAgICAgLy8gIC0gcHJvdmlkZXMgbm8gc3BlY2lhbCBoYW5kbGluZyBmb3IgX19wcm90b19f
CiAgICAgICAgIC8vICAtIGRvZXMgbm90IHdhbGsgdGhlIHByb3RvdHlwZSBjaGFpbiAodG8gY2hl
Y2sgZm9yIGFjY2Vzc29ycyBvciBub24td3JpdGFibGUgcHJvcGVydGllcykuCiAgICAgICAgIC8v
IFRoaXMgaXMgdXNlZCBieSBKU0FjdGl2YXRpb24uCi0gICAgICAgIGJvb2wgcHV0T3duRGF0YVBy
b3BlcnR5KEpTR2xvYmFsRGF0YSYsIGNvbnN0IElkZW50aWZpZXImIHByb3BlcnR5TmFtZSwgSlNW
YWx1ZSwgUHV0UHJvcGVydHlTbG90Jik7CisgICAgICAgIGJvb2wgcHV0T3duRGF0YVByb3BlcnR5
KEpTR2xvYmFsRGF0YSYsIFByb3BlcnR5TmFtZSwgSlNWYWx1ZSwgUHV0UHJvcGVydHlTbG90Jik7
CiAKICAgICAgICAgLy8gRmFzdCBhY2Nlc3MgdG8ga25vd24gcHJvcGVydHkgb2Zmc2V0cy4KICAg
ICAgICAgSlNWYWx1ZSBnZXREaXJlY3RPZmZzZXQoc2l6ZV90IG9mZnNldCkgY29uc3QgeyByZXR1
cm4gcHJvcGVydHlTdG9yYWdlKClbb2Zmc2V0XS5nZXQoKTsgfQogICAgICAgICB2b2lkIHB1dERp
cmVjdE9mZnNldChKU0dsb2JhbERhdGEmIGdsb2JhbERhdGEsIHNpemVfdCBvZmZzZXQsIEpTVmFs
dWUgdmFsdWUpIHsgcHJvcGVydHlTdG9yYWdlKClbb2Zmc2V0XS5zZXQoZ2xvYmFsRGF0YSwgdGhp
cywgdmFsdWUpOyB9CiAgICAgICAgIHZvaWQgcHV0VW5kZWZpbmVkQXREaXJlY3RPZmZzZXQoc2l6
ZV90IG9mZnNldCkgeyBwcm9wZXJ0eVN0b3JhZ2UoKVtvZmZzZXRdLnNldFVuZGVmaW5lZCgpOyB9
CiAKLSAgICAgICAgSlNfRVhQT1JUX1BSSVZBVEUgc3RhdGljIGJvb2wgZGVmaW5lT3duUHJvcGVy
dHkoSlNPYmplY3QqLCBFeGVjU3RhdGUqLCBjb25zdCBJZGVudGlmaWVyJiBwcm9wZXJ0eU5hbWUs
IFByb3BlcnR5RGVzY3JpcHRvciYsIGJvb2wgc2hvdWxkVGhyb3cpOworICAgICAgICBKU19FWFBP
UlRfUFJJVkFURSBzdGF0aWMgYm9vbCBkZWZpbmVPd25Qcm9wZXJ0eShKU09iamVjdCosIEV4ZWNT
dGF0ZSosIFByb3BlcnR5TmFtZSwgUHJvcGVydHlEZXNjcmlwdG9yJiwgYm9vbCBzaG91bGRUaHJv
dyk7CiAKICAgICAgICAgYm9vbCBpc0dsb2JhbE9iamVjdCgpIGNvbnN0OwogICAgICAgICBib29s
IGlzVmFyaWFibGVPYmplY3QoKSBjb25zdDsKQEAgLTI5NCwxMiArMjk0LDEyIEBAIG5hbWVzcGFj
ZSBKU0MgewogICAgICAgICB9CiAKICAgICAgICAgdGVtcGxhdGU8UHV0TW9kZT4KLSAgICAgICAg
Ym9vbCBwdXREaXJlY3RJbnRlcm5hbChKU0dsb2JhbERhdGEmLCBjb25zdCBJZGVudGlmaWVyJiBw
cm9wZXJ0eU5hbWUsIEpTVmFsdWUsIHVuc2lnbmVkIGF0dHIsIFB1dFByb3BlcnR5U2xvdCYsIEpT
Q2VsbCopOworICAgICAgICBib29sIHB1dERpcmVjdEludGVybmFsKEpTR2xvYmFsRGF0YSYsIFBy
b3BlcnR5TmFtZSwgSlNWYWx1ZSwgdW5zaWduZWQgYXR0ciwgUHV0UHJvcGVydHlTbG90JiwgSlND
ZWxsKik7CiAKLSAgICAgICAgYm9vbCBpbmxpbmVHZXRPd25Qcm9wZXJ0eVNsb3QoRXhlY1N0YXRl
KiwgY29uc3QgSWRlbnRpZmllciYgcHJvcGVydHlOYW1lLCBQcm9wZXJ0eVNsb3QmKTsKKyAgICAg
ICAgYm9vbCBpbmxpbmVHZXRPd25Qcm9wZXJ0eVNsb3QoRXhlY1N0YXRlKiwgUHJvcGVydHlOYW1l
LCBQcm9wZXJ0eVNsb3QmKTsKICAgICAgICAgSlNfRVhQT1JUX1BSSVZBVEUgdm9pZCBmaWxsR2V0
dGVyUHJvcGVydHlTbG90KFByb3BlcnR5U2xvdCYsIFdyaXRlQmFycmllckJhc2U8VW5rbm93bj4q
IGxvY2F0aW9uKTsKIAotICAgICAgICBjb25zdCBIYXNoRW50cnkqIGZpbmRQcm9wZXJ0eUhhc2hF
bnRyeShFeGVjU3RhdGUqLCBjb25zdCBJZGVudGlmaWVyJiBwcm9wZXJ0eU5hbWUpIGNvbnN0Owor
ICAgICAgICBjb25zdCBIYXNoRW50cnkqIGZpbmRQcm9wZXJ0eUhhc2hFbnRyeShFeGVjU3RhdGUq
LCBQcm9wZXJ0eU5hbWUpIGNvbnN0OwogICAgICAgICBTdHJ1Y3R1cmUqIGNyZWF0ZUluaGVyaXRv
cklEKEpTR2xvYmFsRGF0YSYpOwogCiAgICAgICAgIFN0b3JhZ2VCYXJyaWVyIG1fcHJvcGVydHlT
dG9yYWdlOwpAQCAtNTM5LDcgKzUzOSw3IEBAIGlubGluZSBKU09iamVjdCogSlNWYWx1ZTo6dG9U
aGlzT2JqZWN0KEUKICAgICByZXR1cm4gaXNDZWxsKCkgPyBhc0NlbGwoKS0+bWV0aG9kVGFibGUo
KS0+dG9UaGlzT2JqZWN0KGFzQ2VsbCgpLCBleGVjKSA6IHRvVGhpc09iamVjdFNsb3dDYXNlKGV4
ZWMpOwogfQogCi1BTFdBWVNfSU5MSU5FIGJvb2wgSlNPYmplY3Q6OmlubGluZUdldE93blByb3Bl
cnR5U2xvdChFeGVjU3RhdGUqIGV4ZWMsIGNvbnN0IElkZW50aWZpZXImIHByb3BlcnR5TmFtZSwg
UHJvcGVydHlTbG90JiBzbG90KQorQUxXQVlTX0lOTElORSBib29sIEpTT2JqZWN0OjppbmxpbmVH
ZXRPd25Qcm9wZXJ0eVNsb3QoRXhlY1N0YXRlKiBleGVjLCBQcm9wZXJ0eU5hbWUgcHJvcGVydHlO
YW1lLCBQcm9wZXJ0eVNsb3QmIHNsb3QpCiB7CiAgICAgaWYgKFdyaXRlQmFycmllckJhc2U8VW5r
bm93bj4qIGxvY2F0aW9uID0gZ2V0RGlyZWN0TG9jYXRpb24oZXhlYy0+Z2xvYmFsRGF0YSgpLCBw
cm9wZXJ0eU5hbWUpKSB7CiAgICAgICAgIGlmIChzdHJ1Y3R1cmUoKS0+aGFzR2V0dGVyU2V0dGVy
UHJvcGVydGllcygpICYmIGxvY2F0aW9uLT5pc0dldHRlclNldHRlcigpKQpAQCAtNTU1LDEyICs1
NTUsMTIgQEAgQUxXQVlTX0lOTElORSBib29sIEpTT2JqZWN0OjppbmxpbmVHZXRPdwogLy8gSXQg
bWF5IHNlZW0gY3JhenkgdG8gaW5saW5lIGEgZnVuY3Rpb24gdGhpcyBsYXJnZSwgZXNwZWNpYWxs
eSBhIHZpcnR1YWwgZnVuY3Rpb24sCiAvLyBidXQgaXQgbWFrZXMgYSBiaWcgZGlmZmVyZW5jZSB0
byBwcm9wZXJ0eSBsb29rdXAgdGhhdCBkZXJpdmVkIGNsYXNzZXMgY2FuIGlubGluZSB0aGVpcgog
Ly8gYmFzZSBjbGFzcyBjYWxsIHRvIHRoaXMuCi1BTFdBWVNfSU5MSU5FIGJvb2wgSlNPYmplY3Q6
OmdldE93blByb3BlcnR5U2xvdChKU0NlbGwqIGNlbGwsIEV4ZWNTdGF0ZSogZXhlYywgY29uc3Qg
SWRlbnRpZmllciYgcHJvcGVydHlOYW1lLCBQcm9wZXJ0eVNsb3QmIHNsb3QpCitBTFdBWVNfSU5M
SU5FIGJvb2wgSlNPYmplY3Q6OmdldE93blByb3BlcnR5U2xvdChKU0NlbGwqIGNlbGwsIEV4ZWNT
dGF0ZSogZXhlYywgUHJvcGVydHlOYW1lIHByb3BlcnR5TmFtZSwgUHJvcGVydHlTbG90JiBzbG90
KQogewogICAgIHJldHVybiBqc0Nhc3Q8SlNPYmplY3QqPihjZWxsKS0+aW5saW5lR2V0T3duUHJv
cGVydHlTbG90KGV4ZWMsIHByb3BlcnR5TmFtZSwgc2xvdCk7CiB9CiAKLUFMV0FZU19JTkxJTkUg
Ym9vbCBKU0NlbGw6OmZhc3RHZXRPd25Qcm9wZXJ0eVNsb3QoRXhlY1N0YXRlKiBleGVjLCBjb25z
dCBJZGVudGlmaWVyJiBwcm9wZXJ0eU5hbWUsIFByb3BlcnR5U2xvdCYgc2xvdCkKK0FMV0FZU19J
TkxJTkUgYm9vbCBKU0NlbGw6OmZhc3RHZXRPd25Qcm9wZXJ0eVNsb3QoRXhlY1N0YXRlKiBleGVj
LCBQcm9wZXJ0eU5hbWUgcHJvcGVydHlOYW1lLCBQcm9wZXJ0eVNsb3QmIHNsb3QpCiB7CiAgICAg
aWYgKCFzdHJ1Y3R1cmUoKS0+dHlwZUluZm8oKS5vdmVycmlkZXNHZXRPd25Qcm9wZXJ0eVNsb3Qo
KSkKICAgICAgICAgcmV0dXJuIGFzT2JqZWN0KHRoaXMpLT5pbmxpbmVHZXRPd25Qcm9wZXJ0eVNs
b3QoZXhlYywgcHJvcGVydHlOYW1lLCBzbG90KTsKQEAgLTU4NSw3ICs1ODUsNyBAQCBBTFdBWVNf
SU5MSU5FIEpTVmFsdWUgSlNDZWxsOjpmYXN0R2V0T3duCiAKIC8vIEl0IG1heSBzZWVtIGNyYXp5
IHRvIGlubGluZSBhIGZ1bmN0aW9uIHRoaXMgbGFyZ2UgYnV0IGl0IG1ha2VzIGEgYmlnIGRpZmZl
cmVuY2UKIC8vIHNpbmNlIHRoaXMgaXMgZnVuY3Rpb24gdmVyeSBob3QgaW4gdmFyaWFibGUgbG9v
a3VwCi1BTFdBWVNfSU5MSU5FIGJvb2wgSlNPYmplY3Q6OmdldFByb3BlcnR5U2xvdChFeGVjU3Rh
dGUqIGV4ZWMsIGNvbnN0IElkZW50aWZpZXImIHByb3BlcnR5TmFtZSwgUHJvcGVydHlTbG90JiBz
bG90KQorQUxXQVlTX0lOTElORSBib29sIEpTT2JqZWN0OjpnZXRQcm9wZXJ0eVNsb3QoRXhlY1N0
YXRlKiBleGVjLCBQcm9wZXJ0eU5hbWUgcHJvcGVydHlOYW1lLCBQcm9wZXJ0eVNsb3QmIHNsb3Qp
CiB7CiAgICAgSlNPYmplY3QqIG9iamVjdCA9IHRoaXM7CiAgICAgd2hpbGUgKHRydWUpIHsKQEAg
LTYxMSw3ICs2MTEsNyBAQCBBTFdBWVNfSU5MSU5FIGJvb2wgSlNPYmplY3Q6OmdldFByb3BlcnR5
CiAgICAgfQogfQogCi1pbmxpbmUgSlNWYWx1ZSBKU09iamVjdDo6Z2V0KEV4ZWNTdGF0ZSogZXhl
YywgY29uc3QgSWRlbnRpZmllciYgcHJvcGVydHlOYW1lKSBjb25zdAoraW5saW5lIEpTVmFsdWUg
SlNPYmplY3Q6OmdldChFeGVjU3RhdGUqIGV4ZWMsIFByb3BlcnR5TmFtZSBwcm9wZXJ0eU5hbWUp
IGNvbnN0CiB7CiAgICAgUHJvcGVydHlTbG90IHNsb3QodGhpcyk7CiAgICAgaWYgKGNvbnN0X2Nh
c3Q8SlNPYmplY3QqPih0aGlzKS0+Z2V0UHJvcGVydHlTbG90KGV4ZWMsIHByb3BlcnR5TmFtZSwg
c2xvdCkpCkBAIC02MzAsNyArNjMwLDcgQEAgaW5saW5lIEpTVmFsdWUgSlNPYmplY3Q6OmdldChF
eGVjU3RhdGUqIAogfQogCiB0ZW1wbGF0ZTxKU09iamVjdDo6UHV0TW9kZSBtb2RlPgotaW5saW5l
IGJvb2wgSlNPYmplY3Q6OnB1dERpcmVjdEludGVybmFsKEpTR2xvYmFsRGF0YSYgZ2xvYmFsRGF0
YSwgY29uc3QgSWRlbnRpZmllciYgcHJvcGVydHlOYW1lLCBKU1ZhbHVlIHZhbHVlLCB1bnNpZ25l
ZCBhdHRyaWJ1dGVzLCBQdXRQcm9wZXJ0eVNsb3QmIHNsb3QsIEpTQ2VsbCogc3BlY2lmaWNGdW5j
dGlvbikKK2lubGluZSBib29sIEpTT2JqZWN0OjpwdXREaXJlY3RJbnRlcm5hbChKU0dsb2JhbERh
dGEmIGdsb2JhbERhdGEsIFByb3BlcnR5TmFtZSBwcm9wZXJ0eU5hbWUsIEpTVmFsdWUgdmFsdWUs
IHVuc2lnbmVkIGF0dHJpYnV0ZXMsIFB1dFByb3BlcnR5U2xvdCYgc2xvdCwgSlNDZWxsKiBzcGVj
aWZpY0Z1bmN0aW9uKQogewogICAgIEFTU0VSVCh2YWx1ZSk7CiAgICAgQVNTRVJUKHZhbHVlLmlz
R2V0dGVyU2V0dGVyKCkgPT0gISEoYXR0cmlidXRlcyAmIEFjY2Vzc29yKSk7CkBAIC03NDIsNyAr
NzQyLDcgQEAgaW5saW5lIGJvb2wgSlNPYmplY3Q6OnB1dERpcmVjdEludGVybmFsKAogICAgIHJl
dHVybiB0cnVlOwogfQogCi1pbmxpbmUgYm9vbCBKU09iamVjdDo6cHV0T3duRGF0YVByb3BlcnR5
KEpTR2xvYmFsRGF0YSYgZ2xvYmFsRGF0YSwgY29uc3QgSWRlbnRpZmllciYgcHJvcGVydHlOYW1l
LCBKU1ZhbHVlIHZhbHVlLCBQdXRQcm9wZXJ0eVNsb3QmIHNsb3QpCitpbmxpbmUgYm9vbCBKU09i
amVjdDo6cHV0T3duRGF0YVByb3BlcnR5KEpTR2xvYmFsRGF0YSYgZ2xvYmFsRGF0YSwgUHJvcGVy
dHlOYW1lIHByb3BlcnR5TmFtZSwgSlNWYWx1ZSB2YWx1ZSwgUHV0UHJvcGVydHlTbG90JiBzbG90
KQogewogICAgIEFTU0VSVCh2YWx1ZSk7CiAgICAgQVNTRVJUKCFIZWFwOjpoZWFwKHZhbHVlKSB8
fCBIZWFwOjpoZWFwKHZhbHVlKSA9PSBIZWFwOjpoZWFwKHRoaXMpKTsKQEAgLTc1MSwyMCArNzUx
LDIwIEBAIGlubGluZSBib29sIEpTT2JqZWN0OjpwdXRPd25EYXRhUHJvcGVydHkKICAgICByZXR1
cm4gcHV0RGlyZWN0SW50ZXJuYWw8UHV0TW9kZVB1dD4oZ2xvYmFsRGF0YSwgcHJvcGVydHlOYW1l
LCB2YWx1ZSwgMCwgc2xvdCwgZ2V0SlNGdW5jdGlvbih2YWx1ZSkpOwogfQogCi1pbmxpbmUgdm9p
ZCBKU09iamVjdDo6cHV0RGlyZWN0KEpTR2xvYmFsRGF0YSYgZ2xvYmFsRGF0YSwgY29uc3QgSWRl
bnRpZmllciYgcHJvcGVydHlOYW1lLCBKU1ZhbHVlIHZhbHVlLCB1bnNpZ25lZCBhdHRyaWJ1dGVz
KQoraW5saW5lIHZvaWQgSlNPYmplY3Q6OnB1dERpcmVjdChKU0dsb2JhbERhdGEmIGdsb2JhbERh
dGEsIFByb3BlcnR5TmFtZSBwcm9wZXJ0eU5hbWUsIEpTVmFsdWUgdmFsdWUsIHVuc2lnbmVkIGF0
dHJpYnV0ZXMpCiB7CiAgICAgQVNTRVJUKCF2YWx1ZS5pc0dldHRlclNldHRlcigpICYmICEoYXR0
cmlidXRlcyAmIEFjY2Vzc29yKSk7CiAgICAgUHV0UHJvcGVydHlTbG90IHNsb3Q7CiAgICAgcHV0
RGlyZWN0SW50ZXJuYWw8UHV0TW9kZURlZmluZU93blByb3BlcnR5PihnbG9iYWxEYXRhLCBwcm9w
ZXJ0eU5hbWUsIHZhbHVlLCBhdHRyaWJ1dGVzLCBzbG90LCBnZXRKU0Z1bmN0aW9uKHZhbHVlKSk7
CiB9CiAKLWlubGluZSB2b2lkIEpTT2JqZWN0OjpwdXREaXJlY3QoSlNHbG9iYWxEYXRhJiBnbG9i
YWxEYXRhLCBjb25zdCBJZGVudGlmaWVyJiBwcm9wZXJ0eU5hbWUsIEpTVmFsdWUgdmFsdWUsIFB1
dFByb3BlcnR5U2xvdCYgc2xvdCkKK2lubGluZSB2b2lkIEpTT2JqZWN0OjpwdXREaXJlY3QoSlNH
bG9iYWxEYXRhJiBnbG9iYWxEYXRhLCBQcm9wZXJ0eU5hbWUgcHJvcGVydHlOYW1lLCBKU1ZhbHVl
IHZhbHVlLCBQdXRQcm9wZXJ0eVNsb3QmIHNsb3QpCiB7CiAgICAgQVNTRVJUKCF2YWx1ZS5pc0dl
dHRlclNldHRlcigpKTsKICAgICBwdXREaXJlY3RJbnRlcm5hbDxQdXRNb2RlRGVmaW5lT3duUHJv
cGVydHk+KGdsb2JhbERhdGEsIHByb3BlcnR5TmFtZSwgdmFsdWUsIDAsIHNsb3QsIGdldEpTRnVu
Y3Rpb24odmFsdWUpKTsKIH0KIAotaW5saW5lIHZvaWQgSlNPYmplY3Q6OnB1dERpcmVjdFdpdGhv
dXRUcmFuc2l0aW9uKEpTR2xvYmFsRGF0YSYgZ2xvYmFsRGF0YSwgY29uc3QgSWRlbnRpZmllciYg
cHJvcGVydHlOYW1lLCBKU1ZhbHVlIHZhbHVlLCB1bnNpZ25lZCBhdHRyaWJ1dGVzKQoraW5saW5l
IHZvaWQgSlNPYmplY3Q6OnB1dERpcmVjdFdpdGhvdXRUcmFuc2l0aW9uKEpTR2xvYmFsRGF0YSYg
Z2xvYmFsRGF0YSwgUHJvcGVydHlOYW1lIHByb3BlcnR5TmFtZSwgSlNWYWx1ZSB2YWx1ZSwgdW5z
aWduZWQgYXR0cmlidXRlcykKIHsKICAgICBBU1NFUlQoIXZhbHVlLmlzR2V0dGVyU2V0dGVyKCkg
JiYgIShhdHRyaWJ1dGVzICYgQWNjZXNzb3IpKTsKICAgICBzaXplX3QgY3VycmVudENhcGFjaXR5
ID0gc3RydWN0dXJlKCktPnByb3BlcnR5U3RvcmFnZUNhcGFjaXR5KCk7CkBAIC03ODYsMTMgKzc4
NiwxMyBAQCBpbmxpbmUgSlNWYWx1ZSBKU09iamVjdDo6dG9QcmltaXRpdmUoRXhlCiAgICAgcmV0
dXJuIG1ldGhvZFRhYmxlKCktPmRlZmF1bHRWYWx1ZSh0aGlzLCBleGVjLCBwcmVmZXJyZWRUeXBl
KTsKIH0KIAotaW5saW5lIEpTVmFsdWUgSlNWYWx1ZTo6Z2V0KEV4ZWNTdGF0ZSogZXhlYywgY29u
c3QgSWRlbnRpZmllciYgcHJvcGVydHlOYW1lKSBjb25zdAoraW5saW5lIEpTVmFsdWUgSlNWYWx1
ZTo6Z2V0KEV4ZWNTdGF0ZSogZXhlYywgUHJvcGVydHlOYW1lIHByb3BlcnR5TmFtZSkgY29uc3QK
IHsKICAgICBQcm9wZXJ0eVNsb3Qgc2xvdChhc1ZhbHVlKCkpOwogICAgIHJldHVybiBnZXQoZXhl
YywgcHJvcGVydHlOYW1lLCBzbG90KTsKIH0KIAotaW5saW5lIEpTVmFsdWUgSlNWYWx1ZTo6Z2V0
KEV4ZWNTdGF0ZSogZXhlYywgY29uc3QgSWRlbnRpZmllciYgcHJvcGVydHlOYW1lLCBQcm9wZXJ0
eVNsb3QmIHNsb3QpIGNvbnN0CitpbmxpbmUgSlNWYWx1ZSBKU1ZhbHVlOjpnZXQoRXhlY1N0YXRl
KiBleGVjLCBQcm9wZXJ0eU5hbWUgcHJvcGVydHlOYW1lLCBQcm9wZXJ0eVNsb3QmIHNsb3QpIGNv
bnN0CiB7CiAgICAgaWYgKFVOTElLRUxZKCFpc0NlbGwoKSkpIHsKICAgICAgICAgSlNPYmplY3Qq
IHByb3RvdHlwZSA9IHN5bnRoZXNpemVQcm90b3R5cGUoZXhlYyk7CkBAIC04MzYsNyArODM2LDcg
QEAgaW5saW5lIEpTVmFsdWUgSlNWYWx1ZTo6Z2V0KEV4ZWNTdGF0ZSogZQogICAgIH0KIH0KIAot
aW5saW5lIHZvaWQgSlNWYWx1ZTo6cHV0KEV4ZWNTdGF0ZSogZXhlYywgY29uc3QgSWRlbnRpZmll
ciYgcHJvcGVydHlOYW1lLCBKU1ZhbHVlIHZhbHVlLCBQdXRQcm9wZXJ0eVNsb3QmIHNsb3QpCitp
bmxpbmUgdm9pZCBKU1ZhbHVlOjpwdXQoRXhlY1N0YXRlKiBleGVjLCBQcm9wZXJ0eU5hbWUgcHJv
cGVydHlOYW1lLCBKU1ZhbHVlIHZhbHVlLCBQdXRQcm9wZXJ0eVNsb3QmIHNsb3QpCiB7CiAgICAg
aWYgKFVOTElLRUxZKCFpc0NlbGwoKSkpIHsKICAgICAgICAgcHV0VG9QcmltaXRpdmUoZXhlYywg
cHJvcGVydHlOYW1lLCB2YWx1ZSwgc2xvdCk7CkluZGV4OiBTb3VyY2UvSmF2YVNjcmlwdENvcmUv
cnVudGltZS9KU1N0YXRpY1Njb3BlT2JqZWN0LmNwcAo9PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvSmF2
YVNjcmlwdENvcmUvcnVudGltZS9KU1N0YXRpY1Njb3BlT2JqZWN0LmNwcAkocmV2aXNpb24gMTE2
NjY3KQorKysgU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvSlNTdGF0aWNTY29wZU9iamVj
dC5jcHAJKHdvcmtpbmcgY29weSkKQEAgLTU0LDcgKzU0LDcgQEAgSlNPYmplY3QqIEpTU3RhdGlj
U2NvcGVPYmplY3Q6OnRvVGhpc09iagogICAgIHJldHVybiBleGVjLT5nbG9iYWxUaGlzVmFsdWUo
KTsKIH0KIAotdm9pZCBKU1N0YXRpY1Njb3BlT2JqZWN0OjpwdXQoSlNDZWxsKiBjZWxsLCBFeGVj
U3RhdGUqIGV4ZWMsIGNvbnN0IElkZW50aWZpZXImIHByb3BlcnR5TmFtZSwgSlNWYWx1ZSB2YWx1
ZSwgUHV0UHJvcGVydHlTbG90JiBzbG90KQordm9pZCBKU1N0YXRpY1Njb3BlT2JqZWN0OjpwdXQo
SlNDZWxsKiBjZWxsLCBFeGVjU3RhdGUqIGV4ZWMsIFByb3BlcnR5TmFtZSBwcm9wZXJ0eU5hbWUs
IEpTVmFsdWUgdmFsdWUsIFB1dFByb3BlcnR5U2xvdCYgc2xvdCkKIHsKICAgICBKU1N0YXRpY1Nj
b3BlT2JqZWN0KiB0aGlzT2JqZWN0ID0ganNDYXN0PEpTU3RhdGljU2NvcGVPYmplY3QqPihjZWxs
KTsKICAgICBpZiAoc2xvdC5pc1N0cmljdE1vZGUoKSkgewpAQCAtNzgsNyArNzgsNyBAQCB2b2lk
IEpTU3RhdGljU2NvcGVPYmplY3Q6OnB1dChKU0NlbGwqIGNlCiAgICAgQVNTRVJUX05PVF9SRUFD
SEVEKCk7CiB9CiAKLXZvaWQgSlNTdGF0aWNTY29wZU9iamVjdDo6cHV0RGlyZWN0VmlydHVhbChK
U09iamVjdCogb2JqZWN0LCBFeGVjU3RhdGUqIGV4ZWMsIGNvbnN0IElkZW50aWZpZXImIHByb3Bl
cnR5TmFtZSwgSlNWYWx1ZSB2YWx1ZSwgdW5zaWduZWQgYXR0cmlidXRlcykKK3ZvaWQgSlNTdGF0
aWNTY29wZU9iamVjdDo6cHV0RGlyZWN0VmlydHVhbChKU09iamVjdCogb2JqZWN0LCBFeGVjU3Rh
dGUqIGV4ZWMsIFByb3BlcnR5TmFtZSBwcm9wZXJ0eU5hbWUsIEpTVmFsdWUgdmFsdWUsIHVuc2ln
bmVkIGF0dHJpYnV0ZXMpCiB7CiAgICAgSlNTdGF0aWNTY29wZU9iamVjdCogdGhpc09iamVjdCA9
IGpzQ2FzdDxKU1N0YXRpY1Njb3BlT2JqZWN0Kj4ob2JqZWN0KTsKICAgICBpZiAodGhpc09iamVj
dC0+c3ltYm9sVGFibGVQdXRXaXRoQXR0cmlidXRlcyhleGVjLT5nbG9iYWxEYXRhKCksIHByb3Bl
cnR5TmFtZSwgdmFsdWUsIGF0dHJpYnV0ZXMpKQpAQCAtODcsNyArODcsNyBAQCB2b2lkIEpTU3Rh
dGljU2NvcGVPYmplY3Q6OnB1dERpcmVjdFZpcnR1CiAgICAgQVNTRVJUX05PVF9SRUFDSEVEKCk7
CiB9CiAKLWJvb2wgSlNTdGF0aWNTY29wZU9iamVjdDo6Z2V0T3duUHJvcGVydHlTbG90KEpTQ2Vs
bCogY2VsbCwgRXhlY1N0YXRlKiwgY29uc3QgSWRlbnRpZmllciYgcHJvcGVydHlOYW1lLCBQcm9w
ZXJ0eVNsb3QmIHNsb3QpCitib29sIEpTU3RhdGljU2NvcGVPYmplY3Q6OmdldE93blByb3BlcnR5
U2xvdChKU0NlbGwqIGNlbGwsIEV4ZWNTdGF0ZSosIFByb3BlcnR5TmFtZSBwcm9wZXJ0eU5hbWUs
IFByb3BlcnR5U2xvdCYgc2xvdCkKIHsKICAgICByZXR1cm4ganNDYXN0PEpTU3RhdGljU2NvcGVP
YmplY3QqPihjZWxsKS0+c3ltYm9sVGFibGVHZXQocHJvcGVydHlOYW1lLCBzbG90KTsKIH0KSW5k
ZXg6IFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL0pTU3RhdGljU2NvcGVPYmplY3QuaAo9
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09Ci0tLSBTb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9KU1N0YXRpY1Njb3Bl
T2JqZWN0LmgJKHJldmlzaW9uIDExNjY2NykKKysrIFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50
aW1lL0pTU3RhdGljU2NvcGVPYmplY3QuaAkod29ya2luZyBjb3B5KQpAQCAtNDQsMTAgKzQ0LDEw
IEBAIG5hbWVzcGFjZSBKU0N7CiAgICAgICAgIHN0YXRpYyB2b2lkIHZpc2l0Q2hpbGRyZW4oSlND
ZWxsKiwgU2xvdFZpc2l0b3ImKTsKICAgICAgICAgYm9vbCBpc0R5bmFtaWNTY29wZShib29sJiBy
ZXF1aXJlc0R5bmFtaWNDaGVja3MpIGNvbnN0OwogICAgICAgICBzdGF0aWMgSlNPYmplY3QqIHRv
VGhpc09iamVjdChKU0NlbGwqLCBFeGVjU3RhdGUqKTsKLSAgICAgICAgc3RhdGljIGJvb2wgZ2V0
T3duUHJvcGVydHlTbG90KEpTQ2VsbCosIEV4ZWNTdGF0ZSosIGNvbnN0IElkZW50aWZpZXImLCBQ
cm9wZXJ0eVNsb3QmKTsKLSAgICAgICAgc3RhdGljIHZvaWQgcHV0KEpTQ2VsbCosIEV4ZWNTdGF0
ZSosIGNvbnN0IElkZW50aWZpZXImLCBKU1ZhbHVlLCBQdXRQcm9wZXJ0eVNsb3QmKTsKKyAgICAg
ICAgc3RhdGljIGJvb2wgZ2V0T3duUHJvcGVydHlTbG90KEpTQ2VsbCosIEV4ZWNTdGF0ZSosIFBy
b3BlcnR5TmFtZSwgUHJvcGVydHlTbG90Jik7CisgICAgICAgIHN0YXRpYyB2b2lkIHB1dChKU0Nl
bGwqLCBFeGVjU3RhdGUqLCBQcm9wZXJ0eU5hbWUsIEpTVmFsdWUsIFB1dFByb3BlcnR5U2xvdCYp
OwogCi0gICAgICAgIHN0YXRpYyB2b2lkIHB1dERpcmVjdFZpcnR1YWwoSlNPYmplY3QqLCBFeGVj
U3RhdGUqLCBjb25zdCBJZGVudGlmaWVyJiwgSlNWYWx1ZSwgdW5zaWduZWQgYXR0cmlidXRlcyk7
CisgICAgICAgIHN0YXRpYyB2b2lkIHB1dERpcmVjdFZpcnR1YWwoSlNPYmplY3QqLCBFeGVjU3Rh
dGUqLCBQcm9wZXJ0eU5hbWUsIEpTVmFsdWUsIHVuc2lnbmVkIGF0dHJpYnV0ZXMpOwogCiAgICAg
ICAgIHN0YXRpYyBTdHJ1Y3R1cmUqIGNyZWF0ZVN0cnVjdHVyZShKU0dsb2JhbERhdGEmIGdsb2Jh
bERhdGEsIEpTR2xvYmFsT2JqZWN0KiBnbG9iYWxPYmplY3QsIEpTVmFsdWUgcHJvdG8pIHsgcmV0
dXJuIFN0cnVjdHVyZTo6Y3JlYXRlKGdsb2JhbERhdGEsIGdsb2JhbE9iamVjdCwgcHJvdG8sIFR5
cGVJbmZvKFN0YXRpY1Njb3BlT2JqZWN0VHlwZSwgU3RydWN0dXJlRmxhZ3MpLCAmc19pbmZvKTsg
fQogCkluZGV4OiBTb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9KU1N0cmluZy5jcHAKPT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PQotLS0gU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvSlNTdHJpbmcuY3BwCShy
ZXZpc2lvbiAxMTY2NjcpCisrKyBTb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9KU1N0cmlu
Zy5jcHAJKHdvcmtpbmcgY29weSkKQEAgLTI1Nyw3ICsyNTcsNyBAQCBKU09iamVjdCogSlNTdHJp
bmc6OnRvVGhpc09iamVjdChKU0NlbGwqCiAgICAgcmV0dXJuIFN0cmluZ09iamVjdDo6Y3JlYXRl
KGV4ZWMsIGV4ZWMtPmxleGljYWxHbG9iYWxPYmplY3QoKSwganNDYXN0PEpTU3RyaW5nKj4oY2Vs
bCkpOwogfQogCi1ib29sIEpTU3RyaW5nOjpnZXRPd25Qcm9wZXJ0eVNsb3QoSlNDZWxsKiBjZWxs
LCBFeGVjU3RhdGUqIGV4ZWMsIGNvbnN0IElkZW50aWZpZXImIHByb3BlcnR5TmFtZSwgUHJvcGVy
dHlTbG90JiBzbG90KQorYm9vbCBKU1N0cmluZzo6Z2V0T3duUHJvcGVydHlTbG90KEpTQ2VsbCog
Y2VsbCwgRXhlY1N0YXRlKiBleGVjLCBQcm9wZXJ0eU5hbWUgcHJvcGVydHlOYW1lLCBQcm9wZXJ0
eVNsb3QmIHNsb3QpCiB7CiAgICAgSlNTdHJpbmcqIHRoaXNPYmplY3QgPSBqc0Nhc3Q8SlNTdHJp
bmcqPihjZWxsKTsKICAgICAvLyBUaGUgc2VtYW50aWNzIGhlcmUgYXJlIHJlYWxseSBnZXRQcm9w
ZXJ0eVNsb3QsIG5vdCBnZXRPd25Qcm9wZXJ0eVNsb3QuCkBAIC0yNzUsMTYgKzI3NSwxNiBAQCBi
b29sIEpTU3RyaW5nOjpnZXRPd25Qcm9wZXJ0eVNsb3QoSlNDZWxsCiAgICAgcmV0dXJuIHRydWU7
CiB9CiAKLWJvb2wgSlNTdHJpbmc6OmdldFN0cmluZ1Byb3BlcnR5RGVzY3JpcHRvcihFeGVjU3Rh
dGUqIGV4ZWMsIGNvbnN0IElkZW50aWZpZXImIHByb3BlcnR5TmFtZSwgUHJvcGVydHlEZXNjcmlw
dG9yJiBkZXNjcmlwdG9yKQorYm9vbCBKU1N0cmluZzo6Z2V0U3RyaW5nUHJvcGVydHlEZXNjcmlw
dG9yKEV4ZWNTdGF0ZSogZXhlYywgUHJvcGVydHlOYW1lIHByb3BlcnR5TmFtZSwgUHJvcGVydHlE
ZXNjcmlwdG9yJiBkZXNjcmlwdG9yKQogewogICAgIGlmIChwcm9wZXJ0eU5hbWUgPT0gZXhlYy0+
cHJvcGVydHlOYW1lcygpLmxlbmd0aCkgewogICAgICAgICBkZXNjcmlwdG9yLnNldERlc2NyaXB0
b3IoanNOdW1iZXIobV9sZW5ndGgpLCBEb250RW51bSB8IERvbnREZWxldGUgfCBSZWFkT25seSk7
CiAgICAgICAgIHJldHVybiB0cnVlOwogICAgIH0KICAgICAKLSAgICBib29sIGlzU3RyaWN0VUlu
dDMyOwotICAgIHVuc2lnbmVkIGkgPSBwcm9wZXJ0eU5hbWUudG9VSW50MzIoaXNTdHJpY3RVSW50
MzIpOwotICAgIGlmIChpc1N0cmljdFVJbnQzMiAmJiBpIDwgbV9sZW5ndGgpIHsKKyAgICB1bnNp
Z25lZCBpID0gcHJvcGVydHlOYW1lLmFzSW5kZXgoKTsKKyAgICBpZiAoaSA8IG1fbGVuZ3RoKSB7
CisgICAgICAgIEFTU0VSVChpICE9IFByb3BlcnR5TmFtZTo6Tm90QW5JbmRleCk7IC8vIE5vIG5l
ZWQgZm9yIGFuIGV4cGxpY2l0IGNoZWNrLCB0aGUgYWJvdmUgdGVzdCB3b3VsZCBhbHdheXMgZmFp
bCEKICAgICAgICAgZGVzY3JpcHRvci5zZXREZXNjcmlwdG9yKGdldEluZGV4KGV4ZWMsIGkpLCBE
b250RGVsZXRlIHwgUmVhZE9ubHkpOwogICAgICAgICByZXR1cm4gdHJ1ZTsKICAgICB9CkluZGV4
OiBTb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9KU1N0cmluZy5oCj09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0t
IFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL0pTU3RyaW5nLmgJKHJldmlzaW9uIDExNjY2
NykKKysrIFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL0pTU3RyaW5nLmgJKHdvcmtpbmcg
Y29weSkKQEAgLTE0Myw5ICsxNDMsOSBAQCBuYW1lc3BhY2UgSlNDIHsKICAgICAgICAgSlNPYmpl
Y3QqIHRvT2JqZWN0KEV4ZWNTdGF0ZSosIEpTR2xvYmFsT2JqZWN0KikgY29uc3Q7CiAgICAgICAg
IGRvdWJsZSB0b051bWJlcihFeGVjU3RhdGUqKSBjb25zdDsKICAgICAgICAgCi0gICAgICAgIGJv
b2wgZ2V0U3RyaW5nUHJvcGVydHlTbG90KEV4ZWNTdGF0ZSosIGNvbnN0IElkZW50aWZpZXImIHBy
b3BlcnR5TmFtZSwgUHJvcGVydHlTbG90Jik7CisgICAgICAgIGJvb2wgZ2V0U3RyaW5nUHJvcGVy
dHlTbG90KEV4ZWNTdGF0ZSosIFByb3BlcnR5TmFtZSwgUHJvcGVydHlTbG90Jik7CiAgICAgICAg
IGJvb2wgZ2V0U3RyaW5nUHJvcGVydHlTbG90KEV4ZWNTdGF0ZSosIHVuc2lnbmVkIHByb3BlcnR5
TmFtZSwgUHJvcGVydHlTbG90Jik7Ci0gICAgICAgIGJvb2wgZ2V0U3RyaW5nUHJvcGVydHlEZXNj
cmlwdG9yKEV4ZWNTdGF0ZSosIGNvbnN0IElkZW50aWZpZXImIHByb3BlcnR5TmFtZSwgUHJvcGVy
dHlEZXNjcmlwdG9yJik7CisgICAgICAgIGJvb2wgZ2V0U3RyaW5nUHJvcGVydHlEZXNjcmlwdG9y
KEV4ZWNTdGF0ZSosIFByb3BlcnR5TmFtZSwgUHJvcGVydHlEZXNjcmlwdG9yJik7CiAKICAgICAg
ICAgYm9vbCBjYW5HZXRJbmRleCh1bnNpZ25lZCBpKSB7IHJldHVybiBpIDwgbV9sZW5ndGg7IH0K
ICAgICAgICAgSlNTdHJpbmcqIGdldEluZGV4KEV4ZWNTdGF0ZSosIHVuc2lnbmVkKTsKQEAgLTE4
MSw3ICsxODEsNyBAQCBuYW1lc3BhY2UgSlNDIHsKICAgICAgICAgc3RhdGljIEpTT2JqZWN0KiB0
b1RoaXNPYmplY3QoSlNDZWxsKiwgRXhlY1N0YXRlKik7CiAKICAgICAgICAgLy8gQWN0dWFsbHkg
Z2V0UHJvcGVydHlTbG90LCBub3QgZ2V0T3duUHJvcGVydHlTbG90IChzZWUgSlNDZWxsKS4KLSAg
ICAgICAgc3RhdGljIGJvb2wgZ2V0T3duUHJvcGVydHlTbG90KEpTQ2VsbCosIEV4ZWNTdGF0ZSos
IGNvbnN0IElkZW50aWZpZXImIHByb3BlcnR5TmFtZSwgUHJvcGVydHlTbG90Jik7CisgICAgICAg
IHN0YXRpYyBib29sIGdldE93blByb3BlcnR5U2xvdChKU0NlbGwqLCBFeGVjU3RhdGUqLCBQcm9w
ZXJ0eU5hbWUsIFByb3BlcnR5U2xvdCYpOwogICAgICAgICBzdGF0aWMgYm9vbCBnZXRPd25Qcm9w
ZXJ0eVNsb3RCeUluZGV4KEpTQ2VsbCosIEV4ZWNTdGF0ZSosIHVuc2lnbmVkIHByb3BlcnR5TmFt
ZSwgUHJvcGVydHlTbG90Jik7CiAKICAgICAgICAgVVN0cmluZyYgc3RyaW5nKCkgeyBBU1NFUlQo
IWlzUm9wZSgpKTsgcmV0dXJuIG1fdmFsdWU7IH0KQEAgLTQ0OSwxNiArNDQ5LDE2IEBAIG5hbWVz
cGFjZSBKU0MgewogICAgIGlubGluZSBKU1N0cmluZyoganNOb250cml2aWFsU3RyaW5nKEV4ZWNT
dGF0ZSogZXhlYywgY29uc3QgY2hhciogcykgeyByZXR1cm4ganNOb250cml2aWFsU3RyaW5nKCZl
eGVjLT5nbG9iYWxEYXRhKCksIHMpOyB9CiAgICAgaW5saW5lIEpTU3RyaW5nKiBqc093bmVkU3Ry
aW5nKEV4ZWNTdGF0ZSogZXhlYywgY29uc3QgVVN0cmluZyYgcykgeyByZXR1cm4ganNPd25lZFN0
cmluZygmZXhlYy0+Z2xvYmFsRGF0YSgpLCBzKTsgfSAKIAotICAgIEFMV0FZU19JTkxJTkUgYm9v
bCBKU1N0cmluZzo6Z2V0U3RyaW5nUHJvcGVydHlTbG90KEV4ZWNTdGF0ZSogZXhlYywgY29uc3Qg
SWRlbnRpZmllciYgcHJvcGVydHlOYW1lLCBQcm9wZXJ0eVNsb3QmIHNsb3QpCisgICAgQUxXQVlT
X0lOTElORSBib29sIEpTU3RyaW5nOjpnZXRTdHJpbmdQcm9wZXJ0eVNsb3QoRXhlY1N0YXRlKiBl
eGVjLCBQcm9wZXJ0eU5hbWUsIFByb3BlcnR5U2xvdCYgc2xvdCkKICAgICB7CiAgICAgICAgIGlm
IChwcm9wZXJ0eU5hbWUgPT0gZXhlYy0+cHJvcGVydHlOYW1lcygpLmxlbmd0aCkgewogICAgICAg
ICAgICAgc2xvdC5zZXRWYWx1ZShqc051bWJlcihtX2xlbmd0aCkpOwogICAgICAgICAgICAgcmV0
dXJuIHRydWU7CiAgICAgICAgIH0KIAotICAgICAgICBib29sIGlzU3RyaWN0VUludDMyOwotICAg
ICAgICB1bnNpZ25lZCBpID0gcHJvcGVydHlOYW1lLnRvVUludDMyKGlzU3RyaWN0VUludDMyKTsK
LSAgICAgICAgaWYgKGlzU3RyaWN0VUludDMyICYmIGkgPCBtX2xlbmd0aCkgeworICAgICAgICB1
bnNpZ25lZCBpID0gcHJvcGVydHlOYW1lLmFzSW5kZXgoKTsKKyAgICAgICAgaWYgKGkgPCBtX2xl
bmd0aCkgeworICAgICAgICAgICAgQVNTRVJUKGkgIT0gUHJvcGVydHlOYW1lOjpOb3RBbkluZGV4
KTsgLy8gTm8gbmVlZCBmb3IgYW4gZXhwbGljaXQgY2hlY2ssIHRoZSBhYm92ZSB0ZXN0IHdvdWxk
IGFsd2F5cyBmYWlsIQogICAgICAgICAgICAgc2xvdC5zZXRWYWx1ZShnZXRJbmRleChleGVjLCBp
KSk7CiAgICAgICAgICAgICByZXR1cm4gdHJ1ZTsKICAgICAgICAgfQpJbmRleDogU291cmNlL0ph
dmFTY3JpcHRDb3JlL3J1bnRpbWUvSlNWYWx1ZS5jcHAKPT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL0ph
dmFTY3JpcHRDb3JlL3J1bnRpbWUvSlNWYWx1ZS5jcHAJKHJldmlzaW9uIDExNjY2NykKKysrIFNv
dXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL0pTVmFsdWUuY3BwCSh3b3JraW5nIGNvcHkpCkBA
IC0xMDksNyArMTA5LDcgQEAgSlNPYmplY3QqIEpTVmFsdWU6OnN5bnRoZXNpemVQcm90b3R5cGUo
RQogfQogCiAvLyBFQ01BIDguNy4yCi12b2lkIEpTVmFsdWU6OnB1dFRvUHJpbWl0aXZlKEV4ZWNT
dGF0ZSogZXhlYywgY29uc3QgSWRlbnRpZmllciYgcHJvcGVydHlOYW1lLCBKU1ZhbHVlIHZhbHVl
LCBQdXRQcm9wZXJ0eVNsb3QmIHNsb3QpCit2b2lkIEpTVmFsdWU6OnB1dFRvUHJpbWl0aXZlKEV4
ZWNTdGF0ZSogZXhlYywgUHJvcGVydHlOYW1lIHByb3BlcnR5TmFtZSwgSlNWYWx1ZSB2YWx1ZSwg
UHV0UHJvcGVydHlTbG90JiBzbG90KQogewogICAgIEpTR2xvYmFsRGF0YSYgZ2xvYmFsRGF0YSA9
IGV4ZWMtPmdsb2JhbERhdGEoKTsKIApJbmRleDogU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRp
bWUvSlNWYWx1ZS5oCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1l
L0pTVmFsdWUuaAkocmV2aXNpb24gMTE2NjY3KQorKysgU291cmNlL0phdmFTY3JpcHRDb3JlL3J1
bnRpbWUvSlNWYWx1ZS5oCSh3b3JraW5nIGNvcHkpCkBAIC0zNiwxMiArMzYsMTIgQEAKIG5hbWVz
cGFjZSBKU0MgewogCiAgICAgY2xhc3MgRXhlY1N0YXRlOwotICAgIGNsYXNzIElkZW50aWZpZXI7
CiAgICAgY2xhc3MgSlNDZWxsOwogICAgIGNsYXNzIEpTR2xvYmFsRGF0YTsKICAgICBjbGFzcyBK
U0dsb2JhbE9iamVjdDsKICAgICBjbGFzcyBKU09iamVjdDsKICAgICBjbGFzcyBKU1N0cmluZzsK
KyAgICBjbGFzcyBQcm9wZXJ0eU5hbWU7CiAgICAgY2xhc3MgUHJvcGVydHlTbG90OwogICAgIGNs
YXNzIFB1dFByb3BlcnR5U2xvdDsKICAgICBjbGFzcyBVU3RyaW5nOwpAQCAtMjE5LDEyICsyMTks
MTIgQEAgbmFtZXNwYWNlIEpTQyB7CiAgICAgICAgIGZsb2F0IHRvRmxvYXQoRXhlY1N0YXRlKiBl
eGVjKSBjb25zdCB7IHJldHVybiBzdGF0aWNfY2FzdDxmbG9hdD4odG9OdW1iZXIoZXhlYykpOyB9
CiAKICAgICAgICAgLy8gT2JqZWN0IG9wZXJhdGlvbnMsIHdpdGggdGhlIHRvT2JqZWN0IG9wZXJh
dGlvbiBpbmNsdWRlZC4KLSAgICAgICAgSlNWYWx1ZSBnZXQoRXhlY1N0YXRlKiwgY29uc3QgSWRl
bnRpZmllciYgcHJvcGVydHlOYW1lKSBjb25zdDsKLSAgICAgICAgSlNWYWx1ZSBnZXQoRXhlY1N0
YXRlKiwgY29uc3QgSWRlbnRpZmllciYgcHJvcGVydHlOYW1lLCBQcm9wZXJ0eVNsb3QmKSBjb25z
dDsKKyAgICAgICAgSlNWYWx1ZSBnZXQoRXhlY1N0YXRlKiwgUHJvcGVydHlOYW1lKSBjb25zdDsK
KyAgICAgICAgSlNWYWx1ZSBnZXQoRXhlY1N0YXRlKiwgUHJvcGVydHlOYW1lLCBQcm9wZXJ0eVNs
b3QmKSBjb25zdDsKICAgICAgICAgSlNWYWx1ZSBnZXQoRXhlY1N0YXRlKiwgdW5zaWduZWQgcHJv
cGVydHlOYW1lKSBjb25zdDsKICAgICAgICAgSlNWYWx1ZSBnZXQoRXhlY1N0YXRlKiwgdW5zaWdu
ZWQgcHJvcGVydHlOYW1lLCBQcm9wZXJ0eVNsb3QmKSBjb25zdDsKLSAgICAgICAgdm9pZCBwdXQo
RXhlY1N0YXRlKiwgY29uc3QgSWRlbnRpZmllciYgcHJvcGVydHlOYW1lLCBKU1ZhbHVlLCBQdXRQ
cm9wZXJ0eVNsb3QmKTsKLSAgICAgICAgdm9pZCBwdXRUb1ByaW1pdGl2ZShFeGVjU3RhdGUqLCBj
b25zdCBJZGVudGlmaWVyJiBwcm9wZXJ0eU5hbWUsIEpTVmFsdWUsIFB1dFByb3BlcnR5U2xvdCYp
OworICAgICAgICB2b2lkIHB1dChFeGVjU3RhdGUqLCBQcm9wZXJ0eU5hbWUsIEpTVmFsdWUsIFB1
dFByb3BlcnR5U2xvdCYpOworICAgICAgICB2b2lkIHB1dFRvUHJpbWl0aXZlKEV4ZWNTdGF0ZSos
IFByb3BlcnR5TmFtZSwgSlNWYWx1ZSwgUHV0UHJvcGVydHlTbG90Jik7CiAgICAgICAgIHZvaWQg
cHV0QnlJbmRleChFeGVjU3RhdGUqLCB1bnNpZ25lZCBwcm9wZXJ0eU5hbWUsIEpTVmFsdWUsIGJv
b2wgc2hvdWxkVGhyb3cpOwogCiAgICAgICAgIEpTT2JqZWN0KiB0b1RoaXNPYmplY3QoRXhlY1N0
YXRlKikgY29uc3Q7CkluZGV4OiBTb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9KU1Zhcmlh
YmxlT2JqZWN0LmNwcAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGlt
ZS9KU1ZhcmlhYmxlT2JqZWN0LmNwcAkocmV2aXNpb24gMTE2NjY3KQorKysgU291cmNlL0phdmFT
Y3JpcHRDb3JlL3J1bnRpbWUvSlNWYXJpYWJsZU9iamVjdC5jcHAJKHdvcmtpbmcgY29weSkKQEAg
LTQyLDcgKzQyLDcgQEAgdm9pZCBKU1ZhcmlhYmxlT2JqZWN0OjpkZXN0cm95KEpTQ2VsbCogYwog
ICAgIGpzQ2FzdDxKU1ZhcmlhYmxlT2JqZWN0Kj4oY2VsbCktPkpTVmFyaWFibGVPYmplY3Q6On5K
U1ZhcmlhYmxlT2JqZWN0KCk7CiB9CiAKLWJvb2wgSlNWYXJpYWJsZU9iamVjdDo6ZGVsZXRlUHJv
cGVydHkoSlNDZWxsKiBjZWxsLCBFeGVjU3RhdGUqIGV4ZWMsIGNvbnN0IElkZW50aWZpZXImIHBy
b3BlcnR5TmFtZSkKK2Jvb2wgSlNWYXJpYWJsZU9iamVjdDo6ZGVsZXRlUHJvcGVydHkoSlNDZWxs
KiBjZWxsLCBFeGVjU3RhdGUqIGV4ZWMsIFByb3BlcnR5TmFtZSBwcm9wZXJ0eU5hbWUpCiB7CiAg
ICAgSlNWYXJpYWJsZU9iamVjdCogdGhpc09iamVjdCA9IGpzQ2FzdDxKU1ZhcmlhYmxlT2JqZWN0
Kj4oY2VsbCk7CiAgICAgaWYgKHRoaXNPYmplY3QtPnN5bWJvbFRhYmxlKCkuY29udGFpbnMocHJv
cGVydHlOYW1lLmltcGwoKSkpCkBAIC02Myw3ICs2Myw3IEBAIHZvaWQgSlNWYXJpYWJsZU9iamVj
dDo6Z2V0T3duUHJvcGVydHlOYW0KICAgICBKU09iamVjdDo6Z2V0T3duUHJvcGVydHlOYW1lcyh0
aGlzT2JqZWN0LCBleGVjLCBwcm9wZXJ0eU5hbWVzLCBtb2RlKTsKIH0KIAotYm9vbCBKU1Zhcmlh
YmxlT2JqZWN0OjpzeW1ib2xUYWJsZUdldChjb25zdCBJZGVudGlmaWVyJiBwcm9wZXJ0eU5hbWUs
IFByb3BlcnR5RGVzY3JpcHRvciYgZGVzY3JpcHRvcikKK2Jvb2wgSlNWYXJpYWJsZU9iamVjdDo6
c3ltYm9sVGFibGVHZXQoUHJvcGVydHlOYW1lIHByb3BlcnR5TmFtZSwgUHJvcGVydHlEZXNjcmlw
dG9yJiBkZXNjcmlwdG9yKQogewogICAgIFN5bWJvbFRhYmxlRW50cnkgZW50cnkgPSBzeW1ib2xU
YWJsZSgpLmlubGluZUdldChwcm9wZXJ0eU5hbWUuaW1wbCgpKTsKICAgICBpZiAoIWVudHJ5Lmlz
TnVsbCgpKSB7CkBAIC03Myw3ICs3Myw3IEBAIGJvb2wgSlNWYXJpYWJsZU9iamVjdDo6c3ltYm9s
VGFibGVHZXQoY28KICAgICByZXR1cm4gZmFsc2U7CiB9CiAKLXZvaWQgSlNWYXJpYWJsZU9iamVj
dDo6cHV0RGlyZWN0VmlydHVhbChKU09iamVjdCosIEV4ZWNTdGF0ZSosIGNvbnN0IElkZW50aWZp
ZXImLCBKU1ZhbHVlLCB1bnNpZ25lZCkKK3ZvaWQgSlNWYXJpYWJsZU9iamVjdDo6cHV0RGlyZWN0
VmlydHVhbChKU09iamVjdCosIEV4ZWNTdGF0ZSosIFByb3BlcnR5TmFtZSwgSlNWYWx1ZSwgdW5z
aWduZWQpCiB7CiAgICAgQVNTRVJUX05PVF9SRUFDSEVEKCk7CiB9CkluZGV4OiBTb3VyY2UvSmF2
YVNjcmlwdENvcmUvcnVudGltZS9KU1ZhcmlhYmxlT2JqZWN0LmgKPT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291
cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvSlNWYXJpYWJsZU9iamVjdC5oCShyZXZpc2lvbiAx
MTY2NjcpCisrKyBTb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9KU1ZhcmlhYmxlT2JqZWN0
LmgJKHdvcmtpbmcgY29weSkKQEAgLTUyLDkgKzUyLDkgQEAgbmFtZXNwYWNlIEpTQyB7CiAKICAg
ICAgICAgSlNfRVhQT1JUX1BSSVZBVEUgc3RhdGljIHZvaWQgZGVzdHJveShKU0NlbGwqKTsKIAot
ICAgICAgICBzdGF0aWMgTk9fUkVUVVJOX0RVRV9UT19BU1NFUlQgdm9pZCBwdXREaXJlY3RWaXJ0
dWFsKEpTT2JqZWN0KiwgRXhlY1N0YXRlKiwgY29uc3QgSWRlbnRpZmllciYsIEpTVmFsdWUsIHVu
c2lnbmVkIGF0dHJpYnV0ZXMpOworICAgICAgICBzdGF0aWMgTk9fUkVUVVJOX0RVRV9UT19BU1NF
UlQgdm9pZCBwdXREaXJlY3RWaXJ0dWFsKEpTT2JqZWN0KiwgRXhlY1N0YXRlKiwgUHJvcGVydHlO
YW1lLCBKU1ZhbHVlLCB1bnNpZ25lZCBhdHRyaWJ1dGVzKTsKIAotICAgICAgICBKU19FWFBPUlRf
UFJJVkFURSBzdGF0aWMgYm9vbCBkZWxldGVQcm9wZXJ0eShKU0NlbGwqLCBFeGVjU3RhdGUqLCBj
b25zdCBJZGVudGlmaWVyJik7CisgICAgICAgIEpTX0VYUE9SVF9QUklWQVRFIHN0YXRpYyBib29s
IGRlbGV0ZVByb3BlcnR5KEpTQ2VsbCosIEV4ZWNTdGF0ZSosIFByb3BlcnR5TmFtZSk7CiAgICAg
ICAgIEpTX0VYUE9SVF9QUklWQVRFIHN0YXRpYyB2b2lkIGdldE93blByb3BlcnR5TmFtZXMoSlNP
YmplY3QqLCBFeGVjU3RhdGUqLCBQcm9wZXJ0eU5hbWVBcnJheSYsIEVudW1lcmF0aW9uTW9kZSk7
CiAgICAgICAgIAogICAgICAgICBib29sIGlzRHluYW1pY1Njb3BlKGJvb2wmIHJlcXVpcmVzRHlu
YW1pY0NoZWNrcykgY29uc3Q7CkBAIC04OSwxOCArODksMTggQEAgbmFtZXNwYWNlIEpTQyB7CiAg
ICAgICAgIFBhc3NPd25BcnJheVB0cjxXcml0ZUJhcnJpZXI8VW5rbm93bj4gPiBjb3B5UmVnaXN0
ZXJBcnJheShKU0dsb2JhbERhdGEmLCBXcml0ZUJhcnJpZXI8VW5rbm93bj4qIHNyYywgc2l6ZV90
IGNvdW50LCBzaXplX3QgY2FsbGZyYW1lU3RhcnRzKTsKICAgICAgICAgdm9pZCBzZXRSZWdpc3Rl
cnMoV3JpdGVCYXJyaWVyPFVua25vd24+KiByZWdpc3RlcnMsIFBhc3NPd25BcnJheVB0cjxXcml0
ZUJhcnJpZXI8VW5rbm93bj4gPiByZWdpc3RlckFycmF5KTsKIAotICAgICAgICBib29sIHN5bWJv
bFRhYmxlR2V0KGNvbnN0IElkZW50aWZpZXImLCBQcm9wZXJ0eVNsb3QmKTsKLSAgICAgICAgSlNf
RVhQT1JUX1BSSVZBVEUgYm9vbCBzeW1ib2xUYWJsZUdldChjb25zdCBJZGVudGlmaWVyJiwgUHJv
cGVydHlEZXNjcmlwdG9yJik7Ci0gICAgICAgIGJvb2wgc3ltYm9sVGFibGVHZXQoY29uc3QgSWRl
bnRpZmllciYsIFByb3BlcnR5U2xvdCYsIGJvb2wmIHNsb3RJc1dyaXRlYWJsZSk7Ci0gICAgICAg
IGJvb2wgc3ltYm9sVGFibGVQdXQoRXhlY1N0YXRlKiwgY29uc3QgSWRlbnRpZmllciYsIEpTVmFs
dWUsIGJvb2wgc2hvdWxkVGhyb3cpOwotICAgICAgICBib29sIHN5bWJvbFRhYmxlUHV0V2l0aEF0
dHJpYnV0ZXMoSlNHbG9iYWxEYXRhJiwgY29uc3QgSWRlbnRpZmllciYsIEpTVmFsdWUsIHVuc2ln
bmVkIGF0dHJpYnV0ZXMpOworICAgICAgICBib29sIHN5bWJvbFRhYmxlR2V0KFByb3BlcnR5TmFt
ZSwgUHJvcGVydHlTbG90Jik7CisgICAgICAgIEpTX0VYUE9SVF9QUklWQVRFIGJvb2wgc3ltYm9s
VGFibGVHZXQoUHJvcGVydHlOYW1lLCBQcm9wZXJ0eURlc2NyaXB0b3ImKTsKKyAgICAgICAgYm9v
bCBzeW1ib2xUYWJsZUdldChQcm9wZXJ0eU5hbWUsIFByb3BlcnR5U2xvdCYsIGJvb2wmIHNsb3RJ
c1dyaXRlYWJsZSk7CisgICAgICAgIGJvb2wgc3ltYm9sVGFibGVQdXQoRXhlY1N0YXRlKiwgUHJv
cGVydHlOYW1lLCBKU1ZhbHVlLCBib29sIHNob3VsZFRocm93KTsKKyAgICAgICAgYm9vbCBzeW1i
b2xUYWJsZVB1dFdpdGhBdHRyaWJ1dGVzKEpTR2xvYmFsRGF0YSYsIFByb3BlcnR5TmFtZSwgSlNW
YWx1ZSwgdW5zaWduZWQgYXR0cmlidXRlcyk7CiAKICAgICAgICAgU3ltYm9sVGFibGUqIG1fc3lt
Ym9sVGFibGU7IC8vIE1hcHMgbmFtZSAtPiBvZmZzZXQgZnJvbSAiciIgaW4gcmVnaXN0ZXIgZmls
ZS4KICAgICAgICAgV3JpdGVCYXJyaWVyPFVua25vd24+KiBtX3JlZ2lzdGVyczsgLy8gInIiIGlu
IHRoZSByZWdpc3RlciBmaWxlLgogICAgICAgICBPd25BcnJheVB0cjxXcml0ZUJhcnJpZXI8VW5r
bm93bj4gPiBtX3JlZ2lzdGVyQXJyYXk7IC8vIEluZGVwZW5kZW50IGNvcHkgb2YgcmVnaXN0ZXJz
LCB1c2VkIHdoZW4gYSB2YXJpYWJsZSBvYmplY3QgY29waWVzIGl0cyByZWdpc3RlcnMgb3V0IG9m
IHRoZSByZWdpc3RlciBmaWxlLgogICAgIH07CiAKLSAgICBpbmxpbmUgYm9vbCBKU1ZhcmlhYmxl
T2JqZWN0OjpzeW1ib2xUYWJsZUdldChjb25zdCBJZGVudGlmaWVyJiBwcm9wZXJ0eU5hbWUsIFBy
b3BlcnR5U2xvdCYgc2xvdCkKKyAgICBpbmxpbmUgYm9vbCBKU1ZhcmlhYmxlT2JqZWN0OjpzeW1i
b2xUYWJsZUdldChQcm9wZXJ0eU5hbWUgcHJvcGVydHlOYW1lLCBQcm9wZXJ0eVNsb3QmIHNsb3Qp
CiAgICAgewogICAgICAgICBTeW1ib2xUYWJsZUVudHJ5IGVudHJ5ID0gc3ltYm9sVGFibGUoKS5p
bmxpbmVHZXQocHJvcGVydHlOYW1lLmltcGwoKSk7CiAgICAgICAgIGlmICghZW50cnkuaXNOdWxs
KCkpIHsKQEAgLTExMCw3ICsxMTAsNyBAQCBuYW1lc3BhY2UgSlNDIHsKICAgICAgICAgcmV0dXJu
IGZhbHNlOwogICAgIH0KIAotICAgIGlubGluZSBib29sIEpTVmFyaWFibGVPYmplY3Q6OnN5bWJv
bFRhYmxlR2V0KGNvbnN0IElkZW50aWZpZXImIHByb3BlcnR5TmFtZSwgUHJvcGVydHlTbG90JiBz
bG90LCBib29sJiBzbG90SXNXcml0ZWFibGUpCisgICAgaW5saW5lIGJvb2wgSlNWYXJpYWJsZU9i
amVjdDo6c3ltYm9sVGFibGVHZXQoUHJvcGVydHlOYW1lIHByb3BlcnR5TmFtZSwgUHJvcGVydHlT
bG90JiBzbG90LCBib29sJiBzbG90SXNXcml0ZWFibGUpCiAgICAgewogICAgICAgICBTeW1ib2xU
YWJsZUVudHJ5IGVudHJ5ID0gc3ltYm9sVGFibGUoKS5pbmxpbmVHZXQocHJvcGVydHlOYW1lLmlt
cGwoKSk7CiAgICAgICAgIGlmICghZW50cnkuaXNOdWxsKCkpIHsKQEAgLTEyMSw3ICsxMjEsNyBA
QCBuYW1lc3BhY2UgSlNDIHsKICAgICAgICAgcmV0dXJuIGZhbHNlOwogICAgIH0KIAotICAgIGlu
bGluZSBib29sIEpTVmFyaWFibGVPYmplY3Q6OnN5bWJvbFRhYmxlUHV0KEV4ZWNTdGF0ZSogZXhl
YywgY29uc3QgSWRlbnRpZmllciYgcHJvcGVydHlOYW1lLCBKU1ZhbHVlIHZhbHVlLCBib29sIHNo
b3VsZFRocm93KQorICAgIGlubGluZSBib29sIEpTVmFyaWFibGVPYmplY3Q6OnN5bWJvbFRhYmxl
UHV0KEV4ZWNTdGF0ZSogZXhlYywgUHJvcGVydHlOYW1lIHByb3BlcnR5TmFtZSwgSlNWYWx1ZSB2
YWx1ZSwgYm9vbCBzaG91bGRUaHJvdykKICAgICB7CiAgICAgICAgIEpTR2xvYmFsRGF0YSYgZ2xv
YmFsRGF0YSA9IGV4ZWMtPmdsb2JhbERhdGEoKTsKICAgICAgICAgQVNTRVJUKCFIZWFwOjpoZWFw
KHZhbHVlKSB8fCBIZWFwOjpoZWFwKHZhbHVlKSA9PSBIZWFwOjpoZWFwKHRoaXMpKTsKQEAgLTEz
OCw3ICsxMzgsNyBAQCBuYW1lc3BhY2UgSlNDIHsKICAgICAgICAgcmV0dXJuIHRydWU7CiAgICAg
fQogCi0gICAgaW5saW5lIGJvb2wgSlNWYXJpYWJsZU9iamVjdDo6c3ltYm9sVGFibGVQdXRXaXRo
QXR0cmlidXRlcyhKU0dsb2JhbERhdGEmIGdsb2JhbERhdGEsIGNvbnN0IElkZW50aWZpZXImIHBy
b3BlcnR5TmFtZSwgSlNWYWx1ZSB2YWx1ZSwgdW5zaWduZWQgYXR0cmlidXRlcykKKyAgICBpbmxp
bmUgYm9vbCBKU1ZhcmlhYmxlT2JqZWN0OjpzeW1ib2xUYWJsZVB1dFdpdGhBdHRyaWJ1dGVzKEpT
R2xvYmFsRGF0YSYgZ2xvYmFsRGF0YSwgUHJvcGVydHlOYW1lIHByb3BlcnR5TmFtZSwgSlNWYWx1
ZSB2YWx1ZSwgdW5zaWduZWQgYXR0cmlidXRlcykKICAgICB7CiAgICAgICAgIEFTU0VSVCghSGVh
cDo6aGVhcCh2YWx1ZSkgfHwgSGVhcDo6aGVhcCh2YWx1ZSkgPT0gSGVhcDo6aGVhcCh0aGlzKSk7
CiAKSW5kZXg6IFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL0xvb2t1cC5jcHAKPT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PQotLS0gU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvTG9va3VwLmNwcAkocmV2aXNp
b24gMTE2NjY3KQorKysgU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvTG9va3VwLmNwcAko
d29ya2luZyBjb3B5KQpAQCAtNjQsNyArNjQsNyBAQCB2b2lkIEhhc2hUYWJsZTo6ZGVsZXRlVGFi
bGUoKSBjb25zdAogICAgIH0KIH0KIAotYm9vbCBzZXRVcFN0YXRpY0Z1bmN0aW9uU2xvdChFeGVj
U3RhdGUqIGV4ZWMsIGNvbnN0IEhhc2hFbnRyeSogZW50cnksIEpTT2JqZWN0KiB0aGlzT2JqLCBj
b25zdCBJZGVudGlmaWVyJiBwcm9wZXJ0eU5hbWUsIFByb3BlcnR5U2xvdCYgc2xvdCkKK2Jvb2wg
c2V0VXBTdGF0aWNGdW5jdGlvblNsb3QoRXhlY1N0YXRlKiBleGVjLCBjb25zdCBIYXNoRW50cnkq
IGVudHJ5LCBKU09iamVjdCogdGhpc09iaiwgUHJvcGVydHlOYW1lIHByb3BlcnR5TmFtZSwgUHJv
cGVydHlTbG90JiBzbG90KQogewogICAgIEFTU0VSVCh0aGlzT2JqLT5nbG9iYWxPYmplY3QoKSk7
CiAgICAgQVNTRVJUKGVudHJ5LT5hdHRyaWJ1dGVzKCkgJiBGdW5jdGlvbik7CkBAIC03Niw3ICs3
Niw3IEBAIGJvb2wgc2V0VXBTdGF0aWNGdW5jdGlvblNsb3QoRXhlY1N0YXRlKiAKICAgICAgICAg
aWYgKHRoaXNPYmotPnN0YXRpY0Z1bmN0aW9uc1JlaWZpZWQoKSkKICAgICAgICAgICAgIHJldHVy
biBmYWxzZTsKICAgICAKLSAgICAgICAgSlNGdW5jdGlvbiogZnVuY3Rpb24gPSBKU0Z1bmN0aW9u
OjpjcmVhdGUoZXhlYywgdGhpc09iai0+Z2xvYmFsT2JqZWN0KCksIGVudHJ5LT5mdW5jdGlvbkxl
bmd0aCgpLCBwcm9wZXJ0eU5hbWUsIGVudHJ5LT5mdW5jdGlvbigpLCBlbnRyeS0+aW50cmluc2lj
KCkpOworICAgICAgICBKU0Z1bmN0aW9uKiBmdW5jdGlvbiA9IEpTRnVuY3Rpb246OmNyZWF0ZShl
eGVjLCB0aGlzT2JqLT5nbG9iYWxPYmplY3QoKSwgZW50cnktPmZ1bmN0aW9uTGVuZ3RoKCksIHBy
b3BlcnR5TmFtZS51c3RyaW5nKCksIGVudHJ5LT5mdW5jdGlvbigpLCBlbnRyeS0+aW50cmluc2lj
KCkpOwogICAgICAgICB0aGlzT2JqLT5wdXREaXJlY3QoZXhlYy0+Z2xvYmFsRGF0YSgpLCBwcm9w
ZXJ0eU5hbWUsIGZ1bmN0aW9uLCBlbnRyeS0+YXR0cmlidXRlcygpKTsKICAgICAgICAgbG9jYXRp
b24gPSB0aGlzT2JqLT5nZXREaXJlY3RMb2NhdGlvbihleGVjLT5nbG9iYWxEYXRhKCksIHByb3Bl
cnR5TmFtZSk7CiAgICAgfQpJbmRleDogU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvTG9v
a3VwLmgKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PQotLS0gU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvTG9va3Vw
LmgJKHJldmlzaW9uIDExNjY2NykKKysrIFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL0xv
b2t1cC5oCSh3b3JraW5nIGNvcHkpCkBAIC0xMjksMTMgKzEyOSwxMyBAQCBuYW1lc3BhY2UgSlND
IHsKICAgICAgICAgSlNfRVhQT1JUX1BSSVZBVEUgdm9pZCBkZWxldGVUYWJsZSgpIGNvbnN0Owog
CiAgICAgICAgIC8vIEZpbmQgYW4gZW50cnkgaW4gdGhlIHRhYmxlLCBhbmQgcmV0dXJuIHRoZSBl
bnRyeS4KLSAgICAgICAgQUxXQVlTX0lOTElORSBjb25zdCBIYXNoRW50cnkqIGVudHJ5KEpTR2xv
YmFsRGF0YSogZ2xvYmFsRGF0YSwgY29uc3QgSWRlbnRpZmllciYgaWRlbnRpZmllcikgY29uc3QK
KyAgICAgICAgQUxXQVlTX0lOTElORSBjb25zdCBIYXNoRW50cnkqIGVudHJ5KEpTR2xvYmFsRGF0
YSogZ2xvYmFsRGF0YSwgUHJvcGVydHlOYW1lIGlkZW50aWZpZXIpIGNvbnN0CiAgICAgICAgIHsK
ICAgICAgICAgICAgIGluaXRpYWxpemVJZk5lZWRlZChnbG9iYWxEYXRhKTsKICAgICAgICAgICAg
IHJldHVybiBlbnRyeShpZGVudGlmaWVyKTsKICAgICAgICAgfQogCi0gICAgICAgIEFMV0FZU19J
TkxJTkUgY29uc3QgSGFzaEVudHJ5KiBlbnRyeShFeGVjU3RhdGUqIGV4ZWMsIGNvbnN0IElkZW50
aWZpZXImIGlkZW50aWZpZXIpIGNvbnN0CisgICAgICAgIEFMV0FZU19JTkxJTkUgY29uc3QgSGFz
aEVudHJ5KiBlbnRyeShFeGVjU3RhdGUqIGV4ZWMsIFByb3BlcnR5TmFtZSBpZGVudGlmaWVyKSBj
b25zdAogICAgICAgICB7CiAgICAgICAgICAgICBpbml0aWFsaXplSWZOZWVkZWQoZXhlYyk7CiAg
ICAgICAgICAgICByZXR1cm4gZW50cnkoaWRlbnRpZmllcik7CkBAIC0xOTksNyArMTk5LDcgQEAg
bmFtZXNwYWNlIEpTQyB7CiAgICAgICAgIH0KIAogICAgIHByaXZhdGU6Ci0gICAgICAgIEFMV0FZ
U19JTkxJTkUgY29uc3QgSGFzaEVudHJ5KiBlbnRyeShjb25zdCBJZGVudGlmaWVyJiBpZGVudGlm
aWVyKSBjb25zdAorICAgICAgICBBTFdBWVNfSU5MSU5FIGNvbnN0IEhhc2hFbnRyeSogZW50cnko
UHJvcGVydHlOYW1lIGlkZW50aWZpZXIpIGNvbnN0CiAgICAgICAgIHsKICAgICAgICAgICAgIEFT
U0VSVCh0YWJsZSk7CiAKQEAgLTIyMSw3ICsyMjEsNyBAQCBuYW1lc3BhY2UgSlNDIHsKICAgICAg
ICAgSlNfRVhQT1JUX1BSSVZBVEUgdm9pZCBjcmVhdGVUYWJsZShKU0dsb2JhbERhdGEqKSBjb25z
dDsKICAgICB9OwogCi0gICAgSlNfRVhQT1JUX1BSSVZBVEUgYm9vbCBzZXRVcFN0YXRpY0Z1bmN0
aW9uU2xvdChFeGVjU3RhdGUqLCBjb25zdCBIYXNoRW50cnkqLCBKU09iamVjdCogdGhpc09iamVj
dCwgY29uc3QgSWRlbnRpZmllciYgcHJvcGVydHlOYW1lLCBQcm9wZXJ0eVNsb3QmKTsKKyAgICBK
U19FWFBPUlRfUFJJVkFURSBib29sIHNldFVwU3RhdGljRnVuY3Rpb25TbG90KEV4ZWNTdGF0ZSos
IGNvbnN0IEhhc2hFbnRyeSosIEpTT2JqZWN0KiB0aGlzT2JqZWN0LCBQcm9wZXJ0eU5hbWUsIFBy
b3BlcnR5U2xvdCYpOwogCiAgICAgLyoqCiAgICAgICogVGhpcyBtZXRob2QgZG9lcyBpdCBhbGwg
KGxvb2tpbmcgaW4gdGhlIGhhc2h0YWJsZSwgY2hlY2tpbmcgZm9yIGZ1bmN0aW9uCkBAIC0yMzAs
NyArMjMwLDcgQEAgbmFtZXNwYWNlIEpTQyB7CiAgICAgICogdW5rbm93biBwcm9wZXJ0eSkuCiAg
ICAgICovCiAgICAgdGVtcGxhdGUgPGNsYXNzIFRoaXNJbXAsIGNsYXNzIFBhcmVudEltcD4KLSAg
ICBpbmxpbmUgYm9vbCBnZXRTdGF0aWNQcm9wZXJ0eVNsb3QoRXhlY1N0YXRlKiBleGVjLCBjb25z
dCBIYXNoVGFibGUqIHRhYmxlLCBUaGlzSW1wKiB0aGlzT2JqLCBjb25zdCBJZGVudGlmaWVyJiBw
cm9wZXJ0eU5hbWUsIFByb3BlcnR5U2xvdCYgc2xvdCkKKyAgICBpbmxpbmUgYm9vbCBnZXRTdGF0
aWNQcm9wZXJ0eVNsb3QoRXhlY1N0YXRlKiBleGVjLCBjb25zdCBIYXNoVGFibGUqIHRhYmxlLCBU
aGlzSW1wKiB0aGlzT2JqLCBQcm9wZXJ0eU5hbWUgcHJvcGVydHlOYW1lLCBQcm9wZXJ0eVNsb3Qm
IHNsb3QpCiAgICAgewogICAgICAgICBjb25zdCBIYXNoRW50cnkqIGVudHJ5ID0gdGFibGUtPmVu
dHJ5KGV4ZWMsIHByb3BlcnR5TmFtZSk7CiAKQEAgLTI0NSw3ICsyNDUsNyBAQCBuYW1lc3BhY2Ug
SlNDIHsKICAgICB9CiAKICAgICB0ZW1wbGF0ZSA8Y2xhc3MgVGhpc0ltcCwgY2xhc3MgUGFyZW50
SW1wPgotICAgIGlubGluZSBib29sIGdldFN0YXRpY1Byb3BlcnR5RGVzY3JpcHRvcihFeGVjU3Rh
dGUqIGV4ZWMsIGNvbnN0IEhhc2hUYWJsZSogdGFibGUsIFRoaXNJbXAqIHRoaXNPYmosIGNvbnN0
IElkZW50aWZpZXImIHByb3BlcnR5TmFtZSwgUHJvcGVydHlEZXNjcmlwdG9yJiBkZXNjcmlwdG9y
KQorICAgIGlubGluZSBib29sIGdldFN0YXRpY1Byb3BlcnR5RGVzY3JpcHRvcihFeGVjU3RhdGUq
IGV4ZWMsIGNvbnN0IEhhc2hUYWJsZSogdGFibGUsIFRoaXNJbXAqIHRoaXNPYmosIFByb3BlcnR5
TmFtZSBwcm9wZXJ0eU5hbWUsIFByb3BlcnR5RGVzY3JpcHRvciYgZGVzY3JpcHRvcikKICAgICB7
CiAgICAgICAgIGNvbnN0IEhhc2hFbnRyeSogZW50cnkgPSB0YWJsZS0+ZW50cnkoZXhlYywgcHJv
cGVydHlOYW1lKTsKICAgICAgICAgCkBAIC0yNzEsNyArMjcxLDcgQEAgbmFtZXNwYWNlIEpTQyB7
CiAgICAgICogYSBkdW1teSBnZXRWYWx1ZVByb3BlcnR5LgogICAgICAqLwogICAgIHRlbXBsYXRl
IDxjbGFzcyBQYXJlbnRJbXA+Ci0gICAgaW5saW5lIGJvb2wgZ2V0U3RhdGljRnVuY3Rpb25TbG90
KEV4ZWNTdGF0ZSogZXhlYywgY29uc3QgSGFzaFRhYmxlKiB0YWJsZSwgSlNPYmplY3QqIHRoaXNP
YmosIGNvbnN0IElkZW50aWZpZXImIHByb3BlcnR5TmFtZSwgUHJvcGVydHlTbG90JiBzbG90KQor
ICAgIGlubGluZSBib29sIGdldFN0YXRpY0Z1bmN0aW9uU2xvdChFeGVjU3RhdGUqIGV4ZWMsIGNv
bnN0IEhhc2hUYWJsZSogdGFibGUsIEpTT2JqZWN0KiB0aGlzT2JqLCBQcm9wZXJ0eU5hbWUgcHJv
cGVydHlOYW1lLCBQcm9wZXJ0eVNsb3QmIHNsb3QpCiAgICAgewogICAgICAgICBpZiAoUGFyZW50
SW1wOjpnZXRPd25Qcm9wZXJ0eVNsb3QodGhpc09iaiwgZXhlYywgcHJvcGVydHlOYW1lLCBzbG90
KSkKICAgICAgICAgICAgIHJldHVybiB0cnVlOwpAQCAtMjg5LDcgKzI4OSw3IEBAIG5hbWVzcGFj
ZSBKU0MgewogICAgICAqIGEgZHVtbXkgZ2V0VmFsdWVQcm9wZXJ0eS4KICAgICAgKi8KICAgICB0
ZW1wbGF0ZSA8Y2xhc3MgUGFyZW50SW1wPgotICAgIGlubGluZSBib29sIGdldFN0YXRpY0Z1bmN0
aW9uRGVzY3JpcHRvcihFeGVjU3RhdGUqIGV4ZWMsIGNvbnN0IEhhc2hUYWJsZSogdGFibGUsIEpT
T2JqZWN0KiB0aGlzT2JqLCBjb25zdCBJZGVudGlmaWVyJiBwcm9wZXJ0eU5hbWUsIFByb3BlcnR5
RGVzY3JpcHRvciYgZGVzY3JpcHRvcikKKyAgICBpbmxpbmUgYm9vbCBnZXRTdGF0aWNGdW5jdGlv
bkRlc2NyaXB0b3IoRXhlY1N0YXRlKiBleGVjLCBjb25zdCBIYXNoVGFibGUqIHRhYmxlLCBKU09i
amVjdCogdGhpc09iaiwgUHJvcGVydHlOYW1lIHByb3BlcnR5TmFtZSwgUHJvcGVydHlEZXNjcmlw
dG9yJiBkZXNjcmlwdG9yKQogICAgIHsKICAgICAgICAgaWYgKFBhcmVudEltcDo6Z2V0T3duUHJv
cGVydHlEZXNjcmlwdG9yKHN0YXRpY19jYXN0PFBhcmVudEltcCo+KHRoaXNPYmopLCBleGVjLCBw
cm9wZXJ0eU5hbWUsIGRlc2NyaXB0b3IpKQogICAgICAgICAgICAgcmV0dXJuIHRydWU7CkBAIC0z
MTAsNyArMzEwLDcgQEAgbmFtZXNwYWNlIEpTQyB7CiAgICAgICogVXNpbmcgdGhpcyBpbnN0ZWFk
IG9mIGdldFN0YXRpY1Byb3BlcnR5U2xvdCByZW1vdmVzIHRoZSBuZWVkIGZvciBhIEZ1bmNJbXAg
Y2xhc3MuCiAgICAgICovCiAgICAgdGVtcGxhdGUgPGNsYXNzIFRoaXNJbXAsIGNsYXNzIFBhcmVu
dEltcD4KLSAgICBpbmxpbmUgYm9vbCBnZXRTdGF0aWNWYWx1ZVNsb3QoRXhlY1N0YXRlKiBleGVj
LCBjb25zdCBIYXNoVGFibGUqIHRhYmxlLCBUaGlzSW1wKiB0aGlzT2JqLCBjb25zdCBJZGVudGlm
aWVyJiBwcm9wZXJ0eU5hbWUsIFByb3BlcnR5U2xvdCYgc2xvdCkKKyAgICBpbmxpbmUgYm9vbCBn
ZXRTdGF0aWNWYWx1ZVNsb3QoRXhlY1N0YXRlKiBleGVjLCBjb25zdCBIYXNoVGFibGUqIHRhYmxl
LCBUaGlzSW1wKiB0aGlzT2JqLCBQcm9wZXJ0eU5hbWUgcHJvcGVydHlOYW1lLCBQcm9wZXJ0eVNs
b3QmIHNsb3QpCiAgICAgewogICAgICAgICBjb25zdCBIYXNoRW50cnkqIGVudHJ5ID0gdGFibGUt
PmVudHJ5KGV4ZWMsIHByb3BlcnR5TmFtZSk7CiAKQEAgLTMyOCw3ICszMjgsNyBAQCBuYW1lc3Bh
Y2UgSlNDIHsKICAgICAgKiBVc2luZyB0aGlzIGluc3RlYWQgb2YgZ2V0U3RhdGljUHJvcGVydHlE
ZXNjcmlwdG9yIHJlbW92ZXMgdGhlIG5lZWQgZm9yIGEgRnVuY0ltcCBjbGFzcy4KICAgICAgKi8K
ICAgICB0ZW1wbGF0ZSA8Y2xhc3MgVGhpc0ltcCwgY2xhc3MgUGFyZW50SW1wPgotICAgIGlubGlu
ZSBib29sIGdldFN0YXRpY1ZhbHVlRGVzY3JpcHRvcihFeGVjU3RhdGUqIGV4ZWMsIGNvbnN0IEhh
c2hUYWJsZSogdGFibGUsIFRoaXNJbXAqIHRoaXNPYmosIGNvbnN0IElkZW50aWZpZXImIHByb3Bl
cnR5TmFtZSwgUHJvcGVydHlEZXNjcmlwdG9yJiBkZXNjcmlwdG9yKQorICAgIGlubGluZSBib29s
IGdldFN0YXRpY1ZhbHVlRGVzY3JpcHRvcihFeGVjU3RhdGUqIGV4ZWMsIGNvbnN0IEhhc2hUYWJs
ZSogdGFibGUsIFRoaXNJbXAqIHRoaXNPYmosIFByb3BlcnR5TmFtZSBwcm9wZXJ0eU5hbWUsIFBy
b3BlcnR5RGVzY3JpcHRvciYgZGVzY3JpcHRvcikKICAgICB7CiAgICAgICAgIGNvbnN0IEhhc2hF
bnRyeSogZW50cnkgPSB0YWJsZS0+ZW50cnkoZXhlYywgcHJvcGVydHlOYW1lKTsKICAgICAgICAg
CkBAIC0zNDgsNyArMzQ4LDcgQEAgbmFtZXNwYWNlIEpTQyB7CiAgICAgICogaXMgZm91bmQgaXQg
c2V0cyB0aGUgdmFsdWUgYW5kIHJldHVybnMgdHJ1ZSwgZWxzZSBpdCByZXR1cm5zIGZhbHNlLgog
ICAgICAqLwogICAgIHRlbXBsYXRlIDxjbGFzcyBUaGlzSW1wPgotICAgIGlubGluZSBib29sIGxv
b2t1cFB1dChFeGVjU3RhdGUqIGV4ZWMsIGNvbnN0IElkZW50aWZpZXImIHByb3BlcnR5TmFtZSwg
SlNWYWx1ZSB2YWx1ZSwgY29uc3QgSGFzaFRhYmxlKiB0YWJsZSwgVGhpc0ltcCogdGhpc09iaiwg
Ym9vbCBzaG91bGRUaHJvdyA9IGZhbHNlKQorICAgIGlubGluZSBib29sIGxvb2t1cFB1dChFeGVj
U3RhdGUqIGV4ZWMsIFByb3BlcnR5TmFtZSBwcm9wZXJ0eU5hbWUsIEpTVmFsdWUgdmFsdWUsIGNv
bnN0IEhhc2hUYWJsZSogdGFibGUsIFRoaXNJbXAqIHRoaXNPYmosIGJvb2wgc2hvdWxkVGhyb3cg
PSBmYWxzZSkKICAgICB7CiAgICAgICAgIGNvbnN0IEhhc2hFbnRyeSogZW50cnkgPSB0YWJsZS0+
ZW50cnkoZXhlYywgcHJvcGVydHlOYW1lKTsKICAgICAgICAgCkBAIC0zNzMsNyArMzczLDcgQEAg
bmFtZXNwYWNlIEpTQyB7CiAgICAgICogdGhlbiBpdCBjYWxscyBwdXQoKSBvbiB0aGUgUGFyZW50
SW1wIGNsYXNzLgogICAgICAqLwogICAgIHRlbXBsYXRlIDxjbGFzcyBUaGlzSW1wLCBjbGFzcyBQ
YXJlbnRJbXA+Ci0gICAgaW5saW5lIHZvaWQgbG9va3VwUHV0KEV4ZWNTdGF0ZSogZXhlYywgY29u
c3QgSWRlbnRpZmllciYgcHJvcGVydHlOYW1lLCBKU1ZhbHVlIHZhbHVlLCBjb25zdCBIYXNoVGFi
bGUqIHRhYmxlLCBUaGlzSW1wKiB0aGlzT2JqLCBQdXRQcm9wZXJ0eVNsb3QmIHNsb3QpCisgICAg
aW5saW5lIHZvaWQgbG9va3VwUHV0KEV4ZWNTdGF0ZSogZXhlYywgUHJvcGVydHlOYW1lIHByb3Bl
cnR5TmFtZSwgSlNWYWx1ZSB2YWx1ZSwgY29uc3QgSGFzaFRhYmxlKiB0YWJsZSwgVGhpc0ltcCog
dGhpc09iaiwgUHV0UHJvcGVydHlTbG90JiBzbG90KQogICAgIHsKICAgICAgICAgaWYgKCFsb29r
dXBQdXQ8VGhpc0ltcD4oZXhlYywgcHJvcGVydHlOYW1lLCB2YWx1ZSwgdGFibGUsIHRoaXNPYmos
IHNsb3QuaXNTdHJpY3RNb2RlKCkpKQogICAgICAgICAgICAgUGFyZW50SW1wOjpwdXQodGhpc09i
aiwgZXhlYywgcHJvcGVydHlOYW1lLCB2YWx1ZSwgc2xvdCk7IC8vIG5vdCBmb3VuZDogZm9yd2Fy
ZCB0byBwYXJlbnQKSW5kZXg6IFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL01hdGhPYmpl
Y3QuY3BwCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL01hdGhP
YmplY3QuY3BwCShyZXZpc2lvbiAxMTY2NjcpCisrKyBTb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVu
dGltZS9NYXRoT2JqZWN0LmNwcAkod29ya2luZyBjb3B5KQpAQCAtMTA2LDEyICsxMDYsMTIgQEAg
dm9pZCBNYXRoT2JqZWN0OjpmaW5pc2hDcmVhdGlvbihFeGVjU3RhdAogICAgIHB1dERpcmVjdFdp
dGhvdXRUcmFuc2l0aW9uKGV4ZWMtPmdsb2JhbERhdGEoKSwgSWRlbnRpZmllcihleGVjLCAiU1FS
VDIiKSwganNOdW1iZXIoc3FydCgyLjApKSwgRG9udERlbGV0ZSB8IERvbnRFbnVtIHwgUmVhZE9u
bHkpOwogfQogCi1ib29sIE1hdGhPYmplY3Q6OmdldE93blByb3BlcnR5U2xvdChKU0NlbGwqIGNl
bGwsIEV4ZWNTdGF0ZSogZXhlYywgY29uc3QgSWRlbnRpZmllciYgcHJvcGVydHlOYW1lLCBQcm9w
ZXJ0eVNsb3QgJnNsb3QpCitib29sIE1hdGhPYmplY3Q6OmdldE93blByb3BlcnR5U2xvdChKU0Nl
bGwqIGNlbGwsIEV4ZWNTdGF0ZSogZXhlYywgUHJvcGVydHlOYW1lIHByb3BlcnR5TmFtZSwgUHJv
cGVydHlTbG90ICZzbG90KQogewogICAgIHJldHVybiBnZXRTdGF0aWNGdW5jdGlvblNsb3Q8SlNP
YmplY3Q+KGV4ZWMsIEV4ZWNTdGF0ZTo6bWF0aFRhYmxlKGV4ZWMpLCBqc0Nhc3Q8TWF0aE9iamVj
dCo+KGNlbGwpLCBwcm9wZXJ0eU5hbWUsIHNsb3QpOwogfQogCi1ib29sIE1hdGhPYmplY3Q6Omdl
dE93blByb3BlcnR5RGVzY3JpcHRvcihKU09iamVjdCogb2JqZWN0LCBFeGVjU3RhdGUqIGV4ZWMs
IGNvbnN0IElkZW50aWZpZXImIHByb3BlcnR5TmFtZSwgUHJvcGVydHlEZXNjcmlwdG9yJiBkZXNj
cmlwdG9yKQorYm9vbCBNYXRoT2JqZWN0OjpnZXRPd25Qcm9wZXJ0eURlc2NyaXB0b3IoSlNPYmpl
Y3QqIG9iamVjdCwgRXhlY1N0YXRlKiBleGVjLCBQcm9wZXJ0eU5hbWUgcHJvcGVydHlOYW1lLCBQ
cm9wZXJ0eURlc2NyaXB0b3ImIGRlc2NyaXB0b3IpCiB7CiAgICAgcmV0dXJuIGdldFN0YXRpY0Z1
bmN0aW9uRGVzY3JpcHRvcjxKU09iamVjdD4oZXhlYywgRXhlY1N0YXRlOjptYXRoVGFibGUoZXhl
YyksIGpzQ2FzdDxNYXRoT2JqZWN0Kj4ob2JqZWN0KSwgcHJvcGVydHlOYW1lLCBkZXNjcmlwdG9y
KTsKIH0KSW5kZXg6IFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL01hdGhPYmplY3QuaAo9
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09Ci0tLSBTb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9NYXRoT2JqZWN0LmgJ
KHJldmlzaW9uIDExNjY2NykKKysrIFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL01hdGhP
YmplY3QuaAkod29ya2luZyBjb3B5KQpAQCAtMzgsOCArMzgsOCBAQCBuYW1lc3BhY2UgSlNDIHsK
ICAgICAgICAgICAgIG9iamVjdC0+ZmluaXNoQ3JlYXRpb24oZXhlYywgZ2xvYmFsT2JqZWN0KTsK
ICAgICAgICAgICAgIHJldHVybiBvYmplY3Q7CiAgICAgICAgIH0KLSAgICAgICAgc3RhdGljIGJv
b2wgZ2V0T3duUHJvcGVydHlTbG90KEpTQ2VsbCosIEV4ZWNTdGF0ZSosIGNvbnN0IElkZW50aWZp
ZXImLCBQcm9wZXJ0eVNsb3QmKTsKLSAgICAgICAgc3RhdGljIGJvb2wgZ2V0T3duUHJvcGVydHlE
ZXNjcmlwdG9yKEpTT2JqZWN0KiwgRXhlY1N0YXRlKiwgY29uc3QgSWRlbnRpZmllciYsIFByb3Bl
cnR5RGVzY3JpcHRvciYpOworICAgICAgICBzdGF0aWMgYm9vbCBnZXRPd25Qcm9wZXJ0eVNsb3Qo
SlNDZWxsKiwgRXhlY1N0YXRlKiwgUHJvcGVydHlOYW1lLCBQcm9wZXJ0eVNsb3QmKTsKKyAgICAg
ICAgc3RhdGljIGJvb2wgZ2V0T3duUHJvcGVydHlEZXNjcmlwdG9yKEpTT2JqZWN0KiwgRXhlY1N0
YXRlKiwgUHJvcGVydHlOYW1lLCBQcm9wZXJ0eURlc2NyaXB0b3ImKTsKIAogICAgICAgICBzdGF0
aWMgY29uc3QgQ2xhc3NJbmZvIHNfaW5mbzsKIApJbmRleDogU291cmNlL0phdmFTY3JpcHRDb3Jl
L3J1bnRpbWUvTmF0aXZlRXJyb3JDb25zdHJ1Y3Rvci5oCj09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9K
YXZhU2NyaXB0Q29yZS9ydW50aW1lL05hdGl2ZUVycm9yQ29uc3RydWN0b3IuaAkocmV2aXNpb24g
MTE2NjY3KQorKysgU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvTmF0aXZlRXJyb3JDb25z
dHJ1Y3Rvci5oCSh3b3JraW5nIGNvcHkpCkBAIC01Myw3ICs1Myw3IEBAIG5hbWVzcGFjZSBKU0Mg
ewogICAgIHByb3RlY3RlZDoKICAgICAgICAgdm9pZCBmaW5pc2hDcmVhdGlvbihFeGVjU3RhdGUq
IGV4ZWMsIEpTR2xvYmFsT2JqZWN0KiBnbG9iYWxPYmplY3QsIFN0cnVjdHVyZSogcHJvdG90eXBl
U3RydWN0dXJlLCBjb25zdCBVU3RyaW5nJiBuYW1lKQogICAgICAgICB7Ci0gICAgICAgICAgICBC
YXNlOjpmaW5pc2hDcmVhdGlvbihleGVjLT5nbG9iYWxEYXRhKCksIElkZW50aWZpZXIoZXhlYywg
bmFtZSkpOworICAgICAgICAgICAgQmFzZTo6ZmluaXNoQ3JlYXRpb24oZXhlYy0+Z2xvYmFsRGF0
YSgpLCBuYW1lKTsKICAgICAgICAgICAgIEFTU0VSVChpbmhlcml0cygmc19pbmZvKSk7CiAKICAg
ICAgICAgICAgIE5hdGl2ZUVycm9yUHJvdG90eXBlKiBwcm90b3R5cGUgPSBOYXRpdmVFcnJvclBy
b3RvdHlwZTo6Y3JlYXRlKGV4ZWMsIGdsb2JhbE9iamVjdCwgcHJvdG90eXBlU3RydWN0dXJlLCBu
YW1lLCB0aGlzKTsKSW5kZXg6IFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL051bWJlckNv
bnN0cnVjdG9yLmNwcAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGlt
ZS9OdW1iZXJDb25zdHJ1Y3Rvci5jcHAJKHJldmlzaW9uIDExNjY2NykKKysrIFNvdXJjZS9KYXZh
U2NyaXB0Q29yZS9ydW50aW1lL051bWJlckNvbnN0cnVjdG9yLmNwcAkod29ya2luZyBjb3B5KQpA
QCAtMzAsMTEgKzMwLDExIEBAIG5hbWVzcGFjZSBKU0MgewogCiBBU1NFUlRfQ0xBU1NfRklUU19J
Tl9DRUxMKE51bWJlckNvbnN0cnVjdG9yKTsKIAotc3RhdGljIEpTVmFsdWUgbnVtYmVyQ29uc3Ry
dWN0b3JOYU5WYWx1ZShFeGVjU3RhdGUqLCBKU1ZhbHVlLCBjb25zdCBJZGVudGlmaWVyJik7Ci1z
dGF0aWMgSlNWYWx1ZSBudW1iZXJDb25zdHJ1Y3Rvck5lZ0luZmluaXR5KEV4ZWNTdGF0ZSosIEpT
VmFsdWUsIGNvbnN0IElkZW50aWZpZXImKTsKLXN0YXRpYyBKU1ZhbHVlIG51bWJlckNvbnN0cnVj
dG9yUG9zSW5maW5pdHkoRXhlY1N0YXRlKiwgSlNWYWx1ZSwgY29uc3QgSWRlbnRpZmllciYpOwot
c3RhdGljIEpTVmFsdWUgbnVtYmVyQ29uc3RydWN0b3JNYXhWYWx1ZShFeGVjU3RhdGUqLCBKU1Zh
bHVlLCBjb25zdCBJZGVudGlmaWVyJik7Ci1zdGF0aWMgSlNWYWx1ZSBudW1iZXJDb25zdHJ1Y3Rv
ck1pblZhbHVlKEV4ZWNTdGF0ZSosIEpTVmFsdWUsIGNvbnN0IElkZW50aWZpZXImKTsKK3N0YXRp
YyBKU1ZhbHVlIG51bWJlckNvbnN0cnVjdG9yTmFOVmFsdWUoRXhlY1N0YXRlKiwgSlNWYWx1ZSwg
UHJvcGVydHlOYW1lKTsKK3N0YXRpYyBKU1ZhbHVlIG51bWJlckNvbnN0cnVjdG9yTmVnSW5maW5p
dHkoRXhlY1N0YXRlKiwgSlNWYWx1ZSwgUHJvcGVydHlOYW1lKTsKK3N0YXRpYyBKU1ZhbHVlIG51
bWJlckNvbnN0cnVjdG9yUG9zSW5maW5pdHkoRXhlY1N0YXRlKiwgSlNWYWx1ZSwgUHJvcGVydHlO
YW1lKTsKK3N0YXRpYyBKU1ZhbHVlIG51bWJlckNvbnN0cnVjdG9yTWF4VmFsdWUoRXhlY1N0YXRl
KiwgSlNWYWx1ZSwgUHJvcGVydHlOYW1lKTsKK3N0YXRpYyBKU1ZhbHVlIG51bWJlckNvbnN0cnVj
dG9yTWluVmFsdWUoRXhlY1N0YXRlKiwgSlNWYWx1ZSwgUHJvcGVydHlOYW1lKTsKIAogfSAvLyBu
YW1lc3BhY2UgSlNDCiAKQEAgLTYzLDcgKzYzLDcgQEAgTnVtYmVyQ29uc3RydWN0b3I6Ok51bWJl
ckNvbnN0cnVjdG9yKEpTRwogCiB2b2lkIE51bWJlckNvbnN0cnVjdG9yOjpmaW5pc2hDcmVhdGlv
bihFeGVjU3RhdGUqIGV4ZWMsIE51bWJlclByb3RvdHlwZSogbnVtYmVyUHJvdG90eXBlKQogewot
ICAgIEJhc2U6OmZpbmlzaENyZWF0aW9uKGV4ZWMtPmdsb2JhbERhdGEoKSwgSWRlbnRpZmllcihl
eGVjLCBudW1iZXJQcm90b3R5cGUtPnNfaW5mby5jbGFzc05hbWUpKTsKKyAgICBCYXNlOjpmaW5p
c2hDcmVhdGlvbihleGVjLT5nbG9iYWxEYXRhKCksIG51bWJlclByb3RvdHlwZS0+c19pbmZvLmNs
YXNzTmFtZSk7CiAgICAgQVNTRVJUKGluaGVyaXRzKCZzX2luZm8pKTsKIAogICAgIC8vIE51bWJl
ci5Qcm90b3R5cGUKQEAgLTczLDQyICs3Myw0MiBAQCB2b2lkIE51bWJlckNvbnN0cnVjdG9yOjpm
aW5pc2hDcmVhdGlvbihFCiAgICAgcHV0RGlyZWN0V2l0aG91dFRyYW5zaXRpb24oZXhlYy0+Z2xv
YmFsRGF0YSgpLCBleGVjLT5wcm9wZXJ0eU5hbWVzKCkubGVuZ3RoLCBqc051bWJlcigxKSwgUmVh
ZE9ubHkgfCBEb250RW51bSB8IERvbnREZWxldGUpOwogfQogCi1ib29sIE51bWJlckNvbnN0cnVj
dG9yOjpnZXRPd25Qcm9wZXJ0eVNsb3QoSlNDZWxsKiBjZWxsLCBFeGVjU3RhdGUqIGV4ZWMsIGNv
bnN0IElkZW50aWZpZXImIHByb3BlcnR5TmFtZSwgUHJvcGVydHlTbG90JiBzbG90KQorYm9vbCBO
dW1iZXJDb25zdHJ1Y3Rvcjo6Z2V0T3duUHJvcGVydHlTbG90KEpTQ2VsbCogY2VsbCwgRXhlY1N0
YXRlKiBleGVjLCBQcm9wZXJ0eU5hbWUgcHJvcGVydHlOYW1lLCBQcm9wZXJ0eVNsb3QmIHNsb3Qp
CiB7CiAgICAgcmV0dXJuIGdldFN0YXRpY1ZhbHVlU2xvdDxOdW1iZXJDb25zdHJ1Y3RvciwgSW50
ZXJuYWxGdW5jdGlvbj4oZXhlYywgRXhlY1N0YXRlOjpudW1iZXJDb25zdHJ1Y3RvclRhYmxlKGV4
ZWMpLCBqc0Nhc3Q8TnVtYmVyQ29uc3RydWN0b3IqPihjZWxsKSwgcHJvcGVydHlOYW1lLCBzbG90
KTsKIH0KIAotYm9vbCBOdW1iZXJDb25zdHJ1Y3Rvcjo6Z2V0T3duUHJvcGVydHlEZXNjcmlwdG9y
KEpTT2JqZWN0KiBvYmplY3QsIEV4ZWNTdGF0ZSogZXhlYywgY29uc3QgSWRlbnRpZmllciYgcHJv
cGVydHlOYW1lLCBQcm9wZXJ0eURlc2NyaXB0b3ImIGRlc2NyaXB0b3IpCitib29sIE51bWJlckNv
bnN0cnVjdG9yOjpnZXRPd25Qcm9wZXJ0eURlc2NyaXB0b3IoSlNPYmplY3QqIG9iamVjdCwgRXhl
Y1N0YXRlKiBleGVjLCBQcm9wZXJ0eU5hbWUgcHJvcGVydHlOYW1lLCBQcm9wZXJ0eURlc2NyaXB0
b3ImIGRlc2NyaXB0b3IpCiB7CiAgICAgcmV0dXJuIGdldFN0YXRpY1ZhbHVlRGVzY3JpcHRvcjxO
dW1iZXJDb25zdHJ1Y3RvciwgSW50ZXJuYWxGdW5jdGlvbj4oZXhlYywgRXhlY1N0YXRlOjpudW1i
ZXJDb25zdHJ1Y3RvclRhYmxlKGV4ZWMpLCBqc0Nhc3Q8TnVtYmVyQ29uc3RydWN0b3IqPihvYmpl
Y3QpLCBwcm9wZXJ0eU5hbWUsIGRlc2NyaXB0b3IpOwogfQogCi12b2lkIE51bWJlckNvbnN0cnVj
dG9yOjpwdXQoSlNDZWxsKiBjZWxsLCBFeGVjU3RhdGUqIGV4ZWMsIGNvbnN0IElkZW50aWZpZXIm
IHByb3BlcnR5TmFtZSwgSlNWYWx1ZSB2YWx1ZSwgUHV0UHJvcGVydHlTbG90JiBzbG90KQordm9p
ZCBOdW1iZXJDb25zdHJ1Y3Rvcjo6cHV0KEpTQ2VsbCogY2VsbCwgRXhlY1N0YXRlKiBleGVjLCBQ
cm9wZXJ0eU5hbWUgcHJvcGVydHlOYW1lLCBKU1ZhbHVlIHZhbHVlLCBQdXRQcm9wZXJ0eVNsb3Qm
IHNsb3QpCiB7CiAgICAgbG9va3VwUHV0PE51bWJlckNvbnN0cnVjdG9yLCBJbnRlcm5hbEZ1bmN0
aW9uPihleGVjLCBwcm9wZXJ0eU5hbWUsIHZhbHVlLCBFeGVjU3RhdGU6Om51bWJlckNvbnN0cnVj
dG9yVGFibGUoZXhlYyksIGpzQ2FzdDxOdW1iZXJDb25zdHJ1Y3Rvcio+KGNlbGwpLCBzbG90KTsK
IH0KIAotc3RhdGljIEpTVmFsdWUgbnVtYmVyQ29uc3RydWN0b3JOYU5WYWx1ZShFeGVjU3RhdGUq
LCBKU1ZhbHVlLCBjb25zdCBJZGVudGlmaWVyJikKK3N0YXRpYyBKU1ZhbHVlIG51bWJlckNvbnN0
cnVjdG9yTmFOVmFsdWUoRXhlY1N0YXRlKiwgSlNWYWx1ZSwgUHJvcGVydHlOYW1lKQogewogICAg
IHJldHVybiBqc05hTigpOwogfQogCi1zdGF0aWMgSlNWYWx1ZSBudW1iZXJDb25zdHJ1Y3Rvck5l
Z0luZmluaXR5KEV4ZWNTdGF0ZSosIEpTVmFsdWUsIGNvbnN0IElkZW50aWZpZXImKQorc3RhdGlj
IEpTVmFsdWUgbnVtYmVyQ29uc3RydWN0b3JOZWdJbmZpbml0eShFeGVjU3RhdGUqLCBKU1ZhbHVl
LCBQcm9wZXJ0eU5hbWUpCiB7CiAgICAgcmV0dXJuIGpzTnVtYmVyKC1zdGQ6Om51bWVyaWNfbGlt
aXRzPGRvdWJsZT46OmluZmluaXR5KCkpOwogfQogCi1zdGF0aWMgSlNWYWx1ZSBudW1iZXJDb25z
dHJ1Y3RvclBvc0luZmluaXR5KEV4ZWNTdGF0ZSosIEpTVmFsdWUsIGNvbnN0IElkZW50aWZpZXIm
KQorc3RhdGljIEpTVmFsdWUgbnVtYmVyQ29uc3RydWN0b3JQb3NJbmZpbml0eShFeGVjU3RhdGUq
LCBKU1ZhbHVlLCBQcm9wZXJ0eU5hbWUpCiB7CiAgICAgcmV0dXJuIGpzTnVtYmVyKHN0ZDo6bnVt
ZXJpY19saW1pdHM8ZG91YmxlPjo6aW5maW5pdHkoKSk7CiB9CiAKLXN0YXRpYyBKU1ZhbHVlIG51
bWJlckNvbnN0cnVjdG9yTWF4VmFsdWUoRXhlY1N0YXRlKiwgSlNWYWx1ZSwgY29uc3QgSWRlbnRp
ZmllciYpCitzdGF0aWMgSlNWYWx1ZSBudW1iZXJDb25zdHJ1Y3Rvck1heFZhbHVlKEV4ZWNTdGF0
ZSosIEpTVmFsdWUsIFByb3BlcnR5TmFtZSkKIHsKICAgICByZXR1cm4ganNOdW1iZXIoMS43OTc2
OTMxMzQ4NjIzMTU3RSszMDgpOwogfQogCi1zdGF0aWMgSlNWYWx1ZSBudW1iZXJDb25zdHJ1Y3Rv
ck1pblZhbHVlKEV4ZWNTdGF0ZSosIEpTVmFsdWUsIGNvbnN0IElkZW50aWZpZXImKQorc3RhdGlj
IEpTVmFsdWUgbnVtYmVyQ29uc3RydWN0b3JNaW5WYWx1ZShFeGVjU3RhdGUqLCBKU1ZhbHVlLCBQ
cm9wZXJ0eU5hbWUpCiB7CiAgICAgcmV0dXJuIGpzTnVtYmVyKDVFLTMyNCk7CiB9CkluZGV4OiBT
b3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9OdW1iZXJDb25zdHJ1Y3Rvci5oCj09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT0KLS0tIFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL051bWJlckNvbnN0cnVjdG9yLmgJ
KHJldmlzaW9uIDExNjY2NykKKysrIFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL051bWJl
ckNvbnN0cnVjdG9yLmgJKHdvcmtpbmcgY29weSkKQEAgLTM4LDEwICszOCwxMCBAQCBuYW1lc3Bh
Y2UgSlNDIHsKICAgICAgICAgICAgIHJldHVybiBjb25zdHJ1Y3RvcjsKICAgICAgICAgfQogCi0g
ICAgICAgIHN0YXRpYyB2b2lkIHB1dChKU0NlbGwqLCBFeGVjU3RhdGUqLCBjb25zdCBJZGVudGlm
aWVyJiBwcm9wZXJ0eU5hbWUsIEpTVmFsdWUsIFB1dFByb3BlcnR5U2xvdCYpOworICAgICAgICBz
dGF0aWMgdm9pZCBwdXQoSlNDZWxsKiwgRXhlY1N0YXRlKiwgUHJvcGVydHlOYW1lLCBKU1ZhbHVl
LCBQdXRQcm9wZXJ0eVNsb3QmKTsKIAotICAgICAgICBzdGF0aWMgYm9vbCBnZXRPd25Qcm9wZXJ0
eVNsb3QoSlNDZWxsKiwgRXhlY1N0YXRlKiwgY29uc3QgSWRlbnRpZmllciYsIFByb3BlcnR5U2xv
dCYpOwotICAgICAgICBzdGF0aWMgYm9vbCBnZXRPd25Qcm9wZXJ0eURlc2NyaXB0b3IoSlNPYmpl
Y3QqLCBFeGVjU3RhdGUqLCBjb25zdCBJZGVudGlmaWVyJiwgUHJvcGVydHlEZXNjcmlwdG9yJik7
CisgICAgICAgIHN0YXRpYyBib29sIGdldE93blByb3BlcnR5U2xvdChKU0NlbGwqLCBFeGVjU3Rh
dGUqLCBQcm9wZXJ0eU5hbWUsIFByb3BlcnR5U2xvdCYpOworICAgICAgICBzdGF0aWMgYm9vbCBn
ZXRPd25Qcm9wZXJ0eURlc2NyaXB0b3IoSlNPYmplY3QqLCBFeGVjU3RhdGUqLCBQcm9wZXJ0eU5h
bWUsIFByb3BlcnR5RGVzY3JpcHRvciYpOwogICAgICAgICBKU1ZhbHVlIGdldFZhbHVlUHJvcGVy
dHkoRXhlY1N0YXRlKiwgaW50IHRva2VuKSBjb25zdDsKIAogICAgICAgICBzdGF0aWMgY29uc3Qg
Q2xhc3NJbmZvIHNfaW5mbzsKSW5kZXg6IFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL051
bWJlclByb3RvdHlwZS5jcHAKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL0phdmFTY3JpcHRDb3JlL3J1
bnRpbWUvTnVtYmVyUHJvdG90eXBlLmNwcAkocmV2aXNpb24gMTE2NjY3KQorKysgU291cmNlL0ph
dmFTY3JpcHRDb3JlL3J1bnRpbWUvTnVtYmVyUHJvdG90eXBlLmNwcAkod29ya2luZyBjb3B5KQpA
QCAtODQsMTIgKzg0LDEyIEBAIHZvaWQgTnVtYmVyUHJvdG90eXBlOjpmaW5pc2hDcmVhdGlvbihF
eGUKICAgICBBU1NFUlQoaW5oZXJpdHMoJnNfaW5mbykpOwogfQogCi1ib29sIE51bWJlclByb3Rv
dHlwZTo6Z2V0T3duUHJvcGVydHlTbG90KEpTQ2VsbCogY2VsbCwgRXhlY1N0YXRlKiBleGVjLCBj
b25zdCBJZGVudGlmaWVyJiBwcm9wZXJ0eU5hbWUsIFByb3BlcnR5U2xvdCAmc2xvdCkKK2Jvb2wg
TnVtYmVyUHJvdG90eXBlOjpnZXRPd25Qcm9wZXJ0eVNsb3QoSlNDZWxsKiBjZWxsLCBFeGVjU3Rh
dGUqIGV4ZWMsIFByb3BlcnR5TmFtZSBwcm9wZXJ0eU5hbWUsIFByb3BlcnR5U2xvdCAmc2xvdCkK
IHsKICAgICByZXR1cm4gZ2V0U3RhdGljRnVuY3Rpb25TbG90PE51bWJlck9iamVjdD4oZXhlYywg
RXhlY1N0YXRlOjpudW1iZXJQcm90b3R5cGVUYWJsZShleGVjKSwganNDYXN0PE51bWJlclByb3Rv
dHlwZSo+KGNlbGwpLCBwcm9wZXJ0eU5hbWUsIHNsb3QpOwogfQogCi1ib29sIE51bWJlclByb3Rv
dHlwZTo6Z2V0T3duUHJvcGVydHlEZXNjcmlwdG9yKEpTT2JqZWN0KiBvYmplY3QsIEV4ZWNTdGF0
ZSogZXhlYywgY29uc3QgSWRlbnRpZmllciYgcHJvcGVydHlOYW1lLCBQcm9wZXJ0eURlc2NyaXB0
b3ImIGRlc2NyaXB0b3IpCitib29sIE51bWJlclByb3RvdHlwZTo6Z2V0T3duUHJvcGVydHlEZXNj
cmlwdG9yKEpTT2JqZWN0KiBvYmplY3QsIEV4ZWNTdGF0ZSogZXhlYywgUHJvcGVydHlOYW1lIHBy
b3BlcnR5TmFtZSwgUHJvcGVydHlEZXNjcmlwdG9yJiBkZXNjcmlwdG9yKQogewogICAgIHJldHVy
biBnZXRTdGF0aWNGdW5jdGlvbkRlc2NyaXB0b3I8TnVtYmVyT2JqZWN0PihleGVjLCBFeGVjU3Rh
dGU6Om51bWJlclByb3RvdHlwZVRhYmxlKGV4ZWMpLCBqc0Nhc3Q8TnVtYmVyUHJvdG90eXBlKj4o
b2JqZWN0KSwgcHJvcGVydHlOYW1lLCBkZXNjcmlwdG9yKTsKIH0KSW5kZXg6IFNvdXJjZS9KYXZh
U2NyaXB0Q29yZS9ydW50aW1lL051bWJlclByb3RvdHlwZS5oCj09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJj
ZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL051bWJlclByb3RvdHlwZS5oCShyZXZpc2lvbiAxMTY2
NjcpCisrKyBTb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9OdW1iZXJQcm90b3R5cGUuaAko
d29ya2luZyBjb3B5KQpAQCAtNDksOCArNDksOCBAQCBuYW1lc3BhY2UgSlNDIHsKIAogICAgIHBy
aXZhdGU6CiAgICAgICAgIE51bWJlclByb3RvdHlwZShFeGVjU3RhdGUqLCBTdHJ1Y3R1cmUqKTsK
LSAgICAgICAgc3RhdGljIGJvb2wgZ2V0T3duUHJvcGVydHlTbG90KEpTQ2VsbCosIEV4ZWNTdGF0
ZSosIGNvbnN0IElkZW50aWZpZXImLCBQcm9wZXJ0eVNsb3QmKTsKLSAgICAgICAgc3RhdGljIGJv
b2wgZ2V0T3duUHJvcGVydHlEZXNjcmlwdG9yKEpTT2JqZWN0KiwgRXhlY1N0YXRlKiwgY29uc3Qg
SWRlbnRpZmllciYsIFByb3BlcnR5RGVzY3JpcHRvciYpOworICAgICAgICBzdGF0aWMgYm9vbCBn
ZXRPd25Qcm9wZXJ0eVNsb3QoSlNDZWxsKiwgRXhlY1N0YXRlKiwgUHJvcGVydHlOYW1lLCBQcm9w
ZXJ0eVNsb3QmKTsKKyAgICAgICAgc3RhdGljIGJvb2wgZ2V0T3duUHJvcGVydHlEZXNjcmlwdG9y
KEpTT2JqZWN0KiwgRXhlY1N0YXRlKiwgUHJvcGVydHlOYW1lLCBQcm9wZXJ0eURlc2NyaXB0b3Im
KTsKICAgICB9OwogCiB9IC8vIG5hbWVzcGFjZSBKU0MKSW5kZXg6IFNvdXJjZS9KYXZhU2NyaXB0
Q29yZS9ydW50aW1lL09iamVjdENvbnN0cnVjdG9yLmNwcAo9PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2Uv
SmF2YVNjcmlwdENvcmUvcnVudGltZS9PYmplY3RDb25zdHJ1Y3Rvci5jcHAJKHJldmlzaW9uIDEx
NjY2NykKKysrIFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL09iamVjdENvbnN0cnVjdG9y
LmNwcAkod29ya2luZyBjb3B5KQpAQCAtODQsMTkgKzg0LDE5IEBAIE9iamVjdENvbnN0cnVjdG9y
OjpPYmplY3RDb25zdHJ1Y3RvcihKU0cKIAogdm9pZCBPYmplY3RDb25zdHJ1Y3Rvcjo6ZmluaXNo
Q3JlYXRpb24oRXhlY1N0YXRlKiBleGVjLCBPYmplY3RQcm90b3R5cGUqIG9iamVjdFByb3RvdHlw
ZSkKIHsKLSAgICBCYXNlOjpmaW5pc2hDcmVhdGlvbihleGVjLT5nbG9iYWxEYXRhKCksIElkZW50
aWZpZXIoZXhlYywgIk9iamVjdCIpKTsKKyAgICBCYXNlOjpmaW5pc2hDcmVhdGlvbihleGVjLT5n
bG9iYWxEYXRhKCksIElkZW50aWZpZXIoZXhlYywgIk9iamVjdCIpLnVzdHJpbmcoKSk7CiAgICAg
Ly8gRUNNQSAxNS4yLjMuMQogICAgIHB1dERpcmVjdFdpdGhvdXRUcmFuc2l0aW9uKGV4ZWMtPmds
b2JhbERhdGEoKSwgZXhlYy0+cHJvcGVydHlOYW1lcygpLnByb3RvdHlwZSwgb2JqZWN0UHJvdG90
eXBlLCBEb250RW51bSB8IERvbnREZWxldGUgfCBSZWFkT25seSk7CiAgICAgLy8gbm8uIG9mIGFy
Z3VtZW50cyBmb3IgY29uc3RydWN0b3IKICAgICBwdXREaXJlY3RXaXRob3V0VHJhbnNpdGlvbihl
eGVjLT5nbG9iYWxEYXRhKCksIGV4ZWMtPnByb3BlcnR5TmFtZXMoKS5sZW5ndGgsIGpzTnVtYmVy
KDEpLCBSZWFkT25seSB8IERvbnRFbnVtIHwgRG9udERlbGV0ZSk7CiB9CiAKLWJvb2wgT2JqZWN0
Q29uc3RydWN0b3I6OmdldE93blByb3BlcnR5U2xvdChKU0NlbGwqIGNlbGwsIEV4ZWNTdGF0ZSog
ZXhlYywgY29uc3QgSWRlbnRpZmllciYgcHJvcGVydHlOYW1lLCBQcm9wZXJ0eVNsb3QgJnNsb3Qp
Citib29sIE9iamVjdENvbnN0cnVjdG9yOjpnZXRPd25Qcm9wZXJ0eVNsb3QoSlNDZWxsKiBjZWxs
LCBFeGVjU3RhdGUqIGV4ZWMsIFByb3BlcnR5TmFtZSBwcm9wZXJ0eU5hbWUsIFByb3BlcnR5U2xv
dCAmc2xvdCkKIHsKICAgICByZXR1cm4gZ2V0U3RhdGljRnVuY3Rpb25TbG90PEpTT2JqZWN0Pihl
eGVjLCBFeGVjU3RhdGU6Om9iamVjdENvbnN0cnVjdG9yVGFibGUoZXhlYyksIGpzQ2FzdDxPYmpl
Y3RDb25zdHJ1Y3Rvcio+KGNlbGwpLCBwcm9wZXJ0eU5hbWUsIHNsb3QpOwogfQogCi1ib29sIE9i
amVjdENvbnN0cnVjdG9yOjpnZXRPd25Qcm9wZXJ0eURlc2NyaXB0b3IoSlNPYmplY3QqIG9iamVj
dCwgRXhlY1N0YXRlKiBleGVjLCBjb25zdCBJZGVudGlmaWVyJiBwcm9wZXJ0eU5hbWUsIFByb3Bl
cnR5RGVzY3JpcHRvciYgZGVzY3JpcHRvcikKK2Jvb2wgT2JqZWN0Q29uc3RydWN0b3I6OmdldE93
blByb3BlcnR5RGVzY3JpcHRvcihKU09iamVjdCogb2JqZWN0LCBFeGVjU3RhdGUqIGV4ZWMsIFBy
b3BlcnR5TmFtZSBwcm9wZXJ0eU5hbWUsIFByb3BlcnR5RGVzY3JpcHRvciYgZGVzY3JpcHRvcikK
IHsKICAgICByZXR1cm4gZ2V0U3RhdGljRnVuY3Rpb25EZXNjcmlwdG9yPEpTT2JqZWN0PihleGVj
LCBFeGVjU3RhdGU6Om9iamVjdENvbnN0cnVjdG9yVGFibGUoZXhlYyksIGpzQ2FzdDxPYmplY3RD
b25zdHJ1Y3Rvcio+KG9iamVjdCksIHByb3BlcnR5TmFtZSwgZGVzY3JpcHRvcik7CiB9CkluZGV4
OiBTb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9PYmplY3RDb25zdHJ1Y3Rvci5oCj09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT0KLS0tIFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL09iamVjdENvbnN0cnVjdG9y
LmgJKHJldmlzaW9uIDExNjY2NykKKysrIFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL09i
amVjdENvbnN0cnVjdG9yLmgJKHdvcmtpbmcgY29weSkKQEAgLTM4LDggKzM4LDggQEAgbmFtZXNw
YWNlIEpTQyB7CiAgICAgICAgICAgICByZXR1cm4gY29uc3RydWN0b3I7CiAgICAgICAgIH0KIAot
ICAgICAgICBzdGF0aWMgYm9vbCBnZXRPd25Qcm9wZXJ0eVNsb3QoSlNDZWxsKiwgRXhlY1N0YXRl
KiwgY29uc3QgSWRlbnRpZmllciYsIFByb3BlcnR5U2xvdCYpOwotICAgICAgICBzdGF0aWMgYm9v
bCBnZXRPd25Qcm9wZXJ0eURlc2NyaXB0b3IoSlNPYmplY3QqLCBFeGVjU3RhdGUqLCBjb25zdCBJ
ZGVudGlmaWVyJiwgUHJvcGVydHlEZXNjcmlwdG9yJik7CisgICAgICAgIHN0YXRpYyBib29sIGdl
dE93blByb3BlcnR5U2xvdChKU0NlbGwqLCBFeGVjU3RhdGUqLCBQcm9wZXJ0eU5hbWUsIFByb3Bl
cnR5U2xvdCYpOworICAgICAgICBzdGF0aWMgYm9vbCBnZXRPd25Qcm9wZXJ0eURlc2NyaXB0b3Io
SlNPYmplY3QqLCBFeGVjU3RhdGUqLCBQcm9wZXJ0eU5hbWUsIFByb3BlcnR5RGVzY3JpcHRvciYp
OwogCiAgICAgICAgIHN0YXRpYyBjb25zdCBDbGFzc0luZm8gc19pbmZvOwogCkluZGV4OiBTb3Vy
Y2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9PYmplY3RQcm90b3R5cGUuY3BwCj09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0K
LS0tIFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL09iamVjdFByb3RvdHlwZS5jcHAJKHJl
dmlzaW9uIDExNjY2NykKKysrIFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL09iamVjdFBy
b3RvdHlwZS5jcHAJKHdvcmtpbmcgY29weSkKQEAgLTc3LDI4ICs3NywyMiBAQCB2b2lkIE9iamVj
dFByb3RvdHlwZTo6ZmluaXNoQ3JlYXRpb24oSlNHCiAgICAgQVNTRVJUKGluaGVyaXRzKCZzX2lu
Zm8pKTsKIH0KIAotdm9pZCBPYmplY3RQcm90b3R5cGU6OnB1dChKU0NlbGwqIGNlbGwsIEV4ZWNT
dGF0ZSogZXhlYywgY29uc3QgSWRlbnRpZmllciYgcHJvcGVydHlOYW1lLCBKU1ZhbHVlIHZhbHVl
LCBQdXRQcm9wZXJ0eVNsb3QmIHNsb3QpCit2b2lkIE9iamVjdFByb3RvdHlwZTo6cHV0KEpTQ2Vs
bCogY2VsbCwgRXhlY1N0YXRlKiBleGVjLCBQcm9wZXJ0eU5hbWUgcHJvcGVydHlOYW1lLCBKU1Zh
bHVlIHZhbHVlLCBQdXRQcm9wZXJ0eVNsb3QmIHNsb3QpCiB7CiAgICAgT2JqZWN0UHJvdG90eXBl
KiB0aGlzT2JqZWN0ID0ganNDYXN0PE9iamVjdFByb3RvdHlwZSo+KGNlbGwpOwogICAgIEJhc2U6
OnB1dChjZWxsLCBleGVjLCBwcm9wZXJ0eU5hbWUsIHZhbHVlLCBzbG90KTsKIAotICAgIGlmICh0
aGlzT2JqZWN0LT5tX2hhc05vUHJvcGVydGllc1dpdGhVSW50MzJOYW1lcykgewotICAgICAgICBi
b29sIGlzVUludDMyOwotICAgICAgICBwcm9wZXJ0eU5hbWUudG9VSW50MzIoaXNVSW50MzIpOwot
ICAgICAgICB0aGlzT2JqZWN0LT5tX2hhc05vUHJvcGVydGllc1dpdGhVSW50MzJOYW1lcyA9ICFp
c1VJbnQzMjsKLSAgICB9CisgICAgaWYgKHRoaXNPYmplY3QtPm1faGFzTm9Qcm9wZXJ0aWVzV2l0
aFVJbnQzMk5hbWVzICYmIHByb3BlcnR5TmFtZS5hc0luZGV4KCkgIT0gUHJvcGVydHlOYW1lOjpO
b3RBbkluZGV4KQorICAgICAgICB0aGlzT2JqZWN0LT5tX2hhc05vUHJvcGVydGllc1dpdGhVSW50
MzJOYW1lcyA9IGZhbHNlOwogfQogCi1ib29sIE9iamVjdFByb3RvdHlwZTo6ZGVmaW5lT3duUHJv
cGVydHkoSlNPYmplY3QqIG9iamVjdCwgRXhlY1N0YXRlKiBleGVjLCBjb25zdCBJZGVudGlmaWVy
JiBwcm9wZXJ0eU5hbWUsIFByb3BlcnR5RGVzY3JpcHRvciYgZGVzY3JpcHRvciwgYm9vbCBzaG91
bGRUaHJvdykKK2Jvb2wgT2JqZWN0UHJvdG90eXBlOjpkZWZpbmVPd25Qcm9wZXJ0eShKU09iamVj
dCogb2JqZWN0LCBFeGVjU3RhdGUqIGV4ZWMsIFByb3BlcnR5TmFtZSBwcm9wZXJ0eU5hbWUsIFBy
b3BlcnR5RGVzY3JpcHRvciYgZGVzY3JpcHRvciwgYm9vbCBzaG91bGRUaHJvdykKIHsKICAgICBP
YmplY3RQcm90b3R5cGUqIHRoaXNPYmplY3QgPSBqc0Nhc3Q8T2JqZWN0UHJvdG90eXBlKj4ob2Jq
ZWN0KTsKICAgICBib29sIHJlc3VsdCA9IEJhc2U6OmRlZmluZU93blByb3BlcnR5KG9iamVjdCwg
ZXhlYywgcHJvcGVydHlOYW1lLCBkZXNjcmlwdG9yLCBzaG91bGRUaHJvdyk7CiAKLSAgICBpZiAo
dGhpc09iamVjdC0+bV9oYXNOb1Byb3BlcnRpZXNXaXRoVUludDMyTmFtZXMpIHsKLSAgICAgICAg
Ym9vbCBpc1VJbnQzMjsKLSAgICAgICAgcHJvcGVydHlOYW1lLnRvVUludDMyKGlzVUludDMyKTsK
LSAgICAgICAgdGhpc09iamVjdC0+bV9oYXNOb1Byb3BlcnRpZXNXaXRoVUludDMyTmFtZXMgPSAh
aXNVSW50MzI7Ci0gICAgfQorICAgIGlmICh0aGlzT2JqZWN0LT5tX2hhc05vUHJvcGVydGllc1dp
dGhVSW50MzJOYW1lcyAmJiBwcm9wZXJ0eU5hbWUuYXNJbmRleCgpICE9IFByb3BlcnR5TmFtZTo6
Tm90QW5JbmRleCkKKyAgICAgICAgdGhpc09iamVjdC0+bV9oYXNOb1Byb3BlcnRpZXNXaXRoVUlu
dDMyTmFtZXMgPSBmYWxzZTsKIAogICAgIHJldHVybiByZXN1bHQ7CiB9CkBAIC0xMTEsMTIgKzEw
NSwxMiBAQCBib29sIE9iamVjdFByb3RvdHlwZTo6Z2V0T3duUHJvcGVydHlTbG90CiAgICAgcmV0
dXJuIEJhc2U6OmdldE93blByb3BlcnR5U2xvdEJ5SW5kZXgodGhpc09iamVjdCwgZXhlYywgcHJv
cGVydHlOYW1lLCBzbG90KTsKIH0KIAotYm9vbCBPYmplY3RQcm90b3R5cGU6OmdldE93blByb3Bl
cnR5U2xvdChKU0NlbGwqIGNlbGwsIEV4ZWNTdGF0ZSogZXhlYywgY29uc3QgSWRlbnRpZmllciYg
cHJvcGVydHlOYW1lLCBQcm9wZXJ0eVNsb3QgJnNsb3QpCitib29sIE9iamVjdFByb3RvdHlwZTo6
Z2V0T3duUHJvcGVydHlTbG90KEpTQ2VsbCogY2VsbCwgRXhlY1N0YXRlKiBleGVjLCBQcm9wZXJ0
eU5hbWUgcHJvcGVydHlOYW1lLCBQcm9wZXJ0eVNsb3QgJnNsb3QpCiB7CiAgICAgcmV0dXJuIGdl
dFN0YXRpY0Z1bmN0aW9uU2xvdDxKU05vbkZpbmFsT2JqZWN0PihleGVjLCBFeGVjU3RhdGU6Om9i
amVjdFByb3RvdHlwZVRhYmxlKGV4ZWMpLCBqc0Nhc3Q8T2JqZWN0UHJvdG90eXBlKj4oY2VsbCks
IHByb3BlcnR5TmFtZSwgc2xvdCk7CiB9CiAKLWJvb2wgT2JqZWN0UHJvdG90eXBlOjpnZXRPd25Q
cm9wZXJ0eURlc2NyaXB0b3IoSlNPYmplY3QqIG9iamVjdCwgRXhlY1N0YXRlKiBleGVjLCBjb25z
dCBJZGVudGlmaWVyJiBwcm9wZXJ0eU5hbWUsIFByb3BlcnR5RGVzY3JpcHRvciYgZGVzY3JpcHRv
cikKK2Jvb2wgT2JqZWN0UHJvdG90eXBlOjpnZXRPd25Qcm9wZXJ0eURlc2NyaXB0b3IoSlNPYmpl
Y3QqIG9iamVjdCwgRXhlY1N0YXRlKiBleGVjLCBQcm9wZXJ0eU5hbWUgcHJvcGVydHlOYW1lLCBQ
cm9wZXJ0eURlc2NyaXB0b3ImIGRlc2NyaXB0b3IpCiB7CiAgICAgcmV0dXJuIGdldFN0YXRpY0Z1
bmN0aW9uRGVzY3JpcHRvcjxKU05vbkZpbmFsT2JqZWN0PihleGVjLCBFeGVjU3RhdGU6Om9iamVj
dFByb3RvdHlwZVRhYmxlKGV4ZWMpLCBqc0Nhc3Q8T2JqZWN0UHJvdG90eXBlKj4ob2JqZWN0KSwg
cHJvcGVydHlOYW1lLCBkZXNjcmlwdG9yKTsKIH0KSW5kZXg6IFNvdXJjZS9KYXZhU2NyaXB0Q29y
ZS9ydW50aW1lL09iamVjdFByb3RvdHlwZS5oCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9KYXZhU2Ny
aXB0Q29yZS9ydW50aW1lL09iamVjdFByb3RvdHlwZS5oCShyZXZpc2lvbiAxMTY2NjcpCisrKyBT
b3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9PYmplY3RQcm90b3R5cGUuaAkod29ya2luZyBj
b3B5KQpAQCAtNTAsMTIgKzUwLDEyIEBAIG5hbWVzcGFjZSBKU0MgewogCiAgICAgcHJpdmF0ZToK
ICAgICAgICAgT2JqZWN0UHJvdG90eXBlKEV4ZWNTdGF0ZSosIFN0cnVjdHVyZSopOwotICAgICAg
ICBzdGF0aWMgdm9pZCBwdXQoSlNDZWxsKiwgRXhlY1N0YXRlKiwgY29uc3QgSWRlbnRpZmllciYs
IEpTVmFsdWUsIFB1dFByb3BlcnR5U2xvdCYpOwotICAgICAgICBzdGF0aWMgYm9vbCBkZWZpbmVP
d25Qcm9wZXJ0eShKU09iamVjdCosIEV4ZWNTdGF0ZSosIGNvbnN0IElkZW50aWZpZXImIHByb3Bl
cnR5TmFtZSwgUHJvcGVydHlEZXNjcmlwdG9yJiwgYm9vbCBzaG91bGRUaHJvdyk7CisgICAgICAg
IHN0YXRpYyB2b2lkIHB1dChKU0NlbGwqLCBFeGVjU3RhdGUqLCBQcm9wZXJ0eU5hbWUsIEpTVmFs
dWUsIFB1dFByb3BlcnR5U2xvdCYpOworICAgICAgICBzdGF0aWMgYm9vbCBkZWZpbmVPd25Qcm9w
ZXJ0eShKU09iamVjdCosIEV4ZWNTdGF0ZSosIFByb3BlcnR5TmFtZSwgUHJvcGVydHlEZXNjcmlw
dG9yJiwgYm9vbCBzaG91bGRUaHJvdyk7CiAKLSAgICAgICAgc3RhdGljIGJvb2wgZ2V0T3duUHJv
cGVydHlTbG90KEpTQ2VsbCosIEV4ZWNTdGF0ZSosIGNvbnN0IElkZW50aWZpZXImLCBQcm9wZXJ0
eVNsb3QmKTsKKyAgICAgICAgc3RhdGljIGJvb2wgZ2V0T3duUHJvcGVydHlTbG90KEpTQ2VsbCos
IEV4ZWNTdGF0ZSosIFByb3BlcnR5TmFtZSwgUHJvcGVydHlTbG90Jik7CiAgICAgICAgIHN0YXRp
YyBib29sIGdldE93blByb3BlcnR5U2xvdEJ5SW5kZXgoSlNDZWxsKiwgRXhlY1N0YXRlKiwgdW5z
aWduZWQgcHJvcGVydHlOYW1lLCBQcm9wZXJ0eVNsb3QmKTsKLSAgICAgICAgc3RhdGljIGJvb2wg
Z2V0T3duUHJvcGVydHlEZXNjcmlwdG9yKEpTT2JqZWN0KiwgRXhlY1N0YXRlKiwgY29uc3QgSWRl
bnRpZmllciYsIFByb3BlcnR5RGVzY3JpcHRvciYpOworICAgICAgICBzdGF0aWMgYm9vbCBnZXRP
d25Qcm9wZXJ0eURlc2NyaXB0b3IoSlNPYmplY3QqLCBFeGVjU3RhdGUqLCBQcm9wZXJ0eU5hbWUs
IFByb3BlcnR5RGVzY3JpcHRvciYpOwogCiAgICAgICAgIGJvb2wgbV9oYXNOb1Byb3BlcnRpZXNX
aXRoVUludDMyTmFtZXM7CiAgICAgfTsKSW5kZXg6IFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50
aW1lL1Byb3BlcnR5TmFtZS5oCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9y
dW50aW1lL1Byb3BlcnR5TmFtZS5oCShyZXZpc2lvbiAwKQorKysgU291cmNlL0phdmFTY3JpcHRD
b3JlL3J1bnRpbWUvUHJvcGVydHlOYW1lLmgJKHJldmlzaW9uIDApCkBAIC0wLDAgKzEsMTMxIEBA
CisvKgorICogQ29weXJpZ2h0IChDKSAyMDEyIEFwcGxlIEluYy4gQWxsIHJpZ2h0cyByZXNlcnZl
ZC4KKyAqCisgKiBSZWRpc3RyaWJ1dGlvbiBhbmQgdXNlIGluIHNvdXJjZSBhbmQgYmluYXJ5IGZv
cm1zLCB3aXRoIG9yIHdpdGhvdXQKKyAqIG1vZGlmaWNhdGlvbiwgYXJlIHBlcm1pdHRlZCBwcm92
aWRlZCB0aGF0IHRoZSBmb2xsb3dpbmcgY29uZGl0aW9ucworICogYXJlIG1ldDoKKyAqIDEuIFJl
ZGlzdHJpYnV0aW9ucyBvZiBzb3VyY2UgY29kZSBtdXN0IHJldGFpbiB0aGUgYWJvdmUgY29weXJp
Z2h0CisgKiAgICBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93
aW5nIGRpc2NsYWltZXIuCisgKiAyLiBSZWRpc3RyaWJ1dGlvbnMgaW4gYmluYXJ5IGZvcm0gbXVz
dCByZXByb2R1Y2UgdGhlIGFib3ZlIGNvcHlyaWdodAorICogICAgbm90aWNlLCB0aGlzIGxpc3Qg
b2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyIGluIHRoZQorICogICAg
ZG9jdW1lbnRhdGlvbiBhbmQvb3Igb3RoZXIgbWF0ZXJpYWxzIHByb3ZpZGVkIHdpdGggdGhlIGRp
c3RyaWJ1dGlvbi4KKyAqCisgKiBUSElTIFNPRlRXQVJFIElTIFBST1ZJREVEIEJZIEFQUExFIElO
Qy4gQU5EIElUUyBDT05UUklCVVRPUlMgYGBBUyBJUycnCisgKiBBTkQgQU5ZIEVYUFJFU1MgT1Ig
SU1QTElFRCBXQVJSQU5USUVTLCBJTkNMVURJTkcsIEJVVCBOT1QgTElNSVRFRCBUTywKKyAqIFRI
RSBJTVBMSUVEIFdBUlJBTlRJRVMgT0YgTUVSQ0hBTlRBQklMSVRZIEFORCBGSVRORVNTIEZPUiBB
IFBBUlRJQ1VMQVIKKyAqIFBVUlBPU0UgQVJFIERJU0NMQUlNRUQuIElOIE5PIEVWRU5UIFNIQUxM
IEFQUExFIElOQy4gT1IgSVRTIENPTlRSSUJVVE9SUworICogQkUgTElBQkxFIEZPUiBBTlkgRElS
RUNULCBJTkRJUkVDVCwgSU5DSURFTlRBTCwgU1BFQ0lBTCwgRVhFTVBMQVJZLCBPUgorICogQ09O
U0VRVUVOVElBTCBEQU1BR0VTIChJTkNMVURJTkcsIEJVVCBOT1QgTElNSVRFRCBUTywgUFJPQ1VS
RU1FTlQgT0YKKyAqIFNVQlNUSVRVVEUgR09PRFMgT1IgU0VSVklDRVM7IExPU1MgT0YgVVNFLCBE
QVRBLCBPUiBQUk9GSVRTOyBPUiBCVVNJTkVTUworICogSU5URVJSVVBUSU9OKSBIT1dFVkVSIENB
VVNFRCBBTkQgT04gQU5ZIFRIRU9SWSBPRiBMSUFCSUxJVFksIFdIRVRIRVIgSU4KKyAqIENPTlRS
QUNULCBTVFJJQ1QgTElBQklMSVRZLCBPUiBUT1JUIChJTkNMVURJTkcgTkVHTElHRU5DRSBPUiBP
VEhFUldJU0UpCisgKiBBUklTSU5HIElOIEFOWSBXQVkgT1VUIE9GIFRIRSBVU0UgT0YgVEhJUyBT
T0ZUV0FSRSwgRVZFTiBJRiBBRFZJU0VEIE9GCisgKiBUSEUgUE9TU0lCSUxJVFkgT0YgU1VDSCBE
QU1BR0UuCisgKi8KKworI2lmbmRlZiBQcm9wZXJ0eU5hbWVfaAorI2RlZmluZSBQcm9wZXJ0eU5h
bWVfaAorCisjaW5jbHVkZSAiSWRlbnRpZmllci5oIgorCituYW1lc3BhY2UgSlNDIHsKKwordGVt
cGxhdGUgPHR5cGVuYW1lIENoYXJUeXBlPgorQUxXQVlTX0lOTElORSB1aW50MzJfdCB0b1VJbnQz
MkZyb21DaGFyYWN0ZXJzKGNvbnN0IENoYXJUeXBlKiBjaGFyYWN0ZXJzLCB1bnNpZ25lZCBsZW5n
dGgpCit7CisgICAgLy8gQW4gZW1wdHkgc3RyaW5nIGlzIG5vdCBhIG51bWJlci4KKyAgICBpZiAo
IWxlbmd0aCkKKyAgICAgICAgcmV0dXJuIDA7CisKKyAgICAvLyBHZXQgdGhlIGZpcnN0IGNoYXJh
Y3RlciwgdHVybmluZyBpdCBpbnRvIGEgZGlnaXQuCisgICAgdWludDMyX3QgdmFsdWUgPSBjaGFy
YWN0ZXJzWzBdIC0gJzAnOworICAgIGlmICh2YWx1ZSA+IDkpCisgICAgICAgIHJldHVybiBVSU5U
X01BWDsKKyAgICAKKyAgICAvLyBDaGVjayBmb3IgbGVhZGluZyB6ZXJvcy4gSWYgdGhlIGZpcnN0
IGNoYXJhY2hlciBpcyAwLCB0aGVuIHRoZQorICAgIC8vIGxlbmd0aCBvZiB0aGUgc3RyaW5nIG11
c3QgYmUgb25lIC0gZS5nLiAiMDQyIiBpcyBub3QgZXF1YWwgdG8gIjQyIi4KKyAgICBpZiAoIXZh
bHVlICYmIGxlbmd0aCA+IDEpCisgICAgICAgIHJldHVybiBVSU5UX01BWDsKKyAgICAKKyAgICB3
aGlsZSAoLS1sZW5ndGgpIHsKKyAgICAgICAgLy8gTXVsdGlwbHkgdmFsdWUgYnkgMTAsIGNoZWNr
aW5nIGZvciBvdmVyZmxvdyBvdXQgb2YgMzIgYml0cy4KKyAgICAgICAgaWYgKHZhbHVlID4gMHhG
RkZGRkZGRlUgLyAxMCkKKyAgICAgICAgICAgIHJldHVybiBVSU5UX01BWDsKKyAgICAgICAgdmFs
dWUgKj0gMTA7CisgICAgICAgIAorICAgICAgICAvLyBHZXQgdGhlIG5leHQgY2hhcmFjdGVyLCB0
dXJuaW5nIGl0IGludG8gYSBkaWdpdC4KKyAgICAgICAgdWludDMyX3QgbmV3VmFsdWUgPSAqKCsr
Y2hhcmFjdGVycykgLSAnMCc7CisgICAgICAgIGlmIChuZXdWYWx1ZSA+IDkpCisgICAgICAgICAg
ICByZXR1cm4gVUlOVF9NQVg7CisgICAgICAgIAorICAgICAgICAvLyBBZGQgaW4gdGhlIG9sZCB2
YWx1ZSwgY2hlY2tpbmcgZm9yIG92ZXJmbG93IG91dCBvZiAzMiBiaXRzLgorICAgICAgICBuZXdW
YWx1ZSArPSB2YWx1ZTsKKyAgICAgICAgaWYgKG5ld1ZhbHVlIDwgdmFsdWUpCisgICAgICAgICAg
ICByZXR1cm4gVUlOVF9NQVg7CisgICAgICAgIHZhbHVlID0gbmV3VmFsdWU7CisgICAgfQorICAg
IAorICAgIHJldHVybiB2YWx1ZTsKK30KKworQUxXQVlTX0lOTElORSB1aW50MzJfdCB0b1VJbnQz
MkZyb21TdHJpbmdJbXBsKFN0cmluZ0ltcGwqIGltcGwpCit7CisgICAgaWYgKGltcGwtPmlzOEJp
dCgpKQorICAgICAgICByZXR1cm4gdG9VSW50MzJGcm9tQ2hhcmFjdGVycyhpbXBsLT5jaGFyYWN0
ZXJzOCgpLCBpbXBsLT5sZW5ndGgoKSk7CisgICAgcmV0dXJuIHRvVUludDMyRnJvbUNoYXJhY3Rl
cnMoaW1wbC0+Y2hhcmFjdGVyczE2KCksIGltcGwtPmxlbmd0aCgpKTsKK30KKworY2xhc3MgUHJv
cGVydHlOYW1lIHsKK3B1YmxpYzoKKyAgICBQcm9wZXJ0eU5hbWUoY29uc3QgSWRlbnRpZmllciYg
cHJvcGVydHlOYW1lKQorICAgICAgICA6IG1faW1wbChwcm9wZXJ0eU5hbWUuaW1wbCgpKQorICAg
IHsKKyAgICAgICAgQVNTRVJUKCFwcm9wZXJ0eU5hbWUuaXNOdWxsKCkpOworICAgIH0KKworICAg
IFN0cmluZ0ltcGwqIGltcGwoKSBjb25zdCB7IHJldHVybiBtX2ltcGw7IH0KKyAgICBVU3RyaW5n
IHVzdHJpbmcoKSBjb25zdCB7IHJldHVybiBtX2ltcGw7IH0KKworICAgIHN0YXRpYyBjb25zdCB1
aW50MzJfdCBOb3RBbkluZGV4ID0gVUlOVF9NQVg7CisgICAgdWludDMyX3QgYXNJbmRleCgpCisg
ICAgeworICAgICAgICByZXR1cm4gdG9VSW50MzJGcm9tU3RyaW5nSW1wbChtX2ltcGwpOworICAg
IH0KKworcHJpdmF0ZToKKyAgICBTdHJpbmdJbXBsKiBtX2ltcGw7Cit9OworCitpbmxpbmUgYm9v
bCBvcGVyYXRvcj09KFByb3BlcnR5TmFtZSBhLCBjb25zdCBJZGVudGlmaWVyJiBiKQoreworICAg
IHJldHVybiBhLmltcGwoKSA9PSBiLmltcGwoKTsKK30KKworaW5saW5lIGJvb2wgb3BlcmF0b3I9
PShjb25zdCBJZGVudGlmaWVyJiBhLCBQcm9wZXJ0eU5hbWUgYikKK3sKKyAgICByZXR1cm4gYS5p
bXBsKCkgPT0gYi5pbXBsKCk7Cit9CisKK2lubGluZSBib29sIG9wZXJhdG9yPT0oUHJvcGVydHlO
YW1lIGEsIFByb3BlcnR5TmFtZSBiKQoreworICAgIHJldHVybiBhLmltcGwoKSA9PSBiLmltcGwo
KTsKK30KKworaW5saW5lIGJvb2wgb3BlcmF0b3IhPShQcm9wZXJ0eU5hbWUgYSwgY29uc3QgSWRl
bnRpZmllciYgYikKK3sKKyAgICByZXR1cm4gYS5pbXBsKCkgIT0gYi5pbXBsKCk7Cit9CisKK2lu
bGluZSBib29sIG9wZXJhdG9yIT0oY29uc3QgSWRlbnRpZmllciYgYSwgUHJvcGVydHlOYW1lIGIp
Cit7CisgICAgcmV0dXJuIGEuaW1wbCgpICE9IGIuaW1wbCgpOworfQorCitpbmxpbmUgYm9vbCBv
cGVyYXRvciE9KFByb3BlcnR5TmFtZSBhLCBQcm9wZXJ0eU5hbWUgYikKK3sKKyAgICByZXR1cm4g
YS5pbXBsKCkgIT0gYi5pbXBsKCk7Cit9CisKK30KKworI2VuZGlmCkluZGV4OiBTb3VyY2UvSmF2
YVNjcmlwdENvcmUvcnVudGltZS9Qcm9wZXJ0eVNsb3QuaAo9PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2Uv
SmF2YVNjcmlwdENvcmUvcnVudGltZS9Qcm9wZXJ0eVNsb3QuaAkocmV2aXNpb24gMTE2NjY3KQor
KysgU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvUHJvcGVydHlTbG90LmgJKHdvcmtpbmcg
Y29weSkKQEAgLTIxLDggKzIxLDggQEAKICNpZm5kZWYgUHJvcGVydHlTbG90X2gKICNkZWZpbmUg
UHJvcGVydHlTbG90X2gKIAotI2luY2x1ZGUgIklkZW50aWZpZXIuaCIKICNpbmNsdWRlICJKU1Zh
bHVlLmgiCisjaW5jbHVkZSAiUHJvcGVydHlOYW1lLmgiCiAjaW5jbHVkZSAiUmVnaXN0ZXIuaCIK
ICNpbmNsdWRlIDx3dGYvQXNzZXJ0aW9ucy5oPgogI2luY2x1ZGUgPHd0Zi9Ob3RGb3VuZC5oPgpA
QCAtNjEsMTAgKzYxLDEwIEBAIG5hbWVzcGFjZSBKU0MgewogICAgICAgICAgICAgY2xlYXJWYWx1
ZSgpOwogICAgICAgICB9CiAKLSAgICAgICAgdHlwZWRlZiBKU1ZhbHVlICgqR2V0VmFsdWVGdW5j
KShFeGVjU3RhdGUqLCBKU1ZhbHVlIHNsb3RCYXNlLCBjb25zdCBJZGVudGlmaWVyJik7CisgICAg
ICAgIHR5cGVkZWYgSlNWYWx1ZSAoKkdldFZhbHVlRnVuYykoRXhlY1N0YXRlKiwgSlNWYWx1ZSBz
bG90QmFzZSwgUHJvcGVydHlOYW1lKTsKICAgICAgICAgdHlwZWRlZiBKU1ZhbHVlICgqR2V0SW5k
ZXhWYWx1ZUZ1bmMpKEV4ZWNTdGF0ZSosIEpTVmFsdWUgc2xvdEJhc2UsIHVuc2lnbmVkKTsKIAot
ICAgICAgICBKU1ZhbHVlIGdldFZhbHVlKEV4ZWNTdGF0ZSogZXhlYywgY29uc3QgSWRlbnRpZmll
ciYgcHJvcGVydHlOYW1lKSBjb25zdAorICAgICAgICBKU1ZhbHVlIGdldFZhbHVlKEV4ZWNTdGF0
ZSogZXhlYywgUHJvcGVydHlOYW1lIHByb3BlcnR5TmFtZSkgY29uc3QKICAgICAgICAgewogICAg
ICAgICAgICAgaWYgKG1fZ2V0VmFsdWUgPT0gSlNDX1ZBTFVFX01BUktFUikKICAgICAgICAgICAg
ICAgICByZXR1cm4gbV92YWx1ZTsKSW5kZXg6IFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1l
L1JlZ0V4cENvbnN0cnVjdG9yLmNwcAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvSmF2YVNjcmlwdENv
cmUvcnVudGltZS9SZWdFeHBDb25zdHJ1Y3Rvci5jcHAJKHJldmlzaW9uIDExNjY2NykKKysrIFNv
dXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL1JlZ0V4cENvbnN0cnVjdG9yLmNwcAkod29ya2lu
ZyBjb3B5KQpAQCAtMjgsMjEgKzI4LDIxIEBACiAKIG5hbWVzcGFjZSBKU0MgewogCi1zdGF0aWMg
SlNWYWx1ZSByZWdFeHBDb25zdHJ1Y3RvcklucHV0KEV4ZWNTdGF0ZSosIEpTVmFsdWUsIGNvbnN0
IElkZW50aWZpZXImKTsKLXN0YXRpYyBKU1ZhbHVlIHJlZ0V4cENvbnN0cnVjdG9yTXVsdGlsaW5l
KEV4ZWNTdGF0ZSosIEpTVmFsdWUsIGNvbnN0IElkZW50aWZpZXImKTsKLXN0YXRpYyBKU1ZhbHVl
IHJlZ0V4cENvbnN0cnVjdG9yTGFzdE1hdGNoKEV4ZWNTdGF0ZSosIEpTVmFsdWUsIGNvbnN0IElk
ZW50aWZpZXImKTsKLXN0YXRpYyBKU1ZhbHVlIHJlZ0V4cENvbnN0cnVjdG9yTGFzdFBhcmVuKEV4
ZWNTdGF0ZSosIEpTVmFsdWUsIGNvbnN0IElkZW50aWZpZXImKTsKLXN0YXRpYyBKU1ZhbHVlIHJl
Z0V4cENvbnN0cnVjdG9yTGVmdENvbnRleHQoRXhlY1N0YXRlKiwgSlNWYWx1ZSwgY29uc3QgSWRl
bnRpZmllciYpOwotc3RhdGljIEpTVmFsdWUgcmVnRXhwQ29uc3RydWN0b3JSaWdodENvbnRleHQo
RXhlY1N0YXRlKiwgSlNWYWx1ZSwgY29uc3QgSWRlbnRpZmllciYpOwotc3RhdGljIEpTVmFsdWUg
cmVnRXhwQ29uc3RydWN0b3JEb2xsYXIxKEV4ZWNTdGF0ZSosIEpTVmFsdWUsIGNvbnN0IElkZW50
aWZpZXImKTsKLXN0YXRpYyBKU1ZhbHVlIHJlZ0V4cENvbnN0cnVjdG9yRG9sbGFyMihFeGVjU3Rh
dGUqLCBKU1ZhbHVlLCBjb25zdCBJZGVudGlmaWVyJik7Ci1zdGF0aWMgSlNWYWx1ZSByZWdFeHBD
b25zdHJ1Y3RvckRvbGxhcjMoRXhlY1N0YXRlKiwgSlNWYWx1ZSwgY29uc3QgSWRlbnRpZmllciYp
Owotc3RhdGljIEpTVmFsdWUgcmVnRXhwQ29uc3RydWN0b3JEb2xsYXI0KEV4ZWNTdGF0ZSosIEpT
VmFsdWUsIGNvbnN0IElkZW50aWZpZXImKTsKLXN0YXRpYyBKU1ZhbHVlIHJlZ0V4cENvbnN0cnVj
dG9yRG9sbGFyNShFeGVjU3RhdGUqLCBKU1ZhbHVlLCBjb25zdCBJZGVudGlmaWVyJik7Ci1zdGF0
aWMgSlNWYWx1ZSByZWdFeHBDb25zdHJ1Y3RvckRvbGxhcjYoRXhlY1N0YXRlKiwgSlNWYWx1ZSwg
Y29uc3QgSWRlbnRpZmllciYpOwotc3RhdGljIEpTVmFsdWUgcmVnRXhwQ29uc3RydWN0b3JEb2xs
YXI3KEV4ZWNTdGF0ZSosIEpTVmFsdWUsIGNvbnN0IElkZW50aWZpZXImKTsKLXN0YXRpYyBKU1Zh
bHVlIHJlZ0V4cENvbnN0cnVjdG9yRG9sbGFyOChFeGVjU3RhdGUqLCBKU1ZhbHVlLCBjb25zdCBJ
ZGVudGlmaWVyJik7Ci1zdGF0aWMgSlNWYWx1ZSByZWdFeHBDb25zdHJ1Y3RvckRvbGxhcjkoRXhl
Y1N0YXRlKiwgSlNWYWx1ZSwgY29uc3QgSWRlbnRpZmllciYpOworc3RhdGljIEpTVmFsdWUgcmVn
RXhwQ29uc3RydWN0b3JJbnB1dChFeGVjU3RhdGUqLCBKU1ZhbHVlLCBQcm9wZXJ0eU5hbWUpOwor
c3RhdGljIEpTVmFsdWUgcmVnRXhwQ29uc3RydWN0b3JNdWx0aWxpbmUoRXhlY1N0YXRlKiwgSlNW
YWx1ZSwgUHJvcGVydHlOYW1lKTsKK3N0YXRpYyBKU1ZhbHVlIHJlZ0V4cENvbnN0cnVjdG9yTGFz
dE1hdGNoKEV4ZWNTdGF0ZSosIEpTVmFsdWUsIFByb3BlcnR5TmFtZSk7CitzdGF0aWMgSlNWYWx1
ZSByZWdFeHBDb25zdHJ1Y3Rvckxhc3RQYXJlbihFeGVjU3RhdGUqLCBKU1ZhbHVlLCBQcm9wZXJ0
eU5hbWUpOworc3RhdGljIEpTVmFsdWUgcmVnRXhwQ29uc3RydWN0b3JMZWZ0Q29udGV4dChFeGVj
U3RhdGUqLCBKU1ZhbHVlLCBQcm9wZXJ0eU5hbWUpOworc3RhdGljIEpTVmFsdWUgcmVnRXhwQ29u
c3RydWN0b3JSaWdodENvbnRleHQoRXhlY1N0YXRlKiwgSlNWYWx1ZSwgUHJvcGVydHlOYW1lKTsK
K3N0YXRpYyBKU1ZhbHVlIHJlZ0V4cENvbnN0cnVjdG9yRG9sbGFyMShFeGVjU3RhdGUqLCBKU1Zh
bHVlLCBQcm9wZXJ0eU5hbWUpOworc3RhdGljIEpTVmFsdWUgcmVnRXhwQ29uc3RydWN0b3JEb2xs
YXIyKEV4ZWNTdGF0ZSosIEpTVmFsdWUsIFByb3BlcnR5TmFtZSk7CitzdGF0aWMgSlNWYWx1ZSBy
ZWdFeHBDb25zdHJ1Y3RvckRvbGxhcjMoRXhlY1N0YXRlKiwgSlNWYWx1ZSwgUHJvcGVydHlOYW1l
KTsKK3N0YXRpYyBKU1ZhbHVlIHJlZ0V4cENvbnN0cnVjdG9yRG9sbGFyNChFeGVjU3RhdGUqLCBK
U1ZhbHVlLCBQcm9wZXJ0eU5hbWUpOworc3RhdGljIEpTVmFsdWUgcmVnRXhwQ29uc3RydWN0b3JE
b2xsYXI1KEV4ZWNTdGF0ZSosIEpTVmFsdWUsIFByb3BlcnR5TmFtZSk7CitzdGF0aWMgSlNWYWx1
ZSByZWdFeHBDb25zdHJ1Y3RvckRvbGxhcjYoRXhlY1N0YXRlKiwgSlNWYWx1ZSwgUHJvcGVydHlO
YW1lKTsKK3N0YXRpYyBKU1ZhbHVlIHJlZ0V4cENvbnN0cnVjdG9yRG9sbGFyNyhFeGVjU3RhdGUq
LCBKU1ZhbHVlLCBQcm9wZXJ0eU5hbWUpOworc3RhdGljIEpTVmFsdWUgcmVnRXhwQ29uc3RydWN0
b3JEb2xsYXI4KEV4ZWNTdGF0ZSosIEpTVmFsdWUsIFByb3BlcnR5TmFtZSk7CitzdGF0aWMgSlNW
YWx1ZSByZWdFeHBDb25zdHJ1Y3RvckRvbGxhcjkoRXhlY1N0YXRlKiwgSlNWYWx1ZSwgUHJvcGVy
dHlOYW1lKTsKIAogc3RhdGljIHZvaWQgc2V0UmVnRXhwQ29uc3RydWN0b3JJbnB1dChFeGVjU3Rh
dGUqLCBKU09iamVjdCosIEpTVmFsdWUpOwogc3RhdGljIHZvaWQgc2V0UmVnRXhwQ29uc3RydWN0
b3JNdWx0aWxpbmUoRXhlY1N0YXRlKiwgSlNPYmplY3QqLCBKU1ZhbHVlKTsKQEAgLTkyLDcgKzky
LDcgQEAgUmVnRXhwQ29uc3RydWN0b3I6OlJlZ0V4cENvbnN0cnVjdG9yKEpTRwogCiB2b2lkIFJl
Z0V4cENvbnN0cnVjdG9yOjpmaW5pc2hDcmVhdGlvbihFeGVjU3RhdGUqIGV4ZWMsIFJlZ0V4cFBy
b3RvdHlwZSogcmVnRXhwUHJvdG90eXBlKQogewotICAgIEJhc2U6OmZpbmlzaENyZWF0aW9uKGV4
ZWMtPmdsb2JhbERhdGEoKSwgSWRlbnRpZmllcihleGVjLCAiUmVnRXhwIikpOworICAgIEJhc2U6
OmZpbmlzaENyZWF0aW9uKGV4ZWMtPmdsb2JhbERhdGEoKSwgSWRlbnRpZmllcihleGVjLCAiUmVn
RXhwIikudXN0cmluZygpKTsKICAgICBBU1NFUlQoaW5oZXJpdHMoJnNfaW5mbykpOwogCiAgICAg
Ly8gRUNNQSAxNS4xMC41LjEgUmVnRXhwLnByb3RvdHlwZQpAQCAtMTU0LDkyICsxNTQsOTIgQEAg
SlNWYWx1ZSBSZWdFeHBDb25zdHJ1Y3Rvcjo6Z2V0UmlnaHRDb250ZQogICAgIHJldHVybiBtX2Nh
Y2hlZFJlc3VsdC5sYXN0UmVzdWx0KGV4ZWMsIHRoaXMpLT5yaWdodENvbnRleHQoZXhlYyk7CiB9
CiAgICAgCi1ib29sIFJlZ0V4cENvbnN0cnVjdG9yOjpnZXRPd25Qcm9wZXJ0eVNsb3QoSlNDZWxs
KiBjZWxsLCBFeGVjU3RhdGUqIGV4ZWMsIGNvbnN0IElkZW50aWZpZXImIHByb3BlcnR5TmFtZSwg
UHJvcGVydHlTbG90JiBzbG90KQorYm9vbCBSZWdFeHBDb25zdHJ1Y3Rvcjo6Z2V0T3duUHJvcGVy
dHlTbG90KEpTQ2VsbCogY2VsbCwgRXhlY1N0YXRlKiBleGVjLCBQcm9wZXJ0eU5hbWUgcHJvcGVy
dHlOYW1lLCBQcm9wZXJ0eVNsb3QmIHNsb3QpCiB7CiAgICAgcmV0dXJuIGdldFN0YXRpY1ZhbHVl
U2xvdDxSZWdFeHBDb25zdHJ1Y3RvciwgSW50ZXJuYWxGdW5jdGlvbj4oZXhlYywgRXhlY1N0YXRl
OjpyZWdFeHBDb25zdHJ1Y3RvclRhYmxlKGV4ZWMpLCBqc0Nhc3Q8UmVnRXhwQ29uc3RydWN0b3Iq
PihjZWxsKSwgcHJvcGVydHlOYW1lLCBzbG90KTsKIH0KIAotYm9vbCBSZWdFeHBDb25zdHJ1Y3Rv
cjo6Z2V0T3duUHJvcGVydHlEZXNjcmlwdG9yKEpTT2JqZWN0KiBvYmplY3QsIEV4ZWNTdGF0ZSog
ZXhlYywgY29uc3QgSWRlbnRpZmllciYgcHJvcGVydHlOYW1lLCBQcm9wZXJ0eURlc2NyaXB0b3Im
IGRlc2NyaXB0b3IpCitib29sIFJlZ0V4cENvbnN0cnVjdG9yOjpnZXRPd25Qcm9wZXJ0eURlc2Ny
aXB0b3IoSlNPYmplY3QqIG9iamVjdCwgRXhlY1N0YXRlKiBleGVjLCBQcm9wZXJ0eU5hbWUgcHJv
cGVydHlOYW1lLCBQcm9wZXJ0eURlc2NyaXB0b3ImIGRlc2NyaXB0b3IpCiB7CiAgICAgcmV0dXJu
IGdldFN0YXRpY1ZhbHVlRGVzY3JpcHRvcjxSZWdFeHBDb25zdHJ1Y3RvciwgSW50ZXJuYWxGdW5j
dGlvbj4oZXhlYywgRXhlY1N0YXRlOjpyZWdFeHBDb25zdHJ1Y3RvclRhYmxlKGV4ZWMpLCBqc0Nh
c3Q8UmVnRXhwQ29uc3RydWN0b3IqPihvYmplY3QpLCBwcm9wZXJ0eU5hbWUsIGRlc2NyaXB0b3Ip
OwogfQogCi1KU1ZhbHVlIHJlZ0V4cENvbnN0cnVjdG9yRG9sbGFyMShFeGVjU3RhdGUqIGV4ZWMs
IEpTVmFsdWUgc2xvdEJhc2UsIGNvbnN0IElkZW50aWZpZXImKQorSlNWYWx1ZSByZWdFeHBDb25z
dHJ1Y3RvckRvbGxhcjEoRXhlY1N0YXRlKiBleGVjLCBKU1ZhbHVlIHNsb3RCYXNlLCBQcm9wZXJ0
eU5hbWUpCiB7CiAgICAgcmV0dXJuIGFzUmVnRXhwQ29uc3RydWN0b3Ioc2xvdEJhc2UpLT5nZXRC
YWNrcmVmKGV4ZWMsIDEpOwogfQogCi1KU1ZhbHVlIHJlZ0V4cENvbnN0cnVjdG9yRG9sbGFyMihF
eGVjU3RhdGUqIGV4ZWMsIEpTVmFsdWUgc2xvdEJhc2UsIGNvbnN0IElkZW50aWZpZXImKQorSlNW
YWx1ZSByZWdFeHBDb25zdHJ1Y3RvckRvbGxhcjIoRXhlY1N0YXRlKiBleGVjLCBKU1ZhbHVlIHNs
b3RCYXNlLCBQcm9wZXJ0eU5hbWUpCiB7CiAgICAgcmV0dXJuIGFzUmVnRXhwQ29uc3RydWN0b3Io
c2xvdEJhc2UpLT5nZXRCYWNrcmVmKGV4ZWMsIDIpOwogfQogCi1KU1ZhbHVlIHJlZ0V4cENvbnN0
cnVjdG9yRG9sbGFyMyhFeGVjU3RhdGUqIGV4ZWMsIEpTVmFsdWUgc2xvdEJhc2UsIGNvbnN0IElk
ZW50aWZpZXImKQorSlNWYWx1ZSByZWdFeHBDb25zdHJ1Y3RvckRvbGxhcjMoRXhlY1N0YXRlKiBl
eGVjLCBKU1ZhbHVlIHNsb3RCYXNlLCBQcm9wZXJ0eU5hbWUpCiB7CiAgICAgcmV0dXJuIGFzUmVn
RXhwQ29uc3RydWN0b3Ioc2xvdEJhc2UpLT5nZXRCYWNrcmVmKGV4ZWMsIDMpOwogfQogCi1KU1Zh
bHVlIHJlZ0V4cENvbnN0cnVjdG9yRG9sbGFyNChFeGVjU3RhdGUqIGV4ZWMsIEpTVmFsdWUgc2xv
dEJhc2UsIGNvbnN0IElkZW50aWZpZXImKQorSlNWYWx1ZSByZWdFeHBDb25zdHJ1Y3RvckRvbGxh
cjQoRXhlY1N0YXRlKiBleGVjLCBKU1ZhbHVlIHNsb3RCYXNlLCBQcm9wZXJ0eU5hbWUpCiB7CiAg
ICAgcmV0dXJuIGFzUmVnRXhwQ29uc3RydWN0b3Ioc2xvdEJhc2UpLT5nZXRCYWNrcmVmKGV4ZWMs
IDQpOwogfQogCi1KU1ZhbHVlIHJlZ0V4cENvbnN0cnVjdG9yRG9sbGFyNShFeGVjU3RhdGUqIGV4
ZWMsIEpTVmFsdWUgc2xvdEJhc2UsIGNvbnN0IElkZW50aWZpZXImKQorSlNWYWx1ZSByZWdFeHBD
b25zdHJ1Y3RvckRvbGxhcjUoRXhlY1N0YXRlKiBleGVjLCBKU1ZhbHVlIHNsb3RCYXNlLCBQcm9w
ZXJ0eU5hbWUpCiB7CiAgICAgcmV0dXJuIGFzUmVnRXhwQ29uc3RydWN0b3Ioc2xvdEJhc2UpLT5n
ZXRCYWNrcmVmKGV4ZWMsIDUpOwogfQogCi1KU1ZhbHVlIHJlZ0V4cENvbnN0cnVjdG9yRG9sbGFy
NihFeGVjU3RhdGUqIGV4ZWMsIEpTVmFsdWUgc2xvdEJhc2UsIGNvbnN0IElkZW50aWZpZXImKQor
SlNWYWx1ZSByZWdFeHBDb25zdHJ1Y3RvckRvbGxhcjYoRXhlY1N0YXRlKiBleGVjLCBKU1ZhbHVl
IHNsb3RCYXNlLCBQcm9wZXJ0eU5hbWUpCiB7CiAgICAgcmV0dXJuIGFzUmVnRXhwQ29uc3RydWN0
b3Ioc2xvdEJhc2UpLT5nZXRCYWNrcmVmKGV4ZWMsIDYpOwogfQogCi1KU1ZhbHVlIHJlZ0V4cENv
bnN0cnVjdG9yRG9sbGFyNyhFeGVjU3RhdGUqIGV4ZWMsIEpTVmFsdWUgc2xvdEJhc2UsIGNvbnN0
IElkZW50aWZpZXImKQorSlNWYWx1ZSByZWdFeHBDb25zdHJ1Y3RvckRvbGxhcjcoRXhlY1N0YXRl
KiBleGVjLCBKU1ZhbHVlIHNsb3RCYXNlLCBQcm9wZXJ0eU5hbWUpCiB7CiAgICAgcmV0dXJuIGFz
UmVnRXhwQ29uc3RydWN0b3Ioc2xvdEJhc2UpLT5nZXRCYWNrcmVmKGV4ZWMsIDcpOwogfQogCi1K
U1ZhbHVlIHJlZ0V4cENvbnN0cnVjdG9yRG9sbGFyOChFeGVjU3RhdGUqIGV4ZWMsIEpTVmFsdWUg
c2xvdEJhc2UsIGNvbnN0IElkZW50aWZpZXImKQorSlNWYWx1ZSByZWdFeHBDb25zdHJ1Y3RvckRv
bGxhcjgoRXhlY1N0YXRlKiBleGVjLCBKU1ZhbHVlIHNsb3RCYXNlLCBQcm9wZXJ0eU5hbWUpCiB7
CiAgICAgcmV0dXJuIGFzUmVnRXhwQ29uc3RydWN0b3Ioc2xvdEJhc2UpLT5nZXRCYWNrcmVmKGV4
ZWMsIDgpOwogfQogCi1KU1ZhbHVlIHJlZ0V4cENvbnN0cnVjdG9yRG9sbGFyOShFeGVjU3RhdGUq
IGV4ZWMsIEpTVmFsdWUgc2xvdEJhc2UsIGNvbnN0IElkZW50aWZpZXImKQorSlNWYWx1ZSByZWdF
eHBDb25zdHJ1Y3RvckRvbGxhcjkoRXhlY1N0YXRlKiBleGVjLCBKU1ZhbHVlIHNsb3RCYXNlLCBQ
cm9wZXJ0eU5hbWUpCiB7CiAgICAgcmV0dXJuIGFzUmVnRXhwQ29uc3RydWN0b3Ioc2xvdEJhc2Up
LT5nZXRCYWNrcmVmKGV4ZWMsIDkpOwogfQogCi1KU1ZhbHVlIHJlZ0V4cENvbnN0cnVjdG9ySW5w
dXQoRXhlY1N0YXRlKiwgSlNWYWx1ZSBzbG90QmFzZSwgY29uc3QgSWRlbnRpZmllciYpCitKU1Zh
bHVlIHJlZ0V4cENvbnN0cnVjdG9ySW5wdXQoRXhlY1N0YXRlKiwgSlNWYWx1ZSBzbG90QmFzZSwg
UHJvcGVydHlOYW1lKQogewogICAgIHJldHVybiBhc1JlZ0V4cENvbnN0cnVjdG9yKHNsb3RCYXNl
KS0+aW5wdXQoKTsKIH0KIAotSlNWYWx1ZSByZWdFeHBDb25zdHJ1Y3Rvck11bHRpbGluZShFeGVj
U3RhdGUqLCBKU1ZhbHVlIHNsb3RCYXNlLCBjb25zdCBJZGVudGlmaWVyJikKK0pTVmFsdWUgcmVn
RXhwQ29uc3RydWN0b3JNdWx0aWxpbmUoRXhlY1N0YXRlKiwgSlNWYWx1ZSBzbG90QmFzZSwgUHJv
cGVydHlOYW1lKQogewogICAgIHJldHVybiBqc0Jvb2xlYW4oYXNSZWdFeHBDb25zdHJ1Y3Rvcihz
bG90QmFzZSktPm11bHRpbGluZSgpKTsKIH0KIAotSlNWYWx1ZSByZWdFeHBDb25zdHJ1Y3Rvckxh
c3RNYXRjaChFeGVjU3RhdGUqIGV4ZWMsIEpTVmFsdWUgc2xvdEJhc2UsIGNvbnN0IElkZW50aWZp
ZXImKQorSlNWYWx1ZSByZWdFeHBDb25zdHJ1Y3Rvckxhc3RNYXRjaChFeGVjU3RhdGUqIGV4ZWMs
IEpTVmFsdWUgc2xvdEJhc2UsIFByb3BlcnR5TmFtZSkKIHsKICAgICByZXR1cm4gYXNSZWdFeHBD
b25zdHJ1Y3RvcihzbG90QmFzZSktPmdldEJhY2tyZWYoZXhlYywgMCk7CiB9CiAKLUpTVmFsdWUg
cmVnRXhwQ29uc3RydWN0b3JMYXN0UGFyZW4oRXhlY1N0YXRlKiBleGVjLCBKU1ZhbHVlIHNsb3RC
YXNlLCBjb25zdCBJZGVudGlmaWVyJikKK0pTVmFsdWUgcmVnRXhwQ29uc3RydWN0b3JMYXN0UGFy
ZW4oRXhlY1N0YXRlKiBleGVjLCBKU1ZhbHVlIHNsb3RCYXNlLCBQcm9wZXJ0eU5hbWUpCiB7CiAg
ICAgcmV0dXJuIGFzUmVnRXhwQ29uc3RydWN0b3Ioc2xvdEJhc2UpLT5nZXRMYXN0UGFyZW4oZXhl
Yyk7CiB9CiAKLUpTVmFsdWUgcmVnRXhwQ29uc3RydWN0b3JMZWZ0Q29udGV4dChFeGVjU3RhdGUq
IGV4ZWMsIEpTVmFsdWUgc2xvdEJhc2UsIGNvbnN0IElkZW50aWZpZXImKQorSlNWYWx1ZSByZWdF
eHBDb25zdHJ1Y3RvckxlZnRDb250ZXh0KEV4ZWNTdGF0ZSogZXhlYywgSlNWYWx1ZSBzbG90QmFz
ZSwgUHJvcGVydHlOYW1lKQogewogICAgIHJldHVybiBhc1JlZ0V4cENvbnN0cnVjdG9yKHNsb3RC
YXNlKS0+Z2V0TGVmdENvbnRleHQoZXhlYyk7CiB9CiAKLUpTVmFsdWUgcmVnRXhwQ29uc3RydWN0
b3JSaWdodENvbnRleHQoRXhlY1N0YXRlKiBleGVjLCBKU1ZhbHVlIHNsb3RCYXNlLCBjb25zdCBJ
ZGVudGlmaWVyJikKK0pTVmFsdWUgcmVnRXhwQ29uc3RydWN0b3JSaWdodENvbnRleHQoRXhlY1N0
YXRlKiBleGVjLCBKU1ZhbHVlIHNsb3RCYXNlLCBQcm9wZXJ0eU5hbWUpCiB7CiAgICAgcmV0dXJu
IGFzUmVnRXhwQ29uc3RydWN0b3Ioc2xvdEJhc2UpLT5nZXRSaWdodENvbnRleHQoZXhlYyk7CiB9
CiAKLXZvaWQgUmVnRXhwQ29uc3RydWN0b3I6OnB1dChKU0NlbGwqIGNlbGwsIEV4ZWNTdGF0ZSog
ZXhlYywgY29uc3QgSWRlbnRpZmllciYgcHJvcGVydHlOYW1lLCBKU1ZhbHVlIHZhbHVlLCBQdXRQ
cm9wZXJ0eVNsb3QmIHNsb3QpCit2b2lkIFJlZ0V4cENvbnN0cnVjdG9yOjpwdXQoSlNDZWxsKiBj
ZWxsLCBFeGVjU3RhdGUqIGV4ZWMsIFByb3BlcnR5TmFtZSBwcm9wZXJ0eU5hbWUsIEpTVmFsdWUg
dmFsdWUsIFB1dFByb3BlcnR5U2xvdCYgc2xvdCkKIHsKICAgICBsb29rdXBQdXQ8UmVnRXhwQ29u
c3RydWN0b3IsIEludGVybmFsRnVuY3Rpb24+KGV4ZWMsIHByb3BlcnR5TmFtZSwgdmFsdWUsIEV4
ZWNTdGF0ZTo6cmVnRXhwQ29uc3RydWN0b3JUYWJsZShleGVjKSwganNDYXN0PFJlZ0V4cENvbnN0
cnVjdG9yKj4oY2VsbCksIHNsb3QpOwogfQpJbmRleDogU291cmNlL0phdmFTY3JpcHRDb3JlL3J1
bnRpbWUvUmVnRXhwQ29uc3RydWN0b3IuaAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvSmF2YVNjcmlw
dENvcmUvcnVudGltZS9SZWdFeHBDb25zdHJ1Y3Rvci5oCShyZXZpc2lvbiAxMTY2NjcpCisrKyBT
b3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9SZWdFeHBDb25zdHJ1Y3Rvci5oCSh3b3JraW5n
IGNvcHkpCkBAIC00OCwxMCArNDgsMTAgQEAgbmFtZXNwYWNlIEpTQyB7CiAgICAgICAgICAgICBy
ZXR1cm4gU3RydWN0dXJlOjpjcmVhdGUoZ2xvYmFsRGF0YSwgZ2xvYmFsT2JqZWN0LCBwcm90b3R5
cGUsIFR5cGVJbmZvKE9iamVjdFR5cGUsIFN0cnVjdHVyZUZsYWdzKSwgJnNfaW5mbyk7CiAgICAg
ICAgIH0KIAotICAgICAgICBzdGF0aWMgdm9pZCBwdXQoSlNDZWxsKiwgRXhlY1N0YXRlKiwgY29u
c3QgSWRlbnRpZmllciYgcHJvcGVydHlOYW1lLCBKU1ZhbHVlLCBQdXRQcm9wZXJ0eVNsb3QmKTsK
KyAgICAgICAgc3RhdGljIHZvaWQgcHV0KEpTQ2VsbCosIEV4ZWNTdGF0ZSosIFByb3BlcnR5TmFt
ZSwgSlNWYWx1ZSwgUHV0UHJvcGVydHlTbG90Jik7CiAKLSAgICAgICAgc3RhdGljIGJvb2wgZ2V0
T3duUHJvcGVydHlTbG90KEpTQ2VsbCosIEV4ZWNTdGF0ZSosIGNvbnN0IElkZW50aWZpZXImIHBy
b3BlcnR5TmFtZSwgUHJvcGVydHlTbG90Jik7Ci0gICAgICAgIHN0YXRpYyBib29sIGdldE93blBy
b3BlcnR5RGVzY3JpcHRvcihKU09iamVjdCosIEV4ZWNTdGF0ZSosIGNvbnN0IElkZW50aWZpZXIm
LCBQcm9wZXJ0eURlc2NyaXB0b3ImKTsKKyAgICAgICAgc3RhdGljIGJvb2wgZ2V0T3duUHJvcGVy
dHlTbG90KEpTQ2VsbCosIEV4ZWNTdGF0ZSosIFByb3BlcnR5TmFtZSwgUHJvcGVydHlTbG90Jik7
CisgICAgICAgIHN0YXRpYyBib29sIGdldE93blByb3BlcnR5RGVzY3JpcHRvcihKU09iamVjdCos
IEV4ZWNTdGF0ZSosIFByb3BlcnR5TmFtZSwgUHJvcGVydHlEZXNjcmlwdG9yJik7CiAKICAgICAg
ICAgc3RhdGljIGNvbnN0IENsYXNzSW5mbyBzX2luZm87CiAKSW5kZXg6IFNvdXJjZS9KYXZhU2Ny
aXB0Q29yZS9ydW50aW1lL1JlZ0V4cE1hdGNoZXNBcnJheS5oCj09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJj
ZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL1JlZ0V4cE1hdGNoZXNBcnJheS5oCShyZXZpc2lvbiAx
MTY2NjcpCisrKyBTb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9SZWdFeHBNYXRjaGVzQXJy
YXkuaAkod29ya2luZyBjb3B5KQpAQCAtODEsNyArODEsNyBAQCBuYW1lc3BhY2UgSlNDIHsKICAg
ICAgICAgICAgICAgICByZWlmeU1hdGNoUHJvcGVydHkoZXhlYyk7CiAgICAgICAgIH0KIAotICAg
ICAgICBzdGF0aWMgYm9vbCBnZXRPd25Qcm9wZXJ0eVNsb3QoSlNDZWxsKiBjZWxsLCBFeGVjU3Rh
dGUqIGV4ZWMsIGNvbnN0IElkZW50aWZpZXImIHByb3BlcnR5TmFtZSwgUHJvcGVydHlTbG90JiBz
bG90KQorICAgICAgICBzdGF0aWMgYm9vbCBnZXRPd25Qcm9wZXJ0eVNsb3QoSlNDZWxsKiBjZWxs
LCBFeGVjU3RhdGUqIGV4ZWMsIFByb3BlcnR5TmFtZSBwcm9wZXJ0eU5hbWUsIFByb3BlcnR5U2xv
dCYgc2xvdCkKICAgICAgICAgewogICAgICAgICAgICAgUmVnRXhwTWF0Y2hlc0FycmF5KiB0aGlz
T2JqZWN0ID0ganNDYXN0PFJlZ0V4cE1hdGNoZXNBcnJheSo+KGNlbGwpOwogICAgICAgICAgICAg
dGhpc09iamVjdC0+cmVpZnlBbGxQcm9wZXJ0aWVzSWZOZWNlc3NhcnkoZXhlYyk7CkBAIC05OCwx
NCArOTgsMTQgQEAgbmFtZXNwYWNlIEpTQyB7CiAgICAgICAgICAgICByZXR1cm4gSlNBcnJheTo6
Z2V0T3duUHJvcGVydHlTbG90QnlJbmRleCh0aGlzT2JqZWN0LCBleGVjLCBwcm9wZXJ0eU5hbWUs
IHNsb3QpOwogICAgICAgICB9CiAKLSAgICAgICAgc3RhdGljIGJvb2wgZ2V0T3duUHJvcGVydHlE
ZXNjcmlwdG9yKEpTT2JqZWN0KiBvYmplY3QsIEV4ZWNTdGF0ZSogZXhlYywgY29uc3QgSWRlbnRp
ZmllciYgcHJvcGVydHlOYW1lLCBQcm9wZXJ0eURlc2NyaXB0b3ImIGRlc2NyaXB0b3IpCisgICAg
ICAgIHN0YXRpYyBib29sIGdldE93blByb3BlcnR5RGVzY3JpcHRvcihKU09iamVjdCogb2JqZWN0
LCBFeGVjU3RhdGUqIGV4ZWMsIFByb3BlcnR5TmFtZSBwcm9wZXJ0eU5hbWUsIFByb3BlcnR5RGVz
Y3JpcHRvciYgZGVzY3JpcHRvcikKICAgICAgICAgewogICAgICAgICAgICAgUmVnRXhwTWF0Y2hl
c0FycmF5KiB0aGlzT2JqZWN0ID0ganNDYXN0PFJlZ0V4cE1hdGNoZXNBcnJheSo+KG9iamVjdCk7
CiAgICAgICAgICAgICB0aGlzT2JqZWN0LT5yZWlmeUFsbFByb3BlcnRpZXNJZk5lY2Vzc2FyeShl
eGVjKTsKICAgICAgICAgICAgIHJldHVybiBKU0FycmF5OjpnZXRPd25Qcm9wZXJ0eURlc2NyaXB0
b3IodGhpc09iamVjdCwgZXhlYywgcHJvcGVydHlOYW1lLCBkZXNjcmlwdG9yKTsKICAgICAgICAg
fQogCi0gICAgICAgIHN0YXRpYyB2b2lkIHB1dChKU0NlbGwqIGNlbGwsIEV4ZWNTdGF0ZSogZXhl
YywgY29uc3QgSWRlbnRpZmllciYgcHJvcGVydHlOYW1lLCBKU1ZhbHVlIHYsIFB1dFByb3BlcnR5
U2xvdCYgc2xvdCkKKyAgICAgICAgc3RhdGljIHZvaWQgcHV0KEpTQ2VsbCogY2VsbCwgRXhlY1N0
YXRlKiBleGVjLCBQcm9wZXJ0eU5hbWUgcHJvcGVydHlOYW1lLCBKU1ZhbHVlIHYsIFB1dFByb3Bl
cnR5U2xvdCYgc2xvdCkKICAgICAgICAgewogICAgICAgICAgICAgUmVnRXhwTWF0Y2hlc0FycmF5
KiB0aGlzT2JqZWN0ID0ganNDYXN0PFJlZ0V4cE1hdGNoZXNBcnJheSo+KGNlbGwpOwogICAgICAg
ICAgICAgdGhpc09iamVjdC0+cmVpZnlBbGxQcm9wZXJ0aWVzSWZOZWNlc3NhcnkoZXhlYyk7CkBA
IC0xMTksNyArMTE5LDcgQEAgbmFtZXNwYWNlIEpTQyB7CiAgICAgICAgICAgICBKU0FycmF5Ojpw
dXRCeUluZGV4KHRoaXNPYmplY3QsIGV4ZWMsIHByb3BlcnR5TmFtZSwgdiwgc2hvdWxkVGhyb3cp
OwogICAgICAgICB9CiAKLSAgICAgICAgc3RhdGljIGJvb2wgZGVsZXRlUHJvcGVydHkoSlNDZWxs
KiBjZWxsLCBFeGVjU3RhdGUqIGV4ZWMsIGNvbnN0IElkZW50aWZpZXImIHByb3BlcnR5TmFtZSkK
KyAgICAgICAgc3RhdGljIGJvb2wgZGVsZXRlUHJvcGVydHkoSlNDZWxsKiBjZWxsLCBFeGVjU3Rh
dGUqIGV4ZWMsIFByb3BlcnR5TmFtZSBwcm9wZXJ0eU5hbWUpCiAgICAgICAgIHsKICAgICAgICAg
ICAgIFJlZ0V4cE1hdGNoZXNBcnJheSogdGhpc09iamVjdCA9IGpzQ2FzdDxSZWdFeHBNYXRjaGVz
QXJyYXkqPihjZWxsKTsKICAgICAgICAgICAgIHRoaXNPYmplY3QtPnJlaWZ5QWxsUHJvcGVydGll
c0lmTmVjZXNzYXJ5KGV4ZWMpOwpAQCAtMTQwLDcgKzE0MCw3IEBAIG5hbWVzcGFjZSBKU0Mgewog
ICAgICAgICAgICAgSlNBcnJheTo6Z2V0T3duUHJvcGVydHlOYW1lcyh0aGlzT2JqZWN0LCBleGVj
LCBhcnIsIG1vZGUpOwogICAgICAgICB9CiAKLSAgICAgICAgc3RhdGljIGJvb2wgZGVmaW5lT3du
UHJvcGVydHkoSlNPYmplY3QqIG9iamVjdCwgRXhlY1N0YXRlKiBleGVjLCBjb25zdCBJZGVudGlm
aWVyJiBwcm9wZXJ0eU5hbWUsIFByb3BlcnR5RGVzY3JpcHRvciYgZGVzY3JpcHRvciwgYm9vbCBz
aG91bGRUaHJvdykKKyAgICAgICAgc3RhdGljIGJvb2wgZGVmaW5lT3duUHJvcGVydHkoSlNPYmpl
Y3QqIG9iamVjdCwgRXhlY1N0YXRlKiBleGVjLCBQcm9wZXJ0eU5hbWUgcHJvcGVydHlOYW1lLCBQ
cm9wZXJ0eURlc2NyaXB0b3ImIGRlc2NyaXB0b3IsIGJvb2wgc2hvdWxkVGhyb3cpCiAgICAgICAg
IHsKICAgICAgICAgICAgIFJlZ0V4cE1hdGNoZXNBcnJheSogdGhpc09iamVjdCA9IGpzQ2FzdDxS
ZWdFeHBNYXRjaGVzQXJyYXkqPihvYmplY3QpOwogICAgICAgICAgICAgdGhpc09iamVjdC0+cmVp
ZnlBbGxQcm9wZXJ0aWVzSWZOZWNlc3NhcnkoZXhlYyk7CkluZGV4OiBTb3VyY2UvSmF2YVNjcmlw
dENvcmUvcnVudGltZS9SZWdFeHBPYmplY3QuY3BwCj09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9KYXZh
U2NyaXB0Q29yZS9ydW50aW1lL1JlZ0V4cE9iamVjdC5jcHAJKHJldmlzaW9uIDExNjY2NykKKysr
IFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL1JlZ0V4cE9iamVjdC5jcHAJKHdvcmtpbmcg
Y29weSkKQEAgLTM3LDEwICszNywxMCBAQAogCiBuYW1lc3BhY2UgSlNDIHsKIAotc3RhdGljIEpT
VmFsdWUgcmVnRXhwT2JqZWN0R2xvYmFsKEV4ZWNTdGF0ZSosIEpTVmFsdWUsIGNvbnN0IElkZW50
aWZpZXImKTsKLXN0YXRpYyBKU1ZhbHVlIHJlZ0V4cE9iamVjdElnbm9yZUNhc2UoRXhlY1N0YXRl
KiwgSlNWYWx1ZSwgY29uc3QgSWRlbnRpZmllciYpOwotc3RhdGljIEpTVmFsdWUgcmVnRXhwT2Jq
ZWN0TXVsdGlsaW5lKEV4ZWNTdGF0ZSosIEpTVmFsdWUsIGNvbnN0IElkZW50aWZpZXImKTsKLXN0
YXRpYyBKU1ZhbHVlIHJlZ0V4cE9iamVjdFNvdXJjZShFeGVjU3RhdGUqLCBKU1ZhbHVlLCBjb25z
dCBJZGVudGlmaWVyJik7CitzdGF0aWMgSlNWYWx1ZSByZWdFeHBPYmplY3RHbG9iYWwoRXhlY1N0
YXRlKiwgSlNWYWx1ZSwgUHJvcGVydHlOYW1lKTsKK3N0YXRpYyBKU1ZhbHVlIHJlZ0V4cE9iamVj
dElnbm9yZUNhc2UoRXhlY1N0YXRlKiwgSlNWYWx1ZSwgUHJvcGVydHlOYW1lKTsKK3N0YXRpYyBK
U1ZhbHVlIHJlZ0V4cE9iamVjdE11bHRpbGluZShFeGVjU3RhdGUqLCBKU1ZhbHVlLCBQcm9wZXJ0
eU5hbWUpOworc3RhdGljIEpTVmFsdWUgcmVnRXhwT2JqZWN0U291cmNlKEV4ZWNTdGF0ZSosIEpT
VmFsdWUsIFByb3BlcnR5TmFtZSk7CiAKIH0gLy8gbmFtZXNwYWNlIEpTQwogCkBAIC04OCw3ICs4
OCw3IEBAIHZvaWQgUmVnRXhwT2JqZWN0Ojp2aXNpdENoaWxkcmVuKEpTQ2VsbCoKICAgICAgICAg
dmlzaXRvci5hcHBlbmQoJnRoaXNPYmplY3QtPm1fbGFzdEluZGV4KTsKIH0KIAotYm9vbCBSZWdF
eHBPYmplY3Q6OmdldE93blByb3BlcnR5U2xvdChKU0NlbGwqIGNlbGwsIEV4ZWNTdGF0ZSogZXhl
YywgY29uc3QgSWRlbnRpZmllciYgcHJvcGVydHlOYW1lLCBQcm9wZXJ0eVNsb3QmIHNsb3QpCiti
b29sIFJlZ0V4cE9iamVjdDo6Z2V0T3duUHJvcGVydHlTbG90KEpTQ2VsbCogY2VsbCwgRXhlY1N0
YXRlKiBleGVjLCBQcm9wZXJ0eU5hbWUgcHJvcGVydHlOYW1lLCBQcm9wZXJ0eVNsb3QmIHNsb3Qp
CiB7CiAgICAgaWYgKHByb3BlcnR5TmFtZSA9PSBleGVjLT5wcm9wZXJ0eU5hbWVzKCkubGFzdElu
ZGV4KSB7CiAgICAgICAgIFJlZ0V4cE9iamVjdCogcmVnRXhwID0gYXNSZWdFeHBPYmplY3QoY2Vs
bCk7CkBAIC05OCw3ICs5OCw3IEBAIGJvb2wgUmVnRXhwT2JqZWN0OjpnZXRPd25Qcm9wZXJ0eVNs
b3QoSlMKICAgICByZXR1cm4gZ2V0U3RhdGljVmFsdWVTbG90PFJlZ0V4cE9iamVjdCwgSlNPYmpl
Y3Q+KGV4ZWMsIEV4ZWNTdGF0ZTo6cmVnRXhwVGFibGUoZXhlYyksIGpzQ2FzdDxSZWdFeHBPYmpl
Y3QqPihjZWxsKSwgcHJvcGVydHlOYW1lLCBzbG90KTsKIH0KIAotYm9vbCBSZWdFeHBPYmplY3Q6
OmdldE93blByb3BlcnR5RGVzY3JpcHRvcihKU09iamVjdCogb2JqZWN0LCBFeGVjU3RhdGUqIGV4
ZWMsIGNvbnN0IElkZW50aWZpZXImIHByb3BlcnR5TmFtZSwgUHJvcGVydHlEZXNjcmlwdG9yJiBk
ZXNjcmlwdG9yKQorYm9vbCBSZWdFeHBPYmplY3Q6OmdldE93blByb3BlcnR5RGVzY3JpcHRvcihK
U09iamVjdCogb2JqZWN0LCBFeGVjU3RhdGUqIGV4ZWMsIFByb3BlcnR5TmFtZSBwcm9wZXJ0eU5h
bWUsIFByb3BlcnR5RGVzY3JpcHRvciYgZGVzY3JpcHRvcikKIHsKICAgICBpZiAocHJvcGVydHlO
YW1lID09IGV4ZWMtPnByb3BlcnR5TmFtZXMoKS5sYXN0SW5kZXgpIHsKICAgICAgICAgUmVnRXhw
T2JqZWN0KiByZWdFeHAgPSBhc1JlZ0V4cE9iamVjdChvYmplY3QpOwpAQCAtMTA4LDcgKzEwOCw3
IEBAIGJvb2wgUmVnRXhwT2JqZWN0OjpnZXRPd25Qcm9wZXJ0eURlc2NyaXAKICAgICByZXR1cm4g
Z2V0U3RhdGljVmFsdWVEZXNjcmlwdG9yPFJlZ0V4cE9iamVjdCwgSlNPYmplY3Q+KGV4ZWMsIEV4
ZWNTdGF0ZTo6cmVnRXhwVGFibGUoZXhlYyksIGpzQ2FzdDxSZWdFeHBPYmplY3QqPihvYmplY3Qp
LCBwcm9wZXJ0eU5hbWUsIGRlc2NyaXB0b3IpOwogfQogCi1ib29sIFJlZ0V4cE9iamVjdDo6ZGVs
ZXRlUHJvcGVydHkoSlNDZWxsKiBjZWxsLCBFeGVjU3RhdGUqIGV4ZWMsIGNvbnN0IElkZW50aWZp
ZXImIHByb3BlcnR5TmFtZSkKK2Jvb2wgUmVnRXhwT2JqZWN0OjpkZWxldGVQcm9wZXJ0eShKU0Nl
bGwqIGNlbGwsIEV4ZWNTdGF0ZSogZXhlYywgUHJvcGVydHlOYW1lIHByb3BlcnR5TmFtZSkKIHsK
ICAgICBpZiAocHJvcGVydHlOYW1lID09IGV4ZWMtPnByb3BlcnR5TmFtZXMoKS5sYXN0SW5kZXgp
CiAgICAgICAgIHJldHVybiBmYWxzZTsKQEAgLTEzNiw3ICsxMzYsNyBAQCBzdGF0aWMgYm9vbCBy
ZWplY3QoRXhlY1N0YXRlKiBleGVjLCBib29sCiAgICAgcmV0dXJuIGZhbHNlOwogfQogCi1ib29s
IFJlZ0V4cE9iamVjdDo6ZGVmaW5lT3duUHJvcGVydHkoSlNPYmplY3QqIG9iamVjdCwgRXhlY1N0
YXRlKiBleGVjLCBjb25zdCBJZGVudGlmaWVyJiBwcm9wZXJ0eU5hbWUsIFByb3BlcnR5RGVzY3Jp
cHRvciYgZGVzY3JpcHRvciwgYm9vbCBzaG91bGRUaHJvdykKK2Jvb2wgUmVnRXhwT2JqZWN0Ojpk
ZWZpbmVPd25Qcm9wZXJ0eShKU09iamVjdCogb2JqZWN0LCBFeGVjU3RhdGUqIGV4ZWMsIFByb3Bl
cnR5TmFtZSBwcm9wZXJ0eU5hbWUsIFByb3BlcnR5RGVzY3JpcHRvciYgZGVzY3JpcHRvciwgYm9v
bCBzaG91bGRUaHJvdykKIHsKICAgICBpZiAocHJvcGVydHlOYW1lID09IGV4ZWMtPnByb3BlcnR5
TmFtZXMoKS5sYXN0SW5kZXgpIHsKICAgICAgICAgUmVnRXhwT2JqZWN0KiByZWdFeHAgPSBhc1Jl
Z0V4cE9iamVjdChvYmplY3QpOwpAQCAtMTYzLDIyICsxNjMsMjIgQEAgYm9vbCBSZWdFeHBPYmpl
Y3Q6OmRlZmluZU93blByb3BlcnR5KEpTTwogICAgIHJldHVybiBCYXNlOjpkZWZpbmVPd25Qcm9w
ZXJ0eShvYmplY3QsIGV4ZWMsIHByb3BlcnR5TmFtZSwgZGVzY3JpcHRvciwgc2hvdWxkVGhyb3cp
OwogfQogCi1KU1ZhbHVlIHJlZ0V4cE9iamVjdEdsb2JhbChFeGVjU3RhdGUqLCBKU1ZhbHVlIHNs
b3RCYXNlLCBjb25zdCBJZGVudGlmaWVyJikKK0pTVmFsdWUgcmVnRXhwT2JqZWN0R2xvYmFsKEV4
ZWNTdGF0ZSosIEpTVmFsdWUgc2xvdEJhc2UsIFByb3BlcnR5TmFtZSkKIHsKICAgICByZXR1cm4g
anNCb29sZWFuKGFzUmVnRXhwT2JqZWN0KHNsb3RCYXNlKS0+cmVnRXhwKCktPmdsb2JhbCgpKTsK
IH0KIAotSlNWYWx1ZSByZWdFeHBPYmplY3RJZ25vcmVDYXNlKEV4ZWNTdGF0ZSosIEpTVmFsdWUg
c2xvdEJhc2UsIGNvbnN0IElkZW50aWZpZXImKQorSlNWYWx1ZSByZWdFeHBPYmplY3RJZ25vcmVD
YXNlKEV4ZWNTdGF0ZSosIEpTVmFsdWUgc2xvdEJhc2UsIFByb3BlcnR5TmFtZSkKIHsKICAgICBy
ZXR1cm4ganNCb29sZWFuKGFzUmVnRXhwT2JqZWN0KHNsb3RCYXNlKS0+cmVnRXhwKCktPmlnbm9y
ZUNhc2UoKSk7CiB9CiAgCi1KU1ZhbHVlIHJlZ0V4cE9iamVjdE11bHRpbGluZShFeGVjU3RhdGUq
LCBKU1ZhbHVlIHNsb3RCYXNlLCBjb25zdCBJZGVudGlmaWVyJikKK0pTVmFsdWUgcmVnRXhwT2Jq
ZWN0TXVsdGlsaW5lKEV4ZWNTdGF0ZSosIEpTVmFsdWUgc2xvdEJhc2UsIFByb3BlcnR5TmFtZSkK
IHsgICAgICAgICAgICAKICAgICByZXR1cm4ganNCb29sZWFuKGFzUmVnRXhwT2JqZWN0KHNsb3RC
YXNlKS0+cmVnRXhwKCktPm11bHRpbGluZSgpKTsKIH0KIAotSlNWYWx1ZSByZWdFeHBPYmplY3RT
b3VyY2UoRXhlY1N0YXRlKiBleGVjLCBKU1ZhbHVlIHNsb3RCYXNlLCBjb25zdCBJZGVudGlmaWVy
JikKK0pTVmFsdWUgcmVnRXhwT2JqZWN0U291cmNlKEV4ZWNTdGF0ZSogZXhlYywgSlNWYWx1ZSBz
bG90QmFzZSwgUHJvcGVydHlOYW1lKQogewogICAgIFVTdHJpbmcgcGF0dGVybiA9IGFzUmVnRXhw
T2JqZWN0KHNsb3RCYXNlKS0+cmVnRXhwKCktPnBhdHRlcm4oKTsKICAgICB1bnNpZ25lZCBsZW5n
dGggPSBwYXR0ZXJuLmxlbmd0aCgpOwpAQCAtMjY4LDcgKzI2OCw3IEBAIEpTVmFsdWUgcmVnRXhw
T2JqZWN0U291cmNlKEV4ZWNTdGF0ZSogZXgKICAgICByZXR1cm4ganNTdHJpbmcoZXhlYywgcmVz
dWx0LnRvVVN0cmluZygpKTsKIH0KIAotdm9pZCBSZWdFeHBPYmplY3Q6OnB1dChKU0NlbGwqIGNl
bGwsIEV4ZWNTdGF0ZSogZXhlYywgY29uc3QgSWRlbnRpZmllciYgcHJvcGVydHlOYW1lLCBKU1Zh
bHVlIHZhbHVlLCBQdXRQcm9wZXJ0eVNsb3QmIHNsb3QpCit2b2lkIFJlZ0V4cE9iamVjdDo6cHV0
KEpTQ2VsbCogY2VsbCwgRXhlY1N0YXRlKiBleGVjLCBQcm9wZXJ0eU5hbWUgcHJvcGVydHlOYW1l
LCBKU1ZhbHVlIHZhbHVlLCBQdXRQcm9wZXJ0eVNsb3QmIHNsb3QpCiB7CiAgICAgaWYgKHByb3Bl
cnR5TmFtZSA9PSBleGVjLT5wcm9wZXJ0eU5hbWVzKCkubGFzdEluZGV4KSB7CiAgICAgICAgIGFz
UmVnRXhwT2JqZWN0KGNlbGwpLT5zZXRMYXN0SW5kZXgoZXhlYywgdmFsdWUsIHNsb3QuaXNTdHJp
Y3RNb2RlKCkpOwpJbmRleDogU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvUmVnRXhwT2Jq
ZWN0LmgKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PQotLS0gU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvUmVnRXhw
T2JqZWN0LmgJKHJldmlzaW9uIDExNjY2NykKKysrIFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50
aW1lL1JlZ0V4cE9iamVjdC5oCSh3b3JraW5nIGNvcHkpCkBAIC03MCw5ICs3MCw5IEBAIG5hbWVz
cGFjZSBKU0MgewogICAgICAgICBib29sIHRlc3QoRXhlY1N0YXRlKiBleGVjLCBKU1N0cmluZyog
c3RyaW5nKSB7IHJldHVybiBtYXRjaChleGVjLCBzdHJpbmcpOyB9CiAgICAgICAgIEpTVmFsdWUg
ZXhlYyhFeGVjU3RhdGUqLCBKU1N0cmluZyopOwogCi0gICAgICAgIHN0YXRpYyBib29sIGdldE93
blByb3BlcnR5U2xvdChKU0NlbGwqLCBFeGVjU3RhdGUqLCBjb25zdCBJZGVudGlmaWVyJiBwcm9w
ZXJ0eU5hbWUsIFByb3BlcnR5U2xvdCYpOwotICAgICAgICBzdGF0aWMgYm9vbCBnZXRPd25Qcm9w
ZXJ0eURlc2NyaXB0b3IoSlNPYmplY3QqLCBFeGVjU3RhdGUqLCBjb25zdCBJZGVudGlmaWVyJiwg
UHJvcGVydHlEZXNjcmlwdG9yJik7Ci0gICAgICAgIHN0YXRpYyB2b2lkIHB1dChKU0NlbGwqLCBF
eGVjU3RhdGUqLCBjb25zdCBJZGVudGlmaWVyJiBwcm9wZXJ0eU5hbWUsIEpTVmFsdWUsIFB1dFBy
b3BlcnR5U2xvdCYpOworICAgICAgICBzdGF0aWMgYm9vbCBnZXRPd25Qcm9wZXJ0eVNsb3QoSlND
ZWxsKiwgRXhlY1N0YXRlKiwgUHJvcGVydHlOYW1lLCBQcm9wZXJ0eVNsb3QmKTsKKyAgICAgICAg
c3RhdGljIGJvb2wgZ2V0T3duUHJvcGVydHlEZXNjcmlwdG9yKEpTT2JqZWN0KiwgRXhlY1N0YXRl
KiwgUHJvcGVydHlOYW1lLCBQcm9wZXJ0eURlc2NyaXB0b3ImKTsKKyAgICAgICAgc3RhdGljIHZv
aWQgcHV0KEpTQ2VsbCosIEV4ZWNTdGF0ZSosIFByb3BlcnR5TmFtZSwgSlNWYWx1ZSwgUHV0UHJv
cGVydHlTbG90Jik7CiAKICAgICAgICAgc3RhdGljIEpTX0VYUE9SVERBVEEgY29uc3QgQ2xhc3NJ
bmZvIHNfaW5mbzsKIApAQCAtODksMTAgKzg5LDEwIEBAIG5hbWVzcGFjZSBKU0MgewogCiAgICAg
ICAgIHN0YXRpYyB2b2lkIHZpc2l0Q2hpbGRyZW4oSlNDZWxsKiwgU2xvdFZpc2l0b3ImKTsKIAot
ICAgICAgICBKU19FWFBPUlRfUFJJVkFURSBzdGF0aWMgYm9vbCBkZWxldGVQcm9wZXJ0eShKU0Nl
bGwqLCBFeGVjU3RhdGUqLCBjb25zdCBJZGVudGlmaWVyJiBwcm9wZXJ0eU5hbWUpOworICAgICAg
ICBKU19FWFBPUlRfUFJJVkFURSBzdGF0aWMgYm9vbCBkZWxldGVQcm9wZXJ0eShKU0NlbGwqLCBF
eGVjU3RhdGUqLCBQcm9wZXJ0eU5hbWUpOwogICAgICAgICBKU19FWFBPUlRfUFJJVkFURSBzdGF0
aWMgdm9pZCBnZXRPd25Qcm9wZXJ0eU5hbWVzKEpTT2JqZWN0KiwgRXhlY1N0YXRlKiwgUHJvcGVy
dHlOYW1lQXJyYXkmLCBFbnVtZXJhdGlvbk1vZGUpOwogICAgICAgICBKU19FWFBPUlRfUFJJVkFU
RSBzdGF0aWMgdm9pZCBnZXRQcm9wZXJ0eU5hbWVzKEpTT2JqZWN0KiwgRXhlY1N0YXRlKiwgUHJv
cGVydHlOYW1lQXJyYXkmLCBFbnVtZXJhdGlvbk1vZGUpOwotICAgICAgICBKU19FWFBPUlRfUFJJ
VkFURSBzdGF0aWMgYm9vbCBkZWZpbmVPd25Qcm9wZXJ0eShKU09iamVjdCosIEV4ZWNTdGF0ZSos
IGNvbnN0IElkZW50aWZpZXImIHByb3BlcnR5TmFtZSwgUHJvcGVydHlEZXNjcmlwdG9yJiwgYm9v
bCBzaG91bGRUaHJvdyk7CisgICAgICAgIEpTX0VYUE9SVF9QUklWQVRFIHN0YXRpYyBib29sIGRl
ZmluZU93blByb3BlcnR5KEpTT2JqZWN0KiwgRXhlY1N0YXRlKiwgUHJvcGVydHlOYW1lLCBQcm9w
ZXJ0eURlc2NyaXB0b3ImLCBib29sIHNob3VsZFRocm93KTsKIAogICAgIHByaXZhdGU6CiAgICAg
ICAgIE1hdGNoUmVzdWx0IG1hdGNoKEV4ZWNTdGF0ZSosIEpTU3RyaW5nKik7CkluZGV4OiBTb3Vy
Y2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9SZWdFeHBQcm90b3R5cGUuY3BwCj09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0K
LS0tIFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL1JlZ0V4cFByb3RvdHlwZS5jcHAJKHJl
dmlzaW9uIDExNjY2NykKKysrIFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL1JlZ0V4cFBy
b3RvdHlwZS5jcHAJKHdvcmtpbmcgY29weSkKQEAgLTY3LDEyICs2NywxMiBAQCBSZWdFeHBQcm90
b3R5cGU6OlJlZ0V4cFByb3RvdHlwZShKU0dsb2JhCiB7CiB9CiAKLWJvb2wgUmVnRXhwUHJvdG90
eXBlOjpnZXRPd25Qcm9wZXJ0eVNsb3QoSlNDZWxsKiBjZWxsLCBFeGVjU3RhdGUqIGV4ZWMsIGNv
bnN0IElkZW50aWZpZXImIHByb3BlcnR5TmFtZSwgUHJvcGVydHlTbG90ICZzbG90KQorYm9vbCBS
ZWdFeHBQcm90b3R5cGU6OmdldE93blByb3BlcnR5U2xvdChKU0NlbGwqIGNlbGwsIEV4ZWNTdGF0
ZSogZXhlYywgUHJvcGVydHlOYW1lIHByb3BlcnR5TmFtZSwgUHJvcGVydHlTbG90ICZzbG90KQog
ewogICAgIHJldHVybiBnZXRTdGF0aWNGdW5jdGlvblNsb3Q8UmVnRXhwT2JqZWN0PihleGVjLCBF
eGVjU3RhdGU6OnJlZ0V4cFByb3RvdHlwZVRhYmxlKGV4ZWMpLCBqc0Nhc3Q8UmVnRXhwUHJvdG90
eXBlKj4oY2VsbCksIHByb3BlcnR5TmFtZSwgc2xvdCk7CiB9CiAKLWJvb2wgUmVnRXhwUHJvdG90
eXBlOjpnZXRPd25Qcm9wZXJ0eURlc2NyaXB0b3IoSlNPYmplY3QqIG9iamVjdCwgRXhlY1N0YXRl
KiBleGVjLCBjb25zdCBJZGVudGlmaWVyJiBwcm9wZXJ0eU5hbWUsIFByb3BlcnR5RGVzY3JpcHRv
ciYgZGVzY3JpcHRvcikKK2Jvb2wgUmVnRXhwUHJvdG90eXBlOjpnZXRPd25Qcm9wZXJ0eURlc2Ny
aXB0b3IoSlNPYmplY3QqIG9iamVjdCwgRXhlY1N0YXRlKiBleGVjLCBQcm9wZXJ0eU5hbWUgcHJv
cGVydHlOYW1lLCBQcm9wZXJ0eURlc2NyaXB0b3ImIGRlc2NyaXB0b3IpCiB7CiAgICAgcmV0dXJu
IGdldFN0YXRpY0Z1bmN0aW9uRGVzY3JpcHRvcjxSZWdFeHBPYmplY3Q+KGV4ZWMsIEV4ZWNTdGF0
ZTo6cmVnRXhwUHJvdG90eXBlVGFibGUoZXhlYyksIGpzQ2FzdDxSZWdFeHBQcm90b3R5cGUqPihv
YmplY3QpLCBwcm9wZXJ0eU5hbWUsIGRlc2NyaXB0b3IpOwogfQpJbmRleDogU291cmNlL0phdmFT
Y3JpcHRDb3JlL3J1bnRpbWUvUmVnRXhwUHJvdG90eXBlLmgKPT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNl
L0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvUmVnRXhwUHJvdG90eXBlLmgJKHJldmlzaW9uIDExNjY2
NykKKysrIFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL1JlZ0V4cFByb3RvdHlwZS5oCSh3
b3JraW5nIGNvcHkpCkBAIC00OSw4ICs0OSw4IEBAIG5hbWVzcGFjZSBKU0MgewogICAgICAgICBz
dGF0aWMgY29uc3QgdW5zaWduZWQgU3RydWN0dXJlRmxhZ3MgPSBPdmVycmlkZXNHZXRPd25Qcm9w
ZXJ0eVNsb3QgfCBSZWdFeHBPYmplY3Q6OlN0cnVjdHVyZUZsYWdzOwogCiAgICAgcHJpdmF0ZToK
LSAgICAgICAgc3RhdGljIGJvb2wgZ2V0T3duUHJvcGVydHlTbG90KEpTQ2VsbCosIEV4ZWNTdGF0
ZSosIGNvbnN0IElkZW50aWZpZXImLCBQcm9wZXJ0eVNsb3QmKTsKLSAgICAgICAgc3RhdGljIGJv
b2wgZ2V0T3duUHJvcGVydHlEZXNjcmlwdG9yKEpTT2JqZWN0KiwgRXhlY1N0YXRlKiwgY29uc3Qg
SWRlbnRpZmllciYsIFByb3BlcnR5RGVzY3JpcHRvciYpOworICAgICAgICBzdGF0aWMgYm9vbCBn
ZXRPd25Qcm9wZXJ0eVNsb3QoSlNDZWxsKiwgRXhlY1N0YXRlKiwgUHJvcGVydHlOYW1lLCBQcm9w
ZXJ0eVNsb3QmKTsKKyAgICAgICAgc3RhdGljIGJvb2wgZ2V0T3duUHJvcGVydHlEZXNjcmlwdG9y
KEpTT2JqZWN0KiwgRXhlY1N0YXRlKiwgUHJvcGVydHlOYW1lLCBQcm9wZXJ0eURlc2NyaXB0b3Im
KTsKICAgICB9OwogCiB9IC8vIG5hbWVzcGFjZSBKU0MKSW5kZXg6IFNvdXJjZS9KYXZhU2NyaXB0
Q29yZS9ydW50aW1lL1N0cmljdEV2YWxBY3RpdmF0aW9uLmNwcAo9PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3Vy
Y2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9TdHJpY3RFdmFsQWN0aXZhdGlvbi5jcHAJKHJldmlz
aW9uIDExNjY2NykKKysrIFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL1N0cmljdEV2YWxB
Y3RpdmF0aW9uLmNwcAkod29ya2luZyBjb3B5KQpAQCAtMzcsNyArMzcsNyBAQCBTdHJpY3RFdmFs
QWN0aXZhdGlvbjo6U3RyaWN0RXZhbEFjdGl2YXRpCiB7CiB9CiAKLWJvb2wgU3RyaWN0RXZhbEFj
dGl2YXRpb246OmRlbGV0ZVByb3BlcnR5KEpTQ2VsbCosIEV4ZWNTdGF0ZSosIGNvbnN0IElkZW50
aWZpZXImKQorYm9vbCBTdHJpY3RFdmFsQWN0aXZhdGlvbjo6ZGVsZXRlUHJvcGVydHkoSlNDZWxs
KiwgRXhlY1N0YXRlKiwgUHJvcGVydHlOYW1lKQogewogICAgIHJldHVybiBmYWxzZTsKIH0KSW5k
ZXg6IFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL1N0cmljdEV2YWxBY3RpdmF0aW9uLmgK
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PQotLS0gU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvU3RyaWN0RXZhbEFj
dGl2YXRpb24uaAkocmV2aXNpb24gMTE2NjY3KQorKysgU291cmNlL0phdmFTY3JpcHRDb3JlL3J1
bnRpbWUvU3RyaWN0RXZhbEFjdGl2YXRpb24uaAkod29ya2luZyBjb3B5KQpAQCAtNDEsNyArNDEs
NyBAQCBwdWJsaWM6CiAgICAgICAgIHJldHVybiBhY3RpdmF0aW9uOwogICAgIH0KIAotICAgIHN0
YXRpYyBib29sIGRlbGV0ZVByb3BlcnR5KEpTQ2VsbCosIEV4ZWNTdGF0ZSosIGNvbnN0IElkZW50
aWZpZXImKTsKKyAgICBzdGF0aWMgYm9vbCBkZWxldGVQcm9wZXJ0eShKU0NlbGwqLCBFeGVjU3Rh
dGUqLCBQcm9wZXJ0eU5hbWUpOwogICAgIHN0YXRpYyBKU09iamVjdCogdG9UaGlzT2JqZWN0KEpT
Q2VsbCosIEV4ZWNTdGF0ZSopOwogCiAgICAgc3RhdGljIFN0cnVjdHVyZSogY3JlYXRlU3RydWN0
dXJlKEpTR2xvYmFsRGF0YSYgZ2xvYmFsRGF0YSwgSlNHbG9iYWxPYmplY3QqIGdsb2JhbE9iamVj
dCwgSlNWYWx1ZSBwcm90b3R5cGUpCkluZGV4OiBTb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGlt
ZS9TdHJpbmdDb25zdHJ1Y3Rvci5jcHAKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL0phdmFTY3JpcHRD
b3JlL3J1bnRpbWUvU3RyaW5nQ29uc3RydWN0b3IuY3BwCShyZXZpc2lvbiAxMTY2NjcpCisrKyBT
b3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9TdHJpbmdDb25zdHJ1Y3Rvci5jcHAJKHdvcmtp
bmcgY29weSkKQEAgLTU1LDE3ICs1NSwxNyBAQCBTdHJpbmdDb25zdHJ1Y3Rvcjo6U3RyaW5nQ29u
c3RydWN0b3IoSlNHCiAKIHZvaWQgU3RyaW5nQ29uc3RydWN0b3I6OmZpbmlzaENyZWF0aW9uKEV4
ZWNTdGF0ZSogZXhlYywgU3RyaW5nUHJvdG90eXBlKiBzdHJpbmdQcm90b3R5cGUpCiB7Ci0gICAg
QmFzZTo6ZmluaXNoQ3JlYXRpb24oZXhlYy0+Z2xvYmFsRGF0YSgpLCBJZGVudGlmaWVyKGV4ZWMs
IHN0cmluZ1Byb3RvdHlwZS0+Y2xhc3NJbmZvKCktPmNsYXNzTmFtZSkpOworICAgIEJhc2U6OmZp
bmlzaENyZWF0aW9uKGV4ZWMtPmdsb2JhbERhdGEoKSwgc3RyaW5nUHJvdG90eXBlLT5jbGFzc0lu
Zm8oKS0+Y2xhc3NOYW1lKTsKICAgICBwdXREaXJlY3RXaXRob3V0VHJhbnNpdGlvbihleGVjLT5n
bG9iYWxEYXRhKCksIGV4ZWMtPnByb3BlcnR5TmFtZXMoKS5wcm90b3R5cGUsIHN0cmluZ1Byb3Rv
dHlwZSwgUmVhZE9ubHkgfCBEb250RW51bSB8IERvbnREZWxldGUpOwogICAgIHB1dERpcmVjdFdp
dGhvdXRUcmFuc2l0aW9uKGV4ZWMtPmdsb2JhbERhdGEoKSwgZXhlYy0+cHJvcGVydHlOYW1lcygp
Lmxlbmd0aCwganNOdW1iZXIoMSksIFJlYWRPbmx5IHwgRG9udEVudW0gfCBEb250RGVsZXRlKTsK
IH0KIAotYm9vbCBTdHJpbmdDb25zdHJ1Y3Rvcjo6Z2V0T3duUHJvcGVydHlTbG90KEpTQ2VsbCog
Y2VsbCwgRXhlY1N0YXRlKiBleGVjLCBjb25zdCBJZGVudGlmaWVyJiBwcm9wZXJ0eU5hbWUsIFBy
b3BlcnR5U2xvdCAmc2xvdCkKK2Jvb2wgU3RyaW5nQ29uc3RydWN0b3I6OmdldE93blByb3BlcnR5
U2xvdChKU0NlbGwqIGNlbGwsIEV4ZWNTdGF0ZSogZXhlYywgUHJvcGVydHlOYW1lIHByb3BlcnR5
TmFtZSwgUHJvcGVydHlTbG90ICZzbG90KQogewogICAgIHJldHVybiBnZXRTdGF0aWNGdW5jdGlv
blNsb3Q8SW50ZXJuYWxGdW5jdGlvbj4oZXhlYywgRXhlY1N0YXRlOjpzdHJpbmdDb25zdHJ1Y3Rv
clRhYmxlKGV4ZWMpLCBqc0Nhc3Q8U3RyaW5nQ29uc3RydWN0b3IqPihjZWxsKSwgcHJvcGVydHlO
YW1lLCBzbG90KTsKIH0KIAotYm9vbCBTdHJpbmdDb25zdHJ1Y3Rvcjo6Z2V0T3duUHJvcGVydHlE
ZXNjcmlwdG9yKEpTT2JqZWN0KiBvYmplY3QsIEV4ZWNTdGF0ZSogZXhlYywgY29uc3QgSWRlbnRp
ZmllciYgcHJvcGVydHlOYW1lLCBQcm9wZXJ0eURlc2NyaXB0b3ImIGRlc2NyaXB0b3IpCitib29s
IFN0cmluZ0NvbnN0cnVjdG9yOjpnZXRPd25Qcm9wZXJ0eURlc2NyaXB0b3IoSlNPYmplY3QqIG9i
amVjdCwgRXhlY1N0YXRlKiBleGVjLCBQcm9wZXJ0eU5hbWUgcHJvcGVydHlOYW1lLCBQcm9wZXJ0
eURlc2NyaXB0b3ImIGRlc2NyaXB0b3IpCiB7CiAgICAgcmV0dXJuIGdldFN0YXRpY0Z1bmN0aW9u
RGVzY3JpcHRvcjxJbnRlcm5hbEZ1bmN0aW9uPihleGVjLCBFeGVjU3RhdGU6OnN0cmluZ0NvbnN0
cnVjdG9yVGFibGUoZXhlYyksIGpzQ2FzdDxTdHJpbmdDb25zdHJ1Y3Rvcio+KG9iamVjdCksIHBy
b3BlcnR5TmFtZSwgZGVzY3JpcHRvcik7CiB9CkluZGV4OiBTb3VyY2UvSmF2YVNjcmlwdENvcmUv
cnVudGltZS9TdHJpbmdDb25zdHJ1Y3Rvci5oCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9KYXZhU2Ny
aXB0Q29yZS9ydW50aW1lL1N0cmluZ0NvbnN0cnVjdG9yLmgJKHJldmlzaW9uIDExNjY2NykKKysr
IFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL1N0cmluZ0NvbnN0cnVjdG9yLmgJKHdvcmtp
bmcgY29weSkKQEAgLTU0LDggKzU0LDggQEAgbmFtZXNwYWNlIEpTQyB7CiAgICAgICAgIHN0YXRp
YyBDb25zdHJ1Y3RUeXBlIGdldENvbnN0cnVjdERhdGEoSlNDZWxsKiwgQ29uc3RydWN0RGF0YSYp
OwogICAgICAgICBzdGF0aWMgQ2FsbFR5cGUgZ2V0Q2FsbERhdGEoSlNDZWxsKiwgQ2FsbERhdGEm
KTsKIAotICAgICAgICBzdGF0aWMgYm9vbCBnZXRPd25Qcm9wZXJ0eVNsb3QoSlNDZWxsKiwgRXhl
Y1N0YXRlKiwgY29uc3QgSWRlbnRpZmllciYsIFByb3BlcnR5U2xvdCYpOwotICAgICAgICBzdGF0
aWMgYm9vbCBnZXRPd25Qcm9wZXJ0eURlc2NyaXB0b3IoSlNPYmplY3QqLCBFeGVjU3RhdGUqLCBj
b25zdCBJZGVudGlmaWVyJiwgUHJvcGVydHlEZXNjcmlwdG9yJik7CisgICAgICAgIHN0YXRpYyBi
b29sIGdldE93blByb3BlcnR5U2xvdChKU0NlbGwqLCBFeGVjU3RhdGUqLCBQcm9wZXJ0eU5hbWUs
IFByb3BlcnR5U2xvdCYpOworICAgICAgICBzdGF0aWMgYm9vbCBnZXRPd25Qcm9wZXJ0eURlc2Ny
aXB0b3IoSlNPYmplY3QqLCBFeGVjU3RhdGUqLCBQcm9wZXJ0eU5hbWUsIFByb3BlcnR5RGVzY3Jp
cHRvciYpOwogICAgIH07CiAKIH0gLy8gbmFtZXNwYWNlIEpTQwpJbmRleDogU291cmNlL0phdmFT
Y3JpcHRDb3JlL3J1bnRpbWUvU3RyaW5nT2JqZWN0LmNwcAo9PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2Uv
SmF2YVNjcmlwdENvcmUvcnVudGltZS9TdHJpbmdPYmplY3QuY3BwCShyZXZpc2lvbiAxMTY2Njcp
CisrKyBTb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9TdHJpbmdPYmplY3QuY3BwCSh3b3Jr
aW5nIGNvcHkpCkBAIC00Myw3ICs0Myw3IEBAIHZvaWQgU3RyaW5nT2JqZWN0OjpmaW5pc2hDcmVh
dGlvbihKU0dsb2IKICAgICBzZXRJbnRlcm5hbFZhbHVlKGdsb2JhbERhdGEsIHN0cmluZyk7CiB9
CiAKLWJvb2wgU3RyaW5nT2JqZWN0OjpnZXRPd25Qcm9wZXJ0eVNsb3QoSlNDZWxsKiBjZWxsLCBF
eGVjU3RhdGUqIGV4ZWMsIGNvbnN0IElkZW50aWZpZXImIHByb3BlcnR5TmFtZSwgUHJvcGVydHlT
bG90JiBzbG90KQorYm9vbCBTdHJpbmdPYmplY3Q6OmdldE93blByb3BlcnR5U2xvdChKU0NlbGwq
IGNlbGwsIEV4ZWNTdGF0ZSogZXhlYywgUHJvcGVydHlOYW1lIHByb3BlcnR5TmFtZSwgUHJvcGVy
dHlTbG90JiBzbG90KQogewogICAgIFN0cmluZ09iamVjdCogdGhpc09iamVjdCA9IGpzQ2FzdDxT
dHJpbmdPYmplY3QqPihjZWxsKTsKICAgICBpZiAodGhpc09iamVjdC0+aW50ZXJuYWxWYWx1ZSgp
LT5nZXRTdHJpbmdQcm9wZXJ0eVNsb3QoZXhlYywgcHJvcGVydHlOYW1lLCBzbG90KSkKQEAgLTU5
LDcgKzU5LDcgQEAgYm9vbCBTdHJpbmdPYmplY3Q6OmdldE93blByb3BlcnR5U2xvdEJ5SQogICAg
IHJldHVybiBKU09iamVjdDo6Z2V0T3duUHJvcGVydHlTbG90KHRoaXNPYmplY3QsIGV4ZWMsIElk
ZW50aWZpZXI6OmZyb20oZXhlYywgcHJvcGVydHlOYW1lKSwgc2xvdCk7CiB9CiAKLWJvb2wgU3Ry
aW5nT2JqZWN0OjpnZXRPd25Qcm9wZXJ0eURlc2NyaXB0b3IoSlNPYmplY3QqIG9iamVjdCwgRXhl
Y1N0YXRlKiBleGVjLCBjb25zdCBJZGVudGlmaWVyJiBwcm9wZXJ0eU5hbWUsIFByb3BlcnR5RGVz
Y3JpcHRvciYgZGVzY3JpcHRvcikKK2Jvb2wgU3RyaW5nT2JqZWN0OjpnZXRPd25Qcm9wZXJ0eURl
c2NyaXB0b3IoSlNPYmplY3QqIG9iamVjdCwgRXhlY1N0YXRlKiBleGVjLCBQcm9wZXJ0eU5hbWUg
cHJvcGVydHlOYW1lLCBQcm9wZXJ0eURlc2NyaXB0b3ImIGRlc2NyaXB0b3IpCiB7CiAgICAgU3Ry
aW5nT2JqZWN0KiB0aGlzT2JqZWN0ID0ganNDYXN0PFN0cmluZ09iamVjdCo+KG9iamVjdCk7CiAg
ICAgaWYgKHRoaXNPYmplY3QtPmludGVybmFsVmFsdWUoKS0+Z2V0U3RyaW5nUHJvcGVydHlEZXNj
cmlwdG9yKGV4ZWMsIHByb3BlcnR5TmFtZSwgZGVzY3JpcHRvcikpCkBAIC02Nyw3ICs2Nyw3IEBA
IGJvb2wgU3RyaW5nT2JqZWN0OjpnZXRPd25Qcm9wZXJ0eURlc2NyaXAKICAgICByZXR1cm4gSlNP
YmplY3Q6OmdldE93blByb3BlcnR5RGVzY3JpcHRvcih0aGlzT2JqZWN0LCBleGVjLCBwcm9wZXJ0
eU5hbWUsIGRlc2NyaXB0b3IpOwogfQogCi12b2lkIFN0cmluZ09iamVjdDo6cHV0KEpTQ2VsbCog
Y2VsbCwgRXhlY1N0YXRlKiBleGVjLCBjb25zdCBJZGVudGlmaWVyJiBwcm9wZXJ0eU5hbWUsIEpT
VmFsdWUgdmFsdWUsIFB1dFByb3BlcnR5U2xvdCYgc2xvdCkKK3ZvaWQgU3RyaW5nT2JqZWN0Ojpw
dXQoSlNDZWxsKiBjZWxsLCBFeGVjU3RhdGUqIGV4ZWMsIFByb3BlcnR5TmFtZSBwcm9wZXJ0eU5h
bWUsIEpTVmFsdWUgdmFsdWUsIFB1dFByb3BlcnR5U2xvdCYgc2xvdCkKIHsKICAgICBpZiAocHJv
cGVydHlOYW1lID09IGV4ZWMtPnByb3BlcnR5TmFtZXMoKS5sZW5ndGgpIHsKICAgICAgICAgaWYg
KHNsb3QuaXNTdHJpY3RNb2RlKCkpCkBAIC03Nyw3ICs3Nyw3IEBAIHZvaWQgU3RyaW5nT2JqZWN0
OjpwdXQoSlNDZWxsKiBjZWxsLCBFeGUKICAgICBKU09iamVjdDo6cHV0KGNlbGwsIGV4ZWMsIHBy
b3BlcnR5TmFtZSwgdmFsdWUsIHNsb3QpOwogfQogCi1ib29sIFN0cmluZ09iamVjdDo6ZGVmaW5l
T3duUHJvcGVydHkoSlNPYmplY3QqIG9iamVjdCwgRXhlY1N0YXRlKiBleGVjLCBjb25zdCBJZGVu
dGlmaWVyJiBwcm9wZXJ0eU5hbWUsIFByb3BlcnR5RGVzY3JpcHRvciYgZGVzY3JpcHRvciwgYm9v
bCB0aHJvd0V4Y2VwdGlvbikKK2Jvb2wgU3RyaW5nT2JqZWN0OjpkZWZpbmVPd25Qcm9wZXJ0eShK
U09iamVjdCogb2JqZWN0LCBFeGVjU3RhdGUqIGV4ZWMsIFByb3BlcnR5TmFtZSBwcm9wZXJ0eU5h
bWUsIFByb3BlcnR5RGVzY3JpcHRvciYgZGVzY3JpcHRvciwgYm9vbCB0aHJvd0V4Y2VwdGlvbikK
IHsKICAgICBTdHJpbmdPYmplY3QqIHRoaXNPYmplY3QgPSBqc0Nhc3Q8U3RyaW5nT2JqZWN0Kj4o
b2JqZWN0KTsKIApAQCAtMTE5LDE1ICsxMTksMTYgQEAgYm9vbCBTdHJpbmdPYmplY3Q6OmRlZmlu
ZU93blByb3BlcnR5KEpTTwogICAgIHJldHVybiBCYXNlOjpkZWZpbmVPd25Qcm9wZXJ0eShvYmpl
Y3QsIGV4ZWMsIHByb3BlcnR5TmFtZSwgZGVzY3JpcHRvciwgdGhyb3dFeGNlcHRpb24pOwogfQog
Ci1ib29sIFN0cmluZ09iamVjdDo6ZGVsZXRlUHJvcGVydHkoSlNDZWxsKiBjZWxsLCBFeGVjU3Rh
dGUqIGV4ZWMsIGNvbnN0IElkZW50aWZpZXImIHByb3BlcnR5TmFtZSkKK2Jvb2wgU3RyaW5nT2Jq
ZWN0OjpkZWxldGVQcm9wZXJ0eShKU0NlbGwqIGNlbGwsIEV4ZWNTdGF0ZSogZXhlYywgUHJvcGVy
dHlOYW1lIHByb3BlcnR5TmFtZSkKIHsKICAgICBTdHJpbmdPYmplY3QqIHRoaXNPYmplY3QgPSBq
c0Nhc3Q8U3RyaW5nT2JqZWN0Kj4oY2VsbCk7CiAgICAgaWYgKHByb3BlcnR5TmFtZSA9PSBleGVj
LT5wcm9wZXJ0eU5hbWVzKCkubGVuZ3RoKQogICAgICAgICByZXR1cm4gZmFsc2U7Ci0gICAgYm9v
bCBpc1N0cmljdFVJbnQzMjsKLSAgICB1bnNpZ25lZCBpID0gcHJvcGVydHlOYW1lLnRvVUludDMy
KGlzU3RyaWN0VUludDMyKTsKLSAgICBpZiAoaXNTdHJpY3RVSW50MzIgJiYgdGhpc09iamVjdC0+
aW50ZXJuYWxWYWx1ZSgpLT5jYW5HZXRJbmRleChpKSkKKyAgICB1bnNpZ25lZCBpID0gcHJvcGVy
dHlOYW1lLmFzSW5kZXgoKTsKKyAgICBpZiAodGhpc09iamVjdC0+aW50ZXJuYWxWYWx1ZSgpLT5j
YW5HZXRJbmRleChpKSkgeworICAgICAgICBBU1NFUlQoaSAhPSBQcm9wZXJ0eU5hbWU6Ok5vdEFu
SW5kZXgpOyAvLyBObyBuZWVkIGZvciBhbiBleHBsaWNpdCBjaGVjaywgdGhlIGFib3ZlIHRlc3Qg
d291bGQgYWx3YXlzIGZhaWwhCiAgICAgICAgIHJldHVybiBmYWxzZTsKKyAgICB9CiAgICAgcmV0
dXJuIEpTT2JqZWN0OjpkZWxldGVQcm9wZXJ0eSh0aGlzT2JqZWN0LCBleGVjLCBwcm9wZXJ0eU5h
bWUpOwogfQogCkluZGV4OiBTb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9TdHJpbmdPYmpl
Y3QuaAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9TdHJpbmdP
YmplY3QuaAkocmV2aXNpb24gMTE2NjY3KQorKysgU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRp
bWUvU3RyaW5nT2JqZWN0LmgJKHdvcmtpbmcgY29weSkKQEAgLTQ1LDE1ICs0NSwxNSBAQCBuYW1l
c3BhY2UgSlNDIHsKICAgICAgICAgfQogICAgICAgICBzdGF0aWMgU3RyaW5nT2JqZWN0KiBjcmVh
dGUoRXhlY1N0YXRlKiwgSlNHbG9iYWxPYmplY3QqLCBKU1N0cmluZyopOwogCi0gICAgICAgIHN0
YXRpYyBib29sIGdldE93blByb3BlcnR5U2xvdChKU0NlbGwqLCBFeGVjU3RhdGUqLCBjb25zdCBJ
ZGVudGlmaWVyJiBwcm9wZXJ0eU5hbWUsIFByb3BlcnR5U2xvdCYpOworICAgICAgICBzdGF0aWMg
Ym9vbCBnZXRPd25Qcm9wZXJ0eVNsb3QoSlNDZWxsKiwgRXhlY1N0YXRlKiwgUHJvcGVydHlOYW1l
LCBQcm9wZXJ0eVNsb3QmKTsKICAgICAgICAgc3RhdGljIGJvb2wgZ2V0T3duUHJvcGVydHlTbG90
QnlJbmRleChKU0NlbGwqLCBFeGVjU3RhdGUqLCB1bnNpZ25lZCBwcm9wZXJ0eU5hbWUsIFByb3Bl
cnR5U2xvdCYpOwotICAgICAgICBzdGF0aWMgYm9vbCBnZXRPd25Qcm9wZXJ0eURlc2NyaXB0b3Io
SlNPYmplY3QqLCBFeGVjU3RhdGUqLCBjb25zdCBJZGVudGlmaWVyJiwgUHJvcGVydHlEZXNjcmlw
dG9yJik7CisgICAgICAgIHN0YXRpYyBib29sIGdldE93blByb3BlcnR5RGVzY3JpcHRvcihKU09i
amVjdCosIEV4ZWNTdGF0ZSosIFByb3BlcnR5TmFtZSwgUHJvcGVydHlEZXNjcmlwdG9yJik7CiAK
LSAgICAgICAgc3RhdGljIHZvaWQgcHV0KEpTQ2VsbCosIEV4ZWNTdGF0ZSosIGNvbnN0IElkZW50
aWZpZXImIHByb3BlcnR5TmFtZSwgSlNWYWx1ZSwgUHV0UHJvcGVydHlTbG90Jik7CisgICAgICAg
IHN0YXRpYyB2b2lkIHB1dChKU0NlbGwqLCBFeGVjU3RhdGUqLCBQcm9wZXJ0eU5hbWUsIEpTVmFs
dWUsIFB1dFByb3BlcnR5U2xvdCYpOwogCi0gICAgICAgIHN0YXRpYyBib29sIGRlbGV0ZVByb3Bl
cnR5KEpTQ2VsbCosIEV4ZWNTdGF0ZSosIGNvbnN0IElkZW50aWZpZXImIHByb3BlcnR5TmFtZSk7
CisgICAgICAgIHN0YXRpYyBib29sIGRlbGV0ZVByb3BlcnR5KEpTQ2VsbCosIEV4ZWNTdGF0ZSos
IFByb3BlcnR5TmFtZSk7CiAgICAgICAgIHN0YXRpYyB2b2lkIGdldE93blByb3BlcnR5TmFtZXMo
SlNPYmplY3QqLCBFeGVjU3RhdGUqLCBQcm9wZXJ0eU5hbWVBcnJheSYsIEVudW1lcmF0aW9uTW9k
ZSk7Ci0gICAgICAgIHN0YXRpYyBib29sIGRlZmluZU93blByb3BlcnR5KEpTT2JqZWN0KiwgRXhl
Y1N0YXRlKiwgY29uc3QgSWRlbnRpZmllciYgcHJvcGVydHlOYW1lLCBQcm9wZXJ0eURlc2NyaXB0
b3ImLCBib29sIHNob3VsZFRocm93KTsKKyAgICAgICAgc3RhdGljIGJvb2wgZGVmaW5lT3duUHJv
cGVydHkoSlNPYmplY3QqLCBFeGVjU3RhdGUqLCBQcm9wZXJ0eU5hbWUsIFByb3BlcnR5RGVzY3Jp
cHRvciYsIGJvb2wgc2hvdWxkVGhyb3cpOwogCiAgICAgICAgIHN0YXRpYyBjb25zdCBKU19FWFBP
UlREQVRBIENsYXNzSW5mbyBzX2luZm87CiAKSW5kZXg6IFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9y
dW50aW1lL1N0cmluZ1Byb3RvdHlwZS5jcHAKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL0phdmFTY3Jp
cHRDb3JlL3J1bnRpbWUvU3RyaW5nUHJvdG90eXBlLmNwcAkocmV2aXNpb24gMTE2NjY3KQorKysg
U291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvU3RyaW5nUHJvdG90eXBlLmNwcAkod29ya2lu
ZyBjb3B5KQpAQCAtMTQ3LDEyICsxNDcsMTIgQEAgdm9pZCBTdHJpbmdQcm90b3R5cGU6OmZpbmlz
aENyZWF0aW9uKEV4ZQogICAgIHB1dERpcmVjdFdpdGhvdXRUcmFuc2l0aW9uKGV4ZWMtPmdsb2Jh
bERhdGEoKSwgZXhlYy0+cHJvcGVydHlOYW1lcygpLmxlbmd0aCwganNOdW1iZXIoMCksIERvbnRE
ZWxldGUgfCBSZWFkT25seSB8IERvbnRFbnVtKTsKIH0KIAotYm9vbCBTdHJpbmdQcm90b3R5cGU6
OmdldE93blByb3BlcnR5U2xvdChKU0NlbGwqIGNlbGwsIEV4ZWNTdGF0ZSogZXhlYywgY29uc3Qg
SWRlbnRpZmllciYgcHJvcGVydHlOYW1lLCBQcm9wZXJ0eVNsb3QgJnNsb3QpCitib29sIFN0cmlu
Z1Byb3RvdHlwZTo6Z2V0T3duUHJvcGVydHlTbG90KEpTQ2VsbCogY2VsbCwgRXhlY1N0YXRlKiBl
eGVjLCBQcm9wZXJ0eU5hbWUgcHJvcGVydHlOYW1lLCBQcm9wZXJ0eVNsb3QgJnNsb3QpCiB7CiAg
ICAgcmV0dXJuIGdldFN0YXRpY0Z1bmN0aW9uU2xvdDxTdHJpbmdPYmplY3Q+KGV4ZWMsIEV4ZWNT
dGF0ZTo6c3RyaW5nVGFibGUoZXhlYyksIGpzQ2FzdDxTdHJpbmdQcm90b3R5cGUqPihjZWxsKSwg
cHJvcGVydHlOYW1lLCBzbG90KTsKIH0KIAotYm9vbCBTdHJpbmdQcm90b3R5cGU6OmdldE93blBy
b3BlcnR5RGVzY3JpcHRvcihKU09iamVjdCogb2JqZWN0LCBFeGVjU3RhdGUqIGV4ZWMsIGNvbnN0
IElkZW50aWZpZXImIHByb3BlcnR5TmFtZSwgUHJvcGVydHlEZXNjcmlwdG9yJiBkZXNjcmlwdG9y
KQorYm9vbCBTdHJpbmdQcm90b3R5cGU6OmdldE93blByb3BlcnR5RGVzY3JpcHRvcihKU09iamVj
dCogb2JqZWN0LCBFeGVjU3RhdGUqIGV4ZWMsIFByb3BlcnR5TmFtZSBwcm9wZXJ0eU5hbWUsIFBy
b3BlcnR5RGVzY3JpcHRvciYgZGVzY3JpcHRvcikKIHsKICAgICByZXR1cm4gZ2V0U3RhdGljRnVu
Y3Rpb25EZXNjcmlwdG9yPFN0cmluZ09iamVjdD4oZXhlYywgRXhlY1N0YXRlOjpzdHJpbmdUYWJs
ZShleGVjKSwganNDYXN0PFN0cmluZ1Byb3RvdHlwZSo+KG9iamVjdCksIHByb3BlcnR5TmFtZSwg
ZGVzY3JpcHRvcik7CiB9CkluZGV4OiBTb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9TdHJp
bmdQcm90b3R5cGUuaAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGlt
ZS9TdHJpbmdQcm90b3R5cGUuaAkocmV2aXNpb24gMTE2NjY3KQorKysgU291cmNlL0phdmFTY3Jp
cHRDb3JlL3J1bnRpbWUvU3RyaW5nUHJvdG90eXBlLmgJKHdvcmtpbmcgY29weSkKQEAgLTQyLDgg
KzQyLDggQEAgbmFtZXNwYWNlIEpTQyB7CiAgICAgICAgICAgICByZXR1cm4gcHJvdG90eXBlOwog
ICAgICAgICB9CiAKLSAgICAgICAgc3RhdGljIGJvb2wgZ2V0T3duUHJvcGVydHlTbG90KEpTQ2Vs
bCosIEV4ZWNTdGF0ZSosIGNvbnN0IElkZW50aWZpZXImIHByb3BlcnR5TmFtZSwgUHJvcGVydHlT
bG90Jik7Ci0gICAgICAgIHN0YXRpYyBib29sIGdldE93blByb3BlcnR5RGVzY3JpcHRvcihKU09i
amVjdCosIEV4ZWNTdGF0ZSosIGNvbnN0IElkZW50aWZpZXImLCBQcm9wZXJ0eURlc2NyaXB0b3Im
KTsKKyAgICAgICAgc3RhdGljIGJvb2wgZ2V0T3duUHJvcGVydHlTbG90KEpTQ2VsbCosIEV4ZWNT
dGF0ZSosIFByb3BlcnR5TmFtZSwgUHJvcGVydHlTbG90Jik7CisgICAgICAgIHN0YXRpYyBib29s
IGdldE93blByb3BlcnR5RGVzY3JpcHRvcihKU09iamVjdCosIEV4ZWNTdGF0ZSosIFByb3BlcnR5
TmFtZSwgUHJvcGVydHlEZXNjcmlwdG9yJik7CiAKICAgICAgICAgc3RhdGljIFN0cnVjdHVyZSog
Y3JlYXRlU3RydWN0dXJlKEpTR2xvYmFsRGF0YSYgZ2xvYmFsRGF0YSwgSlNHbG9iYWxPYmplY3Qq
IGdsb2JhbE9iamVjdCwgSlNWYWx1ZSBwcm90b3R5cGUpCiAgICAgICAgIHsKSW5kZXg6IFNvdXJj
ZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL1N0cnVjdHVyZS5jcHAKPT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291
cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvU3RydWN0dXJlLmNwcAkocmV2aXNpb24gMTE2NjY3
KQorKysgU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvU3RydWN0dXJlLmNwcAkod29ya2lu
ZyBjb3B5KQpAQCAtMjYsNyArMjYsNiBAQAogI2luY2x1ZGUgImNvbmZpZy5oIgogI2luY2x1ZGUg
IlN0cnVjdHVyZS5oIgogCi0jaW5jbHVkZSAiSWRlbnRpZmllci5oIgogI2luY2x1ZGUgIkpTT2Jq
ZWN0LmgiCiAjaW5jbHVkZSAiSlNQcm9wZXJ0eU5hbWVJdGVyYXRvci5oIgogI2luY2x1ZGUgIkxv
b2t1cC5oIgpAQCAtMjY3LDcgKzI2Niw3IEBAIHZvaWQgU3RydWN0dXJlOjpncm93UHJvcGVydHlT
dG9yYWdlQ2FwYWMKICAgICAgICAgbV9wcm9wZXJ0eVN0b3JhZ2VDYXBhY2l0eSAqPSAyOwogfQog
Ci12b2lkIFN0cnVjdHVyZTo6ZGVzcGVjaWZ5RGljdGlvbmFyeUZ1bmN0aW9uKEpTR2xvYmFsRGF0
YSYgZ2xvYmFsRGF0YSwgY29uc3QgSWRlbnRpZmllciYgcHJvcGVydHlOYW1lKQordm9pZCBTdHJ1
Y3R1cmU6OmRlc3BlY2lmeURpY3Rpb25hcnlGdW5jdGlvbihKU0dsb2JhbERhdGEmIGdsb2JhbERh
dGEsIFByb3BlcnR5TmFtZSBwcm9wZXJ0eU5hbWUpCiB7CiAgICAgU3RyaW5nSW1wbCogcmVwID0g
cHJvcGVydHlOYW1lLmltcGwoKTsKIApAQCAtMjgxLDcgKzI4MCw3IEBAIHZvaWQgU3RydWN0dXJl
OjpkZXNwZWNpZnlEaWN0aW9uYXJ5RnVuY3QKICAgICBlbnRyeS0+c3BlY2lmaWNWYWx1ZS5jbGVh
cigpOwogfQogCi1TdHJ1Y3R1cmUqIFN0cnVjdHVyZTo6YWRkUHJvcGVydHlUcmFuc2l0aW9uVG9F
eGlzdGluZ1N0cnVjdHVyZShTdHJ1Y3R1cmUqIHN0cnVjdHVyZSwgY29uc3QgSWRlbnRpZmllciYg
cHJvcGVydHlOYW1lLCB1bnNpZ25lZCBhdHRyaWJ1dGVzLCBKU0NlbGwqIHNwZWNpZmljVmFsdWUs
IHNpemVfdCYgb2Zmc2V0KQorU3RydWN0dXJlKiBTdHJ1Y3R1cmU6OmFkZFByb3BlcnR5VHJhbnNp
dGlvblRvRXhpc3RpbmdTdHJ1Y3R1cmUoU3RydWN0dXJlKiBzdHJ1Y3R1cmUsIFByb3BlcnR5TmFt
ZSBwcm9wZXJ0eU5hbWUsIHVuc2lnbmVkIGF0dHJpYnV0ZXMsIEpTQ2VsbCogc3BlY2lmaWNWYWx1
ZSwgc2l6ZV90JiBvZmZzZXQpCiB7CiAgICAgQVNTRVJUKCFzdHJ1Y3R1cmUtPmlzRGljdGlvbmFy
eSgpKTsKICAgICBBU1NFUlQoc3RydWN0dXJlLT5pc09iamVjdCgpKTsKQEAgLTI5OCw3ICsyOTcs
NyBAQCBTdHJ1Y3R1cmUqIFN0cnVjdHVyZTo6YWRkUHJvcGVydHlUcmFuc2l0CiAgICAgcmV0dXJu
IDA7CiB9CiAKLVN0cnVjdHVyZSogU3RydWN0dXJlOjphZGRQcm9wZXJ0eVRyYW5zaXRpb24oSlNH
bG9iYWxEYXRhJiBnbG9iYWxEYXRhLCBTdHJ1Y3R1cmUqIHN0cnVjdHVyZSwgY29uc3QgSWRlbnRp
ZmllciYgcHJvcGVydHlOYW1lLCB1bnNpZ25lZCBhdHRyaWJ1dGVzLCBKU0NlbGwqIHNwZWNpZmlj
VmFsdWUsIHNpemVfdCYgb2Zmc2V0KQorU3RydWN0dXJlKiBTdHJ1Y3R1cmU6OmFkZFByb3BlcnR5
VHJhbnNpdGlvbihKU0dsb2JhbERhdGEmIGdsb2JhbERhdGEsIFN0cnVjdHVyZSogc3RydWN0dXJl
LCBQcm9wZXJ0eU5hbWUgcHJvcGVydHlOYW1lLCB1bnNpZ25lZCBhdHRyaWJ1dGVzLCBKU0NlbGwq
IHNwZWNpZmljVmFsdWUsIHNpemVfdCYgb2Zmc2V0KQogewogICAgIC8vIElmIHdlIGhhdmUgYSBz
cGVjaWZpYyBmdW5jdGlvbiwgd2UgbWF5IGhhdmUgZ290IHRvIHRoaXMgcG9pbnQgaWYgdGhlcmUg
aXMKICAgICAvLyBhbHJlYWR5IGEgdHJhbnNpdGlvbiB3aXRoIHRoZSBjb3JyZWN0IHByb3BlcnR5
IG5hbWUgYW5kIGF0dHJpYnV0ZXMsIGJ1dApAQCAtMzU1LDcgKzM1NCw3IEBAIFN0cnVjdHVyZSog
U3RydWN0dXJlOjphZGRQcm9wZXJ0eVRyYW5zaXQKICAgICByZXR1cm4gdHJhbnNpdGlvbjsKIH0K
IAotU3RydWN0dXJlKiBTdHJ1Y3R1cmU6OnJlbW92ZVByb3BlcnR5VHJhbnNpdGlvbihKU0dsb2Jh
bERhdGEmIGdsb2JhbERhdGEsIFN0cnVjdHVyZSogc3RydWN0dXJlLCBjb25zdCBJZGVudGlmaWVy
JiBwcm9wZXJ0eU5hbWUsIHNpemVfdCYgb2Zmc2V0KQorU3RydWN0dXJlKiBTdHJ1Y3R1cmU6OnJl
bW92ZVByb3BlcnR5VHJhbnNpdGlvbihKU0dsb2JhbERhdGEmIGdsb2JhbERhdGEsIFN0cnVjdHVy
ZSogc3RydWN0dXJlLCBQcm9wZXJ0eU5hbWUgcHJvcGVydHlOYW1lLCBzaXplX3QmIG9mZnNldCkK
IHsKICAgICBBU1NFUlQoIXN0cnVjdHVyZS0+aXNVbmNhY2hlYWJsZURpY3Rpb25hcnkoKSk7CiAK
QEAgLTM4MSw3ICszODAsNyBAQCBTdHJ1Y3R1cmUqIFN0cnVjdHVyZTo6Y2hhbmdlUHJvdG90eXBl
VHJhCiAgICAgcmV0dXJuIHRyYW5zaXRpb247CiB9CiAKLVN0cnVjdHVyZSogU3RydWN0dXJlOjpk
ZXNwZWNpZnlGdW5jdGlvblRyYW5zaXRpb24oSlNHbG9iYWxEYXRhJiBnbG9iYWxEYXRhLCBTdHJ1
Y3R1cmUqIHN0cnVjdHVyZSwgY29uc3QgSWRlbnRpZmllciYgcmVwbGFjZUZ1bmN0aW9uKQorU3Ry
dWN0dXJlKiBTdHJ1Y3R1cmU6OmRlc3BlY2lmeUZ1bmN0aW9uVHJhbnNpdGlvbihKU0dsb2JhbERh
dGEmIGdsb2JhbERhdGEsIFN0cnVjdHVyZSogc3RydWN0dXJlLCBQcm9wZXJ0eU5hbWUgcmVwbGFj
ZUZ1bmN0aW9uKQogewogICAgIEFTU0VSVChzdHJ1Y3R1cmUtPm1fc3BlY2lmaWNGdW5jdGlvblRo
cmFzaENvdW50IDwgbWF4U3BlY2lmaWNGdW5jdGlvblRocmFzaENvdW50KTsKICAgICBTdHJ1Y3R1
cmUqIHRyYW5zaXRpb24gPSBjcmVhdGUoZ2xvYmFsRGF0YSwgc3RydWN0dXJlKTsKQEAgLTQwNCw3
ICs0MDMsNyBAQCBTdHJ1Y3R1cmUqIFN0cnVjdHVyZTo6ZGVzcGVjaWZ5RnVuY3Rpb25UCiAgICAg
cmV0dXJuIHRyYW5zaXRpb247CiB9CiAKLVN0cnVjdHVyZSogU3RydWN0dXJlOjphdHRyaWJ1dGVD
aGFuZ2VUcmFuc2l0aW9uKEpTR2xvYmFsRGF0YSYgZ2xvYmFsRGF0YSwgU3RydWN0dXJlKiBzdHJ1
Y3R1cmUsIGNvbnN0IElkZW50aWZpZXImIHByb3BlcnR5TmFtZSwgdW5zaWduZWQgYXR0cmlidXRl
cykKK1N0cnVjdHVyZSogU3RydWN0dXJlOjphdHRyaWJ1dGVDaGFuZ2VUcmFuc2l0aW9uKEpTR2xv
YmFsRGF0YSYgZ2xvYmFsRGF0YSwgU3RydWN0dXJlKiBzdHJ1Y3R1cmUsIFByb3BlcnR5TmFtZSBw
cm9wZXJ0eU5hbWUsIHVuc2lnbmVkIGF0dHJpYnV0ZXMpCiB7CiAgICAgaWYgKCFzdHJ1Y3R1cmUt
PmlzVW5jYWNoZWFibGVEaWN0aW9uYXJ5KCkpIHsKICAgICAgICAgU3RydWN0dXJlKiB0cmFuc2l0
aW9uID0gY3JlYXRlKGdsb2JhbERhdGEsIHN0cnVjdHVyZSk7CkBAIC01NjIsNyArNTYxLDcgQEAg
U3RydWN0dXJlKiBTdHJ1Y3R1cmU6OmZsYXR0ZW5EaWN0aW9uYXJ5UwogICAgIHJldHVybiB0aGlz
OwogfQogCi1zaXplX3QgU3RydWN0dXJlOjphZGRQcm9wZXJ0eVdpdGhvdXRUcmFuc2l0aW9uKEpT
R2xvYmFsRGF0YSYgZ2xvYmFsRGF0YSwgY29uc3QgSWRlbnRpZmllciYgcHJvcGVydHlOYW1lLCB1
bnNpZ25lZCBhdHRyaWJ1dGVzLCBKU0NlbGwqIHNwZWNpZmljVmFsdWUpCitzaXplX3QgU3RydWN0
dXJlOjphZGRQcm9wZXJ0eVdpdGhvdXRUcmFuc2l0aW9uKEpTR2xvYmFsRGF0YSYgZ2xvYmFsRGF0
YSwgUHJvcGVydHlOYW1lIHByb3BlcnR5TmFtZSwgdW5zaWduZWQgYXR0cmlidXRlcywgSlNDZWxs
KiBzcGVjaWZpY1ZhbHVlKQogewogICAgIEFTU0VSVCghbV9lbnVtZXJhdGlvbkNhY2hlKTsKIApA
QCAtNTc5LDcgKzU3OCw3IEBAIHNpemVfdCBTdHJ1Y3R1cmU6OmFkZFByb3BlcnR5V2l0aG91dFRy
YW4KICAgICByZXR1cm4gb2Zmc2V0OwogfQogCi1zaXplX3QgU3RydWN0dXJlOjpyZW1vdmVQcm9w
ZXJ0eVdpdGhvdXRUcmFuc2l0aW9uKEpTR2xvYmFsRGF0YSYgZ2xvYmFsRGF0YSwgY29uc3QgSWRl
bnRpZmllciYgcHJvcGVydHlOYW1lKQorc2l6ZV90IFN0cnVjdHVyZTo6cmVtb3ZlUHJvcGVydHlX
aXRob3V0VHJhbnNpdGlvbihKU0dsb2JhbERhdGEmIGdsb2JhbERhdGEsIFByb3BlcnR5TmFtZSBw
cm9wZXJ0eU5hbWUpCiB7CiAgICAgQVNTRVJUKGlzVW5jYWNoZWFibGVEaWN0aW9uYXJ5KCkpOwog
ICAgIEFTU0VSVCghbV9lbnVtZXJhdGlvbkNhY2hlKTsKQEAgLTYzNiwxMyArNjM1LDE1IEBAIFBh
c3NPd25QdHI8UHJvcGVydHlUYWJsZT4gU3RydWN0dXJlOjpjb3AKICAgICByZXR1cm4gYWRvcHRQ
dHIobV9wcm9wZXJ0eVRhYmxlID8gbmV3IFByb3BlcnR5VGFibGUoZ2xvYmFsRGF0YSwgb3duZXIs
ICptX3Byb3BlcnR5VGFibGUpIDogbmV3IFByb3BlcnR5VGFibGUobV9vZmZzZXQgPT0gbm9PZmZz
ZXQgPyAwIDogbV9vZmZzZXQpKTsKIH0KIAotc2l6ZV90IFN0cnVjdHVyZTo6Z2V0KEpTR2xvYmFs
RGF0YSYgZ2xvYmFsRGF0YSwgU3RyaW5nSW1wbCogcHJvcGVydHlOYW1lLCB1bnNpZ25lZCYgYXR0
cmlidXRlcywgSlNDZWxsKiYgc3BlY2lmaWNWYWx1ZSkKK3NpemVfdCBTdHJ1Y3R1cmU6OmdldChK
U0dsb2JhbERhdGEmIGdsb2JhbERhdGEsIFByb3BlcnR5TmFtZSBwcm9wZXJ0eU5hbWUsIHVuc2ln
bmVkJiBhdHRyaWJ1dGVzLCBKU0NlbGwqJiBzcGVjaWZpY1ZhbHVlKQogeworICAgIEFTU0VSVChz
dHJ1Y3R1cmUoKS0+Y2xhc3NJbmZvKCkgPT0gJnNfaW5mbyk7CisKICAgICBtYXRlcmlhbGl6ZVBy
b3BlcnR5TWFwSWZOZWNlc3NhcnkoZ2xvYmFsRGF0YSk7CiAgICAgaWYgKCFtX3Byb3BlcnR5VGFi
bGUpCiAgICAgICAgIHJldHVybiBXVEY6Om5vdEZvdW5kOwogCi0gICAgUHJvcGVydHlNYXBFbnRy
eSogZW50cnkgPSBtX3Byb3BlcnR5VGFibGUtPmZpbmQocHJvcGVydHlOYW1lKS5maXJzdDsKKyAg
ICBQcm9wZXJ0eU1hcEVudHJ5KiBlbnRyeSA9IG1fcHJvcGVydHlUYWJsZS0+ZmluZChwcm9wZXJ0
eU5hbWUuaW1wbCgpKS5maXJzdDsKICAgICBpZiAoIWVudHJ5KQogICAgICAgICByZXR1cm4gV1RG
Ojpub3RGb3VuZDsKIApAQCAtNjUxLDEzICs2NTIsMTIgQEAgc2l6ZV90IFN0cnVjdHVyZTo6Z2V0
KEpTR2xvYmFsRGF0YSYgZ2xvYgogICAgIHJldHVybiBlbnRyeS0+b2Zmc2V0OwogfQogCi1ib29s
IFN0cnVjdHVyZTo6ZGVzcGVjaWZ5RnVuY3Rpb24oSlNHbG9iYWxEYXRhJiBnbG9iYWxEYXRhLCBj
b25zdCBJZGVudGlmaWVyJiBwcm9wZXJ0eU5hbWUpCitib29sIFN0cnVjdHVyZTo6ZGVzcGVjaWZ5
RnVuY3Rpb24oSlNHbG9iYWxEYXRhJiBnbG9iYWxEYXRhLCBQcm9wZXJ0eU5hbWUgcHJvcGVydHlO
YW1lKQogewogICAgIG1hdGVyaWFsaXplUHJvcGVydHlNYXBJZk5lY2Vzc2FyeShnbG9iYWxEYXRh
KTsKICAgICBpZiAoIW1fcHJvcGVydHlUYWJsZSkKICAgICAgICAgcmV0dXJuIGZhbHNlOwogCi0g
ICAgQVNTRVJUKCFwcm9wZXJ0eU5hbWUuaXNOdWxsKCkpOwogICAgIFByb3BlcnR5TWFwRW50cnkq
IGVudHJ5ID0gbV9wcm9wZXJ0eVRhYmxlLT5maW5kKHByb3BlcnR5TmFtZS5pbXBsKCkpLmZpcnN0
OwogICAgIGlmICghZW50cnkpCiAgICAgICAgIHJldHVybiBmYWxzZTsKQEAgLTY3OCw5ICs2Nzgs
OCBAQCB2b2lkIFN0cnVjdHVyZTo6ZGVzcGVjaWZ5QWxsRnVuY3Rpb25zKEpTCiAgICAgICAgIGl0
ZXItPnNwZWNpZmljVmFsdWUuY2xlYXIoKTsKIH0KIAotc2l6ZV90IFN0cnVjdHVyZTo6cHV0U3Bl
Y2lmaWNWYWx1ZShKU0dsb2JhbERhdGEmIGdsb2JhbERhdGEsIGNvbnN0IElkZW50aWZpZXImIHBy
b3BlcnR5TmFtZSwgdW5zaWduZWQgYXR0cmlidXRlcywgSlNDZWxsKiBzcGVjaWZpY1ZhbHVlKQor
c2l6ZV90IFN0cnVjdHVyZTo6cHV0U3BlY2lmaWNWYWx1ZShKU0dsb2JhbERhdGEmIGdsb2JhbERh
dGEsIFByb3BlcnR5TmFtZSBwcm9wZXJ0eU5hbWUsIHVuc2lnbmVkIGF0dHJpYnV0ZXMsIEpTQ2Vs
bCogc3BlY2lmaWNWYWx1ZSkKIHsKLSAgICBBU1NFUlQoIXByb3BlcnR5TmFtZS5pc051bGwoKSk7
CiAgICAgQVNTRVJUKGdldChnbG9iYWxEYXRhLCBwcm9wZXJ0eU5hbWUpID09IG5vdEZvdW5kKTsK
IAogICAgIGNoZWNrQ29uc2lzdGVuY3koKTsKQEAgLTcwNSwxMCArNzA0LDggQEAgc2l6ZV90IFN0
cnVjdHVyZTo6cHV0U3BlY2lmaWNWYWx1ZShKU0dsbwogICAgIHJldHVybiBuZXdPZmZzZXQ7CiB9
CiAKLXNpemVfdCBTdHJ1Y3R1cmU6OnJlbW92ZShjb25zdCBJZGVudGlmaWVyJiBwcm9wZXJ0eU5h
bWUpCitzaXplX3QgU3RydWN0dXJlOjpyZW1vdmUoUHJvcGVydHlOYW1lIHByb3BlcnR5TmFtZSkK
IHsKLSAgICBBU1NFUlQoIXByb3BlcnR5TmFtZS5pc051bGwoKSk7Ci0KICAgICBjaGVja0NvbnNp
c3RlbmN5KCk7CiAKICAgICBTdHJpbmdJbXBsKiByZXAgPSBwcm9wZXJ0eU5hbWUuaW1wbCgpOwpJ
bmRleDogU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvU3RydWN0dXJlLmgKPT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PQotLS0gU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvU3RydWN0dXJlLmgJKHJldmlzaW9u
IDExNjY2NykKKysrIFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL1N0cnVjdHVyZS5oCSh3
b3JraW5nIGNvcHkpCkBAIC0yNywxMSArMjcsMTEgQEAKICNkZWZpbmUgU3RydWN0dXJlX2gKIAog
I2luY2x1ZGUgIkNsYXNzSW5mby5oIgotI2luY2x1ZGUgIklkZW50aWZpZXIuaCIKICNpbmNsdWRl
ICJKU0NlbGwuaCIKICNpbmNsdWRlICJKU1R5cGUuaCIKICNpbmNsdWRlICJKU1ZhbHVlLmgiCiAj
aW5jbHVkZSAiUHJvcGVydHlNYXBIYXNoVGFibGUuaCIKKyNpbmNsdWRlICJQcm9wZXJ0eU5hbWUu
aCIKICNpbmNsdWRlICJQcm9wZXJ0eU5hbWVBcnJheS5oIgogI2luY2x1ZGUgIlByb3RlY3QuaCIK
ICNpbmNsdWRlICJTdHJ1Y3R1cmVUcmFuc2l0aW9uVGFibGUuaCIKQEAgLTg2LDEyICs4NiwxMiBA
QCBuYW1lc3BhY2UgSlNDIHsKICAgICBwdWJsaWM6CiAgICAgICAgIHN0YXRpYyB2b2lkIGR1bXBT
dGF0aXN0aWNzKCk7CiAKLSAgICAgICAgSlNfRVhQT1JUX1BSSVZBVEUgc3RhdGljIFN0cnVjdHVy
ZSogYWRkUHJvcGVydHlUcmFuc2l0aW9uKEpTR2xvYmFsRGF0YSYsIFN0cnVjdHVyZSosIGNvbnN0
IElkZW50aWZpZXImIHByb3BlcnR5TmFtZSwgdW5zaWduZWQgYXR0cmlidXRlcywgSlNDZWxsKiBz
cGVjaWZpY1ZhbHVlLCBzaXplX3QmIG9mZnNldCk7Ci0gICAgICAgIEpTX0VYUE9SVF9QUklWQVRF
IHN0YXRpYyBTdHJ1Y3R1cmUqIGFkZFByb3BlcnR5VHJhbnNpdGlvblRvRXhpc3RpbmdTdHJ1Y3R1
cmUoU3RydWN0dXJlKiwgY29uc3QgSWRlbnRpZmllciYgcHJvcGVydHlOYW1lLCB1bnNpZ25lZCBh
dHRyaWJ1dGVzLCBKU0NlbGwqIHNwZWNpZmljVmFsdWUsIHNpemVfdCYgb2Zmc2V0KTsKLSAgICAg
ICAgc3RhdGljIFN0cnVjdHVyZSogcmVtb3ZlUHJvcGVydHlUcmFuc2l0aW9uKEpTR2xvYmFsRGF0
YSYsIFN0cnVjdHVyZSosIGNvbnN0IElkZW50aWZpZXImIHByb3BlcnR5TmFtZSwgc2l6ZV90JiBv
ZmZzZXQpOworICAgICAgICBKU19FWFBPUlRfUFJJVkFURSBzdGF0aWMgU3RydWN0dXJlKiBhZGRQ
cm9wZXJ0eVRyYW5zaXRpb24oSlNHbG9iYWxEYXRhJiwgU3RydWN0dXJlKiwgUHJvcGVydHlOYW1l
LCB1bnNpZ25lZCBhdHRyaWJ1dGVzLCBKU0NlbGwqIHNwZWNpZmljVmFsdWUsIHNpemVfdCYgb2Zm
c2V0KTsKKyAgICAgICAgSlNfRVhQT1JUX1BSSVZBVEUgc3RhdGljIFN0cnVjdHVyZSogYWRkUHJv
cGVydHlUcmFuc2l0aW9uVG9FeGlzdGluZ1N0cnVjdHVyZShTdHJ1Y3R1cmUqLCBQcm9wZXJ0eU5h
bWUsIHVuc2lnbmVkIGF0dHJpYnV0ZXMsIEpTQ2VsbCogc3BlY2lmaWNWYWx1ZSwgc2l6ZV90JiBv
ZmZzZXQpOworICAgICAgICBzdGF0aWMgU3RydWN0dXJlKiByZW1vdmVQcm9wZXJ0eVRyYW5zaXRp
b24oSlNHbG9iYWxEYXRhJiwgU3RydWN0dXJlKiwgUHJvcGVydHlOYW1lLCBzaXplX3QmIG9mZnNl
dCk7CiAgICAgICAgIEpTX0VYUE9SVF9QUklWQVRFIHN0YXRpYyBTdHJ1Y3R1cmUqIGNoYW5nZVBy
b3RvdHlwZVRyYW5zaXRpb24oSlNHbG9iYWxEYXRhJiwgU3RydWN0dXJlKiwgSlNWYWx1ZSBwcm90
b3R5cGUpOwotICAgICAgICBKU19FWFBPUlRfUFJJVkFURSBzdGF0aWMgU3RydWN0dXJlKiBkZXNw
ZWNpZnlGdW5jdGlvblRyYW5zaXRpb24oSlNHbG9iYWxEYXRhJiwgU3RydWN0dXJlKiwgY29uc3Qg
SWRlbnRpZmllciYpOwotICAgICAgICBzdGF0aWMgU3RydWN0dXJlKiBhdHRyaWJ1dGVDaGFuZ2VU
cmFuc2l0aW9uKEpTR2xvYmFsRGF0YSYsIFN0cnVjdHVyZSosIGNvbnN0IElkZW50aWZpZXImIHBy
b3BlcnR5TmFtZSwgdW5zaWduZWQgYXR0cmlidXRlcyk7CisgICAgICAgIEpTX0VYUE9SVF9QUklW
QVRFIHN0YXRpYyBTdHJ1Y3R1cmUqIGRlc3BlY2lmeUZ1bmN0aW9uVHJhbnNpdGlvbihKU0dsb2Jh
bERhdGEmLCBTdHJ1Y3R1cmUqLCBQcm9wZXJ0eU5hbWUpOworICAgICAgICBzdGF0aWMgU3RydWN0
dXJlKiBhdHRyaWJ1dGVDaGFuZ2VUcmFuc2l0aW9uKEpTR2xvYmFsRGF0YSYsIFN0cnVjdHVyZSos
IFByb3BlcnR5TmFtZSwgdW5zaWduZWQgYXR0cmlidXRlcyk7CiAgICAgICAgIHN0YXRpYyBTdHJ1
Y3R1cmUqIHRvQ2FjaGVhYmxlRGljdGlvbmFyeVRyYW5zaXRpb24oSlNHbG9iYWxEYXRhJiwgU3Ry
dWN0dXJlKik7CiAgICAgICAgIHN0YXRpYyBTdHJ1Y3R1cmUqIHRvVW5jYWNoZWFibGVEaWN0aW9u
YXJ5VHJhbnNpdGlvbihKU0dsb2JhbERhdGEmLCBTdHJ1Y3R1cmUqKTsKICAgICAgICAgc3RhdGlj
IFN0cnVjdHVyZSogc2VhbFRyYW5zaXRpb24oSlNHbG9iYWxEYXRhJiwgU3RydWN0dXJlKik7CkBA
IC0xMDgsOCArMTA4LDggQEAgbmFtZXNwYWNlIEpTQyB7CiAgICAgICAgIHN0YXRpYyB2b2lkIGRl
c3Ryb3koSlNDZWxsKik7CiAKICAgICAgICAgLy8gVGhlc2Ugc2hvdWxkIGJlIHVzZWQgd2l0aCBj
YXV0aW9uLiAgCi0gICAgICAgIEpTX0VYUE9SVF9QUklWQVRFIHNpemVfdCBhZGRQcm9wZXJ0eVdp
dGhvdXRUcmFuc2l0aW9uKEpTR2xvYmFsRGF0YSYsIGNvbnN0IElkZW50aWZpZXImIHByb3BlcnR5
TmFtZSwgdW5zaWduZWQgYXR0cmlidXRlcywgSlNDZWxsKiBzcGVjaWZpY1ZhbHVlKTsKLSAgICAg
ICAgc2l6ZV90IHJlbW92ZVByb3BlcnR5V2l0aG91dFRyYW5zaXRpb24oSlNHbG9iYWxEYXRhJiwg
Y29uc3QgSWRlbnRpZmllciYgcHJvcGVydHlOYW1lKTsKKyAgICAgICAgSlNfRVhQT1JUX1BSSVZB
VEUgc2l6ZV90IGFkZFByb3BlcnR5V2l0aG91dFRyYW5zaXRpb24oSlNHbG9iYWxEYXRhJiwgUHJv
cGVydHlOYW1lLCB1bnNpZ25lZCBhdHRyaWJ1dGVzLCBKU0NlbGwqIHNwZWNpZmljVmFsdWUpOwor
ICAgICAgICBzaXplX3QgcmVtb3ZlUHJvcGVydHlXaXRob3V0VHJhbnNpdGlvbihKU0dsb2JhbERh
dGEmLCBQcm9wZXJ0eU5hbWUpOwogICAgICAgICB2b2lkIHNldFByb3RvdHlwZVdpdGhvdXRUcmFu
c2l0aW9uKEpTR2xvYmFsRGF0YSYgZ2xvYmFsRGF0YSwgSlNWYWx1ZSBwcm90b3R5cGUpIHsgbV9w
cm90b3R5cGUuc2V0KGdsb2JhbERhdGEsIHRoaXMsIHByb3RvdHlwZSk7IH0KICAgICAgICAgCiAg
ICAgICAgIGJvb2wgaXNEaWN0aW9uYXJ5KCkgY29uc3QgeyByZXR1cm4gbV9kaWN0aW9uYXJ5S2lu
ZCAhPSBOb25lRGljdGlvbmFyeUtpbmQ7IH0KQEAgLTEzNiwxNSArMTM2LDkgQEAgbmFtZXNwYWNl
IEpTQyB7CiAgICAgICAgIHVuc2lnbmVkIHByb3BlcnR5U3RvcmFnZVNpemUoKSBjb25zdCB7IEFT
U0VSVChzdHJ1Y3R1cmUoKS0+Y2xhc3NJbmZvKCkgPT0gJnNfaW5mbyk7IHJldHVybiAobV9wcm9w
ZXJ0eVRhYmxlID8gbV9wcm9wZXJ0eVRhYmxlLT5wcm9wZXJ0eVN0b3JhZ2VTaXplKCkgOiBzdGF0
aWNfY2FzdDx1bnNpZ25lZD4obV9vZmZzZXQgKyAxKSk7IH0KICAgICAgICAgYm9vbCBpc1VzaW5n
SW5saW5lU3RvcmFnZSgpIGNvbnN0OwogCi0gICAgICAgIHNpemVfdCBnZXQoSlNHbG9iYWxEYXRh
JiwgY29uc3QgSWRlbnRpZmllciYgcHJvcGVydHlOYW1lKTsKKyAgICAgICAgc2l6ZV90IGdldChK
U0dsb2JhbERhdGEmLCBQcm9wZXJ0eU5hbWUpOwogICAgICAgICBzaXplX3QgZ2V0KEpTR2xvYmFs
RGF0YSYsIGNvbnN0IFVTdHJpbmcmIG5hbWUpOwotICAgICAgICBKU19FWFBPUlRfUFJJVkFURSBz
aXplX3QgZ2V0KEpTR2xvYmFsRGF0YSYsIFN0cmluZ0ltcGwqIHByb3BlcnR5TmFtZSwgdW5zaWdu
ZWQmIGF0dHJpYnV0ZXMsIEpTQ2VsbComIHNwZWNpZmljVmFsdWUpOwotICAgICAgICBzaXplX3Qg
Z2V0KEpTR2xvYmFsRGF0YSYgZ2xvYmFsRGF0YSwgY29uc3QgSWRlbnRpZmllciYgcHJvcGVydHlO
YW1lLCB1bnNpZ25lZCYgYXR0cmlidXRlcywgSlNDZWxsKiYgc3BlY2lmaWNWYWx1ZSkKLSAgICAg
ICAgewotICAgICAgICAgICAgQVNTRVJUKCFwcm9wZXJ0eU5hbWUuaXNOdWxsKCkpOwotICAgICAg
ICAgICAgQVNTRVJUKHN0cnVjdHVyZSgpLT5jbGFzc0luZm8oKSA9PSAmc19pbmZvKTsKLSAgICAg
ICAgICAgIHJldHVybiBnZXQoZ2xvYmFsRGF0YSwgcHJvcGVydHlOYW1lLmltcGwoKSwgYXR0cmli
dXRlcywgc3BlY2lmaWNWYWx1ZSk7Ci0gICAgICAgIH0KKyAgICAgICAgSlNfRVhQT1JUX1BSSVZB
VEUgc2l6ZV90IGdldChKU0dsb2JhbERhdGEmIGdsb2JhbERhdGEsIFByb3BlcnR5TmFtZSwgdW5z
aWduZWQmIGF0dHJpYnV0ZXMsIEpTQ2VsbComIHNwZWNpZmljVmFsdWUpOwogCiAgICAgICAgIGJv
b2wgaGFzR2V0dGVyU2V0dGVyUHJvcGVydGllcygpIGNvbnN0IHsgcmV0dXJuIG1faGFzR2V0dGVy
U2V0dGVyUHJvcGVydGllczsgfQogICAgICAgICBib29sIGhhc1JlYWRPbmx5T3JHZXR0ZXJTZXR0
ZXJQcm9wZXJ0aWVzRXhjbHVkaW5nUHJvdG8oKSBjb25zdCB7IHJldHVybiBtX2hhc1JlYWRPbmx5
T3JHZXR0ZXJTZXR0ZXJQcm9wZXJ0aWVzRXhjbHVkaW5nUHJvdG87IH0KQEAgLTE2Myw3ICsxNTcs
NyBAQCBuYW1lc3BhY2UgSlNDIHsKICAgICAgICAgCiAgICAgICAgIGJvb2wgaXNFbXB0eSgpIGNv
bnN0IHsgcmV0dXJuIG1fcHJvcGVydHlUYWJsZSA/IG1fcHJvcGVydHlUYWJsZS0+aXNFbXB0eSgp
IDogbV9vZmZzZXQgPT0gbm9PZmZzZXQ7IH0KIAotICAgICAgICBKU19FWFBPUlRfUFJJVkFURSB2
b2lkIGRlc3BlY2lmeURpY3Rpb25hcnlGdW5jdGlvbihKU0dsb2JhbERhdGEmLCBjb25zdCBJZGVu
dGlmaWVyJiBwcm9wZXJ0eU5hbWUpOworICAgICAgICBKU19FWFBPUlRfUFJJVkFURSB2b2lkIGRl
c3BlY2lmeURpY3Rpb25hcnlGdW5jdGlvbihKU0dsb2JhbERhdGEmLCBQcm9wZXJ0eU5hbWUpOwog
ICAgICAgICB2b2lkIGRpc2FibGVTcGVjaWZpY0Z1bmN0aW9uVHJhY2tpbmcoKSB7IG1fc3BlY2lm
aWNGdW5jdGlvblRocmFzaENvdW50ID0gbWF4U3BlY2lmaWNGdW5jdGlvblRocmFzaENvdW50OyB9
CiAKICAgICAgICAgdm9pZCBzZXRFbnVtZXJhdGlvbkNhY2hlKEpTR2xvYmFsRGF0YSYsIEpTUHJv
cGVydHlOYW1lSXRlcmF0b3IqIGVudW1lcmF0aW9uQ2FjaGUpOyAvLyBEZWZpbmVkIGluIEpTUHJv
cGVydHlOYW1lSXRlcmF0b3IuaC4KQEAgLTIxNiw3ICsyMTAsNyBAQCBuYW1lc3BhY2UgSlNDIHsK
IAogICAgIHByaXZhdGU6CiAgICAgICAgIGZyaWVuZCBjbGFzcyBMTEludE9mZnNldHNFeHRyYWN0
b3I7Ci0gICAgICAgIAorCiAgICAgICAgIEpTX0VYUE9SVF9QUklWQVRFIFN0cnVjdHVyZShKU0ds
b2JhbERhdGEmLCBKU0dsb2JhbE9iamVjdCosIEpTVmFsdWUgcHJvdG90eXBlLCBjb25zdCBUeXBl
SW5mbyYsIGNvbnN0IENsYXNzSW5mbyopOwogICAgICAgICBTdHJ1Y3R1cmUoSlNHbG9iYWxEYXRh
Jik7CiAgICAgICAgIFN0cnVjdHVyZShKU0dsb2JhbERhdGEmLCBjb25zdCBTdHJ1Y3R1cmUqKTsK
QEAgLTIzNiwxMyArMjMwLDEzIEBAIG5hbWVzcGFjZSBKU0MgewogICAgICAgICB9IERpY3Rpb25h
cnlLaW5kOwogICAgICAgICBzdGF0aWMgU3RydWN0dXJlKiB0b0RpY3Rpb25hcnlUcmFuc2l0aW9u
KEpTR2xvYmFsRGF0YSYsIFN0cnVjdHVyZSosIERpY3Rpb25hcnlLaW5kKTsKIAotICAgICAgICBz
aXplX3QgcHV0U3BlY2lmaWNWYWx1ZShKU0dsb2JhbERhdGEmLCBjb25zdCBJZGVudGlmaWVyJiBw
cm9wZXJ0eU5hbWUsIHVuc2lnbmVkIGF0dHJpYnV0ZXMsIEpTQ2VsbCogc3BlY2lmaWNWYWx1ZSk7
Ci0gICAgICAgIHNpemVfdCByZW1vdmUoY29uc3QgSWRlbnRpZmllciYgcHJvcGVydHlOYW1lKTsK
KyAgICAgICAgc2l6ZV90IHB1dFNwZWNpZmljVmFsdWUoSlNHbG9iYWxEYXRhJiwgUHJvcGVydHlO
YW1lLCB1bnNpZ25lZCBhdHRyaWJ1dGVzLCBKU0NlbGwqIHNwZWNpZmljVmFsdWUpOworICAgICAg
ICBzaXplX3QgcmVtb3ZlKFByb3BlcnR5TmFtZSk7CiAKICAgICAgICAgdm9pZCBjcmVhdGVQcm9w
ZXJ0eU1hcCh1bnNpZ25lZCBrZXlDb3VudCA9IDApOwogICAgICAgICB2b2lkIGNoZWNrQ29uc2lz
dGVuY3koKTsKIAotICAgICAgICBib29sIGRlc3BlY2lmeUZ1bmN0aW9uKEpTR2xvYmFsRGF0YSYs
IGNvbnN0IElkZW50aWZpZXImKTsKKyAgICAgICAgYm9vbCBkZXNwZWNpZnlGdW5jdGlvbihKU0ds
b2JhbERhdGEmLCBQcm9wZXJ0eU5hbWUpOwogICAgICAgICB2b2lkIGRlc3BlY2lmeUFsbEZ1bmN0
aW9ucyhKU0dsb2JhbERhdGEmKTsKIAogICAgICAgICBQYXNzT3duUHRyPFByb3BlcnR5VGFibGU+
IGNvcHlQcm9wZXJ0eVRhYmxlKEpTR2xvYmFsRGF0YSYsIFN0cnVjdHVyZSogb3duZXIpOwpAQCAt
MzE0LDcgKzMwOCw3IEBAIG5hbWVzcGFjZSBKU0MgewogICAgICAgICB1bnNpZ25lZCBtX3N0YXRp
Y0Z1bmN0aW9uUmVpZmllZDsKICAgICB9OwogCi0gICAgaW5saW5lIHNpemVfdCBTdHJ1Y3R1cmU6
OmdldChKU0dsb2JhbERhdGEmIGdsb2JhbERhdGEsIGNvbnN0IElkZW50aWZpZXImIHByb3BlcnR5
TmFtZSkKKyAgICBpbmxpbmUgc2l6ZV90IFN0cnVjdHVyZTo6Z2V0KEpTR2xvYmFsRGF0YSYgZ2xv
YmFsRGF0YSwgUHJvcGVydHlOYW1lKQogICAgIHsKICAgICAgICAgQVNTRVJUKHN0cnVjdHVyZSgp
LT5jbGFzc0luZm8oKSA9PSAmc19pbmZvKTsKICAgICAgICAgbWF0ZXJpYWxpemVQcm9wZXJ0eU1h
cElmTmVjZXNzYXJ5KGdsb2JhbERhdGEpOwpJbmRleDogU291cmNlL1dlYkNvcmUvQ2hhbmdlTG9n
Cj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT0KLS0tIFNvdXJjZS9XZWJDb3JlL0NoYW5nZUxvZwkocmV2aXNpb24gMTE2Nzky
KQorKysgU291cmNlL1dlYkNvcmUvQ2hhbmdlTG9nCSh3b3JraW5nIGNvcHkpCkBAIC0xLDMgKzEs
MjI5IEBACisyMDEyLTA1LTExICBHYXZpbiBCYXJyYWNsb3VnaCAgPGJhcnJhY2xvdWdoQGFwcGxl
LmNvbT4KKworICAgICAgICBJbnRyb2R1Y2UgUHJvcGVydHlOYW1lIGNsYXNzCisgICAgICAgIGh0
dHBzOi8vYnVncy53ZWJraXQub3JnL3Nob3dfYnVnLmNnaT9pZD04NjI0MQorCisgICAgICAgIFJl
dmlld2VkIGJ5IE5PQk9EWSAoT09QUyEpLgorCisgICAgICAgIFJlcGxhY2UgJ2NvbnN0IElkZW50
aWZpZXImJyBhcmd1bWVudHMgdG8gZnVuY3Rpb25zIGFjY2Vzc2luZyBvYmplY3QgcHJvcGVydGll
cyB3aXRoIGEgbmV3ICdQcm9wZXJ0eU5hbWUnIHR5cGUuCisgICAgICAgIFRoaXMgY2hhbmdlIHBh
dmVzIHRoZSB3YXkgdG8gYWxsb3cgZm9yIHByb3BlcnRpZXMga2V5ZWQgYnkgdmFsdWVzIHRoYXQg
YXJlIG5vdCBJZGVudGlmaWVycy4KKworICAgICAgICBUaGlzIGNoYW5nZSBpcyBsYXJnZWx5IGEg
bWVjaGFuaWNhbCBmaW5kICYgcmVwbGFjZS4KKyAgICAgICAgSXQgYWxzbyBjaGFuZ2VzIEpTRnVu
Y3Rpb24ncyBjb25zdHJ1Y3RvciB0byB0YWtlIGEgVVN0cmluZyYgaW5zdGVhZCBvZiBhbiBJZGVu
dGlmaWVyJgorICAgICAgICAoc2luY2UgaW4gc29tZSBjYXNlcyB3ZSBjYW4gbm8gbG9uZ2VyIGd1
YXJhbnRlZSB0aGF0IHdlJ2xsbCBoYXZlIGFuIElkZW50aWZpZXIpLCBhbmQKKyAgICAgICAgdW5p
ZmllcyBJZGVudGlmaWVyJ3MgbWV0aG9kcyB0byBvYnRhaW4gYXJyYXkgaW5kaWNlcyBvbnRvIFBy
b3BlcnR5TmFtZS4KKworICAgICAgICBUaGUgbmV3IFByb3BlcnR5TmFtZSBjbGFzcyByZXRhaW5z
IHRoZSBhYmlsaXR5IHRvIHN1cHBvcnQgLmltcGwoKSBhbmQgLnVzdHJpbmcoKSwgYnV0CisgICAg
ICAgIGluIGEgZnV0dXJlIHBhdGNoIHdlIG1heSBuZWVkIHRvIHJld29yayB0aGlzLCBzaW5jZSBu
b3QgYWxsIFByb3BlcnR5TmFtZXMgc2hvdWxkIGJlCisgICAgICAgIGVxdWFsIGJhc2VkIG9uIHRo
ZWlyIHN0cmluZyByZXByZXNlbnRhdGlvbi4KKworICAgICAgICAqIFdlYkNvcmUuZXhwLmluOgor
ICAgICAgICAqIGJpbmRpbmdzL2pzL0pTQ1NTU3R5bGVEZWNsYXJhdGlvbkN1c3RvbS5jcHA6Cisg
ICAgICAgIChXZWJDb3JlOjpjc3NQcm9wZXJ0eUlERm9ySlNDU1NQcm9wZXJ0eU5hbWUpOgorICAg
ICAgICAoV2ViQ29yZTo6SlNDU1NTdHlsZURlY2xhcmF0aW9uOjpnZXRPd25Qcm9wZXJ0eVNsb3RE
ZWxlZ2F0ZSk6CisgICAgICAgIChXZWJDb3JlOjpKU0NTU1N0eWxlRGVjbGFyYXRpb246OmdldE93
blByb3BlcnR5RGVzY3JpcHRvckRlbGVnYXRlKToKKyAgICAgICAgKFdlYkNvcmU6OkpTQ1NTU3R5
bGVEZWNsYXJhdGlvbjo6cHV0RGVsZWdhdGUpOgorICAgICAgICAqIGJpbmRpbmdzL2pzL0pTRE9N
QmluZGluZy5jcHA6CisgICAgICAgIChXZWJDb3JlOjpmaW5kQXRvbWljU3RyaW5nKToKKyAgICAg
ICAgKFdlYkNvcmU6Om9iamVjdFRvU3RyaW5nRnVuY3Rpb25HZXR0ZXIpOgorICAgICAgICAqIGJp
bmRpbmdzL2pzL0pTRE9NQmluZGluZy5oOgorICAgICAgICAoV2ViQ29yZSk6CisgICAgICAgIChX
ZWJDb3JlOjpwcm9wZXJ0eU5hbWVUb1N0cmluZyk6CisgICAgICAgIChXZWJDb3JlOjpwcm9wZXJ0
eU5hbWVUb0F0b21pY1N0cmluZyk6CisgICAgICAgICogYmluZGluZ3MvanMvSlNET01NaW1lVHlw
ZUFycmF5Q3VzdG9tLmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OkpTRE9NTWltZVR5cGVBcnJheTo6
Y2FuR2V0SXRlbXNGb3JOYW1lKToKKyAgICAgICAgKFdlYkNvcmU6OkpTRE9NTWltZVR5cGVBcnJh
eTo6bmFtZUdldHRlcik6CisgICAgICAgICogYmluZGluZ3MvanMvSlNET01QbHVnaW5BcnJheUN1
c3RvbS5jcHA6CisgICAgICAgIChXZWJDb3JlOjpKU0RPTVBsdWdpbkFycmF5OjpjYW5HZXRJdGVt
c0Zvck5hbWUpOgorICAgICAgICAoV2ViQ29yZTo6SlNET01QbHVnaW5BcnJheTo6bmFtZUdldHRl
cik6CisgICAgICAgICogYmluZGluZ3MvanMvSlNET01QbHVnaW5DdXN0b20uY3BwOgorICAgICAg
ICAoV2ViQ29yZTo6SlNET01QbHVnaW46OmNhbkdldEl0ZW1zRm9yTmFtZSk6CisgICAgICAgIChX
ZWJDb3JlOjpKU0RPTVBsdWdpbjo6bmFtZUdldHRlcik6CisgICAgICAgICogYmluZGluZ3MvanMv
SlNET01TdHJpbmdNYXBDdXN0b20uY3BwOgorICAgICAgICAoV2ViQ29yZTo6SlNET01TdHJpbmdN
YXA6OmNhbkdldEl0ZW1zRm9yTmFtZSk6CisgICAgICAgIChXZWJDb3JlOjpKU0RPTVN0cmluZ01h
cDo6bmFtZUdldHRlcik6CisgICAgICAgIChXZWJDb3JlOjpKU0RPTVN0cmluZ01hcDo6ZGVsZXRl
UHJvcGVydHkpOgorICAgICAgICAoV2ViQ29yZTo6SlNET01TdHJpbmdNYXA6OnB1dERlbGVnYXRl
KToKKyAgICAgICAgKiBiaW5kaW5ncy9qcy9KU0RPTVdpbmRvd0N1c3RvbS5jcHA6CisgICAgICAg
IChXZWJDb3JlOjpub25DYWNoaW5nU3RhdGljRnVuY3Rpb25HZXR0ZXIpOgorICAgICAgICAoV2Vi
Q29yZTo6Y2hpbGRGcmFtZUdldHRlcik6CisgICAgICAgIChXZWJDb3JlOjpuYW1lZEl0ZW1HZXR0
ZXIpOgorICAgICAgICAoV2ViQ29yZTo6SlNET01XaW5kb3c6OmdldE93blByb3BlcnR5U2xvdCk6
CisgICAgICAgIChXZWJDb3JlOjpKU0RPTVdpbmRvdzo6Z2V0T3duUHJvcGVydHlEZXNjcmlwdG9y
KToKKyAgICAgICAgKFdlYkNvcmU6OkpTRE9NV2luZG93OjpwdXQpOgorICAgICAgICAoV2ViQ29y
ZTo6SlNET01XaW5kb3c6OmRlbGV0ZVByb3BlcnR5KToKKyAgICAgICAgKFdlYkNvcmU6OkpTRE9N
V2luZG93OjpkZWZpbmVPd25Qcm9wZXJ0eSk6CisgICAgICAgICogYmluZGluZ3MvanMvSlNET01X
aW5kb3dTaGVsbC5jcHA6CisgICAgICAgIChXZWJDb3JlOjpKU0RPTVdpbmRvd1NoZWxsOjpnZXRP
d25Qcm9wZXJ0eVNsb3QpOgorICAgICAgICAoV2ViQ29yZTo6SlNET01XaW5kb3dTaGVsbDo6Z2V0
T3duUHJvcGVydHlEZXNjcmlwdG9yKToKKyAgICAgICAgKFdlYkNvcmU6OkpTRE9NV2luZG93U2hl
bGw6OnB1dCk6CisgICAgICAgIChXZWJDb3JlOjpKU0RPTVdpbmRvd1NoZWxsOjpwdXREaXJlY3RW
aXJ0dWFsKToKKyAgICAgICAgKFdlYkNvcmU6OkpTRE9NV2luZG93U2hlbGw6OmRlZmluZU93blBy
b3BlcnR5KToKKyAgICAgICAgKFdlYkNvcmU6OkpTRE9NV2luZG93U2hlbGw6OmRlbGV0ZVByb3Bl
cnR5KToKKyAgICAgICAgKiBiaW5kaW5ncy9qcy9KU0RPTVdpbmRvd1NoZWxsLmg6CisgICAgICAg
IChKU0RPTVdpbmRvd1NoZWxsKToKKyAgICAgICAgKiBiaW5kaW5ncy9qcy9KU0hUTUxBbGxDb2xs
ZWN0aW9uQ3VzdG9tLmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OmdldE5hbWVkSXRlbXMpOgorICAg
ICAgICAoV2ViQ29yZTo6Y2FsbEhUTUxBbGxDb2xsZWN0aW9uKToKKyAgICAgICAgKFdlYkNvcmU6
OkpTSFRNTEFsbENvbGxlY3Rpb246OmNhbkdldEl0ZW1zRm9yTmFtZSk6CisgICAgICAgIChXZWJD
b3JlOjpKU0hUTUxBbGxDb2xsZWN0aW9uOjpuYW1lR2V0dGVyKToKKyAgICAgICAgKFdlYkNvcmU6
OkpTSFRNTEFsbENvbGxlY3Rpb246Oml0ZW0pOgorICAgICAgICAqIGJpbmRpbmdzL2pzL0pTSFRN
TEFwcGxldEVsZW1lbnRDdXN0b20uY3BwOgorICAgICAgICAoV2ViQ29yZTo6SlNIVE1MQXBwbGV0
RWxlbWVudDo6Z2V0T3duUHJvcGVydHlTbG90RGVsZWdhdGUpOgorICAgICAgICAoV2ViQ29yZTo6
SlNIVE1MQXBwbGV0RWxlbWVudDo6Z2V0T3duUHJvcGVydHlEZXNjcmlwdG9yRGVsZWdhdGUpOgor
ICAgICAgICAoV2ViQ29yZTo6SlNIVE1MQXBwbGV0RWxlbWVudDo6cHV0RGVsZWdhdGUpOgorICAg
ICAgICAqIGJpbmRpbmdzL2pzL0pTSFRNTENvbGxlY3Rpb25DdXN0b20uY3BwOgorICAgICAgICAo
V2ViQ29yZTo6Z2V0TmFtZWRJdGVtcyk6CisgICAgICAgIChXZWJDb3JlOjpKU0hUTUxDb2xsZWN0
aW9uOjpjYW5HZXRJdGVtc0Zvck5hbWUpOgorICAgICAgICAoV2ViQ29yZTo6SlNIVE1MQ29sbGVj
dGlvbjo6bmFtZUdldHRlcik6CisgICAgICAgICogYmluZGluZ3MvanMvSlNIVE1MRG9jdW1lbnRD
dXN0b20uY3BwOgorICAgICAgICAoV2ViQ29yZTo6SlNIVE1MRG9jdW1lbnQ6OmNhbkdldEl0ZW1z
Rm9yTmFtZSk6CisgICAgICAgIChXZWJDb3JlOjpKU0hUTUxEb2N1bWVudDo6bmFtZUdldHRlcik6
CisgICAgICAgICogYmluZGluZ3MvanMvSlNIVE1MRW1iZWRFbGVtZW50Q3VzdG9tLmNwcDoKKyAg
ICAgICAgKFdlYkNvcmU6OkpTSFRNTEVtYmVkRWxlbWVudDo6Z2V0T3duUHJvcGVydHlTbG90RGVs
ZWdhdGUpOgorICAgICAgICAoV2ViQ29yZTo6SlNIVE1MRW1iZWRFbGVtZW50OjpnZXRPd25Qcm9w
ZXJ0eURlc2NyaXB0b3JEZWxlZ2F0ZSk6CisgICAgICAgIChXZWJDb3JlOjpKU0hUTUxFbWJlZEVs
ZW1lbnQ6OnB1dERlbGVnYXRlKToKKyAgICAgICAgKiBiaW5kaW5ncy9qcy9KU0hUTUxGb3JtRWxl
bWVudEN1c3RvbS5jcHA6CisgICAgICAgIChXZWJDb3JlOjpKU0hUTUxGb3JtRWxlbWVudDo6Y2Fu
R2V0SXRlbXNGb3JOYW1lKToKKyAgICAgICAgKFdlYkNvcmU6OkpTSFRNTEZvcm1FbGVtZW50Ojpu
YW1lR2V0dGVyKToKKyAgICAgICAgKiBiaW5kaW5ncy9qcy9KU0hUTUxGcmFtZVNldEVsZW1lbnRD
dXN0b20uY3BwOgorICAgICAgICAoV2ViQ29yZTo6SlNIVE1MRnJhbWVTZXRFbGVtZW50OjpjYW5H
ZXRJdGVtc0Zvck5hbWUpOgorICAgICAgICAoV2ViQ29yZTo6SlNIVE1MRnJhbWVTZXRFbGVtZW50
OjpuYW1lR2V0dGVyKToKKyAgICAgICAgKiBiaW5kaW5ncy9qcy9KU0hUTUxPYmplY3RFbGVtZW50
Q3VzdG9tLmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OkpTSFRNTE9iamVjdEVsZW1lbnQ6OmdldE93
blByb3BlcnR5U2xvdERlbGVnYXRlKToKKyAgICAgICAgKFdlYkNvcmU6OkpTSFRNTE9iamVjdEVs
ZW1lbnQ6OmdldE93blByb3BlcnR5RGVzY3JpcHRvckRlbGVnYXRlKToKKyAgICAgICAgKFdlYkNv
cmU6OkpTSFRNTE9iamVjdEVsZW1lbnQ6OnB1dERlbGVnYXRlKToKKyAgICAgICAgKiBiaW5kaW5n
cy9qcy9KU0hpc3RvcnlDdXN0b20uY3BwOgorICAgICAgICAoV2ViQ29yZTo6bm9uQ2FjaGluZ1N0
YXRpY0JhY2tGdW5jdGlvbkdldHRlcik6CisgICAgICAgIChXZWJDb3JlOjpub25DYWNoaW5nU3Rh
dGljRm9yd2FyZEZ1bmN0aW9uR2V0dGVyKToKKyAgICAgICAgKFdlYkNvcmU6Om5vbkNhY2hpbmdT
dGF0aWNHb0Z1bmN0aW9uR2V0dGVyKToKKyAgICAgICAgKFdlYkNvcmU6OkpTSGlzdG9yeTo6Z2V0
T3duUHJvcGVydHlTbG90RGVsZWdhdGUpOgorICAgICAgICAoV2ViQ29yZTo6SlNIaXN0b3J5Ojpn
ZXRPd25Qcm9wZXJ0eURlc2NyaXB0b3JEZWxlZ2F0ZSk6CisgICAgICAgIChXZWJDb3JlOjpKU0hp
c3Rvcnk6OnB1dERlbGVnYXRlKToKKyAgICAgICAgKFdlYkNvcmU6OkpTSGlzdG9yeTo6ZGVsZXRl
UHJvcGVydHkpOgorICAgICAgICAqIGJpbmRpbmdzL2pzL0pTTG9jYXRpb25DdXN0b20uY3BwOgor
ICAgICAgICAoV2ViQ29yZTo6bm9uQ2FjaGluZ1N0YXRpY1JlcGxhY2VGdW5jdGlvbkdldHRlcik6
CisgICAgICAgIChXZWJDb3JlOjpub25DYWNoaW5nU3RhdGljUmVsb2FkRnVuY3Rpb25HZXR0ZXIp
OgorICAgICAgICAoV2ViQ29yZTo6bm9uQ2FjaGluZ1N0YXRpY0Fzc2lnbkZ1bmN0aW9uR2V0dGVy
KToKKyAgICAgICAgKFdlYkNvcmU6OkpTTG9jYXRpb246OmdldE93blByb3BlcnR5U2xvdERlbGVn
YXRlKToKKyAgICAgICAgKFdlYkNvcmU6OkpTTG9jYXRpb246OmdldE93blByb3BlcnR5RGVzY3Jp
cHRvckRlbGVnYXRlKToKKyAgICAgICAgKFdlYkNvcmU6OkpTTG9jYXRpb246OnB1dERlbGVnYXRl
KToKKyAgICAgICAgKFdlYkNvcmU6OkpTTG9jYXRpb246OmRlbGV0ZVByb3BlcnR5KToKKyAgICAg
ICAgKFdlYkNvcmU6OkpTTG9jYXRpb246OmRlZmluZU93blByb3BlcnR5KToKKyAgICAgICAgKFdl
YkNvcmU6OkpTTG9jYXRpb25Qcm90b3R5cGU6OnB1dERlbGVnYXRlKToKKyAgICAgICAgKFdlYkNv
cmU6OkpTTG9jYXRpb25Qcm90b3R5cGU6OmRlZmluZU93blByb3BlcnR5KToKKyAgICAgICAgKiBi
aW5kaW5ncy9qcy9KU05hbWVkTm9kZU1hcEN1c3RvbS5jcHA6CisgICAgICAgIChXZWJDb3JlOjpK
U05hbWVkTm9kZU1hcDo6Y2FuR2V0SXRlbXNGb3JOYW1lKToKKyAgICAgICAgKFdlYkNvcmU6OkpT
TmFtZWROb2RlTWFwOjpuYW1lR2V0dGVyKToKKyAgICAgICAgKiBiaW5kaW5ncy9qcy9KU05vZGVM
aXN0Q3VzdG9tLmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OkpTTm9kZUxpc3Q6OmNhbkdldEl0ZW1z
Rm9yTmFtZSk6CisgICAgICAgIChXZWJDb3JlOjpKU05vZGVMaXN0OjpuYW1lR2V0dGVyKToKKyAg
ICAgICAgKiBiaW5kaW5ncy9qcy9KU1BsdWdpbkVsZW1lbnRGdW5jdGlvbnMuY3BwOgorICAgICAg
ICAoV2ViQ29yZTo6cnVudGltZU9iamVjdFByb3BlcnR5R2V0dGVyKToKKyAgICAgICAgKFdlYkNv
cmU6OnJ1bnRpbWVPYmplY3RDdXN0b21HZXRPd25Qcm9wZXJ0eVNsb3QpOgorICAgICAgICAoV2Vi
Q29yZTo6cnVudGltZU9iamVjdEN1c3RvbUdldE93blByb3BlcnR5RGVzY3JpcHRvcik6CisgICAg
ICAgIChXZWJDb3JlOjpydW50aW1lT2JqZWN0Q3VzdG9tUHV0KToKKyAgICAgICAgKiBiaW5kaW5n
cy9qcy9KU1BsdWdpbkVsZW1lbnRGdW5jdGlvbnMuaDoKKyAgICAgICAgKFdlYkNvcmUpOgorICAg
ICAgICAqIGJpbmRpbmdzL2pzL0pTU3RvcmFnZUN1c3RvbS5jcHA6CisgICAgICAgIChXZWJDb3Jl
OjpKU1N0b3JhZ2U6OmNhbkdldEl0ZW1zRm9yTmFtZSk6CisgICAgICAgIChXZWJDb3JlOjpKU1N0
b3JhZ2U6Om5hbWVHZXR0ZXIpOgorICAgICAgICAoV2ViQ29yZTo6SlNTdG9yYWdlOjpkZWxldGVQ
cm9wZXJ0eSk6CisgICAgICAgIChXZWJDb3JlOjpKU1N0b3JhZ2U6OnB1dERlbGVnYXRlKToKKyAg
ICAgICAgKiBiaW5kaW5ncy9qcy9KU1N0eWxlU2hlZXRMaXN0Q3VzdG9tLmNwcDoKKyAgICAgICAg
KFdlYkNvcmU6OkpTU3R5bGVTaGVldExpc3Q6OmNhbkdldEl0ZW1zRm9yTmFtZSk6CisgICAgICAg
IChXZWJDb3JlOjpKU1N0eWxlU2hlZXRMaXN0OjpuYW1lR2V0dGVyKToKKyAgICAgICAgKiBiaW5k
aW5ncy9qcy9KU1dvcmtlckNvbnRleHRDdXN0b20uY3BwOgorICAgICAgICAoV2ViQ29yZTo6SlNX
b3JrZXJDb250ZXh0OjpnZXRPd25Qcm9wZXJ0eVNsb3REZWxlZ2F0ZSk6CisgICAgICAgIChXZWJD
b3JlOjpKU1dvcmtlckNvbnRleHQ6OmdldE93blByb3BlcnR5RGVzY3JpcHRvckRlbGVnYXRlKToK
KyAgICAgICAgKiBiaW5kaW5ncy9zY3JpcHRzL0NvZGVHZW5lcmF0b3JKUy5wbToKKyAgICAgICAg
KEdlbmVyYXRlR2V0T3duUHJvcGVydHlTbG90Qm9keSk6CisgICAgICAgIChHZW5lcmF0ZUdldE93
blByb3BlcnR5RGVzY3JpcHRvckJvZHkpOgorICAgICAgICAoR2VuZXJhdGVIZWFkZXIpOgorICAg
ICAgICAoR2VuZXJhdGVJbXBsZW1lbnRhdGlvbik6CisgICAgICAgIChHZW5lcmF0ZUNvbnN0cnVj
dG9yRGVjbGFyYXRpb24pOgorICAgICAgICAoR2VuZXJhdGVDb25zdHJ1Y3RvckRlZmluaXRpb24p
OgorICAgICAgICAqIGJyaWRnZS9jL2NfY2xhc3MuY3BwOgorICAgICAgICAoSlNDOjpCaW5kaW5n
czo6Q0NsYXNzOjptZXRob2RzTmFtZWQpOgorICAgICAgICAoSlNDOjpCaW5kaW5nczo6Q0NsYXNz
OjpmaWVsZE5hbWVkKToKKyAgICAgICAgKiBicmlkZ2UvYy9jX2NsYXNzLmg6CisgICAgICAgIChD
Q2xhc3MpOgorICAgICAgICAqIGJyaWRnZS9jL2NfaW5zdGFuY2UuY3BwOgorICAgICAgICAoSlND
OjpCaW5kaW5nczo6Q1J1bnRpbWVNZXRob2Q6OmNyZWF0ZSk6CisgICAgICAgIChKU0M6OkJpbmRp
bmdzOjpDUnVudGltZU1ldGhvZDo6ZmluaXNoQ3JlYXRpb24pOgorICAgICAgICAoSlNDOjpCaW5k
aW5nczo6Q0luc3RhbmNlOjpnZXRNZXRob2QpOgorICAgICAgICAqIGJyaWRnZS9jL2NfaW5zdGFu
Y2UuaDoKKyAgICAgICAgKENJbnN0YW5jZSk6CisgICAgICAgICogYnJpZGdlL2puaS9qc2MvSmF2
YUNsYXNzSlNDLmNwcDoKKyAgICAgICAgKEphdmFDbGFzczo6bWV0aG9kc05hbWVkKToKKyAgICAg
ICAgKEphdmFDbGFzczo6ZmllbGROYW1lZCk6CisgICAgICAgICogYnJpZGdlL2puaS9qc2MvSmF2
YUNsYXNzSlNDLmg6CisgICAgICAgIChKYXZhQ2xhc3MpOgorICAgICAgICAqIGJyaWRnZS9qbmkv
anNjL0phdmFJbnN0YW5jZUpTQy5jcHA6CisgICAgICAgIChKYXZhUnVudGltZU1ldGhvZDo6Y3Jl
YXRlKToKKyAgICAgICAgKEphdmFSdW50aW1lTWV0aG9kOjpmaW5pc2hDcmVhdGlvbik6CisgICAg
ICAgICogYnJpZGdlL2puaS9qc2MvSmF2YUluc3RhbmNlSlNDLmg6CisgICAgICAgIChKYXZhSW5z
dGFuY2UpOgorICAgICAgICAqIGJyaWRnZS9qc2MvQnJpZGdlSlNDLmg6CisgICAgICAgIChDbGFz
cyk6CisgICAgICAgIChKU0M6OkJpbmRpbmdzOjpDbGFzczo6ZmFsbGJhY2tPYmplY3QpOgorICAg
ICAgICAoSlNDOjpCaW5kaW5nczo6SW5zdGFuY2U6OnNldFZhbHVlT2ZVbmRlZmluZWRGaWVsZCk6
CisgICAgICAgIChJbnN0YW5jZSk6CisgICAgICAgIChKU0M6OkJpbmRpbmdzOjpJbnN0YW5jZTo6
Z2V0T3duUHJvcGVydHlTbG90KToKKyAgICAgICAgKEpTQzo6QmluZGluZ3M6Okluc3RhbmNlOjpn
ZXRPd25Qcm9wZXJ0eURlc2NyaXB0b3IpOgorICAgICAgICAoSlNDOjpCaW5kaW5nczo6SW5zdGFu
Y2U6OnB1dCk6CisgICAgICAgICogYnJpZGdlL29iamMvb2JqY19jbGFzcy5oOgorICAgICAgICAo
T2JqY0NsYXNzKToKKyAgICAgICAgKiBicmlkZ2Uvb2JqYy9vYmpjX2NsYXNzLm1tOgorICAgICAg
ICAoSlNDOjpCaW5kaW5nczo6T2JqY0NsYXNzOjptZXRob2RzTmFtZWQpOgorICAgICAgICAoSlND
OjpCaW5kaW5nczo6T2JqY0NsYXNzOjpmaWVsZE5hbWVkKToKKyAgICAgICAgKEpTQzo6QmluZGlu
Z3M6Ok9iamNDbGFzczo6ZmFsbGJhY2tPYmplY3QpOgorICAgICAgICAqIGJyaWRnZS9vYmpjL29i
amNfaW5zdGFuY2UuaDoKKyAgICAgICAgKE9iamNJbnN0YW5jZSk6CisgICAgICAgICogYnJpZGdl
L29iamMvb2JqY19pbnN0YW5jZS5tbToKKyAgICAgICAgKE9iakNSdW50aW1lTWV0aG9kOjpjcmVh
dGUpOgorICAgICAgICAoT2JqQ1J1bnRpbWVNZXRob2Q6OmZpbmlzaENyZWF0aW9uKToKKyAgICAg
ICAgKE9iamNJbnN0YW5jZTo6c2V0VmFsdWVPZlVuZGVmaW5lZEZpZWxkKToKKyAgICAgICAgKE9i
amNJbnN0YW5jZTo6Z2V0VmFsdWVPZlVuZGVmaW5lZEZpZWxkKToKKyAgICAgICAgKiBicmlkZ2Uv
b2JqYy9vYmpjX3J1bnRpbWUuaDoKKyAgICAgICAgKEpTQzo6QmluZGluZ3M6Ok9iamNGYWxsYmFj
a09iamVjdEltcDo6Y3JlYXRlKToKKyAgICAgICAgKEpTQzo6QmluZGluZ3M6Ok9iamNGYWxsYmFj
a09iamVjdEltcDo6cHJvcGVydHlOYW1lKToKKyAgICAgICAgKE9iamNGYWxsYmFja09iamVjdElt
cCk6CisgICAgICAgICogYnJpZGdlL29iamMvb2JqY19ydW50aW1lLm1tOgorICAgICAgICAoSlND
OjpCaW5kaW5nczo6T2JqY0ZhbGxiYWNrT2JqZWN0SW1wOjpPYmpjRmFsbGJhY2tPYmplY3RJbXAp
OgorICAgICAgICAoSlNDOjpCaW5kaW5nczo6T2JqY0ZhbGxiYWNrT2JqZWN0SW1wOjpnZXRPd25Q
cm9wZXJ0eVNsb3QpOgorICAgICAgICAoSlNDOjpCaW5kaW5nczo6T2JqY0ZhbGxiYWNrT2JqZWN0
SW1wOjpnZXRPd25Qcm9wZXJ0eURlc2NyaXB0b3IpOgorICAgICAgICAoSlNDOjpCaW5kaW5nczo6
T2JqY0ZhbGxiYWNrT2JqZWN0SW1wOjpwdXQpOgorICAgICAgICAoSlNDOjpCaW5kaW5nczo6Y2Fs
bE9iakNGYWxsYmFja09iamVjdCk6CisgICAgICAgIChKU0M6OkJpbmRpbmdzOjpPYmpjRmFsbGJh
Y2tPYmplY3RJbXA6OmRlbGV0ZVByb3BlcnR5KToKKyAgICAgICAgKEpTQzo6QmluZGluZ3M6Ok9i
amNGYWxsYmFja09iamVjdEltcDo6ZGVmYXVsdFZhbHVlKToKKyAgICAgICAgKiBicmlkZ2UvcnVu
dGltZV9hcnJheS5jcHA6CisgICAgICAgIChKU0M6OlJ1bnRpbWVBcnJheTo6bGVuZ3RoR2V0dGVy
KToKKyAgICAgICAgKEpTQzo6UnVudGltZUFycmF5OjpnZXRPd25Qcm9wZXJ0eVNsb3QpOgorICAg
ICAgICAoSlNDOjpSdW50aW1lQXJyYXk6OmdldE93blByb3BlcnR5RGVzY3JpcHRvcik6CisgICAg
ICAgIChKU0M6OlJ1bnRpbWVBcnJheTo6cHV0KToKKyAgICAgICAgKEpTQzo6UnVudGltZUFycmF5
OjpkZWxldGVQcm9wZXJ0eSk6CisgICAgICAgICogYnJpZGdlL3J1bnRpbWVfYXJyYXkuaDoKKyAg
ICAgICAgKFJ1bnRpbWVBcnJheSk6CisgICAgICAgICogYnJpZGdlL3J1bnRpbWVfbWV0aG9kLmNw
cDoKKyAgICAgICAgKEpTQzo6UnVudGltZU1ldGhvZDo6ZmluaXNoQ3JlYXRpb24pOgorICAgICAg
ICAoSlNDOjpSdW50aW1lTWV0aG9kOjpsZW5ndGhHZXR0ZXIpOgorICAgICAgICAoSlNDOjpSdW50
aW1lTWV0aG9kOjpnZXRPd25Qcm9wZXJ0eVNsb3QpOgorICAgICAgICAoSlNDOjpSdW50aW1lTWV0
aG9kOjpnZXRPd25Qcm9wZXJ0eURlc2NyaXB0b3IpOgorICAgICAgICAqIGJyaWRnZS9ydW50aW1l
X21ldGhvZC5oOgorICAgICAgICAoSlNDOjpSdW50aW1lTWV0aG9kOjpjcmVhdGUpOgorICAgICAg
ICAoUnVudGltZU1ldGhvZCk6CisgICAgICAgICogYnJpZGdlL3J1bnRpbWVfb2JqZWN0LmNwcDoK
KyAgICAgICAgKEpTQzo6QmluZGluZ3M6OlJ1bnRpbWVPYmplY3Q6OmZhbGxiYWNrT2JqZWN0R2V0
dGVyKToKKyAgICAgICAgKEpTQzo6QmluZGluZ3M6OlJ1bnRpbWVPYmplY3Q6OmZpZWxkR2V0dGVy
KToKKyAgICAgICAgKEpTQzo6QmluZGluZ3M6OlJ1bnRpbWVPYmplY3Q6Om1ldGhvZEdldHRlcik6
CisgICAgICAgIChKU0M6OkJpbmRpbmdzOjpSdW50aW1lT2JqZWN0OjpnZXRPd25Qcm9wZXJ0eVNs
b3QpOgorICAgICAgICAoSlNDOjpCaW5kaW5nczo6UnVudGltZU9iamVjdDo6Z2V0T3duUHJvcGVy
dHlEZXNjcmlwdG9yKToKKyAgICAgICAgKEpTQzo6QmluZGluZ3M6OlJ1bnRpbWVPYmplY3Q6OnB1
dCk6CisgICAgICAgIChKU0M6OkJpbmRpbmdzOjpSdW50aW1lT2JqZWN0OjpkZWxldGVQcm9wZXJ0
eSk6CisgICAgICAgICogYnJpZGdlL3J1bnRpbWVfb2JqZWN0Lmg6CisgICAgICAgIChSdW50aW1l
T2JqZWN0KToKKwogMjAxMi0wNS0xMSAgU2ltb24gRnJhc2VyICA8c2ltb24uZnJhc2VyQGFwcGxl
LmNvbT4KIAogICAgICAgICBDVkRpc3BsYXlMaW5rIGtlZXBzIHJ1bm5pbmcgYWZ0ZXIgYSBzaW5n
bGUgcmVxdWVzdEFuaW1hdGlvbkZyYW1lCkluZGV4OiBTb3VyY2UvV2ViQ29yZS9XZWJDb3JlLmV4
cC5pbgo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2ViQ29yZS9XZWJDb3JlLmV4cC5pbgkocmV2aXNp
b24gMTE2NjY3KQorKysgU291cmNlL1dlYkNvcmUvV2ViQ29yZS5leHAuaW4JKHdvcmtpbmcgY29w
eSkKQEAgLTE4ODQsMjIgKzE4ODQsMjIgQEAgX19aTjdXZWJDb3JlNUZyYW1lMjZzZW5kT3JpZW50
YXRpb25DaGFuZwogCiAjaWYgVVNFKFBMVUdJTl9IT1NUX1BST0NFU1MpCiBfX1pOM0pTQzEzUnVu
dGltZU1ldGhvZDExZ2V0Q2FsbERhdGFFUE5TXzZKU0NlbGxFUk5TXzhDYWxsRGF0YUUKLV9fWk4z
SlNDMTNSdW50aW1lTWV0aG9kMTRmaW5pc2hDcmVhdGlvbkVSTlNfMTJKU0dsb2JhbERhdGFFUktO
U18xMElkZW50aWZpZXJFCi1fX1pOM0pTQzEzUnVudGltZU1ldGhvZDE4Z2V0T3duUHJvcGVydHlT
bG90RVBOU182SlNDZWxsRVBOU185RXhlY1N0YXRlRVJLTlNfMTBJZGVudGlmaWVyRVJOU18xMlBy
b3BlcnR5U2xvdEUKLV9fWk4zSlNDMTNSdW50aW1lTWV0aG9kMjRnZXRPd25Qcm9wZXJ0eURlc2Ny
aXB0b3JFUE5TXzhKU09iamVjdEVQTlNfOUV4ZWNTdGF0ZUVSS05TXzEwSWRlbnRpZmllckVSTlNf
MThQcm9wZXJ0eURlc2NyaXB0b3JFCitfX1pOM0pTQzEzUnVudGltZU1ldGhvZDE0ZmluaXNoQ3Jl
YXRpb25FUk5TXzEySlNHbG9iYWxEYXRhRVJLTlNfN1VTdHJpbmdFCitfX1pOM0pTQzEzUnVudGlt
ZU1ldGhvZDE4Z2V0T3duUHJvcGVydHlTbG90RVBOU182SlNDZWxsRVBOU185RXhlY1N0YXRlRU5T
XzEyUHJvcGVydHlOYW1lRVJOU18xMlByb3BlcnR5U2xvdEUKK19fWk4zSlNDMTNSdW50aW1lTWV0
aG9kMjRnZXRPd25Qcm9wZXJ0eURlc2NyaXB0b3JFUE5TXzhKU09iamVjdEVQTlNfOUV4ZWNTdGF0
ZUVOU18xMlByb3BlcnR5TmFtZUVSTlNfMThQcm9wZXJ0eURlc2NyaXB0b3JFCiBfX1pOM0pTQzEz
UnVudGltZU1ldGhvZDZzX2luZm9FCiBfX1pOM0pTQzEzUnVudGltZU1ldGhvZDdkZXN0cm95RVBO
U182SlNDZWxsRQogX19aTjNKU0MxM1J1bnRpbWVNZXRob2RDMkVQTlNfMTRKU0dsb2JhbE9iamVj
dEVQTlNfOVN0cnVjdHVyZUVSTjNXVEY2VmVjdG9ySVBOU184QmluZGluZ3M2TWV0aG9kRUxtMEVF
RQogX19aTjNKU0M4QmluZGluZ3MxMFJvb3RPYmplY3REMUV2CiBfX1pOM0pTQzhCaW5kaW5nczEz
UnVudGltZU9iamVjdDExZ2V0Q2FsbERhdGFFUE5TXzZKU0NlbGxFUk5TXzhDYWxsRGF0YUUKIF9f
Wk4zSlNDOEJpbmRpbmdzMTNSdW50aW1lT2JqZWN0MTJkZWZhdWx0VmFsdWVFUEtOU184SlNPYmpl
Y3RFUE5TXzlFeGVjU3RhdGVFTlNfMjJQcmVmZXJyZWRQcmltaXRpdmVUeXBlRQotX19aTjNKU0M4
QmluZGluZ3MxM1J1bnRpbWVPYmplY3QxNGRlbGV0ZVByb3BlcnR5RVBOU182SlNDZWxsRVBOU185
RXhlY1N0YXRlRVJLTlNfMTBJZGVudGlmaWVyRQorX19aTjNKU0M4QmluZGluZ3MxM1J1bnRpbWVP
YmplY3QxNGRlbGV0ZVByb3BlcnR5RVBOU182SlNDZWxsRVBOU185RXhlY1N0YXRlRU5TXzEyUHJv
cGVydHlOYW1lRQogX19aTjNKU0M4QmluZGluZ3MxM1J1bnRpbWVPYmplY3QxNGZpbmlzaENyZWF0
aW9uRVBOU18xNEpTR2xvYmFsT2JqZWN0RQogX19aTjNKU0M4QmluZGluZ3MxM1J1bnRpbWVPYmpl
Y3QxNmdldENvbnN0cnVjdERhdGFFUE5TXzZKU0NlbGxFUk5TXzEzQ29uc3RydWN0RGF0YUUKLV9f
Wk4zSlNDOEJpbmRpbmdzMTNSdW50aW1lT2JqZWN0MThnZXRPd25Qcm9wZXJ0eVNsb3RFUE5TXzZK
U0NlbGxFUE5TXzlFeGVjU3RhdGVFUktOU18xMElkZW50aWZpZXJFUk5TXzEyUHJvcGVydHlTbG90
RQorX19aTjNKU0M4QmluZGluZ3MxM1J1bnRpbWVPYmplY3QxOGdldE93blByb3BlcnR5U2xvdEVQ
TlNfNkpTQ2VsbEVQTlNfOUV4ZWNTdGF0ZUVOU18xMlByb3BlcnR5TmFtZUVSTlNfMTJQcm9wZXJ0
eVNsb3RFCiBfX1pOM0pTQzhCaW5kaW5nczEzUnVudGltZU9iamVjdDE5Z2V0T3duUHJvcGVydHlO
YW1lc0VQTlNfOEpTT2JqZWN0RVBOU185RXhlY1N0YXRlRVJOU18xN1Byb3BlcnR5TmFtZUFycmF5
RU5TXzE1RW51bWVyYXRpb25Nb2RlRQotX19aTjNKU0M4QmluZGluZ3MxM1J1bnRpbWVPYmplY3Qy
NGdldE93blByb3BlcnR5RGVzY3JpcHRvckVQTlNfOEpTT2JqZWN0RVBOU185RXhlY1N0YXRlRVJL
TlNfMTBJZGVudGlmaWVyRVJOU18xOFByb3BlcnR5RGVzY3JpcHRvckUKLV9fWk4zSlNDOEJpbmRp
bmdzMTNSdW50aW1lT2JqZWN0M3B1dEVQTlNfNkpTQ2VsbEVQTlNfOUV4ZWNTdGF0ZUVSS05TXzEw
SWRlbnRpZmllckVOU183SlNWYWx1ZUVSTlNfMTVQdXRQcm9wZXJ0eVNsb3RFCitfX1pOM0pTQzhC
aW5kaW5nczEzUnVudGltZU9iamVjdDI0Z2V0T3duUHJvcGVydHlEZXNjcmlwdG9yRVBOU184SlNP
YmplY3RFUE5TXzlFeGVjU3RhdGVFTlNfMTJQcm9wZXJ0eU5hbWVFUk5TXzE4UHJvcGVydHlEZXNj
cmlwdG9yRQorX19aTjNKU0M4QmluZGluZ3MxM1J1bnRpbWVPYmplY3QzcHV0RVBOU182SlNDZWxs
RVBOU185RXhlY1N0YXRlRU5TXzEyUHJvcGVydHlOYW1lRU5TXzdKU1ZhbHVlRVJOU18xNVB1dFBy
b3BlcnR5U2xvdEUKIF9fWk4zSlNDOEJpbmRpbmdzMTNSdW50aW1lT2JqZWN0NnNfaW5mb0UKIF9f
Wk4zSlNDOEJpbmRpbmdzMTNSdW50aW1lT2JqZWN0N2Rlc3Ryb3lFUE5TXzZKU0NlbGxFCiBfX1pO
M0pTQzhCaW5kaW5nczEzUnVudGltZU9iamVjdEMyRVBOU185RXhlY1N0YXRlRVBOU18xNEpTR2xv
YmFsT2JqZWN0RVBOU185U3RydWN0dXJlRU4zV1RGMTBQYXNzUmVmUHRySU5TMF84SW5zdGFuY2VF
RUUKSW5kZXg6IFNvdXJjZS9XZWJDb3JlL2JpbmRpbmdzL2pzL0pTQ1NTU3R5bGVEZWNsYXJhdGlv
bkN1c3RvbS5jcHAKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL1dlYkNvcmUvYmluZGluZ3MvanMvSlND
U1NTdHlsZURlY2xhcmF0aW9uQ3VzdG9tLmNwcAkocmV2aXNpb24gMTE2NjY3KQorKysgU291cmNl
L1dlYkNvcmUvYmluZGluZ3MvanMvSlNDU1NTdHlsZURlY2xhcmF0aW9uQ3VzdG9tLmNwcAkod29y
a2luZyBjb3B5KQpAQCAtMTc2LDE2ICsxNzYsMTYgQEAgc3RhdGljIGlubGluZSB2b2lkIHdyaXRl
RXB1YlByZWZpeChjaGFyKgogICAgICpidWZmZXIrKyA9ICctJzsKIH0KIAotc3RhdGljIENTU1By
b3BlcnR5SW5mbyBjc3NQcm9wZXJ0eUlERm9ySlNDU1NQcm9wZXJ0eU5hbWUoY29uc3QgSWRlbnRp
ZmllciYgcHJvcGVydHlOYW1lKQorc3RhdGljIENTU1Byb3BlcnR5SW5mbyBjc3NQcm9wZXJ0eUlE
Rm9ySlNDU1NQcm9wZXJ0eU5hbWUoUHJvcGVydHlOYW1lIHByb3BlcnR5TmFtZSkKIHsKICAgICBD
U1NQcm9wZXJ0eUluZm8gcHJvcGVydHlJbmZvID0ge0NTU1Byb3BlcnR5SW52YWxpZCwgZmFsc2V9
OwogICAgIGJvb2wgaGFkUGl4ZWxPclBvc1ByZWZpeCA9IGZhbHNlOwogCi0gICAgdW5zaWduZWQg
bGVuZ3RoID0gcHJvcGVydHlOYW1lLmxlbmd0aCgpOworICAgIFN0cmluZ0ltcGwqIHByb3BlcnR5
TmFtZVN0cmluZyA9IHByb3BlcnR5TmFtZS5pbXBsKCk7CisgICAgdW5zaWduZWQgbGVuZ3RoID0g
cHJvcGVydHlOYW1lU3RyaW5nLT5sZW5ndGgoKTsKICAgICBpZiAoIWxlbmd0aCkKICAgICAgICAg
cmV0dXJuIHByb3BlcnR5SW5mbzsKIAotICAgIFN0cmluZ0ltcGwqIHByb3BlcnR5TmFtZVN0cmlu
ZyA9IHByb3BlcnR5TmFtZS5pbXBsKCk7CiAgICAgU3RyaW5nIHN0cmluZ0ZvckNhY2hlID0gU3Ry
aW5nKHByb3BlcnR5TmFtZVN0cmluZyk7CiAgICAgdHlwZWRlZiBIYXNoTWFwPFN0cmluZywgQ1NT
UHJvcGVydHlJbmZvPiBDU1NQcm9wZXJ0eUluZm9NYXA7CiAgICAgREVGSU5FX1NUQVRJQ19MT0NB
TChDU1NQcm9wZXJ0eUluZm9NYXAsIHByb3BlcnR5SW5mb0NhY2hlLCAoKSk7CkBAIC0zMjAsNyAr
MzIwLDcgQEAgc3RhdGljIEpTVmFsdWUgY3NzUHJvcGVydHlHZXR0ZXJDYWxsYmFjawogICAgIHJl
dHVybiBjc3NQcm9wZXJ0eUdldHRlcihleGVjLCBqc0Nhc3Q8SlNDU1NTdHlsZURlY2xhcmF0aW9u
Kj4oYXNPYmplY3Qoc2xvdEJhc2UpKSwgcHJvcGVydHlJRCk7CiB9CiAKLWJvb2wgSlNDU1NTdHls
ZURlY2xhcmF0aW9uOjpnZXRPd25Qcm9wZXJ0eVNsb3REZWxlZ2F0ZShFeGVjU3RhdGUqLCBjb25z
dCBJZGVudGlmaWVyJiBwcm9wZXJ0eUlkZW50aWZpZXIsIFByb3BlcnR5U2xvdCYgc2xvdCkKK2Jv
b2wgSlNDU1NTdHlsZURlY2xhcmF0aW9uOjpnZXRPd25Qcm9wZXJ0eVNsb3REZWxlZ2F0ZShFeGVj
U3RhdGUqLCBQcm9wZXJ0eU5hbWUgcHJvcGVydHlJZGVudGlmaWVyLCBQcm9wZXJ0eVNsb3QmIHNs
b3QpCiB7CiAgICAgQ1NTUHJvcGVydHlJbmZvIHByb3BlcnR5SW5mbyA9IGNzc1Byb3BlcnR5SURG
b3JKU0NTU1Byb3BlcnR5TmFtZShwcm9wZXJ0eUlkZW50aWZpZXIpOwogICAgIGlmICghcHJvcGVy
dHlJbmZvLnByb3BlcnR5SUQpCkBAIC0zMzMsNyArMzMzLDcgQEAgYm9vbCBKU0NTU1N0eWxlRGVj
bGFyYXRpb246OmdldE93blByb3BlcgogICAgIHJldHVybiB0cnVlOwogfQogCi1ib29sIEpTQ1NT
U3R5bGVEZWNsYXJhdGlvbjo6Z2V0T3duUHJvcGVydHlEZXNjcmlwdG9yRGVsZWdhdGUoSlNDOjpF
eGVjU3RhdGUqIGV4ZWMsIGNvbnN0IEpTQzo6SWRlbnRpZmllciYgcHJvcGVydHlJZGVudGlmaWVy
LCBKU0M6OlByb3BlcnR5RGVzY3JpcHRvciYgZGVzY3JpcHRvcikKK2Jvb2wgSlNDU1NTdHlsZURl
Y2xhcmF0aW9uOjpnZXRPd25Qcm9wZXJ0eURlc2NyaXB0b3JEZWxlZ2F0ZShKU0M6OkV4ZWNTdGF0
ZSogZXhlYywgSlNDOjpQcm9wZXJ0eU5hbWUgcHJvcGVydHlJZGVudGlmaWVyLCBKU0M6OlByb3Bl
cnR5RGVzY3JpcHRvciYgZGVzY3JpcHRvcikKIHsKICAgICBDU1NQcm9wZXJ0eUluZm8gcHJvcGVy
dHlJbmZvID0gY3NzUHJvcGVydHlJREZvckpTQ1NTUHJvcGVydHlOYW1lKHByb3BlcnR5SWRlbnRp
Zmllcik7CiAgICAgaWYgKCFwcm9wZXJ0eUluZm8ucHJvcGVydHlJRCkKQEAgLTM0OCw3ICszNDgs
NyBAQCBib29sIEpTQ1NTU3R5bGVEZWNsYXJhdGlvbjo6Z2V0T3duUHJvcGVyCiAgICAgcmV0dXJu
IHRydWU7CiB9CiAKLWJvb2wgSlNDU1NTdHlsZURlY2xhcmF0aW9uOjpwdXREZWxlZ2F0ZShFeGVj
U3RhdGUqIGV4ZWMsIGNvbnN0IElkZW50aWZpZXImIHByb3BlcnR5TmFtZSwgSlNWYWx1ZSB2YWx1
ZSwgUHV0UHJvcGVydHlTbG90JikKK2Jvb2wgSlNDU1NTdHlsZURlY2xhcmF0aW9uOjpwdXREZWxl
Z2F0ZShFeGVjU3RhdGUqIGV4ZWMsIFByb3BlcnR5TmFtZSBwcm9wZXJ0eU5hbWUsIEpTVmFsdWUg
dmFsdWUsIFB1dFByb3BlcnR5U2xvdCYpCiB7CiAgICAgQ1NTUHJvcGVydHlJbmZvIHByb3BlcnR5
SW5mbyA9IGNzc1Byb3BlcnR5SURGb3JKU0NTU1Byb3BlcnR5TmFtZShwcm9wZXJ0eU5hbWUpOwog
ICAgIGlmICghcHJvcGVydHlJbmZvLnByb3BlcnR5SUQpCkluZGV4OiBTb3VyY2UvV2ViQ29yZS9i
aW5kaW5ncy9qcy9KU0RPTUJpbmRpbmcuY3BwCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9XZWJDb3Jl
L2JpbmRpbmdzL2pzL0pTRE9NQmluZGluZy5jcHAJKHJldmlzaW9uIDExNjY2NykKKysrIFNvdXJj
ZS9XZWJDb3JlL2JpbmRpbmdzL2pzL0pTRE9NQmluZGluZy5jcHAJKHdvcmtpbmcgY29weSkKQEAg
LTEwNywxMSArMTA3LDExIEBAIEpTVmFsdWUganNTdHJpbmdPckZhbHNlKEV4ZWNTdGF0ZSogZXhl
YywKICAgICByZXR1cm4ganNTdHJpbmcoZXhlYywgdXJsLnN0cmluZygpKTsKIH0KIAotQXRvbWlj
U3RyaW5nSW1wbCogZmluZEF0b21pY1N0cmluZyhjb25zdCBJZGVudGlmaWVyJiBpZGVudGlmaWVy
KQorQXRvbWljU3RyaW5nSW1wbCogZmluZEF0b21pY1N0cmluZyhQcm9wZXJ0eU5hbWUgcHJvcGVy
dHlOYW1lKQogewotICAgIGlmIChpZGVudGlmaWVyLmlzTnVsbCgpKQorICAgIFN0cmluZ0ltcGwq
IGltcGwgPSBwcm9wZXJ0eU5hbWUuaW1wbCgpOworICAgIGlmICghaW1wbCkKICAgICAgICAgcmV0
dXJuIDA7Ci0gICAgU3RyaW5nSW1wbCogaW1wbCA9IGlkZW50aWZpZXIuaW1wbCgpOwogICAgIEFT
U0VSVChpbXBsLT5leGlzdGluZ0hhc2goKSk7CiAgICAgcmV0dXJuIEF0b21pY1N0cmluZzo6Zmlu
ZChpbXBsLT5jaGFyYWN0ZXJzKCksIGltcGwtPmxlbmd0aCgpLCBpbXBsLT5leGlzdGluZ0hhc2go
KSk7CiB9CkBAIC0yNDMsOSArMjQzLDkgQEAgdm9pZCBwcmludEVycm9yTWVzc2FnZUZvckZyYW1l
KEZyYW1lKiBmcgogICAgIGZyYW1lLT5kb21XaW5kb3coKS0+cHJpbnRFcnJvck1lc3NhZ2UobWVz
c2FnZSk7CiB9CiAKLUpTVmFsdWUgb2JqZWN0VG9TdHJpbmdGdW5jdGlvbkdldHRlcihFeGVjU3Rh
dGUqIGV4ZWMsIEpTVmFsdWUsIGNvbnN0IElkZW50aWZpZXImIHByb3BlcnR5TmFtZSkKK0pTVmFs
dWUgb2JqZWN0VG9TdHJpbmdGdW5jdGlvbkdldHRlcihFeGVjU3RhdGUqIGV4ZWMsIEpTVmFsdWUs
IFByb3BlcnR5TmFtZSBwcm9wZXJ0eU5hbWUpCiB7Ci0gICAgcmV0dXJuIEpTRnVuY3Rpb246OmNy
ZWF0ZShleGVjLCBleGVjLT5sZXhpY2FsR2xvYmFsT2JqZWN0KCksIDAsIHByb3BlcnR5TmFtZSwg
b2JqZWN0UHJvdG9GdW5jVG9TdHJpbmcpOworICAgIHJldHVybiBKU0Z1bmN0aW9uOjpjcmVhdGUo
ZXhlYywgZXhlYy0+bGV4aWNhbEdsb2JhbE9iamVjdCgpLCAwLCBwcm9wZXJ0eU5hbWUuaW1wbCgp
LCBvYmplY3RQcm90b0Z1bmNUb1N0cmluZyk7CiB9CiAKIFN0cnVjdHVyZSogZ2V0Q2FjaGVkRE9N
U3RydWN0dXJlKEpTRE9NR2xvYmFsT2JqZWN0KiBnbG9iYWxPYmplY3QsIGNvbnN0IENsYXNzSW5m
byogY2xhc3NJbmZvKQpJbmRleDogU291cmNlL1dlYkNvcmUvYmluZGluZ3MvanMvSlNET01CaW5k
aW5nLmgKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PQotLS0gU291cmNlL1dlYkNvcmUvYmluZGluZ3MvanMvSlNET01CaW5k
aW5nLmgJKHJldmlzaW9uIDExNjY2NykKKysrIFNvdXJjZS9XZWJDb3JlL2JpbmRpbmdzL2pzL0pT
RE9NQmluZGluZy5oCSh3b3JraW5nIGNvcHkpCkBAIC0yNTIsMTMgKzI1MiwxMyBAQCBlbnVtIFBh
cmFtZXRlckRlZmF1bHRQb2xpY3kgewogICAgIC8vIG9iamVjdCwgdG8gbGV0IHRoZSBlbmdpbmUg
a25vdyB0aGF0IGNvbGxlY3RpbmcgdGhlIEpTU3RyaW5nIHdyYXBwZXIgaXMgdW5saWtlbHkgdG8g
c2F2ZSBtZW1vcnkuCiAgICAgSlNDOjpKU1ZhbHVlIGpzT3duZWRTdHJpbmdPck51bGwoSlNDOjpF
eGVjU3RhdGUqLCBjb25zdCBTdHJpbmcmKTsgCiAKLSAgICBTdHJpbmcgaWRlbnRpZmllclRvU3Ry
aW5nKGNvbnN0IEpTQzo6SWRlbnRpZmllciYpOworICAgIFN0cmluZyBwcm9wZXJ0eU5hbWVUb1N0
cmluZyhKU0M6OlByb3BlcnR5TmFtZSk7CiAgICAgU3RyaW5nIHVzdHJpbmdUb1N0cmluZyhjb25z
dCBKU0M6OlVTdHJpbmcmKTsKICAgICBKU0M6OlVTdHJpbmcgc3RyaW5nVG9VU3RyaW5nKGNvbnN0
IFN0cmluZyYpOwogCi0gICAgQXRvbWljU3RyaW5nIGlkZW50aWZpZXJUb0F0b21pY1N0cmluZyhj
b25zdCBKU0M6OklkZW50aWZpZXImKTsKKyAgICBBdG9taWNTdHJpbmcgcHJvcGVydHlOYW1lVG9B
dG9taWNTdHJpbmcoSlNDOjpQcm9wZXJ0eU5hbWUpOwogICAgIEF0b21pY1N0cmluZyB1c3RyaW5n
VG9BdG9taWNTdHJpbmcoY29uc3QgSlNDOjpVU3RyaW5nJik7Ci0gICAgQXRvbWljU3RyaW5nSW1w
bCogZmluZEF0b21pY1N0cmluZyhjb25zdCBKU0M6OklkZW50aWZpZXImKTsKKyAgICBBdG9taWNT
dHJpbmdJbXBsKiBmaW5kQXRvbWljU3RyaW5nKEpTQzo6UHJvcGVydHlOYW1lKTsKIAogICAgIFN0
cmluZyB2YWx1ZVRvU3RyaW5nV2l0aE51bGxDaGVjayhKU0M6OkV4ZWNTdGF0ZSosIEpTQzo6SlNW
YWx1ZSk7IC8vIG51bGwgaWYgdGhlIHZhbHVlIGlzIG51bGwKICAgICBTdHJpbmcgdmFsdWVUb1N0
cmluZ1dpdGhVbmRlZmluZWRPck51bGxDaGVjayhKU0M6OkV4ZWNTdGF0ZSosIEpTQzo6SlNWYWx1
ZSk7IC8vIG51bGwgaWYgdGhlIHZhbHVlIGlzIG51bGwgb3IgdW5kZWZpbmVkCkBAIC0zMzcsNyAr
MzM3LDcgQEAgZW51bSBQYXJhbWV0ZXJEZWZhdWx0UG9saWN5IHsKICAgICBET01XaW5kb3cqIGZp
cnN0RE9NV2luZG93KEpTQzo6RXhlY1N0YXRlKik7CiAKICAgICB2b2lkIHByaW50RXJyb3JNZXNz
YWdlRm9yRnJhbWUoRnJhbWUqLCBjb25zdCBTdHJpbmcmIG1lc3NhZ2UpOwotICAgIEpTQzo6SlNW
YWx1ZSBvYmplY3RUb1N0cmluZ0Z1bmN0aW9uR2V0dGVyKEpTQzo6RXhlY1N0YXRlKiwgSlNDOjpK
U1ZhbHVlLCBjb25zdCBKU0M6OklkZW50aWZpZXImIHByb3BlcnR5TmFtZSk7CisgICAgSlNDOjpK
U1ZhbHVlIG9iamVjdFRvU3RyaW5nRnVuY3Rpb25HZXR0ZXIoSlNDOjpFeGVjU3RhdGUqLCBKU0M6
OkpTVmFsdWUsIEpTQzo6UHJvcGVydHlOYW1lKTsKIAogICAgIGlubGluZSBKU0M6OkpTVmFsdWUg
anNTdHJpbmcoSlNDOjpFeGVjU3RhdGUqIGV4ZWMsIGNvbnN0IFN0cmluZyYgcykKICAgICB7CkBA
IC0zNzEsOSArMzcxLDkgQEAgZW51bSBQYXJhbWV0ZXJEZWZhdWx0UG9saWN5IHsKICAgICAgICAg
cmV0dXJuIEpTQzo6VVN0cmluZyhzLmltcGwoKSk7CiAgICAgfQogCi0gICAgaW5saW5lIFN0cmlu
ZyBpZGVudGlmaWVyVG9TdHJpbmcoY29uc3QgSlNDOjpJZGVudGlmaWVyJiBpKQorICAgIGlubGlu
ZSBTdHJpbmcgcHJvcGVydHlOYW1lVG9TdHJpbmcoSlNDOjpQcm9wZXJ0eU5hbWUgcHJvcGVydHlO
YW1lKQogICAgIHsKLSAgICAgICAgcmV0dXJuIGkuaW1wbCgpOworICAgICAgICByZXR1cm4gcHJv
cGVydHlOYW1lLmltcGwoKTsKICAgICB9CiAKICAgICBpbmxpbmUgQXRvbWljU3RyaW5nIHVzdHJp
bmdUb0F0b21pY1N0cmluZyhjb25zdCBKU0M6OlVTdHJpbmcmIHUpCkBAIC0zODEsOSArMzgxLDkg
QEAgZW51bSBQYXJhbWV0ZXJEZWZhdWx0UG9saWN5IHsKICAgICAgICAgcmV0dXJuIEF0b21pY1N0
cmluZyh1LmltcGwoKSk7CiAgICAgfQogCi0gICAgaW5saW5lIEF0b21pY1N0cmluZyBpZGVudGlm
aWVyVG9BdG9taWNTdHJpbmcoY29uc3QgSlNDOjpJZGVudGlmaWVyJiBpZGVudGlmaWVyKQorICAg
IGlubGluZSBBdG9taWNTdHJpbmcgcHJvcGVydHlOYW1lVG9BdG9taWNTdHJpbmcoSlNDOjpQcm9w
ZXJ0eU5hbWUgcHJvcGVydHlOYW1lKQogICAgIHsKLSAgICAgICAgcmV0dXJuIEF0b21pY1N0cmlu
ZyhpZGVudGlmaWVyLmltcGwoKSk7CisgICAgICAgIHJldHVybiBBdG9taWNTdHJpbmcocHJvcGVy
dHlOYW1lLmltcGwoKSk7CiAgICAgfQogCiAgICAgaW5saW5lIFZlY3Rvcjx1bnNpZ25lZCBsb25n
PiBqc1Vuc2lnbmVkTG9uZ0FycmF5VG9WZWN0b3IoSlNDOjpFeGVjU3RhdGUqIGV4ZWMsIEpTQzo6
SlNWYWx1ZSB2YWx1ZSkKSW5kZXg6IFNvdXJjZS9XZWJDb3JlL2JpbmRpbmdzL2pzL0pTRE9NTWlt
ZVR5cGVBcnJheUN1c3RvbS5jcHAKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL1dlYkNvcmUvYmluZGlu
Z3MvanMvSlNET01NaW1lVHlwZUFycmF5Q3VzdG9tLmNwcAkocmV2aXNpb24gMTE2NjY3KQorKysg
U291cmNlL1dlYkNvcmUvYmluZGluZ3MvanMvSlNET01NaW1lVHlwZUFycmF5Q3VzdG9tLmNwcAko
d29ya2luZyBjb3B5KQpAQCAtMjgsMTUgKzI4LDE1IEBAIG5hbWVzcGFjZSBXZWJDb3JlIHsKIAog
dXNpbmcgbmFtZXNwYWNlIEpTQzsKIAotYm9vbCBKU0RPTU1pbWVUeXBlQXJyYXk6OmNhbkdldEl0
ZW1zRm9yTmFtZShFeGVjU3RhdGUqLCBET01NaW1lVHlwZUFycmF5KiBtaW1lVHlwZUFycmF5LCBj
b25zdCBJZGVudGlmaWVyJiBwcm9wZXJ0eU5hbWUpCitib29sIEpTRE9NTWltZVR5cGVBcnJheTo6
Y2FuR2V0SXRlbXNGb3JOYW1lKEV4ZWNTdGF0ZSosIERPTU1pbWVUeXBlQXJyYXkqIG1pbWVUeXBl
QXJyYXksIFByb3BlcnR5TmFtZSBwcm9wZXJ0eU5hbWUpCiB7Ci0gICAgcmV0dXJuIG1pbWVUeXBl
QXJyYXktPmNhbkdldEl0ZW1zRm9yTmFtZShpZGVudGlmaWVyVG9BdG9taWNTdHJpbmcocHJvcGVy
dHlOYW1lKSk7CisgICAgcmV0dXJuIG1pbWVUeXBlQXJyYXktPmNhbkdldEl0ZW1zRm9yTmFtZShw
cm9wZXJ0eU5hbWVUb0F0b21pY1N0cmluZyhwcm9wZXJ0eU5hbWUpKTsKIH0KIAotSlNWYWx1ZSBK
U0RPTU1pbWVUeXBlQXJyYXk6Om5hbWVHZXR0ZXIoRXhlY1N0YXRlKiBleGVjLCBKU1ZhbHVlIHNs
b3RCYXNlLCBjb25zdCBJZGVudGlmaWVyJiBwcm9wZXJ0eU5hbWUpCitKU1ZhbHVlIEpTRE9NTWlt
ZVR5cGVBcnJheTo6bmFtZUdldHRlcihFeGVjU3RhdGUqIGV4ZWMsIEpTVmFsdWUgc2xvdEJhc2Us
IFByb3BlcnR5TmFtZSBwcm9wZXJ0eU5hbWUpCiB7CiAgICAgSlNET01NaW1lVHlwZUFycmF5KiB0
aGlzT2JqID0ganNDYXN0PEpTRE9NTWltZVR5cGVBcnJheSo+KGFzT2JqZWN0KHNsb3RCYXNlKSk7
Ci0gICAgcmV0dXJuIHRvSlMoZXhlYywgdGhpc09iai0+Z2xvYmFsT2JqZWN0KCksIHRoaXNPYmot
PmltcGwoKS0+bmFtZWRJdGVtKGlkZW50aWZpZXJUb0F0b21pY1N0cmluZyhwcm9wZXJ0eU5hbWUp
KSk7CisgICAgcmV0dXJuIHRvSlMoZXhlYywgdGhpc09iai0+Z2xvYmFsT2JqZWN0KCksIHRoaXNP
YmotPmltcGwoKS0+bmFtZWRJdGVtKHByb3BlcnR5TmFtZVRvQXRvbWljU3RyaW5nKHByb3BlcnR5
TmFtZSkpKTsKIH0KIAogfSAvLyBuYW1lc3BhY2UgV2ViQ29yZQpJbmRleDogU291cmNlL1dlYkNv
cmUvYmluZGluZ3MvanMvSlNET01QbHVnaW5BcnJheUN1c3RvbS5jcHAKPT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0g
U291cmNlL1dlYkNvcmUvYmluZGluZ3MvanMvSlNET01QbHVnaW5BcnJheUN1c3RvbS5jcHAJKHJl
dmlzaW9uIDExNjY2NykKKysrIFNvdXJjZS9XZWJDb3JlL2JpbmRpbmdzL2pzL0pTRE9NUGx1Z2lu
QXJyYXlDdXN0b20uY3BwCSh3b3JraW5nIGNvcHkpCkBAIC0yOCwxNSArMjgsMTUgQEAgbmFtZXNw
YWNlIFdlYkNvcmUgewogCiB1c2luZyBuYW1lc3BhY2UgSlNDOwogCi1ib29sIEpTRE9NUGx1Z2lu
QXJyYXk6OmNhbkdldEl0ZW1zRm9yTmFtZShFeGVjU3RhdGUqLCBET01QbHVnaW5BcnJheSogcGx1
Z2luQXJyYXksIGNvbnN0IElkZW50aWZpZXImIHByb3BlcnR5TmFtZSkKK2Jvb2wgSlNET01QbHVn
aW5BcnJheTo6Y2FuR2V0SXRlbXNGb3JOYW1lKEV4ZWNTdGF0ZSosIERPTVBsdWdpbkFycmF5KiBw
bHVnaW5BcnJheSwgUHJvcGVydHlOYW1lIHByb3BlcnR5TmFtZSkKIHsKLSAgICByZXR1cm4gcGx1
Z2luQXJyYXktPmNhbkdldEl0ZW1zRm9yTmFtZShpZGVudGlmaWVyVG9BdG9taWNTdHJpbmcocHJv
cGVydHlOYW1lKSk7CisgICAgcmV0dXJuIHBsdWdpbkFycmF5LT5jYW5HZXRJdGVtc0Zvck5hbWUo
cHJvcGVydHlOYW1lVG9BdG9taWNTdHJpbmcocHJvcGVydHlOYW1lKSk7CiB9CiAKLUpTVmFsdWUg
SlNET01QbHVnaW5BcnJheTo6bmFtZUdldHRlcihFeGVjU3RhdGUqIGV4ZWMsIEpTVmFsdWUgc2xv
dEJhc2UsIGNvbnN0IElkZW50aWZpZXImIHByb3BlcnR5TmFtZSkKK0pTVmFsdWUgSlNET01QbHVn
aW5BcnJheTo6bmFtZUdldHRlcihFeGVjU3RhdGUqIGV4ZWMsIEpTVmFsdWUgc2xvdEJhc2UsIFBy
b3BlcnR5TmFtZSBwcm9wZXJ0eU5hbWUpCiB7CiAgICAgSlNET01QbHVnaW5BcnJheSogdGhpc09i
aiA9IGpzQ2FzdDxKU0RPTVBsdWdpbkFycmF5Kj4oYXNPYmplY3Qoc2xvdEJhc2UpKTsKLSAgICBy
ZXR1cm4gdG9KUyhleGVjLCB0aGlzT2JqLT5nbG9iYWxPYmplY3QoKSwgdGhpc09iai0+aW1wbCgp
LT5uYW1lZEl0ZW0oaWRlbnRpZmllclRvQXRvbWljU3RyaW5nKHByb3BlcnR5TmFtZSkpKTsKKyAg
ICByZXR1cm4gdG9KUyhleGVjLCB0aGlzT2JqLT5nbG9iYWxPYmplY3QoKSwgdGhpc09iai0+aW1w
bCgpLT5uYW1lZEl0ZW0ocHJvcGVydHlOYW1lVG9BdG9taWNTdHJpbmcocHJvcGVydHlOYW1lKSkp
OwogfQogCiB9IC8vIG5hbWVzcGFjZSBXZWJDb3JlCkluZGV4OiBTb3VyY2UvV2ViQ29yZS9iaW5k
aW5ncy9qcy9KU0RPTVBsdWdpbkN1c3RvbS5jcHAKPT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL1dlYkNv
cmUvYmluZGluZ3MvanMvSlNET01QbHVnaW5DdXN0b20uY3BwCShyZXZpc2lvbiAxMTY2NjcpCisr
KyBTb3VyY2UvV2ViQ29yZS9iaW5kaW5ncy9qcy9KU0RPTVBsdWdpbkN1c3RvbS5jcHAJKHdvcmtp
bmcgY29weSkKQEAgLTI3LDE1ICsyNywxNSBAQCBuYW1lc3BhY2UgV2ViQ29yZSB7CiAKIHVzaW5n
IG5hbWVzcGFjZSBKU0M7CiAKLWJvb2wgSlNET01QbHVnaW46OmNhbkdldEl0ZW1zRm9yTmFtZShF
eGVjU3RhdGUqLCBET01QbHVnaW4qIHBsdWdpbiwgY29uc3QgSWRlbnRpZmllciYgcHJvcGVydHlO
YW1lKQorYm9vbCBKU0RPTVBsdWdpbjo6Y2FuR2V0SXRlbXNGb3JOYW1lKEV4ZWNTdGF0ZSosIERP
TVBsdWdpbiogcGx1Z2luLCBQcm9wZXJ0eU5hbWUgcHJvcGVydHlOYW1lKQogewotICAgIHJldHVy
biBwbHVnaW4tPmNhbkdldEl0ZW1zRm9yTmFtZShpZGVudGlmaWVyVG9BdG9taWNTdHJpbmcocHJv
cGVydHlOYW1lKSk7CisgICAgcmV0dXJuIHBsdWdpbi0+Y2FuR2V0SXRlbXNGb3JOYW1lKHByb3Bl
cnR5TmFtZVRvQXRvbWljU3RyaW5nKHByb3BlcnR5TmFtZSkpOwogfQogCi1KU1ZhbHVlIEpTRE9N
UGx1Z2luOjpuYW1lR2V0dGVyKEV4ZWNTdGF0ZSogZXhlYywgSlNWYWx1ZSBzbG90QmFzZSwgY29u
c3QgSWRlbnRpZmllciYgcHJvcGVydHlOYW1lKQorSlNWYWx1ZSBKU0RPTVBsdWdpbjo6bmFtZUdl
dHRlcihFeGVjU3RhdGUqIGV4ZWMsIEpTVmFsdWUgc2xvdEJhc2UsIFByb3BlcnR5TmFtZSBwcm9w
ZXJ0eU5hbWUpCiB7CiAgICAgSlNET01QbHVnaW4qIHRoaXNPYmogPSBqc0Nhc3Q8SlNET01QbHVn
aW4qPihhc09iamVjdChzbG90QmFzZSkpOwotICAgIHJldHVybiB0b0pTKGV4ZWMsIHRoaXNPYmot
Pmdsb2JhbE9iamVjdCgpLCB0aGlzT2JqLT5pbXBsKCktPm5hbWVkSXRlbShpZGVudGlmaWVyVG9B
dG9taWNTdHJpbmcocHJvcGVydHlOYW1lKSkpOworICAgIHJldHVybiB0b0pTKGV4ZWMsIHRoaXNP
YmotPmdsb2JhbE9iamVjdCgpLCB0aGlzT2JqLT5pbXBsKCktPm5hbWVkSXRlbShwcm9wZXJ0eU5h
bWVUb0F0b21pY1N0cmluZyhwcm9wZXJ0eU5hbWUpKSk7CiB9CiAKIH0gLy8gbmFtZXNwYWNlIFdl
YkNvcmUKSW5kZXg6IFNvdXJjZS9XZWJDb3JlL2JpbmRpbmdzL2pzL0pTRE9NU3RyaW5nTWFwQ3Vz
dG9tLmNwcAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2ViQ29yZS9iaW5kaW5ncy9qcy9KU0RPTVN0
cmluZ01hcEN1c3RvbS5jcHAJKHJldmlzaW9uIDExNjY2NykKKysrIFNvdXJjZS9XZWJDb3JlL2Jp
bmRpbmdzL2pzL0pTRE9NU3RyaW5nTWFwQ3VzdG9tLmNwcAkod29ya2luZyBjb3B5KQpAQCAtMzUs
MTUgKzM1LDE1IEBAIHVzaW5nIG5hbWVzcGFjZSBKU0M7CiAKIG5hbWVzcGFjZSBXZWJDb3JlIHsK
IAotYm9vbCBKU0RPTVN0cmluZ01hcDo6Y2FuR2V0SXRlbXNGb3JOYW1lKEV4ZWNTdGF0ZSosIERP
TVN0cmluZ01hcCogaW1wbCwgY29uc3QgSWRlbnRpZmllciYgcHJvcGVydHlOYW1lKQorYm9vbCBK
U0RPTVN0cmluZ01hcDo6Y2FuR2V0SXRlbXNGb3JOYW1lKEV4ZWNTdGF0ZSosIERPTVN0cmluZ01h
cCogaW1wbCwgUHJvcGVydHlOYW1lIHByb3BlcnR5TmFtZSkKIHsKLSAgICByZXR1cm4gaW1wbC0+
Y29udGFpbnMoaWRlbnRpZmllclRvQXRvbWljU3RyaW5nKHByb3BlcnR5TmFtZSkpOworICAgIHJl
dHVybiBpbXBsLT5jb250YWlucyhwcm9wZXJ0eU5hbWVUb0F0b21pY1N0cmluZyhwcm9wZXJ0eU5h
bWUpKTsKIH0KIAotSlNWYWx1ZSBKU0RPTVN0cmluZ01hcDo6bmFtZUdldHRlcihFeGVjU3RhdGUq
IGV4ZWMsIEpTVmFsdWUgc2xvdEJhc2UsIGNvbnN0IElkZW50aWZpZXImIHByb3BlcnR5TmFtZSkK
K0pTVmFsdWUgSlNET01TdHJpbmdNYXA6Om5hbWVHZXR0ZXIoRXhlY1N0YXRlKiBleGVjLCBKU1Zh
bHVlIHNsb3RCYXNlLCBQcm9wZXJ0eU5hbWUgcHJvcGVydHlOYW1lKQogewogICAgIEpTRE9NU3Ry
aW5nTWFwKiB0aGlzT2JqID0ganNDYXN0PEpTRE9NU3RyaW5nTWFwKj4oYXNPYmplY3Qoc2xvdEJh
c2UpKTsKLSAgICByZXR1cm4ganNTdHJpbmcoZXhlYywgdGhpc09iai0+aW1wbCgpLT5pdGVtKGlk
ZW50aWZpZXJUb0F0b21pY1N0cmluZyhwcm9wZXJ0eU5hbWUpKSk7CisgICAgcmV0dXJuIGpzU3Ry
aW5nKGV4ZWMsIHRoaXNPYmotPmltcGwoKS0+aXRlbShwcm9wZXJ0eU5hbWVUb0F0b21pY1N0cmlu
Zyhwcm9wZXJ0eU5hbWUpKSk7CiB9CiAKIHZvaWQgSlNET01TdHJpbmdNYXA6OmdldE93blByb3Bl
cnR5TmFtZXMoSlNPYmplY3QqIG9iamVjdCwgRXhlY1N0YXRlKiBleGVjLCBQcm9wZXJ0eU5hbWVB
cnJheSYgcHJvcGVydHlOYW1lcywgRW51bWVyYXRpb25Nb2RlIG1vZGUpCkBAIC01OCwxMCArNTgs
MTAgQEAgdm9pZCBKU0RPTVN0cmluZ01hcDo6Z2V0T3duUHJvcGVydHlOYW1lcwogICAgIEJhc2U6
OmdldE93blByb3BlcnR5TmFtZXModGhpc09iamVjdCwgZXhlYywgcHJvcGVydHlOYW1lcywgbW9k
ZSk7CiB9CiAKLWJvb2wgSlNET01TdHJpbmdNYXA6OmRlbGV0ZVByb3BlcnR5KEpTQ2VsbCogY2Vs
bCwgRXhlY1N0YXRlKiBleGVjLCBjb25zdCBJZGVudGlmaWVyJiBwcm9wZXJ0eU5hbWUpCitib29s
IEpTRE9NU3RyaW5nTWFwOjpkZWxldGVQcm9wZXJ0eShKU0NlbGwqIGNlbGwsIEV4ZWNTdGF0ZSog
ZXhlYywgUHJvcGVydHlOYW1lIHByb3BlcnR5TmFtZSkKIHsKICAgICBKU0RPTVN0cmluZ01hcCog
dGhpc09iamVjdCA9IGpzQ2FzdDxKU0RPTVN0cmluZ01hcCo+KGNlbGwpOwotICAgIEF0b21pY1N0
cmluZyBzdHJpbmdOYW1lID0gaWRlbnRpZmllclRvQXRvbWljU3RyaW5nKHByb3BlcnR5TmFtZSk7
CisgICAgQXRvbWljU3RyaW5nIHN0cmluZ05hbWUgPSBwcm9wZXJ0eU5hbWVUb0F0b21pY1N0cmlu
Zyhwcm9wZXJ0eU5hbWUpOwogICAgIGlmICghdGhpc09iamVjdC0+bV9pbXBsLT5jb250YWlucyhz
dHJpbmdOYW1lKSkKICAgICAgICAgcmV0dXJuIGZhbHNlOwogICAgIEV4Y2VwdGlvbkNvZGUgZWMg
PSAwOwpAQCAtNzAsMTMgKzcwLDEzIEBAIGJvb2wgSlNET01TdHJpbmdNYXA6OmRlbGV0ZVByb3Bl
cnR5KEpTQ2UKICAgICByZXR1cm4gIWVjOwogfQogCi1ib29sIEpTRE9NU3RyaW5nTWFwOjpwdXRE
ZWxlZ2F0ZShFeGVjU3RhdGUqIGV4ZWMsIGNvbnN0IElkZW50aWZpZXImIHByb3BlcnR5TmFtZSwg
SlNWYWx1ZSB2YWx1ZSwgUHV0UHJvcGVydHlTbG90JikKK2Jvb2wgSlNET01TdHJpbmdNYXA6OnB1
dERlbGVnYXRlKEV4ZWNTdGF0ZSogZXhlYywgUHJvcGVydHlOYW1lIHByb3BlcnR5TmFtZSwgSlNW
YWx1ZSB2YWx1ZSwgUHV0UHJvcGVydHlTbG90JikKIHsKICAgICBTdHJpbmcgc3RyaW5nVmFsdWUg
PSB1c3RyaW5nVG9TdHJpbmcodmFsdWUudG9TdHJpbmcoZXhlYyktPnZhbHVlKGV4ZWMpKTsKICAg
ICBpZiAoZXhlYy0+aGFkRXhjZXB0aW9uKCkpCiAgICAgICAgIHJldHVybiBmYWxzZTsKICAgICBF
eGNlcHRpb25Db2RlIGVjID0gMDsKLSAgICBpbXBsKCktPnNldEl0ZW0oaWRlbnRpZmllclRvU3Ry
aW5nKHByb3BlcnR5TmFtZSksIHN0cmluZ1ZhbHVlLCBlYyk7CisgICAgaW1wbCgpLT5zZXRJdGVt
KHByb3BlcnR5TmFtZVRvU3RyaW5nKHByb3BlcnR5TmFtZSksIHN0cmluZ1ZhbHVlLCBlYyk7CiAg
ICAgc2V0RE9NRXhjZXB0aW9uKGV4ZWMsIGVjKTsKICAgICByZXR1cm4gIWVjOwogfQpJbmRleDog
U291cmNlL1dlYkNvcmUvYmluZGluZ3MvanMvSlNET01XaW5kb3dDdXN0b20uY3BwCj09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT0KLS0tIFNvdXJjZS9XZWJDb3JlL2JpbmRpbmdzL2pzL0pTRE9NV2luZG93Q3VzdG9tLmNwcAko
cmV2aXNpb24gMTE2NjY3KQorKysgU291cmNlL1dlYkNvcmUvYmluZGluZ3MvanMvSlNET01XaW5k
b3dDdXN0b20uY3BwCSh3b3JraW5nIGNvcHkpCkBAIC05MiwxNCArOTIsMTQgQEAgdm9pZCBKU0RP
TVdpbmRvdzo6dmlzaXRDaGlsZHJlbihKU0NlbGwqIAogfQogCiB0ZW1wbGF0ZTxOYXRpdmVGdW5j
dGlvbiBuYXRpdmVGdW5jdGlvbiwgaW50IGxlbmd0aD4KLUpTVmFsdWUgbm9uQ2FjaGluZ1N0YXRp
Y0Z1bmN0aW9uR2V0dGVyKEV4ZWNTdGF0ZSogZXhlYywgSlNWYWx1ZSwgY29uc3QgSWRlbnRpZmll
ciYgcHJvcGVydHlOYW1lKQorSlNWYWx1ZSBub25DYWNoaW5nU3RhdGljRnVuY3Rpb25HZXR0ZXIo
RXhlY1N0YXRlKiBleGVjLCBKU1ZhbHVlLCBQcm9wZXJ0eU5hbWUgcHJvcGVydHlOYW1lKQogewot
ICAgIHJldHVybiBKU0Z1bmN0aW9uOjpjcmVhdGUoZXhlYywgZXhlYy0+bGV4aWNhbEdsb2JhbE9i
amVjdCgpLCBsZW5ndGgsIHByb3BlcnR5TmFtZSwgbmF0aXZlRnVuY3Rpb24pOworICAgIHJldHVy
biBKU0Z1bmN0aW9uOjpjcmVhdGUoZXhlYywgZXhlYy0+bGV4aWNhbEdsb2JhbE9iamVjdCgpLCBs
ZW5ndGgsIHByb3BlcnR5TmFtZS5pbXBsKCksIG5hdGl2ZUZ1bmN0aW9uKTsKIH0KIAotc3RhdGlj
IEpTVmFsdWUgY2hpbGRGcmFtZUdldHRlcihFeGVjU3RhdGUqIGV4ZWMsIEpTVmFsdWUgc2xvdEJh
c2UsIGNvbnN0IElkZW50aWZpZXImIHByb3BlcnR5TmFtZSkKK3N0YXRpYyBKU1ZhbHVlIGNoaWxk
RnJhbWVHZXR0ZXIoRXhlY1N0YXRlKiBleGVjLCBKU1ZhbHVlIHNsb3RCYXNlLCBQcm9wZXJ0eU5h
bWUgcHJvcGVydHlOYW1lKQogewotICAgIHJldHVybiB0b0pTKGV4ZWMsIGpzQ2FzdDxKU0RPTVdp
bmRvdyo+KGFzT2JqZWN0KHNsb3RCYXNlKSktPmltcGwoKS0+ZnJhbWUoKS0+dHJlZSgpLT5zY29w
ZWRDaGlsZChpZGVudGlmaWVyVG9BdG9taWNTdHJpbmcocHJvcGVydHlOYW1lKSktPmRvbVdpbmRv
dygpKTsKKyAgICByZXR1cm4gdG9KUyhleGVjLCBqc0Nhc3Q8SlNET01XaW5kb3cqPihhc09iamVj
dChzbG90QmFzZSkpLT5pbXBsKCktPmZyYW1lKCktPnRyZWUoKS0+c2NvcGVkQ2hpbGQocHJvcGVy
dHlOYW1lVG9BdG9taWNTdHJpbmcocHJvcGVydHlOYW1lKSktPmRvbVdpbmRvdygpKTsKIH0KIAog
c3RhdGljIEpTVmFsdWUgaW5kZXhHZXR0ZXIoRXhlY1N0YXRlKiBleGVjLCBKU1ZhbHVlIHNsb3RC
YXNlLCB1bnNpZ25lZCBpbmRleCkKQEAgLTEwNyw3ICsxMDcsNyBAQCBzdGF0aWMgSlNWYWx1ZSBp
bmRleEdldHRlcihFeGVjU3RhdGUqIGV4CiAgICAgcmV0dXJuIHRvSlMoZXhlYywganNDYXN0PEpT
RE9NV2luZG93Kj4oYXNPYmplY3Qoc2xvdEJhc2UpKS0+aW1wbCgpLT5mcmFtZSgpLT50cmVlKCkt
PnNjb3BlZENoaWxkKGluZGV4KS0+ZG9tV2luZG93KCkpOwogfQogCi1zdGF0aWMgSlNWYWx1ZSBu
YW1lZEl0ZW1HZXR0ZXIoRXhlY1N0YXRlKiBleGVjLCBKU1ZhbHVlIHNsb3RCYXNlLCBjb25zdCBJ
ZGVudGlmaWVyJiBwcm9wZXJ0eU5hbWUpCitzdGF0aWMgSlNWYWx1ZSBuYW1lZEl0ZW1HZXR0ZXIo
RXhlY1N0YXRlKiBleGVjLCBKU1ZhbHVlIHNsb3RCYXNlLCBQcm9wZXJ0eU5hbWUgcHJvcGVydHlO
YW1lKQogewogICAgIEpTRE9NV2luZG93QmFzZSogdGhpc09iaiA9IGpzQ2FzdDxKU0RPTVdpbmRv
dyo+KGFzT2JqZWN0KHNsb3RCYXNlKSk7CiAgICAgRG9jdW1lbnQqIGRvY3VtZW50ID0gdGhpc09i
ai0+aW1wbCgpLT5mcmFtZSgpLT5kb2N1bWVudCgpOwpAQCAtMTE2LDEzICsxMTYsMTMgQEAgc3Rh
dGljIEpTVmFsdWUgbmFtZWRJdGVtR2V0dGVyKEV4ZWNTdGF0ZQogICAgIEFTU0VSVChkb2N1bWVu
dCk7CiAgICAgQVNTRVJUKGRvY3VtZW50LT5pc0hUTUxEb2N1bWVudCgpKTsKIAotICAgIEhUTUxD
b2xsZWN0aW9uKiBjb2xsZWN0aW9uID0gZG9jdW1lbnQtPndpbmRvd05hbWVkSXRlbXMoaWRlbnRp
ZmllclRvQXRvbWljU3RyaW5nKHByb3BlcnR5TmFtZSkpOworICAgIEhUTUxDb2xsZWN0aW9uKiBj
b2xsZWN0aW9uID0gZG9jdW1lbnQtPndpbmRvd05hbWVkSXRlbXMocHJvcGVydHlOYW1lVG9BdG9t
aWNTdHJpbmcocHJvcGVydHlOYW1lKSk7CiAgICAgaWYgKGNvbGxlY3Rpb24tPmxlbmd0aCgpID09
IDEpCiAgICAgICAgIHJldHVybiB0b0pTKGV4ZWMsIHRoaXNPYmosIGNvbGxlY3Rpb24tPmZpcnN0
SXRlbSgpKTsKICAgICByZXR1cm4gdG9KUyhleGVjLCB0aGlzT2JqLCBjb2xsZWN0aW9uKTsKIH0K
IAotYm9vbCBKU0RPTVdpbmRvdzo6Z2V0T3duUHJvcGVydHlTbG90KEpTQ2VsbCogY2VsbCwgRXhl
Y1N0YXRlKiBleGVjLCBjb25zdCBJZGVudGlmaWVyJiBwcm9wZXJ0eU5hbWUsIFByb3BlcnR5U2xv
dCYgc2xvdCkKK2Jvb2wgSlNET01XaW5kb3c6OmdldE93blByb3BlcnR5U2xvdChKU0NlbGwqIGNl
bGwsIEV4ZWNTdGF0ZSogZXhlYywgUHJvcGVydHlOYW1lIHByb3BlcnR5TmFtZSwgUHJvcGVydHlT
bG90JiBzbG90KQogewogICAgIEpTRE9NV2luZG93KiB0aGlzT2JqZWN0ID0ganNDYXN0PEpTRE9N
V2luZG93Kj4oY2VsbCk7CiAgICAgLy8gV2hlbiBhY2Nlc3NpbmcgYSBXaW5kb3cgY3Jvc3MtZG9t
YWluLCBmdW5jdGlvbnMgYXJlIGFsd2F5cyB0aGUgbmF0aXZlIGJ1aWx0LWluIG9uZXMsIGFuZCB0
aGV5CkBAIC0yMjAsNyArMjIwLDcgQEAgYm9vbCBKU0RPTVdpbmRvdzo6Z2V0T3duUHJvcGVydHlT
bG90KEpTQwogICAgIC8vIG5hbWluZyBmcmFtZXMgdGhpbmdzIHRoYXQgY29uZmxpY3Qgd2l0aCB3
aW5kb3cgcHJvcGVydGllcyB0aGF0CiAgICAgLy8gYXJlIGluIE1veiBidXQgbm90IElFLiBTaW5j
ZSB3ZSBoYXZlIHNvbWUgb2YgdGhlc2UsIHdlIGhhdmUgdG8gZG8KICAgICAvLyBpdCB0aGUgTW96
IHdheS4KLSAgICBpZiAodGhpc09iamVjdC0+aW1wbCgpLT5mcmFtZSgpLT50cmVlKCktPnNjb3Bl
ZENoaWxkKGlkZW50aWZpZXJUb0F0b21pY1N0cmluZyhwcm9wZXJ0eU5hbWUpKSkgeworICAgIGlm
ICh0aGlzT2JqZWN0LT5pbXBsKCktPmZyYW1lKCktPnRyZWUoKS0+c2NvcGVkQ2hpbGQocHJvcGVy
dHlOYW1lVG9BdG9taWNTdHJpbmcocHJvcGVydHlOYW1lKSkpIHsKICAgICAgICAgc2xvdC5zZXRD
dXN0b20odGhpc09iamVjdCwgY2hpbGRGcmFtZUdldHRlcik7CiAgICAgICAgIHJldHVybiB0cnVl
OwogICAgIH0KQEAgLTI0Miw5ICsyNDIsOSBAQCBib29sIEpTRE9NV2luZG93OjpnZXRPd25Qcm9w
ZXJ0eVNsb3QoSlNDCiAgICAgLy8gV2UgbmVlZCB0byB0ZXN0IHRoZSBjb3JyZWN0IHByaW9yaXR5
IG9yZGVyLgogCiAgICAgLy8gYWxsb3cgd2luZG93WzFdIG9yIHBhcmVudFsxXSBldGMuICgjNTY5
ODMpCi0gICAgYm9vbCBvazsKLSAgICB1bnNpZ25lZCBpID0gcHJvcGVydHlOYW1lLnRvQXJyYXlJ
bmRleChvayk7Ci0gICAgaWYgKG9rICYmIGkgPCB0aGlzT2JqZWN0LT5pbXBsKCktPmZyYW1lKCkt
PnRyZWUoKS0+c2NvcGVkQ2hpbGRDb3VudCgpKSB7CisgICAgdW5zaWduZWQgaSA9IHByb3BlcnR5
TmFtZS5hc0luZGV4KCk7CisgICAgaWYgKGkgPCB0aGlzT2JqZWN0LT5pbXBsKCktPmZyYW1lKCkt
PnRyZWUoKS0+c2NvcGVkQ2hpbGRDb3VudCgpKSB7CisgICAgICAgIEFTU0VSVChpICE9IFByb3Bl
cnR5TmFtZTo6Tm90QW5JbmRleCk7CiAgICAgICAgIHNsb3Quc2V0Q3VzdG9tSW5kZXgodGhpc09i
amVjdCwgaSwgaW5kZXhHZXR0ZXIpOwogICAgICAgICByZXR1cm4gdHJ1ZTsKICAgICB9CkBAIC0y
NjgsNyArMjY4LDcgQEAgYm9vbCBKU0RPTVdpbmRvdzo6Z2V0T3duUHJvcGVydHlTbG90KEpTQwog
ICAgIHJldHVybiBCYXNlOjpnZXRPd25Qcm9wZXJ0eVNsb3QodGhpc09iamVjdCwgZXhlYywgcHJv
cGVydHlOYW1lLCBzbG90KTsKIH0KIAotYm9vbCBKU0RPTVdpbmRvdzo6Z2V0T3duUHJvcGVydHlE
ZXNjcmlwdG9yKEpTT2JqZWN0KiBvYmplY3QsIEV4ZWNTdGF0ZSogZXhlYywgY29uc3QgSWRlbnRp
ZmllciYgcHJvcGVydHlOYW1lLCBQcm9wZXJ0eURlc2NyaXB0b3ImIGRlc2NyaXB0b3IpCitib29s
IEpTRE9NV2luZG93OjpnZXRPd25Qcm9wZXJ0eURlc2NyaXB0b3IoSlNPYmplY3QqIG9iamVjdCwg
RXhlY1N0YXRlKiBleGVjLCBQcm9wZXJ0eU5hbWUgcHJvcGVydHlOYW1lLCBQcm9wZXJ0eURlc2Ny
aXB0b3ImIGRlc2NyaXB0b3IpCiB7CiAgICAgSlNET01XaW5kb3cqIHRoaXNPYmplY3QgPSBqc0Nh
c3Q8SlNET01XaW5kb3cqPihvYmplY3QpOwogICAgIC8vIE5ldmVyIGFsbG93IGNyb3NzLWRvbWFp
biBnZXRPd25Qcm9wZXJ0eURlc2NyaXB0b3IKQEAgLTMxMCwxNiArMzEwLDE2IEBAIGJvb2wgSlNE
T01XaW5kb3c6OmdldE93blByb3BlcnR5RGVzY3JpcHQKICAgICAvLyBuYW1pbmcgZnJhbWVzIHRo
aW5ncyB0aGF0IGNvbmZsaWN0IHdpdGggd2luZG93IHByb3BlcnRpZXMgdGhhdAogICAgIC8vIGFy
ZSBpbiBNb3ogYnV0IG5vdCBJRS4gU2luY2Ugd2UgaGF2ZSBzb21lIG9mIHRoZXNlLCB3ZSBoYXZl
IHRvIGRvCiAgICAgLy8gaXQgdGhlIE1veiB3YXkuCi0gICAgaWYgKHRoaXNPYmplY3QtPmltcGwo
KS0+ZnJhbWUoKS0+dHJlZSgpLT5zY29wZWRDaGlsZChpZGVudGlmaWVyVG9BdG9taWNTdHJpbmco
cHJvcGVydHlOYW1lKSkpIHsKKyAgICBpZiAodGhpc09iamVjdC0+aW1wbCgpLT5mcmFtZSgpLT50
cmVlKCktPnNjb3BlZENoaWxkKHByb3BlcnR5TmFtZVRvQXRvbWljU3RyaW5nKHByb3BlcnR5TmFt
ZSkpKSB7CiAgICAgICAgIFByb3BlcnR5U2xvdCBzbG90OwogICAgICAgICBzbG90LnNldEN1c3Rv
bSh0aGlzT2JqZWN0LCBjaGlsZEZyYW1lR2V0dGVyKTsKICAgICAgICAgZGVzY3JpcHRvci5zZXRE
ZXNjcmlwdG9yKHNsb3QuZ2V0VmFsdWUoZXhlYywgcHJvcGVydHlOYW1lKSwgUmVhZE9ubHkgfCBE
b250RGVsZXRlIHwgRG9udEVudW0pOwogICAgICAgICByZXR1cm4gdHJ1ZTsKICAgICB9CiAgICAg
Ci0gICAgYm9vbCBvazsKLSAgICB1bnNpZ25lZCBpID0gcHJvcGVydHlOYW1lLnRvQXJyYXlJbmRl
eChvayk7Ci0gICAgaWYgKG9rICYmIGkgPCB0aGlzT2JqZWN0LT5pbXBsKCktPmZyYW1lKCktPnRy
ZWUoKS0+c2NvcGVkQ2hpbGRDb3VudCgpKSB7CisgICAgdW5zaWduZWQgaSA9IHByb3BlcnR5TmFt
ZS5hc0luZGV4KCk7CisgICAgaWYgKGkgPCB0aGlzT2JqZWN0LT5pbXBsKCktPmZyYW1lKCktPnRy
ZWUoKS0+c2NvcGVkQ2hpbGRDb3VudCgpKSB7CisgICAgICAgIEFTU0VSVChpICE9IFByb3BlcnR5
TmFtZTo6Tm90QW5JbmRleCk7CiAgICAgICAgIFByb3BlcnR5U2xvdCBzbG90OwogICAgICAgICBz
bG90LnNldEN1c3RvbUluZGV4KHRoaXNPYmplY3QsIGksIGluZGV4R2V0dGVyKTsKICAgICAgICAg
ZGVzY3JpcHRvci5zZXREZXNjcmlwdG9yKHNsb3QuZ2V0VmFsdWUoZXhlYywgcHJvcGVydHlOYW1l
KSwgUmVhZE9ubHkgfCBEb250RGVsZXRlIHwgRG9udEVudW0pOwpAQCAtMzQxLDcgKzM0MSw3IEBA
IGJvb2wgSlNET01XaW5kb3c6OmdldE93blByb3BlcnR5RGVzY3JpcHQKICAgICByZXR1cm4gQmFz
ZTo6Z2V0T3duUHJvcGVydHlEZXNjcmlwdG9yKHRoaXNPYmplY3QsIGV4ZWMsIHByb3BlcnR5TmFt
ZSwgZGVzY3JpcHRvcik7CiB9CiAKLXZvaWQgSlNET01XaW5kb3c6OnB1dChKU0NlbGwqIGNlbGws
IEV4ZWNTdGF0ZSogZXhlYywgY29uc3QgSWRlbnRpZmllciYgcHJvcGVydHlOYW1lLCBKU1ZhbHVl
IHZhbHVlLCBQdXRQcm9wZXJ0eVNsb3QmIHNsb3QpCit2b2lkIEpTRE9NV2luZG93OjpwdXQoSlND
ZWxsKiBjZWxsLCBFeGVjU3RhdGUqIGV4ZWMsIFByb3BlcnR5TmFtZSBwcm9wZXJ0eU5hbWUsIEpT
VmFsdWUgdmFsdWUsIFB1dFByb3BlcnR5U2xvdCYgc2xvdCkKIHsKICAgICBKU0RPTVdpbmRvdyog
dGhpc09iamVjdCA9IGpzQ2FzdDxKU0RPTVdpbmRvdyo+KGNlbGwpOwogICAgIGlmICghdGhpc09i
amVjdC0+aW1wbCgpLT5mcmFtZSgpKQpAQCAtMzYxLDcgKzM2MSw3IEBAIHZvaWQgSlNET01XaW5k
b3c6OnB1dChKU0NlbGwqIGNlbGwsIEV4ZWMKICAgICAgICAgQmFzZTo6cHV0KHRoaXNPYmplY3Qs
IGV4ZWMsIHByb3BlcnR5TmFtZSwgdmFsdWUsIHNsb3QpOwogfQogCi1ib29sIEpTRE9NV2luZG93
OjpkZWxldGVQcm9wZXJ0eShKU0NlbGwqIGNlbGwsIEV4ZWNTdGF0ZSogZXhlYywgY29uc3QgSWRl
bnRpZmllciYgcHJvcGVydHlOYW1lKQorYm9vbCBKU0RPTVdpbmRvdzo6ZGVsZXRlUHJvcGVydHko
SlNDZWxsKiBjZWxsLCBFeGVjU3RhdGUqIGV4ZWMsIFByb3BlcnR5TmFtZSBwcm9wZXJ0eU5hbWUp
CiB7CiAgICAgSlNET01XaW5kb3cqIHRoaXNPYmplY3QgPSBqc0Nhc3Q8SlNET01XaW5kb3cqPihj
ZWxsKTsKICAgICAvLyBPbmx5IGFsbG93IGRlbGV0aW5nIHByb3BlcnRpZXMgYnkgZnJhbWVzIGlu
IHRoZSBzYW1lIG9yaWdpbi4KQEAgLTM4OCw3ICszODgsNyBAQCB2b2lkIEpTRE9NV2luZG93Ojpn
ZXRPd25Qcm9wZXJ0eU5hbWVzKEpTCiAgICAgQmFzZTo6Z2V0T3duUHJvcGVydHlOYW1lcyh0aGlz
T2JqZWN0LCBleGVjLCBwcm9wZXJ0eU5hbWVzLCBtb2RlKTsKIH0KIAotYm9vbCBKU0RPTVdpbmRv
dzo6ZGVmaW5lT3duUHJvcGVydHkoSlNDOjpKU09iamVjdCogb2JqZWN0LCBKU0M6OkV4ZWNTdGF0
ZSogZXhlYywgY29uc3QgSlNDOjpJZGVudGlmaWVyJiBwcm9wZXJ0eU5hbWUsIEpTQzo6UHJvcGVy
dHlEZXNjcmlwdG9yJiBkZXNjcmlwdG9yLCBib29sIHNob3VsZFRocm93KQorYm9vbCBKU0RPTVdp
bmRvdzo6ZGVmaW5lT3duUHJvcGVydHkoSlNDOjpKU09iamVjdCogb2JqZWN0LCBKU0M6OkV4ZWNT
dGF0ZSogZXhlYywgSlNDOjpQcm9wZXJ0eU5hbWUgcHJvcGVydHlOYW1lLCBKU0M6OlByb3BlcnR5
RGVzY3JpcHRvciYgZGVzY3JpcHRvciwgYm9vbCBzaG91bGRUaHJvdykKIHsKICAgICBKU0RPTVdp
bmRvdyogdGhpc09iamVjdCA9IGpzQ2FzdDxKU0RPTVdpbmRvdyo+KG9iamVjdCk7CiAgICAgLy8g
T25seSBhbGxvdyBkZWZpbmluZyBwcm9wZXJ0aWVzIGluIHRoaXMgd2F5IGJ5IGZyYW1lcyBpbiB0
aGUgc2FtZSBvcmlnaW4sIGFzIGl0IGFsbG93cyBzZXR0ZXJzIHRvIGJlIGludHJvZHVjZWQuCkBA
IC0zOTYsNyArMzk2LDcgQEAgYm9vbCBKU0RPTVdpbmRvdzo6ZGVmaW5lT3duUHJvcGVydHkoSlND
OgogICAgICAgICByZXR1cm4gZmFsc2U7CiAKICAgICAvLyBEb24ndCBhbGxvdyBzaGFkb3dpbmcg
bG9jYXRpb24gdXNpbmcgYWNjZXNzb3IgcHJvcGVydGllcy4KLSAgICBpZiAoZGVzY3JpcHRvci5p
c0FjY2Vzc29yRGVzY3JpcHRvcigpICYmIHByb3BlcnR5TmFtZSA9PSAibG9jYXRpb24iKQorICAg
IGlmIChkZXNjcmlwdG9yLmlzQWNjZXNzb3JEZXNjcmlwdG9yKCkgJiYgcHJvcGVydHlOYW1lID09
IElkZW50aWZpZXIoZXhlYywgImxvY2F0aW9uIikpCiAgICAgICAgIHJldHVybiBmYWxzZTsKIAog
ICAgIHJldHVybiBCYXNlOjpkZWZpbmVPd25Qcm9wZXJ0eSh0aGlzT2JqZWN0LCBleGVjLCBwcm9w
ZXJ0eU5hbWUsIGRlc2NyaXB0b3IsIHNob3VsZFRocm93KTsKSW5kZXg6IFNvdXJjZS9XZWJDb3Jl
L2JpbmRpbmdzL2pzL0pTRE9NV2luZG93U2hlbGwuY3BwCj09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9X
ZWJDb3JlL2JpbmRpbmdzL2pzL0pTRE9NV2luZG93U2hlbGwuY3BwCShyZXZpc2lvbiAxMTY2Njcp
CisrKyBTb3VyY2UvV2ViQ29yZS9iaW5kaW5ncy9qcy9KU0RPTVdpbmRvd1NoZWxsLmNwcAkod29y
a2luZyBjb3B5KQpAQCAtOTEsMzcgKzkxLDM3IEBAIFVTdHJpbmcgSlNET01XaW5kb3dTaGVsbDo6
Y2xhc3NOYW1lKGNvbnMKICAgICByZXR1cm4gdGhpc09iamVjdC0+d2luZG93KCktPm1ldGhvZFRh
YmxlKCktPmNsYXNzTmFtZSh0aGlzT2JqZWN0LT53aW5kb3coKSk7CiB9CiAKLWJvb2wgSlNET01X
aW5kb3dTaGVsbDo6Z2V0T3duUHJvcGVydHlTbG90KEpTQ2VsbCogY2VsbCwgRXhlY1N0YXRlKiBl
eGVjLCBjb25zdCBJZGVudGlmaWVyJiBwcm9wZXJ0eU5hbWUsIFByb3BlcnR5U2xvdCYgc2xvdCkK
K2Jvb2wgSlNET01XaW5kb3dTaGVsbDo6Z2V0T3duUHJvcGVydHlTbG90KEpTQ2VsbCogY2VsbCwg
RXhlY1N0YXRlKiBleGVjLCBQcm9wZXJ0eU5hbWUgcHJvcGVydHlOYW1lLCBQcm9wZXJ0eVNsb3Qm
IHNsb3QpCiB7CiAgICAgSlNET01XaW5kb3dTaGVsbCogdGhpc09iamVjdCA9IGpzQ2FzdDxKU0RP
TVdpbmRvd1NoZWxsKj4oY2VsbCk7CiAgICAgcmV0dXJuIHRoaXNPYmplY3QtPndpbmRvdygpLT5t
ZXRob2RUYWJsZSgpLT5nZXRPd25Qcm9wZXJ0eVNsb3QodGhpc09iamVjdC0+d2luZG93KCksIGV4
ZWMsIHByb3BlcnR5TmFtZSwgc2xvdCk7CiB9CiAKLWJvb2wgSlNET01XaW5kb3dTaGVsbDo6Z2V0
T3duUHJvcGVydHlEZXNjcmlwdG9yKEpTT2JqZWN0KiBvYmplY3QsIEV4ZWNTdGF0ZSogZXhlYywg
Y29uc3QgSWRlbnRpZmllciYgcHJvcGVydHlOYW1lLCBQcm9wZXJ0eURlc2NyaXB0b3ImIGRlc2Ny
aXB0b3IpCitib29sIEpTRE9NV2luZG93U2hlbGw6OmdldE93blByb3BlcnR5RGVzY3JpcHRvcihK
U09iamVjdCogb2JqZWN0LCBFeGVjU3RhdGUqIGV4ZWMsIFByb3BlcnR5TmFtZSBwcm9wZXJ0eU5h
bWUsIFByb3BlcnR5RGVzY3JpcHRvciYgZGVzY3JpcHRvcikKIHsKICAgICBKU0RPTVdpbmRvd1No
ZWxsKiB0aGlzT2JqZWN0ID0ganNDYXN0PEpTRE9NV2luZG93U2hlbGwqPihvYmplY3QpOwogICAg
IHJldHVybiB0aGlzT2JqZWN0LT53aW5kb3coKS0+bWV0aG9kVGFibGUoKS0+Z2V0T3duUHJvcGVy
dHlEZXNjcmlwdG9yKHRoaXNPYmplY3QtPndpbmRvdygpLCBleGVjLCBwcm9wZXJ0eU5hbWUsIGRl
c2NyaXB0b3IpOwogfQogCi12b2lkIEpTRE9NV2luZG93U2hlbGw6OnB1dChKU0NlbGwqIGNlbGws
IEV4ZWNTdGF0ZSogZXhlYywgY29uc3QgSWRlbnRpZmllciYgcHJvcGVydHlOYW1lLCBKU1ZhbHVl
IHZhbHVlLCBQdXRQcm9wZXJ0eVNsb3QmIHNsb3QpCit2b2lkIEpTRE9NV2luZG93U2hlbGw6OnB1
dChKU0NlbGwqIGNlbGwsIEV4ZWNTdGF0ZSogZXhlYywgUHJvcGVydHlOYW1lIHByb3BlcnR5TmFt
ZSwgSlNWYWx1ZSB2YWx1ZSwgUHV0UHJvcGVydHlTbG90JiBzbG90KQogewogICAgIEpTRE9NV2lu
ZG93U2hlbGwqIHRoaXNPYmplY3QgPSBqc0Nhc3Q8SlNET01XaW5kb3dTaGVsbCo+KGNlbGwpOwog
ICAgIHRoaXNPYmplY3QtPndpbmRvdygpLT5tZXRob2RUYWJsZSgpLT5wdXQodGhpc09iamVjdC0+
d2luZG93KCksIGV4ZWMsIHByb3BlcnR5TmFtZSwgdmFsdWUsIHNsb3QpOwogfQogCi12b2lkIEpT
RE9NV2luZG93U2hlbGw6OnB1dERpcmVjdFZpcnR1YWwoSlNPYmplY3QqIG9iamVjdCwgRXhlY1N0
YXRlKiBleGVjLCBjb25zdCBJZGVudGlmaWVyJiBwcm9wZXJ0eU5hbWUsIEpTVmFsdWUgdmFsdWUs
IHVuc2lnbmVkIGF0dHJpYnV0ZXMpCit2b2lkIEpTRE9NV2luZG93U2hlbGw6OnB1dERpcmVjdFZp
cnR1YWwoSlNPYmplY3QqIG9iamVjdCwgRXhlY1N0YXRlKiBleGVjLCBQcm9wZXJ0eU5hbWUgcHJv
cGVydHlOYW1lLCBKU1ZhbHVlIHZhbHVlLCB1bnNpZ25lZCBhdHRyaWJ1dGVzKQogewogICAgIEpT
RE9NV2luZG93U2hlbGwqIHRoaXNPYmplY3QgPSBqc0Nhc3Q8SlNET01XaW5kb3dTaGVsbCo+KG9i
amVjdCk7CiAgICAgdGhpc09iamVjdC0+d2luZG93KCktPnB1dERpcmVjdFZpcnR1YWwodGhpc09i
amVjdC0+d2luZG93KCksIGV4ZWMsIHByb3BlcnR5TmFtZSwgdmFsdWUsIGF0dHJpYnV0ZXMpOwog
fQogCi1ib29sIEpTRE9NV2luZG93U2hlbGw6OmRlZmluZU93blByb3BlcnR5KEpTQzo6SlNPYmpl
Y3QqIG9iamVjdCwgSlNDOjpFeGVjU3RhdGUqIGV4ZWMsIGNvbnN0IEpTQzo6SWRlbnRpZmllciYg
cHJvcGVydHlOYW1lLCBKU0M6OlByb3BlcnR5RGVzY3JpcHRvciYgZGVzY3JpcHRvciwgYm9vbCBz
aG91bGRUaHJvdykKK2Jvb2wgSlNET01XaW5kb3dTaGVsbDo6ZGVmaW5lT3duUHJvcGVydHkoSlND
OjpKU09iamVjdCogb2JqZWN0LCBKU0M6OkV4ZWNTdGF0ZSogZXhlYywgSlNDOjpQcm9wZXJ0eU5h
bWUgcHJvcGVydHlOYW1lLCBKU0M6OlByb3BlcnR5RGVzY3JpcHRvciYgZGVzY3JpcHRvciwgYm9v
bCBzaG91bGRUaHJvdykKIHsKICAgICBKU0RPTVdpbmRvd1NoZWxsKiB0aGlzT2JqZWN0ID0ganND
YXN0PEpTRE9NV2luZG93U2hlbGwqPihvYmplY3QpOwogICAgIHJldHVybiB0aGlzT2JqZWN0LT53
aW5kb3coKS0+bWV0aG9kVGFibGUoKS0+ZGVmaW5lT3duUHJvcGVydHkodGhpc09iamVjdC0+d2lu
ZG93KCksIGV4ZWMsIHByb3BlcnR5TmFtZSwgZGVzY3JpcHRvciwgc2hvdWxkVGhyb3cpOwogfQog
Ci1ib29sIEpTRE9NV2luZG93U2hlbGw6OmRlbGV0ZVByb3BlcnR5KEpTQ2VsbCogY2VsbCwgRXhl
Y1N0YXRlKiBleGVjLCBjb25zdCBJZGVudGlmaWVyJiBwcm9wZXJ0eU5hbWUpCitib29sIEpTRE9N
V2luZG93U2hlbGw6OmRlbGV0ZVByb3BlcnR5KEpTQ2VsbCogY2VsbCwgRXhlY1N0YXRlKiBleGVj
LCBQcm9wZXJ0eU5hbWUgcHJvcGVydHlOYW1lKQogewogICAgIEpTRE9NV2luZG93U2hlbGwqIHRo
aXNPYmplY3QgPSBqc0Nhc3Q8SlNET01XaW5kb3dTaGVsbCo+KGNlbGwpOwogICAgIHJldHVybiB0
aGlzT2JqZWN0LT53aW5kb3coKS0+bWV0aG9kVGFibGUoKS0+ZGVsZXRlUHJvcGVydHkodGhpc09i
amVjdC0+d2luZG93KCksIGV4ZWMsIHByb3BlcnR5TmFtZSk7CkluZGV4OiBTb3VyY2UvV2ViQ29y
ZS9iaW5kaW5ncy9qcy9KU0RPTVdpbmRvd1NoZWxsLmgKPT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL1dl
YkNvcmUvYmluZGluZ3MvanMvSlNET01XaW5kb3dTaGVsbC5oCShyZXZpc2lvbiAxMTY2NjcpCisr
KyBTb3VyY2UvV2ViQ29yZS9iaW5kaW5ncy9qcy9KU0RPTVdpbmRvd1NoZWxsLmgJKHdvcmtpbmcg
Y29weSkKQEAgLTc4LDE0ICs3OCwxNCBAQCBuYW1lc3BhY2UgV2ViQ29yZSB7CiAgICAgICAgIHN0
YXRpYyBjb25zdCB1bnNpZ25lZCBTdHJ1Y3R1cmVGbGFncyA9IEpTQzo6T3ZlcnJpZGVzR2V0T3du
UHJvcGVydHlTbG90IHwgSlNDOjpPdmVycmlkZXNHZXRQcm9wZXJ0eU5hbWVzIHwgQmFzZTo6U3Ry
dWN0dXJlRmxhZ3M7CiAKICAgICAgICAgc3RhdGljIEpTQzo6VVN0cmluZyBjbGFzc05hbWUoY29u
c3QgSlNDOjpKU09iamVjdCopOwotICAgICAgICBzdGF0aWMgYm9vbCBnZXRPd25Qcm9wZXJ0eVNs
b3QoSlNDOjpKU0NlbGwqLCBKU0M6OkV4ZWNTdGF0ZSosIGNvbnN0IEpTQzo6SWRlbnRpZmllciYg
cHJvcGVydHlOYW1lLCBKU0M6OlByb3BlcnR5U2xvdCYpOwotICAgICAgICBzdGF0aWMgYm9vbCBn
ZXRPd25Qcm9wZXJ0eURlc2NyaXB0b3IoSlNDOjpKU09iamVjdCosIEpTQzo6RXhlY1N0YXRlKiwg
Y29uc3QgSlNDOjpJZGVudGlmaWVyJiBwcm9wZXJ0eU5hbWUsIEpTQzo6UHJvcGVydHlEZXNjcmlw
dG9yJik7Ci0gICAgICAgIHN0YXRpYyB2b2lkIHB1dChKU0M6OkpTQ2VsbCosIEpTQzo6RXhlY1N0
YXRlKiwgY29uc3QgSlNDOjpJZGVudGlmaWVyJiBwcm9wZXJ0eU5hbWUsIEpTQzo6SlNWYWx1ZSwg
SlNDOjpQdXRQcm9wZXJ0eVNsb3QmKTsKLSAgICAgICAgc3RhdGljIHZvaWQgcHV0RGlyZWN0Vmly
dHVhbChKU0M6OkpTT2JqZWN0KiwgSlNDOjpFeGVjU3RhdGUqLCBjb25zdCBKU0M6OklkZW50aWZp
ZXImIHByb3BlcnR5TmFtZSwgSlNDOjpKU1ZhbHVlLCB1bnNpZ25lZCBhdHRyaWJ1dGVzKTsKLSAg
ICAgICAgc3RhdGljIGJvb2wgZGVsZXRlUHJvcGVydHkoSlNDOjpKU0NlbGwqLCBKU0M6OkV4ZWNT
dGF0ZSosIGNvbnN0IEpTQzo6SWRlbnRpZmllciYgcHJvcGVydHlOYW1lKTsKKyAgICAgICAgc3Rh
dGljIGJvb2wgZ2V0T3duUHJvcGVydHlTbG90KEpTQzo6SlNDZWxsKiwgSlNDOjpFeGVjU3RhdGUq
LCBKU0M6OlByb3BlcnR5TmFtZSwgSlNDOjpQcm9wZXJ0eVNsb3QmKTsKKyAgICAgICAgc3RhdGlj
IGJvb2wgZ2V0T3duUHJvcGVydHlEZXNjcmlwdG9yKEpTQzo6SlNPYmplY3QqLCBKU0M6OkV4ZWNT
dGF0ZSosIEpTQzo6UHJvcGVydHlOYW1lLCBKU0M6OlByb3BlcnR5RGVzY3JpcHRvciYpOworICAg
ICAgICBzdGF0aWMgdm9pZCBwdXQoSlNDOjpKU0NlbGwqLCBKU0M6OkV4ZWNTdGF0ZSosIEpTQzo6
UHJvcGVydHlOYW1lLCBKU0M6OkpTVmFsdWUsIEpTQzo6UHV0UHJvcGVydHlTbG90Jik7CisgICAg
ICAgIHN0YXRpYyB2b2lkIHB1dERpcmVjdFZpcnR1YWwoSlNDOjpKU09iamVjdCosIEpTQzo6RXhl
Y1N0YXRlKiwgSlNDOjpQcm9wZXJ0eU5hbWUsIEpTQzo6SlNWYWx1ZSwgdW5zaWduZWQgYXR0cmli
dXRlcyk7CisgICAgICAgIHN0YXRpYyBib29sIGRlbGV0ZVByb3BlcnR5KEpTQzo6SlNDZWxsKiwg
SlNDOjpFeGVjU3RhdGUqLCBKU0M6OlByb3BlcnR5TmFtZSk7CiAgICAgICAgIHN0YXRpYyB2b2lk
IGdldE93blByb3BlcnR5TmFtZXMoSlNDOjpKU09iamVjdCosIEpTQzo6RXhlY1N0YXRlKiwgSlND
OjpQcm9wZXJ0eU5hbWVBcnJheSYsIEpTQzo6RW51bWVyYXRpb25Nb2RlKTsKICAgICAgICAgc3Rh
dGljIHZvaWQgZ2V0UHJvcGVydHlOYW1lcyhKU0M6OkpTT2JqZWN0KiwgSlNDOjpFeGVjU3RhdGUq
LCBKU0M6OlByb3BlcnR5TmFtZUFycmF5JiwgSlNDOjpFbnVtZXJhdGlvbk1vZGUpOwotICAgICAg
ICBzdGF0aWMgYm9vbCBkZWZpbmVPd25Qcm9wZXJ0eShKU0M6OkpTT2JqZWN0KiwgSlNDOjpFeGVj
U3RhdGUqLCBjb25zdCBKU0M6OklkZW50aWZpZXImIHByb3BlcnR5TmFtZSwgSlNDOjpQcm9wZXJ0
eURlc2NyaXB0b3ImLCBib29sIHNob3VsZFRocm93KTsKKyAgICAgICAgc3RhdGljIGJvb2wgZGVm
aW5lT3duUHJvcGVydHkoSlNDOjpKU09iamVjdCosIEpTQzo6RXhlY1N0YXRlKiwgSlNDOjpQcm9w
ZXJ0eU5hbWUsIEpTQzo6UHJvcGVydHlEZXNjcmlwdG9yJiwgYm9vbCBzaG91bGRUaHJvdyk7CiAK
ICAgICAgICAgUmVmUHRyPERPTVdyYXBwZXJXb3JsZD4gbV93b3JsZDsKICAgICB9OwpJbmRleDog
U291cmNlL1dlYkNvcmUvYmluZGluZ3MvanMvSlNIVE1MQWxsQ29sbGVjdGlvbkN1c3RvbS5jcHAK
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PQotLS0gU291cmNlL1dlYkNvcmUvYmluZGluZ3MvanMvSlNIVE1MQWxsQ29sbGVj
dGlvbkN1c3RvbS5jcHAJKHJldmlzaW9uIDExNjY2NykKKysrIFNvdXJjZS9XZWJDb3JlL2JpbmRp
bmdzL2pzL0pTSFRNTEFsbENvbGxlY3Rpb25DdXN0b20uY3BwCSh3b3JraW5nIGNvcHkpCkBAIC00
MSwxMCArNDEsMTAgQEAgdXNpbmcgbmFtZXNwYWNlIEpTQzsKIAogbmFtZXNwYWNlIFdlYkNvcmUg
ewogCi1zdGF0aWMgSlNWYWx1ZSBnZXROYW1lZEl0ZW1zKEV4ZWNTdGF0ZSogZXhlYywgSlNIVE1M
QWxsQ29sbGVjdGlvbiogY29sbGVjdGlvbiwgY29uc3QgSWRlbnRpZmllciYgcHJvcGVydHlOYW1l
KQorc3RhdGljIEpTVmFsdWUgZ2V0TmFtZWRJdGVtcyhFeGVjU3RhdGUqIGV4ZWMsIEpTSFRNTEFs
bENvbGxlY3Rpb24qIGNvbGxlY3Rpb24sIFByb3BlcnR5TmFtZSBwcm9wZXJ0eU5hbWUpCiB7CiAg
ICAgVmVjdG9yPFJlZlB0cjxOb2RlPiA+IG5hbWVkSXRlbXM7Ci0gICAgY29sbGVjdGlvbi0+aW1w
bCgpLT5uYW1lZEl0ZW1zKGlkZW50aWZpZXJUb0F0b21pY1N0cmluZyhwcm9wZXJ0eU5hbWUpLCBu
YW1lZEl0ZW1zKTsKKyAgICBjb2xsZWN0aW9uLT5pbXBsKCktPm5hbWVkSXRlbXMocHJvcGVydHlO
YW1lVG9BdG9taWNTdHJpbmcocHJvcGVydHlOYW1lKSwgbmFtZWRJdGVtcyk7CiAKICAgICBpZiAo
bmFtZWRJdGVtcy5pc0VtcHR5KCkpCiAgICAgICAgIHJldHVybiBqc1VuZGVmaW5lZCgpOwpAQCAt
NzEsMTAgKzcxLDkgQEAgc3RhdGljIEVuY29kZWRKU1ZhbHVlIEpTQ19IT1NUX0NBTEwgY2FsbAog
CiAgICAgaWYgKGV4ZWMtPmFyZ3VtZW50Q291bnQoKSA9PSAxKSB7CiAgICAgICAgIC8vIFN1cHBv
cnQgZm9yIGRvY3VtZW50LmFsbCg8aW5kZXg+KSBldGMuCi0gICAgICAgIGJvb2wgb2s7CiAgICAg
ICAgIFVTdHJpbmcgc3RyaW5nID0gZXhlYy0+YXJndW1lbnQoMCkudG9TdHJpbmcoZXhlYyktPnZh
bHVlKGV4ZWMpOwotICAgICAgICB1bnNpZ25lZCBpbmRleCA9IElkZW50aWZpZXI6OnRvVUludDMy
KHN0cmluZywgb2spOwotICAgICAgICBpZiAob2spCisgICAgICAgIHVuc2lnbmVkIGluZGV4ID0g
dG9VSW50MzJGcm9tU3RyaW5nSW1wbChzdHJpbmcuaW1wbCgpKTsKKyAgICAgICAgaWYgKGluZGV4
ICE9IFByb3BlcnR5TmFtZTo6Tm90QW5JbmRleCkKICAgICAgICAgICAgIHJldHVybiBKU1ZhbHVl
OjplbmNvZGUodG9KUyhleGVjLCBqc0NvbGxlY3Rpb24tPmdsb2JhbE9iamVjdCgpLCBjb2xsZWN0
aW9uLT5pdGVtKGluZGV4KSkpOwogCiAgICAgICAgIC8vIFN1cHBvcnQgZm9yIGRvY3VtZW50Lmlt
YWdlcygnPG5hbWU+JykgZXRjLgpAQCAtODIsMTAgKzgxLDkgQEAgc3RhdGljIEVuY29kZWRKU1Zh
bHVlIEpTQ19IT1NUX0NBTEwgY2FsbAogICAgIH0KIAogICAgIC8vIFRoZSBzZWNvbmQgYXJnLCBp
ZiBzZXQsIGlzIHRoZSBpbmRleCBvZiB0aGUgaXRlbSB3ZSB3YW50Ci0gICAgYm9vbCBvazsKICAg
ICBVU3RyaW5nIHN0cmluZyA9IGV4ZWMtPmFyZ3VtZW50KDApLnRvU3RyaW5nKGV4ZWMpLT52YWx1
ZShleGVjKTsKLSAgICB1bnNpZ25lZCBpbmRleCA9IElkZW50aWZpZXI6OnRvVUludDMyKGV4ZWMt
PmFyZ3VtZW50KDEpLnRvU3RyaW5nKGV4ZWMpLT52YWx1ZShleGVjKSwgb2spOwotICAgIGlmIChv
aykgeworICAgIHVuc2lnbmVkIGluZGV4ID0gdG9VSW50MzJGcm9tU3RyaW5nSW1wbChleGVjLT5h
cmd1bWVudCgxKS50b1N0cmluZyhleGVjKS0+dmFsdWUoZXhlYykuaW1wbCgpKTsKKyAgICBpZiAo
aW5kZXggIT0gUHJvcGVydHlOYW1lOjpOb3RBbkluZGV4KSB7CiAgICAgICAgIGlmIChOb2RlKiBu
b2RlID0gY29sbGVjdGlvbi0+bmFtZWRJdGVtV2l0aEluZGV4KHVzdHJpbmdUb0F0b21pY1N0cmlu
ZyhzdHJpbmcpLCBpbmRleCkpCiAgICAgICAgICAgICByZXR1cm4gSlNWYWx1ZTo6ZW5jb2RlKHRv
SlMoZXhlYywganNDb2xsZWN0aW9uLT5nbG9iYWxPYmplY3QoKSwgbm9kZSkpOwogICAgIH0KQEAg
LTk5LDEyICs5NywxMiBAQCBDYWxsVHlwZSBKU0hUTUxBbGxDb2xsZWN0aW9uOjpnZXRDYWxsRGF0
CiAgICAgcmV0dXJuIENhbGxUeXBlSG9zdDsKIH0KIAotYm9vbCBKU0hUTUxBbGxDb2xsZWN0aW9u
OjpjYW5HZXRJdGVtc0Zvck5hbWUoRXhlY1N0YXRlKiwgSFRNTEFsbENvbGxlY3Rpb24qIGNvbGxl
Y3Rpb24sIGNvbnN0IElkZW50aWZpZXImIHByb3BlcnR5TmFtZSkKK2Jvb2wgSlNIVE1MQWxsQ29s
bGVjdGlvbjo6Y2FuR2V0SXRlbXNGb3JOYW1lKEV4ZWNTdGF0ZSosIEhUTUxBbGxDb2xsZWN0aW9u
KiBjb2xsZWN0aW9uLCBQcm9wZXJ0eU5hbWUgcHJvcGVydHlOYW1lKQogewotICAgIHJldHVybiBj
b2xsZWN0aW9uLT5oYXNOYW1lZEl0ZW0oaWRlbnRpZmllclRvQXRvbWljU3RyaW5nKHByb3BlcnR5
TmFtZSkpOworICAgIHJldHVybiBjb2xsZWN0aW9uLT5oYXNOYW1lZEl0ZW0ocHJvcGVydHlOYW1l
VG9BdG9taWNTdHJpbmcocHJvcGVydHlOYW1lKSk7CiB9CiAKLUpTVmFsdWUgSlNIVE1MQWxsQ29s
bGVjdGlvbjo6bmFtZUdldHRlcihFeGVjU3RhdGUqIGV4ZWMsIEpTVmFsdWUgc2xvdEJhc2UsIGNv
bnN0IElkZW50aWZpZXImIHByb3BlcnR5TmFtZSkKK0pTVmFsdWUgSlNIVE1MQWxsQ29sbGVjdGlv
bjo6bmFtZUdldHRlcihFeGVjU3RhdGUqIGV4ZWMsIEpTVmFsdWUgc2xvdEJhc2UsIFByb3BlcnR5
TmFtZSBwcm9wZXJ0eU5hbWUpCiB7CiAgICAgSlNIVE1MQWxsQ29sbGVjdGlvbiogdGhpc09iaiA9
IGpzQ2FzdDxKU0hUTUxBbGxDb2xsZWN0aW9uKj4oYXNPYmplY3Qoc2xvdEJhc2UpKTsKICAgICBy
ZXR1cm4gZ2V0TmFtZWRJdGVtcyhleGVjLCB0aGlzT2JqLCBwcm9wZXJ0eU5hbWUpOwpAQCAtMTEy
LDkgKzExMCw4IEBAIEpTVmFsdWUgSlNIVE1MQWxsQ29sbGVjdGlvbjo6bmFtZUdldHRlcigKIAog
SlNWYWx1ZSBKU0hUTUxBbGxDb2xsZWN0aW9uOjppdGVtKEV4ZWNTdGF0ZSogZXhlYykKIHsKLSAg
ICBib29sIG9rOwotICAgIHVpbnQzMl90IGluZGV4ID0gSWRlbnRpZmllcjo6dG9VSW50MzIoZXhl
Yy0+YXJndW1lbnQoMCkudG9TdHJpbmcoZXhlYyktPnZhbHVlKGV4ZWMpLCBvayk7Ci0gICAgaWYg
KG9rKQorICAgIHVpbnQzMl90IGluZGV4ID0gdG9VSW50MzJGcm9tU3RyaW5nSW1wbChleGVjLT5h
cmd1bWVudCgwKS50b1N0cmluZyhleGVjKS0+dmFsdWUoZXhlYykuaW1wbCgpKTsKKyAgICBpZiAo
aW5kZXggIT0gUHJvcGVydHlOYW1lOjpOb3RBbkluZGV4KQogICAgICAgICByZXR1cm4gdG9KUyhl
eGVjLCBnbG9iYWxPYmplY3QoKSwgaW1wbCgpLT5pdGVtKGluZGV4KSk7CiAgICAgcmV0dXJuIGdl
dE5hbWVkSXRlbXMoZXhlYywgdGhpcywgSWRlbnRpZmllcihleGVjLCBleGVjLT5hcmd1bWVudCgw
KS50b1N0cmluZyhleGVjKS0+dmFsdWUoZXhlYykpKTsKIH0KSW5kZXg6IFNvdXJjZS9XZWJDb3Jl
L2JpbmRpbmdzL2pzL0pTSFRNTEFwcGxldEVsZW1lbnRDdXN0b20uY3BwCj09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0t
IFNvdXJjZS9XZWJDb3JlL2JpbmRpbmdzL2pzL0pTSFRNTEFwcGxldEVsZW1lbnRDdXN0b20uY3Bw
CShyZXZpc2lvbiAxMTY2NjcpCisrKyBTb3VyY2UvV2ViQ29yZS9iaW5kaW5ncy9qcy9KU0hUTUxB
cHBsZXRFbGVtZW50Q3VzdG9tLmNwcAkod29ya2luZyBjb3B5KQpAQCAtMzMsMTcgKzMzLDE3IEBA
IG5hbWVzcGFjZSBXZWJDb3JlIHsKIAogdXNpbmcgbmFtZXNwYWNlIEpTQzsKIAotYm9vbCBKU0hU
TUxBcHBsZXRFbGVtZW50OjpnZXRPd25Qcm9wZXJ0eVNsb3REZWxlZ2F0ZShFeGVjU3RhdGUqIGV4
ZWMsIGNvbnN0IElkZW50aWZpZXImIHByb3BlcnR5TmFtZSwgUHJvcGVydHlTbG90JiBzbG90KQor
Ym9vbCBKU0hUTUxBcHBsZXRFbGVtZW50OjpnZXRPd25Qcm9wZXJ0eVNsb3REZWxlZ2F0ZShFeGVj
U3RhdGUqIGV4ZWMsIFByb3BlcnR5TmFtZSBwcm9wZXJ0eU5hbWUsIFByb3BlcnR5U2xvdCYgc2xv
dCkKIHsKICAgICByZXR1cm4gcnVudGltZU9iamVjdEN1c3RvbUdldE93blByb3BlcnR5U2xvdChl
eGVjLCBwcm9wZXJ0eU5hbWUsIHNsb3QsIHRoaXMpOwogfQogCi1ib29sIEpTSFRNTEFwcGxldEVs
ZW1lbnQ6OmdldE93blByb3BlcnR5RGVzY3JpcHRvckRlbGVnYXRlKEV4ZWNTdGF0ZSogZXhlYywg
Y29uc3QgSWRlbnRpZmllciYgcHJvcGVydHlOYW1lLCBQcm9wZXJ0eURlc2NyaXB0b3ImIGRlc2Ny
aXB0b3IpCitib29sIEpTSFRNTEFwcGxldEVsZW1lbnQ6OmdldE93blByb3BlcnR5RGVzY3JpcHRv
ckRlbGVnYXRlKEV4ZWNTdGF0ZSogZXhlYywgUHJvcGVydHlOYW1lIHByb3BlcnR5TmFtZSwgUHJv
cGVydHlEZXNjcmlwdG9yJiBkZXNjcmlwdG9yKQogewogICAgIHJldHVybiBydW50aW1lT2JqZWN0
Q3VzdG9tR2V0T3duUHJvcGVydHlEZXNjcmlwdG9yKGV4ZWMsIHByb3BlcnR5TmFtZSwgZGVzY3Jp
cHRvciwgdGhpcyk7CiB9CiAKLWJvb2wgSlNIVE1MQXBwbGV0RWxlbWVudDo6cHV0RGVsZWdhdGUo
RXhlY1N0YXRlKiBleGVjLCBjb25zdCBJZGVudGlmaWVyJiBwcm9wZXJ0eU5hbWUsIEpTVmFsdWUg
dmFsdWUsIFB1dFByb3BlcnR5U2xvdCYgc2xvdCkKK2Jvb2wgSlNIVE1MQXBwbGV0RWxlbWVudDo6
cHV0RGVsZWdhdGUoRXhlY1N0YXRlKiBleGVjLCBQcm9wZXJ0eU5hbWUgcHJvcGVydHlOYW1lLCBK
U1ZhbHVlIHZhbHVlLCBQdXRQcm9wZXJ0eVNsb3QmIHNsb3QpCiB7CiAgICAgcmV0dXJuIHJ1bnRp
bWVPYmplY3RDdXN0b21QdXQoZXhlYywgcHJvcGVydHlOYW1lLCB2YWx1ZSwgdGhpcywgc2xvdCk7
CiB9CkluZGV4OiBTb3VyY2UvV2ViQ29yZS9iaW5kaW5ncy9qcy9KU0hUTUxDb2xsZWN0aW9uQ3Vz
dG9tLmNwcAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2ViQ29yZS9iaW5kaW5ncy9qcy9KU0hUTUxD
b2xsZWN0aW9uQ3VzdG9tLmNwcAkocmV2aXNpb24gMTE2NjY3KQorKysgU291cmNlL1dlYkNvcmUv
YmluZGluZ3MvanMvSlNIVE1MQ29sbGVjdGlvbkN1c3RvbS5jcHAJKHdvcmtpbmcgY29weSkKQEAg
LTM5LDEwICszOSwxMCBAQCB1c2luZyBuYW1lc3BhY2UgSlNDOwogCiBuYW1lc3BhY2UgV2ViQ29y
ZSB7CiAKLXN0YXRpYyBKU1ZhbHVlIGdldE5hbWVkSXRlbXMoRXhlY1N0YXRlKiBleGVjLCBKU0hU
TUxDb2xsZWN0aW9uKiBjb2xsZWN0aW9uLCBjb25zdCBJZGVudGlmaWVyJiBwcm9wZXJ0eU5hbWUp
CitzdGF0aWMgSlNWYWx1ZSBnZXROYW1lZEl0ZW1zKEV4ZWNTdGF0ZSogZXhlYywgSlNIVE1MQ29s
bGVjdGlvbiogY29sbGVjdGlvbiwgUHJvcGVydHlOYW1lIHByb3BlcnR5TmFtZSkKIHsKICAgICBW
ZWN0b3I8UmVmUHRyPE5vZGU+ID4gbmFtZWRJdGVtczsKLSAgICBjb25zdCBBdG9taWNTdHJpbmcm
IG5hbWUgPSBpZGVudGlmaWVyVG9BdG9taWNTdHJpbmcocHJvcGVydHlOYW1lKTsKKyAgICBjb25z
dCBBdG9taWNTdHJpbmcmIG5hbWUgPSBwcm9wZXJ0eU5hbWVUb0F0b21pY1N0cmluZyhwcm9wZXJ0
eU5hbWUpOwogICAgIGNvbGxlY3Rpb24tPmltcGwoKS0+bmFtZWRJdGVtcyhuYW1lLCBuYW1lZEl0
ZW1zKTsKIAogICAgIGlmIChuYW1lZEl0ZW1zLmlzRW1wdHkoKSkKQEAgLTU5LDEyICs1OSwxMiBA
QCBzdGF0aWMgSlNWYWx1ZSBnZXROYW1lZEl0ZW1zKEV4ZWNTdGF0ZSogCiAgICAgcmV0dXJuIHRv
SlMoZXhlYywgY29sbGVjdGlvbi0+Z2xvYmFsT2JqZWN0KCksIFN0YXRpY05vZGVMaXN0OjphZG9w
dChuYW1lZEl0ZW1zKS5nZXQoKSk7CiB9CiAKLWJvb2wgSlNIVE1MQ29sbGVjdGlvbjo6Y2FuR2V0
SXRlbXNGb3JOYW1lKEV4ZWNTdGF0ZSosIEhUTUxDb2xsZWN0aW9uKiBjb2xsZWN0aW9uLCBjb25z
dCBJZGVudGlmaWVyJiBwcm9wZXJ0eU5hbWUpCitib29sIEpTSFRNTENvbGxlY3Rpb246OmNhbkdl
dEl0ZW1zRm9yTmFtZShFeGVjU3RhdGUqLCBIVE1MQ29sbGVjdGlvbiogY29sbGVjdGlvbiwgUHJv
cGVydHlOYW1lIHByb3BlcnR5TmFtZSkKIHsKLSAgICByZXR1cm4gY29sbGVjdGlvbi0+aGFzTmFt
ZWRJdGVtKGlkZW50aWZpZXJUb0F0b21pY1N0cmluZyhwcm9wZXJ0eU5hbWUpKTsKKyAgICByZXR1
cm4gY29sbGVjdGlvbi0+aGFzTmFtZWRJdGVtKHByb3BlcnR5TmFtZVRvQXRvbWljU3RyaW5nKHBy
b3BlcnR5TmFtZSkpOwogfQogCi1KU1ZhbHVlIEpTSFRNTENvbGxlY3Rpb246Om5hbWVHZXR0ZXIo
RXhlY1N0YXRlKiBleGVjLCBKU1ZhbHVlIHNsb3RCYXNlLCBjb25zdCBJZGVudGlmaWVyJiBwcm9w
ZXJ0eU5hbWUpCitKU1ZhbHVlIEpTSFRNTENvbGxlY3Rpb246Om5hbWVHZXR0ZXIoRXhlY1N0YXRl
KiBleGVjLCBKU1ZhbHVlIHNsb3RCYXNlLCBQcm9wZXJ0eU5hbWUgcHJvcGVydHlOYW1lKQogewog
ICAgIEpTSFRNTENvbGxlY3Rpb24qIHRoaXNPYmogPSBqc0Nhc3Q8SlNIVE1MQ29sbGVjdGlvbio+
KGFzT2JqZWN0KHNsb3RCYXNlKSk7CiAgICAgcmV0dXJuIGdldE5hbWVkSXRlbXMoZXhlYywgdGhp
c09iaiwgcHJvcGVydHlOYW1lKTsKSW5kZXg6IFNvdXJjZS9XZWJDb3JlL2JpbmRpbmdzL2pzL0pT
SFRNTERvY3VtZW50Q3VzdG9tLmNwcAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2ViQ29yZS9iaW5k
aW5ncy9qcy9KU0hUTUxEb2N1bWVudEN1c3RvbS5jcHAJKHJldmlzaW9uIDExNjY2NykKKysrIFNv
dXJjZS9XZWJDb3JlL2JpbmRpbmdzL2pzL0pTSFRNTERvY3VtZW50Q3VzdG9tLmNwcAkod29ya2lu
ZyBjb3B5KQpAQCAtNTEsMTggKzUxLDE4IEBAIG5hbWVzcGFjZSBXZWJDb3JlIHsKIAogdXNpbmcg
bmFtZXNwYWNlIEhUTUxOYW1lczsKIAotYm9vbCBKU0hUTUxEb2N1bWVudDo6Y2FuR2V0SXRlbXNG
b3JOYW1lKEV4ZWNTdGF0ZSosIEhUTUxEb2N1bWVudCogZG9jdW1lbnQsIGNvbnN0IElkZW50aWZp
ZXImIHByb3BlcnR5TmFtZSkKK2Jvb2wgSlNIVE1MRG9jdW1lbnQ6OmNhbkdldEl0ZW1zRm9yTmFt
ZShFeGVjU3RhdGUqLCBIVE1MRG9jdW1lbnQqIGRvY3VtZW50LCBQcm9wZXJ0eU5hbWUgcHJvcGVy
dHlOYW1lKQogewogICAgIEF0b21pY1N0cmluZ0ltcGwqIGF0b21pY1Byb3BlcnR5TmFtZSA9IGZp
bmRBdG9taWNTdHJpbmcocHJvcGVydHlOYW1lKTsKICAgICByZXR1cm4gYXRvbWljUHJvcGVydHlO
YW1lICYmIChkb2N1bWVudC0+aGFzTmFtZWRJdGVtKGF0b21pY1Byb3BlcnR5TmFtZSkgfHwgZG9j
dW1lbnQtPmhhc0V4dHJhTmFtZWRJdGVtKGF0b21pY1Byb3BlcnR5TmFtZSkpOwogfQogCi1KU1Zh
bHVlIEpTSFRNTERvY3VtZW50OjpuYW1lR2V0dGVyKEV4ZWNTdGF0ZSogZXhlYywgSlNWYWx1ZSBz
bG90QmFzZSwgY29uc3QgSWRlbnRpZmllciYgcHJvcGVydHlOYW1lKQorSlNWYWx1ZSBKU0hUTUxE
b2N1bWVudDo6bmFtZUdldHRlcihFeGVjU3RhdGUqIGV4ZWMsIEpTVmFsdWUgc2xvdEJhc2UsIFBy
b3BlcnR5TmFtZSBwcm9wZXJ0eU5hbWUpCiB7CiAgICAgSlNIVE1MRG9jdW1lbnQqIHRoaXNPYmog
PSBqc0Nhc3Q8SlNIVE1MRG9jdW1lbnQqPihhc09iamVjdChzbG90QmFzZSkpOwogICAgIEhUTUxE
b2N1bWVudCogZG9jdW1lbnQgPSBzdGF0aWNfY2FzdDxIVE1MRG9jdW1lbnQqPih0aGlzT2JqLT5p
bXBsKCkpOwogCi0gICAgSFRNTENvbGxlY3Rpb24qIGNvbGxlY3Rpb24gPSBkb2N1bWVudC0+ZG9j
dW1lbnROYW1lZEl0ZW1zKGlkZW50aWZpZXJUb0F0b21pY1N0cmluZyhwcm9wZXJ0eU5hbWUpKTsK
KyAgICBIVE1MQ29sbGVjdGlvbiogY29sbGVjdGlvbiA9IGRvY3VtZW50LT5kb2N1bWVudE5hbWVk
SXRlbXMocHJvcGVydHlOYW1lVG9BdG9taWNTdHJpbmcocHJvcGVydHlOYW1lKSk7CiAKICAgICB1
bnNpZ25lZCBsZW5ndGggPSBjb2xsZWN0aW9uLT5sZW5ndGgoKTsKICAgICBpZiAoIWxlbmd0aCkK
SW5kZXg6IFNvdXJjZS9XZWJDb3JlL2JpbmRpbmdzL2pzL0pTSFRNTEVtYmVkRWxlbWVudEN1c3Rv
bS5jcHAKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PQotLS0gU291cmNlL1dlYkNvcmUvYmluZGluZ3MvanMvSlNIVE1MRW1i
ZWRFbGVtZW50Q3VzdG9tLmNwcAkocmV2aXNpb24gMTE2NjY3KQorKysgU291cmNlL1dlYkNvcmUv
YmluZGluZ3MvanMvSlNIVE1MRW1iZWRFbGVtZW50Q3VzdG9tLmNwcAkod29ya2luZyBjb3B5KQpA
QCAtMzMsMTcgKzMzLDE3IEBAIG5hbWVzcGFjZSBXZWJDb3JlIHsKIAogdXNpbmcgbmFtZXNwYWNl
IEpTQzsKIAotYm9vbCBKU0hUTUxFbWJlZEVsZW1lbnQ6OmdldE93blByb3BlcnR5U2xvdERlbGVn
YXRlKEV4ZWNTdGF0ZSogZXhlYywgY29uc3QgSWRlbnRpZmllciYgcHJvcGVydHlOYW1lLCBQcm9w
ZXJ0eVNsb3QmIHNsb3QpCitib29sIEpTSFRNTEVtYmVkRWxlbWVudDo6Z2V0T3duUHJvcGVydHlT
bG90RGVsZWdhdGUoRXhlY1N0YXRlKiBleGVjLCBQcm9wZXJ0eU5hbWUgcHJvcGVydHlOYW1lLCBQ
cm9wZXJ0eVNsb3QmIHNsb3QpCiB7CiAgICAgcmV0dXJuIHJ1bnRpbWVPYmplY3RDdXN0b21HZXRP
d25Qcm9wZXJ0eVNsb3QoZXhlYywgcHJvcGVydHlOYW1lLCBzbG90LCB0aGlzKTsKIH0KIAotYm9v
bCBKU0hUTUxFbWJlZEVsZW1lbnQ6OmdldE93blByb3BlcnR5RGVzY3JpcHRvckRlbGVnYXRlKEV4
ZWNTdGF0ZSogZXhlYywgY29uc3QgSWRlbnRpZmllciYgcHJvcGVydHlOYW1lLCBQcm9wZXJ0eURl
c2NyaXB0b3ImIGRlc2NyaXB0b3IpCitib29sIEpTSFRNTEVtYmVkRWxlbWVudDo6Z2V0T3duUHJv
cGVydHlEZXNjcmlwdG9yRGVsZWdhdGUoRXhlY1N0YXRlKiBleGVjLCBQcm9wZXJ0eU5hbWUgcHJv
cGVydHlOYW1lLCBQcm9wZXJ0eURlc2NyaXB0b3ImIGRlc2NyaXB0b3IpCiB7CiAgICAgcmV0dXJu
IHJ1bnRpbWVPYmplY3RDdXN0b21HZXRPd25Qcm9wZXJ0eURlc2NyaXB0b3IoZXhlYywgcHJvcGVy
dHlOYW1lLCBkZXNjcmlwdG9yLCB0aGlzKTsKIH0KIAotYm9vbCBKU0hUTUxFbWJlZEVsZW1lbnQ6
OnB1dERlbGVnYXRlKEV4ZWNTdGF0ZSogZXhlYywgY29uc3QgSWRlbnRpZmllciYgcHJvcGVydHlO
YW1lLCBKU1ZhbHVlIHZhbHVlLCBQdXRQcm9wZXJ0eVNsb3QmIHNsb3QpCitib29sIEpTSFRNTEVt
YmVkRWxlbWVudDo6cHV0RGVsZWdhdGUoRXhlY1N0YXRlKiBleGVjLCBQcm9wZXJ0eU5hbWUgcHJv
cGVydHlOYW1lLCBKU1ZhbHVlIHZhbHVlLCBQdXRQcm9wZXJ0eVNsb3QmIHNsb3QpCiB7CiAgICAg
cmV0dXJuIHJ1bnRpbWVPYmplY3RDdXN0b21QdXQoZXhlYywgcHJvcGVydHlOYW1lLCB2YWx1ZSwg
dGhpcywgc2xvdCk7CiB9CkluZGV4OiBTb3VyY2UvV2ViQ29yZS9iaW5kaW5ncy9qcy9KU0hUTUxG
b3JtRWxlbWVudEN1c3RvbS5jcHAKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL1dlYkNvcmUvYmluZGlu
Z3MvanMvSlNIVE1MRm9ybUVsZW1lbnRDdXN0b20uY3BwCShyZXZpc2lvbiAxMTY2NjcpCisrKyBT
b3VyY2UvV2ViQ29yZS9iaW5kaW5ncy9qcy9KU0hUTUxGb3JtRWxlbWVudEN1c3RvbS5jcHAJKHdv
cmtpbmcgY29weSkKQEAgLTM3LDIwICszNywyMCBAQCB1c2luZyBuYW1lc3BhY2UgSlNDOwogCiBu
YW1lc3BhY2UgV2ViQ29yZSB7CiAKLWJvb2wgSlNIVE1MRm9ybUVsZW1lbnQ6OmNhbkdldEl0ZW1z
Rm9yTmFtZShFeGVjU3RhdGUqLCBIVE1MRm9ybUVsZW1lbnQqIGZvcm0sIGNvbnN0IElkZW50aWZp
ZXImIHByb3BlcnR5TmFtZSkKK2Jvb2wgSlNIVE1MRm9ybUVsZW1lbnQ6OmNhbkdldEl0ZW1zRm9y
TmFtZShFeGVjU3RhdGUqLCBIVE1MRm9ybUVsZW1lbnQqIGZvcm0sIFByb3BlcnR5TmFtZSBwcm9w
ZXJ0eU5hbWUpCiB7CiAgICAgVmVjdG9yPFJlZlB0cjxOb2RlPiA+IG5hbWVkSXRlbXM7Ci0gICAg
Zm9ybS0+Z2V0TmFtZWRFbGVtZW50cyhpZGVudGlmaWVyVG9BdG9taWNTdHJpbmcocHJvcGVydHlO
YW1lKSwgbmFtZWRJdGVtcyk7CisgICAgZm9ybS0+Z2V0TmFtZWRFbGVtZW50cyhwcm9wZXJ0eU5h
bWVUb0F0b21pY1N0cmluZyhwcm9wZXJ0eU5hbWUpLCBuYW1lZEl0ZW1zKTsKICAgICByZXR1cm4g
bmFtZWRJdGVtcy5zaXplKCk7CiB9CiAKLUpTVmFsdWUgSlNIVE1MRm9ybUVsZW1lbnQ6Om5hbWVH
ZXR0ZXIoRXhlY1N0YXRlKiBleGVjLCBKU1ZhbHVlIHNsb3RCYXNlLCBjb25zdCBJZGVudGlmaWVy
JiBwcm9wZXJ0eU5hbWUpCitKU1ZhbHVlIEpTSFRNTEZvcm1FbGVtZW50OjpuYW1lR2V0dGVyKEV4
ZWNTdGF0ZSogZXhlYywgSlNWYWx1ZSBzbG90QmFzZSwgUHJvcGVydHlOYW1lIHByb3BlcnR5TmFt
ZSkKIHsKICAgICBKU0hUTUxFbGVtZW50KiBqc0Zvcm0gPSBqc0Nhc3Q8SlNIVE1MRm9ybUVsZW1l
bnQqPihhc09iamVjdChzbG90QmFzZSkpOwogICAgIEhUTUxGb3JtRWxlbWVudCogZm9ybSA9IHN0
YXRpY19jYXN0PEhUTUxGb3JtRWxlbWVudCo+KGpzRm9ybS0+aW1wbCgpKTsKIAogICAgIFZlY3Rv
cjxSZWZQdHI8Tm9kZT4gPiBuYW1lZEl0ZW1zOwotICAgIGZvcm0tPmdldE5hbWVkRWxlbWVudHMo
aWRlbnRpZmllclRvQXRvbWljU3RyaW5nKHByb3BlcnR5TmFtZSksIG5hbWVkSXRlbXMpOworICAg
IGZvcm0tPmdldE5hbWVkRWxlbWVudHMocHJvcGVydHlOYW1lVG9BdG9taWNTdHJpbmcocHJvcGVy
dHlOYW1lKSwgbmFtZWRJdGVtcyk7CiAgICAgCiAgICAgaWYgKG5hbWVkSXRlbXMuaXNFbXB0eSgp
KQogICAgICAgICByZXR1cm4ganNVbmRlZmluZWQoKTsKSW5kZXg6IFNvdXJjZS9XZWJDb3JlL2Jp
bmRpbmdzL2pzL0pTSFRNTEZyYW1lU2V0RWxlbWVudEN1c3RvbS5jcHAKPT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0g
U291cmNlL1dlYkNvcmUvYmluZGluZ3MvanMvSlNIVE1MRnJhbWVTZXRFbGVtZW50Q3VzdG9tLmNw
cAkocmV2aXNpb24gMTE2NjY3KQorKysgU291cmNlL1dlYkNvcmUvYmluZGluZ3MvanMvSlNIVE1M
RnJhbWVTZXRFbGVtZW50Q3VzdG9tLmNwcAkod29ya2luZyBjb3B5KQpAQCAtNDEsMTYgKzQxLDE2
IEBAIG5hbWVzcGFjZSBXZWJDb3JlIHsKIAogdXNpbmcgbmFtZXNwYWNlIEhUTUxOYW1lczsKIAot
Ym9vbCBKU0hUTUxGcmFtZVNldEVsZW1lbnQ6OmNhbkdldEl0ZW1zRm9yTmFtZShFeGVjU3RhdGUq
LCBIVE1MRnJhbWVTZXRFbGVtZW50KiBmcmFtZVNldCwgY29uc3QgSWRlbnRpZmllciYgcHJvcGVy
dHlOYW1lKQorYm9vbCBKU0hUTUxGcmFtZVNldEVsZW1lbnQ6OmNhbkdldEl0ZW1zRm9yTmFtZShF
eGVjU3RhdGUqLCBIVE1MRnJhbWVTZXRFbGVtZW50KiBmcmFtZVNldCwgUHJvcGVydHlOYW1lIHBy
b3BlcnR5TmFtZSkKIHsKLSAgICBOb2RlKiBmcmFtZSA9IGZyYW1lU2V0LT5jaGlsZHJlbigpLT5u
YW1lZEl0ZW0oaWRlbnRpZmllclRvQXRvbWljU3RyaW5nKHByb3BlcnR5TmFtZSkpOworICAgIE5v
ZGUqIGZyYW1lID0gZnJhbWVTZXQtPmNoaWxkcmVuKCktPm5hbWVkSXRlbShwcm9wZXJ0eU5hbWVU
b0F0b21pY1N0cmluZyhwcm9wZXJ0eU5hbWUpKTsKICAgICByZXR1cm4gZnJhbWUgJiYgZnJhbWUt
Pmhhc1RhZ05hbWUoZnJhbWVUYWcpOwogfQogCi1KU1ZhbHVlIEpTSFRNTEZyYW1lU2V0RWxlbWVu
dDo6bmFtZUdldHRlcihFeGVjU3RhdGUqIGV4ZWMsIEpTVmFsdWUgc2xvdEJhc2UsIGNvbnN0IElk
ZW50aWZpZXImIHByb3BlcnR5TmFtZSkKK0pTVmFsdWUgSlNIVE1MRnJhbWVTZXRFbGVtZW50Ojpu
YW1lR2V0dGVyKEV4ZWNTdGF0ZSogZXhlYywgSlNWYWx1ZSBzbG90QmFzZSwgUHJvcGVydHlOYW1l
IHByb3BlcnR5TmFtZSkKIHsKICAgICBIVE1MRWxlbWVudCogZWxlbWVudCA9IGpzQ2FzdDxKU0hU
TUxFbGVtZW50Kj4oYXNPYmplY3Qoc2xvdEJhc2UpKS0+aW1wbCgpOwotICAgIE5vZGUqIGZyYW1l
RWxlbWVudCA9IGVsZW1lbnQtPmNoaWxkcmVuKCktPm5hbWVkSXRlbShpZGVudGlmaWVyVG9BdG9t
aWNTdHJpbmcocHJvcGVydHlOYW1lKSk7CisgICAgTm9kZSogZnJhbWVFbGVtZW50ID0gZWxlbWVu
dC0+Y2hpbGRyZW4oKS0+bmFtZWRJdGVtKHByb3BlcnR5TmFtZVRvQXRvbWljU3RyaW5nKHByb3Bl
cnR5TmFtZSkpOwogICAgIGlmIChEb2N1bWVudCogZG9jdW1lbnQgPSBzdGF0aWNfY2FzdDxIVE1M
RnJhbWVFbGVtZW50Kj4oZnJhbWVFbGVtZW50KS0+Y29udGVudERvY3VtZW50KCkpIHsKICAgICAg
ICAgaWYgKEpTRE9NV2luZG93U2hlbGwqIHdpbmRvdyA9IHRvSlNET01XaW5kb3dTaGVsbChkb2N1
bWVudC0+ZnJhbWUoKSwgY3VycmVudFdvcmxkKGV4ZWMpKSkKICAgICAgICAgICAgIHJldHVybiB3
aW5kb3c7CkluZGV4OiBTb3VyY2UvV2ViQ29yZS9iaW5kaW5ncy9qcy9KU0hUTUxPYmplY3RFbGVt
ZW50Q3VzdG9tLmNwcAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2ViQ29yZS9iaW5kaW5ncy9qcy9K
U0hUTUxPYmplY3RFbGVtZW50Q3VzdG9tLmNwcAkocmV2aXNpb24gMTE2NjY3KQorKysgU291cmNl
L1dlYkNvcmUvYmluZGluZ3MvanMvSlNIVE1MT2JqZWN0RWxlbWVudEN1c3RvbS5jcHAJKHdvcmtp
bmcgY29weSkKQEAgLTMzLDE3ICszMywxNyBAQCBuYW1lc3BhY2UgV2ViQ29yZSB7CiAKIHVzaW5n
IG5hbWVzcGFjZSBKU0M7CiAKLWJvb2wgSlNIVE1MT2JqZWN0RWxlbWVudDo6Z2V0T3duUHJvcGVy
dHlTbG90RGVsZWdhdGUoRXhlY1N0YXRlKiBleGVjLCBjb25zdCBJZGVudGlmaWVyJiBwcm9wZXJ0
eU5hbWUsIFByb3BlcnR5U2xvdCYgc2xvdCkKK2Jvb2wgSlNIVE1MT2JqZWN0RWxlbWVudDo6Z2V0
T3duUHJvcGVydHlTbG90RGVsZWdhdGUoRXhlY1N0YXRlKiBleGVjLCBQcm9wZXJ0eU5hbWUgcHJv
cGVydHlOYW1lLCBQcm9wZXJ0eVNsb3QmIHNsb3QpCiB7CiAgICAgcmV0dXJuIHJ1bnRpbWVPYmpl
Y3RDdXN0b21HZXRPd25Qcm9wZXJ0eVNsb3QoZXhlYywgcHJvcGVydHlOYW1lLCBzbG90LCB0aGlz
KTsKIH0KIAotYm9vbCBKU0hUTUxPYmplY3RFbGVtZW50OjpnZXRPd25Qcm9wZXJ0eURlc2NyaXB0
b3JEZWxlZ2F0ZShFeGVjU3RhdGUqIGV4ZWMsIGNvbnN0IElkZW50aWZpZXImIHByb3BlcnR5TmFt
ZSwgUHJvcGVydHlEZXNjcmlwdG9yJiBkZXNjcmlwdG9yKQorYm9vbCBKU0hUTUxPYmplY3RFbGVt
ZW50OjpnZXRPd25Qcm9wZXJ0eURlc2NyaXB0b3JEZWxlZ2F0ZShFeGVjU3RhdGUqIGV4ZWMsIFBy
b3BlcnR5TmFtZSBwcm9wZXJ0eU5hbWUsIFByb3BlcnR5RGVzY3JpcHRvciYgZGVzY3JpcHRvcikK
IHsKICAgICByZXR1cm4gcnVudGltZU9iamVjdEN1c3RvbUdldE93blByb3BlcnR5RGVzY3JpcHRv
cihleGVjLCBwcm9wZXJ0eU5hbWUsIGRlc2NyaXB0b3IsIHRoaXMpOwogfQogCi1ib29sIEpTSFRN
TE9iamVjdEVsZW1lbnQ6OnB1dERlbGVnYXRlKEV4ZWNTdGF0ZSogZXhlYywgY29uc3QgSWRlbnRp
ZmllciYgcHJvcGVydHlOYW1lLCBKU1ZhbHVlIHZhbHVlLCBQdXRQcm9wZXJ0eVNsb3QmIHNsb3Qp
Citib29sIEpTSFRNTE9iamVjdEVsZW1lbnQ6OnB1dERlbGVnYXRlKEV4ZWNTdGF0ZSogZXhlYywg
UHJvcGVydHlOYW1lIHByb3BlcnR5TmFtZSwgSlNWYWx1ZSB2YWx1ZSwgUHV0UHJvcGVydHlTbG90
JiBzbG90KQogewogICAgIHJldHVybiBydW50aW1lT2JqZWN0Q3VzdG9tUHV0KGV4ZWMsIHByb3Bl
cnR5TmFtZSwgdmFsdWUsIHRoaXMsIHNsb3QpOwogfQpJbmRleDogU291cmNlL1dlYkNvcmUvYmlu
ZGluZ3MvanMvSlNIaXN0b3J5Q3VzdG9tLmNwcAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2ViQ29y
ZS9iaW5kaW5ncy9qcy9KU0hpc3RvcnlDdXN0b20uY3BwCShyZXZpc2lvbiAxMTY2NjcpCisrKyBT
b3VyY2UvV2ViQ29yZS9iaW5kaW5ncy9qcy9KU0hpc3RvcnlDdXN0b20uY3BwCSh3b3JraW5nIGNv
cHkpCkBAIC0zOCwyMiArMzgsMjIgQEAgdXNpbmcgbmFtZXNwYWNlIEpTQzsKIAogbmFtZXNwYWNl
IFdlYkNvcmUgewogCi1zdGF0aWMgSlNWYWx1ZSBub25DYWNoaW5nU3RhdGljQmFja0Z1bmN0aW9u
R2V0dGVyKEV4ZWNTdGF0ZSogZXhlYywgSlNWYWx1ZSwgY29uc3QgSWRlbnRpZmllciYgcHJvcGVy
dHlOYW1lKQorc3RhdGljIEpTVmFsdWUgbm9uQ2FjaGluZ1N0YXRpY0JhY2tGdW5jdGlvbkdldHRl
cihFeGVjU3RhdGUqIGV4ZWMsIEpTVmFsdWUsIFByb3BlcnR5TmFtZSBwcm9wZXJ0eU5hbWUpCiB7
Ci0gICAgcmV0dXJuIEpTRnVuY3Rpb246OmNyZWF0ZShleGVjLCBleGVjLT5sZXhpY2FsR2xvYmFs
T2JqZWN0KCksIDAsIHByb3BlcnR5TmFtZSwganNIaXN0b3J5UHJvdG90eXBlRnVuY3Rpb25CYWNr
KTsKKyAgICByZXR1cm4gSlNGdW5jdGlvbjo6Y3JlYXRlKGV4ZWMsIGV4ZWMtPmxleGljYWxHbG9i
YWxPYmplY3QoKSwgMCwgcHJvcGVydHlOYW1lLmltcGwoKSwganNIaXN0b3J5UHJvdG90eXBlRnVu
Y3Rpb25CYWNrKTsKIH0KIAotc3RhdGljIEpTVmFsdWUgbm9uQ2FjaGluZ1N0YXRpY0ZvcndhcmRG
dW5jdGlvbkdldHRlcihFeGVjU3RhdGUqIGV4ZWMsIEpTVmFsdWUsIGNvbnN0IElkZW50aWZpZXIm
IHByb3BlcnR5TmFtZSkKK3N0YXRpYyBKU1ZhbHVlIG5vbkNhY2hpbmdTdGF0aWNGb3J3YXJkRnVu
Y3Rpb25HZXR0ZXIoRXhlY1N0YXRlKiBleGVjLCBKU1ZhbHVlLCBQcm9wZXJ0eU5hbWUgcHJvcGVy
dHlOYW1lKQogewotICAgIHJldHVybiBKU0Z1bmN0aW9uOjpjcmVhdGUoZXhlYywgZXhlYy0+bGV4
aWNhbEdsb2JhbE9iamVjdCgpLCAwLCBwcm9wZXJ0eU5hbWUsIGpzSGlzdG9yeVByb3RvdHlwZUZ1
bmN0aW9uRm9yd2FyZCk7CisgICAgcmV0dXJuIEpTRnVuY3Rpb246OmNyZWF0ZShleGVjLCBleGVj
LT5sZXhpY2FsR2xvYmFsT2JqZWN0KCksIDAsIHByb3BlcnR5TmFtZS5pbXBsKCksIGpzSGlzdG9y
eVByb3RvdHlwZUZ1bmN0aW9uRm9yd2FyZCk7CiB9CiAKLXN0YXRpYyBKU1ZhbHVlIG5vbkNhY2hp
bmdTdGF0aWNHb0Z1bmN0aW9uR2V0dGVyKEV4ZWNTdGF0ZSogZXhlYywgSlNWYWx1ZSwgY29uc3Qg
SWRlbnRpZmllciYgcHJvcGVydHlOYW1lKQorc3RhdGljIEpTVmFsdWUgbm9uQ2FjaGluZ1N0YXRp
Y0dvRnVuY3Rpb25HZXR0ZXIoRXhlY1N0YXRlKiBleGVjLCBKU1ZhbHVlLCBQcm9wZXJ0eU5hbWUg
cHJvcGVydHlOYW1lKQogewotICAgIHJldHVybiBKU0Z1bmN0aW9uOjpjcmVhdGUoZXhlYywgZXhl
Yy0+bGV4aWNhbEdsb2JhbE9iamVjdCgpLCAxLCBwcm9wZXJ0eU5hbWUsIGpzSGlzdG9yeVByb3Rv
dHlwZUZ1bmN0aW9uR28pOworICAgIHJldHVybiBKU0Z1bmN0aW9uOjpjcmVhdGUoZXhlYywgZXhl
Yy0+bGV4aWNhbEdsb2JhbE9iamVjdCgpLCAxLCBwcm9wZXJ0eU5hbWUuaW1wbCgpLCBqc0hpc3Rv
cnlQcm90b3R5cGVGdW5jdGlvbkdvKTsKIH0KIAotYm9vbCBKU0hpc3Rvcnk6OmdldE93blByb3Bl
cnR5U2xvdERlbGVnYXRlKEV4ZWNTdGF0ZSogZXhlYywgY29uc3QgSWRlbnRpZmllciYgcHJvcGVy
dHlOYW1lLCBQcm9wZXJ0eVNsb3QmIHNsb3QpCitib29sIEpTSGlzdG9yeTo6Z2V0T3duUHJvcGVy
dHlTbG90RGVsZWdhdGUoRXhlY1N0YXRlKiBleGVjLCBQcm9wZXJ0eU5hbWUgcHJvcGVydHlOYW1l
LCBQcm9wZXJ0eVNsb3QmIHNsb3QpCiB7CiAgICAgLy8gV2hlbiBhY2Nlc3NpbmcgSGlzdG9yeSBj
cm9zcy1kb21haW4sIGZ1bmN0aW9ucyBhcmUgYWx3YXlzIHRoZSBuYXRpdmUgYnVpbHQtaW4gb25l
cy4KICAgICAvLyBTZWUgSlNET01XaW5kb3c6OmdldE93blByb3BlcnR5U2xvdERlbGVnYXRlIGZv
ciBhZGRpdGlvbmFsIGRldGFpbHMuCkBAIC05Myw3ICs5Myw3IEBAIGJvb2wgSlNIaXN0b3J5Ojpn
ZXRPd25Qcm9wZXJ0eVNsb3REZWxlZ2EKICAgICByZXR1cm4gdHJ1ZTsKIH0KIAotYm9vbCBKU0hp
c3Rvcnk6OmdldE93blByb3BlcnR5RGVzY3JpcHRvckRlbGVnYXRlKEV4ZWNTdGF0ZSogZXhlYywg
Y29uc3QgSWRlbnRpZmllciYgcHJvcGVydHlOYW1lLCBQcm9wZXJ0eURlc2NyaXB0b3ImIGRlc2Ny
aXB0b3IpCitib29sIEpTSGlzdG9yeTo6Z2V0T3duUHJvcGVydHlEZXNjcmlwdG9yRGVsZWdhdGUo
RXhlY1N0YXRlKiBleGVjLCBQcm9wZXJ0eU5hbWUgcHJvcGVydHlOYW1lLCBQcm9wZXJ0eURlc2Ny
aXB0b3ImIGRlc2NyaXB0b3IpCiB7CiAgICAgaWYgKCFpbXBsKCktPmZyYW1lKCkpIHsKICAgICAg
ICAgZGVzY3JpcHRvci5zZXRVbmRlZmluZWQoKTsKQEAgLTEzOCw3ICsxMzgsNyBAQCBib29sIEpT
SGlzdG9yeTo6Z2V0T3duUHJvcGVydHlEZXNjcmlwdG9yCiAgICAgcmV0dXJuIHRydWU7CiB9CiAK
LWJvb2wgSlNIaXN0b3J5OjpwdXREZWxlZ2F0ZShFeGVjU3RhdGUqIGV4ZWMsIGNvbnN0IElkZW50
aWZpZXImLCBKU1ZhbHVlLCBQdXRQcm9wZXJ0eVNsb3QmKQorYm9vbCBKU0hpc3Rvcnk6OnB1dERl
bGVnYXRlKEV4ZWNTdGF0ZSogZXhlYywgUHJvcGVydHlOYW1lLCBKU1ZhbHVlLCBQdXRQcm9wZXJ0
eVNsb3QmKQogewogICAgIC8vIE9ubHkgYWxsb3cgcHV0dGluZyBieSBmcmFtZXMgaW4gdGhlIHNh
bWUgb3JpZ2luLgogICAgIGlmICghc2hvdWxkQWxsb3dBY2Nlc3NUb0ZyYW1lKGV4ZWMsIGltcGwo
KS0+ZnJhbWUoKSkpCkBAIC0xNDYsNyArMTQ2LDcgQEAgYm9vbCBKU0hpc3Rvcnk6OnB1dERlbGVn
YXRlKEV4ZWNTdGF0ZSogZQogICAgIHJldHVybiBmYWxzZTsKIH0KIAotYm9vbCBKU0hpc3Rvcnk6
OmRlbGV0ZVByb3BlcnR5KEpTQ2VsbCogY2VsbCwgRXhlY1N0YXRlKiBleGVjLCBjb25zdCBJZGVu
dGlmaWVyJiBwcm9wZXJ0eU5hbWUpCitib29sIEpTSGlzdG9yeTo6ZGVsZXRlUHJvcGVydHkoSlND
ZWxsKiBjZWxsLCBFeGVjU3RhdGUqIGV4ZWMsIFByb3BlcnR5TmFtZSBwcm9wZXJ0eU5hbWUpCiB7
CiAgICAgSlNIaXN0b3J5KiB0aGlzT2JqZWN0ID0ganNDYXN0PEpTSGlzdG9yeSo+KGNlbGwpOwog
ICAgIC8vIE9ubHkgYWxsb3cgZGVsZXRpbmcgYnkgZnJhbWVzIGluIHRoZSBzYW1lIG9yaWdpbi4K
SW5kZXg6IFNvdXJjZS9XZWJDb3JlL2JpbmRpbmdzL2pzL0pTTG9jYXRpb25DdXN0b20uY3BwCj09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT0KLS0tIFNvdXJjZS9XZWJDb3JlL2JpbmRpbmdzL2pzL0pTTG9jYXRpb25DdXN0b20u
Y3BwCShyZXZpc2lvbiAxMTY2NjcpCisrKyBTb3VyY2UvV2ViQ29yZS9iaW5kaW5ncy9qcy9KU0xv
Y2F0aW9uQ3VzdG9tLmNwcAkod29ya2luZyBjb3B5KQpAQCAtMzAsMjIgKzMwLDIyIEBAIHVzaW5n
IG5hbWVzcGFjZSBKU0M7CiAKIG5hbWVzcGFjZSBXZWJDb3JlIHsKIAotc3RhdGljIEpTVmFsdWUg
bm9uQ2FjaGluZ1N0YXRpY1JlcGxhY2VGdW5jdGlvbkdldHRlcihFeGVjU3RhdGUqIGV4ZWMsIEpT
VmFsdWUsIGNvbnN0IElkZW50aWZpZXImIHByb3BlcnR5TmFtZSkKK3N0YXRpYyBKU1ZhbHVlIG5v
bkNhY2hpbmdTdGF0aWNSZXBsYWNlRnVuY3Rpb25HZXR0ZXIoRXhlY1N0YXRlKiBleGVjLCBKU1Zh
bHVlLCBQcm9wZXJ0eU5hbWUgcHJvcGVydHlOYW1lKQogewotICAgIHJldHVybiBKU0Z1bmN0aW9u
OjpjcmVhdGUoZXhlYywgZXhlYy0+bGV4aWNhbEdsb2JhbE9iamVjdCgpLCAxLCBwcm9wZXJ0eU5h
bWUsIGpzTG9jYXRpb25Qcm90b3R5cGVGdW5jdGlvblJlcGxhY2UpOworICAgIHJldHVybiBKU0Z1
bmN0aW9uOjpjcmVhdGUoZXhlYywgZXhlYy0+bGV4aWNhbEdsb2JhbE9iamVjdCgpLCAxLCBwcm9w
ZXJ0eU5hbWUuaW1wbCgpLCBqc0xvY2F0aW9uUHJvdG90eXBlRnVuY3Rpb25SZXBsYWNlKTsKIH0K
IAotc3RhdGljIEpTVmFsdWUgbm9uQ2FjaGluZ1N0YXRpY1JlbG9hZEZ1bmN0aW9uR2V0dGVyKEV4
ZWNTdGF0ZSogZXhlYywgSlNWYWx1ZSwgY29uc3QgSWRlbnRpZmllciYgcHJvcGVydHlOYW1lKQor
c3RhdGljIEpTVmFsdWUgbm9uQ2FjaGluZ1N0YXRpY1JlbG9hZEZ1bmN0aW9uR2V0dGVyKEV4ZWNT
dGF0ZSogZXhlYywgSlNWYWx1ZSwgUHJvcGVydHlOYW1lIHByb3BlcnR5TmFtZSkKIHsKLSAgICBy
ZXR1cm4gSlNGdW5jdGlvbjo6Y3JlYXRlKGV4ZWMsIGV4ZWMtPmxleGljYWxHbG9iYWxPYmplY3Qo
KSwgMCwgcHJvcGVydHlOYW1lLCBqc0xvY2F0aW9uUHJvdG90eXBlRnVuY3Rpb25SZWxvYWQpOwor
ICAgIHJldHVybiBKU0Z1bmN0aW9uOjpjcmVhdGUoZXhlYywgZXhlYy0+bGV4aWNhbEdsb2JhbE9i
amVjdCgpLCAwLCBwcm9wZXJ0eU5hbWUuaW1wbCgpLCBqc0xvY2F0aW9uUHJvdG90eXBlRnVuY3Rp
b25SZWxvYWQpOwogfQogCi1zdGF0aWMgSlNWYWx1ZSBub25DYWNoaW5nU3RhdGljQXNzaWduRnVu
Y3Rpb25HZXR0ZXIoRXhlY1N0YXRlKiBleGVjLCBKU1ZhbHVlLCBjb25zdCBJZGVudGlmaWVyJiBw
cm9wZXJ0eU5hbWUpCitzdGF0aWMgSlNWYWx1ZSBub25DYWNoaW5nU3RhdGljQXNzaWduRnVuY3Rp
b25HZXR0ZXIoRXhlY1N0YXRlKiBleGVjLCBKU1ZhbHVlLCBQcm9wZXJ0eU5hbWUgcHJvcGVydHlO
YW1lKQogewotICAgIHJldHVybiBKU0Z1bmN0aW9uOjpjcmVhdGUoZXhlYywgZXhlYy0+bGV4aWNh
bEdsb2JhbE9iamVjdCgpLCAxLCBwcm9wZXJ0eU5hbWUsIGpzTG9jYXRpb25Qcm90b3R5cGVGdW5j
dGlvbkFzc2lnbik7CisgICAgcmV0dXJuIEpTRnVuY3Rpb246OmNyZWF0ZShleGVjLCBleGVjLT5s
ZXhpY2FsR2xvYmFsT2JqZWN0KCksIDEsIHByb3BlcnR5TmFtZS5pbXBsKCksIGpzTG9jYXRpb25Q
cm90b3R5cGVGdW5jdGlvbkFzc2lnbik7CiB9CiAKLWJvb2wgSlNMb2NhdGlvbjo6Z2V0T3duUHJv
cGVydHlTbG90RGVsZWdhdGUoRXhlY1N0YXRlKiBleGVjLCBjb25zdCBJZGVudGlmaWVyJiBwcm9w
ZXJ0eU5hbWUsIFByb3BlcnR5U2xvdCYgc2xvdCkKK2Jvb2wgSlNMb2NhdGlvbjo6Z2V0T3duUHJv
cGVydHlTbG90RGVsZWdhdGUoRXhlY1N0YXRlKiBleGVjLCBQcm9wZXJ0eU5hbWUgcHJvcGVydHlO
YW1lLCBQcm9wZXJ0eVNsb3QmIHNsb3QpCiB7CiAgICAgRnJhbWUqIGZyYW1lID0gaW1wbCgpLT5m
cmFtZSgpOwogICAgIGlmICghZnJhbWUpIHsKQEAgLTg2LDcgKzg2LDcgQEAgYm9vbCBKU0xvY2F0
aW9uOjpnZXRPd25Qcm9wZXJ0eVNsb3REZWxlZwogICAgIHJldHVybiB0cnVlOwogfQogCi1ib29s
IEpTTG9jYXRpb246OmdldE93blByb3BlcnR5RGVzY3JpcHRvckRlbGVnYXRlKEV4ZWNTdGF0ZSog
ZXhlYywgY29uc3QgSWRlbnRpZmllciYgcHJvcGVydHlOYW1lLCBQcm9wZXJ0eURlc2NyaXB0b3Im
IGRlc2NyaXB0b3IpCitib29sIEpTTG9jYXRpb246OmdldE93blByb3BlcnR5RGVzY3JpcHRvckRl
bGVnYXRlKEV4ZWNTdGF0ZSogZXhlYywgUHJvcGVydHlOYW1lIHByb3BlcnR5TmFtZSwgUHJvcGVy
dHlEZXNjcmlwdG9yJiBkZXNjcmlwdG9yKQogewogICAgIEZyYW1lKiBmcmFtZSA9IGltcGwoKS0+
ZnJhbWUoKTsKICAgICBpZiAoIWZyYW1lKSB7CkBAIC0xMjUsNyArMTI1LDcgQEAgYm9vbCBKU0xv
Y2F0aW9uOjpnZXRPd25Qcm9wZXJ0eURlc2NyaXB0bwogICAgIHJldHVybiB0cnVlOwogfQogCi1i
b29sIEpTTG9jYXRpb246OnB1dERlbGVnYXRlKEV4ZWNTdGF0ZSogZXhlYywgY29uc3QgSWRlbnRp
ZmllciYgcHJvcGVydHlOYW1lLCBKU1ZhbHVlIHZhbHVlLCBQdXRQcm9wZXJ0eVNsb3QmIHNsb3Qp
Citib29sIEpTTG9jYXRpb246OnB1dERlbGVnYXRlKEV4ZWNTdGF0ZSogZXhlYywgUHJvcGVydHlO
YW1lIHByb3BlcnR5TmFtZSwgSlNWYWx1ZSB2YWx1ZSwgUHV0UHJvcGVydHlTbG90JiBzbG90KQog
ewogICAgIEZyYW1lKiBmcmFtZSA9IGltcGwoKS0+ZnJhbWUoKTsKICAgICBpZiAoIWZyYW1lKQpA
QCAtMTUyLDcgKzE1Miw3IEBAIGJvb2wgSlNMb2NhdGlvbjo6cHV0RGVsZWdhdGUoRXhlY1N0YXRl
KiAKICAgICByZXR1cm4gZmFsc2U7CiB9CiAKLWJvb2wgSlNMb2NhdGlvbjo6ZGVsZXRlUHJvcGVy
dHkoSlNDZWxsKiBjZWxsLCBFeGVjU3RhdGUqIGV4ZWMsIGNvbnN0IElkZW50aWZpZXImIHByb3Bl
cnR5TmFtZSkKK2Jvb2wgSlNMb2NhdGlvbjo6ZGVsZXRlUHJvcGVydHkoSlNDZWxsKiBjZWxsLCBF
eGVjU3RhdGUqIGV4ZWMsIFByb3BlcnR5TmFtZSBwcm9wZXJ0eU5hbWUpCiB7CiAgICAgSlNMb2Nh
dGlvbiogdGhpc09iamVjdCA9IGpzQ2FzdDxKU0xvY2F0aW9uKj4oY2VsbCk7CiAgICAgLy8gT25s
eSBhbGxvdyBkZWxldGluZyBieSBmcmFtZXMgaW4gdGhlIHNhbWUgb3JpZ2luLgpAQCAtMTcwLDcg
KzE3MCw3IEBAIHZvaWQgSlNMb2NhdGlvbjo6Z2V0T3duUHJvcGVydHlOYW1lcyhKU08KICAgICBC
YXNlOjpnZXRPd25Qcm9wZXJ0eU5hbWVzKHRoaXNPYmplY3QsIGV4ZWMsIHByb3BlcnR5TmFtZXMs
IG1vZGUpOwogfQogCi1ib29sIEpTTG9jYXRpb246OmRlZmluZU93blByb3BlcnR5KEpTT2JqZWN0
KiBvYmplY3QsIEV4ZWNTdGF0ZSogZXhlYywgY29uc3QgSWRlbnRpZmllciYgcHJvcGVydHlOYW1l
LCBQcm9wZXJ0eURlc2NyaXB0b3ImIGRlc2NyaXB0b3IsIGJvb2wgdGhyb3dFeGNlcHRpb24pCiti
b29sIEpTTG9jYXRpb246OmRlZmluZU93blByb3BlcnR5KEpTT2JqZWN0KiBvYmplY3QsIEV4ZWNT
dGF0ZSogZXhlYywgUHJvcGVydHlOYW1lIHByb3BlcnR5TmFtZSwgUHJvcGVydHlEZXNjcmlwdG9y
JiBkZXNjcmlwdG9yLCBib29sIHRocm93RXhjZXB0aW9uKQogewogICAgIGlmIChkZXNjcmlwdG9y
LmlzQWNjZXNzb3JEZXNjcmlwdG9yKCkgJiYgKHByb3BlcnR5TmFtZSA9PSBleGVjLT5wcm9wZXJ0
eU5hbWVzKCkudG9TdHJpbmcgfHwgcHJvcGVydHlOYW1lID09IGV4ZWMtPnByb3BlcnR5TmFtZXMo
KS52YWx1ZU9mKSkKICAgICAgICAgcmV0dXJuIGZhbHNlOwpAQCAtMjc2LDEyICsyNzYsMTIgQEAg
SlNWYWx1ZSBKU0xvY2F0aW9uOjp0b1N0cmluZ0Z1bmN0aW9uKEV4ZQogICAgIHJldHVybiBqc1N0
cmluZyhleGVjLCBpbXBsKCktPnRvU3RyaW5nKCkpOwogfQogCi1ib29sIEpTTG9jYXRpb25Qcm90
b3R5cGU6OnB1dERlbGVnYXRlKEV4ZWNTdGF0ZSogZXhlYywgY29uc3QgSWRlbnRpZmllciYgcHJv
cGVydHlOYW1lLCBKU1ZhbHVlLCBQdXRQcm9wZXJ0eVNsb3QmKQorYm9vbCBKU0xvY2F0aW9uUHJv
dG90eXBlOjpwdXREZWxlZ2F0ZShFeGVjU3RhdGUqIGV4ZWMsIFByb3BlcnR5TmFtZSBwcm9wZXJ0
eU5hbWUsIEpTVmFsdWUsIFB1dFByb3BlcnR5U2xvdCYpCiB7CiAgICAgcmV0dXJuIChwcm9wZXJ0
eU5hbWUgPT0gZXhlYy0+cHJvcGVydHlOYW1lcygpLnRvU3RyaW5nIHx8IHByb3BlcnR5TmFtZSA9
PSBleGVjLT5wcm9wZXJ0eU5hbWVzKCkudmFsdWVPZik7CiB9CiAKLWJvb2wgSlNMb2NhdGlvblBy
b3RvdHlwZTo6ZGVmaW5lT3duUHJvcGVydHkoSlNPYmplY3QqIG9iamVjdCwgRXhlY1N0YXRlKiBl
eGVjLCBjb25zdCBJZGVudGlmaWVyJiBwcm9wZXJ0eU5hbWUsIFByb3BlcnR5RGVzY3JpcHRvciYg
ZGVzY3JpcHRvciwgYm9vbCB0aHJvd0V4Y2VwdGlvbikKK2Jvb2wgSlNMb2NhdGlvblByb3RvdHlw
ZTo6ZGVmaW5lT3duUHJvcGVydHkoSlNPYmplY3QqIG9iamVjdCwgRXhlY1N0YXRlKiBleGVjLCBQ
cm9wZXJ0eU5hbWUgcHJvcGVydHlOYW1lLCBQcm9wZXJ0eURlc2NyaXB0b3ImIGRlc2NyaXB0b3Is
IGJvb2wgdGhyb3dFeGNlcHRpb24pCiB7CiAgICAgaWYgKGRlc2NyaXB0b3IuaXNBY2Nlc3NvckRl
c2NyaXB0b3IoKSAmJiAocHJvcGVydHlOYW1lID09IGV4ZWMtPnByb3BlcnR5TmFtZXMoKS50b1N0
cmluZyB8fCBwcm9wZXJ0eU5hbWUgPT0gZXhlYy0+cHJvcGVydHlOYW1lcygpLnZhbHVlT2YpKQog
ICAgICAgICByZXR1cm4gZmFsc2U7CkluZGV4OiBTb3VyY2UvV2ViQ29yZS9iaW5kaW5ncy9qcy9K
U05hbWVkTm9kZU1hcEN1c3RvbS5jcHAKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL1dlYkNvcmUvYmlu
ZGluZ3MvanMvSlNOYW1lZE5vZGVNYXBDdXN0b20uY3BwCShyZXZpc2lvbiAxMTY2NjcpCisrKyBT
b3VyY2UvV2ViQ29yZS9iaW5kaW5ncy9qcy9KU05hbWVkTm9kZU1hcEN1c3RvbS5jcHAJKHdvcmtp
bmcgY29weSkKQEAgLTM1LDE1ICszNSwxNSBAQCB1c2luZyBuYW1lc3BhY2UgSlNDOwogCiBuYW1l
c3BhY2UgV2ViQ29yZSB7CiAKLWJvb2wgSlNOYW1lZE5vZGVNYXA6OmNhbkdldEl0ZW1zRm9yTmFt
ZShFeGVjU3RhdGUqLCBOYW1lZE5vZGVNYXAqIGltcGwsIGNvbnN0IElkZW50aWZpZXImIHByb3Bl
cnR5TmFtZSkKK2Jvb2wgSlNOYW1lZE5vZGVNYXA6OmNhbkdldEl0ZW1zRm9yTmFtZShFeGVjU3Rh
dGUqLCBOYW1lZE5vZGVNYXAqIGltcGwsIFByb3BlcnR5TmFtZSBwcm9wZXJ0eU5hbWUpCiB7Ci0g
ICAgcmV0dXJuIGltcGwtPmdldE5hbWVkSXRlbShpZGVudGlmaWVyVG9TdHJpbmcocHJvcGVydHlO
YW1lKSk7CisgICAgcmV0dXJuIGltcGwtPmdldE5hbWVkSXRlbShwcm9wZXJ0eU5hbWVUb1N0cmlu
Zyhwcm9wZXJ0eU5hbWUpKTsKIH0KIAotSlNWYWx1ZSBKU05hbWVkTm9kZU1hcDo6bmFtZUdldHRl
cihFeGVjU3RhdGUqIGV4ZWMsIEpTVmFsdWUgc2xvdEJhc2UsIGNvbnN0IElkZW50aWZpZXImIHBy
b3BlcnR5TmFtZSkKK0pTVmFsdWUgSlNOYW1lZE5vZGVNYXA6Om5hbWVHZXR0ZXIoRXhlY1N0YXRl
KiBleGVjLCBKU1ZhbHVlIHNsb3RCYXNlLCBQcm9wZXJ0eU5hbWUgcHJvcGVydHlOYW1lKQogewog
ICAgIEpTTmFtZWROb2RlTWFwKiB0aGlzT2JqID0ganNDYXN0PEpTTmFtZWROb2RlTWFwKj4oYXNP
YmplY3Qoc2xvdEJhc2UpKTsKLSAgICByZXR1cm4gdG9KUyhleGVjLCB0aGlzT2JqLT5nbG9iYWxP
YmplY3QoKSwgdGhpc09iai0+aW1wbCgpLT5nZXROYW1lZEl0ZW0oaWRlbnRpZmllclRvU3RyaW5n
KHByb3BlcnR5TmFtZSkpKTsKKyAgICByZXR1cm4gdG9KUyhleGVjLCB0aGlzT2JqLT5nbG9iYWxP
YmplY3QoKSwgdGhpc09iai0+aW1wbCgpLT5nZXROYW1lZEl0ZW0ocHJvcGVydHlOYW1lVG9TdHJp
bmcocHJvcGVydHlOYW1lKSkpOwogfQogCiB2b2lkIEpTTmFtZWROb2RlTWFwOjp2aXNpdENoaWxk
cmVuKEpTQ2VsbCogY2VsbCwgU2xvdFZpc2l0b3ImIHZpc2l0b3IpCkluZGV4OiBTb3VyY2UvV2Vi
Q29yZS9iaW5kaW5ncy9qcy9KU05vZGVMaXN0Q3VzdG9tLmNwcAo9PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3Vy
Y2UvV2ViQ29yZS9iaW5kaW5ncy9qcy9KU05vZGVMaXN0Q3VzdG9tLmNwcAkocmV2aXNpb24gMTE2
NjY3KQorKysgU291cmNlL1dlYkNvcmUvYmluZGluZ3MvanMvSlNOb2RlTGlzdEN1c3RvbS5jcHAJ
KHdvcmtpbmcgY29weSkKQEAgLTQ2LDE1ICs0NiwxNSBAQCBib29sIEpTTm9kZUxpc3RPd25lcjo6
aXNSZWFjaGFibGVGcm9tT3BhCiAgICAgcmV0dXJuIHZpc2l0b3IuY29udGFpbnNPcGFxdWVSb290
KHJvb3Qoc3RhdGljX2Nhc3Q8RHluYW1pY05vZGVMaXN0Kj4oanNOb2RlTGlzdC0+aW1wbCgpKS0+
bm9kZSgpKSk7CiB9CiAKLWJvb2wgSlNOb2RlTGlzdDo6Y2FuR2V0SXRlbXNGb3JOYW1lKEV4ZWNT
dGF0ZSosIE5vZGVMaXN0KiBpbXBsLCBjb25zdCBJZGVudGlmaWVyJiBwcm9wZXJ0eU5hbWUpCiti
b29sIEpTTm9kZUxpc3Q6OmNhbkdldEl0ZW1zRm9yTmFtZShFeGVjU3RhdGUqLCBOb2RlTGlzdCog
aW1wbCwgUHJvcGVydHlOYW1lIHByb3BlcnR5TmFtZSkKIHsKLSAgICByZXR1cm4gaW1wbC0+aXRl
bVdpdGhOYW1lKGlkZW50aWZpZXJUb0F0b21pY1N0cmluZyhwcm9wZXJ0eU5hbWUpKTsKKyAgICBy
ZXR1cm4gaW1wbC0+aXRlbVdpdGhOYW1lKHByb3BlcnR5TmFtZVRvQXRvbWljU3RyaW5nKHByb3Bl
cnR5TmFtZSkpOwogfQogCi1KU1ZhbHVlIEpTTm9kZUxpc3Q6Om5hbWVHZXR0ZXIoRXhlY1N0YXRl
KiBleGVjLCBKU1ZhbHVlIHNsb3RCYXNlLCBjb25zdCBJZGVudGlmaWVyJiBwcm9wZXJ0eU5hbWUp
CitKU1ZhbHVlIEpTTm9kZUxpc3Q6Om5hbWVHZXR0ZXIoRXhlY1N0YXRlKiBleGVjLCBKU1ZhbHVl
IHNsb3RCYXNlLCBQcm9wZXJ0eU5hbWUgcHJvcGVydHlOYW1lKQogewogICAgIEpTTm9kZUxpc3Qq
IHRoaXNPYmogPSBqc0Nhc3Q8SlNOb2RlTGlzdCo+KGFzT2JqZWN0KHNsb3RCYXNlKSk7Ci0gICAg
cmV0dXJuIHRvSlMoZXhlYywgdGhpc09iai0+Z2xvYmFsT2JqZWN0KCksIHRoaXNPYmotPmltcGwo
KS0+aXRlbVdpdGhOYW1lKGlkZW50aWZpZXJUb0F0b21pY1N0cmluZyhwcm9wZXJ0eU5hbWUpKSk7
CisgICAgcmV0dXJuIHRvSlMoZXhlYywgdGhpc09iai0+Z2xvYmFsT2JqZWN0KCksIHRoaXNPYmot
PmltcGwoKS0+aXRlbVdpdGhOYW1lKHByb3BlcnR5TmFtZVRvQXRvbWljU3RyaW5nKHByb3BlcnR5
TmFtZSkpKTsKIH0KIAogfSAvLyBuYW1lc3BhY2UgV2ViQ29yZQpJbmRleDogU291cmNlL1dlYkNv
cmUvYmluZGluZ3MvanMvSlNQbHVnaW5FbGVtZW50RnVuY3Rpb25zLmNwcAo9PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0t
LSBTb3VyY2UvV2ViQ29yZS9iaW5kaW5ncy9qcy9KU1BsdWdpbkVsZW1lbnRGdW5jdGlvbnMuY3Bw
CShyZXZpc2lvbiAxMTY2NjcpCisrKyBTb3VyY2UvV2ViQ29yZS9iaW5kaW5ncy9qcy9KU1BsdWdp
bkVsZW1lbnRGdW5jdGlvbnMuY3BwCSh3b3JraW5nIGNvcHkpCkBAIC0xMDAsNyArMTAwLDcgQEAg
SlNPYmplY3QqIHBsdWdpblNjcmlwdE9iamVjdChFeGVjU3RhdGUqIAogICAgIHJldHVybiBpbnN0
YW5jZS0+Y3JlYXRlUnVudGltZU9iamVjdChleGVjKTsKIH0KICAgICAKLUpTVmFsdWUgcnVudGlt
ZU9iamVjdFByb3BlcnR5R2V0dGVyKEV4ZWNTdGF0ZSogZXhlYywgSlNWYWx1ZSBzbG90QmFzZSwg
Y29uc3QgSWRlbnRpZmllciYgcHJvcGVydHlOYW1lKQorSlNWYWx1ZSBydW50aW1lT2JqZWN0UHJv
cGVydHlHZXR0ZXIoRXhlY1N0YXRlKiBleGVjLCBKU1ZhbHVlIHNsb3RCYXNlLCBQcm9wZXJ0eU5h
bWUgcHJvcGVydHlOYW1lKQogewogICAgIEpTSFRNTEVsZW1lbnQqIGVsZW1lbnQgPSBqc0Nhc3Q8
SlNIVE1MRWxlbWVudCo+KGFzT2JqZWN0KHNsb3RCYXNlKSk7CiAgICAgSlNPYmplY3QqIHNjcmlw
dE9iamVjdCA9IHBsdWdpblNjcmlwdE9iamVjdChleGVjLCBlbGVtZW50KTsKQEAgLTExMCw3ICsx
MTAsNyBAQCBKU1ZhbHVlIHJ1bnRpbWVPYmplY3RQcm9wZXJ0eUdldHRlcihFeGVjCiAgICAgcmV0
dXJuIHNjcmlwdE9iamVjdC0+Z2V0KGV4ZWMsIHByb3BlcnR5TmFtZSk7CiB9CiAKLWJvb2wgcnVu
dGltZU9iamVjdEN1c3RvbUdldE93blByb3BlcnR5U2xvdChFeGVjU3RhdGUqIGV4ZWMsIGNvbnN0
IElkZW50aWZpZXImIHByb3BlcnR5TmFtZSwgUHJvcGVydHlTbG90JiBzbG90LCBKU0hUTUxFbGVt
ZW50KiBlbGVtZW50KQorYm9vbCBydW50aW1lT2JqZWN0Q3VzdG9tR2V0T3duUHJvcGVydHlTbG90
KEV4ZWNTdGF0ZSogZXhlYywgUHJvcGVydHlOYW1lIHByb3BlcnR5TmFtZSwgUHJvcGVydHlTbG90
JiBzbG90LCBKU0hUTUxFbGVtZW50KiBlbGVtZW50KQogewogICAgIEpTT2JqZWN0KiBzY3JpcHRP
YmplY3QgPSBwbHVnaW5TY3JpcHRPYmplY3QoZXhlYywgZWxlbWVudCk7CiAgICAgaWYgKCFzY3Jp
cHRPYmplY3QpCkBAIC0xMjIsNyArMTIyLDcgQEAgYm9vbCBydW50aW1lT2JqZWN0Q3VzdG9tR2V0
T3duUHJvcGVydHlTbAogICAgIHJldHVybiB0cnVlOwogfQogCi1ib29sIHJ1bnRpbWVPYmplY3RD
dXN0b21HZXRPd25Qcm9wZXJ0eURlc2NyaXB0b3IoRXhlY1N0YXRlKiBleGVjLCBjb25zdCBJZGVu
dGlmaWVyJiBwcm9wZXJ0eU5hbWUsIFByb3BlcnR5RGVzY3JpcHRvciYgZGVzY3JpcHRvciwgSlNI
VE1MRWxlbWVudCogZWxlbWVudCkKK2Jvb2wgcnVudGltZU9iamVjdEN1c3RvbUdldE93blByb3Bl
cnR5RGVzY3JpcHRvcihFeGVjU3RhdGUqIGV4ZWMsIFByb3BlcnR5TmFtZSBwcm9wZXJ0eU5hbWUs
IFByb3BlcnR5RGVzY3JpcHRvciYgZGVzY3JpcHRvciwgSlNIVE1MRWxlbWVudCogZWxlbWVudCkK
IHsKICAgICBKU09iamVjdCogc2NyaXB0T2JqZWN0ID0gcGx1Z2luU2NyaXB0T2JqZWN0KGV4ZWMs
IGVsZW1lbnQpOwogICAgIGlmICghc2NyaXB0T2JqZWN0KQpAQCAtMTM4LDcgKzEzOCw3IEBAIGJv
b2wgcnVudGltZU9iamVjdEN1c3RvbUdldE93blByb3BlcnR5RGUKICAgICByZXR1cm4gdHJ1ZTsK
IH0KIAotYm9vbCBydW50aW1lT2JqZWN0Q3VzdG9tUHV0KEV4ZWNTdGF0ZSogZXhlYywgY29uc3Qg
SWRlbnRpZmllciYgcHJvcGVydHlOYW1lLCBKU1ZhbHVlIHZhbHVlLCBKU0hUTUxFbGVtZW50KiBl
bGVtZW50LCBQdXRQcm9wZXJ0eVNsb3QmIHNsb3QpCitib29sIHJ1bnRpbWVPYmplY3RDdXN0b21Q
dXQoRXhlY1N0YXRlKiBleGVjLCBQcm9wZXJ0eU5hbWUgcHJvcGVydHlOYW1lLCBKU1ZhbHVlIHZh
bHVlLCBKU0hUTUxFbGVtZW50KiBlbGVtZW50LCBQdXRQcm9wZXJ0eVNsb3QmIHNsb3QpCiB7CiAg
ICAgSlNPYmplY3QqIHNjcmlwdE9iamVjdCA9IHBsdWdpblNjcmlwdE9iamVjdChleGVjLCBlbGVt
ZW50KTsKICAgICBpZiAoIXNjcmlwdE9iamVjdCkKSW5kZXg6IFNvdXJjZS9XZWJDb3JlL2JpbmRp
bmdzL2pzL0pTUGx1Z2luRWxlbWVudEZ1bmN0aW9ucy5oCj09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9X
ZWJDb3JlL2JpbmRpbmdzL2pzL0pTUGx1Z2luRWxlbWVudEZ1bmN0aW9ucy5oCShyZXZpc2lvbiAx
MTY2NjcpCisrKyBTb3VyY2UvV2ViQ29yZS9iaW5kaW5ncy9qcy9KU1BsdWdpbkVsZW1lbnRGdW5j
dGlvbnMuaAkod29ya2luZyBjb3B5KQpAQCAtMzgsMTAgKzM4LDEwIEBAIG5hbWVzcGFjZSBXZWJD
b3JlIHsKICAgICBKU0M6OkJpbmRpbmdzOjpJbnN0YW5jZSogcGx1Z2luSW5zdGFuY2UoTm9kZSop
OwogICAgIEpTQzo6SlNPYmplY3QqIHBsdWdpblNjcmlwdE9iamVjdChKU0M6OkV4ZWNTdGF0ZSog
ZXhlYywgSlNIVE1MRWxlbWVudCoganNIVE1MRWxlbWVudCk7CiAKLSAgICBKU0M6OkpTVmFsdWUg
cnVudGltZU9iamVjdFByb3BlcnR5R2V0dGVyKEpTQzo6RXhlY1N0YXRlKiwgSlNDOjpKU1ZhbHVl
LCBjb25zdCBKU0M6OklkZW50aWZpZXImKTsKLSAgICBib29sIHJ1bnRpbWVPYmplY3RDdXN0b21H
ZXRPd25Qcm9wZXJ0eVNsb3QoSlNDOjpFeGVjU3RhdGUqLCBjb25zdCBKU0M6OklkZW50aWZpZXIm
LCBKU0M6OlByb3BlcnR5U2xvdCYsIEpTSFRNTEVsZW1lbnQqKTsKLSAgICBib29sIHJ1bnRpbWVP
YmplY3RDdXN0b21HZXRPd25Qcm9wZXJ0eURlc2NyaXB0b3IoSlNDOjpFeGVjU3RhdGUqLCBjb25z
dCBKU0M6OklkZW50aWZpZXImLCBKU0M6OlByb3BlcnR5RGVzY3JpcHRvciYsIEpTSFRNTEVsZW1l
bnQqKTsKLSAgICBib29sIHJ1bnRpbWVPYmplY3RDdXN0b21QdXQoSlNDOjpFeGVjU3RhdGUqLCBj
b25zdCBKU0M6OklkZW50aWZpZXImLCBKU0M6OkpTVmFsdWUsIEpTSFRNTEVsZW1lbnQqLCBKU0M6
OlB1dFByb3BlcnR5U2xvdCYpOworICAgIEpTQzo6SlNWYWx1ZSBydW50aW1lT2JqZWN0UHJvcGVy
dHlHZXR0ZXIoSlNDOjpFeGVjU3RhdGUqLCBKU0M6OkpTVmFsdWUsIEpTQzo6UHJvcGVydHlOYW1l
KTsKKyAgICBib29sIHJ1bnRpbWVPYmplY3RDdXN0b21HZXRPd25Qcm9wZXJ0eVNsb3QoSlNDOjpF
eGVjU3RhdGUqLCBKU0M6OlByb3BlcnR5TmFtZSwgSlNDOjpQcm9wZXJ0eVNsb3QmLCBKU0hUTUxF
bGVtZW50Kik7CisgICAgYm9vbCBydW50aW1lT2JqZWN0Q3VzdG9tR2V0T3duUHJvcGVydHlEZXNj
cmlwdG9yKEpTQzo6RXhlY1N0YXRlKiwgSlNDOjpQcm9wZXJ0eU5hbWUsIEpTQzo6UHJvcGVydHlE
ZXNjcmlwdG9yJiwgSlNIVE1MRWxlbWVudCopOworICAgIGJvb2wgcnVudGltZU9iamVjdEN1c3Rv
bVB1dChKU0M6OkV4ZWNTdGF0ZSosIEpTQzo6UHJvcGVydHlOYW1lLCBKU0M6OkpTVmFsdWUsIEpT
SFRNTEVsZW1lbnQqLCBKU0M6OlB1dFByb3BlcnR5U2xvdCYpOwogICAgIEpTQzo6Q2FsbFR5cGUg
cnVudGltZU9iamVjdEdldENhbGxEYXRhKEpTSFRNTEVsZW1lbnQqLCBKU0M6OkNhbGxEYXRhJik7
CiAKIH0gLy8gbmFtZXNwYWNlIFdlYkNvcmUKSW5kZXg6IFNvdXJjZS9XZWJDb3JlL2JpbmRpbmdz
L2pzL0pTU3RvcmFnZUN1c3RvbS5jcHAKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL1dlYkNvcmUvYmlu
ZGluZ3MvanMvSlNTdG9yYWdlQ3VzdG9tLmNwcAkocmV2aXNpb24gMTE2NjY3KQorKysgU291cmNl
L1dlYkNvcmUvYmluZGluZ3MvanMvSlNTdG9yYWdlQ3VzdG9tLmNwcAkod29ya2luZyBjb3B5KQpA
QCAtMzQsMTIgKzM0LDEyIEBAIHVzaW5nIG5hbWVzcGFjZSBKU0M7CiAKIG5hbWVzcGFjZSBXZWJD
b3JlIHsKIAotYm9vbCBKU1N0b3JhZ2U6OmNhbkdldEl0ZW1zRm9yTmFtZShFeGVjU3RhdGUqLCBT
dG9yYWdlKiBpbXBsLCBjb25zdCBJZGVudGlmaWVyJiBwcm9wZXJ0eU5hbWUpCitib29sIEpTU3Rv
cmFnZTo6Y2FuR2V0SXRlbXNGb3JOYW1lKEV4ZWNTdGF0ZSosIFN0b3JhZ2UqIGltcGwsIFByb3Bl
cnR5TmFtZSBwcm9wZXJ0eU5hbWUpCiB7Ci0gICAgcmV0dXJuIGltcGwtPmNvbnRhaW5zKGlkZW50
aWZpZXJUb1N0cmluZyhwcm9wZXJ0eU5hbWUpKTsKKyAgICByZXR1cm4gaW1wbC0+Y29udGFpbnMo
cHJvcGVydHlOYW1lVG9TdHJpbmcocHJvcGVydHlOYW1lKSk7CiB9CiAKLUpTVmFsdWUgSlNTdG9y
YWdlOjpuYW1lR2V0dGVyKEV4ZWNTdGF0ZSogZXhlYywgSlNWYWx1ZSBzbG90QmFzZSwgY29uc3Qg
SWRlbnRpZmllciYgcHJvcGVydHlOYW1lKQorSlNWYWx1ZSBKU1N0b3JhZ2U6Om5hbWVHZXR0ZXIo
RXhlY1N0YXRlKiBleGVjLCBKU1ZhbHVlIHNsb3RCYXNlLCBQcm9wZXJ0eU5hbWUgcHJvcGVydHlO
YW1lKQogewogICAgIEpTU3RvcmFnZSogdGhpc09iaiA9IGpzQ2FzdDxKU1N0b3JhZ2UqPihhc09i
amVjdChzbG90QmFzZSkpOwogICAgICAgICAKQEAgLTQ3LDEwICs0NywxMCBAQCBKU1ZhbHVlIEpT
U3RvcmFnZTo6bmFtZUdldHRlcihFeGVjU3RhdGUqCiAgICAgaWYgKHByb3RvdHlwZS5pc09iamVj
dCgpICYmIGFzT2JqZWN0KHByb3RvdHlwZSktPmhhc1Byb3BlcnR5KGV4ZWMsIHByb3BlcnR5TmFt
ZSkpCiAgICAgICAgIHJldHVybiBhc09iamVjdChwcm90b3R5cGUpLT5nZXQoZXhlYywgcHJvcGVy
dHlOYW1lKTsKICAKLSAgICByZXR1cm4ganNTdHJpbmdPck51bGwoZXhlYywgdGhpc09iai0+aW1w
bCgpLT5nZXRJdGVtKGlkZW50aWZpZXJUb1N0cmluZyhwcm9wZXJ0eU5hbWUpKSk7CisgICAgcmV0
dXJuIGpzU3RyaW5nT3JOdWxsKGV4ZWMsIHRoaXNPYmotPmltcGwoKS0+Z2V0SXRlbShwcm9wZXJ0
eU5hbWVUb1N0cmluZyhwcm9wZXJ0eU5hbWUpKSk7CiB9CiAKLWJvb2wgSlNTdG9yYWdlOjpkZWxl
dGVQcm9wZXJ0eShKU0NlbGwqIGNlbGwsIEV4ZWNTdGF0ZSogZXhlYywgY29uc3QgSWRlbnRpZmll
ciYgcHJvcGVydHlOYW1lKQorYm9vbCBKU1N0b3JhZ2U6OmRlbGV0ZVByb3BlcnR5KEpTQ2VsbCog
Y2VsbCwgRXhlY1N0YXRlKiBleGVjLCBQcm9wZXJ0eU5hbWUgcHJvcGVydHlOYW1lKQogewogICAg
IEpTU3RvcmFnZSogdGhpc09iamVjdCA9IGpzQ2FzdDxKU1N0b3JhZ2UqPihjZWxsKTsKICAgICAv
LyBPbmx5IHBlcmZvcm0gdGhlIGN1c3RvbSBkZWxldGUgaWYgdGhlIG9iamVjdCBkb2Vzbid0IGhh
dmUgYSBuYXRpdmUgcHJvcGVydHkgYnkgdGhpcyBuYW1lLgpAQCAtNjQsNyArNjQsNyBAQCBib29s
IEpTU3RvcmFnZTo6ZGVsZXRlUHJvcGVydHkoSlNDZWxsKiBjCiAgICAgaWYgKHByb3RvdHlwZS5p
c09iamVjdCgpICYmIGFzT2JqZWN0KHByb3RvdHlwZSktPmhhc1Byb3BlcnR5KGV4ZWMsIHByb3Bl
cnR5TmFtZSkpCiAgICAgICAgIHJldHVybiBmYWxzZTsKIAotICAgIHRoaXNPYmplY3QtPm1faW1w
bC0+cmVtb3ZlSXRlbShpZGVudGlmaWVyVG9TdHJpbmcocHJvcGVydHlOYW1lKSk7CisgICAgdGhp
c09iamVjdC0+bV9pbXBsLT5yZW1vdmVJdGVtKHByb3BlcnR5TmFtZVRvU3RyaW5nKHByb3BlcnR5
TmFtZSkpOwogICAgIHJldHVybiB0cnVlOwogfQogCkBAIC03OCw3ICs3OCw3IEBAIHZvaWQgSlNT
dG9yYWdlOjpnZXRPd25Qcm9wZXJ0eU5hbWVzKEpTT2IKICAgICBCYXNlOjpnZXRPd25Qcm9wZXJ0
eU5hbWVzKHRoaXNPYmplY3QsIGV4ZWMsIHByb3BlcnR5TmFtZXMsIG1vZGUpOwogfQogCi1ib29s
IEpTU3RvcmFnZTo6cHV0RGVsZWdhdGUoRXhlY1N0YXRlKiBleGVjLCBjb25zdCBJZGVudGlmaWVy
JiBwcm9wZXJ0eU5hbWUsIEpTVmFsdWUgdmFsdWUsIFB1dFByb3BlcnR5U2xvdCYpCitib29sIEpT
U3RvcmFnZTo6cHV0RGVsZWdhdGUoRXhlY1N0YXRlKiBleGVjLCBQcm9wZXJ0eU5hbWUgcHJvcGVy
dHlOYW1lLCBKU1ZhbHVlIHZhbHVlLCBQdXRQcm9wZXJ0eVNsb3QmKQogewogICAgIC8vIE9ubHkg
cGVyZm9ybSB0aGUgY3VzdG9tIHB1dCBpZiB0aGUgb2JqZWN0IGRvZXNuJ3QgaGF2ZSBhIG5hdGl2
ZSBwcm9wZXJ0eSBieSB0aGlzIG5hbWUuCiAgICAgLy8gU2luY2UgaGFzUHJvcGVydHkoKSB3b3Vs
ZCBlbmQgdXAgY2FsbGluZyBjYW5HZXRJdGVtc0Zvck5hbWUoKSBhbmQgYmUgZm9vbGVkLCB3ZSBu
ZWVkIHRvIGNoZWNrCkBAIC05Niw3ICs5Niw3IEBAIGJvb2wgSlNTdG9yYWdlOjpwdXREZWxlZ2F0
ZShFeGVjU3RhdGUqIGUKICAgICAgICAgcmV0dXJuIHRydWU7CiAgICAgCiAgICAgRXhjZXB0aW9u
Q29kZSBlYyA9IDA7Ci0gICAgaW1wbCgpLT5zZXRJdGVtKGlkZW50aWZpZXJUb1N0cmluZyhwcm9w
ZXJ0eU5hbWUpLCBzdHJpbmdWYWx1ZSwgZWMpOworICAgIGltcGwoKS0+c2V0SXRlbShwcm9wZXJ0
eU5hbWVUb1N0cmluZyhwcm9wZXJ0eU5hbWUpLCBzdHJpbmdWYWx1ZSwgZWMpOwogICAgIHNldERP
TUV4Y2VwdGlvbihleGVjLCBlYyk7CiAKICAgICByZXR1cm4gdHJ1ZTsKSW5kZXg6IFNvdXJjZS9X
ZWJDb3JlL2JpbmRpbmdzL2pzL0pTU3R5bGVTaGVldExpc3RDdXN0b20uY3BwCj09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0K
LS0tIFNvdXJjZS9XZWJDb3JlL2JpbmRpbmdzL2pzL0pTU3R5bGVTaGVldExpc3RDdXN0b20uY3Bw
CShyZXZpc2lvbiAxMTY2NjcpCisrKyBTb3VyY2UvV2ViQ29yZS9iaW5kaW5ncy9qcy9KU1N0eWxl
U2hlZXRMaXN0Q3VzdG9tLmNwcAkod29ya2luZyBjb3B5KQpAQCAtMzUsMTUgKzM1LDE1IEBAIHVz
aW5nIG5hbWVzcGFjZSBKU0M7CiAKIG5hbWVzcGFjZSBXZWJDb3JlIHsKIAotYm9vbCBKU1N0eWxl
U2hlZXRMaXN0OjpjYW5HZXRJdGVtc0Zvck5hbWUoRXhlY1N0YXRlKiwgU3R5bGVTaGVldExpc3Qq
IHN0eWxlU2hlZXRMaXN0LCBjb25zdCBJZGVudGlmaWVyJiBwcm9wZXJ0eU5hbWUpCitib29sIEpT
U3R5bGVTaGVldExpc3Q6OmNhbkdldEl0ZW1zRm9yTmFtZShFeGVjU3RhdGUqLCBTdHlsZVNoZWV0
TGlzdCogc3R5bGVTaGVldExpc3QsIFByb3BlcnR5TmFtZSBwcm9wZXJ0eU5hbWUpCiB7Ci0gICAg
cmV0dXJuIHN0eWxlU2hlZXRMaXN0LT5nZXROYW1lZEl0ZW0oaWRlbnRpZmllclRvU3RyaW5nKHBy
b3BlcnR5TmFtZSkpOworICAgIHJldHVybiBzdHlsZVNoZWV0TGlzdC0+Z2V0TmFtZWRJdGVtKHBy
b3BlcnR5TmFtZVRvU3RyaW5nKHByb3BlcnR5TmFtZSkpOwogfQogCi1KU1ZhbHVlIEpTU3R5bGVT
aGVldExpc3Q6Om5hbWVHZXR0ZXIoRXhlY1N0YXRlKiBleGVjLCBKU1ZhbHVlIHNsb3RCYXNlLCBj
b25zdCBJZGVudGlmaWVyJiBwcm9wZXJ0eU5hbWUpCitKU1ZhbHVlIEpTU3R5bGVTaGVldExpc3Q6
Om5hbWVHZXR0ZXIoRXhlY1N0YXRlKiBleGVjLCBKU1ZhbHVlIHNsb3RCYXNlLCBQcm9wZXJ0eU5h
bWUgcHJvcGVydHlOYW1lKQogewogICAgIEpTU3R5bGVTaGVldExpc3QqIHRoaXNPYmogPSBqc0Nh
c3Q8SlNTdHlsZVNoZWV0TGlzdCo+KGFzT2JqZWN0KHNsb3RCYXNlKSk7Ci0gICAgSFRNTFN0eWxl
RWxlbWVudCogZWxlbWVudCA9IHRoaXNPYmotPmltcGwoKS0+Z2V0TmFtZWRJdGVtKGlkZW50aWZp
ZXJUb1N0cmluZyhwcm9wZXJ0eU5hbWUpKTsKKyAgICBIVE1MU3R5bGVFbGVtZW50KiBlbGVtZW50
ID0gdGhpc09iai0+aW1wbCgpLT5nZXROYW1lZEl0ZW0ocHJvcGVydHlOYW1lVG9TdHJpbmcocHJv
cGVydHlOYW1lKSk7CiAgICAgQVNTRVJUKGVsZW1lbnQpOwogICAgIHJldHVybiB0b0pTKGV4ZWMs
IHRoaXNPYmotPmdsb2JhbE9iamVjdCgpLCBlbGVtZW50LT5zaGVldCgpKTsKIH0KSW5kZXg6IFNv
dXJjZS9XZWJDb3JlL2JpbmRpbmdzL2pzL0pTV29ya2VyQ29udGV4dEN1c3RvbS5jcHAKPT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PQotLS0gU291cmNlL1dlYkNvcmUvYmluZGluZ3MvanMvSlNXb3JrZXJDb250ZXh0Q3VzdG9t
LmNwcAkocmV2aXNpb24gMTE2NjY3KQorKysgU291cmNlL1dlYkNvcmUvYmluZGluZ3MvanMvSlNX
b3JrZXJDb250ZXh0Q3VzdG9tLmNwcAkod29ya2luZyBjb3B5KQpAQCAtNjksNyArNjksNyBAQCB2
b2lkIEpTV29ya2VyQ29udGV4dDo6dmlzaXRDaGlsZHJlbihKU0NlCiAgICAgdGhpc09iamVjdC0+
aW1wbCgpLT52aXNpdEpTRXZlbnRMaXN0ZW5lcnModmlzaXRvcik7CiB9CiAKLWJvb2wgSlNXb3Jr
ZXJDb250ZXh0OjpnZXRPd25Qcm9wZXJ0eVNsb3REZWxlZ2F0ZShFeGVjU3RhdGUqIGV4ZWMsIGNv
bnN0IElkZW50aWZpZXImIHByb3BlcnR5TmFtZSwgUHJvcGVydHlTbG90JiBzbG90KQorYm9vbCBK
U1dvcmtlckNvbnRleHQ6OmdldE93blByb3BlcnR5U2xvdERlbGVnYXRlKEV4ZWNTdGF0ZSogZXhl
YywgUHJvcGVydHlOYW1lIHByb3BlcnR5TmFtZSwgUHJvcGVydHlTbG90JiBzbG90KQogewogICAg
IC8vIExvb2sgZm9yIG92ZXJyaWRlcyBiZWZvcmUgbG9va2luZyBhdCBhbnkgb2Ygb3VyIG93biBw
cm9wZXJ0aWVzLgogICAgIGlmIChKU0dsb2JhbE9iamVjdDo6Z2V0T3duUHJvcGVydHlTbG90KHRo
aXMsIGV4ZWMsIHByb3BlcnR5TmFtZSwgc2xvdCkpCkBAIC03Nyw3ICs3Nyw3IEBAIGJvb2wgSlNX
b3JrZXJDb250ZXh0OjpnZXRPd25Qcm9wZXJ0eVNsb3QKICAgICByZXR1cm4gZmFsc2U7CiB9CiAK
LWJvb2wgSlNXb3JrZXJDb250ZXh0OjpnZXRPd25Qcm9wZXJ0eURlc2NyaXB0b3JEZWxlZ2F0ZShF
eGVjU3RhdGUqIGV4ZWMsIGNvbnN0IElkZW50aWZpZXImIHByb3BlcnR5TmFtZSwgUHJvcGVydHlE
ZXNjcmlwdG9yJiBkZXNjcmlwdG9yKQorYm9vbCBKU1dvcmtlckNvbnRleHQ6OmdldE93blByb3Bl
cnR5RGVzY3JpcHRvckRlbGVnYXRlKEV4ZWNTdGF0ZSogZXhlYywgUHJvcGVydHlOYW1lIHByb3Bl
cnR5TmFtZSwgUHJvcGVydHlEZXNjcmlwdG9yJiBkZXNjcmlwdG9yKQogewogICAgIC8vIExvb2sg
Zm9yIG92ZXJyaWRlcyBiZWZvcmUgbG9va2luZyBhdCBhbnkgb2Ygb3VyIG93biBwcm9wZXJ0aWVz
LgogICAgIGlmIChKU0dsb2JhbE9iamVjdDo6Z2V0T3duUHJvcGVydHlEZXNjcmlwdG9yKHRoaXMs
IGV4ZWMsIHByb3BlcnR5TmFtZSwgZGVzY3JpcHRvcikpCkluZGV4OiBTb3VyY2UvV2ViQ29yZS9i
aW5kaW5ncy9zY3JpcHRzL0NvZGVHZW5lcmF0b3JKUy5wbQo9PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2Uv
V2ViQ29yZS9iaW5kaW5ncy9zY3JpcHRzL0NvZGVHZW5lcmF0b3JKUy5wbQkocmV2aXNpb24gMTE2
NjY3KQorKysgU291cmNlL1dlYkNvcmUvYmluZGluZ3Mvc2NyaXB0cy9Db2RlR2VuZXJhdG9ySlMu
cG0JKHdvcmtpbmcgY29weSkKQEAgLTQxMiwxNSArNDEyLDE0IEBAIHN1YiBHZW5lcmF0ZUdldE93
blByb3BlcnR5U2xvdEJvZHkKICAgICB9CiAKICAgICBpZiAoJGRhdGFOb2RlLT5leHRlbmRlZEF0
dHJpYnV0ZXMtPnsiSW5kZXhlZEdldHRlciJ9IHx8ICRkYXRhTm9kZS0+ZXh0ZW5kZWRBdHRyaWJ1
dGVzLT57Ik51bWVyaWNJbmRleGVkR2V0dGVyIn0pIHsKLSAgICAgICAgcHVzaChAZ2V0T3duUHJv
cGVydHlTbG90SW1wbCwgIiAgICBib29sIG9rO1xuIik7Ci0gICAgICAgIHB1c2goQGdldE93blBy
b3BlcnR5U2xvdEltcGwsICIgICAgdW5zaWduZWQgaW5kZXggPSBwcm9wZXJ0eU5hbWUudG9VSW50
MzIob2spO1xuIik7CisgICAgICAgIHB1c2goQGdldE93blByb3BlcnR5U2xvdEltcGwsICIgICAg
dW5zaWduZWQgaW5kZXggPSBwcm9wZXJ0eU5hbWUuYXNJbmRleCgpO1xuIik7CiAKICAgICAgICAg
IyBJZiB0aGUgaXRlbSBmdW5jdGlvbiByZXR1cm5zIGEgc3RyaW5nIHRoZW4gd2UgbGV0IHRoZSBU
cmVhdFJldHVybmVkTnVsbFN0cmluZ0FzIGhhbmRsZSB0aGUgY2FzZXMKICAgICAgICAgIyB3aGVy
ZSB0aGUgaW5kZXggaXMgb3V0IG9mIHJhbmdlLgogICAgICAgICBpZiAoSW5kZXhHZXR0ZXJSZXR1
cm5zU3RyaW5ncygkaW1wbENsYXNzTmFtZSkpIHsKLSAgICAgICAgICAgIHB1c2goQGdldE93blBy
b3BlcnR5U2xvdEltcGwsICIgICAgaWYgKG9rKSB7XG4iKTsKKyAgICAgICAgICAgIHB1c2goQGdl
dE93blByb3BlcnR5U2xvdEltcGwsICIgICAgaWYgKGluZGV4ICE9IFByb3BlcnR5TmFtZTo6Tm90
QW5JbmRleCkge1xuIik7CiAgICAgICAgIH0gZWxzZSB7Ci0gICAgICAgICAgICBwdXNoKEBnZXRP
d25Qcm9wZXJ0eVNsb3RJbXBsLCAiICAgIGlmIChvayAmJiBpbmRleCA8IHN0YXRpY19jYXN0PCRp
bXBsQ2xhc3NOYW1lKj4odGhpc09iamVjdC0+aW1wbCgpKS0+bGVuZ3RoKCkpIHtcbiIpOworICAg
ICAgICAgICAgcHVzaChAZ2V0T3duUHJvcGVydHlTbG90SW1wbCwgIiAgICBpZiAoaW5kZXggIT0g
UHJvcGVydHlOYW1lOjpOb3RBbkluZGV4ICYmIGluZGV4IDwgc3RhdGljX2Nhc3Q8JGltcGxDbGFz
c05hbWUqPih0aGlzT2JqZWN0LT5pbXBsKCkpLT5sZW5ndGgoKSkge1xuIik7CiAgICAgICAgIH0K
ICAgICAgICAgaWYgKCRkYXRhTm9kZS0+ZXh0ZW5kZWRBdHRyaWJ1dGVzLT57Ik51bWVyaWNJbmRl
eGVkR2V0dGVyIn0pIHsKICAgICAgICAgICAgIHB1c2goQGdldE93blByb3BlcnR5U2xvdEltcGws
ICIgICAgICAgIHNsb3Quc2V0VmFsdWUodGhpc09iamVjdC0+Z2V0QnlJbmRleChleGVjLCBpbmRl
eCkpO1xuIik7CkBAIC01MDYsOSArNTA1LDggQEAgc3ViIEdlbmVyYXRlR2V0T3duUHJvcGVydHlE
ZXNjcmlwdG9yQm9keQogICAgIH0KIAogICAgIGlmICgkZGF0YU5vZGUtPmV4dGVuZGVkQXR0cmli
dXRlcy0+eyJJbmRleGVkR2V0dGVyIn0gfHwgJGRhdGFOb2RlLT5leHRlbmRlZEF0dHJpYnV0ZXMt
PnsiTnVtZXJpY0luZGV4ZWRHZXR0ZXIifSkgewotICAgICAgICBwdXNoKEBnZXRPd25Qcm9wZXJ0
eURlc2NyaXB0b3JJbXBsLCAiICAgIGJvb2wgb2s7XG4iKTsKLSAgICAgICAgcHVzaChAZ2V0T3du
UHJvcGVydHlEZXNjcmlwdG9ySW1wbCwgIiAgICB1bnNpZ25lZCBpbmRleCA9IHByb3BlcnR5TmFt
ZS50b1VJbnQzMihvayk7XG4iKTsKLSAgICAgICAgcHVzaChAZ2V0T3duUHJvcGVydHlEZXNjcmlw
dG9ySW1wbCwgIiAgICBpZiAob2sgJiYgaW5kZXggPCBzdGF0aWNfY2FzdDwkaW1wbENsYXNzTmFt
ZSo+KHRoaXNPYmplY3QtPmltcGwoKSktPmxlbmd0aCgpKSB7XG4iKTsKKyAgICAgICAgcHVzaChA
Z2V0T3duUHJvcGVydHlEZXNjcmlwdG9ySW1wbCwgIiAgICB1bnNpZ25lZCBpbmRleCA9IHByb3Bl
cnR5TmFtZS5hc0luZGV4KCk7XG4iKTsKKyAgICAgICAgcHVzaChAZ2V0T3duUHJvcGVydHlEZXNj
cmlwdG9ySW1wbCwgIiAgICBpZiAoaW5kZXggIT0gUHJvcGVydHlOYW1lOjpOb3RBbkluZGV4ICYm
IGluZGV4IDwgc3RhdGljX2Nhc3Q8JGltcGxDbGFzc05hbWUqPih0aGlzT2JqZWN0LT5pbXBsKCkp
LT5sZW5ndGgoKSkge1xuIik7CiAgICAgICAgIGlmICgkZGF0YU5vZGUtPmV4dGVuZGVkQXR0cmli
dXRlcy0+eyJOdW1lcmljSW5kZXhlZEdldHRlciJ9KSB7CiAgICAgICAgICAgICAjIEFzc3VtZSB0
aGF0IGlmIHRoZXJlJ3MgYSBzZXR0ZXIsIHRoZSBpbmRleCB3aWxsIGJlIHdyaXRhYmxlCiAgICAg
ICAgICAgICBpZiAoJGRhdGFOb2RlLT5leHRlbmRlZEF0dHJpYnV0ZXMtPnsiQ3VzdG9tSW5kZXhl
ZFNldHRlciJ9KSB7CkBAIC03NDIsMTEgKzc0MCwxMSBAQCBzdWIgR2VuZXJhdGVIZWFkZXIKIAog
ICAgICMgR2V0dGVycwogICAgIGlmICgkaGFzR2V0dGVyKSB7Ci0gICAgICAgIHB1c2goQGhlYWRl
ckNvbnRlbnQsICIgICAgc3RhdGljIGJvb2wgZ2V0T3duUHJvcGVydHlTbG90KEpTQzo6SlNDZWxs
KiwgSlNDOjpFeGVjU3RhdGUqLCBjb25zdCBKU0M6OklkZW50aWZpZXImIHByb3BlcnR5TmFtZSwg
SlNDOjpQcm9wZXJ0eVNsb3QmKTtcbiIpOwotICAgICAgICBwdXNoKEBoZWFkZXJDb250ZW50LCAi
ICAgIHN0YXRpYyBib29sIGdldE93blByb3BlcnR5RGVzY3JpcHRvcihKU0M6OkpTT2JqZWN0Kiwg
SlNDOjpFeGVjU3RhdGUqLCBjb25zdCBKU0M6OklkZW50aWZpZXImIHByb3BlcnR5TmFtZSwgSlND
OjpQcm9wZXJ0eURlc2NyaXB0b3ImKTtcbiIpOworICAgICAgICBwdXNoKEBoZWFkZXJDb250ZW50
LCAiICAgIHN0YXRpYyBib29sIGdldE93blByb3BlcnR5U2xvdChKU0M6OkpTQ2VsbCosIEpTQzo6
RXhlY1N0YXRlKiwgSlNDOjpQcm9wZXJ0eU5hbWUsIEpTQzo6UHJvcGVydHlTbG90Jik7XG4iKTsK
KyAgICAgICAgcHVzaChAaGVhZGVyQ29udGVudCwgIiAgICBzdGF0aWMgYm9vbCBnZXRPd25Qcm9w
ZXJ0eURlc2NyaXB0b3IoSlNDOjpKU09iamVjdCosIEpTQzo6RXhlY1N0YXRlKiwgSlNDOjpQcm9w
ZXJ0eU5hbWUsIEpTQzo6UHJvcGVydHlEZXNjcmlwdG9yJik7XG4iKTsKICAgICAgICAgcHVzaChA
aGVhZGVyQ29udGVudCwgIiAgICBzdGF0aWMgYm9vbCBnZXRPd25Qcm9wZXJ0eVNsb3RCeUluZGV4
KEpTQzo6SlNDZWxsKiwgSlNDOjpFeGVjU3RhdGUqLCB1bnNpZ25lZCBwcm9wZXJ0eU5hbWUsIEpT
Qzo6UHJvcGVydHlTbG90Jik7XG4iKSBpZiAoJGRhdGFOb2RlLT5leHRlbmRlZEF0dHJpYnV0ZXMt
PnsiSW5kZXhlZEdldHRlciJ9IHx8ICRkYXRhTm9kZS0+ZXh0ZW5kZWRBdHRyaWJ1dGVzLT57Ik51
bWVyaWNJbmRleGVkR2V0dGVyIn0pICYmICEkZGF0YU5vZGUtPmV4dGVuZGVkQXR0cmlidXRlcy0+
eyJDdXN0b21OYW1lZEdldHRlciJ9OwotICAgICAgICBwdXNoKEBoZWFkZXJDb250ZW50LCAiICAg
IGJvb2wgZ2V0T3duUHJvcGVydHlTbG90RGVsZWdhdGUoSlNDOjpFeGVjU3RhdGUqLCBjb25zdCBK
U0M6OklkZW50aWZpZXImLCBKU0M6OlByb3BlcnR5U2xvdCYpO1xuIikgaWYgJGRhdGFOb2RlLT5l
eHRlbmRlZEF0dHJpYnV0ZXMtPnsiSlNDdXN0b21HZXRPd25Qcm9wZXJ0eVNsb3RBbmREZXNjcmlw
dG9yIn07Ci0gICAgICAgIHB1c2goQGhlYWRlckNvbnRlbnQsICIgICAgYm9vbCBnZXRPd25Qcm9w
ZXJ0eURlc2NyaXB0b3JEZWxlZ2F0ZShKU0M6OkV4ZWNTdGF0ZSosIGNvbnN0IEpTQzo6SWRlbnRp
ZmllciYsIEpTQzo6UHJvcGVydHlEZXNjcmlwdG9yJik7XG4iKSBpZiAkZGF0YU5vZGUtPmV4dGVu
ZGVkQXR0cmlidXRlcy0+eyJKU0N1c3RvbUdldE93blByb3BlcnR5U2xvdEFuZERlc2NyaXB0b3Ii
fTsKKyAgICAgICAgcHVzaChAaGVhZGVyQ29udGVudCwgIiAgICBib29sIGdldE93blByb3BlcnR5
U2xvdERlbGVnYXRlKEpTQzo6RXhlY1N0YXRlKiwgSlNDOjpQcm9wZXJ0eU5hbWUsIEpTQzo6UHJv
cGVydHlTbG90Jik7XG4iKSBpZiAkZGF0YU5vZGUtPmV4dGVuZGVkQXR0cmlidXRlcy0+eyJKU0N1
c3RvbUdldE93blByb3BlcnR5U2xvdEFuZERlc2NyaXB0b3IifTsKKyAgICAgICAgcHVzaChAaGVh
ZGVyQ29udGVudCwgIiAgICBib29sIGdldE93blByb3BlcnR5RGVzY3JpcHRvckRlbGVnYXRlKEpT
Qzo6RXhlY1N0YXRlKiwgSlNDOjpQcm9wZXJ0eU5hbWUsIEpTQzo6UHJvcGVydHlEZXNjcmlwdG9y
Jik7XG4iKSBpZiAkZGF0YU5vZGUtPmV4dGVuZGVkQXR0cmlidXRlcy0+eyJKU0N1c3RvbUdldE93
blByb3BlcnR5U2xvdEFuZERlc2NyaXB0b3IifTsKICAgICAgICAgJHN0cnVjdHVyZUZsYWdzeyJK
U0M6Ok92ZXJyaWRlc0dldE93blByb3BlcnR5U2xvdCJ9ID0gMTsKICAgICB9CiAKQEAgLTc2NSw5
ICs3NjMsOSBAQCBzdWIgR2VuZXJhdGVIZWFkZXIKIAogICAgICMgR2V0dGVycwogICAgIGlmICgk
aGFzU2V0dGVyKSB7Ci0gICAgICAgIHB1c2goQGhlYWRlckNvbnRlbnQsICIgICAgc3RhdGljIHZv
aWQgcHV0KEpTQzo6SlNDZWxsKiwgSlNDOjpFeGVjU3RhdGUqLCBjb25zdCBKU0M6OklkZW50aWZp
ZXImIHByb3BlcnR5TmFtZSwgSlNDOjpKU1ZhbHVlLCBKU0M6OlB1dFByb3BlcnR5U2xvdCYpO1xu
Iik7CisgICAgICAgIHB1c2goQGhlYWRlckNvbnRlbnQsICIgICAgc3RhdGljIHZvaWQgcHV0KEpT
Qzo6SlNDZWxsKiwgSlNDOjpFeGVjU3RhdGUqLCBKU0M6OlByb3BlcnR5TmFtZSwgSlNDOjpKU1Zh
bHVlLCBKU0M6OlB1dFByb3BlcnR5U2xvdCYpO1xuIik7CiAgICAgICAgIHB1c2goQGhlYWRlckNv
bnRlbnQsICIgICAgc3RhdGljIHZvaWQgcHV0QnlJbmRleChKU0M6OkpTQ2VsbCosIEpTQzo6RXhl
Y1N0YXRlKiwgdW5zaWduZWQgcHJvcGVydHlOYW1lLCBKU0M6OkpTVmFsdWUsIGJvb2wgc2hvdWxk
VGhyb3cpO1xuIikgaWYgJGRhdGFOb2RlLT5leHRlbmRlZEF0dHJpYnV0ZXMtPnsiQ3VzdG9tSW5k
ZXhlZFNldHRlciJ9OwotICAgICAgICBwdXNoKEBoZWFkZXJDb250ZW50LCAiICAgIGJvb2wgcHV0
RGVsZWdhdGUoSlNDOjpFeGVjU3RhdGUqLCBjb25zdCBKU0M6OklkZW50aWZpZXImLCBKU0M6OkpT
VmFsdWUsIEpTQzo6UHV0UHJvcGVydHlTbG90Jik7XG4iKSBpZiAkZGF0YU5vZGUtPmV4dGVuZGVk
QXR0cmlidXRlcy0+eyJDdXN0b21OYW1lZFNldHRlciJ9OworICAgICAgICBwdXNoKEBoZWFkZXJD
b250ZW50LCAiICAgIGJvb2wgcHV0RGVsZWdhdGUoSlNDOjpFeGVjU3RhdGUqLCBKU0M6OlByb3Bl
cnR5TmFtZSwgSlNDOjpKU1ZhbHVlLCBKU0M6OlB1dFByb3BlcnR5U2xvdCYpO1xuIikgaWYgJGRh
dGFOb2RlLT5leHRlbmRlZEF0dHJpYnV0ZXMtPnsiQ3VzdG9tTmFtZWRTZXR0ZXIifTsKICAgICB9
CiAKICAgICBpZiAoISRoYXNQYXJlbnQpIHsKQEAgLTc5OCw3ICs3OTYsNyBAQCBzdWIgR2VuZXJh
dGVIZWFkZXIKICAgICBwdXNoKEBoZWFkZXJDb250ZW50LCAiICAgIHN0YXRpYyBKU0M6OkNhbGxU
eXBlIGdldENhbGxEYXRhKEpTQzo6SlNDZWxsKiwgSlNDOjpDYWxsRGF0YSYpO1xuXG4iKSBpZiAk
ZGF0YU5vZGUtPmV4dGVuZGVkQXR0cmlidXRlcy0+eyJDdXN0b21DYWxsIn07CiAKICAgICAjIEN1
c3RvbSBkZWxldGVQcm9wZXJ0eSBmdW5jdGlvbgotICAgIHB1c2goQGhlYWRlckNvbnRlbnQsICIg
ICAgc3RhdGljIGJvb2wgZGVsZXRlUHJvcGVydHkoSlNDOjpKU0NlbGwqLCBKU0M6OkV4ZWNTdGF0
ZSosIGNvbnN0IEpTQzo6SWRlbnRpZmllciYpO1xuIikgaWYgJGRhdGFOb2RlLT5leHRlbmRlZEF0
dHJpYnV0ZXMtPnsiQ3VzdG9tRGVsZXRlUHJvcGVydHkifTsKKyAgICBwdXNoKEBoZWFkZXJDb250
ZW50LCAiICAgIHN0YXRpYyBib29sIGRlbGV0ZVByb3BlcnR5KEpTQzo6SlNDZWxsKiwgSlNDOjpF
eGVjU3RhdGUqLCBKU0M6OlByb3BlcnR5TmFtZSk7XG4iKSBpZiAkZGF0YU5vZGUtPmV4dGVuZGVk
QXR0cmlidXRlcy0+eyJDdXN0b21EZWxldGVQcm9wZXJ0eSJ9OwogCiAgICAgIyBDdXN0b20gZ2V0
UHJvcGVydHlOYW1lcyBmdW5jdGlvbiBleGlzdHMgb24gRE9NV2luZG93CiAgICAgaWYgKCRpbnRl
cmZhY2VOYW1lIGVxICJET01XaW5kb3ciKSB7CkBAIC04MTMsNyArODExLDcgQEAgc3ViIEdlbmVy
YXRlSGVhZGVyCiAgICAgfQogCiAgICAgIyBDdXN0b20gZGVmaW5lT3duUHJvcGVydHkgZnVuY3Rp
b24KLSAgICBwdXNoKEBoZWFkZXJDb250ZW50LCAiICAgIHN0YXRpYyBib29sIGRlZmluZU93blBy
b3BlcnR5KEpTQzo6SlNPYmplY3QqLCBKU0M6OkV4ZWNTdGF0ZSosIGNvbnN0IEpTQzo6SWRlbnRp
ZmllciYgcHJvcGVydHlOYW1lLCBKU0M6OlByb3BlcnR5RGVzY3JpcHRvciYsIGJvb2wgc2hvdWxk
VGhyb3cpO1xuIikgaWYgJGRhdGFOb2RlLT5leHRlbmRlZEF0dHJpYnV0ZXMtPnsiSlNDdXN0b21E
ZWZpbmVPd25Qcm9wZXJ0eSJ9OworICAgIHB1c2goQGhlYWRlckNvbnRlbnQsICIgICAgc3RhdGlj
IGJvb2wgZGVmaW5lT3duUHJvcGVydHkoSlNDOjpKU09iamVjdCosIEpTQzo6RXhlY1N0YXRlKiwg
SlNDOjpQcm9wZXJ0eU5hbWUsIEpTQzo6UHJvcGVydHlEZXNjcmlwdG9yJiwgYm9vbCBzaG91bGRU
aHJvdyk7XG4iKSBpZiAkZGF0YU5vZGUtPmV4dGVuZGVkQXR0cmlidXRlcy0+eyJKU0N1c3RvbURl
ZmluZU93blByb3BlcnR5In07CiAKICAgICAjIE92ZXJyaWRlIHRvQm9vbGVhbiB0byByZXR1cm4g
ZmFsc2UgZm9yIG9iamVjdHMgdGhhdCB3YW50IHRvICdNYXNxdWVyYWRlc0FzVW5kZWZpbmVkJy4K
ICAgICBpZiAoJGRhdGFOb2RlLT5leHRlbmRlZEF0dHJpYnV0ZXMtPnsiTWFzcXVlcmFkZXNBc1Vu
ZGVmaW5lZCJ9KSB7CkBAIC05NDgsMjAgKzk0NiwyMCBAQCBzdWIgR2VuZXJhdGVIZWFkZXIKICAg
ICAjIE5hbWUgZ2V0dGVyCiAgICAgaWYgKCRkYXRhTm9kZS0+ZXh0ZW5kZWRBdHRyaWJ1dGVzLT57
Ik5hbWVkR2V0dGVyIn0gfHwgJGRhdGFOb2RlLT5leHRlbmRlZEF0dHJpYnV0ZXMtPnsiQ3VzdG9t
TmFtZWRHZXR0ZXIifSkgewogICAgICAgICBwdXNoKEBoZWFkZXJDb250ZW50LCAicHJpdmF0ZTpc
biIpOwotICAgICAgICBwdXNoKEBoZWFkZXJDb250ZW50LCAiICAgIHN0YXRpYyBib29sIGNhbkdl
dEl0ZW1zRm9yTmFtZShKU0M6OkV4ZWNTdGF0ZSosICRpbXBsQ2xhc3NOYW1lKiwgY29uc3QgSlND
OjpJZGVudGlmaWVyJik7XG4iKTsKLSAgICAgICAgcHVzaChAaGVhZGVyQ29udGVudCwgIiAgICBz
dGF0aWMgSlNDOjpKU1ZhbHVlIG5hbWVHZXR0ZXIoSlNDOjpFeGVjU3RhdGUqLCBKU0M6OkpTVmFs
dWUsIGNvbnN0IEpTQzo6SWRlbnRpZmllciYpO1xuIik7CisgICAgICAgIHB1c2goQGhlYWRlckNv
bnRlbnQsICIgICAgc3RhdGljIGJvb2wgY2FuR2V0SXRlbXNGb3JOYW1lKEpTQzo6RXhlY1N0YXRl
KiwgJGltcGxDbGFzc05hbWUqLCBKU0M6OlByb3BlcnR5TmFtZSk7XG4iKTsKKyAgICAgICAgcHVz
aChAaGVhZGVyQ29udGVudCwgIiAgICBzdGF0aWMgSlNDOjpKU1ZhbHVlIG5hbWVHZXR0ZXIoSlND
OjpFeGVjU3RhdGUqLCBKU0M6OkpTVmFsdWUsIEpTQzo6UHJvcGVydHlOYW1lKTtcbiIpOwogICAg
IH0KIAogICAgIHB1c2goQGhlYWRlckNvbnRlbnQsICJ9O1xuXG4iKTsKIAogICAgIGlmICgkZGF0
YU5vZGUtPmV4dGVuZGVkQXR0cmlidXRlcy0+eyJKU0lubGluZUdldE93blByb3BlcnR5U2xvdCJ9
ICYmICEkZGF0YU5vZGUtPmV4dGVuZGVkQXR0cmlidXRlcy0+eyJDdXN0b21HZXRPd25Qcm9wZXJ0
eVNsb3QifSkgewotICAgICAgICBwdXNoKEBoZWFkZXJDb250ZW50LCAiQUxXQVlTX0lOTElORSBi
b29sICR7Y2xhc3NOYW1lfTo6Z2V0T3duUHJvcGVydHlTbG90KEpTQzo6SlNDZWxsKiBjZWxsLCBK
U0M6OkV4ZWNTdGF0ZSogZXhlYywgY29uc3QgSlNDOjpJZGVudGlmaWVyJiBwcm9wZXJ0eU5hbWUs
IEpTQzo6UHJvcGVydHlTbG90JiBzbG90KVxuIik7CisgICAgICAgIHB1c2goQGhlYWRlckNvbnRl
bnQsICJBTFdBWVNfSU5MSU5FIGJvb2wgJHtjbGFzc05hbWV9OjpnZXRPd25Qcm9wZXJ0eVNsb3Qo
SlNDOjpKU0NlbGwqIGNlbGwsIEpTQzo6RXhlY1N0YXRlKiBleGVjLCBKU0M6OlByb3BlcnR5TmFt
ZSBwcm9wZXJ0eU5hbWUsIEpTQzo6UHJvcGVydHlTbG90JiBzbG90KVxuIik7CiAgICAgICAgIHB1
c2goQGhlYWRlckNvbnRlbnQsICJ7XG4iKTsKICAgICAgICAgcHVzaChAaGVhZGVyQ29udGVudCwg
IiAgICAke2NsYXNzTmFtZX0qIHRoaXNPYmplY3QgPSBKU0M6OmpzQ2FzdDwke2NsYXNzTmFtZX0q
PihjZWxsKTtcbiIpOwogICAgICAgICBwdXNoKEBoZWFkZXJDb250ZW50LCAiICAgIEFTU0VSVF9H
Q19PQkpFQ1RfSU5IRVJJVFModGhpc09iamVjdCwgJnNfaW5mbyk7XG4iKTsKICAgICAgICAgcHVz
aChAaGVhZGVyQ29udGVudCwgR2VuZXJhdGVHZXRPd25Qcm9wZXJ0eVNsb3RCb2R5KCRkYXRhTm9k
ZSwgJGludGVyZmFjZU5hbWUsICRjbGFzc05hbWUsICRpbXBsQ2xhc3NOYW1lLCAkbnVtQXR0cmli
dXRlcyA+IDAsIDEpKTsKICAgICAgICAgcHVzaChAaGVhZGVyQ29udGVudCwgIn1cblxuIik7Ci0g
ICAgICAgIHB1c2goQGhlYWRlckNvbnRlbnQsICJBTFdBWVNfSU5MSU5FIGJvb2wgJHtjbGFzc05h
bWV9OjpnZXRPd25Qcm9wZXJ0eURlc2NyaXB0b3IoSlNDOjpKU09iamVjdCogb2JqZWN0LCBKU0M6
OkV4ZWNTdGF0ZSogZXhlYywgY29uc3QgSlNDOjpJZGVudGlmaWVyJiBwcm9wZXJ0eU5hbWUsIEpT
Qzo6UHJvcGVydHlEZXNjcmlwdG9yJiBkZXNjcmlwdG9yKVxuIik7CisgICAgICAgIHB1c2goQGhl
YWRlckNvbnRlbnQsICJBTFdBWVNfSU5MSU5FIGJvb2wgJHtjbGFzc05hbWV9OjpnZXRPd25Qcm9w
ZXJ0eURlc2NyaXB0b3IoSlNDOjpKU09iamVjdCogb2JqZWN0LCBKU0M6OkV4ZWNTdGF0ZSogZXhl
YywgSlNDOjpQcm9wZXJ0eU5hbWUgcHJvcGVydHlOYW1lLCBKU0M6OlByb3BlcnR5RGVzY3JpcHRv
ciYgZGVzY3JpcHRvcilcbiIpOwogICAgICAgICBwdXNoKEBoZWFkZXJDb250ZW50LCAie1xuIik7
CiAgICAgICAgIHB1c2goQGhlYWRlckNvbnRlbnQsICIgICAgJHtjbGFzc05hbWV9KiB0aGlzT2Jq
ZWN0ID0gSlNDOjpqc0Nhc3Q8JHtjbGFzc05hbWV9Kj4ob2JqZWN0KTtcbiIpOwogICAgICAgICBw
dXNoKEBoZWFkZXJDb250ZW50LCAiICAgIEFTU0VSVF9HQ19PQkpFQ1RfSU5IRVJJVFModGhpc09i
amVjdCwgJnNfaW5mbyk7XG4iKTsKQEAgLTEwMjYsOCArMTAyNCw4IEBAIHN1YiBHZW5lcmF0ZUhl
YWRlcgogCiAgICAgcHVzaChAaGVhZGVyQ29udGVudCwgIiAgICBzdGF0aWMgY29uc3QgSlNDOjpD
bGFzc0luZm8gc19pbmZvO1xuIik7CiAgICAgaWYgKCRudW1GdW5jdGlvbnMgPiAwIHx8ICRudW1D
b25zdGFudHMgPiAwKSB7Ci0gICAgICAgIHB1c2goQGhlYWRlckNvbnRlbnQsICIgICAgc3RhdGlj
IGJvb2wgZ2V0T3duUHJvcGVydHlTbG90KEpTQzo6SlNDZWxsKiwgSlNDOjpFeGVjU3RhdGUqLCBj
b25zdCBKU0M6OklkZW50aWZpZXImLCBKU0M6OlByb3BlcnR5U2xvdCYpO1xuIik7Ci0gICAgICAg
IHB1c2goQGhlYWRlckNvbnRlbnQsICIgICAgc3RhdGljIGJvb2wgZ2V0T3duUHJvcGVydHlEZXNj
cmlwdG9yKEpTQzo6SlNPYmplY3QqLCBKU0M6OkV4ZWNTdGF0ZSosIGNvbnN0IEpTQzo6SWRlbnRp
ZmllciYsIEpTQzo6UHJvcGVydHlEZXNjcmlwdG9yJik7XG4iKTsKKyAgICAgICAgcHVzaChAaGVh
ZGVyQ29udGVudCwgIiAgICBzdGF0aWMgYm9vbCBnZXRPd25Qcm9wZXJ0eVNsb3QoSlNDOjpKU0Nl
bGwqLCBKU0M6OkV4ZWNTdGF0ZSosIEpTQzo6UHJvcGVydHlOYW1lLCBKU0M6OlByb3BlcnR5U2xv
dCYpO1xuIik7CisgICAgICAgIHB1c2goQGhlYWRlckNvbnRlbnQsICIgICAgc3RhdGljIGJvb2wg
Z2V0T3duUHJvcGVydHlEZXNjcmlwdG9yKEpTQzo6SlNPYmplY3QqLCBKU0M6OkV4ZWNTdGF0ZSos
IEpTQzo6UHJvcGVydHlOYW1lLCBKU0M6OlByb3BlcnR5RGVzY3JpcHRvciYpO1xuIik7CiAgICAg
ICAgICRzdHJ1Y3R1cmVGbGFnc3siSlNDOjpPdmVycmlkZXNHZXRPd25Qcm9wZXJ0eVNsb3QifSA9
IDE7CiAgICAgfQogICAgIGlmICgkZGF0YU5vZGUtPmV4dGVuZGVkQXR0cmlidXRlcy0+eyJKU0N1
c3RvbU1hcmtGdW5jdGlvbiJ9IG9yICRuZWVkc01hcmtDaGlsZHJlbikgewpAQCAtMTAzOSwxMiAr
MTAzNywxMiBAQCBzdWIgR2VuZXJhdGVIZWFkZXIKICAgICAgICAgIiAgICAgICAgcmV0dXJuIEpT
Qzo6U3RydWN0dXJlOjpjcmVhdGUoZ2xvYmFsRGF0YSwgZ2xvYmFsT2JqZWN0LCBwcm90b3R5cGUs
IEpTQzo6VHlwZUluZm8oSlNDOjpPYmplY3RUeXBlLCBTdHJ1Y3R1cmVGbGFncyksICZzX2luZm8p
O1xuIiAuCiAgICAgICAgICIgICAgfVxuIik7CiAgICAgaWYgKCRkYXRhTm9kZS0+ZXh0ZW5kZWRB
dHRyaWJ1dGVzLT57IkpTQ3VzdG9tTmFtZWRHZXR0ZXJPblByb3RvdHlwZSJ9KSB7Ci0gICAgICAg
IHB1c2goQGhlYWRlckNvbnRlbnQsICIgICAgc3RhdGljIHZvaWQgcHV0KEpTQzo6SlNDZWxsKiwg
SlNDOjpFeGVjU3RhdGUqLCBjb25zdCBKU0M6OklkZW50aWZpZXImIHByb3BlcnR5TmFtZSwgSlND
OjpKU1ZhbHVlLCBKU0M6OlB1dFByb3BlcnR5U2xvdCYpO1xuIik7Ci0gICAgICAgIHB1c2goQGhl
YWRlckNvbnRlbnQsICIgICAgYm9vbCBwdXREZWxlZ2F0ZShKU0M6OkV4ZWNTdGF0ZSosIGNvbnN0
IEpTQzo6SWRlbnRpZmllciYsIEpTQzo6SlNWYWx1ZSwgSlNDOjpQdXRQcm9wZXJ0eVNsb3QmKTtc
biIpOworICAgICAgICBwdXNoKEBoZWFkZXJDb250ZW50LCAiICAgIHN0YXRpYyB2b2lkIHB1dChK
U0M6OkpTQ2VsbCosIEpTQzo6RXhlY1N0YXRlKiwgSlNDOjpQcm9wZXJ0eU5hbWUsIEpTQzo6SlNW
YWx1ZSwgSlNDOjpQdXRQcm9wZXJ0eVNsb3QmKTtcbiIpOworICAgICAgICBwdXNoKEBoZWFkZXJD
b250ZW50LCAiICAgIGJvb2wgcHV0RGVsZWdhdGUoSlNDOjpFeGVjU3RhdGUqLCBKU0M6OlByb3Bl
cnR5TmFtZSwgSlNDOjpKU1ZhbHVlLCBKU0M6OlB1dFByb3BlcnR5U2xvdCYpO1xuIik7CiAgICAg
fQogCiAgICAgIyBDdXN0b20gZGVmaW5lT3duUHJvcGVydHkgZnVuY3Rpb24KLSAgICBwdXNoKEBo
ZWFkZXJDb250ZW50LCAiICAgIHN0YXRpYyBib29sIGRlZmluZU93blByb3BlcnR5KEpTQzo6SlNP
YmplY3QqLCBKU0M6OkV4ZWNTdGF0ZSosIGNvbnN0IEpTQzo6SWRlbnRpZmllciYgcHJvcGVydHlO
YW1lLCBKU0M6OlByb3BlcnR5RGVzY3JpcHRvciYsIGJvb2wgc2hvdWxkVGhyb3cpO1xuIikgaWYg
JGRhdGFOb2RlLT5leHRlbmRlZEF0dHJpYnV0ZXMtPnsiSlNDdXN0b21EZWZpbmVPd25Qcm9wZXJ0
eU9uUHJvdG90eXBlIn07CisgICAgcHVzaChAaGVhZGVyQ29udGVudCwgIiAgICBzdGF0aWMgYm9v
bCBkZWZpbmVPd25Qcm9wZXJ0eShKU0M6OkpTT2JqZWN0KiwgSlNDOjpFeGVjU3RhdGUqLCBKU0M6
OlByb3BlcnR5TmFtZSwgSlNDOjpQcm9wZXJ0eURlc2NyaXB0b3ImLCBib29sIHNob3VsZFRocm93
KTtcbiIpIGlmICRkYXRhTm9kZS0+ZXh0ZW5kZWRBdHRyaWJ1dGVzLT57IkpTQ3VzdG9tRGVmaW5l
T3duUHJvcGVydHlPblByb3RvdHlwZSJ9OwogCiAgICAgcHVzaChAaGVhZGVyQ29udGVudCwgIlxu
cHJpdmF0ZTpcbiIpOwogICAgIHB1c2goQGhlYWRlckNvbnRlbnQsICIgICAgJHtjbGFzc05hbWV9
UHJvdG90eXBlKEpTQzo6SlNHbG9iYWxEYXRhJiBnbG9iYWxEYXRhLCBKU0M6OkpTR2xvYmFsT2Jq
ZWN0KiwgSlNDOjpTdHJ1Y3R1cmUqIHN0cnVjdHVyZSkgOiBKU0M6OkpTTm9uRmluYWxPYmplY3Qo
Z2xvYmFsRGF0YSwgc3RydWN0dXJlKSB7IH1cbiIpOwpAQCAtMTA4Miw3ICsxMDgwLDcgQEAgc3Vi
IEdlbmVyYXRlSGVhZGVyCiAgICAgICAgICAgICBteSAkY29uZGl0aW9uYWxTdHJpbmcgPSAkY29k
ZUdlbmVyYXRvci0+R2VuZXJhdGVDb25kaXRpb25hbFN0cmluZygkYXR0cmlidXRlLT5zaWduYXR1
cmUpOwogICAgICAgICAgICAgcHVzaChAaGVhZGVyQ29udGVudCwgIiNpZiAke2NvbmRpdGlvbmFs
U3RyaW5nfVxuIikgaWYgJGNvbmRpdGlvbmFsU3RyaW5nOwogICAgICAgICAgICAgbXkgJGdldHRl
ciA9ICJqcyIgLiAkaW50ZXJmYWNlTmFtZSAuICRjb2RlR2VuZXJhdG9yLT5XS191Y2ZpcnN0KCRh
dHRyaWJ1dGUtPnNpZ25hdHVyZS0+bmFtZSkgLiAoJGF0dHJpYnV0ZS0+c2lnbmF0dXJlLT50eXBl
ID1+IC9Db25zdHJ1Y3RvciQvID8gIkNvbnN0cnVjdG9yIiA6ICIiKTsKLSAgICAgICAgICAgIHB1
c2goQGhlYWRlckNvbnRlbnQsICJKU0M6OkpTVmFsdWUgJHtnZXR0ZXJ9KEpTQzo6RXhlY1N0YXRl
KiwgSlNDOjpKU1ZhbHVlLCBjb25zdCBKU0M6OklkZW50aWZpZXImKTtcbiIpOworICAgICAgICAg
ICAgcHVzaChAaGVhZGVyQ29udGVudCwgIkpTQzo6SlNWYWx1ZSAke2dldHRlcn0oSlNDOjpFeGVj
U3RhdGUqLCBKU0M6OkpTVmFsdWUsIEpTQzo6UHJvcGVydHlOYW1lKTtcbiIpOwogICAgICAgICAg
ICAgdW5sZXNzICgkYXR0cmlidXRlLT50eXBlID1+IC9yZWFkb25seS8pIHsKICAgICAgICAgICAg
ICAgICBteSAkc2V0dGVyID0gInNldEpTIiAuICRpbnRlcmZhY2VOYW1lIC4gJGNvZGVHZW5lcmF0
b3ItPldLX3VjZmlyc3QoJGF0dHJpYnV0ZS0+c2lnbmF0dXJlLT5uYW1lKSAuICgkYXR0cmlidXRl
LT5zaWduYXR1cmUtPnR5cGUgPX4gL0NvbnN0cnVjdG9yJC8gPyAiQ29uc3RydWN0b3IiIDogIiIp
OwogICAgICAgICAgICAgICAgIHB1c2goQGhlYWRlckNvbnRlbnQsICJ2b2lkICR7c2V0dGVyfShK
U0M6OkV4ZWNTdGF0ZSosIEpTQzo6SlNPYmplY3QqLCBKU0M6OkpTVmFsdWUpO1xuIik7CkBAIC0x
MDkyLDcgKzEwOTAsNyBAQCBzdWIgR2VuZXJhdGVIZWFkZXIKICAgICAgICAgCiAgICAgICAgIGlm
ICghJGRhdGFOb2RlLT5leHRlbmRlZEF0dHJpYnV0ZXMtPnsiT21pdENvbnN0cnVjdG9yIn0pIHsK
ICAgICAgICAgICAgIG15ICRnZXR0ZXIgPSAianMiIC4gJGludGVyZmFjZU5hbWUgLiAiQ29uc3Ry
dWN0b3IiOwotICAgICAgICAgICAgcHVzaChAaGVhZGVyQ29udGVudCwgIkpTQzo6SlNWYWx1ZSAk
e2dldHRlcn0oSlNDOjpFeGVjU3RhdGUqLCBKU0M6OkpTVmFsdWUsIGNvbnN0IEpTQzo6SWRlbnRp
ZmllciYpO1xuIik7CisgICAgICAgICAgICBwdXNoKEBoZWFkZXJDb250ZW50LCAiSlNDOjpKU1Zh
bHVlICR7Z2V0dGVyfShKU0M6OkV4ZWNTdGF0ZSosIEpTQzo6SlNWYWx1ZSwgSlNDOjpQcm9wZXJ0
eU5hbWUpO1xuIik7CiAgICAgICAgIH0KIAogICAgICAgICBpZiAoJGRhdGFOb2RlLT5leHRlbmRl
ZEF0dHJpYnV0ZXMtPnsiUmVwbGFjZWFibGVDb25zdHJ1Y3RvciJ9KSB7CkBAIC0xMTA3LDcgKzEx
MDUsNyBAQCBzdWIgR2VuZXJhdGVIZWFkZXIKICAgICAgICAgICAgIG15ICRjb25kaXRpb25hbFN0
cmluZyA9ICRjb2RlR2VuZXJhdG9yLT5HZW5lcmF0ZUNvbmRpdGlvbmFsU3RyaW5nKCRjb25zdGFu
dCk7CiAgICAgICAgICAgICBwdXNoKEBoZWFkZXJDb250ZW50LCAiI2lmICR7Y29uZGl0aW9uYWxT
dHJpbmd9XG4iKSBpZiAkY29uZGl0aW9uYWxTdHJpbmc7CiAgICAgICAgICAgICBteSAkZ2V0dGVy
ID0gImpzIiAuICRpbnRlcmZhY2VOYW1lIC4gJGNvZGVHZW5lcmF0b3ItPldLX3VjZmlyc3QoJGNv
bnN0YW50LT5uYW1lKTsKLSAgICAgICAgICAgIHB1c2goQGhlYWRlckNvbnRlbnQsICJKU0M6OkpT
VmFsdWUgJHtnZXR0ZXJ9KEpTQzo6RXhlY1N0YXRlKiwgSlNDOjpKU1ZhbHVlLCBjb25zdCBKU0M6
OklkZW50aWZpZXImKTtcbiIpOworICAgICAgICAgICAgcHVzaChAaGVhZGVyQ29udGVudCwgIkpT
Qzo6SlNWYWx1ZSAke2dldHRlcn0oSlNDOjpFeGVjU3RhdGUqLCBKU0M6OkpTVmFsdWUsIEpTQzo6
UHJvcGVydHlOYW1lKTtcbiIpOwogICAgICAgICAgICAgcHVzaChAaGVhZGVyQ29udGVudCwgIiNl
bmRpZlxuIikgaWYgJGNvbmRpdGlvbmFsU3RyaW5nOwogICAgICAgICB9CiAgICAgfQpAQCAtMTQ4
MCw3ICsxNDc4LDcgQEAgc3ViIEdlbmVyYXRlSW1wbGVtZW50YXRpb24KICAgICB9CiAKICAgICBp
ZiAoJG51bUNvbnN0YW50cyA+IDAgfHwgJG51bUZ1bmN0aW9ucyA+IDApIHsKLSAgICAgICAgcHVz
aChAaW1wbENvbnRlbnQsICJib29sICR7Y2xhc3NOYW1lfVByb3RvdHlwZTo6Z2V0T3duUHJvcGVy
dHlTbG90KEpTQ2VsbCogY2VsbCwgRXhlY1N0YXRlKiBleGVjLCBjb25zdCBJZGVudGlmaWVyJiBw
cm9wZXJ0eU5hbWUsIFByb3BlcnR5U2xvdCYgc2xvdClcbiIpOworICAgICAgICBwdXNoKEBpbXBs
Q29udGVudCwgImJvb2wgJHtjbGFzc05hbWV9UHJvdG90eXBlOjpnZXRPd25Qcm9wZXJ0eVNsb3Qo
SlNDZWxsKiBjZWxsLCBFeGVjU3RhdGUqIGV4ZWMsIFByb3BlcnR5TmFtZSBwcm9wZXJ0eU5hbWUs
IFByb3BlcnR5U2xvdCYgc2xvdClcbiIpOwogICAgICAgICBwdXNoKEBpbXBsQ29udGVudCwgIntc
biIpOwogICAgICAgICBwdXNoKEBpbXBsQ29udGVudCwgIiAgICAke2NsYXNzTmFtZX1Qcm90b3R5
cGUqIHRoaXNPYmplY3QgPSBqc0Nhc3Q8JHtjbGFzc05hbWV9UHJvdG90eXBlKj4oY2VsbCk7XG4i
KTsKIApAQCAtMTQ5NSw3ICsxNDkzLDcgQEAgc3ViIEdlbmVyYXRlSW1wbGVtZW50YXRpb24KICAg
ICAgICAgfQogICAgICAgICBwdXNoKEBpbXBsQ29udGVudCwgIn1cblxuIik7CiAKLSAgICAgICAg
cHVzaChAaW1wbENvbnRlbnQsICJib29sICR7Y2xhc3NOYW1lfVByb3RvdHlwZTo6Z2V0T3duUHJv
cGVydHlEZXNjcmlwdG9yKEpTT2JqZWN0KiBvYmplY3QsIEV4ZWNTdGF0ZSogZXhlYywgY29uc3Qg
SWRlbnRpZmllciYgcHJvcGVydHlOYW1lLCBQcm9wZXJ0eURlc2NyaXB0b3ImIGRlc2NyaXB0b3Ip
XG4iKTsKKyAgICAgICAgcHVzaChAaW1wbENvbnRlbnQsICJib29sICR7Y2xhc3NOYW1lfVByb3Rv
dHlwZTo6Z2V0T3duUHJvcGVydHlEZXNjcmlwdG9yKEpTT2JqZWN0KiBvYmplY3QsIEV4ZWNTdGF0
ZSogZXhlYywgUHJvcGVydHlOYW1lIHByb3BlcnR5TmFtZSwgUHJvcGVydHlEZXNjcmlwdG9yJiBk
ZXNjcmlwdG9yKVxuIik7CiAgICAgICAgIHB1c2goQGltcGxDb250ZW50LCAie1xuIik7CiAgICAg
ICAgIHB1c2goQGltcGxDb250ZW50LCAiICAgICR7Y2xhc3NOYW1lfVByb3RvdHlwZSogdGhpc09i
amVjdCA9IGpzQ2FzdDwke2NsYXNzTmFtZX1Qcm90b3R5cGUqPihvYmplY3QpO1xuIik7CiAKQEAg
LTE1MTIsNyArMTUxMCw3IEBAIHN1YiBHZW5lcmF0ZUltcGxlbWVudGF0aW9uCiAgICAgfQogCiAg
ICAgaWYgKCRkYXRhTm9kZS0+ZXh0ZW5kZWRBdHRyaWJ1dGVzLT57IkpTQ3VzdG9tTmFtZWRHZXR0
ZXJPblByb3RvdHlwZSJ9KSB7Ci0gICAgICAgIHB1c2goQGltcGxDb250ZW50LCAidm9pZCAke2Ns
YXNzTmFtZX1Qcm90b3R5cGU6OnB1dChKU0NlbGwqIGNlbGwsIEV4ZWNTdGF0ZSogZXhlYywgY29u
c3QgSWRlbnRpZmllciYgcHJvcGVydHlOYW1lLCBKU1ZhbHVlIHZhbHVlLCBQdXRQcm9wZXJ0eVNs
b3QmIHNsb3QpXG4iKTsKKyAgICAgICAgcHVzaChAaW1wbENvbnRlbnQsICJ2b2lkICR7Y2xhc3NO
YW1lfVByb3RvdHlwZTo6cHV0KEpTQ2VsbCogY2VsbCwgRXhlY1N0YXRlKiBleGVjLCBQcm9wZXJ0
eU5hbWUgcHJvcGVydHlOYW1lLCBKU1ZhbHVlIHZhbHVlLCBQdXRQcm9wZXJ0eVNsb3QmIHNsb3Qp
XG4iKTsKICAgICAgICAgcHVzaChAaW1wbENvbnRlbnQsICJ7XG4iKTsKICAgICAgICAgcHVzaChA
aW1wbENvbnRlbnQsICIgICAgJHtjbGFzc05hbWV9UHJvdG90eXBlKiB0aGlzT2JqZWN0ID0ganND
YXN0PCR7Y2xhc3NOYW1lfVByb3RvdHlwZSo+KGNlbGwpO1xuIik7CiAgICAgICAgIHB1c2goQGlt
cGxDb250ZW50LCAiICAgIGlmICh0aGlzT2JqZWN0LT5wdXREZWxlZ2F0ZShleGVjLCBwcm9wZXJ0
eU5hbWUsIHZhbHVlLCBzbG90KSlcbiIpOwpAQCAtMTYzMiwxMyArMTYzMCwxMyBAQCBzdWIgR2Vu
ZXJhdGVJbXBsZW1lbnRhdGlvbgogICAgICMgQXR0cmlidXRlcwogICAgIGlmICgkaGFzR2V0dGVy
KSB7CiAgICAgICAgIGlmICghJGRhdGFOb2RlLT5leHRlbmRlZEF0dHJpYnV0ZXMtPnsiSlNJbmxp
bmVHZXRPd25Qcm9wZXJ0eVNsb3QifSAmJiAhJGRhdGFOb2RlLT5leHRlbmRlZEF0dHJpYnV0ZXMt
PnsiQ3VzdG9tR2V0T3duUHJvcGVydHlTbG90In0pIHsKLSAgICAgICAgICAgIHB1c2goQGltcGxD
b250ZW50LCAiYm9vbCAke2NsYXNzTmFtZX06OmdldE93blByb3BlcnR5U2xvdChKU0NlbGwqIGNl
bGwsIEV4ZWNTdGF0ZSogZXhlYywgY29uc3QgSWRlbnRpZmllciYgcHJvcGVydHlOYW1lLCBQcm9w
ZXJ0eVNsb3QmIHNsb3QpXG4iKTsKKyAgICAgICAgICAgIHB1c2goQGltcGxDb250ZW50LCAiYm9v
bCAke2NsYXNzTmFtZX06OmdldE93blByb3BlcnR5U2xvdChKU0NlbGwqIGNlbGwsIEV4ZWNTdGF0
ZSogZXhlYywgUHJvcGVydHlOYW1lIHByb3BlcnR5TmFtZSwgUHJvcGVydHlTbG90JiBzbG90KVxu
Iik7CiAgICAgICAgICAgICBwdXNoKEBpbXBsQ29udGVudCwgIntcbiIpOwogICAgICAgICAgICAg
cHVzaChAaW1wbENvbnRlbnQsICIgICAgJHtjbGFzc05hbWV9KiB0aGlzT2JqZWN0ID0ganNDYXN0
PCR7Y2xhc3NOYW1lfSo+KGNlbGwpO1xuIik7CiAgICAgICAgICAgICBwdXNoKEBpbXBsQ29udGVu
dCwgIiAgICBBU1NFUlRfR0NfT0JKRUNUX0lOSEVSSVRTKHRoaXNPYmplY3QsICZzX2luZm8pO1xu
Iik7CiAgICAgICAgICAgICBwdXNoKEBpbXBsQ29udGVudCwgR2VuZXJhdGVHZXRPd25Qcm9wZXJ0
eVNsb3RCb2R5KCRkYXRhTm9kZSwgJGludGVyZmFjZU5hbWUsICRjbGFzc05hbWUsICRpbXBsQ2xh
c3NOYW1lLCAkbnVtQXR0cmlidXRlcyA+IDAsIDApKTsKICAgICAgICAgICAgIHB1c2goQGltcGxD
b250ZW50LCAifVxuXG4iKTsKLSAgICAgICAgICAgIHB1c2goQGltcGxDb250ZW50LCAiYm9vbCAk
e2NsYXNzTmFtZX06OmdldE93blByb3BlcnR5RGVzY3JpcHRvcihKU09iamVjdCogb2JqZWN0LCBF
eGVjU3RhdGUqIGV4ZWMsIGNvbnN0IElkZW50aWZpZXImIHByb3BlcnR5TmFtZSwgUHJvcGVydHlE
ZXNjcmlwdG9yJiBkZXNjcmlwdG9yKVxuIik7CisgICAgICAgICAgICBwdXNoKEBpbXBsQ29udGVu
dCwgImJvb2wgJHtjbGFzc05hbWV9OjpnZXRPd25Qcm9wZXJ0eURlc2NyaXB0b3IoSlNPYmplY3Qq
IG9iamVjdCwgRXhlY1N0YXRlKiBleGVjLCBQcm9wZXJ0eU5hbWUgcHJvcGVydHlOYW1lLCBQcm9w
ZXJ0eURlc2NyaXB0b3ImIGRlc2NyaXB0b3IpXG4iKTsKICAgICAgICAgICAgIHB1c2goQGltcGxD
b250ZW50LCAie1xuIik7CiAgICAgICAgICAgICBwdXNoKEBpbXBsQ29udGVudCwgIiAgICAke2Ns
YXNzTmFtZX0qIHRoaXNPYmplY3QgPSBqc0Nhc3Q8JHtjbGFzc05hbWV9Kj4ob2JqZWN0KTtcbiIp
OwogICAgICAgICAgICAgcHVzaChAaW1wbENvbnRlbnQsICIgICAgQVNTRVJUX0dDX09CSkVDVF9J
TkhFUklUUyh0aGlzT2JqZWN0LCAmc19pbmZvKTtcbiIpOwpAQCAtMTY3NCw3ICsxNjcyLDcgQEAg
c3ViIEdlbmVyYXRlSW1wbGVtZW50YXRpb24KICAgICAgICAgICAgICAgICBteSAkYXR0cmlidXRl
Q29uZGl0aW9uYWxTdHJpbmcgPSAkY29kZUdlbmVyYXRvci0+R2VuZXJhdGVDb25kaXRpb25hbFN0
cmluZygkYXR0cmlidXRlLT5zaWduYXR1cmUpOwogICAgICAgICAgICAgICAgIHB1c2goQGltcGxD
b250ZW50LCAiI2lmICR7YXR0cmlidXRlQ29uZGl0aW9uYWxTdHJpbmd9XG4iKSBpZiAkYXR0cmli
dXRlQ29uZGl0aW9uYWxTdHJpbmc7CiAKLSAgICAgICAgICAgICAgICBwdXNoKEBpbXBsQ29udGVu
dCwgIkpTVmFsdWUgJHtnZXRGdW5jdGlvbk5hbWV9KEV4ZWNTdGF0ZSogZXhlYywgSlNWYWx1ZSBz
bG90QmFzZSwgY29uc3QgSWRlbnRpZmllciYpXG4iKTsKKyAgICAgICAgICAgICAgICBwdXNoKEBp
bXBsQ29udGVudCwgIkpTVmFsdWUgJHtnZXRGdW5jdGlvbk5hbWV9KEV4ZWNTdGF0ZSogZXhlYywg
SlNWYWx1ZSBzbG90QmFzZSwgUHJvcGVydHlOYW1lKVxuIik7CiAgICAgICAgICAgICAgICAgcHVz
aChAaW1wbENvbnRlbnQsICJ7XG4iKTsKICAgICAgICAgICAgICAgICBwdXNoKEBpbXBsQ29udGVu
dCwgIiAgICAke2NsYXNzTmFtZX0qIGNhc3RlZFRoaXMgPSBqc0Nhc3Q8JGNsYXNzTmFtZSo+KGFz
T2JqZWN0KHNsb3RCYXNlKSk7XG4iKTsKIApAQCAtMTc5Myw3ICsxNzkxLDcgQEAgc3ViIEdlbmVy
YXRlSW1wbGVtZW50YXRpb24KICAgICAgICAgICAgIGlmICghJGRhdGFOb2RlLT5leHRlbmRlZEF0
dHJpYnV0ZXMtPnsiT21pdENvbnN0cnVjdG9yIn0pIHsKICAgICAgICAgICAgICAgICBteSAkY29u
c3RydWN0b3JGdW5jdGlvbk5hbWUgPSAianMiIC4gJGludGVyZmFjZU5hbWUgLiAiQ29uc3RydWN0
b3IiOwogCi0gICAgICAgICAgICAgICAgcHVzaChAaW1wbENvbnRlbnQsICJKU1ZhbHVlICR7Y29u
c3RydWN0b3JGdW5jdGlvbk5hbWV9KEV4ZWNTdGF0ZSogZXhlYywgSlNWYWx1ZSBzbG90QmFzZSwg
Y29uc3QgSWRlbnRpZmllciYpXG4iKTsKKyAgICAgICAgICAgICAgICBwdXNoKEBpbXBsQ29udGVu
dCwgIkpTVmFsdWUgJHtjb25zdHJ1Y3RvckZ1bmN0aW9uTmFtZX0oRXhlY1N0YXRlKiBleGVjLCBK
U1ZhbHVlIHNsb3RCYXNlLCBQcm9wZXJ0eU5hbWUpXG4iKTsKICAgICAgICAgICAgICAgICBwdXNo
KEBpbXBsQ29udGVudCwgIntcbiIpOwogICAgICAgICAgICAgICAgIHB1c2goQGltcGxDb250ZW50
LCAiICAgICR7Y2xhc3NOYW1lfSogZG9tT2JqZWN0ID0ganNDYXN0PCRjbGFzc05hbWUqPihhc09i
amVjdChzbG90QmFzZSkpO1xuIik7CiAKQEAgLTE4MTksMTQgKzE4MTcsMTMgQEAgc3ViIEdlbmVy
YXRlSW1wbGVtZW50YXRpb24KIAogICAgICAgICBpZiAoJGhhc1NldHRlcikgewogICAgICAgICAg
ICAgaWYgKCEkZGF0YU5vZGUtPmV4dGVuZGVkQXR0cmlidXRlcy0+eyJDdXN0b21QdXRGdW5jdGlv
biJ9KSB7Ci0gICAgICAgICAgICAgICAgcHVzaChAaW1wbENvbnRlbnQsICJ2b2lkICR7Y2xhc3NO
YW1lfTo6cHV0KEpTQ2VsbCogY2VsbCwgRXhlY1N0YXRlKiBleGVjLCBjb25zdCBJZGVudGlmaWVy
JiBwcm9wZXJ0eU5hbWUsIEpTVmFsdWUgdmFsdWUsIFB1dFByb3BlcnR5U2xvdCYgc2xvdClcbiIp
OworICAgICAgICAgICAgICAgIHB1c2goQGltcGxDb250ZW50LCAidm9pZCAke2NsYXNzTmFtZX06
OnB1dChKU0NlbGwqIGNlbGwsIEV4ZWNTdGF0ZSogZXhlYywgUHJvcGVydHlOYW1lIHByb3BlcnR5
TmFtZSwgSlNWYWx1ZSB2YWx1ZSwgUHV0UHJvcGVydHlTbG90JiBzbG90KVxuIik7CiAgICAgICAg
ICAgICAgICAgcHVzaChAaW1wbENvbnRlbnQsICJ7XG4iKTsKICAgICAgICAgICAgICAgICBwdXNo
KEBpbXBsQ29udGVudCwgIiAgICAke2NsYXNzTmFtZX0qIHRoaXNPYmplY3QgPSBqc0Nhc3Q8JHtj
bGFzc05hbWV9Kj4oY2VsbCk7XG4iKTsKICAgICAgICAgICAgICAgICBwdXNoKEBpbXBsQ29udGVu
dCwgIiAgICBBU1NFUlRfR0NfT0JKRUNUX0lOSEVSSVRTKHRoaXNPYmplY3QsICZzX2luZm8pO1xu
Iik7CiAgICAgICAgICAgICAgICAgaWYgKCRkYXRhTm9kZS0+ZXh0ZW5kZWRBdHRyaWJ1dGVzLT57
IkN1c3RvbUluZGV4ZWRTZXR0ZXIifSkgewotICAgICAgICAgICAgICAgICAgICBwdXNoKEBpbXBs
Q29udGVudCwgIiAgICBib29sIG9rO1xuIik7Ci0gICAgICAgICAgICAgICAgICAgIHB1c2goQGlt
cGxDb250ZW50LCAiICAgIHVuc2lnbmVkIGluZGV4ID0gcHJvcGVydHlOYW1lLnRvVUludDMyKG9r
KTtcbiIpOwotICAgICAgICAgICAgICAgICAgICBwdXNoKEBpbXBsQ29udGVudCwgIiAgICBpZiAo
b2spIHtcbiIpOworICAgICAgICAgICAgICAgICAgICBwdXNoKEBpbXBsQ29udGVudCwgIiAgICB1
bnNpZ25lZCBpbmRleCA9IHByb3BlcnR5TmFtZS5hc0luZGV4KCk7XG4iKTsKKyAgICAgICAgICAg
ICAgICAgICAgcHVzaChAaW1wbENvbnRlbnQsICIgICAgaWYgKGluZGV4ICE9IFByb3BlcnR5TmFt
ZTo6Tm90QW5JbmRleCkge1xuIik7CiAgICAgICAgICAgICAgICAgICAgIHB1c2goQGltcGxDb250
ZW50LCAiICAgICAgICB0aGlzT2JqZWN0LT5pbmRleFNldHRlcihleGVjLCBpbmRleCwgdmFsdWUp
O1xuIik7CiAgICAgICAgICAgICAgICAgICAgIHB1c2goQGltcGxDb250ZW50LCAiICAgICAgICBy
ZXR1cm47XG4iKTsKICAgICAgICAgICAgICAgICAgICAgcHVzaChAaW1wbENvbnRlbnQsICIgICAg
fVxuIik7CkBAIC0yMTk4LDcgKzIxOTUsNyBAQCBzdWIgR2VuZXJhdGVJbXBsZW1lbnRhdGlvbgog
ICAgICAgICAgICAgfQogCiAgICAgICAgICAgICAjIEZJWE1FOiB0aGlzIGNhc3RzIGludG8gaW50
IHRvIG1hdGNoIG91ciBwcmV2aW91cyBiZWhhdmlvciB3aGljaCB0dXJuZWQgMHhGRkZGRkZGRiBp
biAtMSBmb3IgTm9kZUZpbHRlci5TSE9XX0FMTAotICAgICAgICAgICAgcHVzaChAaW1wbENvbnRl
bnQsICJKU1ZhbHVlICR7Z2V0dGVyfShFeGVjU3RhdGUqIGV4ZWMsIEpTVmFsdWUsIGNvbnN0IElk
ZW50aWZpZXImKVxuIik7CisgICAgICAgICAgICBwdXNoKEBpbXBsQ29udGVudCwgIkpTVmFsdWUg
JHtnZXR0ZXJ9KEV4ZWNTdGF0ZSogZXhlYywgSlNWYWx1ZSwgUHJvcGVydHlOYW1lKVxuIik7CiAg
ICAgICAgICAgICBwdXNoKEBpbXBsQ29udGVudCwgIntcbiIpOwogICAgICAgICAgICAgaWYgKCRj
b25zdGFudC0+dHlwZSBlcSAiRE9NU3RyaW5nIikgewogICAgICAgICAgICAgICAgIHB1c2goQGlt
cGxDb250ZW50LCAiICAgIHJldHVybiBqc1N0cmluZ09yTnVsbChleGVjLCBTdHJpbmcoIiAuICRj
b25zdGFudC0+dmFsdWUgLiAiKSk7XG4iKTsKQEAgLTIyNDcsMTQgKzIyNDQsMTQgQEAgc3ViIEdl
bmVyYXRlSW1wbGVtZW50YXRpb24KIAogICAgIGlmICgkaW50ZXJmYWNlTmFtZSBlcSAiSFRNTFBy
b3BlcnRpZXNDb2xsZWN0aW9uIikgewogICAgICAgICBpZiAoJGRhdGFOb2RlLT5leHRlbmRlZEF0
dHJpYnV0ZXMtPnsiTmFtZWRHZXR0ZXIifSkgewotICAgICAgICAgICAgcHVzaChAaW1wbENvbnRl
bnQsICJib29sICR7Y2xhc3NOYW1lfTo6Y2FuR2V0SXRlbXNGb3JOYW1lKEV4ZWNTdGF0ZSosICRp
bXBsQ2xhc3NOYW1lKiBjb2xsZWN0aW9uLCBjb25zdCBJZGVudGlmaWVyJiBwcm9wZXJ0eU5hbWUp
XG4iKTsKKyAgICAgICAgICAgIHB1c2goQGltcGxDb250ZW50LCAiYm9vbCAke2NsYXNzTmFtZX06
OmNhbkdldEl0ZW1zRm9yTmFtZShFeGVjU3RhdGUqLCAkaW1wbENsYXNzTmFtZSogY29sbGVjdGlv
biwgUHJvcGVydHlOYW1lIHByb3BlcnR5TmFtZSlcbiIpOwogICAgICAgICAgICAgcHVzaChAaW1w
bENvbnRlbnQsICJ7XG4iKTsKLSAgICAgICAgICAgIHB1c2goQGltcGxDb250ZW50LCAiICAgIHJl
dHVybiBjb2xsZWN0aW9uLT5oYXNOYW1lZEl0ZW0oaWRlbnRpZmllclRvQXRvbWljU3RyaW5nKHBy
b3BlcnR5TmFtZSkpO1xuIik7CisgICAgICAgICAgICBwdXNoKEBpbXBsQ29udGVudCwgIiAgICBy
ZXR1cm4gY29sbGVjdGlvbi0+aGFzTmFtZWRJdGVtKHByb3BlcnR5TmFtZVRvQXRvbWljU3RyaW5n
KHByb3BlcnR5TmFtZSkpO1xuIik7CiAgICAgICAgICAgICBwdXNoKEBpbXBsQ29udGVudCwgIn1c
blxuIik7Ci0gICAgICAgICAgICBwdXNoKEBpbXBsQ29udGVudCwgIkpTVmFsdWUgJHtjbGFzc05h
bWV9OjpuYW1lR2V0dGVyKEV4ZWNTdGF0ZSogZXhlYywgSlNWYWx1ZSBzbG90QmFzZSwgY29uc3Qg
SWRlbnRpZmllciYgcHJvcGVydHlOYW1lKVxuIik7CisgICAgICAgICAgICBwdXNoKEBpbXBsQ29u
dGVudCwgIkpTVmFsdWUgJHtjbGFzc05hbWV9OjpuYW1lR2V0dGVyKEV4ZWNTdGF0ZSogZXhlYywg
SlNWYWx1ZSBzbG90QmFzZSwgUHJvcGVydHlOYW1lIHByb3BlcnR5TmFtZSlcbiIpOwogICAgICAg
ICAgICAgcHVzaChAaW1wbENvbnRlbnQsICJ7XG4iKTsKICAgICAgICAgICAgIHB1c2goQGltcGxD
b250ZW50LCAiICAgICR7Y2xhc3NOYW1lfSogdGhpc09iaiA9IGpzQ2FzdDwkY2xhc3NOYW1lKj4o
YXNPYmplY3Qoc2xvdEJhc2UpKTtcbiIpOwotICAgICAgICAgICAgcHVzaChAaW1wbENvbnRlbnQs
ICIgICAgcmV0dXJuIHRvSlMoZXhlYywgdGhpc09iai0+Z2xvYmFsT2JqZWN0KCksIHN0YXRpY19j
YXN0PCRpbXBsQ2xhc3NOYW1lKj4odGhpc09iai0+aW1wbCgpKS0+bmFtZWRJdGVtKGlkZW50aWZp
ZXJUb0F0b21pY1N0cmluZyhwcm9wZXJ0eU5hbWUpKSk7XG4iKTsKKyAgICAgICAgICAgIHB1c2go
QGltcGxDb250ZW50LCAiICAgIHJldHVybiB0b0pTKGV4ZWMsIHRoaXNPYmotPmdsb2JhbE9iamVj
dCgpLCBzdGF0aWNfY2FzdDwkaW1wbENsYXNzTmFtZSo+KHRoaXNPYmotPmltcGwoKSktPm5hbWVk
SXRlbShwcm9wZXJ0eU5hbWVUb0F0b21pY1N0cmluZyhwcm9wZXJ0eU5hbWUpKSk7XG4iKTsKICAg
ICAgICAgICAgIHB1c2goQGltcGxDb250ZW50LCAifVxuXG4iKTsKICAgICAgICAgfQogICAgIH0K
QEAgLTMzODcsOCArMzM4NCw4IEBAIHN1YiBHZW5lcmF0ZUNvbnN0cnVjdG9yRGVjbGFyYXRpb24K
ICAgICBwdXNoKEAkb3V0cHV0QXJyYXksICIgICAgICAgIHJldHVybiBwdHI7XG4iKTsKICAgICBw
dXNoKEAkb3V0cHV0QXJyYXksICIgICAgfVxuXG4iKTsKIAotICAgIHB1c2goQCRvdXRwdXRBcnJh
eSwgIiAgICBzdGF0aWMgYm9vbCBnZXRPd25Qcm9wZXJ0eVNsb3QoSlNDOjpKU0NlbGwqLCBKU0M6
OkV4ZWNTdGF0ZSosIGNvbnN0IEpTQzo6SWRlbnRpZmllciYsIEpTQzo6UHJvcGVydHlTbG90Jik7
XG4iKTsKLSAgICBwdXNoKEAkb3V0cHV0QXJyYXksICIgICAgc3RhdGljIGJvb2wgZ2V0T3duUHJv
cGVydHlEZXNjcmlwdG9yKEpTQzo6SlNPYmplY3QqLCBKU0M6OkV4ZWNTdGF0ZSosIGNvbnN0IEpT
Qzo6SWRlbnRpZmllciYsIEpTQzo6UHJvcGVydHlEZXNjcmlwdG9yJik7XG4iKTsKKyAgICBwdXNo
KEAkb3V0cHV0QXJyYXksICIgICAgc3RhdGljIGJvb2wgZ2V0T3duUHJvcGVydHlTbG90KEpTQzo6
SlNDZWxsKiwgSlNDOjpFeGVjU3RhdGUqLCBKU0M6OlByb3BlcnR5TmFtZSwgSlNDOjpQcm9wZXJ0
eVNsb3QmKTtcbiIpOworICAgIHB1c2goQCRvdXRwdXRBcnJheSwgIiAgICBzdGF0aWMgYm9vbCBn
ZXRPd25Qcm9wZXJ0eURlc2NyaXB0b3IoSlNDOjpKU09iamVjdCosIEpTQzo6RXhlY1N0YXRlKiwg
SlNDOjpQcm9wZXJ0eU5hbWUsIEpTQzo6UHJvcGVydHlEZXNjcmlwdG9yJik7XG4iKTsKICAgICBw
dXNoKEAkb3V0cHV0QXJyYXksICIgICAgc3RhdGljIGNvbnN0IEpTQzo6Q2xhc3NJbmZvIHNfaW5m
bztcbiIpOwogCiAgICAgcHVzaChAJG91dHB1dEFycmF5LCAiICAgIHN0YXRpYyBKU0M6OlN0cnVj
dHVyZSogY3JlYXRlU3RydWN0dXJlKEpTQzo6SlNHbG9iYWxEYXRhJiBnbG9iYWxEYXRhLCBKU0M6
OkpTR2xvYmFsT2JqZWN0KiBnbG9iYWxPYmplY3QsIEpTQzo6SlNWYWx1ZSBwcm90b3R5cGUpXG4i
KTsKQEAgLTM1MDQsMTIgKzM1MDEsMTIgQEAgc3ViIEdlbmVyYXRlQ29uc3RydWN0b3JEZWZpbml0
aW9uCiAKICAgICAgICAgbXkgJGtpbmQgPSAkaGFzU3RhdGljRnVuY3Rpb25zID8gIlByb3BlcnR5
IiA6ICJWYWx1ZSI7CiAKLSAgICAgICAgcHVzaChAJG91dHB1dEFycmF5LCAiYm9vbCAke2NvbnN0
cnVjdG9yQ2xhc3NOYW1lfTo6Z2V0T3duUHJvcGVydHlTbG90KEpTQ2VsbCogY2VsbCwgRXhlY1N0
YXRlKiBleGVjLCBjb25zdCBJZGVudGlmaWVyJiBwcm9wZXJ0eU5hbWUsIFByb3BlcnR5U2xvdCYg
c2xvdClcbiIpOworICAgICAgICBwdXNoKEAkb3V0cHV0QXJyYXksICJib29sICR7Y29uc3RydWN0
b3JDbGFzc05hbWV9OjpnZXRPd25Qcm9wZXJ0eVNsb3QoSlNDZWxsKiBjZWxsLCBFeGVjU3RhdGUq
IGV4ZWMsIFByb3BlcnR5TmFtZSBwcm9wZXJ0eU5hbWUsIFByb3BlcnR5U2xvdCYgc2xvdClcbiIp
OwogICAgICAgICBwdXNoKEAkb3V0cHV0QXJyYXksICJ7XG4iKTsKICAgICAgICAgcHVzaChAJG91
dHB1dEFycmF5LCAiICAgIHJldHVybiBnZXRTdGF0aWMke2tpbmR9U2xvdDwke2NvbnN0cnVjdG9y
Q2xhc3NOYW1lfSwgSlNET01XcmFwcGVyPihleGVjLCAmJHtjb25zdHJ1Y3RvckNsYXNzTmFtZX1U
YWJsZSwganNDYXN0PCR7Y29uc3RydWN0b3JDbGFzc05hbWV9Kj4oY2VsbCksIHByb3BlcnR5TmFt
ZSwgc2xvdCk7XG4iKTsKICAgICAgICAgcHVzaChAJG91dHB1dEFycmF5LCAifVxuXG4iKTsKIAot
ICAgICAgICBwdXNoKEAkb3V0cHV0QXJyYXksICJib29sICR7Y29uc3RydWN0b3JDbGFzc05hbWV9
OjpnZXRPd25Qcm9wZXJ0eURlc2NyaXB0b3IoSlNPYmplY3QqIG9iamVjdCwgRXhlY1N0YXRlKiBl
eGVjLCBjb25zdCBJZGVudGlmaWVyJiBwcm9wZXJ0eU5hbWUsIFByb3BlcnR5RGVzY3JpcHRvciYg
ZGVzY3JpcHRvcilcbiIpOworICAgICAgICBwdXNoKEAkb3V0cHV0QXJyYXksICJib29sICR7Y29u
c3RydWN0b3JDbGFzc05hbWV9OjpnZXRPd25Qcm9wZXJ0eURlc2NyaXB0b3IoSlNPYmplY3QqIG9i
amVjdCwgRXhlY1N0YXRlKiBleGVjLCBQcm9wZXJ0eU5hbWUgcHJvcGVydHlOYW1lLCBQcm9wZXJ0
eURlc2NyaXB0b3ImIGRlc2NyaXB0b3IpXG4iKTsKICAgICAgICAgcHVzaChAJG91dHB1dEFycmF5
LCAie1xuIik7CiAgICAgICAgIHB1c2goQCRvdXRwdXRBcnJheSwgIiAgICByZXR1cm4gZ2V0U3Rh
dGljJHtraW5kfURlc2NyaXB0b3I8JHtjb25zdHJ1Y3RvckNsYXNzTmFtZX0sIEpTRE9NV3JhcHBl
cj4oZXhlYywgJiR7Y29uc3RydWN0b3JDbGFzc05hbWV9VGFibGUsIGpzQ2FzdDwke2NvbnN0cnVj
dG9yQ2xhc3NOYW1lfSo+KG9iamVjdCksIHByb3BlcnR5TmFtZSwgZGVzY3JpcHRvcik7XG4iKTsK
ICAgICAgICAgcHVzaChAJG91dHB1dEFycmF5LCAifVxuXG4iKTsKSW5kZXg6IFNvdXJjZS9XZWJD
b3JlL2JyaWRnZS9ydW50aW1lX2FycmF5LmNwcAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2ViQ29y
ZS9icmlkZ2UvcnVudGltZV9hcnJheS5jcHAJKHJldmlzaW9uIDExNjY2NykKKysrIFNvdXJjZS9X
ZWJDb3JlL2JyaWRnZS9ydW50aW1lX2FycmF5LmNwcAkod29ya2luZyBjb3B5KQpAQCAtNjAsNyAr
NjAsNyBAQCB2b2lkIFJ1bnRpbWVBcnJheTo6ZGVzdHJveShKU0NlbGwqIGNlbGwpCiAgICAganND
YXN0PFJ1bnRpbWVBcnJheSo+KGNlbGwpLT5SdW50aW1lQXJyYXk6On5SdW50aW1lQXJyYXkoKTsK
IH0KIAotSlNWYWx1ZSBSdW50aW1lQXJyYXk6Omxlbmd0aEdldHRlcihFeGVjU3RhdGUqLCBKU1Zh
bHVlIHNsb3RCYXNlLCBjb25zdCBJZGVudGlmaWVyJikKK0pTVmFsdWUgUnVudGltZUFycmF5Ojps
ZW5ndGhHZXR0ZXIoRXhlY1N0YXRlKiwgSlNWYWx1ZSBzbG90QmFzZSwgUHJvcGVydHlOYW1lKQog
ewogICAgIFJ1bnRpbWVBcnJheSogdGhpc09iaiA9IHN0YXRpY19jYXN0PFJ1bnRpbWVBcnJheSo+
KGFzT2JqZWN0KHNsb3RCYXNlKSk7CiAgICAgcmV0dXJuIGpzTnVtYmVyKHRoaXNPYmotPmdldExl
bmd0aCgpKTsKQEAgLTg1LDcgKzg1LDcgQEAgdm9pZCBSdW50aW1lQXJyYXk6OmdldE93blByb3Bl
cnR5TmFtZXMoSgogICAgIEpTT2JqZWN0OjpnZXRPd25Qcm9wZXJ0eU5hbWVzKHRoaXNPYmplY3Qs
IGV4ZWMsIHByb3BlcnR5TmFtZXMsIG1vZGUpOwogfQogCi1ib29sIFJ1bnRpbWVBcnJheTo6Z2V0
T3duUHJvcGVydHlTbG90KEpTQ2VsbCogY2VsbCwgRXhlY1N0YXRlKiBleGVjLCBjb25zdCBJZGVu
dGlmaWVyJiBwcm9wZXJ0eU5hbWUsIFByb3BlcnR5U2xvdCYgc2xvdCkKK2Jvb2wgUnVudGltZUFy
cmF5OjpnZXRPd25Qcm9wZXJ0eVNsb3QoSlNDZWxsKiBjZWxsLCBFeGVjU3RhdGUqIGV4ZWMsIFBy
b3BlcnR5TmFtZSBwcm9wZXJ0eU5hbWUsIFByb3BlcnR5U2xvdCYgc2xvdCkKIHsKICAgICBSdW50
aW1lQXJyYXkqIHRoaXNPYmplY3QgPSBqc0Nhc3Q8UnVudGltZUFycmF5Kj4oY2VsbCk7CiAgICAg
aWYgKHByb3BlcnR5TmFtZSA9PSBleGVjLT5wcm9wZXJ0eU5hbWVzKCkubGVuZ3RoKSB7CkBAIC05
MywxOSArOTMsMTcgQEAgYm9vbCBSdW50aW1lQXJyYXk6OmdldE93blByb3BlcnR5U2xvdChKUwog
ICAgICAgICByZXR1cm4gdHJ1ZTsKICAgICB9CiAgICAgCi0gICAgYm9vbCBvazsKLSAgICB1bnNp
Z25lZCBpbmRleCA9IHByb3BlcnR5TmFtZS50b0FycmF5SW5kZXgob2spOwotICAgIGlmIChvaykg
ewotICAgICAgICBpZiAoaW5kZXggPCB0aGlzT2JqZWN0LT5nZXRMZW5ndGgoKSkgewotICAgICAg
ICAgICAgc2xvdC5zZXRDdXN0b21JbmRleCh0aGlzT2JqZWN0LCBpbmRleCwgdGhpc09iamVjdC0+
aW5kZXhHZXR0ZXIpOwotICAgICAgICAgICAgcmV0dXJuIHRydWU7Ci0gICAgICAgIH0KKyAgICB1
bnNpZ25lZCBpbmRleCA9IHByb3BlcnR5TmFtZS5hc0luZGV4KCk7CisgICAgaWYgKGluZGV4IDwg
dGhpc09iamVjdC0+Z2V0TGVuZ3RoKCkpIHsKKyAgICAgICAgQVNTRVJUKGluZGV4ICE9IFByb3Bl
cnR5TmFtZTo6Tm90QW5JbmRleCk7CisgICAgICAgIHNsb3Quc2V0Q3VzdG9tSW5kZXgodGhpc09i
amVjdCwgaW5kZXgsIHRoaXNPYmplY3QtPmluZGV4R2V0dGVyKTsKKyAgICAgICAgcmV0dXJuIHRy
dWU7CiAgICAgfQogICAgIAogICAgIHJldHVybiBKU09iamVjdDo6Z2V0T3duUHJvcGVydHlTbG90
KHRoaXNPYmplY3QsIGV4ZWMsIHByb3BlcnR5TmFtZSwgc2xvdCk7CiB9CiAKLWJvb2wgUnVudGlt
ZUFycmF5OjpnZXRPd25Qcm9wZXJ0eURlc2NyaXB0b3IoSlNPYmplY3QqIG9iamVjdCwgRXhlY1N0
YXRlKiBleGVjLCBjb25zdCBJZGVudGlmaWVyJiBwcm9wZXJ0eU5hbWUsIFByb3BlcnR5RGVzY3Jp
cHRvciYgZGVzY3JpcHRvcikKK2Jvb2wgUnVudGltZUFycmF5OjpnZXRPd25Qcm9wZXJ0eURlc2Ny
aXB0b3IoSlNPYmplY3QqIG9iamVjdCwgRXhlY1N0YXRlKiBleGVjLCBQcm9wZXJ0eU5hbWUgcHJv
cGVydHlOYW1lLCBQcm9wZXJ0eURlc2NyaXB0b3ImIGRlc2NyaXB0b3IpCiB7CiAgICAgUnVudGlt
ZUFycmF5KiB0aGlzT2JqZWN0ID0ganNDYXN0PFJ1bnRpbWVBcnJheSo+KG9iamVjdCk7CiAgICAg
aWYgKHByb3BlcnR5TmFtZSA9PSBleGVjLT5wcm9wZXJ0eU5hbWVzKCkubGVuZ3RoKSB7CkBAIC0x
MTUsMTUgKzExMywxMyBAQCBib29sIFJ1bnRpbWVBcnJheTo6Z2V0T3duUHJvcGVydHlEZXNjcmlw
CiAgICAgICAgIHJldHVybiB0cnVlOwogICAgIH0KICAgICAKLSAgICBib29sIG9rOwotICAgIHVu
c2lnbmVkIGluZGV4ID0gcHJvcGVydHlOYW1lLnRvQXJyYXlJbmRleChvayk7Ci0gICAgaWYgKG9r
KSB7Ci0gICAgICAgIGlmIChpbmRleCA8IHRoaXNPYmplY3QtPmdldExlbmd0aCgpKSB7Ci0gICAg
ICAgICAgICBQcm9wZXJ0eVNsb3Qgc2xvdDsKLSAgICAgICAgICAgIHNsb3Quc2V0Q3VzdG9tSW5k
ZXgodGhpc09iamVjdCwgaW5kZXgsIGluZGV4R2V0dGVyKTsKLSAgICAgICAgICAgIGRlc2NyaXB0
b3Iuc2V0RGVzY3JpcHRvcihzbG90LmdldFZhbHVlKGV4ZWMsIHByb3BlcnR5TmFtZSksIERvbnRE
ZWxldGUgfCBEb250RW51bSk7Ci0gICAgICAgICAgICByZXR1cm4gdHJ1ZTsKLSAgICAgICAgfQor
ICAgIHVuc2lnbmVkIGluZGV4ID0gcHJvcGVydHlOYW1lLmFzSW5kZXgoKTsKKyAgICBpZiAoaW5k
ZXggPCB0aGlzT2JqZWN0LT5nZXRMZW5ndGgoKSkgeworICAgICAgICBBU1NFUlQoaW5kZXggIT0g
UHJvcGVydHlOYW1lOjpOb3RBbkluZGV4KTsKKyAgICAgICAgUHJvcGVydHlTbG90IHNsb3Q7Cisg
ICAgICAgIHNsb3Quc2V0Q3VzdG9tSW5kZXgodGhpc09iamVjdCwgaW5kZXgsIGluZGV4R2V0dGVy
KTsKKyAgICAgICAgZGVzY3JpcHRvci5zZXREZXNjcmlwdG9yKHNsb3QuZ2V0VmFsdWUoZXhlYywg
cHJvcGVydHlOYW1lKSwgRG9udERlbGV0ZSB8IERvbnRFbnVtKTsKKyAgICAgICAgcmV0dXJuIHRy
dWU7CiAgICAgfQogICAgIAogICAgIHJldHVybiBKU09iamVjdDo6Z2V0T3duUHJvcGVydHlEZXNj
cmlwdG9yKHRoaXNPYmplY3QsIGV4ZWMsIHByb3BlcnR5TmFtZSwgZGVzY3JpcHRvcik7CkBAIC0x
NDAsNyArMTM2LDcgQEAgYm9vbCBSdW50aW1lQXJyYXk6OmdldE93blByb3BlcnR5U2xvdEJ5SQog
ICAgIHJldHVybiBKU09iamVjdDo6Z2V0T3duUHJvcGVydHlTbG90QnlJbmRleCh0aGlzT2JqZWN0
LCBleGVjLCBpbmRleCwgc2xvdCk7CiB9CiAKLXZvaWQgUnVudGltZUFycmF5OjpwdXQoSlNDZWxs
KiBjZWxsLCBFeGVjU3RhdGUqIGV4ZWMsIGNvbnN0IElkZW50aWZpZXImIHByb3BlcnR5TmFtZSwg
SlNWYWx1ZSB2YWx1ZSwgUHV0UHJvcGVydHlTbG90JiBzbG90KQordm9pZCBSdW50aW1lQXJyYXk6
OnB1dChKU0NlbGwqIGNlbGwsIEV4ZWNTdGF0ZSogZXhlYywgUHJvcGVydHlOYW1lIHByb3BlcnR5
TmFtZSwgSlNWYWx1ZSB2YWx1ZSwgUHV0UHJvcGVydHlTbG90JiBzbG90KQogewogICAgIFJ1bnRp
bWVBcnJheSogdGhpc09iamVjdCA9IGpzQ2FzdDxSdW50aW1lQXJyYXkqPihjZWxsKTsKICAgICBp
ZiAocHJvcGVydHlOYW1lID09IGV4ZWMtPnByb3BlcnR5TmFtZXMoKS5sZW5ndGgpIHsKQEAgLTE0
OCw5ICsxNDQsOCBAQCB2b2lkIFJ1bnRpbWVBcnJheTo6cHV0KEpTQ2VsbCogY2VsbCwgRXhlCiAg
ICAgICAgIHJldHVybjsKICAgICB9CiAgICAgCi0gICAgYm9vbCBvazsKLSAgICB1bnNpZ25lZCBp
bmRleCA9IHByb3BlcnR5TmFtZS50b0FycmF5SW5kZXgob2spOwotICAgIGlmIChvaykgeworICAg
IHVuc2lnbmVkIGluZGV4ID0gcHJvcGVydHlOYW1lLmFzSW5kZXgoKTsKKyAgICBpZiAoaW5kZXgg
IT0gUHJvcGVydHlOYW1lOjpOb3RBbkluZGV4KSB7CiAgICAgICAgIHRoaXNPYmplY3QtPmdldENv
bmNyZXRlQXJyYXkoKS0+c2V0VmFsdWVBdChleGVjLCBpbmRleCwgdmFsdWUpOwogICAgICAgICBy
ZXR1cm47CiAgICAgfQpAQCAtMTY5LDcgKzE2NCw3IEBAIHZvaWQgUnVudGltZUFycmF5OjpwdXRC
eUluZGV4KEpTQ2VsbCogY2UKICAgICB0aGlzT2JqZWN0LT5nZXRDb25jcmV0ZUFycmF5KCktPnNl
dFZhbHVlQXQoZXhlYywgaW5kZXgsIHZhbHVlKTsKIH0KIAotYm9vbCBSdW50aW1lQXJyYXk6OmRl
bGV0ZVByb3BlcnR5KEpTQ2VsbCosIEV4ZWNTdGF0ZSosIGNvbnN0IElkZW50aWZpZXImKQorYm9v
bCBSdW50aW1lQXJyYXk6OmRlbGV0ZVByb3BlcnR5KEpTQ2VsbCosIEV4ZWNTdGF0ZSosIFByb3Bl
cnR5TmFtZSkKIHsKICAgICByZXR1cm4gZmFsc2U7CiB9CkluZGV4OiBTb3VyY2UvV2ViQ29yZS9i
cmlkZ2UvcnVudGltZV9hcnJheS5oCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9XZWJDb3JlL2JyaWRn
ZS9ydW50aW1lX2FycmF5LmgJKHJldmlzaW9uIDExNjY2NykKKysrIFNvdXJjZS9XZWJDb3JlL2Jy
aWRnZS9ydW50aW1lX2FycmF5LmgJKHdvcmtpbmcgY29weSkKQEAgLTUxLDEzICs1MSwxMyBAQCBw
dWJsaWM6CiAgICAgc3RhdGljIHZvaWQgZGVzdHJveShKU0NlbGwqKTsKIAogICAgIHN0YXRpYyB2
b2lkIGdldE93blByb3BlcnR5TmFtZXMoSlNPYmplY3QqLCBFeGVjU3RhdGUqLCBQcm9wZXJ0eU5h
bWVBcnJheSYsIEVudW1lcmF0aW9uTW9kZSk7Ci0gICAgc3RhdGljIGJvb2wgZ2V0T3duUHJvcGVy
dHlTbG90KEpTQ2VsbCosIEV4ZWNTdGF0ZSosIGNvbnN0IElkZW50aWZpZXImLCBQcm9wZXJ0eVNs
b3QmKTsKKyAgICBzdGF0aWMgYm9vbCBnZXRPd25Qcm9wZXJ0eVNsb3QoSlNDZWxsKiwgRXhlY1N0
YXRlKiwgUHJvcGVydHlOYW1lLCBQcm9wZXJ0eVNsb3QmKTsKICAgICBzdGF0aWMgYm9vbCBnZXRP
d25Qcm9wZXJ0eVNsb3RCeUluZGV4KEpTQ2VsbCosIEV4ZWNTdGF0ZSosIHVuc2lnbmVkLCBQcm9w
ZXJ0eVNsb3QmKTsKLSAgICBzdGF0aWMgYm9vbCBnZXRPd25Qcm9wZXJ0eURlc2NyaXB0b3IoSlNP
YmplY3QqLCBFeGVjU3RhdGUqLCBjb25zdCBJZGVudGlmaWVyJiwgUHJvcGVydHlEZXNjcmlwdG9y
Jik7Ci0gICAgc3RhdGljIHZvaWQgcHV0KEpTQ2VsbCosIEV4ZWNTdGF0ZSosIGNvbnN0IElkZW50
aWZpZXImIHByb3BlcnR5TmFtZSwgSlNWYWx1ZSwgUHV0UHJvcGVydHlTbG90Jik7CisgICAgc3Rh
dGljIGJvb2wgZ2V0T3duUHJvcGVydHlEZXNjcmlwdG9yKEpTT2JqZWN0KiwgRXhlY1N0YXRlKiwg
UHJvcGVydHlOYW1lLCBQcm9wZXJ0eURlc2NyaXB0b3ImKTsKKyAgICBzdGF0aWMgdm9pZCBwdXQo
SlNDZWxsKiwgRXhlY1N0YXRlKiwgUHJvcGVydHlOYW1lLCBKU1ZhbHVlLCBQdXRQcm9wZXJ0eVNs
b3QmKTsKICAgICBzdGF0aWMgdm9pZCBwdXRCeUluZGV4KEpTQ2VsbCosIEV4ZWNTdGF0ZSosIHVu
c2lnbmVkIHByb3BlcnR5TmFtZSwgSlNWYWx1ZSwgYm9vbCBzaG91bGRUaHJvdyk7CiAgICAgCi0g
ICAgc3RhdGljIGJvb2wgZGVsZXRlUHJvcGVydHkoSlNDZWxsKiwgRXhlY1N0YXRlKiwgY29uc3Qg
SWRlbnRpZmllciAmcHJvcGVydHlOYW1lKTsKKyAgICBzdGF0aWMgYm9vbCBkZWxldGVQcm9wZXJ0
eShKU0NlbGwqLCBFeGVjU3RhdGUqLCBQcm9wZXJ0eU5hbWUpOwogICAgIHN0YXRpYyBib29sIGRl
bGV0ZVByb3BlcnR5QnlJbmRleChKU0NlbGwqLCBFeGVjU3RhdGUqLCB1bnNpZ25lZCBwcm9wZXJ0
eU5hbWUpOwogICAgIAogICAgIHVuc2lnbmVkIGdldExlbmd0aCgpIGNvbnN0IHsgcmV0dXJuIG1f
YXJyYXktPmdldExlbmd0aCgpOyB9CkBAIC04Myw3ICs4Myw3IEBAIHByb3RlY3RlZDoKIAogcHJp
dmF0ZToKICAgICBSdW50aW1lQXJyYXkoRXhlY1N0YXRlKiwgU3RydWN0dXJlKik7Ci0gICAgc3Rh
dGljIEpTVmFsdWUgbGVuZ3RoR2V0dGVyKEV4ZWNTdGF0ZSosIEpTVmFsdWUsIGNvbnN0IElkZW50
aWZpZXImKTsKKyAgICBzdGF0aWMgSlNWYWx1ZSBsZW5ndGhHZXR0ZXIoRXhlY1N0YXRlKiwgSlNW
YWx1ZSwgUHJvcGVydHlOYW1lKTsKICAgICBzdGF0aWMgSlNWYWx1ZSBpbmRleEdldHRlcihFeGVj
U3RhdGUqLCBKU1ZhbHVlLCB1bnNpZ25lZCk7CiAKICAgICBCaW5kaW5nc0FycmF5KiBtX2FycmF5
OwpJbmRleDogU291cmNlL1dlYkNvcmUvYnJpZGdlL3J1bnRpbWVfbWV0aG9kLmNwcAo9PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09Ci0tLSBTb3VyY2UvV2ViQ29yZS9icmlkZ2UvcnVudGltZV9tZXRob2QuY3BwCShyZXZpc2lv
biAxMTY2NjcpCisrKyBTb3VyY2UvV2ViQ29yZS9icmlkZ2UvcnVudGltZV9tZXRob2QuY3BwCSh3
b3JraW5nIGNvcHkpCkBAIC01NSwxMyArNTUsMTMgQEAgdm9pZCBSdW50aW1lTWV0aG9kOjpkZXN0
cm95KEpTQ2VsbCogY2VsbAogICAgIGpzQ2FzdDxSdW50aW1lTWV0aG9kKj4oY2VsbCktPlJ1bnRp
bWVNZXRob2Q6On5SdW50aW1lTWV0aG9kKCk7CiB9CiAKLXZvaWQgUnVudGltZU1ldGhvZDo6Zmlu
aXNoQ3JlYXRpb24oSlNHbG9iYWxEYXRhJiBnbG9iYWxEYXRhLCBjb25zdCBJZGVudGlmaWVyJiBp
ZGVudCkKK3ZvaWQgUnVudGltZU1ldGhvZDo6ZmluaXNoQ3JlYXRpb24oSlNHbG9iYWxEYXRhJiBn
bG9iYWxEYXRhLCBjb25zdCBVU3RyaW5nJiBpZGVudCkKIHsKICAgICBCYXNlOjpmaW5pc2hDcmVh
dGlvbihnbG9iYWxEYXRhLCBpZGVudCk7CiAgICAgQVNTRVJUKGluaGVyaXRzKCZzX2luZm8pKTsK
IH0KIAotSlNWYWx1ZSBSdW50aW1lTWV0aG9kOjpsZW5ndGhHZXR0ZXIoRXhlY1N0YXRlKiwgSlNW
YWx1ZSBzbG90QmFzZSwgY29uc3QgSWRlbnRpZmllciYpCitKU1ZhbHVlIFJ1bnRpbWVNZXRob2Q6
Omxlbmd0aEdldHRlcihFeGVjU3RhdGUqLCBKU1ZhbHVlIHNsb3RCYXNlLCBQcm9wZXJ0eU5hbWUp
CiB7CiAgICAgUnVudGltZU1ldGhvZCogdGhpc09iaiA9IHN0YXRpY19jYXN0PFJ1bnRpbWVNZXRo
b2QqPihhc09iamVjdChzbG90QmFzZSkpOwogCkBAIC03NCw3ICs3NCw3IEBAIEpTVmFsdWUgUnVu
dGltZU1ldGhvZDo6bGVuZ3RoR2V0dGVyKEV4ZWMKICAgICByZXR1cm4ganNOdW1iZXIodGhpc09i
ai0+X21ldGhvZExpc3QtPmF0KDApLT5udW1QYXJhbWV0ZXJzKCkpOwogfQogCi1ib29sIFJ1bnRp
bWVNZXRob2Q6OmdldE93blByb3BlcnR5U2xvdChKU0NlbGwqIGNlbGwsIEV4ZWNTdGF0ZSogZXhl
YywgY29uc3QgSWRlbnRpZmllciYgcHJvcGVydHlOYW1lLCBQcm9wZXJ0eVNsb3QgJnNsb3QpCiti
b29sIFJ1bnRpbWVNZXRob2Q6OmdldE93blByb3BlcnR5U2xvdChKU0NlbGwqIGNlbGwsIEV4ZWNT
dGF0ZSogZXhlYywgUHJvcGVydHlOYW1lIHByb3BlcnR5TmFtZSwgUHJvcGVydHlTbG90ICZzbG90
KQogewogICAgIFJ1bnRpbWVNZXRob2QqIHRoaXNPYmplY3QgPSBqc0Nhc3Q8UnVudGltZU1ldGhv
ZCo+KGNlbGwpOwogICAgIGlmIChwcm9wZXJ0eU5hbWUgPT0gZXhlYy0+cHJvcGVydHlOYW1lcygp
Lmxlbmd0aCkgewpAQCAtODUsNyArODUsNyBAQCBib29sIFJ1bnRpbWVNZXRob2Q6OmdldE93blBy
b3BlcnR5U2xvdChKCiAgICAgcmV0dXJuIEludGVybmFsRnVuY3Rpb246OmdldE93blByb3BlcnR5
U2xvdCh0aGlzT2JqZWN0LCBleGVjLCBwcm9wZXJ0eU5hbWUsIHNsb3QpOwogfQogCi1ib29sIFJ1
bnRpbWVNZXRob2Q6OmdldE93blByb3BlcnR5RGVzY3JpcHRvcihKU09iamVjdCogb2JqZWN0LCBF
eGVjU3RhdGUqIGV4ZWMsIGNvbnN0IElkZW50aWZpZXImIHByb3BlcnR5TmFtZSwgUHJvcGVydHlE
ZXNjcmlwdG9yICZkZXNjcmlwdG9yKQorYm9vbCBSdW50aW1lTWV0aG9kOjpnZXRPd25Qcm9wZXJ0
eURlc2NyaXB0b3IoSlNPYmplY3QqIG9iamVjdCwgRXhlY1N0YXRlKiBleGVjLCBQcm9wZXJ0eU5h
bWUgcHJvcGVydHlOYW1lLCBQcm9wZXJ0eURlc2NyaXB0b3IgJmRlc2NyaXB0b3IpCiB7CiAgICAg
UnVudGltZU1ldGhvZCogdGhpc09iamVjdCA9IGpzQ2FzdDxSdW50aW1lTWV0aG9kKj4ob2JqZWN0
KTsKICAgICBpZiAocHJvcGVydHlOYW1lID09IGV4ZWMtPnByb3BlcnR5TmFtZXMoKS5sZW5ndGgp
IHsKSW5kZXg6IFNvdXJjZS9XZWJDb3JlL2JyaWRnZS9ydW50aW1lX21ldGhvZC5oCj09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT0KLS0tIFNvdXJjZS9XZWJDb3JlL2JyaWRnZS9ydW50aW1lX21ldGhvZC5oCShyZXZpc2lvbiAx
MTY2NjcpCisrKyBTb3VyY2UvV2ViQ29yZS9icmlkZ2UvcnVudGltZV9tZXRob2QuaAkod29ya2lu
ZyBjb3B5KQpAQCAtMzksNyArMzksNyBAQCBwdWJsaWM6CiAKICAgICBzdGF0aWMgdm9pZCBkZXN0
cm95KEpTQ2VsbCopOwogCi0gICAgc3RhdGljIFJ1bnRpbWVNZXRob2QqIGNyZWF0ZShFeGVjU3Rh
dGUqIGV4ZWMsIEpTR2xvYmFsT2JqZWN0KiBnbG9iYWxPYmplY3QsIFN0cnVjdHVyZSogc3RydWN0
dXJlLCBjb25zdCBJZGVudGlmaWVyJiBuYW1lLCBCaW5kaW5nczo6TWV0aG9kTGlzdCYgbWV0aG9k
TGlzdCkKKyAgICBzdGF0aWMgUnVudGltZU1ldGhvZCogY3JlYXRlKEV4ZWNTdGF0ZSogZXhlYywg
SlNHbG9iYWxPYmplY3QqIGdsb2JhbE9iamVjdCwgU3RydWN0dXJlKiBzdHJ1Y3R1cmUsIGNvbnN0
IFVTdHJpbmcmIG5hbWUsIEJpbmRpbmdzOjpNZXRob2RMaXN0JiBtZXRob2RMaXN0KQogICAgIHsK
ICAgICAgICAgUnVudGltZU1ldGhvZCogbWV0aG9kID0gbmV3IChOb3ROdWxsLCBhbGxvY2F0ZUNl
bGw8UnVudGltZU1ldGhvZD4oKmV4ZWMtPmhlYXAoKSkpIFJ1bnRpbWVNZXRob2QoZ2xvYmFsT2Jq
ZWN0LCBzdHJ1Y3R1cmUsIG1ldGhvZExpc3QpOwogICAgICAgICBtZXRob2QtPmZpbmlzaENyZWF0
aW9uKGV4ZWMtPmdsb2JhbERhdGEoKSwgbmFtZSk7CkBAIC02MiwxNSArNjIsMTUgQEAgcHVibGlj
OgogCiBwcm90ZWN0ZWQ6CiAgICAgUnVudGltZU1ldGhvZChKU0dsb2JhbE9iamVjdCosIFN0cnVj
dHVyZSosIEJpbmRpbmdzOjpNZXRob2RMaXN0Jik7Ci0gICAgdm9pZCBmaW5pc2hDcmVhdGlvbihK
U0dsb2JhbERhdGEmLCBjb25zdCBJZGVudGlmaWVyJik7CisgICAgdm9pZCBmaW5pc2hDcmVhdGlv
bihKU0dsb2JhbERhdGEmLCBjb25zdCBVU3RyaW5nJik7CiAgICAgc3RhdGljIGNvbnN0IHVuc2ln
bmVkIFN0cnVjdHVyZUZsYWdzID0gT3ZlcnJpZGVzR2V0T3duUHJvcGVydHlTbG90IHwgSW50ZXJu
YWxGdW5jdGlvbjo6U3RydWN0dXJlRmxhZ3M7CiAgICAgc3RhdGljIENhbGxUeXBlIGdldENhbGxE
YXRhKEpTQ2VsbCosIENhbGxEYXRhJik7CiAKLSAgICBzdGF0aWMgYm9vbCBnZXRPd25Qcm9wZXJ0
eVNsb3QoSlNDZWxsKiwgRXhlY1N0YXRlKiwgY29uc3QgSWRlbnRpZmllciYsIFByb3BlcnR5U2xv
dCYpOwotICAgIHN0YXRpYyBib29sIGdldE93blByb3BlcnR5RGVzY3JpcHRvcihKU09iamVjdCos
IEV4ZWNTdGF0ZSosIGNvbnN0IElkZW50aWZpZXImLCBQcm9wZXJ0eURlc2NyaXB0b3ImKTsKKyAg
ICBzdGF0aWMgYm9vbCBnZXRPd25Qcm9wZXJ0eVNsb3QoSlNDZWxsKiwgRXhlY1N0YXRlKiwgUHJv
cGVydHlOYW1lLCBQcm9wZXJ0eVNsb3QmKTsKKyAgICBzdGF0aWMgYm9vbCBnZXRPd25Qcm9wZXJ0
eURlc2NyaXB0b3IoSlNPYmplY3QqLCBFeGVjU3RhdGUqLCBQcm9wZXJ0eU5hbWUsIFByb3BlcnR5
RGVzY3JpcHRvciYpOwogCiBwcml2YXRlOgotICAgIHN0YXRpYyBKU1ZhbHVlIGxlbmd0aEdldHRl
cihFeGVjU3RhdGUqLCBKU1ZhbHVlLCBjb25zdCBJZGVudGlmaWVyJik7CisgICAgc3RhdGljIEpT
VmFsdWUgbGVuZ3RoR2V0dGVyKEV4ZWNTdGF0ZSosIEpTVmFsdWUsIFByb3BlcnR5TmFtZSk7CiAK
ICAgICBPd25QdHI8QmluZGluZ3M6Ok1ldGhvZExpc3Q+IF9tZXRob2RMaXN0OwogfTsKSW5kZXg6
IFNvdXJjZS9XZWJDb3JlL2JyaWRnZS9ydW50aW1lX29iamVjdC5jcHAKPT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0g
U291cmNlL1dlYkNvcmUvYnJpZGdlL3J1bnRpbWVfb2JqZWN0LmNwcAkocmV2aXNpb24gMTE2NjY3
KQorKysgU291cmNlL1dlYkNvcmUvYnJpZGdlL3J1bnRpbWVfb2JqZWN0LmNwcAkod29ya2luZyBj
b3B5KQpAQCAtNjQsNyArNjQsNyBAQCB2b2lkIFJ1bnRpbWVPYmplY3Q6OmludmFsaWRhdGUoKQog
ICAgIG1faW5zdGFuY2UgPSAwOwogfQogCi1KU1ZhbHVlIFJ1bnRpbWVPYmplY3Q6OmZhbGxiYWNr
T2JqZWN0R2V0dGVyKEV4ZWNTdGF0ZSogZXhlYywgSlNWYWx1ZSBzbG90QmFzZSwgY29uc3QgSWRl
bnRpZmllciYgcHJvcGVydHlOYW1lKQorSlNWYWx1ZSBSdW50aW1lT2JqZWN0OjpmYWxsYmFja09i
amVjdEdldHRlcihFeGVjU3RhdGUqIGV4ZWMsIEpTVmFsdWUgc2xvdEJhc2UsIFByb3BlcnR5TmFt
ZSBwcm9wZXJ0eU5hbWUpCiB7CiAgICAgUnVudGltZU9iamVjdCogdGhpc09iaiA9IHN0YXRpY19j
YXN0PFJ1bnRpbWVPYmplY3QqPihhc09iamVjdChzbG90QmFzZSkpOwogICAgIFJlZlB0cjxJbnN0
YW5jZT4gaW5zdGFuY2UgPSB0aGlzT2JqLT5tX2luc3RhbmNlOwpAQCAtODIsNyArODIsNyBAQCBK
U1ZhbHVlIFJ1bnRpbWVPYmplY3Q6OmZhbGxiYWNrT2JqZWN0R2V0CiAgICAgcmV0dXJuIHJlc3Vs
dDsKIH0KIAotSlNWYWx1ZSBSdW50aW1lT2JqZWN0OjpmaWVsZEdldHRlcihFeGVjU3RhdGUqIGV4
ZWMsIEpTVmFsdWUgc2xvdEJhc2UsIGNvbnN0IElkZW50aWZpZXImIHByb3BlcnR5TmFtZSkKK0pT
VmFsdWUgUnVudGltZU9iamVjdDo6ZmllbGRHZXR0ZXIoRXhlY1N0YXRlKiBleGVjLCBKU1ZhbHVl
IHNsb3RCYXNlLCBQcm9wZXJ0eU5hbWUgcHJvcGVydHlOYW1lKQogeyAgICAKICAgICBSdW50aW1l
T2JqZWN0KiB0aGlzT2JqID0gc3RhdGljX2Nhc3Q8UnVudGltZU9iamVjdCo+KGFzT2JqZWN0KHNs
b3RCYXNlKSk7CiAgICAgUmVmUHRyPEluc3RhbmNlPiBpbnN0YW5jZSA9IHRoaXNPYmotPm1faW5z
dGFuY2U7CkBAIC0xMDEsNyArMTAxLDcgQEAgSlNWYWx1ZSBSdW50aW1lT2JqZWN0OjpmaWVsZEdl
dHRlcihFeGVjUwogICAgIHJldHVybiByZXN1bHQ7CiB9CiAKLUpTVmFsdWUgUnVudGltZU9iamVj
dDo6bWV0aG9kR2V0dGVyKEV4ZWNTdGF0ZSogZXhlYywgSlNWYWx1ZSBzbG90QmFzZSwgY29uc3Qg
SWRlbnRpZmllciYgcHJvcGVydHlOYW1lKQorSlNWYWx1ZSBSdW50aW1lT2JqZWN0OjptZXRob2RH
ZXR0ZXIoRXhlY1N0YXRlKiBleGVjLCBKU1ZhbHVlIHNsb3RCYXNlLCBQcm9wZXJ0eU5hbWUgcHJv
cGVydHlOYW1lKQogewogICAgIFJ1bnRpbWVPYmplY3QqIHRoaXNPYmogPSBzdGF0aWNfY2FzdDxS
dW50aW1lT2JqZWN0Kj4oYXNPYmplY3Qoc2xvdEJhc2UpKTsKICAgICBSZWZQdHI8SW5zdGFuY2U+
IGluc3RhbmNlID0gdGhpc09iai0+bV9pbnN0YW5jZTsKQEAgLTExOCw3ICsxMTgsNyBAQCBKU1Zh
bHVlIFJ1bnRpbWVPYmplY3Q6Om1ldGhvZEdldHRlcihFeGVjCiAgICAgcmV0dXJuIG1ldGhvZDsK
IH0KIAotYm9vbCBSdW50aW1lT2JqZWN0OjpnZXRPd25Qcm9wZXJ0eVNsb3QoSlNDZWxsKiBjZWxs
LCBFeGVjU3RhdGUgKmV4ZWMsIGNvbnN0IElkZW50aWZpZXImIHByb3BlcnR5TmFtZSwgUHJvcGVy
dHlTbG90JiBzbG90KQorYm9vbCBSdW50aW1lT2JqZWN0OjpnZXRPd25Qcm9wZXJ0eVNsb3QoSlND
ZWxsKiBjZWxsLCBFeGVjU3RhdGUgKmV4ZWMsIFByb3BlcnR5TmFtZSBwcm9wZXJ0eU5hbWUsIFBy
b3BlcnR5U2xvdCYgc2xvdCkKIHsKICAgICBSdW50aW1lT2JqZWN0KiB0aGlzT2JqZWN0ID0ganND
YXN0PFJ1bnRpbWVPYmplY3QqPihjZWxsKTsKICAgICBpZiAoIXRoaXNPYmplY3QtPm1faW5zdGFu
Y2UpIHsKQEAgLTE2NCw3ICsxNjQsNyBAQCBib29sIFJ1bnRpbWVPYmplY3Q6OmdldE93blByb3Bl
cnR5U2xvdChKCiAgICAgcmV0dXJuIGluc3RhbmNlLT5nZXRPd25Qcm9wZXJ0eVNsb3QodGhpc09i
amVjdCwgZXhlYywgcHJvcGVydHlOYW1lLCBzbG90KTsKIH0KIAotYm9vbCBSdW50aW1lT2JqZWN0
OjpnZXRPd25Qcm9wZXJ0eURlc2NyaXB0b3IoSlNPYmplY3QqIG9iamVjdCwgRXhlY1N0YXRlICpl
eGVjLCBjb25zdCBJZGVudGlmaWVyJiBwcm9wZXJ0eU5hbWUsIFByb3BlcnR5RGVzY3JpcHRvciYg
ZGVzY3JpcHRvcikKK2Jvb2wgUnVudGltZU9iamVjdDo6Z2V0T3duUHJvcGVydHlEZXNjcmlwdG9y
KEpTT2JqZWN0KiBvYmplY3QsIEV4ZWNTdGF0ZSAqZXhlYywgUHJvcGVydHlOYW1lIHByb3BlcnR5
TmFtZSwgUHJvcGVydHlEZXNjcmlwdG9yJiBkZXNjcmlwdG9yKQogewogICAgIFJ1bnRpbWVPYmpl
Y3QqIHRoaXNPYmplY3QgPSBqc0Nhc3Q8UnVudGltZU9iamVjdCo+KG9iamVjdCk7CiAgICAgaWYg
KCF0aGlzT2JqZWN0LT5tX2luc3RhbmNlKSB7CkBAIC0yMTQsNyArMjE0LDcgQEAgYm9vbCBSdW50
aW1lT2JqZWN0OjpnZXRPd25Qcm9wZXJ0eURlc2NyaQogICAgIHJldHVybiBpbnN0YW5jZS0+Z2V0
T3duUHJvcGVydHlEZXNjcmlwdG9yKHRoaXNPYmplY3QsIGV4ZWMsIHByb3BlcnR5TmFtZSwgZGVz
Y3JpcHRvcik7CiB9CiAKLXZvaWQgUnVudGltZU9iamVjdDo6cHV0KEpTQ2VsbCogY2VsbCwgRXhl
Y1N0YXRlKiBleGVjLCBjb25zdCBJZGVudGlmaWVyJiBwcm9wZXJ0eU5hbWUsIEpTVmFsdWUgdmFs
dWUsIFB1dFByb3BlcnR5U2xvdCYgc2xvdCkKK3ZvaWQgUnVudGltZU9iamVjdDo6cHV0KEpTQ2Vs
bCogY2VsbCwgRXhlY1N0YXRlKiBleGVjLCBQcm9wZXJ0eU5hbWUgcHJvcGVydHlOYW1lLCBKU1Zh
bHVlIHZhbHVlLCBQdXRQcm9wZXJ0eVNsb3QmIHNsb3QpCiB7CiAgICAgUnVudGltZU9iamVjdCog
dGhpc09iamVjdCA9IGpzQ2FzdDxSdW50aW1lT2JqZWN0Kj4oY2VsbCk7CiAgICAgaWYgKCF0aGlz
T2JqZWN0LT5tX2luc3RhbmNlKSB7CkBAIC0yMzUsNyArMjM1LDcgQEAgdm9pZCBSdW50aW1lT2Jq
ZWN0OjpwdXQoSlNDZWxsKiBjZWxsLCBFeAogICAgIGluc3RhbmNlLT5lbmQoKTsKIH0KIAotYm9v
bCBSdW50aW1lT2JqZWN0OjpkZWxldGVQcm9wZXJ0eShKU0NlbGwqLCBFeGVjU3RhdGUqLCBjb25z
dCBJZGVudGlmaWVyJikKK2Jvb2wgUnVudGltZU9iamVjdDo6ZGVsZXRlUHJvcGVydHkoSlNDZWxs
KiwgRXhlY1N0YXRlKiwgUHJvcGVydHlOYW1lKQogewogICAgIC8vIENhbiBuZXZlciByZW1vdmUg
YSBwcm9wZXJ0eSBvZiBhIFJ1bnRpbWVPYmplY3QuCiAgICAgcmV0dXJuIGZhbHNlOwpJbmRleDog
U291cmNlL1dlYkNvcmUvYnJpZGdlL3J1bnRpbWVfb2JqZWN0LmgKPT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291
cmNlL1dlYkNvcmUvYnJpZGdlL3J1bnRpbWVfb2JqZWN0LmgJKHJldmlzaW9uIDExNjY2NykKKysr
IFNvdXJjZS9XZWJDb3JlL2JyaWRnZS9ydW50aW1lX29iamVjdC5oCSh3b3JraW5nIGNvcHkpCkBA
IC00NSwxMCArNDUsMTAgQEAgcHVibGljOgogCiAgICAgc3RhdGljIHZvaWQgZGVzdHJveShKU0Nl
bGwqKTsKIAotICAgIHN0YXRpYyBib29sIGdldE93blByb3BlcnR5U2xvdChKU0NlbGwqLCBFeGVj
U3RhdGUqLCBjb25zdCBJZGVudGlmaWVyJiBwcm9wZXJ0eU5hbWUsIFByb3BlcnR5U2xvdCYpOwot
ICAgIHN0YXRpYyBib29sIGdldE93blByb3BlcnR5RGVzY3JpcHRvcihKU09iamVjdCosIEV4ZWNT
dGF0ZSosIGNvbnN0IElkZW50aWZpZXImIHByb3BlcnR5TmFtZSwgUHJvcGVydHlEZXNjcmlwdG9y
Jik7Ci0gICAgc3RhdGljIHZvaWQgcHV0KEpTQ2VsbCosIEV4ZWNTdGF0ZSosIGNvbnN0IElkZW50
aWZpZXImIHByb3BlcnR5TmFtZSwgSlNWYWx1ZSwgUHV0UHJvcGVydHlTbG90Jik7Ci0gICAgc3Rh
dGljIGJvb2wgZGVsZXRlUHJvcGVydHkoSlNDZWxsKiwgRXhlY1N0YXRlKiwgY29uc3QgSWRlbnRp
ZmllciYgcHJvcGVydHlOYW1lKTsKKyAgICBzdGF0aWMgYm9vbCBnZXRPd25Qcm9wZXJ0eVNsb3Qo
SlNDZWxsKiwgRXhlY1N0YXRlKiwgUHJvcGVydHlOYW1lLCBQcm9wZXJ0eVNsb3QmKTsKKyAgICBz
dGF0aWMgYm9vbCBnZXRPd25Qcm9wZXJ0eURlc2NyaXB0b3IoSlNPYmplY3QqLCBFeGVjU3RhdGUq
LCBQcm9wZXJ0eU5hbWUsIFByb3BlcnR5RGVzY3JpcHRvciYpOworICAgIHN0YXRpYyB2b2lkIHB1
dChKU0NlbGwqLCBFeGVjU3RhdGUqLCBQcm9wZXJ0eU5hbWUsIEpTVmFsdWUsIFB1dFByb3BlcnR5
U2xvdCYpOworICAgIHN0YXRpYyBib29sIGRlbGV0ZVByb3BlcnR5KEpTQ2VsbCosIEV4ZWNTdGF0
ZSosIFByb3BlcnR5TmFtZSk7CiAgICAgc3RhdGljIEpTVmFsdWUgZGVmYXVsdFZhbHVlKGNvbnN0
IEpTT2JqZWN0KiwgRXhlY1N0YXRlKiwgUHJlZmVycmVkUHJpbWl0aXZlVHlwZSk7CiAgICAgc3Rh
dGljIENhbGxUeXBlIGdldENhbGxEYXRhKEpTQ2VsbCosIENhbGxEYXRhJik7CiAgICAgc3RhdGlj
IENvbnN0cnVjdFR5cGUgZ2V0Q29uc3RydWN0RGF0YShKU0NlbGwqLCBDb25zdHJ1Y3REYXRhJik7
CkBAIC03OSw5ICs3OSw5IEBAIHByb3RlY3RlZDoKICAgICBzdGF0aWMgY29uc3QgdW5zaWduZWQg
U3RydWN0dXJlRmxhZ3MgPSBPdmVycmlkZXNHZXRPd25Qcm9wZXJ0eVNsb3QgfCBPdmVycmlkZXNH
ZXRQcm9wZXJ0eU5hbWVzIHwgQmFzZTo6U3RydWN0dXJlRmxhZ3M7CiAKIHByaXZhdGU6Ci0gICAg
c3RhdGljIEpTVmFsdWUgZmFsbGJhY2tPYmplY3RHZXR0ZXIoRXhlY1N0YXRlKiwgSlNWYWx1ZSwg
Y29uc3QgSWRlbnRpZmllciYpOwotICAgIHN0YXRpYyBKU1ZhbHVlIGZpZWxkR2V0dGVyKEV4ZWNT
dGF0ZSosIEpTVmFsdWUsIGNvbnN0IElkZW50aWZpZXImKTsKLSAgICBzdGF0aWMgSlNWYWx1ZSBt
ZXRob2RHZXR0ZXIoRXhlY1N0YXRlKiwgSlNWYWx1ZSwgY29uc3QgSWRlbnRpZmllciYpOworICAg
IHN0YXRpYyBKU1ZhbHVlIGZhbGxiYWNrT2JqZWN0R2V0dGVyKEV4ZWNTdGF0ZSosIEpTVmFsdWUs
IFByb3BlcnR5TmFtZSk7CisgICAgc3RhdGljIEpTVmFsdWUgZmllbGRHZXR0ZXIoRXhlY1N0YXRl
KiwgSlNWYWx1ZSwgUHJvcGVydHlOYW1lKTsKKyAgICBzdGF0aWMgSlNWYWx1ZSBtZXRob2RHZXR0
ZXIoRXhlY1N0YXRlKiwgSlNWYWx1ZSwgUHJvcGVydHlOYW1lKTsKIAogICAgIFJlZlB0cjxJbnN0
YW5jZT4gbV9pbnN0YW5jZTsKIH07CkluZGV4OiBTb3VyY2UvV2ViQ29yZS9icmlkZ2UvYy9jX2Ns
YXNzLmNwcAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2ViQ29yZS9icmlkZ2UvYy9jX2NsYXNzLmNw
cAkocmV2aXNpb24gMTE2NjY3KQorKysgU291cmNlL1dlYkNvcmUvYnJpZGdlL2MvY19jbGFzcy5j
cHAJKHdvcmtpbmcgY29weSkKQEAgLTczLDI0ICs3MywyNiBAQCBDQ2xhc3MqIENDbGFzczo6Y2xh
c3NGb3JJc0EoTlBDbGFzcyogaXNhCiAgICAgcmV0dXJuIGFDbGFzczsKIH0KIAotTWV0aG9kTGlz
dCBDQ2xhc3M6Om1ldGhvZHNOYW1lZChjb25zdCBJZGVudGlmaWVyJiBpZGVudGlmaWVyLCBJbnN0
YW5jZSogaW5zdGFuY2UpIGNvbnN0CitNZXRob2RMaXN0IENDbGFzczo6bWV0aG9kc05hbWVkKFBy
b3BlcnR5TmFtZSBpZGVudGlmaWVyLCBJbnN0YW5jZSogaW5zdGFuY2UpIGNvbnN0CiB7CisgICAg
VVN0cmluZyBuYW1lKGlkZW50aWZpZXIuaW1wbCgpKTsKKyAgICAKICAgICBNZXRob2RMaXN0IG1l
dGhvZExpc3Q7CiAKLSAgICBNZXRob2QqIG1ldGhvZCA9IF9tZXRob2RzLmdldChpZGVudGlmaWVy
LnVzdHJpbmcoKS5pbXBsKCkpOworICAgIE1ldGhvZCogbWV0aG9kID0gX21ldGhvZHMuZ2V0KG5h
bWUuaW1wbCgpKTsKICAgICBpZiAobWV0aG9kKSB7CiAgICAgICAgIG1ldGhvZExpc3QuYXBwZW5k
KG1ldGhvZCk7CiAgICAgICAgIHJldHVybiBtZXRob2RMaXN0OwogICAgIH0KIAotICAgIE5QSWRl
bnRpZmllciBpZGVudCA9IF9OUE5fR2V0U3RyaW5nSWRlbnRpZmllcihpZGVudGlmaWVyLmFzY2lp
KCkuZGF0YSgpKTsKKyAgICBOUElkZW50aWZpZXIgaWRlbnQgPSBfTlBOX0dldFN0cmluZ0lkZW50
aWZpZXIobmFtZS5hc2NpaSgpLmRhdGEoKSk7CiAgICAgY29uc3QgQ0luc3RhbmNlKiBpbnN0ID0g
c3RhdGljX2Nhc3Q8Y29uc3QgQ0luc3RhbmNlKj4oaW5zdGFuY2UpOwogICAgIE5QT2JqZWN0KiBv
YmogPSBpbnN0LT5nZXRPYmplY3QoKTsKICAgICBpZiAoX2lzYS0+aGFzTWV0aG9kICYmIF9pc2Et
Pmhhc01ldGhvZChvYmosIGlkZW50KSl7CiAgICAgICAgIE1ldGhvZCogYU1ldGhvZCA9IG5ldyBD
TWV0aG9kKGlkZW50KTsgLy8gZGVsZXRlZCBpbiB0aGUgQ0NsYXNzIGRlc3RydWN0b3IKICAgICAg
ICAgewogICAgICAgICAgICAgSlNMb2NrIGxvY2soU2lsZW5jZUFzc2VydGlvbnNPbmx5KTsKLSAg
ICAgICAgICAgIF9tZXRob2RzLnNldChpZGVudGlmaWVyLnVzdHJpbmcoKS5pbXBsKCksIGFNZXRo
b2QpOworICAgICAgICAgICAgX21ldGhvZHMuc2V0KG5hbWUuaW1wbCgpLCBhTWV0aG9kKTsKICAg
ICAgICAgfQogICAgICAgICBtZXRob2RMaXN0LmFwcGVuZChhTWV0aG9kKTsKICAgICB9CkBAIC05
OCwyMCArMTAwLDIyIEBAIE1ldGhvZExpc3QgQ0NsYXNzOjptZXRob2RzTmFtZWQoY29uc3QgSWQK
ICAgICByZXR1cm4gbWV0aG9kTGlzdDsKIH0KIAotRmllbGQqIENDbGFzczo6ZmllbGROYW1lZChj
b25zdCBJZGVudGlmaWVyJiBpZGVudGlmaWVyLCBJbnN0YW5jZSogaW5zdGFuY2UpIGNvbnN0CitG
aWVsZCogQ0NsYXNzOjpmaWVsZE5hbWVkKFByb3BlcnR5TmFtZSBpZGVudGlmaWVyLCBJbnN0YW5j
ZSogaW5zdGFuY2UpIGNvbnN0CiB7Ci0gICAgRmllbGQqIGFGaWVsZCA9IF9maWVsZHMuZ2V0KGlk
ZW50aWZpZXIudXN0cmluZygpLmltcGwoKSk7CisgICAgVVN0cmluZyBuYW1lKGlkZW50aWZpZXIu
aW1wbCgpKTsKKyAgICAKKyAgICBGaWVsZCogYUZpZWxkID0gX2ZpZWxkcy5nZXQobmFtZS5pbXBs
KCkpOwogICAgIGlmIChhRmllbGQpCiAgICAgICAgIHJldHVybiBhRmllbGQ7CiAgICAgCi0gICAg
TlBJZGVudGlmaWVyIGlkZW50ID0gX05QTl9HZXRTdHJpbmdJZGVudGlmaWVyKGlkZW50aWZpZXIu
YXNjaWkoKS5kYXRhKCkpOworICAgIE5QSWRlbnRpZmllciBpZGVudCA9IF9OUE5fR2V0U3RyaW5n
SWRlbnRpZmllcihuYW1lLmFzY2lpKCkuZGF0YSgpKTsKICAgICBjb25zdCBDSW5zdGFuY2UqIGlu
c3QgPSBzdGF0aWNfY2FzdDxjb25zdCBDSW5zdGFuY2UqPihpbnN0YW5jZSk7CiAgICAgTlBPYmpl
Y3QqIG9iaiA9IGluc3QtPmdldE9iamVjdCgpOwogICAgIGlmIChfaXNhLT5oYXNQcm9wZXJ0eSAm
JiBfaXNhLT5oYXNQcm9wZXJ0eShvYmosIGlkZW50KSl7CiAgICAgICAgIGFGaWVsZCA9IG5ldyBD
RmllbGQoaWRlbnQpOyAvLyBkZWxldGVkIGluIHRoZSBDQ2xhc3MgZGVzdHJ1Y3RvcgogICAgICAg
ICB7CiAgICAgICAgICAgICBKU0xvY2sgbG9jayhTaWxlbmNlQXNzZXJ0aW9uc09ubHkpOwotICAg
ICAgICAgICAgX2ZpZWxkcy5zZXQoaWRlbnRpZmllci51c3RyaW5nKCkuaW1wbCgpLCBhRmllbGQp
OworICAgICAgICAgICAgX2ZpZWxkcy5zZXQobmFtZS5pbXBsKCksIGFGaWVsZCk7CiAgICAgICAg
IH0KICAgICB9CiAgICAgcmV0dXJuIGFGaWVsZDsKSW5kZXg6IFNvdXJjZS9XZWJDb3JlL2JyaWRn
ZS9jL2NfY2xhc3MuaAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2ViQ29yZS9icmlkZ2UvYy9jX2Ns
YXNzLmgJKHJldmlzaW9uIDExNjY2NykKKysrIFNvdXJjZS9XZWJDb3JlL2JyaWRnZS9jL2NfY2xh
c3MuaAkod29ya2luZyBjb3B5KQpAQCAtNDMsOCArNDMsOCBAQCBwdWJsaWM6CiAgICAgc3RhdGlj
IENDbGFzcyogY2xhc3NGb3JJc0EoTlBDbGFzcyopOwogICAgIHZpcnR1YWwgfkNDbGFzcygpOwog
Ci0gICAgdmlydHVhbCBNZXRob2RMaXN0IG1ldGhvZHNOYW1lZChjb25zdCBJZGVudGlmaWVyJiwg
SW5zdGFuY2UqKSBjb25zdDsKLSAgICB2aXJ0dWFsIEZpZWxkKiBmaWVsZE5hbWVkKGNvbnN0IElk
ZW50aWZpZXImLCBJbnN0YW5jZSopIGNvbnN0OworICAgIHZpcnR1YWwgTWV0aG9kTGlzdCBtZXRo
b2RzTmFtZWQoUHJvcGVydHlOYW1lLCBJbnN0YW5jZSopIGNvbnN0OworICAgIHZpcnR1YWwgRmll
bGQqIGZpZWxkTmFtZWQoUHJvcGVydHlOYW1lLCBJbnN0YW5jZSopIGNvbnN0OwogCiBwcml2YXRl
OgogICAgIE5QQ2xhc3MqIF9pc2E7CkluZGV4OiBTb3VyY2UvV2ViQ29yZS9icmlkZ2UvYy9jX2lu
c3RhbmNlLmNwcAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2ViQ29yZS9icmlkZ2UvYy9jX2luc3Rh
bmNlLmNwcAkocmV2aXNpb24gMTE2NjY3KQorKysgU291cmNlL1dlYkNvcmUvYnJpZGdlL2MvY19p
bnN0YW5jZS5jcHAJKHdvcmtpbmcgY29weSkKQEAgLTExMyw3ICsxMTMsNyBAQCBjbGFzcyBDUnVu
dGltZU1ldGhvZCA6IHB1YmxpYyBSdW50aW1lTWV0CiBwdWJsaWM6CiAgICAgdHlwZWRlZiBSdW50
aW1lTWV0aG9kIEJhc2U7CiAKLSAgICBzdGF0aWMgQ1J1bnRpbWVNZXRob2QqIGNyZWF0ZShFeGVj
U3RhdGUqIGV4ZWMsIEpTR2xvYmFsT2JqZWN0KiBnbG9iYWxPYmplY3QsIGNvbnN0IElkZW50aWZp
ZXImIG5hbWUsIEJpbmRpbmdzOjpNZXRob2RMaXN0JiBsaXN0KQorICAgIHN0YXRpYyBDUnVudGlt
ZU1ldGhvZCogY3JlYXRlKEV4ZWNTdGF0ZSogZXhlYywgSlNHbG9iYWxPYmplY3QqIGdsb2JhbE9i
amVjdCwgY29uc3QgVVN0cmluZyYgbmFtZSwgQmluZGluZ3M6Ok1ldGhvZExpc3QmIGxpc3QpCiAg
ICAgewogICAgICAgICAvLyBGSVhNRTogZGVwcmVjYXRlZEdldERPTVN0cnVjdHVyZSB1c2VzIHRo
ZSBwcm90b3R5cGUgb2ZmIG9mIHRoZSB3cm9uZyBnbG9iYWwgb2JqZWN0CiAgICAgICAgIC8vIFdl
IG5lZWQgdG8gcGFzcyBpbiB0aGUgcmlnaHQgZ2xvYmFsIG9iamVjdCBmb3IgImkiLgpAQCAtMTM2
LDcgKzEzNiw3IEBAIHByaXZhdGU6CiAgICAgewogICAgIH0KIAotICAgIHZvaWQgZmluaXNoQ3Jl
YXRpb24oSlNHbG9iYWxEYXRhJiBnbG9iYWxEYXRhLCBjb25zdCBJZGVudGlmaWVyJiBuYW1lKQor
ICAgIHZvaWQgZmluaXNoQ3JlYXRpb24oSlNHbG9iYWxEYXRhJiBnbG9iYWxEYXRhLCBjb25zdCBV
U3RyaW5nJiBuYW1lKQogICAgIHsKICAgICAgICAgQmFzZTo6ZmluaXNoQ3JlYXRpb24oZ2xvYmFs
RGF0YSwgbmFtZSk7CiAgICAgICAgIEFTU0VSVChpbmhlcml0cygmc19pbmZvKSk7CkBAIC0xNDYs
MTAgKzE0NiwxMCBAQCBwcml2YXRlOgogCiBjb25zdCBDbGFzc0luZm8gQ1J1bnRpbWVNZXRob2Q6
OnNfaW5mbyA9IHsgIkNSdW50aW1lTWV0aG9kIiwgJlJ1bnRpbWVNZXRob2Q6OnNfaW5mbywgMCwg
MCwgQ1JFQVRFX01FVEhPRF9UQUJMRShDUnVudGltZU1ldGhvZCkgfTsKIAotSlNWYWx1ZSBDSW5z
dGFuY2U6OmdldE1ldGhvZChFeGVjU3RhdGUqIGV4ZWMsIGNvbnN0IElkZW50aWZpZXImIHByb3Bl
cnR5TmFtZSkKK0pTVmFsdWUgQ0luc3RhbmNlOjpnZXRNZXRob2QoRXhlY1N0YXRlKiBleGVjLCBQ
cm9wZXJ0eU5hbWUgcHJvcGVydHlOYW1lKQogewogICAgIE1ldGhvZExpc3QgbWV0aG9kTGlzdCA9
IGdldENsYXNzKCktPm1ldGhvZHNOYW1lZChwcm9wZXJ0eU5hbWUsIHRoaXMpOwotICAgIHJldHVy
biBDUnVudGltZU1ldGhvZDo6Y3JlYXRlKGV4ZWMsIGV4ZWMtPmxleGljYWxHbG9iYWxPYmplY3Qo
KSwgcHJvcGVydHlOYW1lLCBtZXRob2RMaXN0KTsKKyAgICByZXR1cm4gQ1J1bnRpbWVNZXRob2Q6
OmNyZWF0ZShleGVjLCBleGVjLT5sZXhpY2FsR2xvYmFsT2JqZWN0KCksIHByb3BlcnR5TmFtZS5p
bXBsKCksIG1ldGhvZExpc3QpOwogfQogCiBKU1ZhbHVlIENJbnN0YW5jZTo6aW52b2tlTWV0aG9k
KEV4ZWNTdGF0ZSogZXhlYywgUnVudGltZU1ldGhvZCogcnVudGltZU1ldGhvZCkKSW5kZXg6IFNv
dXJjZS9XZWJDb3JlL2JyaWRnZS9jL2NfaW5zdGFuY2UuaAo9PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2Uv
V2ViQ29yZS9icmlkZ2UvYy9jX2luc3RhbmNlLmgJKHJldmlzaW9uIDExNjY2NykKKysrIFNvdXJj
ZS9XZWJDb3JlL2JyaWRnZS9jL2NfaW5zdGFuY2UuaAkod29ya2luZyBjb3B5KQpAQCAtNTksNyAr
NTksNyBAQCBwdWJsaWM6CiAgICAgdmlydHVhbCBKU1ZhbHVlIHZhbHVlT2YoRXhlY1N0YXRlKikg
Y29uc3Q7CiAgICAgdmlydHVhbCBKU1ZhbHVlIGRlZmF1bHRWYWx1ZShFeGVjU3RhdGUqLCBQcmVm
ZXJyZWRQcmltaXRpdmVUeXBlKSBjb25zdDsKIAotICAgIHZpcnR1YWwgSlNWYWx1ZSBnZXRNZXRo
b2QoRXhlY1N0YXRlKiBleGVjLCBjb25zdCBJZGVudGlmaWVyJiBwcm9wZXJ0eU5hbWUpOworICAg
IHZpcnR1YWwgSlNWYWx1ZSBnZXRNZXRob2QoRXhlY1N0YXRlKiBleGVjLCBQcm9wZXJ0eU5hbWUp
OwogICAgIHZpcnR1YWwgSlNWYWx1ZSBpbnZva2VNZXRob2QoRXhlY1N0YXRlKiwgUnVudGltZU1l
dGhvZCogbWV0aG9kKTsKICAgICB2aXJ0dWFsIGJvb2wgc3VwcG9ydHNJbnZva2VEZWZhdWx0TWV0
aG9kKCkgY29uc3Q7CiAgICAgdmlydHVhbCBKU1ZhbHVlIGludm9rZURlZmF1bHRNZXRob2QoRXhl
Y1N0YXRlKik7CkluZGV4OiBTb3VyY2UvV2ViQ29yZS9icmlkZ2Uvam5pL2pzYy9KYXZhQ2xhc3NK
U0MuY3BwCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9XZWJDb3JlL2JyaWRnZS9qbmkvanNjL0phdmFD
bGFzc0pTQy5jcHAJKHJldmlzaW9uIDExNjY2NykKKysrIFNvdXJjZS9XZWJDb3JlL2JyaWRnZS9q
bmkvanNjL0phdmFDbGFzc0pTQy5jcHAJKHdvcmtpbmcgY29weSkKQEAgLTExNCw3ICsxMTQsNyBA
QCBKYXZhQ2xhc3M6On5KYXZhQ2xhc3MoKQogICAgIG1fbWV0aG9kcy5jbGVhcigpOwogfQogCi1N
ZXRob2RMaXN0IEphdmFDbGFzczo6bWV0aG9kc05hbWVkKGNvbnN0IElkZW50aWZpZXImIGlkZW50
aWZpZXIsIEluc3RhbmNlKikgY29uc3QKK01ldGhvZExpc3QgSmF2YUNsYXNzOjptZXRob2RzTmFt
ZWQoUHJvcGVydHlOYW1lIGlkZW50aWZpZXIsIEluc3RhbmNlKikgY29uc3QKIHsKICAgICBNZXRo
b2RMaXN0KiBtZXRob2RMaXN0ID0gbV9tZXRob2RzLmdldChpZGVudGlmaWVyLnVzdHJpbmcoKS5p
bXBsKCkpOwogCkBAIC0xMjMsNyArMTIzLDcgQEAgTWV0aG9kTGlzdCBKYXZhQ2xhc3M6Om1ldGhv
ZHNOYW1lZChjb25zdAogICAgIHJldHVybiBNZXRob2RMaXN0KCk7CiB9CiAKLUZpZWxkKiBKYXZh
Q2xhc3M6OmZpZWxkTmFtZWQoY29uc3QgSWRlbnRpZmllciYgaWRlbnRpZmllciwgSW5zdGFuY2Uq
KSBjb25zdAorRmllbGQqIEphdmFDbGFzczo6ZmllbGROYW1lZChQcm9wZXJ0eU5hbWUgaWRlbnRp
ZmllciwgSW5zdGFuY2UqKSBjb25zdAogewogICAgIHJldHVybiBtX2ZpZWxkcy5nZXQoaWRlbnRp
Zmllci51c3RyaW5nKCkuaW1wbCgpKTsKIH0KSW5kZXg6IFNvdXJjZS9XZWJDb3JlL2JyaWRnZS9q
bmkvanNjL0phdmFDbGFzc0pTQy5oCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9XZWJDb3JlL2JyaWRn
ZS9qbmkvanNjL0phdmFDbGFzc0pTQy5oCShyZXZpc2lvbiAxMTY2NjcpCisrKyBTb3VyY2UvV2Vi
Q29yZS9icmlkZ2Uvam5pL2pzYy9KYXZhQ2xhc3NKU0MuaAkod29ya2luZyBjb3B5KQpAQCAtNDEs
OCArNDEsOCBAQCBwdWJsaWM6CiAgICAgSmF2YUNsYXNzKGpvYmplY3QpOwogICAgIH5KYXZhQ2xh
c3MoKTsKIAotICAgIHZpcnR1YWwgTWV0aG9kTGlzdCBtZXRob2RzTmFtZWQoY29uc3QgSWRlbnRp
ZmllciYsIEluc3RhbmNlKikgY29uc3Q7Ci0gICAgdmlydHVhbCBGaWVsZCogZmllbGROYW1lZChj
b25zdCBJZGVudGlmaWVyJiwgSW5zdGFuY2UqKSBjb25zdDsKKyAgICB2aXJ0dWFsIE1ldGhvZExp
c3QgbWV0aG9kc05hbWVkKFByb3BlcnR5TmFtZSwgSW5zdGFuY2UqKSBjb25zdDsKKyAgICB2aXJ0
dWFsIEZpZWxkKiBmaWVsZE5hbWVkKFByb3BlcnR5TmFtZSwgSW5zdGFuY2UqKSBjb25zdDsKIAog
ICAgIGJvb2wgaXNOdW1iZXJDbGFzcygpIGNvbnN0OwogICAgIGJvb2wgaXNCb29sZWFuQ2xhc3Mo
KSBjb25zdDsKSW5kZXg6IFNvdXJjZS9XZWJDb3JlL2JyaWRnZS9qbmkvanNjL0phdmFJbnN0YW5j
ZUpTQy5jcHAKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL1dlYkNvcmUvYnJpZGdlL2puaS9qc2MvSmF2
YUluc3RhbmNlSlNDLmNwcAkocmV2aXNpb24gMTE2NjY3KQorKysgU291cmNlL1dlYkNvcmUvYnJp
ZGdlL2puaS9qc2MvSmF2YUluc3RhbmNlSlNDLmNwcAkod29ya2luZyBjb3B5KQpAQCAtMTE4LDcg
KzExOCw3IEBAIGNsYXNzIEphdmFSdW50aW1lTWV0aG9kIDogcHVibGljIFJ1bnRpbWUKIHB1Ymxp
YzoKICAgICB0eXBlZGVmIFJ1bnRpbWVNZXRob2QgQmFzZTsKIAotICAgIHN0YXRpYyBKYXZhUnVu
dGltZU1ldGhvZCogY3JlYXRlKEV4ZWNTdGF0ZSogZXhlYywgSlNHbG9iYWxPYmplY3QqIGdsb2Jh
bE9iamVjdCwgY29uc3QgSWRlbnRpZmllciYgbmFtZSwgQmluZGluZ3M6Ok1ldGhvZExpc3QmIGxp
c3QpCisgICAgc3RhdGljIEphdmFSdW50aW1lTWV0aG9kKiBjcmVhdGUoRXhlY1N0YXRlKiBleGVj
LCBKU0dsb2JhbE9iamVjdCogZ2xvYmFsT2JqZWN0LCBjb25zdCBVU3RyaW5nJiBuYW1lLCBCaW5k
aW5nczo6TWV0aG9kTGlzdCYgbGlzdCkKICAgICB7CiAgICAgICAgIC8vIEZJWE1FOiBkZXByZWNh
dGVkR2V0RE9NU3RydWN0dXJlIHVzZXMgdGhlIHByb3RvdHlwZSBvZmYgb2YgdGhlIHdyb25nIGds
b2JhbCBvYmplY3QKICAgICAgICAgLy8gV2UgbmVlZCB0byBwYXNzIGluIHRoZSByaWdodCBnbG9i
YWwgb2JqZWN0IGZvciAiaSIuCkBAIC0xNDEsNyArMTQxLDcgQEAgcHJpdmF0ZToKICAgICB7CiAg
ICAgfQogCi0gICAgdm9pZCBmaW5pc2hDcmVhdGlvbihKU0dsb2JhbERhdGEmIGdsb2JhbERhdGEs
IGNvbnN0IElkZW50aWZpZXImIG5hbWUpCisgICAgdm9pZCBmaW5pc2hDcmVhdGlvbihKU0dsb2Jh
bERhdGEmIGdsb2JhbERhdGEsIGNvbnN0IFVTdHJpbmcmIG5hbWUpCiAgICAgewogICAgICAgICBC
YXNlOjpmaW5pc2hDcmVhdGlvbihnbG9iYWxEYXRhLCBuYW1lKTsKICAgICAgICAgQVNTRVJUKGlu
aGVyaXRzKCZzX2luZm8pKTsKQEAgLTE1MCwxMCArMTUwLDEwIEBAIHByaXZhdGU6CiAKIGNvbnN0
IENsYXNzSW5mbyBKYXZhUnVudGltZU1ldGhvZDo6c19pbmZvID0geyAiSmF2YVJ1bnRpbWVNZXRo
b2QiLCAmUnVudGltZU1ldGhvZDo6c19pbmZvLCAwLCAwLCBDUkVBVEVfTUVUSE9EX1RBQkxFKEph
dmFSdW50aW1lTWV0aG9kKSB9OwogCi1KU1ZhbHVlIEphdmFJbnN0YW5jZTo6Z2V0TWV0aG9kKEV4
ZWNTdGF0ZSogZXhlYywgY29uc3QgSWRlbnRpZmllciYgcHJvcGVydHlOYW1lKQorSlNWYWx1ZSBK
YXZhSW5zdGFuY2U6OmdldE1ldGhvZChFeGVjU3RhdGUqIGV4ZWMsIFByb3BlcnR5TmFtZSBwcm9w
ZXJ0eU5hbWUpCiB7CiAgICAgTWV0aG9kTGlzdCBtZXRob2RMaXN0ID0gZ2V0Q2xhc3MoKS0+bWV0
aG9kc05hbWVkKHByb3BlcnR5TmFtZSwgdGhpcyk7Ci0gICAgcmV0dXJuIEphdmFSdW50aW1lTWV0
aG9kOjpjcmVhdGUoZXhlYywgZXhlYy0+bGV4aWNhbEdsb2JhbE9iamVjdCgpLCBwcm9wZXJ0eU5h
bWUsIG1ldGhvZExpc3QpOworICAgIHJldHVybiBKYXZhUnVudGltZU1ldGhvZDo6Y3JlYXRlKGV4
ZWMsIGV4ZWMtPmxleGljYWxHbG9iYWxPYmplY3QoKSwgcHJvcGVydHlOYW1lLnVzdHJpbmcoKSwg
bWV0aG9kTGlzdCk7CiB9CiAKIEpTVmFsdWUgSmF2YUluc3RhbmNlOjppbnZva2VNZXRob2QoRXhl
Y1N0YXRlKiBleGVjLCBSdW50aW1lTWV0aG9kKiBydW50aW1lTWV0aG9kKQpJbmRleDogU291cmNl
L1dlYkNvcmUvYnJpZGdlL2puaS9qc2MvSmF2YUluc3RhbmNlSlNDLmgKPT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0g
U291cmNlL1dlYkNvcmUvYnJpZGdlL2puaS9qc2MvSmF2YUluc3RhbmNlSlNDLmgJKHJldmlzaW9u
IDExNjY2NykKKysrIFNvdXJjZS9XZWJDb3JlL2JyaWRnZS9qbmkvanNjL0phdmFJbnN0YW5jZUpT
Qy5oCSh3b3JraW5nIGNvcHkpCkBAIC01Myw3ICs1Myw3IEBAIHB1YmxpYzoKICAgICB2aXJ0dWFs
IEpTVmFsdWUgdmFsdWVPZihFeGVjU3RhdGUqKSBjb25zdDsKICAgICB2aXJ0dWFsIEpTVmFsdWUg
ZGVmYXVsdFZhbHVlKEV4ZWNTdGF0ZSosIFByZWZlcnJlZFByaW1pdGl2ZVR5cGUpIGNvbnN0Owog
Ci0gICAgdmlydHVhbCBKU1ZhbHVlIGdldE1ldGhvZChFeGVjU3RhdGUqIGV4ZWMsIGNvbnN0IElk
ZW50aWZpZXImIHByb3BlcnR5TmFtZSk7CisgICAgdmlydHVhbCBKU1ZhbHVlIGdldE1ldGhvZChF
eGVjU3RhdGUqIGV4ZWMsIFByb3BlcnR5TmFtZSk7CiAgICAgdmlydHVhbCBKU1ZhbHVlIGludm9r
ZU1ldGhvZChFeGVjU3RhdGUqIGV4ZWMsIFJ1bnRpbWVNZXRob2QqIG1ldGhvZCk7CiAKICAgICBq
b2JqZWN0IGphdmFJbnN0YW5jZSgpIGNvbnN0IHsgcmV0dXJuIG1faW5zdGFuY2UtPmluc3RhbmNl
KCk7IH0KSW5kZXg6IFNvdXJjZS9XZWJDb3JlL2JyaWRnZS9qc2MvQnJpZGdlSlNDLmgKPT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PQotLS0gU291cmNlL1dlYkNvcmUvYnJpZGdlL2pzYy9CcmlkZ2VKU0MuaAkocmV2aXNpb24g
MTE2NjY3KQorKysgU291cmNlL1dlYkNvcmUvYnJpZGdlL2pzYy9CcmlkZ2VKU0MuaAkod29ya2lu
ZyBjb3B5KQpAQCAtNjIsOSArNjIsOSBAQCBjbGFzcyBDbGFzcyB7CiAgICAgV1RGX01BS0VfTk9O
Q09QWUFCTEUoQ2xhc3MpOyBXVEZfTUFLRV9GQVNUX0FMTE9DQVRFRDsKIHB1YmxpYzoKICAgICBD
bGFzcygpIHsgfQotICAgIHZpcnR1YWwgTWV0aG9kTGlzdCBtZXRob2RzTmFtZWQoY29uc3QgSWRl
bnRpZmllciYsIEluc3RhbmNlKikgY29uc3QgPSAwOwotICAgIHZpcnR1YWwgRmllbGQqIGZpZWxk
TmFtZWQoY29uc3QgSWRlbnRpZmllciYsIEluc3RhbmNlKikgY29uc3QgPSAwOwotICAgIHZpcnR1
YWwgSlNWYWx1ZSBmYWxsYmFja09iamVjdChFeGVjU3RhdGUqLCBJbnN0YW5jZSosIGNvbnN0IElk
ZW50aWZpZXImKSB7IHJldHVybiBqc1VuZGVmaW5lZCgpOyB9CisgICAgdmlydHVhbCBNZXRob2RM
aXN0IG1ldGhvZHNOYW1lZChQcm9wZXJ0eU5hbWUsIEluc3RhbmNlKikgY29uc3QgPSAwOworICAg
IHZpcnR1YWwgRmllbGQqIGZpZWxkTmFtZWQoUHJvcGVydHlOYW1lLCBJbnN0YW5jZSopIGNvbnN0
ID0gMDsKKyAgICB2aXJ0dWFsIEpTVmFsdWUgZmFsbGJhY2tPYmplY3QoRXhlY1N0YXRlKiwgSW5z
dGFuY2UqLCBQcm9wZXJ0eU5hbWUpIHsgcmV0dXJuIGpzVW5kZWZpbmVkKCk7IH0KIAogICAgIHZp
cnR1YWwgfkNsYXNzKCkgeyB9CiB9OwpAQCAtODksOSArODksOSBAQCBwdWJsaWM6CiAgICAgdm9p
ZCB3aWxsSW52YWxpZGF0ZVJ1bnRpbWVPYmplY3QoKTsKIAogICAgIC8vIFJldHVybnMgZmFsc2Ug
aWYgdGhlIHZhbHVlIHdhcyBub3Qgc2V0IHN1Y2Nlc3NmdWxseS4KLSAgICB2aXJ0dWFsIGJvb2wg
c2V0VmFsdWVPZlVuZGVmaW5lZEZpZWxkKEV4ZWNTdGF0ZSosIGNvbnN0IElkZW50aWZpZXImLCBK
U1ZhbHVlKSB7IHJldHVybiBmYWxzZTsgfQorICAgIHZpcnR1YWwgYm9vbCBzZXRWYWx1ZU9mVW5k
ZWZpbmVkRmllbGQoRXhlY1N0YXRlKiwgUHJvcGVydHlOYW1lLCBKU1ZhbHVlKSB7IHJldHVybiBm
YWxzZTsgfQogCi0gICAgdmlydHVhbCBKU1ZhbHVlIGdldE1ldGhvZChFeGVjU3RhdGUqIGV4ZWMs
IGNvbnN0IElkZW50aWZpZXImIHByb3BlcnR5TmFtZSkgPSAwOworICAgIHZpcnR1YWwgSlNWYWx1
ZSBnZXRNZXRob2QoRXhlY1N0YXRlKiBleGVjLCBQcm9wZXJ0eU5hbWUpID0gMDsKICAgICB2aXJ0
dWFsIEpTVmFsdWUgaW52b2tlTWV0aG9kKEV4ZWNTdGF0ZSosIFJ1bnRpbWVNZXRob2QqIG1ldGhv
ZCkgPSAwOwogCiAgICAgdmlydHVhbCBib29sIHN1cHBvcnRzSW52b2tlRGVmYXVsdE1ldGhvZCgp
IGNvbnN0IHsgcmV0dXJuIGZhbHNlOyB9CkBAIC0xMTAsOSArMTEwLDkgQEAgcHVibGljOgogCiAg
ICAgdmlydHVhbCB+SW5zdGFuY2UoKTsKIAotICAgIHZpcnR1YWwgYm9vbCBnZXRPd25Qcm9wZXJ0
eVNsb3QoSlNPYmplY3QqLCBFeGVjU3RhdGUqLCBjb25zdCBJZGVudGlmaWVyJiwgUHJvcGVydHlT
bG90JikgeyByZXR1cm4gZmFsc2U7IH0KLSAgICB2aXJ0dWFsIGJvb2wgZ2V0T3duUHJvcGVydHlE
ZXNjcmlwdG9yKEpTT2JqZWN0KiwgRXhlY1N0YXRlKiwgY29uc3QgSWRlbnRpZmllciYsIFByb3Bl
cnR5RGVzY3JpcHRvciYpIHsgcmV0dXJuIGZhbHNlOyB9Ci0gICAgdmlydHVhbCB2b2lkIHB1dChK
U09iamVjdCosIEV4ZWNTdGF0ZSosIGNvbnN0IElkZW50aWZpZXImLCBKU1ZhbHVlLCBQdXRQcm9w
ZXJ0eVNsb3QmKSB7IH0KKyAgICB2aXJ0dWFsIGJvb2wgZ2V0T3duUHJvcGVydHlTbG90KEpTT2Jq
ZWN0KiwgRXhlY1N0YXRlKiwgUHJvcGVydHlOYW1lLCBQcm9wZXJ0eVNsb3QmKSB7IHJldHVybiBm
YWxzZTsgfQorICAgIHZpcnR1YWwgYm9vbCBnZXRPd25Qcm9wZXJ0eURlc2NyaXB0b3IoSlNPYmpl
Y3QqLCBFeGVjU3RhdGUqLCBQcm9wZXJ0eU5hbWUsIFByb3BlcnR5RGVzY3JpcHRvciYpIHsgcmV0
dXJuIGZhbHNlOyB9CisgICAgdmlydHVhbCB2b2lkIHB1dChKU09iamVjdCosIEV4ZWNTdGF0ZSos
IFByb3BlcnR5TmFtZSwgSlNWYWx1ZSwgUHV0UHJvcGVydHlTbG90JikgeyB9CiAKIHByb3RlY3Rl
ZDoKICAgICB2aXJ0dWFsIHZvaWQgdmlydHVhbEJlZ2luKCkgeyB9CkluZGV4OiBTb3VyY2UvV2Vi
Q29yZS9icmlkZ2Uvb2JqYy9vYmpjX2NsYXNzLmgKPT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL1dlYkNv
cmUvYnJpZGdlL29iamMvb2JqY19jbGFzcy5oCShyZXZpc2lvbiAxMTY2NjcpCisrKyBTb3VyY2Uv
V2ViQ29yZS9icmlkZ2Uvb2JqYy9vYmpjX2NsYXNzLmgJKHdvcmtpbmcgY29weSkKQEAgLTQxLDEw
ICs0MSwxMCBAQCBwdWJsaWM6CiAgICAgLy8gUmV0dXJuIHRoZSBjYWNoZWQgT2JqQyBvZiB0aGUg
c3BlY2lmaWVkIG5hbWUuCiAgICAgc3RhdGljIE9iamNDbGFzcyAqY2xhc3NGb3JJc0EoQ2xhc3NT
dHJ1Y3RQdHIpOwogICAgIAotICAgIHZpcnR1YWwgTWV0aG9kTGlzdCBtZXRob2RzTmFtZWQoY29u
c3QgSWRlbnRpZmllciYsIEluc3RhbmNlICppbnN0YW5jZSkgY29uc3Q7Ci0gICAgdmlydHVhbCBG
aWVsZCAqZmllbGROYW1lZChjb25zdCBJZGVudGlmaWVyJiwgSW5zdGFuY2UgKmluc3RhbmNlKSBj
b25zdDsKKyAgICB2aXJ0dWFsIE1ldGhvZExpc3QgbWV0aG9kc05hbWVkKFByb3BlcnR5TmFtZSwg
SW5zdGFuY2UgKmluc3RhbmNlKSBjb25zdDsKKyAgICB2aXJ0dWFsIEZpZWxkICpmaWVsZE5hbWVk
KFByb3BlcnR5TmFtZSwgSW5zdGFuY2UgKmluc3RhbmNlKSBjb25zdDsKIAotICAgIHZpcnR1YWwg
SlNWYWx1ZSBmYWxsYmFja09iamVjdChFeGVjU3RhdGUgKmV4ZWMsIEluc3RhbmNlICppbnN0YW5j
ZSwgY29uc3QgSWRlbnRpZmllciAmcHJvcGVydHlOYW1lKTsKKyAgICB2aXJ0dWFsIEpTVmFsdWUg
ZmFsbGJhY2tPYmplY3QoRXhlY1N0YXRlICpleGVjLCBJbnN0YW5jZSAqaW5zdGFuY2UsIFByb3Bl
cnR5TmFtZSk7CiAgICAgCiAgICAgQ2xhc3NTdHJ1Y3RQdHIgaXNhKCkgeyByZXR1cm4gX2lzYTsg
fQogICAgIApJbmRleDogU291cmNlL1dlYkNvcmUvYnJpZGdlL29iamMvb2JqY19jbGFzcy5tbQo9
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09Ci0tLSBTb3VyY2UvV2ViQ29yZS9icmlkZ2Uvb2JqYy9vYmpjX2NsYXNzLm1tCShy
ZXZpc2lvbiAxMTY2NjcpCisrKyBTb3VyY2UvV2ViQ29yZS9icmlkZ2Uvb2JqYy9vYmpjX2NsYXNz
Lm1tCSh3b3JraW5nIGNvcHkpCkBAIC05NSw3ICs5NSw3IEBAIHN0YXRpYyBpbmxpbmUgdm9pZCBj
b252ZXJ0SlNNZXRob2ROYW1lVG8KICAgICB9CiB9CiAKLU1ldGhvZExpc3QgT2JqY0NsYXNzOjpt
ZXRob2RzTmFtZWQoY29uc3QgSWRlbnRpZmllciYgaWRlbnRpZmllciwgSW5zdGFuY2UqKSBjb25z
dAorTWV0aG9kTGlzdCBPYmpjQ2xhc3M6Om1ldGhvZHNOYW1lZChQcm9wZXJ0eU5hbWUgaWRlbnRp
ZmllciwgSW5zdGFuY2UqKSBjb25zdAogewogICAgIE1ldGhvZExpc3QgbWV0aG9kTGlzdDsKICAg
ICBpZiAoTWV0aG9kKiBtZXRob2QgPSBtX21ldGhvZENhY2hlLmdldChpZGVudGlmaWVyLmltcGwo
KSkpIHsKQEAgLTEwMyw3ICsxMDMsNyBAQCBNZXRob2RMaXN0IE9iamNDbGFzczo6bWV0aG9kc05h
bWVkKGNvbnN0CiAgICAgICAgIHJldHVybiBtZXRob2RMaXN0OwogICAgIH0KIAotICAgIENTdHJp
bmcganNOYW1lID0gaWRlbnRpZmllci5hc2NpaSgpOworICAgIENTdHJpbmcganNOYW1lID0gaWRl
bnRpZmllci51c3RyaW5nKCkuYXNjaWkoKTsKICAgICBKU05hbWVDb252ZXJzaW9uQnVmZmVyIGJ1
ZmZlcjsKICAgICBjb252ZXJ0SlNNZXRob2ROYW1lVG9PYmpjKGpzTmFtZSwgYnVmZmVyKTsKICAg
ICBSZXRhaW5QdHI8Q0ZTdHJpbmdSZWY+IG1ldGhvZE5hbWUoQWRvcHRDRiwgQ0ZTdHJpbmdDcmVh
dGVXaXRoQ1N0cmluZyhOVUxMLCBidWZmZXIuZGF0YSgpLCBrQ0ZTdHJpbmdFbmNvZGluZ0FTQ0lJ
KSk7CkBAIC0xNDMsNyArMTQzLDcgQEAgTWV0aG9kTGlzdCBPYmpjQ2xhc3M6Om1ldGhvZHNOYW1l
ZChjb25zdAogICAgIHJldHVybiBtZXRob2RMaXN0OwogfQogCi1GaWVsZCogT2JqY0NsYXNzOjpm
aWVsZE5hbWVkKGNvbnN0IElkZW50aWZpZXImIGlkZW50aWZpZXIsIEluc3RhbmNlKiBpbnN0YW5j
ZSkgY29uc3QKK0ZpZWxkKiBPYmpjQ2xhc3M6OmZpZWxkTmFtZWQoUHJvcGVydHlOYW1lIGlkZW50
aWZpZXIsIEluc3RhbmNlKiBpbnN0YW5jZSkgY29uc3QKIHsKICAgICBGaWVsZCogZmllbGQgPSBt
X2ZpZWxkQ2FjaGUuZ2V0KGlkZW50aWZpZXIuaW1wbCgpKTsKICAgICBpZiAoZmllbGQpCkBAIC0x
NTEsNyArMTUxLDcgQEAgRmllbGQqIE9iamNDbGFzczo6ZmllbGROYW1lZChjb25zdCBJZGVudAog
CiAgICAgQ2xhc3NTdHJ1Y3RQdHIgdGhpc0NsYXNzID0gX2lzYTsKIAotICAgIENTdHJpbmcganNO
YW1lID0gaWRlbnRpZmllci5hc2NpaSgpOworICAgIENTdHJpbmcganNOYW1lID0gaWRlbnRpZmll
ci51c3RyaW5nKCkuYXNjaWkoKTsKICAgICBSZXRhaW5QdHI8Q0ZTdHJpbmdSZWY+IGZpZWxkTmFt
ZShBZG9wdENGLCBDRlN0cmluZ0NyZWF0ZVdpdGhDU3RyaW5nKE5VTEwsIGpzTmFtZS5kYXRhKCks
IGtDRlN0cmluZ0VuY29kaW5nQVNDSUkpKTsKICAgICBpZCB0YXJnZXRPYmplY3QgPSAoc3RhdGlj
X2Nhc3Q8T2JqY0luc3RhbmNlKj4oaW5zdGFuY2UpKS0+Z2V0T2JqZWN0KCk7CiAgICAgaWQgYXR0
cmlidXRlcyA9IFt0YXJnZXRPYmplY3QgYXR0cmlidXRlS2V5c107CkBAIC0yMjEsMTQgKzIyMSwx
NCBAQCBGaWVsZCogT2JqY0NsYXNzOjpmaWVsZE5hbWVkKGNvbnN0IElkZW50CiAgICAgcmV0dXJu
IGZpZWxkOwogfQogCi1KU1ZhbHVlIE9iamNDbGFzczo6ZmFsbGJhY2tPYmplY3QoRXhlY1N0YXRl
KiBleGVjLCBJbnN0YW5jZSogaW5zdGFuY2UsIGNvbnN0IElkZW50aWZpZXIgJnByb3BlcnR5TmFt
ZSkKK0pTVmFsdWUgT2JqY0NsYXNzOjpmYWxsYmFja09iamVjdChFeGVjU3RhdGUqIGV4ZWMsIElu
c3RhbmNlKiBpbnN0YW5jZSwgUHJvcGVydHlOYW1lIHByb3BlcnR5TmFtZSkKIHsKICAgICBPYmpj
SW5zdGFuY2UqIG9iamNJbnN0YW5jZSA9IHN0YXRpY19jYXN0PE9iamNJbnN0YW5jZSo+KGluc3Rh
bmNlKTsKICAgICBpZCB0YXJnZXRPYmplY3QgPSBvYmpjSW5zdGFuY2UtPmdldE9iamVjdCgpOwog
ICAgIAogICAgIGlmICghW3RhcmdldE9iamVjdCByZXNwb25kc1RvU2VsZWN0b3I6QHNlbGVjdG9y
KGludm9rZVVuZGVmaW5lZE1ldGhvZEZyb21XZWJTY3JpcHQ6d2l0aEFyZ3VtZW50czopXSkKICAg
ICAgICAgcmV0dXJuIGpzVW5kZWZpbmVkKCk7Ci0gICAgcmV0dXJuIE9iamNGYWxsYmFja09iamVj
dEltcDo6Y3JlYXRlKGV4ZWMsIGV4ZWMtPmxleGljYWxHbG9iYWxPYmplY3QoKSwgb2JqY0luc3Rh
bmNlLCBwcm9wZXJ0eU5hbWUpOworICAgIHJldHVybiBPYmpjRmFsbGJhY2tPYmplY3RJbXA6OmNy
ZWF0ZShleGVjLCBleGVjLT5sZXhpY2FsR2xvYmFsT2JqZWN0KCksIG9iamNJbnN0YW5jZSwgcHJv
cGVydHlOYW1lLmltcGwoKSk7CiB9CiAKIH0KSW5kZXg6IFNvdXJjZS9XZWJDb3JlL2JyaWRnZS9v
YmpjL29iamNfaW5zdGFuY2UuaAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2ViQ29yZS9icmlkZ2Uv
b2JqYy9vYmpjX2luc3RhbmNlLmgJKHJldmlzaW9uIDExNjY2NykKKysrIFNvdXJjZS9XZWJDb3Jl
L2JyaWRnZS9vYmpjL29iamNfaW5zdGFuY2UuaAkod29ya2luZyBjb3B5KQpAQCAtNDcsMTQgKzQ3
LDE0IEBAIHB1YmxpYzoKICAgICB2aXJ0dWFsIEpTVmFsdWUgdmFsdWVPZihFeGVjU3RhdGUqKSBj
b25zdDsKICAgICB2aXJ0dWFsIEpTVmFsdWUgZGVmYXVsdFZhbHVlKEV4ZWNTdGF0ZSosIFByZWZl
cnJlZFByaW1pdGl2ZVR5cGUpIGNvbnN0OwogCi0gICAgdmlydHVhbCBKU1ZhbHVlIGdldE1ldGhv
ZChFeGVjU3RhdGUqIGV4ZWMsIGNvbnN0IElkZW50aWZpZXImIHByb3BlcnR5TmFtZSk7CisgICAg
dmlydHVhbCBKU1ZhbHVlIGdldE1ldGhvZChFeGVjU3RhdGUqIGV4ZWMsIFByb3BlcnR5TmFtZSk7
CiAgICAgSlNWYWx1ZSBpbnZva2VPYmpjTWV0aG9kKEV4ZWNTdGF0ZSosIE9iamNNZXRob2QqIG1l
dGhvZCk7CiAgICAgdmlydHVhbCBKU1ZhbHVlIGludm9rZU1ldGhvZChFeGVjU3RhdGUqLCBSdW50
aW1lTWV0aG9kKiBtZXRob2QpOwogICAgIHZpcnR1YWwgYm9vbCBzdXBwb3J0c0ludm9rZURlZmF1
bHRNZXRob2QoKSBjb25zdDsKICAgICB2aXJ0dWFsIEpTVmFsdWUgaW52b2tlRGVmYXVsdE1ldGhv
ZChFeGVjU3RhdGUqKTsKIAotICAgIEpTVmFsdWUgZ2V0VmFsdWVPZlVuZGVmaW5lZEZpZWxkKEV4
ZWNTdGF0ZSosIGNvbnN0IElkZW50aWZpZXImKSBjb25zdDsKLSAgICB2aXJ0dWFsIGJvb2wgc2V0
VmFsdWVPZlVuZGVmaW5lZEZpZWxkKEV4ZWNTdGF0ZSosIGNvbnN0IElkZW50aWZpZXImLCBKU1Zh
bHVlKTsKKyAgICBKU1ZhbHVlIGdldFZhbHVlT2ZVbmRlZmluZWRGaWVsZChFeGVjU3RhdGUqLCBQ
cm9wZXJ0eU5hbWUpIGNvbnN0OworICAgIHZpcnR1YWwgYm9vbCBzZXRWYWx1ZU9mVW5kZWZpbmVk
RmllbGQoRXhlY1N0YXRlKiwgUHJvcGVydHlOYW1lLCBKU1ZhbHVlKTsKIAogICAgIE9iamVjdFN0
cnVjdFB0ciBnZXRPYmplY3QoKSBjb25zdCB7IHJldHVybiBfaW5zdGFuY2UuZ2V0KCk7IH0KICAg
ICAKSW5kZXg6IFNvdXJjZS9XZWJDb3JlL2JyaWRnZS9vYmpjL29iamNfaW5zdGFuY2UubW0KPT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PQotLS0gU291cmNlL1dlYkNvcmUvYnJpZGdlL29iamMvb2JqY19pbnN0YW5jZS5tbQko
cmV2aXNpb24gMTE2NjY3KQorKysgU291cmNlL1dlYkNvcmUvYnJpZGdlL29iamMvb2JqY19pbnN0
YW5jZS5tbQkod29ya2luZyBjb3B5KQpAQCAtMTgxLDcgKzE4MSw3IEBAIGJvb2wgT2JqY0luc3Rh
bmNlOjpzdXBwb3J0c0ludm9rZURlZmF1bHQKIAogY2xhc3MgT2JqQ1J1bnRpbWVNZXRob2QgOiBw
dWJsaWMgUnVudGltZU1ldGhvZCB7CiBwdWJsaWM6Ci0gICAgc3RhdGljIE9iakNSdW50aW1lTWV0
aG9kKiBjcmVhdGUoRXhlY1N0YXRlKiBleGVjLCBKU0dsb2JhbE9iamVjdCogZ2xvYmFsT2JqZWN0
LCBjb25zdCBJZGVudGlmaWVyJiBuYW1lLCBCaW5kaW5nczo6TWV0aG9kTGlzdCYgbGlzdCkKKyAg
ICBzdGF0aWMgT2JqQ1J1bnRpbWVNZXRob2QqIGNyZWF0ZShFeGVjU3RhdGUqIGV4ZWMsIEpTR2xv
YmFsT2JqZWN0KiBnbG9iYWxPYmplY3QsIGNvbnN0IFVTdHJpbmcmIG5hbWUsIEJpbmRpbmdzOjpN
ZXRob2RMaXN0JiBsaXN0KQogICAgIHsKICAgICAgICAgLy8gRklYTUU6IGRlcHJlY2F0ZWRHZXRE
T01TdHJ1Y3R1cmUgdXNlcyB0aGUgcHJvdG90eXBlIG9mZiBvZiB0aGUgd3JvbmcgZ2xvYmFsIG9i
amVjdAogICAgICAgICAvLyBXZSBuZWVkIHRvIHBhc3MgaW4gdGhlIHJpZ2h0IGdsb2JhbCBvYmpl
Y3QgZm9yICJpIi4KQEAgLTIwNiw3ICsyMDYsNyBAQCBwcml2YXRlOgogICAgIHsKICAgICB9CiAK
LSAgICB2b2lkIGZpbmlzaENyZWF0aW9uKEpTR2xvYmFsRGF0YSYgZ2xvYmFsRGF0YSwgY29uc3Qg
SWRlbnRpZmllciYgbmFtZSkKKyAgICB2b2lkIGZpbmlzaENyZWF0aW9uKEpTR2xvYmFsRGF0YSYg
Z2xvYmFsRGF0YSwgY29uc3QgVVN0cmluZyYgbmFtZSkKICAgICB7CiAgICAgICAgIEJhc2U6OmZp
bmlzaENyZWF0aW9uKGdsb2JhbERhdGEsIG5hbWUpOwogICAgICAgICBBU1NFUlQoaW5oZXJpdHMo
JnNfaW5mbykpOwpAQCAtMjE1LDEwICsyMTUsMTAgQEAgcHJpdmF0ZToKIAogY29uc3QgQ2xhc3NJ
bmZvIE9iakNSdW50aW1lTWV0aG9kOjpzX2luZm8gPSB7ICJPYmpDUnVudGltZU1ldGhvZCIsICZS
dW50aW1lTWV0aG9kOjpzX2luZm8sIDAsIDAsIENSRUFURV9NRVRIT0RfVEFCTEUoT2JqQ1J1bnRp
bWVNZXRob2QpIH07CiAKLUpTVmFsdWUgT2JqY0luc3RhbmNlOjpnZXRNZXRob2QoRXhlY1N0YXRl
KiBleGVjLCBjb25zdCBJZGVudGlmaWVyJiBwcm9wZXJ0eU5hbWUpCitKU1ZhbHVlIE9iamNJbnN0
YW5jZTo6Z2V0TWV0aG9kKEV4ZWNTdGF0ZSogZXhlYywgUHJvcGVydHlOYW1lIHByb3BlcnR5TmFt
ZSkKIHsKICAgICBNZXRob2RMaXN0IG1ldGhvZExpc3QgPSBnZXRDbGFzcygpLT5tZXRob2RzTmFt
ZWQocHJvcGVydHlOYW1lLCB0aGlzKTsKLSAgICByZXR1cm4gT2JqQ1J1bnRpbWVNZXRob2Q6OmNy
ZWF0ZShleGVjLCBleGVjLT5sZXhpY2FsR2xvYmFsT2JqZWN0KCksIHByb3BlcnR5TmFtZSwgbWV0
aG9kTGlzdCk7CisgICAgcmV0dXJuIE9iakNSdW50aW1lTWV0aG9kOjpjcmVhdGUoZXhlYywgZXhl
Yy0+bGV4aWNhbEdsb2JhbE9iamVjdCgpLCBwcm9wZXJ0eU5hbWUudXN0cmluZygpLCBtZXRob2RM
aXN0KTsKIH0KIAogSlNWYWx1ZSBPYmpjSW5zdGFuY2U6Omludm9rZU1ldGhvZChFeGVjU3RhdGUq
IGV4ZWMsIFJ1bnRpbWVNZXRob2QqIHJ1bnRpbWVNZXRob2QpCkBAIC00MDEsNyArNDAxLDcgQEAg
SlNWYWx1ZSBPYmpjSW5zdGFuY2U6Omludm9rZURlZmF1bHRNZXRobwogICAgIHJldHVybiBjb25z
dF9jYXN0PEpTVmFsdWUmPihyZXN1bHQpOwogfQogCi1ib29sIE9iamNJbnN0YW5jZTo6c2V0VmFs
dWVPZlVuZGVmaW5lZEZpZWxkKEV4ZWNTdGF0ZSogZXhlYywgY29uc3QgSWRlbnRpZmllciYgcHJv
cGVydHksIEpTVmFsdWUgYVZhbHVlKQorYm9vbCBPYmpjSW5zdGFuY2U6OnNldFZhbHVlT2ZVbmRl
ZmluZWRGaWVsZChFeGVjU3RhdGUqIGV4ZWMsIFByb3BlcnR5TmFtZSBwcm9wZXJ0eSwgSlNWYWx1
ZSBhVmFsdWUpCiB7CiAgICAgaWQgdGFyZ2V0T2JqZWN0ID0gZ2V0T2JqZWN0KCk7CiAgICAgaWYg
KCFbdGFyZ2V0T2JqZWN0IHJlc3BvbmRzVG9TZWxlY3RvcjpAc2VsZWN0b3Ioc2V0VmFsdWU6Zm9y
VW5kZWZpbmVkS2V5OildKQpAQCAtNDE4LDcgKzQxOCw3IEBAIGJvb2wgT2JqY0luc3RhbmNlOjpz
ZXRWYWx1ZU9mVW5kZWZpbmVkRmkKICAgICAgICAgT2JqY1ZhbHVlIG9iamNWYWx1ZSA9IGNvbnZl
cnRWYWx1ZVRvT2JqY1ZhbHVlKGV4ZWMsIGFWYWx1ZSwgT2JqY09iamVjdFR5cGUpOwogCiAgICAg
ICAgIEB0cnkgewotICAgICAgICAgICAgW3RhcmdldE9iamVjdCBzZXRWYWx1ZTpvYmpjVmFsdWUu
b2JqZWN0VmFsdWUgZm9yVW5kZWZpbmVkS2V5OltOU1N0cmluZyBzdHJpbmdXaXRoQ1N0cmluZzpw
cm9wZXJ0eS5hc2NpaSgpLmRhdGEoKSBlbmNvZGluZzpOU0FTQ0lJU3RyaW5nRW5jb2RpbmddXTsK
KyAgICAgICAgICAgIFt0YXJnZXRPYmplY3Qgc2V0VmFsdWU6b2JqY1ZhbHVlLm9iamVjdFZhbHVl
IGZvclVuZGVmaW5lZEtleTpbTlNTdHJpbmcgc3RyaW5nV2l0aENTdHJpbmc6cHJvcGVydHkudXN0
cmluZygpLmFzY2lpKCkuZGF0YSgpIGVuY29kaW5nOk5TQVNDSUlTdHJpbmdFbmNvZGluZ11dOwog
ICAgICAgICB9IEBjYXRjaChOU0V4Y2VwdGlvbiogbG9jYWxFeGNlcHRpb24pIHsKICAgICAgICAg
ICAgIC8vIERvIG5vdGhpbmcuICBDbGFzcyBkaWQgbm90IG92ZXJyaWRlIHZhbHVlRm9yVW5kZWZp
bmVkS2V5Oi4KICAgICAgICAgfQpAQCAtNDI5LDcgKzQyOSw3IEBAIGJvb2wgT2JqY0luc3RhbmNl
OjpzZXRWYWx1ZU9mVW5kZWZpbmVkRmkKICAgICByZXR1cm4gdHJ1ZTsKIH0KIAotSlNWYWx1ZSBP
YmpjSW5zdGFuY2U6OmdldFZhbHVlT2ZVbmRlZmluZWRGaWVsZChFeGVjU3RhdGUqIGV4ZWMsIGNv
bnN0IElkZW50aWZpZXImIHByb3BlcnR5KSBjb25zdAorSlNWYWx1ZSBPYmpjSW5zdGFuY2U6Omdl
dFZhbHVlT2ZVbmRlZmluZWRGaWVsZChFeGVjU3RhdGUqIGV4ZWMsIFByb3BlcnR5TmFtZSBwcm9w
ZXJ0eSkgY29uc3QKIHsKICAgICBKU1ZhbHVlIHJlc3VsdCA9IGpzVW5kZWZpbmVkKCk7CiAgICAg
CkBAIC00NDQsNyArNDQ0LDcgQEAgSlNWYWx1ZSBPYmpjSW5zdGFuY2U6OmdldFZhbHVlT2ZVbmRl
ZmluZQogICAgICAgICBzZXRHbG9iYWxFeGNlcHRpb24obmlsKTsKICAgICAKICAgICAgICAgQHRy
eSB7Ci0gICAgICAgICAgICBpZCBvYmpjVmFsdWUgPSBbdGFyZ2V0T2JqZWN0IHZhbHVlRm9yVW5k
ZWZpbmVkS2V5OltOU1N0cmluZyBzdHJpbmdXaXRoQ1N0cmluZzpwcm9wZXJ0eS5hc2NpaSgpLmRh
dGEoKSBlbmNvZGluZzpOU0FTQ0lJU3RyaW5nRW5jb2RpbmddXTsKKyAgICAgICAgICAgIGlkIG9i
amNWYWx1ZSA9IFt0YXJnZXRPYmplY3QgdmFsdWVGb3JVbmRlZmluZWRLZXk6W05TU3RyaW5nIHN0
cmluZ1dpdGhDU3RyaW5nOnByb3BlcnR5LnVzdHJpbmcoKS5hc2NpaSgpLmRhdGEoKSBlbmNvZGlu
ZzpOU0FTQ0lJU3RyaW5nRW5jb2RpbmddXTsKICAgICAgICAgICAgIHJlc3VsdCA9IGNvbnZlcnRP
YmpjVmFsdWVUb1ZhbHVlKGV4ZWMsICZvYmpjVmFsdWUsIE9iamNPYmplY3RUeXBlLCBtX3Jvb3RP
YmplY3QuZ2V0KCkpOwogICAgICAgICB9IEBjYXRjaChOU0V4Y2VwdGlvbiogbG9jYWxFeGNlcHRp
b24pIHsKICAgICAgICAgICAgIC8vIERvIG5vdGhpbmcuICBDbGFzcyBkaWQgbm90IG92ZXJyaWRl
IHZhbHVlRm9yVW5kZWZpbmVkS2V5Oi4KSW5kZXg6IFNvdXJjZS9XZWJDb3JlL2JyaWRnZS9vYmpj
L29iamNfcnVudGltZS5oCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9XZWJDb3JlL2JyaWRnZS9vYmpj
L29iamNfcnVudGltZS5oCShyZXZpc2lvbiAxMTY2NjcpCisrKyBTb3VyY2UvV2ViQ29yZS9icmlk
Z2Uvb2JqYy9vYmpjX3J1bnRpbWUuaAkod29ya2luZyBjb3B5KQpAQCAtOTQsNyArOTQsNyBAQCBj
bGFzcyBPYmpjRmFsbGJhY2tPYmplY3RJbXAgOiBwdWJsaWMgSlNOCiBwdWJsaWM6CiAgICAgdHlw
ZWRlZiBKU05vbkZpbmFsT2JqZWN0IEJhc2U7CiAKLSAgICBzdGF0aWMgT2JqY0ZhbGxiYWNrT2Jq
ZWN0SW1wKiBjcmVhdGUoRXhlY1N0YXRlKiBleGVjLCBKU0dsb2JhbE9iamVjdCogZ2xvYmFsT2Jq
ZWN0LCBPYmpjSW5zdGFuY2UqIGluc3RhbmNlLCBjb25zdCBJZGVudGlmaWVyJiBwcm9wZXJ0eU5h
bWUpCisgICAgc3RhdGljIE9iamNGYWxsYmFja09iamVjdEltcCogY3JlYXRlKEV4ZWNTdGF0ZSog
ZXhlYywgSlNHbG9iYWxPYmplY3QqIGdsb2JhbE9iamVjdCwgT2JqY0luc3RhbmNlKiBpbnN0YW5j
ZSwgY29uc3QgVVN0cmluZyYgcHJvcGVydHlOYW1lKQogICAgIHsKICAgICAgICAgLy8gRklYTUU6
IGRlcHJlY2F0ZWRHZXRET01TdHJ1Y3R1cmUgdXNlcyB0aGUgcHJvdG90eXBlIG9mZiBvZiB0aGUg
d3JvbmcgZ2xvYmFsIG9iamVjdAogICAgICAgICBTdHJ1Y3R1cmUqIGRvbVN0cnVjdHVyZSA9IFdl
YkNvcmU6OmRlcHJlY2F0ZWRHZXRET01TdHJ1Y3R1cmU8T2JqY0ZhbGxiYWNrT2JqZWN0SW1wPihl
eGVjKTsKQEAgLTEwNSw3ICsxMDUsNyBAQCBwdWJsaWM6CiAKICAgICBzdGF0aWMgY29uc3QgQ2xh
c3NJbmZvIHNfaW5mbzsKIAotICAgIGNvbnN0IElkZW50aWZpZXImIHByb3BlcnR5TmFtZSgpIGNv
bnN0IHsgcmV0dXJuIF9pdGVtOyB9CisgICAgY29uc3QgVVN0cmluZyYgcHJvcGVydHlOYW1lKCkg
Y29uc3QgeyByZXR1cm4gX2l0ZW07IH0KIAogICAgIHN0YXRpYyBPYmplY3RQcm90b3R5cGUqIGNy
ZWF0ZVByb3RvdHlwZShFeGVjU3RhdGUqLCBKU0dsb2JhbE9iamVjdCogZ2xvYmFsT2JqZWN0KQog
ICAgIHsKQEAgLTEyMSwyMCArMTIxLDIwIEBAIHByb3RlY3RlZDoKICAgICB2b2lkIGZpbmlzaENy
ZWF0aW9uKEpTR2xvYmFsT2JqZWN0Kik7CiAKIHByaXZhdGU6Ci0gICAgT2JqY0ZhbGxiYWNrT2Jq
ZWN0SW1wKEpTR2xvYmFsT2JqZWN0KiwgU3RydWN0dXJlKiwgT2JqY0luc3RhbmNlKiwgY29uc3Qg
SWRlbnRpZmllciYgcHJvcGVydHlOYW1lKTsKKyAgICBPYmpjRmFsbGJhY2tPYmplY3RJbXAoSlNH
bG9iYWxPYmplY3QqLCBTdHJ1Y3R1cmUqLCBPYmpjSW5zdGFuY2UqLCBjb25zdCBVU3RyaW5nJiBw
cm9wZXJ0eU5hbWUpOwogICAgIHN0YXRpYyB2b2lkIGRlc3Ryb3koSlNDZWxsKik7CiAgICAgc3Rh
dGljIGNvbnN0IHVuc2lnbmVkIFN0cnVjdHVyZUZsYWdzID0gT3ZlcnJpZGVzR2V0T3duUHJvcGVy
dHlTbG90IHwgSlNPYmplY3Q6OlN0cnVjdHVyZUZsYWdzOwotICAgIHN0YXRpYyBib29sIGdldE93
blByb3BlcnR5U2xvdChKU0NlbGwqLCBFeGVjU3RhdGUqLCBjb25zdCBJZGVudGlmaWVyJiwgUHJv
cGVydHlTbG90Jik7Ci0gICAgc3RhdGljIGJvb2wgZ2V0T3duUHJvcGVydHlEZXNjcmlwdG9yKEpT
T2JqZWN0KiwgRXhlY1N0YXRlKiwgY29uc3QgSWRlbnRpZmllciYsIFByb3BlcnR5RGVzY3JpcHRv
ciYpOwotICAgIHN0YXRpYyB2b2lkIHB1dChKU0NlbGwqLCBFeGVjU3RhdGUqLCBjb25zdCBJZGVu
dGlmaWVyJiBwcm9wZXJ0eU5hbWUsIEpTVmFsdWUsIFB1dFByb3BlcnR5U2xvdCYpOworICAgIHN0
YXRpYyBib29sIGdldE93blByb3BlcnR5U2xvdChKU0NlbGwqLCBFeGVjU3RhdGUqLCBQcm9wZXJ0
eU5hbWUsIFByb3BlcnR5U2xvdCYpOworICAgIHN0YXRpYyBib29sIGdldE93blByb3BlcnR5RGVz
Y3JpcHRvcihKU09iamVjdCosIEV4ZWNTdGF0ZSosIFByb3BlcnR5TmFtZSwgUHJvcGVydHlEZXNj
cmlwdG9yJik7CisgICAgc3RhdGljIHZvaWQgcHV0KEpTQ2VsbCosIEV4ZWNTdGF0ZSosIFByb3Bl
cnR5TmFtZSwgSlNWYWx1ZSwgUHV0UHJvcGVydHlTbG90Jik7CiAgICAgc3RhdGljIENhbGxUeXBl
IGdldENhbGxEYXRhKEpTQ2VsbCosIENhbGxEYXRhJik7Ci0gICAgc3RhdGljIGJvb2wgZGVsZXRl
UHJvcGVydHkoSlNDZWxsKiwgRXhlY1N0YXRlKiwgY29uc3QgSWRlbnRpZmllciYgcHJvcGVydHlO
YW1lKTsKKyAgICBzdGF0aWMgYm9vbCBkZWxldGVQcm9wZXJ0eShKU0NlbGwqLCBFeGVjU3RhdGUq
LCBQcm9wZXJ0eU5hbWUpOwogICAgIHN0YXRpYyBKU1ZhbHVlIGRlZmF1bHRWYWx1ZShjb25zdCBK
U09iamVjdCosIEV4ZWNTdGF0ZSosIFByZWZlcnJlZFByaW1pdGl2ZVR5cGUpOwogCiAgICAgYm9v
bCB0b0Jvb2xlYW4oRXhlY1N0YXRlKikgY29uc3Q7IC8vIEZJWE1FOiBDdXJyZW50bHkgdGhpcyBp
cyBicm9rZW4gYmVjYXVzZSBub25lIG9mIHRoZSBzdXBlcmNsYXNzZXMgYXJlIG1hcmtlZCB2aXJ0
dWFsLiBXZSBuZWVkIHRvIHNvbHZlIHRoaXMgaW4gdGhlIGxvbmdlciB0ZXJtLgogCiAgICAgUmVm
UHRyPE9iamNJbnN0YW5jZT4gX2luc3RhbmNlOwotICAgIElkZW50aWZpZXIgX2l0ZW07CisgICAg
VVN0cmluZyBfaXRlbTsKIH07CiAKIH0gLy8gbmFtZXNwYWNlIEJpbmRpbmdzCkluZGV4OiBTb3Vy
Y2UvV2ViQ29yZS9icmlkZ2Uvb2JqYy9vYmpjX3J1bnRpbWUubW0KPT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291
cmNlL1dlYkNvcmUvYnJpZGdlL29iamMvb2JqY19ydW50aW1lLm1tCShyZXZpc2lvbiAxMTY2Njcp
CisrKyBTb3VyY2UvV2ViQ29yZS9icmlkZ2Uvb2JqYy9vYmpjX3J1bnRpbWUubW0JKHdvcmtpbmcg
Y29weSkKQEAgLTE5Miw3ICsxOTIsNyBAQCB1bnNpZ25lZCBpbnQgT2JqY0FycmF5OjpnZXRMZW5n
dGgoKSBjb25zCiAKIGNvbnN0IENsYXNzSW5mbyBPYmpjRmFsbGJhY2tPYmplY3RJbXA6OnNfaW5m
byA9IHsgIk9iamNGYWxsYmFja09iamVjdCIsICZKU05vbkZpbmFsT2JqZWN0OjpzX2luZm8sIDAs
IDAsIENSRUFURV9NRVRIT0RfVEFCTEUoT2JqY0ZhbGxiYWNrT2JqZWN0SW1wKSB9OwogCi1PYmpj
RmFsbGJhY2tPYmplY3RJbXA6Ok9iamNGYWxsYmFja09iamVjdEltcChKU0dsb2JhbE9iamVjdCog
Z2xvYmFsT2JqZWN0LCBTdHJ1Y3R1cmUqIHN0cnVjdHVyZSwgT2JqY0luc3RhbmNlKiBpLCBjb25z
dCBJZGVudGlmaWVyJiBwcm9wZXJ0eU5hbWUpCitPYmpjRmFsbGJhY2tPYmplY3RJbXA6Ok9iamNG
YWxsYmFja09iamVjdEltcChKU0dsb2JhbE9iamVjdCogZ2xvYmFsT2JqZWN0LCBTdHJ1Y3R1cmUq
IHN0cnVjdHVyZSwgT2JqY0luc3RhbmNlKiBpLCBjb25zdCBVU3RyaW5nJiBwcm9wZXJ0eU5hbWUp
CiAgICAgOiBKU05vbkZpbmFsT2JqZWN0KGdsb2JhbE9iamVjdC0+Z2xvYmFsRGF0YSgpLCBzdHJ1
Y3R1cmUpCiAgICAgLCBfaW5zdGFuY2UoaSkKICAgICAsIF9pdGVtKHByb3BlcnR5TmFtZSkKQEAg
LTIxMCwyMSArMjEwLDIxIEBAIHZvaWQgT2JqY0ZhbGxiYWNrT2JqZWN0SW1wOjpmaW5pc2hDcmVh
dGkKICAgICBBU1NFUlQoaW5oZXJpdHMoJnNfaW5mbykpOwogfQogCi1ib29sIE9iamNGYWxsYmFj
a09iamVjdEltcDo6Z2V0T3duUHJvcGVydHlTbG90KEpTQ2VsbCosIEV4ZWNTdGF0ZSosIGNvbnN0
IElkZW50aWZpZXImLCBQcm9wZXJ0eVNsb3QmIHNsb3QpCitib29sIE9iamNGYWxsYmFja09iamVj
dEltcDo6Z2V0T3duUHJvcGVydHlTbG90KEpTQ2VsbCosIEV4ZWNTdGF0ZSosIFByb3BlcnR5TmFt
ZSwgUHJvcGVydHlTbG90JiBzbG90KQogewogICAgIC8vIGtlZXAgdGhlIHByb3RvdHlwZSBmcm9t
IGdldHRpbmcgY2FsbGVkIGluc3RlYWQgb2YganVzdCByZXR1cm5pbmcgZmFsc2UKICAgICBzbG90
LnNldFVuZGVmaW5lZCgpOwogICAgIHJldHVybiB0cnVlOwogfQogCi1ib29sIE9iamNGYWxsYmFj
a09iamVjdEltcDo6Z2V0T3duUHJvcGVydHlEZXNjcmlwdG9yKEpTT2JqZWN0KiwgRXhlY1N0YXRl
KiwgY29uc3QgSWRlbnRpZmllciYsIFByb3BlcnR5RGVzY3JpcHRvciYgZGVzY3JpcHRvcikKK2Jv
b2wgT2JqY0ZhbGxiYWNrT2JqZWN0SW1wOjpnZXRPd25Qcm9wZXJ0eURlc2NyaXB0b3IoSlNPYmpl
Y3QqLCBFeGVjU3RhdGUqLCBQcm9wZXJ0eU5hbWUsIFByb3BlcnR5RGVzY3JpcHRvciYgZGVzY3Jp
cHRvcikKIHsKICAgICAvLyBrZWVwIHRoZSBwcm90b3R5cGUgZnJvbSBnZXR0aW5nIGNhbGxlZCBp
bnN0ZWFkIG9mIGp1c3QgcmV0dXJuaW5nIGZhbHNlCiAgICAgZGVzY3JpcHRvci5zZXRVbmRlZmlu
ZWQoKTsKICAgICByZXR1cm4gdHJ1ZTsKIH0KIAotdm9pZCBPYmpjRmFsbGJhY2tPYmplY3RJbXA6
OnB1dChKU0NlbGwqLCBFeGVjU3RhdGUqLCBjb25zdCBJZGVudGlmaWVyJiwgSlNWYWx1ZSwgUHV0
UHJvcGVydHlTbG90JikKK3ZvaWQgT2JqY0ZhbGxiYWNrT2JqZWN0SW1wOjpwdXQoSlNDZWxsKiwg
RXhlY1N0YXRlKiwgUHJvcGVydHlOYW1lLCBKU1ZhbHVlLCBQdXRQcm9wZXJ0eVNsb3QmKQogewog
fQogCkBAIC0yNDksNyArMjQ5LDcgQEAgc3RhdGljIEVuY29kZWRKU1ZhbHVlIEpTQ19IT1NUX0NB
TEwgY2FsbAogICAgIGlmIChbdGFyZ2V0T2JqZWN0IHJlc3BvbmRzVG9TZWxlY3RvcjpAc2VsZWN0
b3IoaW52b2tlVW5kZWZpbmVkTWV0aG9kRnJvbVdlYlNjcmlwdDp3aXRoQXJndW1lbnRzOildKXsK
ICAgICAgICAgT2JqY0NsYXNzKiBvYmpjQ2xhc3MgPSBzdGF0aWNfY2FzdDxPYmpjQ2xhc3MqPihv
YmpjSW5zdGFuY2UtPmdldENsYXNzKCkpOwogICAgICAgICBPd25QdHI8T2JqY01ldGhvZD4gZmFs
bGJhY2tNZXRob2QoYWRvcHRQdHIobmV3IE9iamNNZXRob2Qob2JqY0NsYXNzLT5pc2EoKSwgQHNl
bGVjdG9yKGludm9rZVVuZGVmaW5lZE1ldGhvZEZyb21XZWJTY3JpcHQ6d2l0aEFyZ3VtZW50czop
KSkpOwotICAgICAgICBjb25zdCBJZGVudGlmaWVyJiBuYW1lSWRlbnRpZmllciA9IHN0YXRpY19j
YXN0PE9iamNGYWxsYmFja09iamVjdEltcCo+KGV4ZWMtPmNhbGxlZSgpKS0+cHJvcGVydHlOYW1l
KCk7CisgICAgICAgIGNvbnN0IFVTdHJpbmcmIG5hbWVJZGVudGlmaWVyID0gc3RhdGljX2Nhc3Q8
T2JqY0ZhbGxiYWNrT2JqZWN0SW1wKj4oZXhlYy0+Y2FsbGVlKCkpLT5wcm9wZXJ0eU5hbWUoKTsK
ICAgICAgICAgUmV0YWluUHRyPENGU3RyaW5nUmVmPiBuYW1lKEFkb3B0Q0YsIENGU3RyaW5nQ3Jl
YXRlV2l0aENoYXJhY3RlcnMoMCwgbmFtZUlkZW50aWZpZXIuY2hhcmFjdGVycygpLCBuYW1lSWRl
bnRpZmllci5sZW5ndGgoKSkpOwogICAgICAgICBmYWxsYmFja01ldGhvZC0+c2V0SmF2YVNjcmlw
dE5hbWUobmFtZS5nZXQoKSk7CiAgICAgICAgIHJlc3VsdCA9IG9iamNJbnN0YW5jZS0+aW52b2tl
T2JqY01ldGhvZChleGVjLCBmYWxsYmFja01ldGhvZC5nZXQoKSk7CkBAIC0yNzAsNyArMjcwLDcg
QEAgQ2FsbFR5cGUgT2JqY0ZhbGxiYWNrT2JqZWN0SW1wOjpnZXRDYWxsRAogICAgIHJldHVybiBD
YWxsVHlwZUhvc3Q7CiB9CiAKLWJvb2wgT2JqY0ZhbGxiYWNrT2JqZWN0SW1wOjpkZWxldGVQcm9w
ZXJ0eShKU0NlbGwqLCBFeGVjU3RhdGUqLCBjb25zdCBJZGVudGlmaWVyJikKK2Jvb2wgT2JqY0Zh
bGxiYWNrT2JqZWN0SW1wOjpkZWxldGVQcm9wZXJ0eShKU0NlbGwqLCBFeGVjU3RhdGUqLCBQcm9w
ZXJ0eU5hbWUpCiB7CiAgICAgcmV0dXJuIGZhbHNlOwogfQpAQCAtMjc4LDcgKzI3OCw3IEBAIGJv
b2wgT2JqY0ZhbGxiYWNrT2JqZWN0SW1wOjpkZWxldGVQcm9wZXIKIEpTVmFsdWUgT2JqY0ZhbGxi
YWNrT2JqZWN0SW1wOjpkZWZhdWx0VmFsdWUoY29uc3QgSlNPYmplY3QqIG9iamVjdCwgRXhlY1N0
YXRlKiBleGVjLCBQcmVmZXJyZWRQcmltaXRpdmVUeXBlKQogewogICAgIGNvbnN0IE9iamNGYWxs
YmFja09iamVjdEltcCogdGhpc09iamVjdCA9IGpzQ2FzdDxjb25zdCBPYmpjRmFsbGJhY2tPYmpl
Y3RJbXAqPihvYmplY3QpOwotICAgIHJldHVybiB0aGlzT2JqZWN0LT5faW5zdGFuY2UtPmdldFZh
bHVlT2ZVbmRlZmluZWRGaWVsZChleGVjLCB0aGlzT2JqZWN0LT5faXRlbSk7CisgICAgcmV0dXJu
IHRoaXNPYmplY3QtPl9pbnN0YW5jZS0+Z2V0VmFsdWVPZlVuZGVmaW5lZEZpZWxkKGV4ZWMsIElk
ZW50aWZpZXIoZXhlYywgdGhpc09iamVjdC0+X2l0ZW0pKTsKIH0KIAogYm9vbCBPYmpjRmFsbGJh
Y2tPYmplY3RJbXA6OnRvQm9vbGVhbihFeGVjU3RhdGUgKikgY29uc3QKSW5kZXg6IFNvdXJjZS9X
ZWJDb3JlL2JyaWRnZS9xdC9xdF9jbGFzcy5jcHAKPT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL1dlYkNv
cmUvYnJpZGdlL3F0L3F0X2NsYXNzLmNwcAkocmV2aXNpb24gMTE2NjY3KQorKysgU291cmNlL1dl
YkNvcmUvYnJpZGdlL3F0L3F0X2NsYXNzLmNwcAkod29ya2luZyBjb3B5KQpAQCAtNjYsNyArNjYs
NyBAQCBjb25zdCBjaGFyKiBRdENsYXNzOjpuYW1lKCkgY29uc3QKIC8vIGFuZCBub3QgZ2V0IHdy
YXBwZWQgaW4gUnVudGltZU1ldGhvZCkuIEFsc28sIHVzZSB0aGlzIGZvciBtZXRob2RzLAogLy8g
c28gd2UgY2FuIGNhY2hlIHRoZSBvYmplY3QgYW5kIHJldHVybiB0aGUgc2FtZSBvYmplY3QgZm9y
IHRoZSBzYW1lCiAvLyBpZGVudGlmaWVyLgotSlNWYWx1ZSBRdENsYXNzOjpmYWxsYmFja09iamVj
dChFeGVjU3RhdGUqIGV4ZWMsIEluc3RhbmNlKiBpbnN0LCBjb25zdCBJZGVudGlmaWVyJiBpZGVu
dGlmaWVyKQorSlNWYWx1ZSBRdENsYXNzOjpmYWxsYmFja09iamVjdChFeGVjU3RhdGUqIGV4ZWMs
IEluc3RhbmNlKiBpbnN0LCBQcm9wZXJ0eU5hbWUgaWRlbnRpZmllcikKIHsKICAgICBRdEluc3Rh
bmNlKiBxdGluc3QgPSBzdGF0aWNfY2FzdDxRdEluc3RhbmNlKj4oaW5zdCk7CiAKQEAgLTg2LDcg
Kzg2LDcgQEAgSlNWYWx1ZSBRdENsYXNzOjpmYWxsYmFja09iamVjdChFeGVjU3RhdAogICAgIGlm
IChub3JtYWwuY29udGFpbnMoJygnKSAmJiAoaW5kZXggPSBtX21ldGFPYmplY3QtPmluZGV4T2ZN
ZXRob2Qobm9ybWFsKSkgIT0gLTEpIHsKICAgICAgICAgUU1ldGFNZXRob2QgbSA9IG1fbWV0YU9i
amVjdC0+bWV0aG9kKGluZGV4KTsKICAgICAgICAgaWYgKG0uYWNjZXNzKCkgIT0gUU1ldGFNZXRo
b2Q6OlByaXZhdGUpIHsKLSAgICAgICAgICAgIFF0UnVudGltZU1ldGFNZXRob2QqIHZhbCA9IFF0
UnVudGltZU1ldGFNZXRob2Q6OmNyZWF0ZShleGVjLCBpZGVudGlmaWVyLCBzdGF0aWNfY2FzdDxR
dEluc3RhbmNlKj4oaW5zdCksIGluZGV4LCBub3JtYWwsIGZhbHNlKTsKKyAgICAgICAgICAgIFF0
UnVudGltZU1ldGFNZXRob2QqIHZhbCA9IFF0UnVudGltZU1ldGFNZXRob2Q6OmNyZWF0ZShleGVj
LCB1c3RyaW5nLCBzdGF0aWNfY2FzdDxRdEluc3RhbmNlKj4oaW5zdCksIGluZGV4LCBub3JtYWws
IGZhbHNlKTsKICAgICAgICAgICAgIHF0aW5zdC0+bV9tZXRob2RzLmluc2VydChuYW1lLCBXcml0
ZUJhcnJpZXI8SlNPYmplY3Q+KGV4ZWMtPmdsb2JhbERhdGEoKSwgcXRpbnN0LT5jcmVhdGVSdW50
aW1lT2JqZWN0KGV4ZWMpLCB2YWwpKTsKICAgICAgICAgICAgIHJldHVybiB2YWw7CiAgICAgICAg
IH0KQEAgLTEwOSw3ICsxMDksNyBAQCBKU1ZhbHVlIFF0Q2xhc3M6OmZhbGxiYWNrT2JqZWN0KEV4
ZWNTdGF0CiAjZWxzZQogICAgICAgICBpZiAobm9ybWFsID09IG0ubmFtZSgpKSB7CiAjZW5kaWYK
LSAgICAgICAgICAgIFF0UnVudGltZU1ldGFNZXRob2QqIHZhbCA9IFF0UnVudGltZU1ldGFNZXRo
b2Q6OmNyZWF0ZShleGVjLCBpZGVudGlmaWVyLCBzdGF0aWNfY2FzdDxRdEluc3RhbmNlKj4oaW5z
dCksIGluZGV4LCBub3JtYWwsIGZhbHNlKTsKKyAgICAgICAgICAgIFF0UnVudGltZU1ldGFNZXRo
b2QqIHZhbCA9IFF0UnVudGltZU1ldGFNZXRob2Q6OmNyZWF0ZShleGVjLCB1c3RyaW5nLCBzdGF0
aWNfY2FzdDxRdEluc3RhbmNlKj4oaW5zdCksIGluZGV4LCBub3JtYWwsIGZhbHNlKTsKICAgICAg
ICAgICAgIHF0aW5zdC0+bV9tZXRob2RzLmluc2VydChuYW1lLCBXcml0ZUJhcnJpZXI8SlNPYmpl
Y3Q+KGV4ZWMtPmdsb2JhbERhdGEoKSwgcXRpbnN0LT5jcmVhdGVSdW50aW1lT2JqZWN0KGV4ZWMp
LCB2YWwpKTsKICAgICAgICAgICAgIHJldHVybiB2YWw7CiAgICAgICAgIH0KQEAgLTExOSw3ICsx
MTksNyBAQCBKU1ZhbHVlIFF0Q2xhc3M6OmZhbGxiYWNrT2JqZWN0KEV4ZWNTdGF0CiB9CiAKIC8v
IFRoaXMgZnVuY3Rpb25hbGl0eSBpcyBoYW5kbGVkIGJ5IHRoZSBmYWxsYmFjayBjYXNlIGFib3Zl
Li4uCi1NZXRob2RMaXN0IFF0Q2xhc3M6Om1ldGhvZHNOYW1lZChjb25zdCBJZGVudGlmaWVyJiwg
SW5zdGFuY2UqKSBjb25zdAorTWV0aG9kTGlzdCBRdENsYXNzOjptZXRob2RzTmFtZWQoUHJvcGVy
dHlOYW1lLCBJbnN0YW5jZSopIGNvbnN0CiB7CiAgICAgcmV0dXJuIE1ldGhvZExpc3QoKTsKIH0K
QEAgLTEyNyw3ICsxMjcsNyBAQCBNZXRob2RMaXN0IFF0Q2xhc3M6Om1ldGhvZHNOYW1lZChjb25z
dCBJCiAvLyAjIyMgd2UgbWF5IGVuZCB1cCB3aXRoIGEgZGlmZmVyZW50IHNlYXJjaCBvcmRlciB0
aGFuIFF0U2NyaXB0IGJ5IG5vdAogLy8gZm9sZGluZyB0aGlzIGNvZGUgaW50byB0aGUgZmFsbGJh
Y2tNZXRob2QgYWJvdmUsIGJ1dCBGaWVsZHMgcHJvcGFnYXRlIG91dAogLy8gb2YgdGhlIGJpbmRp
bmcgY29kZQotRmllbGQqIFF0Q2xhc3M6OmZpZWxkTmFtZWQoY29uc3QgSWRlbnRpZmllciYgaWRl
bnRpZmllciwgSW5zdGFuY2UqIGluc3RhbmNlKSBjb25zdAorRmllbGQqIFF0Q2xhc3M6OmZpZWxk
TmFtZWQoUHJvcGVydHlOYW1lIGlkZW50aWZpZXIsIEluc3RhbmNlKiBpbnN0YW5jZSkgY29uc3QK
IHsKICAgICAvLyBDaGVjayBzdGF0aWMgcHJvcGVydGllcyBmaXJzdAogICAgIFF0SW5zdGFuY2Uq
IHF0aW5zdCA9IHN0YXRpY19jYXN0PFF0SW5zdGFuY2UqPihpbnN0YW5jZSk7CkluZGV4OiBTb3Vy
Y2UvV2ViQ29yZS9icmlkZ2UvcXQvcXRfY2xhc3MuaAo9PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2Vi
Q29yZS9icmlkZ2UvcXQvcXRfY2xhc3MuaAkocmV2aXNpb24gMTE2NjY3KQorKysgU291cmNlL1dl
YkNvcmUvYnJpZGdlL3F0L3F0X2NsYXNzLmgJKHdvcmtpbmcgY29weSkKQEAgLTQxLDEwICs0MSwx
MCBAQCBwdWJsaWM6CiAgICAgdmlydHVhbCB+UXRDbGFzcygpOwogCiAgICAgdmlydHVhbCBjb25z
dCBjaGFyKiBuYW1lKCkgY29uc3Q7Ci0gICAgdmlydHVhbCBNZXRob2RMaXN0IG1ldGhvZHNOYW1l
ZChjb25zdCBJZGVudGlmaWVyJiwgSW5zdGFuY2UqKSBjb25zdDsKLSAgICB2aXJ0dWFsIEZpZWxk
KiBmaWVsZE5hbWVkKGNvbnN0IElkZW50aWZpZXImLCBJbnN0YW5jZSopIGNvbnN0OworICAgIHZp
cnR1YWwgTWV0aG9kTGlzdCBtZXRob2RzTmFtZWQoUHJvcGVydHlOYW1lLCBJbnN0YW5jZSopIGNv
bnN0OworICAgIHZpcnR1YWwgRmllbGQqIGZpZWxkTmFtZWQoUHJvcGVydHlOYW1lLCBJbnN0YW5j
ZSopIGNvbnN0OwogCi0gICAgdmlydHVhbCBKU1ZhbHVlIGZhbGxiYWNrT2JqZWN0KEV4ZWNTdGF0
ZSosIEluc3RhbmNlKiwgY29uc3QgSWRlbnRpZmllciYpOworICAgIHZpcnR1YWwgSlNWYWx1ZSBm
YWxsYmFja09iamVjdChFeGVjU3RhdGUqLCBJbnN0YW5jZSosIFByb3BlcnR5TmFtZSk7CiAKIHBy
aXZhdGU6CiAgICAgUXRDbGFzcyhjb25zdCBRdENsYXNzJik7IC8vIHByb2hpYml0IGNvcHlpbmcK
SW5kZXg6IFNvdXJjZS9XZWJDb3JlL2JyaWRnZS9xdC9xdF9pbnN0YW5jZS5jcHAKPT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PQotLS0gU291cmNlL1dlYkNvcmUvYnJpZGdlL3F0L3F0X2luc3RhbmNlLmNwcAkocmV2aXNpb24g
MTE2NjY3KQorKysgU291cmNlL1dlYkNvcmUvYnJpZGdlL3F0L3F0X2luc3RhbmNlLmNwcAkod29y
a2luZyBjb3B5KQpAQCAtMTQ4LDEyICsxNDgsMTIgQEAgUGFzc1JlZlB0cjxRdEluc3RhbmNlPiBR
dEluc3RhbmNlOjpnZXRRdAogICAgIHJldHVybiByZXQucmVsZWFzZSgpOwogfQogCi1ib29sIFF0
SW5zdGFuY2U6OmdldE93blByb3BlcnR5U2xvdChKU09iamVjdCogb2JqZWN0LCBFeGVjU3RhdGUq
IGV4ZWMsIGNvbnN0IElkZW50aWZpZXImIHByb3BlcnR5TmFtZSwgUHJvcGVydHlTbG90JiBzbG90
KQorYm9vbCBRdEluc3RhbmNlOjpnZXRPd25Qcm9wZXJ0eVNsb3QoSlNPYmplY3QqIG9iamVjdCwg
RXhlY1N0YXRlKiBleGVjLCBQcm9wZXJ0eU5hbWUgcHJvcGVydHlOYW1lLCBQcm9wZXJ0eVNsb3Qm
IHNsb3QpCiB7CiAgICAgcmV0dXJuIEpTT2JqZWN0OjpnZXRPd25Qcm9wZXJ0eVNsb3Qob2JqZWN0
LCBleGVjLCBwcm9wZXJ0eU5hbWUsIHNsb3QpOwogfQogCi12b2lkIFF0SW5zdGFuY2U6OnB1dChK
U09iamVjdCogb2JqZWN0LCBFeGVjU3RhdGUqIGV4ZWMsIGNvbnN0IElkZW50aWZpZXImIHByb3Bl
cnR5TmFtZSwgSlNWYWx1ZSB2YWx1ZSwgUHV0UHJvcGVydHlTbG90JiBzbG90KQordm9pZCBRdElu
c3RhbmNlOjpwdXQoSlNPYmplY3QqIG9iamVjdCwgRXhlY1N0YXRlKiBleGVjLCBQcm9wZXJ0eU5h
bWUgcHJvcGVydHlOYW1lLCBKU1ZhbHVlIHZhbHVlLCBQdXRQcm9wZXJ0eVNsb3QmIHNsb3QpCiB7
CiAgICAgSlNPYmplY3Q6OnB1dChvYmplY3QsIGV4ZWMsIHByb3BlcnR5TmFtZSwgdmFsdWUsIHNs
b3QpOwogfQpAQCAtMjQ4LDcgKzI0OCw3IEBAIHZvaWQgUXRJbnN0YW5jZTo6Z2V0UHJvcGVydHlO
YW1lcyhFeGVjU3QKICAgICB9CiB9CiAKLUpTVmFsdWUgUXRJbnN0YW5jZTo6Z2V0TWV0aG9kKEV4
ZWNTdGF0ZSogZXhlYywgY29uc3QgSWRlbnRpZmllciYgcHJvcGVydHlOYW1lKQorSlNWYWx1ZSBR
dEluc3RhbmNlOjpnZXRNZXRob2QoRXhlY1N0YXRlKiBleGVjLCBQcm9wZXJ0eU5hbWUgcHJvcGVy
dHlOYW1lKQogewogICAgIGlmICghZ2V0Q2xhc3MoKSkKICAgICAgICAgcmV0dXJuIGpzTnVsbCgp
OwpJbmRleDogU291cmNlL1dlYkNvcmUvYnJpZGdlL3F0L3F0X2luc3RhbmNlLmgKPT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PQotLS0gU291cmNlL1dlYkNvcmUvYnJpZGdlL3F0L3F0X2luc3RhbmNlLmgJKHJldmlzaW9uIDEx
NjY2NykKKysrIFNvdXJjZS9XZWJDb3JlL2JyaWRnZS9xdC9xdF9pbnN0YW5jZS5oCSh3b3JraW5n
IGNvcHkpCkBAIC01MSw3ICs1MSw3IEBAIHB1YmxpYzoKIAogICAgIHZvaWQgdmlzaXRBZ2dyZWdh
dGUoU2xvdFZpc2l0b3ImKTsKIAotICAgIHZpcnR1YWwgSlNWYWx1ZSBnZXRNZXRob2QoRXhlY1N0
YXRlKiBleGVjLCBjb25zdCBJZGVudGlmaWVyJiBwcm9wZXJ0eU5hbWUpOworICAgIHZpcnR1YWwg
SlNWYWx1ZSBnZXRNZXRob2QoRXhlY1N0YXRlKiBleGVjLCBQcm9wZXJ0eU5hbWUgcHJvcGVydHlO
YW1lKTsKICAgICB2aXJ0dWFsIEpTVmFsdWUgaW52b2tlTWV0aG9kKEV4ZWNTdGF0ZSosIFJ1bnRp
bWVNZXRob2QqKTsKIAogICAgIHZpcnR1YWwgdm9pZCBnZXRQcm9wZXJ0eU5hbWVzKEV4ZWNTdGF0
ZSosIFByb3BlcnR5TmFtZUFycmF5Jik7CkBAIC02NSw4ICs2NSw4IEBAIHB1YmxpYzoKIAogICAg
IHN0YXRpYyBQYXNzUmVmUHRyPFF0SW5zdGFuY2U+IGdldFF0SW5zdGFuY2UoUU9iamVjdCosIFBh
c3NSZWZQdHI8Um9vdE9iamVjdD4sIFFTY3JpcHRFbmdpbmU6OlZhbHVlT3duZXJzaGlwIG93bmVy
c2hpcCk7CiAKLSAgICB2aXJ0dWFsIGJvb2wgZ2V0T3duUHJvcGVydHlTbG90KEpTT2JqZWN0Kiwg
RXhlY1N0YXRlKiwgY29uc3QgSWRlbnRpZmllciYsIFByb3BlcnR5U2xvdCYpOwotICAgIHZpcnR1
YWwgdm9pZCBwdXQoSlNPYmplY3QqLCBFeGVjU3RhdGUqLCBjb25zdCBJZGVudGlmaWVyJiwgSlNW
YWx1ZSwgUHV0UHJvcGVydHlTbG90Jik7CisgICAgdmlydHVhbCBib29sIGdldE93blByb3BlcnR5
U2xvdChKU09iamVjdCosIEV4ZWNTdGF0ZSosIFByb3BlcnR5TmFtZSwgUHJvcGVydHlTbG90Jik7
CisgICAgdmlydHVhbCB2b2lkIHB1dChKU09iamVjdCosIEV4ZWNTdGF0ZSosIFByb3BlcnR5TmFt
ZSwgSlNWYWx1ZSwgUHV0UHJvcGVydHlTbG90Jik7CiAKICAgICB2b2lkIHJlbW92ZUNhY2hlZE1l
dGhvZChKU09iamVjdCopOwogCkluZGV4OiBTb3VyY2UvV2ViQ29yZS9icmlkZ2UvcXQvcXRfcGl4
bWFwcnVudGltZS5oCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9XZWJDb3JlL2JyaWRnZS9xdC9xdF9w
aXhtYXBydW50aW1lLmgJKHJldmlzaW9uIDExNjY2NykKKysrIFNvdXJjZS9XZWJDb3JlL2JyaWRn
ZS9xdC9xdF9waXhtYXBydW50aW1lLmgJKHdvcmtpbmcgY29weSkKQEAgLTMyLDcgKzMyLDcgQEAg
Y2xhc3MgUXRQaXhtYXBJbnN0YW5jZSA6IHB1YmxpYyBJbnN0YW5jZQogcHVibGljOgogICAgIFF0
UGl4bWFwSW5zdGFuY2UoUGFzc1JlZlB0cjxSb290T2JqZWN0PiByb290T2JqLCBjb25zdCBRVmFy
aWFudCYgbmV3RGF0YSk7CiAgICAgdmlydHVhbCBDbGFzcyogZ2V0Q2xhc3MoKSBjb25zdDsKLSAg
ICB2aXJ0dWFsIEpTVmFsdWUgZ2V0TWV0aG9kKEV4ZWNTdGF0ZSogZXhlYywgY29uc3QgSWRlbnRp
ZmllciYgcHJvcGVydHlOYW1lKTsKKyAgICB2aXJ0dWFsIEpTVmFsdWUgZ2V0TWV0aG9kKEV4ZWNT
dGF0ZSogZXhlYywgUHJvcGVydHlOYW1lKTsKICAgICB2aXJ0dWFsIEpTVmFsdWUgaW52b2tlTWV0
aG9kKEV4ZWNTdGF0ZSosIFJ1bnRpbWVNZXRob2QqKTsKICAgICB2aXJ0dWFsIHZvaWQgZ2V0UHJv
cGVydHlOYW1lcyhFeGVjU3RhdGUqLCBQcm9wZXJ0eU5hbWVBcnJheSYpOwogCkluZGV4OiBTb3Vy
Y2UvV2ViQ29yZS9icmlkZ2UvcXQvcXRfcnVudGltZS5jcHAKPT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNl
L1dlYkNvcmUvYnJpZGdlL3F0L3F0X3J1bnRpbWUuY3BwCShyZXZpc2lvbiAxMTY2NjcpCisrKyBT
b3VyY2UvV2ViQ29yZS9icmlkZ2UvcXQvcXRfcnVudGltZS5jcHAJKHdvcmtpbmcgY29weSkKQEAg
LTk2OCwxMyArOTY4LDEzIEBAIEpTVmFsdWUgY29udmVydFFWYXJpYW50VG9WYWx1ZShFeGVjU3Rh
dGUKIAogY29uc3QgQ2xhc3NJbmZvIFF0UnVudGltZU1ldGhvZDo6c19pbmZvID0geyAiUXRSdW50
aW1lTWV0aG9kIiwgJkludGVybmFsRnVuY3Rpb246OnNfaW5mbywgMCwgMCwgQ1JFQVRFX01FVEhP
RF9UQUJMRShRdFJ1bnRpbWVNZXRob2QpIH07CiAKLVF0UnVudGltZU1ldGhvZDo6UXRSdW50aW1l
TWV0aG9kKFF0UnVudGltZU1ldGhvZERhdGEqIGRkLCBFeGVjU3RhdGUqIGV4ZWMsIFN0cnVjdHVy
ZSogc3RydWN0dXJlLCBjb25zdCBJZGVudGlmaWVyJiBpZGVudGlmaWVyKQorUXRSdW50aW1lTWV0
aG9kOjpRdFJ1bnRpbWVNZXRob2QoUXRSdW50aW1lTWV0aG9kRGF0YSogZGQsIEV4ZWNTdGF0ZSog
ZXhlYywgU3RydWN0dXJlKiBzdHJ1Y3R1cmUsIGNvbnN0IFVTdHJpbmcmIGlkZW50aWZpZXIpCiAg
ICAgOiBJbnRlcm5hbEZ1bmN0aW9uKGV4ZWMtPmxleGljYWxHbG9iYWxPYmplY3QoKSwgc3RydWN0
dXJlKQogICAgICwgZF9wdHIoZGQpCiB7CiB9CiAKLXZvaWQgUXRSdW50aW1lTWV0aG9kOjpmaW5p
c2hDcmVhdGlvbihFeGVjU3RhdGUqIGV4ZWMsIGNvbnN0IElkZW50aWZpZXImIGlkZW50aWZpZXIs
IFBhc3NSZWZQdHI8UXRJbnN0YW5jZT4gaW5zdGFuY2UpCit2b2lkIFF0UnVudGltZU1ldGhvZDo6
ZmluaXNoQ3JlYXRpb24oRXhlY1N0YXRlKiBleGVjLCBjb25zdCBVU3RyaW5nJiBpZGVudGlmaWVy
LCBQYXNzUmVmUHRyPFF0SW5zdGFuY2U+IGluc3RhbmNlKQogewogICAgIEJhc2U6OmZpbmlzaENy
ZWF0aW9uKGV4ZWMtPmdsb2JhbERhdGEoKSwgaWRlbnRpZmllcik7CiAgICAgUVdfRChRdFJ1bnRp
bWVNZXRob2QpOwpAQCAtMTM4NSwxMiArMTM4NSwxMiBAQCBzdGF0aWMgaW50IGZpbmRTaWduYWxJ
bmRleChjb25zdCBRTWV0YU9iCiAKIGNvbnN0IENsYXNzSW5mbyBRdFJ1bnRpbWVNZXRhTWV0aG9k
OjpzX2luZm8gPSB7ICJRdFJ1bnRpbWVNZXRob2QiLCAmQmFzZTo6c19pbmZvLCAwLCAwLCBDUkVB
VEVfTUVUSE9EX1RBQkxFKFF0UnVudGltZU1ldGFNZXRob2QpIH07CiAKLVF0UnVudGltZU1ldGFN
ZXRob2Q6OlF0UnVudGltZU1ldGFNZXRob2QoRXhlY1N0YXRlKiBleGVjLCBTdHJ1Y3R1cmUqIHN0
cnVjdHVyZSwgY29uc3QgSWRlbnRpZmllciYgaWRlbnRpZmllcikKK1F0UnVudGltZU1ldGFNZXRo
b2Q6OlF0UnVudGltZU1ldGFNZXRob2QoRXhlY1N0YXRlKiBleGVjLCBTdHJ1Y3R1cmUqIHN0cnVj
dHVyZSwgY29uc3QgVVN0cmluZyYgaWRlbnRpZmllcikKICAgICA6IFF0UnVudGltZU1ldGhvZCAo
bmV3IFF0UnVudGltZU1ldGFNZXRob2REYXRhKCksIGV4ZWMsIHN0cnVjdHVyZSwgaWRlbnRpZmll
cikKIHsKIH0KIAotdm9pZCBRdFJ1bnRpbWVNZXRhTWV0aG9kOjpmaW5pc2hDcmVhdGlvbihFeGVj
U3RhdGUqIGV4ZWMsIGNvbnN0IElkZW50aWZpZXImIGlkZW50aWZpZXIsIFBhc3NSZWZQdHI8UXRJ
bnN0YW5jZT4gaW5zdGFuY2UsIGludCBpbmRleCwgY29uc3QgUUJ5dGVBcnJheSYgc2lnbmF0dXJl
LCBib29sIGFsbG93UHJpdmF0ZSkKK3ZvaWQgUXRSdW50aW1lTWV0YU1ldGhvZDo6ZmluaXNoQ3Jl
YXRpb24oRXhlY1N0YXRlKiBleGVjLCBjb25zdCBVU3RyaW5nJiBpZGVudGlmaWVyLCBQYXNzUmVm
UHRyPFF0SW5zdGFuY2U+IGluc3RhbmNlLCBpbnQgaW5kZXgsIGNvbnN0IFFCeXRlQXJyYXkmIHNp
Z25hdHVyZSwgYm9vbCBhbGxvd1ByaXZhdGUpCiB7CiAgICAgQmFzZTo6ZmluaXNoQ3JlYXRpb24o
ZXhlYywgaWRlbnRpZmllciwgaW5zdGFuY2UpOwogICAgIFFXX0QoUXRSdW50aW1lTWV0YU1ldGhv
ZCk7CkBAIC0xNDUyLDEzICsxNDUyLDEzIEBAIENhbGxUeXBlIFF0UnVudGltZU1ldGFNZXRob2Q6
OmdldENhbGxEYXQKICAgICByZXR1cm4gQ2FsbFR5cGVIb3N0OwogfQogCi1ib29sIFF0UnVudGlt
ZU1ldGFNZXRob2Q6OmdldE93blByb3BlcnR5U2xvdChKU0NlbGwqIGNlbGwsIEV4ZWNTdGF0ZSog
ZXhlYywgY29uc3QgSWRlbnRpZmllciYgcHJvcGVydHlOYW1lLCBQcm9wZXJ0eVNsb3QmIHNsb3Qp
Citib29sIFF0UnVudGltZU1ldGFNZXRob2Q6OmdldE93blByb3BlcnR5U2xvdChKU0NlbGwqIGNl
bGwsIEV4ZWNTdGF0ZSogZXhlYywgUHJvcGVydHlOYW1lIHByb3BlcnR5TmFtZSwgUHJvcGVydHlT
bG90JiBzbG90KQogewogICAgIFF0UnVudGltZU1ldGFNZXRob2QqIHRoaXNPYmplY3QgPSBqc0Nh
c3Q8UXRSdW50aW1lTWV0YU1ldGhvZCo+KGNlbGwpOwotICAgIGlmIChwcm9wZXJ0eU5hbWUgPT0g
ImNvbm5lY3QiKSB7CisgICAgaWYgKHByb3BlcnR5TmFtZSA9PSBJZGVudGlmaWVyKGV4ZWMsICJj
b25uZWN0IikpIHsKICAgICAgICAgc2xvdC5zZXRDdXN0b20odGhpc09iamVjdCwgdGhpc09iamVj
dC0+Y29ubmVjdEdldHRlcik7CiAgICAgICAgIHJldHVybiB0cnVlOwotICAgIH0gZWxzZSBpZiAo
cHJvcGVydHlOYW1lID09ICJkaXNjb25uZWN0IikgeworICAgIH0gZWxzZSBpZiAocHJvcGVydHlO
YW1lID09IElkZW50aWZpZXIoZXhlYywgImRpc2Nvbm5lY3QiKSkgewogICAgICAgICBzbG90LnNl
dEN1c3RvbSh0aGlzT2JqZWN0LCB0aGlzT2JqZWN0LT5kaXNjb25uZWN0R2V0dGVyKTsKICAgICAg
ICAgcmV0dXJuIHRydWU7CiAgICAgfSBlbHNlIGlmIChwcm9wZXJ0eU5hbWUgPT0gZXhlYy0+cHJv
cGVydHlOYW1lcygpLmxlbmd0aCkgewpAQCAtMTQ2OSwxNyArMTQ2OSwxNyBAQCBib29sIFF0UnVu
dGltZU1ldGFNZXRob2Q6OmdldE93blByb3BlcnR5CiAgICAgcmV0dXJuIFF0UnVudGltZU1ldGhv
ZDo6Z2V0T3duUHJvcGVydHlTbG90KHRoaXNPYmplY3QsIGV4ZWMsIHByb3BlcnR5TmFtZSwgc2xv
dCk7CiB9CiAKLWJvb2wgUXRSdW50aW1lTWV0YU1ldGhvZDo6Z2V0T3duUHJvcGVydHlEZXNjcmlw
dG9yKEpTT2JqZWN0KiBvYmplY3QsIEV4ZWNTdGF0ZSogZXhlYywgY29uc3QgSWRlbnRpZmllciYg
cHJvcGVydHlOYW1lLCBQcm9wZXJ0eURlc2NyaXB0b3ImIGRlc2NyaXB0b3IpCitib29sIFF0UnVu
dGltZU1ldGFNZXRob2Q6OmdldE93blByb3BlcnR5RGVzY3JpcHRvcihKU09iamVjdCogb2JqZWN0
LCBFeGVjU3RhdGUqIGV4ZWMsIFByb3BlcnR5TmFtZSBwcm9wZXJ0eU5hbWUsIFByb3BlcnR5RGVz
Y3JpcHRvciYgZGVzY3JpcHRvcikKIHsKICAgICBRdFJ1bnRpbWVNZXRhTWV0aG9kKiB0aGlzT2Jq
ZWN0ID0ganNDYXN0PFF0UnVudGltZU1ldGFNZXRob2QqPihvYmplY3QpOwotICAgIGlmIChwcm9w
ZXJ0eU5hbWUgPT0gImNvbm5lY3QiKSB7CisgICAgaWYgKHByb3BlcnR5TmFtZSA9PSBJZGVudGlm
aWVyKGV4ZWMsICJjb25uZWN0IikpIHsKICAgICAgICAgUHJvcGVydHlTbG90IHNsb3Q7CiAgICAg
ICAgIHNsb3Quc2V0Q3VzdG9tKHRoaXNPYmplY3QsIGNvbm5lY3RHZXR0ZXIpOwogICAgICAgICBk
ZXNjcmlwdG9yLnNldERlc2NyaXB0b3Ioc2xvdC5nZXRWYWx1ZShleGVjLCBwcm9wZXJ0eU5hbWUp
LCBEb250RGVsZXRlIHwgUmVhZE9ubHkgfCBEb250RW51bSk7CiAgICAgICAgIHJldHVybiB0cnVl
OwogICAgIH0KIAotICAgIGlmIChwcm9wZXJ0eU5hbWUgPT0gImRpc2Nvbm5lY3QiKSB7CisgICAg
aWYgKHByb3BlcnR5TmFtZSA9PSBJZGVudGlmaWVyKGV4ZWMsICJkaXNjb25uZWN0IikpIHsKICAg
ICAgICAgUHJvcGVydHlTbG90IHNsb3Q7CiAgICAgICAgIHNsb3Quc2V0Q3VzdG9tKHRoaXNPYmpl
Y3QsIGRpc2Nvbm5lY3RHZXR0ZXIpOwogICAgICAgICBkZXNjcmlwdG9yLnNldERlc2NyaXB0b3Io
c2xvdC5nZXRWYWx1ZShleGVjLCBwcm9wZXJ0eU5hbWUpLCBEb250RGVsZXRlIHwgUmVhZE9ubHkg
fCBEb250RW51bSk7CkBAIC0xNTA3LDI5ICsxNTA3LDI5IEBAIHZvaWQgUXRSdW50aW1lTWV0YU1l
dGhvZDo6Z2V0T3duUHJvcGVydHkKICAgICBRdFJ1bnRpbWVNZXRob2Q6OmdldE93blByb3BlcnR5
TmFtZXMob2JqZWN0LCBleGVjLCBwcm9wZXJ0eU5hbWVzLCBtb2RlKTsKIH0KIAotSlNWYWx1ZSBR
dFJ1bnRpbWVNZXRhTWV0aG9kOjpsZW5ndGhHZXR0ZXIoRXhlY1N0YXRlKiwgSlNWYWx1ZSwgY29u
c3QgSWRlbnRpZmllciYpCitKU1ZhbHVlIFF0UnVudGltZU1ldGFNZXRob2Q6Omxlbmd0aEdldHRl
cihFeGVjU3RhdGUqLCBKU1ZhbHVlLCBQcm9wZXJ0eU5hbWUpCiB7CiAgICAgLy8gUXRTY3JpcHQg
YWx3YXlzIHJldHVybnMgMAogICAgIHJldHVybiBqc051bWJlcigwKTsKIH0KIAotSlNWYWx1ZSBR
dFJ1bnRpbWVNZXRhTWV0aG9kOjpjb25uZWN0R2V0dGVyKEV4ZWNTdGF0ZSogZXhlYywgSlNWYWx1
ZSBzbG90QmFzZSwgY29uc3QgSWRlbnRpZmllciYgaWRlbnQpCitKU1ZhbHVlIFF0UnVudGltZU1l
dGFNZXRob2Q6OmNvbm5lY3RHZXR0ZXIoRXhlY1N0YXRlKiBleGVjLCBKU1ZhbHVlIHNsb3RCYXNl
LCBQcm9wZXJ0eU5hbWUgaWRlbnQpCiB7CiAgICAgUXRSdW50aW1lTWV0YU1ldGhvZCogdGhpc09i
aiA9IHN0YXRpY19jYXN0PFF0UnVudGltZU1ldGFNZXRob2QqPihhc09iamVjdChzbG90QmFzZSkp
OwogICAgIFFXX0RTKFF0UnVudGltZU1ldGFNZXRob2QsIHRoaXNPYmopOwogCiAgICAgaWYgKCFk
LT5tX2Nvbm5lY3QpCi0gICAgICAgIGQtPm1fY29ubmVjdC5zZXQoZXhlYy0+Z2xvYmFsRGF0YSgp
LCB0aGlzT2JqLCBRdFJ1bnRpbWVDb25uZWN0aW9uTWV0aG9kOjpjcmVhdGUoZXhlYywgaWRlbnQs
IHRydWUsIGQtPm1faW5zdGFuY2UsIGQtPm1faW5kZXgsIGQtPm1fc2lnbmF0dXJlKSk7CisgICAg
ICAgIGQtPm1fY29ubmVjdC5zZXQoZXhlYy0+Z2xvYmFsRGF0YSgpLCB0aGlzT2JqLCBRdFJ1bnRp
bWVDb25uZWN0aW9uTWV0aG9kOjpjcmVhdGUoZXhlYywgaWRlbnQuaW1wbCgpLCB0cnVlLCBkLT5t
X2luc3RhbmNlLCBkLT5tX2luZGV4LCBkLT5tX3NpZ25hdHVyZSkpOwogICAgIHJldHVybiBkLT5t
X2Nvbm5lY3QuZ2V0KCk7CiB9CiAKLUpTVmFsdWUgUXRSdW50aW1lTWV0YU1ldGhvZDo6ZGlzY29u
bmVjdEdldHRlcihFeGVjU3RhdGUqIGV4ZWMsIEpTVmFsdWUgc2xvdEJhc2UsIGNvbnN0IElkZW50
aWZpZXImIGlkZW50KQorSlNWYWx1ZSBRdFJ1bnRpbWVNZXRhTWV0aG9kOjpkaXNjb25uZWN0R2V0
dGVyKEV4ZWNTdGF0ZSogZXhlYywgSlNWYWx1ZSBzbG90QmFzZSwgUHJvcGVydHlOYW1lIGlkZW50
KQogewogICAgIFF0UnVudGltZU1ldGFNZXRob2QqIHRoaXNPYmogPSBzdGF0aWNfY2FzdDxRdFJ1
bnRpbWVNZXRhTWV0aG9kKj4oYXNPYmplY3Qoc2xvdEJhc2UpKTsKICAgICBRV19EUyhRdFJ1bnRp
bWVNZXRhTWV0aG9kLCB0aGlzT2JqKTsKIAogICAgIGlmICghZC0+bV9kaXNjb25uZWN0KQotICAg
ICAgICBkLT5tX2Rpc2Nvbm5lY3Quc2V0KGV4ZWMtPmdsb2JhbERhdGEoKSwgdGhpc09iaiwgUXRS
dW50aW1lQ29ubmVjdGlvbk1ldGhvZDo6Y3JlYXRlKGV4ZWMsIGlkZW50LCBmYWxzZSwgZC0+bV9p
bnN0YW5jZSwgZC0+bV9pbmRleCwgZC0+bV9zaWduYXR1cmUpKTsKKyAgICAgICAgZC0+bV9kaXNj
b25uZWN0LnNldChleGVjLT5nbG9iYWxEYXRhKCksIHRoaXNPYmosIFF0UnVudGltZUNvbm5lY3Rp
b25NZXRob2Q6OmNyZWF0ZShleGVjLCBpZGVudC5pbXBsKCksIGZhbHNlLCBkLT5tX2luc3RhbmNl
LCBkLT5tX2luZGV4LCBkLT5tX3NpZ25hdHVyZSkpOwogICAgIHJldHVybiBkLT5tX2Rpc2Nvbm5l
Y3QuZ2V0KCk7CiB9CiAKQEAgLTE1MzksMTIgKzE1MzksMTIgQEAgUU11bHRpTWFwPFFPYmplY3Qq
LCBRdENvbm5lY3Rpb25PYmplY3QqPgogCiBjb25zdCBDbGFzc0luZm8gUXRSdW50aW1lQ29ubmVj
dGlvbk1ldGhvZDo6c19pbmZvID0geyAiUXRSdW50aW1lTWV0aG9kIiwgJkJhc2U6OnNfaW5mbywg
MCwgMCwgQ1JFQVRFX01FVEhPRF9UQUJMRShRdFJ1bnRpbWVDb25uZWN0aW9uTWV0aG9kKSB9Owog
Ci1RdFJ1bnRpbWVDb25uZWN0aW9uTWV0aG9kOjpRdFJ1bnRpbWVDb25uZWN0aW9uTWV0aG9kKEV4
ZWNTdGF0ZSogZXhlYywgU3RydWN0dXJlKiBzdHJ1Y3R1cmUsIGNvbnN0IElkZW50aWZpZXImIGlk
ZW50aWZpZXIpCitRdFJ1bnRpbWVDb25uZWN0aW9uTWV0aG9kOjpRdFJ1bnRpbWVDb25uZWN0aW9u
TWV0aG9kKEV4ZWNTdGF0ZSogZXhlYywgU3RydWN0dXJlKiBzdHJ1Y3R1cmUsIGNvbnN0IFVTdHJp
bmcmIGlkZW50aWZpZXIpCiAgICAgOiBRdFJ1bnRpbWVNZXRob2QgKG5ldyBRdFJ1bnRpbWVDb25u
ZWN0aW9uTWV0aG9kRGF0YSgpLCBleGVjLCBzdHJ1Y3R1cmUsIGlkZW50aWZpZXIpCiB7CiB9CiAK
LXZvaWQgUXRSdW50aW1lQ29ubmVjdGlvbk1ldGhvZDo6ZmluaXNoQ3JlYXRpb24oRXhlY1N0YXRl
KiBleGVjLCBjb25zdCBJZGVudGlmaWVyJiBpZGVudGlmaWVyLCBib29sIGlzQ29ubmVjdCwgUGFz
c1JlZlB0cjxRdEluc3RhbmNlPiBpbnN0YW5jZSwgaW50IGluZGV4LCBjb25zdCBRQnl0ZUFycmF5
JiBzaWduYXR1cmUpCit2b2lkIFF0UnVudGltZUNvbm5lY3Rpb25NZXRob2Q6OmZpbmlzaENyZWF0
aW9uKEV4ZWNTdGF0ZSogZXhlYywgY29uc3QgVVN0cmluZyYgaWRlbnRpZmllciwgYm9vbCBpc0Nv
bm5lY3QsIFBhc3NSZWZQdHI8UXRJbnN0YW5jZT4gaW5zdGFuY2UsIGludCBpbmRleCwgY29uc3Qg
UUJ5dGVBcnJheSYgc2lnbmF0dXJlKQogewogICAgIEJhc2U6OmZpbmlzaENyZWF0aW9uKGV4ZWMs
IGlkZW50aWZpZXIsIGluc3RhbmNlKTsKICAgICBRV19EKFF0UnVudGltZUNvbm5lY3Rpb25NZXRo
b2QpOwpAQCAtMTY5NSw3ICsxNjk1LDcgQEAgQ2FsbFR5cGUgUXRSdW50aW1lQ29ubmVjdGlvbk1l
dGhvZDo6Z2V0QwogICAgIHJldHVybiBDYWxsVHlwZUhvc3Q7CiB9CiAKLWJvb2wgUXRSdW50aW1l
Q29ubmVjdGlvbk1ldGhvZDo6Z2V0T3duUHJvcGVydHlTbG90KEpTQ2VsbCogY2VsbCwgRXhlY1N0
YXRlKiBleGVjLCBjb25zdCBJZGVudGlmaWVyJiBwcm9wZXJ0eU5hbWUsIFByb3BlcnR5U2xvdCYg
c2xvdCkKK2Jvb2wgUXRSdW50aW1lQ29ubmVjdGlvbk1ldGhvZDo6Z2V0T3duUHJvcGVydHlTbG90
KEpTQ2VsbCogY2VsbCwgRXhlY1N0YXRlKiBleGVjLCBQcm9wZXJ0eU5hbWUgcHJvcGVydHlOYW1l
LCBQcm9wZXJ0eVNsb3QmIHNsb3QpCiB7CiAgICAgUXRSdW50aW1lQ29ubmVjdGlvbk1ldGhvZCog
dGhpc09iamVjdCA9IGpzQ2FzdDxRdFJ1bnRpbWVDb25uZWN0aW9uTWV0aG9kKj4oY2VsbCk7CiAg
ICAgaWYgKHByb3BlcnR5TmFtZSA9PSBleGVjLT5wcm9wZXJ0eU5hbWVzKCkubGVuZ3RoKSB7CkBA
IC0xNzA2LDcgKzE3MDYsNyBAQCBib29sIFF0UnVudGltZUNvbm5lY3Rpb25NZXRob2Q6OmdldE93
blByCiAgICAgcmV0dXJuIFF0UnVudGltZU1ldGhvZDo6Z2V0T3duUHJvcGVydHlTbG90KHRoaXNP
YmplY3QsIGV4ZWMsIHByb3BlcnR5TmFtZSwgc2xvdCk7CiB9CiAKLWJvb2wgUXRSdW50aW1lQ29u
bmVjdGlvbk1ldGhvZDo6Z2V0T3duUHJvcGVydHlEZXNjcmlwdG9yKEpTT2JqZWN0KiBvYmplY3Qs
IEV4ZWNTdGF0ZSogZXhlYywgY29uc3QgSWRlbnRpZmllciYgcHJvcGVydHlOYW1lLCBQcm9wZXJ0
eURlc2NyaXB0b3ImIGRlc2NyaXB0b3IpCitib29sIFF0UnVudGltZUNvbm5lY3Rpb25NZXRob2Q6
OmdldE93blByb3BlcnR5RGVzY3JpcHRvcihKU09iamVjdCogb2JqZWN0LCBFeGVjU3RhdGUqIGV4
ZWMsIFByb3BlcnR5TmFtZSBwcm9wZXJ0eU5hbWUsIFByb3BlcnR5RGVzY3JpcHRvciYgZGVzY3Jp
cHRvcikKIHsKICAgICBRdFJ1bnRpbWVDb25uZWN0aW9uTWV0aG9kKiB0aGlzT2JqZWN0ID0ganND
YXN0PFF0UnVudGltZUNvbm5lY3Rpb25NZXRob2QqPihvYmplY3QpOwogICAgIGlmIChwcm9wZXJ0
eU5hbWUgPT0gZXhlYy0+cHJvcGVydHlOYW1lcygpLmxlbmd0aCkgewpAQCAtMTcyNyw3ICsxNzI3
LDcgQEAgdm9pZCBRdFJ1bnRpbWVDb25uZWN0aW9uTWV0aG9kOjpnZXRPd25QcgogICAgIFF0UnVu
dGltZU1ldGhvZDo6Z2V0T3duUHJvcGVydHlOYW1lcyhvYmplY3QsIGV4ZWMsIHByb3BlcnR5TmFt
ZXMsIG1vZGUpOwogfQogCi1KU1ZhbHVlIFF0UnVudGltZUNvbm5lY3Rpb25NZXRob2Q6Omxlbmd0
aEdldHRlcihFeGVjU3RhdGUqLCBKU1ZhbHVlLCBjb25zdCBJZGVudGlmaWVyJikKK0pTVmFsdWUg
UXRSdW50aW1lQ29ubmVjdGlvbk1ldGhvZDo6bGVuZ3RoR2V0dGVyKEV4ZWNTdGF0ZSosIEpTVmFs
dWUsIFByb3BlcnR5TmFtZSkKIHsKICAgICAvLyB3ZSBoYXZlIG9uZSBmb3JtYWwgYXJndW1lbnQs
IGFuZCBvbmUgb3B0aW9uYWwKICAgICByZXR1cm4ganNOdW1iZXIoMSk7CkluZGV4OiBTb3VyY2Uv
V2ViQ29yZS9icmlkZ2UvcXQvcXRfcnVudGltZS5oCj09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9XZWJD
b3JlL2JyaWRnZS9xdC9xdF9ydW50aW1lLmgJKHJldmlzaW9uIDExNjY2NykKKysrIFNvdXJjZS9X
ZWJDb3JlL2JyaWRnZS9xdC9xdF9ydW50aW1lLmgJKHdvcmtpbmcgY29weSkKQEAgLTE0OSw3ICsx
NDksNyBAQCBwdWJsaWM6CiAgICAgfQogCiBwcm90ZWN0ZWQ6Ci0gICAgdm9pZCBmaW5pc2hDcmVh
dGlvbihFeGVjU3RhdGUqLCBjb25zdCBJZGVudGlmaWVyJiwgUGFzc1JlZlB0cjxRdEluc3RhbmNl
Pik7CisgICAgdm9pZCBmaW5pc2hDcmVhdGlvbihFeGVjU3RhdGUqLCBjb25zdCBVU3RyaW5nJiwg
UGFzc1JlZlB0cjxRdEluc3RhbmNlPik7CiAgICAgc3RhdGljIGNvbnN0IHVuc2lnbmVkIFN0cnVj
dHVyZUZsYWdzID0gT3ZlcnJpZGVzR2V0T3duUHJvcGVydHlTbG90IHwgT3ZlcnJpZGVzR2V0UHJv
cGVydHlOYW1lcyB8IEludGVybmFsRnVuY3Rpb246OlN0cnVjdHVyZUZsYWdzIHwgT3ZlcnJpZGVz
VmlzaXRDaGlsZHJlbjsKIAogICAgIFF0UnVudGltZU1ldGhvZERhdGEgKmRfZnVuYygpIGNvbnN0
IHtyZXR1cm4gZF9wdHI7fQpAQCAtMTYxLDcgKzE2MSw3IEBAIGNsYXNzIFF0UnVudGltZU1ldGFN
ZXRob2QgOiBwdWJsaWMgUXRSdW4KIHB1YmxpYzoKICAgICB0eXBlZGVmIFF0UnVudGltZU1ldGhv
ZCBCYXNlOwogCi0gICAgc3RhdGljIFF0UnVudGltZU1ldGFNZXRob2QqIGNyZWF0ZShFeGVjU3Rh
dGUqIGV4ZWMsIGNvbnN0IElkZW50aWZpZXImIG5hbWUsIFBhc3NSZWZQdHI8UXRJbnN0YW5jZT4g
aW5zdGFuY2UsIGludCBpbmRleCwgY29uc3QgUUJ5dGVBcnJheSYgc2lnbmF0dXJlLCBib29sIGFs
bG93UHJpdmF0ZSkKKyAgICBzdGF0aWMgUXRSdW50aW1lTWV0YU1ldGhvZCogY3JlYXRlKEV4ZWNT
dGF0ZSogZXhlYywgY29uc3QgVVN0cmluZyYgbmFtZSwgUGFzc1JlZlB0cjxRdEluc3RhbmNlPiBp
bnN0YW5jZSwgaW50IGluZGV4LCBjb25zdCBRQnl0ZUFycmF5JiBzaWduYXR1cmUsIGJvb2wgYWxs
b3dQcml2YXRlKQogICAgIHsKICAgICAgICAgU3RydWN0dXJlKiBkb21TdHJ1Y3R1cmUgPSBXZWJD
b3JlOjpkZXByZWNhdGVkR2V0RE9NU3RydWN0dXJlPFF0UnVudGltZU1ldGFNZXRob2Q+KGV4ZWMp
OwogICAgICAgICBRdFJ1bnRpbWVNZXRhTWV0aG9kKiBtZXRob2QgPSBuZXcgKGFsbG9jYXRlQ2Vs
bDxRdFJ1bnRpbWVNZXRhTWV0aG9kPigqZXhlYy0+aGVhcCgpKSkgUXRSdW50aW1lTWV0YU1ldGhv
ZChleGVjLCBkb21TdHJ1Y3R1cmUsIG5hbWUpOwpAQCAtMTY5LDggKzE2OSw4IEBAIHB1YmxpYzoK
ICAgICAgICAgcmV0dXJuIG1ldGhvZDsKICAgICB9CiAKLSAgICBzdGF0aWMgYm9vbCBnZXRPd25Q
cm9wZXJ0eVNsb3QoSlNDZWxsKiwgRXhlY1N0YXRlICosIGNvbnN0IElkZW50aWZpZXImLCBQcm9w
ZXJ0eVNsb3QmKTsKLSAgICBzdGF0aWMgYm9vbCBnZXRPd25Qcm9wZXJ0eURlc2NyaXB0b3IoSlNP
YmplY3QqLCBFeGVjU3RhdGUqLCBjb25zdCBJZGVudGlmaWVyJiwgUHJvcGVydHlEZXNjcmlwdG9y
Jik7CisgICAgc3RhdGljIGJvb2wgZ2V0T3duUHJvcGVydHlTbG90KEpTQ2VsbCosIEV4ZWNTdGF0
ZSAqLCBQcm9wZXJ0eU5hbWUsIFByb3BlcnR5U2xvdCYpOworICAgIHN0YXRpYyBib29sIGdldE93
blByb3BlcnR5RGVzY3JpcHRvcihKU09iamVjdCosIEV4ZWNTdGF0ZSosIFByb3BlcnR5TmFtZSwg
UHJvcGVydHlEZXNjcmlwdG9yJik7CiAgICAgc3RhdGljIHZvaWQgZ2V0T3duUHJvcGVydHlOYW1l
cyhKU09iamVjdCosIEV4ZWNTdGF0ZSosIFByb3BlcnR5TmFtZUFycmF5JiwgRW51bWVyYXRpb25N
b2RlKTsKIAogICAgIHN0YXRpYyB2b2lkIHZpc2l0Q2hpbGRyZW4oSlNDZWxsKiwgU2xvdFZpc2l0
b3ImKTsKQEAgLTE4NiwxNCArMTg2LDE0IEBAIHByb3RlY3RlZDoKICAgICBRdFJ1bnRpbWVNZXRh
TWV0aG9kRGF0YSogZF9mdW5jKCkgY29uc3Qge3JldHVybiByZWludGVycHJldF9jYXN0PFF0UnVu
dGltZU1ldGFNZXRob2REYXRhKj4oZF9wdHIpO30KIAogcHJpdmF0ZToKLSAgICBRdFJ1bnRpbWVN
ZXRhTWV0aG9kKEV4ZWNTdGF0ZSosIFN0cnVjdHVyZSosIGNvbnN0IElkZW50aWZpZXImKTsKLSAg
ICB2b2lkIGZpbmlzaENyZWF0aW9uKEV4ZWNTdGF0ZSosIGNvbnN0IElkZW50aWZpZXImLCBQYXNz
UmVmUHRyPFF0SW5zdGFuY2U+LCBpbnQgaW5kZXgsIGNvbnN0IFFCeXRlQXJyYXkmIHNpZ25hdHVy
ZSwgYm9vbCBhbGxvd1ByaXZhdGUpOworICAgIFF0UnVudGltZU1ldGFNZXRob2QoRXhlY1N0YXRl
KiwgU3RydWN0dXJlKiwgY29uc3QgVVN0cmluZyYpOworICAgIHZvaWQgZmluaXNoQ3JlYXRpb24o
RXhlY1N0YXRlKiwgY29uc3QgVVN0cmluZyYsIFBhc3NSZWZQdHI8UXRJbnN0YW5jZT4sIGludCBp
bmRleCwgY29uc3QgUUJ5dGVBcnJheSYgc2lnbmF0dXJlLCBib29sIGFsbG93UHJpdmF0ZSk7CiAK
ICAgICBzdGF0aWMgQ2FsbFR5cGUgZ2V0Q2FsbERhdGEoSlNDZWxsKiwgQ2FsbERhdGEmKTsKICAg
ICBzdGF0aWMgRW5jb2RlZEpTVmFsdWUgSlNDX0hPU1RfQ0FMTCBjYWxsKEV4ZWNTdGF0ZSogZXhl
Yyk7Ci0gICAgc3RhdGljIEpTVmFsdWUgbGVuZ3RoR2V0dGVyKEV4ZWNTdGF0ZSosIEpTVmFsdWUs
IGNvbnN0IElkZW50aWZpZXImKTsKLSAgICBzdGF0aWMgSlNWYWx1ZSBjb25uZWN0R2V0dGVyKEV4
ZWNTdGF0ZSosIEpTVmFsdWUsIGNvbnN0IElkZW50aWZpZXImKTsKLSAgICBzdGF0aWMgSlNWYWx1
ZSBkaXNjb25uZWN0R2V0dGVyKEV4ZWNTdGF0ZSosIEpTVmFsdWUsIGNvbnN0IElkZW50aWZpZXIm
KTsKKyAgICBzdGF0aWMgSlNWYWx1ZSBsZW5ndGhHZXR0ZXIoRXhlY1N0YXRlKiwgSlNWYWx1ZSwg
UHJvcGVydHlOYW1lKTsKKyAgICBzdGF0aWMgSlNWYWx1ZSBjb25uZWN0R2V0dGVyKEV4ZWNTdGF0
ZSosIEpTVmFsdWUsIFByb3BlcnR5TmFtZSk7CisgICAgc3RhdGljIEpTVmFsdWUgZGlzY29ubmVj
dEdldHRlcihFeGVjU3RhdGUqLCBKU1ZhbHVlLCBQcm9wZXJ0eU5hbWUpOwogfTsKIAogY2xhc3Mg
UXRDb25uZWN0aW9uT2JqZWN0OwpAQCAtMjAxLDcgKzIwMSw3IEBAIGNsYXNzIFF0UnVudGltZUNv
bm5lY3Rpb25NZXRob2QgOiBwdWJsaWMKIHB1YmxpYzoKICAgICB0eXBlZGVmIFF0UnVudGltZU1l
dGhvZCBCYXNlOwogCi0gICAgc3RhdGljIFF0UnVudGltZUNvbm5lY3Rpb25NZXRob2QqIGNyZWF0
ZShFeGVjU3RhdGUqIGV4ZWMsIGNvbnN0IElkZW50aWZpZXImIG5hbWUsIGJvb2wgaXNDb25uZWN0
LCBQYXNzUmVmUHRyPFF0SW5zdGFuY2U+IGluc3RhbmNlLCBpbnQgaW5kZXgsIGNvbnN0IFFCeXRl
QXJyYXkmIHNpZ25hdHVyZSkKKyAgICBzdGF0aWMgUXRSdW50aW1lQ29ubmVjdGlvbk1ldGhvZCog
Y3JlYXRlKEV4ZWNTdGF0ZSogZXhlYywgY29uc3QgVVN0cmluZyYgbmFtZSwgYm9vbCBpc0Nvbm5l
Y3QsIFBhc3NSZWZQdHI8UXRJbnN0YW5jZT4gaW5zdGFuY2UsIGludCBpbmRleCwgY29uc3QgUUJ5
dGVBcnJheSYgc2lnbmF0dXJlKQogICAgIHsKICAgICAgICAgU3RydWN0dXJlKiBkb21TdHJ1Y3R1
cmUgPSBXZWJDb3JlOjpkZXByZWNhdGVkR2V0RE9NU3RydWN0dXJlPFF0UnVudGltZUNvbm5lY3Rp
b25NZXRob2Q+KGV4ZWMpOwogICAgICAgICBRdFJ1bnRpbWVDb25uZWN0aW9uTWV0aG9kKiBtZXRo
b2QgPSBuZXcgKGFsbG9jYXRlQ2VsbDxRdFJ1bnRpbWVDb25uZWN0aW9uTWV0aG9kPigqZXhlYy0+
aGVhcCgpKSkgUXRSdW50aW1lQ29ubmVjdGlvbk1ldGhvZChleGVjLCBkb21TdHJ1Y3R1cmUsIG5h
bWUpOwpAQCAtMjA5LDggKzIwOSw4IEBAIHB1YmxpYzoKICAgICAgICAgcmV0dXJuIG1ldGhvZDsK
ICAgICB9CiAKLSAgICBzdGF0aWMgYm9vbCBnZXRPd25Qcm9wZXJ0eVNsb3QoSlNDZWxsKiwgRXhl
Y1N0YXRlICosIGNvbnN0IElkZW50aWZpZXImLCBQcm9wZXJ0eVNsb3QmKTsKLSAgICBzdGF0aWMg
Ym9vbCBnZXRPd25Qcm9wZXJ0eURlc2NyaXB0b3IoSlNPYmplY3QqLCBFeGVjU3RhdGUqLCBjb25z
dCBJZGVudGlmaWVyJiwgUHJvcGVydHlEZXNjcmlwdG9yJik7CisgICAgc3RhdGljIGJvb2wgZ2V0
T3duUHJvcGVydHlTbG90KEpTQ2VsbCosIEV4ZWNTdGF0ZSAqLCBQcm9wZXJ0eU5hbWUsIFByb3Bl
cnR5U2xvdCYpOworICAgIHN0YXRpYyBib29sIGdldE93blByb3BlcnR5RGVzY3JpcHRvcihKU09i
amVjdCosIEV4ZWNTdGF0ZSosIFByb3BlcnR5TmFtZSwgUHJvcGVydHlEZXNjcmlwdG9yJik7CiAg
ICAgc3RhdGljIHZvaWQgZ2V0T3duUHJvcGVydHlOYW1lcyhKU09iamVjdCosIEV4ZWNTdGF0ZSos
IFByb3BlcnR5TmFtZUFycmF5JiwgRW51bWVyYXRpb25Nb2RlKTsKICAKICAgICBzdGF0aWMgY29u
c3QgQ2xhc3NJbmZvIHNfaW5mbzsKQEAgLTIyNCwxMiArMjI0LDEyIEBAIHByb3RlY3RlZDoKICAg
ICBRdFJ1bnRpbWVDb25uZWN0aW9uTWV0aG9kRGF0YSogZF9mdW5jKCkgY29uc3Qge3JldHVybiBy
ZWludGVycHJldF9jYXN0PFF0UnVudGltZUNvbm5lY3Rpb25NZXRob2REYXRhKj4oZF9wdHIpO30K
IAogcHJpdmF0ZToKLSAgICBRdFJ1bnRpbWVDb25uZWN0aW9uTWV0aG9kKEV4ZWNTdGF0ZSosIFN0
cnVjdHVyZSosIGNvbnN0IElkZW50aWZpZXImKTsKLSAgICB2b2lkIGZpbmlzaENyZWF0aW9uKEV4
ZWNTdGF0ZSosIGNvbnN0IElkZW50aWZpZXImLCBib29sIGlzQ29ubmVjdCwgUGFzc1JlZlB0cjxR
dEluc3RhbmNlPiwgaW50IGluZGV4LCBjb25zdCBRQnl0ZUFycmF5JiBzaWduYXR1cmUpOworICAg
IFF0UnVudGltZUNvbm5lY3Rpb25NZXRob2QoRXhlY1N0YXRlKiwgU3RydWN0dXJlKiwgY29uc3Qg
VVN0cmluZyYpOworICAgIHZvaWQgZmluaXNoQ3JlYXRpb24oRXhlY1N0YXRlKiwgY29uc3QgVVN0
cmluZyYsIGJvb2wgaXNDb25uZWN0LCBQYXNzUmVmUHRyPFF0SW5zdGFuY2U+LCBpbnQgaW5kZXgs
IGNvbnN0IFFCeXRlQXJyYXkmIHNpZ25hdHVyZSk7CiAKICAgICBzdGF0aWMgQ2FsbFR5cGUgZ2V0
Q2FsbERhdGEoSlNDZWxsKiwgQ2FsbERhdGEmKTsKICAgICBzdGF0aWMgRW5jb2RlZEpTVmFsdWUg
SlNDX0hPU1RfQ0FMTCBjYWxsKEV4ZWNTdGF0ZSogZXhlYyk7Ci0gICAgc3RhdGljIEpTVmFsdWUg
bGVuZ3RoR2V0dGVyKEV4ZWNTdGF0ZSosIEpTVmFsdWUsIGNvbnN0IElkZW50aWZpZXImKTsKKyAg
ICBzdGF0aWMgSlNWYWx1ZSBsZW5ndGhHZXR0ZXIoRXhlY1N0YXRlKiwgSlNWYWx1ZSwgUHJvcGVy
dHlOYW1lKTsKICAgICBzdGF0aWMgUU11bHRpTWFwPFFPYmplY3QgKiwgUXRDb25uZWN0aW9uT2Jq
ZWN0ICo+IGNvbm5lY3Rpb25zOwogICAgIGZyaWVuZCBjbGFzcyBRdENvbm5lY3Rpb25PYmplY3Q7
CiB9OwpJbmRleDogU291cmNlL1dlYkNvcmUvYnJpZGdlL3F0L3F0X3J1bnRpbWVfcXQ0LmNwcAo9
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09Ci0tLSBTb3VyY2UvV2ViQ29yZS9icmlkZ2UvcXQvcXRfcnVudGltZV9xdDQuY3Bw
CShyZXZpc2lvbiAxMTY2NjcpCisrKyBTb3VyY2UvV2ViQ29yZS9icmlkZ2UvcXQvcXRfcnVudGlt
ZV9xdDQuY3BwCSh3b3JraW5nIGNvcHkpCkBAIC05NjgsMTMgKzk2OCwxMyBAQCBKU1ZhbHVlIGNv
bnZlcnRRVmFyaWFudFRvVmFsdWUoRXhlY1N0YXRlCiAKIGNvbnN0IENsYXNzSW5mbyBRdFJ1bnRp
bWVNZXRob2Q6OnNfaW5mbyA9IHsgIlF0UnVudGltZU1ldGhvZCIsICZJbnRlcm5hbEZ1bmN0aW9u
OjpzX2luZm8sIDAsIDAsIENSRUFURV9NRVRIT0RfVEFCTEUoUXRSdW50aW1lTWV0aG9kKSB9Owog
Ci1RdFJ1bnRpbWVNZXRob2Q6OlF0UnVudGltZU1ldGhvZChRdFJ1bnRpbWVNZXRob2REYXRhKiBk
ZCwgRXhlY1N0YXRlKiBleGVjLCBTdHJ1Y3R1cmUqIHN0cnVjdHVyZSwgY29uc3QgSWRlbnRpZmll
ciYgaWRlbnRpZmllcikKK1F0UnVudGltZU1ldGhvZDo6UXRSdW50aW1lTWV0aG9kKFF0UnVudGlt
ZU1ldGhvZERhdGEqIGRkLCBFeGVjU3RhdGUqIGV4ZWMsIFN0cnVjdHVyZSogc3RydWN0dXJlLCBj
b25zdCBVU3RyaW5nJiBpZGVudGlmaWVyKQogICAgIDogSW50ZXJuYWxGdW5jdGlvbihleGVjLT5s
ZXhpY2FsR2xvYmFsT2JqZWN0KCksIHN0cnVjdHVyZSkKICAgICAsIGRfcHRyKGRkKQogewogfQog
Ci12b2lkIFF0UnVudGltZU1ldGhvZDo6ZmluaXNoQ3JlYXRpb24oRXhlY1N0YXRlKiBleGVjLCBj
b25zdCBJZGVudGlmaWVyJiBpZGVudGlmaWVyLCBQYXNzUmVmUHRyPFF0SW5zdGFuY2U+IGluc3Rh
bmNlKQordm9pZCBRdFJ1bnRpbWVNZXRob2Q6OmZpbmlzaENyZWF0aW9uKEV4ZWNTdGF0ZSogZXhl
YywgY29uc3QgVVN0cmluZyYgaWRlbnRpZmllciwgUGFzc1JlZlB0cjxRdEluc3RhbmNlPiBpbnN0
YW5jZSkKIHsKICAgICBCYXNlOjpmaW5pc2hDcmVhdGlvbihleGVjLT5nbG9iYWxEYXRhKCksIGlk
ZW50aWZpZXIpOwogICAgIFFXX0QoUXRSdW50aW1lTWV0aG9kKTsKQEAgLTEzOTQsMTIgKzEzOTQs
MTIgQEAgc3RhdGljIGludCBmaW5kU2lnbmFsSW5kZXgoY29uc3QgUU1ldGFPYgogCiBjb25zdCBD
bGFzc0luZm8gUXRSdW50aW1lTWV0YU1ldGhvZDo6c19pbmZvID0geyAiUXRSdW50aW1lTWV0aG9k
IiwgJkJhc2U6OnNfaW5mbywgMCwgMCwgQ1JFQVRFX01FVEhPRF9UQUJMRShRdFJ1bnRpbWVNZXRh
TWV0aG9kKSB9OwogCi1RdFJ1bnRpbWVNZXRhTWV0aG9kOjpRdFJ1bnRpbWVNZXRhTWV0aG9kKEV4
ZWNTdGF0ZSogZXhlYywgU3RydWN0dXJlKiBzdHJ1Y3R1cmUsIGNvbnN0IElkZW50aWZpZXImIGlk
ZW50aWZpZXIpCitRdFJ1bnRpbWVNZXRhTWV0aG9kOjpRdFJ1bnRpbWVNZXRhTWV0aG9kKEV4ZWNT
dGF0ZSogZXhlYywgU3RydWN0dXJlKiBzdHJ1Y3R1cmUsIGNvbnN0IFVTdHJpbmcmIGlkZW50aWZp
ZXIpCiAgICAgOiBRdFJ1bnRpbWVNZXRob2QgKG5ldyBRdFJ1bnRpbWVNZXRhTWV0aG9kRGF0YSgp
LCBleGVjLCBzdHJ1Y3R1cmUsIGlkZW50aWZpZXIpCiB7CiB9CiAKLXZvaWQgUXRSdW50aW1lTWV0
YU1ldGhvZDo6ZmluaXNoQ3JlYXRpb24oRXhlY1N0YXRlKiBleGVjLCBjb25zdCBJZGVudGlmaWVy
JiBpZGVudGlmaWVyLCBQYXNzUmVmUHRyPFF0SW5zdGFuY2U+IGluc3RhbmNlLCBpbnQgaW5kZXgs
IGNvbnN0IFFCeXRlQXJyYXkmIHNpZ25hdHVyZSwgYm9vbCBhbGxvd1ByaXZhdGUpCit2b2lkIFF0
UnVudGltZU1ldGFNZXRob2Q6OmZpbmlzaENyZWF0aW9uKEV4ZWNTdGF0ZSogZXhlYywgY29uc3Qg
VVN0cmluZyYgaWRlbnRpZmllciwgUGFzc1JlZlB0cjxRdEluc3RhbmNlPiBpbnN0YW5jZSwgaW50
IGluZGV4LCBjb25zdCBRQnl0ZUFycmF5JiBzaWduYXR1cmUsIGJvb2wgYWxsb3dQcml2YXRlKQog
ewogICAgIEJhc2U6OmZpbmlzaENyZWF0aW9uKGV4ZWMsIGlkZW50aWZpZXIsIGluc3RhbmNlKTsK
ICAgICBRV19EKFF0UnVudGltZU1ldGFNZXRob2QpOwpAQCAtMTQ2MSwxMyArMTQ2MSwxMyBAQCBD
YWxsVHlwZSBRdFJ1bnRpbWVNZXRhTWV0aG9kOjpnZXRDYWxsRGF0CiAgICAgcmV0dXJuIENhbGxU
eXBlSG9zdDsKIH0KIAotYm9vbCBRdFJ1bnRpbWVNZXRhTWV0aG9kOjpnZXRPd25Qcm9wZXJ0eVNs
b3QoSlNDZWxsKiBjZWxsLCBFeGVjU3RhdGUqIGV4ZWMsIGNvbnN0IElkZW50aWZpZXImIHByb3Bl
cnR5TmFtZSwgUHJvcGVydHlTbG90JiBzbG90KQorYm9vbCBRdFJ1bnRpbWVNZXRhTWV0aG9kOjpn
ZXRPd25Qcm9wZXJ0eVNsb3QoSlNDZWxsKiBjZWxsLCBFeGVjU3RhdGUqIGV4ZWMsIFByb3BlcnR5
TmFtZSBwcm9wZXJ0eU5hbWUsIFByb3BlcnR5U2xvdCYgc2xvdCkKIHsKICAgICBRdFJ1bnRpbWVN
ZXRhTWV0aG9kKiB0aGlzT2JqZWN0ID0ganNDYXN0PFF0UnVudGltZU1ldGFNZXRob2QqPihjZWxs
KTsKLSAgICBpZiAocHJvcGVydHlOYW1lID09ICJjb25uZWN0IikgeworICAgIGlmIChwcm9wZXJ0
eU5hbWUgPT0gSWRlbnRpZmllcihleGVjLCAiY29ubmVjdCIpKSB7CiAgICAgICAgIHNsb3Quc2V0
Q3VzdG9tKHRoaXNPYmplY3QsIHRoaXNPYmplY3QtPmNvbm5lY3RHZXR0ZXIpOwogICAgICAgICBy
ZXR1cm4gdHJ1ZTsKLSAgICB9IGVsc2UgaWYgKHByb3BlcnR5TmFtZSA9PSAiZGlzY29ubmVjdCIp
IHsKKyAgICB9IGVsc2UgaWYgKHByb3BlcnR5TmFtZSA9PSBJZGVudGlmaWVyKGV4ZWMsICJkaXNj
b25uZWN0IikpIHsKICAgICAgICAgc2xvdC5zZXRDdXN0b20odGhpc09iamVjdCwgdGhpc09iamVj
dC0+ZGlzY29ubmVjdEdldHRlcik7CiAgICAgICAgIHJldHVybiB0cnVlOwogICAgIH0gZWxzZSBp
ZiAocHJvcGVydHlOYW1lID09IGV4ZWMtPnByb3BlcnR5TmFtZXMoKS5sZW5ndGgpIHsKQEAgLTE0
NzgsMTcgKzE0NzgsMTcgQEAgYm9vbCBRdFJ1bnRpbWVNZXRhTWV0aG9kOjpnZXRPd25Qcm9wZXJ0
eQogICAgIHJldHVybiBRdFJ1bnRpbWVNZXRob2Q6OmdldE93blByb3BlcnR5U2xvdCh0aGlzT2Jq
ZWN0LCBleGVjLCBwcm9wZXJ0eU5hbWUsIHNsb3QpOwogfQogCi1ib29sIFF0UnVudGltZU1ldGFN
ZXRob2Q6OmdldE93blByb3BlcnR5RGVzY3JpcHRvcihKU09iamVjdCogb2JqZWN0LCBFeGVjU3Rh
dGUqIGV4ZWMsIGNvbnN0IElkZW50aWZpZXImIHByb3BlcnR5TmFtZSwgUHJvcGVydHlEZXNjcmlw
dG9yJiBkZXNjcmlwdG9yKQorYm9vbCBRdFJ1bnRpbWVNZXRhTWV0aG9kOjpnZXRPd25Qcm9wZXJ0
eURlc2NyaXB0b3IoSlNPYmplY3QqIG9iamVjdCwgRXhlY1N0YXRlKiBleGVjLCBQcm9wZXJ0eU5h
bWUgcHJvcGVydHlOYW1lLCBQcm9wZXJ0eURlc2NyaXB0b3ImIGRlc2NyaXB0b3IpCiB7CiAgICAg
UXRSdW50aW1lTWV0YU1ldGhvZCogdGhpc09iamVjdCA9IGpzQ2FzdDxRdFJ1bnRpbWVNZXRhTWV0
aG9kKj4ob2JqZWN0KTsKLSAgICBpZiAocHJvcGVydHlOYW1lID09ICJjb25uZWN0IikgeworICAg
IGlmIChwcm9wZXJ0eU5hbWUgPT0gSWRlbnRpZmllcihleGVjLCAiY29ubmVjdCIpKSB7CiAgICAg
ICAgIFByb3BlcnR5U2xvdCBzbG90OwogICAgICAgICBzbG90LnNldEN1c3RvbSh0aGlzT2JqZWN0
LCBjb25uZWN0R2V0dGVyKTsKICAgICAgICAgZGVzY3JpcHRvci5zZXREZXNjcmlwdG9yKHNsb3Qu
Z2V0VmFsdWUoZXhlYywgcHJvcGVydHlOYW1lKSwgRG9udERlbGV0ZSB8IFJlYWRPbmx5IHwgRG9u
dEVudW0pOwogICAgICAgICByZXR1cm4gdHJ1ZTsKICAgICB9CiAKLSAgICBpZiAocHJvcGVydHlO
YW1lID09ICJkaXNjb25uZWN0IikgeworICAgIGlmIChwcm9wZXJ0eU5hbWUgPT0gSWRlbnRpZmll
cihleGVjLCAiZGlzY29ubmVjdCIpKSB7CiAgICAgICAgIFByb3BlcnR5U2xvdCBzbG90OwogICAg
ICAgICBzbG90LnNldEN1c3RvbSh0aGlzT2JqZWN0LCBkaXNjb25uZWN0R2V0dGVyKTsKICAgICAg
ICAgZGVzY3JpcHRvci5zZXREZXNjcmlwdG9yKHNsb3QuZ2V0VmFsdWUoZXhlYywgcHJvcGVydHlO
YW1lKSwgRG9udERlbGV0ZSB8IFJlYWRPbmx5IHwgRG9udEVudW0pOwpAQCAtMTUxNiwxMyArMTUx
NiwxMyBAQCB2b2lkIFF0UnVudGltZU1ldGFNZXRob2Q6OmdldE93blByb3BlcnR5CiAgICAgUXRS
dW50aW1lTWV0aG9kOjpnZXRPd25Qcm9wZXJ0eU5hbWVzKG9iamVjdCwgZXhlYywgcHJvcGVydHlO
YW1lcywgbW9kZSk7CiB9CiAKLUpTVmFsdWUgUXRSdW50aW1lTWV0YU1ldGhvZDo6bGVuZ3RoR2V0
dGVyKEV4ZWNTdGF0ZSosIEpTVmFsdWUsIGNvbnN0IElkZW50aWZpZXImKQorSlNWYWx1ZSBRdFJ1
bnRpbWVNZXRhTWV0aG9kOjpsZW5ndGhHZXR0ZXIoRXhlY1N0YXRlKiwgSlNWYWx1ZSwgUHJvcGVy
dHlOYW1lKQogewogICAgIC8vIFF0U2NyaXB0IGFsd2F5cyByZXR1cm5zIDAKICAgICByZXR1cm4g
anNOdW1iZXIoMCk7CiB9CiAKLUpTVmFsdWUgUXRSdW50aW1lTWV0YU1ldGhvZDo6Y29ubmVjdEdl
dHRlcihFeGVjU3RhdGUqIGV4ZWMsIEpTVmFsdWUgc2xvdEJhc2UsIGNvbnN0IElkZW50aWZpZXIm
IGlkZW50KQorSlNWYWx1ZSBRdFJ1bnRpbWVNZXRhTWV0aG9kOjpjb25uZWN0R2V0dGVyKEV4ZWNT
dGF0ZSogZXhlYywgSlNWYWx1ZSBzbG90QmFzZSwgUHJvcGVydHlOYW1lIGlkZW50KQogewogICAg
IFF0UnVudGltZU1ldGFNZXRob2QqIHRoaXNPYmogPSBzdGF0aWNfY2FzdDxRdFJ1bnRpbWVNZXRh
TWV0aG9kKj4oYXNPYmplY3Qoc2xvdEJhc2UpKTsKICAgICBRV19EUyhRdFJ1bnRpbWVNZXRhTWV0
aG9kLCB0aGlzT2JqKTsKQEAgLTE1MzIsNyArMTUzMiw3IEBAIEpTVmFsdWUgUXRSdW50aW1lTWV0
YU1ldGhvZDo6Y29ubmVjdEdldHQKICAgICByZXR1cm4gZC0+bV9jb25uZWN0LmdldCgpOwogfQog
Ci1KU1ZhbHVlIFF0UnVudGltZU1ldGFNZXRob2Q6OmRpc2Nvbm5lY3RHZXR0ZXIoRXhlY1N0YXRl
KiBleGVjLCBKU1ZhbHVlIHNsb3RCYXNlLCBjb25zdCBJZGVudGlmaWVyJiBpZGVudCkKK0pTVmFs
dWUgUXRSdW50aW1lTWV0YU1ldGhvZDo6ZGlzY29ubmVjdEdldHRlcihFeGVjU3RhdGUqIGV4ZWMs
IEpTVmFsdWUgc2xvdEJhc2UsIFByb3BlcnR5TmFtZSBpZGVudCkKIHsKICAgICBRdFJ1bnRpbWVN
ZXRhTWV0aG9kKiB0aGlzT2JqID0gc3RhdGljX2Nhc3Q8UXRSdW50aW1lTWV0YU1ldGhvZCo+KGFz
T2JqZWN0KHNsb3RCYXNlKSk7CiAgICAgUVdfRFMoUXRSdW50aW1lTWV0YU1ldGhvZCwgdGhpc09i
aik7CkBAIC0xNTQ4LDEyICsxNTQ4LDEyIEBAIFFNdWx0aU1hcDxRT2JqZWN0KiwgUXRDb25uZWN0
aW9uT2JqZWN0Kj4KIAogY29uc3QgQ2xhc3NJbmZvIFF0UnVudGltZUNvbm5lY3Rpb25NZXRob2Q6
OnNfaW5mbyA9IHsgIlF0UnVudGltZU1ldGhvZCIsICZCYXNlOjpzX2luZm8sIDAsIDAsIENSRUFU
RV9NRVRIT0RfVEFCTEUoUXRSdW50aW1lQ29ubmVjdGlvbk1ldGhvZCkgfTsKIAotUXRSdW50aW1l
Q29ubmVjdGlvbk1ldGhvZDo6UXRSdW50aW1lQ29ubmVjdGlvbk1ldGhvZChFeGVjU3RhdGUqIGV4
ZWMsIFN0cnVjdHVyZSogc3RydWN0dXJlLCBjb25zdCBJZGVudGlmaWVyJiBpZGVudGlmaWVyKQor
UXRSdW50aW1lQ29ubmVjdGlvbk1ldGhvZDo6UXRSdW50aW1lQ29ubmVjdGlvbk1ldGhvZChFeGVj
U3RhdGUqIGV4ZWMsIFN0cnVjdHVyZSogc3RydWN0dXJlLCBjb25zdCBVU3RyaW5nJiBpZGVudGlm
aWVyKQogICAgIDogUXRSdW50aW1lTWV0aG9kIChuZXcgUXRSdW50aW1lQ29ubmVjdGlvbk1ldGhv
ZERhdGEoKSwgZXhlYywgc3RydWN0dXJlLCBpZGVudGlmaWVyKQogewogfQogCi12b2lkIFF0UnVu
dGltZUNvbm5lY3Rpb25NZXRob2Q6OmZpbmlzaENyZWF0aW9uKEV4ZWNTdGF0ZSogZXhlYywgY29u
c3QgSWRlbnRpZmllciYgaWRlbnRpZmllciwgYm9vbCBpc0Nvbm5lY3QsIFBhc3NSZWZQdHI8UXRJ
bnN0YW5jZT4gaW5zdGFuY2UsIGludCBpbmRleCwgY29uc3QgUUJ5dGVBcnJheSYgc2lnbmF0dXJl
KQordm9pZCBRdFJ1bnRpbWVDb25uZWN0aW9uTWV0aG9kOjpmaW5pc2hDcmVhdGlvbihFeGVjU3Rh
dGUqIGV4ZWMsIGNvbnN0IFVTdHJpbmcmIGlkZW50aWZpZXIsIGJvb2wgaXNDb25uZWN0LCBQYXNz
UmVmUHRyPFF0SW5zdGFuY2U+IGluc3RhbmNlLCBpbnQgaW5kZXgsIGNvbnN0IFFCeXRlQXJyYXkm
IHNpZ25hdHVyZSkKIHsKICAgICBCYXNlOjpmaW5pc2hDcmVhdGlvbihleGVjLCBpZGVudGlmaWVy
LCBpbnN0YW5jZSk7CiAgICAgUVdfRChRdFJ1bnRpbWVDb25uZWN0aW9uTWV0aG9kKTsKQEAgLTE3
MDQsNyArMTcwNCw3IEBAIENhbGxUeXBlIFF0UnVudGltZUNvbm5lY3Rpb25NZXRob2Q6OmdldEMK
ICAgICByZXR1cm4gQ2FsbFR5cGVIb3N0OwogfQogCi1ib29sIFF0UnVudGltZUNvbm5lY3Rpb25N
ZXRob2Q6OmdldE93blByb3BlcnR5U2xvdChKU0NlbGwqIGNlbGwsIEV4ZWNTdGF0ZSogZXhlYywg
Y29uc3QgSWRlbnRpZmllciYgcHJvcGVydHlOYW1lLCBQcm9wZXJ0eVNsb3QmIHNsb3QpCitib29s
IFF0UnVudGltZUNvbm5lY3Rpb25NZXRob2Q6OmdldE93blByb3BlcnR5U2xvdChKU0NlbGwqIGNl
bGwsIEV4ZWNTdGF0ZSogZXhlYywgUHJvcGVydHlOYW1lIHByb3BlcnR5TmFtZSwgUHJvcGVydHlT
bG90JiBzbG90KQogewogICAgIFF0UnVudGltZUNvbm5lY3Rpb25NZXRob2QqIHRoaXNPYmplY3Qg
PSBqc0Nhc3Q8UXRSdW50aW1lQ29ubmVjdGlvbk1ldGhvZCo+KGNlbGwpOwogICAgIGlmIChwcm9w
ZXJ0eU5hbWUgPT0gZXhlYy0+cHJvcGVydHlOYW1lcygpLmxlbmd0aCkgewpAQCAtMTcxNSw3ICsx
NzE1LDcgQEAgYm9vbCBRdFJ1bnRpbWVDb25uZWN0aW9uTWV0aG9kOjpnZXRPd25QcgogICAgIHJl
dHVybiBRdFJ1bnRpbWVNZXRob2Q6OmdldE93blByb3BlcnR5U2xvdCh0aGlzT2JqZWN0LCBleGVj
LCBwcm9wZXJ0eU5hbWUsIHNsb3QpOwogfQogCi1ib29sIFF0UnVudGltZUNvbm5lY3Rpb25NZXRo
b2Q6OmdldE93blByb3BlcnR5RGVzY3JpcHRvcihKU09iamVjdCogb2JqZWN0LCBFeGVjU3RhdGUq
IGV4ZWMsIGNvbnN0IElkZW50aWZpZXImIHByb3BlcnR5TmFtZSwgUHJvcGVydHlEZXNjcmlwdG9y
JiBkZXNjcmlwdG9yKQorYm9vbCBRdFJ1bnRpbWVDb25uZWN0aW9uTWV0aG9kOjpnZXRPd25Qcm9w
ZXJ0eURlc2NyaXB0b3IoSlNPYmplY3QqIG9iamVjdCwgRXhlY1N0YXRlKiBleGVjLCBQcm9wZXJ0
eU5hbWUgcHJvcGVydHlOYW1lLCBQcm9wZXJ0eURlc2NyaXB0b3ImIGRlc2NyaXB0b3IpCiB7CiAg
ICAgUXRSdW50aW1lQ29ubmVjdGlvbk1ldGhvZCogdGhpc09iamVjdCA9IGpzQ2FzdDxRdFJ1bnRp
bWVDb25uZWN0aW9uTWV0aG9kKj4ob2JqZWN0KTsKICAgICBpZiAocHJvcGVydHlOYW1lID09IGV4
ZWMtPnByb3BlcnR5TmFtZXMoKS5sZW5ndGgpIHsKQEAgLTE3MzYsNyArMTczNiw3IEBAIHZvaWQg
UXRSdW50aW1lQ29ubmVjdGlvbk1ldGhvZDo6Z2V0T3duUHIKICAgICBRdFJ1bnRpbWVNZXRob2Q6
OmdldE93blByb3BlcnR5TmFtZXMob2JqZWN0LCBleGVjLCBwcm9wZXJ0eU5hbWVzLCBtb2RlKTsK
IH0KIAotSlNWYWx1ZSBRdFJ1bnRpbWVDb25uZWN0aW9uTWV0aG9kOjpsZW5ndGhHZXR0ZXIoRXhl
Y1N0YXRlKiwgSlNWYWx1ZSwgY29uc3QgSWRlbnRpZmllciYpCitKU1ZhbHVlIFF0UnVudGltZUNv
bm5lY3Rpb25NZXRob2Q6Omxlbmd0aEdldHRlcihFeGVjU3RhdGUqLCBKU1ZhbHVlLCBQcm9wZXJ0
eU5hbWUpCiB7CiAgICAgLy8gd2UgaGF2ZSBvbmUgZm9ybWFsIGFyZ3VtZW50LCBhbmQgb25lIG9w
dGlvbmFsCiAgICAgcmV0dXJuIGpzTnVtYmVyKDEpOwpJbmRleDogU291cmNlL1dlYktpdDIvQ2hh
bmdlTG9nCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9XZWJLaXQyL0NoYW5nZUxvZwkocmV2aXNpb24g
MTE2NzkyKQorKysgU291cmNlL1dlYktpdDIvQ2hhbmdlTG9nCSh3b3JraW5nIGNvcHkpCkBAIC0x
LDMgKzEsMzggQEAKKzIwMTItMDUtMTEgIEdhdmluIEJhcnJhY2xvdWdoICA8YmFycmFjbG91Z2hA
YXBwbGUuY29tPgorCisgICAgICAgIEludHJvZHVjZSBQcm9wZXJ0eU5hbWUgY2xhc3MKKyAgICAg
ICAgaHR0cHM6Ly9idWdzLndlYmtpdC5vcmcvc2hvd19idWcuY2dpP2lkPTg2MjQxCisKKyAgICAg
ICAgUmV2aWV3ZWQgYnkgTk9CT0RZIChPT1BTISkuCisKKyAgICAgICAgUmVwbGFjZSAnY29uc3Qg
SWRlbnRpZmllciYnIGFyZ3VtZW50cyB0byBmdW5jdGlvbnMgYWNjZXNzaW5nIG9iamVjdCBwcm9w
ZXJ0aWVzIHdpdGggYSBuZXcgJ1Byb3BlcnR5TmFtZScgdHlwZS4KKyAgICAgICAgVGhpcyBjaGFu
Z2UgcGF2ZXMgdGhlIHdheSB0byBhbGxvdyBmb3IgcHJvcGVydGllcyBrZXllZCBieSB2YWx1ZXMg
dGhhdCBhcmUgbm90IElkZW50aWZpZXJzLgorCisgICAgICAgIFRoaXMgY2hhbmdlIGlzIGxhcmdl
bHkgYSBtZWNoYW5pY2FsIGZpbmQgJiByZXBsYWNlLgorICAgICAgICBJdCBhbHNvIGNoYW5nZXMg
SlNGdW5jdGlvbidzIGNvbnN0cnVjdG9yIHRvIHRha2UgYSBVU3RyaW5nJiBpbnN0ZWFkIG9mIGFu
IElkZW50aWZpZXImCisgICAgICAgIChzaW5jZSBpbiBzb21lIGNhc2VzIHdlIGNhbiBubyBsb25n
ZXIgZ3VhcmFudGVlIHRoYXQgd2UnbGxsIGhhdmUgYW4gSWRlbnRpZmllciksIGFuZAorICAgICAg
ICB1bmlmaWVzIElkZW50aWZpZXIncyBtZXRob2RzIHRvIG9idGFpbiBhcnJheSBpbmRpY2VzIG9u
dG8gUHJvcGVydHlOYW1lLgorCisgICAgICAgIFRoZSBuZXcgUHJvcGVydHlOYW1lIGNsYXNzIHJl
dGFpbnMgdGhlIGFiaWxpdHkgdG8gc3VwcG9ydCAuaW1wbCgpIGFuZCAudXN0cmluZygpLCBidXQK
KyAgICAgICAgaW4gYSBmdXR1cmUgcGF0Y2ggd2UgbWF5IG5lZWQgdG8gcmV3b3JrIHRoaXMsIHNp
bmNlIG5vdCBhbGwgUHJvcGVydHlOYW1lcyBzaG91bGQgYmUKKyAgICAgICAgZXF1YWwgYmFzZWQg
b24gdGhlaXIgc3RyaW5nIHJlcHJlc2VudGF0aW9uLgorCisgICAgICAgICogV2ViUHJvY2Vzcy9Q
bHVnaW5zL05ldHNjYXBlL0pTTlBNZXRob2QuY3BwOgorICAgICAgICAoV2ViS2l0OjpKU05QTWV0
aG9kOjpmaW5pc2hDcmVhdGlvbik6CisgICAgICAgICogV2ViUHJvY2Vzcy9QbHVnaW5zL05ldHNj
YXBlL0pTTlBNZXRob2QuaDoKKyAgICAgICAgKFdlYktpdDo6SlNOUE1ldGhvZDo6Y3JlYXRlKToK
KyAgICAgICAgKEpTTlBNZXRob2QpOgorICAgICAgICAqIFdlYlByb2Nlc3MvUGx1Z2lucy9OZXRz
Y2FwZS9KU05QT2JqZWN0LmNwcDoKKyAgICAgICAgKFdlYktpdDo6bnBJZGVudGlmaWVyRnJvbUlk
ZW50aWZpZXIpOgorICAgICAgICAoV2ViS2l0OjpKU05QT2JqZWN0OjpnZXRPd25Qcm9wZXJ0eVNs
b3QpOgorICAgICAgICAoV2ViS2l0OjpKU05QT2JqZWN0OjpnZXRPd25Qcm9wZXJ0eURlc2NyaXB0
b3IpOgorICAgICAgICAoV2ViS2l0OjpKU05QT2JqZWN0OjpwdXQpOgorICAgICAgICAoV2ViS2l0
OjpKU05QT2JqZWN0OjpkZWxldGVQcm9wZXJ0eSk6CisgICAgICAgIChXZWJLaXQ6OkpTTlBPYmpl
Y3Q6OnByb3BlcnR5R2V0dGVyKToKKyAgICAgICAgKFdlYktpdDo6SlNOUE9iamVjdDo6bWV0aG9k
R2V0dGVyKToKKyAgICAgICAgKiBXZWJQcm9jZXNzL1BsdWdpbnMvTmV0c2NhcGUvSlNOUE9iamVj
dC5oOgorICAgICAgICAoSlNOUE9iamVjdCk6CisKIDIwMTItMDUtMTEgIEd1c3Rhdm8gTm9yb25o
YSBTaWx2YSAgPGduc0Bnbm9tZS5vcmc+CiAKICAgICAgICAgUkVHUkVTU0lPTihyMTE2MjA1KTog
W0dUS106IGJ1aWxkIG5vIGxvbmdlciBzdXBwb3J0cyB0aGluIGFyY2hpdmVzCkluZGV4OiBTb3Vy
Y2UvV2ViS2l0Mi9XZWJQcm9jZXNzL1BsdWdpbnMvTmV0c2NhcGUvSlNOUE1ldGhvZC5jcHAKPT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PQotLS0gU291cmNlL1dlYktpdDIvV2ViUHJvY2Vzcy9QbHVnaW5zL05ldHNjYXBlL0pT
TlBNZXRob2QuY3BwCShyZXZpc2lvbiAxMTY2NjcpCisrKyBTb3VyY2UvV2ViS2l0Mi9XZWJQcm9j
ZXNzL1BsdWdpbnMvTmV0c2NhcGUvSlNOUE1ldGhvZC5jcHAJKHdvcmtpbmcgY29weSkKQEAgLTQ5
LDcgKzQ5LDcgQEAgSlNOUE1ldGhvZDo6SlNOUE1ldGhvZChKU0dsb2JhbE9iamVjdCogZwogewog
fQogCi12b2lkIEpTTlBNZXRob2Q6OmZpbmlzaENyZWF0aW9uKEpTR2xvYmFsRGF0YSYgZ2xvYmFs
RGF0YSwgY29uc3QgSWRlbnRpZmllciYgbmFtZSkKK3ZvaWQgSlNOUE1ldGhvZDo6ZmluaXNoQ3Jl
YXRpb24oSlNHbG9iYWxEYXRhJiBnbG9iYWxEYXRhLCBjb25zdCBVU3RyaW5nJiBuYW1lKQogewog
ICAgIEJhc2U6OmZpbmlzaENyZWF0aW9uKGdsb2JhbERhdGEsIG5hbWUpOwogICAgIEFTU0VSVChp
bmhlcml0cygmc19pbmZvKSk7CkluZGV4OiBTb3VyY2UvV2ViS2l0Mi9XZWJQcm9jZXNzL1BsdWdp
bnMvTmV0c2NhcGUvSlNOUE1ldGhvZC5oCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9XZWJLaXQyL1dl
YlByb2Nlc3MvUGx1Z2lucy9OZXRzY2FwZS9KU05QTWV0aG9kLmgJKHJldmlzaW9uIDExNjY2NykK
KysrIFNvdXJjZS9XZWJLaXQyL1dlYlByb2Nlc3MvUGx1Z2lucy9OZXRzY2FwZS9KU05QTWV0aG9k
LmgJKHdvcmtpbmcgY29weSkKQEAgLTM5LDcgKzM5LDcgQEAgY2xhc3MgSlNOUE1ldGhvZCA6IHB1
YmxpYyBKU0M6OkludGVybmFsRgogcHVibGljOgogICAgIHR5cGVkZWYgSlNDOjpJbnRlcm5hbEZ1
bmN0aW9uIEJhc2U7CiAKLSAgICBzdGF0aWMgSlNOUE1ldGhvZCogY3JlYXRlKEpTQzo6RXhlY1N0
YXRlKiBleGVjLCBKU0M6OkpTR2xvYmFsT2JqZWN0KiBnbG9iYWxPYmplY3QsIGNvbnN0IEpTQzo6
SWRlbnRpZmllciYgbmFtZSwgTlBJZGVudGlmaWVyIG5wSWRlbnQpCisgICAgc3RhdGljIEpTTlBN
ZXRob2QqIGNyZWF0ZShKU0M6OkV4ZWNTdGF0ZSogZXhlYywgSlNDOjpKU0dsb2JhbE9iamVjdCog
Z2xvYmFsT2JqZWN0LCBjb25zdCBKU0M6OlVTdHJpbmcmIG5hbWUsIE5QSWRlbnRpZmllciBucElk
ZW50KQogICAgIHsKICAgICAgICAgSlNDOjpTdHJ1Y3R1cmUqIHN0cnVjdHVyZSA9IGNyZWF0ZVN0
cnVjdHVyZShleGVjLT5nbG9iYWxEYXRhKCksIGdsb2JhbE9iamVjdCwgZ2xvYmFsT2JqZWN0LT5m
dW5jdGlvblByb3RvdHlwZSgpKTsKICAgICAgICAgSlNOUE1ldGhvZCogbWV0aG9kID0gbmV3IChK
U0M6OmFsbG9jYXRlQ2VsbDxKU05QTWV0aG9kPigqZXhlYy0+aGVhcCgpKSkgSlNOUE1ldGhvZChn
bG9iYWxPYmplY3QsIHN0cnVjdHVyZSwgbnBJZGVudCk7CkBAIC01Miw3ICs1Miw3IEBAIHB1Ymxp
YzoKICAgICBOUElkZW50aWZpZXIgbnBJZGVudGlmaWVyKCkgY29uc3QgeyByZXR1cm4gbV9ucElk
ZW50aWZpZXI7IH0KIAogcHJvdGVjdGVkOgotICAgIHZvaWQgZmluaXNoQ3JlYXRpb24oSlNDOjpK
U0dsb2JhbERhdGEmLCBjb25zdCBKU0M6OklkZW50aWZpZXImIG5hbWUpOworICAgIHZvaWQgZmlu
aXNoQ3JlYXRpb24oSlNDOjpKU0dsb2JhbERhdGEmLCBjb25zdCBKU0M6OlVTdHJpbmcmIG5hbWUp
OwogCiBwcml2YXRlOiAgICAKICAgICBKU05QTWV0aG9kKEpTQzo6SlNHbG9iYWxPYmplY3QqLCBK
U0M6OlN0cnVjdHVyZSosIE5QSWRlbnRpZmllcik7CkluZGV4OiBTb3VyY2UvV2ViS2l0Mi9XZWJQ
cm9jZXNzL1BsdWdpbnMvTmV0c2NhcGUvSlNOUE9iamVjdC5jcHAKPT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291
cmNlL1dlYktpdDIvV2ViUHJvY2Vzcy9QbHVnaW5zL05ldHNjYXBlL0pTTlBPYmplY3QuY3BwCShy
ZXZpc2lvbiAxMTY2NjcpCisrKyBTb3VyY2UvV2ViS2l0Mi9XZWJQcm9jZXNzL1BsdWdpbnMvTmV0
c2NhcGUvSlNOUE9iamVjdC5jcHAJKHdvcmtpbmcgY29weSkKQEAgLTQzLDcgKzQzLDcgQEAgdXNp
bmcgbmFtZXNwYWNlIFdlYkNvcmU7CiAKIG5hbWVzcGFjZSBXZWJLaXQgewogCi1zdGF0aWMgTlBJ
ZGVudGlmaWVyIG5wSWRlbnRpZmllckZyb21JZGVudGlmaWVyKGNvbnN0IElkZW50aWZpZXImIGlk
ZW50aWZpZXIpCitzdGF0aWMgTlBJZGVudGlmaWVyIG5wSWRlbnRpZmllckZyb21JZGVudGlmaWVy
KFByb3BlcnR5TmFtZSBpZGVudGlmaWVyKQogewogICAgIHJldHVybiBzdGF0aWNfY2FzdDxOUElk
ZW50aWZpZXI+KElkZW50aWZpZXJSZXA6OmdldChpZGVudGlmaWVyLnVzdHJpbmcoKS51dGY4KCku
ZGF0YSgpKSk7CiB9CkBAIC0yNTIsNyArMjUyLDcgQEAgQ29uc3RydWN0VHlwZSBKU05QT2JqZWN0
OjpnZXRDb25zdHJ1Y3REYQogICAgIHJldHVybiBDb25zdHJ1Y3RUeXBlSG9zdDsKIH0KIAotYm9v
bCBKU05QT2JqZWN0OjpnZXRPd25Qcm9wZXJ0eVNsb3QoSlNDZWxsKiBjZWxsLCBFeGVjU3RhdGUq
IGV4ZWMsIGNvbnN0IElkZW50aWZpZXImIHByb3BlcnR5TmFtZSwgUHJvcGVydHlTbG90JiBzbG90
KQorYm9vbCBKU05QT2JqZWN0OjpnZXRPd25Qcm9wZXJ0eVNsb3QoSlNDZWxsKiBjZWxsLCBFeGVj
U3RhdGUqIGV4ZWMsIFByb3BlcnR5TmFtZSBwcm9wZXJ0eU5hbWUsIFByb3BlcnR5U2xvdCYgc2xv
dCkKIHsKICAgICBKU05QT2JqZWN0KiB0aGlzT2JqZWN0ID0gSlNDOjpqc0Nhc3Q8SlNOUE9iamVj
dCo+KGNlbGwpOwogICAgIEFTU0VSVF9HQ19PQkpFQ1RfSU5IRVJJVFModGhpc09iamVjdCwgJnNf
aW5mbyk7CkBAIC0yNzgsNyArMjc4LDcgQEAgYm9vbCBKU05QT2JqZWN0OjpnZXRPd25Qcm9wZXJ0
eVNsb3QoSlNDZQogICAgIHJldHVybiBmYWxzZTsKIH0KIAotYm9vbCBKU05QT2JqZWN0OjpnZXRP
d25Qcm9wZXJ0eURlc2NyaXB0b3IoSlNPYmplY3QqIG9iamVjdCwgRXhlY1N0YXRlKiBleGVjLCBj
b25zdCBJZGVudGlmaWVyJiBwcm9wZXJ0eU5hbWUsIFByb3BlcnR5RGVzY3JpcHRvciYgZGVzY3Jp
cHRvcikKK2Jvb2wgSlNOUE9iamVjdDo6Z2V0T3duUHJvcGVydHlEZXNjcmlwdG9yKEpTT2JqZWN0
KiBvYmplY3QsIEV4ZWNTdGF0ZSogZXhlYywgUHJvcGVydHlOYW1lIHByb3BlcnR5TmFtZSwgUHJv
cGVydHlEZXNjcmlwdG9yJiBkZXNjcmlwdG9yKQogewogICAgIEpTTlBPYmplY3QqIHRoaXNPYmpl
Y3QgPSBqc0Nhc3Q8SlNOUE9iamVjdCo+KG9iamVjdCk7CiAgICAgQVNTRVJUX0dDX09CSkVDVF9J
TkhFUklUUyh0aGlzT2JqZWN0LCAmc19pbmZvKTsKQEAgLTMwOCw3ICszMDgsNyBAQCBib29sIEpT
TlBPYmplY3Q6OmdldE93blByb3BlcnR5RGVzY3JpcHRvCiAgICAgcmV0dXJuIGZhbHNlOwogfQog
Ci12b2lkIEpTTlBPYmplY3Q6OnB1dChKU0NlbGwqIGNlbGwsIEV4ZWNTdGF0ZSogZXhlYywgY29u
c3QgSWRlbnRpZmllciYgcHJvcGVydHlOYW1lLCBKU1ZhbHVlIHZhbHVlLCBQdXRQcm9wZXJ0eVNs
b3QmKQordm9pZCBKU05QT2JqZWN0OjpwdXQoSlNDZWxsKiBjZWxsLCBFeGVjU3RhdGUqIGV4ZWMs
IFByb3BlcnR5TmFtZSBwcm9wZXJ0eU5hbWUsIEpTVmFsdWUgdmFsdWUsIFB1dFByb3BlcnR5U2xv
dCYpCiB7CiAgICAgSlNOUE9iamVjdCogdGhpc09iamVjdCA9IEpTQzo6anNDYXN0PEpTTlBPYmpl
Y3QqPihjZWxsKTsKICAgICBBU1NFUlRfR0NfT0JKRUNUX0lOSEVSSVRTKHRoaXNPYmplY3QsICZz
X2luZm8pOwpAQCAtMzQ3LDcgKzM0Nyw3IEBAIHZvaWQgSlNOUE9iamVjdDo6cHV0KEpTQ2VsbCog
Y2VsbCwgRXhlY1MKICAgICByZWxlYXNlTlBWYXJpYW50VmFsdWUoJnZhcmlhbnQpOwogfQogCi1i
b29sIEpTTlBPYmplY3Q6OmRlbGV0ZVByb3BlcnR5KEpTQ2VsbCogY2VsbCwgRXhlY1N0YXRlKiBl
eGVjLCBjb25zdCBJZGVudGlmaWVyJiBwcm9wZXJ0eU5hbWUpCitib29sIEpTTlBPYmplY3Q6OmRl
bGV0ZVByb3BlcnR5KEpTQ2VsbCogY2VsbCwgRXhlY1N0YXRlKiBleGVjLCBQcm9wZXJ0eU5hbWUg
cHJvcGVydHlOYW1lKQogewogICAgIHJldHVybiBqc0Nhc3Q8SlNOUE9iamVjdCo+KGNlbGwpLT5k
ZWxldGVQcm9wZXJ0eShleGVjLCBucElkZW50aWZpZXJGcm9tSWRlbnRpZmllcihwcm9wZXJ0eU5h
bWUpKTsKIH0KQEAgLTQzNiw3ICs0MzYsNyBAQCB2b2lkIEpTTlBPYmplY3Q6OmdldE93blByb3Bl
cnR5TmFtZXMoSlNPCiAgICAgbnBuTWVtRnJlZShpZGVudGlmaWVycyk7CiB9CiAKLUpTVmFsdWUg
SlNOUE9iamVjdDo6cHJvcGVydHlHZXR0ZXIoRXhlY1N0YXRlKiBleGVjLCBKU1ZhbHVlIHNsb3RC
YXNlLCBjb25zdCBJZGVudGlmaWVyJiBwcm9wZXJ0eU5hbWUpCitKU1ZhbHVlIEpTTlBPYmplY3Q6
OnByb3BlcnR5R2V0dGVyKEV4ZWNTdGF0ZSogZXhlYywgSlNWYWx1ZSBzbG90QmFzZSwgUHJvcGVy
dHlOYW1lIHByb3BlcnR5TmFtZSkKIHsKICAgICBKU05QT2JqZWN0KiB0aGlzT2JqID0gc3RhdGlj
X2Nhc3Q8SlNOUE9iamVjdCo+KGFzT2JqZWN0KHNsb3RCYXNlKSk7CiAgICAgQVNTRVJUX0dDX09C
SkVDVF9JTkhFUklUUyh0aGlzT2JqLCAmc19pbmZvKTsKQEAgLTQ3Miw3ICs0NzIsNyBAQCBKU1Zh
bHVlIEpTTlBPYmplY3Q6OnByb3BlcnR5R2V0dGVyKEV4ZWNTCiAgICAgcmV0dXJuIHByb3BlcnR5
VmFsdWU7CiB9CiAKLUpTVmFsdWUgSlNOUE9iamVjdDo6bWV0aG9kR2V0dGVyKEV4ZWNTdGF0ZSog
ZXhlYywgSlNWYWx1ZSBzbG90QmFzZSwgY29uc3QgSWRlbnRpZmllciYgbWV0aG9kTmFtZSkKK0pT
VmFsdWUgSlNOUE9iamVjdDo6bWV0aG9kR2V0dGVyKEV4ZWNTdGF0ZSogZXhlYywgSlNWYWx1ZSBz
bG90QmFzZSwgUHJvcGVydHlOYW1lIG1ldGhvZE5hbWUpCiB7CiAgICAgSlNOUE9iamVjdCogdGhp
c09iaiA9IHN0YXRpY19jYXN0PEpTTlBPYmplY3QqPihhc09iamVjdChzbG90QmFzZSkpOwogICAg
IEFTU0VSVF9HQ19PQkpFQ1RfSU5IRVJJVFModGhpc09iaiwgJnNfaW5mbyk7CkBAIC00ODEsNyAr
NDgxLDcgQEAgSlNWYWx1ZSBKU05QT2JqZWN0OjptZXRob2RHZXR0ZXIoRXhlY1N0YQogICAgICAg
ICByZXR1cm4gdGhyb3dJbnZhbGlkQWNjZXNzRXJyb3IoZXhlYyk7CiAKICAgICBOUElkZW50aWZp
ZXIgbnBJZGVudGlmaWVyID0gbnBJZGVudGlmaWVyRnJvbUlkZW50aWZpZXIobWV0aG9kTmFtZSk7
Ci0gICAgcmV0dXJuIEpTTlBNZXRob2Q6OmNyZWF0ZShleGVjLCB0aGlzT2JqLT5nbG9iYWxPYmpl
Y3QoKSwgbWV0aG9kTmFtZSwgbnBJZGVudGlmaWVyKTsKKyAgICByZXR1cm4gSlNOUE1ldGhvZDo6
Y3JlYXRlKGV4ZWMsIHRoaXNPYmotPmdsb2JhbE9iamVjdCgpLCBtZXRob2ROYW1lLnVzdHJpbmco
KSwgbnBJZGVudGlmaWVyKTsKIH0KIAogSlNPYmplY3QqIEpTTlBPYmplY3Q6OnRocm93SW52YWxp
ZEFjY2Vzc0Vycm9yKEV4ZWNTdGF0ZSogZXhlYykKSW5kZXg6IFNvdXJjZS9XZWJLaXQyL1dlYlBy
b2Nlc3MvUGx1Z2lucy9OZXRzY2FwZS9KU05QT2JqZWN0LmgKPT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNl
L1dlYktpdDIvV2ViUHJvY2Vzcy9QbHVnaW5zL05ldHNjYXBlL0pTTlBPYmplY3QuaAkocmV2aXNp
b24gMTE2NjY3KQorKysgU291cmNlL1dlYktpdDIvV2ViUHJvY2Vzcy9QbHVnaW5zL05ldHNjYXBl
L0pTTlBPYmplY3QuaAkod29ya2luZyBjb3B5KQpAQCAtODMsMTkgKzgzLDE5IEBAIHByaXZhdGU6
CiAgICAgc3RhdGljIEpTQzo6Q2FsbFR5cGUgZ2V0Q2FsbERhdGEoSlNDOjpKU0NlbGwqLCBKU0M6
OkNhbGxEYXRhJik7CiAgICAgc3RhdGljIEpTQzo6Q29uc3RydWN0VHlwZSBnZXRDb25zdHJ1Y3RE
YXRhKEpTQzo6SlNDZWxsKiwgSlNDOjpDb25zdHJ1Y3REYXRhJik7CiAKLSAgICBzdGF0aWMgYm9v
bCBnZXRPd25Qcm9wZXJ0eVNsb3QoSlNDOjpKU0NlbGwqLCBKU0M6OkV4ZWNTdGF0ZSosIGNvbnN0
IEpTQzo6SWRlbnRpZmllciYgcHJvcGVydHlOYW1lLCBKU0M6OlByb3BlcnR5U2xvdCYpOwotICAg
IHN0YXRpYyBib29sIGdldE93blByb3BlcnR5RGVzY3JpcHRvcihKU0M6OkpTT2JqZWN0KiwgSlND
OjpFeGVjU3RhdGUqLCBjb25zdCBKU0M6OklkZW50aWZpZXImIHByb3BlcnR5TmFtZSwgSlNDOjpQ
cm9wZXJ0eURlc2NyaXB0b3ImKTsKLSAgICBzdGF0aWMgdm9pZCBwdXQoSlNDOjpKU0NlbGwqLCBK
U0M6OkV4ZWNTdGF0ZSosIGNvbnN0IEpTQzo6SWRlbnRpZmllciYgcHJvcGVydHlOYW1lLCBKU0M6
OkpTVmFsdWUsIEpTQzo6UHV0UHJvcGVydHlTbG90Jik7CisgICAgc3RhdGljIGJvb2wgZ2V0T3du
UHJvcGVydHlTbG90KEpTQzo6SlNDZWxsKiwgSlNDOjpFeGVjU3RhdGUqLCBKU0M6OlByb3BlcnR5
TmFtZSwgSlNDOjpQcm9wZXJ0eVNsb3QmKTsKKyAgICBzdGF0aWMgYm9vbCBnZXRPd25Qcm9wZXJ0
eURlc2NyaXB0b3IoSlNDOjpKU09iamVjdCosIEpTQzo6RXhlY1N0YXRlKiwgSlNDOjpQcm9wZXJ0
eU5hbWUsIEpTQzo6UHJvcGVydHlEZXNjcmlwdG9yJik7CisgICAgc3RhdGljIHZvaWQgcHV0KEpT
Qzo6SlNDZWxsKiwgSlNDOjpFeGVjU3RhdGUqLCBKU0M6OlByb3BlcnR5TmFtZSwgSlNDOjpKU1Zh
bHVlLCBKU0M6OlB1dFByb3BlcnR5U2xvdCYpOwogCi0gICAgc3RhdGljIGJvb2wgZGVsZXRlUHJv
cGVydHkoSlNDOjpKU0NlbGwqLCBKU0M6OkV4ZWNTdGF0ZSosIGNvbnN0IEpTQzo6SWRlbnRpZmll
ciYgcHJvcGVydHlOYW1lKTsKKyAgICBzdGF0aWMgYm9vbCBkZWxldGVQcm9wZXJ0eShKU0M6OkpT
Q2VsbCosIEpTQzo6RXhlY1N0YXRlKiwgSlNDOjpQcm9wZXJ0eU5hbWUpOwogICAgIHN0YXRpYyBi
b29sIGRlbGV0ZVByb3BlcnR5QnlJbmRleChKU0M6OkpTQ2VsbCosIEpTQzo6RXhlY1N0YXRlKiwg
dW5zaWduZWQgcHJvcGVydHlOYW1lKTsKIAogICAgIGJvb2wgZGVsZXRlUHJvcGVydHkoSlNDOjpF
eGVjU3RhdGUqLCBOUElkZW50aWZpZXIgcHJvcGVydHlOYW1lKTsKIAogICAgIHN0YXRpYyB2b2lk
IGdldE93blByb3BlcnR5TmFtZXMoSlNDOjpKU09iamVjdCosIEpTQzo6RXhlY1N0YXRlKiwgSlND
OjpQcm9wZXJ0eU5hbWVBcnJheSYsIEpTQzo6RW51bWVyYXRpb25Nb2RlKTsKIAotICAgIHN0YXRp
YyBKU0M6OkpTVmFsdWUgcHJvcGVydHlHZXR0ZXIoSlNDOjpFeGVjU3RhdGUqLCBKU0M6OkpTVmFs
dWUsIGNvbnN0IEpTQzo6SWRlbnRpZmllciYpOwotICAgIHN0YXRpYyBKU0M6OkpTVmFsdWUgbWV0
aG9kR2V0dGVyKEpTQzo6RXhlY1N0YXRlKiwgSlNDOjpKU1ZhbHVlLCBjb25zdCBKU0M6OklkZW50
aWZpZXImKTsKKyAgICBzdGF0aWMgSlNDOjpKU1ZhbHVlIHByb3BlcnR5R2V0dGVyKEpTQzo6RXhl
Y1N0YXRlKiwgSlNDOjpKU1ZhbHVlLCBKU0M6OlByb3BlcnR5TmFtZSk7CisgICAgc3RhdGljIEpT
Qzo6SlNWYWx1ZSBtZXRob2RHZXR0ZXIoSlNDOjpFeGVjU3RhdGUqLCBKU0M6OkpTVmFsdWUsIEpT
Qzo6UHJvcGVydHlOYW1lKTsKICAgICBzdGF0aWMgSlNDOjpKU09iamVjdCogdGhyb3dJbnZhbGlk
QWNjZXNzRXJyb3IoSlNDOjpFeGVjU3RhdGUqKTsKIAogICAgIE5QUnVudGltZU9iamVjdE1hcCog
bV9vYmplY3RNYXA7CkluZGV4OiBTb3VyY2UvV2ViS2l0L21hYy9DaGFuZ2VMb2cKPT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PQotLS0gU291cmNlL1dlYktpdC9tYWMvQ2hhbmdlTG9nCShyZXZpc2lvbiAxMTY3OTIpCisrKyBT
b3VyY2UvV2ViS2l0L21hYy9DaGFuZ2VMb2cJKHdvcmtpbmcgY29weSkKQEAgLTEsMyArMSwzNCBA
QAorMjAxMi0wNS0xMSAgR2F2aW4gQmFycmFjbG91Z2ggIDxiYXJyYWNsb3VnaEBhcHBsZS5jb20+
CisKKyAgICAgICAgSW50cm9kdWNlIFByb3BlcnR5TmFtZSBjbGFzcworICAgICAgICBodHRwczov
L2J1Z3Mud2Via2l0Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9ODYyNDEKKworICAgICAgICBSZXZpZXdl
ZCBieSBOT0JPRFkgKE9PUFMhKS4KKworICAgICAgICBSZXBsYWNlICdjb25zdCBJZGVudGlmaWVy
JicgYXJndW1lbnRzIHRvIGZ1bmN0aW9ucyBhY2Nlc3Npbmcgb2JqZWN0IHByb3BlcnRpZXMgd2l0
aCBhIG5ldyAnUHJvcGVydHlOYW1lJyB0eXBlLgorICAgICAgICBUaGlzIGNoYW5nZSBwYXZlcyB0
aGUgd2F5IHRvIGFsbG93IGZvciBwcm9wZXJ0aWVzIGtleWVkIGJ5IHZhbHVlcyB0aGF0IGFyZSBu
b3QgSWRlbnRpZmllcnMuCisKKyAgICAgICAgVGhpcyBjaGFuZ2UgaXMgbGFyZ2VseSBhIG1lY2hh
bmljYWwgZmluZCAmIHJlcGxhY2UuCisgICAgICAgIEl0IGFsc28gY2hhbmdlcyBKU0Z1bmN0aW9u
J3MgY29uc3RydWN0b3IgdG8gdGFrZSBhIFVTdHJpbmcmIGluc3RlYWQgb2YgYW4gSWRlbnRpZmll
ciYKKyAgICAgICAgKHNpbmNlIGluIHNvbWUgY2FzZXMgd2UgY2FuIG5vIGxvbmdlciBndWFyYW50
ZWUgdGhhdCB3ZSdsbGwgaGF2ZSBhbiBJZGVudGlmaWVyKSwgYW5kCisgICAgICAgIHVuaWZpZXMg
SWRlbnRpZmllcidzIG1ldGhvZHMgdG8gb2J0YWluIGFycmF5IGluZGljZXMgb250byBQcm9wZXJ0
eU5hbWUuCisKKyAgICAgICAgVGhlIG5ldyBQcm9wZXJ0eU5hbWUgY2xhc3MgcmV0YWlucyB0aGUg
YWJpbGl0eSB0byBzdXBwb3J0IC5pbXBsKCkgYW5kIC51c3RyaW5nKCksIGJ1dAorICAgICAgICBp
biBhIGZ1dHVyZSBwYXRjaCB3ZSBtYXkgbmVlZCB0byByZXdvcmsgdGhpcywgc2luY2Ugbm90IGFs
bCBQcm9wZXJ0eU5hbWVzIHNob3VsZCBiZQorICAgICAgICBlcXVhbCBiYXNlZCBvbiB0aGVpciBz
dHJpbmcgcmVwcmVzZW50YXRpb24uCisKKyAgICAgICAgKiBQbHVnaW5zL0hvc3RlZC9Qcm94eUlu
c3RhbmNlLmg6CisgICAgICAgIChQcm94eUluc3RhbmNlKToKKyAgICAgICAgKiBQbHVnaW5zL0hv
c3RlZC9Qcm94eUluc3RhbmNlLm1tOgorICAgICAgICAoUHJveHlDbGFzcyk6CisgICAgICAgIChX
ZWJLaXQ6OlByb3h5Q2xhc3M6Om1ldGhvZHNOYW1lZCk6CisgICAgICAgIChXZWJLaXQ6OlByb3h5
Q2xhc3M6OmZpZWxkTmFtZWQpOgorICAgICAgICAoV2ViS2l0OjpQcm94eVJ1bnRpbWVNZXRob2Q6
OmNyZWF0ZSk6CisgICAgICAgIChXZWJLaXQ6OlByb3h5UnVudGltZU1ldGhvZDo6ZmluaXNoQ3Jl
YXRpb24pOgorICAgICAgICAoV2ViS2l0OjpQcm94eUluc3RhbmNlOjpnZXRNZXRob2QpOgorICAg
ICAgICAoV2ViS2l0OjpQcm94eUluc3RhbmNlOjptZXRob2RzTmFtZWQpOgorICAgICAgICAoV2Vi
S2l0OjpQcm94eUluc3RhbmNlOjpmaWVsZE5hbWVkKToKKwogMjAxMi0wNS0xMCAgR3l1eW91bmcg
S2ltICA8Z3l1eW91bmcua2ltQHNhbXN1bmcuY29tPgogCiAgICAgICAgIE1vdmUgcmVzdW1lQW5p
bWF0aW9ucyB0byB1c2UgSW50ZXJuYWxzIGludGVyZmFjZQpJbmRleDogU291cmNlL1dlYktpdC9t
YWMvUGx1Z2lucy9Ib3N0ZWQvUHJveHlJbnN0YW5jZS5oCj09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9X
ZWJLaXQvbWFjL1BsdWdpbnMvSG9zdGVkL1Byb3h5SW5zdGFuY2UuaAkocmV2aXNpb24gMTE2NjY3
KQorKysgU291cmNlL1dlYktpdC9tYWMvUGx1Z2lucy9Ib3N0ZWQvUHJveHlJbnN0YW5jZS5oCSh3
b3JraW5nIGNvcHkpCkBAIC00Niw4ICs0Niw4IEBAIHB1YmxpYzoKICAgICB9CiAgICAgflByb3h5
SW5zdGFuY2UoKTsKIAotICAgIEpTQzo6QmluZGluZ3M6Ok1ldGhvZExpc3QgbWV0aG9kc05hbWVk
KGNvbnN0IEpTQzo6SWRlbnRpZmllciYpOwotICAgIEpTQzo6QmluZGluZ3M6OkZpZWxkKiBmaWVs
ZE5hbWVkKGNvbnN0IEpTQzo6SWRlbnRpZmllciYpOworICAgIEpTQzo6QmluZGluZ3M6Ok1ldGhv
ZExpc3QgbWV0aG9kc05hbWVkKEpTQzo6UHJvcGVydHlOYW1lKTsKKyAgICBKU0M6OkJpbmRpbmdz
OjpGaWVsZCogZmllbGROYW1lZChKU0M6OlByb3BlcnR5TmFtZSk7CiAKICAgICBKU0M6OkpTVmFs
dWUgZmllbGRWYWx1ZShKU0M6OkV4ZWNTdGF0ZSosIGNvbnN0IEpTQzo6QmluZGluZ3M6OkZpZWxk
KikgY29uc3Q7CiAgICAgdm9pZCBzZXRGaWVsZFZhbHVlKEpTQzo6RXhlY1N0YXRlKiwgY29uc3Qg
SlNDOjpCaW5kaW5nczo6RmllbGQqLCBKU0M6OkpTVmFsdWUpIGNvbnN0OwpAQCAtNjYsNyArNjYs
NyBAQCBwcml2YXRlOgogCiAgICAgdmlydHVhbCBKU0M6OkJpbmRpbmdzOjpDbGFzcyogZ2V0Q2xh
c3MoKSBjb25zdDsKIAotICAgIHZpcnR1YWwgSlNDOjpKU1ZhbHVlIGdldE1ldGhvZChKU0M6OkV4
ZWNTdGF0ZSogZXhlYywgY29uc3QgSlNDOjpJZGVudGlmaWVyJiBwcm9wZXJ0eU5hbWUpOworICAg
IHZpcnR1YWwgSlNDOjpKU1ZhbHVlIGdldE1ldGhvZChKU0M6OkV4ZWNTdGF0ZSosIEpTQzo6UHJv
cGVydHlOYW1lKTsKICAgICB2aXJ0dWFsIEpTQzo6SlNWYWx1ZSBpbnZva2VNZXRob2QoSlNDOjpF
eGVjU3RhdGUqLCBKU0M6OlJ1bnRpbWVNZXRob2QqKTsKIAogICAgIHZpcnR1YWwgYm9vbCBzdXBw
b3J0c0ludm9rZURlZmF1bHRNZXRob2QoKSBjb25zdDsKSW5kZXg6IFNvdXJjZS9XZWJLaXQvbWFj
L1BsdWdpbnMvSG9zdGVkL1Byb3h5SW5zdGFuY2UubW0KPT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL1dl
YktpdC9tYWMvUGx1Z2lucy9Ib3N0ZWQvUHJveHlJbnN0YW5jZS5tbQkocmV2aXNpb24gMTE2NjY3
KQorKysgU291cmNlL1dlYktpdC9tYWMvUGx1Z2lucy9Ib3N0ZWQvUHJveHlJbnN0YW5jZS5tbQko
d29ya2luZyBjb3B5KQpAQCAtNTAsMTYgKzUwLDE2IEBAIG5hbWVzcGFjZSBXZWJLaXQgewogCiBj
bGFzcyBQcm94eUNsYXNzIDogcHVibGljIEpTQzo6QmluZGluZ3M6OkNsYXNzIHsKIHByaXZhdGU6
Ci0gICAgdmlydHVhbCBNZXRob2RMaXN0IG1ldGhvZHNOYW1lZChjb25zdCBJZGVudGlmaWVyJiwg
SW5zdGFuY2UqKSBjb25zdDsKLSAgICB2aXJ0dWFsIEZpZWxkKiBmaWVsZE5hbWVkKGNvbnN0IElk
ZW50aWZpZXImLCBJbnN0YW5jZSopIGNvbnN0OworICAgIHZpcnR1YWwgTWV0aG9kTGlzdCBtZXRo
b2RzTmFtZWQoUHJvcGVydHlOYW1lLCBJbnN0YW5jZSopIGNvbnN0OworICAgIHZpcnR1YWwgRmll
bGQqIGZpZWxkTmFtZWQoUHJvcGVydHlOYW1lLCBJbnN0YW5jZSopIGNvbnN0OwogfTsKIAotTWV0
aG9kTGlzdCBQcm94eUNsYXNzOjptZXRob2RzTmFtZWQoY29uc3QgSWRlbnRpZmllciYgaWRlbnRp
ZmllciwgSW5zdGFuY2UqIGluc3RhbmNlKSBjb25zdAorTWV0aG9kTGlzdCBQcm94eUNsYXNzOjpt
ZXRob2RzTmFtZWQoUHJvcGVydHlOYW1lIGlkZW50aWZpZXIsIEluc3RhbmNlKiBpbnN0YW5jZSkg
Y29uc3QKIHsKICAgICByZXR1cm4gc3RhdGljX2Nhc3Q8UHJveHlJbnN0YW5jZSo+KGluc3RhbmNl
KS0+bWV0aG9kc05hbWVkKGlkZW50aWZpZXIpOwogfQogCi1GaWVsZCogUHJveHlDbGFzczo6Zmll
bGROYW1lZChjb25zdCBJZGVudGlmaWVyJiBpZGVudGlmaWVyLCBJbnN0YW5jZSogaW5zdGFuY2Up
IGNvbnN0CitGaWVsZCogUHJveHlDbGFzczo6ZmllbGROYW1lZChQcm9wZXJ0eU5hbWUgaWRlbnRp
ZmllciwgSW5zdGFuY2UqIGluc3RhbmNlKSBjb25zdAogewogICAgIHJldHVybiBzdGF0aWNfY2Fz
dDxQcm94eUluc3RhbmNlKj4oaW5zdGFuY2UpLT5maWVsZE5hbWVkKGlkZW50aWZpZXIpOwogfQpA
QCAtMTgxLDcgKzE4MSw3IEBAIGNsYXNzIFByb3h5UnVudGltZU1ldGhvZCA6IHB1YmxpYyBSdW50
aW0KIHB1YmxpYzoKICAgICB0eXBlZGVmIFJ1bnRpbWVNZXRob2QgQmFzZTsKIAotICAgIHN0YXRp
YyBQcm94eVJ1bnRpbWVNZXRob2QqIGNyZWF0ZShFeGVjU3RhdGUqIGV4ZWMsIEpTR2xvYmFsT2Jq
ZWN0KiBnbG9iYWxPYmplY3QsIGNvbnN0IElkZW50aWZpZXImIG5hbWUsIEJpbmRpbmdzOjpNZXRo
b2RMaXN0JiBsaXN0KQorICAgIHN0YXRpYyBQcm94eVJ1bnRpbWVNZXRob2QqIGNyZWF0ZShFeGVj
U3RhdGUqIGV4ZWMsIEpTR2xvYmFsT2JqZWN0KiBnbG9iYWxPYmplY3QsIGNvbnN0IFVTdHJpbmcm
IG5hbWUsIEJpbmRpbmdzOjpNZXRob2RMaXN0JiBsaXN0KQogICAgIHsKICAgICAgICAgLy8gRklY
TUU6IGRlcHJlY2F0ZWRHZXRET01TdHJ1Y3R1cmUgdXNlcyB0aGUgcHJvdG90eXBlIG9mZiBvZiB0
aGUgd3JvbmcgZ2xvYmFsIG9iamVjdAogICAgICAgICAvLyBleGVjLWdsb2JhbERhdGEoKSBpcyBh
bHNvIGxpa2VseSB3cm9uZy4KQEAgLTIwNCw3ICsyMDQsNyBAQCBwcml2YXRlOgogICAgIHsKICAg
ICB9CiAKLSAgICB2b2lkIGZpbmlzaENyZWF0aW9uKEpTR2xvYmFsRGF0YSYgZ2xvYmFsRGF0YSwg
Y29uc3QgSWRlbnRpZmllciYgbmFtZSkKKyAgICB2b2lkIGZpbmlzaENyZWF0aW9uKEpTR2xvYmFs
RGF0YSYgZ2xvYmFsRGF0YSwgY29uc3QgVVN0cmluZyYgbmFtZSkKICAgICB7CiAgICAgICAgIEJh
c2U6OmZpbmlzaENyZWF0aW9uKGdsb2JhbERhdGEsIG5hbWUpOwogICAgICAgICBBU1NFUlQoaW5o
ZXJpdHMoJnNfaW5mbykpOwpAQCAtMjEzLDEwICsyMTMsMTAgQEAgcHJpdmF0ZToKIAogY29uc3Qg
Q2xhc3NJbmZvIFByb3h5UnVudGltZU1ldGhvZDo6c19pbmZvID0geyAiUHJveHlSdW50aW1lTWV0
aG9kIiwgJlJ1bnRpbWVNZXRob2Q6OnNfaW5mbywgMCwgMCwgQ1JFQVRFX01FVEhPRF9UQUJMRShQ
cm94eVJ1bnRpbWVNZXRob2QpIH07CiAKLUpTVmFsdWUgUHJveHlJbnN0YW5jZTo6Z2V0TWV0aG9k
KEpTQzo6RXhlY1N0YXRlKiBleGVjLCBjb25zdCBKU0M6OklkZW50aWZpZXImIHByb3BlcnR5TmFt
ZSkKK0pTVmFsdWUgUHJveHlJbnN0YW5jZTo6Z2V0TWV0aG9kKEpTQzo6RXhlY1N0YXRlKiBleGVj
LCBQcm9wZXJ0eU5hbWUgcHJvcGVydHlOYW1lKQogewogICAgIE1ldGhvZExpc3QgbWV0aG9kTGlz
dCA9IGdldENsYXNzKCktPm1ldGhvZHNOYW1lZChwcm9wZXJ0eU5hbWUsIHRoaXMpOwotICAgIHJl
dHVybiBQcm94eVJ1bnRpbWVNZXRob2Q6OmNyZWF0ZShleGVjLCBleGVjLT5sZXhpY2FsR2xvYmFs
T2JqZWN0KCksIHByb3BlcnR5TmFtZSwgbWV0aG9kTGlzdCk7CisgICAgcmV0dXJuIFByb3h5UnVu
dGltZU1ldGhvZDo6Y3JlYXRlKGV4ZWMsIGV4ZWMtPmxleGljYWxHbG9iYWxPYmplY3QoKSwgcHJv
cGVydHlOYW1lLmltcGwoKSwgbWV0aG9kTGlzdCk7CiB9CiAKIEpTVmFsdWUgUHJveHlJbnN0YW5j
ZTo6aW52b2tlTWV0aG9kKEV4ZWNTdGF0ZSogZXhlYywgSlNDOjpSdW50aW1lTWV0aG9kKiBydW50
aW1lTWV0aG9kKQpAQCAtMzQ2LDcgKzM0Niw3IEBAIHZvaWQgUHJveHlJbnN0YW5jZTo6Z2V0UHJv
cGVydHlOYW1lcyhFeGUKICAgICB9CiB9CiAKLU1ldGhvZExpc3QgUHJveHlJbnN0YW5jZTo6bWV0
aG9kc05hbWVkKGNvbnN0IElkZW50aWZpZXImIGlkZW50aWZpZXIpCitNZXRob2RMaXN0IFByb3h5
SW5zdGFuY2U6Om1ldGhvZHNOYW1lZChQcm9wZXJ0eU5hbWUgaWRlbnRpZmllcikKIHsKICAgICBp
ZiAoIW1faW5zdGFuY2VQcm94eSkKICAgICAgICAgcmV0dXJuIE1ldGhvZExpc3QoKTsKQEAgLTM2
MCw3ICszNjAsNyBAQCBNZXRob2RMaXN0IFByb3h5SW5zdGFuY2U6Om1ldGhvZHNOYW1lZChjCiAg
ICAgICAgIHJldHVybiBtZXRob2RMaXN0OwogICAgIH0KICAgICAKLSAgICB1aW50NjRfdCBtZXRo
b2ROYW1lID0gcmVpbnRlcnByZXRfY2FzdDx1aW50NjRfdD4oX05QTl9HZXRTdHJpbmdJZGVudGlm
aWVyKGlkZW50aWZpZXIuYXNjaWkoKS5kYXRhKCkpKTsKKyAgICB1aW50NjRfdCBtZXRob2ROYW1l
ID0gcmVpbnRlcnByZXRfY2FzdDx1aW50NjRfdD4oX05QTl9HZXRTdHJpbmdJZGVudGlmaWVyKGlk
ZW50aWZpZXIudXN0cmluZygpLmFzY2lpKCkuZGF0YSgpKSk7CiAgICAgdWludDMyX3QgcmVxdWVz
dElEID0gbV9pbnN0YW5jZVByb3h5LT5uZXh0UmVxdWVzdElEKCk7CiAgICAgCiAgICAgaWYgKF9X
S1BITlBPYmplY3RIYXNNZXRob2QobV9pbnN0YW5jZVByb3h5LT5ob3N0UHJveHkoKS0+cG9ydCgp
LApAQCAtMzg2LDcgKzM4Niw3IEBAIE1ldGhvZExpc3QgUHJveHlJbnN0YW5jZTo6bWV0aG9kc05h
bWVkKGMKICAgICByZXR1cm4gbWV0aG9kTGlzdDsKIH0KIAotRmllbGQqIFByb3h5SW5zdGFuY2U6
OmZpZWxkTmFtZWQoY29uc3QgSWRlbnRpZmllciYgaWRlbnRpZmllcikKK0ZpZWxkKiBQcm94eUlu
c3RhbmNlOjpmaWVsZE5hbWVkKFByb3BlcnR5TmFtZSBpZGVudGlmaWVyKQogewogICAgIGlmICgh
bV9pbnN0YW5jZVByb3h5KQogICAgICAgICByZXR1cm4gMDsKQEAgLTM5Niw3ICszOTYsNyBAQCBG
aWVsZCogUHJveHlJbnN0YW5jZTo6ZmllbGROYW1lZChjb25zdCBJCiAgICAgaWYgKGV4aXN0aW5n
TWFwRW50cnkgIT0gbV9maWVsZHMuZW5kKCkpCiAgICAgICAgIHJldHVybiBleGlzdGluZ01hcEVu
dHJ5LT5zZWNvbmQ7CiAgICAgCi0gICAgdWludDY0X3QgcHJvcGVydHlOYW1lID0gcmVpbnRlcnBy
ZXRfY2FzdDx1aW50NjRfdD4oX05QTl9HZXRTdHJpbmdJZGVudGlmaWVyKGlkZW50aWZpZXIuYXNj
aWkoKS5kYXRhKCkpKTsKKyAgICB1aW50NjRfdCBwcm9wZXJ0eU5hbWUgPSByZWludGVycHJldF9j
YXN0PHVpbnQ2NF90PihfTlBOX0dldFN0cmluZ0lkZW50aWZpZXIoaWRlbnRpZmllci51c3RyaW5n
KCkuYXNjaWkoKS5kYXRhKCkpKTsKICAgICB1aW50MzJfdCByZXF1ZXN0SUQgPSBtX2luc3RhbmNl
UHJveHktPm5leHRSZXF1ZXN0SUQoKTsKICAgICAKICAgICBpZiAoX1dLUEhOUE9iamVjdEhhc1By
b3BlcnR5KG1faW5zdGFuY2VQcm94eS0+aG9zdFByb3h5KCktPnBvcnQoKSwK
</data>

          </attachment>
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>141488</attachid>
            <date>2012-05-11 13:45:05 -0700</date>
            <delta_ts>2012-05-11 14:13:26 -0700</delta_ts>
            <desc>more stylebot fixes</desc>
            <filename>PropertyName.6.patch</filename>
            <type>text/plain</type>
            <size>429815</size>
            <attacher name="Gavin Barraclough">barraclough</attacher>
            
              <data encoding="base64">SW5kZXg6IFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9DaGFuZ2VMb2cKPT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291
cmNlL0phdmFTY3JpcHRDb3JlL0NoYW5nZUxvZwkocmV2aXNpb24gMTE2NzkyKQorKysgU291cmNl
L0phdmFTY3JpcHRDb3JlL0NoYW5nZUxvZwkod29ya2luZyBjb3B5KQpAQCAtMSwzICsxLDM4OCBA
QAorMjAxMi0wNS0xMSAgR2F2aW4gQmFycmFjbG91Z2ggIDxiYXJyYWNsb3VnaEBhcHBsZS5jb20+
CisKKyAgICAgICAgSW50cm9kdWNlIFByb3BlcnR5TmFtZSBjbGFzcworICAgICAgICBodHRwczov
L2J1Z3Mud2Via2l0Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9ODYyNDEKKworICAgICAgICBSZXZpZXdl
ZCBieSBOT0JPRFkgKE9PUFMhKS4KKworICAgICAgICBSZXBsYWNlICdjb25zdCBJZGVudGlmaWVy
JicgYXJndW1lbnRzIHRvIGZ1bmN0aW9ucyBhY2Nlc3Npbmcgb2JqZWN0IHByb3BlcnRpZXMgd2l0
aCBhIG5ldyAnUHJvcGVydHlOYW1lJyB0eXBlLgorICAgICAgICBUaGlzIGNoYW5nZSBwYXZlcyB0
aGUgd2F5IHRvIGFsbG93IGZvciBwcm9wZXJ0aWVzIGtleWVkIGJ5IHZhbHVlcyB0aGF0IGFyZSBu
b3QgSWRlbnRpZmllcnMuCisKKyAgICAgICAgVGhpcyBjaGFuZ2UgaXMgbGFyZ2VseSBhIG1lY2hh
bmljYWwgZmluZCAmIHJlcGxhY2UuCisgICAgICAgIEl0IGFsc28gY2hhbmdlcyBKU0Z1bmN0aW9u
J3MgY29uc3RydWN0b3IgdG8gdGFrZSBhIFVTdHJpbmcmIGluc3RlYWQgb2YgYW4gSWRlbnRpZmll
ciYKKyAgICAgICAgKHNpbmNlIGluIHNvbWUgY2FzZXMgd2UgY2FuIG5vIGxvbmdlciBndWFyYW50
ZWUgdGhhdCB3ZSdsbGwgaGF2ZSBhbiBJZGVudGlmaWVyKSwgYW5kCisgICAgICAgIHVuaWZpZXMg
SWRlbnRpZmllcidzIG1ldGhvZHMgdG8gb2J0YWluIGFycmF5IGluZGljZXMgb250byBQcm9wZXJ0
eU5hbWUuCisKKyAgICAgICAgVGhlIG5ldyBQcm9wZXJ0eU5hbWUgY2xhc3MgcmV0YWlucyB0aGUg
YWJpbGl0eSB0byBzdXBwb3J0IC5pbXBsKCkgYW5kIC51c3RyaW5nKCksIGJ1dAorICAgICAgICBp
biBhIGZ1dHVyZSBwYXRjaCB3ZSBtYXkgbmVlZCB0byByZXdvcmsgdGhpcywgc2luY2Ugbm90IGFs
bCBQcm9wZXJ0eU5hbWVzIHNob3VsZCBiZQorICAgICAgICBlcXVhbCBiYXNlZCBvbiB0aGVpciBz
dHJpbmcgcmVwcmVzZW50YXRpb24uCisKKyAgICAgICAgKiBBUEkvSlNDYWxsYmFja0Z1bmN0aW9u
LmNwcDoKKyAgICAgICAgKEpTQzo6SlNDYWxsYmFja0Z1bmN0aW9uOjpmaW5pc2hDcmVhdGlvbik6
CisgICAgICAgICogQVBJL0pTQ2FsbGJhY2tGdW5jdGlvbi5oOgorICAgICAgICAoSlNDYWxsYmFj
a0Z1bmN0aW9uKToKKyAgICAgICAgKEpTQzo6SlNDYWxsYmFja0Z1bmN0aW9uOjpjcmVhdGUpOgor
ICAgICAgICAqIEFQSS9KU0NhbGxiYWNrT2JqZWN0Lmg6CisgICAgICAgIChKU0NhbGxiYWNrT2Jq
ZWN0KToKKyAgICAgICAgKiBBUEkvSlNDYWxsYmFja09iamVjdEZ1bmN0aW9ucy5oOgorICAgICAg
ICAoSlNDOjo6OmdldE93blByb3BlcnR5U2xvdCk6CisgICAgICAgIChKU0M6Ojo6Z2V0T3duUHJv
cGVydHlEZXNjcmlwdG9yKToKKyAgICAgICAgKEpTQzo6OjpwdXQpOgorICAgICAgICAoSlNDOjo6
OmRlbGV0ZVByb3BlcnR5KToKKyAgICAgICAgKEpTQzo6OjpnZXRTdGF0aWNWYWx1ZSk6CisgICAg
ICAgIChKU0M6Ojo6c3RhdGljRnVuY3Rpb25HZXR0ZXIpOgorICAgICAgICAoSlNDOjo6OmNhbGxi
YWNrR2V0dGVyKToKKyAgICAgICAgKiBBUEkvSlNPYmplY3RSZWYuY3BwOgorICAgICAgICAoSlNP
YmplY3RNYWtlRnVuY3Rpb25XaXRoQ2FsbGJhY2spOgorICAgICAgICAqIEpTQ1R5cGVkQXJyYXlT
dHVicy5oOgorICAgICAgICAoSlNDKToKKyAgICAgICAgKiBKYXZhU2NyaXB0Q29yZS54Y29kZXBy
b2ovcHJvamVjdC5wYnhwcm9qOgorICAgICAgICAqIGRlYnVnZ2VyL0RlYnVnZ2VyQWN0aXZhdGlv
bi5jcHA6CisgICAgICAgIChKU0M6OkRlYnVnZ2VyQWN0aXZhdGlvbjo6Z2V0T3duUHJvcGVydHlT
bG90KToKKyAgICAgICAgKEpTQzo6RGVidWdnZXJBY3RpdmF0aW9uOjpwdXQpOgorICAgICAgICAo
SlNDOjpEZWJ1Z2dlckFjdGl2YXRpb246OnB1dERpcmVjdFZpcnR1YWwpOgorICAgICAgICAoSlND
OjpEZWJ1Z2dlckFjdGl2YXRpb246OmRlbGV0ZVByb3BlcnR5KToKKyAgICAgICAgKEpTQzo6RGVi
dWdnZXJBY3RpdmF0aW9uOjpnZXRPd25Qcm9wZXJ0eURlc2NyaXB0b3IpOgorICAgICAgICAoSlND
OjpEZWJ1Z2dlckFjdGl2YXRpb246OmRlZmluZU93blByb3BlcnR5KToKKyAgICAgICAgKiBkZWJ1
Z2dlci9EZWJ1Z2dlckFjdGl2YXRpb24uaDoKKyAgICAgICAgKERlYnVnZ2VyQWN0aXZhdGlvbik6
CisgICAgICAgICoganNjLmNwcDoKKyAgICAgICAgKEdsb2JhbE9iamVjdDo6YWRkRnVuY3Rpb24p
OgorICAgICAgICAoR2xvYmFsT2JqZWN0OjphZGRDb25zdHJ1Y3RhYmxlRnVuY3Rpb24pOgorICAg
ICAgICAqIHJ1bnRpbWUvQXJndW1lbnRzLmNwcDoKKyAgICAgICAgKEpTQzo6QXJndW1lbnRzOjpn
ZXRPd25Qcm9wZXJ0eVNsb3QpOgorICAgICAgICAoSlNDOjpBcmd1bWVudHM6OmdldE93blByb3Bl
cnR5RGVzY3JpcHRvcik6CisgICAgICAgIChKU0M6OkFyZ3VtZW50czo6cHV0KToKKyAgICAgICAg
KEpTQzo6QXJndW1lbnRzOjpkZWxldGVQcm9wZXJ0eSk6CisgICAgICAgIChKU0M6OkFyZ3VtZW50
czo6ZGVmaW5lT3duUHJvcGVydHkpOgorICAgICAgICAqIHJ1bnRpbWUvQXJndW1lbnRzLmg6Cisg
ICAgICAgIChBcmd1bWVudHMpOgorICAgICAgICAqIHJ1bnRpbWUvQXJyYXlDb25zdHJ1Y3Rvci5j
cHA6CisgICAgICAgIChKU0M6OkFycmF5Q29uc3RydWN0b3I6OmZpbmlzaENyZWF0aW9uKToKKyAg
ICAgICAgKEpTQzo6QXJyYXlDb25zdHJ1Y3Rvcjo6Z2V0T3duUHJvcGVydHlTbG90KToKKyAgICAg
ICAgKEpTQzo6QXJyYXlDb25zdHJ1Y3Rvcjo6Z2V0T3duUHJvcGVydHlEZXNjcmlwdG9yKToKKyAg
ICAgICAgKiBydW50aW1lL0FycmF5Q29uc3RydWN0b3IuaDoKKyAgICAgICAgKEFycmF5Q29uc3Ry
dWN0b3IpOgorICAgICAgICAqIHJ1bnRpbWUvQXJyYXlQcm90b3R5cGUuY3BwOgorICAgICAgICAo
SlNDOjpBcnJheVByb3RvdHlwZTo6Z2V0T3duUHJvcGVydHlTbG90KToKKyAgICAgICAgKEpTQzo6
QXJyYXlQcm90b3R5cGU6OmdldE93blByb3BlcnR5RGVzY3JpcHRvcik6CisgICAgICAgIChKU0M6
OnB1dFByb3BlcnR5KToKKyAgICAgICAgKiBydW50aW1lL0FycmF5UHJvdG90eXBlLmg6CisgICAg
ICAgIChBcnJheVByb3RvdHlwZSk6CisgICAgICAgICogcnVudGltZS9Cb29sZWFuQ29uc3RydWN0
b3IuY3BwOgorICAgICAgICAoSlNDOjpCb29sZWFuQ29uc3RydWN0b3I6OmZpbmlzaENyZWF0aW9u
KToKKyAgICAgICAgKiBydW50aW1lL0Jvb2xlYW5Qcm90b3R5cGUuY3BwOgorICAgICAgICAoSlND
OjpCb29sZWFuUHJvdG90eXBlOjpnZXRPd25Qcm9wZXJ0eVNsb3QpOgorICAgICAgICAoSlNDOjpC
b29sZWFuUHJvdG90eXBlOjpnZXRPd25Qcm9wZXJ0eURlc2NyaXB0b3IpOgorICAgICAgICAqIHJ1
bnRpbWUvQm9vbGVhblByb3RvdHlwZS5oOgorICAgICAgICAoQm9vbGVhblByb3RvdHlwZSk6Cisg
ICAgICAgICogcnVudGltZS9DbGFzc0luZm8uaDoKKyAgICAgICAgKE1ldGhvZFRhYmxlKToKKyAg
ICAgICAgKiBydW50aW1lL0RhdGVDb25zdHJ1Y3Rvci5jcHA6CisgICAgICAgIChKU0M6OkRhdGVD
b25zdHJ1Y3Rvcjo6ZmluaXNoQ3JlYXRpb24pOgorICAgICAgICAoSlNDOjpEYXRlQ29uc3RydWN0
b3I6OmdldE93blByb3BlcnR5U2xvdCk6CisgICAgICAgIChKU0M6OkRhdGVDb25zdHJ1Y3Rvcjo6
Z2V0T3duUHJvcGVydHlEZXNjcmlwdG9yKToKKyAgICAgICAgKiBydW50aW1lL0RhdGVDb25zdHJ1
Y3Rvci5oOgorICAgICAgICAoRGF0ZUNvbnN0cnVjdG9yKToKKyAgICAgICAgKiBydW50aW1lL0Rh
dGVQcm90b3R5cGUuY3BwOgorICAgICAgICAoSlNDOjpEYXRlUHJvdG90eXBlOjpnZXRPd25Qcm9w
ZXJ0eVNsb3QpOgorICAgICAgICAoSlNDOjpEYXRlUHJvdG90eXBlOjpnZXRPd25Qcm9wZXJ0eURl
c2NyaXB0b3IpOgorICAgICAgICAqIHJ1bnRpbWUvRGF0ZVByb3RvdHlwZS5oOgorICAgICAgICAo
RGF0ZVByb3RvdHlwZSk6CisgICAgICAgICogcnVudGltZS9FcnJvci5oOgorICAgICAgICAoSlND
OjpTdHJpY3RNb2RlVHlwZUVycm9yRnVuY3Rpb246OmNyZWF0ZSk6CisgICAgICAgICogcnVudGlt
ZS9FcnJvckNvbnN0cnVjdG9yLmNwcDoKKyAgICAgICAgKEpTQzo6RXJyb3JDb25zdHJ1Y3Rvcjo6
ZmluaXNoQ3JlYXRpb24pOgorICAgICAgICAqIHJ1bnRpbWUvRXJyb3JQcm90b3R5cGUuY3BwOgor
ICAgICAgICAoSlNDOjpFcnJvclByb3RvdHlwZTo6Z2V0T3duUHJvcGVydHlTbG90KToKKyAgICAg
ICAgKEpTQzo6RXJyb3JQcm90b3R5cGU6OmdldE93blByb3BlcnR5RGVzY3JpcHRvcik6CisgICAg
ICAgICogcnVudGltZS9FcnJvclByb3RvdHlwZS5oOgorICAgICAgICAoRXJyb3JQcm90b3R5cGUp
OgorICAgICAgICAqIHJ1bnRpbWUvRnVuY3Rpb25Db25zdHJ1Y3Rvci5jcHA6CisgICAgICAgIChK
U0M6OkZ1bmN0aW9uQ29uc3RydWN0b3I6OmZpbmlzaENyZWF0aW9uKToKKyAgICAgICAgKiBydW50
aW1lL0Z1bmN0aW9uUHJvdG90eXBlLmNwcDoKKyAgICAgICAgKEpTQzo6RnVuY3Rpb25Qcm90b3R5
cGU6OmZpbmlzaENyZWF0aW9uKToKKyAgICAgICAgKEpTQzo6RnVuY3Rpb25Qcm90b3R5cGU6OmFk
ZEZ1bmN0aW9uUHJvcGVydGllcyk6CisgICAgICAgIChKU0M6OmZ1bmN0aW9uUHJvdG9GdW5jQmlu
ZCk6CisgICAgICAgICogcnVudGltZS9GdW5jdGlvblByb3RvdHlwZS5oOgorICAgICAgICAoSlND
OjpGdW5jdGlvblByb3RvdHlwZTo6Y3JlYXRlKToKKyAgICAgICAgKEZ1bmN0aW9uUHJvdG90eXBl
KToKKyAgICAgICAgKiBydW50aW1lL0lkZW50aWZpZXIuY3BwOgorICAgICAgICAoSlNDKToKKyAg
ICAgICAgKiBydW50aW1lL0lkZW50aWZpZXIuaDoKKyAgICAgICAgKElkZW50aWZpZXIpOgorICAg
ICAgICAqIHJ1bnRpbWUvSW50ZXJuYWxGdW5jdGlvbi5jcHA6CisgICAgICAgIChKU0M6OkludGVy
bmFsRnVuY3Rpb246OmZpbmlzaENyZWF0aW9uKToKKyAgICAgICAgKiBydW50aW1lL0ludGVybmFs
RnVuY3Rpb24uaDoKKyAgICAgICAgKEludGVybmFsRnVuY3Rpb24pOgorICAgICAgICAqIHJ1bnRp
bWUvSlNBY3RpdmF0aW9uLmNwcDoKKyAgICAgICAgKEpTQzo6SlNBY3RpdmF0aW9uOjpzeW1ib2xU
YWJsZUdldCk6CisgICAgICAgIChKU0M6OkpTQWN0aXZhdGlvbjo6c3ltYm9sVGFibGVQdXQpOgor
ICAgICAgICAoSlNDOjpKU0FjdGl2YXRpb246OnN5bWJvbFRhYmxlUHV0V2l0aEF0dHJpYnV0ZXMp
OgorICAgICAgICAoSlNDOjpKU0FjdGl2YXRpb246OmdldE93blByb3BlcnR5U2xvdCk6CisgICAg
ICAgIChKU0M6OkpTQWN0aXZhdGlvbjo6cHV0KToKKyAgICAgICAgKEpTQzo6SlNBY3RpdmF0aW9u
OjpwdXREaXJlY3RWaXJ0dWFsKToKKyAgICAgICAgKEpTQzo6SlNBY3RpdmF0aW9uOjpkZWxldGVQ
cm9wZXJ0eSk6CisgICAgICAgIChKU0M6OkpTQWN0aXZhdGlvbjo6YXJndW1lbnRzR2V0dGVyKToK
KyAgICAgICAgKiBydW50aW1lL0pTQWN0aXZhdGlvbi5oOgorICAgICAgICAoSlNBY3RpdmF0aW9u
KToKKyAgICAgICAgKiBydW50aW1lL0pTQXJyYXkuY3BwOgorICAgICAgICAoSlNDOjpKU0FycmF5
OjpkZWZpbmVPd25Qcm9wZXJ0eSk6CisgICAgICAgIChKU0M6OkpTQXJyYXk6OmdldE93blByb3Bl
cnR5U2xvdCk6CisgICAgICAgIChKU0M6OkpTQXJyYXk6OmdldE93blByb3BlcnR5RGVzY3JpcHRv
cik6CisgICAgICAgIChKU0M6OkpTQXJyYXk6OnB1dCk6CisgICAgICAgIChKU0M6OkpTQXJyYXk6
OmRlbGV0ZVByb3BlcnR5KToKKyAgICAgICAgKiBydW50aW1lL0pTQXJyYXkuaDoKKyAgICAgICAg
KEpTQXJyYXkpOgorICAgICAgICAoSlNDKToKKyAgICAgICAgKiBydW50aW1lL0pTQm91bmRGdW5j
dGlvbi5jcHA6CisgICAgICAgIChKU0M6OkpTQm91bmRGdW5jdGlvbjo6Y3JlYXRlKToKKyAgICAg
ICAgKEpTQzo6SlNCb3VuZEZ1bmN0aW9uOjpmaW5pc2hDcmVhdGlvbik6CisgICAgICAgICogcnVu
dGltZS9KU0JvdW5kRnVuY3Rpb24uaDoKKyAgICAgICAgKEpTQm91bmRGdW5jdGlvbik6CisgICAg
ICAgICogcnVudGltZS9KU0NlbGwuY3BwOgorICAgICAgICAoSlNDOjpKU0NlbGw6OmdldE93blBy
b3BlcnR5U2xvdCk6CisgICAgICAgIChKU0M6OkpTQ2VsbDo6cHV0KToKKyAgICAgICAgKEpTQzo6
SlNDZWxsOjpkZWxldGVQcm9wZXJ0eSk6CisgICAgICAgIChKU0M6OkpTQ2VsbDo6cHV0RGlyZWN0
VmlydHVhbCk6CisgICAgICAgIChKU0M6OkpTQ2VsbDo6ZGVmaW5lT3duUHJvcGVydHkpOgorICAg
ICAgICAoSlNDOjpKU0NlbGw6OmdldE93blByb3BlcnR5RGVzY3JpcHRvcik6CisgICAgICAgICog
cnVudGltZS9KU0NlbGwuaDoKKyAgICAgICAgKEpTQ2VsbCk6CisgICAgICAgICogcnVudGltZS9K
U0Z1bmN0aW9uLmNwcDoKKyAgICAgICAgKEpTQzo6SlNGdW5jdGlvbjo6Y3JlYXRlKToKKyAgICAg
ICAgKEpTQzo6SlNGdW5jdGlvbjo6ZmluaXNoQ3JlYXRpb24pOgorICAgICAgICAoSlNDOjpKU0Z1
bmN0aW9uOjphcmd1bWVudHNHZXR0ZXIpOgorICAgICAgICAoSlNDOjpKU0Z1bmN0aW9uOjpjYWxs
ZXJHZXR0ZXIpOgorICAgICAgICAoSlNDOjpKU0Z1bmN0aW9uOjpsZW5ndGhHZXR0ZXIpOgorICAg
ICAgICAoSlNDOjpKU0Z1bmN0aW9uOjpnZXRPd25Qcm9wZXJ0eVNsb3QpOgorICAgICAgICAoSlND
OjpKU0Z1bmN0aW9uOjpnZXRPd25Qcm9wZXJ0eURlc2NyaXB0b3IpOgorICAgICAgICAoSlNDOjpK
U0Z1bmN0aW9uOjpwdXQpOgorICAgICAgICAoSlNDOjpKU0Z1bmN0aW9uOjpkZWxldGVQcm9wZXJ0
eSk6CisgICAgICAgIChKU0M6OkpTRnVuY3Rpb246OmRlZmluZU93blByb3BlcnR5KToKKyAgICAg
ICAgKEpTQzo6Z2V0Q2FsY3VsYXRlZERpc3BsYXlOYW1lKToKKyAgICAgICAgKiBydW50aW1lL0pT
RnVuY3Rpb24uaDoKKyAgICAgICAgKEpTRnVuY3Rpb24pOgorICAgICAgICAqIHJ1bnRpbWUvSlNH
bG9iYWxPYmplY3QuY3BwOgorICAgICAgICAoSlNDOjpKU0dsb2JhbE9iamVjdDo6cHV0KToKKyAg
ICAgICAgKEpTQzo6SlNHbG9iYWxPYmplY3Q6OnB1dERpcmVjdFZpcnR1YWwpOgorICAgICAgICAo
SlNDOjpKU0dsb2JhbE9iamVjdDo6ZGVmaW5lT3duUHJvcGVydHkpOgorICAgICAgICAoSlNDOjpK
U0dsb2JhbE9iamVjdDo6cmVzZXQpOgorICAgICAgICAoSlNDOjpKU0dsb2JhbE9iamVjdDo6Y3Jl
YXRlVGhyb3dUeXBlRXJyb3IpOgorICAgICAgICAoSlNDOjpKU0dsb2JhbE9iamVjdDo6Z2V0T3du
UHJvcGVydHlTbG90KToKKyAgICAgICAgKEpTQzo6SlNHbG9iYWxPYmplY3Q6OmdldE93blByb3Bl
cnR5RGVzY3JpcHRvcik6CisgICAgICAgICogcnVudGltZS9KU0dsb2JhbE9iamVjdC5oOgorICAg
ICAgICAoSlNHbG9iYWxPYmplY3QpOgorICAgICAgICAoSlNDOjpKU0dsb2JhbE9iamVjdDo6aGFz
T3duUHJvcGVydHlGb3JXcml0ZSk6CisgICAgICAgIChKU0M6OkpTR2xvYmFsT2JqZWN0OjpzeW1i
b2xUYWJsZUhhc1Byb3BlcnR5KToKKyAgICAgICAgKiBydW50aW1lL0pTTm90QW5PYmplY3QuY3Bw
OgorICAgICAgICAoSlNDOjpKU05vdEFuT2JqZWN0OjpnZXRPd25Qcm9wZXJ0eVNsb3QpOgorICAg
ICAgICAoSlNDOjpKU05vdEFuT2JqZWN0OjpnZXRPd25Qcm9wZXJ0eURlc2NyaXB0b3IpOgorICAg
ICAgICAoSlNDOjpKU05vdEFuT2JqZWN0OjpwdXQpOgorICAgICAgICAoSlNDOjpKU05vdEFuT2Jq
ZWN0OjpkZWxldGVQcm9wZXJ0eSk6CisgICAgICAgICogcnVudGltZS9KU05vdEFuT2JqZWN0Lmg6
CisgICAgICAgIChKU05vdEFuT2JqZWN0KToKKyAgICAgICAgKiBydW50aW1lL0pTT05PYmplY3Qu
Y3BwOgorICAgICAgICAoSlNDOjpKU09OT2JqZWN0OjpnZXRPd25Qcm9wZXJ0eVNsb3QpOgorICAg
ICAgICAoSlNDOjpKU09OT2JqZWN0OjpnZXRPd25Qcm9wZXJ0eURlc2NyaXB0b3IpOgorICAgICAg
ICAqIHJ1bnRpbWUvSlNPTk9iamVjdC5oOgorICAgICAgICAoSlNPTk9iamVjdCk6CisgICAgICAg
ICogcnVudGltZS9KU09iamVjdC5jcHA6CisgICAgICAgIChKU0M6OkpTT2JqZWN0OjpwdXQpOgor
ICAgICAgICAoSlNDOjpKU09iamVjdDo6cHV0RGlyZWN0VmlydHVhbCk6CisgICAgICAgIChKU0M6
OkpTT2JqZWN0OjpwdXREaXJlY3RBY2Nlc3Nvcik6CisgICAgICAgIChKU0M6OkpTT2JqZWN0Ojpo
YXNQcm9wZXJ0eSk6CisgICAgICAgIChKU0M6OkpTT2JqZWN0OjpkZWxldGVQcm9wZXJ0eSk6Cisg
ICAgICAgIChKU0M6OkpTT2JqZWN0OjpoYXNPd25Qcm9wZXJ0eSk6CisgICAgICAgIChKU0M6OmNh
bGxEZWZhdWx0VmFsdWVGdW5jdGlvbik6CisgICAgICAgIChKU0M6OkpTT2JqZWN0OjpmaW5kUHJv
cGVydHlIYXNoRW50cnkpOgorICAgICAgICAoSlNDOjpKU09iamVjdDo6Z2V0UHJvcGVydHlTcGVj
aWZpY1ZhbHVlKToKKyAgICAgICAgKEpTQzo6SlNPYmplY3Q6OnJlbW92ZURpcmVjdCk6CisgICAg
ICAgIChKU0M6OkpTT2JqZWN0OjpnZXRPd25Qcm9wZXJ0eURlc2NyaXB0b3IpOgorICAgICAgICAo
SlNDOjpKU09iamVjdDo6Z2V0UHJvcGVydHlEZXNjcmlwdG9yKToKKyAgICAgICAgKEpTQzo6cHV0
RGVzY3JpcHRvcik6CisgICAgICAgIChKU0M6OkpTT2JqZWN0OjpkZWZpbmVPd25Qcm9wZXJ0eSk6
CisgICAgICAgICogcnVudGltZS9KU09iamVjdC5oOgorICAgICAgICAoSlNPYmplY3QpOgorICAg
ICAgICAoSlNDOjpKU09iamVjdDo6Z2V0RGlyZWN0KToKKyAgICAgICAgKEpTQzo6SlNPYmplY3Q6
OmdldERpcmVjdExvY2F0aW9uKToKKyAgICAgICAgKEpTQzo6SlNPYmplY3Q6OmlubGluZUdldE93
blByb3BlcnR5U2xvdCk6CisgICAgICAgIChKU0M6OkpTT2JqZWN0OjpnZXRPd25Qcm9wZXJ0eVNs
b3QpOgorICAgICAgICAoSlNDOjpKU0NlbGw6OmZhc3RHZXRPd25Qcm9wZXJ0eVNsb3QpOgorICAg
ICAgICAoSlNDOjpKU09iamVjdDo6Z2V0UHJvcGVydHlTbG90KToKKyAgICAgICAgKEpTQzo6SlNP
YmplY3Q6OmdldCk6CisgICAgICAgIChKU0M6OkpTT2JqZWN0OjpwdXREaXJlY3RJbnRlcm5hbCk6
CisgICAgICAgIChKU0M6OkpTT2JqZWN0OjpwdXRPd25EYXRhUHJvcGVydHkpOgorICAgICAgICAo
SlNDOjpKU09iamVjdDo6cHV0RGlyZWN0KToKKyAgICAgICAgKEpTQzo6SlNPYmplY3Q6OnB1dERp
cmVjdFdpdGhvdXRUcmFuc2l0aW9uKToKKyAgICAgICAgKEpTQzo6SlNWYWx1ZTo6Z2V0KToKKyAg
ICAgICAgKEpTQzo6SlNWYWx1ZTo6cHV0KToKKyAgICAgICAgKiBydW50aW1lL0pTU3RhdGljU2Nv
cGVPYmplY3QuY3BwOgorICAgICAgICAoSlNDOjpKU1N0YXRpY1Njb3BlT2JqZWN0OjpwdXQpOgor
ICAgICAgICAoSlNDOjpKU1N0YXRpY1Njb3BlT2JqZWN0OjpwdXREaXJlY3RWaXJ0dWFsKToKKyAg
ICAgICAgKEpTQzo6SlNTdGF0aWNTY29wZU9iamVjdDo6Z2V0T3duUHJvcGVydHlTbG90KToKKyAg
ICAgICAgKiBydW50aW1lL0pTU3RhdGljU2NvcGVPYmplY3QuaDoKKyAgICAgICAgKEpTU3RhdGlj
U2NvcGVPYmplY3QpOgorICAgICAgICAqIHJ1bnRpbWUvSlNTdHJpbmcuY3BwOgorICAgICAgICAo
SlNDOjpKU1N0cmluZzo6Z2V0T3duUHJvcGVydHlTbG90KToKKyAgICAgICAgKEpTQzo6SlNTdHJp
bmc6OmdldFN0cmluZ1Byb3BlcnR5RGVzY3JpcHRvcik6CisgICAgICAgICogcnVudGltZS9KU1N0
cmluZy5oOgorICAgICAgICAoSlNTdHJpbmcpOgorICAgICAgICAoSlNDOjpKU1N0cmluZzo6Z2V0
U3RyaW5nUHJvcGVydHlTbG90KToKKyAgICAgICAgKiBydW50aW1lL0pTVmFsdWUuY3BwOgorICAg
ICAgICAoSlNDOjpKU1ZhbHVlOjpwdXRUb1ByaW1pdGl2ZSk6CisgICAgICAgICogcnVudGltZS9K
U1ZhbHVlLmg6CisgICAgICAgIChKU0MpOgorICAgICAgICAoSlNWYWx1ZSk6CisgICAgICAgICog
cnVudGltZS9KU1ZhcmlhYmxlT2JqZWN0LmNwcDoKKyAgICAgICAgKEpTQzo6SlNWYXJpYWJsZU9i
amVjdDo6ZGVsZXRlUHJvcGVydHkpOgorICAgICAgICAoSlNDOjpKU1ZhcmlhYmxlT2JqZWN0Ojpz
eW1ib2xUYWJsZUdldCk6CisgICAgICAgIChKU0M6OkpTVmFyaWFibGVPYmplY3Q6OnB1dERpcmVj
dFZpcnR1YWwpOgorICAgICAgICAqIHJ1bnRpbWUvSlNWYXJpYWJsZU9iamVjdC5oOgorICAgICAg
ICAoSlNWYXJpYWJsZU9iamVjdCk6CisgICAgICAgIChKU0M6OkpTVmFyaWFibGVPYmplY3Q6OnN5
bWJvbFRhYmxlR2V0KToKKyAgICAgICAgKEpTQzo6SlNWYXJpYWJsZU9iamVjdDo6c3ltYm9sVGFi
bGVQdXQpOgorICAgICAgICAoSlNDOjpKU1ZhcmlhYmxlT2JqZWN0OjpzeW1ib2xUYWJsZVB1dFdp
dGhBdHRyaWJ1dGVzKToKKyAgICAgICAgKiBydW50aW1lL0xvb2t1cC5jcHA6CisgICAgICAgIChK
U0M6OnNldFVwU3RhdGljRnVuY3Rpb25TbG90KToKKyAgICAgICAgKiBydW50aW1lL0xvb2t1cC5o
OgorICAgICAgICAoSlNDOjpIYXNoVGFibGU6OmVudHJ5KToKKyAgICAgICAgKEpTQyk6CisgICAg
ICAgIChKU0M6OmdldFN0YXRpY1Byb3BlcnR5U2xvdCk6CisgICAgICAgIChKU0M6OmdldFN0YXRp
Y1Byb3BlcnR5RGVzY3JpcHRvcik6CisgICAgICAgIChKU0M6OmdldFN0YXRpY0Z1bmN0aW9uU2xv
dCk6CisgICAgICAgIChKU0M6OmdldFN0YXRpY0Z1bmN0aW9uRGVzY3JpcHRvcik6CisgICAgICAg
IChKU0M6OmdldFN0YXRpY1ZhbHVlU2xvdCk6CisgICAgICAgIChKU0M6OmdldFN0YXRpY1ZhbHVl
RGVzY3JpcHRvcik6CisgICAgICAgIChKU0M6Omxvb2t1cFB1dCk6CisgICAgICAgICogcnVudGlt
ZS9NYXRoT2JqZWN0LmNwcDoKKyAgICAgICAgKEpTQzo6TWF0aE9iamVjdDo6Z2V0T3duUHJvcGVy
dHlTbG90KToKKyAgICAgICAgKEpTQzo6TWF0aE9iamVjdDo6Z2V0T3duUHJvcGVydHlEZXNjcmlw
dG9yKToKKyAgICAgICAgKiBydW50aW1lL01hdGhPYmplY3QuaDoKKyAgICAgICAgKE1hdGhPYmpl
Y3QpOgorICAgICAgICAqIHJ1bnRpbWUvTmF0aXZlRXJyb3JDb25zdHJ1Y3Rvci5oOgorICAgICAg
ICAoSlNDOjpOYXRpdmVFcnJvckNvbnN0cnVjdG9yOjpmaW5pc2hDcmVhdGlvbik6CisgICAgICAg
ICogcnVudGltZS9OdW1iZXJDb25zdHJ1Y3Rvci5jcHA6CisgICAgICAgIChKU0MpOgorICAgICAg
ICAoSlNDOjpOdW1iZXJDb25zdHJ1Y3Rvcjo6ZmluaXNoQ3JlYXRpb24pOgorICAgICAgICAoSlND
OjpOdW1iZXJDb25zdHJ1Y3Rvcjo6Z2V0T3duUHJvcGVydHlTbG90KToKKyAgICAgICAgKEpTQzo6
TnVtYmVyQ29uc3RydWN0b3I6OmdldE93blByb3BlcnR5RGVzY3JpcHRvcik6CisgICAgICAgIChK
U0M6Ok51bWJlckNvbnN0cnVjdG9yOjpwdXQpOgorICAgICAgICAoSlNDOjpudW1iZXJDb25zdHJ1
Y3Rvck5hTlZhbHVlKToKKyAgICAgICAgKEpTQzo6bnVtYmVyQ29uc3RydWN0b3JOZWdJbmZpbml0
eSk6CisgICAgICAgIChKU0M6Om51bWJlckNvbnN0cnVjdG9yUG9zSW5maW5pdHkpOgorICAgICAg
ICAoSlNDOjpudW1iZXJDb25zdHJ1Y3Rvck1heFZhbHVlKToKKyAgICAgICAgKEpTQzo6bnVtYmVy
Q29uc3RydWN0b3JNaW5WYWx1ZSk6CisgICAgICAgICogcnVudGltZS9OdW1iZXJDb25zdHJ1Y3Rv
ci5oOgorICAgICAgICAoTnVtYmVyQ29uc3RydWN0b3IpOgorICAgICAgICAqIHJ1bnRpbWUvTnVt
YmVyUHJvdG90eXBlLmNwcDoKKyAgICAgICAgKEpTQzo6TnVtYmVyUHJvdG90eXBlOjpnZXRPd25Q
cm9wZXJ0eVNsb3QpOgorICAgICAgICAoSlNDOjpOdW1iZXJQcm90b3R5cGU6OmdldE93blByb3Bl
cnR5RGVzY3JpcHRvcik6CisgICAgICAgICogcnVudGltZS9OdW1iZXJQcm90b3R5cGUuaDoKKyAg
ICAgICAgKE51bWJlclByb3RvdHlwZSk6CisgICAgICAgICogcnVudGltZS9PYmplY3RDb25zdHJ1
Y3Rvci5jcHA6CisgICAgICAgIChKU0M6Ok9iamVjdENvbnN0cnVjdG9yOjpmaW5pc2hDcmVhdGlv
bik6CisgICAgICAgIChKU0M6Ok9iamVjdENvbnN0cnVjdG9yOjpnZXRPd25Qcm9wZXJ0eVNsb3Qp
OgorICAgICAgICAoSlNDOjpPYmplY3RDb25zdHJ1Y3Rvcjo6Z2V0T3duUHJvcGVydHlEZXNjcmlw
dG9yKToKKyAgICAgICAgKiBydW50aW1lL09iamVjdENvbnN0cnVjdG9yLmg6CisgICAgICAgIChP
YmplY3RDb25zdHJ1Y3Rvcik6CisgICAgICAgICogcnVudGltZS9PYmplY3RQcm90b3R5cGUuY3Bw
OgorICAgICAgICAoSlNDOjpPYmplY3RQcm90b3R5cGU6OnB1dCk6CisgICAgICAgIChKU0M6Ok9i
amVjdFByb3RvdHlwZTo6ZGVmaW5lT3duUHJvcGVydHkpOgorICAgICAgICAoSlNDOjpPYmplY3RQ
cm90b3R5cGU6OmdldE93blByb3BlcnR5U2xvdCk6CisgICAgICAgIChKU0M6Ok9iamVjdFByb3Rv
dHlwZTo6Z2V0T3duUHJvcGVydHlEZXNjcmlwdG9yKToKKyAgICAgICAgKiBydW50aW1lL09iamVj
dFByb3RvdHlwZS5oOgorICAgICAgICAoT2JqZWN0UHJvdG90eXBlKToKKyAgICAgICAgKiBydW50
aW1lL1Byb3BlcnR5U2xvdC5oOgorICAgICAgICAoUHJvcGVydHlTbG90KToKKyAgICAgICAgKEpT
Qzo6UHJvcGVydHlTbG90OjpnZXRWYWx1ZSk6CisgICAgICAgICogcnVudGltZS9SZWdFeHBDb25z
dHJ1Y3Rvci5jcHA6CisgICAgICAgIChKU0MpOgorICAgICAgICAoSlNDOjpSZWdFeHBDb25zdHJ1
Y3Rvcjo6ZmluaXNoQ3JlYXRpb24pOgorICAgICAgICAoSlNDOjpSZWdFeHBDb25zdHJ1Y3Rvcjo6
Z2V0T3duUHJvcGVydHlTbG90KToKKyAgICAgICAgKEpTQzo6UmVnRXhwQ29uc3RydWN0b3I6Omdl
dE93blByb3BlcnR5RGVzY3JpcHRvcik6CisgICAgICAgIChKU0M6OnJlZ0V4cENvbnN0cnVjdG9y
RG9sbGFyMSk6CisgICAgICAgIChKU0M6OnJlZ0V4cENvbnN0cnVjdG9yRG9sbGFyMik6CisgICAg
ICAgIChKU0M6OnJlZ0V4cENvbnN0cnVjdG9yRG9sbGFyMyk6CisgICAgICAgIChKU0M6OnJlZ0V4
cENvbnN0cnVjdG9yRG9sbGFyNCk6CisgICAgICAgIChKU0M6OnJlZ0V4cENvbnN0cnVjdG9yRG9s
bGFyNSk6CisgICAgICAgIChKU0M6OnJlZ0V4cENvbnN0cnVjdG9yRG9sbGFyNik6CisgICAgICAg
IChKU0M6OnJlZ0V4cENvbnN0cnVjdG9yRG9sbGFyNyk6CisgICAgICAgIChKU0M6OnJlZ0V4cENv
bnN0cnVjdG9yRG9sbGFyOCk6CisgICAgICAgIChKU0M6OnJlZ0V4cENvbnN0cnVjdG9yRG9sbGFy
OSk6CisgICAgICAgIChKU0M6OnJlZ0V4cENvbnN0cnVjdG9ySW5wdXQpOgorICAgICAgICAoSlND
OjpyZWdFeHBDb25zdHJ1Y3Rvck11bHRpbGluZSk6CisgICAgICAgIChKU0M6OnJlZ0V4cENvbnN0
cnVjdG9yTGFzdE1hdGNoKToKKyAgICAgICAgKEpTQzo6cmVnRXhwQ29uc3RydWN0b3JMYXN0UGFy
ZW4pOgorICAgICAgICAoSlNDOjpyZWdFeHBDb25zdHJ1Y3RvckxlZnRDb250ZXh0KToKKyAgICAg
ICAgKEpTQzo6cmVnRXhwQ29uc3RydWN0b3JSaWdodENvbnRleHQpOgorICAgICAgICAoSlNDOjpS
ZWdFeHBDb25zdHJ1Y3Rvcjo6cHV0KToKKyAgICAgICAgKiBydW50aW1lL1JlZ0V4cENvbnN0cnVj
dG9yLmg6CisgICAgICAgIChSZWdFeHBDb25zdHJ1Y3Rvcik6CisgICAgICAgICogcnVudGltZS9S
ZWdFeHBNYXRjaGVzQXJyYXkuaDoKKyAgICAgICAgKEpTQzo6UmVnRXhwTWF0Y2hlc0FycmF5Ojpn
ZXRPd25Qcm9wZXJ0eVNsb3QpOgorICAgICAgICAoSlNDOjpSZWdFeHBNYXRjaGVzQXJyYXk6Omdl
dE93blByb3BlcnR5RGVzY3JpcHRvcik6CisgICAgICAgIChKU0M6OlJlZ0V4cE1hdGNoZXNBcnJh
eTo6cHV0KToKKyAgICAgICAgKEpTQzo6UmVnRXhwTWF0Y2hlc0FycmF5OjpkZWxldGVQcm9wZXJ0
eSk6CisgICAgICAgIChKU0M6OlJlZ0V4cE1hdGNoZXNBcnJheTo6ZGVmaW5lT3duUHJvcGVydHkp
OgorICAgICAgICAqIHJ1bnRpbWUvUmVnRXhwT2JqZWN0LmNwcDoKKyAgICAgICAgKEpTQyk6Cisg
ICAgICAgIChKU0M6OlJlZ0V4cE9iamVjdDo6Z2V0T3duUHJvcGVydHlTbG90KToKKyAgICAgICAg
KEpTQzo6UmVnRXhwT2JqZWN0OjpnZXRPd25Qcm9wZXJ0eURlc2NyaXB0b3IpOgorICAgICAgICAo
SlNDOjpSZWdFeHBPYmplY3Q6OmRlbGV0ZVByb3BlcnR5KToKKyAgICAgICAgKEpTQzo6UmVnRXhw
T2JqZWN0OjpkZWZpbmVPd25Qcm9wZXJ0eSk6CisgICAgICAgIChKU0M6OnJlZ0V4cE9iamVjdEds
b2JhbCk6CisgICAgICAgIChKU0M6OnJlZ0V4cE9iamVjdElnbm9yZUNhc2UpOgorICAgICAgICAo
SlNDOjpyZWdFeHBPYmplY3RNdWx0aWxpbmUpOgorICAgICAgICAoSlNDOjpyZWdFeHBPYmplY3RT
b3VyY2UpOgorICAgICAgICAoSlNDOjpSZWdFeHBPYmplY3Q6OnB1dCk6CisgICAgICAgICogcnVu
dGltZS9SZWdFeHBPYmplY3QuaDoKKyAgICAgICAgKFJlZ0V4cE9iamVjdCk6CisgICAgICAgICog
cnVudGltZS9SZWdFeHBQcm90b3R5cGUuY3BwOgorICAgICAgICAoSlNDOjpSZWdFeHBQcm90b3R5
cGU6OmdldE93blByb3BlcnR5U2xvdCk6CisgICAgICAgIChKU0M6OlJlZ0V4cFByb3RvdHlwZTo6
Z2V0T3duUHJvcGVydHlEZXNjcmlwdG9yKToKKyAgICAgICAgKiBydW50aW1lL1JlZ0V4cFByb3Rv
dHlwZS5oOgorICAgICAgICAoUmVnRXhwUHJvdG90eXBlKToKKyAgICAgICAgKiBydW50aW1lL1N0
cmljdEV2YWxBY3RpdmF0aW9uLmNwcDoKKyAgICAgICAgKEpTQzo6U3RyaWN0RXZhbEFjdGl2YXRp
b246OmRlbGV0ZVByb3BlcnR5KToKKyAgICAgICAgKiBydW50aW1lL1N0cmljdEV2YWxBY3RpdmF0
aW9uLmg6CisgICAgICAgIChTdHJpY3RFdmFsQWN0aXZhdGlvbik6CisgICAgICAgICogcnVudGlt
ZS9TdHJpbmdDb25zdHJ1Y3Rvci5jcHA6CisgICAgICAgIChKU0M6OlN0cmluZ0NvbnN0cnVjdG9y
OjpmaW5pc2hDcmVhdGlvbik6CisgICAgICAgIChKU0M6OlN0cmluZ0NvbnN0cnVjdG9yOjpnZXRP
d25Qcm9wZXJ0eVNsb3QpOgorICAgICAgICAoSlNDOjpTdHJpbmdDb25zdHJ1Y3Rvcjo6Z2V0T3du
UHJvcGVydHlEZXNjcmlwdG9yKToKKyAgICAgICAgKiBydW50aW1lL1N0cmluZ0NvbnN0cnVjdG9y
Lmg6CisgICAgICAgIChTdHJpbmdDb25zdHJ1Y3Rvcik6CisgICAgICAgICogcnVudGltZS9TdHJp
bmdPYmplY3QuY3BwOgorICAgICAgICAoSlNDOjpTdHJpbmdPYmplY3Q6OmdldE93blByb3BlcnR5
U2xvdCk6CisgICAgICAgIChKU0M6OlN0cmluZ09iamVjdDo6Z2V0T3duUHJvcGVydHlEZXNjcmlw
dG9yKToKKyAgICAgICAgKEpTQzo6U3RyaW5nT2JqZWN0OjpwdXQpOgorICAgICAgICAoSlNDOjpT
dHJpbmdPYmplY3Q6OmRlZmluZU93blByb3BlcnR5KToKKyAgICAgICAgKEpTQzo6U3RyaW5nT2Jq
ZWN0OjpkZWxldGVQcm9wZXJ0eSk6CisgICAgICAgICogcnVudGltZS9TdHJpbmdPYmplY3QuaDoK
KyAgICAgICAgKFN0cmluZ09iamVjdCk6CisgICAgICAgICogcnVudGltZS9TdHJpbmdQcm90b3R5
cGUuY3BwOgorICAgICAgICAoSlNDOjpTdHJpbmdQcm90b3R5cGU6OmdldE93blByb3BlcnR5U2xv
dCk6CisgICAgICAgIChKU0M6OlN0cmluZ1Byb3RvdHlwZTo6Z2V0T3duUHJvcGVydHlEZXNjcmlw
dG9yKToKKyAgICAgICAgKiBydW50aW1lL1N0cmluZ1Byb3RvdHlwZS5oOgorICAgICAgICAoU3Ry
aW5nUHJvdG90eXBlKToKKyAgICAgICAgKiBydW50aW1lL1N0cnVjdHVyZS5jcHA6CisgICAgICAg
IChKU0M6OlN0cnVjdHVyZTo6ZGVzcGVjaWZ5RGljdGlvbmFyeUZ1bmN0aW9uKToKKyAgICAgICAg
KEpTQzo6U3RydWN0dXJlOjphZGRQcm9wZXJ0eVRyYW5zaXRpb25Ub0V4aXN0aW5nU3RydWN0dXJl
KToKKyAgICAgICAgKEpTQzo6U3RydWN0dXJlOjphZGRQcm9wZXJ0eVRyYW5zaXRpb24pOgorICAg
ICAgICAoSlNDOjpTdHJ1Y3R1cmU6OnJlbW92ZVByb3BlcnR5VHJhbnNpdGlvbik6CisgICAgICAg
IChKU0M6OlN0cnVjdHVyZTo6ZGVzcGVjaWZ5RnVuY3Rpb25UcmFuc2l0aW9uKToKKyAgICAgICAg
KEpTQzo6U3RydWN0dXJlOjphdHRyaWJ1dGVDaGFuZ2VUcmFuc2l0aW9uKToKKyAgICAgICAgKEpT
Qzo6U3RydWN0dXJlOjphZGRQcm9wZXJ0eVdpdGhvdXRUcmFuc2l0aW9uKToKKyAgICAgICAgKEpT
Qzo6U3RydWN0dXJlOjpyZW1vdmVQcm9wZXJ0eVdpdGhvdXRUcmFuc2l0aW9uKToKKyAgICAgICAg
KEpTQzo6U3RydWN0dXJlOjpnZXQpOgorICAgICAgICAoSlNDOjpTdHJ1Y3R1cmU6OmRlc3BlY2lm
eUZ1bmN0aW9uKToKKyAgICAgICAgKEpTQzo6U3RydWN0dXJlOjpwdXRTcGVjaWZpY1ZhbHVlKToK
KyAgICAgICAgKEpTQzo6U3RydWN0dXJlOjpyZW1vdmUpOgorICAgICAgICAqIHJ1bnRpbWUvU3Ry
dWN0dXJlLmg6CisgICAgICAgIChTdHJ1Y3R1cmUpOgorICAgICAgICAoSlNDOjpTdHJ1Y3R1cmU6
OmdldCk6CisKIDIwMTItMDUtMTEgIFNhbSBXZWluaWcgIDxzYW1Ad2Via2l0Lm9yZz4KIAogICAg
ICAgICBGaXggY3Jhc2ggc2VlbiB3aGVuIHJ1bm5pbmcgd2l0aCBsaWJnbWFsbG9jCkluZGV4OiBT
b3VyY2UvSmF2YVNjcmlwdENvcmUvSlNDVHlwZWRBcnJheVN0dWJzLmgKPT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0g
U291cmNlL0phdmFTY3JpcHRDb3JlL0pTQ1R5cGVkQXJyYXlTdHVicy5oCShyZXZpc2lvbiAxMTY2
NjcpCisrKyBTb3VyY2UvSmF2YVNjcmlwdENvcmUvSlNDVHlwZWRBcnJheVN0dWJzLmgJKHdvcmtp
bmcgY29weSkKQEAgLTUyLDEwICs1MiwxMCBAQCBwdWJsaWM6IFwKICAgICAgICAgcmV0dXJuIHB0
cjsgXAogICAgIH1cCiBcCi0gICAgc3RhdGljIGJvb2wgZ2V0T3duUHJvcGVydHlTbG90KEpTQzo6
SlNDZWxsKiwgSlNDOjpFeGVjU3RhdGUqLCBjb25zdCBKU0M6OklkZW50aWZpZXImIHByb3BlcnR5
TmFtZSwgSlNDOjpQcm9wZXJ0eVNsb3QmKTtcCi0gICAgc3RhdGljIGJvb2wgZ2V0T3duUHJvcGVy
dHlEZXNjcmlwdG9yKEpTQzo6SlNPYmplY3QqLCBKU0M6OkV4ZWNTdGF0ZSosIGNvbnN0IEpTQzo6
SWRlbnRpZmllciYgcHJvcGVydHlOYW1lLCBKU0M6OlByb3BlcnR5RGVzY3JpcHRvciYpO1wKKyAg
ICBzdGF0aWMgYm9vbCBnZXRPd25Qcm9wZXJ0eVNsb3QoSlNDOjpKU0NlbGwqLCBKU0M6OkV4ZWNT
dGF0ZSosIEpTQzo6UHJvcGVydHlOYW1lIHByb3BlcnR5TmFtZSwgSlNDOjpQcm9wZXJ0eVNsb3Qm
KTtcCisgICAgc3RhdGljIGJvb2wgZ2V0T3duUHJvcGVydHlEZXNjcmlwdG9yKEpTQzo6SlNPYmpl
Y3QqLCBKU0M6OkV4ZWNTdGF0ZSosIEpTQzo6UHJvcGVydHlOYW1lIHByb3BlcnR5TmFtZSwgSlND
OjpQcm9wZXJ0eURlc2NyaXB0b3ImKTtcCiAgICAgc3RhdGljIGJvb2wgZ2V0T3duUHJvcGVydHlT
bG90QnlJbmRleChKU0M6OkpTQ2VsbCosIEpTQzo6RXhlY1N0YXRlKiwgdW5zaWduZWQgcHJvcGVy
dHlOYW1lLCBKU0M6OlByb3BlcnR5U2xvdCYpO1wKLSAgICBzdGF0aWMgdm9pZCBwdXQoSlNDOjpK
U0NlbGwqLCBKU0M6OkV4ZWNTdGF0ZSosIGNvbnN0IEpTQzo6SWRlbnRpZmllciYgcHJvcGVydHlO
YW1lLCBKU0M6OkpTVmFsdWUsIEpTQzo6UHV0UHJvcGVydHlTbG90Jik7XAorICAgIHN0YXRpYyB2
b2lkIHB1dChKU0M6OkpTQ2VsbCosIEpTQzo6RXhlY1N0YXRlKiwgSlNDOjpQcm9wZXJ0eU5hbWUg
cHJvcGVydHlOYW1lLCBKU0M6OkpTVmFsdWUsIEpTQzo6UHV0UHJvcGVydHlTbG90Jik7XAogICAg
IHN0YXRpYyB2b2lkIHB1dEJ5SW5kZXgoSlNDOjpKU0NlbGwqLCBKU0M6OkV4ZWNTdGF0ZSosIHVu
c2lnbmVkIHByb3BlcnR5TmFtZSwgSlNDOjpKU1ZhbHVlLCBib29sKTtcCiAgICAgc3RhdGljIGNv
bnN0IEpTQzo6Q2xhc3NJbmZvIHNfaW5mbztcCiBcCkBAIC05OCwyNiArOTgsMjYgQEAgdm9pZCBK
UyMjbmFtZSMjQXJyYXk6OmZpbmlzaENyZWF0aW9uKEpTRwogICAgIEFTU0VSVChpbmhlcml0cygm
c19pbmZvKSk7XAogfVwKIFwKLWJvb2wgSlMjI25hbWUjI0FycmF5OjpnZXRPd25Qcm9wZXJ0eVNs
b3QoSlNDZWxsKiBjZWxsLCBFeGVjU3RhdGUqIGV4ZWMsIGNvbnN0IElkZW50aWZpZXImIHByb3Bl
cnR5TmFtZSwgUHJvcGVydHlTbG90JiBzbG90KVwKK2Jvb2wgSlMjI25hbWUjI0FycmF5OjpnZXRP
d25Qcm9wZXJ0eVNsb3QoSlNDZWxsKiBjZWxsLCBFeGVjU3RhdGUqIGV4ZWMsIFByb3BlcnR5TmFt
ZSBwcm9wZXJ0eU5hbWUsIFByb3BlcnR5U2xvdCYgc2xvdClcCiB7XAogICAgIEpTIyNuYW1lIyNB
cnJheSogdGhpc09iamVjdCA9IGpzQ2FzdDxKUyMjbmFtZSMjQXJyYXkqPihjZWxsKTtcCiAgICAg
QVNTRVJUX0dDX09CSkVDVF9JTkhFUklUUyh0aGlzT2JqZWN0LCAmc19pbmZvKTtcCi0gICAgYm9v
bCBvaztcCi0gICAgdW5zaWduZWQgaW5kZXggPSBwcm9wZXJ0eU5hbWUudG9VSW50MzIob2spO1wK
LSAgICBpZiAob2sgJiYgaW5kZXggPCB0aGlzT2JqZWN0LT5tX3N0b3JhZ2VMZW5ndGgpIHtcCisg
ICAgdW5zaWduZWQgaW5kZXggPSBwcm9wZXJ0eU5hbWUuYXNJbmRleCgpO1wKKyAgICBpZiAoaW5k
ZXggPCB0aGlzT2JqZWN0LT5tX3N0b3JhZ2VMZW5ndGgpIHtcCisgICAgICAgIEFTU0VSVChpbmRl
eCAhPSBQcm9wZXJ0eU5hbWU6Ok5vdEFuSW5kZXgpO1wKICAgICAgICAgc2xvdC5zZXRWYWx1ZSh0
aGlzT2JqZWN0LT5nZXRCeUluZGV4KGV4ZWMsIGluZGV4KSk7XAogICAgICAgICByZXR1cm4gdHJ1
ZTtcCiAgICAgfVwKICAgICByZXR1cm4gQmFzZTo6Z2V0T3duUHJvcGVydHlTbG90KGNlbGwsIGV4
ZWMsIHByb3BlcnR5TmFtZSwgc2xvdCk7XAogfVwKIFwKLWJvb2wgSlMjI25hbWUjI0FycmF5Ojpn
ZXRPd25Qcm9wZXJ0eURlc2NyaXB0b3IoSlNPYmplY3QqIG9iamVjdCwgRXhlY1N0YXRlKiBleGVj
LCBjb25zdCBJZGVudGlmaWVyJiBwcm9wZXJ0eU5hbWUsIFByb3BlcnR5RGVzY3JpcHRvciYgZGVz
Y3JpcHRvcilcCitib29sIEpTIyNuYW1lIyNBcnJheTo6Z2V0T3duUHJvcGVydHlEZXNjcmlwdG9y
KEpTT2JqZWN0KiBvYmplY3QsIEV4ZWNTdGF0ZSogZXhlYywgUHJvcGVydHlOYW1lIHByb3BlcnR5
TmFtZSwgUHJvcGVydHlEZXNjcmlwdG9yJiBkZXNjcmlwdG9yKVwKIHtcCiAgICAgSlMjI25hbWUj
I0FycmF5KiB0aGlzT2JqZWN0ID0ganNDYXN0PEpTIyNuYW1lIyNBcnJheSo+KG9iamVjdCk7XAog
ICAgIEFTU0VSVF9HQ19PQkpFQ1RfSU5IRVJJVFModGhpc09iamVjdCwgJnNfaW5mbyk7XAotICAg
IGJvb2wgb2s7XAotICAgIHVuc2lnbmVkIGluZGV4ID0gcHJvcGVydHlOYW1lLnRvVUludDMyKG9r
KTtcCi0gICAgaWYgKG9rICYmIGluZGV4IDwgdGhpc09iamVjdC0+bV9zdG9yYWdlTGVuZ3RoKSB7
XAorICAgIHVuc2lnbmVkIGluZGV4ID0gcHJvcGVydHlOYW1lLmFzSW5kZXgoKTtcCisgICAgaWYg
KGluZGV4IDwgdGhpc09iamVjdC0+bV9zdG9yYWdlTGVuZ3RoKSB7XAorICAgICAgICBBU1NFUlQo
aW5kZXggIT0gUHJvcGVydHlOYW1lOjpOb3RBbkluZGV4KTtcCiAgICAgICAgIGRlc2NyaXB0b3Iu
c2V0RGVzY3JpcHRvcih0aGlzT2JqZWN0LT5nZXRCeUluZGV4KGV4ZWMsIGluZGV4KSwgRG9udERl
bGV0ZSk7XAogICAgICAgICByZXR1cm4gdHJ1ZTtcCiAgICAgfVwKQEAgLTEzNSwxMyArMTM1LDEy
IEBAIGJvb2wgSlMjI25hbWUjI0FycmF5OjpnZXRPd25Qcm9wZXJ0eVNsb3QKICAgICByZXR1cm4g
dGhpc09iamVjdC0+bWV0aG9kVGFibGUoKS0+Z2V0T3duUHJvcGVydHlTbG90KHRoaXNPYmplY3Qs
IGV4ZWMsIElkZW50aWZpZXI6OmZyb20oZXhlYywgcHJvcGVydHlOYW1lKSwgc2xvdCk7XAogfVwK
IFwKLXZvaWQgSlMjI25hbWUjI0FycmF5OjpwdXQoSlNDZWxsKiBjZWxsLCBFeGVjU3RhdGUqIGV4
ZWMsIGNvbnN0IElkZW50aWZpZXImIHByb3BlcnR5TmFtZSwgSlNWYWx1ZSB2YWx1ZSwgUHV0UHJv
cGVydHlTbG90JiBzbG90KVwKK3ZvaWQgSlMjI25hbWUjI0FycmF5OjpwdXQoSlNDZWxsKiBjZWxs
LCBFeGVjU3RhdGUqIGV4ZWMsIFByb3BlcnR5TmFtZSBwcm9wZXJ0eU5hbWUsIEpTVmFsdWUgdmFs
dWUsIFB1dFByb3BlcnR5U2xvdCYgc2xvdClcCiB7XAogICAgIEpTIyNuYW1lIyNBcnJheSogdGhp
c09iamVjdCA9IGpzQ2FzdDxKUyMjbmFtZSMjQXJyYXkqPihjZWxsKTtcCiAgICAgQVNTRVJUX0dD
X09CSkVDVF9JTkhFUklUUyh0aGlzT2JqZWN0LCAmc19pbmZvKTtcCi0gICAgYm9vbCBvaztcCi0g
ICAgdW5zaWduZWQgaW5kZXggPSBwcm9wZXJ0eU5hbWUudG9VSW50MzIob2spO1wKLSAgICBpZiAo
b2spIHtcCisgICAgdW5zaWduZWQgaW5kZXggPSBwcm9wZXJ0eU5hbWUuYXNJbmRleCgpO1wKKyAg
ICBpZiAoaW5kZXggIT0gUHJvcGVydHlOYW1lOjpOb3RBbkluZGV4KSB7XAogICAgICAgICB0aGlz
T2JqZWN0LT5pbmRleFNldHRlcihleGVjLCBpbmRleCwgdmFsdWUpO1wKICAgICAgICAgcmV0dXJu
O1wKICAgICB9XApJbmRleDogU291cmNlL0phdmFTY3JpcHRDb3JlL2pzYy5jcHAKPT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PQotLS0gU291cmNlL0phdmFTY3JpcHRDb3JlL2pzYy5jcHAJKHJldmlzaW9uIDExNjY2NykKKysr
IFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9qc2MuY3BwCSh3b3JraW5nIGNvcHkpCkBAIC0yMTgsMTMg
KzIxOCwxMyBAQCBwcm90ZWN0ZWQ6CiAgICAgdm9pZCBhZGRGdW5jdGlvbihKU0dsb2JhbERhdGEm
IGdsb2JhbERhdGEsIGNvbnN0IGNoYXIqIG5hbWUsIE5hdGl2ZUZ1bmN0aW9uIGZ1bmN0aW9uLCB1
bnNpZ25lZCBhcmd1bWVudHMpCiAgICAgewogICAgICAgICBJZGVudGlmaWVyIGlkZW50aWZpZXIo
Z2xvYmFsRXhlYygpLCBuYW1lKTsKLSAgICAgICAgcHV0RGlyZWN0KGdsb2JhbERhdGEsIGlkZW50
aWZpZXIsIEpTRnVuY3Rpb246OmNyZWF0ZShnbG9iYWxFeGVjKCksIHRoaXMsIGFyZ3VtZW50cywg
aWRlbnRpZmllciwgZnVuY3Rpb24pKTsKKyAgICAgICAgcHV0RGlyZWN0KGdsb2JhbERhdGEsIGlk
ZW50aWZpZXIsIEpTRnVuY3Rpb246OmNyZWF0ZShnbG9iYWxFeGVjKCksIHRoaXMsIGFyZ3VtZW50
cywgaWRlbnRpZmllci51c3RyaW5nKCksIGZ1bmN0aW9uKSk7CiAgICAgfQogICAgIAogICAgIHZv
aWQgYWRkQ29uc3RydWN0YWJsZUZ1bmN0aW9uKEpTR2xvYmFsRGF0YSYgZ2xvYmFsRGF0YSwgY29u
c3QgY2hhciogbmFtZSwgTmF0aXZlRnVuY3Rpb24gZnVuY3Rpb24sIHVuc2lnbmVkIGFyZ3VtZW50
cykKICAgICB7CiAgICAgICAgIElkZW50aWZpZXIgaWRlbnRpZmllcihnbG9iYWxFeGVjKCksIG5h
bWUpOwotICAgICAgICBwdXREaXJlY3QoZ2xvYmFsRGF0YSwgaWRlbnRpZmllciwgSlNGdW5jdGlv
bjo6Y3JlYXRlKGdsb2JhbEV4ZWMoKSwgdGhpcywgYXJndW1lbnRzLCBpZGVudGlmaWVyLCBmdW5j
dGlvbiwgTm9JbnRyaW5zaWMsIGZ1bmN0aW9uKSk7CisgICAgICAgIHB1dERpcmVjdChnbG9iYWxE
YXRhLCBpZGVudGlmaWVyLCBKU0Z1bmN0aW9uOjpjcmVhdGUoZ2xvYmFsRXhlYygpLCB0aGlzLCBh
cmd1bWVudHMsIGlkZW50aWZpZXIudXN0cmluZygpLCBmdW5jdGlvbiwgTm9JbnRyaW5zaWMsIGZ1
bmN0aW9uKSk7CiAgICAgfQogfTsKIENPTVBJTEVfQVNTRVJUKCFJc0ludGVnZXI8R2xvYmFsT2Jq
ZWN0Pjo6dmFsdWUsIFdURl9Jc0ludGVnZXJfR2xvYmFsT2JqZWN0X2ZhbHNlKTsKSW5kZXg6IFNv
dXJjZS9KYXZhU2NyaXB0Q29yZS9BUEkvSlNDYWxsYmFja0Z1bmN0aW9uLmNwcAo9PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
Ci0tLSBTb3VyY2UvSmF2YVNjcmlwdENvcmUvQVBJL0pTQ2FsbGJhY2tGdW5jdGlvbi5jcHAJKHJl
dmlzaW9uIDExNjY2NykKKysrIFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9BUEkvSlNDYWxsYmFja0Z1
bmN0aW9uLmNwcAkod29ya2luZyBjb3B5KQpAQCAtNDksNyArNDksNyBAQCBKU0NhbGxiYWNrRnVu
Y3Rpb246OkpTQ2FsbGJhY2tGdW5jdGlvbihKCiB7CiB9CiAKLXZvaWQgSlNDYWxsYmFja0Z1bmN0
aW9uOjpmaW5pc2hDcmVhdGlvbihKU0dsb2JhbERhdGEmIGdsb2JhbERhdGEsIGNvbnN0IElkZW50
aWZpZXImIG5hbWUpCit2b2lkIEpTQ2FsbGJhY2tGdW5jdGlvbjo6ZmluaXNoQ3JlYXRpb24oSlNH
bG9iYWxEYXRhJiBnbG9iYWxEYXRhLCBjb25zdCBVU3RyaW5nJiBuYW1lKQogewogICAgIEJhc2U6
OmZpbmlzaENyZWF0aW9uKGdsb2JhbERhdGEsIG5hbWUpOwogICAgIEFTU0VSVChpbmhlcml0cygm
c19pbmZvKSk7CkluZGV4OiBTb3VyY2UvSmF2YVNjcmlwdENvcmUvQVBJL0pTQ2FsbGJhY2tGdW5j
dGlvbi5oCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9BUEkvSlNDYWxsYmFj
a0Z1bmN0aW9uLmgJKHJldmlzaW9uIDExNjY2NykKKysrIFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9B
UEkvSlNDYWxsYmFja0Z1bmN0aW9uLmgJKHdvcmtpbmcgY29weSkKQEAgLTM0LDEyICszNCwxMiBA
QCBuYW1lc3BhY2UgSlNDIHsKIGNsYXNzIEpTQ2FsbGJhY2tGdW5jdGlvbiA6IHB1YmxpYyBJbnRl
cm5hbEZ1bmN0aW9uIHsKIHByb3RlY3RlZDoKICAgICBKU0NhbGxiYWNrRnVuY3Rpb24oSlNHbG9i
YWxPYmplY3QqLCBKU09iamVjdENhbGxBc0Z1bmN0aW9uQ2FsbGJhY2spOwotICAgIHZvaWQgZmlu
aXNoQ3JlYXRpb24oSlNHbG9iYWxEYXRhJiwgY29uc3QgSWRlbnRpZmllciYgbmFtZSk7CisgICAg
dm9pZCBmaW5pc2hDcmVhdGlvbihKU0dsb2JhbERhdGEmLCBjb25zdCBVU3RyaW5nJiBuYW1lKTsK
IAogcHVibGljOgogICAgIHR5cGVkZWYgSW50ZXJuYWxGdW5jdGlvbiBCYXNlOwogCi0gICAgc3Rh
dGljIEpTQ2FsbGJhY2tGdW5jdGlvbiogY3JlYXRlKEV4ZWNTdGF0ZSogZXhlYywgSlNHbG9iYWxP
YmplY3QqIGdsb2JhbE9iamVjdCwgSlNPYmplY3RDYWxsQXNGdW5jdGlvbkNhbGxiYWNrIGNhbGxi
YWNrLCBjb25zdCBJZGVudGlmaWVyJiBuYW1lKQorICAgIHN0YXRpYyBKU0NhbGxiYWNrRnVuY3Rp
b24qIGNyZWF0ZShFeGVjU3RhdGUqIGV4ZWMsIEpTR2xvYmFsT2JqZWN0KiBnbG9iYWxPYmplY3Qs
IEpTT2JqZWN0Q2FsbEFzRnVuY3Rpb25DYWxsYmFjayBjYWxsYmFjaywgY29uc3QgVVN0cmluZyYg
bmFtZSkKICAgICB7CiAgICAgICAgIEpTQ2FsbGJhY2tGdW5jdGlvbiogZnVuY3Rpb24gPSBuZXcg
KE5vdE51bGwsIGFsbG9jYXRlQ2VsbDxKU0NhbGxiYWNrRnVuY3Rpb24+KCpleGVjLT5oZWFwKCkp
KSBKU0NhbGxiYWNrRnVuY3Rpb24oZ2xvYmFsT2JqZWN0LCBjYWxsYmFjayk7CiAgICAgICAgIGZ1
bmN0aW9uLT5maW5pc2hDcmVhdGlvbihleGVjLT5nbG9iYWxEYXRhKCksIG5hbWUpOwpJbmRleDog
U291cmNlL0phdmFTY3JpcHRDb3JlL0FQSS9KU0NhbGxiYWNrT2JqZWN0LmgKPT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQot
LS0gU291cmNlL0phdmFTY3JpcHRDb3JlL0FQSS9KU0NhbGxiYWNrT2JqZWN0LmgJKHJldmlzaW9u
IDExNjY2NykKKysrIFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9BUEkvSlNDYWxsYmFja09iamVjdC5o
CSh3b3JraW5nIGNvcHkpCkBAIC0xNzcsMTIgKzE3NywxMiBAQCBwcml2YXRlOgogCiAgICAgc3Rh
dGljIEpTVmFsdWUgZGVmYXVsdFZhbHVlKGNvbnN0IEpTT2JqZWN0KiwgRXhlY1N0YXRlKiwgUHJl
ZmVycmVkUHJpbWl0aXZlVHlwZSk7CiAKLSAgICBzdGF0aWMgYm9vbCBnZXRPd25Qcm9wZXJ0eVNs
b3QoSlNDZWxsKiwgRXhlY1N0YXRlKiwgY29uc3QgSWRlbnRpZmllciYsIFByb3BlcnR5U2xvdCYp
OwotICAgIHN0YXRpYyBib29sIGdldE93blByb3BlcnR5RGVzY3JpcHRvcihKU09iamVjdCosIEV4
ZWNTdGF0ZSosIGNvbnN0IElkZW50aWZpZXImLCBQcm9wZXJ0eURlc2NyaXB0b3ImKTsKKyAgICBz
dGF0aWMgYm9vbCBnZXRPd25Qcm9wZXJ0eVNsb3QoSlNDZWxsKiwgRXhlY1N0YXRlKiwgUHJvcGVy
dHlOYW1lLCBQcm9wZXJ0eVNsb3QmKTsKKyAgICBzdGF0aWMgYm9vbCBnZXRPd25Qcm9wZXJ0eURl
c2NyaXB0b3IoSlNPYmplY3QqLCBFeGVjU3RhdGUqLCBQcm9wZXJ0eU5hbWUsIFByb3BlcnR5RGVz
Y3JpcHRvciYpOwogICAgIAotICAgIHN0YXRpYyB2b2lkIHB1dChKU0NlbGwqLCBFeGVjU3RhdGUq
LCBjb25zdCBJZGVudGlmaWVyJiwgSlNWYWx1ZSwgUHV0UHJvcGVydHlTbG90Jik7CisgICAgc3Rh
dGljIHZvaWQgcHV0KEpTQ2VsbCosIEV4ZWNTdGF0ZSosIFByb3BlcnR5TmFtZSwgSlNWYWx1ZSwg
UHV0UHJvcGVydHlTbG90Jik7CiAKLSAgICBzdGF0aWMgYm9vbCBkZWxldGVQcm9wZXJ0eShKU0Nl
bGwqLCBFeGVjU3RhdGUqLCBjb25zdCBJZGVudGlmaWVyJik7CisgICAgc3RhdGljIGJvb2wgZGVs
ZXRlUHJvcGVydHkoSlNDZWxsKiwgRXhlY1N0YXRlKiwgUHJvcGVydHlOYW1lKTsKICAgICBzdGF0
aWMgYm9vbCBkZWxldGVQcm9wZXJ0eUJ5SW5kZXgoSlNDZWxsKiwgRXhlY1N0YXRlKiwgdW5zaWdu
ZWQpOwogCiAgICAgc3RhdGljIGJvb2wgaGFzSW5zdGFuY2UoSlNPYmplY3QqLCBFeGVjU3RhdGUq
LCBKU1ZhbHVlLCBKU1ZhbHVlIHByb3RvKTsKQEAgLTIwOSw5ICsyMDksOSBAQCBwcml2YXRlOgog
ICAgIHN0YXRpYyBFbmNvZGVkSlNWYWx1ZSBKU0NfSE9TVF9DQUxMIGNhbGwoRXhlY1N0YXRlKik7
CiAgICAgc3RhdGljIEVuY29kZWRKU1ZhbHVlIEpTQ19IT1NUX0NBTEwgY29uc3RydWN0KEV4ZWNT
dGF0ZSopOwogICAgCi0gICAgSlNWYWx1ZSBnZXRTdGF0aWNWYWx1ZShFeGVjU3RhdGUqLCBjb25z
dCBJZGVudGlmaWVyJik7Ci0gICAgc3RhdGljIEpTVmFsdWUgc3RhdGljRnVuY3Rpb25HZXR0ZXIo
RXhlY1N0YXRlKiwgSlNWYWx1ZSwgY29uc3QgSWRlbnRpZmllciYpOwotICAgIHN0YXRpYyBKU1Zh
bHVlIGNhbGxiYWNrR2V0dGVyKEV4ZWNTdGF0ZSosIEpTVmFsdWUsIGNvbnN0IElkZW50aWZpZXIm
KTsKKyAgICBKU1ZhbHVlIGdldFN0YXRpY1ZhbHVlKEV4ZWNTdGF0ZSosIFByb3BlcnR5TmFtZSk7
CisgICAgc3RhdGljIEpTVmFsdWUgc3RhdGljRnVuY3Rpb25HZXR0ZXIoRXhlY1N0YXRlKiwgSlNW
YWx1ZSwgUHJvcGVydHlOYW1lKTsKKyAgICBzdGF0aWMgSlNWYWx1ZSBjYWxsYmFja0dldHRlcihF
eGVjU3RhdGUqLCBKU1ZhbHVlLCBQcm9wZXJ0eU5hbWUpOwogCiAgICAgT3duUHRyPEpTQ2FsbGJh
Y2tPYmplY3REYXRhPiBtX2NhbGxiYWNrT2JqZWN0RGF0YTsKIH07CkluZGV4OiBTb3VyY2UvSmF2
YVNjcmlwdENvcmUvQVBJL0pTQ2FsbGJhY2tPYmplY3RGdW5jdGlvbnMuaAo9PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0t
LSBTb3VyY2UvSmF2YVNjcmlwdENvcmUvQVBJL0pTQ2FsbGJhY2tPYmplY3RGdW5jdGlvbnMuaAko
cmV2aXNpb24gMTE2NjY3KQorKysgU291cmNlL0phdmFTY3JpcHRDb3JlL0FQSS9KU0NhbGxiYWNr
T2JqZWN0RnVuY3Rpb25zLmgJKHdvcmtpbmcgY29weSkKQEAgLTEyMiw3ICsxMjIsNyBAQCBVU3Ry
aW5nIEpTQ2FsbGJhY2tPYmplY3Q8UGFyZW50Pjo6Y2xhc3NOCiB9CiAKIHRlbXBsYXRlIDxjbGFz
cyBQYXJlbnQ+Ci1ib29sIEpTQ2FsbGJhY2tPYmplY3Q8UGFyZW50Pjo6Z2V0T3duUHJvcGVydHlT
bG90KEpTQ2VsbCogY2VsbCwgRXhlY1N0YXRlKiBleGVjLCBjb25zdCBJZGVudGlmaWVyJiBwcm9w
ZXJ0eU5hbWUsIFByb3BlcnR5U2xvdCYgc2xvdCkKK2Jvb2wgSlNDYWxsYmFja09iamVjdDxQYXJl
bnQ+OjpnZXRPd25Qcm9wZXJ0eVNsb3QoSlNDZWxsKiBjZWxsLCBFeGVjU3RhdGUqIGV4ZWMsIFBy
b3BlcnR5TmFtZSBwcm9wZXJ0eU5hbWUsIFByb3BlcnR5U2xvdCYgc2xvdCkKIHsKICAgICBKU0Nh
bGxiYWNrT2JqZWN0KiB0aGlzT2JqZWN0ID0ganNDYXN0PEpTQ2FsbGJhY2tPYmplY3QqPihjZWxs
KTsKICAgICBKU0NvbnRleHRSZWYgY3R4ID0gdG9SZWYoZXhlYyk7CkBAIC0yMDUsNyArMjA1LDcg
QEAgSlNWYWx1ZSBKU0NhbGxiYWNrT2JqZWN0PFBhcmVudD46OmRlZmF1bAogfQogCiB0ZW1wbGF0
ZSA8Y2xhc3MgUGFyZW50PgotYm9vbCBKU0NhbGxiYWNrT2JqZWN0PFBhcmVudD46OmdldE93blBy
b3BlcnR5RGVzY3JpcHRvcihKU09iamVjdCogb2JqZWN0LCBFeGVjU3RhdGUqIGV4ZWMsIGNvbnN0
IElkZW50aWZpZXImIHByb3BlcnR5TmFtZSwgUHJvcGVydHlEZXNjcmlwdG9yJiBkZXNjcmlwdG9y
KQorYm9vbCBKU0NhbGxiYWNrT2JqZWN0PFBhcmVudD46OmdldE93blByb3BlcnR5RGVzY3JpcHRv
cihKU09iamVjdCogb2JqZWN0LCBFeGVjU3RhdGUqIGV4ZWMsIFByb3BlcnR5TmFtZSBwcm9wZXJ0
eU5hbWUsIFByb3BlcnR5RGVzY3JpcHRvciYgZGVzY3JpcHRvcikKIHsKICAgICBKU0NhbGxiYWNr
T2JqZWN0KiB0aGlzT2JqZWN0ID0ganNDYXN0PEpTQ2FsbGJhY2tPYmplY3QqPihvYmplY3QpOwog
ICAgIFByb3BlcnR5U2xvdCBzbG90OwpAQCAtMjI1LDcgKzIyNSw3IEBAIGJvb2wgSlNDYWxsYmFj
a09iamVjdDxQYXJlbnQ+OjpnZXRPd25Qcm8KIH0KIAogdGVtcGxhdGUgPGNsYXNzIFBhcmVudD4K
LXZvaWQgSlNDYWxsYmFja09iamVjdDxQYXJlbnQ+OjpwdXQoSlNDZWxsKiBjZWxsLCBFeGVjU3Rh
dGUqIGV4ZWMsIGNvbnN0IElkZW50aWZpZXImIHByb3BlcnR5TmFtZSwgSlNWYWx1ZSB2YWx1ZSwg
UHV0UHJvcGVydHlTbG90JiBzbG90KQordm9pZCBKU0NhbGxiYWNrT2JqZWN0PFBhcmVudD46OnB1
dChKU0NlbGwqIGNlbGwsIEV4ZWNTdGF0ZSogZXhlYywgUHJvcGVydHlOYW1lIHByb3BlcnR5TmFt
ZSwgSlNWYWx1ZSB2YWx1ZSwgUHV0UHJvcGVydHlTbG90JiBzbG90KQogewogICAgIEpTQ2FsbGJh
Y2tPYmplY3QqIHRoaXNPYmplY3QgPSBqc0Nhc3Q8SlNDYWxsYmFja09iamVjdCo+KGNlbGwpOwog
ICAgIEpTQ29udGV4dFJlZiBjdHggPSB0b1JlZihleGVjKTsKQEAgLTI4NCw3ICsyODQsNyBAQCB2
b2lkIEpTQ2FsbGJhY2tPYmplY3Q8UGFyZW50Pjo6cHV0KEpTQ2VsCiB9CiAKIHRlbXBsYXRlIDxj
bGFzcyBQYXJlbnQ+Ci1ib29sIEpTQ2FsbGJhY2tPYmplY3Q8UGFyZW50Pjo6ZGVsZXRlUHJvcGVy
dHkoSlNDZWxsKiBjZWxsLCBFeGVjU3RhdGUqIGV4ZWMsIGNvbnN0IElkZW50aWZpZXImIHByb3Bl
cnR5TmFtZSkKK2Jvb2wgSlNDYWxsYmFja09iamVjdDxQYXJlbnQ+OjpkZWxldGVQcm9wZXJ0eShK
U0NlbGwqIGNlbGwsIEV4ZWNTdGF0ZSogZXhlYywgUHJvcGVydHlOYW1lIHByb3BlcnR5TmFtZSkK
IHsKICAgICBKU0NhbGxiYWNrT2JqZWN0KiB0aGlzT2JqZWN0ID0ganNDYXN0PEpTQ2FsbGJhY2tP
YmplY3QqPihjZWxsKTsKICAgICBKU0NvbnRleHRSZWYgY3R4ID0gdG9SZWYoZXhlYyk7CkBAIC01
MDQsNyArNTA0LDcgQEAgYm9vbCBKU0NhbGxiYWNrT2JqZWN0PFBhcmVudD46OmluaGVyaXRzKAog
fQogCiB0ZW1wbGF0ZSA8Y2xhc3MgUGFyZW50PgotSlNWYWx1ZSBKU0NhbGxiYWNrT2JqZWN0PFBh
cmVudD46OmdldFN0YXRpY1ZhbHVlKEV4ZWNTdGF0ZSogZXhlYywgY29uc3QgSWRlbnRpZmllciYg
cHJvcGVydHlOYW1lKQorSlNWYWx1ZSBKU0NhbGxiYWNrT2JqZWN0PFBhcmVudD46OmdldFN0YXRp
Y1ZhbHVlKEV4ZWNTdGF0ZSogZXhlYywgUHJvcGVydHlOYW1lIHByb3BlcnR5TmFtZSkKIHsKICAg
ICBKU09iamVjdFJlZiB0aGlzUmVmID0gdG9SZWYodGhpcyk7CiAgICAgUmVmUHRyPE9wYXF1ZUpT
U3RyaW5nPiBwcm9wZXJ0eU5hbWVSZWY7CkBAIC01MzMsNyArNTMzLDcgQEAgSlNWYWx1ZSBKU0Nh
bGxiYWNrT2JqZWN0PFBhcmVudD46OmdldFN0YQogfQogCiB0ZW1wbGF0ZSA8Y2xhc3MgUGFyZW50
PgotSlNWYWx1ZSBKU0NhbGxiYWNrT2JqZWN0PFBhcmVudD46OnN0YXRpY0Z1bmN0aW9uR2V0dGVy
KEV4ZWNTdGF0ZSogZXhlYywgSlNWYWx1ZSBzbG90UGFyZW50LCBjb25zdCBJZGVudGlmaWVyJiBw
cm9wZXJ0eU5hbWUpCitKU1ZhbHVlIEpTQ2FsbGJhY2tPYmplY3Q8UGFyZW50Pjo6c3RhdGljRnVu
Y3Rpb25HZXR0ZXIoRXhlY1N0YXRlKiBleGVjLCBKU1ZhbHVlIHNsb3RQYXJlbnQsIFByb3BlcnR5
TmFtZSBwcm9wZXJ0eU5hbWUpCiB7CiAgICAgSlNDYWxsYmFja09iamVjdCogdGhpc09iaiA9IGFz
Q2FsbGJhY2tPYmplY3Qoc2xvdFBhcmVudCk7CiAgICAgCkBAIC01NDcsNyArNTQ3LDcgQEAgSlNW
YWx1ZSBKU0NhbGxiYWNrT2JqZWN0PFBhcmVudD46OnN0YXRpYwogICAgICAgICAgICAgaWYgKFN0
YXRpY0Z1bmN0aW9uRW50cnkqIGVudHJ5ID0gc3RhdGljRnVuY3Rpb25zLT5nZXQocHJvcGVydHlO
YW1lLmltcGwoKSkpIHsKICAgICAgICAgICAgICAgICBpZiAoSlNPYmplY3RDYWxsQXNGdW5jdGlv
bkNhbGxiYWNrIGNhbGxBc0Z1bmN0aW9uID0gZW50cnktPmNhbGxBc0Z1bmN0aW9uKSB7CiAgICAg
ICAgICAgICAgICAgICAgIAotICAgICAgICAgICAgICAgICAgICBKU09iamVjdCogbyA9IEpTQ2Fs
bGJhY2tGdW5jdGlvbjo6Y3JlYXRlKGV4ZWMsIHRoaXNPYmotPmdsb2JhbE9iamVjdCgpLCBjYWxs
QXNGdW5jdGlvbiwgcHJvcGVydHlOYW1lKTsKKyAgICAgICAgICAgICAgICAgICAgSlNPYmplY3Qq
IG8gPSBKU0NhbGxiYWNrRnVuY3Rpb246OmNyZWF0ZShleGVjLCB0aGlzT2JqLT5nbG9iYWxPYmpl
Y3QoKSwgY2FsbEFzRnVuY3Rpb24sIHByb3BlcnR5TmFtZS51c3RyaW5nKCkpOwogICAgICAgICAg
ICAgICAgICAgICB0aGlzT2JqLT5wdXREaXJlY3QoZXhlYy0+Z2xvYmFsRGF0YSgpLCBwcm9wZXJ0
eU5hbWUsIG8sIGVudHJ5LT5hdHRyaWJ1dGVzKTsKICAgICAgICAgICAgICAgICAgICAgcmV0dXJu
IG87CiAgICAgICAgICAgICAgICAgfQpAQCAtNTU5LDcgKzU1OSw3IEBAIEpTVmFsdWUgSlNDYWxs
YmFja09iamVjdDxQYXJlbnQ+OjpzdGF0aWMKIH0KIAogdGVtcGxhdGUgPGNsYXNzIFBhcmVudD4K
LUpTVmFsdWUgSlNDYWxsYmFja09iamVjdDxQYXJlbnQ+OjpjYWxsYmFja0dldHRlcihFeGVjU3Rh
dGUqIGV4ZWMsIEpTVmFsdWUgc2xvdFBhcmVudCwgY29uc3QgSWRlbnRpZmllciYgcHJvcGVydHlO
YW1lKQorSlNWYWx1ZSBKU0NhbGxiYWNrT2JqZWN0PFBhcmVudD46OmNhbGxiYWNrR2V0dGVyKEV4
ZWNTdGF0ZSogZXhlYywgSlNWYWx1ZSBzbG90UGFyZW50LCBQcm9wZXJ0eU5hbWUgcHJvcGVydHlO
YW1lKQogewogICAgIEpTQ2FsbGJhY2tPYmplY3QqIHRoaXNPYmogPSBhc0NhbGxiYWNrT2JqZWN0
KHNsb3RQYXJlbnQpOwogICAgIApJbmRleDogU291cmNlL0phdmFTY3JpcHRDb3JlL0FQSS9KU09i
amVjdFJlZi5jcHAKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL0phdmFTY3JpcHRDb3JlL0FQSS9KU09i
amVjdFJlZi5jcHAJKHJldmlzaW9uIDExNjY2NykKKysrIFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9B
UEkvSlNPYmplY3RSZWYuY3BwCSh3b3JraW5nIGNvcHkpCkBAIC05MiwxMCArOTIsNyBAQCBKU09i
amVjdFJlZiBKU09iamVjdE1ha2VGdW5jdGlvbldpdGhDYWxsCiB7CiAgICAgRXhlY1N0YXRlKiBl
eGVjID0gdG9KUyhjdHgpOwogICAgIEFQSUVudHJ5U2hpbSBlbnRyeVNoaW0oZXhlYyk7Ci0KLSAg
ICBJZGVudGlmaWVyIG5hbWVJRCA9IG5hbWUgPyBuYW1lLT5pZGVudGlmaWVyKCZleGVjLT5nbG9i
YWxEYXRhKCkpIDogSWRlbnRpZmllcihleGVjLCAiYW5vbnltb3VzIik7Ci0gICAgCi0gICAgcmV0
dXJuIHRvUmVmKEpTQ2FsbGJhY2tGdW5jdGlvbjo6Y3JlYXRlKGV4ZWMsIGV4ZWMtPmxleGljYWxH
bG9iYWxPYmplY3QoKSwgY2FsbEFzRnVuY3Rpb24sIG5hbWVJRCkpOworICAgIHJldHVybiB0b1Jl
ZihKU0NhbGxiYWNrRnVuY3Rpb246OmNyZWF0ZShleGVjLCBleGVjLT5sZXhpY2FsR2xvYmFsT2Jq
ZWN0KCksIGNhbGxBc0Z1bmN0aW9uLCBuYW1lID8gbmFtZS0+dXN0cmluZygpIDogImFub255bW91
cyIpKTsKIH0KIAogSlNPYmplY3RSZWYgSlNPYmplY3RNYWtlQ29uc3RydWN0b3IoSlNDb250ZXh0
UmVmIGN0eCwgSlNDbGFzc1JlZiBqc0NsYXNzLCBKU09iamVjdENhbGxBc0NvbnN0cnVjdG9yQ2Fs
bGJhY2sgY2FsbEFzQ29uc3RydWN0b3IpCkluZGV4OiBTb3VyY2UvSmF2YVNjcmlwdENvcmUvSmF2
YVNjcmlwdENvcmUudmNwcm9qL0phdmFTY3JpcHRDb3JlL0phdmFTY3JpcHRDb3JlLmRlZgo9PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09Ci0tLSBTb3VyY2UvSmF2YVNjcmlwdENvcmUvSmF2YVNjcmlwdENvcmUudmNwcm9qL0ph
dmFTY3JpcHRDb3JlL0phdmFTY3JpcHRDb3JlLmRlZgkocmV2aXNpb24gMTE2NjY3KQorKysgU291
cmNlL0phdmFTY3JpcHRDb3JlL0phdmFTY3JpcHRDb3JlLnZjcHJvai9KYXZhU2NyaXB0Q29yZS9K
YXZhU2NyaXB0Q29yZS5kZWYJKHdvcmtpbmcgY29weSkKQEAgLTU2LDkgKzU2LDYgQEAgRVhQT1JU
UwogICAgID9hZGRCeXRlc0BTSEExQFdURkBAUUFFWFBCRUlAWgogICAgID9hZGRDdXJyZW50VGhy
ZWFkQE1hY2hpbmVUaHJlYWRzQEpTQ0BAUUFFWFhaCiAgICAgP2FkZEZpbmFsaXplckBIZWFwQEpT
Q0BAUUFFWFBBVkpTQ2VsbEAyQFA2QVgwQFpAWgotICAgID9hZGRQcm9wZXJ0eVRyYW5zaXRpb25A
U3RydWN0dXJlQEpTQ0BAU0FQQVYxMkBBQVZKU0dsb2JhbERhdGFAMkBQQVYxMkBBQlZJZGVudGlm
aWVyQDJASVBBVkpTQ2VsbEAyQEFBSUBaCi0gICAgP2FkZFByb3BlcnR5VHJhbnNpdGlvblRvRXhp
c3RpbmdTdHJ1Y3R1cmVAU3RydWN0dXJlQEpTQ0BAU0FQQVYxMkBQQVYxMkBBQlZJZGVudGlmaWVy
QDJASVBBVkpTQ2VsbEAyQEFBSUBaCi0gICAgP2FkZFByb3BlcnR5V2l0aG91dFRyYW5zaXRpb25A
U3RydWN0dXJlQEpTQ0BAUUFFSUFBVkpTR2xvYmFsRGF0YUAyQEFCVklkZW50aWZpZXJAMkBJUEFW
SlNDZWxsQDJAQFoKICAgICA/YWRkU2xvd0Nhc2VASWRlbnRpZmllckBKU0NAQENBP0FWPyRQYXNz
UmVmUHRyQFZTdHJpbmdJbXBsQFdURkBAQFdURkBAUEFWRXhlY1N0YXRlQDJAUEFWU3RyaW5nSW1w
bEA0QEBaCiAgICAgP2FkZFNsb3dDYXNlQElkZW50aWZpZXJASlNDQEBDQT9BVj8kUGFzc1JlZlB0
ckBWU3RyaW5nSW1wbEBXVEZAQEBXVEZAQFBBVkpTR2xvYmFsRGF0YUAyQFBBVlN0cmluZ0ltcGxA
NEBAWgogICAgID9hZGRTdGF0aWNHbG9iYWxzQEpTR2xvYmFsT2JqZWN0QEpTQ0BASUFFWFBBVUds
b2JhbFByb3BlcnR5SW5mb0AxMkBIQFoKQEAgLTk4LDExICs5NSw5IEBAIEVYUE9SVFMKICAgICA/
Y29uc3RydWN0QEpTQ0BAWUFQQVZKU09iamVjdEAxQFBBVkV4ZWNTdGF0ZUAxQFZKU1ZhbHVlQDFA
VzRDb25zdHJ1Y3RUeXBlQDFAQUJUQ29uc3RydWN0RGF0YUAxQEFCVkFyZ0xpc3RAMUBAWgogICAg
ID9jb25zdHJ1Y3RBcnJheUBKU0NAQFlBUEFWSlNBcnJheUAxQFBBVkV4ZWNTdGF0ZUAxQEFCVkFy
Z0xpc3RAMUBAWgogICAgID9jb25zdHJ1Y3RFbXB0eU9iamVjdEBKU0NAQFlBUEFWSlNPYmplY3RA
MUBQQVZFeGVjU3RhdGVAMUBAWgotICAgID9jb25zdHJ1Y3RGdW5jdGlvblNraXBwaW5nRXZhbEVu
YWJsZWRDaGVja0BKU0NAQFlBUEFWSlNPYmplY3RAMUBQQVZFeGVjU3RhdGVAMUBQQVZKU0dsb2Jh
bE9iamVjdEAxQEFCVkFyZ0xpc3RAMUBBQlZJZGVudGlmaWVyQDFAQUJWVVN0cmluZ0AxQEFCVlRl
eHRQb3NpdGlvbkBXVEZAQEBaCiAgICAgP2NvbnZlcnRMYXRpbjFUb1VURjhAVW5pY29kZUBXVEZA
QFlBP0FXNENvbnZlcnNpb25SZXN1bHRAMTJAUEFQQkVQQkVQQVBBRFBBREBaCiAgICAgP2NvbnZl
cnRVVEYxNlRvVVRGOEBVbmljb2RlQFdURkBAWUE/QVc0Q29udmVyc2lvblJlc3VsdEAxMkBQQVBC
X1dQQl9XUEFQQURQQURfTkBaCiAgICAgP2NvbnZlcnRVVEY4VG9VVEYxNkBVbmljb2RlQFdURkBA
WUE/QVc0Q29udmVyc2lvblJlc3VsdEAxMkBQQVBCRFBCRFBBUEFfV1BBX1dfTkBaCi0gICAgP2Ny
ZWF0ZUBKU0Z1bmN0aW9uQEpTQ0BAU0FQQVYxMkBQQVZFeGVjU3RhdGVAMkBQQVZKU0dsb2JhbE9i
amVjdEAyQEhBQlZJZGVudGlmaWVyQDJAUDZJX0owQFpXNEludHJpbnNpY0AyQDNAWgogICAgID9j
cmVhdGVASlNHbG9iYWxEYXRhQEpTQ0BAU0E/QVY/JFBhc3NSZWZQdHJAVkpTR2xvYmFsRGF0YUBK
U0NAQEBXVEZAQFc0VGhyZWFkU3RhY2tUeXBlQDJAVzRIZWFwU2l6ZUAyQEBaCiAgICAgP2NyZWF0
ZUBPcGFxdWVKU1N0cmluZ0BAU0E/QVY/JFBhc3NSZWZQdHJAVU9wYXF1ZUpTU3RyaW5nQEBAV1RG
QEBBQlZVU3RyaW5nQEpTQ0BAQFoKICAgICA/Y3JlYXRlQFJlZ0V4cEBKU0NAQFNBUEFWMTJAQUFW
SlNHbG9iYWxEYXRhQDJAQUJWVVN0cmluZ0AyQFc0UmVnRXhwRmxhZ3NAMkBAWgpAQCAtMTMzLDE5
ICsxMjgsMTMgQEAgRVhQT1JUUwogICAgID9kYXlJblllYXJAV1RGQEBZQUhOSEBaCiAgICAgP2Rl
Y3JlbWVudEBSZWZDb3VudGVkTGVha0NvdW50ZXJAV1RGQEBRQUVYWFoKICAgICA/ZGVmYXVsdFZh
bHVlQEpTT2JqZWN0QEpTQ0BAU0E/QVZKU1ZhbHVlQDJAUEJWMTJAUEFWRXhlY1N0YXRlQDJAVzRQ
cmVmZXJyZWRQcmltaXRpdmVUeXBlQDJAQFoKLSAgICA/ZGVmaW5lT3duUHJvcGVydHlASlNHbG9i
YWxPYmplY3RASlNDQEBTQV9OUEFWSlNPYmplY3RAMkBQQVZFeGVjU3RhdGVAMkBBQlZJZGVudGlm
aWVyQDJAQUFWUHJvcGVydHlEZXNjcmlwdG9yQDJAX05AWgotICAgID9kZWZpbmVPd25Qcm9wZXJ0
eUBKU09iamVjdEBKU0NAQFNBX05QQVYxMkBQQVZFeGVjU3RhdGVAMkBBQlZJZGVudGlmaWVyQDJA
QUFWUHJvcGVydHlEZXNjcmlwdG9yQDJAX05AWgogICAgID9kZWxldGVPd25lZFB0ckBXVEZAQFlB
WFBBVUhCSVRNQVBfX0BAQFoKICAgICA/ZGVsZXRlT3duZWRQdHJAV1RGQEBZQVhQQVVIQlJVU0hf
X0BAQFoKICAgICA/ZGVsZXRlT3duZWRQdHJAV1RGQEBZQVhQQVVIRENfX0BAQFoKICAgICA/ZGVs
ZXRlT3duZWRQdHJAV1RGQEBZQVhQQVVIRk9OVF9fQEBAWgogICAgID9kZWxldGVPd25lZFB0ckBX
VEZAQFlBWFBBVUhSR05fX0BAQFoKLSAgICA/ZGVsZXRlUHJvcGVydHlASlNPYmplY3RASlNDQEBT
QV9OUEFWSlNDZWxsQDJAUEFWRXhlY1N0YXRlQDJAQUJWSWRlbnRpZmllckAyQEBaCi0gICAgP2Rl
bGV0ZVByb3BlcnR5QEpTVmFyaWFibGVPYmplY3RASlNDQEBTQV9OUEFWSlNDZWxsQDJAUEFWRXhl
Y1N0YXRlQDJAQUJWSWRlbnRpZmllckAyQEBaCiAgICAgP2RlbGV0ZVByb3BlcnR5QnlJbmRleEBK
U09iamVjdEBKU0NAQFNBX05QQVZKU0NlbGxAMkBQQVZFeGVjU3RhdGVAMkBJQFoKICAgICA/ZGVs
ZXRlVGFibGVASGFzaFRhYmxlQEpTQ0BAUUJFWFhaCi0gICAgP2Rlc3BlY2lmeURpY3Rpb25hcnlG
dW5jdGlvbkBTdHJ1Y3R1cmVASlNDQEBRQUVYQUFWSlNHbG9iYWxEYXRhQDJAQUJWSWRlbnRpZmll
ckAyQEBaCi0gICAgP2Rlc3BlY2lmeUZ1bmN0aW9uVHJhbnNpdGlvbkBTdHJ1Y3R1cmVASlNDQEBT
QVBBVjEyQEFBVkpTR2xvYmFsRGF0YUAyQFBBVjEyQEFCVklkZW50aWZpZXJAMkBAWgogICAgID9k
ZXN0cm95QEpTQ2VsbEBKU0NAQEtBWFBBVjEyQEBaCiAgICAgP2Rlc3Ryb3lASlNHbG9iYWxPYmpl
Y3RASlNDQEBTQVhQQVZKU0NlbGxAMkBAWgogICAgID9kZXN0cm95QE91dE9mTGluZUJpdHNAQml0
VmVjdG9yQFdURkBAU0FYUEFWMTIzQEBaCkBAIC0xNzcsNyArMTY2LDYgQEAgRVhQT1JUUwogICAg
ID9maW5hbGl6ZUBXZWFrSGFuZGxlT3duZXJASlNDQEBVQUVYVj8kSGFuZGxlQFc0VW5rbm93bkBK
U0NAQEAyQFBBWEBaCiAgICAgP2ZpbmRBbGxvY2F0b3JAV2Vha1NldEBKU0NAQEFBRVBBVUZyZWVD
ZWxsQFdlYWtCbG9ja0AyQFhaCiAgICAgP2ZpbmlzaENyZWF0aW9uQERhdGVJbnN0YW5jZUBKU0NA
QElBRVhBQVZKU0dsb2JhbERhdGFAMkBOQFoKLSAgICA/ZmluaXNoQ3JlYXRpb25ASW50ZXJuYWxG
dW5jdGlvbkBKU0NAQElBRVhBQVZKU0dsb2JhbERhdGFAMkBBQlZJZGVudGlmaWVyQDJAQFoKICAg
ICA/ZmluaXNoQ3JlYXRpb25ASlNBcnJheUBKU0NAQElBRVhBQVZKU0dsb2JhbERhdGFAMkBJQFoK
ICAgICA/ZmluaXNoQ3JlYXRpb25AUmVnRXhwT2JqZWN0QEpTQ0BASUFFWFBBVkpTR2xvYmFsT2Jq
ZWN0QDJAQFoKICAgICA/ZmluaXNoQ3JlYXRpb25AU3RyaW5nT2JqZWN0QEpTQ0BASUFFWEFBVkpT
R2xvYmFsRGF0YUAyQFBBVkpTU3RyaW5nQDJAQFoKQEAgLTE4NiwyMSArMTc0LDE2IEBAIEVYUE9S
VFMKICAgICA/ZnJvbUBJZGVudGlmaWVyQEpTQ0BAU0E/QVYxMkBQQVZFeGVjU3RhdGVAMkBJQFoK
ICAgICA/ZnVuY3Rpb25HZXR0ZXJAUHJvcGVydHlTbG90QEpTQ0BAQUJFP0FWSlNWYWx1ZUAyQFBB
VkV4ZWNTdGF0ZUAyQEBaCiAgICAgP2Z1bmN0aW9uTmFtZUBEZWJ1Z2dlckNhbGxGcmFtZUBKU0NA
QFFCRVBCVlVTdHJpbmdAMkBYWgotICAgID9nZXRAU3RydWN0dXJlQEpTQ0BAUUFFSUFBVkpTR2xv
YmFsRGF0YUAyQEFCVklkZW50aWZpZXJAMkBBQUlBQVBBVkpTQ2VsbEAyQEBaCiAgICAgP2dldEBT
dHJ1Y3R1cmVASlNDQEBRQUVJQUFWSlNHbG9iYWxEYXRhQDJAUEFWU3RyaW5nSW1wbEBXVEZAQEFB
SUFBUEFWSlNDZWxsQDJAQFoKICAgICA/Z2V0Q2FsY3VsYXRlZERpc3BsYXlOYW1lQEpTQ0BAWUE/
QVZVU3RyaW5nQDFAUEFWRXhlY1N0YXRlQDFAUEFWSlNPYmplY3RAMUBAWgogICAgID9nZXRDYWxs
RGF0YUBKU0NlbGxASlNDQEBTQT9BVzRDYWxsVHlwZUAyQFBBVjEyQEFBVENhbGxEYXRhQDJAQFoK
ICAgICA/Z2V0Q29uc3RydWN0RGF0YUBKU0NlbGxASlNDQEBTQT9BVzRDb25zdHJ1Y3RUeXBlQDJA
UEFWMTJAQUFUQ29uc3RydWN0RGF0YUAyQEBaCiAgICAgP2dldEN1cnJlbnRMb2NhbFRpbWVAV1RG
QEBZQVhQQVV0bUBAQFoKICAgICA/Z2V0T2JqZWN0QEpTQ2VsbEBKU0NAQFFBRVBBVkpTT2JqZWN0
QDJAWFoKLSAgICA/Z2V0T3duUHJvcGVydHlEZXNjcmlwdG9yQEpTR2xvYmFsT2JqZWN0QEpTQ0BA
U0FfTlBBVkpTT2JqZWN0QDJAUEFWRXhlY1N0YXRlQDJAQUJWSWRlbnRpZmllckAyQEFBVlByb3Bl
cnR5RGVzY3JpcHRvckAyQEBaCi0gICAgP2dldE93blByb3BlcnR5RGVzY3JpcHRvckBKU09iamVj
dEBKU0NAQFNBX05QQVYxMkBQQVZFeGVjU3RhdGVAMkBBQlZJZGVudGlmaWVyQDJAQUFWUHJvcGVy
dHlEZXNjcmlwdG9yQDJAQFoKICAgICA/Z2V0T3duUHJvcGVydHlOYW1lc0BKU09iamVjdEBKU0NA
QFNBWFBBVjEyQFBBVkV4ZWNTdGF0ZUAyQEFBVlByb3BlcnR5TmFtZUFycmF5QDJAVzRFbnVtZXJh
dGlvbk1vZGVAMkBAWgogICAgID9nZXRPd25Qcm9wZXJ0eU5hbWVzQEpTVmFyaWFibGVPYmplY3RA
SlNDQEBTQVhQQVZKU09iamVjdEAyQFBBVkV4ZWNTdGF0ZUAyQEFBVlByb3BlcnR5TmFtZUFycmF5
QDJAVzRFbnVtZXJhdGlvbk1vZGVAMkBAWgotICAgID9nZXRPd25Qcm9wZXJ0eVNsb3RASlNHbG9i
YWxPYmplY3RASlNDQEBTQV9OUEFWSlNDZWxsQDJAUEFWRXhlY1N0YXRlQDJAQUJWSWRlbnRpZmll
ckAyQEFBVlByb3BlcnR5U2xvdEAyQEBaCiAgICAgP2dldE93blByb3BlcnR5U2xvdEJ5SW5kZXhA
SlNBcnJheUBKU0NAQFNBX05QQVZKU0NlbGxAMkBQQVZFeGVjU3RhdGVAMkBJQUFWUHJvcGVydHlT
bG90QDJAQFoKICAgICA/Z2V0T3duUHJvcGVydHlTbG90QnlJbmRleEBKU09iamVjdEBKU0NAQFNB
X05QQVZKU0NlbGxAMkBQQVZFeGVjU3RhdGVAMkBJQUFWUHJvcGVydHlTbG90QDJAQFoKLSAgICA/
Z2V0UHJvcGVydHlEZXNjcmlwdG9yQEpTT2JqZWN0QEpTQ0BAUUFFX05QQVZFeGVjU3RhdGVAMkBB
QlZJZGVudGlmaWVyQDJAQUFWUHJvcGVydHlEZXNjcmlwdG9yQDJAQFoKICAgICA/Z2V0UHJvcGVy
dHlOYW1lc0BKU09iamVjdEBKU0NAQFNBWFBBVjEyQFBBVkV4ZWNTdGF0ZUAyQEFBVlByb3BlcnR5
TmFtZUFycmF5QDJAVzRFbnVtZXJhdGlvbk1vZGVAMkBAWgogICAgID9nZXRTbGljZUBBcmdMaXN0
QEpTQ0BAUUJFWEhBQVYxMkBAWgogICAgID9nZXRTdGFja1RyYWNlQEludGVycHJldGVyQEpTQ0BA
U0FYUEFWSlNHbG9iYWxEYXRhQDJAQUFWPyRWZWN0b3JAVVN0YWNrRnJhbWVASlNDQEAkMEFAQFdU
RkBAQFoKQEAgLTIxMSw3ICsxOTQsNiBAQCBFWFBPUlRTCiAgICAgP2dsb2JhbE9iamVjdENvdW50
QEhlYXBASlNDQEBRQUVJWFoKICAgICA/Z3Jvd0BIYW5kbGVTZXRASlNDQEBBQUVYWFoKICAgICA/
aGFzSW5zdGFuY2VASlNPYmplY3RASlNDQEBTQV9OUEFWMTJAUEFWRXhlY1N0YXRlQDJAVkpTVmFs
dWVAMkAyQFoKLSAgICA/aGFzUHJvcGVydHlASlNPYmplY3RASlNDQEBRQkVfTlBBVkV4ZWNTdGF0
ZUAyQEFCVklkZW50aWZpZXJAMkBAWgogICAgID9oYXNQcm9wZXJ0eUBKU09iamVjdEBKU0NAQFFC
RV9OUEFWRXhlY1N0YXRlQDJASUBaCiAgICAgP2hhc2hTbG93Q2FzZUBTdHJpbmdJbXBsQFdURkBA
QUJFSVhaCiAgICAgP2hlYXBASGVhcEBKU0NAQFNBUEFWMTJAVkpTVmFsdWVAMkBAWgpAQCAtMjY2
LDEyICsyNDgsOCBAQCBFWFBPUlRTCiAgICAgP3Byb3RlY3RlZEdsb2JhbE9iamVjdENvdW50QEhl
YXBASlNDQEBRQUVJWFoKICAgICA/cHJvdGVjdGVkT2JqZWN0Q291bnRASGVhcEBKU0NAQFFBRUlY
WgogICAgID9wcm90ZWN0ZWRPYmplY3RUeXBlQ291bnRzQEhlYXBASlNDQEBRQUU/QVY/JFBhc3NP
d25QdHJAVj8kSGFzaENvdW50ZWRTZXRAUEJEVT8kUHRySGFzaEBQQkRAV1RGQEBVPyRIYXNoVHJh
aXRzQFBCREAyQEBXVEZAQEBXVEZAQFhaCi0gICAgP3B1dEBKU0dsb2JhbE9iamVjdEBKU0NAQFNB
WFBBVkpTQ2VsbEAyQFBBVkV4ZWNTdGF0ZUAyQEFCVklkZW50aWZpZXJAMkBWSlNWYWx1ZUAyQEFB
VlB1dFByb3BlcnR5U2xvdEAyQEBaCi0gICAgP3B1dEBKU09iamVjdEBKU0NAQFNBWFBBVkpTQ2Vs
bEAyQFBBVkV4ZWNTdGF0ZUAyQEFCVklkZW50aWZpZXJAMkBWSlNWYWx1ZUAyQEFBVlB1dFByb3Bl
cnR5U2xvdEAyQEBaCiAgICAgP3B1dEJ5SW5kZXhASlNPYmplY3RASlNDQEBTQVhQQVZKU0NlbGxA
MkBQQVZFeGVjU3RhdGVAMkBJVkpTVmFsdWVAMkBfTkBaCiAgICAgP3B1dERpcmVjdEluZGV4QmV5
b25kVmVjdG9yTGVuZ3RoQEpTQXJyYXlASlNDQEBBQUVfTlBBVkV4ZWNTdGF0ZUAyQElWSlNWYWx1
ZUAyQF9OQFoKLSAgICA/cHV0RGlyZWN0VmlydHVhbEBKU0dsb2JhbE9iamVjdEBKU0NAQFNBWFBB
VkpTT2JqZWN0QDJAUEFWRXhlY1N0YXRlQDJAQUJWSWRlbnRpZmllckAyQFZKU1ZhbHVlQDJASUBa
Ci0gICAgP3B1dERpcmVjdFZpcnR1YWxASlNPYmplY3RASlNDQEBTQVhQQVYxMkBQQVZFeGVjU3Rh
dGVAMkBBQlZJZGVudGlmaWVyQDJAVkpTVmFsdWVAMkBJQFoKICAgICA/cmFuZG9tTnVtYmVyQFdU
RkBAWUFOWFoKICAgICA/cmVjb21waWxlQWxsSlNGdW5jdGlvbnNARGVidWdnZXJASlNDQEBRQUVY
UEFWSlNHbG9iYWxEYXRhQDJAQFoKICAgICA/cmVnRXhwRmxhZ3NASlNDQEBZQT9BVzRSZWdFeHBG
bGFnc0AxQEFCVlVTdHJpbmdAMUBAWgpAQCAtMzA0LDcgKzI4Miw2IEBAIEVYUE9SVFMKICAgICA/
c2V0U2V0dGVyQFByb3BlcnR5RGVzY3JpcHRvckBKU0NAQFFBRVhWSlNWYWx1ZUAyQEBaCiAgICAg
P3NldFVuZGVmaW5lZEBQcm9wZXJ0eURlc2NyaXB0b3JASlNDQEBRQUVYWFoKICAgICA/c2V0VW53
cmFwcGVkT2JqZWN0QEpTR2xvYmFsVGhpc0BKU0NAQElBRVhBQVZKU0dsb2JhbERhdGFAMkBQQVZK
U0dsb2JhbE9iamVjdEAyQEBaCi0gICAgP3NldFVwU3RhdGljRnVuY3Rpb25TbG90QEpTQ0BAWUFf
TlBBVkV4ZWNTdGF0ZUAxQFBCVkhhc2hFbnRyeUAxQFBBVkpTT2JqZWN0QDFAQUJWSWRlbnRpZmll
ckAxQEFBVlByb3BlcnR5U2xvdEAxQEBaCiAgICAgP3NldFdyaXRhYmxlQFByb3BlcnR5RGVzY3Jp
cHRvckBKU0NAQFFBRVhfTkBaCiAgICAgP3NldHRlckBQcm9wZXJ0eURlc2NyaXB0b3JASlNDQEBR
QkU/QVZKU1ZhbHVlQDJAWFoKICAgICA/c2hyaW5rVG9GaXRAU3RyaW5nQnVpbGRlckBXVEZAQFFB
RVhYWgpAQCAtMzIwLDcgKzI5Nyw2IEBAIEVYUE9SVFMKICAgICA/c3RvcFByb2ZpbGluZ0BQcm9m
aWxlckBKU0NAQFFBRT9BVj8kUGFzc1JlZlB0ckBWUHJvZmlsZUBKU0NAQEBXVEZAQFBBVkV4ZWNT
dGF0ZUAyQEFCVlVTdHJpbmdAMkBAWgogICAgID9zdG9wU2FtcGxpbmdASlNHbG9iYWxEYXRhQEpT
Q0BAUUFFWFhaCiAgICAgP3N1YnN0cmluZ1NoYXJpbmdJbXBsQFVTdHJpbmdASlNDQEBRQkU/QVYx
MkBJSUBaCi0gICAgP3N5bWJvbFRhYmxlR2V0QEpTVmFyaWFibGVPYmplY3RASlNDQEBJQUVfTkFC
VklkZW50aWZpZXJAMkBBQVZQcm9wZXJ0eURlc2NyaXB0b3JAMkBAWgogICAgID9zeW50aGVzaXpl
UHJvdG90eXBlQEpTVmFsdWVASlNDQEBRQkVQQVZKU09iamVjdEAyQFBBVkV4ZWNTdGF0ZUAyQEBa
CiAgICAgP3RoaXNPYmplY3RARGVidWdnZXJDYWxsRnJhbWVASlNDQEBRQkVQQVZKU09iamVjdEAy
QFhaCiAgICAgP3Rocm93RXJyb3JASlNDQEBZQT9BVkpTVmFsdWVAMUBQQVZFeGVjU3RhdGVAMUBW
MjFAQFoKQEAgLTM0Myw3ICszMTksNiBAQCBFWFBPUlRTCiAgICAgP3RvU3RyaW5nU2xvd0Nhc2VA
SlNWYWx1ZUBKU0NAQEFCRVBBVkpTU3RyaW5nQDJAUEFWRXhlY1N0YXRlQDJAQFoKICAgICA/dG9U
aGlzT2JqZWN0QEpTT2JqZWN0QEpTQ0BAU0FQQVYxMkBQQVZKU0NlbGxAMkBQQVZFeGVjU3RhdGVA
MkBAWgogICAgID90b1RoaXNPYmplY3RTbG93Q2FzZUBKU1ZhbHVlQEpTQ0BAQUJFUEFWSlNPYmpl
Y3RAMkBQQVZFeGVjU3RhdGVAMkBAWgotICAgID90b1VJbnQzMkBJZGVudGlmaWVyQEpTQ0BAU0FJ
QUJWVVN0cmluZ0AyQEFBX05AWgogICAgID90cmFuc2ZlckBBcnJheUJ1ZmZlckBXVEZAQFFBRV9O
QUFWQXJyYXlCdWZmZXJDb250ZW50c0AyQEFBVj8kVmVjdG9yQFY/JFJlZlB0ckBWQXJyYXlCdWZm
ZXJWaWV3QFdURkBAQFdURkBAJDBBQEAyQEBaCiAgICAgP3RyeUZhc3RDYWxsb2NAV1RGQEBZQT9B
VVRyeU1hbGxvY1JldHVyblZhbHVlQDFASUlAWgogICAgID90cnlGYXN0TWFsbG9jQFdURkBAWUE/
QVVUcnlNYWxsb2NSZXR1cm5WYWx1ZUAxQElAWgpJbmRleDogU291cmNlL0phdmFTY3JpcHRDb3Jl
L0phdmFTY3JpcHRDb3JlLnhjb2RlcHJvai9wcm9qZWN0LnBieHByb2oKPT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0g
U291cmNlL0phdmFTY3JpcHRDb3JlL0phdmFTY3JpcHRDb3JlLnhjb2RlcHJvai9wcm9qZWN0LnBi
eHByb2oJKHJldmlzaW9uIDExNjY3MCkKKysrIFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9KYXZhU2Ny
aXB0Q29yZS54Y29kZXByb2ovcHJvamVjdC5wYnhwcm9qCSh3b3JraW5nIGNvcHkpCkBAIC0zNjIs
NiArMzYyLDcgQEAKIAkJODYwNEY1MDUxNDNDRTFDMjAwQjI5NUY1IC8qIEpTR2xvYmFsVGhpcy5o
IGluIEhlYWRlcnMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gODYwNEY1MDMx
NDNDRTFDMTAwQjI5NUY1IC8qIEpTR2xvYmFsVGhpcy5oICovOyBzZXR0aW5ncyA9IHtBVFRSSUJV
VEVTID0gKFByaXZhdGUsICk7IH07IH07CiAJCTg2MEJEODAxMTQ4RUE2RjIwMDExMkIyRiAvKiBJ
bnRyaW5zaWMuaCBpbiBIZWFkZXJzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9
IDg2QkY2NDJBMTQ4REIyQjUwMDRERTM2QSAvKiBJbnRyaW5zaWMuaCAqLzsgc2V0dGluZ3MgPSB7
QVRUUklCVVRFUyA9IChQcml2YXRlLCApOyB9OyB9OwogCQk4NjEyRTRDRDE1MjM4OUVDMDBDODM2
QkUgLyogTWF0Y2hSZXN1bHQuaCBpbiBIZWFkZXJzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsg
ZmlsZVJlZiA9IDg2MTJFNENCMTUyMjkxODQwMEM4MzZCRSAvKiBNYXRjaFJlc3VsdC5oICovOyBz
ZXR0aW5ncyA9IHtBVFRSSUJVVEVTID0gKFByaXZhdGUsICk7IH07IH07CisJCTg2MTU4QUIzMTU1
QzhCNDAwMEI0NUM5QyAvKiBQcm9wZXJ0eU5hbWUuaCBpbiBIZWFkZXJzICovID0ge2lzYSA9IFBC
WEJ1aWxkRmlsZTsgZmlsZVJlZiA9IDg2MTU4QUIyMTU1QzhCM0YwMEI0NUM5QyAvKiBQcm9wZXJ0
eU5hbWUuaCAqLzsgc2V0dGluZ3MgPSB7QVRUUklCVVRFUyA9IChQcml2YXRlLCApOyB9OyB9Owog
CQk4NjNCMjNFMDBGQzYxMTg5MDA3MDNBQTQgLyogTWFjcm9Bc3NlbWJsZXJDb2RlUmVmLmggaW4g
SGVhZGVycyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSA4NjNCMjNERjBGQzYw
RTYyMDA3MDNBQTQgLyogTWFjcm9Bc3NlbWJsZXJDb2RlUmVmLmggKi87IHNldHRpbmdzID0ge0FU
VFJJQlVURVMgPSAoUHJpdmF0ZSwgKTsgfTsgfTsKIAkJODYzQzZEOUMxNTIxMTExQTAwNTg1RTRF
IC8qIFlhcnJDYW5vbmljYWxpemVVQ1MyLmNwcCBpbiBTb3VyY2VzICovID0ge2lzYSA9IFBCWEJ1
aWxkRmlsZTsgZmlsZVJlZiA9IDg2M0M2RDk4MTUyMTExMTIwMDU4NUU0RSAvKiBZYXJyQ2Fub25p
Y2FsaXplVUNTMi5jcHAgKi87IH07CiAJCTg2NDJDNTEwMTUxQzA2QTkwMDQ2RDRFRiAvKiBSZWdF
eHBDYWNoZWRSZXN1bHQuY3BwIGluIFNvdXJjZXMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBm
aWxlUmVmID0gODZGNzVFRkIxNTFDMDYyRjAwN0M5QkEzIC8qIFJlZ0V4cENhY2hlZFJlc3VsdC5j
cHAgKi87IH07CkBAIC0xMDIwLDYgKzEwMjEsNyBAQAogCQk4NjA0RjRGMjE0M0E2QzQ0MDBCMjk1
RjUgLyogQ2hhbmdlTG9nICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGxhc3RLbm93bkZp
bGVUeXBlID0gdGV4dDsgcGF0aCA9IENoYW5nZUxvZzsgc291cmNlVHJlZSA9ICI8Z3JvdXA+Ijsg
fTsKIAkJODYwNEY1MDMxNDNDRTFDMTAwQjI5NUY1IC8qIEpTR2xvYmFsVGhpcy5oICovID0ge2lz
YSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBl
ID0gc291cmNlY29kZS5jLmg7IHBhdGggPSBKU0dsb2JhbFRoaXMuaDsgc291cmNlVHJlZSA9ICI8
Z3JvdXA+IjsgfTsKIAkJODYxMkU0Q0IxNTIyOTE4NDAwQzgzNkJFIC8qIE1hdGNoUmVzdWx0Lmgg
Ki8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3du
RmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmMuaDsgcGF0aCA9IE1hdGNoUmVzdWx0Lmg7IHNvdXJjZVRy
ZWUgPSAiPGdyb3VwPiI7IH07CisJCTg2MTU4QUIyMTU1QzhCM0YwMEI0NUM5QyAvKiBQcm9wZXJ0
eU5hbWUuaCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBs
YXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuYy5oOyBwYXRoID0gUHJvcGVydHlOYW1lLmg7
IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CiAJCTg2M0IyM0RGMEZDNjBFNjIwMDcwM0FBNCAv
KiBNYWNyb0Fzc2VtYmxlckNvZGVSZWYuaCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBm
aWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuYy5oOyBwYXRo
ID0gTWFjcm9Bc3NlbWJsZXJDb2RlUmVmLmg7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CiAJ
CTg2M0M2RDk4MTUyMTExMTIwMDU4NUU0RSAvKiBZYXJyQ2Fub25pY2FsaXplVUNTMi5jcHAgKi8g
PSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmls
ZVR5cGUgPSBzb3VyY2Vjb2RlLmNwcC5jcHA7IG5hbWUgPSBZYXJyQ2Fub25pY2FsaXplVUNTMi5j
cHA7IHBhdGggPSB5YXJyL1lhcnJDYW5vbmljYWxpemVVQ1MyLmNwcDsgc291cmNlVHJlZSA9ICI8
Z3JvdXA+IjsgfTsKIAkJODYzQzZEOTkxNTIxMTExMjAwNTg1RTRFIC8qIFlhcnJDYW5vbmljYWxp
emVVQ1MyLmggKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsg
bGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmMuaDsgbmFtZSA9IFlhcnJDYW5vbmljYWxp
emVVQ1MyLmg7IHBhdGggPSB5YXJyL1lhcnJDYW5vbmljYWxpemVVQ1MyLmg7IHNvdXJjZVRyZWUg
PSAiPGdyb3VwPiI7IH07CkBAIC0xOTM2LDYgKzE5MzgsNyBAQAogCQkJCUE3RkI2MEEzMTAzRjdE
QzIwMDE3QTI4NiAvKiBQcm9wZXJ0eURlc2NyaXB0b3IuY3BwICovLAogCQkJCUE3RkI2MDRCMTAz
RjVFQUIwMDE3QTI4NiAvKiBQcm9wZXJ0eURlc2NyaXB0b3IuaCAqLywKIAkJCQlCQzk1NDM3QzBF
QkE3MEZEMDA3MkI2RDMgLyogUHJvcGVydHlNYXBIYXNoVGFibGUuaCAqLywKKwkJCQk4NjE1OEFC
MjE1NUM4QjNGMDBCNDVDOUMgLyogUHJvcGVydHlOYW1lLmggKi8sCiAJCQkJNjU0MDBDMEYwQTY5
QkFGMjAwNTA5ODg3IC8qIFByb3BlcnR5TmFtZUFycmF5LmNwcCAqLywKIAkJCQk2NTQwMEMxMDBB
NjlCQUYyMDA1MDk4ODcgLyogUHJvcGVydHlOYW1lQXJyYXkuaCAqLywKIAkJCQk2NTYyMUU2QjA4
OUU4NTk3MDA3NjBGMzUgLyogUHJvcGVydHlTbG90LmNwcCAqLywKQEAgLTI1ODAsNiArMjU4Myw3
IEBACiAJCQkJMEYxRTNBNDcxNTM0Q0JCOTAwMEY5NDU2IC8qIERGR0RvdWJsZUZvcm1hdFN0YXRl
LmggaW4gSGVhZGVycyAqLywKIAkJCQkxNDE1MDEzMzE1NEJCMTNGMDA1RDhDOTggLyogV2Vha1Nl
dElubGluZXMuaCBpbiBIZWFkZXJzICovLAogCQkJCTE0ODE2RTFDMTU0Q0M1NkMwMEI4MDU0QyAv
KiBCbG9ja0FsbG9jYXRvci5oIGluIEhlYWRlcnMgKi8sCisJCQkJODYxNThBQjMxNTVDOEI0MDAw
QjQ1QzlDIC8qIFByb3BlcnR5TmFtZS5oIGluIEhlYWRlcnMgKi8sCiAJCQkpOwogCQkJcnVuT25s
eUZvckRlcGxveW1lbnRQb3N0cHJvY2Vzc2luZyA9IDA7CiAJCX07CkluZGV4OiBTb3VyY2UvSmF2
YVNjcmlwdENvcmUvZGVidWdnZXIvRGVidWdnZXJBY3RpdmF0aW9uLmNwcAo9PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0t
LSBTb3VyY2UvSmF2YVNjcmlwdENvcmUvZGVidWdnZXIvRGVidWdnZXJBY3RpdmF0aW9uLmNwcAko
cmV2aXNpb24gMTE2NjY3KQorKysgU291cmNlL0phdmFTY3JpcHRDb3JlL2RlYnVnZ2VyL0RlYnVn
Z2VyQWN0aXZhdGlvbi5jcHAJKHdvcmtpbmcgY29weSkKQEAgLTY1LDI1ICs2NSwyNSBAQCBVU3Ry
aW5nIERlYnVnZ2VyQWN0aXZhdGlvbjo6Y2xhc3NOYW1lKGNvCiAgICAgcmV0dXJuIHRoaXNPYmpl
Y3QtPm1fYWN0aXZhdGlvbi0+bWV0aG9kVGFibGUoKS0+Y2xhc3NOYW1lKHRoaXNPYmplY3QtPm1f
YWN0aXZhdGlvbi5nZXQoKSk7CiB9CiAKLWJvb2wgRGVidWdnZXJBY3RpdmF0aW9uOjpnZXRPd25Q
cm9wZXJ0eVNsb3QoSlNDZWxsKiBjZWxsLCBFeGVjU3RhdGUqIGV4ZWMsIGNvbnN0IElkZW50aWZp
ZXImIHByb3BlcnR5TmFtZSwgUHJvcGVydHlTbG90JiBzbG90KQorYm9vbCBEZWJ1Z2dlckFjdGl2
YXRpb246OmdldE93blByb3BlcnR5U2xvdChKU0NlbGwqIGNlbGwsIEV4ZWNTdGF0ZSogZXhlYywg
UHJvcGVydHlOYW1lIHByb3BlcnR5TmFtZSwgUHJvcGVydHlTbG90JiBzbG90KQogewogICAgIERl
YnVnZ2VyQWN0aXZhdGlvbiogdGhpc09iamVjdCA9IGpzQ2FzdDxEZWJ1Z2dlckFjdGl2YXRpb24q
PihjZWxsKTsKICAgICByZXR1cm4gdGhpc09iamVjdC0+bV9hY3RpdmF0aW9uLT5tZXRob2RUYWJs
ZSgpLT5nZXRPd25Qcm9wZXJ0eVNsb3QodGhpc09iamVjdC0+bV9hY3RpdmF0aW9uLmdldCgpLCBl
eGVjLCBwcm9wZXJ0eU5hbWUsIHNsb3QpOwogfQogCi12b2lkIERlYnVnZ2VyQWN0aXZhdGlvbjo6
cHV0KEpTQ2VsbCogY2VsbCwgRXhlY1N0YXRlKiBleGVjLCBjb25zdCBJZGVudGlmaWVyJiBwcm9w
ZXJ0eU5hbWUsIEpTVmFsdWUgdmFsdWUsIFB1dFByb3BlcnR5U2xvdCYgc2xvdCkKK3ZvaWQgRGVi
dWdnZXJBY3RpdmF0aW9uOjpwdXQoSlNDZWxsKiBjZWxsLCBFeGVjU3RhdGUqIGV4ZWMsIFByb3Bl
cnR5TmFtZSBwcm9wZXJ0eU5hbWUsIEpTVmFsdWUgdmFsdWUsIFB1dFByb3BlcnR5U2xvdCYgc2xv
dCkKIHsKICAgICBEZWJ1Z2dlckFjdGl2YXRpb24qIHRoaXNPYmplY3QgPSBqc0Nhc3Q8RGVidWdn
ZXJBY3RpdmF0aW9uKj4oY2VsbCk7CiAgICAgdGhpc09iamVjdC0+bV9hY3RpdmF0aW9uLT5tZXRo
b2RUYWJsZSgpLT5wdXQodGhpc09iamVjdC0+bV9hY3RpdmF0aW9uLmdldCgpLCBleGVjLCBwcm9w
ZXJ0eU5hbWUsIHZhbHVlLCBzbG90KTsKIH0KIAotdm9pZCBEZWJ1Z2dlckFjdGl2YXRpb246OnB1
dERpcmVjdFZpcnR1YWwoSlNPYmplY3QqIG9iamVjdCwgRXhlY1N0YXRlKiBleGVjLCBjb25zdCBJ
ZGVudGlmaWVyJiBwcm9wZXJ0eU5hbWUsIEpTVmFsdWUgdmFsdWUsIHVuc2lnbmVkIGF0dHJpYnV0
ZXMpCit2b2lkIERlYnVnZ2VyQWN0aXZhdGlvbjo6cHV0RGlyZWN0VmlydHVhbChKU09iamVjdCog
b2JqZWN0LCBFeGVjU3RhdGUqIGV4ZWMsIFByb3BlcnR5TmFtZSBwcm9wZXJ0eU5hbWUsIEpTVmFs
dWUgdmFsdWUsIHVuc2lnbmVkIGF0dHJpYnV0ZXMpCiB7CiAgICAgRGVidWdnZXJBY3RpdmF0aW9u
KiB0aGlzT2JqZWN0ID0ganNDYXN0PERlYnVnZ2VyQWN0aXZhdGlvbio+KG9iamVjdCk7CiAgICAg
dGhpc09iamVjdC0+bV9hY3RpdmF0aW9uLT5tZXRob2RUYWJsZSgpLT5wdXREaXJlY3RWaXJ0dWFs
KHRoaXNPYmplY3QtPm1fYWN0aXZhdGlvbi5nZXQoKSwgZXhlYywgcHJvcGVydHlOYW1lLCB2YWx1
ZSwgYXR0cmlidXRlcyk7CiB9CiAKLWJvb2wgRGVidWdnZXJBY3RpdmF0aW9uOjpkZWxldGVQcm9w
ZXJ0eShKU0NlbGwqIGNlbGwsIEV4ZWNTdGF0ZSogZXhlYywgY29uc3QgSWRlbnRpZmllciYgcHJv
cGVydHlOYW1lKQorYm9vbCBEZWJ1Z2dlckFjdGl2YXRpb246OmRlbGV0ZVByb3BlcnR5KEpTQ2Vs
bCogY2VsbCwgRXhlY1N0YXRlKiBleGVjLCBQcm9wZXJ0eU5hbWUgcHJvcGVydHlOYW1lKQogewog
ICAgIERlYnVnZ2VyQWN0aXZhdGlvbiogdGhpc09iamVjdCA9IGpzQ2FzdDxEZWJ1Z2dlckFjdGl2
YXRpb24qPihjZWxsKTsKICAgICByZXR1cm4gdGhpc09iamVjdC0+bV9hY3RpdmF0aW9uLT5tZXRo
b2RUYWJsZSgpLT5kZWxldGVQcm9wZXJ0eSh0aGlzT2JqZWN0LT5tX2FjdGl2YXRpb24uZ2V0KCks
IGV4ZWMsIHByb3BlcnR5TmFtZSk7CkBAIC05NSwxMyArOTUsMTMgQEAgdm9pZCBEZWJ1Z2dlckFj
dGl2YXRpb246OmdldE93blByb3BlcnR5TgogICAgIHRoaXNPYmplY3QtPm1fYWN0aXZhdGlvbi0+
bWV0aG9kVGFibGUoKS0+Z2V0UHJvcGVydHlOYW1lcyh0aGlzT2JqZWN0LT5tX2FjdGl2YXRpb24u
Z2V0KCksIGV4ZWMsIHByb3BlcnR5TmFtZXMsIG1vZGUpOwogfQogCi1ib29sIERlYnVnZ2VyQWN0
aXZhdGlvbjo6Z2V0T3duUHJvcGVydHlEZXNjcmlwdG9yKEpTT2JqZWN0KiBvYmplY3QsIEV4ZWNT
dGF0ZSogZXhlYywgY29uc3QgSWRlbnRpZmllciYgcHJvcGVydHlOYW1lLCBQcm9wZXJ0eURlc2Ny
aXB0b3ImIGRlc2NyaXB0b3IpCitib29sIERlYnVnZ2VyQWN0aXZhdGlvbjo6Z2V0T3duUHJvcGVy
dHlEZXNjcmlwdG9yKEpTT2JqZWN0KiBvYmplY3QsIEV4ZWNTdGF0ZSogZXhlYywgUHJvcGVydHlO
YW1lIHByb3BlcnR5TmFtZSwgUHJvcGVydHlEZXNjcmlwdG9yJiBkZXNjcmlwdG9yKQogewogICAg
IERlYnVnZ2VyQWN0aXZhdGlvbiogdGhpc09iamVjdCA9IGpzQ2FzdDxEZWJ1Z2dlckFjdGl2YXRp
b24qPihvYmplY3QpOwogICAgIHJldHVybiB0aGlzT2JqZWN0LT5tX2FjdGl2YXRpb24tPm1ldGhv
ZFRhYmxlKCktPmdldE93blByb3BlcnR5RGVzY3JpcHRvcih0aGlzT2JqZWN0LT5tX2FjdGl2YXRp
b24uZ2V0KCksIGV4ZWMsIHByb3BlcnR5TmFtZSwgZGVzY3JpcHRvcik7CiB9CiAKLWJvb2wgRGVi
dWdnZXJBY3RpdmF0aW9uOjpkZWZpbmVPd25Qcm9wZXJ0eShKU09iamVjdCogb2JqZWN0LCBFeGVj
U3RhdGUqIGV4ZWMsIGNvbnN0IElkZW50aWZpZXImIHByb3BlcnR5TmFtZSwgUHJvcGVydHlEZXNj
cmlwdG9yJiBkZXNjcmlwdG9yLCBib29sIHNob3VsZFRocm93KQorYm9vbCBEZWJ1Z2dlckFjdGl2
YXRpb246OmRlZmluZU93blByb3BlcnR5KEpTT2JqZWN0KiBvYmplY3QsIEV4ZWNTdGF0ZSogZXhl
YywgUHJvcGVydHlOYW1lIHByb3BlcnR5TmFtZSwgUHJvcGVydHlEZXNjcmlwdG9yJiBkZXNjcmlw
dG9yLCBib29sIHNob3VsZFRocm93KQogewogICAgIERlYnVnZ2VyQWN0aXZhdGlvbiogdGhpc09i
amVjdCA9IGpzQ2FzdDxEZWJ1Z2dlckFjdGl2YXRpb24qPihvYmplY3QpOwogICAgIHJldHVybiB0
aGlzT2JqZWN0LT5tX2FjdGl2YXRpb24tPm1ldGhvZFRhYmxlKCktPmRlZmluZU93blByb3BlcnR5
KHRoaXNPYmplY3QtPm1fYWN0aXZhdGlvbi5nZXQoKSwgZXhlYywgcHJvcGVydHlOYW1lLCBkZXNj
cmlwdG9yLCBzaG91bGRUaHJvdyk7CkluZGV4OiBTb3VyY2UvSmF2YVNjcmlwdENvcmUvZGVidWdn
ZXIvRGVidWdnZXJBY3RpdmF0aW9uLmgKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL0phdmFTY3JpcHRD
b3JlL2RlYnVnZ2VyL0RlYnVnZ2VyQWN0aXZhdGlvbi5oCShyZXZpc2lvbiAxMTY2NjcpCisrKyBT
b3VyY2UvSmF2YVNjcmlwdENvcmUvZGVidWdnZXIvRGVidWdnZXJBY3RpdmF0aW9uLmgJKHdvcmtp
bmcgY29weSkKQEAgLTQzLDEzICs0MywxMyBAQCBuYW1lc3BhY2UgSlNDIHsKIAogICAgICAgICBz
dGF0aWMgdm9pZCB2aXNpdENoaWxkcmVuKEpTQ2VsbCosIFNsb3RWaXNpdG9yJik7CiAgICAgICAg
IHN0YXRpYyBVU3RyaW5nIGNsYXNzTmFtZShjb25zdCBKU09iamVjdCopOwotICAgICAgICBzdGF0
aWMgYm9vbCBnZXRPd25Qcm9wZXJ0eVNsb3QoSlNDZWxsKiwgRXhlY1N0YXRlKiwgY29uc3QgSWRl
bnRpZmllciYgcHJvcGVydHlOYW1lLCBQcm9wZXJ0eVNsb3QmKTsKLSAgICAgICAgc3RhdGljIHZv
aWQgcHV0KEpTQ2VsbCosIEV4ZWNTdGF0ZSosIGNvbnN0IElkZW50aWZpZXImIHByb3BlcnR5TmFt
ZSwgSlNWYWx1ZSwgUHV0UHJvcGVydHlTbG90Jik7Ci0gICAgICAgIHN0YXRpYyB2b2lkIHB1dERp
cmVjdFZpcnR1YWwoSlNPYmplY3QqLCBFeGVjU3RhdGUqLCBjb25zdCBJZGVudGlmaWVyJiBwcm9w
ZXJ0eU5hbWUsIEpTVmFsdWUsIHVuc2lnbmVkIGF0dHJpYnV0ZXMpOwotICAgICAgICBzdGF0aWMg
Ym9vbCBkZWxldGVQcm9wZXJ0eShKU0NlbGwqLCBFeGVjU3RhdGUqLCBjb25zdCBJZGVudGlmaWVy
JiBwcm9wZXJ0eU5hbWUpOworICAgICAgICBzdGF0aWMgYm9vbCBnZXRPd25Qcm9wZXJ0eVNsb3Qo
SlNDZWxsKiwgRXhlY1N0YXRlKiwgUHJvcGVydHlOYW1lLCBQcm9wZXJ0eVNsb3QmKTsKKyAgICAg
ICAgc3RhdGljIHZvaWQgcHV0KEpTQ2VsbCosIEV4ZWNTdGF0ZSosIFByb3BlcnR5TmFtZSwgSlNW
YWx1ZSwgUHV0UHJvcGVydHlTbG90Jik7CisgICAgICAgIHN0YXRpYyB2b2lkIHB1dERpcmVjdFZp
cnR1YWwoSlNPYmplY3QqLCBFeGVjU3RhdGUqLCBQcm9wZXJ0eU5hbWUsIEpTVmFsdWUsIHVuc2ln
bmVkIGF0dHJpYnV0ZXMpOworICAgICAgICBzdGF0aWMgYm9vbCBkZWxldGVQcm9wZXJ0eShKU0Nl
bGwqLCBFeGVjU3RhdGUqLCBQcm9wZXJ0eU5hbWUpOwogICAgICAgICBzdGF0aWMgdm9pZCBnZXRP
d25Qcm9wZXJ0eU5hbWVzKEpTT2JqZWN0KiwgRXhlY1N0YXRlKiwgUHJvcGVydHlOYW1lQXJyYXkm
LCBFbnVtZXJhdGlvbk1vZGUpOwotICAgICAgICBzdGF0aWMgYm9vbCBnZXRPd25Qcm9wZXJ0eURl
c2NyaXB0b3IoSlNPYmplY3QqLCBFeGVjU3RhdGUqLCBjb25zdCBJZGVudGlmaWVyJiwgUHJvcGVy
dHlEZXNjcmlwdG9yJik7Ci0gICAgICAgIHN0YXRpYyBib29sIGRlZmluZU93blByb3BlcnR5KEpT
T2JqZWN0KiwgRXhlY1N0YXRlKiwgY29uc3QgSWRlbnRpZmllciYgcHJvcGVydHlOYW1lLCBQcm9w
ZXJ0eURlc2NyaXB0b3ImLCBib29sIHNob3VsZFRocm93KTsKKyAgICAgICAgc3RhdGljIGJvb2wg
Z2V0T3duUHJvcGVydHlEZXNjcmlwdG9yKEpTT2JqZWN0KiwgRXhlY1N0YXRlKiwgUHJvcGVydHlO
YW1lLCBQcm9wZXJ0eURlc2NyaXB0b3ImKTsKKyAgICAgICAgc3RhdGljIGJvb2wgZGVmaW5lT3du
UHJvcGVydHkoSlNPYmplY3QqLCBFeGVjU3RhdGUqLCBQcm9wZXJ0eU5hbWUsIFByb3BlcnR5RGVz
Y3JpcHRvciYsIGJvb2wgc2hvdWxkVGhyb3cpOwogCiAgICAgICAgIEpTX0VYUE9SVERBVEEgc3Rh
dGljIGNvbnN0IENsYXNzSW5mbyBzX2luZm87CiAKSW5kZXg6IFNvdXJjZS9KYXZhU2NyaXB0Q29y
ZS9ydW50aW1lL0FyZ3VtZW50cy5jcHAKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL0phdmFTY3JpcHRD
b3JlL3J1bnRpbWUvQXJndW1lbnRzLmNwcAkocmV2aXNpb24gMTE2NjY3KQorKysgU291cmNlL0ph
dmFTY3JpcHRDb3JlL3J1bnRpbWUvQXJndW1lbnRzLmNwcAkod29ya2luZyBjb3B5KQpAQCAtMTI0
LDEyICsxMjQsMTIgQEAgdm9pZCBBcmd1bWVudHM6OmNyZWF0ZVN0cmljdE1vZGVDYWxsZWVJZgog
ICAgIG1ldGhvZFRhYmxlKCktPmRlZmluZU93blByb3BlcnR5KHRoaXMsIGV4ZWMsIGV4ZWMtPnBy
b3BlcnR5TmFtZXMoKS5jYWxsZWUsIGRlc2NyaXB0b3IsIGZhbHNlKTsKIH0KIAotYm9vbCBBcmd1
bWVudHM6OmdldE93blByb3BlcnR5U2xvdChKU0NlbGwqIGNlbGwsIEV4ZWNTdGF0ZSogZXhlYywg
Y29uc3QgSWRlbnRpZmllciYgcHJvcGVydHlOYW1lLCBQcm9wZXJ0eVNsb3QmIHNsb3QpCitib29s
IEFyZ3VtZW50czo6Z2V0T3duUHJvcGVydHlTbG90KEpTQ2VsbCogY2VsbCwgRXhlY1N0YXRlKiBl
eGVjLCBQcm9wZXJ0eU5hbWUgcHJvcGVydHlOYW1lLCBQcm9wZXJ0eVNsb3QmIHNsb3QpCiB7CiAg
ICAgQXJndW1lbnRzKiB0aGlzT2JqZWN0ID0ganNDYXN0PEFyZ3VtZW50cyo+KGNlbGwpOwotICAg
IGJvb2wgaXNBcnJheUluZGV4OwotICAgIHVuc2lnbmVkIGkgPSBwcm9wZXJ0eU5hbWUudG9BcnJh
eUluZGV4KGlzQXJyYXlJbmRleCk7Ci0gICAgaWYgKGlzQXJyYXlJbmRleCAmJiBpIDwgdGhpc09i
amVjdC0+ZC0+bnVtQXJndW1lbnRzICYmICghdGhpc09iamVjdC0+ZC0+ZGVsZXRlZEFyZ3VtZW50
cyB8fCAhdGhpc09iamVjdC0+ZC0+ZGVsZXRlZEFyZ3VtZW50c1tpXSkpIHsKKyAgICB1bnNpZ25l
ZCBpID0gcHJvcGVydHlOYW1lLmFzSW5kZXgoKTsKKyAgICBpZiAoaSA8IHRoaXNPYmplY3QtPmQt
Pm51bUFyZ3VtZW50cyAmJiAoIXRoaXNPYmplY3QtPmQtPmRlbGV0ZWRBcmd1bWVudHMgfHwgIXRo
aXNPYmplY3QtPmQtPmRlbGV0ZWRBcmd1bWVudHNbaV0pKSB7CisgICAgICAgIEFTU0VSVChpIDwg
UHJvcGVydHlOYW1lOjpOb3RBbkluZGV4KTsKICAgICAgICAgc2xvdC5zZXRWYWx1ZSh0aGlzT2Jq
ZWN0LT5hcmd1bWVudChpKS5nZXQoKSk7CiAgICAgICAgIHJldHVybiB0cnVlOwogICAgIH0KQEAg
LTE1MywxMiArMTUzLDEyIEBAIGJvb2wgQXJndW1lbnRzOjpnZXRPd25Qcm9wZXJ0eVNsb3QoSlND
ZWwKICAgICByZXR1cm4gSlNPYmplY3Q6OmdldE93blByb3BlcnR5U2xvdCh0aGlzT2JqZWN0LCBl
eGVjLCBwcm9wZXJ0eU5hbWUsIHNsb3QpOwogfQogCi1ib29sIEFyZ3VtZW50czo6Z2V0T3duUHJv
cGVydHlEZXNjcmlwdG9yKEpTT2JqZWN0KiBvYmplY3QsIEV4ZWNTdGF0ZSogZXhlYywgY29uc3Qg
SWRlbnRpZmllciYgcHJvcGVydHlOYW1lLCBQcm9wZXJ0eURlc2NyaXB0b3ImIGRlc2NyaXB0b3Ip
Citib29sIEFyZ3VtZW50czo6Z2V0T3duUHJvcGVydHlEZXNjcmlwdG9yKEpTT2JqZWN0KiBvYmpl
Y3QsIEV4ZWNTdGF0ZSogZXhlYywgUHJvcGVydHlOYW1lIHByb3BlcnR5TmFtZSwgUHJvcGVydHlE
ZXNjcmlwdG9yJiBkZXNjcmlwdG9yKQogewogICAgIEFyZ3VtZW50cyogdGhpc09iamVjdCA9IGpz
Q2FzdDxBcmd1bWVudHMqPihvYmplY3QpOwotICAgIGJvb2wgaXNBcnJheUluZGV4OwotICAgIHVu
c2lnbmVkIGkgPSBwcm9wZXJ0eU5hbWUudG9BcnJheUluZGV4KGlzQXJyYXlJbmRleCk7Ci0gICAg
aWYgKGlzQXJyYXlJbmRleCAmJiBpIDwgdGhpc09iamVjdC0+ZC0+bnVtQXJndW1lbnRzICYmICgh
dGhpc09iamVjdC0+ZC0+ZGVsZXRlZEFyZ3VtZW50cyB8fCAhdGhpc09iamVjdC0+ZC0+ZGVsZXRl
ZEFyZ3VtZW50c1tpXSkpIHsKKyAgICB1bnNpZ25lZCBpID0gcHJvcGVydHlOYW1lLmFzSW5kZXgo
KTsKKyAgICBpZiAoaSA8IHRoaXNPYmplY3QtPmQtPm51bUFyZ3VtZW50cyAmJiAoIXRoaXNPYmpl
Y3QtPmQtPmRlbGV0ZWRBcmd1bWVudHMgfHwgIXRoaXNPYmplY3QtPmQtPmRlbGV0ZWRBcmd1bWVu
dHNbaV0pKSB7CisgICAgICAgIEFTU0VSVChpIDwgUHJvcGVydHlOYW1lOjpOb3RBbkluZGV4KTsK
ICAgICAgICAgZGVzY3JpcHRvci5zZXREZXNjcmlwdG9yKHRoaXNPYmplY3QtPmFyZ3VtZW50KGkp
LmdldCgpLCBOb25lKTsKICAgICAgICAgcmV0dXJuIHRydWU7CiAgICAgfQpAQCAtMjA4LDEyICsy
MDgsMTIgQEAgdm9pZCBBcmd1bWVudHM6OnB1dEJ5SW5kZXgoSlNDZWxsKiBjZWxsLAogICAgIEpT
T2JqZWN0OjpwdXQodGhpc09iamVjdCwgZXhlYywgSWRlbnRpZmllcihleGVjLCBVU3RyaW5nOjpu
dW1iZXIoaSkpLCB2YWx1ZSwgc2xvdCk7CiB9CiAKLXZvaWQgQXJndW1lbnRzOjpwdXQoSlNDZWxs
KiBjZWxsLCBFeGVjU3RhdGUqIGV4ZWMsIGNvbnN0IElkZW50aWZpZXImIHByb3BlcnR5TmFtZSwg
SlNWYWx1ZSB2YWx1ZSwgUHV0UHJvcGVydHlTbG90JiBzbG90KQordm9pZCBBcmd1bWVudHM6OnB1
dChKU0NlbGwqIGNlbGwsIEV4ZWNTdGF0ZSogZXhlYywgUHJvcGVydHlOYW1lIHByb3BlcnR5TmFt
ZSwgSlNWYWx1ZSB2YWx1ZSwgUHV0UHJvcGVydHlTbG90JiBzbG90KQogewogICAgIEFyZ3VtZW50
cyogdGhpc09iamVjdCA9IGpzQ2FzdDxBcmd1bWVudHMqPihjZWxsKTsKLSAgICBib29sIGlzQXJy
YXlJbmRleDsKLSAgICB1bnNpZ25lZCBpID0gcHJvcGVydHlOYW1lLnRvQXJyYXlJbmRleChpc0Fy
cmF5SW5kZXgpOwotICAgIGlmIChpc0FycmF5SW5kZXggJiYgaSA8IHRoaXNPYmplY3QtPmQtPm51
bUFyZ3VtZW50cyAmJiAoIXRoaXNPYmplY3QtPmQtPmRlbGV0ZWRBcmd1bWVudHMgfHwgIXRoaXNP
YmplY3QtPmQtPmRlbGV0ZWRBcmd1bWVudHNbaV0pKSB7CisgICAgdW5zaWduZWQgaSA9IHByb3Bl
cnR5TmFtZS5hc0luZGV4KCk7CisgICAgaWYgKGkgPCB0aGlzT2JqZWN0LT5kLT5udW1Bcmd1bWVu
dHMgJiYgKCF0aGlzT2JqZWN0LT5kLT5kZWxldGVkQXJndW1lbnRzIHx8ICF0aGlzT2JqZWN0LT5k
LT5kZWxldGVkQXJndW1lbnRzW2ldKSkgeworICAgICAgICBBU1NFUlQoaSA8IFByb3BlcnR5TmFt
ZTo6Tm90QW5JbmRleCk7CiAgICAgICAgIHRoaXNPYmplY3QtPmFyZ3VtZW50KGkpLnNldChleGVj
LT5nbG9iYWxEYXRhKCksIHRoaXNPYmplY3QsIHZhbHVlKTsKICAgICAgICAgcmV0dXJuOwogICAg
IH0KQEAgLTI1OSwxNSArMjU5LDE1IEBAIGJvb2wgQXJndW1lbnRzOjpkZWxldGVQcm9wZXJ0eUJ5
SW5kZXgoSlMKICAgICByZXR1cm4gSlNPYmplY3Q6OmRlbGV0ZVByb3BlcnR5KHRoaXNPYmplY3Qs
IGV4ZWMsIElkZW50aWZpZXIoZXhlYywgVVN0cmluZzo6bnVtYmVyKGkpKSk7CiB9CiAKLWJvb2wg
QXJndW1lbnRzOjpkZWxldGVQcm9wZXJ0eShKU0NlbGwqIGNlbGwsIEV4ZWNTdGF0ZSogZXhlYywg
Y29uc3QgSWRlbnRpZmllciYgcHJvcGVydHlOYW1lKSAKK2Jvb2wgQXJndW1lbnRzOjpkZWxldGVQ
cm9wZXJ0eShKU0NlbGwqIGNlbGwsIEV4ZWNTdGF0ZSogZXhlYywgUHJvcGVydHlOYW1lIHByb3Bl
cnR5TmFtZSkgCiB7CiAgICAgaWYgKGV4ZWMtPmdsb2JhbERhdGEoKS5pc0luRGVmaW5lT3duUHJv
cGVydHkoKSkKICAgICAgICAgcmV0dXJuIEJhc2U6OmRlbGV0ZVByb3BlcnR5KGNlbGwsIGV4ZWMs
IHByb3BlcnR5TmFtZSk7CiAKICAgICBBcmd1bWVudHMqIHRoaXNPYmplY3QgPSBqc0Nhc3Q8QXJn
dW1lbnRzKj4oY2VsbCk7Ci0gICAgYm9vbCBpc0FycmF5SW5kZXg7Ci0gICAgdW5zaWduZWQgaSA9
IHByb3BlcnR5TmFtZS50b0FycmF5SW5kZXgoaXNBcnJheUluZGV4KTsKLSAgICBpZiAoaXNBcnJh
eUluZGV4ICYmIGkgPCB0aGlzT2JqZWN0LT5kLT5udW1Bcmd1bWVudHMpIHsKKyAgICB1bnNpZ25l
ZCBpID0gcHJvcGVydHlOYW1lLmFzSW5kZXgoKTsKKyAgICBpZiAoaSA8IHRoaXNPYmplY3QtPmQt
Pm51bUFyZ3VtZW50cykgeworICAgICAgICBBU1NFUlQoaSA8IFByb3BlcnR5TmFtZTo6Tm90QW5J
bmRleCk7CiAgICAgICAgIGlmICghQmFzZTo6ZGVsZXRlUHJvcGVydHkoY2VsbCwgZXhlYywgcHJv
cGVydHlOYW1lKSkKICAgICAgICAgICAgIHJldHVybiBmYWxzZTsKIApAQCAtMzAwLDEyICszMDAs
MTIgQEAgYm9vbCBBcmd1bWVudHM6OmRlbGV0ZVByb3BlcnR5KEpTQ2VsbCogYwogICAgIHJldHVy
biBKU09iamVjdDo6ZGVsZXRlUHJvcGVydHkodGhpc09iamVjdCwgZXhlYywgcHJvcGVydHlOYW1l
KTsKIH0KIAotYm9vbCBBcmd1bWVudHM6OmRlZmluZU93blByb3BlcnR5KEpTT2JqZWN0KiBvYmpl
Y3QsIEV4ZWNTdGF0ZSogZXhlYywgY29uc3QgSWRlbnRpZmllciYgcHJvcGVydHlOYW1lLCBQcm9w
ZXJ0eURlc2NyaXB0b3ImIGRlc2NyaXB0b3IsIGJvb2wgc2hvdWxkVGhyb3cpCitib29sIEFyZ3Vt
ZW50czo6ZGVmaW5lT3duUHJvcGVydHkoSlNPYmplY3QqIG9iamVjdCwgRXhlY1N0YXRlKiBleGVj
LCBQcm9wZXJ0eU5hbWUgcHJvcGVydHlOYW1lLCBQcm9wZXJ0eURlc2NyaXB0b3ImIGRlc2NyaXB0
b3IsIGJvb2wgc2hvdWxkVGhyb3cpCiB7CiAgICAgQXJndW1lbnRzKiB0aGlzT2JqZWN0ID0ganND
YXN0PEFyZ3VtZW50cyo+KG9iamVjdCk7Ci0gICAgYm9vbCBpc0FycmF5SW5kZXg7Ci0gICAgdW5z
aWduZWQgaSA9IHByb3BlcnR5TmFtZS50b0FycmF5SW5kZXgoaXNBcnJheUluZGV4KTsKLSAgICBp
ZiAoaXNBcnJheUluZGV4ICYmIGkgPCB0aGlzT2JqZWN0LT5kLT5udW1Bcmd1bWVudHMpIHsKKyAg
ICB1bnNpZ25lZCBpID0gcHJvcGVydHlOYW1lLmFzSW5kZXgoKTsKKyAgICBpZiAoaSA8IHRoaXNP
YmplY3QtPmQtPm51bUFyZ3VtZW50cykgeworICAgICAgICBBU1NFUlQoaSA8IFByb3BlcnR5TmFt
ZTo6Tm90QW5JbmRleCk7CiAgICAgICAgIC8vIElmIHRoZSBwcm9wZXJ0eSBpcyBub3QgeWV0IHBy
ZXNlbnQgb24gdGhlIG9iamVjdCwgYW5kIGlzIG5vdCB5ZXQgbWFya2VkIGFzIGRlbGV0ZWQsIHRo
ZW4gYWRkIGl0IG5vdy4KICAgICAgICAgUHJvcGVydHlTbG90IHNsb3Q7CiAgICAgICAgIGlmICgo
IXRoaXNPYmplY3QtPmQtPmRlbGV0ZWRBcmd1bWVudHMgfHwgIXRoaXNPYmplY3QtPmQtPmRlbGV0
ZWRBcmd1bWVudHNbaV0pICYmICFKU09iamVjdDo6Z2V0T3duUHJvcGVydHlTbG90KHRoaXNPYmpl
Y3QsIGV4ZWMsIHByb3BlcnR5TmFtZSwgc2xvdCkpCkluZGV4OiBTb3VyY2UvSmF2YVNjcmlwdENv
cmUvcnVudGltZS9Bcmd1bWVudHMuaAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvSmF2YVNjcmlwdENv
cmUvcnVudGltZS9Bcmd1bWVudHMuaAkocmV2aXNpb24gMTE2NjY3KQorKysgU291cmNlL0phdmFT
Y3JpcHRDb3JlL3J1bnRpbWUvQXJndW1lbnRzLmgJKHdvcmtpbmcgY29weSkKQEAgLTEwOSwxNSAr
MTA5LDE1IEBAIG5hbWVzcGFjZSBKU0MgewogCiAgICAgcHJpdmF0ZToKICAgICAgICAgc3RhdGlj
IHZvaWQgZGVzdHJveShKU0NlbGwqKTsKLSAgICAgICAgc3RhdGljIGJvb2wgZ2V0T3duUHJvcGVy
dHlTbG90KEpTQ2VsbCosIEV4ZWNTdGF0ZSosIGNvbnN0IElkZW50aWZpZXImIHByb3BlcnR5TmFt
ZSwgUHJvcGVydHlTbG90Jik7CisgICAgICAgIHN0YXRpYyBib29sIGdldE93blByb3BlcnR5U2xv
dChKU0NlbGwqLCBFeGVjU3RhdGUqLCBQcm9wZXJ0eU5hbWUsIFByb3BlcnR5U2xvdCYpOwogICAg
ICAgICBzdGF0aWMgYm9vbCBnZXRPd25Qcm9wZXJ0eVNsb3RCeUluZGV4KEpTQ2VsbCosIEV4ZWNT
dGF0ZSosIHVuc2lnbmVkIHByb3BlcnR5TmFtZSwgUHJvcGVydHlTbG90Jik7Ci0gICAgICAgIHN0
YXRpYyBib29sIGdldE93blByb3BlcnR5RGVzY3JpcHRvcihKU09iamVjdCosIEV4ZWNTdGF0ZSos
IGNvbnN0IElkZW50aWZpZXImLCBQcm9wZXJ0eURlc2NyaXB0b3ImKTsKKyAgICAgICAgc3RhdGlj
IGJvb2wgZ2V0T3duUHJvcGVydHlEZXNjcmlwdG9yKEpTT2JqZWN0KiwgRXhlY1N0YXRlKiwgUHJv
cGVydHlOYW1lLCBQcm9wZXJ0eURlc2NyaXB0b3ImKTsKICAgICAgICAgc3RhdGljIHZvaWQgZ2V0
T3duUHJvcGVydHlOYW1lcyhKU09iamVjdCosIEV4ZWNTdGF0ZSosIFByb3BlcnR5TmFtZUFycmF5
JiwgRW51bWVyYXRpb25Nb2RlKTsKLSAgICAgICAgc3RhdGljIHZvaWQgcHV0KEpTQ2VsbCosIEV4
ZWNTdGF0ZSosIGNvbnN0IElkZW50aWZpZXImIHByb3BlcnR5TmFtZSwgSlNWYWx1ZSwgUHV0UHJv
cGVydHlTbG90Jik7CisgICAgICAgIHN0YXRpYyB2b2lkIHB1dChKU0NlbGwqLCBFeGVjU3RhdGUq
LCBQcm9wZXJ0eU5hbWUsIEpTVmFsdWUsIFB1dFByb3BlcnR5U2xvdCYpOwogICAgICAgICBzdGF0
aWMgdm9pZCBwdXRCeUluZGV4KEpTQ2VsbCosIEV4ZWNTdGF0ZSosIHVuc2lnbmVkIHByb3BlcnR5
TmFtZSwgSlNWYWx1ZSwgYm9vbCBzaG91bGRUaHJvdyk7Ci0gICAgICAgIHN0YXRpYyBib29sIGRl
bGV0ZVByb3BlcnR5KEpTQ2VsbCosIEV4ZWNTdGF0ZSosIGNvbnN0IElkZW50aWZpZXImIHByb3Bl
cnR5TmFtZSk7CisgICAgICAgIHN0YXRpYyBib29sIGRlbGV0ZVByb3BlcnR5KEpTQ2VsbCosIEV4
ZWNTdGF0ZSosIFByb3BlcnR5TmFtZSk7CiAgICAgICAgIHN0YXRpYyBib29sIGRlbGV0ZVByb3Bl
cnR5QnlJbmRleChKU0NlbGwqLCBFeGVjU3RhdGUqLCB1bnNpZ25lZCBwcm9wZXJ0eU5hbWUpOwot
ICAgICAgICBzdGF0aWMgYm9vbCBkZWZpbmVPd25Qcm9wZXJ0eShKU09iamVjdCosIEV4ZWNTdGF0
ZSosIGNvbnN0IElkZW50aWZpZXImIHByb3BlcnR5TmFtZSwgUHJvcGVydHlEZXNjcmlwdG9yJiwg
Ym9vbCBzaG91bGRUaHJvdyk7CisgICAgICAgIHN0YXRpYyBib29sIGRlZmluZU93blByb3BlcnR5
KEpTT2JqZWN0KiwgRXhlY1N0YXRlKiwgUHJvcGVydHlOYW1lLCBQcm9wZXJ0eURlc2NyaXB0b3Im
LCBib29sIHNob3VsZFRocm93KTsKICAgICAgICAgdm9pZCBjcmVhdGVTdHJpY3RNb2RlQ2FsbGVy
SWZOZWNlc3NhcnkoRXhlY1N0YXRlKik7CiAgICAgICAgIHZvaWQgY3JlYXRlU3RyaWN0TW9kZUNh
bGxlZUlmTmVjZXNzYXJ5KEV4ZWNTdGF0ZSopOwogCkluZGV4OiBTb3VyY2UvSmF2YVNjcmlwdENv
cmUvcnVudGltZS9BcnJheUNvbnN0cnVjdG9yLmNwcAo9PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvSmF2
YVNjcmlwdENvcmUvcnVudGltZS9BcnJheUNvbnN0cnVjdG9yLmNwcAkocmV2aXNpb24gMTE2NjY3
KQorKysgU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvQXJyYXlDb25zdHJ1Y3Rvci5jcHAJ
KHdvcmtpbmcgY29weSkKQEAgLTYwLDE3ICs2MCwxNyBAQCBBcnJheUNvbnN0cnVjdG9yOjpBcnJh
eUNvbnN0cnVjdG9yKEpTR2xvCiAKIHZvaWQgQXJyYXlDb25zdHJ1Y3Rvcjo6ZmluaXNoQ3JlYXRp
b24oRXhlY1N0YXRlKiBleGVjLCBBcnJheVByb3RvdHlwZSogYXJyYXlQcm90b3R5cGUpCiB7Ci0g
ICAgQmFzZTo6ZmluaXNoQ3JlYXRpb24oZXhlYy0+Z2xvYmFsRGF0YSgpLCBJZGVudGlmaWVyKGV4
ZWMsIGFycmF5UHJvdG90eXBlLT5jbGFzc0luZm8oKS0+Y2xhc3NOYW1lKSk7CisgICAgQmFzZTo6
ZmluaXNoQ3JlYXRpb24oZXhlYy0+Z2xvYmFsRGF0YSgpLCBhcnJheVByb3RvdHlwZS0+Y2xhc3NJ
bmZvKCktPmNsYXNzTmFtZSk7CiAgICAgcHV0RGlyZWN0V2l0aG91dFRyYW5zaXRpb24oZXhlYy0+
Z2xvYmFsRGF0YSgpLCBleGVjLT5wcm9wZXJ0eU5hbWVzKCkucHJvdG90eXBlLCBhcnJheVByb3Rv
dHlwZSwgRG9udEVudW0gfCBEb250RGVsZXRlIHwgUmVhZE9ubHkpOwogICAgIHB1dERpcmVjdFdp
dGhvdXRUcmFuc2l0aW9uKGV4ZWMtPmdsb2JhbERhdGEoKSwgZXhlYy0+cHJvcGVydHlOYW1lcygp
Lmxlbmd0aCwganNOdW1iZXIoMSksIFJlYWRPbmx5IHwgRG9udEVudW0gfCBEb250RGVsZXRlKTsK
IH0KIAotYm9vbCBBcnJheUNvbnN0cnVjdG9yOjpnZXRPd25Qcm9wZXJ0eVNsb3QoSlNDZWxsKiBj
ZWxsLCBFeGVjU3RhdGUqIGV4ZWMsIGNvbnN0IElkZW50aWZpZXImIHByb3BlcnR5TmFtZSwgUHJv
cGVydHlTbG90ICZzbG90KQorYm9vbCBBcnJheUNvbnN0cnVjdG9yOjpnZXRPd25Qcm9wZXJ0eVNs
b3QoSlNDZWxsKiBjZWxsLCBFeGVjU3RhdGUqIGV4ZWMsIFByb3BlcnR5TmFtZSBwcm9wZXJ0eU5h
bWUsIFByb3BlcnR5U2xvdCAmc2xvdCkKIHsKICAgICByZXR1cm4gZ2V0U3RhdGljRnVuY3Rpb25T
bG90PEludGVybmFsRnVuY3Rpb24+KGV4ZWMsIEV4ZWNTdGF0ZTo6YXJyYXlDb25zdHJ1Y3RvclRh
YmxlKGV4ZWMpLCBqc0Nhc3Q8QXJyYXlDb25zdHJ1Y3Rvcio+KGNlbGwpLCBwcm9wZXJ0eU5hbWUs
IHNsb3QpOwogfQogCi1ib29sIEFycmF5Q29uc3RydWN0b3I6OmdldE93blByb3BlcnR5RGVzY3Jp
cHRvcihKU09iamVjdCogb2JqZWN0LCBFeGVjU3RhdGUqIGV4ZWMsIGNvbnN0IElkZW50aWZpZXIm
IHByb3BlcnR5TmFtZSwgUHJvcGVydHlEZXNjcmlwdG9yJiBkZXNjcmlwdG9yKQorYm9vbCBBcnJh
eUNvbnN0cnVjdG9yOjpnZXRPd25Qcm9wZXJ0eURlc2NyaXB0b3IoSlNPYmplY3QqIG9iamVjdCwg
RXhlY1N0YXRlKiBleGVjLCBQcm9wZXJ0eU5hbWUgcHJvcGVydHlOYW1lLCBQcm9wZXJ0eURlc2Ny
aXB0b3ImIGRlc2NyaXB0b3IpCiB7CiAgICAgcmV0dXJuIGdldFN0YXRpY0Z1bmN0aW9uRGVzY3Jp
cHRvcjxJbnRlcm5hbEZ1bmN0aW9uPihleGVjLCBFeGVjU3RhdGU6OmFycmF5Q29uc3RydWN0b3JU
YWJsZShleGVjKSwganNDYXN0PEFycmF5Q29uc3RydWN0b3IqPihvYmplY3QpLCBwcm9wZXJ0eU5h
bWUsIGRlc2NyaXB0b3IpOwogfQpJbmRleDogU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUv
QXJyYXlDb25zdHJ1Y3Rvci5oCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9y
dW50aW1lL0FycmF5Q29uc3RydWN0b3IuaAkocmV2aXNpb24gMTE2NjY3KQorKysgU291cmNlL0ph
dmFTY3JpcHRDb3JlL3J1bnRpbWUvQXJyYXlDb25zdHJ1Y3Rvci5oCSh3b3JraW5nIGNvcHkpCkBA
IC01MSw5ICs1MSw5IEBAIG5hbWVzcGFjZSBKU0MgewogCiAgICAgcHJpdmF0ZToKICAgICAgICAg
QXJyYXlDb25zdHJ1Y3RvcihKU0dsb2JhbE9iamVjdCosIFN0cnVjdHVyZSopOwotICAgICAgICBz
dGF0aWMgYm9vbCBnZXRPd25Qcm9wZXJ0eVNsb3QoSlNDZWxsKiwgRXhlY1N0YXRlKiwgY29uc3Qg
SWRlbnRpZmllciYsIFByb3BlcnR5U2xvdCYpOworICAgICAgICBzdGF0aWMgYm9vbCBnZXRPd25Q
cm9wZXJ0eVNsb3QoSlNDZWxsKiwgRXhlY1N0YXRlKiwgUHJvcGVydHlOYW1lLCBQcm9wZXJ0eVNs
b3QmKTsKIAotICAgICAgICBzdGF0aWMgYm9vbCBnZXRPd25Qcm9wZXJ0eURlc2NyaXB0b3IoSlNP
YmplY3QqLCBFeGVjU3RhdGUqLCBjb25zdCBJZGVudGlmaWVyJiwgUHJvcGVydHlEZXNjcmlwdG9y
Jik7CisgICAgICAgIHN0YXRpYyBib29sIGdldE93blByb3BlcnR5RGVzY3JpcHRvcihKU09iamVj
dCosIEV4ZWNTdGF0ZSosIFByb3BlcnR5TmFtZSwgUHJvcGVydHlEZXNjcmlwdG9yJik7CiAKICAg
ICAgICAgc3RhdGljIENvbnN0cnVjdFR5cGUgZ2V0Q29uc3RydWN0RGF0YShKU0NlbGwqLCBDb25z
dHJ1Y3REYXRhJik7CiAgICAgICAgIHN0YXRpYyBDYWxsVHlwZSBnZXRDYWxsRGF0YShKU0NlbGwq
LCBDYWxsRGF0YSYpOwpJbmRleDogU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvQXJyYXlQ
cm90b3R5cGUuY3BwCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1l
L0FycmF5UHJvdG90eXBlLmNwcAkocmV2aXNpb24gMTE2NjY3KQorKysgU291cmNlL0phdmFTY3Jp
cHRDb3JlL3J1bnRpbWUvQXJyYXlQcm90b3R5cGUuY3BwCSh3b3JraW5nIGNvcHkpCkBAIC0xMjYs
MTIgKzEyNiwxMiBAQCB2b2lkIEFycmF5UHJvdG90eXBlOjpmaW5pc2hDcmVhdGlvbihKU0dsCiAg
ICAgQVNTRVJUKGluaGVyaXRzKCZzX2luZm8pKTsKIH0KIAotYm9vbCBBcnJheVByb3RvdHlwZTo6
Z2V0T3duUHJvcGVydHlTbG90KEpTQ2VsbCogY2VsbCwgRXhlY1N0YXRlKiBleGVjLCBjb25zdCBJ
ZGVudGlmaWVyJiBwcm9wZXJ0eU5hbWUsIFByb3BlcnR5U2xvdCYgc2xvdCkKK2Jvb2wgQXJyYXlQ
cm90b3R5cGU6OmdldE93blByb3BlcnR5U2xvdChKU0NlbGwqIGNlbGwsIEV4ZWNTdGF0ZSogZXhl
YywgUHJvcGVydHlOYW1lIHByb3BlcnR5TmFtZSwgUHJvcGVydHlTbG90JiBzbG90KQogewogICAg
IHJldHVybiBnZXRTdGF0aWNGdW5jdGlvblNsb3Q8SlNBcnJheT4oZXhlYywgRXhlY1N0YXRlOjph
cnJheVByb3RvdHlwZVRhYmxlKGV4ZWMpLCBqc0Nhc3Q8QXJyYXlQcm90b3R5cGUqPihjZWxsKSwg
cHJvcGVydHlOYW1lLCBzbG90KTsKIH0KIAotYm9vbCBBcnJheVByb3RvdHlwZTo6Z2V0T3duUHJv
cGVydHlEZXNjcmlwdG9yKEpTT2JqZWN0KiBvYmplY3QsIEV4ZWNTdGF0ZSogZXhlYywgY29uc3Qg
SWRlbnRpZmllciYgcHJvcGVydHlOYW1lLCBQcm9wZXJ0eURlc2NyaXB0b3ImIGRlc2NyaXB0b3Ip
Citib29sIEFycmF5UHJvdG90eXBlOjpnZXRPd25Qcm9wZXJ0eURlc2NyaXB0b3IoSlNPYmplY3Qq
IG9iamVjdCwgRXhlY1N0YXRlKiBleGVjLCBQcm9wZXJ0eU5hbWUgcHJvcGVydHlOYW1lLCBQcm9w
ZXJ0eURlc2NyaXB0b3ImIGRlc2NyaXB0b3IpCiB7CiAgICAgcmV0dXJuIGdldFN0YXRpY0Z1bmN0
aW9uRGVzY3JpcHRvcjxKU0FycmF5PihleGVjLCBFeGVjU3RhdGU6OmFycmF5UHJvdG90eXBlVGFi
bGUoZXhlYyksIGpzQ2FzdDxBcnJheVByb3RvdHlwZSo+KG9iamVjdCksIHByb3BlcnR5TmFtZSwg
ZGVzY3JpcHRvcik7CiB9CkBAIC0xNDcsNyArMTQ3LDcgQEAgc3RhdGljIEpTVmFsdWUgZ2V0UHJv
cGVydHkoRXhlY1N0YXRlKiBleAogICAgIHJldHVybiBzbG90LmdldFZhbHVlKGV4ZWMsIGluZGV4
KTsKIH0KIAotc3RhdGljIHZvaWQgcHV0UHJvcGVydHkoRXhlY1N0YXRlKiBleGVjLCBKU09iamVj
dCogb2JqLCBjb25zdCBJZGVudGlmaWVyJiBwcm9wZXJ0eU5hbWUsIEpTVmFsdWUgdmFsdWUpCitz
dGF0aWMgdm9pZCBwdXRQcm9wZXJ0eShFeGVjU3RhdGUqIGV4ZWMsIEpTT2JqZWN0KiBvYmosIFBy
b3BlcnR5TmFtZSBwcm9wZXJ0eU5hbWUsIEpTVmFsdWUgdmFsdWUpCiB7CiAgICAgUHV0UHJvcGVy
dHlTbG90IHNsb3Q7CiAgICAgb2JqLT5tZXRob2RUYWJsZSgpLT5wdXQob2JqLCBleGVjLCBwcm9w
ZXJ0eU5hbWUsIHZhbHVlLCBzbG90KTsKSW5kZXg6IFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50
aW1lL0FycmF5UHJvdG90eXBlLmgKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL0phdmFTY3JpcHRDb3Jl
L3J1bnRpbWUvQXJyYXlQcm90b3R5cGUuaAkocmV2aXNpb24gMTE2NjY3KQorKysgU291cmNlL0ph
dmFTY3JpcHRDb3JlL3J1bnRpbWUvQXJyYXlQcm90b3R5cGUuaAkod29ya2luZyBjb3B5KQpAQCAt
NDAsOCArNDAsOCBAQCBuYW1lc3BhY2UgSlNDIHsKICAgICAgICAgICAgIHJldHVybiBwcm90b3R5
cGU7CiAgICAgICAgIH0KICAgICAgICAgCi0gICAgICAgIHN0YXRpYyBib29sIGdldE93blByb3Bl
cnR5U2xvdChKU0NlbGwqLCBFeGVjU3RhdGUqLCBjb25zdCBJZGVudGlmaWVyJiwgUHJvcGVydHlT
bG90Jik7Ci0gICAgICAgIHN0YXRpYyBib29sIGdldE93blByb3BlcnR5RGVzY3JpcHRvcihKU09i
amVjdCosIEV4ZWNTdGF0ZSosIGNvbnN0IElkZW50aWZpZXImLCBQcm9wZXJ0eURlc2NyaXB0b3Im
KTsKKyAgICAgICAgc3RhdGljIGJvb2wgZ2V0T3duUHJvcGVydHlTbG90KEpTQ2VsbCosIEV4ZWNT
dGF0ZSosIFByb3BlcnR5TmFtZSwgUHJvcGVydHlTbG90Jik7CisgICAgICAgIHN0YXRpYyBib29s
IGdldE93blByb3BlcnR5RGVzY3JpcHRvcihKU09iamVjdCosIEV4ZWNTdGF0ZSosIFByb3BlcnR5
TmFtZSwgUHJvcGVydHlEZXNjcmlwdG9yJik7CiAKICAgICAgICAgc3RhdGljIGNvbnN0IENsYXNz
SW5mbyBzX2luZm87CiAKSW5kZXg6IFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL0Jvb2xl
YW5Db25zdHJ1Y3Rvci5jcHAKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL0phdmFTY3JpcHRDb3JlL3J1
bnRpbWUvQm9vbGVhbkNvbnN0cnVjdG9yLmNwcAkocmV2aXNpb24gMTE2NjY3KQorKysgU291cmNl
L0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvQm9vbGVhbkNvbnN0cnVjdG9yLmNwcAkod29ya2luZyBj
b3B5KQpAQCAtMzgsNyArMzgsNyBAQCBCb29sZWFuQ29uc3RydWN0b3I6OkJvb2xlYW5Db25zdHJ1
Y3RvcihKCiAKIHZvaWQgQm9vbGVhbkNvbnN0cnVjdG9yOjpmaW5pc2hDcmVhdGlvbihFeGVjU3Rh
dGUqIGV4ZWMsIEJvb2xlYW5Qcm90b3R5cGUqIGJvb2xlYW5Qcm90b3R5cGUpCiB7Ci0gICAgQmFz
ZTo6ZmluaXNoQ3JlYXRpb24oZXhlYy0+Z2xvYmFsRGF0YSgpLCBJZGVudGlmaWVyKGV4ZWMsIGJv
b2xlYW5Qcm90b3R5cGUtPmNsYXNzSW5mbygpLT5jbGFzc05hbWUpKTsKKyAgICBCYXNlOjpmaW5p
c2hDcmVhdGlvbihleGVjLT5nbG9iYWxEYXRhKCksIGJvb2xlYW5Qcm90b3R5cGUtPmNsYXNzSW5m
bygpLT5jbGFzc05hbWUpOwogICAgIHB1dERpcmVjdFdpdGhvdXRUcmFuc2l0aW9uKGV4ZWMtPmds
b2JhbERhdGEoKSwgZXhlYy0+cHJvcGVydHlOYW1lcygpLnByb3RvdHlwZSwgYm9vbGVhblByb3Rv
dHlwZSwgRG9udEVudW0gfCBEb250RGVsZXRlIHwgUmVhZE9ubHkpOwogCiAgICAgLy8gbm8uIG9m
IGFyZ3VtZW50cyBmb3IgY29uc3RydWN0b3IKSW5kZXg6IFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9y
dW50aW1lL0Jvb2xlYW5Qcm90b3R5cGUuY3BwCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9KYXZhU2Ny
aXB0Q29yZS9ydW50aW1lL0Jvb2xlYW5Qcm90b3R5cGUuY3BwCShyZXZpc2lvbiAxMTY2NjcpCisr
KyBTb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9Cb29sZWFuUHJvdG90eXBlLmNwcAkod29y
a2luZyBjb3B5KQpAQCAtNjMsMTIgKzYzLDEyIEBAIHZvaWQgQm9vbGVhblByb3RvdHlwZTo6Zmlu
aXNoQ3JlYXRpb24oRXgKICAgICBBU1NFUlQoaW5oZXJpdHMoJnNfaW5mbykpOwogfQogCi1ib29s
IEJvb2xlYW5Qcm90b3R5cGU6OmdldE93blByb3BlcnR5U2xvdChKU0NlbGwqIGNlbGwsIEV4ZWNT
dGF0ZSogZXhlYywgY29uc3QgSWRlbnRpZmllciYgcHJvcGVydHlOYW1lLCBQcm9wZXJ0eVNsb3Qg
JnNsb3QpCitib29sIEJvb2xlYW5Qcm90b3R5cGU6OmdldE93blByb3BlcnR5U2xvdChKU0NlbGwq
IGNlbGwsIEV4ZWNTdGF0ZSogZXhlYywgUHJvcGVydHlOYW1lIHByb3BlcnR5TmFtZSwgUHJvcGVy
dHlTbG90ICZzbG90KQogewogICAgIHJldHVybiBnZXRTdGF0aWNGdW5jdGlvblNsb3Q8Qm9vbGVh
bk9iamVjdD4oZXhlYywgRXhlY1N0YXRlOjpib29sZWFuUHJvdG90eXBlVGFibGUoZXhlYyksIGpz
Q2FzdDxCb29sZWFuUHJvdG90eXBlKj4oY2VsbCksIHByb3BlcnR5TmFtZSwgc2xvdCk7CiB9CiAK
LWJvb2wgQm9vbGVhblByb3RvdHlwZTo6Z2V0T3duUHJvcGVydHlEZXNjcmlwdG9yKEpTT2JqZWN0
KiBvYmplY3QsIEV4ZWNTdGF0ZSogZXhlYywgY29uc3QgSWRlbnRpZmllciYgcHJvcGVydHlOYW1l
LCBQcm9wZXJ0eURlc2NyaXB0b3ImIGRlc2NyaXB0b3IpCitib29sIEJvb2xlYW5Qcm90b3R5cGU6
OmdldE93blByb3BlcnR5RGVzY3JpcHRvcihKU09iamVjdCogb2JqZWN0LCBFeGVjU3RhdGUqIGV4
ZWMsIFByb3BlcnR5TmFtZSBwcm9wZXJ0eU5hbWUsIFByb3BlcnR5RGVzY3JpcHRvciYgZGVzY3Jp
cHRvcikKIHsKICAgICByZXR1cm4gZ2V0U3RhdGljRnVuY3Rpb25EZXNjcmlwdG9yPEJvb2xlYW5P
YmplY3Q+KGV4ZWMsIEV4ZWNTdGF0ZTo6Ym9vbGVhblByb3RvdHlwZVRhYmxlKGV4ZWMpLCBqc0Nh
c3Q8Qm9vbGVhblByb3RvdHlwZSo+KG9iamVjdCksIHByb3BlcnR5TmFtZSwgZGVzY3JpcHRvcik7
CiB9CkluZGV4OiBTb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9Cb29sZWFuUHJvdG90eXBl
LmgKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PQotLS0gU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvQm9vbGVhblBy
b3RvdHlwZS5oCShyZXZpc2lvbiAxMTY2NjcpCisrKyBTb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVu
dGltZS9Cb29sZWFuUHJvdG90eXBlLmgJKHdvcmtpbmcgY29weSkKQEAgLTQ5LDkgKzQ5LDkgQEAg
bmFtZXNwYWNlIEpTQyB7CiAKICAgICBwcml2YXRlOgogICAgICAgICBCb29sZWFuUHJvdG90eXBl
KEV4ZWNTdGF0ZSosIFN0cnVjdHVyZSopOwotICAgICAgICBzdGF0aWMgYm9vbCBnZXRPd25Qcm9w
ZXJ0eVNsb3QoSlNDZWxsKiwgRXhlY1N0YXRlKiwgY29uc3QgSWRlbnRpZmllciYsIFByb3BlcnR5
U2xvdCYpOworICAgICAgICBzdGF0aWMgYm9vbCBnZXRPd25Qcm9wZXJ0eVNsb3QoSlNDZWxsKiwg
RXhlY1N0YXRlKiwgUHJvcGVydHlOYW1lLCBQcm9wZXJ0eVNsb3QmKTsKIAotICAgICAgICBzdGF0
aWMgYm9vbCBnZXRPd25Qcm9wZXJ0eURlc2NyaXB0b3IoSlNPYmplY3QqLCBFeGVjU3RhdGUqLCBj
b25zdCBJZGVudGlmaWVyJiwgUHJvcGVydHlEZXNjcmlwdG9yJik7CisgICAgICAgIHN0YXRpYyBi
b29sIGdldE93blByb3BlcnR5RGVzY3JpcHRvcihKU09iamVjdCosIEV4ZWNTdGF0ZSosIFByb3Bl
cnR5TmFtZSwgUHJvcGVydHlEZXNjcmlwdG9yJik7CiAgICAgfTsKIAogfSAvLyBuYW1lc3BhY2Ug
SlNDCkluZGV4OiBTb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9DbGFzc0luZm8uaAo9PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09Ci0tLSBTb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9DbGFzc0luZm8uaAkocmV2
aXNpb24gMTE2NjY3KQorKysgU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvQ2xhc3NJbmZv
LmgJKHdvcmtpbmcgY29weSkKQEAgLTQ1LDE5ICs0NSwxOSBAQCBuYW1lc3BhY2UgSlNDIHsKICAg
ICAgICAgdHlwZWRlZiBDb25zdHJ1Y3RUeXBlICgqR2V0Q29uc3RydWN0RGF0YUZ1bmN0aW9uUHRy
KShKU0NlbGwqLCBDb25zdHJ1Y3REYXRhJik7CiAgICAgICAgIEdldENvbnN0cnVjdERhdGFGdW5j
dGlvblB0ciBnZXRDb25zdHJ1Y3REYXRhOwogCi0gICAgICAgIHR5cGVkZWYgdm9pZCAoKlB1dEZ1
bmN0aW9uUHRyKShKU0NlbGwqLCBFeGVjU3RhdGUqLCBjb25zdCBJZGVudGlmaWVyJiBwcm9wZXJ0
eU5hbWUsIEpTVmFsdWUsIFB1dFByb3BlcnR5U2xvdCYpOworICAgICAgICB0eXBlZGVmIHZvaWQg
KCpQdXRGdW5jdGlvblB0cikoSlNDZWxsKiwgRXhlY1N0YXRlKiwgUHJvcGVydHlOYW1lIHByb3Bl
cnR5TmFtZSwgSlNWYWx1ZSwgUHV0UHJvcGVydHlTbG90Jik7CiAgICAgICAgIFB1dEZ1bmN0aW9u
UHRyIHB1dDsKIAogICAgICAgICB0eXBlZGVmIHZvaWQgKCpQdXRCeUluZGV4RnVuY3Rpb25QdHIp
KEpTQ2VsbCosIEV4ZWNTdGF0ZSosIHVuc2lnbmVkIHByb3BlcnR5TmFtZSwgSlNWYWx1ZSwgYm9v
bCBzaG91bGRUaHJvdyk7CiAgICAgICAgIFB1dEJ5SW5kZXhGdW5jdGlvblB0ciBwdXRCeUluZGV4
OwogCi0gICAgICAgIHR5cGVkZWYgYm9vbCAoKkRlbGV0ZVByb3BlcnR5RnVuY3Rpb25QdHIpKEpT
Q2VsbCosIEV4ZWNTdGF0ZSosIGNvbnN0IElkZW50aWZpZXImKTsKKyAgICAgICAgdHlwZWRlZiBi
b29sICgqRGVsZXRlUHJvcGVydHlGdW5jdGlvblB0cikoSlNDZWxsKiwgRXhlY1N0YXRlKiwgUHJv
cGVydHlOYW1lKTsKICAgICAgICAgRGVsZXRlUHJvcGVydHlGdW5jdGlvblB0ciBkZWxldGVQcm9w
ZXJ0eTsKIAogICAgICAgICB0eXBlZGVmIGJvb2wgKCpEZWxldGVQcm9wZXJ0eUJ5SW5kZXhGdW5j
dGlvblB0cikoSlNDZWxsKiwgRXhlY1N0YXRlKiwgdW5zaWduZWQpOwogICAgICAgICBEZWxldGVQ
cm9wZXJ0eUJ5SW5kZXhGdW5jdGlvblB0ciBkZWxldGVQcm9wZXJ0eUJ5SW5kZXg7CiAKLSAgICAg
ICAgdHlwZWRlZiBib29sICgqR2V0T3duUHJvcGVydHlTbG90RnVuY3Rpb25QdHIpKEpTQ2VsbCos
IEV4ZWNTdGF0ZSosIGNvbnN0IElkZW50aWZpZXImLCBQcm9wZXJ0eVNsb3QmKTsKKyAgICAgICAg
dHlwZWRlZiBib29sICgqR2V0T3duUHJvcGVydHlTbG90RnVuY3Rpb25QdHIpKEpTQ2VsbCosIEV4
ZWNTdGF0ZSosIFByb3BlcnR5TmFtZSwgUHJvcGVydHlTbG90Jik7CiAgICAgICAgIEdldE93blBy
b3BlcnR5U2xvdEZ1bmN0aW9uUHRyIGdldE93blByb3BlcnR5U2xvdDsKIAogICAgICAgICB0eXBl
ZGVmIGJvb2wgKCpHZXRPd25Qcm9wZXJ0eVNsb3RCeUluZGV4RnVuY3Rpb25QdHIpKEpTQ2VsbCos
IEV4ZWNTdGF0ZSosIHVuc2lnbmVkLCBQcm9wZXJ0eVNsb3QmKTsKQEAgLTgxLDEzICs4MSwxMyBA
QCBuYW1lc3BhY2UgSlNDIHsKICAgICAgICAgdHlwZWRlZiBib29sICgqSGFzSW5zdGFuY2VGdW5j
dGlvblB0cikoSlNPYmplY3QqLCBFeGVjU3RhdGUqLCBKU1ZhbHVlLCBKU1ZhbHVlKTsKICAgICAg
ICAgSGFzSW5zdGFuY2VGdW5jdGlvblB0ciBoYXNJbnN0YW5jZTsKIAotICAgICAgICB0eXBlZGVm
IHZvaWQgKCpQdXRXaXRoQXR0cmlidXRlc0Z1bmN0aW9uUHRyKShKU09iamVjdCosIEV4ZWNTdGF0
ZSosIGNvbnN0IElkZW50aWZpZXImIHByb3BlcnR5TmFtZSwgSlNWYWx1ZSwgdW5zaWduZWQgYXR0
cmlidXRlcyk7CisgICAgICAgIHR5cGVkZWYgdm9pZCAoKlB1dFdpdGhBdHRyaWJ1dGVzRnVuY3Rp
b25QdHIpKEpTT2JqZWN0KiwgRXhlY1N0YXRlKiwgUHJvcGVydHlOYW1lIHByb3BlcnR5TmFtZSwg
SlNWYWx1ZSwgdW5zaWduZWQgYXR0cmlidXRlcyk7CiAgICAgICAgIFB1dFdpdGhBdHRyaWJ1dGVz
RnVuY3Rpb25QdHIgcHV0RGlyZWN0VmlydHVhbDsKIAotICAgICAgICB0eXBlZGVmIGJvb2wgKCpE
ZWZpbmVPd25Qcm9wZXJ0eUZ1bmN0aW9uUHRyKShKU09iamVjdCosIEV4ZWNTdGF0ZSosIGNvbnN0
IElkZW50aWZpZXImLCBQcm9wZXJ0eURlc2NyaXB0b3ImLCBib29sKTsKKyAgICAgICAgdHlwZWRl
ZiBib29sICgqRGVmaW5lT3duUHJvcGVydHlGdW5jdGlvblB0cikoSlNPYmplY3QqLCBFeGVjU3Rh
dGUqLCBQcm9wZXJ0eU5hbWUsIFByb3BlcnR5RGVzY3JpcHRvciYsIGJvb2wpOwogICAgICAgICBE
ZWZpbmVPd25Qcm9wZXJ0eUZ1bmN0aW9uUHRyIGRlZmluZU93blByb3BlcnR5OwogCi0gICAgICAg
IHR5cGVkZWYgYm9vbCAoKkdldE93blByb3BlcnR5RGVzY3JpcHRvckZ1bmN0aW9uUHRyKShKU09i
amVjdCosIEV4ZWNTdGF0ZSosIGNvbnN0IElkZW50aWZpZXImLCBQcm9wZXJ0eURlc2NyaXB0b3Im
KTsKKyAgICAgICAgdHlwZWRlZiBib29sICgqR2V0T3duUHJvcGVydHlEZXNjcmlwdG9yRnVuY3Rp
b25QdHIpKEpTT2JqZWN0KiwgRXhlY1N0YXRlKiwgUHJvcGVydHlOYW1lLCBQcm9wZXJ0eURlc2Ny
aXB0b3ImKTsKICAgICAgICAgR2V0T3duUHJvcGVydHlEZXNjcmlwdG9yRnVuY3Rpb25QdHIgZ2V0
T3duUHJvcGVydHlEZXNjcmlwdG9yOwogICAgIH07CiAKSW5kZXg6IFNvdXJjZS9KYXZhU2NyaXB0
Q29yZS9ydW50aW1lL0RhdGVDb25zdHJ1Y3Rvci5jcHAKPT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL0ph
dmFTY3JpcHRDb3JlL3J1bnRpbWUvRGF0ZUNvbnN0cnVjdG9yLmNwcAkocmV2aXNpb24gMTE2NjY3
KQorKysgU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvRGF0ZUNvbnN0cnVjdG9yLmNwcAko
d29ya2luZyBjb3B5KQpAQCAtODEsMTcgKzgxLDE3IEBAIERhdGVDb25zdHJ1Y3Rvcjo6RGF0ZUNv
bnN0cnVjdG9yKEpTR2xvYmEKIAogdm9pZCBEYXRlQ29uc3RydWN0b3I6OmZpbmlzaENyZWF0aW9u
KEV4ZWNTdGF0ZSogZXhlYywgRGF0ZVByb3RvdHlwZSogZGF0ZVByb3RvdHlwZSkKIHsKLSAgICBC
YXNlOjpmaW5pc2hDcmVhdGlvbihleGVjLT5nbG9iYWxEYXRhKCksIElkZW50aWZpZXIoZXhlYywg
ZGF0ZVByb3RvdHlwZS0+Y2xhc3NJbmZvKCktPmNsYXNzTmFtZSkpOworICAgIEJhc2U6OmZpbmlz
aENyZWF0aW9uKGV4ZWMtPmdsb2JhbERhdGEoKSwgZGF0ZVByb3RvdHlwZS0+Y2xhc3NJbmZvKCkt
PmNsYXNzTmFtZSk7CiAgICAgcHV0RGlyZWN0V2l0aG91dFRyYW5zaXRpb24oZXhlYy0+Z2xvYmFs
RGF0YSgpLCBleGVjLT5wcm9wZXJ0eU5hbWVzKCkucHJvdG90eXBlLCBkYXRlUHJvdG90eXBlLCBE
b250RW51bSB8IERvbnREZWxldGUgfCBSZWFkT25seSk7CiAgICAgcHV0RGlyZWN0V2l0aG91dFRy
YW5zaXRpb24oZXhlYy0+Z2xvYmFsRGF0YSgpLCBleGVjLT5wcm9wZXJ0eU5hbWVzKCkubGVuZ3Ro
LCBqc051bWJlcig3KSwgUmVhZE9ubHkgfCBEb250RW51bSB8IERvbnREZWxldGUpOwogfQogCi1i
b29sIERhdGVDb25zdHJ1Y3Rvcjo6Z2V0T3duUHJvcGVydHlTbG90KEpTQ2VsbCogY2VsbCwgRXhl
Y1N0YXRlKiBleGVjLCBjb25zdCBJZGVudGlmaWVyJiBwcm9wZXJ0eU5hbWUsIFByb3BlcnR5U2xv
dCAmc2xvdCkKK2Jvb2wgRGF0ZUNvbnN0cnVjdG9yOjpnZXRPd25Qcm9wZXJ0eVNsb3QoSlNDZWxs
KiBjZWxsLCBFeGVjU3RhdGUqIGV4ZWMsIFByb3BlcnR5TmFtZSBwcm9wZXJ0eU5hbWUsIFByb3Bl
cnR5U2xvdCAmc2xvdCkKIHsKICAgICByZXR1cm4gZ2V0U3RhdGljRnVuY3Rpb25TbG90PEludGVy
bmFsRnVuY3Rpb24+KGV4ZWMsIEV4ZWNTdGF0ZTo6ZGF0ZUNvbnN0cnVjdG9yVGFibGUoZXhlYyks
IGpzQ2FzdDxEYXRlQ29uc3RydWN0b3IqPihjZWxsKSwgcHJvcGVydHlOYW1lLCBzbG90KTsKIH0K
IAotYm9vbCBEYXRlQ29uc3RydWN0b3I6OmdldE93blByb3BlcnR5RGVzY3JpcHRvcihKU09iamVj
dCogb2JqZWN0LCBFeGVjU3RhdGUqIGV4ZWMsIGNvbnN0IElkZW50aWZpZXImIHByb3BlcnR5TmFt
ZSwgUHJvcGVydHlEZXNjcmlwdG9yJiBkZXNjcmlwdG9yKQorYm9vbCBEYXRlQ29uc3RydWN0b3I6
OmdldE93blByb3BlcnR5RGVzY3JpcHRvcihKU09iamVjdCogb2JqZWN0LCBFeGVjU3RhdGUqIGV4
ZWMsIFByb3BlcnR5TmFtZSBwcm9wZXJ0eU5hbWUsIFByb3BlcnR5RGVzY3JpcHRvciYgZGVzY3Jp
cHRvcikKIHsKICAgICByZXR1cm4gZ2V0U3RhdGljRnVuY3Rpb25EZXNjcmlwdG9yPEludGVybmFs
RnVuY3Rpb24+KGV4ZWMsIEV4ZWNTdGF0ZTo6ZGF0ZUNvbnN0cnVjdG9yVGFibGUoZXhlYyksIGpz
Q2FzdDxEYXRlQ29uc3RydWN0b3IqPihvYmplY3QpLCBwcm9wZXJ0eU5hbWUsIGRlc2NyaXB0b3Ip
OwogfQpJbmRleDogU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvRGF0ZUNvbnN0cnVjdG9y
LmgKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PQotLS0gU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvRGF0ZUNvbnN0
cnVjdG9yLmgJKHJldmlzaW9uIDExNjY2NykKKysrIFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50
aW1lL0RhdGVDb25zdHJ1Y3Rvci5oCSh3b3JraW5nIGNvcHkpCkBAIC01NCw5ICs1NCw5IEBAIG5h
bWVzcGFjZSBKU0MgewogICAgICAgICBzdGF0aWMgQ29uc3RydWN0VHlwZSBnZXRDb25zdHJ1Y3RE
YXRhKEpTQ2VsbCosIENvbnN0cnVjdERhdGEmKTsKICAgICAgICAgc3RhdGljIENhbGxUeXBlIGdl
dENhbGxEYXRhKEpTQ2VsbCosIENhbGxEYXRhJik7CiAKLSAgICAgICAgc3RhdGljIGJvb2wgZ2V0
T3duUHJvcGVydHlTbG90KEpTQ2VsbCosIEV4ZWNTdGF0ZSosIGNvbnN0IElkZW50aWZpZXImLCBQ
cm9wZXJ0eVNsb3QmKTsKKyAgICAgICAgc3RhdGljIGJvb2wgZ2V0T3duUHJvcGVydHlTbG90KEpT
Q2VsbCosIEV4ZWNTdGF0ZSosIFByb3BlcnR5TmFtZSwgUHJvcGVydHlTbG90Jik7CiAKLSAgICAg
ICAgc3RhdGljIGJvb2wgZ2V0T3duUHJvcGVydHlEZXNjcmlwdG9yKEpTT2JqZWN0KiwgRXhlY1N0
YXRlKiwgY29uc3QgSWRlbnRpZmllciYsIFByb3BlcnR5RGVzY3JpcHRvciYpOworICAgICAgICBz
dGF0aWMgYm9vbCBnZXRPd25Qcm9wZXJ0eURlc2NyaXB0b3IoSlNPYmplY3QqLCBFeGVjU3RhdGUq
LCBQcm9wZXJ0eU5hbWUsIFByb3BlcnR5RGVzY3JpcHRvciYpOwogICAgIH07CiAKICAgICBKU09i
amVjdCogY29uc3RydWN0RGF0ZShFeGVjU3RhdGUqLCBKU0dsb2JhbE9iamVjdCosIGNvbnN0IEFy
Z0xpc3QmKTsKSW5kZXg6IFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL0RhdGVQcm90b3R5
cGUuY3BwCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL0RhdGVQ
cm90b3R5cGUuY3BwCShyZXZpc2lvbiAxMTY2NjcpCisrKyBTb3VyY2UvSmF2YVNjcmlwdENvcmUv
cnVudGltZS9EYXRlUHJvdG90eXBlLmNwcAkod29ya2luZyBjb3B5KQpAQCAtNDY3LDEyICs0Njcs
MTIgQEAgdm9pZCBEYXRlUHJvdG90eXBlOjpmaW5pc2hDcmVhdGlvbihFeGVjUwogICAgIC8vIFRo
ZSBjb25zdHJ1Y3RvciB3aWxsIGJlIGFkZGVkIGxhdGVyLCBhZnRlciBEYXRlQ29uc3RydWN0b3Ig
aGFzIGJlZW4gYnVpbHQuCiB9CiAKLWJvb2wgRGF0ZVByb3RvdHlwZTo6Z2V0T3duUHJvcGVydHlT
bG90KEpTQ2VsbCogY2VsbCwgRXhlY1N0YXRlKiBleGVjLCBjb25zdCBJZGVudGlmaWVyJiBwcm9w
ZXJ0eU5hbWUsIFByb3BlcnR5U2xvdCYgc2xvdCkKK2Jvb2wgRGF0ZVByb3RvdHlwZTo6Z2V0T3du
UHJvcGVydHlTbG90KEpTQ2VsbCogY2VsbCwgRXhlY1N0YXRlKiBleGVjLCBQcm9wZXJ0eU5hbWUg
cHJvcGVydHlOYW1lLCBQcm9wZXJ0eVNsb3QmIHNsb3QpCiB7CiAgICAgcmV0dXJuIGdldFN0YXRp
Y0Z1bmN0aW9uU2xvdDxKU09iamVjdD4oZXhlYywgRXhlY1N0YXRlOjpkYXRlVGFibGUoZXhlYyks
IGpzQ2FzdDxEYXRlUHJvdG90eXBlKj4oY2VsbCksIHByb3BlcnR5TmFtZSwgc2xvdCk7CiB9CiAK
LWJvb2wgRGF0ZVByb3RvdHlwZTo6Z2V0T3duUHJvcGVydHlEZXNjcmlwdG9yKEpTT2JqZWN0KiBv
YmplY3QsIEV4ZWNTdGF0ZSogZXhlYywgY29uc3QgSWRlbnRpZmllciYgcHJvcGVydHlOYW1lLCBQ
cm9wZXJ0eURlc2NyaXB0b3ImIGRlc2NyaXB0b3IpCitib29sIERhdGVQcm90b3R5cGU6OmdldE93
blByb3BlcnR5RGVzY3JpcHRvcihKU09iamVjdCogb2JqZWN0LCBFeGVjU3RhdGUqIGV4ZWMsIFBy
b3BlcnR5TmFtZSBwcm9wZXJ0eU5hbWUsIFByb3BlcnR5RGVzY3JpcHRvciYgZGVzY3JpcHRvcikK
IHsKICAgICByZXR1cm4gZ2V0U3RhdGljRnVuY3Rpb25EZXNjcmlwdG9yPEpTT2JqZWN0PihleGVj
LCBFeGVjU3RhdGU6OmRhdGVUYWJsZShleGVjKSwganNDYXN0PERhdGVQcm90b3R5cGUqPihvYmpl
Y3QpLCBwcm9wZXJ0eU5hbWUsIGRlc2NyaXB0b3IpOwogfQpJbmRleDogU291cmNlL0phdmFTY3Jp
cHRDb3JlL3J1bnRpbWUvRGF0ZVByb3RvdHlwZS5oCj09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9KYXZh
U2NyaXB0Q29yZS9ydW50aW1lL0RhdGVQcm90b3R5cGUuaAkocmV2aXNpb24gMTE2NjY3KQorKysg
U291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvRGF0ZVByb3RvdHlwZS5oCSh3b3JraW5nIGNv
cHkpCkBAIC00MCw5ICs0MCw5IEBAIG5hbWVzcGFjZSBKU0MgewogICAgICAgICAgICAgcHJvdG90
eXBlLT5maW5pc2hDcmVhdGlvbihleGVjLCBnbG9iYWxPYmplY3QpOwogICAgICAgICAgICAgcmV0
dXJuIHByb3RvdHlwZTsKICAgICAgICAgfQotICAgICAgICBzdGF0aWMgYm9vbCBnZXRPd25Qcm9w
ZXJ0eVNsb3QoSlNDZWxsKiwgRXhlY1N0YXRlKiwgY29uc3QgSWRlbnRpZmllciYsIFByb3BlcnR5
U2xvdCYpOworICAgICAgICBzdGF0aWMgYm9vbCBnZXRPd25Qcm9wZXJ0eVNsb3QoSlNDZWxsKiwg
RXhlY1N0YXRlKiwgUHJvcGVydHlOYW1lLCBQcm9wZXJ0eVNsb3QmKTsKIAotICAgICAgICBzdGF0
aWMgYm9vbCBnZXRPd25Qcm9wZXJ0eURlc2NyaXB0b3IoSlNPYmplY3QqLCBFeGVjU3RhdGUqLCBj
b25zdCBJZGVudGlmaWVyJiwgUHJvcGVydHlEZXNjcmlwdG9yJik7CisgICAgICAgIHN0YXRpYyBi
b29sIGdldE93blByb3BlcnR5RGVzY3JpcHRvcihKU09iamVjdCosIEV4ZWNTdGF0ZSosIFByb3Bl
cnR5TmFtZSwgUHJvcGVydHlEZXNjcmlwdG9yJik7CiAKICAgICAgICAgc3RhdGljIGNvbnN0IENs
YXNzSW5mbyBzX2luZm87CiAKSW5kZXg6IFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL0Vy
cm9yLmgKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PQotLS0gU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvRXJyb3Iu
aAkocmV2aXNpb24gMTE2NjY3KQorKysgU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvRXJy
b3IuaAkod29ya2luZyBjb3B5KQpAQCAtOTAsNyArOTAsNyBAQCBuYW1lc3BhY2UgSlNDIHsKICAg
ICAgICAgc3RhdGljIFN0cmljdE1vZGVUeXBlRXJyb3JGdW5jdGlvbiogY3JlYXRlKEV4ZWNTdGF0
ZSogZXhlYywgSlNHbG9iYWxPYmplY3QqIGdsb2JhbE9iamVjdCwgU3RydWN0dXJlKiBzdHJ1Y3R1
cmUsIGNvbnN0IFVTdHJpbmcmIG1lc3NhZ2UpCiAgICAgICAgIHsKICAgICAgICAgICAgIFN0cmlj
dE1vZGVUeXBlRXJyb3JGdW5jdGlvbiogZnVuY3Rpb24gPSBuZXcgKE5vdE51bGwsIGFsbG9jYXRl
Q2VsbDxTdHJpY3RNb2RlVHlwZUVycm9yRnVuY3Rpb24+KCpleGVjLT5oZWFwKCkpKSBTdHJpY3RN
b2RlVHlwZUVycm9yRnVuY3Rpb24oZ2xvYmFsT2JqZWN0LCBzdHJ1Y3R1cmUsIG1lc3NhZ2UpOwot
ICAgICAgICAgICAgZnVuY3Rpb24tPmZpbmlzaENyZWF0aW9uKGV4ZWMtPmdsb2JhbERhdGEoKSwg
ZXhlYy0+Z2xvYmFsRGF0YSgpLnByb3BlcnR5TmFtZXMtPmVtcHR5SWRlbnRpZmllcik7CisgICAg
ICAgICAgICBmdW5jdGlvbi0+ZmluaXNoQ3JlYXRpb24oZXhlYy0+Z2xvYmFsRGF0YSgpLCAiIik7
CiAgICAgICAgICAgICByZXR1cm4gZnVuY3Rpb247CiAgICAgICAgIH0KICAgICAKSW5kZXg6IFNv
dXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL0Vycm9yQ29uc3RydWN0b3IuY3BwCj09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT0KLS0tIFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL0Vycm9yQ29uc3RydWN0b3IuY3Bw
CShyZXZpc2lvbiAxMTY2NjcpCisrKyBTb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9FcnJv
ckNvbnN0cnVjdG9yLmNwcAkod29ya2luZyBjb3B5KQpAQCAtMzksNyArMzksNyBAQCBFcnJvckNv
bnN0cnVjdG9yOjpFcnJvckNvbnN0cnVjdG9yKEpTR2xvCiAKIHZvaWQgRXJyb3JDb25zdHJ1Y3Rv
cjo6ZmluaXNoQ3JlYXRpb24oRXhlY1N0YXRlKiBleGVjLCBFcnJvclByb3RvdHlwZSogZXJyb3JQ
cm90b3R5cGUpCiB7Ci0gICAgQmFzZTo6ZmluaXNoQ3JlYXRpb24oZXhlYy0+Z2xvYmFsRGF0YSgp
LCBJZGVudGlmaWVyKGV4ZWMsIGVycm9yUHJvdG90eXBlLT5jbGFzc0luZm8oKS0+Y2xhc3NOYW1l
KSk7CisgICAgQmFzZTo6ZmluaXNoQ3JlYXRpb24oZXhlYy0+Z2xvYmFsRGF0YSgpLCBlcnJvclBy
b3RvdHlwZS0+Y2xhc3NJbmZvKCktPmNsYXNzTmFtZSk7CiAgICAgLy8gRUNNQSAxNS4xMS4zLjEg
RXJyb3IucHJvdG90eXBlCiAgICAgcHV0RGlyZWN0V2l0aG91dFRyYW5zaXRpb24oZXhlYy0+Z2xv
YmFsRGF0YSgpLCBleGVjLT5wcm9wZXJ0eU5hbWVzKCkucHJvdG90eXBlLCBlcnJvclByb3RvdHlw
ZSwgRG9udEVudW0gfCBEb250RGVsZXRlIHwgUmVhZE9ubHkpOwogICAgIHB1dERpcmVjdFdpdGhv
dXRUcmFuc2l0aW9uKGV4ZWMtPmdsb2JhbERhdGEoKSwgZXhlYy0+cHJvcGVydHlOYW1lcygpLmxl
bmd0aCwganNOdW1iZXIoMSksIERvbnREZWxldGUgfCBSZWFkT25seSB8IERvbnRFbnVtKTsKSW5k
ZXg6IFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL0Vycm9yUHJvdG90eXBlLmNwcAo9PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09Ci0tLSBTb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9FcnJvclByb3RvdHlwZS5j
cHAJKHJldmlzaW9uIDExNjY2NykKKysrIFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL0Vy
cm9yUHJvdG90eXBlLmNwcAkod29ya2luZyBjb3B5KQpAQCAtNjMsMTIgKzYzLDEyIEBAIHZvaWQg
RXJyb3JQcm90b3R5cGU6OmZpbmlzaENyZWF0aW9uKEV4ZWMKICAgICBwdXREaXJlY3QoZXhlYy0+
Z2xvYmFsRGF0YSgpLCBleGVjLT5wcm9wZXJ0eU5hbWVzKCkubmFtZSwganNOb250cml2aWFsU3Ry
aW5nKGV4ZWMsICJFcnJvciIpLCBEb250RW51bSk7CiB9CiAKLWJvb2wgRXJyb3JQcm90b3R5cGU6
OmdldE93blByb3BlcnR5U2xvdChKU0NlbGwqIGNlbGwsIEV4ZWNTdGF0ZSogZXhlYywgY29uc3Qg
SWRlbnRpZmllciYgcHJvcGVydHlOYW1lLCBQcm9wZXJ0eVNsb3QgJnNsb3QpCitib29sIEVycm9y
UHJvdG90eXBlOjpnZXRPd25Qcm9wZXJ0eVNsb3QoSlNDZWxsKiBjZWxsLCBFeGVjU3RhdGUqIGV4
ZWMsIFByb3BlcnR5TmFtZSBwcm9wZXJ0eU5hbWUsIFByb3BlcnR5U2xvdCAmc2xvdCkKIHsKICAg
ICByZXR1cm4gZ2V0U3RhdGljRnVuY3Rpb25TbG90PEVycm9ySW5zdGFuY2U+KGV4ZWMsIEV4ZWNT
dGF0ZTo6ZXJyb3JQcm90b3R5cGVUYWJsZShleGVjKSwganNDYXN0PEVycm9yUHJvdG90eXBlKj4o
Y2VsbCksIHByb3BlcnR5TmFtZSwgc2xvdCk7CiB9CiAKLWJvb2wgRXJyb3JQcm90b3R5cGU6Omdl
dE93blByb3BlcnR5RGVzY3JpcHRvcihKU09iamVjdCogb2JqZWN0LCBFeGVjU3RhdGUqIGV4ZWMs
IGNvbnN0IElkZW50aWZpZXImIHByb3BlcnR5TmFtZSwgUHJvcGVydHlEZXNjcmlwdG9yJiBkZXNj
cmlwdG9yKQorYm9vbCBFcnJvclByb3RvdHlwZTo6Z2V0T3duUHJvcGVydHlEZXNjcmlwdG9yKEpT
T2JqZWN0KiBvYmplY3QsIEV4ZWNTdGF0ZSogZXhlYywgUHJvcGVydHlOYW1lIHByb3BlcnR5TmFt
ZSwgUHJvcGVydHlEZXNjcmlwdG9yJiBkZXNjcmlwdG9yKQogewogICAgIHJldHVybiBnZXRTdGF0
aWNGdW5jdGlvbkRlc2NyaXB0b3I8RXJyb3JJbnN0YW5jZT4oZXhlYywgRXhlY1N0YXRlOjplcnJv
clByb3RvdHlwZVRhYmxlKGV4ZWMpLCBqc0Nhc3Q8RXJyb3JQcm90b3R5cGUqPihvYmplY3QpLCBw
cm9wZXJ0eU5hbWUsIGRlc2NyaXB0b3IpOwogfQpJbmRleDogU291cmNlL0phdmFTY3JpcHRDb3Jl
L3J1bnRpbWUvRXJyb3JQcm90b3R5cGUuaAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvSmF2YVNjcmlw
dENvcmUvcnVudGltZS9FcnJvclByb3RvdHlwZS5oCShyZXZpc2lvbiAxMTY2NjcpCisrKyBTb3Vy
Y2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9FcnJvclByb3RvdHlwZS5oCSh3b3JraW5nIGNvcHkp
CkBAIC01Miw4ICs1Miw4IEBAIG5hbWVzcGFjZSBKU0MgewogICAgICAgICBzdGF0aWMgY29uc3Qg
dW5zaWduZWQgU3RydWN0dXJlRmxhZ3MgPSBPdmVycmlkZXNHZXRPd25Qcm9wZXJ0eVNsb3QgfCBF
cnJvckluc3RhbmNlOjpTdHJ1Y3R1cmVGbGFnczsKIAogICAgIHByaXZhdGU6Ci0gICAgICAgIHN0
YXRpYyBib29sIGdldE93blByb3BlcnR5U2xvdChKU0NlbGwqLCBFeGVjU3RhdGUqLCBjb25zdCBJ
ZGVudGlmaWVyJiwgUHJvcGVydHlTbG90Jik7Ci0gICAgICAgIHN0YXRpYyBib29sIGdldE93blBy
b3BlcnR5RGVzY3JpcHRvcihKU09iamVjdCosIEV4ZWNTdGF0ZSosIGNvbnN0IElkZW50aWZpZXIm
LCBQcm9wZXJ0eURlc2NyaXB0b3ImKTsKKyAgICAgICAgc3RhdGljIGJvb2wgZ2V0T3duUHJvcGVy
dHlTbG90KEpTQ2VsbCosIEV4ZWNTdGF0ZSosIFByb3BlcnR5TmFtZSwgUHJvcGVydHlTbG90Jik7
CisgICAgICAgIHN0YXRpYyBib29sIGdldE93blByb3BlcnR5RGVzY3JpcHRvcihKU09iamVjdCos
IEV4ZWNTdGF0ZSosIFByb3BlcnR5TmFtZSwgUHJvcGVydHlEZXNjcmlwdG9yJik7CiAgICAgfTsK
IAogfSAvLyBuYW1lc3BhY2UgSlNDCkluZGV4OiBTb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGlt
ZS9GdW5jdGlvbkNvbnN0cnVjdG9yLmNwcAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvSmF2YVNjcmlw
dENvcmUvcnVudGltZS9GdW5jdGlvbkNvbnN0cnVjdG9yLmNwcAkocmV2aXNpb24gMTE2NjY3KQor
KysgU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvRnVuY3Rpb25Db25zdHJ1Y3Rvci5jcHAJ
KHdvcmtpbmcgY29weSkKQEAgLTQ3LDcgKzQ3LDcgQEAgRnVuY3Rpb25Db25zdHJ1Y3Rvcjo6RnVu
Y3Rpb25Db25zdHJ1Y3RvcgogCiB2b2lkIEZ1bmN0aW9uQ29uc3RydWN0b3I6OmZpbmlzaENyZWF0
aW9uKEV4ZWNTdGF0ZSogZXhlYywgRnVuY3Rpb25Qcm90b3R5cGUqIGZ1bmN0aW9uUHJvdG90eXBl
KQogewotICAgIEJhc2U6OmZpbmlzaENyZWF0aW9uKGV4ZWMtPmdsb2JhbERhdGEoKSwgSWRlbnRp
ZmllcihleGVjLCBmdW5jdGlvblByb3RvdHlwZS0+Y2xhc3NJbmZvKCktPmNsYXNzTmFtZSkpOwor
ICAgIEJhc2U6OmZpbmlzaENyZWF0aW9uKGV4ZWMtPmdsb2JhbERhdGEoKSwgZnVuY3Rpb25Qcm90
b3R5cGUtPmNsYXNzSW5mbygpLT5jbGFzc05hbWUpOwogICAgIHB1dERpcmVjdFdpdGhvdXRUcmFu
c2l0aW9uKGV4ZWMtPmdsb2JhbERhdGEoKSwgZXhlYy0+cHJvcGVydHlOYW1lcygpLnByb3RvdHlw
ZSwgZnVuY3Rpb25Qcm90b3R5cGUsIERvbnRFbnVtIHwgRG9udERlbGV0ZSB8IFJlYWRPbmx5KTsK
IAogICAgIC8vIE51bWJlciBvZiBhcmd1bWVudHMgZm9yIGNvbnN0cnVjdG9yCkluZGV4OiBTb3Vy
Y2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9GdW5jdGlvblByb3RvdHlwZS5jcHAKPT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PQotLS0gU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvRnVuY3Rpb25Qcm90b3R5cGUuY3Bw
CShyZXZpc2lvbiAxMTY2NjcpCisrKyBTb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9GdW5j
dGlvblByb3RvdHlwZS5jcHAJKHdvcmtpbmcgY29weSkKQEAgLTQ3LDcgKzQ3LDcgQEAgRnVuY3Rp
b25Qcm90b3R5cGU6OkZ1bmN0aW9uUHJvdG90eXBlKEpTRwogewogfQogCi12b2lkIEZ1bmN0aW9u
UHJvdG90eXBlOjpmaW5pc2hDcmVhdGlvbihFeGVjU3RhdGUqIGV4ZWMsIGNvbnN0IElkZW50aWZp
ZXImIG5hbWUpCit2b2lkIEZ1bmN0aW9uUHJvdG90eXBlOjpmaW5pc2hDcmVhdGlvbihFeGVjU3Rh
dGUqIGV4ZWMsIGNvbnN0IFVTdHJpbmcmIG5hbWUpCiB7CiAgICAgQmFzZTo6ZmluaXNoQ3JlYXRp
b24oZXhlYy0+Z2xvYmFsRGF0YSgpLCBuYW1lKTsKICAgICBwdXREaXJlY3RXaXRob3V0VHJhbnNp
dGlvbihleGVjLT5nbG9iYWxEYXRhKCksIGV4ZWMtPnByb3BlcnR5TmFtZXMoKS5sZW5ndGgsIGpz
TnVtYmVyKDApLCBEb250RGVsZXRlIHwgUmVhZE9ubHkgfCBEb250RW51bSk7CkBAIC01NSwxNiAr
NTUsMTYgQEAgdm9pZCBGdW5jdGlvblByb3RvdHlwZTo6ZmluaXNoQ3JlYXRpb24oRQogCiB2b2lk
IEZ1bmN0aW9uUHJvdG90eXBlOjphZGRGdW5jdGlvblByb3BlcnRpZXMoRXhlY1N0YXRlKiBleGVj
LCBKU0dsb2JhbE9iamVjdCogZ2xvYmFsT2JqZWN0LCBKU0Z1bmN0aW9uKiogY2FsbEZ1bmN0aW9u
LCBKU0Z1bmN0aW9uKiogYXBwbHlGdW5jdGlvbikKIHsKLSAgICBKU0Z1bmN0aW9uKiB0b1N0cmlu
Z0Z1bmN0aW9uID0gSlNGdW5jdGlvbjo6Y3JlYXRlKGV4ZWMsIGdsb2JhbE9iamVjdCwgMCwgZXhl
Yy0+cHJvcGVydHlOYW1lcygpLnRvU3RyaW5nLCBmdW5jdGlvblByb3RvRnVuY1RvU3RyaW5nKTsK
KyAgICBKU0Z1bmN0aW9uKiB0b1N0cmluZ0Z1bmN0aW9uID0gSlNGdW5jdGlvbjo6Y3JlYXRlKGV4
ZWMsIGdsb2JhbE9iamVjdCwgMCwgZXhlYy0+cHJvcGVydHlOYW1lcygpLnRvU3RyaW5nLnVzdHJp
bmcoKSwgZnVuY3Rpb25Qcm90b0Z1bmNUb1N0cmluZyk7CiAgICAgcHV0RGlyZWN0V2l0aG91dFRy
YW5zaXRpb24oZXhlYy0+Z2xvYmFsRGF0YSgpLCBleGVjLT5wcm9wZXJ0eU5hbWVzKCkudG9TdHJp
bmcsIHRvU3RyaW5nRnVuY3Rpb24sIERvbnRFbnVtKTsKIAotICAgICphcHBseUZ1bmN0aW9uID0g
SlNGdW5jdGlvbjo6Y3JlYXRlKGV4ZWMsIGdsb2JhbE9iamVjdCwgMiwgZXhlYy0+cHJvcGVydHlO
YW1lcygpLmFwcGx5LCBmdW5jdGlvblByb3RvRnVuY0FwcGx5KTsKKyAgICAqYXBwbHlGdW5jdGlv
biA9IEpTRnVuY3Rpb246OmNyZWF0ZShleGVjLCBnbG9iYWxPYmplY3QsIDIsIGV4ZWMtPnByb3Bl
cnR5TmFtZXMoKS5hcHBseS51c3RyaW5nKCksIGZ1bmN0aW9uUHJvdG9GdW5jQXBwbHkpOwogICAg
IHB1dERpcmVjdFdpdGhvdXRUcmFuc2l0aW9uKGV4ZWMtPmdsb2JhbERhdGEoKSwgZXhlYy0+cHJv
cGVydHlOYW1lcygpLmFwcGx5LCAqYXBwbHlGdW5jdGlvbiwgRG9udEVudW0pOwogCi0gICAgKmNh
bGxGdW5jdGlvbiA9IEpTRnVuY3Rpb246OmNyZWF0ZShleGVjLCBnbG9iYWxPYmplY3QsIDEsIGV4
ZWMtPnByb3BlcnR5TmFtZXMoKS5jYWxsLCBmdW5jdGlvblByb3RvRnVuY0NhbGwpOworICAgICpj
YWxsRnVuY3Rpb24gPSBKU0Z1bmN0aW9uOjpjcmVhdGUoZXhlYywgZ2xvYmFsT2JqZWN0LCAxLCBl
eGVjLT5wcm9wZXJ0eU5hbWVzKCkuY2FsbC51c3RyaW5nKCksIGZ1bmN0aW9uUHJvdG9GdW5jQ2Fs
bCk7CiAgICAgcHV0RGlyZWN0V2l0aG91dFRyYW5zaXRpb24oZXhlYy0+Z2xvYmFsRGF0YSgpLCBl
eGVjLT5wcm9wZXJ0eU5hbWVzKCkuY2FsbCwgKmNhbGxGdW5jdGlvbiwgRG9udEVudW0pOwogCi0g
ICAgSlNGdW5jdGlvbiogYmluZEZ1bmN0aW9uID0gSlNGdW5jdGlvbjo6Y3JlYXRlKGV4ZWMsIGds
b2JhbE9iamVjdCwgMSwgZXhlYy0+cHJvcGVydHlOYW1lcygpLmJpbmQsIGZ1bmN0aW9uUHJvdG9G
dW5jQmluZCk7CisgICAgSlNGdW5jdGlvbiogYmluZEZ1bmN0aW9uID0gSlNGdW5jdGlvbjo6Y3Jl
YXRlKGV4ZWMsIGdsb2JhbE9iamVjdCwgMSwgZXhlYy0+cHJvcGVydHlOYW1lcygpLmJpbmQudXN0
cmluZygpLCBmdW5jdGlvblByb3RvRnVuY0JpbmQpOwogICAgIHB1dERpcmVjdFdpdGhvdXRUcmFu
c2l0aW9uKGV4ZWMtPmdsb2JhbERhdGEoKSwgZXhlYy0+cHJvcGVydHlOYW1lcygpLmJpbmQsIGJp
bmRGdW5jdGlvbiwgRG9udEVudW0pOwogfQogCkBAIC0yMDcsOSArMjA3LDggQEAgRW5jb2RlZEpT
VmFsdWUgSlNDX0hPU1RfQ0FMTCBmdW5jdGlvblBybwogICAgICAgICAgICAgbGVuZ3RoID0gdGFy
Z2V0TGVuZ3RoIC0gbnVtQm91bmRBcmdzOwogICAgIH0KIAotICAgIElkZW50aWZpZXIgbmFtZShl
eGVjLCB0YXJnZXQuZ2V0KGV4ZWMsIGV4ZWMtPnByb3BlcnR5TmFtZXMoKS5uYW1lKS50b1N0cmlu
ZyhleGVjKS0+dmFsdWUoZXhlYykpOwotCi0gICAgcmV0dXJuIEpTVmFsdWU6OmVuY29kZShKU0Jv
dW5kRnVuY3Rpb246OmNyZWF0ZShleGVjLCBnbG9iYWxPYmplY3QsIHRhcmdldE9iamVjdCwgZXhl
Yy0+YXJndW1lbnQoMCksIGJvdW5kQXJncywgbGVuZ3RoLCBuYW1lKSk7CisgICAgSlNTdHJpbmcq
IG5hbWUgPSB0YXJnZXQuZ2V0KGV4ZWMsIGV4ZWMtPnByb3BlcnR5TmFtZXMoKS5uYW1lKS50b1N0
cmluZyhleGVjKTsKKyAgICByZXR1cm4gSlNWYWx1ZTo6ZW5jb2RlKEpTQm91bmRGdW5jdGlvbjo6
Y3JlYXRlKGV4ZWMsIGdsb2JhbE9iamVjdCwgdGFyZ2V0T2JqZWN0LCBleGVjLT5hcmd1bWVudCgw
KSwgYm91bmRBcmdzLCBsZW5ndGgsIG5hbWUtPnZhbHVlKGV4ZWMpKSk7CiB9CiAKIH0gLy8gbmFt
ZXNwYWNlIEpTQwpJbmRleDogU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvRnVuY3Rpb25Q
cm90b3R5cGUuaAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9G
dW5jdGlvblByb3RvdHlwZS5oCShyZXZpc2lvbiAxMTY2NjcpCisrKyBTb3VyY2UvSmF2YVNjcmlw
dENvcmUvcnVudGltZS9GdW5jdGlvblByb3RvdHlwZS5oCSh3b3JraW5nIGNvcHkpCkBAIC0zMiw3
ICszMiw3IEBAIG5hbWVzcGFjZSBKU0MgewogICAgICAgICBzdGF0aWMgRnVuY3Rpb25Qcm90b3R5
cGUqIGNyZWF0ZShFeGVjU3RhdGUqIGV4ZWMsIEpTR2xvYmFsT2JqZWN0KiBnbG9iYWxPYmplY3Qs
IFN0cnVjdHVyZSogc3RydWN0dXJlKQogICAgICAgICB7CiAgICAgICAgICAgICBGdW5jdGlvblBy
b3RvdHlwZSogcHJvdG90eXBlID0gbmV3IChOb3ROdWxsLCBhbGxvY2F0ZUNlbGw8RnVuY3Rpb25Q
cm90b3R5cGU+KCpleGVjLT5oZWFwKCkpKSBGdW5jdGlvblByb3RvdHlwZShnbG9iYWxPYmplY3Qs
IHN0cnVjdHVyZSk7Ci0gICAgICAgICAgICBwcm90b3R5cGUtPmZpbmlzaENyZWF0aW9uKGV4ZWMs
IGV4ZWMtPnByb3BlcnR5TmFtZXMoKS5udWxsSWRlbnRpZmllcik7CisgICAgICAgICAgICBwcm90
b3R5cGUtPmZpbmlzaENyZWF0aW9uKGV4ZWMsICIiKTsKICAgICAgICAgICAgIHJldHVybiBwcm90
b3R5cGU7CiAgICAgICAgIH0KICAgICAgICAgCkBAIC00Niw3ICs0Niw3IEBAIG5hbWVzcGFjZSBK
U0MgewogICAgICAgICBzdGF0aWMgY29uc3QgQ2xhc3NJbmZvIHNfaW5mbzsKIAogICAgIHByb3Rl
Y3RlZDoKLSAgICAgICAgdm9pZCBmaW5pc2hDcmVhdGlvbihFeGVjU3RhdGUqLCBjb25zdCBJZGVu
dGlmaWVyJiBuYW1lKTsKKyAgICAgICAgdm9pZCBmaW5pc2hDcmVhdGlvbihFeGVjU3RhdGUqLCBj
b25zdCBVU3RyaW5nJiBuYW1lKTsKIAogICAgIHByaXZhdGU6CiAgICAgICAgIEZ1bmN0aW9uUHJv
dG90eXBlKEpTR2xvYmFsT2JqZWN0KiwgU3RydWN0dXJlKik7CkluZGV4OiBTb3VyY2UvSmF2YVNj
cmlwdENvcmUvcnVudGltZS9JZGVudGlmaWVyLmNwcAo9PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvSmF2
YVNjcmlwdENvcmUvcnVudGltZS9JZGVudGlmaWVyLmNwcAkocmV2aXNpb24gMTE2NjY3KQorKysg
U291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvSWRlbnRpZmllci5jcHAJKHdvcmtpbmcgY29w
eSkKQEAgLTE0NSw1NiArMTQ1LDYgQEAgUGFzc1JlZlB0cjxTdHJpbmdJbXBsPiBJZGVudGlmaWVy
OjphZGQ4KAogICAgIHJldHVybiBhZGRSZXN1bHQuaXNOZXdFbnRyeSA/IGFkb3B0UmVmKCphZGRS
ZXN1bHQuaXRlcmF0b3IpIDogKmFkZFJlc3VsdC5pdGVyYXRvcjsKIH0KIAotdGVtcGxhdGUgPHR5
cGVuYW1lIENoYXJUeXBlPgotQUxXQVlTX0lOTElORSB1aW50MzJfdCBJZGVudGlmaWVyOjp0b1VJ
bnQzMkZyb21DaGFyYWN0ZXJzKGNvbnN0IENoYXJUeXBlKiBjaGFyYWN0ZXJzLCB1bnNpZ25lZCBs
ZW5ndGgsIGJvb2wmIG9rKQotewotICAgIC8vIEdldCB0aGUgZmlyc3QgY2hhcmFjdGVyLCB0dXJu
aW5nIGl0IGludG8gYSBkaWdpdC4KLSAgICB1aW50MzJfdCB2YWx1ZSA9IGNoYXJhY3RlcnNbMF0g
LSAnMCc7Ci0gICAgaWYgKHZhbHVlID4gOSkKLSAgICAgICAgcmV0dXJuIDA7Ci0gICAgCi0gICAg
Ly8gQ2hlY2sgZm9yIGxlYWRpbmcgemVyb3MuIElmIHRoZSBmaXJzdCBjaGFyYWNoZXIgaXMgMCwg
dGhlbiB0aGUKLSAgICAvLyBsZW5ndGggb2YgdGhlIHN0cmluZyBtdXN0IGJlIG9uZSAtIGUuZy4g
IjA0MiIgaXMgbm90IGVxdWFsIHRvICI0MiIuCi0gICAgaWYgKCF2YWx1ZSAmJiBsZW5ndGggPiAx
KQotICAgICAgICByZXR1cm4gMDsKLSAgICAKLSAgICB3aGlsZSAoLS1sZW5ndGgpIHsKLSAgICAg
ICAgLy8gTXVsdGlwbHkgdmFsdWUgYnkgMTAsIGNoZWNraW5nIGZvciBvdmVyZmxvdyBvdXQgb2Yg
MzIgYml0cy4KLSAgICAgICAgaWYgKHZhbHVlID4gMHhGRkZGRkZGRlUgLyAxMCkKLSAgICAgICAg
ICAgIHJldHVybiAwOwotICAgICAgICB2YWx1ZSAqPSAxMDsKLSAgICAgICAgCi0gICAgICAgIC8v
IEdldCB0aGUgbmV4dCBjaGFyYWN0ZXIsIHR1cm5pbmcgaXQgaW50byBhIGRpZ2l0LgotICAgICAg
ICB1aW50MzJfdCBuZXdWYWx1ZSA9ICooKytjaGFyYWN0ZXJzKSAtICcwJzsKLSAgICAgICAgaWYg
KG5ld1ZhbHVlID4gOSkKLSAgICAgICAgICAgIHJldHVybiAwOwotICAgICAgICAKLSAgICAgICAg
Ly8gQWRkIGluIHRoZSBvbGQgdmFsdWUsIGNoZWNraW5nIGZvciBvdmVyZmxvdyBvdXQgb2YgMzIg
Yml0cy4KLSAgICAgICAgbmV3VmFsdWUgKz0gdmFsdWU7Ci0gICAgICAgIGlmIChuZXdWYWx1ZSA8
IHZhbHVlKQotICAgICAgICAgICAgcmV0dXJuIDA7Ci0gICAgICAgIHZhbHVlID0gbmV3VmFsdWU7
Ci0gICAgfQotICAgIAotICAgIG9rID0gdHJ1ZTsKLSAgICByZXR1cm4gdmFsdWU7Ci19Ci0KLXVp
bnQzMl90IElkZW50aWZpZXI6OnRvVUludDMyKGNvbnN0IFVTdHJpbmcmIHN0cmluZywgYm9vbCYg
b2spCi17Ci0gICAgb2sgPSBmYWxzZTsKLQotICAgIHVuc2lnbmVkIGxlbmd0aCA9IHN0cmluZy5s
ZW5ndGgoKTsKLQotICAgIC8vIEFuIGVtcHR5IHN0cmluZyBpcyBub3QgYSBudW1iZXIuCi0gICAg
aWYgKCFsZW5ndGgpCi0gICAgICAgIHJldHVybiAwOwotCi0gICAgaWYgKHN0cmluZy5pczhCaXQo
KSkKLSAgICAgICAgcmV0dXJuIHRvVUludDMyRnJvbUNoYXJhY3RlcnMoc3RyaW5nLmNoYXJhY3Rl
cnM4KCksIGxlbmd0aCwgb2spOwotICAgIHJldHVybiB0b1VJbnQzMkZyb21DaGFyYWN0ZXJzKHN0
cmluZy5jaGFyYWN0ZXJzMTYoKSwgbGVuZ3RoLCBvayk7Ci19Ci0KIFBhc3NSZWZQdHI8U3RyaW5n
SW1wbD4gSWRlbnRpZmllcjo6YWRkU2xvd0Nhc2UoSlNHbG9iYWxEYXRhKiBnbG9iYWxEYXRhLCBT
dHJpbmdJbXBsKiByKQogewogICAgIEFTU0VSVCghci0+aXNJZGVudGlmaWVyKCkpOwpJbmRleDog
U291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvSWRlbnRpZmllci5oCj09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0t
IFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL0lkZW50aWZpZXIuaAkocmV2aXNpb24gMTE2
NjY3KQorKysgU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvSWRlbnRpZmllci5oCSh3b3Jr
aW5nIGNvcHkpCkBAIC02MywxMCArNjMsNiBAQCBuYW1lc3BhY2UgSlNDIHsKICAgICAgICAgc3Rh
dGljIElkZW50aWZpZXIgZnJvbShKU0dsb2JhbERhdGEqLCBpbnQgeSk7CiAgICAgICAgIHN0YXRp
YyBJZGVudGlmaWVyIGZyb20oSlNHbG9iYWxEYXRhKiwgZG91YmxlIHkpOwogCi0gICAgICAgIEpT
X0VYUE9SVF9QUklWQVRFIHN0YXRpYyB1aW50MzJfdCB0b1VJbnQzMihjb25zdCBVU3RyaW5nJiwg
Ym9vbCYgb2spOwotICAgICAgICB1aW50MzJfdCB0b1VJbnQzMihib29sJiBvaykgY29uc3QgeyBy
ZXR1cm4gdG9VSW50MzIobV9zdHJpbmcsIG9rKTsgfQotICAgICAgICB1bnNpZ25lZCB0b0FycmF5
SW5kZXgoYm9vbCYgb2spIGNvbnN0OwotCiAgICAgICAgIGJvb2wgaXNOdWxsKCkgY29uc3QgeyBy
ZXR1cm4gbV9zdHJpbmcuaXNOdWxsKCk7IH0KICAgICAgICAgYm9vbCBpc0VtcHR5KCkgY29uc3Qg
eyByZXR1cm4gbV9zdHJpbmcuaXNFbXB0eSgpOyB9CiAgICAgICAgIApJbmRleDogU291cmNlL0ph
dmFTY3JpcHRDb3JlL3J1bnRpbWUvSW50ZXJuYWxGdW5jdGlvbi5jcHAKPT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0g
U291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvSW50ZXJuYWxGdW5jdGlvbi5jcHAJKHJldmlz
aW9uIDExNjY2NykKKysrIFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL0ludGVybmFsRnVu
Y3Rpb24uY3BwCSh3b3JraW5nIGNvcHkpCkBAIC0zOSwxMiArMzksMTIgQEAgSW50ZXJuYWxGdW5j
dGlvbjo6SW50ZXJuYWxGdW5jdGlvbihKU0dsbwogewogfQogCi12b2lkIEludGVybmFsRnVuY3Rp
b246OmZpbmlzaENyZWF0aW9uKEpTR2xvYmFsRGF0YSYgZ2xvYmFsRGF0YSwgY29uc3QgSWRlbnRp
ZmllciYgbmFtZSkKK3ZvaWQgSW50ZXJuYWxGdW5jdGlvbjo6ZmluaXNoQ3JlYXRpb24oSlNHbG9i
YWxEYXRhJiBnbG9iYWxEYXRhLCBjb25zdCBVU3RyaW5nJiBuYW1lKQogewogICAgIEJhc2U6OmZp
bmlzaENyZWF0aW9uKGdsb2JhbERhdGEpOwogICAgIEFTU0VSVChpbmhlcml0cygmc19pbmZvKSk7
CiAgICAgQVNTRVJUKG1ldGhvZFRhYmxlKCktPmdldENhbGxEYXRhICE9IEludGVybmFsRnVuY3Rp
b246OnNfaW5mby5tZXRob2RUYWJsZS5nZXRDYWxsRGF0YSk7Ci0gICAgcHV0RGlyZWN0KGdsb2Jh
bERhdGEsIGdsb2JhbERhdGEucHJvcGVydHlOYW1lcy0+bmFtZSwganNTdHJpbmcoJmdsb2JhbERh
dGEsIG5hbWUuaXNOdWxsKCkgPyAiIiA6IG5hbWUudXN0cmluZygpKSwgRG9udERlbGV0ZSB8IFJl
YWRPbmx5IHwgRG9udEVudW0pOworICAgIHB1dERpcmVjdChnbG9iYWxEYXRhLCBnbG9iYWxEYXRh
LnByb3BlcnR5TmFtZXMtPm5hbWUsIGpzU3RyaW5nKCZnbG9iYWxEYXRhLCBuYW1lLmlzTnVsbCgp
ID8gIiIgOiBuYW1lKSwgRG9udERlbGV0ZSB8IFJlYWRPbmx5IHwgRG9udEVudW0pOwogfQogCiBj
b25zdCBVU3RyaW5nJiBJbnRlcm5hbEZ1bmN0aW9uOjpuYW1lKEV4ZWNTdGF0ZSogZXhlYykKSW5k
ZXg6IFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL0ludGVybmFsRnVuY3Rpb24uaAo9PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09Ci0tLSBTb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9JbnRlcm5hbEZ1bmN0aW9u
LmgJKHJldmlzaW9uIDExNjY2NykKKysrIFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL0lu
dGVybmFsRnVuY3Rpb24uaAkod29ya2luZyBjb3B5KQpAQCAtNTEsNyArNTEsNyBAQCBuYW1lc3Bh
Y2UgSlNDIHsKIAogICAgICAgICBKU19FWFBPUlRfUFJJVkFURSBJbnRlcm5hbEZ1bmN0aW9uKEpT
R2xvYmFsT2JqZWN0KiwgU3RydWN0dXJlKik7CiAKLSAgICAgICAgSlNfRVhQT1JUX1BSSVZBVEUg
dm9pZCBmaW5pc2hDcmVhdGlvbihKU0dsb2JhbERhdGEmLCBjb25zdCBJZGVudGlmaWVyJiBuYW1l
KTsKKyAgICAgICAgSlNfRVhQT1JUX1BSSVZBVEUgdm9pZCBmaW5pc2hDcmVhdGlvbihKU0dsb2Jh
bERhdGEmLCBjb25zdCBVU3RyaW5nJiBuYW1lKTsKIAogICAgICAgICBzdGF0aWMgQ2FsbFR5cGUg
Z2V0Q2FsbERhdGEoSlNDZWxsKiwgQ2FsbERhdGEmKTsKICAgICB9OwpJbmRleDogU291cmNlL0ph
dmFTY3JpcHRDb3JlL3J1bnRpbWUvSlNBY3RpdmF0aW9uLmNwcAo9PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3Vy
Y2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9KU0FjdGl2YXRpb24uY3BwCShyZXZpc2lvbiAxMTY2
NjcpCisrKyBTb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9KU0FjdGl2YXRpb24uY3BwCSh3
b3JraW5nIGNvcHkpCkBAIC05MCw3ICs5MCw3IEBAIHZvaWQgSlNBY3RpdmF0aW9uOjp2aXNpdENo
aWxkcmVuKEpTQ2VsbCoKICAgICB2aXNpdG9yLmFwcGVuZFZhbHVlcyhyZWdpc3RlckFycmF5ICsg
b2Zmc2V0LCB0aGlzT2JqZWN0LT5tX251bUNhcHR1cmVkVmFycyk7CiB9CiAKLWlubGluZSBib29s
IEpTQWN0aXZhdGlvbjo6c3ltYm9sVGFibGVHZXQoY29uc3QgSWRlbnRpZmllciYgcHJvcGVydHlO
YW1lLCBQcm9wZXJ0eVNsb3QmIHNsb3QpCitpbmxpbmUgYm9vbCBKU0FjdGl2YXRpb246OnN5bWJv
bFRhYmxlR2V0KFByb3BlcnR5TmFtZSBwcm9wZXJ0eU5hbWUsIFByb3BlcnR5U2xvdCYgc2xvdCkK
IHsKICAgICBTeW1ib2xUYWJsZUVudHJ5IGVudHJ5ID0gc3ltYm9sVGFibGUoKS5pbmxpbmVHZXQo
cHJvcGVydHlOYW1lLmltcGwoKSk7CiAgICAgaWYgKGVudHJ5LmlzTnVsbCgpKQpAQCAtMTAyLDcg
KzEwMiw3IEBAIGlubGluZSBib29sIEpTQWN0aXZhdGlvbjo6c3ltYm9sVGFibGVHZXQKICAgICBy
ZXR1cm4gdHJ1ZTsKIH0KIAotaW5saW5lIGJvb2wgSlNBY3RpdmF0aW9uOjpzeW1ib2xUYWJsZVB1
dChFeGVjU3RhdGUqIGV4ZWMsIGNvbnN0IElkZW50aWZpZXImIHByb3BlcnR5TmFtZSwgSlNWYWx1
ZSB2YWx1ZSwgYm9vbCBzaG91bGRUaHJvdykKK2lubGluZSBib29sIEpTQWN0aXZhdGlvbjo6c3lt
Ym9sVGFibGVQdXQoRXhlY1N0YXRlKiBleGVjLCBQcm9wZXJ0eU5hbWUgcHJvcGVydHlOYW1lLCBK
U1ZhbHVlIHZhbHVlLCBib29sIHNob3VsZFRocm93KQogewogICAgIEpTR2xvYmFsRGF0YSYgZ2xv
YmFsRGF0YSA9IGV4ZWMtPmdsb2JhbERhdGEoKTsKICAgICBBU1NFUlQoIUhlYXA6OmhlYXAodmFs
dWUpIHx8IEhlYXA6OmhlYXAodmFsdWUpID09IEhlYXA6OmhlYXAodGhpcykpOwpAQCAtMTM3LDcg
KzEzNyw3IEBAIHZvaWQgSlNBY3RpdmF0aW9uOjpnZXRPd25Qcm9wZXJ0eU5hbWVzKEoKICAgICBK
U09iamVjdDo6Z2V0T3duUHJvcGVydHlOYW1lcyh0aGlzT2JqZWN0LCBleGVjLCBwcm9wZXJ0eU5h
bWVzLCBtb2RlKTsKIH0KIAotaW5saW5lIGJvb2wgSlNBY3RpdmF0aW9uOjpzeW1ib2xUYWJsZVB1
dFdpdGhBdHRyaWJ1dGVzKEpTR2xvYmFsRGF0YSYgZ2xvYmFsRGF0YSwgY29uc3QgSWRlbnRpZmll
ciYgcHJvcGVydHlOYW1lLCBKU1ZhbHVlIHZhbHVlLCB1bnNpZ25lZCBhdHRyaWJ1dGVzKQoraW5s
aW5lIGJvb2wgSlNBY3RpdmF0aW9uOjpzeW1ib2xUYWJsZVB1dFdpdGhBdHRyaWJ1dGVzKEpTR2xv
YmFsRGF0YSYgZ2xvYmFsRGF0YSwgUHJvcGVydHlOYW1lIHByb3BlcnR5TmFtZSwgSlNWYWx1ZSB2
YWx1ZSwgdW5zaWduZWQgYXR0cmlidXRlcykKIHsKICAgICBBU1NFUlQoIUhlYXA6OmhlYXAodmFs
dWUpIHx8IEhlYXA6OmhlYXAodmFsdWUpID09IEhlYXA6OmhlYXAodGhpcykpOwogICAgIApAQCAt
MTU0LDcgKzE1NCw3IEBAIGlubGluZSBib29sIEpTQWN0aXZhdGlvbjo6c3ltYm9sVGFibGVQdXQK
ICAgICByZXR1cm4gdHJ1ZTsKIH0KIAotYm9vbCBKU0FjdGl2YXRpb246OmdldE93blByb3BlcnR5
U2xvdChKU0NlbGwqIGNlbGwsIEV4ZWNTdGF0ZSogZXhlYywgY29uc3QgSWRlbnRpZmllciYgcHJv
cGVydHlOYW1lLCBQcm9wZXJ0eVNsb3QmIHNsb3QpCitib29sIEpTQWN0aXZhdGlvbjo6Z2V0T3du
UHJvcGVydHlTbG90KEpTQ2VsbCogY2VsbCwgRXhlY1N0YXRlKiBleGVjLCBQcm9wZXJ0eU5hbWUg
cHJvcGVydHlOYW1lLCBQcm9wZXJ0eVNsb3QmIHNsb3QpCiB7CiAgICAgSlNBY3RpdmF0aW9uKiB0
aGlzT2JqZWN0ID0ganNDYXN0PEpTQWN0aXZhdGlvbio+KGNlbGwpOwogICAgIGlmIChwcm9wZXJ0
eU5hbWUgPT0gZXhlYy0+cHJvcGVydHlOYW1lcygpLmFyZ3VtZW50cykgewpAQCAtMTc3LDcgKzE3
Nyw3IEBAIGJvb2wgSlNBY3RpdmF0aW9uOjpnZXRPd25Qcm9wZXJ0eVNsb3QoSlMKICAgICByZXR1
cm4gZmFsc2U7CiB9CiAKLXZvaWQgSlNBY3RpdmF0aW9uOjpwdXQoSlNDZWxsKiBjZWxsLCBFeGVj
U3RhdGUqIGV4ZWMsIGNvbnN0IElkZW50aWZpZXImIHByb3BlcnR5TmFtZSwgSlNWYWx1ZSB2YWx1
ZSwgUHV0UHJvcGVydHlTbG90JiBzbG90KQordm9pZCBKU0FjdGl2YXRpb246OnB1dChKU0NlbGwq
IGNlbGwsIEV4ZWNTdGF0ZSogZXhlYywgUHJvcGVydHlOYW1lIHByb3BlcnR5TmFtZSwgSlNWYWx1
ZSB2YWx1ZSwgUHV0UHJvcGVydHlTbG90JiBzbG90KQogewogICAgIEpTQWN0aXZhdGlvbiogdGhp
c09iamVjdCA9IGpzQ2FzdDxKU0FjdGl2YXRpb24qPihjZWxsKTsKICAgICBBU1NFUlQoIUhlYXA6
OmhlYXAodmFsdWUpIHx8IEhlYXA6OmhlYXAodmFsdWUpID09IEhlYXA6OmhlYXAodGhpc09iamVj
dCkpOwpAQCAtMTkzLDcgKzE5Myw3IEBAIHZvaWQgSlNBY3RpdmF0aW9uOjpwdXQoSlNDZWxsKiBj
ZWxsLCBFeGUKIH0KIAogLy8gRklYTUU6IE1ha2UgdGhpcyBmdW5jdGlvbiBob25vciBSZWFkT25s
eSAoY29uc3QpIGFuZCBEb250RW51bQotdm9pZCBKU0FjdGl2YXRpb246OnB1dERpcmVjdFZpcnR1
YWwoSlNPYmplY3QqIG9iamVjdCwgRXhlY1N0YXRlKiBleGVjLCBjb25zdCBJZGVudGlmaWVyJiBw
cm9wZXJ0eU5hbWUsIEpTVmFsdWUgdmFsdWUsIHVuc2lnbmVkIGF0dHJpYnV0ZXMpCit2b2lkIEpT
QWN0aXZhdGlvbjo6cHV0RGlyZWN0VmlydHVhbChKU09iamVjdCogb2JqZWN0LCBFeGVjU3RhdGUq
IGV4ZWMsIFByb3BlcnR5TmFtZSBwcm9wZXJ0eU5hbWUsIEpTVmFsdWUgdmFsdWUsIHVuc2lnbmVk
IGF0dHJpYnV0ZXMpCiB7CiAgICAgSlNBY3RpdmF0aW9uKiB0aGlzT2JqZWN0ID0ganNDYXN0PEpT
QWN0aXZhdGlvbio+KG9iamVjdCk7CiAgICAgQVNTRVJUKCFIZWFwOjpoZWFwKHZhbHVlKSB8fCBI
ZWFwOjpoZWFwKHZhbHVlKSA9PSBIZWFwOjpoZWFwKHRoaXNPYmplY3QpKTsKQEAgLTIwOCw3ICsy
MDgsNyBAQCB2b2lkIEpTQWN0aXZhdGlvbjo6cHV0RGlyZWN0VmlydHVhbChKU09iCiAgICAgSlNP
YmplY3Q6OnB1dERpcmVjdFZpcnR1YWwodGhpc09iamVjdCwgZXhlYywgcHJvcGVydHlOYW1lLCB2
YWx1ZSwgYXR0cmlidXRlcyk7CiB9CiAKLWJvb2wgSlNBY3RpdmF0aW9uOjpkZWxldGVQcm9wZXJ0
eShKU0NlbGwqIGNlbGwsIEV4ZWNTdGF0ZSogZXhlYywgY29uc3QgSWRlbnRpZmllciYgcHJvcGVy
dHlOYW1lKQorYm9vbCBKU0FjdGl2YXRpb246OmRlbGV0ZVByb3BlcnR5KEpTQ2VsbCogY2VsbCwg
RXhlY1N0YXRlKiBleGVjLCBQcm9wZXJ0eU5hbWUgcHJvcGVydHlOYW1lKQogewogICAgIGlmIChw
cm9wZXJ0eU5hbWUgPT0gZXhlYy0+cHJvcGVydHlOYW1lcygpLmFyZ3VtZW50cykKICAgICAgICAg
cmV0dXJuIGZhbHNlOwpAQCAtMjIxLDcgKzIyMSw3IEBAIEpTT2JqZWN0KiBKU0FjdGl2YXRpb246
OnRvVGhpc09iamVjdChKU0MKICAgICByZXR1cm4gZXhlYy0+Z2xvYmFsVGhpc1ZhbHVlKCk7CiB9
CiAKLUpTVmFsdWUgSlNBY3RpdmF0aW9uOjphcmd1bWVudHNHZXR0ZXIoRXhlY1N0YXRlKiwgSlNW
YWx1ZSBzbG90QmFzZSwgY29uc3QgSWRlbnRpZmllciYpCitKU1ZhbHVlIEpTQWN0aXZhdGlvbjo6
YXJndW1lbnRzR2V0dGVyKEV4ZWNTdGF0ZSosIEpTVmFsdWUgc2xvdEJhc2UsIFByb3BlcnR5TmFt
ZSkKIHsKICAgICBKU0FjdGl2YXRpb24qIGFjdGl2YXRpb24gPSBhc0FjdGl2YXRpb24oc2xvdEJh
c2UpOwogICAgIENhbGxGcmFtZSogY2FsbEZyYW1lID0gQ2FsbEZyYW1lOjpjcmVhdGUocmVpbnRl
cnByZXRfY2FzdDxSZWdpc3Rlcio+KGFjdGl2YXRpb24tPm1fcmVnaXN0ZXJzKSk7CkluZGV4OiBT
b3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9KU0FjdGl2YXRpb24uaAo9PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0t
LSBTb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9KU0FjdGl2YXRpb24uaAkocmV2aXNpb24g
MTE2NjY3KQorKysgU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvSlNBY3RpdmF0aW9uLmgJ
KHdvcmtpbmcgY29weSkKQEAgLTU5LDEzICs1OSwxMyBAQCBuYW1lc3BhY2UgSlNDIHsKIAogICAg
ICAgICBib29sIGlzRHluYW1pY1Njb3BlKGJvb2wmIHJlcXVpcmVzRHluYW1pY0NoZWNrcykgY29u
c3Q7CiAKLSAgICAgICAgc3RhdGljIGJvb2wgZ2V0T3duUHJvcGVydHlTbG90KEpTQ2VsbCosIEV4
ZWNTdGF0ZSosIGNvbnN0IElkZW50aWZpZXImLCBQcm9wZXJ0eVNsb3QmKTsKKyAgICAgICAgc3Rh
dGljIGJvb2wgZ2V0T3duUHJvcGVydHlTbG90KEpTQ2VsbCosIEV4ZWNTdGF0ZSosIFByb3BlcnR5
TmFtZSwgUHJvcGVydHlTbG90Jik7CiAgICAgICAgIHN0YXRpYyB2b2lkIGdldE93blByb3BlcnR5
TmFtZXMoSlNPYmplY3QqLCBFeGVjU3RhdGUqLCBQcm9wZXJ0eU5hbWVBcnJheSYsIEVudW1lcmF0
aW9uTW9kZSk7CiAKLSAgICAgICAgc3RhdGljIHZvaWQgcHV0KEpTQ2VsbCosIEV4ZWNTdGF0ZSos
IGNvbnN0IElkZW50aWZpZXImLCBKU1ZhbHVlLCBQdXRQcm9wZXJ0eVNsb3QmKTsKKyAgICAgICAg
c3RhdGljIHZvaWQgcHV0KEpTQ2VsbCosIEV4ZWNTdGF0ZSosIFByb3BlcnR5TmFtZSwgSlNWYWx1
ZSwgUHV0UHJvcGVydHlTbG90Jik7CiAKLSAgICAgICAgc3RhdGljIHZvaWQgcHV0RGlyZWN0Vmly
dHVhbChKU09iamVjdCosIEV4ZWNTdGF0ZSosIGNvbnN0IElkZW50aWZpZXImLCBKU1ZhbHVlLCB1
bnNpZ25lZCBhdHRyaWJ1dGVzKTsKLSAgICAgICAgc3RhdGljIGJvb2wgZGVsZXRlUHJvcGVydHko
SlNDZWxsKiwgRXhlY1N0YXRlKiwgY29uc3QgSWRlbnRpZmllciYgcHJvcGVydHlOYW1lKTsKKyAg
ICAgICAgc3RhdGljIHZvaWQgcHV0RGlyZWN0VmlydHVhbChKU09iamVjdCosIEV4ZWNTdGF0ZSos
IFByb3BlcnR5TmFtZSwgSlNWYWx1ZSwgdW5zaWduZWQgYXR0cmlidXRlcyk7CisgICAgICAgIHN0
YXRpYyBib29sIGRlbGV0ZVByb3BlcnR5KEpTQ2VsbCosIEV4ZWNTdGF0ZSosIFByb3BlcnR5TmFt
ZSk7CiAKICAgICAgICAgc3RhdGljIEpTT2JqZWN0KiB0b1RoaXNPYmplY3QoSlNDZWxsKiwgRXhl
Y1N0YXRlKik7CiAKQEAgLTgyLDEzICs4MiwxMyBAQCBuYW1lc3BhY2UgSlNDIHsKICAgICAgICAg
c3RhdGljIGNvbnN0IHVuc2lnbmVkIFN0cnVjdHVyZUZsYWdzID0gSXNFbnZpcm9ubWVudFJlY29y
ZCB8IE92ZXJyaWRlc0dldE93blByb3BlcnR5U2xvdCB8IE92ZXJyaWRlc1Zpc2l0Q2hpbGRyZW4g
fCBPdmVycmlkZXNHZXRQcm9wZXJ0eU5hbWVzIHwgSlNWYXJpYWJsZU9iamVjdDo6U3RydWN0dXJl
RmxhZ3M7CiAKICAgICBwcml2YXRlOgotICAgICAgICBib29sIHN5bWJvbFRhYmxlR2V0KGNvbnN0
IElkZW50aWZpZXImLCBQcm9wZXJ0eVNsb3QmKTsKLSAgICAgICAgYm9vbCBzeW1ib2xUYWJsZUdl
dChjb25zdCBJZGVudGlmaWVyJiwgUHJvcGVydHlEZXNjcmlwdG9yJik7Ci0gICAgICAgIGJvb2wg
c3ltYm9sVGFibGVHZXQoY29uc3QgSWRlbnRpZmllciYsIFByb3BlcnR5U2xvdCYsIGJvb2wmIHNs
b3RJc1dyaXRlYWJsZSk7Ci0gICAgICAgIGJvb2wgc3ltYm9sVGFibGVQdXQoRXhlY1N0YXRlKiwg
Y29uc3QgSWRlbnRpZmllciYsIEpTVmFsdWUsIGJvb2wgc2hvdWxkVGhyb3cpOwotICAgICAgICBi
b29sIHN5bWJvbFRhYmxlUHV0V2l0aEF0dHJpYnV0ZXMoSlNHbG9iYWxEYXRhJiwgY29uc3QgSWRl
bnRpZmllciYsIEpTVmFsdWUsIHVuc2lnbmVkIGF0dHJpYnV0ZXMpOworICAgICAgICBib29sIHN5
bWJvbFRhYmxlR2V0KFByb3BlcnR5TmFtZSwgUHJvcGVydHlTbG90Jik7CisgICAgICAgIGJvb2wg
c3ltYm9sVGFibGVHZXQoUHJvcGVydHlOYW1lLCBQcm9wZXJ0eURlc2NyaXB0b3ImKTsKKyAgICAg
ICAgYm9vbCBzeW1ib2xUYWJsZUdldChQcm9wZXJ0eU5hbWUsIFByb3BlcnR5U2xvdCYsIGJvb2wm
IHNsb3RJc1dyaXRlYWJsZSk7CisgICAgICAgIGJvb2wgc3ltYm9sVGFibGVQdXQoRXhlY1N0YXRl
KiwgUHJvcGVydHlOYW1lLCBKU1ZhbHVlLCBib29sIHNob3VsZFRocm93KTsKKyAgICAgICAgYm9v
bCBzeW1ib2xUYWJsZVB1dFdpdGhBdHRyaWJ1dGVzKEpTR2xvYmFsRGF0YSYsIFByb3BlcnR5TmFt
ZSwgSlNWYWx1ZSwgdW5zaWduZWQgYXR0cmlidXRlcyk7CiAKLSAgICAgICAgc3RhdGljIEpTVmFs
dWUgYXJndW1lbnRzR2V0dGVyKEV4ZWNTdGF0ZSosIEpTVmFsdWUsIGNvbnN0IElkZW50aWZpZXIm
KTsKKyAgICAgICAgc3RhdGljIEpTVmFsdWUgYXJndW1lbnRzR2V0dGVyKEV4ZWNTdGF0ZSosIEpT
VmFsdWUsIFByb3BlcnR5TmFtZSk7CiAgICAgICAgIE5FVkVSX0lOTElORSBQcm9wZXJ0eVNsb3Q6
OkdldFZhbHVlRnVuYyBnZXRBcmd1bWVudHNHZXR0ZXIoKTsKIAogICAgICAgICBpbnQgbV9udW1D
YXB0dXJlZEFyZ3M7CkluZGV4OiBTb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9KU0FycmF5
LmNwcAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9KU0FycmF5
LmNwcAkocmV2aXNpb24gMTE2NjY3KQorKysgU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUv
SlNBcnJheS5jcHAJKHdvcmtpbmcgY29weSkKQEAgLTUzNSw3ICs1MzUsNyBAQCB2b2lkIEpTQXJy
YXk6OnNldExlbmd0aFdyaXRhYmxlKEV4ZWNTdGF0CiB9CiAKIC8vIERlZmluZWQgaW4gRVM1LjEg
MTUuNC41LjEKLWJvb2wgSlNBcnJheTo6ZGVmaW5lT3duUHJvcGVydHkoSlNPYmplY3QqIG9iamVj
dCwgRXhlY1N0YXRlKiBleGVjLCBjb25zdCBJZGVudGlmaWVyJiBwcm9wZXJ0eU5hbWUsIFByb3Bl
cnR5RGVzY3JpcHRvciYgZGVzY3JpcHRvciwgYm9vbCB0aHJvd0V4Y2VwdGlvbikKK2Jvb2wgSlNB
cnJheTo6ZGVmaW5lT3duUHJvcGVydHkoSlNPYmplY3QqIG9iamVjdCwgRXhlY1N0YXRlKiBleGVj
LCBQcm9wZXJ0eU5hbWUgcHJvcGVydHlOYW1lLCBQcm9wZXJ0eURlc2NyaXB0b3ImIGRlc2NyaXB0
b3IsIGJvb2wgdGhyb3dFeGNlcHRpb24pCiB7CiAgICAgSlNBcnJheSogYXJyYXkgPSBqc0Nhc3Q8
SlNBcnJheSo+KG9iamVjdCk7CiAKQEAgLTYxOCwxMCArNjE4LDkgQEAgYm9vbCBKU0FycmF5Ojpk
ZWZpbmVPd25Qcm9wZXJ0eShKU09iamVjdAogICAgIH0KIAogICAgIC8vIDQuIEVsc2UgaWYgUCBp
cyBhbiBhcnJheSBpbmRleCAoMTUuNCksIHRoZW4KLSAgICBib29sIGlzQXJyYXlJbmRleDsKICAg
ICAvLyBhLiBMZXQgaW5kZXggYmUgVG9VaW50MzIoUCkuCi0gICAgdW5zaWduZWQgaW5kZXggPSBw
cm9wZXJ0eU5hbWUudG9BcnJheUluZGV4KGlzQXJyYXlJbmRleCk7Ci0gICAgaWYgKGlzQXJyYXlJ
bmRleCkgeworICAgIHVuc2lnbmVkIGluZGV4ID0gcHJvcGVydHlOYW1lLmFzSW5kZXgoKTsKKyAg
ICBpZiAoaW5kZXggIT0gUHJvcGVydHlOYW1lOjpOb3RBbkluZGV4KSB7CiAgICAgICAgIC8vIGIu
IFJlamVjdCBpZiBpbmRleCA+PSBvbGRMZW4gYW5kIG9sZExlbkRlc2MuW1tXcml0YWJsZV1dIGlz
IGZhbHNlLgogICAgICAgICBpZiAoaW5kZXggPj0gYXJyYXktPmxlbmd0aCgpICYmICFhcnJheS0+
aXNMZW5ndGhXcml0YWJsZSgpKQogICAgICAgICAgICAgcmV0dXJuIHJlamVjdChleGVjLCB0aHJv
d0V4Y2VwdGlvbiwgIkF0dGVtcHRpbmcgdG8gZGVmaW5lIG51bWVyaWMgcHJvcGVydHkgb24gYXJy
YXkgd2l0aCBub24td3JpdGFibGUgbGVuZ3RoIHByb3BlcnR5LiIpOwpAQCAtNjY1LDcgKzY2NCw3
IEBAIGJvb2wgSlNBcnJheTo6Z2V0T3duUHJvcGVydHlTbG90QnlJbmRleCgKICAgICByZXR1cm4g
SlNPYmplY3Q6OmdldE93blByb3BlcnR5U2xvdCh0aGlzT2JqZWN0LCBleGVjLCBJZGVudGlmaWVy
Ojpmcm9tKGV4ZWMsIGkpLCBzbG90KTsKIH0KIAotYm9vbCBKU0FycmF5OjpnZXRPd25Qcm9wZXJ0
eVNsb3QoSlNDZWxsKiBjZWxsLCBFeGVjU3RhdGUqIGV4ZWMsIGNvbnN0IElkZW50aWZpZXImIHBy
b3BlcnR5TmFtZSwgUHJvcGVydHlTbG90JiBzbG90KQorYm9vbCBKU0FycmF5OjpnZXRPd25Qcm9w
ZXJ0eVNsb3QoSlNDZWxsKiBjZWxsLCBFeGVjU3RhdGUqIGV4ZWMsIFByb3BlcnR5TmFtZSBwcm9w
ZXJ0eU5hbWUsIFByb3BlcnR5U2xvdCYgc2xvdCkKIHsKICAgICBKU0FycmF5KiB0aGlzT2JqZWN0
ID0ganNDYXN0PEpTQXJyYXkqPihjZWxsKTsKICAgICBpZiAocHJvcGVydHlOYW1lID09IGV4ZWMt
PnByb3BlcnR5TmFtZXMoKS5sZW5ndGgpIHsKQEAgLTY3MywxNSArNjcyLDE0IEBAIGJvb2wgSlNB
cnJheTo6Z2V0T3duUHJvcGVydHlTbG90KEpTQ2VsbCoKICAgICAgICAgcmV0dXJuIHRydWU7CiAg
ICAgfQogCi0gICAgYm9vbCBpc0FycmF5SW5kZXg7Ci0gICAgdW5zaWduZWQgaSA9IHByb3BlcnR5
TmFtZS50b0FycmF5SW5kZXgoaXNBcnJheUluZGV4KTsKLSAgICBpZiAoaXNBcnJheUluZGV4KQor
ICAgIHVuc2lnbmVkIGkgPSBwcm9wZXJ0eU5hbWUuYXNJbmRleCgpOworICAgIGlmIChpICE9IFBy
b3BlcnR5TmFtZTo6Tm90QW5JbmRleCkKICAgICAgICAgcmV0dXJuIEpTQXJyYXk6OmdldE93blBy
b3BlcnR5U2xvdEJ5SW5kZXgodGhpc09iamVjdCwgZXhlYywgaSwgc2xvdCk7CiAKICAgICByZXR1
cm4gSlNPYmplY3Q6OmdldE93blByb3BlcnR5U2xvdCh0aGlzT2JqZWN0LCBleGVjLCBwcm9wZXJ0
eU5hbWUsIHNsb3QpOwogfQogCi1ib29sIEpTQXJyYXk6OmdldE93blByb3BlcnR5RGVzY3JpcHRv
cihKU09iamVjdCogb2JqZWN0LCBFeGVjU3RhdGUqIGV4ZWMsIGNvbnN0IElkZW50aWZpZXImIHBy
b3BlcnR5TmFtZSwgUHJvcGVydHlEZXNjcmlwdG9yJiBkZXNjcmlwdG9yKQorYm9vbCBKU0FycmF5
OjpnZXRPd25Qcm9wZXJ0eURlc2NyaXB0b3IoSlNPYmplY3QqIG9iamVjdCwgRXhlY1N0YXRlKiBl
eGVjLCBQcm9wZXJ0eU5hbWUgcHJvcGVydHlOYW1lLCBQcm9wZXJ0eURlc2NyaXB0b3ImIGRlc2Ny
aXB0b3IpCiB7CiAgICAgSlNBcnJheSogdGhpc09iamVjdCA9IGpzQ2FzdDxKU0FycmF5Kj4ob2Jq
ZWN0KTsKICAgICBpZiAocHJvcGVydHlOYW1lID09IGV4ZWMtPnByb3BlcnR5TmFtZXMoKS5sZW5n
dGgpIHsKQEAgLTY5MSw5ICs2ODksOCBAQCBib29sIEpTQXJyYXk6OmdldE93blByb3BlcnR5RGVz
Y3JpcHRvcihKCiAKICAgICBBcnJheVN0b3JhZ2UqIHN0b3JhZ2UgPSB0aGlzT2JqZWN0LT5tX3N0
b3JhZ2U7CiAgICAgCi0gICAgYm9vbCBpc0FycmF5SW5kZXg7Ci0gICAgdW5zaWduZWQgaSA9IHBy
b3BlcnR5TmFtZS50b0FycmF5SW5kZXgoaXNBcnJheUluZGV4KTsKLSAgICBpZiAoaXNBcnJheUlu
ZGV4KSB7CisgICAgdW5zaWduZWQgaSA9IHByb3BlcnR5TmFtZS5hc0luZGV4KCk7CisgICAgaWYg
KGkgIT0gUHJvcGVydHlOYW1lOjpOb3RBbkluZGV4KSB7CiAgICAgICAgIGlmIChpID49IHN0b3Jh
Z2UtPm1fbGVuZ3RoKQogICAgICAgICAgICAgcmV0dXJuIGZhbHNlOwogICAgICAgICBpZiAoaSA8
IHRoaXNPYmplY3QtPm1fdmVjdG9yTGVuZ3RoKSB7CkBAIC03MTQsMTIgKzcxMSwxMSBAQCBib29s
IEpTQXJyYXk6OmdldE93blByb3BlcnR5RGVzY3JpcHRvcihKCiB9CiAKIC8vIEVDTUEgMTUuNC41
LjEKLXZvaWQgSlNBcnJheTo6cHV0KEpTQ2VsbCogY2VsbCwgRXhlY1N0YXRlKiBleGVjLCBjb25z
dCBJZGVudGlmaWVyJiBwcm9wZXJ0eU5hbWUsIEpTVmFsdWUgdmFsdWUsIFB1dFByb3BlcnR5U2xv
dCYgc2xvdCkKK3ZvaWQgSlNBcnJheTo6cHV0KEpTQ2VsbCogY2VsbCwgRXhlY1N0YXRlKiBleGVj
LCBQcm9wZXJ0eU5hbWUgcHJvcGVydHlOYW1lLCBKU1ZhbHVlIHZhbHVlLCBQdXRQcm9wZXJ0eVNs
b3QmIHNsb3QpCiB7CiAgICAgSlNBcnJheSogdGhpc09iamVjdCA9IGpzQ2FzdDxKU0FycmF5Kj4o
Y2VsbCk7Ci0gICAgYm9vbCBpc0FycmF5SW5kZXg7Ci0gICAgdW5zaWduZWQgaSA9IHByb3BlcnR5
TmFtZS50b0FycmF5SW5kZXgoaXNBcnJheUluZGV4KTsKLSAgICBpZiAoaXNBcnJheUluZGV4KSB7
CisgICAgdW5zaWduZWQgaSA9IHByb3BlcnR5TmFtZS5hc0luZGV4KCk7CisgICAgaWYgKGkgIT0g
UHJvcGVydHlOYW1lOjpOb3RBbkluZGV4KSB7CiAgICAgICAgIHB1dEJ5SW5kZXgodGhpc09iamVj
dCwgZXhlYywgaSwgdmFsdWUsIHNsb3QuaXNTdHJpY3RNb2RlKCkpOwogICAgICAgICByZXR1cm47
CiAgICAgfQpAQCAtOTE5LDEyICs5MTUsMTEgQEAgYm9vbCBKU0FycmF5OjpwdXREaXJlY3RJbmRl
eEJleW9uZFZlY3RvcgogICAgIHJldHVybiB0cnVlOwogfQogCi1ib29sIEpTQXJyYXk6OmRlbGV0
ZVByb3BlcnR5KEpTQ2VsbCogY2VsbCwgRXhlY1N0YXRlKiBleGVjLCBjb25zdCBJZGVudGlmaWVy
JiBwcm9wZXJ0eU5hbWUpCitib29sIEpTQXJyYXk6OmRlbGV0ZVByb3BlcnR5KEpTQ2VsbCogY2Vs
bCwgRXhlY1N0YXRlKiBleGVjLCBQcm9wZXJ0eU5hbWUgcHJvcGVydHlOYW1lKQogewogICAgIEpT
QXJyYXkqIHRoaXNPYmplY3QgPSBqc0Nhc3Q8SlNBcnJheSo+KGNlbGwpOwotICAgIGJvb2wgaXNB
cnJheUluZGV4OwotICAgIHVuc2lnbmVkIGkgPSBwcm9wZXJ0eU5hbWUudG9BcnJheUluZGV4KGlz
QXJyYXlJbmRleCk7Ci0gICAgaWYgKGlzQXJyYXlJbmRleCkKKyAgICB1bnNpZ25lZCBpID0gcHJv
cGVydHlOYW1lLmFzSW5kZXgoKTsKKyAgICBpZiAoaSAhPSBQcm9wZXJ0eU5hbWU6Ok5vdEFuSW5k
ZXgpCiAgICAgICAgIHJldHVybiB0aGlzT2JqZWN0LT5tZXRob2RUYWJsZSgpLT5kZWxldGVQcm9w
ZXJ0eUJ5SW5kZXgodGhpc09iamVjdCwgZXhlYywgaSk7CiAKICAgICBpZiAocHJvcGVydHlOYW1l
ID09IGV4ZWMtPnByb3BlcnR5TmFtZXMoKS5sZW5ndGgpCkluZGV4OiBTb3VyY2UvSmF2YVNjcmlw
dENvcmUvcnVudGltZS9KU0FycmF5LmgKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL0phdmFTY3JpcHRD
b3JlL3J1bnRpbWUvSlNBcnJheS5oCShyZXZpc2lvbiAxMTY2NjcpCisrKyBTb3VyY2UvSmF2YVNj
cmlwdENvcmUvcnVudGltZS9KU0FycmF5LmgJKHdvcmtpbmcgY29weSkKQEAgLTE2NCwxMSArMTY0
LDExIEBAIG5hbWVzcGFjZSBKU0MgewogICAgICAgICAvLyAgIC0gY2FsbGVkICdjb21wbGV0ZUlu
aXRpYWxpemF0aW9uJyBhZnRlciBhbGwgcHJvcGVydGllcyBoYXZlIGJlZW4gaW5pdGlhbGl6ZWQu
CiAgICAgICAgIHN0YXRpYyBKU0FycmF5KiB0cnlDcmVhdGVVbmluaXRpYWxpemVkKEpTR2xvYmFs
RGF0YSYsIFN0cnVjdHVyZSosIHVuc2lnbmVkIGluaXRpYWxMZW5ndGgpOwogCi0gICAgICAgIEpT
X0VYUE9SVF9QUklWQVRFIHN0YXRpYyBib29sIGRlZmluZU93blByb3BlcnR5KEpTT2JqZWN0Kiwg
RXhlY1N0YXRlKiwgY29uc3QgSWRlbnRpZmllciYsIFByb3BlcnR5RGVzY3JpcHRvciYsIGJvb2wg
dGhyb3dFeGNlcHRpb24pOworICAgICAgICBKU19FWFBPUlRfUFJJVkFURSBzdGF0aWMgYm9vbCBk
ZWZpbmVPd25Qcm9wZXJ0eShKU09iamVjdCosIEV4ZWNTdGF0ZSosIFByb3BlcnR5TmFtZSwgUHJv
cGVydHlEZXNjcmlwdG9yJiwgYm9vbCB0aHJvd0V4Y2VwdGlvbik7CiAKLSAgICAgICAgc3RhdGlj
IGJvb2wgZ2V0T3duUHJvcGVydHlTbG90KEpTQ2VsbCosIEV4ZWNTdGF0ZSosIGNvbnN0IElkZW50
aWZpZXImLCBQcm9wZXJ0eVNsb3QmKTsKKyAgICAgICAgc3RhdGljIGJvb2wgZ2V0T3duUHJvcGVy
dHlTbG90KEpTQ2VsbCosIEV4ZWNTdGF0ZSosIFByb3BlcnR5TmFtZSwgUHJvcGVydHlTbG90Jik7
CiAgICAgICAgIEpTX0VYUE9SVF9QUklWQVRFIHN0YXRpYyBib29sIGdldE93blByb3BlcnR5U2xv
dEJ5SW5kZXgoSlNDZWxsKiwgRXhlY1N0YXRlKiwgdW5zaWduZWQgcHJvcGVydHlOYW1lLCBQcm9w
ZXJ0eVNsb3QmKTsKLSAgICAgICAgc3RhdGljIGJvb2wgZ2V0T3duUHJvcGVydHlEZXNjcmlwdG9y
KEpTT2JqZWN0KiwgRXhlY1N0YXRlKiwgY29uc3QgSWRlbnRpZmllciYsIFByb3BlcnR5RGVzY3Jp
cHRvciYpOworICAgICAgICBzdGF0aWMgYm9vbCBnZXRPd25Qcm9wZXJ0eURlc2NyaXB0b3IoSlNP
YmplY3QqLCBFeGVjU3RhdGUqLCBQcm9wZXJ0eU5hbWUsIFByb3BlcnR5RGVzY3JpcHRvciYpOwog
ICAgICAgICBzdGF0aWMgdm9pZCBwdXRCeUluZGV4KEpTQ2VsbCosIEV4ZWNTdGF0ZSosIHVuc2ln
bmVkIHByb3BlcnR5TmFtZSwgSlNWYWx1ZSwgYm9vbCBzaG91bGRUaHJvdyk7CiAgICAgICAgIC8v
IFRoaXMgaXMgc2ltaWxhciB0byB0aGUgSlNPYmplY3Q6OnB1dERpcmVjdCogbWV0aG9kczoKICAg
ICAgICAgLy8gIC0gdGhlIHByb3RvdHlwZSBjaGFpbiBpcyBub3QgY29uc3VsdGVkCkBAIC0yODEs
OSArMjgxLDkgQEAgbmFtZXNwYWNlIEpTQyB7CiAKICAgICBwcm90ZWN0ZWQ6CiAgICAgICAgIHN0
YXRpYyBjb25zdCB1bnNpZ25lZCBTdHJ1Y3R1cmVGbGFncyA9IE92ZXJyaWRlc0dldE93blByb3Bl
cnR5U2xvdCB8IE92ZXJyaWRlc1Zpc2l0Q2hpbGRyZW4gfCBPdmVycmlkZXNHZXRQcm9wZXJ0eU5h
bWVzIHwgSlNPYmplY3Q6OlN0cnVjdHVyZUZsYWdzOwotICAgICAgICBzdGF0aWMgdm9pZCBwdXQo
SlNDZWxsKiwgRXhlY1N0YXRlKiwgY29uc3QgSWRlbnRpZmllciYgcHJvcGVydHlOYW1lLCBKU1Zh
bHVlLCBQdXRQcm9wZXJ0eVNsb3QmKTsKKyAgICAgICAgc3RhdGljIHZvaWQgcHV0KEpTQ2VsbCos
IEV4ZWNTdGF0ZSosIFByb3BlcnR5TmFtZSwgSlNWYWx1ZSwgUHV0UHJvcGVydHlTbG90Jik7CiAK
LSAgICAgICAgc3RhdGljIGJvb2wgZGVsZXRlUHJvcGVydHkoSlNDZWxsKiwgRXhlY1N0YXRlKiwg
Y29uc3QgSWRlbnRpZmllciYgcHJvcGVydHlOYW1lKTsKKyAgICAgICAgc3RhdGljIGJvb2wgZGVs
ZXRlUHJvcGVydHkoSlNDZWxsKiwgRXhlY1N0YXRlKiwgUHJvcGVydHlOYW1lKTsKICAgICAgICAg
c3RhdGljIGJvb2wgZGVsZXRlUHJvcGVydHlCeUluZGV4KEpTQ2VsbCosIEV4ZWNTdGF0ZSosIHVu
c2lnbmVkIHByb3BlcnR5TmFtZSk7CiAgICAgICAgIHN0YXRpYyB2b2lkIGdldE93blByb3BlcnR5
TmFtZXMoSlNPYmplY3QqLCBFeGVjU3RhdGUqLCBQcm9wZXJ0eU5hbWVBcnJheSYsIEVudW1lcmF0
aW9uTW9kZSk7CiAKQEAgLTM1NywxNiArMzU3LDYgQEAgbmFtZXNwYWNlIEpTQyB7CiAgICAgaW5s
aW5lIGJvb2wgaXNKU0FycmF5KEpTQ2VsbCogY2VsbCkgeyByZXR1cm4gY2VsbC0+Y2xhc3NJbmZv
KCkgPT0gJkpTQXJyYXk6OnNfaW5mbzsgfQogICAgIGlubGluZSBib29sIGlzSlNBcnJheShKU1Zh
bHVlIHYpIHsgcmV0dXJuIHYuaXNDZWxsKCkgJiYgaXNKU0FycmF5KHYuYXNDZWxsKCkpOyB9CiAK
LSAgICAvLyBSdWxlIGZyb20gRUNNQSAxNS4yIGFib3V0IHdoYXQgYW4gYXJyYXkgaW5kZXggaXMu
Ci0gICAgLy8gTXVzdCBleGFjdGx5IG1hdGNoIHN0cmluZyBmb3JtIG9mIGFuIHVuc2lnbmVkIGlu
dGVnZXIsIGFuZCBiZSBsZXNzIHRoYW4gMl4zMiAtIDEuCi0gICAgaW5saW5lIHVuc2lnbmVkIElk
ZW50aWZpZXI6OnRvQXJyYXlJbmRleChib29sJiBvaykgY29uc3QKLSAgICB7Ci0gICAgICAgIHVu
c2lnbmVkIGkgPSB0b1VJbnQzMihvayk7Ci0gICAgICAgIGlmIChvayAmJiBpID49IDB4RkZGRkZG
RkZVKQotICAgICAgICAgICAgb2sgPSBmYWxzZTsKLSAgICAgICAgcmV0dXJuIGk7Ci0gICAgfQot
CiAvLyBUaGUgZGVmaW5pdGlvbiBvZiBNQVhfU1RPUkFHRV9WRUNUT1JfTEVOR1RIIGlzIGRlcGVu
ZGFudCBvbiB0aGUgZGVmaW5pdGlvbiBzdG9yYWdlU2l6ZQogLy8gZnVuY3Rpb24gYmVsb3cgLSB0
aGUgTUFYX1NUT1JBR0VfVkVDVE9SX0xFTkdUSCBsaW1pdCBpcyBkZWZpbmVkIHN1Y2ggdGhhdCB0
aGUgc3RvcmFnZQogLy8gc2l6ZSBjYWxjdWxhdGlvbiBjYW5ub3Qgb3ZlcmZsb3cuICAoc2l6ZW9m
KEFycmF5U3RvcmFnZSkgLSBzaXplb2YoV3JpdGVCYXJyaWVyPFVua25vd24+KSkgKwpJbmRleDog
U291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvSlNCb3VuZEZ1bmN0aW9uLmNwcAo9PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09Ci0tLSBTb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9KU0JvdW5kRnVuY3Rpb24uY3Bw
CShyZXZpc2lvbiAxMTY2NjcpCisrKyBTb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9KU0Jv
dW5kRnVuY3Rpb24uY3BwCSh3b3JraW5nIGNvcHkpCkBAIC03Niw3ICs3Niw3IEBAIEVuY29kZWRK
U1ZhbHVlIEpTQ19IT1NUX0NBTEwgYm91bmRGdW5jdGkKICAgICByZXR1cm4gSlNWYWx1ZTo6ZW5j
b2RlKGNvbnN0cnVjdChleGVjLCB0YXJnZXRGdW5jdGlvbiwgY29uc3RydWN0VHlwZSwgY29uc3Ry
dWN0RGF0YSwgYXJncykpOwogfQogCi1KU0JvdW5kRnVuY3Rpb24qIEpTQm91bmRGdW5jdGlvbjo6
Y3JlYXRlKEV4ZWNTdGF0ZSogZXhlYywgSlNHbG9iYWxPYmplY3QqIGdsb2JhbE9iamVjdCwgSlNP
YmplY3QqIHRhcmdldEZ1bmN0aW9uLCBKU1ZhbHVlIGJvdW5kVGhpcywgSlNWYWx1ZSBib3VuZEFy
Z3MsIGludCBsZW5ndGgsIGNvbnN0IElkZW50aWZpZXImIG5hbWUpCitKU0JvdW5kRnVuY3Rpb24q
IEpTQm91bmRGdW5jdGlvbjo6Y3JlYXRlKEV4ZWNTdGF0ZSogZXhlYywgSlNHbG9iYWxPYmplY3Qq
IGdsb2JhbE9iamVjdCwgSlNPYmplY3QqIHRhcmdldEZ1bmN0aW9uLCBKU1ZhbHVlIGJvdW5kVGhp
cywgSlNWYWx1ZSBib3VuZEFyZ3MsIGludCBsZW5ndGgsIGNvbnN0IFVTdHJpbmcmIG5hbWUpCiB7
CiAgICAgQ29uc3RydWN0RGF0YSBjb25zdHJ1Y3REYXRhOwogICAgIENvbnN0cnVjdFR5cGUgY29u
c3RydWN0VHlwZSA9IEpTQzo6Z2V0Q29uc3RydWN0RGF0YSh0YXJnZXRGdW5jdGlvbiwgY29uc3Ry
dWN0RGF0YSk7CkBAIC0xMDcsNyArMTA3LDcgQEAgSlNCb3VuZEZ1bmN0aW9uOjpKU0JvdW5kRnVu
Y3Rpb24oRXhlY1N0YQogewogfQogCi12b2lkIEpTQm91bmRGdW5jdGlvbjo6ZmluaXNoQ3JlYXRp
b24oRXhlY1N0YXRlKiBleGVjLCBOYXRpdmVFeGVjdXRhYmxlKiBleGVjdXRhYmxlLCBpbnQgbGVu
Z3RoLCBjb25zdCBJZGVudGlmaWVyJiBuYW1lKQordm9pZCBKU0JvdW5kRnVuY3Rpb246OmZpbmlz
aENyZWF0aW9uKEV4ZWNTdGF0ZSogZXhlYywgTmF0aXZlRXhlY3V0YWJsZSogZXhlY3V0YWJsZSwg
aW50IGxlbmd0aCwgY29uc3QgVVN0cmluZyYgbmFtZSkKIHsKICAgICBCYXNlOjpmaW5pc2hDcmVh
dGlvbihleGVjLCBleGVjdXRhYmxlLCBsZW5ndGgsIG5hbWUpOwogICAgIEFTU0VSVChpbmhlcml0
cygmc19pbmZvKSk7CkluZGV4OiBTb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9KU0JvdW5k
RnVuY3Rpb24uaAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9K
U0JvdW5kRnVuY3Rpb24uaAkocmV2aXNpb24gMTE2NjY3KQorKysgU291cmNlL0phdmFTY3JpcHRD
b3JlL3J1bnRpbWUvSlNCb3VuZEZ1bmN0aW9uLmgJKHdvcmtpbmcgY29weSkKQEAgLTM3LDcgKzM3
LDcgQEAgY2xhc3MgSlNCb3VuZEZ1bmN0aW9uIDogcHVibGljIEpTRnVuY3RpbwogcHVibGljOgog
ICAgIHR5cGVkZWYgSlNGdW5jdGlvbiBCYXNlOwogCi0gICAgc3RhdGljIEpTQm91bmRGdW5jdGlv
biogY3JlYXRlKEV4ZWNTdGF0ZSosIEpTR2xvYmFsT2JqZWN0KiwgSlNPYmplY3QqIHRhcmdldEZ1
bmN0aW9uLCBKU1ZhbHVlIGJvdW5kVGhpcywgSlNWYWx1ZSBib3VuZEFyZ3MsIGludCwgY29uc3Qg
SWRlbnRpZmllciYpOworICAgIHN0YXRpYyBKU0JvdW5kRnVuY3Rpb24qIGNyZWF0ZShFeGVjU3Rh
dGUqLCBKU0dsb2JhbE9iamVjdCosIEpTT2JqZWN0KiB0YXJnZXRGdW5jdGlvbiwgSlNWYWx1ZSBi
b3VuZFRoaXMsIEpTVmFsdWUgYm91bmRBcmdzLCBpbnQsIGNvbnN0IFVTdHJpbmcmKTsKIAogICAg
IHN0YXRpYyBib29sIGhhc0luc3RhbmNlKEpTT2JqZWN0KiwgRXhlY1N0YXRlKiwgSlNWYWx1ZSwg
SlNWYWx1ZSBwcm90byk7CiAKQEAgLTYxLDcgKzYxLDcgQEAgcHJvdGVjdGVkOgogcHJpdmF0ZToK
ICAgICBKU0JvdW5kRnVuY3Rpb24oRXhlY1N0YXRlKiwgSlNHbG9iYWxPYmplY3QqLCBTdHJ1Y3R1
cmUqLCBKU09iamVjdCogdGFyZ2V0RnVuY3Rpb24sIEpTVmFsdWUgYm91bmRUaGlzLCBKU1ZhbHVl
IGJvdW5kQXJncyk7CiAgICAgCi0gICAgdm9pZCBmaW5pc2hDcmVhdGlvbihFeGVjU3RhdGUqLCBO
YXRpdmVFeGVjdXRhYmxlKiwgaW50LCBjb25zdCBJZGVudGlmaWVyJik7CisgICAgdm9pZCBmaW5p
c2hDcmVhdGlvbihFeGVjU3RhdGUqLCBOYXRpdmVFeGVjdXRhYmxlKiwgaW50LCBjb25zdCBVU3Ry
aW5nJik7CiAKICAgICBXcml0ZUJhcnJpZXI8SlNPYmplY3Q+IG1fdGFyZ2V0RnVuY3Rpb247CiAg
ICAgV3JpdGVCYXJyaWVyPFVua25vd24+IG1fYm91bmRUaGlzOwpJbmRleDogU291cmNlL0phdmFT
Y3JpcHRDb3JlL3J1bnRpbWUvSlNDZWxsLmNwcAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvSmF2YVNj
cmlwdENvcmUvcnVudGltZS9KU0NlbGwuY3BwCShyZXZpc2lvbiAxMTY2NjcpCisrKyBTb3VyY2Uv
SmF2YVNjcmlwdENvcmUvcnVudGltZS9KU0NlbGwuY3BwCSh3b3JraW5nIGNvcHkpCkBAIC03MSw3
ICs3MSw3IEBAIENvbnN0cnVjdFR5cGUgSlNDZWxsOjpnZXRDb25zdHJ1Y3REYXRhKEoKICAgICBy
ZXR1cm4gQ29uc3RydWN0VHlwZU5vbmU7CiB9CiAKLWJvb2wgSlNDZWxsOjpnZXRPd25Qcm9wZXJ0
eVNsb3QoSlNDZWxsKiBjZWxsLCBFeGVjU3RhdGUqIGV4ZWMsIGNvbnN0IElkZW50aWZpZXImIGlk
ZW50aWZpZXIsIFByb3BlcnR5U2xvdCYgc2xvdCkKK2Jvb2wgSlNDZWxsOjpnZXRPd25Qcm9wZXJ0
eVNsb3QoSlNDZWxsKiBjZWxsLCBFeGVjU3RhdGUqIGV4ZWMsIFByb3BlcnR5TmFtZSBpZGVudGlm
aWVyLCBQcm9wZXJ0eVNsb3QmIHNsb3QpCiB7CiAgICAgLy8gVGhpcyBpcyBub3QgYSBnZW5lcmFs
IHB1cnBvc2UgaW1wbGVtZW50YXRpb24gb2YgZ2V0T3duUHJvcGVydHlTbG90LgogICAgIC8vIEl0
IHNob3VsZCBvbmx5IGJlIGNhbGxlZCBieSBKU1ZhbHVlOjpnZXQuCkBAIC05NSw3ICs5NSw3IEBA
IGJvb2wgSlNDZWxsOjpnZXRPd25Qcm9wZXJ0eVNsb3RCeUluZGV4KEoKICAgICByZXR1cm4gdHJ1
ZTsKIH0KIAotdm9pZCBKU0NlbGw6OnB1dChKU0NlbGwqIGNlbGwsIEV4ZWNTdGF0ZSogZXhlYywg
Y29uc3QgSWRlbnRpZmllciYgaWRlbnRpZmllciwgSlNWYWx1ZSB2YWx1ZSwgUHV0UHJvcGVydHlT
bG90JiBzbG90KQordm9pZCBKU0NlbGw6OnB1dChKU0NlbGwqIGNlbGwsIEV4ZWNTdGF0ZSogZXhl
YywgUHJvcGVydHlOYW1lIGlkZW50aWZpZXIsIEpTVmFsdWUgdmFsdWUsIFB1dFByb3BlcnR5U2xv
dCYgc2xvdCkKIHsKICAgICBpZiAoY2VsbC0+aXNTdHJpbmcoKSkgewogICAgICAgICBKU1ZhbHVl
KGNlbGwpLnB1dFRvUHJpbWl0aXZlKGV4ZWMsIGlkZW50aWZpZXIsIHZhbHVlLCBzbG90KTsKQEAg
LTExNiw3ICsxMTYsNyBAQCB2b2lkIEpTQ2VsbDo6cHV0QnlJbmRleChKU0NlbGwqIGNlbGwsIEV4
CiAgICAgdGhpc09iamVjdC0+bWV0aG9kVGFibGUoKS0+cHV0QnlJbmRleCh0aGlzT2JqZWN0LCBl
eGVjLCBpZGVudGlmaWVyLCB2YWx1ZSwgc2hvdWxkVGhyb3cpOwogfQogCi1ib29sIEpTQ2VsbDo6
ZGVsZXRlUHJvcGVydHkoSlNDZWxsKiBjZWxsLCBFeGVjU3RhdGUqIGV4ZWMsIGNvbnN0IElkZW50
aWZpZXImIGlkZW50aWZpZXIpCitib29sIEpTQ2VsbDo6ZGVsZXRlUHJvcGVydHkoSlNDZWxsKiBj
ZWxsLCBFeGVjU3RhdGUqIGV4ZWMsIFByb3BlcnR5TmFtZSBpZGVudGlmaWVyKQogewogICAgIEpT
T2JqZWN0KiB0aGlzT2JqZWN0ID0gY2VsbC0+dG9PYmplY3QoZXhlYywgZXhlYy0+bGV4aWNhbEds
b2JhbE9iamVjdCgpKTsKICAgICByZXR1cm4gdGhpc09iamVjdC0+bWV0aG9kVGFibGUoKS0+ZGVs
ZXRlUHJvcGVydHkodGhpc09iamVjdCwgZXhlYywgaWRlbnRpZmllcik7CkBAIC0xOTUsMTggKzE5
NSwxOCBAQCBib29sIEpTQ2VsbDo6aGFzSW5zdGFuY2UoSlNPYmplY3QqLCBFeGVjCiAgICAgcmV0
dXJuIGZhbHNlOwogfQogCi12b2lkIEpTQ2VsbDo6cHV0RGlyZWN0VmlydHVhbChKU09iamVjdCos
IEV4ZWNTdGF0ZSosIGNvbnN0IElkZW50aWZpZXImLCBKU1ZhbHVlLCB1bnNpZ25lZCkKK3ZvaWQg
SlNDZWxsOjpwdXREaXJlY3RWaXJ0dWFsKEpTT2JqZWN0KiwgRXhlY1N0YXRlKiwgUHJvcGVydHlO
YW1lLCBKU1ZhbHVlLCB1bnNpZ25lZCkKIHsKICAgICBBU1NFUlRfTk9UX1JFQUNIRUQoKTsKIH0K
IAotYm9vbCBKU0NlbGw6OmRlZmluZU93blByb3BlcnR5KEpTT2JqZWN0KiwgRXhlY1N0YXRlKiwg
Y29uc3QgSWRlbnRpZmllciYsIFByb3BlcnR5RGVzY3JpcHRvciYsIGJvb2wpCitib29sIEpTQ2Vs
bDo6ZGVmaW5lT3duUHJvcGVydHkoSlNPYmplY3QqLCBFeGVjU3RhdGUqLCBQcm9wZXJ0eU5hbWUs
IFByb3BlcnR5RGVzY3JpcHRvciYsIGJvb2wpCiB7CiAgICAgQVNTRVJUX05PVF9SRUFDSEVEKCk7
CiAgICAgcmV0dXJuIGZhbHNlOwogfQogCi1ib29sIEpTQ2VsbDo6Z2V0T3duUHJvcGVydHlEZXNj
cmlwdG9yKEpTT2JqZWN0KiwgRXhlY1N0YXRlKiwgY29uc3QgSWRlbnRpZmllciYsIFByb3BlcnR5
RGVzY3JpcHRvciYpCitib29sIEpTQ2VsbDo6Z2V0T3duUHJvcGVydHlEZXNjcmlwdG9yKEpTT2Jq
ZWN0KiwgRXhlY1N0YXRlKiwgUHJvcGVydHlOYW1lLCBQcm9wZXJ0eURlc2NyaXB0b3ImKQogewog
ICAgIEFTU0VSVF9OT1RfUkVBQ0hFRCgpOwogICAgIHJldHVybiBmYWxzZTsKSW5kZXg6IFNvdXJj
ZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL0pTQ2VsbC5oCj09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9K
YXZhU2NyaXB0Q29yZS9ydW50aW1lL0pTQ2VsbC5oCShyZXZpc2lvbiAxMTY2NjcpCisrKyBTb3Vy
Y2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9KU0NlbGwuaAkod29ya2luZyBjb3B5KQpAQCAtMTA2
LDEwICsxMDYsMTAgQEAgbmFtZXNwYWNlIEpTQyB7CiAgICAgICAgIGNvbnN0IENsYXNzSW5mbyog
Y2xhc3NJbmZvKCkgY29uc3Q7CiAgICAgICAgIGNvbnN0IENsYXNzSW5mbyogdmFsaWRhdGVkQ2xh
c3NJbmZvKCkgY29uc3Q7CiAgICAgICAgIGNvbnN0IE1ldGhvZFRhYmxlKiBtZXRob2RUYWJsZSgp
IGNvbnN0OwotICAgICAgICBzdGF0aWMgdm9pZCBwdXQoSlNDZWxsKiwgRXhlY1N0YXRlKiwgY29u
c3QgSWRlbnRpZmllciYgcHJvcGVydHlOYW1lLCBKU1ZhbHVlLCBQdXRQcm9wZXJ0eVNsb3QmKTsK
KyAgICAgICAgc3RhdGljIHZvaWQgcHV0KEpTQ2VsbCosIEV4ZWNTdGF0ZSosIFByb3BlcnR5TmFt
ZSwgSlNWYWx1ZSwgUHV0UHJvcGVydHlTbG90Jik7CiAgICAgICAgIHN0YXRpYyB2b2lkIHB1dEJ5
SW5kZXgoSlNDZWxsKiwgRXhlY1N0YXRlKiwgdW5zaWduZWQgcHJvcGVydHlOYW1lLCBKU1ZhbHVl
LCBib29sIHNob3VsZFRocm93KTsKICAgICAgICAgCi0gICAgICAgIHN0YXRpYyBib29sIGRlbGV0
ZVByb3BlcnR5KEpTQ2VsbCosIEV4ZWNTdGF0ZSosIGNvbnN0IElkZW50aWZpZXImIHByb3BlcnR5
TmFtZSk7CisgICAgICAgIHN0YXRpYyBib29sIGRlbGV0ZVByb3BlcnR5KEpTQ2VsbCosIEV4ZWNT
dGF0ZSosIFByb3BlcnR5TmFtZSk7CiAgICAgICAgIHN0YXRpYyBib29sIGRlbGV0ZVByb3BlcnR5
QnlJbmRleChKU0NlbGwqLCBFeGVjU3RhdGUqLCB1bnNpZ25lZCBwcm9wZXJ0eU5hbWUpOwogCiAg
ICAgICAgIHN0YXRpYyBKU09iamVjdCogdG9UaGlzT2JqZWN0KEpTQ2VsbCosIEV4ZWNTdGF0ZSop
OwpAQCAtMTIxLDcgKzEyMSw3IEBAIG5hbWVzcGFjZSBKU0MgewogICAgICAgICAvLyBmYXN0R2V0
T3duUHJvcGVydHlTbG90IHRvIGdldE93blByb3BlcnR5U2xvdC4gQ2FsbGVycyBzaG91bGQgYWx3
YXlzCiAgICAgICAgIC8vIGNhbGwgdGhpcyBmdW5jdGlvbiwgbm90IGl0cyBzbG93ZXIgdmlydHVh
bCBjb3VudGVycGFydC4gKEZvciBpbnRlZ2VyCiAgICAgICAgIC8vIHByb3BlcnR5IG5hbWVzLCB3
ZSB3YW50IGEgc2ltaWxhciBpbnRlcmZhY2Ugd2l0aCBhcHByb3ByaWF0ZSBvcHRpbWl6YXRpb25z
LikKLSAgICAgICAgYm9vbCBmYXN0R2V0T3duUHJvcGVydHlTbG90KEV4ZWNTdGF0ZSosIGNvbnN0
IElkZW50aWZpZXImIHByb3BlcnR5TmFtZSwgUHJvcGVydHlTbG90Jik7CisgICAgICAgIGJvb2wg
ZmFzdEdldE93blByb3BlcnR5U2xvdChFeGVjU3RhdGUqLCBQcm9wZXJ0eU5hbWUsIFByb3BlcnR5
U2xvdCYpOwogICAgICAgICBKU1ZhbHVlIGZhc3RHZXRPd25Qcm9wZXJ0eShFeGVjU3RhdGUqLCBj
b25zdCBVU3RyaW5nJik7CiAKICAgICAgICAgc3RhdGljIHB0cmRpZmZfdCBzdHJ1Y3R1cmVPZmZz
ZXQoKQpAQCAtMTUwLDcgKzE1MCw3IEBAIG5hbWVzcGFjZSBKU0MgewogICAgICAgICB2b2lkIGZp
bmlzaENyZWF0aW9uKEpTR2xvYmFsRGF0YSYsIFN0cnVjdHVyZSosIENyZWF0aW5nRWFybHlDZWxs
VGFnKTsKIAogICAgICAgICAvLyBCYXNlIGltcGxlbWVudGF0aW9uOyBmb3Igbm9uLW9iamVjdCBj
bGFzc2VzIGltcGxlbWVudHMgZ2V0UHJvcGVydHlTbG90LgotICAgICAgICBzdGF0aWMgYm9vbCBn
ZXRPd25Qcm9wZXJ0eVNsb3QoSlNDZWxsKiwgRXhlY1N0YXRlKiwgY29uc3QgSWRlbnRpZmllciYg
cHJvcGVydHlOYW1lLCBQcm9wZXJ0eVNsb3QmKTsKKyAgICAgICAgc3RhdGljIGJvb2wgZ2V0T3du
UHJvcGVydHlTbG90KEpTQ2VsbCosIEV4ZWNTdGF0ZSosIFByb3BlcnR5TmFtZSwgUHJvcGVydHlT
bG90Jik7CiAgICAgICAgIHN0YXRpYyBib29sIGdldE93blByb3BlcnR5U2xvdEJ5SW5kZXgoSlND
ZWxsKiwgRXhlY1N0YXRlKiwgdW5zaWduZWQgcHJvcGVydHlOYW1lLCBQcm9wZXJ0eVNsb3QmKTsK
IAogICAgICAgICAvLyBEdW1teSBpbXBsZW1lbnRhdGlvbnMgb2Ygb3ZlcnJpZGUtYWJsZSBzdGF0
aWMgZnVuY3Rpb25zIGZvciBjbGFzc2VzIHRvIHB1dCBpbiB0aGVpciBNZXRob2RUYWJsZQpAQCAt
MTU5LDkgKzE1OSw5IEBAIG5hbWVzcGFjZSBKU0MgewogICAgICAgICBzdGF0aWMgTk9fUkVUVVJO
X0RVRV9UT19BU1NFUlQgdm9pZCBnZXRQcm9wZXJ0eU5hbWVzKEpTT2JqZWN0KiwgRXhlY1N0YXRl
KiwgUHJvcGVydHlOYW1lQXJyYXkmLCBFbnVtZXJhdGlvbk1vZGUpOwogICAgICAgICBzdGF0aWMg
VVN0cmluZyBjbGFzc05hbWUoY29uc3QgSlNPYmplY3QqKTsKICAgICAgICAgc3RhdGljIGJvb2wg
aGFzSW5zdGFuY2UoSlNPYmplY3QqLCBFeGVjU3RhdGUqLCBKU1ZhbHVlLCBKU1ZhbHVlIHByb3Rv
dHlwZVByb3BlcnR5KTsKLSAgICAgICAgc3RhdGljIE5PX1JFVFVSTl9EVUVfVE9fQVNTRVJUIHZv
aWQgcHV0RGlyZWN0VmlydHVhbChKU09iamVjdCosIEV4ZWNTdGF0ZSosIGNvbnN0IElkZW50aWZp
ZXImIHByb3BlcnR5TmFtZSwgSlNWYWx1ZSwgdW5zaWduZWQgYXR0cmlidXRlcyk7Ci0gICAgICAg
IHN0YXRpYyBib29sIGRlZmluZU93blByb3BlcnR5KEpTT2JqZWN0KiwgRXhlY1N0YXRlKiwgY29u
c3QgSWRlbnRpZmllciYgcHJvcGVydHlOYW1lLCBQcm9wZXJ0eURlc2NyaXB0b3ImLCBib29sIHNo
b3VsZFRocm93KTsKLSAgICAgICAgc3RhdGljIGJvb2wgZ2V0T3duUHJvcGVydHlEZXNjcmlwdG9y
KEpTT2JqZWN0KiwgRXhlY1N0YXRlKiwgY29uc3QgSWRlbnRpZmllciYsIFByb3BlcnR5RGVzY3Jp
cHRvciYpOworICAgICAgICBzdGF0aWMgTk9fUkVUVVJOX0RVRV9UT19BU1NFUlQgdm9pZCBwdXRE
aXJlY3RWaXJ0dWFsKEpTT2JqZWN0KiwgRXhlY1N0YXRlKiwgUHJvcGVydHlOYW1lLCBKU1ZhbHVl
LCB1bnNpZ25lZCBhdHRyaWJ1dGVzKTsKKyAgICAgICAgc3RhdGljIGJvb2wgZGVmaW5lT3duUHJv
cGVydHkoSlNPYmplY3QqLCBFeGVjU3RhdGUqLCBQcm9wZXJ0eU5hbWUsIFByb3BlcnR5RGVzY3Jp
cHRvciYsIGJvb2wgc2hvdWxkVGhyb3cpOworICAgICAgICBzdGF0aWMgYm9vbCBnZXRPd25Qcm9w
ZXJ0eURlc2NyaXB0b3IoSlNPYmplY3QqLCBFeGVjU3RhdGUqLCBQcm9wZXJ0eU5hbWUsIFByb3Bl
cnR5RGVzY3JpcHRvciYpOwogCiAgICAgcHJpdmF0ZToKICAgICAgICAgZnJpZW5kIGNsYXNzIExM
SW50T2Zmc2V0c0V4dHJhY3RvcjsKSW5kZXg6IFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1l
L0pTRnVuY3Rpb24uY3BwCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50
aW1lL0pTRnVuY3Rpb24uY3BwCShyZXZpc2lvbiAxMTY2NzApCisrKyBTb3VyY2UvSmF2YVNjcmlw
dENvcmUvcnVudGltZS9KU0Z1bmN0aW9uLmNwcAkod29ya2luZyBjb3B5KQpAQCAtNTksNyArNTks
NyBAQCBib29sIEpTRnVuY3Rpb246OmlzSG9zdEZ1bmN0aW9uTm9uSW5saW5lCiAgICAgcmV0dXJu
IGlzSG9zdEZ1bmN0aW9uKCk7CiB9CiAKLUpTRnVuY3Rpb24qIEpTRnVuY3Rpb246OmNyZWF0ZShF
eGVjU3RhdGUqIGV4ZWMsIEpTR2xvYmFsT2JqZWN0KiBnbG9iYWxPYmplY3QsIGludCBsZW5ndGgs
IGNvbnN0IElkZW50aWZpZXImIG5hbWUsIE5hdGl2ZUZ1bmN0aW9uIG5hdGl2ZUZ1bmN0aW9uLCBJ
bnRyaW5zaWMgaW50cmluc2ljLCBOYXRpdmVGdW5jdGlvbiBuYXRpdmVDb25zdHJ1Y3RvcikKK0pT
RnVuY3Rpb24qIEpTRnVuY3Rpb246OmNyZWF0ZShFeGVjU3RhdGUqIGV4ZWMsIEpTR2xvYmFsT2Jq
ZWN0KiBnbG9iYWxPYmplY3QsIGludCBsZW5ndGgsIGNvbnN0IFVTdHJpbmcmIG5hbWUsIE5hdGl2
ZUZ1bmN0aW9uIG5hdGl2ZUZ1bmN0aW9uLCBJbnRyaW5zaWMgaW50cmluc2ljLCBOYXRpdmVGdW5j
dGlvbiBuYXRpdmVDb25zdHJ1Y3RvcikKIHsKICAgICBOYXRpdmVFeGVjdXRhYmxlKiBleGVjdXRh
YmxlOwogI2lmICFFTkFCTEUoSklUKQpAQCAtOTIsMTIgKzkyLDEyIEBAIEpTRnVuY3Rpb246OkpT
RnVuY3Rpb24oRXhlY1N0YXRlKiBleGVjLCAKIHsKIH0KIAotdm9pZCBKU0Z1bmN0aW9uOjpmaW5p
c2hDcmVhdGlvbihFeGVjU3RhdGUqIGV4ZWMsIE5hdGl2ZUV4ZWN1dGFibGUqIGV4ZWN1dGFibGUs
IGludCBsZW5ndGgsIGNvbnN0IElkZW50aWZpZXImIG5hbWUpCit2b2lkIEpTRnVuY3Rpb246OmZp
bmlzaENyZWF0aW9uKEV4ZWNTdGF0ZSogZXhlYywgTmF0aXZlRXhlY3V0YWJsZSogZXhlY3V0YWJs
ZSwgaW50IGxlbmd0aCwgY29uc3QgVVN0cmluZyYgbmFtZSkKIHsKICAgICBCYXNlOjpmaW5pc2hD
cmVhdGlvbihleGVjLT5nbG9iYWxEYXRhKCkpOwogICAgIEFTU0VSVChpbmhlcml0cygmc19pbmZv
KSk7CiAgICAgbV9leGVjdXRhYmxlLnNldChleGVjLT5nbG9iYWxEYXRhKCksIHRoaXMsIGV4ZWN1
dGFibGUpOwotICAgIHB1dERpcmVjdChleGVjLT5nbG9iYWxEYXRhKCksIGV4ZWMtPmdsb2JhbERh
dGEoKS5wcm9wZXJ0eU5hbWVzLT5uYW1lLCBqc1N0cmluZyhleGVjLCBuYW1lLmlzTnVsbCgpID8g
IiIgOiBuYW1lLnVzdHJpbmcoKSksIERvbnREZWxldGUgfCBSZWFkT25seSB8IERvbnRFbnVtKTsK
KyAgICBwdXREaXJlY3QoZXhlYy0+Z2xvYmFsRGF0YSgpLCBleGVjLT5nbG9iYWxEYXRhKCkucHJv
cGVydHlOYW1lcy0+bmFtZSwganNTdHJpbmcoZXhlYywgbmFtZS5pc051bGwoKSA/ICIiIDogbmFt
ZSksIERvbnREZWxldGUgfCBSZWFkT25seSB8IERvbnRFbnVtKTsKICAgICBwdXREaXJlY3QoZXhl
Yy0+Z2xvYmFsRGF0YSgpLCBleGVjLT5wcm9wZXJ0eU5hbWVzKCkubGVuZ3RoLCBqc051bWJlcihs
ZW5ndGgpLCBEb250RGVsZXRlIHwgUmVhZE9ubHkgfCBEb250RW51bSk7CiB9CiAKQEAgLTE4Mywx
NCArMTgzLDE0IEBAIENhbGxUeXBlIEpTRnVuY3Rpb246OmdldENhbGxEYXRhKEpTQ2VsbCoKICAg
ICByZXR1cm4gQ2FsbFR5cGVKUzsKIH0KIAotSlNWYWx1ZSBKU0Z1bmN0aW9uOjphcmd1bWVudHNH
ZXR0ZXIoRXhlY1N0YXRlKiBleGVjLCBKU1ZhbHVlIHNsb3RCYXNlLCBjb25zdCBJZGVudGlmaWVy
JikKK0pTVmFsdWUgSlNGdW5jdGlvbjo6YXJndW1lbnRzR2V0dGVyKEV4ZWNTdGF0ZSogZXhlYywg
SlNWYWx1ZSBzbG90QmFzZSwgUHJvcGVydHlOYW1lKQogewogICAgIEpTRnVuY3Rpb24qIHRoaXNP
YmogPSBqc0Nhc3Q8SlNGdW5jdGlvbio+KHNsb3RCYXNlKTsKICAgICBBU1NFUlQoIXRoaXNPYmot
PmlzSG9zdEZ1bmN0aW9uKCkpOwogICAgIHJldHVybiBleGVjLT5pbnRlcnByZXRlcigpLT5yZXRy
aWV2ZUFyZ3VtZW50c0Zyb21WTUNvZGUoZXhlYywgdGhpc09iaik7CiB9CiAKLUpTVmFsdWUgSlNG
dW5jdGlvbjo6Y2FsbGVyR2V0dGVyKEV4ZWNTdGF0ZSogZXhlYywgSlNWYWx1ZSBzbG90QmFzZSwg
Y29uc3QgSWRlbnRpZmllciYpCitKU1ZhbHVlIEpTRnVuY3Rpb246OmNhbGxlckdldHRlcihFeGVj
U3RhdGUqIGV4ZWMsIEpTVmFsdWUgc2xvdEJhc2UsIFByb3BlcnR5TmFtZSkKIHsKICAgICBKU0Z1
bmN0aW9uKiB0aGlzT2JqID0ganNDYXN0PEpTRnVuY3Rpb24qPihzbG90QmFzZSk7CiAgICAgQVNT
RVJUKCF0aGlzT2JqLT5pc0hvc3RGdW5jdGlvbigpKTsKQEAgLTIwNSwxNCArMjA1LDE0IEBAIEpT
VmFsdWUgSlNGdW5jdGlvbjo6Y2FsbGVyR2V0dGVyKEV4ZWNTdGEKICAgICByZXR1cm4gdGhyb3dU
eXBlRXJyb3IoZXhlYywgIkZ1bmN0aW9uLmNhbGxlciB1c2VkIHRvIHJldHJpZXZlIHN0cmljdCBj
YWxsZXIiKTsKIH0KIAotSlNWYWx1ZSBKU0Z1bmN0aW9uOjpsZW5ndGhHZXR0ZXIoRXhlY1N0YXRl
KiwgSlNWYWx1ZSBzbG90QmFzZSwgY29uc3QgSWRlbnRpZmllciYpCitKU1ZhbHVlIEpTRnVuY3Rp
b246Omxlbmd0aEdldHRlcihFeGVjU3RhdGUqLCBKU1ZhbHVlIHNsb3RCYXNlLCBQcm9wZXJ0eU5h
bWUpCiB7CiAgICAgSlNGdW5jdGlvbiogdGhpc09iaiA9IGpzQ2FzdDxKU0Z1bmN0aW9uKj4oc2xv
dEJhc2UpOwogICAgIEFTU0VSVCghdGhpc09iai0+aXNIb3N0RnVuY3Rpb24oKSk7CiAgICAgcmV0
dXJuIGpzTnVtYmVyKHRoaXNPYmotPmpzRXhlY3V0YWJsZSgpLT5wYXJhbWV0ZXJDb3VudCgpKTsK
IH0KIAotYm9vbCBKU0Z1bmN0aW9uOjpnZXRPd25Qcm9wZXJ0eVNsb3QoSlNDZWxsKiBjZWxsLCBF
eGVjU3RhdGUqIGV4ZWMsIGNvbnN0IElkZW50aWZpZXImIHByb3BlcnR5TmFtZSwgUHJvcGVydHlT
bG90JiBzbG90KQorYm9vbCBKU0Z1bmN0aW9uOjpnZXRPd25Qcm9wZXJ0eVNsb3QoSlNDZWxsKiBj
ZWxsLCBFeGVjU3RhdGUqIGV4ZWMsIFByb3BlcnR5TmFtZSBwcm9wZXJ0eU5hbWUsIFByb3BlcnR5
U2xvdCYgc2xvdCkKIHsKICAgICBKU0Z1bmN0aW9uKiB0aGlzT2JqZWN0ID0ganNDYXN0PEpTRnVu
Y3Rpb24qPihjZWxsKTsKICAgICBpZiAodGhpc09iamVjdC0+aXNIb3N0RnVuY3Rpb24oKSkKQEAg
LTI2Nyw3ICsyNjcsNyBAQCBib29sIEpTRnVuY3Rpb246OmdldE93blByb3BlcnR5U2xvdChKU0Nl
CiAgICAgcmV0dXJuIEJhc2U6OmdldE93blByb3BlcnR5U2xvdCh0aGlzT2JqZWN0LCBleGVjLCBw
cm9wZXJ0eU5hbWUsIHNsb3QpOwogfQogCi1ib29sIEpTRnVuY3Rpb246OmdldE93blByb3BlcnR5
RGVzY3JpcHRvcihKU09iamVjdCogb2JqZWN0LCBFeGVjU3RhdGUqIGV4ZWMsIGNvbnN0IElkZW50
aWZpZXImIHByb3BlcnR5TmFtZSwgUHJvcGVydHlEZXNjcmlwdG9yJiBkZXNjcmlwdG9yKQorYm9v
bCBKU0Z1bmN0aW9uOjpnZXRPd25Qcm9wZXJ0eURlc2NyaXB0b3IoSlNPYmplY3QqIG9iamVjdCwg
RXhlY1N0YXRlKiBleGVjLCBQcm9wZXJ0eU5hbWUgcHJvcGVydHlOYW1lLCBQcm9wZXJ0eURlc2Ny
aXB0b3ImIGRlc2NyaXB0b3IpCiB7CiAgICAgSlNGdW5jdGlvbiogdGhpc09iamVjdCA9IGpzQ2Fz
dDxKU0Z1bmN0aW9uKj4ob2JqZWN0KTsKICAgICBpZiAodGhpc09iamVjdC0+aXNIb3N0RnVuY3Rp
b24oKSkKQEAgLTMzMCw3ICszMzAsNyBAQCB2b2lkIEpTRnVuY3Rpb246OmdldE93blByb3BlcnR5
TmFtZXMoSlNPCiAgICAgQmFzZTo6Z2V0T3duUHJvcGVydHlOYW1lcyh0aGlzT2JqZWN0LCBleGVj
LCBwcm9wZXJ0eU5hbWVzLCBtb2RlKTsKIH0KIAotdm9pZCBKU0Z1bmN0aW9uOjpwdXQoSlNDZWxs
KiBjZWxsLCBFeGVjU3RhdGUqIGV4ZWMsIGNvbnN0IElkZW50aWZpZXImIHByb3BlcnR5TmFtZSwg
SlNWYWx1ZSB2YWx1ZSwgUHV0UHJvcGVydHlTbG90JiBzbG90KQordm9pZCBKU0Z1bmN0aW9uOjpw
dXQoSlNDZWxsKiBjZWxsLCBFeGVjU3RhdGUqIGV4ZWMsIFByb3BlcnR5TmFtZSBwcm9wZXJ0eU5h
bWUsIEpTVmFsdWUgdmFsdWUsIFB1dFByb3BlcnR5U2xvdCYgc2xvdCkKIHsKICAgICBKU0Z1bmN0
aW9uKiB0aGlzT2JqZWN0ID0ganNDYXN0PEpTRnVuY3Rpb24qPihjZWxsKTsKICAgICBpZiAodGhp
c09iamVjdC0+aXNIb3N0RnVuY3Rpb24oKSkgewpAQCAtMzU5LDcgKzM1OSw3IEBAIHZvaWQgSlNG
dW5jdGlvbjo6cHV0KEpTQ2VsbCogY2VsbCwgRXhlY1MKICAgICBCYXNlOjpwdXQodGhpc09iamVj
dCwgZXhlYywgcHJvcGVydHlOYW1lLCB2YWx1ZSwgc2xvdCk7CiB9CiAKLWJvb2wgSlNGdW5jdGlv
bjo6ZGVsZXRlUHJvcGVydHkoSlNDZWxsKiBjZWxsLCBFeGVjU3RhdGUqIGV4ZWMsIGNvbnN0IElk
ZW50aWZpZXImIHByb3BlcnR5TmFtZSkKK2Jvb2wgSlNGdW5jdGlvbjo6ZGVsZXRlUHJvcGVydHko
SlNDZWxsKiBjZWxsLCBFeGVjU3RhdGUqIGV4ZWMsIFByb3BlcnR5TmFtZSBwcm9wZXJ0eU5hbWUp
CiB7CiAgICAgSlNGdW5jdGlvbiogdGhpc09iamVjdCA9IGpzQ2FzdDxKU0Z1bmN0aW9uKj4oY2Vs
bCk7CiAgICAgLy8gRm9yIG5vbi1ob3N0IGZ1bmN0aW9ucywgZG9uJ3QgbGV0IHRoZXNlIHByb3Bl
cnRpZXMgYnkgZGVsZXRlZCAtIGV4Y2VwdCBieSBEZWZpbmVPd25Qcm9wZXJ0eS4KQEAgLTM3Miw3
ICszNzIsNyBAQCBib29sIEpTRnVuY3Rpb246OmRlbGV0ZVByb3BlcnR5KEpTQ2VsbCogCiAgICAg
cmV0dXJuIEJhc2U6OmRlbGV0ZVByb3BlcnR5KHRoaXNPYmplY3QsIGV4ZWMsIHByb3BlcnR5TmFt
ZSk7CiB9CiAKLWJvb2wgSlNGdW5jdGlvbjo6ZGVmaW5lT3duUHJvcGVydHkoSlNPYmplY3QqIG9i
amVjdCwgRXhlY1N0YXRlKiBleGVjLCBjb25zdCBJZGVudGlmaWVyJiBwcm9wZXJ0eU5hbWUsIFBy
b3BlcnR5RGVzY3JpcHRvciYgZGVzY3JpcHRvciwgYm9vbCB0aHJvd0V4Y2VwdGlvbikKK2Jvb2wg
SlNGdW5jdGlvbjo6ZGVmaW5lT3duUHJvcGVydHkoSlNPYmplY3QqIG9iamVjdCwgRXhlY1N0YXRl
KiBleGVjLCBQcm9wZXJ0eU5hbWUgcHJvcGVydHlOYW1lLCBQcm9wZXJ0eURlc2NyaXB0b3ImIGRl
c2NyaXB0b3IsIGJvb2wgdGhyb3dFeGNlcHRpb24pCiB7CiAgICAgSlNGdW5jdGlvbiogdGhpc09i
amVjdCA9IGpzQ2FzdDxKU0Z1bmN0aW9uKj4ob2JqZWN0KTsKICAgICBpZiAodGhpc09iamVjdC0+
aXNIb3N0RnVuY3Rpb24oKSkKQEAgLTQ1NSw3ICs0NTUsNyBAQCBVU3RyaW5nIGdldENhbGN1bGF0
ZWREaXNwbGF5TmFtZShDYWxsRnJhCiAgICAgICAgIHJldHVybiBmdW5jdGlvbi0+Y2FsY3VsYXRl
ZERpc3BsYXlOYW1lKGNhbGxGcmFtZSk7CiAgICAgaWYgKEludGVybmFsRnVuY3Rpb24qIGZ1bmN0
aW9uID0ganNEeW5hbWljQ2FzdDxJbnRlcm5hbEZ1bmN0aW9uKj4ob2JqZWN0KSkKICAgICAgICAg
cmV0dXJuIGZ1bmN0aW9uLT5jYWxjdWxhdGVkRGlzcGxheU5hbWUoY2FsbEZyYW1lKTsKLSAgICBy
ZXR1cm4gY2FsbEZyYW1lLT5nbG9iYWxEYXRhKCkucHJvcGVydHlOYW1lcy0+ZW1wdHlJZGVudGlm
aWVyLnVzdHJpbmcoKTsKKyAgICByZXR1cm4gIiI7CiB9CiAKIH0gLy8gbmFtZXNwYWNlIEpTQwpJ
bmRleDogU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvSlNGdW5jdGlvbi5oCj09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT0KLS0tIFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL0pTRnVuY3Rpb24uaAkocmV2aXNp
b24gMTE2NjcwKQorKysgU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvSlNGdW5jdGlvbi5o
CSh3b3JraW5nIGNvcHkpCkBAIC01NSw3ICs1NSw3IEBAIG5hbWVzcGFjZSBKU0MgewogICAgIHB1
YmxpYzoKICAgICAgICAgdHlwZWRlZiBKU05vbkZpbmFsT2JqZWN0IEJhc2U7CiAKLSAgICAgICAg
SlNfRVhQT1JUX1BSSVZBVEUgc3RhdGljIEpTRnVuY3Rpb24qIGNyZWF0ZShFeGVjU3RhdGUqLCBK
U0dsb2JhbE9iamVjdCosIGludCBsZW5ndGgsIGNvbnN0IElkZW50aWZpZXImIG5hbWUsIE5hdGl2
ZUZ1bmN0aW9uIG5hdGl2ZUZ1bmN0aW9uLCBJbnRyaW5zaWMgPSBOb0ludHJpbnNpYywgTmF0aXZl
RnVuY3Rpb24gbmF0aXZlQ29uc3RydWN0b3IgPSBjYWxsSG9zdEZ1bmN0aW9uQXNDb25zdHJ1Y3Rv
cik7CisgICAgICAgIEpTX0VYUE9SVF9QUklWQVRFIHN0YXRpYyBKU0Z1bmN0aW9uKiBjcmVhdGUo
RXhlY1N0YXRlKiwgSlNHbG9iYWxPYmplY3QqLCBpbnQgbGVuZ3RoLCBjb25zdCBVU3RyaW5nJiBu
YW1lLCBOYXRpdmVGdW5jdGlvbiwgSW50cmluc2ljID0gTm9JbnRyaW5zaWMsIE5hdGl2ZUZ1bmN0
aW9uIG5hdGl2ZUNvbnN0cnVjdG9yID0gY2FsbEhvc3RGdW5jdGlvbkFzQ29uc3RydWN0b3IpOwog
CiAgICAgICAgIHN0YXRpYyBKU0Z1bmN0aW9uKiBjcmVhdGUoRXhlY1N0YXRlKiBleGVjLCBGdW5j
dGlvbkV4ZWN1dGFibGUqIGV4ZWN1dGFibGUsIFNjb3BlQ2hhaW5Ob2RlKiBzY29wZUNoYWluKQog
ICAgICAgICB7CkBAIC0xMzksMTkgKzEzOSwxOSBAQCBuYW1lc3BhY2UgSlNDIHsKICAgICAgICAg
SlNfRVhQT1JUX1BSSVZBVEUgSlNGdW5jdGlvbihFeGVjU3RhdGUqLCBKU0dsb2JhbE9iamVjdCos
IFN0cnVjdHVyZSopOwogICAgICAgICBKU0Z1bmN0aW9uKEV4ZWNTdGF0ZSosIEZ1bmN0aW9uRXhl
Y3V0YWJsZSosIFNjb3BlQ2hhaW5Ob2RlKik7CiAgICAgICAgIAotICAgICAgICB2b2lkIGZpbmlz
aENyZWF0aW9uKEV4ZWNTdGF0ZSosIE5hdGl2ZUV4ZWN1dGFibGUqLCBpbnQgbGVuZ3RoLCBjb25z
dCBJZGVudGlmaWVyJiBuYW1lKTsKKyAgICAgICAgdm9pZCBmaW5pc2hDcmVhdGlvbihFeGVjU3Rh
dGUqLCBOYXRpdmVFeGVjdXRhYmxlKiwgaW50IGxlbmd0aCwgY29uc3QgVVN0cmluZyYgbmFtZSk7
CiAgICAgICAgIHZvaWQgZmluaXNoQ3JlYXRpb24oRXhlY1N0YXRlKiwgRnVuY3Rpb25FeGVjdXRh
YmxlKiwgU2NvcGVDaGFpbk5vZGUqKTsKIAogICAgICAgICBTdHJ1Y3R1cmUqIGNhY2hlSW5oZXJp
dG9ySUQoRXhlY1N0YXRlKik7CiAKLSAgICAgICAgc3RhdGljIGJvb2wgZ2V0T3duUHJvcGVydHlT
bG90KEpTQ2VsbCosIEV4ZWNTdGF0ZSosIGNvbnN0IElkZW50aWZpZXImLCBQcm9wZXJ0eVNsb3Qm
KTsKLSAgICAgICAgc3RhdGljIGJvb2wgZ2V0T3duUHJvcGVydHlEZXNjcmlwdG9yKEpTT2JqZWN0
KiwgRXhlY1N0YXRlKiwgY29uc3QgSWRlbnRpZmllciYsIFByb3BlcnR5RGVzY3JpcHRvciYpOwor
ICAgICAgICBzdGF0aWMgYm9vbCBnZXRPd25Qcm9wZXJ0eVNsb3QoSlNDZWxsKiwgRXhlY1N0YXRl
KiwgUHJvcGVydHlOYW1lLCBQcm9wZXJ0eVNsb3QmKTsKKyAgICAgICAgc3RhdGljIGJvb2wgZ2V0
T3duUHJvcGVydHlEZXNjcmlwdG9yKEpTT2JqZWN0KiwgRXhlY1N0YXRlKiwgUHJvcGVydHlOYW1l
LCBQcm9wZXJ0eURlc2NyaXB0b3ImKTsKICAgICAgICAgc3RhdGljIHZvaWQgZ2V0T3duUHJvcGVy
dHlOYW1lcyhKU09iamVjdCosIEV4ZWNTdGF0ZSosIFByb3BlcnR5TmFtZUFycmF5JiwgRW51bWVy
YXRpb25Nb2RlID0gRXhjbHVkZURvbnRFbnVtUHJvcGVydGllcyk7Ci0gICAgICAgIHN0YXRpYyBi
b29sIGRlZmluZU93blByb3BlcnR5KEpTT2JqZWN0KiwgRXhlY1N0YXRlKiwgY29uc3QgSWRlbnRp
ZmllciYgcHJvcGVydHlOYW1lLCBQcm9wZXJ0eURlc2NyaXB0b3ImLCBib29sIHNob3VsZFRocm93
KTsKKyAgICAgICAgc3RhdGljIGJvb2wgZGVmaW5lT3duUHJvcGVydHkoSlNPYmplY3QqLCBFeGVj
U3RhdGUqLCBQcm9wZXJ0eU5hbWUsIFByb3BlcnR5RGVzY3JpcHRvciYsIGJvb2wgc2hvdWxkVGhy
b3cpOwogCi0gICAgICAgIHN0YXRpYyB2b2lkIHB1dChKU0NlbGwqLCBFeGVjU3RhdGUqLCBjb25z
dCBJZGVudGlmaWVyJiBwcm9wZXJ0eU5hbWUsIEpTVmFsdWUsIFB1dFByb3BlcnR5U2xvdCYpOwor
ICAgICAgICBzdGF0aWMgdm9pZCBwdXQoSlNDZWxsKiwgRXhlY1N0YXRlKiwgUHJvcGVydHlOYW1l
LCBKU1ZhbHVlLCBQdXRQcm9wZXJ0eVNsb3QmKTsKIAotICAgICAgICBzdGF0aWMgYm9vbCBkZWxl
dGVQcm9wZXJ0eShKU0NlbGwqLCBFeGVjU3RhdGUqLCBjb25zdCBJZGVudGlmaWVyJiBwcm9wZXJ0
eU5hbWUpOworICAgICAgICBzdGF0aWMgYm9vbCBkZWxldGVQcm9wZXJ0eShKU0NlbGwqLCBFeGVj
U3RhdGUqLCBQcm9wZXJ0eU5hbWUpOwogCiAgICAgICAgIHN0YXRpYyB2b2lkIHZpc2l0Q2hpbGRy
ZW4oSlNDZWxsKiwgU2xvdFZpc2l0b3ImKTsKIApAQCAtMTYwLDkgKzE2MCw5IEBAIG5hbWVzcGFj
ZSBKU0MgewogICAgICAgICAKICAgICAgICAgSlNfRVhQT1JUX1BSSVZBVEUgYm9vbCBpc0hvc3RG
dW5jdGlvbk5vbklubGluZSgpIGNvbnN0OwogCi0gICAgICAgIHN0YXRpYyBKU1ZhbHVlIGFyZ3Vt
ZW50c0dldHRlcihFeGVjU3RhdGUqLCBKU1ZhbHVlLCBjb25zdCBJZGVudGlmaWVyJik7Ci0gICAg
ICAgIHN0YXRpYyBKU1ZhbHVlIGNhbGxlckdldHRlcihFeGVjU3RhdGUqLCBKU1ZhbHVlLCBjb25z
dCBJZGVudGlmaWVyJik7Ci0gICAgICAgIHN0YXRpYyBKU1ZhbHVlIGxlbmd0aEdldHRlcihFeGVj
U3RhdGUqLCBKU1ZhbHVlLCBjb25zdCBJZGVudGlmaWVyJik7CisgICAgICAgIHN0YXRpYyBKU1Zh
bHVlIGFyZ3VtZW50c0dldHRlcihFeGVjU3RhdGUqLCBKU1ZhbHVlLCBQcm9wZXJ0eU5hbWUpOwor
ICAgICAgICBzdGF0aWMgSlNWYWx1ZSBjYWxsZXJHZXR0ZXIoRXhlY1N0YXRlKiwgSlNWYWx1ZSwg
UHJvcGVydHlOYW1lKTsKKyAgICAgICAgc3RhdGljIEpTVmFsdWUgbGVuZ3RoR2V0dGVyKEV4ZWNT
dGF0ZSosIEpTVmFsdWUsIFByb3BlcnR5TmFtZSk7CiAKICAgICAgICAgV3JpdGVCYXJyaWVyPEV4
ZWN1dGFibGVCYXNlPiBtX2V4ZWN1dGFibGU7CiAgICAgICAgIFdyaXRlQmFycmllcjxTY29wZUNo
YWluTm9kZT4gbV9zY29wZUNoYWluOwpJbmRleDogU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRp
bWUvSlNHbG9iYWxPYmplY3QuY3BwCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9KYXZhU2NyaXB0Q29y
ZS9ydW50aW1lL0pTR2xvYmFsT2JqZWN0LmNwcAkocmV2aXNpb24gMTE2NjY3KQorKysgU291cmNl
L0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvSlNHbG9iYWxPYmplY3QuY3BwCSh3b3JraW5nIGNvcHkp
CkBAIC0xNDIsNyArMTQyLDcgQEAgdm9pZCBKU0dsb2JhbE9iamVjdDo6aW5pdChKU09iamVjdCog
dGhpcwogICAgIHJlc2V0KHByb3RvdHlwZSgpKTsKIH0KIAotdm9pZCBKU0dsb2JhbE9iamVjdDo6
cHV0KEpTQ2VsbCogY2VsbCwgRXhlY1N0YXRlKiBleGVjLCBjb25zdCBJZGVudGlmaWVyJiBwcm9w
ZXJ0eU5hbWUsIEpTVmFsdWUgdmFsdWUsIFB1dFByb3BlcnR5U2xvdCYgc2xvdCkKK3ZvaWQgSlNH
bG9iYWxPYmplY3Q6OnB1dChKU0NlbGwqIGNlbGwsIEV4ZWNTdGF0ZSogZXhlYywgUHJvcGVydHlO
YW1lIHByb3BlcnR5TmFtZSwgSlNWYWx1ZSB2YWx1ZSwgUHV0UHJvcGVydHlTbG90JiBzbG90KQog
ewogICAgIEpTR2xvYmFsT2JqZWN0KiB0aGlzT2JqZWN0ID0ganNDYXN0PEpTR2xvYmFsT2JqZWN0
Kj4oY2VsbCk7CiAgICAgQVNTRVJUKCFIZWFwOjpoZWFwKHZhbHVlKSB8fCBIZWFwOjpoZWFwKHZh
bHVlKSA9PSBIZWFwOjpoZWFwKHRoaXNPYmplY3QpKTsKQEAgLTE1Miw3ICsxNTIsNyBAQCB2b2lk
IEpTR2xvYmFsT2JqZWN0OjpwdXQoSlNDZWxsKiBjZWxsLCBFCiAgICAgSlNWYXJpYWJsZU9iamVj
dDo6cHV0KHRoaXNPYmplY3QsIGV4ZWMsIHByb3BlcnR5TmFtZSwgdmFsdWUsIHNsb3QpOwogfQog
Ci12b2lkIEpTR2xvYmFsT2JqZWN0OjpwdXREaXJlY3RWaXJ0dWFsKEpTT2JqZWN0KiBvYmplY3Qs
IEV4ZWNTdGF0ZSogZXhlYywgY29uc3QgSWRlbnRpZmllciYgcHJvcGVydHlOYW1lLCBKU1ZhbHVl
IHZhbHVlLCB1bnNpZ25lZCBhdHRyaWJ1dGVzKQordm9pZCBKU0dsb2JhbE9iamVjdDo6cHV0RGly
ZWN0VmlydHVhbChKU09iamVjdCogb2JqZWN0LCBFeGVjU3RhdGUqIGV4ZWMsIFByb3BlcnR5TmFt
ZSBwcm9wZXJ0eU5hbWUsIEpTVmFsdWUgdmFsdWUsIHVuc2lnbmVkIGF0dHJpYnV0ZXMpCiB7CiAg
ICAgSlNHbG9iYWxPYmplY3QqIHRoaXNPYmplY3QgPSBqc0Nhc3Q8SlNHbG9iYWxPYmplY3QqPihv
YmplY3QpOwogICAgIEFTU0VSVCghSGVhcDo6aGVhcCh2YWx1ZSkgfHwgSGVhcDo6aGVhcCh2YWx1
ZSkgPT0gSGVhcDo6aGVhcCh0aGlzT2JqZWN0KSk7CkBAIC0xNzAsNyArMTcwLDcgQEAgdm9pZCBK
U0dsb2JhbE9iamVjdDo6cHV0RGlyZWN0VmlydHVhbChKUwogICAgIH0KIH0KIAotYm9vbCBKU0ds
b2JhbE9iamVjdDo6ZGVmaW5lT3duUHJvcGVydHkoSlNPYmplY3QqIG9iamVjdCwgRXhlY1N0YXRl
KiBleGVjLCBjb25zdCBJZGVudGlmaWVyJiBwcm9wZXJ0eU5hbWUsIFByb3BlcnR5RGVzY3JpcHRv
ciYgZGVzY3JpcHRvciwgYm9vbCBzaG91bGRUaHJvdykKK2Jvb2wgSlNHbG9iYWxPYmplY3Q6OmRl
ZmluZU93blByb3BlcnR5KEpTT2JqZWN0KiBvYmplY3QsIEV4ZWNTdGF0ZSogZXhlYywgUHJvcGVy
dHlOYW1lIHByb3BlcnR5TmFtZSwgUHJvcGVydHlEZXNjcmlwdG9yJiBkZXNjcmlwdG9yLCBib29s
IHNob3VsZFRocm93KQogewogICAgIEpTR2xvYmFsT2JqZWN0KiB0aGlzT2JqZWN0ID0ganNDYXN0
PEpTR2xvYmFsT2JqZWN0Kj4ob2JqZWN0KTsKICAgICBQcm9wZXJ0eVNsb3Qgc2xvdDsKQEAgLTIw
NSw4ICsyMDUsOCBAQCB2b2lkIEpTR2xvYmFsT2JqZWN0OjpyZXNldChKU1ZhbHVlIHByb3RvCiAg
ICAgbV9hcHBseUZ1bmN0aW9uLnNldChleGVjLT5nbG9iYWxEYXRhKCksIHRoaXMsIGFwcGx5RnVu
Y3Rpb24pOwogICAgIG1fb2JqZWN0UHJvdG90eXBlLnNldChleGVjLT5nbG9iYWxEYXRhKCksIHRo
aXMsIE9iamVjdFByb3RvdHlwZTo6Y3JlYXRlKGV4ZWMsIHRoaXMsIE9iamVjdFByb3RvdHlwZTo6
Y3JlYXRlU3RydWN0dXJlKGV4ZWMtPmdsb2JhbERhdGEoKSwgdGhpcywganNOdWxsKCkpKSk7CiAg
ICAgR2V0dGVyU2V0dGVyKiBwcm90b0FjY2Vzc29yID0gR2V0dGVyU2V0dGVyOjpjcmVhdGUoZXhl
Yyk7Ci0gICAgcHJvdG9BY2Nlc3Nvci0+c2V0R2V0dGVyKGV4ZWMtPmdsb2JhbERhdGEoKSwgSlNG
dW5jdGlvbjo6Y3JlYXRlKGV4ZWMsIHRoaXMsIDAsIElkZW50aWZpZXIoKSwgZ2xvYmFsRnVuY1By
b3RvR2V0dGVyKSk7Ci0gICAgcHJvdG9BY2Nlc3Nvci0+c2V0U2V0dGVyKGV4ZWMtPmdsb2JhbERh
dGEoKSwgSlNGdW5jdGlvbjo6Y3JlYXRlKGV4ZWMsIHRoaXMsIDAsIElkZW50aWZpZXIoKSwgZ2xv
YmFsRnVuY1Byb3RvU2V0dGVyKSk7CisgICAgcHJvdG9BY2Nlc3Nvci0+c2V0R2V0dGVyKGV4ZWMt
Pmdsb2JhbERhdGEoKSwgSlNGdW5jdGlvbjo6Y3JlYXRlKGV4ZWMsIHRoaXMsIDAsICIiLCBnbG9i
YWxGdW5jUHJvdG9HZXR0ZXIpKTsKKyAgICBwcm90b0FjY2Vzc29yLT5zZXRTZXR0ZXIoZXhlYy0+
Z2xvYmFsRGF0YSgpLCBKU0Z1bmN0aW9uOjpjcmVhdGUoZXhlYywgdGhpcywgMCwgIiIsIGdsb2Jh
bEZ1bmNQcm90b1NldHRlcikpOwogICAgIG1fb2JqZWN0UHJvdG90eXBlLT5wdXREaXJlY3RBY2Nl
c3NvcihleGVjLT5nbG9iYWxEYXRhKCksIGV4ZWMtPnByb3BlcnR5TmFtZXMoKS51bmRlcnNjb3Jl
UHJvdG8sIHByb3RvQWNjZXNzb3IsIEFjY2Vzc29yIHwgRG9udEVudW0pOwogICAgIG1fZnVuY3Rp
b25Qcm90b3R5cGUtPnN0cnVjdHVyZSgpLT5zZXRQcm90b3R5cGVXaXRob3V0VHJhbnNpdGlvbihl
eGVjLT5nbG9iYWxEYXRhKCksIG1fb2JqZWN0UHJvdG90eXBlLmdldCgpKTsKIApAQCAtMjkzLDcg
KzI5Myw3IEBAIHZvaWQgSlNHbG9iYWxPYmplY3Q6OnJlc2V0KEpTVmFsdWUgcHJvdG8KICAgICBw
dXREaXJlY3RXaXRob3V0VHJhbnNpdGlvbihleGVjLT5nbG9iYWxEYXRhKCksIElkZW50aWZpZXIo
ZXhlYywgIlR5cGVFcnJvciIpLCBtX3R5cGVFcnJvckNvbnN0cnVjdG9yLmdldCgpLCBEb250RW51
bSk7CiAgICAgcHV0RGlyZWN0V2l0aG91dFRyYW5zaXRpb24oZXhlYy0+Z2xvYmFsRGF0YSgpLCBJ
ZGVudGlmaWVyKGV4ZWMsICJVUklFcnJvciIpLCBtX1VSSUVycm9yQ29uc3RydWN0b3IuZ2V0KCks
IERvbnRFbnVtKTsKIAotICAgIG1fZXZhbEZ1bmN0aW9uLnNldChleGVjLT5nbG9iYWxEYXRhKCks
IHRoaXMsIEpTRnVuY3Rpb246OmNyZWF0ZShleGVjLCB0aGlzLCAxLCBleGVjLT5wcm9wZXJ0eU5h
bWVzKCkuZXZhbCwgZ2xvYmFsRnVuY0V2YWwpKTsKKyAgICBtX2V2YWxGdW5jdGlvbi5zZXQoZXhl
Yy0+Z2xvYmFsRGF0YSgpLCB0aGlzLCBKU0Z1bmN0aW9uOjpjcmVhdGUoZXhlYywgdGhpcywgMSwg
ZXhlYy0+cHJvcGVydHlOYW1lcygpLmV2YWwudXN0cmluZygpLCBnbG9iYWxGdW5jRXZhbCkpOwog
ICAgIHB1dERpcmVjdFdpdGhvdXRUcmFuc2l0aW9uKGV4ZWMtPmdsb2JhbERhdGEoKSwgZXhlYy0+
cHJvcGVydHlOYW1lcygpLmV2YWwsIG1fZXZhbEZ1bmN0aW9uLmdldCgpLCBEb250RW51bSk7CiAK
ICAgICBwdXREaXJlY3RXaXRob3V0VHJhbnNpdGlvbihleGVjLT5nbG9iYWxEYXRhKCksIElkZW50
aWZpZXIoZXhlYywgIkpTT04iKSwgSlNPTk9iamVjdDo6Y3JlYXRlKGV4ZWMsIHRoaXMsIEpTT05P
YmplY3Q6OmNyZWF0ZVN0cnVjdHVyZShleGVjLT5nbG9iYWxEYXRhKCksIHRoaXMsIG1fb2JqZWN0
UHJvdG90eXBlLmdldCgpKSksIERvbnRFbnVtKTsKQEAgLTMxMSw3ICszMTEsNyBAQCB2b2lkIEpT
R2xvYmFsT2JqZWN0OjpyZXNldChKU1ZhbHVlIHByb3RvCiAKIHZvaWQgSlNHbG9iYWxPYmplY3Q6
OmNyZWF0ZVRocm93VHlwZUVycm9yKEV4ZWNTdGF0ZSogZXhlYykKIHsKLSAgICBKU0Z1bmN0aW9u
KiB0aHJvd2VyID0gSlNGdW5jdGlvbjo6Y3JlYXRlKGV4ZWMsIHRoaXMsIDAsIElkZW50aWZpZXIo
KSwgZ2xvYmFsRnVuY1Rocm93VHlwZUVycm9yKTsKKyAgICBKU0Z1bmN0aW9uKiB0aHJvd2VyID0g
SlNGdW5jdGlvbjo6Y3JlYXRlKGV4ZWMsIHRoaXMsIDAsICIiLCBnbG9iYWxGdW5jVGhyb3dUeXBl
RXJyb3IpOwogICAgIEdldHRlclNldHRlciogZ2V0dGVyU2V0dGVyID0gR2V0dGVyU2V0dGVyOjpj
cmVhdGUoZXhlYyk7CiAgICAgZ2V0dGVyU2V0dGVyLT5zZXRHZXR0ZXIoZXhlYy0+Z2xvYmFsRGF0
YSgpLCB0aHJvd2VyKTsKICAgICBnZXR0ZXJTZXR0ZXItPnNldFNldHRlcihleGVjLT5nbG9iYWxE
YXRhKCksIHRocm93ZXIpOwpAQCAtNDMxLDcgKzQzMSw3IEBAIHZvaWQgSlNHbG9iYWxPYmplY3Q6
OmFkZFN0YXRpY0dsb2JhbHMoR2wKICAgICB9CiB9CiAKLWJvb2wgSlNHbG9iYWxPYmplY3Q6Omdl
dE93blByb3BlcnR5U2xvdChKU0NlbGwqIGNlbGwsIEV4ZWNTdGF0ZSogZXhlYywgY29uc3QgSWRl
bnRpZmllciYgcHJvcGVydHlOYW1lLCBQcm9wZXJ0eVNsb3QmIHNsb3QpCitib29sIEpTR2xvYmFs
T2JqZWN0OjpnZXRPd25Qcm9wZXJ0eVNsb3QoSlNDZWxsKiBjZWxsLCBFeGVjU3RhdGUqIGV4ZWMs
IFByb3BlcnR5TmFtZSBwcm9wZXJ0eU5hbWUsIFByb3BlcnR5U2xvdCYgc2xvdCkKIHsKICAgICBK
U0dsb2JhbE9iamVjdCogdGhpc09iamVjdCA9IGpzQ2FzdDxKU0dsb2JhbE9iamVjdCo+KGNlbGwp
OwogICAgIGlmIChnZXRTdGF0aWNGdW5jdGlvblNsb3Q8SlNWYXJpYWJsZU9iamVjdD4oZXhlYywg
RXhlY1N0YXRlOjpnbG9iYWxPYmplY3RUYWJsZShleGVjKSwgdGhpc09iamVjdCwgcHJvcGVydHlO
YW1lLCBzbG90KSkKQEAgLTQzOSw3ICs0MzksNyBAQCBib29sIEpTR2xvYmFsT2JqZWN0OjpnZXRP
d25Qcm9wZXJ0eVNsb3QoCiAgICAgcmV0dXJuIHRoaXNPYmplY3QtPnN5bWJvbFRhYmxlR2V0KHBy
b3BlcnR5TmFtZSwgc2xvdCk7CiB9CiAKLWJvb2wgSlNHbG9iYWxPYmplY3Q6OmdldE93blByb3Bl
cnR5RGVzY3JpcHRvcihKU09iamVjdCogb2JqZWN0LCBFeGVjU3RhdGUqIGV4ZWMsIGNvbnN0IElk
ZW50aWZpZXImIHByb3BlcnR5TmFtZSwgUHJvcGVydHlEZXNjcmlwdG9yJiBkZXNjcmlwdG9yKQor
Ym9vbCBKU0dsb2JhbE9iamVjdDo6Z2V0T3duUHJvcGVydHlEZXNjcmlwdG9yKEpTT2JqZWN0KiBv
YmplY3QsIEV4ZWNTdGF0ZSogZXhlYywgUHJvcGVydHlOYW1lIHByb3BlcnR5TmFtZSwgUHJvcGVy
dHlEZXNjcmlwdG9yJiBkZXNjcmlwdG9yKQogewogICAgIEpTR2xvYmFsT2JqZWN0KiB0aGlzT2Jq
ZWN0ID0ganNDYXN0PEpTR2xvYmFsT2JqZWN0Kj4ob2JqZWN0KTsKICAgICBpZiAoZ2V0U3RhdGlj
RnVuY3Rpb25EZXNjcmlwdG9yPEpTVmFyaWFibGVPYmplY3Q+KGV4ZWMsIEV4ZWNTdGF0ZTo6Z2xv
YmFsT2JqZWN0VGFibGUoZXhlYyksIHRoaXNPYmplY3QsIHByb3BlcnR5TmFtZSwgZGVzY3JpcHRv
cikpCkluZGV4OiBTb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9KU0dsb2JhbE9iamVjdC5o
Cj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT0KLS0tIFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL0pTR2xvYmFsT2Jq
ZWN0LmgJKHJldmlzaW9uIDExNjY2NykKKysrIFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1l
L0pTR2xvYmFsT2JqZWN0LmgJKHdvcmtpbmcgY29weSkKQEAgLTE5OSwyMCArMTk5LDIwIEBAIG5h
bWVzcGFjZSBKU0MgewogCiAgICAgICAgIEpTX0VYUE9SVF9QUklWQVRFIHN0YXRpYyB2b2lkIHZp
c2l0Q2hpbGRyZW4oSlNDZWxsKiwgU2xvdFZpc2l0b3ImKTsKIAotICAgICAgICBKU19FWFBPUlRf
UFJJVkFURSBzdGF0aWMgYm9vbCBnZXRPd25Qcm9wZXJ0eVNsb3QoSlNDZWxsKiwgRXhlY1N0YXRl
KiwgY29uc3QgSWRlbnRpZmllciYsIFByb3BlcnR5U2xvdCYpOwotICAgICAgICBKU19FWFBPUlRf
UFJJVkFURSBzdGF0aWMgYm9vbCBnZXRPd25Qcm9wZXJ0eURlc2NyaXB0b3IoSlNPYmplY3QqLCBF
eGVjU3RhdGUqLCBjb25zdCBJZGVudGlmaWVyJiwgUHJvcGVydHlEZXNjcmlwdG9yJik7Ci0gICAg
ICAgIGJvb2wgaGFzT3duUHJvcGVydHlGb3JXcml0ZShFeGVjU3RhdGUqLCBjb25zdCBJZGVudGlm
aWVyJik7Ci0gICAgICAgIEpTX0VYUE9SVF9QUklWQVRFIHN0YXRpYyB2b2lkIHB1dChKU0NlbGwq
LCBFeGVjU3RhdGUqLCBjb25zdCBJZGVudGlmaWVyJiwgSlNWYWx1ZSwgUHV0UHJvcGVydHlTbG90
Jik7Ci0KLSAgICAgICAgSlNfRVhQT1JUX1BSSVZBVEUgc3RhdGljIHZvaWQgcHV0RGlyZWN0Vmly
dHVhbChKU09iamVjdCosIEV4ZWNTdGF0ZSosIGNvbnN0IElkZW50aWZpZXImIHByb3BlcnR5TmFt
ZSwgSlNWYWx1ZSwgdW5zaWduZWQgYXR0cmlidXRlcyk7Ci0KLSAgICAgICAgSlNfRVhQT1JUX1BS
SVZBVEUgc3RhdGljIHZvaWQgZGVmaW5lR2V0dGVyKEpTT2JqZWN0KiwgRXhlY1N0YXRlKiwgY29u
c3QgSWRlbnRpZmllciYgcHJvcGVydHlOYW1lLCBKU09iamVjdCogZ2V0dGVyRnVuYywgdW5zaWdu
ZWQgYXR0cmlidXRlcyk7Ci0gICAgICAgIEpTX0VYUE9SVF9QUklWQVRFIHN0YXRpYyB2b2lkIGRl
ZmluZVNldHRlcihKU09iamVjdCosIEV4ZWNTdGF0ZSosIGNvbnN0IElkZW50aWZpZXImIHByb3Bl
cnR5TmFtZSwgSlNPYmplY3QqIHNldHRlckZ1bmMsIHVuc2lnbmVkIGF0dHJpYnV0ZXMpOwotICAg
ICAgICBKU19FWFBPUlRfUFJJVkFURSBzdGF0aWMgYm9vbCBkZWZpbmVPd25Qcm9wZXJ0eShKU09i
amVjdCosIEV4ZWNTdGF0ZSosIGNvbnN0IElkZW50aWZpZXImIHByb3BlcnR5TmFtZSwgUHJvcGVy
dHlEZXNjcmlwdG9yJiwgYm9vbCBzaG91bGRUaHJvdyk7CisgICAgICAgIEpTX0VYUE9SVF9QUklW
QVRFIHN0YXRpYyBib29sIGdldE93blByb3BlcnR5U2xvdChKU0NlbGwqLCBFeGVjU3RhdGUqLCBQ
cm9wZXJ0eU5hbWUsIFByb3BlcnR5U2xvdCYpOworICAgICAgICBKU19FWFBPUlRfUFJJVkFURSBz
dGF0aWMgYm9vbCBnZXRPd25Qcm9wZXJ0eURlc2NyaXB0b3IoSlNPYmplY3QqLCBFeGVjU3RhdGUq
LCBQcm9wZXJ0eU5hbWUsIFByb3BlcnR5RGVzY3JpcHRvciYpOworICAgICAgICBib29sIGhhc093
blByb3BlcnR5Rm9yV3JpdGUoRXhlY1N0YXRlKiwgUHJvcGVydHlOYW1lKTsKKyAgICAgICAgSlNf
RVhQT1JUX1BSSVZBVEUgc3RhdGljIHZvaWQgcHV0KEpTQ2VsbCosIEV4ZWNTdGF0ZSosIFByb3Bl
cnR5TmFtZSwgSlNWYWx1ZSwgUHV0UHJvcGVydHlTbG90Jik7CisKKyAgICAgICAgSlNfRVhQT1JU
X1BSSVZBVEUgc3RhdGljIHZvaWQgcHV0RGlyZWN0VmlydHVhbChKU09iamVjdCosIEV4ZWNTdGF0
ZSosIFByb3BlcnR5TmFtZSwgSlNWYWx1ZSwgdW5zaWduZWQgYXR0cmlidXRlcyk7CisKKyAgICAg
ICAgSlNfRVhQT1JUX1BSSVZBVEUgc3RhdGljIHZvaWQgZGVmaW5lR2V0dGVyKEpTT2JqZWN0Kiwg
RXhlY1N0YXRlKiwgUHJvcGVydHlOYW1lLCBKU09iamVjdCogZ2V0dGVyRnVuYywgdW5zaWduZWQg
YXR0cmlidXRlcyk7CisgICAgICAgIEpTX0VYUE9SVF9QUklWQVRFIHN0YXRpYyB2b2lkIGRlZmlu
ZVNldHRlcihKU09iamVjdCosIEV4ZWNTdGF0ZSosIFByb3BlcnR5TmFtZSwgSlNPYmplY3QqIHNl
dHRlckZ1bmMsIHVuc2lnbmVkIGF0dHJpYnV0ZXMpOworICAgICAgICBKU19FWFBPUlRfUFJJVkFU
RSBzdGF0aWMgYm9vbCBkZWZpbmVPd25Qcm9wZXJ0eShKU09iamVjdCosIEV4ZWNTdGF0ZSosIFBy
b3BlcnR5TmFtZSwgUHJvcGVydHlEZXNjcmlwdG9yJiwgYm9vbCBzaG91bGRUaHJvdyk7CiAKICAg
ICAgICAgLy8gV2UgdXNlIHRoaXMgaW4gdGhlIGNvZGUgZ2VuZXJhdG9yIGFzIHdlIHBlcmZvcm0g
c3ltYm9sIHRhYmxlCiAgICAgICAgIC8vIGxvb2t1cHMgcHJpb3IgdG8gaW5pdGlhbGl6aW5nIHRo
ZSBwcm9wZXJ0aWVzCi0gICAgICAgIGJvb2wgc3ltYm9sVGFibGVIYXNQcm9wZXJ0eShjb25zdCBJ
ZGVudGlmaWVyJiBwcm9wZXJ0eU5hbWUpOworICAgICAgICBib29sIHN5bWJvbFRhYmxlSGFzUHJv
cGVydHkoUHJvcGVydHlOYW1lKTsKIAogICAgICAgICAvLyBUaGUgZm9sbG93aW5nIGFjY2Vzc29y
cyByZXR1cm4gcHJpc3RpbmUgdmFsdWVzLCBldmVuIGlmIGEgc2NyaXB0IAogICAgICAgICAvLyBy
ZXBsYWNlcyB0aGUgZ2xvYmFsIG9iamVjdCdzIGFzc29jaWF0ZWQgcHJvcGVydHkuCkBAIC0zNjUs
NyArMzY1LDcgQEAgbmFtZXNwYWNlIEpTQyB7CiAgICAgICAgIG1fcmVnaXN0ZXJBcnJheVNpemUg
PSBjb3VudDsKICAgICB9CiAKLSAgICBpbmxpbmUgYm9vbCBKU0dsb2JhbE9iamVjdDo6aGFzT3du
UHJvcGVydHlGb3JXcml0ZShFeGVjU3RhdGUqIGV4ZWMsIGNvbnN0IElkZW50aWZpZXImIHByb3Bl
cnR5TmFtZSkKKyAgICBpbmxpbmUgYm9vbCBKU0dsb2JhbE9iamVjdDo6aGFzT3duUHJvcGVydHlG
b3JXcml0ZShFeGVjU3RhdGUqIGV4ZWMsIFByb3BlcnR5TmFtZSBwcm9wZXJ0eU5hbWUpCiAgICAg
ewogICAgICAgICBQcm9wZXJ0eVNsb3Qgc2xvdDsKICAgICAgICAgaWYgKEpTVmFyaWFibGVPYmpl
Y3Q6OmdldE93blByb3BlcnR5U2xvdCh0aGlzLCBleGVjLCBwcm9wZXJ0eU5hbWUsIHNsb3QpKQpA
QCAtMzc0LDcgKzM3NCw3IEBAIG5hbWVzcGFjZSBKU0MgewogICAgICAgICByZXR1cm4gc3ltYm9s
VGFibGVHZXQocHJvcGVydHlOYW1lLCBzbG90LCBzbG90SXNXcml0ZWFibGUpOwogICAgIH0KIAot
ICAgIGlubGluZSBib29sIEpTR2xvYmFsT2JqZWN0OjpzeW1ib2xUYWJsZUhhc1Byb3BlcnR5KGNv
bnN0IElkZW50aWZpZXImIHByb3BlcnR5TmFtZSkKKyAgICBpbmxpbmUgYm9vbCBKU0dsb2JhbE9i
amVjdDo6c3ltYm9sVGFibGVIYXNQcm9wZXJ0eShQcm9wZXJ0eU5hbWUgcHJvcGVydHlOYW1lKQog
ICAgIHsKICAgICAgICAgU3ltYm9sVGFibGVFbnRyeSBlbnRyeSA9IHN5bWJvbFRhYmxlKCkuaW5s
aW5lR2V0KHByb3BlcnR5TmFtZS5pbXBsKCkpOwogICAgICAgICByZXR1cm4gIWVudHJ5LmlzTnVs
bCgpOwpJbmRleDogU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvSlNOb3RBbk9iamVjdC5j
cHAKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PQotLS0gU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvSlNOb3RBbk9i
amVjdC5jcHAJKHJldmlzaW9uIDExNjY2NykKKysrIFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50
aW1lL0pTTm90QW5PYmplY3QuY3BwCSh3b3JraW5nIGNvcHkpCkBAIC00Nyw3ICs0Nyw3IEBAIEpT
VmFsdWUgSlNOb3RBbk9iamVjdDo6ZGVmYXVsdFZhbHVlKGNvbnMKIH0KIAogLy8gSlNPYmplY3Qg
bWV0aG9kcwotYm9vbCBKU05vdEFuT2JqZWN0OjpnZXRPd25Qcm9wZXJ0eVNsb3QoSlNDZWxsKiwg
RXhlY1N0YXRlKiBleGVjLCBjb25zdCBJZGVudGlmaWVyJiwgUHJvcGVydHlTbG90JikKK2Jvb2wg
SlNOb3RBbk9iamVjdDo6Z2V0T3duUHJvcGVydHlTbG90KEpTQ2VsbCosIEV4ZWNTdGF0ZSogZXhl
YywgUHJvcGVydHlOYW1lLCBQcm9wZXJ0eVNsb3QmKQogewogICAgIEFTU0VSVF9VTlVTRUQoZXhl
YywgZXhlYy0+aGFkRXhjZXB0aW9uKCkpOwogICAgIHJldHVybiBmYWxzZTsKQEAgLTU5LDEzICs1
OSwxMyBAQCBib29sIEpTTm90QW5PYmplY3Q6OmdldE93blByb3BlcnR5U2xvdEJ5CiAgICAgcmV0
dXJuIGZhbHNlOwogfQogCi1ib29sIEpTTm90QW5PYmplY3Q6OmdldE93blByb3BlcnR5RGVzY3Jp
cHRvcihKU09iamVjdCosIEV4ZWNTdGF0ZSogZXhlYywgY29uc3QgSWRlbnRpZmllciYsIFByb3Bl
cnR5RGVzY3JpcHRvciYpCitib29sIEpTTm90QW5PYmplY3Q6OmdldE93blByb3BlcnR5RGVzY3Jp
cHRvcihKU09iamVjdCosIEV4ZWNTdGF0ZSogZXhlYywgUHJvcGVydHlOYW1lLCBQcm9wZXJ0eURl
c2NyaXB0b3ImKQogewogICAgIEFTU0VSVF9VTlVTRUQoZXhlYywgZXhlYy0+aGFkRXhjZXB0aW9u
KCkpOwogICAgIHJldHVybiBmYWxzZTsKIH0KIAotdm9pZCBKU05vdEFuT2JqZWN0OjpwdXQoSlND
ZWxsKiwgRXhlY1N0YXRlKiBleGVjLCBjb25zdCBJZGVudGlmaWVyJiAsIEpTVmFsdWUsIFB1dFBy
b3BlcnR5U2xvdCYpCit2b2lkIEpTTm90QW5PYmplY3Q6OnB1dChKU0NlbGwqLCBFeGVjU3RhdGUq
IGV4ZWMsIFByb3BlcnR5TmFtZSAsIEpTVmFsdWUsIFB1dFByb3BlcnR5U2xvdCYpCiB7CiAgICAg
QVNTRVJUX1VOVVNFRChleGVjLCBleGVjLT5oYWRFeGNlcHRpb24oKSk7CiB9CkBAIC03NSw3ICs3
NSw3IEBAIHZvaWQgSlNOb3RBbk9iamVjdDo6cHV0QnlJbmRleChKU0NlbGwqLCAKICAgICBBU1NF
UlRfVU5VU0VEKGV4ZWMsIGV4ZWMtPmhhZEV4Y2VwdGlvbigpKTsKIH0KIAotYm9vbCBKU05vdEFu
T2JqZWN0OjpkZWxldGVQcm9wZXJ0eShKU0NlbGwqLCBFeGVjU3RhdGUqIGV4ZWMsIGNvbnN0IElk
ZW50aWZpZXImKQorYm9vbCBKU05vdEFuT2JqZWN0OjpkZWxldGVQcm9wZXJ0eShKU0NlbGwqLCBF
eGVjU3RhdGUqIGV4ZWMsIFByb3BlcnR5TmFtZSkKIHsKICAgICBBU1NFUlRfVU5VU0VEKGV4ZWMs
IGV4ZWMtPmhhZEV4Y2VwdGlvbigpKTsKICAgICByZXR1cm4gZmFsc2U7CkluZGV4OiBTb3VyY2Uv
SmF2YVNjcmlwdENvcmUvcnVudGltZS9KU05vdEFuT2JqZWN0LmgKPT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291
cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvSlNOb3RBbk9iamVjdC5oCShyZXZpc2lvbiAxMTY2
NjcpCisrKyBTb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9KU05vdEFuT2JqZWN0LmgJKHdv
cmtpbmcgY29weSkKQEAgLTY4LDE0ICs2OCwxNCBAQCBuYW1lc3BhY2UgSlNDIHsKICAgICAgICAg
c3RhdGljIEpTVmFsdWUgZGVmYXVsdFZhbHVlKGNvbnN0IEpTT2JqZWN0KiwgRXhlY1N0YXRlKiwg
UHJlZmVycmVkUHJpbWl0aXZlVHlwZSk7CiAKICAgICAgICAgLy8gSlNPYmplY3QgbWV0aG9kcwot
ICAgICAgICBzdGF0aWMgYm9vbCBnZXRPd25Qcm9wZXJ0eVNsb3QoSlNDZWxsKiwgRXhlY1N0YXRl
KiwgY29uc3QgSWRlbnRpZmllciYgcHJvcGVydHlOYW1lLCBQcm9wZXJ0eVNsb3QmKTsKKyAgICAg
ICAgc3RhdGljIGJvb2wgZ2V0T3duUHJvcGVydHlTbG90KEpTQ2VsbCosIEV4ZWNTdGF0ZSosIFBy
b3BlcnR5TmFtZSwgUHJvcGVydHlTbG90Jik7CiAgICAgICAgIHN0YXRpYyBib29sIGdldE93blBy
b3BlcnR5U2xvdEJ5SW5kZXgoSlNDZWxsKiwgRXhlY1N0YXRlKiwgdW5zaWduZWQgcHJvcGVydHlO
YW1lLCBQcm9wZXJ0eVNsb3QmKTsKLSAgICAgICAgc3RhdGljIGJvb2wgZ2V0T3duUHJvcGVydHlE
ZXNjcmlwdG9yKEpTT2JqZWN0KiwgRXhlY1N0YXRlKiwgY29uc3QgSWRlbnRpZmllciYsIFByb3Bl
cnR5RGVzY3JpcHRvciYpOworICAgICAgICBzdGF0aWMgYm9vbCBnZXRPd25Qcm9wZXJ0eURlc2Ny
aXB0b3IoSlNPYmplY3QqLCBFeGVjU3RhdGUqLCBQcm9wZXJ0eU5hbWUsIFByb3BlcnR5RGVzY3Jp
cHRvciYpOwogCi0gICAgICAgIHN0YXRpYyB2b2lkIHB1dChKU0NlbGwqLCBFeGVjU3RhdGUqLCBj
b25zdCBJZGVudGlmaWVyJiBwcm9wZXJ0eU5hbWUsIEpTVmFsdWUsIFB1dFByb3BlcnR5U2xvdCYp
OworICAgICAgICBzdGF0aWMgdm9pZCBwdXQoSlNDZWxsKiwgRXhlY1N0YXRlKiwgUHJvcGVydHlO
YW1lLCBKU1ZhbHVlLCBQdXRQcm9wZXJ0eVNsb3QmKTsKICAgICAgICAgc3RhdGljIHZvaWQgcHV0
QnlJbmRleChKU0NlbGwqLCBFeGVjU3RhdGUqLCB1bnNpZ25lZCBwcm9wZXJ0eU5hbWUsIEpTVmFs
dWUsIGJvb2wgc2hvdWxkVGhyb3cpOwogCi0gICAgICAgIHN0YXRpYyBib29sIGRlbGV0ZVByb3Bl
cnR5KEpTQ2VsbCosIEV4ZWNTdGF0ZSosIGNvbnN0IElkZW50aWZpZXImIHByb3BlcnR5TmFtZSk7
CisgICAgICAgIHN0YXRpYyBib29sIGRlbGV0ZVByb3BlcnR5KEpTQ2VsbCosIEV4ZWNTdGF0ZSos
IFByb3BlcnR5TmFtZSk7CiAgICAgICAgIHN0YXRpYyBib29sIGRlbGV0ZVByb3BlcnR5QnlJbmRl
eChKU0NlbGwqLCBFeGVjU3RhdGUqLCB1bnNpZ25lZCBwcm9wZXJ0eU5hbWUpOwogCiAgICAgICAg
IHN0YXRpYyB2b2lkIGdldE93blByb3BlcnR5TmFtZXMoSlNPYmplY3QqLCBFeGVjU3RhdGUqLCBQ
cm9wZXJ0eU5hbWVBcnJheSYsIEVudW1lcmF0aW9uTW9kZSk7CkluZGV4OiBTb3VyY2UvSmF2YVNj
cmlwdENvcmUvcnVudGltZS9KU09OT2JqZWN0LmNwcAo9PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvSmF2
YVNjcmlwdENvcmUvcnVudGltZS9KU09OT2JqZWN0LmNwcAkocmV2aXNpb24gMTE2NjY3KQorKysg
U291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvSlNPTk9iamVjdC5jcHAJKHdvcmtpbmcgY29w
eSkKQEAgLTU5NSwxMiArNTk1LDEyIEBAIGNvbnN0IENsYXNzSW5mbyBKU09OT2JqZWN0OjpzX2lu
Zm8gPSB7ICIKIAogLy8gRUNNQSAxNS44CiAKLWJvb2wgSlNPTk9iamVjdDo6Z2V0T3duUHJvcGVy
dHlTbG90KEpTQ2VsbCogY2VsbCwgRXhlY1N0YXRlKiBleGVjLCBjb25zdCBJZGVudGlmaWVyJiBw
cm9wZXJ0eU5hbWUsIFByb3BlcnR5U2xvdCYgc2xvdCkKK2Jvb2wgSlNPTk9iamVjdDo6Z2V0T3du
UHJvcGVydHlTbG90KEpTQ2VsbCogY2VsbCwgRXhlY1N0YXRlKiBleGVjLCBQcm9wZXJ0eU5hbWUg
cHJvcGVydHlOYW1lLCBQcm9wZXJ0eVNsb3QmIHNsb3QpCiB7CiAgICAgcmV0dXJuIGdldFN0YXRp
Y0Z1bmN0aW9uU2xvdDxKU09iamVjdD4oZXhlYywgRXhlY1N0YXRlOjpqc29uVGFibGUoZXhlYyks
IGpzQ2FzdDxKU09OT2JqZWN0Kj4oY2VsbCksIHByb3BlcnR5TmFtZSwgc2xvdCk7CiB9CiAKLWJv
b2wgSlNPTk9iamVjdDo6Z2V0T3duUHJvcGVydHlEZXNjcmlwdG9yKEpTT2JqZWN0KiBvYmplY3Qs
IEV4ZWNTdGF0ZSogZXhlYywgY29uc3QgSWRlbnRpZmllciYgcHJvcGVydHlOYW1lLCBQcm9wZXJ0
eURlc2NyaXB0b3ImIGRlc2NyaXB0b3IpCitib29sIEpTT05PYmplY3Q6OmdldE93blByb3BlcnR5
RGVzY3JpcHRvcihKU09iamVjdCogb2JqZWN0LCBFeGVjU3RhdGUqIGV4ZWMsIFByb3BlcnR5TmFt
ZSBwcm9wZXJ0eU5hbWUsIFByb3BlcnR5RGVzY3JpcHRvciYgZGVzY3JpcHRvcikKIHsKICAgICBy
ZXR1cm4gZ2V0U3RhdGljRnVuY3Rpb25EZXNjcmlwdG9yPEpTT2JqZWN0PihleGVjLCBFeGVjU3Rh
dGU6Ompzb25UYWJsZShleGVjKSwganNDYXN0PEpTT05PYmplY3QqPihvYmplY3QpLCBwcm9wZXJ0
eU5hbWUsIGRlc2NyaXB0b3IpOwogfQpJbmRleDogU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRp
bWUvSlNPTk9iamVjdC5oCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50
aW1lL0pTT05PYmplY3QuaAkocmV2aXNpb24gMTE2NjY3KQorKysgU291cmNlL0phdmFTY3JpcHRD
b3JlL3J1bnRpbWUvSlNPTk9iamVjdC5oCSh3b3JraW5nIGNvcHkpCkBAIC01Niw4ICs1Niw4IEBA
IG5hbWVzcGFjZSBKU0MgewogCiAgICAgcHJpdmF0ZToKICAgICAgICAgSlNPTk9iamVjdChKU0ds
b2JhbE9iamVjdCosIFN0cnVjdHVyZSopOwotICAgICAgICBzdGF0aWMgYm9vbCBnZXRPd25Qcm9w
ZXJ0eVNsb3QoSlNDZWxsKiwgRXhlY1N0YXRlKiwgY29uc3QgSWRlbnRpZmllciYsIFByb3BlcnR5
U2xvdCYpOwotICAgICAgICBzdGF0aWMgYm9vbCBnZXRPd25Qcm9wZXJ0eURlc2NyaXB0b3IoSlNP
YmplY3QqLCBFeGVjU3RhdGUqLCBjb25zdCBJZGVudGlmaWVyJiwgUHJvcGVydHlEZXNjcmlwdG9y
Jik7CisgICAgICAgIHN0YXRpYyBib29sIGdldE93blByb3BlcnR5U2xvdChKU0NlbGwqLCBFeGVj
U3RhdGUqLCBQcm9wZXJ0eU5hbWUsIFByb3BlcnR5U2xvdCYpOworICAgICAgICBzdGF0aWMgYm9v
bCBnZXRPd25Qcm9wZXJ0eURlc2NyaXB0b3IoSlNPYmplY3QqLCBFeGVjU3RhdGUqLCBQcm9wZXJ0
eU5hbWUsIFByb3BlcnR5RGVzY3JpcHRvciYpOwogCiAgICAgfTsKIApJbmRleDogU291cmNlL0ph
dmFTY3JpcHRDb3JlL3J1bnRpbWUvSlNPYmplY3QuY3BwCj09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9K
YXZhU2NyaXB0Q29yZS9ydW50aW1lL0pTT2JqZWN0LmNwcAkocmV2aXNpb24gMTE2NjY3KQorKysg
U291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvSlNPYmplY3QuY3BwCSh3b3JraW5nIGNvcHkp
CkBAIC0xMjAsNyArMTIwLDcgQEAgYm9vbCBKU09iamVjdDo6Z2V0T3duUHJvcGVydHlTbG90QnlJ
bmRleAogfQogCiAvLyBFQ01BIDguNi4yLjIKLXZvaWQgSlNPYmplY3Q6OnB1dChKU0NlbGwqIGNl
bGwsIEV4ZWNTdGF0ZSogZXhlYywgY29uc3QgSWRlbnRpZmllciYgcHJvcGVydHlOYW1lLCBKU1Zh
bHVlIHZhbHVlLCBQdXRQcm9wZXJ0eVNsb3QmIHNsb3QpCit2b2lkIEpTT2JqZWN0OjpwdXQoSlND
ZWxsKiBjZWxsLCBFeGVjU3RhdGUqIGV4ZWMsIFByb3BlcnR5TmFtZSBwcm9wZXJ0eU5hbWUsIEpT
VmFsdWUgdmFsdWUsIFB1dFByb3BlcnR5U2xvdCYgc2xvdCkKIHsKICAgICBKU09iamVjdCogdGhp
c09iamVjdCA9IGpzQ2FzdDxKU09iamVjdCo+KGNlbGwpOwogICAgIEFTU0VSVCh2YWx1ZSk7CkBA
IC0xOTIsNyArMTkyLDcgQEAgdm9pZCBKU09iamVjdDo6cHV0QnlJbmRleChKU0NlbGwqIGNlbGws
IAogICAgIHRoaXNPYmplY3QtPm1ldGhvZFRhYmxlKCktPnB1dCh0aGlzT2JqZWN0LCBleGVjLCBJ
ZGVudGlmaWVyOjpmcm9tKGV4ZWMsIHByb3BlcnR5TmFtZSksIHZhbHVlLCBzbG90KTsKIH0KIAot
dm9pZCBKU09iamVjdDo6cHV0RGlyZWN0VmlydHVhbChKU09iamVjdCogb2JqZWN0LCBFeGVjU3Rh
dGUqIGV4ZWMsIGNvbnN0IElkZW50aWZpZXImIHByb3BlcnR5TmFtZSwgSlNWYWx1ZSB2YWx1ZSwg
dW5zaWduZWQgYXR0cmlidXRlcykKK3ZvaWQgSlNPYmplY3Q6OnB1dERpcmVjdFZpcnR1YWwoSlNP
YmplY3QqIG9iamVjdCwgRXhlY1N0YXRlKiBleGVjLCBQcm9wZXJ0eU5hbWUgcHJvcGVydHlOYW1l
LCBKU1ZhbHVlIHZhbHVlLCB1bnNpZ25lZCBhdHRyaWJ1dGVzKQogewogICAgIEFTU0VSVCghdmFs
dWUuaXNHZXR0ZXJTZXR0ZXIoKSAmJiAhKGF0dHJpYnV0ZXMgJiBBY2Nlc3NvcikpOwogICAgIFB1
dFByb3BlcnR5U2xvdCBzbG90OwpAQCAtMjIxLDcgKzIyMSw3IEBAIGJvb2wgSlNPYmplY3Q6OmFs
bG93c0FjY2Vzc0Zyb20oRXhlY1N0YXQKICAgICByZXR1cm4gZ2xvYmFsT2JqZWN0LT5nbG9iYWxP
YmplY3RNZXRob2RUYWJsZSgpLT5hbGxvd3NBY2Nlc3NGcm9tKGdsb2JhbE9iamVjdCwgZXhlYyk7
CiB9CiAKLXZvaWQgSlNPYmplY3Q6OnB1dERpcmVjdEFjY2Vzc29yKEpTR2xvYmFsRGF0YSYgZ2xv
YmFsRGF0YSwgY29uc3QgSWRlbnRpZmllciYgcHJvcGVydHlOYW1lLCBKU1ZhbHVlIHZhbHVlLCB1
bnNpZ25lZCBhdHRyaWJ1dGVzKQordm9pZCBKU09iamVjdDo6cHV0RGlyZWN0QWNjZXNzb3IoSlNH
bG9iYWxEYXRhJiBnbG9iYWxEYXRhLCBQcm9wZXJ0eU5hbWUgcHJvcGVydHlOYW1lLCBKU1ZhbHVl
IHZhbHVlLCB1bnNpZ25lZCBhdHRyaWJ1dGVzKQogewogICAgIEFTU0VSVCh2YWx1ZS5pc0dldHRl
clNldHRlcigpICYmIChhdHRyaWJ1dGVzICYgQWNjZXNzb3IpKTsKIApAQCAtMjQwLDcgKzI0MCw3
IEBAIHZvaWQgSlNPYmplY3Q6OnB1dERpcmVjdEFjY2Vzc29yKEpTR2xvYmEKICAgICBzdHJ1Y3R1
cmUoKS0+c2V0SGFzR2V0dGVyU2V0dGVyUHJvcGVydGllcyhwcm9wZXJ0eU5hbWUgPT0gZ2xvYmFs
RGF0YS5wcm9wZXJ0eU5hbWVzLT51bmRlcnNjb3JlUHJvdG8pOwogfQogCi1ib29sIEpTT2JqZWN0
OjpoYXNQcm9wZXJ0eShFeGVjU3RhdGUqIGV4ZWMsIGNvbnN0IElkZW50aWZpZXImIHByb3BlcnR5
TmFtZSkgY29uc3QKK2Jvb2wgSlNPYmplY3Q6Omhhc1Byb3BlcnR5KEV4ZWNTdGF0ZSogZXhlYywg
UHJvcGVydHlOYW1lIHByb3BlcnR5TmFtZSkgY29uc3QKIHsKICAgICBQcm9wZXJ0eVNsb3Qgc2xv
dDsKICAgICByZXR1cm4gY29uc3RfY2FzdDxKU09iamVjdCo+KHRoaXMpLT5nZXRQcm9wZXJ0eVNs
b3QoZXhlYywgcHJvcGVydHlOYW1lLCBzbG90KTsKQEAgLTI1Myw3ICsyNTMsNyBAQCBib29sIEpT
T2JqZWN0OjpoYXNQcm9wZXJ0eShFeGVjU3RhdGUqIGV4CiB9CiAKIC8vIEVDTUEgOC42LjIuNQot
Ym9vbCBKU09iamVjdDo6ZGVsZXRlUHJvcGVydHkoSlNDZWxsKiBjZWxsLCBFeGVjU3RhdGUqIGV4
ZWMsIGNvbnN0IElkZW50aWZpZXImIHByb3BlcnR5TmFtZSkKK2Jvb2wgSlNPYmplY3Q6OmRlbGV0
ZVByb3BlcnR5KEpTQ2VsbCogY2VsbCwgRXhlY1N0YXRlKiBleGVjLCBQcm9wZXJ0eU5hbWUgcHJv
cGVydHlOYW1lKQogewogICAgIEpTT2JqZWN0KiB0aGlzT2JqZWN0ID0ganNDYXN0PEpTT2JqZWN0
Kj4oY2VsbCk7CiAKQEAgLTI3OCw3ICsyNzgsNyBAQCBib29sIEpTT2JqZWN0OjpkZWxldGVQcm9w
ZXJ0eShKU0NlbGwqIGNlCiAgICAgcmV0dXJuIHRydWU7CiB9CiAKLWJvb2wgSlNPYmplY3Q6Omhh
c093blByb3BlcnR5KEV4ZWNTdGF0ZSogZXhlYywgY29uc3QgSWRlbnRpZmllciYgcHJvcGVydHlO
YW1lKSBjb25zdAorYm9vbCBKU09iamVjdDo6aGFzT3duUHJvcGVydHkoRXhlY1N0YXRlKiBleGVj
LCBQcm9wZXJ0eU5hbWUgcHJvcGVydHlOYW1lKSBjb25zdAogewogICAgIFByb3BlcnR5U2xvdCBz
bG90OwogICAgIHJldHVybiBjb25zdF9jYXN0PEpTT2JqZWN0Kj4odGhpcyktPm1ldGhvZFRhYmxl
KCktPmdldE93blByb3BlcnR5U2xvdChjb25zdF9jYXN0PEpTT2JqZWN0Kj4odGhpcyksIGV4ZWMs
IHByb3BlcnR5TmFtZSwgc2xvdCk7CkBAIC0yOTAsNyArMjkwLDcgQEAgYm9vbCBKU09iamVjdDo6
ZGVsZXRlUHJvcGVydHlCeUluZGV4KEpTQwogICAgIHJldHVybiB0aGlzT2JqZWN0LT5tZXRob2RU
YWJsZSgpLT5kZWxldGVQcm9wZXJ0eSh0aGlzT2JqZWN0LCBleGVjLCBJZGVudGlmaWVyOjpmcm9t
KGV4ZWMsIHByb3BlcnR5TmFtZSkpOwogfQogCi1zdGF0aWMgQUxXQVlTX0lOTElORSBKU1ZhbHVl
IGNhbGxEZWZhdWx0VmFsdWVGdW5jdGlvbihFeGVjU3RhdGUqIGV4ZWMsIGNvbnN0IEpTT2JqZWN0
KiBvYmplY3QsIGNvbnN0IElkZW50aWZpZXImIHByb3BlcnR5TmFtZSkKK3N0YXRpYyBBTFdBWVNf
SU5MSU5FIEpTVmFsdWUgY2FsbERlZmF1bHRWYWx1ZUZ1bmN0aW9uKEV4ZWNTdGF0ZSogZXhlYywg
Y29uc3QgSlNPYmplY3QqIG9iamVjdCwgUHJvcGVydHlOYW1lIHByb3BlcnR5TmFtZSkKIHsKICAg
ICBKU1ZhbHVlIGZ1bmN0aW9uID0gb2JqZWN0LT5nZXQoZXhlYywgcHJvcGVydHlOYW1lKTsKICAg
ICBDYWxsRGF0YSBjYWxsRGF0YTsKQEAgLTM0NCw3ICszNDQsNyBAQCBKU1ZhbHVlIEpTT2JqZWN0
OjpkZWZhdWx0VmFsdWUoY29uc3QgSlNPCiAgICAgcmV0dXJuIHRocm93RXJyb3IoZXhlYywgY3Jl
YXRlVHlwZUVycm9yKGV4ZWMsICJObyBkZWZhdWx0IHZhbHVlIikpOwogfQogCi1jb25zdCBIYXNo
RW50cnkqIEpTT2JqZWN0OjpmaW5kUHJvcGVydHlIYXNoRW50cnkoRXhlY1N0YXRlKiBleGVjLCBj
b25zdCBJZGVudGlmaWVyJiBwcm9wZXJ0eU5hbWUpIGNvbnN0Citjb25zdCBIYXNoRW50cnkqIEpT
T2JqZWN0OjpmaW5kUHJvcGVydHlIYXNoRW50cnkoRXhlY1N0YXRlKiBleGVjLCBQcm9wZXJ0eU5h
bWUgcHJvcGVydHlOYW1lKSBjb25zdAogewogICAgIGZvciAoY29uc3QgQ2xhc3NJbmZvKiBpbmZv
ID0gY2xhc3NJbmZvKCk7IGluZm87IGluZm8gPSBpbmZvLT5wYXJlbnRDbGFzcykgewogICAgICAg
ICBpZiAoY29uc3QgSGFzaFRhYmxlKiBwcm9wSGFzaFRhYmxlID0gaW5mby0+cHJvcEhhc2hUYWJs
ZShleGVjKSkgewpAQCAtMzgxLDcgKzM4MSw3IEBAIGJvb2wgSlNPYmplY3Q6OnByb3BlcnR5SXNF
bnVtZXJhYmxlKEV4ZWMKICAgICByZXR1cm4gZGVzY3JpcHRvci5lbnVtZXJhYmxlKCk7CiB9CiAK
LWJvb2wgSlNPYmplY3Q6OmdldFByb3BlcnR5U3BlY2lmaWNWYWx1ZShFeGVjU3RhdGUqIGV4ZWMs
IGNvbnN0IElkZW50aWZpZXImIHByb3BlcnR5TmFtZSwgSlNDZWxsKiYgc3BlY2lmaWNWYWx1ZSkg
Y29uc3QKK2Jvb2wgSlNPYmplY3Q6OmdldFByb3BlcnR5U3BlY2lmaWNWYWx1ZShFeGVjU3RhdGUq
IGV4ZWMsIFByb3BlcnR5TmFtZSBwcm9wZXJ0eU5hbWUsIEpTQ2VsbComIHNwZWNpZmljVmFsdWUp
IGNvbnN0CiB7CiAgICAgdW5zaWduZWQgYXR0cmlidXRlczsKICAgICBpZiAoc3RydWN0dXJlKCkt
PmdldChleGVjLT5nbG9iYWxEYXRhKCksIHByb3BlcnR5TmFtZSwgYXR0cmlidXRlcywgc3BlY2lm
aWNWYWx1ZSkgIT0gV1RGOjpub3RGb3VuZCkKQEAgLTUxMCw3ICs1MTAsNyBAQCB2b2lkIEpTT2Jq
ZWN0OjpyZWlmeVN0YXRpY0Z1bmN0aW9uc0ZvckRlCiAgICAgc3RydWN0dXJlKCktPnNldFN0YXRp
Y0Z1bmN0aW9uc1JlaWZpZWQoKTsKIH0KIAotdm9pZCBKU09iamVjdDo6cmVtb3ZlRGlyZWN0KEpT
R2xvYmFsRGF0YSYgZ2xvYmFsRGF0YSwgY29uc3QgSWRlbnRpZmllciYgcHJvcGVydHlOYW1lKQor
dm9pZCBKU09iamVjdDo6cmVtb3ZlRGlyZWN0KEpTR2xvYmFsRGF0YSYgZ2xvYmFsRGF0YSwgUHJv
cGVydHlOYW1lIHByb3BlcnR5TmFtZSkKIHsKICAgICBpZiAoc3RydWN0dXJlKCktPmdldChnbG9i
YWxEYXRhLCBwcm9wZXJ0eU5hbWUpID09IFdURjo6bm90Rm91bmQpCiAgICAgICAgIHJldHVybjsK
QEAgLTU4Myw3ICs1ODMsNyBAQCB2b2lkIEpTT2JqZWN0OjphbGxvY2F0ZVByb3BlcnR5U3RvcmFn
ZShKCiAgICAgbV9wcm9wZXJ0eVN0b3JhZ2Uuc2V0KGdsb2JhbERhdGEsIHRoaXMsIG5ld1Byb3Bl
cnR5U3RvcmFnZSk7CiB9CiAKLWJvb2wgSlNPYmplY3Q6OmdldE93blByb3BlcnR5RGVzY3JpcHRv
cihKU09iamVjdCogb2JqZWN0LCBFeGVjU3RhdGUqIGV4ZWMsIGNvbnN0IElkZW50aWZpZXImIHBy
b3BlcnR5TmFtZSwgUHJvcGVydHlEZXNjcmlwdG9yJiBkZXNjcmlwdG9yKQorYm9vbCBKU09iamVj
dDo6Z2V0T3duUHJvcGVydHlEZXNjcmlwdG9yKEpTT2JqZWN0KiBvYmplY3QsIEV4ZWNTdGF0ZSog
ZXhlYywgUHJvcGVydHlOYW1lIHByb3BlcnR5TmFtZSwgUHJvcGVydHlEZXNjcmlwdG9yJiBkZXNj
cmlwdG9yKQogewogICAgIHVuc2lnbmVkIGF0dHJpYnV0ZXMgPSAwOwogICAgIEpTQ2VsbCogY2Vs
bCA9IDA7CkBAIC01OTQsNyArNTk0LDcgQEAgYm9vbCBKU09iamVjdDo6Z2V0T3duUHJvcGVydHlE
ZXNjcmlwdG9yKAogICAgIHJldHVybiB0cnVlOwogfQogCi1ib29sIEpTT2JqZWN0OjpnZXRQcm9w
ZXJ0eURlc2NyaXB0b3IoRXhlY1N0YXRlKiBleGVjLCBjb25zdCBJZGVudGlmaWVyJiBwcm9wZXJ0
eU5hbWUsIFByb3BlcnR5RGVzY3JpcHRvciYgZGVzY3JpcHRvcikKK2Jvb2wgSlNPYmplY3Q6Omdl
dFByb3BlcnR5RGVzY3JpcHRvcihFeGVjU3RhdGUqIGV4ZWMsIFByb3BlcnR5TmFtZSBwcm9wZXJ0
eU5hbWUsIFByb3BlcnR5RGVzY3JpcHRvciYgZGVzY3JpcHRvcikKIHsKICAgICBKU09iamVjdCog
b2JqZWN0ID0gdGhpczsKICAgICB3aGlsZSAodHJ1ZSkgewpAQCAtNjA3LDcgKzYwNyw3IEBAIGJv
b2wgSlNPYmplY3Q6OmdldFByb3BlcnR5RGVzY3JpcHRvcihFeGUKICAgICB9CiB9CiAKLXN0YXRp
YyBib29sIHB1dERlc2NyaXB0b3IoRXhlY1N0YXRlKiBleGVjLCBKU09iamVjdCogdGFyZ2V0LCBj
b25zdCBJZGVudGlmaWVyJiBwcm9wZXJ0eU5hbWUsIFByb3BlcnR5RGVzY3JpcHRvciYgZGVzY3Jp
cHRvciwgdW5zaWduZWQgYXR0cmlidXRlcywgY29uc3QgUHJvcGVydHlEZXNjcmlwdG9yJiBvbGRE
ZXNjcmlwdG9yKQorc3RhdGljIGJvb2wgcHV0RGVzY3JpcHRvcihFeGVjU3RhdGUqIGV4ZWMsIEpT
T2JqZWN0KiB0YXJnZXQsIFByb3BlcnR5TmFtZSBwcm9wZXJ0eU5hbWUsIFByb3BlcnR5RGVzY3Jp
cHRvciYgZGVzY3JpcHRvciwgdW5zaWduZWQgYXR0cmlidXRlcywgY29uc3QgUHJvcGVydHlEZXNj
cmlwdG9yJiBvbGREZXNjcmlwdG9yKQogewogICAgIGlmIChkZXNjcmlwdG9yLmlzR2VuZXJpY0Rl
c2NyaXB0b3IoKSB8fCBkZXNjcmlwdG9yLmlzRGF0YURlc2NyaXB0b3IoKSkgewogICAgICAgICBp
ZiAoZGVzY3JpcHRvci5pc0dlbmVyaWNEZXNjcmlwdG9yKCkgJiYgb2xkRGVzY3JpcHRvci5pc0Fj
Y2Vzc29yRGVzY3JpcHRvcigpKSB7CkBAIC02NjIsNyArNjYyLDcgQEAgcHJpdmF0ZToKICAgICBK
U0dsb2JhbERhdGEmIG1fZ2xvYmFsRGF0YTsKIH07CiAKLWJvb2wgSlNPYmplY3Q6OmRlZmluZU93
blByb3BlcnR5KEpTT2JqZWN0KiBvYmplY3QsIEV4ZWNTdGF0ZSogZXhlYywgY29uc3QgSWRlbnRp
ZmllciYgcHJvcGVydHlOYW1lLCBQcm9wZXJ0eURlc2NyaXB0b3ImIGRlc2NyaXB0b3IsIGJvb2wg
dGhyb3dFeGNlcHRpb24pCitib29sIEpTT2JqZWN0OjpkZWZpbmVPd25Qcm9wZXJ0eShKU09iamVj
dCogb2JqZWN0LCBFeGVjU3RhdGUqIGV4ZWMsIFByb3BlcnR5TmFtZSBwcm9wZXJ0eU5hbWUsIFBy
b3BlcnR5RGVzY3JpcHRvciYgZGVzY3JpcHRvciwgYm9vbCB0aHJvd0V4Y2VwdGlvbikKIHsKICAg
ICAvLyBUcmFjayBvbiB0aGUgZ2xvYmFsZGF0YSB0aGF0IHdlJ3JlIGluIGRlZmluZSBwcm9wZXJ0
eS4KICAgICAvLyBDdXJyZW50bHkgRGVmaW5lT3duUHJvcGVydHkgdXNlcyBkZWxldGUgdG8gcmVt
b3ZlIHByb3BlcnRpZXMgd2hlbiB0aGV5IGFyZSBiZWluZyByZXBsYWNlZApJbmRleDogU291cmNl
L0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvSlNPYmplY3QuaAo9PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2Uv
SmF2YVNjcmlwdENvcmUvcnVudGltZS9KU09iamVjdC5oCShyZXZpc2lvbiAxMTY2NjcpCisrKyBT
b3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9KU09iamVjdC5oCSh3b3JraW5nIGNvcHkpCkBA
IC03NSw3ICs3NSw3IEBAIG5hbWVzcGFjZSBKU0MgewogICAgICAgICBmcmllbmQgY2xhc3MgSklU
OwogICAgICAgICBmcmllbmQgY2xhc3MgSlNDZWxsOwogICAgICAgICBmcmllbmQgY2xhc3MgTWFy
a2VkQmxvY2s7Ci0gICAgICAgIEpTX0VYUE9SVF9QUklWQVRFIGZyaWVuZCBib29sIHNldFVwU3Rh
dGljRnVuY3Rpb25TbG90KEV4ZWNTdGF0ZSogZXhlYywgY29uc3QgSGFzaEVudHJ5KiBlbnRyeSwg
SlNPYmplY3QqIHRoaXNPYmosIGNvbnN0IElkZW50aWZpZXImIHByb3BlcnR5TmFtZSwgUHJvcGVy
dHlTbG90JiBzbG90KTsKKyAgICAgICAgSlNfRVhQT1JUX1BSSVZBVEUgZnJpZW5kIGJvb2wgc2V0
VXBTdGF0aWNGdW5jdGlvblNsb3QoRXhlY1N0YXRlKiwgY29uc3QgSGFzaEVudHJ5KiwgSlNPYmpl
Y3QqLCBQcm9wZXJ0eU5hbWUsIFByb3BlcnR5U2xvdCYpOwogCiAgICAgICAgIGVudW0gUHV0TW9k
ZSB7CiAgICAgICAgICAgICBQdXRNb2RlUHV0LApAQCAtOTUsMzkgKzk1LDM5IEBAIG5hbWVzcGFj
ZSBKU0MgewogICAgICAgICAKICAgICAgICAgU3RydWN0dXJlKiBpbmhlcml0b3JJRChKU0dsb2Jh
bERhdGEmKTsKIAotICAgICAgICBKU1ZhbHVlIGdldChFeGVjU3RhdGUqLCBjb25zdCBJZGVudGlm
aWVyJiBwcm9wZXJ0eU5hbWUpIGNvbnN0OworICAgICAgICBKU1ZhbHVlIGdldChFeGVjU3RhdGUq
LCBQcm9wZXJ0eU5hbWUpIGNvbnN0OwogICAgICAgICBKU1ZhbHVlIGdldChFeGVjU3RhdGUqLCB1
bnNpZ25lZCBwcm9wZXJ0eU5hbWUpIGNvbnN0OwogCi0gICAgICAgIGJvb2wgZ2V0UHJvcGVydHlT
bG90KEV4ZWNTdGF0ZSosIGNvbnN0IElkZW50aWZpZXImIHByb3BlcnR5TmFtZSwgUHJvcGVydHlT
bG90Jik7CisgICAgICAgIGJvb2wgZ2V0UHJvcGVydHlTbG90KEV4ZWNTdGF0ZSosIFByb3BlcnR5
TmFtZSwgUHJvcGVydHlTbG90Jik7CiAgICAgICAgIGJvb2wgZ2V0UHJvcGVydHlTbG90KEV4ZWNT
dGF0ZSosIHVuc2lnbmVkIHByb3BlcnR5TmFtZSwgUHJvcGVydHlTbG90Jik7Ci0gICAgICAgIEpT
X0VYUE9SVF9QUklWQVRFIGJvb2wgZ2V0UHJvcGVydHlEZXNjcmlwdG9yKEV4ZWNTdGF0ZSosIGNv
bnN0IElkZW50aWZpZXImIHByb3BlcnR5TmFtZSwgUHJvcGVydHlEZXNjcmlwdG9yJik7CisgICAg
ICAgIEpTX0VYUE9SVF9QUklWQVRFIGJvb2wgZ2V0UHJvcGVydHlEZXNjcmlwdG9yKEV4ZWNTdGF0
ZSosIFByb3BlcnR5TmFtZSwgUHJvcGVydHlEZXNjcmlwdG9yJik7CiAKLSAgICAgICAgc3RhdGlj
IGJvb2wgZ2V0T3duUHJvcGVydHlTbG90KEpTQ2VsbCosIEV4ZWNTdGF0ZSosIGNvbnN0IElkZW50
aWZpZXImIHByb3BlcnR5TmFtZSwgUHJvcGVydHlTbG90Jik7CisgICAgICAgIHN0YXRpYyBib29s
IGdldE93blByb3BlcnR5U2xvdChKU0NlbGwqLCBFeGVjU3RhdGUqLCBQcm9wZXJ0eU5hbWUsIFBy
b3BlcnR5U2xvdCYpOwogICAgICAgICBKU19FWFBPUlRfUFJJVkFURSBzdGF0aWMgYm9vbCBnZXRP
d25Qcm9wZXJ0eVNsb3RCeUluZGV4KEpTQ2VsbCosIEV4ZWNTdGF0ZSosIHVuc2lnbmVkIHByb3Bl
cnR5TmFtZSwgUHJvcGVydHlTbG90Jik7Ci0gICAgICAgIEpTX0VYUE9SVF9QUklWQVRFIHN0YXRp
YyBib29sIGdldE93blByb3BlcnR5RGVzY3JpcHRvcihKU09iamVjdCosIEV4ZWNTdGF0ZSosIGNv
bnN0IElkZW50aWZpZXImLCBQcm9wZXJ0eURlc2NyaXB0b3ImKTsKKyAgICAgICAgSlNfRVhQT1JU
X1BSSVZBVEUgc3RhdGljIGJvb2wgZ2V0T3duUHJvcGVydHlEZXNjcmlwdG9yKEpTT2JqZWN0Kiwg
RXhlY1N0YXRlKiwgUHJvcGVydHlOYW1lLCBQcm9wZXJ0eURlc2NyaXB0b3ImKTsKIAogICAgICAg
ICBib29sIGFsbG93c0FjY2Vzc0Zyb20oRXhlY1N0YXRlKik7CiAKLSAgICAgICAgSlNfRVhQT1JU
X1BSSVZBVEUgc3RhdGljIHZvaWQgcHV0KEpTQ2VsbCosIEV4ZWNTdGF0ZSosIGNvbnN0IElkZW50
aWZpZXImIHByb3BlcnR5TmFtZSwgSlNWYWx1ZSwgUHV0UHJvcGVydHlTbG90Jik7CisgICAgICAg
IEpTX0VYUE9SVF9QUklWQVRFIHN0YXRpYyB2b2lkIHB1dChKU0NlbGwqLCBFeGVjU3RhdGUqLCBQ
cm9wZXJ0eU5hbWUsIEpTVmFsdWUsIFB1dFByb3BlcnR5U2xvdCYpOwogICAgICAgICBKU19FWFBP
UlRfUFJJVkFURSBzdGF0aWMgdm9pZCBwdXRCeUluZGV4KEpTQ2VsbCosIEV4ZWNTdGF0ZSosIHVu
c2lnbmVkIHByb3BlcnR5TmFtZSwgSlNWYWx1ZSwgYm9vbCBzaG91bGRUaHJvdyk7CiAKICAgICAg
ICAgLy8gcHV0RGlyZWN0IGlzIGVmZmVjdGl2ZWx5IGFuIHVuY2hlY2tlZCB2ZXNpb24gb2YgJ2Rl
ZmluZU93blByb3BlcnR5JzoKICAgICAgICAgLy8gIC0gdGhlIHByb3RvdHlwZSBjaGFpbiBpcyBu
b3QgY29uc3VsdGVkCiAgICAgICAgIC8vICAtIGFjY2Vzc29ycyBhcmUgbm90IGNhbGxlZC4KICAg
ICAgICAgLy8gIC0gYXR0cmlidXRlcyB3aWxsIGJlIHJlc3BlY3RlZCAoYWZ0ZXIgdGhlIGNhbGwg
dGhlIHByb3BlcnR5IHdpbGwgZXhpc3Qgd2l0aCB0aGUgZ2l2ZW4gYXR0cmlidXRlcykKLSAgICAg
ICAgSlNfRVhQT1JUX1BSSVZBVEUgc3RhdGljIHZvaWQgcHV0RGlyZWN0VmlydHVhbChKU09iamVj
dCosIEV4ZWNTdGF0ZSosIGNvbnN0IElkZW50aWZpZXImIHByb3BlcnR5TmFtZSwgSlNWYWx1ZSwg
dW5zaWduZWQgYXR0cmlidXRlcyk7Ci0gICAgICAgIHZvaWQgcHV0RGlyZWN0KEpTR2xvYmFsRGF0
YSYsIGNvbnN0IElkZW50aWZpZXImIHByb3BlcnR5TmFtZSwgSlNWYWx1ZSwgdW5zaWduZWQgYXR0
cmlidXRlcyA9IDApOwotICAgICAgICB2b2lkIHB1dERpcmVjdChKU0dsb2JhbERhdGEmLCBjb25z
dCBJZGVudGlmaWVyJiBwcm9wZXJ0eU5hbWUsIEpTVmFsdWUsIFB1dFByb3BlcnR5U2xvdCYpOwot
ICAgICAgICB2b2lkIHB1dERpcmVjdFdpdGhvdXRUcmFuc2l0aW9uKEpTR2xvYmFsRGF0YSYsIGNv
bnN0IElkZW50aWZpZXImIHByb3BlcnR5TmFtZSwgSlNWYWx1ZSwgdW5zaWduZWQgYXR0cmlidXRl
cyA9IDApOwotICAgICAgICB2b2lkIHB1dERpcmVjdEFjY2Vzc29yKEpTR2xvYmFsRGF0YSYsIGNv
bnN0IElkZW50aWZpZXImIHByb3BlcnR5TmFtZSwgSlNWYWx1ZSwgdW5zaWduZWQgYXR0cmlidXRl
cyk7CisgICAgICAgIEpTX0VYUE9SVF9QUklWQVRFIHN0YXRpYyB2b2lkIHB1dERpcmVjdFZpcnR1
YWwoSlNPYmplY3QqLCBFeGVjU3RhdGUqLCBQcm9wZXJ0eU5hbWUsIEpTVmFsdWUsIHVuc2lnbmVk
IGF0dHJpYnV0ZXMpOworICAgICAgICB2b2lkIHB1dERpcmVjdChKU0dsb2JhbERhdGEmLCBQcm9w
ZXJ0eU5hbWUsIEpTVmFsdWUsIHVuc2lnbmVkIGF0dHJpYnV0ZXMgPSAwKTsKKyAgICAgICAgdm9p
ZCBwdXREaXJlY3QoSlNHbG9iYWxEYXRhJiwgUHJvcGVydHlOYW1lLCBKU1ZhbHVlLCBQdXRQcm9w
ZXJ0eVNsb3QmKTsKKyAgICAgICAgdm9pZCBwdXREaXJlY3RXaXRob3V0VHJhbnNpdGlvbihKU0ds
b2JhbERhdGEmLCBQcm9wZXJ0eU5hbWUsIEpTVmFsdWUsIHVuc2lnbmVkIGF0dHJpYnV0ZXMgPSAw
KTsKKyAgICAgICAgdm9pZCBwdXREaXJlY3RBY2Nlc3NvcihKU0dsb2JhbERhdGEmLCBQcm9wZXJ0
eU5hbWUsIEpTVmFsdWUsIHVuc2lnbmVkIGF0dHJpYnV0ZXMpOwogCiAgICAgICAgIGJvb2wgcHJv
cGVydHlJc0VudW1lcmFibGUoRXhlY1N0YXRlKiwgY29uc3QgSWRlbnRpZmllciYgcHJvcGVydHlO
YW1lKSBjb25zdDsKIAotICAgICAgICBKU19FWFBPUlRfUFJJVkFURSBib29sIGhhc1Byb3BlcnR5
KEV4ZWNTdGF0ZSosIGNvbnN0IElkZW50aWZpZXImIHByb3BlcnR5TmFtZSkgY29uc3Q7CisgICAg
ICAgIEpTX0VYUE9SVF9QUklWQVRFIGJvb2wgaGFzUHJvcGVydHkoRXhlY1N0YXRlKiwgUHJvcGVy
dHlOYW1lKSBjb25zdDsKICAgICAgICAgSlNfRVhQT1JUX1BSSVZBVEUgYm9vbCBoYXNQcm9wZXJ0
eShFeGVjU3RhdGUqLCB1bnNpZ25lZCBwcm9wZXJ0eU5hbWUpIGNvbnN0OwotICAgICAgICBib29s
IGhhc093blByb3BlcnR5KEV4ZWNTdGF0ZSosIGNvbnN0IElkZW50aWZpZXImIHByb3BlcnR5TmFt
ZSkgY29uc3Q7CisgICAgICAgIGJvb2wgaGFzT3duUHJvcGVydHkoRXhlY1N0YXRlKiwgUHJvcGVy
dHlOYW1lKSBjb25zdDsKIAotICAgICAgICBKU19FWFBPUlRfUFJJVkFURSBzdGF0aWMgYm9vbCBk
ZWxldGVQcm9wZXJ0eShKU0NlbGwqLCBFeGVjU3RhdGUqLCBjb25zdCBJZGVudGlmaWVyJiBwcm9w
ZXJ0eU5hbWUpOworICAgICAgICBKU19FWFBPUlRfUFJJVkFURSBzdGF0aWMgYm9vbCBkZWxldGVQ
cm9wZXJ0eShKU0NlbGwqLCBFeGVjU3RhdGUqLCBQcm9wZXJ0eU5hbWUpOwogICAgICAgICBKU19F
WFBPUlRfUFJJVkFURSBzdGF0aWMgYm9vbCBkZWxldGVQcm9wZXJ0eUJ5SW5kZXgoSlNDZWxsKiwg
RXhlY1N0YXRlKiwgdW5zaWduZWQgcHJvcGVydHlOYW1lKTsKIAogICAgICAgICBKU19FWFBPUlRf
UFJJVkFURSBzdGF0aWMgSlNWYWx1ZSBkZWZhdWx0VmFsdWUoY29uc3QgSlNPYmplY3QqLCBFeGVj
U3RhdGUqLCBQcmVmZXJyZWRQcmltaXRpdmVUeXBlKTsKQEAgLTE0OCwyMiArMTQ4LDIyIEBAIG5h
bWVzcGFjZSBKU0MgewogICAgICAgICBKU19FWFBPUlRfUFJJVkFURSBzdGF0aWMgSlNPYmplY3Qq
IHRvVGhpc09iamVjdChKU0NlbGwqLCBFeGVjU3RhdGUqKTsKICAgICAgICAgSlNPYmplY3QqIHVu
d3JhcHBlZE9iamVjdCgpOwogCi0gICAgICAgIGJvb2wgZ2V0UHJvcGVydHlTcGVjaWZpY1ZhbHVl
KEV4ZWNTdGF0ZSogZXhlYywgY29uc3QgSWRlbnRpZmllciYgcHJvcGVydHlOYW1lLCBKU0NlbGwq
JiBzcGVjaWZpY0Z1bmN0aW9uKSBjb25zdDsKKyAgICAgICAgYm9vbCBnZXRQcm9wZXJ0eVNwZWNp
ZmljVmFsdWUoRXhlY1N0YXRlKiwgUHJvcGVydHlOYW1lLCBKU0NlbGwqJiBzcGVjaWZpY0Z1bmN0
aW9uKSBjb25zdDsKIAogICAgICAgICAvLyBUaGlzIGdldCBmdW5jdGlvbiBvbmx5IGxvb2tzIGF0
IHRoZSBwcm9wZXJ0eSBtYXAuCi0gICAgICAgIEpTVmFsdWUgZ2V0RGlyZWN0KEpTR2xvYmFsRGF0
YSYgZ2xvYmFsRGF0YSwgY29uc3QgSWRlbnRpZmllciYgcHJvcGVydHlOYW1lKSBjb25zdAorICAg
ICAgICBKU1ZhbHVlIGdldERpcmVjdChKU0dsb2JhbERhdGEmIGdsb2JhbERhdGEsIFByb3BlcnR5
TmFtZSBwcm9wZXJ0eU5hbWUpIGNvbnN0CiAgICAgICAgIHsKICAgICAgICAgICAgIHNpemVfdCBv
ZmZzZXQgPSBzdHJ1Y3R1cmUoKS0+Z2V0KGdsb2JhbERhdGEsIHByb3BlcnR5TmFtZSk7CiAgICAg
ICAgICAgICByZXR1cm4gb2Zmc2V0ICE9IFdURjo6bm90Rm91bmQgPyBnZXREaXJlY3RPZmZzZXQo
b2Zmc2V0KSA6IEpTVmFsdWUoKTsKICAgICAgICAgfQogCi0gICAgICAgIFdyaXRlQmFycmllckJh
c2U8VW5rbm93bj4qIGdldERpcmVjdExvY2F0aW9uKEpTR2xvYmFsRGF0YSYgZ2xvYmFsRGF0YSwg
Y29uc3QgSWRlbnRpZmllciYgcHJvcGVydHlOYW1lKQorICAgICAgICBXcml0ZUJhcnJpZXJCYXNl
PFVua25vd24+KiBnZXREaXJlY3RMb2NhdGlvbihKU0dsb2JhbERhdGEmIGdsb2JhbERhdGEsIFBy
b3BlcnR5TmFtZSBwcm9wZXJ0eU5hbWUpCiAgICAgICAgIHsKICAgICAgICAgICAgIHNpemVfdCBv
ZmZzZXQgPSBzdHJ1Y3R1cmUoKS0+Z2V0KGdsb2JhbERhdGEsIHByb3BlcnR5TmFtZSk7CiAgICAg
ICAgICAgICByZXR1cm4gb2Zmc2V0ICE9IFdURjo6bm90Rm91bmQgPyBsb2NhdGlvbkZvck9mZnNl
dChvZmZzZXQpIDogMDsKICAgICAgICAgfQogCi0gICAgICAgIFdyaXRlQmFycmllckJhc2U8VW5r
bm93bj4qIGdldERpcmVjdExvY2F0aW9uKEpTR2xvYmFsRGF0YSYgZ2xvYmFsRGF0YSwgY29uc3Qg
SWRlbnRpZmllciYgcHJvcGVydHlOYW1lLCB1bnNpZ25lZCYgYXR0cmlidXRlcykKKyAgICAgICAg
V3JpdGVCYXJyaWVyQmFzZTxVbmtub3duPiogZ2V0RGlyZWN0TG9jYXRpb24oSlNHbG9iYWxEYXRh
JiBnbG9iYWxEYXRhLCBQcm9wZXJ0eU5hbWUgcHJvcGVydHlOYW1lLCB1bnNpZ25lZCYgYXR0cmli
dXRlcykKICAgICAgICAgewogICAgICAgICAgICAgSlNDZWxsKiBzcGVjaWZpY0Z1bmN0aW9uOwog
ICAgICAgICAgICAgc2l6ZV90IG9mZnNldCA9IHN0cnVjdHVyZSgpLT5nZXQoZ2xvYmFsRGF0YSwg
cHJvcGVydHlOYW1lLCBhdHRyaWJ1dGVzLCBzcGVjaWZpY0Z1bmN0aW9uKTsKQEAgLTE3Nyw3ICsx
NzcsNyBAQCBuYW1lc3BhY2UgSlNDIHsKIAogICAgICAgICB2b2lkIHRyYW5zaXRpb25UbyhKU0ds
b2JhbERhdGEmLCBTdHJ1Y3R1cmUqKTsKIAotICAgICAgICB2b2lkIHJlbW92ZURpcmVjdChKU0ds
b2JhbERhdGEmLCBjb25zdCBJZGVudGlmaWVyJiBwcm9wZXJ0eU5hbWUpOworICAgICAgICB2b2lk
IHJlbW92ZURpcmVjdChKU0dsb2JhbERhdGEmLCBQcm9wZXJ0eU5hbWUpOwogICAgICAgICBib29s
IGhhc0N1c3RvbVByb3BlcnRpZXMoKSB7IHJldHVybiBzdHJ1Y3R1cmUoKS0+ZGlkVHJhbnNpdGlv
bigpOyB9CiAgICAgICAgIGJvb2wgaGFzR2V0dGVyU2V0dGVyUHJvcGVydGllcygpIHsgcmV0dXJu
IHN0cnVjdHVyZSgpLT5oYXNHZXR0ZXJTZXR0ZXJQcm9wZXJ0aWVzKCk7IH0KIApAQCAtMTg2LDE0
ICsxODYsMTQgQEAgbmFtZXNwYWNlIEpTQyB7CiAgICAgICAgIC8vICAtIHByb3ZpZGVzIG5vIHNw
ZWNpYWwgaGFuZGxpbmcgZm9yIF9fcHJvdG9fXwogICAgICAgICAvLyAgLSBkb2VzIG5vdCB3YWxr
IHRoZSBwcm90b3R5cGUgY2hhaW4gKHRvIGNoZWNrIGZvciBhY2Nlc3NvcnMgb3Igbm9uLXdyaXRh
YmxlIHByb3BlcnRpZXMpLgogICAgICAgICAvLyBUaGlzIGlzIHVzZWQgYnkgSlNBY3RpdmF0aW9u
LgotICAgICAgICBib29sIHB1dE93bkRhdGFQcm9wZXJ0eShKU0dsb2JhbERhdGEmLCBjb25zdCBJ
ZGVudGlmaWVyJiBwcm9wZXJ0eU5hbWUsIEpTVmFsdWUsIFB1dFByb3BlcnR5U2xvdCYpOworICAg
ICAgICBib29sIHB1dE93bkRhdGFQcm9wZXJ0eShKU0dsb2JhbERhdGEmLCBQcm9wZXJ0eU5hbWUs
IEpTVmFsdWUsIFB1dFByb3BlcnR5U2xvdCYpOwogCiAgICAgICAgIC8vIEZhc3QgYWNjZXNzIHRv
IGtub3duIHByb3BlcnR5IG9mZnNldHMuCiAgICAgICAgIEpTVmFsdWUgZ2V0RGlyZWN0T2Zmc2V0
KHNpemVfdCBvZmZzZXQpIGNvbnN0IHsgcmV0dXJuIHByb3BlcnR5U3RvcmFnZSgpW29mZnNldF0u
Z2V0KCk7IH0KICAgICAgICAgdm9pZCBwdXREaXJlY3RPZmZzZXQoSlNHbG9iYWxEYXRhJiBnbG9i
YWxEYXRhLCBzaXplX3Qgb2Zmc2V0LCBKU1ZhbHVlIHZhbHVlKSB7IHByb3BlcnR5U3RvcmFnZSgp
W29mZnNldF0uc2V0KGdsb2JhbERhdGEsIHRoaXMsIHZhbHVlKTsgfQogICAgICAgICB2b2lkIHB1
dFVuZGVmaW5lZEF0RGlyZWN0T2Zmc2V0KHNpemVfdCBvZmZzZXQpIHsgcHJvcGVydHlTdG9yYWdl
KClbb2Zmc2V0XS5zZXRVbmRlZmluZWQoKTsgfQogCi0gICAgICAgIEpTX0VYUE9SVF9QUklWQVRF
IHN0YXRpYyBib29sIGRlZmluZU93blByb3BlcnR5KEpTT2JqZWN0KiwgRXhlY1N0YXRlKiwgY29u
c3QgSWRlbnRpZmllciYgcHJvcGVydHlOYW1lLCBQcm9wZXJ0eURlc2NyaXB0b3ImLCBib29sIHNo
b3VsZFRocm93KTsKKyAgICAgICAgSlNfRVhQT1JUX1BSSVZBVEUgc3RhdGljIGJvb2wgZGVmaW5l
T3duUHJvcGVydHkoSlNPYmplY3QqLCBFeGVjU3RhdGUqLCBQcm9wZXJ0eU5hbWUsIFByb3BlcnR5
RGVzY3JpcHRvciYsIGJvb2wgc2hvdWxkVGhyb3cpOwogCiAgICAgICAgIGJvb2wgaXNHbG9iYWxP
YmplY3QoKSBjb25zdDsKICAgICAgICAgYm9vbCBpc1ZhcmlhYmxlT2JqZWN0KCkgY29uc3Q7CkBA
IC0yOTQsMTIgKzI5NCwxMiBAQCBuYW1lc3BhY2UgSlNDIHsKICAgICAgICAgfQogCiAgICAgICAg
IHRlbXBsYXRlPFB1dE1vZGU+Ci0gICAgICAgIGJvb2wgcHV0RGlyZWN0SW50ZXJuYWwoSlNHbG9i
YWxEYXRhJiwgY29uc3QgSWRlbnRpZmllciYgcHJvcGVydHlOYW1lLCBKU1ZhbHVlLCB1bnNpZ25l
ZCBhdHRyLCBQdXRQcm9wZXJ0eVNsb3QmLCBKU0NlbGwqKTsKKyAgICAgICAgYm9vbCBwdXREaXJl
Y3RJbnRlcm5hbChKU0dsb2JhbERhdGEmLCBQcm9wZXJ0eU5hbWUsIEpTVmFsdWUsIHVuc2lnbmVk
IGF0dHIsIFB1dFByb3BlcnR5U2xvdCYsIEpTQ2VsbCopOwogCi0gICAgICAgIGJvb2wgaW5saW5l
R2V0T3duUHJvcGVydHlTbG90KEV4ZWNTdGF0ZSosIGNvbnN0IElkZW50aWZpZXImIHByb3BlcnR5
TmFtZSwgUHJvcGVydHlTbG90Jik7CisgICAgICAgIGJvb2wgaW5saW5lR2V0T3duUHJvcGVydHlT
bG90KEV4ZWNTdGF0ZSosIFByb3BlcnR5TmFtZSwgUHJvcGVydHlTbG90Jik7CiAgICAgICAgIEpT
X0VYUE9SVF9QUklWQVRFIHZvaWQgZmlsbEdldHRlclByb3BlcnR5U2xvdChQcm9wZXJ0eVNsb3Qm
LCBXcml0ZUJhcnJpZXJCYXNlPFVua25vd24+KiBsb2NhdGlvbik7CiAKLSAgICAgICAgY29uc3Qg
SGFzaEVudHJ5KiBmaW5kUHJvcGVydHlIYXNoRW50cnkoRXhlY1N0YXRlKiwgY29uc3QgSWRlbnRp
ZmllciYgcHJvcGVydHlOYW1lKSBjb25zdDsKKyAgICAgICAgY29uc3QgSGFzaEVudHJ5KiBmaW5k
UHJvcGVydHlIYXNoRW50cnkoRXhlY1N0YXRlKiwgUHJvcGVydHlOYW1lKSBjb25zdDsKICAgICAg
ICAgU3RydWN0dXJlKiBjcmVhdGVJbmhlcml0b3JJRChKU0dsb2JhbERhdGEmKTsKIAogICAgICAg
ICBTdG9yYWdlQmFycmllciBtX3Byb3BlcnR5U3RvcmFnZTsKQEAgLTUzOSw3ICs1MzksNyBAQCBp
bmxpbmUgSlNPYmplY3QqIEpTVmFsdWU6OnRvVGhpc09iamVjdChFCiAgICAgcmV0dXJuIGlzQ2Vs
bCgpID8gYXNDZWxsKCktPm1ldGhvZFRhYmxlKCktPnRvVGhpc09iamVjdChhc0NlbGwoKSwgZXhl
YykgOiB0b1RoaXNPYmplY3RTbG93Q2FzZShleGVjKTsKIH0KIAotQUxXQVlTX0lOTElORSBib29s
IEpTT2JqZWN0OjppbmxpbmVHZXRPd25Qcm9wZXJ0eVNsb3QoRXhlY1N0YXRlKiBleGVjLCBjb25z
dCBJZGVudGlmaWVyJiBwcm9wZXJ0eU5hbWUsIFByb3BlcnR5U2xvdCYgc2xvdCkKK0FMV0FZU19J
TkxJTkUgYm9vbCBKU09iamVjdDo6aW5saW5lR2V0T3duUHJvcGVydHlTbG90KEV4ZWNTdGF0ZSog
ZXhlYywgUHJvcGVydHlOYW1lIHByb3BlcnR5TmFtZSwgUHJvcGVydHlTbG90JiBzbG90KQogewog
ICAgIGlmIChXcml0ZUJhcnJpZXJCYXNlPFVua25vd24+KiBsb2NhdGlvbiA9IGdldERpcmVjdExv
Y2F0aW9uKGV4ZWMtPmdsb2JhbERhdGEoKSwgcHJvcGVydHlOYW1lKSkgewogICAgICAgICBpZiAo
c3RydWN0dXJlKCktPmhhc0dldHRlclNldHRlclByb3BlcnRpZXMoKSAmJiBsb2NhdGlvbi0+aXNH
ZXR0ZXJTZXR0ZXIoKSkKQEAgLTU1NSwxMiArNTU1LDEyIEBAIEFMV0FZU19JTkxJTkUgYm9vbCBK
U09iamVjdDo6aW5saW5lR2V0T3cKIC8vIEl0IG1heSBzZWVtIGNyYXp5IHRvIGlubGluZSBhIGZ1
bmN0aW9uIHRoaXMgbGFyZ2UsIGVzcGVjaWFsbHkgYSB2aXJ0dWFsIGZ1bmN0aW9uLAogLy8gYnV0
IGl0IG1ha2VzIGEgYmlnIGRpZmZlcmVuY2UgdG8gcHJvcGVydHkgbG9va3VwIHRoYXQgZGVyaXZl
ZCBjbGFzc2VzIGNhbiBpbmxpbmUgdGhlaXIKIC8vIGJhc2UgY2xhc3MgY2FsbCB0byB0aGlzLgot
QUxXQVlTX0lOTElORSBib29sIEpTT2JqZWN0OjpnZXRPd25Qcm9wZXJ0eVNsb3QoSlNDZWxsKiBj
ZWxsLCBFeGVjU3RhdGUqIGV4ZWMsIGNvbnN0IElkZW50aWZpZXImIHByb3BlcnR5TmFtZSwgUHJv
cGVydHlTbG90JiBzbG90KQorQUxXQVlTX0lOTElORSBib29sIEpTT2JqZWN0OjpnZXRPd25Qcm9w
ZXJ0eVNsb3QoSlNDZWxsKiBjZWxsLCBFeGVjU3RhdGUqIGV4ZWMsIFByb3BlcnR5TmFtZSBwcm9w
ZXJ0eU5hbWUsIFByb3BlcnR5U2xvdCYgc2xvdCkKIHsKICAgICByZXR1cm4ganNDYXN0PEpTT2Jq
ZWN0Kj4oY2VsbCktPmlubGluZUdldE93blByb3BlcnR5U2xvdChleGVjLCBwcm9wZXJ0eU5hbWUs
IHNsb3QpOwogfQogCi1BTFdBWVNfSU5MSU5FIGJvb2wgSlNDZWxsOjpmYXN0R2V0T3duUHJvcGVy
dHlTbG90KEV4ZWNTdGF0ZSogZXhlYywgY29uc3QgSWRlbnRpZmllciYgcHJvcGVydHlOYW1lLCBQ
cm9wZXJ0eVNsb3QmIHNsb3QpCitBTFdBWVNfSU5MSU5FIGJvb2wgSlNDZWxsOjpmYXN0R2V0T3du
UHJvcGVydHlTbG90KEV4ZWNTdGF0ZSogZXhlYywgUHJvcGVydHlOYW1lIHByb3BlcnR5TmFtZSwg
UHJvcGVydHlTbG90JiBzbG90KQogewogICAgIGlmICghc3RydWN0dXJlKCktPnR5cGVJbmZvKCku
b3ZlcnJpZGVzR2V0T3duUHJvcGVydHlTbG90KCkpCiAgICAgICAgIHJldHVybiBhc09iamVjdCh0
aGlzKS0+aW5saW5lR2V0T3duUHJvcGVydHlTbG90KGV4ZWMsIHByb3BlcnR5TmFtZSwgc2xvdCk7
CkBAIC01ODUsNyArNTg1LDcgQEAgQUxXQVlTX0lOTElORSBKU1ZhbHVlIEpTQ2VsbDo6ZmFzdEdl
dE93bgogCiAvLyBJdCBtYXkgc2VlbSBjcmF6eSB0byBpbmxpbmUgYSBmdW5jdGlvbiB0aGlzIGxh
cmdlIGJ1dCBpdCBtYWtlcyBhIGJpZyBkaWZmZXJlbmNlCiAvLyBzaW5jZSB0aGlzIGlzIGZ1bmN0
aW9uIHZlcnkgaG90IGluIHZhcmlhYmxlIGxvb2t1cAotQUxXQVlTX0lOTElORSBib29sIEpTT2Jq
ZWN0OjpnZXRQcm9wZXJ0eVNsb3QoRXhlY1N0YXRlKiBleGVjLCBjb25zdCBJZGVudGlmaWVyJiBw
cm9wZXJ0eU5hbWUsIFByb3BlcnR5U2xvdCYgc2xvdCkKK0FMV0FZU19JTkxJTkUgYm9vbCBKU09i
amVjdDo6Z2V0UHJvcGVydHlTbG90KEV4ZWNTdGF0ZSogZXhlYywgUHJvcGVydHlOYW1lIHByb3Bl
cnR5TmFtZSwgUHJvcGVydHlTbG90JiBzbG90KQogewogICAgIEpTT2JqZWN0KiBvYmplY3QgPSB0
aGlzOwogICAgIHdoaWxlICh0cnVlKSB7CkBAIC02MTEsNyArNjExLDcgQEAgQUxXQVlTX0lOTElO
RSBib29sIEpTT2JqZWN0OjpnZXRQcm9wZXJ0eQogICAgIH0KIH0KIAotaW5saW5lIEpTVmFsdWUg
SlNPYmplY3Q6OmdldChFeGVjU3RhdGUqIGV4ZWMsIGNvbnN0IElkZW50aWZpZXImIHByb3BlcnR5
TmFtZSkgY29uc3QKK2lubGluZSBKU1ZhbHVlIEpTT2JqZWN0OjpnZXQoRXhlY1N0YXRlKiBleGVj
LCBQcm9wZXJ0eU5hbWUgcHJvcGVydHlOYW1lKSBjb25zdAogewogICAgIFByb3BlcnR5U2xvdCBz
bG90KHRoaXMpOwogICAgIGlmIChjb25zdF9jYXN0PEpTT2JqZWN0Kj4odGhpcyktPmdldFByb3Bl
cnR5U2xvdChleGVjLCBwcm9wZXJ0eU5hbWUsIHNsb3QpKQpAQCAtNjMwLDcgKzYzMCw3IEBAIGlu
bGluZSBKU1ZhbHVlIEpTT2JqZWN0OjpnZXQoRXhlY1N0YXRlKiAKIH0KIAogdGVtcGxhdGU8SlNP
YmplY3Q6OlB1dE1vZGUgbW9kZT4KLWlubGluZSBib29sIEpTT2JqZWN0OjpwdXREaXJlY3RJbnRl
cm5hbChKU0dsb2JhbERhdGEmIGdsb2JhbERhdGEsIGNvbnN0IElkZW50aWZpZXImIHByb3BlcnR5
TmFtZSwgSlNWYWx1ZSB2YWx1ZSwgdW5zaWduZWQgYXR0cmlidXRlcywgUHV0UHJvcGVydHlTbG90
JiBzbG90LCBKU0NlbGwqIHNwZWNpZmljRnVuY3Rpb24pCitpbmxpbmUgYm9vbCBKU09iamVjdDo6
cHV0RGlyZWN0SW50ZXJuYWwoSlNHbG9iYWxEYXRhJiBnbG9iYWxEYXRhLCBQcm9wZXJ0eU5hbWUg
cHJvcGVydHlOYW1lLCBKU1ZhbHVlIHZhbHVlLCB1bnNpZ25lZCBhdHRyaWJ1dGVzLCBQdXRQcm9w
ZXJ0eVNsb3QmIHNsb3QsIEpTQ2VsbCogc3BlY2lmaWNGdW5jdGlvbikKIHsKICAgICBBU1NFUlQo
dmFsdWUpOwogICAgIEFTU0VSVCh2YWx1ZS5pc0dldHRlclNldHRlcigpID09ICEhKGF0dHJpYnV0
ZXMgJiBBY2Nlc3NvcikpOwpAQCAtNzQyLDcgKzc0Miw3IEBAIGlubGluZSBib29sIEpTT2JqZWN0
OjpwdXREaXJlY3RJbnRlcm5hbCgKICAgICByZXR1cm4gdHJ1ZTsKIH0KIAotaW5saW5lIGJvb2wg
SlNPYmplY3Q6OnB1dE93bkRhdGFQcm9wZXJ0eShKU0dsb2JhbERhdGEmIGdsb2JhbERhdGEsIGNv
bnN0IElkZW50aWZpZXImIHByb3BlcnR5TmFtZSwgSlNWYWx1ZSB2YWx1ZSwgUHV0UHJvcGVydHlT
bG90JiBzbG90KQoraW5saW5lIGJvb2wgSlNPYmplY3Q6OnB1dE93bkRhdGFQcm9wZXJ0eShKU0ds
b2JhbERhdGEmIGdsb2JhbERhdGEsIFByb3BlcnR5TmFtZSBwcm9wZXJ0eU5hbWUsIEpTVmFsdWUg
dmFsdWUsIFB1dFByb3BlcnR5U2xvdCYgc2xvdCkKIHsKICAgICBBU1NFUlQodmFsdWUpOwogICAg
IEFTU0VSVCghSGVhcDo6aGVhcCh2YWx1ZSkgfHwgSGVhcDo6aGVhcCh2YWx1ZSkgPT0gSGVhcDo6
aGVhcCh0aGlzKSk7CkBAIC03NTEsMjAgKzc1MSwyMCBAQCBpbmxpbmUgYm9vbCBKU09iamVjdDo6
cHV0T3duRGF0YVByb3BlcnR5CiAgICAgcmV0dXJuIHB1dERpcmVjdEludGVybmFsPFB1dE1vZGVQ
dXQ+KGdsb2JhbERhdGEsIHByb3BlcnR5TmFtZSwgdmFsdWUsIDAsIHNsb3QsIGdldEpTRnVuY3Rp
b24odmFsdWUpKTsKIH0KIAotaW5saW5lIHZvaWQgSlNPYmplY3Q6OnB1dERpcmVjdChKU0dsb2Jh
bERhdGEmIGdsb2JhbERhdGEsIGNvbnN0IElkZW50aWZpZXImIHByb3BlcnR5TmFtZSwgSlNWYWx1
ZSB2YWx1ZSwgdW5zaWduZWQgYXR0cmlidXRlcykKK2lubGluZSB2b2lkIEpTT2JqZWN0OjpwdXRE
aXJlY3QoSlNHbG9iYWxEYXRhJiBnbG9iYWxEYXRhLCBQcm9wZXJ0eU5hbWUgcHJvcGVydHlOYW1l
LCBKU1ZhbHVlIHZhbHVlLCB1bnNpZ25lZCBhdHRyaWJ1dGVzKQogewogICAgIEFTU0VSVCghdmFs
dWUuaXNHZXR0ZXJTZXR0ZXIoKSAmJiAhKGF0dHJpYnV0ZXMgJiBBY2Nlc3NvcikpOwogICAgIFB1
dFByb3BlcnR5U2xvdCBzbG90OwogICAgIHB1dERpcmVjdEludGVybmFsPFB1dE1vZGVEZWZpbmVP
d25Qcm9wZXJ0eT4oZ2xvYmFsRGF0YSwgcHJvcGVydHlOYW1lLCB2YWx1ZSwgYXR0cmlidXRlcywg
c2xvdCwgZ2V0SlNGdW5jdGlvbih2YWx1ZSkpOwogfQogCi1pbmxpbmUgdm9pZCBKU09iamVjdDo6
cHV0RGlyZWN0KEpTR2xvYmFsRGF0YSYgZ2xvYmFsRGF0YSwgY29uc3QgSWRlbnRpZmllciYgcHJv
cGVydHlOYW1lLCBKU1ZhbHVlIHZhbHVlLCBQdXRQcm9wZXJ0eVNsb3QmIHNsb3QpCitpbmxpbmUg
dm9pZCBKU09iamVjdDo6cHV0RGlyZWN0KEpTR2xvYmFsRGF0YSYgZ2xvYmFsRGF0YSwgUHJvcGVy
dHlOYW1lIHByb3BlcnR5TmFtZSwgSlNWYWx1ZSB2YWx1ZSwgUHV0UHJvcGVydHlTbG90JiBzbG90
KQogewogICAgIEFTU0VSVCghdmFsdWUuaXNHZXR0ZXJTZXR0ZXIoKSk7CiAgICAgcHV0RGlyZWN0
SW50ZXJuYWw8UHV0TW9kZURlZmluZU93blByb3BlcnR5PihnbG9iYWxEYXRhLCBwcm9wZXJ0eU5h
bWUsIHZhbHVlLCAwLCBzbG90LCBnZXRKU0Z1bmN0aW9uKHZhbHVlKSk7CiB9CiAKLWlubGluZSB2
b2lkIEpTT2JqZWN0OjpwdXREaXJlY3RXaXRob3V0VHJhbnNpdGlvbihKU0dsb2JhbERhdGEmIGds
b2JhbERhdGEsIGNvbnN0IElkZW50aWZpZXImIHByb3BlcnR5TmFtZSwgSlNWYWx1ZSB2YWx1ZSwg
dW5zaWduZWQgYXR0cmlidXRlcykKK2lubGluZSB2b2lkIEpTT2JqZWN0OjpwdXREaXJlY3RXaXRo
b3V0VHJhbnNpdGlvbihKU0dsb2JhbERhdGEmIGdsb2JhbERhdGEsIFByb3BlcnR5TmFtZSBwcm9w
ZXJ0eU5hbWUsIEpTVmFsdWUgdmFsdWUsIHVuc2lnbmVkIGF0dHJpYnV0ZXMpCiB7CiAgICAgQVNT
RVJUKCF2YWx1ZS5pc0dldHRlclNldHRlcigpICYmICEoYXR0cmlidXRlcyAmIEFjY2Vzc29yKSk7
CiAgICAgc2l6ZV90IGN1cnJlbnRDYXBhY2l0eSA9IHN0cnVjdHVyZSgpLT5wcm9wZXJ0eVN0b3Jh
Z2VDYXBhY2l0eSgpOwpAQCAtNzg2LDEzICs3ODYsMTMgQEAgaW5saW5lIEpTVmFsdWUgSlNPYmpl
Y3Q6OnRvUHJpbWl0aXZlKEV4ZQogICAgIHJldHVybiBtZXRob2RUYWJsZSgpLT5kZWZhdWx0VmFs
dWUodGhpcywgZXhlYywgcHJlZmVycmVkVHlwZSk7CiB9CiAKLWlubGluZSBKU1ZhbHVlIEpTVmFs
dWU6OmdldChFeGVjU3RhdGUqIGV4ZWMsIGNvbnN0IElkZW50aWZpZXImIHByb3BlcnR5TmFtZSkg
Y29uc3QKK2lubGluZSBKU1ZhbHVlIEpTVmFsdWU6OmdldChFeGVjU3RhdGUqIGV4ZWMsIFByb3Bl
cnR5TmFtZSBwcm9wZXJ0eU5hbWUpIGNvbnN0CiB7CiAgICAgUHJvcGVydHlTbG90IHNsb3QoYXNW
YWx1ZSgpKTsKICAgICByZXR1cm4gZ2V0KGV4ZWMsIHByb3BlcnR5TmFtZSwgc2xvdCk7CiB9CiAK
LWlubGluZSBKU1ZhbHVlIEpTVmFsdWU6OmdldChFeGVjU3RhdGUqIGV4ZWMsIGNvbnN0IElkZW50
aWZpZXImIHByb3BlcnR5TmFtZSwgUHJvcGVydHlTbG90JiBzbG90KSBjb25zdAoraW5saW5lIEpT
VmFsdWUgSlNWYWx1ZTo6Z2V0KEV4ZWNTdGF0ZSogZXhlYywgUHJvcGVydHlOYW1lIHByb3BlcnR5
TmFtZSwgUHJvcGVydHlTbG90JiBzbG90KSBjb25zdAogewogICAgIGlmIChVTkxJS0VMWSghaXND
ZWxsKCkpKSB7CiAgICAgICAgIEpTT2JqZWN0KiBwcm90b3R5cGUgPSBzeW50aGVzaXplUHJvdG90
eXBlKGV4ZWMpOwpAQCAtODM2LDcgKzgzNiw3IEBAIGlubGluZSBKU1ZhbHVlIEpTVmFsdWU6Omdl
dChFeGVjU3RhdGUqIGUKICAgICB9CiB9CiAKLWlubGluZSB2b2lkIEpTVmFsdWU6OnB1dChFeGVj
U3RhdGUqIGV4ZWMsIGNvbnN0IElkZW50aWZpZXImIHByb3BlcnR5TmFtZSwgSlNWYWx1ZSB2YWx1
ZSwgUHV0UHJvcGVydHlTbG90JiBzbG90KQoraW5saW5lIHZvaWQgSlNWYWx1ZTo6cHV0KEV4ZWNT
dGF0ZSogZXhlYywgUHJvcGVydHlOYW1lIHByb3BlcnR5TmFtZSwgSlNWYWx1ZSB2YWx1ZSwgUHV0
UHJvcGVydHlTbG90JiBzbG90KQogewogICAgIGlmIChVTkxJS0VMWSghaXNDZWxsKCkpKSB7CiAg
ICAgICAgIHB1dFRvUHJpbWl0aXZlKGV4ZWMsIHByb3BlcnR5TmFtZSwgdmFsdWUsIHNsb3QpOwpJ
bmRleDogU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvSlNTdGF0aWNTY29wZU9iamVjdC5j
cHAKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PQotLS0gU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvSlNTdGF0aWNT
Y29wZU9iamVjdC5jcHAJKHJldmlzaW9uIDExNjY2NykKKysrIFNvdXJjZS9KYXZhU2NyaXB0Q29y
ZS9ydW50aW1lL0pTU3RhdGljU2NvcGVPYmplY3QuY3BwCSh3b3JraW5nIGNvcHkpCkBAIC01NCw3
ICs1NCw3IEBAIEpTT2JqZWN0KiBKU1N0YXRpY1Njb3BlT2JqZWN0Ojp0b1RoaXNPYmoKICAgICBy
ZXR1cm4gZXhlYy0+Z2xvYmFsVGhpc1ZhbHVlKCk7CiB9CiAKLXZvaWQgSlNTdGF0aWNTY29wZU9i
amVjdDo6cHV0KEpTQ2VsbCogY2VsbCwgRXhlY1N0YXRlKiBleGVjLCBjb25zdCBJZGVudGlmaWVy
JiBwcm9wZXJ0eU5hbWUsIEpTVmFsdWUgdmFsdWUsIFB1dFByb3BlcnR5U2xvdCYgc2xvdCkKK3Zv
aWQgSlNTdGF0aWNTY29wZU9iamVjdDo6cHV0KEpTQ2VsbCogY2VsbCwgRXhlY1N0YXRlKiBleGVj
LCBQcm9wZXJ0eU5hbWUgcHJvcGVydHlOYW1lLCBKU1ZhbHVlIHZhbHVlLCBQdXRQcm9wZXJ0eVNs
b3QmIHNsb3QpCiB7CiAgICAgSlNTdGF0aWNTY29wZU9iamVjdCogdGhpc09iamVjdCA9IGpzQ2Fz
dDxKU1N0YXRpY1Njb3BlT2JqZWN0Kj4oY2VsbCk7CiAgICAgaWYgKHNsb3QuaXNTdHJpY3RNb2Rl
KCkpIHsKQEAgLTc4LDcgKzc4LDcgQEAgdm9pZCBKU1N0YXRpY1Njb3BlT2JqZWN0OjpwdXQoSlND
ZWxsKiBjZQogICAgIEFTU0VSVF9OT1RfUkVBQ0hFRCgpOwogfQogCi12b2lkIEpTU3RhdGljU2Nv
cGVPYmplY3Q6OnB1dERpcmVjdFZpcnR1YWwoSlNPYmplY3QqIG9iamVjdCwgRXhlY1N0YXRlKiBl
eGVjLCBjb25zdCBJZGVudGlmaWVyJiBwcm9wZXJ0eU5hbWUsIEpTVmFsdWUgdmFsdWUsIHVuc2ln
bmVkIGF0dHJpYnV0ZXMpCit2b2lkIEpTU3RhdGljU2NvcGVPYmplY3Q6OnB1dERpcmVjdFZpcnR1
YWwoSlNPYmplY3QqIG9iamVjdCwgRXhlY1N0YXRlKiBleGVjLCBQcm9wZXJ0eU5hbWUgcHJvcGVy
dHlOYW1lLCBKU1ZhbHVlIHZhbHVlLCB1bnNpZ25lZCBhdHRyaWJ1dGVzKQogewogICAgIEpTU3Rh
dGljU2NvcGVPYmplY3QqIHRoaXNPYmplY3QgPSBqc0Nhc3Q8SlNTdGF0aWNTY29wZU9iamVjdCo+
KG9iamVjdCk7CiAgICAgaWYgKHRoaXNPYmplY3QtPnN5bWJvbFRhYmxlUHV0V2l0aEF0dHJpYnV0
ZXMoZXhlYy0+Z2xvYmFsRGF0YSgpLCBwcm9wZXJ0eU5hbWUsIHZhbHVlLCBhdHRyaWJ1dGVzKSkK
QEAgLTg3LDcgKzg3LDcgQEAgdm9pZCBKU1N0YXRpY1Njb3BlT2JqZWN0OjpwdXREaXJlY3RWaXJ0
dQogICAgIEFTU0VSVF9OT1RfUkVBQ0hFRCgpOwogfQogCi1ib29sIEpTU3RhdGljU2NvcGVPYmpl
Y3Q6OmdldE93blByb3BlcnR5U2xvdChKU0NlbGwqIGNlbGwsIEV4ZWNTdGF0ZSosIGNvbnN0IElk
ZW50aWZpZXImIHByb3BlcnR5TmFtZSwgUHJvcGVydHlTbG90JiBzbG90KQorYm9vbCBKU1N0YXRp
Y1Njb3BlT2JqZWN0OjpnZXRPd25Qcm9wZXJ0eVNsb3QoSlNDZWxsKiBjZWxsLCBFeGVjU3RhdGUq
LCBQcm9wZXJ0eU5hbWUgcHJvcGVydHlOYW1lLCBQcm9wZXJ0eVNsb3QmIHNsb3QpCiB7CiAgICAg
cmV0dXJuIGpzQ2FzdDxKU1N0YXRpY1Njb3BlT2JqZWN0Kj4oY2VsbCktPnN5bWJvbFRhYmxlR2V0
KHByb3BlcnR5TmFtZSwgc2xvdCk7CiB9CkluZGV4OiBTb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVu
dGltZS9KU1N0YXRpY1Njb3BlT2JqZWN0LmgKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL0phdmFTY3Jp
cHRDb3JlL3J1bnRpbWUvSlNTdGF0aWNTY29wZU9iamVjdC5oCShyZXZpc2lvbiAxMTY2NjcpCisr
KyBTb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9KU1N0YXRpY1Njb3BlT2JqZWN0LmgJKHdv
cmtpbmcgY29weSkKQEAgLTQ0LDEwICs0NCwxMCBAQCBuYW1lc3BhY2UgSlNDewogICAgICAgICBz
dGF0aWMgdm9pZCB2aXNpdENoaWxkcmVuKEpTQ2VsbCosIFNsb3RWaXNpdG9yJik7CiAgICAgICAg
IGJvb2wgaXNEeW5hbWljU2NvcGUoYm9vbCYgcmVxdWlyZXNEeW5hbWljQ2hlY2tzKSBjb25zdDsK
ICAgICAgICAgc3RhdGljIEpTT2JqZWN0KiB0b1RoaXNPYmplY3QoSlNDZWxsKiwgRXhlY1N0YXRl
Kik7Ci0gICAgICAgIHN0YXRpYyBib29sIGdldE93blByb3BlcnR5U2xvdChKU0NlbGwqLCBFeGVj
U3RhdGUqLCBjb25zdCBJZGVudGlmaWVyJiwgUHJvcGVydHlTbG90Jik7Ci0gICAgICAgIHN0YXRp
YyB2b2lkIHB1dChKU0NlbGwqLCBFeGVjU3RhdGUqLCBjb25zdCBJZGVudGlmaWVyJiwgSlNWYWx1
ZSwgUHV0UHJvcGVydHlTbG90Jik7CisgICAgICAgIHN0YXRpYyBib29sIGdldE93blByb3BlcnR5
U2xvdChKU0NlbGwqLCBFeGVjU3RhdGUqLCBQcm9wZXJ0eU5hbWUsIFByb3BlcnR5U2xvdCYpOwor
ICAgICAgICBzdGF0aWMgdm9pZCBwdXQoSlNDZWxsKiwgRXhlY1N0YXRlKiwgUHJvcGVydHlOYW1l
LCBKU1ZhbHVlLCBQdXRQcm9wZXJ0eVNsb3QmKTsKIAotICAgICAgICBzdGF0aWMgdm9pZCBwdXRE
aXJlY3RWaXJ0dWFsKEpTT2JqZWN0KiwgRXhlY1N0YXRlKiwgY29uc3QgSWRlbnRpZmllciYsIEpT
VmFsdWUsIHVuc2lnbmVkIGF0dHJpYnV0ZXMpOworICAgICAgICBzdGF0aWMgdm9pZCBwdXREaXJl
Y3RWaXJ0dWFsKEpTT2JqZWN0KiwgRXhlY1N0YXRlKiwgUHJvcGVydHlOYW1lLCBKU1ZhbHVlLCB1
bnNpZ25lZCBhdHRyaWJ1dGVzKTsKIAogICAgICAgICBzdGF0aWMgU3RydWN0dXJlKiBjcmVhdGVT
dHJ1Y3R1cmUoSlNHbG9iYWxEYXRhJiBnbG9iYWxEYXRhLCBKU0dsb2JhbE9iamVjdCogZ2xvYmFs
T2JqZWN0LCBKU1ZhbHVlIHByb3RvKSB7IHJldHVybiBTdHJ1Y3R1cmU6OmNyZWF0ZShnbG9iYWxE
YXRhLCBnbG9iYWxPYmplY3QsIHByb3RvLCBUeXBlSW5mbyhTdGF0aWNTY29wZU9iamVjdFR5cGUs
IFN0cnVjdHVyZUZsYWdzKSwgJnNfaW5mbyk7IH0KIApJbmRleDogU291cmNlL0phdmFTY3JpcHRD
b3JlL3J1bnRpbWUvSlNTdHJpbmcuY3BwCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9KYXZhU2NyaXB0
Q29yZS9ydW50aW1lL0pTU3RyaW5nLmNwcAkocmV2aXNpb24gMTE2NjY3KQorKysgU291cmNlL0ph
dmFTY3JpcHRDb3JlL3J1bnRpbWUvSlNTdHJpbmcuY3BwCSh3b3JraW5nIGNvcHkpCkBAIC0yNTcs
NyArMjU3LDcgQEAgSlNPYmplY3QqIEpTU3RyaW5nOjp0b1RoaXNPYmplY3QoSlNDZWxsKgogICAg
IHJldHVybiBTdHJpbmdPYmplY3Q6OmNyZWF0ZShleGVjLCBleGVjLT5sZXhpY2FsR2xvYmFsT2Jq
ZWN0KCksIGpzQ2FzdDxKU1N0cmluZyo+KGNlbGwpKTsKIH0KIAotYm9vbCBKU1N0cmluZzo6Z2V0
T3duUHJvcGVydHlTbG90KEpTQ2VsbCogY2VsbCwgRXhlY1N0YXRlKiBleGVjLCBjb25zdCBJZGVu
dGlmaWVyJiBwcm9wZXJ0eU5hbWUsIFByb3BlcnR5U2xvdCYgc2xvdCkKK2Jvb2wgSlNTdHJpbmc6
OmdldE93blByb3BlcnR5U2xvdChKU0NlbGwqIGNlbGwsIEV4ZWNTdGF0ZSogZXhlYywgUHJvcGVy
dHlOYW1lIHByb3BlcnR5TmFtZSwgUHJvcGVydHlTbG90JiBzbG90KQogewogICAgIEpTU3RyaW5n
KiB0aGlzT2JqZWN0ID0ganNDYXN0PEpTU3RyaW5nKj4oY2VsbCk7CiAgICAgLy8gVGhlIHNlbWFu
dGljcyBoZXJlIGFyZSByZWFsbHkgZ2V0UHJvcGVydHlTbG90LCBub3QgZ2V0T3duUHJvcGVydHlT
bG90LgpAQCAtMjc1LDE2ICsyNzUsMTYgQEAgYm9vbCBKU1N0cmluZzo6Z2V0T3duUHJvcGVydHlT
bG90KEpTQ2VsbAogICAgIHJldHVybiB0cnVlOwogfQogCi1ib29sIEpTU3RyaW5nOjpnZXRTdHJp
bmdQcm9wZXJ0eURlc2NyaXB0b3IoRXhlY1N0YXRlKiBleGVjLCBjb25zdCBJZGVudGlmaWVyJiBw
cm9wZXJ0eU5hbWUsIFByb3BlcnR5RGVzY3JpcHRvciYgZGVzY3JpcHRvcikKK2Jvb2wgSlNTdHJp
bmc6OmdldFN0cmluZ1Byb3BlcnR5RGVzY3JpcHRvcihFeGVjU3RhdGUqIGV4ZWMsIFByb3BlcnR5
TmFtZSBwcm9wZXJ0eU5hbWUsIFByb3BlcnR5RGVzY3JpcHRvciYgZGVzY3JpcHRvcikKIHsKICAg
ICBpZiAocHJvcGVydHlOYW1lID09IGV4ZWMtPnByb3BlcnR5TmFtZXMoKS5sZW5ndGgpIHsKICAg
ICAgICAgZGVzY3JpcHRvci5zZXREZXNjcmlwdG9yKGpzTnVtYmVyKG1fbGVuZ3RoKSwgRG9udEVu
dW0gfCBEb250RGVsZXRlIHwgUmVhZE9ubHkpOwogICAgICAgICByZXR1cm4gdHJ1ZTsKICAgICB9
CiAgICAgCi0gICAgYm9vbCBpc1N0cmljdFVJbnQzMjsKLSAgICB1bnNpZ25lZCBpID0gcHJvcGVy
dHlOYW1lLnRvVUludDMyKGlzU3RyaWN0VUludDMyKTsKLSAgICBpZiAoaXNTdHJpY3RVSW50MzIg
JiYgaSA8IG1fbGVuZ3RoKSB7CisgICAgdW5zaWduZWQgaSA9IHByb3BlcnR5TmFtZS5hc0luZGV4
KCk7CisgICAgaWYgKGkgPCBtX2xlbmd0aCkgeworICAgICAgICBBU1NFUlQoaSAhPSBQcm9wZXJ0
eU5hbWU6Ok5vdEFuSW5kZXgpOyAvLyBObyBuZWVkIGZvciBhbiBleHBsaWNpdCBjaGVjaywgdGhl
IGFib3ZlIHRlc3Qgd291bGQgYWx3YXlzIGZhaWwhCiAgICAgICAgIGRlc2NyaXB0b3Iuc2V0RGVz
Y3JpcHRvcihnZXRJbmRleChleGVjLCBpKSwgRG9udERlbGV0ZSB8IFJlYWRPbmx5KTsKICAgICAg
ICAgcmV0dXJuIHRydWU7CiAgICAgfQpJbmRleDogU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRp
bWUvSlNTdHJpbmcuaAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGlt
ZS9KU1N0cmluZy5oCShyZXZpc2lvbiAxMTY2NjcpCisrKyBTb3VyY2UvSmF2YVNjcmlwdENvcmUv
cnVudGltZS9KU1N0cmluZy5oCSh3b3JraW5nIGNvcHkpCkBAIC0xNDMsOSArMTQzLDkgQEAgbmFt
ZXNwYWNlIEpTQyB7CiAgICAgICAgIEpTT2JqZWN0KiB0b09iamVjdChFeGVjU3RhdGUqLCBKU0ds
b2JhbE9iamVjdCopIGNvbnN0OwogICAgICAgICBkb3VibGUgdG9OdW1iZXIoRXhlY1N0YXRlKikg
Y29uc3Q7CiAgICAgICAgIAotICAgICAgICBib29sIGdldFN0cmluZ1Byb3BlcnR5U2xvdChFeGVj
U3RhdGUqLCBjb25zdCBJZGVudGlmaWVyJiBwcm9wZXJ0eU5hbWUsIFByb3BlcnR5U2xvdCYpOwor
ICAgICAgICBib29sIGdldFN0cmluZ1Byb3BlcnR5U2xvdChFeGVjU3RhdGUqLCBQcm9wZXJ0eU5h
bWUsIFByb3BlcnR5U2xvdCYpOwogICAgICAgICBib29sIGdldFN0cmluZ1Byb3BlcnR5U2xvdChF
eGVjU3RhdGUqLCB1bnNpZ25lZCBwcm9wZXJ0eU5hbWUsIFByb3BlcnR5U2xvdCYpOwotICAgICAg
ICBib29sIGdldFN0cmluZ1Byb3BlcnR5RGVzY3JpcHRvcihFeGVjU3RhdGUqLCBjb25zdCBJZGVu
dGlmaWVyJiBwcm9wZXJ0eU5hbWUsIFByb3BlcnR5RGVzY3JpcHRvciYpOworICAgICAgICBib29s
IGdldFN0cmluZ1Byb3BlcnR5RGVzY3JpcHRvcihFeGVjU3RhdGUqLCBQcm9wZXJ0eU5hbWUsIFBy
b3BlcnR5RGVzY3JpcHRvciYpOwogCiAgICAgICAgIGJvb2wgY2FuR2V0SW5kZXgodW5zaWduZWQg
aSkgeyByZXR1cm4gaSA8IG1fbGVuZ3RoOyB9CiAgICAgICAgIEpTU3RyaW5nKiBnZXRJbmRleChF
eGVjU3RhdGUqLCB1bnNpZ25lZCk7CkBAIC0xODEsNyArMTgxLDcgQEAgbmFtZXNwYWNlIEpTQyB7
CiAgICAgICAgIHN0YXRpYyBKU09iamVjdCogdG9UaGlzT2JqZWN0KEpTQ2VsbCosIEV4ZWNTdGF0
ZSopOwogCiAgICAgICAgIC8vIEFjdHVhbGx5IGdldFByb3BlcnR5U2xvdCwgbm90IGdldE93blBy
b3BlcnR5U2xvdCAoc2VlIEpTQ2VsbCkuCi0gICAgICAgIHN0YXRpYyBib29sIGdldE93blByb3Bl
cnR5U2xvdChKU0NlbGwqLCBFeGVjU3RhdGUqLCBjb25zdCBJZGVudGlmaWVyJiBwcm9wZXJ0eU5h
bWUsIFByb3BlcnR5U2xvdCYpOworICAgICAgICBzdGF0aWMgYm9vbCBnZXRPd25Qcm9wZXJ0eVNs
b3QoSlNDZWxsKiwgRXhlY1N0YXRlKiwgUHJvcGVydHlOYW1lLCBQcm9wZXJ0eVNsb3QmKTsKICAg
ICAgICAgc3RhdGljIGJvb2wgZ2V0T3duUHJvcGVydHlTbG90QnlJbmRleChKU0NlbGwqLCBFeGVj
U3RhdGUqLCB1bnNpZ25lZCBwcm9wZXJ0eU5hbWUsIFByb3BlcnR5U2xvdCYpOwogCiAgICAgICAg
IFVTdHJpbmcmIHN0cmluZygpIHsgQVNTRVJUKCFpc1JvcGUoKSk7IHJldHVybiBtX3ZhbHVlOyB9
CkBAIC00NDksMTYgKzQ0OSwxNiBAQCBuYW1lc3BhY2UgSlNDIHsKICAgICBpbmxpbmUgSlNTdHJp
bmcqIGpzTm9udHJpdmlhbFN0cmluZyhFeGVjU3RhdGUqIGV4ZWMsIGNvbnN0IGNoYXIqIHMpIHsg
cmV0dXJuIGpzTm9udHJpdmlhbFN0cmluZygmZXhlYy0+Z2xvYmFsRGF0YSgpLCBzKTsgfQogICAg
IGlubGluZSBKU1N0cmluZyoganNPd25lZFN0cmluZyhFeGVjU3RhdGUqIGV4ZWMsIGNvbnN0IFVT
dHJpbmcmIHMpIHsgcmV0dXJuIGpzT3duZWRTdHJpbmcoJmV4ZWMtPmdsb2JhbERhdGEoKSwgcyk7
IH0gCiAKLSAgICBBTFdBWVNfSU5MSU5FIGJvb2wgSlNTdHJpbmc6OmdldFN0cmluZ1Byb3BlcnR5
U2xvdChFeGVjU3RhdGUqIGV4ZWMsIGNvbnN0IElkZW50aWZpZXImIHByb3BlcnR5TmFtZSwgUHJv
cGVydHlTbG90JiBzbG90KQorICAgIEFMV0FZU19JTkxJTkUgYm9vbCBKU1N0cmluZzo6Z2V0U3Ry
aW5nUHJvcGVydHlTbG90KEV4ZWNTdGF0ZSogZXhlYywgUHJvcGVydHlOYW1lIHByb3BlcnR5TmFt
ZSwgUHJvcGVydHlTbG90JiBzbG90KQogICAgIHsKICAgICAgICAgaWYgKHByb3BlcnR5TmFtZSA9
PSBleGVjLT5wcm9wZXJ0eU5hbWVzKCkubGVuZ3RoKSB7CiAgICAgICAgICAgICBzbG90LnNldFZh
bHVlKGpzTnVtYmVyKG1fbGVuZ3RoKSk7CiAgICAgICAgICAgICByZXR1cm4gdHJ1ZTsKICAgICAg
ICAgfQogCi0gICAgICAgIGJvb2wgaXNTdHJpY3RVSW50MzI7Ci0gICAgICAgIHVuc2lnbmVkIGkg
PSBwcm9wZXJ0eU5hbWUudG9VSW50MzIoaXNTdHJpY3RVSW50MzIpOwotICAgICAgICBpZiAoaXNT
dHJpY3RVSW50MzIgJiYgaSA8IG1fbGVuZ3RoKSB7CisgICAgICAgIHVuc2lnbmVkIGkgPSBwcm9w
ZXJ0eU5hbWUuYXNJbmRleCgpOworICAgICAgICBpZiAoaSA8IG1fbGVuZ3RoKSB7CisgICAgICAg
ICAgICBBU1NFUlQoaSAhPSBQcm9wZXJ0eU5hbWU6Ok5vdEFuSW5kZXgpOyAvLyBObyBuZWVkIGZv
ciBhbiBleHBsaWNpdCBjaGVjaywgdGhlIGFib3ZlIHRlc3Qgd291bGQgYWx3YXlzIGZhaWwhCiAg
ICAgICAgICAgICBzbG90LnNldFZhbHVlKGdldEluZGV4KGV4ZWMsIGkpKTsKICAgICAgICAgICAg
IHJldHVybiB0cnVlOwogICAgICAgICB9CkluZGV4OiBTb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVu
dGltZS9KU1ZhbHVlLmNwcAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVu
dGltZS9KU1ZhbHVlLmNwcAkocmV2aXNpb24gMTE2NjY3KQorKysgU291cmNlL0phdmFTY3JpcHRD
b3JlL3J1bnRpbWUvSlNWYWx1ZS5jcHAJKHdvcmtpbmcgY29weSkKQEAgLTEwOSw3ICsxMDksNyBA
QCBKU09iamVjdCogSlNWYWx1ZTo6c3ludGhlc2l6ZVByb3RvdHlwZShFCiB9CiAKIC8vIEVDTUEg
OC43LjIKLXZvaWQgSlNWYWx1ZTo6cHV0VG9QcmltaXRpdmUoRXhlY1N0YXRlKiBleGVjLCBjb25z
dCBJZGVudGlmaWVyJiBwcm9wZXJ0eU5hbWUsIEpTVmFsdWUgdmFsdWUsIFB1dFByb3BlcnR5U2xv
dCYgc2xvdCkKK3ZvaWQgSlNWYWx1ZTo6cHV0VG9QcmltaXRpdmUoRXhlY1N0YXRlKiBleGVjLCBQ
cm9wZXJ0eU5hbWUgcHJvcGVydHlOYW1lLCBKU1ZhbHVlIHZhbHVlLCBQdXRQcm9wZXJ0eVNsb3Qm
IHNsb3QpCiB7CiAgICAgSlNHbG9iYWxEYXRhJiBnbG9iYWxEYXRhID0gZXhlYy0+Z2xvYmFsRGF0
YSgpOwogCkluZGV4OiBTb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9KU1ZhbHVlLmgKPT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PQotLS0gU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvSlNWYWx1ZS5oCShyZXZp
c2lvbiAxMTY2NjcpCisrKyBTb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9KU1ZhbHVlLmgJ
KHdvcmtpbmcgY29weSkKQEAgLTM2LDEyICszNiwxMiBAQAogbmFtZXNwYWNlIEpTQyB7CiAKICAg
ICBjbGFzcyBFeGVjU3RhdGU7Ci0gICAgY2xhc3MgSWRlbnRpZmllcjsKICAgICBjbGFzcyBKU0Nl
bGw7CiAgICAgY2xhc3MgSlNHbG9iYWxEYXRhOwogICAgIGNsYXNzIEpTR2xvYmFsT2JqZWN0Owog
ICAgIGNsYXNzIEpTT2JqZWN0OwogICAgIGNsYXNzIEpTU3RyaW5nOworICAgIGNsYXNzIFByb3Bl
cnR5TmFtZTsKICAgICBjbGFzcyBQcm9wZXJ0eVNsb3Q7CiAgICAgY2xhc3MgUHV0UHJvcGVydHlT
bG90OwogICAgIGNsYXNzIFVTdHJpbmc7CkBAIC0yMTksMTIgKzIxOSwxMiBAQCBuYW1lc3BhY2Ug
SlNDIHsKICAgICAgICAgZmxvYXQgdG9GbG9hdChFeGVjU3RhdGUqIGV4ZWMpIGNvbnN0IHsgcmV0
dXJuIHN0YXRpY19jYXN0PGZsb2F0Pih0b051bWJlcihleGVjKSk7IH0KIAogICAgICAgICAvLyBP
YmplY3Qgb3BlcmF0aW9ucywgd2l0aCB0aGUgdG9PYmplY3Qgb3BlcmF0aW9uIGluY2x1ZGVkLgot
ICAgICAgICBKU1ZhbHVlIGdldChFeGVjU3RhdGUqLCBjb25zdCBJZGVudGlmaWVyJiBwcm9wZXJ0
eU5hbWUpIGNvbnN0OwotICAgICAgICBKU1ZhbHVlIGdldChFeGVjU3RhdGUqLCBjb25zdCBJZGVu
dGlmaWVyJiBwcm9wZXJ0eU5hbWUsIFByb3BlcnR5U2xvdCYpIGNvbnN0OworICAgICAgICBKU1Zh
bHVlIGdldChFeGVjU3RhdGUqLCBQcm9wZXJ0eU5hbWUpIGNvbnN0OworICAgICAgICBKU1ZhbHVl
IGdldChFeGVjU3RhdGUqLCBQcm9wZXJ0eU5hbWUsIFByb3BlcnR5U2xvdCYpIGNvbnN0OwogICAg
ICAgICBKU1ZhbHVlIGdldChFeGVjU3RhdGUqLCB1bnNpZ25lZCBwcm9wZXJ0eU5hbWUpIGNvbnN0
OwogICAgICAgICBKU1ZhbHVlIGdldChFeGVjU3RhdGUqLCB1bnNpZ25lZCBwcm9wZXJ0eU5hbWUs
IFByb3BlcnR5U2xvdCYpIGNvbnN0OwotICAgICAgICB2b2lkIHB1dChFeGVjU3RhdGUqLCBjb25z
dCBJZGVudGlmaWVyJiBwcm9wZXJ0eU5hbWUsIEpTVmFsdWUsIFB1dFByb3BlcnR5U2xvdCYpOwot
ICAgICAgICB2b2lkIHB1dFRvUHJpbWl0aXZlKEV4ZWNTdGF0ZSosIGNvbnN0IElkZW50aWZpZXIm
IHByb3BlcnR5TmFtZSwgSlNWYWx1ZSwgUHV0UHJvcGVydHlTbG90Jik7CisgICAgICAgIHZvaWQg
cHV0KEV4ZWNTdGF0ZSosIFByb3BlcnR5TmFtZSwgSlNWYWx1ZSwgUHV0UHJvcGVydHlTbG90Jik7
CisgICAgICAgIHZvaWQgcHV0VG9QcmltaXRpdmUoRXhlY1N0YXRlKiwgUHJvcGVydHlOYW1lLCBK
U1ZhbHVlLCBQdXRQcm9wZXJ0eVNsb3QmKTsKICAgICAgICAgdm9pZCBwdXRCeUluZGV4KEV4ZWNT
dGF0ZSosIHVuc2lnbmVkIHByb3BlcnR5TmFtZSwgSlNWYWx1ZSwgYm9vbCBzaG91bGRUaHJvdyk7
CiAKICAgICAgICAgSlNPYmplY3QqIHRvVGhpc09iamVjdChFeGVjU3RhdGUqKSBjb25zdDsKSW5k
ZXg6IFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL0pTVmFyaWFibGVPYmplY3QuY3BwCj09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT0KLS0tIFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL0pTVmFyaWFibGVPYmpl
Y3QuY3BwCShyZXZpc2lvbiAxMTY2NjcpCisrKyBTb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGlt
ZS9KU1ZhcmlhYmxlT2JqZWN0LmNwcAkod29ya2luZyBjb3B5KQpAQCAtNDIsNyArNDIsNyBAQCB2
b2lkIEpTVmFyaWFibGVPYmplY3Q6OmRlc3Ryb3koSlNDZWxsKiBjCiAgICAganNDYXN0PEpTVmFy
aWFibGVPYmplY3QqPihjZWxsKS0+SlNWYXJpYWJsZU9iamVjdDo6fkpTVmFyaWFibGVPYmplY3Qo
KTsKIH0KIAotYm9vbCBKU1ZhcmlhYmxlT2JqZWN0OjpkZWxldGVQcm9wZXJ0eShKU0NlbGwqIGNl
bGwsIEV4ZWNTdGF0ZSogZXhlYywgY29uc3QgSWRlbnRpZmllciYgcHJvcGVydHlOYW1lKQorYm9v
bCBKU1ZhcmlhYmxlT2JqZWN0OjpkZWxldGVQcm9wZXJ0eShKU0NlbGwqIGNlbGwsIEV4ZWNTdGF0
ZSogZXhlYywgUHJvcGVydHlOYW1lIHByb3BlcnR5TmFtZSkKIHsKICAgICBKU1ZhcmlhYmxlT2Jq
ZWN0KiB0aGlzT2JqZWN0ID0ganNDYXN0PEpTVmFyaWFibGVPYmplY3QqPihjZWxsKTsKICAgICBp
ZiAodGhpc09iamVjdC0+c3ltYm9sVGFibGUoKS5jb250YWlucyhwcm9wZXJ0eU5hbWUuaW1wbCgp
KSkKQEAgLTYzLDcgKzYzLDcgQEAgdm9pZCBKU1ZhcmlhYmxlT2JqZWN0OjpnZXRPd25Qcm9wZXJ0
eU5hbQogICAgIEpTT2JqZWN0OjpnZXRPd25Qcm9wZXJ0eU5hbWVzKHRoaXNPYmplY3QsIGV4ZWMs
IHByb3BlcnR5TmFtZXMsIG1vZGUpOwogfQogCi1ib29sIEpTVmFyaWFibGVPYmplY3Q6OnN5bWJv
bFRhYmxlR2V0KGNvbnN0IElkZW50aWZpZXImIHByb3BlcnR5TmFtZSwgUHJvcGVydHlEZXNjcmlw
dG9yJiBkZXNjcmlwdG9yKQorYm9vbCBKU1ZhcmlhYmxlT2JqZWN0OjpzeW1ib2xUYWJsZUdldChQ
cm9wZXJ0eU5hbWUgcHJvcGVydHlOYW1lLCBQcm9wZXJ0eURlc2NyaXB0b3ImIGRlc2NyaXB0b3Ip
CiB7CiAgICAgU3ltYm9sVGFibGVFbnRyeSBlbnRyeSA9IHN5bWJvbFRhYmxlKCkuaW5saW5lR2V0
KHByb3BlcnR5TmFtZS5pbXBsKCkpOwogICAgIGlmICghZW50cnkuaXNOdWxsKCkpIHsKQEAgLTcz
LDcgKzczLDcgQEAgYm9vbCBKU1ZhcmlhYmxlT2JqZWN0OjpzeW1ib2xUYWJsZUdldChjbwogICAg
IHJldHVybiBmYWxzZTsKIH0KIAotdm9pZCBKU1ZhcmlhYmxlT2JqZWN0OjpwdXREaXJlY3RWaXJ0
dWFsKEpTT2JqZWN0KiwgRXhlY1N0YXRlKiwgY29uc3QgSWRlbnRpZmllciYsIEpTVmFsdWUsIHVu
c2lnbmVkKQordm9pZCBKU1ZhcmlhYmxlT2JqZWN0OjpwdXREaXJlY3RWaXJ0dWFsKEpTT2JqZWN0
KiwgRXhlY1N0YXRlKiwgUHJvcGVydHlOYW1lLCBKU1ZhbHVlLCB1bnNpZ25lZCkKIHsKICAgICBB
U1NFUlRfTk9UX1JFQUNIRUQoKTsKIH0KSW5kZXg6IFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50
aW1lL0pTVmFyaWFibGVPYmplY3QuaAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvSmF2YVNjcmlwdENv
cmUvcnVudGltZS9KU1ZhcmlhYmxlT2JqZWN0LmgJKHJldmlzaW9uIDExNjY2NykKKysrIFNvdXJj
ZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL0pTVmFyaWFibGVPYmplY3QuaAkod29ya2luZyBjb3B5
KQpAQCAtNTIsOSArNTIsOSBAQCBuYW1lc3BhY2UgSlNDIHsKIAogICAgICAgICBKU19FWFBPUlRf
UFJJVkFURSBzdGF0aWMgdm9pZCBkZXN0cm95KEpTQ2VsbCopOwogCi0gICAgICAgIHN0YXRpYyBO
T19SRVRVUk5fRFVFX1RPX0FTU0VSVCB2b2lkIHB1dERpcmVjdFZpcnR1YWwoSlNPYmplY3QqLCBF
eGVjU3RhdGUqLCBjb25zdCBJZGVudGlmaWVyJiwgSlNWYWx1ZSwgdW5zaWduZWQgYXR0cmlidXRl
cyk7CisgICAgICAgIHN0YXRpYyBOT19SRVRVUk5fRFVFX1RPX0FTU0VSVCB2b2lkIHB1dERpcmVj
dFZpcnR1YWwoSlNPYmplY3QqLCBFeGVjU3RhdGUqLCBQcm9wZXJ0eU5hbWUsIEpTVmFsdWUsIHVu
c2lnbmVkIGF0dHJpYnV0ZXMpOwogCi0gICAgICAgIEpTX0VYUE9SVF9QUklWQVRFIHN0YXRpYyBi
b29sIGRlbGV0ZVByb3BlcnR5KEpTQ2VsbCosIEV4ZWNTdGF0ZSosIGNvbnN0IElkZW50aWZpZXIm
KTsKKyAgICAgICAgSlNfRVhQT1JUX1BSSVZBVEUgc3RhdGljIGJvb2wgZGVsZXRlUHJvcGVydHko
SlNDZWxsKiwgRXhlY1N0YXRlKiwgUHJvcGVydHlOYW1lKTsKICAgICAgICAgSlNfRVhQT1JUX1BS
SVZBVEUgc3RhdGljIHZvaWQgZ2V0T3duUHJvcGVydHlOYW1lcyhKU09iamVjdCosIEV4ZWNTdGF0
ZSosIFByb3BlcnR5TmFtZUFycmF5JiwgRW51bWVyYXRpb25Nb2RlKTsKICAgICAgICAgCiAgICAg
ICAgIGJvb2wgaXNEeW5hbWljU2NvcGUoYm9vbCYgcmVxdWlyZXNEeW5hbWljQ2hlY2tzKSBjb25z
dDsKQEAgLTg5LDE4ICs4OSwxOCBAQCBuYW1lc3BhY2UgSlNDIHsKICAgICAgICAgUGFzc093bkFy
cmF5UHRyPFdyaXRlQmFycmllcjxVbmtub3duPiA+IGNvcHlSZWdpc3RlckFycmF5KEpTR2xvYmFs
RGF0YSYsIFdyaXRlQmFycmllcjxVbmtub3duPiogc3JjLCBzaXplX3QgY291bnQsIHNpemVfdCBj
YWxsZnJhbWVTdGFydHMpOwogICAgICAgICB2b2lkIHNldFJlZ2lzdGVycyhXcml0ZUJhcnJpZXI8
VW5rbm93bj4qIHJlZ2lzdGVycywgUGFzc093bkFycmF5UHRyPFdyaXRlQmFycmllcjxVbmtub3du
PiA+IHJlZ2lzdGVyQXJyYXkpOwogCi0gICAgICAgIGJvb2wgc3ltYm9sVGFibGVHZXQoY29uc3Qg
SWRlbnRpZmllciYsIFByb3BlcnR5U2xvdCYpOwotICAgICAgICBKU19FWFBPUlRfUFJJVkFURSBi
b29sIHN5bWJvbFRhYmxlR2V0KGNvbnN0IElkZW50aWZpZXImLCBQcm9wZXJ0eURlc2NyaXB0b3Im
KTsKLSAgICAgICAgYm9vbCBzeW1ib2xUYWJsZUdldChjb25zdCBJZGVudGlmaWVyJiwgUHJvcGVy
dHlTbG90JiwgYm9vbCYgc2xvdElzV3JpdGVhYmxlKTsKLSAgICAgICAgYm9vbCBzeW1ib2xUYWJs
ZVB1dChFeGVjU3RhdGUqLCBjb25zdCBJZGVudGlmaWVyJiwgSlNWYWx1ZSwgYm9vbCBzaG91bGRU
aHJvdyk7Ci0gICAgICAgIGJvb2wgc3ltYm9sVGFibGVQdXRXaXRoQXR0cmlidXRlcyhKU0dsb2Jh
bERhdGEmLCBjb25zdCBJZGVudGlmaWVyJiwgSlNWYWx1ZSwgdW5zaWduZWQgYXR0cmlidXRlcyk7
CisgICAgICAgIGJvb2wgc3ltYm9sVGFibGVHZXQoUHJvcGVydHlOYW1lLCBQcm9wZXJ0eVNsb3Qm
KTsKKyAgICAgICAgSlNfRVhQT1JUX1BSSVZBVEUgYm9vbCBzeW1ib2xUYWJsZUdldChQcm9wZXJ0
eU5hbWUsIFByb3BlcnR5RGVzY3JpcHRvciYpOworICAgICAgICBib29sIHN5bWJvbFRhYmxlR2V0
KFByb3BlcnR5TmFtZSwgUHJvcGVydHlTbG90JiwgYm9vbCYgc2xvdElzV3JpdGVhYmxlKTsKKyAg
ICAgICAgYm9vbCBzeW1ib2xUYWJsZVB1dChFeGVjU3RhdGUqLCBQcm9wZXJ0eU5hbWUsIEpTVmFs
dWUsIGJvb2wgc2hvdWxkVGhyb3cpOworICAgICAgICBib29sIHN5bWJvbFRhYmxlUHV0V2l0aEF0
dHJpYnV0ZXMoSlNHbG9iYWxEYXRhJiwgUHJvcGVydHlOYW1lLCBKU1ZhbHVlLCB1bnNpZ25lZCBh
dHRyaWJ1dGVzKTsKIAogICAgICAgICBTeW1ib2xUYWJsZSogbV9zeW1ib2xUYWJsZTsgLy8gTWFw
cyBuYW1lIC0+IG9mZnNldCBmcm9tICJyIiBpbiByZWdpc3RlciBmaWxlLgogICAgICAgICBXcml0
ZUJhcnJpZXI8VW5rbm93bj4qIG1fcmVnaXN0ZXJzOyAvLyAiciIgaW4gdGhlIHJlZ2lzdGVyIGZp
bGUuCiAgICAgICAgIE93bkFycmF5UHRyPFdyaXRlQmFycmllcjxVbmtub3duPiA+IG1fcmVnaXN0
ZXJBcnJheTsgLy8gSW5kZXBlbmRlbnQgY29weSBvZiByZWdpc3RlcnMsIHVzZWQgd2hlbiBhIHZh
cmlhYmxlIG9iamVjdCBjb3BpZXMgaXRzIHJlZ2lzdGVycyBvdXQgb2YgdGhlIHJlZ2lzdGVyIGZp
bGUuCiAgICAgfTsKIAotICAgIGlubGluZSBib29sIEpTVmFyaWFibGVPYmplY3Q6OnN5bWJvbFRh
YmxlR2V0KGNvbnN0IElkZW50aWZpZXImIHByb3BlcnR5TmFtZSwgUHJvcGVydHlTbG90JiBzbG90
KQorICAgIGlubGluZSBib29sIEpTVmFyaWFibGVPYmplY3Q6OnN5bWJvbFRhYmxlR2V0KFByb3Bl
cnR5TmFtZSBwcm9wZXJ0eU5hbWUsIFByb3BlcnR5U2xvdCYgc2xvdCkKICAgICB7CiAgICAgICAg
IFN5bWJvbFRhYmxlRW50cnkgZW50cnkgPSBzeW1ib2xUYWJsZSgpLmlubGluZUdldChwcm9wZXJ0
eU5hbWUuaW1wbCgpKTsKICAgICAgICAgaWYgKCFlbnRyeS5pc051bGwoKSkgewpAQCAtMTEwLDcg
KzExMCw3IEBAIG5hbWVzcGFjZSBKU0MgewogICAgICAgICByZXR1cm4gZmFsc2U7CiAgICAgfQog
Ci0gICAgaW5saW5lIGJvb2wgSlNWYXJpYWJsZU9iamVjdDo6c3ltYm9sVGFibGVHZXQoY29uc3Qg
SWRlbnRpZmllciYgcHJvcGVydHlOYW1lLCBQcm9wZXJ0eVNsb3QmIHNsb3QsIGJvb2wmIHNsb3RJ
c1dyaXRlYWJsZSkKKyAgICBpbmxpbmUgYm9vbCBKU1ZhcmlhYmxlT2JqZWN0OjpzeW1ib2xUYWJs
ZUdldChQcm9wZXJ0eU5hbWUgcHJvcGVydHlOYW1lLCBQcm9wZXJ0eVNsb3QmIHNsb3QsIGJvb2wm
IHNsb3RJc1dyaXRlYWJsZSkKICAgICB7CiAgICAgICAgIFN5bWJvbFRhYmxlRW50cnkgZW50cnkg
PSBzeW1ib2xUYWJsZSgpLmlubGluZUdldChwcm9wZXJ0eU5hbWUuaW1wbCgpKTsKICAgICAgICAg
aWYgKCFlbnRyeS5pc051bGwoKSkgewpAQCAtMTIxLDcgKzEyMSw3IEBAIG5hbWVzcGFjZSBKU0Mg
ewogICAgICAgICByZXR1cm4gZmFsc2U7CiAgICAgfQogCi0gICAgaW5saW5lIGJvb2wgSlNWYXJp
YWJsZU9iamVjdDo6c3ltYm9sVGFibGVQdXQoRXhlY1N0YXRlKiBleGVjLCBjb25zdCBJZGVudGlm
aWVyJiBwcm9wZXJ0eU5hbWUsIEpTVmFsdWUgdmFsdWUsIGJvb2wgc2hvdWxkVGhyb3cpCisgICAg
aW5saW5lIGJvb2wgSlNWYXJpYWJsZU9iamVjdDo6c3ltYm9sVGFibGVQdXQoRXhlY1N0YXRlKiBl
eGVjLCBQcm9wZXJ0eU5hbWUgcHJvcGVydHlOYW1lLCBKU1ZhbHVlIHZhbHVlLCBib29sIHNob3Vs
ZFRocm93KQogICAgIHsKICAgICAgICAgSlNHbG9iYWxEYXRhJiBnbG9iYWxEYXRhID0gZXhlYy0+
Z2xvYmFsRGF0YSgpOwogICAgICAgICBBU1NFUlQoIUhlYXA6OmhlYXAodmFsdWUpIHx8IEhlYXA6
OmhlYXAodmFsdWUpID09IEhlYXA6OmhlYXAodGhpcykpOwpAQCAtMTM4LDcgKzEzOCw3IEBAIG5h
bWVzcGFjZSBKU0MgewogICAgICAgICByZXR1cm4gdHJ1ZTsKICAgICB9CiAKLSAgICBpbmxpbmUg
Ym9vbCBKU1ZhcmlhYmxlT2JqZWN0OjpzeW1ib2xUYWJsZVB1dFdpdGhBdHRyaWJ1dGVzKEpTR2xv
YmFsRGF0YSYgZ2xvYmFsRGF0YSwgY29uc3QgSWRlbnRpZmllciYgcHJvcGVydHlOYW1lLCBKU1Zh
bHVlIHZhbHVlLCB1bnNpZ25lZCBhdHRyaWJ1dGVzKQorICAgIGlubGluZSBib29sIEpTVmFyaWFi
bGVPYmplY3Q6OnN5bWJvbFRhYmxlUHV0V2l0aEF0dHJpYnV0ZXMoSlNHbG9iYWxEYXRhJiBnbG9i
YWxEYXRhLCBQcm9wZXJ0eU5hbWUgcHJvcGVydHlOYW1lLCBKU1ZhbHVlIHZhbHVlLCB1bnNpZ25l
ZCBhdHRyaWJ1dGVzKQogICAgIHsKICAgICAgICAgQVNTRVJUKCFIZWFwOjpoZWFwKHZhbHVlKSB8
fCBIZWFwOjpoZWFwKHZhbHVlKSA9PSBIZWFwOjpoZWFwKHRoaXMpKTsKIApJbmRleDogU291cmNl
L0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvTG9va3VwLmNwcAo9PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2Uv
SmF2YVNjcmlwdENvcmUvcnVudGltZS9Mb29rdXAuY3BwCShyZXZpc2lvbiAxMTY2NjcpCisrKyBT
b3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9Mb29rdXAuY3BwCSh3b3JraW5nIGNvcHkpCkBA
IC02NCw3ICs2NCw3IEBAIHZvaWQgSGFzaFRhYmxlOjpkZWxldGVUYWJsZSgpIGNvbnN0CiAgICAg
fQogfQogCi1ib29sIHNldFVwU3RhdGljRnVuY3Rpb25TbG90KEV4ZWNTdGF0ZSogZXhlYywgY29u
c3QgSGFzaEVudHJ5KiBlbnRyeSwgSlNPYmplY3QqIHRoaXNPYmosIGNvbnN0IElkZW50aWZpZXIm
IHByb3BlcnR5TmFtZSwgUHJvcGVydHlTbG90JiBzbG90KQorYm9vbCBzZXRVcFN0YXRpY0Z1bmN0
aW9uU2xvdChFeGVjU3RhdGUqIGV4ZWMsIGNvbnN0IEhhc2hFbnRyeSogZW50cnksIEpTT2JqZWN0
KiB0aGlzT2JqLCBQcm9wZXJ0eU5hbWUgcHJvcGVydHlOYW1lLCBQcm9wZXJ0eVNsb3QmIHNsb3Qp
CiB7CiAgICAgQVNTRVJUKHRoaXNPYmotPmdsb2JhbE9iamVjdCgpKTsKICAgICBBU1NFUlQoZW50
cnktPmF0dHJpYnV0ZXMoKSAmIEZ1bmN0aW9uKTsKQEAgLTc2LDcgKzc2LDcgQEAgYm9vbCBzZXRV
cFN0YXRpY0Z1bmN0aW9uU2xvdChFeGVjU3RhdGUqIAogICAgICAgICBpZiAodGhpc09iai0+c3Rh
dGljRnVuY3Rpb25zUmVpZmllZCgpKQogICAgICAgICAgICAgcmV0dXJuIGZhbHNlOwogICAgIAot
ICAgICAgICBKU0Z1bmN0aW9uKiBmdW5jdGlvbiA9IEpTRnVuY3Rpb246OmNyZWF0ZShleGVjLCB0
aGlzT2JqLT5nbG9iYWxPYmplY3QoKSwgZW50cnktPmZ1bmN0aW9uTGVuZ3RoKCksIHByb3BlcnR5
TmFtZSwgZW50cnktPmZ1bmN0aW9uKCksIGVudHJ5LT5pbnRyaW5zaWMoKSk7CisgICAgICAgIEpT
RnVuY3Rpb24qIGZ1bmN0aW9uID0gSlNGdW5jdGlvbjo6Y3JlYXRlKGV4ZWMsIHRoaXNPYmotPmds
b2JhbE9iamVjdCgpLCBlbnRyeS0+ZnVuY3Rpb25MZW5ndGgoKSwgcHJvcGVydHlOYW1lLnVzdHJp
bmcoKSwgZW50cnktPmZ1bmN0aW9uKCksIGVudHJ5LT5pbnRyaW5zaWMoKSk7CiAgICAgICAgIHRo
aXNPYmotPnB1dERpcmVjdChleGVjLT5nbG9iYWxEYXRhKCksIHByb3BlcnR5TmFtZSwgZnVuY3Rp
b24sIGVudHJ5LT5hdHRyaWJ1dGVzKCkpOwogICAgICAgICBsb2NhdGlvbiA9IHRoaXNPYmotPmdl
dERpcmVjdExvY2F0aW9uKGV4ZWMtPmdsb2JhbERhdGEoKSwgcHJvcGVydHlOYW1lKTsKICAgICB9
CkluZGV4OiBTb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9Mb29rdXAuaAo9PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
Ci0tLSBTb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9Mb29rdXAuaAkocmV2aXNpb24gMTE2
NjY3KQorKysgU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvTG9va3VwLmgJKHdvcmtpbmcg
Y29weSkKQEAgLTEyOSwxMyArMTI5LDEzIEBAIG5hbWVzcGFjZSBKU0MgewogICAgICAgICBKU19F
WFBPUlRfUFJJVkFURSB2b2lkIGRlbGV0ZVRhYmxlKCkgY29uc3Q7CiAKICAgICAgICAgLy8gRmlu
ZCBhbiBlbnRyeSBpbiB0aGUgdGFibGUsIGFuZCByZXR1cm4gdGhlIGVudHJ5LgotICAgICAgICBB
TFdBWVNfSU5MSU5FIGNvbnN0IEhhc2hFbnRyeSogZW50cnkoSlNHbG9iYWxEYXRhKiBnbG9iYWxE
YXRhLCBjb25zdCBJZGVudGlmaWVyJiBpZGVudGlmaWVyKSBjb25zdAorICAgICAgICBBTFdBWVNf
SU5MSU5FIGNvbnN0IEhhc2hFbnRyeSogZW50cnkoSlNHbG9iYWxEYXRhKiBnbG9iYWxEYXRhLCBQ
cm9wZXJ0eU5hbWUgaWRlbnRpZmllcikgY29uc3QKICAgICAgICAgewogICAgICAgICAgICAgaW5p
dGlhbGl6ZUlmTmVlZGVkKGdsb2JhbERhdGEpOwogICAgICAgICAgICAgcmV0dXJuIGVudHJ5KGlk
ZW50aWZpZXIpOwogICAgICAgICB9CiAKLSAgICAgICAgQUxXQVlTX0lOTElORSBjb25zdCBIYXNo
RW50cnkqIGVudHJ5KEV4ZWNTdGF0ZSogZXhlYywgY29uc3QgSWRlbnRpZmllciYgaWRlbnRpZmll
cikgY29uc3QKKyAgICAgICAgQUxXQVlTX0lOTElORSBjb25zdCBIYXNoRW50cnkqIGVudHJ5KEV4
ZWNTdGF0ZSogZXhlYywgUHJvcGVydHlOYW1lIGlkZW50aWZpZXIpIGNvbnN0CiAgICAgICAgIHsK
ICAgICAgICAgICAgIGluaXRpYWxpemVJZk5lZWRlZChleGVjKTsKICAgICAgICAgICAgIHJldHVy
biBlbnRyeShpZGVudGlmaWVyKTsKQEAgLTE5OSw3ICsxOTksNyBAQCBuYW1lc3BhY2UgSlNDIHsK
ICAgICAgICAgfQogCiAgICAgcHJpdmF0ZToKLSAgICAgICAgQUxXQVlTX0lOTElORSBjb25zdCBI
YXNoRW50cnkqIGVudHJ5KGNvbnN0IElkZW50aWZpZXImIGlkZW50aWZpZXIpIGNvbnN0CisgICAg
ICAgIEFMV0FZU19JTkxJTkUgY29uc3QgSGFzaEVudHJ5KiBlbnRyeShQcm9wZXJ0eU5hbWUgaWRl
bnRpZmllcikgY29uc3QKICAgICAgICAgewogICAgICAgICAgICAgQVNTRVJUKHRhYmxlKTsKIApA
QCAtMjIxLDcgKzIyMSw3IEBAIG5hbWVzcGFjZSBKU0MgewogICAgICAgICBKU19FWFBPUlRfUFJJ
VkFURSB2b2lkIGNyZWF0ZVRhYmxlKEpTR2xvYmFsRGF0YSopIGNvbnN0OwogICAgIH07CiAKLSAg
ICBKU19FWFBPUlRfUFJJVkFURSBib29sIHNldFVwU3RhdGljRnVuY3Rpb25TbG90KEV4ZWNTdGF0
ZSosIGNvbnN0IEhhc2hFbnRyeSosIEpTT2JqZWN0KiB0aGlzT2JqZWN0LCBjb25zdCBJZGVudGlm
aWVyJiBwcm9wZXJ0eU5hbWUsIFByb3BlcnR5U2xvdCYpOworICAgIEpTX0VYUE9SVF9QUklWQVRF
IGJvb2wgc2V0VXBTdGF0aWNGdW5jdGlvblNsb3QoRXhlY1N0YXRlKiwgY29uc3QgSGFzaEVudHJ5
KiwgSlNPYmplY3QqIHRoaXNPYmplY3QsIFByb3BlcnR5TmFtZSwgUHJvcGVydHlTbG90Jik7CiAK
ICAgICAvKioKICAgICAgKiBUaGlzIG1ldGhvZCBkb2VzIGl0IGFsbCAobG9va2luZyBpbiB0aGUg
aGFzaHRhYmxlLCBjaGVja2luZyBmb3IgZnVuY3Rpb24KQEAgLTIzMCw3ICsyMzAsNyBAQCBuYW1l
c3BhY2UgSlNDIHsKICAgICAgKiB1bmtub3duIHByb3BlcnR5KS4KICAgICAgKi8KICAgICB0ZW1w
bGF0ZSA8Y2xhc3MgVGhpc0ltcCwgY2xhc3MgUGFyZW50SW1wPgotICAgIGlubGluZSBib29sIGdl
dFN0YXRpY1Byb3BlcnR5U2xvdChFeGVjU3RhdGUqIGV4ZWMsIGNvbnN0IEhhc2hUYWJsZSogdGFi
bGUsIFRoaXNJbXAqIHRoaXNPYmosIGNvbnN0IElkZW50aWZpZXImIHByb3BlcnR5TmFtZSwgUHJv
cGVydHlTbG90JiBzbG90KQorICAgIGlubGluZSBib29sIGdldFN0YXRpY1Byb3BlcnR5U2xvdChF
eGVjU3RhdGUqIGV4ZWMsIGNvbnN0IEhhc2hUYWJsZSogdGFibGUsIFRoaXNJbXAqIHRoaXNPYmos
IFByb3BlcnR5TmFtZSBwcm9wZXJ0eU5hbWUsIFByb3BlcnR5U2xvdCYgc2xvdCkKICAgICB7CiAg
ICAgICAgIGNvbnN0IEhhc2hFbnRyeSogZW50cnkgPSB0YWJsZS0+ZW50cnkoZXhlYywgcHJvcGVy
dHlOYW1lKTsKIApAQCAtMjQ1LDcgKzI0NSw3IEBAIG5hbWVzcGFjZSBKU0MgewogICAgIH0KIAog
ICAgIHRlbXBsYXRlIDxjbGFzcyBUaGlzSW1wLCBjbGFzcyBQYXJlbnRJbXA+Ci0gICAgaW5saW5l
IGJvb2wgZ2V0U3RhdGljUHJvcGVydHlEZXNjcmlwdG9yKEV4ZWNTdGF0ZSogZXhlYywgY29uc3Qg
SGFzaFRhYmxlKiB0YWJsZSwgVGhpc0ltcCogdGhpc09iaiwgY29uc3QgSWRlbnRpZmllciYgcHJv
cGVydHlOYW1lLCBQcm9wZXJ0eURlc2NyaXB0b3ImIGRlc2NyaXB0b3IpCisgICAgaW5saW5lIGJv
b2wgZ2V0U3RhdGljUHJvcGVydHlEZXNjcmlwdG9yKEV4ZWNTdGF0ZSogZXhlYywgY29uc3QgSGFz
aFRhYmxlKiB0YWJsZSwgVGhpc0ltcCogdGhpc09iaiwgUHJvcGVydHlOYW1lIHByb3BlcnR5TmFt
ZSwgUHJvcGVydHlEZXNjcmlwdG9yJiBkZXNjcmlwdG9yKQogICAgIHsKICAgICAgICAgY29uc3Qg
SGFzaEVudHJ5KiBlbnRyeSA9IHRhYmxlLT5lbnRyeShleGVjLCBwcm9wZXJ0eU5hbWUpOwogICAg
ICAgICAKQEAgLTI3MSw3ICsyNzEsNyBAQCBuYW1lc3BhY2UgSlNDIHsKICAgICAgKiBhIGR1bW15
IGdldFZhbHVlUHJvcGVydHkuCiAgICAgICovCiAgICAgdGVtcGxhdGUgPGNsYXNzIFBhcmVudElt
cD4KLSAgICBpbmxpbmUgYm9vbCBnZXRTdGF0aWNGdW5jdGlvblNsb3QoRXhlY1N0YXRlKiBleGVj
LCBjb25zdCBIYXNoVGFibGUqIHRhYmxlLCBKU09iamVjdCogdGhpc09iaiwgY29uc3QgSWRlbnRp
ZmllciYgcHJvcGVydHlOYW1lLCBQcm9wZXJ0eVNsb3QmIHNsb3QpCisgICAgaW5saW5lIGJvb2wg
Z2V0U3RhdGljRnVuY3Rpb25TbG90KEV4ZWNTdGF0ZSogZXhlYywgY29uc3QgSGFzaFRhYmxlKiB0
YWJsZSwgSlNPYmplY3QqIHRoaXNPYmosIFByb3BlcnR5TmFtZSBwcm9wZXJ0eU5hbWUsIFByb3Bl
cnR5U2xvdCYgc2xvdCkKICAgICB7CiAgICAgICAgIGlmIChQYXJlbnRJbXA6OmdldE93blByb3Bl
cnR5U2xvdCh0aGlzT2JqLCBleGVjLCBwcm9wZXJ0eU5hbWUsIHNsb3QpKQogICAgICAgICAgICAg
cmV0dXJuIHRydWU7CkBAIC0yODksNyArMjg5LDcgQEAgbmFtZXNwYWNlIEpTQyB7CiAgICAgICog
YSBkdW1teSBnZXRWYWx1ZVByb3BlcnR5LgogICAgICAqLwogICAgIHRlbXBsYXRlIDxjbGFzcyBQ
YXJlbnRJbXA+Ci0gICAgaW5saW5lIGJvb2wgZ2V0U3RhdGljRnVuY3Rpb25EZXNjcmlwdG9yKEV4
ZWNTdGF0ZSogZXhlYywgY29uc3QgSGFzaFRhYmxlKiB0YWJsZSwgSlNPYmplY3QqIHRoaXNPYmos
IGNvbnN0IElkZW50aWZpZXImIHByb3BlcnR5TmFtZSwgUHJvcGVydHlEZXNjcmlwdG9yJiBkZXNj
cmlwdG9yKQorICAgIGlubGluZSBib29sIGdldFN0YXRpY0Z1bmN0aW9uRGVzY3JpcHRvcihFeGVj
U3RhdGUqIGV4ZWMsIGNvbnN0IEhhc2hUYWJsZSogdGFibGUsIEpTT2JqZWN0KiB0aGlzT2JqLCBQ
cm9wZXJ0eU5hbWUgcHJvcGVydHlOYW1lLCBQcm9wZXJ0eURlc2NyaXB0b3ImIGRlc2NyaXB0b3Ip
CiAgICAgewogICAgICAgICBpZiAoUGFyZW50SW1wOjpnZXRPd25Qcm9wZXJ0eURlc2NyaXB0b3Io
c3RhdGljX2Nhc3Q8UGFyZW50SW1wKj4odGhpc09iaiksIGV4ZWMsIHByb3BlcnR5TmFtZSwgZGVz
Y3JpcHRvcikpCiAgICAgICAgICAgICByZXR1cm4gdHJ1ZTsKQEAgLTMxMCw3ICszMTAsNyBAQCBu
YW1lc3BhY2UgSlNDIHsKICAgICAgKiBVc2luZyB0aGlzIGluc3RlYWQgb2YgZ2V0U3RhdGljUHJv
cGVydHlTbG90IHJlbW92ZXMgdGhlIG5lZWQgZm9yIGEgRnVuY0ltcCBjbGFzcy4KICAgICAgKi8K
ICAgICB0ZW1wbGF0ZSA8Y2xhc3MgVGhpc0ltcCwgY2xhc3MgUGFyZW50SW1wPgotICAgIGlubGlu
ZSBib29sIGdldFN0YXRpY1ZhbHVlU2xvdChFeGVjU3RhdGUqIGV4ZWMsIGNvbnN0IEhhc2hUYWJs
ZSogdGFibGUsIFRoaXNJbXAqIHRoaXNPYmosIGNvbnN0IElkZW50aWZpZXImIHByb3BlcnR5TmFt
ZSwgUHJvcGVydHlTbG90JiBzbG90KQorICAgIGlubGluZSBib29sIGdldFN0YXRpY1ZhbHVlU2xv
dChFeGVjU3RhdGUqIGV4ZWMsIGNvbnN0IEhhc2hUYWJsZSogdGFibGUsIFRoaXNJbXAqIHRoaXNP
YmosIFByb3BlcnR5TmFtZSBwcm9wZXJ0eU5hbWUsIFByb3BlcnR5U2xvdCYgc2xvdCkKICAgICB7
CiAgICAgICAgIGNvbnN0IEhhc2hFbnRyeSogZW50cnkgPSB0YWJsZS0+ZW50cnkoZXhlYywgcHJv
cGVydHlOYW1lKTsKIApAQCAtMzI4LDcgKzMyOCw3IEBAIG5hbWVzcGFjZSBKU0MgewogICAgICAq
IFVzaW5nIHRoaXMgaW5zdGVhZCBvZiBnZXRTdGF0aWNQcm9wZXJ0eURlc2NyaXB0b3IgcmVtb3Zl
cyB0aGUgbmVlZCBmb3IgYSBGdW5jSW1wIGNsYXNzLgogICAgICAqLwogICAgIHRlbXBsYXRlIDxj
bGFzcyBUaGlzSW1wLCBjbGFzcyBQYXJlbnRJbXA+Ci0gICAgaW5saW5lIGJvb2wgZ2V0U3RhdGlj
VmFsdWVEZXNjcmlwdG9yKEV4ZWNTdGF0ZSogZXhlYywgY29uc3QgSGFzaFRhYmxlKiB0YWJsZSwg
VGhpc0ltcCogdGhpc09iaiwgY29uc3QgSWRlbnRpZmllciYgcHJvcGVydHlOYW1lLCBQcm9wZXJ0
eURlc2NyaXB0b3ImIGRlc2NyaXB0b3IpCisgICAgaW5saW5lIGJvb2wgZ2V0U3RhdGljVmFsdWVE
ZXNjcmlwdG9yKEV4ZWNTdGF0ZSogZXhlYywgY29uc3QgSGFzaFRhYmxlKiB0YWJsZSwgVGhpc0lt
cCogdGhpc09iaiwgUHJvcGVydHlOYW1lIHByb3BlcnR5TmFtZSwgUHJvcGVydHlEZXNjcmlwdG9y
JiBkZXNjcmlwdG9yKQogICAgIHsKICAgICAgICAgY29uc3QgSGFzaEVudHJ5KiBlbnRyeSA9IHRh
YmxlLT5lbnRyeShleGVjLCBwcm9wZXJ0eU5hbWUpOwogICAgICAgICAKQEAgLTM0OCw3ICszNDgs
NyBAQCBuYW1lc3BhY2UgSlNDIHsKICAgICAgKiBpcyBmb3VuZCBpdCBzZXRzIHRoZSB2YWx1ZSBh
bmQgcmV0dXJucyB0cnVlLCBlbHNlIGl0IHJldHVybnMgZmFsc2UuCiAgICAgICovCiAgICAgdGVt
cGxhdGUgPGNsYXNzIFRoaXNJbXA+Ci0gICAgaW5saW5lIGJvb2wgbG9va3VwUHV0KEV4ZWNTdGF0
ZSogZXhlYywgY29uc3QgSWRlbnRpZmllciYgcHJvcGVydHlOYW1lLCBKU1ZhbHVlIHZhbHVlLCBj
b25zdCBIYXNoVGFibGUqIHRhYmxlLCBUaGlzSW1wKiB0aGlzT2JqLCBib29sIHNob3VsZFRocm93
ID0gZmFsc2UpCisgICAgaW5saW5lIGJvb2wgbG9va3VwUHV0KEV4ZWNTdGF0ZSogZXhlYywgUHJv
cGVydHlOYW1lIHByb3BlcnR5TmFtZSwgSlNWYWx1ZSB2YWx1ZSwgY29uc3QgSGFzaFRhYmxlKiB0
YWJsZSwgVGhpc0ltcCogdGhpc09iaiwgYm9vbCBzaG91bGRUaHJvdyA9IGZhbHNlKQogICAgIHsK
ICAgICAgICAgY29uc3QgSGFzaEVudHJ5KiBlbnRyeSA9IHRhYmxlLT5lbnRyeShleGVjLCBwcm9w
ZXJ0eU5hbWUpOwogICAgICAgICAKQEAgLTM3Myw3ICszNzMsNyBAQCBuYW1lc3BhY2UgSlNDIHsK
ICAgICAgKiB0aGVuIGl0IGNhbGxzIHB1dCgpIG9uIHRoZSBQYXJlbnRJbXAgY2xhc3MuCiAgICAg
ICovCiAgICAgdGVtcGxhdGUgPGNsYXNzIFRoaXNJbXAsIGNsYXNzIFBhcmVudEltcD4KLSAgICBp
bmxpbmUgdm9pZCBsb29rdXBQdXQoRXhlY1N0YXRlKiBleGVjLCBjb25zdCBJZGVudGlmaWVyJiBw
cm9wZXJ0eU5hbWUsIEpTVmFsdWUgdmFsdWUsIGNvbnN0IEhhc2hUYWJsZSogdGFibGUsIFRoaXNJ
bXAqIHRoaXNPYmosIFB1dFByb3BlcnR5U2xvdCYgc2xvdCkKKyAgICBpbmxpbmUgdm9pZCBsb29r
dXBQdXQoRXhlY1N0YXRlKiBleGVjLCBQcm9wZXJ0eU5hbWUgcHJvcGVydHlOYW1lLCBKU1ZhbHVl
IHZhbHVlLCBjb25zdCBIYXNoVGFibGUqIHRhYmxlLCBUaGlzSW1wKiB0aGlzT2JqLCBQdXRQcm9w
ZXJ0eVNsb3QmIHNsb3QpCiAgICAgewogICAgICAgICBpZiAoIWxvb2t1cFB1dDxUaGlzSW1wPihl
eGVjLCBwcm9wZXJ0eU5hbWUsIHZhbHVlLCB0YWJsZSwgdGhpc09iaiwgc2xvdC5pc1N0cmljdE1v
ZGUoKSkpCiAgICAgICAgICAgICBQYXJlbnRJbXA6OnB1dCh0aGlzT2JqLCBleGVjLCBwcm9wZXJ0
eU5hbWUsIHZhbHVlLCBzbG90KTsgLy8gbm90IGZvdW5kOiBmb3J3YXJkIHRvIHBhcmVudApJbmRl
eDogU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvTWF0aE9iamVjdC5jcHAKPT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PQotLS0gU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvTWF0aE9iamVjdC5jcHAJKHJldmlz
aW9uIDExNjY2NykKKysrIFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL01hdGhPYmplY3Qu
Y3BwCSh3b3JraW5nIGNvcHkpCkBAIC0xMDYsMTIgKzEwNiwxMiBAQCB2b2lkIE1hdGhPYmplY3Q6
OmZpbmlzaENyZWF0aW9uKEV4ZWNTdGF0CiAgICAgcHV0RGlyZWN0V2l0aG91dFRyYW5zaXRpb24o
ZXhlYy0+Z2xvYmFsRGF0YSgpLCBJZGVudGlmaWVyKGV4ZWMsICJTUVJUMiIpLCBqc051bWJlcihz
cXJ0KDIuMCkpLCBEb250RGVsZXRlIHwgRG9udEVudW0gfCBSZWFkT25seSk7CiB9CiAKLWJvb2wg
TWF0aE9iamVjdDo6Z2V0T3duUHJvcGVydHlTbG90KEpTQ2VsbCogY2VsbCwgRXhlY1N0YXRlKiBl
eGVjLCBjb25zdCBJZGVudGlmaWVyJiBwcm9wZXJ0eU5hbWUsIFByb3BlcnR5U2xvdCAmc2xvdCkK
K2Jvb2wgTWF0aE9iamVjdDo6Z2V0T3duUHJvcGVydHlTbG90KEpTQ2VsbCogY2VsbCwgRXhlY1N0
YXRlKiBleGVjLCBQcm9wZXJ0eU5hbWUgcHJvcGVydHlOYW1lLCBQcm9wZXJ0eVNsb3QgJnNsb3Qp
CiB7CiAgICAgcmV0dXJuIGdldFN0YXRpY0Z1bmN0aW9uU2xvdDxKU09iamVjdD4oZXhlYywgRXhl
Y1N0YXRlOjptYXRoVGFibGUoZXhlYyksIGpzQ2FzdDxNYXRoT2JqZWN0Kj4oY2VsbCksIHByb3Bl
cnR5TmFtZSwgc2xvdCk7CiB9CiAKLWJvb2wgTWF0aE9iamVjdDo6Z2V0T3duUHJvcGVydHlEZXNj
cmlwdG9yKEpTT2JqZWN0KiBvYmplY3QsIEV4ZWNTdGF0ZSogZXhlYywgY29uc3QgSWRlbnRpZmll
ciYgcHJvcGVydHlOYW1lLCBQcm9wZXJ0eURlc2NyaXB0b3ImIGRlc2NyaXB0b3IpCitib29sIE1h
dGhPYmplY3Q6OmdldE93blByb3BlcnR5RGVzY3JpcHRvcihKU09iamVjdCogb2JqZWN0LCBFeGVj
U3RhdGUqIGV4ZWMsIFByb3BlcnR5TmFtZSBwcm9wZXJ0eU5hbWUsIFByb3BlcnR5RGVzY3JpcHRv
ciYgZGVzY3JpcHRvcikKIHsKICAgICByZXR1cm4gZ2V0U3RhdGljRnVuY3Rpb25EZXNjcmlwdG9y
PEpTT2JqZWN0PihleGVjLCBFeGVjU3RhdGU6Om1hdGhUYWJsZShleGVjKSwganNDYXN0PE1hdGhP
YmplY3QqPihvYmplY3QpLCBwcm9wZXJ0eU5hbWUsIGRlc2NyaXB0b3IpOwogfQpJbmRleDogU291
cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvTWF0aE9iamVjdC5oCj09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNv
dXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL01hdGhPYmplY3QuaAkocmV2aXNpb24gMTE2NjY3
KQorKysgU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvTWF0aE9iamVjdC5oCSh3b3JraW5n
IGNvcHkpCkBAIC0zOCw4ICszOCw4IEBAIG5hbWVzcGFjZSBKU0MgewogICAgICAgICAgICAgb2Jq
ZWN0LT5maW5pc2hDcmVhdGlvbihleGVjLCBnbG9iYWxPYmplY3QpOwogICAgICAgICAgICAgcmV0
dXJuIG9iamVjdDsKICAgICAgICAgfQotICAgICAgICBzdGF0aWMgYm9vbCBnZXRPd25Qcm9wZXJ0
eVNsb3QoSlNDZWxsKiwgRXhlY1N0YXRlKiwgY29uc3QgSWRlbnRpZmllciYsIFByb3BlcnR5U2xv
dCYpOwotICAgICAgICBzdGF0aWMgYm9vbCBnZXRPd25Qcm9wZXJ0eURlc2NyaXB0b3IoSlNPYmpl
Y3QqLCBFeGVjU3RhdGUqLCBjb25zdCBJZGVudGlmaWVyJiwgUHJvcGVydHlEZXNjcmlwdG9yJik7
CisgICAgICAgIHN0YXRpYyBib29sIGdldE93blByb3BlcnR5U2xvdChKU0NlbGwqLCBFeGVjU3Rh
dGUqLCBQcm9wZXJ0eU5hbWUsIFByb3BlcnR5U2xvdCYpOworICAgICAgICBzdGF0aWMgYm9vbCBn
ZXRPd25Qcm9wZXJ0eURlc2NyaXB0b3IoSlNPYmplY3QqLCBFeGVjU3RhdGUqLCBQcm9wZXJ0eU5h
bWUsIFByb3BlcnR5RGVzY3JpcHRvciYpOwogCiAgICAgICAgIHN0YXRpYyBjb25zdCBDbGFzc0lu
Zm8gc19pbmZvOwogCkluZGV4OiBTb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9OYXRpdmVF
cnJvckNvbnN0cnVjdG9yLmgKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL0phdmFTY3JpcHRDb3JlL3J1
bnRpbWUvTmF0aXZlRXJyb3JDb25zdHJ1Y3Rvci5oCShyZXZpc2lvbiAxMTY2NjcpCisrKyBTb3Vy
Y2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9OYXRpdmVFcnJvckNvbnN0cnVjdG9yLmgJKHdvcmtp
bmcgY29weSkKQEAgLTUzLDcgKzUzLDcgQEAgbmFtZXNwYWNlIEpTQyB7CiAgICAgcHJvdGVjdGVk
OgogICAgICAgICB2b2lkIGZpbmlzaENyZWF0aW9uKEV4ZWNTdGF0ZSogZXhlYywgSlNHbG9iYWxP
YmplY3QqIGdsb2JhbE9iamVjdCwgU3RydWN0dXJlKiBwcm90b3R5cGVTdHJ1Y3R1cmUsIGNvbnN0
IFVTdHJpbmcmIG5hbWUpCiAgICAgICAgIHsKLSAgICAgICAgICAgIEJhc2U6OmZpbmlzaENyZWF0
aW9uKGV4ZWMtPmdsb2JhbERhdGEoKSwgSWRlbnRpZmllcihleGVjLCBuYW1lKSk7CisgICAgICAg
ICAgICBCYXNlOjpmaW5pc2hDcmVhdGlvbihleGVjLT5nbG9iYWxEYXRhKCksIG5hbWUpOwogICAg
ICAgICAgICAgQVNTRVJUKGluaGVyaXRzKCZzX2luZm8pKTsKIAogICAgICAgICAgICAgTmF0aXZl
RXJyb3JQcm90b3R5cGUqIHByb3RvdHlwZSA9IE5hdGl2ZUVycm9yUHJvdG90eXBlOjpjcmVhdGUo
ZXhlYywgZ2xvYmFsT2JqZWN0LCBwcm90b3R5cGVTdHJ1Y3R1cmUsIG5hbWUsIHRoaXMpOwpJbmRl
eDogU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvTnVtYmVyQ29uc3RydWN0b3IuY3BwCj09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT0KLS0tIFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL051bWJlckNvbnN0cnVj
dG9yLmNwcAkocmV2aXNpb24gMTE2NjY3KQorKysgU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRp
bWUvTnVtYmVyQ29uc3RydWN0b3IuY3BwCSh3b3JraW5nIGNvcHkpCkBAIC0zMCwxMSArMzAsMTEg
QEAgbmFtZXNwYWNlIEpTQyB7CiAKIEFTU0VSVF9DTEFTU19GSVRTX0lOX0NFTEwoTnVtYmVyQ29u
c3RydWN0b3IpOwogCi1zdGF0aWMgSlNWYWx1ZSBudW1iZXJDb25zdHJ1Y3Rvck5hTlZhbHVlKEV4
ZWNTdGF0ZSosIEpTVmFsdWUsIGNvbnN0IElkZW50aWZpZXImKTsKLXN0YXRpYyBKU1ZhbHVlIG51
bWJlckNvbnN0cnVjdG9yTmVnSW5maW5pdHkoRXhlY1N0YXRlKiwgSlNWYWx1ZSwgY29uc3QgSWRl
bnRpZmllciYpOwotc3RhdGljIEpTVmFsdWUgbnVtYmVyQ29uc3RydWN0b3JQb3NJbmZpbml0eShF
eGVjU3RhdGUqLCBKU1ZhbHVlLCBjb25zdCBJZGVudGlmaWVyJik7Ci1zdGF0aWMgSlNWYWx1ZSBu
dW1iZXJDb25zdHJ1Y3Rvck1heFZhbHVlKEV4ZWNTdGF0ZSosIEpTVmFsdWUsIGNvbnN0IElkZW50
aWZpZXImKTsKLXN0YXRpYyBKU1ZhbHVlIG51bWJlckNvbnN0cnVjdG9yTWluVmFsdWUoRXhlY1N0
YXRlKiwgSlNWYWx1ZSwgY29uc3QgSWRlbnRpZmllciYpOworc3RhdGljIEpTVmFsdWUgbnVtYmVy
Q29uc3RydWN0b3JOYU5WYWx1ZShFeGVjU3RhdGUqLCBKU1ZhbHVlLCBQcm9wZXJ0eU5hbWUpOwor
c3RhdGljIEpTVmFsdWUgbnVtYmVyQ29uc3RydWN0b3JOZWdJbmZpbml0eShFeGVjU3RhdGUqLCBK
U1ZhbHVlLCBQcm9wZXJ0eU5hbWUpOworc3RhdGljIEpTVmFsdWUgbnVtYmVyQ29uc3RydWN0b3JQ
b3NJbmZpbml0eShFeGVjU3RhdGUqLCBKU1ZhbHVlLCBQcm9wZXJ0eU5hbWUpOworc3RhdGljIEpT
VmFsdWUgbnVtYmVyQ29uc3RydWN0b3JNYXhWYWx1ZShFeGVjU3RhdGUqLCBKU1ZhbHVlLCBQcm9w
ZXJ0eU5hbWUpOworc3RhdGljIEpTVmFsdWUgbnVtYmVyQ29uc3RydWN0b3JNaW5WYWx1ZShFeGVj
U3RhdGUqLCBKU1ZhbHVlLCBQcm9wZXJ0eU5hbWUpOwogCiB9IC8vIG5hbWVzcGFjZSBKU0MKIApA
QCAtNjMsNyArNjMsNyBAQCBOdW1iZXJDb25zdHJ1Y3Rvcjo6TnVtYmVyQ29uc3RydWN0b3IoSlNH
CiAKIHZvaWQgTnVtYmVyQ29uc3RydWN0b3I6OmZpbmlzaENyZWF0aW9uKEV4ZWNTdGF0ZSogZXhl
YywgTnVtYmVyUHJvdG90eXBlKiBudW1iZXJQcm90b3R5cGUpCiB7Ci0gICAgQmFzZTo6ZmluaXNo
Q3JlYXRpb24oZXhlYy0+Z2xvYmFsRGF0YSgpLCBJZGVudGlmaWVyKGV4ZWMsIG51bWJlclByb3Rv
dHlwZS0+c19pbmZvLmNsYXNzTmFtZSkpOworICAgIEJhc2U6OmZpbmlzaENyZWF0aW9uKGV4ZWMt
Pmdsb2JhbERhdGEoKSwgbnVtYmVyUHJvdG90eXBlLT5zX2luZm8uY2xhc3NOYW1lKTsKICAgICBB
U1NFUlQoaW5oZXJpdHMoJnNfaW5mbykpOwogCiAgICAgLy8gTnVtYmVyLlByb3RvdHlwZQpAQCAt
NzMsNDIgKzczLDQyIEBAIHZvaWQgTnVtYmVyQ29uc3RydWN0b3I6OmZpbmlzaENyZWF0aW9uKEUK
ICAgICBwdXREaXJlY3RXaXRob3V0VHJhbnNpdGlvbihleGVjLT5nbG9iYWxEYXRhKCksIGV4ZWMt
PnByb3BlcnR5TmFtZXMoKS5sZW5ndGgsIGpzTnVtYmVyKDEpLCBSZWFkT25seSB8IERvbnRFbnVt
IHwgRG9udERlbGV0ZSk7CiB9CiAKLWJvb2wgTnVtYmVyQ29uc3RydWN0b3I6OmdldE93blByb3Bl
cnR5U2xvdChKU0NlbGwqIGNlbGwsIEV4ZWNTdGF0ZSogZXhlYywgY29uc3QgSWRlbnRpZmllciYg
cHJvcGVydHlOYW1lLCBQcm9wZXJ0eVNsb3QmIHNsb3QpCitib29sIE51bWJlckNvbnN0cnVjdG9y
OjpnZXRPd25Qcm9wZXJ0eVNsb3QoSlNDZWxsKiBjZWxsLCBFeGVjU3RhdGUqIGV4ZWMsIFByb3Bl
cnR5TmFtZSBwcm9wZXJ0eU5hbWUsIFByb3BlcnR5U2xvdCYgc2xvdCkKIHsKICAgICByZXR1cm4g
Z2V0U3RhdGljVmFsdWVTbG90PE51bWJlckNvbnN0cnVjdG9yLCBJbnRlcm5hbEZ1bmN0aW9uPihl
eGVjLCBFeGVjU3RhdGU6Om51bWJlckNvbnN0cnVjdG9yVGFibGUoZXhlYyksIGpzQ2FzdDxOdW1i
ZXJDb25zdHJ1Y3Rvcio+KGNlbGwpLCBwcm9wZXJ0eU5hbWUsIHNsb3QpOwogfQogCi1ib29sIE51
bWJlckNvbnN0cnVjdG9yOjpnZXRPd25Qcm9wZXJ0eURlc2NyaXB0b3IoSlNPYmplY3QqIG9iamVj
dCwgRXhlY1N0YXRlKiBleGVjLCBjb25zdCBJZGVudGlmaWVyJiBwcm9wZXJ0eU5hbWUsIFByb3Bl
cnR5RGVzY3JpcHRvciYgZGVzY3JpcHRvcikKK2Jvb2wgTnVtYmVyQ29uc3RydWN0b3I6OmdldE93
blByb3BlcnR5RGVzY3JpcHRvcihKU09iamVjdCogb2JqZWN0LCBFeGVjU3RhdGUqIGV4ZWMsIFBy
b3BlcnR5TmFtZSBwcm9wZXJ0eU5hbWUsIFByb3BlcnR5RGVzY3JpcHRvciYgZGVzY3JpcHRvcikK
IHsKICAgICByZXR1cm4gZ2V0U3RhdGljVmFsdWVEZXNjcmlwdG9yPE51bWJlckNvbnN0cnVjdG9y
LCBJbnRlcm5hbEZ1bmN0aW9uPihleGVjLCBFeGVjU3RhdGU6Om51bWJlckNvbnN0cnVjdG9yVGFi
bGUoZXhlYyksIGpzQ2FzdDxOdW1iZXJDb25zdHJ1Y3Rvcio+KG9iamVjdCksIHByb3BlcnR5TmFt
ZSwgZGVzY3JpcHRvcik7CiB9CiAKLXZvaWQgTnVtYmVyQ29uc3RydWN0b3I6OnB1dChKU0NlbGwq
IGNlbGwsIEV4ZWNTdGF0ZSogZXhlYywgY29uc3QgSWRlbnRpZmllciYgcHJvcGVydHlOYW1lLCBK
U1ZhbHVlIHZhbHVlLCBQdXRQcm9wZXJ0eVNsb3QmIHNsb3QpCit2b2lkIE51bWJlckNvbnN0cnVj
dG9yOjpwdXQoSlNDZWxsKiBjZWxsLCBFeGVjU3RhdGUqIGV4ZWMsIFByb3BlcnR5TmFtZSBwcm9w
ZXJ0eU5hbWUsIEpTVmFsdWUgdmFsdWUsIFB1dFByb3BlcnR5U2xvdCYgc2xvdCkKIHsKICAgICBs
b29rdXBQdXQ8TnVtYmVyQ29uc3RydWN0b3IsIEludGVybmFsRnVuY3Rpb24+KGV4ZWMsIHByb3Bl
cnR5TmFtZSwgdmFsdWUsIEV4ZWNTdGF0ZTo6bnVtYmVyQ29uc3RydWN0b3JUYWJsZShleGVjKSwg
anNDYXN0PE51bWJlckNvbnN0cnVjdG9yKj4oY2VsbCksIHNsb3QpOwogfQogCi1zdGF0aWMgSlNW
YWx1ZSBudW1iZXJDb25zdHJ1Y3Rvck5hTlZhbHVlKEV4ZWNTdGF0ZSosIEpTVmFsdWUsIGNvbnN0
IElkZW50aWZpZXImKQorc3RhdGljIEpTVmFsdWUgbnVtYmVyQ29uc3RydWN0b3JOYU5WYWx1ZShF
eGVjU3RhdGUqLCBKU1ZhbHVlLCBQcm9wZXJ0eU5hbWUpCiB7CiAgICAgcmV0dXJuIGpzTmFOKCk7
CiB9CiAKLXN0YXRpYyBKU1ZhbHVlIG51bWJlckNvbnN0cnVjdG9yTmVnSW5maW5pdHkoRXhlY1N0
YXRlKiwgSlNWYWx1ZSwgY29uc3QgSWRlbnRpZmllciYpCitzdGF0aWMgSlNWYWx1ZSBudW1iZXJD
b25zdHJ1Y3Rvck5lZ0luZmluaXR5KEV4ZWNTdGF0ZSosIEpTVmFsdWUsIFByb3BlcnR5TmFtZSkK
IHsKICAgICByZXR1cm4ganNOdW1iZXIoLXN0ZDo6bnVtZXJpY19saW1pdHM8ZG91YmxlPjo6aW5m
aW5pdHkoKSk7CiB9CiAKLXN0YXRpYyBKU1ZhbHVlIG51bWJlckNvbnN0cnVjdG9yUG9zSW5maW5p
dHkoRXhlY1N0YXRlKiwgSlNWYWx1ZSwgY29uc3QgSWRlbnRpZmllciYpCitzdGF0aWMgSlNWYWx1
ZSBudW1iZXJDb25zdHJ1Y3RvclBvc0luZmluaXR5KEV4ZWNTdGF0ZSosIEpTVmFsdWUsIFByb3Bl
cnR5TmFtZSkKIHsKICAgICByZXR1cm4ganNOdW1iZXIoc3RkOjpudW1lcmljX2xpbWl0czxkb3Vi
bGU+OjppbmZpbml0eSgpKTsKIH0KIAotc3RhdGljIEpTVmFsdWUgbnVtYmVyQ29uc3RydWN0b3JN
YXhWYWx1ZShFeGVjU3RhdGUqLCBKU1ZhbHVlLCBjb25zdCBJZGVudGlmaWVyJikKK3N0YXRpYyBK
U1ZhbHVlIG51bWJlckNvbnN0cnVjdG9yTWF4VmFsdWUoRXhlY1N0YXRlKiwgSlNWYWx1ZSwgUHJv
cGVydHlOYW1lKQogewogICAgIHJldHVybiBqc051bWJlcigxLjc5NzY5MzEzNDg2MjMxNTdFKzMw
OCk7CiB9CiAKLXN0YXRpYyBKU1ZhbHVlIG51bWJlckNvbnN0cnVjdG9yTWluVmFsdWUoRXhlY1N0
YXRlKiwgSlNWYWx1ZSwgY29uc3QgSWRlbnRpZmllciYpCitzdGF0aWMgSlNWYWx1ZSBudW1iZXJD
b25zdHJ1Y3Rvck1pblZhbHVlKEV4ZWNTdGF0ZSosIEpTVmFsdWUsIFByb3BlcnR5TmFtZSkKIHsK
ICAgICByZXR1cm4ganNOdW1iZXIoNUUtMzI0KTsKIH0KSW5kZXg6IFNvdXJjZS9KYXZhU2NyaXB0
Q29yZS9ydW50aW1lL051bWJlckNvbnN0cnVjdG9yLmgKPT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL0ph
dmFTY3JpcHRDb3JlL3J1bnRpbWUvTnVtYmVyQ29uc3RydWN0b3IuaAkocmV2aXNpb24gMTE2NjY3
KQorKysgU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvTnVtYmVyQ29uc3RydWN0b3IuaAko
d29ya2luZyBjb3B5KQpAQCAtMzgsMTAgKzM4LDEwIEBAIG5hbWVzcGFjZSBKU0MgewogICAgICAg
ICAgICAgcmV0dXJuIGNvbnN0cnVjdG9yOwogICAgICAgICB9CiAKLSAgICAgICAgc3RhdGljIHZv
aWQgcHV0KEpTQ2VsbCosIEV4ZWNTdGF0ZSosIGNvbnN0IElkZW50aWZpZXImIHByb3BlcnR5TmFt
ZSwgSlNWYWx1ZSwgUHV0UHJvcGVydHlTbG90Jik7CisgICAgICAgIHN0YXRpYyB2b2lkIHB1dChK
U0NlbGwqLCBFeGVjU3RhdGUqLCBQcm9wZXJ0eU5hbWUsIEpTVmFsdWUsIFB1dFByb3BlcnR5U2xv
dCYpOwogCi0gICAgICAgIHN0YXRpYyBib29sIGdldE93blByb3BlcnR5U2xvdChKU0NlbGwqLCBF
eGVjU3RhdGUqLCBjb25zdCBJZGVudGlmaWVyJiwgUHJvcGVydHlTbG90Jik7Ci0gICAgICAgIHN0
YXRpYyBib29sIGdldE93blByb3BlcnR5RGVzY3JpcHRvcihKU09iamVjdCosIEV4ZWNTdGF0ZSos
IGNvbnN0IElkZW50aWZpZXImLCBQcm9wZXJ0eURlc2NyaXB0b3ImKTsKKyAgICAgICAgc3RhdGlj
IGJvb2wgZ2V0T3duUHJvcGVydHlTbG90KEpTQ2VsbCosIEV4ZWNTdGF0ZSosIFByb3BlcnR5TmFt
ZSwgUHJvcGVydHlTbG90Jik7CisgICAgICAgIHN0YXRpYyBib29sIGdldE93blByb3BlcnR5RGVz
Y3JpcHRvcihKU09iamVjdCosIEV4ZWNTdGF0ZSosIFByb3BlcnR5TmFtZSwgUHJvcGVydHlEZXNj
cmlwdG9yJik7CiAgICAgICAgIEpTVmFsdWUgZ2V0VmFsdWVQcm9wZXJ0eShFeGVjU3RhdGUqLCBp
bnQgdG9rZW4pIGNvbnN0OwogCiAgICAgICAgIHN0YXRpYyBjb25zdCBDbGFzc0luZm8gc19pbmZv
OwpJbmRleDogU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvTnVtYmVyUHJvdG90eXBlLmNw
cAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09Ci0tLSBTb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9OdW1iZXJQcm90
b3R5cGUuY3BwCShyZXZpc2lvbiAxMTY2NjcpCisrKyBTb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVu
dGltZS9OdW1iZXJQcm90b3R5cGUuY3BwCSh3b3JraW5nIGNvcHkpCkBAIC04NCwxMiArODQsMTIg
QEAgdm9pZCBOdW1iZXJQcm90b3R5cGU6OmZpbmlzaENyZWF0aW9uKEV4ZQogICAgIEFTU0VSVChp
bmhlcml0cygmc19pbmZvKSk7CiB9CiAKLWJvb2wgTnVtYmVyUHJvdG90eXBlOjpnZXRPd25Qcm9w
ZXJ0eVNsb3QoSlNDZWxsKiBjZWxsLCBFeGVjU3RhdGUqIGV4ZWMsIGNvbnN0IElkZW50aWZpZXIm
IHByb3BlcnR5TmFtZSwgUHJvcGVydHlTbG90ICZzbG90KQorYm9vbCBOdW1iZXJQcm90b3R5cGU6
OmdldE93blByb3BlcnR5U2xvdChKU0NlbGwqIGNlbGwsIEV4ZWNTdGF0ZSogZXhlYywgUHJvcGVy
dHlOYW1lIHByb3BlcnR5TmFtZSwgUHJvcGVydHlTbG90ICZzbG90KQogewogICAgIHJldHVybiBn
ZXRTdGF0aWNGdW5jdGlvblNsb3Q8TnVtYmVyT2JqZWN0PihleGVjLCBFeGVjU3RhdGU6Om51bWJl
clByb3RvdHlwZVRhYmxlKGV4ZWMpLCBqc0Nhc3Q8TnVtYmVyUHJvdG90eXBlKj4oY2VsbCksIHBy
b3BlcnR5TmFtZSwgc2xvdCk7CiB9CiAKLWJvb2wgTnVtYmVyUHJvdG90eXBlOjpnZXRPd25Qcm9w
ZXJ0eURlc2NyaXB0b3IoSlNPYmplY3QqIG9iamVjdCwgRXhlY1N0YXRlKiBleGVjLCBjb25zdCBJ
ZGVudGlmaWVyJiBwcm9wZXJ0eU5hbWUsIFByb3BlcnR5RGVzY3JpcHRvciYgZGVzY3JpcHRvcikK
K2Jvb2wgTnVtYmVyUHJvdG90eXBlOjpnZXRPd25Qcm9wZXJ0eURlc2NyaXB0b3IoSlNPYmplY3Qq
IG9iamVjdCwgRXhlY1N0YXRlKiBleGVjLCBQcm9wZXJ0eU5hbWUgcHJvcGVydHlOYW1lLCBQcm9w
ZXJ0eURlc2NyaXB0b3ImIGRlc2NyaXB0b3IpCiB7CiAgICAgcmV0dXJuIGdldFN0YXRpY0Z1bmN0
aW9uRGVzY3JpcHRvcjxOdW1iZXJPYmplY3Q+KGV4ZWMsIEV4ZWNTdGF0ZTo6bnVtYmVyUHJvdG90
eXBlVGFibGUoZXhlYyksIGpzQ2FzdDxOdW1iZXJQcm90b3R5cGUqPihvYmplY3QpLCBwcm9wZXJ0
eU5hbWUsIGRlc2NyaXB0b3IpOwogfQpJbmRleDogU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRp
bWUvTnVtYmVyUHJvdG90eXBlLmgKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL0phdmFTY3JpcHRDb3Jl
L3J1bnRpbWUvTnVtYmVyUHJvdG90eXBlLmgJKHJldmlzaW9uIDExNjY2NykKKysrIFNvdXJjZS9K
YXZhU2NyaXB0Q29yZS9ydW50aW1lL051bWJlclByb3RvdHlwZS5oCSh3b3JraW5nIGNvcHkpCkBA
IC00OSw4ICs0OSw4IEBAIG5hbWVzcGFjZSBKU0MgewogCiAgICAgcHJpdmF0ZToKICAgICAgICAg
TnVtYmVyUHJvdG90eXBlKEV4ZWNTdGF0ZSosIFN0cnVjdHVyZSopOwotICAgICAgICBzdGF0aWMg
Ym9vbCBnZXRPd25Qcm9wZXJ0eVNsb3QoSlNDZWxsKiwgRXhlY1N0YXRlKiwgY29uc3QgSWRlbnRp
ZmllciYsIFByb3BlcnR5U2xvdCYpOwotICAgICAgICBzdGF0aWMgYm9vbCBnZXRPd25Qcm9wZXJ0
eURlc2NyaXB0b3IoSlNPYmplY3QqLCBFeGVjU3RhdGUqLCBjb25zdCBJZGVudGlmaWVyJiwgUHJv
cGVydHlEZXNjcmlwdG9yJik7CisgICAgICAgIHN0YXRpYyBib29sIGdldE93blByb3BlcnR5U2xv
dChKU0NlbGwqLCBFeGVjU3RhdGUqLCBQcm9wZXJ0eU5hbWUsIFByb3BlcnR5U2xvdCYpOworICAg
ICAgICBzdGF0aWMgYm9vbCBnZXRPd25Qcm9wZXJ0eURlc2NyaXB0b3IoSlNPYmplY3QqLCBFeGVj
U3RhdGUqLCBQcm9wZXJ0eU5hbWUsIFByb3BlcnR5RGVzY3JpcHRvciYpOwogICAgIH07CiAKIH0g
Ly8gbmFtZXNwYWNlIEpTQwpJbmRleDogU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvT2Jq
ZWN0Q29uc3RydWN0b3IuY3BwCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9y
dW50aW1lL09iamVjdENvbnN0cnVjdG9yLmNwcAkocmV2aXNpb24gMTE2NjY3KQorKysgU291cmNl
L0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvT2JqZWN0Q29uc3RydWN0b3IuY3BwCSh3b3JraW5nIGNv
cHkpCkBAIC04NCwxOSArODQsMTkgQEAgT2JqZWN0Q29uc3RydWN0b3I6Ok9iamVjdENvbnN0cnVj
dG9yKEpTRwogCiB2b2lkIE9iamVjdENvbnN0cnVjdG9yOjpmaW5pc2hDcmVhdGlvbihFeGVjU3Rh
dGUqIGV4ZWMsIE9iamVjdFByb3RvdHlwZSogb2JqZWN0UHJvdG90eXBlKQogewotICAgIEJhc2U6
OmZpbmlzaENyZWF0aW9uKGV4ZWMtPmdsb2JhbERhdGEoKSwgSWRlbnRpZmllcihleGVjLCAiT2Jq
ZWN0IikpOworICAgIEJhc2U6OmZpbmlzaENyZWF0aW9uKGV4ZWMtPmdsb2JhbERhdGEoKSwgSWRl
bnRpZmllcihleGVjLCAiT2JqZWN0IikudXN0cmluZygpKTsKICAgICAvLyBFQ01BIDE1LjIuMy4x
CiAgICAgcHV0RGlyZWN0V2l0aG91dFRyYW5zaXRpb24oZXhlYy0+Z2xvYmFsRGF0YSgpLCBleGVj
LT5wcm9wZXJ0eU5hbWVzKCkucHJvdG90eXBlLCBvYmplY3RQcm90b3R5cGUsIERvbnRFbnVtIHwg
RG9udERlbGV0ZSB8IFJlYWRPbmx5KTsKICAgICAvLyBuby4gb2YgYXJndW1lbnRzIGZvciBjb25z
dHJ1Y3RvcgogICAgIHB1dERpcmVjdFdpdGhvdXRUcmFuc2l0aW9uKGV4ZWMtPmdsb2JhbERhdGEo
KSwgZXhlYy0+cHJvcGVydHlOYW1lcygpLmxlbmd0aCwganNOdW1iZXIoMSksIFJlYWRPbmx5IHwg
RG9udEVudW0gfCBEb250RGVsZXRlKTsKIH0KIAotYm9vbCBPYmplY3RDb25zdHJ1Y3Rvcjo6Z2V0
T3duUHJvcGVydHlTbG90KEpTQ2VsbCogY2VsbCwgRXhlY1N0YXRlKiBleGVjLCBjb25zdCBJZGVu
dGlmaWVyJiBwcm9wZXJ0eU5hbWUsIFByb3BlcnR5U2xvdCAmc2xvdCkKK2Jvb2wgT2JqZWN0Q29u
c3RydWN0b3I6OmdldE93blByb3BlcnR5U2xvdChKU0NlbGwqIGNlbGwsIEV4ZWNTdGF0ZSogZXhl
YywgUHJvcGVydHlOYW1lIHByb3BlcnR5TmFtZSwgUHJvcGVydHlTbG90ICZzbG90KQogewogICAg
IHJldHVybiBnZXRTdGF0aWNGdW5jdGlvblNsb3Q8SlNPYmplY3Q+KGV4ZWMsIEV4ZWNTdGF0ZTo6
b2JqZWN0Q29uc3RydWN0b3JUYWJsZShleGVjKSwganNDYXN0PE9iamVjdENvbnN0cnVjdG9yKj4o
Y2VsbCksIHByb3BlcnR5TmFtZSwgc2xvdCk7CiB9CiAKLWJvb2wgT2JqZWN0Q29uc3RydWN0b3I6
OmdldE93blByb3BlcnR5RGVzY3JpcHRvcihKU09iamVjdCogb2JqZWN0LCBFeGVjU3RhdGUqIGV4
ZWMsIGNvbnN0IElkZW50aWZpZXImIHByb3BlcnR5TmFtZSwgUHJvcGVydHlEZXNjcmlwdG9yJiBk
ZXNjcmlwdG9yKQorYm9vbCBPYmplY3RDb25zdHJ1Y3Rvcjo6Z2V0T3duUHJvcGVydHlEZXNjcmlw
dG9yKEpTT2JqZWN0KiBvYmplY3QsIEV4ZWNTdGF0ZSogZXhlYywgUHJvcGVydHlOYW1lIHByb3Bl
cnR5TmFtZSwgUHJvcGVydHlEZXNjcmlwdG9yJiBkZXNjcmlwdG9yKQogewogICAgIHJldHVybiBn
ZXRTdGF0aWNGdW5jdGlvbkRlc2NyaXB0b3I8SlNPYmplY3Q+KGV4ZWMsIEV4ZWNTdGF0ZTo6b2Jq
ZWN0Q29uc3RydWN0b3JUYWJsZShleGVjKSwganNDYXN0PE9iamVjdENvbnN0cnVjdG9yKj4ob2Jq
ZWN0KSwgcHJvcGVydHlOYW1lLCBkZXNjcmlwdG9yKTsKIH0KSW5kZXg6IFNvdXJjZS9KYXZhU2Ny
aXB0Q29yZS9ydW50aW1lL09iamVjdENvbnN0cnVjdG9yLmgKPT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNl
L0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvT2JqZWN0Q29uc3RydWN0b3IuaAkocmV2aXNpb24gMTE2
NjY3KQorKysgU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvT2JqZWN0Q29uc3RydWN0b3Iu
aAkod29ya2luZyBjb3B5KQpAQCAtMzgsOCArMzgsOCBAQCBuYW1lc3BhY2UgSlNDIHsKICAgICAg
ICAgICAgIHJldHVybiBjb25zdHJ1Y3RvcjsKICAgICAgICAgfQogCi0gICAgICAgIHN0YXRpYyBi
b29sIGdldE93blByb3BlcnR5U2xvdChKU0NlbGwqLCBFeGVjU3RhdGUqLCBjb25zdCBJZGVudGlm
aWVyJiwgUHJvcGVydHlTbG90Jik7Ci0gICAgICAgIHN0YXRpYyBib29sIGdldE93blByb3BlcnR5
RGVzY3JpcHRvcihKU09iamVjdCosIEV4ZWNTdGF0ZSosIGNvbnN0IElkZW50aWZpZXImLCBQcm9w
ZXJ0eURlc2NyaXB0b3ImKTsKKyAgICAgICAgc3RhdGljIGJvb2wgZ2V0T3duUHJvcGVydHlTbG90
KEpTQ2VsbCosIEV4ZWNTdGF0ZSosIFByb3BlcnR5TmFtZSwgUHJvcGVydHlTbG90Jik7CisgICAg
ICAgIHN0YXRpYyBib29sIGdldE93blByb3BlcnR5RGVzY3JpcHRvcihKU09iamVjdCosIEV4ZWNT
dGF0ZSosIFByb3BlcnR5TmFtZSwgUHJvcGVydHlEZXNjcmlwdG9yJik7CiAKICAgICAgICAgc3Rh
dGljIGNvbnN0IENsYXNzSW5mbyBzX2luZm87CiAKSW5kZXg6IFNvdXJjZS9KYXZhU2NyaXB0Q29y
ZS9ydW50aW1lL09iamVjdFByb3RvdHlwZS5jcHAKPT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL0phdmFT
Y3JpcHRDb3JlL3J1bnRpbWUvT2JqZWN0UHJvdG90eXBlLmNwcAkocmV2aXNpb24gMTE2NjY3KQor
KysgU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvT2JqZWN0UHJvdG90eXBlLmNwcAkod29y
a2luZyBjb3B5KQpAQCAtNzcsMjggKzc3LDIyIEBAIHZvaWQgT2JqZWN0UHJvdG90eXBlOjpmaW5p
c2hDcmVhdGlvbihKU0cKICAgICBBU1NFUlQoaW5oZXJpdHMoJnNfaW5mbykpOwogfQogCi12b2lk
IE9iamVjdFByb3RvdHlwZTo6cHV0KEpTQ2VsbCogY2VsbCwgRXhlY1N0YXRlKiBleGVjLCBjb25z
dCBJZGVudGlmaWVyJiBwcm9wZXJ0eU5hbWUsIEpTVmFsdWUgdmFsdWUsIFB1dFByb3BlcnR5U2xv
dCYgc2xvdCkKK3ZvaWQgT2JqZWN0UHJvdG90eXBlOjpwdXQoSlNDZWxsKiBjZWxsLCBFeGVjU3Rh
dGUqIGV4ZWMsIFByb3BlcnR5TmFtZSBwcm9wZXJ0eU5hbWUsIEpTVmFsdWUgdmFsdWUsIFB1dFBy
b3BlcnR5U2xvdCYgc2xvdCkKIHsKICAgICBPYmplY3RQcm90b3R5cGUqIHRoaXNPYmplY3QgPSBq
c0Nhc3Q8T2JqZWN0UHJvdG90eXBlKj4oY2VsbCk7CiAgICAgQmFzZTo6cHV0KGNlbGwsIGV4ZWMs
IHByb3BlcnR5TmFtZSwgdmFsdWUsIHNsb3QpOwogCi0gICAgaWYgKHRoaXNPYmplY3QtPm1faGFz
Tm9Qcm9wZXJ0aWVzV2l0aFVJbnQzMk5hbWVzKSB7Ci0gICAgICAgIGJvb2wgaXNVSW50MzI7Ci0g
ICAgICAgIHByb3BlcnR5TmFtZS50b1VJbnQzMihpc1VJbnQzMik7Ci0gICAgICAgIHRoaXNPYmpl
Y3QtPm1faGFzTm9Qcm9wZXJ0aWVzV2l0aFVJbnQzMk5hbWVzID0gIWlzVUludDMyOwotICAgIH0K
KyAgICBpZiAodGhpc09iamVjdC0+bV9oYXNOb1Byb3BlcnRpZXNXaXRoVUludDMyTmFtZXMgJiYg
cHJvcGVydHlOYW1lLmFzSW5kZXgoKSAhPSBQcm9wZXJ0eU5hbWU6Ok5vdEFuSW5kZXgpCisgICAg
ICAgIHRoaXNPYmplY3QtPm1faGFzTm9Qcm9wZXJ0aWVzV2l0aFVJbnQzMk5hbWVzID0gZmFsc2U7
CiB9CiAKLWJvb2wgT2JqZWN0UHJvdG90eXBlOjpkZWZpbmVPd25Qcm9wZXJ0eShKU09iamVjdCog
b2JqZWN0LCBFeGVjU3RhdGUqIGV4ZWMsIGNvbnN0IElkZW50aWZpZXImIHByb3BlcnR5TmFtZSwg
UHJvcGVydHlEZXNjcmlwdG9yJiBkZXNjcmlwdG9yLCBib29sIHNob3VsZFRocm93KQorYm9vbCBP
YmplY3RQcm90b3R5cGU6OmRlZmluZU93blByb3BlcnR5KEpTT2JqZWN0KiBvYmplY3QsIEV4ZWNT
dGF0ZSogZXhlYywgUHJvcGVydHlOYW1lIHByb3BlcnR5TmFtZSwgUHJvcGVydHlEZXNjcmlwdG9y
JiBkZXNjcmlwdG9yLCBib29sIHNob3VsZFRocm93KQogewogICAgIE9iamVjdFByb3RvdHlwZSog
dGhpc09iamVjdCA9IGpzQ2FzdDxPYmplY3RQcm90b3R5cGUqPihvYmplY3QpOwogICAgIGJvb2wg
cmVzdWx0ID0gQmFzZTo6ZGVmaW5lT3duUHJvcGVydHkob2JqZWN0LCBleGVjLCBwcm9wZXJ0eU5h
bWUsIGRlc2NyaXB0b3IsIHNob3VsZFRocm93KTsKIAotICAgIGlmICh0aGlzT2JqZWN0LT5tX2hh
c05vUHJvcGVydGllc1dpdGhVSW50MzJOYW1lcykgewotICAgICAgICBib29sIGlzVUludDMyOwot
ICAgICAgICBwcm9wZXJ0eU5hbWUudG9VSW50MzIoaXNVSW50MzIpOwotICAgICAgICB0aGlzT2Jq
ZWN0LT5tX2hhc05vUHJvcGVydGllc1dpdGhVSW50MzJOYW1lcyA9ICFpc1VJbnQzMjsKLSAgICB9
CisgICAgaWYgKHRoaXNPYmplY3QtPm1faGFzTm9Qcm9wZXJ0aWVzV2l0aFVJbnQzMk5hbWVzICYm
IHByb3BlcnR5TmFtZS5hc0luZGV4KCkgIT0gUHJvcGVydHlOYW1lOjpOb3RBbkluZGV4KQorICAg
ICAgICB0aGlzT2JqZWN0LT5tX2hhc05vUHJvcGVydGllc1dpdGhVSW50MzJOYW1lcyA9IGZhbHNl
OwogCiAgICAgcmV0dXJuIHJlc3VsdDsKIH0KQEAgLTExMSwxMiArMTA1LDEyIEBAIGJvb2wgT2Jq
ZWN0UHJvdG90eXBlOjpnZXRPd25Qcm9wZXJ0eVNsb3QKICAgICByZXR1cm4gQmFzZTo6Z2V0T3du
UHJvcGVydHlTbG90QnlJbmRleCh0aGlzT2JqZWN0LCBleGVjLCBwcm9wZXJ0eU5hbWUsIHNsb3Qp
OwogfQogCi1ib29sIE9iamVjdFByb3RvdHlwZTo6Z2V0T3duUHJvcGVydHlTbG90KEpTQ2VsbCog
Y2VsbCwgRXhlY1N0YXRlKiBleGVjLCBjb25zdCBJZGVudGlmaWVyJiBwcm9wZXJ0eU5hbWUsIFBy
b3BlcnR5U2xvdCAmc2xvdCkKK2Jvb2wgT2JqZWN0UHJvdG90eXBlOjpnZXRPd25Qcm9wZXJ0eVNs
b3QoSlNDZWxsKiBjZWxsLCBFeGVjU3RhdGUqIGV4ZWMsIFByb3BlcnR5TmFtZSBwcm9wZXJ0eU5h
bWUsIFByb3BlcnR5U2xvdCAmc2xvdCkKIHsKICAgICByZXR1cm4gZ2V0U3RhdGljRnVuY3Rpb25T
bG90PEpTTm9uRmluYWxPYmplY3Q+KGV4ZWMsIEV4ZWNTdGF0ZTo6b2JqZWN0UHJvdG90eXBlVGFi
bGUoZXhlYyksIGpzQ2FzdDxPYmplY3RQcm90b3R5cGUqPihjZWxsKSwgcHJvcGVydHlOYW1lLCBz
bG90KTsKIH0KIAotYm9vbCBPYmplY3RQcm90b3R5cGU6OmdldE93blByb3BlcnR5RGVzY3JpcHRv
cihKU09iamVjdCogb2JqZWN0LCBFeGVjU3RhdGUqIGV4ZWMsIGNvbnN0IElkZW50aWZpZXImIHBy
b3BlcnR5TmFtZSwgUHJvcGVydHlEZXNjcmlwdG9yJiBkZXNjcmlwdG9yKQorYm9vbCBPYmplY3RQ
cm90b3R5cGU6OmdldE93blByb3BlcnR5RGVzY3JpcHRvcihKU09iamVjdCogb2JqZWN0LCBFeGVj
U3RhdGUqIGV4ZWMsIFByb3BlcnR5TmFtZSBwcm9wZXJ0eU5hbWUsIFByb3BlcnR5RGVzY3JpcHRv
ciYgZGVzY3JpcHRvcikKIHsKICAgICByZXR1cm4gZ2V0U3RhdGljRnVuY3Rpb25EZXNjcmlwdG9y
PEpTTm9uRmluYWxPYmplY3Q+KGV4ZWMsIEV4ZWNTdGF0ZTo6b2JqZWN0UHJvdG90eXBlVGFibGUo
ZXhlYyksIGpzQ2FzdDxPYmplY3RQcm90b3R5cGUqPihvYmplY3QpLCBwcm9wZXJ0eU5hbWUsIGRl
c2NyaXB0b3IpOwogfQpJbmRleDogU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvT2JqZWN0
UHJvdG90eXBlLmgKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUv
T2JqZWN0UHJvdG90eXBlLmgJKHJldmlzaW9uIDExNjY2NykKKysrIFNvdXJjZS9KYXZhU2NyaXB0
Q29yZS9ydW50aW1lL09iamVjdFByb3RvdHlwZS5oCSh3b3JraW5nIGNvcHkpCkBAIC01MCwxMiAr
NTAsMTIgQEAgbmFtZXNwYWNlIEpTQyB7CiAKICAgICBwcml2YXRlOgogICAgICAgICBPYmplY3RQ
cm90b3R5cGUoRXhlY1N0YXRlKiwgU3RydWN0dXJlKik7Ci0gICAgICAgIHN0YXRpYyB2b2lkIHB1
dChKU0NlbGwqLCBFeGVjU3RhdGUqLCBjb25zdCBJZGVudGlmaWVyJiwgSlNWYWx1ZSwgUHV0UHJv
cGVydHlTbG90Jik7Ci0gICAgICAgIHN0YXRpYyBib29sIGRlZmluZU93blByb3BlcnR5KEpTT2Jq
ZWN0KiwgRXhlY1N0YXRlKiwgY29uc3QgSWRlbnRpZmllciYgcHJvcGVydHlOYW1lLCBQcm9wZXJ0
eURlc2NyaXB0b3ImLCBib29sIHNob3VsZFRocm93KTsKKyAgICAgICAgc3RhdGljIHZvaWQgcHV0
KEpTQ2VsbCosIEV4ZWNTdGF0ZSosIFByb3BlcnR5TmFtZSwgSlNWYWx1ZSwgUHV0UHJvcGVydHlT
bG90Jik7CisgICAgICAgIHN0YXRpYyBib29sIGRlZmluZU93blByb3BlcnR5KEpTT2JqZWN0Kiwg
RXhlY1N0YXRlKiwgUHJvcGVydHlOYW1lLCBQcm9wZXJ0eURlc2NyaXB0b3ImLCBib29sIHNob3Vs
ZFRocm93KTsKIAotICAgICAgICBzdGF0aWMgYm9vbCBnZXRPd25Qcm9wZXJ0eVNsb3QoSlNDZWxs
KiwgRXhlY1N0YXRlKiwgY29uc3QgSWRlbnRpZmllciYsIFByb3BlcnR5U2xvdCYpOworICAgICAg
ICBzdGF0aWMgYm9vbCBnZXRPd25Qcm9wZXJ0eVNsb3QoSlNDZWxsKiwgRXhlY1N0YXRlKiwgUHJv
cGVydHlOYW1lLCBQcm9wZXJ0eVNsb3QmKTsKICAgICAgICAgc3RhdGljIGJvb2wgZ2V0T3duUHJv
cGVydHlTbG90QnlJbmRleChKU0NlbGwqLCBFeGVjU3RhdGUqLCB1bnNpZ25lZCBwcm9wZXJ0eU5h
bWUsIFByb3BlcnR5U2xvdCYpOwotICAgICAgICBzdGF0aWMgYm9vbCBnZXRPd25Qcm9wZXJ0eURl
c2NyaXB0b3IoSlNPYmplY3QqLCBFeGVjU3RhdGUqLCBjb25zdCBJZGVudGlmaWVyJiwgUHJvcGVy
dHlEZXNjcmlwdG9yJik7CisgICAgICAgIHN0YXRpYyBib29sIGdldE93blByb3BlcnR5RGVzY3Jp
cHRvcihKU09iamVjdCosIEV4ZWNTdGF0ZSosIFByb3BlcnR5TmFtZSwgUHJvcGVydHlEZXNjcmlw
dG9yJik7CiAKICAgICAgICAgYm9vbCBtX2hhc05vUHJvcGVydGllc1dpdGhVSW50MzJOYW1lczsK
ICAgICB9OwpJbmRleDogU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvUHJvcGVydHlOYW1l
LmgKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PQotLS0gU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvUHJvcGVydHlO
YW1lLmgJKHJldmlzaW9uIDApCisrKyBTb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9Qcm9w
ZXJ0eU5hbWUuaAkocmV2aXNpb24gMCkKQEAgLTAsMCArMSwxMzEgQEAKKy8qCisgKiBDb3B5cmln
aHQgKEMpIDIwMTIgQXBwbGUgSW5jLiBBbGwgcmlnaHRzIHJlc2VydmVkLgorICoKKyAqIFJlZGlz
dHJpYnV0aW9uIGFuZCB1c2UgaW4gc291cmNlIGFuZCBiaW5hcnkgZm9ybXMsIHdpdGggb3Igd2l0
aG91dAorICogbW9kaWZpY2F0aW9uLCBhcmUgcGVybWl0dGVkIHByb3ZpZGVkIHRoYXQgdGhlIGZv
bGxvd2luZyBjb25kaXRpb25zCisgKiBhcmUgbWV0OgorICogMS4gUmVkaXN0cmlidXRpb25zIG9m
IHNvdXJjZSBjb2RlIG11c3QgcmV0YWluIHRoZSBhYm92ZSBjb3B5cmlnaHQKKyAqICAgIG5vdGlj
ZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lci4K
KyAqIDIuIFJlZGlzdHJpYnV0aW9ucyBpbiBiaW5hcnkgZm9ybSBtdXN0IHJlcHJvZHVjZSB0aGUg
YWJvdmUgY29weXJpZ2h0CisgKiAgICBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFu
ZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIgaW4gdGhlCisgKiAgICBkb2N1bWVudGF0aW9uIGFu
ZC9vciBvdGhlciBtYXRlcmlhbHMgcHJvdmlkZWQgd2l0aCB0aGUgZGlzdHJpYnV0aW9uLgorICoK
KyAqIFRISVMgU09GVFdBUkUgSVMgUFJPVklERUQgQlkgQVBQTEUgSU5DLiBBTkQgSVRTIENPTlRS
SUJVVE9SUyBgYEFTIElTJycKKyAqIEFORCBBTlkgRVhQUkVTUyBPUiBJTVBMSUVEIFdBUlJBTlRJ
RVMsIElOQ0xVRElORywgQlVUIE5PVCBMSU1JVEVEIFRPLAorICogVEhFIElNUExJRUQgV0FSUkFO
VElFUyBPRiBNRVJDSEFOVEFCSUxJVFkgQU5EIEZJVE5FU1MgRk9SIEEgUEFSVElDVUxBUgorICog
UFVSUE9TRSBBUkUgRElTQ0xBSU1FRC4gSU4gTk8gRVZFTlQgU0hBTEwgQVBQTEUgSU5DLiBPUiBJ
VFMgQ09OVFJJQlVUT1JTCisgKiBCRSBMSUFCTEUgRk9SIEFOWSBESVJFQ1QsIElORElSRUNULCBJ
TkNJREVOVEFMLCBTUEVDSUFMLCBFWEVNUExBUlksIE9SCisgKiBDT05TRVFVRU5USUFMIERBTUFH
RVMgKElOQ0xVRElORywgQlVUIE5PVCBMSU1JVEVEIFRPLCBQUk9DVVJFTUVOVCBPRgorICogU1VC
U1RJVFVURSBHT09EUyBPUiBTRVJWSUNFUzsgTE9TUyBPRiBVU0UsIERBVEEsIE9SIFBST0ZJVFM7
IE9SIEJVU0lORVNTCisgKiBJTlRFUlJVUFRJT04pIEhPV0VWRVIgQ0FVU0VEIEFORCBPTiBBTlkg
VEhFT1JZIE9GIExJQUJJTElUWSwgV0hFVEhFUiBJTgorICogQ09OVFJBQ1QsIFNUUklDVCBMSUFC
SUxJVFksIE9SIFRPUlQgKElOQ0xVRElORyBORUdMSUdFTkNFIE9SIE9USEVSV0lTRSkKKyAqIEFS
SVNJTkcgSU4gQU5ZIFdBWSBPVVQgT0YgVEhFIFVTRSBPRiBUSElTIFNPRlRXQVJFLCBFVkVOIElG
IEFEVklTRUQgT0YKKyAqIFRIRSBQT1NTSUJJTElUWSBPRiBTVUNIIERBTUFHRS4KKyAqLworCisj
aWZuZGVmIFByb3BlcnR5TmFtZV9oCisjZGVmaW5lIFByb3BlcnR5TmFtZV9oCisKKyNpbmNsdWRl
ICJJZGVudGlmaWVyLmgiCisKK25hbWVzcGFjZSBKU0MgeworCit0ZW1wbGF0ZSA8dHlwZW5hbWUg
Q2hhclR5cGU+CitBTFdBWVNfSU5MSU5FIHVpbnQzMl90IHRvVUludDMyRnJvbUNoYXJhY3RlcnMo
Y29uc3QgQ2hhclR5cGUqIGNoYXJhY3RlcnMsIHVuc2lnbmVkIGxlbmd0aCkKK3sKKyAgICAvLyBB
biBlbXB0eSBzdHJpbmcgaXMgbm90IGEgbnVtYmVyLgorICAgIGlmICghbGVuZ3RoKQorICAgICAg
ICByZXR1cm4gMDsKKworICAgIC8vIEdldCB0aGUgZmlyc3QgY2hhcmFjdGVyLCB0dXJuaW5nIGl0
IGludG8gYSBkaWdpdC4KKyAgICB1aW50MzJfdCB2YWx1ZSA9IGNoYXJhY3RlcnNbMF0gLSAnMCc7
CisgICAgaWYgKHZhbHVlID4gOSkKKyAgICAgICAgcmV0dXJuIFVJTlRfTUFYOworICAgIAorICAg
IC8vIENoZWNrIGZvciBsZWFkaW5nIHplcm9zLiBJZiB0aGUgZmlyc3QgY2hhcmFjaGVyIGlzIDAs
IHRoZW4gdGhlCisgICAgLy8gbGVuZ3RoIG9mIHRoZSBzdHJpbmcgbXVzdCBiZSBvbmUgLSBlLmcu
ICIwNDIiIGlzIG5vdCBlcXVhbCB0byAiNDIiLgorICAgIGlmICghdmFsdWUgJiYgbGVuZ3RoID4g
MSkKKyAgICAgICAgcmV0dXJuIFVJTlRfTUFYOworICAgIAorICAgIHdoaWxlICgtLWxlbmd0aCkg
eworICAgICAgICAvLyBNdWx0aXBseSB2YWx1ZSBieSAxMCwgY2hlY2tpbmcgZm9yIG92ZXJmbG93
IG91dCBvZiAzMiBiaXRzLgorICAgICAgICBpZiAodmFsdWUgPiAweEZGRkZGRkZGVSAvIDEwKQor
ICAgICAgICAgICAgcmV0dXJuIFVJTlRfTUFYOworICAgICAgICB2YWx1ZSAqPSAxMDsKKyAgICAg
ICAgCisgICAgICAgIC8vIEdldCB0aGUgbmV4dCBjaGFyYWN0ZXIsIHR1cm5pbmcgaXQgaW50byBh
IGRpZ2l0LgorICAgICAgICB1aW50MzJfdCBuZXdWYWx1ZSA9ICooKytjaGFyYWN0ZXJzKSAtICcw
JzsKKyAgICAgICAgaWYgKG5ld1ZhbHVlID4gOSkKKyAgICAgICAgICAgIHJldHVybiBVSU5UX01B
WDsKKyAgICAgICAgCisgICAgICAgIC8vIEFkZCBpbiB0aGUgb2xkIHZhbHVlLCBjaGVja2luZyBm
b3Igb3ZlcmZsb3cgb3V0IG9mIDMyIGJpdHMuCisgICAgICAgIG5ld1ZhbHVlICs9IHZhbHVlOwor
ICAgICAgICBpZiAobmV3VmFsdWUgPCB2YWx1ZSkKKyAgICAgICAgICAgIHJldHVybiBVSU5UX01B
WDsKKyAgICAgICAgdmFsdWUgPSBuZXdWYWx1ZTsKKyAgICB9CisgICAgCisgICAgcmV0dXJuIHZh
bHVlOworfQorCitBTFdBWVNfSU5MSU5FIHVpbnQzMl90IHRvVUludDMyRnJvbVN0cmluZ0ltcGwo
U3RyaW5nSW1wbCogaW1wbCkKK3sKKyAgICBpZiAoaW1wbC0+aXM4Qml0KCkpCisgICAgICAgIHJl
dHVybiB0b1VJbnQzMkZyb21DaGFyYWN0ZXJzKGltcGwtPmNoYXJhY3RlcnM4KCksIGltcGwtPmxl
bmd0aCgpKTsKKyAgICByZXR1cm4gdG9VSW50MzJGcm9tQ2hhcmFjdGVycyhpbXBsLT5jaGFyYWN0
ZXJzMTYoKSwgaW1wbC0+bGVuZ3RoKCkpOworfQorCitjbGFzcyBQcm9wZXJ0eU5hbWUgeworcHVi
bGljOgorICAgIFByb3BlcnR5TmFtZShjb25zdCBJZGVudGlmaWVyJiBwcm9wZXJ0eU5hbWUpCisg
ICAgICAgIDogbV9pbXBsKHByb3BlcnR5TmFtZS5pbXBsKCkpCisgICAgeworICAgICAgICBBU1NF
UlQoIXByb3BlcnR5TmFtZS5pc051bGwoKSk7CisgICAgfQorCisgICAgU3RyaW5nSW1wbCogaW1w
bCgpIGNvbnN0IHsgcmV0dXJuIG1faW1wbDsgfQorICAgIFVTdHJpbmcgdXN0cmluZygpIGNvbnN0
IHsgcmV0dXJuIG1faW1wbDsgfQorCisgICAgc3RhdGljIGNvbnN0IHVpbnQzMl90IE5vdEFuSW5k
ZXggPSBVSU5UX01BWDsKKyAgICB1aW50MzJfdCBhc0luZGV4KCkKKyAgICB7CisgICAgICAgIHJl
dHVybiB0b1VJbnQzMkZyb21TdHJpbmdJbXBsKG1faW1wbCk7CisgICAgfQorCitwcml2YXRlOgor
ICAgIFN0cmluZ0ltcGwqIG1faW1wbDsKK307CisKK2lubGluZSBib29sIG9wZXJhdG9yPT0oUHJv
cGVydHlOYW1lIGEsIGNvbnN0IElkZW50aWZpZXImIGIpCit7CisgICAgcmV0dXJuIGEuaW1wbCgp
ID09IGIuaW1wbCgpOworfQorCitpbmxpbmUgYm9vbCBvcGVyYXRvcj09KGNvbnN0IElkZW50aWZp
ZXImIGEsIFByb3BlcnR5TmFtZSBiKQoreworICAgIHJldHVybiBhLmltcGwoKSA9PSBiLmltcGwo
KTsKK30KKworaW5saW5lIGJvb2wgb3BlcmF0b3I9PShQcm9wZXJ0eU5hbWUgYSwgUHJvcGVydHlO
YW1lIGIpCit7CisgICAgcmV0dXJuIGEuaW1wbCgpID09IGIuaW1wbCgpOworfQorCitpbmxpbmUg
Ym9vbCBvcGVyYXRvciE9KFByb3BlcnR5TmFtZSBhLCBjb25zdCBJZGVudGlmaWVyJiBiKQorewor
ICAgIHJldHVybiBhLmltcGwoKSAhPSBiLmltcGwoKTsKK30KKworaW5saW5lIGJvb2wgb3BlcmF0
b3IhPShjb25zdCBJZGVudGlmaWVyJiBhLCBQcm9wZXJ0eU5hbWUgYikKK3sKKyAgICByZXR1cm4g
YS5pbXBsKCkgIT0gYi5pbXBsKCk7Cit9CisKK2lubGluZSBib29sIG9wZXJhdG9yIT0oUHJvcGVy
dHlOYW1lIGEsIFByb3BlcnR5TmFtZSBiKQoreworICAgIHJldHVybiBhLmltcGwoKSAhPSBiLmlt
cGwoKTsKK30KKworfQorCisjZW5kaWYKSW5kZXg6IFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50
aW1lL1Byb3BlcnR5U2xvdC5oCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9y
dW50aW1lL1Byb3BlcnR5U2xvdC5oCShyZXZpc2lvbiAxMTY2NjcpCisrKyBTb3VyY2UvSmF2YVNj
cmlwdENvcmUvcnVudGltZS9Qcm9wZXJ0eVNsb3QuaAkod29ya2luZyBjb3B5KQpAQCAtMjEsOCAr
MjEsOCBAQAogI2lmbmRlZiBQcm9wZXJ0eVNsb3RfaAogI2RlZmluZSBQcm9wZXJ0eVNsb3RfaAog
Ci0jaW5jbHVkZSAiSWRlbnRpZmllci5oIgogI2luY2x1ZGUgIkpTVmFsdWUuaCIKKyNpbmNsdWRl
ICJQcm9wZXJ0eU5hbWUuaCIKICNpbmNsdWRlICJSZWdpc3Rlci5oIgogI2luY2x1ZGUgPHd0Zi9B
c3NlcnRpb25zLmg+CiAjaW5jbHVkZSA8d3RmL05vdEZvdW5kLmg+CkBAIC02MSwxMCArNjEsMTAg
QEAgbmFtZXNwYWNlIEpTQyB7CiAgICAgICAgICAgICBjbGVhclZhbHVlKCk7CiAgICAgICAgIH0K
IAotICAgICAgICB0eXBlZGVmIEpTVmFsdWUgKCpHZXRWYWx1ZUZ1bmMpKEV4ZWNTdGF0ZSosIEpT
VmFsdWUgc2xvdEJhc2UsIGNvbnN0IElkZW50aWZpZXImKTsKKyAgICAgICAgdHlwZWRlZiBKU1Zh
bHVlICgqR2V0VmFsdWVGdW5jKShFeGVjU3RhdGUqLCBKU1ZhbHVlIHNsb3RCYXNlLCBQcm9wZXJ0
eU5hbWUpOwogICAgICAgICB0eXBlZGVmIEpTVmFsdWUgKCpHZXRJbmRleFZhbHVlRnVuYykoRXhl
Y1N0YXRlKiwgSlNWYWx1ZSBzbG90QmFzZSwgdW5zaWduZWQpOwogCi0gICAgICAgIEpTVmFsdWUg
Z2V0VmFsdWUoRXhlY1N0YXRlKiBleGVjLCBjb25zdCBJZGVudGlmaWVyJiBwcm9wZXJ0eU5hbWUp
IGNvbnN0CisgICAgICAgIEpTVmFsdWUgZ2V0VmFsdWUoRXhlY1N0YXRlKiBleGVjLCBQcm9wZXJ0
eU5hbWUgcHJvcGVydHlOYW1lKSBjb25zdAogICAgICAgICB7CiAgICAgICAgICAgICBpZiAobV9n
ZXRWYWx1ZSA9PSBKU0NfVkFMVUVfTUFSS0VSKQogICAgICAgICAgICAgICAgIHJldHVybiBtX3Zh
bHVlOwpJbmRleDogU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvUmVnRXhwQ29uc3RydWN0
b3IuY3BwCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL1JlZ0V4
cENvbnN0cnVjdG9yLmNwcAkocmV2aXNpb24gMTE2NjY3KQorKysgU291cmNlL0phdmFTY3JpcHRD
b3JlL3J1bnRpbWUvUmVnRXhwQ29uc3RydWN0b3IuY3BwCSh3b3JraW5nIGNvcHkpCkBAIC0yOCwy
MSArMjgsMjEgQEAKIAogbmFtZXNwYWNlIEpTQyB7CiAKLXN0YXRpYyBKU1ZhbHVlIHJlZ0V4cENv
bnN0cnVjdG9ySW5wdXQoRXhlY1N0YXRlKiwgSlNWYWx1ZSwgY29uc3QgSWRlbnRpZmllciYpOwot
c3RhdGljIEpTVmFsdWUgcmVnRXhwQ29uc3RydWN0b3JNdWx0aWxpbmUoRXhlY1N0YXRlKiwgSlNW
YWx1ZSwgY29uc3QgSWRlbnRpZmllciYpOwotc3RhdGljIEpTVmFsdWUgcmVnRXhwQ29uc3RydWN0
b3JMYXN0TWF0Y2goRXhlY1N0YXRlKiwgSlNWYWx1ZSwgY29uc3QgSWRlbnRpZmllciYpOwotc3Rh
dGljIEpTVmFsdWUgcmVnRXhwQ29uc3RydWN0b3JMYXN0UGFyZW4oRXhlY1N0YXRlKiwgSlNWYWx1
ZSwgY29uc3QgSWRlbnRpZmllciYpOwotc3RhdGljIEpTVmFsdWUgcmVnRXhwQ29uc3RydWN0b3JM
ZWZ0Q29udGV4dChFeGVjU3RhdGUqLCBKU1ZhbHVlLCBjb25zdCBJZGVudGlmaWVyJik7Ci1zdGF0
aWMgSlNWYWx1ZSByZWdFeHBDb25zdHJ1Y3RvclJpZ2h0Q29udGV4dChFeGVjU3RhdGUqLCBKU1Zh
bHVlLCBjb25zdCBJZGVudGlmaWVyJik7Ci1zdGF0aWMgSlNWYWx1ZSByZWdFeHBDb25zdHJ1Y3Rv
ckRvbGxhcjEoRXhlY1N0YXRlKiwgSlNWYWx1ZSwgY29uc3QgSWRlbnRpZmllciYpOwotc3RhdGlj
IEpTVmFsdWUgcmVnRXhwQ29uc3RydWN0b3JEb2xsYXIyKEV4ZWNTdGF0ZSosIEpTVmFsdWUsIGNv
bnN0IElkZW50aWZpZXImKTsKLXN0YXRpYyBKU1ZhbHVlIHJlZ0V4cENvbnN0cnVjdG9yRG9sbGFy
MyhFeGVjU3RhdGUqLCBKU1ZhbHVlLCBjb25zdCBJZGVudGlmaWVyJik7Ci1zdGF0aWMgSlNWYWx1
ZSByZWdFeHBDb25zdHJ1Y3RvckRvbGxhcjQoRXhlY1N0YXRlKiwgSlNWYWx1ZSwgY29uc3QgSWRl
bnRpZmllciYpOwotc3RhdGljIEpTVmFsdWUgcmVnRXhwQ29uc3RydWN0b3JEb2xsYXI1KEV4ZWNT
dGF0ZSosIEpTVmFsdWUsIGNvbnN0IElkZW50aWZpZXImKTsKLXN0YXRpYyBKU1ZhbHVlIHJlZ0V4
cENvbnN0cnVjdG9yRG9sbGFyNihFeGVjU3RhdGUqLCBKU1ZhbHVlLCBjb25zdCBJZGVudGlmaWVy
Jik7Ci1zdGF0aWMgSlNWYWx1ZSByZWdFeHBDb25zdHJ1Y3RvckRvbGxhcjcoRXhlY1N0YXRlKiwg
SlNWYWx1ZSwgY29uc3QgSWRlbnRpZmllciYpOwotc3RhdGljIEpTVmFsdWUgcmVnRXhwQ29uc3Ry
dWN0b3JEb2xsYXI4KEV4ZWNTdGF0ZSosIEpTVmFsdWUsIGNvbnN0IElkZW50aWZpZXImKTsKLXN0
YXRpYyBKU1ZhbHVlIHJlZ0V4cENvbnN0cnVjdG9yRG9sbGFyOShFeGVjU3RhdGUqLCBKU1ZhbHVl
LCBjb25zdCBJZGVudGlmaWVyJik7CitzdGF0aWMgSlNWYWx1ZSByZWdFeHBDb25zdHJ1Y3Rvcklu
cHV0KEV4ZWNTdGF0ZSosIEpTVmFsdWUsIFByb3BlcnR5TmFtZSk7CitzdGF0aWMgSlNWYWx1ZSBy
ZWdFeHBDb25zdHJ1Y3Rvck11bHRpbGluZShFeGVjU3RhdGUqLCBKU1ZhbHVlLCBQcm9wZXJ0eU5h
bWUpOworc3RhdGljIEpTVmFsdWUgcmVnRXhwQ29uc3RydWN0b3JMYXN0TWF0Y2goRXhlY1N0YXRl
KiwgSlNWYWx1ZSwgUHJvcGVydHlOYW1lKTsKK3N0YXRpYyBKU1ZhbHVlIHJlZ0V4cENvbnN0cnVj
dG9yTGFzdFBhcmVuKEV4ZWNTdGF0ZSosIEpTVmFsdWUsIFByb3BlcnR5TmFtZSk7CitzdGF0aWMg
SlNWYWx1ZSByZWdFeHBDb25zdHJ1Y3RvckxlZnRDb250ZXh0KEV4ZWNTdGF0ZSosIEpTVmFsdWUs
IFByb3BlcnR5TmFtZSk7CitzdGF0aWMgSlNWYWx1ZSByZWdFeHBDb25zdHJ1Y3RvclJpZ2h0Q29u
dGV4dChFeGVjU3RhdGUqLCBKU1ZhbHVlLCBQcm9wZXJ0eU5hbWUpOworc3RhdGljIEpTVmFsdWUg
cmVnRXhwQ29uc3RydWN0b3JEb2xsYXIxKEV4ZWNTdGF0ZSosIEpTVmFsdWUsIFByb3BlcnR5TmFt
ZSk7CitzdGF0aWMgSlNWYWx1ZSByZWdFeHBDb25zdHJ1Y3RvckRvbGxhcjIoRXhlY1N0YXRlKiwg
SlNWYWx1ZSwgUHJvcGVydHlOYW1lKTsKK3N0YXRpYyBKU1ZhbHVlIHJlZ0V4cENvbnN0cnVjdG9y
RG9sbGFyMyhFeGVjU3RhdGUqLCBKU1ZhbHVlLCBQcm9wZXJ0eU5hbWUpOworc3RhdGljIEpTVmFs
dWUgcmVnRXhwQ29uc3RydWN0b3JEb2xsYXI0KEV4ZWNTdGF0ZSosIEpTVmFsdWUsIFByb3BlcnR5
TmFtZSk7CitzdGF0aWMgSlNWYWx1ZSByZWdFeHBDb25zdHJ1Y3RvckRvbGxhcjUoRXhlY1N0YXRl
KiwgSlNWYWx1ZSwgUHJvcGVydHlOYW1lKTsKK3N0YXRpYyBKU1ZhbHVlIHJlZ0V4cENvbnN0cnVj
dG9yRG9sbGFyNihFeGVjU3RhdGUqLCBKU1ZhbHVlLCBQcm9wZXJ0eU5hbWUpOworc3RhdGljIEpT
VmFsdWUgcmVnRXhwQ29uc3RydWN0b3JEb2xsYXI3KEV4ZWNTdGF0ZSosIEpTVmFsdWUsIFByb3Bl
cnR5TmFtZSk7CitzdGF0aWMgSlNWYWx1ZSByZWdFeHBDb25zdHJ1Y3RvckRvbGxhcjgoRXhlY1N0
YXRlKiwgSlNWYWx1ZSwgUHJvcGVydHlOYW1lKTsKK3N0YXRpYyBKU1ZhbHVlIHJlZ0V4cENvbnN0
cnVjdG9yRG9sbGFyOShFeGVjU3RhdGUqLCBKU1ZhbHVlLCBQcm9wZXJ0eU5hbWUpOwogCiBzdGF0
aWMgdm9pZCBzZXRSZWdFeHBDb25zdHJ1Y3RvcklucHV0KEV4ZWNTdGF0ZSosIEpTT2JqZWN0Kiwg
SlNWYWx1ZSk7CiBzdGF0aWMgdm9pZCBzZXRSZWdFeHBDb25zdHJ1Y3Rvck11bHRpbGluZShFeGVj
U3RhdGUqLCBKU09iamVjdCosIEpTVmFsdWUpOwpAQCAtOTIsNyArOTIsNyBAQCBSZWdFeHBDb25z
dHJ1Y3Rvcjo6UmVnRXhwQ29uc3RydWN0b3IoSlNHCiAKIHZvaWQgUmVnRXhwQ29uc3RydWN0b3I6
OmZpbmlzaENyZWF0aW9uKEV4ZWNTdGF0ZSogZXhlYywgUmVnRXhwUHJvdG90eXBlKiByZWdFeHBQ
cm90b3R5cGUpCiB7Ci0gICAgQmFzZTo6ZmluaXNoQ3JlYXRpb24oZXhlYy0+Z2xvYmFsRGF0YSgp
LCBJZGVudGlmaWVyKGV4ZWMsICJSZWdFeHAiKSk7CisgICAgQmFzZTo6ZmluaXNoQ3JlYXRpb24o
ZXhlYy0+Z2xvYmFsRGF0YSgpLCBJZGVudGlmaWVyKGV4ZWMsICJSZWdFeHAiKS51c3RyaW5nKCkp
OwogICAgIEFTU0VSVChpbmhlcml0cygmc19pbmZvKSk7CiAKICAgICAvLyBFQ01BIDE1LjEwLjUu
MSBSZWdFeHAucHJvdG90eXBlCkBAIC0xNTQsOTIgKzE1NCw5MiBAQCBKU1ZhbHVlIFJlZ0V4cENv
bnN0cnVjdG9yOjpnZXRSaWdodENvbnRlCiAgICAgcmV0dXJuIG1fY2FjaGVkUmVzdWx0Lmxhc3RS
ZXN1bHQoZXhlYywgdGhpcyktPnJpZ2h0Q29udGV4dChleGVjKTsKIH0KICAgICAKLWJvb2wgUmVn
RXhwQ29uc3RydWN0b3I6OmdldE93blByb3BlcnR5U2xvdChKU0NlbGwqIGNlbGwsIEV4ZWNTdGF0
ZSogZXhlYywgY29uc3QgSWRlbnRpZmllciYgcHJvcGVydHlOYW1lLCBQcm9wZXJ0eVNsb3QmIHNs
b3QpCitib29sIFJlZ0V4cENvbnN0cnVjdG9yOjpnZXRPd25Qcm9wZXJ0eVNsb3QoSlNDZWxsKiBj
ZWxsLCBFeGVjU3RhdGUqIGV4ZWMsIFByb3BlcnR5TmFtZSBwcm9wZXJ0eU5hbWUsIFByb3BlcnR5
U2xvdCYgc2xvdCkKIHsKICAgICByZXR1cm4gZ2V0U3RhdGljVmFsdWVTbG90PFJlZ0V4cENvbnN0
cnVjdG9yLCBJbnRlcm5hbEZ1bmN0aW9uPihleGVjLCBFeGVjU3RhdGU6OnJlZ0V4cENvbnN0cnVj
dG9yVGFibGUoZXhlYyksIGpzQ2FzdDxSZWdFeHBDb25zdHJ1Y3Rvcio+KGNlbGwpLCBwcm9wZXJ0
eU5hbWUsIHNsb3QpOwogfQogCi1ib29sIFJlZ0V4cENvbnN0cnVjdG9yOjpnZXRPd25Qcm9wZXJ0
eURlc2NyaXB0b3IoSlNPYmplY3QqIG9iamVjdCwgRXhlY1N0YXRlKiBleGVjLCBjb25zdCBJZGVu
dGlmaWVyJiBwcm9wZXJ0eU5hbWUsIFByb3BlcnR5RGVzY3JpcHRvciYgZGVzY3JpcHRvcikKK2Jv
b2wgUmVnRXhwQ29uc3RydWN0b3I6OmdldE93blByb3BlcnR5RGVzY3JpcHRvcihKU09iamVjdCog
b2JqZWN0LCBFeGVjU3RhdGUqIGV4ZWMsIFByb3BlcnR5TmFtZSBwcm9wZXJ0eU5hbWUsIFByb3Bl
cnR5RGVzY3JpcHRvciYgZGVzY3JpcHRvcikKIHsKICAgICByZXR1cm4gZ2V0U3RhdGljVmFsdWVE
ZXNjcmlwdG9yPFJlZ0V4cENvbnN0cnVjdG9yLCBJbnRlcm5hbEZ1bmN0aW9uPihleGVjLCBFeGVj
U3RhdGU6OnJlZ0V4cENvbnN0cnVjdG9yVGFibGUoZXhlYyksIGpzQ2FzdDxSZWdFeHBDb25zdHJ1
Y3Rvcio+KG9iamVjdCksIHByb3BlcnR5TmFtZSwgZGVzY3JpcHRvcik7CiB9CiAKLUpTVmFsdWUg
cmVnRXhwQ29uc3RydWN0b3JEb2xsYXIxKEV4ZWNTdGF0ZSogZXhlYywgSlNWYWx1ZSBzbG90QmFz
ZSwgY29uc3QgSWRlbnRpZmllciYpCitKU1ZhbHVlIHJlZ0V4cENvbnN0cnVjdG9yRG9sbGFyMShF
eGVjU3RhdGUqIGV4ZWMsIEpTVmFsdWUgc2xvdEJhc2UsIFByb3BlcnR5TmFtZSkKIHsKICAgICBy
ZXR1cm4gYXNSZWdFeHBDb25zdHJ1Y3RvcihzbG90QmFzZSktPmdldEJhY2tyZWYoZXhlYywgMSk7
CiB9CiAKLUpTVmFsdWUgcmVnRXhwQ29uc3RydWN0b3JEb2xsYXIyKEV4ZWNTdGF0ZSogZXhlYywg
SlNWYWx1ZSBzbG90QmFzZSwgY29uc3QgSWRlbnRpZmllciYpCitKU1ZhbHVlIHJlZ0V4cENvbnN0
cnVjdG9yRG9sbGFyMihFeGVjU3RhdGUqIGV4ZWMsIEpTVmFsdWUgc2xvdEJhc2UsIFByb3BlcnR5
TmFtZSkKIHsKICAgICByZXR1cm4gYXNSZWdFeHBDb25zdHJ1Y3RvcihzbG90QmFzZSktPmdldEJh
Y2tyZWYoZXhlYywgMik7CiB9CiAKLUpTVmFsdWUgcmVnRXhwQ29uc3RydWN0b3JEb2xsYXIzKEV4
ZWNTdGF0ZSogZXhlYywgSlNWYWx1ZSBzbG90QmFzZSwgY29uc3QgSWRlbnRpZmllciYpCitKU1Zh
bHVlIHJlZ0V4cENvbnN0cnVjdG9yRG9sbGFyMyhFeGVjU3RhdGUqIGV4ZWMsIEpTVmFsdWUgc2xv
dEJhc2UsIFByb3BlcnR5TmFtZSkKIHsKICAgICByZXR1cm4gYXNSZWdFeHBDb25zdHJ1Y3Rvcihz
bG90QmFzZSktPmdldEJhY2tyZWYoZXhlYywgMyk7CiB9CiAKLUpTVmFsdWUgcmVnRXhwQ29uc3Ry
dWN0b3JEb2xsYXI0KEV4ZWNTdGF0ZSogZXhlYywgSlNWYWx1ZSBzbG90QmFzZSwgY29uc3QgSWRl
bnRpZmllciYpCitKU1ZhbHVlIHJlZ0V4cENvbnN0cnVjdG9yRG9sbGFyNChFeGVjU3RhdGUqIGV4
ZWMsIEpTVmFsdWUgc2xvdEJhc2UsIFByb3BlcnR5TmFtZSkKIHsKICAgICByZXR1cm4gYXNSZWdF
eHBDb25zdHJ1Y3RvcihzbG90QmFzZSktPmdldEJhY2tyZWYoZXhlYywgNCk7CiB9CiAKLUpTVmFs
dWUgcmVnRXhwQ29uc3RydWN0b3JEb2xsYXI1KEV4ZWNTdGF0ZSogZXhlYywgSlNWYWx1ZSBzbG90
QmFzZSwgY29uc3QgSWRlbnRpZmllciYpCitKU1ZhbHVlIHJlZ0V4cENvbnN0cnVjdG9yRG9sbGFy
NShFeGVjU3RhdGUqIGV4ZWMsIEpTVmFsdWUgc2xvdEJhc2UsIFByb3BlcnR5TmFtZSkKIHsKICAg
ICByZXR1cm4gYXNSZWdFeHBDb25zdHJ1Y3RvcihzbG90QmFzZSktPmdldEJhY2tyZWYoZXhlYywg
NSk7CiB9CiAKLUpTVmFsdWUgcmVnRXhwQ29uc3RydWN0b3JEb2xsYXI2KEV4ZWNTdGF0ZSogZXhl
YywgSlNWYWx1ZSBzbG90QmFzZSwgY29uc3QgSWRlbnRpZmllciYpCitKU1ZhbHVlIHJlZ0V4cENv
bnN0cnVjdG9yRG9sbGFyNihFeGVjU3RhdGUqIGV4ZWMsIEpTVmFsdWUgc2xvdEJhc2UsIFByb3Bl
cnR5TmFtZSkKIHsKICAgICByZXR1cm4gYXNSZWdFeHBDb25zdHJ1Y3RvcihzbG90QmFzZSktPmdl
dEJhY2tyZWYoZXhlYywgNik7CiB9CiAKLUpTVmFsdWUgcmVnRXhwQ29uc3RydWN0b3JEb2xsYXI3
KEV4ZWNTdGF0ZSogZXhlYywgSlNWYWx1ZSBzbG90QmFzZSwgY29uc3QgSWRlbnRpZmllciYpCitK
U1ZhbHVlIHJlZ0V4cENvbnN0cnVjdG9yRG9sbGFyNyhFeGVjU3RhdGUqIGV4ZWMsIEpTVmFsdWUg
c2xvdEJhc2UsIFByb3BlcnR5TmFtZSkKIHsKICAgICByZXR1cm4gYXNSZWdFeHBDb25zdHJ1Y3Rv
cihzbG90QmFzZSktPmdldEJhY2tyZWYoZXhlYywgNyk7CiB9CiAKLUpTVmFsdWUgcmVnRXhwQ29u
c3RydWN0b3JEb2xsYXI4KEV4ZWNTdGF0ZSogZXhlYywgSlNWYWx1ZSBzbG90QmFzZSwgY29uc3Qg
SWRlbnRpZmllciYpCitKU1ZhbHVlIHJlZ0V4cENvbnN0cnVjdG9yRG9sbGFyOChFeGVjU3RhdGUq
IGV4ZWMsIEpTVmFsdWUgc2xvdEJhc2UsIFByb3BlcnR5TmFtZSkKIHsKICAgICByZXR1cm4gYXNS
ZWdFeHBDb25zdHJ1Y3RvcihzbG90QmFzZSktPmdldEJhY2tyZWYoZXhlYywgOCk7CiB9CiAKLUpT
VmFsdWUgcmVnRXhwQ29uc3RydWN0b3JEb2xsYXI5KEV4ZWNTdGF0ZSogZXhlYywgSlNWYWx1ZSBz
bG90QmFzZSwgY29uc3QgSWRlbnRpZmllciYpCitKU1ZhbHVlIHJlZ0V4cENvbnN0cnVjdG9yRG9s
bGFyOShFeGVjU3RhdGUqIGV4ZWMsIEpTVmFsdWUgc2xvdEJhc2UsIFByb3BlcnR5TmFtZSkKIHsK
ICAgICByZXR1cm4gYXNSZWdFeHBDb25zdHJ1Y3RvcihzbG90QmFzZSktPmdldEJhY2tyZWYoZXhl
YywgOSk7CiB9CiAKLUpTVmFsdWUgcmVnRXhwQ29uc3RydWN0b3JJbnB1dChFeGVjU3RhdGUqLCBK
U1ZhbHVlIHNsb3RCYXNlLCBjb25zdCBJZGVudGlmaWVyJikKK0pTVmFsdWUgcmVnRXhwQ29uc3Ry
dWN0b3JJbnB1dChFeGVjU3RhdGUqLCBKU1ZhbHVlIHNsb3RCYXNlLCBQcm9wZXJ0eU5hbWUpCiB7
CiAgICAgcmV0dXJuIGFzUmVnRXhwQ29uc3RydWN0b3Ioc2xvdEJhc2UpLT5pbnB1dCgpOwogfQog
Ci1KU1ZhbHVlIHJlZ0V4cENvbnN0cnVjdG9yTXVsdGlsaW5lKEV4ZWNTdGF0ZSosIEpTVmFsdWUg
c2xvdEJhc2UsIGNvbnN0IElkZW50aWZpZXImKQorSlNWYWx1ZSByZWdFeHBDb25zdHJ1Y3Rvck11
bHRpbGluZShFeGVjU3RhdGUqLCBKU1ZhbHVlIHNsb3RCYXNlLCBQcm9wZXJ0eU5hbWUpCiB7CiAg
ICAgcmV0dXJuIGpzQm9vbGVhbihhc1JlZ0V4cENvbnN0cnVjdG9yKHNsb3RCYXNlKS0+bXVsdGls
aW5lKCkpOwogfQogCi1KU1ZhbHVlIHJlZ0V4cENvbnN0cnVjdG9yTGFzdE1hdGNoKEV4ZWNTdGF0
ZSogZXhlYywgSlNWYWx1ZSBzbG90QmFzZSwgY29uc3QgSWRlbnRpZmllciYpCitKU1ZhbHVlIHJl
Z0V4cENvbnN0cnVjdG9yTGFzdE1hdGNoKEV4ZWNTdGF0ZSogZXhlYywgSlNWYWx1ZSBzbG90QmFz
ZSwgUHJvcGVydHlOYW1lKQogewogICAgIHJldHVybiBhc1JlZ0V4cENvbnN0cnVjdG9yKHNsb3RC
YXNlKS0+Z2V0QmFja3JlZihleGVjLCAwKTsKIH0KIAotSlNWYWx1ZSByZWdFeHBDb25zdHJ1Y3Rv
ckxhc3RQYXJlbihFeGVjU3RhdGUqIGV4ZWMsIEpTVmFsdWUgc2xvdEJhc2UsIGNvbnN0IElkZW50
aWZpZXImKQorSlNWYWx1ZSByZWdFeHBDb25zdHJ1Y3Rvckxhc3RQYXJlbihFeGVjU3RhdGUqIGV4
ZWMsIEpTVmFsdWUgc2xvdEJhc2UsIFByb3BlcnR5TmFtZSkKIHsKICAgICByZXR1cm4gYXNSZWdF
eHBDb25zdHJ1Y3RvcihzbG90QmFzZSktPmdldExhc3RQYXJlbihleGVjKTsKIH0KIAotSlNWYWx1
ZSByZWdFeHBDb25zdHJ1Y3RvckxlZnRDb250ZXh0KEV4ZWNTdGF0ZSogZXhlYywgSlNWYWx1ZSBz
bG90QmFzZSwgY29uc3QgSWRlbnRpZmllciYpCitKU1ZhbHVlIHJlZ0V4cENvbnN0cnVjdG9yTGVm
dENvbnRleHQoRXhlY1N0YXRlKiBleGVjLCBKU1ZhbHVlIHNsb3RCYXNlLCBQcm9wZXJ0eU5hbWUp
CiB7CiAgICAgcmV0dXJuIGFzUmVnRXhwQ29uc3RydWN0b3Ioc2xvdEJhc2UpLT5nZXRMZWZ0Q29u
dGV4dChleGVjKTsKIH0KIAotSlNWYWx1ZSByZWdFeHBDb25zdHJ1Y3RvclJpZ2h0Q29udGV4dChF
eGVjU3RhdGUqIGV4ZWMsIEpTVmFsdWUgc2xvdEJhc2UsIGNvbnN0IElkZW50aWZpZXImKQorSlNW
YWx1ZSByZWdFeHBDb25zdHJ1Y3RvclJpZ2h0Q29udGV4dChFeGVjU3RhdGUqIGV4ZWMsIEpTVmFs
dWUgc2xvdEJhc2UsIFByb3BlcnR5TmFtZSkKIHsKICAgICByZXR1cm4gYXNSZWdFeHBDb25zdHJ1
Y3RvcihzbG90QmFzZSktPmdldFJpZ2h0Q29udGV4dChleGVjKTsKIH0KIAotdm9pZCBSZWdFeHBD
b25zdHJ1Y3Rvcjo6cHV0KEpTQ2VsbCogY2VsbCwgRXhlY1N0YXRlKiBleGVjLCBjb25zdCBJZGVu
dGlmaWVyJiBwcm9wZXJ0eU5hbWUsIEpTVmFsdWUgdmFsdWUsIFB1dFByb3BlcnR5U2xvdCYgc2xv
dCkKK3ZvaWQgUmVnRXhwQ29uc3RydWN0b3I6OnB1dChKU0NlbGwqIGNlbGwsIEV4ZWNTdGF0ZSog
ZXhlYywgUHJvcGVydHlOYW1lIHByb3BlcnR5TmFtZSwgSlNWYWx1ZSB2YWx1ZSwgUHV0UHJvcGVy
dHlTbG90JiBzbG90KQogewogICAgIGxvb2t1cFB1dDxSZWdFeHBDb25zdHJ1Y3RvciwgSW50ZXJu
YWxGdW5jdGlvbj4oZXhlYywgcHJvcGVydHlOYW1lLCB2YWx1ZSwgRXhlY1N0YXRlOjpyZWdFeHBD
b25zdHJ1Y3RvclRhYmxlKGV4ZWMpLCBqc0Nhc3Q8UmVnRXhwQ29uc3RydWN0b3IqPihjZWxsKSwg
c2xvdCk7CiB9CkluZGV4OiBTb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9SZWdFeHBDb25z
dHJ1Y3Rvci5oCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL1Jl
Z0V4cENvbnN0cnVjdG9yLmgJKHJldmlzaW9uIDExNjY2NykKKysrIFNvdXJjZS9KYXZhU2NyaXB0
Q29yZS9ydW50aW1lL1JlZ0V4cENvbnN0cnVjdG9yLmgJKHdvcmtpbmcgY29weSkKQEAgLTQ4LDEw
ICs0OCwxMCBAQCBuYW1lc3BhY2UgSlNDIHsKICAgICAgICAgICAgIHJldHVybiBTdHJ1Y3R1cmU6
OmNyZWF0ZShnbG9iYWxEYXRhLCBnbG9iYWxPYmplY3QsIHByb3RvdHlwZSwgVHlwZUluZm8oT2Jq
ZWN0VHlwZSwgU3RydWN0dXJlRmxhZ3MpLCAmc19pbmZvKTsKICAgICAgICAgfQogCi0gICAgICAg
IHN0YXRpYyB2b2lkIHB1dChKU0NlbGwqLCBFeGVjU3RhdGUqLCBjb25zdCBJZGVudGlmaWVyJiBw
cm9wZXJ0eU5hbWUsIEpTVmFsdWUsIFB1dFByb3BlcnR5U2xvdCYpOworICAgICAgICBzdGF0aWMg
dm9pZCBwdXQoSlNDZWxsKiwgRXhlY1N0YXRlKiwgUHJvcGVydHlOYW1lLCBKU1ZhbHVlLCBQdXRQ
cm9wZXJ0eVNsb3QmKTsKIAotICAgICAgICBzdGF0aWMgYm9vbCBnZXRPd25Qcm9wZXJ0eVNsb3Qo
SlNDZWxsKiwgRXhlY1N0YXRlKiwgY29uc3QgSWRlbnRpZmllciYgcHJvcGVydHlOYW1lLCBQcm9w
ZXJ0eVNsb3QmKTsKLSAgICAgICAgc3RhdGljIGJvb2wgZ2V0T3duUHJvcGVydHlEZXNjcmlwdG9y
KEpTT2JqZWN0KiwgRXhlY1N0YXRlKiwgY29uc3QgSWRlbnRpZmllciYsIFByb3BlcnR5RGVzY3Jp
cHRvciYpOworICAgICAgICBzdGF0aWMgYm9vbCBnZXRPd25Qcm9wZXJ0eVNsb3QoSlNDZWxsKiwg
RXhlY1N0YXRlKiwgUHJvcGVydHlOYW1lLCBQcm9wZXJ0eVNsb3QmKTsKKyAgICAgICAgc3RhdGlj
IGJvb2wgZ2V0T3duUHJvcGVydHlEZXNjcmlwdG9yKEpTT2JqZWN0KiwgRXhlY1N0YXRlKiwgUHJv
cGVydHlOYW1lLCBQcm9wZXJ0eURlc2NyaXB0b3ImKTsKIAogICAgICAgICBzdGF0aWMgY29uc3Qg
Q2xhc3NJbmZvIHNfaW5mbzsKIApJbmRleDogU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUv
UmVnRXhwTWF0Y2hlc0FycmF5LmgKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL0phdmFTY3JpcHRDb3Jl
L3J1bnRpbWUvUmVnRXhwTWF0Y2hlc0FycmF5LmgJKHJldmlzaW9uIDExNjY2NykKKysrIFNvdXJj
ZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL1JlZ0V4cE1hdGNoZXNBcnJheS5oCSh3b3JraW5nIGNv
cHkpCkBAIC04MSw3ICs4MSw3IEBAIG5hbWVzcGFjZSBKU0MgewogICAgICAgICAgICAgICAgIHJl
aWZ5TWF0Y2hQcm9wZXJ0eShleGVjKTsKICAgICAgICAgfQogCi0gICAgICAgIHN0YXRpYyBib29s
IGdldE93blByb3BlcnR5U2xvdChKU0NlbGwqIGNlbGwsIEV4ZWNTdGF0ZSogZXhlYywgY29uc3Qg
SWRlbnRpZmllciYgcHJvcGVydHlOYW1lLCBQcm9wZXJ0eVNsb3QmIHNsb3QpCisgICAgICAgIHN0
YXRpYyBib29sIGdldE93blByb3BlcnR5U2xvdChKU0NlbGwqIGNlbGwsIEV4ZWNTdGF0ZSogZXhl
YywgUHJvcGVydHlOYW1lIHByb3BlcnR5TmFtZSwgUHJvcGVydHlTbG90JiBzbG90KQogICAgICAg
ICB7CiAgICAgICAgICAgICBSZWdFeHBNYXRjaGVzQXJyYXkqIHRoaXNPYmplY3QgPSBqc0Nhc3Q8
UmVnRXhwTWF0Y2hlc0FycmF5Kj4oY2VsbCk7CiAgICAgICAgICAgICB0aGlzT2JqZWN0LT5yZWlm
eUFsbFByb3BlcnRpZXNJZk5lY2Vzc2FyeShleGVjKTsKQEAgLTk4LDE0ICs5OCwxNCBAQCBuYW1l
c3BhY2UgSlNDIHsKICAgICAgICAgICAgIHJldHVybiBKU0FycmF5OjpnZXRPd25Qcm9wZXJ0eVNs
b3RCeUluZGV4KHRoaXNPYmplY3QsIGV4ZWMsIHByb3BlcnR5TmFtZSwgc2xvdCk7CiAgICAgICAg
IH0KIAotICAgICAgICBzdGF0aWMgYm9vbCBnZXRPd25Qcm9wZXJ0eURlc2NyaXB0b3IoSlNPYmpl
Y3QqIG9iamVjdCwgRXhlY1N0YXRlKiBleGVjLCBjb25zdCBJZGVudGlmaWVyJiBwcm9wZXJ0eU5h
bWUsIFByb3BlcnR5RGVzY3JpcHRvciYgZGVzY3JpcHRvcikKKyAgICAgICAgc3RhdGljIGJvb2wg
Z2V0T3duUHJvcGVydHlEZXNjcmlwdG9yKEpTT2JqZWN0KiBvYmplY3QsIEV4ZWNTdGF0ZSogZXhl
YywgUHJvcGVydHlOYW1lIHByb3BlcnR5TmFtZSwgUHJvcGVydHlEZXNjcmlwdG9yJiBkZXNjcmlw
dG9yKQogICAgICAgICB7CiAgICAgICAgICAgICBSZWdFeHBNYXRjaGVzQXJyYXkqIHRoaXNPYmpl
Y3QgPSBqc0Nhc3Q8UmVnRXhwTWF0Y2hlc0FycmF5Kj4ob2JqZWN0KTsKICAgICAgICAgICAgIHRo
aXNPYmplY3QtPnJlaWZ5QWxsUHJvcGVydGllc0lmTmVjZXNzYXJ5KGV4ZWMpOwogICAgICAgICAg
ICAgcmV0dXJuIEpTQXJyYXk6OmdldE93blByb3BlcnR5RGVzY3JpcHRvcih0aGlzT2JqZWN0LCBl
eGVjLCBwcm9wZXJ0eU5hbWUsIGRlc2NyaXB0b3IpOwogICAgICAgICB9CiAKLSAgICAgICAgc3Rh
dGljIHZvaWQgcHV0KEpTQ2VsbCogY2VsbCwgRXhlY1N0YXRlKiBleGVjLCBjb25zdCBJZGVudGlm
aWVyJiBwcm9wZXJ0eU5hbWUsIEpTVmFsdWUgdiwgUHV0UHJvcGVydHlTbG90JiBzbG90KQorICAg
ICAgICBzdGF0aWMgdm9pZCBwdXQoSlNDZWxsKiBjZWxsLCBFeGVjU3RhdGUqIGV4ZWMsIFByb3Bl
cnR5TmFtZSBwcm9wZXJ0eU5hbWUsIEpTVmFsdWUgdiwgUHV0UHJvcGVydHlTbG90JiBzbG90KQog
ICAgICAgICB7CiAgICAgICAgICAgICBSZWdFeHBNYXRjaGVzQXJyYXkqIHRoaXNPYmplY3QgPSBq
c0Nhc3Q8UmVnRXhwTWF0Y2hlc0FycmF5Kj4oY2VsbCk7CiAgICAgICAgICAgICB0aGlzT2JqZWN0
LT5yZWlmeUFsbFByb3BlcnRpZXNJZk5lY2Vzc2FyeShleGVjKTsKQEAgLTExOSw3ICsxMTksNyBA
QCBuYW1lc3BhY2UgSlNDIHsKICAgICAgICAgICAgIEpTQXJyYXk6OnB1dEJ5SW5kZXgodGhpc09i
amVjdCwgZXhlYywgcHJvcGVydHlOYW1lLCB2LCBzaG91bGRUaHJvdyk7CiAgICAgICAgIH0KIAot
ICAgICAgICBzdGF0aWMgYm9vbCBkZWxldGVQcm9wZXJ0eShKU0NlbGwqIGNlbGwsIEV4ZWNTdGF0
ZSogZXhlYywgY29uc3QgSWRlbnRpZmllciYgcHJvcGVydHlOYW1lKQorICAgICAgICBzdGF0aWMg
Ym9vbCBkZWxldGVQcm9wZXJ0eShKU0NlbGwqIGNlbGwsIEV4ZWNTdGF0ZSogZXhlYywgUHJvcGVy
dHlOYW1lIHByb3BlcnR5TmFtZSkKICAgICAgICAgewogICAgICAgICAgICAgUmVnRXhwTWF0Y2hl
c0FycmF5KiB0aGlzT2JqZWN0ID0ganNDYXN0PFJlZ0V4cE1hdGNoZXNBcnJheSo+KGNlbGwpOwog
ICAgICAgICAgICAgdGhpc09iamVjdC0+cmVpZnlBbGxQcm9wZXJ0aWVzSWZOZWNlc3NhcnkoZXhl
Yyk7CkBAIC0xNDAsNyArMTQwLDcgQEAgbmFtZXNwYWNlIEpTQyB7CiAgICAgICAgICAgICBKU0Fy
cmF5OjpnZXRPd25Qcm9wZXJ0eU5hbWVzKHRoaXNPYmplY3QsIGV4ZWMsIGFyciwgbW9kZSk7CiAg
ICAgICAgIH0KIAotICAgICAgICBzdGF0aWMgYm9vbCBkZWZpbmVPd25Qcm9wZXJ0eShKU09iamVj
dCogb2JqZWN0LCBFeGVjU3RhdGUqIGV4ZWMsIGNvbnN0IElkZW50aWZpZXImIHByb3BlcnR5TmFt
ZSwgUHJvcGVydHlEZXNjcmlwdG9yJiBkZXNjcmlwdG9yLCBib29sIHNob3VsZFRocm93KQorICAg
ICAgICBzdGF0aWMgYm9vbCBkZWZpbmVPd25Qcm9wZXJ0eShKU09iamVjdCogb2JqZWN0LCBFeGVj
U3RhdGUqIGV4ZWMsIFByb3BlcnR5TmFtZSBwcm9wZXJ0eU5hbWUsIFByb3BlcnR5RGVzY3JpcHRv
ciYgZGVzY3JpcHRvciwgYm9vbCBzaG91bGRUaHJvdykKICAgICAgICAgewogICAgICAgICAgICAg
UmVnRXhwTWF0Y2hlc0FycmF5KiB0aGlzT2JqZWN0ID0ganNDYXN0PFJlZ0V4cE1hdGNoZXNBcnJh
eSo+KG9iamVjdCk7CiAgICAgICAgICAgICB0aGlzT2JqZWN0LT5yZWlmeUFsbFByb3BlcnRpZXNJ
Zk5lY2Vzc2FyeShleGVjKTsKSW5kZXg6IFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL1Jl
Z0V4cE9iamVjdC5jcHAKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRp
bWUvUmVnRXhwT2JqZWN0LmNwcAkocmV2aXNpb24gMTE2NjY3KQorKysgU291cmNlL0phdmFTY3Jp
cHRDb3JlL3J1bnRpbWUvUmVnRXhwT2JqZWN0LmNwcAkod29ya2luZyBjb3B5KQpAQCAtMzcsMTAg
KzM3LDEwIEBACiAKIG5hbWVzcGFjZSBKU0MgewogCi1zdGF0aWMgSlNWYWx1ZSByZWdFeHBPYmpl
Y3RHbG9iYWwoRXhlY1N0YXRlKiwgSlNWYWx1ZSwgY29uc3QgSWRlbnRpZmllciYpOwotc3RhdGlj
IEpTVmFsdWUgcmVnRXhwT2JqZWN0SWdub3JlQ2FzZShFeGVjU3RhdGUqLCBKU1ZhbHVlLCBjb25z
dCBJZGVudGlmaWVyJik7Ci1zdGF0aWMgSlNWYWx1ZSByZWdFeHBPYmplY3RNdWx0aWxpbmUoRXhl
Y1N0YXRlKiwgSlNWYWx1ZSwgY29uc3QgSWRlbnRpZmllciYpOwotc3RhdGljIEpTVmFsdWUgcmVn
RXhwT2JqZWN0U291cmNlKEV4ZWNTdGF0ZSosIEpTVmFsdWUsIGNvbnN0IElkZW50aWZpZXImKTsK
K3N0YXRpYyBKU1ZhbHVlIHJlZ0V4cE9iamVjdEdsb2JhbChFeGVjU3RhdGUqLCBKU1ZhbHVlLCBQ
cm9wZXJ0eU5hbWUpOworc3RhdGljIEpTVmFsdWUgcmVnRXhwT2JqZWN0SWdub3JlQ2FzZShFeGVj
U3RhdGUqLCBKU1ZhbHVlLCBQcm9wZXJ0eU5hbWUpOworc3RhdGljIEpTVmFsdWUgcmVnRXhwT2Jq
ZWN0TXVsdGlsaW5lKEV4ZWNTdGF0ZSosIEpTVmFsdWUsIFByb3BlcnR5TmFtZSk7CitzdGF0aWMg
SlNWYWx1ZSByZWdFeHBPYmplY3RTb3VyY2UoRXhlY1N0YXRlKiwgSlNWYWx1ZSwgUHJvcGVydHlO
YW1lKTsKIAogfSAvLyBuYW1lc3BhY2UgSlNDCiAKQEAgLTg4LDcgKzg4LDcgQEAgdm9pZCBSZWdF
eHBPYmplY3Q6OnZpc2l0Q2hpbGRyZW4oSlNDZWxsKgogICAgICAgICB2aXNpdG9yLmFwcGVuZCgm
dGhpc09iamVjdC0+bV9sYXN0SW5kZXgpOwogfQogCi1ib29sIFJlZ0V4cE9iamVjdDo6Z2V0T3du
UHJvcGVydHlTbG90KEpTQ2VsbCogY2VsbCwgRXhlY1N0YXRlKiBleGVjLCBjb25zdCBJZGVudGlm
aWVyJiBwcm9wZXJ0eU5hbWUsIFByb3BlcnR5U2xvdCYgc2xvdCkKK2Jvb2wgUmVnRXhwT2JqZWN0
OjpnZXRPd25Qcm9wZXJ0eVNsb3QoSlNDZWxsKiBjZWxsLCBFeGVjU3RhdGUqIGV4ZWMsIFByb3Bl
cnR5TmFtZSBwcm9wZXJ0eU5hbWUsIFByb3BlcnR5U2xvdCYgc2xvdCkKIHsKICAgICBpZiAocHJv
cGVydHlOYW1lID09IGV4ZWMtPnByb3BlcnR5TmFtZXMoKS5sYXN0SW5kZXgpIHsKICAgICAgICAg
UmVnRXhwT2JqZWN0KiByZWdFeHAgPSBhc1JlZ0V4cE9iamVjdChjZWxsKTsKQEAgLTk4LDcgKzk4
LDcgQEAgYm9vbCBSZWdFeHBPYmplY3Q6OmdldE93blByb3BlcnR5U2xvdChKUwogICAgIHJldHVy
biBnZXRTdGF0aWNWYWx1ZVNsb3Q8UmVnRXhwT2JqZWN0LCBKU09iamVjdD4oZXhlYywgRXhlY1N0
YXRlOjpyZWdFeHBUYWJsZShleGVjKSwganNDYXN0PFJlZ0V4cE9iamVjdCo+KGNlbGwpLCBwcm9w
ZXJ0eU5hbWUsIHNsb3QpOwogfQogCi1ib29sIFJlZ0V4cE9iamVjdDo6Z2V0T3duUHJvcGVydHlE
ZXNjcmlwdG9yKEpTT2JqZWN0KiBvYmplY3QsIEV4ZWNTdGF0ZSogZXhlYywgY29uc3QgSWRlbnRp
ZmllciYgcHJvcGVydHlOYW1lLCBQcm9wZXJ0eURlc2NyaXB0b3ImIGRlc2NyaXB0b3IpCitib29s
IFJlZ0V4cE9iamVjdDo6Z2V0T3duUHJvcGVydHlEZXNjcmlwdG9yKEpTT2JqZWN0KiBvYmplY3Qs
IEV4ZWNTdGF0ZSogZXhlYywgUHJvcGVydHlOYW1lIHByb3BlcnR5TmFtZSwgUHJvcGVydHlEZXNj
cmlwdG9yJiBkZXNjcmlwdG9yKQogewogICAgIGlmIChwcm9wZXJ0eU5hbWUgPT0gZXhlYy0+cHJv
cGVydHlOYW1lcygpLmxhc3RJbmRleCkgewogICAgICAgICBSZWdFeHBPYmplY3QqIHJlZ0V4cCA9
IGFzUmVnRXhwT2JqZWN0KG9iamVjdCk7CkBAIC0xMDgsNyArMTA4LDcgQEAgYm9vbCBSZWdFeHBP
YmplY3Q6OmdldE93blByb3BlcnR5RGVzY3JpcAogICAgIHJldHVybiBnZXRTdGF0aWNWYWx1ZURl
c2NyaXB0b3I8UmVnRXhwT2JqZWN0LCBKU09iamVjdD4oZXhlYywgRXhlY1N0YXRlOjpyZWdFeHBU
YWJsZShleGVjKSwganNDYXN0PFJlZ0V4cE9iamVjdCo+KG9iamVjdCksIHByb3BlcnR5TmFtZSwg
ZGVzY3JpcHRvcik7CiB9CiAKLWJvb2wgUmVnRXhwT2JqZWN0OjpkZWxldGVQcm9wZXJ0eShKU0Nl
bGwqIGNlbGwsIEV4ZWNTdGF0ZSogZXhlYywgY29uc3QgSWRlbnRpZmllciYgcHJvcGVydHlOYW1l
KQorYm9vbCBSZWdFeHBPYmplY3Q6OmRlbGV0ZVByb3BlcnR5KEpTQ2VsbCogY2VsbCwgRXhlY1N0
YXRlKiBleGVjLCBQcm9wZXJ0eU5hbWUgcHJvcGVydHlOYW1lKQogewogICAgIGlmIChwcm9wZXJ0
eU5hbWUgPT0gZXhlYy0+cHJvcGVydHlOYW1lcygpLmxhc3RJbmRleCkKICAgICAgICAgcmV0dXJu
IGZhbHNlOwpAQCAtMTM2LDcgKzEzNiw3IEBAIHN0YXRpYyBib29sIHJlamVjdChFeGVjU3RhdGUq
IGV4ZWMsIGJvb2wKICAgICByZXR1cm4gZmFsc2U7CiB9CiAKLWJvb2wgUmVnRXhwT2JqZWN0Ojpk
ZWZpbmVPd25Qcm9wZXJ0eShKU09iamVjdCogb2JqZWN0LCBFeGVjU3RhdGUqIGV4ZWMsIGNvbnN0
IElkZW50aWZpZXImIHByb3BlcnR5TmFtZSwgUHJvcGVydHlEZXNjcmlwdG9yJiBkZXNjcmlwdG9y
LCBib29sIHNob3VsZFRocm93KQorYm9vbCBSZWdFeHBPYmplY3Q6OmRlZmluZU93blByb3BlcnR5
KEpTT2JqZWN0KiBvYmplY3QsIEV4ZWNTdGF0ZSogZXhlYywgUHJvcGVydHlOYW1lIHByb3BlcnR5
TmFtZSwgUHJvcGVydHlEZXNjcmlwdG9yJiBkZXNjcmlwdG9yLCBib29sIHNob3VsZFRocm93KQog
ewogICAgIGlmIChwcm9wZXJ0eU5hbWUgPT0gZXhlYy0+cHJvcGVydHlOYW1lcygpLmxhc3RJbmRl
eCkgewogICAgICAgICBSZWdFeHBPYmplY3QqIHJlZ0V4cCA9IGFzUmVnRXhwT2JqZWN0KG9iamVj
dCk7CkBAIC0xNjMsMjIgKzE2MywyMiBAQCBib29sIFJlZ0V4cE9iamVjdDo6ZGVmaW5lT3duUHJv
cGVydHkoSlNPCiAgICAgcmV0dXJuIEJhc2U6OmRlZmluZU93blByb3BlcnR5KG9iamVjdCwgZXhl
YywgcHJvcGVydHlOYW1lLCBkZXNjcmlwdG9yLCBzaG91bGRUaHJvdyk7CiB9CiAKLUpTVmFsdWUg
cmVnRXhwT2JqZWN0R2xvYmFsKEV4ZWNTdGF0ZSosIEpTVmFsdWUgc2xvdEJhc2UsIGNvbnN0IElk
ZW50aWZpZXImKQorSlNWYWx1ZSByZWdFeHBPYmplY3RHbG9iYWwoRXhlY1N0YXRlKiwgSlNWYWx1
ZSBzbG90QmFzZSwgUHJvcGVydHlOYW1lKQogewogICAgIHJldHVybiBqc0Jvb2xlYW4oYXNSZWdF
eHBPYmplY3Qoc2xvdEJhc2UpLT5yZWdFeHAoKS0+Z2xvYmFsKCkpOwogfQogCi1KU1ZhbHVlIHJl
Z0V4cE9iamVjdElnbm9yZUNhc2UoRXhlY1N0YXRlKiwgSlNWYWx1ZSBzbG90QmFzZSwgY29uc3Qg
SWRlbnRpZmllciYpCitKU1ZhbHVlIHJlZ0V4cE9iamVjdElnbm9yZUNhc2UoRXhlY1N0YXRlKiwg
SlNWYWx1ZSBzbG90QmFzZSwgUHJvcGVydHlOYW1lKQogewogICAgIHJldHVybiBqc0Jvb2xlYW4o
YXNSZWdFeHBPYmplY3Qoc2xvdEJhc2UpLT5yZWdFeHAoKS0+aWdub3JlQ2FzZSgpKTsKIH0KICAK
LUpTVmFsdWUgcmVnRXhwT2JqZWN0TXVsdGlsaW5lKEV4ZWNTdGF0ZSosIEpTVmFsdWUgc2xvdEJh
c2UsIGNvbnN0IElkZW50aWZpZXImKQorSlNWYWx1ZSByZWdFeHBPYmplY3RNdWx0aWxpbmUoRXhl
Y1N0YXRlKiwgSlNWYWx1ZSBzbG90QmFzZSwgUHJvcGVydHlOYW1lKQogeyAgICAgICAgICAgIAog
ICAgIHJldHVybiBqc0Jvb2xlYW4oYXNSZWdFeHBPYmplY3Qoc2xvdEJhc2UpLT5yZWdFeHAoKS0+
bXVsdGlsaW5lKCkpOwogfQogCi1KU1ZhbHVlIHJlZ0V4cE9iamVjdFNvdXJjZShFeGVjU3RhdGUq
IGV4ZWMsIEpTVmFsdWUgc2xvdEJhc2UsIGNvbnN0IElkZW50aWZpZXImKQorSlNWYWx1ZSByZWdF
eHBPYmplY3RTb3VyY2UoRXhlY1N0YXRlKiBleGVjLCBKU1ZhbHVlIHNsb3RCYXNlLCBQcm9wZXJ0
eU5hbWUpCiB7CiAgICAgVVN0cmluZyBwYXR0ZXJuID0gYXNSZWdFeHBPYmplY3Qoc2xvdEJhc2Up
LT5yZWdFeHAoKS0+cGF0dGVybigpOwogICAgIHVuc2lnbmVkIGxlbmd0aCA9IHBhdHRlcm4ubGVu
Z3RoKCk7CkBAIC0yNjgsNyArMjY4LDcgQEAgSlNWYWx1ZSByZWdFeHBPYmplY3RTb3VyY2UoRXhl
Y1N0YXRlKiBleAogICAgIHJldHVybiBqc1N0cmluZyhleGVjLCByZXN1bHQudG9VU3RyaW5nKCkp
OwogfQogCi12b2lkIFJlZ0V4cE9iamVjdDo6cHV0KEpTQ2VsbCogY2VsbCwgRXhlY1N0YXRlKiBl
eGVjLCBjb25zdCBJZGVudGlmaWVyJiBwcm9wZXJ0eU5hbWUsIEpTVmFsdWUgdmFsdWUsIFB1dFBy
b3BlcnR5U2xvdCYgc2xvdCkKK3ZvaWQgUmVnRXhwT2JqZWN0OjpwdXQoSlNDZWxsKiBjZWxsLCBF
eGVjU3RhdGUqIGV4ZWMsIFByb3BlcnR5TmFtZSBwcm9wZXJ0eU5hbWUsIEpTVmFsdWUgdmFsdWUs
IFB1dFByb3BlcnR5U2xvdCYgc2xvdCkKIHsKICAgICBpZiAocHJvcGVydHlOYW1lID09IGV4ZWMt
PnByb3BlcnR5TmFtZXMoKS5sYXN0SW5kZXgpIHsKICAgICAgICAgYXNSZWdFeHBPYmplY3QoY2Vs
bCktPnNldExhc3RJbmRleChleGVjLCB2YWx1ZSwgc2xvdC5pc1N0cmljdE1vZGUoKSk7CkluZGV4
OiBTb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9SZWdFeHBPYmplY3QuaAo9PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
Ci0tLSBTb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9SZWdFeHBPYmplY3QuaAkocmV2aXNp
b24gMTE2NjY3KQorKysgU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvUmVnRXhwT2JqZWN0
LmgJKHdvcmtpbmcgY29weSkKQEAgLTcwLDkgKzcwLDkgQEAgbmFtZXNwYWNlIEpTQyB7CiAgICAg
ICAgIGJvb2wgdGVzdChFeGVjU3RhdGUqIGV4ZWMsIEpTU3RyaW5nKiBzdHJpbmcpIHsgcmV0dXJu
IG1hdGNoKGV4ZWMsIHN0cmluZyk7IH0KICAgICAgICAgSlNWYWx1ZSBleGVjKEV4ZWNTdGF0ZSos
IEpTU3RyaW5nKik7CiAKLSAgICAgICAgc3RhdGljIGJvb2wgZ2V0T3duUHJvcGVydHlTbG90KEpT
Q2VsbCosIEV4ZWNTdGF0ZSosIGNvbnN0IElkZW50aWZpZXImIHByb3BlcnR5TmFtZSwgUHJvcGVy
dHlTbG90Jik7Ci0gICAgICAgIHN0YXRpYyBib29sIGdldE93blByb3BlcnR5RGVzY3JpcHRvcihK
U09iamVjdCosIEV4ZWNTdGF0ZSosIGNvbnN0IElkZW50aWZpZXImLCBQcm9wZXJ0eURlc2NyaXB0
b3ImKTsKLSAgICAgICAgc3RhdGljIHZvaWQgcHV0KEpTQ2VsbCosIEV4ZWNTdGF0ZSosIGNvbnN0
IElkZW50aWZpZXImIHByb3BlcnR5TmFtZSwgSlNWYWx1ZSwgUHV0UHJvcGVydHlTbG90Jik7Cisg
ICAgICAgIHN0YXRpYyBib29sIGdldE93blByb3BlcnR5U2xvdChKU0NlbGwqLCBFeGVjU3RhdGUq
LCBQcm9wZXJ0eU5hbWUsIFByb3BlcnR5U2xvdCYpOworICAgICAgICBzdGF0aWMgYm9vbCBnZXRP
d25Qcm9wZXJ0eURlc2NyaXB0b3IoSlNPYmplY3QqLCBFeGVjU3RhdGUqLCBQcm9wZXJ0eU5hbWUs
IFByb3BlcnR5RGVzY3JpcHRvciYpOworICAgICAgICBzdGF0aWMgdm9pZCBwdXQoSlNDZWxsKiwg
RXhlY1N0YXRlKiwgUHJvcGVydHlOYW1lLCBKU1ZhbHVlLCBQdXRQcm9wZXJ0eVNsb3QmKTsKIAog
ICAgICAgICBzdGF0aWMgSlNfRVhQT1JUREFUQSBjb25zdCBDbGFzc0luZm8gc19pbmZvOwogCkBA
IC04OSwxMCArODksMTAgQEAgbmFtZXNwYWNlIEpTQyB7CiAKICAgICAgICAgc3RhdGljIHZvaWQg
dmlzaXRDaGlsZHJlbihKU0NlbGwqLCBTbG90VmlzaXRvciYpOwogCi0gICAgICAgIEpTX0VYUE9S
VF9QUklWQVRFIHN0YXRpYyBib29sIGRlbGV0ZVByb3BlcnR5KEpTQ2VsbCosIEV4ZWNTdGF0ZSos
IGNvbnN0IElkZW50aWZpZXImIHByb3BlcnR5TmFtZSk7CisgICAgICAgIEpTX0VYUE9SVF9QUklW
QVRFIHN0YXRpYyBib29sIGRlbGV0ZVByb3BlcnR5KEpTQ2VsbCosIEV4ZWNTdGF0ZSosIFByb3Bl
cnR5TmFtZSk7CiAgICAgICAgIEpTX0VYUE9SVF9QUklWQVRFIHN0YXRpYyB2b2lkIGdldE93blBy
b3BlcnR5TmFtZXMoSlNPYmplY3QqLCBFeGVjU3RhdGUqLCBQcm9wZXJ0eU5hbWVBcnJheSYsIEVu
dW1lcmF0aW9uTW9kZSk7CiAgICAgICAgIEpTX0VYUE9SVF9QUklWQVRFIHN0YXRpYyB2b2lkIGdl
dFByb3BlcnR5TmFtZXMoSlNPYmplY3QqLCBFeGVjU3RhdGUqLCBQcm9wZXJ0eU5hbWVBcnJheSYs
IEVudW1lcmF0aW9uTW9kZSk7Ci0gICAgICAgIEpTX0VYUE9SVF9QUklWQVRFIHN0YXRpYyBib29s
IGRlZmluZU93blByb3BlcnR5KEpTT2JqZWN0KiwgRXhlY1N0YXRlKiwgY29uc3QgSWRlbnRpZmll
ciYgcHJvcGVydHlOYW1lLCBQcm9wZXJ0eURlc2NyaXB0b3ImLCBib29sIHNob3VsZFRocm93KTsK
KyAgICAgICAgSlNfRVhQT1JUX1BSSVZBVEUgc3RhdGljIGJvb2wgZGVmaW5lT3duUHJvcGVydHko
SlNPYmplY3QqLCBFeGVjU3RhdGUqLCBQcm9wZXJ0eU5hbWUsIFByb3BlcnR5RGVzY3JpcHRvciYs
IGJvb2wgc2hvdWxkVGhyb3cpOwogCiAgICAgcHJpdmF0ZToKICAgICAgICAgTWF0Y2hSZXN1bHQg
bWF0Y2goRXhlY1N0YXRlKiwgSlNTdHJpbmcqKTsKSW5kZXg6IFNvdXJjZS9KYXZhU2NyaXB0Q29y
ZS9ydW50aW1lL1JlZ0V4cFByb3RvdHlwZS5jcHAKPT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL0phdmFT
Y3JpcHRDb3JlL3J1bnRpbWUvUmVnRXhwUHJvdG90eXBlLmNwcAkocmV2aXNpb24gMTE2NjY3KQor
KysgU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvUmVnRXhwUHJvdG90eXBlLmNwcAkod29y
a2luZyBjb3B5KQpAQCAtNjcsMTIgKzY3LDEyIEBAIFJlZ0V4cFByb3RvdHlwZTo6UmVnRXhwUHJv
dG90eXBlKEpTR2xvYmEKIHsKIH0KIAotYm9vbCBSZWdFeHBQcm90b3R5cGU6OmdldE93blByb3Bl
cnR5U2xvdChKU0NlbGwqIGNlbGwsIEV4ZWNTdGF0ZSogZXhlYywgY29uc3QgSWRlbnRpZmllciYg
cHJvcGVydHlOYW1lLCBQcm9wZXJ0eVNsb3QgJnNsb3QpCitib29sIFJlZ0V4cFByb3RvdHlwZTo6
Z2V0T3duUHJvcGVydHlTbG90KEpTQ2VsbCogY2VsbCwgRXhlY1N0YXRlKiBleGVjLCBQcm9wZXJ0
eU5hbWUgcHJvcGVydHlOYW1lLCBQcm9wZXJ0eVNsb3QgJnNsb3QpCiB7CiAgICAgcmV0dXJuIGdl
dFN0YXRpY0Z1bmN0aW9uU2xvdDxSZWdFeHBPYmplY3Q+KGV4ZWMsIEV4ZWNTdGF0ZTo6cmVnRXhw
UHJvdG90eXBlVGFibGUoZXhlYyksIGpzQ2FzdDxSZWdFeHBQcm90b3R5cGUqPihjZWxsKSwgcHJv
cGVydHlOYW1lLCBzbG90KTsKIH0KIAotYm9vbCBSZWdFeHBQcm90b3R5cGU6OmdldE93blByb3Bl
cnR5RGVzY3JpcHRvcihKU09iamVjdCogb2JqZWN0LCBFeGVjU3RhdGUqIGV4ZWMsIGNvbnN0IElk
ZW50aWZpZXImIHByb3BlcnR5TmFtZSwgUHJvcGVydHlEZXNjcmlwdG9yJiBkZXNjcmlwdG9yKQor
Ym9vbCBSZWdFeHBQcm90b3R5cGU6OmdldE93blByb3BlcnR5RGVzY3JpcHRvcihKU09iamVjdCog
b2JqZWN0LCBFeGVjU3RhdGUqIGV4ZWMsIFByb3BlcnR5TmFtZSBwcm9wZXJ0eU5hbWUsIFByb3Bl
cnR5RGVzY3JpcHRvciYgZGVzY3JpcHRvcikKIHsKICAgICByZXR1cm4gZ2V0U3RhdGljRnVuY3Rp
b25EZXNjcmlwdG9yPFJlZ0V4cE9iamVjdD4oZXhlYywgRXhlY1N0YXRlOjpyZWdFeHBQcm90b3R5
cGVUYWJsZShleGVjKSwganNDYXN0PFJlZ0V4cFByb3RvdHlwZSo+KG9iamVjdCksIHByb3BlcnR5
TmFtZSwgZGVzY3JpcHRvcik7CiB9CkluZGV4OiBTb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGlt
ZS9SZWdFeHBQcm90b3R5cGUuaAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvSmF2YVNjcmlwdENvcmUv
cnVudGltZS9SZWdFeHBQcm90b3R5cGUuaAkocmV2aXNpb24gMTE2NjY3KQorKysgU291cmNlL0ph
dmFTY3JpcHRDb3JlL3J1bnRpbWUvUmVnRXhwUHJvdG90eXBlLmgJKHdvcmtpbmcgY29weSkKQEAg
LTQ5LDggKzQ5LDggQEAgbmFtZXNwYWNlIEpTQyB7CiAgICAgICAgIHN0YXRpYyBjb25zdCB1bnNp
Z25lZCBTdHJ1Y3R1cmVGbGFncyA9IE92ZXJyaWRlc0dldE93blByb3BlcnR5U2xvdCB8IFJlZ0V4
cE9iamVjdDo6U3RydWN0dXJlRmxhZ3M7CiAKICAgICBwcml2YXRlOgotICAgICAgICBzdGF0aWMg
Ym9vbCBnZXRPd25Qcm9wZXJ0eVNsb3QoSlNDZWxsKiwgRXhlY1N0YXRlKiwgY29uc3QgSWRlbnRp
ZmllciYsIFByb3BlcnR5U2xvdCYpOwotICAgICAgICBzdGF0aWMgYm9vbCBnZXRPd25Qcm9wZXJ0
eURlc2NyaXB0b3IoSlNPYmplY3QqLCBFeGVjU3RhdGUqLCBjb25zdCBJZGVudGlmaWVyJiwgUHJv
cGVydHlEZXNjcmlwdG9yJik7CisgICAgICAgIHN0YXRpYyBib29sIGdldE93blByb3BlcnR5U2xv
dChKU0NlbGwqLCBFeGVjU3RhdGUqLCBQcm9wZXJ0eU5hbWUsIFByb3BlcnR5U2xvdCYpOworICAg
ICAgICBzdGF0aWMgYm9vbCBnZXRPd25Qcm9wZXJ0eURlc2NyaXB0b3IoSlNPYmplY3QqLCBFeGVj
U3RhdGUqLCBQcm9wZXJ0eU5hbWUsIFByb3BlcnR5RGVzY3JpcHRvciYpOwogICAgIH07CiAKIH0g
Ly8gbmFtZXNwYWNlIEpTQwpJbmRleDogU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvU3Ry
aWN0RXZhbEFjdGl2YXRpb24uY3BwCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9KYXZhU2NyaXB0Q29y
ZS9ydW50aW1lL1N0cmljdEV2YWxBY3RpdmF0aW9uLmNwcAkocmV2aXNpb24gMTE2NjY3KQorKysg
U291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvU3RyaWN0RXZhbEFjdGl2YXRpb24uY3BwCSh3
b3JraW5nIGNvcHkpCkBAIC0zNyw3ICszNyw3IEBAIFN0cmljdEV2YWxBY3RpdmF0aW9uOjpTdHJp
Y3RFdmFsQWN0aXZhdGkKIHsKIH0KIAotYm9vbCBTdHJpY3RFdmFsQWN0aXZhdGlvbjo6ZGVsZXRl
UHJvcGVydHkoSlNDZWxsKiwgRXhlY1N0YXRlKiwgY29uc3QgSWRlbnRpZmllciYpCitib29sIFN0
cmljdEV2YWxBY3RpdmF0aW9uOjpkZWxldGVQcm9wZXJ0eShKU0NlbGwqLCBFeGVjU3RhdGUqLCBQ
cm9wZXJ0eU5hbWUpCiB7CiAgICAgcmV0dXJuIGZhbHNlOwogfQpJbmRleDogU291cmNlL0phdmFT
Y3JpcHRDb3JlL3J1bnRpbWUvU3RyaWN0RXZhbEFjdGl2YXRpb24uaAo9PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBT
b3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9TdHJpY3RFdmFsQWN0aXZhdGlvbi5oCShyZXZp
c2lvbiAxMTY2NjcpCisrKyBTb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9TdHJpY3RFdmFs
QWN0aXZhdGlvbi5oCSh3b3JraW5nIGNvcHkpCkBAIC00MSw3ICs0MSw3IEBAIHB1YmxpYzoKICAg
ICAgICAgcmV0dXJuIGFjdGl2YXRpb247CiAgICAgfQogCi0gICAgc3RhdGljIGJvb2wgZGVsZXRl
UHJvcGVydHkoSlNDZWxsKiwgRXhlY1N0YXRlKiwgY29uc3QgSWRlbnRpZmllciYpOworICAgIHN0
YXRpYyBib29sIGRlbGV0ZVByb3BlcnR5KEpTQ2VsbCosIEV4ZWNTdGF0ZSosIFByb3BlcnR5TmFt
ZSk7CiAgICAgc3RhdGljIEpTT2JqZWN0KiB0b1RoaXNPYmplY3QoSlNDZWxsKiwgRXhlY1N0YXRl
Kik7CiAKICAgICBzdGF0aWMgU3RydWN0dXJlKiBjcmVhdGVTdHJ1Y3R1cmUoSlNHbG9iYWxEYXRh
JiBnbG9iYWxEYXRhLCBKU0dsb2JhbE9iamVjdCogZ2xvYmFsT2JqZWN0LCBKU1ZhbHVlIHByb3Rv
dHlwZSkKSW5kZXg6IFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL1N0cmluZ0NvbnN0cnVj
dG9yLmNwcAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9TdHJp
bmdDb25zdHJ1Y3Rvci5jcHAJKHJldmlzaW9uIDExNjY2NykKKysrIFNvdXJjZS9KYXZhU2NyaXB0
Q29yZS9ydW50aW1lL1N0cmluZ0NvbnN0cnVjdG9yLmNwcAkod29ya2luZyBjb3B5KQpAQCAtNTUs
MTcgKzU1LDE3IEBAIFN0cmluZ0NvbnN0cnVjdG9yOjpTdHJpbmdDb25zdHJ1Y3RvcihKU0cKIAog
dm9pZCBTdHJpbmdDb25zdHJ1Y3Rvcjo6ZmluaXNoQ3JlYXRpb24oRXhlY1N0YXRlKiBleGVjLCBT
dHJpbmdQcm90b3R5cGUqIHN0cmluZ1Byb3RvdHlwZSkKIHsKLSAgICBCYXNlOjpmaW5pc2hDcmVh
dGlvbihleGVjLT5nbG9iYWxEYXRhKCksIElkZW50aWZpZXIoZXhlYywgc3RyaW5nUHJvdG90eXBl
LT5jbGFzc0luZm8oKS0+Y2xhc3NOYW1lKSk7CisgICAgQmFzZTo6ZmluaXNoQ3JlYXRpb24oZXhl
Yy0+Z2xvYmFsRGF0YSgpLCBzdHJpbmdQcm90b3R5cGUtPmNsYXNzSW5mbygpLT5jbGFzc05hbWUp
OwogICAgIHB1dERpcmVjdFdpdGhvdXRUcmFuc2l0aW9uKGV4ZWMtPmdsb2JhbERhdGEoKSwgZXhl
Yy0+cHJvcGVydHlOYW1lcygpLnByb3RvdHlwZSwgc3RyaW5nUHJvdG90eXBlLCBSZWFkT25seSB8
IERvbnRFbnVtIHwgRG9udERlbGV0ZSk7CiAgICAgcHV0RGlyZWN0V2l0aG91dFRyYW5zaXRpb24o
ZXhlYy0+Z2xvYmFsRGF0YSgpLCBleGVjLT5wcm9wZXJ0eU5hbWVzKCkubGVuZ3RoLCBqc051bWJl
cigxKSwgUmVhZE9ubHkgfCBEb250RW51bSB8IERvbnREZWxldGUpOwogfQogCi1ib29sIFN0cmlu
Z0NvbnN0cnVjdG9yOjpnZXRPd25Qcm9wZXJ0eVNsb3QoSlNDZWxsKiBjZWxsLCBFeGVjU3RhdGUq
IGV4ZWMsIGNvbnN0IElkZW50aWZpZXImIHByb3BlcnR5TmFtZSwgUHJvcGVydHlTbG90ICZzbG90
KQorYm9vbCBTdHJpbmdDb25zdHJ1Y3Rvcjo6Z2V0T3duUHJvcGVydHlTbG90KEpTQ2VsbCogY2Vs
bCwgRXhlY1N0YXRlKiBleGVjLCBQcm9wZXJ0eU5hbWUgcHJvcGVydHlOYW1lLCBQcm9wZXJ0eVNs
b3QgJnNsb3QpCiB7CiAgICAgcmV0dXJuIGdldFN0YXRpY0Z1bmN0aW9uU2xvdDxJbnRlcm5hbEZ1
bmN0aW9uPihleGVjLCBFeGVjU3RhdGU6OnN0cmluZ0NvbnN0cnVjdG9yVGFibGUoZXhlYyksIGpz
Q2FzdDxTdHJpbmdDb25zdHJ1Y3Rvcio+KGNlbGwpLCBwcm9wZXJ0eU5hbWUsIHNsb3QpOwogfQog
Ci1ib29sIFN0cmluZ0NvbnN0cnVjdG9yOjpnZXRPd25Qcm9wZXJ0eURlc2NyaXB0b3IoSlNPYmpl
Y3QqIG9iamVjdCwgRXhlY1N0YXRlKiBleGVjLCBjb25zdCBJZGVudGlmaWVyJiBwcm9wZXJ0eU5h
bWUsIFByb3BlcnR5RGVzY3JpcHRvciYgZGVzY3JpcHRvcikKK2Jvb2wgU3RyaW5nQ29uc3RydWN0
b3I6OmdldE93blByb3BlcnR5RGVzY3JpcHRvcihKU09iamVjdCogb2JqZWN0LCBFeGVjU3RhdGUq
IGV4ZWMsIFByb3BlcnR5TmFtZSBwcm9wZXJ0eU5hbWUsIFByb3BlcnR5RGVzY3JpcHRvciYgZGVz
Y3JpcHRvcikKIHsKICAgICByZXR1cm4gZ2V0U3RhdGljRnVuY3Rpb25EZXNjcmlwdG9yPEludGVy
bmFsRnVuY3Rpb24+KGV4ZWMsIEV4ZWNTdGF0ZTo6c3RyaW5nQ29uc3RydWN0b3JUYWJsZShleGVj
KSwganNDYXN0PFN0cmluZ0NvbnN0cnVjdG9yKj4ob2JqZWN0KSwgcHJvcGVydHlOYW1lLCBkZXNj
cmlwdG9yKTsKIH0KSW5kZXg6IFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL1N0cmluZ0Nv
bnN0cnVjdG9yLmgKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUv
U3RyaW5nQ29uc3RydWN0b3IuaAkocmV2aXNpb24gMTE2NjY3KQorKysgU291cmNlL0phdmFTY3Jp
cHRDb3JlL3J1bnRpbWUvU3RyaW5nQ29uc3RydWN0b3IuaAkod29ya2luZyBjb3B5KQpAQCAtNTQs
OCArNTQsOCBAQCBuYW1lc3BhY2UgSlNDIHsKICAgICAgICAgc3RhdGljIENvbnN0cnVjdFR5cGUg
Z2V0Q29uc3RydWN0RGF0YShKU0NlbGwqLCBDb25zdHJ1Y3REYXRhJik7CiAgICAgICAgIHN0YXRp
YyBDYWxsVHlwZSBnZXRDYWxsRGF0YShKU0NlbGwqLCBDYWxsRGF0YSYpOwogCi0gICAgICAgIHN0
YXRpYyBib29sIGdldE93blByb3BlcnR5U2xvdChKU0NlbGwqLCBFeGVjU3RhdGUqLCBjb25zdCBJ
ZGVudGlmaWVyJiwgUHJvcGVydHlTbG90Jik7Ci0gICAgICAgIHN0YXRpYyBib29sIGdldE93blBy
b3BlcnR5RGVzY3JpcHRvcihKU09iamVjdCosIEV4ZWNTdGF0ZSosIGNvbnN0IElkZW50aWZpZXIm
LCBQcm9wZXJ0eURlc2NyaXB0b3ImKTsKKyAgICAgICAgc3RhdGljIGJvb2wgZ2V0T3duUHJvcGVy
dHlTbG90KEpTQ2VsbCosIEV4ZWNTdGF0ZSosIFByb3BlcnR5TmFtZSwgUHJvcGVydHlTbG90Jik7
CisgICAgICAgIHN0YXRpYyBib29sIGdldE93blByb3BlcnR5RGVzY3JpcHRvcihKU09iamVjdCos
IEV4ZWNTdGF0ZSosIFByb3BlcnR5TmFtZSwgUHJvcGVydHlEZXNjcmlwdG9yJik7CiAgICAgfTsK
IAogfSAvLyBuYW1lc3BhY2UgSlNDCkluZGV4OiBTb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGlt
ZS9TdHJpbmdPYmplY3QuY3BwCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9y
dW50aW1lL1N0cmluZ09iamVjdC5jcHAJKHJldmlzaW9uIDExNjY2NykKKysrIFNvdXJjZS9KYXZh
U2NyaXB0Q29yZS9ydW50aW1lL1N0cmluZ09iamVjdC5jcHAJKHdvcmtpbmcgY29weSkKQEAgLTQz
LDcgKzQzLDcgQEAgdm9pZCBTdHJpbmdPYmplY3Q6OmZpbmlzaENyZWF0aW9uKEpTR2xvYgogICAg
IHNldEludGVybmFsVmFsdWUoZ2xvYmFsRGF0YSwgc3RyaW5nKTsKIH0KIAotYm9vbCBTdHJpbmdP
YmplY3Q6OmdldE93blByb3BlcnR5U2xvdChKU0NlbGwqIGNlbGwsIEV4ZWNTdGF0ZSogZXhlYywg
Y29uc3QgSWRlbnRpZmllciYgcHJvcGVydHlOYW1lLCBQcm9wZXJ0eVNsb3QmIHNsb3QpCitib29s
IFN0cmluZ09iamVjdDo6Z2V0T3duUHJvcGVydHlTbG90KEpTQ2VsbCogY2VsbCwgRXhlY1N0YXRl
KiBleGVjLCBQcm9wZXJ0eU5hbWUgcHJvcGVydHlOYW1lLCBQcm9wZXJ0eVNsb3QmIHNsb3QpCiB7
CiAgICAgU3RyaW5nT2JqZWN0KiB0aGlzT2JqZWN0ID0ganNDYXN0PFN0cmluZ09iamVjdCo+KGNl
bGwpOwogICAgIGlmICh0aGlzT2JqZWN0LT5pbnRlcm5hbFZhbHVlKCktPmdldFN0cmluZ1Byb3Bl
cnR5U2xvdChleGVjLCBwcm9wZXJ0eU5hbWUsIHNsb3QpKQpAQCAtNTksNyArNTksNyBAQCBib29s
IFN0cmluZ09iamVjdDo6Z2V0T3duUHJvcGVydHlTbG90QnlJCiAgICAgcmV0dXJuIEpTT2JqZWN0
OjpnZXRPd25Qcm9wZXJ0eVNsb3QodGhpc09iamVjdCwgZXhlYywgSWRlbnRpZmllcjo6ZnJvbShl
eGVjLCBwcm9wZXJ0eU5hbWUpLCBzbG90KTsKIH0KIAotYm9vbCBTdHJpbmdPYmplY3Q6OmdldE93
blByb3BlcnR5RGVzY3JpcHRvcihKU09iamVjdCogb2JqZWN0LCBFeGVjU3RhdGUqIGV4ZWMsIGNv
bnN0IElkZW50aWZpZXImIHByb3BlcnR5TmFtZSwgUHJvcGVydHlEZXNjcmlwdG9yJiBkZXNjcmlw
dG9yKQorYm9vbCBTdHJpbmdPYmplY3Q6OmdldE93blByb3BlcnR5RGVzY3JpcHRvcihKU09iamVj
dCogb2JqZWN0LCBFeGVjU3RhdGUqIGV4ZWMsIFByb3BlcnR5TmFtZSBwcm9wZXJ0eU5hbWUsIFBy
b3BlcnR5RGVzY3JpcHRvciYgZGVzY3JpcHRvcikKIHsKICAgICBTdHJpbmdPYmplY3QqIHRoaXNP
YmplY3QgPSBqc0Nhc3Q8U3RyaW5nT2JqZWN0Kj4ob2JqZWN0KTsKICAgICBpZiAodGhpc09iamVj
dC0+aW50ZXJuYWxWYWx1ZSgpLT5nZXRTdHJpbmdQcm9wZXJ0eURlc2NyaXB0b3IoZXhlYywgcHJv
cGVydHlOYW1lLCBkZXNjcmlwdG9yKSkKQEAgLTY3LDcgKzY3LDcgQEAgYm9vbCBTdHJpbmdPYmpl
Y3Q6OmdldE93blByb3BlcnR5RGVzY3JpcAogICAgIHJldHVybiBKU09iamVjdDo6Z2V0T3duUHJv
cGVydHlEZXNjcmlwdG9yKHRoaXNPYmplY3QsIGV4ZWMsIHByb3BlcnR5TmFtZSwgZGVzY3JpcHRv
cik7CiB9CiAKLXZvaWQgU3RyaW5nT2JqZWN0OjpwdXQoSlNDZWxsKiBjZWxsLCBFeGVjU3RhdGUq
IGV4ZWMsIGNvbnN0IElkZW50aWZpZXImIHByb3BlcnR5TmFtZSwgSlNWYWx1ZSB2YWx1ZSwgUHV0
UHJvcGVydHlTbG90JiBzbG90KQordm9pZCBTdHJpbmdPYmplY3Q6OnB1dChKU0NlbGwqIGNlbGws
IEV4ZWNTdGF0ZSogZXhlYywgUHJvcGVydHlOYW1lIHByb3BlcnR5TmFtZSwgSlNWYWx1ZSB2YWx1
ZSwgUHV0UHJvcGVydHlTbG90JiBzbG90KQogewogICAgIGlmIChwcm9wZXJ0eU5hbWUgPT0gZXhl
Yy0+cHJvcGVydHlOYW1lcygpLmxlbmd0aCkgewogICAgICAgICBpZiAoc2xvdC5pc1N0cmljdE1v
ZGUoKSkKQEAgLTc3LDcgKzc3LDcgQEAgdm9pZCBTdHJpbmdPYmplY3Q6OnB1dChKU0NlbGwqIGNl
bGwsIEV4ZQogICAgIEpTT2JqZWN0OjpwdXQoY2VsbCwgZXhlYywgcHJvcGVydHlOYW1lLCB2YWx1
ZSwgc2xvdCk7CiB9CiAKLWJvb2wgU3RyaW5nT2JqZWN0OjpkZWZpbmVPd25Qcm9wZXJ0eShKU09i
amVjdCogb2JqZWN0LCBFeGVjU3RhdGUqIGV4ZWMsIGNvbnN0IElkZW50aWZpZXImIHByb3BlcnR5
TmFtZSwgUHJvcGVydHlEZXNjcmlwdG9yJiBkZXNjcmlwdG9yLCBib29sIHRocm93RXhjZXB0aW9u
KQorYm9vbCBTdHJpbmdPYmplY3Q6OmRlZmluZU93blByb3BlcnR5KEpTT2JqZWN0KiBvYmplY3Qs
IEV4ZWNTdGF0ZSogZXhlYywgUHJvcGVydHlOYW1lIHByb3BlcnR5TmFtZSwgUHJvcGVydHlEZXNj
cmlwdG9yJiBkZXNjcmlwdG9yLCBib29sIHRocm93RXhjZXB0aW9uKQogewogICAgIFN0cmluZ09i
amVjdCogdGhpc09iamVjdCA9IGpzQ2FzdDxTdHJpbmdPYmplY3QqPihvYmplY3QpOwogCkBAIC0x
MTksMTUgKzExOSwxNiBAQCBib29sIFN0cmluZ09iamVjdDo6ZGVmaW5lT3duUHJvcGVydHkoSlNP
CiAgICAgcmV0dXJuIEJhc2U6OmRlZmluZU93blByb3BlcnR5KG9iamVjdCwgZXhlYywgcHJvcGVy
dHlOYW1lLCBkZXNjcmlwdG9yLCB0aHJvd0V4Y2VwdGlvbik7CiB9CiAKLWJvb2wgU3RyaW5nT2Jq
ZWN0OjpkZWxldGVQcm9wZXJ0eShKU0NlbGwqIGNlbGwsIEV4ZWNTdGF0ZSogZXhlYywgY29uc3Qg
SWRlbnRpZmllciYgcHJvcGVydHlOYW1lKQorYm9vbCBTdHJpbmdPYmplY3Q6OmRlbGV0ZVByb3Bl
cnR5KEpTQ2VsbCogY2VsbCwgRXhlY1N0YXRlKiBleGVjLCBQcm9wZXJ0eU5hbWUgcHJvcGVydHlO
YW1lKQogewogICAgIFN0cmluZ09iamVjdCogdGhpc09iamVjdCA9IGpzQ2FzdDxTdHJpbmdPYmpl
Y3QqPihjZWxsKTsKICAgICBpZiAocHJvcGVydHlOYW1lID09IGV4ZWMtPnByb3BlcnR5TmFtZXMo
KS5sZW5ndGgpCiAgICAgICAgIHJldHVybiBmYWxzZTsKLSAgICBib29sIGlzU3RyaWN0VUludDMy
OwotICAgIHVuc2lnbmVkIGkgPSBwcm9wZXJ0eU5hbWUudG9VSW50MzIoaXNTdHJpY3RVSW50MzIp
OwotICAgIGlmIChpc1N0cmljdFVJbnQzMiAmJiB0aGlzT2JqZWN0LT5pbnRlcm5hbFZhbHVlKCkt
PmNhbkdldEluZGV4KGkpKQorICAgIHVuc2lnbmVkIGkgPSBwcm9wZXJ0eU5hbWUuYXNJbmRleCgp
OworICAgIGlmICh0aGlzT2JqZWN0LT5pbnRlcm5hbFZhbHVlKCktPmNhbkdldEluZGV4KGkpKSB7
CisgICAgICAgIEFTU0VSVChpICE9IFByb3BlcnR5TmFtZTo6Tm90QW5JbmRleCk7IC8vIE5vIG5l
ZWQgZm9yIGFuIGV4cGxpY2l0IGNoZWNrLCB0aGUgYWJvdmUgdGVzdCB3b3VsZCBhbHdheXMgZmFp
bCEKICAgICAgICAgcmV0dXJuIGZhbHNlOworICAgIH0KICAgICByZXR1cm4gSlNPYmplY3Q6OmRl
bGV0ZVByb3BlcnR5KHRoaXNPYmplY3QsIGV4ZWMsIHByb3BlcnR5TmFtZSk7CiB9CiAKSW5kZXg6
IFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL1N0cmluZ09iamVjdC5oCj09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0K
LS0tIFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL1N0cmluZ09iamVjdC5oCShyZXZpc2lv
biAxMTY2NjcpCisrKyBTb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9TdHJpbmdPYmplY3Qu
aAkod29ya2luZyBjb3B5KQpAQCAtNDUsMTUgKzQ1LDE1IEBAIG5hbWVzcGFjZSBKU0MgewogICAg
ICAgICB9CiAgICAgICAgIHN0YXRpYyBTdHJpbmdPYmplY3QqIGNyZWF0ZShFeGVjU3RhdGUqLCBK
U0dsb2JhbE9iamVjdCosIEpTU3RyaW5nKik7CiAKLSAgICAgICAgc3RhdGljIGJvb2wgZ2V0T3du
UHJvcGVydHlTbG90KEpTQ2VsbCosIEV4ZWNTdGF0ZSosIGNvbnN0IElkZW50aWZpZXImIHByb3Bl
cnR5TmFtZSwgUHJvcGVydHlTbG90Jik7CisgICAgICAgIHN0YXRpYyBib29sIGdldE93blByb3Bl
cnR5U2xvdChKU0NlbGwqLCBFeGVjU3RhdGUqLCBQcm9wZXJ0eU5hbWUsIFByb3BlcnR5U2xvdCYp
OwogICAgICAgICBzdGF0aWMgYm9vbCBnZXRPd25Qcm9wZXJ0eVNsb3RCeUluZGV4KEpTQ2VsbCos
IEV4ZWNTdGF0ZSosIHVuc2lnbmVkIHByb3BlcnR5TmFtZSwgUHJvcGVydHlTbG90Jik7Ci0gICAg
ICAgIHN0YXRpYyBib29sIGdldE93blByb3BlcnR5RGVzY3JpcHRvcihKU09iamVjdCosIEV4ZWNT
dGF0ZSosIGNvbnN0IElkZW50aWZpZXImLCBQcm9wZXJ0eURlc2NyaXB0b3ImKTsKKyAgICAgICAg
c3RhdGljIGJvb2wgZ2V0T3duUHJvcGVydHlEZXNjcmlwdG9yKEpTT2JqZWN0KiwgRXhlY1N0YXRl
KiwgUHJvcGVydHlOYW1lLCBQcm9wZXJ0eURlc2NyaXB0b3ImKTsKIAotICAgICAgICBzdGF0aWMg
dm9pZCBwdXQoSlNDZWxsKiwgRXhlY1N0YXRlKiwgY29uc3QgSWRlbnRpZmllciYgcHJvcGVydHlO
YW1lLCBKU1ZhbHVlLCBQdXRQcm9wZXJ0eVNsb3QmKTsKKyAgICAgICAgc3RhdGljIHZvaWQgcHV0
KEpTQ2VsbCosIEV4ZWNTdGF0ZSosIFByb3BlcnR5TmFtZSwgSlNWYWx1ZSwgUHV0UHJvcGVydHlT
bG90Jik7CiAKLSAgICAgICAgc3RhdGljIGJvb2wgZGVsZXRlUHJvcGVydHkoSlNDZWxsKiwgRXhl
Y1N0YXRlKiwgY29uc3QgSWRlbnRpZmllciYgcHJvcGVydHlOYW1lKTsKKyAgICAgICAgc3RhdGlj
IGJvb2wgZGVsZXRlUHJvcGVydHkoSlNDZWxsKiwgRXhlY1N0YXRlKiwgUHJvcGVydHlOYW1lKTsK
ICAgICAgICAgc3RhdGljIHZvaWQgZ2V0T3duUHJvcGVydHlOYW1lcyhKU09iamVjdCosIEV4ZWNT
dGF0ZSosIFByb3BlcnR5TmFtZUFycmF5JiwgRW51bWVyYXRpb25Nb2RlKTsKLSAgICAgICAgc3Rh
dGljIGJvb2wgZGVmaW5lT3duUHJvcGVydHkoSlNPYmplY3QqLCBFeGVjU3RhdGUqLCBjb25zdCBJ
ZGVudGlmaWVyJiBwcm9wZXJ0eU5hbWUsIFByb3BlcnR5RGVzY3JpcHRvciYsIGJvb2wgc2hvdWxk
VGhyb3cpOworICAgICAgICBzdGF0aWMgYm9vbCBkZWZpbmVPd25Qcm9wZXJ0eShKU09iamVjdCos
IEV4ZWNTdGF0ZSosIFByb3BlcnR5TmFtZSwgUHJvcGVydHlEZXNjcmlwdG9yJiwgYm9vbCBzaG91
bGRUaHJvdyk7CiAKICAgICAgICAgc3RhdGljIGNvbnN0IEpTX0VYUE9SVERBVEEgQ2xhc3NJbmZv
IHNfaW5mbzsKIApJbmRleDogU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvU3RyaW5nUHJv
dG90eXBlLmNwcAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9T
dHJpbmdQcm90b3R5cGUuY3BwCShyZXZpc2lvbiAxMTY2NjcpCisrKyBTb3VyY2UvSmF2YVNjcmlw
dENvcmUvcnVudGltZS9TdHJpbmdQcm90b3R5cGUuY3BwCSh3b3JraW5nIGNvcHkpCkBAIC0xNDcs
MTIgKzE0NywxMiBAQCB2b2lkIFN0cmluZ1Byb3RvdHlwZTo6ZmluaXNoQ3JlYXRpb24oRXhlCiAg
ICAgcHV0RGlyZWN0V2l0aG91dFRyYW5zaXRpb24oZXhlYy0+Z2xvYmFsRGF0YSgpLCBleGVjLT5w
cm9wZXJ0eU5hbWVzKCkubGVuZ3RoLCBqc051bWJlcigwKSwgRG9udERlbGV0ZSB8IFJlYWRPbmx5
IHwgRG9udEVudW0pOwogfQogCi1ib29sIFN0cmluZ1Byb3RvdHlwZTo6Z2V0T3duUHJvcGVydHlT
bG90KEpTQ2VsbCogY2VsbCwgRXhlY1N0YXRlKiBleGVjLCBjb25zdCBJZGVudGlmaWVyJiBwcm9w
ZXJ0eU5hbWUsIFByb3BlcnR5U2xvdCAmc2xvdCkKK2Jvb2wgU3RyaW5nUHJvdG90eXBlOjpnZXRP
d25Qcm9wZXJ0eVNsb3QoSlNDZWxsKiBjZWxsLCBFeGVjU3RhdGUqIGV4ZWMsIFByb3BlcnR5TmFt
ZSBwcm9wZXJ0eU5hbWUsIFByb3BlcnR5U2xvdCAmc2xvdCkKIHsKICAgICByZXR1cm4gZ2V0U3Rh
dGljRnVuY3Rpb25TbG90PFN0cmluZ09iamVjdD4oZXhlYywgRXhlY1N0YXRlOjpzdHJpbmdUYWJs
ZShleGVjKSwganNDYXN0PFN0cmluZ1Byb3RvdHlwZSo+KGNlbGwpLCBwcm9wZXJ0eU5hbWUsIHNs
b3QpOwogfQogCi1ib29sIFN0cmluZ1Byb3RvdHlwZTo6Z2V0T3duUHJvcGVydHlEZXNjcmlwdG9y
KEpTT2JqZWN0KiBvYmplY3QsIEV4ZWNTdGF0ZSogZXhlYywgY29uc3QgSWRlbnRpZmllciYgcHJv
cGVydHlOYW1lLCBQcm9wZXJ0eURlc2NyaXB0b3ImIGRlc2NyaXB0b3IpCitib29sIFN0cmluZ1By
b3RvdHlwZTo6Z2V0T3duUHJvcGVydHlEZXNjcmlwdG9yKEpTT2JqZWN0KiBvYmplY3QsIEV4ZWNT
dGF0ZSogZXhlYywgUHJvcGVydHlOYW1lIHByb3BlcnR5TmFtZSwgUHJvcGVydHlEZXNjcmlwdG9y
JiBkZXNjcmlwdG9yKQogewogICAgIHJldHVybiBnZXRTdGF0aWNGdW5jdGlvbkRlc2NyaXB0b3I8
U3RyaW5nT2JqZWN0PihleGVjLCBFeGVjU3RhdGU6OnN0cmluZ1RhYmxlKGV4ZWMpLCBqc0Nhc3Q8
U3RyaW5nUHJvdG90eXBlKj4ob2JqZWN0KSwgcHJvcGVydHlOYW1lLCBkZXNjcmlwdG9yKTsKIH0K
SW5kZXg6IFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL1N0cmluZ1Byb3RvdHlwZS5oCj09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT0KLS0tIFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL1N0cmluZ1Byb3RvdHlw
ZS5oCShyZXZpc2lvbiAxMTY2NjcpCisrKyBTb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9T
dHJpbmdQcm90b3R5cGUuaAkod29ya2luZyBjb3B5KQpAQCAtNDIsOCArNDIsOCBAQCBuYW1lc3Bh
Y2UgSlNDIHsKICAgICAgICAgICAgIHJldHVybiBwcm90b3R5cGU7CiAgICAgICAgIH0KIAotICAg
ICAgICBzdGF0aWMgYm9vbCBnZXRPd25Qcm9wZXJ0eVNsb3QoSlNDZWxsKiwgRXhlY1N0YXRlKiwg
Y29uc3QgSWRlbnRpZmllciYgcHJvcGVydHlOYW1lLCBQcm9wZXJ0eVNsb3QmKTsKLSAgICAgICAg
c3RhdGljIGJvb2wgZ2V0T3duUHJvcGVydHlEZXNjcmlwdG9yKEpTT2JqZWN0KiwgRXhlY1N0YXRl
KiwgY29uc3QgSWRlbnRpZmllciYsIFByb3BlcnR5RGVzY3JpcHRvciYpOworICAgICAgICBzdGF0
aWMgYm9vbCBnZXRPd25Qcm9wZXJ0eVNsb3QoSlNDZWxsKiwgRXhlY1N0YXRlKiwgUHJvcGVydHlO
YW1lLCBQcm9wZXJ0eVNsb3QmKTsKKyAgICAgICAgc3RhdGljIGJvb2wgZ2V0T3duUHJvcGVydHlE
ZXNjcmlwdG9yKEpTT2JqZWN0KiwgRXhlY1N0YXRlKiwgUHJvcGVydHlOYW1lLCBQcm9wZXJ0eURl
c2NyaXB0b3ImKTsKIAogICAgICAgICBzdGF0aWMgU3RydWN0dXJlKiBjcmVhdGVTdHJ1Y3R1cmUo
SlNHbG9iYWxEYXRhJiBnbG9iYWxEYXRhLCBKU0dsb2JhbE9iamVjdCogZ2xvYmFsT2JqZWN0LCBK
U1ZhbHVlIHByb3RvdHlwZSkKICAgICAgICAgewpJbmRleDogU291cmNlL0phdmFTY3JpcHRDb3Jl
L3J1bnRpbWUvU3RydWN0dXJlLmNwcAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvSmF2YVNjcmlwdENv
cmUvcnVudGltZS9TdHJ1Y3R1cmUuY3BwCShyZXZpc2lvbiAxMTY2NjcpCisrKyBTb3VyY2UvSmF2
YVNjcmlwdENvcmUvcnVudGltZS9TdHJ1Y3R1cmUuY3BwCSh3b3JraW5nIGNvcHkpCkBAIC0yNiw3
ICsyNiw2IEBACiAjaW5jbHVkZSAiY29uZmlnLmgiCiAjaW5jbHVkZSAiU3RydWN0dXJlLmgiCiAK
LSNpbmNsdWRlICJJZGVudGlmaWVyLmgiCiAjaW5jbHVkZSAiSlNPYmplY3QuaCIKICNpbmNsdWRl
ICJKU1Byb3BlcnR5TmFtZUl0ZXJhdG9yLmgiCiAjaW5jbHVkZSAiTG9va3VwLmgiCkBAIC0yNjcs
NyArMjY2LDcgQEAgdm9pZCBTdHJ1Y3R1cmU6Omdyb3dQcm9wZXJ0eVN0b3JhZ2VDYXBhYwogICAg
ICAgICBtX3Byb3BlcnR5U3RvcmFnZUNhcGFjaXR5ICo9IDI7CiB9CiAKLXZvaWQgU3RydWN0dXJl
OjpkZXNwZWNpZnlEaWN0aW9uYXJ5RnVuY3Rpb24oSlNHbG9iYWxEYXRhJiBnbG9iYWxEYXRhLCBj
b25zdCBJZGVudGlmaWVyJiBwcm9wZXJ0eU5hbWUpCit2b2lkIFN0cnVjdHVyZTo6ZGVzcGVjaWZ5
RGljdGlvbmFyeUZ1bmN0aW9uKEpTR2xvYmFsRGF0YSYgZ2xvYmFsRGF0YSwgUHJvcGVydHlOYW1l
IHByb3BlcnR5TmFtZSkKIHsKICAgICBTdHJpbmdJbXBsKiByZXAgPSBwcm9wZXJ0eU5hbWUuaW1w
bCgpOwogCkBAIC0yODEsNyArMjgwLDcgQEAgdm9pZCBTdHJ1Y3R1cmU6OmRlc3BlY2lmeURpY3Rp
b25hcnlGdW5jdAogICAgIGVudHJ5LT5zcGVjaWZpY1ZhbHVlLmNsZWFyKCk7CiB9CiAKLVN0cnVj
dHVyZSogU3RydWN0dXJlOjphZGRQcm9wZXJ0eVRyYW5zaXRpb25Ub0V4aXN0aW5nU3RydWN0dXJl
KFN0cnVjdHVyZSogc3RydWN0dXJlLCBjb25zdCBJZGVudGlmaWVyJiBwcm9wZXJ0eU5hbWUsIHVu
c2lnbmVkIGF0dHJpYnV0ZXMsIEpTQ2VsbCogc3BlY2lmaWNWYWx1ZSwgc2l6ZV90JiBvZmZzZXQp
CitTdHJ1Y3R1cmUqIFN0cnVjdHVyZTo6YWRkUHJvcGVydHlUcmFuc2l0aW9uVG9FeGlzdGluZ1N0
cnVjdHVyZShTdHJ1Y3R1cmUqIHN0cnVjdHVyZSwgUHJvcGVydHlOYW1lIHByb3BlcnR5TmFtZSwg
dW5zaWduZWQgYXR0cmlidXRlcywgSlNDZWxsKiBzcGVjaWZpY1ZhbHVlLCBzaXplX3QmIG9mZnNl
dCkKIHsKICAgICBBU1NFUlQoIXN0cnVjdHVyZS0+aXNEaWN0aW9uYXJ5KCkpOwogICAgIEFTU0VS
VChzdHJ1Y3R1cmUtPmlzT2JqZWN0KCkpOwpAQCAtMjk4LDcgKzI5Nyw3IEBAIFN0cnVjdHVyZSog
U3RydWN0dXJlOjphZGRQcm9wZXJ0eVRyYW5zaXQKICAgICByZXR1cm4gMDsKIH0KIAotU3RydWN0
dXJlKiBTdHJ1Y3R1cmU6OmFkZFByb3BlcnR5VHJhbnNpdGlvbihKU0dsb2JhbERhdGEmIGdsb2Jh
bERhdGEsIFN0cnVjdHVyZSogc3RydWN0dXJlLCBjb25zdCBJZGVudGlmaWVyJiBwcm9wZXJ0eU5h
bWUsIHVuc2lnbmVkIGF0dHJpYnV0ZXMsIEpTQ2VsbCogc3BlY2lmaWNWYWx1ZSwgc2l6ZV90JiBv
ZmZzZXQpCitTdHJ1Y3R1cmUqIFN0cnVjdHVyZTo6YWRkUHJvcGVydHlUcmFuc2l0aW9uKEpTR2xv
YmFsRGF0YSYgZ2xvYmFsRGF0YSwgU3RydWN0dXJlKiBzdHJ1Y3R1cmUsIFByb3BlcnR5TmFtZSBw
cm9wZXJ0eU5hbWUsIHVuc2lnbmVkIGF0dHJpYnV0ZXMsIEpTQ2VsbCogc3BlY2lmaWNWYWx1ZSwg
c2l6ZV90JiBvZmZzZXQpCiB7CiAgICAgLy8gSWYgd2UgaGF2ZSBhIHNwZWNpZmljIGZ1bmN0aW9u
LCB3ZSBtYXkgaGF2ZSBnb3QgdG8gdGhpcyBwb2ludCBpZiB0aGVyZSBpcwogICAgIC8vIGFscmVh
ZHkgYSB0cmFuc2l0aW9uIHdpdGggdGhlIGNvcnJlY3QgcHJvcGVydHkgbmFtZSBhbmQgYXR0cmli
dXRlcywgYnV0CkBAIC0zNTUsNyArMzU0LDcgQEAgU3RydWN0dXJlKiBTdHJ1Y3R1cmU6OmFkZFBy
b3BlcnR5VHJhbnNpdAogICAgIHJldHVybiB0cmFuc2l0aW9uOwogfQogCi1TdHJ1Y3R1cmUqIFN0
cnVjdHVyZTo6cmVtb3ZlUHJvcGVydHlUcmFuc2l0aW9uKEpTR2xvYmFsRGF0YSYgZ2xvYmFsRGF0
YSwgU3RydWN0dXJlKiBzdHJ1Y3R1cmUsIGNvbnN0IElkZW50aWZpZXImIHByb3BlcnR5TmFtZSwg
c2l6ZV90JiBvZmZzZXQpCitTdHJ1Y3R1cmUqIFN0cnVjdHVyZTo6cmVtb3ZlUHJvcGVydHlUcmFu
c2l0aW9uKEpTR2xvYmFsRGF0YSYgZ2xvYmFsRGF0YSwgU3RydWN0dXJlKiBzdHJ1Y3R1cmUsIFBy
b3BlcnR5TmFtZSBwcm9wZXJ0eU5hbWUsIHNpemVfdCYgb2Zmc2V0KQogewogICAgIEFTU0VSVCgh
c3RydWN0dXJlLT5pc1VuY2FjaGVhYmxlRGljdGlvbmFyeSgpKTsKIApAQCAtMzgxLDcgKzM4MCw3
IEBAIFN0cnVjdHVyZSogU3RydWN0dXJlOjpjaGFuZ2VQcm90b3R5cGVUcmEKICAgICByZXR1cm4g
dHJhbnNpdGlvbjsKIH0KIAotU3RydWN0dXJlKiBTdHJ1Y3R1cmU6OmRlc3BlY2lmeUZ1bmN0aW9u
VHJhbnNpdGlvbihKU0dsb2JhbERhdGEmIGdsb2JhbERhdGEsIFN0cnVjdHVyZSogc3RydWN0dXJl
LCBjb25zdCBJZGVudGlmaWVyJiByZXBsYWNlRnVuY3Rpb24pCitTdHJ1Y3R1cmUqIFN0cnVjdHVy
ZTo6ZGVzcGVjaWZ5RnVuY3Rpb25UcmFuc2l0aW9uKEpTR2xvYmFsRGF0YSYgZ2xvYmFsRGF0YSwg
U3RydWN0dXJlKiBzdHJ1Y3R1cmUsIFByb3BlcnR5TmFtZSByZXBsYWNlRnVuY3Rpb24pCiB7CiAg
ICAgQVNTRVJUKHN0cnVjdHVyZS0+bV9zcGVjaWZpY0Z1bmN0aW9uVGhyYXNoQ291bnQgPCBtYXhT
cGVjaWZpY0Z1bmN0aW9uVGhyYXNoQ291bnQpOwogICAgIFN0cnVjdHVyZSogdHJhbnNpdGlvbiA9
IGNyZWF0ZShnbG9iYWxEYXRhLCBzdHJ1Y3R1cmUpOwpAQCAtNDA0LDcgKzQwMyw3IEBAIFN0cnVj
dHVyZSogU3RydWN0dXJlOjpkZXNwZWNpZnlGdW5jdGlvblQKICAgICByZXR1cm4gdHJhbnNpdGlv
bjsKIH0KIAotU3RydWN0dXJlKiBTdHJ1Y3R1cmU6OmF0dHJpYnV0ZUNoYW5nZVRyYW5zaXRpb24o
SlNHbG9iYWxEYXRhJiBnbG9iYWxEYXRhLCBTdHJ1Y3R1cmUqIHN0cnVjdHVyZSwgY29uc3QgSWRl
bnRpZmllciYgcHJvcGVydHlOYW1lLCB1bnNpZ25lZCBhdHRyaWJ1dGVzKQorU3RydWN0dXJlKiBT
dHJ1Y3R1cmU6OmF0dHJpYnV0ZUNoYW5nZVRyYW5zaXRpb24oSlNHbG9iYWxEYXRhJiBnbG9iYWxE
YXRhLCBTdHJ1Y3R1cmUqIHN0cnVjdHVyZSwgUHJvcGVydHlOYW1lIHByb3BlcnR5TmFtZSwgdW5z
aWduZWQgYXR0cmlidXRlcykKIHsKICAgICBpZiAoIXN0cnVjdHVyZS0+aXNVbmNhY2hlYWJsZURp
Y3Rpb25hcnkoKSkgewogICAgICAgICBTdHJ1Y3R1cmUqIHRyYW5zaXRpb24gPSBjcmVhdGUoZ2xv
YmFsRGF0YSwgc3RydWN0dXJlKTsKQEAgLTU2Miw3ICs1NjEsNyBAQCBTdHJ1Y3R1cmUqIFN0cnVj
dHVyZTo6ZmxhdHRlbkRpY3Rpb25hcnlTCiAgICAgcmV0dXJuIHRoaXM7CiB9CiAKLXNpemVfdCBT
dHJ1Y3R1cmU6OmFkZFByb3BlcnR5V2l0aG91dFRyYW5zaXRpb24oSlNHbG9iYWxEYXRhJiBnbG9i
YWxEYXRhLCBjb25zdCBJZGVudGlmaWVyJiBwcm9wZXJ0eU5hbWUsIHVuc2lnbmVkIGF0dHJpYnV0
ZXMsIEpTQ2VsbCogc3BlY2lmaWNWYWx1ZSkKK3NpemVfdCBTdHJ1Y3R1cmU6OmFkZFByb3BlcnR5
V2l0aG91dFRyYW5zaXRpb24oSlNHbG9iYWxEYXRhJiBnbG9iYWxEYXRhLCBQcm9wZXJ0eU5hbWUg
cHJvcGVydHlOYW1lLCB1bnNpZ25lZCBhdHRyaWJ1dGVzLCBKU0NlbGwqIHNwZWNpZmljVmFsdWUp
CiB7CiAgICAgQVNTRVJUKCFtX2VudW1lcmF0aW9uQ2FjaGUpOwogCkBAIC01NzksNyArNTc4LDcg
QEAgc2l6ZV90IFN0cnVjdHVyZTo6YWRkUHJvcGVydHlXaXRob3V0VHJhbgogICAgIHJldHVybiBv
ZmZzZXQ7CiB9CiAKLXNpemVfdCBTdHJ1Y3R1cmU6OnJlbW92ZVByb3BlcnR5V2l0aG91dFRyYW5z
aXRpb24oSlNHbG9iYWxEYXRhJiBnbG9iYWxEYXRhLCBjb25zdCBJZGVudGlmaWVyJiBwcm9wZXJ0
eU5hbWUpCitzaXplX3QgU3RydWN0dXJlOjpyZW1vdmVQcm9wZXJ0eVdpdGhvdXRUcmFuc2l0aW9u
KEpTR2xvYmFsRGF0YSYgZ2xvYmFsRGF0YSwgUHJvcGVydHlOYW1lIHByb3BlcnR5TmFtZSkKIHsK
ICAgICBBU1NFUlQoaXNVbmNhY2hlYWJsZURpY3Rpb25hcnkoKSk7CiAgICAgQVNTRVJUKCFtX2Vu
dW1lcmF0aW9uQ2FjaGUpOwpAQCAtNjM2LDEzICs2MzUsMTUgQEAgUGFzc093blB0cjxQcm9wZXJ0
eVRhYmxlPiBTdHJ1Y3R1cmU6OmNvcAogICAgIHJldHVybiBhZG9wdFB0cihtX3Byb3BlcnR5VGFi
bGUgPyBuZXcgUHJvcGVydHlUYWJsZShnbG9iYWxEYXRhLCBvd25lciwgKm1fcHJvcGVydHlUYWJs
ZSkgOiBuZXcgUHJvcGVydHlUYWJsZShtX29mZnNldCA9PSBub09mZnNldCA/IDAgOiBtX29mZnNl
dCkpOwogfQogCi1zaXplX3QgU3RydWN0dXJlOjpnZXQoSlNHbG9iYWxEYXRhJiBnbG9iYWxEYXRh
LCBTdHJpbmdJbXBsKiBwcm9wZXJ0eU5hbWUsIHVuc2lnbmVkJiBhdHRyaWJ1dGVzLCBKU0NlbGwq
JiBzcGVjaWZpY1ZhbHVlKQorc2l6ZV90IFN0cnVjdHVyZTo6Z2V0KEpTR2xvYmFsRGF0YSYgZ2xv
YmFsRGF0YSwgUHJvcGVydHlOYW1lIHByb3BlcnR5TmFtZSwgdW5zaWduZWQmIGF0dHJpYnV0ZXMs
IEpTQ2VsbComIHNwZWNpZmljVmFsdWUpCiB7CisgICAgQVNTRVJUKHN0cnVjdHVyZSgpLT5jbGFz
c0luZm8oKSA9PSAmc19pbmZvKTsKKwogICAgIG1hdGVyaWFsaXplUHJvcGVydHlNYXBJZk5lY2Vz
c2FyeShnbG9iYWxEYXRhKTsKICAgICBpZiAoIW1fcHJvcGVydHlUYWJsZSkKICAgICAgICAgcmV0
dXJuIFdURjo6bm90Rm91bmQ7CiAKLSAgICBQcm9wZXJ0eU1hcEVudHJ5KiBlbnRyeSA9IG1fcHJv
cGVydHlUYWJsZS0+ZmluZChwcm9wZXJ0eU5hbWUpLmZpcnN0OworICAgIFByb3BlcnR5TWFwRW50
cnkqIGVudHJ5ID0gbV9wcm9wZXJ0eVRhYmxlLT5maW5kKHByb3BlcnR5TmFtZS5pbXBsKCkpLmZp
cnN0OwogICAgIGlmICghZW50cnkpCiAgICAgICAgIHJldHVybiBXVEY6Om5vdEZvdW5kOwogCkBA
IC02NTEsMTMgKzY1MiwxMiBAQCBzaXplX3QgU3RydWN0dXJlOjpnZXQoSlNHbG9iYWxEYXRhJiBn
bG9iCiAgICAgcmV0dXJuIGVudHJ5LT5vZmZzZXQ7CiB9CiAKLWJvb2wgU3RydWN0dXJlOjpkZXNw
ZWNpZnlGdW5jdGlvbihKU0dsb2JhbERhdGEmIGdsb2JhbERhdGEsIGNvbnN0IElkZW50aWZpZXIm
IHByb3BlcnR5TmFtZSkKK2Jvb2wgU3RydWN0dXJlOjpkZXNwZWNpZnlGdW5jdGlvbihKU0dsb2Jh
bERhdGEmIGdsb2JhbERhdGEsIFByb3BlcnR5TmFtZSBwcm9wZXJ0eU5hbWUpCiB7CiAgICAgbWF0
ZXJpYWxpemVQcm9wZXJ0eU1hcElmTmVjZXNzYXJ5KGdsb2JhbERhdGEpOwogICAgIGlmICghbV9w
cm9wZXJ0eVRhYmxlKQogICAgICAgICByZXR1cm4gZmFsc2U7CiAKLSAgICBBU1NFUlQoIXByb3Bl
cnR5TmFtZS5pc051bGwoKSk7CiAgICAgUHJvcGVydHlNYXBFbnRyeSogZW50cnkgPSBtX3Byb3Bl
cnR5VGFibGUtPmZpbmQocHJvcGVydHlOYW1lLmltcGwoKSkuZmlyc3Q7CiAgICAgaWYgKCFlbnRy
eSkKICAgICAgICAgcmV0dXJuIGZhbHNlOwpAQCAtNjc4LDkgKzY3OCw4IEBAIHZvaWQgU3RydWN0
dXJlOjpkZXNwZWNpZnlBbGxGdW5jdGlvbnMoSlMKICAgICAgICAgaXRlci0+c3BlY2lmaWNWYWx1
ZS5jbGVhcigpOwogfQogCi1zaXplX3QgU3RydWN0dXJlOjpwdXRTcGVjaWZpY1ZhbHVlKEpTR2xv
YmFsRGF0YSYgZ2xvYmFsRGF0YSwgY29uc3QgSWRlbnRpZmllciYgcHJvcGVydHlOYW1lLCB1bnNp
Z25lZCBhdHRyaWJ1dGVzLCBKU0NlbGwqIHNwZWNpZmljVmFsdWUpCitzaXplX3QgU3RydWN0dXJl
OjpwdXRTcGVjaWZpY1ZhbHVlKEpTR2xvYmFsRGF0YSYgZ2xvYmFsRGF0YSwgUHJvcGVydHlOYW1l
IHByb3BlcnR5TmFtZSwgdW5zaWduZWQgYXR0cmlidXRlcywgSlNDZWxsKiBzcGVjaWZpY1ZhbHVl
KQogewotICAgIEFTU0VSVCghcHJvcGVydHlOYW1lLmlzTnVsbCgpKTsKICAgICBBU1NFUlQoZ2V0
KGdsb2JhbERhdGEsIHByb3BlcnR5TmFtZSkgPT0gbm90Rm91bmQpOwogCiAgICAgY2hlY2tDb25z
aXN0ZW5jeSgpOwpAQCAtNzA1LDEwICs3MDQsOCBAQCBzaXplX3QgU3RydWN0dXJlOjpwdXRTcGVj
aWZpY1ZhbHVlKEpTR2xvCiAgICAgcmV0dXJuIG5ld09mZnNldDsKIH0KIAotc2l6ZV90IFN0cnVj
dHVyZTo6cmVtb3ZlKGNvbnN0IElkZW50aWZpZXImIHByb3BlcnR5TmFtZSkKK3NpemVfdCBTdHJ1
Y3R1cmU6OnJlbW92ZShQcm9wZXJ0eU5hbWUgcHJvcGVydHlOYW1lKQogewotICAgIEFTU0VSVCgh
cHJvcGVydHlOYW1lLmlzTnVsbCgpKTsKLQogICAgIGNoZWNrQ29uc2lzdGVuY3koKTsKIAogICAg
IFN0cmluZ0ltcGwqIHJlcCA9IHByb3BlcnR5TmFtZS5pbXBsKCk7CkluZGV4OiBTb3VyY2UvSmF2
YVNjcmlwdENvcmUvcnVudGltZS9TdHJ1Y3R1cmUuaAo9PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvSmF2
YVNjcmlwdENvcmUvcnVudGltZS9TdHJ1Y3R1cmUuaAkocmV2aXNpb24gMTE2NjY3KQorKysgU291
cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvU3RydWN0dXJlLmgJKHdvcmtpbmcgY29weSkKQEAg
LTI3LDExICsyNywxMSBAQAogI2RlZmluZSBTdHJ1Y3R1cmVfaAogCiAjaW5jbHVkZSAiQ2xhc3NJ
bmZvLmgiCi0jaW5jbHVkZSAiSWRlbnRpZmllci5oIgogI2luY2x1ZGUgIkpTQ2VsbC5oIgogI2lu
Y2x1ZGUgIkpTVHlwZS5oIgogI2luY2x1ZGUgIkpTVmFsdWUuaCIKICNpbmNsdWRlICJQcm9wZXJ0
eU1hcEhhc2hUYWJsZS5oIgorI2luY2x1ZGUgIlByb3BlcnR5TmFtZS5oIgogI2luY2x1ZGUgIlBy
b3BlcnR5TmFtZUFycmF5LmgiCiAjaW5jbHVkZSAiUHJvdGVjdC5oIgogI2luY2x1ZGUgIlN0cnVj
dHVyZVRyYW5zaXRpb25UYWJsZS5oIgpAQCAtODYsMTIgKzg2LDEyIEBAIG5hbWVzcGFjZSBKU0Mg
ewogICAgIHB1YmxpYzoKICAgICAgICAgc3RhdGljIHZvaWQgZHVtcFN0YXRpc3RpY3MoKTsKIAot
ICAgICAgICBKU19FWFBPUlRfUFJJVkFURSBzdGF0aWMgU3RydWN0dXJlKiBhZGRQcm9wZXJ0eVRy
YW5zaXRpb24oSlNHbG9iYWxEYXRhJiwgU3RydWN0dXJlKiwgY29uc3QgSWRlbnRpZmllciYgcHJv
cGVydHlOYW1lLCB1bnNpZ25lZCBhdHRyaWJ1dGVzLCBKU0NlbGwqIHNwZWNpZmljVmFsdWUsIHNp
emVfdCYgb2Zmc2V0KTsKLSAgICAgICAgSlNfRVhQT1JUX1BSSVZBVEUgc3RhdGljIFN0cnVjdHVy
ZSogYWRkUHJvcGVydHlUcmFuc2l0aW9uVG9FeGlzdGluZ1N0cnVjdHVyZShTdHJ1Y3R1cmUqLCBj
b25zdCBJZGVudGlmaWVyJiBwcm9wZXJ0eU5hbWUsIHVuc2lnbmVkIGF0dHJpYnV0ZXMsIEpTQ2Vs
bCogc3BlY2lmaWNWYWx1ZSwgc2l6ZV90JiBvZmZzZXQpOwotICAgICAgICBzdGF0aWMgU3RydWN0
dXJlKiByZW1vdmVQcm9wZXJ0eVRyYW5zaXRpb24oSlNHbG9iYWxEYXRhJiwgU3RydWN0dXJlKiwg
Y29uc3QgSWRlbnRpZmllciYgcHJvcGVydHlOYW1lLCBzaXplX3QmIG9mZnNldCk7CisgICAgICAg
IEpTX0VYUE9SVF9QUklWQVRFIHN0YXRpYyBTdHJ1Y3R1cmUqIGFkZFByb3BlcnR5VHJhbnNpdGlv
bihKU0dsb2JhbERhdGEmLCBTdHJ1Y3R1cmUqLCBQcm9wZXJ0eU5hbWUsIHVuc2lnbmVkIGF0dHJp
YnV0ZXMsIEpTQ2VsbCogc3BlY2lmaWNWYWx1ZSwgc2l6ZV90JiBvZmZzZXQpOworICAgICAgICBK
U19FWFBPUlRfUFJJVkFURSBzdGF0aWMgU3RydWN0dXJlKiBhZGRQcm9wZXJ0eVRyYW5zaXRpb25U
b0V4aXN0aW5nU3RydWN0dXJlKFN0cnVjdHVyZSosIFByb3BlcnR5TmFtZSwgdW5zaWduZWQgYXR0
cmlidXRlcywgSlNDZWxsKiBzcGVjaWZpY1ZhbHVlLCBzaXplX3QmIG9mZnNldCk7CisgICAgICAg
IHN0YXRpYyBTdHJ1Y3R1cmUqIHJlbW92ZVByb3BlcnR5VHJhbnNpdGlvbihKU0dsb2JhbERhdGEm
LCBTdHJ1Y3R1cmUqLCBQcm9wZXJ0eU5hbWUsIHNpemVfdCYgb2Zmc2V0KTsKICAgICAgICAgSlNf
RVhQT1JUX1BSSVZBVEUgc3RhdGljIFN0cnVjdHVyZSogY2hhbmdlUHJvdG90eXBlVHJhbnNpdGlv
bihKU0dsb2JhbERhdGEmLCBTdHJ1Y3R1cmUqLCBKU1ZhbHVlIHByb3RvdHlwZSk7Ci0gICAgICAg
IEpTX0VYUE9SVF9QUklWQVRFIHN0YXRpYyBTdHJ1Y3R1cmUqIGRlc3BlY2lmeUZ1bmN0aW9uVHJh
bnNpdGlvbihKU0dsb2JhbERhdGEmLCBTdHJ1Y3R1cmUqLCBjb25zdCBJZGVudGlmaWVyJik7Ci0g
ICAgICAgIHN0YXRpYyBTdHJ1Y3R1cmUqIGF0dHJpYnV0ZUNoYW5nZVRyYW5zaXRpb24oSlNHbG9i
YWxEYXRhJiwgU3RydWN0dXJlKiwgY29uc3QgSWRlbnRpZmllciYgcHJvcGVydHlOYW1lLCB1bnNp
Z25lZCBhdHRyaWJ1dGVzKTsKKyAgICAgICAgSlNfRVhQT1JUX1BSSVZBVEUgc3RhdGljIFN0cnVj
dHVyZSogZGVzcGVjaWZ5RnVuY3Rpb25UcmFuc2l0aW9uKEpTR2xvYmFsRGF0YSYsIFN0cnVjdHVy
ZSosIFByb3BlcnR5TmFtZSk7CisgICAgICAgIHN0YXRpYyBTdHJ1Y3R1cmUqIGF0dHJpYnV0ZUNo
YW5nZVRyYW5zaXRpb24oSlNHbG9iYWxEYXRhJiwgU3RydWN0dXJlKiwgUHJvcGVydHlOYW1lLCB1
bnNpZ25lZCBhdHRyaWJ1dGVzKTsKICAgICAgICAgc3RhdGljIFN0cnVjdHVyZSogdG9DYWNoZWFi
bGVEaWN0aW9uYXJ5VHJhbnNpdGlvbihKU0dsb2JhbERhdGEmLCBTdHJ1Y3R1cmUqKTsKICAgICAg
ICAgc3RhdGljIFN0cnVjdHVyZSogdG9VbmNhY2hlYWJsZURpY3Rpb25hcnlUcmFuc2l0aW9uKEpT
R2xvYmFsRGF0YSYsIFN0cnVjdHVyZSopOwogICAgICAgICBzdGF0aWMgU3RydWN0dXJlKiBzZWFs
VHJhbnNpdGlvbihKU0dsb2JhbERhdGEmLCBTdHJ1Y3R1cmUqKTsKQEAgLTEwOCw4ICsxMDgsOCBA
QCBuYW1lc3BhY2UgSlNDIHsKICAgICAgICAgc3RhdGljIHZvaWQgZGVzdHJveShKU0NlbGwqKTsK
IAogICAgICAgICAvLyBUaGVzZSBzaG91bGQgYmUgdXNlZCB3aXRoIGNhdXRpb24uICAKLSAgICAg
ICAgSlNfRVhQT1JUX1BSSVZBVEUgc2l6ZV90IGFkZFByb3BlcnR5V2l0aG91dFRyYW5zaXRpb24o
SlNHbG9iYWxEYXRhJiwgY29uc3QgSWRlbnRpZmllciYgcHJvcGVydHlOYW1lLCB1bnNpZ25lZCBh
dHRyaWJ1dGVzLCBKU0NlbGwqIHNwZWNpZmljVmFsdWUpOwotICAgICAgICBzaXplX3QgcmVtb3Zl
UHJvcGVydHlXaXRob3V0VHJhbnNpdGlvbihKU0dsb2JhbERhdGEmLCBjb25zdCBJZGVudGlmaWVy
JiBwcm9wZXJ0eU5hbWUpOworICAgICAgICBKU19FWFBPUlRfUFJJVkFURSBzaXplX3QgYWRkUHJv
cGVydHlXaXRob3V0VHJhbnNpdGlvbihKU0dsb2JhbERhdGEmLCBQcm9wZXJ0eU5hbWUsIHVuc2ln
bmVkIGF0dHJpYnV0ZXMsIEpTQ2VsbCogc3BlY2lmaWNWYWx1ZSk7CisgICAgICAgIHNpemVfdCBy
ZW1vdmVQcm9wZXJ0eVdpdGhvdXRUcmFuc2l0aW9uKEpTR2xvYmFsRGF0YSYsIFByb3BlcnR5TmFt
ZSk7CiAgICAgICAgIHZvaWQgc2V0UHJvdG90eXBlV2l0aG91dFRyYW5zaXRpb24oSlNHbG9iYWxE
YXRhJiBnbG9iYWxEYXRhLCBKU1ZhbHVlIHByb3RvdHlwZSkgeyBtX3Byb3RvdHlwZS5zZXQoZ2xv
YmFsRGF0YSwgdGhpcywgcHJvdG90eXBlKTsgfQogICAgICAgICAKICAgICAgICAgYm9vbCBpc0Rp
Y3Rpb25hcnkoKSBjb25zdCB7IHJldHVybiBtX2RpY3Rpb25hcnlLaW5kICE9IE5vbmVEaWN0aW9u
YXJ5S2luZDsgfQpAQCAtMTM2LDE1ICsxMzYsOSBAQCBuYW1lc3BhY2UgSlNDIHsKICAgICAgICAg
dW5zaWduZWQgcHJvcGVydHlTdG9yYWdlU2l6ZSgpIGNvbnN0IHsgQVNTRVJUKHN0cnVjdHVyZSgp
LT5jbGFzc0luZm8oKSA9PSAmc19pbmZvKTsgcmV0dXJuIChtX3Byb3BlcnR5VGFibGUgPyBtX3By
b3BlcnR5VGFibGUtPnByb3BlcnR5U3RvcmFnZVNpemUoKSA6IHN0YXRpY19jYXN0PHVuc2lnbmVk
PihtX29mZnNldCArIDEpKTsgfQogICAgICAgICBib29sIGlzVXNpbmdJbmxpbmVTdG9yYWdlKCkg
Y29uc3Q7CiAKLSAgICAgICAgc2l6ZV90IGdldChKU0dsb2JhbERhdGEmLCBjb25zdCBJZGVudGlm
aWVyJiBwcm9wZXJ0eU5hbWUpOworICAgICAgICBzaXplX3QgZ2V0KEpTR2xvYmFsRGF0YSYsIFBy
b3BlcnR5TmFtZSk7CiAgICAgICAgIHNpemVfdCBnZXQoSlNHbG9iYWxEYXRhJiwgY29uc3QgVVN0
cmluZyYgbmFtZSk7Ci0gICAgICAgIEpTX0VYUE9SVF9QUklWQVRFIHNpemVfdCBnZXQoSlNHbG9i
YWxEYXRhJiwgU3RyaW5nSW1wbCogcHJvcGVydHlOYW1lLCB1bnNpZ25lZCYgYXR0cmlidXRlcywg
SlNDZWxsKiYgc3BlY2lmaWNWYWx1ZSk7Ci0gICAgICAgIHNpemVfdCBnZXQoSlNHbG9iYWxEYXRh
JiBnbG9iYWxEYXRhLCBjb25zdCBJZGVudGlmaWVyJiBwcm9wZXJ0eU5hbWUsIHVuc2lnbmVkJiBh
dHRyaWJ1dGVzLCBKU0NlbGwqJiBzcGVjaWZpY1ZhbHVlKQotICAgICAgICB7Ci0gICAgICAgICAg
ICBBU1NFUlQoIXByb3BlcnR5TmFtZS5pc051bGwoKSk7Ci0gICAgICAgICAgICBBU1NFUlQoc3Ry
dWN0dXJlKCktPmNsYXNzSW5mbygpID09ICZzX2luZm8pOwotICAgICAgICAgICAgcmV0dXJuIGdl
dChnbG9iYWxEYXRhLCBwcm9wZXJ0eU5hbWUuaW1wbCgpLCBhdHRyaWJ1dGVzLCBzcGVjaWZpY1Zh
bHVlKTsKLSAgICAgICAgfQorICAgICAgICBKU19FWFBPUlRfUFJJVkFURSBzaXplX3QgZ2V0KEpT
R2xvYmFsRGF0YSYsIFByb3BlcnR5TmFtZSwgdW5zaWduZWQmIGF0dHJpYnV0ZXMsIEpTQ2VsbCom
IHNwZWNpZmljVmFsdWUpOwogCiAgICAgICAgIGJvb2wgaGFzR2V0dGVyU2V0dGVyUHJvcGVydGll
cygpIGNvbnN0IHsgcmV0dXJuIG1faGFzR2V0dGVyU2V0dGVyUHJvcGVydGllczsgfQogICAgICAg
ICBib29sIGhhc1JlYWRPbmx5T3JHZXR0ZXJTZXR0ZXJQcm9wZXJ0aWVzRXhjbHVkaW5nUHJvdG8o
KSBjb25zdCB7IHJldHVybiBtX2hhc1JlYWRPbmx5T3JHZXR0ZXJTZXR0ZXJQcm9wZXJ0aWVzRXhj
bHVkaW5nUHJvdG87IH0KQEAgLTE2Myw3ICsxNTcsNyBAQCBuYW1lc3BhY2UgSlNDIHsKICAgICAg
ICAgCiAgICAgICAgIGJvb2wgaXNFbXB0eSgpIGNvbnN0IHsgcmV0dXJuIG1fcHJvcGVydHlUYWJs
ZSA/IG1fcHJvcGVydHlUYWJsZS0+aXNFbXB0eSgpIDogbV9vZmZzZXQgPT0gbm9PZmZzZXQ7IH0K
IAotICAgICAgICBKU19FWFBPUlRfUFJJVkFURSB2b2lkIGRlc3BlY2lmeURpY3Rpb25hcnlGdW5j
dGlvbihKU0dsb2JhbERhdGEmLCBjb25zdCBJZGVudGlmaWVyJiBwcm9wZXJ0eU5hbWUpOworICAg
ICAgICBKU19FWFBPUlRfUFJJVkFURSB2b2lkIGRlc3BlY2lmeURpY3Rpb25hcnlGdW5jdGlvbihK
U0dsb2JhbERhdGEmLCBQcm9wZXJ0eU5hbWUpOwogICAgICAgICB2b2lkIGRpc2FibGVTcGVjaWZp
Y0Z1bmN0aW9uVHJhY2tpbmcoKSB7IG1fc3BlY2lmaWNGdW5jdGlvblRocmFzaENvdW50ID0gbWF4
U3BlY2lmaWNGdW5jdGlvblRocmFzaENvdW50OyB9CiAKICAgICAgICAgdm9pZCBzZXRFbnVtZXJh
dGlvbkNhY2hlKEpTR2xvYmFsRGF0YSYsIEpTUHJvcGVydHlOYW1lSXRlcmF0b3IqIGVudW1lcmF0
aW9uQ2FjaGUpOyAvLyBEZWZpbmVkIGluIEpTUHJvcGVydHlOYW1lSXRlcmF0b3IuaC4KQEAgLTIx
Niw3ICsyMTAsNyBAQCBuYW1lc3BhY2UgSlNDIHsKIAogICAgIHByaXZhdGU6CiAgICAgICAgIGZy
aWVuZCBjbGFzcyBMTEludE9mZnNldHNFeHRyYWN0b3I7Ci0gICAgICAgIAorCiAgICAgICAgIEpT
X0VYUE9SVF9QUklWQVRFIFN0cnVjdHVyZShKU0dsb2JhbERhdGEmLCBKU0dsb2JhbE9iamVjdCos
IEpTVmFsdWUgcHJvdG90eXBlLCBjb25zdCBUeXBlSW5mbyYsIGNvbnN0IENsYXNzSW5mbyopOwog
ICAgICAgICBTdHJ1Y3R1cmUoSlNHbG9iYWxEYXRhJik7CiAgICAgICAgIFN0cnVjdHVyZShKU0ds
b2JhbERhdGEmLCBjb25zdCBTdHJ1Y3R1cmUqKTsKQEAgLTIzNiwxMyArMjMwLDEzIEBAIG5hbWVz
cGFjZSBKU0MgewogICAgICAgICB9IERpY3Rpb25hcnlLaW5kOwogICAgICAgICBzdGF0aWMgU3Ry
dWN0dXJlKiB0b0RpY3Rpb25hcnlUcmFuc2l0aW9uKEpTR2xvYmFsRGF0YSYsIFN0cnVjdHVyZSos
IERpY3Rpb25hcnlLaW5kKTsKIAotICAgICAgICBzaXplX3QgcHV0U3BlY2lmaWNWYWx1ZShKU0ds
b2JhbERhdGEmLCBjb25zdCBJZGVudGlmaWVyJiBwcm9wZXJ0eU5hbWUsIHVuc2lnbmVkIGF0dHJp
YnV0ZXMsIEpTQ2VsbCogc3BlY2lmaWNWYWx1ZSk7Ci0gICAgICAgIHNpemVfdCByZW1vdmUoY29u
c3QgSWRlbnRpZmllciYgcHJvcGVydHlOYW1lKTsKKyAgICAgICAgc2l6ZV90IHB1dFNwZWNpZmlj
VmFsdWUoSlNHbG9iYWxEYXRhJiwgUHJvcGVydHlOYW1lLCB1bnNpZ25lZCBhdHRyaWJ1dGVzLCBK
U0NlbGwqIHNwZWNpZmljVmFsdWUpOworICAgICAgICBzaXplX3QgcmVtb3ZlKFByb3BlcnR5TmFt
ZSk7CiAKICAgICAgICAgdm9pZCBjcmVhdGVQcm9wZXJ0eU1hcCh1bnNpZ25lZCBrZXlDb3VudCA9
IDApOwogICAgICAgICB2b2lkIGNoZWNrQ29uc2lzdGVuY3koKTsKIAotICAgICAgICBib29sIGRl
c3BlY2lmeUZ1bmN0aW9uKEpTR2xvYmFsRGF0YSYsIGNvbnN0IElkZW50aWZpZXImKTsKKyAgICAg
ICAgYm9vbCBkZXNwZWNpZnlGdW5jdGlvbihKU0dsb2JhbERhdGEmLCBQcm9wZXJ0eU5hbWUpOwog
ICAgICAgICB2b2lkIGRlc3BlY2lmeUFsbEZ1bmN0aW9ucyhKU0dsb2JhbERhdGEmKTsKIAogICAg
ICAgICBQYXNzT3duUHRyPFByb3BlcnR5VGFibGU+IGNvcHlQcm9wZXJ0eVRhYmxlKEpTR2xvYmFs
RGF0YSYsIFN0cnVjdHVyZSogb3duZXIpOwpAQCAtMzE0LDcgKzMwOCw3IEBAIG5hbWVzcGFjZSBK
U0MgewogICAgICAgICB1bnNpZ25lZCBtX3N0YXRpY0Z1bmN0aW9uUmVpZmllZDsKICAgICB9Owog
Ci0gICAgaW5saW5lIHNpemVfdCBTdHJ1Y3R1cmU6OmdldChKU0dsb2JhbERhdGEmIGdsb2JhbERh
dGEsIGNvbnN0IElkZW50aWZpZXImIHByb3BlcnR5TmFtZSkKKyAgICBpbmxpbmUgc2l6ZV90IFN0
cnVjdHVyZTo6Z2V0KEpTR2xvYmFsRGF0YSYgZ2xvYmFsRGF0YSwgUHJvcGVydHlOYW1lIHByb3Bl
cnR5TmFtZSkKICAgICB7CiAgICAgICAgIEFTU0VSVChzdHJ1Y3R1cmUoKS0+Y2xhc3NJbmZvKCkg
PT0gJnNfaW5mbyk7CiAgICAgICAgIG1hdGVyaWFsaXplUHJvcGVydHlNYXBJZk5lY2Vzc2FyeShn
bG9iYWxEYXRhKTsKSW5kZXg6IFNvdXJjZS9XZWJDb3JlL0NoYW5nZUxvZwo9PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0t
LSBTb3VyY2UvV2ViQ29yZS9DaGFuZ2VMb2cJKHJldmlzaW9uIDExNjc5MikKKysrIFNvdXJjZS9X
ZWJDb3JlL0NoYW5nZUxvZwkod29ya2luZyBjb3B5KQpAQCAtMSwzICsxLDIyOSBAQAorMjAxMi0w
NS0xMSAgR2F2aW4gQmFycmFjbG91Z2ggIDxiYXJyYWNsb3VnaEBhcHBsZS5jb20+CisKKyAgICAg
ICAgSW50cm9kdWNlIFByb3BlcnR5TmFtZSBjbGFzcworICAgICAgICBodHRwczovL2J1Z3Mud2Vi
a2l0Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9ODYyNDEKKworICAgICAgICBSZXZpZXdlZCBieSBOT0JP
RFkgKE9PUFMhKS4KKworICAgICAgICBSZXBsYWNlICdjb25zdCBJZGVudGlmaWVyJicgYXJndW1l
bnRzIHRvIGZ1bmN0aW9ucyBhY2Nlc3Npbmcgb2JqZWN0IHByb3BlcnRpZXMgd2l0aCBhIG5ldyAn
UHJvcGVydHlOYW1lJyB0eXBlLgorICAgICAgICBUaGlzIGNoYW5nZSBwYXZlcyB0aGUgd2F5IHRv
IGFsbG93IGZvciBwcm9wZXJ0aWVzIGtleWVkIGJ5IHZhbHVlcyB0aGF0IGFyZSBub3QgSWRlbnRp
ZmllcnMuCisKKyAgICAgICAgVGhpcyBjaGFuZ2UgaXMgbGFyZ2VseSBhIG1lY2hhbmljYWwgZmlu
ZCAmIHJlcGxhY2UuCisgICAgICAgIEl0IGFsc28gY2hhbmdlcyBKU0Z1bmN0aW9uJ3MgY29uc3Ry
dWN0b3IgdG8gdGFrZSBhIFVTdHJpbmcmIGluc3RlYWQgb2YgYW4gSWRlbnRpZmllciYKKyAgICAg
ICAgKHNpbmNlIGluIHNvbWUgY2FzZXMgd2UgY2FuIG5vIGxvbmdlciBndWFyYW50ZWUgdGhhdCB3
ZSdsbGwgaGF2ZSBhbiBJZGVudGlmaWVyKSwgYW5kCisgICAgICAgIHVuaWZpZXMgSWRlbnRpZmll
cidzIG1ldGhvZHMgdG8gb2J0YWluIGFycmF5IGluZGljZXMgb250byBQcm9wZXJ0eU5hbWUuCisK
KyAgICAgICAgVGhlIG5ldyBQcm9wZXJ0eU5hbWUgY2xhc3MgcmV0YWlucyB0aGUgYWJpbGl0eSB0
byBzdXBwb3J0IC5pbXBsKCkgYW5kIC51c3RyaW5nKCksIGJ1dAorICAgICAgICBpbiBhIGZ1dHVy
ZSBwYXRjaCB3ZSBtYXkgbmVlZCB0byByZXdvcmsgdGhpcywgc2luY2Ugbm90IGFsbCBQcm9wZXJ0
eU5hbWVzIHNob3VsZCBiZQorICAgICAgICBlcXVhbCBiYXNlZCBvbiB0aGVpciBzdHJpbmcgcmVw
cmVzZW50YXRpb24uCisKKyAgICAgICAgKiBXZWJDb3JlLmV4cC5pbjoKKyAgICAgICAgKiBiaW5k
aW5ncy9qcy9KU0NTU1N0eWxlRGVjbGFyYXRpb25DdXN0b20uY3BwOgorICAgICAgICAoV2ViQ29y
ZTo6Y3NzUHJvcGVydHlJREZvckpTQ1NTUHJvcGVydHlOYW1lKToKKyAgICAgICAgKFdlYkNvcmU6
OkpTQ1NTU3R5bGVEZWNsYXJhdGlvbjo6Z2V0T3duUHJvcGVydHlTbG90RGVsZWdhdGUpOgorICAg
ICAgICAoV2ViQ29yZTo6SlNDU1NTdHlsZURlY2xhcmF0aW9uOjpnZXRPd25Qcm9wZXJ0eURlc2Ny
aXB0b3JEZWxlZ2F0ZSk6CisgICAgICAgIChXZWJDb3JlOjpKU0NTU1N0eWxlRGVjbGFyYXRpb246
OnB1dERlbGVnYXRlKToKKyAgICAgICAgKiBiaW5kaW5ncy9qcy9KU0RPTUJpbmRpbmcuY3BwOgor
ICAgICAgICAoV2ViQ29yZTo6ZmluZEF0b21pY1N0cmluZyk6CisgICAgICAgIChXZWJDb3JlOjpv
YmplY3RUb1N0cmluZ0Z1bmN0aW9uR2V0dGVyKToKKyAgICAgICAgKiBiaW5kaW5ncy9qcy9KU0RP
TUJpbmRpbmcuaDoKKyAgICAgICAgKFdlYkNvcmUpOgorICAgICAgICAoV2ViQ29yZTo6cHJvcGVy
dHlOYW1lVG9TdHJpbmcpOgorICAgICAgICAoV2ViQ29yZTo6cHJvcGVydHlOYW1lVG9BdG9taWNT
dHJpbmcpOgorICAgICAgICAqIGJpbmRpbmdzL2pzL0pTRE9NTWltZVR5cGVBcnJheUN1c3RvbS5j
cHA6CisgICAgICAgIChXZWJDb3JlOjpKU0RPTU1pbWVUeXBlQXJyYXk6OmNhbkdldEl0ZW1zRm9y
TmFtZSk6CisgICAgICAgIChXZWJDb3JlOjpKU0RPTU1pbWVUeXBlQXJyYXk6Om5hbWVHZXR0ZXIp
OgorICAgICAgICAqIGJpbmRpbmdzL2pzL0pTRE9NUGx1Z2luQXJyYXlDdXN0b20uY3BwOgorICAg
ICAgICAoV2ViQ29yZTo6SlNET01QbHVnaW5BcnJheTo6Y2FuR2V0SXRlbXNGb3JOYW1lKToKKyAg
ICAgICAgKFdlYkNvcmU6OkpTRE9NUGx1Z2luQXJyYXk6Om5hbWVHZXR0ZXIpOgorICAgICAgICAq
IGJpbmRpbmdzL2pzL0pTRE9NUGx1Z2luQ3VzdG9tLmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OkpT
RE9NUGx1Z2luOjpjYW5HZXRJdGVtc0Zvck5hbWUpOgorICAgICAgICAoV2ViQ29yZTo6SlNET01Q
bHVnaW46Om5hbWVHZXR0ZXIpOgorICAgICAgICAqIGJpbmRpbmdzL2pzL0pTRE9NU3RyaW5nTWFw
Q3VzdG9tLmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OkpTRE9NU3RyaW5nTWFwOjpjYW5HZXRJdGVt
c0Zvck5hbWUpOgorICAgICAgICAoV2ViQ29yZTo6SlNET01TdHJpbmdNYXA6Om5hbWVHZXR0ZXIp
OgorICAgICAgICAoV2ViQ29yZTo6SlNET01TdHJpbmdNYXA6OmRlbGV0ZVByb3BlcnR5KToKKyAg
ICAgICAgKFdlYkNvcmU6OkpTRE9NU3RyaW5nTWFwOjpwdXREZWxlZ2F0ZSk6CisgICAgICAgICog
YmluZGluZ3MvanMvSlNET01XaW5kb3dDdXN0b20uY3BwOgorICAgICAgICAoV2ViQ29yZTo6bm9u
Q2FjaGluZ1N0YXRpY0Z1bmN0aW9uR2V0dGVyKToKKyAgICAgICAgKFdlYkNvcmU6OmNoaWxkRnJh
bWVHZXR0ZXIpOgorICAgICAgICAoV2ViQ29yZTo6bmFtZWRJdGVtR2V0dGVyKToKKyAgICAgICAg
KFdlYkNvcmU6OkpTRE9NV2luZG93OjpnZXRPd25Qcm9wZXJ0eVNsb3QpOgorICAgICAgICAoV2Vi
Q29yZTo6SlNET01XaW5kb3c6OmdldE93blByb3BlcnR5RGVzY3JpcHRvcik6CisgICAgICAgIChX
ZWJDb3JlOjpKU0RPTVdpbmRvdzo6cHV0KToKKyAgICAgICAgKFdlYkNvcmU6OkpTRE9NV2luZG93
OjpkZWxldGVQcm9wZXJ0eSk6CisgICAgICAgIChXZWJDb3JlOjpKU0RPTVdpbmRvdzo6ZGVmaW5l
T3duUHJvcGVydHkpOgorICAgICAgICAqIGJpbmRpbmdzL2pzL0pTRE9NV2luZG93U2hlbGwuY3Bw
OgorICAgICAgICAoV2ViQ29yZTo6SlNET01XaW5kb3dTaGVsbDo6Z2V0T3duUHJvcGVydHlTbG90
KToKKyAgICAgICAgKFdlYkNvcmU6OkpTRE9NV2luZG93U2hlbGw6OmdldE93blByb3BlcnR5RGVz
Y3JpcHRvcik6CisgICAgICAgIChXZWJDb3JlOjpKU0RPTVdpbmRvd1NoZWxsOjpwdXQpOgorICAg
ICAgICAoV2ViQ29yZTo6SlNET01XaW5kb3dTaGVsbDo6cHV0RGlyZWN0VmlydHVhbCk6CisgICAg
ICAgIChXZWJDb3JlOjpKU0RPTVdpbmRvd1NoZWxsOjpkZWZpbmVPd25Qcm9wZXJ0eSk6CisgICAg
ICAgIChXZWJDb3JlOjpKU0RPTVdpbmRvd1NoZWxsOjpkZWxldGVQcm9wZXJ0eSk6CisgICAgICAg
ICogYmluZGluZ3MvanMvSlNET01XaW5kb3dTaGVsbC5oOgorICAgICAgICAoSlNET01XaW5kb3dT
aGVsbCk6CisgICAgICAgICogYmluZGluZ3MvanMvSlNIVE1MQWxsQ29sbGVjdGlvbkN1c3RvbS5j
cHA6CisgICAgICAgIChXZWJDb3JlOjpnZXROYW1lZEl0ZW1zKToKKyAgICAgICAgKFdlYkNvcmU6
OmNhbGxIVE1MQWxsQ29sbGVjdGlvbik6CisgICAgICAgIChXZWJDb3JlOjpKU0hUTUxBbGxDb2xs
ZWN0aW9uOjpjYW5HZXRJdGVtc0Zvck5hbWUpOgorICAgICAgICAoV2ViQ29yZTo6SlNIVE1MQWxs
Q29sbGVjdGlvbjo6bmFtZUdldHRlcik6CisgICAgICAgIChXZWJDb3JlOjpKU0hUTUxBbGxDb2xs
ZWN0aW9uOjppdGVtKToKKyAgICAgICAgKiBiaW5kaW5ncy9qcy9KU0hUTUxBcHBsZXRFbGVtZW50
Q3VzdG9tLmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OkpTSFRNTEFwcGxldEVsZW1lbnQ6OmdldE93
blByb3BlcnR5U2xvdERlbGVnYXRlKToKKyAgICAgICAgKFdlYkNvcmU6OkpTSFRNTEFwcGxldEVs
ZW1lbnQ6OmdldE93blByb3BlcnR5RGVzY3JpcHRvckRlbGVnYXRlKToKKyAgICAgICAgKFdlYkNv
cmU6OkpTSFRNTEFwcGxldEVsZW1lbnQ6OnB1dERlbGVnYXRlKToKKyAgICAgICAgKiBiaW5kaW5n
cy9qcy9KU0hUTUxDb2xsZWN0aW9uQ3VzdG9tLmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OmdldE5h
bWVkSXRlbXMpOgorICAgICAgICAoV2ViQ29yZTo6SlNIVE1MQ29sbGVjdGlvbjo6Y2FuR2V0SXRl
bXNGb3JOYW1lKToKKyAgICAgICAgKFdlYkNvcmU6OkpTSFRNTENvbGxlY3Rpb246Om5hbWVHZXR0
ZXIpOgorICAgICAgICAqIGJpbmRpbmdzL2pzL0pTSFRNTERvY3VtZW50Q3VzdG9tLmNwcDoKKyAg
ICAgICAgKFdlYkNvcmU6OkpTSFRNTERvY3VtZW50OjpjYW5HZXRJdGVtc0Zvck5hbWUpOgorICAg
ICAgICAoV2ViQ29yZTo6SlNIVE1MRG9jdW1lbnQ6Om5hbWVHZXR0ZXIpOgorICAgICAgICAqIGJp
bmRpbmdzL2pzL0pTSFRNTEVtYmVkRWxlbWVudEN1c3RvbS5jcHA6CisgICAgICAgIChXZWJDb3Jl
OjpKU0hUTUxFbWJlZEVsZW1lbnQ6OmdldE93blByb3BlcnR5U2xvdERlbGVnYXRlKToKKyAgICAg
ICAgKFdlYkNvcmU6OkpTSFRNTEVtYmVkRWxlbWVudDo6Z2V0T3duUHJvcGVydHlEZXNjcmlwdG9y
RGVsZWdhdGUpOgorICAgICAgICAoV2ViQ29yZTo6SlNIVE1MRW1iZWRFbGVtZW50OjpwdXREZWxl
Z2F0ZSk6CisgICAgICAgICogYmluZGluZ3MvanMvSlNIVE1MRm9ybUVsZW1lbnRDdXN0b20uY3Bw
OgorICAgICAgICAoV2ViQ29yZTo6SlNIVE1MRm9ybUVsZW1lbnQ6OmNhbkdldEl0ZW1zRm9yTmFt
ZSk6CisgICAgICAgIChXZWJDb3JlOjpKU0hUTUxGb3JtRWxlbWVudDo6bmFtZUdldHRlcik6Cisg
ICAgICAgICogYmluZGluZ3MvanMvSlNIVE1MRnJhbWVTZXRFbGVtZW50Q3VzdG9tLmNwcDoKKyAg
ICAgICAgKFdlYkNvcmU6OkpTSFRNTEZyYW1lU2V0RWxlbWVudDo6Y2FuR2V0SXRlbXNGb3JOYW1l
KToKKyAgICAgICAgKFdlYkNvcmU6OkpTSFRNTEZyYW1lU2V0RWxlbWVudDo6bmFtZUdldHRlcik6
CisgICAgICAgICogYmluZGluZ3MvanMvSlNIVE1MT2JqZWN0RWxlbWVudEN1c3RvbS5jcHA6Cisg
ICAgICAgIChXZWJDb3JlOjpKU0hUTUxPYmplY3RFbGVtZW50OjpnZXRPd25Qcm9wZXJ0eVNsb3RE
ZWxlZ2F0ZSk6CisgICAgICAgIChXZWJDb3JlOjpKU0hUTUxPYmplY3RFbGVtZW50OjpnZXRPd25Q
cm9wZXJ0eURlc2NyaXB0b3JEZWxlZ2F0ZSk6CisgICAgICAgIChXZWJDb3JlOjpKU0hUTUxPYmpl
Y3RFbGVtZW50OjpwdXREZWxlZ2F0ZSk6CisgICAgICAgICogYmluZGluZ3MvanMvSlNIaXN0b3J5
Q3VzdG9tLmNwcDoKKyAgICAgICAgKFdlYkNvcmU6Om5vbkNhY2hpbmdTdGF0aWNCYWNrRnVuY3Rp
b25HZXR0ZXIpOgorICAgICAgICAoV2ViQ29yZTo6bm9uQ2FjaGluZ1N0YXRpY0ZvcndhcmRGdW5j
dGlvbkdldHRlcik6CisgICAgICAgIChXZWJDb3JlOjpub25DYWNoaW5nU3RhdGljR29GdW5jdGlv
bkdldHRlcik6CisgICAgICAgIChXZWJDb3JlOjpKU0hpc3Rvcnk6OmdldE93blByb3BlcnR5U2xv
dERlbGVnYXRlKToKKyAgICAgICAgKFdlYkNvcmU6OkpTSGlzdG9yeTo6Z2V0T3duUHJvcGVydHlE
ZXNjcmlwdG9yRGVsZWdhdGUpOgorICAgICAgICAoV2ViQ29yZTo6SlNIaXN0b3J5OjpwdXREZWxl
Z2F0ZSk6CisgICAgICAgIChXZWJDb3JlOjpKU0hpc3Rvcnk6OmRlbGV0ZVByb3BlcnR5KToKKyAg
ICAgICAgKiBiaW5kaW5ncy9qcy9KU0xvY2F0aW9uQ3VzdG9tLmNwcDoKKyAgICAgICAgKFdlYkNv
cmU6Om5vbkNhY2hpbmdTdGF0aWNSZXBsYWNlRnVuY3Rpb25HZXR0ZXIpOgorICAgICAgICAoV2Vi
Q29yZTo6bm9uQ2FjaGluZ1N0YXRpY1JlbG9hZEZ1bmN0aW9uR2V0dGVyKToKKyAgICAgICAgKFdl
YkNvcmU6Om5vbkNhY2hpbmdTdGF0aWNBc3NpZ25GdW5jdGlvbkdldHRlcik6CisgICAgICAgIChX
ZWJDb3JlOjpKU0xvY2F0aW9uOjpnZXRPd25Qcm9wZXJ0eVNsb3REZWxlZ2F0ZSk6CisgICAgICAg
IChXZWJDb3JlOjpKU0xvY2F0aW9uOjpnZXRPd25Qcm9wZXJ0eURlc2NyaXB0b3JEZWxlZ2F0ZSk6
CisgICAgICAgIChXZWJDb3JlOjpKU0xvY2F0aW9uOjpwdXREZWxlZ2F0ZSk6CisgICAgICAgIChX
ZWJDb3JlOjpKU0xvY2F0aW9uOjpkZWxldGVQcm9wZXJ0eSk6CisgICAgICAgIChXZWJDb3JlOjpK
U0xvY2F0aW9uOjpkZWZpbmVPd25Qcm9wZXJ0eSk6CisgICAgICAgIChXZWJDb3JlOjpKU0xvY2F0
aW9uUHJvdG90eXBlOjpwdXREZWxlZ2F0ZSk6CisgICAgICAgIChXZWJDb3JlOjpKU0xvY2F0aW9u
UHJvdG90eXBlOjpkZWZpbmVPd25Qcm9wZXJ0eSk6CisgICAgICAgICogYmluZGluZ3MvanMvSlNO
YW1lZE5vZGVNYXBDdXN0b20uY3BwOgorICAgICAgICAoV2ViQ29yZTo6SlNOYW1lZE5vZGVNYXA6
OmNhbkdldEl0ZW1zRm9yTmFtZSk6CisgICAgICAgIChXZWJDb3JlOjpKU05hbWVkTm9kZU1hcDo6
bmFtZUdldHRlcik6CisgICAgICAgICogYmluZGluZ3MvanMvSlNOb2RlTGlzdEN1c3RvbS5jcHA6
CisgICAgICAgIChXZWJDb3JlOjpKU05vZGVMaXN0OjpjYW5HZXRJdGVtc0Zvck5hbWUpOgorICAg
ICAgICAoV2ViQ29yZTo6SlNOb2RlTGlzdDo6bmFtZUdldHRlcik6CisgICAgICAgICogYmluZGlu
Z3MvanMvSlNQbHVnaW5FbGVtZW50RnVuY3Rpb25zLmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OnJ1
bnRpbWVPYmplY3RQcm9wZXJ0eUdldHRlcik6CisgICAgICAgIChXZWJDb3JlOjpydW50aW1lT2Jq
ZWN0Q3VzdG9tR2V0T3duUHJvcGVydHlTbG90KToKKyAgICAgICAgKFdlYkNvcmU6OnJ1bnRpbWVP
YmplY3RDdXN0b21HZXRPd25Qcm9wZXJ0eURlc2NyaXB0b3IpOgorICAgICAgICAoV2ViQ29yZTo6
cnVudGltZU9iamVjdEN1c3RvbVB1dCk6CisgICAgICAgICogYmluZGluZ3MvanMvSlNQbHVnaW5F
bGVtZW50RnVuY3Rpb25zLmg6CisgICAgICAgIChXZWJDb3JlKToKKyAgICAgICAgKiBiaW5kaW5n
cy9qcy9KU1N0b3JhZ2VDdXN0b20uY3BwOgorICAgICAgICAoV2ViQ29yZTo6SlNTdG9yYWdlOjpj
YW5HZXRJdGVtc0Zvck5hbWUpOgorICAgICAgICAoV2ViQ29yZTo6SlNTdG9yYWdlOjpuYW1lR2V0
dGVyKToKKyAgICAgICAgKFdlYkNvcmU6OkpTU3RvcmFnZTo6ZGVsZXRlUHJvcGVydHkpOgorICAg
ICAgICAoV2ViQ29yZTo6SlNTdG9yYWdlOjpwdXREZWxlZ2F0ZSk6CisgICAgICAgICogYmluZGlu
Z3MvanMvSlNTdHlsZVNoZWV0TGlzdEN1c3RvbS5jcHA6CisgICAgICAgIChXZWJDb3JlOjpKU1N0
eWxlU2hlZXRMaXN0OjpjYW5HZXRJdGVtc0Zvck5hbWUpOgorICAgICAgICAoV2ViQ29yZTo6SlNT
dHlsZVNoZWV0TGlzdDo6bmFtZUdldHRlcik6CisgICAgICAgICogYmluZGluZ3MvanMvSlNXb3Jr
ZXJDb250ZXh0Q3VzdG9tLmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OkpTV29ya2VyQ29udGV4dDo6
Z2V0T3duUHJvcGVydHlTbG90RGVsZWdhdGUpOgorICAgICAgICAoV2ViQ29yZTo6SlNXb3JrZXJD
b250ZXh0OjpnZXRPd25Qcm9wZXJ0eURlc2NyaXB0b3JEZWxlZ2F0ZSk6CisgICAgICAgICogYmlu
ZGluZ3Mvc2NyaXB0cy9Db2RlR2VuZXJhdG9ySlMucG06CisgICAgICAgIChHZW5lcmF0ZUdldE93
blByb3BlcnR5U2xvdEJvZHkpOgorICAgICAgICAoR2VuZXJhdGVHZXRPd25Qcm9wZXJ0eURlc2Ny
aXB0b3JCb2R5KToKKyAgICAgICAgKEdlbmVyYXRlSGVhZGVyKToKKyAgICAgICAgKEdlbmVyYXRl
SW1wbGVtZW50YXRpb24pOgorICAgICAgICAoR2VuZXJhdGVDb25zdHJ1Y3RvckRlY2xhcmF0aW9u
KToKKyAgICAgICAgKEdlbmVyYXRlQ29uc3RydWN0b3JEZWZpbml0aW9uKToKKyAgICAgICAgKiBi
cmlkZ2UvYy9jX2NsYXNzLmNwcDoKKyAgICAgICAgKEpTQzo6QmluZGluZ3M6OkNDbGFzczo6bWV0
aG9kc05hbWVkKToKKyAgICAgICAgKEpTQzo6QmluZGluZ3M6OkNDbGFzczo6ZmllbGROYW1lZCk6
CisgICAgICAgICogYnJpZGdlL2MvY19jbGFzcy5oOgorICAgICAgICAoQ0NsYXNzKToKKyAgICAg
ICAgKiBicmlkZ2UvYy9jX2luc3RhbmNlLmNwcDoKKyAgICAgICAgKEpTQzo6QmluZGluZ3M6OkNS
dW50aW1lTWV0aG9kOjpjcmVhdGUpOgorICAgICAgICAoSlNDOjpCaW5kaW5nczo6Q1J1bnRpbWVN
ZXRob2Q6OmZpbmlzaENyZWF0aW9uKToKKyAgICAgICAgKEpTQzo6QmluZGluZ3M6OkNJbnN0YW5j
ZTo6Z2V0TWV0aG9kKToKKyAgICAgICAgKiBicmlkZ2UvYy9jX2luc3RhbmNlLmg6CisgICAgICAg
IChDSW5zdGFuY2UpOgorICAgICAgICAqIGJyaWRnZS9qbmkvanNjL0phdmFDbGFzc0pTQy5jcHA6
CisgICAgICAgIChKYXZhQ2xhc3M6Om1ldGhvZHNOYW1lZCk6CisgICAgICAgIChKYXZhQ2xhc3M6
OmZpZWxkTmFtZWQpOgorICAgICAgICAqIGJyaWRnZS9qbmkvanNjL0phdmFDbGFzc0pTQy5oOgor
ICAgICAgICAoSmF2YUNsYXNzKToKKyAgICAgICAgKiBicmlkZ2Uvam5pL2pzYy9KYXZhSW5zdGFu
Y2VKU0MuY3BwOgorICAgICAgICAoSmF2YVJ1bnRpbWVNZXRob2Q6OmNyZWF0ZSk6CisgICAgICAg
IChKYXZhUnVudGltZU1ldGhvZDo6ZmluaXNoQ3JlYXRpb24pOgorICAgICAgICAqIGJyaWRnZS9q
bmkvanNjL0phdmFJbnN0YW5jZUpTQy5oOgorICAgICAgICAoSmF2YUluc3RhbmNlKToKKyAgICAg
ICAgKiBicmlkZ2UvanNjL0JyaWRnZUpTQy5oOgorICAgICAgICAoQ2xhc3MpOgorICAgICAgICAo
SlNDOjpCaW5kaW5nczo6Q2xhc3M6OmZhbGxiYWNrT2JqZWN0KToKKyAgICAgICAgKEpTQzo6Qmlu
ZGluZ3M6Okluc3RhbmNlOjpzZXRWYWx1ZU9mVW5kZWZpbmVkRmllbGQpOgorICAgICAgICAoSW5z
dGFuY2UpOgorICAgICAgICAoSlNDOjpCaW5kaW5nczo6SW5zdGFuY2U6OmdldE93blByb3BlcnR5
U2xvdCk6CisgICAgICAgIChKU0M6OkJpbmRpbmdzOjpJbnN0YW5jZTo6Z2V0T3duUHJvcGVydHlE
ZXNjcmlwdG9yKToKKyAgICAgICAgKEpTQzo6QmluZGluZ3M6Okluc3RhbmNlOjpwdXQpOgorICAg
ICAgICAqIGJyaWRnZS9vYmpjL29iamNfY2xhc3MuaDoKKyAgICAgICAgKE9iamNDbGFzcyk6Cisg
ICAgICAgICogYnJpZGdlL29iamMvb2JqY19jbGFzcy5tbToKKyAgICAgICAgKEpTQzo6QmluZGlu
Z3M6Ok9iamNDbGFzczo6bWV0aG9kc05hbWVkKToKKyAgICAgICAgKEpTQzo6QmluZGluZ3M6Ok9i
amNDbGFzczo6ZmllbGROYW1lZCk6CisgICAgICAgIChKU0M6OkJpbmRpbmdzOjpPYmpjQ2xhc3M6
OmZhbGxiYWNrT2JqZWN0KToKKyAgICAgICAgKiBicmlkZ2Uvb2JqYy9vYmpjX2luc3RhbmNlLmg6
CisgICAgICAgIChPYmpjSW5zdGFuY2UpOgorICAgICAgICAqIGJyaWRnZS9vYmpjL29iamNfaW5z
dGFuY2UubW06CisgICAgICAgIChPYmpDUnVudGltZU1ldGhvZDo6Y3JlYXRlKToKKyAgICAgICAg
KE9iakNSdW50aW1lTWV0aG9kOjpmaW5pc2hDcmVhdGlvbik6CisgICAgICAgIChPYmpjSW5zdGFu
Y2U6OnNldFZhbHVlT2ZVbmRlZmluZWRGaWVsZCk6CisgICAgICAgIChPYmpjSW5zdGFuY2U6Omdl
dFZhbHVlT2ZVbmRlZmluZWRGaWVsZCk6CisgICAgICAgICogYnJpZGdlL29iamMvb2JqY19ydW50
aW1lLmg6CisgICAgICAgIChKU0M6OkJpbmRpbmdzOjpPYmpjRmFsbGJhY2tPYmplY3RJbXA6OmNy
ZWF0ZSk6CisgICAgICAgIChKU0M6OkJpbmRpbmdzOjpPYmpjRmFsbGJhY2tPYmplY3RJbXA6OnBy
b3BlcnR5TmFtZSk6CisgICAgICAgIChPYmpjRmFsbGJhY2tPYmplY3RJbXApOgorICAgICAgICAq
IGJyaWRnZS9vYmpjL29iamNfcnVudGltZS5tbToKKyAgICAgICAgKEpTQzo6QmluZGluZ3M6Ok9i
amNGYWxsYmFja09iamVjdEltcDo6T2JqY0ZhbGxiYWNrT2JqZWN0SW1wKToKKyAgICAgICAgKEpT
Qzo6QmluZGluZ3M6Ok9iamNGYWxsYmFja09iamVjdEltcDo6Z2V0T3duUHJvcGVydHlTbG90KToK
KyAgICAgICAgKEpTQzo6QmluZGluZ3M6Ok9iamNGYWxsYmFja09iamVjdEltcDo6Z2V0T3duUHJv
cGVydHlEZXNjcmlwdG9yKToKKyAgICAgICAgKEpTQzo6QmluZGluZ3M6Ok9iamNGYWxsYmFja09i
amVjdEltcDo6cHV0KToKKyAgICAgICAgKEpTQzo6QmluZGluZ3M6OmNhbGxPYmpDRmFsbGJhY2tP
YmplY3QpOgorICAgICAgICAoSlNDOjpCaW5kaW5nczo6T2JqY0ZhbGxiYWNrT2JqZWN0SW1wOjpk
ZWxldGVQcm9wZXJ0eSk6CisgICAgICAgIChKU0M6OkJpbmRpbmdzOjpPYmpjRmFsbGJhY2tPYmpl
Y3RJbXA6OmRlZmF1bHRWYWx1ZSk6CisgICAgICAgICogYnJpZGdlL3J1bnRpbWVfYXJyYXkuY3Bw
OgorICAgICAgICAoSlNDOjpSdW50aW1lQXJyYXk6Omxlbmd0aEdldHRlcik6CisgICAgICAgIChK
U0M6OlJ1bnRpbWVBcnJheTo6Z2V0T3duUHJvcGVydHlTbG90KToKKyAgICAgICAgKEpTQzo6UnVu
dGltZUFycmF5OjpnZXRPd25Qcm9wZXJ0eURlc2NyaXB0b3IpOgorICAgICAgICAoSlNDOjpSdW50
aW1lQXJyYXk6OnB1dCk6CisgICAgICAgIChKU0M6OlJ1bnRpbWVBcnJheTo6ZGVsZXRlUHJvcGVy
dHkpOgorICAgICAgICAqIGJyaWRnZS9ydW50aW1lX2FycmF5Lmg6CisgICAgICAgIChSdW50aW1l
QXJyYXkpOgorICAgICAgICAqIGJyaWRnZS9ydW50aW1lX21ldGhvZC5jcHA6CisgICAgICAgIChK
U0M6OlJ1bnRpbWVNZXRob2Q6OmZpbmlzaENyZWF0aW9uKToKKyAgICAgICAgKEpTQzo6UnVudGlt
ZU1ldGhvZDo6bGVuZ3RoR2V0dGVyKToKKyAgICAgICAgKEpTQzo6UnVudGltZU1ldGhvZDo6Z2V0
T3duUHJvcGVydHlTbG90KToKKyAgICAgICAgKEpTQzo6UnVudGltZU1ldGhvZDo6Z2V0T3duUHJv
cGVydHlEZXNjcmlwdG9yKToKKyAgICAgICAgKiBicmlkZ2UvcnVudGltZV9tZXRob2QuaDoKKyAg
ICAgICAgKEpTQzo6UnVudGltZU1ldGhvZDo6Y3JlYXRlKToKKyAgICAgICAgKFJ1bnRpbWVNZXRo
b2QpOgorICAgICAgICAqIGJyaWRnZS9ydW50aW1lX29iamVjdC5jcHA6CisgICAgICAgIChKU0M6
OkJpbmRpbmdzOjpSdW50aW1lT2JqZWN0OjpmYWxsYmFja09iamVjdEdldHRlcik6CisgICAgICAg
IChKU0M6OkJpbmRpbmdzOjpSdW50aW1lT2JqZWN0OjpmaWVsZEdldHRlcik6CisgICAgICAgIChK
U0M6OkJpbmRpbmdzOjpSdW50aW1lT2JqZWN0OjptZXRob2RHZXR0ZXIpOgorICAgICAgICAoSlND
OjpCaW5kaW5nczo6UnVudGltZU9iamVjdDo6Z2V0T3duUHJvcGVydHlTbG90KToKKyAgICAgICAg
KEpTQzo6QmluZGluZ3M6OlJ1bnRpbWVPYmplY3Q6OmdldE93blByb3BlcnR5RGVzY3JpcHRvcik6
CisgICAgICAgIChKU0M6OkJpbmRpbmdzOjpSdW50aW1lT2JqZWN0OjpwdXQpOgorICAgICAgICAo
SlNDOjpCaW5kaW5nczo6UnVudGltZU9iamVjdDo6ZGVsZXRlUHJvcGVydHkpOgorICAgICAgICAq
IGJyaWRnZS9ydW50aW1lX29iamVjdC5oOgorICAgICAgICAoUnVudGltZU9iamVjdCk6CisKIDIw
MTItMDUtMTEgIFNpbW9uIEZyYXNlciAgPHNpbW9uLmZyYXNlckBhcHBsZS5jb20+CiAKICAgICAg
ICAgQ1ZEaXNwbGF5TGluayBrZWVwcyBydW5uaW5nIGFmdGVyIGEgc2luZ2xlIHJlcXVlc3RBbmlt
YXRpb25GcmFtZQpJbmRleDogU291cmNlL1dlYkNvcmUvV2ViQ29yZS5leHAuaW4KPT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PQotLS0gU291cmNlL1dlYkNvcmUvV2ViQ29yZS5leHAuaW4JKHJldmlzaW9uIDExNjY2NykKKysr
IFNvdXJjZS9XZWJDb3JlL1dlYkNvcmUuZXhwLmluCSh3b3JraW5nIGNvcHkpCkBAIC0xODg0LDIy
ICsxODg0LDIyIEBAIF9fWk43V2ViQ29yZTVGcmFtZTI2c2VuZE9yaWVudGF0aW9uQ2hhbmcKIAog
I2lmIFVTRShQTFVHSU5fSE9TVF9QUk9DRVNTKQogX19aTjNKU0MxM1J1bnRpbWVNZXRob2QxMWdl
dENhbGxEYXRhRVBOU182SlNDZWxsRVJOU184Q2FsbERhdGFFCi1fX1pOM0pTQzEzUnVudGltZU1l
dGhvZDE0ZmluaXNoQ3JlYXRpb25FUk5TXzEySlNHbG9iYWxEYXRhRVJLTlNfMTBJZGVudGlmaWVy
RQotX19aTjNKU0MxM1J1bnRpbWVNZXRob2QxOGdldE93blByb3BlcnR5U2xvdEVQTlNfNkpTQ2Vs
bEVQTlNfOUV4ZWNTdGF0ZUVSS05TXzEwSWRlbnRpZmllckVSTlNfMTJQcm9wZXJ0eVNsb3RFCi1f
X1pOM0pTQzEzUnVudGltZU1ldGhvZDI0Z2V0T3duUHJvcGVydHlEZXNjcmlwdG9yRVBOU184SlNP
YmplY3RFUE5TXzlFeGVjU3RhdGVFUktOU18xMElkZW50aWZpZXJFUk5TXzE4UHJvcGVydHlEZXNj
cmlwdG9yRQorX19aTjNKU0MxM1J1bnRpbWVNZXRob2QxNGZpbmlzaENyZWF0aW9uRVJOU18xMkpT
R2xvYmFsRGF0YUVSS05TXzdVU3RyaW5nRQorX19aTjNKU0MxM1J1bnRpbWVNZXRob2QxOGdldE93
blByb3BlcnR5U2xvdEVQTlNfNkpTQ2VsbEVQTlNfOUV4ZWNTdGF0ZUVOU18xMlByb3BlcnR5TmFt
ZUVSTlNfMTJQcm9wZXJ0eVNsb3RFCitfX1pOM0pTQzEzUnVudGltZU1ldGhvZDI0Z2V0T3duUHJv
cGVydHlEZXNjcmlwdG9yRVBOU184SlNPYmplY3RFUE5TXzlFeGVjU3RhdGVFTlNfMTJQcm9wZXJ0
eU5hbWVFUk5TXzE4UHJvcGVydHlEZXNjcmlwdG9yRQogX19aTjNKU0MxM1J1bnRpbWVNZXRob2Q2
c19pbmZvRQogX19aTjNKU0MxM1J1bnRpbWVNZXRob2Q3ZGVzdHJveUVQTlNfNkpTQ2VsbEUKIF9f
Wk4zSlNDMTNSdW50aW1lTWV0aG9kQzJFUE5TXzE0SlNHbG9iYWxPYmplY3RFUE5TXzlTdHJ1Y3R1
cmVFUk4zV1RGNlZlY3RvcklQTlNfOEJpbmRpbmdzNk1ldGhvZEVMbTBFRUUKIF9fWk4zSlNDOEJp
bmRpbmdzMTBSb290T2JqZWN0RDFFdgogX19aTjNKU0M4QmluZGluZ3MxM1J1bnRpbWVPYmplY3Qx
MWdldENhbGxEYXRhRVBOU182SlNDZWxsRVJOU184Q2FsbERhdGFFCiBfX1pOM0pTQzhCaW5kaW5n
czEzUnVudGltZU9iamVjdDEyZGVmYXVsdFZhbHVlRVBLTlNfOEpTT2JqZWN0RVBOU185RXhlY1N0
YXRlRU5TXzIyUHJlZmVycmVkUHJpbWl0aXZlVHlwZUUKLV9fWk4zSlNDOEJpbmRpbmdzMTNSdW50
aW1lT2JqZWN0MTRkZWxldGVQcm9wZXJ0eUVQTlNfNkpTQ2VsbEVQTlNfOUV4ZWNTdGF0ZUVSS05T
XzEwSWRlbnRpZmllckUKK19fWk4zSlNDOEJpbmRpbmdzMTNSdW50aW1lT2JqZWN0MTRkZWxldGVQ
cm9wZXJ0eUVQTlNfNkpTQ2VsbEVQTlNfOUV4ZWNTdGF0ZUVOU18xMlByb3BlcnR5TmFtZUUKIF9f
Wk4zSlNDOEJpbmRpbmdzMTNSdW50aW1lT2JqZWN0MTRmaW5pc2hDcmVhdGlvbkVQTlNfMTRKU0ds
b2JhbE9iamVjdEUKIF9fWk4zSlNDOEJpbmRpbmdzMTNSdW50aW1lT2JqZWN0MTZnZXRDb25zdHJ1
Y3REYXRhRVBOU182SlNDZWxsRVJOU18xM0NvbnN0cnVjdERhdGFFCi1fX1pOM0pTQzhCaW5kaW5n
czEzUnVudGltZU9iamVjdDE4Z2V0T3duUHJvcGVydHlTbG90RVBOU182SlNDZWxsRVBOU185RXhl
Y1N0YXRlRVJLTlNfMTBJZGVudGlmaWVyRVJOU18xMlByb3BlcnR5U2xvdEUKK19fWk4zSlNDOEJp
bmRpbmdzMTNSdW50aW1lT2JqZWN0MThnZXRPd25Qcm9wZXJ0eVNsb3RFUE5TXzZKU0NlbGxFUE5T
XzlFeGVjU3RhdGVFTlNfMTJQcm9wZXJ0eU5hbWVFUk5TXzEyUHJvcGVydHlTbG90RQogX19aTjNK
U0M4QmluZGluZ3MxM1J1bnRpbWVPYmplY3QxOWdldE93blByb3BlcnR5TmFtZXNFUE5TXzhKU09i
amVjdEVQTlNfOUV4ZWNTdGF0ZUVSTlNfMTdQcm9wZXJ0eU5hbWVBcnJheUVOU18xNUVudW1lcmF0
aW9uTW9kZUUKLV9fWk4zSlNDOEJpbmRpbmdzMTNSdW50aW1lT2JqZWN0MjRnZXRPd25Qcm9wZXJ0
eURlc2NyaXB0b3JFUE5TXzhKU09iamVjdEVQTlNfOUV4ZWNTdGF0ZUVSS05TXzEwSWRlbnRpZmll
ckVSTlNfMThQcm9wZXJ0eURlc2NyaXB0b3JFCi1fX1pOM0pTQzhCaW5kaW5nczEzUnVudGltZU9i
amVjdDNwdXRFUE5TXzZKU0NlbGxFUE5TXzlFeGVjU3RhdGVFUktOU18xMElkZW50aWZpZXJFTlNf
N0pTVmFsdWVFUk5TXzE1UHV0UHJvcGVydHlTbG90RQorX19aTjNKU0M4QmluZGluZ3MxM1J1bnRp
bWVPYmplY3QyNGdldE93blByb3BlcnR5RGVzY3JpcHRvckVQTlNfOEpTT2JqZWN0RVBOU185RXhl
Y1N0YXRlRU5TXzEyUHJvcGVydHlOYW1lRVJOU18xOFByb3BlcnR5RGVzY3JpcHRvckUKK19fWk4z
SlNDOEJpbmRpbmdzMTNSdW50aW1lT2JqZWN0M3B1dEVQTlNfNkpTQ2VsbEVQTlNfOUV4ZWNTdGF0
ZUVOU18xMlByb3BlcnR5TmFtZUVOU183SlNWYWx1ZUVSTlNfMTVQdXRQcm9wZXJ0eVNsb3RFCiBf
X1pOM0pTQzhCaW5kaW5nczEzUnVudGltZU9iamVjdDZzX2luZm9FCiBfX1pOM0pTQzhCaW5kaW5n
czEzUnVudGltZU9iamVjdDdkZXN0cm95RVBOU182SlNDZWxsRQogX19aTjNKU0M4QmluZGluZ3Mx
M1J1bnRpbWVPYmplY3RDMkVQTlNfOUV4ZWNTdGF0ZUVQTlNfMTRKU0dsb2JhbE9iamVjdEVQTlNf
OVN0cnVjdHVyZUVOM1dURjEwUGFzc1JlZlB0cklOUzBfOEluc3RhbmNlRUVFCkluZGV4OiBTb3Vy
Y2UvV2ViQ29yZS9iaW5kaW5ncy9qcy9KU0NTU1N0eWxlRGVjbGFyYXRpb25DdXN0b20uY3BwCj09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT0KLS0tIFNvdXJjZS9XZWJDb3JlL2JpbmRpbmdzL2pzL0pTQ1NTU3R5bGVEZWNsYXJh
dGlvbkN1c3RvbS5jcHAJKHJldmlzaW9uIDExNjY2NykKKysrIFNvdXJjZS9XZWJDb3JlL2JpbmRp
bmdzL2pzL0pTQ1NTU3R5bGVEZWNsYXJhdGlvbkN1c3RvbS5jcHAJKHdvcmtpbmcgY29weSkKQEAg
LTE3NiwxNiArMTc2LDE2IEBAIHN0YXRpYyBpbmxpbmUgdm9pZCB3cml0ZUVwdWJQcmVmaXgoY2hh
cioKICAgICAqYnVmZmVyKysgPSAnLSc7CiB9CiAKLXN0YXRpYyBDU1NQcm9wZXJ0eUluZm8gY3Nz
UHJvcGVydHlJREZvckpTQ1NTUHJvcGVydHlOYW1lKGNvbnN0IElkZW50aWZpZXImIHByb3BlcnR5
TmFtZSkKK3N0YXRpYyBDU1NQcm9wZXJ0eUluZm8gY3NzUHJvcGVydHlJREZvckpTQ1NTUHJvcGVy
dHlOYW1lKFByb3BlcnR5TmFtZSBwcm9wZXJ0eU5hbWUpCiB7CiAgICAgQ1NTUHJvcGVydHlJbmZv
IHByb3BlcnR5SW5mbyA9IHtDU1NQcm9wZXJ0eUludmFsaWQsIGZhbHNlfTsKICAgICBib29sIGhh
ZFBpeGVsT3JQb3NQcmVmaXggPSBmYWxzZTsKIAotICAgIHVuc2lnbmVkIGxlbmd0aCA9IHByb3Bl
cnR5TmFtZS5sZW5ndGgoKTsKKyAgICBTdHJpbmdJbXBsKiBwcm9wZXJ0eU5hbWVTdHJpbmcgPSBw
cm9wZXJ0eU5hbWUuaW1wbCgpOworICAgIHVuc2lnbmVkIGxlbmd0aCA9IHByb3BlcnR5TmFtZVN0
cmluZy0+bGVuZ3RoKCk7CiAgICAgaWYgKCFsZW5ndGgpCiAgICAgICAgIHJldHVybiBwcm9wZXJ0
eUluZm87CiAKLSAgICBTdHJpbmdJbXBsKiBwcm9wZXJ0eU5hbWVTdHJpbmcgPSBwcm9wZXJ0eU5h
bWUuaW1wbCgpOwogICAgIFN0cmluZyBzdHJpbmdGb3JDYWNoZSA9IFN0cmluZyhwcm9wZXJ0eU5h
bWVTdHJpbmcpOwogICAgIHR5cGVkZWYgSGFzaE1hcDxTdHJpbmcsIENTU1Byb3BlcnR5SW5mbz4g
Q1NTUHJvcGVydHlJbmZvTWFwOwogICAgIERFRklORV9TVEFUSUNfTE9DQUwoQ1NTUHJvcGVydHlJ
bmZvTWFwLCBwcm9wZXJ0eUluZm9DYWNoZSwgKCkpOwpAQCAtMzIwLDcgKzMyMCw3IEBAIHN0YXRp
YyBKU1ZhbHVlIGNzc1Byb3BlcnR5R2V0dGVyQ2FsbGJhY2sKICAgICByZXR1cm4gY3NzUHJvcGVy
dHlHZXR0ZXIoZXhlYywganNDYXN0PEpTQ1NTU3R5bGVEZWNsYXJhdGlvbio+KGFzT2JqZWN0KHNs
b3RCYXNlKSksIHByb3BlcnR5SUQpOwogfQogCi1ib29sIEpTQ1NTU3R5bGVEZWNsYXJhdGlvbjo6
Z2V0T3duUHJvcGVydHlTbG90RGVsZWdhdGUoRXhlY1N0YXRlKiwgY29uc3QgSWRlbnRpZmllciYg
cHJvcGVydHlJZGVudGlmaWVyLCBQcm9wZXJ0eVNsb3QmIHNsb3QpCitib29sIEpTQ1NTU3R5bGVE
ZWNsYXJhdGlvbjo6Z2V0T3duUHJvcGVydHlTbG90RGVsZWdhdGUoRXhlY1N0YXRlKiwgUHJvcGVy
dHlOYW1lIHByb3BlcnR5SWRlbnRpZmllciwgUHJvcGVydHlTbG90JiBzbG90KQogewogICAgIENT
U1Byb3BlcnR5SW5mbyBwcm9wZXJ0eUluZm8gPSBjc3NQcm9wZXJ0eUlERm9ySlNDU1NQcm9wZXJ0
eU5hbWUocHJvcGVydHlJZGVudGlmaWVyKTsKICAgICBpZiAoIXByb3BlcnR5SW5mby5wcm9wZXJ0
eUlEKQpAQCAtMzMzLDcgKzMzMyw3IEBAIGJvb2wgSlNDU1NTdHlsZURlY2xhcmF0aW9uOjpnZXRP
d25Qcm9wZXIKICAgICByZXR1cm4gdHJ1ZTsKIH0KIAotYm9vbCBKU0NTU1N0eWxlRGVjbGFyYXRp
b246OmdldE93blByb3BlcnR5RGVzY3JpcHRvckRlbGVnYXRlKEpTQzo6RXhlY1N0YXRlKiBleGVj
LCBjb25zdCBKU0M6OklkZW50aWZpZXImIHByb3BlcnR5SWRlbnRpZmllciwgSlNDOjpQcm9wZXJ0
eURlc2NyaXB0b3ImIGRlc2NyaXB0b3IpCitib29sIEpTQ1NTU3R5bGVEZWNsYXJhdGlvbjo6Z2V0
T3duUHJvcGVydHlEZXNjcmlwdG9yRGVsZWdhdGUoSlNDOjpFeGVjU3RhdGUqIGV4ZWMsIEpTQzo6
UHJvcGVydHlOYW1lIHByb3BlcnR5SWRlbnRpZmllciwgSlNDOjpQcm9wZXJ0eURlc2NyaXB0b3Im
IGRlc2NyaXB0b3IpCiB7CiAgICAgQ1NTUHJvcGVydHlJbmZvIHByb3BlcnR5SW5mbyA9IGNzc1By
b3BlcnR5SURGb3JKU0NTU1Byb3BlcnR5TmFtZShwcm9wZXJ0eUlkZW50aWZpZXIpOwogICAgIGlm
ICghcHJvcGVydHlJbmZvLnByb3BlcnR5SUQpCkBAIC0zNDgsNyArMzQ4LDcgQEAgYm9vbCBKU0NT
U1N0eWxlRGVjbGFyYXRpb246OmdldE93blByb3BlcgogICAgIHJldHVybiB0cnVlOwogfQogCi1i
b29sIEpTQ1NTU3R5bGVEZWNsYXJhdGlvbjo6cHV0RGVsZWdhdGUoRXhlY1N0YXRlKiBleGVjLCBj
b25zdCBJZGVudGlmaWVyJiBwcm9wZXJ0eU5hbWUsIEpTVmFsdWUgdmFsdWUsIFB1dFByb3BlcnR5
U2xvdCYpCitib29sIEpTQ1NTU3R5bGVEZWNsYXJhdGlvbjo6cHV0RGVsZWdhdGUoRXhlY1N0YXRl
KiBleGVjLCBQcm9wZXJ0eU5hbWUgcHJvcGVydHlOYW1lLCBKU1ZhbHVlIHZhbHVlLCBQdXRQcm9w
ZXJ0eVNsb3QmKQogewogICAgIENTU1Byb3BlcnR5SW5mbyBwcm9wZXJ0eUluZm8gPSBjc3NQcm9w
ZXJ0eUlERm9ySlNDU1NQcm9wZXJ0eU5hbWUocHJvcGVydHlOYW1lKTsKICAgICBpZiAoIXByb3Bl
cnR5SW5mby5wcm9wZXJ0eUlEKQpJbmRleDogU291cmNlL1dlYkNvcmUvYmluZGluZ3MvanMvSlNE
T01CaW5kaW5nLmNwcAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2ViQ29yZS9iaW5kaW5ncy9qcy9K
U0RPTUJpbmRpbmcuY3BwCShyZXZpc2lvbiAxMTY2NjcpCisrKyBTb3VyY2UvV2ViQ29yZS9iaW5k
aW5ncy9qcy9KU0RPTUJpbmRpbmcuY3BwCSh3b3JraW5nIGNvcHkpCkBAIC0xMDcsMTEgKzEwNywx
MSBAQCBKU1ZhbHVlIGpzU3RyaW5nT3JGYWxzZShFeGVjU3RhdGUqIGV4ZWMsCiAgICAgcmV0dXJu
IGpzU3RyaW5nKGV4ZWMsIHVybC5zdHJpbmcoKSk7CiB9CiAKLUF0b21pY1N0cmluZ0ltcGwqIGZp
bmRBdG9taWNTdHJpbmcoY29uc3QgSWRlbnRpZmllciYgaWRlbnRpZmllcikKK0F0b21pY1N0cmlu
Z0ltcGwqIGZpbmRBdG9taWNTdHJpbmcoUHJvcGVydHlOYW1lIHByb3BlcnR5TmFtZSkKIHsKLSAg
ICBpZiAoaWRlbnRpZmllci5pc051bGwoKSkKKyAgICBTdHJpbmdJbXBsKiBpbXBsID0gcHJvcGVy
dHlOYW1lLmltcGwoKTsKKyAgICBpZiAoIWltcGwpCiAgICAgICAgIHJldHVybiAwOwotICAgIFN0
cmluZ0ltcGwqIGltcGwgPSBpZGVudGlmaWVyLmltcGwoKTsKICAgICBBU1NFUlQoaW1wbC0+ZXhp
c3RpbmdIYXNoKCkpOwogICAgIHJldHVybiBBdG9taWNTdHJpbmc6OmZpbmQoaW1wbC0+Y2hhcmFj
dGVycygpLCBpbXBsLT5sZW5ndGgoKSwgaW1wbC0+ZXhpc3RpbmdIYXNoKCkpOwogfQpAQCAtMjQz
LDkgKzI0Myw5IEBAIHZvaWQgcHJpbnRFcnJvck1lc3NhZ2VGb3JGcmFtZShGcmFtZSogZnIKICAg
ICBmcmFtZS0+ZG9tV2luZG93KCktPnByaW50RXJyb3JNZXNzYWdlKG1lc3NhZ2UpOwogfQogCi1K
U1ZhbHVlIG9iamVjdFRvU3RyaW5nRnVuY3Rpb25HZXR0ZXIoRXhlY1N0YXRlKiBleGVjLCBKU1Zh
bHVlLCBjb25zdCBJZGVudGlmaWVyJiBwcm9wZXJ0eU5hbWUpCitKU1ZhbHVlIG9iamVjdFRvU3Ry
aW5nRnVuY3Rpb25HZXR0ZXIoRXhlY1N0YXRlKiBleGVjLCBKU1ZhbHVlLCBQcm9wZXJ0eU5hbWUg
cHJvcGVydHlOYW1lKQogewotICAgIHJldHVybiBKU0Z1bmN0aW9uOjpjcmVhdGUoZXhlYywgZXhl
Yy0+bGV4aWNhbEdsb2JhbE9iamVjdCgpLCAwLCBwcm9wZXJ0eU5hbWUsIG9iamVjdFByb3RvRnVu
Y1RvU3RyaW5nKTsKKyAgICByZXR1cm4gSlNGdW5jdGlvbjo6Y3JlYXRlKGV4ZWMsIGV4ZWMtPmxl
eGljYWxHbG9iYWxPYmplY3QoKSwgMCwgcHJvcGVydHlOYW1lLmltcGwoKSwgb2JqZWN0UHJvdG9G
dW5jVG9TdHJpbmcpOwogfQogCiBTdHJ1Y3R1cmUqIGdldENhY2hlZERPTVN0cnVjdHVyZShKU0RP
TUdsb2JhbE9iamVjdCogZ2xvYmFsT2JqZWN0LCBjb25zdCBDbGFzc0luZm8qIGNsYXNzSW5mbykK
SW5kZXg6IFNvdXJjZS9XZWJDb3JlL2JpbmRpbmdzL2pzL0pTRE9NQmluZGluZy5oCj09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT0KLS0tIFNvdXJjZS9XZWJDb3JlL2JpbmRpbmdzL2pzL0pTRE9NQmluZGluZy5oCShyZXZpc2lv
biAxMTY2NjcpCisrKyBTb3VyY2UvV2ViQ29yZS9iaW5kaW5ncy9qcy9KU0RPTUJpbmRpbmcuaAko
d29ya2luZyBjb3B5KQpAQCAtMjUyLDEzICsyNTIsMTMgQEAgZW51bSBQYXJhbWV0ZXJEZWZhdWx0
UG9saWN5IHsKICAgICAvLyBvYmplY3QsIHRvIGxldCB0aGUgZW5naW5lIGtub3cgdGhhdCBjb2xs
ZWN0aW5nIHRoZSBKU1N0cmluZyB3cmFwcGVyIGlzIHVubGlrZWx5IHRvIHNhdmUgbWVtb3J5Lgog
ICAgIEpTQzo6SlNWYWx1ZSBqc093bmVkU3RyaW5nT3JOdWxsKEpTQzo6RXhlY1N0YXRlKiwgY29u
c3QgU3RyaW5nJik7IAogCi0gICAgU3RyaW5nIGlkZW50aWZpZXJUb1N0cmluZyhjb25zdCBKU0M6
OklkZW50aWZpZXImKTsKKyAgICBTdHJpbmcgcHJvcGVydHlOYW1lVG9TdHJpbmcoSlNDOjpQcm9w
ZXJ0eU5hbWUpOwogICAgIFN0cmluZyB1c3RyaW5nVG9TdHJpbmcoY29uc3QgSlNDOjpVU3RyaW5n
Jik7CiAgICAgSlNDOjpVU3RyaW5nIHN0cmluZ1RvVVN0cmluZyhjb25zdCBTdHJpbmcmKTsKIAot
ICAgIEF0b21pY1N0cmluZyBpZGVudGlmaWVyVG9BdG9taWNTdHJpbmcoY29uc3QgSlNDOjpJZGVu
dGlmaWVyJik7CisgICAgQXRvbWljU3RyaW5nIHByb3BlcnR5TmFtZVRvQXRvbWljU3RyaW5nKEpT
Qzo6UHJvcGVydHlOYW1lKTsKICAgICBBdG9taWNTdHJpbmcgdXN0cmluZ1RvQXRvbWljU3RyaW5n
KGNvbnN0IEpTQzo6VVN0cmluZyYpOwotICAgIEF0b21pY1N0cmluZ0ltcGwqIGZpbmRBdG9taWNT
dHJpbmcoY29uc3QgSlNDOjpJZGVudGlmaWVyJik7CisgICAgQXRvbWljU3RyaW5nSW1wbCogZmlu
ZEF0b21pY1N0cmluZyhKU0M6OlByb3BlcnR5TmFtZSk7CiAKICAgICBTdHJpbmcgdmFsdWVUb1N0
cmluZ1dpdGhOdWxsQ2hlY2soSlNDOjpFeGVjU3RhdGUqLCBKU0M6OkpTVmFsdWUpOyAvLyBudWxs
IGlmIHRoZSB2YWx1ZSBpcyBudWxsCiAgICAgU3RyaW5nIHZhbHVlVG9TdHJpbmdXaXRoVW5kZWZp
bmVkT3JOdWxsQ2hlY2soSlNDOjpFeGVjU3RhdGUqLCBKU0M6OkpTVmFsdWUpOyAvLyBudWxsIGlm
IHRoZSB2YWx1ZSBpcyBudWxsIG9yIHVuZGVmaW5lZApAQCAtMzM3LDcgKzMzNyw3IEBAIGVudW0g
UGFyYW1ldGVyRGVmYXVsdFBvbGljeSB7CiAgICAgRE9NV2luZG93KiBmaXJzdERPTVdpbmRvdyhK
U0M6OkV4ZWNTdGF0ZSopOwogCiAgICAgdm9pZCBwcmludEVycm9yTWVzc2FnZUZvckZyYW1lKEZy
YW1lKiwgY29uc3QgU3RyaW5nJiBtZXNzYWdlKTsKLSAgICBKU0M6OkpTVmFsdWUgb2JqZWN0VG9T
dHJpbmdGdW5jdGlvbkdldHRlcihKU0M6OkV4ZWNTdGF0ZSosIEpTQzo6SlNWYWx1ZSwgY29uc3Qg
SlNDOjpJZGVudGlmaWVyJiBwcm9wZXJ0eU5hbWUpOworICAgIEpTQzo6SlNWYWx1ZSBvYmplY3RU
b1N0cmluZ0Z1bmN0aW9uR2V0dGVyKEpTQzo6RXhlY1N0YXRlKiwgSlNDOjpKU1ZhbHVlLCBKU0M6
OlByb3BlcnR5TmFtZSk7CiAKICAgICBpbmxpbmUgSlNDOjpKU1ZhbHVlIGpzU3RyaW5nKEpTQzo6
RXhlY1N0YXRlKiBleGVjLCBjb25zdCBTdHJpbmcmIHMpCiAgICAgewpAQCAtMzcxLDkgKzM3MSw5
IEBAIGVudW0gUGFyYW1ldGVyRGVmYXVsdFBvbGljeSB7CiAgICAgICAgIHJldHVybiBKU0M6OlVT
dHJpbmcocy5pbXBsKCkpOwogICAgIH0KIAotICAgIGlubGluZSBTdHJpbmcgaWRlbnRpZmllclRv
U3RyaW5nKGNvbnN0IEpTQzo6SWRlbnRpZmllciYgaSkKKyAgICBpbmxpbmUgU3RyaW5nIHByb3Bl
cnR5TmFtZVRvU3RyaW5nKEpTQzo6UHJvcGVydHlOYW1lIHByb3BlcnR5TmFtZSkKICAgICB7Ci0g
ICAgICAgIHJldHVybiBpLmltcGwoKTsKKyAgICAgICAgcmV0dXJuIHByb3BlcnR5TmFtZS5pbXBs
KCk7CiAgICAgfQogCiAgICAgaW5saW5lIEF0b21pY1N0cmluZyB1c3RyaW5nVG9BdG9taWNTdHJp
bmcoY29uc3QgSlNDOjpVU3RyaW5nJiB1KQpAQCAtMzgxLDkgKzM4MSw5IEBAIGVudW0gUGFyYW1l
dGVyRGVmYXVsdFBvbGljeSB7CiAgICAgICAgIHJldHVybiBBdG9taWNTdHJpbmcodS5pbXBsKCkp
OwogICAgIH0KIAotICAgIGlubGluZSBBdG9taWNTdHJpbmcgaWRlbnRpZmllclRvQXRvbWljU3Ry
aW5nKGNvbnN0IEpTQzo6SWRlbnRpZmllciYgaWRlbnRpZmllcikKKyAgICBpbmxpbmUgQXRvbWlj
U3RyaW5nIHByb3BlcnR5TmFtZVRvQXRvbWljU3RyaW5nKEpTQzo6UHJvcGVydHlOYW1lIHByb3Bl
cnR5TmFtZSkKICAgICB7Ci0gICAgICAgIHJldHVybiBBdG9taWNTdHJpbmcoaWRlbnRpZmllci5p
bXBsKCkpOworICAgICAgICByZXR1cm4gQXRvbWljU3RyaW5nKHByb3BlcnR5TmFtZS5pbXBsKCkp
OwogICAgIH0KIAogICAgIGlubGluZSBWZWN0b3I8dW5zaWduZWQgbG9uZz4ganNVbnNpZ25lZExv
bmdBcnJheVRvVmVjdG9yKEpTQzo6RXhlY1N0YXRlKiBleGVjLCBKU0M6OkpTVmFsdWUgdmFsdWUp
CkluZGV4OiBTb3VyY2UvV2ViQ29yZS9iaW5kaW5ncy9qcy9KU0RPTU1pbWVUeXBlQXJyYXlDdXN0
b20uY3BwCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9XZWJDb3JlL2JpbmRpbmdzL2pzL0pTRE9NTWlt
ZVR5cGVBcnJheUN1c3RvbS5jcHAJKHJldmlzaW9uIDExNjY2NykKKysrIFNvdXJjZS9XZWJDb3Jl
L2JpbmRpbmdzL2pzL0pTRE9NTWltZVR5cGVBcnJheUN1c3RvbS5jcHAJKHdvcmtpbmcgY29weSkK
QEAgLTI4LDE1ICsyOCwxNSBAQCBuYW1lc3BhY2UgV2ViQ29yZSB7CiAKIHVzaW5nIG5hbWVzcGFj
ZSBKU0M7CiAKLWJvb2wgSlNET01NaW1lVHlwZUFycmF5OjpjYW5HZXRJdGVtc0Zvck5hbWUoRXhl
Y1N0YXRlKiwgRE9NTWltZVR5cGVBcnJheSogbWltZVR5cGVBcnJheSwgY29uc3QgSWRlbnRpZmll
ciYgcHJvcGVydHlOYW1lKQorYm9vbCBKU0RPTU1pbWVUeXBlQXJyYXk6OmNhbkdldEl0ZW1zRm9y
TmFtZShFeGVjU3RhdGUqLCBET01NaW1lVHlwZUFycmF5KiBtaW1lVHlwZUFycmF5LCBQcm9wZXJ0
eU5hbWUgcHJvcGVydHlOYW1lKQogewotICAgIHJldHVybiBtaW1lVHlwZUFycmF5LT5jYW5HZXRJ
dGVtc0Zvck5hbWUoaWRlbnRpZmllclRvQXRvbWljU3RyaW5nKHByb3BlcnR5TmFtZSkpOworICAg
IHJldHVybiBtaW1lVHlwZUFycmF5LT5jYW5HZXRJdGVtc0Zvck5hbWUocHJvcGVydHlOYW1lVG9B
dG9taWNTdHJpbmcocHJvcGVydHlOYW1lKSk7CiB9CiAKLUpTVmFsdWUgSlNET01NaW1lVHlwZUFy
cmF5OjpuYW1lR2V0dGVyKEV4ZWNTdGF0ZSogZXhlYywgSlNWYWx1ZSBzbG90QmFzZSwgY29uc3Qg
SWRlbnRpZmllciYgcHJvcGVydHlOYW1lKQorSlNWYWx1ZSBKU0RPTU1pbWVUeXBlQXJyYXk6Om5h
bWVHZXR0ZXIoRXhlY1N0YXRlKiBleGVjLCBKU1ZhbHVlIHNsb3RCYXNlLCBQcm9wZXJ0eU5hbWUg
cHJvcGVydHlOYW1lKQogewogICAgIEpTRE9NTWltZVR5cGVBcnJheSogdGhpc09iaiA9IGpzQ2Fz
dDxKU0RPTU1pbWVUeXBlQXJyYXkqPihhc09iamVjdChzbG90QmFzZSkpOwotICAgIHJldHVybiB0
b0pTKGV4ZWMsIHRoaXNPYmotPmdsb2JhbE9iamVjdCgpLCB0aGlzT2JqLT5pbXBsKCktPm5hbWVk
SXRlbShpZGVudGlmaWVyVG9BdG9taWNTdHJpbmcocHJvcGVydHlOYW1lKSkpOworICAgIHJldHVy
biB0b0pTKGV4ZWMsIHRoaXNPYmotPmdsb2JhbE9iamVjdCgpLCB0aGlzT2JqLT5pbXBsKCktPm5h
bWVkSXRlbShwcm9wZXJ0eU5hbWVUb0F0b21pY1N0cmluZyhwcm9wZXJ0eU5hbWUpKSk7CiB9CiAK
IH0gLy8gbmFtZXNwYWNlIFdlYkNvcmUKSW5kZXg6IFNvdXJjZS9XZWJDb3JlL2JpbmRpbmdzL2pz
L0pTRE9NUGx1Z2luQXJyYXlDdXN0b20uY3BwCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9XZWJDb3Jl
L2JpbmRpbmdzL2pzL0pTRE9NUGx1Z2luQXJyYXlDdXN0b20uY3BwCShyZXZpc2lvbiAxMTY2Njcp
CisrKyBTb3VyY2UvV2ViQ29yZS9iaW5kaW5ncy9qcy9KU0RPTVBsdWdpbkFycmF5Q3VzdG9tLmNw
cAkod29ya2luZyBjb3B5KQpAQCAtMjgsMTUgKzI4LDE1IEBAIG5hbWVzcGFjZSBXZWJDb3JlIHsK
IAogdXNpbmcgbmFtZXNwYWNlIEpTQzsKIAotYm9vbCBKU0RPTVBsdWdpbkFycmF5OjpjYW5HZXRJ
dGVtc0Zvck5hbWUoRXhlY1N0YXRlKiwgRE9NUGx1Z2luQXJyYXkqIHBsdWdpbkFycmF5LCBjb25z
dCBJZGVudGlmaWVyJiBwcm9wZXJ0eU5hbWUpCitib29sIEpTRE9NUGx1Z2luQXJyYXk6OmNhbkdl
dEl0ZW1zRm9yTmFtZShFeGVjU3RhdGUqLCBET01QbHVnaW5BcnJheSogcGx1Z2luQXJyYXksIFBy
b3BlcnR5TmFtZSBwcm9wZXJ0eU5hbWUpCiB7Ci0gICAgcmV0dXJuIHBsdWdpbkFycmF5LT5jYW5H
ZXRJdGVtc0Zvck5hbWUoaWRlbnRpZmllclRvQXRvbWljU3RyaW5nKHByb3BlcnR5TmFtZSkpOwor
ICAgIHJldHVybiBwbHVnaW5BcnJheS0+Y2FuR2V0SXRlbXNGb3JOYW1lKHByb3BlcnR5TmFtZVRv
QXRvbWljU3RyaW5nKHByb3BlcnR5TmFtZSkpOwogfQogCi1KU1ZhbHVlIEpTRE9NUGx1Z2luQXJy
YXk6Om5hbWVHZXR0ZXIoRXhlY1N0YXRlKiBleGVjLCBKU1ZhbHVlIHNsb3RCYXNlLCBjb25zdCBJ
ZGVudGlmaWVyJiBwcm9wZXJ0eU5hbWUpCitKU1ZhbHVlIEpTRE9NUGx1Z2luQXJyYXk6Om5hbWVH
ZXR0ZXIoRXhlY1N0YXRlKiBleGVjLCBKU1ZhbHVlIHNsb3RCYXNlLCBQcm9wZXJ0eU5hbWUgcHJv
cGVydHlOYW1lKQogewogICAgIEpTRE9NUGx1Z2luQXJyYXkqIHRoaXNPYmogPSBqc0Nhc3Q8SlNE
T01QbHVnaW5BcnJheSo+KGFzT2JqZWN0KHNsb3RCYXNlKSk7Ci0gICAgcmV0dXJuIHRvSlMoZXhl
YywgdGhpc09iai0+Z2xvYmFsT2JqZWN0KCksIHRoaXNPYmotPmltcGwoKS0+bmFtZWRJdGVtKGlk
ZW50aWZpZXJUb0F0b21pY1N0cmluZyhwcm9wZXJ0eU5hbWUpKSk7CisgICAgcmV0dXJuIHRvSlMo
ZXhlYywgdGhpc09iai0+Z2xvYmFsT2JqZWN0KCksIHRoaXNPYmotPmltcGwoKS0+bmFtZWRJdGVt
KHByb3BlcnR5TmFtZVRvQXRvbWljU3RyaW5nKHByb3BlcnR5TmFtZSkpKTsKIH0KIAogfSAvLyBu
YW1lc3BhY2UgV2ViQ29yZQpJbmRleDogU291cmNlL1dlYkNvcmUvYmluZGluZ3MvanMvSlNET01Q
bHVnaW5DdXN0b20uY3BwCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9XZWJDb3JlL2JpbmRpbmdzL2pz
L0pTRE9NUGx1Z2luQ3VzdG9tLmNwcAkocmV2aXNpb24gMTE2NjY3KQorKysgU291cmNlL1dlYkNv
cmUvYmluZGluZ3MvanMvSlNET01QbHVnaW5DdXN0b20uY3BwCSh3b3JraW5nIGNvcHkpCkBAIC0y
NywxNSArMjcsMTUgQEAgbmFtZXNwYWNlIFdlYkNvcmUgewogCiB1c2luZyBuYW1lc3BhY2UgSlND
OwogCi1ib29sIEpTRE9NUGx1Z2luOjpjYW5HZXRJdGVtc0Zvck5hbWUoRXhlY1N0YXRlKiwgRE9N
UGx1Z2luKiBwbHVnaW4sIGNvbnN0IElkZW50aWZpZXImIHByb3BlcnR5TmFtZSkKK2Jvb2wgSlNE
T01QbHVnaW46OmNhbkdldEl0ZW1zRm9yTmFtZShFeGVjU3RhdGUqLCBET01QbHVnaW4qIHBsdWdp
biwgUHJvcGVydHlOYW1lIHByb3BlcnR5TmFtZSkKIHsKLSAgICByZXR1cm4gcGx1Z2luLT5jYW5H
ZXRJdGVtc0Zvck5hbWUoaWRlbnRpZmllclRvQXRvbWljU3RyaW5nKHByb3BlcnR5TmFtZSkpOwor
ICAgIHJldHVybiBwbHVnaW4tPmNhbkdldEl0ZW1zRm9yTmFtZShwcm9wZXJ0eU5hbWVUb0F0b21p
Y1N0cmluZyhwcm9wZXJ0eU5hbWUpKTsKIH0KIAotSlNWYWx1ZSBKU0RPTVBsdWdpbjo6bmFtZUdl
dHRlcihFeGVjU3RhdGUqIGV4ZWMsIEpTVmFsdWUgc2xvdEJhc2UsIGNvbnN0IElkZW50aWZpZXIm
IHByb3BlcnR5TmFtZSkKK0pTVmFsdWUgSlNET01QbHVnaW46Om5hbWVHZXR0ZXIoRXhlY1N0YXRl
KiBleGVjLCBKU1ZhbHVlIHNsb3RCYXNlLCBQcm9wZXJ0eU5hbWUgcHJvcGVydHlOYW1lKQogewog
ICAgIEpTRE9NUGx1Z2luKiB0aGlzT2JqID0ganNDYXN0PEpTRE9NUGx1Z2luKj4oYXNPYmplY3Qo
c2xvdEJhc2UpKTsKLSAgICByZXR1cm4gdG9KUyhleGVjLCB0aGlzT2JqLT5nbG9iYWxPYmplY3Qo
KSwgdGhpc09iai0+aW1wbCgpLT5uYW1lZEl0ZW0oaWRlbnRpZmllclRvQXRvbWljU3RyaW5nKHBy
b3BlcnR5TmFtZSkpKTsKKyAgICByZXR1cm4gdG9KUyhleGVjLCB0aGlzT2JqLT5nbG9iYWxPYmpl
Y3QoKSwgdGhpc09iai0+aW1wbCgpLT5uYW1lZEl0ZW0ocHJvcGVydHlOYW1lVG9BdG9taWNTdHJp
bmcocHJvcGVydHlOYW1lKSkpOwogfQogCiB9IC8vIG5hbWVzcGFjZSBXZWJDb3JlCkluZGV4OiBT
b3VyY2UvV2ViQ29yZS9iaW5kaW5ncy9qcy9KU0RPTVN0cmluZ01hcEN1c3RvbS5jcHAKPT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PQotLS0gU291cmNlL1dlYkNvcmUvYmluZGluZ3MvanMvSlNET01TdHJpbmdNYXBDdXN0b20u
Y3BwCShyZXZpc2lvbiAxMTY2NjcpCisrKyBTb3VyY2UvV2ViQ29yZS9iaW5kaW5ncy9qcy9KU0RP
TVN0cmluZ01hcEN1c3RvbS5jcHAJKHdvcmtpbmcgY29weSkKQEAgLTM1LDE1ICszNSwxNSBAQCB1
c2luZyBuYW1lc3BhY2UgSlNDOwogCiBuYW1lc3BhY2UgV2ViQ29yZSB7CiAKLWJvb2wgSlNET01T
dHJpbmdNYXA6OmNhbkdldEl0ZW1zRm9yTmFtZShFeGVjU3RhdGUqLCBET01TdHJpbmdNYXAqIGlt
cGwsIGNvbnN0IElkZW50aWZpZXImIHByb3BlcnR5TmFtZSkKK2Jvb2wgSlNET01TdHJpbmdNYXA6
OmNhbkdldEl0ZW1zRm9yTmFtZShFeGVjU3RhdGUqLCBET01TdHJpbmdNYXAqIGltcGwsIFByb3Bl
cnR5TmFtZSBwcm9wZXJ0eU5hbWUpCiB7Ci0gICAgcmV0dXJuIGltcGwtPmNvbnRhaW5zKGlkZW50
aWZpZXJUb0F0b21pY1N0cmluZyhwcm9wZXJ0eU5hbWUpKTsKKyAgICByZXR1cm4gaW1wbC0+Y29u
dGFpbnMocHJvcGVydHlOYW1lVG9BdG9taWNTdHJpbmcocHJvcGVydHlOYW1lKSk7CiB9CiAKLUpT
VmFsdWUgSlNET01TdHJpbmdNYXA6Om5hbWVHZXR0ZXIoRXhlY1N0YXRlKiBleGVjLCBKU1ZhbHVl
IHNsb3RCYXNlLCBjb25zdCBJZGVudGlmaWVyJiBwcm9wZXJ0eU5hbWUpCitKU1ZhbHVlIEpTRE9N
U3RyaW5nTWFwOjpuYW1lR2V0dGVyKEV4ZWNTdGF0ZSogZXhlYywgSlNWYWx1ZSBzbG90QmFzZSwg
UHJvcGVydHlOYW1lIHByb3BlcnR5TmFtZSkKIHsKICAgICBKU0RPTVN0cmluZ01hcCogdGhpc09i
aiA9IGpzQ2FzdDxKU0RPTVN0cmluZ01hcCo+KGFzT2JqZWN0KHNsb3RCYXNlKSk7Ci0gICAgcmV0
dXJuIGpzU3RyaW5nKGV4ZWMsIHRoaXNPYmotPmltcGwoKS0+aXRlbShpZGVudGlmaWVyVG9BdG9t
aWNTdHJpbmcocHJvcGVydHlOYW1lKSkpOworICAgIHJldHVybiBqc1N0cmluZyhleGVjLCB0aGlz
T2JqLT5pbXBsKCktPml0ZW0ocHJvcGVydHlOYW1lVG9BdG9taWNTdHJpbmcocHJvcGVydHlOYW1l
KSkpOwogfQogCiB2b2lkIEpTRE9NU3RyaW5nTWFwOjpnZXRPd25Qcm9wZXJ0eU5hbWVzKEpTT2Jq
ZWN0KiBvYmplY3QsIEV4ZWNTdGF0ZSogZXhlYywgUHJvcGVydHlOYW1lQXJyYXkmIHByb3BlcnR5
TmFtZXMsIEVudW1lcmF0aW9uTW9kZSBtb2RlKQpAQCAtNTgsMTAgKzU4LDEwIEBAIHZvaWQgSlNE
T01TdHJpbmdNYXA6OmdldE93blByb3BlcnR5TmFtZXMKICAgICBCYXNlOjpnZXRPd25Qcm9wZXJ0
eU5hbWVzKHRoaXNPYmplY3QsIGV4ZWMsIHByb3BlcnR5TmFtZXMsIG1vZGUpOwogfQogCi1ib29s
IEpTRE9NU3RyaW5nTWFwOjpkZWxldGVQcm9wZXJ0eShKU0NlbGwqIGNlbGwsIEV4ZWNTdGF0ZSog
ZXhlYywgY29uc3QgSWRlbnRpZmllciYgcHJvcGVydHlOYW1lKQorYm9vbCBKU0RPTVN0cmluZ01h
cDo6ZGVsZXRlUHJvcGVydHkoSlNDZWxsKiBjZWxsLCBFeGVjU3RhdGUqIGV4ZWMsIFByb3BlcnR5
TmFtZSBwcm9wZXJ0eU5hbWUpCiB7CiAgICAgSlNET01TdHJpbmdNYXAqIHRoaXNPYmplY3QgPSBq
c0Nhc3Q8SlNET01TdHJpbmdNYXAqPihjZWxsKTsKLSAgICBBdG9taWNTdHJpbmcgc3RyaW5nTmFt
ZSA9IGlkZW50aWZpZXJUb0F0b21pY1N0cmluZyhwcm9wZXJ0eU5hbWUpOworICAgIEF0b21pY1N0
cmluZyBzdHJpbmdOYW1lID0gcHJvcGVydHlOYW1lVG9BdG9taWNTdHJpbmcocHJvcGVydHlOYW1l
KTsKICAgICBpZiAoIXRoaXNPYmplY3QtPm1faW1wbC0+Y29udGFpbnMoc3RyaW5nTmFtZSkpCiAg
ICAgICAgIHJldHVybiBmYWxzZTsKICAgICBFeGNlcHRpb25Db2RlIGVjID0gMDsKQEAgLTcwLDEz
ICs3MCwxMyBAQCBib29sIEpTRE9NU3RyaW5nTWFwOjpkZWxldGVQcm9wZXJ0eShKU0NlCiAgICAg
cmV0dXJuICFlYzsKIH0KIAotYm9vbCBKU0RPTVN0cmluZ01hcDo6cHV0RGVsZWdhdGUoRXhlY1N0
YXRlKiBleGVjLCBjb25zdCBJZGVudGlmaWVyJiBwcm9wZXJ0eU5hbWUsIEpTVmFsdWUgdmFsdWUs
IFB1dFByb3BlcnR5U2xvdCYpCitib29sIEpTRE9NU3RyaW5nTWFwOjpwdXREZWxlZ2F0ZShFeGVj
U3RhdGUqIGV4ZWMsIFByb3BlcnR5TmFtZSBwcm9wZXJ0eU5hbWUsIEpTVmFsdWUgdmFsdWUsIFB1
dFByb3BlcnR5U2xvdCYpCiB7CiAgICAgU3RyaW5nIHN0cmluZ1ZhbHVlID0gdXN0cmluZ1RvU3Ry
aW5nKHZhbHVlLnRvU3RyaW5nKGV4ZWMpLT52YWx1ZShleGVjKSk7CiAgICAgaWYgKGV4ZWMtPmhh
ZEV4Y2VwdGlvbigpKQogICAgICAgICByZXR1cm4gZmFsc2U7CiAgICAgRXhjZXB0aW9uQ29kZSBl
YyA9IDA7Ci0gICAgaW1wbCgpLT5zZXRJdGVtKGlkZW50aWZpZXJUb1N0cmluZyhwcm9wZXJ0eU5h
bWUpLCBzdHJpbmdWYWx1ZSwgZWMpOworICAgIGltcGwoKS0+c2V0SXRlbShwcm9wZXJ0eU5hbWVU
b1N0cmluZyhwcm9wZXJ0eU5hbWUpLCBzdHJpbmdWYWx1ZSwgZWMpOwogICAgIHNldERPTUV4Y2Vw
dGlvbihleGVjLCBlYyk7CiAgICAgcmV0dXJuICFlYzsKIH0KSW5kZXg6IFNvdXJjZS9XZWJDb3Jl
L2JpbmRpbmdzL2pzL0pTRE9NV2luZG93Q3VzdG9tLmNwcAo9PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2Uv
V2ViQ29yZS9iaW5kaW5ncy9qcy9KU0RPTVdpbmRvd0N1c3RvbS5jcHAJKHJldmlzaW9uIDExNjY2
NykKKysrIFNvdXJjZS9XZWJDb3JlL2JpbmRpbmdzL2pzL0pTRE9NV2luZG93Q3VzdG9tLmNwcAko
d29ya2luZyBjb3B5KQpAQCAtOTIsMTQgKzkyLDE0IEBAIHZvaWQgSlNET01XaW5kb3c6OnZpc2l0
Q2hpbGRyZW4oSlNDZWxsKiAKIH0KIAogdGVtcGxhdGU8TmF0aXZlRnVuY3Rpb24gbmF0aXZlRnVu
Y3Rpb24sIGludCBsZW5ndGg+Ci1KU1ZhbHVlIG5vbkNhY2hpbmdTdGF0aWNGdW5jdGlvbkdldHRl
cihFeGVjU3RhdGUqIGV4ZWMsIEpTVmFsdWUsIGNvbnN0IElkZW50aWZpZXImIHByb3BlcnR5TmFt
ZSkKK0pTVmFsdWUgbm9uQ2FjaGluZ1N0YXRpY0Z1bmN0aW9uR2V0dGVyKEV4ZWNTdGF0ZSogZXhl
YywgSlNWYWx1ZSwgUHJvcGVydHlOYW1lIHByb3BlcnR5TmFtZSkKIHsKLSAgICByZXR1cm4gSlNG
dW5jdGlvbjo6Y3JlYXRlKGV4ZWMsIGV4ZWMtPmxleGljYWxHbG9iYWxPYmplY3QoKSwgbGVuZ3Ro
LCBwcm9wZXJ0eU5hbWUsIG5hdGl2ZUZ1bmN0aW9uKTsKKyAgICByZXR1cm4gSlNGdW5jdGlvbjo6
Y3JlYXRlKGV4ZWMsIGV4ZWMtPmxleGljYWxHbG9iYWxPYmplY3QoKSwgbGVuZ3RoLCBwcm9wZXJ0
eU5hbWUuaW1wbCgpLCBuYXRpdmVGdW5jdGlvbik7CiB9CiAKLXN0YXRpYyBKU1ZhbHVlIGNoaWxk
RnJhbWVHZXR0ZXIoRXhlY1N0YXRlKiBleGVjLCBKU1ZhbHVlIHNsb3RCYXNlLCBjb25zdCBJZGVu
dGlmaWVyJiBwcm9wZXJ0eU5hbWUpCitzdGF0aWMgSlNWYWx1ZSBjaGlsZEZyYW1lR2V0dGVyKEV4
ZWNTdGF0ZSogZXhlYywgSlNWYWx1ZSBzbG90QmFzZSwgUHJvcGVydHlOYW1lIHByb3BlcnR5TmFt
ZSkKIHsKLSAgICByZXR1cm4gdG9KUyhleGVjLCBqc0Nhc3Q8SlNET01XaW5kb3cqPihhc09iamVj
dChzbG90QmFzZSkpLT5pbXBsKCktPmZyYW1lKCktPnRyZWUoKS0+c2NvcGVkQ2hpbGQoaWRlbnRp
ZmllclRvQXRvbWljU3RyaW5nKHByb3BlcnR5TmFtZSkpLT5kb21XaW5kb3coKSk7CisgICAgcmV0
dXJuIHRvSlMoZXhlYywganNDYXN0PEpTRE9NV2luZG93Kj4oYXNPYmplY3Qoc2xvdEJhc2UpKS0+
aW1wbCgpLT5mcmFtZSgpLT50cmVlKCktPnNjb3BlZENoaWxkKHByb3BlcnR5TmFtZVRvQXRvbWlj
U3RyaW5nKHByb3BlcnR5TmFtZSkpLT5kb21XaW5kb3coKSk7CiB9CiAKIHN0YXRpYyBKU1ZhbHVl
IGluZGV4R2V0dGVyKEV4ZWNTdGF0ZSogZXhlYywgSlNWYWx1ZSBzbG90QmFzZSwgdW5zaWduZWQg
aW5kZXgpCkBAIC0xMDcsNyArMTA3LDcgQEAgc3RhdGljIEpTVmFsdWUgaW5kZXhHZXR0ZXIoRXhl
Y1N0YXRlKiBleAogICAgIHJldHVybiB0b0pTKGV4ZWMsIGpzQ2FzdDxKU0RPTVdpbmRvdyo+KGFz
T2JqZWN0KHNsb3RCYXNlKSktPmltcGwoKS0+ZnJhbWUoKS0+dHJlZSgpLT5zY29wZWRDaGlsZChp
bmRleCktPmRvbVdpbmRvdygpKTsKIH0KIAotc3RhdGljIEpTVmFsdWUgbmFtZWRJdGVtR2V0dGVy
KEV4ZWNTdGF0ZSogZXhlYywgSlNWYWx1ZSBzbG90QmFzZSwgY29uc3QgSWRlbnRpZmllciYgcHJv
cGVydHlOYW1lKQorc3RhdGljIEpTVmFsdWUgbmFtZWRJdGVtR2V0dGVyKEV4ZWNTdGF0ZSogZXhl
YywgSlNWYWx1ZSBzbG90QmFzZSwgUHJvcGVydHlOYW1lIHByb3BlcnR5TmFtZSkKIHsKICAgICBK
U0RPTVdpbmRvd0Jhc2UqIHRoaXNPYmogPSBqc0Nhc3Q8SlNET01XaW5kb3cqPihhc09iamVjdChz
bG90QmFzZSkpOwogICAgIERvY3VtZW50KiBkb2N1bWVudCA9IHRoaXNPYmotPmltcGwoKS0+ZnJh
bWUoKS0+ZG9jdW1lbnQoKTsKQEAgLTExNiwxMyArMTE2LDEzIEBAIHN0YXRpYyBKU1ZhbHVlIG5h
bWVkSXRlbUdldHRlcihFeGVjU3RhdGUKICAgICBBU1NFUlQoZG9jdW1lbnQpOwogICAgIEFTU0VS
VChkb2N1bWVudC0+aXNIVE1MRG9jdW1lbnQoKSk7CiAKLSAgICBIVE1MQ29sbGVjdGlvbiogY29s
bGVjdGlvbiA9IGRvY3VtZW50LT53aW5kb3dOYW1lZEl0ZW1zKGlkZW50aWZpZXJUb0F0b21pY1N0
cmluZyhwcm9wZXJ0eU5hbWUpKTsKKyAgICBIVE1MQ29sbGVjdGlvbiogY29sbGVjdGlvbiA9IGRv
Y3VtZW50LT53aW5kb3dOYW1lZEl0ZW1zKHByb3BlcnR5TmFtZVRvQXRvbWljU3RyaW5nKHByb3Bl
cnR5TmFtZSkpOwogICAgIGlmIChjb2xsZWN0aW9uLT5sZW5ndGgoKSA9PSAxKQogICAgICAgICBy
ZXR1cm4gdG9KUyhleGVjLCB0aGlzT2JqLCBjb2xsZWN0aW9uLT5maXJzdEl0ZW0oKSk7CiAgICAg
cmV0dXJuIHRvSlMoZXhlYywgdGhpc09iaiwgY29sbGVjdGlvbik7CiB9CiAKLWJvb2wgSlNET01X
aW5kb3c6OmdldE93blByb3BlcnR5U2xvdChKU0NlbGwqIGNlbGwsIEV4ZWNTdGF0ZSogZXhlYywg
Y29uc3QgSWRlbnRpZmllciYgcHJvcGVydHlOYW1lLCBQcm9wZXJ0eVNsb3QmIHNsb3QpCitib29s
IEpTRE9NV2luZG93OjpnZXRPd25Qcm9wZXJ0eVNsb3QoSlNDZWxsKiBjZWxsLCBFeGVjU3RhdGUq
IGV4ZWMsIFByb3BlcnR5TmFtZSBwcm9wZXJ0eU5hbWUsIFByb3BlcnR5U2xvdCYgc2xvdCkKIHsK
ICAgICBKU0RPTVdpbmRvdyogdGhpc09iamVjdCA9IGpzQ2FzdDxKU0RPTVdpbmRvdyo+KGNlbGwp
OwogICAgIC8vIFdoZW4gYWNjZXNzaW5nIGEgV2luZG93IGNyb3NzLWRvbWFpbiwgZnVuY3Rpb25z
IGFyZSBhbHdheXMgdGhlIG5hdGl2ZSBidWlsdC1pbiBvbmVzLCBhbmQgdGhleQpAQCAtMjIwLDcg
KzIyMCw3IEBAIGJvb2wgSlNET01XaW5kb3c6OmdldE93blByb3BlcnR5U2xvdChKU0MKICAgICAv
LyBuYW1pbmcgZnJhbWVzIHRoaW5ncyB0aGF0IGNvbmZsaWN0IHdpdGggd2luZG93IHByb3BlcnRp
ZXMgdGhhdAogICAgIC8vIGFyZSBpbiBNb3ogYnV0IG5vdCBJRS4gU2luY2Ugd2UgaGF2ZSBzb21l
IG9mIHRoZXNlLCB3ZSBoYXZlIHRvIGRvCiAgICAgLy8gaXQgdGhlIE1veiB3YXkuCi0gICAgaWYg
KHRoaXNPYmplY3QtPmltcGwoKS0+ZnJhbWUoKS0+dHJlZSgpLT5zY29wZWRDaGlsZChpZGVudGlm
aWVyVG9BdG9taWNTdHJpbmcocHJvcGVydHlOYW1lKSkpIHsKKyAgICBpZiAodGhpc09iamVjdC0+
aW1wbCgpLT5mcmFtZSgpLT50cmVlKCktPnNjb3BlZENoaWxkKHByb3BlcnR5TmFtZVRvQXRvbWlj
U3RyaW5nKHByb3BlcnR5TmFtZSkpKSB7CiAgICAgICAgIHNsb3Quc2V0Q3VzdG9tKHRoaXNPYmpl
Y3QsIGNoaWxkRnJhbWVHZXR0ZXIpOwogICAgICAgICByZXR1cm4gdHJ1ZTsKICAgICB9CkBAIC0y
NDIsOSArMjQyLDkgQEAgYm9vbCBKU0RPTVdpbmRvdzo6Z2V0T3duUHJvcGVydHlTbG90KEpTQwog
ICAgIC8vIFdlIG5lZWQgdG8gdGVzdCB0aGUgY29ycmVjdCBwcmlvcml0eSBvcmRlci4KIAogICAg
IC8vIGFsbG93IHdpbmRvd1sxXSBvciBwYXJlbnRbMV0gZXRjLiAoIzU2OTgzKQotICAgIGJvb2wg
b2s7Ci0gICAgdW5zaWduZWQgaSA9IHByb3BlcnR5TmFtZS50b0FycmF5SW5kZXgob2spOwotICAg
IGlmIChvayAmJiBpIDwgdGhpc09iamVjdC0+aW1wbCgpLT5mcmFtZSgpLT50cmVlKCktPnNjb3Bl
ZENoaWxkQ291bnQoKSkgeworICAgIHVuc2lnbmVkIGkgPSBwcm9wZXJ0eU5hbWUuYXNJbmRleCgp
OworICAgIGlmIChpIDwgdGhpc09iamVjdC0+aW1wbCgpLT5mcmFtZSgpLT50cmVlKCktPnNjb3Bl
ZENoaWxkQ291bnQoKSkgeworICAgICAgICBBU1NFUlQoaSAhPSBQcm9wZXJ0eU5hbWU6Ok5vdEFu
SW5kZXgpOwogICAgICAgICBzbG90LnNldEN1c3RvbUluZGV4KHRoaXNPYmplY3QsIGksIGluZGV4
R2V0dGVyKTsKICAgICAgICAgcmV0dXJuIHRydWU7CiAgICAgfQpAQCAtMjY4LDcgKzI2OCw3IEBA
IGJvb2wgSlNET01XaW5kb3c6OmdldE93blByb3BlcnR5U2xvdChKU0MKICAgICByZXR1cm4gQmFz
ZTo6Z2V0T3duUHJvcGVydHlTbG90KHRoaXNPYmplY3QsIGV4ZWMsIHByb3BlcnR5TmFtZSwgc2xv
dCk7CiB9CiAKLWJvb2wgSlNET01XaW5kb3c6OmdldE93blByb3BlcnR5RGVzY3JpcHRvcihKU09i
amVjdCogb2JqZWN0LCBFeGVjU3RhdGUqIGV4ZWMsIGNvbnN0IElkZW50aWZpZXImIHByb3BlcnR5
TmFtZSwgUHJvcGVydHlEZXNjcmlwdG9yJiBkZXNjcmlwdG9yKQorYm9vbCBKU0RPTVdpbmRvdzo6
Z2V0T3duUHJvcGVydHlEZXNjcmlwdG9yKEpTT2JqZWN0KiBvYmplY3QsIEV4ZWNTdGF0ZSogZXhl
YywgUHJvcGVydHlOYW1lIHByb3BlcnR5TmFtZSwgUHJvcGVydHlEZXNjcmlwdG9yJiBkZXNjcmlw
dG9yKQogewogICAgIEpTRE9NV2luZG93KiB0aGlzT2JqZWN0ID0ganNDYXN0PEpTRE9NV2luZG93
Kj4ob2JqZWN0KTsKICAgICAvLyBOZXZlciBhbGxvdyBjcm9zcy1kb21haW4gZ2V0T3duUHJvcGVy
dHlEZXNjcmlwdG9yCkBAIC0zMTAsMTYgKzMxMCwxNiBAQCBib29sIEpTRE9NV2luZG93OjpnZXRP
d25Qcm9wZXJ0eURlc2NyaXB0CiAgICAgLy8gbmFtaW5nIGZyYW1lcyB0aGluZ3MgdGhhdCBjb25m
bGljdCB3aXRoIHdpbmRvdyBwcm9wZXJ0aWVzIHRoYXQKICAgICAvLyBhcmUgaW4gTW96IGJ1dCBu
b3QgSUUuIFNpbmNlIHdlIGhhdmUgc29tZSBvZiB0aGVzZSwgd2UgaGF2ZSB0byBkbwogICAgIC8v
IGl0IHRoZSBNb3ogd2F5LgotICAgIGlmICh0aGlzT2JqZWN0LT5pbXBsKCktPmZyYW1lKCktPnRy
ZWUoKS0+c2NvcGVkQ2hpbGQoaWRlbnRpZmllclRvQXRvbWljU3RyaW5nKHByb3BlcnR5TmFtZSkp
KSB7CisgICAgaWYgKHRoaXNPYmplY3QtPmltcGwoKS0+ZnJhbWUoKS0+dHJlZSgpLT5zY29wZWRD
aGlsZChwcm9wZXJ0eU5hbWVUb0F0b21pY1N0cmluZyhwcm9wZXJ0eU5hbWUpKSkgewogICAgICAg
ICBQcm9wZXJ0eVNsb3Qgc2xvdDsKICAgICAgICAgc2xvdC5zZXRDdXN0b20odGhpc09iamVjdCwg
Y2hpbGRGcmFtZUdldHRlcik7CiAgICAgICAgIGRlc2NyaXB0b3Iuc2V0RGVzY3JpcHRvcihzbG90
LmdldFZhbHVlKGV4ZWMsIHByb3BlcnR5TmFtZSksIFJlYWRPbmx5IHwgRG9udERlbGV0ZSB8IERv
bnRFbnVtKTsKICAgICAgICAgcmV0dXJuIHRydWU7CiAgICAgfQogICAgIAotICAgIGJvb2wgb2s7
Ci0gICAgdW5zaWduZWQgaSA9IHByb3BlcnR5TmFtZS50b0FycmF5SW5kZXgob2spOwotICAgIGlm
IChvayAmJiBpIDwgdGhpc09iamVjdC0+aW1wbCgpLT5mcmFtZSgpLT50cmVlKCktPnNjb3BlZENo
aWxkQ291bnQoKSkgeworICAgIHVuc2lnbmVkIGkgPSBwcm9wZXJ0eU5hbWUuYXNJbmRleCgpOwor
ICAgIGlmIChpIDwgdGhpc09iamVjdC0+aW1wbCgpLT5mcmFtZSgpLT50cmVlKCktPnNjb3BlZENo
aWxkQ291bnQoKSkgeworICAgICAgICBBU1NFUlQoaSAhPSBQcm9wZXJ0eU5hbWU6Ok5vdEFuSW5k
ZXgpOwogICAgICAgICBQcm9wZXJ0eVNsb3Qgc2xvdDsKICAgICAgICAgc2xvdC5zZXRDdXN0b21J
bmRleCh0aGlzT2JqZWN0LCBpLCBpbmRleEdldHRlcik7CiAgICAgICAgIGRlc2NyaXB0b3Iuc2V0
RGVzY3JpcHRvcihzbG90LmdldFZhbHVlKGV4ZWMsIHByb3BlcnR5TmFtZSksIFJlYWRPbmx5IHwg
RG9udERlbGV0ZSB8IERvbnRFbnVtKTsKQEAgLTM0MSw3ICszNDEsNyBAQCBib29sIEpTRE9NV2lu
ZG93OjpnZXRPd25Qcm9wZXJ0eURlc2NyaXB0CiAgICAgcmV0dXJuIEJhc2U6OmdldE93blByb3Bl
cnR5RGVzY3JpcHRvcih0aGlzT2JqZWN0LCBleGVjLCBwcm9wZXJ0eU5hbWUsIGRlc2NyaXB0b3Ip
OwogfQogCi12b2lkIEpTRE9NV2luZG93OjpwdXQoSlNDZWxsKiBjZWxsLCBFeGVjU3RhdGUqIGV4
ZWMsIGNvbnN0IElkZW50aWZpZXImIHByb3BlcnR5TmFtZSwgSlNWYWx1ZSB2YWx1ZSwgUHV0UHJv
cGVydHlTbG90JiBzbG90KQordm9pZCBKU0RPTVdpbmRvdzo6cHV0KEpTQ2VsbCogY2VsbCwgRXhl
Y1N0YXRlKiBleGVjLCBQcm9wZXJ0eU5hbWUgcHJvcGVydHlOYW1lLCBKU1ZhbHVlIHZhbHVlLCBQ
dXRQcm9wZXJ0eVNsb3QmIHNsb3QpCiB7CiAgICAgSlNET01XaW5kb3cqIHRoaXNPYmplY3QgPSBq
c0Nhc3Q8SlNET01XaW5kb3cqPihjZWxsKTsKICAgICBpZiAoIXRoaXNPYmplY3QtPmltcGwoKS0+
ZnJhbWUoKSkKQEAgLTM2MSw3ICszNjEsNyBAQCB2b2lkIEpTRE9NV2luZG93OjpwdXQoSlNDZWxs
KiBjZWxsLCBFeGVjCiAgICAgICAgIEJhc2U6OnB1dCh0aGlzT2JqZWN0LCBleGVjLCBwcm9wZXJ0
eU5hbWUsIHZhbHVlLCBzbG90KTsKIH0KIAotYm9vbCBKU0RPTVdpbmRvdzo6ZGVsZXRlUHJvcGVy
dHkoSlNDZWxsKiBjZWxsLCBFeGVjU3RhdGUqIGV4ZWMsIGNvbnN0IElkZW50aWZpZXImIHByb3Bl
cnR5TmFtZSkKK2Jvb2wgSlNET01XaW5kb3c6OmRlbGV0ZVByb3BlcnR5KEpTQ2VsbCogY2VsbCwg
RXhlY1N0YXRlKiBleGVjLCBQcm9wZXJ0eU5hbWUgcHJvcGVydHlOYW1lKQogewogICAgIEpTRE9N
V2luZG93KiB0aGlzT2JqZWN0ID0ganNDYXN0PEpTRE9NV2luZG93Kj4oY2VsbCk7CiAgICAgLy8g
T25seSBhbGxvdyBkZWxldGluZyBwcm9wZXJ0aWVzIGJ5IGZyYW1lcyBpbiB0aGUgc2FtZSBvcmln
aW4uCkBAIC0zODgsNyArMzg4LDcgQEAgdm9pZCBKU0RPTVdpbmRvdzo6Z2V0T3duUHJvcGVydHlO
YW1lcyhKUwogICAgIEJhc2U6OmdldE93blByb3BlcnR5TmFtZXModGhpc09iamVjdCwgZXhlYywg
cHJvcGVydHlOYW1lcywgbW9kZSk7CiB9CiAKLWJvb2wgSlNET01XaW5kb3c6OmRlZmluZU93blBy
b3BlcnR5KEpTQzo6SlNPYmplY3QqIG9iamVjdCwgSlNDOjpFeGVjU3RhdGUqIGV4ZWMsIGNvbnN0
IEpTQzo6SWRlbnRpZmllciYgcHJvcGVydHlOYW1lLCBKU0M6OlByb3BlcnR5RGVzY3JpcHRvciYg
ZGVzY3JpcHRvciwgYm9vbCBzaG91bGRUaHJvdykKK2Jvb2wgSlNET01XaW5kb3c6OmRlZmluZU93
blByb3BlcnR5KEpTQzo6SlNPYmplY3QqIG9iamVjdCwgSlNDOjpFeGVjU3RhdGUqIGV4ZWMsIEpT
Qzo6UHJvcGVydHlOYW1lIHByb3BlcnR5TmFtZSwgSlNDOjpQcm9wZXJ0eURlc2NyaXB0b3ImIGRl
c2NyaXB0b3IsIGJvb2wgc2hvdWxkVGhyb3cpCiB7CiAgICAgSlNET01XaW5kb3cqIHRoaXNPYmpl
Y3QgPSBqc0Nhc3Q8SlNET01XaW5kb3cqPihvYmplY3QpOwogICAgIC8vIE9ubHkgYWxsb3cgZGVm
aW5pbmcgcHJvcGVydGllcyBpbiB0aGlzIHdheSBieSBmcmFtZXMgaW4gdGhlIHNhbWUgb3JpZ2lu
LCBhcyBpdCBhbGxvd3Mgc2V0dGVycyB0byBiZSBpbnRyb2R1Y2VkLgpAQCAtMzk2LDcgKzM5Niw3
IEBAIGJvb2wgSlNET01XaW5kb3c6OmRlZmluZU93blByb3BlcnR5KEpTQzoKICAgICAgICAgcmV0
dXJuIGZhbHNlOwogCiAgICAgLy8gRG9uJ3QgYWxsb3cgc2hhZG93aW5nIGxvY2F0aW9uIHVzaW5n
IGFjY2Vzc29yIHByb3BlcnRpZXMuCi0gICAgaWYgKGRlc2NyaXB0b3IuaXNBY2Nlc3NvckRlc2Ny
aXB0b3IoKSAmJiBwcm9wZXJ0eU5hbWUgPT0gImxvY2F0aW9uIikKKyAgICBpZiAoZGVzY3JpcHRv
ci5pc0FjY2Vzc29yRGVzY3JpcHRvcigpICYmIHByb3BlcnR5TmFtZSA9PSBJZGVudGlmaWVyKGV4
ZWMsICJsb2NhdGlvbiIpKQogICAgICAgICByZXR1cm4gZmFsc2U7CiAKICAgICByZXR1cm4gQmFz
ZTo6ZGVmaW5lT3duUHJvcGVydHkodGhpc09iamVjdCwgZXhlYywgcHJvcGVydHlOYW1lLCBkZXNj
cmlwdG9yLCBzaG91bGRUaHJvdyk7CkluZGV4OiBTb3VyY2UvV2ViQ29yZS9iaW5kaW5ncy9qcy9K
U0RPTVdpbmRvd1NoZWxsLmNwcAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2ViQ29yZS9iaW5kaW5n
cy9qcy9KU0RPTVdpbmRvd1NoZWxsLmNwcAkocmV2aXNpb24gMTE2NjY3KQorKysgU291cmNlL1dl
YkNvcmUvYmluZGluZ3MvanMvSlNET01XaW5kb3dTaGVsbC5jcHAJKHdvcmtpbmcgY29weSkKQEAg
LTkxLDM3ICs5MSwzNyBAQCBVU3RyaW5nIEpTRE9NV2luZG93U2hlbGw6OmNsYXNzTmFtZShjb25z
CiAgICAgcmV0dXJuIHRoaXNPYmplY3QtPndpbmRvdygpLT5tZXRob2RUYWJsZSgpLT5jbGFzc05h
bWUodGhpc09iamVjdC0+d2luZG93KCkpOwogfQogCi1ib29sIEpTRE9NV2luZG93U2hlbGw6Omdl
dE93blByb3BlcnR5U2xvdChKU0NlbGwqIGNlbGwsIEV4ZWNTdGF0ZSogZXhlYywgY29uc3QgSWRl
bnRpZmllciYgcHJvcGVydHlOYW1lLCBQcm9wZXJ0eVNsb3QmIHNsb3QpCitib29sIEpTRE9NV2lu
ZG93U2hlbGw6OmdldE93blByb3BlcnR5U2xvdChKU0NlbGwqIGNlbGwsIEV4ZWNTdGF0ZSogZXhl
YywgUHJvcGVydHlOYW1lIHByb3BlcnR5TmFtZSwgUHJvcGVydHlTbG90JiBzbG90KQogewogICAg
IEpTRE9NV2luZG93U2hlbGwqIHRoaXNPYmplY3QgPSBqc0Nhc3Q8SlNET01XaW5kb3dTaGVsbCo+
KGNlbGwpOwogICAgIHJldHVybiB0aGlzT2JqZWN0LT53aW5kb3coKS0+bWV0aG9kVGFibGUoKS0+
Z2V0T3duUHJvcGVydHlTbG90KHRoaXNPYmplY3QtPndpbmRvdygpLCBleGVjLCBwcm9wZXJ0eU5h
bWUsIHNsb3QpOwogfQogCi1ib29sIEpTRE9NV2luZG93U2hlbGw6OmdldE93blByb3BlcnR5RGVz
Y3JpcHRvcihKU09iamVjdCogb2JqZWN0LCBFeGVjU3RhdGUqIGV4ZWMsIGNvbnN0IElkZW50aWZp
ZXImIHByb3BlcnR5TmFtZSwgUHJvcGVydHlEZXNjcmlwdG9yJiBkZXNjcmlwdG9yKQorYm9vbCBK
U0RPTVdpbmRvd1NoZWxsOjpnZXRPd25Qcm9wZXJ0eURlc2NyaXB0b3IoSlNPYmplY3QqIG9iamVj
dCwgRXhlY1N0YXRlKiBleGVjLCBQcm9wZXJ0eU5hbWUgcHJvcGVydHlOYW1lLCBQcm9wZXJ0eURl
c2NyaXB0b3ImIGRlc2NyaXB0b3IpCiB7CiAgICAgSlNET01XaW5kb3dTaGVsbCogdGhpc09iamVj
dCA9IGpzQ2FzdDxKU0RPTVdpbmRvd1NoZWxsKj4ob2JqZWN0KTsKICAgICByZXR1cm4gdGhpc09i
amVjdC0+d2luZG93KCktPm1ldGhvZFRhYmxlKCktPmdldE93blByb3BlcnR5RGVzY3JpcHRvcih0
aGlzT2JqZWN0LT53aW5kb3coKSwgZXhlYywgcHJvcGVydHlOYW1lLCBkZXNjcmlwdG9yKTsKIH0K
IAotdm9pZCBKU0RPTVdpbmRvd1NoZWxsOjpwdXQoSlNDZWxsKiBjZWxsLCBFeGVjU3RhdGUqIGV4
ZWMsIGNvbnN0IElkZW50aWZpZXImIHByb3BlcnR5TmFtZSwgSlNWYWx1ZSB2YWx1ZSwgUHV0UHJv
cGVydHlTbG90JiBzbG90KQordm9pZCBKU0RPTVdpbmRvd1NoZWxsOjpwdXQoSlNDZWxsKiBjZWxs
LCBFeGVjU3RhdGUqIGV4ZWMsIFByb3BlcnR5TmFtZSBwcm9wZXJ0eU5hbWUsIEpTVmFsdWUgdmFs
dWUsIFB1dFByb3BlcnR5U2xvdCYgc2xvdCkKIHsKICAgICBKU0RPTVdpbmRvd1NoZWxsKiB0aGlz
T2JqZWN0ID0ganNDYXN0PEpTRE9NV2luZG93U2hlbGwqPihjZWxsKTsKICAgICB0aGlzT2JqZWN0
LT53aW5kb3coKS0+bWV0aG9kVGFibGUoKS0+cHV0KHRoaXNPYmplY3QtPndpbmRvdygpLCBleGVj
LCBwcm9wZXJ0eU5hbWUsIHZhbHVlLCBzbG90KTsKIH0KIAotdm9pZCBKU0RPTVdpbmRvd1NoZWxs
OjpwdXREaXJlY3RWaXJ0dWFsKEpTT2JqZWN0KiBvYmplY3QsIEV4ZWNTdGF0ZSogZXhlYywgY29u
c3QgSWRlbnRpZmllciYgcHJvcGVydHlOYW1lLCBKU1ZhbHVlIHZhbHVlLCB1bnNpZ25lZCBhdHRy
aWJ1dGVzKQordm9pZCBKU0RPTVdpbmRvd1NoZWxsOjpwdXREaXJlY3RWaXJ0dWFsKEpTT2JqZWN0
KiBvYmplY3QsIEV4ZWNTdGF0ZSogZXhlYywgUHJvcGVydHlOYW1lIHByb3BlcnR5TmFtZSwgSlNW
YWx1ZSB2YWx1ZSwgdW5zaWduZWQgYXR0cmlidXRlcykKIHsKICAgICBKU0RPTVdpbmRvd1NoZWxs
KiB0aGlzT2JqZWN0ID0ganNDYXN0PEpTRE9NV2luZG93U2hlbGwqPihvYmplY3QpOwogICAgIHRo
aXNPYmplY3QtPndpbmRvdygpLT5wdXREaXJlY3RWaXJ0dWFsKHRoaXNPYmplY3QtPndpbmRvdygp
LCBleGVjLCBwcm9wZXJ0eU5hbWUsIHZhbHVlLCBhdHRyaWJ1dGVzKTsKIH0KIAotYm9vbCBKU0RP
TVdpbmRvd1NoZWxsOjpkZWZpbmVPd25Qcm9wZXJ0eShKU0M6OkpTT2JqZWN0KiBvYmplY3QsIEpT
Qzo6RXhlY1N0YXRlKiBleGVjLCBjb25zdCBKU0M6OklkZW50aWZpZXImIHByb3BlcnR5TmFtZSwg
SlNDOjpQcm9wZXJ0eURlc2NyaXB0b3ImIGRlc2NyaXB0b3IsIGJvb2wgc2hvdWxkVGhyb3cpCiti
b29sIEpTRE9NV2luZG93U2hlbGw6OmRlZmluZU93blByb3BlcnR5KEpTQzo6SlNPYmplY3QqIG9i
amVjdCwgSlNDOjpFeGVjU3RhdGUqIGV4ZWMsIEpTQzo6UHJvcGVydHlOYW1lIHByb3BlcnR5TmFt
ZSwgSlNDOjpQcm9wZXJ0eURlc2NyaXB0b3ImIGRlc2NyaXB0b3IsIGJvb2wgc2hvdWxkVGhyb3cp
CiB7CiAgICAgSlNET01XaW5kb3dTaGVsbCogdGhpc09iamVjdCA9IGpzQ2FzdDxKU0RPTVdpbmRv
d1NoZWxsKj4ob2JqZWN0KTsKICAgICByZXR1cm4gdGhpc09iamVjdC0+d2luZG93KCktPm1ldGhv
ZFRhYmxlKCktPmRlZmluZU93blByb3BlcnR5KHRoaXNPYmplY3QtPndpbmRvdygpLCBleGVjLCBw
cm9wZXJ0eU5hbWUsIGRlc2NyaXB0b3IsIHNob3VsZFRocm93KTsKIH0KIAotYm9vbCBKU0RPTVdp
bmRvd1NoZWxsOjpkZWxldGVQcm9wZXJ0eShKU0NlbGwqIGNlbGwsIEV4ZWNTdGF0ZSogZXhlYywg
Y29uc3QgSWRlbnRpZmllciYgcHJvcGVydHlOYW1lKQorYm9vbCBKU0RPTVdpbmRvd1NoZWxsOjpk
ZWxldGVQcm9wZXJ0eShKU0NlbGwqIGNlbGwsIEV4ZWNTdGF0ZSogZXhlYywgUHJvcGVydHlOYW1l
IHByb3BlcnR5TmFtZSkKIHsKICAgICBKU0RPTVdpbmRvd1NoZWxsKiB0aGlzT2JqZWN0ID0ganND
YXN0PEpTRE9NV2luZG93U2hlbGwqPihjZWxsKTsKICAgICByZXR1cm4gdGhpc09iamVjdC0+d2lu
ZG93KCktPm1ldGhvZFRhYmxlKCktPmRlbGV0ZVByb3BlcnR5KHRoaXNPYmplY3QtPndpbmRvdygp
LCBleGVjLCBwcm9wZXJ0eU5hbWUpOwpJbmRleDogU291cmNlL1dlYkNvcmUvYmluZGluZ3MvanMv
SlNET01XaW5kb3dTaGVsbC5oCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9XZWJDb3JlL2JpbmRpbmdz
L2pzL0pTRE9NV2luZG93U2hlbGwuaAkocmV2aXNpb24gMTE2NjY3KQorKysgU291cmNlL1dlYkNv
cmUvYmluZGluZ3MvanMvSlNET01XaW5kb3dTaGVsbC5oCSh3b3JraW5nIGNvcHkpCkBAIC03OCwx
NCArNzgsMTQgQEAgbmFtZXNwYWNlIFdlYkNvcmUgewogICAgICAgICBzdGF0aWMgY29uc3QgdW5z
aWduZWQgU3RydWN0dXJlRmxhZ3MgPSBKU0M6Ok92ZXJyaWRlc0dldE93blByb3BlcnR5U2xvdCB8
IEpTQzo6T3ZlcnJpZGVzR2V0UHJvcGVydHlOYW1lcyB8IEJhc2U6OlN0cnVjdHVyZUZsYWdzOwog
CiAgICAgICAgIHN0YXRpYyBKU0M6OlVTdHJpbmcgY2xhc3NOYW1lKGNvbnN0IEpTQzo6SlNPYmpl
Y3QqKTsKLSAgICAgICAgc3RhdGljIGJvb2wgZ2V0T3duUHJvcGVydHlTbG90KEpTQzo6SlNDZWxs
KiwgSlNDOjpFeGVjU3RhdGUqLCBjb25zdCBKU0M6OklkZW50aWZpZXImIHByb3BlcnR5TmFtZSwg
SlNDOjpQcm9wZXJ0eVNsb3QmKTsKLSAgICAgICAgc3RhdGljIGJvb2wgZ2V0T3duUHJvcGVydHlE
ZXNjcmlwdG9yKEpTQzo6SlNPYmplY3QqLCBKU0M6OkV4ZWNTdGF0ZSosIGNvbnN0IEpTQzo6SWRl
bnRpZmllciYgcHJvcGVydHlOYW1lLCBKU0M6OlByb3BlcnR5RGVzY3JpcHRvciYpOwotICAgICAg
ICBzdGF0aWMgdm9pZCBwdXQoSlNDOjpKU0NlbGwqLCBKU0M6OkV4ZWNTdGF0ZSosIGNvbnN0IEpT
Qzo6SWRlbnRpZmllciYgcHJvcGVydHlOYW1lLCBKU0M6OkpTVmFsdWUsIEpTQzo6UHV0UHJvcGVy
dHlTbG90Jik7Ci0gICAgICAgIHN0YXRpYyB2b2lkIHB1dERpcmVjdFZpcnR1YWwoSlNDOjpKU09i
amVjdCosIEpTQzo6RXhlY1N0YXRlKiwgY29uc3QgSlNDOjpJZGVudGlmaWVyJiBwcm9wZXJ0eU5h
bWUsIEpTQzo6SlNWYWx1ZSwgdW5zaWduZWQgYXR0cmlidXRlcyk7Ci0gICAgICAgIHN0YXRpYyBi
b29sIGRlbGV0ZVByb3BlcnR5KEpTQzo6SlNDZWxsKiwgSlNDOjpFeGVjU3RhdGUqLCBjb25zdCBK
U0M6OklkZW50aWZpZXImIHByb3BlcnR5TmFtZSk7CisgICAgICAgIHN0YXRpYyBib29sIGdldE93
blByb3BlcnR5U2xvdChKU0M6OkpTQ2VsbCosIEpTQzo6RXhlY1N0YXRlKiwgSlNDOjpQcm9wZXJ0
eU5hbWUsIEpTQzo6UHJvcGVydHlTbG90Jik7CisgICAgICAgIHN0YXRpYyBib29sIGdldE93blBy
b3BlcnR5RGVzY3JpcHRvcihKU0M6OkpTT2JqZWN0KiwgSlNDOjpFeGVjU3RhdGUqLCBKU0M6OlBy
b3BlcnR5TmFtZSwgSlNDOjpQcm9wZXJ0eURlc2NyaXB0b3ImKTsKKyAgICAgICAgc3RhdGljIHZv
aWQgcHV0KEpTQzo6SlNDZWxsKiwgSlNDOjpFeGVjU3RhdGUqLCBKU0M6OlByb3BlcnR5TmFtZSwg
SlNDOjpKU1ZhbHVlLCBKU0M6OlB1dFByb3BlcnR5U2xvdCYpOworICAgICAgICBzdGF0aWMgdm9p
ZCBwdXREaXJlY3RWaXJ0dWFsKEpTQzo6SlNPYmplY3QqLCBKU0M6OkV4ZWNTdGF0ZSosIEpTQzo6
UHJvcGVydHlOYW1lLCBKU0M6OkpTVmFsdWUsIHVuc2lnbmVkIGF0dHJpYnV0ZXMpOworICAgICAg
ICBzdGF0aWMgYm9vbCBkZWxldGVQcm9wZXJ0eShKU0M6OkpTQ2VsbCosIEpTQzo6RXhlY1N0YXRl
KiwgSlNDOjpQcm9wZXJ0eU5hbWUpOwogICAgICAgICBzdGF0aWMgdm9pZCBnZXRPd25Qcm9wZXJ0
eU5hbWVzKEpTQzo6SlNPYmplY3QqLCBKU0M6OkV4ZWNTdGF0ZSosIEpTQzo6UHJvcGVydHlOYW1l
QXJyYXkmLCBKU0M6OkVudW1lcmF0aW9uTW9kZSk7CiAgICAgICAgIHN0YXRpYyB2b2lkIGdldFBy
b3BlcnR5TmFtZXMoSlNDOjpKU09iamVjdCosIEpTQzo6RXhlY1N0YXRlKiwgSlNDOjpQcm9wZXJ0
eU5hbWVBcnJheSYsIEpTQzo6RW51bWVyYXRpb25Nb2RlKTsKLSAgICAgICAgc3RhdGljIGJvb2wg
ZGVmaW5lT3duUHJvcGVydHkoSlNDOjpKU09iamVjdCosIEpTQzo6RXhlY1N0YXRlKiwgY29uc3Qg
SlNDOjpJZGVudGlmaWVyJiBwcm9wZXJ0eU5hbWUsIEpTQzo6UHJvcGVydHlEZXNjcmlwdG9yJiwg
Ym9vbCBzaG91bGRUaHJvdyk7CisgICAgICAgIHN0YXRpYyBib29sIGRlZmluZU93blByb3BlcnR5
KEpTQzo6SlNPYmplY3QqLCBKU0M6OkV4ZWNTdGF0ZSosIEpTQzo6UHJvcGVydHlOYW1lLCBKU0M6
OlByb3BlcnR5RGVzY3JpcHRvciYsIGJvb2wgc2hvdWxkVGhyb3cpOwogCiAgICAgICAgIFJlZlB0
cjxET01XcmFwcGVyV29ybGQ+IG1fd29ybGQ7CiAgICAgfTsKSW5kZXg6IFNvdXJjZS9XZWJDb3Jl
L2JpbmRpbmdzL2pzL0pTSFRNTEFsbENvbGxlY3Rpb25DdXN0b20uY3BwCj09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0t
IFNvdXJjZS9XZWJDb3JlL2JpbmRpbmdzL2pzL0pTSFRNTEFsbENvbGxlY3Rpb25DdXN0b20uY3Bw
CShyZXZpc2lvbiAxMTY2NjcpCisrKyBTb3VyY2UvV2ViQ29yZS9iaW5kaW5ncy9qcy9KU0hUTUxB
bGxDb2xsZWN0aW9uQ3VzdG9tLmNwcAkod29ya2luZyBjb3B5KQpAQCAtNDEsMTAgKzQxLDEwIEBA
IHVzaW5nIG5hbWVzcGFjZSBKU0M7CiAKIG5hbWVzcGFjZSBXZWJDb3JlIHsKIAotc3RhdGljIEpT
VmFsdWUgZ2V0TmFtZWRJdGVtcyhFeGVjU3RhdGUqIGV4ZWMsIEpTSFRNTEFsbENvbGxlY3Rpb24q
IGNvbGxlY3Rpb24sIGNvbnN0IElkZW50aWZpZXImIHByb3BlcnR5TmFtZSkKK3N0YXRpYyBKU1Zh
bHVlIGdldE5hbWVkSXRlbXMoRXhlY1N0YXRlKiBleGVjLCBKU0hUTUxBbGxDb2xsZWN0aW9uKiBj
b2xsZWN0aW9uLCBQcm9wZXJ0eU5hbWUgcHJvcGVydHlOYW1lKQogewogICAgIFZlY3RvcjxSZWZQ
dHI8Tm9kZT4gPiBuYW1lZEl0ZW1zOwotICAgIGNvbGxlY3Rpb24tPmltcGwoKS0+bmFtZWRJdGVt
cyhpZGVudGlmaWVyVG9BdG9taWNTdHJpbmcocHJvcGVydHlOYW1lKSwgbmFtZWRJdGVtcyk7Cisg
ICAgY29sbGVjdGlvbi0+aW1wbCgpLT5uYW1lZEl0ZW1zKHByb3BlcnR5TmFtZVRvQXRvbWljU3Ry
aW5nKHByb3BlcnR5TmFtZSksIG5hbWVkSXRlbXMpOwogCiAgICAgaWYgKG5hbWVkSXRlbXMuaXNF
bXB0eSgpKQogICAgICAgICByZXR1cm4ganNVbmRlZmluZWQoKTsKQEAgLTcxLDEwICs3MSw5IEBA
IHN0YXRpYyBFbmNvZGVkSlNWYWx1ZSBKU0NfSE9TVF9DQUxMIGNhbGwKIAogICAgIGlmIChleGVj
LT5hcmd1bWVudENvdW50KCkgPT0gMSkgewogICAgICAgICAvLyBTdXBwb3J0IGZvciBkb2N1bWVu
dC5hbGwoPGluZGV4PikgZXRjLgotICAgICAgICBib29sIG9rOwogICAgICAgICBVU3RyaW5nIHN0
cmluZyA9IGV4ZWMtPmFyZ3VtZW50KDApLnRvU3RyaW5nKGV4ZWMpLT52YWx1ZShleGVjKTsKLSAg
ICAgICAgdW5zaWduZWQgaW5kZXggPSBJZGVudGlmaWVyOjp0b1VJbnQzMihzdHJpbmcsIG9rKTsK
LSAgICAgICAgaWYgKG9rKQorICAgICAgICB1bnNpZ25lZCBpbmRleCA9IHRvVUludDMyRnJvbVN0
cmluZ0ltcGwoc3RyaW5nLmltcGwoKSk7CisgICAgICAgIGlmIChpbmRleCAhPSBQcm9wZXJ0eU5h
bWU6Ok5vdEFuSW5kZXgpCiAgICAgICAgICAgICByZXR1cm4gSlNWYWx1ZTo6ZW5jb2RlKHRvSlMo
ZXhlYywganNDb2xsZWN0aW9uLT5nbG9iYWxPYmplY3QoKSwgY29sbGVjdGlvbi0+aXRlbShpbmRl
eCkpKTsKIAogICAgICAgICAvLyBTdXBwb3J0IGZvciBkb2N1bWVudC5pbWFnZXMoJzxuYW1lPicp
IGV0Yy4KQEAgLTgyLDEwICs4MSw5IEBAIHN0YXRpYyBFbmNvZGVkSlNWYWx1ZSBKU0NfSE9TVF9D
QUxMIGNhbGwKICAgICB9CiAKICAgICAvLyBUaGUgc2Vjb25kIGFyZywgaWYgc2V0LCBpcyB0aGUg
aW5kZXggb2YgdGhlIGl0ZW0gd2Ugd2FudAotICAgIGJvb2wgb2s7CiAgICAgVVN0cmluZyBzdHJp
bmcgPSBleGVjLT5hcmd1bWVudCgwKS50b1N0cmluZyhleGVjKS0+dmFsdWUoZXhlYyk7Ci0gICAg
dW5zaWduZWQgaW5kZXggPSBJZGVudGlmaWVyOjp0b1VJbnQzMihleGVjLT5hcmd1bWVudCgxKS50
b1N0cmluZyhleGVjKS0+dmFsdWUoZXhlYyksIG9rKTsKLSAgICBpZiAob2spIHsKKyAgICB1bnNp
Z25lZCBpbmRleCA9IHRvVUludDMyRnJvbVN0cmluZ0ltcGwoZXhlYy0+YXJndW1lbnQoMSkudG9T
dHJpbmcoZXhlYyktPnZhbHVlKGV4ZWMpLmltcGwoKSk7CisgICAgaWYgKGluZGV4ICE9IFByb3Bl
cnR5TmFtZTo6Tm90QW5JbmRleCkgewogICAgICAgICBpZiAoTm9kZSogbm9kZSA9IGNvbGxlY3Rp
b24tPm5hbWVkSXRlbVdpdGhJbmRleCh1c3RyaW5nVG9BdG9taWNTdHJpbmcoc3RyaW5nKSwgaW5k
ZXgpKQogICAgICAgICAgICAgcmV0dXJuIEpTVmFsdWU6OmVuY29kZSh0b0pTKGV4ZWMsIGpzQ29s
bGVjdGlvbi0+Z2xvYmFsT2JqZWN0KCksIG5vZGUpKTsKICAgICB9CkBAIC05OSwxMiArOTcsMTIg
QEAgQ2FsbFR5cGUgSlNIVE1MQWxsQ29sbGVjdGlvbjo6Z2V0Q2FsbERhdAogICAgIHJldHVybiBD
YWxsVHlwZUhvc3Q7CiB9CiAKLWJvb2wgSlNIVE1MQWxsQ29sbGVjdGlvbjo6Y2FuR2V0SXRlbXNG
b3JOYW1lKEV4ZWNTdGF0ZSosIEhUTUxBbGxDb2xsZWN0aW9uKiBjb2xsZWN0aW9uLCBjb25zdCBJ
ZGVudGlmaWVyJiBwcm9wZXJ0eU5hbWUpCitib29sIEpTSFRNTEFsbENvbGxlY3Rpb246OmNhbkdl
dEl0ZW1zRm9yTmFtZShFeGVjU3RhdGUqLCBIVE1MQWxsQ29sbGVjdGlvbiogY29sbGVjdGlvbiwg
UHJvcGVydHlOYW1lIHByb3BlcnR5TmFtZSkKIHsKLSAgICByZXR1cm4gY29sbGVjdGlvbi0+aGFz
TmFtZWRJdGVtKGlkZW50aWZpZXJUb0F0b21pY1N0cmluZyhwcm9wZXJ0eU5hbWUpKTsKKyAgICBy
ZXR1cm4gY29sbGVjdGlvbi0+aGFzTmFtZWRJdGVtKHByb3BlcnR5TmFtZVRvQXRvbWljU3RyaW5n
KHByb3BlcnR5TmFtZSkpOwogfQogCi1KU1ZhbHVlIEpTSFRNTEFsbENvbGxlY3Rpb246Om5hbWVH
ZXR0ZXIoRXhlY1N0YXRlKiBleGVjLCBKU1ZhbHVlIHNsb3RCYXNlLCBjb25zdCBJZGVudGlmaWVy
JiBwcm9wZXJ0eU5hbWUpCitKU1ZhbHVlIEpTSFRNTEFsbENvbGxlY3Rpb246Om5hbWVHZXR0ZXIo
RXhlY1N0YXRlKiBleGVjLCBKU1ZhbHVlIHNsb3RCYXNlLCBQcm9wZXJ0eU5hbWUgcHJvcGVydHlO
YW1lKQogewogICAgIEpTSFRNTEFsbENvbGxlY3Rpb24qIHRoaXNPYmogPSBqc0Nhc3Q8SlNIVE1M
QWxsQ29sbGVjdGlvbio+KGFzT2JqZWN0KHNsb3RCYXNlKSk7CiAgICAgcmV0dXJuIGdldE5hbWVk
SXRlbXMoZXhlYywgdGhpc09iaiwgcHJvcGVydHlOYW1lKTsKQEAgLTExMiw5ICsxMTAsOCBAQCBK
U1ZhbHVlIEpTSFRNTEFsbENvbGxlY3Rpb246Om5hbWVHZXR0ZXIoCiAKIEpTVmFsdWUgSlNIVE1M
QWxsQ29sbGVjdGlvbjo6aXRlbShFeGVjU3RhdGUqIGV4ZWMpCiB7Ci0gICAgYm9vbCBvazsKLSAg
ICB1aW50MzJfdCBpbmRleCA9IElkZW50aWZpZXI6OnRvVUludDMyKGV4ZWMtPmFyZ3VtZW50KDAp
LnRvU3RyaW5nKGV4ZWMpLT52YWx1ZShleGVjKSwgb2spOwotICAgIGlmIChvaykKKyAgICB1aW50
MzJfdCBpbmRleCA9IHRvVUludDMyRnJvbVN0cmluZ0ltcGwoZXhlYy0+YXJndW1lbnQoMCkudG9T
dHJpbmcoZXhlYyktPnZhbHVlKGV4ZWMpLmltcGwoKSk7CisgICAgaWYgKGluZGV4ICE9IFByb3Bl
cnR5TmFtZTo6Tm90QW5JbmRleCkKICAgICAgICAgcmV0dXJuIHRvSlMoZXhlYywgZ2xvYmFsT2Jq
ZWN0KCksIGltcGwoKS0+aXRlbShpbmRleCkpOwogICAgIHJldHVybiBnZXROYW1lZEl0ZW1zKGV4
ZWMsIHRoaXMsIElkZW50aWZpZXIoZXhlYywgZXhlYy0+YXJndW1lbnQoMCkudG9TdHJpbmcoZXhl
YyktPnZhbHVlKGV4ZWMpKSk7CiB9CkluZGV4OiBTb3VyY2UvV2ViQ29yZS9iaW5kaW5ncy9qcy9K
U0hUTUxBcHBsZXRFbGVtZW50Q3VzdG9tLmNwcAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2ViQ29y
ZS9iaW5kaW5ncy9qcy9KU0hUTUxBcHBsZXRFbGVtZW50Q3VzdG9tLmNwcAkocmV2aXNpb24gMTE2
NjY3KQorKysgU291cmNlL1dlYkNvcmUvYmluZGluZ3MvanMvSlNIVE1MQXBwbGV0RWxlbWVudEN1
c3RvbS5jcHAJKHdvcmtpbmcgY29weSkKQEAgLTMzLDE3ICszMywxNyBAQCBuYW1lc3BhY2UgV2Vi
Q29yZSB7CiAKIHVzaW5nIG5hbWVzcGFjZSBKU0M7CiAKLWJvb2wgSlNIVE1MQXBwbGV0RWxlbWVu
dDo6Z2V0T3duUHJvcGVydHlTbG90RGVsZWdhdGUoRXhlY1N0YXRlKiBleGVjLCBjb25zdCBJZGVu
dGlmaWVyJiBwcm9wZXJ0eU5hbWUsIFByb3BlcnR5U2xvdCYgc2xvdCkKK2Jvb2wgSlNIVE1MQXBw
bGV0RWxlbWVudDo6Z2V0T3duUHJvcGVydHlTbG90RGVsZWdhdGUoRXhlY1N0YXRlKiBleGVjLCBQ
cm9wZXJ0eU5hbWUgcHJvcGVydHlOYW1lLCBQcm9wZXJ0eVNsb3QmIHNsb3QpCiB7CiAgICAgcmV0
dXJuIHJ1bnRpbWVPYmplY3RDdXN0b21HZXRPd25Qcm9wZXJ0eVNsb3QoZXhlYywgcHJvcGVydHlO
YW1lLCBzbG90LCB0aGlzKTsKIH0KIAotYm9vbCBKU0hUTUxBcHBsZXRFbGVtZW50OjpnZXRPd25Q
cm9wZXJ0eURlc2NyaXB0b3JEZWxlZ2F0ZShFeGVjU3RhdGUqIGV4ZWMsIGNvbnN0IElkZW50aWZp
ZXImIHByb3BlcnR5TmFtZSwgUHJvcGVydHlEZXNjcmlwdG9yJiBkZXNjcmlwdG9yKQorYm9vbCBK
U0hUTUxBcHBsZXRFbGVtZW50OjpnZXRPd25Qcm9wZXJ0eURlc2NyaXB0b3JEZWxlZ2F0ZShFeGVj
U3RhdGUqIGV4ZWMsIFByb3BlcnR5TmFtZSBwcm9wZXJ0eU5hbWUsIFByb3BlcnR5RGVzY3JpcHRv
ciYgZGVzY3JpcHRvcikKIHsKICAgICByZXR1cm4gcnVudGltZU9iamVjdEN1c3RvbUdldE93blBy
b3BlcnR5RGVzY3JpcHRvcihleGVjLCBwcm9wZXJ0eU5hbWUsIGRlc2NyaXB0b3IsIHRoaXMpOwog
fQogCi1ib29sIEpTSFRNTEFwcGxldEVsZW1lbnQ6OnB1dERlbGVnYXRlKEV4ZWNTdGF0ZSogZXhl
YywgY29uc3QgSWRlbnRpZmllciYgcHJvcGVydHlOYW1lLCBKU1ZhbHVlIHZhbHVlLCBQdXRQcm9w
ZXJ0eVNsb3QmIHNsb3QpCitib29sIEpTSFRNTEFwcGxldEVsZW1lbnQ6OnB1dERlbGVnYXRlKEV4
ZWNTdGF0ZSogZXhlYywgUHJvcGVydHlOYW1lIHByb3BlcnR5TmFtZSwgSlNWYWx1ZSB2YWx1ZSwg
UHV0UHJvcGVydHlTbG90JiBzbG90KQogewogICAgIHJldHVybiBydW50aW1lT2JqZWN0Q3VzdG9t
UHV0KGV4ZWMsIHByb3BlcnR5TmFtZSwgdmFsdWUsIHRoaXMsIHNsb3QpOwogfQpJbmRleDogU291
cmNlL1dlYkNvcmUvYmluZGluZ3MvanMvSlNIVE1MQ29sbGVjdGlvbkN1c3RvbS5jcHAKPT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PQotLS0gU291cmNlL1dlYkNvcmUvYmluZGluZ3MvanMvSlNIVE1MQ29sbGVjdGlvbkN1c3Rv
bS5jcHAJKHJldmlzaW9uIDExNjY2NykKKysrIFNvdXJjZS9XZWJDb3JlL2JpbmRpbmdzL2pzL0pT
SFRNTENvbGxlY3Rpb25DdXN0b20uY3BwCSh3b3JraW5nIGNvcHkpCkBAIC0zOSwxMCArMzksMTAg
QEAgdXNpbmcgbmFtZXNwYWNlIEpTQzsKIAogbmFtZXNwYWNlIFdlYkNvcmUgewogCi1zdGF0aWMg
SlNWYWx1ZSBnZXROYW1lZEl0ZW1zKEV4ZWNTdGF0ZSogZXhlYywgSlNIVE1MQ29sbGVjdGlvbiog
Y29sbGVjdGlvbiwgY29uc3QgSWRlbnRpZmllciYgcHJvcGVydHlOYW1lKQorc3RhdGljIEpTVmFs
dWUgZ2V0TmFtZWRJdGVtcyhFeGVjU3RhdGUqIGV4ZWMsIEpTSFRNTENvbGxlY3Rpb24qIGNvbGxl
Y3Rpb24sIFByb3BlcnR5TmFtZSBwcm9wZXJ0eU5hbWUpCiB7CiAgICAgVmVjdG9yPFJlZlB0cjxO
b2RlPiA+IG5hbWVkSXRlbXM7Ci0gICAgY29uc3QgQXRvbWljU3RyaW5nJiBuYW1lID0gaWRlbnRp
ZmllclRvQXRvbWljU3RyaW5nKHByb3BlcnR5TmFtZSk7CisgICAgY29uc3QgQXRvbWljU3RyaW5n
JiBuYW1lID0gcHJvcGVydHlOYW1lVG9BdG9taWNTdHJpbmcocHJvcGVydHlOYW1lKTsKICAgICBj
b2xsZWN0aW9uLT5pbXBsKCktPm5hbWVkSXRlbXMobmFtZSwgbmFtZWRJdGVtcyk7CiAKICAgICBp
ZiAobmFtZWRJdGVtcy5pc0VtcHR5KCkpCkBAIC01OSwxMiArNTksMTIgQEAgc3RhdGljIEpTVmFs
dWUgZ2V0TmFtZWRJdGVtcyhFeGVjU3RhdGUqIAogICAgIHJldHVybiB0b0pTKGV4ZWMsIGNvbGxl
Y3Rpb24tPmdsb2JhbE9iamVjdCgpLCBTdGF0aWNOb2RlTGlzdDo6YWRvcHQobmFtZWRJdGVtcyku
Z2V0KCkpOwogfQogCi1ib29sIEpTSFRNTENvbGxlY3Rpb246OmNhbkdldEl0ZW1zRm9yTmFtZShF
eGVjU3RhdGUqLCBIVE1MQ29sbGVjdGlvbiogY29sbGVjdGlvbiwgY29uc3QgSWRlbnRpZmllciYg
cHJvcGVydHlOYW1lKQorYm9vbCBKU0hUTUxDb2xsZWN0aW9uOjpjYW5HZXRJdGVtc0Zvck5hbWUo
RXhlY1N0YXRlKiwgSFRNTENvbGxlY3Rpb24qIGNvbGxlY3Rpb24sIFByb3BlcnR5TmFtZSBwcm9w
ZXJ0eU5hbWUpCiB7Ci0gICAgcmV0dXJuIGNvbGxlY3Rpb24tPmhhc05hbWVkSXRlbShpZGVudGlm
aWVyVG9BdG9taWNTdHJpbmcocHJvcGVydHlOYW1lKSk7CisgICAgcmV0dXJuIGNvbGxlY3Rpb24t
Pmhhc05hbWVkSXRlbShwcm9wZXJ0eU5hbWVUb0F0b21pY1N0cmluZyhwcm9wZXJ0eU5hbWUpKTsK
IH0KIAotSlNWYWx1ZSBKU0hUTUxDb2xsZWN0aW9uOjpuYW1lR2V0dGVyKEV4ZWNTdGF0ZSogZXhl
YywgSlNWYWx1ZSBzbG90QmFzZSwgY29uc3QgSWRlbnRpZmllciYgcHJvcGVydHlOYW1lKQorSlNW
YWx1ZSBKU0hUTUxDb2xsZWN0aW9uOjpuYW1lR2V0dGVyKEV4ZWNTdGF0ZSogZXhlYywgSlNWYWx1
ZSBzbG90QmFzZSwgUHJvcGVydHlOYW1lIHByb3BlcnR5TmFtZSkKIHsKICAgICBKU0hUTUxDb2xs
ZWN0aW9uKiB0aGlzT2JqID0ganNDYXN0PEpTSFRNTENvbGxlY3Rpb24qPihhc09iamVjdChzbG90
QmFzZSkpOwogICAgIHJldHVybiBnZXROYW1lZEl0ZW1zKGV4ZWMsIHRoaXNPYmosIHByb3BlcnR5
TmFtZSk7CkluZGV4OiBTb3VyY2UvV2ViQ29yZS9iaW5kaW5ncy9qcy9KU0hUTUxEb2N1bWVudEN1
c3RvbS5jcHAKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL1dlYkNvcmUvYmluZGluZ3MvanMvSlNIVE1M
RG9jdW1lbnRDdXN0b20uY3BwCShyZXZpc2lvbiAxMTY2NjcpCisrKyBTb3VyY2UvV2ViQ29yZS9i
aW5kaW5ncy9qcy9KU0hUTUxEb2N1bWVudEN1c3RvbS5jcHAJKHdvcmtpbmcgY29weSkKQEAgLTUx
LDE4ICs1MSwxOCBAQCBuYW1lc3BhY2UgV2ViQ29yZSB7CiAKIHVzaW5nIG5hbWVzcGFjZSBIVE1M
TmFtZXM7CiAKLWJvb2wgSlNIVE1MRG9jdW1lbnQ6OmNhbkdldEl0ZW1zRm9yTmFtZShFeGVjU3Rh
dGUqLCBIVE1MRG9jdW1lbnQqIGRvY3VtZW50LCBjb25zdCBJZGVudGlmaWVyJiBwcm9wZXJ0eU5h
bWUpCitib29sIEpTSFRNTERvY3VtZW50OjpjYW5HZXRJdGVtc0Zvck5hbWUoRXhlY1N0YXRlKiwg
SFRNTERvY3VtZW50KiBkb2N1bWVudCwgUHJvcGVydHlOYW1lIHByb3BlcnR5TmFtZSkKIHsKICAg
ICBBdG9taWNTdHJpbmdJbXBsKiBhdG9taWNQcm9wZXJ0eU5hbWUgPSBmaW5kQXRvbWljU3RyaW5n
KHByb3BlcnR5TmFtZSk7CiAgICAgcmV0dXJuIGF0b21pY1Byb3BlcnR5TmFtZSAmJiAoZG9jdW1l
bnQtPmhhc05hbWVkSXRlbShhdG9taWNQcm9wZXJ0eU5hbWUpIHx8IGRvY3VtZW50LT5oYXNFeHRy
YU5hbWVkSXRlbShhdG9taWNQcm9wZXJ0eU5hbWUpKTsKIH0KIAotSlNWYWx1ZSBKU0hUTUxEb2N1
bWVudDo6bmFtZUdldHRlcihFeGVjU3RhdGUqIGV4ZWMsIEpTVmFsdWUgc2xvdEJhc2UsIGNvbnN0
IElkZW50aWZpZXImIHByb3BlcnR5TmFtZSkKK0pTVmFsdWUgSlNIVE1MRG9jdW1lbnQ6Om5hbWVH
ZXR0ZXIoRXhlY1N0YXRlKiBleGVjLCBKU1ZhbHVlIHNsb3RCYXNlLCBQcm9wZXJ0eU5hbWUgcHJv
cGVydHlOYW1lKQogewogICAgIEpTSFRNTERvY3VtZW50KiB0aGlzT2JqID0ganNDYXN0PEpTSFRN
TERvY3VtZW50Kj4oYXNPYmplY3Qoc2xvdEJhc2UpKTsKICAgICBIVE1MRG9jdW1lbnQqIGRvY3Vt
ZW50ID0gc3RhdGljX2Nhc3Q8SFRNTERvY3VtZW50Kj4odGhpc09iai0+aW1wbCgpKTsKIAotICAg
IEhUTUxDb2xsZWN0aW9uKiBjb2xsZWN0aW9uID0gZG9jdW1lbnQtPmRvY3VtZW50TmFtZWRJdGVt
cyhpZGVudGlmaWVyVG9BdG9taWNTdHJpbmcocHJvcGVydHlOYW1lKSk7CisgICAgSFRNTENvbGxl
Y3Rpb24qIGNvbGxlY3Rpb24gPSBkb2N1bWVudC0+ZG9jdW1lbnROYW1lZEl0ZW1zKHByb3BlcnR5
TmFtZVRvQXRvbWljU3RyaW5nKHByb3BlcnR5TmFtZSkpOwogCiAgICAgdW5zaWduZWQgbGVuZ3Ro
ID0gY29sbGVjdGlvbi0+bGVuZ3RoKCk7CiAgICAgaWYgKCFsZW5ndGgpCkluZGV4OiBTb3VyY2Uv
V2ViQ29yZS9iaW5kaW5ncy9qcy9KU0hUTUxFbWJlZEVsZW1lbnRDdXN0b20uY3BwCj09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT0KLS0tIFNvdXJjZS9XZWJDb3JlL2JpbmRpbmdzL2pzL0pTSFRNTEVtYmVkRWxlbWVudEN1c3Rv
bS5jcHAJKHJldmlzaW9uIDExNjY2NykKKysrIFNvdXJjZS9XZWJDb3JlL2JpbmRpbmdzL2pzL0pT
SFRNTEVtYmVkRWxlbWVudEN1c3RvbS5jcHAJKHdvcmtpbmcgY29weSkKQEAgLTMzLDE3ICszMywx
NyBAQCBuYW1lc3BhY2UgV2ViQ29yZSB7CiAKIHVzaW5nIG5hbWVzcGFjZSBKU0M7CiAKLWJvb2wg
SlNIVE1MRW1iZWRFbGVtZW50OjpnZXRPd25Qcm9wZXJ0eVNsb3REZWxlZ2F0ZShFeGVjU3RhdGUq
IGV4ZWMsIGNvbnN0IElkZW50aWZpZXImIHByb3BlcnR5TmFtZSwgUHJvcGVydHlTbG90JiBzbG90
KQorYm9vbCBKU0hUTUxFbWJlZEVsZW1lbnQ6OmdldE93blByb3BlcnR5U2xvdERlbGVnYXRlKEV4
ZWNTdGF0ZSogZXhlYywgUHJvcGVydHlOYW1lIHByb3BlcnR5TmFtZSwgUHJvcGVydHlTbG90JiBz
bG90KQogewogICAgIHJldHVybiBydW50aW1lT2JqZWN0Q3VzdG9tR2V0T3duUHJvcGVydHlTbG90
KGV4ZWMsIHByb3BlcnR5TmFtZSwgc2xvdCwgdGhpcyk7CiB9CiAKLWJvb2wgSlNIVE1MRW1iZWRF
bGVtZW50OjpnZXRPd25Qcm9wZXJ0eURlc2NyaXB0b3JEZWxlZ2F0ZShFeGVjU3RhdGUqIGV4ZWMs
IGNvbnN0IElkZW50aWZpZXImIHByb3BlcnR5TmFtZSwgUHJvcGVydHlEZXNjcmlwdG9yJiBkZXNj
cmlwdG9yKQorYm9vbCBKU0hUTUxFbWJlZEVsZW1lbnQ6OmdldE93blByb3BlcnR5RGVzY3JpcHRv
ckRlbGVnYXRlKEV4ZWNTdGF0ZSogZXhlYywgUHJvcGVydHlOYW1lIHByb3BlcnR5TmFtZSwgUHJv
cGVydHlEZXNjcmlwdG9yJiBkZXNjcmlwdG9yKQogewogICAgIHJldHVybiBydW50aW1lT2JqZWN0
Q3VzdG9tR2V0T3duUHJvcGVydHlEZXNjcmlwdG9yKGV4ZWMsIHByb3BlcnR5TmFtZSwgZGVzY3Jp
cHRvciwgdGhpcyk7CiB9CiAKLWJvb2wgSlNIVE1MRW1iZWRFbGVtZW50OjpwdXREZWxlZ2F0ZShF
eGVjU3RhdGUqIGV4ZWMsIGNvbnN0IElkZW50aWZpZXImIHByb3BlcnR5TmFtZSwgSlNWYWx1ZSB2
YWx1ZSwgUHV0UHJvcGVydHlTbG90JiBzbG90KQorYm9vbCBKU0hUTUxFbWJlZEVsZW1lbnQ6OnB1
dERlbGVnYXRlKEV4ZWNTdGF0ZSogZXhlYywgUHJvcGVydHlOYW1lIHByb3BlcnR5TmFtZSwgSlNW
YWx1ZSB2YWx1ZSwgUHV0UHJvcGVydHlTbG90JiBzbG90KQogewogICAgIHJldHVybiBydW50aW1l
T2JqZWN0Q3VzdG9tUHV0KGV4ZWMsIHByb3BlcnR5TmFtZSwgdmFsdWUsIHRoaXMsIHNsb3QpOwog
fQpJbmRleDogU291cmNlL1dlYkNvcmUvYmluZGluZ3MvanMvSlNIVE1MRm9ybUVsZW1lbnRDdXN0
b20uY3BwCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9XZWJDb3JlL2JpbmRpbmdzL2pzL0pTSFRNTEZv
cm1FbGVtZW50Q3VzdG9tLmNwcAkocmV2aXNpb24gMTE2NjY3KQorKysgU291cmNlL1dlYkNvcmUv
YmluZGluZ3MvanMvSlNIVE1MRm9ybUVsZW1lbnRDdXN0b20uY3BwCSh3b3JraW5nIGNvcHkpCkBA
IC0zNywyMCArMzcsMjAgQEAgdXNpbmcgbmFtZXNwYWNlIEpTQzsKIAogbmFtZXNwYWNlIFdlYkNv
cmUgewogCi1ib29sIEpTSFRNTEZvcm1FbGVtZW50OjpjYW5HZXRJdGVtc0Zvck5hbWUoRXhlY1N0
YXRlKiwgSFRNTEZvcm1FbGVtZW50KiBmb3JtLCBjb25zdCBJZGVudGlmaWVyJiBwcm9wZXJ0eU5h
bWUpCitib29sIEpTSFRNTEZvcm1FbGVtZW50OjpjYW5HZXRJdGVtc0Zvck5hbWUoRXhlY1N0YXRl
KiwgSFRNTEZvcm1FbGVtZW50KiBmb3JtLCBQcm9wZXJ0eU5hbWUgcHJvcGVydHlOYW1lKQogewog
ICAgIFZlY3RvcjxSZWZQdHI8Tm9kZT4gPiBuYW1lZEl0ZW1zOwotICAgIGZvcm0tPmdldE5hbWVk
RWxlbWVudHMoaWRlbnRpZmllclRvQXRvbWljU3RyaW5nKHByb3BlcnR5TmFtZSksIG5hbWVkSXRl
bXMpOworICAgIGZvcm0tPmdldE5hbWVkRWxlbWVudHMocHJvcGVydHlOYW1lVG9BdG9taWNTdHJp
bmcocHJvcGVydHlOYW1lKSwgbmFtZWRJdGVtcyk7CiAgICAgcmV0dXJuIG5hbWVkSXRlbXMuc2l6
ZSgpOwogfQogCi1KU1ZhbHVlIEpTSFRNTEZvcm1FbGVtZW50OjpuYW1lR2V0dGVyKEV4ZWNTdGF0
ZSogZXhlYywgSlNWYWx1ZSBzbG90QmFzZSwgY29uc3QgSWRlbnRpZmllciYgcHJvcGVydHlOYW1l
KQorSlNWYWx1ZSBKU0hUTUxGb3JtRWxlbWVudDo6bmFtZUdldHRlcihFeGVjU3RhdGUqIGV4ZWMs
IEpTVmFsdWUgc2xvdEJhc2UsIFByb3BlcnR5TmFtZSBwcm9wZXJ0eU5hbWUpCiB7CiAgICAgSlNI
VE1MRWxlbWVudCoganNGb3JtID0ganNDYXN0PEpTSFRNTEZvcm1FbGVtZW50Kj4oYXNPYmplY3Qo
c2xvdEJhc2UpKTsKICAgICBIVE1MRm9ybUVsZW1lbnQqIGZvcm0gPSBzdGF0aWNfY2FzdDxIVE1M
Rm9ybUVsZW1lbnQqPihqc0Zvcm0tPmltcGwoKSk7CiAKICAgICBWZWN0b3I8UmVmUHRyPE5vZGU+
ID4gbmFtZWRJdGVtczsKLSAgICBmb3JtLT5nZXROYW1lZEVsZW1lbnRzKGlkZW50aWZpZXJUb0F0
b21pY1N0cmluZyhwcm9wZXJ0eU5hbWUpLCBuYW1lZEl0ZW1zKTsKKyAgICBmb3JtLT5nZXROYW1l
ZEVsZW1lbnRzKHByb3BlcnR5TmFtZVRvQXRvbWljU3RyaW5nKHByb3BlcnR5TmFtZSksIG5hbWVk
SXRlbXMpOwogICAgIAogICAgIGlmIChuYW1lZEl0ZW1zLmlzRW1wdHkoKSkKICAgICAgICAgcmV0
dXJuIGpzVW5kZWZpbmVkKCk7CkluZGV4OiBTb3VyY2UvV2ViQ29yZS9iaW5kaW5ncy9qcy9KU0hU
TUxGcmFtZVNldEVsZW1lbnRDdXN0b20uY3BwCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9XZWJDb3Jl
L2JpbmRpbmdzL2pzL0pTSFRNTEZyYW1lU2V0RWxlbWVudEN1c3RvbS5jcHAJKHJldmlzaW9uIDEx
NjY2NykKKysrIFNvdXJjZS9XZWJDb3JlL2JpbmRpbmdzL2pzL0pTSFRNTEZyYW1lU2V0RWxlbWVu
dEN1c3RvbS5jcHAJKHdvcmtpbmcgY29weSkKQEAgLTQxLDE2ICs0MSwxNiBAQCBuYW1lc3BhY2Ug
V2ViQ29yZSB7CiAKIHVzaW5nIG5hbWVzcGFjZSBIVE1MTmFtZXM7CiAKLWJvb2wgSlNIVE1MRnJh
bWVTZXRFbGVtZW50OjpjYW5HZXRJdGVtc0Zvck5hbWUoRXhlY1N0YXRlKiwgSFRNTEZyYW1lU2V0
RWxlbWVudCogZnJhbWVTZXQsIGNvbnN0IElkZW50aWZpZXImIHByb3BlcnR5TmFtZSkKK2Jvb2wg
SlNIVE1MRnJhbWVTZXRFbGVtZW50OjpjYW5HZXRJdGVtc0Zvck5hbWUoRXhlY1N0YXRlKiwgSFRN
TEZyYW1lU2V0RWxlbWVudCogZnJhbWVTZXQsIFByb3BlcnR5TmFtZSBwcm9wZXJ0eU5hbWUpCiB7
Ci0gICAgTm9kZSogZnJhbWUgPSBmcmFtZVNldC0+Y2hpbGRyZW4oKS0+bmFtZWRJdGVtKGlkZW50
aWZpZXJUb0F0b21pY1N0cmluZyhwcm9wZXJ0eU5hbWUpKTsKKyAgICBOb2RlKiBmcmFtZSA9IGZy
YW1lU2V0LT5jaGlsZHJlbigpLT5uYW1lZEl0ZW0ocHJvcGVydHlOYW1lVG9BdG9taWNTdHJpbmco
cHJvcGVydHlOYW1lKSk7CiAgICAgcmV0dXJuIGZyYW1lICYmIGZyYW1lLT5oYXNUYWdOYW1lKGZy
YW1lVGFnKTsKIH0KIAotSlNWYWx1ZSBKU0hUTUxGcmFtZVNldEVsZW1lbnQ6Om5hbWVHZXR0ZXIo
RXhlY1N0YXRlKiBleGVjLCBKU1ZhbHVlIHNsb3RCYXNlLCBjb25zdCBJZGVudGlmaWVyJiBwcm9w
ZXJ0eU5hbWUpCitKU1ZhbHVlIEpTSFRNTEZyYW1lU2V0RWxlbWVudDo6bmFtZUdldHRlcihFeGVj
U3RhdGUqIGV4ZWMsIEpTVmFsdWUgc2xvdEJhc2UsIFByb3BlcnR5TmFtZSBwcm9wZXJ0eU5hbWUp
CiB7CiAgICAgSFRNTEVsZW1lbnQqIGVsZW1lbnQgPSBqc0Nhc3Q8SlNIVE1MRWxlbWVudCo+KGFz
T2JqZWN0KHNsb3RCYXNlKSktPmltcGwoKTsKLSAgICBOb2RlKiBmcmFtZUVsZW1lbnQgPSBlbGVt
ZW50LT5jaGlsZHJlbigpLT5uYW1lZEl0ZW0oaWRlbnRpZmllclRvQXRvbWljU3RyaW5nKHByb3Bl
cnR5TmFtZSkpOworICAgIE5vZGUqIGZyYW1lRWxlbWVudCA9IGVsZW1lbnQtPmNoaWxkcmVuKCkt
Pm5hbWVkSXRlbShwcm9wZXJ0eU5hbWVUb0F0b21pY1N0cmluZyhwcm9wZXJ0eU5hbWUpKTsKICAg
ICBpZiAoRG9jdW1lbnQqIGRvY3VtZW50ID0gc3RhdGljX2Nhc3Q8SFRNTEZyYW1lRWxlbWVudCo+
KGZyYW1lRWxlbWVudCktPmNvbnRlbnREb2N1bWVudCgpKSB7CiAgICAgICAgIGlmIChKU0RPTVdp
bmRvd1NoZWxsKiB3aW5kb3cgPSB0b0pTRE9NV2luZG93U2hlbGwoZG9jdW1lbnQtPmZyYW1lKCks
IGN1cnJlbnRXb3JsZChleGVjKSkpCiAgICAgICAgICAgICByZXR1cm4gd2luZG93OwpJbmRleDog
U291cmNlL1dlYkNvcmUvYmluZGluZ3MvanMvSlNIVE1MT2JqZWN0RWxlbWVudEN1c3RvbS5jcHAK
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PQotLS0gU291cmNlL1dlYkNvcmUvYmluZGluZ3MvanMvSlNIVE1MT2JqZWN0RWxl
bWVudEN1c3RvbS5jcHAJKHJldmlzaW9uIDExNjY2NykKKysrIFNvdXJjZS9XZWJDb3JlL2JpbmRp
bmdzL2pzL0pTSFRNTE9iamVjdEVsZW1lbnRDdXN0b20uY3BwCSh3b3JraW5nIGNvcHkpCkBAIC0z
MywxNyArMzMsMTcgQEAgbmFtZXNwYWNlIFdlYkNvcmUgewogCiB1c2luZyBuYW1lc3BhY2UgSlND
OwogCi1ib29sIEpTSFRNTE9iamVjdEVsZW1lbnQ6OmdldE93blByb3BlcnR5U2xvdERlbGVnYXRl
KEV4ZWNTdGF0ZSogZXhlYywgY29uc3QgSWRlbnRpZmllciYgcHJvcGVydHlOYW1lLCBQcm9wZXJ0
eVNsb3QmIHNsb3QpCitib29sIEpTSFRNTE9iamVjdEVsZW1lbnQ6OmdldE93blByb3BlcnR5U2xv
dERlbGVnYXRlKEV4ZWNTdGF0ZSogZXhlYywgUHJvcGVydHlOYW1lIHByb3BlcnR5TmFtZSwgUHJv
cGVydHlTbG90JiBzbG90KQogewogICAgIHJldHVybiBydW50aW1lT2JqZWN0Q3VzdG9tR2V0T3du
UHJvcGVydHlTbG90KGV4ZWMsIHByb3BlcnR5TmFtZSwgc2xvdCwgdGhpcyk7CiB9CiAKLWJvb2wg
SlNIVE1MT2JqZWN0RWxlbWVudDo6Z2V0T3duUHJvcGVydHlEZXNjcmlwdG9yRGVsZWdhdGUoRXhl
Y1N0YXRlKiBleGVjLCBjb25zdCBJZGVudGlmaWVyJiBwcm9wZXJ0eU5hbWUsIFByb3BlcnR5RGVz
Y3JpcHRvciYgZGVzY3JpcHRvcikKK2Jvb2wgSlNIVE1MT2JqZWN0RWxlbWVudDo6Z2V0T3duUHJv
cGVydHlEZXNjcmlwdG9yRGVsZWdhdGUoRXhlY1N0YXRlKiBleGVjLCBQcm9wZXJ0eU5hbWUgcHJv
cGVydHlOYW1lLCBQcm9wZXJ0eURlc2NyaXB0b3ImIGRlc2NyaXB0b3IpCiB7CiAgICAgcmV0dXJu
IHJ1bnRpbWVPYmplY3RDdXN0b21HZXRPd25Qcm9wZXJ0eURlc2NyaXB0b3IoZXhlYywgcHJvcGVy
dHlOYW1lLCBkZXNjcmlwdG9yLCB0aGlzKTsKIH0KIAotYm9vbCBKU0hUTUxPYmplY3RFbGVtZW50
OjpwdXREZWxlZ2F0ZShFeGVjU3RhdGUqIGV4ZWMsIGNvbnN0IElkZW50aWZpZXImIHByb3BlcnR5
TmFtZSwgSlNWYWx1ZSB2YWx1ZSwgUHV0UHJvcGVydHlTbG90JiBzbG90KQorYm9vbCBKU0hUTUxP
YmplY3RFbGVtZW50OjpwdXREZWxlZ2F0ZShFeGVjU3RhdGUqIGV4ZWMsIFByb3BlcnR5TmFtZSBw
cm9wZXJ0eU5hbWUsIEpTVmFsdWUgdmFsdWUsIFB1dFByb3BlcnR5U2xvdCYgc2xvdCkKIHsKICAg
ICByZXR1cm4gcnVudGltZU9iamVjdEN1c3RvbVB1dChleGVjLCBwcm9wZXJ0eU5hbWUsIHZhbHVl
LCB0aGlzLCBzbG90KTsKIH0KSW5kZXg6IFNvdXJjZS9XZWJDb3JlL2JpbmRpbmdzL2pzL0pTSGlz
dG9yeUN1c3RvbS5jcHAKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL1dlYkNvcmUvYmluZGluZ3MvanMv
SlNIaXN0b3J5Q3VzdG9tLmNwcAkocmV2aXNpb24gMTE2NjY3KQorKysgU291cmNlL1dlYkNvcmUv
YmluZGluZ3MvanMvSlNIaXN0b3J5Q3VzdG9tLmNwcAkod29ya2luZyBjb3B5KQpAQCAtMzgsMjIg
KzM4LDIyIEBAIHVzaW5nIG5hbWVzcGFjZSBKU0M7CiAKIG5hbWVzcGFjZSBXZWJDb3JlIHsKIAot
c3RhdGljIEpTVmFsdWUgbm9uQ2FjaGluZ1N0YXRpY0JhY2tGdW5jdGlvbkdldHRlcihFeGVjU3Rh
dGUqIGV4ZWMsIEpTVmFsdWUsIGNvbnN0IElkZW50aWZpZXImIHByb3BlcnR5TmFtZSkKK3N0YXRp
YyBKU1ZhbHVlIG5vbkNhY2hpbmdTdGF0aWNCYWNrRnVuY3Rpb25HZXR0ZXIoRXhlY1N0YXRlKiBl
eGVjLCBKU1ZhbHVlLCBQcm9wZXJ0eU5hbWUgcHJvcGVydHlOYW1lKQogewotICAgIHJldHVybiBK
U0Z1bmN0aW9uOjpjcmVhdGUoZXhlYywgZXhlYy0+bGV4aWNhbEdsb2JhbE9iamVjdCgpLCAwLCBw
cm9wZXJ0eU5hbWUsIGpzSGlzdG9yeVByb3RvdHlwZUZ1bmN0aW9uQmFjayk7CisgICAgcmV0dXJu
IEpTRnVuY3Rpb246OmNyZWF0ZShleGVjLCBleGVjLT5sZXhpY2FsR2xvYmFsT2JqZWN0KCksIDAs
IHByb3BlcnR5TmFtZS5pbXBsKCksIGpzSGlzdG9yeVByb3RvdHlwZUZ1bmN0aW9uQmFjayk7CiB9
CiAKLXN0YXRpYyBKU1ZhbHVlIG5vbkNhY2hpbmdTdGF0aWNGb3J3YXJkRnVuY3Rpb25HZXR0ZXIo
RXhlY1N0YXRlKiBleGVjLCBKU1ZhbHVlLCBjb25zdCBJZGVudGlmaWVyJiBwcm9wZXJ0eU5hbWUp
CitzdGF0aWMgSlNWYWx1ZSBub25DYWNoaW5nU3RhdGljRm9yd2FyZEZ1bmN0aW9uR2V0dGVyKEV4
ZWNTdGF0ZSogZXhlYywgSlNWYWx1ZSwgUHJvcGVydHlOYW1lIHByb3BlcnR5TmFtZSkKIHsKLSAg
ICByZXR1cm4gSlNGdW5jdGlvbjo6Y3JlYXRlKGV4ZWMsIGV4ZWMtPmxleGljYWxHbG9iYWxPYmpl
Y3QoKSwgMCwgcHJvcGVydHlOYW1lLCBqc0hpc3RvcnlQcm90b3R5cGVGdW5jdGlvbkZvcndhcmQp
OworICAgIHJldHVybiBKU0Z1bmN0aW9uOjpjcmVhdGUoZXhlYywgZXhlYy0+bGV4aWNhbEdsb2Jh
bE9iamVjdCgpLCAwLCBwcm9wZXJ0eU5hbWUuaW1wbCgpLCBqc0hpc3RvcnlQcm90b3R5cGVGdW5j
dGlvbkZvcndhcmQpOwogfQogCi1zdGF0aWMgSlNWYWx1ZSBub25DYWNoaW5nU3RhdGljR29GdW5j
dGlvbkdldHRlcihFeGVjU3RhdGUqIGV4ZWMsIEpTVmFsdWUsIGNvbnN0IElkZW50aWZpZXImIHBy
b3BlcnR5TmFtZSkKK3N0YXRpYyBKU1ZhbHVlIG5vbkNhY2hpbmdTdGF0aWNHb0Z1bmN0aW9uR2V0
dGVyKEV4ZWNTdGF0ZSogZXhlYywgSlNWYWx1ZSwgUHJvcGVydHlOYW1lIHByb3BlcnR5TmFtZSkK
IHsKLSAgICByZXR1cm4gSlNGdW5jdGlvbjo6Y3JlYXRlKGV4ZWMsIGV4ZWMtPmxleGljYWxHbG9i
YWxPYmplY3QoKSwgMSwgcHJvcGVydHlOYW1lLCBqc0hpc3RvcnlQcm90b3R5cGVGdW5jdGlvbkdv
KTsKKyAgICByZXR1cm4gSlNGdW5jdGlvbjo6Y3JlYXRlKGV4ZWMsIGV4ZWMtPmxleGljYWxHbG9i
YWxPYmplY3QoKSwgMSwgcHJvcGVydHlOYW1lLmltcGwoKSwganNIaXN0b3J5UHJvdG90eXBlRnVu
Y3Rpb25Hbyk7CiB9CiAKLWJvb2wgSlNIaXN0b3J5OjpnZXRPd25Qcm9wZXJ0eVNsb3REZWxlZ2F0
ZShFeGVjU3RhdGUqIGV4ZWMsIGNvbnN0IElkZW50aWZpZXImIHByb3BlcnR5TmFtZSwgUHJvcGVy
dHlTbG90JiBzbG90KQorYm9vbCBKU0hpc3Rvcnk6OmdldE93blByb3BlcnR5U2xvdERlbGVnYXRl
KEV4ZWNTdGF0ZSogZXhlYywgUHJvcGVydHlOYW1lIHByb3BlcnR5TmFtZSwgUHJvcGVydHlTbG90
JiBzbG90KQogewogICAgIC8vIFdoZW4gYWNjZXNzaW5nIEhpc3RvcnkgY3Jvc3MtZG9tYWluLCBm
dW5jdGlvbnMgYXJlIGFsd2F5cyB0aGUgbmF0aXZlIGJ1aWx0LWluIG9uZXMuCiAgICAgLy8gU2Vl
IEpTRE9NV2luZG93OjpnZXRPd25Qcm9wZXJ0eVNsb3REZWxlZ2F0ZSBmb3IgYWRkaXRpb25hbCBk
ZXRhaWxzLgpAQCAtOTMsNyArOTMsNyBAQCBib29sIEpTSGlzdG9yeTo6Z2V0T3duUHJvcGVydHlT
bG90RGVsZWdhCiAgICAgcmV0dXJuIHRydWU7CiB9CiAKLWJvb2wgSlNIaXN0b3J5OjpnZXRPd25Q
cm9wZXJ0eURlc2NyaXB0b3JEZWxlZ2F0ZShFeGVjU3RhdGUqIGV4ZWMsIGNvbnN0IElkZW50aWZp
ZXImIHByb3BlcnR5TmFtZSwgUHJvcGVydHlEZXNjcmlwdG9yJiBkZXNjcmlwdG9yKQorYm9vbCBK
U0hpc3Rvcnk6OmdldE93blByb3BlcnR5RGVzY3JpcHRvckRlbGVnYXRlKEV4ZWNTdGF0ZSogZXhl
YywgUHJvcGVydHlOYW1lIHByb3BlcnR5TmFtZSwgUHJvcGVydHlEZXNjcmlwdG9yJiBkZXNjcmlw
dG9yKQogewogICAgIGlmICghaW1wbCgpLT5mcmFtZSgpKSB7CiAgICAgICAgIGRlc2NyaXB0b3Iu
c2V0VW5kZWZpbmVkKCk7CkBAIC0xMzgsNyArMTM4LDcgQEAgYm9vbCBKU0hpc3Rvcnk6OmdldE93
blByb3BlcnR5RGVzY3JpcHRvcgogICAgIHJldHVybiB0cnVlOwogfQogCi1ib29sIEpTSGlzdG9y
eTo6cHV0RGVsZWdhdGUoRXhlY1N0YXRlKiBleGVjLCBjb25zdCBJZGVudGlmaWVyJiwgSlNWYWx1
ZSwgUHV0UHJvcGVydHlTbG90JikKK2Jvb2wgSlNIaXN0b3J5OjpwdXREZWxlZ2F0ZShFeGVjU3Rh
dGUqIGV4ZWMsIFByb3BlcnR5TmFtZSwgSlNWYWx1ZSwgUHV0UHJvcGVydHlTbG90JikKIHsKICAg
ICAvLyBPbmx5IGFsbG93IHB1dHRpbmcgYnkgZnJhbWVzIGluIHRoZSBzYW1lIG9yaWdpbi4KICAg
ICBpZiAoIXNob3VsZEFsbG93QWNjZXNzVG9GcmFtZShleGVjLCBpbXBsKCktPmZyYW1lKCkpKQpA
QCAtMTQ2LDcgKzE0Niw3IEBAIGJvb2wgSlNIaXN0b3J5OjpwdXREZWxlZ2F0ZShFeGVjU3RhdGUq
IGUKICAgICByZXR1cm4gZmFsc2U7CiB9CiAKLWJvb2wgSlNIaXN0b3J5OjpkZWxldGVQcm9wZXJ0
eShKU0NlbGwqIGNlbGwsIEV4ZWNTdGF0ZSogZXhlYywgY29uc3QgSWRlbnRpZmllciYgcHJvcGVy
dHlOYW1lKQorYm9vbCBKU0hpc3Rvcnk6OmRlbGV0ZVByb3BlcnR5KEpTQ2VsbCogY2VsbCwgRXhl
Y1N0YXRlKiBleGVjLCBQcm9wZXJ0eU5hbWUgcHJvcGVydHlOYW1lKQogewogICAgIEpTSGlzdG9y
eSogdGhpc09iamVjdCA9IGpzQ2FzdDxKU0hpc3RvcnkqPihjZWxsKTsKICAgICAvLyBPbmx5IGFs
bG93IGRlbGV0aW5nIGJ5IGZyYW1lcyBpbiB0aGUgc2FtZSBvcmlnaW4uCkluZGV4OiBTb3VyY2Uv
V2ViQ29yZS9iaW5kaW5ncy9qcy9KU0xvY2F0aW9uQ3VzdG9tLmNwcAo9PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBT
b3VyY2UvV2ViQ29yZS9iaW5kaW5ncy9qcy9KU0xvY2F0aW9uQ3VzdG9tLmNwcAkocmV2aXNpb24g
MTE2NjY3KQorKysgU291cmNlL1dlYkNvcmUvYmluZGluZ3MvanMvSlNMb2NhdGlvbkN1c3RvbS5j
cHAJKHdvcmtpbmcgY29weSkKQEAgLTMwLDIyICszMCwyMiBAQCB1c2luZyBuYW1lc3BhY2UgSlND
OwogCiBuYW1lc3BhY2UgV2ViQ29yZSB7CiAKLXN0YXRpYyBKU1ZhbHVlIG5vbkNhY2hpbmdTdGF0
aWNSZXBsYWNlRnVuY3Rpb25HZXR0ZXIoRXhlY1N0YXRlKiBleGVjLCBKU1ZhbHVlLCBjb25zdCBJ
ZGVudGlmaWVyJiBwcm9wZXJ0eU5hbWUpCitzdGF0aWMgSlNWYWx1ZSBub25DYWNoaW5nU3RhdGlj
UmVwbGFjZUZ1bmN0aW9uR2V0dGVyKEV4ZWNTdGF0ZSogZXhlYywgSlNWYWx1ZSwgUHJvcGVydHlO
YW1lIHByb3BlcnR5TmFtZSkKIHsKLSAgICByZXR1cm4gSlNGdW5jdGlvbjo6Y3JlYXRlKGV4ZWMs
IGV4ZWMtPmxleGljYWxHbG9iYWxPYmplY3QoKSwgMSwgcHJvcGVydHlOYW1lLCBqc0xvY2F0aW9u
UHJvdG90eXBlRnVuY3Rpb25SZXBsYWNlKTsKKyAgICByZXR1cm4gSlNGdW5jdGlvbjo6Y3JlYXRl
KGV4ZWMsIGV4ZWMtPmxleGljYWxHbG9iYWxPYmplY3QoKSwgMSwgcHJvcGVydHlOYW1lLmltcGwo
KSwganNMb2NhdGlvblByb3RvdHlwZUZ1bmN0aW9uUmVwbGFjZSk7CiB9CiAKLXN0YXRpYyBKU1Zh
bHVlIG5vbkNhY2hpbmdTdGF0aWNSZWxvYWRGdW5jdGlvbkdldHRlcihFeGVjU3RhdGUqIGV4ZWMs
IEpTVmFsdWUsIGNvbnN0IElkZW50aWZpZXImIHByb3BlcnR5TmFtZSkKK3N0YXRpYyBKU1ZhbHVl
IG5vbkNhY2hpbmdTdGF0aWNSZWxvYWRGdW5jdGlvbkdldHRlcihFeGVjU3RhdGUqIGV4ZWMsIEpT
VmFsdWUsIFByb3BlcnR5TmFtZSBwcm9wZXJ0eU5hbWUpCiB7Ci0gICAgcmV0dXJuIEpTRnVuY3Rp
b246OmNyZWF0ZShleGVjLCBleGVjLT5sZXhpY2FsR2xvYmFsT2JqZWN0KCksIDAsIHByb3BlcnR5
TmFtZSwganNMb2NhdGlvblByb3RvdHlwZUZ1bmN0aW9uUmVsb2FkKTsKKyAgICByZXR1cm4gSlNG
dW5jdGlvbjo6Y3JlYXRlKGV4ZWMsIGV4ZWMtPmxleGljYWxHbG9iYWxPYmplY3QoKSwgMCwgcHJv
cGVydHlOYW1lLmltcGwoKSwganNMb2NhdGlvblByb3RvdHlwZUZ1bmN0aW9uUmVsb2FkKTsKIH0K
IAotc3RhdGljIEpTVmFsdWUgbm9uQ2FjaGluZ1N0YXRpY0Fzc2lnbkZ1bmN0aW9uR2V0dGVyKEV4
ZWNTdGF0ZSogZXhlYywgSlNWYWx1ZSwgY29uc3QgSWRlbnRpZmllciYgcHJvcGVydHlOYW1lKQor
c3RhdGljIEpTVmFsdWUgbm9uQ2FjaGluZ1N0YXRpY0Fzc2lnbkZ1bmN0aW9uR2V0dGVyKEV4ZWNT
dGF0ZSogZXhlYywgSlNWYWx1ZSwgUHJvcGVydHlOYW1lIHByb3BlcnR5TmFtZSkKIHsKLSAgICBy
ZXR1cm4gSlNGdW5jdGlvbjo6Y3JlYXRlKGV4ZWMsIGV4ZWMtPmxleGljYWxHbG9iYWxPYmplY3Qo
KSwgMSwgcHJvcGVydHlOYW1lLCBqc0xvY2F0aW9uUHJvdG90eXBlRnVuY3Rpb25Bc3NpZ24pOwor
ICAgIHJldHVybiBKU0Z1bmN0aW9uOjpjcmVhdGUoZXhlYywgZXhlYy0+bGV4aWNhbEdsb2JhbE9i
amVjdCgpLCAxLCBwcm9wZXJ0eU5hbWUuaW1wbCgpLCBqc0xvY2F0aW9uUHJvdG90eXBlRnVuY3Rp
b25Bc3NpZ24pOwogfQogCi1ib29sIEpTTG9jYXRpb246OmdldE93blByb3BlcnR5U2xvdERlbGVn
YXRlKEV4ZWNTdGF0ZSogZXhlYywgY29uc3QgSWRlbnRpZmllciYgcHJvcGVydHlOYW1lLCBQcm9w
ZXJ0eVNsb3QmIHNsb3QpCitib29sIEpTTG9jYXRpb246OmdldE93blByb3BlcnR5U2xvdERlbGVn
YXRlKEV4ZWNTdGF0ZSogZXhlYywgUHJvcGVydHlOYW1lIHByb3BlcnR5TmFtZSwgUHJvcGVydHlT
bG90JiBzbG90KQogewogICAgIEZyYW1lKiBmcmFtZSA9IGltcGwoKS0+ZnJhbWUoKTsKICAgICBp
ZiAoIWZyYW1lKSB7CkBAIC04Niw3ICs4Niw3IEBAIGJvb2wgSlNMb2NhdGlvbjo6Z2V0T3duUHJv
cGVydHlTbG90RGVsZWcKICAgICByZXR1cm4gdHJ1ZTsKIH0KIAotYm9vbCBKU0xvY2F0aW9uOjpn
ZXRPd25Qcm9wZXJ0eURlc2NyaXB0b3JEZWxlZ2F0ZShFeGVjU3RhdGUqIGV4ZWMsIGNvbnN0IElk
ZW50aWZpZXImIHByb3BlcnR5TmFtZSwgUHJvcGVydHlEZXNjcmlwdG9yJiBkZXNjcmlwdG9yKQor
Ym9vbCBKU0xvY2F0aW9uOjpnZXRPd25Qcm9wZXJ0eURlc2NyaXB0b3JEZWxlZ2F0ZShFeGVjU3Rh
dGUqIGV4ZWMsIFByb3BlcnR5TmFtZSBwcm9wZXJ0eU5hbWUsIFByb3BlcnR5RGVzY3JpcHRvciYg
ZGVzY3JpcHRvcikKIHsKICAgICBGcmFtZSogZnJhbWUgPSBpbXBsKCktPmZyYW1lKCk7CiAgICAg
aWYgKCFmcmFtZSkgewpAQCAtMTI1LDcgKzEyNSw3IEBAIGJvb2wgSlNMb2NhdGlvbjo6Z2V0T3du
UHJvcGVydHlEZXNjcmlwdG8KICAgICByZXR1cm4gdHJ1ZTsKIH0KIAotYm9vbCBKU0xvY2F0aW9u
OjpwdXREZWxlZ2F0ZShFeGVjU3RhdGUqIGV4ZWMsIGNvbnN0IElkZW50aWZpZXImIHByb3BlcnR5
TmFtZSwgSlNWYWx1ZSB2YWx1ZSwgUHV0UHJvcGVydHlTbG90JiBzbG90KQorYm9vbCBKU0xvY2F0
aW9uOjpwdXREZWxlZ2F0ZShFeGVjU3RhdGUqIGV4ZWMsIFByb3BlcnR5TmFtZSBwcm9wZXJ0eU5h
bWUsIEpTVmFsdWUgdmFsdWUsIFB1dFByb3BlcnR5U2xvdCYgc2xvdCkKIHsKICAgICBGcmFtZSog
ZnJhbWUgPSBpbXBsKCktPmZyYW1lKCk7CiAgICAgaWYgKCFmcmFtZSkKQEAgLTE1Miw3ICsxNTIs
NyBAQCBib29sIEpTTG9jYXRpb246OnB1dERlbGVnYXRlKEV4ZWNTdGF0ZSogCiAgICAgcmV0dXJu
IGZhbHNlOwogfQogCi1ib29sIEpTTG9jYXRpb246OmRlbGV0ZVByb3BlcnR5KEpTQ2VsbCogY2Vs
bCwgRXhlY1N0YXRlKiBleGVjLCBjb25zdCBJZGVudGlmaWVyJiBwcm9wZXJ0eU5hbWUpCitib29s
IEpTTG9jYXRpb246OmRlbGV0ZVByb3BlcnR5KEpTQ2VsbCogY2VsbCwgRXhlY1N0YXRlKiBleGVj
LCBQcm9wZXJ0eU5hbWUgcHJvcGVydHlOYW1lKQogewogICAgIEpTTG9jYXRpb24qIHRoaXNPYmpl
Y3QgPSBqc0Nhc3Q8SlNMb2NhdGlvbio+KGNlbGwpOwogICAgIC8vIE9ubHkgYWxsb3cgZGVsZXRp
bmcgYnkgZnJhbWVzIGluIHRoZSBzYW1lIG9yaWdpbi4KQEAgLTE3MCw3ICsxNzAsNyBAQCB2b2lk
IEpTTG9jYXRpb246OmdldE93blByb3BlcnR5TmFtZXMoSlNPCiAgICAgQmFzZTo6Z2V0T3duUHJv
cGVydHlOYW1lcyh0aGlzT2JqZWN0LCBleGVjLCBwcm9wZXJ0eU5hbWVzLCBtb2RlKTsKIH0KIAot
Ym9vbCBKU0xvY2F0aW9uOjpkZWZpbmVPd25Qcm9wZXJ0eShKU09iamVjdCogb2JqZWN0LCBFeGVj
U3RhdGUqIGV4ZWMsIGNvbnN0IElkZW50aWZpZXImIHByb3BlcnR5TmFtZSwgUHJvcGVydHlEZXNj
cmlwdG9yJiBkZXNjcmlwdG9yLCBib29sIHRocm93RXhjZXB0aW9uKQorYm9vbCBKU0xvY2F0aW9u
OjpkZWZpbmVPd25Qcm9wZXJ0eShKU09iamVjdCogb2JqZWN0LCBFeGVjU3RhdGUqIGV4ZWMsIFBy
b3BlcnR5TmFtZSBwcm9wZXJ0eU5hbWUsIFByb3BlcnR5RGVzY3JpcHRvciYgZGVzY3JpcHRvciwg
Ym9vbCB0aHJvd0V4Y2VwdGlvbikKIHsKICAgICBpZiAoZGVzY3JpcHRvci5pc0FjY2Vzc29yRGVz
Y3JpcHRvcigpICYmIChwcm9wZXJ0eU5hbWUgPT0gZXhlYy0+cHJvcGVydHlOYW1lcygpLnRvU3Ry
aW5nIHx8IHByb3BlcnR5TmFtZSA9PSBleGVjLT5wcm9wZXJ0eU5hbWVzKCkudmFsdWVPZikpCiAg
ICAgICAgIHJldHVybiBmYWxzZTsKQEAgLTI3NiwxMiArMjc2LDEyIEBAIEpTVmFsdWUgSlNMb2Nh
dGlvbjo6dG9TdHJpbmdGdW5jdGlvbihFeGUKICAgICByZXR1cm4ganNTdHJpbmcoZXhlYywgaW1w
bCgpLT50b1N0cmluZygpKTsKIH0KIAotYm9vbCBKU0xvY2F0aW9uUHJvdG90eXBlOjpwdXREZWxl
Z2F0ZShFeGVjU3RhdGUqIGV4ZWMsIGNvbnN0IElkZW50aWZpZXImIHByb3BlcnR5TmFtZSwgSlNW
YWx1ZSwgUHV0UHJvcGVydHlTbG90JikKK2Jvb2wgSlNMb2NhdGlvblByb3RvdHlwZTo6cHV0RGVs
ZWdhdGUoRXhlY1N0YXRlKiBleGVjLCBQcm9wZXJ0eU5hbWUgcHJvcGVydHlOYW1lLCBKU1ZhbHVl
LCBQdXRQcm9wZXJ0eVNsb3QmKQogewogICAgIHJldHVybiAocHJvcGVydHlOYW1lID09IGV4ZWMt
PnByb3BlcnR5TmFtZXMoKS50b1N0cmluZyB8fCBwcm9wZXJ0eU5hbWUgPT0gZXhlYy0+cHJvcGVy
dHlOYW1lcygpLnZhbHVlT2YpOwogfQogCi1ib29sIEpTTG9jYXRpb25Qcm90b3R5cGU6OmRlZmlu
ZU93blByb3BlcnR5KEpTT2JqZWN0KiBvYmplY3QsIEV4ZWNTdGF0ZSogZXhlYywgY29uc3QgSWRl
bnRpZmllciYgcHJvcGVydHlOYW1lLCBQcm9wZXJ0eURlc2NyaXB0b3ImIGRlc2NyaXB0b3IsIGJv
b2wgdGhyb3dFeGNlcHRpb24pCitib29sIEpTTG9jYXRpb25Qcm90b3R5cGU6OmRlZmluZU93blBy
b3BlcnR5KEpTT2JqZWN0KiBvYmplY3QsIEV4ZWNTdGF0ZSogZXhlYywgUHJvcGVydHlOYW1lIHBy
b3BlcnR5TmFtZSwgUHJvcGVydHlEZXNjcmlwdG9yJiBkZXNjcmlwdG9yLCBib29sIHRocm93RXhj
ZXB0aW9uKQogewogICAgIGlmIChkZXNjcmlwdG9yLmlzQWNjZXNzb3JEZXNjcmlwdG9yKCkgJiYg
KHByb3BlcnR5TmFtZSA9PSBleGVjLT5wcm9wZXJ0eU5hbWVzKCkudG9TdHJpbmcgfHwgcHJvcGVy
dHlOYW1lID09IGV4ZWMtPnByb3BlcnR5TmFtZXMoKS52YWx1ZU9mKSkKICAgICAgICAgcmV0dXJu
IGZhbHNlOwpJbmRleDogU291cmNlL1dlYkNvcmUvYmluZGluZ3MvanMvSlNOYW1lZE5vZGVNYXBD
dXN0b20uY3BwCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9XZWJDb3JlL2JpbmRpbmdzL2pzL0pTTmFt
ZWROb2RlTWFwQ3VzdG9tLmNwcAkocmV2aXNpb24gMTE2NjY3KQorKysgU291cmNlL1dlYkNvcmUv
YmluZGluZ3MvanMvSlNOYW1lZE5vZGVNYXBDdXN0b20uY3BwCSh3b3JraW5nIGNvcHkpCkBAIC0z
NSwxNSArMzUsMTUgQEAgdXNpbmcgbmFtZXNwYWNlIEpTQzsKIAogbmFtZXNwYWNlIFdlYkNvcmUg
ewogCi1ib29sIEpTTmFtZWROb2RlTWFwOjpjYW5HZXRJdGVtc0Zvck5hbWUoRXhlY1N0YXRlKiwg
TmFtZWROb2RlTWFwKiBpbXBsLCBjb25zdCBJZGVudGlmaWVyJiBwcm9wZXJ0eU5hbWUpCitib29s
IEpTTmFtZWROb2RlTWFwOjpjYW5HZXRJdGVtc0Zvck5hbWUoRXhlY1N0YXRlKiwgTmFtZWROb2Rl
TWFwKiBpbXBsLCBQcm9wZXJ0eU5hbWUgcHJvcGVydHlOYW1lKQogewotICAgIHJldHVybiBpbXBs
LT5nZXROYW1lZEl0ZW0oaWRlbnRpZmllclRvU3RyaW5nKHByb3BlcnR5TmFtZSkpOworICAgIHJl
dHVybiBpbXBsLT5nZXROYW1lZEl0ZW0ocHJvcGVydHlOYW1lVG9TdHJpbmcocHJvcGVydHlOYW1l
KSk7CiB9CiAKLUpTVmFsdWUgSlNOYW1lZE5vZGVNYXA6Om5hbWVHZXR0ZXIoRXhlY1N0YXRlKiBl
eGVjLCBKU1ZhbHVlIHNsb3RCYXNlLCBjb25zdCBJZGVudGlmaWVyJiBwcm9wZXJ0eU5hbWUpCitK
U1ZhbHVlIEpTTmFtZWROb2RlTWFwOjpuYW1lR2V0dGVyKEV4ZWNTdGF0ZSogZXhlYywgSlNWYWx1
ZSBzbG90QmFzZSwgUHJvcGVydHlOYW1lIHByb3BlcnR5TmFtZSkKIHsKICAgICBKU05hbWVkTm9k
ZU1hcCogdGhpc09iaiA9IGpzQ2FzdDxKU05hbWVkTm9kZU1hcCo+KGFzT2JqZWN0KHNsb3RCYXNl
KSk7Ci0gICAgcmV0dXJuIHRvSlMoZXhlYywgdGhpc09iai0+Z2xvYmFsT2JqZWN0KCksIHRoaXNP
YmotPmltcGwoKS0+Z2V0TmFtZWRJdGVtKGlkZW50aWZpZXJUb1N0cmluZyhwcm9wZXJ0eU5hbWUp
KSk7CisgICAgcmV0dXJuIHRvSlMoZXhlYywgdGhpc09iai0+Z2xvYmFsT2JqZWN0KCksIHRoaXNP
YmotPmltcGwoKS0+Z2V0TmFtZWRJdGVtKHByb3BlcnR5TmFtZVRvU3RyaW5nKHByb3BlcnR5TmFt
ZSkpKTsKIH0KIAogdm9pZCBKU05hbWVkTm9kZU1hcDo6dmlzaXRDaGlsZHJlbihKU0NlbGwqIGNl
bGwsIFNsb3RWaXNpdG9yJiB2aXNpdG9yKQpJbmRleDogU291cmNlL1dlYkNvcmUvYmluZGluZ3Mv
anMvSlNOb2RlTGlzdEN1c3RvbS5jcHAKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL1dlYkNvcmUvYmlu
ZGluZ3MvanMvSlNOb2RlTGlzdEN1c3RvbS5jcHAJKHJldmlzaW9uIDExNjY2NykKKysrIFNvdXJj
ZS9XZWJDb3JlL2JpbmRpbmdzL2pzL0pTTm9kZUxpc3RDdXN0b20uY3BwCSh3b3JraW5nIGNvcHkp
CkBAIC00NiwxNSArNDYsMTUgQEAgYm9vbCBKU05vZGVMaXN0T3duZXI6OmlzUmVhY2hhYmxlRnJv
bU9wYQogICAgIHJldHVybiB2aXNpdG9yLmNvbnRhaW5zT3BhcXVlUm9vdChyb290KHN0YXRpY19j
YXN0PER5bmFtaWNOb2RlTGlzdCo+KGpzTm9kZUxpc3QtPmltcGwoKSktPm5vZGUoKSkpOwogfQog
Ci1ib29sIEpTTm9kZUxpc3Q6OmNhbkdldEl0ZW1zRm9yTmFtZShFeGVjU3RhdGUqLCBOb2RlTGlz
dCogaW1wbCwgY29uc3QgSWRlbnRpZmllciYgcHJvcGVydHlOYW1lKQorYm9vbCBKU05vZGVMaXN0
OjpjYW5HZXRJdGVtc0Zvck5hbWUoRXhlY1N0YXRlKiwgTm9kZUxpc3QqIGltcGwsIFByb3BlcnR5
TmFtZSBwcm9wZXJ0eU5hbWUpCiB7Ci0gICAgcmV0dXJuIGltcGwtPml0ZW1XaXRoTmFtZShpZGVu
dGlmaWVyVG9BdG9taWNTdHJpbmcocHJvcGVydHlOYW1lKSk7CisgICAgcmV0dXJuIGltcGwtPml0
ZW1XaXRoTmFtZShwcm9wZXJ0eU5hbWVUb0F0b21pY1N0cmluZyhwcm9wZXJ0eU5hbWUpKTsKIH0K
IAotSlNWYWx1ZSBKU05vZGVMaXN0OjpuYW1lR2V0dGVyKEV4ZWNTdGF0ZSogZXhlYywgSlNWYWx1
ZSBzbG90QmFzZSwgY29uc3QgSWRlbnRpZmllciYgcHJvcGVydHlOYW1lKQorSlNWYWx1ZSBKU05v
ZGVMaXN0OjpuYW1lR2V0dGVyKEV4ZWNTdGF0ZSogZXhlYywgSlNWYWx1ZSBzbG90QmFzZSwgUHJv
cGVydHlOYW1lIHByb3BlcnR5TmFtZSkKIHsKICAgICBKU05vZGVMaXN0KiB0aGlzT2JqID0ganND
YXN0PEpTTm9kZUxpc3QqPihhc09iamVjdChzbG90QmFzZSkpOwotICAgIHJldHVybiB0b0pTKGV4
ZWMsIHRoaXNPYmotPmdsb2JhbE9iamVjdCgpLCB0aGlzT2JqLT5pbXBsKCktPml0ZW1XaXRoTmFt
ZShpZGVudGlmaWVyVG9BdG9taWNTdHJpbmcocHJvcGVydHlOYW1lKSkpOworICAgIHJldHVybiB0
b0pTKGV4ZWMsIHRoaXNPYmotPmdsb2JhbE9iamVjdCgpLCB0aGlzT2JqLT5pbXBsKCktPml0ZW1X
aXRoTmFtZShwcm9wZXJ0eU5hbWVUb0F0b21pY1N0cmluZyhwcm9wZXJ0eU5hbWUpKSk7CiB9CiAK
IH0gLy8gbmFtZXNwYWNlIFdlYkNvcmUKSW5kZXg6IFNvdXJjZS9XZWJDb3JlL2JpbmRpbmdzL2pz
L0pTUGx1Z2luRWxlbWVudEZ1bmN0aW9ucy5jcHAKPT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL1dlYkNv
cmUvYmluZGluZ3MvanMvSlNQbHVnaW5FbGVtZW50RnVuY3Rpb25zLmNwcAkocmV2aXNpb24gMTE2
NjY3KQorKysgU291cmNlL1dlYkNvcmUvYmluZGluZ3MvanMvSlNQbHVnaW5FbGVtZW50RnVuY3Rp
b25zLmNwcAkod29ya2luZyBjb3B5KQpAQCAtMTAwLDcgKzEwMCw3IEBAIEpTT2JqZWN0KiBwbHVn
aW5TY3JpcHRPYmplY3QoRXhlY1N0YXRlKiAKICAgICByZXR1cm4gaW5zdGFuY2UtPmNyZWF0ZVJ1
bnRpbWVPYmplY3QoZXhlYyk7CiB9CiAgICAgCi1KU1ZhbHVlIHJ1bnRpbWVPYmplY3RQcm9wZXJ0
eUdldHRlcihFeGVjU3RhdGUqIGV4ZWMsIEpTVmFsdWUgc2xvdEJhc2UsIGNvbnN0IElkZW50aWZp
ZXImIHByb3BlcnR5TmFtZSkKK0pTVmFsdWUgcnVudGltZU9iamVjdFByb3BlcnR5R2V0dGVyKEV4
ZWNTdGF0ZSogZXhlYywgSlNWYWx1ZSBzbG90QmFzZSwgUHJvcGVydHlOYW1lIHByb3BlcnR5TmFt
ZSkKIHsKICAgICBKU0hUTUxFbGVtZW50KiBlbGVtZW50ID0ganNDYXN0PEpTSFRNTEVsZW1lbnQq
Pihhc09iamVjdChzbG90QmFzZSkpOwogICAgIEpTT2JqZWN0KiBzY3JpcHRPYmplY3QgPSBwbHVn
aW5TY3JpcHRPYmplY3QoZXhlYywgZWxlbWVudCk7CkBAIC0xMTAsNyArMTEwLDcgQEAgSlNWYWx1
ZSBydW50aW1lT2JqZWN0UHJvcGVydHlHZXR0ZXIoRXhlYwogICAgIHJldHVybiBzY3JpcHRPYmpl
Y3QtPmdldChleGVjLCBwcm9wZXJ0eU5hbWUpOwogfQogCi1ib29sIHJ1bnRpbWVPYmplY3RDdXN0
b21HZXRPd25Qcm9wZXJ0eVNsb3QoRXhlY1N0YXRlKiBleGVjLCBjb25zdCBJZGVudGlmaWVyJiBw
cm9wZXJ0eU5hbWUsIFByb3BlcnR5U2xvdCYgc2xvdCwgSlNIVE1MRWxlbWVudCogZWxlbWVudCkK
K2Jvb2wgcnVudGltZU9iamVjdEN1c3RvbUdldE93blByb3BlcnR5U2xvdChFeGVjU3RhdGUqIGV4
ZWMsIFByb3BlcnR5TmFtZSBwcm9wZXJ0eU5hbWUsIFByb3BlcnR5U2xvdCYgc2xvdCwgSlNIVE1M
RWxlbWVudCogZWxlbWVudCkKIHsKICAgICBKU09iamVjdCogc2NyaXB0T2JqZWN0ID0gcGx1Z2lu
U2NyaXB0T2JqZWN0KGV4ZWMsIGVsZW1lbnQpOwogICAgIGlmICghc2NyaXB0T2JqZWN0KQpAQCAt
MTIyLDcgKzEyMiw3IEBAIGJvb2wgcnVudGltZU9iamVjdEN1c3RvbUdldE93blByb3BlcnR5U2wK
ICAgICByZXR1cm4gdHJ1ZTsKIH0KIAotYm9vbCBydW50aW1lT2JqZWN0Q3VzdG9tR2V0T3duUHJv
cGVydHlEZXNjcmlwdG9yKEV4ZWNTdGF0ZSogZXhlYywgY29uc3QgSWRlbnRpZmllciYgcHJvcGVy
dHlOYW1lLCBQcm9wZXJ0eURlc2NyaXB0b3ImIGRlc2NyaXB0b3IsIEpTSFRNTEVsZW1lbnQqIGVs
ZW1lbnQpCitib29sIHJ1bnRpbWVPYmplY3RDdXN0b21HZXRPd25Qcm9wZXJ0eURlc2NyaXB0b3Io
RXhlY1N0YXRlKiBleGVjLCBQcm9wZXJ0eU5hbWUgcHJvcGVydHlOYW1lLCBQcm9wZXJ0eURlc2Ny
aXB0b3ImIGRlc2NyaXB0b3IsIEpTSFRNTEVsZW1lbnQqIGVsZW1lbnQpCiB7CiAgICAgSlNPYmpl
Y3QqIHNjcmlwdE9iamVjdCA9IHBsdWdpblNjcmlwdE9iamVjdChleGVjLCBlbGVtZW50KTsKICAg
ICBpZiAoIXNjcmlwdE9iamVjdCkKQEAgLTEzOCw3ICsxMzgsNyBAQCBib29sIHJ1bnRpbWVPYmpl
Y3RDdXN0b21HZXRPd25Qcm9wZXJ0eURlCiAgICAgcmV0dXJuIHRydWU7CiB9CiAKLWJvb2wgcnVu
dGltZU9iamVjdEN1c3RvbVB1dChFeGVjU3RhdGUqIGV4ZWMsIGNvbnN0IElkZW50aWZpZXImIHBy
b3BlcnR5TmFtZSwgSlNWYWx1ZSB2YWx1ZSwgSlNIVE1MRWxlbWVudCogZWxlbWVudCwgUHV0UHJv
cGVydHlTbG90JiBzbG90KQorYm9vbCBydW50aW1lT2JqZWN0Q3VzdG9tUHV0KEV4ZWNTdGF0ZSog
ZXhlYywgUHJvcGVydHlOYW1lIHByb3BlcnR5TmFtZSwgSlNWYWx1ZSB2YWx1ZSwgSlNIVE1MRWxl
bWVudCogZWxlbWVudCwgUHV0UHJvcGVydHlTbG90JiBzbG90KQogewogICAgIEpTT2JqZWN0KiBz
Y3JpcHRPYmplY3QgPSBwbHVnaW5TY3JpcHRPYmplY3QoZXhlYywgZWxlbWVudCk7CiAgICAgaWYg
KCFzY3JpcHRPYmplY3QpCkluZGV4OiBTb3VyY2UvV2ViQ29yZS9iaW5kaW5ncy9qcy9KU1BsdWdp
bkVsZW1lbnRGdW5jdGlvbnMuaAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2ViQ29yZS9iaW5kaW5n
cy9qcy9KU1BsdWdpbkVsZW1lbnRGdW5jdGlvbnMuaAkocmV2aXNpb24gMTE2NjY3KQorKysgU291
cmNlL1dlYkNvcmUvYmluZGluZ3MvanMvSlNQbHVnaW5FbGVtZW50RnVuY3Rpb25zLmgJKHdvcmtp
bmcgY29weSkKQEAgLTM4LDEwICszOCwxMCBAQCBuYW1lc3BhY2UgV2ViQ29yZSB7CiAgICAgSlND
OjpCaW5kaW5nczo6SW5zdGFuY2UqIHBsdWdpbkluc3RhbmNlKE5vZGUqKTsKICAgICBKU0M6OkpT
T2JqZWN0KiBwbHVnaW5TY3JpcHRPYmplY3QoSlNDOjpFeGVjU3RhdGUqIGV4ZWMsIEpTSFRNTEVs
ZW1lbnQqIGpzSFRNTEVsZW1lbnQpOwogCi0gICAgSlNDOjpKU1ZhbHVlIHJ1bnRpbWVPYmplY3RQ
cm9wZXJ0eUdldHRlcihKU0M6OkV4ZWNTdGF0ZSosIEpTQzo6SlNWYWx1ZSwgY29uc3QgSlNDOjpJ
ZGVudGlmaWVyJik7Ci0gICAgYm9vbCBydW50aW1lT2JqZWN0Q3VzdG9tR2V0T3duUHJvcGVydHlT
bG90KEpTQzo6RXhlY1N0YXRlKiwgY29uc3QgSlNDOjpJZGVudGlmaWVyJiwgSlNDOjpQcm9wZXJ0
eVNsb3QmLCBKU0hUTUxFbGVtZW50Kik7Ci0gICAgYm9vbCBydW50aW1lT2JqZWN0Q3VzdG9tR2V0
T3duUHJvcGVydHlEZXNjcmlwdG9yKEpTQzo6RXhlY1N0YXRlKiwgY29uc3QgSlNDOjpJZGVudGlm
aWVyJiwgSlNDOjpQcm9wZXJ0eURlc2NyaXB0b3ImLCBKU0hUTUxFbGVtZW50Kik7Ci0gICAgYm9v
bCBydW50aW1lT2JqZWN0Q3VzdG9tUHV0KEpTQzo6RXhlY1N0YXRlKiwgY29uc3QgSlNDOjpJZGVu
dGlmaWVyJiwgSlNDOjpKU1ZhbHVlLCBKU0hUTUxFbGVtZW50KiwgSlNDOjpQdXRQcm9wZXJ0eVNs
b3QmKTsKKyAgICBKU0M6OkpTVmFsdWUgcnVudGltZU9iamVjdFByb3BlcnR5R2V0dGVyKEpTQzo6
RXhlY1N0YXRlKiwgSlNDOjpKU1ZhbHVlLCBKU0M6OlByb3BlcnR5TmFtZSk7CisgICAgYm9vbCBy
dW50aW1lT2JqZWN0Q3VzdG9tR2V0T3duUHJvcGVydHlTbG90KEpTQzo6RXhlY1N0YXRlKiwgSlND
OjpQcm9wZXJ0eU5hbWUsIEpTQzo6UHJvcGVydHlTbG90JiwgSlNIVE1MRWxlbWVudCopOworICAg
IGJvb2wgcnVudGltZU9iamVjdEN1c3RvbUdldE93blByb3BlcnR5RGVzY3JpcHRvcihKU0M6OkV4
ZWNTdGF0ZSosIEpTQzo6UHJvcGVydHlOYW1lLCBKU0M6OlByb3BlcnR5RGVzY3JpcHRvciYsIEpT
SFRNTEVsZW1lbnQqKTsKKyAgICBib29sIHJ1bnRpbWVPYmplY3RDdXN0b21QdXQoSlNDOjpFeGVj
U3RhdGUqLCBKU0M6OlByb3BlcnR5TmFtZSwgSlNDOjpKU1ZhbHVlLCBKU0hUTUxFbGVtZW50Kiwg
SlNDOjpQdXRQcm9wZXJ0eVNsb3QmKTsKICAgICBKU0M6OkNhbGxUeXBlIHJ1bnRpbWVPYmplY3RH
ZXRDYWxsRGF0YShKU0hUTUxFbGVtZW50KiwgSlNDOjpDYWxsRGF0YSYpOwogCiB9IC8vIG5hbWVz
cGFjZSBXZWJDb3JlCkluZGV4OiBTb3VyY2UvV2ViQ29yZS9iaW5kaW5ncy9qcy9KU1N0b3JhZ2VD
dXN0b20uY3BwCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9XZWJDb3JlL2JpbmRpbmdzL2pzL0pTU3Rv
cmFnZUN1c3RvbS5jcHAJKHJldmlzaW9uIDExNjY2NykKKysrIFNvdXJjZS9XZWJDb3JlL2JpbmRp
bmdzL2pzL0pTU3RvcmFnZUN1c3RvbS5jcHAJKHdvcmtpbmcgY29weSkKQEAgLTM0LDEyICszNCwx
MiBAQCB1c2luZyBuYW1lc3BhY2UgSlNDOwogCiBuYW1lc3BhY2UgV2ViQ29yZSB7CiAKLWJvb2wg
SlNTdG9yYWdlOjpjYW5HZXRJdGVtc0Zvck5hbWUoRXhlY1N0YXRlKiwgU3RvcmFnZSogaW1wbCwg
Y29uc3QgSWRlbnRpZmllciYgcHJvcGVydHlOYW1lKQorYm9vbCBKU1N0b3JhZ2U6OmNhbkdldEl0
ZW1zRm9yTmFtZShFeGVjU3RhdGUqLCBTdG9yYWdlKiBpbXBsLCBQcm9wZXJ0eU5hbWUgcHJvcGVy
dHlOYW1lKQogewotICAgIHJldHVybiBpbXBsLT5jb250YWlucyhpZGVudGlmaWVyVG9TdHJpbmco
cHJvcGVydHlOYW1lKSk7CisgICAgcmV0dXJuIGltcGwtPmNvbnRhaW5zKHByb3BlcnR5TmFtZVRv
U3RyaW5nKHByb3BlcnR5TmFtZSkpOwogfQogCi1KU1ZhbHVlIEpTU3RvcmFnZTo6bmFtZUdldHRl
cihFeGVjU3RhdGUqIGV4ZWMsIEpTVmFsdWUgc2xvdEJhc2UsIGNvbnN0IElkZW50aWZpZXImIHBy
b3BlcnR5TmFtZSkKK0pTVmFsdWUgSlNTdG9yYWdlOjpuYW1lR2V0dGVyKEV4ZWNTdGF0ZSogZXhl
YywgSlNWYWx1ZSBzbG90QmFzZSwgUHJvcGVydHlOYW1lIHByb3BlcnR5TmFtZSkKIHsKICAgICBK
U1N0b3JhZ2UqIHRoaXNPYmogPSBqc0Nhc3Q8SlNTdG9yYWdlKj4oYXNPYmplY3Qoc2xvdEJhc2Up
KTsKICAgICAgICAgCkBAIC00NywxMCArNDcsMTAgQEAgSlNWYWx1ZSBKU1N0b3JhZ2U6Om5hbWVH
ZXR0ZXIoRXhlY1N0YXRlKgogICAgIGlmIChwcm90b3R5cGUuaXNPYmplY3QoKSAmJiBhc09iamVj
dChwcm90b3R5cGUpLT5oYXNQcm9wZXJ0eShleGVjLCBwcm9wZXJ0eU5hbWUpKQogICAgICAgICBy
ZXR1cm4gYXNPYmplY3QocHJvdG90eXBlKS0+Z2V0KGV4ZWMsIHByb3BlcnR5TmFtZSk7CiAgCi0g
ICAgcmV0dXJuIGpzU3RyaW5nT3JOdWxsKGV4ZWMsIHRoaXNPYmotPmltcGwoKS0+Z2V0SXRlbShp
ZGVudGlmaWVyVG9TdHJpbmcocHJvcGVydHlOYW1lKSkpOworICAgIHJldHVybiBqc1N0cmluZ09y
TnVsbChleGVjLCB0aGlzT2JqLT5pbXBsKCktPmdldEl0ZW0ocHJvcGVydHlOYW1lVG9TdHJpbmco
cHJvcGVydHlOYW1lKSkpOwogfQogCi1ib29sIEpTU3RvcmFnZTo6ZGVsZXRlUHJvcGVydHkoSlND
ZWxsKiBjZWxsLCBFeGVjU3RhdGUqIGV4ZWMsIGNvbnN0IElkZW50aWZpZXImIHByb3BlcnR5TmFt
ZSkKK2Jvb2wgSlNTdG9yYWdlOjpkZWxldGVQcm9wZXJ0eShKU0NlbGwqIGNlbGwsIEV4ZWNTdGF0
ZSogZXhlYywgUHJvcGVydHlOYW1lIHByb3BlcnR5TmFtZSkKIHsKICAgICBKU1N0b3JhZ2UqIHRo
aXNPYmplY3QgPSBqc0Nhc3Q8SlNTdG9yYWdlKj4oY2VsbCk7CiAgICAgLy8gT25seSBwZXJmb3Jt
IHRoZSBjdXN0b20gZGVsZXRlIGlmIHRoZSBvYmplY3QgZG9lc24ndCBoYXZlIGEgbmF0aXZlIHBy
b3BlcnR5IGJ5IHRoaXMgbmFtZS4KQEAgLTY0LDcgKzY0LDcgQEAgYm9vbCBKU1N0b3JhZ2U6OmRl
bGV0ZVByb3BlcnR5KEpTQ2VsbCogYwogICAgIGlmIChwcm90b3R5cGUuaXNPYmplY3QoKSAmJiBh
c09iamVjdChwcm90b3R5cGUpLT5oYXNQcm9wZXJ0eShleGVjLCBwcm9wZXJ0eU5hbWUpKQogICAg
ICAgICByZXR1cm4gZmFsc2U7CiAKLSAgICB0aGlzT2JqZWN0LT5tX2ltcGwtPnJlbW92ZUl0ZW0o
aWRlbnRpZmllclRvU3RyaW5nKHByb3BlcnR5TmFtZSkpOworICAgIHRoaXNPYmplY3QtPm1faW1w
bC0+cmVtb3ZlSXRlbShwcm9wZXJ0eU5hbWVUb1N0cmluZyhwcm9wZXJ0eU5hbWUpKTsKICAgICBy
ZXR1cm4gdHJ1ZTsKIH0KIApAQCAtNzgsNyArNzgsNyBAQCB2b2lkIEpTU3RvcmFnZTo6Z2V0T3du
UHJvcGVydHlOYW1lcyhKU09iCiAgICAgQmFzZTo6Z2V0T3duUHJvcGVydHlOYW1lcyh0aGlzT2Jq
ZWN0LCBleGVjLCBwcm9wZXJ0eU5hbWVzLCBtb2RlKTsKIH0KIAotYm9vbCBKU1N0b3JhZ2U6OnB1
dERlbGVnYXRlKEV4ZWNTdGF0ZSogZXhlYywgY29uc3QgSWRlbnRpZmllciYgcHJvcGVydHlOYW1l
LCBKU1ZhbHVlIHZhbHVlLCBQdXRQcm9wZXJ0eVNsb3QmKQorYm9vbCBKU1N0b3JhZ2U6OnB1dERl
bGVnYXRlKEV4ZWNTdGF0ZSogZXhlYywgUHJvcGVydHlOYW1lIHByb3BlcnR5TmFtZSwgSlNWYWx1
ZSB2YWx1ZSwgUHV0UHJvcGVydHlTbG90JikKIHsKICAgICAvLyBPbmx5IHBlcmZvcm0gdGhlIGN1
c3RvbSBwdXQgaWYgdGhlIG9iamVjdCBkb2Vzbid0IGhhdmUgYSBuYXRpdmUgcHJvcGVydHkgYnkg
dGhpcyBuYW1lLgogICAgIC8vIFNpbmNlIGhhc1Byb3BlcnR5KCkgd291bGQgZW5kIHVwIGNhbGxp
bmcgY2FuR2V0SXRlbXNGb3JOYW1lKCkgYW5kIGJlIGZvb2xlZCwgd2UgbmVlZCB0byBjaGVjawpA
QCAtOTYsNyArOTYsNyBAQCBib29sIEpTU3RvcmFnZTo6cHV0RGVsZWdhdGUoRXhlY1N0YXRlKiBl
CiAgICAgICAgIHJldHVybiB0cnVlOwogICAgIAogICAgIEV4Y2VwdGlvbkNvZGUgZWMgPSAwOwot
ICAgIGltcGwoKS0+c2V0SXRlbShpZGVudGlmaWVyVG9TdHJpbmcocHJvcGVydHlOYW1lKSwgc3Ry
aW5nVmFsdWUsIGVjKTsKKyAgICBpbXBsKCktPnNldEl0ZW0ocHJvcGVydHlOYW1lVG9TdHJpbmco
cHJvcGVydHlOYW1lKSwgc3RyaW5nVmFsdWUsIGVjKTsKICAgICBzZXRET01FeGNlcHRpb24oZXhl
YywgZWMpOwogCiAgICAgcmV0dXJuIHRydWU7CkluZGV4OiBTb3VyY2UvV2ViQ29yZS9iaW5kaW5n
cy9qcy9KU1N0eWxlU2hlZXRMaXN0Q3VzdG9tLmNwcAo9PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2Vi
Q29yZS9iaW5kaW5ncy9qcy9KU1N0eWxlU2hlZXRMaXN0Q3VzdG9tLmNwcAkocmV2aXNpb24gMTE2
NjY3KQorKysgU291cmNlL1dlYkNvcmUvYmluZGluZ3MvanMvSlNTdHlsZVNoZWV0TGlzdEN1c3Rv
bS5jcHAJKHdvcmtpbmcgY29weSkKQEAgLTM1LDE1ICszNSwxNSBAQCB1c2luZyBuYW1lc3BhY2Ug
SlNDOwogCiBuYW1lc3BhY2UgV2ViQ29yZSB7CiAKLWJvb2wgSlNTdHlsZVNoZWV0TGlzdDo6Y2Fu
R2V0SXRlbXNGb3JOYW1lKEV4ZWNTdGF0ZSosIFN0eWxlU2hlZXRMaXN0KiBzdHlsZVNoZWV0TGlz
dCwgY29uc3QgSWRlbnRpZmllciYgcHJvcGVydHlOYW1lKQorYm9vbCBKU1N0eWxlU2hlZXRMaXN0
OjpjYW5HZXRJdGVtc0Zvck5hbWUoRXhlY1N0YXRlKiwgU3R5bGVTaGVldExpc3QqIHN0eWxlU2hl
ZXRMaXN0LCBQcm9wZXJ0eU5hbWUgcHJvcGVydHlOYW1lKQogewotICAgIHJldHVybiBzdHlsZVNo
ZWV0TGlzdC0+Z2V0TmFtZWRJdGVtKGlkZW50aWZpZXJUb1N0cmluZyhwcm9wZXJ0eU5hbWUpKTsK
KyAgICByZXR1cm4gc3R5bGVTaGVldExpc3QtPmdldE5hbWVkSXRlbShwcm9wZXJ0eU5hbWVUb1N0
cmluZyhwcm9wZXJ0eU5hbWUpKTsKIH0KIAotSlNWYWx1ZSBKU1N0eWxlU2hlZXRMaXN0OjpuYW1l
R2V0dGVyKEV4ZWNTdGF0ZSogZXhlYywgSlNWYWx1ZSBzbG90QmFzZSwgY29uc3QgSWRlbnRpZmll
ciYgcHJvcGVydHlOYW1lKQorSlNWYWx1ZSBKU1N0eWxlU2hlZXRMaXN0OjpuYW1lR2V0dGVyKEV4
ZWNTdGF0ZSogZXhlYywgSlNWYWx1ZSBzbG90QmFzZSwgUHJvcGVydHlOYW1lIHByb3BlcnR5TmFt
ZSkKIHsKICAgICBKU1N0eWxlU2hlZXRMaXN0KiB0aGlzT2JqID0ganNDYXN0PEpTU3R5bGVTaGVl
dExpc3QqPihhc09iamVjdChzbG90QmFzZSkpOwotICAgIEhUTUxTdHlsZUVsZW1lbnQqIGVsZW1l
bnQgPSB0aGlzT2JqLT5pbXBsKCktPmdldE5hbWVkSXRlbShpZGVudGlmaWVyVG9TdHJpbmcocHJv
cGVydHlOYW1lKSk7CisgICAgSFRNTFN0eWxlRWxlbWVudCogZWxlbWVudCA9IHRoaXNPYmotPmlt
cGwoKS0+Z2V0TmFtZWRJdGVtKHByb3BlcnR5TmFtZVRvU3RyaW5nKHByb3BlcnR5TmFtZSkpOwog
ICAgIEFTU0VSVChlbGVtZW50KTsKICAgICByZXR1cm4gdG9KUyhleGVjLCB0aGlzT2JqLT5nbG9i
YWxPYmplY3QoKSwgZWxlbWVudC0+c2hlZXQoKSk7CiB9CkluZGV4OiBTb3VyY2UvV2ViQ29yZS9i
aW5kaW5ncy9qcy9KU1dvcmtlckNvbnRleHRDdXN0b20uY3BwCj09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJj
ZS9XZWJDb3JlL2JpbmRpbmdzL2pzL0pTV29ya2VyQ29udGV4dEN1c3RvbS5jcHAJKHJldmlzaW9u
IDExNjY2NykKKysrIFNvdXJjZS9XZWJDb3JlL2JpbmRpbmdzL2pzL0pTV29ya2VyQ29udGV4dEN1
c3RvbS5jcHAJKHdvcmtpbmcgY29weSkKQEAgLTY5LDcgKzY5LDcgQEAgdm9pZCBKU1dvcmtlckNv
bnRleHQ6OnZpc2l0Q2hpbGRyZW4oSlNDZQogICAgIHRoaXNPYmplY3QtPmltcGwoKS0+dmlzaXRK
U0V2ZW50TGlzdGVuZXJzKHZpc2l0b3IpOwogfQogCi1ib29sIEpTV29ya2VyQ29udGV4dDo6Z2V0
T3duUHJvcGVydHlTbG90RGVsZWdhdGUoRXhlY1N0YXRlKiBleGVjLCBjb25zdCBJZGVudGlmaWVy
JiBwcm9wZXJ0eU5hbWUsIFByb3BlcnR5U2xvdCYgc2xvdCkKK2Jvb2wgSlNXb3JrZXJDb250ZXh0
OjpnZXRPd25Qcm9wZXJ0eVNsb3REZWxlZ2F0ZShFeGVjU3RhdGUqIGV4ZWMsIFByb3BlcnR5TmFt
ZSBwcm9wZXJ0eU5hbWUsIFByb3BlcnR5U2xvdCYgc2xvdCkKIHsKICAgICAvLyBMb29rIGZvciBv
dmVycmlkZXMgYmVmb3JlIGxvb2tpbmcgYXQgYW55IG9mIG91ciBvd24gcHJvcGVydGllcy4KICAg
ICBpZiAoSlNHbG9iYWxPYmplY3Q6OmdldE93blByb3BlcnR5U2xvdCh0aGlzLCBleGVjLCBwcm9w
ZXJ0eU5hbWUsIHNsb3QpKQpAQCAtNzcsNyArNzcsNyBAQCBib29sIEpTV29ya2VyQ29udGV4dDo6
Z2V0T3duUHJvcGVydHlTbG90CiAgICAgcmV0dXJuIGZhbHNlOwogfQogCi1ib29sIEpTV29ya2Vy
Q29udGV4dDo6Z2V0T3duUHJvcGVydHlEZXNjcmlwdG9yRGVsZWdhdGUoRXhlY1N0YXRlKiBleGVj
LCBjb25zdCBJZGVudGlmaWVyJiBwcm9wZXJ0eU5hbWUsIFByb3BlcnR5RGVzY3JpcHRvciYgZGVz
Y3JpcHRvcikKK2Jvb2wgSlNXb3JrZXJDb250ZXh0OjpnZXRPd25Qcm9wZXJ0eURlc2NyaXB0b3JE
ZWxlZ2F0ZShFeGVjU3RhdGUqIGV4ZWMsIFByb3BlcnR5TmFtZSBwcm9wZXJ0eU5hbWUsIFByb3Bl
cnR5RGVzY3JpcHRvciYgZGVzY3JpcHRvcikKIHsKICAgICAvLyBMb29rIGZvciBvdmVycmlkZXMg
YmVmb3JlIGxvb2tpbmcgYXQgYW55IG9mIG91ciBvd24gcHJvcGVydGllcy4KICAgICBpZiAoSlNH
bG9iYWxPYmplY3Q6OmdldE93blByb3BlcnR5RGVzY3JpcHRvcih0aGlzLCBleGVjLCBwcm9wZXJ0
eU5hbWUsIGRlc2NyaXB0b3IpKQpJbmRleDogU291cmNlL1dlYkNvcmUvYmluZGluZ3Mvc2NyaXB0
cy9Db2RlR2VuZXJhdG9ySlMucG0KPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL1dlYkNvcmUvYmluZGlu
Z3Mvc2NyaXB0cy9Db2RlR2VuZXJhdG9ySlMucG0JKHJldmlzaW9uIDExNjY2NykKKysrIFNvdXJj
ZS9XZWJDb3JlL2JpbmRpbmdzL3NjcmlwdHMvQ29kZUdlbmVyYXRvckpTLnBtCSh3b3JraW5nIGNv
cHkpCkBAIC00MTIsMTUgKzQxMiwxNCBAQCBzdWIgR2VuZXJhdGVHZXRPd25Qcm9wZXJ0eVNsb3RC
b2R5CiAgICAgfQogCiAgICAgaWYgKCRkYXRhTm9kZS0+ZXh0ZW5kZWRBdHRyaWJ1dGVzLT57Iklu
ZGV4ZWRHZXR0ZXIifSB8fCAkZGF0YU5vZGUtPmV4dGVuZGVkQXR0cmlidXRlcy0+eyJOdW1lcmlj
SW5kZXhlZEdldHRlciJ9KSB7Ci0gICAgICAgIHB1c2goQGdldE93blByb3BlcnR5U2xvdEltcGws
ICIgICAgYm9vbCBvaztcbiIpOwotICAgICAgICBwdXNoKEBnZXRPd25Qcm9wZXJ0eVNsb3RJbXBs
LCAiICAgIHVuc2lnbmVkIGluZGV4ID0gcHJvcGVydHlOYW1lLnRvVUludDMyKG9rKTtcbiIpOwor
ICAgICAgICBwdXNoKEBnZXRPd25Qcm9wZXJ0eVNsb3RJbXBsLCAiICAgIHVuc2lnbmVkIGluZGV4
ID0gcHJvcGVydHlOYW1lLmFzSW5kZXgoKTtcbiIpOwogCiAgICAgICAgICMgSWYgdGhlIGl0ZW0g
ZnVuY3Rpb24gcmV0dXJucyBhIHN0cmluZyB0aGVuIHdlIGxldCB0aGUgVHJlYXRSZXR1cm5lZE51
bGxTdHJpbmdBcyBoYW5kbGUgdGhlIGNhc2VzCiAgICAgICAgICMgd2hlcmUgdGhlIGluZGV4IGlz
IG91dCBvZiByYW5nZS4KICAgICAgICAgaWYgKEluZGV4R2V0dGVyUmV0dXJuc1N0cmluZ3MoJGlt
cGxDbGFzc05hbWUpKSB7Ci0gICAgICAgICAgICBwdXNoKEBnZXRPd25Qcm9wZXJ0eVNsb3RJbXBs
LCAiICAgIGlmIChvaykge1xuIik7CisgICAgICAgICAgICBwdXNoKEBnZXRPd25Qcm9wZXJ0eVNs
b3RJbXBsLCAiICAgIGlmIChpbmRleCAhPSBQcm9wZXJ0eU5hbWU6Ok5vdEFuSW5kZXgpIHtcbiIp
OwogICAgICAgICB9IGVsc2UgewotICAgICAgICAgICAgcHVzaChAZ2V0T3duUHJvcGVydHlTbG90
SW1wbCwgIiAgICBpZiAob2sgJiYgaW5kZXggPCBzdGF0aWNfY2FzdDwkaW1wbENsYXNzTmFtZSo+
KHRoaXNPYmplY3QtPmltcGwoKSktPmxlbmd0aCgpKSB7XG4iKTsKKyAgICAgICAgICAgIHB1c2go
QGdldE93blByb3BlcnR5U2xvdEltcGwsICIgICAgaWYgKGluZGV4ICE9IFByb3BlcnR5TmFtZTo6
Tm90QW5JbmRleCAmJiBpbmRleCA8IHN0YXRpY19jYXN0PCRpbXBsQ2xhc3NOYW1lKj4odGhpc09i
amVjdC0+aW1wbCgpKS0+bGVuZ3RoKCkpIHtcbiIpOwogICAgICAgICB9CiAgICAgICAgIGlmICgk
ZGF0YU5vZGUtPmV4dGVuZGVkQXR0cmlidXRlcy0+eyJOdW1lcmljSW5kZXhlZEdldHRlciJ9KSB7
CiAgICAgICAgICAgICBwdXNoKEBnZXRPd25Qcm9wZXJ0eVNsb3RJbXBsLCAiICAgICAgICBzbG90
LnNldFZhbHVlKHRoaXNPYmplY3QtPmdldEJ5SW5kZXgoZXhlYywgaW5kZXgpKTtcbiIpOwpAQCAt
NTA2LDkgKzUwNSw4IEBAIHN1YiBHZW5lcmF0ZUdldE93blByb3BlcnR5RGVzY3JpcHRvckJvZHkK
ICAgICB9CiAKICAgICBpZiAoJGRhdGFOb2RlLT5leHRlbmRlZEF0dHJpYnV0ZXMtPnsiSW5kZXhl
ZEdldHRlciJ9IHx8ICRkYXRhTm9kZS0+ZXh0ZW5kZWRBdHRyaWJ1dGVzLT57Ik51bWVyaWNJbmRl
eGVkR2V0dGVyIn0pIHsKLSAgICAgICAgcHVzaChAZ2V0T3duUHJvcGVydHlEZXNjcmlwdG9ySW1w
bCwgIiAgICBib29sIG9rO1xuIik7Ci0gICAgICAgIHB1c2goQGdldE93blByb3BlcnR5RGVzY3Jp
cHRvckltcGwsICIgICAgdW5zaWduZWQgaW5kZXggPSBwcm9wZXJ0eU5hbWUudG9VSW50MzIob2sp
O1xuIik7Ci0gICAgICAgIHB1c2goQGdldE93blByb3BlcnR5RGVzY3JpcHRvckltcGwsICIgICAg
aWYgKG9rICYmIGluZGV4IDwgc3RhdGljX2Nhc3Q8JGltcGxDbGFzc05hbWUqPih0aGlzT2JqZWN0
LT5pbXBsKCkpLT5sZW5ndGgoKSkge1xuIik7CisgICAgICAgIHB1c2goQGdldE93blByb3BlcnR5
RGVzY3JpcHRvckltcGwsICIgICAgdW5zaWduZWQgaW5kZXggPSBwcm9wZXJ0eU5hbWUuYXNJbmRl
eCgpO1xuIik7CisgICAgICAgIHB1c2goQGdldE93blByb3BlcnR5RGVzY3JpcHRvckltcGwsICIg
ICAgaWYgKGluZGV4ICE9IFByb3BlcnR5TmFtZTo6Tm90QW5JbmRleCAmJiBpbmRleCA8IHN0YXRp
Y19jYXN0PCRpbXBsQ2xhc3NOYW1lKj4odGhpc09iamVjdC0+aW1wbCgpKS0+bGVuZ3RoKCkpIHtc
biIpOwogICAgICAgICBpZiAoJGRhdGFOb2RlLT5leHRlbmRlZEF0dHJpYnV0ZXMtPnsiTnVtZXJp
Y0luZGV4ZWRHZXR0ZXIifSkgewogICAgICAgICAgICAgIyBBc3N1bWUgdGhhdCBpZiB0aGVyZSdz
IGEgc2V0dGVyLCB0aGUgaW5kZXggd2lsbCBiZSB3cml0YWJsZQogICAgICAgICAgICAgaWYgKCRk
YXRhTm9kZS0+ZXh0ZW5kZWRBdHRyaWJ1dGVzLT57IkN1c3RvbUluZGV4ZWRTZXR0ZXIifSkgewpA
QCAtNzQyLDExICs3NDAsMTEgQEAgc3ViIEdlbmVyYXRlSGVhZGVyCiAKICAgICAjIEdldHRlcnMK
ICAgICBpZiAoJGhhc0dldHRlcikgewotICAgICAgICBwdXNoKEBoZWFkZXJDb250ZW50LCAiICAg
IHN0YXRpYyBib29sIGdldE93blByb3BlcnR5U2xvdChKU0M6OkpTQ2VsbCosIEpTQzo6RXhlY1N0
YXRlKiwgY29uc3QgSlNDOjpJZGVudGlmaWVyJiBwcm9wZXJ0eU5hbWUsIEpTQzo6UHJvcGVydHlT
bG90Jik7XG4iKTsKLSAgICAgICAgcHVzaChAaGVhZGVyQ29udGVudCwgIiAgICBzdGF0aWMgYm9v
bCBnZXRPd25Qcm9wZXJ0eURlc2NyaXB0b3IoSlNDOjpKU09iamVjdCosIEpTQzo6RXhlY1N0YXRl
KiwgY29uc3QgSlNDOjpJZGVudGlmaWVyJiBwcm9wZXJ0eU5hbWUsIEpTQzo6UHJvcGVydHlEZXNj
cmlwdG9yJik7XG4iKTsKKyAgICAgICAgcHVzaChAaGVhZGVyQ29udGVudCwgIiAgICBzdGF0aWMg
Ym9vbCBnZXRPd25Qcm9wZXJ0eVNsb3QoSlNDOjpKU0NlbGwqLCBKU0M6OkV4ZWNTdGF0ZSosIEpT
Qzo6UHJvcGVydHlOYW1lLCBKU0M6OlByb3BlcnR5U2xvdCYpO1xuIik7CisgICAgICAgIHB1c2go
QGhlYWRlckNvbnRlbnQsICIgICAgc3RhdGljIGJvb2wgZ2V0T3duUHJvcGVydHlEZXNjcmlwdG9y
KEpTQzo6SlNPYmplY3QqLCBKU0M6OkV4ZWNTdGF0ZSosIEpTQzo6UHJvcGVydHlOYW1lLCBKU0M6
OlByb3BlcnR5RGVzY3JpcHRvciYpO1xuIik7CiAgICAgICAgIHB1c2goQGhlYWRlckNvbnRlbnQs
ICIgICAgc3RhdGljIGJvb2wgZ2V0T3duUHJvcGVydHlTbG90QnlJbmRleChKU0M6OkpTQ2VsbCos
IEpTQzo6RXhlY1N0YXRlKiwgdW5zaWduZWQgcHJvcGVydHlOYW1lLCBKU0M6OlByb3BlcnR5U2xv
dCYpO1xuIikgaWYgKCRkYXRhTm9kZS0+ZXh0ZW5kZWRBdHRyaWJ1dGVzLT57IkluZGV4ZWRHZXR0
ZXIifSB8fCAkZGF0YU5vZGUtPmV4dGVuZGVkQXR0cmlidXRlcy0+eyJOdW1lcmljSW5kZXhlZEdl
dHRlciJ9KSAmJiAhJGRhdGFOb2RlLT5leHRlbmRlZEF0dHJpYnV0ZXMtPnsiQ3VzdG9tTmFtZWRH
ZXR0ZXIifTsKLSAgICAgICAgcHVzaChAaGVhZGVyQ29udGVudCwgIiAgICBib29sIGdldE93blBy
b3BlcnR5U2xvdERlbGVnYXRlKEpTQzo6RXhlY1N0YXRlKiwgY29uc3QgSlNDOjpJZGVudGlmaWVy
JiwgSlNDOjpQcm9wZXJ0eVNsb3QmKTtcbiIpIGlmICRkYXRhTm9kZS0+ZXh0ZW5kZWRBdHRyaWJ1
dGVzLT57IkpTQ3VzdG9tR2V0T3duUHJvcGVydHlTbG90QW5kRGVzY3JpcHRvciJ9OwotICAgICAg
ICBwdXNoKEBoZWFkZXJDb250ZW50LCAiICAgIGJvb2wgZ2V0T3duUHJvcGVydHlEZXNjcmlwdG9y
RGVsZWdhdGUoSlNDOjpFeGVjU3RhdGUqLCBjb25zdCBKU0M6OklkZW50aWZpZXImLCBKU0M6OlBy
b3BlcnR5RGVzY3JpcHRvciYpO1xuIikgaWYgJGRhdGFOb2RlLT5leHRlbmRlZEF0dHJpYnV0ZXMt
PnsiSlNDdXN0b21HZXRPd25Qcm9wZXJ0eVNsb3RBbmREZXNjcmlwdG9yIn07CisgICAgICAgIHB1
c2goQGhlYWRlckNvbnRlbnQsICIgICAgYm9vbCBnZXRPd25Qcm9wZXJ0eVNsb3REZWxlZ2F0ZShK
U0M6OkV4ZWNTdGF0ZSosIEpTQzo6UHJvcGVydHlOYW1lLCBKU0M6OlByb3BlcnR5U2xvdCYpO1xu
IikgaWYgJGRhdGFOb2RlLT5leHRlbmRlZEF0dHJpYnV0ZXMtPnsiSlNDdXN0b21HZXRPd25Qcm9w
ZXJ0eVNsb3RBbmREZXNjcmlwdG9yIn07CisgICAgICAgIHB1c2goQGhlYWRlckNvbnRlbnQsICIg
ICAgYm9vbCBnZXRPd25Qcm9wZXJ0eURlc2NyaXB0b3JEZWxlZ2F0ZShKU0M6OkV4ZWNTdGF0ZSos
IEpTQzo6UHJvcGVydHlOYW1lLCBKU0M6OlByb3BlcnR5RGVzY3JpcHRvciYpO1xuIikgaWYgJGRh
dGFOb2RlLT5leHRlbmRlZEF0dHJpYnV0ZXMtPnsiSlNDdXN0b21HZXRPd25Qcm9wZXJ0eVNsb3RB
bmREZXNjcmlwdG9yIn07CiAgICAgICAgICRzdHJ1Y3R1cmVGbGFnc3siSlNDOjpPdmVycmlkZXNH
ZXRPd25Qcm9wZXJ0eVNsb3QifSA9IDE7CiAgICAgfQogCkBAIC03NjUsOSArNzYzLDkgQEAgc3Vi
IEdlbmVyYXRlSGVhZGVyCiAKICAgICAjIEdldHRlcnMKICAgICBpZiAoJGhhc1NldHRlcikgewot
ICAgICAgICBwdXNoKEBoZWFkZXJDb250ZW50LCAiICAgIHN0YXRpYyB2b2lkIHB1dChKU0M6OkpT
Q2VsbCosIEpTQzo6RXhlY1N0YXRlKiwgY29uc3QgSlNDOjpJZGVudGlmaWVyJiBwcm9wZXJ0eU5h
bWUsIEpTQzo6SlNWYWx1ZSwgSlNDOjpQdXRQcm9wZXJ0eVNsb3QmKTtcbiIpOworICAgICAgICBw
dXNoKEBoZWFkZXJDb250ZW50LCAiICAgIHN0YXRpYyB2b2lkIHB1dChKU0M6OkpTQ2VsbCosIEpT
Qzo6RXhlY1N0YXRlKiwgSlNDOjpQcm9wZXJ0eU5hbWUsIEpTQzo6SlNWYWx1ZSwgSlNDOjpQdXRQ
cm9wZXJ0eVNsb3QmKTtcbiIpOwogICAgICAgICBwdXNoKEBoZWFkZXJDb250ZW50LCAiICAgIHN0
YXRpYyB2b2lkIHB1dEJ5SW5kZXgoSlNDOjpKU0NlbGwqLCBKU0M6OkV4ZWNTdGF0ZSosIHVuc2ln
bmVkIHByb3BlcnR5TmFtZSwgSlNDOjpKU1ZhbHVlLCBib29sIHNob3VsZFRocm93KTtcbiIpIGlm
ICRkYXRhTm9kZS0+ZXh0ZW5kZWRBdHRyaWJ1dGVzLT57IkN1c3RvbUluZGV4ZWRTZXR0ZXIifTsK
LSAgICAgICAgcHVzaChAaGVhZGVyQ29udGVudCwgIiAgICBib29sIHB1dERlbGVnYXRlKEpTQzo6
RXhlY1N0YXRlKiwgY29uc3QgSlNDOjpJZGVudGlmaWVyJiwgSlNDOjpKU1ZhbHVlLCBKU0M6OlB1
dFByb3BlcnR5U2xvdCYpO1xuIikgaWYgJGRhdGFOb2RlLT5leHRlbmRlZEF0dHJpYnV0ZXMtPnsi
Q3VzdG9tTmFtZWRTZXR0ZXIifTsKKyAgICAgICAgcHVzaChAaGVhZGVyQ29udGVudCwgIiAgICBi
b29sIHB1dERlbGVnYXRlKEpTQzo6RXhlY1N0YXRlKiwgSlNDOjpQcm9wZXJ0eU5hbWUsIEpTQzo6
SlNWYWx1ZSwgSlNDOjpQdXRQcm9wZXJ0eVNsb3QmKTtcbiIpIGlmICRkYXRhTm9kZS0+ZXh0ZW5k
ZWRBdHRyaWJ1dGVzLT57IkN1c3RvbU5hbWVkU2V0dGVyIn07CiAgICAgfQogCiAgICAgaWYgKCEk
aGFzUGFyZW50KSB7CkBAIC03OTgsNyArNzk2LDcgQEAgc3ViIEdlbmVyYXRlSGVhZGVyCiAgICAg
cHVzaChAaGVhZGVyQ29udGVudCwgIiAgICBzdGF0aWMgSlNDOjpDYWxsVHlwZSBnZXRDYWxsRGF0
YShKU0M6OkpTQ2VsbCosIEpTQzo6Q2FsbERhdGEmKTtcblxuIikgaWYgJGRhdGFOb2RlLT5leHRl
bmRlZEF0dHJpYnV0ZXMtPnsiQ3VzdG9tQ2FsbCJ9OwogCiAgICAgIyBDdXN0b20gZGVsZXRlUHJv
cGVydHkgZnVuY3Rpb24KLSAgICBwdXNoKEBoZWFkZXJDb250ZW50LCAiICAgIHN0YXRpYyBib29s
IGRlbGV0ZVByb3BlcnR5KEpTQzo6SlNDZWxsKiwgSlNDOjpFeGVjU3RhdGUqLCBjb25zdCBKU0M6
OklkZW50aWZpZXImKTtcbiIpIGlmICRkYXRhTm9kZS0+ZXh0ZW5kZWRBdHRyaWJ1dGVzLT57IkN1
c3RvbURlbGV0ZVByb3BlcnR5In07CisgICAgcHVzaChAaGVhZGVyQ29udGVudCwgIiAgICBzdGF0
aWMgYm9vbCBkZWxldGVQcm9wZXJ0eShKU0M6OkpTQ2VsbCosIEpTQzo6RXhlY1N0YXRlKiwgSlND
OjpQcm9wZXJ0eU5hbWUpO1xuIikgaWYgJGRhdGFOb2RlLT5leHRlbmRlZEF0dHJpYnV0ZXMtPnsi
Q3VzdG9tRGVsZXRlUHJvcGVydHkifTsKIAogICAgICMgQ3VzdG9tIGdldFByb3BlcnR5TmFtZXMg
ZnVuY3Rpb24gZXhpc3RzIG9uIERPTVdpbmRvdwogICAgIGlmICgkaW50ZXJmYWNlTmFtZSBlcSAi
RE9NV2luZG93IikgewpAQCAtODEzLDcgKzgxMSw3IEBAIHN1YiBHZW5lcmF0ZUhlYWRlcgogICAg
IH0KIAogICAgICMgQ3VzdG9tIGRlZmluZU93blByb3BlcnR5IGZ1bmN0aW9uCi0gICAgcHVzaChA
aGVhZGVyQ29udGVudCwgIiAgICBzdGF0aWMgYm9vbCBkZWZpbmVPd25Qcm9wZXJ0eShKU0M6OkpT
T2JqZWN0KiwgSlNDOjpFeGVjU3RhdGUqLCBjb25zdCBKU0M6OklkZW50aWZpZXImIHByb3BlcnR5
TmFtZSwgSlNDOjpQcm9wZXJ0eURlc2NyaXB0b3ImLCBib29sIHNob3VsZFRocm93KTtcbiIpIGlm
ICRkYXRhTm9kZS0+ZXh0ZW5kZWRBdHRyaWJ1dGVzLT57IkpTQ3VzdG9tRGVmaW5lT3duUHJvcGVy
dHkifTsKKyAgICBwdXNoKEBoZWFkZXJDb250ZW50LCAiICAgIHN0YXRpYyBib29sIGRlZmluZU93
blByb3BlcnR5KEpTQzo6SlNPYmplY3QqLCBKU0M6OkV4ZWNTdGF0ZSosIEpTQzo6UHJvcGVydHlO
YW1lLCBKU0M6OlByb3BlcnR5RGVzY3JpcHRvciYsIGJvb2wgc2hvdWxkVGhyb3cpO1xuIikgaWYg
JGRhdGFOb2RlLT5leHRlbmRlZEF0dHJpYnV0ZXMtPnsiSlNDdXN0b21EZWZpbmVPd25Qcm9wZXJ0
eSJ9OwogCiAgICAgIyBPdmVycmlkZSB0b0Jvb2xlYW4gdG8gcmV0dXJuIGZhbHNlIGZvciBvYmpl
Y3RzIHRoYXQgd2FudCB0byAnTWFzcXVlcmFkZXNBc1VuZGVmaW5lZCcuCiAgICAgaWYgKCRkYXRh
Tm9kZS0+ZXh0ZW5kZWRBdHRyaWJ1dGVzLT57Ik1hc3F1ZXJhZGVzQXNVbmRlZmluZWQifSkgewpA
QCAtOTQ4LDIwICs5NDYsMjAgQEAgc3ViIEdlbmVyYXRlSGVhZGVyCiAgICAgIyBOYW1lIGdldHRl
cgogICAgIGlmICgkZGF0YU5vZGUtPmV4dGVuZGVkQXR0cmlidXRlcy0+eyJOYW1lZEdldHRlciJ9
IHx8ICRkYXRhTm9kZS0+ZXh0ZW5kZWRBdHRyaWJ1dGVzLT57IkN1c3RvbU5hbWVkR2V0dGVyIn0p
IHsKICAgICAgICAgcHVzaChAaGVhZGVyQ29udGVudCwgInByaXZhdGU6XG4iKTsKLSAgICAgICAg
cHVzaChAaGVhZGVyQ29udGVudCwgIiAgICBzdGF0aWMgYm9vbCBjYW5HZXRJdGVtc0Zvck5hbWUo
SlNDOjpFeGVjU3RhdGUqLCAkaW1wbENsYXNzTmFtZSosIGNvbnN0IEpTQzo6SWRlbnRpZmllciYp
O1xuIik7Ci0gICAgICAgIHB1c2goQGhlYWRlckNvbnRlbnQsICIgICAgc3RhdGljIEpTQzo6SlNW
YWx1ZSBuYW1lR2V0dGVyKEpTQzo6RXhlY1N0YXRlKiwgSlNDOjpKU1ZhbHVlLCBjb25zdCBKU0M6
OklkZW50aWZpZXImKTtcbiIpOworICAgICAgICBwdXNoKEBoZWFkZXJDb250ZW50LCAiICAgIHN0
YXRpYyBib29sIGNhbkdldEl0ZW1zRm9yTmFtZShKU0M6OkV4ZWNTdGF0ZSosICRpbXBsQ2xhc3NO
YW1lKiwgSlNDOjpQcm9wZXJ0eU5hbWUpO1xuIik7CisgICAgICAgIHB1c2goQGhlYWRlckNvbnRl
bnQsICIgICAgc3RhdGljIEpTQzo6SlNWYWx1ZSBuYW1lR2V0dGVyKEpTQzo6RXhlY1N0YXRlKiwg
SlNDOjpKU1ZhbHVlLCBKU0M6OlByb3BlcnR5TmFtZSk7XG4iKTsKICAgICB9CiAKICAgICBwdXNo
KEBoZWFkZXJDb250ZW50LCAifTtcblxuIik7CiAKICAgICBpZiAoJGRhdGFOb2RlLT5leHRlbmRl
ZEF0dHJpYnV0ZXMtPnsiSlNJbmxpbmVHZXRPd25Qcm9wZXJ0eVNsb3QifSAmJiAhJGRhdGFOb2Rl
LT5leHRlbmRlZEF0dHJpYnV0ZXMtPnsiQ3VzdG9tR2V0T3duUHJvcGVydHlTbG90In0pIHsKLSAg
ICAgICAgcHVzaChAaGVhZGVyQ29udGVudCwgIkFMV0FZU19JTkxJTkUgYm9vbCAke2NsYXNzTmFt
ZX06OmdldE93blByb3BlcnR5U2xvdChKU0M6OkpTQ2VsbCogY2VsbCwgSlNDOjpFeGVjU3RhdGUq
IGV4ZWMsIGNvbnN0IEpTQzo6SWRlbnRpZmllciYgcHJvcGVydHlOYW1lLCBKU0M6OlByb3BlcnR5
U2xvdCYgc2xvdClcbiIpOworICAgICAgICBwdXNoKEBoZWFkZXJDb250ZW50LCAiQUxXQVlTX0lO
TElORSBib29sICR7Y2xhc3NOYW1lfTo6Z2V0T3duUHJvcGVydHlTbG90KEpTQzo6SlNDZWxsKiBj
ZWxsLCBKU0M6OkV4ZWNTdGF0ZSogZXhlYywgSlNDOjpQcm9wZXJ0eU5hbWUgcHJvcGVydHlOYW1l
LCBKU0M6OlByb3BlcnR5U2xvdCYgc2xvdClcbiIpOwogICAgICAgICBwdXNoKEBoZWFkZXJDb250
ZW50LCAie1xuIik7CiAgICAgICAgIHB1c2goQGhlYWRlckNvbnRlbnQsICIgICAgJHtjbGFzc05h
bWV9KiB0aGlzT2JqZWN0ID0gSlNDOjpqc0Nhc3Q8JHtjbGFzc05hbWV9Kj4oY2VsbCk7XG4iKTsK
ICAgICAgICAgcHVzaChAaGVhZGVyQ29udGVudCwgIiAgICBBU1NFUlRfR0NfT0JKRUNUX0lOSEVS
SVRTKHRoaXNPYmplY3QsICZzX2luZm8pO1xuIik7CiAgICAgICAgIHB1c2goQGhlYWRlckNvbnRl
bnQsIEdlbmVyYXRlR2V0T3duUHJvcGVydHlTbG90Qm9keSgkZGF0YU5vZGUsICRpbnRlcmZhY2VO
YW1lLCAkY2xhc3NOYW1lLCAkaW1wbENsYXNzTmFtZSwgJG51bUF0dHJpYnV0ZXMgPiAwLCAxKSk7
CiAgICAgICAgIHB1c2goQGhlYWRlckNvbnRlbnQsICJ9XG5cbiIpOwotICAgICAgICBwdXNoKEBo
ZWFkZXJDb250ZW50LCAiQUxXQVlTX0lOTElORSBib29sICR7Y2xhc3NOYW1lfTo6Z2V0T3duUHJv
cGVydHlEZXNjcmlwdG9yKEpTQzo6SlNPYmplY3QqIG9iamVjdCwgSlNDOjpFeGVjU3RhdGUqIGV4
ZWMsIGNvbnN0IEpTQzo6SWRlbnRpZmllciYgcHJvcGVydHlOYW1lLCBKU0M6OlByb3BlcnR5RGVz
Y3JpcHRvciYgZGVzY3JpcHRvcilcbiIpOworICAgICAgICBwdXNoKEBoZWFkZXJDb250ZW50LCAi
QUxXQVlTX0lOTElORSBib29sICR7Y2xhc3NOYW1lfTo6Z2V0T3duUHJvcGVydHlEZXNjcmlwdG9y
KEpTQzo6SlNPYmplY3QqIG9iamVjdCwgSlNDOjpFeGVjU3RhdGUqIGV4ZWMsIEpTQzo6UHJvcGVy
dHlOYW1lIHByb3BlcnR5TmFtZSwgSlNDOjpQcm9wZXJ0eURlc2NyaXB0b3ImIGRlc2NyaXB0b3Ip
XG4iKTsKICAgICAgICAgcHVzaChAaGVhZGVyQ29udGVudCwgIntcbiIpOwogICAgICAgICBwdXNo
KEBoZWFkZXJDb250ZW50LCAiICAgICR7Y2xhc3NOYW1lfSogdGhpc09iamVjdCA9IEpTQzo6anND
YXN0PCR7Y2xhc3NOYW1lfSo+KG9iamVjdCk7XG4iKTsKICAgICAgICAgcHVzaChAaGVhZGVyQ29u
dGVudCwgIiAgICBBU1NFUlRfR0NfT0JKRUNUX0lOSEVSSVRTKHRoaXNPYmplY3QsICZzX2luZm8p
O1xuIik7CkBAIC0xMDI2LDggKzEwMjQsOCBAQCBzdWIgR2VuZXJhdGVIZWFkZXIKIAogICAgIHB1
c2goQGhlYWRlckNvbnRlbnQsICIgICAgc3RhdGljIGNvbnN0IEpTQzo6Q2xhc3NJbmZvIHNfaW5m
bztcbiIpOwogICAgIGlmICgkbnVtRnVuY3Rpb25zID4gMCB8fCAkbnVtQ29uc3RhbnRzID4gMCkg
ewotICAgICAgICBwdXNoKEBoZWFkZXJDb250ZW50LCAiICAgIHN0YXRpYyBib29sIGdldE93blBy
b3BlcnR5U2xvdChKU0M6OkpTQ2VsbCosIEpTQzo6RXhlY1N0YXRlKiwgY29uc3QgSlNDOjpJZGVu
dGlmaWVyJiwgSlNDOjpQcm9wZXJ0eVNsb3QmKTtcbiIpOwotICAgICAgICBwdXNoKEBoZWFkZXJD
b250ZW50LCAiICAgIHN0YXRpYyBib29sIGdldE93blByb3BlcnR5RGVzY3JpcHRvcihKU0M6OkpT
T2JqZWN0KiwgSlNDOjpFeGVjU3RhdGUqLCBjb25zdCBKU0M6OklkZW50aWZpZXImLCBKU0M6OlBy
b3BlcnR5RGVzY3JpcHRvciYpO1xuIik7CisgICAgICAgIHB1c2goQGhlYWRlckNvbnRlbnQsICIg
ICAgc3RhdGljIGJvb2wgZ2V0T3duUHJvcGVydHlTbG90KEpTQzo6SlNDZWxsKiwgSlNDOjpFeGVj
U3RhdGUqLCBKU0M6OlByb3BlcnR5TmFtZSwgSlNDOjpQcm9wZXJ0eVNsb3QmKTtcbiIpOworICAg
ICAgICBwdXNoKEBoZWFkZXJDb250ZW50LCAiICAgIHN0YXRpYyBib29sIGdldE93blByb3BlcnR5
RGVzY3JpcHRvcihKU0M6OkpTT2JqZWN0KiwgSlNDOjpFeGVjU3RhdGUqLCBKU0M6OlByb3BlcnR5
TmFtZSwgSlNDOjpQcm9wZXJ0eURlc2NyaXB0b3ImKTtcbiIpOwogICAgICAgICAkc3RydWN0dXJl
RmxhZ3N7IkpTQzo6T3ZlcnJpZGVzR2V0T3duUHJvcGVydHlTbG90In0gPSAxOwogICAgIH0KICAg
ICBpZiAoJGRhdGFOb2RlLT5leHRlbmRlZEF0dHJpYnV0ZXMtPnsiSlNDdXN0b21NYXJrRnVuY3Rp
b24ifSBvciAkbmVlZHNNYXJrQ2hpbGRyZW4pIHsKQEAgLTEwMzksMTIgKzEwMzcsMTIgQEAgc3Vi
IEdlbmVyYXRlSGVhZGVyCiAgICAgICAgICIgICAgICAgIHJldHVybiBKU0M6OlN0cnVjdHVyZTo6
Y3JlYXRlKGdsb2JhbERhdGEsIGdsb2JhbE9iamVjdCwgcHJvdG90eXBlLCBKU0M6OlR5cGVJbmZv
KEpTQzo6T2JqZWN0VHlwZSwgU3RydWN0dXJlRmxhZ3MpLCAmc19pbmZvKTtcbiIgLgogICAgICAg
ICAiICAgIH1cbiIpOwogICAgIGlmICgkZGF0YU5vZGUtPmV4dGVuZGVkQXR0cmlidXRlcy0+eyJK
U0N1c3RvbU5hbWVkR2V0dGVyT25Qcm90b3R5cGUifSkgewotICAgICAgICBwdXNoKEBoZWFkZXJD
b250ZW50LCAiICAgIHN0YXRpYyB2b2lkIHB1dChKU0M6OkpTQ2VsbCosIEpTQzo6RXhlY1N0YXRl
KiwgY29uc3QgSlNDOjpJZGVudGlmaWVyJiBwcm9wZXJ0eU5hbWUsIEpTQzo6SlNWYWx1ZSwgSlND
OjpQdXRQcm9wZXJ0eVNsb3QmKTtcbiIpOwotICAgICAgICBwdXNoKEBoZWFkZXJDb250ZW50LCAi
ICAgIGJvb2wgcHV0RGVsZWdhdGUoSlNDOjpFeGVjU3RhdGUqLCBjb25zdCBKU0M6OklkZW50aWZp
ZXImLCBKU0M6OkpTVmFsdWUsIEpTQzo6UHV0UHJvcGVydHlTbG90Jik7XG4iKTsKKyAgICAgICAg
cHVzaChAaGVhZGVyQ29udGVudCwgIiAgICBzdGF0aWMgdm9pZCBwdXQoSlNDOjpKU0NlbGwqLCBK
U0M6OkV4ZWNTdGF0ZSosIEpTQzo6UHJvcGVydHlOYW1lLCBKU0M6OkpTVmFsdWUsIEpTQzo6UHV0
UHJvcGVydHlTbG90Jik7XG4iKTsKKyAgICAgICAgcHVzaChAaGVhZGVyQ29udGVudCwgIiAgICBi
b29sIHB1dERlbGVnYXRlKEpTQzo6RXhlY1N0YXRlKiwgSlNDOjpQcm9wZXJ0eU5hbWUsIEpTQzo6
SlNWYWx1ZSwgSlNDOjpQdXRQcm9wZXJ0eVNsb3QmKTtcbiIpOwogICAgIH0KIAogICAgICMgQ3Vz
dG9tIGRlZmluZU93blByb3BlcnR5IGZ1bmN0aW9uCi0gICAgcHVzaChAaGVhZGVyQ29udGVudCwg
IiAgICBzdGF0aWMgYm9vbCBkZWZpbmVPd25Qcm9wZXJ0eShKU0M6OkpTT2JqZWN0KiwgSlNDOjpF
eGVjU3RhdGUqLCBjb25zdCBKU0M6OklkZW50aWZpZXImIHByb3BlcnR5TmFtZSwgSlNDOjpQcm9w
ZXJ0eURlc2NyaXB0b3ImLCBib29sIHNob3VsZFRocm93KTtcbiIpIGlmICRkYXRhTm9kZS0+ZXh0
ZW5kZWRBdHRyaWJ1dGVzLT57IkpTQ3VzdG9tRGVmaW5lT3duUHJvcGVydHlPblByb3RvdHlwZSJ9
OworICAgIHB1c2goQGhlYWRlckNvbnRlbnQsICIgICAgc3RhdGljIGJvb2wgZGVmaW5lT3duUHJv
cGVydHkoSlNDOjpKU09iamVjdCosIEpTQzo6RXhlY1N0YXRlKiwgSlNDOjpQcm9wZXJ0eU5hbWUs
IEpTQzo6UHJvcGVydHlEZXNjcmlwdG9yJiwgYm9vbCBzaG91bGRUaHJvdyk7XG4iKSBpZiAkZGF0
YU5vZGUtPmV4dGVuZGVkQXR0cmlidXRlcy0+eyJKU0N1c3RvbURlZmluZU93blByb3BlcnR5T25Q
cm90b3R5cGUifTsKIAogICAgIHB1c2goQGhlYWRlckNvbnRlbnQsICJcbnByaXZhdGU6XG4iKTsK
ICAgICBwdXNoKEBoZWFkZXJDb250ZW50LCAiICAgICR7Y2xhc3NOYW1lfVByb3RvdHlwZShKU0M6
OkpTR2xvYmFsRGF0YSYgZ2xvYmFsRGF0YSwgSlNDOjpKU0dsb2JhbE9iamVjdCosIEpTQzo6U3Ry
dWN0dXJlKiBzdHJ1Y3R1cmUpIDogSlNDOjpKU05vbkZpbmFsT2JqZWN0KGdsb2JhbERhdGEsIHN0
cnVjdHVyZSkgeyB9XG4iKTsKQEAgLTEwODIsNyArMTA4MCw3IEBAIHN1YiBHZW5lcmF0ZUhlYWRl
cgogICAgICAgICAgICAgbXkgJGNvbmRpdGlvbmFsU3RyaW5nID0gJGNvZGVHZW5lcmF0b3ItPkdl
bmVyYXRlQ29uZGl0aW9uYWxTdHJpbmcoJGF0dHJpYnV0ZS0+c2lnbmF0dXJlKTsKICAgICAgICAg
ICAgIHB1c2goQGhlYWRlckNvbnRlbnQsICIjaWYgJHtjb25kaXRpb25hbFN0cmluZ31cbiIpIGlm
ICRjb25kaXRpb25hbFN0cmluZzsKICAgICAgICAgICAgIG15ICRnZXR0ZXIgPSAianMiIC4gJGlu
dGVyZmFjZU5hbWUgLiAkY29kZUdlbmVyYXRvci0+V0tfdWNmaXJzdCgkYXR0cmlidXRlLT5zaWdu
YXR1cmUtPm5hbWUpIC4gKCRhdHRyaWJ1dGUtPnNpZ25hdHVyZS0+dHlwZSA9fiAvQ29uc3RydWN0
b3IkLyA/ICJDb25zdHJ1Y3RvciIgOiAiIik7Ci0gICAgICAgICAgICBwdXNoKEBoZWFkZXJDb250
ZW50LCAiSlNDOjpKU1ZhbHVlICR7Z2V0dGVyfShKU0M6OkV4ZWNTdGF0ZSosIEpTQzo6SlNWYWx1
ZSwgY29uc3QgSlNDOjpJZGVudGlmaWVyJik7XG4iKTsKKyAgICAgICAgICAgIHB1c2goQGhlYWRl
ckNvbnRlbnQsICJKU0M6OkpTVmFsdWUgJHtnZXR0ZXJ9KEpTQzo6RXhlY1N0YXRlKiwgSlNDOjpK
U1ZhbHVlLCBKU0M6OlByb3BlcnR5TmFtZSk7XG4iKTsKICAgICAgICAgICAgIHVubGVzcyAoJGF0
dHJpYnV0ZS0+dHlwZSA9fiAvcmVhZG9ubHkvKSB7CiAgICAgICAgICAgICAgICAgbXkgJHNldHRl
ciA9ICJzZXRKUyIgLiAkaW50ZXJmYWNlTmFtZSAuICRjb2RlR2VuZXJhdG9yLT5XS191Y2ZpcnN0
KCRhdHRyaWJ1dGUtPnNpZ25hdHVyZS0+bmFtZSkgLiAoJGF0dHJpYnV0ZS0+c2lnbmF0dXJlLT50
eXBlID1+IC9Db25zdHJ1Y3RvciQvID8gIkNvbnN0cnVjdG9yIiA6ICIiKTsKICAgICAgICAgICAg
ICAgICBwdXNoKEBoZWFkZXJDb250ZW50LCAidm9pZCAke3NldHRlcn0oSlNDOjpFeGVjU3RhdGUq
LCBKU0M6OkpTT2JqZWN0KiwgSlNDOjpKU1ZhbHVlKTtcbiIpOwpAQCAtMTA5Miw3ICsxMDkwLDcg
QEAgc3ViIEdlbmVyYXRlSGVhZGVyCiAgICAgICAgIAogICAgICAgICBpZiAoISRkYXRhTm9kZS0+
ZXh0ZW5kZWRBdHRyaWJ1dGVzLT57Ik9taXRDb25zdHJ1Y3RvciJ9KSB7CiAgICAgICAgICAgICBt
eSAkZ2V0dGVyID0gImpzIiAuICRpbnRlcmZhY2VOYW1lIC4gIkNvbnN0cnVjdG9yIjsKLSAgICAg
ICAgICAgIHB1c2goQGhlYWRlckNvbnRlbnQsICJKU0M6OkpTVmFsdWUgJHtnZXR0ZXJ9KEpTQzo6
RXhlY1N0YXRlKiwgSlNDOjpKU1ZhbHVlLCBjb25zdCBKU0M6OklkZW50aWZpZXImKTtcbiIpOwor
ICAgICAgICAgICAgcHVzaChAaGVhZGVyQ29udGVudCwgIkpTQzo6SlNWYWx1ZSAke2dldHRlcn0o
SlNDOjpFeGVjU3RhdGUqLCBKU0M6OkpTVmFsdWUsIEpTQzo6UHJvcGVydHlOYW1lKTtcbiIpOwog
ICAgICAgICB9CiAKICAgICAgICAgaWYgKCRkYXRhTm9kZS0+ZXh0ZW5kZWRBdHRyaWJ1dGVzLT57
IlJlcGxhY2VhYmxlQ29uc3RydWN0b3IifSkgewpAQCAtMTEwNyw3ICsxMTA1LDcgQEAgc3ViIEdl
bmVyYXRlSGVhZGVyCiAgICAgICAgICAgICBteSAkY29uZGl0aW9uYWxTdHJpbmcgPSAkY29kZUdl
bmVyYXRvci0+R2VuZXJhdGVDb25kaXRpb25hbFN0cmluZygkY29uc3RhbnQpOwogICAgICAgICAg
ICAgcHVzaChAaGVhZGVyQ29udGVudCwgIiNpZiAke2NvbmRpdGlvbmFsU3RyaW5nfVxuIikgaWYg
JGNvbmRpdGlvbmFsU3RyaW5nOwogICAgICAgICAgICAgbXkgJGdldHRlciA9ICJqcyIgLiAkaW50
ZXJmYWNlTmFtZSAuICRjb2RlR2VuZXJhdG9yLT5XS191Y2ZpcnN0KCRjb25zdGFudC0+bmFtZSk7
Ci0gICAgICAgICAgICBwdXNoKEBoZWFkZXJDb250ZW50LCAiSlNDOjpKU1ZhbHVlICR7Z2V0dGVy
fShKU0M6OkV4ZWNTdGF0ZSosIEpTQzo6SlNWYWx1ZSwgY29uc3QgSlNDOjpJZGVudGlmaWVyJik7
XG4iKTsKKyAgICAgICAgICAgIHB1c2goQGhlYWRlckNvbnRlbnQsICJKU0M6OkpTVmFsdWUgJHtn
ZXR0ZXJ9KEpTQzo6RXhlY1N0YXRlKiwgSlNDOjpKU1ZhbHVlLCBKU0M6OlByb3BlcnR5TmFtZSk7
XG4iKTsKICAgICAgICAgICAgIHB1c2goQGhlYWRlckNvbnRlbnQsICIjZW5kaWZcbiIpIGlmICRj
b25kaXRpb25hbFN0cmluZzsKICAgICAgICAgfQogICAgIH0KQEAgLTE0ODAsNyArMTQ3OCw3IEBA
IHN1YiBHZW5lcmF0ZUltcGxlbWVudGF0aW9uCiAgICAgfQogCiAgICAgaWYgKCRudW1Db25zdGFu
dHMgPiAwIHx8ICRudW1GdW5jdGlvbnMgPiAwKSB7Ci0gICAgICAgIHB1c2goQGltcGxDb250ZW50
LCAiYm9vbCAke2NsYXNzTmFtZX1Qcm90b3R5cGU6OmdldE93blByb3BlcnR5U2xvdChKU0NlbGwq
IGNlbGwsIEV4ZWNTdGF0ZSogZXhlYywgY29uc3QgSWRlbnRpZmllciYgcHJvcGVydHlOYW1lLCBQ
cm9wZXJ0eVNsb3QmIHNsb3QpXG4iKTsKKyAgICAgICAgcHVzaChAaW1wbENvbnRlbnQsICJib29s
ICR7Y2xhc3NOYW1lfVByb3RvdHlwZTo6Z2V0T3duUHJvcGVydHlTbG90KEpTQ2VsbCogY2VsbCwg
RXhlY1N0YXRlKiBleGVjLCBQcm9wZXJ0eU5hbWUgcHJvcGVydHlOYW1lLCBQcm9wZXJ0eVNsb3Qm
IHNsb3QpXG4iKTsKICAgICAgICAgcHVzaChAaW1wbENvbnRlbnQsICJ7XG4iKTsKICAgICAgICAg
cHVzaChAaW1wbENvbnRlbnQsICIgICAgJHtjbGFzc05hbWV9UHJvdG90eXBlKiB0aGlzT2JqZWN0
ID0ganNDYXN0PCR7Y2xhc3NOYW1lfVByb3RvdHlwZSo+KGNlbGwpO1xuIik7CiAKQEAgLTE0OTUs
NyArMTQ5Myw3IEBAIHN1YiBHZW5lcmF0ZUltcGxlbWVudGF0aW9uCiAgICAgICAgIH0KICAgICAg
ICAgcHVzaChAaW1wbENvbnRlbnQsICJ9XG5cbiIpOwogCi0gICAgICAgIHB1c2goQGltcGxDb250
ZW50LCAiYm9vbCAke2NsYXNzTmFtZX1Qcm90b3R5cGU6OmdldE93blByb3BlcnR5RGVzY3JpcHRv
cihKU09iamVjdCogb2JqZWN0LCBFeGVjU3RhdGUqIGV4ZWMsIGNvbnN0IElkZW50aWZpZXImIHBy
b3BlcnR5TmFtZSwgUHJvcGVydHlEZXNjcmlwdG9yJiBkZXNjcmlwdG9yKVxuIik7CisgICAgICAg
IHB1c2goQGltcGxDb250ZW50LCAiYm9vbCAke2NsYXNzTmFtZX1Qcm90b3R5cGU6OmdldE93blBy
b3BlcnR5RGVzY3JpcHRvcihKU09iamVjdCogb2JqZWN0LCBFeGVjU3RhdGUqIGV4ZWMsIFByb3Bl
cnR5TmFtZSBwcm9wZXJ0eU5hbWUsIFByb3BlcnR5RGVzY3JpcHRvciYgZGVzY3JpcHRvcilcbiIp
OwogICAgICAgICBwdXNoKEBpbXBsQ29udGVudCwgIntcbiIpOwogICAgICAgICBwdXNoKEBpbXBs
Q29udGVudCwgIiAgICAke2NsYXNzTmFtZX1Qcm90b3R5cGUqIHRoaXNPYmplY3QgPSBqc0Nhc3Q8
JHtjbGFzc05hbWV9UHJvdG90eXBlKj4ob2JqZWN0KTtcbiIpOwogCkBAIC0xNTEyLDcgKzE1MTAs
NyBAQCBzdWIgR2VuZXJhdGVJbXBsZW1lbnRhdGlvbgogICAgIH0KIAogICAgIGlmICgkZGF0YU5v
ZGUtPmV4dGVuZGVkQXR0cmlidXRlcy0+eyJKU0N1c3RvbU5hbWVkR2V0dGVyT25Qcm90b3R5cGUi
fSkgewotICAgICAgICBwdXNoKEBpbXBsQ29udGVudCwgInZvaWQgJHtjbGFzc05hbWV9UHJvdG90
eXBlOjpwdXQoSlNDZWxsKiBjZWxsLCBFeGVjU3RhdGUqIGV4ZWMsIGNvbnN0IElkZW50aWZpZXIm
IHByb3BlcnR5TmFtZSwgSlNWYWx1ZSB2YWx1ZSwgUHV0UHJvcGVydHlTbG90JiBzbG90KVxuIik7
CisgICAgICAgIHB1c2goQGltcGxDb250ZW50LCAidm9pZCAke2NsYXNzTmFtZX1Qcm90b3R5cGU6
OnB1dChKU0NlbGwqIGNlbGwsIEV4ZWNTdGF0ZSogZXhlYywgUHJvcGVydHlOYW1lIHByb3BlcnR5
TmFtZSwgSlNWYWx1ZSB2YWx1ZSwgUHV0UHJvcGVydHlTbG90JiBzbG90KVxuIik7CiAgICAgICAg
IHB1c2goQGltcGxDb250ZW50LCAie1xuIik7CiAgICAgICAgIHB1c2goQGltcGxDb250ZW50LCAi
ICAgICR7Y2xhc3NOYW1lfVByb3RvdHlwZSogdGhpc09iamVjdCA9IGpzQ2FzdDwke2NsYXNzTmFt
ZX1Qcm90b3R5cGUqPihjZWxsKTtcbiIpOwogICAgICAgICBwdXNoKEBpbXBsQ29udGVudCwgIiAg
ICBpZiAodGhpc09iamVjdC0+cHV0RGVsZWdhdGUoZXhlYywgcHJvcGVydHlOYW1lLCB2YWx1ZSwg
c2xvdCkpXG4iKTsKQEAgLTE2MzIsMTMgKzE2MzAsMTMgQEAgc3ViIEdlbmVyYXRlSW1wbGVtZW50
YXRpb24KICAgICAjIEF0dHJpYnV0ZXMKICAgICBpZiAoJGhhc0dldHRlcikgewogICAgICAgICBp
ZiAoISRkYXRhTm9kZS0+ZXh0ZW5kZWRBdHRyaWJ1dGVzLT57IkpTSW5saW5lR2V0T3duUHJvcGVy
dHlTbG90In0gJiYgISRkYXRhTm9kZS0+ZXh0ZW5kZWRBdHRyaWJ1dGVzLT57IkN1c3RvbUdldE93
blByb3BlcnR5U2xvdCJ9KSB7Ci0gICAgICAgICAgICBwdXNoKEBpbXBsQ29udGVudCwgImJvb2wg
JHtjbGFzc05hbWV9OjpnZXRPd25Qcm9wZXJ0eVNsb3QoSlNDZWxsKiBjZWxsLCBFeGVjU3RhdGUq
IGV4ZWMsIGNvbnN0IElkZW50aWZpZXImIHByb3BlcnR5TmFtZSwgUHJvcGVydHlTbG90JiBzbG90
KVxuIik7CisgICAgICAgICAgICBwdXNoKEBpbXBsQ29udGVudCwgImJvb2wgJHtjbGFzc05hbWV9
OjpnZXRPd25Qcm9wZXJ0eVNsb3QoSlNDZWxsKiBjZWxsLCBFeGVjU3RhdGUqIGV4ZWMsIFByb3Bl
cnR5TmFtZSBwcm9wZXJ0eU5hbWUsIFByb3BlcnR5U2xvdCYgc2xvdClcbiIpOwogICAgICAgICAg
ICAgcHVzaChAaW1wbENvbnRlbnQsICJ7XG4iKTsKICAgICAgICAgICAgIHB1c2goQGltcGxDb250
ZW50LCAiICAgICR7Y2xhc3NOYW1lfSogdGhpc09iamVjdCA9IGpzQ2FzdDwke2NsYXNzTmFtZX0q
PihjZWxsKTtcbiIpOwogICAgICAgICAgICAgcHVzaChAaW1wbENvbnRlbnQsICIgICAgQVNTRVJU
X0dDX09CSkVDVF9JTkhFUklUUyh0aGlzT2JqZWN0LCAmc19pbmZvKTtcbiIpOwogICAgICAgICAg
ICAgcHVzaChAaW1wbENvbnRlbnQsIEdlbmVyYXRlR2V0T3duUHJvcGVydHlTbG90Qm9keSgkZGF0
YU5vZGUsICRpbnRlcmZhY2VOYW1lLCAkY2xhc3NOYW1lLCAkaW1wbENsYXNzTmFtZSwgJG51bUF0
dHJpYnV0ZXMgPiAwLCAwKSk7CiAgICAgICAgICAgICBwdXNoKEBpbXBsQ29udGVudCwgIn1cblxu
Iik7Ci0gICAgICAgICAgICBwdXNoKEBpbXBsQ29udGVudCwgImJvb2wgJHtjbGFzc05hbWV9Ojpn
ZXRPd25Qcm9wZXJ0eURlc2NyaXB0b3IoSlNPYmplY3QqIG9iamVjdCwgRXhlY1N0YXRlKiBleGVj
LCBjb25zdCBJZGVudGlmaWVyJiBwcm9wZXJ0eU5hbWUsIFByb3BlcnR5RGVzY3JpcHRvciYgZGVz
Y3JpcHRvcilcbiIpOworICAgICAgICAgICAgcHVzaChAaW1wbENvbnRlbnQsICJib29sICR7Y2xh
c3NOYW1lfTo6Z2V0T3duUHJvcGVydHlEZXNjcmlwdG9yKEpTT2JqZWN0KiBvYmplY3QsIEV4ZWNT
dGF0ZSogZXhlYywgUHJvcGVydHlOYW1lIHByb3BlcnR5TmFtZSwgUHJvcGVydHlEZXNjcmlwdG9y
JiBkZXNjcmlwdG9yKVxuIik7CiAgICAgICAgICAgICBwdXNoKEBpbXBsQ29udGVudCwgIntcbiIp
OwogICAgICAgICAgICAgcHVzaChAaW1wbENvbnRlbnQsICIgICAgJHtjbGFzc05hbWV9KiB0aGlz
T2JqZWN0ID0ganNDYXN0PCR7Y2xhc3NOYW1lfSo+KG9iamVjdCk7XG4iKTsKICAgICAgICAgICAg
IHB1c2goQGltcGxDb250ZW50LCAiICAgIEFTU0VSVF9HQ19PQkpFQ1RfSU5IRVJJVFModGhpc09i
amVjdCwgJnNfaW5mbyk7XG4iKTsKQEAgLTE2NzQsNyArMTY3Miw3IEBAIHN1YiBHZW5lcmF0ZUlt
cGxlbWVudGF0aW9uCiAgICAgICAgICAgICAgICAgbXkgJGF0dHJpYnV0ZUNvbmRpdGlvbmFsU3Ry
aW5nID0gJGNvZGVHZW5lcmF0b3ItPkdlbmVyYXRlQ29uZGl0aW9uYWxTdHJpbmcoJGF0dHJpYnV0
ZS0+c2lnbmF0dXJlKTsKICAgICAgICAgICAgICAgICBwdXNoKEBpbXBsQ29udGVudCwgIiNpZiAk
e2F0dHJpYnV0ZUNvbmRpdGlvbmFsU3RyaW5nfVxuIikgaWYgJGF0dHJpYnV0ZUNvbmRpdGlvbmFs
U3RyaW5nOwogCi0gICAgICAgICAgICAgICAgcHVzaChAaW1wbENvbnRlbnQsICJKU1ZhbHVlICR7
Z2V0RnVuY3Rpb25OYW1lfShFeGVjU3RhdGUqIGV4ZWMsIEpTVmFsdWUgc2xvdEJhc2UsIGNvbnN0
IElkZW50aWZpZXImKVxuIik7CisgICAgICAgICAgICAgICAgcHVzaChAaW1wbENvbnRlbnQsICJK
U1ZhbHVlICR7Z2V0RnVuY3Rpb25OYW1lfShFeGVjU3RhdGUqIGV4ZWMsIEpTVmFsdWUgc2xvdEJh
c2UsIFByb3BlcnR5TmFtZSlcbiIpOwogICAgICAgICAgICAgICAgIHB1c2goQGltcGxDb250ZW50
LCAie1xuIik7CiAgICAgICAgICAgICAgICAgcHVzaChAaW1wbENvbnRlbnQsICIgICAgJHtjbGFz
c05hbWV9KiBjYXN0ZWRUaGlzID0ganNDYXN0PCRjbGFzc05hbWUqPihhc09iamVjdChzbG90QmFz
ZSkpO1xuIik7CiAKQEAgLTE3OTMsNyArMTc5MSw3IEBAIHN1YiBHZW5lcmF0ZUltcGxlbWVudGF0
aW9uCiAgICAgICAgICAgICBpZiAoISRkYXRhTm9kZS0+ZXh0ZW5kZWRBdHRyaWJ1dGVzLT57Ik9t
aXRDb25zdHJ1Y3RvciJ9KSB7CiAgICAgICAgICAgICAgICAgbXkgJGNvbnN0cnVjdG9yRnVuY3Rp
b25OYW1lID0gImpzIiAuICRpbnRlcmZhY2VOYW1lIC4gIkNvbnN0cnVjdG9yIjsKIAotICAgICAg
ICAgICAgICAgIHB1c2goQGltcGxDb250ZW50LCAiSlNWYWx1ZSAke2NvbnN0cnVjdG9yRnVuY3Rp
b25OYW1lfShFeGVjU3RhdGUqIGV4ZWMsIEpTVmFsdWUgc2xvdEJhc2UsIGNvbnN0IElkZW50aWZp
ZXImKVxuIik7CisgICAgICAgICAgICAgICAgcHVzaChAaW1wbENvbnRlbnQsICJKU1ZhbHVlICR7
Y29uc3RydWN0b3JGdW5jdGlvbk5hbWV9KEV4ZWNTdGF0ZSogZXhlYywgSlNWYWx1ZSBzbG90QmFz
ZSwgUHJvcGVydHlOYW1lKVxuIik7CiAgICAgICAgICAgICAgICAgcHVzaChAaW1wbENvbnRlbnQs
ICJ7XG4iKTsKICAgICAgICAgICAgICAgICBwdXNoKEBpbXBsQ29udGVudCwgIiAgICAke2NsYXNz
TmFtZX0qIGRvbU9iamVjdCA9IGpzQ2FzdDwkY2xhc3NOYW1lKj4oYXNPYmplY3Qoc2xvdEJhc2Up
KTtcbiIpOwogCkBAIC0xODE5LDE0ICsxODE3LDEzIEBAIHN1YiBHZW5lcmF0ZUltcGxlbWVudGF0
aW9uCiAKICAgICAgICAgaWYgKCRoYXNTZXR0ZXIpIHsKICAgICAgICAgICAgIGlmICghJGRhdGFO
b2RlLT5leHRlbmRlZEF0dHJpYnV0ZXMtPnsiQ3VzdG9tUHV0RnVuY3Rpb24ifSkgewotICAgICAg
ICAgICAgICAgIHB1c2goQGltcGxDb250ZW50LCAidm9pZCAke2NsYXNzTmFtZX06OnB1dChKU0Nl
bGwqIGNlbGwsIEV4ZWNTdGF0ZSogZXhlYywgY29uc3QgSWRlbnRpZmllciYgcHJvcGVydHlOYW1l
LCBKU1ZhbHVlIHZhbHVlLCBQdXRQcm9wZXJ0eVNsb3QmIHNsb3QpXG4iKTsKKyAgICAgICAgICAg
ICAgICBwdXNoKEBpbXBsQ29udGVudCwgInZvaWQgJHtjbGFzc05hbWV9OjpwdXQoSlNDZWxsKiBj
ZWxsLCBFeGVjU3RhdGUqIGV4ZWMsIFByb3BlcnR5TmFtZSBwcm9wZXJ0eU5hbWUsIEpTVmFsdWUg
dmFsdWUsIFB1dFByb3BlcnR5U2xvdCYgc2xvdClcbiIpOwogICAgICAgICAgICAgICAgIHB1c2go
QGltcGxDb250ZW50LCAie1xuIik7CiAgICAgICAgICAgICAgICAgcHVzaChAaW1wbENvbnRlbnQs
ICIgICAgJHtjbGFzc05hbWV9KiB0aGlzT2JqZWN0ID0ganNDYXN0PCR7Y2xhc3NOYW1lfSo+KGNl
bGwpO1xuIik7CiAgICAgICAgICAgICAgICAgcHVzaChAaW1wbENvbnRlbnQsICIgICAgQVNTRVJU
X0dDX09CSkVDVF9JTkhFUklUUyh0aGlzT2JqZWN0LCAmc19pbmZvKTtcbiIpOwogICAgICAgICAg
ICAgICAgIGlmICgkZGF0YU5vZGUtPmV4dGVuZGVkQXR0cmlidXRlcy0+eyJDdXN0b21JbmRleGVk
U2V0dGVyIn0pIHsKLSAgICAgICAgICAgICAgICAgICAgcHVzaChAaW1wbENvbnRlbnQsICIgICAg
Ym9vbCBvaztcbiIpOwotICAgICAgICAgICAgICAgICAgICBwdXNoKEBpbXBsQ29udGVudCwgIiAg
ICB1bnNpZ25lZCBpbmRleCA9IHByb3BlcnR5TmFtZS50b1VJbnQzMihvayk7XG4iKTsKLSAgICAg
ICAgICAgICAgICAgICAgcHVzaChAaW1wbENvbnRlbnQsICIgICAgaWYgKG9rKSB7XG4iKTsKKyAg
ICAgICAgICAgICAgICAgICAgcHVzaChAaW1wbENvbnRlbnQsICIgICAgdW5zaWduZWQgaW5kZXgg
PSBwcm9wZXJ0eU5hbWUuYXNJbmRleCgpO1xuIik7CisgICAgICAgICAgICAgICAgICAgIHB1c2go
QGltcGxDb250ZW50LCAiICAgIGlmIChpbmRleCAhPSBQcm9wZXJ0eU5hbWU6Ok5vdEFuSW5kZXgp
IHtcbiIpOwogICAgICAgICAgICAgICAgICAgICBwdXNoKEBpbXBsQ29udGVudCwgIiAgICAgICAg
dGhpc09iamVjdC0+aW5kZXhTZXR0ZXIoZXhlYywgaW5kZXgsIHZhbHVlKTtcbiIpOwogICAgICAg
ICAgICAgICAgICAgICBwdXNoKEBpbXBsQ29udGVudCwgIiAgICAgICAgcmV0dXJuO1xuIik7CiAg
ICAgICAgICAgICAgICAgICAgIHB1c2goQGltcGxDb250ZW50LCAiICAgIH1cbiIpOwpAQCAtMjE5
OCw3ICsyMTk1LDcgQEAgc3ViIEdlbmVyYXRlSW1wbGVtZW50YXRpb24KICAgICAgICAgICAgIH0K
IAogICAgICAgICAgICAgIyBGSVhNRTogdGhpcyBjYXN0cyBpbnRvIGludCB0byBtYXRjaCBvdXIg
cHJldmlvdXMgYmVoYXZpb3Igd2hpY2ggdHVybmVkIDB4RkZGRkZGRkYgaW4gLTEgZm9yIE5vZGVG
aWx0ZXIuU0hPV19BTEwKLSAgICAgICAgICAgIHB1c2goQGltcGxDb250ZW50LCAiSlNWYWx1ZSAk
e2dldHRlcn0oRXhlY1N0YXRlKiBleGVjLCBKU1ZhbHVlLCBjb25zdCBJZGVudGlmaWVyJilcbiIp
OworICAgICAgICAgICAgcHVzaChAaW1wbENvbnRlbnQsICJKU1ZhbHVlICR7Z2V0dGVyfShFeGVj
U3RhdGUqIGV4ZWMsIEpTVmFsdWUsIFByb3BlcnR5TmFtZSlcbiIpOwogICAgICAgICAgICAgcHVz
aChAaW1wbENvbnRlbnQsICJ7XG4iKTsKICAgICAgICAgICAgIGlmICgkY29uc3RhbnQtPnR5cGUg
ZXEgIkRPTVN0cmluZyIpIHsKICAgICAgICAgICAgICAgICBwdXNoKEBpbXBsQ29udGVudCwgIiAg
ICByZXR1cm4ganNTdHJpbmdPck51bGwoZXhlYywgU3RyaW5nKCIgLiAkY29uc3RhbnQtPnZhbHVl
IC4gIikpO1xuIik7CkBAIC0yMjQ3LDE0ICsyMjQ0LDE0IEBAIHN1YiBHZW5lcmF0ZUltcGxlbWVu
dGF0aW9uCiAKICAgICBpZiAoJGludGVyZmFjZU5hbWUgZXEgIkhUTUxQcm9wZXJ0aWVzQ29sbGVj
dGlvbiIpIHsKICAgICAgICAgaWYgKCRkYXRhTm9kZS0+ZXh0ZW5kZWRBdHRyaWJ1dGVzLT57Ik5h
bWVkR2V0dGVyIn0pIHsKLSAgICAgICAgICAgIHB1c2goQGltcGxDb250ZW50LCAiYm9vbCAke2Ns
YXNzTmFtZX06OmNhbkdldEl0ZW1zRm9yTmFtZShFeGVjU3RhdGUqLCAkaW1wbENsYXNzTmFtZSog
Y29sbGVjdGlvbiwgY29uc3QgSWRlbnRpZmllciYgcHJvcGVydHlOYW1lKVxuIik7CisgICAgICAg
ICAgICBwdXNoKEBpbXBsQ29udGVudCwgImJvb2wgJHtjbGFzc05hbWV9OjpjYW5HZXRJdGVtc0Zv
ck5hbWUoRXhlY1N0YXRlKiwgJGltcGxDbGFzc05hbWUqIGNvbGxlY3Rpb24sIFByb3BlcnR5TmFt
ZSBwcm9wZXJ0eU5hbWUpXG4iKTsKICAgICAgICAgICAgIHB1c2goQGltcGxDb250ZW50LCAie1xu
Iik7Ci0gICAgICAgICAgICBwdXNoKEBpbXBsQ29udGVudCwgIiAgICByZXR1cm4gY29sbGVjdGlv
bi0+aGFzTmFtZWRJdGVtKGlkZW50aWZpZXJUb0F0b21pY1N0cmluZyhwcm9wZXJ0eU5hbWUpKTtc
biIpOworICAgICAgICAgICAgcHVzaChAaW1wbENvbnRlbnQsICIgICAgcmV0dXJuIGNvbGxlY3Rp
b24tPmhhc05hbWVkSXRlbShwcm9wZXJ0eU5hbWVUb0F0b21pY1N0cmluZyhwcm9wZXJ0eU5hbWUp
KTtcbiIpOwogICAgICAgICAgICAgcHVzaChAaW1wbENvbnRlbnQsICJ9XG5cbiIpOwotICAgICAg
ICAgICAgcHVzaChAaW1wbENvbnRlbnQsICJKU1ZhbHVlICR7Y2xhc3NOYW1lfTo6bmFtZUdldHRl
cihFeGVjU3RhdGUqIGV4ZWMsIEpTVmFsdWUgc2xvdEJhc2UsIGNvbnN0IElkZW50aWZpZXImIHBy
b3BlcnR5TmFtZSlcbiIpOworICAgICAgICAgICAgcHVzaChAaW1wbENvbnRlbnQsICJKU1ZhbHVl
ICR7Y2xhc3NOYW1lfTo6bmFtZUdldHRlcihFeGVjU3RhdGUqIGV4ZWMsIEpTVmFsdWUgc2xvdEJh
c2UsIFByb3BlcnR5TmFtZSBwcm9wZXJ0eU5hbWUpXG4iKTsKICAgICAgICAgICAgIHB1c2goQGlt
cGxDb250ZW50LCAie1xuIik7CiAgICAgICAgICAgICBwdXNoKEBpbXBsQ29udGVudCwgIiAgICAk
e2NsYXNzTmFtZX0qIHRoaXNPYmogPSBqc0Nhc3Q8JGNsYXNzTmFtZSo+KGFzT2JqZWN0KHNsb3RC
YXNlKSk7XG4iKTsKLSAgICAgICAgICAgIHB1c2goQGltcGxDb250ZW50LCAiICAgIHJldHVybiB0
b0pTKGV4ZWMsIHRoaXNPYmotPmdsb2JhbE9iamVjdCgpLCBzdGF0aWNfY2FzdDwkaW1wbENsYXNz
TmFtZSo+KHRoaXNPYmotPmltcGwoKSktPm5hbWVkSXRlbShpZGVudGlmaWVyVG9BdG9taWNTdHJp
bmcocHJvcGVydHlOYW1lKSkpO1xuIik7CisgICAgICAgICAgICBwdXNoKEBpbXBsQ29udGVudCwg
IiAgICByZXR1cm4gdG9KUyhleGVjLCB0aGlzT2JqLT5nbG9iYWxPYmplY3QoKSwgc3RhdGljX2Nh
c3Q8JGltcGxDbGFzc05hbWUqPih0aGlzT2JqLT5pbXBsKCkpLT5uYW1lZEl0ZW0ocHJvcGVydHlO
YW1lVG9BdG9taWNTdHJpbmcocHJvcGVydHlOYW1lKSkpO1xuIik7CiAgICAgICAgICAgICBwdXNo
KEBpbXBsQ29udGVudCwgIn1cblxuIik7CiAgICAgICAgIH0KICAgICB9CkBAIC0zMzg3LDggKzMz
ODQsOCBAQCBzdWIgR2VuZXJhdGVDb25zdHJ1Y3RvckRlY2xhcmF0aW9uCiAgICAgcHVzaChAJG91
dHB1dEFycmF5LCAiICAgICAgICByZXR1cm4gcHRyO1xuIik7CiAgICAgcHVzaChAJG91dHB1dEFy
cmF5LCAiICAgIH1cblxuIik7CiAKLSAgICBwdXNoKEAkb3V0cHV0QXJyYXksICIgICAgc3RhdGlj
IGJvb2wgZ2V0T3duUHJvcGVydHlTbG90KEpTQzo6SlNDZWxsKiwgSlNDOjpFeGVjU3RhdGUqLCBj
b25zdCBKU0M6OklkZW50aWZpZXImLCBKU0M6OlByb3BlcnR5U2xvdCYpO1xuIik7Ci0gICAgcHVz
aChAJG91dHB1dEFycmF5LCAiICAgIHN0YXRpYyBib29sIGdldE93blByb3BlcnR5RGVzY3JpcHRv
cihKU0M6OkpTT2JqZWN0KiwgSlNDOjpFeGVjU3RhdGUqLCBjb25zdCBKU0M6OklkZW50aWZpZXIm
LCBKU0M6OlByb3BlcnR5RGVzY3JpcHRvciYpO1xuIik7CisgICAgcHVzaChAJG91dHB1dEFycmF5
LCAiICAgIHN0YXRpYyBib29sIGdldE93blByb3BlcnR5U2xvdChKU0M6OkpTQ2VsbCosIEpTQzo6
RXhlY1N0YXRlKiwgSlNDOjpQcm9wZXJ0eU5hbWUsIEpTQzo6UHJvcGVydHlTbG90Jik7XG4iKTsK
KyAgICBwdXNoKEAkb3V0cHV0QXJyYXksICIgICAgc3RhdGljIGJvb2wgZ2V0T3duUHJvcGVydHlE
ZXNjcmlwdG9yKEpTQzo6SlNPYmplY3QqLCBKU0M6OkV4ZWNTdGF0ZSosIEpTQzo6UHJvcGVydHlO
YW1lLCBKU0M6OlByb3BlcnR5RGVzY3JpcHRvciYpO1xuIik7CiAgICAgcHVzaChAJG91dHB1dEFy
cmF5LCAiICAgIHN0YXRpYyBjb25zdCBKU0M6OkNsYXNzSW5mbyBzX2luZm87XG4iKTsKIAogICAg
IHB1c2goQCRvdXRwdXRBcnJheSwgIiAgICBzdGF0aWMgSlNDOjpTdHJ1Y3R1cmUqIGNyZWF0ZVN0
cnVjdHVyZShKU0M6OkpTR2xvYmFsRGF0YSYgZ2xvYmFsRGF0YSwgSlNDOjpKU0dsb2JhbE9iamVj
dCogZ2xvYmFsT2JqZWN0LCBKU0M6OkpTVmFsdWUgcHJvdG90eXBlKVxuIik7CkBAIC0zNTA0LDEy
ICszNTAxLDEyIEBAIHN1YiBHZW5lcmF0ZUNvbnN0cnVjdG9yRGVmaW5pdGlvbgogCiAgICAgICAg
IG15ICRraW5kID0gJGhhc1N0YXRpY0Z1bmN0aW9ucyA/ICJQcm9wZXJ0eSIgOiAiVmFsdWUiOwog
Ci0gICAgICAgIHB1c2goQCRvdXRwdXRBcnJheSwgImJvb2wgJHtjb25zdHJ1Y3RvckNsYXNzTmFt
ZX06OmdldE93blByb3BlcnR5U2xvdChKU0NlbGwqIGNlbGwsIEV4ZWNTdGF0ZSogZXhlYywgY29u
c3QgSWRlbnRpZmllciYgcHJvcGVydHlOYW1lLCBQcm9wZXJ0eVNsb3QmIHNsb3QpXG4iKTsKKyAg
ICAgICAgcHVzaChAJG91dHB1dEFycmF5LCAiYm9vbCAke2NvbnN0cnVjdG9yQ2xhc3NOYW1lfTo6
Z2V0T3duUHJvcGVydHlTbG90KEpTQ2VsbCogY2VsbCwgRXhlY1N0YXRlKiBleGVjLCBQcm9wZXJ0
eU5hbWUgcHJvcGVydHlOYW1lLCBQcm9wZXJ0eVNsb3QmIHNsb3QpXG4iKTsKICAgICAgICAgcHVz
aChAJG91dHB1dEFycmF5LCAie1xuIik7CiAgICAgICAgIHB1c2goQCRvdXRwdXRBcnJheSwgIiAg
ICByZXR1cm4gZ2V0U3RhdGljJHtraW5kfVNsb3Q8JHtjb25zdHJ1Y3RvckNsYXNzTmFtZX0sIEpT
RE9NV3JhcHBlcj4oZXhlYywgJiR7Y29uc3RydWN0b3JDbGFzc05hbWV9VGFibGUsIGpzQ2FzdDwk
e2NvbnN0cnVjdG9yQ2xhc3NOYW1lfSo+KGNlbGwpLCBwcm9wZXJ0eU5hbWUsIHNsb3QpO1xuIik7
CiAgICAgICAgIHB1c2goQCRvdXRwdXRBcnJheSwgIn1cblxuIik7CiAKLSAgICAgICAgcHVzaChA
JG91dHB1dEFycmF5LCAiYm9vbCAke2NvbnN0cnVjdG9yQ2xhc3NOYW1lfTo6Z2V0T3duUHJvcGVy
dHlEZXNjcmlwdG9yKEpTT2JqZWN0KiBvYmplY3QsIEV4ZWNTdGF0ZSogZXhlYywgY29uc3QgSWRl
bnRpZmllciYgcHJvcGVydHlOYW1lLCBQcm9wZXJ0eURlc2NyaXB0b3ImIGRlc2NyaXB0b3IpXG4i
KTsKKyAgICAgICAgcHVzaChAJG91dHB1dEFycmF5LCAiYm9vbCAke2NvbnN0cnVjdG9yQ2xhc3NO
YW1lfTo6Z2V0T3duUHJvcGVydHlEZXNjcmlwdG9yKEpTT2JqZWN0KiBvYmplY3QsIEV4ZWNTdGF0
ZSogZXhlYywgUHJvcGVydHlOYW1lIHByb3BlcnR5TmFtZSwgUHJvcGVydHlEZXNjcmlwdG9yJiBk
ZXNjcmlwdG9yKVxuIik7CiAgICAgICAgIHB1c2goQCRvdXRwdXRBcnJheSwgIntcbiIpOwogICAg
ICAgICBwdXNoKEAkb3V0cHV0QXJyYXksICIgICAgcmV0dXJuIGdldFN0YXRpYyR7a2luZH1EZXNj
cmlwdG9yPCR7Y29uc3RydWN0b3JDbGFzc05hbWV9LCBKU0RPTVdyYXBwZXI+KGV4ZWMsICYke2Nv
bnN0cnVjdG9yQ2xhc3NOYW1lfVRhYmxlLCBqc0Nhc3Q8JHtjb25zdHJ1Y3RvckNsYXNzTmFtZX0q
PihvYmplY3QpLCBwcm9wZXJ0eU5hbWUsIGRlc2NyaXB0b3IpO1xuIik7CiAgICAgICAgIHB1c2go
QCRvdXRwdXRBcnJheSwgIn1cblxuIik7CkluZGV4OiBTb3VyY2UvV2ViQ29yZS9icmlkZ2UvcnVu
dGltZV9hcnJheS5jcHAKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL1dlYkNvcmUvYnJpZGdlL3J1bnRp
bWVfYXJyYXkuY3BwCShyZXZpc2lvbiAxMTY2NjcpCisrKyBTb3VyY2UvV2ViQ29yZS9icmlkZ2Uv
cnVudGltZV9hcnJheS5jcHAJKHdvcmtpbmcgY29weSkKQEAgLTYwLDcgKzYwLDcgQEAgdm9pZCBS
dW50aW1lQXJyYXk6OmRlc3Ryb3koSlNDZWxsKiBjZWxsKQogICAgIGpzQ2FzdDxSdW50aW1lQXJy
YXkqPihjZWxsKS0+UnVudGltZUFycmF5Ojp+UnVudGltZUFycmF5KCk7CiB9CiAKLUpTVmFsdWUg
UnVudGltZUFycmF5OjpsZW5ndGhHZXR0ZXIoRXhlY1N0YXRlKiwgSlNWYWx1ZSBzbG90QmFzZSwg
Y29uc3QgSWRlbnRpZmllciYpCitKU1ZhbHVlIFJ1bnRpbWVBcnJheTo6bGVuZ3RoR2V0dGVyKEV4
ZWNTdGF0ZSosIEpTVmFsdWUgc2xvdEJhc2UsIFByb3BlcnR5TmFtZSkKIHsKICAgICBSdW50aW1l
QXJyYXkqIHRoaXNPYmogPSBzdGF0aWNfY2FzdDxSdW50aW1lQXJyYXkqPihhc09iamVjdChzbG90
QmFzZSkpOwogICAgIHJldHVybiBqc051bWJlcih0aGlzT2JqLT5nZXRMZW5ndGgoKSk7CkBAIC04
NSw3ICs4NSw3IEBAIHZvaWQgUnVudGltZUFycmF5OjpnZXRPd25Qcm9wZXJ0eU5hbWVzKEoKICAg
ICBKU09iamVjdDo6Z2V0T3duUHJvcGVydHlOYW1lcyh0aGlzT2JqZWN0LCBleGVjLCBwcm9wZXJ0
eU5hbWVzLCBtb2RlKTsKIH0KIAotYm9vbCBSdW50aW1lQXJyYXk6OmdldE93blByb3BlcnR5U2xv
dChKU0NlbGwqIGNlbGwsIEV4ZWNTdGF0ZSogZXhlYywgY29uc3QgSWRlbnRpZmllciYgcHJvcGVy
dHlOYW1lLCBQcm9wZXJ0eVNsb3QmIHNsb3QpCitib29sIFJ1bnRpbWVBcnJheTo6Z2V0T3duUHJv
cGVydHlTbG90KEpTQ2VsbCogY2VsbCwgRXhlY1N0YXRlKiBleGVjLCBQcm9wZXJ0eU5hbWUgcHJv
cGVydHlOYW1lLCBQcm9wZXJ0eVNsb3QmIHNsb3QpCiB7CiAgICAgUnVudGltZUFycmF5KiB0aGlz
T2JqZWN0ID0ganNDYXN0PFJ1bnRpbWVBcnJheSo+KGNlbGwpOwogICAgIGlmIChwcm9wZXJ0eU5h
bWUgPT0gZXhlYy0+cHJvcGVydHlOYW1lcygpLmxlbmd0aCkgewpAQCAtOTMsMTkgKzkzLDE3IEBA
IGJvb2wgUnVudGltZUFycmF5OjpnZXRPd25Qcm9wZXJ0eVNsb3QoSlMKICAgICAgICAgcmV0dXJu
IHRydWU7CiAgICAgfQogICAgIAotICAgIGJvb2wgb2s7Ci0gICAgdW5zaWduZWQgaW5kZXggPSBw
cm9wZXJ0eU5hbWUudG9BcnJheUluZGV4KG9rKTsKLSAgICBpZiAob2spIHsKLSAgICAgICAgaWYg
KGluZGV4IDwgdGhpc09iamVjdC0+Z2V0TGVuZ3RoKCkpIHsKLSAgICAgICAgICAgIHNsb3Quc2V0
Q3VzdG9tSW5kZXgodGhpc09iamVjdCwgaW5kZXgsIHRoaXNPYmplY3QtPmluZGV4R2V0dGVyKTsK
LSAgICAgICAgICAgIHJldHVybiB0cnVlOwotICAgICAgICB9CisgICAgdW5zaWduZWQgaW5kZXgg
PSBwcm9wZXJ0eU5hbWUuYXNJbmRleCgpOworICAgIGlmIChpbmRleCA8IHRoaXNPYmplY3QtPmdl
dExlbmd0aCgpKSB7CisgICAgICAgIEFTU0VSVChpbmRleCAhPSBQcm9wZXJ0eU5hbWU6Ok5vdEFu
SW5kZXgpOworICAgICAgICBzbG90LnNldEN1c3RvbUluZGV4KHRoaXNPYmplY3QsIGluZGV4LCB0
aGlzT2JqZWN0LT5pbmRleEdldHRlcik7CisgICAgICAgIHJldHVybiB0cnVlOwogICAgIH0KICAg
ICAKICAgICByZXR1cm4gSlNPYmplY3Q6OmdldE93blByb3BlcnR5U2xvdCh0aGlzT2JqZWN0LCBl
eGVjLCBwcm9wZXJ0eU5hbWUsIHNsb3QpOwogfQogCi1ib29sIFJ1bnRpbWVBcnJheTo6Z2V0T3du
UHJvcGVydHlEZXNjcmlwdG9yKEpTT2JqZWN0KiBvYmplY3QsIEV4ZWNTdGF0ZSogZXhlYywgY29u
c3QgSWRlbnRpZmllciYgcHJvcGVydHlOYW1lLCBQcm9wZXJ0eURlc2NyaXB0b3ImIGRlc2NyaXB0
b3IpCitib29sIFJ1bnRpbWVBcnJheTo6Z2V0T3duUHJvcGVydHlEZXNjcmlwdG9yKEpTT2JqZWN0
KiBvYmplY3QsIEV4ZWNTdGF0ZSogZXhlYywgUHJvcGVydHlOYW1lIHByb3BlcnR5TmFtZSwgUHJv
cGVydHlEZXNjcmlwdG9yJiBkZXNjcmlwdG9yKQogewogICAgIFJ1bnRpbWVBcnJheSogdGhpc09i
amVjdCA9IGpzQ2FzdDxSdW50aW1lQXJyYXkqPihvYmplY3QpOwogICAgIGlmIChwcm9wZXJ0eU5h
bWUgPT0gZXhlYy0+cHJvcGVydHlOYW1lcygpLmxlbmd0aCkgewpAQCAtMTE1LDE1ICsxMTMsMTMg
QEAgYm9vbCBSdW50aW1lQXJyYXk6OmdldE93blByb3BlcnR5RGVzY3JpcAogICAgICAgICByZXR1
cm4gdHJ1ZTsKICAgICB9CiAgICAgCi0gICAgYm9vbCBvazsKLSAgICB1bnNpZ25lZCBpbmRleCA9
IHByb3BlcnR5TmFtZS50b0FycmF5SW5kZXgob2spOwotICAgIGlmIChvaykgewotICAgICAgICBp
ZiAoaW5kZXggPCB0aGlzT2JqZWN0LT5nZXRMZW5ndGgoKSkgewotICAgICAgICAgICAgUHJvcGVy
dHlTbG90IHNsb3Q7Ci0gICAgICAgICAgICBzbG90LnNldEN1c3RvbUluZGV4KHRoaXNPYmplY3Qs
IGluZGV4LCBpbmRleEdldHRlcik7Ci0gICAgICAgICAgICBkZXNjcmlwdG9yLnNldERlc2NyaXB0
b3Ioc2xvdC5nZXRWYWx1ZShleGVjLCBwcm9wZXJ0eU5hbWUpLCBEb250RGVsZXRlIHwgRG9udEVu
dW0pOwotICAgICAgICAgICAgcmV0dXJuIHRydWU7Ci0gICAgICAgIH0KKyAgICB1bnNpZ25lZCBp
bmRleCA9IHByb3BlcnR5TmFtZS5hc0luZGV4KCk7CisgICAgaWYgKGluZGV4IDwgdGhpc09iamVj
dC0+Z2V0TGVuZ3RoKCkpIHsKKyAgICAgICAgQVNTRVJUKGluZGV4ICE9IFByb3BlcnR5TmFtZTo6
Tm90QW5JbmRleCk7CisgICAgICAgIFByb3BlcnR5U2xvdCBzbG90OworICAgICAgICBzbG90LnNl
dEN1c3RvbUluZGV4KHRoaXNPYmplY3QsIGluZGV4LCBpbmRleEdldHRlcik7CisgICAgICAgIGRl
c2NyaXB0b3Iuc2V0RGVzY3JpcHRvcihzbG90LmdldFZhbHVlKGV4ZWMsIHByb3BlcnR5TmFtZSks
IERvbnREZWxldGUgfCBEb250RW51bSk7CisgICAgICAgIHJldHVybiB0cnVlOwogICAgIH0KICAg
ICAKICAgICByZXR1cm4gSlNPYmplY3Q6OmdldE93blByb3BlcnR5RGVzY3JpcHRvcih0aGlzT2Jq
ZWN0LCBleGVjLCBwcm9wZXJ0eU5hbWUsIGRlc2NyaXB0b3IpOwpAQCAtMTQwLDcgKzEzNiw3IEBA
IGJvb2wgUnVudGltZUFycmF5OjpnZXRPd25Qcm9wZXJ0eVNsb3RCeUkKICAgICByZXR1cm4gSlNP
YmplY3Q6OmdldE93blByb3BlcnR5U2xvdEJ5SW5kZXgodGhpc09iamVjdCwgZXhlYywgaW5kZXgs
IHNsb3QpOwogfQogCi12b2lkIFJ1bnRpbWVBcnJheTo6cHV0KEpTQ2VsbCogY2VsbCwgRXhlY1N0
YXRlKiBleGVjLCBjb25zdCBJZGVudGlmaWVyJiBwcm9wZXJ0eU5hbWUsIEpTVmFsdWUgdmFsdWUs
IFB1dFByb3BlcnR5U2xvdCYgc2xvdCkKK3ZvaWQgUnVudGltZUFycmF5OjpwdXQoSlNDZWxsKiBj
ZWxsLCBFeGVjU3RhdGUqIGV4ZWMsIFByb3BlcnR5TmFtZSBwcm9wZXJ0eU5hbWUsIEpTVmFsdWUg
dmFsdWUsIFB1dFByb3BlcnR5U2xvdCYgc2xvdCkKIHsKICAgICBSdW50aW1lQXJyYXkqIHRoaXNP
YmplY3QgPSBqc0Nhc3Q8UnVudGltZUFycmF5Kj4oY2VsbCk7CiAgICAgaWYgKHByb3BlcnR5TmFt
ZSA9PSBleGVjLT5wcm9wZXJ0eU5hbWVzKCkubGVuZ3RoKSB7CkBAIC0xNDgsOSArMTQ0LDggQEAg
dm9pZCBSdW50aW1lQXJyYXk6OnB1dChKU0NlbGwqIGNlbGwsIEV4ZQogICAgICAgICByZXR1cm47
CiAgICAgfQogICAgIAotICAgIGJvb2wgb2s7Ci0gICAgdW5zaWduZWQgaW5kZXggPSBwcm9wZXJ0
eU5hbWUudG9BcnJheUluZGV4KG9rKTsKLSAgICBpZiAob2spIHsKKyAgICB1bnNpZ25lZCBpbmRl
eCA9IHByb3BlcnR5TmFtZS5hc0luZGV4KCk7CisgICAgaWYgKGluZGV4ICE9IFByb3BlcnR5TmFt
ZTo6Tm90QW5JbmRleCkgewogICAgICAgICB0aGlzT2JqZWN0LT5nZXRDb25jcmV0ZUFycmF5KCkt
PnNldFZhbHVlQXQoZXhlYywgaW5kZXgsIHZhbHVlKTsKICAgICAgICAgcmV0dXJuOwogICAgIH0K
QEAgLTE2OSw3ICsxNjQsNyBAQCB2b2lkIFJ1bnRpbWVBcnJheTo6cHV0QnlJbmRleChKU0NlbGwq
IGNlCiAgICAgdGhpc09iamVjdC0+Z2V0Q29uY3JldGVBcnJheSgpLT5zZXRWYWx1ZUF0KGV4ZWMs
IGluZGV4LCB2YWx1ZSk7CiB9CiAKLWJvb2wgUnVudGltZUFycmF5OjpkZWxldGVQcm9wZXJ0eShK
U0NlbGwqLCBFeGVjU3RhdGUqLCBjb25zdCBJZGVudGlmaWVyJikKK2Jvb2wgUnVudGltZUFycmF5
OjpkZWxldGVQcm9wZXJ0eShKU0NlbGwqLCBFeGVjU3RhdGUqLCBQcm9wZXJ0eU5hbWUpCiB7CiAg
ICAgcmV0dXJuIGZhbHNlOwogfQpJbmRleDogU291cmNlL1dlYkNvcmUvYnJpZGdlL3J1bnRpbWVf
YXJyYXkuaAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2ViQ29yZS9icmlkZ2UvcnVudGltZV9hcnJh
eS5oCShyZXZpc2lvbiAxMTY2NjcpCisrKyBTb3VyY2UvV2ViQ29yZS9icmlkZ2UvcnVudGltZV9h
cnJheS5oCSh3b3JraW5nIGNvcHkpCkBAIC01MSwxMyArNTEsMTMgQEAgcHVibGljOgogICAgIHN0
YXRpYyB2b2lkIGRlc3Ryb3koSlNDZWxsKik7CiAKICAgICBzdGF0aWMgdm9pZCBnZXRPd25Qcm9w
ZXJ0eU5hbWVzKEpTT2JqZWN0KiwgRXhlY1N0YXRlKiwgUHJvcGVydHlOYW1lQXJyYXkmLCBFbnVt
ZXJhdGlvbk1vZGUpOwotICAgIHN0YXRpYyBib29sIGdldE93blByb3BlcnR5U2xvdChKU0NlbGwq
LCBFeGVjU3RhdGUqLCBjb25zdCBJZGVudGlmaWVyJiwgUHJvcGVydHlTbG90Jik7CisgICAgc3Rh
dGljIGJvb2wgZ2V0T3duUHJvcGVydHlTbG90KEpTQ2VsbCosIEV4ZWNTdGF0ZSosIFByb3BlcnR5
TmFtZSwgUHJvcGVydHlTbG90Jik7CiAgICAgc3RhdGljIGJvb2wgZ2V0T3duUHJvcGVydHlTbG90
QnlJbmRleChKU0NlbGwqLCBFeGVjU3RhdGUqLCB1bnNpZ25lZCwgUHJvcGVydHlTbG90Jik7Ci0g
ICAgc3RhdGljIGJvb2wgZ2V0T3duUHJvcGVydHlEZXNjcmlwdG9yKEpTT2JqZWN0KiwgRXhlY1N0
YXRlKiwgY29uc3QgSWRlbnRpZmllciYsIFByb3BlcnR5RGVzY3JpcHRvciYpOwotICAgIHN0YXRp
YyB2b2lkIHB1dChKU0NlbGwqLCBFeGVjU3RhdGUqLCBjb25zdCBJZGVudGlmaWVyJiBwcm9wZXJ0
eU5hbWUsIEpTVmFsdWUsIFB1dFByb3BlcnR5U2xvdCYpOworICAgIHN0YXRpYyBib29sIGdldE93
blByb3BlcnR5RGVzY3JpcHRvcihKU09iamVjdCosIEV4ZWNTdGF0ZSosIFByb3BlcnR5TmFtZSwg
UHJvcGVydHlEZXNjcmlwdG9yJik7CisgICAgc3RhdGljIHZvaWQgcHV0KEpTQ2VsbCosIEV4ZWNT
dGF0ZSosIFByb3BlcnR5TmFtZSwgSlNWYWx1ZSwgUHV0UHJvcGVydHlTbG90Jik7CiAgICAgc3Rh
dGljIHZvaWQgcHV0QnlJbmRleChKU0NlbGwqLCBFeGVjU3RhdGUqLCB1bnNpZ25lZCBwcm9wZXJ0
eU5hbWUsIEpTVmFsdWUsIGJvb2wgc2hvdWxkVGhyb3cpOwogICAgIAotICAgIHN0YXRpYyBib29s
IGRlbGV0ZVByb3BlcnR5KEpTQ2VsbCosIEV4ZWNTdGF0ZSosIGNvbnN0IElkZW50aWZpZXIgJnBy
b3BlcnR5TmFtZSk7CisgICAgc3RhdGljIGJvb2wgZGVsZXRlUHJvcGVydHkoSlNDZWxsKiwgRXhl
Y1N0YXRlKiwgUHJvcGVydHlOYW1lKTsKICAgICBzdGF0aWMgYm9vbCBkZWxldGVQcm9wZXJ0eUJ5
SW5kZXgoSlNDZWxsKiwgRXhlY1N0YXRlKiwgdW5zaWduZWQgcHJvcGVydHlOYW1lKTsKICAgICAK
ICAgICB1bnNpZ25lZCBnZXRMZW5ndGgoKSBjb25zdCB7IHJldHVybiBtX2FycmF5LT5nZXRMZW5n
dGgoKTsgfQpAQCAtODMsNyArODMsNyBAQCBwcm90ZWN0ZWQ6CiAKIHByaXZhdGU6CiAgICAgUnVu
dGltZUFycmF5KEV4ZWNTdGF0ZSosIFN0cnVjdHVyZSopOwotICAgIHN0YXRpYyBKU1ZhbHVlIGxl
bmd0aEdldHRlcihFeGVjU3RhdGUqLCBKU1ZhbHVlLCBjb25zdCBJZGVudGlmaWVyJik7CisgICAg
c3RhdGljIEpTVmFsdWUgbGVuZ3RoR2V0dGVyKEV4ZWNTdGF0ZSosIEpTVmFsdWUsIFByb3BlcnR5
TmFtZSk7CiAgICAgc3RhdGljIEpTVmFsdWUgaW5kZXhHZXR0ZXIoRXhlY1N0YXRlKiwgSlNWYWx1
ZSwgdW5zaWduZWQpOwogCiAgICAgQmluZGluZ3NBcnJheSogbV9hcnJheTsKSW5kZXg6IFNvdXJj
ZS9XZWJDb3JlL2JyaWRnZS9ydW50aW1lX21ldGhvZC5jcHAKPT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNl
L1dlYkNvcmUvYnJpZGdlL3J1bnRpbWVfbWV0aG9kLmNwcAkocmV2aXNpb24gMTE2NjY3KQorKysg
U291cmNlL1dlYkNvcmUvYnJpZGdlL3J1bnRpbWVfbWV0aG9kLmNwcAkod29ya2luZyBjb3B5KQpA
QCAtNTUsMTMgKzU1LDEzIEBAIHZvaWQgUnVudGltZU1ldGhvZDo6ZGVzdHJveShKU0NlbGwqIGNl
bGwKICAgICBqc0Nhc3Q8UnVudGltZU1ldGhvZCo+KGNlbGwpLT5SdW50aW1lTWV0aG9kOjp+UnVu
dGltZU1ldGhvZCgpOwogfQogCi12b2lkIFJ1bnRpbWVNZXRob2Q6OmZpbmlzaENyZWF0aW9uKEpT
R2xvYmFsRGF0YSYgZ2xvYmFsRGF0YSwgY29uc3QgSWRlbnRpZmllciYgaWRlbnQpCit2b2lkIFJ1
bnRpbWVNZXRob2Q6OmZpbmlzaENyZWF0aW9uKEpTR2xvYmFsRGF0YSYgZ2xvYmFsRGF0YSwgY29u
c3QgVVN0cmluZyYgaWRlbnQpCiB7CiAgICAgQmFzZTo6ZmluaXNoQ3JlYXRpb24oZ2xvYmFsRGF0
YSwgaWRlbnQpOwogICAgIEFTU0VSVChpbmhlcml0cygmc19pbmZvKSk7CiB9CiAKLUpTVmFsdWUg
UnVudGltZU1ldGhvZDo6bGVuZ3RoR2V0dGVyKEV4ZWNTdGF0ZSosIEpTVmFsdWUgc2xvdEJhc2Us
IGNvbnN0IElkZW50aWZpZXImKQorSlNWYWx1ZSBSdW50aW1lTWV0aG9kOjpsZW5ndGhHZXR0ZXIo
RXhlY1N0YXRlKiwgSlNWYWx1ZSBzbG90QmFzZSwgUHJvcGVydHlOYW1lKQogewogICAgIFJ1bnRp
bWVNZXRob2QqIHRoaXNPYmogPSBzdGF0aWNfY2FzdDxSdW50aW1lTWV0aG9kKj4oYXNPYmplY3Qo
c2xvdEJhc2UpKTsKIApAQCAtNzQsNyArNzQsNyBAQCBKU1ZhbHVlIFJ1bnRpbWVNZXRob2Q6Omxl
bmd0aEdldHRlcihFeGVjCiAgICAgcmV0dXJuIGpzTnVtYmVyKHRoaXNPYmotPl9tZXRob2RMaXN0
LT5hdCgwKS0+bnVtUGFyYW1ldGVycygpKTsKIH0KIAotYm9vbCBSdW50aW1lTWV0aG9kOjpnZXRP
d25Qcm9wZXJ0eVNsb3QoSlNDZWxsKiBjZWxsLCBFeGVjU3RhdGUqIGV4ZWMsIGNvbnN0IElkZW50
aWZpZXImIHByb3BlcnR5TmFtZSwgUHJvcGVydHlTbG90ICZzbG90KQorYm9vbCBSdW50aW1lTWV0
aG9kOjpnZXRPd25Qcm9wZXJ0eVNsb3QoSlNDZWxsKiBjZWxsLCBFeGVjU3RhdGUqIGV4ZWMsIFBy
b3BlcnR5TmFtZSBwcm9wZXJ0eU5hbWUsIFByb3BlcnR5U2xvdCAmc2xvdCkKIHsKICAgICBSdW50
aW1lTWV0aG9kKiB0aGlzT2JqZWN0ID0ganNDYXN0PFJ1bnRpbWVNZXRob2QqPihjZWxsKTsKICAg
ICBpZiAocHJvcGVydHlOYW1lID09IGV4ZWMtPnByb3BlcnR5TmFtZXMoKS5sZW5ndGgpIHsKQEAg
LTg1LDcgKzg1LDcgQEAgYm9vbCBSdW50aW1lTWV0aG9kOjpnZXRPd25Qcm9wZXJ0eVNsb3QoSgog
ICAgIHJldHVybiBJbnRlcm5hbEZ1bmN0aW9uOjpnZXRPd25Qcm9wZXJ0eVNsb3QodGhpc09iamVj
dCwgZXhlYywgcHJvcGVydHlOYW1lLCBzbG90KTsKIH0KIAotYm9vbCBSdW50aW1lTWV0aG9kOjpn
ZXRPd25Qcm9wZXJ0eURlc2NyaXB0b3IoSlNPYmplY3QqIG9iamVjdCwgRXhlY1N0YXRlKiBleGVj
LCBjb25zdCBJZGVudGlmaWVyJiBwcm9wZXJ0eU5hbWUsIFByb3BlcnR5RGVzY3JpcHRvciAmZGVz
Y3JpcHRvcikKK2Jvb2wgUnVudGltZU1ldGhvZDo6Z2V0T3duUHJvcGVydHlEZXNjcmlwdG9yKEpT
T2JqZWN0KiBvYmplY3QsIEV4ZWNTdGF0ZSogZXhlYywgUHJvcGVydHlOYW1lIHByb3BlcnR5TmFt
ZSwgUHJvcGVydHlEZXNjcmlwdG9yICZkZXNjcmlwdG9yKQogewogICAgIFJ1bnRpbWVNZXRob2Qq
IHRoaXNPYmplY3QgPSBqc0Nhc3Q8UnVudGltZU1ldGhvZCo+KG9iamVjdCk7CiAgICAgaWYgKHBy
b3BlcnR5TmFtZSA9PSBleGVjLT5wcm9wZXJ0eU5hbWVzKCkubGVuZ3RoKSB7CkluZGV4OiBTb3Vy
Y2UvV2ViQ29yZS9icmlkZ2UvcnVudGltZV9tZXRob2QuaAo9PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2Uv
V2ViQ29yZS9icmlkZ2UvcnVudGltZV9tZXRob2QuaAkocmV2aXNpb24gMTE2NjY3KQorKysgU291
cmNlL1dlYkNvcmUvYnJpZGdlL3J1bnRpbWVfbWV0aG9kLmgJKHdvcmtpbmcgY29weSkKQEAgLTM5
LDcgKzM5LDcgQEAgcHVibGljOgogCiAgICAgc3RhdGljIHZvaWQgZGVzdHJveShKU0NlbGwqKTsK
IAotICAgIHN0YXRpYyBSdW50aW1lTWV0aG9kKiBjcmVhdGUoRXhlY1N0YXRlKiBleGVjLCBKU0ds
b2JhbE9iamVjdCogZ2xvYmFsT2JqZWN0LCBTdHJ1Y3R1cmUqIHN0cnVjdHVyZSwgY29uc3QgSWRl
bnRpZmllciYgbmFtZSwgQmluZGluZ3M6Ok1ldGhvZExpc3QmIG1ldGhvZExpc3QpCisgICAgc3Rh
dGljIFJ1bnRpbWVNZXRob2QqIGNyZWF0ZShFeGVjU3RhdGUqIGV4ZWMsIEpTR2xvYmFsT2JqZWN0
KiBnbG9iYWxPYmplY3QsIFN0cnVjdHVyZSogc3RydWN0dXJlLCBjb25zdCBVU3RyaW5nJiBuYW1l
LCBCaW5kaW5nczo6TWV0aG9kTGlzdCYgbWV0aG9kTGlzdCkKICAgICB7CiAgICAgICAgIFJ1bnRp
bWVNZXRob2QqIG1ldGhvZCA9IG5ldyAoTm90TnVsbCwgYWxsb2NhdGVDZWxsPFJ1bnRpbWVNZXRo
b2Q+KCpleGVjLT5oZWFwKCkpKSBSdW50aW1lTWV0aG9kKGdsb2JhbE9iamVjdCwgc3RydWN0dXJl
LCBtZXRob2RMaXN0KTsKICAgICAgICAgbWV0aG9kLT5maW5pc2hDcmVhdGlvbihleGVjLT5nbG9i
YWxEYXRhKCksIG5hbWUpOwpAQCAtNjIsMTUgKzYyLDE1IEBAIHB1YmxpYzoKIAogcHJvdGVjdGVk
OgogICAgIFJ1bnRpbWVNZXRob2QoSlNHbG9iYWxPYmplY3QqLCBTdHJ1Y3R1cmUqLCBCaW5kaW5n
czo6TWV0aG9kTGlzdCYpOwotICAgIHZvaWQgZmluaXNoQ3JlYXRpb24oSlNHbG9iYWxEYXRhJiwg
Y29uc3QgSWRlbnRpZmllciYpOworICAgIHZvaWQgZmluaXNoQ3JlYXRpb24oSlNHbG9iYWxEYXRh
JiwgY29uc3QgVVN0cmluZyYpOwogICAgIHN0YXRpYyBjb25zdCB1bnNpZ25lZCBTdHJ1Y3R1cmVG
bGFncyA9IE92ZXJyaWRlc0dldE93blByb3BlcnR5U2xvdCB8IEludGVybmFsRnVuY3Rpb246OlN0
cnVjdHVyZUZsYWdzOwogICAgIHN0YXRpYyBDYWxsVHlwZSBnZXRDYWxsRGF0YShKU0NlbGwqLCBD
YWxsRGF0YSYpOwogCi0gICAgc3RhdGljIGJvb2wgZ2V0T3duUHJvcGVydHlTbG90KEpTQ2VsbCos
IEV4ZWNTdGF0ZSosIGNvbnN0IElkZW50aWZpZXImLCBQcm9wZXJ0eVNsb3QmKTsKLSAgICBzdGF0
aWMgYm9vbCBnZXRPd25Qcm9wZXJ0eURlc2NyaXB0b3IoSlNPYmplY3QqLCBFeGVjU3RhdGUqLCBj
b25zdCBJZGVudGlmaWVyJiwgUHJvcGVydHlEZXNjcmlwdG9yJik7CisgICAgc3RhdGljIGJvb2wg
Z2V0T3duUHJvcGVydHlTbG90KEpTQ2VsbCosIEV4ZWNTdGF0ZSosIFByb3BlcnR5TmFtZSwgUHJv
cGVydHlTbG90Jik7CisgICAgc3RhdGljIGJvb2wgZ2V0T3duUHJvcGVydHlEZXNjcmlwdG9yKEpT
T2JqZWN0KiwgRXhlY1N0YXRlKiwgUHJvcGVydHlOYW1lLCBQcm9wZXJ0eURlc2NyaXB0b3ImKTsK
IAogcHJpdmF0ZToKLSAgICBzdGF0aWMgSlNWYWx1ZSBsZW5ndGhHZXR0ZXIoRXhlY1N0YXRlKiwg
SlNWYWx1ZSwgY29uc3QgSWRlbnRpZmllciYpOworICAgIHN0YXRpYyBKU1ZhbHVlIGxlbmd0aEdl
dHRlcihFeGVjU3RhdGUqLCBKU1ZhbHVlLCBQcm9wZXJ0eU5hbWUpOwogCiAgICAgT3duUHRyPEJp
bmRpbmdzOjpNZXRob2RMaXN0PiBfbWV0aG9kTGlzdDsKIH07CkluZGV4OiBTb3VyY2UvV2ViQ29y
ZS9icmlkZ2UvcnVudGltZV9vYmplY3QuY3BwCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9XZWJDb3Jl
L2JyaWRnZS9ydW50aW1lX29iamVjdC5jcHAJKHJldmlzaW9uIDExNjY2NykKKysrIFNvdXJjZS9X
ZWJDb3JlL2JyaWRnZS9ydW50aW1lX29iamVjdC5jcHAJKHdvcmtpbmcgY29weSkKQEAgLTY0LDcg
KzY0LDcgQEAgdm9pZCBSdW50aW1lT2JqZWN0OjppbnZhbGlkYXRlKCkKICAgICBtX2luc3RhbmNl
ID0gMDsKIH0KIAotSlNWYWx1ZSBSdW50aW1lT2JqZWN0OjpmYWxsYmFja09iamVjdEdldHRlcihF
eGVjU3RhdGUqIGV4ZWMsIEpTVmFsdWUgc2xvdEJhc2UsIGNvbnN0IElkZW50aWZpZXImIHByb3Bl
cnR5TmFtZSkKK0pTVmFsdWUgUnVudGltZU9iamVjdDo6ZmFsbGJhY2tPYmplY3RHZXR0ZXIoRXhl
Y1N0YXRlKiBleGVjLCBKU1ZhbHVlIHNsb3RCYXNlLCBQcm9wZXJ0eU5hbWUgcHJvcGVydHlOYW1l
KQogewogICAgIFJ1bnRpbWVPYmplY3QqIHRoaXNPYmogPSBzdGF0aWNfY2FzdDxSdW50aW1lT2Jq
ZWN0Kj4oYXNPYmplY3Qoc2xvdEJhc2UpKTsKICAgICBSZWZQdHI8SW5zdGFuY2U+IGluc3RhbmNl
ID0gdGhpc09iai0+bV9pbnN0YW5jZTsKQEAgLTgyLDcgKzgyLDcgQEAgSlNWYWx1ZSBSdW50aW1l
T2JqZWN0OjpmYWxsYmFja09iamVjdEdldAogICAgIHJldHVybiByZXN1bHQ7CiB9CiAKLUpTVmFs
dWUgUnVudGltZU9iamVjdDo6ZmllbGRHZXR0ZXIoRXhlY1N0YXRlKiBleGVjLCBKU1ZhbHVlIHNs
b3RCYXNlLCBjb25zdCBJZGVudGlmaWVyJiBwcm9wZXJ0eU5hbWUpCitKU1ZhbHVlIFJ1bnRpbWVP
YmplY3Q6OmZpZWxkR2V0dGVyKEV4ZWNTdGF0ZSogZXhlYywgSlNWYWx1ZSBzbG90QmFzZSwgUHJv
cGVydHlOYW1lIHByb3BlcnR5TmFtZSkKIHsgICAgCiAgICAgUnVudGltZU9iamVjdCogdGhpc09i
aiA9IHN0YXRpY19jYXN0PFJ1bnRpbWVPYmplY3QqPihhc09iamVjdChzbG90QmFzZSkpOwogICAg
IFJlZlB0cjxJbnN0YW5jZT4gaW5zdGFuY2UgPSB0aGlzT2JqLT5tX2luc3RhbmNlOwpAQCAtMTAx
LDcgKzEwMSw3IEBAIEpTVmFsdWUgUnVudGltZU9iamVjdDo6ZmllbGRHZXR0ZXIoRXhlY1MKICAg
ICByZXR1cm4gcmVzdWx0OwogfQogCi1KU1ZhbHVlIFJ1bnRpbWVPYmplY3Q6Om1ldGhvZEdldHRl
cihFeGVjU3RhdGUqIGV4ZWMsIEpTVmFsdWUgc2xvdEJhc2UsIGNvbnN0IElkZW50aWZpZXImIHBy
b3BlcnR5TmFtZSkKK0pTVmFsdWUgUnVudGltZU9iamVjdDo6bWV0aG9kR2V0dGVyKEV4ZWNTdGF0
ZSogZXhlYywgSlNWYWx1ZSBzbG90QmFzZSwgUHJvcGVydHlOYW1lIHByb3BlcnR5TmFtZSkKIHsK
ICAgICBSdW50aW1lT2JqZWN0KiB0aGlzT2JqID0gc3RhdGljX2Nhc3Q8UnVudGltZU9iamVjdCo+
KGFzT2JqZWN0KHNsb3RCYXNlKSk7CiAgICAgUmVmUHRyPEluc3RhbmNlPiBpbnN0YW5jZSA9IHRo
aXNPYmotPm1faW5zdGFuY2U7CkBAIC0xMTgsNyArMTE4LDcgQEAgSlNWYWx1ZSBSdW50aW1lT2Jq
ZWN0OjptZXRob2RHZXR0ZXIoRXhlYwogICAgIHJldHVybiBtZXRob2Q7CiB9CiAKLWJvb2wgUnVu
dGltZU9iamVjdDo6Z2V0T3duUHJvcGVydHlTbG90KEpTQ2VsbCogY2VsbCwgRXhlY1N0YXRlICpl
eGVjLCBjb25zdCBJZGVudGlmaWVyJiBwcm9wZXJ0eU5hbWUsIFByb3BlcnR5U2xvdCYgc2xvdCkK
K2Jvb2wgUnVudGltZU9iamVjdDo6Z2V0T3duUHJvcGVydHlTbG90KEpTQ2VsbCogY2VsbCwgRXhl
Y1N0YXRlICpleGVjLCBQcm9wZXJ0eU5hbWUgcHJvcGVydHlOYW1lLCBQcm9wZXJ0eVNsb3QmIHNs
b3QpCiB7CiAgICAgUnVudGltZU9iamVjdCogdGhpc09iamVjdCA9IGpzQ2FzdDxSdW50aW1lT2Jq
ZWN0Kj4oY2VsbCk7CiAgICAgaWYgKCF0aGlzT2JqZWN0LT5tX2luc3RhbmNlKSB7CkBAIC0xNjQs
NyArMTY0LDcgQEAgYm9vbCBSdW50aW1lT2JqZWN0OjpnZXRPd25Qcm9wZXJ0eVNsb3QoSgogICAg
IHJldHVybiBpbnN0YW5jZS0+Z2V0T3duUHJvcGVydHlTbG90KHRoaXNPYmplY3QsIGV4ZWMsIHBy
b3BlcnR5TmFtZSwgc2xvdCk7CiB9CiAKLWJvb2wgUnVudGltZU9iamVjdDo6Z2V0T3duUHJvcGVy
dHlEZXNjcmlwdG9yKEpTT2JqZWN0KiBvYmplY3QsIEV4ZWNTdGF0ZSAqZXhlYywgY29uc3QgSWRl
bnRpZmllciYgcHJvcGVydHlOYW1lLCBQcm9wZXJ0eURlc2NyaXB0b3ImIGRlc2NyaXB0b3IpCiti
b29sIFJ1bnRpbWVPYmplY3Q6OmdldE93blByb3BlcnR5RGVzY3JpcHRvcihKU09iamVjdCogb2Jq
ZWN0LCBFeGVjU3RhdGUgKmV4ZWMsIFByb3BlcnR5TmFtZSBwcm9wZXJ0eU5hbWUsIFByb3BlcnR5
RGVzY3JpcHRvciYgZGVzY3JpcHRvcikKIHsKICAgICBSdW50aW1lT2JqZWN0KiB0aGlzT2JqZWN0
ID0ganNDYXN0PFJ1bnRpbWVPYmplY3QqPihvYmplY3QpOwogICAgIGlmICghdGhpc09iamVjdC0+
bV9pbnN0YW5jZSkgewpAQCAtMjE0LDcgKzIxNCw3IEBAIGJvb2wgUnVudGltZU9iamVjdDo6Z2V0
T3duUHJvcGVydHlEZXNjcmkKICAgICByZXR1cm4gaW5zdGFuY2UtPmdldE93blByb3BlcnR5RGVz
Y3JpcHRvcih0aGlzT2JqZWN0LCBleGVjLCBwcm9wZXJ0eU5hbWUsIGRlc2NyaXB0b3IpOwogfQog
Ci12b2lkIFJ1bnRpbWVPYmplY3Q6OnB1dChKU0NlbGwqIGNlbGwsIEV4ZWNTdGF0ZSogZXhlYywg
Y29uc3QgSWRlbnRpZmllciYgcHJvcGVydHlOYW1lLCBKU1ZhbHVlIHZhbHVlLCBQdXRQcm9wZXJ0
eVNsb3QmIHNsb3QpCit2b2lkIFJ1bnRpbWVPYmplY3Q6OnB1dChKU0NlbGwqIGNlbGwsIEV4ZWNT
dGF0ZSogZXhlYywgUHJvcGVydHlOYW1lIHByb3BlcnR5TmFtZSwgSlNWYWx1ZSB2YWx1ZSwgUHV0
UHJvcGVydHlTbG90JiBzbG90KQogewogICAgIFJ1bnRpbWVPYmplY3QqIHRoaXNPYmplY3QgPSBq
c0Nhc3Q8UnVudGltZU9iamVjdCo+KGNlbGwpOwogICAgIGlmICghdGhpc09iamVjdC0+bV9pbnN0
YW5jZSkgewpAQCAtMjM1LDcgKzIzNSw3IEBAIHZvaWQgUnVudGltZU9iamVjdDo6cHV0KEpTQ2Vs
bCogY2VsbCwgRXgKICAgICBpbnN0YW5jZS0+ZW5kKCk7CiB9CiAKLWJvb2wgUnVudGltZU9iamVj
dDo6ZGVsZXRlUHJvcGVydHkoSlNDZWxsKiwgRXhlY1N0YXRlKiwgY29uc3QgSWRlbnRpZmllciYp
Citib29sIFJ1bnRpbWVPYmplY3Q6OmRlbGV0ZVByb3BlcnR5KEpTQ2VsbCosIEV4ZWNTdGF0ZSos
IFByb3BlcnR5TmFtZSkKIHsKICAgICAvLyBDYW4gbmV2ZXIgcmVtb3ZlIGEgcHJvcGVydHkgb2Yg
YSBSdW50aW1lT2JqZWN0LgogICAgIHJldHVybiBmYWxzZTsKSW5kZXg6IFNvdXJjZS9XZWJDb3Jl
L2JyaWRnZS9ydW50aW1lX29iamVjdC5oCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9XZWJDb3JlL2Jy
aWRnZS9ydW50aW1lX29iamVjdC5oCShyZXZpc2lvbiAxMTY2NjcpCisrKyBTb3VyY2UvV2ViQ29y
ZS9icmlkZ2UvcnVudGltZV9vYmplY3QuaAkod29ya2luZyBjb3B5KQpAQCAtNDUsMTAgKzQ1LDEw
IEBAIHB1YmxpYzoKIAogICAgIHN0YXRpYyB2b2lkIGRlc3Ryb3koSlNDZWxsKik7CiAKLSAgICBz
dGF0aWMgYm9vbCBnZXRPd25Qcm9wZXJ0eVNsb3QoSlNDZWxsKiwgRXhlY1N0YXRlKiwgY29uc3Qg
SWRlbnRpZmllciYgcHJvcGVydHlOYW1lLCBQcm9wZXJ0eVNsb3QmKTsKLSAgICBzdGF0aWMgYm9v
bCBnZXRPd25Qcm9wZXJ0eURlc2NyaXB0b3IoSlNPYmplY3QqLCBFeGVjU3RhdGUqLCBjb25zdCBJ
ZGVudGlmaWVyJiBwcm9wZXJ0eU5hbWUsIFByb3BlcnR5RGVzY3JpcHRvciYpOwotICAgIHN0YXRp
YyB2b2lkIHB1dChKU0NlbGwqLCBFeGVjU3RhdGUqLCBjb25zdCBJZGVudGlmaWVyJiBwcm9wZXJ0
eU5hbWUsIEpTVmFsdWUsIFB1dFByb3BlcnR5U2xvdCYpOwotICAgIHN0YXRpYyBib29sIGRlbGV0
ZVByb3BlcnR5KEpTQ2VsbCosIEV4ZWNTdGF0ZSosIGNvbnN0IElkZW50aWZpZXImIHByb3BlcnR5
TmFtZSk7CisgICAgc3RhdGljIGJvb2wgZ2V0T3duUHJvcGVydHlTbG90KEpTQ2VsbCosIEV4ZWNT
dGF0ZSosIFByb3BlcnR5TmFtZSwgUHJvcGVydHlTbG90Jik7CisgICAgc3RhdGljIGJvb2wgZ2V0
T3duUHJvcGVydHlEZXNjcmlwdG9yKEpTT2JqZWN0KiwgRXhlY1N0YXRlKiwgUHJvcGVydHlOYW1l
LCBQcm9wZXJ0eURlc2NyaXB0b3ImKTsKKyAgICBzdGF0aWMgdm9pZCBwdXQoSlNDZWxsKiwgRXhl
Y1N0YXRlKiwgUHJvcGVydHlOYW1lLCBKU1ZhbHVlLCBQdXRQcm9wZXJ0eVNsb3QmKTsKKyAgICBz
dGF0aWMgYm9vbCBkZWxldGVQcm9wZXJ0eShKU0NlbGwqLCBFeGVjU3RhdGUqLCBQcm9wZXJ0eU5h
bWUpOwogICAgIHN0YXRpYyBKU1ZhbHVlIGRlZmF1bHRWYWx1ZShjb25zdCBKU09iamVjdCosIEV4
ZWNTdGF0ZSosIFByZWZlcnJlZFByaW1pdGl2ZVR5cGUpOwogICAgIHN0YXRpYyBDYWxsVHlwZSBn
ZXRDYWxsRGF0YShKU0NlbGwqLCBDYWxsRGF0YSYpOwogICAgIHN0YXRpYyBDb25zdHJ1Y3RUeXBl
IGdldENvbnN0cnVjdERhdGEoSlNDZWxsKiwgQ29uc3RydWN0RGF0YSYpOwpAQCAtNzksOSArNzks
OSBAQCBwcm90ZWN0ZWQ6CiAgICAgc3RhdGljIGNvbnN0IHVuc2lnbmVkIFN0cnVjdHVyZUZsYWdz
ID0gT3ZlcnJpZGVzR2V0T3duUHJvcGVydHlTbG90IHwgT3ZlcnJpZGVzR2V0UHJvcGVydHlOYW1l
cyB8IEJhc2U6OlN0cnVjdHVyZUZsYWdzOwogCiBwcml2YXRlOgotICAgIHN0YXRpYyBKU1ZhbHVl
IGZhbGxiYWNrT2JqZWN0R2V0dGVyKEV4ZWNTdGF0ZSosIEpTVmFsdWUsIGNvbnN0IElkZW50aWZp
ZXImKTsKLSAgICBzdGF0aWMgSlNWYWx1ZSBmaWVsZEdldHRlcihFeGVjU3RhdGUqLCBKU1ZhbHVl
LCBjb25zdCBJZGVudGlmaWVyJik7Ci0gICAgc3RhdGljIEpTVmFsdWUgbWV0aG9kR2V0dGVyKEV4
ZWNTdGF0ZSosIEpTVmFsdWUsIGNvbnN0IElkZW50aWZpZXImKTsKKyAgICBzdGF0aWMgSlNWYWx1
ZSBmYWxsYmFja09iamVjdEdldHRlcihFeGVjU3RhdGUqLCBKU1ZhbHVlLCBQcm9wZXJ0eU5hbWUp
OworICAgIHN0YXRpYyBKU1ZhbHVlIGZpZWxkR2V0dGVyKEV4ZWNTdGF0ZSosIEpTVmFsdWUsIFBy
b3BlcnR5TmFtZSk7CisgICAgc3RhdGljIEpTVmFsdWUgbWV0aG9kR2V0dGVyKEV4ZWNTdGF0ZSos
IEpTVmFsdWUsIFByb3BlcnR5TmFtZSk7CiAKICAgICBSZWZQdHI8SW5zdGFuY2U+IG1faW5zdGFu
Y2U7CiB9OwpJbmRleDogU291cmNlL1dlYkNvcmUvYnJpZGdlL2MvY19jbGFzcy5jcHAKPT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PQotLS0gU291cmNlL1dlYkNvcmUvYnJpZGdlL2MvY19jbGFzcy5jcHAJKHJldmlzaW9uIDEx
NjY2NykKKysrIFNvdXJjZS9XZWJDb3JlL2JyaWRnZS9jL2NfY2xhc3MuY3BwCSh3b3JraW5nIGNv
cHkpCkBAIC03MywyNCArNzMsMjYgQEAgQ0NsYXNzKiBDQ2xhc3M6OmNsYXNzRm9ySXNBKE5QQ2xh
c3MqIGlzYQogICAgIHJldHVybiBhQ2xhc3M7CiB9CiAKLU1ldGhvZExpc3QgQ0NsYXNzOjptZXRo
b2RzTmFtZWQoY29uc3QgSWRlbnRpZmllciYgaWRlbnRpZmllciwgSW5zdGFuY2UqIGluc3RhbmNl
KSBjb25zdAorTWV0aG9kTGlzdCBDQ2xhc3M6Om1ldGhvZHNOYW1lZChQcm9wZXJ0eU5hbWUgaWRl
bnRpZmllciwgSW5zdGFuY2UqIGluc3RhbmNlKSBjb25zdAogeworICAgIFVTdHJpbmcgbmFtZShp
ZGVudGlmaWVyLmltcGwoKSk7CisgICAgCiAgICAgTWV0aG9kTGlzdCBtZXRob2RMaXN0OwogCi0g
ICAgTWV0aG9kKiBtZXRob2QgPSBfbWV0aG9kcy5nZXQoaWRlbnRpZmllci51c3RyaW5nKCkuaW1w
bCgpKTsKKyAgICBNZXRob2QqIG1ldGhvZCA9IF9tZXRob2RzLmdldChuYW1lLmltcGwoKSk7CiAg
ICAgaWYgKG1ldGhvZCkgewogICAgICAgICBtZXRob2RMaXN0LmFwcGVuZChtZXRob2QpOwogICAg
ICAgICByZXR1cm4gbWV0aG9kTGlzdDsKICAgICB9CiAKLSAgICBOUElkZW50aWZpZXIgaWRlbnQg
PSBfTlBOX0dldFN0cmluZ0lkZW50aWZpZXIoaWRlbnRpZmllci5hc2NpaSgpLmRhdGEoKSk7Cisg
ICAgTlBJZGVudGlmaWVyIGlkZW50ID0gX05QTl9HZXRTdHJpbmdJZGVudGlmaWVyKG5hbWUuYXNj
aWkoKS5kYXRhKCkpOwogICAgIGNvbnN0IENJbnN0YW5jZSogaW5zdCA9IHN0YXRpY19jYXN0PGNv
bnN0IENJbnN0YW5jZSo+KGluc3RhbmNlKTsKICAgICBOUE9iamVjdCogb2JqID0gaW5zdC0+Z2V0
T2JqZWN0KCk7CiAgICAgaWYgKF9pc2EtPmhhc01ldGhvZCAmJiBfaXNhLT5oYXNNZXRob2Qob2Jq
LCBpZGVudCkpewogICAgICAgICBNZXRob2QqIGFNZXRob2QgPSBuZXcgQ01ldGhvZChpZGVudCk7
IC8vIGRlbGV0ZWQgaW4gdGhlIENDbGFzcyBkZXN0cnVjdG9yCiAgICAgICAgIHsKICAgICAgICAg
ICAgIEpTTG9jayBsb2NrKFNpbGVuY2VBc3NlcnRpb25zT25seSk7Ci0gICAgICAgICAgICBfbWV0
aG9kcy5zZXQoaWRlbnRpZmllci51c3RyaW5nKCkuaW1wbCgpLCBhTWV0aG9kKTsKKyAgICAgICAg
ICAgIF9tZXRob2RzLnNldChuYW1lLmltcGwoKSwgYU1ldGhvZCk7CiAgICAgICAgIH0KICAgICAg
ICAgbWV0aG9kTGlzdC5hcHBlbmQoYU1ldGhvZCk7CiAgICAgfQpAQCAtOTgsMjAgKzEwMCwyMiBA
QCBNZXRob2RMaXN0IENDbGFzczo6bWV0aG9kc05hbWVkKGNvbnN0IElkCiAgICAgcmV0dXJuIG1l
dGhvZExpc3Q7CiB9CiAKLUZpZWxkKiBDQ2xhc3M6OmZpZWxkTmFtZWQoY29uc3QgSWRlbnRpZmll
ciYgaWRlbnRpZmllciwgSW5zdGFuY2UqIGluc3RhbmNlKSBjb25zdAorRmllbGQqIENDbGFzczo6
ZmllbGROYW1lZChQcm9wZXJ0eU5hbWUgaWRlbnRpZmllciwgSW5zdGFuY2UqIGluc3RhbmNlKSBj
b25zdAogewotICAgIEZpZWxkKiBhRmllbGQgPSBfZmllbGRzLmdldChpZGVudGlmaWVyLnVzdHJp
bmcoKS5pbXBsKCkpOworICAgIFVTdHJpbmcgbmFtZShpZGVudGlmaWVyLmltcGwoKSk7CisgICAg
CisgICAgRmllbGQqIGFGaWVsZCA9IF9maWVsZHMuZ2V0KG5hbWUuaW1wbCgpKTsKICAgICBpZiAo
YUZpZWxkKQogICAgICAgICByZXR1cm4gYUZpZWxkOwogICAgIAotICAgIE5QSWRlbnRpZmllciBp
ZGVudCA9IF9OUE5fR2V0U3RyaW5nSWRlbnRpZmllcihpZGVudGlmaWVyLmFzY2lpKCkuZGF0YSgp
KTsKKyAgICBOUElkZW50aWZpZXIgaWRlbnQgPSBfTlBOX0dldFN0cmluZ0lkZW50aWZpZXIobmFt
ZS5hc2NpaSgpLmRhdGEoKSk7CiAgICAgY29uc3QgQ0luc3RhbmNlKiBpbnN0ID0gc3RhdGljX2Nh
c3Q8Y29uc3QgQ0luc3RhbmNlKj4oaW5zdGFuY2UpOwogICAgIE5QT2JqZWN0KiBvYmogPSBpbnN0
LT5nZXRPYmplY3QoKTsKICAgICBpZiAoX2lzYS0+aGFzUHJvcGVydHkgJiYgX2lzYS0+aGFzUHJv
cGVydHkob2JqLCBpZGVudCkpewogICAgICAgICBhRmllbGQgPSBuZXcgQ0ZpZWxkKGlkZW50KTsg
Ly8gZGVsZXRlZCBpbiB0aGUgQ0NsYXNzIGRlc3RydWN0b3IKICAgICAgICAgewogICAgICAgICAg
ICAgSlNMb2NrIGxvY2soU2lsZW5jZUFzc2VydGlvbnNPbmx5KTsKLSAgICAgICAgICAgIF9maWVs
ZHMuc2V0KGlkZW50aWZpZXIudXN0cmluZygpLmltcGwoKSwgYUZpZWxkKTsKKyAgICAgICAgICAg
IF9maWVsZHMuc2V0KG5hbWUuaW1wbCgpLCBhRmllbGQpOwogICAgICAgICB9CiAgICAgfQogICAg
IHJldHVybiBhRmllbGQ7CkluZGV4OiBTb3VyY2UvV2ViQ29yZS9icmlkZ2UvYy9jX2NsYXNzLmgK
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PQotLS0gU291cmNlL1dlYkNvcmUvYnJpZGdlL2MvY19jbGFzcy5oCShyZXZpc2lv
biAxMTY2NjcpCisrKyBTb3VyY2UvV2ViQ29yZS9icmlkZ2UvYy9jX2NsYXNzLmgJKHdvcmtpbmcg
Y29weSkKQEAgLTQzLDggKzQzLDggQEAgcHVibGljOgogICAgIHN0YXRpYyBDQ2xhc3MqIGNsYXNz
Rm9ySXNBKE5QQ2xhc3MqKTsKICAgICB2aXJ0dWFsIH5DQ2xhc3MoKTsKIAotICAgIHZpcnR1YWwg
TWV0aG9kTGlzdCBtZXRob2RzTmFtZWQoY29uc3QgSWRlbnRpZmllciYsIEluc3RhbmNlKikgY29u
c3Q7Ci0gICAgdmlydHVhbCBGaWVsZCogZmllbGROYW1lZChjb25zdCBJZGVudGlmaWVyJiwgSW5z
dGFuY2UqKSBjb25zdDsKKyAgICB2aXJ0dWFsIE1ldGhvZExpc3QgbWV0aG9kc05hbWVkKFByb3Bl
cnR5TmFtZSwgSW5zdGFuY2UqKSBjb25zdDsKKyAgICB2aXJ0dWFsIEZpZWxkKiBmaWVsZE5hbWVk
KFByb3BlcnR5TmFtZSwgSW5zdGFuY2UqKSBjb25zdDsKIAogcHJpdmF0ZToKICAgICBOUENsYXNz
KiBfaXNhOwpJbmRleDogU291cmNlL1dlYkNvcmUvYnJpZGdlL2MvY19pbnN0YW5jZS5jcHAKPT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PQotLS0gU291cmNlL1dlYkNvcmUvYnJpZGdlL2MvY19pbnN0YW5jZS5jcHAJKHJldmlz
aW9uIDExNjY2NykKKysrIFNvdXJjZS9XZWJDb3JlL2JyaWRnZS9jL2NfaW5zdGFuY2UuY3BwCSh3
b3JraW5nIGNvcHkpCkBAIC0xMTMsNyArMTEzLDcgQEAgY2xhc3MgQ1J1bnRpbWVNZXRob2QgOiBw
dWJsaWMgUnVudGltZU1ldAogcHVibGljOgogICAgIHR5cGVkZWYgUnVudGltZU1ldGhvZCBCYXNl
OwogCi0gICAgc3RhdGljIENSdW50aW1lTWV0aG9kKiBjcmVhdGUoRXhlY1N0YXRlKiBleGVjLCBK
U0dsb2JhbE9iamVjdCogZ2xvYmFsT2JqZWN0LCBjb25zdCBJZGVudGlmaWVyJiBuYW1lLCBCaW5k
aW5nczo6TWV0aG9kTGlzdCYgbGlzdCkKKyAgICBzdGF0aWMgQ1J1bnRpbWVNZXRob2QqIGNyZWF0
ZShFeGVjU3RhdGUqIGV4ZWMsIEpTR2xvYmFsT2JqZWN0KiBnbG9iYWxPYmplY3QsIGNvbnN0IFVT
dHJpbmcmIG5hbWUsIEJpbmRpbmdzOjpNZXRob2RMaXN0JiBsaXN0KQogICAgIHsKICAgICAgICAg
Ly8gRklYTUU6IGRlcHJlY2F0ZWRHZXRET01TdHJ1Y3R1cmUgdXNlcyB0aGUgcHJvdG90eXBlIG9m
ZiBvZiB0aGUgd3JvbmcgZ2xvYmFsIG9iamVjdAogICAgICAgICAvLyBXZSBuZWVkIHRvIHBhc3Mg
aW4gdGhlIHJpZ2h0IGdsb2JhbCBvYmplY3QgZm9yICJpIi4KQEAgLTEzNiw3ICsxMzYsNyBAQCBw
cml2YXRlOgogICAgIHsKICAgICB9CiAKLSAgICB2b2lkIGZpbmlzaENyZWF0aW9uKEpTR2xvYmFs
RGF0YSYgZ2xvYmFsRGF0YSwgY29uc3QgSWRlbnRpZmllciYgbmFtZSkKKyAgICB2b2lkIGZpbmlz
aENyZWF0aW9uKEpTR2xvYmFsRGF0YSYgZ2xvYmFsRGF0YSwgY29uc3QgVVN0cmluZyYgbmFtZSkK
ICAgICB7CiAgICAgICAgIEJhc2U6OmZpbmlzaENyZWF0aW9uKGdsb2JhbERhdGEsIG5hbWUpOwog
ICAgICAgICBBU1NFUlQoaW5oZXJpdHMoJnNfaW5mbykpOwpAQCAtMTQ2LDEwICsxNDYsMTAgQEAg
cHJpdmF0ZToKIAogY29uc3QgQ2xhc3NJbmZvIENSdW50aW1lTWV0aG9kOjpzX2luZm8gPSB7ICJD
UnVudGltZU1ldGhvZCIsICZSdW50aW1lTWV0aG9kOjpzX2luZm8sIDAsIDAsIENSRUFURV9NRVRI
T0RfVEFCTEUoQ1J1bnRpbWVNZXRob2QpIH07CiAKLUpTVmFsdWUgQ0luc3RhbmNlOjpnZXRNZXRo
b2QoRXhlY1N0YXRlKiBleGVjLCBjb25zdCBJZGVudGlmaWVyJiBwcm9wZXJ0eU5hbWUpCitKU1Zh
bHVlIENJbnN0YW5jZTo6Z2V0TWV0aG9kKEV4ZWNTdGF0ZSogZXhlYywgUHJvcGVydHlOYW1lIHBy
b3BlcnR5TmFtZSkKIHsKICAgICBNZXRob2RMaXN0IG1ldGhvZExpc3QgPSBnZXRDbGFzcygpLT5t
ZXRob2RzTmFtZWQocHJvcGVydHlOYW1lLCB0aGlzKTsKLSAgICByZXR1cm4gQ1J1bnRpbWVNZXRo
b2Q6OmNyZWF0ZShleGVjLCBleGVjLT5sZXhpY2FsR2xvYmFsT2JqZWN0KCksIHByb3BlcnR5TmFt
ZSwgbWV0aG9kTGlzdCk7CisgICAgcmV0dXJuIENSdW50aW1lTWV0aG9kOjpjcmVhdGUoZXhlYywg
ZXhlYy0+bGV4aWNhbEdsb2JhbE9iamVjdCgpLCBwcm9wZXJ0eU5hbWUuaW1wbCgpLCBtZXRob2RM
aXN0KTsKIH0KIAogSlNWYWx1ZSBDSW5zdGFuY2U6Omludm9rZU1ldGhvZChFeGVjU3RhdGUqIGV4
ZWMsIFJ1bnRpbWVNZXRob2QqIHJ1bnRpbWVNZXRob2QpCkluZGV4OiBTb3VyY2UvV2ViQ29yZS9i
cmlkZ2UvYy9jX2luc3RhbmNlLmgKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL1dlYkNvcmUvYnJpZGdl
L2MvY19pbnN0YW5jZS5oCShyZXZpc2lvbiAxMTY2NjcpCisrKyBTb3VyY2UvV2ViQ29yZS9icmlk
Z2UvYy9jX2luc3RhbmNlLmgJKHdvcmtpbmcgY29weSkKQEAgLTU5LDcgKzU5LDcgQEAgcHVibGlj
OgogICAgIHZpcnR1YWwgSlNWYWx1ZSB2YWx1ZU9mKEV4ZWNTdGF0ZSopIGNvbnN0OwogICAgIHZp
cnR1YWwgSlNWYWx1ZSBkZWZhdWx0VmFsdWUoRXhlY1N0YXRlKiwgUHJlZmVycmVkUHJpbWl0aXZl
VHlwZSkgY29uc3Q7CiAKLSAgICB2aXJ0dWFsIEpTVmFsdWUgZ2V0TWV0aG9kKEV4ZWNTdGF0ZSog
ZXhlYywgY29uc3QgSWRlbnRpZmllciYgcHJvcGVydHlOYW1lKTsKKyAgICB2aXJ0dWFsIEpTVmFs
dWUgZ2V0TWV0aG9kKEV4ZWNTdGF0ZSogZXhlYywgUHJvcGVydHlOYW1lKTsKICAgICB2aXJ0dWFs
IEpTVmFsdWUgaW52b2tlTWV0aG9kKEV4ZWNTdGF0ZSosIFJ1bnRpbWVNZXRob2QqIG1ldGhvZCk7
CiAgICAgdmlydHVhbCBib29sIHN1cHBvcnRzSW52b2tlRGVmYXVsdE1ldGhvZCgpIGNvbnN0Owog
ICAgIHZpcnR1YWwgSlNWYWx1ZSBpbnZva2VEZWZhdWx0TWV0aG9kKEV4ZWNTdGF0ZSopOwpJbmRl
eDogU291cmNlL1dlYkNvcmUvYnJpZGdlL2puaS9qc2MvSmF2YUNsYXNzSlNDLmNwcAo9PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09Ci0tLSBTb3VyY2UvV2ViQ29yZS9icmlkZ2Uvam5pL2pzYy9KYXZhQ2xhc3NKU0MuY3BwCShy
ZXZpc2lvbiAxMTY2NjcpCisrKyBTb3VyY2UvV2ViQ29yZS9icmlkZ2Uvam5pL2pzYy9KYXZhQ2xh
c3NKU0MuY3BwCSh3b3JraW5nIGNvcHkpCkBAIC0xMTQsNyArMTE0LDcgQEAgSmF2YUNsYXNzOjp+
SmF2YUNsYXNzKCkKICAgICBtX21ldGhvZHMuY2xlYXIoKTsKIH0KIAotTWV0aG9kTGlzdCBKYXZh
Q2xhc3M6Om1ldGhvZHNOYW1lZChjb25zdCBJZGVudGlmaWVyJiBpZGVudGlmaWVyLCBJbnN0YW5j
ZSopIGNvbnN0CitNZXRob2RMaXN0IEphdmFDbGFzczo6bWV0aG9kc05hbWVkKFByb3BlcnR5TmFt
ZSBpZGVudGlmaWVyLCBJbnN0YW5jZSopIGNvbnN0CiB7CiAgICAgTWV0aG9kTGlzdCogbWV0aG9k
TGlzdCA9IG1fbWV0aG9kcy5nZXQoaWRlbnRpZmllci51c3RyaW5nKCkuaW1wbCgpKTsKIApAQCAt
MTIzLDcgKzEyMyw3IEBAIE1ldGhvZExpc3QgSmF2YUNsYXNzOjptZXRob2RzTmFtZWQoY29uc3QK
ICAgICByZXR1cm4gTWV0aG9kTGlzdCgpOwogfQogCi1GaWVsZCogSmF2YUNsYXNzOjpmaWVsZE5h
bWVkKGNvbnN0IElkZW50aWZpZXImIGlkZW50aWZpZXIsIEluc3RhbmNlKikgY29uc3QKK0ZpZWxk
KiBKYXZhQ2xhc3M6OmZpZWxkTmFtZWQoUHJvcGVydHlOYW1lIGlkZW50aWZpZXIsIEluc3RhbmNl
KikgY29uc3QKIHsKICAgICByZXR1cm4gbV9maWVsZHMuZ2V0KGlkZW50aWZpZXIudXN0cmluZygp
LmltcGwoKSk7CiB9CkluZGV4OiBTb3VyY2UvV2ViQ29yZS9icmlkZ2Uvam5pL2pzYy9KYXZhQ2xh
c3NKU0MuaAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2ViQ29yZS9icmlkZ2Uvam5pL2pzYy9KYXZh
Q2xhc3NKU0MuaAkocmV2aXNpb24gMTE2NjY3KQorKysgU291cmNlL1dlYkNvcmUvYnJpZGdlL2pu
aS9qc2MvSmF2YUNsYXNzSlNDLmgJKHdvcmtpbmcgY29weSkKQEAgLTQxLDggKzQxLDggQEAgcHVi
bGljOgogICAgIEphdmFDbGFzcyhqb2JqZWN0KTsKICAgICB+SmF2YUNsYXNzKCk7CiAKLSAgICB2
aXJ0dWFsIE1ldGhvZExpc3QgbWV0aG9kc05hbWVkKGNvbnN0IElkZW50aWZpZXImLCBJbnN0YW5j
ZSopIGNvbnN0OwotICAgIHZpcnR1YWwgRmllbGQqIGZpZWxkTmFtZWQoY29uc3QgSWRlbnRpZmll
ciYsIEluc3RhbmNlKikgY29uc3Q7CisgICAgdmlydHVhbCBNZXRob2RMaXN0IG1ldGhvZHNOYW1l
ZChQcm9wZXJ0eU5hbWUsIEluc3RhbmNlKikgY29uc3Q7CisgICAgdmlydHVhbCBGaWVsZCogZmll
bGROYW1lZChQcm9wZXJ0eU5hbWUsIEluc3RhbmNlKikgY29uc3Q7CiAKICAgICBib29sIGlzTnVt
YmVyQ2xhc3MoKSBjb25zdDsKICAgICBib29sIGlzQm9vbGVhbkNsYXNzKCkgY29uc3Q7CkluZGV4
OiBTb3VyY2UvV2ViQ29yZS9icmlkZ2Uvam5pL2pzYy9KYXZhSW5zdGFuY2VKU0MuY3BwCj09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT0KLS0tIFNvdXJjZS9XZWJDb3JlL2JyaWRnZS9qbmkvanNjL0phdmFJbnN0YW5jZUpTQy5j
cHAJKHJldmlzaW9uIDExNjY2NykKKysrIFNvdXJjZS9XZWJDb3JlL2JyaWRnZS9qbmkvanNjL0ph
dmFJbnN0YW5jZUpTQy5jcHAJKHdvcmtpbmcgY29weSkKQEAgLTExOCw3ICsxMTgsNyBAQCBjbGFz
cyBKYXZhUnVudGltZU1ldGhvZCA6IHB1YmxpYyBSdW50aW1lCiBwdWJsaWM6CiAgICAgdHlwZWRl
ZiBSdW50aW1lTWV0aG9kIEJhc2U7CiAKLSAgICBzdGF0aWMgSmF2YVJ1bnRpbWVNZXRob2QqIGNy
ZWF0ZShFeGVjU3RhdGUqIGV4ZWMsIEpTR2xvYmFsT2JqZWN0KiBnbG9iYWxPYmplY3QsIGNvbnN0
IElkZW50aWZpZXImIG5hbWUsIEJpbmRpbmdzOjpNZXRob2RMaXN0JiBsaXN0KQorICAgIHN0YXRp
YyBKYXZhUnVudGltZU1ldGhvZCogY3JlYXRlKEV4ZWNTdGF0ZSogZXhlYywgSlNHbG9iYWxPYmpl
Y3QqIGdsb2JhbE9iamVjdCwgY29uc3QgVVN0cmluZyYgbmFtZSwgQmluZGluZ3M6Ok1ldGhvZExp
c3QmIGxpc3QpCiAgICAgewogICAgICAgICAvLyBGSVhNRTogZGVwcmVjYXRlZEdldERPTVN0cnVj
dHVyZSB1c2VzIHRoZSBwcm90b3R5cGUgb2ZmIG9mIHRoZSB3cm9uZyBnbG9iYWwgb2JqZWN0CiAg
ICAgICAgIC8vIFdlIG5lZWQgdG8gcGFzcyBpbiB0aGUgcmlnaHQgZ2xvYmFsIG9iamVjdCBmb3Ig
ImkiLgpAQCAtMTQxLDcgKzE0MSw3IEBAIHByaXZhdGU6CiAgICAgewogICAgIH0KIAotICAgIHZv
aWQgZmluaXNoQ3JlYXRpb24oSlNHbG9iYWxEYXRhJiBnbG9iYWxEYXRhLCBjb25zdCBJZGVudGlm
aWVyJiBuYW1lKQorICAgIHZvaWQgZmluaXNoQ3JlYXRpb24oSlNHbG9iYWxEYXRhJiBnbG9iYWxE
YXRhLCBjb25zdCBVU3RyaW5nJiBuYW1lKQogICAgIHsKICAgICAgICAgQmFzZTo6ZmluaXNoQ3Jl
YXRpb24oZ2xvYmFsRGF0YSwgbmFtZSk7CiAgICAgICAgIEFTU0VSVChpbmhlcml0cygmc19pbmZv
KSk7CkBAIC0xNTAsMTAgKzE1MCwxMCBAQCBwcml2YXRlOgogCiBjb25zdCBDbGFzc0luZm8gSmF2
YVJ1bnRpbWVNZXRob2Q6OnNfaW5mbyA9IHsgIkphdmFSdW50aW1lTWV0aG9kIiwgJlJ1bnRpbWVN
ZXRob2Q6OnNfaW5mbywgMCwgMCwgQ1JFQVRFX01FVEhPRF9UQUJMRShKYXZhUnVudGltZU1ldGhv
ZCkgfTsKIAotSlNWYWx1ZSBKYXZhSW5zdGFuY2U6OmdldE1ldGhvZChFeGVjU3RhdGUqIGV4ZWMs
IGNvbnN0IElkZW50aWZpZXImIHByb3BlcnR5TmFtZSkKK0pTVmFsdWUgSmF2YUluc3RhbmNlOjpn
ZXRNZXRob2QoRXhlY1N0YXRlKiBleGVjLCBQcm9wZXJ0eU5hbWUgcHJvcGVydHlOYW1lKQogewog
ICAgIE1ldGhvZExpc3QgbWV0aG9kTGlzdCA9IGdldENsYXNzKCktPm1ldGhvZHNOYW1lZChwcm9w
ZXJ0eU5hbWUsIHRoaXMpOwotICAgIHJldHVybiBKYXZhUnVudGltZU1ldGhvZDo6Y3JlYXRlKGV4
ZWMsIGV4ZWMtPmxleGljYWxHbG9iYWxPYmplY3QoKSwgcHJvcGVydHlOYW1lLCBtZXRob2RMaXN0
KTsKKyAgICByZXR1cm4gSmF2YVJ1bnRpbWVNZXRob2Q6OmNyZWF0ZShleGVjLCBleGVjLT5sZXhp
Y2FsR2xvYmFsT2JqZWN0KCksIHByb3BlcnR5TmFtZS51c3RyaW5nKCksIG1ldGhvZExpc3QpOwog
fQogCiBKU1ZhbHVlIEphdmFJbnN0YW5jZTo6aW52b2tlTWV0aG9kKEV4ZWNTdGF0ZSogZXhlYywg
UnVudGltZU1ldGhvZCogcnVudGltZU1ldGhvZCkKSW5kZXg6IFNvdXJjZS9XZWJDb3JlL2JyaWRn
ZS9qbmkvanNjL0phdmFJbnN0YW5jZUpTQy5oCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9XZWJDb3Jl
L2JyaWRnZS9qbmkvanNjL0phdmFJbnN0YW5jZUpTQy5oCShyZXZpc2lvbiAxMTY2NjcpCisrKyBT
b3VyY2UvV2ViQ29yZS9icmlkZ2Uvam5pL2pzYy9KYXZhSW5zdGFuY2VKU0MuaAkod29ya2luZyBj
b3B5KQpAQCAtNTMsOCArNTMsOCBAQCBwdWJsaWM6CiAgICAgdmlydHVhbCBKU1ZhbHVlIHZhbHVl
T2YoRXhlY1N0YXRlKikgY29uc3Q7CiAgICAgdmlydHVhbCBKU1ZhbHVlIGRlZmF1bHRWYWx1ZShF
eGVjU3RhdGUqLCBQcmVmZXJyZWRQcmltaXRpdmVUeXBlKSBjb25zdDsKIAotICAgIHZpcnR1YWwg
SlNWYWx1ZSBnZXRNZXRob2QoRXhlY1N0YXRlKiBleGVjLCBjb25zdCBJZGVudGlmaWVyJiBwcm9w
ZXJ0eU5hbWUpOwotICAgIHZpcnR1YWwgSlNWYWx1ZSBpbnZva2VNZXRob2QoRXhlY1N0YXRlKiBl
eGVjLCBSdW50aW1lTWV0aG9kKiBtZXRob2QpOworICAgIHZpcnR1YWwgSlNWYWx1ZSBnZXRNZXRo
b2QoRXhlY1N0YXRlKiwgUHJvcGVydHlOYW1lKTsKKyAgICB2aXJ0dWFsIEpTVmFsdWUgaW52b2tl
TWV0aG9kKEV4ZWNTdGF0ZSosIFJ1bnRpbWVNZXRob2QqKTsKIAogICAgIGpvYmplY3QgamF2YUlu
c3RhbmNlKCkgY29uc3QgeyByZXR1cm4gbV9pbnN0YW5jZS0+aW5zdGFuY2UoKTsgfQogCkluZGV4
OiBTb3VyY2UvV2ViQ29yZS9icmlkZ2UvanNjL0JyaWRnZUpTQy5oCj09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNv
dXJjZS9XZWJDb3JlL2JyaWRnZS9qc2MvQnJpZGdlSlNDLmgJKHJldmlzaW9uIDExNjY2NykKKysr
IFNvdXJjZS9XZWJDb3JlL2JyaWRnZS9qc2MvQnJpZGdlSlNDLmgJKHdvcmtpbmcgY29weSkKQEAg
LTYyLDkgKzYyLDkgQEAgY2xhc3MgQ2xhc3MgewogICAgIFdURl9NQUtFX05PTkNPUFlBQkxFKENs
YXNzKTsgV1RGX01BS0VfRkFTVF9BTExPQ0FURUQ7CiBwdWJsaWM6CiAgICAgQ2xhc3MoKSB7IH0K
LSAgICB2aXJ0dWFsIE1ldGhvZExpc3QgbWV0aG9kc05hbWVkKGNvbnN0IElkZW50aWZpZXImLCBJ
bnN0YW5jZSopIGNvbnN0ID0gMDsKLSAgICB2aXJ0dWFsIEZpZWxkKiBmaWVsZE5hbWVkKGNvbnN0
IElkZW50aWZpZXImLCBJbnN0YW5jZSopIGNvbnN0ID0gMDsKLSAgICB2aXJ0dWFsIEpTVmFsdWUg
ZmFsbGJhY2tPYmplY3QoRXhlY1N0YXRlKiwgSW5zdGFuY2UqLCBjb25zdCBJZGVudGlmaWVyJikg
eyByZXR1cm4ganNVbmRlZmluZWQoKTsgfQorICAgIHZpcnR1YWwgTWV0aG9kTGlzdCBtZXRob2Rz
TmFtZWQoUHJvcGVydHlOYW1lLCBJbnN0YW5jZSopIGNvbnN0ID0gMDsKKyAgICB2aXJ0dWFsIEZp
ZWxkKiBmaWVsZE5hbWVkKFByb3BlcnR5TmFtZSwgSW5zdGFuY2UqKSBjb25zdCA9IDA7CisgICAg
dmlydHVhbCBKU1ZhbHVlIGZhbGxiYWNrT2JqZWN0KEV4ZWNTdGF0ZSosIEluc3RhbmNlKiwgUHJv
cGVydHlOYW1lKSB7IHJldHVybiBqc1VuZGVmaW5lZCgpOyB9CiAKICAgICB2aXJ0dWFsIH5DbGFz
cygpIHsgfQogfTsKQEAgLTg5LDkgKzg5LDkgQEAgcHVibGljOgogICAgIHZvaWQgd2lsbEludmFs
aWRhdGVSdW50aW1lT2JqZWN0KCk7CiAKICAgICAvLyBSZXR1cm5zIGZhbHNlIGlmIHRoZSB2YWx1
ZSB3YXMgbm90IHNldCBzdWNjZXNzZnVsbHkuCi0gICAgdmlydHVhbCBib29sIHNldFZhbHVlT2ZV
bmRlZmluZWRGaWVsZChFeGVjU3RhdGUqLCBjb25zdCBJZGVudGlmaWVyJiwgSlNWYWx1ZSkgeyBy
ZXR1cm4gZmFsc2U7IH0KKyAgICB2aXJ0dWFsIGJvb2wgc2V0VmFsdWVPZlVuZGVmaW5lZEZpZWxk
KEV4ZWNTdGF0ZSosIFByb3BlcnR5TmFtZSwgSlNWYWx1ZSkgeyByZXR1cm4gZmFsc2U7IH0KIAot
ICAgIHZpcnR1YWwgSlNWYWx1ZSBnZXRNZXRob2QoRXhlY1N0YXRlKiBleGVjLCBjb25zdCBJZGVu
dGlmaWVyJiBwcm9wZXJ0eU5hbWUpID0gMDsKKyAgICB2aXJ0dWFsIEpTVmFsdWUgZ2V0TWV0aG9k
KEV4ZWNTdGF0ZSosIFByb3BlcnR5TmFtZSkgPSAwOwogICAgIHZpcnR1YWwgSlNWYWx1ZSBpbnZv
a2VNZXRob2QoRXhlY1N0YXRlKiwgUnVudGltZU1ldGhvZCogbWV0aG9kKSA9IDA7CiAKICAgICB2
aXJ0dWFsIGJvb2wgc3VwcG9ydHNJbnZva2VEZWZhdWx0TWV0aG9kKCkgY29uc3QgeyByZXR1cm4g
ZmFsc2U7IH0KQEAgLTExMCw5ICsxMTAsOSBAQCBwdWJsaWM6CiAKICAgICB2aXJ0dWFsIH5JbnN0
YW5jZSgpOwogCi0gICAgdmlydHVhbCBib29sIGdldE93blByb3BlcnR5U2xvdChKU09iamVjdCos
IEV4ZWNTdGF0ZSosIGNvbnN0IElkZW50aWZpZXImLCBQcm9wZXJ0eVNsb3QmKSB7IHJldHVybiBm
YWxzZTsgfQotICAgIHZpcnR1YWwgYm9vbCBnZXRPd25Qcm9wZXJ0eURlc2NyaXB0b3IoSlNPYmpl
Y3QqLCBFeGVjU3RhdGUqLCBjb25zdCBJZGVudGlmaWVyJiwgUHJvcGVydHlEZXNjcmlwdG9yJikg
eyByZXR1cm4gZmFsc2U7IH0KLSAgICB2aXJ0dWFsIHZvaWQgcHV0KEpTT2JqZWN0KiwgRXhlY1N0
YXRlKiwgY29uc3QgSWRlbnRpZmllciYsIEpTVmFsdWUsIFB1dFByb3BlcnR5U2xvdCYpIHsgfQor
ICAgIHZpcnR1YWwgYm9vbCBnZXRPd25Qcm9wZXJ0eVNsb3QoSlNPYmplY3QqLCBFeGVjU3RhdGUq
LCBQcm9wZXJ0eU5hbWUsIFByb3BlcnR5U2xvdCYpIHsgcmV0dXJuIGZhbHNlOyB9CisgICAgdmly
dHVhbCBib29sIGdldE93blByb3BlcnR5RGVzY3JpcHRvcihKU09iamVjdCosIEV4ZWNTdGF0ZSos
IFByb3BlcnR5TmFtZSwgUHJvcGVydHlEZXNjcmlwdG9yJikgeyByZXR1cm4gZmFsc2U7IH0KKyAg
ICB2aXJ0dWFsIHZvaWQgcHV0KEpTT2JqZWN0KiwgRXhlY1N0YXRlKiwgUHJvcGVydHlOYW1lLCBK
U1ZhbHVlLCBQdXRQcm9wZXJ0eVNsb3QmKSB7IH0KIAogcHJvdGVjdGVkOgogICAgIHZpcnR1YWwg
dm9pZCB2aXJ0dWFsQmVnaW4oKSB7IH0KSW5kZXg6IFNvdXJjZS9XZWJDb3JlL2JyaWRnZS9vYmpj
L29iamNfY2xhc3MuaAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2ViQ29yZS9icmlkZ2Uvb2JqYy9v
YmpjX2NsYXNzLmgJKHJldmlzaW9uIDExNjY2NykKKysrIFNvdXJjZS9XZWJDb3JlL2JyaWRnZS9v
YmpjL29iamNfY2xhc3MuaAkod29ya2luZyBjb3B5KQpAQCAtNDEsMTAgKzQxLDEwIEBAIHB1Ymxp
YzoKICAgICAvLyBSZXR1cm4gdGhlIGNhY2hlZCBPYmpDIG9mIHRoZSBzcGVjaWZpZWQgbmFtZS4K
ICAgICBzdGF0aWMgT2JqY0NsYXNzICpjbGFzc0ZvcklzQShDbGFzc1N0cnVjdFB0cik7CiAgICAg
Ci0gICAgdmlydHVhbCBNZXRob2RMaXN0IG1ldGhvZHNOYW1lZChjb25zdCBJZGVudGlmaWVyJiwg
SW5zdGFuY2UgKmluc3RhbmNlKSBjb25zdDsKLSAgICB2aXJ0dWFsIEZpZWxkICpmaWVsZE5hbWVk
KGNvbnN0IElkZW50aWZpZXImLCBJbnN0YW5jZSAqaW5zdGFuY2UpIGNvbnN0OworICAgIHZpcnR1
YWwgTWV0aG9kTGlzdCBtZXRob2RzTmFtZWQoUHJvcGVydHlOYW1lLCBJbnN0YW5jZSopIGNvbnN0
OworICAgIHZpcnR1YWwgRmllbGQgKmZpZWxkTmFtZWQoUHJvcGVydHlOYW1lLCBJbnN0YW5jZSop
IGNvbnN0OwogCi0gICAgdmlydHVhbCBKU1ZhbHVlIGZhbGxiYWNrT2JqZWN0KEV4ZWNTdGF0ZSAq
ZXhlYywgSW5zdGFuY2UgKmluc3RhbmNlLCBjb25zdCBJZGVudGlmaWVyICZwcm9wZXJ0eU5hbWUp
OworICAgIHZpcnR1YWwgSlNWYWx1ZSBmYWxsYmFja09iamVjdChFeGVjU3RhdGUqLCBJbnN0YW5j
ZSosIFByb3BlcnR5TmFtZSk7CiAgICAgCiAgICAgQ2xhc3NTdHJ1Y3RQdHIgaXNhKCkgeyByZXR1
cm4gX2lzYTsgfQogICAgIApJbmRleDogU291cmNlL1dlYkNvcmUvYnJpZGdlL29iamMvb2JqY19j
bGFzcy5tbQo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2ViQ29yZS9icmlkZ2Uvb2JqYy9vYmpjX2Ns
YXNzLm1tCShyZXZpc2lvbiAxMTY2NjcpCisrKyBTb3VyY2UvV2ViQ29yZS9icmlkZ2Uvb2JqYy9v
YmpjX2NsYXNzLm1tCSh3b3JraW5nIGNvcHkpCkBAIC05NSw3ICs5NSw3IEBAIHN0YXRpYyBpbmxp
bmUgdm9pZCBjb252ZXJ0SlNNZXRob2ROYW1lVG8KICAgICB9CiB9CiAKLU1ldGhvZExpc3QgT2Jq
Y0NsYXNzOjptZXRob2RzTmFtZWQoY29uc3QgSWRlbnRpZmllciYgaWRlbnRpZmllciwgSW5zdGFu
Y2UqKSBjb25zdAorTWV0aG9kTGlzdCBPYmpjQ2xhc3M6Om1ldGhvZHNOYW1lZChQcm9wZXJ0eU5h
bWUgaWRlbnRpZmllciwgSW5zdGFuY2UqKSBjb25zdAogewogICAgIE1ldGhvZExpc3QgbWV0aG9k
TGlzdDsKICAgICBpZiAoTWV0aG9kKiBtZXRob2QgPSBtX21ldGhvZENhY2hlLmdldChpZGVudGlm
aWVyLmltcGwoKSkpIHsKQEAgLTEwMyw3ICsxMDMsNyBAQCBNZXRob2RMaXN0IE9iamNDbGFzczo6
bWV0aG9kc05hbWVkKGNvbnN0CiAgICAgICAgIHJldHVybiBtZXRob2RMaXN0OwogICAgIH0KIAot
ICAgIENTdHJpbmcganNOYW1lID0gaWRlbnRpZmllci5hc2NpaSgpOworICAgIENTdHJpbmcganNO
YW1lID0gaWRlbnRpZmllci51c3RyaW5nKCkuYXNjaWkoKTsKICAgICBKU05hbWVDb252ZXJzaW9u
QnVmZmVyIGJ1ZmZlcjsKICAgICBjb252ZXJ0SlNNZXRob2ROYW1lVG9PYmpjKGpzTmFtZSwgYnVm
ZmVyKTsKICAgICBSZXRhaW5QdHI8Q0ZTdHJpbmdSZWY+IG1ldGhvZE5hbWUoQWRvcHRDRiwgQ0ZT
dHJpbmdDcmVhdGVXaXRoQ1N0cmluZyhOVUxMLCBidWZmZXIuZGF0YSgpLCBrQ0ZTdHJpbmdFbmNv
ZGluZ0FTQ0lJKSk7CkBAIC0xNDMsNyArMTQzLDcgQEAgTWV0aG9kTGlzdCBPYmpjQ2xhc3M6Om1l
dGhvZHNOYW1lZChjb25zdAogICAgIHJldHVybiBtZXRob2RMaXN0OwogfQogCi1GaWVsZCogT2Jq
Y0NsYXNzOjpmaWVsZE5hbWVkKGNvbnN0IElkZW50aWZpZXImIGlkZW50aWZpZXIsIEluc3RhbmNl
KiBpbnN0YW5jZSkgY29uc3QKK0ZpZWxkKiBPYmpjQ2xhc3M6OmZpZWxkTmFtZWQoUHJvcGVydHlO
YW1lIGlkZW50aWZpZXIsIEluc3RhbmNlKiBpbnN0YW5jZSkgY29uc3QKIHsKICAgICBGaWVsZCog
ZmllbGQgPSBtX2ZpZWxkQ2FjaGUuZ2V0KGlkZW50aWZpZXIuaW1wbCgpKTsKICAgICBpZiAoZmll
bGQpCkBAIC0xNTEsNyArMTUxLDcgQEAgRmllbGQqIE9iamNDbGFzczo6ZmllbGROYW1lZChjb25z
dCBJZGVudAogCiAgICAgQ2xhc3NTdHJ1Y3RQdHIgdGhpc0NsYXNzID0gX2lzYTsKIAotICAgIENT
dHJpbmcganNOYW1lID0gaWRlbnRpZmllci5hc2NpaSgpOworICAgIENTdHJpbmcganNOYW1lID0g
aWRlbnRpZmllci51c3RyaW5nKCkuYXNjaWkoKTsKICAgICBSZXRhaW5QdHI8Q0ZTdHJpbmdSZWY+
IGZpZWxkTmFtZShBZG9wdENGLCBDRlN0cmluZ0NyZWF0ZVdpdGhDU3RyaW5nKE5VTEwsIGpzTmFt
ZS5kYXRhKCksIGtDRlN0cmluZ0VuY29kaW5nQVNDSUkpKTsKICAgICBpZCB0YXJnZXRPYmplY3Qg
PSAoc3RhdGljX2Nhc3Q8T2JqY0luc3RhbmNlKj4oaW5zdGFuY2UpKS0+Z2V0T2JqZWN0KCk7CiAg
ICAgaWQgYXR0cmlidXRlcyA9IFt0YXJnZXRPYmplY3QgYXR0cmlidXRlS2V5c107CkBAIC0yMjEs
MTQgKzIyMSwxNCBAQCBGaWVsZCogT2JqY0NsYXNzOjpmaWVsZE5hbWVkKGNvbnN0IElkZW50CiAg
ICAgcmV0dXJuIGZpZWxkOwogfQogCi1KU1ZhbHVlIE9iamNDbGFzczo6ZmFsbGJhY2tPYmplY3Qo
RXhlY1N0YXRlKiBleGVjLCBJbnN0YW5jZSogaW5zdGFuY2UsIGNvbnN0IElkZW50aWZpZXIgJnBy
b3BlcnR5TmFtZSkKK0pTVmFsdWUgT2JqY0NsYXNzOjpmYWxsYmFja09iamVjdChFeGVjU3RhdGUq
IGV4ZWMsIEluc3RhbmNlKiBpbnN0YW5jZSwgUHJvcGVydHlOYW1lIHByb3BlcnR5TmFtZSkKIHsK
ICAgICBPYmpjSW5zdGFuY2UqIG9iamNJbnN0YW5jZSA9IHN0YXRpY19jYXN0PE9iamNJbnN0YW5j
ZSo+KGluc3RhbmNlKTsKICAgICBpZCB0YXJnZXRPYmplY3QgPSBvYmpjSW5zdGFuY2UtPmdldE9i
amVjdCgpOwogICAgIAogICAgIGlmICghW3RhcmdldE9iamVjdCByZXNwb25kc1RvU2VsZWN0b3I6
QHNlbGVjdG9yKGludm9rZVVuZGVmaW5lZE1ldGhvZEZyb21XZWJTY3JpcHQ6d2l0aEFyZ3VtZW50
czopXSkKICAgICAgICAgcmV0dXJuIGpzVW5kZWZpbmVkKCk7Ci0gICAgcmV0dXJuIE9iamNGYWxs
YmFja09iamVjdEltcDo6Y3JlYXRlKGV4ZWMsIGV4ZWMtPmxleGljYWxHbG9iYWxPYmplY3QoKSwg
b2JqY0luc3RhbmNlLCBwcm9wZXJ0eU5hbWUpOworICAgIHJldHVybiBPYmpjRmFsbGJhY2tPYmpl
Y3RJbXA6OmNyZWF0ZShleGVjLCBleGVjLT5sZXhpY2FsR2xvYmFsT2JqZWN0KCksIG9iamNJbnN0
YW5jZSwgcHJvcGVydHlOYW1lLmltcGwoKSk7CiB9CiAKIH0KSW5kZXg6IFNvdXJjZS9XZWJDb3Jl
L2JyaWRnZS9vYmpjL29iamNfaW5zdGFuY2UuaAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2ViQ29y
ZS9icmlkZ2Uvb2JqYy9vYmpjX2luc3RhbmNlLmgJKHJldmlzaW9uIDExNjY2NykKKysrIFNvdXJj
ZS9XZWJDb3JlL2JyaWRnZS9vYmpjL29iamNfaW5zdGFuY2UuaAkod29ya2luZyBjb3B5KQpAQCAt
NDcsMTQgKzQ3LDE0IEBAIHB1YmxpYzoKICAgICB2aXJ0dWFsIEpTVmFsdWUgdmFsdWVPZihFeGVj
U3RhdGUqKSBjb25zdDsKICAgICB2aXJ0dWFsIEpTVmFsdWUgZGVmYXVsdFZhbHVlKEV4ZWNTdGF0
ZSosIFByZWZlcnJlZFByaW1pdGl2ZVR5cGUpIGNvbnN0OwogCi0gICAgdmlydHVhbCBKU1ZhbHVl
IGdldE1ldGhvZChFeGVjU3RhdGUqIGV4ZWMsIGNvbnN0IElkZW50aWZpZXImIHByb3BlcnR5TmFt
ZSk7CisgICAgdmlydHVhbCBKU1ZhbHVlIGdldE1ldGhvZChFeGVjU3RhdGUqLCBQcm9wZXJ0eU5h
bWUpOwogICAgIEpTVmFsdWUgaW52b2tlT2JqY01ldGhvZChFeGVjU3RhdGUqLCBPYmpjTWV0aG9k
KiBtZXRob2QpOwogICAgIHZpcnR1YWwgSlNWYWx1ZSBpbnZva2VNZXRob2QoRXhlY1N0YXRlKiwg
UnVudGltZU1ldGhvZCogbWV0aG9kKTsKICAgICB2aXJ0dWFsIGJvb2wgc3VwcG9ydHNJbnZva2VE
ZWZhdWx0TWV0aG9kKCkgY29uc3Q7CiAgICAgdmlydHVhbCBKU1ZhbHVlIGludm9rZURlZmF1bHRN
ZXRob2QoRXhlY1N0YXRlKik7CiAKLSAgICBKU1ZhbHVlIGdldFZhbHVlT2ZVbmRlZmluZWRGaWVs
ZChFeGVjU3RhdGUqLCBjb25zdCBJZGVudGlmaWVyJikgY29uc3Q7Ci0gICAgdmlydHVhbCBib29s
IHNldFZhbHVlT2ZVbmRlZmluZWRGaWVsZChFeGVjU3RhdGUqLCBjb25zdCBJZGVudGlmaWVyJiwg
SlNWYWx1ZSk7CisgICAgSlNWYWx1ZSBnZXRWYWx1ZU9mVW5kZWZpbmVkRmllbGQoRXhlY1N0YXRl
KiwgUHJvcGVydHlOYW1lKSBjb25zdDsKKyAgICB2aXJ0dWFsIGJvb2wgc2V0VmFsdWVPZlVuZGVm
aW5lZEZpZWxkKEV4ZWNTdGF0ZSosIFByb3BlcnR5TmFtZSwgSlNWYWx1ZSk7CiAKICAgICBPYmpl
Y3RTdHJ1Y3RQdHIgZ2V0T2JqZWN0KCkgY29uc3QgeyByZXR1cm4gX2luc3RhbmNlLmdldCgpOyB9
CiAgICAgCkluZGV4OiBTb3VyY2UvV2ViQ29yZS9icmlkZ2Uvb2JqYy9vYmpjX2luc3RhbmNlLm1t
Cj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT0KLS0tIFNvdXJjZS9XZWJDb3JlL2JyaWRnZS9vYmpjL29iamNfaW5zdGFuY2Uu
bW0JKHJldmlzaW9uIDExNjY2NykKKysrIFNvdXJjZS9XZWJDb3JlL2JyaWRnZS9vYmpjL29iamNf
aW5zdGFuY2UubW0JKHdvcmtpbmcgY29weSkKQEAgLTE4MSw3ICsxODEsNyBAQCBib29sIE9iamNJ
bnN0YW5jZTo6c3VwcG9ydHNJbnZva2VEZWZhdWx0CiAKIGNsYXNzIE9iakNSdW50aW1lTWV0aG9k
IDogcHVibGljIFJ1bnRpbWVNZXRob2QgewogcHVibGljOgotICAgIHN0YXRpYyBPYmpDUnVudGlt
ZU1ldGhvZCogY3JlYXRlKEV4ZWNTdGF0ZSogZXhlYywgSlNHbG9iYWxPYmplY3QqIGdsb2JhbE9i
amVjdCwgY29uc3QgSWRlbnRpZmllciYgbmFtZSwgQmluZGluZ3M6Ok1ldGhvZExpc3QmIGxpc3Qp
CisgICAgc3RhdGljIE9iakNSdW50aW1lTWV0aG9kKiBjcmVhdGUoRXhlY1N0YXRlKiBleGVjLCBK
U0dsb2JhbE9iamVjdCogZ2xvYmFsT2JqZWN0LCBjb25zdCBVU3RyaW5nJiBuYW1lLCBCaW5kaW5n
czo6TWV0aG9kTGlzdCYgbGlzdCkKICAgICB7CiAgICAgICAgIC8vIEZJWE1FOiBkZXByZWNhdGVk
R2V0RE9NU3RydWN0dXJlIHVzZXMgdGhlIHByb3RvdHlwZSBvZmYgb2YgdGhlIHdyb25nIGdsb2Jh
bCBvYmplY3QKICAgICAgICAgLy8gV2UgbmVlZCB0byBwYXNzIGluIHRoZSByaWdodCBnbG9iYWwg
b2JqZWN0IGZvciAiaSIuCkBAIC0yMDYsNyArMjA2LDcgQEAgcHJpdmF0ZToKICAgICB7CiAgICAg
fQogCi0gICAgdm9pZCBmaW5pc2hDcmVhdGlvbihKU0dsb2JhbERhdGEmIGdsb2JhbERhdGEsIGNv
bnN0IElkZW50aWZpZXImIG5hbWUpCisgICAgdm9pZCBmaW5pc2hDcmVhdGlvbihKU0dsb2JhbERh
dGEmIGdsb2JhbERhdGEsIGNvbnN0IFVTdHJpbmcmIG5hbWUpCiAgICAgewogICAgICAgICBCYXNl
OjpmaW5pc2hDcmVhdGlvbihnbG9iYWxEYXRhLCBuYW1lKTsKICAgICAgICAgQVNTRVJUKGluaGVy
aXRzKCZzX2luZm8pKTsKQEAgLTIxNSwxMCArMjE1LDEwIEBAIHByaXZhdGU6CiAKIGNvbnN0IENs
YXNzSW5mbyBPYmpDUnVudGltZU1ldGhvZDo6c19pbmZvID0geyAiT2JqQ1J1bnRpbWVNZXRob2Qi
LCAmUnVudGltZU1ldGhvZDo6c19pbmZvLCAwLCAwLCBDUkVBVEVfTUVUSE9EX1RBQkxFKE9iakNS
dW50aW1lTWV0aG9kKSB9OwogCi1KU1ZhbHVlIE9iamNJbnN0YW5jZTo6Z2V0TWV0aG9kKEV4ZWNT
dGF0ZSogZXhlYywgY29uc3QgSWRlbnRpZmllciYgcHJvcGVydHlOYW1lKQorSlNWYWx1ZSBPYmpj
SW5zdGFuY2U6OmdldE1ldGhvZChFeGVjU3RhdGUqIGV4ZWMsIFByb3BlcnR5TmFtZSBwcm9wZXJ0
eU5hbWUpCiB7CiAgICAgTWV0aG9kTGlzdCBtZXRob2RMaXN0ID0gZ2V0Q2xhc3MoKS0+bWV0aG9k
c05hbWVkKHByb3BlcnR5TmFtZSwgdGhpcyk7Ci0gICAgcmV0dXJuIE9iakNSdW50aW1lTWV0aG9k
OjpjcmVhdGUoZXhlYywgZXhlYy0+bGV4aWNhbEdsb2JhbE9iamVjdCgpLCBwcm9wZXJ0eU5hbWUs
IG1ldGhvZExpc3QpOworICAgIHJldHVybiBPYmpDUnVudGltZU1ldGhvZDo6Y3JlYXRlKGV4ZWMs
IGV4ZWMtPmxleGljYWxHbG9iYWxPYmplY3QoKSwgcHJvcGVydHlOYW1lLnVzdHJpbmcoKSwgbWV0
aG9kTGlzdCk7CiB9CiAKIEpTVmFsdWUgT2JqY0luc3RhbmNlOjppbnZva2VNZXRob2QoRXhlY1N0
YXRlKiBleGVjLCBSdW50aW1lTWV0aG9kKiBydW50aW1lTWV0aG9kKQpAQCAtNDAxLDcgKzQwMSw3
IEBAIEpTVmFsdWUgT2JqY0luc3RhbmNlOjppbnZva2VEZWZhdWx0TWV0aG8KICAgICByZXR1cm4g
Y29uc3RfY2FzdDxKU1ZhbHVlJj4ocmVzdWx0KTsKIH0KIAotYm9vbCBPYmpjSW5zdGFuY2U6OnNl
dFZhbHVlT2ZVbmRlZmluZWRGaWVsZChFeGVjU3RhdGUqIGV4ZWMsIGNvbnN0IElkZW50aWZpZXIm
IHByb3BlcnR5LCBKU1ZhbHVlIGFWYWx1ZSkKK2Jvb2wgT2JqY0luc3RhbmNlOjpzZXRWYWx1ZU9m
VW5kZWZpbmVkRmllbGQoRXhlY1N0YXRlKiBleGVjLCBQcm9wZXJ0eU5hbWUgcHJvcGVydHksIEpT
VmFsdWUgYVZhbHVlKQogewogICAgIGlkIHRhcmdldE9iamVjdCA9IGdldE9iamVjdCgpOwogICAg
IGlmICghW3RhcmdldE9iamVjdCByZXNwb25kc1RvU2VsZWN0b3I6QHNlbGVjdG9yKHNldFZhbHVl
OmZvclVuZGVmaW5lZEtleTopXSkKQEAgLTQxOCw3ICs0MTgsNyBAQCBib29sIE9iamNJbnN0YW5j
ZTo6c2V0VmFsdWVPZlVuZGVmaW5lZEZpCiAgICAgICAgIE9iamNWYWx1ZSBvYmpjVmFsdWUgPSBj
b252ZXJ0VmFsdWVUb09iamNWYWx1ZShleGVjLCBhVmFsdWUsIE9iamNPYmplY3RUeXBlKTsKIAog
ICAgICAgICBAdHJ5IHsKLSAgICAgICAgICAgIFt0YXJnZXRPYmplY3Qgc2V0VmFsdWU6b2JqY1Zh
bHVlLm9iamVjdFZhbHVlIGZvclVuZGVmaW5lZEtleTpbTlNTdHJpbmcgc3RyaW5nV2l0aENTdHJp
bmc6cHJvcGVydHkuYXNjaWkoKS5kYXRhKCkgZW5jb2Rpbmc6TlNBU0NJSVN0cmluZ0VuY29kaW5n
XV07CisgICAgICAgICAgICBbdGFyZ2V0T2JqZWN0IHNldFZhbHVlOm9iamNWYWx1ZS5vYmplY3RW
YWx1ZSBmb3JVbmRlZmluZWRLZXk6W05TU3RyaW5nIHN0cmluZ1dpdGhDU3RyaW5nOnByb3BlcnR5
LnVzdHJpbmcoKS5hc2NpaSgpLmRhdGEoKSBlbmNvZGluZzpOU0FTQ0lJU3RyaW5nRW5jb2Rpbmdd
XTsKICAgICAgICAgfSBAY2F0Y2goTlNFeGNlcHRpb24qIGxvY2FsRXhjZXB0aW9uKSB7CiAgICAg
ICAgICAgICAvLyBEbyBub3RoaW5nLiAgQ2xhc3MgZGlkIG5vdCBvdmVycmlkZSB2YWx1ZUZvclVu
ZGVmaW5lZEtleTouCiAgICAgICAgIH0KQEAgLTQyOSw3ICs0MjksNyBAQCBib29sIE9iamNJbnN0
YW5jZTo6c2V0VmFsdWVPZlVuZGVmaW5lZEZpCiAgICAgcmV0dXJuIHRydWU7CiB9CiAKLUpTVmFs
dWUgT2JqY0luc3RhbmNlOjpnZXRWYWx1ZU9mVW5kZWZpbmVkRmllbGQoRXhlY1N0YXRlKiBleGVj
LCBjb25zdCBJZGVudGlmaWVyJiBwcm9wZXJ0eSkgY29uc3QKK0pTVmFsdWUgT2JqY0luc3RhbmNl
OjpnZXRWYWx1ZU9mVW5kZWZpbmVkRmllbGQoRXhlY1N0YXRlKiBleGVjLCBQcm9wZXJ0eU5hbWUg
cHJvcGVydHkpIGNvbnN0CiB7CiAgICAgSlNWYWx1ZSByZXN1bHQgPSBqc1VuZGVmaW5lZCgpOwog
ICAgIApAQCAtNDQ0LDcgKzQ0NCw3IEBAIEpTVmFsdWUgT2JqY0luc3RhbmNlOjpnZXRWYWx1ZU9m
VW5kZWZpbmUKICAgICAgICAgc2V0R2xvYmFsRXhjZXB0aW9uKG5pbCk7CiAgICAgCiAgICAgICAg
IEB0cnkgewotICAgICAgICAgICAgaWQgb2JqY1ZhbHVlID0gW3RhcmdldE9iamVjdCB2YWx1ZUZv
clVuZGVmaW5lZEtleTpbTlNTdHJpbmcgc3RyaW5nV2l0aENTdHJpbmc6cHJvcGVydHkuYXNjaWko
KS5kYXRhKCkgZW5jb2Rpbmc6TlNBU0NJSVN0cmluZ0VuY29kaW5nXV07CisgICAgICAgICAgICBp
ZCBvYmpjVmFsdWUgPSBbdGFyZ2V0T2JqZWN0IHZhbHVlRm9yVW5kZWZpbmVkS2V5OltOU1N0cmlu
ZyBzdHJpbmdXaXRoQ1N0cmluZzpwcm9wZXJ0eS51c3RyaW5nKCkuYXNjaWkoKS5kYXRhKCkgZW5j
b2Rpbmc6TlNBU0NJSVN0cmluZ0VuY29kaW5nXV07CiAgICAgICAgICAgICByZXN1bHQgPSBjb252
ZXJ0T2JqY1ZhbHVlVG9WYWx1ZShleGVjLCAmb2JqY1ZhbHVlLCBPYmpjT2JqZWN0VHlwZSwgbV9y
b290T2JqZWN0LmdldCgpKTsKICAgICAgICAgfSBAY2F0Y2goTlNFeGNlcHRpb24qIGxvY2FsRXhj
ZXB0aW9uKSB7CiAgICAgICAgICAgICAvLyBEbyBub3RoaW5nLiAgQ2xhc3MgZGlkIG5vdCBvdmVy
cmlkZSB2YWx1ZUZvclVuZGVmaW5lZEtleTouCkluZGV4OiBTb3VyY2UvV2ViQ29yZS9icmlkZ2Uv
b2JqYy9vYmpjX3J1bnRpbWUuaAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2ViQ29yZS9icmlkZ2Uv
b2JqYy9vYmpjX3J1bnRpbWUuaAkocmV2aXNpb24gMTE2NjY3KQorKysgU291cmNlL1dlYkNvcmUv
YnJpZGdlL29iamMvb2JqY19ydW50aW1lLmgJKHdvcmtpbmcgY29weSkKQEAgLTk0LDcgKzk0LDcg
QEAgY2xhc3MgT2JqY0ZhbGxiYWNrT2JqZWN0SW1wIDogcHVibGljIEpTTgogcHVibGljOgogICAg
IHR5cGVkZWYgSlNOb25GaW5hbE9iamVjdCBCYXNlOwogCi0gICAgc3RhdGljIE9iamNGYWxsYmFj
a09iamVjdEltcCogY3JlYXRlKEV4ZWNTdGF0ZSogZXhlYywgSlNHbG9iYWxPYmplY3QqIGdsb2Jh
bE9iamVjdCwgT2JqY0luc3RhbmNlKiBpbnN0YW5jZSwgY29uc3QgSWRlbnRpZmllciYgcHJvcGVy
dHlOYW1lKQorICAgIHN0YXRpYyBPYmpjRmFsbGJhY2tPYmplY3RJbXAqIGNyZWF0ZShFeGVjU3Rh
dGUqIGV4ZWMsIEpTR2xvYmFsT2JqZWN0KiBnbG9iYWxPYmplY3QsIE9iamNJbnN0YW5jZSogaW5z
dGFuY2UsIGNvbnN0IFVTdHJpbmcmIHByb3BlcnR5TmFtZSkKICAgICB7CiAgICAgICAgIC8vIEZJ
WE1FOiBkZXByZWNhdGVkR2V0RE9NU3RydWN0dXJlIHVzZXMgdGhlIHByb3RvdHlwZSBvZmYgb2Yg
dGhlIHdyb25nIGdsb2JhbCBvYmplY3QKICAgICAgICAgU3RydWN0dXJlKiBkb21TdHJ1Y3R1cmUg
PSBXZWJDb3JlOjpkZXByZWNhdGVkR2V0RE9NU3RydWN0dXJlPE9iamNGYWxsYmFja09iamVjdElt
cD4oZXhlYyk7CkBAIC0xMDUsNyArMTA1LDcgQEAgcHVibGljOgogCiAgICAgc3RhdGljIGNvbnN0
IENsYXNzSW5mbyBzX2luZm87CiAKLSAgICBjb25zdCBJZGVudGlmaWVyJiBwcm9wZXJ0eU5hbWUo
KSBjb25zdCB7IHJldHVybiBfaXRlbTsgfQorICAgIGNvbnN0IFVTdHJpbmcmIHByb3BlcnR5TmFt
ZSgpIGNvbnN0IHsgcmV0dXJuIF9pdGVtOyB9CiAKICAgICBzdGF0aWMgT2JqZWN0UHJvdG90eXBl
KiBjcmVhdGVQcm90b3R5cGUoRXhlY1N0YXRlKiwgSlNHbG9iYWxPYmplY3QqIGdsb2JhbE9iamVj
dCkKICAgICB7CkBAIC0xMjEsMjAgKzEyMSwyMCBAQCBwcm90ZWN0ZWQ6CiAgICAgdm9pZCBmaW5p
c2hDcmVhdGlvbihKU0dsb2JhbE9iamVjdCopOwogCiBwcml2YXRlOgotICAgIE9iamNGYWxsYmFj
a09iamVjdEltcChKU0dsb2JhbE9iamVjdCosIFN0cnVjdHVyZSosIE9iamNJbnN0YW5jZSosIGNv
bnN0IElkZW50aWZpZXImIHByb3BlcnR5TmFtZSk7CisgICAgT2JqY0ZhbGxiYWNrT2JqZWN0SW1w
KEpTR2xvYmFsT2JqZWN0KiwgU3RydWN0dXJlKiwgT2JqY0luc3RhbmNlKiwgY29uc3QgVVN0cmlu
ZyYgcHJvcGVydHlOYW1lKTsKICAgICBzdGF0aWMgdm9pZCBkZXN0cm95KEpTQ2VsbCopOwogICAg
IHN0YXRpYyBjb25zdCB1bnNpZ25lZCBTdHJ1Y3R1cmVGbGFncyA9IE92ZXJyaWRlc0dldE93blBy
b3BlcnR5U2xvdCB8IEpTT2JqZWN0OjpTdHJ1Y3R1cmVGbGFnczsKLSAgICBzdGF0aWMgYm9vbCBn
ZXRPd25Qcm9wZXJ0eVNsb3QoSlNDZWxsKiwgRXhlY1N0YXRlKiwgY29uc3QgSWRlbnRpZmllciYs
IFByb3BlcnR5U2xvdCYpOwotICAgIHN0YXRpYyBib29sIGdldE93blByb3BlcnR5RGVzY3JpcHRv
cihKU09iamVjdCosIEV4ZWNTdGF0ZSosIGNvbnN0IElkZW50aWZpZXImLCBQcm9wZXJ0eURlc2Ny
aXB0b3ImKTsKLSAgICBzdGF0aWMgdm9pZCBwdXQoSlNDZWxsKiwgRXhlY1N0YXRlKiwgY29uc3Qg
SWRlbnRpZmllciYgcHJvcGVydHlOYW1lLCBKU1ZhbHVlLCBQdXRQcm9wZXJ0eVNsb3QmKTsKKyAg
ICBzdGF0aWMgYm9vbCBnZXRPd25Qcm9wZXJ0eVNsb3QoSlNDZWxsKiwgRXhlY1N0YXRlKiwgUHJv
cGVydHlOYW1lLCBQcm9wZXJ0eVNsb3QmKTsKKyAgICBzdGF0aWMgYm9vbCBnZXRPd25Qcm9wZXJ0
eURlc2NyaXB0b3IoSlNPYmplY3QqLCBFeGVjU3RhdGUqLCBQcm9wZXJ0eU5hbWUsIFByb3BlcnR5
RGVzY3JpcHRvciYpOworICAgIHN0YXRpYyB2b2lkIHB1dChKU0NlbGwqLCBFeGVjU3RhdGUqLCBQ
cm9wZXJ0eU5hbWUsIEpTVmFsdWUsIFB1dFByb3BlcnR5U2xvdCYpOwogICAgIHN0YXRpYyBDYWxs
VHlwZSBnZXRDYWxsRGF0YShKU0NlbGwqLCBDYWxsRGF0YSYpOwotICAgIHN0YXRpYyBib29sIGRl
bGV0ZVByb3BlcnR5KEpTQ2VsbCosIEV4ZWNTdGF0ZSosIGNvbnN0IElkZW50aWZpZXImIHByb3Bl
cnR5TmFtZSk7CisgICAgc3RhdGljIGJvb2wgZGVsZXRlUHJvcGVydHkoSlNDZWxsKiwgRXhlY1N0
YXRlKiwgUHJvcGVydHlOYW1lKTsKICAgICBzdGF0aWMgSlNWYWx1ZSBkZWZhdWx0VmFsdWUoY29u
c3QgSlNPYmplY3QqLCBFeGVjU3RhdGUqLCBQcmVmZXJyZWRQcmltaXRpdmVUeXBlKTsKIAogICAg
IGJvb2wgdG9Cb29sZWFuKEV4ZWNTdGF0ZSopIGNvbnN0OyAvLyBGSVhNRTogQ3VycmVudGx5IHRo
aXMgaXMgYnJva2VuIGJlY2F1c2Ugbm9uZSBvZiB0aGUgc3VwZXJjbGFzc2VzIGFyZSBtYXJrZWQg
dmlydHVhbC4gV2UgbmVlZCB0byBzb2x2ZSB0aGlzIGluIHRoZSBsb25nZXIgdGVybS4KIAogICAg
IFJlZlB0cjxPYmpjSW5zdGFuY2U+IF9pbnN0YW5jZTsKLSAgICBJZGVudGlmaWVyIF9pdGVtOwor
ICAgIFVTdHJpbmcgX2l0ZW07CiB9OwogCiB9IC8vIG5hbWVzcGFjZSBCaW5kaW5ncwpJbmRleDog
U291cmNlL1dlYkNvcmUvYnJpZGdlL29iamMvb2JqY19ydW50aW1lLm1tCj09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0t
IFNvdXJjZS9XZWJDb3JlL2JyaWRnZS9vYmpjL29iamNfcnVudGltZS5tbQkocmV2aXNpb24gMTE2
NjY3KQorKysgU291cmNlL1dlYkNvcmUvYnJpZGdlL29iamMvb2JqY19ydW50aW1lLm1tCSh3b3Jr
aW5nIGNvcHkpCkBAIC0xOTIsNyArMTkyLDcgQEAgdW5zaWduZWQgaW50IE9iamNBcnJheTo6Z2V0
TGVuZ3RoKCkgY29ucwogCiBjb25zdCBDbGFzc0luZm8gT2JqY0ZhbGxiYWNrT2JqZWN0SW1wOjpz
X2luZm8gPSB7ICJPYmpjRmFsbGJhY2tPYmplY3QiLCAmSlNOb25GaW5hbE9iamVjdDo6c19pbmZv
LCAwLCAwLCBDUkVBVEVfTUVUSE9EX1RBQkxFKE9iamNGYWxsYmFja09iamVjdEltcCkgfTsKIAot
T2JqY0ZhbGxiYWNrT2JqZWN0SW1wOjpPYmpjRmFsbGJhY2tPYmplY3RJbXAoSlNHbG9iYWxPYmpl
Y3QqIGdsb2JhbE9iamVjdCwgU3RydWN0dXJlKiBzdHJ1Y3R1cmUsIE9iamNJbnN0YW5jZSogaSwg
Y29uc3QgSWRlbnRpZmllciYgcHJvcGVydHlOYW1lKQorT2JqY0ZhbGxiYWNrT2JqZWN0SW1wOjpP
YmpjRmFsbGJhY2tPYmplY3RJbXAoSlNHbG9iYWxPYmplY3QqIGdsb2JhbE9iamVjdCwgU3RydWN0
dXJlKiBzdHJ1Y3R1cmUsIE9iamNJbnN0YW5jZSogaSwgY29uc3QgVVN0cmluZyYgcHJvcGVydHlO
YW1lKQogICAgIDogSlNOb25GaW5hbE9iamVjdChnbG9iYWxPYmplY3QtPmdsb2JhbERhdGEoKSwg
c3RydWN0dXJlKQogICAgICwgX2luc3RhbmNlKGkpCiAgICAgLCBfaXRlbShwcm9wZXJ0eU5hbWUp
CkBAIC0yMTAsMjEgKzIxMCwyMSBAQCB2b2lkIE9iamNGYWxsYmFja09iamVjdEltcDo6ZmluaXNo
Q3JlYXRpCiAgICAgQVNTRVJUKGluaGVyaXRzKCZzX2luZm8pKTsKIH0KIAotYm9vbCBPYmpjRmFs
bGJhY2tPYmplY3RJbXA6OmdldE93blByb3BlcnR5U2xvdChKU0NlbGwqLCBFeGVjU3RhdGUqLCBj
b25zdCBJZGVudGlmaWVyJiwgUHJvcGVydHlTbG90JiBzbG90KQorYm9vbCBPYmpjRmFsbGJhY2tP
YmplY3RJbXA6OmdldE93blByb3BlcnR5U2xvdChKU0NlbGwqLCBFeGVjU3RhdGUqLCBQcm9wZXJ0
eU5hbWUsIFByb3BlcnR5U2xvdCYgc2xvdCkKIHsKICAgICAvLyBrZWVwIHRoZSBwcm90b3R5cGUg
ZnJvbSBnZXR0aW5nIGNhbGxlZCBpbnN0ZWFkIG9mIGp1c3QgcmV0dXJuaW5nIGZhbHNlCiAgICAg
c2xvdC5zZXRVbmRlZmluZWQoKTsKICAgICByZXR1cm4gdHJ1ZTsKIH0KIAotYm9vbCBPYmpjRmFs
bGJhY2tPYmplY3RJbXA6OmdldE93blByb3BlcnR5RGVzY3JpcHRvcihKU09iamVjdCosIEV4ZWNT
dGF0ZSosIGNvbnN0IElkZW50aWZpZXImLCBQcm9wZXJ0eURlc2NyaXB0b3ImIGRlc2NyaXB0b3Ip
Citib29sIE9iamNGYWxsYmFja09iamVjdEltcDo6Z2V0T3duUHJvcGVydHlEZXNjcmlwdG9yKEpT
T2JqZWN0KiwgRXhlY1N0YXRlKiwgUHJvcGVydHlOYW1lLCBQcm9wZXJ0eURlc2NyaXB0b3ImIGRl
c2NyaXB0b3IpCiB7CiAgICAgLy8ga2VlcCB0aGUgcHJvdG90eXBlIGZyb20gZ2V0dGluZyBjYWxs
ZWQgaW5zdGVhZCBvZiBqdXN0IHJldHVybmluZyBmYWxzZQogICAgIGRlc2NyaXB0b3Iuc2V0VW5k
ZWZpbmVkKCk7CiAgICAgcmV0dXJuIHRydWU7CiB9CiAKLXZvaWQgT2JqY0ZhbGxiYWNrT2JqZWN0
SW1wOjpwdXQoSlNDZWxsKiwgRXhlY1N0YXRlKiwgY29uc3QgSWRlbnRpZmllciYsIEpTVmFsdWUs
IFB1dFByb3BlcnR5U2xvdCYpCit2b2lkIE9iamNGYWxsYmFja09iamVjdEltcDo6cHV0KEpTQ2Vs
bCosIEV4ZWNTdGF0ZSosIFByb3BlcnR5TmFtZSwgSlNWYWx1ZSwgUHV0UHJvcGVydHlTbG90JikK
IHsKIH0KIApAQCAtMjQ5LDcgKzI0OSw3IEBAIHN0YXRpYyBFbmNvZGVkSlNWYWx1ZSBKU0NfSE9T
VF9DQUxMIGNhbGwKICAgICBpZiAoW3RhcmdldE9iamVjdCByZXNwb25kc1RvU2VsZWN0b3I6QHNl
bGVjdG9yKGludm9rZVVuZGVmaW5lZE1ldGhvZEZyb21XZWJTY3JpcHQ6d2l0aEFyZ3VtZW50czop
XSl7CiAgICAgICAgIE9iamNDbGFzcyogb2JqY0NsYXNzID0gc3RhdGljX2Nhc3Q8T2JqY0NsYXNz
Kj4ob2JqY0luc3RhbmNlLT5nZXRDbGFzcygpKTsKICAgICAgICAgT3duUHRyPE9iamNNZXRob2Q+
IGZhbGxiYWNrTWV0aG9kKGFkb3B0UHRyKG5ldyBPYmpjTWV0aG9kKG9iamNDbGFzcy0+aXNhKCks
IEBzZWxlY3RvcihpbnZva2VVbmRlZmluZWRNZXRob2RGcm9tV2ViU2NyaXB0OndpdGhBcmd1bWVu
dHM6KSkpKTsKLSAgICAgICAgY29uc3QgSWRlbnRpZmllciYgbmFtZUlkZW50aWZpZXIgPSBzdGF0
aWNfY2FzdDxPYmpjRmFsbGJhY2tPYmplY3RJbXAqPihleGVjLT5jYWxsZWUoKSktPnByb3BlcnR5
TmFtZSgpOworICAgICAgICBjb25zdCBVU3RyaW5nJiBuYW1lSWRlbnRpZmllciA9IHN0YXRpY19j
YXN0PE9iamNGYWxsYmFja09iamVjdEltcCo+KGV4ZWMtPmNhbGxlZSgpKS0+cHJvcGVydHlOYW1l
KCk7CiAgICAgICAgIFJldGFpblB0cjxDRlN0cmluZ1JlZj4gbmFtZShBZG9wdENGLCBDRlN0cmlu
Z0NyZWF0ZVdpdGhDaGFyYWN0ZXJzKDAsIG5hbWVJZGVudGlmaWVyLmNoYXJhY3RlcnMoKSwgbmFt
ZUlkZW50aWZpZXIubGVuZ3RoKCkpKTsKICAgICAgICAgZmFsbGJhY2tNZXRob2QtPnNldEphdmFT
Y3JpcHROYW1lKG5hbWUuZ2V0KCkpOwogICAgICAgICByZXN1bHQgPSBvYmpjSW5zdGFuY2UtPmlu
dm9rZU9iamNNZXRob2QoZXhlYywgZmFsbGJhY2tNZXRob2QuZ2V0KCkpOwpAQCAtMjcwLDcgKzI3
MCw3IEBAIENhbGxUeXBlIE9iamNGYWxsYmFja09iamVjdEltcDo6Z2V0Q2FsbEQKICAgICByZXR1
cm4gQ2FsbFR5cGVIb3N0OwogfQogCi1ib29sIE9iamNGYWxsYmFja09iamVjdEltcDo6ZGVsZXRl
UHJvcGVydHkoSlNDZWxsKiwgRXhlY1N0YXRlKiwgY29uc3QgSWRlbnRpZmllciYpCitib29sIE9i
amNGYWxsYmFja09iamVjdEltcDo6ZGVsZXRlUHJvcGVydHkoSlNDZWxsKiwgRXhlY1N0YXRlKiwg
UHJvcGVydHlOYW1lKQogewogICAgIHJldHVybiBmYWxzZTsKIH0KQEAgLTI3OCw3ICsyNzgsNyBA
QCBib29sIE9iamNGYWxsYmFja09iamVjdEltcDo6ZGVsZXRlUHJvcGVyCiBKU1ZhbHVlIE9iamNG
YWxsYmFja09iamVjdEltcDo6ZGVmYXVsdFZhbHVlKGNvbnN0IEpTT2JqZWN0KiBvYmplY3QsIEV4
ZWNTdGF0ZSogZXhlYywgUHJlZmVycmVkUHJpbWl0aXZlVHlwZSkKIHsKICAgICBjb25zdCBPYmpj
RmFsbGJhY2tPYmplY3RJbXAqIHRoaXNPYmplY3QgPSBqc0Nhc3Q8Y29uc3QgT2JqY0ZhbGxiYWNr
T2JqZWN0SW1wKj4ob2JqZWN0KTsKLSAgICByZXR1cm4gdGhpc09iamVjdC0+X2luc3RhbmNlLT5n
ZXRWYWx1ZU9mVW5kZWZpbmVkRmllbGQoZXhlYywgdGhpc09iamVjdC0+X2l0ZW0pOworICAgIHJl
dHVybiB0aGlzT2JqZWN0LT5faW5zdGFuY2UtPmdldFZhbHVlT2ZVbmRlZmluZWRGaWVsZChleGVj
LCBJZGVudGlmaWVyKGV4ZWMsIHRoaXNPYmplY3QtPl9pdGVtKSk7CiB9CiAKIGJvb2wgT2JqY0Zh
bGxiYWNrT2JqZWN0SW1wOjp0b0Jvb2xlYW4oRXhlY1N0YXRlICopIGNvbnN0CkluZGV4OiBTb3Vy
Y2UvV2ViQ29yZS9icmlkZ2UvcXQvcXRfY2xhc3MuY3BwCj09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9X
ZWJDb3JlL2JyaWRnZS9xdC9xdF9jbGFzcy5jcHAJKHJldmlzaW9uIDExNjY2NykKKysrIFNvdXJj
ZS9XZWJDb3JlL2JyaWRnZS9xdC9xdF9jbGFzcy5jcHAJKHdvcmtpbmcgY29weSkKQEAgLTY2LDcg
KzY2LDcgQEAgY29uc3QgY2hhciogUXRDbGFzczo6bmFtZSgpIGNvbnN0CiAvLyBhbmQgbm90IGdl
dCB3cmFwcGVkIGluIFJ1bnRpbWVNZXRob2QpLiBBbHNvLCB1c2UgdGhpcyBmb3IgbWV0aG9kcywK
IC8vIHNvIHdlIGNhbiBjYWNoZSB0aGUgb2JqZWN0IGFuZCByZXR1cm4gdGhlIHNhbWUgb2JqZWN0
IGZvciB0aGUgc2FtZQogLy8gaWRlbnRpZmllci4KLUpTVmFsdWUgUXRDbGFzczo6ZmFsbGJhY2tP
YmplY3QoRXhlY1N0YXRlKiBleGVjLCBJbnN0YW5jZSogaW5zdCwgY29uc3QgSWRlbnRpZmllciYg
aWRlbnRpZmllcikKK0pTVmFsdWUgUXRDbGFzczo6ZmFsbGJhY2tPYmplY3QoRXhlY1N0YXRlKiBl
eGVjLCBJbnN0YW5jZSogaW5zdCwgUHJvcGVydHlOYW1lIGlkZW50aWZpZXIpCiB7CiAgICAgUXRJ
bnN0YW5jZSogcXRpbnN0ID0gc3RhdGljX2Nhc3Q8UXRJbnN0YW5jZSo+KGluc3QpOwogCkBAIC04
Niw3ICs4Niw3IEBAIEpTVmFsdWUgUXRDbGFzczo6ZmFsbGJhY2tPYmplY3QoRXhlY1N0YXQKICAg
ICBpZiAobm9ybWFsLmNvbnRhaW5zKCcoJykgJiYgKGluZGV4ID0gbV9tZXRhT2JqZWN0LT5pbmRl
eE9mTWV0aG9kKG5vcm1hbCkpICE9IC0xKSB7CiAgICAgICAgIFFNZXRhTWV0aG9kIG0gPSBtX21l
dGFPYmplY3QtPm1ldGhvZChpbmRleCk7CiAgICAgICAgIGlmIChtLmFjY2VzcygpICE9IFFNZXRh
TWV0aG9kOjpQcml2YXRlKSB7Ci0gICAgICAgICAgICBRdFJ1bnRpbWVNZXRhTWV0aG9kKiB2YWwg
PSBRdFJ1bnRpbWVNZXRhTWV0aG9kOjpjcmVhdGUoZXhlYywgaWRlbnRpZmllciwgc3RhdGljX2Nh
c3Q8UXRJbnN0YW5jZSo+KGluc3QpLCBpbmRleCwgbm9ybWFsLCBmYWxzZSk7CisgICAgICAgICAg
ICBRdFJ1bnRpbWVNZXRhTWV0aG9kKiB2YWwgPSBRdFJ1bnRpbWVNZXRhTWV0aG9kOjpjcmVhdGUo
ZXhlYywgdXN0cmluZywgc3RhdGljX2Nhc3Q8UXRJbnN0YW5jZSo+KGluc3QpLCBpbmRleCwgbm9y
bWFsLCBmYWxzZSk7CiAgICAgICAgICAgICBxdGluc3QtPm1fbWV0aG9kcy5pbnNlcnQobmFtZSwg
V3JpdGVCYXJyaWVyPEpTT2JqZWN0PihleGVjLT5nbG9iYWxEYXRhKCksIHF0aW5zdC0+Y3JlYXRl
UnVudGltZU9iamVjdChleGVjKSwgdmFsKSk7CiAgICAgICAgICAgICByZXR1cm4gdmFsOwogICAg
ICAgICB9CkBAIC0xMDksNyArMTA5LDcgQEAgSlNWYWx1ZSBRdENsYXNzOjpmYWxsYmFja09iamVj
dChFeGVjU3RhdAogI2Vsc2UKICAgICAgICAgaWYgKG5vcm1hbCA9PSBtLm5hbWUoKSkgewogI2Vu
ZGlmCi0gICAgICAgICAgICBRdFJ1bnRpbWVNZXRhTWV0aG9kKiB2YWwgPSBRdFJ1bnRpbWVNZXRh
TWV0aG9kOjpjcmVhdGUoZXhlYywgaWRlbnRpZmllciwgc3RhdGljX2Nhc3Q8UXRJbnN0YW5jZSo+
KGluc3QpLCBpbmRleCwgbm9ybWFsLCBmYWxzZSk7CisgICAgICAgICAgICBRdFJ1bnRpbWVNZXRh
TWV0aG9kKiB2YWwgPSBRdFJ1bnRpbWVNZXRhTWV0aG9kOjpjcmVhdGUoZXhlYywgdXN0cmluZywg
c3RhdGljX2Nhc3Q8UXRJbnN0YW5jZSo+KGluc3QpLCBpbmRleCwgbm9ybWFsLCBmYWxzZSk7CiAg
ICAgICAgICAgICBxdGluc3QtPm1fbWV0aG9kcy5pbnNlcnQobmFtZSwgV3JpdGVCYXJyaWVyPEpT
T2JqZWN0PihleGVjLT5nbG9iYWxEYXRhKCksIHF0aW5zdC0+Y3JlYXRlUnVudGltZU9iamVjdChl
eGVjKSwgdmFsKSk7CiAgICAgICAgICAgICByZXR1cm4gdmFsOwogICAgICAgICB9CkBAIC0xMTks
NyArMTE5LDcgQEAgSlNWYWx1ZSBRdENsYXNzOjpmYWxsYmFja09iamVjdChFeGVjU3RhdAogfQog
CiAvLyBUaGlzIGZ1bmN0aW9uYWxpdHkgaXMgaGFuZGxlZCBieSB0aGUgZmFsbGJhY2sgY2FzZSBh
Ym92ZS4uLgotTWV0aG9kTGlzdCBRdENsYXNzOjptZXRob2RzTmFtZWQoY29uc3QgSWRlbnRpZmll
ciYsIEluc3RhbmNlKikgY29uc3QKK01ldGhvZExpc3QgUXRDbGFzczo6bWV0aG9kc05hbWVkKFBy
b3BlcnR5TmFtZSwgSW5zdGFuY2UqKSBjb25zdAogewogICAgIHJldHVybiBNZXRob2RMaXN0KCk7
CiB9CkBAIC0xMjcsNyArMTI3LDcgQEAgTWV0aG9kTGlzdCBRdENsYXNzOjptZXRob2RzTmFtZWQo
Y29uc3QgSQogLy8gIyMjIHdlIG1heSBlbmQgdXAgd2l0aCBhIGRpZmZlcmVudCBzZWFyY2ggb3Jk
ZXIgdGhhbiBRdFNjcmlwdCBieSBub3QKIC8vIGZvbGRpbmcgdGhpcyBjb2RlIGludG8gdGhlIGZh
bGxiYWNrTWV0aG9kIGFib3ZlLCBidXQgRmllbGRzIHByb3BhZ2F0ZSBvdXQKIC8vIG9mIHRoZSBi
aW5kaW5nIGNvZGUKLUZpZWxkKiBRdENsYXNzOjpmaWVsZE5hbWVkKGNvbnN0IElkZW50aWZpZXIm
IGlkZW50aWZpZXIsIEluc3RhbmNlKiBpbnN0YW5jZSkgY29uc3QKK0ZpZWxkKiBRdENsYXNzOjpm
aWVsZE5hbWVkKFByb3BlcnR5TmFtZSBpZGVudGlmaWVyLCBJbnN0YW5jZSogaW5zdGFuY2UpIGNv
bnN0CiB7CiAgICAgLy8gQ2hlY2sgc3RhdGljIHByb3BlcnRpZXMgZmlyc3QKICAgICBRdEluc3Rh
bmNlKiBxdGluc3QgPSBzdGF0aWNfY2FzdDxRdEluc3RhbmNlKj4oaW5zdGFuY2UpOwpJbmRleDog
U291cmNlL1dlYkNvcmUvYnJpZGdlL3F0L3F0X2NsYXNzLmgKPT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNl
L1dlYkNvcmUvYnJpZGdlL3F0L3F0X2NsYXNzLmgJKHJldmlzaW9uIDExNjY2NykKKysrIFNvdXJj
ZS9XZWJDb3JlL2JyaWRnZS9xdC9xdF9jbGFzcy5oCSh3b3JraW5nIGNvcHkpCkBAIC00MSwxMCAr
NDEsMTAgQEAgcHVibGljOgogICAgIHZpcnR1YWwgflF0Q2xhc3MoKTsKIAogICAgIHZpcnR1YWwg
Y29uc3QgY2hhciogbmFtZSgpIGNvbnN0OwotICAgIHZpcnR1YWwgTWV0aG9kTGlzdCBtZXRob2Rz
TmFtZWQoY29uc3QgSWRlbnRpZmllciYsIEluc3RhbmNlKikgY29uc3Q7Ci0gICAgdmlydHVhbCBG
aWVsZCogZmllbGROYW1lZChjb25zdCBJZGVudGlmaWVyJiwgSW5zdGFuY2UqKSBjb25zdDsKKyAg
ICB2aXJ0dWFsIE1ldGhvZExpc3QgbWV0aG9kc05hbWVkKFByb3BlcnR5TmFtZSwgSW5zdGFuY2Uq
KSBjb25zdDsKKyAgICB2aXJ0dWFsIEZpZWxkKiBmaWVsZE5hbWVkKFByb3BlcnR5TmFtZSwgSW5z
dGFuY2UqKSBjb25zdDsKIAotICAgIHZpcnR1YWwgSlNWYWx1ZSBmYWxsYmFja09iamVjdChFeGVj
U3RhdGUqLCBJbnN0YW5jZSosIGNvbnN0IElkZW50aWZpZXImKTsKKyAgICB2aXJ0dWFsIEpTVmFs
dWUgZmFsbGJhY2tPYmplY3QoRXhlY1N0YXRlKiwgSW5zdGFuY2UqLCBQcm9wZXJ0eU5hbWUpOwog
CiBwcml2YXRlOgogICAgIFF0Q2xhc3MoY29uc3QgUXRDbGFzcyYpOyAvLyBwcm9oaWJpdCBjb3B5
aW5nCkluZGV4OiBTb3VyY2UvV2ViQ29yZS9icmlkZ2UvcXQvcXRfaW5zdGFuY2UuY3BwCj09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT0KLS0tIFNvdXJjZS9XZWJDb3JlL2JyaWRnZS9xdC9xdF9pbnN0YW5jZS5jcHAJKHJldmlz
aW9uIDExNjY2NykKKysrIFNvdXJjZS9XZWJDb3JlL2JyaWRnZS9xdC9xdF9pbnN0YW5jZS5jcHAJ
KHdvcmtpbmcgY29weSkKQEAgLTE0OCwxMiArMTQ4LDEyIEBAIFBhc3NSZWZQdHI8UXRJbnN0YW5j
ZT4gUXRJbnN0YW5jZTo6Z2V0UXQKICAgICByZXR1cm4gcmV0LnJlbGVhc2UoKTsKIH0KIAotYm9v
bCBRdEluc3RhbmNlOjpnZXRPd25Qcm9wZXJ0eVNsb3QoSlNPYmplY3QqIG9iamVjdCwgRXhlY1N0
YXRlKiBleGVjLCBjb25zdCBJZGVudGlmaWVyJiBwcm9wZXJ0eU5hbWUsIFByb3BlcnR5U2xvdCYg
c2xvdCkKK2Jvb2wgUXRJbnN0YW5jZTo6Z2V0T3duUHJvcGVydHlTbG90KEpTT2JqZWN0KiBvYmpl
Y3QsIEV4ZWNTdGF0ZSogZXhlYywgUHJvcGVydHlOYW1lIHByb3BlcnR5TmFtZSwgUHJvcGVydHlT
bG90JiBzbG90KQogewogICAgIHJldHVybiBKU09iamVjdDo6Z2V0T3duUHJvcGVydHlTbG90KG9i
amVjdCwgZXhlYywgcHJvcGVydHlOYW1lLCBzbG90KTsKIH0KIAotdm9pZCBRdEluc3RhbmNlOjpw
dXQoSlNPYmplY3QqIG9iamVjdCwgRXhlY1N0YXRlKiBleGVjLCBjb25zdCBJZGVudGlmaWVyJiBw
cm9wZXJ0eU5hbWUsIEpTVmFsdWUgdmFsdWUsIFB1dFByb3BlcnR5U2xvdCYgc2xvdCkKK3ZvaWQg
UXRJbnN0YW5jZTo6cHV0KEpTT2JqZWN0KiBvYmplY3QsIEV4ZWNTdGF0ZSogZXhlYywgUHJvcGVy
dHlOYW1lIHByb3BlcnR5TmFtZSwgSlNWYWx1ZSB2YWx1ZSwgUHV0UHJvcGVydHlTbG90JiBzbG90
KQogewogICAgIEpTT2JqZWN0OjpwdXQob2JqZWN0LCBleGVjLCBwcm9wZXJ0eU5hbWUsIHZhbHVl
LCBzbG90KTsKIH0KQEAgLTI0OCw3ICsyNDgsNyBAQCB2b2lkIFF0SW5zdGFuY2U6OmdldFByb3Bl
cnR5TmFtZXMoRXhlY1N0CiAgICAgfQogfQogCi1KU1ZhbHVlIFF0SW5zdGFuY2U6OmdldE1ldGhv
ZChFeGVjU3RhdGUqIGV4ZWMsIGNvbnN0IElkZW50aWZpZXImIHByb3BlcnR5TmFtZSkKK0pTVmFs
dWUgUXRJbnN0YW5jZTo6Z2V0TWV0aG9kKEV4ZWNTdGF0ZSogZXhlYywgUHJvcGVydHlOYW1lIHBy
b3BlcnR5TmFtZSkKIHsKICAgICBpZiAoIWdldENsYXNzKCkpCiAgICAgICAgIHJldHVybiBqc051
bGwoKTsKSW5kZXg6IFNvdXJjZS9XZWJDb3JlL2JyaWRnZS9xdC9xdF9pbnN0YW5jZS5oCj09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT0KLS0tIFNvdXJjZS9XZWJDb3JlL2JyaWRnZS9xdC9xdF9pbnN0YW5jZS5oCShyZXZpc2lv
biAxMTY2NjcpCisrKyBTb3VyY2UvV2ViQ29yZS9icmlkZ2UvcXQvcXRfaW5zdGFuY2UuaAkod29y
a2luZyBjb3B5KQpAQCAtNTEsNyArNTEsNyBAQCBwdWJsaWM6CiAKICAgICB2b2lkIHZpc2l0QWdn
cmVnYXRlKFNsb3RWaXNpdG9yJik7CiAKLSAgICB2aXJ0dWFsIEpTVmFsdWUgZ2V0TWV0aG9kKEV4
ZWNTdGF0ZSogZXhlYywgY29uc3QgSWRlbnRpZmllciYgcHJvcGVydHlOYW1lKTsKKyAgICB2aXJ0
dWFsIEpTVmFsdWUgZ2V0TWV0aG9kKEV4ZWNTdGF0ZSosIFByb3BlcnR5TmFtZSk7CiAgICAgdmly
dHVhbCBKU1ZhbHVlIGludm9rZU1ldGhvZChFeGVjU3RhdGUqLCBSdW50aW1lTWV0aG9kKik7CiAK
ICAgICB2aXJ0dWFsIHZvaWQgZ2V0UHJvcGVydHlOYW1lcyhFeGVjU3RhdGUqLCBQcm9wZXJ0eU5h
bWVBcnJheSYpOwpAQCAtNjUsOCArNjUsOCBAQCBwdWJsaWM6CiAKICAgICBzdGF0aWMgUGFzc1Jl
ZlB0cjxRdEluc3RhbmNlPiBnZXRRdEluc3RhbmNlKFFPYmplY3QqLCBQYXNzUmVmUHRyPFJvb3RP
YmplY3Q+LCBRU2NyaXB0RW5naW5lOjpWYWx1ZU93bmVyc2hpcCBvd25lcnNoaXApOwogCi0gICAg
dmlydHVhbCBib29sIGdldE93blByb3BlcnR5U2xvdChKU09iamVjdCosIEV4ZWNTdGF0ZSosIGNv
bnN0IElkZW50aWZpZXImLCBQcm9wZXJ0eVNsb3QmKTsKLSAgICB2aXJ0dWFsIHZvaWQgcHV0KEpT
T2JqZWN0KiwgRXhlY1N0YXRlKiwgY29uc3QgSWRlbnRpZmllciYsIEpTVmFsdWUsIFB1dFByb3Bl
cnR5U2xvdCYpOworICAgIHZpcnR1YWwgYm9vbCBnZXRPd25Qcm9wZXJ0eVNsb3QoSlNPYmplY3Qq
LCBFeGVjU3RhdGUqLCBQcm9wZXJ0eU5hbWUsIFByb3BlcnR5U2xvdCYpOworICAgIHZpcnR1YWwg
dm9pZCBwdXQoSlNPYmplY3QqLCBFeGVjU3RhdGUqLCBQcm9wZXJ0eU5hbWUsIEpTVmFsdWUsIFB1
dFByb3BlcnR5U2xvdCYpOwogCiAgICAgdm9pZCByZW1vdmVDYWNoZWRNZXRob2QoSlNPYmplY3Qq
KTsKIApJbmRleDogU291cmNlL1dlYkNvcmUvYnJpZGdlL3F0L3F0X3BpeG1hcHJ1bnRpbWUuY3Bw
Cj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT0KLS0tIFNvdXJjZS9XZWJDb3JlL2JyaWRnZS9xdC9xdF9waXhtYXBydW50aW1l
LmNwcAkocmV2aXNpb24gMTE2NjY3KQorKysgU291cmNlL1dlYkNvcmUvYnJpZGdlL3F0L3F0X3Bp
eG1hcHJ1bnRpbWUuY3BwCSh3b3JraW5nIGNvcHkpCkBAIC01MCw4ICs1MCw4IEBAIG5hbWVzcGFj
ZSBCaW5kaW5ncyB7CiBjbGFzcyBRdFBpeG1hcENsYXNzIDogcHVibGljIENsYXNzIHsKIHB1Ymxp
YzoKICAgICBRdFBpeG1hcENsYXNzKCk7Ci0gICAgdmlydHVhbCBNZXRob2RMaXN0IG1ldGhvZHNO
YW1lZChjb25zdCBJZGVudGlmaWVyJiwgSW5zdGFuY2UqKSBjb25zdDsKLSAgICB2aXJ0dWFsIEZp
ZWxkKiBmaWVsZE5hbWVkKGNvbnN0IElkZW50aWZpZXImLCBJbnN0YW5jZSopIGNvbnN0OworICAg
IHZpcnR1YWwgTWV0aG9kTGlzdCBtZXRob2RzTmFtZWQoUHJvcGVydHlOYW1lLCBJbnN0YW5jZSop
IGNvbnN0OworICAgIHZpcnR1YWwgRmllbGQqIGZpZWxkTmFtZWQoUHJvcGVydHlOYW1lLCBJbnN0
YW5jZSopIGNvbnN0OwogfTsKIAogCkBAIC0yMzksMTAgKzIzOSwxMCBAQCBDbGFzcyogUXRQaXht
YXBJbnN0YW5jZTo6Z2V0Q2xhc3MoKSBjb25zCiAgICAgcmV0dXJuICZxdF9waXhtYXBfbWV0YURh
dGEuY2xzOwogfQogCi1KU1ZhbHVlIFF0UGl4bWFwSW5zdGFuY2U6OmdldE1ldGhvZChFeGVjU3Rh
dGUqIGV4ZWMsIGNvbnN0IElkZW50aWZpZXImIHByb3BlcnR5TmFtZSkKK0pTVmFsdWUgUXRQaXht
YXBJbnN0YW5jZTo6Z2V0TWV0aG9kKEV4ZWNTdGF0ZSogZXhlYywgUHJvcGVydHlOYW1lIHByb3Bl
cnR5TmFtZSkKIHsKICAgICBNZXRob2RMaXN0IG1ldGhvZExpc3QgPSBnZXRDbGFzcygpLT5tZXRo
b2RzTmFtZWQocHJvcGVydHlOYW1lLCB0aGlzKTsKLSAgICByZXR1cm4gUnVudGltZU1ldGhvZDo6
Y3JlYXRlKGV4ZWMsIGV4ZWMtPmxleGljYWxHbG9iYWxPYmplY3QoKSwgV2ViQ29yZTo6ZGVwcmVj
YXRlZEdldERPTVN0cnVjdHVyZTxSdW50aW1lTWV0aG9kPihleGVjKSwgcHJvcGVydHlOYW1lLCBt
ZXRob2RMaXN0KTsKKyAgICByZXR1cm4gUnVudGltZU1ldGhvZDo6Y3JlYXRlKGV4ZWMsIGV4ZWMt
PmxleGljYWxHbG9iYWxPYmplY3QoKSwgV2ViQ29yZTo6ZGVwcmVjYXRlZEdldERPTVN0cnVjdHVy
ZTxSdW50aW1lTWV0aG9kPihleGVjKSwgcHJvcGVydHlOYW1lLnVzdHJpbmcoKSwgbWV0aG9kTGlz
dCk7CiB9CiAKIEpTVmFsdWUgUXRQaXhtYXBJbnN0YW5jZTo6aW52b2tlTWV0aG9kKEV4ZWNTdGF0
ZSogZXhlYywgUnVudGltZU1ldGhvZCogcnVudGltZU1ldGhvZCkKQEAgLTI1NiwyNSArMjU2LDI1
IEBAIEpTVmFsdWUgUXRQaXhtYXBJbnN0YW5jZTo6aW52b2tlTWV0aG9kKEUKICAgICByZXR1cm4g
anNVbmRlZmluZWQoKTsKIH0KIAotTWV0aG9kTGlzdCBRdFBpeG1hcENsYXNzOjptZXRob2RzTmFt
ZWQoY29uc3QgSWRlbnRpZmllciYgaWRlbnRpZmllciwgSW5zdGFuY2UqKSBjb25zdAorTWV0aG9k
TGlzdCBRdFBpeG1hcENsYXNzOjptZXRob2RzTmFtZWQoUHJvcGVydHlOYW1lIGlkZW50aWZpZXIs
IEluc3RhbmNlKikgY29uc3QKIHsKICAgICBNZXRob2RMaXN0IG1ldGhvZHM7Ci0gICAgaWYgKGlk
ZW50aWZpZXIgPT0gUXRQaXhtYXBUb0RhdGFVcmxNZXRob2Q6Om5hbWUoKSkKKyAgICBpZiAoaWRl
bnRpZmllci51c3RyaW5nKCkgPT0gUXRQaXhtYXBUb0RhdGFVcmxNZXRob2Q6Om5hbWUoKSkKICAg
ICAgICAgbWV0aG9kcy5hcHBlbmQoJnF0X3BpeG1hcF9tZXRhRGF0YS50b0RhdGFVcmxNZXRob2Qp
OwotICAgIGVsc2UgaWYgKGlkZW50aWZpZXIgPT0gUXRQaXhtYXBUb0ltYWdlRGF0YU1ldGhvZDo6
bmFtZSgpKQorICAgIGVsc2UgaWYgKGlkZW50aWZpZXIudXN0cmluZygpID09IFF0UGl4bWFwVG9J
bWFnZURhdGFNZXRob2Q6Om5hbWUoKSkKICAgICAgICAgbWV0aG9kcy5hcHBlbmQoJnF0X3BpeG1h
cF9tZXRhRGF0YS50b0ltYWdlRGF0YU1ldGhvZCk7Ci0gICAgZWxzZSBpZiAoaWRlbnRpZmllciA9
PSBRdFBpeG1hcEFzc2lnblRvRWxlbWVudE1ldGhvZDo6bmFtZSgpKQorICAgIGVsc2UgaWYgKGlk
ZW50aWZpZXIudXN0cmluZygpID09IFF0UGl4bWFwQXNzaWduVG9FbGVtZW50TWV0aG9kOjpuYW1l
KCkpCiAgICAgICAgIG1ldGhvZHMuYXBwZW5kKCZxdF9waXhtYXBfbWV0YURhdGEuYXNzaWduVG9F
bGVtZW50TWV0aG9kKTsKLSAgICBlbHNlIGlmIChpZGVudGlmaWVyID09IFF0UGl4bWFwVG9TdHJp
bmdNZXRob2Q6Om5hbWUoKSkKKyAgICBlbHNlIGlmIChpZGVudGlmaWVyLnVzdHJpbmcoKSA9PSBR
dFBpeG1hcFRvU3RyaW5nTWV0aG9kOjpuYW1lKCkpCiAgICAgICAgIG1ldGhvZHMuYXBwZW5kKCZx
dF9waXhtYXBfbWV0YURhdGEudG9TdHJpbmdNZXRob2QpOwogICAgIHJldHVybiBtZXRob2RzOwog
fQogCi1GaWVsZCogUXRQaXhtYXBDbGFzczo6ZmllbGROYW1lZChjb25zdCBJZGVudGlmaWVyJiBp
ZGVudGlmaWVyLCBJbnN0YW5jZSopIGNvbnN0CitGaWVsZCogUXRQaXhtYXBDbGFzczo6ZmllbGRO
YW1lZChQcm9wZXJ0eU5hbWUgaWRlbnRpZmllciwgSW5zdGFuY2UqKSBjb25zdAogewotICAgIGlm
IChpZGVudGlmaWVyID09IFF0UGl4bWFwV2lkdGhGaWVsZDo6bmFtZSgpKQorICAgIGlmIChpZGVu
dGlmaWVyLnVzdHJpbmcoKSA9PSBRdFBpeG1hcFdpZHRoRmllbGQ6Om5hbWUoKSkKICAgICAgICAg
cmV0dXJuICZxdF9waXhtYXBfbWV0YURhdGEud2lkdGhGaWVsZDsKLSAgICBpZiAoaWRlbnRpZmll
ciA9PSBRdFBpeG1hcEhlaWdodEZpZWxkOjpuYW1lKCkpCisgICAgaWYgKGlkZW50aWZpZXIudXN0
cmluZygpID09IFF0UGl4bWFwSGVpZ2h0RmllbGQ6Om5hbWUoKSkKICAgICAgICAgcmV0dXJuICZx
dF9waXhtYXBfbWV0YURhdGEuaGVpZ2h0RmllbGQ7CiAgICAgcmV0dXJuIDA7CiB9CkluZGV4OiBT
b3VyY2UvV2ViQ29yZS9icmlkZ2UvcXQvcXRfcGl4bWFwcnVudGltZS5oCj09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0t
IFNvdXJjZS9XZWJDb3JlL2JyaWRnZS9xdC9xdF9waXhtYXBydW50aW1lLmgJKHJldmlzaW9uIDEx
NjY2NykKKysrIFNvdXJjZS9XZWJDb3JlL2JyaWRnZS9xdC9xdF9waXhtYXBydW50aW1lLmgJKHdv
cmtpbmcgY29weSkKQEAgLTMyLDE3ICszMiwxNyBAQCBjbGFzcyBRdFBpeG1hcEluc3RhbmNlIDog
cHVibGljIEluc3RhbmNlCiBwdWJsaWM6CiAgICAgUXRQaXhtYXBJbnN0YW5jZShQYXNzUmVmUHRy
PFJvb3RPYmplY3Q+IHJvb3RPYmosIGNvbnN0IFFWYXJpYW50JiBuZXdEYXRhKTsKICAgICB2aXJ0
dWFsIENsYXNzKiBnZXRDbGFzcygpIGNvbnN0OwotICAgIHZpcnR1YWwgSlNWYWx1ZSBnZXRNZXRo
b2QoRXhlY1N0YXRlKiBleGVjLCBjb25zdCBJZGVudGlmaWVyJiBwcm9wZXJ0eU5hbWUpOworICAg
IHZpcnR1YWwgSlNWYWx1ZSBnZXRNZXRob2QoRXhlY1N0YXRlKiwgUHJvcGVydHlOYW1lKTsKICAg
ICB2aXJ0dWFsIEpTVmFsdWUgaW52b2tlTWV0aG9kKEV4ZWNTdGF0ZSosIFJ1bnRpbWVNZXRob2Qq
KTsKICAgICB2aXJ0dWFsIHZvaWQgZ2V0UHJvcGVydHlOYW1lcyhFeGVjU3RhdGUqLCBQcm9wZXJ0
eU5hbWVBcnJheSYpOwogCiAgICAgdmlydHVhbCBKU1ZhbHVlIGRlZmF1bHRWYWx1ZShFeGVjU3Rh
dGUqLCBQcmVmZXJyZWRQcmltaXRpdmVUeXBlKSBjb25zdDsKLSAgICB2aXJ0dWFsIEpTVmFsdWUg
dmFsdWVPZihFeGVjU3RhdGUqIGV4ZWMpIGNvbnN0OworICAgIHZpcnR1YWwgSlNWYWx1ZSB2YWx1
ZU9mKEV4ZWNTdGF0ZSopIGNvbnN0OwogICAgIGludCB3aWR0aCgpIGNvbnN0OwogICAgIGludCBo
ZWlnaHQoKSBjb25zdDsKICAgICBRUGl4bWFwIHRvUGl4bWFwKCk7CiAgICAgUUltYWdlIHRvSW1h
Z2UoKTsKLSAgICBSdW50aW1lT2JqZWN0KiBuZXdSdW50aW1lT2JqZWN0KEV4ZWNTdGF0ZSogZXhl
Yyk7CisgICAgUnVudGltZU9iamVjdCogbmV3UnVudGltZU9iamVjdChFeGVjU3RhdGUqKTsKICAg
ICBzdGF0aWMgSlNPYmplY3QqIGNyZWF0ZVBpeG1hcFJ1bnRpbWVPYmplY3QoRXhlY1N0YXRlKiwg
UGFzc1JlZlB0cjxSb290T2JqZWN0PiwgY29uc3QgUVZhcmlhbnQmKTsKICAgICBzdGF0aWMgUVZh
cmlhbnQgdmFyaWFudEZyb21PYmplY3QoSlNPYmplY3QqLCBRTWV0YVR5cGU6OlR5cGUgaGludCk7
CiAgICAgc3RhdGljIGJvb2wgY2FuSGFuZGxlKFFNZXRhVHlwZTo6VHlwZSBoaW50KTsKSW5kZXg6
IFNvdXJjZS9XZWJDb3JlL2JyaWRnZS9xdC9xdF9ydW50aW1lLmNwcAo9PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBT
b3VyY2UvV2ViQ29yZS9icmlkZ2UvcXQvcXRfcnVudGltZS5jcHAJKHJldmlzaW9uIDExNjY2NykK
KysrIFNvdXJjZS9XZWJDb3JlL2JyaWRnZS9xdC9xdF9ydW50aW1lLmNwcAkod29ya2luZyBjb3B5
KQpAQCAtOTY4LDEzICs5NjgsMTMgQEAgSlNWYWx1ZSBjb252ZXJ0UVZhcmlhbnRUb1ZhbHVlKEV4
ZWNTdGF0ZQogCiBjb25zdCBDbGFzc0luZm8gUXRSdW50aW1lTWV0aG9kOjpzX2luZm8gPSB7ICJR
dFJ1bnRpbWVNZXRob2QiLCAmSW50ZXJuYWxGdW5jdGlvbjo6c19pbmZvLCAwLCAwLCBDUkVBVEVf
TUVUSE9EX1RBQkxFKFF0UnVudGltZU1ldGhvZCkgfTsKIAotUXRSdW50aW1lTWV0aG9kOjpRdFJ1
bnRpbWVNZXRob2QoUXRSdW50aW1lTWV0aG9kRGF0YSogZGQsIEV4ZWNTdGF0ZSogZXhlYywgU3Ry
dWN0dXJlKiBzdHJ1Y3R1cmUsIGNvbnN0IElkZW50aWZpZXImIGlkZW50aWZpZXIpCitRdFJ1bnRp
bWVNZXRob2Q6OlF0UnVudGltZU1ldGhvZChRdFJ1bnRpbWVNZXRob2REYXRhKiBkZCwgRXhlY1N0
YXRlKiBleGVjLCBTdHJ1Y3R1cmUqIHN0cnVjdHVyZSwgY29uc3QgVVN0cmluZyYgaWRlbnRpZmll
cikKICAgICA6IEludGVybmFsRnVuY3Rpb24oZXhlYy0+bGV4aWNhbEdsb2JhbE9iamVjdCgpLCBz
dHJ1Y3R1cmUpCiAgICAgLCBkX3B0cihkZCkKIHsKIH0KIAotdm9pZCBRdFJ1bnRpbWVNZXRob2Q6
OmZpbmlzaENyZWF0aW9uKEV4ZWNTdGF0ZSogZXhlYywgY29uc3QgSWRlbnRpZmllciYgaWRlbnRp
ZmllciwgUGFzc1JlZlB0cjxRdEluc3RhbmNlPiBpbnN0YW5jZSkKK3ZvaWQgUXRSdW50aW1lTWV0
aG9kOjpmaW5pc2hDcmVhdGlvbihFeGVjU3RhdGUqIGV4ZWMsIGNvbnN0IFVTdHJpbmcmIGlkZW50
aWZpZXIsIFBhc3NSZWZQdHI8UXRJbnN0YW5jZT4gaW5zdGFuY2UpCiB7CiAgICAgQmFzZTo6Zmlu
aXNoQ3JlYXRpb24oZXhlYy0+Z2xvYmFsRGF0YSgpLCBpZGVudGlmaWVyKTsKICAgICBRV19EKFF0
UnVudGltZU1ldGhvZCk7CkBAIC0xMzg1LDEyICsxMzg1LDEyIEBAIHN0YXRpYyBpbnQgZmluZFNp
Z25hbEluZGV4KGNvbnN0IFFNZXRhT2IKIAogY29uc3QgQ2xhc3NJbmZvIFF0UnVudGltZU1ldGFN
ZXRob2Q6OnNfaW5mbyA9IHsgIlF0UnVudGltZU1ldGhvZCIsICZCYXNlOjpzX2luZm8sIDAsIDAs
IENSRUFURV9NRVRIT0RfVEFCTEUoUXRSdW50aW1lTWV0YU1ldGhvZCkgfTsKIAotUXRSdW50aW1l
TWV0YU1ldGhvZDo6UXRSdW50aW1lTWV0YU1ldGhvZChFeGVjU3RhdGUqIGV4ZWMsIFN0cnVjdHVy
ZSogc3RydWN0dXJlLCBjb25zdCBJZGVudGlmaWVyJiBpZGVudGlmaWVyKQorUXRSdW50aW1lTWV0
YU1ldGhvZDo6UXRSdW50aW1lTWV0YU1ldGhvZChFeGVjU3RhdGUqIGV4ZWMsIFN0cnVjdHVyZSog
c3RydWN0dXJlLCBjb25zdCBVU3RyaW5nJiBpZGVudGlmaWVyKQogICAgIDogUXRSdW50aW1lTWV0
aG9kIChuZXcgUXRSdW50aW1lTWV0YU1ldGhvZERhdGEoKSwgZXhlYywgc3RydWN0dXJlLCBpZGVu
dGlmaWVyKQogewogfQogCi12b2lkIFF0UnVudGltZU1ldGFNZXRob2Q6OmZpbmlzaENyZWF0aW9u
KEV4ZWNTdGF0ZSogZXhlYywgY29uc3QgSWRlbnRpZmllciYgaWRlbnRpZmllciwgUGFzc1JlZlB0
cjxRdEluc3RhbmNlPiBpbnN0YW5jZSwgaW50IGluZGV4LCBjb25zdCBRQnl0ZUFycmF5JiBzaWdu
YXR1cmUsIGJvb2wgYWxsb3dQcml2YXRlKQordm9pZCBRdFJ1bnRpbWVNZXRhTWV0aG9kOjpmaW5p
c2hDcmVhdGlvbihFeGVjU3RhdGUqIGV4ZWMsIGNvbnN0IFVTdHJpbmcmIGlkZW50aWZpZXIsIFBh
c3NSZWZQdHI8UXRJbnN0YW5jZT4gaW5zdGFuY2UsIGludCBpbmRleCwgY29uc3QgUUJ5dGVBcnJh
eSYgc2lnbmF0dXJlLCBib29sIGFsbG93UHJpdmF0ZSkKIHsKICAgICBCYXNlOjpmaW5pc2hDcmVh
dGlvbihleGVjLCBpZGVudGlmaWVyLCBpbnN0YW5jZSk7CiAgICAgUVdfRChRdFJ1bnRpbWVNZXRh
TWV0aG9kKTsKQEAgLTE0NTIsMTMgKzE0NTIsMTMgQEAgQ2FsbFR5cGUgUXRSdW50aW1lTWV0YU1l
dGhvZDo6Z2V0Q2FsbERhdAogICAgIHJldHVybiBDYWxsVHlwZUhvc3Q7CiB9CiAKLWJvb2wgUXRS
dW50aW1lTWV0YU1ldGhvZDo6Z2V0T3duUHJvcGVydHlTbG90KEpTQ2VsbCogY2VsbCwgRXhlY1N0
YXRlKiBleGVjLCBjb25zdCBJZGVudGlmaWVyJiBwcm9wZXJ0eU5hbWUsIFByb3BlcnR5U2xvdCYg
c2xvdCkKK2Jvb2wgUXRSdW50aW1lTWV0YU1ldGhvZDo6Z2V0T3duUHJvcGVydHlTbG90KEpTQ2Vs
bCogY2VsbCwgRXhlY1N0YXRlKiBleGVjLCBQcm9wZXJ0eU5hbWUgcHJvcGVydHlOYW1lLCBQcm9w
ZXJ0eVNsb3QmIHNsb3QpCiB7CiAgICAgUXRSdW50aW1lTWV0YU1ldGhvZCogdGhpc09iamVjdCA9
IGpzQ2FzdDxRdFJ1bnRpbWVNZXRhTWV0aG9kKj4oY2VsbCk7Ci0gICAgaWYgKHByb3BlcnR5TmFt
ZSA9PSAiY29ubmVjdCIpIHsKKyAgICBpZiAocHJvcGVydHlOYW1lID09IElkZW50aWZpZXIoZXhl
YywgImNvbm5lY3QiKSkgewogICAgICAgICBzbG90LnNldEN1c3RvbSh0aGlzT2JqZWN0LCB0aGlz
T2JqZWN0LT5jb25uZWN0R2V0dGVyKTsKICAgICAgICAgcmV0dXJuIHRydWU7Ci0gICAgfSBlbHNl
IGlmIChwcm9wZXJ0eU5hbWUgPT0gImRpc2Nvbm5lY3QiKSB7CisgICAgfSBlbHNlIGlmIChwcm9w
ZXJ0eU5hbWUgPT0gSWRlbnRpZmllcihleGVjLCAiZGlzY29ubmVjdCIpKSB7CiAgICAgICAgIHNs
b3Quc2V0Q3VzdG9tKHRoaXNPYmplY3QsIHRoaXNPYmplY3QtPmRpc2Nvbm5lY3RHZXR0ZXIpOwog
ICAgICAgICByZXR1cm4gdHJ1ZTsKICAgICB9IGVsc2UgaWYgKHByb3BlcnR5TmFtZSA9PSBleGVj
LT5wcm9wZXJ0eU5hbWVzKCkubGVuZ3RoKSB7CkBAIC0xNDY5LDE3ICsxNDY5LDE3IEBAIGJvb2wg
UXRSdW50aW1lTWV0YU1ldGhvZDo6Z2V0T3duUHJvcGVydHkKICAgICByZXR1cm4gUXRSdW50aW1l
TWV0aG9kOjpnZXRPd25Qcm9wZXJ0eVNsb3QodGhpc09iamVjdCwgZXhlYywgcHJvcGVydHlOYW1l
LCBzbG90KTsKIH0KIAotYm9vbCBRdFJ1bnRpbWVNZXRhTWV0aG9kOjpnZXRPd25Qcm9wZXJ0eURl
c2NyaXB0b3IoSlNPYmplY3QqIG9iamVjdCwgRXhlY1N0YXRlKiBleGVjLCBjb25zdCBJZGVudGlm
aWVyJiBwcm9wZXJ0eU5hbWUsIFByb3BlcnR5RGVzY3JpcHRvciYgZGVzY3JpcHRvcikKK2Jvb2wg
UXRSdW50aW1lTWV0YU1ldGhvZDo6Z2V0T3duUHJvcGVydHlEZXNjcmlwdG9yKEpTT2JqZWN0KiBv
YmplY3QsIEV4ZWNTdGF0ZSogZXhlYywgUHJvcGVydHlOYW1lIHByb3BlcnR5TmFtZSwgUHJvcGVy
dHlEZXNjcmlwdG9yJiBkZXNjcmlwdG9yKQogewogICAgIFF0UnVudGltZU1ldGFNZXRob2QqIHRo
aXNPYmplY3QgPSBqc0Nhc3Q8UXRSdW50aW1lTWV0YU1ldGhvZCo+KG9iamVjdCk7Ci0gICAgaWYg
KHByb3BlcnR5TmFtZSA9PSAiY29ubmVjdCIpIHsKKyAgICBpZiAocHJvcGVydHlOYW1lID09IElk
ZW50aWZpZXIoZXhlYywgImNvbm5lY3QiKSkgewogICAgICAgICBQcm9wZXJ0eVNsb3Qgc2xvdDsK
ICAgICAgICAgc2xvdC5zZXRDdXN0b20odGhpc09iamVjdCwgY29ubmVjdEdldHRlcik7CiAgICAg
ICAgIGRlc2NyaXB0b3Iuc2V0RGVzY3JpcHRvcihzbG90LmdldFZhbHVlKGV4ZWMsIHByb3BlcnR5
TmFtZSksIERvbnREZWxldGUgfCBSZWFkT25seSB8IERvbnRFbnVtKTsKICAgICAgICAgcmV0dXJu
IHRydWU7CiAgICAgfQogCi0gICAgaWYgKHByb3BlcnR5TmFtZSA9PSAiZGlzY29ubmVjdCIpIHsK
KyAgICBpZiAocHJvcGVydHlOYW1lID09IElkZW50aWZpZXIoZXhlYywgImRpc2Nvbm5lY3QiKSkg
ewogICAgICAgICBQcm9wZXJ0eVNsb3Qgc2xvdDsKICAgICAgICAgc2xvdC5zZXRDdXN0b20odGhp
c09iamVjdCwgZGlzY29ubmVjdEdldHRlcik7CiAgICAgICAgIGRlc2NyaXB0b3Iuc2V0RGVzY3Jp
cHRvcihzbG90LmdldFZhbHVlKGV4ZWMsIHByb3BlcnR5TmFtZSksIERvbnREZWxldGUgfCBSZWFk
T25seSB8IERvbnRFbnVtKTsKQEAgLTE1MDcsMjkgKzE1MDcsMjkgQEAgdm9pZCBRdFJ1bnRpbWVN
ZXRhTWV0aG9kOjpnZXRPd25Qcm9wZXJ0eQogICAgIFF0UnVudGltZU1ldGhvZDo6Z2V0T3duUHJv
cGVydHlOYW1lcyhvYmplY3QsIGV4ZWMsIHByb3BlcnR5TmFtZXMsIG1vZGUpOwogfQogCi1KU1Zh
bHVlIFF0UnVudGltZU1ldGFNZXRob2Q6Omxlbmd0aEdldHRlcihFeGVjU3RhdGUqLCBKU1ZhbHVl
LCBjb25zdCBJZGVudGlmaWVyJikKK0pTVmFsdWUgUXRSdW50aW1lTWV0YU1ldGhvZDo6bGVuZ3Ro
R2V0dGVyKEV4ZWNTdGF0ZSosIEpTVmFsdWUsIFByb3BlcnR5TmFtZSkKIHsKICAgICAvLyBRdFNj
cmlwdCBhbHdheXMgcmV0dXJucyAwCiAgICAgcmV0dXJuIGpzTnVtYmVyKDApOwogfQogCi1KU1Zh
bHVlIFF0UnVudGltZU1ldGFNZXRob2Q6OmNvbm5lY3RHZXR0ZXIoRXhlY1N0YXRlKiBleGVjLCBK
U1ZhbHVlIHNsb3RCYXNlLCBjb25zdCBJZGVudGlmaWVyJiBpZGVudCkKK0pTVmFsdWUgUXRSdW50
aW1lTWV0YU1ldGhvZDo6Y29ubmVjdEdldHRlcihFeGVjU3RhdGUqIGV4ZWMsIEpTVmFsdWUgc2xv
dEJhc2UsIFByb3BlcnR5TmFtZSBpZGVudCkKIHsKICAgICBRdFJ1bnRpbWVNZXRhTWV0aG9kKiB0
aGlzT2JqID0gc3RhdGljX2Nhc3Q8UXRSdW50aW1lTWV0YU1ldGhvZCo+KGFzT2JqZWN0KHNsb3RC
YXNlKSk7CiAgICAgUVdfRFMoUXRSdW50aW1lTWV0YU1ldGhvZCwgdGhpc09iaik7CiAKICAgICBp
ZiAoIWQtPm1fY29ubmVjdCkKLSAgICAgICAgZC0+bV9jb25uZWN0LnNldChleGVjLT5nbG9iYWxE
YXRhKCksIHRoaXNPYmosIFF0UnVudGltZUNvbm5lY3Rpb25NZXRob2Q6OmNyZWF0ZShleGVjLCBp
ZGVudCwgdHJ1ZSwgZC0+bV9pbnN0YW5jZSwgZC0+bV9pbmRleCwgZC0+bV9zaWduYXR1cmUpKTsK
KyAgICAgICAgZC0+bV9jb25uZWN0LnNldChleGVjLT5nbG9iYWxEYXRhKCksIHRoaXNPYmosIFF0
UnVudGltZUNvbm5lY3Rpb25NZXRob2Q6OmNyZWF0ZShleGVjLCBpZGVudC5pbXBsKCksIHRydWUs
IGQtPm1faW5zdGFuY2UsIGQtPm1faW5kZXgsIGQtPm1fc2lnbmF0dXJlKSk7CiAgICAgcmV0dXJu
IGQtPm1fY29ubmVjdC5nZXQoKTsKIH0KIAotSlNWYWx1ZSBRdFJ1bnRpbWVNZXRhTWV0aG9kOjpk
aXNjb25uZWN0R2V0dGVyKEV4ZWNTdGF0ZSogZXhlYywgSlNWYWx1ZSBzbG90QmFzZSwgY29uc3Qg
SWRlbnRpZmllciYgaWRlbnQpCitKU1ZhbHVlIFF0UnVudGltZU1ldGFNZXRob2Q6OmRpc2Nvbm5l
Y3RHZXR0ZXIoRXhlY1N0YXRlKiBleGVjLCBKU1ZhbHVlIHNsb3RCYXNlLCBQcm9wZXJ0eU5hbWUg
aWRlbnQpCiB7CiAgICAgUXRSdW50aW1lTWV0YU1ldGhvZCogdGhpc09iaiA9IHN0YXRpY19jYXN0
PFF0UnVudGltZU1ldGFNZXRob2QqPihhc09iamVjdChzbG90QmFzZSkpOwogICAgIFFXX0RTKFF0
UnVudGltZU1ldGFNZXRob2QsIHRoaXNPYmopOwogCiAgICAgaWYgKCFkLT5tX2Rpc2Nvbm5lY3Qp
Ci0gICAgICAgIGQtPm1fZGlzY29ubmVjdC5zZXQoZXhlYy0+Z2xvYmFsRGF0YSgpLCB0aGlzT2Jq
LCBRdFJ1bnRpbWVDb25uZWN0aW9uTWV0aG9kOjpjcmVhdGUoZXhlYywgaWRlbnQsIGZhbHNlLCBk
LT5tX2luc3RhbmNlLCBkLT5tX2luZGV4LCBkLT5tX3NpZ25hdHVyZSkpOworICAgICAgICBkLT5t
X2Rpc2Nvbm5lY3Quc2V0KGV4ZWMtPmdsb2JhbERhdGEoKSwgdGhpc09iaiwgUXRSdW50aW1lQ29u
bmVjdGlvbk1ldGhvZDo6Y3JlYXRlKGV4ZWMsIGlkZW50LmltcGwoKSwgZmFsc2UsIGQtPm1faW5z
dGFuY2UsIGQtPm1faW5kZXgsIGQtPm1fc2lnbmF0dXJlKSk7CiAgICAgcmV0dXJuIGQtPm1fZGlz
Y29ubmVjdC5nZXQoKTsKIH0KIApAQCAtMTUzOSwxMiArMTUzOSwxMiBAQCBRTXVsdGlNYXA8UU9i
amVjdCosIFF0Q29ubmVjdGlvbk9iamVjdCo+CiAKIGNvbnN0IENsYXNzSW5mbyBRdFJ1bnRpbWVD
b25uZWN0aW9uTWV0aG9kOjpzX2luZm8gPSB7ICJRdFJ1bnRpbWVNZXRob2QiLCAmQmFzZTo6c19p
bmZvLCAwLCAwLCBDUkVBVEVfTUVUSE9EX1RBQkxFKFF0UnVudGltZUNvbm5lY3Rpb25NZXRob2Qp
IH07CiAKLVF0UnVudGltZUNvbm5lY3Rpb25NZXRob2Q6OlF0UnVudGltZUNvbm5lY3Rpb25NZXRo
b2QoRXhlY1N0YXRlKiBleGVjLCBTdHJ1Y3R1cmUqIHN0cnVjdHVyZSwgY29uc3QgSWRlbnRpZmll
ciYgaWRlbnRpZmllcikKK1F0UnVudGltZUNvbm5lY3Rpb25NZXRob2Q6OlF0UnVudGltZUNvbm5l
Y3Rpb25NZXRob2QoRXhlY1N0YXRlKiBleGVjLCBTdHJ1Y3R1cmUqIHN0cnVjdHVyZSwgY29uc3Qg
VVN0cmluZyYgaWRlbnRpZmllcikKICAgICA6IFF0UnVudGltZU1ldGhvZCAobmV3IFF0UnVudGlt
ZUNvbm5lY3Rpb25NZXRob2REYXRhKCksIGV4ZWMsIHN0cnVjdHVyZSwgaWRlbnRpZmllcikKIHsK
IH0KIAotdm9pZCBRdFJ1bnRpbWVDb25uZWN0aW9uTWV0aG9kOjpmaW5pc2hDcmVhdGlvbihFeGVj
U3RhdGUqIGV4ZWMsIGNvbnN0IElkZW50aWZpZXImIGlkZW50aWZpZXIsIGJvb2wgaXNDb25uZWN0
LCBQYXNzUmVmUHRyPFF0SW5zdGFuY2U+IGluc3RhbmNlLCBpbnQgaW5kZXgsIGNvbnN0IFFCeXRl
QXJyYXkmIHNpZ25hdHVyZSkKK3ZvaWQgUXRSdW50aW1lQ29ubmVjdGlvbk1ldGhvZDo6ZmluaXNo
Q3JlYXRpb24oRXhlY1N0YXRlKiBleGVjLCBjb25zdCBVU3RyaW5nJiBpZGVudGlmaWVyLCBib29s
IGlzQ29ubmVjdCwgUGFzc1JlZlB0cjxRdEluc3RhbmNlPiBpbnN0YW5jZSwgaW50IGluZGV4LCBj
b25zdCBRQnl0ZUFycmF5JiBzaWduYXR1cmUpCiB7CiAgICAgQmFzZTo6ZmluaXNoQ3JlYXRpb24o
ZXhlYywgaWRlbnRpZmllciwgaW5zdGFuY2UpOwogICAgIFFXX0QoUXRSdW50aW1lQ29ubmVjdGlv
bk1ldGhvZCk7CkBAIC0xNjk1LDcgKzE2OTUsNyBAQCBDYWxsVHlwZSBRdFJ1bnRpbWVDb25uZWN0
aW9uTWV0aG9kOjpnZXRDCiAgICAgcmV0dXJuIENhbGxUeXBlSG9zdDsKIH0KIAotYm9vbCBRdFJ1
bnRpbWVDb25uZWN0aW9uTWV0aG9kOjpnZXRPd25Qcm9wZXJ0eVNsb3QoSlNDZWxsKiBjZWxsLCBF
eGVjU3RhdGUqIGV4ZWMsIGNvbnN0IElkZW50aWZpZXImIHByb3BlcnR5TmFtZSwgUHJvcGVydHlT
bG90JiBzbG90KQorYm9vbCBRdFJ1bnRpbWVDb25uZWN0aW9uTWV0aG9kOjpnZXRPd25Qcm9wZXJ0
eVNsb3QoSlNDZWxsKiBjZWxsLCBFeGVjU3RhdGUqIGV4ZWMsIFByb3BlcnR5TmFtZSBwcm9wZXJ0
eU5hbWUsIFByb3BlcnR5U2xvdCYgc2xvdCkKIHsKICAgICBRdFJ1bnRpbWVDb25uZWN0aW9uTWV0
aG9kKiB0aGlzT2JqZWN0ID0ganNDYXN0PFF0UnVudGltZUNvbm5lY3Rpb25NZXRob2QqPihjZWxs
KTsKICAgICBpZiAocHJvcGVydHlOYW1lID09IGV4ZWMtPnByb3BlcnR5TmFtZXMoKS5sZW5ndGgp
IHsKQEAgLTE3MDYsNyArMTcwNiw3IEBAIGJvb2wgUXRSdW50aW1lQ29ubmVjdGlvbk1ldGhvZDo6
Z2V0T3duUHIKICAgICByZXR1cm4gUXRSdW50aW1lTWV0aG9kOjpnZXRPd25Qcm9wZXJ0eVNsb3Qo
dGhpc09iamVjdCwgZXhlYywgcHJvcGVydHlOYW1lLCBzbG90KTsKIH0KIAotYm9vbCBRdFJ1bnRp
bWVDb25uZWN0aW9uTWV0aG9kOjpnZXRPd25Qcm9wZXJ0eURlc2NyaXB0b3IoSlNPYmplY3QqIG9i
amVjdCwgRXhlY1N0YXRlKiBleGVjLCBjb25zdCBJZGVudGlmaWVyJiBwcm9wZXJ0eU5hbWUsIFBy
b3BlcnR5RGVzY3JpcHRvciYgZGVzY3JpcHRvcikKK2Jvb2wgUXRSdW50aW1lQ29ubmVjdGlvbk1l
dGhvZDo6Z2V0T3duUHJvcGVydHlEZXNjcmlwdG9yKEpTT2JqZWN0KiBvYmplY3QsIEV4ZWNTdGF0
ZSogZXhlYywgUHJvcGVydHlOYW1lIHByb3BlcnR5TmFtZSwgUHJvcGVydHlEZXNjcmlwdG9yJiBk
ZXNjcmlwdG9yKQogewogICAgIFF0UnVudGltZUNvbm5lY3Rpb25NZXRob2QqIHRoaXNPYmplY3Qg
PSBqc0Nhc3Q8UXRSdW50aW1lQ29ubmVjdGlvbk1ldGhvZCo+KG9iamVjdCk7CiAgICAgaWYgKHBy
b3BlcnR5TmFtZSA9PSBleGVjLT5wcm9wZXJ0eU5hbWVzKCkubGVuZ3RoKSB7CkBAIC0xNzI3LDcg
KzE3MjcsNyBAQCB2b2lkIFF0UnVudGltZUNvbm5lY3Rpb25NZXRob2Q6OmdldE93blByCiAgICAg
UXRSdW50aW1lTWV0aG9kOjpnZXRPd25Qcm9wZXJ0eU5hbWVzKG9iamVjdCwgZXhlYywgcHJvcGVy
dHlOYW1lcywgbW9kZSk7CiB9CiAKLUpTVmFsdWUgUXRSdW50aW1lQ29ubmVjdGlvbk1ldGhvZDo6
bGVuZ3RoR2V0dGVyKEV4ZWNTdGF0ZSosIEpTVmFsdWUsIGNvbnN0IElkZW50aWZpZXImKQorSlNW
YWx1ZSBRdFJ1bnRpbWVDb25uZWN0aW9uTWV0aG9kOjpsZW5ndGhHZXR0ZXIoRXhlY1N0YXRlKiwg
SlNWYWx1ZSwgUHJvcGVydHlOYW1lKQogewogICAgIC8vIHdlIGhhdmUgb25lIGZvcm1hbCBhcmd1
bWVudCwgYW5kIG9uZSBvcHRpb25hbAogICAgIHJldHVybiBqc051bWJlcigxKTsKSW5kZXg6IFNv
dXJjZS9XZWJDb3JlL2JyaWRnZS9xdC9xdF9ydW50aW1lLmgKPT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNl
L1dlYkNvcmUvYnJpZGdlL3F0L3F0X3J1bnRpbWUuaAkocmV2aXNpb24gMTE2NjY3KQorKysgU291
cmNlL1dlYkNvcmUvYnJpZGdlL3F0L3F0X3J1bnRpbWUuaAkod29ya2luZyBjb3B5KQpAQCAtMTQ5
LDcgKzE0OSw3IEBAIHB1YmxpYzoKICAgICB9CiAKIHByb3RlY3RlZDoKLSAgICB2b2lkIGZpbmlz
aENyZWF0aW9uKEV4ZWNTdGF0ZSosIGNvbnN0IElkZW50aWZpZXImLCBQYXNzUmVmUHRyPFF0SW5z
dGFuY2U+KTsKKyAgICB2b2lkIGZpbmlzaENyZWF0aW9uKEV4ZWNTdGF0ZSosIGNvbnN0IFVTdHJp
bmcmLCBQYXNzUmVmUHRyPFF0SW5zdGFuY2U+KTsKICAgICBzdGF0aWMgY29uc3QgdW5zaWduZWQg
U3RydWN0dXJlRmxhZ3MgPSBPdmVycmlkZXNHZXRPd25Qcm9wZXJ0eVNsb3QgfCBPdmVycmlkZXNH
ZXRQcm9wZXJ0eU5hbWVzIHwgSW50ZXJuYWxGdW5jdGlvbjo6U3RydWN0dXJlRmxhZ3MgfCBPdmVy
cmlkZXNWaXNpdENoaWxkcmVuOwogCiAgICAgUXRSdW50aW1lTWV0aG9kRGF0YSAqZF9mdW5jKCkg
Y29uc3Qge3JldHVybiBkX3B0cjt9CkBAIC0xNjEsNyArMTYxLDcgQEAgY2xhc3MgUXRSdW50aW1l
TWV0YU1ldGhvZCA6IHB1YmxpYyBRdFJ1bgogcHVibGljOgogICAgIHR5cGVkZWYgUXRSdW50aW1l
TWV0aG9kIEJhc2U7CiAKLSAgICBzdGF0aWMgUXRSdW50aW1lTWV0YU1ldGhvZCogY3JlYXRlKEV4
ZWNTdGF0ZSogZXhlYywgY29uc3QgSWRlbnRpZmllciYgbmFtZSwgUGFzc1JlZlB0cjxRdEluc3Rh
bmNlPiBpbnN0YW5jZSwgaW50IGluZGV4LCBjb25zdCBRQnl0ZUFycmF5JiBzaWduYXR1cmUsIGJv
b2wgYWxsb3dQcml2YXRlKQorICAgIHN0YXRpYyBRdFJ1bnRpbWVNZXRhTWV0aG9kKiBjcmVhdGUo
RXhlY1N0YXRlKiBleGVjLCBjb25zdCBVU3RyaW5nJiBuYW1lLCBQYXNzUmVmUHRyPFF0SW5zdGFu
Y2U+IGluc3RhbmNlLCBpbnQgaW5kZXgsIGNvbnN0IFFCeXRlQXJyYXkmIHNpZ25hdHVyZSwgYm9v
bCBhbGxvd1ByaXZhdGUpCiAgICAgewogICAgICAgICBTdHJ1Y3R1cmUqIGRvbVN0cnVjdHVyZSA9
IFdlYkNvcmU6OmRlcHJlY2F0ZWRHZXRET01TdHJ1Y3R1cmU8UXRSdW50aW1lTWV0YU1ldGhvZD4o
ZXhlYyk7CiAgICAgICAgIFF0UnVudGltZU1ldGFNZXRob2QqIG1ldGhvZCA9IG5ldyAoYWxsb2Nh
dGVDZWxsPFF0UnVudGltZU1ldGFNZXRob2Q+KCpleGVjLT5oZWFwKCkpKSBRdFJ1bnRpbWVNZXRh
TWV0aG9kKGV4ZWMsIGRvbVN0cnVjdHVyZSwgbmFtZSk7CkBAIC0xNjksOCArMTY5LDggQEAgcHVi
bGljOgogICAgICAgICByZXR1cm4gbWV0aG9kOwogICAgIH0KIAotICAgIHN0YXRpYyBib29sIGdl
dE93blByb3BlcnR5U2xvdChKU0NlbGwqLCBFeGVjU3RhdGUgKiwgY29uc3QgSWRlbnRpZmllciYs
IFByb3BlcnR5U2xvdCYpOwotICAgIHN0YXRpYyBib29sIGdldE93blByb3BlcnR5RGVzY3JpcHRv
cihKU09iamVjdCosIEV4ZWNTdGF0ZSosIGNvbnN0IElkZW50aWZpZXImLCBQcm9wZXJ0eURlc2Ny
aXB0b3ImKTsKKyAgICBzdGF0aWMgYm9vbCBnZXRPd25Qcm9wZXJ0eVNsb3QoSlNDZWxsKiwgRXhl
Y1N0YXRlICosIFByb3BlcnR5TmFtZSwgUHJvcGVydHlTbG90Jik7CisgICAgc3RhdGljIGJvb2wg
Z2V0T3duUHJvcGVydHlEZXNjcmlwdG9yKEpTT2JqZWN0KiwgRXhlY1N0YXRlKiwgUHJvcGVydHlO
YW1lLCBQcm9wZXJ0eURlc2NyaXB0b3ImKTsKICAgICBzdGF0aWMgdm9pZCBnZXRPd25Qcm9wZXJ0
eU5hbWVzKEpTT2JqZWN0KiwgRXhlY1N0YXRlKiwgUHJvcGVydHlOYW1lQXJyYXkmLCBFbnVtZXJh
dGlvbk1vZGUpOwogCiAgICAgc3RhdGljIHZvaWQgdmlzaXRDaGlsZHJlbihKU0NlbGwqLCBTbG90
VmlzaXRvciYpOwpAQCAtMTg2LDE0ICsxODYsMTQgQEAgcHJvdGVjdGVkOgogICAgIFF0UnVudGlt
ZU1ldGFNZXRob2REYXRhKiBkX2Z1bmMoKSBjb25zdCB7cmV0dXJuIHJlaW50ZXJwcmV0X2Nhc3Q8
UXRSdW50aW1lTWV0YU1ldGhvZERhdGEqPihkX3B0cik7fQogCiBwcml2YXRlOgotICAgIFF0UnVu
dGltZU1ldGFNZXRob2QoRXhlY1N0YXRlKiwgU3RydWN0dXJlKiwgY29uc3QgSWRlbnRpZmllciYp
OwotICAgIHZvaWQgZmluaXNoQ3JlYXRpb24oRXhlY1N0YXRlKiwgY29uc3QgSWRlbnRpZmllciYs
IFBhc3NSZWZQdHI8UXRJbnN0YW5jZT4sIGludCBpbmRleCwgY29uc3QgUUJ5dGVBcnJheSYgc2ln
bmF0dXJlLCBib29sIGFsbG93UHJpdmF0ZSk7CisgICAgUXRSdW50aW1lTWV0YU1ldGhvZChFeGVj
U3RhdGUqLCBTdHJ1Y3R1cmUqLCBjb25zdCBVU3RyaW5nJik7CisgICAgdm9pZCBmaW5pc2hDcmVh
dGlvbihFeGVjU3RhdGUqLCBjb25zdCBVU3RyaW5nJiwgUGFzc1JlZlB0cjxRdEluc3RhbmNlPiwg
aW50IGluZGV4LCBjb25zdCBRQnl0ZUFycmF5JiBzaWduYXR1cmUsIGJvb2wgYWxsb3dQcml2YXRl
KTsKIAogICAgIHN0YXRpYyBDYWxsVHlwZSBnZXRDYWxsRGF0YShKU0NlbGwqLCBDYWxsRGF0YSYp
OwogICAgIHN0YXRpYyBFbmNvZGVkSlNWYWx1ZSBKU0NfSE9TVF9DQUxMIGNhbGwoRXhlY1N0YXRl
KiBleGVjKTsKLSAgICBzdGF0aWMgSlNWYWx1ZSBsZW5ndGhHZXR0ZXIoRXhlY1N0YXRlKiwgSlNW
YWx1ZSwgY29uc3QgSWRlbnRpZmllciYpOwotICAgIHN0YXRpYyBKU1ZhbHVlIGNvbm5lY3RHZXR0
ZXIoRXhlY1N0YXRlKiwgSlNWYWx1ZSwgY29uc3QgSWRlbnRpZmllciYpOwotICAgIHN0YXRpYyBK
U1ZhbHVlIGRpc2Nvbm5lY3RHZXR0ZXIoRXhlY1N0YXRlKiwgSlNWYWx1ZSwgY29uc3QgSWRlbnRp
ZmllciYpOworICAgIHN0YXRpYyBKU1ZhbHVlIGxlbmd0aEdldHRlcihFeGVjU3RhdGUqLCBKU1Zh
bHVlLCBQcm9wZXJ0eU5hbWUpOworICAgIHN0YXRpYyBKU1ZhbHVlIGNvbm5lY3RHZXR0ZXIoRXhl
Y1N0YXRlKiwgSlNWYWx1ZSwgUHJvcGVydHlOYW1lKTsKKyAgICBzdGF0aWMgSlNWYWx1ZSBkaXNj
b25uZWN0R2V0dGVyKEV4ZWNTdGF0ZSosIEpTVmFsdWUsIFByb3BlcnR5TmFtZSk7CiB9OwogCiBj
bGFzcyBRdENvbm5lY3Rpb25PYmplY3Q7CkBAIC0yMDEsNyArMjAxLDcgQEAgY2xhc3MgUXRSdW50
aW1lQ29ubmVjdGlvbk1ldGhvZCA6IHB1YmxpYwogcHVibGljOgogICAgIHR5cGVkZWYgUXRSdW50
aW1lTWV0aG9kIEJhc2U7CiAKLSAgICBzdGF0aWMgUXRSdW50aW1lQ29ubmVjdGlvbk1ldGhvZCog
Y3JlYXRlKEV4ZWNTdGF0ZSogZXhlYywgY29uc3QgSWRlbnRpZmllciYgbmFtZSwgYm9vbCBpc0Nv
bm5lY3QsIFBhc3NSZWZQdHI8UXRJbnN0YW5jZT4gaW5zdGFuY2UsIGludCBpbmRleCwgY29uc3Qg
UUJ5dGVBcnJheSYgc2lnbmF0dXJlKQorICAgIHN0YXRpYyBRdFJ1bnRpbWVDb25uZWN0aW9uTWV0
aG9kKiBjcmVhdGUoRXhlY1N0YXRlKiBleGVjLCBjb25zdCBVU3RyaW5nJiBuYW1lLCBib29sIGlz
Q29ubmVjdCwgUGFzc1JlZlB0cjxRdEluc3RhbmNlPiBpbnN0YW5jZSwgaW50IGluZGV4LCBjb25z
dCBRQnl0ZUFycmF5JiBzaWduYXR1cmUpCiAgICAgewogICAgICAgICBTdHJ1Y3R1cmUqIGRvbVN0
cnVjdHVyZSA9IFdlYkNvcmU6OmRlcHJlY2F0ZWRHZXRET01TdHJ1Y3R1cmU8UXRSdW50aW1lQ29u
bmVjdGlvbk1ldGhvZD4oZXhlYyk7CiAgICAgICAgIFF0UnVudGltZUNvbm5lY3Rpb25NZXRob2Qq
IG1ldGhvZCA9IG5ldyAoYWxsb2NhdGVDZWxsPFF0UnVudGltZUNvbm5lY3Rpb25NZXRob2Q+KCpl
eGVjLT5oZWFwKCkpKSBRdFJ1bnRpbWVDb25uZWN0aW9uTWV0aG9kKGV4ZWMsIGRvbVN0cnVjdHVy
ZSwgbmFtZSk7CkBAIC0yMDksOCArMjA5LDggQEAgcHVibGljOgogICAgICAgICByZXR1cm4gbWV0
aG9kOwogICAgIH0KIAotICAgIHN0YXRpYyBib29sIGdldE93blByb3BlcnR5U2xvdChKU0NlbGwq
LCBFeGVjU3RhdGUgKiwgY29uc3QgSWRlbnRpZmllciYsIFByb3BlcnR5U2xvdCYpOwotICAgIHN0
YXRpYyBib29sIGdldE93blByb3BlcnR5RGVzY3JpcHRvcihKU09iamVjdCosIEV4ZWNTdGF0ZSos
IGNvbnN0IElkZW50aWZpZXImLCBQcm9wZXJ0eURlc2NyaXB0b3ImKTsKKyAgICBzdGF0aWMgYm9v
bCBnZXRPd25Qcm9wZXJ0eVNsb3QoSlNDZWxsKiwgRXhlY1N0YXRlICosIFByb3BlcnR5TmFtZSwg
UHJvcGVydHlTbG90Jik7CisgICAgc3RhdGljIGJvb2wgZ2V0T3duUHJvcGVydHlEZXNjcmlwdG9y
KEpTT2JqZWN0KiwgRXhlY1N0YXRlKiwgUHJvcGVydHlOYW1lLCBQcm9wZXJ0eURlc2NyaXB0b3Im
KTsKICAgICBzdGF0aWMgdm9pZCBnZXRPd25Qcm9wZXJ0eU5hbWVzKEpTT2JqZWN0KiwgRXhlY1N0
YXRlKiwgUHJvcGVydHlOYW1lQXJyYXkmLCBFbnVtZXJhdGlvbk1vZGUpOwogIAogICAgIHN0YXRp
YyBjb25zdCBDbGFzc0luZm8gc19pbmZvOwpAQCAtMjI0LDEyICsyMjQsMTIgQEAgcHJvdGVjdGVk
OgogICAgIFF0UnVudGltZUNvbm5lY3Rpb25NZXRob2REYXRhKiBkX2Z1bmMoKSBjb25zdCB7cmV0
dXJuIHJlaW50ZXJwcmV0X2Nhc3Q8UXRSdW50aW1lQ29ubmVjdGlvbk1ldGhvZERhdGEqPihkX3B0
cik7fQogCiBwcml2YXRlOgotICAgIFF0UnVudGltZUNvbm5lY3Rpb25NZXRob2QoRXhlY1N0YXRl
KiwgU3RydWN0dXJlKiwgY29uc3QgSWRlbnRpZmllciYpOwotICAgIHZvaWQgZmluaXNoQ3JlYXRp
b24oRXhlY1N0YXRlKiwgY29uc3QgSWRlbnRpZmllciYsIGJvb2wgaXNDb25uZWN0LCBQYXNzUmVm
UHRyPFF0SW5zdGFuY2U+LCBpbnQgaW5kZXgsIGNvbnN0IFFCeXRlQXJyYXkmIHNpZ25hdHVyZSk7
CisgICAgUXRSdW50aW1lQ29ubmVjdGlvbk1ldGhvZChFeGVjU3RhdGUqLCBTdHJ1Y3R1cmUqLCBj
b25zdCBVU3RyaW5nJik7CisgICAgdm9pZCBmaW5pc2hDcmVhdGlvbihFeGVjU3RhdGUqLCBjb25z
dCBVU3RyaW5nJiwgYm9vbCBpc0Nvbm5lY3QsIFBhc3NSZWZQdHI8UXRJbnN0YW5jZT4sIGludCBp
bmRleCwgY29uc3QgUUJ5dGVBcnJheSYgc2lnbmF0dXJlKTsKIAogICAgIHN0YXRpYyBDYWxsVHlw
ZSBnZXRDYWxsRGF0YShKU0NlbGwqLCBDYWxsRGF0YSYpOwogICAgIHN0YXRpYyBFbmNvZGVkSlNW
YWx1ZSBKU0NfSE9TVF9DQUxMIGNhbGwoRXhlY1N0YXRlKiBleGVjKTsKLSAgICBzdGF0aWMgSlNW
YWx1ZSBsZW5ndGhHZXR0ZXIoRXhlY1N0YXRlKiwgSlNWYWx1ZSwgY29uc3QgSWRlbnRpZmllciYp
OworICAgIHN0YXRpYyBKU1ZhbHVlIGxlbmd0aEdldHRlcihFeGVjU3RhdGUqLCBKU1ZhbHVlLCBQ
cm9wZXJ0eU5hbWUpOwogICAgIHN0YXRpYyBRTXVsdGlNYXA8UU9iamVjdCAqLCBRdENvbm5lY3Rp
b25PYmplY3QgKj4gY29ubmVjdGlvbnM7CiAgICAgZnJpZW5kIGNsYXNzIFF0Q29ubmVjdGlvbk9i
amVjdDsKIH07CkluZGV4OiBTb3VyY2UvV2ViQ29yZS9icmlkZ2UvcXQvcXRfcnVudGltZV9xdDQu
Y3BwCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9XZWJDb3JlL2JyaWRnZS9xdC9xdF9ydW50aW1lX3F0
NC5jcHAJKHJldmlzaW9uIDExNjY2NykKKysrIFNvdXJjZS9XZWJDb3JlL2JyaWRnZS9xdC9xdF9y
dW50aW1lX3F0NC5jcHAJKHdvcmtpbmcgY29weSkKQEAgLTk2OCwxMyArOTY4LDEzIEBAIEpTVmFs
dWUgY29udmVydFFWYXJpYW50VG9WYWx1ZShFeGVjU3RhdGUKIAogY29uc3QgQ2xhc3NJbmZvIFF0
UnVudGltZU1ldGhvZDo6c19pbmZvID0geyAiUXRSdW50aW1lTWV0aG9kIiwgJkludGVybmFsRnVu
Y3Rpb246OnNfaW5mbywgMCwgMCwgQ1JFQVRFX01FVEhPRF9UQUJMRShRdFJ1bnRpbWVNZXRob2Qp
IH07CiAKLVF0UnVudGltZU1ldGhvZDo6UXRSdW50aW1lTWV0aG9kKFF0UnVudGltZU1ldGhvZERh
dGEqIGRkLCBFeGVjU3RhdGUqIGV4ZWMsIFN0cnVjdHVyZSogc3RydWN0dXJlLCBjb25zdCBJZGVu
dGlmaWVyJiBpZGVudGlmaWVyKQorUXRSdW50aW1lTWV0aG9kOjpRdFJ1bnRpbWVNZXRob2QoUXRS
dW50aW1lTWV0aG9kRGF0YSogZGQsIEV4ZWNTdGF0ZSogZXhlYywgU3RydWN0dXJlKiBzdHJ1Y3R1
cmUsIGNvbnN0IFVTdHJpbmcmIGlkZW50aWZpZXIpCiAgICAgOiBJbnRlcm5hbEZ1bmN0aW9uKGV4
ZWMtPmxleGljYWxHbG9iYWxPYmplY3QoKSwgc3RydWN0dXJlKQogICAgICwgZF9wdHIoZGQpCiB7
CiB9CiAKLXZvaWQgUXRSdW50aW1lTWV0aG9kOjpmaW5pc2hDcmVhdGlvbihFeGVjU3RhdGUqIGV4
ZWMsIGNvbnN0IElkZW50aWZpZXImIGlkZW50aWZpZXIsIFBhc3NSZWZQdHI8UXRJbnN0YW5jZT4g
aW5zdGFuY2UpCit2b2lkIFF0UnVudGltZU1ldGhvZDo6ZmluaXNoQ3JlYXRpb24oRXhlY1N0YXRl
KiBleGVjLCBjb25zdCBVU3RyaW5nJiBpZGVudGlmaWVyLCBQYXNzUmVmUHRyPFF0SW5zdGFuY2U+
IGluc3RhbmNlKQogewogICAgIEJhc2U6OmZpbmlzaENyZWF0aW9uKGV4ZWMtPmdsb2JhbERhdGEo
KSwgaWRlbnRpZmllcik7CiAgICAgUVdfRChRdFJ1bnRpbWVNZXRob2QpOwpAQCAtMTM5NCwxMiAr
MTM5NCwxMiBAQCBzdGF0aWMgaW50IGZpbmRTaWduYWxJbmRleChjb25zdCBRTWV0YU9iCiAKIGNv
bnN0IENsYXNzSW5mbyBRdFJ1bnRpbWVNZXRhTWV0aG9kOjpzX2luZm8gPSB7ICJRdFJ1bnRpbWVN
ZXRob2QiLCAmQmFzZTo6c19pbmZvLCAwLCAwLCBDUkVBVEVfTUVUSE9EX1RBQkxFKFF0UnVudGlt
ZU1ldGFNZXRob2QpIH07CiAKLVF0UnVudGltZU1ldGFNZXRob2Q6OlF0UnVudGltZU1ldGFNZXRo
b2QoRXhlY1N0YXRlKiBleGVjLCBTdHJ1Y3R1cmUqIHN0cnVjdHVyZSwgY29uc3QgSWRlbnRpZmll
ciYgaWRlbnRpZmllcikKK1F0UnVudGltZU1ldGFNZXRob2Q6OlF0UnVudGltZU1ldGFNZXRob2Qo
RXhlY1N0YXRlKiBleGVjLCBTdHJ1Y3R1cmUqIHN0cnVjdHVyZSwgY29uc3QgVVN0cmluZyYgaWRl
bnRpZmllcikKICAgICA6IFF0UnVudGltZU1ldGhvZCAobmV3IFF0UnVudGltZU1ldGFNZXRob2RE
YXRhKCksIGV4ZWMsIHN0cnVjdHVyZSwgaWRlbnRpZmllcikKIHsKIH0KIAotdm9pZCBRdFJ1bnRp
bWVNZXRhTWV0aG9kOjpmaW5pc2hDcmVhdGlvbihFeGVjU3RhdGUqIGV4ZWMsIGNvbnN0IElkZW50
aWZpZXImIGlkZW50aWZpZXIsIFBhc3NSZWZQdHI8UXRJbnN0YW5jZT4gaW5zdGFuY2UsIGludCBp
bmRleCwgY29uc3QgUUJ5dGVBcnJheSYgc2lnbmF0dXJlLCBib29sIGFsbG93UHJpdmF0ZSkKK3Zv
aWQgUXRSdW50aW1lTWV0YU1ldGhvZDo6ZmluaXNoQ3JlYXRpb24oRXhlY1N0YXRlKiBleGVjLCBj
b25zdCBVU3RyaW5nJiBpZGVudGlmaWVyLCBQYXNzUmVmUHRyPFF0SW5zdGFuY2U+IGluc3RhbmNl
LCBpbnQgaW5kZXgsIGNvbnN0IFFCeXRlQXJyYXkmIHNpZ25hdHVyZSwgYm9vbCBhbGxvd1ByaXZh
dGUpCiB7CiAgICAgQmFzZTo6ZmluaXNoQ3JlYXRpb24oZXhlYywgaWRlbnRpZmllciwgaW5zdGFu
Y2UpOwogICAgIFFXX0QoUXRSdW50aW1lTWV0YU1ldGhvZCk7CkBAIC0xNDYxLDE2ICsxNDYxLDE4
IEBAIENhbGxUeXBlIFF0UnVudGltZU1ldGFNZXRob2Q6OmdldENhbGxEYXQKICAgICByZXR1cm4g
Q2FsbFR5cGVIb3N0OwogfQogCi1ib29sIFF0UnVudGltZU1ldGFNZXRob2Q6OmdldE93blByb3Bl
cnR5U2xvdChKU0NlbGwqIGNlbGwsIEV4ZWNTdGF0ZSogZXhlYywgY29uc3QgSWRlbnRpZmllciYg
cHJvcGVydHlOYW1lLCBQcm9wZXJ0eVNsb3QmIHNsb3QpCitib29sIFF0UnVudGltZU1ldGFNZXRo
b2Q6OmdldE93blByb3BlcnR5U2xvdChKU0NlbGwqIGNlbGwsIEV4ZWNTdGF0ZSogZXhlYywgUHJv
cGVydHlOYW1lIHByb3BlcnR5TmFtZSwgUHJvcGVydHlTbG90JiBzbG90KQogewogICAgIFF0UnVu
dGltZU1ldGFNZXRob2QqIHRoaXNPYmplY3QgPSBqc0Nhc3Q8UXRSdW50aW1lTWV0YU1ldGhvZCo+
KGNlbGwpOwotICAgIGlmIChwcm9wZXJ0eU5hbWUgPT0gImNvbm5lY3QiKSB7CisgICAgaWYgKHBy
b3BlcnR5TmFtZSA9PSBJZGVudGlmaWVyKGV4ZWMsICJjb25uZWN0IikpIHsKICAgICAgICAgc2xv
dC5zZXRDdXN0b20odGhpc09iamVjdCwgdGhpc09iamVjdC0+Y29ubmVjdEdldHRlcik7CiAgICAg
ICAgIHJldHVybiB0cnVlOwotICAgIH0gZWxzZSBpZiAocHJvcGVydHlOYW1lID09ICJkaXNjb25u
ZWN0IikgeworICAgIH0KKyAgICBpZiAocHJvcGVydHlOYW1lID09IElkZW50aWZpZXIoZXhlYywg
ImRpc2Nvbm5lY3QiKSkgewogICAgICAgICBzbG90LnNldEN1c3RvbSh0aGlzT2JqZWN0LCB0aGlz
T2JqZWN0LT5kaXNjb25uZWN0R2V0dGVyKTsKICAgICAgICAgcmV0dXJuIHRydWU7Ci0gICAgfSBl
bHNlIGlmIChwcm9wZXJ0eU5hbWUgPT0gZXhlYy0+cHJvcGVydHlOYW1lcygpLmxlbmd0aCkgewor
ICAgIH0KKyAgICBpZiAocHJvcGVydHlOYW1lID09IGV4ZWMtPnByb3BlcnR5TmFtZXMoKS5sZW5n
dGgpIHsKICAgICAgICAgc2xvdC5zZXRDdXN0b20odGhpc09iamVjdCwgdGhpc09iamVjdC0+bGVu
Z3RoR2V0dGVyKTsKICAgICAgICAgcmV0dXJuIHRydWU7CiAgICAgfQpAQCAtMTQ3OCwxNyArMTQ4
MCwxNyBAQCBib29sIFF0UnVudGltZU1ldGFNZXRob2Q6OmdldE93blByb3BlcnR5CiAgICAgcmV0
dXJuIFF0UnVudGltZU1ldGhvZDo6Z2V0T3duUHJvcGVydHlTbG90KHRoaXNPYmplY3QsIGV4ZWMs
IHByb3BlcnR5TmFtZSwgc2xvdCk7CiB9CiAKLWJvb2wgUXRSdW50aW1lTWV0YU1ldGhvZDo6Z2V0
T3duUHJvcGVydHlEZXNjcmlwdG9yKEpTT2JqZWN0KiBvYmplY3QsIEV4ZWNTdGF0ZSogZXhlYywg
Y29uc3QgSWRlbnRpZmllciYgcHJvcGVydHlOYW1lLCBQcm9wZXJ0eURlc2NyaXB0b3ImIGRlc2Ny
aXB0b3IpCitib29sIFF0UnVudGltZU1ldGFNZXRob2Q6OmdldE93blByb3BlcnR5RGVzY3JpcHRv
cihKU09iamVjdCogb2JqZWN0LCBFeGVjU3RhdGUqIGV4ZWMsIFByb3BlcnR5TmFtZSBwcm9wZXJ0
eU5hbWUsIFByb3BlcnR5RGVzY3JpcHRvciYgZGVzY3JpcHRvcikKIHsKICAgICBRdFJ1bnRpbWVN
ZXRhTWV0aG9kKiB0aGlzT2JqZWN0ID0ganNDYXN0PFF0UnVudGltZU1ldGFNZXRob2QqPihvYmpl
Y3QpOwotICAgIGlmIChwcm9wZXJ0eU5hbWUgPT0gImNvbm5lY3QiKSB7CisgICAgaWYgKHByb3Bl
cnR5TmFtZSA9PSBJZGVudGlmaWVyKGV4ZWMsICJjb25uZWN0IikpIHsKICAgICAgICAgUHJvcGVy
dHlTbG90IHNsb3Q7CiAgICAgICAgIHNsb3Quc2V0Q3VzdG9tKHRoaXNPYmplY3QsIGNvbm5lY3RH
ZXR0ZXIpOwogICAgICAgICBkZXNjcmlwdG9yLnNldERlc2NyaXB0b3Ioc2xvdC5nZXRWYWx1ZShl
eGVjLCBwcm9wZXJ0eU5hbWUpLCBEb250RGVsZXRlIHwgUmVhZE9ubHkgfCBEb250RW51bSk7CiAg
ICAgICAgIHJldHVybiB0cnVlOwogICAgIH0KIAotICAgIGlmIChwcm9wZXJ0eU5hbWUgPT0gImRp
c2Nvbm5lY3QiKSB7CisgICAgaWYgKHByb3BlcnR5TmFtZSA9PSBJZGVudGlmaWVyKGV4ZWMsICJk
aXNjb25uZWN0IikpIHsKICAgICAgICAgUHJvcGVydHlTbG90IHNsb3Q7CiAgICAgICAgIHNsb3Qu
c2V0Q3VzdG9tKHRoaXNPYmplY3QsIGRpc2Nvbm5lY3RHZXR0ZXIpOwogICAgICAgICBkZXNjcmlw
dG9yLnNldERlc2NyaXB0b3Ioc2xvdC5nZXRWYWx1ZShleGVjLCBwcm9wZXJ0eU5hbWUpLCBEb250
RGVsZXRlIHwgUmVhZE9ubHkgfCBEb250RW51bSk7CkBAIC0xNTE2LDEzICsxNTE4LDEzIEBAIHZv
aWQgUXRSdW50aW1lTWV0YU1ldGhvZDo6Z2V0T3duUHJvcGVydHkKICAgICBRdFJ1bnRpbWVNZXRo
b2Q6OmdldE93blByb3BlcnR5TmFtZXMob2JqZWN0LCBleGVjLCBwcm9wZXJ0eU5hbWVzLCBtb2Rl
KTsKIH0KIAotSlNWYWx1ZSBRdFJ1bnRpbWVNZXRhTWV0aG9kOjpsZW5ndGhHZXR0ZXIoRXhlY1N0
YXRlKiwgSlNWYWx1ZSwgY29uc3QgSWRlbnRpZmllciYpCitKU1ZhbHVlIFF0UnVudGltZU1ldGFN
ZXRob2Q6Omxlbmd0aEdldHRlcihFeGVjU3RhdGUqLCBKU1ZhbHVlLCBQcm9wZXJ0eU5hbWUpCiB7
CiAgICAgLy8gUXRTY3JpcHQgYWx3YXlzIHJldHVybnMgMAogICAgIHJldHVybiBqc051bWJlcigw
KTsKIH0KIAotSlNWYWx1ZSBRdFJ1bnRpbWVNZXRhTWV0aG9kOjpjb25uZWN0R2V0dGVyKEV4ZWNT
dGF0ZSogZXhlYywgSlNWYWx1ZSBzbG90QmFzZSwgY29uc3QgSWRlbnRpZmllciYgaWRlbnQpCitK
U1ZhbHVlIFF0UnVudGltZU1ldGFNZXRob2Q6OmNvbm5lY3RHZXR0ZXIoRXhlY1N0YXRlKiBleGVj
LCBKU1ZhbHVlIHNsb3RCYXNlLCBQcm9wZXJ0eU5hbWUgaWRlbnQpCiB7CiAgICAgUXRSdW50aW1l
TWV0YU1ldGhvZCogdGhpc09iaiA9IHN0YXRpY19jYXN0PFF0UnVudGltZU1ldGFNZXRob2QqPihh
c09iamVjdChzbG90QmFzZSkpOwogICAgIFFXX0RTKFF0UnVudGltZU1ldGFNZXRob2QsIHRoaXNP
YmopOwpAQCAtMTUzMiw3ICsxNTM0LDcgQEAgSlNWYWx1ZSBRdFJ1bnRpbWVNZXRhTWV0aG9kOjpj
b25uZWN0R2V0dAogICAgIHJldHVybiBkLT5tX2Nvbm5lY3QuZ2V0KCk7CiB9CiAKLUpTVmFsdWUg
UXRSdW50aW1lTWV0YU1ldGhvZDo6ZGlzY29ubmVjdEdldHRlcihFeGVjU3RhdGUqIGV4ZWMsIEpT
VmFsdWUgc2xvdEJhc2UsIGNvbnN0IElkZW50aWZpZXImIGlkZW50KQorSlNWYWx1ZSBRdFJ1bnRp
bWVNZXRhTWV0aG9kOjpkaXNjb25uZWN0R2V0dGVyKEV4ZWNTdGF0ZSogZXhlYywgSlNWYWx1ZSBz
bG90QmFzZSwgUHJvcGVydHlOYW1lIGlkZW50KQogewogICAgIFF0UnVudGltZU1ldGFNZXRob2Qq
IHRoaXNPYmogPSBzdGF0aWNfY2FzdDxRdFJ1bnRpbWVNZXRhTWV0aG9kKj4oYXNPYmplY3Qoc2xv
dEJhc2UpKTsKICAgICBRV19EUyhRdFJ1bnRpbWVNZXRhTWV0aG9kLCB0aGlzT2JqKTsKQEAgLTE1
NDgsMTIgKzE1NTAsMTIgQEAgUU11bHRpTWFwPFFPYmplY3QqLCBRdENvbm5lY3Rpb25PYmplY3Qq
PgogCiBjb25zdCBDbGFzc0luZm8gUXRSdW50aW1lQ29ubmVjdGlvbk1ldGhvZDo6c19pbmZvID0g
eyAiUXRSdW50aW1lTWV0aG9kIiwgJkJhc2U6OnNfaW5mbywgMCwgMCwgQ1JFQVRFX01FVEhPRF9U
QUJMRShRdFJ1bnRpbWVDb25uZWN0aW9uTWV0aG9kKSB9OwogCi1RdFJ1bnRpbWVDb25uZWN0aW9u
TWV0aG9kOjpRdFJ1bnRpbWVDb25uZWN0aW9uTWV0aG9kKEV4ZWNTdGF0ZSogZXhlYywgU3RydWN0
dXJlKiBzdHJ1Y3R1cmUsIGNvbnN0IElkZW50aWZpZXImIGlkZW50aWZpZXIpCitRdFJ1bnRpbWVD
b25uZWN0aW9uTWV0aG9kOjpRdFJ1bnRpbWVDb25uZWN0aW9uTWV0aG9kKEV4ZWNTdGF0ZSogZXhl
YywgU3RydWN0dXJlKiBzdHJ1Y3R1cmUsIGNvbnN0IFVTdHJpbmcmIGlkZW50aWZpZXIpCiAgICAg
OiBRdFJ1bnRpbWVNZXRob2QgKG5ldyBRdFJ1bnRpbWVDb25uZWN0aW9uTWV0aG9kRGF0YSgpLCBl
eGVjLCBzdHJ1Y3R1cmUsIGlkZW50aWZpZXIpCiB7CiB9CiAKLXZvaWQgUXRSdW50aW1lQ29ubmVj
dGlvbk1ldGhvZDo6ZmluaXNoQ3JlYXRpb24oRXhlY1N0YXRlKiBleGVjLCBjb25zdCBJZGVudGlm
aWVyJiBpZGVudGlmaWVyLCBib29sIGlzQ29ubmVjdCwgUGFzc1JlZlB0cjxRdEluc3RhbmNlPiBp
bnN0YW5jZSwgaW50IGluZGV4LCBjb25zdCBRQnl0ZUFycmF5JiBzaWduYXR1cmUpCit2b2lkIFF0
UnVudGltZUNvbm5lY3Rpb25NZXRob2Q6OmZpbmlzaENyZWF0aW9uKEV4ZWNTdGF0ZSogZXhlYywg
Y29uc3QgVVN0cmluZyYgaWRlbnRpZmllciwgYm9vbCBpc0Nvbm5lY3QsIFBhc3NSZWZQdHI8UXRJ
bnN0YW5jZT4gaW5zdGFuY2UsIGludCBpbmRleCwgY29uc3QgUUJ5dGVBcnJheSYgc2lnbmF0dXJl
KQogewogICAgIEJhc2U6OmZpbmlzaENyZWF0aW9uKGV4ZWMsIGlkZW50aWZpZXIsIGluc3RhbmNl
KTsKICAgICBRV19EKFF0UnVudGltZUNvbm5lY3Rpb25NZXRob2QpOwpAQCAtMTcwNCw3ICsxNzA2
LDcgQEAgQ2FsbFR5cGUgUXRSdW50aW1lQ29ubmVjdGlvbk1ldGhvZDo6Z2V0QwogICAgIHJldHVy
biBDYWxsVHlwZUhvc3Q7CiB9CiAKLWJvb2wgUXRSdW50aW1lQ29ubmVjdGlvbk1ldGhvZDo6Z2V0
T3duUHJvcGVydHlTbG90KEpTQ2VsbCogY2VsbCwgRXhlY1N0YXRlKiBleGVjLCBjb25zdCBJZGVu
dGlmaWVyJiBwcm9wZXJ0eU5hbWUsIFByb3BlcnR5U2xvdCYgc2xvdCkKK2Jvb2wgUXRSdW50aW1l
Q29ubmVjdGlvbk1ldGhvZDo6Z2V0T3duUHJvcGVydHlTbG90KEpTQ2VsbCogY2VsbCwgRXhlY1N0
YXRlKiBleGVjLCBQcm9wZXJ0eU5hbWUgcHJvcGVydHlOYW1lLCBQcm9wZXJ0eVNsb3QmIHNsb3Qp
CiB7CiAgICAgUXRSdW50aW1lQ29ubmVjdGlvbk1ldGhvZCogdGhpc09iamVjdCA9IGpzQ2FzdDxR
dFJ1bnRpbWVDb25uZWN0aW9uTWV0aG9kKj4oY2VsbCk7CiAgICAgaWYgKHByb3BlcnR5TmFtZSA9
PSBleGVjLT5wcm9wZXJ0eU5hbWVzKCkubGVuZ3RoKSB7CkBAIC0xNzE1LDcgKzE3MTcsNyBAQCBi
b29sIFF0UnVudGltZUNvbm5lY3Rpb25NZXRob2Q6OmdldE93blByCiAgICAgcmV0dXJuIFF0UnVu
dGltZU1ldGhvZDo6Z2V0T3duUHJvcGVydHlTbG90KHRoaXNPYmplY3QsIGV4ZWMsIHByb3BlcnR5
TmFtZSwgc2xvdCk7CiB9CiAKLWJvb2wgUXRSdW50aW1lQ29ubmVjdGlvbk1ldGhvZDo6Z2V0T3du
UHJvcGVydHlEZXNjcmlwdG9yKEpTT2JqZWN0KiBvYmplY3QsIEV4ZWNTdGF0ZSogZXhlYywgY29u
c3QgSWRlbnRpZmllciYgcHJvcGVydHlOYW1lLCBQcm9wZXJ0eURlc2NyaXB0b3ImIGRlc2NyaXB0
b3IpCitib29sIFF0UnVudGltZUNvbm5lY3Rpb25NZXRob2Q6OmdldE93blByb3BlcnR5RGVzY3Jp
cHRvcihKU09iamVjdCogb2JqZWN0LCBFeGVjU3RhdGUqIGV4ZWMsIFByb3BlcnR5TmFtZSBwcm9w
ZXJ0eU5hbWUsIFByb3BlcnR5RGVzY3JpcHRvciYgZGVzY3JpcHRvcikKIHsKICAgICBRdFJ1bnRp
bWVDb25uZWN0aW9uTWV0aG9kKiB0aGlzT2JqZWN0ID0ganNDYXN0PFF0UnVudGltZUNvbm5lY3Rp
b25NZXRob2QqPihvYmplY3QpOwogICAgIGlmIChwcm9wZXJ0eU5hbWUgPT0gZXhlYy0+cHJvcGVy
dHlOYW1lcygpLmxlbmd0aCkgewpAQCAtMTczNiw3ICsxNzM4LDcgQEAgdm9pZCBRdFJ1bnRpbWVD
b25uZWN0aW9uTWV0aG9kOjpnZXRPd25QcgogICAgIFF0UnVudGltZU1ldGhvZDo6Z2V0T3duUHJv
cGVydHlOYW1lcyhvYmplY3QsIGV4ZWMsIHByb3BlcnR5TmFtZXMsIG1vZGUpOwogfQogCi1KU1Zh
bHVlIFF0UnVudGltZUNvbm5lY3Rpb25NZXRob2Q6Omxlbmd0aEdldHRlcihFeGVjU3RhdGUqLCBK
U1ZhbHVlLCBjb25zdCBJZGVudGlmaWVyJikKK0pTVmFsdWUgUXRSdW50aW1lQ29ubmVjdGlvbk1l
dGhvZDo6bGVuZ3RoR2V0dGVyKEV4ZWNTdGF0ZSosIEpTVmFsdWUsIFByb3BlcnR5TmFtZSkKIHsK
ICAgICAvLyB3ZSBoYXZlIG9uZSBmb3JtYWwgYXJndW1lbnQsIGFuZCBvbmUgb3B0aW9uYWwKICAg
ICByZXR1cm4ganNOdW1iZXIoMSk7CkluZGV4OiBTb3VyY2UvV2ViS2l0Mi9DaGFuZ2VMb2cKPT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PQotLS0gU291cmNlL1dlYktpdDIvQ2hhbmdlTG9nCShyZXZpc2lvbiAxMTY3OTIpCisr
KyBTb3VyY2UvV2ViS2l0Mi9DaGFuZ2VMb2cJKHdvcmtpbmcgY29weSkKQEAgLTEsMyArMSwzOCBA
QAorMjAxMi0wNS0xMSAgR2F2aW4gQmFycmFjbG91Z2ggIDxiYXJyYWNsb3VnaEBhcHBsZS5jb20+
CisKKyAgICAgICAgSW50cm9kdWNlIFByb3BlcnR5TmFtZSBjbGFzcworICAgICAgICBodHRwczov
L2J1Z3Mud2Via2l0Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9ODYyNDEKKworICAgICAgICBSZXZpZXdl
ZCBieSBOT0JPRFkgKE9PUFMhKS4KKworICAgICAgICBSZXBsYWNlICdjb25zdCBJZGVudGlmaWVy
JicgYXJndW1lbnRzIHRvIGZ1bmN0aW9ucyBhY2Nlc3Npbmcgb2JqZWN0IHByb3BlcnRpZXMgd2l0
aCBhIG5ldyAnUHJvcGVydHlOYW1lJyB0eXBlLgorICAgICAgICBUaGlzIGNoYW5nZSBwYXZlcyB0
aGUgd2F5IHRvIGFsbG93IGZvciBwcm9wZXJ0aWVzIGtleWVkIGJ5IHZhbHVlcyB0aGF0IGFyZSBu
b3QgSWRlbnRpZmllcnMuCisKKyAgICAgICAgVGhpcyBjaGFuZ2UgaXMgbGFyZ2VseSBhIG1lY2hh
bmljYWwgZmluZCAmIHJlcGxhY2UuCisgICAgICAgIEl0IGFsc28gY2hhbmdlcyBKU0Z1bmN0aW9u
J3MgY29uc3RydWN0b3IgdG8gdGFrZSBhIFVTdHJpbmcmIGluc3RlYWQgb2YgYW4gSWRlbnRpZmll
ciYKKyAgICAgICAgKHNpbmNlIGluIHNvbWUgY2FzZXMgd2UgY2FuIG5vIGxvbmdlciBndWFyYW50
ZWUgdGhhdCB3ZSdsbGwgaGF2ZSBhbiBJZGVudGlmaWVyKSwgYW5kCisgICAgICAgIHVuaWZpZXMg
SWRlbnRpZmllcidzIG1ldGhvZHMgdG8gb2J0YWluIGFycmF5IGluZGljZXMgb250byBQcm9wZXJ0
eU5hbWUuCisKKyAgICAgICAgVGhlIG5ldyBQcm9wZXJ0eU5hbWUgY2xhc3MgcmV0YWlucyB0aGUg
YWJpbGl0eSB0byBzdXBwb3J0IC5pbXBsKCkgYW5kIC51c3RyaW5nKCksIGJ1dAorICAgICAgICBp
biBhIGZ1dHVyZSBwYXRjaCB3ZSBtYXkgbmVlZCB0byByZXdvcmsgdGhpcywgc2luY2Ugbm90IGFs
bCBQcm9wZXJ0eU5hbWVzIHNob3VsZCBiZQorICAgICAgICBlcXVhbCBiYXNlZCBvbiB0aGVpciBz
dHJpbmcgcmVwcmVzZW50YXRpb24uCisKKyAgICAgICAgKiBXZWJQcm9jZXNzL1BsdWdpbnMvTmV0
c2NhcGUvSlNOUE1ldGhvZC5jcHA6CisgICAgICAgIChXZWJLaXQ6OkpTTlBNZXRob2Q6OmZpbmlz
aENyZWF0aW9uKToKKyAgICAgICAgKiBXZWJQcm9jZXNzL1BsdWdpbnMvTmV0c2NhcGUvSlNOUE1l
dGhvZC5oOgorICAgICAgICAoV2ViS2l0OjpKU05QTWV0aG9kOjpjcmVhdGUpOgorICAgICAgICAo
SlNOUE1ldGhvZCk6CisgICAgICAgICogV2ViUHJvY2Vzcy9QbHVnaW5zL05ldHNjYXBlL0pTTlBP
YmplY3QuY3BwOgorICAgICAgICAoV2ViS2l0OjpucElkZW50aWZpZXJGcm9tSWRlbnRpZmllcik6
CisgICAgICAgIChXZWJLaXQ6OkpTTlBPYmplY3Q6OmdldE93blByb3BlcnR5U2xvdCk6CisgICAg
ICAgIChXZWJLaXQ6OkpTTlBPYmplY3Q6OmdldE93blByb3BlcnR5RGVzY3JpcHRvcik6CisgICAg
ICAgIChXZWJLaXQ6OkpTTlBPYmplY3Q6OnB1dCk6CisgICAgICAgIChXZWJLaXQ6OkpTTlBPYmpl
Y3Q6OmRlbGV0ZVByb3BlcnR5KToKKyAgICAgICAgKFdlYktpdDo6SlNOUE9iamVjdDo6cHJvcGVy
dHlHZXR0ZXIpOgorICAgICAgICAoV2ViS2l0OjpKU05QT2JqZWN0OjptZXRob2RHZXR0ZXIpOgor
ICAgICAgICAqIFdlYlByb2Nlc3MvUGx1Z2lucy9OZXRzY2FwZS9KU05QT2JqZWN0Lmg6CisgICAg
ICAgIChKU05QT2JqZWN0KToKKwogMjAxMi0wNS0xMSAgR3VzdGF2byBOb3JvbmhhIFNpbHZhICA8
Z25zQGdub21lLm9yZz4KIAogICAgICAgICBSRUdSRVNTSU9OKHIxMTYyMDUpOiBbR1RLXTogYnVp
bGQgbm8gbG9uZ2VyIHN1cHBvcnRzIHRoaW4gYXJjaGl2ZXMKSW5kZXg6IFNvdXJjZS9XZWJLaXQy
L1dlYlByb2Nlc3MvUGx1Z2lucy9OZXRzY2FwZS9KU05QTWV0aG9kLmNwcAo9PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0t
LSBTb3VyY2UvV2ViS2l0Mi9XZWJQcm9jZXNzL1BsdWdpbnMvTmV0c2NhcGUvSlNOUE1ldGhvZC5j
cHAJKHJldmlzaW9uIDExNjY2NykKKysrIFNvdXJjZS9XZWJLaXQyL1dlYlByb2Nlc3MvUGx1Z2lu
cy9OZXRzY2FwZS9KU05QTWV0aG9kLmNwcAkod29ya2luZyBjb3B5KQpAQCAtNDksNyArNDksNyBA
QCBKU05QTWV0aG9kOjpKU05QTWV0aG9kKEpTR2xvYmFsT2JqZWN0KiBnCiB7CiB9CiAKLXZvaWQg
SlNOUE1ldGhvZDo6ZmluaXNoQ3JlYXRpb24oSlNHbG9iYWxEYXRhJiBnbG9iYWxEYXRhLCBjb25z
dCBJZGVudGlmaWVyJiBuYW1lKQordm9pZCBKU05QTWV0aG9kOjpmaW5pc2hDcmVhdGlvbihKU0ds
b2JhbERhdGEmIGdsb2JhbERhdGEsIGNvbnN0IFVTdHJpbmcmIG5hbWUpCiB7CiAgICAgQmFzZTo6
ZmluaXNoQ3JlYXRpb24oZ2xvYmFsRGF0YSwgbmFtZSk7CiAgICAgQVNTRVJUKGluaGVyaXRzKCZz
X2luZm8pKTsKSW5kZXg6IFNvdXJjZS9XZWJLaXQyL1dlYlByb2Nlc3MvUGx1Z2lucy9OZXRzY2Fw
ZS9KU05QTWV0aG9kLmgKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL1dlYktpdDIvV2ViUHJvY2Vzcy9Q
bHVnaW5zL05ldHNjYXBlL0pTTlBNZXRob2QuaAkocmV2aXNpb24gMTE2NjY3KQorKysgU291cmNl
L1dlYktpdDIvV2ViUHJvY2Vzcy9QbHVnaW5zL05ldHNjYXBlL0pTTlBNZXRob2QuaAkod29ya2lu
ZyBjb3B5KQpAQCAtMzksNyArMzksNyBAQCBjbGFzcyBKU05QTWV0aG9kIDogcHVibGljIEpTQzo6
SW50ZXJuYWxGCiBwdWJsaWM6CiAgICAgdHlwZWRlZiBKU0M6OkludGVybmFsRnVuY3Rpb24gQmFz
ZTsKIAotICAgIHN0YXRpYyBKU05QTWV0aG9kKiBjcmVhdGUoSlNDOjpFeGVjU3RhdGUqIGV4ZWMs
IEpTQzo6SlNHbG9iYWxPYmplY3QqIGdsb2JhbE9iamVjdCwgY29uc3QgSlNDOjpJZGVudGlmaWVy
JiBuYW1lLCBOUElkZW50aWZpZXIgbnBJZGVudCkKKyAgICBzdGF0aWMgSlNOUE1ldGhvZCogY3Jl
YXRlKEpTQzo6RXhlY1N0YXRlKiBleGVjLCBKU0M6OkpTR2xvYmFsT2JqZWN0KiBnbG9iYWxPYmpl
Y3QsIGNvbnN0IEpTQzo6VVN0cmluZyYgbmFtZSwgTlBJZGVudGlmaWVyIG5wSWRlbnQpCiAgICAg
ewogICAgICAgICBKU0M6OlN0cnVjdHVyZSogc3RydWN0dXJlID0gY3JlYXRlU3RydWN0dXJlKGV4
ZWMtPmdsb2JhbERhdGEoKSwgZ2xvYmFsT2JqZWN0LCBnbG9iYWxPYmplY3QtPmZ1bmN0aW9uUHJv
dG90eXBlKCkpOwogICAgICAgICBKU05QTWV0aG9kKiBtZXRob2QgPSBuZXcgKEpTQzo6YWxsb2Nh
dGVDZWxsPEpTTlBNZXRob2Q+KCpleGVjLT5oZWFwKCkpKSBKU05QTWV0aG9kKGdsb2JhbE9iamVj
dCwgc3RydWN0dXJlLCBucElkZW50KTsKQEAgLTUyLDcgKzUyLDcgQEAgcHVibGljOgogICAgIE5Q
SWRlbnRpZmllciBucElkZW50aWZpZXIoKSBjb25zdCB7IHJldHVybiBtX25wSWRlbnRpZmllcjsg
fQogCiBwcm90ZWN0ZWQ6Ci0gICAgdm9pZCBmaW5pc2hDcmVhdGlvbihKU0M6OkpTR2xvYmFsRGF0
YSYsIGNvbnN0IEpTQzo6SWRlbnRpZmllciYgbmFtZSk7CisgICAgdm9pZCBmaW5pc2hDcmVhdGlv
bihKU0M6OkpTR2xvYmFsRGF0YSYsIGNvbnN0IEpTQzo6VVN0cmluZyYgbmFtZSk7CiAKIHByaXZh
dGU6ICAgIAogICAgIEpTTlBNZXRob2QoSlNDOjpKU0dsb2JhbE9iamVjdCosIEpTQzo6U3RydWN0
dXJlKiwgTlBJZGVudGlmaWVyKTsKSW5kZXg6IFNvdXJjZS9XZWJLaXQyL1dlYlByb2Nlc3MvUGx1
Z2lucy9OZXRzY2FwZS9KU05QT2JqZWN0LmNwcAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2ViS2l0
Mi9XZWJQcm9jZXNzL1BsdWdpbnMvTmV0c2NhcGUvSlNOUE9iamVjdC5jcHAJKHJldmlzaW9uIDEx
NjY2NykKKysrIFNvdXJjZS9XZWJLaXQyL1dlYlByb2Nlc3MvUGx1Z2lucy9OZXRzY2FwZS9KU05Q
T2JqZWN0LmNwcAkod29ya2luZyBjb3B5KQpAQCAtNDMsNyArNDMsNyBAQCB1c2luZyBuYW1lc3Bh
Y2UgV2ViQ29yZTsKIAogbmFtZXNwYWNlIFdlYktpdCB7CiAKLXN0YXRpYyBOUElkZW50aWZpZXIg
bnBJZGVudGlmaWVyRnJvbUlkZW50aWZpZXIoY29uc3QgSWRlbnRpZmllciYgaWRlbnRpZmllcikK
K3N0YXRpYyBOUElkZW50aWZpZXIgbnBJZGVudGlmaWVyRnJvbUlkZW50aWZpZXIoUHJvcGVydHlO
YW1lIGlkZW50aWZpZXIpCiB7CiAgICAgcmV0dXJuIHN0YXRpY19jYXN0PE5QSWRlbnRpZmllcj4o
SWRlbnRpZmllclJlcDo6Z2V0KGlkZW50aWZpZXIudXN0cmluZygpLnV0ZjgoKS5kYXRhKCkpKTsK
IH0KQEAgLTI1Miw3ICsyNTIsNyBAQCBDb25zdHJ1Y3RUeXBlIEpTTlBPYmplY3Q6OmdldENvbnN0
cnVjdERhCiAgICAgcmV0dXJuIENvbnN0cnVjdFR5cGVIb3N0OwogfQogCi1ib29sIEpTTlBPYmpl
Y3Q6OmdldE93blByb3BlcnR5U2xvdChKU0NlbGwqIGNlbGwsIEV4ZWNTdGF0ZSogZXhlYywgY29u
c3QgSWRlbnRpZmllciYgcHJvcGVydHlOYW1lLCBQcm9wZXJ0eVNsb3QmIHNsb3QpCitib29sIEpT
TlBPYmplY3Q6OmdldE93blByb3BlcnR5U2xvdChKU0NlbGwqIGNlbGwsIEV4ZWNTdGF0ZSogZXhl
YywgUHJvcGVydHlOYW1lIHByb3BlcnR5TmFtZSwgUHJvcGVydHlTbG90JiBzbG90KQogewogICAg
IEpTTlBPYmplY3QqIHRoaXNPYmplY3QgPSBKU0M6OmpzQ2FzdDxKU05QT2JqZWN0Kj4oY2VsbCk7
CiAgICAgQVNTRVJUX0dDX09CSkVDVF9JTkhFUklUUyh0aGlzT2JqZWN0LCAmc19pbmZvKTsKQEAg
LTI3OCw3ICsyNzgsNyBAQCBib29sIEpTTlBPYmplY3Q6OmdldE93blByb3BlcnR5U2xvdChKU0Nl
CiAgICAgcmV0dXJuIGZhbHNlOwogfQogCi1ib29sIEpTTlBPYmplY3Q6OmdldE93blByb3BlcnR5
RGVzY3JpcHRvcihKU09iamVjdCogb2JqZWN0LCBFeGVjU3RhdGUqIGV4ZWMsIGNvbnN0IElkZW50
aWZpZXImIHByb3BlcnR5TmFtZSwgUHJvcGVydHlEZXNjcmlwdG9yJiBkZXNjcmlwdG9yKQorYm9v
bCBKU05QT2JqZWN0OjpnZXRPd25Qcm9wZXJ0eURlc2NyaXB0b3IoSlNPYmplY3QqIG9iamVjdCwg
RXhlY1N0YXRlKiBleGVjLCBQcm9wZXJ0eU5hbWUgcHJvcGVydHlOYW1lLCBQcm9wZXJ0eURlc2Ny
aXB0b3ImIGRlc2NyaXB0b3IpCiB7CiAgICAgSlNOUE9iamVjdCogdGhpc09iamVjdCA9IGpzQ2Fz
dDxKU05QT2JqZWN0Kj4ob2JqZWN0KTsKICAgICBBU1NFUlRfR0NfT0JKRUNUX0lOSEVSSVRTKHRo
aXNPYmplY3QsICZzX2luZm8pOwpAQCAtMzA4LDcgKzMwOCw3IEBAIGJvb2wgSlNOUE9iamVjdDo6
Z2V0T3duUHJvcGVydHlEZXNjcmlwdG8KICAgICByZXR1cm4gZmFsc2U7CiB9CiAKLXZvaWQgSlNO
UE9iamVjdDo6cHV0KEpTQ2VsbCogY2VsbCwgRXhlY1N0YXRlKiBleGVjLCBjb25zdCBJZGVudGlm
aWVyJiBwcm9wZXJ0eU5hbWUsIEpTVmFsdWUgdmFsdWUsIFB1dFByb3BlcnR5U2xvdCYpCit2b2lk
IEpTTlBPYmplY3Q6OnB1dChKU0NlbGwqIGNlbGwsIEV4ZWNTdGF0ZSogZXhlYywgUHJvcGVydHlO
YW1lIHByb3BlcnR5TmFtZSwgSlNWYWx1ZSB2YWx1ZSwgUHV0UHJvcGVydHlTbG90JikKIHsKICAg
ICBKU05QT2JqZWN0KiB0aGlzT2JqZWN0ID0gSlNDOjpqc0Nhc3Q8SlNOUE9iamVjdCo+KGNlbGwp
OwogICAgIEFTU0VSVF9HQ19PQkpFQ1RfSU5IRVJJVFModGhpc09iamVjdCwgJnNfaW5mbyk7CkBA
IC0zNDcsNyArMzQ3LDcgQEAgdm9pZCBKU05QT2JqZWN0OjpwdXQoSlNDZWxsKiBjZWxsLCBFeGVj
UwogICAgIHJlbGVhc2VOUFZhcmlhbnRWYWx1ZSgmdmFyaWFudCk7CiB9CiAKLWJvb2wgSlNOUE9i
amVjdDo6ZGVsZXRlUHJvcGVydHkoSlNDZWxsKiBjZWxsLCBFeGVjU3RhdGUqIGV4ZWMsIGNvbnN0
IElkZW50aWZpZXImIHByb3BlcnR5TmFtZSkKK2Jvb2wgSlNOUE9iamVjdDo6ZGVsZXRlUHJvcGVy
dHkoSlNDZWxsKiBjZWxsLCBFeGVjU3RhdGUqIGV4ZWMsIFByb3BlcnR5TmFtZSBwcm9wZXJ0eU5h
bWUpCiB7CiAgICAgcmV0dXJuIGpzQ2FzdDxKU05QT2JqZWN0Kj4oY2VsbCktPmRlbGV0ZVByb3Bl
cnR5KGV4ZWMsIG5wSWRlbnRpZmllckZyb21JZGVudGlmaWVyKHByb3BlcnR5TmFtZSkpOwogfQpA
QCAtNDM2LDcgKzQzNiw3IEBAIHZvaWQgSlNOUE9iamVjdDo6Z2V0T3duUHJvcGVydHlOYW1lcyhK
U08KICAgICBucG5NZW1GcmVlKGlkZW50aWZpZXJzKTsKIH0KIAotSlNWYWx1ZSBKU05QT2JqZWN0
Ojpwcm9wZXJ0eUdldHRlcihFeGVjU3RhdGUqIGV4ZWMsIEpTVmFsdWUgc2xvdEJhc2UsIGNvbnN0
IElkZW50aWZpZXImIHByb3BlcnR5TmFtZSkKK0pTVmFsdWUgSlNOUE9iamVjdDo6cHJvcGVydHlH
ZXR0ZXIoRXhlY1N0YXRlKiBleGVjLCBKU1ZhbHVlIHNsb3RCYXNlLCBQcm9wZXJ0eU5hbWUgcHJv
cGVydHlOYW1lKQogewogICAgIEpTTlBPYmplY3QqIHRoaXNPYmogPSBzdGF0aWNfY2FzdDxKU05Q
T2JqZWN0Kj4oYXNPYmplY3Qoc2xvdEJhc2UpKTsKICAgICBBU1NFUlRfR0NfT0JKRUNUX0lOSEVS
SVRTKHRoaXNPYmosICZzX2luZm8pOwpAQCAtNDcyLDcgKzQ3Miw3IEBAIEpTVmFsdWUgSlNOUE9i
amVjdDo6cHJvcGVydHlHZXR0ZXIoRXhlY1MKICAgICByZXR1cm4gcHJvcGVydHlWYWx1ZTsKIH0K
IAotSlNWYWx1ZSBKU05QT2JqZWN0OjptZXRob2RHZXR0ZXIoRXhlY1N0YXRlKiBleGVjLCBKU1Zh
bHVlIHNsb3RCYXNlLCBjb25zdCBJZGVudGlmaWVyJiBtZXRob2ROYW1lKQorSlNWYWx1ZSBKU05Q
T2JqZWN0OjptZXRob2RHZXR0ZXIoRXhlY1N0YXRlKiBleGVjLCBKU1ZhbHVlIHNsb3RCYXNlLCBQ
cm9wZXJ0eU5hbWUgbWV0aG9kTmFtZSkKIHsKICAgICBKU05QT2JqZWN0KiB0aGlzT2JqID0gc3Rh
dGljX2Nhc3Q8SlNOUE9iamVjdCo+KGFzT2JqZWN0KHNsb3RCYXNlKSk7CiAgICAgQVNTRVJUX0dD
X09CSkVDVF9JTkhFUklUUyh0aGlzT2JqLCAmc19pbmZvKTsKQEAgLTQ4MSw3ICs0ODEsNyBAQCBK
U1ZhbHVlIEpTTlBPYmplY3Q6Om1ldGhvZEdldHRlcihFeGVjU3RhCiAgICAgICAgIHJldHVybiB0
aHJvd0ludmFsaWRBY2Nlc3NFcnJvcihleGVjKTsKIAogICAgIE5QSWRlbnRpZmllciBucElkZW50
aWZpZXIgPSBucElkZW50aWZpZXJGcm9tSWRlbnRpZmllcihtZXRob2ROYW1lKTsKLSAgICByZXR1
cm4gSlNOUE1ldGhvZDo6Y3JlYXRlKGV4ZWMsIHRoaXNPYmotPmdsb2JhbE9iamVjdCgpLCBtZXRo
b2ROYW1lLCBucElkZW50aWZpZXIpOworICAgIHJldHVybiBKU05QTWV0aG9kOjpjcmVhdGUoZXhl
YywgdGhpc09iai0+Z2xvYmFsT2JqZWN0KCksIG1ldGhvZE5hbWUudXN0cmluZygpLCBucElkZW50
aWZpZXIpOwogfQogCiBKU09iamVjdCogSlNOUE9iamVjdDo6dGhyb3dJbnZhbGlkQWNjZXNzRXJy
b3IoRXhlY1N0YXRlKiBleGVjKQpJbmRleDogU291cmNlL1dlYktpdDIvV2ViUHJvY2Vzcy9QbHVn
aW5zL05ldHNjYXBlL0pTTlBPYmplY3QuaAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2ViS2l0Mi9X
ZWJQcm9jZXNzL1BsdWdpbnMvTmV0c2NhcGUvSlNOUE9iamVjdC5oCShyZXZpc2lvbiAxMTY2Njcp
CisrKyBTb3VyY2UvV2ViS2l0Mi9XZWJQcm9jZXNzL1BsdWdpbnMvTmV0c2NhcGUvSlNOUE9iamVj
dC5oCSh3b3JraW5nIGNvcHkpCkBAIC04MywxOSArODMsMTkgQEAgcHJpdmF0ZToKICAgICBzdGF0
aWMgSlNDOjpDYWxsVHlwZSBnZXRDYWxsRGF0YShKU0M6OkpTQ2VsbCosIEpTQzo6Q2FsbERhdGEm
KTsKICAgICBzdGF0aWMgSlNDOjpDb25zdHJ1Y3RUeXBlIGdldENvbnN0cnVjdERhdGEoSlNDOjpK
U0NlbGwqLCBKU0M6OkNvbnN0cnVjdERhdGEmKTsKIAotICAgIHN0YXRpYyBib29sIGdldE93blBy
b3BlcnR5U2xvdChKU0M6OkpTQ2VsbCosIEpTQzo6RXhlY1N0YXRlKiwgY29uc3QgSlNDOjpJZGVu
dGlmaWVyJiBwcm9wZXJ0eU5hbWUsIEpTQzo6UHJvcGVydHlTbG90Jik7Ci0gICAgc3RhdGljIGJv
b2wgZ2V0T3duUHJvcGVydHlEZXNjcmlwdG9yKEpTQzo6SlNPYmplY3QqLCBKU0M6OkV4ZWNTdGF0
ZSosIGNvbnN0IEpTQzo6SWRlbnRpZmllciYgcHJvcGVydHlOYW1lLCBKU0M6OlByb3BlcnR5RGVz
Y3JpcHRvciYpOwotICAgIHN0YXRpYyB2b2lkIHB1dChKU0M6OkpTQ2VsbCosIEpTQzo6RXhlY1N0
YXRlKiwgY29uc3QgSlNDOjpJZGVudGlmaWVyJiBwcm9wZXJ0eU5hbWUsIEpTQzo6SlNWYWx1ZSwg
SlNDOjpQdXRQcm9wZXJ0eVNsb3QmKTsKKyAgICBzdGF0aWMgYm9vbCBnZXRPd25Qcm9wZXJ0eVNs
b3QoSlNDOjpKU0NlbGwqLCBKU0M6OkV4ZWNTdGF0ZSosIEpTQzo6UHJvcGVydHlOYW1lLCBKU0M6
OlByb3BlcnR5U2xvdCYpOworICAgIHN0YXRpYyBib29sIGdldE93blByb3BlcnR5RGVzY3JpcHRv
cihKU0M6OkpTT2JqZWN0KiwgSlNDOjpFeGVjU3RhdGUqLCBKU0M6OlByb3BlcnR5TmFtZSwgSlND
OjpQcm9wZXJ0eURlc2NyaXB0b3ImKTsKKyAgICBzdGF0aWMgdm9pZCBwdXQoSlNDOjpKU0NlbGwq
LCBKU0M6OkV4ZWNTdGF0ZSosIEpTQzo6UHJvcGVydHlOYW1lLCBKU0M6OkpTVmFsdWUsIEpTQzo6
UHV0UHJvcGVydHlTbG90Jik7CiAKLSAgICBzdGF0aWMgYm9vbCBkZWxldGVQcm9wZXJ0eShKU0M6
OkpTQ2VsbCosIEpTQzo6RXhlY1N0YXRlKiwgY29uc3QgSlNDOjpJZGVudGlmaWVyJiBwcm9wZXJ0
eU5hbWUpOworICAgIHN0YXRpYyBib29sIGRlbGV0ZVByb3BlcnR5KEpTQzo6SlNDZWxsKiwgSlND
OjpFeGVjU3RhdGUqLCBKU0M6OlByb3BlcnR5TmFtZSk7CiAgICAgc3RhdGljIGJvb2wgZGVsZXRl
UHJvcGVydHlCeUluZGV4KEpTQzo6SlNDZWxsKiwgSlNDOjpFeGVjU3RhdGUqLCB1bnNpZ25lZCBw
cm9wZXJ0eU5hbWUpOwogCiAgICAgYm9vbCBkZWxldGVQcm9wZXJ0eShKU0M6OkV4ZWNTdGF0ZSos
IE5QSWRlbnRpZmllciBwcm9wZXJ0eU5hbWUpOwogCiAgICAgc3RhdGljIHZvaWQgZ2V0T3duUHJv
cGVydHlOYW1lcyhKU0M6OkpTT2JqZWN0KiwgSlNDOjpFeGVjU3RhdGUqLCBKU0M6OlByb3BlcnR5
TmFtZUFycmF5JiwgSlNDOjpFbnVtZXJhdGlvbk1vZGUpOwogCi0gICAgc3RhdGljIEpTQzo6SlNW
YWx1ZSBwcm9wZXJ0eUdldHRlcihKU0M6OkV4ZWNTdGF0ZSosIEpTQzo6SlNWYWx1ZSwgY29uc3Qg
SlNDOjpJZGVudGlmaWVyJik7Ci0gICAgc3RhdGljIEpTQzo6SlNWYWx1ZSBtZXRob2RHZXR0ZXIo
SlNDOjpFeGVjU3RhdGUqLCBKU0M6OkpTVmFsdWUsIGNvbnN0IEpTQzo6SWRlbnRpZmllciYpOwor
ICAgIHN0YXRpYyBKU0M6OkpTVmFsdWUgcHJvcGVydHlHZXR0ZXIoSlNDOjpFeGVjU3RhdGUqLCBK
U0M6OkpTVmFsdWUsIEpTQzo6UHJvcGVydHlOYW1lKTsKKyAgICBzdGF0aWMgSlNDOjpKU1ZhbHVl
IG1ldGhvZEdldHRlcihKU0M6OkV4ZWNTdGF0ZSosIEpTQzo6SlNWYWx1ZSwgSlNDOjpQcm9wZXJ0
eU5hbWUpOwogICAgIHN0YXRpYyBKU0M6OkpTT2JqZWN0KiB0aHJvd0ludmFsaWRBY2Nlc3NFcnJv
cihKU0M6OkV4ZWNTdGF0ZSopOwogCiAgICAgTlBSdW50aW1lT2JqZWN0TWFwKiBtX29iamVjdE1h
cDsKSW5kZXg6IFNvdXJjZS9XZWJLaXQvbWFjL0NoYW5nZUxvZwo9PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3Vy
Y2UvV2ViS2l0L21hYy9DaGFuZ2VMb2cJKHJldmlzaW9uIDExNjc5MikKKysrIFNvdXJjZS9XZWJL
aXQvbWFjL0NoYW5nZUxvZwkod29ya2luZyBjb3B5KQpAQCAtMSwzICsxLDM0IEBACisyMDEyLTA1
LTExICBHYXZpbiBCYXJyYWNsb3VnaCAgPGJhcnJhY2xvdWdoQGFwcGxlLmNvbT4KKworICAgICAg
ICBJbnRyb2R1Y2UgUHJvcGVydHlOYW1lIGNsYXNzCisgICAgICAgIGh0dHBzOi8vYnVncy53ZWJr
aXQub3JnL3Nob3dfYnVnLmNnaT9pZD04NjI0MQorCisgICAgICAgIFJldmlld2VkIGJ5IE5PQk9E
WSAoT09QUyEpLgorCisgICAgICAgIFJlcGxhY2UgJ2NvbnN0IElkZW50aWZpZXImJyBhcmd1bWVu
dHMgdG8gZnVuY3Rpb25zIGFjY2Vzc2luZyBvYmplY3QgcHJvcGVydGllcyB3aXRoIGEgbmV3ICdQ
cm9wZXJ0eU5hbWUnIHR5cGUuCisgICAgICAgIFRoaXMgY2hhbmdlIHBhdmVzIHRoZSB3YXkgdG8g
YWxsb3cgZm9yIHByb3BlcnRpZXMga2V5ZWQgYnkgdmFsdWVzIHRoYXQgYXJlIG5vdCBJZGVudGlm
aWVycy4KKworICAgICAgICBUaGlzIGNoYW5nZSBpcyBsYXJnZWx5IGEgbWVjaGFuaWNhbCBmaW5k
ICYgcmVwbGFjZS4KKyAgICAgICAgSXQgYWxzbyBjaGFuZ2VzIEpTRnVuY3Rpb24ncyBjb25zdHJ1
Y3RvciB0byB0YWtlIGEgVVN0cmluZyYgaW5zdGVhZCBvZiBhbiBJZGVudGlmaWVyJgorICAgICAg
ICAoc2luY2UgaW4gc29tZSBjYXNlcyB3ZSBjYW4gbm8gbG9uZ2VyIGd1YXJhbnRlZSB0aGF0IHdl
J2xsbCBoYXZlIGFuIElkZW50aWZpZXIpLCBhbmQKKyAgICAgICAgdW5pZmllcyBJZGVudGlmaWVy
J3MgbWV0aG9kcyB0byBvYnRhaW4gYXJyYXkgaW5kaWNlcyBvbnRvIFByb3BlcnR5TmFtZS4KKwor
ICAgICAgICBUaGUgbmV3IFByb3BlcnR5TmFtZSBjbGFzcyByZXRhaW5zIHRoZSBhYmlsaXR5IHRv
IHN1cHBvcnQgLmltcGwoKSBhbmQgLnVzdHJpbmcoKSwgYnV0CisgICAgICAgIGluIGEgZnV0dXJl
IHBhdGNoIHdlIG1heSBuZWVkIHRvIHJld29yayB0aGlzLCBzaW5jZSBub3QgYWxsIFByb3BlcnR5
TmFtZXMgc2hvdWxkIGJlCisgICAgICAgIGVxdWFsIGJhc2VkIG9uIHRoZWlyIHN0cmluZyByZXBy
ZXNlbnRhdGlvbi4KKworICAgICAgICAqIFBsdWdpbnMvSG9zdGVkL1Byb3h5SW5zdGFuY2UuaDoK
KyAgICAgICAgKFByb3h5SW5zdGFuY2UpOgorICAgICAgICAqIFBsdWdpbnMvSG9zdGVkL1Byb3h5
SW5zdGFuY2UubW06CisgICAgICAgIChQcm94eUNsYXNzKToKKyAgICAgICAgKFdlYktpdDo6UHJv
eHlDbGFzczo6bWV0aG9kc05hbWVkKToKKyAgICAgICAgKFdlYktpdDo6UHJveHlDbGFzczo6Zmll
bGROYW1lZCk6CisgICAgICAgIChXZWJLaXQ6OlByb3h5UnVudGltZU1ldGhvZDo6Y3JlYXRlKToK
KyAgICAgICAgKFdlYktpdDo6UHJveHlSdW50aW1lTWV0aG9kOjpmaW5pc2hDcmVhdGlvbik6Cisg
ICAgICAgIChXZWJLaXQ6OlByb3h5SW5zdGFuY2U6OmdldE1ldGhvZCk6CisgICAgICAgIChXZWJL
aXQ6OlByb3h5SW5zdGFuY2U6Om1ldGhvZHNOYW1lZCk6CisgICAgICAgIChXZWJLaXQ6OlByb3h5
SW5zdGFuY2U6OmZpZWxkTmFtZWQpOgorCiAyMDEyLTA1LTEwICBHeXV5b3VuZyBLaW0gIDxneXV5
b3VuZy5raW1Ac2Ftc3VuZy5jb20+CiAKICAgICAgICAgTW92ZSByZXN1bWVBbmltYXRpb25zIHRv
IHVzZSBJbnRlcm5hbHMgaW50ZXJmYWNlCkluZGV4OiBTb3VyY2UvV2ViS2l0L21hYy9QbHVnaW5z
L0hvc3RlZC9Qcm94eUluc3RhbmNlLmgKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL1dlYktpdC9tYWMv
UGx1Z2lucy9Ib3N0ZWQvUHJveHlJbnN0YW5jZS5oCShyZXZpc2lvbiAxMTY2NjcpCisrKyBTb3Vy
Y2UvV2ViS2l0L21hYy9QbHVnaW5zL0hvc3RlZC9Qcm94eUluc3RhbmNlLmgJKHdvcmtpbmcgY29w
eSkKQEAgLTQ2LDggKzQ2LDggQEAgcHVibGljOgogICAgIH0KICAgICB+UHJveHlJbnN0YW5jZSgp
OwogCi0gICAgSlNDOjpCaW5kaW5nczo6TWV0aG9kTGlzdCBtZXRob2RzTmFtZWQoY29uc3QgSlND
OjpJZGVudGlmaWVyJik7Ci0gICAgSlNDOjpCaW5kaW5nczo6RmllbGQqIGZpZWxkTmFtZWQoY29u
c3QgSlNDOjpJZGVudGlmaWVyJik7CisgICAgSlNDOjpCaW5kaW5nczo6TWV0aG9kTGlzdCBtZXRo
b2RzTmFtZWQoSlNDOjpQcm9wZXJ0eU5hbWUpOworICAgIEpTQzo6QmluZGluZ3M6OkZpZWxkKiBm
aWVsZE5hbWVkKEpTQzo6UHJvcGVydHlOYW1lKTsKIAogICAgIEpTQzo6SlNWYWx1ZSBmaWVsZFZh
bHVlKEpTQzo6RXhlY1N0YXRlKiwgY29uc3QgSlNDOjpCaW5kaW5nczo6RmllbGQqKSBjb25zdDsK
ICAgICB2b2lkIHNldEZpZWxkVmFsdWUoSlNDOjpFeGVjU3RhdGUqLCBjb25zdCBKU0M6OkJpbmRp
bmdzOjpGaWVsZCosIEpTQzo6SlNWYWx1ZSkgY29uc3Q7CkBAIC02Niw3ICs2Niw3IEBAIHByaXZh
dGU6CiAKICAgICB2aXJ0dWFsIEpTQzo6QmluZGluZ3M6OkNsYXNzKiBnZXRDbGFzcygpIGNvbnN0
OwogCi0gICAgdmlydHVhbCBKU0M6OkpTVmFsdWUgZ2V0TWV0aG9kKEpTQzo6RXhlY1N0YXRlKiBl
eGVjLCBjb25zdCBKU0M6OklkZW50aWZpZXImIHByb3BlcnR5TmFtZSk7CisgICAgdmlydHVhbCBK
U0M6OkpTVmFsdWUgZ2V0TWV0aG9kKEpTQzo6RXhlY1N0YXRlKiwgSlNDOjpQcm9wZXJ0eU5hbWUp
OwogICAgIHZpcnR1YWwgSlNDOjpKU1ZhbHVlIGludm9rZU1ldGhvZChKU0M6OkV4ZWNTdGF0ZSos
IEpTQzo6UnVudGltZU1ldGhvZCopOwogCiAgICAgdmlydHVhbCBib29sIHN1cHBvcnRzSW52b2tl
RGVmYXVsdE1ldGhvZCgpIGNvbnN0OwpJbmRleDogU291cmNlL1dlYktpdC9tYWMvUGx1Z2lucy9I
b3N0ZWQvUHJveHlJbnN0YW5jZS5tbQo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2ViS2l0L21hYy9Q
bHVnaW5zL0hvc3RlZC9Qcm94eUluc3RhbmNlLm1tCShyZXZpc2lvbiAxMTY2NjcpCisrKyBTb3Vy
Y2UvV2ViS2l0L21hYy9QbHVnaW5zL0hvc3RlZC9Qcm94eUluc3RhbmNlLm1tCSh3b3JraW5nIGNv
cHkpCkBAIC01MCwxNiArNTAsMTYgQEAgbmFtZXNwYWNlIFdlYktpdCB7CiAKIGNsYXNzIFByb3h5
Q2xhc3MgOiBwdWJsaWMgSlNDOjpCaW5kaW5nczo6Q2xhc3MgewogcHJpdmF0ZToKLSAgICB2aXJ0
dWFsIE1ldGhvZExpc3QgbWV0aG9kc05hbWVkKGNvbnN0IElkZW50aWZpZXImLCBJbnN0YW5jZSop
IGNvbnN0OwotICAgIHZpcnR1YWwgRmllbGQqIGZpZWxkTmFtZWQoY29uc3QgSWRlbnRpZmllciYs
IEluc3RhbmNlKikgY29uc3Q7CisgICAgdmlydHVhbCBNZXRob2RMaXN0IG1ldGhvZHNOYW1lZChQ
cm9wZXJ0eU5hbWUsIEluc3RhbmNlKikgY29uc3Q7CisgICAgdmlydHVhbCBGaWVsZCogZmllbGRO
YW1lZChQcm9wZXJ0eU5hbWUsIEluc3RhbmNlKikgY29uc3Q7CiB9OwogCi1NZXRob2RMaXN0IFBy
b3h5Q2xhc3M6Om1ldGhvZHNOYW1lZChjb25zdCBJZGVudGlmaWVyJiBpZGVudGlmaWVyLCBJbnN0
YW5jZSogaW5zdGFuY2UpIGNvbnN0CitNZXRob2RMaXN0IFByb3h5Q2xhc3M6Om1ldGhvZHNOYW1l
ZChQcm9wZXJ0eU5hbWUgaWRlbnRpZmllciwgSW5zdGFuY2UqIGluc3RhbmNlKSBjb25zdAogewog
ICAgIHJldHVybiBzdGF0aWNfY2FzdDxQcm94eUluc3RhbmNlKj4oaW5zdGFuY2UpLT5tZXRob2Rz
TmFtZWQoaWRlbnRpZmllcik7CiB9CiAKLUZpZWxkKiBQcm94eUNsYXNzOjpmaWVsZE5hbWVkKGNv
bnN0IElkZW50aWZpZXImIGlkZW50aWZpZXIsIEluc3RhbmNlKiBpbnN0YW5jZSkgY29uc3QKK0Zp
ZWxkKiBQcm94eUNsYXNzOjpmaWVsZE5hbWVkKFByb3BlcnR5TmFtZSBpZGVudGlmaWVyLCBJbnN0
YW5jZSogaW5zdGFuY2UpIGNvbnN0CiB7CiAgICAgcmV0dXJuIHN0YXRpY19jYXN0PFByb3h5SW5z
dGFuY2UqPihpbnN0YW5jZSktPmZpZWxkTmFtZWQoaWRlbnRpZmllcik7CiB9CkBAIC0xODEsNyAr
MTgxLDcgQEAgY2xhc3MgUHJveHlSdW50aW1lTWV0aG9kIDogcHVibGljIFJ1bnRpbQogcHVibGlj
OgogICAgIHR5cGVkZWYgUnVudGltZU1ldGhvZCBCYXNlOwogCi0gICAgc3RhdGljIFByb3h5UnVu
dGltZU1ldGhvZCogY3JlYXRlKEV4ZWNTdGF0ZSogZXhlYywgSlNHbG9iYWxPYmplY3QqIGdsb2Jh
bE9iamVjdCwgY29uc3QgSWRlbnRpZmllciYgbmFtZSwgQmluZGluZ3M6Ok1ldGhvZExpc3QmIGxp
c3QpCisgICAgc3RhdGljIFByb3h5UnVudGltZU1ldGhvZCogY3JlYXRlKEV4ZWNTdGF0ZSogZXhl
YywgSlNHbG9iYWxPYmplY3QqIGdsb2JhbE9iamVjdCwgY29uc3QgVVN0cmluZyYgbmFtZSwgQmlu
ZGluZ3M6Ok1ldGhvZExpc3QmIGxpc3QpCiAgICAgewogICAgICAgICAvLyBGSVhNRTogZGVwcmVj
YXRlZEdldERPTVN0cnVjdHVyZSB1c2VzIHRoZSBwcm90b3R5cGUgb2ZmIG9mIHRoZSB3cm9uZyBn
bG9iYWwgb2JqZWN0CiAgICAgICAgIC8vIGV4ZWMtZ2xvYmFsRGF0YSgpIGlzIGFsc28gbGlrZWx5
IHdyb25nLgpAQCAtMjA0LDcgKzIwNCw3IEBAIHByaXZhdGU6CiAgICAgewogICAgIH0KIAotICAg
IHZvaWQgZmluaXNoQ3JlYXRpb24oSlNHbG9iYWxEYXRhJiBnbG9iYWxEYXRhLCBjb25zdCBJZGVu
dGlmaWVyJiBuYW1lKQorICAgIHZvaWQgZmluaXNoQ3JlYXRpb24oSlNHbG9iYWxEYXRhJiBnbG9i
YWxEYXRhLCBjb25zdCBVU3RyaW5nJiBuYW1lKQogICAgIHsKICAgICAgICAgQmFzZTo6ZmluaXNo
Q3JlYXRpb24oZ2xvYmFsRGF0YSwgbmFtZSk7CiAgICAgICAgIEFTU0VSVChpbmhlcml0cygmc19p
bmZvKSk7CkBAIC0yMTMsMTAgKzIxMywxMCBAQCBwcml2YXRlOgogCiBjb25zdCBDbGFzc0luZm8g
UHJveHlSdW50aW1lTWV0aG9kOjpzX2luZm8gPSB7ICJQcm94eVJ1bnRpbWVNZXRob2QiLCAmUnVu
dGltZU1ldGhvZDo6c19pbmZvLCAwLCAwLCBDUkVBVEVfTUVUSE9EX1RBQkxFKFByb3h5UnVudGlt
ZU1ldGhvZCkgfTsKIAotSlNWYWx1ZSBQcm94eUluc3RhbmNlOjpnZXRNZXRob2QoSlNDOjpFeGVj
U3RhdGUqIGV4ZWMsIGNvbnN0IEpTQzo6SWRlbnRpZmllciYgcHJvcGVydHlOYW1lKQorSlNWYWx1
ZSBQcm94eUluc3RhbmNlOjpnZXRNZXRob2QoSlNDOjpFeGVjU3RhdGUqIGV4ZWMsIFByb3BlcnR5
TmFtZSBwcm9wZXJ0eU5hbWUpCiB7CiAgICAgTWV0aG9kTGlzdCBtZXRob2RMaXN0ID0gZ2V0Q2xh
c3MoKS0+bWV0aG9kc05hbWVkKHByb3BlcnR5TmFtZSwgdGhpcyk7Ci0gICAgcmV0dXJuIFByb3h5
UnVudGltZU1ldGhvZDo6Y3JlYXRlKGV4ZWMsIGV4ZWMtPmxleGljYWxHbG9iYWxPYmplY3QoKSwg
cHJvcGVydHlOYW1lLCBtZXRob2RMaXN0KTsKKyAgICByZXR1cm4gUHJveHlSdW50aW1lTWV0aG9k
OjpjcmVhdGUoZXhlYywgZXhlYy0+bGV4aWNhbEdsb2JhbE9iamVjdCgpLCBwcm9wZXJ0eU5hbWUu
aW1wbCgpLCBtZXRob2RMaXN0KTsKIH0KIAogSlNWYWx1ZSBQcm94eUluc3RhbmNlOjppbnZva2VN
ZXRob2QoRXhlY1N0YXRlKiBleGVjLCBKU0M6OlJ1bnRpbWVNZXRob2QqIHJ1bnRpbWVNZXRob2Qp
CkBAIC0zNDYsNyArMzQ2LDcgQEAgdm9pZCBQcm94eUluc3RhbmNlOjpnZXRQcm9wZXJ0eU5hbWVz
KEV4ZQogICAgIH0KIH0KIAotTWV0aG9kTGlzdCBQcm94eUluc3RhbmNlOjptZXRob2RzTmFtZWQo
Y29uc3QgSWRlbnRpZmllciYgaWRlbnRpZmllcikKK01ldGhvZExpc3QgUHJveHlJbnN0YW5jZTo6
bWV0aG9kc05hbWVkKFByb3BlcnR5TmFtZSBpZGVudGlmaWVyKQogewogICAgIGlmICghbV9pbnN0
YW5jZVByb3h5KQogICAgICAgICByZXR1cm4gTWV0aG9kTGlzdCgpOwpAQCAtMzYwLDcgKzM2MCw3
IEBAIE1ldGhvZExpc3QgUHJveHlJbnN0YW5jZTo6bWV0aG9kc05hbWVkKGMKICAgICAgICAgcmV0
dXJuIG1ldGhvZExpc3Q7CiAgICAgfQogICAgIAotICAgIHVpbnQ2NF90IG1ldGhvZE5hbWUgPSBy
ZWludGVycHJldF9jYXN0PHVpbnQ2NF90PihfTlBOX0dldFN0cmluZ0lkZW50aWZpZXIoaWRlbnRp
Zmllci5hc2NpaSgpLmRhdGEoKSkpOworICAgIHVpbnQ2NF90IG1ldGhvZE5hbWUgPSByZWludGVy
cHJldF9jYXN0PHVpbnQ2NF90PihfTlBOX0dldFN0cmluZ0lkZW50aWZpZXIoaWRlbnRpZmllci51
c3RyaW5nKCkuYXNjaWkoKS5kYXRhKCkpKTsKICAgICB1aW50MzJfdCByZXF1ZXN0SUQgPSBtX2lu
c3RhbmNlUHJveHktPm5leHRSZXF1ZXN0SUQoKTsKICAgICAKICAgICBpZiAoX1dLUEhOUE9iamVj
dEhhc01ldGhvZChtX2luc3RhbmNlUHJveHktPmhvc3RQcm94eSgpLT5wb3J0KCksCkBAIC0zODYs
NyArMzg2LDcgQEAgTWV0aG9kTGlzdCBQcm94eUluc3RhbmNlOjptZXRob2RzTmFtZWQoYwogICAg
IHJldHVybiBtZXRob2RMaXN0OwogfQogCi1GaWVsZCogUHJveHlJbnN0YW5jZTo6ZmllbGROYW1l
ZChjb25zdCBJZGVudGlmaWVyJiBpZGVudGlmaWVyKQorRmllbGQqIFByb3h5SW5zdGFuY2U6OmZp
ZWxkTmFtZWQoUHJvcGVydHlOYW1lIGlkZW50aWZpZXIpCiB7CiAgICAgaWYgKCFtX2luc3RhbmNl
UHJveHkpCiAgICAgICAgIHJldHVybiAwOwpAQCAtMzk2LDcgKzM5Niw3IEBAIEZpZWxkKiBQcm94
eUluc3RhbmNlOjpmaWVsZE5hbWVkKGNvbnN0IEkKICAgICBpZiAoZXhpc3RpbmdNYXBFbnRyeSAh
PSBtX2ZpZWxkcy5lbmQoKSkKICAgICAgICAgcmV0dXJuIGV4aXN0aW5nTWFwRW50cnktPnNlY29u
ZDsKICAgICAKLSAgICB1aW50NjRfdCBwcm9wZXJ0eU5hbWUgPSByZWludGVycHJldF9jYXN0PHVp
bnQ2NF90PihfTlBOX0dldFN0cmluZ0lkZW50aWZpZXIoaWRlbnRpZmllci5hc2NpaSgpLmRhdGEo
KSkpOworICAgIHVpbnQ2NF90IHByb3BlcnR5TmFtZSA9IHJlaW50ZXJwcmV0X2Nhc3Q8dWludDY0
X3Q+KF9OUE5fR2V0U3RyaW5nSWRlbnRpZmllcihpZGVudGlmaWVyLnVzdHJpbmcoKS5hc2NpaSgp
LmRhdGEoKSkpOwogICAgIHVpbnQzMl90IHJlcXVlc3RJRCA9IG1faW5zdGFuY2VQcm94eS0+bmV4
dFJlcXVlc3RJRCgpOwogICAgIAogICAgIGlmIChfV0tQSE5QT2JqZWN0SGFzUHJvcGVydHkobV9p
bnN0YW5jZVByb3h5LT5ob3N0UHJveHkoKS0+cG9ydCgpLAo=
</data>
<flag name="commit-queue"
          id="147646"
          type_id="3"
          status="-"
          setter="buildbot"
    />
          </attachment>
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>141494</attachid>
            <date>2012-05-11 14:13:10 -0700</date>
            <delta_ts>2012-05-11 14:37:25 -0700</delta_ts>
            <desc>more fixes</desc>
            <filename>PropertyName.7.patch</filename>
            <type>text/plain</type>
            <size>430653</size>
            <attacher name="Gavin Barraclough">barraclough</attacher>
            
              <data encoding="base64">SW5kZXg6IFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9DaGFuZ2VMb2cKPT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291
cmNlL0phdmFTY3JpcHRDb3JlL0NoYW5nZUxvZwkocmV2aXNpb24gMTE2NzkyKQorKysgU291cmNl
L0phdmFTY3JpcHRDb3JlL0NoYW5nZUxvZwkod29ya2luZyBjb3B5KQpAQCAtMSwzICsxLDM4OCBA
QAorMjAxMi0wNS0xMSAgR2F2aW4gQmFycmFjbG91Z2ggIDxiYXJyYWNsb3VnaEBhcHBsZS5jb20+
CisKKyAgICAgICAgSW50cm9kdWNlIFByb3BlcnR5TmFtZSBjbGFzcworICAgICAgICBodHRwczov
L2J1Z3Mud2Via2l0Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9ODYyNDEKKworICAgICAgICBSZXZpZXdl
ZCBieSBOT0JPRFkgKE9PUFMhKS4KKworICAgICAgICBSZXBsYWNlICdjb25zdCBJZGVudGlmaWVy
JicgYXJndW1lbnRzIHRvIGZ1bmN0aW9ucyBhY2Nlc3Npbmcgb2JqZWN0IHByb3BlcnRpZXMgd2l0
aCBhIG5ldyAnUHJvcGVydHlOYW1lJyB0eXBlLgorICAgICAgICBUaGlzIGNoYW5nZSBwYXZlcyB0
aGUgd2F5IHRvIGFsbG93IGZvciBwcm9wZXJ0aWVzIGtleWVkIGJ5IHZhbHVlcyB0aGF0IGFyZSBu
b3QgSWRlbnRpZmllcnMuCisKKyAgICAgICAgVGhpcyBjaGFuZ2UgaXMgbGFyZ2VseSBhIG1lY2hh
bmljYWwgZmluZCAmIHJlcGxhY2UuCisgICAgICAgIEl0IGFsc28gY2hhbmdlcyBKU0Z1bmN0aW9u
J3MgY29uc3RydWN0b3IgdG8gdGFrZSBhIFVTdHJpbmcmIGluc3RlYWQgb2YgYW4gSWRlbnRpZmll
ciYKKyAgICAgICAgKHNpbmNlIGluIHNvbWUgY2FzZXMgd2UgY2FuIG5vIGxvbmdlciBndWFyYW50
ZWUgdGhhdCB3ZSdsbGwgaGF2ZSBhbiBJZGVudGlmaWVyKSwgYW5kCisgICAgICAgIHVuaWZpZXMg
SWRlbnRpZmllcidzIG1ldGhvZHMgdG8gb2J0YWluIGFycmF5IGluZGljZXMgb250byBQcm9wZXJ0
eU5hbWUuCisKKyAgICAgICAgVGhlIG5ldyBQcm9wZXJ0eU5hbWUgY2xhc3MgcmV0YWlucyB0aGUg
YWJpbGl0eSB0byBzdXBwb3J0IC5pbXBsKCkgYW5kIC51c3RyaW5nKCksIGJ1dAorICAgICAgICBp
biBhIGZ1dHVyZSBwYXRjaCB3ZSBtYXkgbmVlZCB0byByZXdvcmsgdGhpcywgc2luY2Ugbm90IGFs
bCBQcm9wZXJ0eU5hbWVzIHNob3VsZCBiZQorICAgICAgICBlcXVhbCBiYXNlZCBvbiB0aGVpciBz
dHJpbmcgcmVwcmVzZW50YXRpb24uCisKKyAgICAgICAgKiBBUEkvSlNDYWxsYmFja0Z1bmN0aW9u
LmNwcDoKKyAgICAgICAgKEpTQzo6SlNDYWxsYmFja0Z1bmN0aW9uOjpmaW5pc2hDcmVhdGlvbik6
CisgICAgICAgICogQVBJL0pTQ2FsbGJhY2tGdW5jdGlvbi5oOgorICAgICAgICAoSlNDYWxsYmFj
a0Z1bmN0aW9uKToKKyAgICAgICAgKEpTQzo6SlNDYWxsYmFja0Z1bmN0aW9uOjpjcmVhdGUpOgor
ICAgICAgICAqIEFQSS9KU0NhbGxiYWNrT2JqZWN0Lmg6CisgICAgICAgIChKU0NhbGxiYWNrT2Jq
ZWN0KToKKyAgICAgICAgKiBBUEkvSlNDYWxsYmFja09iamVjdEZ1bmN0aW9ucy5oOgorICAgICAg
ICAoSlNDOjo6OmdldE93blByb3BlcnR5U2xvdCk6CisgICAgICAgIChKU0M6Ojo6Z2V0T3duUHJv
cGVydHlEZXNjcmlwdG9yKToKKyAgICAgICAgKEpTQzo6OjpwdXQpOgorICAgICAgICAoSlNDOjo6
OmRlbGV0ZVByb3BlcnR5KToKKyAgICAgICAgKEpTQzo6OjpnZXRTdGF0aWNWYWx1ZSk6CisgICAg
ICAgIChKU0M6Ojo6c3RhdGljRnVuY3Rpb25HZXR0ZXIpOgorICAgICAgICAoSlNDOjo6OmNhbGxi
YWNrR2V0dGVyKToKKyAgICAgICAgKiBBUEkvSlNPYmplY3RSZWYuY3BwOgorICAgICAgICAoSlNP
YmplY3RNYWtlRnVuY3Rpb25XaXRoQ2FsbGJhY2spOgorICAgICAgICAqIEpTQ1R5cGVkQXJyYXlT
dHVicy5oOgorICAgICAgICAoSlNDKToKKyAgICAgICAgKiBKYXZhU2NyaXB0Q29yZS54Y29kZXBy
b2ovcHJvamVjdC5wYnhwcm9qOgorICAgICAgICAqIGRlYnVnZ2VyL0RlYnVnZ2VyQWN0aXZhdGlv
bi5jcHA6CisgICAgICAgIChKU0M6OkRlYnVnZ2VyQWN0aXZhdGlvbjo6Z2V0T3duUHJvcGVydHlT
bG90KToKKyAgICAgICAgKEpTQzo6RGVidWdnZXJBY3RpdmF0aW9uOjpwdXQpOgorICAgICAgICAo
SlNDOjpEZWJ1Z2dlckFjdGl2YXRpb246OnB1dERpcmVjdFZpcnR1YWwpOgorICAgICAgICAoSlND
OjpEZWJ1Z2dlckFjdGl2YXRpb246OmRlbGV0ZVByb3BlcnR5KToKKyAgICAgICAgKEpTQzo6RGVi
dWdnZXJBY3RpdmF0aW9uOjpnZXRPd25Qcm9wZXJ0eURlc2NyaXB0b3IpOgorICAgICAgICAoSlND
OjpEZWJ1Z2dlckFjdGl2YXRpb246OmRlZmluZU93blByb3BlcnR5KToKKyAgICAgICAgKiBkZWJ1
Z2dlci9EZWJ1Z2dlckFjdGl2YXRpb24uaDoKKyAgICAgICAgKERlYnVnZ2VyQWN0aXZhdGlvbik6
CisgICAgICAgICoganNjLmNwcDoKKyAgICAgICAgKEdsb2JhbE9iamVjdDo6YWRkRnVuY3Rpb24p
OgorICAgICAgICAoR2xvYmFsT2JqZWN0OjphZGRDb25zdHJ1Y3RhYmxlRnVuY3Rpb24pOgorICAg
ICAgICAqIHJ1bnRpbWUvQXJndW1lbnRzLmNwcDoKKyAgICAgICAgKEpTQzo6QXJndW1lbnRzOjpn
ZXRPd25Qcm9wZXJ0eVNsb3QpOgorICAgICAgICAoSlNDOjpBcmd1bWVudHM6OmdldE93blByb3Bl
cnR5RGVzY3JpcHRvcik6CisgICAgICAgIChKU0M6OkFyZ3VtZW50czo6cHV0KToKKyAgICAgICAg
KEpTQzo6QXJndW1lbnRzOjpkZWxldGVQcm9wZXJ0eSk6CisgICAgICAgIChKU0M6OkFyZ3VtZW50
czo6ZGVmaW5lT3duUHJvcGVydHkpOgorICAgICAgICAqIHJ1bnRpbWUvQXJndW1lbnRzLmg6Cisg
ICAgICAgIChBcmd1bWVudHMpOgorICAgICAgICAqIHJ1bnRpbWUvQXJyYXlDb25zdHJ1Y3Rvci5j
cHA6CisgICAgICAgIChKU0M6OkFycmF5Q29uc3RydWN0b3I6OmZpbmlzaENyZWF0aW9uKToKKyAg
ICAgICAgKEpTQzo6QXJyYXlDb25zdHJ1Y3Rvcjo6Z2V0T3duUHJvcGVydHlTbG90KToKKyAgICAg
ICAgKEpTQzo6QXJyYXlDb25zdHJ1Y3Rvcjo6Z2V0T3duUHJvcGVydHlEZXNjcmlwdG9yKToKKyAg
ICAgICAgKiBydW50aW1lL0FycmF5Q29uc3RydWN0b3IuaDoKKyAgICAgICAgKEFycmF5Q29uc3Ry
dWN0b3IpOgorICAgICAgICAqIHJ1bnRpbWUvQXJyYXlQcm90b3R5cGUuY3BwOgorICAgICAgICAo
SlNDOjpBcnJheVByb3RvdHlwZTo6Z2V0T3duUHJvcGVydHlTbG90KToKKyAgICAgICAgKEpTQzo6
QXJyYXlQcm90b3R5cGU6OmdldE93blByb3BlcnR5RGVzY3JpcHRvcik6CisgICAgICAgIChKU0M6
OnB1dFByb3BlcnR5KToKKyAgICAgICAgKiBydW50aW1lL0FycmF5UHJvdG90eXBlLmg6CisgICAg
ICAgIChBcnJheVByb3RvdHlwZSk6CisgICAgICAgICogcnVudGltZS9Cb29sZWFuQ29uc3RydWN0
b3IuY3BwOgorICAgICAgICAoSlNDOjpCb29sZWFuQ29uc3RydWN0b3I6OmZpbmlzaENyZWF0aW9u
KToKKyAgICAgICAgKiBydW50aW1lL0Jvb2xlYW5Qcm90b3R5cGUuY3BwOgorICAgICAgICAoSlND
OjpCb29sZWFuUHJvdG90eXBlOjpnZXRPd25Qcm9wZXJ0eVNsb3QpOgorICAgICAgICAoSlNDOjpC
b29sZWFuUHJvdG90eXBlOjpnZXRPd25Qcm9wZXJ0eURlc2NyaXB0b3IpOgorICAgICAgICAqIHJ1
bnRpbWUvQm9vbGVhblByb3RvdHlwZS5oOgorICAgICAgICAoQm9vbGVhblByb3RvdHlwZSk6Cisg
ICAgICAgICogcnVudGltZS9DbGFzc0luZm8uaDoKKyAgICAgICAgKE1ldGhvZFRhYmxlKToKKyAg
ICAgICAgKiBydW50aW1lL0RhdGVDb25zdHJ1Y3Rvci5jcHA6CisgICAgICAgIChKU0M6OkRhdGVD
b25zdHJ1Y3Rvcjo6ZmluaXNoQ3JlYXRpb24pOgorICAgICAgICAoSlNDOjpEYXRlQ29uc3RydWN0
b3I6OmdldE93blByb3BlcnR5U2xvdCk6CisgICAgICAgIChKU0M6OkRhdGVDb25zdHJ1Y3Rvcjo6
Z2V0T3duUHJvcGVydHlEZXNjcmlwdG9yKToKKyAgICAgICAgKiBydW50aW1lL0RhdGVDb25zdHJ1
Y3Rvci5oOgorICAgICAgICAoRGF0ZUNvbnN0cnVjdG9yKToKKyAgICAgICAgKiBydW50aW1lL0Rh
dGVQcm90b3R5cGUuY3BwOgorICAgICAgICAoSlNDOjpEYXRlUHJvdG90eXBlOjpnZXRPd25Qcm9w
ZXJ0eVNsb3QpOgorICAgICAgICAoSlNDOjpEYXRlUHJvdG90eXBlOjpnZXRPd25Qcm9wZXJ0eURl
c2NyaXB0b3IpOgorICAgICAgICAqIHJ1bnRpbWUvRGF0ZVByb3RvdHlwZS5oOgorICAgICAgICAo
RGF0ZVByb3RvdHlwZSk6CisgICAgICAgICogcnVudGltZS9FcnJvci5oOgorICAgICAgICAoSlND
OjpTdHJpY3RNb2RlVHlwZUVycm9yRnVuY3Rpb246OmNyZWF0ZSk6CisgICAgICAgICogcnVudGlt
ZS9FcnJvckNvbnN0cnVjdG9yLmNwcDoKKyAgICAgICAgKEpTQzo6RXJyb3JDb25zdHJ1Y3Rvcjo6
ZmluaXNoQ3JlYXRpb24pOgorICAgICAgICAqIHJ1bnRpbWUvRXJyb3JQcm90b3R5cGUuY3BwOgor
ICAgICAgICAoSlNDOjpFcnJvclByb3RvdHlwZTo6Z2V0T3duUHJvcGVydHlTbG90KToKKyAgICAg
ICAgKEpTQzo6RXJyb3JQcm90b3R5cGU6OmdldE93blByb3BlcnR5RGVzY3JpcHRvcik6CisgICAg
ICAgICogcnVudGltZS9FcnJvclByb3RvdHlwZS5oOgorICAgICAgICAoRXJyb3JQcm90b3R5cGUp
OgorICAgICAgICAqIHJ1bnRpbWUvRnVuY3Rpb25Db25zdHJ1Y3Rvci5jcHA6CisgICAgICAgIChK
U0M6OkZ1bmN0aW9uQ29uc3RydWN0b3I6OmZpbmlzaENyZWF0aW9uKToKKyAgICAgICAgKiBydW50
aW1lL0Z1bmN0aW9uUHJvdG90eXBlLmNwcDoKKyAgICAgICAgKEpTQzo6RnVuY3Rpb25Qcm90b3R5
cGU6OmZpbmlzaENyZWF0aW9uKToKKyAgICAgICAgKEpTQzo6RnVuY3Rpb25Qcm90b3R5cGU6OmFk
ZEZ1bmN0aW9uUHJvcGVydGllcyk6CisgICAgICAgIChKU0M6OmZ1bmN0aW9uUHJvdG9GdW5jQmlu
ZCk6CisgICAgICAgICogcnVudGltZS9GdW5jdGlvblByb3RvdHlwZS5oOgorICAgICAgICAoSlND
OjpGdW5jdGlvblByb3RvdHlwZTo6Y3JlYXRlKToKKyAgICAgICAgKEZ1bmN0aW9uUHJvdG90eXBl
KToKKyAgICAgICAgKiBydW50aW1lL0lkZW50aWZpZXIuY3BwOgorICAgICAgICAoSlNDKToKKyAg
ICAgICAgKiBydW50aW1lL0lkZW50aWZpZXIuaDoKKyAgICAgICAgKElkZW50aWZpZXIpOgorICAg
ICAgICAqIHJ1bnRpbWUvSW50ZXJuYWxGdW5jdGlvbi5jcHA6CisgICAgICAgIChKU0M6OkludGVy
bmFsRnVuY3Rpb246OmZpbmlzaENyZWF0aW9uKToKKyAgICAgICAgKiBydW50aW1lL0ludGVybmFs
RnVuY3Rpb24uaDoKKyAgICAgICAgKEludGVybmFsRnVuY3Rpb24pOgorICAgICAgICAqIHJ1bnRp
bWUvSlNBY3RpdmF0aW9uLmNwcDoKKyAgICAgICAgKEpTQzo6SlNBY3RpdmF0aW9uOjpzeW1ib2xU
YWJsZUdldCk6CisgICAgICAgIChKU0M6OkpTQWN0aXZhdGlvbjo6c3ltYm9sVGFibGVQdXQpOgor
ICAgICAgICAoSlNDOjpKU0FjdGl2YXRpb246OnN5bWJvbFRhYmxlUHV0V2l0aEF0dHJpYnV0ZXMp
OgorICAgICAgICAoSlNDOjpKU0FjdGl2YXRpb246OmdldE93blByb3BlcnR5U2xvdCk6CisgICAg
ICAgIChKU0M6OkpTQWN0aXZhdGlvbjo6cHV0KToKKyAgICAgICAgKEpTQzo6SlNBY3RpdmF0aW9u
OjpwdXREaXJlY3RWaXJ0dWFsKToKKyAgICAgICAgKEpTQzo6SlNBY3RpdmF0aW9uOjpkZWxldGVQ
cm9wZXJ0eSk6CisgICAgICAgIChKU0M6OkpTQWN0aXZhdGlvbjo6YXJndW1lbnRzR2V0dGVyKToK
KyAgICAgICAgKiBydW50aW1lL0pTQWN0aXZhdGlvbi5oOgorICAgICAgICAoSlNBY3RpdmF0aW9u
KToKKyAgICAgICAgKiBydW50aW1lL0pTQXJyYXkuY3BwOgorICAgICAgICAoSlNDOjpKU0FycmF5
OjpkZWZpbmVPd25Qcm9wZXJ0eSk6CisgICAgICAgIChKU0M6OkpTQXJyYXk6OmdldE93blByb3Bl
cnR5U2xvdCk6CisgICAgICAgIChKU0M6OkpTQXJyYXk6OmdldE93blByb3BlcnR5RGVzY3JpcHRv
cik6CisgICAgICAgIChKU0M6OkpTQXJyYXk6OnB1dCk6CisgICAgICAgIChKU0M6OkpTQXJyYXk6
OmRlbGV0ZVByb3BlcnR5KToKKyAgICAgICAgKiBydW50aW1lL0pTQXJyYXkuaDoKKyAgICAgICAg
KEpTQXJyYXkpOgorICAgICAgICAoSlNDKToKKyAgICAgICAgKiBydW50aW1lL0pTQm91bmRGdW5j
dGlvbi5jcHA6CisgICAgICAgIChKU0M6OkpTQm91bmRGdW5jdGlvbjo6Y3JlYXRlKToKKyAgICAg
ICAgKEpTQzo6SlNCb3VuZEZ1bmN0aW9uOjpmaW5pc2hDcmVhdGlvbik6CisgICAgICAgICogcnVu
dGltZS9KU0JvdW5kRnVuY3Rpb24uaDoKKyAgICAgICAgKEpTQm91bmRGdW5jdGlvbik6CisgICAg
ICAgICogcnVudGltZS9KU0NlbGwuY3BwOgorICAgICAgICAoSlNDOjpKU0NlbGw6OmdldE93blBy
b3BlcnR5U2xvdCk6CisgICAgICAgIChKU0M6OkpTQ2VsbDo6cHV0KToKKyAgICAgICAgKEpTQzo6
SlNDZWxsOjpkZWxldGVQcm9wZXJ0eSk6CisgICAgICAgIChKU0M6OkpTQ2VsbDo6cHV0RGlyZWN0
VmlydHVhbCk6CisgICAgICAgIChKU0M6OkpTQ2VsbDo6ZGVmaW5lT3duUHJvcGVydHkpOgorICAg
ICAgICAoSlNDOjpKU0NlbGw6OmdldE93blByb3BlcnR5RGVzY3JpcHRvcik6CisgICAgICAgICog
cnVudGltZS9KU0NlbGwuaDoKKyAgICAgICAgKEpTQ2VsbCk6CisgICAgICAgICogcnVudGltZS9K
U0Z1bmN0aW9uLmNwcDoKKyAgICAgICAgKEpTQzo6SlNGdW5jdGlvbjo6Y3JlYXRlKToKKyAgICAg
ICAgKEpTQzo6SlNGdW5jdGlvbjo6ZmluaXNoQ3JlYXRpb24pOgorICAgICAgICAoSlNDOjpKU0Z1
bmN0aW9uOjphcmd1bWVudHNHZXR0ZXIpOgorICAgICAgICAoSlNDOjpKU0Z1bmN0aW9uOjpjYWxs
ZXJHZXR0ZXIpOgorICAgICAgICAoSlNDOjpKU0Z1bmN0aW9uOjpsZW5ndGhHZXR0ZXIpOgorICAg
ICAgICAoSlNDOjpKU0Z1bmN0aW9uOjpnZXRPd25Qcm9wZXJ0eVNsb3QpOgorICAgICAgICAoSlND
OjpKU0Z1bmN0aW9uOjpnZXRPd25Qcm9wZXJ0eURlc2NyaXB0b3IpOgorICAgICAgICAoSlNDOjpK
U0Z1bmN0aW9uOjpwdXQpOgorICAgICAgICAoSlNDOjpKU0Z1bmN0aW9uOjpkZWxldGVQcm9wZXJ0
eSk6CisgICAgICAgIChKU0M6OkpTRnVuY3Rpb246OmRlZmluZU93blByb3BlcnR5KToKKyAgICAg
ICAgKEpTQzo6Z2V0Q2FsY3VsYXRlZERpc3BsYXlOYW1lKToKKyAgICAgICAgKiBydW50aW1lL0pT
RnVuY3Rpb24uaDoKKyAgICAgICAgKEpTRnVuY3Rpb24pOgorICAgICAgICAqIHJ1bnRpbWUvSlNH
bG9iYWxPYmplY3QuY3BwOgorICAgICAgICAoSlNDOjpKU0dsb2JhbE9iamVjdDo6cHV0KToKKyAg
ICAgICAgKEpTQzo6SlNHbG9iYWxPYmplY3Q6OnB1dERpcmVjdFZpcnR1YWwpOgorICAgICAgICAo
SlNDOjpKU0dsb2JhbE9iamVjdDo6ZGVmaW5lT3duUHJvcGVydHkpOgorICAgICAgICAoSlNDOjpK
U0dsb2JhbE9iamVjdDo6cmVzZXQpOgorICAgICAgICAoSlNDOjpKU0dsb2JhbE9iamVjdDo6Y3Jl
YXRlVGhyb3dUeXBlRXJyb3IpOgorICAgICAgICAoSlNDOjpKU0dsb2JhbE9iamVjdDo6Z2V0T3du
UHJvcGVydHlTbG90KToKKyAgICAgICAgKEpTQzo6SlNHbG9iYWxPYmplY3Q6OmdldE93blByb3Bl
cnR5RGVzY3JpcHRvcik6CisgICAgICAgICogcnVudGltZS9KU0dsb2JhbE9iamVjdC5oOgorICAg
ICAgICAoSlNHbG9iYWxPYmplY3QpOgorICAgICAgICAoSlNDOjpKU0dsb2JhbE9iamVjdDo6aGFz
T3duUHJvcGVydHlGb3JXcml0ZSk6CisgICAgICAgIChKU0M6OkpTR2xvYmFsT2JqZWN0OjpzeW1i
b2xUYWJsZUhhc1Byb3BlcnR5KToKKyAgICAgICAgKiBydW50aW1lL0pTTm90QW5PYmplY3QuY3Bw
OgorICAgICAgICAoSlNDOjpKU05vdEFuT2JqZWN0OjpnZXRPd25Qcm9wZXJ0eVNsb3QpOgorICAg
ICAgICAoSlNDOjpKU05vdEFuT2JqZWN0OjpnZXRPd25Qcm9wZXJ0eURlc2NyaXB0b3IpOgorICAg
ICAgICAoSlNDOjpKU05vdEFuT2JqZWN0OjpwdXQpOgorICAgICAgICAoSlNDOjpKU05vdEFuT2Jq
ZWN0OjpkZWxldGVQcm9wZXJ0eSk6CisgICAgICAgICogcnVudGltZS9KU05vdEFuT2JqZWN0Lmg6
CisgICAgICAgIChKU05vdEFuT2JqZWN0KToKKyAgICAgICAgKiBydW50aW1lL0pTT05PYmplY3Qu
Y3BwOgorICAgICAgICAoSlNDOjpKU09OT2JqZWN0OjpnZXRPd25Qcm9wZXJ0eVNsb3QpOgorICAg
ICAgICAoSlNDOjpKU09OT2JqZWN0OjpnZXRPd25Qcm9wZXJ0eURlc2NyaXB0b3IpOgorICAgICAg
ICAqIHJ1bnRpbWUvSlNPTk9iamVjdC5oOgorICAgICAgICAoSlNPTk9iamVjdCk6CisgICAgICAg
ICogcnVudGltZS9KU09iamVjdC5jcHA6CisgICAgICAgIChKU0M6OkpTT2JqZWN0OjpwdXQpOgor
ICAgICAgICAoSlNDOjpKU09iamVjdDo6cHV0RGlyZWN0VmlydHVhbCk6CisgICAgICAgIChKU0M6
OkpTT2JqZWN0OjpwdXREaXJlY3RBY2Nlc3Nvcik6CisgICAgICAgIChKU0M6OkpTT2JqZWN0Ojpo
YXNQcm9wZXJ0eSk6CisgICAgICAgIChKU0M6OkpTT2JqZWN0OjpkZWxldGVQcm9wZXJ0eSk6Cisg
ICAgICAgIChKU0M6OkpTT2JqZWN0OjpoYXNPd25Qcm9wZXJ0eSk6CisgICAgICAgIChKU0M6OmNh
bGxEZWZhdWx0VmFsdWVGdW5jdGlvbik6CisgICAgICAgIChKU0M6OkpTT2JqZWN0OjpmaW5kUHJv
cGVydHlIYXNoRW50cnkpOgorICAgICAgICAoSlNDOjpKU09iamVjdDo6Z2V0UHJvcGVydHlTcGVj
aWZpY1ZhbHVlKToKKyAgICAgICAgKEpTQzo6SlNPYmplY3Q6OnJlbW92ZURpcmVjdCk6CisgICAg
ICAgIChKU0M6OkpTT2JqZWN0OjpnZXRPd25Qcm9wZXJ0eURlc2NyaXB0b3IpOgorICAgICAgICAo
SlNDOjpKU09iamVjdDo6Z2V0UHJvcGVydHlEZXNjcmlwdG9yKToKKyAgICAgICAgKEpTQzo6cHV0
RGVzY3JpcHRvcik6CisgICAgICAgIChKU0M6OkpTT2JqZWN0OjpkZWZpbmVPd25Qcm9wZXJ0eSk6
CisgICAgICAgICogcnVudGltZS9KU09iamVjdC5oOgorICAgICAgICAoSlNPYmplY3QpOgorICAg
ICAgICAoSlNDOjpKU09iamVjdDo6Z2V0RGlyZWN0KToKKyAgICAgICAgKEpTQzo6SlNPYmplY3Q6
OmdldERpcmVjdExvY2F0aW9uKToKKyAgICAgICAgKEpTQzo6SlNPYmplY3Q6OmlubGluZUdldE93
blByb3BlcnR5U2xvdCk6CisgICAgICAgIChKU0M6OkpTT2JqZWN0OjpnZXRPd25Qcm9wZXJ0eVNs
b3QpOgorICAgICAgICAoSlNDOjpKU0NlbGw6OmZhc3RHZXRPd25Qcm9wZXJ0eVNsb3QpOgorICAg
ICAgICAoSlNDOjpKU09iamVjdDo6Z2V0UHJvcGVydHlTbG90KToKKyAgICAgICAgKEpTQzo6SlNP
YmplY3Q6OmdldCk6CisgICAgICAgIChKU0M6OkpTT2JqZWN0OjpwdXREaXJlY3RJbnRlcm5hbCk6
CisgICAgICAgIChKU0M6OkpTT2JqZWN0OjpwdXRPd25EYXRhUHJvcGVydHkpOgorICAgICAgICAo
SlNDOjpKU09iamVjdDo6cHV0RGlyZWN0KToKKyAgICAgICAgKEpTQzo6SlNPYmplY3Q6OnB1dERp
cmVjdFdpdGhvdXRUcmFuc2l0aW9uKToKKyAgICAgICAgKEpTQzo6SlNWYWx1ZTo6Z2V0KToKKyAg
ICAgICAgKEpTQzo6SlNWYWx1ZTo6cHV0KToKKyAgICAgICAgKiBydW50aW1lL0pTU3RhdGljU2Nv
cGVPYmplY3QuY3BwOgorICAgICAgICAoSlNDOjpKU1N0YXRpY1Njb3BlT2JqZWN0OjpwdXQpOgor
ICAgICAgICAoSlNDOjpKU1N0YXRpY1Njb3BlT2JqZWN0OjpwdXREaXJlY3RWaXJ0dWFsKToKKyAg
ICAgICAgKEpTQzo6SlNTdGF0aWNTY29wZU9iamVjdDo6Z2V0T3duUHJvcGVydHlTbG90KToKKyAg
ICAgICAgKiBydW50aW1lL0pTU3RhdGljU2NvcGVPYmplY3QuaDoKKyAgICAgICAgKEpTU3RhdGlj
U2NvcGVPYmplY3QpOgorICAgICAgICAqIHJ1bnRpbWUvSlNTdHJpbmcuY3BwOgorICAgICAgICAo
SlNDOjpKU1N0cmluZzo6Z2V0T3duUHJvcGVydHlTbG90KToKKyAgICAgICAgKEpTQzo6SlNTdHJp
bmc6OmdldFN0cmluZ1Byb3BlcnR5RGVzY3JpcHRvcik6CisgICAgICAgICogcnVudGltZS9KU1N0
cmluZy5oOgorICAgICAgICAoSlNTdHJpbmcpOgorICAgICAgICAoSlNDOjpKU1N0cmluZzo6Z2V0
U3RyaW5nUHJvcGVydHlTbG90KToKKyAgICAgICAgKiBydW50aW1lL0pTVmFsdWUuY3BwOgorICAg
ICAgICAoSlNDOjpKU1ZhbHVlOjpwdXRUb1ByaW1pdGl2ZSk6CisgICAgICAgICogcnVudGltZS9K
U1ZhbHVlLmg6CisgICAgICAgIChKU0MpOgorICAgICAgICAoSlNWYWx1ZSk6CisgICAgICAgICog
cnVudGltZS9KU1ZhcmlhYmxlT2JqZWN0LmNwcDoKKyAgICAgICAgKEpTQzo6SlNWYXJpYWJsZU9i
amVjdDo6ZGVsZXRlUHJvcGVydHkpOgorICAgICAgICAoSlNDOjpKU1ZhcmlhYmxlT2JqZWN0Ojpz
eW1ib2xUYWJsZUdldCk6CisgICAgICAgIChKU0M6OkpTVmFyaWFibGVPYmplY3Q6OnB1dERpcmVj
dFZpcnR1YWwpOgorICAgICAgICAqIHJ1bnRpbWUvSlNWYXJpYWJsZU9iamVjdC5oOgorICAgICAg
ICAoSlNWYXJpYWJsZU9iamVjdCk6CisgICAgICAgIChKU0M6OkpTVmFyaWFibGVPYmplY3Q6OnN5
bWJvbFRhYmxlR2V0KToKKyAgICAgICAgKEpTQzo6SlNWYXJpYWJsZU9iamVjdDo6c3ltYm9sVGFi
bGVQdXQpOgorICAgICAgICAoSlNDOjpKU1ZhcmlhYmxlT2JqZWN0OjpzeW1ib2xUYWJsZVB1dFdp
dGhBdHRyaWJ1dGVzKToKKyAgICAgICAgKiBydW50aW1lL0xvb2t1cC5jcHA6CisgICAgICAgIChK
U0M6OnNldFVwU3RhdGljRnVuY3Rpb25TbG90KToKKyAgICAgICAgKiBydW50aW1lL0xvb2t1cC5o
OgorICAgICAgICAoSlNDOjpIYXNoVGFibGU6OmVudHJ5KToKKyAgICAgICAgKEpTQyk6CisgICAg
ICAgIChKU0M6OmdldFN0YXRpY1Byb3BlcnR5U2xvdCk6CisgICAgICAgIChKU0M6OmdldFN0YXRp
Y1Byb3BlcnR5RGVzY3JpcHRvcik6CisgICAgICAgIChKU0M6OmdldFN0YXRpY0Z1bmN0aW9uU2xv
dCk6CisgICAgICAgIChKU0M6OmdldFN0YXRpY0Z1bmN0aW9uRGVzY3JpcHRvcik6CisgICAgICAg
IChKU0M6OmdldFN0YXRpY1ZhbHVlU2xvdCk6CisgICAgICAgIChKU0M6OmdldFN0YXRpY1ZhbHVl
RGVzY3JpcHRvcik6CisgICAgICAgIChKU0M6Omxvb2t1cFB1dCk6CisgICAgICAgICogcnVudGlt
ZS9NYXRoT2JqZWN0LmNwcDoKKyAgICAgICAgKEpTQzo6TWF0aE9iamVjdDo6Z2V0T3duUHJvcGVy
dHlTbG90KToKKyAgICAgICAgKEpTQzo6TWF0aE9iamVjdDo6Z2V0T3duUHJvcGVydHlEZXNjcmlw
dG9yKToKKyAgICAgICAgKiBydW50aW1lL01hdGhPYmplY3QuaDoKKyAgICAgICAgKE1hdGhPYmpl
Y3QpOgorICAgICAgICAqIHJ1bnRpbWUvTmF0aXZlRXJyb3JDb25zdHJ1Y3Rvci5oOgorICAgICAg
ICAoSlNDOjpOYXRpdmVFcnJvckNvbnN0cnVjdG9yOjpmaW5pc2hDcmVhdGlvbik6CisgICAgICAg
ICogcnVudGltZS9OdW1iZXJDb25zdHJ1Y3Rvci5jcHA6CisgICAgICAgIChKU0MpOgorICAgICAg
ICAoSlNDOjpOdW1iZXJDb25zdHJ1Y3Rvcjo6ZmluaXNoQ3JlYXRpb24pOgorICAgICAgICAoSlND
OjpOdW1iZXJDb25zdHJ1Y3Rvcjo6Z2V0T3duUHJvcGVydHlTbG90KToKKyAgICAgICAgKEpTQzo6
TnVtYmVyQ29uc3RydWN0b3I6OmdldE93blByb3BlcnR5RGVzY3JpcHRvcik6CisgICAgICAgIChK
U0M6Ok51bWJlckNvbnN0cnVjdG9yOjpwdXQpOgorICAgICAgICAoSlNDOjpudW1iZXJDb25zdHJ1
Y3Rvck5hTlZhbHVlKToKKyAgICAgICAgKEpTQzo6bnVtYmVyQ29uc3RydWN0b3JOZWdJbmZpbml0
eSk6CisgICAgICAgIChKU0M6Om51bWJlckNvbnN0cnVjdG9yUG9zSW5maW5pdHkpOgorICAgICAg
ICAoSlNDOjpudW1iZXJDb25zdHJ1Y3Rvck1heFZhbHVlKToKKyAgICAgICAgKEpTQzo6bnVtYmVy
Q29uc3RydWN0b3JNaW5WYWx1ZSk6CisgICAgICAgICogcnVudGltZS9OdW1iZXJDb25zdHJ1Y3Rv
ci5oOgorICAgICAgICAoTnVtYmVyQ29uc3RydWN0b3IpOgorICAgICAgICAqIHJ1bnRpbWUvTnVt
YmVyUHJvdG90eXBlLmNwcDoKKyAgICAgICAgKEpTQzo6TnVtYmVyUHJvdG90eXBlOjpnZXRPd25Q
cm9wZXJ0eVNsb3QpOgorICAgICAgICAoSlNDOjpOdW1iZXJQcm90b3R5cGU6OmdldE93blByb3Bl
cnR5RGVzY3JpcHRvcik6CisgICAgICAgICogcnVudGltZS9OdW1iZXJQcm90b3R5cGUuaDoKKyAg
ICAgICAgKE51bWJlclByb3RvdHlwZSk6CisgICAgICAgICogcnVudGltZS9PYmplY3RDb25zdHJ1
Y3Rvci5jcHA6CisgICAgICAgIChKU0M6Ok9iamVjdENvbnN0cnVjdG9yOjpmaW5pc2hDcmVhdGlv
bik6CisgICAgICAgIChKU0M6Ok9iamVjdENvbnN0cnVjdG9yOjpnZXRPd25Qcm9wZXJ0eVNsb3Qp
OgorICAgICAgICAoSlNDOjpPYmplY3RDb25zdHJ1Y3Rvcjo6Z2V0T3duUHJvcGVydHlEZXNjcmlw
dG9yKToKKyAgICAgICAgKiBydW50aW1lL09iamVjdENvbnN0cnVjdG9yLmg6CisgICAgICAgIChP
YmplY3RDb25zdHJ1Y3Rvcik6CisgICAgICAgICogcnVudGltZS9PYmplY3RQcm90b3R5cGUuY3Bw
OgorICAgICAgICAoSlNDOjpPYmplY3RQcm90b3R5cGU6OnB1dCk6CisgICAgICAgIChKU0M6Ok9i
amVjdFByb3RvdHlwZTo6ZGVmaW5lT3duUHJvcGVydHkpOgorICAgICAgICAoSlNDOjpPYmplY3RQ
cm90b3R5cGU6OmdldE93blByb3BlcnR5U2xvdCk6CisgICAgICAgIChKU0M6Ok9iamVjdFByb3Rv
dHlwZTo6Z2V0T3duUHJvcGVydHlEZXNjcmlwdG9yKToKKyAgICAgICAgKiBydW50aW1lL09iamVj
dFByb3RvdHlwZS5oOgorICAgICAgICAoT2JqZWN0UHJvdG90eXBlKToKKyAgICAgICAgKiBydW50
aW1lL1Byb3BlcnR5U2xvdC5oOgorICAgICAgICAoUHJvcGVydHlTbG90KToKKyAgICAgICAgKEpT
Qzo6UHJvcGVydHlTbG90OjpnZXRWYWx1ZSk6CisgICAgICAgICogcnVudGltZS9SZWdFeHBDb25z
dHJ1Y3Rvci5jcHA6CisgICAgICAgIChKU0MpOgorICAgICAgICAoSlNDOjpSZWdFeHBDb25zdHJ1
Y3Rvcjo6ZmluaXNoQ3JlYXRpb24pOgorICAgICAgICAoSlNDOjpSZWdFeHBDb25zdHJ1Y3Rvcjo6
Z2V0T3duUHJvcGVydHlTbG90KToKKyAgICAgICAgKEpTQzo6UmVnRXhwQ29uc3RydWN0b3I6Omdl
dE93blByb3BlcnR5RGVzY3JpcHRvcik6CisgICAgICAgIChKU0M6OnJlZ0V4cENvbnN0cnVjdG9y
RG9sbGFyMSk6CisgICAgICAgIChKU0M6OnJlZ0V4cENvbnN0cnVjdG9yRG9sbGFyMik6CisgICAg
ICAgIChKU0M6OnJlZ0V4cENvbnN0cnVjdG9yRG9sbGFyMyk6CisgICAgICAgIChKU0M6OnJlZ0V4
cENvbnN0cnVjdG9yRG9sbGFyNCk6CisgICAgICAgIChKU0M6OnJlZ0V4cENvbnN0cnVjdG9yRG9s
bGFyNSk6CisgICAgICAgIChKU0M6OnJlZ0V4cENvbnN0cnVjdG9yRG9sbGFyNik6CisgICAgICAg
IChKU0M6OnJlZ0V4cENvbnN0cnVjdG9yRG9sbGFyNyk6CisgICAgICAgIChKU0M6OnJlZ0V4cENv
bnN0cnVjdG9yRG9sbGFyOCk6CisgICAgICAgIChKU0M6OnJlZ0V4cENvbnN0cnVjdG9yRG9sbGFy
OSk6CisgICAgICAgIChKU0M6OnJlZ0V4cENvbnN0cnVjdG9ySW5wdXQpOgorICAgICAgICAoSlND
OjpyZWdFeHBDb25zdHJ1Y3Rvck11bHRpbGluZSk6CisgICAgICAgIChKU0M6OnJlZ0V4cENvbnN0
cnVjdG9yTGFzdE1hdGNoKToKKyAgICAgICAgKEpTQzo6cmVnRXhwQ29uc3RydWN0b3JMYXN0UGFy
ZW4pOgorICAgICAgICAoSlNDOjpyZWdFeHBDb25zdHJ1Y3RvckxlZnRDb250ZXh0KToKKyAgICAg
ICAgKEpTQzo6cmVnRXhwQ29uc3RydWN0b3JSaWdodENvbnRleHQpOgorICAgICAgICAoSlNDOjpS
ZWdFeHBDb25zdHJ1Y3Rvcjo6cHV0KToKKyAgICAgICAgKiBydW50aW1lL1JlZ0V4cENvbnN0cnVj
dG9yLmg6CisgICAgICAgIChSZWdFeHBDb25zdHJ1Y3Rvcik6CisgICAgICAgICogcnVudGltZS9S
ZWdFeHBNYXRjaGVzQXJyYXkuaDoKKyAgICAgICAgKEpTQzo6UmVnRXhwTWF0Y2hlc0FycmF5Ojpn
ZXRPd25Qcm9wZXJ0eVNsb3QpOgorICAgICAgICAoSlNDOjpSZWdFeHBNYXRjaGVzQXJyYXk6Omdl
dE93blByb3BlcnR5RGVzY3JpcHRvcik6CisgICAgICAgIChKU0M6OlJlZ0V4cE1hdGNoZXNBcnJh
eTo6cHV0KToKKyAgICAgICAgKEpTQzo6UmVnRXhwTWF0Y2hlc0FycmF5OjpkZWxldGVQcm9wZXJ0
eSk6CisgICAgICAgIChKU0M6OlJlZ0V4cE1hdGNoZXNBcnJheTo6ZGVmaW5lT3duUHJvcGVydHkp
OgorICAgICAgICAqIHJ1bnRpbWUvUmVnRXhwT2JqZWN0LmNwcDoKKyAgICAgICAgKEpTQyk6Cisg
ICAgICAgIChKU0M6OlJlZ0V4cE9iamVjdDo6Z2V0T3duUHJvcGVydHlTbG90KToKKyAgICAgICAg
KEpTQzo6UmVnRXhwT2JqZWN0OjpnZXRPd25Qcm9wZXJ0eURlc2NyaXB0b3IpOgorICAgICAgICAo
SlNDOjpSZWdFeHBPYmplY3Q6OmRlbGV0ZVByb3BlcnR5KToKKyAgICAgICAgKEpTQzo6UmVnRXhw
T2JqZWN0OjpkZWZpbmVPd25Qcm9wZXJ0eSk6CisgICAgICAgIChKU0M6OnJlZ0V4cE9iamVjdEds
b2JhbCk6CisgICAgICAgIChKU0M6OnJlZ0V4cE9iamVjdElnbm9yZUNhc2UpOgorICAgICAgICAo
SlNDOjpyZWdFeHBPYmplY3RNdWx0aWxpbmUpOgorICAgICAgICAoSlNDOjpyZWdFeHBPYmplY3RT
b3VyY2UpOgorICAgICAgICAoSlNDOjpSZWdFeHBPYmplY3Q6OnB1dCk6CisgICAgICAgICogcnVu
dGltZS9SZWdFeHBPYmplY3QuaDoKKyAgICAgICAgKFJlZ0V4cE9iamVjdCk6CisgICAgICAgICog
cnVudGltZS9SZWdFeHBQcm90b3R5cGUuY3BwOgorICAgICAgICAoSlNDOjpSZWdFeHBQcm90b3R5
cGU6OmdldE93blByb3BlcnR5U2xvdCk6CisgICAgICAgIChKU0M6OlJlZ0V4cFByb3RvdHlwZTo6
Z2V0T3duUHJvcGVydHlEZXNjcmlwdG9yKToKKyAgICAgICAgKiBydW50aW1lL1JlZ0V4cFByb3Rv
dHlwZS5oOgorICAgICAgICAoUmVnRXhwUHJvdG90eXBlKToKKyAgICAgICAgKiBydW50aW1lL1N0
cmljdEV2YWxBY3RpdmF0aW9uLmNwcDoKKyAgICAgICAgKEpTQzo6U3RyaWN0RXZhbEFjdGl2YXRp
b246OmRlbGV0ZVByb3BlcnR5KToKKyAgICAgICAgKiBydW50aW1lL1N0cmljdEV2YWxBY3RpdmF0
aW9uLmg6CisgICAgICAgIChTdHJpY3RFdmFsQWN0aXZhdGlvbik6CisgICAgICAgICogcnVudGlt
ZS9TdHJpbmdDb25zdHJ1Y3Rvci5jcHA6CisgICAgICAgIChKU0M6OlN0cmluZ0NvbnN0cnVjdG9y
OjpmaW5pc2hDcmVhdGlvbik6CisgICAgICAgIChKU0M6OlN0cmluZ0NvbnN0cnVjdG9yOjpnZXRP
d25Qcm9wZXJ0eVNsb3QpOgorICAgICAgICAoSlNDOjpTdHJpbmdDb25zdHJ1Y3Rvcjo6Z2V0T3du
UHJvcGVydHlEZXNjcmlwdG9yKToKKyAgICAgICAgKiBydW50aW1lL1N0cmluZ0NvbnN0cnVjdG9y
Lmg6CisgICAgICAgIChTdHJpbmdDb25zdHJ1Y3Rvcik6CisgICAgICAgICogcnVudGltZS9TdHJp
bmdPYmplY3QuY3BwOgorICAgICAgICAoSlNDOjpTdHJpbmdPYmplY3Q6OmdldE93blByb3BlcnR5
U2xvdCk6CisgICAgICAgIChKU0M6OlN0cmluZ09iamVjdDo6Z2V0T3duUHJvcGVydHlEZXNjcmlw
dG9yKToKKyAgICAgICAgKEpTQzo6U3RyaW5nT2JqZWN0OjpwdXQpOgorICAgICAgICAoSlNDOjpT
dHJpbmdPYmplY3Q6OmRlZmluZU93blByb3BlcnR5KToKKyAgICAgICAgKEpTQzo6U3RyaW5nT2Jq
ZWN0OjpkZWxldGVQcm9wZXJ0eSk6CisgICAgICAgICogcnVudGltZS9TdHJpbmdPYmplY3QuaDoK
KyAgICAgICAgKFN0cmluZ09iamVjdCk6CisgICAgICAgICogcnVudGltZS9TdHJpbmdQcm90b3R5
cGUuY3BwOgorICAgICAgICAoSlNDOjpTdHJpbmdQcm90b3R5cGU6OmdldE93blByb3BlcnR5U2xv
dCk6CisgICAgICAgIChKU0M6OlN0cmluZ1Byb3RvdHlwZTo6Z2V0T3duUHJvcGVydHlEZXNjcmlw
dG9yKToKKyAgICAgICAgKiBydW50aW1lL1N0cmluZ1Byb3RvdHlwZS5oOgorICAgICAgICAoU3Ry
aW5nUHJvdG90eXBlKToKKyAgICAgICAgKiBydW50aW1lL1N0cnVjdHVyZS5jcHA6CisgICAgICAg
IChKU0M6OlN0cnVjdHVyZTo6ZGVzcGVjaWZ5RGljdGlvbmFyeUZ1bmN0aW9uKToKKyAgICAgICAg
KEpTQzo6U3RydWN0dXJlOjphZGRQcm9wZXJ0eVRyYW5zaXRpb25Ub0V4aXN0aW5nU3RydWN0dXJl
KToKKyAgICAgICAgKEpTQzo6U3RydWN0dXJlOjphZGRQcm9wZXJ0eVRyYW5zaXRpb24pOgorICAg
ICAgICAoSlNDOjpTdHJ1Y3R1cmU6OnJlbW92ZVByb3BlcnR5VHJhbnNpdGlvbik6CisgICAgICAg
IChKU0M6OlN0cnVjdHVyZTo6ZGVzcGVjaWZ5RnVuY3Rpb25UcmFuc2l0aW9uKToKKyAgICAgICAg
KEpTQzo6U3RydWN0dXJlOjphdHRyaWJ1dGVDaGFuZ2VUcmFuc2l0aW9uKToKKyAgICAgICAgKEpT
Qzo6U3RydWN0dXJlOjphZGRQcm9wZXJ0eVdpdGhvdXRUcmFuc2l0aW9uKToKKyAgICAgICAgKEpT
Qzo6U3RydWN0dXJlOjpyZW1vdmVQcm9wZXJ0eVdpdGhvdXRUcmFuc2l0aW9uKToKKyAgICAgICAg
KEpTQzo6U3RydWN0dXJlOjpnZXQpOgorICAgICAgICAoSlNDOjpTdHJ1Y3R1cmU6OmRlc3BlY2lm
eUZ1bmN0aW9uKToKKyAgICAgICAgKEpTQzo6U3RydWN0dXJlOjpwdXRTcGVjaWZpY1ZhbHVlKToK
KyAgICAgICAgKEpTQzo6U3RydWN0dXJlOjpyZW1vdmUpOgorICAgICAgICAqIHJ1bnRpbWUvU3Ry
dWN0dXJlLmg6CisgICAgICAgIChTdHJ1Y3R1cmUpOgorICAgICAgICAoSlNDOjpTdHJ1Y3R1cmU6
OmdldCk6CisKIDIwMTItMDUtMTEgIFNhbSBXZWluaWcgIDxzYW1Ad2Via2l0Lm9yZz4KIAogICAg
ICAgICBGaXggY3Jhc2ggc2VlbiB3aGVuIHJ1bm5pbmcgd2l0aCBsaWJnbWFsbG9jCkluZGV4OiBT
b3VyY2UvSmF2YVNjcmlwdENvcmUvSlNDVHlwZWRBcnJheVN0dWJzLmgKPT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0g
U291cmNlL0phdmFTY3JpcHRDb3JlL0pTQ1R5cGVkQXJyYXlTdHVicy5oCShyZXZpc2lvbiAxMTY2
NjcpCisrKyBTb3VyY2UvSmF2YVNjcmlwdENvcmUvSlNDVHlwZWRBcnJheVN0dWJzLmgJKHdvcmtp
bmcgY29weSkKQEAgLTUyLDEwICs1MiwxMCBAQCBwdWJsaWM6IFwKICAgICAgICAgcmV0dXJuIHB0
cjsgXAogICAgIH1cCiBcCi0gICAgc3RhdGljIGJvb2wgZ2V0T3duUHJvcGVydHlTbG90KEpTQzo6
SlNDZWxsKiwgSlNDOjpFeGVjU3RhdGUqLCBjb25zdCBKU0M6OklkZW50aWZpZXImIHByb3BlcnR5
TmFtZSwgSlNDOjpQcm9wZXJ0eVNsb3QmKTtcCi0gICAgc3RhdGljIGJvb2wgZ2V0T3duUHJvcGVy
dHlEZXNjcmlwdG9yKEpTQzo6SlNPYmplY3QqLCBKU0M6OkV4ZWNTdGF0ZSosIGNvbnN0IEpTQzo6
SWRlbnRpZmllciYgcHJvcGVydHlOYW1lLCBKU0M6OlByb3BlcnR5RGVzY3JpcHRvciYpO1wKKyAg
ICBzdGF0aWMgYm9vbCBnZXRPd25Qcm9wZXJ0eVNsb3QoSlNDOjpKU0NlbGwqLCBKU0M6OkV4ZWNT
dGF0ZSosIEpTQzo6UHJvcGVydHlOYW1lIHByb3BlcnR5TmFtZSwgSlNDOjpQcm9wZXJ0eVNsb3Qm
KTtcCisgICAgc3RhdGljIGJvb2wgZ2V0T3duUHJvcGVydHlEZXNjcmlwdG9yKEpTQzo6SlNPYmpl
Y3QqLCBKU0M6OkV4ZWNTdGF0ZSosIEpTQzo6UHJvcGVydHlOYW1lIHByb3BlcnR5TmFtZSwgSlND
OjpQcm9wZXJ0eURlc2NyaXB0b3ImKTtcCiAgICAgc3RhdGljIGJvb2wgZ2V0T3duUHJvcGVydHlT
bG90QnlJbmRleChKU0M6OkpTQ2VsbCosIEpTQzo6RXhlY1N0YXRlKiwgdW5zaWduZWQgcHJvcGVy
dHlOYW1lLCBKU0M6OlByb3BlcnR5U2xvdCYpO1wKLSAgICBzdGF0aWMgdm9pZCBwdXQoSlNDOjpK
U0NlbGwqLCBKU0M6OkV4ZWNTdGF0ZSosIGNvbnN0IEpTQzo6SWRlbnRpZmllciYgcHJvcGVydHlO
YW1lLCBKU0M6OkpTVmFsdWUsIEpTQzo6UHV0UHJvcGVydHlTbG90Jik7XAorICAgIHN0YXRpYyB2
b2lkIHB1dChKU0M6OkpTQ2VsbCosIEpTQzo6RXhlY1N0YXRlKiwgSlNDOjpQcm9wZXJ0eU5hbWUg
cHJvcGVydHlOYW1lLCBKU0M6OkpTVmFsdWUsIEpTQzo6UHV0UHJvcGVydHlTbG90Jik7XAogICAg
IHN0YXRpYyB2b2lkIHB1dEJ5SW5kZXgoSlNDOjpKU0NlbGwqLCBKU0M6OkV4ZWNTdGF0ZSosIHVu
c2lnbmVkIHByb3BlcnR5TmFtZSwgSlNDOjpKU1ZhbHVlLCBib29sKTtcCiAgICAgc3RhdGljIGNv
bnN0IEpTQzo6Q2xhc3NJbmZvIHNfaW5mbztcCiBcCkBAIC05OCwyNiArOTgsMjYgQEAgdm9pZCBK
UyMjbmFtZSMjQXJyYXk6OmZpbmlzaENyZWF0aW9uKEpTRwogICAgIEFTU0VSVChpbmhlcml0cygm
c19pbmZvKSk7XAogfVwKIFwKLWJvb2wgSlMjI25hbWUjI0FycmF5OjpnZXRPd25Qcm9wZXJ0eVNs
b3QoSlNDZWxsKiBjZWxsLCBFeGVjU3RhdGUqIGV4ZWMsIGNvbnN0IElkZW50aWZpZXImIHByb3Bl
cnR5TmFtZSwgUHJvcGVydHlTbG90JiBzbG90KVwKK2Jvb2wgSlMjI25hbWUjI0FycmF5OjpnZXRP
d25Qcm9wZXJ0eVNsb3QoSlNDZWxsKiBjZWxsLCBFeGVjU3RhdGUqIGV4ZWMsIFByb3BlcnR5TmFt
ZSBwcm9wZXJ0eU5hbWUsIFByb3BlcnR5U2xvdCYgc2xvdClcCiB7XAogICAgIEpTIyNuYW1lIyNB
cnJheSogdGhpc09iamVjdCA9IGpzQ2FzdDxKUyMjbmFtZSMjQXJyYXkqPihjZWxsKTtcCiAgICAg
QVNTRVJUX0dDX09CSkVDVF9JTkhFUklUUyh0aGlzT2JqZWN0LCAmc19pbmZvKTtcCi0gICAgYm9v
bCBvaztcCi0gICAgdW5zaWduZWQgaW5kZXggPSBwcm9wZXJ0eU5hbWUudG9VSW50MzIob2spO1wK
LSAgICBpZiAob2sgJiYgaW5kZXggPCB0aGlzT2JqZWN0LT5tX3N0b3JhZ2VMZW5ndGgpIHtcCisg
ICAgdW5zaWduZWQgaW5kZXggPSBwcm9wZXJ0eU5hbWUuYXNJbmRleCgpO1wKKyAgICBpZiAoaW5k
ZXggPCB0aGlzT2JqZWN0LT5tX3N0b3JhZ2VMZW5ndGgpIHtcCisgICAgICAgIEFTU0VSVChpbmRl
eCAhPSBQcm9wZXJ0eU5hbWU6Ok5vdEFuSW5kZXgpO1wKICAgICAgICAgc2xvdC5zZXRWYWx1ZSh0
aGlzT2JqZWN0LT5nZXRCeUluZGV4KGV4ZWMsIGluZGV4KSk7XAogICAgICAgICByZXR1cm4gdHJ1
ZTtcCiAgICAgfVwKICAgICByZXR1cm4gQmFzZTo6Z2V0T3duUHJvcGVydHlTbG90KGNlbGwsIGV4
ZWMsIHByb3BlcnR5TmFtZSwgc2xvdCk7XAogfVwKIFwKLWJvb2wgSlMjI25hbWUjI0FycmF5Ojpn
ZXRPd25Qcm9wZXJ0eURlc2NyaXB0b3IoSlNPYmplY3QqIG9iamVjdCwgRXhlY1N0YXRlKiBleGVj
LCBjb25zdCBJZGVudGlmaWVyJiBwcm9wZXJ0eU5hbWUsIFByb3BlcnR5RGVzY3JpcHRvciYgZGVz
Y3JpcHRvcilcCitib29sIEpTIyNuYW1lIyNBcnJheTo6Z2V0T3duUHJvcGVydHlEZXNjcmlwdG9y
KEpTT2JqZWN0KiBvYmplY3QsIEV4ZWNTdGF0ZSogZXhlYywgUHJvcGVydHlOYW1lIHByb3BlcnR5
TmFtZSwgUHJvcGVydHlEZXNjcmlwdG9yJiBkZXNjcmlwdG9yKVwKIHtcCiAgICAgSlMjI25hbWUj
I0FycmF5KiB0aGlzT2JqZWN0ID0ganNDYXN0PEpTIyNuYW1lIyNBcnJheSo+KG9iamVjdCk7XAog
ICAgIEFTU0VSVF9HQ19PQkpFQ1RfSU5IRVJJVFModGhpc09iamVjdCwgJnNfaW5mbyk7XAotICAg
IGJvb2wgb2s7XAotICAgIHVuc2lnbmVkIGluZGV4ID0gcHJvcGVydHlOYW1lLnRvVUludDMyKG9r
KTtcCi0gICAgaWYgKG9rICYmIGluZGV4IDwgdGhpc09iamVjdC0+bV9zdG9yYWdlTGVuZ3RoKSB7
XAorICAgIHVuc2lnbmVkIGluZGV4ID0gcHJvcGVydHlOYW1lLmFzSW5kZXgoKTtcCisgICAgaWYg
KGluZGV4IDwgdGhpc09iamVjdC0+bV9zdG9yYWdlTGVuZ3RoKSB7XAorICAgICAgICBBU1NFUlQo
aW5kZXggIT0gUHJvcGVydHlOYW1lOjpOb3RBbkluZGV4KTtcCiAgICAgICAgIGRlc2NyaXB0b3Iu
c2V0RGVzY3JpcHRvcih0aGlzT2JqZWN0LT5nZXRCeUluZGV4KGV4ZWMsIGluZGV4KSwgRG9udERl
bGV0ZSk7XAogICAgICAgICByZXR1cm4gdHJ1ZTtcCiAgICAgfVwKQEAgLTEzNSwxMyArMTM1LDEy
IEBAIGJvb2wgSlMjI25hbWUjI0FycmF5OjpnZXRPd25Qcm9wZXJ0eVNsb3QKICAgICByZXR1cm4g
dGhpc09iamVjdC0+bWV0aG9kVGFibGUoKS0+Z2V0T3duUHJvcGVydHlTbG90KHRoaXNPYmplY3Qs
IGV4ZWMsIElkZW50aWZpZXI6OmZyb20oZXhlYywgcHJvcGVydHlOYW1lKSwgc2xvdCk7XAogfVwK
IFwKLXZvaWQgSlMjI25hbWUjI0FycmF5OjpwdXQoSlNDZWxsKiBjZWxsLCBFeGVjU3RhdGUqIGV4
ZWMsIGNvbnN0IElkZW50aWZpZXImIHByb3BlcnR5TmFtZSwgSlNWYWx1ZSB2YWx1ZSwgUHV0UHJv
cGVydHlTbG90JiBzbG90KVwKK3ZvaWQgSlMjI25hbWUjI0FycmF5OjpwdXQoSlNDZWxsKiBjZWxs
LCBFeGVjU3RhdGUqIGV4ZWMsIFByb3BlcnR5TmFtZSBwcm9wZXJ0eU5hbWUsIEpTVmFsdWUgdmFs
dWUsIFB1dFByb3BlcnR5U2xvdCYgc2xvdClcCiB7XAogICAgIEpTIyNuYW1lIyNBcnJheSogdGhp
c09iamVjdCA9IGpzQ2FzdDxKUyMjbmFtZSMjQXJyYXkqPihjZWxsKTtcCiAgICAgQVNTRVJUX0dD
X09CSkVDVF9JTkhFUklUUyh0aGlzT2JqZWN0LCAmc19pbmZvKTtcCi0gICAgYm9vbCBvaztcCi0g
ICAgdW5zaWduZWQgaW5kZXggPSBwcm9wZXJ0eU5hbWUudG9VSW50MzIob2spO1wKLSAgICBpZiAo
b2spIHtcCisgICAgdW5zaWduZWQgaW5kZXggPSBwcm9wZXJ0eU5hbWUuYXNJbmRleCgpO1wKKyAg
ICBpZiAoaW5kZXggIT0gUHJvcGVydHlOYW1lOjpOb3RBbkluZGV4KSB7XAogICAgICAgICB0aGlz
T2JqZWN0LT5pbmRleFNldHRlcihleGVjLCBpbmRleCwgdmFsdWUpO1wKICAgICAgICAgcmV0dXJu
O1wKICAgICB9XApJbmRleDogU291cmNlL0phdmFTY3JpcHRDb3JlL2pzYy5jcHAKPT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PQotLS0gU291cmNlL0phdmFTY3JpcHRDb3JlL2pzYy5jcHAJKHJldmlzaW9uIDExNjY2NykKKysr
IFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9qc2MuY3BwCSh3b3JraW5nIGNvcHkpCkBAIC0yMTgsMTMg
KzIxOCwxMyBAQCBwcm90ZWN0ZWQ6CiAgICAgdm9pZCBhZGRGdW5jdGlvbihKU0dsb2JhbERhdGEm
IGdsb2JhbERhdGEsIGNvbnN0IGNoYXIqIG5hbWUsIE5hdGl2ZUZ1bmN0aW9uIGZ1bmN0aW9uLCB1
bnNpZ25lZCBhcmd1bWVudHMpCiAgICAgewogICAgICAgICBJZGVudGlmaWVyIGlkZW50aWZpZXIo
Z2xvYmFsRXhlYygpLCBuYW1lKTsKLSAgICAgICAgcHV0RGlyZWN0KGdsb2JhbERhdGEsIGlkZW50
aWZpZXIsIEpTRnVuY3Rpb246OmNyZWF0ZShnbG9iYWxFeGVjKCksIHRoaXMsIGFyZ3VtZW50cywg
aWRlbnRpZmllciwgZnVuY3Rpb24pKTsKKyAgICAgICAgcHV0RGlyZWN0KGdsb2JhbERhdGEsIGlk
ZW50aWZpZXIsIEpTRnVuY3Rpb246OmNyZWF0ZShnbG9iYWxFeGVjKCksIHRoaXMsIGFyZ3VtZW50
cywgaWRlbnRpZmllci51c3RyaW5nKCksIGZ1bmN0aW9uKSk7CiAgICAgfQogICAgIAogICAgIHZv
aWQgYWRkQ29uc3RydWN0YWJsZUZ1bmN0aW9uKEpTR2xvYmFsRGF0YSYgZ2xvYmFsRGF0YSwgY29u
c3QgY2hhciogbmFtZSwgTmF0aXZlRnVuY3Rpb24gZnVuY3Rpb24sIHVuc2lnbmVkIGFyZ3VtZW50
cykKICAgICB7CiAgICAgICAgIElkZW50aWZpZXIgaWRlbnRpZmllcihnbG9iYWxFeGVjKCksIG5h
bWUpOwotICAgICAgICBwdXREaXJlY3QoZ2xvYmFsRGF0YSwgaWRlbnRpZmllciwgSlNGdW5jdGlv
bjo6Y3JlYXRlKGdsb2JhbEV4ZWMoKSwgdGhpcywgYXJndW1lbnRzLCBpZGVudGlmaWVyLCBmdW5j
dGlvbiwgTm9JbnRyaW5zaWMsIGZ1bmN0aW9uKSk7CisgICAgICAgIHB1dERpcmVjdChnbG9iYWxE
YXRhLCBpZGVudGlmaWVyLCBKU0Z1bmN0aW9uOjpjcmVhdGUoZ2xvYmFsRXhlYygpLCB0aGlzLCBh
cmd1bWVudHMsIGlkZW50aWZpZXIudXN0cmluZygpLCBmdW5jdGlvbiwgTm9JbnRyaW5zaWMsIGZ1
bmN0aW9uKSk7CiAgICAgfQogfTsKIENPTVBJTEVfQVNTRVJUKCFJc0ludGVnZXI8R2xvYmFsT2Jq
ZWN0Pjo6dmFsdWUsIFdURl9Jc0ludGVnZXJfR2xvYmFsT2JqZWN0X2ZhbHNlKTsKSW5kZXg6IFNv
dXJjZS9KYXZhU2NyaXB0Q29yZS9BUEkvSlNDYWxsYmFja0Z1bmN0aW9uLmNwcAo9PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
Ci0tLSBTb3VyY2UvSmF2YVNjcmlwdENvcmUvQVBJL0pTQ2FsbGJhY2tGdW5jdGlvbi5jcHAJKHJl
dmlzaW9uIDExNjY2NykKKysrIFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9BUEkvSlNDYWxsYmFja0Z1
bmN0aW9uLmNwcAkod29ya2luZyBjb3B5KQpAQCAtNDksNyArNDksNyBAQCBKU0NhbGxiYWNrRnVu
Y3Rpb246OkpTQ2FsbGJhY2tGdW5jdGlvbihKCiB7CiB9CiAKLXZvaWQgSlNDYWxsYmFja0Z1bmN0
aW9uOjpmaW5pc2hDcmVhdGlvbihKU0dsb2JhbERhdGEmIGdsb2JhbERhdGEsIGNvbnN0IElkZW50
aWZpZXImIG5hbWUpCit2b2lkIEpTQ2FsbGJhY2tGdW5jdGlvbjo6ZmluaXNoQ3JlYXRpb24oSlNH
bG9iYWxEYXRhJiBnbG9iYWxEYXRhLCBjb25zdCBVU3RyaW5nJiBuYW1lKQogewogICAgIEJhc2U6
OmZpbmlzaENyZWF0aW9uKGdsb2JhbERhdGEsIG5hbWUpOwogICAgIEFTU0VSVChpbmhlcml0cygm
c19pbmZvKSk7CkluZGV4OiBTb3VyY2UvSmF2YVNjcmlwdENvcmUvQVBJL0pTQ2FsbGJhY2tGdW5j
dGlvbi5oCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9BUEkvSlNDYWxsYmFj
a0Z1bmN0aW9uLmgJKHJldmlzaW9uIDExNjY2NykKKysrIFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9B
UEkvSlNDYWxsYmFja0Z1bmN0aW9uLmgJKHdvcmtpbmcgY29weSkKQEAgLTM0LDEyICszNCwxMiBA
QCBuYW1lc3BhY2UgSlNDIHsKIGNsYXNzIEpTQ2FsbGJhY2tGdW5jdGlvbiA6IHB1YmxpYyBJbnRl
cm5hbEZ1bmN0aW9uIHsKIHByb3RlY3RlZDoKICAgICBKU0NhbGxiYWNrRnVuY3Rpb24oSlNHbG9i
YWxPYmplY3QqLCBKU09iamVjdENhbGxBc0Z1bmN0aW9uQ2FsbGJhY2spOwotICAgIHZvaWQgZmlu
aXNoQ3JlYXRpb24oSlNHbG9iYWxEYXRhJiwgY29uc3QgSWRlbnRpZmllciYgbmFtZSk7CisgICAg
dm9pZCBmaW5pc2hDcmVhdGlvbihKU0dsb2JhbERhdGEmLCBjb25zdCBVU3RyaW5nJiBuYW1lKTsK
IAogcHVibGljOgogICAgIHR5cGVkZWYgSW50ZXJuYWxGdW5jdGlvbiBCYXNlOwogCi0gICAgc3Rh
dGljIEpTQ2FsbGJhY2tGdW5jdGlvbiogY3JlYXRlKEV4ZWNTdGF0ZSogZXhlYywgSlNHbG9iYWxP
YmplY3QqIGdsb2JhbE9iamVjdCwgSlNPYmplY3RDYWxsQXNGdW5jdGlvbkNhbGxiYWNrIGNhbGxi
YWNrLCBjb25zdCBJZGVudGlmaWVyJiBuYW1lKQorICAgIHN0YXRpYyBKU0NhbGxiYWNrRnVuY3Rp
b24qIGNyZWF0ZShFeGVjU3RhdGUqIGV4ZWMsIEpTR2xvYmFsT2JqZWN0KiBnbG9iYWxPYmplY3Qs
IEpTT2JqZWN0Q2FsbEFzRnVuY3Rpb25DYWxsYmFjayBjYWxsYmFjaywgY29uc3QgVVN0cmluZyYg
bmFtZSkKICAgICB7CiAgICAgICAgIEpTQ2FsbGJhY2tGdW5jdGlvbiogZnVuY3Rpb24gPSBuZXcg
KE5vdE51bGwsIGFsbG9jYXRlQ2VsbDxKU0NhbGxiYWNrRnVuY3Rpb24+KCpleGVjLT5oZWFwKCkp
KSBKU0NhbGxiYWNrRnVuY3Rpb24oZ2xvYmFsT2JqZWN0LCBjYWxsYmFjayk7CiAgICAgICAgIGZ1
bmN0aW9uLT5maW5pc2hDcmVhdGlvbihleGVjLT5nbG9iYWxEYXRhKCksIG5hbWUpOwpJbmRleDog
U291cmNlL0phdmFTY3JpcHRDb3JlL0FQSS9KU0NhbGxiYWNrT2JqZWN0LmgKPT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQot
LS0gU291cmNlL0phdmFTY3JpcHRDb3JlL0FQSS9KU0NhbGxiYWNrT2JqZWN0LmgJKHJldmlzaW9u
IDExNjY2NykKKysrIFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9BUEkvSlNDYWxsYmFja09iamVjdC5o
CSh3b3JraW5nIGNvcHkpCkBAIC0xNzcsMTIgKzE3NywxMiBAQCBwcml2YXRlOgogCiAgICAgc3Rh
dGljIEpTVmFsdWUgZGVmYXVsdFZhbHVlKGNvbnN0IEpTT2JqZWN0KiwgRXhlY1N0YXRlKiwgUHJl
ZmVycmVkUHJpbWl0aXZlVHlwZSk7CiAKLSAgICBzdGF0aWMgYm9vbCBnZXRPd25Qcm9wZXJ0eVNs
b3QoSlNDZWxsKiwgRXhlY1N0YXRlKiwgY29uc3QgSWRlbnRpZmllciYsIFByb3BlcnR5U2xvdCYp
OwotICAgIHN0YXRpYyBib29sIGdldE93blByb3BlcnR5RGVzY3JpcHRvcihKU09iamVjdCosIEV4
ZWNTdGF0ZSosIGNvbnN0IElkZW50aWZpZXImLCBQcm9wZXJ0eURlc2NyaXB0b3ImKTsKKyAgICBz
dGF0aWMgYm9vbCBnZXRPd25Qcm9wZXJ0eVNsb3QoSlNDZWxsKiwgRXhlY1N0YXRlKiwgUHJvcGVy
dHlOYW1lLCBQcm9wZXJ0eVNsb3QmKTsKKyAgICBzdGF0aWMgYm9vbCBnZXRPd25Qcm9wZXJ0eURl
c2NyaXB0b3IoSlNPYmplY3QqLCBFeGVjU3RhdGUqLCBQcm9wZXJ0eU5hbWUsIFByb3BlcnR5RGVz
Y3JpcHRvciYpOwogICAgIAotICAgIHN0YXRpYyB2b2lkIHB1dChKU0NlbGwqLCBFeGVjU3RhdGUq
LCBjb25zdCBJZGVudGlmaWVyJiwgSlNWYWx1ZSwgUHV0UHJvcGVydHlTbG90Jik7CisgICAgc3Rh
dGljIHZvaWQgcHV0KEpTQ2VsbCosIEV4ZWNTdGF0ZSosIFByb3BlcnR5TmFtZSwgSlNWYWx1ZSwg
UHV0UHJvcGVydHlTbG90Jik7CiAKLSAgICBzdGF0aWMgYm9vbCBkZWxldGVQcm9wZXJ0eShKU0Nl
bGwqLCBFeGVjU3RhdGUqLCBjb25zdCBJZGVudGlmaWVyJik7CisgICAgc3RhdGljIGJvb2wgZGVs
ZXRlUHJvcGVydHkoSlNDZWxsKiwgRXhlY1N0YXRlKiwgUHJvcGVydHlOYW1lKTsKICAgICBzdGF0
aWMgYm9vbCBkZWxldGVQcm9wZXJ0eUJ5SW5kZXgoSlNDZWxsKiwgRXhlY1N0YXRlKiwgdW5zaWdu
ZWQpOwogCiAgICAgc3RhdGljIGJvb2wgaGFzSW5zdGFuY2UoSlNPYmplY3QqLCBFeGVjU3RhdGUq
LCBKU1ZhbHVlLCBKU1ZhbHVlIHByb3RvKTsKQEAgLTIwOSw5ICsyMDksOSBAQCBwcml2YXRlOgog
ICAgIHN0YXRpYyBFbmNvZGVkSlNWYWx1ZSBKU0NfSE9TVF9DQUxMIGNhbGwoRXhlY1N0YXRlKik7
CiAgICAgc3RhdGljIEVuY29kZWRKU1ZhbHVlIEpTQ19IT1NUX0NBTEwgY29uc3RydWN0KEV4ZWNT
dGF0ZSopOwogICAgCi0gICAgSlNWYWx1ZSBnZXRTdGF0aWNWYWx1ZShFeGVjU3RhdGUqLCBjb25z
dCBJZGVudGlmaWVyJik7Ci0gICAgc3RhdGljIEpTVmFsdWUgc3RhdGljRnVuY3Rpb25HZXR0ZXIo
RXhlY1N0YXRlKiwgSlNWYWx1ZSwgY29uc3QgSWRlbnRpZmllciYpOwotICAgIHN0YXRpYyBKU1Zh
bHVlIGNhbGxiYWNrR2V0dGVyKEV4ZWNTdGF0ZSosIEpTVmFsdWUsIGNvbnN0IElkZW50aWZpZXIm
KTsKKyAgICBKU1ZhbHVlIGdldFN0YXRpY1ZhbHVlKEV4ZWNTdGF0ZSosIFByb3BlcnR5TmFtZSk7
CisgICAgc3RhdGljIEpTVmFsdWUgc3RhdGljRnVuY3Rpb25HZXR0ZXIoRXhlY1N0YXRlKiwgSlNW
YWx1ZSwgUHJvcGVydHlOYW1lKTsKKyAgICBzdGF0aWMgSlNWYWx1ZSBjYWxsYmFja0dldHRlcihF
eGVjU3RhdGUqLCBKU1ZhbHVlLCBQcm9wZXJ0eU5hbWUpOwogCiAgICAgT3duUHRyPEpTQ2FsbGJh
Y2tPYmplY3REYXRhPiBtX2NhbGxiYWNrT2JqZWN0RGF0YTsKIH07CkluZGV4OiBTb3VyY2UvSmF2
YVNjcmlwdENvcmUvQVBJL0pTQ2FsbGJhY2tPYmplY3RGdW5jdGlvbnMuaAo9PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0t
LSBTb3VyY2UvSmF2YVNjcmlwdENvcmUvQVBJL0pTQ2FsbGJhY2tPYmplY3RGdW5jdGlvbnMuaAko
cmV2aXNpb24gMTE2NjY3KQorKysgU291cmNlL0phdmFTY3JpcHRDb3JlL0FQSS9KU0NhbGxiYWNr
T2JqZWN0RnVuY3Rpb25zLmgJKHdvcmtpbmcgY29weSkKQEAgLTEyMiw3ICsxMjIsNyBAQCBVU3Ry
aW5nIEpTQ2FsbGJhY2tPYmplY3Q8UGFyZW50Pjo6Y2xhc3NOCiB9CiAKIHRlbXBsYXRlIDxjbGFz
cyBQYXJlbnQ+Ci1ib29sIEpTQ2FsbGJhY2tPYmplY3Q8UGFyZW50Pjo6Z2V0T3duUHJvcGVydHlT
bG90KEpTQ2VsbCogY2VsbCwgRXhlY1N0YXRlKiBleGVjLCBjb25zdCBJZGVudGlmaWVyJiBwcm9w
ZXJ0eU5hbWUsIFByb3BlcnR5U2xvdCYgc2xvdCkKK2Jvb2wgSlNDYWxsYmFja09iamVjdDxQYXJl
bnQ+OjpnZXRPd25Qcm9wZXJ0eVNsb3QoSlNDZWxsKiBjZWxsLCBFeGVjU3RhdGUqIGV4ZWMsIFBy
b3BlcnR5TmFtZSBwcm9wZXJ0eU5hbWUsIFByb3BlcnR5U2xvdCYgc2xvdCkKIHsKICAgICBKU0Nh
bGxiYWNrT2JqZWN0KiB0aGlzT2JqZWN0ID0ganNDYXN0PEpTQ2FsbGJhY2tPYmplY3QqPihjZWxs
KTsKICAgICBKU0NvbnRleHRSZWYgY3R4ID0gdG9SZWYoZXhlYyk7CkBAIC0yMDUsNyArMjA1LDcg
QEAgSlNWYWx1ZSBKU0NhbGxiYWNrT2JqZWN0PFBhcmVudD46OmRlZmF1bAogfQogCiB0ZW1wbGF0
ZSA8Y2xhc3MgUGFyZW50PgotYm9vbCBKU0NhbGxiYWNrT2JqZWN0PFBhcmVudD46OmdldE93blBy
b3BlcnR5RGVzY3JpcHRvcihKU09iamVjdCogb2JqZWN0LCBFeGVjU3RhdGUqIGV4ZWMsIGNvbnN0
IElkZW50aWZpZXImIHByb3BlcnR5TmFtZSwgUHJvcGVydHlEZXNjcmlwdG9yJiBkZXNjcmlwdG9y
KQorYm9vbCBKU0NhbGxiYWNrT2JqZWN0PFBhcmVudD46OmdldE93blByb3BlcnR5RGVzY3JpcHRv
cihKU09iamVjdCogb2JqZWN0LCBFeGVjU3RhdGUqIGV4ZWMsIFByb3BlcnR5TmFtZSBwcm9wZXJ0
eU5hbWUsIFByb3BlcnR5RGVzY3JpcHRvciYgZGVzY3JpcHRvcikKIHsKICAgICBKU0NhbGxiYWNr
T2JqZWN0KiB0aGlzT2JqZWN0ID0ganNDYXN0PEpTQ2FsbGJhY2tPYmplY3QqPihvYmplY3QpOwog
ICAgIFByb3BlcnR5U2xvdCBzbG90OwpAQCAtMjI1LDcgKzIyNSw3IEBAIGJvb2wgSlNDYWxsYmFj
a09iamVjdDxQYXJlbnQ+OjpnZXRPd25Qcm8KIH0KIAogdGVtcGxhdGUgPGNsYXNzIFBhcmVudD4K
LXZvaWQgSlNDYWxsYmFja09iamVjdDxQYXJlbnQ+OjpwdXQoSlNDZWxsKiBjZWxsLCBFeGVjU3Rh
dGUqIGV4ZWMsIGNvbnN0IElkZW50aWZpZXImIHByb3BlcnR5TmFtZSwgSlNWYWx1ZSB2YWx1ZSwg
UHV0UHJvcGVydHlTbG90JiBzbG90KQordm9pZCBKU0NhbGxiYWNrT2JqZWN0PFBhcmVudD46OnB1
dChKU0NlbGwqIGNlbGwsIEV4ZWNTdGF0ZSogZXhlYywgUHJvcGVydHlOYW1lIHByb3BlcnR5TmFt
ZSwgSlNWYWx1ZSB2YWx1ZSwgUHV0UHJvcGVydHlTbG90JiBzbG90KQogewogICAgIEpTQ2FsbGJh
Y2tPYmplY3QqIHRoaXNPYmplY3QgPSBqc0Nhc3Q8SlNDYWxsYmFja09iamVjdCo+KGNlbGwpOwog
ICAgIEpTQ29udGV4dFJlZiBjdHggPSB0b1JlZihleGVjKTsKQEAgLTI4NCw3ICsyODQsNyBAQCB2
b2lkIEpTQ2FsbGJhY2tPYmplY3Q8UGFyZW50Pjo6cHV0KEpTQ2VsCiB9CiAKIHRlbXBsYXRlIDxj
bGFzcyBQYXJlbnQ+Ci1ib29sIEpTQ2FsbGJhY2tPYmplY3Q8UGFyZW50Pjo6ZGVsZXRlUHJvcGVy
dHkoSlNDZWxsKiBjZWxsLCBFeGVjU3RhdGUqIGV4ZWMsIGNvbnN0IElkZW50aWZpZXImIHByb3Bl
cnR5TmFtZSkKK2Jvb2wgSlNDYWxsYmFja09iamVjdDxQYXJlbnQ+OjpkZWxldGVQcm9wZXJ0eShK
U0NlbGwqIGNlbGwsIEV4ZWNTdGF0ZSogZXhlYywgUHJvcGVydHlOYW1lIHByb3BlcnR5TmFtZSkK
IHsKICAgICBKU0NhbGxiYWNrT2JqZWN0KiB0aGlzT2JqZWN0ID0ganNDYXN0PEpTQ2FsbGJhY2tP
YmplY3QqPihjZWxsKTsKICAgICBKU0NvbnRleHRSZWYgY3R4ID0gdG9SZWYoZXhlYyk7CkBAIC01
MDQsNyArNTA0LDcgQEAgYm9vbCBKU0NhbGxiYWNrT2JqZWN0PFBhcmVudD46OmluaGVyaXRzKAog
fQogCiB0ZW1wbGF0ZSA8Y2xhc3MgUGFyZW50PgotSlNWYWx1ZSBKU0NhbGxiYWNrT2JqZWN0PFBh
cmVudD46OmdldFN0YXRpY1ZhbHVlKEV4ZWNTdGF0ZSogZXhlYywgY29uc3QgSWRlbnRpZmllciYg
cHJvcGVydHlOYW1lKQorSlNWYWx1ZSBKU0NhbGxiYWNrT2JqZWN0PFBhcmVudD46OmdldFN0YXRp
Y1ZhbHVlKEV4ZWNTdGF0ZSogZXhlYywgUHJvcGVydHlOYW1lIHByb3BlcnR5TmFtZSkKIHsKICAg
ICBKU09iamVjdFJlZiB0aGlzUmVmID0gdG9SZWYodGhpcyk7CiAgICAgUmVmUHRyPE9wYXF1ZUpT
U3RyaW5nPiBwcm9wZXJ0eU5hbWVSZWY7CkBAIC01MzMsNyArNTMzLDcgQEAgSlNWYWx1ZSBKU0Nh
bGxiYWNrT2JqZWN0PFBhcmVudD46OmdldFN0YQogfQogCiB0ZW1wbGF0ZSA8Y2xhc3MgUGFyZW50
PgotSlNWYWx1ZSBKU0NhbGxiYWNrT2JqZWN0PFBhcmVudD46OnN0YXRpY0Z1bmN0aW9uR2V0dGVy
KEV4ZWNTdGF0ZSogZXhlYywgSlNWYWx1ZSBzbG90UGFyZW50LCBjb25zdCBJZGVudGlmaWVyJiBw
cm9wZXJ0eU5hbWUpCitKU1ZhbHVlIEpTQ2FsbGJhY2tPYmplY3Q8UGFyZW50Pjo6c3RhdGljRnVu
Y3Rpb25HZXR0ZXIoRXhlY1N0YXRlKiBleGVjLCBKU1ZhbHVlIHNsb3RQYXJlbnQsIFByb3BlcnR5
TmFtZSBwcm9wZXJ0eU5hbWUpCiB7CiAgICAgSlNDYWxsYmFja09iamVjdCogdGhpc09iaiA9IGFz
Q2FsbGJhY2tPYmplY3Qoc2xvdFBhcmVudCk7CiAgICAgCkBAIC01NDcsNyArNTQ3LDcgQEAgSlNW
YWx1ZSBKU0NhbGxiYWNrT2JqZWN0PFBhcmVudD46OnN0YXRpYwogICAgICAgICAgICAgaWYgKFN0
YXRpY0Z1bmN0aW9uRW50cnkqIGVudHJ5ID0gc3RhdGljRnVuY3Rpb25zLT5nZXQocHJvcGVydHlO
YW1lLmltcGwoKSkpIHsKICAgICAgICAgICAgICAgICBpZiAoSlNPYmplY3RDYWxsQXNGdW5jdGlv
bkNhbGxiYWNrIGNhbGxBc0Z1bmN0aW9uID0gZW50cnktPmNhbGxBc0Z1bmN0aW9uKSB7CiAgICAg
ICAgICAgICAgICAgICAgIAotICAgICAgICAgICAgICAgICAgICBKU09iamVjdCogbyA9IEpTQ2Fs
bGJhY2tGdW5jdGlvbjo6Y3JlYXRlKGV4ZWMsIHRoaXNPYmotPmdsb2JhbE9iamVjdCgpLCBjYWxs
QXNGdW5jdGlvbiwgcHJvcGVydHlOYW1lKTsKKyAgICAgICAgICAgICAgICAgICAgSlNPYmplY3Qq
IG8gPSBKU0NhbGxiYWNrRnVuY3Rpb246OmNyZWF0ZShleGVjLCB0aGlzT2JqLT5nbG9iYWxPYmpl
Y3QoKSwgY2FsbEFzRnVuY3Rpb24sIHByb3BlcnR5TmFtZS51c3RyaW5nKCkpOwogICAgICAgICAg
ICAgICAgICAgICB0aGlzT2JqLT5wdXREaXJlY3QoZXhlYy0+Z2xvYmFsRGF0YSgpLCBwcm9wZXJ0
eU5hbWUsIG8sIGVudHJ5LT5hdHRyaWJ1dGVzKTsKICAgICAgICAgICAgICAgICAgICAgcmV0dXJu
IG87CiAgICAgICAgICAgICAgICAgfQpAQCAtNTU5LDcgKzU1OSw3IEBAIEpTVmFsdWUgSlNDYWxs
YmFja09iamVjdDxQYXJlbnQ+OjpzdGF0aWMKIH0KIAogdGVtcGxhdGUgPGNsYXNzIFBhcmVudD4K
LUpTVmFsdWUgSlNDYWxsYmFja09iamVjdDxQYXJlbnQ+OjpjYWxsYmFja0dldHRlcihFeGVjU3Rh
dGUqIGV4ZWMsIEpTVmFsdWUgc2xvdFBhcmVudCwgY29uc3QgSWRlbnRpZmllciYgcHJvcGVydHlO
YW1lKQorSlNWYWx1ZSBKU0NhbGxiYWNrT2JqZWN0PFBhcmVudD46OmNhbGxiYWNrR2V0dGVyKEV4
ZWNTdGF0ZSogZXhlYywgSlNWYWx1ZSBzbG90UGFyZW50LCBQcm9wZXJ0eU5hbWUgcHJvcGVydHlO
YW1lKQogewogICAgIEpTQ2FsbGJhY2tPYmplY3QqIHRoaXNPYmogPSBhc0NhbGxiYWNrT2JqZWN0
KHNsb3RQYXJlbnQpOwogICAgIApJbmRleDogU291cmNlL0phdmFTY3JpcHRDb3JlL0FQSS9KU09i
amVjdFJlZi5jcHAKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL0phdmFTY3JpcHRDb3JlL0FQSS9KU09i
amVjdFJlZi5jcHAJKHJldmlzaW9uIDExNjY2NykKKysrIFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9B
UEkvSlNPYmplY3RSZWYuY3BwCSh3b3JraW5nIGNvcHkpCkBAIC05MiwxMCArOTIsNyBAQCBKU09i
amVjdFJlZiBKU09iamVjdE1ha2VGdW5jdGlvbldpdGhDYWxsCiB7CiAgICAgRXhlY1N0YXRlKiBl
eGVjID0gdG9KUyhjdHgpOwogICAgIEFQSUVudHJ5U2hpbSBlbnRyeVNoaW0oZXhlYyk7Ci0KLSAg
ICBJZGVudGlmaWVyIG5hbWVJRCA9IG5hbWUgPyBuYW1lLT5pZGVudGlmaWVyKCZleGVjLT5nbG9i
YWxEYXRhKCkpIDogSWRlbnRpZmllcihleGVjLCAiYW5vbnltb3VzIik7Ci0gICAgCi0gICAgcmV0
dXJuIHRvUmVmKEpTQ2FsbGJhY2tGdW5jdGlvbjo6Y3JlYXRlKGV4ZWMsIGV4ZWMtPmxleGljYWxH
bG9iYWxPYmplY3QoKSwgY2FsbEFzRnVuY3Rpb24sIG5hbWVJRCkpOworICAgIHJldHVybiB0b1Jl
ZihKU0NhbGxiYWNrRnVuY3Rpb246OmNyZWF0ZShleGVjLCBleGVjLT5sZXhpY2FsR2xvYmFsT2Jq
ZWN0KCksIGNhbGxBc0Z1bmN0aW9uLCBuYW1lID8gbmFtZS0+dXN0cmluZygpIDogImFub255bW91
cyIpKTsKIH0KIAogSlNPYmplY3RSZWYgSlNPYmplY3RNYWtlQ29uc3RydWN0b3IoSlNDb250ZXh0
UmVmIGN0eCwgSlNDbGFzc1JlZiBqc0NsYXNzLCBKU09iamVjdENhbGxBc0NvbnN0cnVjdG9yQ2Fs
bGJhY2sgY2FsbEFzQ29uc3RydWN0b3IpCkluZGV4OiBTb3VyY2UvSmF2YVNjcmlwdENvcmUvSmF2
YVNjcmlwdENvcmUudmNwcm9qL0phdmFTY3JpcHRDb3JlL0phdmFTY3JpcHRDb3JlLmRlZgo9PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09Ci0tLSBTb3VyY2UvSmF2YVNjcmlwdENvcmUvSmF2YVNjcmlwdENvcmUudmNwcm9qL0ph
dmFTY3JpcHRDb3JlL0phdmFTY3JpcHRDb3JlLmRlZgkocmV2aXNpb24gMTE2NjY3KQorKysgU291
cmNlL0phdmFTY3JpcHRDb3JlL0phdmFTY3JpcHRDb3JlLnZjcHJvai9KYXZhU2NyaXB0Q29yZS9K
YXZhU2NyaXB0Q29yZS5kZWYJKHdvcmtpbmcgY29weSkKQEAgLTU2LDkgKzU2LDYgQEAgRVhQT1JU
UwogICAgID9hZGRCeXRlc0BTSEExQFdURkBAUUFFWFBCRUlAWgogICAgID9hZGRDdXJyZW50VGhy
ZWFkQE1hY2hpbmVUaHJlYWRzQEpTQ0BAUUFFWFhaCiAgICAgP2FkZEZpbmFsaXplckBIZWFwQEpT
Q0BAUUFFWFBBVkpTQ2VsbEAyQFA2QVgwQFpAWgotICAgID9hZGRQcm9wZXJ0eVRyYW5zaXRpb25A
U3RydWN0dXJlQEpTQ0BAU0FQQVYxMkBBQVZKU0dsb2JhbERhdGFAMkBQQVYxMkBBQlZJZGVudGlm
aWVyQDJASVBBVkpTQ2VsbEAyQEFBSUBaCi0gICAgP2FkZFByb3BlcnR5VHJhbnNpdGlvblRvRXhp
c3RpbmdTdHJ1Y3R1cmVAU3RydWN0dXJlQEpTQ0BAU0FQQVYxMkBQQVYxMkBBQlZJZGVudGlmaWVy
QDJASVBBVkpTQ2VsbEAyQEFBSUBaCi0gICAgP2FkZFByb3BlcnR5V2l0aG91dFRyYW5zaXRpb25A
U3RydWN0dXJlQEpTQ0BAUUFFSUFBVkpTR2xvYmFsRGF0YUAyQEFCVklkZW50aWZpZXJAMkBJUEFW
SlNDZWxsQDJAQFoKICAgICA/YWRkU2xvd0Nhc2VASWRlbnRpZmllckBKU0NAQENBP0FWPyRQYXNz
UmVmUHRyQFZTdHJpbmdJbXBsQFdURkBAQFdURkBAUEFWRXhlY1N0YXRlQDJAUEFWU3RyaW5nSW1w
bEA0QEBaCiAgICAgP2FkZFNsb3dDYXNlQElkZW50aWZpZXJASlNDQEBDQT9BVj8kUGFzc1JlZlB0
ckBWU3RyaW5nSW1wbEBXVEZAQEBXVEZAQFBBVkpTR2xvYmFsRGF0YUAyQFBBVlN0cmluZ0ltcGxA
NEBAWgogICAgID9hZGRTdGF0aWNHbG9iYWxzQEpTR2xvYmFsT2JqZWN0QEpTQ0BASUFFWFBBVUds
b2JhbFByb3BlcnR5SW5mb0AxMkBIQFoKQEAgLTk4LDExICs5NSw5IEBAIEVYUE9SVFMKICAgICA/
Y29uc3RydWN0QEpTQ0BAWUFQQVZKU09iamVjdEAxQFBBVkV4ZWNTdGF0ZUAxQFZKU1ZhbHVlQDFA
VzRDb25zdHJ1Y3RUeXBlQDFAQUJUQ29uc3RydWN0RGF0YUAxQEFCVkFyZ0xpc3RAMUBAWgogICAg
ID9jb25zdHJ1Y3RBcnJheUBKU0NAQFlBUEFWSlNBcnJheUAxQFBBVkV4ZWNTdGF0ZUAxQEFCVkFy
Z0xpc3RAMUBAWgogICAgID9jb25zdHJ1Y3RFbXB0eU9iamVjdEBKU0NAQFlBUEFWSlNPYmplY3RA
MUBQQVZFeGVjU3RhdGVAMUBAWgotICAgID9jb25zdHJ1Y3RGdW5jdGlvblNraXBwaW5nRXZhbEVu
YWJsZWRDaGVja0BKU0NAQFlBUEFWSlNPYmplY3RAMUBQQVZFeGVjU3RhdGVAMUBQQVZKU0dsb2Jh
bE9iamVjdEAxQEFCVkFyZ0xpc3RAMUBBQlZJZGVudGlmaWVyQDFAQUJWVVN0cmluZ0AxQEFCVlRl
eHRQb3NpdGlvbkBXVEZAQEBaCiAgICAgP2NvbnZlcnRMYXRpbjFUb1VURjhAVW5pY29kZUBXVEZA
QFlBP0FXNENvbnZlcnNpb25SZXN1bHRAMTJAUEFQQkVQQkVQQVBBRFBBREBaCiAgICAgP2NvbnZl
cnRVVEYxNlRvVVRGOEBVbmljb2RlQFdURkBAWUE/QVc0Q29udmVyc2lvblJlc3VsdEAxMkBQQVBC
X1dQQl9XUEFQQURQQURfTkBaCiAgICAgP2NvbnZlcnRVVEY4VG9VVEYxNkBVbmljb2RlQFdURkBA
WUE/QVc0Q29udmVyc2lvblJlc3VsdEAxMkBQQVBCRFBCRFBBUEFfV1BBX1dfTkBaCi0gICAgP2Ny
ZWF0ZUBKU0Z1bmN0aW9uQEpTQ0BAU0FQQVYxMkBQQVZFeGVjU3RhdGVAMkBQQVZKU0dsb2JhbE9i
amVjdEAyQEhBQlZJZGVudGlmaWVyQDJAUDZJX0owQFpXNEludHJpbnNpY0AyQDNAWgogICAgID9j
cmVhdGVASlNHbG9iYWxEYXRhQEpTQ0BAU0E/QVY/JFBhc3NSZWZQdHJAVkpTR2xvYmFsRGF0YUBK
U0NAQEBXVEZAQFc0VGhyZWFkU3RhY2tUeXBlQDJAVzRIZWFwU2l6ZUAyQEBaCiAgICAgP2NyZWF0
ZUBPcGFxdWVKU1N0cmluZ0BAU0E/QVY/JFBhc3NSZWZQdHJAVU9wYXF1ZUpTU3RyaW5nQEBAV1RG
QEBBQlZVU3RyaW5nQEpTQ0BAQFoKICAgICA/Y3JlYXRlQFJlZ0V4cEBKU0NAQFNBUEFWMTJAQUFW
SlNHbG9iYWxEYXRhQDJAQUJWVVN0cmluZ0AyQFc0UmVnRXhwRmxhZ3NAMkBAWgpAQCAtMTMzLDE5
ICsxMjgsMTMgQEAgRVhQT1JUUwogICAgID9kYXlJblllYXJAV1RGQEBZQUhOSEBaCiAgICAgP2Rl
Y3JlbWVudEBSZWZDb3VudGVkTGVha0NvdW50ZXJAV1RGQEBRQUVYWFoKICAgICA/ZGVmYXVsdFZh
bHVlQEpTT2JqZWN0QEpTQ0BAU0E/QVZKU1ZhbHVlQDJAUEJWMTJAUEFWRXhlY1N0YXRlQDJAVzRQ
cmVmZXJyZWRQcmltaXRpdmVUeXBlQDJAQFoKLSAgICA/ZGVmaW5lT3duUHJvcGVydHlASlNHbG9i
YWxPYmplY3RASlNDQEBTQV9OUEFWSlNPYmplY3RAMkBQQVZFeGVjU3RhdGVAMkBBQlZJZGVudGlm
aWVyQDJAQUFWUHJvcGVydHlEZXNjcmlwdG9yQDJAX05AWgotICAgID9kZWZpbmVPd25Qcm9wZXJ0
eUBKU09iamVjdEBKU0NAQFNBX05QQVYxMkBQQVZFeGVjU3RhdGVAMkBBQlZJZGVudGlmaWVyQDJA
QUFWUHJvcGVydHlEZXNjcmlwdG9yQDJAX05AWgogICAgID9kZWxldGVPd25lZFB0ckBXVEZAQFlB
WFBBVUhCSVRNQVBfX0BAQFoKICAgICA/ZGVsZXRlT3duZWRQdHJAV1RGQEBZQVhQQVVIQlJVU0hf
X0BAQFoKICAgICA/ZGVsZXRlT3duZWRQdHJAV1RGQEBZQVhQQVVIRENfX0BAQFoKICAgICA/ZGVs
ZXRlT3duZWRQdHJAV1RGQEBZQVhQQVVIRk9OVF9fQEBAWgogICAgID9kZWxldGVPd25lZFB0ckBX
VEZAQFlBWFBBVUhSR05fX0BAQFoKLSAgICA/ZGVsZXRlUHJvcGVydHlASlNPYmplY3RASlNDQEBT
QV9OUEFWSlNDZWxsQDJAUEFWRXhlY1N0YXRlQDJAQUJWSWRlbnRpZmllckAyQEBaCi0gICAgP2Rl
bGV0ZVByb3BlcnR5QEpTVmFyaWFibGVPYmplY3RASlNDQEBTQV9OUEFWSlNDZWxsQDJAUEFWRXhl
Y1N0YXRlQDJAQUJWSWRlbnRpZmllckAyQEBaCiAgICAgP2RlbGV0ZVByb3BlcnR5QnlJbmRleEBK
U09iamVjdEBKU0NAQFNBX05QQVZKU0NlbGxAMkBQQVZFeGVjU3RhdGVAMkBJQFoKICAgICA/ZGVs
ZXRlVGFibGVASGFzaFRhYmxlQEpTQ0BAUUJFWFhaCi0gICAgP2Rlc3BlY2lmeURpY3Rpb25hcnlG
dW5jdGlvbkBTdHJ1Y3R1cmVASlNDQEBRQUVYQUFWSlNHbG9iYWxEYXRhQDJAQUJWSWRlbnRpZmll
ckAyQEBaCi0gICAgP2Rlc3BlY2lmeUZ1bmN0aW9uVHJhbnNpdGlvbkBTdHJ1Y3R1cmVASlNDQEBT
QVBBVjEyQEFBVkpTR2xvYmFsRGF0YUAyQFBBVjEyQEFCVklkZW50aWZpZXJAMkBAWgogICAgID9k
ZXN0cm95QEpTQ2VsbEBKU0NAQEtBWFBBVjEyQEBaCiAgICAgP2Rlc3Ryb3lASlNHbG9iYWxPYmpl
Y3RASlNDQEBTQVhQQVZKU0NlbGxAMkBAWgogICAgID9kZXN0cm95QE91dE9mTGluZUJpdHNAQml0
VmVjdG9yQFdURkBAU0FYUEFWMTIzQEBaCkBAIC0xNzcsNyArMTY2LDYgQEAgRVhQT1JUUwogICAg
ID9maW5hbGl6ZUBXZWFrSGFuZGxlT3duZXJASlNDQEBVQUVYVj8kSGFuZGxlQFc0VW5rbm93bkBK
U0NAQEAyQFBBWEBaCiAgICAgP2ZpbmRBbGxvY2F0b3JAV2Vha1NldEBKU0NAQEFBRVBBVUZyZWVD
ZWxsQFdlYWtCbG9ja0AyQFhaCiAgICAgP2ZpbmlzaENyZWF0aW9uQERhdGVJbnN0YW5jZUBKU0NA
QElBRVhBQVZKU0dsb2JhbERhdGFAMkBOQFoKLSAgICA/ZmluaXNoQ3JlYXRpb25ASW50ZXJuYWxG
dW5jdGlvbkBKU0NAQElBRVhBQVZKU0dsb2JhbERhdGFAMkBBQlZJZGVudGlmaWVyQDJAQFoKICAg
ICA/ZmluaXNoQ3JlYXRpb25ASlNBcnJheUBKU0NAQElBRVhBQVZKU0dsb2JhbERhdGFAMkBJQFoK
ICAgICA/ZmluaXNoQ3JlYXRpb25AUmVnRXhwT2JqZWN0QEpTQ0BASUFFWFBBVkpTR2xvYmFsT2Jq
ZWN0QDJAQFoKICAgICA/ZmluaXNoQ3JlYXRpb25AU3RyaW5nT2JqZWN0QEpTQ0BASUFFWEFBVkpT
R2xvYmFsRGF0YUAyQFBBVkpTU3RyaW5nQDJAQFoKQEAgLTE4NiwyMSArMTc0LDE1IEBAIEVYUE9S
VFMKICAgICA/ZnJvbUBJZGVudGlmaWVyQEpTQ0BAU0E/QVYxMkBQQVZFeGVjU3RhdGVAMkBJQFoK
ICAgICA/ZnVuY3Rpb25HZXR0ZXJAUHJvcGVydHlTbG90QEpTQ0BAQUJFP0FWSlNWYWx1ZUAyQFBB
VkV4ZWNTdGF0ZUAyQEBaCiAgICAgP2Z1bmN0aW9uTmFtZUBEZWJ1Z2dlckNhbGxGcmFtZUBKU0NA
QFFCRVBCVlVTdHJpbmdAMkBYWgotICAgID9nZXRAU3RydWN0dXJlQEpTQ0BAUUFFSUFBVkpTR2xv
YmFsRGF0YUAyQEFCVklkZW50aWZpZXJAMkBBQUlBQVBBVkpTQ2VsbEAyQEBaCi0gICAgP2dldEBT
dHJ1Y3R1cmVASlNDQEBRQUVJQUFWSlNHbG9iYWxEYXRhQDJAUEFWU3RyaW5nSW1wbEBXVEZAQEFB
SUFBUEFWSlNDZWxsQDJAQFoKICAgICA/Z2V0Q2FsY3VsYXRlZERpc3BsYXlOYW1lQEpTQ0BAWUE/
QVZVU3RyaW5nQDFAUEFWRXhlY1N0YXRlQDFAUEFWSlNPYmplY3RAMUBAWgogICAgID9nZXRDYWxs
RGF0YUBKU0NlbGxASlNDQEBTQT9BVzRDYWxsVHlwZUAyQFBBVjEyQEFBVENhbGxEYXRhQDJAQFoK
ICAgICA/Z2V0Q29uc3RydWN0RGF0YUBKU0NlbGxASlNDQEBTQT9BVzRDb25zdHJ1Y3RUeXBlQDJA
UEFWMTJAQUFUQ29uc3RydWN0RGF0YUAyQEBaCiAgICAgP2dldEN1cnJlbnRMb2NhbFRpbWVAV1RG
QEBZQVhQQVV0bUBAQFoKICAgICA/Z2V0T2JqZWN0QEpTQ2VsbEBKU0NAQFFBRVBBVkpTT2JqZWN0
QDJAWFoKLSAgICA/Z2V0T3duUHJvcGVydHlEZXNjcmlwdG9yQEpTR2xvYmFsT2JqZWN0QEpTQ0BA
U0FfTlBBVkpTT2JqZWN0QDJAUEFWRXhlY1N0YXRlQDJAQUJWSWRlbnRpZmllckAyQEFBVlByb3Bl
cnR5RGVzY3JpcHRvckAyQEBaCi0gICAgP2dldE93blByb3BlcnR5RGVzY3JpcHRvckBKU09iamVj
dEBKU0NAQFNBX05QQVYxMkBQQVZFeGVjU3RhdGVAMkBBQlZJZGVudGlmaWVyQDJAQUFWUHJvcGVy
dHlEZXNjcmlwdG9yQDJAQFoKICAgICA/Z2V0T3duUHJvcGVydHlOYW1lc0BKU09iamVjdEBKU0NA
QFNBWFBBVjEyQFBBVkV4ZWNTdGF0ZUAyQEFBVlByb3BlcnR5TmFtZUFycmF5QDJAVzRFbnVtZXJh
dGlvbk1vZGVAMkBAWgogICAgID9nZXRPd25Qcm9wZXJ0eU5hbWVzQEpTVmFyaWFibGVPYmplY3RA
SlNDQEBTQVhQQVZKU09iamVjdEAyQFBBVkV4ZWNTdGF0ZUAyQEFBVlByb3BlcnR5TmFtZUFycmF5
QDJAVzRFbnVtZXJhdGlvbk1vZGVAMkBAWgotICAgID9nZXRPd25Qcm9wZXJ0eVNsb3RASlNHbG9i
YWxPYmplY3RASlNDQEBTQV9OUEFWSlNDZWxsQDJAUEFWRXhlY1N0YXRlQDJAQUJWSWRlbnRpZmll
ckAyQEFBVlByb3BlcnR5U2xvdEAyQEBaCiAgICAgP2dldE93blByb3BlcnR5U2xvdEJ5SW5kZXhA
SlNBcnJheUBKU0NAQFNBX05QQVZKU0NlbGxAMkBQQVZFeGVjU3RhdGVAMkBJQUFWUHJvcGVydHlT
bG90QDJAQFoKICAgICA/Z2V0T3duUHJvcGVydHlTbG90QnlJbmRleEBKU09iamVjdEBKU0NAQFNB
X05QQVZKU0NlbGxAMkBQQVZFeGVjU3RhdGVAMkBJQUFWUHJvcGVydHlTbG90QDJAQFoKLSAgICA/
Z2V0UHJvcGVydHlEZXNjcmlwdG9yQEpTT2JqZWN0QEpTQ0BAUUFFX05QQVZFeGVjU3RhdGVAMkBB
QlZJZGVudGlmaWVyQDJAQUFWUHJvcGVydHlEZXNjcmlwdG9yQDJAQFoKICAgICA/Z2V0UHJvcGVy
dHlOYW1lc0BKU09iamVjdEBKU0NAQFNBWFBBVjEyQFBBVkV4ZWNTdGF0ZUAyQEFBVlByb3BlcnR5
TmFtZUFycmF5QDJAVzRFbnVtZXJhdGlvbk1vZGVAMkBAWgogICAgID9nZXRTbGljZUBBcmdMaXN0
QEpTQ0BAUUJFWEhBQVYxMkBAWgogICAgID9nZXRTdGFja1RyYWNlQEludGVycHJldGVyQEpTQ0BA
U0FYUEFWSlNHbG9iYWxEYXRhQDJAQUFWPyRWZWN0b3JAVVN0YWNrRnJhbWVASlNDQEAkMEFAQFdU
RkBAQFoKQEAgLTIxMSw3ICsxOTMsNiBAQCBFWFBPUlRTCiAgICAgP2dsb2JhbE9iamVjdENvdW50
QEhlYXBASlNDQEBRQUVJWFoKICAgICA/Z3Jvd0BIYW5kbGVTZXRASlNDQEBBQUVYWFoKICAgICA/
aGFzSW5zdGFuY2VASlNPYmplY3RASlNDQEBTQV9OUEFWMTJAUEFWRXhlY1N0YXRlQDJAVkpTVmFs
dWVAMkAyQFoKLSAgICA/aGFzUHJvcGVydHlASlNPYmplY3RASlNDQEBRQkVfTlBBVkV4ZWNTdGF0
ZUAyQEFCVklkZW50aWZpZXJAMkBAWgogICAgID9oYXNQcm9wZXJ0eUBKU09iamVjdEBKU0NAQFFC
RV9OUEFWRXhlY1N0YXRlQDJASUBaCiAgICAgP2hhc2hTbG93Q2FzZUBTdHJpbmdJbXBsQFdURkBA
QUJFSVhaCiAgICAgP2hlYXBASGVhcEBKU0NAQFNBUEFWMTJAVkpTVmFsdWVAMkBAWgpAQCAtMjY2
LDEyICsyNDcsOCBAQCBFWFBPUlRTCiAgICAgP3Byb3RlY3RlZEdsb2JhbE9iamVjdENvdW50QEhl
YXBASlNDQEBRQUVJWFoKICAgICA/cHJvdGVjdGVkT2JqZWN0Q291bnRASGVhcEBKU0NAQFFBRUlY
WgogICAgID9wcm90ZWN0ZWRPYmplY3RUeXBlQ291bnRzQEhlYXBASlNDQEBRQUU/QVY/JFBhc3NP
d25QdHJAVj8kSGFzaENvdW50ZWRTZXRAUEJEVT8kUHRySGFzaEBQQkRAV1RGQEBVPyRIYXNoVHJh
aXRzQFBCREAyQEBXVEZAQEBXVEZAQFhaCi0gICAgP3B1dEBKU0dsb2JhbE9iamVjdEBKU0NAQFNB
WFBBVkpTQ2VsbEAyQFBBVkV4ZWNTdGF0ZUAyQEFCVklkZW50aWZpZXJAMkBWSlNWYWx1ZUAyQEFB
VlB1dFByb3BlcnR5U2xvdEAyQEBaCi0gICAgP3B1dEBKU09iamVjdEBKU0NAQFNBWFBBVkpTQ2Vs
bEAyQFBBVkV4ZWNTdGF0ZUAyQEFCVklkZW50aWZpZXJAMkBWSlNWYWx1ZUAyQEFBVlB1dFByb3Bl
cnR5U2xvdEAyQEBaCiAgICAgP3B1dEJ5SW5kZXhASlNPYmplY3RASlNDQEBTQVhQQVZKU0NlbGxA
MkBQQVZFeGVjU3RhdGVAMkBJVkpTVmFsdWVAMkBfTkBaCiAgICAgP3B1dERpcmVjdEluZGV4QmV5
b25kVmVjdG9yTGVuZ3RoQEpTQXJyYXlASlNDQEBBQUVfTlBBVkV4ZWNTdGF0ZUAyQElWSlNWYWx1
ZUAyQF9OQFoKLSAgICA/cHV0RGlyZWN0VmlydHVhbEBKU0dsb2JhbE9iamVjdEBKU0NAQFNBWFBB
VkpTT2JqZWN0QDJAUEFWRXhlY1N0YXRlQDJAQUJWSWRlbnRpZmllckAyQFZKU1ZhbHVlQDJASUBa
Ci0gICAgP3B1dERpcmVjdFZpcnR1YWxASlNPYmplY3RASlNDQEBTQVhQQVYxMkBQQVZFeGVjU3Rh
dGVAMkBBQlZJZGVudGlmaWVyQDJAVkpTVmFsdWVAMkBJQFoKICAgICA/cmFuZG9tTnVtYmVyQFdU
RkBAWUFOWFoKICAgICA/cmVjb21waWxlQWxsSlNGdW5jdGlvbnNARGVidWdnZXJASlNDQEBRQUVY
UEFWSlNHbG9iYWxEYXRhQDJAQFoKICAgICA/cmVnRXhwRmxhZ3NASlNDQEBZQT9BVzRSZWdFeHBG
bGFnc0AxQEFCVlVTdHJpbmdAMUBAWgpAQCAtMzA0LDcgKzI4MSw2IEBAIEVYUE9SVFMKICAgICA/
c2V0U2V0dGVyQFByb3BlcnR5RGVzY3JpcHRvckBKU0NAQFFBRVhWSlNWYWx1ZUAyQEBaCiAgICAg
P3NldFVuZGVmaW5lZEBQcm9wZXJ0eURlc2NyaXB0b3JASlNDQEBRQUVYWFoKICAgICA/c2V0VW53
cmFwcGVkT2JqZWN0QEpTR2xvYmFsVGhpc0BKU0NAQElBRVhBQVZKU0dsb2JhbERhdGFAMkBQQVZK
U0dsb2JhbE9iamVjdEAyQEBaCi0gICAgP3NldFVwU3RhdGljRnVuY3Rpb25TbG90QEpTQ0BAWUFf
TlBBVkV4ZWNTdGF0ZUAxQFBCVkhhc2hFbnRyeUAxQFBBVkpTT2JqZWN0QDFAQUJWSWRlbnRpZmll
ckAxQEFBVlByb3BlcnR5U2xvdEAxQEBaCiAgICAgP3NldFdyaXRhYmxlQFByb3BlcnR5RGVzY3Jp
cHRvckBKU0NAQFFBRVhfTkBaCiAgICAgP3NldHRlckBQcm9wZXJ0eURlc2NyaXB0b3JASlNDQEBR
QkU/QVZKU1ZhbHVlQDJAWFoKICAgICA/c2hyaW5rVG9GaXRAU3RyaW5nQnVpbGRlckBXVEZAQFFB
RVhYWgpAQCAtMzIwLDcgKzI5Niw2IEBAIEVYUE9SVFMKICAgICA/c3RvcFByb2ZpbGluZ0BQcm9m
aWxlckBKU0NAQFFBRT9BVj8kUGFzc1JlZlB0ckBWUHJvZmlsZUBKU0NAQEBXVEZAQFBBVkV4ZWNT
dGF0ZUAyQEFCVlVTdHJpbmdAMkBAWgogICAgID9zdG9wU2FtcGxpbmdASlNHbG9iYWxEYXRhQEpT
Q0BAUUFFWFhaCiAgICAgP3N1YnN0cmluZ1NoYXJpbmdJbXBsQFVTdHJpbmdASlNDQEBRQkU/QVYx
MkBJSUBaCi0gICAgP3N5bWJvbFRhYmxlR2V0QEpTVmFyaWFibGVPYmplY3RASlNDQEBJQUVfTkFC
VklkZW50aWZpZXJAMkBBQVZQcm9wZXJ0eURlc2NyaXB0b3JAMkBAWgogICAgID9zeW50aGVzaXpl
UHJvdG90eXBlQEpTVmFsdWVASlNDQEBRQkVQQVZKU09iamVjdEAyQFBBVkV4ZWNTdGF0ZUAyQEBa
CiAgICAgP3RoaXNPYmplY3RARGVidWdnZXJDYWxsRnJhbWVASlNDQEBRQkVQQVZKU09iamVjdEAy
QFhaCiAgICAgP3Rocm93RXJyb3JASlNDQEBZQT9BVkpTVmFsdWVAMUBQQVZFeGVjU3RhdGVAMUBW
MjFAQFoKQEAgLTM0Myw3ICszMTgsNiBAQCBFWFBPUlRTCiAgICAgP3RvU3RyaW5nU2xvd0Nhc2VA
SlNWYWx1ZUBKU0NAQEFCRVBBVkpTU3RyaW5nQDJAUEFWRXhlY1N0YXRlQDJAQFoKICAgICA/dG9U
aGlzT2JqZWN0QEpTT2JqZWN0QEpTQ0BAU0FQQVYxMkBQQVZKU0NlbGxAMkBQQVZFeGVjU3RhdGVA
MkBAWgogICAgID90b1RoaXNPYmplY3RTbG93Q2FzZUBKU1ZhbHVlQEpTQ0BAQUJFUEFWSlNPYmpl
Y3RAMkBQQVZFeGVjU3RhdGVAMkBAWgotICAgID90b1VJbnQzMkBJZGVudGlmaWVyQEpTQ0BAU0FJ
QUJWVVN0cmluZ0AyQEFBX05AWgogICAgID90cmFuc2ZlckBBcnJheUJ1ZmZlckBXVEZAQFFBRV9O
QUFWQXJyYXlCdWZmZXJDb250ZW50c0AyQEFBVj8kVmVjdG9yQFY/JFJlZlB0ckBWQXJyYXlCdWZm
ZXJWaWV3QFdURkBAQFdURkBAJDBBQEAyQEBaCiAgICAgP3RyeUZhc3RDYWxsb2NAV1RGQEBZQT9B
VVRyeU1hbGxvY1JldHVyblZhbHVlQDFASUlAWgogICAgID90cnlGYXN0TWFsbG9jQFdURkBAWUE/
QVVUcnlNYWxsb2NSZXR1cm5WYWx1ZUAxQElAWgpJbmRleDogU291cmNlL0phdmFTY3JpcHRDb3Jl
L0phdmFTY3JpcHRDb3JlLnhjb2RlcHJvai9wcm9qZWN0LnBieHByb2oKPT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0g
U291cmNlL0phdmFTY3JpcHRDb3JlL0phdmFTY3JpcHRDb3JlLnhjb2RlcHJvai9wcm9qZWN0LnBi
eHByb2oJKHJldmlzaW9uIDExNjY3MCkKKysrIFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9KYXZhU2Ny
aXB0Q29yZS54Y29kZXByb2ovcHJvamVjdC5wYnhwcm9qCSh3b3JraW5nIGNvcHkpCkBAIC0zNjIs
NiArMzYyLDcgQEAKIAkJODYwNEY1MDUxNDNDRTFDMjAwQjI5NUY1IC8qIEpTR2xvYmFsVGhpcy5o
IGluIEhlYWRlcnMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gODYwNEY1MDMx
NDNDRTFDMTAwQjI5NUY1IC8qIEpTR2xvYmFsVGhpcy5oICovOyBzZXR0aW5ncyA9IHtBVFRSSUJV
VEVTID0gKFByaXZhdGUsICk7IH07IH07CiAJCTg2MEJEODAxMTQ4RUE2RjIwMDExMkIyRiAvKiBJ
bnRyaW5zaWMuaCBpbiBIZWFkZXJzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9
IDg2QkY2NDJBMTQ4REIyQjUwMDRERTM2QSAvKiBJbnRyaW5zaWMuaCAqLzsgc2V0dGluZ3MgPSB7
QVRUUklCVVRFUyA9IChQcml2YXRlLCApOyB9OyB9OwogCQk4NjEyRTRDRDE1MjM4OUVDMDBDODM2
QkUgLyogTWF0Y2hSZXN1bHQuaCBpbiBIZWFkZXJzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsg
ZmlsZVJlZiA9IDg2MTJFNENCMTUyMjkxODQwMEM4MzZCRSAvKiBNYXRjaFJlc3VsdC5oICovOyBz
ZXR0aW5ncyA9IHtBVFRSSUJVVEVTID0gKFByaXZhdGUsICk7IH07IH07CisJCTg2MTU4QUIzMTU1
QzhCNDAwMEI0NUM5QyAvKiBQcm9wZXJ0eU5hbWUuaCBpbiBIZWFkZXJzICovID0ge2lzYSA9IFBC
WEJ1aWxkRmlsZTsgZmlsZVJlZiA9IDg2MTU4QUIyMTU1QzhCM0YwMEI0NUM5QyAvKiBQcm9wZXJ0
eU5hbWUuaCAqLzsgc2V0dGluZ3MgPSB7QVRUUklCVVRFUyA9IChQcml2YXRlLCApOyB9OyB9Owog
CQk4NjNCMjNFMDBGQzYxMTg5MDA3MDNBQTQgLyogTWFjcm9Bc3NlbWJsZXJDb2RlUmVmLmggaW4g
SGVhZGVycyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSA4NjNCMjNERjBGQzYw
RTYyMDA3MDNBQTQgLyogTWFjcm9Bc3NlbWJsZXJDb2RlUmVmLmggKi87IHNldHRpbmdzID0ge0FU
VFJJQlVURVMgPSAoUHJpdmF0ZSwgKTsgfTsgfTsKIAkJODYzQzZEOUMxNTIxMTExQTAwNTg1RTRF
IC8qIFlhcnJDYW5vbmljYWxpemVVQ1MyLmNwcCBpbiBTb3VyY2VzICovID0ge2lzYSA9IFBCWEJ1
aWxkRmlsZTsgZmlsZVJlZiA9IDg2M0M2RDk4MTUyMTExMTIwMDU4NUU0RSAvKiBZYXJyQ2Fub25p
Y2FsaXplVUNTMi5jcHAgKi87IH07CiAJCTg2NDJDNTEwMTUxQzA2QTkwMDQ2RDRFRiAvKiBSZWdF
eHBDYWNoZWRSZXN1bHQuY3BwIGluIFNvdXJjZXMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBm
aWxlUmVmID0gODZGNzVFRkIxNTFDMDYyRjAwN0M5QkEzIC8qIFJlZ0V4cENhY2hlZFJlc3VsdC5j
cHAgKi87IH07CkBAIC0xMDIwLDYgKzEwMjEsNyBAQAogCQk4NjA0RjRGMjE0M0E2QzQ0MDBCMjk1
RjUgLyogQ2hhbmdlTG9nICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGxhc3RLbm93bkZp
bGVUeXBlID0gdGV4dDsgcGF0aCA9IENoYW5nZUxvZzsgc291cmNlVHJlZSA9ICI8Z3JvdXA+Ijsg
fTsKIAkJODYwNEY1MDMxNDNDRTFDMTAwQjI5NUY1IC8qIEpTR2xvYmFsVGhpcy5oICovID0ge2lz
YSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBl
ID0gc291cmNlY29kZS5jLmg7IHBhdGggPSBKU0dsb2JhbFRoaXMuaDsgc291cmNlVHJlZSA9ICI8
Z3JvdXA+IjsgfTsKIAkJODYxMkU0Q0IxNTIyOTE4NDAwQzgzNkJFIC8qIE1hdGNoUmVzdWx0Lmgg
Ki8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3du
RmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmMuaDsgcGF0aCA9IE1hdGNoUmVzdWx0Lmg7IHNvdXJjZVRy
ZWUgPSAiPGdyb3VwPiI7IH07CisJCTg2MTU4QUIyMTU1QzhCM0YwMEI0NUM5QyAvKiBQcm9wZXJ0
eU5hbWUuaCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBs
YXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuYy5oOyBwYXRoID0gUHJvcGVydHlOYW1lLmg7
IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CiAJCTg2M0IyM0RGMEZDNjBFNjIwMDcwM0FBNCAv
KiBNYWNyb0Fzc2VtYmxlckNvZGVSZWYuaCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBm
aWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuYy5oOyBwYXRo
ID0gTWFjcm9Bc3NlbWJsZXJDb2RlUmVmLmg7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CiAJ
CTg2M0M2RDk4MTUyMTExMTIwMDU4NUU0RSAvKiBZYXJyQ2Fub25pY2FsaXplVUNTMi5jcHAgKi8g
PSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmls
ZVR5cGUgPSBzb3VyY2Vjb2RlLmNwcC5jcHA7IG5hbWUgPSBZYXJyQ2Fub25pY2FsaXplVUNTMi5j
cHA7IHBhdGggPSB5YXJyL1lhcnJDYW5vbmljYWxpemVVQ1MyLmNwcDsgc291cmNlVHJlZSA9ICI8
Z3JvdXA+IjsgfTsKIAkJODYzQzZEOTkxNTIxMTExMjAwNTg1RTRFIC8qIFlhcnJDYW5vbmljYWxp
emVVQ1MyLmggKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsg
bGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmMuaDsgbmFtZSA9IFlhcnJDYW5vbmljYWxp
emVVQ1MyLmg7IHBhdGggPSB5YXJyL1lhcnJDYW5vbmljYWxpemVVQ1MyLmg7IHNvdXJjZVRyZWUg
PSAiPGdyb3VwPiI7IH07CkBAIC0xOTM2LDYgKzE5MzgsNyBAQAogCQkJCUE3RkI2MEEzMTAzRjdE
QzIwMDE3QTI4NiAvKiBQcm9wZXJ0eURlc2NyaXB0b3IuY3BwICovLAogCQkJCUE3RkI2MDRCMTAz
RjVFQUIwMDE3QTI4NiAvKiBQcm9wZXJ0eURlc2NyaXB0b3IuaCAqLywKIAkJCQlCQzk1NDM3QzBF
QkE3MEZEMDA3MkI2RDMgLyogUHJvcGVydHlNYXBIYXNoVGFibGUuaCAqLywKKwkJCQk4NjE1OEFC
MjE1NUM4QjNGMDBCNDVDOUMgLyogUHJvcGVydHlOYW1lLmggKi8sCiAJCQkJNjU0MDBDMEYwQTY5
QkFGMjAwNTA5ODg3IC8qIFByb3BlcnR5TmFtZUFycmF5LmNwcCAqLywKIAkJCQk2NTQwMEMxMDBB
NjlCQUYyMDA1MDk4ODcgLyogUHJvcGVydHlOYW1lQXJyYXkuaCAqLywKIAkJCQk2NTYyMUU2QjA4
OUU4NTk3MDA3NjBGMzUgLyogUHJvcGVydHlTbG90LmNwcCAqLywKQEAgLTI1ODAsNiArMjU4Myw3
IEBACiAJCQkJMEYxRTNBNDcxNTM0Q0JCOTAwMEY5NDU2IC8qIERGR0RvdWJsZUZvcm1hdFN0YXRl
LmggaW4gSGVhZGVycyAqLywKIAkJCQkxNDE1MDEzMzE1NEJCMTNGMDA1RDhDOTggLyogV2Vha1Nl
dElubGluZXMuaCBpbiBIZWFkZXJzICovLAogCQkJCTE0ODE2RTFDMTU0Q0M1NkMwMEI4MDU0QyAv
KiBCbG9ja0FsbG9jYXRvci5oIGluIEhlYWRlcnMgKi8sCisJCQkJODYxNThBQjMxNTVDOEI0MDAw
QjQ1QzlDIC8qIFByb3BlcnR5TmFtZS5oIGluIEhlYWRlcnMgKi8sCiAJCQkpOwogCQkJcnVuT25s
eUZvckRlcGxveW1lbnRQb3N0cHJvY2Vzc2luZyA9IDA7CiAJCX07CkluZGV4OiBTb3VyY2UvSmF2
YVNjcmlwdENvcmUvZGVidWdnZXIvRGVidWdnZXJBY3RpdmF0aW9uLmNwcAo9PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0t
LSBTb3VyY2UvSmF2YVNjcmlwdENvcmUvZGVidWdnZXIvRGVidWdnZXJBY3RpdmF0aW9uLmNwcAko
cmV2aXNpb24gMTE2NjY3KQorKysgU291cmNlL0phdmFTY3JpcHRDb3JlL2RlYnVnZ2VyL0RlYnVn
Z2VyQWN0aXZhdGlvbi5jcHAJKHdvcmtpbmcgY29weSkKQEAgLTY1LDI1ICs2NSwyNSBAQCBVU3Ry
aW5nIERlYnVnZ2VyQWN0aXZhdGlvbjo6Y2xhc3NOYW1lKGNvCiAgICAgcmV0dXJuIHRoaXNPYmpl
Y3QtPm1fYWN0aXZhdGlvbi0+bWV0aG9kVGFibGUoKS0+Y2xhc3NOYW1lKHRoaXNPYmplY3QtPm1f
YWN0aXZhdGlvbi5nZXQoKSk7CiB9CiAKLWJvb2wgRGVidWdnZXJBY3RpdmF0aW9uOjpnZXRPd25Q
cm9wZXJ0eVNsb3QoSlNDZWxsKiBjZWxsLCBFeGVjU3RhdGUqIGV4ZWMsIGNvbnN0IElkZW50aWZp
ZXImIHByb3BlcnR5TmFtZSwgUHJvcGVydHlTbG90JiBzbG90KQorYm9vbCBEZWJ1Z2dlckFjdGl2
YXRpb246OmdldE93blByb3BlcnR5U2xvdChKU0NlbGwqIGNlbGwsIEV4ZWNTdGF0ZSogZXhlYywg
UHJvcGVydHlOYW1lIHByb3BlcnR5TmFtZSwgUHJvcGVydHlTbG90JiBzbG90KQogewogICAgIERl
YnVnZ2VyQWN0aXZhdGlvbiogdGhpc09iamVjdCA9IGpzQ2FzdDxEZWJ1Z2dlckFjdGl2YXRpb24q
PihjZWxsKTsKICAgICByZXR1cm4gdGhpc09iamVjdC0+bV9hY3RpdmF0aW9uLT5tZXRob2RUYWJs
ZSgpLT5nZXRPd25Qcm9wZXJ0eVNsb3QodGhpc09iamVjdC0+bV9hY3RpdmF0aW9uLmdldCgpLCBl
eGVjLCBwcm9wZXJ0eU5hbWUsIHNsb3QpOwogfQogCi12b2lkIERlYnVnZ2VyQWN0aXZhdGlvbjo6
cHV0KEpTQ2VsbCogY2VsbCwgRXhlY1N0YXRlKiBleGVjLCBjb25zdCBJZGVudGlmaWVyJiBwcm9w
ZXJ0eU5hbWUsIEpTVmFsdWUgdmFsdWUsIFB1dFByb3BlcnR5U2xvdCYgc2xvdCkKK3ZvaWQgRGVi
dWdnZXJBY3RpdmF0aW9uOjpwdXQoSlNDZWxsKiBjZWxsLCBFeGVjU3RhdGUqIGV4ZWMsIFByb3Bl
cnR5TmFtZSBwcm9wZXJ0eU5hbWUsIEpTVmFsdWUgdmFsdWUsIFB1dFByb3BlcnR5U2xvdCYgc2xv
dCkKIHsKICAgICBEZWJ1Z2dlckFjdGl2YXRpb24qIHRoaXNPYmplY3QgPSBqc0Nhc3Q8RGVidWdn
ZXJBY3RpdmF0aW9uKj4oY2VsbCk7CiAgICAgdGhpc09iamVjdC0+bV9hY3RpdmF0aW9uLT5tZXRo
b2RUYWJsZSgpLT5wdXQodGhpc09iamVjdC0+bV9hY3RpdmF0aW9uLmdldCgpLCBleGVjLCBwcm9w
ZXJ0eU5hbWUsIHZhbHVlLCBzbG90KTsKIH0KIAotdm9pZCBEZWJ1Z2dlckFjdGl2YXRpb246OnB1
dERpcmVjdFZpcnR1YWwoSlNPYmplY3QqIG9iamVjdCwgRXhlY1N0YXRlKiBleGVjLCBjb25zdCBJ
ZGVudGlmaWVyJiBwcm9wZXJ0eU5hbWUsIEpTVmFsdWUgdmFsdWUsIHVuc2lnbmVkIGF0dHJpYnV0
ZXMpCit2b2lkIERlYnVnZ2VyQWN0aXZhdGlvbjo6cHV0RGlyZWN0VmlydHVhbChKU09iamVjdCog
b2JqZWN0LCBFeGVjU3RhdGUqIGV4ZWMsIFByb3BlcnR5TmFtZSBwcm9wZXJ0eU5hbWUsIEpTVmFs
dWUgdmFsdWUsIHVuc2lnbmVkIGF0dHJpYnV0ZXMpCiB7CiAgICAgRGVidWdnZXJBY3RpdmF0aW9u
KiB0aGlzT2JqZWN0ID0ganNDYXN0PERlYnVnZ2VyQWN0aXZhdGlvbio+KG9iamVjdCk7CiAgICAg
dGhpc09iamVjdC0+bV9hY3RpdmF0aW9uLT5tZXRob2RUYWJsZSgpLT5wdXREaXJlY3RWaXJ0dWFs
KHRoaXNPYmplY3QtPm1fYWN0aXZhdGlvbi5nZXQoKSwgZXhlYywgcHJvcGVydHlOYW1lLCB2YWx1
ZSwgYXR0cmlidXRlcyk7CiB9CiAKLWJvb2wgRGVidWdnZXJBY3RpdmF0aW9uOjpkZWxldGVQcm9w
ZXJ0eShKU0NlbGwqIGNlbGwsIEV4ZWNTdGF0ZSogZXhlYywgY29uc3QgSWRlbnRpZmllciYgcHJv
cGVydHlOYW1lKQorYm9vbCBEZWJ1Z2dlckFjdGl2YXRpb246OmRlbGV0ZVByb3BlcnR5KEpTQ2Vs
bCogY2VsbCwgRXhlY1N0YXRlKiBleGVjLCBQcm9wZXJ0eU5hbWUgcHJvcGVydHlOYW1lKQogewog
ICAgIERlYnVnZ2VyQWN0aXZhdGlvbiogdGhpc09iamVjdCA9IGpzQ2FzdDxEZWJ1Z2dlckFjdGl2
YXRpb24qPihjZWxsKTsKICAgICByZXR1cm4gdGhpc09iamVjdC0+bV9hY3RpdmF0aW9uLT5tZXRo
b2RUYWJsZSgpLT5kZWxldGVQcm9wZXJ0eSh0aGlzT2JqZWN0LT5tX2FjdGl2YXRpb24uZ2V0KCks
IGV4ZWMsIHByb3BlcnR5TmFtZSk7CkBAIC05NSwxMyArOTUsMTMgQEAgdm9pZCBEZWJ1Z2dlckFj
dGl2YXRpb246OmdldE93blByb3BlcnR5TgogICAgIHRoaXNPYmplY3QtPm1fYWN0aXZhdGlvbi0+
bWV0aG9kVGFibGUoKS0+Z2V0UHJvcGVydHlOYW1lcyh0aGlzT2JqZWN0LT5tX2FjdGl2YXRpb24u
Z2V0KCksIGV4ZWMsIHByb3BlcnR5TmFtZXMsIG1vZGUpOwogfQogCi1ib29sIERlYnVnZ2VyQWN0
aXZhdGlvbjo6Z2V0T3duUHJvcGVydHlEZXNjcmlwdG9yKEpTT2JqZWN0KiBvYmplY3QsIEV4ZWNT
dGF0ZSogZXhlYywgY29uc3QgSWRlbnRpZmllciYgcHJvcGVydHlOYW1lLCBQcm9wZXJ0eURlc2Ny
aXB0b3ImIGRlc2NyaXB0b3IpCitib29sIERlYnVnZ2VyQWN0aXZhdGlvbjo6Z2V0T3duUHJvcGVy
dHlEZXNjcmlwdG9yKEpTT2JqZWN0KiBvYmplY3QsIEV4ZWNTdGF0ZSogZXhlYywgUHJvcGVydHlO
YW1lIHByb3BlcnR5TmFtZSwgUHJvcGVydHlEZXNjcmlwdG9yJiBkZXNjcmlwdG9yKQogewogICAg
IERlYnVnZ2VyQWN0aXZhdGlvbiogdGhpc09iamVjdCA9IGpzQ2FzdDxEZWJ1Z2dlckFjdGl2YXRp
b24qPihvYmplY3QpOwogICAgIHJldHVybiB0aGlzT2JqZWN0LT5tX2FjdGl2YXRpb24tPm1ldGhv
ZFRhYmxlKCktPmdldE93blByb3BlcnR5RGVzY3JpcHRvcih0aGlzT2JqZWN0LT5tX2FjdGl2YXRp
b24uZ2V0KCksIGV4ZWMsIHByb3BlcnR5TmFtZSwgZGVzY3JpcHRvcik7CiB9CiAKLWJvb2wgRGVi
dWdnZXJBY3RpdmF0aW9uOjpkZWZpbmVPd25Qcm9wZXJ0eShKU09iamVjdCogb2JqZWN0LCBFeGVj
U3RhdGUqIGV4ZWMsIGNvbnN0IElkZW50aWZpZXImIHByb3BlcnR5TmFtZSwgUHJvcGVydHlEZXNj
cmlwdG9yJiBkZXNjcmlwdG9yLCBib29sIHNob3VsZFRocm93KQorYm9vbCBEZWJ1Z2dlckFjdGl2
YXRpb246OmRlZmluZU93blByb3BlcnR5KEpTT2JqZWN0KiBvYmplY3QsIEV4ZWNTdGF0ZSogZXhl
YywgUHJvcGVydHlOYW1lIHByb3BlcnR5TmFtZSwgUHJvcGVydHlEZXNjcmlwdG9yJiBkZXNjcmlw
dG9yLCBib29sIHNob3VsZFRocm93KQogewogICAgIERlYnVnZ2VyQWN0aXZhdGlvbiogdGhpc09i
amVjdCA9IGpzQ2FzdDxEZWJ1Z2dlckFjdGl2YXRpb24qPihvYmplY3QpOwogICAgIHJldHVybiB0
aGlzT2JqZWN0LT5tX2FjdGl2YXRpb24tPm1ldGhvZFRhYmxlKCktPmRlZmluZU93blByb3BlcnR5
KHRoaXNPYmplY3QtPm1fYWN0aXZhdGlvbi5nZXQoKSwgZXhlYywgcHJvcGVydHlOYW1lLCBkZXNj
cmlwdG9yLCBzaG91bGRUaHJvdyk7CkluZGV4OiBTb3VyY2UvSmF2YVNjcmlwdENvcmUvZGVidWdn
ZXIvRGVidWdnZXJBY3RpdmF0aW9uLmgKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL0phdmFTY3JpcHRD
b3JlL2RlYnVnZ2VyL0RlYnVnZ2VyQWN0aXZhdGlvbi5oCShyZXZpc2lvbiAxMTY2NjcpCisrKyBT
b3VyY2UvSmF2YVNjcmlwdENvcmUvZGVidWdnZXIvRGVidWdnZXJBY3RpdmF0aW9uLmgJKHdvcmtp
bmcgY29weSkKQEAgLTQzLDEzICs0MywxMyBAQCBuYW1lc3BhY2UgSlNDIHsKIAogICAgICAgICBz
dGF0aWMgdm9pZCB2aXNpdENoaWxkcmVuKEpTQ2VsbCosIFNsb3RWaXNpdG9yJik7CiAgICAgICAg
IHN0YXRpYyBVU3RyaW5nIGNsYXNzTmFtZShjb25zdCBKU09iamVjdCopOwotICAgICAgICBzdGF0
aWMgYm9vbCBnZXRPd25Qcm9wZXJ0eVNsb3QoSlNDZWxsKiwgRXhlY1N0YXRlKiwgY29uc3QgSWRl
bnRpZmllciYgcHJvcGVydHlOYW1lLCBQcm9wZXJ0eVNsb3QmKTsKLSAgICAgICAgc3RhdGljIHZv
aWQgcHV0KEpTQ2VsbCosIEV4ZWNTdGF0ZSosIGNvbnN0IElkZW50aWZpZXImIHByb3BlcnR5TmFt
ZSwgSlNWYWx1ZSwgUHV0UHJvcGVydHlTbG90Jik7Ci0gICAgICAgIHN0YXRpYyB2b2lkIHB1dERp
cmVjdFZpcnR1YWwoSlNPYmplY3QqLCBFeGVjU3RhdGUqLCBjb25zdCBJZGVudGlmaWVyJiBwcm9w
ZXJ0eU5hbWUsIEpTVmFsdWUsIHVuc2lnbmVkIGF0dHJpYnV0ZXMpOwotICAgICAgICBzdGF0aWMg
Ym9vbCBkZWxldGVQcm9wZXJ0eShKU0NlbGwqLCBFeGVjU3RhdGUqLCBjb25zdCBJZGVudGlmaWVy
JiBwcm9wZXJ0eU5hbWUpOworICAgICAgICBzdGF0aWMgYm9vbCBnZXRPd25Qcm9wZXJ0eVNsb3Qo
SlNDZWxsKiwgRXhlY1N0YXRlKiwgUHJvcGVydHlOYW1lLCBQcm9wZXJ0eVNsb3QmKTsKKyAgICAg
ICAgc3RhdGljIHZvaWQgcHV0KEpTQ2VsbCosIEV4ZWNTdGF0ZSosIFByb3BlcnR5TmFtZSwgSlNW
YWx1ZSwgUHV0UHJvcGVydHlTbG90Jik7CisgICAgICAgIHN0YXRpYyB2b2lkIHB1dERpcmVjdFZp
cnR1YWwoSlNPYmplY3QqLCBFeGVjU3RhdGUqLCBQcm9wZXJ0eU5hbWUsIEpTVmFsdWUsIHVuc2ln
bmVkIGF0dHJpYnV0ZXMpOworICAgICAgICBzdGF0aWMgYm9vbCBkZWxldGVQcm9wZXJ0eShKU0Nl
bGwqLCBFeGVjU3RhdGUqLCBQcm9wZXJ0eU5hbWUpOwogICAgICAgICBzdGF0aWMgdm9pZCBnZXRP
d25Qcm9wZXJ0eU5hbWVzKEpTT2JqZWN0KiwgRXhlY1N0YXRlKiwgUHJvcGVydHlOYW1lQXJyYXkm
LCBFbnVtZXJhdGlvbk1vZGUpOwotICAgICAgICBzdGF0aWMgYm9vbCBnZXRPd25Qcm9wZXJ0eURl
c2NyaXB0b3IoSlNPYmplY3QqLCBFeGVjU3RhdGUqLCBjb25zdCBJZGVudGlmaWVyJiwgUHJvcGVy
dHlEZXNjcmlwdG9yJik7Ci0gICAgICAgIHN0YXRpYyBib29sIGRlZmluZU93blByb3BlcnR5KEpT
T2JqZWN0KiwgRXhlY1N0YXRlKiwgY29uc3QgSWRlbnRpZmllciYgcHJvcGVydHlOYW1lLCBQcm9w
ZXJ0eURlc2NyaXB0b3ImLCBib29sIHNob3VsZFRocm93KTsKKyAgICAgICAgc3RhdGljIGJvb2wg
Z2V0T3duUHJvcGVydHlEZXNjcmlwdG9yKEpTT2JqZWN0KiwgRXhlY1N0YXRlKiwgUHJvcGVydHlO
YW1lLCBQcm9wZXJ0eURlc2NyaXB0b3ImKTsKKyAgICAgICAgc3RhdGljIGJvb2wgZGVmaW5lT3du
UHJvcGVydHkoSlNPYmplY3QqLCBFeGVjU3RhdGUqLCBQcm9wZXJ0eU5hbWUsIFByb3BlcnR5RGVz
Y3JpcHRvciYsIGJvb2wgc2hvdWxkVGhyb3cpOwogCiAgICAgICAgIEpTX0VYUE9SVERBVEEgc3Rh
dGljIGNvbnN0IENsYXNzSW5mbyBzX2luZm87CiAKSW5kZXg6IFNvdXJjZS9KYXZhU2NyaXB0Q29y
ZS9ydW50aW1lL0FyZ3VtZW50cy5jcHAKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL0phdmFTY3JpcHRD
b3JlL3J1bnRpbWUvQXJndW1lbnRzLmNwcAkocmV2aXNpb24gMTE2NjY3KQorKysgU291cmNlL0ph
dmFTY3JpcHRDb3JlL3J1bnRpbWUvQXJndW1lbnRzLmNwcAkod29ya2luZyBjb3B5KQpAQCAtMTI0
LDEyICsxMjQsMTIgQEAgdm9pZCBBcmd1bWVudHM6OmNyZWF0ZVN0cmljdE1vZGVDYWxsZWVJZgog
ICAgIG1ldGhvZFRhYmxlKCktPmRlZmluZU93blByb3BlcnR5KHRoaXMsIGV4ZWMsIGV4ZWMtPnBy
b3BlcnR5TmFtZXMoKS5jYWxsZWUsIGRlc2NyaXB0b3IsIGZhbHNlKTsKIH0KIAotYm9vbCBBcmd1
bWVudHM6OmdldE93blByb3BlcnR5U2xvdChKU0NlbGwqIGNlbGwsIEV4ZWNTdGF0ZSogZXhlYywg
Y29uc3QgSWRlbnRpZmllciYgcHJvcGVydHlOYW1lLCBQcm9wZXJ0eVNsb3QmIHNsb3QpCitib29s
IEFyZ3VtZW50czo6Z2V0T3duUHJvcGVydHlTbG90KEpTQ2VsbCogY2VsbCwgRXhlY1N0YXRlKiBl
eGVjLCBQcm9wZXJ0eU5hbWUgcHJvcGVydHlOYW1lLCBQcm9wZXJ0eVNsb3QmIHNsb3QpCiB7CiAg
ICAgQXJndW1lbnRzKiB0aGlzT2JqZWN0ID0ganNDYXN0PEFyZ3VtZW50cyo+KGNlbGwpOwotICAg
IGJvb2wgaXNBcnJheUluZGV4OwotICAgIHVuc2lnbmVkIGkgPSBwcm9wZXJ0eU5hbWUudG9BcnJh
eUluZGV4KGlzQXJyYXlJbmRleCk7Ci0gICAgaWYgKGlzQXJyYXlJbmRleCAmJiBpIDwgdGhpc09i
amVjdC0+ZC0+bnVtQXJndW1lbnRzICYmICghdGhpc09iamVjdC0+ZC0+ZGVsZXRlZEFyZ3VtZW50
cyB8fCAhdGhpc09iamVjdC0+ZC0+ZGVsZXRlZEFyZ3VtZW50c1tpXSkpIHsKKyAgICB1bnNpZ25l
ZCBpID0gcHJvcGVydHlOYW1lLmFzSW5kZXgoKTsKKyAgICBpZiAoaSA8IHRoaXNPYmplY3QtPmQt
Pm51bUFyZ3VtZW50cyAmJiAoIXRoaXNPYmplY3QtPmQtPmRlbGV0ZWRBcmd1bWVudHMgfHwgIXRo
aXNPYmplY3QtPmQtPmRlbGV0ZWRBcmd1bWVudHNbaV0pKSB7CisgICAgICAgIEFTU0VSVChpIDwg
UHJvcGVydHlOYW1lOjpOb3RBbkluZGV4KTsKICAgICAgICAgc2xvdC5zZXRWYWx1ZSh0aGlzT2Jq
ZWN0LT5hcmd1bWVudChpKS5nZXQoKSk7CiAgICAgICAgIHJldHVybiB0cnVlOwogICAgIH0KQEAg
LTE1MywxMiArMTUzLDEyIEBAIGJvb2wgQXJndW1lbnRzOjpnZXRPd25Qcm9wZXJ0eVNsb3QoSlND
ZWwKICAgICByZXR1cm4gSlNPYmplY3Q6OmdldE93blByb3BlcnR5U2xvdCh0aGlzT2JqZWN0LCBl
eGVjLCBwcm9wZXJ0eU5hbWUsIHNsb3QpOwogfQogCi1ib29sIEFyZ3VtZW50czo6Z2V0T3duUHJv
cGVydHlEZXNjcmlwdG9yKEpTT2JqZWN0KiBvYmplY3QsIEV4ZWNTdGF0ZSogZXhlYywgY29uc3Qg
SWRlbnRpZmllciYgcHJvcGVydHlOYW1lLCBQcm9wZXJ0eURlc2NyaXB0b3ImIGRlc2NyaXB0b3Ip
Citib29sIEFyZ3VtZW50czo6Z2V0T3duUHJvcGVydHlEZXNjcmlwdG9yKEpTT2JqZWN0KiBvYmpl
Y3QsIEV4ZWNTdGF0ZSogZXhlYywgUHJvcGVydHlOYW1lIHByb3BlcnR5TmFtZSwgUHJvcGVydHlE
ZXNjcmlwdG9yJiBkZXNjcmlwdG9yKQogewogICAgIEFyZ3VtZW50cyogdGhpc09iamVjdCA9IGpz
Q2FzdDxBcmd1bWVudHMqPihvYmplY3QpOwotICAgIGJvb2wgaXNBcnJheUluZGV4OwotICAgIHVu
c2lnbmVkIGkgPSBwcm9wZXJ0eU5hbWUudG9BcnJheUluZGV4KGlzQXJyYXlJbmRleCk7Ci0gICAg
aWYgKGlzQXJyYXlJbmRleCAmJiBpIDwgdGhpc09iamVjdC0+ZC0+bnVtQXJndW1lbnRzICYmICgh
dGhpc09iamVjdC0+ZC0+ZGVsZXRlZEFyZ3VtZW50cyB8fCAhdGhpc09iamVjdC0+ZC0+ZGVsZXRl
ZEFyZ3VtZW50c1tpXSkpIHsKKyAgICB1bnNpZ25lZCBpID0gcHJvcGVydHlOYW1lLmFzSW5kZXgo
KTsKKyAgICBpZiAoaSA8IHRoaXNPYmplY3QtPmQtPm51bUFyZ3VtZW50cyAmJiAoIXRoaXNPYmpl
Y3QtPmQtPmRlbGV0ZWRBcmd1bWVudHMgfHwgIXRoaXNPYmplY3QtPmQtPmRlbGV0ZWRBcmd1bWVu
dHNbaV0pKSB7CisgICAgICAgIEFTU0VSVChpIDwgUHJvcGVydHlOYW1lOjpOb3RBbkluZGV4KTsK
ICAgICAgICAgZGVzY3JpcHRvci5zZXREZXNjcmlwdG9yKHRoaXNPYmplY3QtPmFyZ3VtZW50KGkp
LmdldCgpLCBOb25lKTsKICAgICAgICAgcmV0dXJuIHRydWU7CiAgICAgfQpAQCAtMjA4LDEyICsy
MDgsMTIgQEAgdm9pZCBBcmd1bWVudHM6OnB1dEJ5SW5kZXgoSlNDZWxsKiBjZWxsLAogICAgIEpT
T2JqZWN0OjpwdXQodGhpc09iamVjdCwgZXhlYywgSWRlbnRpZmllcihleGVjLCBVU3RyaW5nOjpu
dW1iZXIoaSkpLCB2YWx1ZSwgc2xvdCk7CiB9CiAKLXZvaWQgQXJndW1lbnRzOjpwdXQoSlNDZWxs
KiBjZWxsLCBFeGVjU3RhdGUqIGV4ZWMsIGNvbnN0IElkZW50aWZpZXImIHByb3BlcnR5TmFtZSwg
SlNWYWx1ZSB2YWx1ZSwgUHV0UHJvcGVydHlTbG90JiBzbG90KQordm9pZCBBcmd1bWVudHM6OnB1
dChKU0NlbGwqIGNlbGwsIEV4ZWNTdGF0ZSogZXhlYywgUHJvcGVydHlOYW1lIHByb3BlcnR5TmFt
ZSwgSlNWYWx1ZSB2YWx1ZSwgUHV0UHJvcGVydHlTbG90JiBzbG90KQogewogICAgIEFyZ3VtZW50
cyogdGhpc09iamVjdCA9IGpzQ2FzdDxBcmd1bWVudHMqPihjZWxsKTsKLSAgICBib29sIGlzQXJy
YXlJbmRleDsKLSAgICB1bnNpZ25lZCBpID0gcHJvcGVydHlOYW1lLnRvQXJyYXlJbmRleChpc0Fy
cmF5SW5kZXgpOwotICAgIGlmIChpc0FycmF5SW5kZXggJiYgaSA8IHRoaXNPYmplY3QtPmQtPm51
bUFyZ3VtZW50cyAmJiAoIXRoaXNPYmplY3QtPmQtPmRlbGV0ZWRBcmd1bWVudHMgfHwgIXRoaXNP
YmplY3QtPmQtPmRlbGV0ZWRBcmd1bWVudHNbaV0pKSB7CisgICAgdW5zaWduZWQgaSA9IHByb3Bl
cnR5TmFtZS5hc0luZGV4KCk7CisgICAgaWYgKGkgPCB0aGlzT2JqZWN0LT5kLT5udW1Bcmd1bWVu
dHMgJiYgKCF0aGlzT2JqZWN0LT5kLT5kZWxldGVkQXJndW1lbnRzIHx8ICF0aGlzT2JqZWN0LT5k
LT5kZWxldGVkQXJndW1lbnRzW2ldKSkgeworICAgICAgICBBU1NFUlQoaSA8IFByb3BlcnR5TmFt
ZTo6Tm90QW5JbmRleCk7CiAgICAgICAgIHRoaXNPYmplY3QtPmFyZ3VtZW50KGkpLnNldChleGVj
LT5nbG9iYWxEYXRhKCksIHRoaXNPYmplY3QsIHZhbHVlKTsKICAgICAgICAgcmV0dXJuOwogICAg
IH0KQEAgLTI1OSwxNSArMjU5LDE1IEBAIGJvb2wgQXJndW1lbnRzOjpkZWxldGVQcm9wZXJ0eUJ5
SW5kZXgoSlMKICAgICByZXR1cm4gSlNPYmplY3Q6OmRlbGV0ZVByb3BlcnR5KHRoaXNPYmplY3Qs
IGV4ZWMsIElkZW50aWZpZXIoZXhlYywgVVN0cmluZzo6bnVtYmVyKGkpKSk7CiB9CiAKLWJvb2wg
QXJndW1lbnRzOjpkZWxldGVQcm9wZXJ0eShKU0NlbGwqIGNlbGwsIEV4ZWNTdGF0ZSogZXhlYywg
Y29uc3QgSWRlbnRpZmllciYgcHJvcGVydHlOYW1lKSAKK2Jvb2wgQXJndW1lbnRzOjpkZWxldGVQ
cm9wZXJ0eShKU0NlbGwqIGNlbGwsIEV4ZWNTdGF0ZSogZXhlYywgUHJvcGVydHlOYW1lIHByb3Bl
cnR5TmFtZSkgCiB7CiAgICAgaWYgKGV4ZWMtPmdsb2JhbERhdGEoKS5pc0luRGVmaW5lT3duUHJv
cGVydHkoKSkKICAgICAgICAgcmV0dXJuIEJhc2U6OmRlbGV0ZVByb3BlcnR5KGNlbGwsIGV4ZWMs
IHByb3BlcnR5TmFtZSk7CiAKICAgICBBcmd1bWVudHMqIHRoaXNPYmplY3QgPSBqc0Nhc3Q8QXJn
dW1lbnRzKj4oY2VsbCk7Ci0gICAgYm9vbCBpc0FycmF5SW5kZXg7Ci0gICAgdW5zaWduZWQgaSA9
IHByb3BlcnR5TmFtZS50b0FycmF5SW5kZXgoaXNBcnJheUluZGV4KTsKLSAgICBpZiAoaXNBcnJh
eUluZGV4ICYmIGkgPCB0aGlzT2JqZWN0LT5kLT5udW1Bcmd1bWVudHMpIHsKKyAgICB1bnNpZ25l
ZCBpID0gcHJvcGVydHlOYW1lLmFzSW5kZXgoKTsKKyAgICBpZiAoaSA8IHRoaXNPYmplY3QtPmQt
Pm51bUFyZ3VtZW50cykgeworICAgICAgICBBU1NFUlQoaSA8IFByb3BlcnR5TmFtZTo6Tm90QW5J
bmRleCk7CiAgICAgICAgIGlmICghQmFzZTo6ZGVsZXRlUHJvcGVydHkoY2VsbCwgZXhlYywgcHJv
cGVydHlOYW1lKSkKICAgICAgICAgICAgIHJldHVybiBmYWxzZTsKIApAQCAtMzAwLDEyICszMDAs
MTIgQEAgYm9vbCBBcmd1bWVudHM6OmRlbGV0ZVByb3BlcnR5KEpTQ2VsbCogYwogICAgIHJldHVy
biBKU09iamVjdDo6ZGVsZXRlUHJvcGVydHkodGhpc09iamVjdCwgZXhlYywgcHJvcGVydHlOYW1l
KTsKIH0KIAotYm9vbCBBcmd1bWVudHM6OmRlZmluZU93blByb3BlcnR5KEpTT2JqZWN0KiBvYmpl
Y3QsIEV4ZWNTdGF0ZSogZXhlYywgY29uc3QgSWRlbnRpZmllciYgcHJvcGVydHlOYW1lLCBQcm9w
ZXJ0eURlc2NyaXB0b3ImIGRlc2NyaXB0b3IsIGJvb2wgc2hvdWxkVGhyb3cpCitib29sIEFyZ3Vt
ZW50czo6ZGVmaW5lT3duUHJvcGVydHkoSlNPYmplY3QqIG9iamVjdCwgRXhlY1N0YXRlKiBleGVj
LCBQcm9wZXJ0eU5hbWUgcHJvcGVydHlOYW1lLCBQcm9wZXJ0eURlc2NyaXB0b3ImIGRlc2NyaXB0
b3IsIGJvb2wgc2hvdWxkVGhyb3cpCiB7CiAgICAgQXJndW1lbnRzKiB0aGlzT2JqZWN0ID0ganND
YXN0PEFyZ3VtZW50cyo+KG9iamVjdCk7Ci0gICAgYm9vbCBpc0FycmF5SW5kZXg7Ci0gICAgdW5z
aWduZWQgaSA9IHByb3BlcnR5TmFtZS50b0FycmF5SW5kZXgoaXNBcnJheUluZGV4KTsKLSAgICBp
ZiAoaXNBcnJheUluZGV4ICYmIGkgPCB0aGlzT2JqZWN0LT5kLT5udW1Bcmd1bWVudHMpIHsKKyAg
ICB1bnNpZ25lZCBpID0gcHJvcGVydHlOYW1lLmFzSW5kZXgoKTsKKyAgICBpZiAoaSA8IHRoaXNP
YmplY3QtPmQtPm51bUFyZ3VtZW50cykgeworICAgICAgICBBU1NFUlQoaSA8IFByb3BlcnR5TmFt
ZTo6Tm90QW5JbmRleCk7CiAgICAgICAgIC8vIElmIHRoZSBwcm9wZXJ0eSBpcyBub3QgeWV0IHBy
ZXNlbnQgb24gdGhlIG9iamVjdCwgYW5kIGlzIG5vdCB5ZXQgbWFya2VkIGFzIGRlbGV0ZWQsIHRo
ZW4gYWRkIGl0IG5vdy4KICAgICAgICAgUHJvcGVydHlTbG90IHNsb3Q7CiAgICAgICAgIGlmICgo
IXRoaXNPYmplY3QtPmQtPmRlbGV0ZWRBcmd1bWVudHMgfHwgIXRoaXNPYmplY3QtPmQtPmRlbGV0
ZWRBcmd1bWVudHNbaV0pICYmICFKU09iamVjdDo6Z2V0T3duUHJvcGVydHlTbG90KHRoaXNPYmpl
Y3QsIGV4ZWMsIHByb3BlcnR5TmFtZSwgc2xvdCkpCkluZGV4OiBTb3VyY2UvSmF2YVNjcmlwdENv
cmUvcnVudGltZS9Bcmd1bWVudHMuaAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvSmF2YVNjcmlwdENv
cmUvcnVudGltZS9Bcmd1bWVudHMuaAkocmV2aXNpb24gMTE2NjY3KQorKysgU291cmNlL0phdmFT
Y3JpcHRDb3JlL3J1bnRpbWUvQXJndW1lbnRzLmgJKHdvcmtpbmcgY29weSkKQEAgLTEwOSwxNSAr
MTA5LDE1IEBAIG5hbWVzcGFjZSBKU0MgewogCiAgICAgcHJpdmF0ZToKICAgICAgICAgc3RhdGlj
IHZvaWQgZGVzdHJveShKU0NlbGwqKTsKLSAgICAgICAgc3RhdGljIGJvb2wgZ2V0T3duUHJvcGVy
dHlTbG90KEpTQ2VsbCosIEV4ZWNTdGF0ZSosIGNvbnN0IElkZW50aWZpZXImIHByb3BlcnR5TmFt
ZSwgUHJvcGVydHlTbG90Jik7CisgICAgICAgIHN0YXRpYyBib29sIGdldE93blByb3BlcnR5U2xv
dChKU0NlbGwqLCBFeGVjU3RhdGUqLCBQcm9wZXJ0eU5hbWUsIFByb3BlcnR5U2xvdCYpOwogICAg
ICAgICBzdGF0aWMgYm9vbCBnZXRPd25Qcm9wZXJ0eVNsb3RCeUluZGV4KEpTQ2VsbCosIEV4ZWNT
dGF0ZSosIHVuc2lnbmVkIHByb3BlcnR5TmFtZSwgUHJvcGVydHlTbG90Jik7Ci0gICAgICAgIHN0
YXRpYyBib29sIGdldE93blByb3BlcnR5RGVzY3JpcHRvcihKU09iamVjdCosIEV4ZWNTdGF0ZSos
IGNvbnN0IElkZW50aWZpZXImLCBQcm9wZXJ0eURlc2NyaXB0b3ImKTsKKyAgICAgICAgc3RhdGlj
IGJvb2wgZ2V0T3duUHJvcGVydHlEZXNjcmlwdG9yKEpTT2JqZWN0KiwgRXhlY1N0YXRlKiwgUHJv
cGVydHlOYW1lLCBQcm9wZXJ0eURlc2NyaXB0b3ImKTsKICAgICAgICAgc3RhdGljIHZvaWQgZ2V0
T3duUHJvcGVydHlOYW1lcyhKU09iamVjdCosIEV4ZWNTdGF0ZSosIFByb3BlcnR5TmFtZUFycmF5
JiwgRW51bWVyYXRpb25Nb2RlKTsKLSAgICAgICAgc3RhdGljIHZvaWQgcHV0KEpTQ2VsbCosIEV4
ZWNTdGF0ZSosIGNvbnN0IElkZW50aWZpZXImIHByb3BlcnR5TmFtZSwgSlNWYWx1ZSwgUHV0UHJv
cGVydHlTbG90Jik7CisgICAgICAgIHN0YXRpYyB2b2lkIHB1dChKU0NlbGwqLCBFeGVjU3RhdGUq
LCBQcm9wZXJ0eU5hbWUsIEpTVmFsdWUsIFB1dFByb3BlcnR5U2xvdCYpOwogICAgICAgICBzdGF0
aWMgdm9pZCBwdXRCeUluZGV4KEpTQ2VsbCosIEV4ZWNTdGF0ZSosIHVuc2lnbmVkIHByb3BlcnR5
TmFtZSwgSlNWYWx1ZSwgYm9vbCBzaG91bGRUaHJvdyk7Ci0gICAgICAgIHN0YXRpYyBib29sIGRl
bGV0ZVByb3BlcnR5KEpTQ2VsbCosIEV4ZWNTdGF0ZSosIGNvbnN0IElkZW50aWZpZXImIHByb3Bl
cnR5TmFtZSk7CisgICAgICAgIHN0YXRpYyBib29sIGRlbGV0ZVByb3BlcnR5KEpTQ2VsbCosIEV4
ZWNTdGF0ZSosIFByb3BlcnR5TmFtZSk7CiAgICAgICAgIHN0YXRpYyBib29sIGRlbGV0ZVByb3Bl
cnR5QnlJbmRleChKU0NlbGwqLCBFeGVjU3RhdGUqLCB1bnNpZ25lZCBwcm9wZXJ0eU5hbWUpOwot
ICAgICAgICBzdGF0aWMgYm9vbCBkZWZpbmVPd25Qcm9wZXJ0eShKU09iamVjdCosIEV4ZWNTdGF0
ZSosIGNvbnN0IElkZW50aWZpZXImIHByb3BlcnR5TmFtZSwgUHJvcGVydHlEZXNjcmlwdG9yJiwg
Ym9vbCBzaG91bGRUaHJvdyk7CisgICAgICAgIHN0YXRpYyBib29sIGRlZmluZU93blByb3BlcnR5
KEpTT2JqZWN0KiwgRXhlY1N0YXRlKiwgUHJvcGVydHlOYW1lLCBQcm9wZXJ0eURlc2NyaXB0b3Im
LCBib29sIHNob3VsZFRocm93KTsKICAgICAgICAgdm9pZCBjcmVhdGVTdHJpY3RNb2RlQ2FsbGVy
SWZOZWNlc3NhcnkoRXhlY1N0YXRlKik7CiAgICAgICAgIHZvaWQgY3JlYXRlU3RyaWN0TW9kZUNh
bGxlZUlmTmVjZXNzYXJ5KEV4ZWNTdGF0ZSopOwogCkluZGV4OiBTb3VyY2UvSmF2YVNjcmlwdENv
cmUvcnVudGltZS9BcnJheUNvbnN0cnVjdG9yLmNwcAo9PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvSmF2
YVNjcmlwdENvcmUvcnVudGltZS9BcnJheUNvbnN0cnVjdG9yLmNwcAkocmV2aXNpb24gMTE2NjY3
KQorKysgU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvQXJyYXlDb25zdHJ1Y3Rvci5jcHAJ
KHdvcmtpbmcgY29weSkKQEAgLTYwLDE3ICs2MCwxNyBAQCBBcnJheUNvbnN0cnVjdG9yOjpBcnJh
eUNvbnN0cnVjdG9yKEpTR2xvCiAKIHZvaWQgQXJyYXlDb25zdHJ1Y3Rvcjo6ZmluaXNoQ3JlYXRp
b24oRXhlY1N0YXRlKiBleGVjLCBBcnJheVByb3RvdHlwZSogYXJyYXlQcm90b3R5cGUpCiB7Ci0g
ICAgQmFzZTo6ZmluaXNoQ3JlYXRpb24oZXhlYy0+Z2xvYmFsRGF0YSgpLCBJZGVudGlmaWVyKGV4
ZWMsIGFycmF5UHJvdG90eXBlLT5jbGFzc0luZm8oKS0+Y2xhc3NOYW1lKSk7CisgICAgQmFzZTo6
ZmluaXNoQ3JlYXRpb24oZXhlYy0+Z2xvYmFsRGF0YSgpLCBhcnJheVByb3RvdHlwZS0+Y2xhc3NJ
bmZvKCktPmNsYXNzTmFtZSk7CiAgICAgcHV0RGlyZWN0V2l0aG91dFRyYW5zaXRpb24oZXhlYy0+
Z2xvYmFsRGF0YSgpLCBleGVjLT5wcm9wZXJ0eU5hbWVzKCkucHJvdG90eXBlLCBhcnJheVByb3Rv
dHlwZSwgRG9udEVudW0gfCBEb250RGVsZXRlIHwgUmVhZE9ubHkpOwogICAgIHB1dERpcmVjdFdp
dGhvdXRUcmFuc2l0aW9uKGV4ZWMtPmdsb2JhbERhdGEoKSwgZXhlYy0+cHJvcGVydHlOYW1lcygp
Lmxlbmd0aCwganNOdW1iZXIoMSksIFJlYWRPbmx5IHwgRG9udEVudW0gfCBEb250RGVsZXRlKTsK
IH0KIAotYm9vbCBBcnJheUNvbnN0cnVjdG9yOjpnZXRPd25Qcm9wZXJ0eVNsb3QoSlNDZWxsKiBj
ZWxsLCBFeGVjU3RhdGUqIGV4ZWMsIGNvbnN0IElkZW50aWZpZXImIHByb3BlcnR5TmFtZSwgUHJv
cGVydHlTbG90ICZzbG90KQorYm9vbCBBcnJheUNvbnN0cnVjdG9yOjpnZXRPd25Qcm9wZXJ0eVNs
b3QoSlNDZWxsKiBjZWxsLCBFeGVjU3RhdGUqIGV4ZWMsIFByb3BlcnR5TmFtZSBwcm9wZXJ0eU5h
bWUsIFByb3BlcnR5U2xvdCAmc2xvdCkKIHsKICAgICByZXR1cm4gZ2V0U3RhdGljRnVuY3Rpb25T
bG90PEludGVybmFsRnVuY3Rpb24+KGV4ZWMsIEV4ZWNTdGF0ZTo6YXJyYXlDb25zdHJ1Y3RvclRh
YmxlKGV4ZWMpLCBqc0Nhc3Q8QXJyYXlDb25zdHJ1Y3Rvcio+KGNlbGwpLCBwcm9wZXJ0eU5hbWUs
IHNsb3QpOwogfQogCi1ib29sIEFycmF5Q29uc3RydWN0b3I6OmdldE93blByb3BlcnR5RGVzY3Jp
cHRvcihKU09iamVjdCogb2JqZWN0LCBFeGVjU3RhdGUqIGV4ZWMsIGNvbnN0IElkZW50aWZpZXIm
IHByb3BlcnR5TmFtZSwgUHJvcGVydHlEZXNjcmlwdG9yJiBkZXNjcmlwdG9yKQorYm9vbCBBcnJh
eUNvbnN0cnVjdG9yOjpnZXRPd25Qcm9wZXJ0eURlc2NyaXB0b3IoSlNPYmplY3QqIG9iamVjdCwg
RXhlY1N0YXRlKiBleGVjLCBQcm9wZXJ0eU5hbWUgcHJvcGVydHlOYW1lLCBQcm9wZXJ0eURlc2Ny
aXB0b3ImIGRlc2NyaXB0b3IpCiB7CiAgICAgcmV0dXJuIGdldFN0YXRpY0Z1bmN0aW9uRGVzY3Jp
cHRvcjxJbnRlcm5hbEZ1bmN0aW9uPihleGVjLCBFeGVjU3RhdGU6OmFycmF5Q29uc3RydWN0b3JU
YWJsZShleGVjKSwganNDYXN0PEFycmF5Q29uc3RydWN0b3IqPihvYmplY3QpLCBwcm9wZXJ0eU5h
bWUsIGRlc2NyaXB0b3IpOwogfQpJbmRleDogU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUv
QXJyYXlDb25zdHJ1Y3Rvci5oCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9y
dW50aW1lL0FycmF5Q29uc3RydWN0b3IuaAkocmV2aXNpb24gMTE2NjY3KQorKysgU291cmNlL0ph
dmFTY3JpcHRDb3JlL3J1bnRpbWUvQXJyYXlDb25zdHJ1Y3Rvci5oCSh3b3JraW5nIGNvcHkpCkBA
IC01MSw5ICs1MSw5IEBAIG5hbWVzcGFjZSBKU0MgewogCiAgICAgcHJpdmF0ZToKICAgICAgICAg
QXJyYXlDb25zdHJ1Y3RvcihKU0dsb2JhbE9iamVjdCosIFN0cnVjdHVyZSopOwotICAgICAgICBz
dGF0aWMgYm9vbCBnZXRPd25Qcm9wZXJ0eVNsb3QoSlNDZWxsKiwgRXhlY1N0YXRlKiwgY29uc3Qg
SWRlbnRpZmllciYsIFByb3BlcnR5U2xvdCYpOworICAgICAgICBzdGF0aWMgYm9vbCBnZXRPd25Q
cm9wZXJ0eVNsb3QoSlNDZWxsKiwgRXhlY1N0YXRlKiwgUHJvcGVydHlOYW1lLCBQcm9wZXJ0eVNs
b3QmKTsKIAotICAgICAgICBzdGF0aWMgYm9vbCBnZXRPd25Qcm9wZXJ0eURlc2NyaXB0b3IoSlNP
YmplY3QqLCBFeGVjU3RhdGUqLCBjb25zdCBJZGVudGlmaWVyJiwgUHJvcGVydHlEZXNjcmlwdG9y
Jik7CisgICAgICAgIHN0YXRpYyBib29sIGdldE93blByb3BlcnR5RGVzY3JpcHRvcihKU09iamVj
dCosIEV4ZWNTdGF0ZSosIFByb3BlcnR5TmFtZSwgUHJvcGVydHlEZXNjcmlwdG9yJik7CiAKICAg
ICAgICAgc3RhdGljIENvbnN0cnVjdFR5cGUgZ2V0Q29uc3RydWN0RGF0YShKU0NlbGwqLCBDb25z
dHJ1Y3REYXRhJik7CiAgICAgICAgIHN0YXRpYyBDYWxsVHlwZSBnZXRDYWxsRGF0YShKU0NlbGwq
LCBDYWxsRGF0YSYpOwpJbmRleDogU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvQXJyYXlQ
cm90b3R5cGUuY3BwCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1l
L0FycmF5UHJvdG90eXBlLmNwcAkocmV2aXNpb24gMTE2NjY3KQorKysgU291cmNlL0phdmFTY3Jp
cHRDb3JlL3J1bnRpbWUvQXJyYXlQcm90b3R5cGUuY3BwCSh3b3JraW5nIGNvcHkpCkBAIC0xMjYs
MTIgKzEyNiwxMiBAQCB2b2lkIEFycmF5UHJvdG90eXBlOjpmaW5pc2hDcmVhdGlvbihKU0dsCiAg
ICAgQVNTRVJUKGluaGVyaXRzKCZzX2luZm8pKTsKIH0KIAotYm9vbCBBcnJheVByb3RvdHlwZTo6
Z2V0T3duUHJvcGVydHlTbG90KEpTQ2VsbCogY2VsbCwgRXhlY1N0YXRlKiBleGVjLCBjb25zdCBJ
ZGVudGlmaWVyJiBwcm9wZXJ0eU5hbWUsIFByb3BlcnR5U2xvdCYgc2xvdCkKK2Jvb2wgQXJyYXlQ
cm90b3R5cGU6OmdldE93blByb3BlcnR5U2xvdChKU0NlbGwqIGNlbGwsIEV4ZWNTdGF0ZSogZXhl
YywgUHJvcGVydHlOYW1lIHByb3BlcnR5TmFtZSwgUHJvcGVydHlTbG90JiBzbG90KQogewogICAg
IHJldHVybiBnZXRTdGF0aWNGdW5jdGlvblNsb3Q8SlNBcnJheT4oZXhlYywgRXhlY1N0YXRlOjph
cnJheVByb3RvdHlwZVRhYmxlKGV4ZWMpLCBqc0Nhc3Q8QXJyYXlQcm90b3R5cGUqPihjZWxsKSwg
cHJvcGVydHlOYW1lLCBzbG90KTsKIH0KIAotYm9vbCBBcnJheVByb3RvdHlwZTo6Z2V0T3duUHJv
cGVydHlEZXNjcmlwdG9yKEpTT2JqZWN0KiBvYmplY3QsIEV4ZWNTdGF0ZSogZXhlYywgY29uc3Qg
SWRlbnRpZmllciYgcHJvcGVydHlOYW1lLCBQcm9wZXJ0eURlc2NyaXB0b3ImIGRlc2NyaXB0b3Ip
Citib29sIEFycmF5UHJvdG90eXBlOjpnZXRPd25Qcm9wZXJ0eURlc2NyaXB0b3IoSlNPYmplY3Qq
IG9iamVjdCwgRXhlY1N0YXRlKiBleGVjLCBQcm9wZXJ0eU5hbWUgcHJvcGVydHlOYW1lLCBQcm9w
ZXJ0eURlc2NyaXB0b3ImIGRlc2NyaXB0b3IpCiB7CiAgICAgcmV0dXJuIGdldFN0YXRpY0Z1bmN0
aW9uRGVzY3JpcHRvcjxKU0FycmF5PihleGVjLCBFeGVjU3RhdGU6OmFycmF5UHJvdG90eXBlVGFi
bGUoZXhlYyksIGpzQ2FzdDxBcnJheVByb3RvdHlwZSo+KG9iamVjdCksIHByb3BlcnR5TmFtZSwg
ZGVzY3JpcHRvcik7CiB9CkBAIC0xNDcsNyArMTQ3LDcgQEAgc3RhdGljIEpTVmFsdWUgZ2V0UHJv
cGVydHkoRXhlY1N0YXRlKiBleAogICAgIHJldHVybiBzbG90LmdldFZhbHVlKGV4ZWMsIGluZGV4
KTsKIH0KIAotc3RhdGljIHZvaWQgcHV0UHJvcGVydHkoRXhlY1N0YXRlKiBleGVjLCBKU09iamVj
dCogb2JqLCBjb25zdCBJZGVudGlmaWVyJiBwcm9wZXJ0eU5hbWUsIEpTVmFsdWUgdmFsdWUpCitz
dGF0aWMgdm9pZCBwdXRQcm9wZXJ0eShFeGVjU3RhdGUqIGV4ZWMsIEpTT2JqZWN0KiBvYmosIFBy
b3BlcnR5TmFtZSBwcm9wZXJ0eU5hbWUsIEpTVmFsdWUgdmFsdWUpCiB7CiAgICAgUHV0UHJvcGVy
dHlTbG90IHNsb3Q7CiAgICAgb2JqLT5tZXRob2RUYWJsZSgpLT5wdXQob2JqLCBleGVjLCBwcm9w
ZXJ0eU5hbWUsIHZhbHVlLCBzbG90KTsKSW5kZXg6IFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50
aW1lL0FycmF5UHJvdG90eXBlLmgKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL0phdmFTY3JpcHRDb3Jl
L3J1bnRpbWUvQXJyYXlQcm90b3R5cGUuaAkocmV2aXNpb24gMTE2NjY3KQorKysgU291cmNlL0ph
dmFTY3JpcHRDb3JlL3J1bnRpbWUvQXJyYXlQcm90b3R5cGUuaAkod29ya2luZyBjb3B5KQpAQCAt
NDAsOCArNDAsOCBAQCBuYW1lc3BhY2UgSlNDIHsKICAgICAgICAgICAgIHJldHVybiBwcm90b3R5
cGU7CiAgICAgICAgIH0KICAgICAgICAgCi0gICAgICAgIHN0YXRpYyBib29sIGdldE93blByb3Bl
cnR5U2xvdChKU0NlbGwqLCBFeGVjU3RhdGUqLCBjb25zdCBJZGVudGlmaWVyJiwgUHJvcGVydHlT
bG90Jik7Ci0gICAgICAgIHN0YXRpYyBib29sIGdldE93blByb3BlcnR5RGVzY3JpcHRvcihKU09i
amVjdCosIEV4ZWNTdGF0ZSosIGNvbnN0IElkZW50aWZpZXImLCBQcm9wZXJ0eURlc2NyaXB0b3Im
KTsKKyAgICAgICAgc3RhdGljIGJvb2wgZ2V0T3duUHJvcGVydHlTbG90KEpTQ2VsbCosIEV4ZWNT
dGF0ZSosIFByb3BlcnR5TmFtZSwgUHJvcGVydHlTbG90Jik7CisgICAgICAgIHN0YXRpYyBib29s
IGdldE93blByb3BlcnR5RGVzY3JpcHRvcihKU09iamVjdCosIEV4ZWNTdGF0ZSosIFByb3BlcnR5
TmFtZSwgUHJvcGVydHlEZXNjcmlwdG9yJik7CiAKICAgICAgICAgc3RhdGljIGNvbnN0IENsYXNz
SW5mbyBzX2luZm87CiAKSW5kZXg6IFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL0Jvb2xl
YW5Db25zdHJ1Y3Rvci5jcHAKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL0phdmFTY3JpcHRDb3JlL3J1
bnRpbWUvQm9vbGVhbkNvbnN0cnVjdG9yLmNwcAkocmV2aXNpb24gMTE2NjY3KQorKysgU291cmNl
L0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvQm9vbGVhbkNvbnN0cnVjdG9yLmNwcAkod29ya2luZyBj
b3B5KQpAQCAtMzgsNyArMzgsNyBAQCBCb29sZWFuQ29uc3RydWN0b3I6OkJvb2xlYW5Db25zdHJ1
Y3RvcihKCiAKIHZvaWQgQm9vbGVhbkNvbnN0cnVjdG9yOjpmaW5pc2hDcmVhdGlvbihFeGVjU3Rh
dGUqIGV4ZWMsIEJvb2xlYW5Qcm90b3R5cGUqIGJvb2xlYW5Qcm90b3R5cGUpCiB7Ci0gICAgQmFz
ZTo6ZmluaXNoQ3JlYXRpb24oZXhlYy0+Z2xvYmFsRGF0YSgpLCBJZGVudGlmaWVyKGV4ZWMsIGJv
b2xlYW5Qcm90b3R5cGUtPmNsYXNzSW5mbygpLT5jbGFzc05hbWUpKTsKKyAgICBCYXNlOjpmaW5p
c2hDcmVhdGlvbihleGVjLT5nbG9iYWxEYXRhKCksIGJvb2xlYW5Qcm90b3R5cGUtPmNsYXNzSW5m
bygpLT5jbGFzc05hbWUpOwogICAgIHB1dERpcmVjdFdpdGhvdXRUcmFuc2l0aW9uKGV4ZWMtPmds
b2JhbERhdGEoKSwgZXhlYy0+cHJvcGVydHlOYW1lcygpLnByb3RvdHlwZSwgYm9vbGVhblByb3Rv
dHlwZSwgRG9udEVudW0gfCBEb250RGVsZXRlIHwgUmVhZE9ubHkpOwogCiAgICAgLy8gbm8uIG9m
IGFyZ3VtZW50cyBmb3IgY29uc3RydWN0b3IKSW5kZXg6IFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9y
dW50aW1lL0Jvb2xlYW5Qcm90b3R5cGUuY3BwCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9KYXZhU2Ny
aXB0Q29yZS9ydW50aW1lL0Jvb2xlYW5Qcm90b3R5cGUuY3BwCShyZXZpc2lvbiAxMTY2NjcpCisr
KyBTb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9Cb29sZWFuUHJvdG90eXBlLmNwcAkod29y
a2luZyBjb3B5KQpAQCAtNjMsMTIgKzYzLDEyIEBAIHZvaWQgQm9vbGVhblByb3RvdHlwZTo6Zmlu
aXNoQ3JlYXRpb24oRXgKICAgICBBU1NFUlQoaW5oZXJpdHMoJnNfaW5mbykpOwogfQogCi1ib29s
IEJvb2xlYW5Qcm90b3R5cGU6OmdldE93blByb3BlcnR5U2xvdChKU0NlbGwqIGNlbGwsIEV4ZWNT
dGF0ZSogZXhlYywgY29uc3QgSWRlbnRpZmllciYgcHJvcGVydHlOYW1lLCBQcm9wZXJ0eVNsb3Qg
JnNsb3QpCitib29sIEJvb2xlYW5Qcm90b3R5cGU6OmdldE93blByb3BlcnR5U2xvdChKU0NlbGwq
IGNlbGwsIEV4ZWNTdGF0ZSogZXhlYywgUHJvcGVydHlOYW1lIHByb3BlcnR5TmFtZSwgUHJvcGVy
dHlTbG90ICZzbG90KQogewogICAgIHJldHVybiBnZXRTdGF0aWNGdW5jdGlvblNsb3Q8Qm9vbGVh
bk9iamVjdD4oZXhlYywgRXhlY1N0YXRlOjpib29sZWFuUHJvdG90eXBlVGFibGUoZXhlYyksIGpz
Q2FzdDxCb29sZWFuUHJvdG90eXBlKj4oY2VsbCksIHByb3BlcnR5TmFtZSwgc2xvdCk7CiB9CiAK
LWJvb2wgQm9vbGVhblByb3RvdHlwZTo6Z2V0T3duUHJvcGVydHlEZXNjcmlwdG9yKEpTT2JqZWN0
KiBvYmplY3QsIEV4ZWNTdGF0ZSogZXhlYywgY29uc3QgSWRlbnRpZmllciYgcHJvcGVydHlOYW1l
LCBQcm9wZXJ0eURlc2NyaXB0b3ImIGRlc2NyaXB0b3IpCitib29sIEJvb2xlYW5Qcm90b3R5cGU6
OmdldE93blByb3BlcnR5RGVzY3JpcHRvcihKU09iamVjdCogb2JqZWN0LCBFeGVjU3RhdGUqIGV4
ZWMsIFByb3BlcnR5TmFtZSBwcm9wZXJ0eU5hbWUsIFByb3BlcnR5RGVzY3JpcHRvciYgZGVzY3Jp
cHRvcikKIHsKICAgICByZXR1cm4gZ2V0U3RhdGljRnVuY3Rpb25EZXNjcmlwdG9yPEJvb2xlYW5P
YmplY3Q+KGV4ZWMsIEV4ZWNTdGF0ZTo6Ym9vbGVhblByb3RvdHlwZVRhYmxlKGV4ZWMpLCBqc0Nh
c3Q8Qm9vbGVhblByb3RvdHlwZSo+KG9iamVjdCksIHByb3BlcnR5TmFtZSwgZGVzY3JpcHRvcik7
CiB9CkluZGV4OiBTb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9Cb29sZWFuUHJvdG90eXBl
LmgKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PQotLS0gU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvQm9vbGVhblBy
b3RvdHlwZS5oCShyZXZpc2lvbiAxMTY2NjcpCisrKyBTb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVu
dGltZS9Cb29sZWFuUHJvdG90eXBlLmgJKHdvcmtpbmcgY29weSkKQEAgLTQ5LDkgKzQ5LDkgQEAg
bmFtZXNwYWNlIEpTQyB7CiAKICAgICBwcml2YXRlOgogICAgICAgICBCb29sZWFuUHJvdG90eXBl
KEV4ZWNTdGF0ZSosIFN0cnVjdHVyZSopOwotICAgICAgICBzdGF0aWMgYm9vbCBnZXRPd25Qcm9w
ZXJ0eVNsb3QoSlNDZWxsKiwgRXhlY1N0YXRlKiwgY29uc3QgSWRlbnRpZmllciYsIFByb3BlcnR5
U2xvdCYpOworICAgICAgICBzdGF0aWMgYm9vbCBnZXRPd25Qcm9wZXJ0eVNsb3QoSlNDZWxsKiwg
RXhlY1N0YXRlKiwgUHJvcGVydHlOYW1lLCBQcm9wZXJ0eVNsb3QmKTsKIAotICAgICAgICBzdGF0
aWMgYm9vbCBnZXRPd25Qcm9wZXJ0eURlc2NyaXB0b3IoSlNPYmplY3QqLCBFeGVjU3RhdGUqLCBj
b25zdCBJZGVudGlmaWVyJiwgUHJvcGVydHlEZXNjcmlwdG9yJik7CisgICAgICAgIHN0YXRpYyBi
b29sIGdldE93blByb3BlcnR5RGVzY3JpcHRvcihKU09iamVjdCosIEV4ZWNTdGF0ZSosIFByb3Bl
cnR5TmFtZSwgUHJvcGVydHlEZXNjcmlwdG9yJik7CiAgICAgfTsKIAogfSAvLyBuYW1lc3BhY2Ug
SlNDCkluZGV4OiBTb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9DbGFzc0luZm8uaAo9PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09Ci0tLSBTb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9DbGFzc0luZm8uaAkocmV2
aXNpb24gMTE2NjY3KQorKysgU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvQ2xhc3NJbmZv
LmgJKHdvcmtpbmcgY29weSkKQEAgLTQ1LDE5ICs0NSwxOSBAQCBuYW1lc3BhY2UgSlNDIHsKICAg
ICAgICAgdHlwZWRlZiBDb25zdHJ1Y3RUeXBlICgqR2V0Q29uc3RydWN0RGF0YUZ1bmN0aW9uUHRy
KShKU0NlbGwqLCBDb25zdHJ1Y3REYXRhJik7CiAgICAgICAgIEdldENvbnN0cnVjdERhdGFGdW5j
dGlvblB0ciBnZXRDb25zdHJ1Y3REYXRhOwogCi0gICAgICAgIHR5cGVkZWYgdm9pZCAoKlB1dEZ1
bmN0aW9uUHRyKShKU0NlbGwqLCBFeGVjU3RhdGUqLCBjb25zdCBJZGVudGlmaWVyJiBwcm9wZXJ0
eU5hbWUsIEpTVmFsdWUsIFB1dFByb3BlcnR5U2xvdCYpOworICAgICAgICB0eXBlZGVmIHZvaWQg
KCpQdXRGdW5jdGlvblB0cikoSlNDZWxsKiwgRXhlY1N0YXRlKiwgUHJvcGVydHlOYW1lIHByb3Bl
cnR5TmFtZSwgSlNWYWx1ZSwgUHV0UHJvcGVydHlTbG90Jik7CiAgICAgICAgIFB1dEZ1bmN0aW9u
UHRyIHB1dDsKIAogICAgICAgICB0eXBlZGVmIHZvaWQgKCpQdXRCeUluZGV4RnVuY3Rpb25QdHIp
KEpTQ2VsbCosIEV4ZWNTdGF0ZSosIHVuc2lnbmVkIHByb3BlcnR5TmFtZSwgSlNWYWx1ZSwgYm9v
bCBzaG91bGRUaHJvdyk7CiAgICAgICAgIFB1dEJ5SW5kZXhGdW5jdGlvblB0ciBwdXRCeUluZGV4
OwogCi0gICAgICAgIHR5cGVkZWYgYm9vbCAoKkRlbGV0ZVByb3BlcnR5RnVuY3Rpb25QdHIpKEpT
Q2VsbCosIEV4ZWNTdGF0ZSosIGNvbnN0IElkZW50aWZpZXImKTsKKyAgICAgICAgdHlwZWRlZiBi
b29sICgqRGVsZXRlUHJvcGVydHlGdW5jdGlvblB0cikoSlNDZWxsKiwgRXhlY1N0YXRlKiwgUHJv
cGVydHlOYW1lKTsKICAgICAgICAgRGVsZXRlUHJvcGVydHlGdW5jdGlvblB0ciBkZWxldGVQcm9w
ZXJ0eTsKIAogICAgICAgICB0eXBlZGVmIGJvb2wgKCpEZWxldGVQcm9wZXJ0eUJ5SW5kZXhGdW5j
dGlvblB0cikoSlNDZWxsKiwgRXhlY1N0YXRlKiwgdW5zaWduZWQpOwogICAgICAgICBEZWxldGVQ
cm9wZXJ0eUJ5SW5kZXhGdW5jdGlvblB0ciBkZWxldGVQcm9wZXJ0eUJ5SW5kZXg7CiAKLSAgICAg
ICAgdHlwZWRlZiBib29sICgqR2V0T3duUHJvcGVydHlTbG90RnVuY3Rpb25QdHIpKEpTQ2VsbCos
IEV4ZWNTdGF0ZSosIGNvbnN0IElkZW50aWZpZXImLCBQcm9wZXJ0eVNsb3QmKTsKKyAgICAgICAg
dHlwZWRlZiBib29sICgqR2V0T3duUHJvcGVydHlTbG90RnVuY3Rpb25QdHIpKEpTQ2VsbCosIEV4
ZWNTdGF0ZSosIFByb3BlcnR5TmFtZSwgUHJvcGVydHlTbG90Jik7CiAgICAgICAgIEdldE93blBy
b3BlcnR5U2xvdEZ1bmN0aW9uUHRyIGdldE93blByb3BlcnR5U2xvdDsKIAogICAgICAgICB0eXBl
ZGVmIGJvb2wgKCpHZXRPd25Qcm9wZXJ0eVNsb3RCeUluZGV4RnVuY3Rpb25QdHIpKEpTQ2VsbCos
IEV4ZWNTdGF0ZSosIHVuc2lnbmVkLCBQcm9wZXJ0eVNsb3QmKTsKQEAgLTgxLDEzICs4MSwxMyBA
QCBuYW1lc3BhY2UgSlNDIHsKICAgICAgICAgdHlwZWRlZiBib29sICgqSGFzSW5zdGFuY2VGdW5j
dGlvblB0cikoSlNPYmplY3QqLCBFeGVjU3RhdGUqLCBKU1ZhbHVlLCBKU1ZhbHVlKTsKICAgICAg
ICAgSGFzSW5zdGFuY2VGdW5jdGlvblB0ciBoYXNJbnN0YW5jZTsKIAotICAgICAgICB0eXBlZGVm
IHZvaWQgKCpQdXRXaXRoQXR0cmlidXRlc0Z1bmN0aW9uUHRyKShKU09iamVjdCosIEV4ZWNTdGF0
ZSosIGNvbnN0IElkZW50aWZpZXImIHByb3BlcnR5TmFtZSwgSlNWYWx1ZSwgdW5zaWduZWQgYXR0
cmlidXRlcyk7CisgICAgICAgIHR5cGVkZWYgdm9pZCAoKlB1dFdpdGhBdHRyaWJ1dGVzRnVuY3Rp
b25QdHIpKEpTT2JqZWN0KiwgRXhlY1N0YXRlKiwgUHJvcGVydHlOYW1lIHByb3BlcnR5TmFtZSwg
SlNWYWx1ZSwgdW5zaWduZWQgYXR0cmlidXRlcyk7CiAgICAgICAgIFB1dFdpdGhBdHRyaWJ1dGVz
RnVuY3Rpb25QdHIgcHV0RGlyZWN0VmlydHVhbDsKIAotICAgICAgICB0eXBlZGVmIGJvb2wgKCpE
ZWZpbmVPd25Qcm9wZXJ0eUZ1bmN0aW9uUHRyKShKU09iamVjdCosIEV4ZWNTdGF0ZSosIGNvbnN0
IElkZW50aWZpZXImLCBQcm9wZXJ0eURlc2NyaXB0b3ImLCBib29sKTsKKyAgICAgICAgdHlwZWRl
ZiBib29sICgqRGVmaW5lT3duUHJvcGVydHlGdW5jdGlvblB0cikoSlNPYmplY3QqLCBFeGVjU3Rh
dGUqLCBQcm9wZXJ0eU5hbWUsIFByb3BlcnR5RGVzY3JpcHRvciYsIGJvb2wpOwogICAgICAgICBE
ZWZpbmVPd25Qcm9wZXJ0eUZ1bmN0aW9uUHRyIGRlZmluZU93blByb3BlcnR5OwogCi0gICAgICAg
IHR5cGVkZWYgYm9vbCAoKkdldE93blByb3BlcnR5RGVzY3JpcHRvckZ1bmN0aW9uUHRyKShKU09i
amVjdCosIEV4ZWNTdGF0ZSosIGNvbnN0IElkZW50aWZpZXImLCBQcm9wZXJ0eURlc2NyaXB0b3Im
KTsKKyAgICAgICAgdHlwZWRlZiBib29sICgqR2V0T3duUHJvcGVydHlEZXNjcmlwdG9yRnVuY3Rp
b25QdHIpKEpTT2JqZWN0KiwgRXhlY1N0YXRlKiwgUHJvcGVydHlOYW1lLCBQcm9wZXJ0eURlc2Ny
aXB0b3ImKTsKICAgICAgICAgR2V0T3duUHJvcGVydHlEZXNjcmlwdG9yRnVuY3Rpb25QdHIgZ2V0
T3duUHJvcGVydHlEZXNjcmlwdG9yOwogICAgIH07CiAKSW5kZXg6IFNvdXJjZS9KYXZhU2NyaXB0
Q29yZS9ydW50aW1lL0RhdGVDb25zdHJ1Y3Rvci5jcHAKPT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL0ph
dmFTY3JpcHRDb3JlL3J1bnRpbWUvRGF0ZUNvbnN0cnVjdG9yLmNwcAkocmV2aXNpb24gMTE2NjY3
KQorKysgU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvRGF0ZUNvbnN0cnVjdG9yLmNwcAko
d29ya2luZyBjb3B5KQpAQCAtODEsMTcgKzgxLDE3IEBAIERhdGVDb25zdHJ1Y3Rvcjo6RGF0ZUNv
bnN0cnVjdG9yKEpTR2xvYmEKIAogdm9pZCBEYXRlQ29uc3RydWN0b3I6OmZpbmlzaENyZWF0aW9u
KEV4ZWNTdGF0ZSogZXhlYywgRGF0ZVByb3RvdHlwZSogZGF0ZVByb3RvdHlwZSkKIHsKLSAgICBC
YXNlOjpmaW5pc2hDcmVhdGlvbihleGVjLT5nbG9iYWxEYXRhKCksIElkZW50aWZpZXIoZXhlYywg
ZGF0ZVByb3RvdHlwZS0+Y2xhc3NJbmZvKCktPmNsYXNzTmFtZSkpOworICAgIEJhc2U6OmZpbmlz
aENyZWF0aW9uKGV4ZWMtPmdsb2JhbERhdGEoKSwgZGF0ZVByb3RvdHlwZS0+Y2xhc3NJbmZvKCkt
PmNsYXNzTmFtZSk7CiAgICAgcHV0RGlyZWN0V2l0aG91dFRyYW5zaXRpb24oZXhlYy0+Z2xvYmFs
RGF0YSgpLCBleGVjLT5wcm9wZXJ0eU5hbWVzKCkucHJvdG90eXBlLCBkYXRlUHJvdG90eXBlLCBE
b250RW51bSB8IERvbnREZWxldGUgfCBSZWFkT25seSk7CiAgICAgcHV0RGlyZWN0V2l0aG91dFRy
YW5zaXRpb24oZXhlYy0+Z2xvYmFsRGF0YSgpLCBleGVjLT5wcm9wZXJ0eU5hbWVzKCkubGVuZ3Ro
LCBqc051bWJlcig3KSwgUmVhZE9ubHkgfCBEb250RW51bSB8IERvbnREZWxldGUpOwogfQogCi1i
b29sIERhdGVDb25zdHJ1Y3Rvcjo6Z2V0T3duUHJvcGVydHlTbG90KEpTQ2VsbCogY2VsbCwgRXhl
Y1N0YXRlKiBleGVjLCBjb25zdCBJZGVudGlmaWVyJiBwcm9wZXJ0eU5hbWUsIFByb3BlcnR5U2xv
dCAmc2xvdCkKK2Jvb2wgRGF0ZUNvbnN0cnVjdG9yOjpnZXRPd25Qcm9wZXJ0eVNsb3QoSlNDZWxs
KiBjZWxsLCBFeGVjU3RhdGUqIGV4ZWMsIFByb3BlcnR5TmFtZSBwcm9wZXJ0eU5hbWUsIFByb3Bl
cnR5U2xvdCAmc2xvdCkKIHsKICAgICByZXR1cm4gZ2V0U3RhdGljRnVuY3Rpb25TbG90PEludGVy
bmFsRnVuY3Rpb24+KGV4ZWMsIEV4ZWNTdGF0ZTo6ZGF0ZUNvbnN0cnVjdG9yVGFibGUoZXhlYyks
IGpzQ2FzdDxEYXRlQ29uc3RydWN0b3IqPihjZWxsKSwgcHJvcGVydHlOYW1lLCBzbG90KTsKIH0K
IAotYm9vbCBEYXRlQ29uc3RydWN0b3I6OmdldE93blByb3BlcnR5RGVzY3JpcHRvcihKU09iamVj
dCogb2JqZWN0LCBFeGVjU3RhdGUqIGV4ZWMsIGNvbnN0IElkZW50aWZpZXImIHByb3BlcnR5TmFt
ZSwgUHJvcGVydHlEZXNjcmlwdG9yJiBkZXNjcmlwdG9yKQorYm9vbCBEYXRlQ29uc3RydWN0b3I6
OmdldE93blByb3BlcnR5RGVzY3JpcHRvcihKU09iamVjdCogb2JqZWN0LCBFeGVjU3RhdGUqIGV4
ZWMsIFByb3BlcnR5TmFtZSBwcm9wZXJ0eU5hbWUsIFByb3BlcnR5RGVzY3JpcHRvciYgZGVzY3Jp
cHRvcikKIHsKICAgICByZXR1cm4gZ2V0U3RhdGljRnVuY3Rpb25EZXNjcmlwdG9yPEludGVybmFs
RnVuY3Rpb24+KGV4ZWMsIEV4ZWNTdGF0ZTo6ZGF0ZUNvbnN0cnVjdG9yVGFibGUoZXhlYyksIGpz
Q2FzdDxEYXRlQ29uc3RydWN0b3IqPihvYmplY3QpLCBwcm9wZXJ0eU5hbWUsIGRlc2NyaXB0b3Ip
OwogfQpJbmRleDogU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvRGF0ZUNvbnN0cnVjdG9y
LmgKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PQotLS0gU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvRGF0ZUNvbnN0
cnVjdG9yLmgJKHJldmlzaW9uIDExNjY2NykKKysrIFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50
aW1lL0RhdGVDb25zdHJ1Y3Rvci5oCSh3b3JraW5nIGNvcHkpCkBAIC01NCw5ICs1NCw5IEBAIG5h
bWVzcGFjZSBKU0MgewogICAgICAgICBzdGF0aWMgQ29uc3RydWN0VHlwZSBnZXRDb25zdHJ1Y3RE
YXRhKEpTQ2VsbCosIENvbnN0cnVjdERhdGEmKTsKICAgICAgICAgc3RhdGljIENhbGxUeXBlIGdl
dENhbGxEYXRhKEpTQ2VsbCosIENhbGxEYXRhJik7CiAKLSAgICAgICAgc3RhdGljIGJvb2wgZ2V0
T3duUHJvcGVydHlTbG90KEpTQ2VsbCosIEV4ZWNTdGF0ZSosIGNvbnN0IElkZW50aWZpZXImLCBQ
cm9wZXJ0eVNsb3QmKTsKKyAgICAgICAgc3RhdGljIGJvb2wgZ2V0T3duUHJvcGVydHlTbG90KEpT
Q2VsbCosIEV4ZWNTdGF0ZSosIFByb3BlcnR5TmFtZSwgUHJvcGVydHlTbG90Jik7CiAKLSAgICAg
ICAgc3RhdGljIGJvb2wgZ2V0T3duUHJvcGVydHlEZXNjcmlwdG9yKEpTT2JqZWN0KiwgRXhlY1N0
YXRlKiwgY29uc3QgSWRlbnRpZmllciYsIFByb3BlcnR5RGVzY3JpcHRvciYpOworICAgICAgICBz
dGF0aWMgYm9vbCBnZXRPd25Qcm9wZXJ0eURlc2NyaXB0b3IoSlNPYmplY3QqLCBFeGVjU3RhdGUq
LCBQcm9wZXJ0eU5hbWUsIFByb3BlcnR5RGVzY3JpcHRvciYpOwogICAgIH07CiAKICAgICBKU09i
amVjdCogY29uc3RydWN0RGF0ZShFeGVjU3RhdGUqLCBKU0dsb2JhbE9iamVjdCosIGNvbnN0IEFy
Z0xpc3QmKTsKSW5kZXg6IFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL0RhdGVQcm90b3R5
cGUuY3BwCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL0RhdGVQ
cm90b3R5cGUuY3BwCShyZXZpc2lvbiAxMTY2NjcpCisrKyBTb3VyY2UvSmF2YVNjcmlwdENvcmUv
cnVudGltZS9EYXRlUHJvdG90eXBlLmNwcAkod29ya2luZyBjb3B5KQpAQCAtNDY3LDEyICs0Njcs
MTIgQEAgdm9pZCBEYXRlUHJvdG90eXBlOjpmaW5pc2hDcmVhdGlvbihFeGVjUwogICAgIC8vIFRo
ZSBjb25zdHJ1Y3RvciB3aWxsIGJlIGFkZGVkIGxhdGVyLCBhZnRlciBEYXRlQ29uc3RydWN0b3Ig
aGFzIGJlZW4gYnVpbHQuCiB9CiAKLWJvb2wgRGF0ZVByb3RvdHlwZTo6Z2V0T3duUHJvcGVydHlT
bG90KEpTQ2VsbCogY2VsbCwgRXhlY1N0YXRlKiBleGVjLCBjb25zdCBJZGVudGlmaWVyJiBwcm9w
ZXJ0eU5hbWUsIFByb3BlcnR5U2xvdCYgc2xvdCkKK2Jvb2wgRGF0ZVByb3RvdHlwZTo6Z2V0T3du
UHJvcGVydHlTbG90KEpTQ2VsbCogY2VsbCwgRXhlY1N0YXRlKiBleGVjLCBQcm9wZXJ0eU5hbWUg
cHJvcGVydHlOYW1lLCBQcm9wZXJ0eVNsb3QmIHNsb3QpCiB7CiAgICAgcmV0dXJuIGdldFN0YXRp
Y0Z1bmN0aW9uU2xvdDxKU09iamVjdD4oZXhlYywgRXhlY1N0YXRlOjpkYXRlVGFibGUoZXhlYyks
IGpzQ2FzdDxEYXRlUHJvdG90eXBlKj4oY2VsbCksIHByb3BlcnR5TmFtZSwgc2xvdCk7CiB9CiAK
LWJvb2wgRGF0ZVByb3RvdHlwZTo6Z2V0T3duUHJvcGVydHlEZXNjcmlwdG9yKEpTT2JqZWN0KiBv
YmplY3QsIEV4ZWNTdGF0ZSogZXhlYywgY29uc3QgSWRlbnRpZmllciYgcHJvcGVydHlOYW1lLCBQ
cm9wZXJ0eURlc2NyaXB0b3ImIGRlc2NyaXB0b3IpCitib29sIERhdGVQcm90b3R5cGU6OmdldE93
blByb3BlcnR5RGVzY3JpcHRvcihKU09iamVjdCogb2JqZWN0LCBFeGVjU3RhdGUqIGV4ZWMsIFBy
b3BlcnR5TmFtZSBwcm9wZXJ0eU5hbWUsIFByb3BlcnR5RGVzY3JpcHRvciYgZGVzY3JpcHRvcikK
IHsKICAgICByZXR1cm4gZ2V0U3RhdGljRnVuY3Rpb25EZXNjcmlwdG9yPEpTT2JqZWN0PihleGVj
LCBFeGVjU3RhdGU6OmRhdGVUYWJsZShleGVjKSwganNDYXN0PERhdGVQcm90b3R5cGUqPihvYmpl
Y3QpLCBwcm9wZXJ0eU5hbWUsIGRlc2NyaXB0b3IpOwogfQpJbmRleDogU291cmNlL0phdmFTY3Jp
cHRDb3JlL3J1bnRpbWUvRGF0ZVByb3RvdHlwZS5oCj09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9KYXZh
U2NyaXB0Q29yZS9ydW50aW1lL0RhdGVQcm90b3R5cGUuaAkocmV2aXNpb24gMTE2NjY3KQorKysg
U291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvRGF0ZVByb3RvdHlwZS5oCSh3b3JraW5nIGNv
cHkpCkBAIC00MCw5ICs0MCw5IEBAIG5hbWVzcGFjZSBKU0MgewogICAgICAgICAgICAgcHJvdG90
eXBlLT5maW5pc2hDcmVhdGlvbihleGVjLCBnbG9iYWxPYmplY3QpOwogICAgICAgICAgICAgcmV0
dXJuIHByb3RvdHlwZTsKICAgICAgICAgfQotICAgICAgICBzdGF0aWMgYm9vbCBnZXRPd25Qcm9w
ZXJ0eVNsb3QoSlNDZWxsKiwgRXhlY1N0YXRlKiwgY29uc3QgSWRlbnRpZmllciYsIFByb3BlcnR5
U2xvdCYpOworICAgICAgICBzdGF0aWMgYm9vbCBnZXRPd25Qcm9wZXJ0eVNsb3QoSlNDZWxsKiwg
RXhlY1N0YXRlKiwgUHJvcGVydHlOYW1lLCBQcm9wZXJ0eVNsb3QmKTsKIAotICAgICAgICBzdGF0
aWMgYm9vbCBnZXRPd25Qcm9wZXJ0eURlc2NyaXB0b3IoSlNPYmplY3QqLCBFeGVjU3RhdGUqLCBj
b25zdCBJZGVudGlmaWVyJiwgUHJvcGVydHlEZXNjcmlwdG9yJik7CisgICAgICAgIHN0YXRpYyBi
b29sIGdldE93blByb3BlcnR5RGVzY3JpcHRvcihKU09iamVjdCosIEV4ZWNTdGF0ZSosIFByb3Bl
cnR5TmFtZSwgUHJvcGVydHlEZXNjcmlwdG9yJik7CiAKICAgICAgICAgc3RhdGljIGNvbnN0IENs
YXNzSW5mbyBzX2luZm87CiAKSW5kZXg6IFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL0Vy
cm9yLmgKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PQotLS0gU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvRXJyb3Iu
aAkocmV2aXNpb24gMTE2NjY3KQorKysgU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvRXJy
b3IuaAkod29ya2luZyBjb3B5KQpAQCAtOTAsNyArOTAsNyBAQCBuYW1lc3BhY2UgSlNDIHsKICAg
ICAgICAgc3RhdGljIFN0cmljdE1vZGVUeXBlRXJyb3JGdW5jdGlvbiogY3JlYXRlKEV4ZWNTdGF0
ZSogZXhlYywgSlNHbG9iYWxPYmplY3QqIGdsb2JhbE9iamVjdCwgU3RydWN0dXJlKiBzdHJ1Y3R1
cmUsIGNvbnN0IFVTdHJpbmcmIG1lc3NhZ2UpCiAgICAgICAgIHsKICAgICAgICAgICAgIFN0cmlj
dE1vZGVUeXBlRXJyb3JGdW5jdGlvbiogZnVuY3Rpb24gPSBuZXcgKE5vdE51bGwsIGFsbG9jYXRl
Q2VsbDxTdHJpY3RNb2RlVHlwZUVycm9yRnVuY3Rpb24+KCpleGVjLT5oZWFwKCkpKSBTdHJpY3RN
b2RlVHlwZUVycm9yRnVuY3Rpb24oZ2xvYmFsT2JqZWN0LCBzdHJ1Y3R1cmUsIG1lc3NhZ2UpOwot
ICAgICAgICAgICAgZnVuY3Rpb24tPmZpbmlzaENyZWF0aW9uKGV4ZWMtPmdsb2JhbERhdGEoKSwg
ZXhlYy0+Z2xvYmFsRGF0YSgpLnByb3BlcnR5TmFtZXMtPmVtcHR5SWRlbnRpZmllcik7CisgICAg
ICAgICAgICBmdW5jdGlvbi0+ZmluaXNoQ3JlYXRpb24oZXhlYy0+Z2xvYmFsRGF0YSgpLCAiIik7
CiAgICAgICAgICAgICByZXR1cm4gZnVuY3Rpb247CiAgICAgICAgIH0KICAgICAKSW5kZXg6IFNv
dXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL0Vycm9yQ29uc3RydWN0b3IuY3BwCj09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT0KLS0tIFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL0Vycm9yQ29uc3RydWN0b3IuY3Bw
CShyZXZpc2lvbiAxMTY2NjcpCisrKyBTb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9FcnJv
ckNvbnN0cnVjdG9yLmNwcAkod29ya2luZyBjb3B5KQpAQCAtMzksNyArMzksNyBAQCBFcnJvckNv
bnN0cnVjdG9yOjpFcnJvckNvbnN0cnVjdG9yKEpTR2xvCiAKIHZvaWQgRXJyb3JDb25zdHJ1Y3Rv
cjo6ZmluaXNoQ3JlYXRpb24oRXhlY1N0YXRlKiBleGVjLCBFcnJvclByb3RvdHlwZSogZXJyb3JQ
cm90b3R5cGUpCiB7Ci0gICAgQmFzZTo6ZmluaXNoQ3JlYXRpb24oZXhlYy0+Z2xvYmFsRGF0YSgp
LCBJZGVudGlmaWVyKGV4ZWMsIGVycm9yUHJvdG90eXBlLT5jbGFzc0luZm8oKS0+Y2xhc3NOYW1l
KSk7CisgICAgQmFzZTo6ZmluaXNoQ3JlYXRpb24oZXhlYy0+Z2xvYmFsRGF0YSgpLCBlcnJvclBy
b3RvdHlwZS0+Y2xhc3NJbmZvKCktPmNsYXNzTmFtZSk7CiAgICAgLy8gRUNNQSAxNS4xMS4zLjEg
RXJyb3IucHJvdG90eXBlCiAgICAgcHV0RGlyZWN0V2l0aG91dFRyYW5zaXRpb24oZXhlYy0+Z2xv
YmFsRGF0YSgpLCBleGVjLT5wcm9wZXJ0eU5hbWVzKCkucHJvdG90eXBlLCBlcnJvclByb3RvdHlw
ZSwgRG9udEVudW0gfCBEb250RGVsZXRlIHwgUmVhZE9ubHkpOwogICAgIHB1dERpcmVjdFdpdGhv
dXRUcmFuc2l0aW9uKGV4ZWMtPmdsb2JhbERhdGEoKSwgZXhlYy0+cHJvcGVydHlOYW1lcygpLmxl
bmd0aCwganNOdW1iZXIoMSksIERvbnREZWxldGUgfCBSZWFkT25seSB8IERvbnRFbnVtKTsKSW5k
ZXg6IFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL0Vycm9yUHJvdG90eXBlLmNwcAo9PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09Ci0tLSBTb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9FcnJvclByb3RvdHlwZS5j
cHAJKHJldmlzaW9uIDExNjY2NykKKysrIFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL0Vy
cm9yUHJvdG90eXBlLmNwcAkod29ya2luZyBjb3B5KQpAQCAtNjMsMTIgKzYzLDEyIEBAIHZvaWQg
RXJyb3JQcm90b3R5cGU6OmZpbmlzaENyZWF0aW9uKEV4ZWMKICAgICBwdXREaXJlY3QoZXhlYy0+
Z2xvYmFsRGF0YSgpLCBleGVjLT5wcm9wZXJ0eU5hbWVzKCkubmFtZSwganNOb250cml2aWFsU3Ry
aW5nKGV4ZWMsICJFcnJvciIpLCBEb250RW51bSk7CiB9CiAKLWJvb2wgRXJyb3JQcm90b3R5cGU6
OmdldE93blByb3BlcnR5U2xvdChKU0NlbGwqIGNlbGwsIEV4ZWNTdGF0ZSogZXhlYywgY29uc3Qg
SWRlbnRpZmllciYgcHJvcGVydHlOYW1lLCBQcm9wZXJ0eVNsb3QgJnNsb3QpCitib29sIEVycm9y
UHJvdG90eXBlOjpnZXRPd25Qcm9wZXJ0eVNsb3QoSlNDZWxsKiBjZWxsLCBFeGVjU3RhdGUqIGV4
ZWMsIFByb3BlcnR5TmFtZSBwcm9wZXJ0eU5hbWUsIFByb3BlcnR5U2xvdCAmc2xvdCkKIHsKICAg
ICByZXR1cm4gZ2V0U3RhdGljRnVuY3Rpb25TbG90PEVycm9ySW5zdGFuY2U+KGV4ZWMsIEV4ZWNT
dGF0ZTo6ZXJyb3JQcm90b3R5cGVUYWJsZShleGVjKSwganNDYXN0PEVycm9yUHJvdG90eXBlKj4o
Y2VsbCksIHByb3BlcnR5TmFtZSwgc2xvdCk7CiB9CiAKLWJvb2wgRXJyb3JQcm90b3R5cGU6Omdl
dE93blByb3BlcnR5RGVzY3JpcHRvcihKU09iamVjdCogb2JqZWN0LCBFeGVjU3RhdGUqIGV4ZWMs
IGNvbnN0IElkZW50aWZpZXImIHByb3BlcnR5TmFtZSwgUHJvcGVydHlEZXNjcmlwdG9yJiBkZXNj
cmlwdG9yKQorYm9vbCBFcnJvclByb3RvdHlwZTo6Z2V0T3duUHJvcGVydHlEZXNjcmlwdG9yKEpT
T2JqZWN0KiBvYmplY3QsIEV4ZWNTdGF0ZSogZXhlYywgUHJvcGVydHlOYW1lIHByb3BlcnR5TmFt
ZSwgUHJvcGVydHlEZXNjcmlwdG9yJiBkZXNjcmlwdG9yKQogewogICAgIHJldHVybiBnZXRTdGF0
aWNGdW5jdGlvbkRlc2NyaXB0b3I8RXJyb3JJbnN0YW5jZT4oZXhlYywgRXhlY1N0YXRlOjplcnJv
clByb3RvdHlwZVRhYmxlKGV4ZWMpLCBqc0Nhc3Q8RXJyb3JQcm90b3R5cGUqPihvYmplY3QpLCBw
cm9wZXJ0eU5hbWUsIGRlc2NyaXB0b3IpOwogfQpJbmRleDogU291cmNlL0phdmFTY3JpcHRDb3Jl
L3J1bnRpbWUvRXJyb3JQcm90b3R5cGUuaAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvSmF2YVNjcmlw
dENvcmUvcnVudGltZS9FcnJvclByb3RvdHlwZS5oCShyZXZpc2lvbiAxMTY2NjcpCisrKyBTb3Vy
Y2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9FcnJvclByb3RvdHlwZS5oCSh3b3JraW5nIGNvcHkp
CkBAIC01Miw4ICs1Miw4IEBAIG5hbWVzcGFjZSBKU0MgewogICAgICAgICBzdGF0aWMgY29uc3Qg
dW5zaWduZWQgU3RydWN0dXJlRmxhZ3MgPSBPdmVycmlkZXNHZXRPd25Qcm9wZXJ0eVNsb3QgfCBF
cnJvckluc3RhbmNlOjpTdHJ1Y3R1cmVGbGFnczsKIAogICAgIHByaXZhdGU6Ci0gICAgICAgIHN0
YXRpYyBib29sIGdldE93blByb3BlcnR5U2xvdChKU0NlbGwqLCBFeGVjU3RhdGUqLCBjb25zdCBJ
ZGVudGlmaWVyJiwgUHJvcGVydHlTbG90Jik7Ci0gICAgICAgIHN0YXRpYyBib29sIGdldE93blBy
b3BlcnR5RGVzY3JpcHRvcihKU09iamVjdCosIEV4ZWNTdGF0ZSosIGNvbnN0IElkZW50aWZpZXIm
LCBQcm9wZXJ0eURlc2NyaXB0b3ImKTsKKyAgICAgICAgc3RhdGljIGJvb2wgZ2V0T3duUHJvcGVy
dHlTbG90KEpTQ2VsbCosIEV4ZWNTdGF0ZSosIFByb3BlcnR5TmFtZSwgUHJvcGVydHlTbG90Jik7
CisgICAgICAgIHN0YXRpYyBib29sIGdldE93blByb3BlcnR5RGVzY3JpcHRvcihKU09iamVjdCos
IEV4ZWNTdGF0ZSosIFByb3BlcnR5TmFtZSwgUHJvcGVydHlEZXNjcmlwdG9yJik7CiAgICAgfTsK
IAogfSAvLyBuYW1lc3BhY2UgSlNDCkluZGV4OiBTb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGlt
ZS9GdW5jdGlvbkNvbnN0cnVjdG9yLmNwcAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvSmF2YVNjcmlw
dENvcmUvcnVudGltZS9GdW5jdGlvbkNvbnN0cnVjdG9yLmNwcAkocmV2aXNpb24gMTE2NjY3KQor
KysgU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvRnVuY3Rpb25Db25zdHJ1Y3Rvci5jcHAJ
KHdvcmtpbmcgY29weSkKQEAgLTQ3LDcgKzQ3LDcgQEAgRnVuY3Rpb25Db25zdHJ1Y3Rvcjo6RnVu
Y3Rpb25Db25zdHJ1Y3RvcgogCiB2b2lkIEZ1bmN0aW9uQ29uc3RydWN0b3I6OmZpbmlzaENyZWF0
aW9uKEV4ZWNTdGF0ZSogZXhlYywgRnVuY3Rpb25Qcm90b3R5cGUqIGZ1bmN0aW9uUHJvdG90eXBl
KQogewotICAgIEJhc2U6OmZpbmlzaENyZWF0aW9uKGV4ZWMtPmdsb2JhbERhdGEoKSwgSWRlbnRp
ZmllcihleGVjLCBmdW5jdGlvblByb3RvdHlwZS0+Y2xhc3NJbmZvKCktPmNsYXNzTmFtZSkpOwor
ICAgIEJhc2U6OmZpbmlzaENyZWF0aW9uKGV4ZWMtPmdsb2JhbERhdGEoKSwgZnVuY3Rpb25Qcm90
b3R5cGUtPmNsYXNzSW5mbygpLT5jbGFzc05hbWUpOwogICAgIHB1dERpcmVjdFdpdGhvdXRUcmFu
c2l0aW9uKGV4ZWMtPmdsb2JhbERhdGEoKSwgZXhlYy0+cHJvcGVydHlOYW1lcygpLnByb3RvdHlw
ZSwgZnVuY3Rpb25Qcm90b3R5cGUsIERvbnRFbnVtIHwgRG9udERlbGV0ZSB8IFJlYWRPbmx5KTsK
IAogICAgIC8vIE51bWJlciBvZiBhcmd1bWVudHMgZm9yIGNvbnN0cnVjdG9yCkluZGV4OiBTb3Vy
Y2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9GdW5jdGlvblByb3RvdHlwZS5jcHAKPT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PQotLS0gU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvRnVuY3Rpb25Qcm90b3R5cGUuY3Bw
CShyZXZpc2lvbiAxMTY2NjcpCisrKyBTb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9GdW5j
dGlvblByb3RvdHlwZS5jcHAJKHdvcmtpbmcgY29weSkKQEAgLTQ3LDcgKzQ3LDcgQEAgRnVuY3Rp
b25Qcm90b3R5cGU6OkZ1bmN0aW9uUHJvdG90eXBlKEpTRwogewogfQogCi12b2lkIEZ1bmN0aW9u
UHJvdG90eXBlOjpmaW5pc2hDcmVhdGlvbihFeGVjU3RhdGUqIGV4ZWMsIGNvbnN0IElkZW50aWZp
ZXImIG5hbWUpCit2b2lkIEZ1bmN0aW9uUHJvdG90eXBlOjpmaW5pc2hDcmVhdGlvbihFeGVjU3Rh
dGUqIGV4ZWMsIGNvbnN0IFVTdHJpbmcmIG5hbWUpCiB7CiAgICAgQmFzZTo6ZmluaXNoQ3JlYXRp
b24oZXhlYy0+Z2xvYmFsRGF0YSgpLCBuYW1lKTsKICAgICBwdXREaXJlY3RXaXRob3V0VHJhbnNp
dGlvbihleGVjLT5nbG9iYWxEYXRhKCksIGV4ZWMtPnByb3BlcnR5TmFtZXMoKS5sZW5ndGgsIGpz
TnVtYmVyKDApLCBEb250RGVsZXRlIHwgUmVhZE9ubHkgfCBEb250RW51bSk7CkBAIC01NSwxNiAr
NTUsMTYgQEAgdm9pZCBGdW5jdGlvblByb3RvdHlwZTo6ZmluaXNoQ3JlYXRpb24oRQogCiB2b2lk
IEZ1bmN0aW9uUHJvdG90eXBlOjphZGRGdW5jdGlvblByb3BlcnRpZXMoRXhlY1N0YXRlKiBleGVj
LCBKU0dsb2JhbE9iamVjdCogZ2xvYmFsT2JqZWN0LCBKU0Z1bmN0aW9uKiogY2FsbEZ1bmN0aW9u
LCBKU0Z1bmN0aW9uKiogYXBwbHlGdW5jdGlvbikKIHsKLSAgICBKU0Z1bmN0aW9uKiB0b1N0cmlu
Z0Z1bmN0aW9uID0gSlNGdW5jdGlvbjo6Y3JlYXRlKGV4ZWMsIGdsb2JhbE9iamVjdCwgMCwgZXhl
Yy0+cHJvcGVydHlOYW1lcygpLnRvU3RyaW5nLCBmdW5jdGlvblByb3RvRnVuY1RvU3RyaW5nKTsK
KyAgICBKU0Z1bmN0aW9uKiB0b1N0cmluZ0Z1bmN0aW9uID0gSlNGdW5jdGlvbjo6Y3JlYXRlKGV4
ZWMsIGdsb2JhbE9iamVjdCwgMCwgZXhlYy0+cHJvcGVydHlOYW1lcygpLnRvU3RyaW5nLnVzdHJp
bmcoKSwgZnVuY3Rpb25Qcm90b0Z1bmNUb1N0cmluZyk7CiAgICAgcHV0RGlyZWN0V2l0aG91dFRy
YW5zaXRpb24oZXhlYy0+Z2xvYmFsRGF0YSgpLCBleGVjLT5wcm9wZXJ0eU5hbWVzKCkudG9TdHJp
bmcsIHRvU3RyaW5nRnVuY3Rpb24sIERvbnRFbnVtKTsKIAotICAgICphcHBseUZ1bmN0aW9uID0g
SlNGdW5jdGlvbjo6Y3JlYXRlKGV4ZWMsIGdsb2JhbE9iamVjdCwgMiwgZXhlYy0+cHJvcGVydHlO
YW1lcygpLmFwcGx5LCBmdW5jdGlvblByb3RvRnVuY0FwcGx5KTsKKyAgICAqYXBwbHlGdW5jdGlv
biA9IEpTRnVuY3Rpb246OmNyZWF0ZShleGVjLCBnbG9iYWxPYmplY3QsIDIsIGV4ZWMtPnByb3Bl
cnR5TmFtZXMoKS5hcHBseS51c3RyaW5nKCksIGZ1bmN0aW9uUHJvdG9GdW5jQXBwbHkpOwogICAg
IHB1dERpcmVjdFdpdGhvdXRUcmFuc2l0aW9uKGV4ZWMtPmdsb2JhbERhdGEoKSwgZXhlYy0+cHJv
cGVydHlOYW1lcygpLmFwcGx5LCAqYXBwbHlGdW5jdGlvbiwgRG9udEVudW0pOwogCi0gICAgKmNh
bGxGdW5jdGlvbiA9IEpTRnVuY3Rpb246OmNyZWF0ZShleGVjLCBnbG9iYWxPYmplY3QsIDEsIGV4
ZWMtPnByb3BlcnR5TmFtZXMoKS5jYWxsLCBmdW5jdGlvblByb3RvRnVuY0NhbGwpOworICAgICpj
YWxsRnVuY3Rpb24gPSBKU0Z1bmN0aW9uOjpjcmVhdGUoZXhlYywgZ2xvYmFsT2JqZWN0LCAxLCBl
eGVjLT5wcm9wZXJ0eU5hbWVzKCkuY2FsbC51c3RyaW5nKCksIGZ1bmN0aW9uUHJvdG9GdW5jQ2Fs
bCk7CiAgICAgcHV0RGlyZWN0V2l0aG91dFRyYW5zaXRpb24oZXhlYy0+Z2xvYmFsRGF0YSgpLCBl
eGVjLT5wcm9wZXJ0eU5hbWVzKCkuY2FsbCwgKmNhbGxGdW5jdGlvbiwgRG9udEVudW0pOwogCi0g
ICAgSlNGdW5jdGlvbiogYmluZEZ1bmN0aW9uID0gSlNGdW5jdGlvbjo6Y3JlYXRlKGV4ZWMsIGds
b2JhbE9iamVjdCwgMSwgZXhlYy0+cHJvcGVydHlOYW1lcygpLmJpbmQsIGZ1bmN0aW9uUHJvdG9G
dW5jQmluZCk7CisgICAgSlNGdW5jdGlvbiogYmluZEZ1bmN0aW9uID0gSlNGdW5jdGlvbjo6Y3Jl
YXRlKGV4ZWMsIGdsb2JhbE9iamVjdCwgMSwgZXhlYy0+cHJvcGVydHlOYW1lcygpLmJpbmQudXN0
cmluZygpLCBmdW5jdGlvblByb3RvRnVuY0JpbmQpOwogICAgIHB1dERpcmVjdFdpdGhvdXRUcmFu
c2l0aW9uKGV4ZWMtPmdsb2JhbERhdGEoKSwgZXhlYy0+cHJvcGVydHlOYW1lcygpLmJpbmQsIGJp
bmRGdW5jdGlvbiwgRG9udEVudW0pOwogfQogCkBAIC0yMDcsOSArMjA3LDggQEAgRW5jb2RlZEpT
VmFsdWUgSlNDX0hPU1RfQ0FMTCBmdW5jdGlvblBybwogICAgICAgICAgICAgbGVuZ3RoID0gdGFy
Z2V0TGVuZ3RoIC0gbnVtQm91bmRBcmdzOwogICAgIH0KIAotICAgIElkZW50aWZpZXIgbmFtZShl
eGVjLCB0YXJnZXQuZ2V0KGV4ZWMsIGV4ZWMtPnByb3BlcnR5TmFtZXMoKS5uYW1lKS50b1N0cmlu
ZyhleGVjKS0+dmFsdWUoZXhlYykpOwotCi0gICAgcmV0dXJuIEpTVmFsdWU6OmVuY29kZShKU0Jv
dW5kRnVuY3Rpb246OmNyZWF0ZShleGVjLCBnbG9iYWxPYmplY3QsIHRhcmdldE9iamVjdCwgZXhl
Yy0+YXJndW1lbnQoMCksIGJvdW5kQXJncywgbGVuZ3RoLCBuYW1lKSk7CisgICAgSlNTdHJpbmcq
IG5hbWUgPSB0YXJnZXQuZ2V0KGV4ZWMsIGV4ZWMtPnByb3BlcnR5TmFtZXMoKS5uYW1lKS50b1N0
cmluZyhleGVjKTsKKyAgICByZXR1cm4gSlNWYWx1ZTo6ZW5jb2RlKEpTQm91bmRGdW5jdGlvbjo6
Y3JlYXRlKGV4ZWMsIGdsb2JhbE9iamVjdCwgdGFyZ2V0T2JqZWN0LCBleGVjLT5hcmd1bWVudCgw
KSwgYm91bmRBcmdzLCBsZW5ndGgsIG5hbWUtPnZhbHVlKGV4ZWMpKSk7CiB9CiAKIH0gLy8gbmFt
ZXNwYWNlIEpTQwpJbmRleDogU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvRnVuY3Rpb25Q
cm90b3R5cGUuaAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9G
dW5jdGlvblByb3RvdHlwZS5oCShyZXZpc2lvbiAxMTY2NjcpCisrKyBTb3VyY2UvSmF2YVNjcmlw
dENvcmUvcnVudGltZS9GdW5jdGlvblByb3RvdHlwZS5oCSh3b3JraW5nIGNvcHkpCkBAIC0zMiw3
ICszMiw3IEBAIG5hbWVzcGFjZSBKU0MgewogICAgICAgICBzdGF0aWMgRnVuY3Rpb25Qcm90b3R5
cGUqIGNyZWF0ZShFeGVjU3RhdGUqIGV4ZWMsIEpTR2xvYmFsT2JqZWN0KiBnbG9iYWxPYmplY3Qs
IFN0cnVjdHVyZSogc3RydWN0dXJlKQogICAgICAgICB7CiAgICAgICAgICAgICBGdW5jdGlvblBy
b3RvdHlwZSogcHJvdG90eXBlID0gbmV3IChOb3ROdWxsLCBhbGxvY2F0ZUNlbGw8RnVuY3Rpb25Q
cm90b3R5cGU+KCpleGVjLT5oZWFwKCkpKSBGdW5jdGlvblByb3RvdHlwZShnbG9iYWxPYmplY3Qs
IHN0cnVjdHVyZSk7Ci0gICAgICAgICAgICBwcm90b3R5cGUtPmZpbmlzaENyZWF0aW9uKGV4ZWMs
IGV4ZWMtPnByb3BlcnR5TmFtZXMoKS5udWxsSWRlbnRpZmllcik7CisgICAgICAgICAgICBwcm90
b3R5cGUtPmZpbmlzaENyZWF0aW9uKGV4ZWMsICIiKTsKICAgICAgICAgICAgIHJldHVybiBwcm90
b3R5cGU7CiAgICAgICAgIH0KICAgICAgICAgCkBAIC00Niw3ICs0Niw3IEBAIG5hbWVzcGFjZSBK
U0MgewogICAgICAgICBzdGF0aWMgY29uc3QgQ2xhc3NJbmZvIHNfaW5mbzsKIAogICAgIHByb3Rl
Y3RlZDoKLSAgICAgICAgdm9pZCBmaW5pc2hDcmVhdGlvbihFeGVjU3RhdGUqLCBjb25zdCBJZGVu
dGlmaWVyJiBuYW1lKTsKKyAgICAgICAgdm9pZCBmaW5pc2hDcmVhdGlvbihFeGVjU3RhdGUqLCBj
b25zdCBVU3RyaW5nJiBuYW1lKTsKIAogICAgIHByaXZhdGU6CiAgICAgICAgIEZ1bmN0aW9uUHJv
dG90eXBlKEpTR2xvYmFsT2JqZWN0KiwgU3RydWN0dXJlKik7CkluZGV4OiBTb3VyY2UvSmF2YVNj
cmlwdENvcmUvcnVudGltZS9JZGVudGlmaWVyLmNwcAo9PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvSmF2
YVNjcmlwdENvcmUvcnVudGltZS9JZGVudGlmaWVyLmNwcAkocmV2aXNpb24gMTE2NjY3KQorKysg
U291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvSWRlbnRpZmllci5jcHAJKHdvcmtpbmcgY29w
eSkKQEAgLTE0NSw1NiArMTQ1LDYgQEAgUGFzc1JlZlB0cjxTdHJpbmdJbXBsPiBJZGVudGlmaWVy
OjphZGQ4KAogICAgIHJldHVybiBhZGRSZXN1bHQuaXNOZXdFbnRyeSA/IGFkb3B0UmVmKCphZGRS
ZXN1bHQuaXRlcmF0b3IpIDogKmFkZFJlc3VsdC5pdGVyYXRvcjsKIH0KIAotdGVtcGxhdGUgPHR5
cGVuYW1lIENoYXJUeXBlPgotQUxXQVlTX0lOTElORSB1aW50MzJfdCBJZGVudGlmaWVyOjp0b1VJ
bnQzMkZyb21DaGFyYWN0ZXJzKGNvbnN0IENoYXJUeXBlKiBjaGFyYWN0ZXJzLCB1bnNpZ25lZCBs
ZW5ndGgsIGJvb2wmIG9rKQotewotICAgIC8vIEdldCB0aGUgZmlyc3QgY2hhcmFjdGVyLCB0dXJu
aW5nIGl0IGludG8gYSBkaWdpdC4KLSAgICB1aW50MzJfdCB2YWx1ZSA9IGNoYXJhY3RlcnNbMF0g
LSAnMCc7Ci0gICAgaWYgKHZhbHVlID4gOSkKLSAgICAgICAgcmV0dXJuIDA7Ci0gICAgCi0gICAg
Ly8gQ2hlY2sgZm9yIGxlYWRpbmcgemVyb3MuIElmIHRoZSBmaXJzdCBjaGFyYWNoZXIgaXMgMCwg
dGhlbiB0aGUKLSAgICAvLyBsZW5ndGggb2YgdGhlIHN0cmluZyBtdXN0IGJlIG9uZSAtIGUuZy4g
IjA0MiIgaXMgbm90IGVxdWFsIHRvICI0MiIuCi0gICAgaWYgKCF2YWx1ZSAmJiBsZW5ndGggPiAx
KQotICAgICAgICByZXR1cm4gMDsKLSAgICAKLSAgICB3aGlsZSAoLS1sZW5ndGgpIHsKLSAgICAg
ICAgLy8gTXVsdGlwbHkgdmFsdWUgYnkgMTAsIGNoZWNraW5nIGZvciBvdmVyZmxvdyBvdXQgb2Yg
MzIgYml0cy4KLSAgICAgICAgaWYgKHZhbHVlID4gMHhGRkZGRkZGRlUgLyAxMCkKLSAgICAgICAg
ICAgIHJldHVybiAwOwotICAgICAgICB2YWx1ZSAqPSAxMDsKLSAgICAgICAgCi0gICAgICAgIC8v
IEdldCB0aGUgbmV4dCBjaGFyYWN0ZXIsIHR1cm5pbmcgaXQgaW50byBhIGRpZ2l0LgotICAgICAg
ICB1aW50MzJfdCBuZXdWYWx1ZSA9ICooKytjaGFyYWN0ZXJzKSAtICcwJzsKLSAgICAgICAgaWYg
KG5ld1ZhbHVlID4gOSkKLSAgICAgICAgICAgIHJldHVybiAwOwotICAgICAgICAKLSAgICAgICAg
Ly8gQWRkIGluIHRoZSBvbGQgdmFsdWUsIGNoZWNraW5nIGZvciBvdmVyZmxvdyBvdXQgb2YgMzIg
Yml0cy4KLSAgICAgICAgbmV3VmFsdWUgKz0gdmFsdWU7Ci0gICAgICAgIGlmIChuZXdWYWx1ZSA8
IHZhbHVlKQotICAgICAgICAgICAgcmV0dXJuIDA7Ci0gICAgICAgIHZhbHVlID0gbmV3VmFsdWU7
Ci0gICAgfQotICAgIAotICAgIG9rID0gdHJ1ZTsKLSAgICByZXR1cm4gdmFsdWU7Ci19Ci0KLXVp
bnQzMl90IElkZW50aWZpZXI6OnRvVUludDMyKGNvbnN0IFVTdHJpbmcmIHN0cmluZywgYm9vbCYg
b2spCi17Ci0gICAgb2sgPSBmYWxzZTsKLQotICAgIHVuc2lnbmVkIGxlbmd0aCA9IHN0cmluZy5s
ZW5ndGgoKTsKLQotICAgIC8vIEFuIGVtcHR5IHN0cmluZyBpcyBub3QgYSBudW1iZXIuCi0gICAg
aWYgKCFsZW5ndGgpCi0gICAgICAgIHJldHVybiAwOwotCi0gICAgaWYgKHN0cmluZy5pczhCaXQo
KSkKLSAgICAgICAgcmV0dXJuIHRvVUludDMyRnJvbUNoYXJhY3RlcnMoc3RyaW5nLmNoYXJhY3Rl
cnM4KCksIGxlbmd0aCwgb2spOwotICAgIHJldHVybiB0b1VJbnQzMkZyb21DaGFyYWN0ZXJzKHN0
cmluZy5jaGFyYWN0ZXJzMTYoKSwgbGVuZ3RoLCBvayk7Ci19Ci0KIFBhc3NSZWZQdHI8U3RyaW5n
SW1wbD4gSWRlbnRpZmllcjo6YWRkU2xvd0Nhc2UoSlNHbG9iYWxEYXRhKiBnbG9iYWxEYXRhLCBT
dHJpbmdJbXBsKiByKQogewogICAgIEFTU0VSVCghci0+aXNJZGVudGlmaWVyKCkpOwpJbmRleDog
U291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvSWRlbnRpZmllci5oCj09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0t
IFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL0lkZW50aWZpZXIuaAkocmV2aXNpb24gMTE2
NjY3KQorKysgU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvSWRlbnRpZmllci5oCSh3b3Jr
aW5nIGNvcHkpCkBAIC02MywxMCArNjMsNiBAQCBuYW1lc3BhY2UgSlNDIHsKICAgICAgICAgc3Rh
dGljIElkZW50aWZpZXIgZnJvbShKU0dsb2JhbERhdGEqLCBpbnQgeSk7CiAgICAgICAgIHN0YXRp
YyBJZGVudGlmaWVyIGZyb20oSlNHbG9iYWxEYXRhKiwgZG91YmxlIHkpOwogCi0gICAgICAgIEpT
X0VYUE9SVF9QUklWQVRFIHN0YXRpYyB1aW50MzJfdCB0b1VJbnQzMihjb25zdCBVU3RyaW5nJiwg
Ym9vbCYgb2spOwotICAgICAgICB1aW50MzJfdCB0b1VJbnQzMihib29sJiBvaykgY29uc3QgeyBy
ZXR1cm4gdG9VSW50MzIobV9zdHJpbmcsIG9rKTsgfQotICAgICAgICB1bnNpZ25lZCB0b0FycmF5
SW5kZXgoYm9vbCYgb2spIGNvbnN0OwotCiAgICAgICAgIGJvb2wgaXNOdWxsKCkgY29uc3QgeyBy
ZXR1cm4gbV9zdHJpbmcuaXNOdWxsKCk7IH0KICAgICAgICAgYm9vbCBpc0VtcHR5KCkgY29uc3Qg
eyByZXR1cm4gbV9zdHJpbmcuaXNFbXB0eSgpOyB9CiAgICAgICAgIApJbmRleDogU291cmNlL0ph
dmFTY3JpcHRDb3JlL3J1bnRpbWUvSW50ZXJuYWxGdW5jdGlvbi5jcHAKPT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0g
U291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvSW50ZXJuYWxGdW5jdGlvbi5jcHAJKHJldmlz
aW9uIDExNjY2NykKKysrIFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL0ludGVybmFsRnVu
Y3Rpb24uY3BwCSh3b3JraW5nIGNvcHkpCkBAIC0zOSwxMiArMzksMTIgQEAgSW50ZXJuYWxGdW5j
dGlvbjo6SW50ZXJuYWxGdW5jdGlvbihKU0dsbwogewogfQogCi12b2lkIEludGVybmFsRnVuY3Rp
b246OmZpbmlzaENyZWF0aW9uKEpTR2xvYmFsRGF0YSYgZ2xvYmFsRGF0YSwgY29uc3QgSWRlbnRp
ZmllciYgbmFtZSkKK3ZvaWQgSW50ZXJuYWxGdW5jdGlvbjo6ZmluaXNoQ3JlYXRpb24oSlNHbG9i
YWxEYXRhJiBnbG9iYWxEYXRhLCBjb25zdCBVU3RyaW5nJiBuYW1lKQogewogICAgIEJhc2U6OmZp
bmlzaENyZWF0aW9uKGdsb2JhbERhdGEpOwogICAgIEFTU0VSVChpbmhlcml0cygmc19pbmZvKSk7
CiAgICAgQVNTRVJUKG1ldGhvZFRhYmxlKCktPmdldENhbGxEYXRhICE9IEludGVybmFsRnVuY3Rp
b246OnNfaW5mby5tZXRob2RUYWJsZS5nZXRDYWxsRGF0YSk7Ci0gICAgcHV0RGlyZWN0KGdsb2Jh
bERhdGEsIGdsb2JhbERhdGEucHJvcGVydHlOYW1lcy0+bmFtZSwganNTdHJpbmcoJmdsb2JhbERh
dGEsIG5hbWUuaXNOdWxsKCkgPyAiIiA6IG5hbWUudXN0cmluZygpKSwgRG9udERlbGV0ZSB8IFJl
YWRPbmx5IHwgRG9udEVudW0pOworICAgIHB1dERpcmVjdChnbG9iYWxEYXRhLCBnbG9iYWxEYXRh
LnByb3BlcnR5TmFtZXMtPm5hbWUsIGpzU3RyaW5nKCZnbG9iYWxEYXRhLCBuYW1lLmlzTnVsbCgp
ID8gIiIgOiBuYW1lKSwgRG9udERlbGV0ZSB8IFJlYWRPbmx5IHwgRG9udEVudW0pOwogfQogCiBj
b25zdCBVU3RyaW5nJiBJbnRlcm5hbEZ1bmN0aW9uOjpuYW1lKEV4ZWNTdGF0ZSogZXhlYykKSW5k
ZXg6IFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL0ludGVybmFsRnVuY3Rpb24uaAo9PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09Ci0tLSBTb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9JbnRlcm5hbEZ1bmN0aW9u
LmgJKHJldmlzaW9uIDExNjY2NykKKysrIFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL0lu
dGVybmFsRnVuY3Rpb24uaAkod29ya2luZyBjb3B5KQpAQCAtNTEsNyArNTEsNyBAQCBuYW1lc3Bh
Y2UgSlNDIHsKIAogICAgICAgICBKU19FWFBPUlRfUFJJVkFURSBJbnRlcm5hbEZ1bmN0aW9uKEpT
R2xvYmFsT2JqZWN0KiwgU3RydWN0dXJlKik7CiAKLSAgICAgICAgSlNfRVhQT1JUX1BSSVZBVEUg
dm9pZCBmaW5pc2hDcmVhdGlvbihKU0dsb2JhbERhdGEmLCBjb25zdCBJZGVudGlmaWVyJiBuYW1l
KTsKKyAgICAgICAgSlNfRVhQT1JUX1BSSVZBVEUgdm9pZCBmaW5pc2hDcmVhdGlvbihKU0dsb2Jh
bERhdGEmLCBjb25zdCBVU3RyaW5nJiBuYW1lKTsKIAogICAgICAgICBzdGF0aWMgQ2FsbFR5cGUg
Z2V0Q2FsbERhdGEoSlNDZWxsKiwgQ2FsbERhdGEmKTsKICAgICB9OwpJbmRleDogU291cmNlL0ph
dmFTY3JpcHRDb3JlL3J1bnRpbWUvSlNBY3RpdmF0aW9uLmNwcAo9PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3Vy
Y2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9KU0FjdGl2YXRpb24uY3BwCShyZXZpc2lvbiAxMTY2
NjcpCisrKyBTb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9KU0FjdGl2YXRpb24uY3BwCSh3
b3JraW5nIGNvcHkpCkBAIC05MCw3ICs5MCw3IEBAIHZvaWQgSlNBY3RpdmF0aW9uOjp2aXNpdENo
aWxkcmVuKEpTQ2VsbCoKICAgICB2aXNpdG9yLmFwcGVuZFZhbHVlcyhyZWdpc3RlckFycmF5ICsg
b2Zmc2V0LCB0aGlzT2JqZWN0LT5tX251bUNhcHR1cmVkVmFycyk7CiB9CiAKLWlubGluZSBib29s
IEpTQWN0aXZhdGlvbjo6c3ltYm9sVGFibGVHZXQoY29uc3QgSWRlbnRpZmllciYgcHJvcGVydHlO
YW1lLCBQcm9wZXJ0eVNsb3QmIHNsb3QpCitpbmxpbmUgYm9vbCBKU0FjdGl2YXRpb246OnN5bWJv
bFRhYmxlR2V0KFByb3BlcnR5TmFtZSBwcm9wZXJ0eU5hbWUsIFByb3BlcnR5U2xvdCYgc2xvdCkK
IHsKICAgICBTeW1ib2xUYWJsZUVudHJ5IGVudHJ5ID0gc3ltYm9sVGFibGUoKS5pbmxpbmVHZXQo
cHJvcGVydHlOYW1lLmltcGwoKSk7CiAgICAgaWYgKGVudHJ5LmlzTnVsbCgpKQpAQCAtMTAyLDcg
KzEwMiw3IEBAIGlubGluZSBib29sIEpTQWN0aXZhdGlvbjo6c3ltYm9sVGFibGVHZXQKICAgICBy
ZXR1cm4gdHJ1ZTsKIH0KIAotaW5saW5lIGJvb2wgSlNBY3RpdmF0aW9uOjpzeW1ib2xUYWJsZVB1
dChFeGVjU3RhdGUqIGV4ZWMsIGNvbnN0IElkZW50aWZpZXImIHByb3BlcnR5TmFtZSwgSlNWYWx1
ZSB2YWx1ZSwgYm9vbCBzaG91bGRUaHJvdykKK2lubGluZSBib29sIEpTQWN0aXZhdGlvbjo6c3lt
Ym9sVGFibGVQdXQoRXhlY1N0YXRlKiBleGVjLCBQcm9wZXJ0eU5hbWUgcHJvcGVydHlOYW1lLCBK
U1ZhbHVlIHZhbHVlLCBib29sIHNob3VsZFRocm93KQogewogICAgIEpTR2xvYmFsRGF0YSYgZ2xv
YmFsRGF0YSA9IGV4ZWMtPmdsb2JhbERhdGEoKTsKICAgICBBU1NFUlQoIUhlYXA6OmhlYXAodmFs
dWUpIHx8IEhlYXA6OmhlYXAodmFsdWUpID09IEhlYXA6OmhlYXAodGhpcykpOwpAQCAtMTM3LDcg
KzEzNyw3IEBAIHZvaWQgSlNBY3RpdmF0aW9uOjpnZXRPd25Qcm9wZXJ0eU5hbWVzKEoKICAgICBK
U09iamVjdDo6Z2V0T3duUHJvcGVydHlOYW1lcyh0aGlzT2JqZWN0LCBleGVjLCBwcm9wZXJ0eU5h
bWVzLCBtb2RlKTsKIH0KIAotaW5saW5lIGJvb2wgSlNBY3RpdmF0aW9uOjpzeW1ib2xUYWJsZVB1
dFdpdGhBdHRyaWJ1dGVzKEpTR2xvYmFsRGF0YSYgZ2xvYmFsRGF0YSwgY29uc3QgSWRlbnRpZmll
ciYgcHJvcGVydHlOYW1lLCBKU1ZhbHVlIHZhbHVlLCB1bnNpZ25lZCBhdHRyaWJ1dGVzKQoraW5s
aW5lIGJvb2wgSlNBY3RpdmF0aW9uOjpzeW1ib2xUYWJsZVB1dFdpdGhBdHRyaWJ1dGVzKEpTR2xv
YmFsRGF0YSYgZ2xvYmFsRGF0YSwgUHJvcGVydHlOYW1lIHByb3BlcnR5TmFtZSwgSlNWYWx1ZSB2
YWx1ZSwgdW5zaWduZWQgYXR0cmlidXRlcykKIHsKICAgICBBU1NFUlQoIUhlYXA6OmhlYXAodmFs
dWUpIHx8IEhlYXA6OmhlYXAodmFsdWUpID09IEhlYXA6OmhlYXAodGhpcykpOwogICAgIApAQCAt
MTU0LDcgKzE1NCw3IEBAIGlubGluZSBib29sIEpTQWN0aXZhdGlvbjo6c3ltYm9sVGFibGVQdXQK
ICAgICByZXR1cm4gdHJ1ZTsKIH0KIAotYm9vbCBKU0FjdGl2YXRpb246OmdldE93blByb3BlcnR5
U2xvdChKU0NlbGwqIGNlbGwsIEV4ZWNTdGF0ZSogZXhlYywgY29uc3QgSWRlbnRpZmllciYgcHJv
cGVydHlOYW1lLCBQcm9wZXJ0eVNsb3QmIHNsb3QpCitib29sIEpTQWN0aXZhdGlvbjo6Z2V0T3du
UHJvcGVydHlTbG90KEpTQ2VsbCogY2VsbCwgRXhlY1N0YXRlKiBleGVjLCBQcm9wZXJ0eU5hbWUg
cHJvcGVydHlOYW1lLCBQcm9wZXJ0eVNsb3QmIHNsb3QpCiB7CiAgICAgSlNBY3RpdmF0aW9uKiB0
aGlzT2JqZWN0ID0ganNDYXN0PEpTQWN0aXZhdGlvbio+KGNlbGwpOwogICAgIGlmIChwcm9wZXJ0
eU5hbWUgPT0gZXhlYy0+cHJvcGVydHlOYW1lcygpLmFyZ3VtZW50cykgewpAQCAtMTc3LDcgKzE3
Nyw3IEBAIGJvb2wgSlNBY3RpdmF0aW9uOjpnZXRPd25Qcm9wZXJ0eVNsb3QoSlMKICAgICByZXR1
cm4gZmFsc2U7CiB9CiAKLXZvaWQgSlNBY3RpdmF0aW9uOjpwdXQoSlNDZWxsKiBjZWxsLCBFeGVj
U3RhdGUqIGV4ZWMsIGNvbnN0IElkZW50aWZpZXImIHByb3BlcnR5TmFtZSwgSlNWYWx1ZSB2YWx1
ZSwgUHV0UHJvcGVydHlTbG90JiBzbG90KQordm9pZCBKU0FjdGl2YXRpb246OnB1dChKU0NlbGwq
IGNlbGwsIEV4ZWNTdGF0ZSogZXhlYywgUHJvcGVydHlOYW1lIHByb3BlcnR5TmFtZSwgSlNWYWx1
ZSB2YWx1ZSwgUHV0UHJvcGVydHlTbG90JiBzbG90KQogewogICAgIEpTQWN0aXZhdGlvbiogdGhp
c09iamVjdCA9IGpzQ2FzdDxKU0FjdGl2YXRpb24qPihjZWxsKTsKICAgICBBU1NFUlQoIUhlYXA6
OmhlYXAodmFsdWUpIHx8IEhlYXA6OmhlYXAodmFsdWUpID09IEhlYXA6OmhlYXAodGhpc09iamVj
dCkpOwpAQCAtMTkzLDcgKzE5Myw3IEBAIHZvaWQgSlNBY3RpdmF0aW9uOjpwdXQoSlNDZWxsKiBj
ZWxsLCBFeGUKIH0KIAogLy8gRklYTUU6IE1ha2UgdGhpcyBmdW5jdGlvbiBob25vciBSZWFkT25s
eSAoY29uc3QpIGFuZCBEb250RW51bQotdm9pZCBKU0FjdGl2YXRpb246OnB1dERpcmVjdFZpcnR1
YWwoSlNPYmplY3QqIG9iamVjdCwgRXhlY1N0YXRlKiBleGVjLCBjb25zdCBJZGVudGlmaWVyJiBw
cm9wZXJ0eU5hbWUsIEpTVmFsdWUgdmFsdWUsIHVuc2lnbmVkIGF0dHJpYnV0ZXMpCit2b2lkIEpT
QWN0aXZhdGlvbjo6cHV0RGlyZWN0VmlydHVhbChKU09iamVjdCogb2JqZWN0LCBFeGVjU3RhdGUq
IGV4ZWMsIFByb3BlcnR5TmFtZSBwcm9wZXJ0eU5hbWUsIEpTVmFsdWUgdmFsdWUsIHVuc2lnbmVk
IGF0dHJpYnV0ZXMpCiB7CiAgICAgSlNBY3RpdmF0aW9uKiB0aGlzT2JqZWN0ID0ganNDYXN0PEpT
QWN0aXZhdGlvbio+KG9iamVjdCk7CiAgICAgQVNTRVJUKCFIZWFwOjpoZWFwKHZhbHVlKSB8fCBI
ZWFwOjpoZWFwKHZhbHVlKSA9PSBIZWFwOjpoZWFwKHRoaXNPYmplY3QpKTsKQEAgLTIwOCw3ICsy
MDgsNyBAQCB2b2lkIEpTQWN0aXZhdGlvbjo6cHV0RGlyZWN0VmlydHVhbChKU09iCiAgICAgSlNP
YmplY3Q6OnB1dERpcmVjdFZpcnR1YWwodGhpc09iamVjdCwgZXhlYywgcHJvcGVydHlOYW1lLCB2
YWx1ZSwgYXR0cmlidXRlcyk7CiB9CiAKLWJvb2wgSlNBY3RpdmF0aW9uOjpkZWxldGVQcm9wZXJ0
eShKU0NlbGwqIGNlbGwsIEV4ZWNTdGF0ZSogZXhlYywgY29uc3QgSWRlbnRpZmllciYgcHJvcGVy
dHlOYW1lKQorYm9vbCBKU0FjdGl2YXRpb246OmRlbGV0ZVByb3BlcnR5KEpTQ2VsbCogY2VsbCwg
RXhlY1N0YXRlKiBleGVjLCBQcm9wZXJ0eU5hbWUgcHJvcGVydHlOYW1lKQogewogICAgIGlmIChw
cm9wZXJ0eU5hbWUgPT0gZXhlYy0+cHJvcGVydHlOYW1lcygpLmFyZ3VtZW50cykKICAgICAgICAg
cmV0dXJuIGZhbHNlOwpAQCAtMjIxLDcgKzIyMSw3IEBAIEpTT2JqZWN0KiBKU0FjdGl2YXRpb246
OnRvVGhpc09iamVjdChKU0MKICAgICByZXR1cm4gZXhlYy0+Z2xvYmFsVGhpc1ZhbHVlKCk7CiB9
CiAKLUpTVmFsdWUgSlNBY3RpdmF0aW9uOjphcmd1bWVudHNHZXR0ZXIoRXhlY1N0YXRlKiwgSlNW
YWx1ZSBzbG90QmFzZSwgY29uc3QgSWRlbnRpZmllciYpCitKU1ZhbHVlIEpTQWN0aXZhdGlvbjo6
YXJndW1lbnRzR2V0dGVyKEV4ZWNTdGF0ZSosIEpTVmFsdWUgc2xvdEJhc2UsIFByb3BlcnR5TmFt
ZSkKIHsKICAgICBKU0FjdGl2YXRpb24qIGFjdGl2YXRpb24gPSBhc0FjdGl2YXRpb24oc2xvdEJh
c2UpOwogICAgIENhbGxGcmFtZSogY2FsbEZyYW1lID0gQ2FsbEZyYW1lOjpjcmVhdGUocmVpbnRl
cnByZXRfY2FzdDxSZWdpc3Rlcio+KGFjdGl2YXRpb24tPm1fcmVnaXN0ZXJzKSk7CkluZGV4OiBT
b3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9KU0FjdGl2YXRpb24uaAo9PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0t
LSBTb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9KU0FjdGl2YXRpb24uaAkocmV2aXNpb24g
MTE2NjY3KQorKysgU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvSlNBY3RpdmF0aW9uLmgJ
KHdvcmtpbmcgY29weSkKQEAgLTU5LDEzICs1OSwxMyBAQCBuYW1lc3BhY2UgSlNDIHsKIAogICAg
ICAgICBib29sIGlzRHluYW1pY1Njb3BlKGJvb2wmIHJlcXVpcmVzRHluYW1pY0NoZWNrcykgY29u
c3Q7CiAKLSAgICAgICAgc3RhdGljIGJvb2wgZ2V0T3duUHJvcGVydHlTbG90KEpTQ2VsbCosIEV4
ZWNTdGF0ZSosIGNvbnN0IElkZW50aWZpZXImLCBQcm9wZXJ0eVNsb3QmKTsKKyAgICAgICAgc3Rh
dGljIGJvb2wgZ2V0T3duUHJvcGVydHlTbG90KEpTQ2VsbCosIEV4ZWNTdGF0ZSosIFByb3BlcnR5
TmFtZSwgUHJvcGVydHlTbG90Jik7CiAgICAgICAgIHN0YXRpYyB2b2lkIGdldE93blByb3BlcnR5
TmFtZXMoSlNPYmplY3QqLCBFeGVjU3RhdGUqLCBQcm9wZXJ0eU5hbWVBcnJheSYsIEVudW1lcmF0
aW9uTW9kZSk7CiAKLSAgICAgICAgc3RhdGljIHZvaWQgcHV0KEpTQ2VsbCosIEV4ZWNTdGF0ZSos
IGNvbnN0IElkZW50aWZpZXImLCBKU1ZhbHVlLCBQdXRQcm9wZXJ0eVNsb3QmKTsKKyAgICAgICAg
c3RhdGljIHZvaWQgcHV0KEpTQ2VsbCosIEV4ZWNTdGF0ZSosIFByb3BlcnR5TmFtZSwgSlNWYWx1
ZSwgUHV0UHJvcGVydHlTbG90Jik7CiAKLSAgICAgICAgc3RhdGljIHZvaWQgcHV0RGlyZWN0Vmly
dHVhbChKU09iamVjdCosIEV4ZWNTdGF0ZSosIGNvbnN0IElkZW50aWZpZXImLCBKU1ZhbHVlLCB1
bnNpZ25lZCBhdHRyaWJ1dGVzKTsKLSAgICAgICAgc3RhdGljIGJvb2wgZGVsZXRlUHJvcGVydHko
SlNDZWxsKiwgRXhlY1N0YXRlKiwgY29uc3QgSWRlbnRpZmllciYgcHJvcGVydHlOYW1lKTsKKyAg
ICAgICAgc3RhdGljIHZvaWQgcHV0RGlyZWN0VmlydHVhbChKU09iamVjdCosIEV4ZWNTdGF0ZSos
IFByb3BlcnR5TmFtZSwgSlNWYWx1ZSwgdW5zaWduZWQgYXR0cmlidXRlcyk7CisgICAgICAgIHN0
YXRpYyBib29sIGRlbGV0ZVByb3BlcnR5KEpTQ2VsbCosIEV4ZWNTdGF0ZSosIFByb3BlcnR5TmFt
ZSk7CiAKICAgICAgICAgc3RhdGljIEpTT2JqZWN0KiB0b1RoaXNPYmplY3QoSlNDZWxsKiwgRXhl
Y1N0YXRlKik7CiAKQEAgLTgyLDEzICs4MiwxMyBAQCBuYW1lc3BhY2UgSlNDIHsKICAgICAgICAg
c3RhdGljIGNvbnN0IHVuc2lnbmVkIFN0cnVjdHVyZUZsYWdzID0gSXNFbnZpcm9ubWVudFJlY29y
ZCB8IE92ZXJyaWRlc0dldE93blByb3BlcnR5U2xvdCB8IE92ZXJyaWRlc1Zpc2l0Q2hpbGRyZW4g
fCBPdmVycmlkZXNHZXRQcm9wZXJ0eU5hbWVzIHwgSlNWYXJpYWJsZU9iamVjdDo6U3RydWN0dXJl
RmxhZ3M7CiAKICAgICBwcml2YXRlOgotICAgICAgICBib29sIHN5bWJvbFRhYmxlR2V0KGNvbnN0
IElkZW50aWZpZXImLCBQcm9wZXJ0eVNsb3QmKTsKLSAgICAgICAgYm9vbCBzeW1ib2xUYWJsZUdl
dChjb25zdCBJZGVudGlmaWVyJiwgUHJvcGVydHlEZXNjcmlwdG9yJik7Ci0gICAgICAgIGJvb2wg
c3ltYm9sVGFibGVHZXQoY29uc3QgSWRlbnRpZmllciYsIFByb3BlcnR5U2xvdCYsIGJvb2wmIHNs
b3RJc1dyaXRlYWJsZSk7Ci0gICAgICAgIGJvb2wgc3ltYm9sVGFibGVQdXQoRXhlY1N0YXRlKiwg
Y29uc3QgSWRlbnRpZmllciYsIEpTVmFsdWUsIGJvb2wgc2hvdWxkVGhyb3cpOwotICAgICAgICBi
b29sIHN5bWJvbFRhYmxlUHV0V2l0aEF0dHJpYnV0ZXMoSlNHbG9iYWxEYXRhJiwgY29uc3QgSWRl
bnRpZmllciYsIEpTVmFsdWUsIHVuc2lnbmVkIGF0dHJpYnV0ZXMpOworICAgICAgICBib29sIHN5
bWJvbFRhYmxlR2V0KFByb3BlcnR5TmFtZSwgUHJvcGVydHlTbG90Jik7CisgICAgICAgIGJvb2wg
c3ltYm9sVGFibGVHZXQoUHJvcGVydHlOYW1lLCBQcm9wZXJ0eURlc2NyaXB0b3ImKTsKKyAgICAg
ICAgYm9vbCBzeW1ib2xUYWJsZUdldChQcm9wZXJ0eU5hbWUsIFByb3BlcnR5U2xvdCYsIGJvb2wm
IHNsb3RJc1dyaXRlYWJsZSk7CisgICAgICAgIGJvb2wgc3ltYm9sVGFibGVQdXQoRXhlY1N0YXRl
KiwgUHJvcGVydHlOYW1lLCBKU1ZhbHVlLCBib29sIHNob3VsZFRocm93KTsKKyAgICAgICAgYm9v
bCBzeW1ib2xUYWJsZVB1dFdpdGhBdHRyaWJ1dGVzKEpTR2xvYmFsRGF0YSYsIFByb3BlcnR5TmFt
ZSwgSlNWYWx1ZSwgdW5zaWduZWQgYXR0cmlidXRlcyk7CiAKLSAgICAgICAgc3RhdGljIEpTVmFs
dWUgYXJndW1lbnRzR2V0dGVyKEV4ZWNTdGF0ZSosIEpTVmFsdWUsIGNvbnN0IElkZW50aWZpZXIm
KTsKKyAgICAgICAgc3RhdGljIEpTVmFsdWUgYXJndW1lbnRzR2V0dGVyKEV4ZWNTdGF0ZSosIEpT
VmFsdWUsIFByb3BlcnR5TmFtZSk7CiAgICAgICAgIE5FVkVSX0lOTElORSBQcm9wZXJ0eVNsb3Q6
OkdldFZhbHVlRnVuYyBnZXRBcmd1bWVudHNHZXR0ZXIoKTsKIAogICAgICAgICBpbnQgbV9udW1D
YXB0dXJlZEFyZ3M7CkluZGV4OiBTb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9KU0FycmF5
LmNwcAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9KU0FycmF5
LmNwcAkocmV2aXNpb24gMTE2NjY3KQorKysgU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUv
SlNBcnJheS5jcHAJKHdvcmtpbmcgY29weSkKQEAgLTUzNSw3ICs1MzUsNyBAQCB2b2lkIEpTQXJy
YXk6OnNldExlbmd0aFdyaXRhYmxlKEV4ZWNTdGF0CiB9CiAKIC8vIERlZmluZWQgaW4gRVM1LjEg
MTUuNC41LjEKLWJvb2wgSlNBcnJheTo6ZGVmaW5lT3duUHJvcGVydHkoSlNPYmplY3QqIG9iamVj
dCwgRXhlY1N0YXRlKiBleGVjLCBjb25zdCBJZGVudGlmaWVyJiBwcm9wZXJ0eU5hbWUsIFByb3Bl
cnR5RGVzY3JpcHRvciYgZGVzY3JpcHRvciwgYm9vbCB0aHJvd0V4Y2VwdGlvbikKK2Jvb2wgSlNB
cnJheTo6ZGVmaW5lT3duUHJvcGVydHkoSlNPYmplY3QqIG9iamVjdCwgRXhlY1N0YXRlKiBleGVj
LCBQcm9wZXJ0eU5hbWUgcHJvcGVydHlOYW1lLCBQcm9wZXJ0eURlc2NyaXB0b3ImIGRlc2NyaXB0
b3IsIGJvb2wgdGhyb3dFeGNlcHRpb24pCiB7CiAgICAgSlNBcnJheSogYXJyYXkgPSBqc0Nhc3Q8
SlNBcnJheSo+KG9iamVjdCk7CiAKQEAgLTYxOCwxMCArNjE4LDkgQEAgYm9vbCBKU0FycmF5Ojpk
ZWZpbmVPd25Qcm9wZXJ0eShKU09iamVjdAogICAgIH0KIAogICAgIC8vIDQuIEVsc2UgaWYgUCBp
cyBhbiBhcnJheSBpbmRleCAoMTUuNCksIHRoZW4KLSAgICBib29sIGlzQXJyYXlJbmRleDsKICAg
ICAvLyBhLiBMZXQgaW5kZXggYmUgVG9VaW50MzIoUCkuCi0gICAgdW5zaWduZWQgaW5kZXggPSBw
cm9wZXJ0eU5hbWUudG9BcnJheUluZGV4KGlzQXJyYXlJbmRleCk7Ci0gICAgaWYgKGlzQXJyYXlJ
bmRleCkgeworICAgIHVuc2lnbmVkIGluZGV4ID0gcHJvcGVydHlOYW1lLmFzSW5kZXgoKTsKKyAg
ICBpZiAoaW5kZXggIT0gUHJvcGVydHlOYW1lOjpOb3RBbkluZGV4KSB7CiAgICAgICAgIC8vIGIu
IFJlamVjdCBpZiBpbmRleCA+PSBvbGRMZW4gYW5kIG9sZExlbkRlc2MuW1tXcml0YWJsZV1dIGlz
IGZhbHNlLgogICAgICAgICBpZiAoaW5kZXggPj0gYXJyYXktPmxlbmd0aCgpICYmICFhcnJheS0+
aXNMZW5ndGhXcml0YWJsZSgpKQogICAgICAgICAgICAgcmV0dXJuIHJlamVjdChleGVjLCB0aHJv
d0V4Y2VwdGlvbiwgIkF0dGVtcHRpbmcgdG8gZGVmaW5lIG51bWVyaWMgcHJvcGVydHkgb24gYXJy
YXkgd2l0aCBub24td3JpdGFibGUgbGVuZ3RoIHByb3BlcnR5LiIpOwpAQCAtNjY1LDcgKzY2NCw3
IEBAIGJvb2wgSlNBcnJheTo6Z2V0T3duUHJvcGVydHlTbG90QnlJbmRleCgKICAgICByZXR1cm4g
SlNPYmplY3Q6OmdldE93blByb3BlcnR5U2xvdCh0aGlzT2JqZWN0LCBleGVjLCBJZGVudGlmaWVy
Ojpmcm9tKGV4ZWMsIGkpLCBzbG90KTsKIH0KIAotYm9vbCBKU0FycmF5OjpnZXRPd25Qcm9wZXJ0
eVNsb3QoSlNDZWxsKiBjZWxsLCBFeGVjU3RhdGUqIGV4ZWMsIGNvbnN0IElkZW50aWZpZXImIHBy
b3BlcnR5TmFtZSwgUHJvcGVydHlTbG90JiBzbG90KQorYm9vbCBKU0FycmF5OjpnZXRPd25Qcm9w
ZXJ0eVNsb3QoSlNDZWxsKiBjZWxsLCBFeGVjU3RhdGUqIGV4ZWMsIFByb3BlcnR5TmFtZSBwcm9w
ZXJ0eU5hbWUsIFByb3BlcnR5U2xvdCYgc2xvdCkKIHsKICAgICBKU0FycmF5KiB0aGlzT2JqZWN0
ID0ganNDYXN0PEpTQXJyYXkqPihjZWxsKTsKICAgICBpZiAocHJvcGVydHlOYW1lID09IGV4ZWMt
PnByb3BlcnR5TmFtZXMoKS5sZW5ndGgpIHsKQEAgLTY3MywxNSArNjcyLDE0IEBAIGJvb2wgSlNB
cnJheTo6Z2V0T3duUHJvcGVydHlTbG90KEpTQ2VsbCoKICAgICAgICAgcmV0dXJuIHRydWU7CiAg
ICAgfQogCi0gICAgYm9vbCBpc0FycmF5SW5kZXg7Ci0gICAgdW5zaWduZWQgaSA9IHByb3BlcnR5
TmFtZS50b0FycmF5SW5kZXgoaXNBcnJheUluZGV4KTsKLSAgICBpZiAoaXNBcnJheUluZGV4KQor
ICAgIHVuc2lnbmVkIGkgPSBwcm9wZXJ0eU5hbWUuYXNJbmRleCgpOworICAgIGlmIChpICE9IFBy
b3BlcnR5TmFtZTo6Tm90QW5JbmRleCkKICAgICAgICAgcmV0dXJuIEpTQXJyYXk6OmdldE93blBy
b3BlcnR5U2xvdEJ5SW5kZXgodGhpc09iamVjdCwgZXhlYywgaSwgc2xvdCk7CiAKICAgICByZXR1
cm4gSlNPYmplY3Q6OmdldE93blByb3BlcnR5U2xvdCh0aGlzT2JqZWN0LCBleGVjLCBwcm9wZXJ0
eU5hbWUsIHNsb3QpOwogfQogCi1ib29sIEpTQXJyYXk6OmdldE93blByb3BlcnR5RGVzY3JpcHRv
cihKU09iamVjdCogb2JqZWN0LCBFeGVjU3RhdGUqIGV4ZWMsIGNvbnN0IElkZW50aWZpZXImIHBy
b3BlcnR5TmFtZSwgUHJvcGVydHlEZXNjcmlwdG9yJiBkZXNjcmlwdG9yKQorYm9vbCBKU0FycmF5
OjpnZXRPd25Qcm9wZXJ0eURlc2NyaXB0b3IoSlNPYmplY3QqIG9iamVjdCwgRXhlY1N0YXRlKiBl
eGVjLCBQcm9wZXJ0eU5hbWUgcHJvcGVydHlOYW1lLCBQcm9wZXJ0eURlc2NyaXB0b3ImIGRlc2Ny
aXB0b3IpCiB7CiAgICAgSlNBcnJheSogdGhpc09iamVjdCA9IGpzQ2FzdDxKU0FycmF5Kj4ob2Jq
ZWN0KTsKICAgICBpZiAocHJvcGVydHlOYW1lID09IGV4ZWMtPnByb3BlcnR5TmFtZXMoKS5sZW5n
dGgpIHsKQEAgLTY5MSw5ICs2ODksOCBAQCBib29sIEpTQXJyYXk6OmdldE93blByb3BlcnR5RGVz
Y3JpcHRvcihKCiAKICAgICBBcnJheVN0b3JhZ2UqIHN0b3JhZ2UgPSB0aGlzT2JqZWN0LT5tX3N0
b3JhZ2U7CiAgICAgCi0gICAgYm9vbCBpc0FycmF5SW5kZXg7Ci0gICAgdW5zaWduZWQgaSA9IHBy
b3BlcnR5TmFtZS50b0FycmF5SW5kZXgoaXNBcnJheUluZGV4KTsKLSAgICBpZiAoaXNBcnJheUlu
ZGV4KSB7CisgICAgdW5zaWduZWQgaSA9IHByb3BlcnR5TmFtZS5hc0luZGV4KCk7CisgICAgaWYg
KGkgIT0gUHJvcGVydHlOYW1lOjpOb3RBbkluZGV4KSB7CiAgICAgICAgIGlmIChpID49IHN0b3Jh
Z2UtPm1fbGVuZ3RoKQogICAgICAgICAgICAgcmV0dXJuIGZhbHNlOwogICAgICAgICBpZiAoaSA8
IHRoaXNPYmplY3QtPm1fdmVjdG9yTGVuZ3RoKSB7CkBAIC03MTQsMTIgKzcxMSwxMSBAQCBib29s
IEpTQXJyYXk6OmdldE93blByb3BlcnR5RGVzY3JpcHRvcihKCiB9CiAKIC8vIEVDTUEgMTUuNC41
LjEKLXZvaWQgSlNBcnJheTo6cHV0KEpTQ2VsbCogY2VsbCwgRXhlY1N0YXRlKiBleGVjLCBjb25z
dCBJZGVudGlmaWVyJiBwcm9wZXJ0eU5hbWUsIEpTVmFsdWUgdmFsdWUsIFB1dFByb3BlcnR5U2xv
dCYgc2xvdCkKK3ZvaWQgSlNBcnJheTo6cHV0KEpTQ2VsbCogY2VsbCwgRXhlY1N0YXRlKiBleGVj
LCBQcm9wZXJ0eU5hbWUgcHJvcGVydHlOYW1lLCBKU1ZhbHVlIHZhbHVlLCBQdXRQcm9wZXJ0eVNs
b3QmIHNsb3QpCiB7CiAgICAgSlNBcnJheSogdGhpc09iamVjdCA9IGpzQ2FzdDxKU0FycmF5Kj4o
Y2VsbCk7Ci0gICAgYm9vbCBpc0FycmF5SW5kZXg7Ci0gICAgdW5zaWduZWQgaSA9IHByb3BlcnR5
TmFtZS50b0FycmF5SW5kZXgoaXNBcnJheUluZGV4KTsKLSAgICBpZiAoaXNBcnJheUluZGV4KSB7
CisgICAgdW5zaWduZWQgaSA9IHByb3BlcnR5TmFtZS5hc0luZGV4KCk7CisgICAgaWYgKGkgIT0g
UHJvcGVydHlOYW1lOjpOb3RBbkluZGV4KSB7CiAgICAgICAgIHB1dEJ5SW5kZXgodGhpc09iamVj
dCwgZXhlYywgaSwgdmFsdWUsIHNsb3QuaXNTdHJpY3RNb2RlKCkpOwogICAgICAgICByZXR1cm47
CiAgICAgfQpAQCAtOTE5LDEyICs5MTUsMTEgQEAgYm9vbCBKU0FycmF5OjpwdXREaXJlY3RJbmRl
eEJleW9uZFZlY3RvcgogICAgIHJldHVybiB0cnVlOwogfQogCi1ib29sIEpTQXJyYXk6OmRlbGV0
ZVByb3BlcnR5KEpTQ2VsbCogY2VsbCwgRXhlY1N0YXRlKiBleGVjLCBjb25zdCBJZGVudGlmaWVy
JiBwcm9wZXJ0eU5hbWUpCitib29sIEpTQXJyYXk6OmRlbGV0ZVByb3BlcnR5KEpTQ2VsbCogY2Vs
bCwgRXhlY1N0YXRlKiBleGVjLCBQcm9wZXJ0eU5hbWUgcHJvcGVydHlOYW1lKQogewogICAgIEpT
QXJyYXkqIHRoaXNPYmplY3QgPSBqc0Nhc3Q8SlNBcnJheSo+KGNlbGwpOwotICAgIGJvb2wgaXNB
cnJheUluZGV4OwotICAgIHVuc2lnbmVkIGkgPSBwcm9wZXJ0eU5hbWUudG9BcnJheUluZGV4KGlz
QXJyYXlJbmRleCk7Ci0gICAgaWYgKGlzQXJyYXlJbmRleCkKKyAgICB1bnNpZ25lZCBpID0gcHJv
cGVydHlOYW1lLmFzSW5kZXgoKTsKKyAgICBpZiAoaSAhPSBQcm9wZXJ0eU5hbWU6Ok5vdEFuSW5k
ZXgpCiAgICAgICAgIHJldHVybiB0aGlzT2JqZWN0LT5tZXRob2RUYWJsZSgpLT5kZWxldGVQcm9w
ZXJ0eUJ5SW5kZXgodGhpc09iamVjdCwgZXhlYywgaSk7CiAKICAgICBpZiAocHJvcGVydHlOYW1l
ID09IGV4ZWMtPnByb3BlcnR5TmFtZXMoKS5sZW5ndGgpCkluZGV4OiBTb3VyY2UvSmF2YVNjcmlw
dENvcmUvcnVudGltZS9KU0FycmF5LmgKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL0phdmFTY3JpcHRD
b3JlL3J1bnRpbWUvSlNBcnJheS5oCShyZXZpc2lvbiAxMTY2NjcpCisrKyBTb3VyY2UvSmF2YVNj
cmlwdENvcmUvcnVudGltZS9KU0FycmF5LmgJKHdvcmtpbmcgY29weSkKQEAgLTE2NCwxMSArMTY0
LDExIEBAIG5hbWVzcGFjZSBKU0MgewogICAgICAgICAvLyAgIC0gY2FsbGVkICdjb21wbGV0ZUlu
aXRpYWxpemF0aW9uJyBhZnRlciBhbGwgcHJvcGVydGllcyBoYXZlIGJlZW4gaW5pdGlhbGl6ZWQu
CiAgICAgICAgIHN0YXRpYyBKU0FycmF5KiB0cnlDcmVhdGVVbmluaXRpYWxpemVkKEpTR2xvYmFs
RGF0YSYsIFN0cnVjdHVyZSosIHVuc2lnbmVkIGluaXRpYWxMZW5ndGgpOwogCi0gICAgICAgIEpT
X0VYUE9SVF9QUklWQVRFIHN0YXRpYyBib29sIGRlZmluZU93blByb3BlcnR5KEpTT2JqZWN0Kiwg
RXhlY1N0YXRlKiwgY29uc3QgSWRlbnRpZmllciYsIFByb3BlcnR5RGVzY3JpcHRvciYsIGJvb2wg
dGhyb3dFeGNlcHRpb24pOworICAgICAgICBKU19FWFBPUlRfUFJJVkFURSBzdGF0aWMgYm9vbCBk
ZWZpbmVPd25Qcm9wZXJ0eShKU09iamVjdCosIEV4ZWNTdGF0ZSosIFByb3BlcnR5TmFtZSwgUHJv
cGVydHlEZXNjcmlwdG9yJiwgYm9vbCB0aHJvd0V4Y2VwdGlvbik7CiAKLSAgICAgICAgc3RhdGlj
IGJvb2wgZ2V0T3duUHJvcGVydHlTbG90KEpTQ2VsbCosIEV4ZWNTdGF0ZSosIGNvbnN0IElkZW50
aWZpZXImLCBQcm9wZXJ0eVNsb3QmKTsKKyAgICAgICAgc3RhdGljIGJvb2wgZ2V0T3duUHJvcGVy
dHlTbG90KEpTQ2VsbCosIEV4ZWNTdGF0ZSosIFByb3BlcnR5TmFtZSwgUHJvcGVydHlTbG90Jik7
CiAgICAgICAgIEpTX0VYUE9SVF9QUklWQVRFIHN0YXRpYyBib29sIGdldE93blByb3BlcnR5U2xv
dEJ5SW5kZXgoSlNDZWxsKiwgRXhlY1N0YXRlKiwgdW5zaWduZWQgcHJvcGVydHlOYW1lLCBQcm9w
ZXJ0eVNsb3QmKTsKLSAgICAgICAgc3RhdGljIGJvb2wgZ2V0T3duUHJvcGVydHlEZXNjcmlwdG9y
KEpTT2JqZWN0KiwgRXhlY1N0YXRlKiwgY29uc3QgSWRlbnRpZmllciYsIFByb3BlcnR5RGVzY3Jp
cHRvciYpOworICAgICAgICBzdGF0aWMgYm9vbCBnZXRPd25Qcm9wZXJ0eURlc2NyaXB0b3IoSlNP
YmplY3QqLCBFeGVjU3RhdGUqLCBQcm9wZXJ0eU5hbWUsIFByb3BlcnR5RGVzY3JpcHRvciYpOwog
ICAgICAgICBzdGF0aWMgdm9pZCBwdXRCeUluZGV4KEpTQ2VsbCosIEV4ZWNTdGF0ZSosIHVuc2ln
bmVkIHByb3BlcnR5TmFtZSwgSlNWYWx1ZSwgYm9vbCBzaG91bGRUaHJvdyk7CiAgICAgICAgIC8v
IFRoaXMgaXMgc2ltaWxhciB0byB0aGUgSlNPYmplY3Q6OnB1dERpcmVjdCogbWV0aG9kczoKICAg
ICAgICAgLy8gIC0gdGhlIHByb3RvdHlwZSBjaGFpbiBpcyBub3QgY29uc3VsdGVkCkBAIC0yODEs
OSArMjgxLDkgQEAgbmFtZXNwYWNlIEpTQyB7CiAKICAgICBwcm90ZWN0ZWQ6CiAgICAgICAgIHN0
YXRpYyBjb25zdCB1bnNpZ25lZCBTdHJ1Y3R1cmVGbGFncyA9IE92ZXJyaWRlc0dldE93blByb3Bl
cnR5U2xvdCB8IE92ZXJyaWRlc1Zpc2l0Q2hpbGRyZW4gfCBPdmVycmlkZXNHZXRQcm9wZXJ0eU5h
bWVzIHwgSlNPYmplY3Q6OlN0cnVjdHVyZUZsYWdzOwotICAgICAgICBzdGF0aWMgdm9pZCBwdXQo
SlNDZWxsKiwgRXhlY1N0YXRlKiwgY29uc3QgSWRlbnRpZmllciYgcHJvcGVydHlOYW1lLCBKU1Zh
bHVlLCBQdXRQcm9wZXJ0eVNsb3QmKTsKKyAgICAgICAgc3RhdGljIHZvaWQgcHV0KEpTQ2VsbCos
IEV4ZWNTdGF0ZSosIFByb3BlcnR5TmFtZSwgSlNWYWx1ZSwgUHV0UHJvcGVydHlTbG90Jik7CiAK
LSAgICAgICAgc3RhdGljIGJvb2wgZGVsZXRlUHJvcGVydHkoSlNDZWxsKiwgRXhlY1N0YXRlKiwg
Y29uc3QgSWRlbnRpZmllciYgcHJvcGVydHlOYW1lKTsKKyAgICAgICAgc3RhdGljIGJvb2wgZGVs
ZXRlUHJvcGVydHkoSlNDZWxsKiwgRXhlY1N0YXRlKiwgUHJvcGVydHlOYW1lKTsKICAgICAgICAg
c3RhdGljIGJvb2wgZGVsZXRlUHJvcGVydHlCeUluZGV4KEpTQ2VsbCosIEV4ZWNTdGF0ZSosIHVu
c2lnbmVkIHByb3BlcnR5TmFtZSk7CiAgICAgICAgIHN0YXRpYyB2b2lkIGdldE93blByb3BlcnR5
TmFtZXMoSlNPYmplY3QqLCBFeGVjU3RhdGUqLCBQcm9wZXJ0eU5hbWVBcnJheSYsIEVudW1lcmF0
aW9uTW9kZSk7CiAKQEAgLTM1NywxNiArMzU3LDYgQEAgbmFtZXNwYWNlIEpTQyB7CiAgICAgaW5s
aW5lIGJvb2wgaXNKU0FycmF5KEpTQ2VsbCogY2VsbCkgeyByZXR1cm4gY2VsbC0+Y2xhc3NJbmZv
KCkgPT0gJkpTQXJyYXk6OnNfaW5mbzsgfQogICAgIGlubGluZSBib29sIGlzSlNBcnJheShKU1Zh
bHVlIHYpIHsgcmV0dXJuIHYuaXNDZWxsKCkgJiYgaXNKU0FycmF5KHYuYXNDZWxsKCkpOyB9CiAK
LSAgICAvLyBSdWxlIGZyb20gRUNNQSAxNS4yIGFib3V0IHdoYXQgYW4gYXJyYXkgaW5kZXggaXMu
Ci0gICAgLy8gTXVzdCBleGFjdGx5IG1hdGNoIHN0cmluZyBmb3JtIG9mIGFuIHVuc2lnbmVkIGlu
dGVnZXIsIGFuZCBiZSBsZXNzIHRoYW4gMl4zMiAtIDEuCi0gICAgaW5saW5lIHVuc2lnbmVkIElk
ZW50aWZpZXI6OnRvQXJyYXlJbmRleChib29sJiBvaykgY29uc3QKLSAgICB7Ci0gICAgICAgIHVu
c2lnbmVkIGkgPSB0b1VJbnQzMihvayk7Ci0gICAgICAgIGlmIChvayAmJiBpID49IDB4RkZGRkZG
RkZVKQotICAgICAgICAgICAgb2sgPSBmYWxzZTsKLSAgICAgICAgcmV0dXJuIGk7Ci0gICAgfQot
CiAvLyBUaGUgZGVmaW5pdGlvbiBvZiBNQVhfU1RPUkFHRV9WRUNUT1JfTEVOR1RIIGlzIGRlcGVu
ZGFudCBvbiB0aGUgZGVmaW5pdGlvbiBzdG9yYWdlU2l6ZQogLy8gZnVuY3Rpb24gYmVsb3cgLSB0
aGUgTUFYX1NUT1JBR0VfVkVDVE9SX0xFTkdUSCBsaW1pdCBpcyBkZWZpbmVkIHN1Y2ggdGhhdCB0
aGUgc3RvcmFnZQogLy8gc2l6ZSBjYWxjdWxhdGlvbiBjYW5ub3Qgb3ZlcmZsb3cuICAoc2l6ZW9m
KEFycmF5U3RvcmFnZSkgLSBzaXplb2YoV3JpdGVCYXJyaWVyPFVua25vd24+KSkgKwpJbmRleDog
U291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvSlNCb3VuZEZ1bmN0aW9uLmNwcAo9PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09Ci0tLSBTb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9KU0JvdW5kRnVuY3Rpb24uY3Bw
CShyZXZpc2lvbiAxMTY2NjcpCisrKyBTb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9KU0Jv
dW5kRnVuY3Rpb24uY3BwCSh3b3JraW5nIGNvcHkpCkBAIC03Niw3ICs3Niw3IEBAIEVuY29kZWRK
U1ZhbHVlIEpTQ19IT1NUX0NBTEwgYm91bmRGdW5jdGkKICAgICByZXR1cm4gSlNWYWx1ZTo6ZW5j
b2RlKGNvbnN0cnVjdChleGVjLCB0YXJnZXRGdW5jdGlvbiwgY29uc3RydWN0VHlwZSwgY29uc3Ry
dWN0RGF0YSwgYXJncykpOwogfQogCi1KU0JvdW5kRnVuY3Rpb24qIEpTQm91bmRGdW5jdGlvbjo6
Y3JlYXRlKEV4ZWNTdGF0ZSogZXhlYywgSlNHbG9iYWxPYmplY3QqIGdsb2JhbE9iamVjdCwgSlNP
YmplY3QqIHRhcmdldEZ1bmN0aW9uLCBKU1ZhbHVlIGJvdW5kVGhpcywgSlNWYWx1ZSBib3VuZEFy
Z3MsIGludCBsZW5ndGgsIGNvbnN0IElkZW50aWZpZXImIG5hbWUpCitKU0JvdW5kRnVuY3Rpb24q
IEpTQm91bmRGdW5jdGlvbjo6Y3JlYXRlKEV4ZWNTdGF0ZSogZXhlYywgSlNHbG9iYWxPYmplY3Qq
IGdsb2JhbE9iamVjdCwgSlNPYmplY3QqIHRhcmdldEZ1bmN0aW9uLCBKU1ZhbHVlIGJvdW5kVGhp
cywgSlNWYWx1ZSBib3VuZEFyZ3MsIGludCBsZW5ndGgsIGNvbnN0IFVTdHJpbmcmIG5hbWUpCiB7
CiAgICAgQ29uc3RydWN0RGF0YSBjb25zdHJ1Y3REYXRhOwogICAgIENvbnN0cnVjdFR5cGUgY29u
c3RydWN0VHlwZSA9IEpTQzo6Z2V0Q29uc3RydWN0RGF0YSh0YXJnZXRGdW5jdGlvbiwgY29uc3Ry
dWN0RGF0YSk7CkBAIC0xMDcsNyArMTA3LDcgQEAgSlNCb3VuZEZ1bmN0aW9uOjpKU0JvdW5kRnVu
Y3Rpb24oRXhlY1N0YQogewogfQogCi12b2lkIEpTQm91bmRGdW5jdGlvbjo6ZmluaXNoQ3JlYXRp
b24oRXhlY1N0YXRlKiBleGVjLCBOYXRpdmVFeGVjdXRhYmxlKiBleGVjdXRhYmxlLCBpbnQgbGVu
Z3RoLCBjb25zdCBJZGVudGlmaWVyJiBuYW1lKQordm9pZCBKU0JvdW5kRnVuY3Rpb246OmZpbmlz
aENyZWF0aW9uKEV4ZWNTdGF0ZSogZXhlYywgTmF0aXZlRXhlY3V0YWJsZSogZXhlY3V0YWJsZSwg
aW50IGxlbmd0aCwgY29uc3QgVVN0cmluZyYgbmFtZSkKIHsKICAgICBCYXNlOjpmaW5pc2hDcmVh
dGlvbihleGVjLCBleGVjdXRhYmxlLCBsZW5ndGgsIG5hbWUpOwogICAgIEFTU0VSVChpbmhlcml0
cygmc19pbmZvKSk7CkluZGV4OiBTb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9KU0JvdW5k
RnVuY3Rpb24uaAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9K
U0JvdW5kRnVuY3Rpb24uaAkocmV2aXNpb24gMTE2NjY3KQorKysgU291cmNlL0phdmFTY3JpcHRD
b3JlL3J1bnRpbWUvSlNCb3VuZEZ1bmN0aW9uLmgJKHdvcmtpbmcgY29weSkKQEAgLTM3LDcgKzM3
LDcgQEAgY2xhc3MgSlNCb3VuZEZ1bmN0aW9uIDogcHVibGljIEpTRnVuY3RpbwogcHVibGljOgog
ICAgIHR5cGVkZWYgSlNGdW5jdGlvbiBCYXNlOwogCi0gICAgc3RhdGljIEpTQm91bmRGdW5jdGlv
biogY3JlYXRlKEV4ZWNTdGF0ZSosIEpTR2xvYmFsT2JqZWN0KiwgSlNPYmplY3QqIHRhcmdldEZ1
bmN0aW9uLCBKU1ZhbHVlIGJvdW5kVGhpcywgSlNWYWx1ZSBib3VuZEFyZ3MsIGludCwgY29uc3Qg
SWRlbnRpZmllciYpOworICAgIHN0YXRpYyBKU0JvdW5kRnVuY3Rpb24qIGNyZWF0ZShFeGVjU3Rh
dGUqLCBKU0dsb2JhbE9iamVjdCosIEpTT2JqZWN0KiB0YXJnZXRGdW5jdGlvbiwgSlNWYWx1ZSBi
b3VuZFRoaXMsIEpTVmFsdWUgYm91bmRBcmdzLCBpbnQsIGNvbnN0IFVTdHJpbmcmKTsKIAogICAg
IHN0YXRpYyBib29sIGhhc0luc3RhbmNlKEpTT2JqZWN0KiwgRXhlY1N0YXRlKiwgSlNWYWx1ZSwg
SlNWYWx1ZSBwcm90byk7CiAKQEAgLTYxLDcgKzYxLDcgQEAgcHJvdGVjdGVkOgogcHJpdmF0ZToK
ICAgICBKU0JvdW5kRnVuY3Rpb24oRXhlY1N0YXRlKiwgSlNHbG9iYWxPYmplY3QqLCBTdHJ1Y3R1
cmUqLCBKU09iamVjdCogdGFyZ2V0RnVuY3Rpb24sIEpTVmFsdWUgYm91bmRUaGlzLCBKU1ZhbHVl
IGJvdW5kQXJncyk7CiAgICAgCi0gICAgdm9pZCBmaW5pc2hDcmVhdGlvbihFeGVjU3RhdGUqLCBO
YXRpdmVFeGVjdXRhYmxlKiwgaW50LCBjb25zdCBJZGVudGlmaWVyJik7CisgICAgdm9pZCBmaW5p
c2hDcmVhdGlvbihFeGVjU3RhdGUqLCBOYXRpdmVFeGVjdXRhYmxlKiwgaW50LCBjb25zdCBVU3Ry
aW5nJik7CiAKICAgICBXcml0ZUJhcnJpZXI8SlNPYmplY3Q+IG1fdGFyZ2V0RnVuY3Rpb247CiAg
ICAgV3JpdGVCYXJyaWVyPFVua25vd24+IG1fYm91bmRUaGlzOwpJbmRleDogU291cmNlL0phdmFT
Y3JpcHRDb3JlL3J1bnRpbWUvSlNDZWxsLmNwcAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvSmF2YVNj
cmlwdENvcmUvcnVudGltZS9KU0NlbGwuY3BwCShyZXZpc2lvbiAxMTY2NjcpCisrKyBTb3VyY2Uv
SmF2YVNjcmlwdENvcmUvcnVudGltZS9KU0NlbGwuY3BwCSh3b3JraW5nIGNvcHkpCkBAIC03MSw3
ICs3MSw3IEBAIENvbnN0cnVjdFR5cGUgSlNDZWxsOjpnZXRDb25zdHJ1Y3REYXRhKEoKICAgICBy
ZXR1cm4gQ29uc3RydWN0VHlwZU5vbmU7CiB9CiAKLWJvb2wgSlNDZWxsOjpnZXRPd25Qcm9wZXJ0
eVNsb3QoSlNDZWxsKiBjZWxsLCBFeGVjU3RhdGUqIGV4ZWMsIGNvbnN0IElkZW50aWZpZXImIGlk
ZW50aWZpZXIsIFByb3BlcnR5U2xvdCYgc2xvdCkKK2Jvb2wgSlNDZWxsOjpnZXRPd25Qcm9wZXJ0
eVNsb3QoSlNDZWxsKiBjZWxsLCBFeGVjU3RhdGUqIGV4ZWMsIFByb3BlcnR5TmFtZSBpZGVudGlm
aWVyLCBQcm9wZXJ0eVNsb3QmIHNsb3QpCiB7CiAgICAgLy8gVGhpcyBpcyBub3QgYSBnZW5lcmFs
IHB1cnBvc2UgaW1wbGVtZW50YXRpb24gb2YgZ2V0T3duUHJvcGVydHlTbG90LgogICAgIC8vIEl0
IHNob3VsZCBvbmx5IGJlIGNhbGxlZCBieSBKU1ZhbHVlOjpnZXQuCkBAIC05NSw3ICs5NSw3IEBA
IGJvb2wgSlNDZWxsOjpnZXRPd25Qcm9wZXJ0eVNsb3RCeUluZGV4KEoKICAgICByZXR1cm4gdHJ1
ZTsKIH0KIAotdm9pZCBKU0NlbGw6OnB1dChKU0NlbGwqIGNlbGwsIEV4ZWNTdGF0ZSogZXhlYywg
Y29uc3QgSWRlbnRpZmllciYgaWRlbnRpZmllciwgSlNWYWx1ZSB2YWx1ZSwgUHV0UHJvcGVydHlT
bG90JiBzbG90KQordm9pZCBKU0NlbGw6OnB1dChKU0NlbGwqIGNlbGwsIEV4ZWNTdGF0ZSogZXhl
YywgUHJvcGVydHlOYW1lIGlkZW50aWZpZXIsIEpTVmFsdWUgdmFsdWUsIFB1dFByb3BlcnR5U2xv
dCYgc2xvdCkKIHsKICAgICBpZiAoY2VsbC0+aXNTdHJpbmcoKSkgewogICAgICAgICBKU1ZhbHVl
KGNlbGwpLnB1dFRvUHJpbWl0aXZlKGV4ZWMsIGlkZW50aWZpZXIsIHZhbHVlLCBzbG90KTsKQEAg
LTExNiw3ICsxMTYsNyBAQCB2b2lkIEpTQ2VsbDo6cHV0QnlJbmRleChKU0NlbGwqIGNlbGwsIEV4
CiAgICAgdGhpc09iamVjdC0+bWV0aG9kVGFibGUoKS0+cHV0QnlJbmRleCh0aGlzT2JqZWN0LCBl
eGVjLCBpZGVudGlmaWVyLCB2YWx1ZSwgc2hvdWxkVGhyb3cpOwogfQogCi1ib29sIEpTQ2VsbDo6
ZGVsZXRlUHJvcGVydHkoSlNDZWxsKiBjZWxsLCBFeGVjU3RhdGUqIGV4ZWMsIGNvbnN0IElkZW50
aWZpZXImIGlkZW50aWZpZXIpCitib29sIEpTQ2VsbDo6ZGVsZXRlUHJvcGVydHkoSlNDZWxsKiBj
ZWxsLCBFeGVjU3RhdGUqIGV4ZWMsIFByb3BlcnR5TmFtZSBpZGVudGlmaWVyKQogewogICAgIEpT
T2JqZWN0KiB0aGlzT2JqZWN0ID0gY2VsbC0+dG9PYmplY3QoZXhlYywgZXhlYy0+bGV4aWNhbEds
b2JhbE9iamVjdCgpKTsKICAgICByZXR1cm4gdGhpc09iamVjdC0+bWV0aG9kVGFibGUoKS0+ZGVs
ZXRlUHJvcGVydHkodGhpc09iamVjdCwgZXhlYywgaWRlbnRpZmllcik7CkBAIC0xOTUsMTggKzE5
NSwxOCBAQCBib29sIEpTQ2VsbDo6aGFzSW5zdGFuY2UoSlNPYmplY3QqLCBFeGVjCiAgICAgcmV0
dXJuIGZhbHNlOwogfQogCi12b2lkIEpTQ2VsbDo6cHV0RGlyZWN0VmlydHVhbChKU09iamVjdCos
IEV4ZWNTdGF0ZSosIGNvbnN0IElkZW50aWZpZXImLCBKU1ZhbHVlLCB1bnNpZ25lZCkKK3ZvaWQg
SlNDZWxsOjpwdXREaXJlY3RWaXJ0dWFsKEpTT2JqZWN0KiwgRXhlY1N0YXRlKiwgUHJvcGVydHlO
YW1lLCBKU1ZhbHVlLCB1bnNpZ25lZCkKIHsKICAgICBBU1NFUlRfTk9UX1JFQUNIRUQoKTsKIH0K
IAotYm9vbCBKU0NlbGw6OmRlZmluZU93blByb3BlcnR5KEpTT2JqZWN0KiwgRXhlY1N0YXRlKiwg
Y29uc3QgSWRlbnRpZmllciYsIFByb3BlcnR5RGVzY3JpcHRvciYsIGJvb2wpCitib29sIEpTQ2Vs
bDo6ZGVmaW5lT3duUHJvcGVydHkoSlNPYmplY3QqLCBFeGVjU3RhdGUqLCBQcm9wZXJ0eU5hbWUs
IFByb3BlcnR5RGVzY3JpcHRvciYsIGJvb2wpCiB7CiAgICAgQVNTRVJUX05PVF9SRUFDSEVEKCk7
CiAgICAgcmV0dXJuIGZhbHNlOwogfQogCi1ib29sIEpTQ2VsbDo6Z2V0T3duUHJvcGVydHlEZXNj
cmlwdG9yKEpTT2JqZWN0KiwgRXhlY1N0YXRlKiwgY29uc3QgSWRlbnRpZmllciYsIFByb3BlcnR5
RGVzY3JpcHRvciYpCitib29sIEpTQ2VsbDo6Z2V0T3duUHJvcGVydHlEZXNjcmlwdG9yKEpTT2Jq
ZWN0KiwgRXhlY1N0YXRlKiwgUHJvcGVydHlOYW1lLCBQcm9wZXJ0eURlc2NyaXB0b3ImKQogewog
ICAgIEFTU0VSVF9OT1RfUkVBQ0hFRCgpOwogICAgIHJldHVybiBmYWxzZTsKSW5kZXg6IFNvdXJj
ZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL0pTQ2VsbC5oCj09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9K
YXZhU2NyaXB0Q29yZS9ydW50aW1lL0pTQ2VsbC5oCShyZXZpc2lvbiAxMTY2NjcpCisrKyBTb3Vy
Y2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9KU0NlbGwuaAkod29ya2luZyBjb3B5KQpAQCAtMTA2
LDEwICsxMDYsMTAgQEAgbmFtZXNwYWNlIEpTQyB7CiAgICAgICAgIGNvbnN0IENsYXNzSW5mbyog
Y2xhc3NJbmZvKCkgY29uc3Q7CiAgICAgICAgIGNvbnN0IENsYXNzSW5mbyogdmFsaWRhdGVkQ2xh
c3NJbmZvKCkgY29uc3Q7CiAgICAgICAgIGNvbnN0IE1ldGhvZFRhYmxlKiBtZXRob2RUYWJsZSgp
IGNvbnN0OwotICAgICAgICBzdGF0aWMgdm9pZCBwdXQoSlNDZWxsKiwgRXhlY1N0YXRlKiwgY29u
c3QgSWRlbnRpZmllciYgcHJvcGVydHlOYW1lLCBKU1ZhbHVlLCBQdXRQcm9wZXJ0eVNsb3QmKTsK
KyAgICAgICAgc3RhdGljIHZvaWQgcHV0KEpTQ2VsbCosIEV4ZWNTdGF0ZSosIFByb3BlcnR5TmFt
ZSwgSlNWYWx1ZSwgUHV0UHJvcGVydHlTbG90Jik7CiAgICAgICAgIHN0YXRpYyB2b2lkIHB1dEJ5
SW5kZXgoSlNDZWxsKiwgRXhlY1N0YXRlKiwgdW5zaWduZWQgcHJvcGVydHlOYW1lLCBKU1ZhbHVl
LCBib29sIHNob3VsZFRocm93KTsKICAgICAgICAgCi0gICAgICAgIHN0YXRpYyBib29sIGRlbGV0
ZVByb3BlcnR5KEpTQ2VsbCosIEV4ZWNTdGF0ZSosIGNvbnN0IElkZW50aWZpZXImIHByb3BlcnR5
TmFtZSk7CisgICAgICAgIHN0YXRpYyBib29sIGRlbGV0ZVByb3BlcnR5KEpTQ2VsbCosIEV4ZWNT
dGF0ZSosIFByb3BlcnR5TmFtZSk7CiAgICAgICAgIHN0YXRpYyBib29sIGRlbGV0ZVByb3BlcnR5
QnlJbmRleChKU0NlbGwqLCBFeGVjU3RhdGUqLCB1bnNpZ25lZCBwcm9wZXJ0eU5hbWUpOwogCiAg
ICAgICAgIHN0YXRpYyBKU09iamVjdCogdG9UaGlzT2JqZWN0KEpTQ2VsbCosIEV4ZWNTdGF0ZSop
OwpAQCAtMTIxLDcgKzEyMSw3IEBAIG5hbWVzcGFjZSBKU0MgewogICAgICAgICAvLyBmYXN0R2V0
T3duUHJvcGVydHlTbG90IHRvIGdldE93blByb3BlcnR5U2xvdC4gQ2FsbGVycyBzaG91bGQgYWx3
YXlzCiAgICAgICAgIC8vIGNhbGwgdGhpcyBmdW5jdGlvbiwgbm90IGl0cyBzbG93ZXIgdmlydHVh
bCBjb3VudGVycGFydC4gKEZvciBpbnRlZ2VyCiAgICAgICAgIC8vIHByb3BlcnR5IG5hbWVzLCB3
ZSB3YW50IGEgc2ltaWxhciBpbnRlcmZhY2Ugd2l0aCBhcHByb3ByaWF0ZSBvcHRpbWl6YXRpb25z
LikKLSAgICAgICAgYm9vbCBmYXN0R2V0T3duUHJvcGVydHlTbG90KEV4ZWNTdGF0ZSosIGNvbnN0
IElkZW50aWZpZXImIHByb3BlcnR5TmFtZSwgUHJvcGVydHlTbG90Jik7CisgICAgICAgIGJvb2wg
ZmFzdEdldE93blByb3BlcnR5U2xvdChFeGVjU3RhdGUqLCBQcm9wZXJ0eU5hbWUsIFByb3BlcnR5
U2xvdCYpOwogICAgICAgICBKU1ZhbHVlIGZhc3RHZXRPd25Qcm9wZXJ0eShFeGVjU3RhdGUqLCBj
b25zdCBVU3RyaW5nJik7CiAKICAgICAgICAgc3RhdGljIHB0cmRpZmZfdCBzdHJ1Y3R1cmVPZmZz
ZXQoKQpAQCAtMTUwLDcgKzE1MCw3IEBAIG5hbWVzcGFjZSBKU0MgewogICAgICAgICB2b2lkIGZp
bmlzaENyZWF0aW9uKEpTR2xvYmFsRGF0YSYsIFN0cnVjdHVyZSosIENyZWF0aW5nRWFybHlDZWxs
VGFnKTsKIAogICAgICAgICAvLyBCYXNlIGltcGxlbWVudGF0aW9uOyBmb3Igbm9uLW9iamVjdCBj
bGFzc2VzIGltcGxlbWVudHMgZ2V0UHJvcGVydHlTbG90LgotICAgICAgICBzdGF0aWMgYm9vbCBn
ZXRPd25Qcm9wZXJ0eVNsb3QoSlNDZWxsKiwgRXhlY1N0YXRlKiwgY29uc3QgSWRlbnRpZmllciYg
cHJvcGVydHlOYW1lLCBQcm9wZXJ0eVNsb3QmKTsKKyAgICAgICAgc3RhdGljIGJvb2wgZ2V0T3du
UHJvcGVydHlTbG90KEpTQ2VsbCosIEV4ZWNTdGF0ZSosIFByb3BlcnR5TmFtZSwgUHJvcGVydHlT
bG90Jik7CiAgICAgICAgIHN0YXRpYyBib29sIGdldE93blByb3BlcnR5U2xvdEJ5SW5kZXgoSlND
ZWxsKiwgRXhlY1N0YXRlKiwgdW5zaWduZWQgcHJvcGVydHlOYW1lLCBQcm9wZXJ0eVNsb3QmKTsK
IAogICAgICAgICAvLyBEdW1teSBpbXBsZW1lbnRhdGlvbnMgb2Ygb3ZlcnJpZGUtYWJsZSBzdGF0
aWMgZnVuY3Rpb25zIGZvciBjbGFzc2VzIHRvIHB1dCBpbiB0aGVpciBNZXRob2RUYWJsZQpAQCAt
MTU5LDkgKzE1OSw5IEBAIG5hbWVzcGFjZSBKU0MgewogICAgICAgICBzdGF0aWMgTk9fUkVUVVJO
X0RVRV9UT19BU1NFUlQgdm9pZCBnZXRQcm9wZXJ0eU5hbWVzKEpTT2JqZWN0KiwgRXhlY1N0YXRl
KiwgUHJvcGVydHlOYW1lQXJyYXkmLCBFbnVtZXJhdGlvbk1vZGUpOwogICAgICAgICBzdGF0aWMg
VVN0cmluZyBjbGFzc05hbWUoY29uc3QgSlNPYmplY3QqKTsKICAgICAgICAgc3RhdGljIGJvb2wg
aGFzSW5zdGFuY2UoSlNPYmplY3QqLCBFeGVjU3RhdGUqLCBKU1ZhbHVlLCBKU1ZhbHVlIHByb3Rv
dHlwZVByb3BlcnR5KTsKLSAgICAgICAgc3RhdGljIE5PX1JFVFVSTl9EVUVfVE9fQVNTRVJUIHZv
aWQgcHV0RGlyZWN0VmlydHVhbChKU09iamVjdCosIEV4ZWNTdGF0ZSosIGNvbnN0IElkZW50aWZp
ZXImIHByb3BlcnR5TmFtZSwgSlNWYWx1ZSwgdW5zaWduZWQgYXR0cmlidXRlcyk7Ci0gICAgICAg
IHN0YXRpYyBib29sIGRlZmluZU93blByb3BlcnR5KEpTT2JqZWN0KiwgRXhlY1N0YXRlKiwgY29u
c3QgSWRlbnRpZmllciYgcHJvcGVydHlOYW1lLCBQcm9wZXJ0eURlc2NyaXB0b3ImLCBib29sIHNo
b3VsZFRocm93KTsKLSAgICAgICAgc3RhdGljIGJvb2wgZ2V0T3duUHJvcGVydHlEZXNjcmlwdG9y
KEpTT2JqZWN0KiwgRXhlY1N0YXRlKiwgY29uc3QgSWRlbnRpZmllciYsIFByb3BlcnR5RGVzY3Jp
cHRvciYpOworICAgICAgICBzdGF0aWMgTk9fUkVUVVJOX0RVRV9UT19BU1NFUlQgdm9pZCBwdXRE
aXJlY3RWaXJ0dWFsKEpTT2JqZWN0KiwgRXhlY1N0YXRlKiwgUHJvcGVydHlOYW1lLCBKU1ZhbHVl
LCB1bnNpZ25lZCBhdHRyaWJ1dGVzKTsKKyAgICAgICAgc3RhdGljIGJvb2wgZGVmaW5lT3duUHJv
cGVydHkoSlNPYmplY3QqLCBFeGVjU3RhdGUqLCBQcm9wZXJ0eU5hbWUsIFByb3BlcnR5RGVzY3Jp
cHRvciYsIGJvb2wgc2hvdWxkVGhyb3cpOworICAgICAgICBzdGF0aWMgYm9vbCBnZXRPd25Qcm9w
ZXJ0eURlc2NyaXB0b3IoSlNPYmplY3QqLCBFeGVjU3RhdGUqLCBQcm9wZXJ0eU5hbWUsIFByb3Bl
cnR5RGVzY3JpcHRvciYpOwogCiAgICAgcHJpdmF0ZToKICAgICAgICAgZnJpZW5kIGNsYXNzIExM
SW50T2Zmc2V0c0V4dHJhY3RvcjsKSW5kZXg6IFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1l
L0pTRnVuY3Rpb24uY3BwCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50
aW1lL0pTRnVuY3Rpb24uY3BwCShyZXZpc2lvbiAxMTY2NzApCisrKyBTb3VyY2UvSmF2YVNjcmlw
dENvcmUvcnVudGltZS9KU0Z1bmN0aW9uLmNwcAkod29ya2luZyBjb3B5KQpAQCAtNTksNyArNTks
NyBAQCBib29sIEpTRnVuY3Rpb246OmlzSG9zdEZ1bmN0aW9uTm9uSW5saW5lCiAgICAgcmV0dXJu
IGlzSG9zdEZ1bmN0aW9uKCk7CiB9CiAKLUpTRnVuY3Rpb24qIEpTRnVuY3Rpb246OmNyZWF0ZShF
eGVjU3RhdGUqIGV4ZWMsIEpTR2xvYmFsT2JqZWN0KiBnbG9iYWxPYmplY3QsIGludCBsZW5ndGgs
IGNvbnN0IElkZW50aWZpZXImIG5hbWUsIE5hdGl2ZUZ1bmN0aW9uIG5hdGl2ZUZ1bmN0aW9uLCBJ
bnRyaW5zaWMgaW50cmluc2ljLCBOYXRpdmVGdW5jdGlvbiBuYXRpdmVDb25zdHJ1Y3RvcikKK0pT
RnVuY3Rpb24qIEpTRnVuY3Rpb246OmNyZWF0ZShFeGVjU3RhdGUqIGV4ZWMsIEpTR2xvYmFsT2Jq
ZWN0KiBnbG9iYWxPYmplY3QsIGludCBsZW5ndGgsIGNvbnN0IFVTdHJpbmcmIG5hbWUsIE5hdGl2
ZUZ1bmN0aW9uIG5hdGl2ZUZ1bmN0aW9uLCBJbnRyaW5zaWMgaW50cmluc2ljLCBOYXRpdmVGdW5j
dGlvbiBuYXRpdmVDb25zdHJ1Y3RvcikKIHsKICAgICBOYXRpdmVFeGVjdXRhYmxlKiBleGVjdXRh
YmxlOwogI2lmICFFTkFCTEUoSklUKQpAQCAtOTIsMTIgKzkyLDEyIEBAIEpTRnVuY3Rpb246OkpT
RnVuY3Rpb24oRXhlY1N0YXRlKiBleGVjLCAKIHsKIH0KIAotdm9pZCBKU0Z1bmN0aW9uOjpmaW5p
c2hDcmVhdGlvbihFeGVjU3RhdGUqIGV4ZWMsIE5hdGl2ZUV4ZWN1dGFibGUqIGV4ZWN1dGFibGUs
IGludCBsZW5ndGgsIGNvbnN0IElkZW50aWZpZXImIG5hbWUpCit2b2lkIEpTRnVuY3Rpb246OmZp
bmlzaENyZWF0aW9uKEV4ZWNTdGF0ZSogZXhlYywgTmF0aXZlRXhlY3V0YWJsZSogZXhlY3V0YWJs
ZSwgaW50IGxlbmd0aCwgY29uc3QgVVN0cmluZyYgbmFtZSkKIHsKICAgICBCYXNlOjpmaW5pc2hD
cmVhdGlvbihleGVjLT5nbG9iYWxEYXRhKCkpOwogICAgIEFTU0VSVChpbmhlcml0cygmc19pbmZv
KSk7CiAgICAgbV9leGVjdXRhYmxlLnNldChleGVjLT5nbG9iYWxEYXRhKCksIHRoaXMsIGV4ZWN1
dGFibGUpOwotICAgIHB1dERpcmVjdChleGVjLT5nbG9iYWxEYXRhKCksIGV4ZWMtPmdsb2JhbERh
dGEoKS5wcm9wZXJ0eU5hbWVzLT5uYW1lLCBqc1N0cmluZyhleGVjLCBuYW1lLmlzTnVsbCgpID8g
IiIgOiBuYW1lLnVzdHJpbmcoKSksIERvbnREZWxldGUgfCBSZWFkT25seSB8IERvbnRFbnVtKTsK
KyAgICBwdXREaXJlY3QoZXhlYy0+Z2xvYmFsRGF0YSgpLCBleGVjLT5nbG9iYWxEYXRhKCkucHJv
cGVydHlOYW1lcy0+bmFtZSwganNTdHJpbmcoZXhlYywgbmFtZS5pc051bGwoKSA/ICIiIDogbmFt
ZSksIERvbnREZWxldGUgfCBSZWFkT25seSB8IERvbnRFbnVtKTsKICAgICBwdXREaXJlY3QoZXhl
Yy0+Z2xvYmFsRGF0YSgpLCBleGVjLT5wcm9wZXJ0eU5hbWVzKCkubGVuZ3RoLCBqc051bWJlcihs
ZW5ndGgpLCBEb250RGVsZXRlIHwgUmVhZE9ubHkgfCBEb250RW51bSk7CiB9CiAKQEAgLTE4Mywx
NCArMTgzLDE0IEBAIENhbGxUeXBlIEpTRnVuY3Rpb246OmdldENhbGxEYXRhKEpTQ2VsbCoKICAg
ICByZXR1cm4gQ2FsbFR5cGVKUzsKIH0KIAotSlNWYWx1ZSBKU0Z1bmN0aW9uOjphcmd1bWVudHNH
ZXR0ZXIoRXhlY1N0YXRlKiBleGVjLCBKU1ZhbHVlIHNsb3RCYXNlLCBjb25zdCBJZGVudGlmaWVy
JikKK0pTVmFsdWUgSlNGdW5jdGlvbjo6YXJndW1lbnRzR2V0dGVyKEV4ZWNTdGF0ZSogZXhlYywg
SlNWYWx1ZSBzbG90QmFzZSwgUHJvcGVydHlOYW1lKQogewogICAgIEpTRnVuY3Rpb24qIHRoaXNP
YmogPSBqc0Nhc3Q8SlNGdW5jdGlvbio+KHNsb3RCYXNlKTsKICAgICBBU1NFUlQoIXRoaXNPYmot
PmlzSG9zdEZ1bmN0aW9uKCkpOwogICAgIHJldHVybiBleGVjLT5pbnRlcnByZXRlcigpLT5yZXRy
aWV2ZUFyZ3VtZW50c0Zyb21WTUNvZGUoZXhlYywgdGhpc09iaik7CiB9CiAKLUpTVmFsdWUgSlNG
dW5jdGlvbjo6Y2FsbGVyR2V0dGVyKEV4ZWNTdGF0ZSogZXhlYywgSlNWYWx1ZSBzbG90QmFzZSwg
Y29uc3QgSWRlbnRpZmllciYpCitKU1ZhbHVlIEpTRnVuY3Rpb246OmNhbGxlckdldHRlcihFeGVj
U3RhdGUqIGV4ZWMsIEpTVmFsdWUgc2xvdEJhc2UsIFByb3BlcnR5TmFtZSkKIHsKICAgICBKU0Z1
bmN0aW9uKiB0aGlzT2JqID0ganNDYXN0PEpTRnVuY3Rpb24qPihzbG90QmFzZSk7CiAgICAgQVNT
RVJUKCF0aGlzT2JqLT5pc0hvc3RGdW5jdGlvbigpKTsKQEAgLTIwNSwxNCArMjA1LDE0IEBAIEpT
VmFsdWUgSlNGdW5jdGlvbjo6Y2FsbGVyR2V0dGVyKEV4ZWNTdGEKICAgICByZXR1cm4gdGhyb3dU
eXBlRXJyb3IoZXhlYywgIkZ1bmN0aW9uLmNhbGxlciB1c2VkIHRvIHJldHJpZXZlIHN0cmljdCBj
YWxsZXIiKTsKIH0KIAotSlNWYWx1ZSBKU0Z1bmN0aW9uOjpsZW5ndGhHZXR0ZXIoRXhlY1N0YXRl
KiwgSlNWYWx1ZSBzbG90QmFzZSwgY29uc3QgSWRlbnRpZmllciYpCitKU1ZhbHVlIEpTRnVuY3Rp
b246Omxlbmd0aEdldHRlcihFeGVjU3RhdGUqLCBKU1ZhbHVlIHNsb3RCYXNlLCBQcm9wZXJ0eU5h
bWUpCiB7CiAgICAgSlNGdW5jdGlvbiogdGhpc09iaiA9IGpzQ2FzdDxKU0Z1bmN0aW9uKj4oc2xv
dEJhc2UpOwogICAgIEFTU0VSVCghdGhpc09iai0+aXNIb3N0RnVuY3Rpb24oKSk7CiAgICAgcmV0
dXJuIGpzTnVtYmVyKHRoaXNPYmotPmpzRXhlY3V0YWJsZSgpLT5wYXJhbWV0ZXJDb3VudCgpKTsK
IH0KIAotYm9vbCBKU0Z1bmN0aW9uOjpnZXRPd25Qcm9wZXJ0eVNsb3QoSlNDZWxsKiBjZWxsLCBF
eGVjU3RhdGUqIGV4ZWMsIGNvbnN0IElkZW50aWZpZXImIHByb3BlcnR5TmFtZSwgUHJvcGVydHlT
bG90JiBzbG90KQorYm9vbCBKU0Z1bmN0aW9uOjpnZXRPd25Qcm9wZXJ0eVNsb3QoSlNDZWxsKiBj
ZWxsLCBFeGVjU3RhdGUqIGV4ZWMsIFByb3BlcnR5TmFtZSBwcm9wZXJ0eU5hbWUsIFByb3BlcnR5
U2xvdCYgc2xvdCkKIHsKICAgICBKU0Z1bmN0aW9uKiB0aGlzT2JqZWN0ID0ganNDYXN0PEpTRnVu
Y3Rpb24qPihjZWxsKTsKICAgICBpZiAodGhpc09iamVjdC0+aXNIb3N0RnVuY3Rpb24oKSkKQEAg
LTI2Nyw3ICsyNjcsNyBAQCBib29sIEpTRnVuY3Rpb246OmdldE93blByb3BlcnR5U2xvdChKU0Nl
CiAgICAgcmV0dXJuIEJhc2U6OmdldE93blByb3BlcnR5U2xvdCh0aGlzT2JqZWN0LCBleGVjLCBw
cm9wZXJ0eU5hbWUsIHNsb3QpOwogfQogCi1ib29sIEpTRnVuY3Rpb246OmdldE93blByb3BlcnR5
RGVzY3JpcHRvcihKU09iamVjdCogb2JqZWN0LCBFeGVjU3RhdGUqIGV4ZWMsIGNvbnN0IElkZW50
aWZpZXImIHByb3BlcnR5TmFtZSwgUHJvcGVydHlEZXNjcmlwdG9yJiBkZXNjcmlwdG9yKQorYm9v
bCBKU0Z1bmN0aW9uOjpnZXRPd25Qcm9wZXJ0eURlc2NyaXB0b3IoSlNPYmplY3QqIG9iamVjdCwg
RXhlY1N0YXRlKiBleGVjLCBQcm9wZXJ0eU5hbWUgcHJvcGVydHlOYW1lLCBQcm9wZXJ0eURlc2Ny
aXB0b3ImIGRlc2NyaXB0b3IpCiB7CiAgICAgSlNGdW5jdGlvbiogdGhpc09iamVjdCA9IGpzQ2Fz
dDxKU0Z1bmN0aW9uKj4ob2JqZWN0KTsKICAgICBpZiAodGhpc09iamVjdC0+aXNIb3N0RnVuY3Rp
b24oKSkKQEAgLTMzMCw3ICszMzAsNyBAQCB2b2lkIEpTRnVuY3Rpb246OmdldE93blByb3BlcnR5
TmFtZXMoSlNPCiAgICAgQmFzZTo6Z2V0T3duUHJvcGVydHlOYW1lcyh0aGlzT2JqZWN0LCBleGVj
LCBwcm9wZXJ0eU5hbWVzLCBtb2RlKTsKIH0KIAotdm9pZCBKU0Z1bmN0aW9uOjpwdXQoSlNDZWxs
KiBjZWxsLCBFeGVjU3RhdGUqIGV4ZWMsIGNvbnN0IElkZW50aWZpZXImIHByb3BlcnR5TmFtZSwg
SlNWYWx1ZSB2YWx1ZSwgUHV0UHJvcGVydHlTbG90JiBzbG90KQordm9pZCBKU0Z1bmN0aW9uOjpw
dXQoSlNDZWxsKiBjZWxsLCBFeGVjU3RhdGUqIGV4ZWMsIFByb3BlcnR5TmFtZSBwcm9wZXJ0eU5h
bWUsIEpTVmFsdWUgdmFsdWUsIFB1dFByb3BlcnR5U2xvdCYgc2xvdCkKIHsKICAgICBKU0Z1bmN0
aW9uKiB0aGlzT2JqZWN0ID0ganNDYXN0PEpTRnVuY3Rpb24qPihjZWxsKTsKICAgICBpZiAodGhp
c09iamVjdC0+aXNIb3N0RnVuY3Rpb24oKSkgewpAQCAtMzU5LDcgKzM1OSw3IEBAIHZvaWQgSlNG
dW5jdGlvbjo6cHV0KEpTQ2VsbCogY2VsbCwgRXhlY1MKICAgICBCYXNlOjpwdXQodGhpc09iamVj
dCwgZXhlYywgcHJvcGVydHlOYW1lLCB2YWx1ZSwgc2xvdCk7CiB9CiAKLWJvb2wgSlNGdW5jdGlv
bjo6ZGVsZXRlUHJvcGVydHkoSlNDZWxsKiBjZWxsLCBFeGVjU3RhdGUqIGV4ZWMsIGNvbnN0IElk
ZW50aWZpZXImIHByb3BlcnR5TmFtZSkKK2Jvb2wgSlNGdW5jdGlvbjo6ZGVsZXRlUHJvcGVydHko
SlNDZWxsKiBjZWxsLCBFeGVjU3RhdGUqIGV4ZWMsIFByb3BlcnR5TmFtZSBwcm9wZXJ0eU5hbWUp
CiB7CiAgICAgSlNGdW5jdGlvbiogdGhpc09iamVjdCA9IGpzQ2FzdDxKU0Z1bmN0aW9uKj4oY2Vs
bCk7CiAgICAgLy8gRm9yIG5vbi1ob3N0IGZ1bmN0aW9ucywgZG9uJ3QgbGV0IHRoZXNlIHByb3Bl
cnRpZXMgYnkgZGVsZXRlZCAtIGV4Y2VwdCBieSBEZWZpbmVPd25Qcm9wZXJ0eS4KQEAgLTM3Miw3
ICszNzIsNyBAQCBib29sIEpTRnVuY3Rpb246OmRlbGV0ZVByb3BlcnR5KEpTQ2VsbCogCiAgICAg
cmV0dXJuIEJhc2U6OmRlbGV0ZVByb3BlcnR5KHRoaXNPYmplY3QsIGV4ZWMsIHByb3BlcnR5TmFt
ZSk7CiB9CiAKLWJvb2wgSlNGdW5jdGlvbjo6ZGVmaW5lT3duUHJvcGVydHkoSlNPYmplY3QqIG9i
amVjdCwgRXhlY1N0YXRlKiBleGVjLCBjb25zdCBJZGVudGlmaWVyJiBwcm9wZXJ0eU5hbWUsIFBy
b3BlcnR5RGVzY3JpcHRvciYgZGVzY3JpcHRvciwgYm9vbCB0aHJvd0V4Y2VwdGlvbikKK2Jvb2wg
SlNGdW5jdGlvbjo6ZGVmaW5lT3duUHJvcGVydHkoSlNPYmplY3QqIG9iamVjdCwgRXhlY1N0YXRl
KiBleGVjLCBQcm9wZXJ0eU5hbWUgcHJvcGVydHlOYW1lLCBQcm9wZXJ0eURlc2NyaXB0b3ImIGRl
c2NyaXB0b3IsIGJvb2wgdGhyb3dFeGNlcHRpb24pCiB7CiAgICAgSlNGdW5jdGlvbiogdGhpc09i
amVjdCA9IGpzQ2FzdDxKU0Z1bmN0aW9uKj4ob2JqZWN0KTsKICAgICBpZiAodGhpc09iamVjdC0+
aXNIb3N0RnVuY3Rpb24oKSkKQEAgLTQ1NSw3ICs0NTUsNyBAQCBVU3RyaW5nIGdldENhbGN1bGF0
ZWREaXNwbGF5TmFtZShDYWxsRnJhCiAgICAgICAgIHJldHVybiBmdW5jdGlvbi0+Y2FsY3VsYXRl
ZERpc3BsYXlOYW1lKGNhbGxGcmFtZSk7CiAgICAgaWYgKEludGVybmFsRnVuY3Rpb24qIGZ1bmN0
aW9uID0ganNEeW5hbWljQ2FzdDxJbnRlcm5hbEZ1bmN0aW9uKj4ob2JqZWN0KSkKICAgICAgICAg
cmV0dXJuIGZ1bmN0aW9uLT5jYWxjdWxhdGVkRGlzcGxheU5hbWUoY2FsbEZyYW1lKTsKLSAgICBy
ZXR1cm4gY2FsbEZyYW1lLT5nbG9iYWxEYXRhKCkucHJvcGVydHlOYW1lcy0+ZW1wdHlJZGVudGlm
aWVyLnVzdHJpbmcoKTsKKyAgICByZXR1cm4gIiI7CiB9CiAKIH0gLy8gbmFtZXNwYWNlIEpTQwpJ
bmRleDogU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvSlNGdW5jdGlvbi5oCj09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT0KLS0tIFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL0pTRnVuY3Rpb24uaAkocmV2aXNp
b24gMTE2NjcwKQorKysgU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvSlNGdW5jdGlvbi5o
CSh3b3JraW5nIGNvcHkpCkBAIC01NSw3ICs1NSw3IEBAIG5hbWVzcGFjZSBKU0MgewogICAgIHB1
YmxpYzoKICAgICAgICAgdHlwZWRlZiBKU05vbkZpbmFsT2JqZWN0IEJhc2U7CiAKLSAgICAgICAg
SlNfRVhQT1JUX1BSSVZBVEUgc3RhdGljIEpTRnVuY3Rpb24qIGNyZWF0ZShFeGVjU3RhdGUqLCBK
U0dsb2JhbE9iamVjdCosIGludCBsZW5ndGgsIGNvbnN0IElkZW50aWZpZXImIG5hbWUsIE5hdGl2
ZUZ1bmN0aW9uIG5hdGl2ZUZ1bmN0aW9uLCBJbnRyaW5zaWMgPSBOb0ludHJpbnNpYywgTmF0aXZl
RnVuY3Rpb24gbmF0aXZlQ29uc3RydWN0b3IgPSBjYWxsSG9zdEZ1bmN0aW9uQXNDb25zdHJ1Y3Rv
cik7CisgICAgICAgIEpTX0VYUE9SVF9QUklWQVRFIHN0YXRpYyBKU0Z1bmN0aW9uKiBjcmVhdGUo
RXhlY1N0YXRlKiwgSlNHbG9iYWxPYmplY3QqLCBpbnQgbGVuZ3RoLCBjb25zdCBVU3RyaW5nJiBu
YW1lLCBOYXRpdmVGdW5jdGlvbiwgSW50cmluc2ljID0gTm9JbnRyaW5zaWMsIE5hdGl2ZUZ1bmN0
aW9uIG5hdGl2ZUNvbnN0cnVjdG9yID0gY2FsbEhvc3RGdW5jdGlvbkFzQ29uc3RydWN0b3IpOwog
CiAgICAgICAgIHN0YXRpYyBKU0Z1bmN0aW9uKiBjcmVhdGUoRXhlY1N0YXRlKiBleGVjLCBGdW5j
dGlvbkV4ZWN1dGFibGUqIGV4ZWN1dGFibGUsIFNjb3BlQ2hhaW5Ob2RlKiBzY29wZUNoYWluKQog
ICAgICAgICB7CkBAIC0xMzksMTkgKzEzOSwxOSBAQCBuYW1lc3BhY2UgSlNDIHsKICAgICAgICAg
SlNfRVhQT1JUX1BSSVZBVEUgSlNGdW5jdGlvbihFeGVjU3RhdGUqLCBKU0dsb2JhbE9iamVjdCos
IFN0cnVjdHVyZSopOwogICAgICAgICBKU0Z1bmN0aW9uKEV4ZWNTdGF0ZSosIEZ1bmN0aW9uRXhl
Y3V0YWJsZSosIFNjb3BlQ2hhaW5Ob2RlKik7CiAgICAgICAgIAotICAgICAgICB2b2lkIGZpbmlz
aENyZWF0aW9uKEV4ZWNTdGF0ZSosIE5hdGl2ZUV4ZWN1dGFibGUqLCBpbnQgbGVuZ3RoLCBjb25z
dCBJZGVudGlmaWVyJiBuYW1lKTsKKyAgICAgICAgdm9pZCBmaW5pc2hDcmVhdGlvbihFeGVjU3Rh
dGUqLCBOYXRpdmVFeGVjdXRhYmxlKiwgaW50IGxlbmd0aCwgY29uc3QgVVN0cmluZyYgbmFtZSk7
CiAgICAgICAgIHZvaWQgZmluaXNoQ3JlYXRpb24oRXhlY1N0YXRlKiwgRnVuY3Rpb25FeGVjdXRh
YmxlKiwgU2NvcGVDaGFpbk5vZGUqKTsKIAogICAgICAgICBTdHJ1Y3R1cmUqIGNhY2hlSW5oZXJp
dG9ySUQoRXhlY1N0YXRlKik7CiAKLSAgICAgICAgc3RhdGljIGJvb2wgZ2V0T3duUHJvcGVydHlT
bG90KEpTQ2VsbCosIEV4ZWNTdGF0ZSosIGNvbnN0IElkZW50aWZpZXImLCBQcm9wZXJ0eVNsb3Qm
KTsKLSAgICAgICAgc3RhdGljIGJvb2wgZ2V0T3duUHJvcGVydHlEZXNjcmlwdG9yKEpTT2JqZWN0
KiwgRXhlY1N0YXRlKiwgY29uc3QgSWRlbnRpZmllciYsIFByb3BlcnR5RGVzY3JpcHRvciYpOwor
ICAgICAgICBzdGF0aWMgYm9vbCBnZXRPd25Qcm9wZXJ0eVNsb3QoSlNDZWxsKiwgRXhlY1N0YXRl
KiwgUHJvcGVydHlOYW1lLCBQcm9wZXJ0eVNsb3QmKTsKKyAgICAgICAgc3RhdGljIGJvb2wgZ2V0
T3duUHJvcGVydHlEZXNjcmlwdG9yKEpTT2JqZWN0KiwgRXhlY1N0YXRlKiwgUHJvcGVydHlOYW1l
LCBQcm9wZXJ0eURlc2NyaXB0b3ImKTsKICAgICAgICAgc3RhdGljIHZvaWQgZ2V0T3duUHJvcGVy
dHlOYW1lcyhKU09iamVjdCosIEV4ZWNTdGF0ZSosIFByb3BlcnR5TmFtZUFycmF5JiwgRW51bWVy
YXRpb25Nb2RlID0gRXhjbHVkZURvbnRFbnVtUHJvcGVydGllcyk7Ci0gICAgICAgIHN0YXRpYyBi
b29sIGRlZmluZU93blByb3BlcnR5KEpTT2JqZWN0KiwgRXhlY1N0YXRlKiwgY29uc3QgSWRlbnRp
ZmllciYgcHJvcGVydHlOYW1lLCBQcm9wZXJ0eURlc2NyaXB0b3ImLCBib29sIHNob3VsZFRocm93
KTsKKyAgICAgICAgc3RhdGljIGJvb2wgZGVmaW5lT3duUHJvcGVydHkoSlNPYmplY3QqLCBFeGVj
U3RhdGUqLCBQcm9wZXJ0eU5hbWUsIFByb3BlcnR5RGVzY3JpcHRvciYsIGJvb2wgc2hvdWxkVGhy
b3cpOwogCi0gICAgICAgIHN0YXRpYyB2b2lkIHB1dChKU0NlbGwqLCBFeGVjU3RhdGUqLCBjb25z
dCBJZGVudGlmaWVyJiBwcm9wZXJ0eU5hbWUsIEpTVmFsdWUsIFB1dFByb3BlcnR5U2xvdCYpOwor
ICAgICAgICBzdGF0aWMgdm9pZCBwdXQoSlNDZWxsKiwgRXhlY1N0YXRlKiwgUHJvcGVydHlOYW1l
LCBKU1ZhbHVlLCBQdXRQcm9wZXJ0eVNsb3QmKTsKIAotICAgICAgICBzdGF0aWMgYm9vbCBkZWxl
dGVQcm9wZXJ0eShKU0NlbGwqLCBFeGVjU3RhdGUqLCBjb25zdCBJZGVudGlmaWVyJiBwcm9wZXJ0
eU5hbWUpOworICAgICAgICBzdGF0aWMgYm9vbCBkZWxldGVQcm9wZXJ0eShKU0NlbGwqLCBFeGVj
U3RhdGUqLCBQcm9wZXJ0eU5hbWUpOwogCiAgICAgICAgIHN0YXRpYyB2b2lkIHZpc2l0Q2hpbGRy
ZW4oSlNDZWxsKiwgU2xvdFZpc2l0b3ImKTsKIApAQCAtMTYwLDkgKzE2MCw5IEBAIG5hbWVzcGFj
ZSBKU0MgewogICAgICAgICAKICAgICAgICAgSlNfRVhQT1JUX1BSSVZBVEUgYm9vbCBpc0hvc3RG
dW5jdGlvbk5vbklubGluZSgpIGNvbnN0OwogCi0gICAgICAgIHN0YXRpYyBKU1ZhbHVlIGFyZ3Vt
ZW50c0dldHRlcihFeGVjU3RhdGUqLCBKU1ZhbHVlLCBjb25zdCBJZGVudGlmaWVyJik7Ci0gICAg
ICAgIHN0YXRpYyBKU1ZhbHVlIGNhbGxlckdldHRlcihFeGVjU3RhdGUqLCBKU1ZhbHVlLCBjb25z
dCBJZGVudGlmaWVyJik7Ci0gICAgICAgIHN0YXRpYyBKU1ZhbHVlIGxlbmd0aEdldHRlcihFeGVj
U3RhdGUqLCBKU1ZhbHVlLCBjb25zdCBJZGVudGlmaWVyJik7CisgICAgICAgIHN0YXRpYyBKU1Zh
bHVlIGFyZ3VtZW50c0dldHRlcihFeGVjU3RhdGUqLCBKU1ZhbHVlLCBQcm9wZXJ0eU5hbWUpOwor
ICAgICAgICBzdGF0aWMgSlNWYWx1ZSBjYWxsZXJHZXR0ZXIoRXhlY1N0YXRlKiwgSlNWYWx1ZSwg
UHJvcGVydHlOYW1lKTsKKyAgICAgICAgc3RhdGljIEpTVmFsdWUgbGVuZ3RoR2V0dGVyKEV4ZWNT
dGF0ZSosIEpTVmFsdWUsIFByb3BlcnR5TmFtZSk7CiAKICAgICAgICAgV3JpdGVCYXJyaWVyPEV4
ZWN1dGFibGVCYXNlPiBtX2V4ZWN1dGFibGU7CiAgICAgICAgIFdyaXRlQmFycmllcjxTY29wZUNo
YWluTm9kZT4gbV9zY29wZUNoYWluOwpJbmRleDogU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRp
bWUvSlNHbG9iYWxPYmplY3QuY3BwCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9KYXZhU2NyaXB0Q29y
ZS9ydW50aW1lL0pTR2xvYmFsT2JqZWN0LmNwcAkocmV2aXNpb24gMTE2NjY3KQorKysgU291cmNl
L0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvSlNHbG9iYWxPYmplY3QuY3BwCSh3b3JraW5nIGNvcHkp
CkBAIC0xNDIsNyArMTQyLDcgQEAgdm9pZCBKU0dsb2JhbE9iamVjdDo6aW5pdChKU09iamVjdCog
dGhpcwogICAgIHJlc2V0KHByb3RvdHlwZSgpKTsKIH0KIAotdm9pZCBKU0dsb2JhbE9iamVjdDo6
cHV0KEpTQ2VsbCogY2VsbCwgRXhlY1N0YXRlKiBleGVjLCBjb25zdCBJZGVudGlmaWVyJiBwcm9w
ZXJ0eU5hbWUsIEpTVmFsdWUgdmFsdWUsIFB1dFByb3BlcnR5U2xvdCYgc2xvdCkKK3ZvaWQgSlNH
bG9iYWxPYmplY3Q6OnB1dChKU0NlbGwqIGNlbGwsIEV4ZWNTdGF0ZSogZXhlYywgUHJvcGVydHlO
YW1lIHByb3BlcnR5TmFtZSwgSlNWYWx1ZSB2YWx1ZSwgUHV0UHJvcGVydHlTbG90JiBzbG90KQog
ewogICAgIEpTR2xvYmFsT2JqZWN0KiB0aGlzT2JqZWN0ID0ganNDYXN0PEpTR2xvYmFsT2JqZWN0
Kj4oY2VsbCk7CiAgICAgQVNTRVJUKCFIZWFwOjpoZWFwKHZhbHVlKSB8fCBIZWFwOjpoZWFwKHZh
bHVlKSA9PSBIZWFwOjpoZWFwKHRoaXNPYmplY3QpKTsKQEAgLTE1Miw3ICsxNTIsNyBAQCB2b2lk
IEpTR2xvYmFsT2JqZWN0OjpwdXQoSlNDZWxsKiBjZWxsLCBFCiAgICAgSlNWYXJpYWJsZU9iamVj
dDo6cHV0KHRoaXNPYmplY3QsIGV4ZWMsIHByb3BlcnR5TmFtZSwgdmFsdWUsIHNsb3QpOwogfQog
Ci12b2lkIEpTR2xvYmFsT2JqZWN0OjpwdXREaXJlY3RWaXJ0dWFsKEpTT2JqZWN0KiBvYmplY3Qs
IEV4ZWNTdGF0ZSogZXhlYywgY29uc3QgSWRlbnRpZmllciYgcHJvcGVydHlOYW1lLCBKU1ZhbHVl
IHZhbHVlLCB1bnNpZ25lZCBhdHRyaWJ1dGVzKQordm9pZCBKU0dsb2JhbE9iamVjdDo6cHV0RGly
ZWN0VmlydHVhbChKU09iamVjdCogb2JqZWN0LCBFeGVjU3RhdGUqIGV4ZWMsIFByb3BlcnR5TmFt
ZSBwcm9wZXJ0eU5hbWUsIEpTVmFsdWUgdmFsdWUsIHVuc2lnbmVkIGF0dHJpYnV0ZXMpCiB7CiAg
ICAgSlNHbG9iYWxPYmplY3QqIHRoaXNPYmplY3QgPSBqc0Nhc3Q8SlNHbG9iYWxPYmplY3QqPihv
YmplY3QpOwogICAgIEFTU0VSVCghSGVhcDo6aGVhcCh2YWx1ZSkgfHwgSGVhcDo6aGVhcCh2YWx1
ZSkgPT0gSGVhcDo6aGVhcCh0aGlzT2JqZWN0KSk7CkBAIC0xNzAsNyArMTcwLDcgQEAgdm9pZCBK
U0dsb2JhbE9iamVjdDo6cHV0RGlyZWN0VmlydHVhbChKUwogICAgIH0KIH0KIAotYm9vbCBKU0ds
b2JhbE9iamVjdDo6ZGVmaW5lT3duUHJvcGVydHkoSlNPYmplY3QqIG9iamVjdCwgRXhlY1N0YXRl
KiBleGVjLCBjb25zdCBJZGVudGlmaWVyJiBwcm9wZXJ0eU5hbWUsIFByb3BlcnR5RGVzY3JpcHRv
ciYgZGVzY3JpcHRvciwgYm9vbCBzaG91bGRUaHJvdykKK2Jvb2wgSlNHbG9iYWxPYmplY3Q6OmRl
ZmluZU93blByb3BlcnR5KEpTT2JqZWN0KiBvYmplY3QsIEV4ZWNTdGF0ZSogZXhlYywgUHJvcGVy
dHlOYW1lIHByb3BlcnR5TmFtZSwgUHJvcGVydHlEZXNjcmlwdG9yJiBkZXNjcmlwdG9yLCBib29s
IHNob3VsZFRocm93KQogewogICAgIEpTR2xvYmFsT2JqZWN0KiB0aGlzT2JqZWN0ID0ganNDYXN0
PEpTR2xvYmFsT2JqZWN0Kj4ob2JqZWN0KTsKICAgICBQcm9wZXJ0eVNsb3Qgc2xvdDsKQEAgLTIw
NSw4ICsyMDUsOCBAQCB2b2lkIEpTR2xvYmFsT2JqZWN0OjpyZXNldChKU1ZhbHVlIHByb3RvCiAg
ICAgbV9hcHBseUZ1bmN0aW9uLnNldChleGVjLT5nbG9iYWxEYXRhKCksIHRoaXMsIGFwcGx5RnVu
Y3Rpb24pOwogICAgIG1fb2JqZWN0UHJvdG90eXBlLnNldChleGVjLT5nbG9iYWxEYXRhKCksIHRo
aXMsIE9iamVjdFByb3RvdHlwZTo6Y3JlYXRlKGV4ZWMsIHRoaXMsIE9iamVjdFByb3RvdHlwZTo6
Y3JlYXRlU3RydWN0dXJlKGV4ZWMtPmdsb2JhbERhdGEoKSwgdGhpcywganNOdWxsKCkpKSk7CiAg
ICAgR2V0dGVyU2V0dGVyKiBwcm90b0FjY2Vzc29yID0gR2V0dGVyU2V0dGVyOjpjcmVhdGUoZXhl
Yyk7Ci0gICAgcHJvdG9BY2Nlc3Nvci0+c2V0R2V0dGVyKGV4ZWMtPmdsb2JhbERhdGEoKSwgSlNG
dW5jdGlvbjo6Y3JlYXRlKGV4ZWMsIHRoaXMsIDAsIElkZW50aWZpZXIoKSwgZ2xvYmFsRnVuY1By
b3RvR2V0dGVyKSk7Ci0gICAgcHJvdG9BY2Nlc3Nvci0+c2V0U2V0dGVyKGV4ZWMtPmdsb2JhbERh
dGEoKSwgSlNGdW5jdGlvbjo6Y3JlYXRlKGV4ZWMsIHRoaXMsIDAsIElkZW50aWZpZXIoKSwgZ2xv
YmFsRnVuY1Byb3RvU2V0dGVyKSk7CisgICAgcHJvdG9BY2Nlc3Nvci0+c2V0R2V0dGVyKGV4ZWMt
Pmdsb2JhbERhdGEoKSwgSlNGdW5jdGlvbjo6Y3JlYXRlKGV4ZWMsIHRoaXMsIDAsICIiLCBnbG9i
YWxGdW5jUHJvdG9HZXR0ZXIpKTsKKyAgICBwcm90b0FjY2Vzc29yLT5zZXRTZXR0ZXIoZXhlYy0+
Z2xvYmFsRGF0YSgpLCBKU0Z1bmN0aW9uOjpjcmVhdGUoZXhlYywgdGhpcywgMCwgIiIsIGdsb2Jh
bEZ1bmNQcm90b1NldHRlcikpOwogICAgIG1fb2JqZWN0UHJvdG90eXBlLT5wdXREaXJlY3RBY2Nl
c3NvcihleGVjLT5nbG9iYWxEYXRhKCksIGV4ZWMtPnByb3BlcnR5TmFtZXMoKS51bmRlcnNjb3Jl
UHJvdG8sIHByb3RvQWNjZXNzb3IsIEFjY2Vzc29yIHwgRG9udEVudW0pOwogICAgIG1fZnVuY3Rp
b25Qcm90b3R5cGUtPnN0cnVjdHVyZSgpLT5zZXRQcm90b3R5cGVXaXRob3V0VHJhbnNpdGlvbihl
eGVjLT5nbG9iYWxEYXRhKCksIG1fb2JqZWN0UHJvdG90eXBlLmdldCgpKTsKIApAQCAtMjkzLDcg
KzI5Myw3IEBAIHZvaWQgSlNHbG9iYWxPYmplY3Q6OnJlc2V0KEpTVmFsdWUgcHJvdG8KICAgICBw
dXREaXJlY3RXaXRob3V0VHJhbnNpdGlvbihleGVjLT5nbG9iYWxEYXRhKCksIElkZW50aWZpZXIo
ZXhlYywgIlR5cGVFcnJvciIpLCBtX3R5cGVFcnJvckNvbnN0cnVjdG9yLmdldCgpLCBEb250RW51
bSk7CiAgICAgcHV0RGlyZWN0V2l0aG91dFRyYW5zaXRpb24oZXhlYy0+Z2xvYmFsRGF0YSgpLCBJ
ZGVudGlmaWVyKGV4ZWMsICJVUklFcnJvciIpLCBtX1VSSUVycm9yQ29uc3RydWN0b3IuZ2V0KCks
IERvbnRFbnVtKTsKIAotICAgIG1fZXZhbEZ1bmN0aW9uLnNldChleGVjLT5nbG9iYWxEYXRhKCks
IHRoaXMsIEpTRnVuY3Rpb246OmNyZWF0ZShleGVjLCB0aGlzLCAxLCBleGVjLT5wcm9wZXJ0eU5h
bWVzKCkuZXZhbCwgZ2xvYmFsRnVuY0V2YWwpKTsKKyAgICBtX2V2YWxGdW5jdGlvbi5zZXQoZXhl
Yy0+Z2xvYmFsRGF0YSgpLCB0aGlzLCBKU0Z1bmN0aW9uOjpjcmVhdGUoZXhlYywgdGhpcywgMSwg
ZXhlYy0+cHJvcGVydHlOYW1lcygpLmV2YWwudXN0cmluZygpLCBnbG9iYWxGdW5jRXZhbCkpOwog
ICAgIHB1dERpcmVjdFdpdGhvdXRUcmFuc2l0aW9uKGV4ZWMtPmdsb2JhbERhdGEoKSwgZXhlYy0+
cHJvcGVydHlOYW1lcygpLmV2YWwsIG1fZXZhbEZ1bmN0aW9uLmdldCgpLCBEb250RW51bSk7CiAK
ICAgICBwdXREaXJlY3RXaXRob3V0VHJhbnNpdGlvbihleGVjLT5nbG9iYWxEYXRhKCksIElkZW50
aWZpZXIoZXhlYywgIkpTT04iKSwgSlNPTk9iamVjdDo6Y3JlYXRlKGV4ZWMsIHRoaXMsIEpTT05P
YmplY3Q6OmNyZWF0ZVN0cnVjdHVyZShleGVjLT5nbG9iYWxEYXRhKCksIHRoaXMsIG1fb2JqZWN0
UHJvdG90eXBlLmdldCgpKSksIERvbnRFbnVtKTsKQEAgLTMxMSw3ICszMTEsNyBAQCB2b2lkIEpT
R2xvYmFsT2JqZWN0OjpyZXNldChKU1ZhbHVlIHByb3RvCiAKIHZvaWQgSlNHbG9iYWxPYmplY3Q6
OmNyZWF0ZVRocm93VHlwZUVycm9yKEV4ZWNTdGF0ZSogZXhlYykKIHsKLSAgICBKU0Z1bmN0aW9u
KiB0aHJvd2VyID0gSlNGdW5jdGlvbjo6Y3JlYXRlKGV4ZWMsIHRoaXMsIDAsIElkZW50aWZpZXIo
KSwgZ2xvYmFsRnVuY1Rocm93VHlwZUVycm9yKTsKKyAgICBKU0Z1bmN0aW9uKiB0aHJvd2VyID0g
SlNGdW5jdGlvbjo6Y3JlYXRlKGV4ZWMsIHRoaXMsIDAsICIiLCBnbG9iYWxGdW5jVGhyb3dUeXBl
RXJyb3IpOwogICAgIEdldHRlclNldHRlciogZ2V0dGVyU2V0dGVyID0gR2V0dGVyU2V0dGVyOjpj
cmVhdGUoZXhlYyk7CiAgICAgZ2V0dGVyU2V0dGVyLT5zZXRHZXR0ZXIoZXhlYy0+Z2xvYmFsRGF0
YSgpLCB0aHJvd2VyKTsKICAgICBnZXR0ZXJTZXR0ZXItPnNldFNldHRlcihleGVjLT5nbG9iYWxE
YXRhKCksIHRocm93ZXIpOwpAQCAtNDMxLDcgKzQzMSw3IEBAIHZvaWQgSlNHbG9iYWxPYmplY3Q6
OmFkZFN0YXRpY0dsb2JhbHMoR2wKICAgICB9CiB9CiAKLWJvb2wgSlNHbG9iYWxPYmplY3Q6Omdl
dE93blByb3BlcnR5U2xvdChKU0NlbGwqIGNlbGwsIEV4ZWNTdGF0ZSogZXhlYywgY29uc3QgSWRl
bnRpZmllciYgcHJvcGVydHlOYW1lLCBQcm9wZXJ0eVNsb3QmIHNsb3QpCitib29sIEpTR2xvYmFs
T2JqZWN0OjpnZXRPd25Qcm9wZXJ0eVNsb3QoSlNDZWxsKiBjZWxsLCBFeGVjU3RhdGUqIGV4ZWMs
IFByb3BlcnR5TmFtZSBwcm9wZXJ0eU5hbWUsIFByb3BlcnR5U2xvdCYgc2xvdCkKIHsKICAgICBK
U0dsb2JhbE9iamVjdCogdGhpc09iamVjdCA9IGpzQ2FzdDxKU0dsb2JhbE9iamVjdCo+KGNlbGwp
OwogICAgIGlmIChnZXRTdGF0aWNGdW5jdGlvblNsb3Q8SlNWYXJpYWJsZU9iamVjdD4oZXhlYywg
RXhlY1N0YXRlOjpnbG9iYWxPYmplY3RUYWJsZShleGVjKSwgdGhpc09iamVjdCwgcHJvcGVydHlO
YW1lLCBzbG90KSkKQEAgLTQzOSw3ICs0MzksNyBAQCBib29sIEpTR2xvYmFsT2JqZWN0OjpnZXRP
d25Qcm9wZXJ0eVNsb3QoCiAgICAgcmV0dXJuIHRoaXNPYmplY3QtPnN5bWJvbFRhYmxlR2V0KHBy
b3BlcnR5TmFtZSwgc2xvdCk7CiB9CiAKLWJvb2wgSlNHbG9iYWxPYmplY3Q6OmdldE93blByb3Bl
cnR5RGVzY3JpcHRvcihKU09iamVjdCogb2JqZWN0LCBFeGVjU3RhdGUqIGV4ZWMsIGNvbnN0IElk
ZW50aWZpZXImIHByb3BlcnR5TmFtZSwgUHJvcGVydHlEZXNjcmlwdG9yJiBkZXNjcmlwdG9yKQor
Ym9vbCBKU0dsb2JhbE9iamVjdDo6Z2V0T3duUHJvcGVydHlEZXNjcmlwdG9yKEpTT2JqZWN0KiBv
YmplY3QsIEV4ZWNTdGF0ZSogZXhlYywgUHJvcGVydHlOYW1lIHByb3BlcnR5TmFtZSwgUHJvcGVy
dHlEZXNjcmlwdG9yJiBkZXNjcmlwdG9yKQogewogICAgIEpTR2xvYmFsT2JqZWN0KiB0aGlzT2Jq
ZWN0ID0ganNDYXN0PEpTR2xvYmFsT2JqZWN0Kj4ob2JqZWN0KTsKICAgICBpZiAoZ2V0U3RhdGlj
RnVuY3Rpb25EZXNjcmlwdG9yPEpTVmFyaWFibGVPYmplY3Q+KGV4ZWMsIEV4ZWNTdGF0ZTo6Z2xv
YmFsT2JqZWN0VGFibGUoZXhlYyksIHRoaXNPYmplY3QsIHByb3BlcnR5TmFtZSwgZGVzY3JpcHRv
cikpCkluZGV4OiBTb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9KU0dsb2JhbE9iamVjdC5o
Cj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT0KLS0tIFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL0pTR2xvYmFsT2Jq
ZWN0LmgJKHJldmlzaW9uIDExNjY2NykKKysrIFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1l
L0pTR2xvYmFsT2JqZWN0LmgJKHdvcmtpbmcgY29weSkKQEAgLTE5OSwyMCArMTk5LDIwIEBAIG5h
bWVzcGFjZSBKU0MgewogCiAgICAgICAgIEpTX0VYUE9SVF9QUklWQVRFIHN0YXRpYyB2b2lkIHZp
c2l0Q2hpbGRyZW4oSlNDZWxsKiwgU2xvdFZpc2l0b3ImKTsKIAotICAgICAgICBKU19FWFBPUlRf
UFJJVkFURSBzdGF0aWMgYm9vbCBnZXRPd25Qcm9wZXJ0eVNsb3QoSlNDZWxsKiwgRXhlY1N0YXRl
KiwgY29uc3QgSWRlbnRpZmllciYsIFByb3BlcnR5U2xvdCYpOwotICAgICAgICBKU19FWFBPUlRf
UFJJVkFURSBzdGF0aWMgYm9vbCBnZXRPd25Qcm9wZXJ0eURlc2NyaXB0b3IoSlNPYmplY3QqLCBF
eGVjU3RhdGUqLCBjb25zdCBJZGVudGlmaWVyJiwgUHJvcGVydHlEZXNjcmlwdG9yJik7Ci0gICAg
ICAgIGJvb2wgaGFzT3duUHJvcGVydHlGb3JXcml0ZShFeGVjU3RhdGUqLCBjb25zdCBJZGVudGlm
aWVyJik7Ci0gICAgICAgIEpTX0VYUE9SVF9QUklWQVRFIHN0YXRpYyB2b2lkIHB1dChKU0NlbGwq
LCBFeGVjU3RhdGUqLCBjb25zdCBJZGVudGlmaWVyJiwgSlNWYWx1ZSwgUHV0UHJvcGVydHlTbG90
Jik7Ci0KLSAgICAgICAgSlNfRVhQT1JUX1BSSVZBVEUgc3RhdGljIHZvaWQgcHV0RGlyZWN0Vmly
dHVhbChKU09iamVjdCosIEV4ZWNTdGF0ZSosIGNvbnN0IElkZW50aWZpZXImIHByb3BlcnR5TmFt
ZSwgSlNWYWx1ZSwgdW5zaWduZWQgYXR0cmlidXRlcyk7Ci0KLSAgICAgICAgSlNfRVhQT1JUX1BS
SVZBVEUgc3RhdGljIHZvaWQgZGVmaW5lR2V0dGVyKEpTT2JqZWN0KiwgRXhlY1N0YXRlKiwgY29u
c3QgSWRlbnRpZmllciYgcHJvcGVydHlOYW1lLCBKU09iamVjdCogZ2V0dGVyRnVuYywgdW5zaWdu
ZWQgYXR0cmlidXRlcyk7Ci0gICAgICAgIEpTX0VYUE9SVF9QUklWQVRFIHN0YXRpYyB2b2lkIGRl
ZmluZVNldHRlcihKU09iamVjdCosIEV4ZWNTdGF0ZSosIGNvbnN0IElkZW50aWZpZXImIHByb3Bl
cnR5TmFtZSwgSlNPYmplY3QqIHNldHRlckZ1bmMsIHVuc2lnbmVkIGF0dHJpYnV0ZXMpOwotICAg
ICAgICBKU19FWFBPUlRfUFJJVkFURSBzdGF0aWMgYm9vbCBkZWZpbmVPd25Qcm9wZXJ0eShKU09i
amVjdCosIEV4ZWNTdGF0ZSosIGNvbnN0IElkZW50aWZpZXImIHByb3BlcnR5TmFtZSwgUHJvcGVy
dHlEZXNjcmlwdG9yJiwgYm9vbCBzaG91bGRUaHJvdyk7CisgICAgICAgIEpTX0VYUE9SVF9QUklW
QVRFIHN0YXRpYyBib29sIGdldE93blByb3BlcnR5U2xvdChKU0NlbGwqLCBFeGVjU3RhdGUqLCBQ
cm9wZXJ0eU5hbWUsIFByb3BlcnR5U2xvdCYpOworICAgICAgICBKU19FWFBPUlRfUFJJVkFURSBz
dGF0aWMgYm9vbCBnZXRPd25Qcm9wZXJ0eURlc2NyaXB0b3IoSlNPYmplY3QqLCBFeGVjU3RhdGUq
LCBQcm9wZXJ0eU5hbWUsIFByb3BlcnR5RGVzY3JpcHRvciYpOworICAgICAgICBib29sIGhhc093
blByb3BlcnR5Rm9yV3JpdGUoRXhlY1N0YXRlKiwgUHJvcGVydHlOYW1lKTsKKyAgICAgICAgSlNf
RVhQT1JUX1BSSVZBVEUgc3RhdGljIHZvaWQgcHV0KEpTQ2VsbCosIEV4ZWNTdGF0ZSosIFByb3Bl
cnR5TmFtZSwgSlNWYWx1ZSwgUHV0UHJvcGVydHlTbG90Jik7CisKKyAgICAgICAgSlNfRVhQT1JU
X1BSSVZBVEUgc3RhdGljIHZvaWQgcHV0RGlyZWN0VmlydHVhbChKU09iamVjdCosIEV4ZWNTdGF0
ZSosIFByb3BlcnR5TmFtZSwgSlNWYWx1ZSwgdW5zaWduZWQgYXR0cmlidXRlcyk7CisKKyAgICAg
ICAgSlNfRVhQT1JUX1BSSVZBVEUgc3RhdGljIHZvaWQgZGVmaW5lR2V0dGVyKEpTT2JqZWN0Kiwg
RXhlY1N0YXRlKiwgUHJvcGVydHlOYW1lLCBKU09iamVjdCogZ2V0dGVyRnVuYywgdW5zaWduZWQg
YXR0cmlidXRlcyk7CisgICAgICAgIEpTX0VYUE9SVF9QUklWQVRFIHN0YXRpYyB2b2lkIGRlZmlu
ZVNldHRlcihKU09iamVjdCosIEV4ZWNTdGF0ZSosIFByb3BlcnR5TmFtZSwgSlNPYmplY3QqIHNl
dHRlckZ1bmMsIHVuc2lnbmVkIGF0dHJpYnV0ZXMpOworICAgICAgICBKU19FWFBPUlRfUFJJVkFU
RSBzdGF0aWMgYm9vbCBkZWZpbmVPd25Qcm9wZXJ0eShKU09iamVjdCosIEV4ZWNTdGF0ZSosIFBy
b3BlcnR5TmFtZSwgUHJvcGVydHlEZXNjcmlwdG9yJiwgYm9vbCBzaG91bGRUaHJvdyk7CiAKICAg
ICAgICAgLy8gV2UgdXNlIHRoaXMgaW4gdGhlIGNvZGUgZ2VuZXJhdG9yIGFzIHdlIHBlcmZvcm0g
c3ltYm9sIHRhYmxlCiAgICAgICAgIC8vIGxvb2t1cHMgcHJpb3IgdG8gaW5pdGlhbGl6aW5nIHRo
ZSBwcm9wZXJ0aWVzCi0gICAgICAgIGJvb2wgc3ltYm9sVGFibGVIYXNQcm9wZXJ0eShjb25zdCBJ
ZGVudGlmaWVyJiBwcm9wZXJ0eU5hbWUpOworICAgICAgICBib29sIHN5bWJvbFRhYmxlSGFzUHJv
cGVydHkoUHJvcGVydHlOYW1lKTsKIAogICAgICAgICAvLyBUaGUgZm9sbG93aW5nIGFjY2Vzc29y
cyByZXR1cm4gcHJpc3RpbmUgdmFsdWVzLCBldmVuIGlmIGEgc2NyaXB0IAogICAgICAgICAvLyBy
ZXBsYWNlcyB0aGUgZ2xvYmFsIG9iamVjdCdzIGFzc29jaWF0ZWQgcHJvcGVydHkuCkBAIC0zNjUs
NyArMzY1LDcgQEAgbmFtZXNwYWNlIEpTQyB7CiAgICAgICAgIG1fcmVnaXN0ZXJBcnJheVNpemUg
PSBjb3VudDsKICAgICB9CiAKLSAgICBpbmxpbmUgYm9vbCBKU0dsb2JhbE9iamVjdDo6aGFzT3du
UHJvcGVydHlGb3JXcml0ZShFeGVjU3RhdGUqIGV4ZWMsIGNvbnN0IElkZW50aWZpZXImIHByb3Bl
cnR5TmFtZSkKKyAgICBpbmxpbmUgYm9vbCBKU0dsb2JhbE9iamVjdDo6aGFzT3duUHJvcGVydHlG
b3JXcml0ZShFeGVjU3RhdGUqIGV4ZWMsIFByb3BlcnR5TmFtZSBwcm9wZXJ0eU5hbWUpCiAgICAg
ewogICAgICAgICBQcm9wZXJ0eVNsb3Qgc2xvdDsKICAgICAgICAgaWYgKEpTVmFyaWFibGVPYmpl
Y3Q6OmdldE93blByb3BlcnR5U2xvdCh0aGlzLCBleGVjLCBwcm9wZXJ0eU5hbWUsIHNsb3QpKQpA
QCAtMzc0LDcgKzM3NCw3IEBAIG5hbWVzcGFjZSBKU0MgewogICAgICAgICByZXR1cm4gc3ltYm9s
VGFibGVHZXQocHJvcGVydHlOYW1lLCBzbG90LCBzbG90SXNXcml0ZWFibGUpOwogICAgIH0KIAot
ICAgIGlubGluZSBib29sIEpTR2xvYmFsT2JqZWN0OjpzeW1ib2xUYWJsZUhhc1Byb3BlcnR5KGNv
bnN0IElkZW50aWZpZXImIHByb3BlcnR5TmFtZSkKKyAgICBpbmxpbmUgYm9vbCBKU0dsb2JhbE9i
amVjdDo6c3ltYm9sVGFibGVIYXNQcm9wZXJ0eShQcm9wZXJ0eU5hbWUgcHJvcGVydHlOYW1lKQog
ICAgIHsKICAgICAgICAgU3ltYm9sVGFibGVFbnRyeSBlbnRyeSA9IHN5bWJvbFRhYmxlKCkuaW5s
aW5lR2V0KHByb3BlcnR5TmFtZS5pbXBsKCkpOwogICAgICAgICByZXR1cm4gIWVudHJ5LmlzTnVs
bCgpOwpJbmRleDogU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvSlNOb3RBbk9iamVjdC5j
cHAKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PQotLS0gU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvSlNOb3RBbk9i
amVjdC5jcHAJKHJldmlzaW9uIDExNjY2NykKKysrIFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50
aW1lL0pTTm90QW5PYmplY3QuY3BwCSh3b3JraW5nIGNvcHkpCkBAIC00Nyw3ICs0Nyw3IEBAIEpT
VmFsdWUgSlNOb3RBbk9iamVjdDo6ZGVmYXVsdFZhbHVlKGNvbnMKIH0KIAogLy8gSlNPYmplY3Qg
bWV0aG9kcwotYm9vbCBKU05vdEFuT2JqZWN0OjpnZXRPd25Qcm9wZXJ0eVNsb3QoSlNDZWxsKiwg
RXhlY1N0YXRlKiBleGVjLCBjb25zdCBJZGVudGlmaWVyJiwgUHJvcGVydHlTbG90JikKK2Jvb2wg
SlNOb3RBbk9iamVjdDo6Z2V0T3duUHJvcGVydHlTbG90KEpTQ2VsbCosIEV4ZWNTdGF0ZSogZXhl
YywgUHJvcGVydHlOYW1lLCBQcm9wZXJ0eVNsb3QmKQogewogICAgIEFTU0VSVF9VTlVTRUQoZXhl
YywgZXhlYy0+aGFkRXhjZXB0aW9uKCkpOwogICAgIHJldHVybiBmYWxzZTsKQEAgLTU5LDEzICs1
OSwxMyBAQCBib29sIEpTTm90QW5PYmplY3Q6OmdldE93blByb3BlcnR5U2xvdEJ5CiAgICAgcmV0
dXJuIGZhbHNlOwogfQogCi1ib29sIEpTTm90QW5PYmplY3Q6OmdldE93blByb3BlcnR5RGVzY3Jp
cHRvcihKU09iamVjdCosIEV4ZWNTdGF0ZSogZXhlYywgY29uc3QgSWRlbnRpZmllciYsIFByb3Bl
cnR5RGVzY3JpcHRvciYpCitib29sIEpTTm90QW5PYmplY3Q6OmdldE93blByb3BlcnR5RGVzY3Jp
cHRvcihKU09iamVjdCosIEV4ZWNTdGF0ZSogZXhlYywgUHJvcGVydHlOYW1lLCBQcm9wZXJ0eURl
c2NyaXB0b3ImKQogewogICAgIEFTU0VSVF9VTlVTRUQoZXhlYywgZXhlYy0+aGFkRXhjZXB0aW9u
KCkpOwogICAgIHJldHVybiBmYWxzZTsKIH0KIAotdm9pZCBKU05vdEFuT2JqZWN0OjpwdXQoSlND
ZWxsKiwgRXhlY1N0YXRlKiBleGVjLCBjb25zdCBJZGVudGlmaWVyJiAsIEpTVmFsdWUsIFB1dFBy
b3BlcnR5U2xvdCYpCit2b2lkIEpTTm90QW5PYmplY3Q6OnB1dChKU0NlbGwqLCBFeGVjU3RhdGUq
IGV4ZWMsIFByb3BlcnR5TmFtZSAsIEpTVmFsdWUsIFB1dFByb3BlcnR5U2xvdCYpCiB7CiAgICAg
QVNTRVJUX1VOVVNFRChleGVjLCBleGVjLT5oYWRFeGNlcHRpb24oKSk7CiB9CkBAIC03NSw3ICs3
NSw3IEBAIHZvaWQgSlNOb3RBbk9iamVjdDo6cHV0QnlJbmRleChKU0NlbGwqLCAKICAgICBBU1NF
UlRfVU5VU0VEKGV4ZWMsIGV4ZWMtPmhhZEV4Y2VwdGlvbigpKTsKIH0KIAotYm9vbCBKU05vdEFu
T2JqZWN0OjpkZWxldGVQcm9wZXJ0eShKU0NlbGwqLCBFeGVjU3RhdGUqIGV4ZWMsIGNvbnN0IElk
ZW50aWZpZXImKQorYm9vbCBKU05vdEFuT2JqZWN0OjpkZWxldGVQcm9wZXJ0eShKU0NlbGwqLCBF
eGVjU3RhdGUqIGV4ZWMsIFByb3BlcnR5TmFtZSkKIHsKICAgICBBU1NFUlRfVU5VU0VEKGV4ZWMs
IGV4ZWMtPmhhZEV4Y2VwdGlvbigpKTsKICAgICByZXR1cm4gZmFsc2U7CkluZGV4OiBTb3VyY2Uv
SmF2YVNjcmlwdENvcmUvcnVudGltZS9KU05vdEFuT2JqZWN0LmgKPT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291
cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvSlNOb3RBbk9iamVjdC5oCShyZXZpc2lvbiAxMTY2
NjcpCisrKyBTb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9KU05vdEFuT2JqZWN0LmgJKHdv
cmtpbmcgY29weSkKQEAgLTY4LDE0ICs2OCwxNCBAQCBuYW1lc3BhY2UgSlNDIHsKICAgICAgICAg
c3RhdGljIEpTVmFsdWUgZGVmYXVsdFZhbHVlKGNvbnN0IEpTT2JqZWN0KiwgRXhlY1N0YXRlKiwg
UHJlZmVycmVkUHJpbWl0aXZlVHlwZSk7CiAKICAgICAgICAgLy8gSlNPYmplY3QgbWV0aG9kcwot
ICAgICAgICBzdGF0aWMgYm9vbCBnZXRPd25Qcm9wZXJ0eVNsb3QoSlNDZWxsKiwgRXhlY1N0YXRl
KiwgY29uc3QgSWRlbnRpZmllciYgcHJvcGVydHlOYW1lLCBQcm9wZXJ0eVNsb3QmKTsKKyAgICAg
ICAgc3RhdGljIGJvb2wgZ2V0T3duUHJvcGVydHlTbG90KEpTQ2VsbCosIEV4ZWNTdGF0ZSosIFBy
b3BlcnR5TmFtZSwgUHJvcGVydHlTbG90Jik7CiAgICAgICAgIHN0YXRpYyBib29sIGdldE93blBy
b3BlcnR5U2xvdEJ5SW5kZXgoSlNDZWxsKiwgRXhlY1N0YXRlKiwgdW5zaWduZWQgcHJvcGVydHlO
YW1lLCBQcm9wZXJ0eVNsb3QmKTsKLSAgICAgICAgc3RhdGljIGJvb2wgZ2V0T3duUHJvcGVydHlE
ZXNjcmlwdG9yKEpTT2JqZWN0KiwgRXhlY1N0YXRlKiwgY29uc3QgSWRlbnRpZmllciYsIFByb3Bl
cnR5RGVzY3JpcHRvciYpOworICAgICAgICBzdGF0aWMgYm9vbCBnZXRPd25Qcm9wZXJ0eURlc2Ny
aXB0b3IoSlNPYmplY3QqLCBFeGVjU3RhdGUqLCBQcm9wZXJ0eU5hbWUsIFByb3BlcnR5RGVzY3Jp
cHRvciYpOwogCi0gICAgICAgIHN0YXRpYyB2b2lkIHB1dChKU0NlbGwqLCBFeGVjU3RhdGUqLCBj
b25zdCBJZGVudGlmaWVyJiBwcm9wZXJ0eU5hbWUsIEpTVmFsdWUsIFB1dFByb3BlcnR5U2xvdCYp
OworICAgICAgICBzdGF0aWMgdm9pZCBwdXQoSlNDZWxsKiwgRXhlY1N0YXRlKiwgUHJvcGVydHlO
YW1lLCBKU1ZhbHVlLCBQdXRQcm9wZXJ0eVNsb3QmKTsKICAgICAgICAgc3RhdGljIHZvaWQgcHV0
QnlJbmRleChKU0NlbGwqLCBFeGVjU3RhdGUqLCB1bnNpZ25lZCBwcm9wZXJ0eU5hbWUsIEpTVmFs
dWUsIGJvb2wgc2hvdWxkVGhyb3cpOwogCi0gICAgICAgIHN0YXRpYyBib29sIGRlbGV0ZVByb3Bl
cnR5KEpTQ2VsbCosIEV4ZWNTdGF0ZSosIGNvbnN0IElkZW50aWZpZXImIHByb3BlcnR5TmFtZSk7
CisgICAgICAgIHN0YXRpYyBib29sIGRlbGV0ZVByb3BlcnR5KEpTQ2VsbCosIEV4ZWNTdGF0ZSos
IFByb3BlcnR5TmFtZSk7CiAgICAgICAgIHN0YXRpYyBib29sIGRlbGV0ZVByb3BlcnR5QnlJbmRl
eChKU0NlbGwqLCBFeGVjU3RhdGUqLCB1bnNpZ25lZCBwcm9wZXJ0eU5hbWUpOwogCiAgICAgICAg
IHN0YXRpYyB2b2lkIGdldE93blByb3BlcnR5TmFtZXMoSlNPYmplY3QqLCBFeGVjU3RhdGUqLCBQ
cm9wZXJ0eU5hbWVBcnJheSYsIEVudW1lcmF0aW9uTW9kZSk7CkluZGV4OiBTb3VyY2UvSmF2YVNj
cmlwdENvcmUvcnVudGltZS9KU09OT2JqZWN0LmNwcAo9PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvSmF2
YVNjcmlwdENvcmUvcnVudGltZS9KU09OT2JqZWN0LmNwcAkocmV2aXNpb24gMTE2NjY3KQorKysg
U291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvSlNPTk9iamVjdC5jcHAJKHdvcmtpbmcgY29w
eSkKQEAgLTU5NSwxMiArNTk1LDEyIEBAIGNvbnN0IENsYXNzSW5mbyBKU09OT2JqZWN0OjpzX2lu
Zm8gPSB7ICIKIAogLy8gRUNNQSAxNS44CiAKLWJvb2wgSlNPTk9iamVjdDo6Z2V0T3duUHJvcGVy
dHlTbG90KEpTQ2VsbCogY2VsbCwgRXhlY1N0YXRlKiBleGVjLCBjb25zdCBJZGVudGlmaWVyJiBw
cm9wZXJ0eU5hbWUsIFByb3BlcnR5U2xvdCYgc2xvdCkKK2Jvb2wgSlNPTk9iamVjdDo6Z2V0T3du
UHJvcGVydHlTbG90KEpTQ2VsbCogY2VsbCwgRXhlY1N0YXRlKiBleGVjLCBQcm9wZXJ0eU5hbWUg
cHJvcGVydHlOYW1lLCBQcm9wZXJ0eVNsb3QmIHNsb3QpCiB7CiAgICAgcmV0dXJuIGdldFN0YXRp
Y0Z1bmN0aW9uU2xvdDxKU09iamVjdD4oZXhlYywgRXhlY1N0YXRlOjpqc29uVGFibGUoZXhlYyks
IGpzQ2FzdDxKU09OT2JqZWN0Kj4oY2VsbCksIHByb3BlcnR5TmFtZSwgc2xvdCk7CiB9CiAKLWJv
b2wgSlNPTk9iamVjdDo6Z2V0T3duUHJvcGVydHlEZXNjcmlwdG9yKEpTT2JqZWN0KiBvYmplY3Qs
IEV4ZWNTdGF0ZSogZXhlYywgY29uc3QgSWRlbnRpZmllciYgcHJvcGVydHlOYW1lLCBQcm9wZXJ0
eURlc2NyaXB0b3ImIGRlc2NyaXB0b3IpCitib29sIEpTT05PYmplY3Q6OmdldE93blByb3BlcnR5
RGVzY3JpcHRvcihKU09iamVjdCogb2JqZWN0LCBFeGVjU3RhdGUqIGV4ZWMsIFByb3BlcnR5TmFt
ZSBwcm9wZXJ0eU5hbWUsIFByb3BlcnR5RGVzY3JpcHRvciYgZGVzY3JpcHRvcikKIHsKICAgICBy
ZXR1cm4gZ2V0U3RhdGljRnVuY3Rpb25EZXNjcmlwdG9yPEpTT2JqZWN0PihleGVjLCBFeGVjU3Rh
dGU6Ompzb25UYWJsZShleGVjKSwganNDYXN0PEpTT05PYmplY3QqPihvYmplY3QpLCBwcm9wZXJ0
eU5hbWUsIGRlc2NyaXB0b3IpOwogfQpJbmRleDogU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRp
bWUvSlNPTk9iamVjdC5oCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50
aW1lL0pTT05PYmplY3QuaAkocmV2aXNpb24gMTE2NjY3KQorKysgU291cmNlL0phdmFTY3JpcHRD
b3JlL3J1bnRpbWUvSlNPTk9iamVjdC5oCSh3b3JraW5nIGNvcHkpCkBAIC01Niw4ICs1Niw4IEBA
IG5hbWVzcGFjZSBKU0MgewogCiAgICAgcHJpdmF0ZToKICAgICAgICAgSlNPTk9iamVjdChKU0ds
b2JhbE9iamVjdCosIFN0cnVjdHVyZSopOwotICAgICAgICBzdGF0aWMgYm9vbCBnZXRPd25Qcm9w
ZXJ0eVNsb3QoSlNDZWxsKiwgRXhlY1N0YXRlKiwgY29uc3QgSWRlbnRpZmllciYsIFByb3BlcnR5
U2xvdCYpOwotICAgICAgICBzdGF0aWMgYm9vbCBnZXRPd25Qcm9wZXJ0eURlc2NyaXB0b3IoSlNP
YmplY3QqLCBFeGVjU3RhdGUqLCBjb25zdCBJZGVudGlmaWVyJiwgUHJvcGVydHlEZXNjcmlwdG9y
Jik7CisgICAgICAgIHN0YXRpYyBib29sIGdldE93blByb3BlcnR5U2xvdChKU0NlbGwqLCBFeGVj
U3RhdGUqLCBQcm9wZXJ0eU5hbWUsIFByb3BlcnR5U2xvdCYpOworICAgICAgICBzdGF0aWMgYm9v
bCBnZXRPd25Qcm9wZXJ0eURlc2NyaXB0b3IoSlNPYmplY3QqLCBFeGVjU3RhdGUqLCBQcm9wZXJ0
eU5hbWUsIFByb3BlcnR5RGVzY3JpcHRvciYpOwogCiAgICAgfTsKIApJbmRleDogU291cmNlL0ph
dmFTY3JpcHRDb3JlL3J1bnRpbWUvSlNPYmplY3QuY3BwCj09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9K
YXZhU2NyaXB0Q29yZS9ydW50aW1lL0pTT2JqZWN0LmNwcAkocmV2aXNpb24gMTE2NjY3KQorKysg
U291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvSlNPYmplY3QuY3BwCSh3b3JraW5nIGNvcHkp
CkBAIC0xMjAsNyArMTIwLDcgQEAgYm9vbCBKU09iamVjdDo6Z2V0T3duUHJvcGVydHlTbG90QnlJ
bmRleAogfQogCiAvLyBFQ01BIDguNi4yLjIKLXZvaWQgSlNPYmplY3Q6OnB1dChKU0NlbGwqIGNl
bGwsIEV4ZWNTdGF0ZSogZXhlYywgY29uc3QgSWRlbnRpZmllciYgcHJvcGVydHlOYW1lLCBKU1Zh
bHVlIHZhbHVlLCBQdXRQcm9wZXJ0eVNsb3QmIHNsb3QpCit2b2lkIEpTT2JqZWN0OjpwdXQoSlND
ZWxsKiBjZWxsLCBFeGVjU3RhdGUqIGV4ZWMsIFByb3BlcnR5TmFtZSBwcm9wZXJ0eU5hbWUsIEpT
VmFsdWUgdmFsdWUsIFB1dFByb3BlcnR5U2xvdCYgc2xvdCkKIHsKICAgICBKU09iamVjdCogdGhp
c09iamVjdCA9IGpzQ2FzdDxKU09iamVjdCo+KGNlbGwpOwogICAgIEFTU0VSVCh2YWx1ZSk7CkBA
IC0xOTIsNyArMTkyLDcgQEAgdm9pZCBKU09iamVjdDo6cHV0QnlJbmRleChKU0NlbGwqIGNlbGws
IAogICAgIHRoaXNPYmplY3QtPm1ldGhvZFRhYmxlKCktPnB1dCh0aGlzT2JqZWN0LCBleGVjLCBJ
ZGVudGlmaWVyOjpmcm9tKGV4ZWMsIHByb3BlcnR5TmFtZSksIHZhbHVlLCBzbG90KTsKIH0KIAot
dm9pZCBKU09iamVjdDo6cHV0RGlyZWN0VmlydHVhbChKU09iamVjdCogb2JqZWN0LCBFeGVjU3Rh
dGUqIGV4ZWMsIGNvbnN0IElkZW50aWZpZXImIHByb3BlcnR5TmFtZSwgSlNWYWx1ZSB2YWx1ZSwg
dW5zaWduZWQgYXR0cmlidXRlcykKK3ZvaWQgSlNPYmplY3Q6OnB1dERpcmVjdFZpcnR1YWwoSlNP
YmplY3QqIG9iamVjdCwgRXhlY1N0YXRlKiBleGVjLCBQcm9wZXJ0eU5hbWUgcHJvcGVydHlOYW1l
LCBKU1ZhbHVlIHZhbHVlLCB1bnNpZ25lZCBhdHRyaWJ1dGVzKQogewogICAgIEFTU0VSVCghdmFs
dWUuaXNHZXR0ZXJTZXR0ZXIoKSAmJiAhKGF0dHJpYnV0ZXMgJiBBY2Nlc3NvcikpOwogICAgIFB1
dFByb3BlcnR5U2xvdCBzbG90OwpAQCAtMjIxLDcgKzIyMSw3IEBAIGJvb2wgSlNPYmplY3Q6OmFs
bG93c0FjY2Vzc0Zyb20oRXhlY1N0YXQKICAgICByZXR1cm4gZ2xvYmFsT2JqZWN0LT5nbG9iYWxP
YmplY3RNZXRob2RUYWJsZSgpLT5hbGxvd3NBY2Nlc3NGcm9tKGdsb2JhbE9iamVjdCwgZXhlYyk7
CiB9CiAKLXZvaWQgSlNPYmplY3Q6OnB1dERpcmVjdEFjY2Vzc29yKEpTR2xvYmFsRGF0YSYgZ2xv
YmFsRGF0YSwgY29uc3QgSWRlbnRpZmllciYgcHJvcGVydHlOYW1lLCBKU1ZhbHVlIHZhbHVlLCB1
bnNpZ25lZCBhdHRyaWJ1dGVzKQordm9pZCBKU09iamVjdDo6cHV0RGlyZWN0QWNjZXNzb3IoSlNH
bG9iYWxEYXRhJiBnbG9iYWxEYXRhLCBQcm9wZXJ0eU5hbWUgcHJvcGVydHlOYW1lLCBKU1ZhbHVl
IHZhbHVlLCB1bnNpZ25lZCBhdHRyaWJ1dGVzKQogewogICAgIEFTU0VSVCh2YWx1ZS5pc0dldHRl
clNldHRlcigpICYmIChhdHRyaWJ1dGVzICYgQWNjZXNzb3IpKTsKIApAQCAtMjQwLDcgKzI0MCw3
IEBAIHZvaWQgSlNPYmplY3Q6OnB1dERpcmVjdEFjY2Vzc29yKEpTR2xvYmEKICAgICBzdHJ1Y3R1
cmUoKS0+c2V0SGFzR2V0dGVyU2V0dGVyUHJvcGVydGllcyhwcm9wZXJ0eU5hbWUgPT0gZ2xvYmFs
RGF0YS5wcm9wZXJ0eU5hbWVzLT51bmRlcnNjb3JlUHJvdG8pOwogfQogCi1ib29sIEpTT2JqZWN0
OjpoYXNQcm9wZXJ0eShFeGVjU3RhdGUqIGV4ZWMsIGNvbnN0IElkZW50aWZpZXImIHByb3BlcnR5
TmFtZSkgY29uc3QKK2Jvb2wgSlNPYmplY3Q6Omhhc1Byb3BlcnR5KEV4ZWNTdGF0ZSogZXhlYywg
UHJvcGVydHlOYW1lIHByb3BlcnR5TmFtZSkgY29uc3QKIHsKICAgICBQcm9wZXJ0eVNsb3Qgc2xv
dDsKICAgICByZXR1cm4gY29uc3RfY2FzdDxKU09iamVjdCo+KHRoaXMpLT5nZXRQcm9wZXJ0eVNs
b3QoZXhlYywgcHJvcGVydHlOYW1lLCBzbG90KTsKQEAgLTI1Myw3ICsyNTMsNyBAQCBib29sIEpT
T2JqZWN0OjpoYXNQcm9wZXJ0eShFeGVjU3RhdGUqIGV4CiB9CiAKIC8vIEVDTUEgOC42LjIuNQot
Ym9vbCBKU09iamVjdDo6ZGVsZXRlUHJvcGVydHkoSlNDZWxsKiBjZWxsLCBFeGVjU3RhdGUqIGV4
ZWMsIGNvbnN0IElkZW50aWZpZXImIHByb3BlcnR5TmFtZSkKK2Jvb2wgSlNPYmplY3Q6OmRlbGV0
ZVByb3BlcnR5KEpTQ2VsbCogY2VsbCwgRXhlY1N0YXRlKiBleGVjLCBQcm9wZXJ0eU5hbWUgcHJv
cGVydHlOYW1lKQogewogICAgIEpTT2JqZWN0KiB0aGlzT2JqZWN0ID0ganNDYXN0PEpTT2JqZWN0
Kj4oY2VsbCk7CiAKQEAgLTI3OCw3ICsyNzgsNyBAQCBib29sIEpTT2JqZWN0OjpkZWxldGVQcm9w
ZXJ0eShKU0NlbGwqIGNlCiAgICAgcmV0dXJuIHRydWU7CiB9CiAKLWJvb2wgSlNPYmplY3Q6Omhh
c093blByb3BlcnR5KEV4ZWNTdGF0ZSogZXhlYywgY29uc3QgSWRlbnRpZmllciYgcHJvcGVydHlO
YW1lKSBjb25zdAorYm9vbCBKU09iamVjdDo6aGFzT3duUHJvcGVydHkoRXhlY1N0YXRlKiBleGVj
LCBQcm9wZXJ0eU5hbWUgcHJvcGVydHlOYW1lKSBjb25zdAogewogICAgIFByb3BlcnR5U2xvdCBz
bG90OwogICAgIHJldHVybiBjb25zdF9jYXN0PEpTT2JqZWN0Kj4odGhpcyktPm1ldGhvZFRhYmxl
KCktPmdldE93blByb3BlcnR5U2xvdChjb25zdF9jYXN0PEpTT2JqZWN0Kj4odGhpcyksIGV4ZWMs
IHByb3BlcnR5TmFtZSwgc2xvdCk7CkBAIC0yOTAsNyArMjkwLDcgQEAgYm9vbCBKU09iamVjdDo6
ZGVsZXRlUHJvcGVydHlCeUluZGV4KEpTQwogICAgIHJldHVybiB0aGlzT2JqZWN0LT5tZXRob2RU
YWJsZSgpLT5kZWxldGVQcm9wZXJ0eSh0aGlzT2JqZWN0LCBleGVjLCBJZGVudGlmaWVyOjpmcm9t
KGV4ZWMsIHByb3BlcnR5TmFtZSkpOwogfQogCi1zdGF0aWMgQUxXQVlTX0lOTElORSBKU1ZhbHVl
IGNhbGxEZWZhdWx0VmFsdWVGdW5jdGlvbihFeGVjU3RhdGUqIGV4ZWMsIGNvbnN0IEpTT2JqZWN0
KiBvYmplY3QsIGNvbnN0IElkZW50aWZpZXImIHByb3BlcnR5TmFtZSkKK3N0YXRpYyBBTFdBWVNf
SU5MSU5FIEpTVmFsdWUgY2FsbERlZmF1bHRWYWx1ZUZ1bmN0aW9uKEV4ZWNTdGF0ZSogZXhlYywg
Y29uc3QgSlNPYmplY3QqIG9iamVjdCwgUHJvcGVydHlOYW1lIHByb3BlcnR5TmFtZSkKIHsKICAg
ICBKU1ZhbHVlIGZ1bmN0aW9uID0gb2JqZWN0LT5nZXQoZXhlYywgcHJvcGVydHlOYW1lKTsKICAg
ICBDYWxsRGF0YSBjYWxsRGF0YTsKQEAgLTM0NCw3ICszNDQsNyBAQCBKU1ZhbHVlIEpTT2JqZWN0
OjpkZWZhdWx0VmFsdWUoY29uc3QgSlNPCiAgICAgcmV0dXJuIHRocm93RXJyb3IoZXhlYywgY3Jl
YXRlVHlwZUVycm9yKGV4ZWMsICJObyBkZWZhdWx0IHZhbHVlIikpOwogfQogCi1jb25zdCBIYXNo
RW50cnkqIEpTT2JqZWN0OjpmaW5kUHJvcGVydHlIYXNoRW50cnkoRXhlY1N0YXRlKiBleGVjLCBj
b25zdCBJZGVudGlmaWVyJiBwcm9wZXJ0eU5hbWUpIGNvbnN0Citjb25zdCBIYXNoRW50cnkqIEpT
T2JqZWN0OjpmaW5kUHJvcGVydHlIYXNoRW50cnkoRXhlY1N0YXRlKiBleGVjLCBQcm9wZXJ0eU5h
bWUgcHJvcGVydHlOYW1lKSBjb25zdAogewogICAgIGZvciAoY29uc3QgQ2xhc3NJbmZvKiBpbmZv
ID0gY2xhc3NJbmZvKCk7IGluZm87IGluZm8gPSBpbmZvLT5wYXJlbnRDbGFzcykgewogICAgICAg
ICBpZiAoY29uc3QgSGFzaFRhYmxlKiBwcm9wSGFzaFRhYmxlID0gaW5mby0+cHJvcEhhc2hUYWJs
ZShleGVjKSkgewpAQCAtMzgxLDcgKzM4MSw3IEBAIGJvb2wgSlNPYmplY3Q6OnByb3BlcnR5SXNF
bnVtZXJhYmxlKEV4ZWMKICAgICByZXR1cm4gZGVzY3JpcHRvci5lbnVtZXJhYmxlKCk7CiB9CiAK
LWJvb2wgSlNPYmplY3Q6OmdldFByb3BlcnR5U3BlY2lmaWNWYWx1ZShFeGVjU3RhdGUqIGV4ZWMs
IGNvbnN0IElkZW50aWZpZXImIHByb3BlcnR5TmFtZSwgSlNDZWxsKiYgc3BlY2lmaWNWYWx1ZSkg
Y29uc3QKK2Jvb2wgSlNPYmplY3Q6OmdldFByb3BlcnR5U3BlY2lmaWNWYWx1ZShFeGVjU3RhdGUq
IGV4ZWMsIFByb3BlcnR5TmFtZSBwcm9wZXJ0eU5hbWUsIEpTQ2VsbComIHNwZWNpZmljVmFsdWUp
IGNvbnN0CiB7CiAgICAgdW5zaWduZWQgYXR0cmlidXRlczsKICAgICBpZiAoc3RydWN0dXJlKCkt
PmdldChleGVjLT5nbG9iYWxEYXRhKCksIHByb3BlcnR5TmFtZSwgYXR0cmlidXRlcywgc3BlY2lm
aWNWYWx1ZSkgIT0gV1RGOjpub3RGb3VuZCkKQEAgLTUxMCw3ICs1MTAsNyBAQCB2b2lkIEpTT2Jq
ZWN0OjpyZWlmeVN0YXRpY0Z1bmN0aW9uc0ZvckRlCiAgICAgc3RydWN0dXJlKCktPnNldFN0YXRp
Y0Z1bmN0aW9uc1JlaWZpZWQoKTsKIH0KIAotdm9pZCBKU09iamVjdDo6cmVtb3ZlRGlyZWN0KEpT
R2xvYmFsRGF0YSYgZ2xvYmFsRGF0YSwgY29uc3QgSWRlbnRpZmllciYgcHJvcGVydHlOYW1lKQor
dm9pZCBKU09iamVjdDo6cmVtb3ZlRGlyZWN0KEpTR2xvYmFsRGF0YSYgZ2xvYmFsRGF0YSwgUHJv
cGVydHlOYW1lIHByb3BlcnR5TmFtZSkKIHsKICAgICBpZiAoc3RydWN0dXJlKCktPmdldChnbG9i
YWxEYXRhLCBwcm9wZXJ0eU5hbWUpID09IFdURjo6bm90Rm91bmQpCiAgICAgICAgIHJldHVybjsK
QEAgLTU4Myw3ICs1ODMsNyBAQCB2b2lkIEpTT2JqZWN0OjphbGxvY2F0ZVByb3BlcnR5U3RvcmFn
ZShKCiAgICAgbV9wcm9wZXJ0eVN0b3JhZ2Uuc2V0KGdsb2JhbERhdGEsIHRoaXMsIG5ld1Byb3Bl
cnR5U3RvcmFnZSk7CiB9CiAKLWJvb2wgSlNPYmplY3Q6OmdldE93blByb3BlcnR5RGVzY3JpcHRv
cihKU09iamVjdCogb2JqZWN0LCBFeGVjU3RhdGUqIGV4ZWMsIGNvbnN0IElkZW50aWZpZXImIHBy
b3BlcnR5TmFtZSwgUHJvcGVydHlEZXNjcmlwdG9yJiBkZXNjcmlwdG9yKQorYm9vbCBKU09iamVj
dDo6Z2V0T3duUHJvcGVydHlEZXNjcmlwdG9yKEpTT2JqZWN0KiBvYmplY3QsIEV4ZWNTdGF0ZSog
ZXhlYywgUHJvcGVydHlOYW1lIHByb3BlcnR5TmFtZSwgUHJvcGVydHlEZXNjcmlwdG9yJiBkZXNj
cmlwdG9yKQogewogICAgIHVuc2lnbmVkIGF0dHJpYnV0ZXMgPSAwOwogICAgIEpTQ2VsbCogY2Vs
bCA9IDA7CkBAIC01OTQsNyArNTk0LDcgQEAgYm9vbCBKU09iamVjdDo6Z2V0T3duUHJvcGVydHlE
ZXNjcmlwdG9yKAogICAgIHJldHVybiB0cnVlOwogfQogCi1ib29sIEpTT2JqZWN0OjpnZXRQcm9w
ZXJ0eURlc2NyaXB0b3IoRXhlY1N0YXRlKiBleGVjLCBjb25zdCBJZGVudGlmaWVyJiBwcm9wZXJ0
eU5hbWUsIFByb3BlcnR5RGVzY3JpcHRvciYgZGVzY3JpcHRvcikKK2Jvb2wgSlNPYmplY3Q6Omdl
dFByb3BlcnR5RGVzY3JpcHRvcihFeGVjU3RhdGUqIGV4ZWMsIFByb3BlcnR5TmFtZSBwcm9wZXJ0
eU5hbWUsIFByb3BlcnR5RGVzY3JpcHRvciYgZGVzY3JpcHRvcikKIHsKICAgICBKU09iamVjdCog
b2JqZWN0ID0gdGhpczsKICAgICB3aGlsZSAodHJ1ZSkgewpAQCAtNjA3LDcgKzYwNyw3IEBAIGJv
b2wgSlNPYmplY3Q6OmdldFByb3BlcnR5RGVzY3JpcHRvcihFeGUKICAgICB9CiB9CiAKLXN0YXRp
YyBib29sIHB1dERlc2NyaXB0b3IoRXhlY1N0YXRlKiBleGVjLCBKU09iamVjdCogdGFyZ2V0LCBj
b25zdCBJZGVudGlmaWVyJiBwcm9wZXJ0eU5hbWUsIFByb3BlcnR5RGVzY3JpcHRvciYgZGVzY3Jp
cHRvciwgdW5zaWduZWQgYXR0cmlidXRlcywgY29uc3QgUHJvcGVydHlEZXNjcmlwdG9yJiBvbGRE
ZXNjcmlwdG9yKQorc3RhdGljIGJvb2wgcHV0RGVzY3JpcHRvcihFeGVjU3RhdGUqIGV4ZWMsIEpT
T2JqZWN0KiB0YXJnZXQsIFByb3BlcnR5TmFtZSBwcm9wZXJ0eU5hbWUsIFByb3BlcnR5RGVzY3Jp
cHRvciYgZGVzY3JpcHRvciwgdW5zaWduZWQgYXR0cmlidXRlcywgY29uc3QgUHJvcGVydHlEZXNj
cmlwdG9yJiBvbGREZXNjcmlwdG9yKQogewogICAgIGlmIChkZXNjcmlwdG9yLmlzR2VuZXJpY0Rl
c2NyaXB0b3IoKSB8fCBkZXNjcmlwdG9yLmlzRGF0YURlc2NyaXB0b3IoKSkgewogICAgICAgICBp
ZiAoZGVzY3JpcHRvci5pc0dlbmVyaWNEZXNjcmlwdG9yKCkgJiYgb2xkRGVzY3JpcHRvci5pc0Fj
Y2Vzc29yRGVzY3JpcHRvcigpKSB7CkBAIC02NjIsNyArNjYyLDcgQEAgcHJpdmF0ZToKICAgICBK
U0dsb2JhbERhdGEmIG1fZ2xvYmFsRGF0YTsKIH07CiAKLWJvb2wgSlNPYmplY3Q6OmRlZmluZU93
blByb3BlcnR5KEpTT2JqZWN0KiBvYmplY3QsIEV4ZWNTdGF0ZSogZXhlYywgY29uc3QgSWRlbnRp
ZmllciYgcHJvcGVydHlOYW1lLCBQcm9wZXJ0eURlc2NyaXB0b3ImIGRlc2NyaXB0b3IsIGJvb2wg
dGhyb3dFeGNlcHRpb24pCitib29sIEpTT2JqZWN0OjpkZWZpbmVPd25Qcm9wZXJ0eShKU09iamVj
dCogb2JqZWN0LCBFeGVjU3RhdGUqIGV4ZWMsIFByb3BlcnR5TmFtZSBwcm9wZXJ0eU5hbWUsIFBy
b3BlcnR5RGVzY3JpcHRvciYgZGVzY3JpcHRvciwgYm9vbCB0aHJvd0V4Y2VwdGlvbikKIHsKICAg
ICAvLyBUcmFjayBvbiB0aGUgZ2xvYmFsZGF0YSB0aGF0IHdlJ3JlIGluIGRlZmluZSBwcm9wZXJ0
eS4KICAgICAvLyBDdXJyZW50bHkgRGVmaW5lT3duUHJvcGVydHkgdXNlcyBkZWxldGUgdG8gcmVt
b3ZlIHByb3BlcnRpZXMgd2hlbiB0aGV5IGFyZSBiZWluZyByZXBsYWNlZApJbmRleDogU291cmNl
L0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvSlNPYmplY3QuaAo9PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2Uv
SmF2YVNjcmlwdENvcmUvcnVudGltZS9KU09iamVjdC5oCShyZXZpc2lvbiAxMTY2NjcpCisrKyBT
b3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9KU09iamVjdC5oCSh3b3JraW5nIGNvcHkpCkBA
IC03NSw3ICs3NSw3IEBAIG5hbWVzcGFjZSBKU0MgewogICAgICAgICBmcmllbmQgY2xhc3MgSklU
OwogICAgICAgICBmcmllbmQgY2xhc3MgSlNDZWxsOwogICAgICAgICBmcmllbmQgY2xhc3MgTWFy
a2VkQmxvY2s7Ci0gICAgICAgIEpTX0VYUE9SVF9QUklWQVRFIGZyaWVuZCBib29sIHNldFVwU3Rh
dGljRnVuY3Rpb25TbG90KEV4ZWNTdGF0ZSogZXhlYywgY29uc3QgSGFzaEVudHJ5KiBlbnRyeSwg
SlNPYmplY3QqIHRoaXNPYmosIGNvbnN0IElkZW50aWZpZXImIHByb3BlcnR5TmFtZSwgUHJvcGVy
dHlTbG90JiBzbG90KTsKKyAgICAgICAgSlNfRVhQT1JUX1BSSVZBVEUgZnJpZW5kIGJvb2wgc2V0
VXBTdGF0aWNGdW5jdGlvblNsb3QoRXhlY1N0YXRlKiwgY29uc3QgSGFzaEVudHJ5KiwgSlNPYmpl
Y3QqLCBQcm9wZXJ0eU5hbWUsIFByb3BlcnR5U2xvdCYpOwogCiAgICAgICAgIGVudW0gUHV0TW9k
ZSB7CiAgICAgICAgICAgICBQdXRNb2RlUHV0LApAQCAtOTUsMzkgKzk1LDM5IEBAIG5hbWVzcGFj
ZSBKU0MgewogICAgICAgICAKICAgICAgICAgU3RydWN0dXJlKiBpbmhlcml0b3JJRChKU0dsb2Jh
bERhdGEmKTsKIAotICAgICAgICBKU1ZhbHVlIGdldChFeGVjU3RhdGUqLCBjb25zdCBJZGVudGlm
aWVyJiBwcm9wZXJ0eU5hbWUpIGNvbnN0OworICAgICAgICBKU1ZhbHVlIGdldChFeGVjU3RhdGUq
LCBQcm9wZXJ0eU5hbWUpIGNvbnN0OwogICAgICAgICBKU1ZhbHVlIGdldChFeGVjU3RhdGUqLCB1
bnNpZ25lZCBwcm9wZXJ0eU5hbWUpIGNvbnN0OwogCi0gICAgICAgIGJvb2wgZ2V0UHJvcGVydHlT
bG90KEV4ZWNTdGF0ZSosIGNvbnN0IElkZW50aWZpZXImIHByb3BlcnR5TmFtZSwgUHJvcGVydHlT
bG90Jik7CisgICAgICAgIGJvb2wgZ2V0UHJvcGVydHlTbG90KEV4ZWNTdGF0ZSosIFByb3BlcnR5
TmFtZSwgUHJvcGVydHlTbG90Jik7CiAgICAgICAgIGJvb2wgZ2V0UHJvcGVydHlTbG90KEV4ZWNT
dGF0ZSosIHVuc2lnbmVkIHByb3BlcnR5TmFtZSwgUHJvcGVydHlTbG90Jik7Ci0gICAgICAgIEpT
X0VYUE9SVF9QUklWQVRFIGJvb2wgZ2V0UHJvcGVydHlEZXNjcmlwdG9yKEV4ZWNTdGF0ZSosIGNv
bnN0IElkZW50aWZpZXImIHByb3BlcnR5TmFtZSwgUHJvcGVydHlEZXNjcmlwdG9yJik7CisgICAg
ICAgIEpTX0VYUE9SVF9QUklWQVRFIGJvb2wgZ2V0UHJvcGVydHlEZXNjcmlwdG9yKEV4ZWNTdGF0
ZSosIFByb3BlcnR5TmFtZSwgUHJvcGVydHlEZXNjcmlwdG9yJik7CiAKLSAgICAgICAgc3RhdGlj
IGJvb2wgZ2V0T3duUHJvcGVydHlTbG90KEpTQ2VsbCosIEV4ZWNTdGF0ZSosIGNvbnN0IElkZW50
aWZpZXImIHByb3BlcnR5TmFtZSwgUHJvcGVydHlTbG90Jik7CisgICAgICAgIHN0YXRpYyBib29s
IGdldE93blByb3BlcnR5U2xvdChKU0NlbGwqLCBFeGVjU3RhdGUqLCBQcm9wZXJ0eU5hbWUsIFBy
b3BlcnR5U2xvdCYpOwogICAgICAgICBKU19FWFBPUlRfUFJJVkFURSBzdGF0aWMgYm9vbCBnZXRP
d25Qcm9wZXJ0eVNsb3RCeUluZGV4KEpTQ2VsbCosIEV4ZWNTdGF0ZSosIHVuc2lnbmVkIHByb3Bl
cnR5TmFtZSwgUHJvcGVydHlTbG90Jik7Ci0gICAgICAgIEpTX0VYUE9SVF9QUklWQVRFIHN0YXRp
YyBib29sIGdldE93blByb3BlcnR5RGVzY3JpcHRvcihKU09iamVjdCosIEV4ZWNTdGF0ZSosIGNv
bnN0IElkZW50aWZpZXImLCBQcm9wZXJ0eURlc2NyaXB0b3ImKTsKKyAgICAgICAgSlNfRVhQT1JU
X1BSSVZBVEUgc3RhdGljIGJvb2wgZ2V0T3duUHJvcGVydHlEZXNjcmlwdG9yKEpTT2JqZWN0Kiwg
RXhlY1N0YXRlKiwgUHJvcGVydHlOYW1lLCBQcm9wZXJ0eURlc2NyaXB0b3ImKTsKIAogICAgICAg
ICBib29sIGFsbG93c0FjY2Vzc0Zyb20oRXhlY1N0YXRlKik7CiAKLSAgICAgICAgSlNfRVhQT1JU
X1BSSVZBVEUgc3RhdGljIHZvaWQgcHV0KEpTQ2VsbCosIEV4ZWNTdGF0ZSosIGNvbnN0IElkZW50
aWZpZXImIHByb3BlcnR5TmFtZSwgSlNWYWx1ZSwgUHV0UHJvcGVydHlTbG90Jik7CisgICAgICAg
IEpTX0VYUE9SVF9QUklWQVRFIHN0YXRpYyB2b2lkIHB1dChKU0NlbGwqLCBFeGVjU3RhdGUqLCBQ
cm9wZXJ0eU5hbWUsIEpTVmFsdWUsIFB1dFByb3BlcnR5U2xvdCYpOwogICAgICAgICBKU19FWFBP
UlRfUFJJVkFURSBzdGF0aWMgdm9pZCBwdXRCeUluZGV4KEpTQ2VsbCosIEV4ZWNTdGF0ZSosIHVu
c2lnbmVkIHByb3BlcnR5TmFtZSwgSlNWYWx1ZSwgYm9vbCBzaG91bGRUaHJvdyk7CiAKICAgICAg
ICAgLy8gcHV0RGlyZWN0IGlzIGVmZmVjdGl2ZWx5IGFuIHVuY2hlY2tlZCB2ZXNpb24gb2YgJ2Rl
ZmluZU93blByb3BlcnR5JzoKICAgICAgICAgLy8gIC0gdGhlIHByb3RvdHlwZSBjaGFpbiBpcyBu
b3QgY29uc3VsdGVkCiAgICAgICAgIC8vICAtIGFjY2Vzc29ycyBhcmUgbm90IGNhbGxlZC4KICAg
ICAgICAgLy8gIC0gYXR0cmlidXRlcyB3aWxsIGJlIHJlc3BlY3RlZCAoYWZ0ZXIgdGhlIGNhbGwg
dGhlIHByb3BlcnR5IHdpbGwgZXhpc3Qgd2l0aCB0aGUgZ2l2ZW4gYXR0cmlidXRlcykKLSAgICAg
ICAgSlNfRVhQT1JUX1BSSVZBVEUgc3RhdGljIHZvaWQgcHV0RGlyZWN0VmlydHVhbChKU09iamVj
dCosIEV4ZWNTdGF0ZSosIGNvbnN0IElkZW50aWZpZXImIHByb3BlcnR5TmFtZSwgSlNWYWx1ZSwg
dW5zaWduZWQgYXR0cmlidXRlcyk7Ci0gICAgICAgIHZvaWQgcHV0RGlyZWN0KEpTR2xvYmFsRGF0
YSYsIGNvbnN0IElkZW50aWZpZXImIHByb3BlcnR5TmFtZSwgSlNWYWx1ZSwgdW5zaWduZWQgYXR0
cmlidXRlcyA9IDApOwotICAgICAgICB2b2lkIHB1dERpcmVjdChKU0dsb2JhbERhdGEmLCBjb25z
dCBJZGVudGlmaWVyJiBwcm9wZXJ0eU5hbWUsIEpTVmFsdWUsIFB1dFByb3BlcnR5U2xvdCYpOwot
ICAgICAgICB2b2lkIHB1dERpcmVjdFdpdGhvdXRUcmFuc2l0aW9uKEpTR2xvYmFsRGF0YSYsIGNv
bnN0IElkZW50aWZpZXImIHByb3BlcnR5TmFtZSwgSlNWYWx1ZSwgdW5zaWduZWQgYXR0cmlidXRl
cyA9IDApOwotICAgICAgICB2b2lkIHB1dERpcmVjdEFjY2Vzc29yKEpTR2xvYmFsRGF0YSYsIGNv
bnN0IElkZW50aWZpZXImIHByb3BlcnR5TmFtZSwgSlNWYWx1ZSwgdW5zaWduZWQgYXR0cmlidXRl
cyk7CisgICAgICAgIEpTX0VYUE9SVF9QUklWQVRFIHN0YXRpYyB2b2lkIHB1dERpcmVjdFZpcnR1
YWwoSlNPYmplY3QqLCBFeGVjU3RhdGUqLCBQcm9wZXJ0eU5hbWUsIEpTVmFsdWUsIHVuc2lnbmVk
IGF0dHJpYnV0ZXMpOworICAgICAgICB2b2lkIHB1dERpcmVjdChKU0dsb2JhbERhdGEmLCBQcm9w
ZXJ0eU5hbWUsIEpTVmFsdWUsIHVuc2lnbmVkIGF0dHJpYnV0ZXMgPSAwKTsKKyAgICAgICAgdm9p
ZCBwdXREaXJlY3QoSlNHbG9iYWxEYXRhJiwgUHJvcGVydHlOYW1lLCBKU1ZhbHVlLCBQdXRQcm9w
ZXJ0eVNsb3QmKTsKKyAgICAgICAgdm9pZCBwdXREaXJlY3RXaXRob3V0VHJhbnNpdGlvbihKU0ds
b2JhbERhdGEmLCBQcm9wZXJ0eU5hbWUsIEpTVmFsdWUsIHVuc2lnbmVkIGF0dHJpYnV0ZXMgPSAw
KTsKKyAgICAgICAgdm9pZCBwdXREaXJlY3RBY2Nlc3NvcihKU0dsb2JhbERhdGEmLCBQcm9wZXJ0
eU5hbWUsIEpTVmFsdWUsIHVuc2lnbmVkIGF0dHJpYnV0ZXMpOwogCiAgICAgICAgIGJvb2wgcHJv
cGVydHlJc0VudW1lcmFibGUoRXhlY1N0YXRlKiwgY29uc3QgSWRlbnRpZmllciYgcHJvcGVydHlO
YW1lKSBjb25zdDsKIAotICAgICAgICBKU19FWFBPUlRfUFJJVkFURSBib29sIGhhc1Byb3BlcnR5
KEV4ZWNTdGF0ZSosIGNvbnN0IElkZW50aWZpZXImIHByb3BlcnR5TmFtZSkgY29uc3Q7CisgICAg
ICAgIEpTX0VYUE9SVF9QUklWQVRFIGJvb2wgaGFzUHJvcGVydHkoRXhlY1N0YXRlKiwgUHJvcGVy
dHlOYW1lKSBjb25zdDsKICAgICAgICAgSlNfRVhQT1JUX1BSSVZBVEUgYm9vbCBoYXNQcm9wZXJ0
eShFeGVjU3RhdGUqLCB1bnNpZ25lZCBwcm9wZXJ0eU5hbWUpIGNvbnN0OwotICAgICAgICBib29s
IGhhc093blByb3BlcnR5KEV4ZWNTdGF0ZSosIGNvbnN0IElkZW50aWZpZXImIHByb3BlcnR5TmFt
ZSkgY29uc3Q7CisgICAgICAgIGJvb2wgaGFzT3duUHJvcGVydHkoRXhlY1N0YXRlKiwgUHJvcGVy
dHlOYW1lKSBjb25zdDsKIAotICAgICAgICBKU19FWFBPUlRfUFJJVkFURSBzdGF0aWMgYm9vbCBk
ZWxldGVQcm9wZXJ0eShKU0NlbGwqLCBFeGVjU3RhdGUqLCBjb25zdCBJZGVudGlmaWVyJiBwcm9w
ZXJ0eU5hbWUpOworICAgICAgICBKU19FWFBPUlRfUFJJVkFURSBzdGF0aWMgYm9vbCBkZWxldGVQ
cm9wZXJ0eShKU0NlbGwqLCBFeGVjU3RhdGUqLCBQcm9wZXJ0eU5hbWUpOwogICAgICAgICBKU19F
WFBPUlRfUFJJVkFURSBzdGF0aWMgYm9vbCBkZWxldGVQcm9wZXJ0eUJ5SW5kZXgoSlNDZWxsKiwg
RXhlY1N0YXRlKiwgdW5zaWduZWQgcHJvcGVydHlOYW1lKTsKIAogICAgICAgICBKU19FWFBPUlRf
UFJJVkFURSBzdGF0aWMgSlNWYWx1ZSBkZWZhdWx0VmFsdWUoY29uc3QgSlNPYmplY3QqLCBFeGVj
U3RhdGUqLCBQcmVmZXJyZWRQcmltaXRpdmVUeXBlKTsKQEAgLTE0OCwyMiArMTQ4LDIyIEBAIG5h
bWVzcGFjZSBKU0MgewogICAgICAgICBKU19FWFBPUlRfUFJJVkFURSBzdGF0aWMgSlNPYmplY3Qq
IHRvVGhpc09iamVjdChKU0NlbGwqLCBFeGVjU3RhdGUqKTsKICAgICAgICAgSlNPYmplY3QqIHVu
d3JhcHBlZE9iamVjdCgpOwogCi0gICAgICAgIGJvb2wgZ2V0UHJvcGVydHlTcGVjaWZpY1ZhbHVl
KEV4ZWNTdGF0ZSogZXhlYywgY29uc3QgSWRlbnRpZmllciYgcHJvcGVydHlOYW1lLCBKU0NlbGwq
JiBzcGVjaWZpY0Z1bmN0aW9uKSBjb25zdDsKKyAgICAgICAgYm9vbCBnZXRQcm9wZXJ0eVNwZWNp
ZmljVmFsdWUoRXhlY1N0YXRlKiwgUHJvcGVydHlOYW1lLCBKU0NlbGwqJiBzcGVjaWZpY0Z1bmN0
aW9uKSBjb25zdDsKIAogICAgICAgICAvLyBUaGlzIGdldCBmdW5jdGlvbiBvbmx5IGxvb2tzIGF0
IHRoZSBwcm9wZXJ0eSBtYXAuCi0gICAgICAgIEpTVmFsdWUgZ2V0RGlyZWN0KEpTR2xvYmFsRGF0
YSYgZ2xvYmFsRGF0YSwgY29uc3QgSWRlbnRpZmllciYgcHJvcGVydHlOYW1lKSBjb25zdAorICAg
ICAgICBKU1ZhbHVlIGdldERpcmVjdChKU0dsb2JhbERhdGEmIGdsb2JhbERhdGEsIFByb3BlcnR5
TmFtZSBwcm9wZXJ0eU5hbWUpIGNvbnN0CiAgICAgICAgIHsKICAgICAgICAgICAgIHNpemVfdCBv
ZmZzZXQgPSBzdHJ1Y3R1cmUoKS0+Z2V0KGdsb2JhbERhdGEsIHByb3BlcnR5TmFtZSk7CiAgICAg
ICAgICAgICByZXR1cm4gb2Zmc2V0ICE9IFdURjo6bm90Rm91bmQgPyBnZXREaXJlY3RPZmZzZXQo
b2Zmc2V0KSA6IEpTVmFsdWUoKTsKICAgICAgICAgfQogCi0gICAgICAgIFdyaXRlQmFycmllckJh
c2U8VW5rbm93bj4qIGdldERpcmVjdExvY2F0aW9uKEpTR2xvYmFsRGF0YSYgZ2xvYmFsRGF0YSwg
Y29uc3QgSWRlbnRpZmllciYgcHJvcGVydHlOYW1lKQorICAgICAgICBXcml0ZUJhcnJpZXJCYXNl
PFVua25vd24+KiBnZXREaXJlY3RMb2NhdGlvbihKU0dsb2JhbERhdGEmIGdsb2JhbERhdGEsIFBy
b3BlcnR5TmFtZSBwcm9wZXJ0eU5hbWUpCiAgICAgICAgIHsKICAgICAgICAgICAgIHNpemVfdCBv
ZmZzZXQgPSBzdHJ1Y3R1cmUoKS0+Z2V0KGdsb2JhbERhdGEsIHByb3BlcnR5TmFtZSk7CiAgICAg
ICAgICAgICByZXR1cm4gb2Zmc2V0ICE9IFdURjo6bm90Rm91bmQgPyBsb2NhdGlvbkZvck9mZnNl
dChvZmZzZXQpIDogMDsKICAgICAgICAgfQogCi0gICAgICAgIFdyaXRlQmFycmllckJhc2U8VW5r
bm93bj4qIGdldERpcmVjdExvY2F0aW9uKEpTR2xvYmFsRGF0YSYgZ2xvYmFsRGF0YSwgY29uc3Qg
SWRlbnRpZmllciYgcHJvcGVydHlOYW1lLCB1bnNpZ25lZCYgYXR0cmlidXRlcykKKyAgICAgICAg
V3JpdGVCYXJyaWVyQmFzZTxVbmtub3duPiogZ2V0RGlyZWN0TG9jYXRpb24oSlNHbG9iYWxEYXRh
JiBnbG9iYWxEYXRhLCBQcm9wZXJ0eU5hbWUgcHJvcGVydHlOYW1lLCB1bnNpZ25lZCYgYXR0cmli
dXRlcykKICAgICAgICAgewogICAgICAgICAgICAgSlNDZWxsKiBzcGVjaWZpY0Z1bmN0aW9uOwog
ICAgICAgICAgICAgc2l6ZV90IG9mZnNldCA9IHN0cnVjdHVyZSgpLT5nZXQoZ2xvYmFsRGF0YSwg
cHJvcGVydHlOYW1lLCBhdHRyaWJ1dGVzLCBzcGVjaWZpY0Z1bmN0aW9uKTsKQEAgLTE3Nyw3ICsx
NzcsNyBAQCBuYW1lc3BhY2UgSlNDIHsKIAogICAgICAgICB2b2lkIHRyYW5zaXRpb25UbyhKU0ds
b2JhbERhdGEmLCBTdHJ1Y3R1cmUqKTsKIAotICAgICAgICB2b2lkIHJlbW92ZURpcmVjdChKU0ds
b2JhbERhdGEmLCBjb25zdCBJZGVudGlmaWVyJiBwcm9wZXJ0eU5hbWUpOworICAgICAgICB2b2lk
IHJlbW92ZURpcmVjdChKU0dsb2JhbERhdGEmLCBQcm9wZXJ0eU5hbWUpOwogICAgICAgICBib29s
IGhhc0N1c3RvbVByb3BlcnRpZXMoKSB7IHJldHVybiBzdHJ1Y3R1cmUoKS0+ZGlkVHJhbnNpdGlv
bigpOyB9CiAgICAgICAgIGJvb2wgaGFzR2V0dGVyU2V0dGVyUHJvcGVydGllcygpIHsgcmV0dXJu
IHN0cnVjdHVyZSgpLT5oYXNHZXR0ZXJTZXR0ZXJQcm9wZXJ0aWVzKCk7IH0KIApAQCAtMTg2LDE0
ICsxODYsMTQgQEAgbmFtZXNwYWNlIEpTQyB7CiAgICAgICAgIC8vICAtIHByb3ZpZGVzIG5vIHNw
ZWNpYWwgaGFuZGxpbmcgZm9yIF9fcHJvdG9fXwogICAgICAgICAvLyAgLSBkb2VzIG5vdCB3YWxr
IHRoZSBwcm90b3R5cGUgY2hhaW4gKHRvIGNoZWNrIGZvciBhY2Nlc3NvcnMgb3Igbm9uLXdyaXRh
YmxlIHByb3BlcnRpZXMpLgogICAgICAgICAvLyBUaGlzIGlzIHVzZWQgYnkgSlNBY3RpdmF0aW9u
LgotICAgICAgICBib29sIHB1dE93bkRhdGFQcm9wZXJ0eShKU0dsb2JhbERhdGEmLCBjb25zdCBJ
ZGVudGlmaWVyJiBwcm9wZXJ0eU5hbWUsIEpTVmFsdWUsIFB1dFByb3BlcnR5U2xvdCYpOworICAg
ICAgICBib29sIHB1dE93bkRhdGFQcm9wZXJ0eShKU0dsb2JhbERhdGEmLCBQcm9wZXJ0eU5hbWUs
IEpTVmFsdWUsIFB1dFByb3BlcnR5U2xvdCYpOwogCiAgICAgICAgIC8vIEZhc3QgYWNjZXNzIHRv
IGtub3duIHByb3BlcnR5IG9mZnNldHMuCiAgICAgICAgIEpTVmFsdWUgZ2V0RGlyZWN0T2Zmc2V0
KHNpemVfdCBvZmZzZXQpIGNvbnN0IHsgcmV0dXJuIHByb3BlcnR5U3RvcmFnZSgpW29mZnNldF0u
Z2V0KCk7IH0KICAgICAgICAgdm9pZCBwdXREaXJlY3RPZmZzZXQoSlNHbG9iYWxEYXRhJiBnbG9i
YWxEYXRhLCBzaXplX3Qgb2Zmc2V0LCBKU1ZhbHVlIHZhbHVlKSB7IHByb3BlcnR5U3RvcmFnZSgp
W29mZnNldF0uc2V0KGdsb2JhbERhdGEsIHRoaXMsIHZhbHVlKTsgfQogICAgICAgICB2b2lkIHB1
dFVuZGVmaW5lZEF0RGlyZWN0T2Zmc2V0KHNpemVfdCBvZmZzZXQpIHsgcHJvcGVydHlTdG9yYWdl
KClbb2Zmc2V0XS5zZXRVbmRlZmluZWQoKTsgfQogCi0gICAgICAgIEpTX0VYUE9SVF9QUklWQVRF
IHN0YXRpYyBib29sIGRlZmluZU93blByb3BlcnR5KEpTT2JqZWN0KiwgRXhlY1N0YXRlKiwgY29u
c3QgSWRlbnRpZmllciYgcHJvcGVydHlOYW1lLCBQcm9wZXJ0eURlc2NyaXB0b3ImLCBib29sIHNo
b3VsZFRocm93KTsKKyAgICAgICAgSlNfRVhQT1JUX1BSSVZBVEUgc3RhdGljIGJvb2wgZGVmaW5l
T3duUHJvcGVydHkoSlNPYmplY3QqLCBFeGVjU3RhdGUqLCBQcm9wZXJ0eU5hbWUsIFByb3BlcnR5
RGVzY3JpcHRvciYsIGJvb2wgc2hvdWxkVGhyb3cpOwogCiAgICAgICAgIGJvb2wgaXNHbG9iYWxP
YmplY3QoKSBjb25zdDsKICAgICAgICAgYm9vbCBpc1ZhcmlhYmxlT2JqZWN0KCkgY29uc3Q7CkBA
IC0yOTQsMTIgKzI5NCwxMiBAQCBuYW1lc3BhY2UgSlNDIHsKICAgICAgICAgfQogCiAgICAgICAg
IHRlbXBsYXRlPFB1dE1vZGU+Ci0gICAgICAgIGJvb2wgcHV0RGlyZWN0SW50ZXJuYWwoSlNHbG9i
YWxEYXRhJiwgY29uc3QgSWRlbnRpZmllciYgcHJvcGVydHlOYW1lLCBKU1ZhbHVlLCB1bnNpZ25l
ZCBhdHRyLCBQdXRQcm9wZXJ0eVNsb3QmLCBKU0NlbGwqKTsKKyAgICAgICAgYm9vbCBwdXREaXJl
Y3RJbnRlcm5hbChKU0dsb2JhbERhdGEmLCBQcm9wZXJ0eU5hbWUsIEpTVmFsdWUsIHVuc2lnbmVk
IGF0dHIsIFB1dFByb3BlcnR5U2xvdCYsIEpTQ2VsbCopOwogCi0gICAgICAgIGJvb2wgaW5saW5l
R2V0T3duUHJvcGVydHlTbG90KEV4ZWNTdGF0ZSosIGNvbnN0IElkZW50aWZpZXImIHByb3BlcnR5
TmFtZSwgUHJvcGVydHlTbG90Jik7CisgICAgICAgIGJvb2wgaW5saW5lR2V0T3duUHJvcGVydHlT
bG90KEV4ZWNTdGF0ZSosIFByb3BlcnR5TmFtZSwgUHJvcGVydHlTbG90Jik7CiAgICAgICAgIEpT
X0VYUE9SVF9QUklWQVRFIHZvaWQgZmlsbEdldHRlclByb3BlcnR5U2xvdChQcm9wZXJ0eVNsb3Qm
LCBXcml0ZUJhcnJpZXJCYXNlPFVua25vd24+KiBsb2NhdGlvbik7CiAKLSAgICAgICAgY29uc3Qg
SGFzaEVudHJ5KiBmaW5kUHJvcGVydHlIYXNoRW50cnkoRXhlY1N0YXRlKiwgY29uc3QgSWRlbnRp
ZmllciYgcHJvcGVydHlOYW1lKSBjb25zdDsKKyAgICAgICAgY29uc3QgSGFzaEVudHJ5KiBmaW5k
UHJvcGVydHlIYXNoRW50cnkoRXhlY1N0YXRlKiwgUHJvcGVydHlOYW1lKSBjb25zdDsKICAgICAg
ICAgU3RydWN0dXJlKiBjcmVhdGVJbmhlcml0b3JJRChKU0dsb2JhbERhdGEmKTsKIAogICAgICAg
ICBTdG9yYWdlQmFycmllciBtX3Byb3BlcnR5U3RvcmFnZTsKQEAgLTUzOSw3ICs1MzksNyBAQCBp
bmxpbmUgSlNPYmplY3QqIEpTVmFsdWU6OnRvVGhpc09iamVjdChFCiAgICAgcmV0dXJuIGlzQ2Vs
bCgpID8gYXNDZWxsKCktPm1ldGhvZFRhYmxlKCktPnRvVGhpc09iamVjdChhc0NlbGwoKSwgZXhl
YykgOiB0b1RoaXNPYmplY3RTbG93Q2FzZShleGVjKTsKIH0KIAotQUxXQVlTX0lOTElORSBib29s
IEpTT2JqZWN0OjppbmxpbmVHZXRPd25Qcm9wZXJ0eVNsb3QoRXhlY1N0YXRlKiBleGVjLCBjb25z
dCBJZGVudGlmaWVyJiBwcm9wZXJ0eU5hbWUsIFByb3BlcnR5U2xvdCYgc2xvdCkKK0FMV0FZU19J
TkxJTkUgYm9vbCBKU09iamVjdDo6aW5saW5lR2V0T3duUHJvcGVydHlTbG90KEV4ZWNTdGF0ZSog
ZXhlYywgUHJvcGVydHlOYW1lIHByb3BlcnR5TmFtZSwgUHJvcGVydHlTbG90JiBzbG90KQogewog
ICAgIGlmIChXcml0ZUJhcnJpZXJCYXNlPFVua25vd24+KiBsb2NhdGlvbiA9IGdldERpcmVjdExv
Y2F0aW9uKGV4ZWMtPmdsb2JhbERhdGEoKSwgcHJvcGVydHlOYW1lKSkgewogICAgICAgICBpZiAo
c3RydWN0dXJlKCktPmhhc0dldHRlclNldHRlclByb3BlcnRpZXMoKSAmJiBsb2NhdGlvbi0+aXNH
ZXR0ZXJTZXR0ZXIoKSkKQEAgLTU1NSwxMiArNTU1LDEyIEBAIEFMV0FZU19JTkxJTkUgYm9vbCBK
U09iamVjdDo6aW5saW5lR2V0T3cKIC8vIEl0IG1heSBzZWVtIGNyYXp5IHRvIGlubGluZSBhIGZ1
bmN0aW9uIHRoaXMgbGFyZ2UsIGVzcGVjaWFsbHkgYSB2aXJ0dWFsIGZ1bmN0aW9uLAogLy8gYnV0
IGl0IG1ha2VzIGEgYmlnIGRpZmZlcmVuY2UgdG8gcHJvcGVydHkgbG9va3VwIHRoYXQgZGVyaXZl
ZCBjbGFzc2VzIGNhbiBpbmxpbmUgdGhlaXIKIC8vIGJhc2UgY2xhc3MgY2FsbCB0byB0aGlzLgot
QUxXQVlTX0lOTElORSBib29sIEpTT2JqZWN0OjpnZXRPd25Qcm9wZXJ0eVNsb3QoSlNDZWxsKiBj
ZWxsLCBFeGVjU3RhdGUqIGV4ZWMsIGNvbnN0IElkZW50aWZpZXImIHByb3BlcnR5TmFtZSwgUHJv
cGVydHlTbG90JiBzbG90KQorQUxXQVlTX0lOTElORSBib29sIEpTT2JqZWN0OjpnZXRPd25Qcm9w
ZXJ0eVNsb3QoSlNDZWxsKiBjZWxsLCBFeGVjU3RhdGUqIGV4ZWMsIFByb3BlcnR5TmFtZSBwcm9w
ZXJ0eU5hbWUsIFByb3BlcnR5U2xvdCYgc2xvdCkKIHsKICAgICByZXR1cm4ganNDYXN0PEpTT2Jq
ZWN0Kj4oY2VsbCktPmlubGluZUdldE93blByb3BlcnR5U2xvdChleGVjLCBwcm9wZXJ0eU5hbWUs
IHNsb3QpOwogfQogCi1BTFdBWVNfSU5MSU5FIGJvb2wgSlNDZWxsOjpmYXN0R2V0T3duUHJvcGVy
dHlTbG90KEV4ZWNTdGF0ZSogZXhlYywgY29uc3QgSWRlbnRpZmllciYgcHJvcGVydHlOYW1lLCBQ
cm9wZXJ0eVNsb3QmIHNsb3QpCitBTFdBWVNfSU5MSU5FIGJvb2wgSlNDZWxsOjpmYXN0R2V0T3du
UHJvcGVydHlTbG90KEV4ZWNTdGF0ZSogZXhlYywgUHJvcGVydHlOYW1lIHByb3BlcnR5TmFtZSwg
UHJvcGVydHlTbG90JiBzbG90KQogewogICAgIGlmICghc3RydWN0dXJlKCktPnR5cGVJbmZvKCku
b3ZlcnJpZGVzR2V0T3duUHJvcGVydHlTbG90KCkpCiAgICAgICAgIHJldHVybiBhc09iamVjdCh0
aGlzKS0+aW5saW5lR2V0T3duUHJvcGVydHlTbG90KGV4ZWMsIHByb3BlcnR5TmFtZSwgc2xvdCk7
CkBAIC01ODUsNyArNTg1LDcgQEAgQUxXQVlTX0lOTElORSBKU1ZhbHVlIEpTQ2VsbDo6ZmFzdEdl
dE93bgogCiAvLyBJdCBtYXkgc2VlbSBjcmF6eSB0byBpbmxpbmUgYSBmdW5jdGlvbiB0aGlzIGxh
cmdlIGJ1dCBpdCBtYWtlcyBhIGJpZyBkaWZmZXJlbmNlCiAvLyBzaW5jZSB0aGlzIGlzIGZ1bmN0
aW9uIHZlcnkgaG90IGluIHZhcmlhYmxlIGxvb2t1cAotQUxXQVlTX0lOTElORSBib29sIEpTT2Jq
ZWN0OjpnZXRQcm9wZXJ0eVNsb3QoRXhlY1N0YXRlKiBleGVjLCBjb25zdCBJZGVudGlmaWVyJiBw
cm9wZXJ0eU5hbWUsIFByb3BlcnR5U2xvdCYgc2xvdCkKK0FMV0FZU19JTkxJTkUgYm9vbCBKU09i
amVjdDo6Z2V0UHJvcGVydHlTbG90KEV4ZWNTdGF0ZSogZXhlYywgUHJvcGVydHlOYW1lIHByb3Bl
cnR5TmFtZSwgUHJvcGVydHlTbG90JiBzbG90KQogewogICAgIEpTT2JqZWN0KiBvYmplY3QgPSB0
aGlzOwogICAgIHdoaWxlICh0cnVlKSB7CkBAIC02MTEsNyArNjExLDcgQEAgQUxXQVlTX0lOTElO
RSBib29sIEpTT2JqZWN0OjpnZXRQcm9wZXJ0eQogICAgIH0KIH0KIAotaW5saW5lIEpTVmFsdWUg
SlNPYmplY3Q6OmdldChFeGVjU3RhdGUqIGV4ZWMsIGNvbnN0IElkZW50aWZpZXImIHByb3BlcnR5
TmFtZSkgY29uc3QKK2lubGluZSBKU1ZhbHVlIEpTT2JqZWN0OjpnZXQoRXhlY1N0YXRlKiBleGVj
LCBQcm9wZXJ0eU5hbWUgcHJvcGVydHlOYW1lKSBjb25zdAogewogICAgIFByb3BlcnR5U2xvdCBz
bG90KHRoaXMpOwogICAgIGlmIChjb25zdF9jYXN0PEpTT2JqZWN0Kj4odGhpcyktPmdldFByb3Bl
cnR5U2xvdChleGVjLCBwcm9wZXJ0eU5hbWUsIHNsb3QpKQpAQCAtNjMwLDcgKzYzMCw3IEBAIGlu
bGluZSBKU1ZhbHVlIEpTT2JqZWN0OjpnZXQoRXhlY1N0YXRlKiAKIH0KIAogdGVtcGxhdGU8SlNP
YmplY3Q6OlB1dE1vZGUgbW9kZT4KLWlubGluZSBib29sIEpTT2JqZWN0OjpwdXREaXJlY3RJbnRl
cm5hbChKU0dsb2JhbERhdGEmIGdsb2JhbERhdGEsIGNvbnN0IElkZW50aWZpZXImIHByb3BlcnR5
TmFtZSwgSlNWYWx1ZSB2YWx1ZSwgdW5zaWduZWQgYXR0cmlidXRlcywgUHV0UHJvcGVydHlTbG90
JiBzbG90LCBKU0NlbGwqIHNwZWNpZmljRnVuY3Rpb24pCitpbmxpbmUgYm9vbCBKU09iamVjdDo6
cHV0RGlyZWN0SW50ZXJuYWwoSlNHbG9iYWxEYXRhJiBnbG9iYWxEYXRhLCBQcm9wZXJ0eU5hbWUg
cHJvcGVydHlOYW1lLCBKU1ZhbHVlIHZhbHVlLCB1bnNpZ25lZCBhdHRyaWJ1dGVzLCBQdXRQcm9w
ZXJ0eVNsb3QmIHNsb3QsIEpTQ2VsbCogc3BlY2lmaWNGdW5jdGlvbikKIHsKICAgICBBU1NFUlQo
dmFsdWUpOwogICAgIEFTU0VSVCh2YWx1ZS5pc0dldHRlclNldHRlcigpID09ICEhKGF0dHJpYnV0
ZXMgJiBBY2Nlc3NvcikpOwpAQCAtNzQyLDcgKzc0Miw3IEBAIGlubGluZSBib29sIEpTT2JqZWN0
OjpwdXREaXJlY3RJbnRlcm5hbCgKICAgICByZXR1cm4gdHJ1ZTsKIH0KIAotaW5saW5lIGJvb2wg
SlNPYmplY3Q6OnB1dE93bkRhdGFQcm9wZXJ0eShKU0dsb2JhbERhdGEmIGdsb2JhbERhdGEsIGNv
bnN0IElkZW50aWZpZXImIHByb3BlcnR5TmFtZSwgSlNWYWx1ZSB2YWx1ZSwgUHV0UHJvcGVydHlT
bG90JiBzbG90KQoraW5saW5lIGJvb2wgSlNPYmplY3Q6OnB1dE93bkRhdGFQcm9wZXJ0eShKU0ds
b2JhbERhdGEmIGdsb2JhbERhdGEsIFByb3BlcnR5TmFtZSBwcm9wZXJ0eU5hbWUsIEpTVmFsdWUg
dmFsdWUsIFB1dFByb3BlcnR5U2xvdCYgc2xvdCkKIHsKICAgICBBU1NFUlQodmFsdWUpOwogICAg
IEFTU0VSVCghSGVhcDo6aGVhcCh2YWx1ZSkgfHwgSGVhcDo6aGVhcCh2YWx1ZSkgPT0gSGVhcDo6
aGVhcCh0aGlzKSk7CkBAIC03NTEsMjAgKzc1MSwyMCBAQCBpbmxpbmUgYm9vbCBKU09iamVjdDo6
cHV0T3duRGF0YVByb3BlcnR5CiAgICAgcmV0dXJuIHB1dERpcmVjdEludGVybmFsPFB1dE1vZGVQ
dXQ+KGdsb2JhbERhdGEsIHByb3BlcnR5TmFtZSwgdmFsdWUsIDAsIHNsb3QsIGdldEpTRnVuY3Rp
b24odmFsdWUpKTsKIH0KIAotaW5saW5lIHZvaWQgSlNPYmplY3Q6OnB1dERpcmVjdChKU0dsb2Jh
bERhdGEmIGdsb2JhbERhdGEsIGNvbnN0IElkZW50aWZpZXImIHByb3BlcnR5TmFtZSwgSlNWYWx1
ZSB2YWx1ZSwgdW5zaWduZWQgYXR0cmlidXRlcykKK2lubGluZSB2b2lkIEpTT2JqZWN0OjpwdXRE
aXJlY3QoSlNHbG9iYWxEYXRhJiBnbG9iYWxEYXRhLCBQcm9wZXJ0eU5hbWUgcHJvcGVydHlOYW1l
LCBKU1ZhbHVlIHZhbHVlLCB1bnNpZ25lZCBhdHRyaWJ1dGVzKQogewogICAgIEFTU0VSVCghdmFs
dWUuaXNHZXR0ZXJTZXR0ZXIoKSAmJiAhKGF0dHJpYnV0ZXMgJiBBY2Nlc3NvcikpOwogICAgIFB1
dFByb3BlcnR5U2xvdCBzbG90OwogICAgIHB1dERpcmVjdEludGVybmFsPFB1dE1vZGVEZWZpbmVP
d25Qcm9wZXJ0eT4oZ2xvYmFsRGF0YSwgcHJvcGVydHlOYW1lLCB2YWx1ZSwgYXR0cmlidXRlcywg
c2xvdCwgZ2V0SlNGdW5jdGlvbih2YWx1ZSkpOwogfQogCi1pbmxpbmUgdm9pZCBKU09iamVjdDo6
cHV0RGlyZWN0KEpTR2xvYmFsRGF0YSYgZ2xvYmFsRGF0YSwgY29uc3QgSWRlbnRpZmllciYgcHJv
cGVydHlOYW1lLCBKU1ZhbHVlIHZhbHVlLCBQdXRQcm9wZXJ0eVNsb3QmIHNsb3QpCitpbmxpbmUg
dm9pZCBKU09iamVjdDo6cHV0RGlyZWN0KEpTR2xvYmFsRGF0YSYgZ2xvYmFsRGF0YSwgUHJvcGVy
dHlOYW1lIHByb3BlcnR5TmFtZSwgSlNWYWx1ZSB2YWx1ZSwgUHV0UHJvcGVydHlTbG90JiBzbG90
KQogewogICAgIEFTU0VSVCghdmFsdWUuaXNHZXR0ZXJTZXR0ZXIoKSk7CiAgICAgcHV0RGlyZWN0
SW50ZXJuYWw8UHV0TW9kZURlZmluZU93blByb3BlcnR5PihnbG9iYWxEYXRhLCBwcm9wZXJ0eU5h
bWUsIHZhbHVlLCAwLCBzbG90LCBnZXRKU0Z1bmN0aW9uKHZhbHVlKSk7CiB9CiAKLWlubGluZSB2
b2lkIEpTT2JqZWN0OjpwdXREaXJlY3RXaXRob3V0VHJhbnNpdGlvbihKU0dsb2JhbERhdGEmIGds
b2JhbERhdGEsIGNvbnN0IElkZW50aWZpZXImIHByb3BlcnR5TmFtZSwgSlNWYWx1ZSB2YWx1ZSwg
dW5zaWduZWQgYXR0cmlidXRlcykKK2lubGluZSB2b2lkIEpTT2JqZWN0OjpwdXREaXJlY3RXaXRo
b3V0VHJhbnNpdGlvbihKU0dsb2JhbERhdGEmIGdsb2JhbERhdGEsIFByb3BlcnR5TmFtZSBwcm9w
ZXJ0eU5hbWUsIEpTVmFsdWUgdmFsdWUsIHVuc2lnbmVkIGF0dHJpYnV0ZXMpCiB7CiAgICAgQVNT
RVJUKCF2YWx1ZS5pc0dldHRlclNldHRlcigpICYmICEoYXR0cmlidXRlcyAmIEFjY2Vzc29yKSk7
CiAgICAgc2l6ZV90IGN1cnJlbnRDYXBhY2l0eSA9IHN0cnVjdHVyZSgpLT5wcm9wZXJ0eVN0b3Jh
Z2VDYXBhY2l0eSgpOwpAQCAtNzg2LDEzICs3ODYsMTMgQEAgaW5saW5lIEpTVmFsdWUgSlNPYmpl
Y3Q6OnRvUHJpbWl0aXZlKEV4ZQogICAgIHJldHVybiBtZXRob2RUYWJsZSgpLT5kZWZhdWx0VmFs
dWUodGhpcywgZXhlYywgcHJlZmVycmVkVHlwZSk7CiB9CiAKLWlubGluZSBKU1ZhbHVlIEpTVmFs
dWU6OmdldChFeGVjU3RhdGUqIGV4ZWMsIGNvbnN0IElkZW50aWZpZXImIHByb3BlcnR5TmFtZSkg
Y29uc3QKK2lubGluZSBKU1ZhbHVlIEpTVmFsdWU6OmdldChFeGVjU3RhdGUqIGV4ZWMsIFByb3Bl
cnR5TmFtZSBwcm9wZXJ0eU5hbWUpIGNvbnN0CiB7CiAgICAgUHJvcGVydHlTbG90IHNsb3QoYXNW
YWx1ZSgpKTsKICAgICByZXR1cm4gZ2V0KGV4ZWMsIHByb3BlcnR5TmFtZSwgc2xvdCk7CiB9CiAK
LWlubGluZSBKU1ZhbHVlIEpTVmFsdWU6OmdldChFeGVjU3RhdGUqIGV4ZWMsIGNvbnN0IElkZW50
aWZpZXImIHByb3BlcnR5TmFtZSwgUHJvcGVydHlTbG90JiBzbG90KSBjb25zdAoraW5saW5lIEpT
VmFsdWUgSlNWYWx1ZTo6Z2V0KEV4ZWNTdGF0ZSogZXhlYywgUHJvcGVydHlOYW1lIHByb3BlcnR5
TmFtZSwgUHJvcGVydHlTbG90JiBzbG90KSBjb25zdAogewogICAgIGlmIChVTkxJS0VMWSghaXND
ZWxsKCkpKSB7CiAgICAgICAgIEpTT2JqZWN0KiBwcm90b3R5cGUgPSBzeW50aGVzaXplUHJvdG90
eXBlKGV4ZWMpOwpAQCAtODM2LDcgKzgzNiw3IEBAIGlubGluZSBKU1ZhbHVlIEpTVmFsdWU6Omdl
dChFeGVjU3RhdGUqIGUKICAgICB9CiB9CiAKLWlubGluZSB2b2lkIEpTVmFsdWU6OnB1dChFeGVj
U3RhdGUqIGV4ZWMsIGNvbnN0IElkZW50aWZpZXImIHByb3BlcnR5TmFtZSwgSlNWYWx1ZSB2YWx1
ZSwgUHV0UHJvcGVydHlTbG90JiBzbG90KQoraW5saW5lIHZvaWQgSlNWYWx1ZTo6cHV0KEV4ZWNT
dGF0ZSogZXhlYywgUHJvcGVydHlOYW1lIHByb3BlcnR5TmFtZSwgSlNWYWx1ZSB2YWx1ZSwgUHV0
UHJvcGVydHlTbG90JiBzbG90KQogewogICAgIGlmIChVTkxJS0VMWSghaXNDZWxsKCkpKSB7CiAg
ICAgICAgIHB1dFRvUHJpbWl0aXZlKGV4ZWMsIHByb3BlcnR5TmFtZSwgdmFsdWUsIHNsb3QpOwpJ
bmRleDogU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvSlNTdGF0aWNTY29wZU9iamVjdC5j
cHAKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PQotLS0gU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvSlNTdGF0aWNT
Y29wZU9iamVjdC5jcHAJKHJldmlzaW9uIDExNjY2NykKKysrIFNvdXJjZS9KYXZhU2NyaXB0Q29y
ZS9ydW50aW1lL0pTU3RhdGljU2NvcGVPYmplY3QuY3BwCSh3b3JraW5nIGNvcHkpCkBAIC01NCw3
ICs1NCw3IEBAIEpTT2JqZWN0KiBKU1N0YXRpY1Njb3BlT2JqZWN0Ojp0b1RoaXNPYmoKICAgICBy
ZXR1cm4gZXhlYy0+Z2xvYmFsVGhpc1ZhbHVlKCk7CiB9CiAKLXZvaWQgSlNTdGF0aWNTY29wZU9i
amVjdDo6cHV0KEpTQ2VsbCogY2VsbCwgRXhlY1N0YXRlKiBleGVjLCBjb25zdCBJZGVudGlmaWVy
JiBwcm9wZXJ0eU5hbWUsIEpTVmFsdWUgdmFsdWUsIFB1dFByb3BlcnR5U2xvdCYgc2xvdCkKK3Zv
aWQgSlNTdGF0aWNTY29wZU9iamVjdDo6cHV0KEpTQ2VsbCogY2VsbCwgRXhlY1N0YXRlKiBleGVj
LCBQcm9wZXJ0eU5hbWUgcHJvcGVydHlOYW1lLCBKU1ZhbHVlIHZhbHVlLCBQdXRQcm9wZXJ0eVNs
b3QmIHNsb3QpCiB7CiAgICAgSlNTdGF0aWNTY29wZU9iamVjdCogdGhpc09iamVjdCA9IGpzQ2Fz
dDxKU1N0YXRpY1Njb3BlT2JqZWN0Kj4oY2VsbCk7CiAgICAgaWYgKHNsb3QuaXNTdHJpY3RNb2Rl
KCkpIHsKQEAgLTc4LDcgKzc4LDcgQEAgdm9pZCBKU1N0YXRpY1Njb3BlT2JqZWN0OjpwdXQoSlND
ZWxsKiBjZQogICAgIEFTU0VSVF9OT1RfUkVBQ0hFRCgpOwogfQogCi12b2lkIEpTU3RhdGljU2Nv
cGVPYmplY3Q6OnB1dERpcmVjdFZpcnR1YWwoSlNPYmplY3QqIG9iamVjdCwgRXhlY1N0YXRlKiBl
eGVjLCBjb25zdCBJZGVudGlmaWVyJiBwcm9wZXJ0eU5hbWUsIEpTVmFsdWUgdmFsdWUsIHVuc2ln
bmVkIGF0dHJpYnV0ZXMpCit2b2lkIEpTU3RhdGljU2NvcGVPYmplY3Q6OnB1dERpcmVjdFZpcnR1
YWwoSlNPYmplY3QqIG9iamVjdCwgRXhlY1N0YXRlKiBleGVjLCBQcm9wZXJ0eU5hbWUgcHJvcGVy
dHlOYW1lLCBKU1ZhbHVlIHZhbHVlLCB1bnNpZ25lZCBhdHRyaWJ1dGVzKQogewogICAgIEpTU3Rh
dGljU2NvcGVPYmplY3QqIHRoaXNPYmplY3QgPSBqc0Nhc3Q8SlNTdGF0aWNTY29wZU9iamVjdCo+
KG9iamVjdCk7CiAgICAgaWYgKHRoaXNPYmplY3QtPnN5bWJvbFRhYmxlUHV0V2l0aEF0dHJpYnV0
ZXMoZXhlYy0+Z2xvYmFsRGF0YSgpLCBwcm9wZXJ0eU5hbWUsIHZhbHVlLCBhdHRyaWJ1dGVzKSkK
QEAgLTg3LDcgKzg3LDcgQEAgdm9pZCBKU1N0YXRpY1Njb3BlT2JqZWN0OjpwdXREaXJlY3RWaXJ0
dQogICAgIEFTU0VSVF9OT1RfUkVBQ0hFRCgpOwogfQogCi1ib29sIEpTU3RhdGljU2NvcGVPYmpl
Y3Q6OmdldE93blByb3BlcnR5U2xvdChKU0NlbGwqIGNlbGwsIEV4ZWNTdGF0ZSosIGNvbnN0IElk
ZW50aWZpZXImIHByb3BlcnR5TmFtZSwgUHJvcGVydHlTbG90JiBzbG90KQorYm9vbCBKU1N0YXRp
Y1Njb3BlT2JqZWN0OjpnZXRPd25Qcm9wZXJ0eVNsb3QoSlNDZWxsKiBjZWxsLCBFeGVjU3RhdGUq
LCBQcm9wZXJ0eU5hbWUgcHJvcGVydHlOYW1lLCBQcm9wZXJ0eVNsb3QmIHNsb3QpCiB7CiAgICAg
cmV0dXJuIGpzQ2FzdDxKU1N0YXRpY1Njb3BlT2JqZWN0Kj4oY2VsbCktPnN5bWJvbFRhYmxlR2V0
KHByb3BlcnR5TmFtZSwgc2xvdCk7CiB9CkluZGV4OiBTb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVu
dGltZS9KU1N0YXRpY1Njb3BlT2JqZWN0LmgKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL0phdmFTY3Jp
cHRDb3JlL3J1bnRpbWUvSlNTdGF0aWNTY29wZU9iamVjdC5oCShyZXZpc2lvbiAxMTY2NjcpCisr
KyBTb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9KU1N0YXRpY1Njb3BlT2JqZWN0LmgJKHdv
cmtpbmcgY29weSkKQEAgLTQ0LDEwICs0NCwxMCBAQCBuYW1lc3BhY2UgSlNDewogICAgICAgICBz
dGF0aWMgdm9pZCB2aXNpdENoaWxkcmVuKEpTQ2VsbCosIFNsb3RWaXNpdG9yJik7CiAgICAgICAg
IGJvb2wgaXNEeW5hbWljU2NvcGUoYm9vbCYgcmVxdWlyZXNEeW5hbWljQ2hlY2tzKSBjb25zdDsK
ICAgICAgICAgc3RhdGljIEpTT2JqZWN0KiB0b1RoaXNPYmplY3QoSlNDZWxsKiwgRXhlY1N0YXRl
Kik7Ci0gICAgICAgIHN0YXRpYyBib29sIGdldE93blByb3BlcnR5U2xvdChKU0NlbGwqLCBFeGVj
U3RhdGUqLCBjb25zdCBJZGVudGlmaWVyJiwgUHJvcGVydHlTbG90Jik7Ci0gICAgICAgIHN0YXRp
YyB2b2lkIHB1dChKU0NlbGwqLCBFeGVjU3RhdGUqLCBjb25zdCBJZGVudGlmaWVyJiwgSlNWYWx1
ZSwgUHV0UHJvcGVydHlTbG90Jik7CisgICAgICAgIHN0YXRpYyBib29sIGdldE93blByb3BlcnR5
U2xvdChKU0NlbGwqLCBFeGVjU3RhdGUqLCBQcm9wZXJ0eU5hbWUsIFByb3BlcnR5U2xvdCYpOwor
ICAgICAgICBzdGF0aWMgdm9pZCBwdXQoSlNDZWxsKiwgRXhlY1N0YXRlKiwgUHJvcGVydHlOYW1l
LCBKU1ZhbHVlLCBQdXRQcm9wZXJ0eVNsb3QmKTsKIAotICAgICAgICBzdGF0aWMgdm9pZCBwdXRE
aXJlY3RWaXJ0dWFsKEpTT2JqZWN0KiwgRXhlY1N0YXRlKiwgY29uc3QgSWRlbnRpZmllciYsIEpT
VmFsdWUsIHVuc2lnbmVkIGF0dHJpYnV0ZXMpOworICAgICAgICBzdGF0aWMgdm9pZCBwdXREaXJl
Y3RWaXJ0dWFsKEpTT2JqZWN0KiwgRXhlY1N0YXRlKiwgUHJvcGVydHlOYW1lLCBKU1ZhbHVlLCB1
bnNpZ25lZCBhdHRyaWJ1dGVzKTsKIAogICAgICAgICBzdGF0aWMgU3RydWN0dXJlKiBjcmVhdGVT
dHJ1Y3R1cmUoSlNHbG9iYWxEYXRhJiBnbG9iYWxEYXRhLCBKU0dsb2JhbE9iamVjdCogZ2xvYmFs
T2JqZWN0LCBKU1ZhbHVlIHByb3RvKSB7IHJldHVybiBTdHJ1Y3R1cmU6OmNyZWF0ZShnbG9iYWxE
YXRhLCBnbG9iYWxPYmplY3QsIHByb3RvLCBUeXBlSW5mbyhTdGF0aWNTY29wZU9iamVjdFR5cGUs
IFN0cnVjdHVyZUZsYWdzKSwgJnNfaW5mbyk7IH0KIApJbmRleDogU291cmNlL0phdmFTY3JpcHRD
b3JlL3J1bnRpbWUvSlNTdHJpbmcuY3BwCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9KYXZhU2NyaXB0
Q29yZS9ydW50aW1lL0pTU3RyaW5nLmNwcAkocmV2aXNpb24gMTE2NjY3KQorKysgU291cmNlL0ph
dmFTY3JpcHRDb3JlL3J1bnRpbWUvSlNTdHJpbmcuY3BwCSh3b3JraW5nIGNvcHkpCkBAIC0yNTcs
NyArMjU3LDcgQEAgSlNPYmplY3QqIEpTU3RyaW5nOjp0b1RoaXNPYmplY3QoSlNDZWxsKgogICAg
IHJldHVybiBTdHJpbmdPYmplY3Q6OmNyZWF0ZShleGVjLCBleGVjLT5sZXhpY2FsR2xvYmFsT2Jq
ZWN0KCksIGpzQ2FzdDxKU1N0cmluZyo+KGNlbGwpKTsKIH0KIAotYm9vbCBKU1N0cmluZzo6Z2V0
T3duUHJvcGVydHlTbG90KEpTQ2VsbCogY2VsbCwgRXhlY1N0YXRlKiBleGVjLCBjb25zdCBJZGVu
dGlmaWVyJiBwcm9wZXJ0eU5hbWUsIFByb3BlcnR5U2xvdCYgc2xvdCkKK2Jvb2wgSlNTdHJpbmc6
OmdldE93blByb3BlcnR5U2xvdChKU0NlbGwqIGNlbGwsIEV4ZWNTdGF0ZSogZXhlYywgUHJvcGVy
dHlOYW1lIHByb3BlcnR5TmFtZSwgUHJvcGVydHlTbG90JiBzbG90KQogewogICAgIEpTU3RyaW5n
KiB0aGlzT2JqZWN0ID0ganNDYXN0PEpTU3RyaW5nKj4oY2VsbCk7CiAgICAgLy8gVGhlIHNlbWFu
dGljcyBoZXJlIGFyZSByZWFsbHkgZ2V0UHJvcGVydHlTbG90LCBub3QgZ2V0T3duUHJvcGVydHlT
bG90LgpAQCAtMjc1LDE2ICsyNzUsMTYgQEAgYm9vbCBKU1N0cmluZzo6Z2V0T3duUHJvcGVydHlT
bG90KEpTQ2VsbAogICAgIHJldHVybiB0cnVlOwogfQogCi1ib29sIEpTU3RyaW5nOjpnZXRTdHJp
bmdQcm9wZXJ0eURlc2NyaXB0b3IoRXhlY1N0YXRlKiBleGVjLCBjb25zdCBJZGVudGlmaWVyJiBw
cm9wZXJ0eU5hbWUsIFByb3BlcnR5RGVzY3JpcHRvciYgZGVzY3JpcHRvcikKK2Jvb2wgSlNTdHJp
bmc6OmdldFN0cmluZ1Byb3BlcnR5RGVzY3JpcHRvcihFeGVjU3RhdGUqIGV4ZWMsIFByb3BlcnR5
TmFtZSBwcm9wZXJ0eU5hbWUsIFByb3BlcnR5RGVzY3JpcHRvciYgZGVzY3JpcHRvcikKIHsKICAg
ICBpZiAocHJvcGVydHlOYW1lID09IGV4ZWMtPnByb3BlcnR5TmFtZXMoKS5sZW5ndGgpIHsKICAg
ICAgICAgZGVzY3JpcHRvci5zZXREZXNjcmlwdG9yKGpzTnVtYmVyKG1fbGVuZ3RoKSwgRG9udEVu
dW0gfCBEb250RGVsZXRlIHwgUmVhZE9ubHkpOwogICAgICAgICByZXR1cm4gdHJ1ZTsKICAgICB9
CiAgICAgCi0gICAgYm9vbCBpc1N0cmljdFVJbnQzMjsKLSAgICB1bnNpZ25lZCBpID0gcHJvcGVy
dHlOYW1lLnRvVUludDMyKGlzU3RyaWN0VUludDMyKTsKLSAgICBpZiAoaXNTdHJpY3RVSW50MzIg
JiYgaSA8IG1fbGVuZ3RoKSB7CisgICAgdW5zaWduZWQgaSA9IHByb3BlcnR5TmFtZS5hc0luZGV4
KCk7CisgICAgaWYgKGkgPCBtX2xlbmd0aCkgeworICAgICAgICBBU1NFUlQoaSAhPSBQcm9wZXJ0
eU5hbWU6Ok5vdEFuSW5kZXgpOyAvLyBObyBuZWVkIGZvciBhbiBleHBsaWNpdCBjaGVjaywgdGhl
IGFib3ZlIHRlc3Qgd291bGQgYWx3YXlzIGZhaWwhCiAgICAgICAgIGRlc2NyaXB0b3Iuc2V0RGVz
Y3JpcHRvcihnZXRJbmRleChleGVjLCBpKSwgRG9udERlbGV0ZSB8IFJlYWRPbmx5KTsKICAgICAg
ICAgcmV0dXJuIHRydWU7CiAgICAgfQpJbmRleDogU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRp
bWUvSlNTdHJpbmcuaAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGlt
ZS9KU1N0cmluZy5oCShyZXZpc2lvbiAxMTY2NjcpCisrKyBTb3VyY2UvSmF2YVNjcmlwdENvcmUv
cnVudGltZS9KU1N0cmluZy5oCSh3b3JraW5nIGNvcHkpCkBAIC0xNDMsOSArMTQzLDkgQEAgbmFt
ZXNwYWNlIEpTQyB7CiAgICAgICAgIEpTT2JqZWN0KiB0b09iamVjdChFeGVjU3RhdGUqLCBKU0ds
b2JhbE9iamVjdCopIGNvbnN0OwogICAgICAgICBkb3VibGUgdG9OdW1iZXIoRXhlY1N0YXRlKikg
Y29uc3Q7CiAgICAgICAgIAotICAgICAgICBib29sIGdldFN0cmluZ1Byb3BlcnR5U2xvdChFeGVj
U3RhdGUqLCBjb25zdCBJZGVudGlmaWVyJiBwcm9wZXJ0eU5hbWUsIFByb3BlcnR5U2xvdCYpOwor
ICAgICAgICBib29sIGdldFN0cmluZ1Byb3BlcnR5U2xvdChFeGVjU3RhdGUqLCBQcm9wZXJ0eU5h
bWUsIFByb3BlcnR5U2xvdCYpOwogICAgICAgICBib29sIGdldFN0cmluZ1Byb3BlcnR5U2xvdChF
eGVjU3RhdGUqLCB1bnNpZ25lZCBwcm9wZXJ0eU5hbWUsIFByb3BlcnR5U2xvdCYpOwotICAgICAg
ICBib29sIGdldFN0cmluZ1Byb3BlcnR5RGVzY3JpcHRvcihFeGVjU3RhdGUqLCBjb25zdCBJZGVu
dGlmaWVyJiBwcm9wZXJ0eU5hbWUsIFByb3BlcnR5RGVzY3JpcHRvciYpOworICAgICAgICBib29s
IGdldFN0cmluZ1Byb3BlcnR5RGVzY3JpcHRvcihFeGVjU3RhdGUqLCBQcm9wZXJ0eU5hbWUsIFBy
b3BlcnR5RGVzY3JpcHRvciYpOwogCiAgICAgICAgIGJvb2wgY2FuR2V0SW5kZXgodW5zaWduZWQg
aSkgeyByZXR1cm4gaSA8IG1fbGVuZ3RoOyB9CiAgICAgICAgIEpTU3RyaW5nKiBnZXRJbmRleChF
eGVjU3RhdGUqLCB1bnNpZ25lZCk7CkBAIC0xODEsNyArMTgxLDcgQEAgbmFtZXNwYWNlIEpTQyB7
CiAgICAgICAgIHN0YXRpYyBKU09iamVjdCogdG9UaGlzT2JqZWN0KEpTQ2VsbCosIEV4ZWNTdGF0
ZSopOwogCiAgICAgICAgIC8vIEFjdHVhbGx5IGdldFByb3BlcnR5U2xvdCwgbm90IGdldE93blBy
b3BlcnR5U2xvdCAoc2VlIEpTQ2VsbCkuCi0gICAgICAgIHN0YXRpYyBib29sIGdldE93blByb3Bl
cnR5U2xvdChKU0NlbGwqLCBFeGVjU3RhdGUqLCBjb25zdCBJZGVudGlmaWVyJiBwcm9wZXJ0eU5h
bWUsIFByb3BlcnR5U2xvdCYpOworICAgICAgICBzdGF0aWMgYm9vbCBnZXRPd25Qcm9wZXJ0eVNs
b3QoSlNDZWxsKiwgRXhlY1N0YXRlKiwgUHJvcGVydHlOYW1lLCBQcm9wZXJ0eVNsb3QmKTsKICAg
ICAgICAgc3RhdGljIGJvb2wgZ2V0T3duUHJvcGVydHlTbG90QnlJbmRleChKU0NlbGwqLCBFeGVj
U3RhdGUqLCB1bnNpZ25lZCBwcm9wZXJ0eU5hbWUsIFByb3BlcnR5U2xvdCYpOwogCiAgICAgICAg
IFVTdHJpbmcmIHN0cmluZygpIHsgQVNTRVJUKCFpc1JvcGUoKSk7IHJldHVybiBtX3ZhbHVlOyB9
CkBAIC00NDksMTYgKzQ0OSwxNiBAQCBuYW1lc3BhY2UgSlNDIHsKICAgICBpbmxpbmUgSlNTdHJp
bmcqIGpzTm9udHJpdmlhbFN0cmluZyhFeGVjU3RhdGUqIGV4ZWMsIGNvbnN0IGNoYXIqIHMpIHsg
cmV0dXJuIGpzTm9udHJpdmlhbFN0cmluZygmZXhlYy0+Z2xvYmFsRGF0YSgpLCBzKTsgfQogICAg
IGlubGluZSBKU1N0cmluZyoganNPd25lZFN0cmluZyhFeGVjU3RhdGUqIGV4ZWMsIGNvbnN0IFVT
dHJpbmcmIHMpIHsgcmV0dXJuIGpzT3duZWRTdHJpbmcoJmV4ZWMtPmdsb2JhbERhdGEoKSwgcyk7
IH0gCiAKLSAgICBBTFdBWVNfSU5MSU5FIGJvb2wgSlNTdHJpbmc6OmdldFN0cmluZ1Byb3BlcnR5
U2xvdChFeGVjU3RhdGUqIGV4ZWMsIGNvbnN0IElkZW50aWZpZXImIHByb3BlcnR5TmFtZSwgUHJv
cGVydHlTbG90JiBzbG90KQorICAgIEFMV0FZU19JTkxJTkUgYm9vbCBKU1N0cmluZzo6Z2V0U3Ry
aW5nUHJvcGVydHlTbG90KEV4ZWNTdGF0ZSogZXhlYywgUHJvcGVydHlOYW1lIHByb3BlcnR5TmFt
ZSwgUHJvcGVydHlTbG90JiBzbG90KQogICAgIHsKICAgICAgICAgaWYgKHByb3BlcnR5TmFtZSA9
PSBleGVjLT5wcm9wZXJ0eU5hbWVzKCkubGVuZ3RoKSB7CiAgICAgICAgICAgICBzbG90LnNldFZh
bHVlKGpzTnVtYmVyKG1fbGVuZ3RoKSk7CiAgICAgICAgICAgICByZXR1cm4gdHJ1ZTsKICAgICAg
ICAgfQogCi0gICAgICAgIGJvb2wgaXNTdHJpY3RVSW50MzI7Ci0gICAgICAgIHVuc2lnbmVkIGkg
PSBwcm9wZXJ0eU5hbWUudG9VSW50MzIoaXNTdHJpY3RVSW50MzIpOwotICAgICAgICBpZiAoaXNT
dHJpY3RVSW50MzIgJiYgaSA8IG1fbGVuZ3RoKSB7CisgICAgICAgIHVuc2lnbmVkIGkgPSBwcm9w
ZXJ0eU5hbWUuYXNJbmRleCgpOworICAgICAgICBpZiAoaSA8IG1fbGVuZ3RoKSB7CisgICAgICAg
ICAgICBBU1NFUlQoaSAhPSBQcm9wZXJ0eU5hbWU6Ok5vdEFuSW5kZXgpOyAvLyBObyBuZWVkIGZv
ciBhbiBleHBsaWNpdCBjaGVjaywgdGhlIGFib3ZlIHRlc3Qgd291bGQgYWx3YXlzIGZhaWwhCiAg
ICAgICAgICAgICBzbG90LnNldFZhbHVlKGdldEluZGV4KGV4ZWMsIGkpKTsKICAgICAgICAgICAg
IHJldHVybiB0cnVlOwogICAgICAgICB9CkluZGV4OiBTb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVu
dGltZS9KU1ZhbHVlLmNwcAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVu
dGltZS9KU1ZhbHVlLmNwcAkocmV2aXNpb24gMTE2NjY3KQorKysgU291cmNlL0phdmFTY3JpcHRD
b3JlL3J1bnRpbWUvSlNWYWx1ZS5jcHAJKHdvcmtpbmcgY29weSkKQEAgLTEwOSw3ICsxMDksNyBA
QCBKU09iamVjdCogSlNWYWx1ZTo6c3ludGhlc2l6ZVByb3RvdHlwZShFCiB9CiAKIC8vIEVDTUEg
OC43LjIKLXZvaWQgSlNWYWx1ZTo6cHV0VG9QcmltaXRpdmUoRXhlY1N0YXRlKiBleGVjLCBjb25z
dCBJZGVudGlmaWVyJiBwcm9wZXJ0eU5hbWUsIEpTVmFsdWUgdmFsdWUsIFB1dFByb3BlcnR5U2xv
dCYgc2xvdCkKK3ZvaWQgSlNWYWx1ZTo6cHV0VG9QcmltaXRpdmUoRXhlY1N0YXRlKiBleGVjLCBQ
cm9wZXJ0eU5hbWUgcHJvcGVydHlOYW1lLCBKU1ZhbHVlIHZhbHVlLCBQdXRQcm9wZXJ0eVNsb3Qm
IHNsb3QpCiB7CiAgICAgSlNHbG9iYWxEYXRhJiBnbG9iYWxEYXRhID0gZXhlYy0+Z2xvYmFsRGF0
YSgpOwogCkluZGV4OiBTb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9KU1ZhbHVlLmgKPT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PQotLS0gU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvSlNWYWx1ZS5oCShyZXZp
c2lvbiAxMTY2NjcpCisrKyBTb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9KU1ZhbHVlLmgJ
KHdvcmtpbmcgY29weSkKQEAgLTM2LDEyICszNiwxMiBAQAogbmFtZXNwYWNlIEpTQyB7CiAKICAg
ICBjbGFzcyBFeGVjU3RhdGU7Ci0gICAgY2xhc3MgSWRlbnRpZmllcjsKICAgICBjbGFzcyBKU0Nl
bGw7CiAgICAgY2xhc3MgSlNHbG9iYWxEYXRhOwogICAgIGNsYXNzIEpTR2xvYmFsT2JqZWN0Owog
ICAgIGNsYXNzIEpTT2JqZWN0OwogICAgIGNsYXNzIEpTU3RyaW5nOworICAgIGNsYXNzIFByb3Bl
cnR5TmFtZTsKICAgICBjbGFzcyBQcm9wZXJ0eVNsb3Q7CiAgICAgY2xhc3MgUHV0UHJvcGVydHlT
bG90OwogICAgIGNsYXNzIFVTdHJpbmc7CkBAIC0yMTksMTIgKzIxOSwxMiBAQCBuYW1lc3BhY2Ug
SlNDIHsKICAgICAgICAgZmxvYXQgdG9GbG9hdChFeGVjU3RhdGUqIGV4ZWMpIGNvbnN0IHsgcmV0
dXJuIHN0YXRpY19jYXN0PGZsb2F0Pih0b051bWJlcihleGVjKSk7IH0KIAogICAgICAgICAvLyBP
YmplY3Qgb3BlcmF0aW9ucywgd2l0aCB0aGUgdG9PYmplY3Qgb3BlcmF0aW9uIGluY2x1ZGVkLgot
ICAgICAgICBKU1ZhbHVlIGdldChFeGVjU3RhdGUqLCBjb25zdCBJZGVudGlmaWVyJiBwcm9wZXJ0
eU5hbWUpIGNvbnN0OwotICAgICAgICBKU1ZhbHVlIGdldChFeGVjU3RhdGUqLCBjb25zdCBJZGVu
dGlmaWVyJiBwcm9wZXJ0eU5hbWUsIFByb3BlcnR5U2xvdCYpIGNvbnN0OworICAgICAgICBKU1Zh
bHVlIGdldChFeGVjU3RhdGUqLCBQcm9wZXJ0eU5hbWUpIGNvbnN0OworICAgICAgICBKU1ZhbHVl
IGdldChFeGVjU3RhdGUqLCBQcm9wZXJ0eU5hbWUsIFByb3BlcnR5U2xvdCYpIGNvbnN0OwogICAg
ICAgICBKU1ZhbHVlIGdldChFeGVjU3RhdGUqLCB1bnNpZ25lZCBwcm9wZXJ0eU5hbWUpIGNvbnN0
OwogICAgICAgICBKU1ZhbHVlIGdldChFeGVjU3RhdGUqLCB1bnNpZ25lZCBwcm9wZXJ0eU5hbWUs
IFByb3BlcnR5U2xvdCYpIGNvbnN0OwotICAgICAgICB2b2lkIHB1dChFeGVjU3RhdGUqLCBjb25z
dCBJZGVudGlmaWVyJiBwcm9wZXJ0eU5hbWUsIEpTVmFsdWUsIFB1dFByb3BlcnR5U2xvdCYpOwot
ICAgICAgICB2b2lkIHB1dFRvUHJpbWl0aXZlKEV4ZWNTdGF0ZSosIGNvbnN0IElkZW50aWZpZXIm
IHByb3BlcnR5TmFtZSwgSlNWYWx1ZSwgUHV0UHJvcGVydHlTbG90Jik7CisgICAgICAgIHZvaWQg
cHV0KEV4ZWNTdGF0ZSosIFByb3BlcnR5TmFtZSwgSlNWYWx1ZSwgUHV0UHJvcGVydHlTbG90Jik7
CisgICAgICAgIHZvaWQgcHV0VG9QcmltaXRpdmUoRXhlY1N0YXRlKiwgUHJvcGVydHlOYW1lLCBK
U1ZhbHVlLCBQdXRQcm9wZXJ0eVNsb3QmKTsKICAgICAgICAgdm9pZCBwdXRCeUluZGV4KEV4ZWNT
dGF0ZSosIHVuc2lnbmVkIHByb3BlcnR5TmFtZSwgSlNWYWx1ZSwgYm9vbCBzaG91bGRUaHJvdyk7
CiAKICAgICAgICAgSlNPYmplY3QqIHRvVGhpc09iamVjdChFeGVjU3RhdGUqKSBjb25zdDsKSW5k
ZXg6IFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL0pTVmFyaWFibGVPYmplY3QuY3BwCj09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT0KLS0tIFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL0pTVmFyaWFibGVPYmpl
Y3QuY3BwCShyZXZpc2lvbiAxMTY2NjcpCisrKyBTb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGlt
ZS9KU1ZhcmlhYmxlT2JqZWN0LmNwcAkod29ya2luZyBjb3B5KQpAQCAtNDIsNyArNDIsNyBAQCB2
b2lkIEpTVmFyaWFibGVPYmplY3Q6OmRlc3Ryb3koSlNDZWxsKiBjCiAgICAganNDYXN0PEpTVmFy
aWFibGVPYmplY3QqPihjZWxsKS0+SlNWYXJpYWJsZU9iamVjdDo6fkpTVmFyaWFibGVPYmplY3Qo
KTsKIH0KIAotYm9vbCBKU1ZhcmlhYmxlT2JqZWN0OjpkZWxldGVQcm9wZXJ0eShKU0NlbGwqIGNl
bGwsIEV4ZWNTdGF0ZSogZXhlYywgY29uc3QgSWRlbnRpZmllciYgcHJvcGVydHlOYW1lKQorYm9v
bCBKU1ZhcmlhYmxlT2JqZWN0OjpkZWxldGVQcm9wZXJ0eShKU0NlbGwqIGNlbGwsIEV4ZWNTdGF0
ZSogZXhlYywgUHJvcGVydHlOYW1lIHByb3BlcnR5TmFtZSkKIHsKICAgICBKU1ZhcmlhYmxlT2Jq
ZWN0KiB0aGlzT2JqZWN0ID0ganNDYXN0PEpTVmFyaWFibGVPYmplY3QqPihjZWxsKTsKICAgICBp
ZiAodGhpc09iamVjdC0+c3ltYm9sVGFibGUoKS5jb250YWlucyhwcm9wZXJ0eU5hbWUuaW1wbCgp
KSkKQEAgLTYzLDcgKzYzLDcgQEAgdm9pZCBKU1ZhcmlhYmxlT2JqZWN0OjpnZXRPd25Qcm9wZXJ0
eU5hbQogICAgIEpTT2JqZWN0OjpnZXRPd25Qcm9wZXJ0eU5hbWVzKHRoaXNPYmplY3QsIGV4ZWMs
IHByb3BlcnR5TmFtZXMsIG1vZGUpOwogfQogCi1ib29sIEpTVmFyaWFibGVPYmplY3Q6OnN5bWJv
bFRhYmxlR2V0KGNvbnN0IElkZW50aWZpZXImIHByb3BlcnR5TmFtZSwgUHJvcGVydHlEZXNjcmlw
dG9yJiBkZXNjcmlwdG9yKQorYm9vbCBKU1ZhcmlhYmxlT2JqZWN0OjpzeW1ib2xUYWJsZUdldChQ
cm9wZXJ0eU5hbWUgcHJvcGVydHlOYW1lLCBQcm9wZXJ0eURlc2NyaXB0b3ImIGRlc2NyaXB0b3Ip
CiB7CiAgICAgU3ltYm9sVGFibGVFbnRyeSBlbnRyeSA9IHN5bWJvbFRhYmxlKCkuaW5saW5lR2V0
KHByb3BlcnR5TmFtZS5pbXBsKCkpOwogICAgIGlmICghZW50cnkuaXNOdWxsKCkpIHsKQEAgLTcz
LDcgKzczLDcgQEAgYm9vbCBKU1ZhcmlhYmxlT2JqZWN0OjpzeW1ib2xUYWJsZUdldChjbwogICAg
IHJldHVybiBmYWxzZTsKIH0KIAotdm9pZCBKU1ZhcmlhYmxlT2JqZWN0OjpwdXREaXJlY3RWaXJ0
dWFsKEpTT2JqZWN0KiwgRXhlY1N0YXRlKiwgY29uc3QgSWRlbnRpZmllciYsIEpTVmFsdWUsIHVu
c2lnbmVkKQordm9pZCBKU1ZhcmlhYmxlT2JqZWN0OjpwdXREaXJlY3RWaXJ0dWFsKEpTT2JqZWN0
KiwgRXhlY1N0YXRlKiwgUHJvcGVydHlOYW1lLCBKU1ZhbHVlLCB1bnNpZ25lZCkKIHsKICAgICBB
U1NFUlRfTk9UX1JFQUNIRUQoKTsKIH0KSW5kZXg6IFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50
aW1lL0pTVmFyaWFibGVPYmplY3QuaAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvSmF2YVNjcmlwdENv
cmUvcnVudGltZS9KU1ZhcmlhYmxlT2JqZWN0LmgJKHJldmlzaW9uIDExNjY2NykKKysrIFNvdXJj
ZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL0pTVmFyaWFibGVPYmplY3QuaAkod29ya2luZyBjb3B5
KQpAQCAtNTIsOSArNTIsOSBAQCBuYW1lc3BhY2UgSlNDIHsKIAogICAgICAgICBKU19FWFBPUlRf
UFJJVkFURSBzdGF0aWMgdm9pZCBkZXN0cm95KEpTQ2VsbCopOwogCi0gICAgICAgIHN0YXRpYyBO
T19SRVRVUk5fRFVFX1RPX0FTU0VSVCB2b2lkIHB1dERpcmVjdFZpcnR1YWwoSlNPYmplY3QqLCBF
eGVjU3RhdGUqLCBjb25zdCBJZGVudGlmaWVyJiwgSlNWYWx1ZSwgdW5zaWduZWQgYXR0cmlidXRl
cyk7CisgICAgICAgIHN0YXRpYyBOT19SRVRVUk5fRFVFX1RPX0FTU0VSVCB2b2lkIHB1dERpcmVj
dFZpcnR1YWwoSlNPYmplY3QqLCBFeGVjU3RhdGUqLCBQcm9wZXJ0eU5hbWUsIEpTVmFsdWUsIHVu
c2lnbmVkIGF0dHJpYnV0ZXMpOwogCi0gICAgICAgIEpTX0VYUE9SVF9QUklWQVRFIHN0YXRpYyBi
b29sIGRlbGV0ZVByb3BlcnR5KEpTQ2VsbCosIEV4ZWNTdGF0ZSosIGNvbnN0IElkZW50aWZpZXIm
KTsKKyAgICAgICAgSlNfRVhQT1JUX1BSSVZBVEUgc3RhdGljIGJvb2wgZGVsZXRlUHJvcGVydHko
SlNDZWxsKiwgRXhlY1N0YXRlKiwgUHJvcGVydHlOYW1lKTsKICAgICAgICAgSlNfRVhQT1JUX1BS
SVZBVEUgc3RhdGljIHZvaWQgZ2V0T3duUHJvcGVydHlOYW1lcyhKU09iamVjdCosIEV4ZWNTdGF0
ZSosIFByb3BlcnR5TmFtZUFycmF5JiwgRW51bWVyYXRpb25Nb2RlKTsKICAgICAgICAgCiAgICAg
ICAgIGJvb2wgaXNEeW5hbWljU2NvcGUoYm9vbCYgcmVxdWlyZXNEeW5hbWljQ2hlY2tzKSBjb25z
dDsKQEAgLTg5LDE4ICs4OSwxOCBAQCBuYW1lc3BhY2UgSlNDIHsKICAgICAgICAgUGFzc093bkFy
cmF5UHRyPFdyaXRlQmFycmllcjxVbmtub3duPiA+IGNvcHlSZWdpc3RlckFycmF5KEpTR2xvYmFs
RGF0YSYsIFdyaXRlQmFycmllcjxVbmtub3duPiogc3JjLCBzaXplX3QgY291bnQsIHNpemVfdCBj
YWxsZnJhbWVTdGFydHMpOwogICAgICAgICB2b2lkIHNldFJlZ2lzdGVycyhXcml0ZUJhcnJpZXI8
VW5rbm93bj4qIHJlZ2lzdGVycywgUGFzc093bkFycmF5UHRyPFdyaXRlQmFycmllcjxVbmtub3du
PiA+IHJlZ2lzdGVyQXJyYXkpOwogCi0gICAgICAgIGJvb2wgc3ltYm9sVGFibGVHZXQoY29uc3Qg
SWRlbnRpZmllciYsIFByb3BlcnR5U2xvdCYpOwotICAgICAgICBKU19FWFBPUlRfUFJJVkFURSBi
b29sIHN5bWJvbFRhYmxlR2V0KGNvbnN0IElkZW50aWZpZXImLCBQcm9wZXJ0eURlc2NyaXB0b3Im
KTsKLSAgICAgICAgYm9vbCBzeW1ib2xUYWJsZUdldChjb25zdCBJZGVudGlmaWVyJiwgUHJvcGVy
dHlTbG90JiwgYm9vbCYgc2xvdElzV3JpdGVhYmxlKTsKLSAgICAgICAgYm9vbCBzeW1ib2xUYWJs
ZVB1dChFeGVjU3RhdGUqLCBjb25zdCBJZGVudGlmaWVyJiwgSlNWYWx1ZSwgYm9vbCBzaG91bGRU
aHJvdyk7Ci0gICAgICAgIGJvb2wgc3ltYm9sVGFibGVQdXRXaXRoQXR0cmlidXRlcyhKU0dsb2Jh
bERhdGEmLCBjb25zdCBJZGVudGlmaWVyJiwgSlNWYWx1ZSwgdW5zaWduZWQgYXR0cmlidXRlcyk7
CisgICAgICAgIGJvb2wgc3ltYm9sVGFibGVHZXQoUHJvcGVydHlOYW1lLCBQcm9wZXJ0eVNsb3Qm
KTsKKyAgICAgICAgSlNfRVhQT1JUX1BSSVZBVEUgYm9vbCBzeW1ib2xUYWJsZUdldChQcm9wZXJ0
eU5hbWUsIFByb3BlcnR5RGVzY3JpcHRvciYpOworICAgICAgICBib29sIHN5bWJvbFRhYmxlR2V0
KFByb3BlcnR5TmFtZSwgUHJvcGVydHlTbG90JiwgYm9vbCYgc2xvdElzV3JpdGVhYmxlKTsKKyAg
ICAgICAgYm9vbCBzeW1ib2xUYWJsZVB1dChFeGVjU3RhdGUqLCBQcm9wZXJ0eU5hbWUsIEpTVmFs
dWUsIGJvb2wgc2hvdWxkVGhyb3cpOworICAgICAgICBib29sIHN5bWJvbFRhYmxlUHV0V2l0aEF0
dHJpYnV0ZXMoSlNHbG9iYWxEYXRhJiwgUHJvcGVydHlOYW1lLCBKU1ZhbHVlLCB1bnNpZ25lZCBh
dHRyaWJ1dGVzKTsKIAogICAgICAgICBTeW1ib2xUYWJsZSogbV9zeW1ib2xUYWJsZTsgLy8gTWFw
cyBuYW1lIC0+IG9mZnNldCBmcm9tICJyIiBpbiByZWdpc3RlciBmaWxlLgogICAgICAgICBXcml0
ZUJhcnJpZXI8VW5rbm93bj4qIG1fcmVnaXN0ZXJzOyAvLyAiciIgaW4gdGhlIHJlZ2lzdGVyIGZp
bGUuCiAgICAgICAgIE93bkFycmF5UHRyPFdyaXRlQmFycmllcjxVbmtub3duPiA+IG1fcmVnaXN0
ZXJBcnJheTsgLy8gSW5kZXBlbmRlbnQgY29weSBvZiByZWdpc3RlcnMsIHVzZWQgd2hlbiBhIHZh
cmlhYmxlIG9iamVjdCBjb3BpZXMgaXRzIHJlZ2lzdGVycyBvdXQgb2YgdGhlIHJlZ2lzdGVyIGZp
bGUuCiAgICAgfTsKIAotICAgIGlubGluZSBib29sIEpTVmFyaWFibGVPYmplY3Q6OnN5bWJvbFRh
YmxlR2V0KGNvbnN0IElkZW50aWZpZXImIHByb3BlcnR5TmFtZSwgUHJvcGVydHlTbG90JiBzbG90
KQorICAgIGlubGluZSBib29sIEpTVmFyaWFibGVPYmplY3Q6OnN5bWJvbFRhYmxlR2V0KFByb3Bl
cnR5TmFtZSBwcm9wZXJ0eU5hbWUsIFByb3BlcnR5U2xvdCYgc2xvdCkKICAgICB7CiAgICAgICAg
IFN5bWJvbFRhYmxlRW50cnkgZW50cnkgPSBzeW1ib2xUYWJsZSgpLmlubGluZUdldChwcm9wZXJ0
eU5hbWUuaW1wbCgpKTsKICAgICAgICAgaWYgKCFlbnRyeS5pc051bGwoKSkgewpAQCAtMTEwLDcg
KzExMCw3IEBAIG5hbWVzcGFjZSBKU0MgewogICAgICAgICByZXR1cm4gZmFsc2U7CiAgICAgfQog
Ci0gICAgaW5saW5lIGJvb2wgSlNWYXJpYWJsZU9iamVjdDo6c3ltYm9sVGFibGVHZXQoY29uc3Qg
SWRlbnRpZmllciYgcHJvcGVydHlOYW1lLCBQcm9wZXJ0eVNsb3QmIHNsb3QsIGJvb2wmIHNsb3RJ
c1dyaXRlYWJsZSkKKyAgICBpbmxpbmUgYm9vbCBKU1ZhcmlhYmxlT2JqZWN0OjpzeW1ib2xUYWJs
ZUdldChQcm9wZXJ0eU5hbWUgcHJvcGVydHlOYW1lLCBQcm9wZXJ0eVNsb3QmIHNsb3QsIGJvb2wm
IHNsb3RJc1dyaXRlYWJsZSkKICAgICB7CiAgICAgICAgIFN5bWJvbFRhYmxlRW50cnkgZW50cnkg
PSBzeW1ib2xUYWJsZSgpLmlubGluZUdldChwcm9wZXJ0eU5hbWUuaW1wbCgpKTsKICAgICAgICAg
aWYgKCFlbnRyeS5pc051bGwoKSkgewpAQCAtMTIxLDcgKzEyMSw3IEBAIG5hbWVzcGFjZSBKU0Mg
ewogICAgICAgICByZXR1cm4gZmFsc2U7CiAgICAgfQogCi0gICAgaW5saW5lIGJvb2wgSlNWYXJp
YWJsZU9iamVjdDo6c3ltYm9sVGFibGVQdXQoRXhlY1N0YXRlKiBleGVjLCBjb25zdCBJZGVudGlm
aWVyJiBwcm9wZXJ0eU5hbWUsIEpTVmFsdWUgdmFsdWUsIGJvb2wgc2hvdWxkVGhyb3cpCisgICAg
aW5saW5lIGJvb2wgSlNWYXJpYWJsZU9iamVjdDo6c3ltYm9sVGFibGVQdXQoRXhlY1N0YXRlKiBl
eGVjLCBQcm9wZXJ0eU5hbWUgcHJvcGVydHlOYW1lLCBKU1ZhbHVlIHZhbHVlLCBib29sIHNob3Vs
ZFRocm93KQogICAgIHsKICAgICAgICAgSlNHbG9iYWxEYXRhJiBnbG9iYWxEYXRhID0gZXhlYy0+
Z2xvYmFsRGF0YSgpOwogICAgICAgICBBU1NFUlQoIUhlYXA6OmhlYXAodmFsdWUpIHx8IEhlYXA6
OmhlYXAodmFsdWUpID09IEhlYXA6OmhlYXAodGhpcykpOwpAQCAtMTM4LDcgKzEzOCw3IEBAIG5h
bWVzcGFjZSBKU0MgewogICAgICAgICByZXR1cm4gdHJ1ZTsKICAgICB9CiAKLSAgICBpbmxpbmUg
Ym9vbCBKU1ZhcmlhYmxlT2JqZWN0OjpzeW1ib2xUYWJsZVB1dFdpdGhBdHRyaWJ1dGVzKEpTR2xv
YmFsRGF0YSYgZ2xvYmFsRGF0YSwgY29uc3QgSWRlbnRpZmllciYgcHJvcGVydHlOYW1lLCBKU1Zh
bHVlIHZhbHVlLCB1bnNpZ25lZCBhdHRyaWJ1dGVzKQorICAgIGlubGluZSBib29sIEpTVmFyaWFi
bGVPYmplY3Q6OnN5bWJvbFRhYmxlUHV0V2l0aEF0dHJpYnV0ZXMoSlNHbG9iYWxEYXRhJiBnbG9i
YWxEYXRhLCBQcm9wZXJ0eU5hbWUgcHJvcGVydHlOYW1lLCBKU1ZhbHVlIHZhbHVlLCB1bnNpZ25l
ZCBhdHRyaWJ1dGVzKQogICAgIHsKICAgICAgICAgQVNTRVJUKCFIZWFwOjpoZWFwKHZhbHVlKSB8
fCBIZWFwOjpoZWFwKHZhbHVlKSA9PSBIZWFwOjpoZWFwKHRoaXMpKTsKIApJbmRleDogU291cmNl
L0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvTG9va3VwLmNwcAo9PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2Uv
SmF2YVNjcmlwdENvcmUvcnVudGltZS9Mb29rdXAuY3BwCShyZXZpc2lvbiAxMTY2NjcpCisrKyBT
b3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9Mb29rdXAuY3BwCSh3b3JraW5nIGNvcHkpCkBA
IC02NCw3ICs2NCw3IEBAIHZvaWQgSGFzaFRhYmxlOjpkZWxldGVUYWJsZSgpIGNvbnN0CiAgICAg
fQogfQogCi1ib29sIHNldFVwU3RhdGljRnVuY3Rpb25TbG90KEV4ZWNTdGF0ZSogZXhlYywgY29u
c3QgSGFzaEVudHJ5KiBlbnRyeSwgSlNPYmplY3QqIHRoaXNPYmosIGNvbnN0IElkZW50aWZpZXIm
IHByb3BlcnR5TmFtZSwgUHJvcGVydHlTbG90JiBzbG90KQorYm9vbCBzZXRVcFN0YXRpY0Z1bmN0
aW9uU2xvdChFeGVjU3RhdGUqIGV4ZWMsIGNvbnN0IEhhc2hFbnRyeSogZW50cnksIEpTT2JqZWN0
KiB0aGlzT2JqLCBQcm9wZXJ0eU5hbWUgcHJvcGVydHlOYW1lLCBQcm9wZXJ0eVNsb3QmIHNsb3Qp
CiB7CiAgICAgQVNTRVJUKHRoaXNPYmotPmdsb2JhbE9iamVjdCgpKTsKICAgICBBU1NFUlQoZW50
cnktPmF0dHJpYnV0ZXMoKSAmIEZ1bmN0aW9uKTsKQEAgLTc2LDcgKzc2LDcgQEAgYm9vbCBzZXRV
cFN0YXRpY0Z1bmN0aW9uU2xvdChFeGVjU3RhdGUqIAogICAgICAgICBpZiAodGhpc09iai0+c3Rh
dGljRnVuY3Rpb25zUmVpZmllZCgpKQogICAgICAgICAgICAgcmV0dXJuIGZhbHNlOwogICAgIAot
ICAgICAgICBKU0Z1bmN0aW9uKiBmdW5jdGlvbiA9IEpTRnVuY3Rpb246OmNyZWF0ZShleGVjLCB0
aGlzT2JqLT5nbG9iYWxPYmplY3QoKSwgZW50cnktPmZ1bmN0aW9uTGVuZ3RoKCksIHByb3BlcnR5
TmFtZSwgZW50cnktPmZ1bmN0aW9uKCksIGVudHJ5LT5pbnRyaW5zaWMoKSk7CisgICAgICAgIEpT
RnVuY3Rpb24qIGZ1bmN0aW9uID0gSlNGdW5jdGlvbjo6Y3JlYXRlKGV4ZWMsIHRoaXNPYmotPmds
b2JhbE9iamVjdCgpLCBlbnRyeS0+ZnVuY3Rpb25MZW5ndGgoKSwgcHJvcGVydHlOYW1lLnVzdHJp
bmcoKSwgZW50cnktPmZ1bmN0aW9uKCksIGVudHJ5LT5pbnRyaW5zaWMoKSk7CiAgICAgICAgIHRo
aXNPYmotPnB1dERpcmVjdChleGVjLT5nbG9iYWxEYXRhKCksIHByb3BlcnR5TmFtZSwgZnVuY3Rp
b24sIGVudHJ5LT5hdHRyaWJ1dGVzKCkpOwogICAgICAgICBsb2NhdGlvbiA9IHRoaXNPYmotPmdl
dERpcmVjdExvY2F0aW9uKGV4ZWMtPmdsb2JhbERhdGEoKSwgcHJvcGVydHlOYW1lKTsKICAgICB9
CkluZGV4OiBTb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9Mb29rdXAuaAo9PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
Ci0tLSBTb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9Mb29rdXAuaAkocmV2aXNpb24gMTE2
NjY3KQorKysgU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvTG9va3VwLmgJKHdvcmtpbmcg
Y29weSkKQEAgLTEyOSwxMyArMTI5LDEzIEBAIG5hbWVzcGFjZSBKU0MgewogICAgICAgICBKU19F
WFBPUlRfUFJJVkFURSB2b2lkIGRlbGV0ZVRhYmxlKCkgY29uc3Q7CiAKICAgICAgICAgLy8gRmlu
ZCBhbiBlbnRyeSBpbiB0aGUgdGFibGUsIGFuZCByZXR1cm4gdGhlIGVudHJ5LgotICAgICAgICBB
TFdBWVNfSU5MSU5FIGNvbnN0IEhhc2hFbnRyeSogZW50cnkoSlNHbG9iYWxEYXRhKiBnbG9iYWxE
YXRhLCBjb25zdCBJZGVudGlmaWVyJiBpZGVudGlmaWVyKSBjb25zdAorICAgICAgICBBTFdBWVNf
SU5MSU5FIGNvbnN0IEhhc2hFbnRyeSogZW50cnkoSlNHbG9iYWxEYXRhKiBnbG9iYWxEYXRhLCBQ
cm9wZXJ0eU5hbWUgaWRlbnRpZmllcikgY29uc3QKICAgICAgICAgewogICAgICAgICAgICAgaW5p
dGlhbGl6ZUlmTmVlZGVkKGdsb2JhbERhdGEpOwogICAgICAgICAgICAgcmV0dXJuIGVudHJ5KGlk
ZW50aWZpZXIpOwogICAgICAgICB9CiAKLSAgICAgICAgQUxXQVlTX0lOTElORSBjb25zdCBIYXNo
RW50cnkqIGVudHJ5KEV4ZWNTdGF0ZSogZXhlYywgY29uc3QgSWRlbnRpZmllciYgaWRlbnRpZmll
cikgY29uc3QKKyAgICAgICAgQUxXQVlTX0lOTElORSBjb25zdCBIYXNoRW50cnkqIGVudHJ5KEV4
ZWNTdGF0ZSogZXhlYywgUHJvcGVydHlOYW1lIGlkZW50aWZpZXIpIGNvbnN0CiAgICAgICAgIHsK
ICAgICAgICAgICAgIGluaXRpYWxpemVJZk5lZWRlZChleGVjKTsKICAgICAgICAgICAgIHJldHVy
biBlbnRyeShpZGVudGlmaWVyKTsKQEAgLTE5OSw3ICsxOTksNyBAQCBuYW1lc3BhY2UgSlNDIHsK
ICAgICAgICAgfQogCiAgICAgcHJpdmF0ZToKLSAgICAgICAgQUxXQVlTX0lOTElORSBjb25zdCBI
YXNoRW50cnkqIGVudHJ5KGNvbnN0IElkZW50aWZpZXImIGlkZW50aWZpZXIpIGNvbnN0CisgICAg
ICAgIEFMV0FZU19JTkxJTkUgY29uc3QgSGFzaEVudHJ5KiBlbnRyeShQcm9wZXJ0eU5hbWUgaWRl
bnRpZmllcikgY29uc3QKICAgICAgICAgewogICAgICAgICAgICAgQVNTRVJUKHRhYmxlKTsKIApA
QCAtMjIxLDcgKzIyMSw3IEBAIG5hbWVzcGFjZSBKU0MgewogICAgICAgICBKU19FWFBPUlRfUFJJ
VkFURSB2b2lkIGNyZWF0ZVRhYmxlKEpTR2xvYmFsRGF0YSopIGNvbnN0OwogICAgIH07CiAKLSAg
ICBKU19FWFBPUlRfUFJJVkFURSBib29sIHNldFVwU3RhdGljRnVuY3Rpb25TbG90KEV4ZWNTdGF0
ZSosIGNvbnN0IEhhc2hFbnRyeSosIEpTT2JqZWN0KiB0aGlzT2JqZWN0LCBjb25zdCBJZGVudGlm
aWVyJiBwcm9wZXJ0eU5hbWUsIFByb3BlcnR5U2xvdCYpOworICAgIEpTX0VYUE9SVF9QUklWQVRF
IGJvb2wgc2V0VXBTdGF0aWNGdW5jdGlvblNsb3QoRXhlY1N0YXRlKiwgY29uc3QgSGFzaEVudHJ5
KiwgSlNPYmplY3QqIHRoaXNPYmplY3QsIFByb3BlcnR5TmFtZSwgUHJvcGVydHlTbG90Jik7CiAK
ICAgICAvKioKICAgICAgKiBUaGlzIG1ldGhvZCBkb2VzIGl0IGFsbCAobG9va2luZyBpbiB0aGUg
aGFzaHRhYmxlLCBjaGVja2luZyBmb3IgZnVuY3Rpb24KQEAgLTIzMCw3ICsyMzAsNyBAQCBuYW1l
c3BhY2UgSlNDIHsKICAgICAgKiB1bmtub3duIHByb3BlcnR5KS4KICAgICAgKi8KICAgICB0ZW1w
bGF0ZSA8Y2xhc3MgVGhpc0ltcCwgY2xhc3MgUGFyZW50SW1wPgotICAgIGlubGluZSBib29sIGdl
dFN0YXRpY1Byb3BlcnR5U2xvdChFeGVjU3RhdGUqIGV4ZWMsIGNvbnN0IEhhc2hUYWJsZSogdGFi
bGUsIFRoaXNJbXAqIHRoaXNPYmosIGNvbnN0IElkZW50aWZpZXImIHByb3BlcnR5TmFtZSwgUHJv
cGVydHlTbG90JiBzbG90KQorICAgIGlubGluZSBib29sIGdldFN0YXRpY1Byb3BlcnR5U2xvdChF
eGVjU3RhdGUqIGV4ZWMsIGNvbnN0IEhhc2hUYWJsZSogdGFibGUsIFRoaXNJbXAqIHRoaXNPYmos
IFByb3BlcnR5TmFtZSBwcm9wZXJ0eU5hbWUsIFByb3BlcnR5U2xvdCYgc2xvdCkKICAgICB7CiAg
ICAgICAgIGNvbnN0IEhhc2hFbnRyeSogZW50cnkgPSB0YWJsZS0+ZW50cnkoZXhlYywgcHJvcGVy
dHlOYW1lKTsKIApAQCAtMjQ1LDcgKzI0NSw3IEBAIG5hbWVzcGFjZSBKU0MgewogICAgIH0KIAog
ICAgIHRlbXBsYXRlIDxjbGFzcyBUaGlzSW1wLCBjbGFzcyBQYXJlbnRJbXA+Ci0gICAgaW5saW5l
IGJvb2wgZ2V0U3RhdGljUHJvcGVydHlEZXNjcmlwdG9yKEV4ZWNTdGF0ZSogZXhlYywgY29uc3Qg
SGFzaFRhYmxlKiB0YWJsZSwgVGhpc0ltcCogdGhpc09iaiwgY29uc3QgSWRlbnRpZmllciYgcHJv
cGVydHlOYW1lLCBQcm9wZXJ0eURlc2NyaXB0b3ImIGRlc2NyaXB0b3IpCisgICAgaW5saW5lIGJv
b2wgZ2V0U3RhdGljUHJvcGVydHlEZXNjcmlwdG9yKEV4ZWNTdGF0ZSogZXhlYywgY29uc3QgSGFz
aFRhYmxlKiB0YWJsZSwgVGhpc0ltcCogdGhpc09iaiwgUHJvcGVydHlOYW1lIHByb3BlcnR5TmFt
ZSwgUHJvcGVydHlEZXNjcmlwdG9yJiBkZXNjcmlwdG9yKQogICAgIHsKICAgICAgICAgY29uc3Qg
SGFzaEVudHJ5KiBlbnRyeSA9IHRhYmxlLT5lbnRyeShleGVjLCBwcm9wZXJ0eU5hbWUpOwogICAg
ICAgICAKQEAgLTI3MSw3ICsyNzEsNyBAQCBuYW1lc3BhY2UgSlNDIHsKICAgICAgKiBhIGR1bW15
IGdldFZhbHVlUHJvcGVydHkuCiAgICAgICovCiAgICAgdGVtcGxhdGUgPGNsYXNzIFBhcmVudElt
cD4KLSAgICBpbmxpbmUgYm9vbCBnZXRTdGF0aWNGdW5jdGlvblNsb3QoRXhlY1N0YXRlKiBleGVj
LCBjb25zdCBIYXNoVGFibGUqIHRhYmxlLCBKU09iamVjdCogdGhpc09iaiwgY29uc3QgSWRlbnRp
ZmllciYgcHJvcGVydHlOYW1lLCBQcm9wZXJ0eVNsb3QmIHNsb3QpCisgICAgaW5saW5lIGJvb2wg
Z2V0U3RhdGljRnVuY3Rpb25TbG90KEV4ZWNTdGF0ZSogZXhlYywgY29uc3QgSGFzaFRhYmxlKiB0
YWJsZSwgSlNPYmplY3QqIHRoaXNPYmosIFByb3BlcnR5TmFtZSBwcm9wZXJ0eU5hbWUsIFByb3Bl
cnR5U2xvdCYgc2xvdCkKICAgICB7CiAgICAgICAgIGlmIChQYXJlbnRJbXA6OmdldE93blByb3Bl
cnR5U2xvdCh0aGlzT2JqLCBleGVjLCBwcm9wZXJ0eU5hbWUsIHNsb3QpKQogICAgICAgICAgICAg
cmV0dXJuIHRydWU7CkBAIC0yODksNyArMjg5LDcgQEAgbmFtZXNwYWNlIEpTQyB7CiAgICAgICog
YSBkdW1teSBnZXRWYWx1ZVByb3BlcnR5LgogICAgICAqLwogICAgIHRlbXBsYXRlIDxjbGFzcyBQ
YXJlbnRJbXA+Ci0gICAgaW5saW5lIGJvb2wgZ2V0U3RhdGljRnVuY3Rpb25EZXNjcmlwdG9yKEV4
ZWNTdGF0ZSogZXhlYywgY29uc3QgSGFzaFRhYmxlKiB0YWJsZSwgSlNPYmplY3QqIHRoaXNPYmos
IGNvbnN0IElkZW50aWZpZXImIHByb3BlcnR5TmFtZSwgUHJvcGVydHlEZXNjcmlwdG9yJiBkZXNj
cmlwdG9yKQorICAgIGlubGluZSBib29sIGdldFN0YXRpY0Z1bmN0aW9uRGVzY3JpcHRvcihFeGVj
U3RhdGUqIGV4ZWMsIGNvbnN0IEhhc2hUYWJsZSogdGFibGUsIEpTT2JqZWN0KiB0aGlzT2JqLCBQ
cm9wZXJ0eU5hbWUgcHJvcGVydHlOYW1lLCBQcm9wZXJ0eURlc2NyaXB0b3ImIGRlc2NyaXB0b3Ip
CiAgICAgewogICAgICAgICBpZiAoUGFyZW50SW1wOjpnZXRPd25Qcm9wZXJ0eURlc2NyaXB0b3Io
c3RhdGljX2Nhc3Q8UGFyZW50SW1wKj4odGhpc09iaiksIGV4ZWMsIHByb3BlcnR5TmFtZSwgZGVz
Y3JpcHRvcikpCiAgICAgICAgICAgICByZXR1cm4gdHJ1ZTsKQEAgLTMxMCw3ICszMTAsNyBAQCBu
YW1lc3BhY2UgSlNDIHsKICAgICAgKiBVc2luZyB0aGlzIGluc3RlYWQgb2YgZ2V0U3RhdGljUHJv
cGVydHlTbG90IHJlbW92ZXMgdGhlIG5lZWQgZm9yIGEgRnVuY0ltcCBjbGFzcy4KICAgICAgKi8K
ICAgICB0ZW1wbGF0ZSA8Y2xhc3MgVGhpc0ltcCwgY2xhc3MgUGFyZW50SW1wPgotICAgIGlubGlu
ZSBib29sIGdldFN0YXRpY1ZhbHVlU2xvdChFeGVjU3RhdGUqIGV4ZWMsIGNvbnN0IEhhc2hUYWJs
ZSogdGFibGUsIFRoaXNJbXAqIHRoaXNPYmosIGNvbnN0IElkZW50aWZpZXImIHByb3BlcnR5TmFt
ZSwgUHJvcGVydHlTbG90JiBzbG90KQorICAgIGlubGluZSBib29sIGdldFN0YXRpY1ZhbHVlU2xv
dChFeGVjU3RhdGUqIGV4ZWMsIGNvbnN0IEhhc2hUYWJsZSogdGFibGUsIFRoaXNJbXAqIHRoaXNP
YmosIFByb3BlcnR5TmFtZSBwcm9wZXJ0eU5hbWUsIFByb3BlcnR5U2xvdCYgc2xvdCkKICAgICB7
CiAgICAgICAgIGNvbnN0IEhhc2hFbnRyeSogZW50cnkgPSB0YWJsZS0+ZW50cnkoZXhlYywgcHJv
cGVydHlOYW1lKTsKIApAQCAtMzI4LDcgKzMyOCw3IEBAIG5hbWVzcGFjZSBKU0MgewogICAgICAq
IFVzaW5nIHRoaXMgaW5zdGVhZCBvZiBnZXRTdGF0aWNQcm9wZXJ0eURlc2NyaXB0b3IgcmVtb3Zl
cyB0aGUgbmVlZCBmb3IgYSBGdW5jSW1wIGNsYXNzLgogICAgICAqLwogICAgIHRlbXBsYXRlIDxj
bGFzcyBUaGlzSW1wLCBjbGFzcyBQYXJlbnRJbXA+Ci0gICAgaW5saW5lIGJvb2wgZ2V0U3RhdGlj
VmFsdWVEZXNjcmlwdG9yKEV4ZWNTdGF0ZSogZXhlYywgY29uc3QgSGFzaFRhYmxlKiB0YWJsZSwg
VGhpc0ltcCogdGhpc09iaiwgY29uc3QgSWRlbnRpZmllciYgcHJvcGVydHlOYW1lLCBQcm9wZXJ0
eURlc2NyaXB0b3ImIGRlc2NyaXB0b3IpCisgICAgaW5saW5lIGJvb2wgZ2V0U3RhdGljVmFsdWVE
ZXNjcmlwdG9yKEV4ZWNTdGF0ZSogZXhlYywgY29uc3QgSGFzaFRhYmxlKiB0YWJsZSwgVGhpc0lt
cCogdGhpc09iaiwgUHJvcGVydHlOYW1lIHByb3BlcnR5TmFtZSwgUHJvcGVydHlEZXNjcmlwdG9y
JiBkZXNjcmlwdG9yKQogICAgIHsKICAgICAgICAgY29uc3QgSGFzaEVudHJ5KiBlbnRyeSA9IHRh
YmxlLT5lbnRyeShleGVjLCBwcm9wZXJ0eU5hbWUpOwogICAgICAgICAKQEAgLTM0OCw3ICszNDgs
NyBAQCBuYW1lc3BhY2UgSlNDIHsKICAgICAgKiBpcyBmb3VuZCBpdCBzZXRzIHRoZSB2YWx1ZSBh
bmQgcmV0dXJucyB0cnVlLCBlbHNlIGl0IHJldHVybnMgZmFsc2UuCiAgICAgICovCiAgICAgdGVt
cGxhdGUgPGNsYXNzIFRoaXNJbXA+Ci0gICAgaW5saW5lIGJvb2wgbG9va3VwUHV0KEV4ZWNTdGF0
ZSogZXhlYywgY29uc3QgSWRlbnRpZmllciYgcHJvcGVydHlOYW1lLCBKU1ZhbHVlIHZhbHVlLCBj
b25zdCBIYXNoVGFibGUqIHRhYmxlLCBUaGlzSW1wKiB0aGlzT2JqLCBib29sIHNob3VsZFRocm93
ID0gZmFsc2UpCisgICAgaW5saW5lIGJvb2wgbG9va3VwUHV0KEV4ZWNTdGF0ZSogZXhlYywgUHJv
cGVydHlOYW1lIHByb3BlcnR5TmFtZSwgSlNWYWx1ZSB2YWx1ZSwgY29uc3QgSGFzaFRhYmxlKiB0
YWJsZSwgVGhpc0ltcCogdGhpc09iaiwgYm9vbCBzaG91bGRUaHJvdyA9IGZhbHNlKQogICAgIHsK
ICAgICAgICAgY29uc3QgSGFzaEVudHJ5KiBlbnRyeSA9IHRhYmxlLT5lbnRyeShleGVjLCBwcm9w
ZXJ0eU5hbWUpOwogICAgICAgICAKQEAgLTM3Myw3ICszNzMsNyBAQCBuYW1lc3BhY2UgSlNDIHsK
ICAgICAgKiB0aGVuIGl0IGNhbGxzIHB1dCgpIG9uIHRoZSBQYXJlbnRJbXAgY2xhc3MuCiAgICAg
ICovCiAgICAgdGVtcGxhdGUgPGNsYXNzIFRoaXNJbXAsIGNsYXNzIFBhcmVudEltcD4KLSAgICBp
bmxpbmUgdm9pZCBsb29rdXBQdXQoRXhlY1N0YXRlKiBleGVjLCBjb25zdCBJZGVudGlmaWVyJiBw
cm9wZXJ0eU5hbWUsIEpTVmFsdWUgdmFsdWUsIGNvbnN0IEhhc2hUYWJsZSogdGFibGUsIFRoaXNJ
bXAqIHRoaXNPYmosIFB1dFByb3BlcnR5U2xvdCYgc2xvdCkKKyAgICBpbmxpbmUgdm9pZCBsb29r
dXBQdXQoRXhlY1N0YXRlKiBleGVjLCBQcm9wZXJ0eU5hbWUgcHJvcGVydHlOYW1lLCBKU1ZhbHVl
IHZhbHVlLCBjb25zdCBIYXNoVGFibGUqIHRhYmxlLCBUaGlzSW1wKiB0aGlzT2JqLCBQdXRQcm9w
ZXJ0eVNsb3QmIHNsb3QpCiAgICAgewogICAgICAgICBpZiAoIWxvb2t1cFB1dDxUaGlzSW1wPihl
eGVjLCBwcm9wZXJ0eU5hbWUsIHZhbHVlLCB0YWJsZSwgdGhpc09iaiwgc2xvdC5pc1N0cmljdE1v
ZGUoKSkpCiAgICAgICAgICAgICBQYXJlbnRJbXA6OnB1dCh0aGlzT2JqLCBleGVjLCBwcm9wZXJ0
eU5hbWUsIHZhbHVlLCBzbG90KTsgLy8gbm90IGZvdW5kOiBmb3J3YXJkIHRvIHBhcmVudApJbmRl
eDogU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvTWF0aE9iamVjdC5jcHAKPT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PQotLS0gU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvTWF0aE9iamVjdC5jcHAJKHJldmlz
aW9uIDExNjY2NykKKysrIFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL01hdGhPYmplY3Qu
Y3BwCSh3b3JraW5nIGNvcHkpCkBAIC0xMDYsMTIgKzEwNiwxMiBAQCB2b2lkIE1hdGhPYmplY3Q6
OmZpbmlzaENyZWF0aW9uKEV4ZWNTdGF0CiAgICAgcHV0RGlyZWN0V2l0aG91dFRyYW5zaXRpb24o
ZXhlYy0+Z2xvYmFsRGF0YSgpLCBJZGVudGlmaWVyKGV4ZWMsICJTUVJUMiIpLCBqc051bWJlcihz
cXJ0KDIuMCkpLCBEb250RGVsZXRlIHwgRG9udEVudW0gfCBSZWFkT25seSk7CiB9CiAKLWJvb2wg
TWF0aE9iamVjdDo6Z2V0T3duUHJvcGVydHlTbG90KEpTQ2VsbCogY2VsbCwgRXhlY1N0YXRlKiBl
eGVjLCBjb25zdCBJZGVudGlmaWVyJiBwcm9wZXJ0eU5hbWUsIFByb3BlcnR5U2xvdCAmc2xvdCkK
K2Jvb2wgTWF0aE9iamVjdDo6Z2V0T3duUHJvcGVydHlTbG90KEpTQ2VsbCogY2VsbCwgRXhlY1N0
YXRlKiBleGVjLCBQcm9wZXJ0eU5hbWUgcHJvcGVydHlOYW1lLCBQcm9wZXJ0eVNsb3QgJnNsb3Qp
CiB7CiAgICAgcmV0dXJuIGdldFN0YXRpY0Z1bmN0aW9uU2xvdDxKU09iamVjdD4oZXhlYywgRXhl
Y1N0YXRlOjptYXRoVGFibGUoZXhlYyksIGpzQ2FzdDxNYXRoT2JqZWN0Kj4oY2VsbCksIHByb3Bl
cnR5TmFtZSwgc2xvdCk7CiB9CiAKLWJvb2wgTWF0aE9iamVjdDo6Z2V0T3duUHJvcGVydHlEZXNj
cmlwdG9yKEpTT2JqZWN0KiBvYmplY3QsIEV4ZWNTdGF0ZSogZXhlYywgY29uc3QgSWRlbnRpZmll
ciYgcHJvcGVydHlOYW1lLCBQcm9wZXJ0eURlc2NyaXB0b3ImIGRlc2NyaXB0b3IpCitib29sIE1h
dGhPYmplY3Q6OmdldE93blByb3BlcnR5RGVzY3JpcHRvcihKU09iamVjdCogb2JqZWN0LCBFeGVj
U3RhdGUqIGV4ZWMsIFByb3BlcnR5TmFtZSBwcm9wZXJ0eU5hbWUsIFByb3BlcnR5RGVzY3JpcHRv
ciYgZGVzY3JpcHRvcikKIHsKICAgICByZXR1cm4gZ2V0U3RhdGljRnVuY3Rpb25EZXNjcmlwdG9y
PEpTT2JqZWN0PihleGVjLCBFeGVjU3RhdGU6Om1hdGhUYWJsZShleGVjKSwganNDYXN0PE1hdGhP
YmplY3QqPihvYmplY3QpLCBwcm9wZXJ0eU5hbWUsIGRlc2NyaXB0b3IpOwogfQpJbmRleDogU291
cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvTWF0aE9iamVjdC5oCj09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNv
dXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL01hdGhPYmplY3QuaAkocmV2aXNpb24gMTE2NjY3
KQorKysgU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvTWF0aE9iamVjdC5oCSh3b3JraW5n
IGNvcHkpCkBAIC0zOCw4ICszOCw4IEBAIG5hbWVzcGFjZSBKU0MgewogICAgICAgICAgICAgb2Jq
ZWN0LT5maW5pc2hDcmVhdGlvbihleGVjLCBnbG9iYWxPYmplY3QpOwogICAgICAgICAgICAgcmV0
dXJuIG9iamVjdDsKICAgICAgICAgfQotICAgICAgICBzdGF0aWMgYm9vbCBnZXRPd25Qcm9wZXJ0
eVNsb3QoSlNDZWxsKiwgRXhlY1N0YXRlKiwgY29uc3QgSWRlbnRpZmllciYsIFByb3BlcnR5U2xv
dCYpOwotICAgICAgICBzdGF0aWMgYm9vbCBnZXRPd25Qcm9wZXJ0eURlc2NyaXB0b3IoSlNPYmpl
Y3QqLCBFeGVjU3RhdGUqLCBjb25zdCBJZGVudGlmaWVyJiwgUHJvcGVydHlEZXNjcmlwdG9yJik7
CisgICAgICAgIHN0YXRpYyBib29sIGdldE93blByb3BlcnR5U2xvdChKU0NlbGwqLCBFeGVjU3Rh
dGUqLCBQcm9wZXJ0eU5hbWUsIFByb3BlcnR5U2xvdCYpOworICAgICAgICBzdGF0aWMgYm9vbCBn
ZXRPd25Qcm9wZXJ0eURlc2NyaXB0b3IoSlNPYmplY3QqLCBFeGVjU3RhdGUqLCBQcm9wZXJ0eU5h
bWUsIFByb3BlcnR5RGVzY3JpcHRvciYpOwogCiAgICAgICAgIHN0YXRpYyBjb25zdCBDbGFzc0lu
Zm8gc19pbmZvOwogCkluZGV4OiBTb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9OYXRpdmVF
cnJvckNvbnN0cnVjdG9yLmgKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL0phdmFTY3JpcHRDb3JlL3J1
bnRpbWUvTmF0aXZlRXJyb3JDb25zdHJ1Y3Rvci5oCShyZXZpc2lvbiAxMTY2NjcpCisrKyBTb3Vy
Y2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9OYXRpdmVFcnJvckNvbnN0cnVjdG9yLmgJKHdvcmtp
bmcgY29weSkKQEAgLTUzLDcgKzUzLDcgQEAgbmFtZXNwYWNlIEpTQyB7CiAgICAgcHJvdGVjdGVk
OgogICAgICAgICB2b2lkIGZpbmlzaENyZWF0aW9uKEV4ZWNTdGF0ZSogZXhlYywgSlNHbG9iYWxP
YmplY3QqIGdsb2JhbE9iamVjdCwgU3RydWN0dXJlKiBwcm90b3R5cGVTdHJ1Y3R1cmUsIGNvbnN0
IFVTdHJpbmcmIG5hbWUpCiAgICAgICAgIHsKLSAgICAgICAgICAgIEJhc2U6OmZpbmlzaENyZWF0
aW9uKGV4ZWMtPmdsb2JhbERhdGEoKSwgSWRlbnRpZmllcihleGVjLCBuYW1lKSk7CisgICAgICAg
ICAgICBCYXNlOjpmaW5pc2hDcmVhdGlvbihleGVjLT5nbG9iYWxEYXRhKCksIG5hbWUpOwogICAg
ICAgICAgICAgQVNTRVJUKGluaGVyaXRzKCZzX2luZm8pKTsKIAogICAgICAgICAgICAgTmF0aXZl
RXJyb3JQcm90b3R5cGUqIHByb3RvdHlwZSA9IE5hdGl2ZUVycm9yUHJvdG90eXBlOjpjcmVhdGUo
ZXhlYywgZ2xvYmFsT2JqZWN0LCBwcm90b3R5cGVTdHJ1Y3R1cmUsIG5hbWUsIHRoaXMpOwpJbmRl
eDogU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvTnVtYmVyQ29uc3RydWN0b3IuY3BwCj09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT0KLS0tIFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL051bWJlckNvbnN0cnVj
dG9yLmNwcAkocmV2aXNpb24gMTE2NjY3KQorKysgU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRp
bWUvTnVtYmVyQ29uc3RydWN0b3IuY3BwCSh3b3JraW5nIGNvcHkpCkBAIC0zMCwxMSArMzAsMTEg
QEAgbmFtZXNwYWNlIEpTQyB7CiAKIEFTU0VSVF9DTEFTU19GSVRTX0lOX0NFTEwoTnVtYmVyQ29u
c3RydWN0b3IpOwogCi1zdGF0aWMgSlNWYWx1ZSBudW1iZXJDb25zdHJ1Y3Rvck5hTlZhbHVlKEV4
ZWNTdGF0ZSosIEpTVmFsdWUsIGNvbnN0IElkZW50aWZpZXImKTsKLXN0YXRpYyBKU1ZhbHVlIG51
bWJlckNvbnN0cnVjdG9yTmVnSW5maW5pdHkoRXhlY1N0YXRlKiwgSlNWYWx1ZSwgY29uc3QgSWRl
bnRpZmllciYpOwotc3RhdGljIEpTVmFsdWUgbnVtYmVyQ29uc3RydWN0b3JQb3NJbmZpbml0eShF
eGVjU3RhdGUqLCBKU1ZhbHVlLCBjb25zdCBJZGVudGlmaWVyJik7Ci1zdGF0aWMgSlNWYWx1ZSBu
dW1iZXJDb25zdHJ1Y3Rvck1heFZhbHVlKEV4ZWNTdGF0ZSosIEpTVmFsdWUsIGNvbnN0IElkZW50
aWZpZXImKTsKLXN0YXRpYyBKU1ZhbHVlIG51bWJlckNvbnN0cnVjdG9yTWluVmFsdWUoRXhlY1N0
YXRlKiwgSlNWYWx1ZSwgY29uc3QgSWRlbnRpZmllciYpOworc3RhdGljIEpTVmFsdWUgbnVtYmVy
Q29uc3RydWN0b3JOYU5WYWx1ZShFeGVjU3RhdGUqLCBKU1ZhbHVlLCBQcm9wZXJ0eU5hbWUpOwor
c3RhdGljIEpTVmFsdWUgbnVtYmVyQ29uc3RydWN0b3JOZWdJbmZpbml0eShFeGVjU3RhdGUqLCBK
U1ZhbHVlLCBQcm9wZXJ0eU5hbWUpOworc3RhdGljIEpTVmFsdWUgbnVtYmVyQ29uc3RydWN0b3JQ
b3NJbmZpbml0eShFeGVjU3RhdGUqLCBKU1ZhbHVlLCBQcm9wZXJ0eU5hbWUpOworc3RhdGljIEpT
VmFsdWUgbnVtYmVyQ29uc3RydWN0b3JNYXhWYWx1ZShFeGVjU3RhdGUqLCBKU1ZhbHVlLCBQcm9w
ZXJ0eU5hbWUpOworc3RhdGljIEpTVmFsdWUgbnVtYmVyQ29uc3RydWN0b3JNaW5WYWx1ZShFeGVj
U3RhdGUqLCBKU1ZhbHVlLCBQcm9wZXJ0eU5hbWUpOwogCiB9IC8vIG5hbWVzcGFjZSBKU0MKIApA
QCAtNjMsNyArNjMsNyBAQCBOdW1iZXJDb25zdHJ1Y3Rvcjo6TnVtYmVyQ29uc3RydWN0b3IoSlNH
CiAKIHZvaWQgTnVtYmVyQ29uc3RydWN0b3I6OmZpbmlzaENyZWF0aW9uKEV4ZWNTdGF0ZSogZXhl
YywgTnVtYmVyUHJvdG90eXBlKiBudW1iZXJQcm90b3R5cGUpCiB7Ci0gICAgQmFzZTo6ZmluaXNo
Q3JlYXRpb24oZXhlYy0+Z2xvYmFsRGF0YSgpLCBJZGVudGlmaWVyKGV4ZWMsIG51bWJlclByb3Rv
dHlwZS0+c19pbmZvLmNsYXNzTmFtZSkpOworICAgIEJhc2U6OmZpbmlzaENyZWF0aW9uKGV4ZWMt
Pmdsb2JhbERhdGEoKSwgbnVtYmVyUHJvdG90eXBlLT5zX2luZm8uY2xhc3NOYW1lKTsKICAgICBB
U1NFUlQoaW5oZXJpdHMoJnNfaW5mbykpOwogCiAgICAgLy8gTnVtYmVyLlByb3RvdHlwZQpAQCAt
NzMsNDIgKzczLDQyIEBAIHZvaWQgTnVtYmVyQ29uc3RydWN0b3I6OmZpbmlzaENyZWF0aW9uKEUK
ICAgICBwdXREaXJlY3RXaXRob3V0VHJhbnNpdGlvbihleGVjLT5nbG9iYWxEYXRhKCksIGV4ZWMt
PnByb3BlcnR5TmFtZXMoKS5sZW5ndGgsIGpzTnVtYmVyKDEpLCBSZWFkT25seSB8IERvbnRFbnVt
IHwgRG9udERlbGV0ZSk7CiB9CiAKLWJvb2wgTnVtYmVyQ29uc3RydWN0b3I6OmdldE93blByb3Bl
cnR5U2xvdChKU0NlbGwqIGNlbGwsIEV4ZWNTdGF0ZSogZXhlYywgY29uc3QgSWRlbnRpZmllciYg
cHJvcGVydHlOYW1lLCBQcm9wZXJ0eVNsb3QmIHNsb3QpCitib29sIE51bWJlckNvbnN0cnVjdG9y
OjpnZXRPd25Qcm9wZXJ0eVNsb3QoSlNDZWxsKiBjZWxsLCBFeGVjU3RhdGUqIGV4ZWMsIFByb3Bl
cnR5TmFtZSBwcm9wZXJ0eU5hbWUsIFByb3BlcnR5U2xvdCYgc2xvdCkKIHsKICAgICByZXR1cm4g
Z2V0U3RhdGljVmFsdWVTbG90PE51bWJlckNvbnN0cnVjdG9yLCBJbnRlcm5hbEZ1bmN0aW9uPihl
eGVjLCBFeGVjU3RhdGU6Om51bWJlckNvbnN0cnVjdG9yVGFibGUoZXhlYyksIGpzQ2FzdDxOdW1i
ZXJDb25zdHJ1Y3Rvcio+KGNlbGwpLCBwcm9wZXJ0eU5hbWUsIHNsb3QpOwogfQogCi1ib29sIE51
bWJlckNvbnN0cnVjdG9yOjpnZXRPd25Qcm9wZXJ0eURlc2NyaXB0b3IoSlNPYmplY3QqIG9iamVj
dCwgRXhlY1N0YXRlKiBleGVjLCBjb25zdCBJZGVudGlmaWVyJiBwcm9wZXJ0eU5hbWUsIFByb3Bl
cnR5RGVzY3JpcHRvciYgZGVzY3JpcHRvcikKK2Jvb2wgTnVtYmVyQ29uc3RydWN0b3I6OmdldE93
blByb3BlcnR5RGVzY3JpcHRvcihKU09iamVjdCogb2JqZWN0LCBFeGVjU3RhdGUqIGV4ZWMsIFBy
b3BlcnR5TmFtZSBwcm9wZXJ0eU5hbWUsIFByb3BlcnR5RGVzY3JpcHRvciYgZGVzY3JpcHRvcikK
IHsKICAgICByZXR1cm4gZ2V0U3RhdGljVmFsdWVEZXNjcmlwdG9yPE51bWJlckNvbnN0cnVjdG9y
LCBJbnRlcm5hbEZ1bmN0aW9uPihleGVjLCBFeGVjU3RhdGU6Om51bWJlckNvbnN0cnVjdG9yVGFi
bGUoZXhlYyksIGpzQ2FzdDxOdW1iZXJDb25zdHJ1Y3Rvcio+KG9iamVjdCksIHByb3BlcnR5TmFt
ZSwgZGVzY3JpcHRvcik7CiB9CiAKLXZvaWQgTnVtYmVyQ29uc3RydWN0b3I6OnB1dChKU0NlbGwq
IGNlbGwsIEV4ZWNTdGF0ZSogZXhlYywgY29uc3QgSWRlbnRpZmllciYgcHJvcGVydHlOYW1lLCBK
U1ZhbHVlIHZhbHVlLCBQdXRQcm9wZXJ0eVNsb3QmIHNsb3QpCit2b2lkIE51bWJlckNvbnN0cnVj
dG9yOjpwdXQoSlNDZWxsKiBjZWxsLCBFeGVjU3RhdGUqIGV4ZWMsIFByb3BlcnR5TmFtZSBwcm9w
ZXJ0eU5hbWUsIEpTVmFsdWUgdmFsdWUsIFB1dFByb3BlcnR5U2xvdCYgc2xvdCkKIHsKICAgICBs
b29rdXBQdXQ8TnVtYmVyQ29uc3RydWN0b3IsIEludGVybmFsRnVuY3Rpb24+KGV4ZWMsIHByb3Bl
cnR5TmFtZSwgdmFsdWUsIEV4ZWNTdGF0ZTo6bnVtYmVyQ29uc3RydWN0b3JUYWJsZShleGVjKSwg
anNDYXN0PE51bWJlckNvbnN0cnVjdG9yKj4oY2VsbCksIHNsb3QpOwogfQogCi1zdGF0aWMgSlNW
YWx1ZSBudW1iZXJDb25zdHJ1Y3Rvck5hTlZhbHVlKEV4ZWNTdGF0ZSosIEpTVmFsdWUsIGNvbnN0
IElkZW50aWZpZXImKQorc3RhdGljIEpTVmFsdWUgbnVtYmVyQ29uc3RydWN0b3JOYU5WYWx1ZShF
eGVjU3RhdGUqLCBKU1ZhbHVlLCBQcm9wZXJ0eU5hbWUpCiB7CiAgICAgcmV0dXJuIGpzTmFOKCk7
CiB9CiAKLXN0YXRpYyBKU1ZhbHVlIG51bWJlckNvbnN0cnVjdG9yTmVnSW5maW5pdHkoRXhlY1N0
YXRlKiwgSlNWYWx1ZSwgY29uc3QgSWRlbnRpZmllciYpCitzdGF0aWMgSlNWYWx1ZSBudW1iZXJD
b25zdHJ1Y3Rvck5lZ0luZmluaXR5KEV4ZWNTdGF0ZSosIEpTVmFsdWUsIFByb3BlcnR5TmFtZSkK
IHsKICAgICByZXR1cm4ganNOdW1iZXIoLXN0ZDo6bnVtZXJpY19saW1pdHM8ZG91YmxlPjo6aW5m
aW5pdHkoKSk7CiB9CiAKLXN0YXRpYyBKU1ZhbHVlIG51bWJlckNvbnN0cnVjdG9yUG9zSW5maW5p
dHkoRXhlY1N0YXRlKiwgSlNWYWx1ZSwgY29uc3QgSWRlbnRpZmllciYpCitzdGF0aWMgSlNWYWx1
ZSBudW1iZXJDb25zdHJ1Y3RvclBvc0luZmluaXR5KEV4ZWNTdGF0ZSosIEpTVmFsdWUsIFByb3Bl
cnR5TmFtZSkKIHsKICAgICByZXR1cm4ganNOdW1iZXIoc3RkOjpudW1lcmljX2xpbWl0czxkb3Vi
bGU+OjppbmZpbml0eSgpKTsKIH0KIAotc3RhdGljIEpTVmFsdWUgbnVtYmVyQ29uc3RydWN0b3JN
YXhWYWx1ZShFeGVjU3RhdGUqLCBKU1ZhbHVlLCBjb25zdCBJZGVudGlmaWVyJikKK3N0YXRpYyBK
U1ZhbHVlIG51bWJlckNvbnN0cnVjdG9yTWF4VmFsdWUoRXhlY1N0YXRlKiwgSlNWYWx1ZSwgUHJv
cGVydHlOYW1lKQogewogICAgIHJldHVybiBqc051bWJlcigxLjc5NzY5MzEzNDg2MjMxNTdFKzMw
OCk7CiB9CiAKLXN0YXRpYyBKU1ZhbHVlIG51bWJlckNvbnN0cnVjdG9yTWluVmFsdWUoRXhlY1N0
YXRlKiwgSlNWYWx1ZSwgY29uc3QgSWRlbnRpZmllciYpCitzdGF0aWMgSlNWYWx1ZSBudW1iZXJD
b25zdHJ1Y3Rvck1pblZhbHVlKEV4ZWNTdGF0ZSosIEpTVmFsdWUsIFByb3BlcnR5TmFtZSkKIHsK
ICAgICByZXR1cm4ganNOdW1iZXIoNUUtMzI0KTsKIH0KSW5kZXg6IFNvdXJjZS9KYXZhU2NyaXB0
Q29yZS9ydW50aW1lL051bWJlckNvbnN0cnVjdG9yLmgKPT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL0ph
dmFTY3JpcHRDb3JlL3J1bnRpbWUvTnVtYmVyQ29uc3RydWN0b3IuaAkocmV2aXNpb24gMTE2NjY3
KQorKysgU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvTnVtYmVyQ29uc3RydWN0b3IuaAko
d29ya2luZyBjb3B5KQpAQCAtMzgsMTAgKzM4LDEwIEBAIG5hbWVzcGFjZSBKU0MgewogICAgICAg
ICAgICAgcmV0dXJuIGNvbnN0cnVjdG9yOwogICAgICAgICB9CiAKLSAgICAgICAgc3RhdGljIHZv
aWQgcHV0KEpTQ2VsbCosIEV4ZWNTdGF0ZSosIGNvbnN0IElkZW50aWZpZXImIHByb3BlcnR5TmFt
ZSwgSlNWYWx1ZSwgUHV0UHJvcGVydHlTbG90Jik7CisgICAgICAgIHN0YXRpYyB2b2lkIHB1dChK
U0NlbGwqLCBFeGVjU3RhdGUqLCBQcm9wZXJ0eU5hbWUsIEpTVmFsdWUsIFB1dFByb3BlcnR5U2xv
dCYpOwogCi0gICAgICAgIHN0YXRpYyBib29sIGdldE93blByb3BlcnR5U2xvdChKU0NlbGwqLCBF
eGVjU3RhdGUqLCBjb25zdCBJZGVudGlmaWVyJiwgUHJvcGVydHlTbG90Jik7Ci0gICAgICAgIHN0
YXRpYyBib29sIGdldE93blByb3BlcnR5RGVzY3JpcHRvcihKU09iamVjdCosIEV4ZWNTdGF0ZSos
IGNvbnN0IElkZW50aWZpZXImLCBQcm9wZXJ0eURlc2NyaXB0b3ImKTsKKyAgICAgICAgc3RhdGlj
IGJvb2wgZ2V0T3duUHJvcGVydHlTbG90KEpTQ2VsbCosIEV4ZWNTdGF0ZSosIFByb3BlcnR5TmFt
ZSwgUHJvcGVydHlTbG90Jik7CisgICAgICAgIHN0YXRpYyBib29sIGdldE93blByb3BlcnR5RGVz
Y3JpcHRvcihKU09iamVjdCosIEV4ZWNTdGF0ZSosIFByb3BlcnR5TmFtZSwgUHJvcGVydHlEZXNj
cmlwdG9yJik7CiAgICAgICAgIEpTVmFsdWUgZ2V0VmFsdWVQcm9wZXJ0eShFeGVjU3RhdGUqLCBp
bnQgdG9rZW4pIGNvbnN0OwogCiAgICAgICAgIHN0YXRpYyBjb25zdCBDbGFzc0luZm8gc19pbmZv
OwpJbmRleDogU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvTnVtYmVyUHJvdG90eXBlLmNw
cAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09Ci0tLSBTb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9OdW1iZXJQcm90
b3R5cGUuY3BwCShyZXZpc2lvbiAxMTY2NjcpCisrKyBTb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVu
dGltZS9OdW1iZXJQcm90b3R5cGUuY3BwCSh3b3JraW5nIGNvcHkpCkBAIC04NCwxMiArODQsMTIg
QEAgdm9pZCBOdW1iZXJQcm90b3R5cGU6OmZpbmlzaENyZWF0aW9uKEV4ZQogICAgIEFTU0VSVChp
bmhlcml0cygmc19pbmZvKSk7CiB9CiAKLWJvb2wgTnVtYmVyUHJvdG90eXBlOjpnZXRPd25Qcm9w
ZXJ0eVNsb3QoSlNDZWxsKiBjZWxsLCBFeGVjU3RhdGUqIGV4ZWMsIGNvbnN0IElkZW50aWZpZXIm
IHByb3BlcnR5TmFtZSwgUHJvcGVydHlTbG90ICZzbG90KQorYm9vbCBOdW1iZXJQcm90b3R5cGU6
OmdldE93blByb3BlcnR5U2xvdChKU0NlbGwqIGNlbGwsIEV4ZWNTdGF0ZSogZXhlYywgUHJvcGVy
dHlOYW1lIHByb3BlcnR5TmFtZSwgUHJvcGVydHlTbG90ICZzbG90KQogewogICAgIHJldHVybiBn
ZXRTdGF0aWNGdW5jdGlvblNsb3Q8TnVtYmVyT2JqZWN0PihleGVjLCBFeGVjU3RhdGU6Om51bWJl
clByb3RvdHlwZVRhYmxlKGV4ZWMpLCBqc0Nhc3Q8TnVtYmVyUHJvdG90eXBlKj4oY2VsbCksIHBy
b3BlcnR5TmFtZSwgc2xvdCk7CiB9CiAKLWJvb2wgTnVtYmVyUHJvdG90eXBlOjpnZXRPd25Qcm9w
ZXJ0eURlc2NyaXB0b3IoSlNPYmplY3QqIG9iamVjdCwgRXhlY1N0YXRlKiBleGVjLCBjb25zdCBJ
ZGVudGlmaWVyJiBwcm9wZXJ0eU5hbWUsIFByb3BlcnR5RGVzY3JpcHRvciYgZGVzY3JpcHRvcikK
K2Jvb2wgTnVtYmVyUHJvdG90eXBlOjpnZXRPd25Qcm9wZXJ0eURlc2NyaXB0b3IoSlNPYmplY3Qq
IG9iamVjdCwgRXhlY1N0YXRlKiBleGVjLCBQcm9wZXJ0eU5hbWUgcHJvcGVydHlOYW1lLCBQcm9w
ZXJ0eURlc2NyaXB0b3ImIGRlc2NyaXB0b3IpCiB7CiAgICAgcmV0dXJuIGdldFN0YXRpY0Z1bmN0
aW9uRGVzY3JpcHRvcjxOdW1iZXJPYmplY3Q+KGV4ZWMsIEV4ZWNTdGF0ZTo6bnVtYmVyUHJvdG90
eXBlVGFibGUoZXhlYyksIGpzQ2FzdDxOdW1iZXJQcm90b3R5cGUqPihvYmplY3QpLCBwcm9wZXJ0
eU5hbWUsIGRlc2NyaXB0b3IpOwogfQpJbmRleDogU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRp
bWUvTnVtYmVyUHJvdG90eXBlLmgKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL0phdmFTY3JpcHRDb3Jl
L3J1bnRpbWUvTnVtYmVyUHJvdG90eXBlLmgJKHJldmlzaW9uIDExNjY2NykKKysrIFNvdXJjZS9K
YXZhU2NyaXB0Q29yZS9ydW50aW1lL051bWJlclByb3RvdHlwZS5oCSh3b3JraW5nIGNvcHkpCkBA
IC00OSw4ICs0OSw4IEBAIG5hbWVzcGFjZSBKU0MgewogCiAgICAgcHJpdmF0ZToKICAgICAgICAg
TnVtYmVyUHJvdG90eXBlKEV4ZWNTdGF0ZSosIFN0cnVjdHVyZSopOwotICAgICAgICBzdGF0aWMg
Ym9vbCBnZXRPd25Qcm9wZXJ0eVNsb3QoSlNDZWxsKiwgRXhlY1N0YXRlKiwgY29uc3QgSWRlbnRp
ZmllciYsIFByb3BlcnR5U2xvdCYpOwotICAgICAgICBzdGF0aWMgYm9vbCBnZXRPd25Qcm9wZXJ0
eURlc2NyaXB0b3IoSlNPYmplY3QqLCBFeGVjU3RhdGUqLCBjb25zdCBJZGVudGlmaWVyJiwgUHJv
cGVydHlEZXNjcmlwdG9yJik7CisgICAgICAgIHN0YXRpYyBib29sIGdldE93blByb3BlcnR5U2xv
dChKU0NlbGwqLCBFeGVjU3RhdGUqLCBQcm9wZXJ0eU5hbWUsIFByb3BlcnR5U2xvdCYpOworICAg
ICAgICBzdGF0aWMgYm9vbCBnZXRPd25Qcm9wZXJ0eURlc2NyaXB0b3IoSlNPYmplY3QqLCBFeGVj
U3RhdGUqLCBQcm9wZXJ0eU5hbWUsIFByb3BlcnR5RGVzY3JpcHRvciYpOwogICAgIH07CiAKIH0g
Ly8gbmFtZXNwYWNlIEpTQwpJbmRleDogU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvT2Jq
ZWN0Q29uc3RydWN0b3IuY3BwCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9y
dW50aW1lL09iamVjdENvbnN0cnVjdG9yLmNwcAkocmV2aXNpb24gMTE2NjY3KQorKysgU291cmNl
L0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvT2JqZWN0Q29uc3RydWN0b3IuY3BwCSh3b3JraW5nIGNv
cHkpCkBAIC04NCwxOSArODQsMTkgQEAgT2JqZWN0Q29uc3RydWN0b3I6Ok9iamVjdENvbnN0cnVj
dG9yKEpTRwogCiB2b2lkIE9iamVjdENvbnN0cnVjdG9yOjpmaW5pc2hDcmVhdGlvbihFeGVjU3Rh
dGUqIGV4ZWMsIE9iamVjdFByb3RvdHlwZSogb2JqZWN0UHJvdG90eXBlKQogewotICAgIEJhc2U6
OmZpbmlzaENyZWF0aW9uKGV4ZWMtPmdsb2JhbERhdGEoKSwgSWRlbnRpZmllcihleGVjLCAiT2Jq
ZWN0IikpOworICAgIEJhc2U6OmZpbmlzaENyZWF0aW9uKGV4ZWMtPmdsb2JhbERhdGEoKSwgSWRl
bnRpZmllcihleGVjLCAiT2JqZWN0IikudXN0cmluZygpKTsKICAgICAvLyBFQ01BIDE1LjIuMy4x
CiAgICAgcHV0RGlyZWN0V2l0aG91dFRyYW5zaXRpb24oZXhlYy0+Z2xvYmFsRGF0YSgpLCBleGVj
LT5wcm9wZXJ0eU5hbWVzKCkucHJvdG90eXBlLCBvYmplY3RQcm90b3R5cGUsIERvbnRFbnVtIHwg
RG9udERlbGV0ZSB8IFJlYWRPbmx5KTsKICAgICAvLyBuby4gb2YgYXJndW1lbnRzIGZvciBjb25z
dHJ1Y3RvcgogICAgIHB1dERpcmVjdFdpdGhvdXRUcmFuc2l0aW9uKGV4ZWMtPmdsb2JhbERhdGEo
KSwgZXhlYy0+cHJvcGVydHlOYW1lcygpLmxlbmd0aCwganNOdW1iZXIoMSksIFJlYWRPbmx5IHwg
RG9udEVudW0gfCBEb250RGVsZXRlKTsKIH0KIAotYm9vbCBPYmplY3RDb25zdHJ1Y3Rvcjo6Z2V0
T3duUHJvcGVydHlTbG90KEpTQ2VsbCogY2VsbCwgRXhlY1N0YXRlKiBleGVjLCBjb25zdCBJZGVu
dGlmaWVyJiBwcm9wZXJ0eU5hbWUsIFByb3BlcnR5U2xvdCAmc2xvdCkKK2Jvb2wgT2JqZWN0Q29u
c3RydWN0b3I6OmdldE93blByb3BlcnR5U2xvdChKU0NlbGwqIGNlbGwsIEV4ZWNTdGF0ZSogZXhl
YywgUHJvcGVydHlOYW1lIHByb3BlcnR5TmFtZSwgUHJvcGVydHlTbG90ICZzbG90KQogewogICAg
IHJldHVybiBnZXRTdGF0aWNGdW5jdGlvblNsb3Q8SlNPYmplY3Q+KGV4ZWMsIEV4ZWNTdGF0ZTo6
b2JqZWN0Q29uc3RydWN0b3JUYWJsZShleGVjKSwganNDYXN0PE9iamVjdENvbnN0cnVjdG9yKj4o
Y2VsbCksIHByb3BlcnR5TmFtZSwgc2xvdCk7CiB9CiAKLWJvb2wgT2JqZWN0Q29uc3RydWN0b3I6
OmdldE93blByb3BlcnR5RGVzY3JpcHRvcihKU09iamVjdCogb2JqZWN0LCBFeGVjU3RhdGUqIGV4
ZWMsIGNvbnN0IElkZW50aWZpZXImIHByb3BlcnR5TmFtZSwgUHJvcGVydHlEZXNjcmlwdG9yJiBk
ZXNjcmlwdG9yKQorYm9vbCBPYmplY3RDb25zdHJ1Y3Rvcjo6Z2V0T3duUHJvcGVydHlEZXNjcmlw
dG9yKEpTT2JqZWN0KiBvYmplY3QsIEV4ZWNTdGF0ZSogZXhlYywgUHJvcGVydHlOYW1lIHByb3Bl
cnR5TmFtZSwgUHJvcGVydHlEZXNjcmlwdG9yJiBkZXNjcmlwdG9yKQogewogICAgIHJldHVybiBn
ZXRTdGF0aWNGdW5jdGlvbkRlc2NyaXB0b3I8SlNPYmplY3Q+KGV4ZWMsIEV4ZWNTdGF0ZTo6b2Jq
ZWN0Q29uc3RydWN0b3JUYWJsZShleGVjKSwganNDYXN0PE9iamVjdENvbnN0cnVjdG9yKj4ob2Jq
ZWN0KSwgcHJvcGVydHlOYW1lLCBkZXNjcmlwdG9yKTsKIH0KSW5kZXg6IFNvdXJjZS9KYXZhU2Ny
aXB0Q29yZS9ydW50aW1lL09iamVjdENvbnN0cnVjdG9yLmgKPT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNl
L0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvT2JqZWN0Q29uc3RydWN0b3IuaAkocmV2aXNpb24gMTE2
NjY3KQorKysgU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvT2JqZWN0Q29uc3RydWN0b3Iu
aAkod29ya2luZyBjb3B5KQpAQCAtMzgsOCArMzgsOCBAQCBuYW1lc3BhY2UgSlNDIHsKICAgICAg
ICAgICAgIHJldHVybiBjb25zdHJ1Y3RvcjsKICAgICAgICAgfQogCi0gICAgICAgIHN0YXRpYyBi
b29sIGdldE93blByb3BlcnR5U2xvdChKU0NlbGwqLCBFeGVjU3RhdGUqLCBjb25zdCBJZGVudGlm
aWVyJiwgUHJvcGVydHlTbG90Jik7Ci0gICAgICAgIHN0YXRpYyBib29sIGdldE93blByb3BlcnR5
RGVzY3JpcHRvcihKU09iamVjdCosIEV4ZWNTdGF0ZSosIGNvbnN0IElkZW50aWZpZXImLCBQcm9w
ZXJ0eURlc2NyaXB0b3ImKTsKKyAgICAgICAgc3RhdGljIGJvb2wgZ2V0T3duUHJvcGVydHlTbG90
KEpTQ2VsbCosIEV4ZWNTdGF0ZSosIFByb3BlcnR5TmFtZSwgUHJvcGVydHlTbG90Jik7CisgICAg
ICAgIHN0YXRpYyBib29sIGdldE93blByb3BlcnR5RGVzY3JpcHRvcihKU09iamVjdCosIEV4ZWNT
dGF0ZSosIFByb3BlcnR5TmFtZSwgUHJvcGVydHlEZXNjcmlwdG9yJik7CiAKICAgICAgICAgc3Rh
dGljIGNvbnN0IENsYXNzSW5mbyBzX2luZm87CiAKSW5kZXg6IFNvdXJjZS9KYXZhU2NyaXB0Q29y
ZS9ydW50aW1lL09iamVjdFByb3RvdHlwZS5jcHAKPT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL0phdmFT
Y3JpcHRDb3JlL3J1bnRpbWUvT2JqZWN0UHJvdG90eXBlLmNwcAkocmV2aXNpb24gMTE2NjY3KQor
KysgU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvT2JqZWN0UHJvdG90eXBlLmNwcAkod29y
a2luZyBjb3B5KQpAQCAtNzcsMjggKzc3LDIyIEBAIHZvaWQgT2JqZWN0UHJvdG90eXBlOjpmaW5p
c2hDcmVhdGlvbihKU0cKICAgICBBU1NFUlQoaW5oZXJpdHMoJnNfaW5mbykpOwogfQogCi12b2lk
IE9iamVjdFByb3RvdHlwZTo6cHV0KEpTQ2VsbCogY2VsbCwgRXhlY1N0YXRlKiBleGVjLCBjb25z
dCBJZGVudGlmaWVyJiBwcm9wZXJ0eU5hbWUsIEpTVmFsdWUgdmFsdWUsIFB1dFByb3BlcnR5U2xv
dCYgc2xvdCkKK3ZvaWQgT2JqZWN0UHJvdG90eXBlOjpwdXQoSlNDZWxsKiBjZWxsLCBFeGVjU3Rh
dGUqIGV4ZWMsIFByb3BlcnR5TmFtZSBwcm9wZXJ0eU5hbWUsIEpTVmFsdWUgdmFsdWUsIFB1dFBy
b3BlcnR5U2xvdCYgc2xvdCkKIHsKICAgICBPYmplY3RQcm90b3R5cGUqIHRoaXNPYmplY3QgPSBq
c0Nhc3Q8T2JqZWN0UHJvdG90eXBlKj4oY2VsbCk7CiAgICAgQmFzZTo6cHV0KGNlbGwsIGV4ZWMs
IHByb3BlcnR5TmFtZSwgdmFsdWUsIHNsb3QpOwogCi0gICAgaWYgKHRoaXNPYmplY3QtPm1faGFz
Tm9Qcm9wZXJ0aWVzV2l0aFVJbnQzMk5hbWVzKSB7Ci0gICAgICAgIGJvb2wgaXNVSW50MzI7Ci0g
ICAgICAgIHByb3BlcnR5TmFtZS50b1VJbnQzMihpc1VJbnQzMik7Ci0gICAgICAgIHRoaXNPYmpl
Y3QtPm1faGFzTm9Qcm9wZXJ0aWVzV2l0aFVJbnQzMk5hbWVzID0gIWlzVUludDMyOwotICAgIH0K
KyAgICBpZiAodGhpc09iamVjdC0+bV9oYXNOb1Byb3BlcnRpZXNXaXRoVUludDMyTmFtZXMgJiYg
cHJvcGVydHlOYW1lLmFzSW5kZXgoKSAhPSBQcm9wZXJ0eU5hbWU6Ok5vdEFuSW5kZXgpCisgICAg
ICAgIHRoaXNPYmplY3QtPm1faGFzTm9Qcm9wZXJ0aWVzV2l0aFVJbnQzMk5hbWVzID0gZmFsc2U7
CiB9CiAKLWJvb2wgT2JqZWN0UHJvdG90eXBlOjpkZWZpbmVPd25Qcm9wZXJ0eShKU09iamVjdCog
b2JqZWN0LCBFeGVjU3RhdGUqIGV4ZWMsIGNvbnN0IElkZW50aWZpZXImIHByb3BlcnR5TmFtZSwg
UHJvcGVydHlEZXNjcmlwdG9yJiBkZXNjcmlwdG9yLCBib29sIHNob3VsZFRocm93KQorYm9vbCBP
YmplY3RQcm90b3R5cGU6OmRlZmluZU93blByb3BlcnR5KEpTT2JqZWN0KiBvYmplY3QsIEV4ZWNT
dGF0ZSogZXhlYywgUHJvcGVydHlOYW1lIHByb3BlcnR5TmFtZSwgUHJvcGVydHlEZXNjcmlwdG9y
JiBkZXNjcmlwdG9yLCBib29sIHNob3VsZFRocm93KQogewogICAgIE9iamVjdFByb3RvdHlwZSog
dGhpc09iamVjdCA9IGpzQ2FzdDxPYmplY3RQcm90b3R5cGUqPihvYmplY3QpOwogICAgIGJvb2wg
cmVzdWx0ID0gQmFzZTo6ZGVmaW5lT3duUHJvcGVydHkob2JqZWN0LCBleGVjLCBwcm9wZXJ0eU5h
bWUsIGRlc2NyaXB0b3IsIHNob3VsZFRocm93KTsKIAotICAgIGlmICh0aGlzT2JqZWN0LT5tX2hh
c05vUHJvcGVydGllc1dpdGhVSW50MzJOYW1lcykgewotICAgICAgICBib29sIGlzVUludDMyOwot
ICAgICAgICBwcm9wZXJ0eU5hbWUudG9VSW50MzIoaXNVSW50MzIpOwotICAgICAgICB0aGlzT2Jq
ZWN0LT5tX2hhc05vUHJvcGVydGllc1dpdGhVSW50MzJOYW1lcyA9ICFpc1VJbnQzMjsKLSAgICB9
CisgICAgaWYgKHRoaXNPYmplY3QtPm1faGFzTm9Qcm9wZXJ0aWVzV2l0aFVJbnQzMk5hbWVzICYm
IHByb3BlcnR5TmFtZS5hc0luZGV4KCkgIT0gUHJvcGVydHlOYW1lOjpOb3RBbkluZGV4KQorICAg
ICAgICB0aGlzT2JqZWN0LT5tX2hhc05vUHJvcGVydGllc1dpdGhVSW50MzJOYW1lcyA9IGZhbHNl
OwogCiAgICAgcmV0dXJuIHJlc3VsdDsKIH0KQEAgLTExMSwxMiArMTA1LDEyIEBAIGJvb2wgT2Jq
ZWN0UHJvdG90eXBlOjpnZXRPd25Qcm9wZXJ0eVNsb3QKICAgICByZXR1cm4gQmFzZTo6Z2V0T3du
UHJvcGVydHlTbG90QnlJbmRleCh0aGlzT2JqZWN0LCBleGVjLCBwcm9wZXJ0eU5hbWUsIHNsb3Qp
OwogfQogCi1ib29sIE9iamVjdFByb3RvdHlwZTo6Z2V0T3duUHJvcGVydHlTbG90KEpTQ2VsbCog
Y2VsbCwgRXhlY1N0YXRlKiBleGVjLCBjb25zdCBJZGVudGlmaWVyJiBwcm9wZXJ0eU5hbWUsIFBy
b3BlcnR5U2xvdCAmc2xvdCkKK2Jvb2wgT2JqZWN0UHJvdG90eXBlOjpnZXRPd25Qcm9wZXJ0eVNs
b3QoSlNDZWxsKiBjZWxsLCBFeGVjU3RhdGUqIGV4ZWMsIFByb3BlcnR5TmFtZSBwcm9wZXJ0eU5h
bWUsIFByb3BlcnR5U2xvdCAmc2xvdCkKIHsKICAgICByZXR1cm4gZ2V0U3RhdGljRnVuY3Rpb25T
bG90PEpTTm9uRmluYWxPYmplY3Q+KGV4ZWMsIEV4ZWNTdGF0ZTo6b2JqZWN0UHJvdG90eXBlVGFi
bGUoZXhlYyksIGpzQ2FzdDxPYmplY3RQcm90b3R5cGUqPihjZWxsKSwgcHJvcGVydHlOYW1lLCBz
bG90KTsKIH0KIAotYm9vbCBPYmplY3RQcm90b3R5cGU6OmdldE93blByb3BlcnR5RGVzY3JpcHRv
cihKU09iamVjdCogb2JqZWN0LCBFeGVjU3RhdGUqIGV4ZWMsIGNvbnN0IElkZW50aWZpZXImIHBy
b3BlcnR5TmFtZSwgUHJvcGVydHlEZXNjcmlwdG9yJiBkZXNjcmlwdG9yKQorYm9vbCBPYmplY3RQ
cm90b3R5cGU6OmdldE93blByb3BlcnR5RGVzY3JpcHRvcihKU09iamVjdCogb2JqZWN0LCBFeGVj
U3RhdGUqIGV4ZWMsIFByb3BlcnR5TmFtZSBwcm9wZXJ0eU5hbWUsIFByb3BlcnR5RGVzY3JpcHRv
ciYgZGVzY3JpcHRvcikKIHsKICAgICByZXR1cm4gZ2V0U3RhdGljRnVuY3Rpb25EZXNjcmlwdG9y
PEpTTm9uRmluYWxPYmplY3Q+KGV4ZWMsIEV4ZWNTdGF0ZTo6b2JqZWN0UHJvdG90eXBlVGFibGUo
ZXhlYyksIGpzQ2FzdDxPYmplY3RQcm90b3R5cGUqPihvYmplY3QpLCBwcm9wZXJ0eU5hbWUsIGRl
c2NyaXB0b3IpOwogfQpJbmRleDogU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvT2JqZWN0
UHJvdG90eXBlLmgKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUv
T2JqZWN0UHJvdG90eXBlLmgJKHJldmlzaW9uIDExNjY2NykKKysrIFNvdXJjZS9KYXZhU2NyaXB0
Q29yZS9ydW50aW1lL09iamVjdFByb3RvdHlwZS5oCSh3b3JraW5nIGNvcHkpCkBAIC01MCwxMiAr
NTAsMTIgQEAgbmFtZXNwYWNlIEpTQyB7CiAKICAgICBwcml2YXRlOgogICAgICAgICBPYmplY3RQ
cm90b3R5cGUoRXhlY1N0YXRlKiwgU3RydWN0dXJlKik7Ci0gICAgICAgIHN0YXRpYyB2b2lkIHB1
dChKU0NlbGwqLCBFeGVjU3RhdGUqLCBjb25zdCBJZGVudGlmaWVyJiwgSlNWYWx1ZSwgUHV0UHJv
cGVydHlTbG90Jik7Ci0gICAgICAgIHN0YXRpYyBib29sIGRlZmluZU93blByb3BlcnR5KEpTT2Jq
ZWN0KiwgRXhlY1N0YXRlKiwgY29uc3QgSWRlbnRpZmllciYgcHJvcGVydHlOYW1lLCBQcm9wZXJ0
eURlc2NyaXB0b3ImLCBib29sIHNob3VsZFRocm93KTsKKyAgICAgICAgc3RhdGljIHZvaWQgcHV0
KEpTQ2VsbCosIEV4ZWNTdGF0ZSosIFByb3BlcnR5TmFtZSwgSlNWYWx1ZSwgUHV0UHJvcGVydHlT
bG90Jik7CisgICAgICAgIHN0YXRpYyBib29sIGRlZmluZU93blByb3BlcnR5KEpTT2JqZWN0Kiwg
RXhlY1N0YXRlKiwgUHJvcGVydHlOYW1lLCBQcm9wZXJ0eURlc2NyaXB0b3ImLCBib29sIHNob3Vs
ZFRocm93KTsKIAotICAgICAgICBzdGF0aWMgYm9vbCBnZXRPd25Qcm9wZXJ0eVNsb3QoSlNDZWxs
KiwgRXhlY1N0YXRlKiwgY29uc3QgSWRlbnRpZmllciYsIFByb3BlcnR5U2xvdCYpOworICAgICAg
ICBzdGF0aWMgYm9vbCBnZXRPd25Qcm9wZXJ0eVNsb3QoSlNDZWxsKiwgRXhlY1N0YXRlKiwgUHJv
cGVydHlOYW1lLCBQcm9wZXJ0eVNsb3QmKTsKICAgICAgICAgc3RhdGljIGJvb2wgZ2V0T3duUHJv
cGVydHlTbG90QnlJbmRleChKU0NlbGwqLCBFeGVjU3RhdGUqLCB1bnNpZ25lZCBwcm9wZXJ0eU5h
bWUsIFByb3BlcnR5U2xvdCYpOwotICAgICAgICBzdGF0aWMgYm9vbCBnZXRPd25Qcm9wZXJ0eURl
c2NyaXB0b3IoSlNPYmplY3QqLCBFeGVjU3RhdGUqLCBjb25zdCBJZGVudGlmaWVyJiwgUHJvcGVy
dHlEZXNjcmlwdG9yJik7CisgICAgICAgIHN0YXRpYyBib29sIGdldE93blByb3BlcnR5RGVzY3Jp
cHRvcihKU09iamVjdCosIEV4ZWNTdGF0ZSosIFByb3BlcnR5TmFtZSwgUHJvcGVydHlEZXNjcmlw
dG9yJik7CiAKICAgICAgICAgYm9vbCBtX2hhc05vUHJvcGVydGllc1dpdGhVSW50MzJOYW1lczsK
ICAgICB9OwpJbmRleDogU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvUHJvcGVydHlOYW1l
LmgKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PQotLS0gU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvUHJvcGVydHlO
YW1lLmgJKHJldmlzaW9uIDApCisrKyBTb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9Qcm9w
ZXJ0eU5hbWUuaAkocmV2aXNpb24gMCkKQEAgLTAsMCArMSwxMzEgQEAKKy8qCisgKiBDb3B5cmln
aHQgKEMpIDIwMTIgQXBwbGUgSW5jLiBBbGwgcmlnaHRzIHJlc2VydmVkLgorICoKKyAqIFJlZGlz
dHJpYnV0aW9uIGFuZCB1c2UgaW4gc291cmNlIGFuZCBiaW5hcnkgZm9ybXMsIHdpdGggb3Igd2l0
aG91dAorICogbW9kaWZpY2F0aW9uLCBhcmUgcGVybWl0dGVkIHByb3ZpZGVkIHRoYXQgdGhlIGZv
bGxvd2luZyBjb25kaXRpb25zCisgKiBhcmUgbWV0OgorICogMS4gUmVkaXN0cmlidXRpb25zIG9m
IHNvdXJjZSBjb2RlIG11c3QgcmV0YWluIHRoZSBhYm92ZSBjb3B5cmlnaHQKKyAqICAgIG5vdGlj
ZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lci4K
KyAqIDIuIFJlZGlzdHJpYnV0aW9ucyBpbiBiaW5hcnkgZm9ybSBtdXN0IHJlcHJvZHVjZSB0aGUg
YWJvdmUgY29weXJpZ2h0CisgKiAgICBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFu
ZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIgaW4gdGhlCisgKiAgICBkb2N1bWVudGF0aW9uIGFu
ZC9vciBvdGhlciBtYXRlcmlhbHMgcHJvdmlkZWQgd2l0aCB0aGUgZGlzdHJpYnV0aW9uLgorICoK
KyAqIFRISVMgU09GVFdBUkUgSVMgUFJPVklERUQgQlkgQVBQTEUgSU5DLiBBTkQgSVRTIENPTlRS
SUJVVE9SUyBgYEFTIElTJycKKyAqIEFORCBBTlkgRVhQUkVTUyBPUiBJTVBMSUVEIFdBUlJBTlRJ
RVMsIElOQ0xVRElORywgQlVUIE5PVCBMSU1JVEVEIFRPLAorICogVEhFIElNUExJRUQgV0FSUkFO
VElFUyBPRiBNRVJDSEFOVEFCSUxJVFkgQU5EIEZJVE5FU1MgRk9SIEEgUEFSVElDVUxBUgorICog
UFVSUE9TRSBBUkUgRElTQ0xBSU1FRC4gSU4gTk8gRVZFTlQgU0hBTEwgQVBQTEUgSU5DLiBPUiBJ
VFMgQ09OVFJJQlVUT1JTCisgKiBCRSBMSUFCTEUgRk9SIEFOWSBESVJFQ1QsIElORElSRUNULCBJ
TkNJREVOVEFMLCBTUEVDSUFMLCBFWEVNUExBUlksIE9SCisgKiBDT05TRVFVRU5USUFMIERBTUFH
RVMgKElOQ0xVRElORywgQlVUIE5PVCBMSU1JVEVEIFRPLCBQUk9DVVJFTUVOVCBPRgorICogU1VC
U1RJVFVURSBHT09EUyBPUiBTRVJWSUNFUzsgTE9TUyBPRiBVU0UsIERBVEEsIE9SIFBST0ZJVFM7
IE9SIEJVU0lORVNTCisgKiBJTlRFUlJVUFRJT04pIEhPV0VWRVIgQ0FVU0VEIEFORCBPTiBBTlkg
VEhFT1JZIE9GIExJQUJJTElUWSwgV0hFVEhFUiBJTgorICogQ09OVFJBQ1QsIFNUUklDVCBMSUFC
SUxJVFksIE9SIFRPUlQgKElOQ0xVRElORyBORUdMSUdFTkNFIE9SIE9USEVSV0lTRSkKKyAqIEFS
SVNJTkcgSU4gQU5ZIFdBWSBPVVQgT0YgVEhFIFVTRSBPRiBUSElTIFNPRlRXQVJFLCBFVkVOIElG
IEFEVklTRUQgT0YKKyAqIFRIRSBQT1NTSUJJTElUWSBPRiBTVUNIIERBTUFHRS4KKyAqLworCisj
aWZuZGVmIFByb3BlcnR5TmFtZV9oCisjZGVmaW5lIFByb3BlcnR5TmFtZV9oCisKKyNpbmNsdWRl
ICJJZGVudGlmaWVyLmgiCisKK25hbWVzcGFjZSBKU0MgeworCit0ZW1wbGF0ZSA8dHlwZW5hbWUg
Q2hhclR5cGU+CitBTFdBWVNfSU5MSU5FIHVpbnQzMl90IHRvVUludDMyRnJvbUNoYXJhY3RlcnMo
Y29uc3QgQ2hhclR5cGUqIGNoYXJhY3RlcnMsIHVuc2lnbmVkIGxlbmd0aCkKK3sKKyAgICAvLyBB
biBlbXB0eSBzdHJpbmcgaXMgbm90IGEgbnVtYmVyLgorICAgIGlmICghbGVuZ3RoKQorICAgICAg
ICByZXR1cm4gMDsKKworICAgIC8vIEdldCB0aGUgZmlyc3QgY2hhcmFjdGVyLCB0dXJuaW5nIGl0
IGludG8gYSBkaWdpdC4KKyAgICB1aW50MzJfdCB2YWx1ZSA9IGNoYXJhY3RlcnNbMF0gLSAnMCc7
CisgICAgaWYgKHZhbHVlID4gOSkKKyAgICAgICAgcmV0dXJuIFVJTlRfTUFYOworICAgIAorICAg
IC8vIENoZWNrIGZvciBsZWFkaW5nIHplcm9zLiBJZiB0aGUgZmlyc3QgY2hhcmFjaGVyIGlzIDAs
IHRoZW4gdGhlCisgICAgLy8gbGVuZ3RoIG9mIHRoZSBzdHJpbmcgbXVzdCBiZSBvbmUgLSBlLmcu
ICIwNDIiIGlzIG5vdCBlcXVhbCB0byAiNDIiLgorICAgIGlmICghdmFsdWUgJiYgbGVuZ3RoID4g
MSkKKyAgICAgICAgcmV0dXJuIFVJTlRfTUFYOworICAgIAorICAgIHdoaWxlICgtLWxlbmd0aCkg
eworICAgICAgICAvLyBNdWx0aXBseSB2YWx1ZSBieSAxMCwgY2hlY2tpbmcgZm9yIG92ZXJmbG93
IG91dCBvZiAzMiBiaXRzLgorICAgICAgICBpZiAodmFsdWUgPiAweEZGRkZGRkZGVSAvIDEwKQor
ICAgICAgICAgICAgcmV0dXJuIFVJTlRfTUFYOworICAgICAgICB2YWx1ZSAqPSAxMDsKKyAgICAg
ICAgCisgICAgICAgIC8vIEdldCB0aGUgbmV4dCBjaGFyYWN0ZXIsIHR1cm5pbmcgaXQgaW50byBh
IGRpZ2l0LgorICAgICAgICB1aW50MzJfdCBuZXdWYWx1ZSA9ICooKytjaGFyYWN0ZXJzKSAtICcw
JzsKKyAgICAgICAgaWYgKG5ld1ZhbHVlID4gOSkKKyAgICAgICAgICAgIHJldHVybiBVSU5UX01B
WDsKKyAgICAgICAgCisgICAgICAgIC8vIEFkZCBpbiB0aGUgb2xkIHZhbHVlLCBjaGVja2luZyBm
b3Igb3ZlcmZsb3cgb3V0IG9mIDMyIGJpdHMuCisgICAgICAgIG5ld1ZhbHVlICs9IHZhbHVlOwor
ICAgICAgICBpZiAobmV3VmFsdWUgPCB2YWx1ZSkKKyAgICAgICAgICAgIHJldHVybiBVSU5UX01B
WDsKKyAgICAgICAgdmFsdWUgPSBuZXdWYWx1ZTsKKyAgICB9CisgICAgCisgICAgcmV0dXJuIHZh
bHVlOworfQorCitBTFdBWVNfSU5MSU5FIHVpbnQzMl90IHRvVUludDMyRnJvbVN0cmluZ0ltcGwo
U3RyaW5nSW1wbCogaW1wbCkKK3sKKyAgICBpZiAoaW1wbC0+aXM4Qml0KCkpCisgICAgICAgIHJl
dHVybiB0b1VJbnQzMkZyb21DaGFyYWN0ZXJzKGltcGwtPmNoYXJhY3RlcnM4KCksIGltcGwtPmxl
bmd0aCgpKTsKKyAgICByZXR1cm4gdG9VSW50MzJGcm9tQ2hhcmFjdGVycyhpbXBsLT5jaGFyYWN0
ZXJzMTYoKSwgaW1wbC0+bGVuZ3RoKCkpOworfQorCitjbGFzcyBQcm9wZXJ0eU5hbWUgeworcHVi
bGljOgorICAgIFByb3BlcnR5TmFtZShjb25zdCBJZGVudGlmaWVyJiBwcm9wZXJ0eU5hbWUpCisg
ICAgICAgIDogbV9pbXBsKHByb3BlcnR5TmFtZS5pbXBsKCkpCisgICAgeworICAgICAgICBBU1NF
UlQoIXByb3BlcnR5TmFtZS5pc051bGwoKSk7CisgICAgfQorCisgICAgU3RyaW5nSW1wbCogaW1w
bCgpIGNvbnN0IHsgcmV0dXJuIG1faW1wbDsgfQorICAgIFVTdHJpbmcgdXN0cmluZygpIGNvbnN0
IHsgcmV0dXJuIG1faW1wbDsgfQorCisgICAgc3RhdGljIGNvbnN0IHVpbnQzMl90IE5vdEFuSW5k
ZXggPSBVSU5UX01BWDsKKyAgICB1aW50MzJfdCBhc0luZGV4KCkKKyAgICB7CisgICAgICAgIHJl
dHVybiB0b1VJbnQzMkZyb21TdHJpbmdJbXBsKG1faW1wbCk7CisgICAgfQorCitwcml2YXRlOgor
ICAgIFN0cmluZ0ltcGwqIG1faW1wbDsKK307CisKK2lubGluZSBib29sIG9wZXJhdG9yPT0oUHJv
cGVydHlOYW1lIGEsIGNvbnN0IElkZW50aWZpZXImIGIpCit7CisgICAgcmV0dXJuIGEuaW1wbCgp
ID09IGIuaW1wbCgpOworfQorCitpbmxpbmUgYm9vbCBvcGVyYXRvcj09KGNvbnN0IElkZW50aWZp
ZXImIGEsIFByb3BlcnR5TmFtZSBiKQoreworICAgIHJldHVybiBhLmltcGwoKSA9PSBiLmltcGwo
KTsKK30KKworaW5saW5lIGJvb2wgb3BlcmF0b3I9PShQcm9wZXJ0eU5hbWUgYSwgUHJvcGVydHlO
YW1lIGIpCit7CisgICAgcmV0dXJuIGEuaW1wbCgpID09IGIuaW1wbCgpOworfQorCitpbmxpbmUg
Ym9vbCBvcGVyYXRvciE9KFByb3BlcnR5TmFtZSBhLCBjb25zdCBJZGVudGlmaWVyJiBiKQorewor
ICAgIHJldHVybiBhLmltcGwoKSAhPSBiLmltcGwoKTsKK30KKworaW5saW5lIGJvb2wgb3BlcmF0
b3IhPShjb25zdCBJZGVudGlmaWVyJiBhLCBQcm9wZXJ0eU5hbWUgYikKK3sKKyAgICByZXR1cm4g
YS5pbXBsKCkgIT0gYi5pbXBsKCk7Cit9CisKK2lubGluZSBib29sIG9wZXJhdG9yIT0oUHJvcGVy
dHlOYW1lIGEsIFByb3BlcnR5TmFtZSBiKQoreworICAgIHJldHVybiBhLmltcGwoKSAhPSBiLmlt
cGwoKTsKK30KKworfQorCisjZW5kaWYKSW5kZXg6IFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50
aW1lL1Byb3BlcnR5U2xvdC5oCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9y
dW50aW1lL1Byb3BlcnR5U2xvdC5oCShyZXZpc2lvbiAxMTY2NjcpCisrKyBTb3VyY2UvSmF2YVNj
cmlwdENvcmUvcnVudGltZS9Qcm9wZXJ0eVNsb3QuaAkod29ya2luZyBjb3B5KQpAQCAtMjEsOCAr
MjEsOCBAQAogI2lmbmRlZiBQcm9wZXJ0eVNsb3RfaAogI2RlZmluZSBQcm9wZXJ0eVNsb3RfaAog
Ci0jaW5jbHVkZSAiSWRlbnRpZmllci5oIgogI2luY2x1ZGUgIkpTVmFsdWUuaCIKKyNpbmNsdWRl
ICJQcm9wZXJ0eU5hbWUuaCIKICNpbmNsdWRlICJSZWdpc3Rlci5oIgogI2luY2x1ZGUgPHd0Zi9B
c3NlcnRpb25zLmg+CiAjaW5jbHVkZSA8d3RmL05vdEZvdW5kLmg+CkBAIC02MSwxMCArNjEsMTAg
QEAgbmFtZXNwYWNlIEpTQyB7CiAgICAgICAgICAgICBjbGVhclZhbHVlKCk7CiAgICAgICAgIH0K
IAotICAgICAgICB0eXBlZGVmIEpTVmFsdWUgKCpHZXRWYWx1ZUZ1bmMpKEV4ZWNTdGF0ZSosIEpT
VmFsdWUgc2xvdEJhc2UsIGNvbnN0IElkZW50aWZpZXImKTsKKyAgICAgICAgdHlwZWRlZiBKU1Zh
bHVlICgqR2V0VmFsdWVGdW5jKShFeGVjU3RhdGUqLCBKU1ZhbHVlIHNsb3RCYXNlLCBQcm9wZXJ0
eU5hbWUpOwogICAgICAgICB0eXBlZGVmIEpTVmFsdWUgKCpHZXRJbmRleFZhbHVlRnVuYykoRXhl
Y1N0YXRlKiwgSlNWYWx1ZSBzbG90QmFzZSwgdW5zaWduZWQpOwogCi0gICAgICAgIEpTVmFsdWUg
Z2V0VmFsdWUoRXhlY1N0YXRlKiBleGVjLCBjb25zdCBJZGVudGlmaWVyJiBwcm9wZXJ0eU5hbWUp
IGNvbnN0CisgICAgICAgIEpTVmFsdWUgZ2V0VmFsdWUoRXhlY1N0YXRlKiBleGVjLCBQcm9wZXJ0
eU5hbWUgcHJvcGVydHlOYW1lKSBjb25zdAogICAgICAgICB7CiAgICAgICAgICAgICBpZiAobV9n
ZXRWYWx1ZSA9PSBKU0NfVkFMVUVfTUFSS0VSKQogICAgICAgICAgICAgICAgIHJldHVybiBtX3Zh
bHVlOwpJbmRleDogU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvUmVnRXhwQ29uc3RydWN0
b3IuY3BwCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL1JlZ0V4
cENvbnN0cnVjdG9yLmNwcAkocmV2aXNpb24gMTE2NjY3KQorKysgU291cmNlL0phdmFTY3JpcHRD
b3JlL3J1bnRpbWUvUmVnRXhwQ29uc3RydWN0b3IuY3BwCSh3b3JraW5nIGNvcHkpCkBAIC0yOCwy
MSArMjgsMjEgQEAKIAogbmFtZXNwYWNlIEpTQyB7CiAKLXN0YXRpYyBKU1ZhbHVlIHJlZ0V4cENv
bnN0cnVjdG9ySW5wdXQoRXhlY1N0YXRlKiwgSlNWYWx1ZSwgY29uc3QgSWRlbnRpZmllciYpOwot
c3RhdGljIEpTVmFsdWUgcmVnRXhwQ29uc3RydWN0b3JNdWx0aWxpbmUoRXhlY1N0YXRlKiwgSlNW
YWx1ZSwgY29uc3QgSWRlbnRpZmllciYpOwotc3RhdGljIEpTVmFsdWUgcmVnRXhwQ29uc3RydWN0
b3JMYXN0TWF0Y2goRXhlY1N0YXRlKiwgSlNWYWx1ZSwgY29uc3QgSWRlbnRpZmllciYpOwotc3Rh
dGljIEpTVmFsdWUgcmVnRXhwQ29uc3RydWN0b3JMYXN0UGFyZW4oRXhlY1N0YXRlKiwgSlNWYWx1
ZSwgY29uc3QgSWRlbnRpZmllciYpOwotc3RhdGljIEpTVmFsdWUgcmVnRXhwQ29uc3RydWN0b3JM
ZWZ0Q29udGV4dChFeGVjU3RhdGUqLCBKU1ZhbHVlLCBjb25zdCBJZGVudGlmaWVyJik7Ci1zdGF0
aWMgSlNWYWx1ZSByZWdFeHBDb25zdHJ1Y3RvclJpZ2h0Q29udGV4dChFeGVjU3RhdGUqLCBKU1Zh
bHVlLCBjb25zdCBJZGVudGlmaWVyJik7Ci1zdGF0aWMgSlNWYWx1ZSByZWdFeHBDb25zdHJ1Y3Rv
ckRvbGxhcjEoRXhlY1N0YXRlKiwgSlNWYWx1ZSwgY29uc3QgSWRlbnRpZmllciYpOwotc3RhdGlj
IEpTVmFsdWUgcmVnRXhwQ29uc3RydWN0b3JEb2xsYXIyKEV4ZWNTdGF0ZSosIEpTVmFsdWUsIGNv
bnN0IElkZW50aWZpZXImKTsKLXN0YXRpYyBKU1ZhbHVlIHJlZ0V4cENvbnN0cnVjdG9yRG9sbGFy
MyhFeGVjU3RhdGUqLCBKU1ZhbHVlLCBjb25zdCBJZGVudGlmaWVyJik7Ci1zdGF0aWMgSlNWYWx1
ZSByZWdFeHBDb25zdHJ1Y3RvckRvbGxhcjQoRXhlY1N0YXRlKiwgSlNWYWx1ZSwgY29uc3QgSWRl
bnRpZmllciYpOwotc3RhdGljIEpTVmFsdWUgcmVnRXhwQ29uc3RydWN0b3JEb2xsYXI1KEV4ZWNT
dGF0ZSosIEpTVmFsdWUsIGNvbnN0IElkZW50aWZpZXImKTsKLXN0YXRpYyBKU1ZhbHVlIHJlZ0V4
cENvbnN0cnVjdG9yRG9sbGFyNihFeGVjU3RhdGUqLCBKU1ZhbHVlLCBjb25zdCBJZGVudGlmaWVy
Jik7Ci1zdGF0aWMgSlNWYWx1ZSByZWdFeHBDb25zdHJ1Y3RvckRvbGxhcjcoRXhlY1N0YXRlKiwg
SlNWYWx1ZSwgY29uc3QgSWRlbnRpZmllciYpOwotc3RhdGljIEpTVmFsdWUgcmVnRXhwQ29uc3Ry
dWN0b3JEb2xsYXI4KEV4ZWNTdGF0ZSosIEpTVmFsdWUsIGNvbnN0IElkZW50aWZpZXImKTsKLXN0
YXRpYyBKU1ZhbHVlIHJlZ0V4cENvbnN0cnVjdG9yRG9sbGFyOShFeGVjU3RhdGUqLCBKU1ZhbHVl
LCBjb25zdCBJZGVudGlmaWVyJik7CitzdGF0aWMgSlNWYWx1ZSByZWdFeHBDb25zdHJ1Y3Rvcklu
cHV0KEV4ZWNTdGF0ZSosIEpTVmFsdWUsIFByb3BlcnR5TmFtZSk7CitzdGF0aWMgSlNWYWx1ZSBy
ZWdFeHBDb25zdHJ1Y3Rvck11bHRpbGluZShFeGVjU3RhdGUqLCBKU1ZhbHVlLCBQcm9wZXJ0eU5h
bWUpOworc3RhdGljIEpTVmFsdWUgcmVnRXhwQ29uc3RydWN0b3JMYXN0TWF0Y2goRXhlY1N0YXRl
KiwgSlNWYWx1ZSwgUHJvcGVydHlOYW1lKTsKK3N0YXRpYyBKU1ZhbHVlIHJlZ0V4cENvbnN0cnVj
dG9yTGFzdFBhcmVuKEV4ZWNTdGF0ZSosIEpTVmFsdWUsIFByb3BlcnR5TmFtZSk7CitzdGF0aWMg
SlNWYWx1ZSByZWdFeHBDb25zdHJ1Y3RvckxlZnRDb250ZXh0KEV4ZWNTdGF0ZSosIEpTVmFsdWUs
IFByb3BlcnR5TmFtZSk7CitzdGF0aWMgSlNWYWx1ZSByZWdFeHBDb25zdHJ1Y3RvclJpZ2h0Q29u
dGV4dChFeGVjU3RhdGUqLCBKU1ZhbHVlLCBQcm9wZXJ0eU5hbWUpOworc3RhdGljIEpTVmFsdWUg
cmVnRXhwQ29uc3RydWN0b3JEb2xsYXIxKEV4ZWNTdGF0ZSosIEpTVmFsdWUsIFByb3BlcnR5TmFt
ZSk7CitzdGF0aWMgSlNWYWx1ZSByZWdFeHBDb25zdHJ1Y3RvckRvbGxhcjIoRXhlY1N0YXRlKiwg
SlNWYWx1ZSwgUHJvcGVydHlOYW1lKTsKK3N0YXRpYyBKU1ZhbHVlIHJlZ0V4cENvbnN0cnVjdG9y
RG9sbGFyMyhFeGVjU3RhdGUqLCBKU1ZhbHVlLCBQcm9wZXJ0eU5hbWUpOworc3RhdGljIEpTVmFs
dWUgcmVnRXhwQ29uc3RydWN0b3JEb2xsYXI0KEV4ZWNTdGF0ZSosIEpTVmFsdWUsIFByb3BlcnR5
TmFtZSk7CitzdGF0aWMgSlNWYWx1ZSByZWdFeHBDb25zdHJ1Y3RvckRvbGxhcjUoRXhlY1N0YXRl
KiwgSlNWYWx1ZSwgUHJvcGVydHlOYW1lKTsKK3N0YXRpYyBKU1ZhbHVlIHJlZ0V4cENvbnN0cnVj
dG9yRG9sbGFyNihFeGVjU3RhdGUqLCBKU1ZhbHVlLCBQcm9wZXJ0eU5hbWUpOworc3RhdGljIEpT
VmFsdWUgcmVnRXhwQ29uc3RydWN0b3JEb2xsYXI3KEV4ZWNTdGF0ZSosIEpTVmFsdWUsIFByb3Bl
cnR5TmFtZSk7CitzdGF0aWMgSlNWYWx1ZSByZWdFeHBDb25zdHJ1Y3RvckRvbGxhcjgoRXhlY1N0
YXRlKiwgSlNWYWx1ZSwgUHJvcGVydHlOYW1lKTsKK3N0YXRpYyBKU1ZhbHVlIHJlZ0V4cENvbnN0
cnVjdG9yRG9sbGFyOShFeGVjU3RhdGUqLCBKU1ZhbHVlLCBQcm9wZXJ0eU5hbWUpOwogCiBzdGF0
aWMgdm9pZCBzZXRSZWdFeHBDb25zdHJ1Y3RvcklucHV0KEV4ZWNTdGF0ZSosIEpTT2JqZWN0Kiwg
SlNWYWx1ZSk7CiBzdGF0aWMgdm9pZCBzZXRSZWdFeHBDb25zdHJ1Y3Rvck11bHRpbGluZShFeGVj
U3RhdGUqLCBKU09iamVjdCosIEpTVmFsdWUpOwpAQCAtOTIsNyArOTIsNyBAQCBSZWdFeHBDb25z
dHJ1Y3Rvcjo6UmVnRXhwQ29uc3RydWN0b3IoSlNHCiAKIHZvaWQgUmVnRXhwQ29uc3RydWN0b3I6
OmZpbmlzaENyZWF0aW9uKEV4ZWNTdGF0ZSogZXhlYywgUmVnRXhwUHJvdG90eXBlKiByZWdFeHBQ
cm90b3R5cGUpCiB7Ci0gICAgQmFzZTo6ZmluaXNoQ3JlYXRpb24oZXhlYy0+Z2xvYmFsRGF0YSgp
LCBJZGVudGlmaWVyKGV4ZWMsICJSZWdFeHAiKSk7CisgICAgQmFzZTo6ZmluaXNoQ3JlYXRpb24o
ZXhlYy0+Z2xvYmFsRGF0YSgpLCBJZGVudGlmaWVyKGV4ZWMsICJSZWdFeHAiKS51c3RyaW5nKCkp
OwogICAgIEFTU0VSVChpbmhlcml0cygmc19pbmZvKSk7CiAKICAgICAvLyBFQ01BIDE1LjEwLjUu
MSBSZWdFeHAucHJvdG90eXBlCkBAIC0xNTQsOTIgKzE1NCw5MiBAQCBKU1ZhbHVlIFJlZ0V4cENv
bnN0cnVjdG9yOjpnZXRSaWdodENvbnRlCiAgICAgcmV0dXJuIG1fY2FjaGVkUmVzdWx0Lmxhc3RS
ZXN1bHQoZXhlYywgdGhpcyktPnJpZ2h0Q29udGV4dChleGVjKTsKIH0KICAgICAKLWJvb2wgUmVn
RXhwQ29uc3RydWN0b3I6OmdldE93blByb3BlcnR5U2xvdChKU0NlbGwqIGNlbGwsIEV4ZWNTdGF0
ZSogZXhlYywgY29uc3QgSWRlbnRpZmllciYgcHJvcGVydHlOYW1lLCBQcm9wZXJ0eVNsb3QmIHNs
b3QpCitib29sIFJlZ0V4cENvbnN0cnVjdG9yOjpnZXRPd25Qcm9wZXJ0eVNsb3QoSlNDZWxsKiBj
ZWxsLCBFeGVjU3RhdGUqIGV4ZWMsIFByb3BlcnR5TmFtZSBwcm9wZXJ0eU5hbWUsIFByb3BlcnR5
U2xvdCYgc2xvdCkKIHsKICAgICByZXR1cm4gZ2V0U3RhdGljVmFsdWVTbG90PFJlZ0V4cENvbnN0
cnVjdG9yLCBJbnRlcm5hbEZ1bmN0aW9uPihleGVjLCBFeGVjU3RhdGU6OnJlZ0V4cENvbnN0cnVj
dG9yVGFibGUoZXhlYyksIGpzQ2FzdDxSZWdFeHBDb25zdHJ1Y3Rvcio+KGNlbGwpLCBwcm9wZXJ0
eU5hbWUsIHNsb3QpOwogfQogCi1ib29sIFJlZ0V4cENvbnN0cnVjdG9yOjpnZXRPd25Qcm9wZXJ0
eURlc2NyaXB0b3IoSlNPYmplY3QqIG9iamVjdCwgRXhlY1N0YXRlKiBleGVjLCBjb25zdCBJZGVu
dGlmaWVyJiBwcm9wZXJ0eU5hbWUsIFByb3BlcnR5RGVzY3JpcHRvciYgZGVzY3JpcHRvcikKK2Jv
b2wgUmVnRXhwQ29uc3RydWN0b3I6OmdldE93blByb3BlcnR5RGVzY3JpcHRvcihKU09iamVjdCog
b2JqZWN0LCBFeGVjU3RhdGUqIGV4ZWMsIFByb3BlcnR5TmFtZSBwcm9wZXJ0eU5hbWUsIFByb3Bl
cnR5RGVzY3JpcHRvciYgZGVzY3JpcHRvcikKIHsKICAgICByZXR1cm4gZ2V0U3RhdGljVmFsdWVE
ZXNjcmlwdG9yPFJlZ0V4cENvbnN0cnVjdG9yLCBJbnRlcm5hbEZ1bmN0aW9uPihleGVjLCBFeGVj
U3RhdGU6OnJlZ0V4cENvbnN0cnVjdG9yVGFibGUoZXhlYyksIGpzQ2FzdDxSZWdFeHBDb25zdHJ1
Y3Rvcio+KG9iamVjdCksIHByb3BlcnR5TmFtZSwgZGVzY3JpcHRvcik7CiB9CiAKLUpTVmFsdWUg
cmVnRXhwQ29uc3RydWN0b3JEb2xsYXIxKEV4ZWNTdGF0ZSogZXhlYywgSlNWYWx1ZSBzbG90QmFz
ZSwgY29uc3QgSWRlbnRpZmllciYpCitKU1ZhbHVlIHJlZ0V4cENvbnN0cnVjdG9yRG9sbGFyMShF
eGVjU3RhdGUqIGV4ZWMsIEpTVmFsdWUgc2xvdEJhc2UsIFByb3BlcnR5TmFtZSkKIHsKICAgICBy
ZXR1cm4gYXNSZWdFeHBDb25zdHJ1Y3RvcihzbG90QmFzZSktPmdldEJhY2tyZWYoZXhlYywgMSk7
CiB9CiAKLUpTVmFsdWUgcmVnRXhwQ29uc3RydWN0b3JEb2xsYXIyKEV4ZWNTdGF0ZSogZXhlYywg
SlNWYWx1ZSBzbG90QmFzZSwgY29uc3QgSWRlbnRpZmllciYpCitKU1ZhbHVlIHJlZ0V4cENvbnN0
cnVjdG9yRG9sbGFyMihFeGVjU3RhdGUqIGV4ZWMsIEpTVmFsdWUgc2xvdEJhc2UsIFByb3BlcnR5
TmFtZSkKIHsKICAgICByZXR1cm4gYXNSZWdFeHBDb25zdHJ1Y3RvcihzbG90QmFzZSktPmdldEJh
Y2tyZWYoZXhlYywgMik7CiB9CiAKLUpTVmFsdWUgcmVnRXhwQ29uc3RydWN0b3JEb2xsYXIzKEV4
ZWNTdGF0ZSogZXhlYywgSlNWYWx1ZSBzbG90QmFzZSwgY29uc3QgSWRlbnRpZmllciYpCitKU1Zh
bHVlIHJlZ0V4cENvbnN0cnVjdG9yRG9sbGFyMyhFeGVjU3RhdGUqIGV4ZWMsIEpTVmFsdWUgc2xv
dEJhc2UsIFByb3BlcnR5TmFtZSkKIHsKICAgICByZXR1cm4gYXNSZWdFeHBDb25zdHJ1Y3Rvcihz
bG90QmFzZSktPmdldEJhY2tyZWYoZXhlYywgMyk7CiB9CiAKLUpTVmFsdWUgcmVnRXhwQ29uc3Ry
dWN0b3JEb2xsYXI0KEV4ZWNTdGF0ZSogZXhlYywgSlNWYWx1ZSBzbG90QmFzZSwgY29uc3QgSWRl
bnRpZmllciYpCitKU1ZhbHVlIHJlZ0V4cENvbnN0cnVjdG9yRG9sbGFyNChFeGVjU3RhdGUqIGV4
ZWMsIEpTVmFsdWUgc2xvdEJhc2UsIFByb3BlcnR5TmFtZSkKIHsKICAgICByZXR1cm4gYXNSZWdF
eHBDb25zdHJ1Y3RvcihzbG90QmFzZSktPmdldEJhY2tyZWYoZXhlYywgNCk7CiB9CiAKLUpTVmFs
dWUgcmVnRXhwQ29uc3RydWN0b3JEb2xsYXI1KEV4ZWNTdGF0ZSogZXhlYywgSlNWYWx1ZSBzbG90
QmFzZSwgY29uc3QgSWRlbnRpZmllciYpCitKU1ZhbHVlIHJlZ0V4cENvbnN0cnVjdG9yRG9sbGFy
NShFeGVjU3RhdGUqIGV4ZWMsIEpTVmFsdWUgc2xvdEJhc2UsIFByb3BlcnR5TmFtZSkKIHsKICAg
ICByZXR1cm4gYXNSZWdFeHBDb25zdHJ1Y3RvcihzbG90QmFzZSktPmdldEJhY2tyZWYoZXhlYywg
NSk7CiB9CiAKLUpTVmFsdWUgcmVnRXhwQ29uc3RydWN0b3JEb2xsYXI2KEV4ZWNTdGF0ZSogZXhl
YywgSlNWYWx1ZSBzbG90QmFzZSwgY29uc3QgSWRlbnRpZmllciYpCitKU1ZhbHVlIHJlZ0V4cENv
bnN0cnVjdG9yRG9sbGFyNihFeGVjU3RhdGUqIGV4ZWMsIEpTVmFsdWUgc2xvdEJhc2UsIFByb3Bl
cnR5TmFtZSkKIHsKICAgICByZXR1cm4gYXNSZWdFeHBDb25zdHJ1Y3RvcihzbG90QmFzZSktPmdl
dEJhY2tyZWYoZXhlYywgNik7CiB9CiAKLUpTVmFsdWUgcmVnRXhwQ29uc3RydWN0b3JEb2xsYXI3
KEV4ZWNTdGF0ZSogZXhlYywgSlNWYWx1ZSBzbG90QmFzZSwgY29uc3QgSWRlbnRpZmllciYpCitK
U1ZhbHVlIHJlZ0V4cENvbnN0cnVjdG9yRG9sbGFyNyhFeGVjU3RhdGUqIGV4ZWMsIEpTVmFsdWUg
c2xvdEJhc2UsIFByb3BlcnR5TmFtZSkKIHsKICAgICByZXR1cm4gYXNSZWdFeHBDb25zdHJ1Y3Rv
cihzbG90QmFzZSktPmdldEJhY2tyZWYoZXhlYywgNyk7CiB9CiAKLUpTVmFsdWUgcmVnRXhwQ29u
c3RydWN0b3JEb2xsYXI4KEV4ZWNTdGF0ZSogZXhlYywgSlNWYWx1ZSBzbG90QmFzZSwgY29uc3Qg
SWRlbnRpZmllciYpCitKU1ZhbHVlIHJlZ0V4cENvbnN0cnVjdG9yRG9sbGFyOChFeGVjU3RhdGUq
IGV4ZWMsIEpTVmFsdWUgc2xvdEJhc2UsIFByb3BlcnR5TmFtZSkKIHsKICAgICByZXR1cm4gYXNS
ZWdFeHBDb25zdHJ1Y3RvcihzbG90QmFzZSktPmdldEJhY2tyZWYoZXhlYywgOCk7CiB9CiAKLUpT
VmFsdWUgcmVnRXhwQ29uc3RydWN0b3JEb2xsYXI5KEV4ZWNTdGF0ZSogZXhlYywgSlNWYWx1ZSBz
bG90QmFzZSwgY29uc3QgSWRlbnRpZmllciYpCitKU1ZhbHVlIHJlZ0V4cENvbnN0cnVjdG9yRG9s
bGFyOShFeGVjU3RhdGUqIGV4ZWMsIEpTVmFsdWUgc2xvdEJhc2UsIFByb3BlcnR5TmFtZSkKIHsK
ICAgICByZXR1cm4gYXNSZWdFeHBDb25zdHJ1Y3RvcihzbG90QmFzZSktPmdldEJhY2tyZWYoZXhl
YywgOSk7CiB9CiAKLUpTVmFsdWUgcmVnRXhwQ29uc3RydWN0b3JJbnB1dChFeGVjU3RhdGUqLCBK
U1ZhbHVlIHNsb3RCYXNlLCBjb25zdCBJZGVudGlmaWVyJikKK0pTVmFsdWUgcmVnRXhwQ29uc3Ry
dWN0b3JJbnB1dChFeGVjU3RhdGUqLCBKU1ZhbHVlIHNsb3RCYXNlLCBQcm9wZXJ0eU5hbWUpCiB7
CiAgICAgcmV0dXJuIGFzUmVnRXhwQ29uc3RydWN0b3Ioc2xvdEJhc2UpLT5pbnB1dCgpOwogfQog
Ci1KU1ZhbHVlIHJlZ0V4cENvbnN0cnVjdG9yTXVsdGlsaW5lKEV4ZWNTdGF0ZSosIEpTVmFsdWUg
c2xvdEJhc2UsIGNvbnN0IElkZW50aWZpZXImKQorSlNWYWx1ZSByZWdFeHBDb25zdHJ1Y3Rvck11
bHRpbGluZShFeGVjU3RhdGUqLCBKU1ZhbHVlIHNsb3RCYXNlLCBQcm9wZXJ0eU5hbWUpCiB7CiAg
ICAgcmV0dXJuIGpzQm9vbGVhbihhc1JlZ0V4cENvbnN0cnVjdG9yKHNsb3RCYXNlKS0+bXVsdGls
aW5lKCkpOwogfQogCi1KU1ZhbHVlIHJlZ0V4cENvbnN0cnVjdG9yTGFzdE1hdGNoKEV4ZWNTdGF0
ZSogZXhlYywgSlNWYWx1ZSBzbG90QmFzZSwgY29uc3QgSWRlbnRpZmllciYpCitKU1ZhbHVlIHJl
Z0V4cENvbnN0cnVjdG9yTGFzdE1hdGNoKEV4ZWNTdGF0ZSogZXhlYywgSlNWYWx1ZSBzbG90QmFz
ZSwgUHJvcGVydHlOYW1lKQogewogICAgIHJldHVybiBhc1JlZ0V4cENvbnN0cnVjdG9yKHNsb3RC
YXNlKS0+Z2V0QmFja3JlZihleGVjLCAwKTsKIH0KIAotSlNWYWx1ZSByZWdFeHBDb25zdHJ1Y3Rv
ckxhc3RQYXJlbihFeGVjU3RhdGUqIGV4ZWMsIEpTVmFsdWUgc2xvdEJhc2UsIGNvbnN0IElkZW50
aWZpZXImKQorSlNWYWx1ZSByZWdFeHBDb25zdHJ1Y3Rvckxhc3RQYXJlbihFeGVjU3RhdGUqIGV4
ZWMsIEpTVmFsdWUgc2xvdEJhc2UsIFByb3BlcnR5TmFtZSkKIHsKICAgICByZXR1cm4gYXNSZWdF
eHBDb25zdHJ1Y3RvcihzbG90QmFzZSktPmdldExhc3RQYXJlbihleGVjKTsKIH0KIAotSlNWYWx1
ZSByZWdFeHBDb25zdHJ1Y3RvckxlZnRDb250ZXh0KEV4ZWNTdGF0ZSogZXhlYywgSlNWYWx1ZSBz
bG90QmFzZSwgY29uc3QgSWRlbnRpZmllciYpCitKU1ZhbHVlIHJlZ0V4cENvbnN0cnVjdG9yTGVm
dENvbnRleHQoRXhlY1N0YXRlKiBleGVjLCBKU1ZhbHVlIHNsb3RCYXNlLCBQcm9wZXJ0eU5hbWUp
CiB7CiAgICAgcmV0dXJuIGFzUmVnRXhwQ29uc3RydWN0b3Ioc2xvdEJhc2UpLT5nZXRMZWZ0Q29u
dGV4dChleGVjKTsKIH0KIAotSlNWYWx1ZSByZWdFeHBDb25zdHJ1Y3RvclJpZ2h0Q29udGV4dChF
eGVjU3RhdGUqIGV4ZWMsIEpTVmFsdWUgc2xvdEJhc2UsIGNvbnN0IElkZW50aWZpZXImKQorSlNW
YWx1ZSByZWdFeHBDb25zdHJ1Y3RvclJpZ2h0Q29udGV4dChFeGVjU3RhdGUqIGV4ZWMsIEpTVmFs
dWUgc2xvdEJhc2UsIFByb3BlcnR5TmFtZSkKIHsKICAgICByZXR1cm4gYXNSZWdFeHBDb25zdHJ1
Y3RvcihzbG90QmFzZSktPmdldFJpZ2h0Q29udGV4dChleGVjKTsKIH0KIAotdm9pZCBSZWdFeHBD
b25zdHJ1Y3Rvcjo6cHV0KEpTQ2VsbCogY2VsbCwgRXhlY1N0YXRlKiBleGVjLCBjb25zdCBJZGVu
dGlmaWVyJiBwcm9wZXJ0eU5hbWUsIEpTVmFsdWUgdmFsdWUsIFB1dFByb3BlcnR5U2xvdCYgc2xv
dCkKK3ZvaWQgUmVnRXhwQ29uc3RydWN0b3I6OnB1dChKU0NlbGwqIGNlbGwsIEV4ZWNTdGF0ZSog
ZXhlYywgUHJvcGVydHlOYW1lIHByb3BlcnR5TmFtZSwgSlNWYWx1ZSB2YWx1ZSwgUHV0UHJvcGVy
dHlTbG90JiBzbG90KQogewogICAgIGxvb2t1cFB1dDxSZWdFeHBDb25zdHJ1Y3RvciwgSW50ZXJu
YWxGdW5jdGlvbj4oZXhlYywgcHJvcGVydHlOYW1lLCB2YWx1ZSwgRXhlY1N0YXRlOjpyZWdFeHBD
b25zdHJ1Y3RvclRhYmxlKGV4ZWMpLCBqc0Nhc3Q8UmVnRXhwQ29uc3RydWN0b3IqPihjZWxsKSwg
c2xvdCk7CiB9CkluZGV4OiBTb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9SZWdFeHBDb25z
dHJ1Y3Rvci5oCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL1Jl
Z0V4cENvbnN0cnVjdG9yLmgJKHJldmlzaW9uIDExNjY2NykKKysrIFNvdXJjZS9KYXZhU2NyaXB0
Q29yZS9ydW50aW1lL1JlZ0V4cENvbnN0cnVjdG9yLmgJKHdvcmtpbmcgY29weSkKQEAgLTQ4LDEw
ICs0OCwxMCBAQCBuYW1lc3BhY2UgSlNDIHsKICAgICAgICAgICAgIHJldHVybiBTdHJ1Y3R1cmU6
OmNyZWF0ZShnbG9iYWxEYXRhLCBnbG9iYWxPYmplY3QsIHByb3RvdHlwZSwgVHlwZUluZm8oT2Jq
ZWN0VHlwZSwgU3RydWN0dXJlRmxhZ3MpLCAmc19pbmZvKTsKICAgICAgICAgfQogCi0gICAgICAg
IHN0YXRpYyB2b2lkIHB1dChKU0NlbGwqLCBFeGVjU3RhdGUqLCBjb25zdCBJZGVudGlmaWVyJiBw
cm9wZXJ0eU5hbWUsIEpTVmFsdWUsIFB1dFByb3BlcnR5U2xvdCYpOworICAgICAgICBzdGF0aWMg
dm9pZCBwdXQoSlNDZWxsKiwgRXhlY1N0YXRlKiwgUHJvcGVydHlOYW1lLCBKU1ZhbHVlLCBQdXRQ
cm9wZXJ0eVNsb3QmKTsKIAotICAgICAgICBzdGF0aWMgYm9vbCBnZXRPd25Qcm9wZXJ0eVNsb3Qo
SlNDZWxsKiwgRXhlY1N0YXRlKiwgY29uc3QgSWRlbnRpZmllciYgcHJvcGVydHlOYW1lLCBQcm9w
ZXJ0eVNsb3QmKTsKLSAgICAgICAgc3RhdGljIGJvb2wgZ2V0T3duUHJvcGVydHlEZXNjcmlwdG9y
KEpTT2JqZWN0KiwgRXhlY1N0YXRlKiwgY29uc3QgSWRlbnRpZmllciYsIFByb3BlcnR5RGVzY3Jp
cHRvciYpOworICAgICAgICBzdGF0aWMgYm9vbCBnZXRPd25Qcm9wZXJ0eVNsb3QoSlNDZWxsKiwg
RXhlY1N0YXRlKiwgUHJvcGVydHlOYW1lLCBQcm9wZXJ0eVNsb3QmKTsKKyAgICAgICAgc3RhdGlj
IGJvb2wgZ2V0T3duUHJvcGVydHlEZXNjcmlwdG9yKEpTT2JqZWN0KiwgRXhlY1N0YXRlKiwgUHJv
cGVydHlOYW1lLCBQcm9wZXJ0eURlc2NyaXB0b3ImKTsKIAogICAgICAgICBzdGF0aWMgY29uc3Qg
Q2xhc3NJbmZvIHNfaW5mbzsKIApJbmRleDogU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUv
UmVnRXhwTWF0Y2hlc0FycmF5LmgKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL0phdmFTY3JpcHRDb3Jl
L3J1bnRpbWUvUmVnRXhwTWF0Y2hlc0FycmF5LmgJKHJldmlzaW9uIDExNjY2NykKKysrIFNvdXJj
ZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL1JlZ0V4cE1hdGNoZXNBcnJheS5oCSh3b3JraW5nIGNv
cHkpCkBAIC04MSw3ICs4MSw3IEBAIG5hbWVzcGFjZSBKU0MgewogICAgICAgICAgICAgICAgIHJl
aWZ5TWF0Y2hQcm9wZXJ0eShleGVjKTsKICAgICAgICAgfQogCi0gICAgICAgIHN0YXRpYyBib29s
IGdldE93blByb3BlcnR5U2xvdChKU0NlbGwqIGNlbGwsIEV4ZWNTdGF0ZSogZXhlYywgY29uc3Qg
SWRlbnRpZmllciYgcHJvcGVydHlOYW1lLCBQcm9wZXJ0eVNsb3QmIHNsb3QpCisgICAgICAgIHN0
YXRpYyBib29sIGdldE93blByb3BlcnR5U2xvdChKU0NlbGwqIGNlbGwsIEV4ZWNTdGF0ZSogZXhl
YywgUHJvcGVydHlOYW1lIHByb3BlcnR5TmFtZSwgUHJvcGVydHlTbG90JiBzbG90KQogICAgICAg
ICB7CiAgICAgICAgICAgICBSZWdFeHBNYXRjaGVzQXJyYXkqIHRoaXNPYmplY3QgPSBqc0Nhc3Q8
UmVnRXhwTWF0Y2hlc0FycmF5Kj4oY2VsbCk7CiAgICAgICAgICAgICB0aGlzT2JqZWN0LT5yZWlm
eUFsbFByb3BlcnRpZXNJZk5lY2Vzc2FyeShleGVjKTsKQEAgLTk4LDE0ICs5OCwxNCBAQCBuYW1l
c3BhY2UgSlNDIHsKICAgICAgICAgICAgIHJldHVybiBKU0FycmF5OjpnZXRPd25Qcm9wZXJ0eVNs
b3RCeUluZGV4KHRoaXNPYmplY3QsIGV4ZWMsIHByb3BlcnR5TmFtZSwgc2xvdCk7CiAgICAgICAg
IH0KIAotICAgICAgICBzdGF0aWMgYm9vbCBnZXRPd25Qcm9wZXJ0eURlc2NyaXB0b3IoSlNPYmpl
Y3QqIG9iamVjdCwgRXhlY1N0YXRlKiBleGVjLCBjb25zdCBJZGVudGlmaWVyJiBwcm9wZXJ0eU5h
bWUsIFByb3BlcnR5RGVzY3JpcHRvciYgZGVzY3JpcHRvcikKKyAgICAgICAgc3RhdGljIGJvb2wg
Z2V0T3duUHJvcGVydHlEZXNjcmlwdG9yKEpTT2JqZWN0KiBvYmplY3QsIEV4ZWNTdGF0ZSogZXhl
YywgUHJvcGVydHlOYW1lIHByb3BlcnR5TmFtZSwgUHJvcGVydHlEZXNjcmlwdG9yJiBkZXNjcmlw
dG9yKQogICAgICAgICB7CiAgICAgICAgICAgICBSZWdFeHBNYXRjaGVzQXJyYXkqIHRoaXNPYmpl
Y3QgPSBqc0Nhc3Q8UmVnRXhwTWF0Y2hlc0FycmF5Kj4ob2JqZWN0KTsKICAgICAgICAgICAgIHRo
aXNPYmplY3QtPnJlaWZ5QWxsUHJvcGVydGllc0lmTmVjZXNzYXJ5KGV4ZWMpOwogICAgICAgICAg
ICAgcmV0dXJuIEpTQXJyYXk6OmdldE93blByb3BlcnR5RGVzY3JpcHRvcih0aGlzT2JqZWN0LCBl
eGVjLCBwcm9wZXJ0eU5hbWUsIGRlc2NyaXB0b3IpOwogICAgICAgICB9CiAKLSAgICAgICAgc3Rh
dGljIHZvaWQgcHV0KEpTQ2VsbCogY2VsbCwgRXhlY1N0YXRlKiBleGVjLCBjb25zdCBJZGVudGlm
aWVyJiBwcm9wZXJ0eU5hbWUsIEpTVmFsdWUgdiwgUHV0UHJvcGVydHlTbG90JiBzbG90KQorICAg
ICAgICBzdGF0aWMgdm9pZCBwdXQoSlNDZWxsKiBjZWxsLCBFeGVjU3RhdGUqIGV4ZWMsIFByb3Bl
cnR5TmFtZSBwcm9wZXJ0eU5hbWUsIEpTVmFsdWUgdiwgUHV0UHJvcGVydHlTbG90JiBzbG90KQog
ICAgICAgICB7CiAgICAgICAgICAgICBSZWdFeHBNYXRjaGVzQXJyYXkqIHRoaXNPYmplY3QgPSBq
c0Nhc3Q8UmVnRXhwTWF0Y2hlc0FycmF5Kj4oY2VsbCk7CiAgICAgICAgICAgICB0aGlzT2JqZWN0
LT5yZWlmeUFsbFByb3BlcnRpZXNJZk5lY2Vzc2FyeShleGVjKTsKQEAgLTExOSw3ICsxMTksNyBA
QCBuYW1lc3BhY2UgSlNDIHsKICAgICAgICAgICAgIEpTQXJyYXk6OnB1dEJ5SW5kZXgodGhpc09i
amVjdCwgZXhlYywgcHJvcGVydHlOYW1lLCB2LCBzaG91bGRUaHJvdyk7CiAgICAgICAgIH0KIAot
ICAgICAgICBzdGF0aWMgYm9vbCBkZWxldGVQcm9wZXJ0eShKU0NlbGwqIGNlbGwsIEV4ZWNTdGF0
ZSogZXhlYywgY29uc3QgSWRlbnRpZmllciYgcHJvcGVydHlOYW1lKQorICAgICAgICBzdGF0aWMg
Ym9vbCBkZWxldGVQcm9wZXJ0eShKU0NlbGwqIGNlbGwsIEV4ZWNTdGF0ZSogZXhlYywgUHJvcGVy
dHlOYW1lIHByb3BlcnR5TmFtZSkKICAgICAgICAgewogICAgICAgICAgICAgUmVnRXhwTWF0Y2hl
c0FycmF5KiB0aGlzT2JqZWN0ID0ganNDYXN0PFJlZ0V4cE1hdGNoZXNBcnJheSo+KGNlbGwpOwog
ICAgICAgICAgICAgdGhpc09iamVjdC0+cmVpZnlBbGxQcm9wZXJ0aWVzSWZOZWNlc3NhcnkoZXhl
Yyk7CkBAIC0xNDAsNyArMTQwLDcgQEAgbmFtZXNwYWNlIEpTQyB7CiAgICAgICAgICAgICBKU0Fy
cmF5OjpnZXRPd25Qcm9wZXJ0eU5hbWVzKHRoaXNPYmplY3QsIGV4ZWMsIGFyciwgbW9kZSk7CiAg
ICAgICAgIH0KIAotICAgICAgICBzdGF0aWMgYm9vbCBkZWZpbmVPd25Qcm9wZXJ0eShKU09iamVj
dCogb2JqZWN0LCBFeGVjU3RhdGUqIGV4ZWMsIGNvbnN0IElkZW50aWZpZXImIHByb3BlcnR5TmFt
ZSwgUHJvcGVydHlEZXNjcmlwdG9yJiBkZXNjcmlwdG9yLCBib29sIHNob3VsZFRocm93KQorICAg
ICAgICBzdGF0aWMgYm9vbCBkZWZpbmVPd25Qcm9wZXJ0eShKU09iamVjdCogb2JqZWN0LCBFeGVj
U3RhdGUqIGV4ZWMsIFByb3BlcnR5TmFtZSBwcm9wZXJ0eU5hbWUsIFByb3BlcnR5RGVzY3JpcHRv
ciYgZGVzY3JpcHRvciwgYm9vbCBzaG91bGRUaHJvdykKICAgICAgICAgewogICAgICAgICAgICAg
UmVnRXhwTWF0Y2hlc0FycmF5KiB0aGlzT2JqZWN0ID0ganNDYXN0PFJlZ0V4cE1hdGNoZXNBcnJh
eSo+KG9iamVjdCk7CiAgICAgICAgICAgICB0aGlzT2JqZWN0LT5yZWlmeUFsbFByb3BlcnRpZXNJ
Zk5lY2Vzc2FyeShleGVjKTsKSW5kZXg6IFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL1Jl
Z0V4cE9iamVjdC5jcHAKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRp
bWUvUmVnRXhwT2JqZWN0LmNwcAkocmV2aXNpb24gMTE2NjY3KQorKysgU291cmNlL0phdmFTY3Jp
cHRDb3JlL3J1bnRpbWUvUmVnRXhwT2JqZWN0LmNwcAkod29ya2luZyBjb3B5KQpAQCAtMzcsMTAg
KzM3LDEwIEBACiAKIG5hbWVzcGFjZSBKU0MgewogCi1zdGF0aWMgSlNWYWx1ZSByZWdFeHBPYmpl
Y3RHbG9iYWwoRXhlY1N0YXRlKiwgSlNWYWx1ZSwgY29uc3QgSWRlbnRpZmllciYpOwotc3RhdGlj
IEpTVmFsdWUgcmVnRXhwT2JqZWN0SWdub3JlQ2FzZShFeGVjU3RhdGUqLCBKU1ZhbHVlLCBjb25z
dCBJZGVudGlmaWVyJik7Ci1zdGF0aWMgSlNWYWx1ZSByZWdFeHBPYmplY3RNdWx0aWxpbmUoRXhl
Y1N0YXRlKiwgSlNWYWx1ZSwgY29uc3QgSWRlbnRpZmllciYpOwotc3RhdGljIEpTVmFsdWUgcmVn
RXhwT2JqZWN0U291cmNlKEV4ZWNTdGF0ZSosIEpTVmFsdWUsIGNvbnN0IElkZW50aWZpZXImKTsK
K3N0YXRpYyBKU1ZhbHVlIHJlZ0V4cE9iamVjdEdsb2JhbChFeGVjU3RhdGUqLCBKU1ZhbHVlLCBQ
cm9wZXJ0eU5hbWUpOworc3RhdGljIEpTVmFsdWUgcmVnRXhwT2JqZWN0SWdub3JlQ2FzZShFeGVj
U3RhdGUqLCBKU1ZhbHVlLCBQcm9wZXJ0eU5hbWUpOworc3RhdGljIEpTVmFsdWUgcmVnRXhwT2Jq
ZWN0TXVsdGlsaW5lKEV4ZWNTdGF0ZSosIEpTVmFsdWUsIFByb3BlcnR5TmFtZSk7CitzdGF0aWMg
SlNWYWx1ZSByZWdFeHBPYmplY3RTb3VyY2UoRXhlY1N0YXRlKiwgSlNWYWx1ZSwgUHJvcGVydHlO
YW1lKTsKIAogfSAvLyBuYW1lc3BhY2UgSlNDCiAKQEAgLTg4LDcgKzg4LDcgQEAgdm9pZCBSZWdF
eHBPYmplY3Q6OnZpc2l0Q2hpbGRyZW4oSlNDZWxsKgogICAgICAgICB2aXNpdG9yLmFwcGVuZCgm
dGhpc09iamVjdC0+bV9sYXN0SW5kZXgpOwogfQogCi1ib29sIFJlZ0V4cE9iamVjdDo6Z2V0T3du
UHJvcGVydHlTbG90KEpTQ2VsbCogY2VsbCwgRXhlY1N0YXRlKiBleGVjLCBjb25zdCBJZGVudGlm
aWVyJiBwcm9wZXJ0eU5hbWUsIFByb3BlcnR5U2xvdCYgc2xvdCkKK2Jvb2wgUmVnRXhwT2JqZWN0
OjpnZXRPd25Qcm9wZXJ0eVNsb3QoSlNDZWxsKiBjZWxsLCBFeGVjU3RhdGUqIGV4ZWMsIFByb3Bl
cnR5TmFtZSBwcm9wZXJ0eU5hbWUsIFByb3BlcnR5U2xvdCYgc2xvdCkKIHsKICAgICBpZiAocHJv
cGVydHlOYW1lID09IGV4ZWMtPnByb3BlcnR5TmFtZXMoKS5sYXN0SW5kZXgpIHsKICAgICAgICAg
UmVnRXhwT2JqZWN0KiByZWdFeHAgPSBhc1JlZ0V4cE9iamVjdChjZWxsKTsKQEAgLTk4LDcgKzk4
LDcgQEAgYm9vbCBSZWdFeHBPYmplY3Q6OmdldE93blByb3BlcnR5U2xvdChKUwogICAgIHJldHVy
biBnZXRTdGF0aWNWYWx1ZVNsb3Q8UmVnRXhwT2JqZWN0LCBKU09iamVjdD4oZXhlYywgRXhlY1N0
YXRlOjpyZWdFeHBUYWJsZShleGVjKSwganNDYXN0PFJlZ0V4cE9iamVjdCo+KGNlbGwpLCBwcm9w
ZXJ0eU5hbWUsIHNsb3QpOwogfQogCi1ib29sIFJlZ0V4cE9iamVjdDo6Z2V0T3duUHJvcGVydHlE
ZXNjcmlwdG9yKEpTT2JqZWN0KiBvYmplY3QsIEV4ZWNTdGF0ZSogZXhlYywgY29uc3QgSWRlbnRp
ZmllciYgcHJvcGVydHlOYW1lLCBQcm9wZXJ0eURlc2NyaXB0b3ImIGRlc2NyaXB0b3IpCitib29s
IFJlZ0V4cE9iamVjdDo6Z2V0T3duUHJvcGVydHlEZXNjcmlwdG9yKEpTT2JqZWN0KiBvYmplY3Qs
IEV4ZWNTdGF0ZSogZXhlYywgUHJvcGVydHlOYW1lIHByb3BlcnR5TmFtZSwgUHJvcGVydHlEZXNj
cmlwdG9yJiBkZXNjcmlwdG9yKQogewogICAgIGlmIChwcm9wZXJ0eU5hbWUgPT0gZXhlYy0+cHJv
cGVydHlOYW1lcygpLmxhc3RJbmRleCkgewogICAgICAgICBSZWdFeHBPYmplY3QqIHJlZ0V4cCA9
IGFzUmVnRXhwT2JqZWN0KG9iamVjdCk7CkBAIC0xMDgsNyArMTA4LDcgQEAgYm9vbCBSZWdFeHBP
YmplY3Q6OmdldE93blByb3BlcnR5RGVzY3JpcAogICAgIHJldHVybiBnZXRTdGF0aWNWYWx1ZURl
c2NyaXB0b3I8UmVnRXhwT2JqZWN0LCBKU09iamVjdD4oZXhlYywgRXhlY1N0YXRlOjpyZWdFeHBU
YWJsZShleGVjKSwganNDYXN0PFJlZ0V4cE9iamVjdCo+KG9iamVjdCksIHByb3BlcnR5TmFtZSwg
ZGVzY3JpcHRvcik7CiB9CiAKLWJvb2wgUmVnRXhwT2JqZWN0OjpkZWxldGVQcm9wZXJ0eShKU0Nl
bGwqIGNlbGwsIEV4ZWNTdGF0ZSogZXhlYywgY29uc3QgSWRlbnRpZmllciYgcHJvcGVydHlOYW1l
KQorYm9vbCBSZWdFeHBPYmplY3Q6OmRlbGV0ZVByb3BlcnR5KEpTQ2VsbCogY2VsbCwgRXhlY1N0
YXRlKiBleGVjLCBQcm9wZXJ0eU5hbWUgcHJvcGVydHlOYW1lKQogewogICAgIGlmIChwcm9wZXJ0
eU5hbWUgPT0gZXhlYy0+cHJvcGVydHlOYW1lcygpLmxhc3RJbmRleCkKICAgICAgICAgcmV0dXJu
IGZhbHNlOwpAQCAtMTM2LDcgKzEzNiw3IEBAIHN0YXRpYyBib29sIHJlamVjdChFeGVjU3RhdGUq
IGV4ZWMsIGJvb2wKICAgICByZXR1cm4gZmFsc2U7CiB9CiAKLWJvb2wgUmVnRXhwT2JqZWN0Ojpk
ZWZpbmVPd25Qcm9wZXJ0eShKU09iamVjdCogb2JqZWN0LCBFeGVjU3RhdGUqIGV4ZWMsIGNvbnN0
IElkZW50aWZpZXImIHByb3BlcnR5TmFtZSwgUHJvcGVydHlEZXNjcmlwdG9yJiBkZXNjcmlwdG9y
LCBib29sIHNob3VsZFRocm93KQorYm9vbCBSZWdFeHBPYmplY3Q6OmRlZmluZU93blByb3BlcnR5
KEpTT2JqZWN0KiBvYmplY3QsIEV4ZWNTdGF0ZSogZXhlYywgUHJvcGVydHlOYW1lIHByb3BlcnR5
TmFtZSwgUHJvcGVydHlEZXNjcmlwdG9yJiBkZXNjcmlwdG9yLCBib29sIHNob3VsZFRocm93KQog
ewogICAgIGlmIChwcm9wZXJ0eU5hbWUgPT0gZXhlYy0+cHJvcGVydHlOYW1lcygpLmxhc3RJbmRl
eCkgewogICAgICAgICBSZWdFeHBPYmplY3QqIHJlZ0V4cCA9IGFzUmVnRXhwT2JqZWN0KG9iamVj
dCk7CkBAIC0xNjMsMjIgKzE2MywyMiBAQCBib29sIFJlZ0V4cE9iamVjdDo6ZGVmaW5lT3duUHJv
cGVydHkoSlNPCiAgICAgcmV0dXJuIEJhc2U6OmRlZmluZU93blByb3BlcnR5KG9iamVjdCwgZXhl
YywgcHJvcGVydHlOYW1lLCBkZXNjcmlwdG9yLCBzaG91bGRUaHJvdyk7CiB9CiAKLUpTVmFsdWUg
cmVnRXhwT2JqZWN0R2xvYmFsKEV4ZWNTdGF0ZSosIEpTVmFsdWUgc2xvdEJhc2UsIGNvbnN0IElk
ZW50aWZpZXImKQorSlNWYWx1ZSByZWdFeHBPYmplY3RHbG9iYWwoRXhlY1N0YXRlKiwgSlNWYWx1
ZSBzbG90QmFzZSwgUHJvcGVydHlOYW1lKQogewogICAgIHJldHVybiBqc0Jvb2xlYW4oYXNSZWdF
eHBPYmplY3Qoc2xvdEJhc2UpLT5yZWdFeHAoKS0+Z2xvYmFsKCkpOwogfQogCi1KU1ZhbHVlIHJl
Z0V4cE9iamVjdElnbm9yZUNhc2UoRXhlY1N0YXRlKiwgSlNWYWx1ZSBzbG90QmFzZSwgY29uc3Qg
SWRlbnRpZmllciYpCitKU1ZhbHVlIHJlZ0V4cE9iamVjdElnbm9yZUNhc2UoRXhlY1N0YXRlKiwg
SlNWYWx1ZSBzbG90QmFzZSwgUHJvcGVydHlOYW1lKQogewogICAgIHJldHVybiBqc0Jvb2xlYW4o
YXNSZWdFeHBPYmplY3Qoc2xvdEJhc2UpLT5yZWdFeHAoKS0+aWdub3JlQ2FzZSgpKTsKIH0KICAK
LUpTVmFsdWUgcmVnRXhwT2JqZWN0TXVsdGlsaW5lKEV4ZWNTdGF0ZSosIEpTVmFsdWUgc2xvdEJh
c2UsIGNvbnN0IElkZW50aWZpZXImKQorSlNWYWx1ZSByZWdFeHBPYmplY3RNdWx0aWxpbmUoRXhl
Y1N0YXRlKiwgSlNWYWx1ZSBzbG90QmFzZSwgUHJvcGVydHlOYW1lKQogeyAgICAgICAgICAgIAog
ICAgIHJldHVybiBqc0Jvb2xlYW4oYXNSZWdFeHBPYmplY3Qoc2xvdEJhc2UpLT5yZWdFeHAoKS0+
bXVsdGlsaW5lKCkpOwogfQogCi1KU1ZhbHVlIHJlZ0V4cE9iamVjdFNvdXJjZShFeGVjU3RhdGUq
IGV4ZWMsIEpTVmFsdWUgc2xvdEJhc2UsIGNvbnN0IElkZW50aWZpZXImKQorSlNWYWx1ZSByZWdF
eHBPYmplY3RTb3VyY2UoRXhlY1N0YXRlKiBleGVjLCBKU1ZhbHVlIHNsb3RCYXNlLCBQcm9wZXJ0
eU5hbWUpCiB7CiAgICAgVVN0cmluZyBwYXR0ZXJuID0gYXNSZWdFeHBPYmplY3Qoc2xvdEJhc2Up
LT5yZWdFeHAoKS0+cGF0dGVybigpOwogICAgIHVuc2lnbmVkIGxlbmd0aCA9IHBhdHRlcm4ubGVu
Z3RoKCk7CkBAIC0yNjgsNyArMjY4LDcgQEAgSlNWYWx1ZSByZWdFeHBPYmplY3RTb3VyY2UoRXhl
Y1N0YXRlKiBleAogICAgIHJldHVybiBqc1N0cmluZyhleGVjLCByZXN1bHQudG9VU3RyaW5nKCkp
OwogfQogCi12b2lkIFJlZ0V4cE9iamVjdDo6cHV0KEpTQ2VsbCogY2VsbCwgRXhlY1N0YXRlKiBl
eGVjLCBjb25zdCBJZGVudGlmaWVyJiBwcm9wZXJ0eU5hbWUsIEpTVmFsdWUgdmFsdWUsIFB1dFBy
b3BlcnR5U2xvdCYgc2xvdCkKK3ZvaWQgUmVnRXhwT2JqZWN0OjpwdXQoSlNDZWxsKiBjZWxsLCBF
eGVjU3RhdGUqIGV4ZWMsIFByb3BlcnR5TmFtZSBwcm9wZXJ0eU5hbWUsIEpTVmFsdWUgdmFsdWUs
IFB1dFByb3BlcnR5U2xvdCYgc2xvdCkKIHsKICAgICBpZiAocHJvcGVydHlOYW1lID09IGV4ZWMt
PnByb3BlcnR5TmFtZXMoKS5sYXN0SW5kZXgpIHsKICAgICAgICAgYXNSZWdFeHBPYmplY3QoY2Vs
bCktPnNldExhc3RJbmRleChleGVjLCB2YWx1ZSwgc2xvdC5pc1N0cmljdE1vZGUoKSk7CkluZGV4
OiBTb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9SZWdFeHBPYmplY3QuaAo9PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
Ci0tLSBTb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9SZWdFeHBPYmplY3QuaAkocmV2aXNp
b24gMTE2NjY3KQorKysgU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvUmVnRXhwT2JqZWN0
LmgJKHdvcmtpbmcgY29weSkKQEAgLTcwLDkgKzcwLDkgQEAgbmFtZXNwYWNlIEpTQyB7CiAgICAg
ICAgIGJvb2wgdGVzdChFeGVjU3RhdGUqIGV4ZWMsIEpTU3RyaW5nKiBzdHJpbmcpIHsgcmV0dXJu
IG1hdGNoKGV4ZWMsIHN0cmluZyk7IH0KICAgICAgICAgSlNWYWx1ZSBleGVjKEV4ZWNTdGF0ZSos
IEpTU3RyaW5nKik7CiAKLSAgICAgICAgc3RhdGljIGJvb2wgZ2V0T3duUHJvcGVydHlTbG90KEpT
Q2VsbCosIEV4ZWNTdGF0ZSosIGNvbnN0IElkZW50aWZpZXImIHByb3BlcnR5TmFtZSwgUHJvcGVy
dHlTbG90Jik7Ci0gICAgICAgIHN0YXRpYyBib29sIGdldE93blByb3BlcnR5RGVzY3JpcHRvcihK
U09iamVjdCosIEV4ZWNTdGF0ZSosIGNvbnN0IElkZW50aWZpZXImLCBQcm9wZXJ0eURlc2NyaXB0
b3ImKTsKLSAgICAgICAgc3RhdGljIHZvaWQgcHV0KEpTQ2VsbCosIEV4ZWNTdGF0ZSosIGNvbnN0
IElkZW50aWZpZXImIHByb3BlcnR5TmFtZSwgSlNWYWx1ZSwgUHV0UHJvcGVydHlTbG90Jik7Cisg
ICAgICAgIHN0YXRpYyBib29sIGdldE93blByb3BlcnR5U2xvdChKU0NlbGwqLCBFeGVjU3RhdGUq
LCBQcm9wZXJ0eU5hbWUsIFByb3BlcnR5U2xvdCYpOworICAgICAgICBzdGF0aWMgYm9vbCBnZXRP
d25Qcm9wZXJ0eURlc2NyaXB0b3IoSlNPYmplY3QqLCBFeGVjU3RhdGUqLCBQcm9wZXJ0eU5hbWUs
IFByb3BlcnR5RGVzY3JpcHRvciYpOworICAgICAgICBzdGF0aWMgdm9pZCBwdXQoSlNDZWxsKiwg
RXhlY1N0YXRlKiwgUHJvcGVydHlOYW1lLCBKU1ZhbHVlLCBQdXRQcm9wZXJ0eVNsb3QmKTsKIAog
ICAgICAgICBzdGF0aWMgSlNfRVhQT1JUREFUQSBjb25zdCBDbGFzc0luZm8gc19pbmZvOwogCkBA
IC04OSwxMCArODksMTAgQEAgbmFtZXNwYWNlIEpTQyB7CiAKICAgICAgICAgc3RhdGljIHZvaWQg
dmlzaXRDaGlsZHJlbihKU0NlbGwqLCBTbG90VmlzaXRvciYpOwogCi0gICAgICAgIEpTX0VYUE9S
VF9QUklWQVRFIHN0YXRpYyBib29sIGRlbGV0ZVByb3BlcnR5KEpTQ2VsbCosIEV4ZWNTdGF0ZSos
IGNvbnN0IElkZW50aWZpZXImIHByb3BlcnR5TmFtZSk7CisgICAgICAgIEpTX0VYUE9SVF9QUklW
QVRFIHN0YXRpYyBib29sIGRlbGV0ZVByb3BlcnR5KEpTQ2VsbCosIEV4ZWNTdGF0ZSosIFByb3Bl
cnR5TmFtZSk7CiAgICAgICAgIEpTX0VYUE9SVF9QUklWQVRFIHN0YXRpYyB2b2lkIGdldE93blBy
b3BlcnR5TmFtZXMoSlNPYmplY3QqLCBFeGVjU3RhdGUqLCBQcm9wZXJ0eU5hbWVBcnJheSYsIEVu
dW1lcmF0aW9uTW9kZSk7CiAgICAgICAgIEpTX0VYUE9SVF9QUklWQVRFIHN0YXRpYyB2b2lkIGdl
dFByb3BlcnR5TmFtZXMoSlNPYmplY3QqLCBFeGVjU3RhdGUqLCBQcm9wZXJ0eU5hbWVBcnJheSYs
IEVudW1lcmF0aW9uTW9kZSk7Ci0gICAgICAgIEpTX0VYUE9SVF9QUklWQVRFIHN0YXRpYyBib29s
IGRlZmluZU93blByb3BlcnR5KEpTT2JqZWN0KiwgRXhlY1N0YXRlKiwgY29uc3QgSWRlbnRpZmll
ciYgcHJvcGVydHlOYW1lLCBQcm9wZXJ0eURlc2NyaXB0b3ImLCBib29sIHNob3VsZFRocm93KTsK
KyAgICAgICAgSlNfRVhQT1JUX1BSSVZBVEUgc3RhdGljIGJvb2wgZGVmaW5lT3duUHJvcGVydHko
SlNPYmplY3QqLCBFeGVjU3RhdGUqLCBQcm9wZXJ0eU5hbWUsIFByb3BlcnR5RGVzY3JpcHRvciYs
IGJvb2wgc2hvdWxkVGhyb3cpOwogCiAgICAgcHJpdmF0ZToKICAgICAgICAgTWF0Y2hSZXN1bHQg
bWF0Y2goRXhlY1N0YXRlKiwgSlNTdHJpbmcqKTsKSW5kZXg6IFNvdXJjZS9KYXZhU2NyaXB0Q29y
ZS9ydW50aW1lL1JlZ0V4cFByb3RvdHlwZS5jcHAKPT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL0phdmFT
Y3JpcHRDb3JlL3J1bnRpbWUvUmVnRXhwUHJvdG90eXBlLmNwcAkocmV2aXNpb24gMTE2NjY3KQor
KysgU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvUmVnRXhwUHJvdG90eXBlLmNwcAkod29y
a2luZyBjb3B5KQpAQCAtNjcsMTIgKzY3LDEyIEBAIFJlZ0V4cFByb3RvdHlwZTo6UmVnRXhwUHJv
dG90eXBlKEpTR2xvYmEKIHsKIH0KIAotYm9vbCBSZWdFeHBQcm90b3R5cGU6OmdldE93blByb3Bl
cnR5U2xvdChKU0NlbGwqIGNlbGwsIEV4ZWNTdGF0ZSogZXhlYywgY29uc3QgSWRlbnRpZmllciYg
cHJvcGVydHlOYW1lLCBQcm9wZXJ0eVNsb3QgJnNsb3QpCitib29sIFJlZ0V4cFByb3RvdHlwZTo6
Z2V0T3duUHJvcGVydHlTbG90KEpTQ2VsbCogY2VsbCwgRXhlY1N0YXRlKiBleGVjLCBQcm9wZXJ0
eU5hbWUgcHJvcGVydHlOYW1lLCBQcm9wZXJ0eVNsb3QgJnNsb3QpCiB7CiAgICAgcmV0dXJuIGdl
dFN0YXRpY0Z1bmN0aW9uU2xvdDxSZWdFeHBPYmplY3Q+KGV4ZWMsIEV4ZWNTdGF0ZTo6cmVnRXhw
UHJvdG90eXBlVGFibGUoZXhlYyksIGpzQ2FzdDxSZWdFeHBQcm90b3R5cGUqPihjZWxsKSwgcHJv
cGVydHlOYW1lLCBzbG90KTsKIH0KIAotYm9vbCBSZWdFeHBQcm90b3R5cGU6OmdldE93blByb3Bl
cnR5RGVzY3JpcHRvcihKU09iamVjdCogb2JqZWN0LCBFeGVjU3RhdGUqIGV4ZWMsIGNvbnN0IElk
ZW50aWZpZXImIHByb3BlcnR5TmFtZSwgUHJvcGVydHlEZXNjcmlwdG9yJiBkZXNjcmlwdG9yKQor
Ym9vbCBSZWdFeHBQcm90b3R5cGU6OmdldE93blByb3BlcnR5RGVzY3JpcHRvcihKU09iamVjdCog
b2JqZWN0LCBFeGVjU3RhdGUqIGV4ZWMsIFByb3BlcnR5TmFtZSBwcm9wZXJ0eU5hbWUsIFByb3Bl
cnR5RGVzY3JpcHRvciYgZGVzY3JpcHRvcikKIHsKICAgICByZXR1cm4gZ2V0U3RhdGljRnVuY3Rp
b25EZXNjcmlwdG9yPFJlZ0V4cE9iamVjdD4oZXhlYywgRXhlY1N0YXRlOjpyZWdFeHBQcm90b3R5
cGVUYWJsZShleGVjKSwganNDYXN0PFJlZ0V4cFByb3RvdHlwZSo+KG9iamVjdCksIHByb3BlcnR5
TmFtZSwgZGVzY3JpcHRvcik7CiB9CkluZGV4OiBTb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGlt
ZS9SZWdFeHBQcm90b3R5cGUuaAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvSmF2YVNjcmlwdENvcmUv
cnVudGltZS9SZWdFeHBQcm90b3R5cGUuaAkocmV2aXNpb24gMTE2NjY3KQorKysgU291cmNlL0ph
dmFTY3JpcHRDb3JlL3J1bnRpbWUvUmVnRXhwUHJvdG90eXBlLmgJKHdvcmtpbmcgY29weSkKQEAg
LTQ5LDggKzQ5LDggQEAgbmFtZXNwYWNlIEpTQyB7CiAgICAgICAgIHN0YXRpYyBjb25zdCB1bnNp
Z25lZCBTdHJ1Y3R1cmVGbGFncyA9IE92ZXJyaWRlc0dldE93blByb3BlcnR5U2xvdCB8IFJlZ0V4
cE9iamVjdDo6U3RydWN0dXJlRmxhZ3M7CiAKICAgICBwcml2YXRlOgotICAgICAgICBzdGF0aWMg
Ym9vbCBnZXRPd25Qcm9wZXJ0eVNsb3QoSlNDZWxsKiwgRXhlY1N0YXRlKiwgY29uc3QgSWRlbnRp
ZmllciYsIFByb3BlcnR5U2xvdCYpOwotICAgICAgICBzdGF0aWMgYm9vbCBnZXRPd25Qcm9wZXJ0
eURlc2NyaXB0b3IoSlNPYmplY3QqLCBFeGVjU3RhdGUqLCBjb25zdCBJZGVudGlmaWVyJiwgUHJv
cGVydHlEZXNjcmlwdG9yJik7CisgICAgICAgIHN0YXRpYyBib29sIGdldE93blByb3BlcnR5U2xv
dChKU0NlbGwqLCBFeGVjU3RhdGUqLCBQcm9wZXJ0eU5hbWUsIFByb3BlcnR5U2xvdCYpOworICAg
ICAgICBzdGF0aWMgYm9vbCBnZXRPd25Qcm9wZXJ0eURlc2NyaXB0b3IoSlNPYmplY3QqLCBFeGVj
U3RhdGUqLCBQcm9wZXJ0eU5hbWUsIFByb3BlcnR5RGVzY3JpcHRvciYpOwogICAgIH07CiAKIH0g
Ly8gbmFtZXNwYWNlIEpTQwpJbmRleDogU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvU3Ry
aWN0RXZhbEFjdGl2YXRpb24uY3BwCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9KYXZhU2NyaXB0Q29y
ZS9ydW50aW1lL1N0cmljdEV2YWxBY3RpdmF0aW9uLmNwcAkocmV2aXNpb24gMTE2NjY3KQorKysg
U291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvU3RyaWN0RXZhbEFjdGl2YXRpb24uY3BwCSh3
b3JraW5nIGNvcHkpCkBAIC0zNyw3ICszNyw3IEBAIFN0cmljdEV2YWxBY3RpdmF0aW9uOjpTdHJp
Y3RFdmFsQWN0aXZhdGkKIHsKIH0KIAotYm9vbCBTdHJpY3RFdmFsQWN0aXZhdGlvbjo6ZGVsZXRl
UHJvcGVydHkoSlNDZWxsKiwgRXhlY1N0YXRlKiwgY29uc3QgSWRlbnRpZmllciYpCitib29sIFN0
cmljdEV2YWxBY3RpdmF0aW9uOjpkZWxldGVQcm9wZXJ0eShKU0NlbGwqLCBFeGVjU3RhdGUqLCBQ
cm9wZXJ0eU5hbWUpCiB7CiAgICAgcmV0dXJuIGZhbHNlOwogfQpJbmRleDogU291cmNlL0phdmFT
Y3JpcHRDb3JlL3J1bnRpbWUvU3RyaWN0RXZhbEFjdGl2YXRpb24uaAo9PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBT
b3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9TdHJpY3RFdmFsQWN0aXZhdGlvbi5oCShyZXZp
c2lvbiAxMTY2NjcpCisrKyBTb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9TdHJpY3RFdmFs
QWN0aXZhdGlvbi5oCSh3b3JraW5nIGNvcHkpCkBAIC00MSw3ICs0MSw3IEBAIHB1YmxpYzoKICAg
ICAgICAgcmV0dXJuIGFjdGl2YXRpb247CiAgICAgfQogCi0gICAgc3RhdGljIGJvb2wgZGVsZXRl
UHJvcGVydHkoSlNDZWxsKiwgRXhlY1N0YXRlKiwgY29uc3QgSWRlbnRpZmllciYpOworICAgIHN0
YXRpYyBib29sIGRlbGV0ZVByb3BlcnR5KEpTQ2VsbCosIEV4ZWNTdGF0ZSosIFByb3BlcnR5TmFt
ZSk7CiAgICAgc3RhdGljIEpTT2JqZWN0KiB0b1RoaXNPYmplY3QoSlNDZWxsKiwgRXhlY1N0YXRl
Kik7CiAKICAgICBzdGF0aWMgU3RydWN0dXJlKiBjcmVhdGVTdHJ1Y3R1cmUoSlNHbG9iYWxEYXRh
JiBnbG9iYWxEYXRhLCBKU0dsb2JhbE9iamVjdCogZ2xvYmFsT2JqZWN0LCBKU1ZhbHVlIHByb3Rv
dHlwZSkKSW5kZXg6IFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL1N0cmluZ0NvbnN0cnVj
dG9yLmNwcAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9TdHJp
bmdDb25zdHJ1Y3Rvci5jcHAJKHJldmlzaW9uIDExNjY2NykKKysrIFNvdXJjZS9KYXZhU2NyaXB0
Q29yZS9ydW50aW1lL1N0cmluZ0NvbnN0cnVjdG9yLmNwcAkod29ya2luZyBjb3B5KQpAQCAtNTUs
MTcgKzU1LDE3IEBAIFN0cmluZ0NvbnN0cnVjdG9yOjpTdHJpbmdDb25zdHJ1Y3RvcihKU0cKIAog
dm9pZCBTdHJpbmdDb25zdHJ1Y3Rvcjo6ZmluaXNoQ3JlYXRpb24oRXhlY1N0YXRlKiBleGVjLCBT
dHJpbmdQcm90b3R5cGUqIHN0cmluZ1Byb3RvdHlwZSkKIHsKLSAgICBCYXNlOjpmaW5pc2hDcmVh
dGlvbihleGVjLT5nbG9iYWxEYXRhKCksIElkZW50aWZpZXIoZXhlYywgc3RyaW5nUHJvdG90eXBl
LT5jbGFzc0luZm8oKS0+Y2xhc3NOYW1lKSk7CisgICAgQmFzZTo6ZmluaXNoQ3JlYXRpb24oZXhl
Yy0+Z2xvYmFsRGF0YSgpLCBzdHJpbmdQcm90b3R5cGUtPmNsYXNzSW5mbygpLT5jbGFzc05hbWUp
OwogICAgIHB1dERpcmVjdFdpdGhvdXRUcmFuc2l0aW9uKGV4ZWMtPmdsb2JhbERhdGEoKSwgZXhl
Yy0+cHJvcGVydHlOYW1lcygpLnByb3RvdHlwZSwgc3RyaW5nUHJvdG90eXBlLCBSZWFkT25seSB8
IERvbnRFbnVtIHwgRG9udERlbGV0ZSk7CiAgICAgcHV0RGlyZWN0V2l0aG91dFRyYW5zaXRpb24o
ZXhlYy0+Z2xvYmFsRGF0YSgpLCBleGVjLT5wcm9wZXJ0eU5hbWVzKCkubGVuZ3RoLCBqc051bWJl
cigxKSwgUmVhZE9ubHkgfCBEb250RW51bSB8IERvbnREZWxldGUpOwogfQogCi1ib29sIFN0cmlu
Z0NvbnN0cnVjdG9yOjpnZXRPd25Qcm9wZXJ0eVNsb3QoSlNDZWxsKiBjZWxsLCBFeGVjU3RhdGUq
IGV4ZWMsIGNvbnN0IElkZW50aWZpZXImIHByb3BlcnR5TmFtZSwgUHJvcGVydHlTbG90ICZzbG90
KQorYm9vbCBTdHJpbmdDb25zdHJ1Y3Rvcjo6Z2V0T3duUHJvcGVydHlTbG90KEpTQ2VsbCogY2Vs
bCwgRXhlY1N0YXRlKiBleGVjLCBQcm9wZXJ0eU5hbWUgcHJvcGVydHlOYW1lLCBQcm9wZXJ0eVNs
b3QgJnNsb3QpCiB7CiAgICAgcmV0dXJuIGdldFN0YXRpY0Z1bmN0aW9uU2xvdDxJbnRlcm5hbEZ1
bmN0aW9uPihleGVjLCBFeGVjU3RhdGU6OnN0cmluZ0NvbnN0cnVjdG9yVGFibGUoZXhlYyksIGpz
Q2FzdDxTdHJpbmdDb25zdHJ1Y3Rvcio+KGNlbGwpLCBwcm9wZXJ0eU5hbWUsIHNsb3QpOwogfQog
Ci1ib29sIFN0cmluZ0NvbnN0cnVjdG9yOjpnZXRPd25Qcm9wZXJ0eURlc2NyaXB0b3IoSlNPYmpl
Y3QqIG9iamVjdCwgRXhlY1N0YXRlKiBleGVjLCBjb25zdCBJZGVudGlmaWVyJiBwcm9wZXJ0eU5h
bWUsIFByb3BlcnR5RGVzY3JpcHRvciYgZGVzY3JpcHRvcikKK2Jvb2wgU3RyaW5nQ29uc3RydWN0
b3I6OmdldE93blByb3BlcnR5RGVzY3JpcHRvcihKU09iamVjdCogb2JqZWN0LCBFeGVjU3RhdGUq
IGV4ZWMsIFByb3BlcnR5TmFtZSBwcm9wZXJ0eU5hbWUsIFByb3BlcnR5RGVzY3JpcHRvciYgZGVz
Y3JpcHRvcikKIHsKICAgICByZXR1cm4gZ2V0U3RhdGljRnVuY3Rpb25EZXNjcmlwdG9yPEludGVy
bmFsRnVuY3Rpb24+KGV4ZWMsIEV4ZWNTdGF0ZTo6c3RyaW5nQ29uc3RydWN0b3JUYWJsZShleGVj
KSwganNDYXN0PFN0cmluZ0NvbnN0cnVjdG9yKj4ob2JqZWN0KSwgcHJvcGVydHlOYW1lLCBkZXNj
cmlwdG9yKTsKIH0KSW5kZXg6IFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL1N0cmluZ0Nv
bnN0cnVjdG9yLmgKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUv
U3RyaW5nQ29uc3RydWN0b3IuaAkocmV2aXNpb24gMTE2NjY3KQorKysgU291cmNlL0phdmFTY3Jp
cHRDb3JlL3J1bnRpbWUvU3RyaW5nQ29uc3RydWN0b3IuaAkod29ya2luZyBjb3B5KQpAQCAtNTQs
OCArNTQsOCBAQCBuYW1lc3BhY2UgSlNDIHsKICAgICAgICAgc3RhdGljIENvbnN0cnVjdFR5cGUg
Z2V0Q29uc3RydWN0RGF0YShKU0NlbGwqLCBDb25zdHJ1Y3REYXRhJik7CiAgICAgICAgIHN0YXRp
YyBDYWxsVHlwZSBnZXRDYWxsRGF0YShKU0NlbGwqLCBDYWxsRGF0YSYpOwogCi0gICAgICAgIHN0
YXRpYyBib29sIGdldE93blByb3BlcnR5U2xvdChKU0NlbGwqLCBFeGVjU3RhdGUqLCBjb25zdCBJ
ZGVudGlmaWVyJiwgUHJvcGVydHlTbG90Jik7Ci0gICAgICAgIHN0YXRpYyBib29sIGdldE93blBy
b3BlcnR5RGVzY3JpcHRvcihKU09iamVjdCosIEV4ZWNTdGF0ZSosIGNvbnN0IElkZW50aWZpZXIm
LCBQcm9wZXJ0eURlc2NyaXB0b3ImKTsKKyAgICAgICAgc3RhdGljIGJvb2wgZ2V0T3duUHJvcGVy
dHlTbG90KEpTQ2VsbCosIEV4ZWNTdGF0ZSosIFByb3BlcnR5TmFtZSwgUHJvcGVydHlTbG90Jik7
CisgICAgICAgIHN0YXRpYyBib29sIGdldE93blByb3BlcnR5RGVzY3JpcHRvcihKU09iamVjdCos
IEV4ZWNTdGF0ZSosIFByb3BlcnR5TmFtZSwgUHJvcGVydHlEZXNjcmlwdG9yJik7CiAgICAgfTsK
IAogfSAvLyBuYW1lc3BhY2UgSlNDCkluZGV4OiBTb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGlt
ZS9TdHJpbmdPYmplY3QuY3BwCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9y
dW50aW1lL1N0cmluZ09iamVjdC5jcHAJKHJldmlzaW9uIDExNjY2NykKKysrIFNvdXJjZS9KYXZh
U2NyaXB0Q29yZS9ydW50aW1lL1N0cmluZ09iamVjdC5jcHAJKHdvcmtpbmcgY29weSkKQEAgLTQz
LDcgKzQzLDcgQEAgdm9pZCBTdHJpbmdPYmplY3Q6OmZpbmlzaENyZWF0aW9uKEpTR2xvYgogICAg
IHNldEludGVybmFsVmFsdWUoZ2xvYmFsRGF0YSwgc3RyaW5nKTsKIH0KIAotYm9vbCBTdHJpbmdP
YmplY3Q6OmdldE93blByb3BlcnR5U2xvdChKU0NlbGwqIGNlbGwsIEV4ZWNTdGF0ZSogZXhlYywg
Y29uc3QgSWRlbnRpZmllciYgcHJvcGVydHlOYW1lLCBQcm9wZXJ0eVNsb3QmIHNsb3QpCitib29s
IFN0cmluZ09iamVjdDo6Z2V0T3duUHJvcGVydHlTbG90KEpTQ2VsbCogY2VsbCwgRXhlY1N0YXRl
KiBleGVjLCBQcm9wZXJ0eU5hbWUgcHJvcGVydHlOYW1lLCBQcm9wZXJ0eVNsb3QmIHNsb3QpCiB7
CiAgICAgU3RyaW5nT2JqZWN0KiB0aGlzT2JqZWN0ID0ganNDYXN0PFN0cmluZ09iamVjdCo+KGNl
bGwpOwogICAgIGlmICh0aGlzT2JqZWN0LT5pbnRlcm5hbFZhbHVlKCktPmdldFN0cmluZ1Byb3Bl
cnR5U2xvdChleGVjLCBwcm9wZXJ0eU5hbWUsIHNsb3QpKQpAQCAtNTksNyArNTksNyBAQCBib29s
IFN0cmluZ09iamVjdDo6Z2V0T3duUHJvcGVydHlTbG90QnlJCiAgICAgcmV0dXJuIEpTT2JqZWN0
OjpnZXRPd25Qcm9wZXJ0eVNsb3QodGhpc09iamVjdCwgZXhlYywgSWRlbnRpZmllcjo6ZnJvbShl
eGVjLCBwcm9wZXJ0eU5hbWUpLCBzbG90KTsKIH0KIAotYm9vbCBTdHJpbmdPYmplY3Q6OmdldE93
blByb3BlcnR5RGVzY3JpcHRvcihKU09iamVjdCogb2JqZWN0LCBFeGVjU3RhdGUqIGV4ZWMsIGNv
bnN0IElkZW50aWZpZXImIHByb3BlcnR5TmFtZSwgUHJvcGVydHlEZXNjcmlwdG9yJiBkZXNjcmlw
dG9yKQorYm9vbCBTdHJpbmdPYmplY3Q6OmdldE93blByb3BlcnR5RGVzY3JpcHRvcihKU09iamVj
dCogb2JqZWN0LCBFeGVjU3RhdGUqIGV4ZWMsIFByb3BlcnR5TmFtZSBwcm9wZXJ0eU5hbWUsIFBy
b3BlcnR5RGVzY3JpcHRvciYgZGVzY3JpcHRvcikKIHsKICAgICBTdHJpbmdPYmplY3QqIHRoaXNP
YmplY3QgPSBqc0Nhc3Q8U3RyaW5nT2JqZWN0Kj4ob2JqZWN0KTsKICAgICBpZiAodGhpc09iamVj
dC0+aW50ZXJuYWxWYWx1ZSgpLT5nZXRTdHJpbmdQcm9wZXJ0eURlc2NyaXB0b3IoZXhlYywgcHJv
cGVydHlOYW1lLCBkZXNjcmlwdG9yKSkKQEAgLTY3LDcgKzY3LDcgQEAgYm9vbCBTdHJpbmdPYmpl
Y3Q6OmdldE93blByb3BlcnR5RGVzY3JpcAogICAgIHJldHVybiBKU09iamVjdDo6Z2V0T3duUHJv
cGVydHlEZXNjcmlwdG9yKHRoaXNPYmplY3QsIGV4ZWMsIHByb3BlcnR5TmFtZSwgZGVzY3JpcHRv
cik7CiB9CiAKLXZvaWQgU3RyaW5nT2JqZWN0OjpwdXQoSlNDZWxsKiBjZWxsLCBFeGVjU3RhdGUq
IGV4ZWMsIGNvbnN0IElkZW50aWZpZXImIHByb3BlcnR5TmFtZSwgSlNWYWx1ZSB2YWx1ZSwgUHV0
UHJvcGVydHlTbG90JiBzbG90KQordm9pZCBTdHJpbmdPYmplY3Q6OnB1dChKU0NlbGwqIGNlbGws
IEV4ZWNTdGF0ZSogZXhlYywgUHJvcGVydHlOYW1lIHByb3BlcnR5TmFtZSwgSlNWYWx1ZSB2YWx1
ZSwgUHV0UHJvcGVydHlTbG90JiBzbG90KQogewogICAgIGlmIChwcm9wZXJ0eU5hbWUgPT0gZXhl
Yy0+cHJvcGVydHlOYW1lcygpLmxlbmd0aCkgewogICAgICAgICBpZiAoc2xvdC5pc1N0cmljdE1v
ZGUoKSkKQEAgLTc3LDcgKzc3LDcgQEAgdm9pZCBTdHJpbmdPYmplY3Q6OnB1dChKU0NlbGwqIGNl
bGwsIEV4ZQogICAgIEpTT2JqZWN0OjpwdXQoY2VsbCwgZXhlYywgcHJvcGVydHlOYW1lLCB2YWx1
ZSwgc2xvdCk7CiB9CiAKLWJvb2wgU3RyaW5nT2JqZWN0OjpkZWZpbmVPd25Qcm9wZXJ0eShKU09i
amVjdCogb2JqZWN0LCBFeGVjU3RhdGUqIGV4ZWMsIGNvbnN0IElkZW50aWZpZXImIHByb3BlcnR5
TmFtZSwgUHJvcGVydHlEZXNjcmlwdG9yJiBkZXNjcmlwdG9yLCBib29sIHRocm93RXhjZXB0aW9u
KQorYm9vbCBTdHJpbmdPYmplY3Q6OmRlZmluZU93blByb3BlcnR5KEpTT2JqZWN0KiBvYmplY3Qs
IEV4ZWNTdGF0ZSogZXhlYywgUHJvcGVydHlOYW1lIHByb3BlcnR5TmFtZSwgUHJvcGVydHlEZXNj
cmlwdG9yJiBkZXNjcmlwdG9yLCBib29sIHRocm93RXhjZXB0aW9uKQogewogICAgIFN0cmluZ09i
amVjdCogdGhpc09iamVjdCA9IGpzQ2FzdDxTdHJpbmdPYmplY3QqPihvYmplY3QpOwogCkBAIC0x
MTksMTUgKzExOSwxNiBAQCBib29sIFN0cmluZ09iamVjdDo6ZGVmaW5lT3duUHJvcGVydHkoSlNP
CiAgICAgcmV0dXJuIEJhc2U6OmRlZmluZU93blByb3BlcnR5KG9iamVjdCwgZXhlYywgcHJvcGVy
dHlOYW1lLCBkZXNjcmlwdG9yLCB0aHJvd0V4Y2VwdGlvbik7CiB9CiAKLWJvb2wgU3RyaW5nT2Jq
ZWN0OjpkZWxldGVQcm9wZXJ0eShKU0NlbGwqIGNlbGwsIEV4ZWNTdGF0ZSogZXhlYywgY29uc3Qg
SWRlbnRpZmllciYgcHJvcGVydHlOYW1lKQorYm9vbCBTdHJpbmdPYmplY3Q6OmRlbGV0ZVByb3Bl
cnR5KEpTQ2VsbCogY2VsbCwgRXhlY1N0YXRlKiBleGVjLCBQcm9wZXJ0eU5hbWUgcHJvcGVydHlO
YW1lKQogewogICAgIFN0cmluZ09iamVjdCogdGhpc09iamVjdCA9IGpzQ2FzdDxTdHJpbmdPYmpl
Y3QqPihjZWxsKTsKICAgICBpZiAocHJvcGVydHlOYW1lID09IGV4ZWMtPnByb3BlcnR5TmFtZXMo
KS5sZW5ndGgpCiAgICAgICAgIHJldHVybiBmYWxzZTsKLSAgICBib29sIGlzU3RyaWN0VUludDMy
OwotICAgIHVuc2lnbmVkIGkgPSBwcm9wZXJ0eU5hbWUudG9VSW50MzIoaXNTdHJpY3RVSW50MzIp
OwotICAgIGlmIChpc1N0cmljdFVJbnQzMiAmJiB0aGlzT2JqZWN0LT5pbnRlcm5hbFZhbHVlKCkt
PmNhbkdldEluZGV4KGkpKQorICAgIHVuc2lnbmVkIGkgPSBwcm9wZXJ0eU5hbWUuYXNJbmRleCgp
OworICAgIGlmICh0aGlzT2JqZWN0LT5pbnRlcm5hbFZhbHVlKCktPmNhbkdldEluZGV4KGkpKSB7
CisgICAgICAgIEFTU0VSVChpICE9IFByb3BlcnR5TmFtZTo6Tm90QW5JbmRleCk7IC8vIE5vIG5l
ZWQgZm9yIGFuIGV4cGxpY2l0IGNoZWNrLCB0aGUgYWJvdmUgdGVzdCB3b3VsZCBhbHdheXMgZmFp
bCEKICAgICAgICAgcmV0dXJuIGZhbHNlOworICAgIH0KICAgICByZXR1cm4gSlNPYmplY3Q6OmRl
bGV0ZVByb3BlcnR5KHRoaXNPYmplY3QsIGV4ZWMsIHByb3BlcnR5TmFtZSk7CiB9CiAKSW5kZXg6
IFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL1N0cmluZ09iamVjdC5oCj09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0K
LS0tIFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL1N0cmluZ09iamVjdC5oCShyZXZpc2lv
biAxMTY2NjcpCisrKyBTb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9TdHJpbmdPYmplY3Qu
aAkod29ya2luZyBjb3B5KQpAQCAtNDUsMTUgKzQ1LDE1IEBAIG5hbWVzcGFjZSBKU0MgewogICAg
ICAgICB9CiAgICAgICAgIHN0YXRpYyBTdHJpbmdPYmplY3QqIGNyZWF0ZShFeGVjU3RhdGUqLCBK
U0dsb2JhbE9iamVjdCosIEpTU3RyaW5nKik7CiAKLSAgICAgICAgc3RhdGljIGJvb2wgZ2V0T3du
UHJvcGVydHlTbG90KEpTQ2VsbCosIEV4ZWNTdGF0ZSosIGNvbnN0IElkZW50aWZpZXImIHByb3Bl
cnR5TmFtZSwgUHJvcGVydHlTbG90Jik7CisgICAgICAgIHN0YXRpYyBib29sIGdldE93blByb3Bl
cnR5U2xvdChKU0NlbGwqLCBFeGVjU3RhdGUqLCBQcm9wZXJ0eU5hbWUsIFByb3BlcnR5U2xvdCYp
OwogICAgICAgICBzdGF0aWMgYm9vbCBnZXRPd25Qcm9wZXJ0eVNsb3RCeUluZGV4KEpTQ2VsbCos
IEV4ZWNTdGF0ZSosIHVuc2lnbmVkIHByb3BlcnR5TmFtZSwgUHJvcGVydHlTbG90Jik7Ci0gICAg
ICAgIHN0YXRpYyBib29sIGdldE93blByb3BlcnR5RGVzY3JpcHRvcihKU09iamVjdCosIEV4ZWNT
dGF0ZSosIGNvbnN0IElkZW50aWZpZXImLCBQcm9wZXJ0eURlc2NyaXB0b3ImKTsKKyAgICAgICAg
c3RhdGljIGJvb2wgZ2V0T3duUHJvcGVydHlEZXNjcmlwdG9yKEpTT2JqZWN0KiwgRXhlY1N0YXRl
KiwgUHJvcGVydHlOYW1lLCBQcm9wZXJ0eURlc2NyaXB0b3ImKTsKIAotICAgICAgICBzdGF0aWMg
dm9pZCBwdXQoSlNDZWxsKiwgRXhlY1N0YXRlKiwgY29uc3QgSWRlbnRpZmllciYgcHJvcGVydHlO
YW1lLCBKU1ZhbHVlLCBQdXRQcm9wZXJ0eVNsb3QmKTsKKyAgICAgICAgc3RhdGljIHZvaWQgcHV0
KEpTQ2VsbCosIEV4ZWNTdGF0ZSosIFByb3BlcnR5TmFtZSwgSlNWYWx1ZSwgUHV0UHJvcGVydHlT
bG90Jik7CiAKLSAgICAgICAgc3RhdGljIGJvb2wgZGVsZXRlUHJvcGVydHkoSlNDZWxsKiwgRXhl
Y1N0YXRlKiwgY29uc3QgSWRlbnRpZmllciYgcHJvcGVydHlOYW1lKTsKKyAgICAgICAgc3RhdGlj
IGJvb2wgZGVsZXRlUHJvcGVydHkoSlNDZWxsKiwgRXhlY1N0YXRlKiwgUHJvcGVydHlOYW1lKTsK
ICAgICAgICAgc3RhdGljIHZvaWQgZ2V0T3duUHJvcGVydHlOYW1lcyhKU09iamVjdCosIEV4ZWNT
dGF0ZSosIFByb3BlcnR5TmFtZUFycmF5JiwgRW51bWVyYXRpb25Nb2RlKTsKLSAgICAgICAgc3Rh
dGljIGJvb2wgZGVmaW5lT3duUHJvcGVydHkoSlNPYmplY3QqLCBFeGVjU3RhdGUqLCBjb25zdCBJ
ZGVudGlmaWVyJiBwcm9wZXJ0eU5hbWUsIFByb3BlcnR5RGVzY3JpcHRvciYsIGJvb2wgc2hvdWxk
VGhyb3cpOworICAgICAgICBzdGF0aWMgYm9vbCBkZWZpbmVPd25Qcm9wZXJ0eShKU09iamVjdCos
IEV4ZWNTdGF0ZSosIFByb3BlcnR5TmFtZSwgUHJvcGVydHlEZXNjcmlwdG9yJiwgYm9vbCBzaG91
bGRUaHJvdyk7CiAKICAgICAgICAgc3RhdGljIGNvbnN0IEpTX0VYUE9SVERBVEEgQ2xhc3NJbmZv
IHNfaW5mbzsKIApJbmRleDogU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvU3RyaW5nUHJv
dG90eXBlLmNwcAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9T
dHJpbmdQcm90b3R5cGUuY3BwCShyZXZpc2lvbiAxMTY2NjcpCisrKyBTb3VyY2UvSmF2YVNjcmlw
dENvcmUvcnVudGltZS9TdHJpbmdQcm90b3R5cGUuY3BwCSh3b3JraW5nIGNvcHkpCkBAIC0xNDcs
MTIgKzE0NywxMiBAQCB2b2lkIFN0cmluZ1Byb3RvdHlwZTo6ZmluaXNoQ3JlYXRpb24oRXhlCiAg
ICAgcHV0RGlyZWN0V2l0aG91dFRyYW5zaXRpb24oZXhlYy0+Z2xvYmFsRGF0YSgpLCBleGVjLT5w
cm9wZXJ0eU5hbWVzKCkubGVuZ3RoLCBqc051bWJlcigwKSwgRG9udERlbGV0ZSB8IFJlYWRPbmx5
IHwgRG9udEVudW0pOwogfQogCi1ib29sIFN0cmluZ1Byb3RvdHlwZTo6Z2V0T3duUHJvcGVydHlT
bG90KEpTQ2VsbCogY2VsbCwgRXhlY1N0YXRlKiBleGVjLCBjb25zdCBJZGVudGlmaWVyJiBwcm9w
ZXJ0eU5hbWUsIFByb3BlcnR5U2xvdCAmc2xvdCkKK2Jvb2wgU3RyaW5nUHJvdG90eXBlOjpnZXRP
d25Qcm9wZXJ0eVNsb3QoSlNDZWxsKiBjZWxsLCBFeGVjU3RhdGUqIGV4ZWMsIFByb3BlcnR5TmFt
ZSBwcm9wZXJ0eU5hbWUsIFByb3BlcnR5U2xvdCAmc2xvdCkKIHsKICAgICByZXR1cm4gZ2V0U3Rh
dGljRnVuY3Rpb25TbG90PFN0cmluZ09iamVjdD4oZXhlYywgRXhlY1N0YXRlOjpzdHJpbmdUYWJs
ZShleGVjKSwganNDYXN0PFN0cmluZ1Byb3RvdHlwZSo+KGNlbGwpLCBwcm9wZXJ0eU5hbWUsIHNs
b3QpOwogfQogCi1ib29sIFN0cmluZ1Byb3RvdHlwZTo6Z2V0T3duUHJvcGVydHlEZXNjcmlwdG9y
KEpTT2JqZWN0KiBvYmplY3QsIEV4ZWNTdGF0ZSogZXhlYywgY29uc3QgSWRlbnRpZmllciYgcHJv
cGVydHlOYW1lLCBQcm9wZXJ0eURlc2NyaXB0b3ImIGRlc2NyaXB0b3IpCitib29sIFN0cmluZ1By
b3RvdHlwZTo6Z2V0T3duUHJvcGVydHlEZXNjcmlwdG9yKEpTT2JqZWN0KiBvYmplY3QsIEV4ZWNT
dGF0ZSogZXhlYywgUHJvcGVydHlOYW1lIHByb3BlcnR5TmFtZSwgUHJvcGVydHlEZXNjcmlwdG9y
JiBkZXNjcmlwdG9yKQogewogICAgIHJldHVybiBnZXRTdGF0aWNGdW5jdGlvbkRlc2NyaXB0b3I8
U3RyaW5nT2JqZWN0PihleGVjLCBFeGVjU3RhdGU6OnN0cmluZ1RhYmxlKGV4ZWMpLCBqc0Nhc3Q8
U3RyaW5nUHJvdG90eXBlKj4ob2JqZWN0KSwgcHJvcGVydHlOYW1lLCBkZXNjcmlwdG9yKTsKIH0K
SW5kZXg6IFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL1N0cmluZ1Byb3RvdHlwZS5oCj09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT0KLS0tIFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL1N0cmluZ1Byb3RvdHlw
ZS5oCShyZXZpc2lvbiAxMTY2NjcpCisrKyBTb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9T
dHJpbmdQcm90b3R5cGUuaAkod29ya2luZyBjb3B5KQpAQCAtNDIsOCArNDIsOCBAQCBuYW1lc3Bh
Y2UgSlNDIHsKICAgICAgICAgICAgIHJldHVybiBwcm90b3R5cGU7CiAgICAgICAgIH0KIAotICAg
ICAgICBzdGF0aWMgYm9vbCBnZXRPd25Qcm9wZXJ0eVNsb3QoSlNDZWxsKiwgRXhlY1N0YXRlKiwg
Y29uc3QgSWRlbnRpZmllciYgcHJvcGVydHlOYW1lLCBQcm9wZXJ0eVNsb3QmKTsKLSAgICAgICAg
c3RhdGljIGJvb2wgZ2V0T3duUHJvcGVydHlEZXNjcmlwdG9yKEpTT2JqZWN0KiwgRXhlY1N0YXRl
KiwgY29uc3QgSWRlbnRpZmllciYsIFByb3BlcnR5RGVzY3JpcHRvciYpOworICAgICAgICBzdGF0
aWMgYm9vbCBnZXRPd25Qcm9wZXJ0eVNsb3QoSlNDZWxsKiwgRXhlY1N0YXRlKiwgUHJvcGVydHlO
YW1lLCBQcm9wZXJ0eVNsb3QmKTsKKyAgICAgICAgc3RhdGljIGJvb2wgZ2V0T3duUHJvcGVydHlE
ZXNjcmlwdG9yKEpTT2JqZWN0KiwgRXhlY1N0YXRlKiwgUHJvcGVydHlOYW1lLCBQcm9wZXJ0eURl
c2NyaXB0b3ImKTsKIAogICAgICAgICBzdGF0aWMgU3RydWN0dXJlKiBjcmVhdGVTdHJ1Y3R1cmUo
SlNHbG9iYWxEYXRhJiBnbG9iYWxEYXRhLCBKU0dsb2JhbE9iamVjdCogZ2xvYmFsT2JqZWN0LCBK
U1ZhbHVlIHByb3RvdHlwZSkKICAgICAgICAgewpJbmRleDogU291cmNlL0phdmFTY3JpcHRDb3Jl
L3J1bnRpbWUvU3RydWN0dXJlLmNwcAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvSmF2YVNjcmlwdENv
cmUvcnVudGltZS9TdHJ1Y3R1cmUuY3BwCShyZXZpc2lvbiAxMTY2NjcpCisrKyBTb3VyY2UvSmF2
YVNjcmlwdENvcmUvcnVudGltZS9TdHJ1Y3R1cmUuY3BwCSh3b3JraW5nIGNvcHkpCkBAIC0yNiw3
ICsyNiw2IEBACiAjaW5jbHVkZSAiY29uZmlnLmgiCiAjaW5jbHVkZSAiU3RydWN0dXJlLmgiCiAK
LSNpbmNsdWRlICJJZGVudGlmaWVyLmgiCiAjaW5jbHVkZSAiSlNPYmplY3QuaCIKICNpbmNsdWRl
ICJKU1Byb3BlcnR5TmFtZUl0ZXJhdG9yLmgiCiAjaW5jbHVkZSAiTG9va3VwLmgiCkBAIC0yNjcs
NyArMjY2LDcgQEAgdm9pZCBTdHJ1Y3R1cmU6Omdyb3dQcm9wZXJ0eVN0b3JhZ2VDYXBhYwogICAg
ICAgICBtX3Byb3BlcnR5U3RvcmFnZUNhcGFjaXR5ICo9IDI7CiB9CiAKLXZvaWQgU3RydWN0dXJl
OjpkZXNwZWNpZnlEaWN0aW9uYXJ5RnVuY3Rpb24oSlNHbG9iYWxEYXRhJiBnbG9iYWxEYXRhLCBj
b25zdCBJZGVudGlmaWVyJiBwcm9wZXJ0eU5hbWUpCit2b2lkIFN0cnVjdHVyZTo6ZGVzcGVjaWZ5
RGljdGlvbmFyeUZ1bmN0aW9uKEpTR2xvYmFsRGF0YSYgZ2xvYmFsRGF0YSwgUHJvcGVydHlOYW1l
IHByb3BlcnR5TmFtZSkKIHsKICAgICBTdHJpbmdJbXBsKiByZXAgPSBwcm9wZXJ0eU5hbWUuaW1w
bCgpOwogCkBAIC0yODEsNyArMjgwLDcgQEAgdm9pZCBTdHJ1Y3R1cmU6OmRlc3BlY2lmeURpY3Rp
b25hcnlGdW5jdAogICAgIGVudHJ5LT5zcGVjaWZpY1ZhbHVlLmNsZWFyKCk7CiB9CiAKLVN0cnVj
dHVyZSogU3RydWN0dXJlOjphZGRQcm9wZXJ0eVRyYW5zaXRpb25Ub0V4aXN0aW5nU3RydWN0dXJl
KFN0cnVjdHVyZSogc3RydWN0dXJlLCBjb25zdCBJZGVudGlmaWVyJiBwcm9wZXJ0eU5hbWUsIHVu
c2lnbmVkIGF0dHJpYnV0ZXMsIEpTQ2VsbCogc3BlY2lmaWNWYWx1ZSwgc2l6ZV90JiBvZmZzZXQp
CitTdHJ1Y3R1cmUqIFN0cnVjdHVyZTo6YWRkUHJvcGVydHlUcmFuc2l0aW9uVG9FeGlzdGluZ1N0
cnVjdHVyZShTdHJ1Y3R1cmUqIHN0cnVjdHVyZSwgUHJvcGVydHlOYW1lIHByb3BlcnR5TmFtZSwg
dW5zaWduZWQgYXR0cmlidXRlcywgSlNDZWxsKiBzcGVjaWZpY1ZhbHVlLCBzaXplX3QmIG9mZnNl
dCkKIHsKICAgICBBU1NFUlQoIXN0cnVjdHVyZS0+aXNEaWN0aW9uYXJ5KCkpOwogICAgIEFTU0VS
VChzdHJ1Y3R1cmUtPmlzT2JqZWN0KCkpOwpAQCAtMjk4LDcgKzI5Nyw3IEBAIFN0cnVjdHVyZSog
U3RydWN0dXJlOjphZGRQcm9wZXJ0eVRyYW5zaXQKICAgICByZXR1cm4gMDsKIH0KIAotU3RydWN0
dXJlKiBTdHJ1Y3R1cmU6OmFkZFByb3BlcnR5VHJhbnNpdGlvbihKU0dsb2JhbERhdGEmIGdsb2Jh
bERhdGEsIFN0cnVjdHVyZSogc3RydWN0dXJlLCBjb25zdCBJZGVudGlmaWVyJiBwcm9wZXJ0eU5h
bWUsIHVuc2lnbmVkIGF0dHJpYnV0ZXMsIEpTQ2VsbCogc3BlY2lmaWNWYWx1ZSwgc2l6ZV90JiBv
ZmZzZXQpCitTdHJ1Y3R1cmUqIFN0cnVjdHVyZTo6YWRkUHJvcGVydHlUcmFuc2l0aW9uKEpTR2xv
YmFsRGF0YSYgZ2xvYmFsRGF0YSwgU3RydWN0dXJlKiBzdHJ1Y3R1cmUsIFByb3BlcnR5TmFtZSBw
cm9wZXJ0eU5hbWUsIHVuc2lnbmVkIGF0dHJpYnV0ZXMsIEpTQ2VsbCogc3BlY2lmaWNWYWx1ZSwg
c2l6ZV90JiBvZmZzZXQpCiB7CiAgICAgLy8gSWYgd2UgaGF2ZSBhIHNwZWNpZmljIGZ1bmN0aW9u
LCB3ZSBtYXkgaGF2ZSBnb3QgdG8gdGhpcyBwb2ludCBpZiB0aGVyZSBpcwogICAgIC8vIGFscmVh
ZHkgYSB0cmFuc2l0aW9uIHdpdGggdGhlIGNvcnJlY3QgcHJvcGVydHkgbmFtZSBhbmQgYXR0cmli
dXRlcywgYnV0CkBAIC0zNTUsNyArMzU0LDcgQEAgU3RydWN0dXJlKiBTdHJ1Y3R1cmU6OmFkZFBy
b3BlcnR5VHJhbnNpdAogICAgIHJldHVybiB0cmFuc2l0aW9uOwogfQogCi1TdHJ1Y3R1cmUqIFN0
cnVjdHVyZTo6cmVtb3ZlUHJvcGVydHlUcmFuc2l0aW9uKEpTR2xvYmFsRGF0YSYgZ2xvYmFsRGF0
YSwgU3RydWN0dXJlKiBzdHJ1Y3R1cmUsIGNvbnN0IElkZW50aWZpZXImIHByb3BlcnR5TmFtZSwg
c2l6ZV90JiBvZmZzZXQpCitTdHJ1Y3R1cmUqIFN0cnVjdHVyZTo6cmVtb3ZlUHJvcGVydHlUcmFu
c2l0aW9uKEpTR2xvYmFsRGF0YSYgZ2xvYmFsRGF0YSwgU3RydWN0dXJlKiBzdHJ1Y3R1cmUsIFBy
b3BlcnR5TmFtZSBwcm9wZXJ0eU5hbWUsIHNpemVfdCYgb2Zmc2V0KQogewogICAgIEFTU0VSVCgh
c3RydWN0dXJlLT5pc1VuY2FjaGVhYmxlRGljdGlvbmFyeSgpKTsKIApAQCAtMzgxLDcgKzM4MCw3
IEBAIFN0cnVjdHVyZSogU3RydWN0dXJlOjpjaGFuZ2VQcm90b3R5cGVUcmEKICAgICByZXR1cm4g
dHJhbnNpdGlvbjsKIH0KIAotU3RydWN0dXJlKiBTdHJ1Y3R1cmU6OmRlc3BlY2lmeUZ1bmN0aW9u
VHJhbnNpdGlvbihKU0dsb2JhbERhdGEmIGdsb2JhbERhdGEsIFN0cnVjdHVyZSogc3RydWN0dXJl
LCBjb25zdCBJZGVudGlmaWVyJiByZXBsYWNlRnVuY3Rpb24pCitTdHJ1Y3R1cmUqIFN0cnVjdHVy
ZTo6ZGVzcGVjaWZ5RnVuY3Rpb25UcmFuc2l0aW9uKEpTR2xvYmFsRGF0YSYgZ2xvYmFsRGF0YSwg
U3RydWN0dXJlKiBzdHJ1Y3R1cmUsIFByb3BlcnR5TmFtZSByZXBsYWNlRnVuY3Rpb24pCiB7CiAg
ICAgQVNTRVJUKHN0cnVjdHVyZS0+bV9zcGVjaWZpY0Z1bmN0aW9uVGhyYXNoQ291bnQgPCBtYXhT
cGVjaWZpY0Z1bmN0aW9uVGhyYXNoQ291bnQpOwogICAgIFN0cnVjdHVyZSogdHJhbnNpdGlvbiA9
IGNyZWF0ZShnbG9iYWxEYXRhLCBzdHJ1Y3R1cmUpOwpAQCAtNDA0LDcgKzQwMyw3IEBAIFN0cnVj
dHVyZSogU3RydWN0dXJlOjpkZXNwZWNpZnlGdW5jdGlvblQKICAgICByZXR1cm4gdHJhbnNpdGlv
bjsKIH0KIAotU3RydWN0dXJlKiBTdHJ1Y3R1cmU6OmF0dHJpYnV0ZUNoYW5nZVRyYW5zaXRpb24o
SlNHbG9iYWxEYXRhJiBnbG9iYWxEYXRhLCBTdHJ1Y3R1cmUqIHN0cnVjdHVyZSwgY29uc3QgSWRl
bnRpZmllciYgcHJvcGVydHlOYW1lLCB1bnNpZ25lZCBhdHRyaWJ1dGVzKQorU3RydWN0dXJlKiBT
dHJ1Y3R1cmU6OmF0dHJpYnV0ZUNoYW5nZVRyYW5zaXRpb24oSlNHbG9iYWxEYXRhJiBnbG9iYWxE
YXRhLCBTdHJ1Y3R1cmUqIHN0cnVjdHVyZSwgUHJvcGVydHlOYW1lIHByb3BlcnR5TmFtZSwgdW5z
aWduZWQgYXR0cmlidXRlcykKIHsKICAgICBpZiAoIXN0cnVjdHVyZS0+aXNVbmNhY2hlYWJsZURp
Y3Rpb25hcnkoKSkgewogICAgICAgICBTdHJ1Y3R1cmUqIHRyYW5zaXRpb24gPSBjcmVhdGUoZ2xv
YmFsRGF0YSwgc3RydWN0dXJlKTsKQEAgLTU2Miw3ICs1NjEsNyBAQCBTdHJ1Y3R1cmUqIFN0cnVj
dHVyZTo6ZmxhdHRlbkRpY3Rpb25hcnlTCiAgICAgcmV0dXJuIHRoaXM7CiB9CiAKLXNpemVfdCBT
dHJ1Y3R1cmU6OmFkZFByb3BlcnR5V2l0aG91dFRyYW5zaXRpb24oSlNHbG9iYWxEYXRhJiBnbG9i
YWxEYXRhLCBjb25zdCBJZGVudGlmaWVyJiBwcm9wZXJ0eU5hbWUsIHVuc2lnbmVkIGF0dHJpYnV0
ZXMsIEpTQ2VsbCogc3BlY2lmaWNWYWx1ZSkKK3NpemVfdCBTdHJ1Y3R1cmU6OmFkZFByb3BlcnR5
V2l0aG91dFRyYW5zaXRpb24oSlNHbG9iYWxEYXRhJiBnbG9iYWxEYXRhLCBQcm9wZXJ0eU5hbWUg
cHJvcGVydHlOYW1lLCB1bnNpZ25lZCBhdHRyaWJ1dGVzLCBKU0NlbGwqIHNwZWNpZmljVmFsdWUp
CiB7CiAgICAgQVNTRVJUKCFtX2VudW1lcmF0aW9uQ2FjaGUpOwogCkBAIC01NzksNyArNTc4LDcg
QEAgc2l6ZV90IFN0cnVjdHVyZTo6YWRkUHJvcGVydHlXaXRob3V0VHJhbgogICAgIHJldHVybiBv
ZmZzZXQ7CiB9CiAKLXNpemVfdCBTdHJ1Y3R1cmU6OnJlbW92ZVByb3BlcnR5V2l0aG91dFRyYW5z
aXRpb24oSlNHbG9iYWxEYXRhJiBnbG9iYWxEYXRhLCBjb25zdCBJZGVudGlmaWVyJiBwcm9wZXJ0
eU5hbWUpCitzaXplX3QgU3RydWN0dXJlOjpyZW1vdmVQcm9wZXJ0eVdpdGhvdXRUcmFuc2l0aW9u
KEpTR2xvYmFsRGF0YSYgZ2xvYmFsRGF0YSwgUHJvcGVydHlOYW1lIHByb3BlcnR5TmFtZSkKIHsK
ICAgICBBU1NFUlQoaXNVbmNhY2hlYWJsZURpY3Rpb25hcnkoKSk7CiAgICAgQVNTRVJUKCFtX2Vu
dW1lcmF0aW9uQ2FjaGUpOwpAQCAtNjM2LDEzICs2MzUsMTUgQEAgUGFzc093blB0cjxQcm9wZXJ0
eVRhYmxlPiBTdHJ1Y3R1cmU6OmNvcAogICAgIHJldHVybiBhZG9wdFB0cihtX3Byb3BlcnR5VGFi
bGUgPyBuZXcgUHJvcGVydHlUYWJsZShnbG9iYWxEYXRhLCBvd25lciwgKm1fcHJvcGVydHlUYWJs
ZSkgOiBuZXcgUHJvcGVydHlUYWJsZShtX29mZnNldCA9PSBub09mZnNldCA/IDAgOiBtX29mZnNl
dCkpOwogfQogCi1zaXplX3QgU3RydWN0dXJlOjpnZXQoSlNHbG9iYWxEYXRhJiBnbG9iYWxEYXRh
LCBTdHJpbmdJbXBsKiBwcm9wZXJ0eU5hbWUsIHVuc2lnbmVkJiBhdHRyaWJ1dGVzLCBKU0NlbGwq
JiBzcGVjaWZpY1ZhbHVlKQorc2l6ZV90IFN0cnVjdHVyZTo6Z2V0KEpTR2xvYmFsRGF0YSYgZ2xv
YmFsRGF0YSwgUHJvcGVydHlOYW1lIHByb3BlcnR5TmFtZSwgdW5zaWduZWQmIGF0dHJpYnV0ZXMs
IEpTQ2VsbComIHNwZWNpZmljVmFsdWUpCiB7CisgICAgQVNTRVJUKHN0cnVjdHVyZSgpLT5jbGFz
c0luZm8oKSA9PSAmc19pbmZvKTsKKwogICAgIG1hdGVyaWFsaXplUHJvcGVydHlNYXBJZk5lY2Vz
c2FyeShnbG9iYWxEYXRhKTsKICAgICBpZiAoIW1fcHJvcGVydHlUYWJsZSkKICAgICAgICAgcmV0
dXJuIFdURjo6bm90Rm91bmQ7CiAKLSAgICBQcm9wZXJ0eU1hcEVudHJ5KiBlbnRyeSA9IG1fcHJv
cGVydHlUYWJsZS0+ZmluZChwcm9wZXJ0eU5hbWUpLmZpcnN0OworICAgIFByb3BlcnR5TWFwRW50
cnkqIGVudHJ5ID0gbV9wcm9wZXJ0eVRhYmxlLT5maW5kKHByb3BlcnR5TmFtZS5pbXBsKCkpLmZp
cnN0OwogICAgIGlmICghZW50cnkpCiAgICAgICAgIHJldHVybiBXVEY6Om5vdEZvdW5kOwogCkBA
IC02NTEsMTMgKzY1MiwxMiBAQCBzaXplX3QgU3RydWN0dXJlOjpnZXQoSlNHbG9iYWxEYXRhJiBn
bG9iCiAgICAgcmV0dXJuIGVudHJ5LT5vZmZzZXQ7CiB9CiAKLWJvb2wgU3RydWN0dXJlOjpkZXNw
ZWNpZnlGdW5jdGlvbihKU0dsb2JhbERhdGEmIGdsb2JhbERhdGEsIGNvbnN0IElkZW50aWZpZXIm
IHByb3BlcnR5TmFtZSkKK2Jvb2wgU3RydWN0dXJlOjpkZXNwZWNpZnlGdW5jdGlvbihKU0dsb2Jh
bERhdGEmIGdsb2JhbERhdGEsIFByb3BlcnR5TmFtZSBwcm9wZXJ0eU5hbWUpCiB7CiAgICAgbWF0
ZXJpYWxpemVQcm9wZXJ0eU1hcElmTmVjZXNzYXJ5KGdsb2JhbERhdGEpOwogICAgIGlmICghbV9w
cm9wZXJ0eVRhYmxlKQogICAgICAgICByZXR1cm4gZmFsc2U7CiAKLSAgICBBU1NFUlQoIXByb3Bl
cnR5TmFtZS5pc051bGwoKSk7CiAgICAgUHJvcGVydHlNYXBFbnRyeSogZW50cnkgPSBtX3Byb3Bl
cnR5VGFibGUtPmZpbmQocHJvcGVydHlOYW1lLmltcGwoKSkuZmlyc3Q7CiAgICAgaWYgKCFlbnRy
eSkKICAgICAgICAgcmV0dXJuIGZhbHNlOwpAQCAtNjc4LDkgKzY3OCw4IEBAIHZvaWQgU3RydWN0
dXJlOjpkZXNwZWNpZnlBbGxGdW5jdGlvbnMoSlMKICAgICAgICAgaXRlci0+c3BlY2lmaWNWYWx1
ZS5jbGVhcigpOwogfQogCi1zaXplX3QgU3RydWN0dXJlOjpwdXRTcGVjaWZpY1ZhbHVlKEpTR2xv
YmFsRGF0YSYgZ2xvYmFsRGF0YSwgY29uc3QgSWRlbnRpZmllciYgcHJvcGVydHlOYW1lLCB1bnNp
Z25lZCBhdHRyaWJ1dGVzLCBKU0NlbGwqIHNwZWNpZmljVmFsdWUpCitzaXplX3QgU3RydWN0dXJl
OjpwdXRTcGVjaWZpY1ZhbHVlKEpTR2xvYmFsRGF0YSYgZ2xvYmFsRGF0YSwgUHJvcGVydHlOYW1l
IHByb3BlcnR5TmFtZSwgdW5zaWduZWQgYXR0cmlidXRlcywgSlNDZWxsKiBzcGVjaWZpY1ZhbHVl
KQogewotICAgIEFTU0VSVCghcHJvcGVydHlOYW1lLmlzTnVsbCgpKTsKICAgICBBU1NFUlQoZ2V0
KGdsb2JhbERhdGEsIHByb3BlcnR5TmFtZSkgPT0gbm90Rm91bmQpOwogCiAgICAgY2hlY2tDb25z
aXN0ZW5jeSgpOwpAQCAtNzA1LDEwICs3MDQsOCBAQCBzaXplX3QgU3RydWN0dXJlOjpwdXRTcGVj
aWZpY1ZhbHVlKEpTR2xvCiAgICAgcmV0dXJuIG5ld09mZnNldDsKIH0KIAotc2l6ZV90IFN0cnVj
dHVyZTo6cmVtb3ZlKGNvbnN0IElkZW50aWZpZXImIHByb3BlcnR5TmFtZSkKK3NpemVfdCBTdHJ1
Y3R1cmU6OnJlbW92ZShQcm9wZXJ0eU5hbWUgcHJvcGVydHlOYW1lKQogewotICAgIEFTU0VSVCgh
cHJvcGVydHlOYW1lLmlzTnVsbCgpKTsKLQogICAgIGNoZWNrQ29uc2lzdGVuY3koKTsKIAogICAg
IFN0cmluZ0ltcGwqIHJlcCA9IHByb3BlcnR5TmFtZS5pbXBsKCk7CkluZGV4OiBTb3VyY2UvSmF2
YVNjcmlwdENvcmUvcnVudGltZS9TdHJ1Y3R1cmUuaAo9PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvSmF2
YVNjcmlwdENvcmUvcnVudGltZS9TdHJ1Y3R1cmUuaAkocmV2aXNpb24gMTE2NjY3KQorKysgU291
cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvU3RydWN0dXJlLmgJKHdvcmtpbmcgY29weSkKQEAg
LTI3LDExICsyNywxMSBAQAogI2RlZmluZSBTdHJ1Y3R1cmVfaAogCiAjaW5jbHVkZSAiQ2xhc3NJ
bmZvLmgiCi0jaW5jbHVkZSAiSWRlbnRpZmllci5oIgogI2luY2x1ZGUgIkpTQ2VsbC5oIgogI2lu
Y2x1ZGUgIkpTVHlwZS5oIgogI2luY2x1ZGUgIkpTVmFsdWUuaCIKICNpbmNsdWRlICJQcm9wZXJ0
eU1hcEhhc2hUYWJsZS5oIgorI2luY2x1ZGUgIlByb3BlcnR5TmFtZS5oIgogI2luY2x1ZGUgIlBy
b3BlcnR5TmFtZUFycmF5LmgiCiAjaW5jbHVkZSAiUHJvdGVjdC5oIgogI2luY2x1ZGUgIlN0cnVj
dHVyZVRyYW5zaXRpb25UYWJsZS5oIgpAQCAtODYsMTIgKzg2LDEyIEBAIG5hbWVzcGFjZSBKU0Mg
ewogICAgIHB1YmxpYzoKICAgICAgICAgc3RhdGljIHZvaWQgZHVtcFN0YXRpc3RpY3MoKTsKIAot
ICAgICAgICBKU19FWFBPUlRfUFJJVkFURSBzdGF0aWMgU3RydWN0dXJlKiBhZGRQcm9wZXJ0eVRy
YW5zaXRpb24oSlNHbG9iYWxEYXRhJiwgU3RydWN0dXJlKiwgY29uc3QgSWRlbnRpZmllciYgcHJv
cGVydHlOYW1lLCB1bnNpZ25lZCBhdHRyaWJ1dGVzLCBKU0NlbGwqIHNwZWNpZmljVmFsdWUsIHNp
emVfdCYgb2Zmc2V0KTsKLSAgICAgICAgSlNfRVhQT1JUX1BSSVZBVEUgc3RhdGljIFN0cnVjdHVy
ZSogYWRkUHJvcGVydHlUcmFuc2l0aW9uVG9FeGlzdGluZ1N0cnVjdHVyZShTdHJ1Y3R1cmUqLCBj
b25zdCBJZGVudGlmaWVyJiBwcm9wZXJ0eU5hbWUsIHVuc2lnbmVkIGF0dHJpYnV0ZXMsIEpTQ2Vs
bCogc3BlY2lmaWNWYWx1ZSwgc2l6ZV90JiBvZmZzZXQpOwotICAgICAgICBzdGF0aWMgU3RydWN0
dXJlKiByZW1vdmVQcm9wZXJ0eVRyYW5zaXRpb24oSlNHbG9iYWxEYXRhJiwgU3RydWN0dXJlKiwg
Y29uc3QgSWRlbnRpZmllciYgcHJvcGVydHlOYW1lLCBzaXplX3QmIG9mZnNldCk7CisgICAgICAg
IEpTX0VYUE9SVF9QUklWQVRFIHN0YXRpYyBTdHJ1Y3R1cmUqIGFkZFByb3BlcnR5VHJhbnNpdGlv
bihKU0dsb2JhbERhdGEmLCBTdHJ1Y3R1cmUqLCBQcm9wZXJ0eU5hbWUsIHVuc2lnbmVkIGF0dHJp
YnV0ZXMsIEpTQ2VsbCogc3BlY2lmaWNWYWx1ZSwgc2l6ZV90JiBvZmZzZXQpOworICAgICAgICBK
U19FWFBPUlRfUFJJVkFURSBzdGF0aWMgU3RydWN0dXJlKiBhZGRQcm9wZXJ0eVRyYW5zaXRpb25U
b0V4aXN0aW5nU3RydWN0dXJlKFN0cnVjdHVyZSosIFByb3BlcnR5TmFtZSwgdW5zaWduZWQgYXR0
cmlidXRlcywgSlNDZWxsKiBzcGVjaWZpY1ZhbHVlLCBzaXplX3QmIG9mZnNldCk7CisgICAgICAg
IHN0YXRpYyBTdHJ1Y3R1cmUqIHJlbW92ZVByb3BlcnR5VHJhbnNpdGlvbihKU0dsb2JhbERhdGEm
LCBTdHJ1Y3R1cmUqLCBQcm9wZXJ0eU5hbWUsIHNpemVfdCYgb2Zmc2V0KTsKICAgICAgICAgSlNf
RVhQT1JUX1BSSVZBVEUgc3RhdGljIFN0cnVjdHVyZSogY2hhbmdlUHJvdG90eXBlVHJhbnNpdGlv
bihKU0dsb2JhbERhdGEmLCBTdHJ1Y3R1cmUqLCBKU1ZhbHVlIHByb3RvdHlwZSk7Ci0gICAgICAg
IEpTX0VYUE9SVF9QUklWQVRFIHN0YXRpYyBTdHJ1Y3R1cmUqIGRlc3BlY2lmeUZ1bmN0aW9uVHJh
bnNpdGlvbihKU0dsb2JhbERhdGEmLCBTdHJ1Y3R1cmUqLCBjb25zdCBJZGVudGlmaWVyJik7Ci0g
ICAgICAgIHN0YXRpYyBTdHJ1Y3R1cmUqIGF0dHJpYnV0ZUNoYW5nZVRyYW5zaXRpb24oSlNHbG9i
YWxEYXRhJiwgU3RydWN0dXJlKiwgY29uc3QgSWRlbnRpZmllciYgcHJvcGVydHlOYW1lLCB1bnNp
Z25lZCBhdHRyaWJ1dGVzKTsKKyAgICAgICAgSlNfRVhQT1JUX1BSSVZBVEUgc3RhdGljIFN0cnVj
dHVyZSogZGVzcGVjaWZ5RnVuY3Rpb25UcmFuc2l0aW9uKEpTR2xvYmFsRGF0YSYsIFN0cnVjdHVy
ZSosIFByb3BlcnR5TmFtZSk7CisgICAgICAgIHN0YXRpYyBTdHJ1Y3R1cmUqIGF0dHJpYnV0ZUNo
YW5nZVRyYW5zaXRpb24oSlNHbG9iYWxEYXRhJiwgU3RydWN0dXJlKiwgUHJvcGVydHlOYW1lLCB1
bnNpZ25lZCBhdHRyaWJ1dGVzKTsKICAgICAgICAgc3RhdGljIFN0cnVjdHVyZSogdG9DYWNoZWFi
bGVEaWN0aW9uYXJ5VHJhbnNpdGlvbihKU0dsb2JhbERhdGEmLCBTdHJ1Y3R1cmUqKTsKICAgICAg
ICAgc3RhdGljIFN0cnVjdHVyZSogdG9VbmNhY2hlYWJsZURpY3Rpb25hcnlUcmFuc2l0aW9uKEpT
R2xvYmFsRGF0YSYsIFN0cnVjdHVyZSopOwogICAgICAgICBzdGF0aWMgU3RydWN0dXJlKiBzZWFs
VHJhbnNpdGlvbihKU0dsb2JhbERhdGEmLCBTdHJ1Y3R1cmUqKTsKQEAgLTEwOCw4ICsxMDgsOCBA
QCBuYW1lc3BhY2UgSlNDIHsKICAgICAgICAgc3RhdGljIHZvaWQgZGVzdHJveShKU0NlbGwqKTsK
IAogICAgICAgICAvLyBUaGVzZSBzaG91bGQgYmUgdXNlZCB3aXRoIGNhdXRpb24uICAKLSAgICAg
ICAgSlNfRVhQT1JUX1BSSVZBVEUgc2l6ZV90IGFkZFByb3BlcnR5V2l0aG91dFRyYW5zaXRpb24o
SlNHbG9iYWxEYXRhJiwgY29uc3QgSWRlbnRpZmllciYgcHJvcGVydHlOYW1lLCB1bnNpZ25lZCBh
dHRyaWJ1dGVzLCBKU0NlbGwqIHNwZWNpZmljVmFsdWUpOwotICAgICAgICBzaXplX3QgcmVtb3Zl
UHJvcGVydHlXaXRob3V0VHJhbnNpdGlvbihKU0dsb2JhbERhdGEmLCBjb25zdCBJZGVudGlmaWVy
JiBwcm9wZXJ0eU5hbWUpOworICAgICAgICBKU19FWFBPUlRfUFJJVkFURSBzaXplX3QgYWRkUHJv
cGVydHlXaXRob3V0VHJhbnNpdGlvbihKU0dsb2JhbERhdGEmLCBQcm9wZXJ0eU5hbWUsIHVuc2ln
bmVkIGF0dHJpYnV0ZXMsIEpTQ2VsbCogc3BlY2lmaWNWYWx1ZSk7CisgICAgICAgIHNpemVfdCBy
ZW1vdmVQcm9wZXJ0eVdpdGhvdXRUcmFuc2l0aW9uKEpTR2xvYmFsRGF0YSYsIFByb3BlcnR5TmFt
ZSk7CiAgICAgICAgIHZvaWQgc2V0UHJvdG90eXBlV2l0aG91dFRyYW5zaXRpb24oSlNHbG9iYWxE
YXRhJiBnbG9iYWxEYXRhLCBKU1ZhbHVlIHByb3RvdHlwZSkgeyBtX3Byb3RvdHlwZS5zZXQoZ2xv
YmFsRGF0YSwgdGhpcywgcHJvdG90eXBlKTsgfQogICAgICAgICAKICAgICAgICAgYm9vbCBpc0Rp
Y3Rpb25hcnkoKSBjb25zdCB7IHJldHVybiBtX2RpY3Rpb25hcnlLaW5kICE9IE5vbmVEaWN0aW9u
YXJ5S2luZDsgfQpAQCAtMTM2LDE1ICsxMzYsOSBAQCBuYW1lc3BhY2UgSlNDIHsKICAgICAgICAg
dW5zaWduZWQgcHJvcGVydHlTdG9yYWdlU2l6ZSgpIGNvbnN0IHsgQVNTRVJUKHN0cnVjdHVyZSgp
LT5jbGFzc0luZm8oKSA9PSAmc19pbmZvKTsgcmV0dXJuIChtX3Byb3BlcnR5VGFibGUgPyBtX3By
b3BlcnR5VGFibGUtPnByb3BlcnR5U3RvcmFnZVNpemUoKSA6IHN0YXRpY19jYXN0PHVuc2lnbmVk
PihtX29mZnNldCArIDEpKTsgfQogICAgICAgICBib29sIGlzVXNpbmdJbmxpbmVTdG9yYWdlKCkg
Y29uc3Q7CiAKLSAgICAgICAgc2l6ZV90IGdldChKU0dsb2JhbERhdGEmLCBjb25zdCBJZGVudGlm
aWVyJiBwcm9wZXJ0eU5hbWUpOworICAgICAgICBzaXplX3QgZ2V0KEpTR2xvYmFsRGF0YSYsIFBy
b3BlcnR5TmFtZSk7CiAgICAgICAgIHNpemVfdCBnZXQoSlNHbG9iYWxEYXRhJiwgY29uc3QgVVN0
cmluZyYgbmFtZSk7Ci0gICAgICAgIEpTX0VYUE9SVF9QUklWQVRFIHNpemVfdCBnZXQoSlNHbG9i
YWxEYXRhJiwgU3RyaW5nSW1wbCogcHJvcGVydHlOYW1lLCB1bnNpZ25lZCYgYXR0cmlidXRlcywg
SlNDZWxsKiYgc3BlY2lmaWNWYWx1ZSk7Ci0gICAgICAgIHNpemVfdCBnZXQoSlNHbG9iYWxEYXRh
JiBnbG9iYWxEYXRhLCBjb25zdCBJZGVudGlmaWVyJiBwcm9wZXJ0eU5hbWUsIHVuc2lnbmVkJiBh
dHRyaWJ1dGVzLCBKU0NlbGwqJiBzcGVjaWZpY1ZhbHVlKQotICAgICAgICB7Ci0gICAgICAgICAg
ICBBU1NFUlQoIXByb3BlcnR5TmFtZS5pc051bGwoKSk7Ci0gICAgICAgICAgICBBU1NFUlQoc3Ry
dWN0dXJlKCktPmNsYXNzSW5mbygpID09ICZzX2luZm8pOwotICAgICAgICAgICAgcmV0dXJuIGdl
dChnbG9iYWxEYXRhLCBwcm9wZXJ0eU5hbWUuaW1wbCgpLCBhdHRyaWJ1dGVzLCBzcGVjaWZpY1Zh
bHVlKTsKLSAgICAgICAgfQorICAgICAgICBKU19FWFBPUlRfUFJJVkFURSBzaXplX3QgZ2V0KEpT
R2xvYmFsRGF0YSYsIFByb3BlcnR5TmFtZSwgdW5zaWduZWQmIGF0dHJpYnV0ZXMsIEpTQ2VsbCom
IHNwZWNpZmljVmFsdWUpOwogCiAgICAgICAgIGJvb2wgaGFzR2V0dGVyU2V0dGVyUHJvcGVydGll
cygpIGNvbnN0IHsgcmV0dXJuIG1faGFzR2V0dGVyU2V0dGVyUHJvcGVydGllczsgfQogICAgICAg
ICBib29sIGhhc1JlYWRPbmx5T3JHZXR0ZXJTZXR0ZXJQcm9wZXJ0aWVzRXhjbHVkaW5nUHJvdG8o
KSBjb25zdCB7IHJldHVybiBtX2hhc1JlYWRPbmx5T3JHZXR0ZXJTZXR0ZXJQcm9wZXJ0aWVzRXhj
bHVkaW5nUHJvdG87IH0KQEAgLTE2Myw3ICsxNTcsNyBAQCBuYW1lc3BhY2UgSlNDIHsKICAgICAg
ICAgCiAgICAgICAgIGJvb2wgaXNFbXB0eSgpIGNvbnN0IHsgcmV0dXJuIG1fcHJvcGVydHlUYWJs
ZSA/IG1fcHJvcGVydHlUYWJsZS0+aXNFbXB0eSgpIDogbV9vZmZzZXQgPT0gbm9PZmZzZXQ7IH0K
IAotICAgICAgICBKU19FWFBPUlRfUFJJVkFURSB2b2lkIGRlc3BlY2lmeURpY3Rpb25hcnlGdW5j
dGlvbihKU0dsb2JhbERhdGEmLCBjb25zdCBJZGVudGlmaWVyJiBwcm9wZXJ0eU5hbWUpOworICAg
ICAgICBKU19FWFBPUlRfUFJJVkFURSB2b2lkIGRlc3BlY2lmeURpY3Rpb25hcnlGdW5jdGlvbihK
U0dsb2JhbERhdGEmLCBQcm9wZXJ0eU5hbWUpOwogICAgICAgICB2b2lkIGRpc2FibGVTcGVjaWZp
Y0Z1bmN0aW9uVHJhY2tpbmcoKSB7IG1fc3BlY2lmaWNGdW5jdGlvblRocmFzaENvdW50ID0gbWF4
U3BlY2lmaWNGdW5jdGlvblRocmFzaENvdW50OyB9CiAKICAgICAgICAgdm9pZCBzZXRFbnVtZXJh
dGlvbkNhY2hlKEpTR2xvYmFsRGF0YSYsIEpTUHJvcGVydHlOYW1lSXRlcmF0b3IqIGVudW1lcmF0
aW9uQ2FjaGUpOyAvLyBEZWZpbmVkIGluIEpTUHJvcGVydHlOYW1lSXRlcmF0b3IuaC4KQEAgLTIx
Niw3ICsyMTAsNyBAQCBuYW1lc3BhY2UgSlNDIHsKIAogICAgIHByaXZhdGU6CiAgICAgICAgIGZy
aWVuZCBjbGFzcyBMTEludE9mZnNldHNFeHRyYWN0b3I7Ci0gICAgICAgIAorCiAgICAgICAgIEpT
X0VYUE9SVF9QUklWQVRFIFN0cnVjdHVyZShKU0dsb2JhbERhdGEmLCBKU0dsb2JhbE9iamVjdCos
IEpTVmFsdWUgcHJvdG90eXBlLCBjb25zdCBUeXBlSW5mbyYsIGNvbnN0IENsYXNzSW5mbyopOwog
ICAgICAgICBTdHJ1Y3R1cmUoSlNHbG9iYWxEYXRhJik7CiAgICAgICAgIFN0cnVjdHVyZShKU0ds
b2JhbERhdGEmLCBjb25zdCBTdHJ1Y3R1cmUqKTsKQEAgLTIzNiwxMyArMjMwLDEzIEBAIG5hbWVz
cGFjZSBKU0MgewogICAgICAgICB9IERpY3Rpb25hcnlLaW5kOwogICAgICAgICBzdGF0aWMgU3Ry
dWN0dXJlKiB0b0RpY3Rpb25hcnlUcmFuc2l0aW9uKEpTR2xvYmFsRGF0YSYsIFN0cnVjdHVyZSos
IERpY3Rpb25hcnlLaW5kKTsKIAotICAgICAgICBzaXplX3QgcHV0U3BlY2lmaWNWYWx1ZShKU0ds
b2JhbERhdGEmLCBjb25zdCBJZGVudGlmaWVyJiBwcm9wZXJ0eU5hbWUsIHVuc2lnbmVkIGF0dHJp
YnV0ZXMsIEpTQ2VsbCogc3BlY2lmaWNWYWx1ZSk7Ci0gICAgICAgIHNpemVfdCByZW1vdmUoY29u
c3QgSWRlbnRpZmllciYgcHJvcGVydHlOYW1lKTsKKyAgICAgICAgc2l6ZV90IHB1dFNwZWNpZmlj
VmFsdWUoSlNHbG9iYWxEYXRhJiwgUHJvcGVydHlOYW1lLCB1bnNpZ25lZCBhdHRyaWJ1dGVzLCBK
U0NlbGwqIHNwZWNpZmljVmFsdWUpOworICAgICAgICBzaXplX3QgcmVtb3ZlKFByb3BlcnR5TmFt
ZSk7CiAKICAgICAgICAgdm9pZCBjcmVhdGVQcm9wZXJ0eU1hcCh1bnNpZ25lZCBrZXlDb3VudCA9
IDApOwogICAgICAgICB2b2lkIGNoZWNrQ29uc2lzdGVuY3koKTsKIAotICAgICAgICBib29sIGRl
c3BlY2lmeUZ1bmN0aW9uKEpTR2xvYmFsRGF0YSYsIGNvbnN0IElkZW50aWZpZXImKTsKKyAgICAg
ICAgYm9vbCBkZXNwZWNpZnlGdW5jdGlvbihKU0dsb2JhbERhdGEmLCBQcm9wZXJ0eU5hbWUpOwog
ICAgICAgICB2b2lkIGRlc3BlY2lmeUFsbEZ1bmN0aW9ucyhKU0dsb2JhbERhdGEmKTsKIAogICAg
ICAgICBQYXNzT3duUHRyPFByb3BlcnR5VGFibGU+IGNvcHlQcm9wZXJ0eVRhYmxlKEpTR2xvYmFs
RGF0YSYsIFN0cnVjdHVyZSogb3duZXIpOwpAQCAtMzE0LDcgKzMwOCw3IEBAIG5hbWVzcGFjZSBK
U0MgewogICAgICAgICB1bnNpZ25lZCBtX3N0YXRpY0Z1bmN0aW9uUmVpZmllZDsKICAgICB9Owog
Ci0gICAgaW5saW5lIHNpemVfdCBTdHJ1Y3R1cmU6OmdldChKU0dsb2JhbERhdGEmIGdsb2JhbERh
dGEsIGNvbnN0IElkZW50aWZpZXImIHByb3BlcnR5TmFtZSkKKyAgICBpbmxpbmUgc2l6ZV90IFN0
cnVjdHVyZTo6Z2V0KEpTR2xvYmFsRGF0YSYgZ2xvYmFsRGF0YSwgUHJvcGVydHlOYW1lIHByb3Bl
cnR5TmFtZSkKICAgICB7CiAgICAgICAgIEFTU0VSVChzdHJ1Y3R1cmUoKS0+Y2xhc3NJbmZvKCkg
PT0gJnNfaW5mbyk7CiAgICAgICAgIG1hdGVyaWFsaXplUHJvcGVydHlNYXBJZk5lY2Vzc2FyeShn
bG9iYWxEYXRhKTsKSW5kZXg6IFNvdXJjZS9XZWJDb3JlL0NoYW5nZUxvZwo9PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0t
LSBTb3VyY2UvV2ViQ29yZS9DaGFuZ2VMb2cJKHJldmlzaW9uIDExNjc5MikKKysrIFNvdXJjZS9X
ZWJDb3JlL0NoYW5nZUxvZwkod29ya2luZyBjb3B5KQpAQCAtMSwzICsxLDIyOSBAQAorMjAxMi0w
NS0xMSAgR2F2aW4gQmFycmFjbG91Z2ggIDxiYXJyYWNsb3VnaEBhcHBsZS5jb20+CisKKyAgICAg
ICAgSW50cm9kdWNlIFByb3BlcnR5TmFtZSBjbGFzcworICAgICAgICBodHRwczovL2J1Z3Mud2Vi
a2l0Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9ODYyNDEKKworICAgICAgICBSZXZpZXdlZCBieSBOT0JP
RFkgKE9PUFMhKS4KKworICAgICAgICBSZXBsYWNlICdjb25zdCBJZGVudGlmaWVyJicgYXJndW1l
bnRzIHRvIGZ1bmN0aW9ucyBhY2Nlc3Npbmcgb2JqZWN0IHByb3BlcnRpZXMgd2l0aCBhIG5ldyAn
UHJvcGVydHlOYW1lJyB0eXBlLgorICAgICAgICBUaGlzIGNoYW5nZSBwYXZlcyB0aGUgd2F5IHRv
IGFsbG93IGZvciBwcm9wZXJ0aWVzIGtleWVkIGJ5IHZhbHVlcyB0aGF0IGFyZSBub3QgSWRlbnRp
ZmllcnMuCisKKyAgICAgICAgVGhpcyBjaGFuZ2UgaXMgbGFyZ2VseSBhIG1lY2hhbmljYWwgZmlu
ZCAmIHJlcGxhY2UuCisgICAgICAgIEl0IGFsc28gY2hhbmdlcyBKU0Z1bmN0aW9uJ3MgY29uc3Ry
dWN0b3IgdG8gdGFrZSBhIFVTdHJpbmcmIGluc3RlYWQgb2YgYW4gSWRlbnRpZmllciYKKyAgICAg
ICAgKHNpbmNlIGluIHNvbWUgY2FzZXMgd2UgY2FuIG5vIGxvbmdlciBndWFyYW50ZWUgdGhhdCB3
ZSdsbGwgaGF2ZSBhbiBJZGVudGlmaWVyKSwgYW5kCisgICAgICAgIHVuaWZpZXMgSWRlbnRpZmll
cidzIG1ldGhvZHMgdG8gb2J0YWluIGFycmF5IGluZGljZXMgb250byBQcm9wZXJ0eU5hbWUuCisK
KyAgICAgICAgVGhlIG5ldyBQcm9wZXJ0eU5hbWUgY2xhc3MgcmV0YWlucyB0aGUgYWJpbGl0eSB0
byBzdXBwb3J0IC5pbXBsKCkgYW5kIC51c3RyaW5nKCksIGJ1dAorICAgICAgICBpbiBhIGZ1dHVy
ZSBwYXRjaCB3ZSBtYXkgbmVlZCB0byByZXdvcmsgdGhpcywgc2luY2Ugbm90IGFsbCBQcm9wZXJ0
eU5hbWVzIHNob3VsZCBiZQorICAgICAgICBlcXVhbCBiYXNlZCBvbiB0aGVpciBzdHJpbmcgcmVw
cmVzZW50YXRpb24uCisKKyAgICAgICAgKiBXZWJDb3JlLmV4cC5pbjoKKyAgICAgICAgKiBiaW5k
aW5ncy9qcy9KU0NTU1N0eWxlRGVjbGFyYXRpb25DdXN0b20uY3BwOgorICAgICAgICAoV2ViQ29y
ZTo6Y3NzUHJvcGVydHlJREZvckpTQ1NTUHJvcGVydHlOYW1lKToKKyAgICAgICAgKFdlYkNvcmU6
OkpTQ1NTU3R5bGVEZWNsYXJhdGlvbjo6Z2V0T3duUHJvcGVydHlTbG90RGVsZWdhdGUpOgorICAg
ICAgICAoV2ViQ29yZTo6SlNDU1NTdHlsZURlY2xhcmF0aW9uOjpnZXRPd25Qcm9wZXJ0eURlc2Ny
aXB0b3JEZWxlZ2F0ZSk6CisgICAgICAgIChXZWJDb3JlOjpKU0NTU1N0eWxlRGVjbGFyYXRpb246
OnB1dERlbGVnYXRlKToKKyAgICAgICAgKiBiaW5kaW5ncy9qcy9KU0RPTUJpbmRpbmcuY3BwOgor
ICAgICAgICAoV2ViQ29yZTo6ZmluZEF0b21pY1N0cmluZyk6CisgICAgICAgIChXZWJDb3JlOjpv
YmplY3RUb1N0cmluZ0Z1bmN0aW9uR2V0dGVyKToKKyAgICAgICAgKiBiaW5kaW5ncy9qcy9KU0RP
TUJpbmRpbmcuaDoKKyAgICAgICAgKFdlYkNvcmUpOgorICAgICAgICAoV2ViQ29yZTo6cHJvcGVy
dHlOYW1lVG9TdHJpbmcpOgorICAgICAgICAoV2ViQ29yZTo6cHJvcGVydHlOYW1lVG9BdG9taWNT
dHJpbmcpOgorICAgICAgICAqIGJpbmRpbmdzL2pzL0pTRE9NTWltZVR5cGVBcnJheUN1c3RvbS5j
cHA6CisgICAgICAgIChXZWJDb3JlOjpKU0RPTU1pbWVUeXBlQXJyYXk6OmNhbkdldEl0ZW1zRm9y
TmFtZSk6CisgICAgICAgIChXZWJDb3JlOjpKU0RPTU1pbWVUeXBlQXJyYXk6Om5hbWVHZXR0ZXIp
OgorICAgICAgICAqIGJpbmRpbmdzL2pzL0pTRE9NUGx1Z2luQXJyYXlDdXN0b20uY3BwOgorICAg
ICAgICAoV2ViQ29yZTo6SlNET01QbHVnaW5BcnJheTo6Y2FuR2V0SXRlbXNGb3JOYW1lKToKKyAg
ICAgICAgKFdlYkNvcmU6OkpTRE9NUGx1Z2luQXJyYXk6Om5hbWVHZXR0ZXIpOgorICAgICAgICAq
IGJpbmRpbmdzL2pzL0pTRE9NUGx1Z2luQ3VzdG9tLmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OkpT
RE9NUGx1Z2luOjpjYW5HZXRJdGVtc0Zvck5hbWUpOgorICAgICAgICAoV2ViQ29yZTo6SlNET01Q
bHVnaW46Om5hbWVHZXR0ZXIpOgorICAgICAgICAqIGJpbmRpbmdzL2pzL0pTRE9NU3RyaW5nTWFw
Q3VzdG9tLmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OkpTRE9NU3RyaW5nTWFwOjpjYW5HZXRJdGVt
c0Zvck5hbWUpOgorICAgICAgICAoV2ViQ29yZTo6SlNET01TdHJpbmdNYXA6Om5hbWVHZXR0ZXIp
OgorICAgICAgICAoV2ViQ29yZTo6SlNET01TdHJpbmdNYXA6OmRlbGV0ZVByb3BlcnR5KToKKyAg
ICAgICAgKFdlYkNvcmU6OkpTRE9NU3RyaW5nTWFwOjpwdXREZWxlZ2F0ZSk6CisgICAgICAgICog
YmluZGluZ3MvanMvSlNET01XaW5kb3dDdXN0b20uY3BwOgorICAgICAgICAoV2ViQ29yZTo6bm9u
Q2FjaGluZ1N0YXRpY0Z1bmN0aW9uR2V0dGVyKToKKyAgICAgICAgKFdlYkNvcmU6OmNoaWxkRnJh
bWVHZXR0ZXIpOgorICAgICAgICAoV2ViQ29yZTo6bmFtZWRJdGVtR2V0dGVyKToKKyAgICAgICAg
KFdlYkNvcmU6OkpTRE9NV2luZG93OjpnZXRPd25Qcm9wZXJ0eVNsb3QpOgorICAgICAgICAoV2Vi
Q29yZTo6SlNET01XaW5kb3c6OmdldE93blByb3BlcnR5RGVzY3JpcHRvcik6CisgICAgICAgIChX
ZWJDb3JlOjpKU0RPTVdpbmRvdzo6cHV0KToKKyAgICAgICAgKFdlYkNvcmU6OkpTRE9NV2luZG93
OjpkZWxldGVQcm9wZXJ0eSk6CisgICAgICAgIChXZWJDb3JlOjpKU0RPTVdpbmRvdzo6ZGVmaW5l
T3duUHJvcGVydHkpOgorICAgICAgICAqIGJpbmRpbmdzL2pzL0pTRE9NV2luZG93U2hlbGwuY3Bw
OgorICAgICAgICAoV2ViQ29yZTo6SlNET01XaW5kb3dTaGVsbDo6Z2V0T3duUHJvcGVydHlTbG90
KToKKyAgICAgICAgKFdlYkNvcmU6OkpTRE9NV2luZG93U2hlbGw6OmdldE93blByb3BlcnR5RGVz
Y3JpcHRvcik6CisgICAgICAgIChXZWJDb3JlOjpKU0RPTVdpbmRvd1NoZWxsOjpwdXQpOgorICAg
ICAgICAoV2ViQ29yZTo6SlNET01XaW5kb3dTaGVsbDo6cHV0RGlyZWN0VmlydHVhbCk6CisgICAg
ICAgIChXZWJDb3JlOjpKU0RPTVdpbmRvd1NoZWxsOjpkZWZpbmVPd25Qcm9wZXJ0eSk6CisgICAg
ICAgIChXZWJDb3JlOjpKU0RPTVdpbmRvd1NoZWxsOjpkZWxldGVQcm9wZXJ0eSk6CisgICAgICAg
ICogYmluZGluZ3MvanMvSlNET01XaW5kb3dTaGVsbC5oOgorICAgICAgICAoSlNET01XaW5kb3dT
aGVsbCk6CisgICAgICAgICogYmluZGluZ3MvanMvSlNIVE1MQWxsQ29sbGVjdGlvbkN1c3RvbS5j
cHA6CisgICAgICAgIChXZWJDb3JlOjpnZXROYW1lZEl0ZW1zKToKKyAgICAgICAgKFdlYkNvcmU6
OmNhbGxIVE1MQWxsQ29sbGVjdGlvbik6CisgICAgICAgIChXZWJDb3JlOjpKU0hUTUxBbGxDb2xs
ZWN0aW9uOjpjYW5HZXRJdGVtc0Zvck5hbWUpOgorICAgICAgICAoV2ViQ29yZTo6SlNIVE1MQWxs
Q29sbGVjdGlvbjo6bmFtZUdldHRlcik6CisgICAgICAgIChXZWJDb3JlOjpKU0hUTUxBbGxDb2xs
ZWN0aW9uOjppdGVtKToKKyAgICAgICAgKiBiaW5kaW5ncy9qcy9KU0hUTUxBcHBsZXRFbGVtZW50
Q3VzdG9tLmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OkpTSFRNTEFwcGxldEVsZW1lbnQ6OmdldE93
blByb3BlcnR5U2xvdERlbGVnYXRlKToKKyAgICAgICAgKFdlYkNvcmU6OkpTSFRNTEFwcGxldEVs
ZW1lbnQ6OmdldE93blByb3BlcnR5RGVzY3JpcHRvckRlbGVnYXRlKToKKyAgICAgICAgKFdlYkNv
cmU6OkpTSFRNTEFwcGxldEVsZW1lbnQ6OnB1dERlbGVnYXRlKToKKyAgICAgICAgKiBiaW5kaW5n
cy9qcy9KU0hUTUxDb2xsZWN0aW9uQ3VzdG9tLmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OmdldE5h
bWVkSXRlbXMpOgorICAgICAgICAoV2ViQ29yZTo6SlNIVE1MQ29sbGVjdGlvbjo6Y2FuR2V0SXRl
bXNGb3JOYW1lKToKKyAgICAgICAgKFdlYkNvcmU6OkpTSFRNTENvbGxlY3Rpb246Om5hbWVHZXR0
ZXIpOgorICAgICAgICAqIGJpbmRpbmdzL2pzL0pTSFRNTERvY3VtZW50Q3VzdG9tLmNwcDoKKyAg
ICAgICAgKFdlYkNvcmU6OkpTSFRNTERvY3VtZW50OjpjYW5HZXRJdGVtc0Zvck5hbWUpOgorICAg
ICAgICAoV2ViQ29yZTo6SlNIVE1MRG9jdW1lbnQ6Om5hbWVHZXR0ZXIpOgorICAgICAgICAqIGJp
bmRpbmdzL2pzL0pTSFRNTEVtYmVkRWxlbWVudEN1c3RvbS5jcHA6CisgICAgICAgIChXZWJDb3Jl
OjpKU0hUTUxFbWJlZEVsZW1lbnQ6OmdldE93blByb3BlcnR5U2xvdERlbGVnYXRlKToKKyAgICAg
ICAgKFdlYkNvcmU6OkpTSFRNTEVtYmVkRWxlbWVudDo6Z2V0T3duUHJvcGVydHlEZXNjcmlwdG9y
RGVsZWdhdGUpOgorICAgICAgICAoV2ViQ29yZTo6SlNIVE1MRW1iZWRFbGVtZW50OjpwdXREZWxl
Z2F0ZSk6CisgICAgICAgICogYmluZGluZ3MvanMvSlNIVE1MRm9ybUVsZW1lbnRDdXN0b20uY3Bw
OgorICAgICAgICAoV2ViQ29yZTo6SlNIVE1MRm9ybUVsZW1lbnQ6OmNhbkdldEl0ZW1zRm9yTmFt
ZSk6CisgICAgICAgIChXZWJDb3JlOjpKU0hUTUxGb3JtRWxlbWVudDo6bmFtZUdldHRlcik6Cisg
ICAgICAgICogYmluZGluZ3MvanMvSlNIVE1MRnJhbWVTZXRFbGVtZW50Q3VzdG9tLmNwcDoKKyAg
ICAgICAgKFdlYkNvcmU6OkpTSFRNTEZyYW1lU2V0RWxlbWVudDo6Y2FuR2V0SXRlbXNGb3JOYW1l
KToKKyAgICAgICAgKFdlYkNvcmU6OkpTSFRNTEZyYW1lU2V0RWxlbWVudDo6bmFtZUdldHRlcik6
CisgICAgICAgICogYmluZGluZ3MvanMvSlNIVE1MT2JqZWN0RWxlbWVudEN1c3RvbS5jcHA6Cisg
ICAgICAgIChXZWJDb3JlOjpKU0hUTUxPYmplY3RFbGVtZW50OjpnZXRPd25Qcm9wZXJ0eVNsb3RE
ZWxlZ2F0ZSk6CisgICAgICAgIChXZWJDb3JlOjpKU0hUTUxPYmplY3RFbGVtZW50OjpnZXRPd25Q
cm9wZXJ0eURlc2NyaXB0b3JEZWxlZ2F0ZSk6CisgICAgICAgIChXZWJDb3JlOjpKU0hUTUxPYmpl
Y3RFbGVtZW50OjpwdXREZWxlZ2F0ZSk6CisgICAgICAgICogYmluZGluZ3MvanMvSlNIaXN0b3J5
Q3VzdG9tLmNwcDoKKyAgICAgICAgKFdlYkNvcmU6Om5vbkNhY2hpbmdTdGF0aWNCYWNrRnVuY3Rp
b25HZXR0ZXIpOgorICAgICAgICAoV2ViQ29yZTo6bm9uQ2FjaGluZ1N0YXRpY0ZvcndhcmRGdW5j
dGlvbkdldHRlcik6CisgICAgICAgIChXZWJDb3JlOjpub25DYWNoaW5nU3RhdGljR29GdW5jdGlv
bkdldHRlcik6CisgICAgICAgIChXZWJDb3JlOjpKU0hpc3Rvcnk6OmdldE93blByb3BlcnR5U2xv
dERlbGVnYXRlKToKKyAgICAgICAgKFdlYkNvcmU6OkpTSGlzdG9yeTo6Z2V0T3duUHJvcGVydHlE
ZXNjcmlwdG9yRGVsZWdhdGUpOgorICAgICAgICAoV2ViQ29yZTo6SlNIaXN0b3J5OjpwdXREZWxl
Z2F0ZSk6CisgICAgICAgIChXZWJDb3JlOjpKU0hpc3Rvcnk6OmRlbGV0ZVByb3BlcnR5KToKKyAg
ICAgICAgKiBiaW5kaW5ncy9qcy9KU0xvY2F0aW9uQ3VzdG9tLmNwcDoKKyAgICAgICAgKFdlYkNv
cmU6Om5vbkNhY2hpbmdTdGF0aWNSZXBsYWNlRnVuY3Rpb25HZXR0ZXIpOgorICAgICAgICAoV2Vi
Q29yZTo6bm9uQ2FjaGluZ1N0YXRpY1JlbG9hZEZ1bmN0aW9uR2V0dGVyKToKKyAgICAgICAgKFdl
YkNvcmU6Om5vbkNhY2hpbmdTdGF0aWNBc3NpZ25GdW5jdGlvbkdldHRlcik6CisgICAgICAgIChX
ZWJDb3JlOjpKU0xvY2F0aW9uOjpnZXRPd25Qcm9wZXJ0eVNsb3REZWxlZ2F0ZSk6CisgICAgICAg
IChXZWJDb3JlOjpKU0xvY2F0aW9uOjpnZXRPd25Qcm9wZXJ0eURlc2NyaXB0b3JEZWxlZ2F0ZSk6
CisgICAgICAgIChXZWJDb3JlOjpKU0xvY2F0aW9uOjpwdXREZWxlZ2F0ZSk6CisgICAgICAgIChX
ZWJDb3JlOjpKU0xvY2F0aW9uOjpkZWxldGVQcm9wZXJ0eSk6CisgICAgICAgIChXZWJDb3JlOjpK
U0xvY2F0aW9uOjpkZWZpbmVPd25Qcm9wZXJ0eSk6CisgICAgICAgIChXZWJDb3JlOjpKU0xvY2F0
aW9uUHJvdG90eXBlOjpwdXREZWxlZ2F0ZSk6CisgICAgICAgIChXZWJDb3JlOjpKU0xvY2F0aW9u
UHJvdG90eXBlOjpkZWZpbmVPd25Qcm9wZXJ0eSk6CisgICAgICAgICogYmluZGluZ3MvanMvSlNO
YW1lZE5vZGVNYXBDdXN0b20uY3BwOgorICAgICAgICAoV2ViQ29yZTo6SlNOYW1lZE5vZGVNYXA6
OmNhbkdldEl0ZW1zRm9yTmFtZSk6CisgICAgICAgIChXZWJDb3JlOjpKU05hbWVkTm9kZU1hcDo6
bmFtZUdldHRlcik6CisgICAgICAgICogYmluZGluZ3MvanMvSlNOb2RlTGlzdEN1c3RvbS5jcHA6
CisgICAgICAgIChXZWJDb3JlOjpKU05vZGVMaXN0OjpjYW5HZXRJdGVtc0Zvck5hbWUpOgorICAg
ICAgICAoV2ViQ29yZTo6SlNOb2RlTGlzdDo6bmFtZUdldHRlcik6CisgICAgICAgICogYmluZGlu
Z3MvanMvSlNQbHVnaW5FbGVtZW50RnVuY3Rpb25zLmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OnJ1
bnRpbWVPYmplY3RQcm9wZXJ0eUdldHRlcik6CisgICAgICAgIChXZWJDb3JlOjpydW50aW1lT2Jq
ZWN0Q3VzdG9tR2V0T3duUHJvcGVydHlTbG90KToKKyAgICAgICAgKFdlYkNvcmU6OnJ1bnRpbWVP
YmplY3RDdXN0b21HZXRPd25Qcm9wZXJ0eURlc2NyaXB0b3IpOgorICAgICAgICAoV2ViQ29yZTo6
cnVudGltZU9iamVjdEN1c3RvbVB1dCk6CisgICAgICAgICogYmluZGluZ3MvanMvSlNQbHVnaW5F
bGVtZW50RnVuY3Rpb25zLmg6CisgICAgICAgIChXZWJDb3JlKToKKyAgICAgICAgKiBiaW5kaW5n
cy9qcy9KU1N0b3JhZ2VDdXN0b20uY3BwOgorICAgICAgICAoV2ViQ29yZTo6SlNTdG9yYWdlOjpj
YW5HZXRJdGVtc0Zvck5hbWUpOgorICAgICAgICAoV2ViQ29yZTo6SlNTdG9yYWdlOjpuYW1lR2V0
dGVyKToKKyAgICAgICAgKFdlYkNvcmU6OkpTU3RvcmFnZTo6ZGVsZXRlUHJvcGVydHkpOgorICAg
ICAgICAoV2ViQ29yZTo6SlNTdG9yYWdlOjpwdXREZWxlZ2F0ZSk6CisgICAgICAgICogYmluZGlu
Z3MvanMvSlNTdHlsZVNoZWV0TGlzdEN1c3RvbS5jcHA6CisgICAgICAgIChXZWJDb3JlOjpKU1N0
eWxlU2hlZXRMaXN0OjpjYW5HZXRJdGVtc0Zvck5hbWUpOgorICAgICAgICAoV2ViQ29yZTo6SlNT
dHlsZVNoZWV0TGlzdDo6bmFtZUdldHRlcik6CisgICAgICAgICogYmluZGluZ3MvanMvSlNXb3Jr
ZXJDb250ZXh0Q3VzdG9tLmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OkpTV29ya2VyQ29udGV4dDo6
Z2V0T3duUHJvcGVydHlTbG90RGVsZWdhdGUpOgorICAgICAgICAoV2ViQ29yZTo6SlNXb3JrZXJD
b250ZXh0OjpnZXRPd25Qcm9wZXJ0eURlc2NyaXB0b3JEZWxlZ2F0ZSk6CisgICAgICAgICogYmlu
ZGluZ3Mvc2NyaXB0cy9Db2RlR2VuZXJhdG9ySlMucG06CisgICAgICAgIChHZW5lcmF0ZUdldE93
blByb3BlcnR5U2xvdEJvZHkpOgorICAgICAgICAoR2VuZXJhdGVHZXRPd25Qcm9wZXJ0eURlc2Ny
aXB0b3JCb2R5KToKKyAgICAgICAgKEdlbmVyYXRlSGVhZGVyKToKKyAgICAgICAgKEdlbmVyYXRl
SW1wbGVtZW50YXRpb24pOgorICAgICAgICAoR2VuZXJhdGVDb25zdHJ1Y3RvckRlY2xhcmF0aW9u
KToKKyAgICAgICAgKEdlbmVyYXRlQ29uc3RydWN0b3JEZWZpbml0aW9uKToKKyAgICAgICAgKiBi
cmlkZ2UvYy9jX2NsYXNzLmNwcDoKKyAgICAgICAgKEpTQzo6QmluZGluZ3M6OkNDbGFzczo6bWV0
aG9kc05hbWVkKToKKyAgICAgICAgKEpTQzo6QmluZGluZ3M6OkNDbGFzczo6ZmllbGROYW1lZCk6
CisgICAgICAgICogYnJpZGdlL2MvY19jbGFzcy5oOgorICAgICAgICAoQ0NsYXNzKToKKyAgICAg
ICAgKiBicmlkZ2UvYy9jX2luc3RhbmNlLmNwcDoKKyAgICAgICAgKEpTQzo6QmluZGluZ3M6OkNS
dW50aW1lTWV0aG9kOjpjcmVhdGUpOgorICAgICAgICAoSlNDOjpCaW5kaW5nczo6Q1J1bnRpbWVN
ZXRob2Q6OmZpbmlzaENyZWF0aW9uKToKKyAgICAgICAgKEpTQzo6QmluZGluZ3M6OkNJbnN0YW5j
ZTo6Z2V0TWV0aG9kKToKKyAgICAgICAgKiBicmlkZ2UvYy9jX2luc3RhbmNlLmg6CisgICAgICAg
IChDSW5zdGFuY2UpOgorICAgICAgICAqIGJyaWRnZS9qbmkvanNjL0phdmFDbGFzc0pTQy5jcHA6
CisgICAgICAgIChKYXZhQ2xhc3M6Om1ldGhvZHNOYW1lZCk6CisgICAgICAgIChKYXZhQ2xhc3M6
OmZpZWxkTmFtZWQpOgorICAgICAgICAqIGJyaWRnZS9qbmkvanNjL0phdmFDbGFzc0pTQy5oOgor
ICAgICAgICAoSmF2YUNsYXNzKToKKyAgICAgICAgKiBicmlkZ2Uvam5pL2pzYy9KYXZhSW5zdGFu
Y2VKU0MuY3BwOgorICAgICAgICAoSmF2YVJ1bnRpbWVNZXRob2Q6OmNyZWF0ZSk6CisgICAgICAg
IChKYXZhUnVudGltZU1ldGhvZDo6ZmluaXNoQ3JlYXRpb24pOgorICAgICAgICAqIGJyaWRnZS9q
bmkvanNjL0phdmFJbnN0YW5jZUpTQy5oOgorICAgICAgICAoSmF2YUluc3RhbmNlKToKKyAgICAg
ICAgKiBicmlkZ2UvanNjL0JyaWRnZUpTQy5oOgorICAgICAgICAoQ2xhc3MpOgorICAgICAgICAo
SlNDOjpCaW5kaW5nczo6Q2xhc3M6OmZhbGxiYWNrT2JqZWN0KToKKyAgICAgICAgKEpTQzo6Qmlu
ZGluZ3M6Okluc3RhbmNlOjpzZXRWYWx1ZU9mVW5kZWZpbmVkRmllbGQpOgorICAgICAgICAoSW5z
dGFuY2UpOgorICAgICAgICAoSlNDOjpCaW5kaW5nczo6SW5zdGFuY2U6OmdldE93blByb3BlcnR5
U2xvdCk6CisgICAgICAgIChKU0M6OkJpbmRpbmdzOjpJbnN0YW5jZTo6Z2V0T3duUHJvcGVydHlE
ZXNjcmlwdG9yKToKKyAgICAgICAgKEpTQzo6QmluZGluZ3M6Okluc3RhbmNlOjpwdXQpOgorICAg
ICAgICAqIGJyaWRnZS9vYmpjL29iamNfY2xhc3MuaDoKKyAgICAgICAgKE9iamNDbGFzcyk6Cisg
ICAgICAgICogYnJpZGdlL29iamMvb2JqY19jbGFzcy5tbToKKyAgICAgICAgKEpTQzo6QmluZGlu
Z3M6Ok9iamNDbGFzczo6bWV0aG9kc05hbWVkKToKKyAgICAgICAgKEpTQzo6QmluZGluZ3M6Ok9i
amNDbGFzczo6ZmllbGROYW1lZCk6CisgICAgICAgIChKU0M6OkJpbmRpbmdzOjpPYmpjQ2xhc3M6
OmZhbGxiYWNrT2JqZWN0KToKKyAgICAgICAgKiBicmlkZ2Uvb2JqYy9vYmpjX2luc3RhbmNlLmg6
CisgICAgICAgIChPYmpjSW5zdGFuY2UpOgorICAgICAgICAqIGJyaWRnZS9vYmpjL29iamNfaW5z
dGFuY2UubW06CisgICAgICAgIChPYmpDUnVudGltZU1ldGhvZDo6Y3JlYXRlKToKKyAgICAgICAg
KE9iakNSdW50aW1lTWV0aG9kOjpmaW5pc2hDcmVhdGlvbik6CisgICAgICAgIChPYmpjSW5zdGFu
Y2U6OnNldFZhbHVlT2ZVbmRlZmluZWRGaWVsZCk6CisgICAgICAgIChPYmpjSW5zdGFuY2U6Omdl
dFZhbHVlT2ZVbmRlZmluZWRGaWVsZCk6CisgICAgICAgICogYnJpZGdlL29iamMvb2JqY19ydW50
aW1lLmg6CisgICAgICAgIChKU0M6OkJpbmRpbmdzOjpPYmpjRmFsbGJhY2tPYmplY3RJbXA6OmNy
ZWF0ZSk6CisgICAgICAgIChKU0M6OkJpbmRpbmdzOjpPYmpjRmFsbGJhY2tPYmplY3RJbXA6OnBy
b3BlcnR5TmFtZSk6CisgICAgICAgIChPYmpjRmFsbGJhY2tPYmplY3RJbXApOgorICAgICAgICAq
IGJyaWRnZS9vYmpjL29iamNfcnVudGltZS5tbToKKyAgICAgICAgKEpTQzo6QmluZGluZ3M6Ok9i
amNGYWxsYmFja09iamVjdEltcDo6T2JqY0ZhbGxiYWNrT2JqZWN0SW1wKToKKyAgICAgICAgKEpT
Qzo6QmluZGluZ3M6Ok9iamNGYWxsYmFja09iamVjdEltcDo6Z2V0T3duUHJvcGVydHlTbG90KToK
KyAgICAgICAgKEpTQzo6QmluZGluZ3M6Ok9iamNGYWxsYmFja09iamVjdEltcDo6Z2V0T3duUHJv
cGVydHlEZXNjcmlwdG9yKToKKyAgICAgICAgKEpTQzo6QmluZGluZ3M6Ok9iamNGYWxsYmFja09i
amVjdEltcDo6cHV0KToKKyAgICAgICAgKEpTQzo6QmluZGluZ3M6OmNhbGxPYmpDRmFsbGJhY2tP
YmplY3QpOgorICAgICAgICAoSlNDOjpCaW5kaW5nczo6T2JqY0ZhbGxiYWNrT2JqZWN0SW1wOjpk
ZWxldGVQcm9wZXJ0eSk6CisgICAgICAgIChKU0M6OkJpbmRpbmdzOjpPYmpjRmFsbGJhY2tPYmpl
Y3RJbXA6OmRlZmF1bHRWYWx1ZSk6CisgICAgICAgICogYnJpZGdlL3J1bnRpbWVfYXJyYXkuY3Bw
OgorICAgICAgICAoSlNDOjpSdW50aW1lQXJyYXk6Omxlbmd0aEdldHRlcik6CisgICAgICAgIChK
U0M6OlJ1bnRpbWVBcnJheTo6Z2V0T3duUHJvcGVydHlTbG90KToKKyAgICAgICAgKEpTQzo6UnVu
dGltZUFycmF5OjpnZXRPd25Qcm9wZXJ0eURlc2NyaXB0b3IpOgorICAgICAgICAoSlNDOjpSdW50
aW1lQXJyYXk6OnB1dCk6CisgICAgICAgIChKU0M6OlJ1bnRpbWVBcnJheTo6ZGVsZXRlUHJvcGVy
dHkpOgorICAgICAgICAqIGJyaWRnZS9ydW50aW1lX2FycmF5Lmg6CisgICAgICAgIChSdW50aW1l
QXJyYXkpOgorICAgICAgICAqIGJyaWRnZS9ydW50aW1lX21ldGhvZC5jcHA6CisgICAgICAgIChK
U0M6OlJ1bnRpbWVNZXRob2Q6OmZpbmlzaENyZWF0aW9uKToKKyAgICAgICAgKEpTQzo6UnVudGlt
ZU1ldGhvZDo6bGVuZ3RoR2V0dGVyKToKKyAgICAgICAgKEpTQzo6UnVudGltZU1ldGhvZDo6Z2V0
T3duUHJvcGVydHlTbG90KToKKyAgICAgICAgKEpTQzo6UnVudGltZU1ldGhvZDo6Z2V0T3duUHJv
cGVydHlEZXNjcmlwdG9yKToKKyAgICAgICAgKiBicmlkZ2UvcnVudGltZV9tZXRob2QuaDoKKyAg
ICAgICAgKEpTQzo6UnVudGltZU1ldGhvZDo6Y3JlYXRlKToKKyAgICAgICAgKFJ1bnRpbWVNZXRo
b2QpOgorICAgICAgICAqIGJyaWRnZS9ydW50aW1lX29iamVjdC5jcHA6CisgICAgICAgIChKU0M6
OkJpbmRpbmdzOjpSdW50aW1lT2JqZWN0OjpmYWxsYmFja09iamVjdEdldHRlcik6CisgICAgICAg
IChKU0M6OkJpbmRpbmdzOjpSdW50aW1lT2JqZWN0OjpmaWVsZEdldHRlcik6CisgICAgICAgIChK
U0M6OkJpbmRpbmdzOjpSdW50aW1lT2JqZWN0OjptZXRob2RHZXR0ZXIpOgorICAgICAgICAoSlND
OjpCaW5kaW5nczo6UnVudGltZU9iamVjdDo6Z2V0T3duUHJvcGVydHlTbG90KToKKyAgICAgICAg
KEpTQzo6QmluZGluZ3M6OlJ1bnRpbWVPYmplY3Q6OmdldE93blByb3BlcnR5RGVzY3JpcHRvcik6
CisgICAgICAgIChKU0M6OkJpbmRpbmdzOjpSdW50aW1lT2JqZWN0OjpwdXQpOgorICAgICAgICAo
SlNDOjpCaW5kaW5nczo6UnVudGltZU9iamVjdDo6ZGVsZXRlUHJvcGVydHkpOgorICAgICAgICAq
IGJyaWRnZS9ydW50aW1lX29iamVjdC5oOgorICAgICAgICAoUnVudGltZU9iamVjdCk6CisKIDIw
MTItMDUtMTEgIFNpbW9uIEZyYXNlciAgPHNpbW9uLmZyYXNlckBhcHBsZS5jb20+CiAKICAgICAg
ICAgQ1ZEaXNwbGF5TGluayBrZWVwcyBydW5uaW5nIGFmdGVyIGEgc2luZ2xlIHJlcXVlc3RBbmlt
YXRpb25GcmFtZQpJbmRleDogU291cmNlL1dlYkNvcmUvV2ViQ29yZS5leHAuaW4KPT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PQotLS0gU291cmNlL1dlYkNvcmUvV2ViQ29yZS5leHAuaW4JKHJldmlzaW9uIDExNjY2NykKKysr
IFNvdXJjZS9XZWJDb3JlL1dlYkNvcmUuZXhwLmluCSh3b3JraW5nIGNvcHkpCkBAIC0xODg0LDIy
ICsxODg0LDIyIEBAIF9fWk43V2ViQ29yZTVGcmFtZTI2c2VuZE9yaWVudGF0aW9uQ2hhbmcKIAog
I2lmIFVTRShQTFVHSU5fSE9TVF9QUk9DRVNTKQogX19aTjNKU0MxM1J1bnRpbWVNZXRob2QxMWdl
dENhbGxEYXRhRVBOU182SlNDZWxsRVJOU184Q2FsbERhdGFFCi1fX1pOM0pTQzEzUnVudGltZU1l
dGhvZDE0ZmluaXNoQ3JlYXRpb25FUk5TXzEySlNHbG9iYWxEYXRhRVJLTlNfMTBJZGVudGlmaWVy
RQotX19aTjNKU0MxM1J1bnRpbWVNZXRob2QxOGdldE93blByb3BlcnR5U2xvdEVQTlNfNkpTQ2Vs
bEVQTlNfOUV4ZWNTdGF0ZUVSS05TXzEwSWRlbnRpZmllckVSTlNfMTJQcm9wZXJ0eVNsb3RFCi1f
X1pOM0pTQzEzUnVudGltZU1ldGhvZDI0Z2V0T3duUHJvcGVydHlEZXNjcmlwdG9yRVBOU184SlNP
YmplY3RFUE5TXzlFeGVjU3RhdGVFUktOU18xMElkZW50aWZpZXJFUk5TXzE4UHJvcGVydHlEZXNj
cmlwdG9yRQorX19aTjNKU0MxM1J1bnRpbWVNZXRob2QxNGZpbmlzaENyZWF0aW9uRVJOU18xMkpT
R2xvYmFsRGF0YUVSS05TXzdVU3RyaW5nRQorX19aTjNKU0MxM1J1bnRpbWVNZXRob2QxOGdldE93
blByb3BlcnR5U2xvdEVQTlNfNkpTQ2VsbEVQTlNfOUV4ZWNTdGF0ZUVOU18xMlByb3BlcnR5TmFt
ZUVSTlNfMTJQcm9wZXJ0eVNsb3RFCitfX1pOM0pTQzEzUnVudGltZU1ldGhvZDI0Z2V0T3duUHJv
cGVydHlEZXNjcmlwdG9yRVBOU184SlNPYmplY3RFUE5TXzlFeGVjU3RhdGVFTlNfMTJQcm9wZXJ0
eU5hbWVFUk5TXzE4UHJvcGVydHlEZXNjcmlwdG9yRQogX19aTjNKU0MxM1J1bnRpbWVNZXRob2Q2
c19pbmZvRQogX19aTjNKU0MxM1J1bnRpbWVNZXRob2Q3ZGVzdHJveUVQTlNfNkpTQ2VsbEUKIF9f
Wk4zSlNDMTNSdW50aW1lTWV0aG9kQzJFUE5TXzE0SlNHbG9iYWxPYmplY3RFUE5TXzlTdHJ1Y3R1
cmVFUk4zV1RGNlZlY3RvcklQTlNfOEJpbmRpbmdzNk1ldGhvZEVMbTBFRUUKIF9fWk4zSlNDOEJp
bmRpbmdzMTBSb290T2JqZWN0RDFFdgogX19aTjNKU0M4QmluZGluZ3MxM1J1bnRpbWVPYmplY3Qx
MWdldENhbGxEYXRhRVBOU182SlNDZWxsRVJOU184Q2FsbERhdGFFCiBfX1pOM0pTQzhCaW5kaW5n
czEzUnVudGltZU9iamVjdDEyZGVmYXVsdFZhbHVlRVBLTlNfOEpTT2JqZWN0RVBOU185RXhlY1N0
YXRlRU5TXzIyUHJlZmVycmVkUHJpbWl0aXZlVHlwZUUKLV9fWk4zSlNDOEJpbmRpbmdzMTNSdW50
aW1lT2JqZWN0MTRkZWxldGVQcm9wZXJ0eUVQTlNfNkpTQ2VsbEVQTlNfOUV4ZWNTdGF0ZUVSS05T
XzEwSWRlbnRpZmllckUKK19fWk4zSlNDOEJpbmRpbmdzMTNSdW50aW1lT2JqZWN0MTRkZWxldGVQ
cm9wZXJ0eUVQTlNfNkpTQ2VsbEVQTlNfOUV4ZWNTdGF0ZUVOU18xMlByb3BlcnR5TmFtZUUKIF9f
Wk4zSlNDOEJpbmRpbmdzMTNSdW50aW1lT2JqZWN0MTRmaW5pc2hDcmVhdGlvbkVQTlNfMTRKU0ds
b2JhbE9iamVjdEUKIF9fWk4zSlNDOEJpbmRpbmdzMTNSdW50aW1lT2JqZWN0MTZnZXRDb25zdHJ1
Y3REYXRhRVBOU182SlNDZWxsRVJOU18xM0NvbnN0cnVjdERhdGFFCi1fX1pOM0pTQzhCaW5kaW5n
czEzUnVudGltZU9iamVjdDE4Z2V0T3duUHJvcGVydHlTbG90RVBOU182SlNDZWxsRVBOU185RXhl
Y1N0YXRlRVJLTlNfMTBJZGVudGlmaWVyRVJOU18xMlByb3BlcnR5U2xvdEUKK19fWk4zSlNDOEJp
bmRpbmdzMTNSdW50aW1lT2JqZWN0MThnZXRPd25Qcm9wZXJ0eVNsb3RFUE5TXzZKU0NlbGxFUE5T
XzlFeGVjU3RhdGVFTlNfMTJQcm9wZXJ0eU5hbWVFUk5TXzEyUHJvcGVydHlTbG90RQogX19aTjNK
U0M4QmluZGluZ3MxM1J1bnRpbWVPYmplY3QxOWdldE93blByb3BlcnR5TmFtZXNFUE5TXzhKU09i
amVjdEVQTlNfOUV4ZWNTdGF0ZUVSTlNfMTdQcm9wZXJ0eU5hbWVBcnJheUVOU18xNUVudW1lcmF0
aW9uTW9kZUUKLV9fWk4zSlNDOEJpbmRpbmdzMTNSdW50aW1lT2JqZWN0MjRnZXRPd25Qcm9wZXJ0
eURlc2NyaXB0b3JFUE5TXzhKU09iamVjdEVQTlNfOUV4ZWNTdGF0ZUVSS05TXzEwSWRlbnRpZmll
ckVSTlNfMThQcm9wZXJ0eURlc2NyaXB0b3JFCi1fX1pOM0pTQzhCaW5kaW5nczEzUnVudGltZU9i
amVjdDNwdXRFUE5TXzZKU0NlbGxFUE5TXzlFeGVjU3RhdGVFUktOU18xMElkZW50aWZpZXJFTlNf
N0pTVmFsdWVFUk5TXzE1UHV0UHJvcGVydHlTbG90RQorX19aTjNKU0M4QmluZGluZ3MxM1J1bnRp
bWVPYmplY3QyNGdldE93blByb3BlcnR5RGVzY3JpcHRvckVQTlNfOEpTT2JqZWN0RVBOU185RXhl
Y1N0YXRlRU5TXzEyUHJvcGVydHlOYW1lRVJOU18xOFByb3BlcnR5RGVzY3JpcHRvckUKK19fWk4z
SlNDOEJpbmRpbmdzMTNSdW50aW1lT2JqZWN0M3B1dEVQTlNfNkpTQ2VsbEVQTlNfOUV4ZWNTdGF0
ZUVOU18xMlByb3BlcnR5TmFtZUVOU183SlNWYWx1ZUVSTlNfMTVQdXRQcm9wZXJ0eVNsb3RFCiBf
X1pOM0pTQzhCaW5kaW5nczEzUnVudGltZU9iamVjdDZzX2luZm9FCiBfX1pOM0pTQzhCaW5kaW5n
czEzUnVudGltZU9iamVjdDdkZXN0cm95RVBOU182SlNDZWxsRQogX19aTjNKU0M4QmluZGluZ3Mx
M1J1bnRpbWVPYmplY3RDMkVQTlNfOUV4ZWNTdGF0ZUVQTlNfMTRKU0dsb2JhbE9iamVjdEVQTlNf
OVN0cnVjdHVyZUVOM1dURjEwUGFzc1JlZlB0cklOUzBfOEluc3RhbmNlRUVFCkluZGV4OiBTb3Vy
Y2UvV2ViQ29yZS9iaW5kaW5ncy9qcy9KU0NTU1N0eWxlRGVjbGFyYXRpb25DdXN0b20uY3BwCj09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT0KLS0tIFNvdXJjZS9XZWJDb3JlL2JpbmRpbmdzL2pzL0pTQ1NTU3R5bGVEZWNsYXJh
dGlvbkN1c3RvbS5jcHAJKHJldmlzaW9uIDExNjY2NykKKysrIFNvdXJjZS9XZWJDb3JlL2JpbmRp
bmdzL2pzL0pTQ1NTU3R5bGVEZWNsYXJhdGlvbkN1c3RvbS5jcHAJKHdvcmtpbmcgY29weSkKQEAg
LTE3NiwxNiArMTc2LDE2IEBAIHN0YXRpYyBpbmxpbmUgdm9pZCB3cml0ZUVwdWJQcmVmaXgoY2hh
cioKICAgICAqYnVmZmVyKysgPSAnLSc7CiB9CiAKLXN0YXRpYyBDU1NQcm9wZXJ0eUluZm8gY3Nz
UHJvcGVydHlJREZvckpTQ1NTUHJvcGVydHlOYW1lKGNvbnN0IElkZW50aWZpZXImIHByb3BlcnR5
TmFtZSkKK3N0YXRpYyBDU1NQcm9wZXJ0eUluZm8gY3NzUHJvcGVydHlJREZvckpTQ1NTUHJvcGVy
dHlOYW1lKFByb3BlcnR5TmFtZSBwcm9wZXJ0eU5hbWUpCiB7CiAgICAgQ1NTUHJvcGVydHlJbmZv
IHByb3BlcnR5SW5mbyA9IHtDU1NQcm9wZXJ0eUludmFsaWQsIGZhbHNlfTsKICAgICBib29sIGhh
ZFBpeGVsT3JQb3NQcmVmaXggPSBmYWxzZTsKIAotICAgIHVuc2lnbmVkIGxlbmd0aCA9IHByb3Bl
cnR5TmFtZS5sZW5ndGgoKTsKKyAgICBTdHJpbmdJbXBsKiBwcm9wZXJ0eU5hbWVTdHJpbmcgPSBw
cm9wZXJ0eU5hbWUuaW1wbCgpOworICAgIHVuc2lnbmVkIGxlbmd0aCA9IHByb3BlcnR5TmFtZVN0
cmluZy0+bGVuZ3RoKCk7CiAgICAgaWYgKCFsZW5ndGgpCiAgICAgICAgIHJldHVybiBwcm9wZXJ0
eUluZm87CiAKLSAgICBTdHJpbmdJbXBsKiBwcm9wZXJ0eU5hbWVTdHJpbmcgPSBwcm9wZXJ0eU5h
bWUuaW1wbCgpOwogICAgIFN0cmluZyBzdHJpbmdGb3JDYWNoZSA9IFN0cmluZyhwcm9wZXJ0eU5h
bWVTdHJpbmcpOwogICAgIHR5cGVkZWYgSGFzaE1hcDxTdHJpbmcsIENTU1Byb3BlcnR5SW5mbz4g
Q1NTUHJvcGVydHlJbmZvTWFwOwogICAgIERFRklORV9TVEFUSUNfTE9DQUwoQ1NTUHJvcGVydHlJ
bmZvTWFwLCBwcm9wZXJ0eUluZm9DYWNoZSwgKCkpOwpAQCAtMzIwLDcgKzMyMCw3IEBAIHN0YXRp
YyBKU1ZhbHVlIGNzc1Byb3BlcnR5R2V0dGVyQ2FsbGJhY2sKICAgICByZXR1cm4gY3NzUHJvcGVy
dHlHZXR0ZXIoZXhlYywganNDYXN0PEpTQ1NTU3R5bGVEZWNsYXJhdGlvbio+KGFzT2JqZWN0KHNs
b3RCYXNlKSksIHByb3BlcnR5SUQpOwogfQogCi1ib29sIEpTQ1NTU3R5bGVEZWNsYXJhdGlvbjo6
Z2V0T3duUHJvcGVydHlTbG90RGVsZWdhdGUoRXhlY1N0YXRlKiwgY29uc3QgSWRlbnRpZmllciYg
cHJvcGVydHlJZGVudGlmaWVyLCBQcm9wZXJ0eVNsb3QmIHNsb3QpCitib29sIEpTQ1NTU3R5bGVE
ZWNsYXJhdGlvbjo6Z2V0T3duUHJvcGVydHlTbG90RGVsZWdhdGUoRXhlY1N0YXRlKiwgUHJvcGVy
dHlOYW1lIHByb3BlcnR5SWRlbnRpZmllciwgUHJvcGVydHlTbG90JiBzbG90KQogewogICAgIENT
U1Byb3BlcnR5SW5mbyBwcm9wZXJ0eUluZm8gPSBjc3NQcm9wZXJ0eUlERm9ySlNDU1NQcm9wZXJ0
eU5hbWUocHJvcGVydHlJZGVudGlmaWVyKTsKICAgICBpZiAoIXByb3BlcnR5SW5mby5wcm9wZXJ0
eUlEKQpAQCAtMzMzLDcgKzMzMyw3IEBAIGJvb2wgSlNDU1NTdHlsZURlY2xhcmF0aW9uOjpnZXRP
d25Qcm9wZXIKICAgICByZXR1cm4gdHJ1ZTsKIH0KIAotYm9vbCBKU0NTU1N0eWxlRGVjbGFyYXRp
b246OmdldE93blByb3BlcnR5RGVzY3JpcHRvckRlbGVnYXRlKEpTQzo6RXhlY1N0YXRlKiBleGVj
LCBjb25zdCBKU0M6OklkZW50aWZpZXImIHByb3BlcnR5SWRlbnRpZmllciwgSlNDOjpQcm9wZXJ0
eURlc2NyaXB0b3ImIGRlc2NyaXB0b3IpCitib29sIEpTQ1NTU3R5bGVEZWNsYXJhdGlvbjo6Z2V0
T3duUHJvcGVydHlEZXNjcmlwdG9yRGVsZWdhdGUoSlNDOjpFeGVjU3RhdGUqIGV4ZWMsIEpTQzo6
UHJvcGVydHlOYW1lIHByb3BlcnR5SWRlbnRpZmllciwgSlNDOjpQcm9wZXJ0eURlc2NyaXB0b3Im
IGRlc2NyaXB0b3IpCiB7CiAgICAgQ1NTUHJvcGVydHlJbmZvIHByb3BlcnR5SW5mbyA9IGNzc1By
b3BlcnR5SURGb3JKU0NTU1Byb3BlcnR5TmFtZShwcm9wZXJ0eUlkZW50aWZpZXIpOwogICAgIGlm
ICghcHJvcGVydHlJbmZvLnByb3BlcnR5SUQpCkBAIC0zNDgsNyArMzQ4LDcgQEAgYm9vbCBKU0NT
U1N0eWxlRGVjbGFyYXRpb246OmdldE93blByb3BlcgogICAgIHJldHVybiB0cnVlOwogfQogCi1i
b29sIEpTQ1NTU3R5bGVEZWNsYXJhdGlvbjo6cHV0RGVsZWdhdGUoRXhlY1N0YXRlKiBleGVjLCBj
b25zdCBJZGVudGlmaWVyJiBwcm9wZXJ0eU5hbWUsIEpTVmFsdWUgdmFsdWUsIFB1dFByb3BlcnR5
U2xvdCYpCitib29sIEpTQ1NTU3R5bGVEZWNsYXJhdGlvbjo6cHV0RGVsZWdhdGUoRXhlY1N0YXRl
KiBleGVjLCBQcm9wZXJ0eU5hbWUgcHJvcGVydHlOYW1lLCBKU1ZhbHVlIHZhbHVlLCBQdXRQcm9w
ZXJ0eVNsb3QmKQogewogICAgIENTU1Byb3BlcnR5SW5mbyBwcm9wZXJ0eUluZm8gPSBjc3NQcm9w
ZXJ0eUlERm9ySlNDU1NQcm9wZXJ0eU5hbWUocHJvcGVydHlOYW1lKTsKICAgICBpZiAoIXByb3Bl
cnR5SW5mby5wcm9wZXJ0eUlEKQpJbmRleDogU291cmNlL1dlYkNvcmUvYmluZGluZ3MvanMvSlNE
T01CaW5kaW5nLmNwcAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2ViQ29yZS9iaW5kaW5ncy9qcy9K
U0RPTUJpbmRpbmcuY3BwCShyZXZpc2lvbiAxMTY2NjcpCisrKyBTb3VyY2UvV2ViQ29yZS9iaW5k
aW5ncy9qcy9KU0RPTUJpbmRpbmcuY3BwCSh3b3JraW5nIGNvcHkpCkBAIC0xMDcsMTEgKzEwNywx
MSBAQCBKU1ZhbHVlIGpzU3RyaW5nT3JGYWxzZShFeGVjU3RhdGUqIGV4ZWMsCiAgICAgcmV0dXJu
IGpzU3RyaW5nKGV4ZWMsIHVybC5zdHJpbmcoKSk7CiB9CiAKLUF0b21pY1N0cmluZ0ltcGwqIGZp
bmRBdG9taWNTdHJpbmcoY29uc3QgSWRlbnRpZmllciYgaWRlbnRpZmllcikKK0F0b21pY1N0cmlu
Z0ltcGwqIGZpbmRBdG9taWNTdHJpbmcoUHJvcGVydHlOYW1lIHByb3BlcnR5TmFtZSkKIHsKLSAg
ICBpZiAoaWRlbnRpZmllci5pc051bGwoKSkKKyAgICBTdHJpbmdJbXBsKiBpbXBsID0gcHJvcGVy
dHlOYW1lLmltcGwoKTsKKyAgICBpZiAoIWltcGwpCiAgICAgICAgIHJldHVybiAwOwotICAgIFN0
cmluZ0ltcGwqIGltcGwgPSBpZGVudGlmaWVyLmltcGwoKTsKICAgICBBU1NFUlQoaW1wbC0+ZXhp
c3RpbmdIYXNoKCkpOwogICAgIHJldHVybiBBdG9taWNTdHJpbmc6OmZpbmQoaW1wbC0+Y2hhcmFj
dGVycygpLCBpbXBsLT5sZW5ndGgoKSwgaW1wbC0+ZXhpc3RpbmdIYXNoKCkpOwogfQpAQCAtMjQz
LDkgKzI0Myw5IEBAIHZvaWQgcHJpbnRFcnJvck1lc3NhZ2VGb3JGcmFtZShGcmFtZSogZnIKICAg
ICBmcmFtZS0+ZG9tV2luZG93KCktPnByaW50RXJyb3JNZXNzYWdlKG1lc3NhZ2UpOwogfQogCi1K
U1ZhbHVlIG9iamVjdFRvU3RyaW5nRnVuY3Rpb25HZXR0ZXIoRXhlY1N0YXRlKiBleGVjLCBKU1Zh
bHVlLCBjb25zdCBJZGVudGlmaWVyJiBwcm9wZXJ0eU5hbWUpCitKU1ZhbHVlIG9iamVjdFRvU3Ry
aW5nRnVuY3Rpb25HZXR0ZXIoRXhlY1N0YXRlKiBleGVjLCBKU1ZhbHVlLCBQcm9wZXJ0eU5hbWUg
cHJvcGVydHlOYW1lKQogewotICAgIHJldHVybiBKU0Z1bmN0aW9uOjpjcmVhdGUoZXhlYywgZXhl
Yy0+bGV4aWNhbEdsb2JhbE9iamVjdCgpLCAwLCBwcm9wZXJ0eU5hbWUsIG9iamVjdFByb3RvRnVu
Y1RvU3RyaW5nKTsKKyAgICByZXR1cm4gSlNGdW5jdGlvbjo6Y3JlYXRlKGV4ZWMsIGV4ZWMtPmxl
eGljYWxHbG9iYWxPYmplY3QoKSwgMCwgcHJvcGVydHlOYW1lLmltcGwoKSwgb2JqZWN0UHJvdG9G
dW5jVG9TdHJpbmcpOwogfQogCiBTdHJ1Y3R1cmUqIGdldENhY2hlZERPTVN0cnVjdHVyZShKU0RP
TUdsb2JhbE9iamVjdCogZ2xvYmFsT2JqZWN0LCBjb25zdCBDbGFzc0luZm8qIGNsYXNzSW5mbykK
SW5kZXg6IFNvdXJjZS9XZWJDb3JlL2JpbmRpbmdzL2pzL0pTRE9NQmluZGluZy5oCj09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT0KLS0tIFNvdXJjZS9XZWJDb3JlL2JpbmRpbmdzL2pzL0pTRE9NQmluZGluZy5oCShyZXZpc2lv
biAxMTY2NjcpCisrKyBTb3VyY2UvV2ViQ29yZS9iaW5kaW5ncy9qcy9KU0RPTUJpbmRpbmcuaAko
d29ya2luZyBjb3B5KQpAQCAtMjUyLDEzICsyNTIsMTMgQEAgZW51bSBQYXJhbWV0ZXJEZWZhdWx0
UG9saWN5IHsKICAgICAvLyBvYmplY3QsIHRvIGxldCB0aGUgZW5naW5lIGtub3cgdGhhdCBjb2xs
ZWN0aW5nIHRoZSBKU1N0cmluZyB3cmFwcGVyIGlzIHVubGlrZWx5IHRvIHNhdmUgbWVtb3J5Lgog
ICAgIEpTQzo6SlNWYWx1ZSBqc093bmVkU3RyaW5nT3JOdWxsKEpTQzo6RXhlY1N0YXRlKiwgY29u
c3QgU3RyaW5nJik7IAogCi0gICAgU3RyaW5nIGlkZW50aWZpZXJUb1N0cmluZyhjb25zdCBKU0M6
OklkZW50aWZpZXImKTsKKyAgICBTdHJpbmcgcHJvcGVydHlOYW1lVG9TdHJpbmcoSlNDOjpQcm9w
ZXJ0eU5hbWUpOwogICAgIFN0cmluZyB1c3RyaW5nVG9TdHJpbmcoY29uc3QgSlNDOjpVU3RyaW5n
Jik7CiAgICAgSlNDOjpVU3RyaW5nIHN0cmluZ1RvVVN0cmluZyhjb25zdCBTdHJpbmcmKTsKIAot
ICAgIEF0b21pY1N0cmluZyBpZGVudGlmaWVyVG9BdG9taWNTdHJpbmcoY29uc3QgSlNDOjpJZGVu
dGlmaWVyJik7CisgICAgQXRvbWljU3RyaW5nIHByb3BlcnR5TmFtZVRvQXRvbWljU3RyaW5nKEpT
Qzo6UHJvcGVydHlOYW1lKTsKICAgICBBdG9taWNTdHJpbmcgdXN0cmluZ1RvQXRvbWljU3RyaW5n
KGNvbnN0IEpTQzo6VVN0cmluZyYpOwotICAgIEF0b21pY1N0cmluZ0ltcGwqIGZpbmRBdG9taWNT
dHJpbmcoY29uc3QgSlNDOjpJZGVudGlmaWVyJik7CisgICAgQXRvbWljU3RyaW5nSW1wbCogZmlu
ZEF0b21pY1N0cmluZyhKU0M6OlByb3BlcnR5TmFtZSk7CiAKICAgICBTdHJpbmcgdmFsdWVUb1N0
cmluZ1dpdGhOdWxsQ2hlY2soSlNDOjpFeGVjU3RhdGUqLCBKU0M6OkpTVmFsdWUpOyAvLyBudWxs
IGlmIHRoZSB2YWx1ZSBpcyBudWxsCiAgICAgU3RyaW5nIHZhbHVlVG9TdHJpbmdXaXRoVW5kZWZp
bmVkT3JOdWxsQ2hlY2soSlNDOjpFeGVjU3RhdGUqLCBKU0M6OkpTVmFsdWUpOyAvLyBudWxsIGlm
IHRoZSB2YWx1ZSBpcyBudWxsIG9yIHVuZGVmaW5lZApAQCAtMzM3LDcgKzMzNyw3IEBAIGVudW0g
UGFyYW1ldGVyRGVmYXVsdFBvbGljeSB7CiAgICAgRE9NV2luZG93KiBmaXJzdERPTVdpbmRvdyhK
U0M6OkV4ZWNTdGF0ZSopOwogCiAgICAgdm9pZCBwcmludEVycm9yTWVzc2FnZUZvckZyYW1lKEZy
YW1lKiwgY29uc3QgU3RyaW5nJiBtZXNzYWdlKTsKLSAgICBKU0M6OkpTVmFsdWUgb2JqZWN0VG9T
dHJpbmdGdW5jdGlvbkdldHRlcihKU0M6OkV4ZWNTdGF0ZSosIEpTQzo6SlNWYWx1ZSwgY29uc3Qg
SlNDOjpJZGVudGlmaWVyJiBwcm9wZXJ0eU5hbWUpOworICAgIEpTQzo6SlNWYWx1ZSBvYmplY3RU
b1N0cmluZ0Z1bmN0aW9uR2V0dGVyKEpTQzo6RXhlY1N0YXRlKiwgSlNDOjpKU1ZhbHVlLCBKU0M6
OlByb3BlcnR5TmFtZSk7CiAKICAgICBpbmxpbmUgSlNDOjpKU1ZhbHVlIGpzU3RyaW5nKEpTQzo6
RXhlY1N0YXRlKiBleGVjLCBjb25zdCBTdHJpbmcmIHMpCiAgICAgewpAQCAtMzcxLDkgKzM3MSw5
IEBAIGVudW0gUGFyYW1ldGVyRGVmYXVsdFBvbGljeSB7CiAgICAgICAgIHJldHVybiBKU0M6OlVT
dHJpbmcocy5pbXBsKCkpOwogICAgIH0KIAotICAgIGlubGluZSBTdHJpbmcgaWRlbnRpZmllclRv
U3RyaW5nKGNvbnN0IEpTQzo6SWRlbnRpZmllciYgaSkKKyAgICBpbmxpbmUgU3RyaW5nIHByb3Bl
cnR5TmFtZVRvU3RyaW5nKEpTQzo6UHJvcGVydHlOYW1lIHByb3BlcnR5TmFtZSkKICAgICB7Ci0g
ICAgICAgIHJldHVybiBpLmltcGwoKTsKKyAgICAgICAgcmV0dXJuIHByb3BlcnR5TmFtZS5pbXBs
KCk7CiAgICAgfQogCiAgICAgaW5saW5lIEF0b21pY1N0cmluZyB1c3RyaW5nVG9BdG9taWNTdHJp
bmcoY29uc3QgSlNDOjpVU3RyaW5nJiB1KQpAQCAtMzgxLDkgKzM4MSw5IEBAIGVudW0gUGFyYW1l
dGVyRGVmYXVsdFBvbGljeSB7CiAgICAgICAgIHJldHVybiBBdG9taWNTdHJpbmcodS5pbXBsKCkp
OwogICAgIH0KIAotICAgIGlubGluZSBBdG9taWNTdHJpbmcgaWRlbnRpZmllclRvQXRvbWljU3Ry
aW5nKGNvbnN0IEpTQzo6SWRlbnRpZmllciYgaWRlbnRpZmllcikKKyAgICBpbmxpbmUgQXRvbWlj
U3RyaW5nIHByb3BlcnR5TmFtZVRvQXRvbWljU3RyaW5nKEpTQzo6UHJvcGVydHlOYW1lIHByb3Bl
cnR5TmFtZSkKICAgICB7Ci0gICAgICAgIHJldHVybiBBdG9taWNTdHJpbmcoaWRlbnRpZmllci5p
bXBsKCkpOworICAgICAgICByZXR1cm4gQXRvbWljU3RyaW5nKHByb3BlcnR5TmFtZS5pbXBsKCkp
OwogICAgIH0KIAogICAgIGlubGluZSBWZWN0b3I8dW5zaWduZWQgbG9uZz4ganNVbnNpZ25lZExv
bmdBcnJheVRvVmVjdG9yKEpTQzo6RXhlY1N0YXRlKiBleGVjLCBKU0M6OkpTVmFsdWUgdmFsdWUp
CkluZGV4OiBTb3VyY2UvV2ViQ29yZS9iaW5kaW5ncy9qcy9KU0RPTU1pbWVUeXBlQXJyYXlDdXN0
b20uY3BwCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9XZWJDb3JlL2JpbmRpbmdzL2pzL0pTRE9NTWlt
ZVR5cGVBcnJheUN1c3RvbS5jcHAJKHJldmlzaW9uIDExNjY2NykKKysrIFNvdXJjZS9XZWJDb3Jl
L2JpbmRpbmdzL2pzL0pTRE9NTWltZVR5cGVBcnJheUN1c3RvbS5jcHAJKHdvcmtpbmcgY29weSkK
QEAgLTI4LDE1ICsyOCwxNSBAQCBuYW1lc3BhY2UgV2ViQ29yZSB7CiAKIHVzaW5nIG5hbWVzcGFj
ZSBKU0M7CiAKLWJvb2wgSlNET01NaW1lVHlwZUFycmF5OjpjYW5HZXRJdGVtc0Zvck5hbWUoRXhl
Y1N0YXRlKiwgRE9NTWltZVR5cGVBcnJheSogbWltZVR5cGVBcnJheSwgY29uc3QgSWRlbnRpZmll
ciYgcHJvcGVydHlOYW1lKQorYm9vbCBKU0RPTU1pbWVUeXBlQXJyYXk6OmNhbkdldEl0ZW1zRm9y
TmFtZShFeGVjU3RhdGUqLCBET01NaW1lVHlwZUFycmF5KiBtaW1lVHlwZUFycmF5LCBQcm9wZXJ0
eU5hbWUgcHJvcGVydHlOYW1lKQogewotICAgIHJldHVybiBtaW1lVHlwZUFycmF5LT5jYW5HZXRJ
dGVtc0Zvck5hbWUoaWRlbnRpZmllclRvQXRvbWljU3RyaW5nKHByb3BlcnR5TmFtZSkpOworICAg
IHJldHVybiBtaW1lVHlwZUFycmF5LT5jYW5HZXRJdGVtc0Zvck5hbWUocHJvcGVydHlOYW1lVG9B
dG9taWNTdHJpbmcocHJvcGVydHlOYW1lKSk7CiB9CiAKLUpTVmFsdWUgSlNET01NaW1lVHlwZUFy
cmF5OjpuYW1lR2V0dGVyKEV4ZWNTdGF0ZSogZXhlYywgSlNWYWx1ZSBzbG90QmFzZSwgY29uc3Qg
SWRlbnRpZmllciYgcHJvcGVydHlOYW1lKQorSlNWYWx1ZSBKU0RPTU1pbWVUeXBlQXJyYXk6Om5h
bWVHZXR0ZXIoRXhlY1N0YXRlKiBleGVjLCBKU1ZhbHVlIHNsb3RCYXNlLCBQcm9wZXJ0eU5hbWUg
cHJvcGVydHlOYW1lKQogewogICAgIEpTRE9NTWltZVR5cGVBcnJheSogdGhpc09iaiA9IGpzQ2Fz
dDxKU0RPTU1pbWVUeXBlQXJyYXkqPihhc09iamVjdChzbG90QmFzZSkpOwotICAgIHJldHVybiB0
b0pTKGV4ZWMsIHRoaXNPYmotPmdsb2JhbE9iamVjdCgpLCB0aGlzT2JqLT5pbXBsKCktPm5hbWVk
SXRlbShpZGVudGlmaWVyVG9BdG9taWNTdHJpbmcocHJvcGVydHlOYW1lKSkpOworICAgIHJldHVy
biB0b0pTKGV4ZWMsIHRoaXNPYmotPmdsb2JhbE9iamVjdCgpLCB0aGlzT2JqLT5pbXBsKCktPm5h
bWVkSXRlbShwcm9wZXJ0eU5hbWVUb0F0b21pY1N0cmluZyhwcm9wZXJ0eU5hbWUpKSk7CiB9CiAK
IH0gLy8gbmFtZXNwYWNlIFdlYkNvcmUKSW5kZXg6IFNvdXJjZS9XZWJDb3JlL2JpbmRpbmdzL2pz
L0pTRE9NUGx1Z2luQXJyYXlDdXN0b20uY3BwCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9XZWJDb3Jl
L2JpbmRpbmdzL2pzL0pTRE9NUGx1Z2luQXJyYXlDdXN0b20uY3BwCShyZXZpc2lvbiAxMTY2Njcp
CisrKyBTb3VyY2UvV2ViQ29yZS9iaW5kaW5ncy9qcy9KU0RPTVBsdWdpbkFycmF5Q3VzdG9tLmNw
cAkod29ya2luZyBjb3B5KQpAQCAtMjgsMTUgKzI4LDE1IEBAIG5hbWVzcGFjZSBXZWJDb3JlIHsK
IAogdXNpbmcgbmFtZXNwYWNlIEpTQzsKIAotYm9vbCBKU0RPTVBsdWdpbkFycmF5OjpjYW5HZXRJ
dGVtc0Zvck5hbWUoRXhlY1N0YXRlKiwgRE9NUGx1Z2luQXJyYXkqIHBsdWdpbkFycmF5LCBjb25z
dCBJZGVudGlmaWVyJiBwcm9wZXJ0eU5hbWUpCitib29sIEpTRE9NUGx1Z2luQXJyYXk6OmNhbkdl
dEl0ZW1zRm9yTmFtZShFeGVjU3RhdGUqLCBET01QbHVnaW5BcnJheSogcGx1Z2luQXJyYXksIFBy
b3BlcnR5TmFtZSBwcm9wZXJ0eU5hbWUpCiB7Ci0gICAgcmV0dXJuIHBsdWdpbkFycmF5LT5jYW5H
ZXRJdGVtc0Zvck5hbWUoaWRlbnRpZmllclRvQXRvbWljU3RyaW5nKHByb3BlcnR5TmFtZSkpOwor
ICAgIHJldHVybiBwbHVnaW5BcnJheS0+Y2FuR2V0SXRlbXNGb3JOYW1lKHByb3BlcnR5TmFtZVRv
QXRvbWljU3RyaW5nKHByb3BlcnR5TmFtZSkpOwogfQogCi1KU1ZhbHVlIEpTRE9NUGx1Z2luQXJy
YXk6Om5hbWVHZXR0ZXIoRXhlY1N0YXRlKiBleGVjLCBKU1ZhbHVlIHNsb3RCYXNlLCBjb25zdCBJ
ZGVudGlmaWVyJiBwcm9wZXJ0eU5hbWUpCitKU1ZhbHVlIEpTRE9NUGx1Z2luQXJyYXk6Om5hbWVH
ZXR0ZXIoRXhlY1N0YXRlKiBleGVjLCBKU1ZhbHVlIHNsb3RCYXNlLCBQcm9wZXJ0eU5hbWUgcHJv
cGVydHlOYW1lKQogewogICAgIEpTRE9NUGx1Z2luQXJyYXkqIHRoaXNPYmogPSBqc0Nhc3Q8SlNE
T01QbHVnaW5BcnJheSo+KGFzT2JqZWN0KHNsb3RCYXNlKSk7Ci0gICAgcmV0dXJuIHRvSlMoZXhl
YywgdGhpc09iai0+Z2xvYmFsT2JqZWN0KCksIHRoaXNPYmotPmltcGwoKS0+bmFtZWRJdGVtKGlk
ZW50aWZpZXJUb0F0b21pY1N0cmluZyhwcm9wZXJ0eU5hbWUpKSk7CisgICAgcmV0dXJuIHRvSlMo
ZXhlYywgdGhpc09iai0+Z2xvYmFsT2JqZWN0KCksIHRoaXNPYmotPmltcGwoKS0+bmFtZWRJdGVt
KHByb3BlcnR5TmFtZVRvQXRvbWljU3RyaW5nKHByb3BlcnR5TmFtZSkpKTsKIH0KIAogfSAvLyBu
YW1lc3BhY2UgV2ViQ29yZQpJbmRleDogU291cmNlL1dlYkNvcmUvYmluZGluZ3MvanMvSlNET01Q
bHVnaW5DdXN0b20uY3BwCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9XZWJDb3JlL2JpbmRpbmdzL2pz
L0pTRE9NUGx1Z2luQ3VzdG9tLmNwcAkocmV2aXNpb24gMTE2NjY3KQorKysgU291cmNlL1dlYkNv
cmUvYmluZGluZ3MvanMvSlNET01QbHVnaW5DdXN0b20uY3BwCSh3b3JraW5nIGNvcHkpCkBAIC0y
NywxNSArMjcsMTUgQEAgbmFtZXNwYWNlIFdlYkNvcmUgewogCiB1c2luZyBuYW1lc3BhY2UgSlND
OwogCi1ib29sIEpTRE9NUGx1Z2luOjpjYW5HZXRJdGVtc0Zvck5hbWUoRXhlY1N0YXRlKiwgRE9N
UGx1Z2luKiBwbHVnaW4sIGNvbnN0IElkZW50aWZpZXImIHByb3BlcnR5TmFtZSkKK2Jvb2wgSlNE
T01QbHVnaW46OmNhbkdldEl0ZW1zRm9yTmFtZShFeGVjU3RhdGUqLCBET01QbHVnaW4qIHBsdWdp
biwgUHJvcGVydHlOYW1lIHByb3BlcnR5TmFtZSkKIHsKLSAgICByZXR1cm4gcGx1Z2luLT5jYW5H
ZXRJdGVtc0Zvck5hbWUoaWRlbnRpZmllclRvQXRvbWljU3RyaW5nKHByb3BlcnR5TmFtZSkpOwor
ICAgIHJldHVybiBwbHVnaW4tPmNhbkdldEl0ZW1zRm9yTmFtZShwcm9wZXJ0eU5hbWVUb0F0b21p
Y1N0cmluZyhwcm9wZXJ0eU5hbWUpKTsKIH0KIAotSlNWYWx1ZSBKU0RPTVBsdWdpbjo6bmFtZUdl
dHRlcihFeGVjU3RhdGUqIGV4ZWMsIEpTVmFsdWUgc2xvdEJhc2UsIGNvbnN0IElkZW50aWZpZXIm
IHByb3BlcnR5TmFtZSkKK0pTVmFsdWUgSlNET01QbHVnaW46Om5hbWVHZXR0ZXIoRXhlY1N0YXRl
KiBleGVjLCBKU1ZhbHVlIHNsb3RCYXNlLCBQcm9wZXJ0eU5hbWUgcHJvcGVydHlOYW1lKQogewog
ICAgIEpTRE9NUGx1Z2luKiB0aGlzT2JqID0ganNDYXN0PEpTRE9NUGx1Z2luKj4oYXNPYmplY3Qo
c2xvdEJhc2UpKTsKLSAgICByZXR1cm4gdG9KUyhleGVjLCB0aGlzT2JqLT5nbG9iYWxPYmplY3Qo
KSwgdGhpc09iai0+aW1wbCgpLT5uYW1lZEl0ZW0oaWRlbnRpZmllclRvQXRvbWljU3RyaW5nKHBy
b3BlcnR5TmFtZSkpKTsKKyAgICByZXR1cm4gdG9KUyhleGVjLCB0aGlzT2JqLT5nbG9iYWxPYmpl
Y3QoKSwgdGhpc09iai0+aW1wbCgpLT5uYW1lZEl0ZW0ocHJvcGVydHlOYW1lVG9BdG9taWNTdHJp
bmcocHJvcGVydHlOYW1lKSkpOwogfQogCiB9IC8vIG5hbWVzcGFjZSBXZWJDb3JlCkluZGV4OiBT
b3VyY2UvV2ViQ29yZS9iaW5kaW5ncy9qcy9KU0RPTVN0cmluZ01hcEN1c3RvbS5jcHAKPT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PQotLS0gU291cmNlL1dlYkNvcmUvYmluZGluZ3MvanMvSlNET01TdHJpbmdNYXBDdXN0b20u
Y3BwCShyZXZpc2lvbiAxMTY2NjcpCisrKyBTb3VyY2UvV2ViQ29yZS9iaW5kaW5ncy9qcy9KU0RP
TVN0cmluZ01hcEN1c3RvbS5jcHAJKHdvcmtpbmcgY29weSkKQEAgLTM1LDE1ICszNSwxNSBAQCB1
c2luZyBuYW1lc3BhY2UgSlNDOwogCiBuYW1lc3BhY2UgV2ViQ29yZSB7CiAKLWJvb2wgSlNET01T
dHJpbmdNYXA6OmNhbkdldEl0ZW1zRm9yTmFtZShFeGVjU3RhdGUqLCBET01TdHJpbmdNYXAqIGlt
cGwsIGNvbnN0IElkZW50aWZpZXImIHByb3BlcnR5TmFtZSkKK2Jvb2wgSlNET01TdHJpbmdNYXA6
OmNhbkdldEl0ZW1zRm9yTmFtZShFeGVjU3RhdGUqLCBET01TdHJpbmdNYXAqIGltcGwsIFByb3Bl
cnR5TmFtZSBwcm9wZXJ0eU5hbWUpCiB7Ci0gICAgcmV0dXJuIGltcGwtPmNvbnRhaW5zKGlkZW50
aWZpZXJUb0F0b21pY1N0cmluZyhwcm9wZXJ0eU5hbWUpKTsKKyAgICByZXR1cm4gaW1wbC0+Y29u
dGFpbnMocHJvcGVydHlOYW1lVG9BdG9taWNTdHJpbmcocHJvcGVydHlOYW1lKSk7CiB9CiAKLUpT
VmFsdWUgSlNET01TdHJpbmdNYXA6Om5hbWVHZXR0ZXIoRXhlY1N0YXRlKiBleGVjLCBKU1ZhbHVl
IHNsb3RCYXNlLCBjb25zdCBJZGVudGlmaWVyJiBwcm9wZXJ0eU5hbWUpCitKU1ZhbHVlIEpTRE9N
U3RyaW5nTWFwOjpuYW1lR2V0dGVyKEV4ZWNTdGF0ZSogZXhlYywgSlNWYWx1ZSBzbG90QmFzZSwg
UHJvcGVydHlOYW1lIHByb3BlcnR5TmFtZSkKIHsKICAgICBKU0RPTVN0cmluZ01hcCogdGhpc09i
aiA9IGpzQ2FzdDxKU0RPTVN0cmluZ01hcCo+KGFzT2JqZWN0KHNsb3RCYXNlKSk7Ci0gICAgcmV0
dXJuIGpzU3RyaW5nKGV4ZWMsIHRoaXNPYmotPmltcGwoKS0+aXRlbShpZGVudGlmaWVyVG9BdG9t
aWNTdHJpbmcocHJvcGVydHlOYW1lKSkpOworICAgIHJldHVybiBqc1N0cmluZyhleGVjLCB0aGlz
T2JqLT5pbXBsKCktPml0ZW0ocHJvcGVydHlOYW1lVG9BdG9taWNTdHJpbmcocHJvcGVydHlOYW1l
KSkpOwogfQogCiB2b2lkIEpTRE9NU3RyaW5nTWFwOjpnZXRPd25Qcm9wZXJ0eU5hbWVzKEpTT2Jq
ZWN0KiBvYmplY3QsIEV4ZWNTdGF0ZSogZXhlYywgUHJvcGVydHlOYW1lQXJyYXkmIHByb3BlcnR5
TmFtZXMsIEVudW1lcmF0aW9uTW9kZSBtb2RlKQpAQCAtNTgsMTAgKzU4LDEwIEBAIHZvaWQgSlNE
T01TdHJpbmdNYXA6OmdldE93blByb3BlcnR5TmFtZXMKICAgICBCYXNlOjpnZXRPd25Qcm9wZXJ0
eU5hbWVzKHRoaXNPYmplY3QsIGV4ZWMsIHByb3BlcnR5TmFtZXMsIG1vZGUpOwogfQogCi1ib29s
IEpTRE9NU3RyaW5nTWFwOjpkZWxldGVQcm9wZXJ0eShKU0NlbGwqIGNlbGwsIEV4ZWNTdGF0ZSog
ZXhlYywgY29uc3QgSWRlbnRpZmllciYgcHJvcGVydHlOYW1lKQorYm9vbCBKU0RPTVN0cmluZ01h
cDo6ZGVsZXRlUHJvcGVydHkoSlNDZWxsKiBjZWxsLCBFeGVjU3RhdGUqIGV4ZWMsIFByb3BlcnR5
TmFtZSBwcm9wZXJ0eU5hbWUpCiB7CiAgICAgSlNET01TdHJpbmdNYXAqIHRoaXNPYmplY3QgPSBq
c0Nhc3Q8SlNET01TdHJpbmdNYXAqPihjZWxsKTsKLSAgICBBdG9taWNTdHJpbmcgc3RyaW5nTmFt
ZSA9IGlkZW50aWZpZXJUb0F0b21pY1N0cmluZyhwcm9wZXJ0eU5hbWUpOworICAgIEF0b21pY1N0
cmluZyBzdHJpbmdOYW1lID0gcHJvcGVydHlOYW1lVG9BdG9taWNTdHJpbmcocHJvcGVydHlOYW1l
KTsKICAgICBpZiAoIXRoaXNPYmplY3QtPm1faW1wbC0+Y29udGFpbnMoc3RyaW5nTmFtZSkpCiAg
ICAgICAgIHJldHVybiBmYWxzZTsKICAgICBFeGNlcHRpb25Db2RlIGVjID0gMDsKQEAgLTcwLDEz
ICs3MCwxMyBAQCBib29sIEpTRE9NU3RyaW5nTWFwOjpkZWxldGVQcm9wZXJ0eShKU0NlCiAgICAg
cmV0dXJuICFlYzsKIH0KIAotYm9vbCBKU0RPTVN0cmluZ01hcDo6cHV0RGVsZWdhdGUoRXhlY1N0
YXRlKiBleGVjLCBjb25zdCBJZGVudGlmaWVyJiBwcm9wZXJ0eU5hbWUsIEpTVmFsdWUgdmFsdWUs
IFB1dFByb3BlcnR5U2xvdCYpCitib29sIEpTRE9NU3RyaW5nTWFwOjpwdXREZWxlZ2F0ZShFeGVj
U3RhdGUqIGV4ZWMsIFByb3BlcnR5TmFtZSBwcm9wZXJ0eU5hbWUsIEpTVmFsdWUgdmFsdWUsIFB1
dFByb3BlcnR5U2xvdCYpCiB7CiAgICAgU3RyaW5nIHN0cmluZ1ZhbHVlID0gdXN0cmluZ1RvU3Ry
aW5nKHZhbHVlLnRvU3RyaW5nKGV4ZWMpLT52YWx1ZShleGVjKSk7CiAgICAgaWYgKGV4ZWMtPmhh
ZEV4Y2VwdGlvbigpKQogICAgICAgICByZXR1cm4gZmFsc2U7CiAgICAgRXhjZXB0aW9uQ29kZSBl
YyA9IDA7Ci0gICAgaW1wbCgpLT5zZXRJdGVtKGlkZW50aWZpZXJUb1N0cmluZyhwcm9wZXJ0eU5h
bWUpLCBzdHJpbmdWYWx1ZSwgZWMpOworICAgIGltcGwoKS0+c2V0SXRlbShwcm9wZXJ0eU5hbWVU
b1N0cmluZyhwcm9wZXJ0eU5hbWUpLCBzdHJpbmdWYWx1ZSwgZWMpOwogICAgIHNldERPTUV4Y2Vw
dGlvbihleGVjLCBlYyk7CiAgICAgcmV0dXJuICFlYzsKIH0KSW5kZXg6IFNvdXJjZS9XZWJDb3Jl
L2JpbmRpbmdzL2pzL0pTRE9NV2luZG93Q3VzdG9tLmNwcAo9PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2Uv
V2ViQ29yZS9iaW5kaW5ncy9qcy9KU0RPTVdpbmRvd0N1c3RvbS5jcHAJKHJldmlzaW9uIDExNjY2
NykKKysrIFNvdXJjZS9XZWJDb3JlL2JpbmRpbmdzL2pzL0pTRE9NV2luZG93Q3VzdG9tLmNwcAko
d29ya2luZyBjb3B5KQpAQCAtOTIsMTQgKzkyLDE0IEBAIHZvaWQgSlNET01XaW5kb3c6OnZpc2l0
Q2hpbGRyZW4oSlNDZWxsKiAKIH0KIAogdGVtcGxhdGU8TmF0aXZlRnVuY3Rpb24gbmF0aXZlRnVu
Y3Rpb24sIGludCBsZW5ndGg+Ci1KU1ZhbHVlIG5vbkNhY2hpbmdTdGF0aWNGdW5jdGlvbkdldHRl
cihFeGVjU3RhdGUqIGV4ZWMsIEpTVmFsdWUsIGNvbnN0IElkZW50aWZpZXImIHByb3BlcnR5TmFt
ZSkKK0pTVmFsdWUgbm9uQ2FjaGluZ1N0YXRpY0Z1bmN0aW9uR2V0dGVyKEV4ZWNTdGF0ZSogZXhl
YywgSlNWYWx1ZSwgUHJvcGVydHlOYW1lIHByb3BlcnR5TmFtZSkKIHsKLSAgICByZXR1cm4gSlNG
dW5jdGlvbjo6Y3JlYXRlKGV4ZWMsIGV4ZWMtPmxleGljYWxHbG9iYWxPYmplY3QoKSwgbGVuZ3Ro
LCBwcm9wZXJ0eU5hbWUsIG5hdGl2ZUZ1bmN0aW9uKTsKKyAgICByZXR1cm4gSlNGdW5jdGlvbjo6
Y3JlYXRlKGV4ZWMsIGV4ZWMtPmxleGljYWxHbG9iYWxPYmplY3QoKSwgbGVuZ3RoLCBwcm9wZXJ0
eU5hbWUuaW1wbCgpLCBuYXRpdmVGdW5jdGlvbik7CiB9CiAKLXN0YXRpYyBKU1ZhbHVlIGNoaWxk
RnJhbWVHZXR0ZXIoRXhlY1N0YXRlKiBleGVjLCBKU1ZhbHVlIHNsb3RCYXNlLCBjb25zdCBJZGVu
dGlmaWVyJiBwcm9wZXJ0eU5hbWUpCitzdGF0aWMgSlNWYWx1ZSBjaGlsZEZyYW1lR2V0dGVyKEV4
ZWNTdGF0ZSogZXhlYywgSlNWYWx1ZSBzbG90QmFzZSwgUHJvcGVydHlOYW1lIHByb3BlcnR5TmFt
ZSkKIHsKLSAgICByZXR1cm4gdG9KUyhleGVjLCBqc0Nhc3Q8SlNET01XaW5kb3cqPihhc09iamVj
dChzbG90QmFzZSkpLT5pbXBsKCktPmZyYW1lKCktPnRyZWUoKS0+c2NvcGVkQ2hpbGQoaWRlbnRp
ZmllclRvQXRvbWljU3RyaW5nKHByb3BlcnR5TmFtZSkpLT5kb21XaW5kb3coKSk7CisgICAgcmV0
dXJuIHRvSlMoZXhlYywganNDYXN0PEpTRE9NV2luZG93Kj4oYXNPYmplY3Qoc2xvdEJhc2UpKS0+
aW1wbCgpLT5mcmFtZSgpLT50cmVlKCktPnNjb3BlZENoaWxkKHByb3BlcnR5TmFtZVRvQXRvbWlj
U3RyaW5nKHByb3BlcnR5TmFtZSkpLT5kb21XaW5kb3coKSk7CiB9CiAKIHN0YXRpYyBKU1ZhbHVl
IGluZGV4R2V0dGVyKEV4ZWNTdGF0ZSogZXhlYywgSlNWYWx1ZSBzbG90QmFzZSwgdW5zaWduZWQg
aW5kZXgpCkBAIC0xMDcsNyArMTA3LDcgQEAgc3RhdGljIEpTVmFsdWUgaW5kZXhHZXR0ZXIoRXhl
Y1N0YXRlKiBleAogICAgIHJldHVybiB0b0pTKGV4ZWMsIGpzQ2FzdDxKU0RPTVdpbmRvdyo+KGFz
T2JqZWN0KHNsb3RCYXNlKSktPmltcGwoKS0+ZnJhbWUoKS0+dHJlZSgpLT5zY29wZWRDaGlsZChp
bmRleCktPmRvbVdpbmRvdygpKTsKIH0KIAotc3RhdGljIEpTVmFsdWUgbmFtZWRJdGVtR2V0dGVy
KEV4ZWNTdGF0ZSogZXhlYywgSlNWYWx1ZSBzbG90QmFzZSwgY29uc3QgSWRlbnRpZmllciYgcHJv
cGVydHlOYW1lKQorc3RhdGljIEpTVmFsdWUgbmFtZWRJdGVtR2V0dGVyKEV4ZWNTdGF0ZSogZXhl
YywgSlNWYWx1ZSBzbG90QmFzZSwgUHJvcGVydHlOYW1lIHByb3BlcnR5TmFtZSkKIHsKICAgICBK
U0RPTVdpbmRvd0Jhc2UqIHRoaXNPYmogPSBqc0Nhc3Q8SlNET01XaW5kb3cqPihhc09iamVjdChz
bG90QmFzZSkpOwogICAgIERvY3VtZW50KiBkb2N1bWVudCA9IHRoaXNPYmotPmltcGwoKS0+ZnJh
bWUoKS0+ZG9jdW1lbnQoKTsKQEAgLTExNiwxMyArMTE2LDEzIEBAIHN0YXRpYyBKU1ZhbHVlIG5h
bWVkSXRlbUdldHRlcihFeGVjU3RhdGUKICAgICBBU1NFUlQoZG9jdW1lbnQpOwogICAgIEFTU0VS
VChkb2N1bWVudC0+aXNIVE1MRG9jdW1lbnQoKSk7CiAKLSAgICBIVE1MQ29sbGVjdGlvbiogY29s
bGVjdGlvbiA9IGRvY3VtZW50LT53aW5kb3dOYW1lZEl0ZW1zKGlkZW50aWZpZXJUb0F0b21pY1N0
cmluZyhwcm9wZXJ0eU5hbWUpKTsKKyAgICBIVE1MQ29sbGVjdGlvbiogY29sbGVjdGlvbiA9IGRv
Y3VtZW50LT53aW5kb3dOYW1lZEl0ZW1zKHByb3BlcnR5TmFtZVRvQXRvbWljU3RyaW5nKHByb3Bl
cnR5TmFtZSkpOwogICAgIGlmIChjb2xsZWN0aW9uLT5sZW5ndGgoKSA9PSAxKQogICAgICAgICBy
ZXR1cm4gdG9KUyhleGVjLCB0aGlzT2JqLCBjb2xsZWN0aW9uLT5maXJzdEl0ZW0oKSk7CiAgICAg
cmV0dXJuIHRvSlMoZXhlYywgdGhpc09iaiwgY29sbGVjdGlvbik7CiB9CiAKLWJvb2wgSlNET01X
aW5kb3c6OmdldE93blByb3BlcnR5U2xvdChKU0NlbGwqIGNlbGwsIEV4ZWNTdGF0ZSogZXhlYywg
Y29uc3QgSWRlbnRpZmllciYgcHJvcGVydHlOYW1lLCBQcm9wZXJ0eVNsb3QmIHNsb3QpCitib29s
IEpTRE9NV2luZG93OjpnZXRPd25Qcm9wZXJ0eVNsb3QoSlNDZWxsKiBjZWxsLCBFeGVjU3RhdGUq
IGV4ZWMsIFByb3BlcnR5TmFtZSBwcm9wZXJ0eU5hbWUsIFByb3BlcnR5U2xvdCYgc2xvdCkKIHsK
ICAgICBKU0RPTVdpbmRvdyogdGhpc09iamVjdCA9IGpzQ2FzdDxKU0RPTVdpbmRvdyo+KGNlbGwp
OwogICAgIC8vIFdoZW4gYWNjZXNzaW5nIGEgV2luZG93IGNyb3NzLWRvbWFpbiwgZnVuY3Rpb25z
IGFyZSBhbHdheXMgdGhlIG5hdGl2ZSBidWlsdC1pbiBvbmVzLCBhbmQgdGhleQpAQCAtMjIwLDcg
KzIyMCw3IEBAIGJvb2wgSlNET01XaW5kb3c6OmdldE93blByb3BlcnR5U2xvdChKU0MKICAgICAv
LyBuYW1pbmcgZnJhbWVzIHRoaW5ncyB0aGF0IGNvbmZsaWN0IHdpdGggd2luZG93IHByb3BlcnRp
ZXMgdGhhdAogICAgIC8vIGFyZSBpbiBNb3ogYnV0IG5vdCBJRS4gU2luY2Ugd2UgaGF2ZSBzb21l
IG9mIHRoZXNlLCB3ZSBoYXZlIHRvIGRvCiAgICAgLy8gaXQgdGhlIE1veiB3YXkuCi0gICAgaWYg
KHRoaXNPYmplY3QtPmltcGwoKS0+ZnJhbWUoKS0+dHJlZSgpLT5zY29wZWRDaGlsZChpZGVudGlm
aWVyVG9BdG9taWNTdHJpbmcocHJvcGVydHlOYW1lKSkpIHsKKyAgICBpZiAodGhpc09iamVjdC0+
aW1wbCgpLT5mcmFtZSgpLT50cmVlKCktPnNjb3BlZENoaWxkKHByb3BlcnR5TmFtZVRvQXRvbWlj
U3RyaW5nKHByb3BlcnR5TmFtZSkpKSB7CiAgICAgICAgIHNsb3Quc2V0Q3VzdG9tKHRoaXNPYmpl
Y3QsIGNoaWxkRnJhbWVHZXR0ZXIpOwogICAgICAgICByZXR1cm4gdHJ1ZTsKICAgICB9CkBAIC0y
NDIsOSArMjQyLDkgQEAgYm9vbCBKU0RPTVdpbmRvdzo6Z2V0T3duUHJvcGVydHlTbG90KEpTQwog
ICAgIC8vIFdlIG5lZWQgdG8gdGVzdCB0aGUgY29ycmVjdCBwcmlvcml0eSBvcmRlci4KIAogICAg
IC8vIGFsbG93IHdpbmRvd1sxXSBvciBwYXJlbnRbMV0gZXRjLiAoIzU2OTgzKQotICAgIGJvb2wg
b2s7Ci0gICAgdW5zaWduZWQgaSA9IHByb3BlcnR5TmFtZS50b0FycmF5SW5kZXgob2spOwotICAg
IGlmIChvayAmJiBpIDwgdGhpc09iamVjdC0+aW1wbCgpLT5mcmFtZSgpLT50cmVlKCktPnNjb3Bl
ZENoaWxkQ291bnQoKSkgeworICAgIHVuc2lnbmVkIGkgPSBwcm9wZXJ0eU5hbWUuYXNJbmRleCgp
OworICAgIGlmIChpIDwgdGhpc09iamVjdC0+aW1wbCgpLT5mcmFtZSgpLT50cmVlKCktPnNjb3Bl
ZENoaWxkQ291bnQoKSkgeworICAgICAgICBBU1NFUlQoaSAhPSBQcm9wZXJ0eU5hbWU6Ok5vdEFu
SW5kZXgpOwogICAgICAgICBzbG90LnNldEN1c3RvbUluZGV4KHRoaXNPYmplY3QsIGksIGluZGV4
R2V0dGVyKTsKICAgICAgICAgcmV0dXJuIHRydWU7CiAgICAgfQpAQCAtMjY4LDcgKzI2OCw3IEBA
IGJvb2wgSlNET01XaW5kb3c6OmdldE93blByb3BlcnR5U2xvdChKU0MKICAgICByZXR1cm4gQmFz
ZTo6Z2V0T3duUHJvcGVydHlTbG90KHRoaXNPYmplY3QsIGV4ZWMsIHByb3BlcnR5TmFtZSwgc2xv
dCk7CiB9CiAKLWJvb2wgSlNET01XaW5kb3c6OmdldE93blByb3BlcnR5RGVzY3JpcHRvcihKU09i
amVjdCogb2JqZWN0LCBFeGVjU3RhdGUqIGV4ZWMsIGNvbnN0IElkZW50aWZpZXImIHByb3BlcnR5
TmFtZSwgUHJvcGVydHlEZXNjcmlwdG9yJiBkZXNjcmlwdG9yKQorYm9vbCBKU0RPTVdpbmRvdzo6
Z2V0T3duUHJvcGVydHlEZXNjcmlwdG9yKEpTT2JqZWN0KiBvYmplY3QsIEV4ZWNTdGF0ZSogZXhl
YywgUHJvcGVydHlOYW1lIHByb3BlcnR5TmFtZSwgUHJvcGVydHlEZXNjcmlwdG9yJiBkZXNjcmlw
dG9yKQogewogICAgIEpTRE9NV2luZG93KiB0aGlzT2JqZWN0ID0ganNDYXN0PEpTRE9NV2luZG93
Kj4ob2JqZWN0KTsKICAgICAvLyBOZXZlciBhbGxvdyBjcm9zcy1kb21haW4gZ2V0T3duUHJvcGVy
dHlEZXNjcmlwdG9yCkBAIC0zMTAsMTYgKzMxMCwxNiBAQCBib29sIEpTRE9NV2luZG93OjpnZXRP
d25Qcm9wZXJ0eURlc2NyaXB0CiAgICAgLy8gbmFtaW5nIGZyYW1lcyB0aGluZ3MgdGhhdCBjb25m
bGljdCB3aXRoIHdpbmRvdyBwcm9wZXJ0aWVzIHRoYXQKICAgICAvLyBhcmUgaW4gTW96IGJ1dCBu
b3QgSUUuIFNpbmNlIHdlIGhhdmUgc29tZSBvZiB0aGVzZSwgd2UgaGF2ZSB0byBkbwogICAgIC8v
IGl0IHRoZSBNb3ogd2F5LgotICAgIGlmICh0aGlzT2JqZWN0LT5pbXBsKCktPmZyYW1lKCktPnRy
ZWUoKS0+c2NvcGVkQ2hpbGQoaWRlbnRpZmllclRvQXRvbWljU3RyaW5nKHByb3BlcnR5TmFtZSkp
KSB7CisgICAgaWYgKHRoaXNPYmplY3QtPmltcGwoKS0+ZnJhbWUoKS0+dHJlZSgpLT5zY29wZWRD
aGlsZChwcm9wZXJ0eU5hbWVUb0F0b21pY1N0cmluZyhwcm9wZXJ0eU5hbWUpKSkgewogICAgICAg
ICBQcm9wZXJ0eVNsb3Qgc2xvdDsKICAgICAgICAgc2xvdC5zZXRDdXN0b20odGhpc09iamVjdCwg
Y2hpbGRGcmFtZUdldHRlcik7CiAgICAgICAgIGRlc2NyaXB0b3Iuc2V0RGVzY3JpcHRvcihzbG90
LmdldFZhbHVlKGV4ZWMsIHByb3BlcnR5TmFtZSksIFJlYWRPbmx5IHwgRG9udERlbGV0ZSB8IERv
bnRFbnVtKTsKICAgICAgICAgcmV0dXJuIHRydWU7CiAgICAgfQogICAgIAotICAgIGJvb2wgb2s7
Ci0gICAgdW5zaWduZWQgaSA9IHByb3BlcnR5TmFtZS50b0FycmF5SW5kZXgob2spOwotICAgIGlm
IChvayAmJiBpIDwgdGhpc09iamVjdC0+aW1wbCgpLT5mcmFtZSgpLT50cmVlKCktPnNjb3BlZENo
aWxkQ291bnQoKSkgeworICAgIHVuc2lnbmVkIGkgPSBwcm9wZXJ0eU5hbWUuYXNJbmRleCgpOwor
ICAgIGlmIChpIDwgdGhpc09iamVjdC0+aW1wbCgpLT5mcmFtZSgpLT50cmVlKCktPnNjb3BlZENo
aWxkQ291bnQoKSkgeworICAgICAgICBBU1NFUlQoaSAhPSBQcm9wZXJ0eU5hbWU6Ok5vdEFuSW5k
ZXgpOwogICAgICAgICBQcm9wZXJ0eVNsb3Qgc2xvdDsKICAgICAgICAgc2xvdC5zZXRDdXN0b21J
bmRleCh0aGlzT2JqZWN0LCBpLCBpbmRleEdldHRlcik7CiAgICAgICAgIGRlc2NyaXB0b3Iuc2V0
RGVzY3JpcHRvcihzbG90LmdldFZhbHVlKGV4ZWMsIHByb3BlcnR5TmFtZSksIFJlYWRPbmx5IHwg
RG9udERlbGV0ZSB8IERvbnRFbnVtKTsKQEAgLTM0MSw3ICszNDEsNyBAQCBib29sIEpTRE9NV2lu
ZG93OjpnZXRPd25Qcm9wZXJ0eURlc2NyaXB0CiAgICAgcmV0dXJuIEJhc2U6OmdldE93blByb3Bl
cnR5RGVzY3JpcHRvcih0aGlzT2JqZWN0LCBleGVjLCBwcm9wZXJ0eU5hbWUsIGRlc2NyaXB0b3Ip
OwogfQogCi12b2lkIEpTRE9NV2luZG93OjpwdXQoSlNDZWxsKiBjZWxsLCBFeGVjU3RhdGUqIGV4
ZWMsIGNvbnN0IElkZW50aWZpZXImIHByb3BlcnR5TmFtZSwgSlNWYWx1ZSB2YWx1ZSwgUHV0UHJv
cGVydHlTbG90JiBzbG90KQordm9pZCBKU0RPTVdpbmRvdzo6cHV0KEpTQ2VsbCogY2VsbCwgRXhl
Y1N0YXRlKiBleGVjLCBQcm9wZXJ0eU5hbWUgcHJvcGVydHlOYW1lLCBKU1ZhbHVlIHZhbHVlLCBQ
dXRQcm9wZXJ0eVNsb3QmIHNsb3QpCiB7CiAgICAgSlNET01XaW5kb3cqIHRoaXNPYmplY3QgPSBq
c0Nhc3Q8SlNET01XaW5kb3cqPihjZWxsKTsKICAgICBpZiAoIXRoaXNPYmplY3QtPmltcGwoKS0+
ZnJhbWUoKSkKQEAgLTM2MSw3ICszNjEsNyBAQCB2b2lkIEpTRE9NV2luZG93OjpwdXQoSlNDZWxs
KiBjZWxsLCBFeGVjCiAgICAgICAgIEJhc2U6OnB1dCh0aGlzT2JqZWN0LCBleGVjLCBwcm9wZXJ0
eU5hbWUsIHZhbHVlLCBzbG90KTsKIH0KIAotYm9vbCBKU0RPTVdpbmRvdzo6ZGVsZXRlUHJvcGVy
dHkoSlNDZWxsKiBjZWxsLCBFeGVjU3RhdGUqIGV4ZWMsIGNvbnN0IElkZW50aWZpZXImIHByb3Bl
cnR5TmFtZSkKK2Jvb2wgSlNET01XaW5kb3c6OmRlbGV0ZVByb3BlcnR5KEpTQ2VsbCogY2VsbCwg
RXhlY1N0YXRlKiBleGVjLCBQcm9wZXJ0eU5hbWUgcHJvcGVydHlOYW1lKQogewogICAgIEpTRE9N
V2luZG93KiB0aGlzT2JqZWN0ID0ganNDYXN0PEpTRE9NV2luZG93Kj4oY2VsbCk7CiAgICAgLy8g
T25seSBhbGxvdyBkZWxldGluZyBwcm9wZXJ0aWVzIGJ5IGZyYW1lcyBpbiB0aGUgc2FtZSBvcmln
aW4uCkBAIC0zODgsNyArMzg4LDcgQEAgdm9pZCBKU0RPTVdpbmRvdzo6Z2V0T3duUHJvcGVydHlO
YW1lcyhKUwogICAgIEJhc2U6OmdldE93blByb3BlcnR5TmFtZXModGhpc09iamVjdCwgZXhlYywg
cHJvcGVydHlOYW1lcywgbW9kZSk7CiB9CiAKLWJvb2wgSlNET01XaW5kb3c6OmRlZmluZU93blBy
b3BlcnR5KEpTQzo6SlNPYmplY3QqIG9iamVjdCwgSlNDOjpFeGVjU3RhdGUqIGV4ZWMsIGNvbnN0
IEpTQzo6SWRlbnRpZmllciYgcHJvcGVydHlOYW1lLCBKU0M6OlByb3BlcnR5RGVzY3JpcHRvciYg
ZGVzY3JpcHRvciwgYm9vbCBzaG91bGRUaHJvdykKK2Jvb2wgSlNET01XaW5kb3c6OmRlZmluZU93
blByb3BlcnR5KEpTQzo6SlNPYmplY3QqIG9iamVjdCwgSlNDOjpFeGVjU3RhdGUqIGV4ZWMsIEpT
Qzo6UHJvcGVydHlOYW1lIHByb3BlcnR5TmFtZSwgSlNDOjpQcm9wZXJ0eURlc2NyaXB0b3ImIGRl
c2NyaXB0b3IsIGJvb2wgc2hvdWxkVGhyb3cpCiB7CiAgICAgSlNET01XaW5kb3cqIHRoaXNPYmpl
Y3QgPSBqc0Nhc3Q8SlNET01XaW5kb3cqPihvYmplY3QpOwogICAgIC8vIE9ubHkgYWxsb3cgZGVm
aW5pbmcgcHJvcGVydGllcyBpbiB0aGlzIHdheSBieSBmcmFtZXMgaW4gdGhlIHNhbWUgb3JpZ2lu
LCBhcyBpdCBhbGxvd3Mgc2V0dGVycyB0byBiZSBpbnRyb2R1Y2VkLgpAQCAtMzk2LDcgKzM5Niw3
IEBAIGJvb2wgSlNET01XaW5kb3c6OmRlZmluZU93blByb3BlcnR5KEpTQzoKICAgICAgICAgcmV0
dXJuIGZhbHNlOwogCiAgICAgLy8gRG9uJ3QgYWxsb3cgc2hhZG93aW5nIGxvY2F0aW9uIHVzaW5n
IGFjY2Vzc29yIHByb3BlcnRpZXMuCi0gICAgaWYgKGRlc2NyaXB0b3IuaXNBY2Nlc3NvckRlc2Ny
aXB0b3IoKSAmJiBwcm9wZXJ0eU5hbWUgPT0gImxvY2F0aW9uIikKKyAgICBpZiAoZGVzY3JpcHRv
ci5pc0FjY2Vzc29yRGVzY3JpcHRvcigpICYmIHByb3BlcnR5TmFtZSA9PSBJZGVudGlmaWVyKGV4
ZWMsICJsb2NhdGlvbiIpKQogICAgICAgICByZXR1cm4gZmFsc2U7CiAKICAgICByZXR1cm4gQmFz
ZTo6ZGVmaW5lT3duUHJvcGVydHkodGhpc09iamVjdCwgZXhlYywgcHJvcGVydHlOYW1lLCBkZXNj
cmlwdG9yLCBzaG91bGRUaHJvdyk7CkluZGV4OiBTb3VyY2UvV2ViQ29yZS9iaW5kaW5ncy9qcy9K
U0RPTVdpbmRvd1NoZWxsLmNwcAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2ViQ29yZS9iaW5kaW5n
cy9qcy9KU0RPTVdpbmRvd1NoZWxsLmNwcAkocmV2aXNpb24gMTE2NjY3KQorKysgU291cmNlL1dl
YkNvcmUvYmluZGluZ3MvanMvSlNET01XaW5kb3dTaGVsbC5jcHAJKHdvcmtpbmcgY29weSkKQEAg
LTkxLDM3ICs5MSwzNyBAQCBVU3RyaW5nIEpTRE9NV2luZG93U2hlbGw6OmNsYXNzTmFtZShjb25z
CiAgICAgcmV0dXJuIHRoaXNPYmplY3QtPndpbmRvdygpLT5tZXRob2RUYWJsZSgpLT5jbGFzc05h
bWUodGhpc09iamVjdC0+d2luZG93KCkpOwogfQogCi1ib29sIEpTRE9NV2luZG93U2hlbGw6Omdl
dE93blByb3BlcnR5U2xvdChKU0NlbGwqIGNlbGwsIEV4ZWNTdGF0ZSogZXhlYywgY29uc3QgSWRl
bnRpZmllciYgcHJvcGVydHlOYW1lLCBQcm9wZXJ0eVNsb3QmIHNsb3QpCitib29sIEpTRE9NV2lu
ZG93U2hlbGw6OmdldE93blByb3BlcnR5U2xvdChKU0NlbGwqIGNlbGwsIEV4ZWNTdGF0ZSogZXhl
YywgUHJvcGVydHlOYW1lIHByb3BlcnR5TmFtZSwgUHJvcGVydHlTbG90JiBzbG90KQogewogICAg
IEpTRE9NV2luZG93U2hlbGwqIHRoaXNPYmplY3QgPSBqc0Nhc3Q8SlNET01XaW5kb3dTaGVsbCo+
KGNlbGwpOwogICAgIHJldHVybiB0aGlzT2JqZWN0LT53aW5kb3coKS0+bWV0aG9kVGFibGUoKS0+
Z2V0T3duUHJvcGVydHlTbG90KHRoaXNPYmplY3QtPndpbmRvdygpLCBleGVjLCBwcm9wZXJ0eU5h
bWUsIHNsb3QpOwogfQogCi1ib29sIEpTRE9NV2luZG93U2hlbGw6OmdldE93blByb3BlcnR5RGVz
Y3JpcHRvcihKU09iamVjdCogb2JqZWN0LCBFeGVjU3RhdGUqIGV4ZWMsIGNvbnN0IElkZW50aWZp
ZXImIHByb3BlcnR5TmFtZSwgUHJvcGVydHlEZXNjcmlwdG9yJiBkZXNjcmlwdG9yKQorYm9vbCBK
U0RPTVdpbmRvd1NoZWxsOjpnZXRPd25Qcm9wZXJ0eURlc2NyaXB0b3IoSlNPYmplY3QqIG9iamVj
dCwgRXhlY1N0YXRlKiBleGVjLCBQcm9wZXJ0eU5hbWUgcHJvcGVydHlOYW1lLCBQcm9wZXJ0eURl
c2NyaXB0b3ImIGRlc2NyaXB0b3IpCiB7CiAgICAgSlNET01XaW5kb3dTaGVsbCogdGhpc09iamVj
dCA9IGpzQ2FzdDxKU0RPTVdpbmRvd1NoZWxsKj4ob2JqZWN0KTsKICAgICByZXR1cm4gdGhpc09i
amVjdC0+d2luZG93KCktPm1ldGhvZFRhYmxlKCktPmdldE93blByb3BlcnR5RGVzY3JpcHRvcih0
aGlzT2JqZWN0LT53aW5kb3coKSwgZXhlYywgcHJvcGVydHlOYW1lLCBkZXNjcmlwdG9yKTsKIH0K
IAotdm9pZCBKU0RPTVdpbmRvd1NoZWxsOjpwdXQoSlNDZWxsKiBjZWxsLCBFeGVjU3RhdGUqIGV4
ZWMsIGNvbnN0IElkZW50aWZpZXImIHByb3BlcnR5TmFtZSwgSlNWYWx1ZSB2YWx1ZSwgUHV0UHJv
cGVydHlTbG90JiBzbG90KQordm9pZCBKU0RPTVdpbmRvd1NoZWxsOjpwdXQoSlNDZWxsKiBjZWxs
LCBFeGVjU3RhdGUqIGV4ZWMsIFByb3BlcnR5TmFtZSBwcm9wZXJ0eU5hbWUsIEpTVmFsdWUgdmFs
dWUsIFB1dFByb3BlcnR5U2xvdCYgc2xvdCkKIHsKICAgICBKU0RPTVdpbmRvd1NoZWxsKiB0aGlz
T2JqZWN0ID0ganNDYXN0PEpTRE9NV2luZG93U2hlbGwqPihjZWxsKTsKICAgICB0aGlzT2JqZWN0
LT53aW5kb3coKS0+bWV0aG9kVGFibGUoKS0+cHV0KHRoaXNPYmplY3QtPndpbmRvdygpLCBleGVj
LCBwcm9wZXJ0eU5hbWUsIHZhbHVlLCBzbG90KTsKIH0KIAotdm9pZCBKU0RPTVdpbmRvd1NoZWxs
OjpwdXREaXJlY3RWaXJ0dWFsKEpTT2JqZWN0KiBvYmplY3QsIEV4ZWNTdGF0ZSogZXhlYywgY29u
c3QgSWRlbnRpZmllciYgcHJvcGVydHlOYW1lLCBKU1ZhbHVlIHZhbHVlLCB1bnNpZ25lZCBhdHRy
aWJ1dGVzKQordm9pZCBKU0RPTVdpbmRvd1NoZWxsOjpwdXREaXJlY3RWaXJ0dWFsKEpTT2JqZWN0
KiBvYmplY3QsIEV4ZWNTdGF0ZSogZXhlYywgUHJvcGVydHlOYW1lIHByb3BlcnR5TmFtZSwgSlNW
YWx1ZSB2YWx1ZSwgdW5zaWduZWQgYXR0cmlidXRlcykKIHsKICAgICBKU0RPTVdpbmRvd1NoZWxs
KiB0aGlzT2JqZWN0ID0ganNDYXN0PEpTRE9NV2luZG93U2hlbGwqPihvYmplY3QpOwogICAgIHRo
aXNPYmplY3QtPndpbmRvdygpLT5wdXREaXJlY3RWaXJ0dWFsKHRoaXNPYmplY3QtPndpbmRvdygp
LCBleGVjLCBwcm9wZXJ0eU5hbWUsIHZhbHVlLCBhdHRyaWJ1dGVzKTsKIH0KIAotYm9vbCBKU0RP
TVdpbmRvd1NoZWxsOjpkZWZpbmVPd25Qcm9wZXJ0eShKU0M6OkpTT2JqZWN0KiBvYmplY3QsIEpT
Qzo6RXhlY1N0YXRlKiBleGVjLCBjb25zdCBKU0M6OklkZW50aWZpZXImIHByb3BlcnR5TmFtZSwg
SlNDOjpQcm9wZXJ0eURlc2NyaXB0b3ImIGRlc2NyaXB0b3IsIGJvb2wgc2hvdWxkVGhyb3cpCiti
b29sIEpTRE9NV2luZG93U2hlbGw6OmRlZmluZU93blByb3BlcnR5KEpTQzo6SlNPYmplY3QqIG9i
amVjdCwgSlNDOjpFeGVjU3RhdGUqIGV4ZWMsIEpTQzo6UHJvcGVydHlOYW1lIHByb3BlcnR5TmFt
ZSwgSlNDOjpQcm9wZXJ0eURlc2NyaXB0b3ImIGRlc2NyaXB0b3IsIGJvb2wgc2hvdWxkVGhyb3cp
CiB7CiAgICAgSlNET01XaW5kb3dTaGVsbCogdGhpc09iamVjdCA9IGpzQ2FzdDxKU0RPTVdpbmRv
d1NoZWxsKj4ob2JqZWN0KTsKICAgICByZXR1cm4gdGhpc09iamVjdC0+d2luZG93KCktPm1ldGhv
ZFRhYmxlKCktPmRlZmluZU93blByb3BlcnR5KHRoaXNPYmplY3QtPndpbmRvdygpLCBleGVjLCBw
cm9wZXJ0eU5hbWUsIGRlc2NyaXB0b3IsIHNob3VsZFRocm93KTsKIH0KIAotYm9vbCBKU0RPTVdp
bmRvd1NoZWxsOjpkZWxldGVQcm9wZXJ0eShKU0NlbGwqIGNlbGwsIEV4ZWNTdGF0ZSogZXhlYywg
Y29uc3QgSWRlbnRpZmllciYgcHJvcGVydHlOYW1lKQorYm9vbCBKU0RPTVdpbmRvd1NoZWxsOjpk
ZWxldGVQcm9wZXJ0eShKU0NlbGwqIGNlbGwsIEV4ZWNTdGF0ZSogZXhlYywgUHJvcGVydHlOYW1l
IHByb3BlcnR5TmFtZSkKIHsKICAgICBKU0RPTVdpbmRvd1NoZWxsKiB0aGlzT2JqZWN0ID0ganND
YXN0PEpTRE9NV2luZG93U2hlbGwqPihjZWxsKTsKICAgICByZXR1cm4gdGhpc09iamVjdC0+d2lu
ZG93KCktPm1ldGhvZFRhYmxlKCktPmRlbGV0ZVByb3BlcnR5KHRoaXNPYmplY3QtPndpbmRvdygp
LCBleGVjLCBwcm9wZXJ0eU5hbWUpOwpJbmRleDogU291cmNlL1dlYkNvcmUvYmluZGluZ3MvanMv
SlNET01XaW5kb3dTaGVsbC5oCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9XZWJDb3JlL2JpbmRpbmdz
L2pzL0pTRE9NV2luZG93U2hlbGwuaAkocmV2aXNpb24gMTE2NjY3KQorKysgU291cmNlL1dlYkNv
cmUvYmluZGluZ3MvanMvSlNET01XaW5kb3dTaGVsbC5oCSh3b3JraW5nIGNvcHkpCkBAIC03OCwx
NCArNzgsMTQgQEAgbmFtZXNwYWNlIFdlYkNvcmUgewogICAgICAgICBzdGF0aWMgY29uc3QgdW5z
aWduZWQgU3RydWN0dXJlRmxhZ3MgPSBKU0M6Ok92ZXJyaWRlc0dldE93blByb3BlcnR5U2xvdCB8
IEpTQzo6T3ZlcnJpZGVzR2V0UHJvcGVydHlOYW1lcyB8IEJhc2U6OlN0cnVjdHVyZUZsYWdzOwog
CiAgICAgICAgIHN0YXRpYyBKU0M6OlVTdHJpbmcgY2xhc3NOYW1lKGNvbnN0IEpTQzo6SlNPYmpl
Y3QqKTsKLSAgICAgICAgc3RhdGljIGJvb2wgZ2V0T3duUHJvcGVydHlTbG90KEpTQzo6SlNDZWxs
KiwgSlNDOjpFeGVjU3RhdGUqLCBjb25zdCBKU0M6OklkZW50aWZpZXImIHByb3BlcnR5TmFtZSwg
SlNDOjpQcm9wZXJ0eVNsb3QmKTsKLSAgICAgICAgc3RhdGljIGJvb2wgZ2V0T3duUHJvcGVydHlE
ZXNjcmlwdG9yKEpTQzo6SlNPYmplY3QqLCBKU0M6OkV4ZWNTdGF0ZSosIGNvbnN0IEpTQzo6SWRl
bnRpZmllciYgcHJvcGVydHlOYW1lLCBKU0M6OlByb3BlcnR5RGVzY3JpcHRvciYpOwotICAgICAg
ICBzdGF0aWMgdm9pZCBwdXQoSlNDOjpKU0NlbGwqLCBKU0M6OkV4ZWNTdGF0ZSosIGNvbnN0IEpT
Qzo6SWRlbnRpZmllciYgcHJvcGVydHlOYW1lLCBKU0M6OkpTVmFsdWUsIEpTQzo6UHV0UHJvcGVy
dHlTbG90Jik7Ci0gICAgICAgIHN0YXRpYyB2b2lkIHB1dERpcmVjdFZpcnR1YWwoSlNDOjpKU09i
amVjdCosIEpTQzo6RXhlY1N0YXRlKiwgY29uc3QgSlNDOjpJZGVudGlmaWVyJiBwcm9wZXJ0eU5h
bWUsIEpTQzo6SlNWYWx1ZSwgdW5zaWduZWQgYXR0cmlidXRlcyk7Ci0gICAgICAgIHN0YXRpYyBi
b29sIGRlbGV0ZVByb3BlcnR5KEpTQzo6SlNDZWxsKiwgSlNDOjpFeGVjU3RhdGUqLCBjb25zdCBK
U0M6OklkZW50aWZpZXImIHByb3BlcnR5TmFtZSk7CisgICAgICAgIHN0YXRpYyBib29sIGdldE93
blByb3BlcnR5U2xvdChKU0M6OkpTQ2VsbCosIEpTQzo6RXhlY1N0YXRlKiwgSlNDOjpQcm9wZXJ0
eU5hbWUsIEpTQzo6UHJvcGVydHlTbG90Jik7CisgICAgICAgIHN0YXRpYyBib29sIGdldE93blBy
b3BlcnR5RGVzY3JpcHRvcihKU0M6OkpTT2JqZWN0KiwgSlNDOjpFeGVjU3RhdGUqLCBKU0M6OlBy
b3BlcnR5TmFtZSwgSlNDOjpQcm9wZXJ0eURlc2NyaXB0b3ImKTsKKyAgICAgICAgc3RhdGljIHZv
aWQgcHV0KEpTQzo6SlNDZWxsKiwgSlNDOjpFeGVjU3RhdGUqLCBKU0M6OlByb3BlcnR5TmFtZSwg
SlNDOjpKU1ZhbHVlLCBKU0M6OlB1dFByb3BlcnR5U2xvdCYpOworICAgICAgICBzdGF0aWMgdm9p
ZCBwdXREaXJlY3RWaXJ0dWFsKEpTQzo6SlNPYmplY3QqLCBKU0M6OkV4ZWNTdGF0ZSosIEpTQzo6
UHJvcGVydHlOYW1lLCBKU0M6OkpTVmFsdWUsIHVuc2lnbmVkIGF0dHJpYnV0ZXMpOworICAgICAg
ICBzdGF0aWMgYm9vbCBkZWxldGVQcm9wZXJ0eShKU0M6OkpTQ2VsbCosIEpTQzo6RXhlY1N0YXRl
KiwgSlNDOjpQcm9wZXJ0eU5hbWUpOwogICAgICAgICBzdGF0aWMgdm9pZCBnZXRPd25Qcm9wZXJ0
eU5hbWVzKEpTQzo6SlNPYmplY3QqLCBKU0M6OkV4ZWNTdGF0ZSosIEpTQzo6UHJvcGVydHlOYW1l
QXJyYXkmLCBKU0M6OkVudW1lcmF0aW9uTW9kZSk7CiAgICAgICAgIHN0YXRpYyB2b2lkIGdldFBy
b3BlcnR5TmFtZXMoSlNDOjpKU09iamVjdCosIEpTQzo6RXhlY1N0YXRlKiwgSlNDOjpQcm9wZXJ0
eU5hbWVBcnJheSYsIEpTQzo6RW51bWVyYXRpb25Nb2RlKTsKLSAgICAgICAgc3RhdGljIGJvb2wg
ZGVmaW5lT3duUHJvcGVydHkoSlNDOjpKU09iamVjdCosIEpTQzo6RXhlY1N0YXRlKiwgY29uc3Qg
SlNDOjpJZGVudGlmaWVyJiBwcm9wZXJ0eU5hbWUsIEpTQzo6UHJvcGVydHlEZXNjcmlwdG9yJiwg
Ym9vbCBzaG91bGRUaHJvdyk7CisgICAgICAgIHN0YXRpYyBib29sIGRlZmluZU93blByb3BlcnR5
KEpTQzo6SlNPYmplY3QqLCBKU0M6OkV4ZWNTdGF0ZSosIEpTQzo6UHJvcGVydHlOYW1lLCBKU0M6
OlByb3BlcnR5RGVzY3JpcHRvciYsIGJvb2wgc2hvdWxkVGhyb3cpOwogCiAgICAgICAgIFJlZlB0
cjxET01XcmFwcGVyV29ybGQ+IG1fd29ybGQ7CiAgICAgfTsKSW5kZXg6IFNvdXJjZS9XZWJDb3Jl
L2JpbmRpbmdzL2pzL0pTSFRNTEFsbENvbGxlY3Rpb25DdXN0b20uY3BwCj09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0t
IFNvdXJjZS9XZWJDb3JlL2JpbmRpbmdzL2pzL0pTSFRNTEFsbENvbGxlY3Rpb25DdXN0b20uY3Bw
CShyZXZpc2lvbiAxMTY2NjcpCisrKyBTb3VyY2UvV2ViQ29yZS9iaW5kaW5ncy9qcy9KU0hUTUxB
bGxDb2xsZWN0aW9uQ3VzdG9tLmNwcAkod29ya2luZyBjb3B5KQpAQCAtNDEsMTAgKzQxLDEwIEBA
IHVzaW5nIG5hbWVzcGFjZSBKU0M7CiAKIG5hbWVzcGFjZSBXZWJDb3JlIHsKIAotc3RhdGljIEpT
VmFsdWUgZ2V0TmFtZWRJdGVtcyhFeGVjU3RhdGUqIGV4ZWMsIEpTSFRNTEFsbENvbGxlY3Rpb24q
IGNvbGxlY3Rpb24sIGNvbnN0IElkZW50aWZpZXImIHByb3BlcnR5TmFtZSkKK3N0YXRpYyBKU1Zh
bHVlIGdldE5hbWVkSXRlbXMoRXhlY1N0YXRlKiBleGVjLCBKU0hUTUxBbGxDb2xsZWN0aW9uKiBj
b2xsZWN0aW9uLCBQcm9wZXJ0eU5hbWUgcHJvcGVydHlOYW1lKQogewogICAgIFZlY3RvcjxSZWZQ
dHI8Tm9kZT4gPiBuYW1lZEl0ZW1zOwotICAgIGNvbGxlY3Rpb24tPmltcGwoKS0+bmFtZWRJdGVt
cyhpZGVudGlmaWVyVG9BdG9taWNTdHJpbmcocHJvcGVydHlOYW1lKSwgbmFtZWRJdGVtcyk7Cisg
ICAgY29sbGVjdGlvbi0+aW1wbCgpLT5uYW1lZEl0ZW1zKHByb3BlcnR5TmFtZVRvQXRvbWljU3Ry
aW5nKHByb3BlcnR5TmFtZSksIG5hbWVkSXRlbXMpOwogCiAgICAgaWYgKG5hbWVkSXRlbXMuaXNF
bXB0eSgpKQogICAgICAgICByZXR1cm4ganNVbmRlZmluZWQoKTsKQEAgLTcxLDEwICs3MSw5IEBA
IHN0YXRpYyBFbmNvZGVkSlNWYWx1ZSBKU0NfSE9TVF9DQUxMIGNhbGwKIAogICAgIGlmIChleGVj
LT5hcmd1bWVudENvdW50KCkgPT0gMSkgewogICAgICAgICAvLyBTdXBwb3J0IGZvciBkb2N1bWVu
dC5hbGwoPGluZGV4PikgZXRjLgotICAgICAgICBib29sIG9rOwogICAgICAgICBVU3RyaW5nIHN0
cmluZyA9IGV4ZWMtPmFyZ3VtZW50KDApLnRvU3RyaW5nKGV4ZWMpLT52YWx1ZShleGVjKTsKLSAg
ICAgICAgdW5zaWduZWQgaW5kZXggPSBJZGVudGlmaWVyOjp0b1VJbnQzMihzdHJpbmcsIG9rKTsK
LSAgICAgICAgaWYgKG9rKQorICAgICAgICB1bnNpZ25lZCBpbmRleCA9IHRvVUludDMyRnJvbVN0
cmluZ0ltcGwoc3RyaW5nLmltcGwoKSk7CisgICAgICAgIGlmIChpbmRleCAhPSBQcm9wZXJ0eU5h
bWU6Ok5vdEFuSW5kZXgpCiAgICAgICAgICAgICByZXR1cm4gSlNWYWx1ZTo6ZW5jb2RlKHRvSlMo
ZXhlYywganNDb2xsZWN0aW9uLT5nbG9iYWxPYmplY3QoKSwgY29sbGVjdGlvbi0+aXRlbShpbmRl
eCkpKTsKIAogICAgICAgICAvLyBTdXBwb3J0IGZvciBkb2N1bWVudC5pbWFnZXMoJzxuYW1lPicp
IGV0Yy4KQEAgLTgyLDEwICs4MSw5IEBAIHN0YXRpYyBFbmNvZGVkSlNWYWx1ZSBKU0NfSE9TVF9D
QUxMIGNhbGwKICAgICB9CiAKICAgICAvLyBUaGUgc2Vjb25kIGFyZywgaWYgc2V0LCBpcyB0aGUg
aW5kZXggb2YgdGhlIGl0ZW0gd2Ugd2FudAotICAgIGJvb2wgb2s7CiAgICAgVVN0cmluZyBzdHJp
bmcgPSBleGVjLT5hcmd1bWVudCgwKS50b1N0cmluZyhleGVjKS0+dmFsdWUoZXhlYyk7Ci0gICAg
dW5zaWduZWQgaW5kZXggPSBJZGVudGlmaWVyOjp0b1VJbnQzMihleGVjLT5hcmd1bWVudCgxKS50
b1N0cmluZyhleGVjKS0+dmFsdWUoZXhlYyksIG9rKTsKLSAgICBpZiAob2spIHsKKyAgICB1bnNp
Z25lZCBpbmRleCA9IHRvVUludDMyRnJvbVN0cmluZ0ltcGwoZXhlYy0+YXJndW1lbnQoMSkudG9T
dHJpbmcoZXhlYyktPnZhbHVlKGV4ZWMpLmltcGwoKSk7CisgICAgaWYgKGluZGV4ICE9IFByb3Bl
cnR5TmFtZTo6Tm90QW5JbmRleCkgewogICAgICAgICBpZiAoTm9kZSogbm9kZSA9IGNvbGxlY3Rp
b24tPm5hbWVkSXRlbVdpdGhJbmRleCh1c3RyaW5nVG9BdG9taWNTdHJpbmcoc3RyaW5nKSwgaW5k
ZXgpKQogICAgICAgICAgICAgcmV0dXJuIEpTVmFsdWU6OmVuY29kZSh0b0pTKGV4ZWMsIGpzQ29s
bGVjdGlvbi0+Z2xvYmFsT2JqZWN0KCksIG5vZGUpKTsKICAgICB9CkBAIC05OSwxMiArOTcsMTIg
QEAgQ2FsbFR5cGUgSlNIVE1MQWxsQ29sbGVjdGlvbjo6Z2V0Q2FsbERhdAogICAgIHJldHVybiBD
YWxsVHlwZUhvc3Q7CiB9CiAKLWJvb2wgSlNIVE1MQWxsQ29sbGVjdGlvbjo6Y2FuR2V0SXRlbXNG
b3JOYW1lKEV4ZWNTdGF0ZSosIEhUTUxBbGxDb2xsZWN0aW9uKiBjb2xsZWN0aW9uLCBjb25zdCBJ
ZGVudGlmaWVyJiBwcm9wZXJ0eU5hbWUpCitib29sIEpTSFRNTEFsbENvbGxlY3Rpb246OmNhbkdl
dEl0ZW1zRm9yTmFtZShFeGVjU3RhdGUqLCBIVE1MQWxsQ29sbGVjdGlvbiogY29sbGVjdGlvbiwg
UHJvcGVydHlOYW1lIHByb3BlcnR5TmFtZSkKIHsKLSAgICByZXR1cm4gY29sbGVjdGlvbi0+aGFz
TmFtZWRJdGVtKGlkZW50aWZpZXJUb0F0b21pY1N0cmluZyhwcm9wZXJ0eU5hbWUpKTsKKyAgICBy
ZXR1cm4gY29sbGVjdGlvbi0+aGFzTmFtZWRJdGVtKHByb3BlcnR5TmFtZVRvQXRvbWljU3RyaW5n
KHByb3BlcnR5TmFtZSkpOwogfQogCi1KU1ZhbHVlIEpTSFRNTEFsbENvbGxlY3Rpb246Om5hbWVH
ZXR0ZXIoRXhlY1N0YXRlKiBleGVjLCBKU1ZhbHVlIHNsb3RCYXNlLCBjb25zdCBJZGVudGlmaWVy
JiBwcm9wZXJ0eU5hbWUpCitKU1ZhbHVlIEpTSFRNTEFsbENvbGxlY3Rpb246Om5hbWVHZXR0ZXIo
RXhlY1N0YXRlKiBleGVjLCBKU1ZhbHVlIHNsb3RCYXNlLCBQcm9wZXJ0eU5hbWUgcHJvcGVydHlO
YW1lKQogewogICAgIEpTSFRNTEFsbENvbGxlY3Rpb24qIHRoaXNPYmogPSBqc0Nhc3Q8SlNIVE1M
QWxsQ29sbGVjdGlvbio+KGFzT2JqZWN0KHNsb3RCYXNlKSk7CiAgICAgcmV0dXJuIGdldE5hbWVk
SXRlbXMoZXhlYywgdGhpc09iaiwgcHJvcGVydHlOYW1lKTsKQEAgLTExMiw5ICsxMTAsOCBAQCBK
U1ZhbHVlIEpTSFRNTEFsbENvbGxlY3Rpb246Om5hbWVHZXR0ZXIoCiAKIEpTVmFsdWUgSlNIVE1M
QWxsQ29sbGVjdGlvbjo6aXRlbShFeGVjU3RhdGUqIGV4ZWMpCiB7Ci0gICAgYm9vbCBvazsKLSAg
ICB1aW50MzJfdCBpbmRleCA9IElkZW50aWZpZXI6OnRvVUludDMyKGV4ZWMtPmFyZ3VtZW50KDAp
LnRvU3RyaW5nKGV4ZWMpLT52YWx1ZShleGVjKSwgb2spOwotICAgIGlmIChvaykKKyAgICB1aW50
MzJfdCBpbmRleCA9IHRvVUludDMyRnJvbVN0cmluZ0ltcGwoZXhlYy0+YXJndW1lbnQoMCkudG9T
dHJpbmcoZXhlYyktPnZhbHVlKGV4ZWMpLmltcGwoKSk7CisgICAgaWYgKGluZGV4ICE9IFByb3Bl
cnR5TmFtZTo6Tm90QW5JbmRleCkKICAgICAgICAgcmV0dXJuIHRvSlMoZXhlYywgZ2xvYmFsT2Jq
ZWN0KCksIGltcGwoKS0+aXRlbShpbmRleCkpOwogICAgIHJldHVybiBnZXROYW1lZEl0ZW1zKGV4
ZWMsIHRoaXMsIElkZW50aWZpZXIoZXhlYywgZXhlYy0+YXJndW1lbnQoMCkudG9TdHJpbmcoZXhl
YyktPnZhbHVlKGV4ZWMpKSk7CiB9CkluZGV4OiBTb3VyY2UvV2ViQ29yZS9iaW5kaW5ncy9qcy9K
U0hUTUxBcHBsZXRFbGVtZW50Q3VzdG9tLmNwcAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2ViQ29y
ZS9iaW5kaW5ncy9qcy9KU0hUTUxBcHBsZXRFbGVtZW50Q3VzdG9tLmNwcAkocmV2aXNpb24gMTE2
NjY3KQorKysgU291cmNlL1dlYkNvcmUvYmluZGluZ3MvanMvSlNIVE1MQXBwbGV0RWxlbWVudEN1
c3RvbS5jcHAJKHdvcmtpbmcgY29weSkKQEAgLTMzLDE3ICszMywxNyBAQCBuYW1lc3BhY2UgV2Vi
Q29yZSB7CiAKIHVzaW5nIG5hbWVzcGFjZSBKU0M7CiAKLWJvb2wgSlNIVE1MQXBwbGV0RWxlbWVu
dDo6Z2V0T3duUHJvcGVydHlTbG90RGVsZWdhdGUoRXhlY1N0YXRlKiBleGVjLCBjb25zdCBJZGVu
dGlmaWVyJiBwcm9wZXJ0eU5hbWUsIFByb3BlcnR5U2xvdCYgc2xvdCkKK2Jvb2wgSlNIVE1MQXBw
bGV0RWxlbWVudDo6Z2V0T3duUHJvcGVydHlTbG90RGVsZWdhdGUoRXhlY1N0YXRlKiBleGVjLCBQ
cm9wZXJ0eU5hbWUgcHJvcGVydHlOYW1lLCBQcm9wZXJ0eVNsb3QmIHNsb3QpCiB7CiAgICAgcmV0
dXJuIHJ1bnRpbWVPYmplY3RDdXN0b21HZXRPd25Qcm9wZXJ0eVNsb3QoZXhlYywgcHJvcGVydHlO
YW1lLCBzbG90LCB0aGlzKTsKIH0KIAotYm9vbCBKU0hUTUxBcHBsZXRFbGVtZW50OjpnZXRPd25Q
cm9wZXJ0eURlc2NyaXB0b3JEZWxlZ2F0ZShFeGVjU3RhdGUqIGV4ZWMsIGNvbnN0IElkZW50aWZp
ZXImIHByb3BlcnR5TmFtZSwgUHJvcGVydHlEZXNjcmlwdG9yJiBkZXNjcmlwdG9yKQorYm9vbCBK
U0hUTUxBcHBsZXRFbGVtZW50OjpnZXRPd25Qcm9wZXJ0eURlc2NyaXB0b3JEZWxlZ2F0ZShFeGVj
U3RhdGUqIGV4ZWMsIFByb3BlcnR5TmFtZSBwcm9wZXJ0eU5hbWUsIFByb3BlcnR5RGVzY3JpcHRv
ciYgZGVzY3JpcHRvcikKIHsKICAgICByZXR1cm4gcnVudGltZU9iamVjdEN1c3RvbUdldE93blBy
b3BlcnR5RGVzY3JpcHRvcihleGVjLCBwcm9wZXJ0eU5hbWUsIGRlc2NyaXB0b3IsIHRoaXMpOwog
fQogCi1ib29sIEpTSFRNTEFwcGxldEVsZW1lbnQ6OnB1dERlbGVnYXRlKEV4ZWNTdGF0ZSogZXhl
YywgY29uc3QgSWRlbnRpZmllciYgcHJvcGVydHlOYW1lLCBKU1ZhbHVlIHZhbHVlLCBQdXRQcm9w
ZXJ0eVNsb3QmIHNsb3QpCitib29sIEpTSFRNTEFwcGxldEVsZW1lbnQ6OnB1dERlbGVnYXRlKEV4
ZWNTdGF0ZSogZXhlYywgUHJvcGVydHlOYW1lIHByb3BlcnR5TmFtZSwgSlNWYWx1ZSB2YWx1ZSwg
UHV0UHJvcGVydHlTbG90JiBzbG90KQogewogICAgIHJldHVybiBydW50aW1lT2JqZWN0Q3VzdG9t
UHV0KGV4ZWMsIHByb3BlcnR5TmFtZSwgdmFsdWUsIHRoaXMsIHNsb3QpOwogfQpJbmRleDogU291
cmNlL1dlYkNvcmUvYmluZGluZ3MvanMvSlNIVE1MQ29sbGVjdGlvbkN1c3RvbS5jcHAKPT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PQotLS0gU291cmNlL1dlYkNvcmUvYmluZGluZ3MvanMvSlNIVE1MQ29sbGVjdGlvbkN1c3Rv
bS5jcHAJKHJldmlzaW9uIDExNjY2NykKKysrIFNvdXJjZS9XZWJDb3JlL2JpbmRpbmdzL2pzL0pT
SFRNTENvbGxlY3Rpb25DdXN0b20uY3BwCSh3b3JraW5nIGNvcHkpCkBAIC0zOSwxMCArMzksMTAg
QEAgdXNpbmcgbmFtZXNwYWNlIEpTQzsKIAogbmFtZXNwYWNlIFdlYkNvcmUgewogCi1zdGF0aWMg
SlNWYWx1ZSBnZXROYW1lZEl0ZW1zKEV4ZWNTdGF0ZSogZXhlYywgSlNIVE1MQ29sbGVjdGlvbiog
Y29sbGVjdGlvbiwgY29uc3QgSWRlbnRpZmllciYgcHJvcGVydHlOYW1lKQorc3RhdGljIEpTVmFs
dWUgZ2V0TmFtZWRJdGVtcyhFeGVjU3RhdGUqIGV4ZWMsIEpTSFRNTENvbGxlY3Rpb24qIGNvbGxl
Y3Rpb24sIFByb3BlcnR5TmFtZSBwcm9wZXJ0eU5hbWUpCiB7CiAgICAgVmVjdG9yPFJlZlB0cjxO
b2RlPiA+IG5hbWVkSXRlbXM7Ci0gICAgY29uc3QgQXRvbWljU3RyaW5nJiBuYW1lID0gaWRlbnRp
ZmllclRvQXRvbWljU3RyaW5nKHByb3BlcnR5TmFtZSk7CisgICAgY29uc3QgQXRvbWljU3RyaW5n
JiBuYW1lID0gcHJvcGVydHlOYW1lVG9BdG9taWNTdHJpbmcocHJvcGVydHlOYW1lKTsKICAgICBj
b2xsZWN0aW9uLT5pbXBsKCktPm5hbWVkSXRlbXMobmFtZSwgbmFtZWRJdGVtcyk7CiAKICAgICBp
ZiAobmFtZWRJdGVtcy5pc0VtcHR5KCkpCkBAIC01OSwxMiArNTksMTIgQEAgc3RhdGljIEpTVmFs
dWUgZ2V0TmFtZWRJdGVtcyhFeGVjU3RhdGUqIAogICAgIHJldHVybiB0b0pTKGV4ZWMsIGNvbGxl
Y3Rpb24tPmdsb2JhbE9iamVjdCgpLCBTdGF0aWNOb2RlTGlzdDo6YWRvcHQobmFtZWRJdGVtcyku
Z2V0KCkpOwogfQogCi1ib29sIEpTSFRNTENvbGxlY3Rpb246OmNhbkdldEl0ZW1zRm9yTmFtZShF
eGVjU3RhdGUqLCBIVE1MQ29sbGVjdGlvbiogY29sbGVjdGlvbiwgY29uc3QgSWRlbnRpZmllciYg
cHJvcGVydHlOYW1lKQorYm9vbCBKU0hUTUxDb2xsZWN0aW9uOjpjYW5HZXRJdGVtc0Zvck5hbWUo
RXhlY1N0YXRlKiwgSFRNTENvbGxlY3Rpb24qIGNvbGxlY3Rpb24sIFByb3BlcnR5TmFtZSBwcm9w
ZXJ0eU5hbWUpCiB7Ci0gICAgcmV0dXJuIGNvbGxlY3Rpb24tPmhhc05hbWVkSXRlbShpZGVudGlm
aWVyVG9BdG9taWNTdHJpbmcocHJvcGVydHlOYW1lKSk7CisgICAgcmV0dXJuIGNvbGxlY3Rpb24t
Pmhhc05hbWVkSXRlbShwcm9wZXJ0eU5hbWVUb0F0b21pY1N0cmluZyhwcm9wZXJ0eU5hbWUpKTsK
IH0KIAotSlNWYWx1ZSBKU0hUTUxDb2xsZWN0aW9uOjpuYW1lR2V0dGVyKEV4ZWNTdGF0ZSogZXhl
YywgSlNWYWx1ZSBzbG90QmFzZSwgY29uc3QgSWRlbnRpZmllciYgcHJvcGVydHlOYW1lKQorSlNW
YWx1ZSBKU0hUTUxDb2xsZWN0aW9uOjpuYW1lR2V0dGVyKEV4ZWNTdGF0ZSogZXhlYywgSlNWYWx1
ZSBzbG90QmFzZSwgUHJvcGVydHlOYW1lIHByb3BlcnR5TmFtZSkKIHsKICAgICBKU0hUTUxDb2xs
ZWN0aW9uKiB0aGlzT2JqID0ganNDYXN0PEpTSFRNTENvbGxlY3Rpb24qPihhc09iamVjdChzbG90
QmFzZSkpOwogICAgIHJldHVybiBnZXROYW1lZEl0ZW1zKGV4ZWMsIHRoaXNPYmosIHByb3BlcnR5
TmFtZSk7CkluZGV4OiBTb3VyY2UvV2ViQ29yZS9iaW5kaW5ncy9qcy9KU0hUTUxEb2N1bWVudEN1
c3RvbS5jcHAKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL1dlYkNvcmUvYmluZGluZ3MvanMvSlNIVE1M
RG9jdW1lbnRDdXN0b20uY3BwCShyZXZpc2lvbiAxMTY2NjcpCisrKyBTb3VyY2UvV2ViQ29yZS9i
aW5kaW5ncy9qcy9KU0hUTUxEb2N1bWVudEN1c3RvbS5jcHAJKHdvcmtpbmcgY29weSkKQEAgLTUx
LDE4ICs1MSwxOCBAQCBuYW1lc3BhY2UgV2ViQ29yZSB7CiAKIHVzaW5nIG5hbWVzcGFjZSBIVE1M
TmFtZXM7CiAKLWJvb2wgSlNIVE1MRG9jdW1lbnQ6OmNhbkdldEl0ZW1zRm9yTmFtZShFeGVjU3Rh
dGUqLCBIVE1MRG9jdW1lbnQqIGRvY3VtZW50LCBjb25zdCBJZGVudGlmaWVyJiBwcm9wZXJ0eU5h
bWUpCitib29sIEpTSFRNTERvY3VtZW50OjpjYW5HZXRJdGVtc0Zvck5hbWUoRXhlY1N0YXRlKiwg
SFRNTERvY3VtZW50KiBkb2N1bWVudCwgUHJvcGVydHlOYW1lIHByb3BlcnR5TmFtZSkKIHsKICAg
ICBBdG9taWNTdHJpbmdJbXBsKiBhdG9taWNQcm9wZXJ0eU5hbWUgPSBmaW5kQXRvbWljU3RyaW5n
KHByb3BlcnR5TmFtZSk7CiAgICAgcmV0dXJuIGF0b21pY1Byb3BlcnR5TmFtZSAmJiAoZG9jdW1l
bnQtPmhhc05hbWVkSXRlbShhdG9taWNQcm9wZXJ0eU5hbWUpIHx8IGRvY3VtZW50LT5oYXNFeHRy
YU5hbWVkSXRlbShhdG9taWNQcm9wZXJ0eU5hbWUpKTsKIH0KIAotSlNWYWx1ZSBKU0hUTUxEb2N1
bWVudDo6bmFtZUdldHRlcihFeGVjU3RhdGUqIGV4ZWMsIEpTVmFsdWUgc2xvdEJhc2UsIGNvbnN0
IElkZW50aWZpZXImIHByb3BlcnR5TmFtZSkKK0pTVmFsdWUgSlNIVE1MRG9jdW1lbnQ6Om5hbWVH
ZXR0ZXIoRXhlY1N0YXRlKiBleGVjLCBKU1ZhbHVlIHNsb3RCYXNlLCBQcm9wZXJ0eU5hbWUgcHJv
cGVydHlOYW1lKQogewogICAgIEpTSFRNTERvY3VtZW50KiB0aGlzT2JqID0ganNDYXN0PEpTSFRN
TERvY3VtZW50Kj4oYXNPYmplY3Qoc2xvdEJhc2UpKTsKICAgICBIVE1MRG9jdW1lbnQqIGRvY3Vt
ZW50ID0gc3RhdGljX2Nhc3Q8SFRNTERvY3VtZW50Kj4odGhpc09iai0+aW1wbCgpKTsKIAotICAg
IEhUTUxDb2xsZWN0aW9uKiBjb2xsZWN0aW9uID0gZG9jdW1lbnQtPmRvY3VtZW50TmFtZWRJdGVt
cyhpZGVudGlmaWVyVG9BdG9taWNTdHJpbmcocHJvcGVydHlOYW1lKSk7CisgICAgSFRNTENvbGxl
Y3Rpb24qIGNvbGxlY3Rpb24gPSBkb2N1bWVudC0+ZG9jdW1lbnROYW1lZEl0ZW1zKHByb3BlcnR5
TmFtZVRvQXRvbWljU3RyaW5nKHByb3BlcnR5TmFtZSkpOwogCiAgICAgdW5zaWduZWQgbGVuZ3Ro
ID0gY29sbGVjdGlvbi0+bGVuZ3RoKCk7CiAgICAgaWYgKCFsZW5ndGgpCkluZGV4OiBTb3VyY2Uv
V2ViQ29yZS9iaW5kaW5ncy9qcy9KU0hUTUxFbWJlZEVsZW1lbnRDdXN0b20uY3BwCj09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT0KLS0tIFNvdXJjZS9XZWJDb3JlL2JpbmRpbmdzL2pzL0pTSFRNTEVtYmVkRWxlbWVudEN1c3Rv
bS5jcHAJKHJldmlzaW9uIDExNjY2NykKKysrIFNvdXJjZS9XZWJDb3JlL2JpbmRpbmdzL2pzL0pT
SFRNTEVtYmVkRWxlbWVudEN1c3RvbS5jcHAJKHdvcmtpbmcgY29weSkKQEAgLTMzLDE3ICszMywx
NyBAQCBuYW1lc3BhY2UgV2ViQ29yZSB7CiAKIHVzaW5nIG5hbWVzcGFjZSBKU0M7CiAKLWJvb2wg
SlNIVE1MRW1iZWRFbGVtZW50OjpnZXRPd25Qcm9wZXJ0eVNsb3REZWxlZ2F0ZShFeGVjU3RhdGUq
IGV4ZWMsIGNvbnN0IElkZW50aWZpZXImIHByb3BlcnR5TmFtZSwgUHJvcGVydHlTbG90JiBzbG90
KQorYm9vbCBKU0hUTUxFbWJlZEVsZW1lbnQ6OmdldE93blByb3BlcnR5U2xvdERlbGVnYXRlKEV4
ZWNTdGF0ZSogZXhlYywgUHJvcGVydHlOYW1lIHByb3BlcnR5TmFtZSwgUHJvcGVydHlTbG90JiBz
bG90KQogewogICAgIHJldHVybiBydW50aW1lT2JqZWN0Q3VzdG9tR2V0T3duUHJvcGVydHlTbG90
KGV4ZWMsIHByb3BlcnR5TmFtZSwgc2xvdCwgdGhpcyk7CiB9CiAKLWJvb2wgSlNIVE1MRW1iZWRF
bGVtZW50OjpnZXRPd25Qcm9wZXJ0eURlc2NyaXB0b3JEZWxlZ2F0ZShFeGVjU3RhdGUqIGV4ZWMs
IGNvbnN0IElkZW50aWZpZXImIHByb3BlcnR5TmFtZSwgUHJvcGVydHlEZXNjcmlwdG9yJiBkZXNj
cmlwdG9yKQorYm9vbCBKU0hUTUxFbWJlZEVsZW1lbnQ6OmdldE93blByb3BlcnR5RGVzY3JpcHRv
ckRlbGVnYXRlKEV4ZWNTdGF0ZSogZXhlYywgUHJvcGVydHlOYW1lIHByb3BlcnR5TmFtZSwgUHJv
cGVydHlEZXNjcmlwdG9yJiBkZXNjcmlwdG9yKQogewogICAgIHJldHVybiBydW50aW1lT2JqZWN0
Q3VzdG9tR2V0T3duUHJvcGVydHlEZXNjcmlwdG9yKGV4ZWMsIHByb3BlcnR5TmFtZSwgZGVzY3Jp
cHRvciwgdGhpcyk7CiB9CiAKLWJvb2wgSlNIVE1MRW1iZWRFbGVtZW50OjpwdXREZWxlZ2F0ZShF
eGVjU3RhdGUqIGV4ZWMsIGNvbnN0IElkZW50aWZpZXImIHByb3BlcnR5TmFtZSwgSlNWYWx1ZSB2
YWx1ZSwgUHV0UHJvcGVydHlTbG90JiBzbG90KQorYm9vbCBKU0hUTUxFbWJlZEVsZW1lbnQ6OnB1
dERlbGVnYXRlKEV4ZWNTdGF0ZSogZXhlYywgUHJvcGVydHlOYW1lIHByb3BlcnR5TmFtZSwgSlNW
YWx1ZSB2YWx1ZSwgUHV0UHJvcGVydHlTbG90JiBzbG90KQogewogICAgIHJldHVybiBydW50aW1l
T2JqZWN0Q3VzdG9tUHV0KGV4ZWMsIHByb3BlcnR5TmFtZSwgdmFsdWUsIHRoaXMsIHNsb3QpOwog
fQpJbmRleDogU291cmNlL1dlYkNvcmUvYmluZGluZ3MvanMvSlNIVE1MRm9ybUVsZW1lbnRDdXN0
b20uY3BwCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9XZWJDb3JlL2JpbmRpbmdzL2pzL0pTSFRNTEZv
cm1FbGVtZW50Q3VzdG9tLmNwcAkocmV2aXNpb24gMTE2NjY3KQorKysgU291cmNlL1dlYkNvcmUv
YmluZGluZ3MvanMvSlNIVE1MRm9ybUVsZW1lbnRDdXN0b20uY3BwCSh3b3JraW5nIGNvcHkpCkBA
IC0zNywyMCArMzcsMjAgQEAgdXNpbmcgbmFtZXNwYWNlIEpTQzsKIAogbmFtZXNwYWNlIFdlYkNv
cmUgewogCi1ib29sIEpTSFRNTEZvcm1FbGVtZW50OjpjYW5HZXRJdGVtc0Zvck5hbWUoRXhlY1N0
YXRlKiwgSFRNTEZvcm1FbGVtZW50KiBmb3JtLCBjb25zdCBJZGVudGlmaWVyJiBwcm9wZXJ0eU5h
bWUpCitib29sIEpTSFRNTEZvcm1FbGVtZW50OjpjYW5HZXRJdGVtc0Zvck5hbWUoRXhlY1N0YXRl
KiwgSFRNTEZvcm1FbGVtZW50KiBmb3JtLCBQcm9wZXJ0eU5hbWUgcHJvcGVydHlOYW1lKQogewog
ICAgIFZlY3RvcjxSZWZQdHI8Tm9kZT4gPiBuYW1lZEl0ZW1zOwotICAgIGZvcm0tPmdldE5hbWVk
RWxlbWVudHMoaWRlbnRpZmllclRvQXRvbWljU3RyaW5nKHByb3BlcnR5TmFtZSksIG5hbWVkSXRl
bXMpOworICAgIGZvcm0tPmdldE5hbWVkRWxlbWVudHMocHJvcGVydHlOYW1lVG9BdG9taWNTdHJp
bmcocHJvcGVydHlOYW1lKSwgbmFtZWRJdGVtcyk7CiAgICAgcmV0dXJuIG5hbWVkSXRlbXMuc2l6
ZSgpOwogfQogCi1KU1ZhbHVlIEpTSFRNTEZvcm1FbGVtZW50OjpuYW1lR2V0dGVyKEV4ZWNTdGF0
ZSogZXhlYywgSlNWYWx1ZSBzbG90QmFzZSwgY29uc3QgSWRlbnRpZmllciYgcHJvcGVydHlOYW1l
KQorSlNWYWx1ZSBKU0hUTUxGb3JtRWxlbWVudDo6bmFtZUdldHRlcihFeGVjU3RhdGUqIGV4ZWMs
IEpTVmFsdWUgc2xvdEJhc2UsIFByb3BlcnR5TmFtZSBwcm9wZXJ0eU5hbWUpCiB7CiAgICAgSlNI
VE1MRWxlbWVudCoganNGb3JtID0ganNDYXN0PEpTSFRNTEZvcm1FbGVtZW50Kj4oYXNPYmplY3Qo
c2xvdEJhc2UpKTsKICAgICBIVE1MRm9ybUVsZW1lbnQqIGZvcm0gPSBzdGF0aWNfY2FzdDxIVE1M
Rm9ybUVsZW1lbnQqPihqc0Zvcm0tPmltcGwoKSk7CiAKICAgICBWZWN0b3I8UmVmUHRyPE5vZGU+
ID4gbmFtZWRJdGVtczsKLSAgICBmb3JtLT5nZXROYW1lZEVsZW1lbnRzKGlkZW50aWZpZXJUb0F0
b21pY1N0cmluZyhwcm9wZXJ0eU5hbWUpLCBuYW1lZEl0ZW1zKTsKKyAgICBmb3JtLT5nZXROYW1l
ZEVsZW1lbnRzKHByb3BlcnR5TmFtZVRvQXRvbWljU3RyaW5nKHByb3BlcnR5TmFtZSksIG5hbWVk
SXRlbXMpOwogICAgIAogICAgIGlmIChuYW1lZEl0ZW1zLmlzRW1wdHkoKSkKICAgICAgICAgcmV0
dXJuIGpzVW5kZWZpbmVkKCk7CkluZGV4OiBTb3VyY2UvV2ViQ29yZS9iaW5kaW5ncy9qcy9KU0hU
TUxGcmFtZVNldEVsZW1lbnRDdXN0b20uY3BwCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9XZWJDb3Jl
L2JpbmRpbmdzL2pzL0pTSFRNTEZyYW1lU2V0RWxlbWVudEN1c3RvbS5jcHAJKHJldmlzaW9uIDEx
NjY2NykKKysrIFNvdXJjZS9XZWJDb3JlL2JpbmRpbmdzL2pzL0pTSFRNTEZyYW1lU2V0RWxlbWVu
dEN1c3RvbS5jcHAJKHdvcmtpbmcgY29weSkKQEAgLTQxLDE2ICs0MSwxNiBAQCBuYW1lc3BhY2Ug
V2ViQ29yZSB7CiAKIHVzaW5nIG5hbWVzcGFjZSBIVE1MTmFtZXM7CiAKLWJvb2wgSlNIVE1MRnJh
bWVTZXRFbGVtZW50OjpjYW5HZXRJdGVtc0Zvck5hbWUoRXhlY1N0YXRlKiwgSFRNTEZyYW1lU2V0
RWxlbWVudCogZnJhbWVTZXQsIGNvbnN0IElkZW50aWZpZXImIHByb3BlcnR5TmFtZSkKK2Jvb2wg
SlNIVE1MRnJhbWVTZXRFbGVtZW50OjpjYW5HZXRJdGVtc0Zvck5hbWUoRXhlY1N0YXRlKiwgSFRN
TEZyYW1lU2V0RWxlbWVudCogZnJhbWVTZXQsIFByb3BlcnR5TmFtZSBwcm9wZXJ0eU5hbWUpCiB7
Ci0gICAgTm9kZSogZnJhbWUgPSBmcmFtZVNldC0+Y2hpbGRyZW4oKS0+bmFtZWRJdGVtKGlkZW50
aWZpZXJUb0F0b21pY1N0cmluZyhwcm9wZXJ0eU5hbWUpKTsKKyAgICBOb2RlKiBmcmFtZSA9IGZy
YW1lU2V0LT5jaGlsZHJlbigpLT5uYW1lZEl0ZW0ocHJvcGVydHlOYW1lVG9BdG9taWNTdHJpbmco
cHJvcGVydHlOYW1lKSk7CiAgICAgcmV0dXJuIGZyYW1lICYmIGZyYW1lLT5oYXNUYWdOYW1lKGZy
YW1lVGFnKTsKIH0KIAotSlNWYWx1ZSBKU0hUTUxGcmFtZVNldEVsZW1lbnQ6Om5hbWVHZXR0ZXIo
RXhlY1N0YXRlKiBleGVjLCBKU1ZhbHVlIHNsb3RCYXNlLCBjb25zdCBJZGVudGlmaWVyJiBwcm9w
ZXJ0eU5hbWUpCitKU1ZhbHVlIEpTSFRNTEZyYW1lU2V0RWxlbWVudDo6bmFtZUdldHRlcihFeGVj
U3RhdGUqIGV4ZWMsIEpTVmFsdWUgc2xvdEJhc2UsIFByb3BlcnR5TmFtZSBwcm9wZXJ0eU5hbWUp
CiB7CiAgICAgSFRNTEVsZW1lbnQqIGVsZW1lbnQgPSBqc0Nhc3Q8SlNIVE1MRWxlbWVudCo+KGFz
T2JqZWN0KHNsb3RCYXNlKSktPmltcGwoKTsKLSAgICBOb2RlKiBmcmFtZUVsZW1lbnQgPSBlbGVt
ZW50LT5jaGlsZHJlbigpLT5uYW1lZEl0ZW0oaWRlbnRpZmllclRvQXRvbWljU3RyaW5nKHByb3Bl
cnR5TmFtZSkpOworICAgIE5vZGUqIGZyYW1lRWxlbWVudCA9IGVsZW1lbnQtPmNoaWxkcmVuKCkt
Pm5hbWVkSXRlbShwcm9wZXJ0eU5hbWVUb0F0b21pY1N0cmluZyhwcm9wZXJ0eU5hbWUpKTsKICAg
ICBpZiAoRG9jdW1lbnQqIGRvY3VtZW50ID0gc3RhdGljX2Nhc3Q8SFRNTEZyYW1lRWxlbWVudCo+
KGZyYW1lRWxlbWVudCktPmNvbnRlbnREb2N1bWVudCgpKSB7CiAgICAgICAgIGlmIChKU0RPTVdp
bmRvd1NoZWxsKiB3aW5kb3cgPSB0b0pTRE9NV2luZG93U2hlbGwoZG9jdW1lbnQtPmZyYW1lKCks
IGN1cnJlbnRXb3JsZChleGVjKSkpCiAgICAgICAgICAgICByZXR1cm4gd2luZG93OwpJbmRleDog
U291cmNlL1dlYkNvcmUvYmluZGluZ3MvanMvSlNIVE1MT2JqZWN0RWxlbWVudEN1c3RvbS5jcHAK
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PQotLS0gU291cmNlL1dlYkNvcmUvYmluZGluZ3MvanMvSlNIVE1MT2JqZWN0RWxl
bWVudEN1c3RvbS5jcHAJKHJldmlzaW9uIDExNjY2NykKKysrIFNvdXJjZS9XZWJDb3JlL2JpbmRp
bmdzL2pzL0pTSFRNTE9iamVjdEVsZW1lbnRDdXN0b20uY3BwCSh3b3JraW5nIGNvcHkpCkBAIC0z
MywxNyArMzMsMTcgQEAgbmFtZXNwYWNlIFdlYkNvcmUgewogCiB1c2luZyBuYW1lc3BhY2UgSlND
OwogCi1ib29sIEpTSFRNTE9iamVjdEVsZW1lbnQ6OmdldE93blByb3BlcnR5U2xvdERlbGVnYXRl
KEV4ZWNTdGF0ZSogZXhlYywgY29uc3QgSWRlbnRpZmllciYgcHJvcGVydHlOYW1lLCBQcm9wZXJ0
eVNsb3QmIHNsb3QpCitib29sIEpTSFRNTE9iamVjdEVsZW1lbnQ6OmdldE93blByb3BlcnR5U2xv
dERlbGVnYXRlKEV4ZWNTdGF0ZSogZXhlYywgUHJvcGVydHlOYW1lIHByb3BlcnR5TmFtZSwgUHJv
cGVydHlTbG90JiBzbG90KQogewogICAgIHJldHVybiBydW50aW1lT2JqZWN0Q3VzdG9tR2V0T3du
UHJvcGVydHlTbG90KGV4ZWMsIHByb3BlcnR5TmFtZSwgc2xvdCwgdGhpcyk7CiB9CiAKLWJvb2wg
SlNIVE1MT2JqZWN0RWxlbWVudDo6Z2V0T3duUHJvcGVydHlEZXNjcmlwdG9yRGVsZWdhdGUoRXhl
Y1N0YXRlKiBleGVjLCBjb25zdCBJZGVudGlmaWVyJiBwcm9wZXJ0eU5hbWUsIFByb3BlcnR5RGVz
Y3JpcHRvciYgZGVzY3JpcHRvcikKK2Jvb2wgSlNIVE1MT2JqZWN0RWxlbWVudDo6Z2V0T3duUHJv
cGVydHlEZXNjcmlwdG9yRGVsZWdhdGUoRXhlY1N0YXRlKiBleGVjLCBQcm9wZXJ0eU5hbWUgcHJv
cGVydHlOYW1lLCBQcm9wZXJ0eURlc2NyaXB0b3ImIGRlc2NyaXB0b3IpCiB7CiAgICAgcmV0dXJu
IHJ1bnRpbWVPYmplY3RDdXN0b21HZXRPd25Qcm9wZXJ0eURlc2NyaXB0b3IoZXhlYywgcHJvcGVy
dHlOYW1lLCBkZXNjcmlwdG9yLCB0aGlzKTsKIH0KIAotYm9vbCBKU0hUTUxPYmplY3RFbGVtZW50
OjpwdXREZWxlZ2F0ZShFeGVjU3RhdGUqIGV4ZWMsIGNvbnN0IElkZW50aWZpZXImIHByb3BlcnR5
TmFtZSwgSlNWYWx1ZSB2YWx1ZSwgUHV0UHJvcGVydHlTbG90JiBzbG90KQorYm9vbCBKU0hUTUxP
YmplY3RFbGVtZW50OjpwdXREZWxlZ2F0ZShFeGVjU3RhdGUqIGV4ZWMsIFByb3BlcnR5TmFtZSBw
cm9wZXJ0eU5hbWUsIEpTVmFsdWUgdmFsdWUsIFB1dFByb3BlcnR5U2xvdCYgc2xvdCkKIHsKICAg
ICByZXR1cm4gcnVudGltZU9iamVjdEN1c3RvbVB1dChleGVjLCBwcm9wZXJ0eU5hbWUsIHZhbHVl
LCB0aGlzLCBzbG90KTsKIH0KSW5kZXg6IFNvdXJjZS9XZWJDb3JlL2JpbmRpbmdzL2pzL0pTSGlz
dG9yeUN1c3RvbS5jcHAKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL1dlYkNvcmUvYmluZGluZ3MvanMv
SlNIaXN0b3J5Q3VzdG9tLmNwcAkocmV2aXNpb24gMTE2NjY3KQorKysgU291cmNlL1dlYkNvcmUv
YmluZGluZ3MvanMvSlNIaXN0b3J5Q3VzdG9tLmNwcAkod29ya2luZyBjb3B5KQpAQCAtMzgsMjIg
KzM4LDIyIEBAIHVzaW5nIG5hbWVzcGFjZSBKU0M7CiAKIG5hbWVzcGFjZSBXZWJDb3JlIHsKIAot
c3RhdGljIEpTVmFsdWUgbm9uQ2FjaGluZ1N0YXRpY0JhY2tGdW5jdGlvbkdldHRlcihFeGVjU3Rh
dGUqIGV4ZWMsIEpTVmFsdWUsIGNvbnN0IElkZW50aWZpZXImIHByb3BlcnR5TmFtZSkKK3N0YXRp
YyBKU1ZhbHVlIG5vbkNhY2hpbmdTdGF0aWNCYWNrRnVuY3Rpb25HZXR0ZXIoRXhlY1N0YXRlKiBl
eGVjLCBKU1ZhbHVlLCBQcm9wZXJ0eU5hbWUgcHJvcGVydHlOYW1lKQogewotICAgIHJldHVybiBK
U0Z1bmN0aW9uOjpjcmVhdGUoZXhlYywgZXhlYy0+bGV4aWNhbEdsb2JhbE9iamVjdCgpLCAwLCBw
cm9wZXJ0eU5hbWUsIGpzSGlzdG9yeVByb3RvdHlwZUZ1bmN0aW9uQmFjayk7CisgICAgcmV0dXJu
IEpTRnVuY3Rpb246OmNyZWF0ZShleGVjLCBleGVjLT5sZXhpY2FsR2xvYmFsT2JqZWN0KCksIDAs
IHByb3BlcnR5TmFtZS5pbXBsKCksIGpzSGlzdG9yeVByb3RvdHlwZUZ1bmN0aW9uQmFjayk7CiB9
CiAKLXN0YXRpYyBKU1ZhbHVlIG5vbkNhY2hpbmdTdGF0aWNGb3J3YXJkRnVuY3Rpb25HZXR0ZXIo
RXhlY1N0YXRlKiBleGVjLCBKU1ZhbHVlLCBjb25zdCBJZGVudGlmaWVyJiBwcm9wZXJ0eU5hbWUp
CitzdGF0aWMgSlNWYWx1ZSBub25DYWNoaW5nU3RhdGljRm9yd2FyZEZ1bmN0aW9uR2V0dGVyKEV4
ZWNTdGF0ZSogZXhlYywgSlNWYWx1ZSwgUHJvcGVydHlOYW1lIHByb3BlcnR5TmFtZSkKIHsKLSAg
ICByZXR1cm4gSlNGdW5jdGlvbjo6Y3JlYXRlKGV4ZWMsIGV4ZWMtPmxleGljYWxHbG9iYWxPYmpl
Y3QoKSwgMCwgcHJvcGVydHlOYW1lLCBqc0hpc3RvcnlQcm90b3R5cGVGdW5jdGlvbkZvcndhcmQp
OworICAgIHJldHVybiBKU0Z1bmN0aW9uOjpjcmVhdGUoZXhlYywgZXhlYy0+bGV4aWNhbEdsb2Jh
bE9iamVjdCgpLCAwLCBwcm9wZXJ0eU5hbWUuaW1wbCgpLCBqc0hpc3RvcnlQcm90b3R5cGVGdW5j
dGlvbkZvcndhcmQpOwogfQogCi1zdGF0aWMgSlNWYWx1ZSBub25DYWNoaW5nU3RhdGljR29GdW5j
dGlvbkdldHRlcihFeGVjU3RhdGUqIGV4ZWMsIEpTVmFsdWUsIGNvbnN0IElkZW50aWZpZXImIHBy
b3BlcnR5TmFtZSkKK3N0YXRpYyBKU1ZhbHVlIG5vbkNhY2hpbmdTdGF0aWNHb0Z1bmN0aW9uR2V0
dGVyKEV4ZWNTdGF0ZSogZXhlYywgSlNWYWx1ZSwgUHJvcGVydHlOYW1lIHByb3BlcnR5TmFtZSkK
IHsKLSAgICByZXR1cm4gSlNGdW5jdGlvbjo6Y3JlYXRlKGV4ZWMsIGV4ZWMtPmxleGljYWxHbG9i
YWxPYmplY3QoKSwgMSwgcHJvcGVydHlOYW1lLCBqc0hpc3RvcnlQcm90b3R5cGVGdW5jdGlvbkdv
KTsKKyAgICByZXR1cm4gSlNGdW5jdGlvbjo6Y3JlYXRlKGV4ZWMsIGV4ZWMtPmxleGljYWxHbG9i
YWxPYmplY3QoKSwgMSwgcHJvcGVydHlOYW1lLmltcGwoKSwganNIaXN0b3J5UHJvdG90eXBlRnVu
Y3Rpb25Hbyk7CiB9CiAKLWJvb2wgSlNIaXN0b3J5OjpnZXRPd25Qcm9wZXJ0eVNsb3REZWxlZ2F0
ZShFeGVjU3RhdGUqIGV4ZWMsIGNvbnN0IElkZW50aWZpZXImIHByb3BlcnR5TmFtZSwgUHJvcGVy
dHlTbG90JiBzbG90KQorYm9vbCBKU0hpc3Rvcnk6OmdldE93blByb3BlcnR5U2xvdERlbGVnYXRl
KEV4ZWNTdGF0ZSogZXhlYywgUHJvcGVydHlOYW1lIHByb3BlcnR5TmFtZSwgUHJvcGVydHlTbG90
JiBzbG90KQogewogICAgIC8vIFdoZW4gYWNjZXNzaW5nIEhpc3RvcnkgY3Jvc3MtZG9tYWluLCBm
dW5jdGlvbnMgYXJlIGFsd2F5cyB0aGUgbmF0aXZlIGJ1aWx0LWluIG9uZXMuCiAgICAgLy8gU2Vl
IEpTRE9NV2luZG93OjpnZXRPd25Qcm9wZXJ0eVNsb3REZWxlZ2F0ZSBmb3IgYWRkaXRpb25hbCBk
ZXRhaWxzLgpAQCAtOTMsNyArOTMsNyBAQCBib29sIEpTSGlzdG9yeTo6Z2V0T3duUHJvcGVydHlT
bG90RGVsZWdhCiAgICAgcmV0dXJuIHRydWU7CiB9CiAKLWJvb2wgSlNIaXN0b3J5OjpnZXRPd25Q
cm9wZXJ0eURlc2NyaXB0b3JEZWxlZ2F0ZShFeGVjU3RhdGUqIGV4ZWMsIGNvbnN0IElkZW50aWZp
ZXImIHByb3BlcnR5TmFtZSwgUHJvcGVydHlEZXNjcmlwdG9yJiBkZXNjcmlwdG9yKQorYm9vbCBK
U0hpc3Rvcnk6OmdldE93blByb3BlcnR5RGVzY3JpcHRvckRlbGVnYXRlKEV4ZWNTdGF0ZSogZXhl
YywgUHJvcGVydHlOYW1lIHByb3BlcnR5TmFtZSwgUHJvcGVydHlEZXNjcmlwdG9yJiBkZXNjcmlw
dG9yKQogewogICAgIGlmICghaW1wbCgpLT5mcmFtZSgpKSB7CiAgICAgICAgIGRlc2NyaXB0b3Iu
c2V0VW5kZWZpbmVkKCk7CkBAIC0xMzgsNyArMTM4LDcgQEAgYm9vbCBKU0hpc3Rvcnk6OmdldE93
blByb3BlcnR5RGVzY3JpcHRvcgogICAgIHJldHVybiB0cnVlOwogfQogCi1ib29sIEpTSGlzdG9y
eTo6cHV0RGVsZWdhdGUoRXhlY1N0YXRlKiBleGVjLCBjb25zdCBJZGVudGlmaWVyJiwgSlNWYWx1
ZSwgUHV0UHJvcGVydHlTbG90JikKK2Jvb2wgSlNIaXN0b3J5OjpwdXREZWxlZ2F0ZShFeGVjU3Rh
dGUqIGV4ZWMsIFByb3BlcnR5TmFtZSwgSlNWYWx1ZSwgUHV0UHJvcGVydHlTbG90JikKIHsKICAg
ICAvLyBPbmx5IGFsbG93IHB1dHRpbmcgYnkgZnJhbWVzIGluIHRoZSBzYW1lIG9yaWdpbi4KICAg
ICBpZiAoIXNob3VsZEFsbG93QWNjZXNzVG9GcmFtZShleGVjLCBpbXBsKCktPmZyYW1lKCkpKQpA
QCAtMTQ2LDcgKzE0Niw3IEBAIGJvb2wgSlNIaXN0b3J5OjpwdXREZWxlZ2F0ZShFeGVjU3RhdGUq
IGUKICAgICByZXR1cm4gZmFsc2U7CiB9CiAKLWJvb2wgSlNIaXN0b3J5OjpkZWxldGVQcm9wZXJ0
eShKU0NlbGwqIGNlbGwsIEV4ZWNTdGF0ZSogZXhlYywgY29uc3QgSWRlbnRpZmllciYgcHJvcGVy
dHlOYW1lKQorYm9vbCBKU0hpc3Rvcnk6OmRlbGV0ZVByb3BlcnR5KEpTQ2VsbCogY2VsbCwgRXhl
Y1N0YXRlKiBleGVjLCBQcm9wZXJ0eU5hbWUgcHJvcGVydHlOYW1lKQogewogICAgIEpTSGlzdG9y
eSogdGhpc09iamVjdCA9IGpzQ2FzdDxKU0hpc3RvcnkqPihjZWxsKTsKICAgICAvLyBPbmx5IGFs
bG93IGRlbGV0aW5nIGJ5IGZyYW1lcyBpbiB0aGUgc2FtZSBvcmlnaW4uCkluZGV4OiBTb3VyY2Uv
V2ViQ29yZS9iaW5kaW5ncy9qcy9KU0xvY2F0aW9uQ3VzdG9tLmNwcAo9PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBT
b3VyY2UvV2ViQ29yZS9iaW5kaW5ncy9qcy9KU0xvY2F0aW9uQ3VzdG9tLmNwcAkocmV2aXNpb24g
MTE2NjY3KQorKysgU291cmNlL1dlYkNvcmUvYmluZGluZ3MvanMvSlNMb2NhdGlvbkN1c3RvbS5j
cHAJKHdvcmtpbmcgY29weSkKQEAgLTMwLDIyICszMCwyMiBAQCB1c2luZyBuYW1lc3BhY2UgSlND
OwogCiBuYW1lc3BhY2UgV2ViQ29yZSB7CiAKLXN0YXRpYyBKU1ZhbHVlIG5vbkNhY2hpbmdTdGF0
aWNSZXBsYWNlRnVuY3Rpb25HZXR0ZXIoRXhlY1N0YXRlKiBleGVjLCBKU1ZhbHVlLCBjb25zdCBJ
ZGVudGlmaWVyJiBwcm9wZXJ0eU5hbWUpCitzdGF0aWMgSlNWYWx1ZSBub25DYWNoaW5nU3RhdGlj
UmVwbGFjZUZ1bmN0aW9uR2V0dGVyKEV4ZWNTdGF0ZSogZXhlYywgSlNWYWx1ZSwgUHJvcGVydHlO
YW1lIHByb3BlcnR5TmFtZSkKIHsKLSAgICByZXR1cm4gSlNGdW5jdGlvbjo6Y3JlYXRlKGV4ZWMs
IGV4ZWMtPmxleGljYWxHbG9iYWxPYmplY3QoKSwgMSwgcHJvcGVydHlOYW1lLCBqc0xvY2F0aW9u
UHJvdG90eXBlRnVuY3Rpb25SZXBsYWNlKTsKKyAgICByZXR1cm4gSlNGdW5jdGlvbjo6Y3JlYXRl
KGV4ZWMsIGV4ZWMtPmxleGljYWxHbG9iYWxPYmplY3QoKSwgMSwgcHJvcGVydHlOYW1lLmltcGwo
KSwganNMb2NhdGlvblByb3RvdHlwZUZ1bmN0aW9uUmVwbGFjZSk7CiB9CiAKLXN0YXRpYyBKU1Zh
bHVlIG5vbkNhY2hpbmdTdGF0aWNSZWxvYWRGdW5jdGlvbkdldHRlcihFeGVjU3RhdGUqIGV4ZWMs
IEpTVmFsdWUsIGNvbnN0IElkZW50aWZpZXImIHByb3BlcnR5TmFtZSkKK3N0YXRpYyBKU1ZhbHVl
IG5vbkNhY2hpbmdTdGF0aWNSZWxvYWRGdW5jdGlvbkdldHRlcihFeGVjU3RhdGUqIGV4ZWMsIEpT
VmFsdWUsIFByb3BlcnR5TmFtZSBwcm9wZXJ0eU5hbWUpCiB7Ci0gICAgcmV0dXJuIEpTRnVuY3Rp
b246OmNyZWF0ZShleGVjLCBleGVjLT5sZXhpY2FsR2xvYmFsT2JqZWN0KCksIDAsIHByb3BlcnR5
TmFtZSwganNMb2NhdGlvblByb3RvdHlwZUZ1bmN0aW9uUmVsb2FkKTsKKyAgICByZXR1cm4gSlNG
dW5jdGlvbjo6Y3JlYXRlKGV4ZWMsIGV4ZWMtPmxleGljYWxHbG9iYWxPYmplY3QoKSwgMCwgcHJv
cGVydHlOYW1lLmltcGwoKSwganNMb2NhdGlvblByb3RvdHlwZUZ1bmN0aW9uUmVsb2FkKTsKIH0K
IAotc3RhdGljIEpTVmFsdWUgbm9uQ2FjaGluZ1N0YXRpY0Fzc2lnbkZ1bmN0aW9uR2V0dGVyKEV4
ZWNTdGF0ZSogZXhlYywgSlNWYWx1ZSwgY29uc3QgSWRlbnRpZmllciYgcHJvcGVydHlOYW1lKQor
c3RhdGljIEpTVmFsdWUgbm9uQ2FjaGluZ1N0YXRpY0Fzc2lnbkZ1bmN0aW9uR2V0dGVyKEV4ZWNT
dGF0ZSogZXhlYywgSlNWYWx1ZSwgUHJvcGVydHlOYW1lIHByb3BlcnR5TmFtZSkKIHsKLSAgICBy
ZXR1cm4gSlNGdW5jdGlvbjo6Y3JlYXRlKGV4ZWMsIGV4ZWMtPmxleGljYWxHbG9iYWxPYmplY3Qo
KSwgMSwgcHJvcGVydHlOYW1lLCBqc0xvY2F0aW9uUHJvdG90eXBlRnVuY3Rpb25Bc3NpZ24pOwor
ICAgIHJldHVybiBKU0Z1bmN0aW9uOjpjcmVhdGUoZXhlYywgZXhlYy0+bGV4aWNhbEdsb2JhbE9i
amVjdCgpLCAxLCBwcm9wZXJ0eU5hbWUuaW1wbCgpLCBqc0xvY2F0aW9uUHJvdG90eXBlRnVuY3Rp
b25Bc3NpZ24pOwogfQogCi1ib29sIEpTTG9jYXRpb246OmdldE93blByb3BlcnR5U2xvdERlbGVn
YXRlKEV4ZWNTdGF0ZSogZXhlYywgY29uc3QgSWRlbnRpZmllciYgcHJvcGVydHlOYW1lLCBQcm9w
ZXJ0eVNsb3QmIHNsb3QpCitib29sIEpTTG9jYXRpb246OmdldE93blByb3BlcnR5U2xvdERlbGVn
YXRlKEV4ZWNTdGF0ZSogZXhlYywgUHJvcGVydHlOYW1lIHByb3BlcnR5TmFtZSwgUHJvcGVydHlT
bG90JiBzbG90KQogewogICAgIEZyYW1lKiBmcmFtZSA9IGltcGwoKS0+ZnJhbWUoKTsKICAgICBp
ZiAoIWZyYW1lKSB7CkBAIC04Niw3ICs4Niw3IEBAIGJvb2wgSlNMb2NhdGlvbjo6Z2V0T3duUHJv
cGVydHlTbG90RGVsZWcKICAgICByZXR1cm4gdHJ1ZTsKIH0KIAotYm9vbCBKU0xvY2F0aW9uOjpn
ZXRPd25Qcm9wZXJ0eURlc2NyaXB0b3JEZWxlZ2F0ZShFeGVjU3RhdGUqIGV4ZWMsIGNvbnN0IElk
ZW50aWZpZXImIHByb3BlcnR5TmFtZSwgUHJvcGVydHlEZXNjcmlwdG9yJiBkZXNjcmlwdG9yKQor
Ym9vbCBKU0xvY2F0aW9uOjpnZXRPd25Qcm9wZXJ0eURlc2NyaXB0b3JEZWxlZ2F0ZShFeGVjU3Rh
dGUqIGV4ZWMsIFByb3BlcnR5TmFtZSBwcm9wZXJ0eU5hbWUsIFByb3BlcnR5RGVzY3JpcHRvciYg
ZGVzY3JpcHRvcikKIHsKICAgICBGcmFtZSogZnJhbWUgPSBpbXBsKCktPmZyYW1lKCk7CiAgICAg
aWYgKCFmcmFtZSkgewpAQCAtMTI1LDcgKzEyNSw3IEBAIGJvb2wgSlNMb2NhdGlvbjo6Z2V0T3du
UHJvcGVydHlEZXNjcmlwdG8KICAgICByZXR1cm4gdHJ1ZTsKIH0KIAotYm9vbCBKU0xvY2F0aW9u
OjpwdXREZWxlZ2F0ZShFeGVjU3RhdGUqIGV4ZWMsIGNvbnN0IElkZW50aWZpZXImIHByb3BlcnR5
TmFtZSwgSlNWYWx1ZSB2YWx1ZSwgUHV0UHJvcGVydHlTbG90JiBzbG90KQorYm9vbCBKU0xvY2F0
aW9uOjpwdXREZWxlZ2F0ZShFeGVjU3RhdGUqIGV4ZWMsIFByb3BlcnR5TmFtZSBwcm9wZXJ0eU5h
bWUsIEpTVmFsdWUgdmFsdWUsIFB1dFByb3BlcnR5U2xvdCYgc2xvdCkKIHsKICAgICBGcmFtZSog
ZnJhbWUgPSBpbXBsKCktPmZyYW1lKCk7CiAgICAgaWYgKCFmcmFtZSkKQEAgLTE1Miw3ICsxNTIs
NyBAQCBib29sIEpTTG9jYXRpb246OnB1dERlbGVnYXRlKEV4ZWNTdGF0ZSogCiAgICAgcmV0dXJu
IGZhbHNlOwogfQogCi1ib29sIEpTTG9jYXRpb246OmRlbGV0ZVByb3BlcnR5KEpTQ2VsbCogY2Vs
bCwgRXhlY1N0YXRlKiBleGVjLCBjb25zdCBJZGVudGlmaWVyJiBwcm9wZXJ0eU5hbWUpCitib29s
IEpTTG9jYXRpb246OmRlbGV0ZVByb3BlcnR5KEpTQ2VsbCogY2VsbCwgRXhlY1N0YXRlKiBleGVj
LCBQcm9wZXJ0eU5hbWUgcHJvcGVydHlOYW1lKQogewogICAgIEpTTG9jYXRpb24qIHRoaXNPYmpl
Y3QgPSBqc0Nhc3Q8SlNMb2NhdGlvbio+KGNlbGwpOwogICAgIC8vIE9ubHkgYWxsb3cgZGVsZXRp
bmcgYnkgZnJhbWVzIGluIHRoZSBzYW1lIG9yaWdpbi4KQEAgLTE3MCw3ICsxNzAsNyBAQCB2b2lk
IEpTTG9jYXRpb246OmdldE93blByb3BlcnR5TmFtZXMoSlNPCiAgICAgQmFzZTo6Z2V0T3duUHJv
cGVydHlOYW1lcyh0aGlzT2JqZWN0LCBleGVjLCBwcm9wZXJ0eU5hbWVzLCBtb2RlKTsKIH0KIAot
Ym9vbCBKU0xvY2F0aW9uOjpkZWZpbmVPd25Qcm9wZXJ0eShKU09iamVjdCogb2JqZWN0LCBFeGVj
U3RhdGUqIGV4ZWMsIGNvbnN0IElkZW50aWZpZXImIHByb3BlcnR5TmFtZSwgUHJvcGVydHlEZXNj
cmlwdG9yJiBkZXNjcmlwdG9yLCBib29sIHRocm93RXhjZXB0aW9uKQorYm9vbCBKU0xvY2F0aW9u
OjpkZWZpbmVPd25Qcm9wZXJ0eShKU09iamVjdCogb2JqZWN0LCBFeGVjU3RhdGUqIGV4ZWMsIFBy
b3BlcnR5TmFtZSBwcm9wZXJ0eU5hbWUsIFByb3BlcnR5RGVzY3JpcHRvciYgZGVzY3JpcHRvciwg
Ym9vbCB0aHJvd0V4Y2VwdGlvbikKIHsKICAgICBpZiAoZGVzY3JpcHRvci5pc0FjY2Vzc29yRGVz
Y3JpcHRvcigpICYmIChwcm9wZXJ0eU5hbWUgPT0gZXhlYy0+cHJvcGVydHlOYW1lcygpLnRvU3Ry
aW5nIHx8IHByb3BlcnR5TmFtZSA9PSBleGVjLT5wcm9wZXJ0eU5hbWVzKCkudmFsdWVPZikpCiAg
ICAgICAgIHJldHVybiBmYWxzZTsKQEAgLTI3NiwxMiArMjc2LDEyIEBAIEpTVmFsdWUgSlNMb2Nh
dGlvbjo6dG9TdHJpbmdGdW5jdGlvbihFeGUKICAgICByZXR1cm4ganNTdHJpbmcoZXhlYywgaW1w
bCgpLT50b1N0cmluZygpKTsKIH0KIAotYm9vbCBKU0xvY2F0aW9uUHJvdG90eXBlOjpwdXREZWxl
Z2F0ZShFeGVjU3RhdGUqIGV4ZWMsIGNvbnN0IElkZW50aWZpZXImIHByb3BlcnR5TmFtZSwgSlNW
YWx1ZSwgUHV0UHJvcGVydHlTbG90JikKK2Jvb2wgSlNMb2NhdGlvblByb3RvdHlwZTo6cHV0RGVs
ZWdhdGUoRXhlY1N0YXRlKiBleGVjLCBQcm9wZXJ0eU5hbWUgcHJvcGVydHlOYW1lLCBKU1ZhbHVl
LCBQdXRQcm9wZXJ0eVNsb3QmKQogewogICAgIHJldHVybiAocHJvcGVydHlOYW1lID09IGV4ZWMt
PnByb3BlcnR5TmFtZXMoKS50b1N0cmluZyB8fCBwcm9wZXJ0eU5hbWUgPT0gZXhlYy0+cHJvcGVy
dHlOYW1lcygpLnZhbHVlT2YpOwogfQogCi1ib29sIEpTTG9jYXRpb25Qcm90b3R5cGU6OmRlZmlu
ZU93blByb3BlcnR5KEpTT2JqZWN0KiBvYmplY3QsIEV4ZWNTdGF0ZSogZXhlYywgY29uc3QgSWRl
bnRpZmllciYgcHJvcGVydHlOYW1lLCBQcm9wZXJ0eURlc2NyaXB0b3ImIGRlc2NyaXB0b3IsIGJv
b2wgdGhyb3dFeGNlcHRpb24pCitib29sIEpTTG9jYXRpb25Qcm90b3R5cGU6OmRlZmluZU93blBy
b3BlcnR5KEpTT2JqZWN0KiBvYmplY3QsIEV4ZWNTdGF0ZSogZXhlYywgUHJvcGVydHlOYW1lIHBy
b3BlcnR5TmFtZSwgUHJvcGVydHlEZXNjcmlwdG9yJiBkZXNjcmlwdG9yLCBib29sIHRocm93RXhj
ZXB0aW9uKQogewogICAgIGlmIChkZXNjcmlwdG9yLmlzQWNjZXNzb3JEZXNjcmlwdG9yKCkgJiYg
KHByb3BlcnR5TmFtZSA9PSBleGVjLT5wcm9wZXJ0eU5hbWVzKCkudG9TdHJpbmcgfHwgcHJvcGVy
dHlOYW1lID09IGV4ZWMtPnByb3BlcnR5TmFtZXMoKS52YWx1ZU9mKSkKICAgICAgICAgcmV0dXJu
IGZhbHNlOwpJbmRleDogU291cmNlL1dlYkNvcmUvYmluZGluZ3MvanMvSlNOYW1lZE5vZGVNYXBD
dXN0b20uY3BwCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9XZWJDb3JlL2JpbmRpbmdzL2pzL0pTTmFt
ZWROb2RlTWFwQ3VzdG9tLmNwcAkocmV2aXNpb24gMTE2NjY3KQorKysgU291cmNlL1dlYkNvcmUv
YmluZGluZ3MvanMvSlNOYW1lZE5vZGVNYXBDdXN0b20uY3BwCSh3b3JraW5nIGNvcHkpCkBAIC0z
NSwxNSArMzUsMTUgQEAgdXNpbmcgbmFtZXNwYWNlIEpTQzsKIAogbmFtZXNwYWNlIFdlYkNvcmUg
ewogCi1ib29sIEpTTmFtZWROb2RlTWFwOjpjYW5HZXRJdGVtc0Zvck5hbWUoRXhlY1N0YXRlKiwg
TmFtZWROb2RlTWFwKiBpbXBsLCBjb25zdCBJZGVudGlmaWVyJiBwcm9wZXJ0eU5hbWUpCitib29s
IEpTTmFtZWROb2RlTWFwOjpjYW5HZXRJdGVtc0Zvck5hbWUoRXhlY1N0YXRlKiwgTmFtZWROb2Rl
TWFwKiBpbXBsLCBQcm9wZXJ0eU5hbWUgcHJvcGVydHlOYW1lKQogewotICAgIHJldHVybiBpbXBs
LT5nZXROYW1lZEl0ZW0oaWRlbnRpZmllclRvU3RyaW5nKHByb3BlcnR5TmFtZSkpOworICAgIHJl
dHVybiBpbXBsLT5nZXROYW1lZEl0ZW0ocHJvcGVydHlOYW1lVG9TdHJpbmcocHJvcGVydHlOYW1l
KSk7CiB9CiAKLUpTVmFsdWUgSlNOYW1lZE5vZGVNYXA6Om5hbWVHZXR0ZXIoRXhlY1N0YXRlKiBl
eGVjLCBKU1ZhbHVlIHNsb3RCYXNlLCBjb25zdCBJZGVudGlmaWVyJiBwcm9wZXJ0eU5hbWUpCitK
U1ZhbHVlIEpTTmFtZWROb2RlTWFwOjpuYW1lR2V0dGVyKEV4ZWNTdGF0ZSogZXhlYywgSlNWYWx1
ZSBzbG90QmFzZSwgUHJvcGVydHlOYW1lIHByb3BlcnR5TmFtZSkKIHsKICAgICBKU05hbWVkTm9k
ZU1hcCogdGhpc09iaiA9IGpzQ2FzdDxKU05hbWVkTm9kZU1hcCo+KGFzT2JqZWN0KHNsb3RCYXNl
KSk7Ci0gICAgcmV0dXJuIHRvSlMoZXhlYywgdGhpc09iai0+Z2xvYmFsT2JqZWN0KCksIHRoaXNP
YmotPmltcGwoKS0+Z2V0TmFtZWRJdGVtKGlkZW50aWZpZXJUb1N0cmluZyhwcm9wZXJ0eU5hbWUp
KSk7CisgICAgcmV0dXJuIHRvSlMoZXhlYywgdGhpc09iai0+Z2xvYmFsT2JqZWN0KCksIHRoaXNP
YmotPmltcGwoKS0+Z2V0TmFtZWRJdGVtKHByb3BlcnR5TmFtZVRvU3RyaW5nKHByb3BlcnR5TmFt
ZSkpKTsKIH0KIAogdm9pZCBKU05hbWVkTm9kZU1hcDo6dmlzaXRDaGlsZHJlbihKU0NlbGwqIGNl
bGwsIFNsb3RWaXNpdG9yJiB2aXNpdG9yKQpJbmRleDogU291cmNlL1dlYkNvcmUvYmluZGluZ3Mv
anMvSlNOb2RlTGlzdEN1c3RvbS5jcHAKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL1dlYkNvcmUvYmlu
ZGluZ3MvanMvSlNOb2RlTGlzdEN1c3RvbS5jcHAJKHJldmlzaW9uIDExNjY2NykKKysrIFNvdXJj
ZS9XZWJDb3JlL2JpbmRpbmdzL2pzL0pTTm9kZUxpc3RDdXN0b20uY3BwCSh3b3JraW5nIGNvcHkp
CkBAIC00NiwxNSArNDYsMTUgQEAgYm9vbCBKU05vZGVMaXN0T3duZXI6OmlzUmVhY2hhYmxlRnJv
bU9wYQogICAgIHJldHVybiB2aXNpdG9yLmNvbnRhaW5zT3BhcXVlUm9vdChyb290KHN0YXRpY19j
YXN0PER5bmFtaWNOb2RlTGlzdCo+KGpzTm9kZUxpc3QtPmltcGwoKSktPm5vZGUoKSkpOwogfQog
Ci1ib29sIEpTTm9kZUxpc3Q6OmNhbkdldEl0ZW1zRm9yTmFtZShFeGVjU3RhdGUqLCBOb2RlTGlz
dCogaW1wbCwgY29uc3QgSWRlbnRpZmllciYgcHJvcGVydHlOYW1lKQorYm9vbCBKU05vZGVMaXN0
OjpjYW5HZXRJdGVtc0Zvck5hbWUoRXhlY1N0YXRlKiwgTm9kZUxpc3QqIGltcGwsIFByb3BlcnR5
TmFtZSBwcm9wZXJ0eU5hbWUpCiB7Ci0gICAgcmV0dXJuIGltcGwtPml0ZW1XaXRoTmFtZShpZGVu
dGlmaWVyVG9BdG9taWNTdHJpbmcocHJvcGVydHlOYW1lKSk7CisgICAgcmV0dXJuIGltcGwtPml0
ZW1XaXRoTmFtZShwcm9wZXJ0eU5hbWVUb0F0b21pY1N0cmluZyhwcm9wZXJ0eU5hbWUpKTsKIH0K
IAotSlNWYWx1ZSBKU05vZGVMaXN0OjpuYW1lR2V0dGVyKEV4ZWNTdGF0ZSogZXhlYywgSlNWYWx1
ZSBzbG90QmFzZSwgY29uc3QgSWRlbnRpZmllciYgcHJvcGVydHlOYW1lKQorSlNWYWx1ZSBKU05v
ZGVMaXN0OjpuYW1lR2V0dGVyKEV4ZWNTdGF0ZSogZXhlYywgSlNWYWx1ZSBzbG90QmFzZSwgUHJv
cGVydHlOYW1lIHByb3BlcnR5TmFtZSkKIHsKICAgICBKU05vZGVMaXN0KiB0aGlzT2JqID0ganND
YXN0PEpTTm9kZUxpc3QqPihhc09iamVjdChzbG90QmFzZSkpOwotICAgIHJldHVybiB0b0pTKGV4
ZWMsIHRoaXNPYmotPmdsb2JhbE9iamVjdCgpLCB0aGlzT2JqLT5pbXBsKCktPml0ZW1XaXRoTmFt
ZShpZGVudGlmaWVyVG9BdG9taWNTdHJpbmcocHJvcGVydHlOYW1lKSkpOworICAgIHJldHVybiB0
b0pTKGV4ZWMsIHRoaXNPYmotPmdsb2JhbE9iamVjdCgpLCB0aGlzT2JqLT5pbXBsKCktPml0ZW1X
aXRoTmFtZShwcm9wZXJ0eU5hbWVUb0F0b21pY1N0cmluZyhwcm9wZXJ0eU5hbWUpKSk7CiB9CiAK
IH0gLy8gbmFtZXNwYWNlIFdlYkNvcmUKSW5kZXg6IFNvdXJjZS9XZWJDb3JlL2JpbmRpbmdzL2pz
L0pTUGx1Z2luRWxlbWVudEZ1bmN0aW9ucy5jcHAKPT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL1dlYkNv
cmUvYmluZGluZ3MvanMvSlNQbHVnaW5FbGVtZW50RnVuY3Rpb25zLmNwcAkocmV2aXNpb24gMTE2
NjY3KQorKysgU291cmNlL1dlYkNvcmUvYmluZGluZ3MvanMvSlNQbHVnaW5FbGVtZW50RnVuY3Rp
b25zLmNwcAkod29ya2luZyBjb3B5KQpAQCAtMTAwLDcgKzEwMCw3IEBAIEpTT2JqZWN0KiBwbHVn
aW5TY3JpcHRPYmplY3QoRXhlY1N0YXRlKiAKICAgICByZXR1cm4gaW5zdGFuY2UtPmNyZWF0ZVJ1
bnRpbWVPYmplY3QoZXhlYyk7CiB9CiAgICAgCi1KU1ZhbHVlIHJ1bnRpbWVPYmplY3RQcm9wZXJ0
eUdldHRlcihFeGVjU3RhdGUqIGV4ZWMsIEpTVmFsdWUgc2xvdEJhc2UsIGNvbnN0IElkZW50aWZp
ZXImIHByb3BlcnR5TmFtZSkKK0pTVmFsdWUgcnVudGltZU9iamVjdFByb3BlcnR5R2V0dGVyKEV4
ZWNTdGF0ZSogZXhlYywgSlNWYWx1ZSBzbG90QmFzZSwgUHJvcGVydHlOYW1lIHByb3BlcnR5TmFt
ZSkKIHsKICAgICBKU0hUTUxFbGVtZW50KiBlbGVtZW50ID0ganNDYXN0PEpTSFRNTEVsZW1lbnQq
Pihhc09iamVjdChzbG90QmFzZSkpOwogICAgIEpTT2JqZWN0KiBzY3JpcHRPYmplY3QgPSBwbHVn
aW5TY3JpcHRPYmplY3QoZXhlYywgZWxlbWVudCk7CkBAIC0xMTAsNyArMTEwLDcgQEAgSlNWYWx1
ZSBydW50aW1lT2JqZWN0UHJvcGVydHlHZXR0ZXIoRXhlYwogICAgIHJldHVybiBzY3JpcHRPYmpl
Y3QtPmdldChleGVjLCBwcm9wZXJ0eU5hbWUpOwogfQogCi1ib29sIHJ1bnRpbWVPYmplY3RDdXN0
b21HZXRPd25Qcm9wZXJ0eVNsb3QoRXhlY1N0YXRlKiBleGVjLCBjb25zdCBJZGVudGlmaWVyJiBw
cm9wZXJ0eU5hbWUsIFByb3BlcnR5U2xvdCYgc2xvdCwgSlNIVE1MRWxlbWVudCogZWxlbWVudCkK
K2Jvb2wgcnVudGltZU9iamVjdEN1c3RvbUdldE93blByb3BlcnR5U2xvdChFeGVjU3RhdGUqIGV4
ZWMsIFByb3BlcnR5TmFtZSBwcm9wZXJ0eU5hbWUsIFByb3BlcnR5U2xvdCYgc2xvdCwgSlNIVE1M
RWxlbWVudCogZWxlbWVudCkKIHsKICAgICBKU09iamVjdCogc2NyaXB0T2JqZWN0ID0gcGx1Z2lu
U2NyaXB0T2JqZWN0KGV4ZWMsIGVsZW1lbnQpOwogICAgIGlmICghc2NyaXB0T2JqZWN0KQpAQCAt
MTIyLDcgKzEyMiw3IEBAIGJvb2wgcnVudGltZU9iamVjdEN1c3RvbUdldE93blByb3BlcnR5U2wK
ICAgICByZXR1cm4gdHJ1ZTsKIH0KIAotYm9vbCBydW50aW1lT2JqZWN0Q3VzdG9tR2V0T3duUHJv
cGVydHlEZXNjcmlwdG9yKEV4ZWNTdGF0ZSogZXhlYywgY29uc3QgSWRlbnRpZmllciYgcHJvcGVy
dHlOYW1lLCBQcm9wZXJ0eURlc2NyaXB0b3ImIGRlc2NyaXB0b3IsIEpTSFRNTEVsZW1lbnQqIGVs
ZW1lbnQpCitib29sIHJ1bnRpbWVPYmplY3RDdXN0b21HZXRPd25Qcm9wZXJ0eURlc2NyaXB0b3Io
RXhlY1N0YXRlKiBleGVjLCBQcm9wZXJ0eU5hbWUgcHJvcGVydHlOYW1lLCBQcm9wZXJ0eURlc2Ny
aXB0b3ImIGRlc2NyaXB0b3IsIEpTSFRNTEVsZW1lbnQqIGVsZW1lbnQpCiB7CiAgICAgSlNPYmpl
Y3QqIHNjcmlwdE9iamVjdCA9IHBsdWdpblNjcmlwdE9iamVjdChleGVjLCBlbGVtZW50KTsKICAg
ICBpZiAoIXNjcmlwdE9iamVjdCkKQEAgLTEzOCw3ICsxMzgsNyBAQCBib29sIHJ1bnRpbWVPYmpl
Y3RDdXN0b21HZXRPd25Qcm9wZXJ0eURlCiAgICAgcmV0dXJuIHRydWU7CiB9CiAKLWJvb2wgcnVu
dGltZU9iamVjdEN1c3RvbVB1dChFeGVjU3RhdGUqIGV4ZWMsIGNvbnN0IElkZW50aWZpZXImIHBy
b3BlcnR5TmFtZSwgSlNWYWx1ZSB2YWx1ZSwgSlNIVE1MRWxlbWVudCogZWxlbWVudCwgUHV0UHJv
cGVydHlTbG90JiBzbG90KQorYm9vbCBydW50aW1lT2JqZWN0Q3VzdG9tUHV0KEV4ZWNTdGF0ZSog
ZXhlYywgUHJvcGVydHlOYW1lIHByb3BlcnR5TmFtZSwgSlNWYWx1ZSB2YWx1ZSwgSlNIVE1MRWxl
bWVudCogZWxlbWVudCwgUHV0UHJvcGVydHlTbG90JiBzbG90KQogewogICAgIEpTT2JqZWN0KiBz
Y3JpcHRPYmplY3QgPSBwbHVnaW5TY3JpcHRPYmplY3QoZXhlYywgZWxlbWVudCk7CiAgICAgaWYg
KCFzY3JpcHRPYmplY3QpCkluZGV4OiBTb3VyY2UvV2ViQ29yZS9iaW5kaW5ncy9qcy9KU1BsdWdp
bkVsZW1lbnRGdW5jdGlvbnMuaAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2ViQ29yZS9iaW5kaW5n
cy9qcy9KU1BsdWdpbkVsZW1lbnRGdW5jdGlvbnMuaAkocmV2aXNpb24gMTE2NjY3KQorKysgU291
cmNlL1dlYkNvcmUvYmluZGluZ3MvanMvSlNQbHVnaW5FbGVtZW50RnVuY3Rpb25zLmgJKHdvcmtp
bmcgY29weSkKQEAgLTM4LDEwICszOCwxMCBAQCBuYW1lc3BhY2UgV2ViQ29yZSB7CiAgICAgSlND
OjpCaW5kaW5nczo6SW5zdGFuY2UqIHBsdWdpbkluc3RhbmNlKE5vZGUqKTsKICAgICBKU0M6OkpT
T2JqZWN0KiBwbHVnaW5TY3JpcHRPYmplY3QoSlNDOjpFeGVjU3RhdGUqIGV4ZWMsIEpTSFRNTEVs
ZW1lbnQqIGpzSFRNTEVsZW1lbnQpOwogCi0gICAgSlNDOjpKU1ZhbHVlIHJ1bnRpbWVPYmplY3RQ
cm9wZXJ0eUdldHRlcihKU0M6OkV4ZWNTdGF0ZSosIEpTQzo6SlNWYWx1ZSwgY29uc3QgSlNDOjpJ
ZGVudGlmaWVyJik7Ci0gICAgYm9vbCBydW50aW1lT2JqZWN0Q3VzdG9tR2V0T3duUHJvcGVydHlT
bG90KEpTQzo6RXhlY1N0YXRlKiwgY29uc3QgSlNDOjpJZGVudGlmaWVyJiwgSlNDOjpQcm9wZXJ0
eVNsb3QmLCBKU0hUTUxFbGVtZW50Kik7Ci0gICAgYm9vbCBydW50aW1lT2JqZWN0Q3VzdG9tR2V0
T3duUHJvcGVydHlEZXNjcmlwdG9yKEpTQzo6RXhlY1N0YXRlKiwgY29uc3QgSlNDOjpJZGVudGlm
aWVyJiwgSlNDOjpQcm9wZXJ0eURlc2NyaXB0b3ImLCBKU0hUTUxFbGVtZW50Kik7Ci0gICAgYm9v
bCBydW50aW1lT2JqZWN0Q3VzdG9tUHV0KEpTQzo6RXhlY1N0YXRlKiwgY29uc3QgSlNDOjpJZGVu
dGlmaWVyJiwgSlNDOjpKU1ZhbHVlLCBKU0hUTUxFbGVtZW50KiwgSlNDOjpQdXRQcm9wZXJ0eVNs
b3QmKTsKKyAgICBKU0M6OkpTVmFsdWUgcnVudGltZU9iamVjdFByb3BlcnR5R2V0dGVyKEpTQzo6
RXhlY1N0YXRlKiwgSlNDOjpKU1ZhbHVlLCBKU0M6OlByb3BlcnR5TmFtZSk7CisgICAgYm9vbCBy
dW50aW1lT2JqZWN0Q3VzdG9tR2V0T3duUHJvcGVydHlTbG90KEpTQzo6RXhlY1N0YXRlKiwgSlND
OjpQcm9wZXJ0eU5hbWUsIEpTQzo6UHJvcGVydHlTbG90JiwgSlNIVE1MRWxlbWVudCopOworICAg
IGJvb2wgcnVudGltZU9iamVjdEN1c3RvbUdldE93blByb3BlcnR5RGVzY3JpcHRvcihKU0M6OkV4
ZWNTdGF0ZSosIEpTQzo6UHJvcGVydHlOYW1lLCBKU0M6OlByb3BlcnR5RGVzY3JpcHRvciYsIEpT
SFRNTEVsZW1lbnQqKTsKKyAgICBib29sIHJ1bnRpbWVPYmplY3RDdXN0b21QdXQoSlNDOjpFeGVj
U3RhdGUqLCBKU0M6OlByb3BlcnR5TmFtZSwgSlNDOjpKU1ZhbHVlLCBKU0hUTUxFbGVtZW50Kiwg
SlNDOjpQdXRQcm9wZXJ0eVNsb3QmKTsKICAgICBKU0M6OkNhbGxUeXBlIHJ1bnRpbWVPYmplY3RH
ZXRDYWxsRGF0YShKU0hUTUxFbGVtZW50KiwgSlNDOjpDYWxsRGF0YSYpOwogCiB9IC8vIG5hbWVz
cGFjZSBXZWJDb3JlCkluZGV4OiBTb3VyY2UvV2ViQ29yZS9iaW5kaW5ncy9qcy9KU1N0b3JhZ2VD
dXN0b20uY3BwCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9XZWJDb3JlL2JpbmRpbmdzL2pzL0pTU3Rv
cmFnZUN1c3RvbS5jcHAJKHJldmlzaW9uIDExNjY2NykKKysrIFNvdXJjZS9XZWJDb3JlL2JpbmRp
bmdzL2pzL0pTU3RvcmFnZUN1c3RvbS5jcHAJKHdvcmtpbmcgY29weSkKQEAgLTM0LDEyICszNCwx
MiBAQCB1c2luZyBuYW1lc3BhY2UgSlNDOwogCiBuYW1lc3BhY2UgV2ViQ29yZSB7CiAKLWJvb2wg
SlNTdG9yYWdlOjpjYW5HZXRJdGVtc0Zvck5hbWUoRXhlY1N0YXRlKiwgU3RvcmFnZSogaW1wbCwg
Y29uc3QgSWRlbnRpZmllciYgcHJvcGVydHlOYW1lKQorYm9vbCBKU1N0b3JhZ2U6OmNhbkdldEl0
ZW1zRm9yTmFtZShFeGVjU3RhdGUqLCBTdG9yYWdlKiBpbXBsLCBQcm9wZXJ0eU5hbWUgcHJvcGVy
dHlOYW1lKQogewotICAgIHJldHVybiBpbXBsLT5jb250YWlucyhpZGVudGlmaWVyVG9TdHJpbmco
cHJvcGVydHlOYW1lKSk7CisgICAgcmV0dXJuIGltcGwtPmNvbnRhaW5zKHByb3BlcnR5TmFtZVRv
U3RyaW5nKHByb3BlcnR5TmFtZSkpOwogfQogCi1KU1ZhbHVlIEpTU3RvcmFnZTo6bmFtZUdldHRl
cihFeGVjU3RhdGUqIGV4ZWMsIEpTVmFsdWUgc2xvdEJhc2UsIGNvbnN0IElkZW50aWZpZXImIHBy
b3BlcnR5TmFtZSkKK0pTVmFsdWUgSlNTdG9yYWdlOjpuYW1lR2V0dGVyKEV4ZWNTdGF0ZSogZXhl
YywgSlNWYWx1ZSBzbG90QmFzZSwgUHJvcGVydHlOYW1lIHByb3BlcnR5TmFtZSkKIHsKICAgICBK
U1N0b3JhZ2UqIHRoaXNPYmogPSBqc0Nhc3Q8SlNTdG9yYWdlKj4oYXNPYmplY3Qoc2xvdEJhc2Up
KTsKICAgICAgICAgCkBAIC00NywxMCArNDcsMTAgQEAgSlNWYWx1ZSBKU1N0b3JhZ2U6Om5hbWVH
ZXR0ZXIoRXhlY1N0YXRlKgogICAgIGlmIChwcm90b3R5cGUuaXNPYmplY3QoKSAmJiBhc09iamVj
dChwcm90b3R5cGUpLT5oYXNQcm9wZXJ0eShleGVjLCBwcm9wZXJ0eU5hbWUpKQogICAgICAgICBy
ZXR1cm4gYXNPYmplY3QocHJvdG90eXBlKS0+Z2V0KGV4ZWMsIHByb3BlcnR5TmFtZSk7CiAgCi0g
ICAgcmV0dXJuIGpzU3RyaW5nT3JOdWxsKGV4ZWMsIHRoaXNPYmotPmltcGwoKS0+Z2V0SXRlbShp
ZGVudGlmaWVyVG9TdHJpbmcocHJvcGVydHlOYW1lKSkpOworICAgIHJldHVybiBqc1N0cmluZ09y
TnVsbChleGVjLCB0aGlzT2JqLT5pbXBsKCktPmdldEl0ZW0ocHJvcGVydHlOYW1lVG9TdHJpbmco
cHJvcGVydHlOYW1lKSkpOwogfQogCi1ib29sIEpTU3RvcmFnZTo6ZGVsZXRlUHJvcGVydHkoSlND
ZWxsKiBjZWxsLCBFeGVjU3RhdGUqIGV4ZWMsIGNvbnN0IElkZW50aWZpZXImIHByb3BlcnR5TmFt
ZSkKK2Jvb2wgSlNTdG9yYWdlOjpkZWxldGVQcm9wZXJ0eShKU0NlbGwqIGNlbGwsIEV4ZWNTdGF0
ZSogZXhlYywgUHJvcGVydHlOYW1lIHByb3BlcnR5TmFtZSkKIHsKICAgICBKU1N0b3JhZ2UqIHRo
aXNPYmplY3QgPSBqc0Nhc3Q8SlNTdG9yYWdlKj4oY2VsbCk7CiAgICAgLy8gT25seSBwZXJmb3Jt
IHRoZSBjdXN0b20gZGVsZXRlIGlmIHRoZSBvYmplY3QgZG9lc24ndCBoYXZlIGEgbmF0aXZlIHBy
b3BlcnR5IGJ5IHRoaXMgbmFtZS4KQEAgLTY0LDcgKzY0LDcgQEAgYm9vbCBKU1N0b3JhZ2U6OmRl
bGV0ZVByb3BlcnR5KEpTQ2VsbCogYwogICAgIGlmIChwcm90b3R5cGUuaXNPYmplY3QoKSAmJiBh
c09iamVjdChwcm90b3R5cGUpLT5oYXNQcm9wZXJ0eShleGVjLCBwcm9wZXJ0eU5hbWUpKQogICAg
ICAgICByZXR1cm4gZmFsc2U7CiAKLSAgICB0aGlzT2JqZWN0LT5tX2ltcGwtPnJlbW92ZUl0ZW0o
aWRlbnRpZmllclRvU3RyaW5nKHByb3BlcnR5TmFtZSkpOworICAgIHRoaXNPYmplY3QtPm1faW1w
bC0+cmVtb3ZlSXRlbShwcm9wZXJ0eU5hbWVUb1N0cmluZyhwcm9wZXJ0eU5hbWUpKTsKICAgICBy
ZXR1cm4gdHJ1ZTsKIH0KIApAQCAtNzgsNyArNzgsNyBAQCB2b2lkIEpTU3RvcmFnZTo6Z2V0T3du
UHJvcGVydHlOYW1lcyhKU09iCiAgICAgQmFzZTo6Z2V0T3duUHJvcGVydHlOYW1lcyh0aGlzT2Jq
ZWN0LCBleGVjLCBwcm9wZXJ0eU5hbWVzLCBtb2RlKTsKIH0KIAotYm9vbCBKU1N0b3JhZ2U6OnB1
dERlbGVnYXRlKEV4ZWNTdGF0ZSogZXhlYywgY29uc3QgSWRlbnRpZmllciYgcHJvcGVydHlOYW1l
LCBKU1ZhbHVlIHZhbHVlLCBQdXRQcm9wZXJ0eVNsb3QmKQorYm9vbCBKU1N0b3JhZ2U6OnB1dERl
bGVnYXRlKEV4ZWNTdGF0ZSogZXhlYywgUHJvcGVydHlOYW1lIHByb3BlcnR5TmFtZSwgSlNWYWx1
ZSB2YWx1ZSwgUHV0UHJvcGVydHlTbG90JikKIHsKICAgICAvLyBPbmx5IHBlcmZvcm0gdGhlIGN1
c3RvbSBwdXQgaWYgdGhlIG9iamVjdCBkb2Vzbid0IGhhdmUgYSBuYXRpdmUgcHJvcGVydHkgYnkg
dGhpcyBuYW1lLgogICAgIC8vIFNpbmNlIGhhc1Byb3BlcnR5KCkgd291bGQgZW5kIHVwIGNhbGxp
bmcgY2FuR2V0SXRlbXNGb3JOYW1lKCkgYW5kIGJlIGZvb2xlZCwgd2UgbmVlZCB0byBjaGVjawpA
QCAtOTYsNyArOTYsNyBAQCBib29sIEpTU3RvcmFnZTo6cHV0RGVsZWdhdGUoRXhlY1N0YXRlKiBl
CiAgICAgICAgIHJldHVybiB0cnVlOwogICAgIAogICAgIEV4Y2VwdGlvbkNvZGUgZWMgPSAwOwot
ICAgIGltcGwoKS0+c2V0SXRlbShpZGVudGlmaWVyVG9TdHJpbmcocHJvcGVydHlOYW1lKSwgc3Ry
aW5nVmFsdWUsIGVjKTsKKyAgICBpbXBsKCktPnNldEl0ZW0ocHJvcGVydHlOYW1lVG9TdHJpbmco
cHJvcGVydHlOYW1lKSwgc3RyaW5nVmFsdWUsIGVjKTsKICAgICBzZXRET01FeGNlcHRpb24oZXhl
YywgZWMpOwogCiAgICAgcmV0dXJuIHRydWU7CkluZGV4OiBTb3VyY2UvV2ViQ29yZS9iaW5kaW5n
cy9qcy9KU1N0eWxlU2hlZXRMaXN0Q3VzdG9tLmNwcAo9PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2Vi
Q29yZS9iaW5kaW5ncy9qcy9KU1N0eWxlU2hlZXRMaXN0Q3VzdG9tLmNwcAkocmV2aXNpb24gMTE2
NjY3KQorKysgU291cmNlL1dlYkNvcmUvYmluZGluZ3MvanMvSlNTdHlsZVNoZWV0TGlzdEN1c3Rv
bS5jcHAJKHdvcmtpbmcgY29weSkKQEAgLTM1LDE1ICszNSwxNSBAQCB1c2luZyBuYW1lc3BhY2Ug
SlNDOwogCiBuYW1lc3BhY2UgV2ViQ29yZSB7CiAKLWJvb2wgSlNTdHlsZVNoZWV0TGlzdDo6Y2Fu
R2V0SXRlbXNGb3JOYW1lKEV4ZWNTdGF0ZSosIFN0eWxlU2hlZXRMaXN0KiBzdHlsZVNoZWV0TGlz
dCwgY29uc3QgSWRlbnRpZmllciYgcHJvcGVydHlOYW1lKQorYm9vbCBKU1N0eWxlU2hlZXRMaXN0
OjpjYW5HZXRJdGVtc0Zvck5hbWUoRXhlY1N0YXRlKiwgU3R5bGVTaGVldExpc3QqIHN0eWxlU2hl
ZXRMaXN0LCBQcm9wZXJ0eU5hbWUgcHJvcGVydHlOYW1lKQogewotICAgIHJldHVybiBzdHlsZVNo
ZWV0TGlzdC0+Z2V0TmFtZWRJdGVtKGlkZW50aWZpZXJUb1N0cmluZyhwcm9wZXJ0eU5hbWUpKTsK
KyAgICByZXR1cm4gc3R5bGVTaGVldExpc3QtPmdldE5hbWVkSXRlbShwcm9wZXJ0eU5hbWVUb1N0
cmluZyhwcm9wZXJ0eU5hbWUpKTsKIH0KIAotSlNWYWx1ZSBKU1N0eWxlU2hlZXRMaXN0OjpuYW1l
R2V0dGVyKEV4ZWNTdGF0ZSogZXhlYywgSlNWYWx1ZSBzbG90QmFzZSwgY29uc3QgSWRlbnRpZmll
ciYgcHJvcGVydHlOYW1lKQorSlNWYWx1ZSBKU1N0eWxlU2hlZXRMaXN0OjpuYW1lR2V0dGVyKEV4
ZWNTdGF0ZSogZXhlYywgSlNWYWx1ZSBzbG90QmFzZSwgUHJvcGVydHlOYW1lIHByb3BlcnR5TmFt
ZSkKIHsKICAgICBKU1N0eWxlU2hlZXRMaXN0KiB0aGlzT2JqID0ganNDYXN0PEpTU3R5bGVTaGVl
dExpc3QqPihhc09iamVjdChzbG90QmFzZSkpOwotICAgIEhUTUxTdHlsZUVsZW1lbnQqIGVsZW1l
bnQgPSB0aGlzT2JqLT5pbXBsKCktPmdldE5hbWVkSXRlbShpZGVudGlmaWVyVG9TdHJpbmcocHJv
cGVydHlOYW1lKSk7CisgICAgSFRNTFN0eWxlRWxlbWVudCogZWxlbWVudCA9IHRoaXNPYmotPmlt
cGwoKS0+Z2V0TmFtZWRJdGVtKHByb3BlcnR5TmFtZVRvU3RyaW5nKHByb3BlcnR5TmFtZSkpOwog
ICAgIEFTU0VSVChlbGVtZW50KTsKICAgICByZXR1cm4gdG9KUyhleGVjLCB0aGlzT2JqLT5nbG9i
YWxPYmplY3QoKSwgZWxlbWVudC0+c2hlZXQoKSk7CiB9CkluZGV4OiBTb3VyY2UvV2ViQ29yZS9i
aW5kaW5ncy9qcy9KU1dvcmtlckNvbnRleHRDdXN0b20uY3BwCj09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJj
ZS9XZWJDb3JlL2JpbmRpbmdzL2pzL0pTV29ya2VyQ29udGV4dEN1c3RvbS5jcHAJKHJldmlzaW9u
IDExNjY2NykKKysrIFNvdXJjZS9XZWJDb3JlL2JpbmRpbmdzL2pzL0pTV29ya2VyQ29udGV4dEN1
c3RvbS5jcHAJKHdvcmtpbmcgY29weSkKQEAgLTY5LDcgKzY5LDcgQEAgdm9pZCBKU1dvcmtlckNv
bnRleHQ6OnZpc2l0Q2hpbGRyZW4oSlNDZQogICAgIHRoaXNPYmplY3QtPmltcGwoKS0+dmlzaXRK
U0V2ZW50TGlzdGVuZXJzKHZpc2l0b3IpOwogfQogCi1ib29sIEpTV29ya2VyQ29udGV4dDo6Z2V0
T3duUHJvcGVydHlTbG90RGVsZWdhdGUoRXhlY1N0YXRlKiBleGVjLCBjb25zdCBJZGVudGlmaWVy
JiBwcm9wZXJ0eU5hbWUsIFByb3BlcnR5U2xvdCYgc2xvdCkKK2Jvb2wgSlNXb3JrZXJDb250ZXh0
OjpnZXRPd25Qcm9wZXJ0eVNsb3REZWxlZ2F0ZShFeGVjU3RhdGUqIGV4ZWMsIFByb3BlcnR5TmFt
ZSBwcm9wZXJ0eU5hbWUsIFByb3BlcnR5U2xvdCYgc2xvdCkKIHsKICAgICAvLyBMb29rIGZvciBv
dmVycmlkZXMgYmVmb3JlIGxvb2tpbmcgYXQgYW55IG9mIG91ciBvd24gcHJvcGVydGllcy4KICAg
ICBpZiAoSlNHbG9iYWxPYmplY3Q6OmdldE93blByb3BlcnR5U2xvdCh0aGlzLCBleGVjLCBwcm9w
ZXJ0eU5hbWUsIHNsb3QpKQpAQCAtNzcsNyArNzcsNyBAQCBib29sIEpTV29ya2VyQ29udGV4dDo6
Z2V0T3duUHJvcGVydHlTbG90CiAgICAgcmV0dXJuIGZhbHNlOwogfQogCi1ib29sIEpTV29ya2Vy
Q29udGV4dDo6Z2V0T3duUHJvcGVydHlEZXNjcmlwdG9yRGVsZWdhdGUoRXhlY1N0YXRlKiBleGVj
LCBjb25zdCBJZGVudGlmaWVyJiBwcm9wZXJ0eU5hbWUsIFByb3BlcnR5RGVzY3JpcHRvciYgZGVz
Y3JpcHRvcikKK2Jvb2wgSlNXb3JrZXJDb250ZXh0OjpnZXRPd25Qcm9wZXJ0eURlc2NyaXB0b3JE
ZWxlZ2F0ZShFeGVjU3RhdGUqIGV4ZWMsIFByb3BlcnR5TmFtZSBwcm9wZXJ0eU5hbWUsIFByb3Bl
cnR5RGVzY3JpcHRvciYgZGVzY3JpcHRvcikKIHsKICAgICAvLyBMb29rIGZvciBvdmVycmlkZXMg
YmVmb3JlIGxvb2tpbmcgYXQgYW55IG9mIG91ciBvd24gcHJvcGVydGllcy4KICAgICBpZiAoSlNH
bG9iYWxPYmplY3Q6OmdldE93blByb3BlcnR5RGVzY3JpcHRvcih0aGlzLCBleGVjLCBwcm9wZXJ0
eU5hbWUsIGRlc2NyaXB0b3IpKQpJbmRleDogU291cmNlL1dlYkNvcmUvYmluZGluZ3Mvc2NyaXB0
cy9Db2RlR2VuZXJhdG9ySlMucG0KPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL1dlYkNvcmUvYmluZGlu
Z3Mvc2NyaXB0cy9Db2RlR2VuZXJhdG9ySlMucG0JKHJldmlzaW9uIDExNjY2NykKKysrIFNvdXJj
ZS9XZWJDb3JlL2JpbmRpbmdzL3NjcmlwdHMvQ29kZUdlbmVyYXRvckpTLnBtCSh3b3JraW5nIGNv
cHkpCkBAIC00MTIsMTUgKzQxMiwxNCBAQCBzdWIgR2VuZXJhdGVHZXRPd25Qcm9wZXJ0eVNsb3RC
b2R5CiAgICAgfQogCiAgICAgaWYgKCRkYXRhTm9kZS0+ZXh0ZW5kZWRBdHRyaWJ1dGVzLT57Iklu
ZGV4ZWRHZXR0ZXIifSB8fCAkZGF0YU5vZGUtPmV4dGVuZGVkQXR0cmlidXRlcy0+eyJOdW1lcmlj
SW5kZXhlZEdldHRlciJ9KSB7Ci0gICAgICAgIHB1c2goQGdldE93blByb3BlcnR5U2xvdEltcGws
ICIgICAgYm9vbCBvaztcbiIpOwotICAgICAgICBwdXNoKEBnZXRPd25Qcm9wZXJ0eVNsb3RJbXBs
LCAiICAgIHVuc2lnbmVkIGluZGV4ID0gcHJvcGVydHlOYW1lLnRvVUludDMyKG9rKTtcbiIpOwor
ICAgICAgICBwdXNoKEBnZXRPd25Qcm9wZXJ0eVNsb3RJbXBsLCAiICAgIHVuc2lnbmVkIGluZGV4
ID0gcHJvcGVydHlOYW1lLmFzSW5kZXgoKTtcbiIpOwogCiAgICAgICAgICMgSWYgdGhlIGl0ZW0g
ZnVuY3Rpb24gcmV0dXJucyBhIHN0cmluZyB0aGVuIHdlIGxldCB0aGUgVHJlYXRSZXR1cm5lZE51
bGxTdHJpbmdBcyBoYW5kbGUgdGhlIGNhc2VzCiAgICAgICAgICMgd2hlcmUgdGhlIGluZGV4IGlz
IG91dCBvZiByYW5nZS4KICAgICAgICAgaWYgKEluZGV4R2V0dGVyUmV0dXJuc1N0cmluZ3MoJGlt
cGxDbGFzc05hbWUpKSB7Ci0gICAgICAgICAgICBwdXNoKEBnZXRPd25Qcm9wZXJ0eVNsb3RJbXBs
LCAiICAgIGlmIChvaykge1xuIik7CisgICAgICAgICAgICBwdXNoKEBnZXRPd25Qcm9wZXJ0eVNs
b3RJbXBsLCAiICAgIGlmIChpbmRleCAhPSBQcm9wZXJ0eU5hbWU6Ok5vdEFuSW5kZXgpIHtcbiIp
OwogICAgICAgICB9IGVsc2UgewotICAgICAgICAgICAgcHVzaChAZ2V0T3duUHJvcGVydHlTbG90
SW1wbCwgIiAgICBpZiAob2sgJiYgaW5kZXggPCBzdGF0aWNfY2FzdDwkaW1wbENsYXNzTmFtZSo+
KHRoaXNPYmplY3QtPmltcGwoKSktPmxlbmd0aCgpKSB7XG4iKTsKKyAgICAgICAgICAgIHB1c2go
QGdldE93blByb3BlcnR5U2xvdEltcGwsICIgICAgaWYgKGluZGV4ICE9IFByb3BlcnR5TmFtZTo6
Tm90QW5JbmRleCAmJiBpbmRleCA8IHN0YXRpY19jYXN0PCRpbXBsQ2xhc3NOYW1lKj4odGhpc09i
amVjdC0+aW1wbCgpKS0+bGVuZ3RoKCkpIHtcbiIpOwogICAgICAgICB9CiAgICAgICAgIGlmICgk
ZGF0YU5vZGUtPmV4dGVuZGVkQXR0cmlidXRlcy0+eyJOdW1lcmljSW5kZXhlZEdldHRlciJ9KSB7
CiAgICAgICAgICAgICBwdXNoKEBnZXRPd25Qcm9wZXJ0eVNsb3RJbXBsLCAiICAgICAgICBzbG90
LnNldFZhbHVlKHRoaXNPYmplY3QtPmdldEJ5SW5kZXgoZXhlYywgaW5kZXgpKTtcbiIpOwpAQCAt
NTA2LDkgKzUwNSw4IEBAIHN1YiBHZW5lcmF0ZUdldE93blByb3BlcnR5RGVzY3JpcHRvckJvZHkK
ICAgICB9CiAKICAgICBpZiAoJGRhdGFOb2RlLT5leHRlbmRlZEF0dHJpYnV0ZXMtPnsiSW5kZXhl
ZEdldHRlciJ9IHx8ICRkYXRhTm9kZS0+ZXh0ZW5kZWRBdHRyaWJ1dGVzLT57Ik51bWVyaWNJbmRl
eGVkR2V0dGVyIn0pIHsKLSAgICAgICAgcHVzaChAZ2V0T3duUHJvcGVydHlEZXNjcmlwdG9ySW1w
bCwgIiAgICBib29sIG9rO1xuIik7Ci0gICAgICAgIHB1c2goQGdldE93blByb3BlcnR5RGVzY3Jp
cHRvckltcGwsICIgICAgdW5zaWduZWQgaW5kZXggPSBwcm9wZXJ0eU5hbWUudG9VSW50MzIob2sp
O1xuIik7Ci0gICAgICAgIHB1c2goQGdldE93blByb3BlcnR5RGVzY3JpcHRvckltcGwsICIgICAg
aWYgKG9rICYmIGluZGV4IDwgc3RhdGljX2Nhc3Q8JGltcGxDbGFzc05hbWUqPih0aGlzT2JqZWN0
LT5pbXBsKCkpLT5sZW5ndGgoKSkge1xuIik7CisgICAgICAgIHB1c2goQGdldE93blByb3BlcnR5
RGVzY3JpcHRvckltcGwsICIgICAgdW5zaWduZWQgaW5kZXggPSBwcm9wZXJ0eU5hbWUuYXNJbmRl
eCgpO1xuIik7CisgICAgICAgIHB1c2goQGdldE93blByb3BlcnR5RGVzY3JpcHRvckltcGwsICIg
ICAgaWYgKGluZGV4ICE9IFByb3BlcnR5TmFtZTo6Tm90QW5JbmRleCAmJiBpbmRleCA8IHN0YXRp
Y19jYXN0PCRpbXBsQ2xhc3NOYW1lKj4odGhpc09iamVjdC0+aW1wbCgpKS0+bGVuZ3RoKCkpIHtc
biIpOwogICAgICAgICBpZiAoJGRhdGFOb2RlLT5leHRlbmRlZEF0dHJpYnV0ZXMtPnsiTnVtZXJp
Y0luZGV4ZWRHZXR0ZXIifSkgewogICAgICAgICAgICAgIyBBc3N1bWUgdGhhdCBpZiB0aGVyZSdz
IGEgc2V0dGVyLCB0aGUgaW5kZXggd2lsbCBiZSB3cml0YWJsZQogICAgICAgICAgICAgaWYgKCRk
YXRhTm9kZS0+ZXh0ZW5kZWRBdHRyaWJ1dGVzLT57IkN1c3RvbUluZGV4ZWRTZXR0ZXIifSkgewpA
QCAtNzQyLDExICs3NDAsMTEgQEAgc3ViIEdlbmVyYXRlSGVhZGVyCiAKICAgICAjIEdldHRlcnMK
ICAgICBpZiAoJGhhc0dldHRlcikgewotICAgICAgICBwdXNoKEBoZWFkZXJDb250ZW50LCAiICAg
IHN0YXRpYyBib29sIGdldE93blByb3BlcnR5U2xvdChKU0M6OkpTQ2VsbCosIEpTQzo6RXhlY1N0
YXRlKiwgY29uc3QgSlNDOjpJZGVudGlmaWVyJiBwcm9wZXJ0eU5hbWUsIEpTQzo6UHJvcGVydHlT
bG90Jik7XG4iKTsKLSAgICAgICAgcHVzaChAaGVhZGVyQ29udGVudCwgIiAgICBzdGF0aWMgYm9v
bCBnZXRPd25Qcm9wZXJ0eURlc2NyaXB0b3IoSlNDOjpKU09iamVjdCosIEpTQzo6RXhlY1N0YXRl
KiwgY29uc3QgSlNDOjpJZGVudGlmaWVyJiBwcm9wZXJ0eU5hbWUsIEpTQzo6UHJvcGVydHlEZXNj
cmlwdG9yJik7XG4iKTsKKyAgICAgICAgcHVzaChAaGVhZGVyQ29udGVudCwgIiAgICBzdGF0aWMg
Ym9vbCBnZXRPd25Qcm9wZXJ0eVNsb3QoSlNDOjpKU0NlbGwqLCBKU0M6OkV4ZWNTdGF0ZSosIEpT
Qzo6UHJvcGVydHlOYW1lLCBKU0M6OlByb3BlcnR5U2xvdCYpO1xuIik7CisgICAgICAgIHB1c2go
QGhlYWRlckNvbnRlbnQsICIgICAgc3RhdGljIGJvb2wgZ2V0T3duUHJvcGVydHlEZXNjcmlwdG9y
KEpTQzo6SlNPYmplY3QqLCBKU0M6OkV4ZWNTdGF0ZSosIEpTQzo6UHJvcGVydHlOYW1lLCBKU0M6
OlByb3BlcnR5RGVzY3JpcHRvciYpO1xuIik7CiAgICAgICAgIHB1c2goQGhlYWRlckNvbnRlbnQs
ICIgICAgc3RhdGljIGJvb2wgZ2V0T3duUHJvcGVydHlTbG90QnlJbmRleChKU0M6OkpTQ2VsbCos
IEpTQzo6RXhlY1N0YXRlKiwgdW5zaWduZWQgcHJvcGVydHlOYW1lLCBKU0M6OlByb3BlcnR5U2xv
dCYpO1xuIikgaWYgKCRkYXRhTm9kZS0+ZXh0ZW5kZWRBdHRyaWJ1dGVzLT57IkluZGV4ZWRHZXR0
ZXIifSB8fCAkZGF0YU5vZGUtPmV4dGVuZGVkQXR0cmlidXRlcy0+eyJOdW1lcmljSW5kZXhlZEdl
dHRlciJ9KSAmJiAhJGRhdGFOb2RlLT5leHRlbmRlZEF0dHJpYnV0ZXMtPnsiQ3VzdG9tTmFtZWRH
ZXR0ZXIifTsKLSAgICAgICAgcHVzaChAaGVhZGVyQ29udGVudCwgIiAgICBib29sIGdldE93blBy
b3BlcnR5U2xvdERlbGVnYXRlKEpTQzo6RXhlY1N0YXRlKiwgY29uc3QgSlNDOjpJZGVudGlmaWVy
JiwgSlNDOjpQcm9wZXJ0eVNsb3QmKTtcbiIpIGlmICRkYXRhTm9kZS0+ZXh0ZW5kZWRBdHRyaWJ1
dGVzLT57IkpTQ3VzdG9tR2V0T3duUHJvcGVydHlTbG90QW5kRGVzY3JpcHRvciJ9OwotICAgICAg
ICBwdXNoKEBoZWFkZXJDb250ZW50LCAiICAgIGJvb2wgZ2V0T3duUHJvcGVydHlEZXNjcmlwdG9y
RGVsZWdhdGUoSlNDOjpFeGVjU3RhdGUqLCBjb25zdCBKU0M6OklkZW50aWZpZXImLCBKU0M6OlBy
b3BlcnR5RGVzY3JpcHRvciYpO1xuIikgaWYgJGRhdGFOb2RlLT5leHRlbmRlZEF0dHJpYnV0ZXMt
PnsiSlNDdXN0b21HZXRPd25Qcm9wZXJ0eVNsb3RBbmREZXNjcmlwdG9yIn07CisgICAgICAgIHB1
c2goQGhlYWRlckNvbnRlbnQsICIgICAgYm9vbCBnZXRPd25Qcm9wZXJ0eVNsb3REZWxlZ2F0ZShK
U0M6OkV4ZWNTdGF0ZSosIEpTQzo6UHJvcGVydHlOYW1lLCBKU0M6OlByb3BlcnR5U2xvdCYpO1xu
IikgaWYgJGRhdGFOb2RlLT5leHRlbmRlZEF0dHJpYnV0ZXMtPnsiSlNDdXN0b21HZXRPd25Qcm9w
ZXJ0eVNsb3RBbmREZXNjcmlwdG9yIn07CisgICAgICAgIHB1c2goQGhlYWRlckNvbnRlbnQsICIg
ICAgYm9vbCBnZXRPd25Qcm9wZXJ0eURlc2NyaXB0b3JEZWxlZ2F0ZShKU0M6OkV4ZWNTdGF0ZSos
IEpTQzo6UHJvcGVydHlOYW1lLCBKU0M6OlByb3BlcnR5RGVzY3JpcHRvciYpO1xuIikgaWYgJGRh
dGFOb2RlLT5leHRlbmRlZEF0dHJpYnV0ZXMtPnsiSlNDdXN0b21HZXRPd25Qcm9wZXJ0eVNsb3RB
bmREZXNjcmlwdG9yIn07CiAgICAgICAgICRzdHJ1Y3R1cmVGbGFnc3siSlNDOjpPdmVycmlkZXNH
ZXRPd25Qcm9wZXJ0eVNsb3QifSA9IDE7CiAgICAgfQogCkBAIC03NjUsOSArNzYzLDkgQEAgc3Vi
IEdlbmVyYXRlSGVhZGVyCiAKICAgICAjIEdldHRlcnMKICAgICBpZiAoJGhhc1NldHRlcikgewot
ICAgICAgICBwdXNoKEBoZWFkZXJDb250ZW50LCAiICAgIHN0YXRpYyB2b2lkIHB1dChKU0M6OkpT
Q2VsbCosIEpTQzo6RXhlY1N0YXRlKiwgY29uc3QgSlNDOjpJZGVudGlmaWVyJiBwcm9wZXJ0eU5h
bWUsIEpTQzo6SlNWYWx1ZSwgSlNDOjpQdXRQcm9wZXJ0eVNsb3QmKTtcbiIpOworICAgICAgICBw
dXNoKEBoZWFkZXJDb250ZW50LCAiICAgIHN0YXRpYyB2b2lkIHB1dChKU0M6OkpTQ2VsbCosIEpT
Qzo6RXhlY1N0YXRlKiwgSlNDOjpQcm9wZXJ0eU5hbWUsIEpTQzo6SlNWYWx1ZSwgSlNDOjpQdXRQ
cm9wZXJ0eVNsb3QmKTtcbiIpOwogICAgICAgICBwdXNoKEBoZWFkZXJDb250ZW50LCAiICAgIHN0
YXRpYyB2b2lkIHB1dEJ5SW5kZXgoSlNDOjpKU0NlbGwqLCBKU0M6OkV4ZWNTdGF0ZSosIHVuc2ln
bmVkIHByb3BlcnR5TmFtZSwgSlNDOjpKU1ZhbHVlLCBib29sIHNob3VsZFRocm93KTtcbiIpIGlm
ICRkYXRhTm9kZS0+ZXh0ZW5kZWRBdHRyaWJ1dGVzLT57IkN1c3RvbUluZGV4ZWRTZXR0ZXIifTsK
LSAgICAgICAgcHVzaChAaGVhZGVyQ29udGVudCwgIiAgICBib29sIHB1dERlbGVnYXRlKEpTQzo6
RXhlY1N0YXRlKiwgY29uc3QgSlNDOjpJZGVudGlmaWVyJiwgSlNDOjpKU1ZhbHVlLCBKU0M6OlB1
dFByb3BlcnR5U2xvdCYpO1xuIikgaWYgJGRhdGFOb2RlLT5leHRlbmRlZEF0dHJpYnV0ZXMtPnsi
Q3VzdG9tTmFtZWRTZXR0ZXIifTsKKyAgICAgICAgcHVzaChAaGVhZGVyQ29udGVudCwgIiAgICBi
b29sIHB1dERlbGVnYXRlKEpTQzo6RXhlY1N0YXRlKiwgSlNDOjpQcm9wZXJ0eU5hbWUsIEpTQzo6
SlNWYWx1ZSwgSlNDOjpQdXRQcm9wZXJ0eVNsb3QmKTtcbiIpIGlmICRkYXRhTm9kZS0+ZXh0ZW5k
ZWRBdHRyaWJ1dGVzLT57IkN1c3RvbU5hbWVkU2V0dGVyIn07CiAgICAgfQogCiAgICAgaWYgKCEk
aGFzUGFyZW50KSB7CkBAIC03OTgsNyArNzk2LDcgQEAgc3ViIEdlbmVyYXRlSGVhZGVyCiAgICAg
cHVzaChAaGVhZGVyQ29udGVudCwgIiAgICBzdGF0aWMgSlNDOjpDYWxsVHlwZSBnZXRDYWxsRGF0
YShKU0M6OkpTQ2VsbCosIEpTQzo6Q2FsbERhdGEmKTtcblxuIikgaWYgJGRhdGFOb2RlLT5leHRl
bmRlZEF0dHJpYnV0ZXMtPnsiQ3VzdG9tQ2FsbCJ9OwogCiAgICAgIyBDdXN0b20gZGVsZXRlUHJv
cGVydHkgZnVuY3Rpb24KLSAgICBwdXNoKEBoZWFkZXJDb250ZW50LCAiICAgIHN0YXRpYyBib29s
IGRlbGV0ZVByb3BlcnR5KEpTQzo6SlNDZWxsKiwgSlNDOjpFeGVjU3RhdGUqLCBjb25zdCBKU0M6
OklkZW50aWZpZXImKTtcbiIpIGlmICRkYXRhTm9kZS0+ZXh0ZW5kZWRBdHRyaWJ1dGVzLT57IkN1
c3RvbURlbGV0ZVByb3BlcnR5In07CisgICAgcHVzaChAaGVhZGVyQ29udGVudCwgIiAgICBzdGF0
aWMgYm9vbCBkZWxldGVQcm9wZXJ0eShKU0M6OkpTQ2VsbCosIEpTQzo6RXhlY1N0YXRlKiwgSlND
OjpQcm9wZXJ0eU5hbWUpO1xuIikgaWYgJGRhdGFOb2RlLT5leHRlbmRlZEF0dHJpYnV0ZXMtPnsi
Q3VzdG9tRGVsZXRlUHJvcGVydHkifTsKIAogICAgICMgQ3VzdG9tIGdldFByb3BlcnR5TmFtZXMg
ZnVuY3Rpb24gZXhpc3RzIG9uIERPTVdpbmRvdwogICAgIGlmICgkaW50ZXJmYWNlTmFtZSBlcSAi
RE9NV2luZG93IikgewpAQCAtODEzLDcgKzgxMSw3IEBAIHN1YiBHZW5lcmF0ZUhlYWRlcgogICAg
IH0KIAogICAgICMgQ3VzdG9tIGRlZmluZU93blByb3BlcnR5IGZ1bmN0aW9uCi0gICAgcHVzaChA
aGVhZGVyQ29udGVudCwgIiAgICBzdGF0aWMgYm9vbCBkZWZpbmVPd25Qcm9wZXJ0eShKU0M6OkpT
T2JqZWN0KiwgSlNDOjpFeGVjU3RhdGUqLCBjb25zdCBKU0M6OklkZW50aWZpZXImIHByb3BlcnR5
TmFtZSwgSlNDOjpQcm9wZXJ0eURlc2NyaXB0b3ImLCBib29sIHNob3VsZFRocm93KTtcbiIpIGlm
ICRkYXRhTm9kZS0+ZXh0ZW5kZWRBdHRyaWJ1dGVzLT57IkpTQ3VzdG9tRGVmaW5lT3duUHJvcGVy
dHkifTsKKyAgICBwdXNoKEBoZWFkZXJDb250ZW50LCAiICAgIHN0YXRpYyBib29sIGRlZmluZU93
blByb3BlcnR5KEpTQzo6SlNPYmplY3QqLCBKU0M6OkV4ZWNTdGF0ZSosIEpTQzo6UHJvcGVydHlO
YW1lLCBKU0M6OlByb3BlcnR5RGVzY3JpcHRvciYsIGJvb2wgc2hvdWxkVGhyb3cpO1xuIikgaWYg
JGRhdGFOb2RlLT5leHRlbmRlZEF0dHJpYnV0ZXMtPnsiSlNDdXN0b21EZWZpbmVPd25Qcm9wZXJ0
eSJ9OwogCiAgICAgIyBPdmVycmlkZSB0b0Jvb2xlYW4gdG8gcmV0dXJuIGZhbHNlIGZvciBvYmpl
Y3RzIHRoYXQgd2FudCB0byAnTWFzcXVlcmFkZXNBc1VuZGVmaW5lZCcuCiAgICAgaWYgKCRkYXRh
Tm9kZS0+ZXh0ZW5kZWRBdHRyaWJ1dGVzLT57Ik1hc3F1ZXJhZGVzQXNVbmRlZmluZWQifSkgewpA
QCAtOTQ4LDIwICs5NDYsMjAgQEAgc3ViIEdlbmVyYXRlSGVhZGVyCiAgICAgIyBOYW1lIGdldHRl
cgogICAgIGlmICgkZGF0YU5vZGUtPmV4dGVuZGVkQXR0cmlidXRlcy0+eyJOYW1lZEdldHRlciJ9
IHx8ICRkYXRhTm9kZS0+ZXh0ZW5kZWRBdHRyaWJ1dGVzLT57IkN1c3RvbU5hbWVkR2V0dGVyIn0p
IHsKICAgICAgICAgcHVzaChAaGVhZGVyQ29udGVudCwgInByaXZhdGU6XG4iKTsKLSAgICAgICAg
cHVzaChAaGVhZGVyQ29udGVudCwgIiAgICBzdGF0aWMgYm9vbCBjYW5HZXRJdGVtc0Zvck5hbWUo
SlNDOjpFeGVjU3RhdGUqLCAkaW1wbENsYXNzTmFtZSosIGNvbnN0IEpTQzo6SWRlbnRpZmllciYp
O1xuIik7Ci0gICAgICAgIHB1c2goQGhlYWRlckNvbnRlbnQsICIgICAgc3RhdGljIEpTQzo6SlNW
YWx1ZSBuYW1lR2V0dGVyKEpTQzo6RXhlY1N0YXRlKiwgSlNDOjpKU1ZhbHVlLCBjb25zdCBKU0M6
OklkZW50aWZpZXImKTtcbiIpOworICAgICAgICBwdXNoKEBoZWFkZXJDb250ZW50LCAiICAgIHN0
YXRpYyBib29sIGNhbkdldEl0ZW1zRm9yTmFtZShKU0M6OkV4ZWNTdGF0ZSosICRpbXBsQ2xhc3NO
YW1lKiwgSlNDOjpQcm9wZXJ0eU5hbWUpO1xuIik7CisgICAgICAgIHB1c2goQGhlYWRlckNvbnRl
bnQsICIgICAgc3RhdGljIEpTQzo6SlNWYWx1ZSBuYW1lR2V0dGVyKEpTQzo6RXhlY1N0YXRlKiwg
SlNDOjpKU1ZhbHVlLCBKU0M6OlByb3BlcnR5TmFtZSk7XG4iKTsKICAgICB9CiAKICAgICBwdXNo
KEBoZWFkZXJDb250ZW50LCAifTtcblxuIik7CiAKICAgICBpZiAoJGRhdGFOb2RlLT5leHRlbmRl
ZEF0dHJpYnV0ZXMtPnsiSlNJbmxpbmVHZXRPd25Qcm9wZXJ0eVNsb3QifSAmJiAhJGRhdGFOb2Rl
LT5leHRlbmRlZEF0dHJpYnV0ZXMtPnsiQ3VzdG9tR2V0T3duUHJvcGVydHlTbG90In0pIHsKLSAg
ICAgICAgcHVzaChAaGVhZGVyQ29udGVudCwgIkFMV0FZU19JTkxJTkUgYm9vbCAke2NsYXNzTmFt
ZX06OmdldE93blByb3BlcnR5U2xvdChKU0M6OkpTQ2VsbCogY2VsbCwgSlNDOjpFeGVjU3RhdGUq
IGV4ZWMsIGNvbnN0IEpTQzo6SWRlbnRpZmllciYgcHJvcGVydHlOYW1lLCBKU0M6OlByb3BlcnR5
U2xvdCYgc2xvdClcbiIpOworICAgICAgICBwdXNoKEBoZWFkZXJDb250ZW50LCAiQUxXQVlTX0lO
TElORSBib29sICR7Y2xhc3NOYW1lfTo6Z2V0T3duUHJvcGVydHlTbG90KEpTQzo6SlNDZWxsKiBj
ZWxsLCBKU0M6OkV4ZWNTdGF0ZSogZXhlYywgSlNDOjpQcm9wZXJ0eU5hbWUgcHJvcGVydHlOYW1l
LCBKU0M6OlByb3BlcnR5U2xvdCYgc2xvdClcbiIpOwogICAgICAgICBwdXNoKEBoZWFkZXJDb250
ZW50LCAie1xuIik7CiAgICAgICAgIHB1c2goQGhlYWRlckNvbnRlbnQsICIgICAgJHtjbGFzc05h
bWV9KiB0aGlzT2JqZWN0ID0gSlNDOjpqc0Nhc3Q8JHtjbGFzc05hbWV9Kj4oY2VsbCk7XG4iKTsK
ICAgICAgICAgcHVzaChAaGVhZGVyQ29udGVudCwgIiAgICBBU1NFUlRfR0NfT0JKRUNUX0lOSEVS
SVRTKHRoaXNPYmplY3QsICZzX2luZm8pO1xuIik7CiAgICAgICAgIHB1c2goQGhlYWRlckNvbnRl
bnQsIEdlbmVyYXRlR2V0T3duUHJvcGVydHlTbG90Qm9keSgkZGF0YU5vZGUsICRpbnRlcmZhY2VO
YW1lLCAkY2xhc3NOYW1lLCAkaW1wbENsYXNzTmFtZSwgJG51bUF0dHJpYnV0ZXMgPiAwLCAxKSk7
CiAgICAgICAgIHB1c2goQGhlYWRlckNvbnRlbnQsICJ9XG5cbiIpOwotICAgICAgICBwdXNoKEBo
ZWFkZXJDb250ZW50LCAiQUxXQVlTX0lOTElORSBib29sICR7Y2xhc3NOYW1lfTo6Z2V0T3duUHJv
cGVydHlEZXNjcmlwdG9yKEpTQzo6SlNPYmplY3QqIG9iamVjdCwgSlNDOjpFeGVjU3RhdGUqIGV4
ZWMsIGNvbnN0IEpTQzo6SWRlbnRpZmllciYgcHJvcGVydHlOYW1lLCBKU0M6OlByb3BlcnR5RGVz
Y3JpcHRvciYgZGVzY3JpcHRvcilcbiIpOworICAgICAgICBwdXNoKEBoZWFkZXJDb250ZW50LCAi
QUxXQVlTX0lOTElORSBib29sICR7Y2xhc3NOYW1lfTo6Z2V0T3duUHJvcGVydHlEZXNjcmlwdG9y
KEpTQzo6SlNPYmplY3QqIG9iamVjdCwgSlNDOjpFeGVjU3RhdGUqIGV4ZWMsIEpTQzo6UHJvcGVy
dHlOYW1lIHByb3BlcnR5TmFtZSwgSlNDOjpQcm9wZXJ0eURlc2NyaXB0b3ImIGRlc2NyaXB0b3Ip
XG4iKTsKICAgICAgICAgcHVzaChAaGVhZGVyQ29udGVudCwgIntcbiIpOwogICAgICAgICBwdXNo
KEBoZWFkZXJDb250ZW50LCAiICAgICR7Y2xhc3NOYW1lfSogdGhpc09iamVjdCA9IEpTQzo6anND
YXN0PCR7Y2xhc3NOYW1lfSo+KG9iamVjdCk7XG4iKTsKICAgICAgICAgcHVzaChAaGVhZGVyQ29u
dGVudCwgIiAgICBBU1NFUlRfR0NfT0JKRUNUX0lOSEVSSVRTKHRoaXNPYmplY3QsICZzX2luZm8p
O1xuIik7CkBAIC0xMDI2LDggKzEwMjQsOCBAQCBzdWIgR2VuZXJhdGVIZWFkZXIKIAogICAgIHB1
c2goQGhlYWRlckNvbnRlbnQsICIgICAgc3RhdGljIGNvbnN0IEpTQzo6Q2xhc3NJbmZvIHNfaW5m
bztcbiIpOwogICAgIGlmICgkbnVtRnVuY3Rpb25zID4gMCB8fCAkbnVtQ29uc3RhbnRzID4gMCkg
ewotICAgICAgICBwdXNoKEBoZWFkZXJDb250ZW50LCAiICAgIHN0YXRpYyBib29sIGdldE93blBy
b3BlcnR5U2xvdChKU0M6OkpTQ2VsbCosIEpTQzo6RXhlY1N0YXRlKiwgY29uc3QgSlNDOjpJZGVu
dGlmaWVyJiwgSlNDOjpQcm9wZXJ0eVNsb3QmKTtcbiIpOwotICAgICAgICBwdXNoKEBoZWFkZXJD
b250ZW50LCAiICAgIHN0YXRpYyBib29sIGdldE93blByb3BlcnR5RGVzY3JpcHRvcihKU0M6OkpT
T2JqZWN0KiwgSlNDOjpFeGVjU3RhdGUqLCBjb25zdCBKU0M6OklkZW50aWZpZXImLCBKU0M6OlBy
b3BlcnR5RGVzY3JpcHRvciYpO1xuIik7CisgICAgICAgIHB1c2goQGhlYWRlckNvbnRlbnQsICIg
ICAgc3RhdGljIGJvb2wgZ2V0T3duUHJvcGVydHlTbG90KEpTQzo6SlNDZWxsKiwgSlNDOjpFeGVj
U3RhdGUqLCBKU0M6OlByb3BlcnR5TmFtZSwgSlNDOjpQcm9wZXJ0eVNsb3QmKTtcbiIpOworICAg
ICAgICBwdXNoKEBoZWFkZXJDb250ZW50LCAiICAgIHN0YXRpYyBib29sIGdldE93blByb3BlcnR5
RGVzY3JpcHRvcihKU0M6OkpTT2JqZWN0KiwgSlNDOjpFeGVjU3RhdGUqLCBKU0M6OlByb3BlcnR5
TmFtZSwgSlNDOjpQcm9wZXJ0eURlc2NyaXB0b3ImKTtcbiIpOwogICAgICAgICAkc3RydWN0dXJl
RmxhZ3N7IkpTQzo6T3ZlcnJpZGVzR2V0T3duUHJvcGVydHlTbG90In0gPSAxOwogICAgIH0KICAg
ICBpZiAoJGRhdGFOb2RlLT5leHRlbmRlZEF0dHJpYnV0ZXMtPnsiSlNDdXN0b21NYXJrRnVuY3Rp
b24ifSBvciAkbmVlZHNNYXJrQ2hpbGRyZW4pIHsKQEAgLTEwMzksMTIgKzEwMzcsMTIgQEAgc3Vi
IEdlbmVyYXRlSGVhZGVyCiAgICAgICAgICIgICAgICAgIHJldHVybiBKU0M6OlN0cnVjdHVyZTo6
Y3JlYXRlKGdsb2JhbERhdGEsIGdsb2JhbE9iamVjdCwgcHJvdG90eXBlLCBKU0M6OlR5cGVJbmZv
KEpTQzo6T2JqZWN0VHlwZSwgU3RydWN0dXJlRmxhZ3MpLCAmc19pbmZvKTtcbiIgLgogICAgICAg
ICAiICAgIH1cbiIpOwogICAgIGlmICgkZGF0YU5vZGUtPmV4dGVuZGVkQXR0cmlidXRlcy0+eyJK
U0N1c3RvbU5hbWVkR2V0dGVyT25Qcm90b3R5cGUifSkgewotICAgICAgICBwdXNoKEBoZWFkZXJD
b250ZW50LCAiICAgIHN0YXRpYyB2b2lkIHB1dChKU0M6OkpTQ2VsbCosIEpTQzo6RXhlY1N0YXRl
KiwgY29uc3QgSlNDOjpJZGVudGlmaWVyJiBwcm9wZXJ0eU5hbWUsIEpTQzo6SlNWYWx1ZSwgSlND
OjpQdXRQcm9wZXJ0eVNsb3QmKTtcbiIpOwotICAgICAgICBwdXNoKEBoZWFkZXJDb250ZW50LCAi
ICAgIGJvb2wgcHV0RGVsZWdhdGUoSlNDOjpFeGVjU3RhdGUqLCBjb25zdCBKU0M6OklkZW50aWZp
ZXImLCBKU0M6OkpTVmFsdWUsIEpTQzo6UHV0UHJvcGVydHlTbG90Jik7XG4iKTsKKyAgICAgICAg
cHVzaChAaGVhZGVyQ29udGVudCwgIiAgICBzdGF0aWMgdm9pZCBwdXQoSlNDOjpKU0NlbGwqLCBK
U0M6OkV4ZWNTdGF0ZSosIEpTQzo6UHJvcGVydHlOYW1lLCBKU0M6OkpTVmFsdWUsIEpTQzo6UHV0
UHJvcGVydHlTbG90Jik7XG4iKTsKKyAgICAgICAgcHVzaChAaGVhZGVyQ29udGVudCwgIiAgICBi
b29sIHB1dERlbGVnYXRlKEpTQzo6RXhlY1N0YXRlKiwgSlNDOjpQcm9wZXJ0eU5hbWUsIEpTQzo6
SlNWYWx1ZSwgSlNDOjpQdXRQcm9wZXJ0eVNsb3QmKTtcbiIpOwogICAgIH0KIAogICAgICMgQ3Vz
dG9tIGRlZmluZU93blByb3BlcnR5IGZ1bmN0aW9uCi0gICAgcHVzaChAaGVhZGVyQ29udGVudCwg
IiAgICBzdGF0aWMgYm9vbCBkZWZpbmVPd25Qcm9wZXJ0eShKU0M6OkpTT2JqZWN0KiwgSlNDOjpF
eGVjU3RhdGUqLCBjb25zdCBKU0M6OklkZW50aWZpZXImIHByb3BlcnR5TmFtZSwgSlNDOjpQcm9w
ZXJ0eURlc2NyaXB0b3ImLCBib29sIHNob3VsZFRocm93KTtcbiIpIGlmICRkYXRhTm9kZS0+ZXh0
ZW5kZWRBdHRyaWJ1dGVzLT57IkpTQ3VzdG9tRGVmaW5lT3duUHJvcGVydHlPblByb3RvdHlwZSJ9
OworICAgIHB1c2goQGhlYWRlckNvbnRlbnQsICIgICAgc3RhdGljIGJvb2wgZGVmaW5lT3duUHJv
cGVydHkoSlNDOjpKU09iamVjdCosIEpTQzo6RXhlY1N0YXRlKiwgSlNDOjpQcm9wZXJ0eU5hbWUs
IEpTQzo6UHJvcGVydHlEZXNjcmlwdG9yJiwgYm9vbCBzaG91bGRUaHJvdyk7XG4iKSBpZiAkZGF0
YU5vZGUtPmV4dGVuZGVkQXR0cmlidXRlcy0+eyJKU0N1c3RvbURlZmluZU93blByb3BlcnR5T25Q
cm90b3R5cGUifTsKIAogICAgIHB1c2goQGhlYWRlckNvbnRlbnQsICJcbnByaXZhdGU6XG4iKTsK
ICAgICBwdXNoKEBoZWFkZXJDb250ZW50LCAiICAgICR7Y2xhc3NOYW1lfVByb3RvdHlwZShKU0M6
OkpTR2xvYmFsRGF0YSYgZ2xvYmFsRGF0YSwgSlNDOjpKU0dsb2JhbE9iamVjdCosIEpTQzo6U3Ry
dWN0dXJlKiBzdHJ1Y3R1cmUpIDogSlNDOjpKU05vbkZpbmFsT2JqZWN0KGdsb2JhbERhdGEsIHN0
cnVjdHVyZSkgeyB9XG4iKTsKQEAgLTEwODIsNyArMTA4MCw3IEBAIHN1YiBHZW5lcmF0ZUhlYWRl
cgogICAgICAgICAgICAgbXkgJGNvbmRpdGlvbmFsU3RyaW5nID0gJGNvZGVHZW5lcmF0b3ItPkdl
bmVyYXRlQ29uZGl0aW9uYWxTdHJpbmcoJGF0dHJpYnV0ZS0+c2lnbmF0dXJlKTsKICAgICAgICAg
ICAgIHB1c2goQGhlYWRlckNvbnRlbnQsICIjaWYgJHtjb25kaXRpb25hbFN0cmluZ31cbiIpIGlm
ICRjb25kaXRpb25hbFN0cmluZzsKICAgICAgICAgICAgIG15ICRnZXR0ZXIgPSAianMiIC4gJGlu
dGVyZmFjZU5hbWUgLiAkY29kZUdlbmVyYXRvci0+V0tfdWNmaXJzdCgkYXR0cmlidXRlLT5zaWdu
YXR1cmUtPm5hbWUpIC4gKCRhdHRyaWJ1dGUtPnNpZ25hdHVyZS0+dHlwZSA9fiAvQ29uc3RydWN0
b3IkLyA/ICJDb25zdHJ1Y3RvciIgOiAiIik7Ci0gICAgICAgICAgICBwdXNoKEBoZWFkZXJDb250
ZW50LCAiSlNDOjpKU1ZhbHVlICR7Z2V0dGVyfShKU0M6OkV4ZWNTdGF0ZSosIEpTQzo6SlNWYWx1
ZSwgY29uc3QgSlNDOjpJZGVudGlmaWVyJik7XG4iKTsKKyAgICAgICAgICAgIHB1c2goQGhlYWRl
ckNvbnRlbnQsICJKU0M6OkpTVmFsdWUgJHtnZXR0ZXJ9KEpTQzo6RXhlY1N0YXRlKiwgSlNDOjpK
U1ZhbHVlLCBKU0M6OlByb3BlcnR5TmFtZSk7XG4iKTsKICAgICAgICAgICAgIHVubGVzcyAoJGF0
dHJpYnV0ZS0+dHlwZSA9fiAvcmVhZG9ubHkvKSB7CiAgICAgICAgICAgICAgICAgbXkgJHNldHRl
ciA9ICJzZXRKUyIgLiAkaW50ZXJmYWNlTmFtZSAuICRjb2RlR2VuZXJhdG9yLT5XS191Y2ZpcnN0
KCRhdHRyaWJ1dGUtPnNpZ25hdHVyZS0+bmFtZSkgLiAoJGF0dHJpYnV0ZS0+c2lnbmF0dXJlLT50
eXBlID1+IC9Db25zdHJ1Y3RvciQvID8gIkNvbnN0cnVjdG9yIiA6ICIiKTsKICAgICAgICAgICAg
ICAgICBwdXNoKEBoZWFkZXJDb250ZW50LCAidm9pZCAke3NldHRlcn0oSlNDOjpFeGVjU3RhdGUq
LCBKU0M6OkpTT2JqZWN0KiwgSlNDOjpKU1ZhbHVlKTtcbiIpOwpAQCAtMTA5Miw3ICsxMDkwLDcg
QEAgc3ViIEdlbmVyYXRlSGVhZGVyCiAgICAgICAgIAogICAgICAgICBpZiAoISRkYXRhTm9kZS0+
ZXh0ZW5kZWRBdHRyaWJ1dGVzLT57Ik9taXRDb25zdHJ1Y3RvciJ9KSB7CiAgICAgICAgICAgICBt
eSAkZ2V0dGVyID0gImpzIiAuICRpbnRlcmZhY2VOYW1lIC4gIkNvbnN0cnVjdG9yIjsKLSAgICAg
ICAgICAgIHB1c2goQGhlYWRlckNvbnRlbnQsICJKU0M6OkpTVmFsdWUgJHtnZXR0ZXJ9KEpTQzo6
RXhlY1N0YXRlKiwgSlNDOjpKU1ZhbHVlLCBjb25zdCBKU0M6OklkZW50aWZpZXImKTtcbiIpOwor
ICAgICAgICAgICAgcHVzaChAaGVhZGVyQ29udGVudCwgIkpTQzo6SlNWYWx1ZSAke2dldHRlcn0o
SlNDOjpFeGVjU3RhdGUqLCBKU0M6OkpTVmFsdWUsIEpTQzo6UHJvcGVydHlOYW1lKTtcbiIpOwog
ICAgICAgICB9CiAKICAgICAgICAgaWYgKCRkYXRhTm9kZS0+ZXh0ZW5kZWRBdHRyaWJ1dGVzLT57
IlJlcGxhY2VhYmxlQ29uc3RydWN0b3IifSkgewpAQCAtMTEwNyw3ICsxMTA1LDcgQEAgc3ViIEdl
bmVyYXRlSGVhZGVyCiAgICAgICAgICAgICBteSAkY29uZGl0aW9uYWxTdHJpbmcgPSAkY29kZUdl
bmVyYXRvci0+R2VuZXJhdGVDb25kaXRpb25hbFN0cmluZygkY29uc3RhbnQpOwogICAgICAgICAg
ICAgcHVzaChAaGVhZGVyQ29udGVudCwgIiNpZiAke2NvbmRpdGlvbmFsU3RyaW5nfVxuIikgaWYg
JGNvbmRpdGlvbmFsU3RyaW5nOwogICAgICAgICAgICAgbXkgJGdldHRlciA9ICJqcyIgLiAkaW50
ZXJmYWNlTmFtZSAuICRjb2RlR2VuZXJhdG9yLT5XS191Y2ZpcnN0KCRjb25zdGFudC0+bmFtZSk7
Ci0gICAgICAgICAgICBwdXNoKEBoZWFkZXJDb250ZW50LCAiSlNDOjpKU1ZhbHVlICR7Z2V0dGVy
fShKU0M6OkV4ZWNTdGF0ZSosIEpTQzo6SlNWYWx1ZSwgY29uc3QgSlNDOjpJZGVudGlmaWVyJik7
XG4iKTsKKyAgICAgICAgICAgIHB1c2goQGhlYWRlckNvbnRlbnQsICJKU0M6OkpTVmFsdWUgJHtn
ZXR0ZXJ9KEpTQzo6RXhlY1N0YXRlKiwgSlNDOjpKU1ZhbHVlLCBKU0M6OlByb3BlcnR5TmFtZSk7
XG4iKTsKICAgICAgICAgICAgIHB1c2goQGhlYWRlckNvbnRlbnQsICIjZW5kaWZcbiIpIGlmICRj
b25kaXRpb25hbFN0cmluZzsKICAgICAgICAgfQogICAgIH0KQEAgLTE0ODAsNyArMTQ3OCw3IEBA
IHN1YiBHZW5lcmF0ZUltcGxlbWVudGF0aW9uCiAgICAgfQogCiAgICAgaWYgKCRudW1Db25zdGFu
dHMgPiAwIHx8ICRudW1GdW5jdGlvbnMgPiAwKSB7Ci0gICAgICAgIHB1c2goQGltcGxDb250ZW50
LCAiYm9vbCAke2NsYXNzTmFtZX1Qcm90b3R5cGU6OmdldE93blByb3BlcnR5U2xvdChKU0NlbGwq
IGNlbGwsIEV4ZWNTdGF0ZSogZXhlYywgY29uc3QgSWRlbnRpZmllciYgcHJvcGVydHlOYW1lLCBQ
cm9wZXJ0eVNsb3QmIHNsb3QpXG4iKTsKKyAgICAgICAgcHVzaChAaW1wbENvbnRlbnQsICJib29s
ICR7Y2xhc3NOYW1lfVByb3RvdHlwZTo6Z2V0T3duUHJvcGVydHlTbG90KEpTQ2VsbCogY2VsbCwg
RXhlY1N0YXRlKiBleGVjLCBQcm9wZXJ0eU5hbWUgcHJvcGVydHlOYW1lLCBQcm9wZXJ0eVNsb3Qm
IHNsb3QpXG4iKTsKICAgICAgICAgcHVzaChAaW1wbENvbnRlbnQsICJ7XG4iKTsKICAgICAgICAg
cHVzaChAaW1wbENvbnRlbnQsICIgICAgJHtjbGFzc05hbWV9UHJvdG90eXBlKiB0aGlzT2JqZWN0
ID0ganNDYXN0PCR7Y2xhc3NOYW1lfVByb3RvdHlwZSo+KGNlbGwpO1xuIik7CiAKQEAgLTE0OTUs
NyArMTQ5Myw3IEBAIHN1YiBHZW5lcmF0ZUltcGxlbWVudGF0aW9uCiAgICAgICAgIH0KICAgICAg
ICAgcHVzaChAaW1wbENvbnRlbnQsICJ9XG5cbiIpOwogCi0gICAgICAgIHB1c2goQGltcGxDb250
ZW50LCAiYm9vbCAke2NsYXNzTmFtZX1Qcm90b3R5cGU6OmdldE93blByb3BlcnR5RGVzY3JpcHRv
cihKU09iamVjdCogb2JqZWN0LCBFeGVjU3RhdGUqIGV4ZWMsIGNvbnN0IElkZW50aWZpZXImIHBy
b3BlcnR5TmFtZSwgUHJvcGVydHlEZXNjcmlwdG9yJiBkZXNjcmlwdG9yKVxuIik7CisgICAgICAg
IHB1c2goQGltcGxDb250ZW50LCAiYm9vbCAke2NsYXNzTmFtZX1Qcm90b3R5cGU6OmdldE93blBy
b3BlcnR5RGVzY3JpcHRvcihKU09iamVjdCogb2JqZWN0LCBFeGVjU3RhdGUqIGV4ZWMsIFByb3Bl
cnR5TmFtZSBwcm9wZXJ0eU5hbWUsIFByb3BlcnR5RGVzY3JpcHRvciYgZGVzY3JpcHRvcilcbiIp
OwogICAgICAgICBwdXNoKEBpbXBsQ29udGVudCwgIntcbiIpOwogICAgICAgICBwdXNoKEBpbXBs
Q29udGVudCwgIiAgICAke2NsYXNzTmFtZX1Qcm90b3R5cGUqIHRoaXNPYmplY3QgPSBqc0Nhc3Q8
JHtjbGFzc05hbWV9UHJvdG90eXBlKj4ob2JqZWN0KTtcbiIpOwogCkBAIC0xNTEyLDcgKzE1MTAs
NyBAQCBzdWIgR2VuZXJhdGVJbXBsZW1lbnRhdGlvbgogICAgIH0KIAogICAgIGlmICgkZGF0YU5v
ZGUtPmV4dGVuZGVkQXR0cmlidXRlcy0+eyJKU0N1c3RvbU5hbWVkR2V0dGVyT25Qcm90b3R5cGUi
fSkgewotICAgICAgICBwdXNoKEBpbXBsQ29udGVudCwgInZvaWQgJHtjbGFzc05hbWV9UHJvdG90
eXBlOjpwdXQoSlNDZWxsKiBjZWxsLCBFeGVjU3RhdGUqIGV4ZWMsIGNvbnN0IElkZW50aWZpZXIm
IHByb3BlcnR5TmFtZSwgSlNWYWx1ZSB2YWx1ZSwgUHV0UHJvcGVydHlTbG90JiBzbG90KVxuIik7
CisgICAgICAgIHB1c2goQGltcGxDb250ZW50LCAidm9pZCAke2NsYXNzTmFtZX1Qcm90b3R5cGU6
OnB1dChKU0NlbGwqIGNlbGwsIEV4ZWNTdGF0ZSogZXhlYywgUHJvcGVydHlOYW1lIHByb3BlcnR5
TmFtZSwgSlNWYWx1ZSB2YWx1ZSwgUHV0UHJvcGVydHlTbG90JiBzbG90KVxuIik7CiAgICAgICAg
IHB1c2goQGltcGxDb250ZW50LCAie1xuIik7CiAgICAgICAgIHB1c2goQGltcGxDb250ZW50LCAi
ICAgICR7Y2xhc3NOYW1lfVByb3RvdHlwZSogdGhpc09iamVjdCA9IGpzQ2FzdDwke2NsYXNzTmFt
ZX1Qcm90b3R5cGUqPihjZWxsKTtcbiIpOwogICAgICAgICBwdXNoKEBpbXBsQ29udGVudCwgIiAg
ICBpZiAodGhpc09iamVjdC0+cHV0RGVsZWdhdGUoZXhlYywgcHJvcGVydHlOYW1lLCB2YWx1ZSwg
c2xvdCkpXG4iKTsKQEAgLTE2MzIsMTMgKzE2MzAsMTMgQEAgc3ViIEdlbmVyYXRlSW1wbGVtZW50
YXRpb24KICAgICAjIEF0dHJpYnV0ZXMKICAgICBpZiAoJGhhc0dldHRlcikgewogICAgICAgICBp
ZiAoISRkYXRhTm9kZS0+ZXh0ZW5kZWRBdHRyaWJ1dGVzLT57IkpTSW5saW5lR2V0T3duUHJvcGVy
dHlTbG90In0gJiYgISRkYXRhTm9kZS0+ZXh0ZW5kZWRBdHRyaWJ1dGVzLT57IkN1c3RvbUdldE93
blByb3BlcnR5U2xvdCJ9KSB7Ci0gICAgICAgICAgICBwdXNoKEBpbXBsQ29udGVudCwgImJvb2wg
JHtjbGFzc05hbWV9OjpnZXRPd25Qcm9wZXJ0eVNsb3QoSlNDZWxsKiBjZWxsLCBFeGVjU3RhdGUq
IGV4ZWMsIGNvbnN0IElkZW50aWZpZXImIHByb3BlcnR5TmFtZSwgUHJvcGVydHlTbG90JiBzbG90
KVxuIik7CisgICAgICAgICAgICBwdXNoKEBpbXBsQ29udGVudCwgImJvb2wgJHtjbGFzc05hbWV9
OjpnZXRPd25Qcm9wZXJ0eVNsb3QoSlNDZWxsKiBjZWxsLCBFeGVjU3RhdGUqIGV4ZWMsIFByb3Bl
cnR5TmFtZSBwcm9wZXJ0eU5hbWUsIFByb3BlcnR5U2xvdCYgc2xvdClcbiIpOwogICAgICAgICAg
ICAgcHVzaChAaW1wbENvbnRlbnQsICJ7XG4iKTsKICAgICAgICAgICAgIHB1c2goQGltcGxDb250
ZW50LCAiICAgICR7Y2xhc3NOYW1lfSogdGhpc09iamVjdCA9IGpzQ2FzdDwke2NsYXNzTmFtZX0q
PihjZWxsKTtcbiIpOwogICAgICAgICAgICAgcHVzaChAaW1wbENvbnRlbnQsICIgICAgQVNTRVJU
X0dDX09CSkVDVF9JTkhFUklUUyh0aGlzT2JqZWN0LCAmc19pbmZvKTtcbiIpOwogICAgICAgICAg
ICAgcHVzaChAaW1wbENvbnRlbnQsIEdlbmVyYXRlR2V0T3duUHJvcGVydHlTbG90Qm9keSgkZGF0
YU5vZGUsICRpbnRlcmZhY2VOYW1lLCAkY2xhc3NOYW1lLCAkaW1wbENsYXNzTmFtZSwgJG51bUF0
dHJpYnV0ZXMgPiAwLCAwKSk7CiAgICAgICAgICAgICBwdXNoKEBpbXBsQ29udGVudCwgIn1cblxu
Iik7Ci0gICAgICAgICAgICBwdXNoKEBpbXBsQ29udGVudCwgImJvb2wgJHtjbGFzc05hbWV9Ojpn
ZXRPd25Qcm9wZXJ0eURlc2NyaXB0b3IoSlNPYmplY3QqIG9iamVjdCwgRXhlY1N0YXRlKiBleGVj
LCBjb25zdCBJZGVudGlmaWVyJiBwcm9wZXJ0eU5hbWUsIFByb3BlcnR5RGVzY3JpcHRvciYgZGVz
Y3JpcHRvcilcbiIpOworICAgICAgICAgICAgcHVzaChAaW1wbENvbnRlbnQsICJib29sICR7Y2xh
c3NOYW1lfTo6Z2V0T3duUHJvcGVydHlEZXNjcmlwdG9yKEpTT2JqZWN0KiBvYmplY3QsIEV4ZWNT
dGF0ZSogZXhlYywgUHJvcGVydHlOYW1lIHByb3BlcnR5TmFtZSwgUHJvcGVydHlEZXNjcmlwdG9y
JiBkZXNjcmlwdG9yKVxuIik7CiAgICAgICAgICAgICBwdXNoKEBpbXBsQ29udGVudCwgIntcbiIp
OwogICAgICAgICAgICAgcHVzaChAaW1wbENvbnRlbnQsICIgICAgJHtjbGFzc05hbWV9KiB0aGlz
T2JqZWN0ID0ganNDYXN0PCR7Y2xhc3NOYW1lfSo+KG9iamVjdCk7XG4iKTsKICAgICAgICAgICAg
IHB1c2goQGltcGxDb250ZW50LCAiICAgIEFTU0VSVF9HQ19PQkpFQ1RfSU5IRVJJVFModGhpc09i
amVjdCwgJnNfaW5mbyk7XG4iKTsKQEAgLTE2NzQsNyArMTY3Miw3IEBAIHN1YiBHZW5lcmF0ZUlt
cGxlbWVudGF0aW9uCiAgICAgICAgICAgICAgICAgbXkgJGF0dHJpYnV0ZUNvbmRpdGlvbmFsU3Ry
aW5nID0gJGNvZGVHZW5lcmF0b3ItPkdlbmVyYXRlQ29uZGl0aW9uYWxTdHJpbmcoJGF0dHJpYnV0
ZS0+c2lnbmF0dXJlKTsKICAgICAgICAgICAgICAgICBwdXNoKEBpbXBsQ29udGVudCwgIiNpZiAk
e2F0dHJpYnV0ZUNvbmRpdGlvbmFsU3RyaW5nfVxuIikgaWYgJGF0dHJpYnV0ZUNvbmRpdGlvbmFs
U3RyaW5nOwogCi0gICAgICAgICAgICAgICAgcHVzaChAaW1wbENvbnRlbnQsICJKU1ZhbHVlICR7
Z2V0RnVuY3Rpb25OYW1lfShFeGVjU3RhdGUqIGV4ZWMsIEpTVmFsdWUgc2xvdEJhc2UsIGNvbnN0
IElkZW50aWZpZXImKVxuIik7CisgICAgICAgICAgICAgICAgcHVzaChAaW1wbENvbnRlbnQsICJK
U1ZhbHVlICR7Z2V0RnVuY3Rpb25OYW1lfShFeGVjU3RhdGUqIGV4ZWMsIEpTVmFsdWUgc2xvdEJh
c2UsIFByb3BlcnR5TmFtZSlcbiIpOwogICAgICAgICAgICAgICAgIHB1c2goQGltcGxDb250ZW50
LCAie1xuIik7CiAgICAgICAgICAgICAgICAgcHVzaChAaW1wbENvbnRlbnQsICIgICAgJHtjbGFz
c05hbWV9KiBjYXN0ZWRUaGlzID0ganNDYXN0PCRjbGFzc05hbWUqPihhc09iamVjdChzbG90QmFz
ZSkpO1xuIik7CiAKQEAgLTE3OTMsNyArMTc5MSw3IEBAIHN1YiBHZW5lcmF0ZUltcGxlbWVudGF0
aW9uCiAgICAgICAgICAgICBpZiAoISRkYXRhTm9kZS0+ZXh0ZW5kZWRBdHRyaWJ1dGVzLT57Ik9t
aXRDb25zdHJ1Y3RvciJ9KSB7CiAgICAgICAgICAgICAgICAgbXkgJGNvbnN0cnVjdG9yRnVuY3Rp
b25OYW1lID0gImpzIiAuICRpbnRlcmZhY2VOYW1lIC4gIkNvbnN0cnVjdG9yIjsKIAotICAgICAg
ICAgICAgICAgIHB1c2goQGltcGxDb250ZW50LCAiSlNWYWx1ZSAke2NvbnN0cnVjdG9yRnVuY3Rp
b25OYW1lfShFeGVjU3RhdGUqIGV4ZWMsIEpTVmFsdWUgc2xvdEJhc2UsIGNvbnN0IElkZW50aWZp
ZXImKVxuIik7CisgICAgICAgICAgICAgICAgcHVzaChAaW1wbENvbnRlbnQsICJKU1ZhbHVlICR7
Y29uc3RydWN0b3JGdW5jdGlvbk5hbWV9KEV4ZWNTdGF0ZSogZXhlYywgSlNWYWx1ZSBzbG90QmFz
ZSwgUHJvcGVydHlOYW1lKVxuIik7CiAgICAgICAgICAgICAgICAgcHVzaChAaW1wbENvbnRlbnQs
ICJ7XG4iKTsKICAgICAgICAgICAgICAgICBwdXNoKEBpbXBsQ29udGVudCwgIiAgICAke2NsYXNz
TmFtZX0qIGRvbU9iamVjdCA9IGpzQ2FzdDwkY2xhc3NOYW1lKj4oYXNPYmplY3Qoc2xvdEJhc2Up
KTtcbiIpOwogCkBAIC0xODE5LDE0ICsxODE3LDEzIEBAIHN1YiBHZW5lcmF0ZUltcGxlbWVudGF0
aW9uCiAKICAgICAgICAgaWYgKCRoYXNTZXR0ZXIpIHsKICAgICAgICAgICAgIGlmICghJGRhdGFO
b2RlLT5leHRlbmRlZEF0dHJpYnV0ZXMtPnsiQ3VzdG9tUHV0RnVuY3Rpb24ifSkgewotICAgICAg
ICAgICAgICAgIHB1c2goQGltcGxDb250ZW50LCAidm9pZCAke2NsYXNzTmFtZX06OnB1dChKU0Nl
bGwqIGNlbGwsIEV4ZWNTdGF0ZSogZXhlYywgY29uc3QgSWRlbnRpZmllciYgcHJvcGVydHlOYW1l
LCBKU1ZhbHVlIHZhbHVlLCBQdXRQcm9wZXJ0eVNsb3QmIHNsb3QpXG4iKTsKKyAgICAgICAgICAg
ICAgICBwdXNoKEBpbXBsQ29udGVudCwgInZvaWQgJHtjbGFzc05hbWV9OjpwdXQoSlNDZWxsKiBj
ZWxsLCBFeGVjU3RhdGUqIGV4ZWMsIFByb3BlcnR5TmFtZSBwcm9wZXJ0eU5hbWUsIEpTVmFsdWUg
dmFsdWUsIFB1dFByb3BlcnR5U2xvdCYgc2xvdClcbiIpOwogICAgICAgICAgICAgICAgIHB1c2go
QGltcGxDb250ZW50LCAie1xuIik7CiAgICAgICAgICAgICAgICAgcHVzaChAaW1wbENvbnRlbnQs
ICIgICAgJHtjbGFzc05hbWV9KiB0aGlzT2JqZWN0ID0ganNDYXN0PCR7Y2xhc3NOYW1lfSo+KGNl
bGwpO1xuIik7CiAgICAgICAgICAgICAgICAgcHVzaChAaW1wbENvbnRlbnQsICIgICAgQVNTRVJU
X0dDX09CSkVDVF9JTkhFUklUUyh0aGlzT2JqZWN0LCAmc19pbmZvKTtcbiIpOwogICAgICAgICAg
ICAgICAgIGlmICgkZGF0YU5vZGUtPmV4dGVuZGVkQXR0cmlidXRlcy0+eyJDdXN0b21JbmRleGVk
U2V0dGVyIn0pIHsKLSAgICAgICAgICAgICAgICAgICAgcHVzaChAaW1wbENvbnRlbnQsICIgICAg
Ym9vbCBvaztcbiIpOwotICAgICAgICAgICAgICAgICAgICBwdXNoKEBpbXBsQ29udGVudCwgIiAg
ICB1bnNpZ25lZCBpbmRleCA9IHByb3BlcnR5TmFtZS50b1VJbnQzMihvayk7XG4iKTsKLSAgICAg
ICAgICAgICAgICAgICAgcHVzaChAaW1wbENvbnRlbnQsICIgICAgaWYgKG9rKSB7XG4iKTsKKyAg
ICAgICAgICAgICAgICAgICAgcHVzaChAaW1wbENvbnRlbnQsICIgICAgdW5zaWduZWQgaW5kZXgg
PSBwcm9wZXJ0eU5hbWUuYXNJbmRleCgpO1xuIik7CisgICAgICAgICAgICAgICAgICAgIHB1c2go
QGltcGxDb250ZW50LCAiICAgIGlmIChpbmRleCAhPSBQcm9wZXJ0eU5hbWU6Ok5vdEFuSW5kZXgp
IHtcbiIpOwogICAgICAgICAgICAgICAgICAgICBwdXNoKEBpbXBsQ29udGVudCwgIiAgICAgICAg
dGhpc09iamVjdC0+aW5kZXhTZXR0ZXIoZXhlYywgaW5kZXgsIHZhbHVlKTtcbiIpOwogICAgICAg
ICAgICAgICAgICAgICBwdXNoKEBpbXBsQ29udGVudCwgIiAgICAgICAgcmV0dXJuO1xuIik7CiAg
ICAgICAgICAgICAgICAgICAgIHB1c2goQGltcGxDb250ZW50LCAiICAgIH1cbiIpOwpAQCAtMjE5
OCw3ICsyMTk1LDcgQEAgc3ViIEdlbmVyYXRlSW1wbGVtZW50YXRpb24KICAgICAgICAgICAgIH0K
IAogICAgICAgICAgICAgIyBGSVhNRTogdGhpcyBjYXN0cyBpbnRvIGludCB0byBtYXRjaCBvdXIg
cHJldmlvdXMgYmVoYXZpb3Igd2hpY2ggdHVybmVkIDB4RkZGRkZGRkYgaW4gLTEgZm9yIE5vZGVG
aWx0ZXIuU0hPV19BTEwKLSAgICAgICAgICAgIHB1c2goQGltcGxDb250ZW50LCAiSlNWYWx1ZSAk
e2dldHRlcn0oRXhlY1N0YXRlKiBleGVjLCBKU1ZhbHVlLCBjb25zdCBJZGVudGlmaWVyJilcbiIp
OworICAgICAgICAgICAgcHVzaChAaW1wbENvbnRlbnQsICJKU1ZhbHVlICR7Z2V0dGVyfShFeGVj
U3RhdGUqIGV4ZWMsIEpTVmFsdWUsIFByb3BlcnR5TmFtZSlcbiIpOwogICAgICAgICAgICAgcHVz
aChAaW1wbENvbnRlbnQsICJ7XG4iKTsKICAgICAgICAgICAgIGlmICgkY29uc3RhbnQtPnR5cGUg
ZXEgIkRPTVN0cmluZyIpIHsKICAgICAgICAgICAgICAgICBwdXNoKEBpbXBsQ29udGVudCwgIiAg
ICByZXR1cm4ganNTdHJpbmdPck51bGwoZXhlYywgU3RyaW5nKCIgLiAkY29uc3RhbnQtPnZhbHVl
IC4gIikpO1xuIik7CkBAIC0yMjQ3LDE0ICsyMjQ0LDE0IEBAIHN1YiBHZW5lcmF0ZUltcGxlbWVu
dGF0aW9uCiAKICAgICBpZiAoJGludGVyZmFjZU5hbWUgZXEgIkhUTUxQcm9wZXJ0aWVzQ29sbGVj
dGlvbiIpIHsKICAgICAgICAgaWYgKCRkYXRhTm9kZS0+ZXh0ZW5kZWRBdHRyaWJ1dGVzLT57Ik5h
bWVkR2V0dGVyIn0pIHsKLSAgICAgICAgICAgIHB1c2goQGltcGxDb250ZW50LCAiYm9vbCAke2Ns
YXNzTmFtZX06OmNhbkdldEl0ZW1zRm9yTmFtZShFeGVjU3RhdGUqLCAkaW1wbENsYXNzTmFtZSog
Y29sbGVjdGlvbiwgY29uc3QgSWRlbnRpZmllciYgcHJvcGVydHlOYW1lKVxuIik7CisgICAgICAg
ICAgICBwdXNoKEBpbXBsQ29udGVudCwgImJvb2wgJHtjbGFzc05hbWV9OjpjYW5HZXRJdGVtc0Zv
ck5hbWUoRXhlY1N0YXRlKiwgJGltcGxDbGFzc05hbWUqIGNvbGxlY3Rpb24sIFByb3BlcnR5TmFt
ZSBwcm9wZXJ0eU5hbWUpXG4iKTsKICAgICAgICAgICAgIHB1c2goQGltcGxDb250ZW50LCAie1xu
Iik7Ci0gICAgICAgICAgICBwdXNoKEBpbXBsQ29udGVudCwgIiAgICByZXR1cm4gY29sbGVjdGlv
bi0+aGFzTmFtZWRJdGVtKGlkZW50aWZpZXJUb0F0b21pY1N0cmluZyhwcm9wZXJ0eU5hbWUpKTtc
biIpOworICAgICAgICAgICAgcHVzaChAaW1wbENvbnRlbnQsICIgICAgcmV0dXJuIGNvbGxlY3Rp
b24tPmhhc05hbWVkSXRlbShwcm9wZXJ0eU5hbWVUb0F0b21pY1N0cmluZyhwcm9wZXJ0eU5hbWUp
KTtcbiIpOwogICAgICAgICAgICAgcHVzaChAaW1wbENvbnRlbnQsICJ9XG5cbiIpOwotICAgICAg
ICAgICAgcHVzaChAaW1wbENvbnRlbnQsICJKU1ZhbHVlICR7Y2xhc3NOYW1lfTo6bmFtZUdldHRl
cihFeGVjU3RhdGUqIGV4ZWMsIEpTVmFsdWUgc2xvdEJhc2UsIGNvbnN0IElkZW50aWZpZXImIHBy
b3BlcnR5TmFtZSlcbiIpOworICAgICAgICAgICAgcHVzaChAaW1wbENvbnRlbnQsICJKU1ZhbHVl
ICR7Y2xhc3NOYW1lfTo6bmFtZUdldHRlcihFeGVjU3RhdGUqIGV4ZWMsIEpTVmFsdWUgc2xvdEJh
c2UsIFByb3BlcnR5TmFtZSBwcm9wZXJ0eU5hbWUpXG4iKTsKICAgICAgICAgICAgIHB1c2goQGlt
cGxDb250ZW50LCAie1xuIik7CiAgICAgICAgICAgICBwdXNoKEBpbXBsQ29udGVudCwgIiAgICAk
e2NsYXNzTmFtZX0qIHRoaXNPYmogPSBqc0Nhc3Q8JGNsYXNzTmFtZSo+KGFzT2JqZWN0KHNsb3RC
YXNlKSk7XG4iKTsKLSAgICAgICAgICAgIHB1c2goQGltcGxDb250ZW50LCAiICAgIHJldHVybiB0
b0pTKGV4ZWMsIHRoaXNPYmotPmdsb2JhbE9iamVjdCgpLCBzdGF0aWNfY2FzdDwkaW1wbENsYXNz
TmFtZSo+KHRoaXNPYmotPmltcGwoKSktPm5hbWVkSXRlbShpZGVudGlmaWVyVG9BdG9taWNTdHJp
bmcocHJvcGVydHlOYW1lKSkpO1xuIik7CisgICAgICAgICAgICBwdXNoKEBpbXBsQ29udGVudCwg
IiAgICByZXR1cm4gdG9KUyhleGVjLCB0aGlzT2JqLT5nbG9iYWxPYmplY3QoKSwgc3RhdGljX2Nh
c3Q8JGltcGxDbGFzc05hbWUqPih0aGlzT2JqLT5pbXBsKCkpLT5uYW1lZEl0ZW0ocHJvcGVydHlO
YW1lVG9BdG9taWNTdHJpbmcocHJvcGVydHlOYW1lKSkpO1xuIik7CiAgICAgICAgICAgICBwdXNo
KEBpbXBsQ29udGVudCwgIn1cblxuIik7CiAgICAgICAgIH0KICAgICB9CkBAIC0zMzg3LDggKzMz
ODQsOCBAQCBzdWIgR2VuZXJhdGVDb25zdHJ1Y3RvckRlY2xhcmF0aW9uCiAgICAgcHVzaChAJG91
dHB1dEFycmF5LCAiICAgICAgICByZXR1cm4gcHRyO1xuIik7CiAgICAgcHVzaChAJG91dHB1dEFy
cmF5LCAiICAgIH1cblxuIik7CiAKLSAgICBwdXNoKEAkb3V0cHV0QXJyYXksICIgICAgc3RhdGlj
IGJvb2wgZ2V0T3duUHJvcGVydHlTbG90KEpTQzo6SlNDZWxsKiwgSlNDOjpFeGVjU3RhdGUqLCBj
b25zdCBKU0M6OklkZW50aWZpZXImLCBKU0M6OlByb3BlcnR5U2xvdCYpO1xuIik7Ci0gICAgcHVz
aChAJG91dHB1dEFycmF5LCAiICAgIHN0YXRpYyBib29sIGdldE93blByb3BlcnR5RGVzY3JpcHRv
cihKU0M6OkpTT2JqZWN0KiwgSlNDOjpFeGVjU3RhdGUqLCBjb25zdCBKU0M6OklkZW50aWZpZXIm
LCBKU0M6OlByb3BlcnR5RGVzY3JpcHRvciYpO1xuIik7CisgICAgcHVzaChAJG91dHB1dEFycmF5
LCAiICAgIHN0YXRpYyBib29sIGdldE93blByb3BlcnR5U2xvdChKU0M6OkpTQ2VsbCosIEpTQzo6
RXhlY1N0YXRlKiwgSlNDOjpQcm9wZXJ0eU5hbWUsIEpTQzo6UHJvcGVydHlTbG90Jik7XG4iKTsK
KyAgICBwdXNoKEAkb3V0cHV0QXJyYXksICIgICAgc3RhdGljIGJvb2wgZ2V0T3duUHJvcGVydHlE
ZXNjcmlwdG9yKEpTQzo6SlNPYmplY3QqLCBKU0M6OkV4ZWNTdGF0ZSosIEpTQzo6UHJvcGVydHlO
YW1lLCBKU0M6OlByb3BlcnR5RGVzY3JpcHRvciYpO1xuIik7CiAgICAgcHVzaChAJG91dHB1dEFy
cmF5LCAiICAgIHN0YXRpYyBjb25zdCBKU0M6OkNsYXNzSW5mbyBzX2luZm87XG4iKTsKIAogICAg
IHB1c2goQCRvdXRwdXRBcnJheSwgIiAgICBzdGF0aWMgSlNDOjpTdHJ1Y3R1cmUqIGNyZWF0ZVN0
cnVjdHVyZShKU0M6OkpTR2xvYmFsRGF0YSYgZ2xvYmFsRGF0YSwgSlNDOjpKU0dsb2JhbE9iamVj
dCogZ2xvYmFsT2JqZWN0LCBKU0M6OkpTVmFsdWUgcHJvdG90eXBlKVxuIik7CkBAIC0zNTA0LDEy
ICszNTAxLDEyIEBAIHN1YiBHZW5lcmF0ZUNvbnN0cnVjdG9yRGVmaW5pdGlvbgogCiAgICAgICAg
IG15ICRraW5kID0gJGhhc1N0YXRpY0Z1bmN0aW9ucyA/ICJQcm9wZXJ0eSIgOiAiVmFsdWUiOwog
Ci0gICAgICAgIHB1c2goQCRvdXRwdXRBcnJheSwgImJvb2wgJHtjb25zdHJ1Y3RvckNsYXNzTmFt
ZX06OmdldE93blByb3BlcnR5U2xvdChKU0NlbGwqIGNlbGwsIEV4ZWNTdGF0ZSogZXhlYywgY29u
c3QgSWRlbnRpZmllciYgcHJvcGVydHlOYW1lLCBQcm9wZXJ0eVNsb3QmIHNsb3QpXG4iKTsKKyAg
ICAgICAgcHVzaChAJG91dHB1dEFycmF5LCAiYm9vbCAke2NvbnN0cnVjdG9yQ2xhc3NOYW1lfTo6
Z2V0T3duUHJvcGVydHlTbG90KEpTQ2VsbCogY2VsbCwgRXhlY1N0YXRlKiBleGVjLCBQcm9wZXJ0
eU5hbWUgcHJvcGVydHlOYW1lLCBQcm9wZXJ0eVNsb3QmIHNsb3QpXG4iKTsKICAgICAgICAgcHVz
aChAJG91dHB1dEFycmF5LCAie1xuIik7CiAgICAgICAgIHB1c2goQCRvdXRwdXRBcnJheSwgIiAg
ICByZXR1cm4gZ2V0U3RhdGljJHtraW5kfVNsb3Q8JHtjb25zdHJ1Y3RvckNsYXNzTmFtZX0sIEpT
RE9NV3JhcHBlcj4oZXhlYywgJiR7Y29uc3RydWN0b3JDbGFzc05hbWV9VGFibGUsIGpzQ2FzdDwk
e2NvbnN0cnVjdG9yQ2xhc3NOYW1lfSo+KGNlbGwpLCBwcm9wZXJ0eU5hbWUsIHNsb3QpO1xuIik7
CiAgICAgICAgIHB1c2goQCRvdXRwdXRBcnJheSwgIn1cblxuIik7CiAKLSAgICAgICAgcHVzaChA
JG91dHB1dEFycmF5LCAiYm9vbCAke2NvbnN0cnVjdG9yQ2xhc3NOYW1lfTo6Z2V0T3duUHJvcGVy
dHlEZXNjcmlwdG9yKEpTT2JqZWN0KiBvYmplY3QsIEV4ZWNTdGF0ZSogZXhlYywgY29uc3QgSWRl
bnRpZmllciYgcHJvcGVydHlOYW1lLCBQcm9wZXJ0eURlc2NyaXB0b3ImIGRlc2NyaXB0b3IpXG4i
KTsKKyAgICAgICAgcHVzaChAJG91dHB1dEFycmF5LCAiYm9vbCAke2NvbnN0cnVjdG9yQ2xhc3NO
YW1lfTo6Z2V0T3duUHJvcGVydHlEZXNjcmlwdG9yKEpTT2JqZWN0KiBvYmplY3QsIEV4ZWNTdGF0
ZSogZXhlYywgUHJvcGVydHlOYW1lIHByb3BlcnR5TmFtZSwgUHJvcGVydHlEZXNjcmlwdG9yJiBk
ZXNjcmlwdG9yKVxuIik7CiAgICAgICAgIHB1c2goQCRvdXRwdXRBcnJheSwgIntcbiIpOwogICAg
ICAgICBwdXNoKEAkb3V0cHV0QXJyYXksICIgICAgcmV0dXJuIGdldFN0YXRpYyR7a2luZH1EZXNj
cmlwdG9yPCR7Y29uc3RydWN0b3JDbGFzc05hbWV9LCBKU0RPTVdyYXBwZXI+KGV4ZWMsICYke2Nv
bnN0cnVjdG9yQ2xhc3NOYW1lfVRhYmxlLCBqc0Nhc3Q8JHtjb25zdHJ1Y3RvckNsYXNzTmFtZX0q
PihvYmplY3QpLCBwcm9wZXJ0eU5hbWUsIGRlc2NyaXB0b3IpO1xuIik7CiAgICAgICAgIHB1c2go
QCRvdXRwdXRBcnJheSwgIn1cblxuIik7CkluZGV4OiBTb3VyY2UvV2ViQ29yZS9icmlkZ2UvcnVu
dGltZV9hcnJheS5jcHAKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL1dlYkNvcmUvYnJpZGdlL3J1bnRp
bWVfYXJyYXkuY3BwCShyZXZpc2lvbiAxMTY2NjcpCisrKyBTb3VyY2UvV2ViQ29yZS9icmlkZ2Uv
cnVudGltZV9hcnJheS5jcHAJKHdvcmtpbmcgY29weSkKQEAgLTYwLDcgKzYwLDcgQEAgdm9pZCBS
dW50aW1lQXJyYXk6OmRlc3Ryb3koSlNDZWxsKiBjZWxsKQogICAgIGpzQ2FzdDxSdW50aW1lQXJy
YXkqPihjZWxsKS0+UnVudGltZUFycmF5Ojp+UnVudGltZUFycmF5KCk7CiB9CiAKLUpTVmFsdWUg
UnVudGltZUFycmF5OjpsZW5ndGhHZXR0ZXIoRXhlY1N0YXRlKiwgSlNWYWx1ZSBzbG90QmFzZSwg
Y29uc3QgSWRlbnRpZmllciYpCitKU1ZhbHVlIFJ1bnRpbWVBcnJheTo6bGVuZ3RoR2V0dGVyKEV4
ZWNTdGF0ZSosIEpTVmFsdWUgc2xvdEJhc2UsIFByb3BlcnR5TmFtZSkKIHsKICAgICBSdW50aW1l
QXJyYXkqIHRoaXNPYmogPSBzdGF0aWNfY2FzdDxSdW50aW1lQXJyYXkqPihhc09iamVjdChzbG90
QmFzZSkpOwogICAgIHJldHVybiBqc051bWJlcih0aGlzT2JqLT5nZXRMZW5ndGgoKSk7CkBAIC04
NSw3ICs4NSw3IEBAIHZvaWQgUnVudGltZUFycmF5OjpnZXRPd25Qcm9wZXJ0eU5hbWVzKEoKICAg
ICBKU09iamVjdDo6Z2V0T3duUHJvcGVydHlOYW1lcyh0aGlzT2JqZWN0LCBleGVjLCBwcm9wZXJ0
eU5hbWVzLCBtb2RlKTsKIH0KIAotYm9vbCBSdW50aW1lQXJyYXk6OmdldE93blByb3BlcnR5U2xv
dChKU0NlbGwqIGNlbGwsIEV4ZWNTdGF0ZSogZXhlYywgY29uc3QgSWRlbnRpZmllciYgcHJvcGVy
dHlOYW1lLCBQcm9wZXJ0eVNsb3QmIHNsb3QpCitib29sIFJ1bnRpbWVBcnJheTo6Z2V0T3duUHJv
cGVydHlTbG90KEpTQ2VsbCogY2VsbCwgRXhlY1N0YXRlKiBleGVjLCBQcm9wZXJ0eU5hbWUgcHJv
cGVydHlOYW1lLCBQcm9wZXJ0eVNsb3QmIHNsb3QpCiB7CiAgICAgUnVudGltZUFycmF5KiB0aGlz
T2JqZWN0ID0ganNDYXN0PFJ1bnRpbWVBcnJheSo+KGNlbGwpOwogICAgIGlmIChwcm9wZXJ0eU5h
bWUgPT0gZXhlYy0+cHJvcGVydHlOYW1lcygpLmxlbmd0aCkgewpAQCAtOTMsMTkgKzkzLDE3IEBA
IGJvb2wgUnVudGltZUFycmF5OjpnZXRPd25Qcm9wZXJ0eVNsb3QoSlMKICAgICAgICAgcmV0dXJu
IHRydWU7CiAgICAgfQogICAgIAotICAgIGJvb2wgb2s7Ci0gICAgdW5zaWduZWQgaW5kZXggPSBw
cm9wZXJ0eU5hbWUudG9BcnJheUluZGV4KG9rKTsKLSAgICBpZiAob2spIHsKLSAgICAgICAgaWYg
KGluZGV4IDwgdGhpc09iamVjdC0+Z2V0TGVuZ3RoKCkpIHsKLSAgICAgICAgICAgIHNsb3Quc2V0
Q3VzdG9tSW5kZXgodGhpc09iamVjdCwgaW5kZXgsIHRoaXNPYmplY3QtPmluZGV4R2V0dGVyKTsK
LSAgICAgICAgICAgIHJldHVybiB0cnVlOwotICAgICAgICB9CisgICAgdW5zaWduZWQgaW5kZXgg
PSBwcm9wZXJ0eU5hbWUuYXNJbmRleCgpOworICAgIGlmIChpbmRleCA8IHRoaXNPYmplY3QtPmdl
dExlbmd0aCgpKSB7CisgICAgICAgIEFTU0VSVChpbmRleCAhPSBQcm9wZXJ0eU5hbWU6Ok5vdEFu
SW5kZXgpOworICAgICAgICBzbG90LnNldEN1c3RvbUluZGV4KHRoaXNPYmplY3QsIGluZGV4LCB0
aGlzT2JqZWN0LT5pbmRleEdldHRlcik7CisgICAgICAgIHJldHVybiB0cnVlOwogICAgIH0KICAg
ICAKICAgICByZXR1cm4gSlNPYmplY3Q6OmdldE93blByb3BlcnR5U2xvdCh0aGlzT2JqZWN0LCBl
eGVjLCBwcm9wZXJ0eU5hbWUsIHNsb3QpOwogfQogCi1ib29sIFJ1bnRpbWVBcnJheTo6Z2V0T3du
UHJvcGVydHlEZXNjcmlwdG9yKEpTT2JqZWN0KiBvYmplY3QsIEV4ZWNTdGF0ZSogZXhlYywgY29u
c3QgSWRlbnRpZmllciYgcHJvcGVydHlOYW1lLCBQcm9wZXJ0eURlc2NyaXB0b3ImIGRlc2NyaXB0
b3IpCitib29sIFJ1bnRpbWVBcnJheTo6Z2V0T3duUHJvcGVydHlEZXNjcmlwdG9yKEpTT2JqZWN0
KiBvYmplY3QsIEV4ZWNTdGF0ZSogZXhlYywgUHJvcGVydHlOYW1lIHByb3BlcnR5TmFtZSwgUHJv
cGVydHlEZXNjcmlwdG9yJiBkZXNjcmlwdG9yKQogewogICAgIFJ1bnRpbWVBcnJheSogdGhpc09i
amVjdCA9IGpzQ2FzdDxSdW50aW1lQXJyYXkqPihvYmplY3QpOwogICAgIGlmIChwcm9wZXJ0eU5h
bWUgPT0gZXhlYy0+cHJvcGVydHlOYW1lcygpLmxlbmd0aCkgewpAQCAtMTE1LDE1ICsxMTMsMTMg
QEAgYm9vbCBSdW50aW1lQXJyYXk6OmdldE93blByb3BlcnR5RGVzY3JpcAogICAgICAgICByZXR1
cm4gdHJ1ZTsKICAgICB9CiAgICAgCi0gICAgYm9vbCBvazsKLSAgICB1bnNpZ25lZCBpbmRleCA9
IHByb3BlcnR5TmFtZS50b0FycmF5SW5kZXgob2spOwotICAgIGlmIChvaykgewotICAgICAgICBp
ZiAoaW5kZXggPCB0aGlzT2JqZWN0LT5nZXRMZW5ndGgoKSkgewotICAgICAgICAgICAgUHJvcGVy
dHlTbG90IHNsb3Q7Ci0gICAgICAgICAgICBzbG90LnNldEN1c3RvbUluZGV4KHRoaXNPYmplY3Qs
IGluZGV4LCBpbmRleEdldHRlcik7Ci0gICAgICAgICAgICBkZXNjcmlwdG9yLnNldERlc2NyaXB0
b3Ioc2xvdC5nZXRWYWx1ZShleGVjLCBwcm9wZXJ0eU5hbWUpLCBEb250RGVsZXRlIHwgRG9udEVu
dW0pOwotICAgICAgICAgICAgcmV0dXJuIHRydWU7Ci0gICAgICAgIH0KKyAgICB1bnNpZ25lZCBp
bmRleCA9IHByb3BlcnR5TmFtZS5hc0luZGV4KCk7CisgICAgaWYgKGluZGV4IDwgdGhpc09iamVj
dC0+Z2V0TGVuZ3RoKCkpIHsKKyAgICAgICAgQVNTRVJUKGluZGV4ICE9IFByb3BlcnR5TmFtZTo6
Tm90QW5JbmRleCk7CisgICAgICAgIFByb3BlcnR5U2xvdCBzbG90OworICAgICAgICBzbG90LnNl
dEN1c3RvbUluZGV4KHRoaXNPYmplY3QsIGluZGV4LCBpbmRleEdldHRlcik7CisgICAgICAgIGRl
c2NyaXB0b3Iuc2V0RGVzY3JpcHRvcihzbG90LmdldFZhbHVlKGV4ZWMsIHByb3BlcnR5TmFtZSks
IERvbnREZWxldGUgfCBEb250RW51bSk7CisgICAgICAgIHJldHVybiB0cnVlOwogICAgIH0KICAg
ICAKICAgICByZXR1cm4gSlNPYmplY3Q6OmdldE93blByb3BlcnR5RGVzY3JpcHRvcih0aGlzT2Jq
ZWN0LCBleGVjLCBwcm9wZXJ0eU5hbWUsIGRlc2NyaXB0b3IpOwpAQCAtMTQwLDcgKzEzNiw3IEBA
IGJvb2wgUnVudGltZUFycmF5OjpnZXRPd25Qcm9wZXJ0eVNsb3RCeUkKICAgICByZXR1cm4gSlNP
YmplY3Q6OmdldE93blByb3BlcnR5U2xvdEJ5SW5kZXgodGhpc09iamVjdCwgZXhlYywgaW5kZXgs
IHNsb3QpOwogfQogCi12b2lkIFJ1bnRpbWVBcnJheTo6cHV0KEpTQ2VsbCogY2VsbCwgRXhlY1N0
YXRlKiBleGVjLCBjb25zdCBJZGVudGlmaWVyJiBwcm9wZXJ0eU5hbWUsIEpTVmFsdWUgdmFsdWUs
IFB1dFByb3BlcnR5U2xvdCYgc2xvdCkKK3ZvaWQgUnVudGltZUFycmF5OjpwdXQoSlNDZWxsKiBj
ZWxsLCBFeGVjU3RhdGUqIGV4ZWMsIFByb3BlcnR5TmFtZSBwcm9wZXJ0eU5hbWUsIEpTVmFsdWUg
dmFsdWUsIFB1dFByb3BlcnR5U2xvdCYgc2xvdCkKIHsKICAgICBSdW50aW1lQXJyYXkqIHRoaXNP
YmplY3QgPSBqc0Nhc3Q8UnVudGltZUFycmF5Kj4oY2VsbCk7CiAgICAgaWYgKHByb3BlcnR5TmFt
ZSA9PSBleGVjLT5wcm9wZXJ0eU5hbWVzKCkubGVuZ3RoKSB7CkBAIC0xNDgsOSArMTQ0LDggQEAg
dm9pZCBSdW50aW1lQXJyYXk6OnB1dChKU0NlbGwqIGNlbGwsIEV4ZQogICAgICAgICByZXR1cm47
CiAgICAgfQogICAgIAotICAgIGJvb2wgb2s7Ci0gICAgdW5zaWduZWQgaW5kZXggPSBwcm9wZXJ0
eU5hbWUudG9BcnJheUluZGV4KG9rKTsKLSAgICBpZiAob2spIHsKKyAgICB1bnNpZ25lZCBpbmRl
eCA9IHByb3BlcnR5TmFtZS5hc0luZGV4KCk7CisgICAgaWYgKGluZGV4ICE9IFByb3BlcnR5TmFt
ZTo6Tm90QW5JbmRleCkgewogICAgICAgICB0aGlzT2JqZWN0LT5nZXRDb25jcmV0ZUFycmF5KCkt
PnNldFZhbHVlQXQoZXhlYywgaW5kZXgsIHZhbHVlKTsKICAgICAgICAgcmV0dXJuOwogICAgIH0K
QEAgLTE2OSw3ICsxNjQsNyBAQCB2b2lkIFJ1bnRpbWVBcnJheTo6cHV0QnlJbmRleChKU0NlbGwq
IGNlCiAgICAgdGhpc09iamVjdC0+Z2V0Q29uY3JldGVBcnJheSgpLT5zZXRWYWx1ZUF0KGV4ZWMs
IGluZGV4LCB2YWx1ZSk7CiB9CiAKLWJvb2wgUnVudGltZUFycmF5OjpkZWxldGVQcm9wZXJ0eShK
U0NlbGwqLCBFeGVjU3RhdGUqLCBjb25zdCBJZGVudGlmaWVyJikKK2Jvb2wgUnVudGltZUFycmF5
OjpkZWxldGVQcm9wZXJ0eShKU0NlbGwqLCBFeGVjU3RhdGUqLCBQcm9wZXJ0eU5hbWUpCiB7CiAg
ICAgcmV0dXJuIGZhbHNlOwogfQpJbmRleDogU291cmNlL1dlYkNvcmUvYnJpZGdlL3J1bnRpbWVf
YXJyYXkuaAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2ViQ29yZS9icmlkZ2UvcnVudGltZV9hcnJh
eS5oCShyZXZpc2lvbiAxMTY2NjcpCisrKyBTb3VyY2UvV2ViQ29yZS9icmlkZ2UvcnVudGltZV9h
cnJheS5oCSh3b3JraW5nIGNvcHkpCkBAIC01MSwxMyArNTEsMTMgQEAgcHVibGljOgogICAgIHN0
YXRpYyB2b2lkIGRlc3Ryb3koSlNDZWxsKik7CiAKICAgICBzdGF0aWMgdm9pZCBnZXRPd25Qcm9w
ZXJ0eU5hbWVzKEpTT2JqZWN0KiwgRXhlY1N0YXRlKiwgUHJvcGVydHlOYW1lQXJyYXkmLCBFbnVt
ZXJhdGlvbk1vZGUpOwotICAgIHN0YXRpYyBib29sIGdldE93blByb3BlcnR5U2xvdChKU0NlbGwq
LCBFeGVjU3RhdGUqLCBjb25zdCBJZGVudGlmaWVyJiwgUHJvcGVydHlTbG90Jik7CisgICAgc3Rh
dGljIGJvb2wgZ2V0T3duUHJvcGVydHlTbG90KEpTQ2VsbCosIEV4ZWNTdGF0ZSosIFByb3BlcnR5
TmFtZSwgUHJvcGVydHlTbG90Jik7CiAgICAgc3RhdGljIGJvb2wgZ2V0T3duUHJvcGVydHlTbG90
QnlJbmRleChKU0NlbGwqLCBFeGVjU3RhdGUqLCB1bnNpZ25lZCwgUHJvcGVydHlTbG90Jik7Ci0g
ICAgc3RhdGljIGJvb2wgZ2V0T3duUHJvcGVydHlEZXNjcmlwdG9yKEpTT2JqZWN0KiwgRXhlY1N0
YXRlKiwgY29uc3QgSWRlbnRpZmllciYsIFByb3BlcnR5RGVzY3JpcHRvciYpOwotICAgIHN0YXRp
YyB2b2lkIHB1dChKU0NlbGwqLCBFeGVjU3RhdGUqLCBjb25zdCBJZGVudGlmaWVyJiBwcm9wZXJ0
eU5hbWUsIEpTVmFsdWUsIFB1dFByb3BlcnR5U2xvdCYpOworICAgIHN0YXRpYyBib29sIGdldE93
blByb3BlcnR5RGVzY3JpcHRvcihKU09iamVjdCosIEV4ZWNTdGF0ZSosIFByb3BlcnR5TmFtZSwg
UHJvcGVydHlEZXNjcmlwdG9yJik7CisgICAgc3RhdGljIHZvaWQgcHV0KEpTQ2VsbCosIEV4ZWNT
dGF0ZSosIFByb3BlcnR5TmFtZSwgSlNWYWx1ZSwgUHV0UHJvcGVydHlTbG90Jik7CiAgICAgc3Rh
dGljIHZvaWQgcHV0QnlJbmRleChKU0NlbGwqLCBFeGVjU3RhdGUqLCB1bnNpZ25lZCBwcm9wZXJ0
eU5hbWUsIEpTVmFsdWUsIGJvb2wgc2hvdWxkVGhyb3cpOwogICAgIAotICAgIHN0YXRpYyBib29s
IGRlbGV0ZVByb3BlcnR5KEpTQ2VsbCosIEV4ZWNTdGF0ZSosIGNvbnN0IElkZW50aWZpZXIgJnBy
b3BlcnR5TmFtZSk7CisgICAgc3RhdGljIGJvb2wgZGVsZXRlUHJvcGVydHkoSlNDZWxsKiwgRXhl
Y1N0YXRlKiwgUHJvcGVydHlOYW1lKTsKICAgICBzdGF0aWMgYm9vbCBkZWxldGVQcm9wZXJ0eUJ5
SW5kZXgoSlNDZWxsKiwgRXhlY1N0YXRlKiwgdW5zaWduZWQgcHJvcGVydHlOYW1lKTsKICAgICAK
ICAgICB1bnNpZ25lZCBnZXRMZW5ndGgoKSBjb25zdCB7IHJldHVybiBtX2FycmF5LT5nZXRMZW5n
dGgoKTsgfQpAQCAtODMsNyArODMsNyBAQCBwcm90ZWN0ZWQ6CiAKIHByaXZhdGU6CiAgICAgUnVu
dGltZUFycmF5KEV4ZWNTdGF0ZSosIFN0cnVjdHVyZSopOwotICAgIHN0YXRpYyBKU1ZhbHVlIGxl
bmd0aEdldHRlcihFeGVjU3RhdGUqLCBKU1ZhbHVlLCBjb25zdCBJZGVudGlmaWVyJik7CisgICAg
c3RhdGljIEpTVmFsdWUgbGVuZ3RoR2V0dGVyKEV4ZWNTdGF0ZSosIEpTVmFsdWUsIFByb3BlcnR5
TmFtZSk7CiAgICAgc3RhdGljIEpTVmFsdWUgaW5kZXhHZXR0ZXIoRXhlY1N0YXRlKiwgSlNWYWx1
ZSwgdW5zaWduZWQpOwogCiAgICAgQmluZGluZ3NBcnJheSogbV9hcnJheTsKSW5kZXg6IFNvdXJj
ZS9XZWJDb3JlL2JyaWRnZS9ydW50aW1lX21ldGhvZC5jcHAKPT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNl
L1dlYkNvcmUvYnJpZGdlL3J1bnRpbWVfbWV0aG9kLmNwcAkocmV2aXNpb24gMTE2NjY3KQorKysg
U291cmNlL1dlYkNvcmUvYnJpZGdlL3J1bnRpbWVfbWV0aG9kLmNwcAkod29ya2luZyBjb3B5KQpA
QCAtNTUsMTMgKzU1LDEzIEBAIHZvaWQgUnVudGltZU1ldGhvZDo6ZGVzdHJveShKU0NlbGwqIGNl
bGwKICAgICBqc0Nhc3Q8UnVudGltZU1ldGhvZCo+KGNlbGwpLT5SdW50aW1lTWV0aG9kOjp+UnVu
dGltZU1ldGhvZCgpOwogfQogCi12b2lkIFJ1bnRpbWVNZXRob2Q6OmZpbmlzaENyZWF0aW9uKEpT
R2xvYmFsRGF0YSYgZ2xvYmFsRGF0YSwgY29uc3QgSWRlbnRpZmllciYgaWRlbnQpCit2b2lkIFJ1
bnRpbWVNZXRob2Q6OmZpbmlzaENyZWF0aW9uKEpTR2xvYmFsRGF0YSYgZ2xvYmFsRGF0YSwgY29u
c3QgVVN0cmluZyYgaWRlbnQpCiB7CiAgICAgQmFzZTo6ZmluaXNoQ3JlYXRpb24oZ2xvYmFsRGF0
YSwgaWRlbnQpOwogICAgIEFTU0VSVChpbmhlcml0cygmc19pbmZvKSk7CiB9CiAKLUpTVmFsdWUg
UnVudGltZU1ldGhvZDo6bGVuZ3RoR2V0dGVyKEV4ZWNTdGF0ZSosIEpTVmFsdWUgc2xvdEJhc2Us
IGNvbnN0IElkZW50aWZpZXImKQorSlNWYWx1ZSBSdW50aW1lTWV0aG9kOjpsZW5ndGhHZXR0ZXIo
RXhlY1N0YXRlKiwgSlNWYWx1ZSBzbG90QmFzZSwgUHJvcGVydHlOYW1lKQogewogICAgIFJ1bnRp
bWVNZXRob2QqIHRoaXNPYmogPSBzdGF0aWNfY2FzdDxSdW50aW1lTWV0aG9kKj4oYXNPYmplY3Qo
c2xvdEJhc2UpKTsKIApAQCAtNzQsNyArNzQsNyBAQCBKU1ZhbHVlIFJ1bnRpbWVNZXRob2Q6Omxl
bmd0aEdldHRlcihFeGVjCiAgICAgcmV0dXJuIGpzTnVtYmVyKHRoaXNPYmotPl9tZXRob2RMaXN0
LT5hdCgwKS0+bnVtUGFyYW1ldGVycygpKTsKIH0KIAotYm9vbCBSdW50aW1lTWV0aG9kOjpnZXRP
d25Qcm9wZXJ0eVNsb3QoSlNDZWxsKiBjZWxsLCBFeGVjU3RhdGUqIGV4ZWMsIGNvbnN0IElkZW50
aWZpZXImIHByb3BlcnR5TmFtZSwgUHJvcGVydHlTbG90ICZzbG90KQorYm9vbCBSdW50aW1lTWV0
aG9kOjpnZXRPd25Qcm9wZXJ0eVNsb3QoSlNDZWxsKiBjZWxsLCBFeGVjU3RhdGUqIGV4ZWMsIFBy
b3BlcnR5TmFtZSBwcm9wZXJ0eU5hbWUsIFByb3BlcnR5U2xvdCAmc2xvdCkKIHsKICAgICBSdW50
aW1lTWV0aG9kKiB0aGlzT2JqZWN0ID0ganNDYXN0PFJ1bnRpbWVNZXRob2QqPihjZWxsKTsKICAg
ICBpZiAocHJvcGVydHlOYW1lID09IGV4ZWMtPnByb3BlcnR5TmFtZXMoKS5sZW5ndGgpIHsKQEAg
LTg1LDcgKzg1LDcgQEAgYm9vbCBSdW50aW1lTWV0aG9kOjpnZXRPd25Qcm9wZXJ0eVNsb3QoSgog
ICAgIHJldHVybiBJbnRlcm5hbEZ1bmN0aW9uOjpnZXRPd25Qcm9wZXJ0eVNsb3QodGhpc09iamVj
dCwgZXhlYywgcHJvcGVydHlOYW1lLCBzbG90KTsKIH0KIAotYm9vbCBSdW50aW1lTWV0aG9kOjpn
ZXRPd25Qcm9wZXJ0eURlc2NyaXB0b3IoSlNPYmplY3QqIG9iamVjdCwgRXhlY1N0YXRlKiBleGVj
LCBjb25zdCBJZGVudGlmaWVyJiBwcm9wZXJ0eU5hbWUsIFByb3BlcnR5RGVzY3JpcHRvciAmZGVz
Y3JpcHRvcikKK2Jvb2wgUnVudGltZU1ldGhvZDo6Z2V0T3duUHJvcGVydHlEZXNjcmlwdG9yKEpT
T2JqZWN0KiBvYmplY3QsIEV4ZWNTdGF0ZSogZXhlYywgUHJvcGVydHlOYW1lIHByb3BlcnR5TmFt
ZSwgUHJvcGVydHlEZXNjcmlwdG9yICZkZXNjcmlwdG9yKQogewogICAgIFJ1bnRpbWVNZXRob2Qq
IHRoaXNPYmplY3QgPSBqc0Nhc3Q8UnVudGltZU1ldGhvZCo+KG9iamVjdCk7CiAgICAgaWYgKHBy
b3BlcnR5TmFtZSA9PSBleGVjLT5wcm9wZXJ0eU5hbWVzKCkubGVuZ3RoKSB7CkluZGV4OiBTb3Vy
Y2UvV2ViQ29yZS9icmlkZ2UvcnVudGltZV9tZXRob2QuaAo9PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2Uv
V2ViQ29yZS9icmlkZ2UvcnVudGltZV9tZXRob2QuaAkocmV2aXNpb24gMTE2NjY3KQorKysgU291
cmNlL1dlYkNvcmUvYnJpZGdlL3J1bnRpbWVfbWV0aG9kLmgJKHdvcmtpbmcgY29weSkKQEAgLTM5
LDcgKzM5LDcgQEAgcHVibGljOgogCiAgICAgc3RhdGljIHZvaWQgZGVzdHJveShKU0NlbGwqKTsK
IAotICAgIHN0YXRpYyBSdW50aW1lTWV0aG9kKiBjcmVhdGUoRXhlY1N0YXRlKiBleGVjLCBKU0ds
b2JhbE9iamVjdCogZ2xvYmFsT2JqZWN0LCBTdHJ1Y3R1cmUqIHN0cnVjdHVyZSwgY29uc3QgSWRl
bnRpZmllciYgbmFtZSwgQmluZGluZ3M6Ok1ldGhvZExpc3QmIG1ldGhvZExpc3QpCisgICAgc3Rh
dGljIFJ1bnRpbWVNZXRob2QqIGNyZWF0ZShFeGVjU3RhdGUqIGV4ZWMsIEpTR2xvYmFsT2JqZWN0
KiBnbG9iYWxPYmplY3QsIFN0cnVjdHVyZSogc3RydWN0dXJlLCBjb25zdCBVU3RyaW5nJiBuYW1l
LCBCaW5kaW5nczo6TWV0aG9kTGlzdCYgbWV0aG9kTGlzdCkKICAgICB7CiAgICAgICAgIFJ1bnRp
bWVNZXRob2QqIG1ldGhvZCA9IG5ldyAoTm90TnVsbCwgYWxsb2NhdGVDZWxsPFJ1bnRpbWVNZXRo
b2Q+KCpleGVjLT5oZWFwKCkpKSBSdW50aW1lTWV0aG9kKGdsb2JhbE9iamVjdCwgc3RydWN0dXJl
LCBtZXRob2RMaXN0KTsKICAgICAgICAgbWV0aG9kLT5maW5pc2hDcmVhdGlvbihleGVjLT5nbG9i
YWxEYXRhKCksIG5hbWUpOwpAQCAtNjIsMTUgKzYyLDE1IEBAIHB1YmxpYzoKIAogcHJvdGVjdGVk
OgogICAgIFJ1bnRpbWVNZXRob2QoSlNHbG9iYWxPYmplY3QqLCBTdHJ1Y3R1cmUqLCBCaW5kaW5n
czo6TWV0aG9kTGlzdCYpOwotICAgIHZvaWQgZmluaXNoQ3JlYXRpb24oSlNHbG9iYWxEYXRhJiwg
Y29uc3QgSWRlbnRpZmllciYpOworICAgIHZvaWQgZmluaXNoQ3JlYXRpb24oSlNHbG9iYWxEYXRh
JiwgY29uc3QgVVN0cmluZyYpOwogICAgIHN0YXRpYyBjb25zdCB1bnNpZ25lZCBTdHJ1Y3R1cmVG
bGFncyA9IE92ZXJyaWRlc0dldE93blByb3BlcnR5U2xvdCB8IEludGVybmFsRnVuY3Rpb246OlN0
cnVjdHVyZUZsYWdzOwogICAgIHN0YXRpYyBDYWxsVHlwZSBnZXRDYWxsRGF0YShKU0NlbGwqLCBD
YWxsRGF0YSYpOwogCi0gICAgc3RhdGljIGJvb2wgZ2V0T3duUHJvcGVydHlTbG90KEpTQ2VsbCos
IEV4ZWNTdGF0ZSosIGNvbnN0IElkZW50aWZpZXImLCBQcm9wZXJ0eVNsb3QmKTsKLSAgICBzdGF0
aWMgYm9vbCBnZXRPd25Qcm9wZXJ0eURlc2NyaXB0b3IoSlNPYmplY3QqLCBFeGVjU3RhdGUqLCBj
b25zdCBJZGVudGlmaWVyJiwgUHJvcGVydHlEZXNjcmlwdG9yJik7CisgICAgc3RhdGljIGJvb2wg
Z2V0T3duUHJvcGVydHlTbG90KEpTQ2VsbCosIEV4ZWNTdGF0ZSosIFByb3BlcnR5TmFtZSwgUHJv
cGVydHlTbG90Jik7CisgICAgc3RhdGljIGJvb2wgZ2V0T3duUHJvcGVydHlEZXNjcmlwdG9yKEpT
T2JqZWN0KiwgRXhlY1N0YXRlKiwgUHJvcGVydHlOYW1lLCBQcm9wZXJ0eURlc2NyaXB0b3ImKTsK
IAogcHJpdmF0ZToKLSAgICBzdGF0aWMgSlNWYWx1ZSBsZW5ndGhHZXR0ZXIoRXhlY1N0YXRlKiwg
SlNWYWx1ZSwgY29uc3QgSWRlbnRpZmllciYpOworICAgIHN0YXRpYyBKU1ZhbHVlIGxlbmd0aEdl
dHRlcihFeGVjU3RhdGUqLCBKU1ZhbHVlLCBQcm9wZXJ0eU5hbWUpOwogCiAgICAgT3duUHRyPEJp
bmRpbmdzOjpNZXRob2RMaXN0PiBfbWV0aG9kTGlzdDsKIH07CkluZGV4OiBTb3VyY2UvV2ViQ29y
ZS9icmlkZ2UvcnVudGltZV9vYmplY3QuY3BwCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9XZWJDb3Jl
L2JyaWRnZS9ydW50aW1lX29iamVjdC5jcHAJKHJldmlzaW9uIDExNjY2NykKKysrIFNvdXJjZS9X
ZWJDb3JlL2JyaWRnZS9ydW50aW1lX29iamVjdC5jcHAJKHdvcmtpbmcgY29weSkKQEAgLTY0LDcg
KzY0LDcgQEAgdm9pZCBSdW50aW1lT2JqZWN0OjppbnZhbGlkYXRlKCkKICAgICBtX2luc3RhbmNl
ID0gMDsKIH0KIAotSlNWYWx1ZSBSdW50aW1lT2JqZWN0OjpmYWxsYmFja09iamVjdEdldHRlcihF
eGVjU3RhdGUqIGV4ZWMsIEpTVmFsdWUgc2xvdEJhc2UsIGNvbnN0IElkZW50aWZpZXImIHByb3Bl
cnR5TmFtZSkKK0pTVmFsdWUgUnVudGltZU9iamVjdDo6ZmFsbGJhY2tPYmplY3RHZXR0ZXIoRXhl
Y1N0YXRlKiBleGVjLCBKU1ZhbHVlIHNsb3RCYXNlLCBQcm9wZXJ0eU5hbWUgcHJvcGVydHlOYW1l
KQogewogICAgIFJ1bnRpbWVPYmplY3QqIHRoaXNPYmogPSBzdGF0aWNfY2FzdDxSdW50aW1lT2Jq
ZWN0Kj4oYXNPYmplY3Qoc2xvdEJhc2UpKTsKICAgICBSZWZQdHI8SW5zdGFuY2U+IGluc3RhbmNl
ID0gdGhpc09iai0+bV9pbnN0YW5jZTsKQEAgLTgyLDcgKzgyLDcgQEAgSlNWYWx1ZSBSdW50aW1l
T2JqZWN0OjpmYWxsYmFja09iamVjdEdldAogICAgIHJldHVybiByZXN1bHQ7CiB9CiAKLUpTVmFs
dWUgUnVudGltZU9iamVjdDo6ZmllbGRHZXR0ZXIoRXhlY1N0YXRlKiBleGVjLCBKU1ZhbHVlIHNs
b3RCYXNlLCBjb25zdCBJZGVudGlmaWVyJiBwcm9wZXJ0eU5hbWUpCitKU1ZhbHVlIFJ1bnRpbWVP
YmplY3Q6OmZpZWxkR2V0dGVyKEV4ZWNTdGF0ZSogZXhlYywgSlNWYWx1ZSBzbG90QmFzZSwgUHJv
cGVydHlOYW1lIHByb3BlcnR5TmFtZSkKIHsgICAgCiAgICAgUnVudGltZU9iamVjdCogdGhpc09i
aiA9IHN0YXRpY19jYXN0PFJ1bnRpbWVPYmplY3QqPihhc09iamVjdChzbG90QmFzZSkpOwogICAg
IFJlZlB0cjxJbnN0YW5jZT4gaW5zdGFuY2UgPSB0aGlzT2JqLT5tX2luc3RhbmNlOwpAQCAtMTAx
LDcgKzEwMSw3IEBAIEpTVmFsdWUgUnVudGltZU9iamVjdDo6ZmllbGRHZXR0ZXIoRXhlY1MKICAg
ICByZXR1cm4gcmVzdWx0OwogfQogCi1KU1ZhbHVlIFJ1bnRpbWVPYmplY3Q6Om1ldGhvZEdldHRl
cihFeGVjU3RhdGUqIGV4ZWMsIEpTVmFsdWUgc2xvdEJhc2UsIGNvbnN0IElkZW50aWZpZXImIHBy
b3BlcnR5TmFtZSkKK0pTVmFsdWUgUnVudGltZU9iamVjdDo6bWV0aG9kR2V0dGVyKEV4ZWNTdGF0
ZSogZXhlYywgSlNWYWx1ZSBzbG90QmFzZSwgUHJvcGVydHlOYW1lIHByb3BlcnR5TmFtZSkKIHsK
ICAgICBSdW50aW1lT2JqZWN0KiB0aGlzT2JqID0gc3RhdGljX2Nhc3Q8UnVudGltZU9iamVjdCo+
KGFzT2JqZWN0KHNsb3RCYXNlKSk7CiAgICAgUmVmUHRyPEluc3RhbmNlPiBpbnN0YW5jZSA9IHRo
aXNPYmotPm1faW5zdGFuY2U7CkBAIC0xMTgsNyArMTE4LDcgQEAgSlNWYWx1ZSBSdW50aW1lT2Jq
ZWN0OjptZXRob2RHZXR0ZXIoRXhlYwogICAgIHJldHVybiBtZXRob2Q7CiB9CiAKLWJvb2wgUnVu
dGltZU9iamVjdDo6Z2V0T3duUHJvcGVydHlTbG90KEpTQ2VsbCogY2VsbCwgRXhlY1N0YXRlICpl
eGVjLCBjb25zdCBJZGVudGlmaWVyJiBwcm9wZXJ0eU5hbWUsIFByb3BlcnR5U2xvdCYgc2xvdCkK
K2Jvb2wgUnVudGltZU9iamVjdDo6Z2V0T3duUHJvcGVydHlTbG90KEpTQ2VsbCogY2VsbCwgRXhl
Y1N0YXRlICpleGVjLCBQcm9wZXJ0eU5hbWUgcHJvcGVydHlOYW1lLCBQcm9wZXJ0eVNsb3QmIHNs
b3QpCiB7CiAgICAgUnVudGltZU9iamVjdCogdGhpc09iamVjdCA9IGpzQ2FzdDxSdW50aW1lT2Jq
ZWN0Kj4oY2VsbCk7CiAgICAgaWYgKCF0aGlzT2JqZWN0LT5tX2luc3RhbmNlKSB7CkBAIC0xNjQs
NyArMTY0LDcgQEAgYm9vbCBSdW50aW1lT2JqZWN0OjpnZXRPd25Qcm9wZXJ0eVNsb3QoSgogICAg
IHJldHVybiBpbnN0YW5jZS0+Z2V0T3duUHJvcGVydHlTbG90KHRoaXNPYmplY3QsIGV4ZWMsIHBy
b3BlcnR5TmFtZSwgc2xvdCk7CiB9CiAKLWJvb2wgUnVudGltZU9iamVjdDo6Z2V0T3duUHJvcGVy
dHlEZXNjcmlwdG9yKEpTT2JqZWN0KiBvYmplY3QsIEV4ZWNTdGF0ZSAqZXhlYywgY29uc3QgSWRl
bnRpZmllciYgcHJvcGVydHlOYW1lLCBQcm9wZXJ0eURlc2NyaXB0b3ImIGRlc2NyaXB0b3IpCiti
b29sIFJ1bnRpbWVPYmplY3Q6OmdldE93blByb3BlcnR5RGVzY3JpcHRvcihKU09iamVjdCogb2Jq
ZWN0LCBFeGVjU3RhdGUgKmV4ZWMsIFByb3BlcnR5TmFtZSBwcm9wZXJ0eU5hbWUsIFByb3BlcnR5
RGVzY3JpcHRvciYgZGVzY3JpcHRvcikKIHsKICAgICBSdW50aW1lT2JqZWN0KiB0aGlzT2JqZWN0
ID0ganNDYXN0PFJ1bnRpbWVPYmplY3QqPihvYmplY3QpOwogICAgIGlmICghdGhpc09iamVjdC0+
bV9pbnN0YW5jZSkgewpAQCAtMjE0LDcgKzIxNCw3IEBAIGJvb2wgUnVudGltZU9iamVjdDo6Z2V0
T3duUHJvcGVydHlEZXNjcmkKICAgICByZXR1cm4gaW5zdGFuY2UtPmdldE93blByb3BlcnR5RGVz
Y3JpcHRvcih0aGlzT2JqZWN0LCBleGVjLCBwcm9wZXJ0eU5hbWUsIGRlc2NyaXB0b3IpOwogfQog
Ci12b2lkIFJ1bnRpbWVPYmplY3Q6OnB1dChKU0NlbGwqIGNlbGwsIEV4ZWNTdGF0ZSogZXhlYywg
Y29uc3QgSWRlbnRpZmllciYgcHJvcGVydHlOYW1lLCBKU1ZhbHVlIHZhbHVlLCBQdXRQcm9wZXJ0
eVNsb3QmIHNsb3QpCit2b2lkIFJ1bnRpbWVPYmplY3Q6OnB1dChKU0NlbGwqIGNlbGwsIEV4ZWNT
dGF0ZSogZXhlYywgUHJvcGVydHlOYW1lIHByb3BlcnR5TmFtZSwgSlNWYWx1ZSB2YWx1ZSwgUHV0
UHJvcGVydHlTbG90JiBzbG90KQogewogICAgIFJ1bnRpbWVPYmplY3QqIHRoaXNPYmplY3QgPSBq
c0Nhc3Q8UnVudGltZU9iamVjdCo+KGNlbGwpOwogICAgIGlmICghdGhpc09iamVjdC0+bV9pbnN0
YW5jZSkgewpAQCAtMjM1LDcgKzIzNSw3IEBAIHZvaWQgUnVudGltZU9iamVjdDo6cHV0KEpTQ2Vs
bCogY2VsbCwgRXgKICAgICBpbnN0YW5jZS0+ZW5kKCk7CiB9CiAKLWJvb2wgUnVudGltZU9iamVj
dDo6ZGVsZXRlUHJvcGVydHkoSlNDZWxsKiwgRXhlY1N0YXRlKiwgY29uc3QgSWRlbnRpZmllciYp
Citib29sIFJ1bnRpbWVPYmplY3Q6OmRlbGV0ZVByb3BlcnR5KEpTQ2VsbCosIEV4ZWNTdGF0ZSos
IFByb3BlcnR5TmFtZSkKIHsKICAgICAvLyBDYW4gbmV2ZXIgcmVtb3ZlIGEgcHJvcGVydHkgb2Yg
YSBSdW50aW1lT2JqZWN0LgogICAgIHJldHVybiBmYWxzZTsKSW5kZXg6IFNvdXJjZS9XZWJDb3Jl
L2JyaWRnZS9ydW50aW1lX29iamVjdC5oCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9XZWJDb3JlL2Jy
aWRnZS9ydW50aW1lX29iamVjdC5oCShyZXZpc2lvbiAxMTY2NjcpCisrKyBTb3VyY2UvV2ViQ29y
ZS9icmlkZ2UvcnVudGltZV9vYmplY3QuaAkod29ya2luZyBjb3B5KQpAQCAtNDUsMTAgKzQ1LDEw
IEBAIHB1YmxpYzoKIAogICAgIHN0YXRpYyB2b2lkIGRlc3Ryb3koSlNDZWxsKik7CiAKLSAgICBz
dGF0aWMgYm9vbCBnZXRPd25Qcm9wZXJ0eVNsb3QoSlNDZWxsKiwgRXhlY1N0YXRlKiwgY29uc3Qg
SWRlbnRpZmllciYgcHJvcGVydHlOYW1lLCBQcm9wZXJ0eVNsb3QmKTsKLSAgICBzdGF0aWMgYm9v
bCBnZXRPd25Qcm9wZXJ0eURlc2NyaXB0b3IoSlNPYmplY3QqLCBFeGVjU3RhdGUqLCBjb25zdCBJ
ZGVudGlmaWVyJiBwcm9wZXJ0eU5hbWUsIFByb3BlcnR5RGVzY3JpcHRvciYpOwotICAgIHN0YXRp
YyB2b2lkIHB1dChKU0NlbGwqLCBFeGVjU3RhdGUqLCBjb25zdCBJZGVudGlmaWVyJiBwcm9wZXJ0
eU5hbWUsIEpTVmFsdWUsIFB1dFByb3BlcnR5U2xvdCYpOwotICAgIHN0YXRpYyBib29sIGRlbGV0
ZVByb3BlcnR5KEpTQ2VsbCosIEV4ZWNTdGF0ZSosIGNvbnN0IElkZW50aWZpZXImIHByb3BlcnR5
TmFtZSk7CisgICAgc3RhdGljIGJvb2wgZ2V0T3duUHJvcGVydHlTbG90KEpTQ2VsbCosIEV4ZWNT
dGF0ZSosIFByb3BlcnR5TmFtZSwgUHJvcGVydHlTbG90Jik7CisgICAgc3RhdGljIGJvb2wgZ2V0
T3duUHJvcGVydHlEZXNjcmlwdG9yKEpTT2JqZWN0KiwgRXhlY1N0YXRlKiwgUHJvcGVydHlOYW1l
LCBQcm9wZXJ0eURlc2NyaXB0b3ImKTsKKyAgICBzdGF0aWMgdm9pZCBwdXQoSlNDZWxsKiwgRXhl
Y1N0YXRlKiwgUHJvcGVydHlOYW1lLCBKU1ZhbHVlLCBQdXRQcm9wZXJ0eVNsb3QmKTsKKyAgICBz
dGF0aWMgYm9vbCBkZWxldGVQcm9wZXJ0eShKU0NlbGwqLCBFeGVjU3RhdGUqLCBQcm9wZXJ0eU5h
bWUpOwogICAgIHN0YXRpYyBKU1ZhbHVlIGRlZmF1bHRWYWx1ZShjb25zdCBKU09iamVjdCosIEV4
ZWNTdGF0ZSosIFByZWZlcnJlZFByaW1pdGl2ZVR5cGUpOwogICAgIHN0YXRpYyBDYWxsVHlwZSBn
ZXRDYWxsRGF0YShKU0NlbGwqLCBDYWxsRGF0YSYpOwogICAgIHN0YXRpYyBDb25zdHJ1Y3RUeXBl
IGdldENvbnN0cnVjdERhdGEoSlNDZWxsKiwgQ29uc3RydWN0RGF0YSYpOwpAQCAtNzksOSArNzks
OSBAQCBwcm90ZWN0ZWQ6CiAgICAgc3RhdGljIGNvbnN0IHVuc2lnbmVkIFN0cnVjdHVyZUZsYWdz
ID0gT3ZlcnJpZGVzR2V0T3duUHJvcGVydHlTbG90IHwgT3ZlcnJpZGVzR2V0UHJvcGVydHlOYW1l
cyB8IEJhc2U6OlN0cnVjdHVyZUZsYWdzOwogCiBwcml2YXRlOgotICAgIHN0YXRpYyBKU1ZhbHVl
IGZhbGxiYWNrT2JqZWN0R2V0dGVyKEV4ZWNTdGF0ZSosIEpTVmFsdWUsIGNvbnN0IElkZW50aWZp
ZXImKTsKLSAgICBzdGF0aWMgSlNWYWx1ZSBmaWVsZEdldHRlcihFeGVjU3RhdGUqLCBKU1ZhbHVl
LCBjb25zdCBJZGVudGlmaWVyJik7Ci0gICAgc3RhdGljIEpTVmFsdWUgbWV0aG9kR2V0dGVyKEV4
ZWNTdGF0ZSosIEpTVmFsdWUsIGNvbnN0IElkZW50aWZpZXImKTsKKyAgICBzdGF0aWMgSlNWYWx1
ZSBmYWxsYmFja09iamVjdEdldHRlcihFeGVjU3RhdGUqLCBKU1ZhbHVlLCBQcm9wZXJ0eU5hbWUp
OworICAgIHN0YXRpYyBKU1ZhbHVlIGZpZWxkR2V0dGVyKEV4ZWNTdGF0ZSosIEpTVmFsdWUsIFBy
b3BlcnR5TmFtZSk7CisgICAgc3RhdGljIEpTVmFsdWUgbWV0aG9kR2V0dGVyKEV4ZWNTdGF0ZSos
IEpTVmFsdWUsIFByb3BlcnR5TmFtZSk7CiAKICAgICBSZWZQdHI8SW5zdGFuY2U+IG1faW5zdGFu
Y2U7CiB9OwpJbmRleDogU291cmNlL1dlYkNvcmUvYnJpZGdlL2MvY19jbGFzcy5jcHAKPT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PQotLS0gU291cmNlL1dlYkNvcmUvYnJpZGdlL2MvY19jbGFzcy5jcHAJKHJldmlzaW9uIDEx
NjY2NykKKysrIFNvdXJjZS9XZWJDb3JlL2JyaWRnZS9jL2NfY2xhc3MuY3BwCSh3b3JraW5nIGNv
cHkpCkBAIC03MywyNCArNzMsMjYgQEAgQ0NsYXNzKiBDQ2xhc3M6OmNsYXNzRm9ySXNBKE5QQ2xh
c3MqIGlzYQogICAgIHJldHVybiBhQ2xhc3M7CiB9CiAKLU1ldGhvZExpc3QgQ0NsYXNzOjptZXRo
b2RzTmFtZWQoY29uc3QgSWRlbnRpZmllciYgaWRlbnRpZmllciwgSW5zdGFuY2UqIGluc3RhbmNl
KSBjb25zdAorTWV0aG9kTGlzdCBDQ2xhc3M6Om1ldGhvZHNOYW1lZChQcm9wZXJ0eU5hbWUgaWRl
bnRpZmllciwgSW5zdGFuY2UqIGluc3RhbmNlKSBjb25zdAogeworICAgIFVTdHJpbmcgbmFtZShp
ZGVudGlmaWVyLmltcGwoKSk7CisgICAgCiAgICAgTWV0aG9kTGlzdCBtZXRob2RMaXN0OwogCi0g
ICAgTWV0aG9kKiBtZXRob2QgPSBfbWV0aG9kcy5nZXQoaWRlbnRpZmllci51c3RyaW5nKCkuaW1w
bCgpKTsKKyAgICBNZXRob2QqIG1ldGhvZCA9IF9tZXRob2RzLmdldChuYW1lLmltcGwoKSk7CiAg
ICAgaWYgKG1ldGhvZCkgewogICAgICAgICBtZXRob2RMaXN0LmFwcGVuZChtZXRob2QpOwogICAg
ICAgICByZXR1cm4gbWV0aG9kTGlzdDsKICAgICB9CiAKLSAgICBOUElkZW50aWZpZXIgaWRlbnQg
PSBfTlBOX0dldFN0cmluZ0lkZW50aWZpZXIoaWRlbnRpZmllci5hc2NpaSgpLmRhdGEoKSk7Cisg
ICAgTlBJZGVudGlmaWVyIGlkZW50ID0gX05QTl9HZXRTdHJpbmdJZGVudGlmaWVyKG5hbWUuYXNj
aWkoKS5kYXRhKCkpOwogICAgIGNvbnN0IENJbnN0YW5jZSogaW5zdCA9IHN0YXRpY19jYXN0PGNv
bnN0IENJbnN0YW5jZSo+KGluc3RhbmNlKTsKICAgICBOUE9iamVjdCogb2JqID0gaW5zdC0+Z2V0
T2JqZWN0KCk7CiAgICAgaWYgKF9pc2EtPmhhc01ldGhvZCAmJiBfaXNhLT5oYXNNZXRob2Qob2Jq
LCBpZGVudCkpewogICAgICAgICBNZXRob2QqIGFNZXRob2QgPSBuZXcgQ01ldGhvZChpZGVudCk7
IC8vIGRlbGV0ZWQgaW4gdGhlIENDbGFzcyBkZXN0cnVjdG9yCiAgICAgICAgIHsKICAgICAgICAg
ICAgIEpTTG9jayBsb2NrKFNpbGVuY2VBc3NlcnRpb25zT25seSk7Ci0gICAgICAgICAgICBfbWV0
aG9kcy5zZXQoaWRlbnRpZmllci51c3RyaW5nKCkuaW1wbCgpLCBhTWV0aG9kKTsKKyAgICAgICAg
ICAgIF9tZXRob2RzLnNldChuYW1lLmltcGwoKSwgYU1ldGhvZCk7CiAgICAgICAgIH0KICAgICAg
ICAgbWV0aG9kTGlzdC5hcHBlbmQoYU1ldGhvZCk7CiAgICAgfQpAQCAtOTgsMjAgKzEwMCwyMiBA
QCBNZXRob2RMaXN0IENDbGFzczo6bWV0aG9kc05hbWVkKGNvbnN0IElkCiAgICAgcmV0dXJuIG1l
dGhvZExpc3Q7CiB9CiAKLUZpZWxkKiBDQ2xhc3M6OmZpZWxkTmFtZWQoY29uc3QgSWRlbnRpZmll
ciYgaWRlbnRpZmllciwgSW5zdGFuY2UqIGluc3RhbmNlKSBjb25zdAorRmllbGQqIENDbGFzczo6
ZmllbGROYW1lZChQcm9wZXJ0eU5hbWUgaWRlbnRpZmllciwgSW5zdGFuY2UqIGluc3RhbmNlKSBj
b25zdAogewotICAgIEZpZWxkKiBhRmllbGQgPSBfZmllbGRzLmdldChpZGVudGlmaWVyLnVzdHJp
bmcoKS5pbXBsKCkpOworICAgIFVTdHJpbmcgbmFtZShpZGVudGlmaWVyLmltcGwoKSk7CisgICAg
CisgICAgRmllbGQqIGFGaWVsZCA9IF9maWVsZHMuZ2V0KG5hbWUuaW1wbCgpKTsKICAgICBpZiAo
YUZpZWxkKQogICAgICAgICByZXR1cm4gYUZpZWxkOwogICAgIAotICAgIE5QSWRlbnRpZmllciBp
ZGVudCA9IF9OUE5fR2V0U3RyaW5nSWRlbnRpZmllcihpZGVudGlmaWVyLmFzY2lpKCkuZGF0YSgp
KTsKKyAgICBOUElkZW50aWZpZXIgaWRlbnQgPSBfTlBOX0dldFN0cmluZ0lkZW50aWZpZXIobmFt
ZS5hc2NpaSgpLmRhdGEoKSk7CiAgICAgY29uc3QgQ0luc3RhbmNlKiBpbnN0ID0gc3RhdGljX2Nh
c3Q8Y29uc3QgQ0luc3RhbmNlKj4oaW5zdGFuY2UpOwogICAgIE5QT2JqZWN0KiBvYmogPSBpbnN0
LT5nZXRPYmplY3QoKTsKICAgICBpZiAoX2lzYS0+aGFzUHJvcGVydHkgJiYgX2lzYS0+aGFzUHJv
cGVydHkob2JqLCBpZGVudCkpewogICAgICAgICBhRmllbGQgPSBuZXcgQ0ZpZWxkKGlkZW50KTsg
Ly8gZGVsZXRlZCBpbiB0aGUgQ0NsYXNzIGRlc3RydWN0b3IKICAgICAgICAgewogICAgICAgICAg
ICAgSlNMb2NrIGxvY2soU2lsZW5jZUFzc2VydGlvbnNPbmx5KTsKLSAgICAgICAgICAgIF9maWVs
ZHMuc2V0KGlkZW50aWZpZXIudXN0cmluZygpLmltcGwoKSwgYUZpZWxkKTsKKyAgICAgICAgICAg
IF9maWVsZHMuc2V0KG5hbWUuaW1wbCgpLCBhRmllbGQpOwogICAgICAgICB9CiAgICAgfQogICAg
IHJldHVybiBhRmllbGQ7CkluZGV4OiBTb3VyY2UvV2ViQ29yZS9icmlkZ2UvYy9jX2NsYXNzLmgK
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PQotLS0gU291cmNlL1dlYkNvcmUvYnJpZGdlL2MvY19jbGFzcy5oCShyZXZpc2lv
biAxMTY2NjcpCisrKyBTb3VyY2UvV2ViQ29yZS9icmlkZ2UvYy9jX2NsYXNzLmgJKHdvcmtpbmcg
Y29weSkKQEAgLTQzLDggKzQzLDggQEAgcHVibGljOgogICAgIHN0YXRpYyBDQ2xhc3MqIGNsYXNz
Rm9ySXNBKE5QQ2xhc3MqKTsKICAgICB2aXJ0dWFsIH5DQ2xhc3MoKTsKIAotICAgIHZpcnR1YWwg
TWV0aG9kTGlzdCBtZXRob2RzTmFtZWQoY29uc3QgSWRlbnRpZmllciYsIEluc3RhbmNlKikgY29u
c3Q7Ci0gICAgdmlydHVhbCBGaWVsZCogZmllbGROYW1lZChjb25zdCBJZGVudGlmaWVyJiwgSW5z
dGFuY2UqKSBjb25zdDsKKyAgICB2aXJ0dWFsIE1ldGhvZExpc3QgbWV0aG9kc05hbWVkKFByb3Bl
cnR5TmFtZSwgSW5zdGFuY2UqKSBjb25zdDsKKyAgICB2aXJ0dWFsIEZpZWxkKiBmaWVsZE5hbWVk
KFByb3BlcnR5TmFtZSwgSW5zdGFuY2UqKSBjb25zdDsKIAogcHJpdmF0ZToKICAgICBOUENsYXNz
KiBfaXNhOwpJbmRleDogU291cmNlL1dlYkNvcmUvYnJpZGdlL2MvY19pbnN0YW5jZS5jcHAKPT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PQotLS0gU291cmNlL1dlYkNvcmUvYnJpZGdlL2MvY19pbnN0YW5jZS5jcHAJKHJldmlz
aW9uIDExNjY2NykKKysrIFNvdXJjZS9XZWJDb3JlL2JyaWRnZS9jL2NfaW5zdGFuY2UuY3BwCSh3
b3JraW5nIGNvcHkpCkBAIC0xMTMsNyArMTEzLDcgQEAgY2xhc3MgQ1J1bnRpbWVNZXRob2QgOiBw
dWJsaWMgUnVudGltZU1ldAogcHVibGljOgogICAgIHR5cGVkZWYgUnVudGltZU1ldGhvZCBCYXNl
OwogCi0gICAgc3RhdGljIENSdW50aW1lTWV0aG9kKiBjcmVhdGUoRXhlY1N0YXRlKiBleGVjLCBK
U0dsb2JhbE9iamVjdCogZ2xvYmFsT2JqZWN0LCBjb25zdCBJZGVudGlmaWVyJiBuYW1lLCBCaW5k
aW5nczo6TWV0aG9kTGlzdCYgbGlzdCkKKyAgICBzdGF0aWMgQ1J1bnRpbWVNZXRob2QqIGNyZWF0
ZShFeGVjU3RhdGUqIGV4ZWMsIEpTR2xvYmFsT2JqZWN0KiBnbG9iYWxPYmplY3QsIGNvbnN0IFVT
dHJpbmcmIG5hbWUsIEJpbmRpbmdzOjpNZXRob2RMaXN0JiBsaXN0KQogICAgIHsKICAgICAgICAg
Ly8gRklYTUU6IGRlcHJlY2F0ZWRHZXRET01TdHJ1Y3R1cmUgdXNlcyB0aGUgcHJvdG90eXBlIG9m
ZiBvZiB0aGUgd3JvbmcgZ2xvYmFsIG9iamVjdAogICAgICAgICAvLyBXZSBuZWVkIHRvIHBhc3Mg
aW4gdGhlIHJpZ2h0IGdsb2JhbCBvYmplY3QgZm9yICJpIi4KQEAgLTEzNiw3ICsxMzYsNyBAQCBw
cml2YXRlOgogICAgIHsKICAgICB9CiAKLSAgICB2b2lkIGZpbmlzaENyZWF0aW9uKEpTR2xvYmFs
RGF0YSYgZ2xvYmFsRGF0YSwgY29uc3QgSWRlbnRpZmllciYgbmFtZSkKKyAgICB2b2lkIGZpbmlz
aENyZWF0aW9uKEpTR2xvYmFsRGF0YSYgZ2xvYmFsRGF0YSwgY29uc3QgVVN0cmluZyYgbmFtZSkK
ICAgICB7CiAgICAgICAgIEJhc2U6OmZpbmlzaENyZWF0aW9uKGdsb2JhbERhdGEsIG5hbWUpOwog
ICAgICAgICBBU1NFUlQoaW5oZXJpdHMoJnNfaW5mbykpOwpAQCAtMTQ2LDEwICsxNDYsMTAgQEAg
cHJpdmF0ZToKIAogY29uc3QgQ2xhc3NJbmZvIENSdW50aW1lTWV0aG9kOjpzX2luZm8gPSB7ICJD
UnVudGltZU1ldGhvZCIsICZSdW50aW1lTWV0aG9kOjpzX2luZm8sIDAsIDAsIENSRUFURV9NRVRI
T0RfVEFCTEUoQ1J1bnRpbWVNZXRob2QpIH07CiAKLUpTVmFsdWUgQ0luc3RhbmNlOjpnZXRNZXRo
b2QoRXhlY1N0YXRlKiBleGVjLCBjb25zdCBJZGVudGlmaWVyJiBwcm9wZXJ0eU5hbWUpCitKU1Zh
bHVlIENJbnN0YW5jZTo6Z2V0TWV0aG9kKEV4ZWNTdGF0ZSogZXhlYywgUHJvcGVydHlOYW1lIHBy
b3BlcnR5TmFtZSkKIHsKICAgICBNZXRob2RMaXN0IG1ldGhvZExpc3QgPSBnZXRDbGFzcygpLT5t
ZXRob2RzTmFtZWQocHJvcGVydHlOYW1lLCB0aGlzKTsKLSAgICByZXR1cm4gQ1J1bnRpbWVNZXRo
b2Q6OmNyZWF0ZShleGVjLCBleGVjLT5sZXhpY2FsR2xvYmFsT2JqZWN0KCksIHByb3BlcnR5TmFt
ZSwgbWV0aG9kTGlzdCk7CisgICAgcmV0dXJuIENSdW50aW1lTWV0aG9kOjpjcmVhdGUoZXhlYywg
ZXhlYy0+bGV4aWNhbEdsb2JhbE9iamVjdCgpLCBwcm9wZXJ0eU5hbWUuaW1wbCgpLCBtZXRob2RM
aXN0KTsKIH0KIAogSlNWYWx1ZSBDSW5zdGFuY2U6Omludm9rZU1ldGhvZChFeGVjU3RhdGUqIGV4
ZWMsIFJ1bnRpbWVNZXRob2QqIHJ1bnRpbWVNZXRob2QpCkluZGV4OiBTb3VyY2UvV2ViQ29yZS9i
cmlkZ2UvYy9jX2luc3RhbmNlLmgKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL1dlYkNvcmUvYnJpZGdl
L2MvY19pbnN0YW5jZS5oCShyZXZpc2lvbiAxMTY2NjcpCisrKyBTb3VyY2UvV2ViQ29yZS9icmlk
Z2UvYy9jX2luc3RhbmNlLmgJKHdvcmtpbmcgY29weSkKQEAgLTU5LDcgKzU5LDcgQEAgcHVibGlj
OgogICAgIHZpcnR1YWwgSlNWYWx1ZSB2YWx1ZU9mKEV4ZWNTdGF0ZSopIGNvbnN0OwogICAgIHZp
cnR1YWwgSlNWYWx1ZSBkZWZhdWx0VmFsdWUoRXhlY1N0YXRlKiwgUHJlZmVycmVkUHJpbWl0aXZl
VHlwZSkgY29uc3Q7CiAKLSAgICB2aXJ0dWFsIEpTVmFsdWUgZ2V0TWV0aG9kKEV4ZWNTdGF0ZSog
ZXhlYywgY29uc3QgSWRlbnRpZmllciYgcHJvcGVydHlOYW1lKTsKKyAgICB2aXJ0dWFsIEpTVmFs
dWUgZ2V0TWV0aG9kKEV4ZWNTdGF0ZSosIFByb3BlcnR5TmFtZSk7CiAgICAgdmlydHVhbCBKU1Zh
bHVlIGludm9rZU1ldGhvZChFeGVjU3RhdGUqLCBSdW50aW1lTWV0aG9kKiBtZXRob2QpOwogICAg
IHZpcnR1YWwgYm9vbCBzdXBwb3J0c0ludm9rZURlZmF1bHRNZXRob2QoKSBjb25zdDsKICAgICB2
aXJ0dWFsIEpTVmFsdWUgaW52b2tlRGVmYXVsdE1ldGhvZChFeGVjU3RhdGUqKTsKSW5kZXg6IFNv
dXJjZS9XZWJDb3JlL2JyaWRnZS9qbmkvanNjL0phdmFDbGFzc0pTQy5jcHAKPT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQot
LS0gU291cmNlL1dlYkNvcmUvYnJpZGdlL2puaS9qc2MvSmF2YUNsYXNzSlNDLmNwcAkocmV2aXNp
b24gMTE2NjY3KQorKysgU291cmNlL1dlYkNvcmUvYnJpZGdlL2puaS9qc2MvSmF2YUNsYXNzSlND
LmNwcAkod29ya2luZyBjb3B5KQpAQCAtMTE0LDcgKzExNCw3IEBAIEphdmFDbGFzczo6fkphdmFD
bGFzcygpCiAgICAgbV9tZXRob2RzLmNsZWFyKCk7CiB9CiAKLU1ldGhvZExpc3QgSmF2YUNsYXNz
OjptZXRob2RzTmFtZWQoY29uc3QgSWRlbnRpZmllciYgaWRlbnRpZmllciwgSW5zdGFuY2UqKSBj
b25zdAorTWV0aG9kTGlzdCBKYXZhQ2xhc3M6Om1ldGhvZHNOYW1lZChQcm9wZXJ0eU5hbWUgaWRl
bnRpZmllciwgSW5zdGFuY2UqKSBjb25zdAogewogICAgIE1ldGhvZExpc3QqIG1ldGhvZExpc3Qg
PSBtX21ldGhvZHMuZ2V0KGlkZW50aWZpZXIudXN0cmluZygpLmltcGwoKSk7CiAKQEAgLTEyMyw3
ICsxMjMsNyBAQCBNZXRob2RMaXN0IEphdmFDbGFzczo6bWV0aG9kc05hbWVkKGNvbnN0CiAgICAg
cmV0dXJuIE1ldGhvZExpc3QoKTsKIH0KIAotRmllbGQqIEphdmFDbGFzczo6ZmllbGROYW1lZChj
b25zdCBJZGVudGlmaWVyJiBpZGVudGlmaWVyLCBJbnN0YW5jZSopIGNvbnN0CitGaWVsZCogSmF2
YUNsYXNzOjpmaWVsZE5hbWVkKFByb3BlcnR5TmFtZSBpZGVudGlmaWVyLCBJbnN0YW5jZSopIGNv
bnN0CiB7CiAgICAgcmV0dXJuIG1fZmllbGRzLmdldChpZGVudGlmaWVyLnVzdHJpbmcoKS5pbXBs
KCkpOwogfQpJbmRleDogU291cmNlL1dlYkNvcmUvYnJpZGdlL2puaS9qc2MvSmF2YUNsYXNzSlND
LmgKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PQotLS0gU291cmNlL1dlYkNvcmUvYnJpZGdlL2puaS9qc2MvSmF2YUNsYXNz
SlNDLmgJKHJldmlzaW9uIDExNjY2NykKKysrIFNvdXJjZS9XZWJDb3JlL2JyaWRnZS9qbmkvanNj
L0phdmFDbGFzc0pTQy5oCSh3b3JraW5nIGNvcHkpCkBAIC00MSw4ICs0MSw4IEBAIHB1YmxpYzoK
ICAgICBKYXZhQ2xhc3Moam9iamVjdCk7CiAgICAgfkphdmFDbGFzcygpOwogCi0gICAgdmlydHVh
bCBNZXRob2RMaXN0IG1ldGhvZHNOYW1lZChjb25zdCBJZGVudGlmaWVyJiwgSW5zdGFuY2UqKSBj
b25zdDsKLSAgICB2aXJ0dWFsIEZpZWxkKiBmaWVsZE5hbWVkKGNvbnN0IElkZW50aWZpZXImLCBJ
bnN0YW5jZSopIGNvbnN0OworICAgIHZpcnR1YWwgTWV0aG9kTGlzdCBtZXRob2RzTmFtZWQoUHJv
cGVydHlOYW1lLCBJbnN0YW5jZSopIGNvbnN0OworICAgIHZpcnR1YWwgRmllbGQqIGZpZWxkTmFt
ZWQoUHJvcGVydHlOYW1lLCBJbnN0YW5jZSopIGNvbnN0OwogCiAgICAgYm9vbCBpc051bWJlckNs
YXNzKCkgY29uc3Q7CiAgICAgYm9vbCBpc0Jvb2xlYW5DbGFzcygpIGNvbnN0OwpJbmRleDogU291
cmNlL1dlYkNvcmUvYnJpZGdlL2puaS9qc2MvSmF2YUluc3RhbmNlSlNDLmNwcAo9PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
Ci0tLSBTb3VyY2UvV2ViQ29yZS9icmlkZ2Uvam5pL2pzYy9KYXZhSW5zdGFuY2VKU0MuY3BwCShy
ZXZpc2lvbiAxMTY2NjcpCisrKyBTb3VyY2UvV2ViQ29yZS9icmlkZ2Uvam5pL2pzYy9KYXZhSW5z
dGFuY2VKU0MuY3BwCSh3b3JraW5nIGNvcHkpCkBAIC0xMTgsNyArMTE4LDcgQEAgY2xhc3MgSmF2
YVJ1bnRpbWVNZXRob2QgOiBwdWJsaWMgUnVudGltZQogcHVibGljOgogICAgIHR5cGVkZWYgUnVu
dGltZU1ldGhvZCBCYXNlOwogCi0gICAgc3RhdGljIEphdmFSdW50aW1lTWV0aG9kKiBjcmVhdGUo
RXhlY1N0YXRlKiBleGVjLCBKU0dsb2JhbE9iamVjdCogZ2xvYmFsT2JqZWN0LCBjb25zdCBJZGVu
dGlmaWVyJiBuYW1lLCBCaW5kaW5nczo6TWV0aG9kTGlzdCYgbGlzdCkKKyAgICBzdGF0aWMgSmF2
YVJ1bnRpbWVNZXRob2QqIGNyZWF0ZShFeGVjU3RhdGUqIGV4ZWMsIEpTR2xvYmFsT2JqZWN0KiBn
bG9iYWxPYmplY3QsIGNvbnN0IFVTdHJpbmcmIG5hbWUsIEJpbmRpbmdzOjpNZXRob2RMaXN0JiBs
aXN0KQogICAgIHsKICAgICAgICAgLy8gRklYTUU6IGRlcHJlY2F0ZWRHZXRET01TdHJ1Y3R1cmUg
dXNlcyB0aGUgcHJvdG90eXBlIG9mZiBvZiB0aGUgd3JvbmcgZ2xvYmFsIG9iamVjdAogICAgICAg
ICAvLyBXZSBuZWVkIHRvIHBhc3MgaW4gdGhlIHJpZ2h0IGdsb2JhbCBvYmplY3QgZm9yICJpIi4K
QEAgLTE0MSw3ICsxNDEsNyBAQCBwcml2YXRlOgogICAgIHsKICAgICB9CiAKLSAgICB2b2lkIGZp
bmlzaENyZWF0aW9uKEpTR2xvYmFsRGF0YSYgZ2xvYmFsRGF0YSwgY29uc3QgSWRlbnRpZmllciYg
bmFtZSkKKyAgICB2b2lkIGZpbmlzaENyZWF0aW9uKEpTR2xvYmFsRGF0YSYgZ2xvYmFsRGF0YSwg
Y29uc3QgVVN0cmluZyYgbmFtZSkKICAgICB7CiAgICAgICAgIEJhc2U6OmZpbmlzaENyZWF0aW9u
KGdsb2JhbERhdGEsIG5hbWUpOwogICAgICAgICBBU1NFUlQoaW5oZXJpdHMoJnNfaW5mbykpOwpA
QCAtMTUwLDEwICsxNTAsMTAgQEAgcHJpdmF0ZToKIAogY29uc3QgQ2xhc3NJbmZvIEphdmFSdW50
aW1lTWV0aG9kOjpzX2luZm8gPSB7ICJKYXZhUnVudGltZU1ldGhvZCIsICZSdW50aW1lTWV0aG9k
OjpzX2luZm8sIDAsIDAsIENSRUFURV9NRVRIT0RfVEFCTEUoSmF2YVJ1bnRpbWVNZXRob2QpIH07
CiAKLUpTVmFsdWUgSmF2YUluc3RhbmNlOjpnZXRNZXRob2QoRXhlY1N0YXRlKiBleGVjLCBjb25z
dCBJZGVudGlmaWVyJiBwcm9wZXJ0eU5hbWUpCitKU1ZhbHVlIEphdmFJbnN0YW5jZTo6Z2V0TWV0
aG9kKEV4ZWNTdGF0ZSogZXhlYywgUHJvcGVydHlOYW1lIHByb3BlcnR5TmFtZSkKIHsKICAgICBN
ZXRob2RMaXN0IG1ldGhvZExpc3QgPSBnZXRDbGFzcygpLT5tZXRob2RzTmFtZWQocHJvcGVydHlO
YW1lLCB0aGlzKTsKLSAgICByZXR1cm4gSmF2YVJ1bnRpbWVNZXRob2Q6OmNyZWF0ZShleGVjLCBl
eGVjLT5sZXhpY2FsR2xvYmFsT2JqZWN0KCksIHByb3BlcnR5TmFtZSwgbWV0aG9kTGlzdCk7Cisg
ICAgcmV0dXJuIEphdmFSdW50aW1lTWV0aG9kOjpjcmVhdGUoZXhlYywgZXhlYy0+bGV4aWNhbEds
b2JhbE9iamVjdCgpLCBwcm9wZXJ0eU5hbWUudXN0cmluZygpLCBtZXRob2RMaXN0KTsKIH0KIAog
SlNWYWx1ZSBKYXZhSW5zdGFuY2U6Omludm9rZU1ldGhvZChFeGVjU3RhdGUqIGV4ZWMsIFJ1bnRp
bWVNZXRob2QqIHJ1bnRpbWVNZXRob2QpCkluZGV4OiBTb3VyY2UvV2ViQ29yZS9icmlkZ2Uvam5p
L2pzYy9KYXZhSW5zdGFuY2VKU0MuaAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2ViQ29yZS9icmlk
Z2Uvam5pL2pzYy9KYXZhSW5zdGFuY2VKU0MuaAkocmV2aXNpb24gMTE2NjY3KQorKysgU291cmNl
L1dlYkNvcmUvYnJpZGdlL2puaS9qc2MvSmF2YUluc3RhbmNlSlNDLmgJKHdvcmtpbmcgY29weSkK
QEAgLTUzLDggKzUzLDggQEAgcHVibGljOgogICAgIHZpcnR1YWwgSlNWYWx1ZSB2YWx1ZU9mKEV4
ZWNTdGF0ZSopIGNvbnN0OwogICAgIHZpcnR1YWwgSlNWYWx1ZSBkZWZhdWx0VmFsdWUoRXhlY1N0
YXRlKiwgUHJlZmVycmVkUHJpbWl0aXZlVHlwZSkgY29uc3Q7CiAKLSAgICB2aXJ0dWFsIEpTVmFs
dWUgZ2V0TWV0aG9kKEV4ZWNTdGF0ZSogZXhlYywgY29uc3QgSWRlbnRpZmllciYgcHJvcGVydHlO
YW1lKTsKLSAgICB2aXJ0dWFsIEpTVmFsdWUgaW52b2tlTWV0aG9kKEV4ZWNTdGF0ZSogZXhlYywg
UnVudGltZU1ldGhvZCogbWV0aG9kKTsKKyAgICB2aXJ0dWFsIEpTVmFsdWUgZ2V0TWV0aG9kKEV4
ZWNTdGF0ZSosIFByb3BlcnR5TmFtZSk7CisgICAgdmlydHVhbCBKU1ZhbHVlIGludm9rZU1ldGhv
ZChFeGVjU3RhdGUqLCBSdW50aW1lTWV0aG9kKik7CiAKICAgICBqb2JqZWN0IGphdmFJbnN0YW5j
ZSgpIGNvbnN0IHsgcmV0dXJuIG1faW5zdGFuY2UtPmluc3RhbmNlKCk7IH0KIApJbmRleDogU291
cmNlL1dlYkNvcmUvYnJpZGdlL2pzYy9CcmlkZ2VKU0MuaAo9PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2Uv
V2ViQ29yZS9icmlkZ2UvanNjL0JyaWRnZUpTQy5oCShyZXZpc2lvbiAxMTY2NjcpCisrKyBTb3Vy
Y2UvV2ViQ29yZS9icmlkZ2UvanNjL0JyaWRnZUpTQy5oCSh3b3JraW5nIGNvcHkpCkBAIC02Miw5
ICs2Miw5IEBAIGNsYXNzIENsYXNzIHsKICAgICBXVEZfTUFLRV9OT05DT1BZQUJMRShDbGFzcyk7
IFdURl9NQUtFX0ZBU1RfQUxMT0NBVEVEOwogcHVibGljOgogICAgIENsYXNzKCkgeyB9Ci0gICAg
dmlydHVhbCBNZXRob2RMaXN0IG1ldGhvZHNOYW1lZChjb25zdCBJZGVudGlmaWVyJiwgSW5zdGFu
Y2UqKSBjb25zdCA9IDA7Ci0gICAgdmlydHVhbCBGaWVsZCogZmllbGROYW1lZChjb25zdCBJZGVu
dGlmaWVyJiwgSW5zdGFuY2UqKSBjb25zdCA9IDA7Ci0gICAgdmlydHVhbCBKU1ZhbHVlIGZhbGxi
YWNrT2JqZWN0KEV4ZWNTdGF0ZSosIEluc3RhbmNlKiwgY29uc3QgSWRlbnRpZmllciYpIHsgcmV0
dXJuIGpzVW5kZWZpbmVkKCk7IH0KKyAgICB2aXJ0dWFsIE1ldGhvZExpc3QgbWV0aG9kc05hbWVk
KFByb3BlcnR5TmFtZSwgSW5zdGFuY2UqKSBjb25zdCA9IDA7CisgICAgdmlydHVhbCBGaWVsZCog
ZmllbGROYW1lZChQcm9wZXJ0eU5hbWUsIEluc3RhbmNlKikgY29uc3QgPSAwOworICAgIHZpcnR1
YWwgSlNWYWx1ZSBmYWxsYmFja09iamVjdChFeGVjU3RhdGUqLCBJbnN0YW5jZSosIFByb3BlcnR5
TmFtZSkgeyByZXR1cm4ganNVbmRlZmluZWQoKTsgfQogCiAgICAgdmlydHVhbCB+Q2xhc3MoKSB7
IH0KIH07CkBAIC04OSw5ICs4OSw5IEBAIHB1YmxpYzoKICAgICB2b2lkIHdpbGxJbnZhbGlkYXRl
UnVudGltZU9iamVjdCgpOwogCiAgICAgLy8gUmV0dXJucyBmYWxzZSBpZiB0aGUgdmFsdWUgd2Fz
IG5vdCBzZXQgc3VjY2Vzc2Z1bGx5LgotICAgIHZpcnR1YWwgYm9vbCBzZXRWYWx1ZU9mVW5kZWZp
bmVkRmllbGQoRXhlY1N0YXRlKiwgY29uc3QgSWRlbnRpZmllciYsIEpTVmFsdWUpIHsgcmV0dXJu
IGZhbHNlOyB9CisgICAgdmlydHVhbCBib29sIHNldFZhbHVlT2ZVbmRlZmluZWRGaWVsZChFeGVj
U3RhdGUqLCBQcm9wZXJ0eU5hbWUsIEpTVmFsdWUpIHsgcmV0dXJuIGZhbHNlOyB9CiAKLSAgICB2
aXJ0dWFsIEpTVmFsdWUgZ2V0TWV0aG9kKEV4ZWNTdGF0ZSogZXhlYywgY29uc3QgSWRlbnRpZmll
ciYgcHJvcGVydHlOYW1lKSA9IDA7CisgICAgdmlydHVhbCBKU1ZhbHVlIGdldE1ldGhvZChFeGVj
U3RhdGUqLCBQcm9wZXJ0eU5hbWUpID0gMDsKICAgICB2aXJ0dWFsIEpTVmFsdWUgaW52b2tlTWV0
aG9kKEV4ZWNTdGF0ZSosIFJ1bnRpbWVNZXRob2QqIG1ldGhvZCkgPSAwOwogCiAgICAgdmlydHVh
bCBib29sIHN1cHBvcnRzSW52b2tlRGVmYXVsdE1ldGhvZCgpIGNvbnN0IHsgcmV0dXJuIGZhbHNl
OyB9CkBAIC0xMTAsOSArMTEwLDkgQEAgcHVibGljOgogCiAgICAgdmlydHVhbCB+SW5zdGFuY2Uo
KTsKIAotICAgIHZpcnR1YWwgYm9vbCBnZXRPd25Qcm9wZXJ0eVNsb3QoSlNPYmplY3QqLCBFeGVj
U3RhdGUqLCBjb25zdCBJZGVudGlmaWVyJiwgUHJvcGVydHlTbG90JikgeyByZXR1cm4gZmFsc2U7
IH0KLSAgICB2aXJ0dWFsIGJvb2wgZ2V0T3duUHJvcGVydHlEZXNjcmlwdG9yKEpTT2JqZWN0Kiwg
RXhlY1N0YXRlKiwgY29uc3QgSWRlbnRpZmllciYsIFByb3BlcnR5RGVzY3JpcHRvciYpIHsgcmV0
dXJuIGZhbHNlOyB9Ci0gICAgdmlydHVhbCB2b2lkIHB1dChKU09iamVjdCosIEV4ZWNTdGF0ZSos
IGNvbnN0IElkZW50aWZpZXImLCBKU1ZhbHVlLCBQdXRQcm9wZXJ0eVNsb3QmKSB7IH0KKyAgICB2
aXJ0dWFsIGJvb2wgZ2V0T3duUHJvcGVydHlTbG90KEpTT2JqZWN0KiwgRXhlY1N0YXRlKiwgUHJv
cGVydHlOYW1lLCBQcm9wZXJ0eVNsb3QmKSB7IHJldHVybiBmYWxzZTsgfQorICAgIHZpcnR1YWwg
Ym9vbCBnZXRPd25Qcm9wZXJ0eURlc2NyaXB0b3IoSlNPYmplY3QqLCBFeGVjU3RhdGUqLCBQcm9w
ZXJ0eU5hbWUsIFByb3BlcnR5RGVzY3JpcHRvciYpIHsgcmV0dXJuIGZhbHNlOyB9CisgICAgdmly
dHVhbCB2b2lkIHB1dChKU09iamVjdCosIEV4ZWNTdGF0ZSosIFByb3BlcnR5TmFtZSwgSlNWYWx1
ZSwgUHV0UHJvcGVydHlTbG90JikgeyB9CiAKIHByb3RlY3RlZDoKICAgICB2aXJ0dWFsIHZvaWQg
dmlydHVhbEJlZ2luKCkgeyB9CkluZGV4OiBTb3VyY2UvV2ViQ29yZS9icmlkZ2Uvb2JqYy9vYmpj
X2NsYXNzLmgKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL1dlYkNvcmUvYnJpZGdlL29iamMvb2JqY19j
bGFzcy5oCShyZXZpc2lvbiAxMTY2NjcpCisrKyBTb3VyY2UvV2ViQ29yZS9icmlkZ2Uvb2JqYy9v
YmpjX2NsYXNzLmgJKHdvcmtpbmcgY29weSkKQEAgLTQxLDEwICs0MSwxMCBAQCBwdWJsaWM6CiAg
ICAgLy8gUmV0dXJuIHRoZSBjYWNoZWQgT2JqQyBvZiB0aGUgc3BlY2lmaWVkIG5hbWUuCiAgICAg
c3RhdGljIE9iamNDbGFzcyAqY2xhc3NGb3JJc0EoQ2xhc3NTdHJ1Y3RQdHIpOwogICAgIAotICAg
IHZpcnR1YWwgTWV0aG9kTGlzdCBtZXRob2RzTmFtZWQoY29uc3QgSWRlbnRpZmllciYsIEluc3Rh
bmNlICppbnN0YW5jZSkgY29uc3Q7Ci0gICAgdmlydHVhbCBGaWVsZCAqZmllbGROYW1lZChjb25z
dCBJZGVudGlmaWVyJiwgSW5zdGFuY2UgKmluc3RhbmNlKSBjb25zdDsKKyAgICB2aXJ0dWFsIE1l
dGhvZExpc3QgbWV0aG9kc05hbWVkKFByb3BlcnR5TmFtZSwgSW5zdGFuY2UqKSBjb25zdDsKKyAg
ICB2aXJ0dWFsIEZpZWxkICpmaWVsZE5hbWVkKFByb3BlcnR5TmFtZSwgSW5zdGFuY2UqKSBjb25z
dDsKIAotICAgIHZpcnR1YWwgSlNWYWx1ZSBmYWxsYmFja09iamVjdChFeGVjU3RhdGUgKmV4ZWMs
IEluc3RhbmNlICppbnN0YW5jZSwgY29uc3QgSWRlbnRpZmllciAmcHJvcGVydHlOYW1lKTsKKyAg
ICB2aXJ0dWFsIEpTVmFsdWUgZmFsbGJhY2tPYmplY3QoRXhlY1N0YXRlKiwgSW5zdGFuY2UqLCBQ
cm9wZXJ0eU5hbWUpOwogICAgIAogICAgIENsYXNzU3RydWN0UHRyIGlzYSgpIHsgcmV0dXJuIF9p
c2E7IH0KICAgICAKSW5kZXg6IFNvdXJjZS9XZWJDb3JlL2JyaWRnZS9vYmpjL29iamNfY2xhc3Mu
bW0KPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PQotLS0gU291cmNlL1dlYkNvcmUvYnJpZGdlL29iamMvb2JqY19jbGFzcy5t
bQkocmV2aXNpb24gMTE2NjY3KQorKysgU291cmNlL1dlYkNvcmUvYnJpZGdlL29iamMvb2JqY19j
bGFzcy5tbQkod29ya2luZyBjb3B5KQpAQCAtOTUsNyArOTUsNyBAQCBzdGF0aWMgaW5saW5lIHZv
aWQgY29udmVydEpTTWV0aG9kTmFtZVRvCiAgICAgfQogfQogCi1NZXRob2RMaXN0IE9iamNDbGFz
czo6bWV0aG9kc05hbWVkKGNvbnN0IElkZW50aWZpZXImIGlkZW50aWZpZXIsIEluc3RhbmNlKikg
Y29uc3QKK01ldGhvZExpc3QgT2JqY0NsYXNzOjptZXRob2RzTmFtZWQoUHJvcGVydHlOYW1lIGlk
ZW50aWZpZXIsIEluc3RhbmNlKikgY29uc3QKIHsKICAgICBNZXRob2RMaXN0IG1ldGhvZExpc3Q7
CiAgICAgaWYgKE1ldGhvZCogbWV0aG9kID0gbV9tZXRob2RDYWNoZS5nZXQoaWRlbnRpZmllci5p
bXBsKCkpKSB7CkBAIC0xMDMsNyArMTAzLDcgQEAgTWV0aG9kTGlzdCBPYmpjQ2xhc3M6Om1ldGhv
ZHNOYW1lZChjb25zdAogICAgICAgICByZXR1cm4gbWV0aG9kTGlzdDsKICAgICB9CiAKLSAgICBD
U3RyaW5nIGpzTmFtZSA9IGlkZW50aWZpZXIuYXNjaWkoKTsKKyAgICBDU3RyaW5nIGpzTmFtZSA9
IGlkZW50aWZpZXIudXN0cmluZygpLmFzY2lpKCk7CiAgICAgSlNOYW1lQ29udmVyc2lvbkJ1ZmZl
ciBidWZmZXI7CiAgICAgY29udmVydEpTTWV0aG9kTmFtZVRvT2JqYyhqc05hbWUsIGJ1ZmZlcik7
CiAgICAgUmV0YWluUHRyPENGU3RyaW5nUmVmPiBtZXRob2ROYW1lKEFkb3B0Q0YsIENGU3RyaW5n
Q3JlYXRlV2l0aENTdHJpbmcoTlVMTCwgYnVmZmVyLmRhdGEoKSwga0NGU3RyaW5nRW5jb2RpbmdB
U0NJSSkpOwpAQCAtMTQzLDcgKzE0Myw3IEBAIE1ldGhvZExpc3QgT2JqY0NsYXNzOjptZXRob2Rz
TmFtZWQoY29uc3QKICAgICByZXR1cm4gbWV0aG9kTGlzdDsKIH0KIAotRmllbGQqIE9iamNDbGFz
czo6ZmllbGROYW1lZChjb25zdCBJZGVudGlmaWVyJiBpZGVudGlmaWVyLCBJbnN0YW5jZSogaW5z
dGFuY2UpIGNvbnN0CitGaWVsZCogT2JqY0NsYXNzOjpmaWVsZE5hbWVkKFByb3BlcnR5TmFtZSBp
ZGVudGlmaWVyLCBJbnN0YW5jZSogaW5zdGFuY2UpIGNvbnN0CiB7CiAgICAgRmllbGQqIGZpZWxk
ID0gbV9maWVsZENhY2hlLmdldChpZGVudGlmaWVyLmltcGwoKSk7CiAgICAgaWYgKGZpZWxkKQpA
QCAtMTUxLDcgKzE1MSw3IEBAIEZpZWxkKiBPYmpjQ2xhc3M6OmZpZWxkTmFtZWQoY29uc3QgSWRl
bnQKIAogICAgIENsYXNzU3RydWN0UHRyIHRoaXNDbGFzcyA9IF9pc2E7CiAKLSAgICBDU3RyaW5n
IGpzTmFtZSA9IGlkZW50aWZpZXIuYXNjaWkoKTsKKyAgICBDU3RyaW5nIGpzTmFtZSA9IGlkZW50
aWZpZXIudXN0cmluZygpLmFzY2lpKCk7CiAgICAgUmV0YWluUHRyPENGU3RyaW5nUmVmPiBmaWVs
ZE5hbWUoQWRvcHRDRiwgQ0ZTdHJpbmdDcmVhdGVXaXRoQ1N0cmluZyhOVUxMLCBqc05hbWUuZGF0
YSgpLCBrQ0ZTdHJpbmdFbmNvZGluZ0FTQ0lJKSk7CiAgICAgaWQgdGFyZ2V0T2JqZWN0ID0gKHN0
YXRpY19jYXN0PE9iamNJbnN0YW5jZSo+KGluc3RhbmNlKSktPmdldE9iamVjdCgpOwogICAgIGlk
IGF0dHJpYnV0ZXMgPSBbdGFyZ2V0T2JqZWN0IGF0dHJpYnV0ZUtleXNdOwpAQCAtMjIxLDE0ICsy
MjEsMTQgQEAgRmllbGQqIE9iamNDbGFzczo6ZmllbGROYW1lZChjb25zdCBJZGVudAogICAgIHJl
dHVybiBmaWVsZDsKIH0KIAotSlNWYWx1ZSBPYmpjQ2xhc3M6OmZhbGxiYWNrT2JqZWN0KEV4ZWNT
dGF0ZSogZXhlYywgSW5zdGFuY2UqIGluc3RhbmNlLCBjb25zdCBJZGVudGlmaWVyICZwcm9wZXJ0
eU5hbWUpCitKU1ZhbHVlIE9iamNDbGFzczo6ZmFsbGJhY2tPYmplY3QoRXhlY1N0YXRlKiBleGVj
LCBJbnN0YW5jZSogaW5zdGFuY2UsIFByb3BlcnR5TmFtZSBwcm9wZXJ0eU5hbWUpCiB7CiAgICAg
T2JqY0luc3RhbmNlKiBvYmpjSW5zdGFuY2UgPSBzdGF0aWNfY2FzdDxPYmpjSW5zdGFuY2UqPihp
bnN0YW5jZSk7CiAgICAgaWQgdGFyZ2V0T2JqZWN0ID0gb2JqY0luc3RhbmNlLT5nZXRPYmplY3Qo
KTsKICAgICAKICAgICBpZiAoIVt0YXJnZXRPYmplY3QgcmVzcG9uZHNUb1NlbGVjdG9yOkBzZWxl
Y3RvcihpbnZva2VVbmRlZmluZWRNZXRob2RGcm9tV2ViU2NyaXB0OndpdGhBcmd1bWVudHM6KV0p
CiAgICAgICAgIHJldHVybiBqc1VuZGVmaW5lZCgpOwotICAgIHJldHVybiBPYmpjRmFsbGJhY2tP
YmplY3RJbXA6OmNyZWF0ZShleGVjLCBleGVjLT5sZXhpY2FsR2xvYmFsT2JqZWN0KCksIG9iamNJ
bnN0YW5jZSwgcHJvcGVydHlOYW1lKTsKKyAgICByZXR1cm4gT2JqY0ZhbGxiYWNrT2JqZWN0SW1w
OjpjcmVhdGUoZXhlYywgZXhlYy0+bGV4aWNhbEdsb2JhbE9iamVjdCgpLCBvYmpjSW5zdGFuY2Us
IHByb3BlcnR5TmFtZS5pbXBsKCkpOwogfQogCiB9CkluZGV4OiBTb3VyY2UvV2ViQ29yZS9icmlk
Z2Uvb2JqYy9vYmpjX2luc3RhbmNlLmgKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL1dlYkNvcmUvYnJp
ZGdlL29iamMvb2JqY19pbnN0YW5jZS5oCShyZXZpc2lvbiAxMTY2NjcpCisrKyBTb3VyY2UvV2Vi
Q29yZS9icmlkZ2Uvb2JqYy9vYmpjX2luc3RhbmNlLmgJKHdvcmtpbmcgY29weSkKQEAgLTQ3LDE0
ICs0NywxNCBAQCBwdWJsaWM6CiAgICAgdmlydHVhbCBKU1ZhbHVlIHZhbHVlT2YoRXhlY1N0YXRl
KikgY29uc3Q7CiAgICAgdmlydHVhbCBKU1ZhbHVlIGRlZmF1bHRWYWx1ZShFeGVjU3RhdGUqLCBQ
cmVmZXJyZWRQcmltaXRpdmVUeXBlKSBjb25zdDsKIAotICAgIHZpcnR1YWwgSlNWYWx1ZSBnZXRN
ZXRob2QoRXhlY1N0YXRlKiBleGVjLCBjb25zdCBJZGVudGlmaWVyJiBwcm9wZXJ0eU5hbWUpOwor
ICAgIHZpcnR1YWwgSlNWYWx1ZSBnZXRNZXRob2QoRXhlY1N0YXRlKiwgUHJvcGVydHlOYW1lKTsK
ICAgICBKU1ZhbHVlIGludm9rZU9iamNNZXRob2QoRXhlY1N0YXRlKiwgT2JqY01ldGhvZCogbWV0
aG9kKTsKICAgICB2aXJ0dWFsIEpTVmFsdWUgaW52b2tlTWV0aG9kKEV4ZWNTdGF0ZSosIFJ1bnRp
bWVNZXRob2QqIG1ldGhvZCk7CiAgICAgdmlydHVhbCBib29sIHN1cHBvcnRzSW52b2tlRGVmYXVs
dE1ldGhvZCgpIGNvbnN0OwogICAgIHZpcnR1YWwgSlNWYWx1ZSBpbnZva2VEZWZhdWx0TWV0aG9k
KEV4ZWNTdGF0ZSopOwogCi0gICAgSlNWYWx1ZSBnZXRWYWx1ZU9mVW5kZWZpbmVkRmllbGQoRXhl
Y1N0YXRlKiwgY29uc3QgSWRlbnRpZmllciYpIGNvbnN0OwotICAgIHZpcnR1YWwgYm9vbCBzZXRW
YWx1ZU9mVW5kZWZpbmVkRmllbGQoRXhlY1N0YXRlKiwgY29uc3QgSWRlbnRpZmllciYsIEpTVmFs
dWUpOworICAgIEpTVmFsdWUgZ2V0VmFsdWVPZlVuZGVmaW5lZEZpZWxkKEV4ZWNTdGF0ZSosIFBy
b3BlcnR5TmFtZSkgY29uc3Q7CisgICAgdmlydHVhbCBib29sIHNldFZhbHVlT2ZVbmRlZmluZWRG
aWVsZChFeGVjU3RhdGUqLCBQcm9wZXJ0eU5hbWUsIEpTVmFsdWUpOwogCiAgICAgT2JqZWN0U3Ry
dWN0UHRyIGdldE9iamVjdCgpIGNvbnN0IHsgcmV0dXJuIF9pbnN0YW5jZS5nZXQoKTsgfQogICAg
IApJbmRleDogU291cmNlL1dlYkNvcmUvYnJpZGdlL29iamMvb2JqY19pbnN0YW5jZS5tbQo9PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09Ci0tLSBTb3VyY2UvV2ViQ29yZS9icmlkZ2Uvb2JqYy9vYmpjX2luc3RhbmNlLm1tCShy
ZXZpc2lvbiAxMTY2NjcpCisrKyBTb3VyY2UvV2ViQ29yZS9icmlkZ2Uvb2JqYy9vYmpjX2luc3Rh
bmNlLm1tCSh3b3JraW5nIGNvcHkpCkBAIC0xODEsNyArMTgxLDcgQEAgYm9vbCBPYmpjSW5zdGFu
Y2U6OnN1cHBvcnRzSW52b2tlRGVmYXVsdAogCiBjbGFzcyBPYmpDUnVudGltZU1ldGhvZCA6IHB1
YmxpYyBSdW50aW1lTWV0aG9kIHsKIHB1YmxpYzoKLSAgICBzdGF0aWMgT2JqQ1J1bnRpbWVNZXRo
b2QqIGNyZWF0ZShFeGVjU3RhdGUqIGV4ZWMsIEpTR2xvYmFsT2JqZWN0KiBnbG9iYWxPYmplY3Qs
IGNvbnN0IElkZW50aWZpZXImIG5hbWUsIEJpbmRpbmdzOjpNZXRob2RMaXN0JiBsaXN0KQorICAg
IHN0YXRpYyBPYmpDUnVudGltZU1ldGhvZCogY3JlYXRlKEV4ZWNTdGF0ZSogZXhlYywgSlNHbG9i
YWxPYmplY3QqIGdsb2JhbE9iamVjdCwgY29uc3QgVVN0cmluZyYgbmFtZSwgQmluZGluZ3M6Ok1l
dGhvZExpc3QmIGxpc3QpCiAgICAgewogICAgICAgICAvLyBGSVhNRTogZGVwcmVjYXRlZEdldERP
TVN0cnVjdHVyZSB1c2VzIHRoZSBwcm90b3R5cGUgb2ZmIG9mIHRoZSB3cm9uZyBnbG9iYWwgb2Jq
ZWN0CiAgICAgICAgIC8vIFdlIG5lZWQgdG8gcGFzcyBpbiB0aGUgcmlnaHQgZ2xvYmFsIG9iamVj
dCBmb3IgImkiLgpAQCAtMjA2LDcgKzIwNiw3IEBAIHByaXZhdGU6CiAgICAgewogICAgIH0KIAot
ICAgIHZvaWQgZmluaXNoQ3JlYXRpb24oSlNHbG9iYWxEYXRhJiBnbG9iYWxEYXRhLCBjb25zdCBJ
ZGVudGlmaWVyJiBuYW1lKQorICAgIHZvaWQgZmluaXNoQ3JlYXRpb24oSlNHbG9iYWxEYXRhJiBn
bG9iYWxEYXRhLCBjb25zdCBVU3RyaW5nJiBuYW1lKQogICAgIHsKICAgICAgICAgQmFzZTo6Zmlu
aXNoQ3JlYXRpb24oZ2xvYmFsRGF0YSwgbmFtZSk7CiAgICAgICAgIEFTU0VSVChpbmhlcml0cygm
c19pbmZvKSk7CkBAIC0yMTUsMTAgKzIxNSwxMCBAQCBwcml2YXRlOgogCiBjb25zdCBDbGFzc0lu
Zm8gT2JqQ1J1bnRpbWVNZXRob2Q6OnNfaW5mbyA9IHsgIk9iakNSdW50aW1lTWV0aG9kIiwgJlJ1
bnRpbWVNZXRob2Q6OnNfaW5mbywgMCwgMCwgQ1JFQVRFX01FVEhPRF9UQUJMRShPYmpDUnVudGlt
ZU1ldGhvZCkgfTsKIAotSlNWYWx1ZSBPYmpjSW5zdGFuY2U6OmdldE1ldGhvZChFeGVjU3RhdGUq
IGV4ZWMsIGNvbnN0IElkZW50aWZpZXImIHByb3BlcnR5TmFtZSkKK0pTVmFsdWUgT2JqY0luc3Rh
bmNlOjpnZXRNZXRob2QoRXhlY1N0YXRlKiBleGVjLCBQcm9wZXJ0eU5hbWUgcHJvcGVydHlOYW1l
KQogewogICAgIE1ldGhvZExpc3QgbWV0aG9kTGlzdCA9IGdldENsYXNzKCktPm1ldGhvZHNOYW1l
ZChwcm9wZXJ0eU5hbWUsIHRoaXMpOwotICAgIHJldHVybiBPYmpDUnVudGltZU1ldGhvZDo6Y3Jl
YXRlKGV4ZWMsIGV4ZWMtPmxleGljYWxHbG9iYWxPYmplY3QoKSwgcHJvcGVydHlOYW1lLCBtZXRo
b2RMaXN0KTsKKyAgICByZXR1cm4gT2JqQ1J1bnRpbWVNZXRob2Q6OmNyZWF0ZShleGVjLCBleGVj
LT5sZXhpY2FsR2xvYmFsT2JqZWN0KCksIHByb3BlcnR5TmFtZS51c3RyaW5nKCksIG1ldGhvZExp
c3QpOwogfQogCiBKU1ZhbHVlIE9iamNJbnN0YW5jZTo6aW52b2tlTWV0aG9kKEV4ZWNTdGF0ZSog
ZXhlYywgUnVudGltZU1ldGhvZCogcnVudGltZU1ldGhvZCkKQEAgLTQwMSw3ICs0MDEsNyBAQCBK
U1ZhbHVlIE9iamNJbnN0YW5jZTo6aW52b2tlRGVmYXVsdE1ldGhvCiAgICAgcmV0dXJuIGNvbnN0
X2Nhc3Q8SlNWYWx1ZSY+KHJlc3VsdCk7CiB9CiAKLWJvb2wgT2JqY0luc3RhbmNlOjpzZXRWYWx1
ZU9mVW5kZWZpbmVkRmllbGQoRXhlY1N0YXRlKiBleGVjLCBjb25zdCBJZGVudGlmaWVyJiBwcm9w
ZXJ0eSwgSlNWYWx1ZSBhVmFsdWUpCitib29sIE9iamNJbnN0YW5jZTo6c2V0VmFsdWVPZlVuZGVm
aW5lZEZpZWxkKEV4ZWNTdGF0ZSogZXhlYywgUHJvcGVydHlOYW1lIHByb3BlcnR5LCBKU1ZhbHVl
IGFWYWx1ZSkKIHsKICAgICBpZCB0YXJnZXRPYmplY3QgPSBnZXRPYmplY3QoKTsKICAgICBpZiAo
IVt0YXJnZXRPYmplY3QgcmVzcG9uZHNUb1NlbGVjdG9yOkBzZWxlY3RvcihzZXRWYWx1ZTpmb3JV
bmRlZmluZWRLZXk6KV0pCkBAIC00MTgsNyArNDE4LDcgQEAgYm9vbCBPYmpjSW5zdGFuY2U6OnNl
dFZhbHVlT2ZVbmRlZmluZWRGaQogICAgICAgICBPYmpjVmFsdWUgb2JqY1ZhbHVlID0gY29udmVy
dFZhbHVlVG9PYmpjVmFsdWUoZXhlYywgYVZhbHVlLCBPYmpjT2JqZWN0VHlwZSk7CiAKICAgICAg
ICAgQHRyeSB7Ci0gICAgICAgICAgICBbdGFyZ2V0T2JqZWN0IHNldFZhbHVlOm9iamNWYWx1ZS5v
YmplY3RWYWx1ZSBmb3JVbmRlZmluZWRLZXk6W05TU3RyaW5nIHN0cmluZ1dpdGhDU3RyaW5nOnBy
b3BlcnR5LmFzY2lpKCkuZGF0YSgpIGVuY29kaW5nOk5TQVNDSUlTdHJpbmdFbmNvZGluZ11dOwor
ICAgICAgICAgICAgW3RhcmdldE9iamVjdCBzZXRWYWx1ZTpvYmpjVmFsdWUub2JqZWN0VmFsdWUg
Zm9yVW5kZWZpbmVkS2V5OltOU1N0cmluZyBzdHJpbmdXaXRoQ1N0cmluZzpwcm9wZXJ0eS51c3Ry
aW5nKCkuYXNjaWkoKS5kYXRhKCkgZW5jb2Rpbmc6TlNBU0NJSVN0cmluZ0VuY29kaW5nXV07CiAg
ICAgICAgIH0gQGNhdGNoKE5TRXhjZXB0aW9uKiBsb2NhbEV4Y2VwdGlvbikgewogICAgICAgICAg
ICAgLy8gRG8gbm90aGluZy4gIENsYXNzIGRpZCBub3Qgb3ZlcnJpZGUgdmFsdWVGb3JVbmRlZmlu
ZWRLZXk6LgogICAgICAgICB9CkBAIC00MjksNyArNDI5LDcgQEAgYm9vbCBPYmpjSW5zdGFuY2U6
OnNldFZhbHVlT2ZVbmRlZmluZWRGaQogICAgIHJldHVybiB0cnVlOwogfQogCi1KU1ZhbHVlIE9i
amNJbnN0YW5jZTo6Z2V0VmFsdWVPZlVuZGVmaW5lZEZpZWxkKEV4ZWNTdGF0ZSogZXhlYywgY29u
c3QgSWRlbnRpZmllciYgcHJvcGVydHkpIGNvbnN0CitKU1ZhbHVlIE9iamNJbnN0YW5jZTo6Z2V0
VmFsdWVPZlVuZGVmaW5lZEZpZWxkKEV4ZWNTdGF0ZSogZXhlYywgUHJvcGVydHlOYW1lIHByb3Bl
cnR5KSBjb25zdAogewogICAgIEpTVmFsdWUgcmVzdWx0ID0ganNVbmRlZmluZWQoKTsKICAgICAK
QEAgLTQ0NCw3ICs0NDQsNyBAQCBKU1ZhbHVlIE9iamNJbnN0YW5jZTo6Z2V0VmFsdWVPZlVuZGVm
aW5lCiAgICAgICAgIHNldEdsb2JhbEV4Y2VwdGlvbihuaWwpOwogICAgIAogICAgICAgICBAdHJ5
IHsKLSAgICAgICAgICAgIGlkIG9iamNWYWx1ZSA9IFt0YXJnZXRPYmplY3QgdmFsdWVGb3JVbmRl
ZmluZWRLZXk6W05TU3RyaW5nIHN0cmluZ1dpdGhDU3RyaW5nOnByb3BlcnR5LmFzY2lpKCkuZGF0
YSgpIGVuY29kaW5nOk5TQVNDSUlTdHJpbmdFbmNvZGluZ11dOworICAgICAgICAgICAgaWQgb2Jq
Y1ZhbHVlID0gW3RhcmdldE9iamVjdCB2YWx1ZUZvclVuZGVmaW5lZEtleTpbTlNTdHJpbmcgc3Ry
aW5nV2l0aENTdHJpbmc6cHJvcGVydHkudXN0cmluZygpLmFzY2lpKCkuZGF0YSgpIGVuY29kaW5n
Ok5TQVNDSUlTdHJpbmdFbmNvZGluZ11dOwogICAgICAgICAgICAgcmVzdWx0ID0gY29udmVydE9i
amNWYWx1ZVRvVmFsdWUoZXhlYywgJm9iamNWYWx1ZSwgT2JqY09iamVjdFR5cGUsIG1fcm9vdE9i
amVjdC5nZXQoKSk7CiAgICAgICAgIH0gQGNhdGNoKE5TRXhjZXB0aW9uKiBsb2NhbEV4Y2VwdGlv
bikgewogICAgICAgICAgICAgLy8gRG8gbm90aGluZy4gIENsYXNzIGRpZCBub3Qgb3ZlcnJpZGUg
dmFsdWVGb3JVbmRlZmluZWRLZXk6LgpJbmRleDogU291cmNlL1dlYkNvcmUvYnJpZGdlL29iamMv
b2JqY19ydW50aW1lLmgKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL1dlYkNvcmUvYnJpZGdlL29iamMv
b2JqY19ydW50aW1lLmgJKHJldmlzaW9uIDExNjY2NykKKysrIFNvdXJjZS9XZWJDb3JlL2JyaWRn
ZS9vYmpjL29iamNfcnVudGltZS5oCSh3b3JraW5nIGNvcHkpCkBAIC05NCw3ICs5NCw3IEBAIGNs
YXNzIE9iamNGYWxsYmFja09iamVjdEltcCA6IHB1YmxpYyBKU04KIHB1YmxpYzoKICAgICB0eXBl
ZGVmIEpTTm9uRmluYWxPYmplY3QgQmFzZTsKIAotICAgIHN0YXRpYyBPYmpjRmFsbGJhY2tPYmpl
Y3RJbXAqIGNyZWF0ZShFeGVjU3RhdGUqIGV4ZWMsIEpTR2xvYmFsT2JqZWN0KiBnbG9iYWxPYmpl
Y3QsIE9iamNJbnN0YW5jZSogaW5zdGFuY2UsIGNvbnN0IElkZW50aWZpZXImIHByb3BlcnR5TmFt
ZSkKKyAgICBzdGF0aWMgT2JqY0ZhbGxiYWNrT2JqZWN0SW1wKiBjcmVhdGUoRXhlY1N0YXRlKiBl
eGVjLCBKU0dsb2JhbE9iamVjdCogZ2xvYmFsT2JqZWN0LCBPYmpjSW5zdGFuY2UqIGluc3RhbmNl
LCBjb25zdCBVU3RyaW5nJiBwcm9wZXJ0eU5hbWUpCiAgICAgewogICAgICAgICAvLyBGSVhNRTog
ZGVwcmVjYXRlZEdldERPTVN0cnVjdHVyZSB1c2VzIHRoZSBwcm90b3R5cGUgb2ZmIG9mIHRoZSB3
cm9uZyBnbG9iYWwgb2JqZWN0CiAgICAgICAgIFN0cnVjdHVyZSogZG9tU3RydWN0dXJlID0gV2Vi
Q29yZTo6ZGVwcmVjYXRlZEdldERPTVN0cnVjdHVyZTxPYmpjRmFsbGJhY2tPYmplY3RJbXA+KGV4
ZWMpOwpAQCAtMTA1LDcgKzEwNSw3IEBAIHB1YmxpYzoKIAogICAgIHN0YXRpYyBjb25zdCBDbGFz
c0luZm8gc19pbmZvOwogCi0gICAgY29uc3QgSWRlbnRpZmllciYgcHJvcGVydHlOYW1lKCkgY29u
c3QgeyByZXR1cm4gX2l0ZW07IH0KKyAgICBjb25zdCBVU3RyaW5nJiBwcm9wZXJ0eU5hbWUoKSBj
b25zdCB7IHJldHVybiBfaXRlbTsgfQogCiAgICAgc3RhdGljIE9iamVjdFByb3RvdHlwZSogY3Jl
YXRlUHJvdG90eXBlKEV4ZWNTdGF0ZSosIEpTR2xvYmFsT2JqZWN0KiBnbG9iYWxPYmplY3QpCiAg
ICAgewpAQCAtMTIxLDIwICsxMjEsMjAgQEAgcHJvdGVjdGVkOgogICAgIHZvaWQgZmluaXNoQ3Jl
YXRpb24oSlNHbG9iYWxPYmplY3QqKTsKIAogcHJpdmF0ZToKLSAgICBPYmpjRmFsbGJhY2tPYmpl
Y3RJbXAoSlNHbG9iYWxPYmplY3QqLCBTdHJ1Y3R1cmUqLCBPYmpjSW5zdGFuY2UqLCBjb25zdCBJ
ZGVudGlmaWVyJiBwcm9wZXJ0eU5hbWUpOworICAgIE9iamNGYWxsYmFja09iamVjdEltcChKU0ds
b2JhbE9iamVjdCosIFN0cnVjdHVyZSosIE9iamNJbnN0YW5jZSosIGNvbnN0IFVTdHJpbmcmIHBy
b3BlcnR5TmFtZSk7CiAgICAgc3RhdGljIHZvaWQgZGVzdHJveShKU0NlbGwqKTsKICAgICBzdGF0
aWMgY29uc3QgdW5zaWduZWQgU3RydWN0dXJlRmxhZ3MgPSBPdmVycmlkZXNHZXRPd25Qcm9wZXJ0
eVNsb3QgfCBKU09iamVjdDo6U3RydWN0dXJlRmxhZ3M7Ci0gICAgc3RhdGljIGJvb2wgZ2V0T3du
UHJvcGVydHlTbG90KEpTQ2VsbCosIEV4ZWNTdGF0ZSosIGNvbnN0IElkZW50aWZpZXImLCBQcm9w
ZXJ0eVNsb3QmKTsKLSAgICBzdGF0aWMgYm9vbCBnZXRPd25Qcm9wZXJ0eURlc2NyaXB0b3IoSlNP
YmplY3QqLCBFeGVjU3RhdGUqLCBjb25zdCBJZGVudGlmaWVyJiwgUHJvcGVydHlEZXNjcmlwdG9y
Jik7Ci0gICAgc3RhdGljIHZvaWQgcHV0KEpTQ2VsbCosIEV4ZWNTdGF0ZSosIGNvbnN0IElkZW50
aWZpZXImIHByb3BlcnR5TmFtZSwgSlNWYWx1ZSwgUHV0UHJvcGVydHlTbG90Jik7CisgICAgc3Rh
dGljIGJvb2wgZ2V0T3duUHJvcGVydHlTbG90KEpTQ2VsbCosIEV4ZWNTdGF0ZSosIFByb3BlcnR5
TmFtZSwgUHJvcGVydHlTbG90Jik7CisgICAgc3RhdGljIGJvb2wgZ2V0T3duUHJvcGVydHlEZXNj
cmlwdG9yKEpTT2JqZWN0KiwgRXhlY1N0YXRlKiwgUHJvcGVydHlOYW1lLCBQcm9wZXJ0eURlc2Ny
aXB0b3ImKTsKKyAgICBzdGF0aWMgdm9pZCBwdXQoSlNDZWxsKiwgRXhlY1N0YXRlKiwgUHJvcGVy
dHlOYW1lLCBKU1ZhbHVlLCBQdXRQcm9wZXJ0eVNsb3QmKTsKICAgICBzdGF0aWMgQ2FsbFR5cGUg
Z2V0Q2FsbERhdGEoSlNDZWxsKiwgQ2FsbERhdGEmKTsKLSAgICBzdGF0aWMgYm9vbCBkZWxldGVQ
cm9wZXJ0eShKU0NlbGwqLCBFeGVjU3RhdGUqLCBjb25zdCBJZGVudGlmaWVyJiBwcm9wZXJ0eU5h
bWUpOworICAgIHN0YXRpYyBib29sIGRlbGV0ZVByb3BlcnR5KEpTQ2VsbCosIEV4ZWNTdGF0ZSos
IFByb3BlcnR5TmFtZSk7CiAgICAgc3RhdGljIEpTVmFsdWUgZGVmYXVsdFZhbHVlKGNvbnN0IEpT
T2JqZWN0KiwgRXhlY1N0YXRlKiwgUHJlZmVycmVkUHJpbWl0aXZlVHlwZSk7CiAKICAgICBib29s
IHRvQm9vbGVhbihFeGVjU3RhdGUqKSBjb25zdDsgLy8gRklYTUU6IEN1cnJlbnRseSB0aGlzIGlz
IGJyb2tlbiBiZWNhdXNlIG5vbmUgb2YgdGhlIHN1cGVyY2xhc3NlcyBhcmUgbWFya2VkIHZpcnR1
YWwuIFdlIG5lZWQgdG8gc29sdmUgdGhpcyBpbiB0aGUgbG9uZ2VyIHRlcm0uCiAKICAgICBSZWZQ
dHI8T2JqY0luc3RhbmNlPiBfaW5zdGFuY2U7Ci0gICAgSWRlbnRpZmllciBfaXRlbTsKKyAgICBV
U3RyaW5nIF9pdGVtOwogfTsKIAogfSAvLyBuYW1lc3BhY2UgQmluZGluZ3MKSW5kZXg6IFNvdXJj
ZS9XZWJDb3JlL2JyaWRnZS9vYmpjL29iamNfcnVudGltZS5tbQo9PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3Vy
Y2UvV2ViQ29yZS9icmlkZ2Uvb2JqYy9vYmpjX3J1bnRpbWUubW0JKHJldmlzaW9uIDExNjY2NykK
KysrIFNvdXJjZS9XZWJDb3JlL2JyaWRnZS9vYmpjL29iamNfcnVudGltZS5tbQkod29ya2luZyBj
b3B5KQpAQCAtMTkyLDcgKzE5Miw3IEBAIHVuc2lnbmVkIGludCBPYmpjQXJyYXk6OmdldExlbmd0
aCgpIGNvbnMKIAogY29uc3QgQ2xhc3NJbmZvIE9iamNGYWxsYmFja09iamVjdEltcDo6c19pbmZv
ID0geyAiT2JqY0ZhbGxiYWNrT2JqZWN0IiwgJkpTTm9uRmluYWxPYmplY3Q6OnNfaW5mbywgMCwg
MCwgQ1JFQVRFX01FVEhPRF9UQUJMRShPYmpjRmFsbGJhY2tPYmplY3RJbXApIH07CiAKLU9iamNG
YWxsYmFja09iamVjdEltcDo6T2JqY0ZhbGxiYWNrT2JqZWN0SW1wKEpTR2xvYmFsT2JqZWN0KiBn
bG9iYWxPYmplY3QsIFN0cnVjdHVyZSogc3RydWN0dXJlLCBPYmpjSW5zdGFuY2UqIGksIGNvbnN0
IElkZW50aWZpZXImIHByb3BlcnR5TmFtZSkKK09iamNGYWxsYmFja09iamVjdEltcDo6T2JqY0Zh
bGxiYWNrT2JqZWN0SW1wKEpTR2xvYmFsT2JqZWN0KiBnbG9iYWxPYmplY3QsIFN0cnVjdHVyZSog
c3RydWN0dXJlLCBPYmpjSW5zdGFuY2UqIGksIGNvbnN0IFVTdHJpbmcmIHByb3BlcnR5TmFtZSkK
ICAgICA6IEpTTm9uRmluYWxPYmplY3QoZ2xvYmFsT2JqZWN0LT5nbG9iYWxEYXRhKCksIHN0cnVj
dHVyZSkKICAgICAsIF9pbnN0YW5jZShpKQogICAgICwgX2l0ZW0ocHJvcGVydHlOYW1lKQpAQCAt
MjEwLDIxICsyMTAsMjEgQEAgdm9pZCBPYmpjRmFsbGJhY2tPYmplY3RJbXA6OmZpbmlzaENyZWF0
aQogICAgIEFTU0VSVChpbmhlcml0cygmc19pbmZvKSk7CiB9CiAKLWJvb2wgT2JqY0ZhbGxiYWNr
T2JqZWN0SW1wOjpnZXRPd25Qcm9wZXJ0eVNsb3QoSlNDZWxsKiwgRXhlY1N0YXRlKiwgY29uc3Qg
SWRlbnRpZmllciYsIFByb3BlcnR5U2xvdCYgc2xvdCkKK2Jvb2wgT2JqY0ZhbGxiYWNrT2JqZWN0
SW1wOjpnZXRPd25Qcm9wZXJ0eVNsb3QoSlNDZWxsKiwgRXhlY1N0YXRlKiwgUHJvcGVydHlOYW1l
LCBQcm9wZXJ0eVNsb3QmIHNsb3QpCiB7CiAgICAgLy8ga2VlcCB0aGUgcHJvdG90eXBlIGZyb20g
Z2V0dGluZyBjYWxsZWQgaW5zdGVhZCBvZiBqdXN0IHJldHVybmluZyBmYWxzZQogICAgIHNsb3Qu
c2V0VW5kZWZpbmVkKCk7CiAgICAgcmV0dXJuIHRydWU7CiB9CiAKLWJvb2wgT2JqY0ZhbGxiYWNr
T2JqZWN0SW1wOjpnZXRPd25Qcm9wZXJ0eURlc2NyaXB0b3IoSlNPYmplY3QqLCBFeGVjU3RhdGUq
LCBjb25zdCBJZGVudGlmaWVyJiwgUHJvcGVydHlEZXNjcmlwdG9yJiBkZXNjcmlwdG9yKQorYm9v
bCBPYmpjRmFsbGJhY2tPYmplY3RJbXA6OmdldE93blByb3BlcnR5RGVzY3JpcHRvcihKU09iamVj
dCosIEV4ZWNTdGF0ZSosIFByb3BlcnR5TmFtZSwgUHJvcGVydHlEZXNjcmlwdG9yJiBkZXNjcmlw
dG9yKQogewogICAgIC8vIGtlZXAgdGhlIHByb3RvdHlwZSBmcm9tIGdldHRpbmcgY2FsbGVkIGlu
c3RlYWQgb2YganVzdCByZXR1cm5pbmcgZmFsc2UKICAgICBkZXNjcmlwdG9yLnNldFVuZGVmaW5l
ZCgpOwogICAgIHJldHVybiB0cnVlOwogfQogCi12b2lkIE9iamNGYWxsYmFja09iamVjdEltcDo6
cHV0KEpTQ2VsbCosIEV4ZWNTdGF0ZSosIGNvbnN0IElkZW50aWZpZXImLCBKU1ZhbHVlLCBQdXRQ
cm9wZXJ0eVNsb3QmKQordm9pZCBPYmpjRmFsbGJhY2tPYmplY3RJbXA6OnB1dChKU0NlbGwqLCBF
eGVjU3RhdGUqLCBQcm9wZXJ0eU5hbWUsIEpTVmFsdWUsIFB1dFByb3BlcnR5U2xvdCYpCiB7CiB9
CiAKQEAgLTI0OSw3ICsyNDksNyBAQCBzdGF0aWMgRW5jb2RlZEpTVmFsdWUgSlNDX0hPU1RfQ0FM
TCBjYWxsCiAgICAgaWYgKFt0YXJnZXRPYmplY3QgcmVzcG9uZHNUb1NlbGVjdG9yOkBzZWxlY3Rv
cihpbnZva2VVbmRlZmluZWRNZXRob2RGcm9tV2ViU2NyaXB0OndpdGhBcmd1bWVudHM6KV0pewog
ICAgICAgICBPYmpjQ2xhc3MqIG9iamNDbGFzcyA9IHN0YXRpY19jYXN0PE9iamNDbGFzcyo+KG9i
amNJbnN0YW5jZS0+Z2V0Q2xhc3MoKSk7CiAgICAgICAgIE93blB0cjxPYmpjTWV0aG9kPiBmYWxs
YmFja01ldGhvZChhZG9wdFB0cihuZXcgT2JqY01ldGhvZChvYmpjQ2xhc3MtPmlzYSgpLCBAc2Vs
ZWN0b3IoaW52b2tlVW5kZWZpbmVkTWV0aG9kRnJvbVdlYlNjcmlwdDp3aXRoQXJndW1lbnRzOikp
KSk7Ci0gICAgICAgIGNvbnN0IElkZW50aWZpZXImIG5hbWVJZGVudGlmaWVyID0gc3RhdGljX2Nh
c3Q8T2JqY0ZhbGxiYWNrT2JqZWN0SW1wKj4oZXhlYy0+Y2FsbGVlKCkpLT5wcm9wZXJ0eU5hbWUo
KTsKKyAgICAgICAgY29uc3QgVVN0cmluZyYgbmFtZUlkZW50aWZpZXIgPSBzdGF0aWNfY2FzdDxP
YmpjRmFsbGJhY2tPYmplY3RJbXAqPihleGVjLT5jYWxsZWUoKSktPnByb3BlcnR5TmFtZSgpOwog
ICAgICAgICBSZXRhaW5QdHI8Q0ZTdHJpbmdSZWY+IG5hbWUoQWRvcHRDRiwgQ0ZTdHJpbmdDcmVh
dGVXaXRoQ2hhcmFjdGVycygwLCBuYW1lSWRlbnRpZmllci5jaGFyYWN0ZXJzKCksIG5hbWVJZGVu
dGlmaWVyLmxlbmd0aCgpKSk7CiAgICAgICAgIGZhbGxiYWNrTWV0aG9kLT5zZXRKYXZhU2NyaXB0
TmFtZShuYW1lLmdldCgpKTsKICAgICAgICAgcmVzdWx0ID0gb2JqY0luc3RhbmNlLT5pbnZva2VP
YmpjTWV0aG9kKGV4ZWMsIGZhbGxiYWNrTWV0aG9kLmdldCgpKTsKQEAgLTI3MCw3ICsyNzAsNyBA
QCBDYWxsVHlwZSBPYmpjRmFsbGJhY2tPYmplY3RJbXA6OmdldENhbGxECiAgICAgcmV0dXJuIENh
bGxUeXBlSG9zdDsKIH0KIAotYm9vbCBPYmpjRmFsbGJhY2tPYmplY3RJbXA6OmRlbGV0ZVByb3Bl
cnR5KEpTQ2VsbCosIEV4ZWNTdGF0ZSosIGNvbnN0IElkZW50aWZpZXImKQorYm9vbCBPYmpjRmFs
bGJhY2tPYmplY3RJbXA6OmRlbGV0ZVByb3BlcnR5KEpTQ2VsbCosIEV4ZWNTdGF0ZSosIFByb3Bl
cnR5TmFtZSkKIHsKICAgICByZXR1cm4gZmFsc2U7CiB9CkBAIC0yNzgsNyArMjc4LDcgQEAgYm9v
bCBPYmpjRmFsbGJhY2tPYmplY3RJbXA6OmRlbGV0ZVByb3BlcgogSlNWYWx1ZSBPYmpjRmFsbGJh
Y2tPYmplY3RJbXA6OmRlZmF1bHRWYWx1ZShjb25zdCBKU09iamVjdCogb2JqZWN0LCBFeGVjU3Rh
dGUqIGV4ZWMsIFByZWZlcnJlZFByaW1pdGl2ZVR5cGUpCiB7CiAgICAgY29uc3QgT2JqY0ZhbGxi
YWNrT2JqZWN0SW1wKiB0aGlzT2JqZWN0ID0ganNDYXN0PGNvbnN0IE9iamNGYWxsYmFja09iamVj
dEltcCo+KG9iamVjdCk7Ci0gICAgcmV0dXJuIHRoaXNPYmplY3QtPl9pbnN0YW5jZS0+Z2V0VmFs
dWVPZlVuZGVmaW5lZEZpZWxkKGV4ZWMsIHRoaXNPYmplY3QtPl9pdGVtKTsKKyAgICByZXR1cm4g
dGhpc09iamVjdC0+X2luc3RhbmNlLT5nZXRWYWx1ZU9mVW5kZWZpbmVkRmllbGQoZXhlYywgSWRl
bnRpZmllcihleGVjLCB0aGlzT2JqZWN0LT5faXRlbSkpOwogfQogCiBib29sIE9iamNGYWxsYmFj
a09iamVjdEltcDo6dG9Cb29sZWFuKEV4ZWNTdGF0ZSAqKSBjb25zdApJbmRleDogU291cmNlL1dl
YkNvcmUvYnJpZGdlL3F0L3F0X2NsYXNzLmNwcAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2ViQ29y
ZS9icmlkZ2UvcXQvcXRfY2xhc3MuY3BwCShyZXZpc2lvbiAxMTY2NjcpCisrKyBTb3VyY2UvV2Vi
Q29yZS9icmlkZ2UvcXQvcXRfY2xhc3MuY3BwCSh3b3JraW5nIGNvcHkpCkBAIC02Niw3ICs2Niw3
IEBAIGNvbnN0IGNoYXIqIFF0Q2xhc3M6Om5hbWUoKSBjb25zdAogLy8gYW5kIG5vdCBnZXQgd3Jh
cHBlZCBpbiBSdW50aW1lTWV0aG9kKS4gQWxzbywgdXNlIHRoaXMgZm9yIG1ldGhvZHMsCiAvLyBz
byB3ZSBjYW4gY2FjaGUgdGhlIG9iamVjdCBhbmQgcmV0dXJuIHRoZSBzYW1lIG9iamVjdCBmb3Ig
dGhlIHNhbWUKIC8vIGlkZW50aWZpZXIuCi1KU1ZhbHVlIFF0Q2xhc3M6OmZhbGxiYWNrT2JqZWN0
KEV4ZWNTdGF0ZSogZXhlYywgSW5zdGFuY2UqIGluc3QsIGNvbnN0IElkZW50aWZpZXImIGlkZW50
aWZpZXIpCitKU1ZhbHVlIFF0Q2xhc3M6OmZhbGxiYWNrT2JqZWN0KEV4ZWNTdGF0ZSogZXhlYywg
SW5zdGFuY2UqIGluc3QsIFByb3BlcnR5TmFtZSBpZGVudGlmaWVyKQogewogICAgIFF0SW5zdGFu
Y2UqIHF0aW5zdCA9IHN0YXRpY19jYXN0PFF0SW5zdGFuY2UqPihpbnN0KTsKIApAQCAtODYsNyAr
ODYsNyBAQCBKU1ZhbHVlIFF0Q2xhc3M6OmZhbGxiYWNrT2JqZWN0KEV4ZWNTdGF0CiAgICAgaWYg
KG5vcm1hbC5jb250YWlucygnKCcpICYmIChpbmRleCA9IG1fbWV0YU9iamVjdC0+aW5kZXhPZk1l
dGhvZChub3JtYWwpKSAhPSAtMSkgewogICAgICAgICBRTWV0YU1ldGhvZCBtID0gbV9tZXRhT2Jq
ZWN0LT5tZXRob2QoaW5kZXgpOwogICAgICAgICBpZiAobS5hY2Nlc3MoKSAhPSBRTWV0YU1ldGhv
ZDo6UHJpdmF0ZSkgewotICAgICAgICAgICAgUXRSdW50aW1lTWV0YU1ldGhvZCogdmFsID0gUXRS
dW50aW1lTWV0YU1ldGhvZDo6Y3JlYXRlKGV4ZWMsIGlkZW50aWZpZXIsIHN0YXRpY19jYXN0PFF0
SW5zdGFuY2UqPihpbnN0KSwgaW5kZXgsIG5vcm1hbCwgZmFsc2UpOworICAgICAgICAgICAgUXRS
dW50aW1lTWV0YU1ldGhvZCogdmFsID0gUXRSdW50aW1lTWV0YU1ldGhvZDo6Y3JlYXRlKGV4ZWMs
IHVzdHJpbmcsIHN0YXRpY19jYXN0PFF0SW5zdGFuY2UqPihpbnN0KSwgaW5kZXgsIG5vcm1hbCwg
ZmFsc2UpOwogICAgICAgICAgICAgcXRpbnN0LT5tX21ldGhvZHMuaW5zZXJ0KG5hbWUsIFdyaXRl
QmFycmllcjxKU09iamVjdD4oZXhlYy0+Z2xvYmFsRGF0YSgpLCBxdGluc3QtPmNyZWF0ZVJ1bnRp
bWVPYmplY3QoZXhlYyksIHZhbCkpOwogICAgICAgICAgICAgcmV0dXJuIHZhbDsKICAgICAgICAg
fQpAQCAtMTA5LDcgKzEwOSw3IEBAIEpTVmFsdWUgUXRDbGFzczo6ZmFsbGJhY2tPYmplY3QoRXhl
Y1N0YXQKICNlbHNlCiAgICAgICAgIGlmIChub3JtYWwgPT0gbS5uYW1lKCkpIHsKICNlbmRpZgot
ICAgICAgICAgICAgUXRSdW50aW1lTWV0YU1ldGhvZCogdmFsID0gUXRSdW50aW1lTWV0YU1ldGhv
ZDo6Y3JlYXRlKGV4ZWMsIGlkZW50aWZpZXIsIHN0YXRpY19jYXN0PFF0SW5zdGFuY2UqPihpbnN0
KSwgaW5kZXgsIG5vcm1hbCwgZmFsc2UpOworICAgICAgICAgICAgUXRSdW50aW1lTWV0YU1ldGhv
ZCogdmFsID0gUXRSdW50aW1lTWV0YU1ldGhvZDo6Y3JlYXRlKGV4ZWMsIHVzdHJpbmcsIHN0YXRp
Y19jYXN0PFF0SW5zdGFuY2UqPihpbnN0KSwgaW5kZXgsIG5vcm1hbCwgZmFsc2UpOwogICAgICAg
ICAgICAgcXRpbnN0LT5tX21ldGhvZHMuaW5zZXJ0KG5hbWUsIFdyaXRlQmFycmllcjxKU09iamVj
dD4oZXhlYy0+Z2xvYmFsRGF0YSgpLCBxdGluc3QtPmNyZWF0ZVJ1bnRpbWVPYmplY3QoZXhlYyks
IHZhbCkpOwogICAgICAgICAgICAgcmV0dXJuIHZhbDsKICAgICAgICAgfQpAQCAtMTE5LDcgKzEx
OSw3IEBAIEpTVmFsdWUgUXRDbGFzczo6ZmFsbGJhY2tPYmplY3QoRXhlY1N0YXQKIH0KIAogLy8g
VGhpcyBmdW5jdGlvbmFsaXR5IGlzIGhhbmRsZWQgYnkgdGhlIGZhbGxiYWNrIGNhc2UgYWJvdmUu
Li4KLU1ldGhvZExpc3QgUXRDbGFzczo6bWV0aG9kc05hbWVkKGNvbnN0IElkZW50aWZpZXImLCBJ
bnN0YW5jZSopIGNvbnN0CitNZXRob2RMaXN0IFF0Q2xhc3M6Om1ldGhvZHNOYW1lZChQcm9wZXJ0
eU5hbWUsIEluc3RhbmNlKikgY29uc3QKIHsKICAgICByZXR1cm4gTWV0aG9kTGlzdCgpOwogfQpA
QCAtMTI3LDcgKzEyNyw3IEBAIE1ldGhvZExpc3QgUXRDbGFzczo6bWV0aG9kc05hbWVkKGNvbnN0
IEkKIC8vICMjIyB3ZSBtYXkgZW5kIHVwIHdpdGggYSBkaWZmZXJlbnQgc2VhcmNoIG9yZGVyIHRo
YW4gUXRTY3JpcHQgYnkgbm90CiAvLyBmb2xkaW5nIHRoaXMgY29kZSBpbnRvIHRoZSBmYWxsYmFj
a01ldGhvZCBhYm92ZSwgYnV0IEZpZWxkcyBwcm9wYWdhdGUgb3V0CiAvLyBvZiB0aGUgYmluZGlu
ZyBjb2RlCi1GaWVsZCogUXRDbGFzczo6ZmllbGROYW1lZChjb25zdCBJZGVudGlmaWVyJiBpZGVu
dGlmaWVyLCBJbnN0YW5jZSogaW5zdGFuY2UpIGNvbnN0CitGaWVsZCogUXRDbGFzczo6ZmllbGRO
YW1lZChQcm9wZXJ0eU5hbWUgaWRlbnRpZmllciwgSW5zdGFuY2UqIGluc3RhbmNlKSBjb25zdAog
ewogICAgIC8vIENoZWNrIHN0YXRpYyBwcm9wZXJ0aWVzIGZpcnN0CiAgICAgUXRJbnN0YW5jZSog
cXRpbnN0ID0gc3RhdGljX2Nhc3Q8UXRJbnN0YW5jZSo+KGluc3RhbmNlKTsKSW5kZXg6IFNvdXJj
ZS9XZWJDb3JlL2JyaWRnZS9xdC9xdF9jbGFzcy5oCj09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9XZWJD
b3JlL2JyaWRnZS9xdC9xdF9jbGFzcy5oCShyZXZpc2lvbiAxMTY2NjcpCisrKyBTb3VyY2UvV2Vi
Q29yZS9icmlkZ2UvcXQvcXRfY2xhc3MuaAkod29ya2luZyBjb3B5KQpAQCAtNDEsMTAgKzQxLDEw
IEBAIHB1YmxpYzoKICAgICB2aXJ0dWFsIH5RdENsYXNzKCk7CiAKICAgICB2aXJ0dWFsIGNvbnN0
IGNoYXIqIG5hbWUoKSBjb25zdDsKLSAgICB2aXJ0dWFsIE1ldGhvZExpc3QgbWV0aG9kc05hbWVk
KGNvbnN0IElkZW50aWZpZXImLCBJbnN0YW5jZSopIGNvbnN0OwotICAgIHZpcnR1YWwgRmllbGQq
IGZpZWxkTmFtZWQoY29uc3QgSWRlbnRpZmllciYsIEluc3RhbmNlKikgY29uc3Q7CisgICAgdmly
dHVhbCBNZXRob2RMaXN0IG1ldGhvZHNOYW1lZChQcm9wZXJ0eU5hbWUsIEluc3RhbmNlKikgY29u
c3Q7CisgICAgdmlydHVhbCBGaWVsZCogZmllbGROYW1lZChQcm9wZXJ0eU5hbWUsIEluc3RhbmNl
KikgY29uc3Q7CiAKLSAgICB2aXJ0dWFsIEpTVmFsdWUgZmFsbGJhY2tPYmplY3QoRXhlY1N0YXRl
KiwgSW5zdGFuY2UqLCBjb25zdCBJZGVudGlmaWVyJik7CisgICAgdmlydHVhbCBKU1ZhbHVlIGZh
bGxiYWNrT2JqZWN0KEV4ZWNTdGF0ZSosIEluc3RhbmNlKiwgUHJvcGVydHlOYW1lKTsKIAogcHJp
dmF0ZToKICAgICBRdENsYXNzKGNvbnN0IFF0Q2xhc3MmKTsgLy8gcHJvaGliaXQgY29weWluZwpJ
bmRleDogU291cmNlL1dlYkNvcmUvYnJpZGdlL3F0L3F0X2luc3RhbmNlLmNwcAo9PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
Ci0tLSBTb3VyY2UvV2ViQ29yZS9icmlkZ2UvcXQvcXRfaW5zdGFuY2UuY3BwCShyZXZpc2lvbiAx
MTY2NjcpCisrKyBTb3VyY2UvV2ViQ29yZS9icmlkZ2UvcXQvcXRfaW5zdGFuY2UuY3BwCSh3b3Jr
aW5nIGNvcHkpCkBAIC0xNDgsMTIgKzE0OCwxMiBAQCBQYXNzUmVmUHRyPFF0SW5zdGFuY2U+IFF0
SW5zdGFuY2U6OmdldFF0CiAgICAgcmV0dXJuIHJldC5yZWxlYXNlKCk7CiB9CiAKLWJvb2wgUXRJ
bnN0YW5jZTo6Z2V0T3duUHJvcGVydHlTbG90KEpTT2JqZWN0KiBvYmplY3QsIEV4ZWNTdGF0ZSog
ZXhlYywgY29uc3QgSWRlbnRpZmllciYgcHJvcGVydHlOYW1lLCBQcm9wZXJ0eVNsb3QmIHNsb3Qp
Citib29sIFF0SW5zdGFuY2U6OmdldE93blByb3BlcnR5U2xvdChKU09iamVjdCogb2JqZWN0LCBF
eGVjU3RhdGUqIGV4ZWMsIFByb3BlcnR5TmFtZSBwcm9wZXJ0eU5hbWUsIFByb3BlcnR5U2xvdCYg
c2xvdCkKIHsKICAgICByZXR1cm4gSlNPYmplY3Q6OmdldE93blByb3BlcnR5U2xvdChvYmplY3Qs
IGV4ZWMsIHByb3BlcnR5TmFtZSwgc2xvdCk7CiB9CiAKLXZvaWQgUXRJbnN0YW5jZTo6cHV0KEpT
T2JqZWN0KiBvYmplY3QsIEV4ZWNTdGF0ZSogZXhlYywgY29uc3QgSWRlbnRpZmllciYgcHJvcGVy
dHlOYW1lLCBKU1ZhbHVlIHZhbHVlLCBQdXRQcm9wZXJ0eVNsb3QmIHNsb3QpCit2b2lkIFF0SW5z
dGFuY2U6OnB1dChKU09iamVjdCogb2JqZWN0LCBFeGVjU3RhdGUqIGV4ZWMsIFByb3BlcnR5TmFt
ZSBwcm9wZXJ0eU5hbWUsIEpTVmFsdWUgdmFsdWUsIFB1dFByb3BlcnR5U2xvdCYgc2xvdCkKIHsK
ICAgICBKU09iamVjdDo6cHV0KG9iamVjdCwgZXhlYywgcHJvcGVydHlOYW1lLCB2YWx1ZSwgc2xv
dCk7CiB9CkBAIC0yNDgsMTIgKzI0OCwxMiBAQCB2b2lkIFF0SW5zdGFuY2U6OmdldFByb3BlcnR5
TmFtZXMoRXhlY1N0CiAgICAgfQogfQogCi1KU1ZhbHVlIFF0SW5zdGFuY2U6OmdldE1ldGhvZChF
eGVjU3RhdGUqIGV4ZWMsIGNvbnN0IElkZW50aWZpZXImIHByb3BlcnR5TmFtZSkKK0pTVmFsdWUg
UXRJbnN0YW5jZTo6Z2V0TWV0aG9kKEV4ZWNTdGF0ZSogZXhlYywgUHJvcGVydHlOYW1lIHByb3Bl
cnR5TmFtZSkKIHsKICAgICBpZiAoIWdldENsYXNzKCkpCiAgICAgICAgIHJldHVybiBqc051bGwo
KTsKICAgICBNZXRob2RMaXN0IG1ldGhvZExpc3QgPSBtX2NsYXNzLT5tZXRob2RzTmFtZWQocHJv
cGVydHlOYW1lLCB0aGlzKTsKLSAgICByZXR1cm4gUnVudGltZU1ldGhvZDo6Y3JlYXRlKGV4ZWMs
IGV4ZWMtPmxleGljYWxHbG9iYWxPYmplY3QoKSwgV2ViQ29yZTo6ZGVwcmVjYXRlZEdldERPTVN0
cnVjdHVyZTxSdW50aW1lTWV0aG9kPihleGVjKSwgcHJvcGVydHlOYW1lLCBtZXRob2RMaXN0KTsK
KyAgICByZXR1cm4gUnVudGltZU1ldGhvZDo6Y3JlYXRlKGV4ZWMsIGV4ZWMtPmxleGljYWxHbG9i
YWxPYmplY3QoKSwgV2ViQ29yZTo6ZGVwcmVjYXRlZEdldERPTVN0cnVjdHVyZTxSdW50aW1lTWV0
aG9kPihleGVjKSwgcHJvcGVydHlOYW1lLnVzdHJpbmcoKSwgbWV0aG9kTGlzdCk7CiB9CiAKIEpT
VmFsdWUgUXRJbnN0YW5jZTo6aW52b2tlTWV0aG9kKEV4ZWNTdGF0ZSosIFJ1bnRpbWVNZXRob2Qq
KQpJbmRleDogU291cmNlL1dlYkNvcmUvYnJpZGdlL3F0L3F0X2luc3RhbmNlLmgKPT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PQotLS0gU291cmNlL1dlYkNvcmUvYnJpZGdlL3F0L3F0X2luc3RhbmNlLmgJKHJldmlzaW9uIDEx
NjY2NykKKysrIFNvdXJjZS9XZWJDb3JlL2JyaWRnZS9xdC9xdF9pbnN0YW5jZS5oCSh3b3JraW5n
IGNvcHkpCkBAIC01MSw3ICs1MSw3IEBAIHB1YmxpYzoKIAogICAgIHZvaWQgdmlzaXRBZ2dyZWdh
dGUoU2xvdFZpc2l0b3ImKTsKIAotICAgIHZpcnR1YWwgSlNWYWx1ZSBnZXRNZXRob2QoRXhlY1N0
YXRlKiBleGVjLCBjb25zdCBJZGVudGlmaWVyJiBwcm9wZXJ0eU5hbWUpOworICAgIHZpcnR1YWwg
SlNWYWx1ZSBnZXRNZXRob2QoRXhlY1N0YXRlKiwgUHJvcGVydHlOYW1lKTsKICAgICB2aXJ0dWFs
IEpTVmFsdWUgaW52b2tlTWV0aG9kKEV4ZWNTdGF0ZSosIFJ1bnRpbWVNZXRob2QqKTsKIAogICAg
IHZpcnR1YWwgdm9pZCBnZXRQcm9wZXJ0eU5hbWVzKEV4ZWNTdGF0ZSosIFByb3BlcnR5TmFtZUFy
cmF5Jik7CkBAIC02NSw4ICs2NSw4IEBAIHB1YmxpYzoKIAogICAgIHN0YXRpYyBQYXNzUmVmUHRy
PFF0SW5zdGFuY2U+IGdldFF0SW5zdGFuY2UoUU9iamVjdCosIFBhc3NSZWZQdHI8Um9vdE9iamVj
dD4sIFFTY3JpcHRFbmdpbmU6OlZhbHVlT3duZXJzaGlwIG93bmVyc2hpcCk7CiAKLSAgICB2aXJ0
dWFsIGJvb2wgZ2V0T3duUHJvcGVydHlTbG90KEpTT2JqZWN0KiwgRXhlY1N0YXRlKiwgY29uc3Qg
SWRlbnRpZmllciYsIFByb3BlcnR5U2xvdCYpOwotICAgIHZpcnR1YWwgdm9pZCBwdXQoSlNPYmpl
Y3QqLCBFeGVjU3RhdGUqLCBjb25zdCBJZGVudGlmaWVyJiwgSlNWYWx1ZSwgUHV0UHJvcGVydHlT
bG90Jik7CisgICAgdmlydHVhbCBib29sIGdldE93blByb3BlcnR5U2xvdChKU09iamVjdCosIEV4
ZWNTdGF0ZSosIFByb3BlcnR5TmFtZSwgUHJvcGVydHlTbG90Jik7CisgICAgdmlydHVhbCB2b2lk
IHB1dChKU09iamVjdCosIEV4ZWNTdGF0ZSosIFByb3BlcnR5TmFtZSwgSlNWYWx1ZSwgUHV0UHJv
cGVydHlTbG90Jik7CiAKICAgICB2b2lkIHJlbW92ZUNhY2hlZE1ldGhvZChKU09iamVjdCopOwog
CkluZGV4OiBTb3VyY2UvV2ViQ29yZS9icmlkZ2UvcXQvcXRfcGl4bWFwcnVudGltZS5jcHAKPT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PQotLS0gU291cmNlL1dlYkNvcmUvYnJpZGdlL3F0L3F0X3BpeG1hcHJ1bnRpbWUuY3Bw
CShyZXZpc2lvbiAxMTY2NjcpCisrKyBTb3VyY2UvV2ViQ29yZS9icmlkZ2UvcXQvcXRfcGl4bWFw
cnVudGltZS5jcHAJKHdvcmtpbmcgY29weSkKQEAgLTUwLDggKzUwLDggQEAgbmFtZXNwYWNlIEJp
bmRpbmdzIHsKIGNsYXNzIFF0UGl4bWFwQ2xhc3MgOiBwdWJsaWMgQ2xhc3MgewogcHVibGljOgog
ICAgIFF0UGl4bWFwQ2xhc3MoKTsKLSAgICB2aXJ0dWFsIE1ldGhvZExpc3QgbWV0aG9kc05hbWVk
KGNvbnN0IElkZW50aWZpZXImLCBJbnN0YW5jZSopIGNvbnN0OwotICAgIHZpcnR1YWwgRmllbGQq
IGZpZWxkTmFtZWQoY29uc3QgSWRlbnRpZmllciYsIEluc3RhbmNlKikgY29uc3Q7CisgICAgdmly
dHVhbCBNZXRob2RMaXN0IG1ldGhvZHNOYW1lZChQcm9wZXJ0eU5hbWUsIEluc3RhbmNlKikgY29u
c3Q7CisgICAgdmlydHVhbCBGaWVsZCogZmllbGROYW1lZChQcm9wZXJ0eU5hbWUsIEluc3RhbmNl
KikgY29uc3Q7CiB9OwogCiAKQEAgLTIzOSwxMCArMjM5LDEwIEBAIENsYXNzKiBRdFBpeG1hcElu
c3RhbmNlOjpnZXRDbGFzcygpIGNvbnMKICAgICByZXR1cm4gJnF0X3BpeG1hcF9tZXRhRGF0YS5j
bHM7CiB9CiAKLUpTVmFsdWUgUXRQaXhtYXBJbnN0YW5jZTo6Z2V0TWV0aG9kKEV4ZWNTdGF0ZSog
ZXhlYywgY29uc3QgSWRlbnRpZmllciYgcHJvcGVydHlOYW1lKQorSlNWYWx1ZSBRdFBpeG1hcElu
c3RhbmNlOjpnZXRNZXRob2QoRXhlY1N0YXRlKiBleGVjLCBQcm9wZXJ0eU5hbWUgcHJvcGVydHlO
YW1lKQogewogICAgIE1ldGhvZExpc3QgbWV0aG9kTGlzdCA9IGdldENsYXNzKCktPm1ldGhvZHNO
YW1lZChwcm9wZXJ0eU5hbWUsIHRoaXMpOwotICAgIHJldHVybiBSdW50aW1lTWV0aG9kOjpjcmVh
dGUoZXhlYywgZXhlYy0+bGV4aWNhbEdsb2JhbE9iamVjdCgpLCBXZWJDb3JlOjpkZXByZWNhdGVk
R2V0RE9NU3RydWN0dXJlPFJ1bnRpbWVNZXRob2Q+KGV4ZWMpLCBwcm9wZXJ0eU5hbWUsIG1ldGhv
ZExpc3QpOworICAgIHJldHVybiBSdW50aW1lTWV0aG9kOjpjcmVhdGUoZXhlYywgZXhlYy0+bGV4
aWNhbEdsb2JhbE9iamVjdCgpLCBXZWJDb3JlOjpkZXByZWNhdGVkR2V0RE9NU3RydWN0dXJlPFJ1
bnRpbWVNZXRob2Q+KGV4ZWMpLCBwcm9wZXJ0eU5hbWUudXN0cmluZygpLCBtZXRob2RMaXN0KTsK
IH0KIAogSlNWYWx1ZSBRdFBpeG1hcEluc3RhbmNlOjppbnZva2VNZXRob2QoRXhlY1N0YXRlKiBl
eGVjLCBSdW50aW1lTWV0aG9kKiBydW50aW1lTWV0aG9kKQpAQCAtMjU2LDI1ICsyNTYsMjUgQEAg
SlNWYWx1ZSBRdFBpeG1hcEluc3RhbmNlOjppbnZva2VNZXRob2QoRQogICAgIHJldHVybiBqc1Vu
ZGVmaW5lZCgpOwogfQogCi1NZXRob2RMaXN0IFF0UGl4bWFwQ2xhc3M6Om1ldGhvZHNOYW1lZChj
b25zdCBJZGVudGlmaWVyJiBpZGVudGlmaWVyLCBJbnN0YW5jZSopIGNvbnN0CitNZXRob2RMaXN0
IFF0UGl4bWFwQ2xhc3M6Om1ldGhvZHNOYW1lZChQcm9wZXJ0eU5hbWUgaWRlbnRpZmllciwgSW5z
dGFuY2UqKSBjb25zdAogewogICAgIE1ldGhvZExpc3QgbWV0aG9kczsKLSAgICBpZiAoaWRlbnRp
ZmllciA9PSBRdFBpeG1hcFRvRGF0YVVybE1ldGhvZDo6bmFtZSgpKQorICAgIGlmIChpZGVudGlm
aWVyLnVzdHJpbmcoKSA9PSBRdFBpeG1hcFRvRGF0YVVybE1ldGhvZDo6bmFtZSgpKQogICAgICAg
ICBtZXRob2RzLmFwcGVuZCgmcXRfcGl4bWFwX21ldGFEYXRhLnRvRGF0YVVybE1ldGhvZCk7Ci0g
ICAgZWxzZSBpZiAoaWRlbnRpZmllciA9PSBRdFBpeG1hcFRvSW1hZ2VEYXRhTWV0aG9kOjpuYW1l
KCkpCisgICAgZWxzZSBpZiAoaWRlbnRpZmllci51c3RyaW5nKCkgPT0gUXRQaXhtYXBUb0ltYWdl
RGF0YU1ldGhvZDo6bmFtZSgpKQogICAgICAgICBtZXRob2RzLmFwcGVuZCgmcXRfcGl4bWFwX21l
dGFEYXRhLnRvSW1hZ2VEYXRhTWV0aG9kKTsKLSAgICBlbHNlIGlmIChpZGVudGlmaWVyID09IFF0
UGl4bWFwQXNzaWduVG9FbGVtZW50TWV0aG9kOjpuYW1lKCkpCisgICAgZWxzZSBpZiAoaWRlbnRp
Zmllci51c3RyaW5nKCkgPT0gUXRQaXhtYXBBc3NpZ25Ub0VsZW1lbnRNZXRob2Q6Om5hbWUoKSkK
ICAgICAgICAgbWV0aG9kcy5hcHBlbmQoJnF0X3BpeG1hcF9tZXRhRGF0YS5hc3NpZ25Ub0VsZW1l
bnRNZXRob2QpOwotICAgIGVsc2UgaWYgKGlkZW50aWZpZXIgPT0gUXRQaXhtYXBUb1N0cmluZ01l
dGhvZDo6bmFtZSgpKQorICAgIGVsc2UgaWYgKGlkZW50aWZpZXIudXN0cmluZygpID09IFF0UGl4
bWFwVG9TdHJpbmdNZXRob2Q6Om5hbWUoKSkKICAgICAgICAgbWV0aG9kcy5hcHBlbmQoJnF0X3Bp
eG1hcF9tZXRhRGF0YS50b1N0cmluZ01ldGhvZCk7CiAgICAgcmV0dXJuIG1ldGhvZHM7CiB9CiAK
LUZpZWxkKiBRdFBpeG1hcENsYXNzOjpmaWVsZE5hbWVkKGNvbnN0IElkZW50aWZpZXImIGlkZW50
aWZpZXIsIEluc3RhbmNlKikgY29uc3QKK0ZpZWxkKiBRdFBpeG1hcENsYXNzOjpmaWVsZE5hbWVk
KFByb3BlcnR5TmFtZSBpZGVudGlmaWVyLCBJbnN0YW5jZSopIGNvbnN0CiB7Ci0gICAgaWYgKGlk
ZW50aWZpZXIgPT0gUXRQaXhtYXBXaWR0aEZpZWxkOjpuYW1lKCkpCisgICAgaWYgKGlkZW50aWZp
ZXIudXN0cmluZygpID09IFF0UGl4bWFwV2lkdGhGaWVsZDo6bmFtZSgpKQogICAgICAgICByZXR1
cm4gJnF0X3BpeG1hcF9tZXRhRGF0YS53aWR0aEZpZWxkOwotICAgIGlmIChpZGVudGlmaWVyID09
IFF0UGl4bWFwSGVpZ2h0RmllbGQ6Om5hbWUoKSkKKyAgICBpZiAoaWRlbnRpZmllci51c3RyaW5n
KCkgPT0gUXRQaXhtYXBIZWlnaHRGaWVsZDo6bmFtZSgpKQogICAgICAgICByZXR1cm4gJnF0X3Bp
eG1hcF9tZXRhRGF0YS5oZWlnaHRGaWVsZDsKICAgICByZXR1cm4gMDsKIH0KSW5kZXg6IFNvdXJj
ZS9XZWJDb3JlL2JyaWRnZS9xdC9xdF9waXhtYXBydW50aW1lLmgKPT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291
cmNlL1dlYkNvcmUvYnJpZGdlL3F0L3F0X3BpeG1hcHJ1bnRpbWUuaAkocmV2aXNpb24gMTE2NjY3
KQorKysgU291cmNlL1dlYkNvcmUvYnJpZGdlL3F0L3F0X3BpeG1hcHJ1bnRpbWUuaAkod29ya2lu
ZyBjb3B5KQpAQCAtMzIsMTcgKzMyLDE3IEBAIGNsYXNzIFF0UGl4bWFwSW5zdGFuY2UgOiBwdWJs
aWMgSW5zdGFuY2UKIHB1YmxpYzoKICAgICBRdFBpeG1hcEluc3RhbmNlKFBhc3NSZWZQdHI8Um9v
dE9iamVjdD4gcm9vdE9iaiwgY29uc3QgUVZhcmlhbnQmIG5ld0RhdGEpOwogICAgIHZpcnR1YWwg
Q2xhc3MqIGdldENsYXNzKCkgY29uc3Q7Ci0gICAgdmlydHVhbCBKU1ZhbHVlIGdldE1ldGhvZChF
eGVjU3RhdGUqIGV4ZWMsIGNvbnN0IElkZW50aWZpZXImIHByb3BlcnR5TmFtZSk7CisgICAgdmly
dHVhbCBKU1ZhbHVlIGdldE1ldGhvZChFeGVjU3RhdGUqLCBQcm9wZXJ0eU5hbWUpOwogICAgIHZp
cnR1YWwgSlNWYWx1ZSBpbnZva2VNZXRob2QoRXhlY1N0YXRlKiwgUnVudGltZU1ldGhvZCopOwog
ICAgIHZpcnR1YWwgdm9pZCBnZXRQcm9wZXJ0eU5hbWVzKEV4ZWNTdGF0ZSosIFByb3BlcnR5TmFt
ZUFycmF5Jik7CiAKICAgICB2aXJ0dWFsIEpTVmFsdWUgZGVmYXVsdFZhbHVlKEV4ZWNTdGF0ZSos
IFByZWZlcnJlZFByaW1pdGl2ZVR5cGUpIGNvbnN0OwotICAgIHZpcnR1YWwgSlNWYWx1ZSB2YWx1
ZU9mKEV4ZWNTdGF0ZSogZXhlYykgY29uc3Q7CisgICAgdmlydHVhbCBKU1ZhbHVlIHZhbHVlT2Yo
RXhlY1N0YXRlKikgY29uc3Q7CiAgICAgaW50IHdpZHRoKCkgY29uc3Q7CiAgICAgaW50IGhlaWdo
dCgpIGNvbnN0OwogICAgIFFQaXhtYXAgdG9QaXhtYXAoKTsKICAgICBRSW1hZ2UgdG9JbWFnZSgp
OwotICAgIFJ1bnRpbWVPYmplY3QqIG5ld1J1bnRpbWVPYmplY3QoRXhlY1N0YXRlKiBleGVjKTsK
KyAgICBSdW50aW1lT2JqZWN0KiBuZXdSdW50aW1lT2JqZWN0KEV4ZWNTdGF0ZSopOwogICAgIHN0
YXRpYyBKU09iamVjdCogY3JlYXRlUGl4bWFwUnVudGltZU9iamVjdChFeGVjU3RhdGUqLCBQYXNz
UmVmUHRyPFJvb3RPYmplY3Q+LCBjb25zdCBRVmFyaWFudCYpOwogICAgIHN0YXRpYyBRVmFyaWFu
dCB2YXJpYW50RnJvbU9iamVjdChKU09iamVjdCosIFFNZXRhVHlwZTo6VHlwZSBoaW50KTsKICAg
ICBzdGF0aWMgYm9vbCBjYW5IYW5kbGUoUU1ldGFUeXBlOjpUeXBlIGhpbnQpOwpJbmRleDogU291
cmNlL1dlYkNvcmUvYnJpZGdlL3F0L3F0X3J1bnRpbWUuY3BwCj09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJj
ZS9XZWJDb3JlL2JyaWRnZS9xdC9xdF9ydW50aW1lLmNwcAkocmV2aXNpb24gMTE2NjY3KQorKysg
U291cmNlL1dlYkNvcmUvYnJpZGdlL3F0L3F0X3J1bnRpbWUuY3BwCSh3b3JraW5nIGNvcHkpCkBA
IC05NjgsMTMgKzk2OCwxMyBAQCBKU1ZhbHVlIGNvbnZlcnRRVmFyaWFudFRvVmFsdWUoRXhlY1N0
YXRlCiAKIGNvbnN0IENsYXNzSW5mbyBRdFJ1bnRpbWVNZXRob2Q6OnNfaW5mbyA9IHsgIlF0UnVu
dGltZU1ldGhvZCIsICZJbnRlcm5hbEZ1bmN0aW9uOjpzX2luZm8sIDAsIDAsIENSRUFURV9NRVRI
T0RfVEFCTEUoUXRSdW50aW1lTWV0aG9kKSB9OwogCi1RdFJ1bnRpbWVNZXRob2Q6OlF0UnVudGlt
ZU1ldGhvZChRdFJ1bnRpbWVNZXRob2REYXRhKiBkZCwgRXhlY1N0YXRlKiBleGVjLCBTdHJ1Y3R1
cmUqIHN0cnVjdHVyZSwgY29uc3QgSWRlbnRpZmllciYgaWRlbnRpZmllcikKK1F0UnVudGltZU1l
dGhvZDo6UXRSdW50aW1lTWV0aG9kKFF0UnVudGltZU1ldGhvZERhdGEqIGRkLCBFeGVjU3RhdGUq
IGV4ZWMsIFN0cnVjdHVyZSogc3RydWN0dXJlLCBjb25zdCBVU3RyaW5nJiBpZGVudGlmaWVyKQog
ICAgIDogSW50ZXJuYWxGdW5jdGlvbihleGVjLT5sZXhpY2FsR2xvYmFsT2JqZWN0KCksIHN0cnVj
dHVyZSkKICAgICAsIGRfcHRyKGRkKQogewogfQogCi12b2lkIFF0UnVudGltZU1ldGhvZDo6Zmlu
aXNoQ3JlYXRpb24oRXhlY1N0YXRlKiBleGVjLCBjb25zdCBJZGVudGlmaWVyJiBpZGVudGlmaWVy
LCBQYXNzUmVmUHRyPFF0SW5zdGFuY2U+IGluc3RhbmNlKQordm9pZCBRdFJ1bnRpbWVNZXRob2Q6
OmZpbmlzaENyZWF0aW9uKEV4ZWNTdGF0ZSogZXhlYywgY29uc3QgVVN0cmluZyYgaWRlbnRpZmll
ciwgUGFzc1JlZlB0cjxRdEluc3RhbmNlPiBpbnN0YW5jZSkKIHsKICAgICBCYXNlOjpmaW5pc2hD
cmVhdGlvbihleGVjLT5nbG9iYWxEYXRhKCksIGlkZW50aWZpZXIpOwogICAgIFFXX0QoUXRSdW50
aW1lTWV0aG9kKTsKQEAgLTEzODUsMTIgKzEzODUsMTIgQEAgc3RhdGljIGludCBmaW5kU2lnbmFs
SW5kZXgoY29uc3QgUU1ldGFPYgogCiBjb25zdCBDbGFzc0luZm8gUXRSdW50aW1lTWV0YU1ldGhv
ZDo6c19pbmZvID0geyAiUXRSdW50aW1lTWV0aG9kIiwgJkJhc2U6OnNfaW5mbywgMCwgMCwgQ1JF
QVRFX01FVEhPRF9UQUJMRShRdFJ1bnRpbWVNZXRhTWV0aG9kKSB9OwogCi1RdFJ1bnRpbWVNZXRh
TWV0aG9kOjpRdFJ1bnRpbWVNZXRhTWV0aG9kKEV4ZWNTdGF0ZSogZXhlYywgU3RydWN0dXJlKiBz
dHJ1Y3R1cmUsIGNvbnN0IElkZW50aWZpZXImIGlkZW50aWZpZXIpCitRdFJ1bnRpbWVNZXRhTWV0
aG9kOjpRdFJ1bnRpbWVNZXRhTWV0aG9kKEV4ZWNTdGF0ZSogZXhlYywgU3RydWN0dXJlKiBzdHJ1
Y3R1cmUsIGNvbnN0IFVTdHJpbmcmIGlkZW50aWZpZXIpCiAgICAgOiBRdFJ1bnRpbWVNZXRob2Qg
KG5ldyBRdFJ1bnRpbWVNZXRhTWV0aG9kRGF0YSgpLCBleGVjLCBzdHJ1Y3R1cmUsIGlkZW50aWZp
ZXIpCiB7CiB9CiAKLXZvaWQgUXRSdW50aW1lTWV0YU1ldGhvZDo6ZmluaXNoQ3JlYXRpb24oRXhl
Y1N0YXRlKiBleGVjLCBjb25zdCBJZGVudGlmaWVyJiBpZGVudGlmaWVyLCBQYXNzUmVmUHRyPFF0
SW5zdGFuY2U+IGluc3RhbmNlLCBpbnQgaW5kZXgsIGNvbnN0IFFCeXRlQXJyYXkmIHNpZ25hdHVy
ZSwgYm9vbCBhbGxvd1ByaXZhdGUpCit2b2lkIFF0UnVudGltZU1ldGFNZXRob2Q6OmZpbmlzaENy
ZWF0aW9uKEV4ZWNTdGF0ZSogZXhlYywgY29uc3QgVVN0cmluZyYgaWRlbnRpZmllciwgUGFzc1Jl
ZlB0cjxRdEluc3RhbmNlPiBpbnN0YW5jZSwgaW50IGluZGV4LCBjb25zdCBRQnl0ZUFycmF5JiBz
aWduYXR1cmUsIGJvb2wgYWxsb3dQcml2YXRlKQogewogICAgIEJhc2U6OmZpbmlzaENyZWF0aW9u
KGV4ZWMsIGlkZW50aWZpZXIsIGluc3RhbmNlKTsKICAgICBRV19EKFF0UnVudGltZU1ldGFNZXRo
b2QpOwpAQCAtMTQ1MiwxNiArMTQ1MiwxOCBAQCBDYWxsVHlwZSBRdFJ1bnRpbWVNZXRhTWV0aG9k
OjpnZXRDYWxsRGF0CiAgICAgcmV0dXJuIENhbGxUeXBlSG9zdDsKIH0KIAotYm9vbCBRdFJ1bnRp
bWVNZXRhTWV0aG9kOjpnZXRPd25Qcm9wZXJ0eVNsb3QoSlNDZWxsKiBjZWxsLCBFeGVjU3RhdGUq
IGV4ZWMsIGNvbnN0IElkZW50aWZpZXImIHByb3BlcnR5TmFtZSwgUHJvcGVydHlTbG90JiBzbG90
KQorYm9vbCBRdFJ1bnRpbWVNZXRhTWV0aG9kOjpnZXRPd25Qcm9wZXJ0eVNsb3QoSlNDZWxsKiBj
ZWxsLCBFeGVjU3RhdGUqIGV4ZWMsIFByb3BlcnR5TmFtZSBwcm9wZXJ0eU5hbWUsIFByb3BlcnR5
U2xvdCYgc2xvdCkKIHsKICAgICBRdFJ1bnRpbWVNZXRhTWV0aG9kKiB0aGlzT2JqZWN0ID0ganND
YXN0PFF0UnVudGltZU1ldGFNZXRob2QqPihjZWxsKTsKLSAgICBpZiAocHJvcGVydHlOYW1lID09
ICJjb25uZWN0IikgeworICAgIGlmIChwcm9wZXJ0eU5hbWUgPT0gSWRlbnRpZmllcihleGVjLCAi
Y29ubmVjdCIpKSB7CiAgICAgICAgIHNsb3Quc2V0Q3VzdG9tKHRoaXNPYmplY3QsIHRoaXNPYmpl
Y3QtPmNvbm5lY3RHZXR0ZXIpOwogICAgICAgICByZXR1cm4gdHJ1ZTsKLSAgICB9IGVsc2UgaWYg
KHByb3BlcnR5TmFtZSA9PSAiZGlzY29ubmVjdCIpIHsKKyAgICB9CisgICAgaWYgKHByb3BlcnR5
TmFtZSA9PSBJZGVudGlmaWVyKGV4ZWMsICJkaXNjb25uZWN0IikpIHsKICAgICAgICAgc2xvdC5z
ZXRDdXN0b20odGhpc09iamVjdCwgdGhpc09iamVjdC0+ZGlzY29ubmVjdEdldHRlcik7CiAgICAg
ICAgIHJldHVybiB0cnVlOwotICAgIH0gZWxzZSBpZiAocHJvcGVydHlOYW1lID09IGV4ZWMtPnBy
b3BlcnR5TmFtZXMoKS5sZW5ndGgpIHsKKyAgICB9CisgICAgaWYgKHByb3BlcnR5TmFtZSA9PSBl
eGVjLT5wcm9wZXJ0eU5hbWVzKCkubGVuZ3RoKSB7CiAgICAgICAgIHNsb3Quc2V0Q3VzdG9tKHRo
aXNPYmplY3QsIHRoaXNPYmplY3QtPmxlbmd0aEdldHRlcik7CiAgICAgICAgIHJldHVybiB0cnVl
OwogICAgIH0KQEAgLTE0NjksMTcgKzE0NzEsMTcgQEAgYm9vbCBRdFJ1bnRpbWVNZXRhTWV0aG9k
OjpnZXRPd25Qcm9wZXJ0eQogICAgIHJldHVybiBRdFJ1bnRpbWVNZXRob2Q6OmdldE93blByb3Bl
cnR5U2xvdCh0aGlzT2JqZWN0LCBleGVjLCBwcm9wZXJ0eU5hbWUsIHNsb3QpOwogfQogCi1ib29s
IFF0UnVudGltZU1ldGFNZXRob2Q6OmdldE93blByb3BlcnR5RGVzY3JpcHRvcihKU09iamVjdCog
b2JqZWN0LCBFeGVjU3RhdGUqIGV4ZWMsIGNvbnN0IElkZW50aWZpZXImIHByb3BlcnR5TmFtZSwg
UHJvcGVydHlEZXNjcmlwdG9yJiBkZXNjcmlwdG9yKQorYm9vbCBRdFJ1bnRpbWVNZXRhTWV0aG9k
OjpnZXRPd25Qcm9wZXJ0eURlc2NyaXB0b3IoSlNPYmplY3QqIG9iamVjdCwgRXhlY1N0YXRlKiBl
eGVjLCBQcm9wZXJ0eU5hbWUgcHJvcGVydHlOYW1lLCBQcm9wZXJ0eURlc2NyaXB0b3ImIGRlc2Ny
aXB0b3IpCiB7CiAgICAgUXRSdW50aW1lTWV0YU1ldGhvZCogdGhpc09iamVjdCA9IGpzQ2FzdDxR
dFJ1bnRpbWVNZXRhTWV0aG9kKj4ob2JqZWN0KTsKLSAgICBpZiAocHJvcGVydHlOYW1lID09ICJj
b25uZWN0IikgeworICAgIGlmIChwcm9wZXJ0eU5hbWUgPT0gSWRlbnRpZmllcihleGVjLCAiY29u
bmVjdCIpKSB7CiAgICAgICAgIFByb3BlcnR5U2xvdCBzbG90OwogICAgICAgICBzbG90LnNldEN1
c3RvbSh0aGlzT2JqZWN0LCBjb25uZWN0R2V0dGVyKTsKICAgICAgICAgZGVzY3JpcHRvci5zZXRE
ZXNjcmlwdG9yKHNsb3QuZ2V0VmFsdWUoZXhlYywgcHJvcGVydHlOYW1lKSwgRG9udERlbGV0ZSB8
IFJlYWRPbmx5IHwgRG9udEVudW0pOwogICAgICAgICByZXR1cm4gdHJ1ZTsKICAgICB9CiAKLSAg
ICBpZiAocHJvcGVydHlOYW1lID09ICJkaXNjb25uZWN0IikgeworICAgIGlmIChwcm9wZXJ0eU5h
bWUgPT0gSWRlbnRpZmllcihleGVjLCAiZGlzY29ubmVjdCIpKSB7CiAgICAgICAgIFByb3BlcnR5
U2xvdCBzbG90OwogICAgICAgICBzbG90LnNldEN1c3RvbSh0aGlzT2JqZWN0LCBkaXNjb25uZWN0
R2V0dGVyKTsKICAgICAgICAgZGVzY3JpcHRvci5zZXREZXNjcmlwdG9yKHNsb3QuZ2V0VmFsdWUo
ZXhlYywgcHJvcGVydHlOYW1lKSwgRG9udERlbGV0ZSB8IFJlYWRPbmx5IHwgRG9udEVudW0pOwpA
QCAtMTUwNywyOSArMTUwOSwyOSBAQCB2b2lkIFF0UnVudGltZU1ldGFNZXRob2Q6OmdldE93blBy
b3BlcnR5CiAgICAgUXRSdW50aW1lTWV0aG9kOjpnZXRPd25Qcm9wZXJ0eU5hbWVzKG9iamVjdCwg
ZXhlYywgcHJvcGVydHlOYW1lcywgbW9kZSk7CiB9CiAKLUpTVmFsdWUgUXRSdW50aW1lTWV0YU1l
dGhvZDo6bGVuZ3RoR2V0dGVyKEV4ZWNTdGF0ZSosIEpTVmFsdWUsIGNvbnN0IElkZW50aWZpZXIm
KQorSlNWYWx1ZSBRdFJ1bnRpbWVNZXRhTWV0aG9kOjpsZW5ndGhHZXR0ZXIoRXhlY1N0YXRlKiwg
SlNWYWx1ZSwgUHJvcGVydHlOYW1lKQogewogICAgIC8vIFF0U2NyaXB0IGFsd2F5cyByZXR1cm5z
IDAKICAgICByZXR1cm4ganNOdW1iZXIoMCk7CiB9CiAKLUpTVmFsdWUgUXRSdW50aW1lTWV0YU1l
dGhvZDo6Y29ubmVjdEdldHRlcihFeGVjU3RhdGUqIGV4ZWMsIEpTVmFsdWUgc2xvdEJhc2UsIGNv
bnN0IElkZW50aWZpZXImIGlkZW50KQorSlNWYWx1ZSBRdFJ1bnRpbWVNZXRhTWV0aG9kOjpjb25u
ZWN0R2V0dGVyKEV4ZWNTdGF0ZSogZXhlYywgSlNWYWx1ZSBzbG90QmFzZSwgUHJvcGVydHlOYW1l
IGlkZW50KQogewogICAgIFF0UnVudGltZU1ldGFNZXRob2QqIHRoaXNPYmogPSBzdGF0aWNfY2Fz
dDxRdFJ1bnRpbWVNZXRhTWV0aG9kKj4oYXNPYmplY3Qoc2xvdEJhc2UpKTsKICAgICBRV19EUyhR
dFJ1bnRpbWVNZXRhTWV0aG9kLCB0aGlzT2JqKTsKIAogICAgIGlmICghZC0+bV9jb25uZWN0KQot
ICAgICAgICBkLT5tX2Nvbm5lY3Quc2V0KGV4ZWMtPmdsb2JhbERhdGEoKSwgdGhpc09iaiwgUXRS
dW50aW1lQ29ubmVjdGlvbk1ldGhvZDo6Y3JlYXRlKGV4ZWMsIGlkZW50LCB0cnVlLCBkLT5tX2lu
c3RhbmNlLCBkLT5tX2luZGV4LCBkLT5tX3NpZ25hdHVyZSkpOworICAgICAgICBkLT5tX2Nvbm5l
Y3Quc2V0KGV4ZWMtPmdsb2JhbERhdGEoKSwgdGhpc09iaiwgUXRSdW50aW1lQ29ubmVjdGlvbk1l
dGhvZDo6Y3JlYXRlKGV4ZWMsIGlkZW50LmltcGwoKSwgdHJ1ZSwgZC0+bV9pbnN0YW5jZSwgZC0+
bV9pbmRleCwgZC0+bV9zaWduYXR1cmUpKTsKICAgICByZXR1cm4gZC0+bV9jb25uZWN0LmdldCgp
OwogfQogCi1KU1ZhbHVlIFF0UnVudGltZU1ldGFNZXRob2Q6OmRpc2Nvbm5lY3RHZXR0ZXIoRXhl
Y1N0YXRlKiBleGVjLCBKU1ZhbHVlIHNsb3RCYXNlLCBjb25zdCBJZGVudGlmaWVyJiBpZGVudCkK
K0pTVmFsdWUgUXRSdW50aW1lTWV0YU1ldGhvZDo6ZGlzY29ubmVjdEdldHRlcihFeGVjU3RhdGUq
IGV4ZWMsIEpTVmFsdWUgc2xvdEJhc2UsIFByb3BlcnR5TmFtZSBpZGVudCkKIHsKICAgICBRdFJ1
bnRpbWVNZXRhTWV0aG9kKiB0aGlzT2JqID0gc3RhdGljX2Nhc3Q8UXRSdW50aW1lTWV0YU1ldGhv
ZCo+KGFzT2JqZWN0KHNsb3RCYXNlKSk7CiAgICAgUVdfRFMoUXRSdW50aW1lTWV0YU1ldGhvZCwg
dGhpc09iaik7CiAKICAgICBpZiAoIWQtPm1fZGlzY29ubmVjdCkKLSAgICAgICAgZC0+bV9kaXNj
b25uZWN0LnNldChleGVjLT5nbG9iYWxEYXRhKCksIHRoaXNPYmosIFF0UnVudGltZUNvbm5lY3Rp
b25NZXRob2Q6OmNyZWF0ZShleGVjLCBpZGVudCwgZmFsc2UsIGQtPm1faW5zdGFuY2UsIGQtPm1f
aW5kZXgsIGQtPm1fc2lnbmF0dXJlKSk7CisgICAgICAgIGQtPm1fZGlzY29ubmVjdC5zZXQoZXhl
Yy0+Z2xvYmFsRGF0YSgpLCB0aGlzT2JqLCBRdFJ1bnRpbWVDb25uZWN0aW9uTWV0aG9kOjpjcmVh
dGUoZXhlYywgaWRlbnQuaW1wbCgpLCBmYWxzZSwgZC0+bV9pbnN0YW5jZSwgZC0+bV9pbmRleCwg
ZC0+bV9zaWduYXR1cmUpKTsKICAgICByZXR1cm4gZC0+bV9kaXNjb25uZWN0LmdldCgpOwogfQog
CkBAIC0xNTM5LDEyICsxNTQxLDEyIEBAIFFNdWx0aU1hcDxRT2JqZWN0KiwgUXRDb25uZWN0aW9u
T2JqZWN0Kj4KIAogY29uc3QgQ2xhc3NJbmZvIFF0UnVudGltZUNvbm5lY3Rpb25NZXRob2Q6OnNf
aW5mbyA9IHsgIlF0UnVudGltZU1ldGhvZCIsICZCYXNlOjpzX2luZm8sIDAsIDAsIENSRUFURV9N
RVRIT0RfVEFCTEUoUXRSdW50aW1lQ29ubmVjdGlvbk1ldGhvZCkgfTsKIAotUXRSdW50aW1lQ29u
bmVjdGlvbk1ldGhvZDo6UXRSdW50aW1lQ29ubmVjdGlvbk1ldGhvZChFeGVjU3RhdGUqIGV4ZWMs
IFN0cnVjdHVyZSogc3RydWN0dXJlLCBjb25zdCBJZGVudGlmaWVyJiBpZGVudGlmaWVyKQorUXRS
dW50aW1lQ29ubmVjdGlvbk1ldGhvZDo6UXRSdW50aW1lQ29ubmVjdGlvbk1ldGhvZChFeGVjU3Rh
dGUqIGV4ZWMsIFN0cnVjdHVyZSogc3RydWN0dXJlLCBjb25zdCBVU3RyaW5nJiBpZGVudGlmaWVy
KQogICAgIDogUXRSdW50aW1lTWV0aG9kIChuZXcgUXRSdW50aW1lQ29ubmVjdGlvbk1ldGhvZERh
dGEoKSwgZXhlYywgc3RydWN0dXJlLCBpZGVudGlmaWVyKQogewogfQogCi12b2lkIFF0UnVudGlt
ZUNvbm5lY3Rpb25NZXRob2Q6OmZpbmlzaENyZWF0aW9uKEV4ZWNTdGF0ZSogZXhlYywgY29uc3Qg
SWRlbnRpZmllciYgaWRlbnRpZmllciwgYm9vbCBpc0Nvbm5lY3QsIFBhc3NSZWZQdHI8UXRJbnN0
YW5jZT4gaW5zdGFuY2UsIGludCBpbmRleCwgY29uc3QgUUJ5dGVBcnJheSYgc2lnbmF0dXJlKQor
dm9pZCBRdFJ1bnRpbWVDb25uZWN0aW9uTWV0aG9kOjpmaW5pc2hDcmVhdGlvbihFeGVjU3RhdGUq
IGV4ZWMsIGNvbnN0IFVTdHJpbmcmIGlkZW50aWZpZXIsIGJvb2wgaXNDb25uZWN0LCBQYXNzUmVm
UHRyPFF0SW5zdGFuY2U+IGluc3RhbmNlLCBpbnQgaW5kZXgsIGNvbnN0IFFCeXRlQXJyYXkmIHNp
Z25hdHVyZSkKIHsKICAgICBCYXNlOjpmaW5pc2hDcmVhdGlvbihleGVjLCBpZGVudGlmaWVyLCBp
bnN0YW5jZSk7CiAgICAgUVdfRChRdFJ1bnRpbWVDb25uZWN0aW9uTWV0aG9kKTsKQEAgLTE2OTUs
NyArMTY5Nyw3IEBAIENhbGxUeXBlIFF0UnVudGltZUNvbm5lY3Rpb25NZXRob2Q6OmdldEMKICAg
ICByZXR1cm4gQ2FsbFR5cGVIb3N0OwogfQogCi1ib29sIFF0UnVudGltZUNvbm5lY3Rpb25NZXRo
b2Q6OmdldE93blByb3BlcnR5U2xvdChKU0NlbGwqIGNlbGwsIEV4ZWNTdGF0ZSogZXhlYywgY29u
c3QgSWRlbnRpZmllciYgcHJvcGVydHlOYW1lLCBQcm9wZXJ0eVNsb3QmIHNsb3QpCitib29sIFF0
UnVudGltZUNvbm5lY3Rpb25NZXRob2Q6OmdldE93blByb3BlcnR5U2xvdChKU0NlbGwqIGNlbGws
IEV4ZWNTdGF0ZSogZXhlYywgUHJvcGVydHlOYW1lIHByb3BlcnR5TmFtZSwgUHJvcGVydHlTbG90
JiBzbG90KQogewogICAgIFF0UnVudGltZUNvbm5lY3Rpb25NZXRob2QqIHRoaXNPYmplY3QgPSBq
c0Nhc3Q8UXRSdW50aW1lQ29ubmVjdGlvbk1ldGhvZCo+KGNlbGwpOwogICAgIGlmIChwcm9wZXJ0
eU5hbWUgPT0gZXhlYy0+cHJvcGVydHlOYW1lcygpLmxlbmd0aCkgewpAQCAtMTcwNiw3ICsxNzA4
LDcgQEAgYm9vbCBRdFJ1bnRpbWVDb25uZWN0aW9uTWV0aG9kOjpnZXRPd25QcgogICAgIHJldHVy
biBRdFJ1bnRpbWVNZXRob2Q6OmdldE93blByb3BlcnR5U2xvdCh0aGlzT2JqZWN0LCBleGVjLCBw
cm9wZXJ0eU5hbWUsIHNsb3QpOwogfQogCi1ib29sIFF0UnVudGltZUNvbm5lY3Rpb25NZXRob2Q6
OmdldE93blByb3BlcnR5RGVzY3JpcHRvcihKU09iamVjdCogb2JqZWN0LCBFeGVjU3RhdGUqIGV4
ZWMsIGNvbnN0IElkZW50aWZpZXImIHByb3BlcnR5TmFtZSwgUHJvcGVydHlEZXNjcmlwdG9yJiBk
ZXNjcmlwdG9yKQorYm9vbCBRdFJ1bnRpbWVDb25uZWN0aW9uTWV0aG9kOjpnZXRPd25Qcm9wZXJ0
eURlc2NyaXB0b3IoSlNPYmplY3QqIG9iamVjdCwgRXhlY1N0YXRlKiBleGVjLCBQcm9wZXJ0eU5h
bWUgcHJvcGVydHlOYW1lLCBQcm9wZXJ0eURlc2NyaXB0b3ImIGRlc2NyaXB0b3IpCiB7CiAgICAg
UXRSdW50aW1lQ29ubmVjdGlvbk1ldGhvZCogdGhpc09iamVjdCA9IGpzQ2FzdDxRdFJ1bnRpbWVD
b25uZWN0aW9uTWV0aG9kKj4ob2JqZWN0KTsKICAgICBpZiAocHJvcGVydHlOYW1lID09IGV4ZWMt
PnByb3BlcnR5TmFtZXMoKS5sZW5ndGgpIHsKQEAgLTE3MjcsNyArMTcyOSw3IEBAIHZvaWQgUXRS
dW50aW1lQ29ubmVjdGlvbk1ldGhvZDo6Z2V0T3duUHIKICAgICBRdFJ1bnRpbWVNZXRob2Q6Omdl
dE93blByb3BlcnR5TmFtZXMob2JqZWN0LCBleGVjLCBwcm9wZXJ0eU5hbWVzLCBtb2RlKTsKIH0K
IAotSlNWYWx1ZSBRdFJ1bnRpbWVDb25uZWN0aW9uTWV0aG9kOjpsZW5ndGhHZXR0ZXIoRXhlY1N0
YXRlKiwgSlNWYWx1ZSwgY29uc3QgSWRlbnRpZmllciYpCitKU1ZhbHVlIFF0UnVudGltZUNvbm5l
Y3Rpb25NZXRob2Q6Omxlbmd0aEdldHRlcihFeGVjU3RhdGUqLCBKU1ZhbHVlLCBQcm9wZXJ0eU5h
bWUpCiB7CiAgICAgLy8gd2UgaGF2ZSBvbmUgZm9ybWFsIGFyZ3VtZW50LCBhbmQgb25lIG9wdGlv
bmFsCiAgICAgcmV0dXJuIGpzTnVtYmVyKDEpOwpJbmRleDogU291cmNlL1dlYkNvcmUvYnJpZGdl
L3F0L3F0X3J1bnRpbWUuaAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2ViQ29yZS9icmlkZ2UvcXQv
cXRfcnVudGltZS5oCShyZXZpc2lvbiAxMTY2NjcpCisrKyBTb3VyY2UvV2ViQ29yZS9icmlkZ2Uv
cXQvcXRfcnVudGltZS5oCSh3b3JraW5nIGNvcHkpCkBAIC0xNDksMTEgKzE0OSwxMSBAQCBwdWJs
aWM6CiAgICAgfQogCiBwcm90ZWN0ZWQ6Ci0gICAgdm9pZCBmaW5pc2hDcmVhdGlvbihFeGVjU3Rh
dGUqLCBjb25zdCBJZGVudGlmaWVyJiwgUGFzc1JlZlB0cjxRdEluc3RhbmNlPik7CisgICAgdm9p
ZCBmaW5pc2hDcmVhdGlvbihFeGVjU3RhdGUqLCBjb25zdCBVU3RyaW5nJiwgUGFzc1JlZlB0cjxR
dEluc3RhbmNlPik7CiAgICAgc3RhdGljIGNvbnN0IHVuc2lnbmVkIFN0cnVjdHVyZUZsYWdzID0g
T3ZlcnJpZGVzR2V0T3duUHJvcGVydHlTbG90IHwgT3ZlcnJpZGVzR2V0UHJvcGVydHlOYW1lcyB8
IEludGVybmFsRnVuY3Rpb246OlN0cnVjdHVyZUZsYWdzIHwgT3ZlcnJpZGVzVmlzaXRDaGlsZHJl
bjsKIAogICAgIFF0UnVudGltZU1ldGhvZERhdGEgKmRfZnVuYygpIGNvbnN0IHtyZXR1cm4gZF9w
dHI7fQotICAgIFF0UnVudGltZU1ldGhvZChRdFJ1bnRpbWVNZXRob2REYXRhICpkZCwgRXhlY1N0
YXRlICosIFN0cnVjdHVyZSosIGNvbnN0IElkZW50aWZpZXIgJm5hbWUpOworICAgIFF0UnVudGlt
ZU1ldGhvZChRdFJ1bnRpbWVNZXRob2REYXRhICpkZCwgRXhlY1N0YXRlICosIFN0cnVjdHVyZSos
IGNvbnN0IFVTdHJpbmcmIG5hbWUpOwogICAgIFF0UnVudGltZU1ldGhvZERhdGEgKmRfcHRyOwog
fTsKIApAQCAtMTYxLDcgKzE2MSw3IEBAIGNsYXNzIFF0UnVudGltZU1ldGFNZXRob2QgOiBwdWJs
aWMgUXRSdW4KIHB1YmxpYzoKICAgICB0eXBlZGVmIFF0UnVudGltZU1ldGhvZCBCYXNlOwogCi0g
ICAgc3RhdGljIFF0UnVudGltZU1ldGFNZXRob2QqIGNyZWF0ZShFeGVjU3RhdGUqIGV4ZWMsIGNv
bnN0IElkZW50aWZpZXImIG5hbWUsIFBhc3NSZWZQdHI8UXRJbnN0YW5jZT4gaW5zdGFuY2UsIGlu
dCBpbmRleCwgY29uc3QgUUJ5dGVBcnJheSYgc2lnbmF0dXJlLCBib29sIGFsbG93UHJpdmF0ZSkK
KyAgICBzdGF0aWMgUXRSdW50aW1lTWV0YU1ldGhvZCogY3JlYXRlKEV4ZWNTdGF0ZSogZXhlYywg
Y29uc3QgVVN0cmluZyYgbmFtZSwgUGFzc1JlZlB0cjxRdEluc3RhbmNlPiBpbnN0YW5jZSwgaW50
IGluZGV4LCBjb25zdCBRQnl0ZUFycmF5JiBzaWduYXR1cmUsIGJvb2wgYWxsb3dQcml2YXRlKQog
ICAgIHsKICAgICAgICAgU3RydWN0dXJlKiBkb21TdHJ1Y3R1cmUgPSBXZWJDb3JlOjpkZXByZWNh
dGVkR2V0RE9NU3RydWN0dXJlPFF0UnVudGltZU1ldGFNZXRob2Q+KGV4ZWMpOwogICAgICAgICBR
dFJ1bnRpbWVNZXRhTWV0aG9kKiBtZXRob2QgPSBuZXcgKGFsbG9jYXRlQ2VsbDxRdFJ1bnRpbWVN
ZXRhTWV0aG9kPigqZXhlYy0+aGVhcCgpKSkgUXRSdW50aW1lTWV0YU1ldGhvZChleGVjLCBkb21T
dHJ1Y3R1cmUsIG5hbWUpOwpAQCAtMTY5LDggKzE2OSw4IEBAIHB1YmxpYzoKICAgICAgICAgcmV0
dXJuIG1ldGhvZDsKICAgICB9CiAKLSAgICBzdGF0aWMgYm9vbCBnZXRPd25Qcm9wZXJ0eVNsb3Qo
SlNDZWxsKiwgRXhlY1N0YXRlICosIGNvbnN0IElkZW50aWZpZXImLCBQcm9wZXJ0eVNsb3QmKTsK
LSAgICBzdGF0aWMgYm9vbCBnZXRPd25Qcm9wZXJ0eURlc2NyaXB0b3IoSlNPYmplY3QqLCBFeGVj
U3RhdGUqLCBjb25zdCBJZGVudGlmaWVyJiwgUHJvcGVydHlEZXNjcmlwdG9yJik7CisgICAgc3Rh
dGljIGJvb2wgZ2V0T3duUHJvcGVydHlTbG90KEpTQ2VsbCosIEV4ZWNTdGF0ZSAqLCBQcm9wZXJ0
eU5hbWUsIFByb3BlcnR5U2xvdCYpOworICAgIHN0YXRpYyBib29sIGdldE93blByb3BlcnR5RGVz
Y3JpcHRvcihKU09iamVjdCosIEV4ZWNTdGF0ZSosIFByb3BlcnR5TmFtZSwgUHJvcGVydHlEZXNj
cmlwdG9yJik7CiAgICAgc3RhdGljIHZvaWQgZ2V0T3duUHJvcGVydHlOYW1lcyhKU09iamVjdCos
IEV4ZWNTdGF0ZSosIFByb3BlcnR5TmFtZUFycmF5JiwgRW51bWVyYXRpb25Nb2RlKTsKIAogICAg
IHN0YXRpYyB2b2lkIHZpc2l0Q2hpbGRyZW4oSlNDZWxsKiwgU2xvdFZpc2l0b3ImKTsKQEAgLTE4
NiwxNCArMTg2LDE0IEBAIHByb3RlY3RlZDoKICAgICBRdFJ1bnRpbWVNZXRhTWV0aG9kRGF0YSog
ZF9mdW5jKCkgY29uc3Qge3JldHVybiByZWludGVycHJldF9jYXN0PFF0UnVudGltZU1ldGFNZXRo
b2REYXRhKj4oZF9wdHIpO30KIAogcHJpdmF0ZToKLSAgICBRdFJ1bnRpbWVNZXRhTWV0aG9kKEV4
ZWNTdGF0ZSosIFN0cnVjdHVyZSosIGNvbnN0IElkZW50aWZpZXImKTsKLSAgICB2b2lkIGZpbmlz
aENyZWF0aW9uKEV4ZWNTdGF0ZSosIGNvbnN0IElkZW50aWZpZXImLCBQYXNzUmVmUHRyPFF0SW5z
dGFuY2U+LCBpbnQgaW5kZXgsIGNvbnN0IFFCeXRlQXJyYXkmIHNpZ25hdHVyZSwgYm9vbCBhbGxv
d1ByaXZhdGUpOworICAgIFF0UnVudGltZU1ldGFNZXRob2QoRXhlY1N0YXRlKiwgU3RydWN0dXJl
KiwgY29uc3QgVVN0cmluZyYpOworICAgIHZvaWQgZmluaXNoQ3JlYXRpb24oRXhlY1N0YXRlKiwg
Y29uc3QgVVN0cmluZyYsIFBhc3NSZWZQdHI8UXRJbnN0YW5jZT4sIGludCBpbmRleCwgY29uc3Qg
UUJ5dGVBcnJheSYgc2lnbmF0dXJlLCBib29sIGFsbG93UHJpdmF0ZSk7CiAKICAgICBzdGF0aWMg
Q2FsbFR5cGUgZ2V0Q2FsbERhdGEoSlNDZWxsKiwgQ2FsbERhdGEmKTsKICAgICBzdGF0aWMgRW5j
b2RlZEpTVmFsdWUgSlNDX0hPU1RfQ0FMTCBjYWxsKEV4ZWNTdGF0ZSogZXhlYyk7Ci0gICAgc3Rh
dGljIEpTVmFsdWUgbGVuZ3RoR2V0dGVyKEV4ZWNTdGF0ZSosIEpTVmFsdWUsIGNvbnN0IElkZW50
aWZpZXImKTsKLSAgICBzdGF0aWMgSlNWYWx1ZSBjb25uZWN0R2V0dGVyKEV4ZWNTdGF0ZSosIEpT
VmFsdWUsIGNvbnN0IElkZW50aWZpZXImKTsKLSAgICBzdGF0aWMgSlNWYWx1ZSBkaXNjb25uZWN0
R2V0dGVyKEV4ZWNTdGF0ZSosIEpTVmFsdWUsIGNvbnN0IElkZW50aWZpZXImKTsKKyAgICBzdGF0
aWMgSlNWYWx1ZSBsZW5ndGhHZXR0ZXIoRXhlY1N0YXRlKiwgSlNWYWx1ZSwgUHJvcGVydHlOYW1l
KTsKKyAgICBzdGF0aWMgSlNWYWx1ZSBjb25uZWN0R2V0dGVyKEV4ZWNTdGF0ZSosIEpTVmFsdWUs
IFByb3BlcnR5TmFtZSk7CisgICAgc3RhdGljIEpTVmFsdWUgZGlzY29ubmVjdEdldHRlcihFeGVj
U3RhdGUqLCBKU1ZhbHVlLCBQcm9wZXJ0eU5hbWUpOwogfTsKIAogY2xhc3MgUXRDb25uZWN0aW9u
T2JqZWN0OwpAQCAtMjAxLDcgKzIwMSw3IEBAIGNsYXNzIFF0UnVudGltZUNvbm5lY3Rpb25NZXRo
b2QgOiBwdWJsaWMKIHB1YmxpYzoKICAgICB0eXBlZGVmIFF0UnVudGltZU1ldGhvZCBCYXNlOwog
Ci0gICAgc3RhdGljIFF0UnVudGltZUNvbm5lY3Rpb25NZXRob2QqIGNyZWF0ZShFeGVjU3RhdGUq
IGV4ZWMsIGNvbnN0IElkZW50aWZpZXImIG5hbWUsIGJvb2wgaXNDb25uZWN0LCBQYXNzUmVmUHRy
PFF0SW5zdGFuY2U+IGluc3RhbmNlLCBpbnQgaW5kZXgsIGNvbnN0IFFCeXRlQXJyYXkmIHNpZ25h
dHVyZSkKKyAgICBzdGF0aWMgUXRSdW50aW1lQ29ubmVjdGlvbk1ldGhvZCogY3JlYXRlKEV4ZWNT
dGF0ZSogZXhlYywgY29uc3QgVVN0cmluZyYgbmFtZSwgYm9vbCBpc0Nvbm5lY3QsIFBhc3NSZWZQ
dHI8UXRJbnN0YW5jZT4gaW5zdGFuY2UsIGludCBpbmRleCwgY29uc3QgUUJ5dGVBcnJheSYgc2ln
bmF0dXJlKQogICAgIHsKICAgICAgICAgU3RydWN0dXJlKiBkb21TdHJ1Y3R1cmUgPSBXZWJDb3Jl
OjpkZXByZWNhdGVkR2V0RE9NU3RydWN0dXJlPFF0UnVudGltZUNvbm5lY3Rpb25NZXRob2Q+KGV4
ZWMpOwogICAgICAgICBRdFJ1bnRpbWVDb25uZWN0aW9uTWV0aG9kKiBtZXRob2QgPSBuZXcgKGFs
bG9jYXRlQ2VsbDxRdFJ1bnRpbWVDb25uZWN0aW9uTWV0aG9kPigqZXhlYy0+aGVhcCgpKSkgUXRS
dW50aW1lQ29ubmVjdGlvbk1ldGhvZChleGVjLCBkb21TdHJ1Y3R1cmUsIG5hbWUpOwpAQCAtMjA5
LDggKzIwOSw4IEBAIHB1YmxpYzoKICAgICAgICAgcmV0dXJuIG1ldGhvZDsKICAgICB9CiAKLSAg
ICBzdGF0aWMgYm9vbCBnZXRPd25Qcm9wZXJ0eVNsb3QoSlNDZWxsKiwgRXhlY1N0YXRlICosIGNv
bnN0IElkZW50aWZpZXImLCBQcm9wZXJ0eVNsb3QmKTsKLSAgICBzdGF0aWMgYm9vbCBnZXRPd25Q
cm9wZXJ0eURlc2NyaXB0b3IoSlNPYmplY3QqLCBFeGVjU3RhdGUqLCBjb25zdCBJZGVudGlmaWVy
JiwgUHJvcGVydHlEZXNjcmlwdG9yJik7CisgICAgc3RhdGljIGJvb2wgZ2V0T3duUHJvcGVydHlT
bG90KEpTQ2VsbCosIEV4ZWNTdGF0ZSAqLCBQcm9wZXJ0eU5hbWUsIFByb3BlcnR5U2xvdCYpOwor
ICAgIHN0YXRpYyBib29sIGdldE93blByb3BlcnR5RGVzY3JpcHRvcihKU09iamVjdCosIEV4ZWNT
dGF0ZSosIFByb3BlcnR5TmFtZSwgUHJvcGVydHlEZXNjcmlwdG9yJik7CiAgICAgc3RhdGljIHZv
aWQgZ2V0T3duUHJvcGVydHlOYW1lcyhKU09iamVjdCosIEV4ZWNTdGF0ZSosIFByb3BlcnR5TmFt
ZUFycmF5JiwgRW51bWVyYXRpb25Nb2RlKTsKICAKICAgICBzdGF0aWMgY29uc3QgQ2xhc3NJbmZv
IHNfaW5mbzsKQEAgLTIyNCwxMiArMjI0LDEyIEBAIHByb3RlY3RlZDoKICAgICBRdFJ1bnRpbWVD
b25uZWN0aW9uTWV0aG9kRGF0YSogZF9mdW5jKCkgY29uc3Qge3JldHVybiByZWludGVycHJldF9j
YXN0PFF0UnVudGltZUNvbm5lY3Rpb25NZXRob2REYXRhKj4oZF9wdHIpO30KIAogcHJpdmF0ZToK
LSAgICBRdFJ1bnRpbWVDb25uZWN0aW9uTWV0aG9kKEV4ZWNTdGF0ZSosIFN0cnVjdHVyZSosIGNv
bnN0IElkZW50aWZpZXImKTsKLSAgICB2b2lkIGZpbmlzaENyZWF0aW9uKEV4ZWNTdGF0ZSosIGNv
bnN0IElkZW50aWZpZXImLCBib29sIGlzQ29ubmVjdCwgUGFzc1JlZlB0cjxRdEluc3RhbmNlPiwg
aW50IGluZGV4LCBjb25zdCBRQnl0ZUFycmF5JiBzaWduYXR1cmUpOworICAgIFF0UnVudGltZUNv
bm5lY3Rpb25NZXRob2QoRXhlY1N0YXRlKiwgU3RydWN0dXJlKiwgY29uc3QgVVN0cmluZyYpOwor
ICAgIHZvaWQgZmluaXNoQ3JlYXRpb24oRXhlY1N0YXRlKiwgY29uc3QgVVN0cmluZyYsIGJvb2wg
aXNDb25uZWN0LCBQYXNzUmVmUHRyPFF0SW5zdGFuY2U+LCBpbnQgaW5kZXgsIGNvbnN0IFFCeXRl
QXJyYXkmIHNpZ25hdHVyZSk7CiAKICAgICBzdGF0aWMgQ2FsbFR5cGUgZ2V0Q2FsbERhdGEoSlND
ZWxsKiwgQ2FsbERhdGEmKTsKICAgICBzdGF0aWMgRW5jb2RlZEpTVmFsdWUgSlNDX0hPU1RfQ0FM
TCBjYWxsKEV4ZWNTdGF0ZSogZXhlYyk7Ci0gICAgc3RhdGljIEpTVmFsdWUgbGVuZ3RoR2V0dGVy
KEV4ZWNTdGF0ZSosIEpTVmFsdWUsIGNvbnN0IElkZW50aWZpZXImKTsKKyAgICBzdGF0aWMgSlNW
YWx1ZSBsZW5ndGhHZXR0ZXIoRXhlY1N0YXRlKiwgSlNWYWx1ZSwgUHJvcGVydHlOYW1lKTsKICAg
ICBzdGF0aWMgUU11bHRpTWFwPFFPYmplY3QgKiwgUXRDb25uZWN0aW9uT2JqZWN0ICo+IGNvbm5l
Y3Rpb25zOwogICAgIGZyaWVuZCBjbGFzcyBRdENvbm5lY3Rpb25PYmplY3Q7CiB9OwpJbmRleDog
U291cmNlL1dlYkNvcmUvYnJpZGdlL3F0L3F0X3J1bnRpbWVfcXQ0LmNwcAo9PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0t
LSBTb3VyY2UvV2ViQ29yZS9icmlkZ2UvcXQvcXRfcnVudGltZV9xdDQuY3BwCShyZXZpc2lvbiAx
MTY2NjcpCisrKyBTb3VyY2UvV2ViQ29yZS9icmlkZ2UvcXQvcXRfcnVudGltZV9xdDQuY3BwCSh3
b3JraW5nIGNvcHkpCkBAIC05NjgsMTMgKzk2OCwxMyBAQCBKU1ZhbHVlIGNvbnZlcnRRVmFyaWFu
dFRvVmFsdWUoRXhlY1N0YXRlCiAKIGNvbnN0IENsYXNzSW5mbyBRdFJ1bnRpbWVNZXRob2Q6OnNf
aW5mbyA9IHsgIlF0UnVudGltZU1ldGhvZCIsICZJbnRlcm5hbEZ1bmN0aW9uOjpzX2luZm8sIDAs
IDAsIENSRUFURV9NRVRIT0RfVEFCTEUoUXRSdW50aW1lTWV0aG9kKSB9OwogCi1RdFJ1bnRpbWVN
ZXRob2Q6OlF0UnVudGltZU1ldGhvZChRdFJ1bnRpbWVNZXRob2REYXRhKiBkZCwgRXhlY1N0YXRl
KiBleGVjLCBTdHJ1Y3R1cmUqIHN0cnVjdHVyZSwgY29uc3QgSWRlbnRpZmllciYgaWRlbnRpZmll
cikKK1F0UnVudGltZU1ldGhvZDo6UXRSdW50aW1lTWV0aG9kKFF0UnVudGltZU1ldGhvZERhdGEq
IGRkLCBFeGVjU3RhdGUqIGV4ZWMsIFN0cnVjdHVyZSogc3RydWN0dXJlLCBjb25zdCBVU3RyaW5n
JiBpZGVudGlmaWVyKQogICAgIDogSW50ZXJuYWxGdW5jdGlvbihleGVjLT5sZXhpY2FsR2xvYmFs
T2JqZWN0KCksIHN0cnVjdHVyZSkKICAgICAsIGRfcHRyKGRkKQogewogfQogCi12b2lkIFF0UnVu
dGltZU1ldGhvZDo6ZmluaXNoQ3JlYXRpb24oRXhlY1N0YXRlKiBleGVjLCBjb25zdCBJZGVudGlm
aWVyJiBpZGVudGlmaWVyLCBQYXNzUmVmUHRyPFF0SW5zdGFuY2U+IGluc3RhbmNlKQordm9pZCBR
dFJ1bnRpbWVNZXRob2Q6OmZpbmlzaENyZWF0aW9uKEV4ZWNTdGF0ZSogZXhlYywgY29uc3QgVVN0
cmluZyYgaWRlbnRpZmllciwgUGFzc1JlZlB0cjxRdEluc3RhbmNlPiBpbnN0YW5jZSkKIHsKICAg
ICBCYXNlOjpmaW5pc2hDcmVhdGlvbihleGVjLT5nbG9iYWxEYXRhKCksIGlkZW50aWZpZXIpOwog
ICAgIFFXX0QoUXRSdW50aW1lTWV0aG9kKTsKQEAgLTEzOTQsMTIgKzEzOTQsMTIgQEAgc3RhdGlj
IGludCBmaW5kU2lnbmFsSW5kZXgoY29uc3QgUU1ldGFPYgogCiBjb25zdCBDbGFzc0luZm8gUXRS
dW50aW1lTWV0YU1ldGhvZDo6c19pbmZvID0geyAiUXRSdW50aW1lTWV0aG9kIiwgJkJhc2U6OnNf
aW5mbywgMCwgMCwgQ1JFQVRFX01FVEhPRF9UQUJMRShRdFJ1bnRpbWVNZXRhTWV0aG9kKSB9Owog
Ci1RdFJ1bnRpbWVNZXRhTWV0aG9kOjpRdFJ1bnRpbWVNZXRhTWV0aG9kKEV4ZWNTdGF0ZSogZXhl
YywgU3RydWN0dXJlKiBzdHJ1Y3R1cmUsIGNvbnN0IElkZW50aWZpZXImIGlkZW50aWZpZXIpCitR
dFJ1bnRpbWVNZXRhTWV0aG9kOjpRdFJ1bnRpbWVNZXRhTWV0aG9kKEV4ZWNTdGF0ZSogZXhlYywg
U3RydWN0dXJlKiBzdHJ1Y3R1cmUsIGNvbnN0IFVTdHJpbmcmIGlkZW50aWZpZXIpCiAgICAgOiBR
dFJ1bnRpbWVNZXRob2QgKG5ldyBRdFJ1bnRpbWVNZXRhTWV0aG9kRGF0YSgpLCBleGVjLCBzdHJ1
Y3R1cmUsIGlkZW50aWZpZXIpCiB7CiB9CiAKLXZvaWQgUXRSdW50aW1lTWV0YU1ldGhvZDo6Zmlu
aXNoQ3JlYXRpb24oRXhlY1N0YXRlKiBleGVjLCBjb25zdCBJZGVudGlmaWVyJiBpZGVudGlmaWVy
LCBQYXNzUmVmUHRyPFF0SW5zdGFuY2U+IGluc3RhbmNlLCBpbnQgaW5kZXgsIGNvbnN0IFFCeXRl
QXJyYXkmIHNpZ25hdHVyZSwgYm9vbCBhbGxvd1ByaXZhdGUpCit2b2lkIFF0UnVudGltZU1ldGFN
ZXRob2Q6OmZpbmlzaENyZWF0aW9uKEV4ZWNTdGF0ZSogZXhlYywgY29uc3QgVVN0cmluZyYgaWRl
bnRpZmllciwgUGFzc1JlZlB0cjxRdEluc3RhbmNlPiBpbnN0YW5jZSwgaW50IGluZGV4LCBjb25z
dCBRQnl0ZUFycmF5JiBzaWduYXR1cmUsIGJvb2wgYWxsb3dQcml2YXRlKQogewogICAgIEJhc2U6
OmZpbmlzaENyZWF0aW9uKGV4ZWMsIGlkZW50aWZpZXIsIGluc3RhbmNlKTsKICAgICBRV19EKFF0
UnVudGltZU1ldGFNZXRob2QpOwpAQCAtMTQ2MSwxNiArMTQ2MSwxOCBAQCBDYWxsVHlwZSBRdFJ1
bnRpbWVNZXRhTWV0aG9kOjpnZXRDYWxsRGF0CiAgICAgcmV0dXJuIENhbGxUeXBlSG9zdDsKIH0K
IAotYm9vbCBRdFJ1bnRpbWVNZXRhTWV0aG9kOjpnZXRPd25Qcm9wZXJ0eVNsb3QoSlNDZWxsKiBj
ZWxsLCBFeGVjU3RhdGUqIGV4ZWMsIGNvbnN0IElkZW50aWZpZXImIHByb3BlcnR5TmFtZSwgUHJv
cGVydHlTbG90JiBzbG90KQorYm9vbCBRdFJ1bnRpbWVNZXRhTWV0aG9kOjpnZXRPd25Qcm9wZXJ0
eVNsb3QoSlNDZWxsKiBjZWxsLCBFeGVjU3RhdGUqIGV4ZWMsIFByb3BlcnR5TmFtZSBwcm9wZXJ0
eU5hbWUsIFByb3BlcnR5U2xvdCYgc2xvdCkKIHsKICAgICBRdFJ1bnRpbWVNZXRhTWV0aG9kKiB0
aGlzT2JqZWN0ID0ganNDYXN0PFF0UnVudGltZU1ldGFNZXRob2QqPihjZWxsKTsKLSAgICBpZiAo
cHJvcGVydHlOYW1lID09ICJjb25uZWN0IikgeworICAgIGlmIChwcm9wZXJ0eU5hbWUgPT0gSWRl
bnRpZmllcihleGVjLCAiY29ubmVjdCIpKSB7CiAgICAgICAgIHNsb3Quc2V0Q3VzdG9tKHRoaXNP
YmplY3QsIHRoaXNPYmplY3QtPmNvbm5lY3RHZXR0ZXIpOwogICAgICAgICByZXR1cm4gdHJ1ZTsK
LSAgICB9IGVsc2UgaWYgKHByb3BlcnR5TmFtZSA9PSAiZGlzY29ubmVjdCIpIHsKKyAgICB9Cisg
ICAgaWYgKHByb3BlcnR5TmFtZSA9PSBJZGVudGlmaWVyKGV4ZWMsICJkaXNjb25uZWN0IikpIHsK
ICAgICAgICAgc2xvdC5zZXRDdXN0b20odGhpc09iamVjdCwgdGhpc09iamVjdC0+ZGlzY29ubmVj
dEdldHRlcik7CiAgICAgICAgIHJldHVybiB0cnVlOwotICAgIH0gZWxzZSBpZiAocHJvcGVydHlO
YW1lID09IGV4ZWMtPnByb3BlcnR5TmFtZXMoKS5sZW5ndGgpIHsKKyAgICB9CisgICAgaWYgKHBy
b3BlcnR5TmFtZSA9PSBleGVjLT5wcm9wZXJ0eU5hbWVzKCkubGVuZ3RoKSB7CiAgICAgICAgIHNs
b3Quc2V0Q3VzdG9tKHRoaXNPYmplY3QsIHRoaXNPYmplY3QtPmxlbmd0aEdldHRlcik7CiAgICAg
ICAgIHJldHVybiB0cnVlOwogICAgIH0KQEAgLTE0NzgsMTcgKzE0ODAsMTcgQEAgYm9vbCBRdFJ1
bnRpbWVNZXRhTWV0aG9kOjpnZXRPd25Qcm9wZXJ0eQogICAgIHJldHVybiBRdFJ1bnRpbWVNZXRo
b2Q6OmdldE93blByb3BlcnR5U2xvdCh0aGlzT2JqZWN0LCBleGVjLCBwcm9wZXJ0eU5hbWUsIHNs
b3QpOwogfQogCi1ib29sIFF0UnVudGltZU1ldGFNZXRob2Q6OmdldE93blByb3BlcnR5RGVzY3Jp
cHRvcihKU09iamVjdCogb2JqZWN0LCBFeGVjU3RhdGUqIGV4ZWMsIGNvbnN0IElkZW50aWZpZXIm
IHByb3BlcnR5TmFtZSwgUHJvcGVydHlEZXNjcmlwdG9yJiBkZXNjcmlwdG9yKQorYm9vbCBRdFJ1
bnRpbWVNZXRhTWV0aG9kOjpnZXRPd25Qcm9wZXJ0eURlc2NyaXB0b3IoSlNPYmplY3QqIG9iamVj
dCwgRXhlY1N0YXRlKiBleGVjLCBQcm9wZXJ0eU5hbWUgcHJvcGVydHlOYW1lLCBQcm9wZXJ0eURl
c2NyaXB0b3ImIGRlc2NyaXB0b3IpCiB7CiAgICAgUXRSdW50aW1lTWV0YU1ldGhvZCogdGhpc09i
amVjdCA9IGpzQ2FzdDxRdFJ1bnRpbWVNZXRhTWV0aG9kKj4ob2JqZWN0KTsKLSAgICBpZiAocHJv
cGVydHlOYW1lID09ICJjb25uZWN0IikgeworICAgIGlmIChwcm9wZXJ0eU5hbWUgPT0gSWRlbnRp
ZmllcihleGVjLCAiY29ubmVjdCIpKSB7CiAgICAgICAgIFByb3BlcnR5U2xvdCBzbG90OwogICAg
ICAgICBzbG90LnNldEN1c3RvbSh0aGlzT2JqZWN0LCBjb25uZWN0R2V0dGVyKTsKICAgICAgICAg
ZGVzY3JpcHRvci5zZXREZXNjcmlwdG9yKHNsb3QuZ2V0VmFsdWUoZXhlYywgcHJvcGVydHlOYW1l
KSwgRG9udERlbGV0ZSB8IFJlYWRPbmx5IHwgRG9udEVudW0pOwogICAgICAgICByZXR1cm4gdHJ1
ZTsKICAgICB9CiAKLSAgICBpZiAocHJvcGVydHlOYW1lID09ICJkaXNjb25uZWN0IikgeworICAg
IGlmIChwcm9wZXJ0eU5hbWUgPT0gSWRlbnRpZmllcihleGVjLCAiZGlzY29ubmVjdCIpKSB7CiAg
ICAgICAgIFByb3BlcnR5U2xvdCBzbG90OwogICAgICAgICBzbG90LnNldEN1c3RvbSh0aGlzT2Jq
ZWN0LCBkaXNjb25uZWN0R2V0dGVyKTsKICAgICAgICAgZGVzY3JpcHRvci5zZXREZXNjcmlwdG9y
KHNsb3QuZ2V0VmFsdWUoZXhlYywgcHJvcGVydHlOYW1lKSwgRG9udERlbGV0ZSB8IFJlYWRPbmx5
IHwgRG9udEVudW0pOwpAQCAtMTUxNiwxMyArMTUxOCwxMyBAQCB2b2lkIFF0UnVudGltZU1ldGFN
ZXRob2Q6OmdldE93blByb3BlcnR5CiAgICAgUXRSdW50aW1lTWV0aG9kOjpnZXRPd25Qcm9wZXJ0
eU5hbWVzKG9iamVjdCwgZXhlYywgcHJvcGVydHlOYW1lcywgbW9kZSk7CiB9CiAKLUpTVmFsdWUg
UXRSdW50aW1lTWV0YU1ldGhvZDo6bGVuZ3RoR2V0dGVyKEV4ZWNTdGF0ZSosIEpTVmFsdWUsIGNv
bnN0IElkZW50aWZpZXImKQorSlNWYWx1ZSBRdFJ1bnRpbWVNZXRhTWV0aG9kOjpsZW5ndGhHZXR0
ZXIoRXhlY1N0YXRlKiwgSlNWYWx1ZSwgUHJvcGVydHlOYW1lKQogewogICAgIC8vIFF0U2NyaXB0
IGFsd2F5cyByZXR1cm5zIDAKICAgICByZXR1cm4ganNOdW1iZXIoMCk7CiB9CiAKLUpTVmFsdWUg
UXRSdW50aW1lTWV0YU1ldGhvZDo6Y29ubmVjdEdldHRlcihFeGVjU3RhdGUqIGV4ZWMsIEpTVmFs
dWUgc2xvdEJhc2UsIGNvbnN0IElkZW50aWZpZXImIGlkZW50KQorSlNWYWx1ZSBRdFJ1bnRpbWVN
ZXRhTWV0aG9kOjpjb25uZWN0R2V0dGVyKEV4ZWNTdGF0ZSogZXhlYywgSlNWYWx1ZSBzbG90QmFz
ZSwgUHJvcGVydHlOYW1lIGlkZW50KQogewogICAgIFF0UnVudGltZU1ldGFNZXRob2QqIHRoaXNP
YmogPSBzdGF0aWNfY2FzdDxRdFJ1bnRpbWVNZXRhTWV0aG9kKj4oYXNPYmplY3Qoc2xvdEJhc2Up
KTsKICAgICBRV19EUyhRdFJ1bnRpbWVNZXRhTWV0aG9kLCB0aGlzT2JqKTsKQEAgLTE1MzIsNyAr
MTUzNCw3IEBAIEpTVmFsdWUgUXRSdW50aW1lTWV0YU1ldGhvZDo6Y29ubmVjdEdldHQKICAgICBy
ZXR1cm4gZC0+bV9jb25uZWN0LmdldCgpOwogfQogCi1KU1ZhbHVlIFF0UnVudGltZU1ldGFNZXRo
b2Q6OmRpc2Nvbm5lY3RHZXR0ZXIoRXhlY1N0YXRlKiBleGVjLCBKU1ZhbHVlIHNsb3RCYXNlLCBj
b25zdCBJZGVudGlmaWVyJiBpZGVudCkKK0pTVmFsdWUgUXRSdW50aW1lTWV0YU1ldGhvZDo6ZGlz
Y29ubmVjdEdldHRlcihFeGVjU3RhdGUqIGV4ZWMsIEpTVmFsdWUgc2xvdEJhc2UsIFByb3BlcnR5
TmFtZSBpZGVudCkKIHsKICAgICBRdFJ1bnRpbWVNZXRhTWV0aG9kKiB0aGlzT2JqID0gc3RhdGlj
X2Nhc3Q8UXRSdW50aW1lTWV0YU1ldGhvZCo+KGFzT2JqZWN0KHNsb3RCYXNlKSk7CiAgICAgUVdf
RFMoUXRSdW50aW1lTWV0YU1ldGhvZCwgdGhpc09iaik7CkBAIC0xNTQ4LDEyICsxNTUwLDEyIEBA
IFFNdWx0aU1hcDxRT2JqZWN0KiwgUXRDb25uZWN0aW9uT2JqZWN0Kj4KIAogY29uc3QgQ2xhc3NJ
bmZvIFF0UnVudGltZUNvbm5lY3Rpb25NZXRob2Q6OnNfaW5mbyA9IHsgIlF0UnVudGltZU1ldGhv
ZCIsICZCYXNlOjpzX2luZm8sIDAsIDAsIENSRUFURV9NRVRIT0RfVEFCTEUoUXRSdW50aW1lQ29u
bmVjdGlvbk1ldGhvZCkgfTsKIAotUXRSdW50aW1lQ29ubmVjdGlvbk1ldGhvZDo6UXRSdW50aW1l
Q29ubmVjdGlvbk1ldGhvZChFeGVjU3RhdGUqIGV4ZWMsIFN0cnVjdHVyZSogc3RydWN0dXJlLCBj
b25zdCBJZGVudGlmaWVyJiBpZGVudGlmaWVyKQorUXRSdW50aW1lQ29ubmVjdGlvbk1ldGhvZDo6
UXRSdW50aW1lQ29ubmVjdGlvbk1ldGhvZChFeGVjU3RhdGUqIGV4ZWMsIFN0cnVjdHVyZSogc3Ry
dWN0dXJlLCBjb25zdCBVU3RyaW5nJiBpZGVudGlmaWVyKQogICAgIDogUXRSdW50aW1lTWV0aG9k
IChuZXcgUXRSdW50aW1lQ29ubmVjdGlvbk1ldGhvZERhdGEoKSwgZXhlYywgc3RydWN0dXJlLCBp
ZGVudGlmaWVyKQogewogfQogCi12b2lkIFF0UnVudGltZUNvbm5lY3Rpb25NZXRob2Q6OmZpbmlz
aENyZWF0aW9uKEV4ZWNTdGF0ZSogZXhlYywgY29uc3QgSWRlbnRpZmllciYgaWRlbnRpZmllciwg
Ym9vbCBpc0Nvbm5lY3QsIFBhc3NSZWZQdHI8UXRJbnN0YW5jZT4gaW5zdGFuY2UsIGludCBpbmRl
eCwgY29uc3QgUUJ5dGVBcnJheSYgc2lnbmF0dXJlKQordm9pZCBRdFJ1bnRpbWVDb25uZWN0aW9u
TWV0aG9kOjpmaW5pc2hDcmVhdGlvbihFeGVjU3RhdGUqIGV4ZWMsIGNvbnN0IFVTdHJpbmcmIGlk
ZW50aWZpZXIsIGJvb2wgaXNDb25uZWN0LCBQYXNzUmVmUHRyPFF0SW5zdGFuY2U+IGluc3RhbmNl
LCBpbnQgaW5kZXgsIGNvbnN0IFFCeXRlQXJyYXkmIHNpZ25hdHVyZSkKIHsKICAgICBCYXNlOjpm
aW5pc2hDcmVhdGlvbihleGVjLCBpZGVudGlmaWVyLCBpbnN0YW5jZSk7CiAgICAgUVdfRChRdFJ1
bnRpbWVDb25uZWN0aW9uTWV0aG9kKTsKQEAgLTE3MDQsNyArMTcwNiw3IEBAIENhbGxUeXBlIFF0
UnVudGltZUNvbm5lY3Rpb25NZXRob2Q6OmdldEMKICAgICByZXR1cm4gQ2FsbFR5cGVIb3N0Owog
fQogCi1ib29sIFF0UnVudGltZUNvbm5lY3Rpb25NZXRob2Q6OmdldE93blByb3BlcnR5U2xvdChK
U0NlbGwqIGNlbGwsIEV4ZWNTdGF0ZSogZXhlYywgY29uc3QgSWRlbnRpZmllciYgcHJvcGVydHlO
YW1lLCBQcm9wZXJ0eVNsb3QmIHNsb3QpCitib29sIFF0UnVudGltZUNvbm5lY3Rpb25NZXRob2Q6
OmdldE93blByb3BlcnR5U2xvdChKU0NlbGwqIGNlbGwsIEV4ZWNTdGF0ZSogZXhlYywgUHJvcGVy
dHlOYW1lIHByb3BlcnR5TmFtZSwgUHJvcGVydHlTbG90JiBzbG90KQogewogICAgIFF0UnVudGlt
ZUNvbm5lY3Rpb25NZXRob2QqIHRoaXNPYmplY3QgPSBqc0Nhc3Q8UXRSdW50aW1lQ29ubmVjdGlv
bk1ldGhvZCo+KGNlbGwpOwogICAgIGlmIChwcm9wZXJ0eU5hbWUgPT0gZXhlYy0+cHJvcGVydHlO
YW1lcygpLmxlbmd0aCkgewpAQCAtMTcxNSw3ICsxNzE3LDcgQEAgYm9vbCBRdFJ1bnRpbWVDb25u
ZWN0aW9uTWV0aG9kOjpnZXRPd25QcgogICAgIHJldHVybiBRdFJ1bnRpbWVNZXRob2Q6OmdldE93
blByb3BlcnR5U2xvdCh0aGlzT2JqZWN0LCBleGVjLCBwcm9wZXJ0eU5hbWUsIHNsb3QpOwogfQog
Ci1ib29sIFF0UnVudGltZUNvbm5lY3Rpb25NZXRob2Q6OmdldE93blByb3BlcnR5RGVzY3JpcHRv
cihKU09iamVjdCogb2JqZWN0LCBFeGVjU3RhdGUqIGV4ZWMsIGNvbnN0IElkZW50aWZpZXImIHBy
b3BlcnR5TmFtZSwgUHJvcGVydHlEZXNjcmlwdG9yJiBkZXNjcmlwdG9yKQorYm9vbCBRdFJ1bnRp
bWVDb25uZWN0aW9uTWV0aG9kOjpnZXRPd25Qcm9wZXJ0eURlc2NyaXB0b3IoSlNPYmplY3QqIG9i
amVjdCwgRXhlY1N0YXRlKiBleGVjLCBQcm9wZXJ0eU5hbWUgcHJvcGVydHlOYW1lLCBQcm9wZXJ0
eURlc2NyaXB0b3ImIGRlc2NyaXB0b3IpCiB7CiAgICAgUXRSdW50aW1lQ29ubmVjdGlvbk1ldGhv
ZCogdGhpc09iamVjdCA9IGpzQ2FzdDxRdFJ1bnRpbWVDb25uZWN0aW9uTWV0aG9kKj4ob2JqZWN0
KTsKICAgICBpZiAocHJvcGVydHlOYW1lID09IGV4ZWMtPnByb3BlcnR5TmFtZXMoKS5sZW5ndGgp
IHsKQEAgLTE3MzYsNyArMTczOCw3IEBAIHZvaWQgUXRSdW50aW1lQ29ubmVjdGlvbk1ldGhvZDo6
Z2V0T3duUHIKICAgICBRdFJ1bnRpbWVNZXRob2Q6OmdldE93blByb3BlcnR5TmFtZXMob2JqZWN0
LCBleGVjLCBwcm9wZXJ0eU5hbWVzLCBtb2RlKTsKIH0KIAotSlNWYWx1ZSBRdFJ1bnRpbWVDb25u
ZWN0aW9uTWV0aG9kOjpsZW5ndGhHZXR0ZXIoRXhlY1N0YXRlKiwgSlNWYWx1ZSwgY29uc3QgSWRl
bnRpZmllciYpCitKU1ZhbHVlIFF0UnVudGltZUNvbm5lY3Rpb25NZXRob2Q6Omxlbmd0aEdldHRl
cihFeGVjU3RhdGUqLCBKU1ZhbHVlLCBQcm9wZXJ0eU5hbWUpCiB7CiAgICAgLy8gd2UgaGF2ZSBv
bmUgZm9ybWFsIGFyZ3VtZW50LCBhbmQgb25lIG9wdGlvbmFsCiAgICAgcmV0dXJuIGpzTnVtYmVy
KDEpOwpJbmRleDogU291cmNlL1dlYktpdDIvQ2hhbmdlTG9nCj09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJj
ZS9XZWJLaXQyL0NoYW5nZUxvZwkocmV2aXNpb24gMTE2NzkyKQorKysgU291cmNlL1dlYktpdDIv
Q2hhbmdlTG9nCSh3b3JraW5nIGNvcHkpCkBAIC0xLDMgKzEsMzggQEAKKzIwMTItMDUtMTEgIEdh
dmluIEJhcnJhY2xvdWdoICA8YmFycmFjbG91Z2hAYXBwbGUuY29tPgorCisgICAgICAgIEludHJv
ZHVjZSBQcm9wZXJ0eU5hbWUgY2xhc3MKKyAgICAgICAgaHR0cHM6Ly9idWdzLndlYmtpdC5vcmcv
c2hvd19idWcuY2dpP2lkPTg2MjQxCisKKyAgICAgICAgUmV2aWV3ZWQgYnkgTk9CT0RZIChPT1BT
ISkuCisKKyAgICAgICAgUmVwbGFjZSAnY29uc3QgSWRlbnRpZmllciYnIGFyZ3VtZW50cyB0byBm
dW5jdGlvbnMgYWNjZXNzaW5nIG9iamVjdCBwcm9wZXJ0aWVzIHdpdGggYSBuZXcgJ1Byb3BlcnR5
TmFtZScgdHlwZS4KKyAgICAgICAgVGhpcyBjaGFuZ2UgcGF2ZXMgdGhlIHdheSB0byBhbGxvdyBm
b3IgcHJvcGVydGllcyBrZXllZCBieSB2YWx1ZXMgdGhhdCBhcmUgbm90IElkZW50aWZpZXJzLgor
CisgICAgICAgIFRoaXMgY2hhbmdlIGlzIGxhcmdlbHkgYSBtZWNoYW5pY2FsIGZpbmQgJiByZXBs
YWNlLgorICAgICAgICBJdCBhbHNvIGNoYW5nZXMgSlNGdW5jdGlvbidzIGNvbnN0cnVjdG9yIHRv
IHRha2UgYSBVU3RyaW5nJiBpbnN0ZWFkIG9mIGFuIElkZW50aWZpZXImCisgICAgICAgIChzaW5j
ZSBpbiBzb21lIGNhc2VzIHdlIGNhbiBubyBsb25nZXIgZ3VhcmFudGVlIHRoYXQgd2UnbGxsIGhh
dmUgYW4gSWRlbnRpZmllciksIGFuZAorICAgICAgICB1bmlmaWVzIElkZW50aWZpZXIncyBtZXRo
b2RzIHRvIG9idGFpbiBhcnJheSBpbmRpY2VzIG9udG8gUHJvcGVydHlOYW1lLgorCisgICAgICAg
IFRoZSBuZXcgUHJvcGVydHlOYW1lIGNsYXNzIHJldGFpbnMgdGhlIGFiaWxpdHkgdG8gc3VwcG9y
dCAuaW1wbCgpIGFuZCAudXN0cmluZygpLCBidXQKKyAgICAgICAgaW4gYSBmdXR1cmUgcGF0Y2gg
d2UgbWF5IG5lZWQgdG8gcmV3b3JrIHRoaXMsIHNpbmNlIG5vdCBhbGwgUHJvcGVydHlOYW1lcyBz
aG91bGQgYmUKKyAgICAgICAgZXF1YWwgYmFzZWQgb24gdGhlaXIgc3RyaW5nIHJlcHJlc2VudGF0
aW9uLgorCisgICAgICAgICogV2ViUHJvY2Vzcy9QbHVnaW5zL05ldHNjYXBlL0pTTlBNZXRob2Qu
Y3BwOgorICAgICAgICAoV2ViS2l0OjpKU05QTWV0aG9kOjpmaW5pc2hDcmVhdGlvbik6CisgICAg
ICAgICogV2ViUHJvY2Vzcy9QbHVnaW5zL05ldHNjYXBlL0pTTlBNZXRob2QuaDoKKyAgICAgICAg
KFdlYktpdDo6SlNOUE1ldGhvZDo6Y3JlYXRlKToKKyAgICAgICAgKEpTTlBNZXRob2QpOgorICAg
ICAgICAqIFdlYlByb2Nlc3MvUGx1Z2lucy9OZXRzY2FwZS9KU05QT2JqZWN0LmNwcDoKKyAgICAg
ICAgKFdlYktpdDo6bnBJZGVudGlmaWVyRnJvbUlkZW50aWZpZXIpOgorICAgICAgICAoV2ViS2l0
OjpKU05QT2JqZWN0OjpnZXRPd25Qcm9wZXJ0eVNsb3QpOgorICAgICAgICAoV2ViS2l0OjpKU05Q
T2JqZWN0OjpnZXRPd25Qcm9wZXJ0eURlc2NyaXB0b3IpOgorICAgICAgICAoV2ViS2l0OjpKU05Q
T2JqZWN0OjpwdXQpOgorICAgICAgICAoV2ViS2l0OjpKU05QT2JqZWN0OjpkZWxldGVQcm9wZXJ0
eSk6CisgICAgICAgIChXZWJLaXQ6OkpTTlBPYmplY3Q6OnByb3BlcnR5R2V0dGVyKToKKyAgICAg
ICAgKFdlYktpdDo6SlNOUE9iamVjdDo6bWV0aG9kR2V0dGVyKToKKyAgICAgICAgKiBXZWJQcm9j
ZXNzL1BsdWdpbnMvTmV0c2NhcGUvSlNOUE9iamVjdC5oOgorICAgICAgICAoSlNOUE9iamVjdCk6
CisKIDIwMTItMDUtMTEgIEd1c3Rhdm8gTm9yb25oYSBTaWx2YSAgPGduc0Bnbm9tZS5vcmc+CiAK
ICAgICAgICAgUkVHUkVTU0lPTihyMTE2MjA1KTogW0dUS106IGJ1aWxkIG5vIGxvbmdlciBzdXBw
b3J0cyB0aGluIGFyY2hpdmVzCkluZGV4OiBTb3VyY2UvV2ViS2l0Mi9XZWJQcm9jZXNzL1BsdWdp
bnMvTmV0c2NhcGUvSlNOUE1ldGhvZC5jcHAKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL1dlYktpdDIv
V2ViUHJvY2Vzcy9QbHVnaW5zL05ldHNjYXBlL0pTTlBNZXRob2QuY3BwCShyZXZpc2lvbiAxMTY2
NjcpCisrKyBTb3VyY2UvV2ViS2l0Mi9XZWJQcm9jZXNzL1BsdWdpbnMvTmV0c2NhcGUvSlNOUE1l
dGhvZC5jcHAJKHdvcmtpbmcgY29weSkKQEAgLTQ5LDcgKzQ5LDcgQEAgSlNOUE1ldGhvZDo6SlNO
UE1ldGhvZChKU0dsb2JhbE9iamVjdCogZwogewogfQogCi12b2lkIEpTTlBNZXRob2Q6OmZpbmlz
aENyZWF0aW9uKEpTR2xvYmFsRGF0YSYgZ2xvYmFsRGF0YSwgY29uc3QgSWRlbnRpZmllciYgbmFt
ZSkKK3ZvaWQgSlNOUE1ldGhvZDo6ZmluaXNoQ3JlYXRpb24oSlNHbG9iYWxEYXRhJiBnbG9iYWxE
YXRhLCBjb25zdCBVU3RyaW5nJiBuYW1lKQogewogICAgIEJhc2U6OmZpbmlzaENyZWF0aW9uKGds
b2JhbERhdGEsIG5hbWUpOwogICAgIEFTU0VSVChpbmhlcml0cygmc19pbmZvKSk7CkluZGV4OiBT
b3VyY2UvV2ViS2l0Mi9XZWJQcm9jZXNzL1BsdWdpbnMvTmV0c2NhcGUvSlNOUE1ldGhvZC5oCj09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT0KLS0tIFNvdXJjZS9XZWJLaXQyL1dlYlByb2Nlc3MvUGx1Z2lucy9OZXRzY2FwZS9K
U05QTWV0aG9kLmgJKHJldmlzaW9uIDExNjY2NykKKysrIFNvdXJjZS9XZWJLaXQyL1dlYlByb2Nl
c3MvUGx1Z2lucy9OZXRzY2FwZS9KU05QTWV0aG9kLmgJKHdvcmtpbmcgY29weSkKQEAgLTM5LDcg
KzM5LDcgQEAgY2xhc3MgSlNOUE1ldGhvZCA6IHB1YmxpYyBKU0M6OkludGVybmFsRgogcHVibGlj
OgogICAgIHR5cGVkZWYgSlNDOjpJbnRlcm5hbEZ1bmN0aW9uIEJhc2U7CiAKLSAgICBzdGF0aWMg
SlNOUE1ldGhvZCogY3JlYXRlKEpTQzo6RXhlY1N0YXRlKiBleGVjLCBKU0M6OkpTR2xvYmFsT2Jq
ZWN0KiBnbG9iYWxPYmplY3QsIGNvbnN0IEpTQzo6SWRlbnRpZmllciYgbmFtZSwgTlBJZGVudGlm
aWVyIG5wSWRlbnQpCisgICAgc3RhdGljIEpTTlBNZXRob2QqIGNyZWF0ZShKU0M6OkV4ZWNTdGF0
ZSogZXhlYywgSlNDOjpKU0dsb2JhbE9iamVjdCogZ2xvYmFsT2JqZWN0LCBjb25zdCBKU0M6OlVT
dHJpbmcmIG5hbWUsIE5QSWRlbnRpZmllciBucElkZW50KQogICAgIHsKICAgICAgICAgSlNDOjpT
dHJ1Y3R1cmUqIHN0cnVjdHVyZSA9IGNyZWF0ZVN0cnVjdHVyZShleGVjLT5nbG9iYWxEYXRhKCks
IGdsb2JhbE9iamVjdCwgZ2xvYmFsT2JqZWN0LT5mdW5jdGlvblByb3RvdHlwZSgpKTsKICAgICAg
ICAgSlNOUE1ldGhvZCogbWV0aG9kID0gbmV3IChKU0M6OmFsbG9jYXRlQ2VsbDxKU05QTWV0aG9k
PigqZXhlYy0+aGVhcCgpKSkgSlNOUE1ldGhvZChnbG9iYWxPYmplY3QsIHN0cnVjdHVyZSwgbnBJ
ZGVudCk7CkBAIC01Miw3ICs1Miw3IEBAIHB1YmxpYzoKICAgICBOUElkZW50aWZpZXIgbnBJZGVu
dGlmaWVyKCkgY29uc3QgeyByZXR1cm4gbV9ucElkZW50aWZpZXI7IH0KIAogcHJvdGVjdGVkOgot
ICAgIHZvaWQgZmluaXNoQ3JlYXRpb24oSlNDOjpKU0dsb2JhbERhdGEmLCBjb25zdCBKU0M6Oklk
ZW50aWZpZXImIG5hbWUpOworICAgIHZvaWQgZmluaXNoQ3JlYXRpb24oSlNDOjpKU0dsb2JhbERh
dGEmLCBjb25zdCBKU0M6OlVTdHJpbmcmIG5hbWUpOwogCiBwcml2YXRlOiAgICAKICAgICBKU05Q
TWV0aG9kKEpTQzo6SlNHbG9iYWxPYmplY3QqLCBKU0M6OlN0cnVjdHVyZSosIE5QSWRlbnRpZmll
cik7CkluZGV4OiBTb3VyY2UvV2ViS2l0Mi9XZWJQcm9jZXNzL1BsdWdpbnMvTmV0c2NhcGUvSlNO
UE9iamVjdC5jcHAKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL1dlYktpdDIvV2ViUHJvY2Vzcy9QbHVn
aW5zL05ldHNjYXBlL0pTTlBPYmplY3QuY3BwCShyZXZpc2lvbiAxMTY2NjcpCisrKyBTb3VyY2Uv
V2ViS2l0Mi9XZWJQcm9jZXNzL1BsdWdpbnMvTmV0c2NhcGUvSlNOUE9iamVjdC5jcHAJKHdvcmtp
bmcgY29weSkKQEAgLTQzLDcgKzQzLDcgQEAgdXNpbmcgbmFtZXNwYWNlIFdlYkNvcmU7CiAKIG5h
bWVzcGFjZSBXZWJLaXQgewogCi1zdGF0aWMgTlBJZGVudGlmaWVyIG5wSWRlbnRpZmllckZyb21J
ZGVudGlmaWVyKGNvbnN0IElkZW50aWZpZXImIGlkZW50aWZpZXIpCitzdGF0aWMgTlBJZGVudGlm
aWVyIG5wSWRlbnRpZmllckZyb21JZGVudGlmaWVyKFByb3BlcnR5TmFtZSBpZGVudGlmaWVyKQog
ewogICAgIHJldHVybiBzdGF0aWNfY2FzdDxOUElkZW50aWZpZXI+KElkZW50aWZpZXJSZXA6Omdl
dChpZGVudGlmaWVyLnVzdHJpbmcoKS51dGY4KCkuZGF0YSgpKSk7CiB9CkBAIC0yNTIsNyArMjUy
LDcgQEAgQ29uc3RydWN0VHlwZSBKU05QT2JqZWN0OjpnZXRDb25zdHJ1Y3REYQogICAgIHJldHVy
biBDb25zdHJ1Y3RUeXBlSG9zdDsKIH0KIAotYm9vbCBKU05QT2JqZWN0OjpnZXRPd25Qcm9wZXJ0
eVNsb3QoSlNDZWxsKiBjZWxsLCBFeGVjU3RhdGUqIGV4ZWMsIGNvbnN0IElkZW50aWZpZXImIHBy
b3BlcnR5TmFtZSwgUHJvcGVydHlTbG90JiBzbG90KQorYm9vbCBKU05QT2JqZWN0OjpnZXRPd25Q
cm9wZXJ0eVNsb3QoSlNDZWxsKiBjZWxsLCBFeGVjU3RhdGUqIGV4ZWMsIFByb3BlcnR5TmFtZSBw
cm9wZXJ0eU5hbWUsIFByb3BlcnR5U2xvdCYgc2xvdCkKIHsKICAgICBKU05QT2JqZWN0KiB0aGlz
T2JqZWN0ID0gSlNDOjpqc0Nhc3Q8SlNOUE9iamVjdCo+KGNlbGwpOwogICAgIEFTU0VSVF9HQ19P
QkpFQ1RfSU5IRVJJVFModGhpc09iamVjdCwgJnNfaW5mbyk7CkBAIC0yNzgsNyArMjc4LDcgQEAg
Ym9vbCBKU05QT2JqZWN0OjpnZXRPd25Qcm9wZXJ0eVNsb3QoSlNDZQogICAgIHJldHVybiBmYWxz
ZTsKIH0KIAotYm9vbCBKU05QT2JqZWN0OjpnZXRPd25Qcm9wZXJ0eURlc2NyaXB0b3IoSlNPYmpl
Y3QqIG9iamVjdCwgRXhlY1N0YXRlKiBleGVjLCBjb25zdCBJZGVudGlmaWVyJiBwcm9wZXJ0eU5h
bWUsIFByb3BlcnR5RGVzY3JpcHRvciYgZGVzY3JpcHRvcikKK2Jvb2wgSlNOUE9iamVjdDo6Z2V0
T3duUHJvcGVydHlEZXNjcmlwdG9yKEpTT2JqZWN0KiBvYmplY3QsIEV4ZWNTdGF0ZSogZXhlYywg
UHJvcGVydHlOYW1lIHByb3BlcnR5TmFtZSwgUHJvcGVydHlEZXNjcmlwdG9yJiBkZXNjcmlwdG9y
KQogewogICAgIEpTTlBPYmplY3QqIHRoaXNPYmplY3QgPSBqc0Nhc3Q8SlNOUE9iamVjdCo+KG9i
amVjdCk7CiAgICAgQVNTRVJUX0dDX09CSkVDVF9JTkhFUklUUyh0aGlzT2JqZWN0LCAmc19pbmZv
KTsKQEAgLTMwOCw3ICszMDgsNyBAQCBib29sIEpTTlBPYmplY3Q6OmdldE93blByb3BlcnR5RGVz
Y3JpcHRvCiAgICAgcmV0dXJuIGZhbHNlOwogfQogCi12b2lkIEpTTlBPYmplY3Q6OnB1dChKU0Nl
bGwqIGNlbGwsIEV4ZWNTdGF0ZSogZXhlYywgY29uc3QgSWRlbnRpZmllciYgcHJvcGVydHlOYW1l
LCBKU1ZhbHVlIHZhbHVlLCBQdXRQcm9wZXJ0eVNsb3QmKQordm9pZCBKU05QT2JqZWN0OjpwdXQo
SlNDZWxsKiBjZWxsLCBFeGVjU3RhdGUqIGV4ZWMsIFByb3BlcnR5TmFtZSBwcm9wZXJ0eU5hbWUs
IEpTVmFsdWUgdmFsdWUsIFB1dFByb3BlcnR5U2xvdCYpCiB7CiAgICAgSlNOUE9iamVjdCogdGhp
c09iamVjdCA9IEpTQzo6anNDYXN0PEpTTlBPYmplY3QqPihjZWxsKTsKICAgICBBU1NFUlRfR0Nf
T0JKRUNUX0lOSEVSSVRTKHRoaXNPYmplY3QsICZzX2luZm8pOwpAQCAtMzQ3LDcgKzM0Nyw3IEBA
IHZvaWQgSlNOUE9iamVjdDo6cHV0KEpTQ2VsbCogY2VsbCwgRXhlY1MKICAgICByZWxlYXNlTlBW
YXJpYW50VmFsdWUoJnZhcmlhbnQpOwogfQogCi1ib29sIEpTTlBPYmplY3Q6OmRlbGV0ZVByb3Bl
cnR5KEpTQ2VsbCogY2VsbCwgRXhlY1N0YXRlKiBleGVjLCBjb25zdCBJZGVudGlmaWVyJiBwcm9w
ZXJ0eU5hbWUpCitib29sIEpTTlBPYmplY3Q6OmRlbGV0ZVByb3BlcnR5KEpTQ2VsbCogY2VsbCwg
RXhlY1N0YXRlKiBleGVjLCBQcm9wZXJ0eU5hbWUgcHJvcGVydHlOYW1lKQogewogICAgIHJldHVy
biBqc0Nhc3Q8SlNOUE9iamVjdCo+KGNlbGwpLT5kZWxldGVQcm9wZXJ0eShleGVjLCBucElkZW50
aWZpZXJGcm9tSWRlbnRpZmllcihwcm9wZXJ0eU5hbWUpKTsKIH0KQEAgLTQzNiw3ICs0MzYsNyBA
QCB2b2lkIEpTTlBPYmplY3Q6OmdldE93blByb3BlcnR5TmFtZXMoSlNPCiAgICAgbnBuTWVtRnJl
ZShpZGVudGlmaWVycyk7CiB9CiAKLUpTVmFsdWUgSlNOUE9iamVjdDo6cHJvcGVydHlHZXR0ZXIo
RXhlY1N0YXRlKiBleGVjLCBKU1ZhbHVlIHNsb3RCYXNlLCBjb25zdCBJZGVudGlmaWVyJiBwcm9w
ZXJ0eU5hbWUpCitKU1ZhbHVlIEpTTlBPYmplY3Q6OnByb3BlcnR5R2V0dGVyKEV4ZWNTdGF0ZSog
ZXhlYywgSlNWYWx1ZSBzbG90QmFzZSwgUHJvcGVydHlOYW1lIHByb3BlcnR5TmFtZSkKIHsKICAg
ICBKU05QT2JqZWN0KiB0aGlzT2JqID0gc3RhdGljX2Nhc3Q8SlNOUE9iamVjdCo+KGFzT2JqZWN0
KHNsb3RCYXNlKSk7CiAgICAgQVNTRVJUX0dDX09CSkVDVF9JTkhFUklUUyh0aGlzT2JqLCAmc19p
bmZvKTsKQEAgLTQ3Miw3ICs0NzIsNyBAQCBKU1ZhbHVlIEpTTlBPYmplY3Q6OnByb3BlcnR5R2V0
dGVyKEV4ZWNTCiAgICAgcmV0dXJuIHByb3BlcnR5VmFsdWU7CiB9CiAKLUpTVmFsdWUgSlNOUE9i
amVjdDo6bWV0aG9kR2V0dGVyKEV4ZWNTdGF0ZSogZXhlYywgSlNWYWx1ZSBzbG90QmFzZSwgY29u
c3QgSWRlbnRpZmllciYgbWV0aG9kTmFtZSkKK0pTVmFsdWUgSlNOUE9iamVjdDo6bWV0aG9kR2V0
dGVyKEV4ZWNTdGF0ZSogZXhlYywgSlNWYWx1ZSBzbG90QmFzZSwgUHJvcGVydHlOYW1lIG1ldGhv
ZE5hbWUpCiB7CiAgICAgSlNOUE9iamVjdCogdGhpc09iaiA9IHN0YXRpY19jYXN0PEpTTlBPYmpl
Y3QqPihhc09iamVjdChzbG90QmFzZSkpOwogICAgIEFTU0VSVF9HQ19PQkpFQ1RfSU5IRVJJVFMo
dGhpc09iaiwgJnNfaW5mbyk7CkBAIC00ODEsNyArNDgxLDcgQEAgSlNWYWx1ZSBKU05QT2JqZWN0
OjptZXRob2RHZXR0ZXIoRXhlY1N0YQogICAgICAgICByZXR1cm4gdGhyb3dJbnZhbGlkQWNjZXNz
RXJyb3IoZXhlYyk7CiAKICAgICBOUElkZW50aWZpZXIgbnBJZGVudGlmaWVyID0gbnBJZGVudGlm
aWVyRnJvbUlkZW50aWZpZXIobWV0aG9kTmFtZSk7Ci0gICAgcmV0dXJuIEpTTlBNZXRob2Q6OmNy
ZWF0ZShleGVjLCB0aGlzT2JqLT5nbG9iYWxPYmplY3QoKSwgbWV0aG9kTmFtZSwgbnBJZGVudGlm
aWVyKTsKKyAgICByZXR1cm4gSlNOUE1ldGhvZDo6Y3JlYXRlKGV4ZWMsIHRoaXNPYmotPmdsb2Jh
bE9iamVjdCgpLCBtZXRob2ROYW1lLnVzdHJpbmcoKSwgbnBJZGVudGlmaWVyKTsKIH0KIAogSlNP
YmplY3QqIEpTTlBPYmplY3Q6OnRocm93SW52YWxpZEFjY2Vzc0Vycm9yKEV4ZWNTdGF0ZSogZXhl
YykKSW5kZXg6IFNvdXJjZS9XZWJLaXQyL1dlYlByb2Nlc3MvUGx1Z2lucy9OZXRzY2FwZS9KU05Q
T2JqZWN0LmgKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL1dlYktpdDIvV2ViUHJvY2Vzcy9QbHVnaW5z
L05ldHNjYXBlL0pTTlBPYmplY3QuaAkocmV2aXNpb24gMTE2NjY3KQorKysgU291cmNlL1dlYktp
dDIvV2ViUHJvY2Vzcy9QbHVnaW5zL05ldHNjYXBlL0pTTlBPYmplY3QuaAkod29ya2luZyBjb3B5
KQpAQCAtODMsMTkgKzgzLDE5IEBAIHByaXZhdGU6CiAgICAgc3RhdGljIEpTQzo6Q2FsbFR5cGUg
Z2V0Q2FsbERhdGEoSlNDOjpKU0NlbGwqLCBKU0M6OkNhbGxEYXRhJik7CiAgICAgc3RhdGljIEpT
Qzo6Q29uc3RydWN0VHlwZSBnZXRDb25zdHJ1Y3REYXRhKEpTQzo6SlNDZWxsKiwgSlNDOjpDb25z
dHJ1Y3REYXRhJik7CiAKLSAgICBzdGF0aWMgYm9vbCBnZXRPd25Qcm9wZXJ0eVNsb3QoSlNDOjpK
U0NlbGwqLCBKU0M6OkV4ZWNTdGF0ZSosIGNvbnN0IEpTQzo6SWRlbnRpZmllciYgcHJvcGVydHlO
YW1lLCBKU0M6OlByb3BlcnR5U2xvdCYpOwotICAgIHN0YXRpYyBib29sIGdldE93blByb3BlcnR5
RGVzY3JpcHRvcihKU0M6OkpTT2JqZWN0KiwgSlNDOjpFeGVjU3RhdGUqLCBjb25zdCBKU0M6Oklk
ZW50aWZpZXImIHByb3BlcnR5TmFtZSwgSlNDOjpQcm9wZXJ0eURlc2NyaXB0b3ImKTsKLSAgICBz
dGF0aWMgdm9pZCBwdXQoSlNDOjpKU0NlbGwqLCBKU0M6OkV4ZWNTdGF0ZSosIGNvbnN0IEpTQzo6
SWRlbnRpZmllciYgcHJvcGVydHlOYW1lLCBKU0M6OkpTVmFsdWUsIEpTQzo6UHV0UHJvcGVydHlT
bG90Jik7CisgICAgc3RhdGljIGJvb2wgZ2V0T3duUHJvcGVydHlTbG90KEpTQzo6SlNDZWxsKiwg
SlNDOjpFeGVjU3RhdGUqLCBKU0M6OlByb3BlcnR5TmFtZSwgSlNDOjpQcm9wZXJ0eVNsb3QmKTsK
KyAgICBzdGF0aWMgYm9vbCBnZXRPd25Qcm9wZXJ0eURlc2NyaXB0b3IoSlNDOjpKU09iamVjdCos
IEpTQzo6RXhlY1N0YXRlKiwgSlNDOjpQcm9wZXJ0eU5hbWUsIEpTQzo6UHJvcGVydHlEZXNjcmlw
dG9yJik7CisgICAgc3RhdGljIHZvaWQgcHV0KEpTQzo6SlNDZWxsKiwgSlNDOjpFeGVjU3RhdGUq
LCBKU0M6OlByb3BlcnR5TmFtZSwgSlNDOjpKU1ZhbHVlLCBKU0M6OlB1dFByb3BlcnR5U2xvdCYp
OwogCi0gICAgc3RhdGljIGJvb2wgZGVsZXRlUHJvcGVydHkoSlNDOjpKU0NlbGwqLCBKU0M6OkV4
ZWNTdGF0ZSosIGNvbnN0IEpTQzo6SWRlbnRpZmllciYgcHJvcGVydHlOYW1lKTsKKyAgICBzdGF0
aWMgYm9vbCBkZWxldGVQcm9wZXJ0eShKU0M6OkpTQ2VsbCosIEpTQzo6RXhlY1N0YXRlKiwgSlND
OjpQcm9wZXJ0eU5hbWUpOwogICAgIHN0YXRpYyBib29sIGRlbGV0ZVByb3BlcnR5QnlJbmRleChK
U0M6OkpTQ2VsbCosIEpTQzo6RXhlY1N0YXRlKiwgdW5zaWduZWQgcHJvcGVydHlOYW1lKTsKIAog
ICAgIGJvb2wgZGVsZXRlUHJvcGVydHkoSlNDOjpFeGVjU3RhdGUqLCBOUElkZW50aWZpZXIgcHJv
cGVydHlOYW1lKTsKIAogICAgIHN0YXRpYyB2b2lkIGdldE93blByb3BlcnR5TmFtZXMoSlNDOjpK
U09iamVjdCosIEpTQzo6RXhlY1N0YXRlKiwgSlNDOjpQcm9wZXJ0eU5hbWVBcnJheSYsIEpTQzo6
RW51bWVyYXRpb25Nb2RlKTsKIAotICAgIHN0YXRpYyBKU0M6OkpTVmFsdWUgcHJvcGVydHlHZXR0
ZXIoSlNDOjpFeGVjU3RhdGUqLCBKU0M6OkpTVmFsdWUsIGNvbnN0IEpTQzo6SWRlbnRpZmllciYp
OwotICAgIHN0YXRpYyBKU0M6OkpTVmFsdWUgbWV0aG9kR2V0dGVyKEpTQzo6RXhlY1N0YXRlKiwg
SlNDOjpKU1ZhbHVlLCBjb25zdCBKU0M6OklkZW50aWZpZXImKTsKKyAgICBzdGF0aWMgSlNDOjpK
U1ZhbHVlIHByb3BlcnR5R2V0dGVyKEpTQzo6RXhlY1N0YXRlKiwgSlNDOjpKU1ZhbHVlLCBKU0M6
OlByb3BlcnR5TmFtZSk7CisgICAgc3RhdGljIEpTQzo6SlNWYWx1ZSBtZXRob2RHZXR0ZXIoSlND
OjpFeGVjU3RhdGUqLCBKU0M6OkpTVmFsdWUsIEpTQzo6UHJvcGVydHlOYW1lKTsKICAgICBzdGF0
aWMgSlNDOjpKU09iamVjdCogdGhyb3dJbnZhbGlkQWNjZXNzRXJyb3IoSlNDOjpFeGVjU3RhdGUq
KTsKIAogICAgIE5QUnVudGltZU9iamVjdE1hcCogbV9vYmplY3RNYXA7CkluZGV4OiBTb3VyY2Uv
V2ViS2l0L21hYy9DaGFuZ2VMb2cKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL1dlYktpdC9tYWMvQ2hh
bmdlTG9nCShyZXZpc2lvbiAxMTY3OTIpCisrKyBTb3VyY2UvV2ViS2l0L21hYy9DaGFuZ2VMb2cJ
KHdvcmtpbmcgY29weSkKQEAgLTEsMyArMSwzNCBAQAorMjAxMi0wNS0xMSAgR2F2aW4gQmFycmFj
bG91Z2ggIDxiYXJyYWNsb3VnaEBhcHBsZS5jb20+CisKKyAgICAgICAgSW50cm9kdWNlIFByb3Bl
cnR5TmFtZSBjbGFzcworICAgICAgICBodHRwczovL2J1Z3Mud2Via2l0Lm9yZy9zaG93X2J1Zy5j
Z2k/aWQ9ODYyNDEKKworICAgICAgICBSZXZpZXdlZCBieSBOT0JPRFkgKE9PUFMhKS4KKworICAg
ICAgICBSZXBsYWNlICdjb25zdCBJZGVudGlmaWVyJicgYXJndW1lbnRzIHRvIGZ1bmN0aW9ucyBh
Y2Nlc3Npbmcgb2JqZWN0IHByb3BlcnRpZXMgd2l0aCBhIG5ldyAnUHJvcGVydHlOYW1lJyB0eXBl
LgorICAgICAgICBUaGlzIGNoYW5nZSBwYXZlcyB0aGUgd2F5IHRvIGFsbG93IGZvciBwcm9wZXJ0
aWVzIGtleWVkIGJ5IHZhbHVlcyB0aGF0IGFyZSBub3QgSWRlbnRpZmllcnMuCisKKyAgICAgICAg
VGhpcyBjaGFuZ2UgaXMgbGFyZ2VseSBhIG1lY2hhbmljYWwgZmluZCAmIHJlcGxhY2UuCisgICAg
ICAgIEl0IGFsc28gY2hhbmdlcyBKU0Z1bmN0aW9uJ3MgY29uc3RydWN0b3IgdG8gdGFrZSBhIFVT
dHJpbmcmIGluc3RlYWQgb2YgYW4gSWRlbnRpZmllciYKKyAgICAgICAgKHNpbmNlIGluIHNvbWUg
Y2FzZXMgd2UgY2FuIG5vIGxvbmdlciBndWFyYW50ZWUgdGhhdCB3ZSdsbGwgaGF2ZSBhbiBJZGVu
dGlmaWVyKSwgYW5kCisgICAgICAgIHVuaWZpZXMgSWRlbnRpZmllcidzIG1ldGhvZHMgdG8gb2J0
YWluIGFycmF5IGluZGljZXMgb250byBQcm9wZXJ0eU5hbWUuCisKKyAgICAgICAgVGhlIG5ldyBQ
cm9wZXJ0eU5hbWUgY2xhc3MgcmV0YWlucyB0aGUgYWJpbGl0eSB0byBzdXBwb3J0IC5pbXBsKCkg
YW5kIC51c3RyaW5nKCksIGJ1dAorICAgICAgICBpbiBhIGZ1dHVyZSBwYXRjaCB3ZSBtYXkgbmVl
ZCB0byByZXdvcmsgdGhpcywgc2luY2Ugbm90IGFsbCBQcm9wZXJ0eU5hbWVzIHNob3VsZCBiZQor
ICAgICAgICBlcXVhbCBiYXNlZCBvbiB0aGVpciBzdHJpbmcgcmVwcmVzZW50YXRpb24uCisKKyAg
ICAgICAgKiBQbHVnaW5zL0hvc3RlZC9Qcm94eUluc3RhbmNlLmg6CisgICAgICAgIChQcm94eUlu
c3RhbmNlKToKKyAgICAgICAgKiBQbHVnaW5zL0hvc3RlZC9Qcm94eUluc3RhbmNlLm1tOgorICAg
ICAgICAoUHJveHlDbGFzcyk6CisgICAgICAgIChXZWJLaXQ6OlByb3h5Q2xhc3M6Om1ldGhvZHNO
YW1lZCk6CisgICAgICAgIChXZWJLaXQ6OlByb3h5Q2xhc3M6OmZpZWxkTmFtZWQpOgorICAgICAg
ICAoV2ViS2l0OjpQcm94eVJ1bnRpbWVNZXRob2Q6OmNyZWF0ZSk6CisgICAgICAgIChXZWJLaXQ6
OlByb3h5UnVudGltZU1ldGhvZDo6ZmluaXNoQ3JlYXRpb24pOgorICAgICAgICAoV2ViS2l0OjpQ
cm94eUluc3RhbmNlOjpnZXRNZXRob2QpOgorICAgICAgICAoV2ViS2l0OjpQcm94eUluc3RhbmNl
OjptZXRob2RzTmFtZWQpOgorICAgICAgICAoV2ViS2l0OjpQcm94eUluc3RhbmNlOjpmaWVsZE5h
bWVkKToKKwogMjAxMi0wNS0xMCAgR3l1eW91bmcgS2ltICA8Z3l1eW91bmcua2ltQHNhbXN1bmcu
Y29tPgogCiAgICAgICAgIE1vdmUgcmVzdW1lQW5pbWF0aW9ucyB0byB1c2UgSW50ZXJuYWxzIGlu
dGVyZmFjZQpJbmRleDogU291cmNlL1dlYktpdC9tYWMvUGx1Z2lucy9Ib3N0ZWQvUHJveHlJbnN0
YW5jZS5oCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9XZWJLaXQvbWFjL1BsdWdpbnMvSG9zdGVkL1By
b3h5SW5zdGFuY2UuaAkocmV2aXNpb24gMTE2NjY3KQorKysgU291cmNlL1dlYktpdC9tYWMvUGx1
Z2lucy9Ib3N0ZWQvUHJveHlJbnN0YW5jZS5oCSh3b3JraW5nIGNvcHkpCkBAIC00Niw4ICs0Niw4
IEBAIHB1YmxpYzoKICAgICB9CiAgICAgflByb3h5SW5zdGFuY2UoKTsKIAotICAgIEpTQzo6Qmlu
ZGluZ3M6Ok1ldGhvZExpc3QgbWV0aG9kc05hbWVkKGNvbnN0IEpTQzo6SWRlbnRpZmllciYpOwot
ICAgIEpTQzo6QmluZGluZ3M6OkZpZWxkKiBmaWVsZE5hbWVkKGNvbnN0IEpTQzo6SWRlbnRpZmll
ciYpOworICAgIEpTQzo6QmluZGluZ3M6Ok1ldGhvZExpc3QgbWV0aG9kc05hbWVkKEpTQzo6UHJv
cGVydHlOYW1lKTsKKyAgICBKU0M6OkJpbmRpbmdzOjpGaWVsZCogZmllbGROYW1lZChKU0M6OlBy
b3BlcnR5TmFtZSk7CiAKICAgICBKU0M6OkpTVmFsdWUgZmllbGRWYWx1ZShKU0M6OkV4ZWNTdGF0
ZSosIGNvbnN0IEpTQzo6QmluZGluZ3M6OkZpZWxkKikgY29uc3Q7CiAgICAgdm9pZCBzZXRGaWVs
ZFZhbHVlKEpTQzo6RXhlY1N0YXRlKiwgY29uc3QgSlNDOjpCaW5kaW5nczo6RmllbGQqLCBKU0M6
OkpTVmFsdWUpIGNvbnN0OwpAQCAtNjYsNyArNjYsNyBAQCBwcml2YXRlOgogCiAgICAgdmlydHVh
bCBKU0M6OkJpbmRpbmdzOjpDbGFzcyogZ2V0Q2xhc3MoKSBjb25zdDsKIAotICAgIHZpcnR1YWwg
SlNDOjpKU1ZhbHVlIGdldE1ldGhvZChKU0M6OkV4ZWNTdGF0ZSogZXhlYywgY29uc3QgSlNDOjpJ
ZGVudGlmaWVyJiBwcm9wZXJ0eU5hbWUpOworICAgIHZpcnR1YWwgSlNDOjpKU1ZhbHVlIGdldE1l
dGhvZChKU0M6OkV4ZWNTdGF0ZSosIEpTQzo6UHJvcGVydHlOYW1lKTsKICAgICB2aXJ0dWFsIEpT
Qzo6SlNWYWx1ZSBpbnZva2VNZXRob2QoSlNDOjpFeGVjU3RhdGUqLCBKU0M6OlJ1bnRpbWVNZXRo
b2QqKTsKIAogICAgIHZpcnR1YWwgYm9vbCBzdXBwb3J0c0ludm9rZURlZmF1bHRNZXRob2QoKSBj
b25zdDsKSW5kZXg6IFNvdXJjZS9XZWJLaXQvbWFjL1BsdWdpbnMvSG9zdGVkL1Byb3h5SW5zdGFu
Y2UubW0KPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PQotLS0gU291cmNlL1dlYktpdC9tYWMvUGx1Z2lucy9Ib3N0ZWQvUHJv
eHlJbnN0YW5jZS5tbQkocmV2aXNpb24gMTE2NjY3KQorKysgU291cmNlL1dlYktpdC9tYWMvUGx1
Z2lucy9Ib3N0ZWQvUHJveHlJbnN0YW5jZS5tbQkod29ya2luZyBjb3B5KQpAQCAtNTAsMTYgKzUw
LDE2IEBAIG5hbWVzcGFjZSBXZWJLaXQgewogCiBjbGFzcyBQcm94eUNsYXNzIDogcHVibGljIEpT
Qzo6QmluZGluZ3M6OkNsYXNzIHsKIHByaXZhdGU6Ci0gICAgdmlydHVhbCBNZXRob2RMaXN0IG1l
dGhvZHNOYW1lZChjb25zdCBJZGVudGlmaWVyJiwgSW5zdGFuY2UqKSBjb25zdDsKLSAgICB2aXJ0
dWFsIEZpZWxkKiBmaWVsZE5hbWVkKGNvbnN0IElkZW50aWZpZXImLCBJbnN0YW5jZSopIGNvbnN0
OworICAgIHZpcnR1YWwgTWV0aG9kTGlzdCBtZXRob2RzTmFtZWQoUHJvcGVydHlOYW1lLCBJbnN0
YW5jZSopIGNvbnN0OworICAgIHZpcnR1YWwgRmllbGQqIGZpZWxkTmFtZWQoUHJvcGVydHlOYW1l
LCBJbnN0YW5jZSopIGNvbnN0OwogfTsKIAotTWV0aG9kTGlzdCBQcm94eUNsYXNzOjptZXRob2Rz
TmFtZWQoY29uc3QgSWRlbnRpZmllciYgaWRlbnRpZmllciwgSW5zdGFuY2UqIGluc3RhbmNlKSBj
b25zdAorTWV0aG9kTGlzdCBQcm94eUNsYXNzOjptZXRob2RzTmFtZWQoUHJvcGVydHlOYW1lIGlk
ZW50aWZpZXIsIEluc3RhbmNlKiBpbnN0YW5jZSkgY29uc3QKIHsKICAgICByZXR1cm4gc3RhdGlj
X2Nhc3Q8UHJveHlJbnN0YW5jZSo+KGluc3RhbmNlKS0+bWV0aG9kc05hbWVkKGlkZW50aWZpZXIp
OwogfQogCi1GaWVsZCogUHJveHlDbGFzczo6ZmllbGROYW1lZChjb25zdCBJZGVudGlmaWVyJiBp
ZGVudGlmaWVyLCBJbnN0YW5jZSogaW5zdGFuY2UpIGNvbnN0CitGaWVsZCogUHJveHlDbGFzczo6
ZmllbGROYW1lZChQcm9wZXJ0eU5hbWUgaWRlbnRpZmllciwgSW5zdGFuY2UqIGluc3RhbmNlKSBj
b25zdAogewogICAgIHJldHVybiBzdGF0aWNfY2FzdDxQcm94eUluc3RhbmNlKj4oaW5zdGFuY2Up
LT5maWVsZE5hbWVkKGlkZW50aWZpZXIpOwogfQpAQCAtMTgxLDcgKzE4MSw3IEBAIGNsYXNzIFBy
b3h5UnVudGltZU1ldGhvZCA6IHB1YmxpYyBSdW50aW0KIHB1YmxpYzoKICAgICB0eXBlZGVmIFJ1
bnRpbWVNZXRob2QgQmFzZTsKIAotICAgIHN0YXRpYyBQcm94eVJ1bnRpbWVNZXRob2QqIGNyZWF0
ZShFeGVjU3RhdGUqIGV4ZWMsIEpTR2xvYmFsT2JqZWN0KiBnbG9iYWxPYmplY3QsIGNvbnN0IElk
ZW50aWZpZXImIG5hbWUsIEJpbmRpbmdzOjpNZXRob2RMaXN0JiBsaXN0KQorICAgIHN0YXRpYyBQ
cm94eVJ1bnRpbWVNZXRob2QqIGNyZWF0ZShFeGVjU3RhdGUqIGV4ZWMsIEpTR2xvYmFsT2JqZWN0
KiBnbG9iYWxPYmplY3QsIGNvbnN0IFVTdHJpbmcmIG5hbWUsIEJpbmRpbmdzOjpNZXRob2RMaXN0
JiBsaXN0KQogICAgIHsKICAgICAgICAgLy8gRklYTUU6IGRlcHJlY2F0ZWRHZXRET01TdHJ1Y3R1
cmUgdXNlcyB0aGUgcHJvdG90eXBlIG9mZiBvZiB0aGUgd3JvbmcgZ2xvYmFsIG9iamVjdAogICAg
ICAgICAvLyBleGVjLWdsb2JhbERhdGEoKSBpcyBhbHNvIGxpa2VseSB3cm9uZy4KQEAgLTIwNCw3
ICsyMDQsNyBAQCBwcml2YXRlOgogICAgIHsKICAgICB9CiAKLSAgICB2b2lkIGZpbmlzaENyZWF0
aW9uKEpTR2xvYmFsRGF0YSYgZ2xvYmFsRGF0YSwgY29uc3QgSWRlbnRpZmllciYgbmFtZSkKKyAg
ICB2b2lkIGZpbmlzaENyZWF0aW9uKEpTR2xvYmFsRGF0YSYgZ2xvYmFsRGF0YSwgY29uc3QgVVN0
cmluZyYgbmFtZSkKICAgICB7CiAgICAgICAgIEJhc2U6OmZpbmlzaENyZWF0aW9uKGdsb2JhbERh
dGEsIG5hbWUpOwogICAgICAgICBBU1NFUlQoaW5oZXJpdHMoJnNfaW5mbykpOwpAQCAtMjEzLDEw
ICsyMTMsMTAgQEAgcHJpdmF0ZToKIAogY29uc3QgQ2xhc3NJbmZvIFByb3h5UnVudGltZU1ldGhv
ZDo6c19pbmZvID0geyAiUHJveHlSdW50aW1lTWV0aG9kIiwgJlJ1bnRpbWVNZXRob2Q6OnNfaW5m
bywgMCwgMCwgQ1JFQVRFX01FVEhPRF9UQUJMRShQcm94eVJ1bnRpbWVNZXRob2QpIH07CiAKLUpT
VmFsdWUgUHJveHlJbnN0YW5jZTo6Z2V0TWV0aG9kKEpTQzo6RXhlY1N0YXRlKiBleGVjLCBjb25z
dCBKU0M6OklkZW50aWZpZXImIHByb3BlcnR5TmFtZSkKK0pTVmFsdWUgUHJveHlJbnN0YW5jZTo6
Z2V0TWV0aG9kKEpTQzo6RXhlY1N0YXRlKiBleGVjLCBQcm9wZXJ0eU5hbWUgcHJvcGVydHlOYW1l
KQogewogICAgIE1ldGhvZExpc3QgbWV0aG9kTGlzdCA9IGdldENsYXNzKCktPm1ldGhvZHNOYW1l
ZChwcm9wZXJ0eU5hbWUsIHRoaXMpOwotICAgIHJldHVybiBQcm94eVJ1bnRpbWVNZXRob2Q6OmNy
ZWF0ZShleGVjLCBleGVjLT5sZXhpY2FsR2xvYmFsT2JqZWN0KCksIHByb3BlcnR5TmFtZSwgbWV0
aG9kTGlzdCk7CisgICAgcmV0dXJuIFByb3h5UnVudGltZU1ldGhvZDo6Y3JlYXRlKGV4ZWMsIGV4
ZWMtPmxleGljYWxHbG9iYWxPYmplY3QoKSwgcHJvcGVydHlOYW1lLmltcGwoKSwgbWV0aG9kTGlz
dCk7CiB9CiAKIEpTVmFsdWUgUHJveHlJbnN0YW5jZTo6aW52b2tlTWV0aG9kKEV4ZWNTdGF0ZSog
ZXhlYywgSlNDOjpSdW50aW1lTWV0aG9kKiBydW50aW1lTWV0aG9kKQpAQCAtMzQ2LDcgKzM0Niw3
IEBAIHZvaWQgUHJveHlJbnN0YW5jZTo6Z2V0UHJvcGVydHlOYW1lcyhFeGUKICAgICB9CiB9CiAK
LU1ldGhvZExpc3QgUHJveHlJbnN0YW5jZTo6bWV0aG9kc05hbWVkKGNvbnN0IElkZW50aWZpZXIm
IGlkZW50aWZpZXIpCitNZXRob2RMaXN0IFByb3h5SW5zdGFuY2U6Om1ldGhvZHNOYW1lZChQcm9w
ZXJ0eU5hbWUgaWRlbnRpZmllcikKIHsKICAgICBpZiAoIW1faW5zdGFuY2VQcm94eSkKICAgICAg
ICAgcmV0dXJuIE1ldGhvZExpc3QoKTsKQEAgLTM2MCw3ICszNjAsNyBAQCBNZXRob2RMaXN0IFBy
b3h5SW5zdGFuY2U6Om1ldGhvZHNOYW1lZChjCiAgICAgICAgIHJldHVybiBtZXRob2RMaXN0Owog
ICAgIH0KICAgICAKLSAgICB1aW50NjRfdCBtZXRob2ROYW1lID0gcmVpbnRlcnByZXRfY2FzdDx1
aW50NjRfdD4oX05QTl9HZXRTdHJpbmdJZGVudGlmaWVyKGlkZW50aWZpZXIuYXNjaWkoKS5kYXRh
KCkpKTsKKyAgICB1aW50NjRfdCBtZXRob2ROYW1lID0gcmVpbnRlcnByZXRfY2FzdDx1aW50NjRf
dD4oX05QTl9HZXRTdHJpbmdJZGVudGlmaWVyKGlkZW50aWZpZXIudXN0cmluZygpLmFzY2lpKCku
ZGF0YSgpKSk7CiAgICAgdWludDMyX3QgcmVxdWVzdElEID0gbV9pbnN0YW5jZVByb3h5LT5uZXh0
UmVxdWVzdElEKCk7CiAgICAgCiAgICAgaWYgKF9XS1BITlBPYmplY3RIYXNNZXRob2QobV9pbnN0
YW5jZVByb3h5LT5ob3N0UHJveHkoKS0+cG9ydCgpLApAQCAtMzg2LDcgKzM4Niw3IEBAIE1ldGhv
ZExpc3QgUHJveHlJbnN0YW5jZTo6bWV0aG9kc05hbWVkKGMKICAgICByZXR1cm4gbWV0aG9kTGlz
dDsKIH0KIAotRmllbGQqIFByb3h5SW5zdGFuY2U6OmZpZWxkTmFtZWQoY29uc3QgSWRlbnRpZmll
ciYgaWRlbnRpZmllcikKK0ZpZWxkKiBQcm94eUluc3RhbmNlOjpmaWVsZE5hbWVkKFByb3BlcnR5
TmFtZSBpZGVudGlmaWVyKQogewogICAgIGlmICghbV9pbnN0YW5jZVByb3h5KQogICAgICAgICBy
ZXR1cm4gMDsKQEAgLTM5Niw3ICszOTYsNyBAQCBGaWVsZCogUHJveHlJbnN0YW5jZTo6ZmllbGRO
YW1lZChjb25zdCBJCiAgICAgaWYgKGV4aXN0aW5nTWFwRW50cnkgIT0gbV9maWVsZHMuZW5kKCkp
CiAgICAgICAgIHJldHVybiBleGlzdGluZ01hcEVudHJ5LT5zZWNvbmQ7CiAgICAgCi0gICAgdWlu
dDY0X3QgcHJvcGVydHlOYW1lID0gcmVpbnRlcnByZXRfY2FzdDx1aW50NjRfdD4oX05QTl9HZXRT
dHJpbmdJZGVudGlmaWVyKGlkZW50aWZpZXIuYXNjaWkoKS5kYXRhKCkpKTsKKyAgICB1aW50NjRf
dCBwcm9wZXJ0eU5hbWUgPSByZWludGVycHJldF9jYXN0PHVpbnQ2NF90PihfTlBOX0dldFN0cmlu
Z0lkZW50aWZpZXIoaWRlbnRpZmllci51c3RyaW5nKCkuYXNjaWkoKS5kYXRhKCkpKTsKICAgICB1
aW50MzJfdCByZXF1ZXN0SUQgPSBtX2luc3RhbmNlUHJveHktPm5leHRSZXF1ZXN0SUQoKTsKICAg
ICAKICAgICBpZiAoX1dLUEhOUE9iamVjdEhhc1Byb3BlcnR5KG1faW5zdGFuY2VQcm94eS0+aG9z
dFByb3h5KCktPnBvcnQoKSwK
</data>

          </attachment>
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>141499</attachid>
            <date>2012-05-11 14:37:25 -0700</date>
            <delta_ts>2012-05-11 15:15:08 -0700</delta_ts>
            <desc>and more fixes</desc>
            <filename>PropertyName.8.patch</filename>
            <type>text/plain</type>
            <size>434109</size>
            <attacher name="Gavin Barraclough">barraclough</attacher>
            
              <data encoding="base64">SW5kZXg6IFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9DaGFuZ2VMb2cKPT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291
cmNlL0phdmFTY3JpcHRDb3JlL0NoYW5nZUxvZwkocmV2aXNpb24gMTE2NzkyKQorKysgU291cmNl
L0phdmFTY3JpcHRDb3JlL0NoYW5nZUxvZwkod29ya2luZyBjb3B5KQpAQCAtMSwzICsxLDM4OCBA
QAorMjAxMi0wNS0xMSAgR2F2aW4gQmFycmFjbG91Z2ggIDxiYXJyYWNsb3VnaEBhcHBsZS5jb20+
CisKKyAgICAgICAgSW50cm9kdWNlIFByb3BlcnR5TmFtZSBjbGFzcworICAgICAgICBodHRwczov
L2J1Z3Mud2Via2l0Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9ODYyNDEKKworICAgICAgICBSZXZpZXdl
ZCBieSBOT0JPRFkgKE9PUFMhKS4KKworICAgICAgICBSZXBsYWNlICdjb25zdCBJZGVudGlmaWVy
JicgYXJndW1lbnRzIHRvIGZ1bmN0aW9ucyBhY2Nlc3Npbmcgb2JqZWN0IHByb3BlcnRpZXMgd2l0
aCBhIG5ldyAnUHJvcGVydHlOYW1lJyB0eXBlLgorICAgICAgICBUaGlzIGNoYW5nZSBwYXZlcyB0
aGUgd2F5IHRvIGFsbG93IGZvciBwcm9wZXJ0aWVzIGtleWVkIGJ5IHZhbHVlcyB0aGF0IGFyZSBu
b3QgSWRlbnRpZmllcnMuCisKKyAgICAgICAgVGhpcyBjaGFuZ2UgaXMgbGFyZ2VseSBhIG1lY2hh
bmljYWwgZmluZCAmIHJlcGxhY2UuCisgICAgICAgIEl0IGFsc28gY2hhbmdlcyBKU0Z1bmN0aW9u
J3MgY29uc3RydWN0b3IgdG8gdGFrZSBhIFVTdHJpbmcmIGluc3RlYWQgb2YgYW4gSWRlbnRpZmll
ciYKKyAgICAgICAgKHNpbmNlIGluIHNvbWUgY2FzZXMgd2UgY2FuIG5vIGxvbmdlciBndWFyYW50
ZWUgdGhhdCB3ZSdsbGwgaGF2ZSBhbiBJZGVudGlmaWVyKSwgYW5kCisgICAgICAgIHVuaWZpZXMg
SWRlbnRpZmllcidzIG1ldGhvZHMgdG8gb2J0YWluIGFycmF5IGluZGljZXMgb250byBQcm9wZXJ0
eU5hbWUuCisKKyAgICAgICAgVGhlIG5ldyBQcm9wZXJ0eU5hbWUgY2xhc3MgcmV0YWlucyB0aGUg
YWJpbGl0eSB0byBzdXBwb3J0IC5pbXBsKCkgYW5kIC51c3RyaW5nKCksIGJ1dAorICAgICAgICBp
biBhIGZ1dHVyZSBwYXRjaCB3ZSBtYXkgbmVlZCB0byByZXdvcmsgdGhpcywgc2luY2Ugbm90IGFs
bCBQcm9wZXJ0eU5hbWVzIHNob3VsZCBiZQorICAgICAgICBlcXVhbCBiYXNlZCBvbiB0aGVpciBz
dHJpbmcgcmVwcmVzZW50YXRpb24uCisKKyAgICAgICAgKiBBUEkvSlNDYWxsYmFja0Z1bmN0aW9u
LmNwcDoKKyAgICAgICAgKEpTQzo6SlNDYWxsYmFja0Z1bmN0aW9uOjpmaW5pc2hDcmVhdGlvbik6
CisgICAgICAgICogQVBJL0pTQ2FsbGJhY2tGdW5jdGlvbi5oOgorICAgICAgICAoSlNDYWxsYmFj
a0Z1bmN0aW9uKToKKyAgICAgICAgKEpTQzo6SlNDYWxsYmFja0Z1bmN0aW9uOjpjcmVhdGUpOgor
ICAgICAgICAqIEFQSS9KU0NhbGxiYWNrT2JqZWN0Lmg6CisgICAgICAgIChKU0NhbGxiYWNrT2Jq
ZWN0KToKKyAgICAgICAgKiBBUEkvSlNDYWxsYmFja09iamVjdEZ1bmN0aW9ucy5oOgorICAgICAg
ICAoSlNDOjo6OmdldE93blByb3BlcnR5U2xvdCk6CisgICAgICAgIChKU0M6Ojo6Z2V0T3duUHJv
cGVydHlEZXNjcmlwdG9yKToKKyAgICAgICAgKEpTQzo6OjpwdXQpOgorICAgICAgICAoSlNDOjo6
OmRlbGV0ZVByb3BlcnR5KToKKyAgICAgICAgKEpTQzo6OjpnZXRTdGF0aWNWYWx1ZSk6CisgICAg
ICAgIChKU0M6Ojo6c3RhdGljRnVuY3Rpb25HZXR0ZXIpOgorICAgICAgICAoSlNDOjo6OmNhbGxi
YWNrR2V0dGVyKToKKyAgICAgICAgKiBBUEkvSlNPYmplY3RSZWYuY3BwOgorICAgICAgICAoSlNP
YmplY3RNYWtlRnVuY3Rpb25XaXRoQ2FsbGJhY2spOgorICAgICAgICAqIEpTQ1R5cGVkQXJyYXlT
dHVicy5oOgorICAgICAgICAoSlNDKToKKyAgICAgICAgKiBKYXZhU2NyaXB0Q29yZS54Y29kZXBy
b2ovcHJvamVjdC5wYnhwcm9qOgorICAgICAgICAqIGRlYnVnZ2VyL0RlYnVnZ2VyQWN0aXZhdGlv
bi5jcHA6CisgICAgICAgIChKU0M6OkRlYnVnZ2VyQWN0aXZhdGlvbjo6Z2V0T3duUHJvcGVydHlT
bG90KToKKyAgICAgICAgKEpTQzo6RGVidWdnZXJBY3RpdmF0aW9uOjpwdXQpOgorICAgICAgICAo
SlNDOjpEZWJ1Z2dlckFjdGl2YXRpb246OnB1dERpcmVjdFZpcnR1YWwpOgorICAgICAgICAoSlND
OjpEZWJ1Z2dlckFjdGl2YXRpb246OmRlbGV0ZVByb3BlcnR5KToKKyAgICAgICAgKEpTQzo6RGVi
dWdnZXJBY3RpdmF0aW9uOjpnZXRPd25Qcm9wZXJ0eURlc2NyaXB0b3IpOgorICAgICAgICAoSlND
OjpEZWJ1Z2dlckFjdGl2YXRpb246OmRlZmluZU93blByb3BlcnR5KToKKyAgICAgICAgKiBkZWJ1
Z2dlci9EZWJ1Z2dlckFjdGl2YXRpb24uaDoKKyAgICAgICAgKERlYnVnZ2VyQWN0aXZhdGlvbik6
CisgICAgICAgICoganNjLmNwcDoKKyAgICAgICAgKEdsb2JhbE9iamVjdDo6YWRkRnVuY3Rpb24p
OgorICAgICAgICAoR2xvYmFsT2JqZWN0OjphZGRDb25zdHJ1Y3RhYmxlRnVuY3Rpb24pOgorICAg
ICAgICAqIHJ1bnRpbWUvQXJndW1lbnRzLmNwcDoKKyAgICAgICAgKEpTQzo6QXJndW1lbnRzOjpn
ZXRPd25Qcm9wZXJ0eVNsb3QpOgorICAgICAgICAoSlNDOjpBcmd1bWVudHM6OmdldE93blByb3Bl
cnR5RGVzY3JpcHRvcik6CisgICAgICAgIChKU0M6OkFyZ3VtZW50czo6cHV0KToKKyAgICAgICAg
KEpTQzo6QXJndW1lbnRzOjpkZWxldGVQcm9wZXJ0eSk6CisgICAgICAgIChKU0M6OkFyZ3VtZW50
czo6ZGVmaW5lT3duUHJvcGVydHkpOgorICAgICAgICAqIHJ1bnRpbWUvQXJndW1lbnRzLmg6Cisg
ICAgICAgIChBcmd1bWVudHMpOgorICAgICAgICAqIHJ1bnRpbWUvQXJyYXlDb25zdHJ1Y3Rvci5j
cHA6CisgICAgICAgIChKU0M6OkFycmF5Q29uc3RydWN0b3I6OmZpbmlzaENyZWF0aW9uKToKKyAg
ICAgICAgKEpTQzo6QXJyYXlDb25zdHJ1Y3Rvcjo6Z2V0T3duUHJvcGVydHlTbG90KToKKyAgICAg
ICAgKEpTQzo6QXJyYXlDb25zdHJ1Y3Rvcjo6Z2V0T3duUHJvcGVydHlEZXNjcmlwdG9yKToKKyAg
ICAgICAgKiBydW50aW1lL0FycmF5Q29uc3RydWN0b3IuaDoKKyAgICAgICAgKEFycmF5Q29uc3Ry
dWN0b3IpOgorICAgICAgICAqIHJ1bnRpbWUvQXJyYXlQcm90b3R5cGUuY3BwOgorICAgICAgICAo
SlNDOjpBcnJheVByb3RvdHlwZTo6Z2V0T3duUHJvcGVydHlTbG90KToKKyAgICAgICAgKEpTQzo6
QXJyYXlQcm90b3R5cGU6OmdldE93blByb3BlcnR5RGVzY3JpcHRvcik6CisgICAgICAgIChKU0M6
OnB1dFByb3BlcnR5KToKKyAgICAgICAgKiBydW50aW1lL0FycmF5UHJvdG90eXBlLmg6CisgICAg
ICAgIChBcnJheVByb3RvdHlwZSk6CisgICAgICAgICogcnVudGltZS9Cb29sZWFuQ29uc3RydWN0
b3IuY3BwOgorICAgICAgICAoSlNDOjpCb29sZWFuQ29uc3RydWN0b3I6OmZpbmlzaENyZWF0aW9u
KToKKyAgICAgICAgKiBydW50aW1lL0Jvb2xlYW5Qcm90b3R5cGUuY3BwOgorICAgICAgICAoSlND
OjpCb29sZWFuUHJvdG90eXBlOjpnZXRPd25Qcm9wZXJ0eVNsb3QpOgorICAgICAgICAoSlNDOjpC
b29sZWFuUHJvdG90eXBlOjpnZXRPd25Qcm9wZXJ0eURlc2NyaXB0b3IpOgorICAgICAgICAqIHJ1
bnRpbWUvQm9vbGVhblByb3RvdHlwZS5oOgorICAgICAgICAoQm9vbGVhblByb3RvdHlwZSk6Cisg
ICAgICAgICogcnVudGltZS9DbGFzc0luZm8uaDoKKyAgICAgICAgKE1ldGhvZFRhYmxlKToKKyAg
ICAgICAgKiBydW50aW1lL0RhdGVDb25zdHJ1Y3Rvci5jcHA6CisgICAgICAgIChKU0M6OkRhdGVD
b25zdHJ1Y3Rvcjo6ZmluaXNoQ3JlYXRpb24pOgorICAgICAgICAoSlNDOjpEYXRlQ29uc3RydWN0
b3I6OmdldE93blByb3BlcnR5U2xvdCk6CisgICAgICAgIChKU0M6OkRhdGVDb25zdHJ1Y3Rvcjo6
Z2V0T3duUHJvcGVydHlEZXNjcmlwdG9yKToKKyAgICAgICAgKiBydW50aW1lL0RhdGVDb25zdHJ1
Y3Rvci5oOgorICAgICAgICAoRGF0ZUNvbnN0cnVjdG9yKToKKyAgICAgICAgKiBydW50aW1lL0Rh
dGVQcm90b3R5cGUuY3BwOgorICAgICAgICAoSlNDOjpEYXRlUHJvdG90eXBlOjpnZXRPd25Qcm9w
ZXJ0eVNsb3QpOgorICAgICAgICAoSlNDOjpEYXRlUHJvdG90eXBlOjpnZXRPd25Qcm9wZXJ0eURl
c2NyaXB0b3IpOgorICAgICAgICAqIHJ1bnRpbWUvRGF0ZVByb3RvdHlwZS5oOgorICAgICAgICAo
RGF0ZVByb3RvdHlwZSk6CisgICAgICAgICogcnVudGltZS9FcnJvci5oOgorICAgICAgICAoSlND
OjpTdHJpY3RNb2RlVHlwZUVycm9yRnVuY3Rpb246OmNyZWF0ZSk6CisgICAgICAgICogcnVudGlt
ZS9FcnJvckNvbnN0cnVjdG9yLmNwcDoKKyAgICAgICAgKEpTQzo6RXJyb3JDb25zdHJ1Y3Rvcjo6
ZmluaXNoQ3JlYXRpb24pOgorICAgICAgICAqIHJ1bnRpbWUvRXJyb3JQcm90b3R5cGUuY3BwOgor
ICAgICAgICAoSlNDOjpFcnJvclByb3RvdHlwZTo6Z2V0T3duUHJvcGVydHlTbG90KToKKyAgICAg
ICAgKEpTQzo6RXJyb3JQcm90b3R5cGU6OmdldE93blByb3BlcnR5RGVzY3JpcHRvcik6CisgICAg
ICAgICogcnVudGltZS9FcnJvclByb3RvdHlwZS5oOgorICAgICAgICAoRXJyb3JQcm90b3R5cGUp
OgorICAgICAgICAqIHJ1bnRpbWUvRnVuY3Rpb25Db25zdHJ1Y3Rvci5jcHA6CisgICAgICAgIChK
U0M6OkZ1bmN0aW9uQ29uc3RydWN0b3I6OmZpbmlzaENyZWF0aW9uKToKKyAgICAgICAgKiBydW50
aW1lL0Z1bmN0aW9uUHJvdG90eXBlLmNwcDoKKyAgICAgICAgKEpTQzo6RnVuY3Rpb25Qcm90b3R5
cGU6OmZpbmlzaENyZWF0aW9uKToKKyAgICAgICAgKEpTQzo6RnVuY3Rpb25Qcm90b3R5cGU6OmFk
ZEZ1bmN0aW9uUHJvcGVydGllcyk6CisgICAgICAgIChKU0M6OmZ1bmN0aW9uUHJvdG9GdW5jQmlu
ZCk6CisgICAgICAgICogcnVudGltZS9GdW5jdGlvblByb3RvdHlwZS5oOgorICAgICAgICAoSlND
OjpGdW5jdGlvblByb3RvdHlwZTo6Y3JlYXRlKToKKyAgICAgICAgKEZ1bmN0aW9uUHJvdG90eXBl
KToKKyAgICAgICAgKiBydW50aW1lL0lkZW50aWZpZXIuY3BwOgorICAgICAgICAoSlNDKToKKyAg
ICAgICAgKiBydW50aW1lL0lkZW50aWZpZXIuaDoKKyAgICAgICAgKElkZW50aWZpZXIpOgorICAg
ICAgICAqIHJ1bnRpbWUvSW50ZXJuYWxGdW5jdGlvbi5jcHA6CisgICAgICAgIChKU0M6OkludGVy
bmFsRnVuY3Rpb246OmZpbmlzaENyZWF0aW9uKToKKyAgICAgICAgKiBydW50aW1lL0ludGVybmFs
RnVuY3Rpb24uaDoKKyAgICAgICAgKEludGVybmFsRnVuY3Rpb24pOgorICAgICAgICAqIHJ1bnRp
bWUvSlNBY3RpdmF0aW9uLmNwcDoKKyAgICAgICAgKEpTQzo6SlNBY3RpdmF0aW9uOjpzeW1ib2xU
YWJsZUdldCk6CisgICAgICAgIChKU0M6OkpTQWN0aXZhdGlvbjo6c3ltYm9sVGFibGVQdXQpOgor
ICAgICAgICAoSlNDOjpKU0FjdGl2YXRpb246OnN5bWJvbFRhYmxlUHV0V2l0aEF0dHJpYnV0ZXMp
OgorICAgICAgICAoSlNDOjpKU0FjdGl2YXRpb246OmdldE93blByb3BlcnR5U2xvdCk6CisgICAg
ICAgIChKU0M6OkpTQWN0aXZhdGlvbjo6cHV0KToKKyAgICAgICAgKEpTQzo6SlNBY3RpdmF0aW9u
OjpwdXREaXJlY3RWaXJ0dWFsKToKKyAgICAgICAgKEpTQzo6SlNBY3RpdmF0aW9uOjpkZWxldGVQ
cm9wZXJ0eSk6CisgICAgICAgIChKU0M6OkpTQWN0aXZhdGlvbjo6YXJndW1lbnRzR2V0dGVyKToK
KyAgICAgICAgKiBydW50aW1lL0pTQWN0aXZhdGlvbi5oOgorICAgICAgICAoSlNBY3RpdmF0aW9u
KToKKyAgICAgICAgKiBydW50aW1lL0pTQXJyYXkuY3BwOgorICAgICAgICAoSlNDOjpKU0FycmF5
OjpkZWZpbmVPd25Qcm9wZXJ0eSk6CisgICAgICAgIChKU0M6OkpTQXJyYXk6OmdldE93blByb3Bl
cnR5U2xvdCk6CisgICAgICAgIChKU0M6OkpTQXJyYXk6OmdldE93blByb3BlcnR5RGVzY3JpcHRv
cik6CisgICAgICAgIChKU0M6OkpTQXJyYXk6OnB1dCk6CisgICAgICAgIChKU0M6OkpTQXJyYXk6
OmRlbGV0ZVByb3BlcnR5KToKKyAgICAgICAgKiBydW50aW1lL0pTQXJyYXkuaDoKKyAgICAgICAg
KEpTQXJyYXkpOgorICAgICAgICAoSlNDKToKKyAgICAgICAgKiBydW50aW1lL0pTQm91bmRGdW5j
dGlvbi5jcHA6CisgICAgICAgIChKU0M6OkpTQm91bmRGdW5jdGlvbjo6Y3JlYXRlKToKKyAgICAg
ICAgKEpTQzo6SlNCb3VuZEZ1bmN0aW9uOjpmaW5pc2hDcmVhdGlvbik6CisgICAgICAgICogcnVu
dGltZS9KU0JvdW5kRnVuY3Rpb24uaDoKKyAgICAgICAgKEpTQm91bmRGdW5jdGlvbik6CisgICAg
ICAgICogcnVudGltZS9KU0NlbGwuY3BwOgorICAgICAgICAoSlNDOjpKU0NlbGw6OmdldE93blBy
b3BlcnR5U2xvdCk6CisgICAgICAgIChKU0M6OkpTQ2VsbDo6cHV0KToKKyAgICAgICAgKEpTQzo6
SlNDZWxsOjpkZWxldGVQcm9wZXJ0eSk6CisgICAgICAgIChKU0M6OkpTQ2VsbDo6cHV0RGlyZWN0
VmlydHVhbCk6CisgICAgICAgIChKU0M6OkpTQ2VsbDo6ZGVmaW5lT3duUHJvcGVydHkpOgorICAg
ICAgICAoSlNDOjpKU0NlbGw6OmdldE93blByb3BlcnR5RGVzY3JpcHRvcik6CisgICAgICAgICog
cnVudGltZS9KU0NlbGwuaDoKKyAgICAgICAgKEpTQ2VsbCk6CisgICAgICAgICogcnVudGltZS9K
U0Z1bmN0aW9uLmNwcDoKKyAgICAgICAgKEpTQzo6SlNGdW5jdGlvbjo6Y3JlYXRlKToKKyAgICAg
ICAgKEpTQzo6SlNGdW5jdGlvbjo6ZmluaXNoQ3JlYXRpb24pOgorICAgICAgICAoSlNDOjpKU0Z1
bmN0aW9uOjphcmd1bWVudHNHZXR0ZXIpOgorICAgICAgICAoSlNDOjpKU0Z1bmN0aW9uOjpjYWxs
ZXJHZXR0ZXIpOgorICAgICAgICAoSlNDOjpKU0Z1bmN0aW9uOjpsZW5ndGhHZXR0ZXIpOgorICAg
ICAgICAoSlNDOjpKU0Z1bmN0aW9uOjpnZXRPd25Qcm9wZXJ0eVNsb3QpOgorICAgICAgICAoSlND
OjpKU0Z1bmN0aW9uOjpnZXRPd25Qcm9wZXJ0eURlc2NyaXB0b3IpOgorICAgICAgICAoSlNDOjpK
U0Z1bmN0aW9uOjpwdXQpOgorICAgICAgICAoSlNDOjpKU0Z1bmN0aW9uOjpkZWxldGVQcm9wZXJ0
eSk6CisgICAgICAgIChKU0M6OkpTRnVuY3Rpb246OmRlZmluZU93blByb3BlcnR5KToKKyAgICAg
ICAgKEpTQzo6Z2V0Q2FsY3VsYXRlZERpc3BsYXlOYW1lKToKKyAgICAgICAgKiBydW50aW1lL0pT
RnVuY3Rpb24uaDoKKyAgICAgICAgKEpTRnVuY3Rpb24pOgorICAgICAgICAqIHJ1bnRpbWUvSlNH
bG9iYWxPYmplY3QuY3BwOgorICAgICAgICAoSlNDOjpKU0dsb2JhbE9iamVjdDo6cHV0KToKKyAg
ICAgICAgKEpTQzo6SlNHbG9iYWxPYmplY3Q6OnB1dERpcmVjdFZpcnR1YWwpOgorICAgICAgICAo
SlNDOjpKU0dsb2JhbE9iamVjdDo6ZGVmaW5lT3duUHJvcGVydHkpOgorICAgICAgICAoSlNDOjpK
U0dsb2JhbE9iamVjdDo6cmVzZXQpOgorICAgICAgICAoSlNDOjpKU0dsb2JhbE9iamVjdDo6Y3Jl
YXRlVGhyb3dUeXBlRXJyb3IpOgorICAgICAgICAoSlNDOjpKU0dsb2JhbE9iamVjdDo6Z2V0T3du
UHJvcGVydHlTbG90KToKKyAgICAgICAgKEpTQzo6SlNHbG9iYWxPYmplY3Q6OmdldE93blByb3Bl
cnR5RGVzY3JpcHRvcik6CisgICAgICAgICogcnVudGltZS9KU0dsb2JhbE9iamVjdC5oOgorICAg
ICAgICAoSlNHbG9iYWxPYmplY3QpOgorICAgICAgICAoSlNDOjpKU0dsb2JhbE9iamVjdDo6aGFz
T3duUHJvcGVydHlGb3JXcml0ZSk6CisgICAgICAgIChKU0M6OkpTR2xvYmFsT2JqZWN0OjpzeW1i
b2xUYWJsZUhhc1Byb3BlcnR5KToKKyAgICAgICAgKiBydW50aW1lL0pTTm90QW5PYmplY3QuY3Bw
OgorICAgICAgICAoSlNDOjpKU05vdEFuT2JqZWN0OjpnZXRPd25Qcm9wZXJ0eVNsb3QpOgorICAg
ICAgICAoSlNDOjpKU05vdEFuT2JqZWN0OjpnZXRPd25Qcm9wZXJ0eURlc2NyaXB0b3IpOgorICAg
ICAgICAoSlNDOjpKU05vdEFuT2JqZWN0OjpwdXQpOgorICAgICAgICAoSlNDOjpKU05vdEFuT2Jq
ZWN0OjpkZWxldGVQcm9wZXJ0eSk6CisgICAgICAgICogcnVudGltZS9KU05vdEFuT2JqZWN0Lmg6
CisgICAgICAgIChKU05vdEFuT2JqZWN0KToKKyAgICAgICAgKiBydW50aW1lL0pTT05PYmplY3Qu
Y3BwOgorICAgICAgICAoSlNDOjpKU09OT2JqZWN0OjpnZXRPd25Qcm9wZXJ0eVNsb3QpOgorICAg
ICAgICAoSlNDOjpKU09OT2JqZWN0OjpnZXRPd25Qcm9wZXJ0eURlc2NyaXB0b3IpOgorICAgICAg
ICAqIHJ1bnRpbWUvSlNPTk9iamVjdC5oOgorICAgICAgICAoSlNPTk9iamVjdCk6CisgICAgICAg
ICogcnVudGltZS9KU09iamVjdC5jcHA6CisgICAgICAgIChKU0M6OkpTT2JqZWN0OjpwdXQpOgor
ICAgICAgICAoSlNDOjpKU09iamVjdDo6cHV0RGlyZWN0VmlydHVhbCk6CisgICAgICAgIChKU0M6
OkpTT2JqZWN0OjpwdXREaXJlY3RBY2Nlc3Nvcik6CisgICAgICAgIChKU0M6OkpTT2JqZWN0Ojpo
YXNQcm9wZXJ0eSk6CisgICAgICAgIChKU0M6OkpTT2JqZWN0OjpkZWxldGVQcm9wZXJ0eSk6Cisg
ICAgICAgIChKU0M6OkpTT2JqZWN0OjpoYXNPd25Qcm9wZXJ0eSk6CisgICAgICAgIChKU0M6OmNh
bGxEZWZhdWx0VmFsdWVGdW5jdGlvbik6CisgICAgICAgIChKU0M6OkpTT2JqZWN0OjpmaW5kUHJv
cGVydHlIYXNoRW50cnkpOgorICAgICAgICAoSlNDOjpKU09iamVjdDo6Z2V0UHJvcGVydHlTcGVj
aWZpY1ZhbHVlKToKKyAgICAgICAgKEpTQzo6SlNPYmplY3Q6OnJlbW92ZURpcmVjdCk6CisgICAg
ICAgIChKU0M6OkpTT2JqZWN0OjpnZXRPd25Qcm9wZXJ0eURlc2NyaXB0b3IpOgorICAgICAgICAo
SlNDOjpKU09iamVjdDo6Z2V0UHJvcGVydHlEZXNjcmlwdG9yKToKKyAgICAgICAgKEpTQzo6cHV0
RGVzY3JpcHRvcik6CisgICAgICAgIChKU0M6OkpTT2JqZWN0OjpkZWZpbmVPd25Qcm9wZXJ0eSk6
CisgICAgICAgICogcnVudGltZS9KU09iamVjdC5oOgorICAgICAgICAoSlNPYmplY3QpOgorICAg
ICAgICAoSlNDOjpKU09iamVjdDo6Z2V0RGlyZWN0KToKKyAgICAgICAgKEpTQzo6SlNPYmplY3Q6
OmdldERpcmVjdExvY2F0aW9uKToKKyAgICAgICAgKEpTQzo6SlNPYmplY3Q6OmlubGluZUdldE93
blByb3BlcnR5U2xvdCk6CisgICAgICAgIChKU0M6OkpTT2JqZWN0OjpnZXRPd25Qcm9wZXJ0eVNs
b3QpOgorICAgICAgICAoSlNDOjpKU0NlbGw6OmZhc3RHZXRPd25Qcm9wZXJ0eVNsb3QpOgorICAg
ICAgICAoSlNDOjpKU09iamVjdDo6Z2V0UHJvcGVydHlTbG90KToKKyAgICAgICAgKEpTQzo6SlNP
YmplY3Q6OmdldCk6CisgICAgICAgIChKU0M6OkpTT2JqZWN0OjpwdXREaXJlY3RJbnRlcm5hbCk6
CisgICAgICAgIChKU0M6OkpTT2JqZWN0OjpwdXRPd25EYXRhUHJvcGVydHkpOgorICAgICAgICAo
SlNDOjpKU09iamVjdDo6cHV0RGlyZWN0KToKKyAgICAgICAgKEpTQzo6SlNPYmplY3Q6OnB1dERp
cmVjdFdpdGhvdXRUcmFuc2l0aW9uKToKKyAgICAgICAgKEpTQzo6SlNWYWx1ZTo6Z2V0KToKKyAg
ICAgICAgKEpTQzo6SlNWYWx1ZTo6cHV0KToKKyAgICAgICAgKiBydW50aW1lL0pTU3RhdGljU2Nv
cGVPYmplY3QuY3BwOgorICAgICAgICAoSlNDOjpKU1N0YXRpY1Njb3BlT2JqZWN0OjpwdXQpOgor
ICAgICAgICAoSlNDOjpKU1N0YXRpY1Njb3BlT2JqZWN0OjpwdXREaXJlY3RWaXJ0dWFsKToKKyAg
ICAgICAgKEpTQzo6SlNTdGF0aWNTY29wZU9iamVjdDo6Z2V0T3duUHJvcGVydHlTbG90KToKKyAg
ICAgICAgKiBydW50aW1lL0pTU3RhdGljU2NvcGVPYmplY3QuaDoKKyAgICAgICAgKEpTU3RhdGlj
U2NvcGVPYmplY3QpOgorICAgICAgICAqIHJ1bnRpbWUvSlNTdHJpbmcuY3BwOgorICAgICAgICAo
SlNDOjpKU1N0cmluZzo6Z2V0T3duUHJvcGVydHlTbG90KToKKyAgICAgICAgKEpTQzo6SlNTdHJp
bmc6OmdldFN0cmluZ1Byb3BlcnR5RGVzY3JpcHRvcik6CisgICAgICAgICogcnVudGltZS9KU1N0
cmluZy5oOgorICAgICAgICAoSlNTdHJpbmcpOgorICAgICAgICAoSlNDOjpKU1N0cmluZzo6Z2V0
U3RyaW5nUHJvcGVydHlTbG90KToKKyAgICAgICAgKiBydW50aW1lL0pTVmFsdWUuY3BwOgorICAg
ICAgICAoSlNDOjpKU1ZhbHVlOjpwdXRUb1ByaW1pdGl2ZSk6CisgICAgICAgICogcnVudGltZS9K
U1ZhbHVlLmg6CisgICAgICAgIChKU0MpOgorICAgICAgICAoSlNWYWx1ZSk6CisgICAgICAgICog
cnVudGltZS9KU1ZhcmlhYmxlT2JqZWN0LmNwcDoKKyAgICAgICAgKEpTQzo6SlNWYXJpYWJsZU9i
amVjdDo6ZGVsZXRlUHJvcGVydHkpOgorICAgICAgICAoSlNDOjpKU1ZhcmlhYmxlT2JqZWN0Ojpz
eW1ib2xUYWJsZUdldCk6CisgICAgICAgIChKU0M6OkpTVmFyaWFibGVPYmplY3Q6OnB1dERpcmVj
dFZpcnR1YWwpOgorICAgICAgICAqIHJ1bnRpbWUvSlNWYXJpYWJsZU9iamVjdC5oOgorICAgICAg
ICAoSlNWYXJpYWJsZU9iamVjdCk6CisgICAgICAgIChKU0M6OkpTVmFyaWFibGVPYmplY3Q6OnN5
bWJvbFRhYmxlR2V0KToKKyAgICAgICAgKEpTQzo6SlNWYXJpYWJsZU9iamVjdDo6c3ltYm9sVGFi
bGVQdXQpOgorICAgICAgICAoSlNDOjpKU1ZhcmlhYmxlT2JqZWN0OjpzeW1ib2xUYWJsZVB1dFdp
dGhBdHRyaWJ1dGVzKToKKyAgICAgICAgKiBydW50aW1lL0xvb2t1cC5jcHA6CisgICAgICAgIChK
U0M6OnNldFVwU3RhdGljRnVuY3Rpb25TbG90KToKKyAgICAgICAgKiBydW50aW1lL0xvb2t1cC5o
OgorICAgICAgICAoSlNDOjpIYXNoVGFibGU6OmVudHJ5KToKKyAgICAgICAgKEpTQyk6CisgICAg
ICAgIChKU0M6OmdldFN0YXRpY1Byb3BlcnR5U2xvdCk6CisgICAgICAgIChKU0M6OmdldFN0YXRp
Y1Byb3BlcnR5RGVzY3JpcHRvcik6CisgICAgICAgIChKU0M6OmdldFN0YXRpY0Z1bmN0aW9uU2xv
dCk6CisgICAgICAgIChKU0M6OmdldFN0YXRpY0Z1bmN0aW9uRGVzY3JpcHRvcik6CisgICAgICAg
IChKU0M6OmdldFN0YXRpY1ZhbHVlU2xvdCk6CisgICAgICAgIChKU0M6OmdldFN0YXRpY1ZhbHVl
RGVzY3JpcHRvcik6CisgICAgICAgIChKU0M6Omxvb2t1cFB1dCk6CisgICAgICAgICogcnVudGlt
ZS9NYXRoT2JqZWN0LmNwcDoKKyAgICAgICAgKEpTQzo6TWF0aE9iamVjdDo6Z2V0T3duUHJvcGVy
dHlTbG90KToKKyAgICAgICAgKEpTQzo6TWF0aE9iamVjdDo6Z2V0T3duUHJvcGVydHlEZXNjcmlw
dG9yKToKKyAgICAgICAgKiBydW50aW1lL01hdGhPYmplY3QuaDoKKyAgICAgICAgKE1hdGhPYmpl
Y3QpOgorICAgICAgICAqIHJ1bnRpbWUvTmF0aXZlRXJyb3JDb25zdHJ1Y3Rvci5oOgorICAgICAg
ICAoSlNDOjpOYXRpdmVFcnJvckNvbnN0cnVjdG9yOjpmaW5pc2hDcmVhdGlvbik6CisgICAgICAg
ICogcnVudGltZS9OdW1iZXJDb25zdHJ1Y3Rvci5jcHA6CisgICAgICAgIChKU0MpOgorICAgICAg
ICAoSlNDOjpOdW1iZXJDb25zdHJ1Y3Rvcjo6ZmluaXNoQ3JlYXRpb24pOgorICAgICAgICAoSlND
OjpOdW1iZXJDb25zdHJ1Y3Rvcjo6Z2V0T3duUHJvcGVydHlTbG90KToKKyAgICAgICAgKEpTQzo6
TnVtYmVyQ29uc3RydWN0b3I6OmdldE93blByb3BlcnR5RGVzY3JpcHRvcik6CisgICAgICAgIChK
U0M6Ok51bWJlckNvbnN0cnVjdG9yOjpwdXQpOgorICAgICAgICAoSlNDOjpudW1iZXJDb25zdHJ1
Y3Rvck5hTlZhbHVlKToKKyAgICAgICAgKEpTQzo6bnVtYmVyQ29uc3RydWN0b3JOZWdJbmZpbml0
eSk6CisgICAgICAgIChKU0M6Om51bWJlckNvbnN0cnVjdG9yUG9zSW5maW5pdHkpOgorICAgICAg
ICAoSlNDOjpudW1iZXJDb25zdHJ1Y3Rvck1heFZhbHVlKToKKyAgICAgICAgKEpTQzo6bnVtYmVy
Q29uc3RydWN0b3JNaW5WYWx1ZSk6CisgICAgICAgICogcnVudGltZS9OdW1iZXJDb25zdHJ1Y3Rv
ci5oOgorICAgICAgICAoTnVtYmVyQ29uc3RydWN0b3IpOgorICAgICAgICAqIHJ1bnRpbWUvTnVt
YmVyUHJvdG90eXBlLmNwcDoKKyAgICAgICAgKEpTQzo6TnVtYmVyUHJvdG90eXBlOjpnZXRPd25Q
cm9wZXJ0eVNsb3QpOgorICAgICAgICAoSlNDOjpOdW1iZXJQcm90b3R5cGU6OmdldE93blByb3Bl
cnR5RGVzY3JpcHRvcik6CisgICAgICAgICogcnVudGltZS9OdW1iZXJQcm90b3R5cGUuaDoKKyAg
ICAgICAgKE51bWJlclByb3RvdHlwZSk6CisgICAgICAgICogcnVudGltZS9PYmplY3RDb25zdHJ1
Y3Rvci5jcHA6CisgICAgICAgIChKU0M6Ok9iamVjdENvbnN0cnVjdG9yOjpmaW5pc2hDcmVhdGlv
bik6CisgICAgICAgIChKU0M6Ok9iamVjdENvbnN0cnVjdG9yOjpnZXRPd25Qcm9wZXJ0eVNsb3Qp
OgorICAgICAgICAoSlNDOjpPYmplY3RDb25zdHJ1Y3Rvcjo6Z2V0T3duUHJvcGVydHlEZXNjcmlw
dG9yKToKKyAgICAgICAgKiBydW50aW1lL09iamVjdENvbnN0cnVjdG9yLmg6CisgICAgICAgIChP
YmplY3RDb25zdHJ1Y3Rvcik6CisgICAgICAgICogcnVudGltZS9PYmplY3RQcm90b3R5cGUuY3Bw
OgorICAgICAgICAoSlNDOjpPYmplY3RQcm90b3R5cGU6OnB1dCk6CisgICAgICAgIChKU0M6Ok9i
amVjdFByb3RvdHlwZTo6ZGVmaW5lT3duUHJvcGVydHkpOgorICAgICAgICAoSlNDOjpPYmplY3RQ
cm90b3R5cGU6OmdldE93blByb3BlcnR5U2xvdCk6CisgICAgICAgIChKU0M6Ok9iamVjdFByb3Rv
dHlwZTo6Z2V0T3duUHJvcGVydHlEZXNjcmlwdG9yKToKKyAgICAgICAgKiBydW50aW1lL09iamVj
dFByb3RvdHlwZS5oOgorICAgICAgICAoT2JqZWN0UHJvdG90eXBlKToKKyAgICAgICAgKiBydW50
aW1lL1Byb3BlcnR5U2xvdC5oOgorICAgICAgICAoUHJvcGVydHlTbG90KToKKyAgICAgICAgKEpT
Qzo6UHJvcGVydHlTbG90OjpnZXRWYWx1ZSk6CisgICAgICAgICogcnVudGltZS9SZWdFeHBDb25z
dHJ1Y3Rvci5jcHA6CisgICAgICAgIChKU0MpOgorICAgICAgICAoSlNDOjpSZWdFeHBDb25zdHJ1
Y3Rvcjo6ZmluaXNoQ3JlYXRpb24pOgorICAgICAgICAoSlNDOjpSZWdFeHBDb25zdHJ1Y3Rvcjo6
Z2V0T3duUHJvcGVydHlTbG90KToKKyAgICAgICAgKEpTQzo6UmVnRXhwQ29uc3RydWN0b3I6Omdl
dE93blByb3BlcnR5RGVzY3JpcHRvcik6CisgICAgICAgIChKU0M6OnJlZ0V4cENvbnN0cnVjdG9y
RG9sbGFyMSk6CisgICAgICAgIChKU0M6OnJlZ0V4cENvbnN0cnVjdG9yRG9sbGFyMik6CisgICAg
ICAgIChKU0M6OnJlZ0V4cENvbnN0cnVjdG9yRG9sbGFyMyk6CisgICAgICAgIChKU0M6OnJlZ0V4
cENvbnN0cnVjdG9yRG9sbGFyNCk6CisgICAgICAgIChKU0M6OnJlZ0V4cENvbnN0cnVjdG9yRG9s
bGFyNSk6CisgICAgICAgIChKU0M6OnJlZ0V4cENvbnN0cnVjdG9yRG9sbGFyNik6CisgICAgICAg
IChKU0M6OnJlZ0V4cENvbnN0cnVjdG9yRG9sbGFyNyk6CisgICAgICAgIChKU0M6OnJlZ0V4cENv
bnN0cnVjdG9yRG9sbGFyOCk6CisgICAgICAgIChKU0M6OnJlZ0V4cENvbnN0cnVjdG9yRG9sbGFy
OSk6CisgICAgICAgIChKU0M6OnJlZ0V4cENvbnN0cnVjdG9ySW5wdXQpOgorICAgICAgICAoSlND
OjpyZWdFeHBDb25zdHJ1Y3Rvck11bHRpbGluZSk6CisgICAgICAgIChKU0M6OnJlZ0V4cENvbnN0
cnVjdG9yTGFzdE1hdGNoKToKKyAgICAgICAgKEpTQzo6cmVnRXhwQ29uc3RydWN0b3JMYXN0UGFy
ZW4pOgorICAgICAgICAoSlNDOjpyZWdFeHBDb25zdHJ1Y3RvckxlZnRDb250ZXh0KToKKyAgICAg
ICAgKEpTQzo6cmVnRXhwQ29uc3RydWN0b3JSaWdodENvbnRleHQpOgorICAgICAgICAoSlNDOjpS
ZWdFeHBDb25zdHJ1Y3Rvcjo6cHV0KToKKyAgICAgICAgKiBydW50aW1lL1JlZ0V4cENvbnN0cnVj
dG9yLmg6CisgICAgICAgIChSZWdFeHBDb25zdHJ1Y3Rvcik6CisgICAgICAgICogcnVudGltZS9S
ZWdFeHBNYXRjaGVzQXJyYXkuaDoKKyAgICAgICAgKEpTQzo6UmVnRXhwTWF0Y2hlc0FycmF5Ojpn
ZXRPd25Qcm9wZXJ0eVNsb3QpOgorICAgICAgICAoSlNDOjpSZWdFeHBNYXRjaGVzQXJyYXk6Omdl
dE93blByb3BlcnR5RGVzY3JpcHRvcik6CisgICAgICAgIChKU0M6OlJlZ0V4cE1hdGNoZXNBcnJh
eTo6cHV0KToKKyAgICAgICAgKEpTQzo6UmVnRXhwTWF0Y2hlc0FycmF5OjpkZWxldGVQcm9wZXJ0
eSk6CisgICAgICAgIChKU0M6OlJlZ0V4cE1hdGNoZXNBcnJheTo6ZGVmaW5lT3duUHJvcGVydHkp
OgorICAgICAgICAqIHJ1bnRpbWUvUmVnRXhwT2JqZWN0LmNwcDoKKyAgICAgICAgKEpTQyk6Cisg
ICAgICAgIChKU0M6OlJlZ0V4cE9iamVjdDo6Z2V0T3duUHJvcGVydHlTbG90KToKKyAgICAgICAg
KEpTQzo6UmVnRXhwT2JqZWN0OjpnZXRPd25Qcm9wZXJ0eURlc2NyaXB0b3IpOgorICAgICAgICAo
SlNDOjpSZWdFeHBPYmplY3Q6OmRlbGV0ZVByb3BlcnR5KToKKyAgICAgICAgKEpTQzo6UmVnRXhw
T2JqZWN0OjpkZWZpbmVPd25Qcm9wZXJ0eSk6CisgICAgICAgIChKU0M6OnJlZ0V4cE9iamVjdEds
b2JhbCk6CisgICAgICAgIChKU0M6OnJlZ0V4cE9iamVjdElnbm9yZUNhc2UpOgorICAgICAgICAo
SlNDOjpyZWdFeHBPYmplY3RNdWx0aWxpbmUpOgorICAgICAgICAoSlNDOjpyZWdFeHBPYmplY3RT
b3VyY2UpOgorICAgICAgICAoSlNDOjpSZWdFeHBPYmplY3Q6OnB1dCk6CisgICAgICAgICogcnVu
dGltZS9SZWdFeHBPYmplY3QuaDoKKyAgICAgICAgKFJlZ0V4cE9iamVjdCk6CisgICAgICAgICog
cnVudGltZS9SZWdFeHBQcm90b3R5cGUuY3BwOgorICAgICAgICAoSlNDOjpSZWdFeHBQcm90b3R5
cGU6OmdldE93blByb3BlcnR5U2xvdCk6CisgICAgICAgIChKU0M6OlJlZ0V4cFByb3RvdHlwZTo6
Z2V0T3duUHJvcGVydHlEZXNjcmlwdG9yKToKKyAgICAgICAgKiBydW50aW1lL1JlZ0V4cFByb3Rv
dHlwZS5oOgorICAgICAgICAoUmVnRXhwUHJvdG90eXBlKToKKyAgICAgICAgKiBydW50aW1lL1N0
cmljdEV2YWxBY3RpdmF0aW9uLmNwcDoKKyAgICAgICAgKEpTQzo6U3RyaWN0RXZhbEFjdGl2YXRp
b246OmRlbGV0ZVByb3BlcnR5KToKKyAgICAgICAgKiBydW50aW1lL1N0cmljdEV2YWxBY3RpdmF0
aW9uLmg6CisgICAgICAgIChTdHJpY3RFdmFsQWN0aXZhdGlvbik6CisgICAgICAgICogcnVudGlt
ZS9TdHJpbmdDb25zdHJ1Y3Rvci5jcHA6CisgICAgICAgIChKU0M6OlN0cmluZ0NvbnN0cnVjdG9y
OjpmaW5pc2hDcmVhdGlvbik6CisgICAgICAgIChKU0M6OlN0cmluZ0NvbnN0cnVjdG9yOjpnZXRP
d25Qcm9wZXJ0eVNsb3QpOgorICAgICAgICAoSlNDOjpTdHJpbmdDb25zdHJ1Y3Rvcjo6Z2V0T3du
UHJvcGVydHlEZXNjcmlwdG9yKToKKyAgICAgICAgKiBydW50aW1lL1N0cmluZ0NvbnN0cnVjdG9y
Lmg6CisgICAgICAgIChTdHJpbmdDb25zdHJ1Y3Rvcik6CisgICAgICAgICogcnVudGltZS9TdHJp
bmdPYmplY3QuY3BwOgorICAgICAgICAoSlNDOjpTdHJpbmdPYmplY3Q6OmdldE93blByb3BlcnR5
U2xvdCk6CisgICAgICAgIChKU0M6OlN0cmluZ09iamVjdDo6Z2V0T3duUHJvcGVydHlEZXNjcmlw
dG9yKToKKyAgICAgICAgKEpTQzo6U3RyaW5nT2JqZWN0OjpwdXQpOgorICAgICAgICAoSlNDOjpT
dHJpbmdPYmplY3Q6OmRlZmluZU93blByb3BlcnR5KToKKyAgICAgICAgKEpTQzo6U3RyaW5nT2Jq
ZWN0OjpkZWxldGVQcm9wZXJ0eSk6CisgICAgICAgICogcnVudGltZS9TdHJpbmdPYmplY3QuaDoK
KyAgICAgICAgKFN0cmluZ09iamVjdCk6CisgICAgICAgICogcnVudGltZS9TdHJpbmdQcm90b3R5
cGUuY3BwOgorICAgICAgICAoSlNDOjpTdHJpbmdQcm90b3R5cGU6OmdldE93blByb3BlcnR5U2xv
dCk6CisgICAgICAgIChKU0M6OlN0cmluZ1Byb3RvdHlwZTo6Z2V0T3duUHJvcGVydHlEZXNjcmlw
dG9yKToKKyAgICAgICAgKiBydW50aW1lL1N0cmluZ1Byb3RvdHlwZS5oOgorICAgICAgICAoU3Ry
aW5nUHJvdG90eXBlKToKKyAgICAgICAgKiBydW50aW1lL1N0cnVjdHVyZS5jcHA6CisgICAgICAg
IChKU0M6OlN0cnVjdHVyZTo6ZGVzcGVjaWZ5RGljdGlvbmFyeUZ1bmN0aW9uKToKKyAgICAgICAg
KEpTQzo6U3RydWN0dXJlOjphZGRQcm9wZXJ0eVRyYW5zaXRpb25Ub0V4aXN0aW5nU3RydWN0dXJl
KToKKyAgICAgICAgKEpTQzo6U3RydWN0dXJlOjphZGRQcm9wZXJ0eVRyYW5zaXRpb24pOgorICAg
ICAgICAoSlNDOjpTdHJ1Y3R1cmU6OnJlbW92ZVByb3BlcnR5VHJhbnNpdGlvbik6CisgICAgICAg
IChKU0M6OlN0cnVjdHVyZTo6ZGVzcGVjaWZ5RnVuY3Rpb25UcmFuc2l0aW9uKToKKyAgICAgICAg
KEpTQzo6U3RydWN0dXJlOjphdHRyaWJ1dGVDaGFuZ2VUcmFuc2l0aW9uKToKKyAgICAgICAgKEpT
Qzo6U3RydWN0dXJlOjphZGRQcm9wZXJ0eVdpdGhvdXRUcmFuc2l0aW9uKToKKyAgICAgICAgKEpT
Qzo6U3RydWN0dXJlOjpyZW1vdmVQcm9wZXJ0eVdpdGhvdXRUcmFuc2l0aW9uKToKKyAgICAgICAg
KEpTQzo6U3RydWN0dXJlOjpnZXQpOgorICAgICAgICAoSlNDOjpTdHJ1Y3R1cmU6OmRlc3BlY2lm
eUZ1bmN0aW9uKToKKyAgICAgICAgKEpTQzo6U3RydWN0dXJlOjpwdXRTcGVjaWZpY1ZhbHVlKToK
KyAgICAgICAgKEpTQzo6U3RydWN0dXJlOjpyZW1vdmUpOgorICAgICAgICAqIHJ1bnRpbWUvU3Ry
dWN0dXJlLmg6CisgICAgICAgIChTdHJ1Y3R1cmUpOgorICAgICAgICAoSlNDOjpTdHJ1Y3R1cmU6
OmdldCk6CisKIDIwMTItMDUtMTEgIFNhbSBXZWluaWcgIDxzYW1Ad2Via2l0Lm9yZz4KIAogICAg
ICAgICBGaXggY3Jhc2ggc2VlbiB3aGVuIHJ1bm5pbmcgd2l0aCBsaWJnbWFsbG9jCkluZGV4OiBT
b3VyY2UvSmF2YVNjcmlwdENvcmUvSlNDVHlwZWRBcnJheVN0dWJzLmgKPT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0g
U291cmNlL0phdmFTY3JpcHRDb3JlL0pTQ1R5cGVkQXJyYXlTdHVicy5oCShyZXZpc2lvbiAxMTY2
NjcpCisrKyBTb3VyY2UvSmF2YVNjcmlwdENvcmUvSlNDVHlwZWRBcnJheVN0dWJzLmgJKHdvcmtp
bmcgY29weSkKQEAgLTUyLDEwICs1MiwxMCBAQCBwdWJsaWM6IFwKICAgICAgICAgcmV0dXJuIHB0
cjsgXAogICAgIH1cCiBcCi0gICAgc3RhdGljIGJvb2wgZ2V0T3duUHJvcGVydHlTbG90KEpTQzo6
SlNDZWxsKiwgSlNDOjpFeGVjU3RhdGUqLCBjb25zdCBKU0M6OklkZW50aWZpZXImIHByb3BlcnR5
TmFtZSwgSlNDOjpQcm9wZXJ0eVNsb3QmKTtcCi0gICAgc3RhdGljIGJvb2wgZ2V0T3duUHJvcGVy
dHlEZXNjcmlwdG9yKEpTQzo6SlNPYmplY3QqLCBKU0M6OkV4ZWNTdGF0ZSosIGNvbnN0IEpTQzo6
SWRlbnRpZmllciYgcHJvcGVydHlOYW1lLCBKU0M6OlByb3BlcnR5RGVzY3JpcHRvciYpO1wKKyAg
ICBzdGF0aWMgYm9vbCBnZXRPd25Qcm9wZXJ0eVNsb3QoSlNDOjpKU0NlbGwqLCBKU0M6OkV4ZWNT
dGF0ZSosIEpTQzo6UHJvcGVydHlOYW1lIHByb3BlcnR5TmFtZSwgSlNDOjpQcm9wZXJ0eVNsb3Qm
KTtcCisgICAgc3RhdGljIGJvb2wgZ2V0T3duUHJvcGVydHlEZXNjcmlwdG9yKEpTQzo6SlNPYmpl
Y3QqLCBKU0M6OkV4ZWNTdGF0ZSosIEpTQzo6UHJvcGVydHlOYW1lIHByb3BlcnR5TmFtZSwgSlND
OjpQcm9wZXJ0eURlc2NyaXB0b3ImKTtcCiAgICAgc3RhdGljIGJvb2wgZ2V0T3duUHJvcGVydHlT
bG90QnlJbmRleChKU0M6OkpTQ2VsbCosIEpTQzo6RXhlY1N0YXRlKiwgdW5zaWduZWQgcHJvcGVy
dHlOYW1lLCBKU0M6OlByb3BlcnR5U2xvdCYpO1wKLSAgICBzdGF0aWMgdm9pZCBwdXQoSlNDOjpK
U0NlbGwqLCBKU0M6OkV4ZWNTdGF0ZSosIGNvbnN0IEpTQzo6SWRlbnRpZmllciYgcHJvcGVydHlO
YW1lLCBKU0M6OkpTVmFsdWUsIEpTQzo6UHV0UHJvcGVydHlTbG90Jik7XAorICAgIHN0YXRpYyB2
b2lkIHB1dChKU0M6OkpTQ2VsbCosIEpTQzo6RXhlY1N0YXRlKiwgSlNDOjpQcm9wZXJ0eU5hbWUg
cHJvcGVydHlOYW1lLCBKU0M6OkpTVmFsdWUsIEpTQzo6UHV0UHJvcGVydHlTbG90Jik7XAogICAg
IHN0YXRpYyB2b2lkIHB1dEJ5SW5kZXgoSlNDOjpKU0NlbGwqLCBKU0M6OkV4ZWNTdGF0ZSosIHVu
c2lnbmVkIHByb3BlcnR5TmFtZSwgSlNDOjpKU1ZhbHVlLCBib29sKTtcCiAgICAgc3RhdGljIGNv
bnN0IEpTQzo6Q2xhc3NJbmZvIHNfaW5mbztcCiBcCkBAIC05OCwyNiArOTgsMjYgQEAgdm9pZCBK
UyMjbmFtZSMjQXJyYXk6OmZpbmlzaENyZWF0aW9uKEpTRwogICAgIEFTU0VSVChpbmhlcml0cygm
c19pbmZvKSk7XAogfVwKIFwKLWJvb2wgSlMjI25hbWUjI0FycmF5OjpnZXRPd25Qcm9wZXJ0eVNs
b3QoSlNDZWxsKiBjZWxsLCBFeGVjU3RhdGUqIGV4ZWMsIGNvbnN0IElkZW50aWZpZXImIHByb3Bl
cnR5TmFtZSwgUHJvcGVydHlTbG90JiBzbG90KVwKK2Jvb2wgSlMjI25hbWUjI0FycmF5OjpnZXRP
d25Qcm9wZXJ0eVNsb3QoSlNDZWxsKiBjZWxsLCBFeGVjU3RhdGUqIGV4ZWMsIFByb3BlcnR5TmFt
ZSBwcm9wZXJ0eU5hbWUsIFByb3BlcnR5U2xvdCYgc2xvdClcCiB7XAogICAgIEpTIyNuYW1lIyNB
cnJheSogdGhpc09iamVjdCA9IGpzQ2FzdDxKUyMjbmFtZSMjQXJyYXkqPihjZWxsKTtcCiAgICAg
QVNTRVJUX0dDX09CSkVDVF9JTkhFUklUUyh0aGlzT2JqZWN0LCAmc19pbmZvKTtcCi0gICAgYm9v
bCBvaztcCi0gICAgdW5zaWduZWQgaW5kZXggPSBwcm9wZXJ0eU5hbWUudG9VSW50MzIob2spO1wK
LSAgICBpZiAob2sgJiYgaW5kZXggPCB0aGlzT2JqZWN0LT5tX3N0b3JhZ2VMZW5ndGgpIHtcCisg
ICAgdW5zaWduZWQgaW5kZXggPSBwcm9wZXJ0eU5hbWUuYXNJbmRleCgpO1wKKyAgICBpZiAoaW5k
ZXggPCB0aGlzT2JqZWN0LT5tX3N0b3JhZ2VMZW5ndGgpIHtcCisgICAgICAgIEFTU0VSVChpbmRl
eCAhPSBQcm9wZXJ0eU5hbWU6Ok5vdEFuSW5kZXgpO1wKICAgICAgICAgc2xvdC5zZXRWYWx1ZSh0
aGlzT2JqZWN0LT5nZXRCeUluZGV4KGV4ZWMsIGluZGV4KSk7XAogICAgICAgICByZXR1cm4gdHJ1
ZTtcCiAgICAgfVwKICAgICByZXR1cm4gQmFzZTo6Z2V0T3duUHJvcGVydHlTbG90KGNlbGwsIGV4
ZWMsIHByb3BlcnR5TmFtZSwgc2xvdCk7XAogfVwKIFwKLWJvb2wgSlMjI25hbWUjI0FycmF5Ojpn
ZXRPd25Qcm9wZXJ0eURlc2NyaXB0b3IoSlNPYmplY3QqIG9iamVjdCwgRXhlY1N0YXRlKiBleGVj
LCBjb25zdCBJZGVudGlmaWVyJiBwcm9wZXJ0eU5hbWUsIFByb3BlcnR5RGVzY3JpcHRvciYgZGVz
Y3JpcHRvcilcCitib29sIEpTIyNuYW1lIyNBcnJheTo6Z2V0T3duUHJvcGVydHlEZXNjcmlwdG9y
KEpTT2JqZWN0KiBvYmplY3QsIEV4ZWNTdGF0ZSogZXhlYywgUHJvcGVydHlOYW1lIHByb3BlcnR5
TmFtZSwgUHJvcGVydHlEZXNjcmlwdG9yJiBkZXNjcmlwdG9yKVwKIHtcCiAgICAgSlMjI25hbWUj
I0FycmF5KiB0aGlzT2JqZWN0ID0ganNDYXN0PEpTIyNuYW1lIyNBcnJheSo+KG9iamVjdCk7XAog
ICAgIEFTU0VSVF9HQ19PQkpFQ1RfSU5IRVJJVFModGhpc09iamVjdCwgJnNfaW5mbyk7XAotICAg
IGJvb2wgb2s7XAotICAgIHVuc2lnbmVkIGluZGV4ID0gcHJvcGVydHlOYW1lLnRvVUludDMyKG9r
KTtcCi0gICAgaWYgKG9rICYmIGluZGV4IDwgdGhpc09iamVjdC0+bV9zdG9yYWdlTGVuZ3RoKSB7
XAorICAgIHVuc2lnbmVkIGluZGV4ID0gcHJvcGVydHlOYW1lLmFzSW5kZXgoKTtcCisgICAgaWYg
KGluZGV4IDwgdGhpc09iamVjdC0+bV9zdG9yYWdlTGVuZ3RoKSB7XAorICAgICAgICBBU1NFUlQo
aW5kZXggIT0gUHJvcGVydHlOYW1lOjpOb3RBbkluZGV4KTtcCiAgICAgICAgIGRlc2NyaXB0b3Iu
c2V0RGVzY3JpcHRvcih0aGlzT2JqZWN0LT5nZXRCeUluZGV4KGV4ZWMsIGluZGV4KSwgRG9udERl
bGV0ZSk7XAogICAgICAgICByZXR1cm4gdHJ1ZTtcCiAgICAgfVwKQEAgLTEzNSwxMyArMTM1LDEy
IEBAIGJvb2wgSlMjI25hbWUjI0FycmF5OjpnZXRPd25Qcm9wZXJ0eVNsb3QKICAgICByZXR1cm4g
dGhpc09iamVjdC0+bWV0aG9kVGFibGUoKS0+Z2V0T3duUHJvcGVydHlTbG90KHRoaXNPYmplY3Qs
IGV4ZWMsIElkZW50aWZpZXI6OmZyb20oZXhlYywgcHJvcGVydHlOYW1lKSwgc2xvdCk7XAogfVwK
IFwKLXZvaWQgSlMjI25hbWUjI0FycmF5OjpwdXQoSlNDZWxsKiBjZWxsLCBFeGVjU3RhdGUqIGV4
ZWMsIGNvbnN0IElkZW50aWZpZXImIHByb3BlcnR5TmFtZSwgSlNWYWx1ZSB2YWx1ZSwgUHV0UHJv
cGVydHlTbG90JiBzbG90KVwKK3ZvaWQgSlMjI25hbWUjI0FycmF5OjpwdXQoSlNDZWxsKiBjZWxs
LCBFeGVjU3RhdGUqIGV4ZWMsIFByb3BlcnR5TmFtZSBwcm9wZXJ0eU5hbWUsIEpTVmFsdWUgdmFs
dWUsIFB1dFByb3BlcnR5U2xvdCYgc2xvdClcCiB7XAogICAgIEpTIyNuYW1lIyNBcnJheSogdGhp
c09iamVjdCA9IGpzQ2FzdDxKUyMjbmFtZSMjQXJyYXkqPihjZWxsKTtcCiAgICAgQVNTRVJUX0dD
X09CSkVDVF9JTkhFUklUUyh0aGlzT2JqZWN0LCAmc19pbmZvKTtcCi0gICAgYm9vbCBvaztcCi0g
ICAgdW5zaWduZWQgaW5kZXggPSBwcm9wZXJ0eU5hbWUudG9VSW50MzIob2spO1wKLSAgICBpZiAo
b2spIHtcCisgICAgdW5zaWduZWQgaW5kZXggPSBwcm9wZXJ0eU5hbWUuYXNJbmRleCgpO1wKKyAg
ICBpZiAoaW5kZXggIT0gUHJvcGVydHlOYW1lOjpOb3RBbkluZGV4KSB7XAogICAgICAgICB0aGlz
T2JqZWN0LT5pbmRleFNldHRlcihleGVjLCBpbmRleCwgdmFsdWUpO1wKICAgICAgICAgcmV0dXJu
O1wKICAgICB9XApJbmRleDogU291cmNlL0phdmFTY3JpcHRDb3JlL2pzYy5jcHAKPT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PQotLS0gU291cmNlL0phdmFTY3JpcHRDb3JlL2pzYy5jcHAJKHJldmlzaW9uIDExNjY2NykKKysr
IFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9qc2MuY3BwCSh3b3JraW5nIGNvcHkpCkBAIC0yMTgsMTMg
KzIxOCwxMyBAQCBwcm90ZWN0ZWQ6CiAgICAgdm9pZCBhZGRGdW5jdGlvbihKU0dsb2JhbERhdGEm
IGdsb2JhbERhdGEsIGNvbnN0IGNoYXIqIG5hbWUsIE5hdGl2ZUZ1bmN0aW9uIGZ1bmN0aW9uLCB1
bnNpZ25lZCBhcmd1bWVudHMpCiAgICAgewogICAgICAgICBJZGVudGlmaWVyIGlkZW50aWZpZXIo
Z2xvYmFsRXhlYygpLCBuYW1lKTsKLSAgICAgICAgcHV0RGlyZWN0KGdsb2JhbERhdGEsIGlkZW50
aWZpZXIsIEpTRnVuY3Rpb246OmNyZWF0ZShnbG9iYWxFeGVjKCksIHRoaXMsIGFyZ3VtZW50cywg
aWRlbnRpZmllciwgZnVuY3Rpb24pKTsKKyAgICAgICAgcHV0RGlyZWN0KGdsb2JhbERhdGEsIGlk
ZW50aWZpZXIsIEpTRnVuY3Rpb246OmNyZWF0ZShnbG9iYWxFeGVjKCksIHRoaXMsIGFyZ3VtZW50
cywgaWRlbnRpZmllci51c3RyaW5nKCksIGZ1bmN0aW9uKSk7CiAgICAgfQogICAgIAogICAgIHZv
aWQgYWRkQ29uc3RydWN0YWJsZUZ1bmN0aW9uKEpTR2xvYmFsRGF0YSYgZ2xvYmFsRGF0YSwgY29u
c3QgY2hhciogbmFtZSwgTmF0aXZlRnVuY3Rpb24gZnVuY3Rpb24sIHVuc2lnbmVkIGFyZ3VtZW50
cykKICAgICB7CiAgICAgICAgIElkZW50aWZpZXIgaWRlbnRpZmllcihnbG9iYWxFeGVjKCksIG5h
bWUpOwotICAgICAgICBwdXREaXJlY3QoZ2xvYmFsRGF0YSwgaWRlbnRpZmllciwgSlNGdW5jdGlv
bjo6Y3JlYXRlKGdsb2JhbEV4ZWMoKSwgdGhpcywgYXJndW1lbnRzLCBpZGVudGlmaWVyLCBmdW5j
dGlvbiwgTm9JbnRyaW5zaWMsIGZ1bmN0aW9uKSk7CisgICAgICAgIHB1dERpcmVjdChnbG9iYWxE
YXRhLCBpZGVudGlmaWVyLCBKU0Z1bmN0aW9uOjpjcmVhdGUoZ2xvYmFsRXhlYygpLCB0aGlzLCBh
cmd1bWVudHMsIGlkZW50aWZpZXIudXN0cmluZygpLCBmdW5jdGlvbiwgTm9JbnRyaW5zaWMsIGZ1
bmN0aW9uKSk7CiAgICAgfQogfTsKIENPTVBJTEVfQVNTRVJUKCFJc0ludGVnZXI8R2xvYmFsT2Jq
ZWN0Pjo6dmFsdWUsIFdURl9Jc0ludGVnZXJfR2xvYmFsT2JqZWN0X2ZhbHNlKTsKSW5kZXg6IFNv
dXJjZS9KYXZhU2NyaXB0Q29yZS9BUEkvSlNDYWxsYmFja0Z1bmN0aW9uLmNwcAo9PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
Ci0tLSBTb3VyY2UvSmF2YVNjcmlwdENvcmUvQVBJL0pTQ2FsbGJhY2tGdW5jdGlvbi5jcHAJKHJl
dmlzaW9uIDExNjY2NykKKysrIFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9BUEkvSlNDYWxsYmFja0Z1
bmN0aW9uLmNwcAkod29ya2luZyBjb3B5KQpAQCAtNDksNyArNDksNyBAQCBKU0NhbGxiYWNrRnVu
Y3Rpb246OkpTQ2FsbGJhY2tGdW5jdGlvbihKCiB7CiB9CiAKLXZvaWQgSlNDYWxsYmFja0Z1bmN0
aW9uOjpmaW5pc2hDcmVhdGlvbihKU0dsb2JhbERhdGEmIGdsb2JhbERhdGEsIGNvbnN0IElkZW50
aWZpZXImIG5hbWUpCit2b2lkIEpTQ2FsbGJhY2tGdW5jdGlvbjo6ZmluaXNoQ3JlYXRpb24oSlNH
bG9iYWxEYXRhJiBnbG9iYWxEYXRhLCBjb25zdCBVU3RyaW5nJiBuYW1lKQogewogICAgIEJhc2U6
OmZpbmlzaENyZWF0aW9uKGdsb2JhbERhdGEsIG5hbWUpOwogICAgIEFTU0VSVChpbmhlcml0cygm
c19pbmZvKSk7CkluZGV4OiBTb3VyY2UvSmF2YVNjcmlwdENvcmUvQVBJL0pTQ2FsbGJhY2tGdW5j
dGlvbi5oCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9BUEkvSlNDYWxsYmFj
a0Z1bmN0aW9uLmgJKHJldmlzaW9uIDExNjY2NykKKysrIFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9B
UEkvSlNDYWxsYmFja0Z1bmN0aW9uLmgJKHdvcmtpbmcgY29weSkKQEAgLTM0LDEyICszNCwxMiBA
QCBuYW1lc3BhY2UgSlNDIHsKIGNsYXNzIEpTQ2FsbGJhY2tGdW5jdGlvbiA6IHB1YmxpYyBJbnRl
cm5hbEZ1bmN0aW9uIHsKIHByb3RlY3RlZDoKICAgICBKU0NhbGxiYWNrRnVuY3Rpb24oSlNHbG9i
YWxPYmplY3QqLCBKU09iamVjdENhbGxBc0Z1bmN0aW9uQ2FsbGJhY2spOwotICAgIHZvaWQgZmlu
aXNoQ3JlYXRpb24oSlNHbG9iYWxEYXRhJiwgY29uc3QgSWRlbnRpZmllciYgbmFtZSk7CisgICAg
dm9pZCBmaW5pc2hDcmVhdGlvbihKU0dsb2JhbERhdGEmLCBjb25zdCBVU3RyaW5nJiBuYW1lKTsK
IAogcHVibGljOgogICAgIHR5cGVkZWYgSW50ZXJuYWxGdW5jdGlvbiBCYXNlOwogCi0gICAgc3Rh
dGljIEpTQ2FsbGJhY2tGdW5jdGlvbiogY3JlYXRlKEV4ZWNTdGF0ZSogZXhlYywgSlNHbG9iYWxP
YmplY3QqIGdsb2JhbE9iamVjdCwgSlNPYmplY3RDYWxsQXNGdW5jdGlvbkNhbGxiYWNrIGNhbGxi
YWNrLCBjb25zdCBJZGVudGlmaWVyJiBuYW1lKQorICAgIHN0YXRpYyBKU0NhbGxiYWNrRnVuY3Rp
b24qIGNyZWF0ZShFeGVjU3RhdGUqIGV4ZWMsIEpTR2xvYmFsT2JqZWN0KiBnbG9iYWxPYmplY3Qs
IEpTT2JqZWN0Q2FsbEFzRnVuY3Rpb25DYWxsYmFjayBjYWxsYmFjaywgY29uc3QgVVN0cmluZyYg
bmFtZSkKICAgICB7CiAgICAgICAgIEpTQ2FsbGJhY2tGdW5jdGlvbiogZnVuY3Rpb24gPSBuZXcg
KE5vdE51bGwsIGFsbG9jYXRlQ2VsbDxKU0NhbGxiYWNrRnVuY3Rpb24+KCpleGVjLT5oZWFwKCkp
KSBKU0NhbGxiYWNrRnVuY3Rpb24oZ2xvYmFsT2JqZWN0LCBjYWxsYmFjayk7CiAgICAgICAgIGZ1
bmN0aW9uLT5maW5pc2hDcmVhdGlvbihleGVjLT5nbG9iYWxEYXRhKCksIG5hbWUpOwpJbmRleDog
U291cmNlL0phdmFTY3JpcHRDb3JlL0FQSS9KU0NhbGxiYWNrT2JqZWN0LmgKPT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQot
LS0gU291cmNlL0phdmFTY3JpcHRDb3JlL0FQSS9KU0NhbGxiYWNrT2JqZWN0LmgJKHJldmlzaW9u
IDExNjY2NykKKysrIFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9BUEkvSlNDYWxsYmFja09iamVjdC5o
CSh3b3JraW5nIGNvcHkpCkBAIC0xNzcsMTIgKzE3NywxMiBAQCBwcml2YXRlOgogCiAgICAgc3Rh
dGljIEpTVmFsdWUgZGVmYXVsdFZhbHVlKGNvbnN0IEpTT2JqZWN0KiwgRXhlY1N0YXRlKiwgUHJl
ZmVycmVkUHJpbWl0aXZlVHlwZSk7CiAKLSAgICBzdGF0aWMgYm9vbCBnZXRPd25Qcm9wZXJ0eVNs
b3QoSlNDZWxsKiwgRXhlY1N0YXRlKiwgY29uc3QgSWRlbnRpZmllciYsIFByb3BlcnR5U2xvdCYp
OwotICAgIHN0YXRpYyBib29sIGdldE93blByb3BlcnR5RGVzY3JpcHRvcihKU09iamVjdCosIEV4
ZWNTdGF0ZSosIGNvbnN0IElkZW50aWZpZXImLCBQcm9wZXJ0eURlc2NyaXB0b3ImKTsKKyAgICBz
dGF0aWMgYm9vbCBnZXRPd25Qcm9wZXJ0eVNsb3QoSlNDZWxsKiwgRXhlY1N0YXRlKiwgUHJvcGVy
dHlOYW1lLCBQcm9wZXJ0eVNsb3QmKTsKKyAgICBzdGF0aWMgYm9vbCBnZXRPd25Qcm9wZXJ0eURl
c2NyaXB0b3IoSlNPYmplY3QqLCBFeGVjU3RhdGUqLCBQcm9wZXJ0eU5hbWUsIFByb3BlcnR5RGVz
Y3JpcHRvciYpOwogICAgIAotICAgIHN0YXRpYyB2b2lkIHB1dChKU0NlbGwqLCBFeGVjU3RhdGUq
LCBjb25zdCBJZGVudGlmaWVyJiwgSlNWYWx1ZSwgUHV0UHJvcGVydHlTbG90Jik7CisgICAgc3Rh
dGljIHZvaWQgcHV0KEpTQ2VsbCosIEV4ZWNTdGF0ZSosIFByb3BlcnR5TmFtZSwgSlNWYWx1ZSwg
UHV0UHJvcGVydHlTbG90Jik7CiAKLSAgICBzdGF0aWMgYm9vbCBkZWxldGVQcm9wZXJ0eShKU0Nl
bGwqLCBFeGVjU3RhdGUqLCBjb25zdCBJZGVudGlmaWVyJik7CisgICAgc3RhdGljIGJvb2wgZGVs
ZXRlUHJvcGVydHkoSlNDZWxsKiwgRXhlY1N0YXRlKiwgUHJvcGVydHlOYW1lKTsKICAgICBzdGF0
aWMgYm9vbCBkZWxldGVQcm9wZXJ0eUJ5SW5kZXgoSlNDZWxsKiwgRXhlY1N0YXRlKiwgdW5zaWdu
ZWQpOwogCiAgICAgc3RhdGljIGJvb2wgaGFzSW5zdGFuY2UoSlNPYmplY3QqLCBFeGVjU3RhdGUq
LCBKU1ZhbHVlLCBKU1ZhbHVlIHByb3RvKTsKQEAgLTIwOSw5ICsyMDksOSBAQCBwcml2YXRlOgog
ICAgIHN0YXRpYyBFbmNvZGVkSlNWYWx1ZSBKU0NfSE9TVF9DQUxMIGNhbGwoRXhlY1N0YXRlKik7
CiAgICAgc3RhdGljIEVuY29kZWRKU1ZhbHVlIEpTQ19IT1NUX0NBTEwgY29uc3RydWN0KEV4ZWNT
dGF0ZSopOwogICAgCi0gICAgSlNWYWx1ZSBnZXRTdGF0aWNWYWx1ZShFeGVjU3RhdGUqLCBjb25z
dCBJZGVudGlmaWVyJik7Ci0gICAgc3RhdGljIEpTVmFsdWUgc3RhdGljRnVuY3Rpb25HZXR0ZXIo
RXhlY1N0YXRlKiwgSlNWYWx1ZSwgY29uc3QgSWRlbnRpZmllciYpOwotICAgIHN0YXRpYyBKU1Zh
bHVlIGNhbGxiYWNrR2V0dGVyKEV4ZWNTdGF0ZSosIEpTVmFsdWUsIGNvbnN0IElkZW50aWZpZXIm
KTsKKyAgICBKU1ZhbHVlIGdldFN0YXRpY1ZhbHVlKEV4ZWNTdGF0ZSosIFByb3BlcnR5TmFtZSk7
CisgICAgc3RhdGljIEpTVmFsdWUgc3RhdGljRnVuY3Rpb25HZXR0ZXIoRXhlY1N0YXRlKiwgSlNW
YWx1ZSwgUHJvcGVydHlOYW1lKTsKKyAgICBzdGF0aWMgSlNWYWx1ZSBjYWxsYmFja0dldHRlcihF
eGVjU3RhdGUqLCBKU1ZhbHVlLCBQcm9wZXJ0eU5hbWUpOwogCiAgICAgT3duUHRyPEpTQ2FsbGJh
Y2tPYmplY3REYXRhPiBtX2NhbGxiYWNrT2JqZWN0RGF0YTsKIH07CkluZGV4OiBTb3VyY2UvSmF2
YVNjcmlwdENvcmUvQVBJL0pTQ2FsbGJhY2tPYmplY3RGdW5jdGlvbnMuaAo9PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0t
LSBTb3VyY2UvSmF2YVNjcmlwdENvcmUvQVBJL0pTQ2FsbGJhY2tPYmplY3RGdW5jdGlvbnMuaAko
cmV2aXNpb24gMTE2NjY3KQorKysgU291cmNlL0phdmFTY3JpcHRDb3JlL0FQSS9KU0NhbGxiYWNr
T2JqZWN0RnVuY3Rpb25zLmgJKHdvcmtpbmcgY29weSkKQEAgLTEyMiw3ICsxMjIsNyBAQCBVU3Ry
aW5nIEpTQ2FsbGJhY2tPYmplY3Q8UGFyZW50Pjo6Y2xhc3NOCiB9CiAKIHRlbXBsYXRlIDxjbGFz
cyBQYXJlbnQ+Ci1ib29sIEpTQ2FsbGJhY2tPYmplY3Q8UGFyZW50Pjo6Z2V0T3duUHJvcGVydHlT
bG90KEpTQ2VsbCogY2VsbCwgRXhlY1N0YXRlKiBleGVjLCBjb25zdCBJZGVudGlmaWVyJiBwcm9w
ZXJ0eU5hbWUsIFByb3BlcnR5U2xvdCYgc2xvdCkKK2Jvb2wgSlNDYWxsYmFja09iamVjdDxQYXJl
bnQ+OjpnZXRPd25Qcm9wZXJ0eVNsb3QoSlNDZWxsKiBjZWxsLCBFeGVjU3RhdGUqIGV4ZWMsIFBy
b3BlcnR5TmFtZSBwcm9wZXJ0eU5hbWUsIFByb3BlcnR5U2xvdCYgc2xvdCkKIHsKICAgICBKU0Nh
bGxiYWNrT2JqZWN0KiB0aGlzT2JqZWN0ID0ganNDYXN0PEpTQ2FsbGJhY2tPYmplY3QqPihjZWxs
KTsKICAgICBKU0NvbnRleHRSZWYgY3R4ID0gdG9SZWYoZXhlYyk7CkBAIC0yMDUsNyArMjA1LDcg
QEAgSlNWYWx1ZSBKU0NhbGxiYWNrT2JqZWN0PFBhcmVudD46OmRlZmF1bAogfQogCiB0ZW1wbGF0
ZSA8Y2xhc3MgUGFyZW50PgotYm9vbCBKU0NhbGxiYWNrT2JqZWN0PFBhcmVudD46OmdldE93blBy
b3BlcnR5RGVzY3JpcHRvcihKU09iamVjdCogb2JqZWN0LCBFeGVjU3RhdGUqIGV4ZWMsIGNvbnN0
IElkZW50aWZpZXImIHByb3BlcnR5TmFtZSwgUHJvcGVydHlEZXNjcmlwdG9yJiBkZXNjcmlwdG9y
KQorYm9vbCBKU0NhbGxiYWNrT2JqZWN0PFBhcmVudD46OmdldE93blByb3BlcnR5RGVzY3JpcHRv
cihKU09iamVjdCogb2JqZWN0LCBFeGVjU3RhdGUqIGV4ZWMsIFByb3BlcnR5TmFtZSBwcm9wZXJ0
eU5hbWUsIFByb3BlcnR5RGVzY3JpcHRvciYgZGVzY3JpcHRvcikKIHsKICAgICBKU0NhbGxiYWNr
T2JqZWN0KiB0aGlzT2JqZWN0ID0ganNDYXN0PEpTQ2FsbGJhY2tPYmplY3QqPihvYmplY3QpOwog
ICAgIFByb3BlcnR5U2xvdCBzbG90OwpAQCAtMjI1LDcgKzIyNSw3IEBAIGJvb2wgSlNDYWxsYmFj
a09iamVjdDxQYXJlbnQ+OjpnZXRPd25Qcm8KIH0KIAogdGVtcGxhdGUgPGNsYXNzIFBhcmVudD4K
LXZvaWQgSlNDYWxsYmFja09iamVjdDxQYXJlbnQ+OjpwdXQoSlNDZWxsKiBjZWxsLCBFeGVjU3Rh
dGUqIGV4ZWMsIGNvbnN0IElkZW50aWZpZXImIHByb3BlcnR5TmFtZSwgSlNWYWx1ZSB2YWx1ZSwg
UHV0UHJvcGVydHlTbG90JiBzbG90KQordm9pZCBKU0NhbGxiYWNrT2JqZWN0PFBhcmVudD46OnB1
dChKU0NlbGwqIGNlbGwsIEV4ZWNTdGF0ZSogZXhlYywgUHJvcGVydHlOYW1lIHByb3BlcnR5TmFt
ZSwgSlNWYWx1ZSB2YWx1ZSwgUHV0UHJvcGVydHlTbG90JiBzbG90KQogewogICAgIEpTQ2FsbGJh
Y2tPYmplY3QqIHRoaXNPYmplY3QgPSBqc0Nhc3Q8SlNDYWxsYmFja09iamVjdCo+KGNlbGwpOwog
ICAgIEpTQ29udGV4dFJlZiBjdHggPSB0b1JlZihleGVjKTsKQEAgLTI4NCw3ICsyODQsNyBAQCB2
b2lkIEpTQ2FsbGJhY2tPYmplY3Q8UGFyZW50Pjo6cHV0KEpTQ2VsCiB9CiAKIHRlbXBsYXRlIDxj
bGFzcyBQYXJlbnQ+Ci1ib29sIEpTQ2FsbGJhY2tPYmplY3Q8UGFyZW50Pjo6ZGVsZXRlUHJvcGVy
dHkoSlNDZWxsKiBjZWxsLCBFeGVjU3RhdGUqIGV4ZWMsIGNvbnN0IElkZW50aWZpZXImIHByb3Bl
cnR5TmFtZSkKK2Jvb2wgSlNDYWxsYmFja09iamVjdDxQYXJlbnQ+OjpkZWxldGVQcm9wZXJ0eShK
U0NlbGwqIGNlbGwsIEV4ZWNTdGF0ZSogZXhlYywgUHJvcGVydHlOYW1lIHByb3BlcnR5TmFtZSkK
IHsKICAgICBKU0NhbGxiYWNrT2JqZWN0KiB0aGlzT2JqZWN0ID0ganNDYXN0PEpTQ2FsbGJhY2tP
YmplY3QqPihjZWxsKTsKICAgICBKU0NvbnRleHRSZWYgY3R4ID0gdG9SZWYoZXhlYyk7CkBAIC01
MDQsNyArNTA0LDcgQEAgYm9vbCBKU0NhbGxiYWNrT2JqZWN0PFBhcmVudD46OmluaGVyaXRzKAog
fQogCiB0ZW1wbGF0ZSA8Y2xhc3MgUGFyZW50PgotSlNWYWx1ZSBKU0NhbGxiYWNrT2JqZWN0PFBh
cmVudD46OmdldFN0YXRpY1ZhbHVlKEV4ZWNTdGF0ZSogZXhlYywgY29uc3QgSWRlbnRpZmllciYg
cHJvcGVydHlOYW1lKQorSlNWYWx1ZSBKU0NhbGxiYWNrT2JqZWN0PFBhcmVudD46OmdldFN0YXRp
Y1ZhbHVlKEV4ZWNTdGF0ZSogZXhlYywgUHJvcGVydHlOYW1lIHByb3BlcnR5TmFtZSkKIHsKICAg
ICBKU09iamVjdFJlZiB0aGlzUmVmID0gdG9SZWYodGhpcyk7CiAgICAgUmVmUHRyPE9wYXF1ZUpT
U3RyaW5nPiBwcm9wZXJ0eU5hbWVSZWY7CkBAIC01MzMsNyArNTMzLDcgQEAgSlNWYWx1ZSBKU0Nh
bGxiYWNrT2JqZWN0PFBhcmVudD46OmdldFN0YQogfQogCiB0ZW1wbGF0ZSA8Y2xhc3MgUGFyZW50
PgotSlNWYWx1ZSBKU0NhbGxiYWNrT2JqZWN0PFBhcmVudD46OnN0YXRpY0Z1bmN0aW9uR2V0dGVy
KEV4ZWNTdGF0ZSogZXhlYywgSlNWYWx1ZSBzbG90UGFyZW50LCBjb25zdCBJZGVudGlmaWVyJiBw
cm9wZXJ0eU5hbWUpCitKU1ZhbHVlIEpTQ2FsbGJhY2tPYmplY3Q8UGFyZW50Pjo6c3RhdGljRnVu
Y3Rpb25HZXR0ZXIoRXhlY1N0YXRlKiBleGVjLCBKU1ZhbHVlIHNsb3RQYXJlbnQsIFByb3BlcnR5
TmFtZSBwcm9wZXJ0eU5hbWUpCiB7CiAgICAgSlNDYWxsYmFja09iamVjdCogdGhpc09iaiA9IGFz
Q2FsbGJhY2tPYmplY3Qoc2xvdFBhcmVudCk7CiAgICAgCkBAIC01NDcsNyArNTQ3LDcgQEAgSlNW
YWx1ZSBKU0NhbGxiYWNrT2JqZWN0PFBhcmVudD46OnN0YXRpYwogICAgICAgICAgICAgaWYgKFN0
YXRpY0Z1bmN0aW9uRW50cnkqIGVudHJ5ID0gc3RhdGljRnVuY3Rpb25zLT5nZXQocHJvcGVydHlO
YW1lLmltcGwoKSkpIHsKICAgICAgICAgICAgICAgICBpZiAoSlNPYmplY3RDYWxsQXNGdW5jdGlv
bkNhbGxiYWNrIGNhbGxBc0Z1bmN0aW9uID0gZW50cnktPmNhbGxBc0Z1bmN0aW9uKSB7CiAgICAg
ICAgICAgICAgICAgICAgIAotICAgICAgICAgICAgICAgICAgICBKU09iamVjdCogbyA9IEpTQ2Fs
bGJhY2tGdW5jdGlvbjo6Y3JlYXRlKGV4ZWMsIHRoaXNPYmotPmdsb2JhbE9iamVjdCgpLCBjYWxs
QXNGdW5jdGlvbiwgcHJvcGVydHlOYW1lKTsKKyAgICAgICAgICAgICAgICAgICAgSlNPYmplY3Qq
IG8gPSBKU0NhbGxiYWNrRnVuY3Rpb246OmNyZWF0ZShleGVjLCB0aGlzT2JqLT5nbG9iYWxPYmpl
Y3QoKSwgY2FsbEFzRnVuY3Rpb24sIHByb3BlcnR5TmFtZS51c3RyaW5nKCkpOwogICAgICAgICAg
ICAgICAgICAgICB0aGlzT2JqLT5wdXREaXJlY3QoZXhlYy0+Z2xvYmFsRGF0YSgpLCBwcm9wZXJ0
eU5hbWUsIG8sIGVudHJ5LT5hdHRyaWJ1dGVzKTsKICAgICAgICAgICAgICAgICAgICAgcmV0dXJu
IG87CiAgICAgICAgICAgICAgICAgfQpAQCAtNTU5LDcgKzU1OSw3IEBAIEpTVmFsdWUgSlNDYWxs
YmFja09iamVjdDxQYXJlbnQ+OjpzdGF0aWMKIH0KIAogdGVtcGxhdGUgPGNsYXNzIFBhcmVudD4K
LUpTVmFsdWUgSlNDYWxsYmFja09iamVjdDxQYXJlbnQ+OjpjYWxsYmFja0dldHRlcihFeGVjU3Rh
dGUqIGV4ZWMsIEpTVmFsdWUgc2xvdFBhcmVudCwgY29uc3QgSWRlbnRpZmllciYgcHJvcGVydHlO
YW1lKQorSlNWYWx1ZSBKU0NhbGxiYWNrT2JqZWN0PFBhcmVudD46OmNhbGxiYWNrR2V0dGVyKEV4
ZWNTdGF0ZSogZXhlYywgSlNWYWx1ZSBzbG90UGFyZW50LCBQcm9wZXJ0eU5hbWUgcHJvcGVydHlO
YW1lKQogewogICAgIEpTQ2FsbGJhY2tPYmplY3QqIHRoaXNPYmogPSBhc0NhbGxiYWNrT2JqZWN0
KHNsb3RQYXJlbnQpOwogICAgIApJbmRleDogU291cmNlL0phdmFTY3JpcHRDb3JlL0FQSS9KU09i
amVjdFJlZi5jcHAKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL0phdmFTY3JpcHRDb3JlL0FQSS9KU09i
amVjdFJlZi5jcHAJKHJldmlzaW9uIDExNjY2NykKKysrIFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9B
UEkvSlNPYmplY3RSZWYuY3BwCSh3b3JraW5nIGNvcHkpCkBAIC05MiwxMCArOTIsNyBAQCBKU09i
amVjdFJlZiBKU09iamVjdE1ha2VGdW5jdGlvbldpdGhDYWxsCiB7CiAgICAgRXhlY1N0YXRlKiBl
eGVjID0gdG9KUyhjdHgpOwogICAgIEFQSUVudHJ5U2hpbSBlbnRyeVNoaW0oZXhlYyk7Ci0KLSAg
ICBJZGVudGlmaWVyIG5hbWVJRCA9IG5hbWUgPyBuYW1lLT5pZGVudGlmaWVyKCZleGVjLT5nbG9i
YWxEYXRhKCkpIDogSWRlbnRpZmllcihleGVjLCAiYW5vbnltb3VzIik7Ci0gICAgCi0gICAgcmV0
dXJuIHRvUmVmKEpTQ2FsbGJhY2tGdW5jdGlvbjo6Y3JlYXRlKGV4ZWMsIGV4ZWMtPmxleGljYWxH
bG9iYWxPYmplY3QoKSwgY2FsbEFzRnVuY3Rpb24sIG5hbWVJRCkpOworICAgIHJldHVybiB0b1Jl
ZihKU0NhbGxiYWNrRnVuY3Rpb246OmNyZWF0ZShleGVjLCBleGVjLT5sZXhpY2FsR2xvYmFsT2Jq
ZWN0KCksIGNhbGxBc0Z1bmN0aW9uLCBuYW1lID8gbmFtZS0+dXN0cmluZygpIDogImFub255bW91
cyIpKTsKIH0KIAogSlNPYmplY3RSZWYgSlNPYmplY3RNYWtlQ29uc3RydWN0b3IoSlNDb250ZXh0
UmVmIGN0eCwgSlNDbGFzc1JlZiBqc0NsYXNzLCBKU09iamVjdENhbGxBc0NvbnN0cnVjdG9yQ2Fs
bGJhY2sgY2FsbEFzQ29uc3RydWN0b3IpCkluZGV4OiBTb3VyY2UvSmF2YVNjcmlwdENvcmUvSmF2
YVNjcmlwdENvcmUudmNwcm9qL0phdmFTY3JpcHRDb3JlL0phdmFTY3JpcHRDb3JlLmRlZgo9PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09Ci0tLSBTb3VyY2UvSmF2YVNjcmlwdENvcmUvSmF2YVNjcmlwdENvcmUudmNwcm9qL0ph
dmFTY3JpcHRDb3JlL0phdmFTY3JpcHRDb3JlLmRlZgkocmV2aXNpb24gMTE2NjY3KQorKysgU291
cmNlL0phdmFTY3JpcHRDb3JlL0phdmFTY3JpcHRDb3JlLnZjcHJvai9KYXZhU2NyaXB0Q29yZS9K
YXZhU2NyaXB0Q29yZS5kZWYJKHdvcmtpbmcgY29weSkKQEAgLTU2LDkgKzU2LDkgQEAgRVhQT1JU
UwogICAgID9hZGRCeXRlc0BTSEExQFdURkBAUUFFWFBCRUlAWgogICAgID9hZGRDdXJyZW50VGhy
ZWFkQE1hY2hpbmVUaHJlYWRzQEpTQ0BAUUFFWFhaCiAgICAgP2FkZEZpbmFsaXplckBIZWFwQEpT
Q0BAUUFFWFBBVkpTQ2VsbEAyQFA2QVgwQFpAWgotICAgID9hZGRQcm9wZXJ0eVRyYW5zaXRpb25A
U3RydWN0dXJlQEpTQ0BAU0FQQVYxMkBBQVZKU0dsb2JhbERhdGFAMkBQQVYxMkBBQlZJZGVudGlm
aWVyQDJASVBBVkpTQ2VsbEAyQEFBSUBaCi0gICAgP2FkZFByb3BlcnR5VHJhbnNpdGlvblRvRXhp
c3RpbmdTdHJ1Y3R1cmVAU3RydWN0dXJlQEpTQ0BAU0FQQVYxMkBQQVYxMkBBQlZJZGVudGlmaWVy
QDJASVBBVkpTQ2VsbEAyQEFBSUBaCi0gICAgP2FkZFByb3BlcnR5V2l0aG91dFRyYW5zaXRpb25A
U3RydWN0dXJlQEpTQ0BAUUFFSUFBVkpTR2xvYmFsRGF0YUAyQEFCVklkZW50aWZpZXJAMkBJUEFW
SlNDZWxsQDJAQFoKKyAgICA/YWRkUHJvcGVydHlUcmFuc2l0aW9uQFN0cnVjdHVyZUBKU0NAQFNB
UEFWMTJAQUFWSlNHbG9iYWxEYXRhQDJAUEFWMTJAVlByb3BlcnR5TmFtZUAyQElQQVZKU0NlbGxA
MkBBQUlAWgorICAgID9hZGRQcm9wZXJ0eVRyYW5zaXRpb25Ub0V4aXN0aW5nU3RydWN0dXJlQFN0
cnVjdHVyZUBKU0NAQFNBUEFWMTJAUEFWMTJAVlByb3BlcnR5TmFtZUAyQElQQVZKU0NlbGxAMkBB
QUlAWgorICAgID9hZGRQcm9wZXJ0eVdpdGhvdXRUcmFuc2l0aW9uQFN0cnVjdHVyZUBKU0NAQFFB
RUlBQVZKU0dsb2JhbERhdGFAMkBWUHJvcGVydHlOYW1lQDJASVBBVkpTQ2VsbEAyQEBaCiAgICAg
P2FkZFNsb3dDYXNlQElkZW50aWZpZXJASlNDQEBDQT9BVj8kUGFzc1JlZlB0ckBWU3RyaW5nSW1w
bEBXVEZAQEBXVEZAQFBBVkV4ZWNTdGF0ZUAyQFBBVlN0cmluZ0ltcGxANEBAWgogICAgID9hZGRT
bG93Q2FzZUBJZGVudGlmaWVyQEpTQ0BAQ0E/QVY/JFBhc3NSZWZQdHJAVlN0cmluZ0ltcGxAV1RG
QEBAV1RGQEBQQVZKU0dsb2JhbERhdGFAMkBQQVZTdHJpbmdJbXBsQDRAQFoKICAgICA/YWRkU3Rh
dGljR2xvYmFsc0BKU0dsb2JhbE9iamVjdEBKU0NAQElBRVhQQVVHbG9iYWxQcm9wZXJ0eUluZm9A
MTJASEBaCkBAIC0xMDIsNyArMTAyLDcgQEAgRVhQT1JUUwogICAgID9jb252ZXJ0TGF0aW4xVG9V
VEY4QFVuaWNvZGVAV1RGQEBZQT9BVzRDb252ZXJzaW9uUmVzdWx0QDEyQFBBUEJFUEJFUEFQQURQ
QURAWgogICAgID9jb252ZXJ0VVRGMTZUb1VURjhAVW5pY29kZUBXVEZAQFlBP0FXNENvbnZlcnNp
b25SZXN1bHRAMTJAUEFQQl9XUEJfV1BBUEFEUEFEX05AWgogICAgID9jb252ZXJ0VVRGOFRvVVRG
MTZAVW5pY29kZUBXVEZAQFlBP0FXNENvbnZlcnNpb25SZXN1bHRAMTJAUEFQQkRQQkRQQVBBX1dQ
QV9XX05AWgotICAgID9jcmVhdGVASlNGdW5jdGlvbkBKU0NAQFNBUEFWMTJAUEFWRXhlY1N0YXRl
QDJAUEFWSlNHbG9iYWxPYmplY3RAMkBIQUJWSWRlbnRpZmllckAyQFA2SV9KMEBaVzRJbnRyaW5z
aWNAMkAzQFoKKyAgICA/Y3JlYXRlQEpTRnVuY3Rpb25ASlNDQEBTQVBBVjEyQFBBVkV4ZWNTdGF0
ZUAyQFBBVkpTR2xvYmFsT2JqZWN0QDJASEFCVlVTdHJpbmdAMkBQNklfSjBAWlc0SW50cmluc2lj
QDJAM0BaCiAgICAgP2NyZWF0ZUBKU0dsb2JhbERhdGFASlNDQEBTQT9BVj8kUGFzc1JlZlB0ckBW
SlNHbG9iYWxEYXRhQEpTQ0BAQFdURkBAVzRUaHJlYWRTdGFja1R5cGVAMkBXNEhlYXBTaXplQDJA
QFoKICAgICA/Y3JlYXRlQE9wYXF1ZUpTU3RyaW5nQEBTQT9BVj8kUGFzc1JlZlB0ckBVT3BhcXVl
SlNTdHJpbmdAQEBXVEZAQEFCVlVTdHJpbmdASlNDQEBAWgogICAgID9jcmVhdGVAUmVnRXhwQEpT
Q0BAU0FQQVYxMkBBQVZKU0dsb2JhbERhdGFAMkBBQlZVU3RyaW5nQDJAVzRSZWdFeHBGbGFnc0Ay
QEBaCkBAIC0xMTAsNiArMTEwLDcgQEAgRVhQT1JUUwogICAgID9jcmVhdGVFcnJvckBKU0NAQFlB
UEFWSlNPYmplY3RAMUBQQVZFeGVjU3RhdGVAMUBBQlZVU3RyaW5nQDFAQFoKICAgICA/Y3JlYXRl
SW50ZXJydXB0ZWRFeGVjdXRpb25FeGNlcHRpb25ASlNDQEBZQVBBVkpTT2JqZWN0QDFAUEFWSlNH
bG9iYWxEYXRhQDFAQFoKICAgICA/Y3JlYXRlTGVha2VkQEpTR2xvYmFsRGF0YUBKU0NAQFNBP0FW
PyRQYXNzUmVmUHRyQFZKU0dsb2JhbERhdGFASlNDQEBAV1RGQEBXNFRocmVhZFN0YWNrVHlwZUAy
QFc0SGVhcFNpemVAMkBAWgorICAgID9jcmVhdGVOb3RFbm91Z2hBcmd1bWVudHNFcnJvckBKU0NA
QFlBUEFWSlNPYmplY3RAMUBQQVZFeGVjU3RhdGVAMUBAWgogICAgID9jcmVhdGVSYW5nZUVycm9y
QEpTQ0BAWUFQQVZKU09iamVjdEAxQFBBVkV4ZWNTdGF0ZUAxQEFCVlVTdHJpbmdAMUBAWgogICAg
ID9jcmVhdGVSZWZlcmVuY2VFcnJvckBKU0NAQFlBUEFWSlNPYmplY3RAMUBQQVZFeGVjU3RhdGVA
MUBBQlZVU3RyaW5nQDFAQFoKICAgICA/Y3JlYXRlU2luZ2xlQ2hhcmFjdGVyU3RyaW5nQFNtYWxs
U3RyaW5nc0BKU0NAQEFBRVhQQVZKU0dsb2JhbERhdGFAMkBFQFoKQEAgLTEyMCw3ICsxMjEsNiBA
QCBFWFBPUlRTCiAgICAgP2NyZWF0ZVRocmVhZEBXVEZAQFlBSVA2QVBBWFBBWEBaMFBCREBaCiAg
ICAgP2NyZWF0ZVRocmVhZEBXVEZAQFlBSVA2QVhQQVhAWjBQQkRAWgogICAgID9jcmVhdGVUeXBl
RXJyb3JASlNDQEBZQVBBVkpTT2JqZWN0QDFAUEFWRXhlY1N0YXRlQDFAQUJWVVN0cmluZ0AxQEBa
Ci0gICAgP2NyZWF0ZU5vdEVub3VnaEFyZ3VtZW50c0Vycm9yQEpTQ0BAWUFQQVZKU09iamVjdEAx
QFBBVkV4ZWNTdGF0ZUAxQEBaCiAgICAgP2NyeXB0b2dyYXBoaWNhbGx5UmFuZG9tTnVtYmVyQFdU
RkBAWUFJWFoKICAgICA/Y3J5cHRvZ3JhcGhpY2FsbHlSYW5kb21WYWx1ZXNAV1RGQEBZQVhQQVhJ
QFoKICAgICA/Y3VycmVudFRocmVhZEBXVEZAQFlBSVhaCkBAIC0xMzMsMTkgKzEzMywxOSBAQCBF
WFBPUlRTCiAgICAgP2RheUluWWVhckBXVEZAQFlBSE5IQFoKICAgICA/ZGVjcmVtZW50QFJlZkNv
dW50ZWRMZWFrQ291bnRlckBXVEZAQFFBRVhYWgogICAgID9kZWZhdWx0VmFsdWVASlNPYmplY3RA
SlNDQEBTQT9BVkpTVmFsdWVAMkBQQlYxMkBQQVZFeGVjU3RhdGVAMkBXNFByZWZlcnJlZFByaW1p
dGl2ZVR5cGVAMkBAWgotICAgID9kZWZpbmVPd25Qcm9wZXJ0eUBKU0dsb2JhbE9iamVjdEBKU0NA
QFNBX05QQVZKU09iamVjdEAyQFBBVkV4ZWNTdGF0ZUAyQEFCVklkZW50aWZpZXJAMkBBQVZQcm9w
ZXJ0eURlc2NyaXB0b3JAMkBfTkBaCi0gICAgP2RlZmluZU93blByb3BlcnR5QEpTT2JqZWN0QEpT
Q0BAU0FfTlBBVjEyQFBBVkV4ZWNTdGF0ZUAyQEFCVklkZW50aWZpZXJAMkBBQVZQcm9wZXJ0eURl
c2NyaXB0b3JAMkBfTkBaCisgICAgP2RlZmluZU93blByb3BlcnR5QEpTR2xvYmFsT2JqZWN0QEpT
Q0BAU0FfTlBBVkpTT2JqZWN0QDJAUEFWRXhlY1N0YXRlQDJAVlByb3BlcnR5TmFtZUAyQEFBVlBy
b3BlcnR5RGVzY3JpcHRvckAyQF9OQFoKKyAgICA/ZGVmaW5lT3duUHJvcGVydHlASlNPYmplY3RA
SlNDQEBTQV9OUEFWMTJAUEFWRXhlY1N0YXRlQDJAVlByb3BlcnR5TmFtZUAyQEFBVlByb3BlcnR5
RGVzY3JpcHRvckAyQF9OQFoKICAgICA/ZGVsZXRlT3duZWRQdHJAV1RGQEBZQVhQQVVIQklUTUFQ
X19AQEBaCiAgICAgP2RlbGV0ZU93bmVkUHRyQFdURkBAWUFYUEFVSEJSVVNIX19AQEBaCiAgICAg
P2RlbGV0ZU93bmVkUHRyQFdURkBAWUFYUEFVSERDX19AQEBaCiAgICAgP2RlbGV0ZU93bmVkUHRy
QFdURkBAWUFYUEFVSEZPTlRfX0BAQFoKICAgICA/ZGVsZXRlT3duZWRQdHJAV1RGQEBZQVhQQVVI
UkdOX19AQEBaCi0gICAgP2RlbGV0ZVByb3BlcnR5QEpTT2JqZWN0QEpTQ0BAU0FfTlBBVkpTQ2Vs
bEAyQFBBVkV4ZWNTdGF0ZUAyQEFCVklkZW50aWZpZXJAMkBAWgotICAgID9kZWxldGVQcm9wZXJ0
eUBKU1ZhcmlhYmxlT2JqZWN0QEpTQ0BAU0FfTlBBVkpTQ2VsbEAyQFBBVkV4ZWNTdGF0ZUAyQEFC
VklkZW50aWZpZXJAMkBAWgorICAgID9kZWxldGVQcm9wZXJ0eUBKU09iamVjdEBKU0NAQFNBX05Q
QVZKU0NlbGxAMkBQQVZFeGVjU3RhdGVAMkBWUHJvcGVydHlOYW1lQDJAQFoKKyAgICA/ZGVsZXRl
UHJvcGVydHlASlNWYXJpYWJsZU9iamVjdEBKU0NAQFNBX05QQVZKU0NlbGxAMkBQQVZFeGVjU3Rh
dGVAMkBWUHJvcGVydHlOYW1lQDJAQFoKICAgICA/ZGVsZXRlUHJvcGVydHlCeUluZGV4QEpTT2Jq
ZWN0QEpTQ0BAU0FfTlBBVkpTQ2VsbEAyQFBBVkV4ZWNTdGF0ZUAyQElAWgogICAgID9kZWxldGVU
YWJsZUBIYXNoVGFibGVASlNDQEBRQkVYWFoKLSAgICA/ZGVzcGVjaWZ5RGljdGlvbmFyeUZ1bmN0
aW9uQFN0cnVjdHVyZUBKU0NAQFFBRVhBQVZKU0dsb2JhbERhdGFAMkBBQlZJZGVudGlmaWVyQDJA
QFoKLSAgICA/ZGVzcGVjaWZ5RnVuY3Rpb25UcmFuc2l0aW9uQFN0cnVjdHVyZUBKU0NAQFNBUEFW
MTJAQUFWSlNHbG9iYWxEYXRhQDJAUEFWMTJAQUJWSWRlbnRpZmllckAyQEBaCisgICAgP2Rlc3Bl
Y2lmeURpY3Rpb25hcnlGdW5jdGlvbkBTdHJ1Y3R1cmVASlNDQEBRQUVYQUFWSlNHbG9iYWxEYXRh
QDJAVlByb3BlcnR5TmFtZUAyQEBaCisgICAgP2Rlc3BlY2lmeUZ1bmN0aW9uVHJhbnNpdGlvbkBT
dHJ1Y3R1cmVASlNDQEBTQVBBVjEyQEFBVkpTR2xvYmFsRGF0YUAyQFBBVjEyQFZQcm9wZXJ0eU5h
bWVAMkBAWgogICAgID9kZXN0cm95QEpTQ2VsbEBKU0NAQEtBWFBBVjEyQEBaCiAgICAgP2Rlc3Ry
b3lASlNHbG9iYWxPYmplY3RASlNDQEBTQVhQQVZKU0NlbGxAMkBAWgogICAgID9kZXN0cm95QE91
dE9mTGluZUJpdHNAQml0VmVjdG9yQFdURkBAU0FYUEFWMTIzQEBaCkBAIC0xNzcsNyArMTc3LDcg
QEAgRVhQT1JUUwogICAgID9maW5hbGl6ZUBXZWFrSGFuZGxlT3duZXJASlNDQEBVQUVYVj8kSGFu
ZGxlQFc0VW5rbm93bkBKU0NAQEAyQFBBWEBaCiAgICAgP2ZpbmRBbGxvY2F0b3JAV2Vha1NldEBK
U0NAQEFBRVBBVUZyZWVDZWxsQFdlYWtCbG9ja0AyQFhaCiAgICAgP2ZpbmlzaENyZWF0aW9uQERh
dGVJbnN0YW5jZUBKU0NAQElBRVhBQVZKU0dsb2JhbERhdGFAMkBOQFoKLSAgICA/ZmluaXNoQ3Jl
YXRpb25ASW50ZXJuYWxGdW5jdGlvbkBKU0NAQElBRVhBQVZKU0dsb2JhbERhdGFAMkBBQlZJZGVu
dGlmaWVyQDJAQFoKKyAgICA/ZmluaXNoQ3JlYXRpb25ASW50ZXJuYWxGdW5jdGlvbkBKU0NAQElB
RVhBQVZKU0dsb2JhbERhdGFAMkBBQlZVU3RyaW5nQDJAQFoKICAgICA/ZmluaXNoQ3JlYXRpb25A
SlNBcnJheUBKU0NAQElBRVhBQVZKU0dsb2JhbERhdGFAMkBJQFoKICAgICA/ZmluaXNoQ3JlYXRp
b25AUmVnRXhwT2JqZWN0QEpTQ0BASUFFWFBBVkpTR2xvYmFsT2JqZWN0QDJAQFoKICAgICA/Zmlu
aXNoQ3JlYXRpb25AU3RyaW5nT2JqZWN0QEpTQ0BASUFFWEFBVkpTR2xvYmFsRGF0YUAyQFBBVkpT
U3RyaW5nQDJAQFoKQEAgLTE4NiwyMSArMTg2LDE5IEBAIEVYUE9SVFMKICAgICA/ZnJvbUBJZGVu
dGlmaWVyQEpTQ0BAU0E/QVYxMkBQQVZFeGVjU3RhdGVAMkBJQFoKICAgICA/ZnVuY3Rpb25HZXR0
ZXJAUHJvcGVydHlTbG90QEpTQ0BAQUJFP0FWSlNWYWx1ZUAyQFBBVkV4ZWNTdGF0ZUAyQEBaCiAg
ICAgP2Z1bmN0aW9uTmFtZUBEZWJ1Z2dlckNhbGxGcmFtZUBKU0NAQFFCRVBCVlVTdHJpbmdAMkBY
WgotICAgID9nZXRAU3RydWN0dXJlQEpTQ0BAUUFFSUFBVkpTR2xvYmFsRGF0YUAyQEFCVklkZW50
aWZpZXJAMkBBQUlBQVBBVkpTQ2VsbEAyQEBaCi0gICAgP2dldEBTdHJ1Y3R1cmVASlNDQEBRQUVJ
QUFWSlNHbG9iYWxEYXRhQDJAUEFWU3RyaW5nSW1wbEBXVEZAQEFBSUFBUEFWSlNDZWxsQDJAQFoK
KyAgICA/Z2V0QFN0cnVjdHVyZUBKU0NAQFFBRUlBQVZKU0dsb2JhbERhdGFAMkBWUHJvcGVydHlO
YW1lQDJAQUFJQUFQQVZKU0NlbGxAMkBAWgogICAgID9nZXRDYWxjdWxhdGVkRGlzcGxheU5hbWVA
SlNDQEBZQT9BVlVTdHJpbmdAMUBQQVZFeGVjU3RhdGVAMUBQQVZKU09iamVjdEAxQEBaCiAgICAg
P2dldENhbGxEYXRhQEpTQ2VsbEBKU0NAQFNBP0FXNENhbGxUeXBlQDJAUEFWMTJAQUFUQ2FsbERh
dGFAMkBAWgogICAgID9nZXRDb25zdHJ1Y3REYXRhQEpTQ2VsbEBKU0NAQFNBP0FXNENvbnN0cnVj
dFR5cGVAMkBQQVYxMkBBQVRDb25zdHJ1Y3REYXRhQDJAQFoKICAgICA/Z2V0Q3VycmVudExvY2Fs
VGltZUBXVEZAQFlBWFBBVXRtQEBAWgogICAgID9nZXRPYmplY3RASlNDZWxsQEpTQ0BAUUFFUEFW
SlNPYmplY3RAMkBYWgotICAgID9nZXRPd25Qcm9wZXJ0eURlc2NyaXB0b3JASlNHbG9iYWxPYmpl
Y3RASlNDQEBTQV9OUEFWSlNPYmplY3RAMkBQQVZFeGVjU3RhdGVAMkBBQlZJZGVudGlmaWVyQDJA
QUFWUHJvcGVydHlEZXNjcmlwdG9yQDJAQFoKLSAgICA/Z2V0T3duUHJvcGVydHlEZXNjcmlwdG9y
QEpTT2JqZWN0QEpTQ0BAU0FfTlBBVjEyQFBBVkV4ZWNTdGF0ZUAyQEFCVklkZW50aWZpZXJAMkBB
QVZQcm9wZXJ0eURlc2NyaXB0b3JAMkBAWgorICAgID9nZXRPd25Qcm9wZXJ0eURlc2NyaXB0b3JA
SlNHbG9iYWxPYmplY3RASlNDQEBTQV9OUEFWSlNPYmplY3RAMkBQQVZFeGVjU3RhdGVAMkBWUHJv
cGVydHlOYW1lQDJAQUFWUHJvcGVydHlEZXNjcmlwdG9yQDJAQFoKKyAgICA/Z2V0T3duUHJvcGVy
dHlEZXNjcmlwdG9yQEpTT2JqZWN0QEpTQ0BAU0FfTlBBVjEyQFBBVkV4ZWNTdGF0ZUAyQFZQcm9w
ZXJ0eU5hbWVAMkBBQVZQcm9wZXJ0eURlc2NyaXB0b3JAMkBAWgogICAgID9nZXRPd25Qcm9wZXJ0
eU5hbWVzQEpTT2JqZWN0QEpTQ0BAU0FYUEFWMTJAUEFWRXhlY1N0YXRlQDJAQUFWUHJvcGVydHlO
YW1lQXJyYXlAMkBXNEVudW1lcmF0aW9uTW9kZUAyQEBaCiAgICAgP2dldE93blByb3BlcnR5TmFt
ZXNASlNWYXJpYWJsZU9iamVjdEBKU0NAQFNBWFBBVkpTT2JqZWN0QDJAUEFWRXhlY1N0YXRlQDJA
QUFWUHJvcGVydHlOYW1lQXJyYXlAMkBXNEVudW1lcmF0aW9uTW9kZUAyQEBaCi0gICAgP2dldE93
blByb3BlcnR5U2xvdEBKU0dsb2JhbE9iamVjdEBKU0NAQFNBX05QQVZKU0NlbGxAMkBQQVZFeGVj
U3RhdGVAMkBBQlZJZGVudGlmaWVyQDJAQUFWUHJvcGVydHlTbG90QDJAQFoKKyAgICA/Z2V0T3du
UHJvcGVydHlTbG90QEpTR2xvYmFsT2JqZWN0QEpTQ0BAU0FfTlBBVkpTQ2VsbEAyQFBBVkV4ZWNT
dGF0ZUAyQFZQcm9wZXJ0eU5hbWVAMkBBQVZQcm9wZXJ0eVNsb3RAMkBAWgogICAgID9nZXRPd25Q
cm9wZXJ0eVNsb3RCeUluZGV4QEpTQXJyYXlASlNDQEBTQV9OUEFWSlNDZWxsQDJAUEFWRXhlY1N0
YXRlQDJASUFBVlByb3BlcnR5U2xvdEAyQEBaCiAgICAgP2dldE93blByb3BlcnR5U2xvdEJ5SW5k
ZXhASlNPYmplY3RASlNDQEBTQV9OUEFWSlNDZWxsQDJAUEFWRXhlY1N0YXRlQDJASUFBVlByb3Bl
cnR5U2xvdEAyQEBaCi0gICAgP2dldFByb3BlcnR5RGVzY3JpcHRvckBKU09iamVjdEBKU0NAQFFB
RV9OUEFWRXhlY1N0YXRlQDJAQUJWSWRlbnRpZmllckAyQEFBVlByb3BlcnR5RGVzY3JpcHRvckAy
QEBaCiAgICAgP2dldFByb3BlcnR5TmFtZXNASlNPYmplY3RASlNDQEBTQVhQQVYxMkBQQVZFeGVj
U3RhdGVAMkBBQVZQcm9wZXJ0eU5hbWVBcnJheUAyQFc0RW51bWVyYXRpb25Nb2RlQDJAQFoKICAg
ICA/Z2V0U2xpY2VAQXJnTGlzdEBKU0NAQFFCRVhIQUFWMTJAQFoKICAgICA/Z2V0U3RhY2tUcmFj
ZUBJbnRlcnByZXRlckBKU0NAQFNBWFBBVkpTR2xvYmFsRGF0YUAyQEFBVj8kVmVjdG9yQFVTdGFj
a0ZyYW1lQEpTQ0BAJDBBQEBXVEZAQEBaCkBAIC0yMTEsOCArMjA5LDggQEAgRVhQT1JUUwogICAg
ID9nbG9iYWxPYmplY3RDb3VudEBIZWFwQEpTQ0BAUUFFSVhaCiAgICAgP2dyb3dASGFuZGxlU2V0
QEpTQ0BAQUFFWFhaCiAgICAgP2hhc0luc3RhbmNlQEpTT2JqZWN0QEpTQ0BAU0FfTlBBVjEyQFBB
VkV4ZWNTdGF0ZUAyQFZKU1ZhbHVlQDJAMkBaCi0gICAgP2hhc1Byb3BlcnR5QEpTT2JqZWN0QEpT
Q0BAUUJFX05QQVZFeGVjU3RhdGVAMkBBQlZJZGVudGlmaWVyQDJAQFoKICAgICA/aGFzUHJvcGVy
dHlASlNPYmplY3RASlNDQEBRQkVfTlBBVkV4ZWNTdGF0ZUAyQElAWgorICAgID9oYXNQcm9wZXJ0
eUBKU09iamVjdEBKU0NAQFFCRV9OUEFWRXhlY1N0YXRlQDJAVlByb3BlcnR5TmFtZUAyQEBaCiAg
ICAgP2hhc2hTbG93Q2FzZUBTdHJpbmdJbXBsQFdURkBAQUJFSVhaCiAgICAgP2hlYXBASGVhcEBK
U0NAQFNBUEFWMTJAVkpTVmFsdWVAMkBAWgogICAgID9pbmNyZW1lbnRAUmVmQ291bnRlZExlYWtD
b3VudGVyQFdURkBAUUFFWFhaCkBAIC0yNjYsMTIgKzI2NCwxMiBAQCBFWFBPUlRTCiAgICAgP3By
b3RlY3RlZEdsb2JhbE9iamVjdENvdW50QEhlYXBASlNDQEBRQUVJWFoKICAgICA/cHJvdGVjdGVk
T2JqZWN0Q291bnRASGVhcEBKU0NAQFFBRUlYWgogICAgID9wcm90ZWN0ZWRPYmplY3RUeXBlQ291
bnRzQEhlYXBASlNDQEBRQUU/QVY/JFBhc3NPd25QdHJAVj8kSGFzaENvdW50ZWRTZXRAUEJEVT8k
UHRySGFzaEBQQkRAV1RGQEBVPyRIYXNoVHJhaXRzQFBCREAyQEBXVEZAQEBXVEZAQFhaCi0gICAg
P3B1dEBKU0dsb2JhbE9iamVjdEBKU0NAQFNBWFBBVkpTQ2VsbEAyQFBBVkV4ZWNTdGF0ZUAyQEFC
VklkZW50aWZpZXJAMkBWSlNWYWx1ZUAyQEFBVlB1dFByb3BlcnR5U2xvdEAyQEBaCi0gICAgP3B1
dEBKU09iamVjdEBKU0NAQFNBWFBBVkpTQ2VsbEAyQFBBVkV4ZWNTdGF0ZUAyQEFCVklkZW50aWZp
ZXJAMkBWSlNWYWx1ZUAyQEFBVlB1dFByb3BlcnR5U2xvdEAyQEBaCisgICAgP3B1dEBKU0dsb2Jh
bE9iamVjdEBKU0NAQFNBWFBBVkpTQ2VsbEAyQFBBVkV4ZWNTdGF0ZUAyQFZQcm9wZXJ0eU5hbWVA
MkBWSlNWYWx1ZUAyQEFBVlB1dFByb3BlcnR5U2xvdEAyQEBaCisgICAgP3B1dEBKU09iamVjdEBK
U0NAQFNBWFBBVkpTQ2VsbEAyQFBBVkV4ZWNTdGF0ZUAyQFZQcm9wZXJ0eU5hbWVAMkBWSlNWYWx1
ZUAyQEFBVlB1dFByb3BlcnR5U2xvdEAyQEBaCiAgICAgP3B1dEJ5SW5kZXhASlNPYmplY3RASlND
QEBTQVhQQVZKU0NlbGxAMkBQQVZFeGVjU3RhdGVAMkBJVkpTVmFsdWVAMkBfTkBaCiAgICAgP3B1
dERpcmVjdEluZGV4QmV5b25kVmVjdG9yTGVuZ3RoQEpTQXJyYXlASlNDQEBBQUVfTlBBVkV4ZWNT
dGF0ZUAyQElWSlNWYWx1ZUAyQF9OQFoKLSAgICA/cHV0RGlyZWN0VmlydHVhbEBKU0dsb2JhbE9i
amVjdEBKU0NAQFNBWFBBVkpTT2JqZWN0QDJAUEFWRXhlY1N0YXRlQDJAQUJWSWRlbnRpZmllckAy
QFZKU1ZhbHVlQDJASUBaCi0gICAgP3B1dERpcmVjdFZpcnR1YWxASlNPYmplY3RASlNDQEBTQVhQ
QVYxMkBQQVZFeGVjU3RhdGVAMkBBQlZJZGVudGlmaWVyQDJAVkpTVmFsdWVAMkBJQFoKKyAgICA/
cHV0RGlyZWN0VmlydHVhbEBKU0dsb2JhbE9iamVjdEBKU0NAQFNBWFBBVkpTT2JqZWN0QDJAUEFW
RXhlY1N0YXRlQDJAVlByb3BlcnR5TmFtZUAyQFZKU1ZhbHVlQDJASUBaCisgICAgP3B1dERpcmVj
dFZpcnR1YWxASlNPYmplY3RASlNDQEBTQVhQQVYxMkBQQVZFeGVjU3RhdGVAMkBWUHJvcGVydHlO
YW1lQDJAVkpTVmFsdWVAMkBJQFoKICAgICA/cmFuZG9tTnVtYmVyQFdURkBAWUFOWFoKICAgICA/
cmVjb21waWxlQWxsSlNGdW5jdGlvbnNARGVidWdnZXJASlNDQEBRQUVYUEFWSlNHbG9iYWxEYXRh
QDJAQFoKICAgICA/cmVnRXhwRmxhZ3NASlNDQEBZQT9BVzRSZWdFeHBGbGFnc0AxQEFCVlVTdHJp
bmdAMUBAWgpAQCAtMzA0LDcgKzMwMiw3IEBAIEVYUE9SVFMKICAgICA/c2V0U2V0dGVyQFByb3Bl
cnR5RGVzY3JpcHRvckBKU0NAQFFBRVhWSlNWYWx1ZUAyQEBaCiAgICAgP3NldFVuZGVmaW5lZEBQ
cm9wZXJ0eURlc2NyaXB0b3JASlNDQEBRQUVYWFoKICAgICA/c2V0VW53cmFwcGVkT2JqZWN0QEpT
R2xvYmFsVGhpc0BKU0NAQElBRVhBQVZKU0dsb2JhbERhdGFAMkBQQVZKU0dsb2JhbE9iamVjdEAy
QEBaCi0gICAgP3NldFVwU3RhdGljRnVuY3Rpb25TbG90QEpTQ0BAWUFfTlBBVkV4ZWNTdGF0ZUAx
QFBCVkhhc2hFbnRyeUAxQFBBVkpTT2JqZWN0QDFAQUJWSWRlbnRpZmllckAxQEFBVlByb3BlcnR5
U2xvdEAxQEBaCisgICAgP3NldFVwU3RhdGljRnVuY3Rpb25TbG90QEpTQ0BAWUFfTlBBVkV4ZWNT
dGF0ZUAxQFBCVkhhc2hFbnRyeUAxQFBBVkpTT2JqZWN0QDFAVlByb3BlcnR5TmFtZUAxQEFBVlBy
b3BlcnR5U2xvdEAxQEBaCiAgICAgP3NldFdyaXRhYmxlQFByb3BlcnR5RGVzY3JpcHRvckBKU0NA
QFFBRVhfTkBaCiAgICAgP3NldHRlckBQcm9wZXJ0eURlc2NyaXB0b3JASlNDQEBRQkU/QVZKU1Zh
bHVlQDJAWFoKICAgICA/c2hyaW5rVG9GaXRAU3RyaW5nQnVpbGRlckBXVEZAQFFBRVhYWgpAQCAt
MzIwLDcgKzMxOCw2IEBAIEVYUE9SVFMKICAgICA/c3RvcFByb2ZpbGluZ0BQcm9maWxlckBKU0NA
QFFBRT9BVj8kUGFzc1JlZlB0ckBWUHJvZmlsZUBKU0NAQEBXVEZAQFBBVkV4ZWNTdGF0ZUAyQEFC
VlVTdHJpbmdAMkBAWgogICAgID9zdG9wU2FtcGxpbmdASlNHbG9iYWxEYXRhQEpTQ0BAUUFFWFha
CiAgICAgP3N1YnN0cmluZ1NoYXJpbmdJbXBsQFVTdHJpbmdASlNDQEBRQkU/QVYxMkBJSUBaCi0g
ICAgP3N5bWJvbFRhYmxlR2V0QEpTVmFyaWFibGVPYmplY3RASlNDQEBJQUVfTkFCVklkZW50aWZp
ZXJAMkBBQVZQcm9wZXJ0eURlc2NyaXB0b3JAMkBAWgogICAgID9zeW50aGVzaXplUHJvdG90eXBl
QEpTVmFsdWVASlNDQEBRQkVQQVZKU09iamVjdEAyQFBBVkV4ZWNTdGF0ZUAyQEBaCiAgICAgP3Ro
aXNPYmplY3RARGVidWdnZXJDYWxsRnJhbWVASlNDQEBRQkVQQVZKU09iamVjdEAyQFhaCiAgICAg
P3Rocm93RXJyb3JASlNDQEBZQT9BVkpTVmFsdWVAMUBQQVZFeGVjU3RhdGVAMUBWMjFAQFoKQEAg
LTM0Myw3ICszNDAsNiBAQCBFWFBPUlRTCiAgICAgP3RvU3RyaW5nU2xvd0Nhc2VASlNWYWx1ZUBK
U0NAQEFCRVBBVkpTU3RyaW5nQDJAUEFWRXhlY1N0YXRlQDJAQFoKICAgICA/dG9UaGlzT2JqZWN0
QEpTT2JqZWN0QEpTQ0BAU0FQQVYxMkBQQVZKU0NlbGxAMkBQQVZFeGVjU3RhdGVAMkBAWgogICAg
ID90b1RoaXNPYmplY3RTbG93Q2FzZUBKU1ZhbHVlQEpTQ0BAQUJFUEFWSlNPYmplY3RAMkBQQVZF
eGVjU3RhdGVAMkBAWgotICAgID90b1VJbnQzMkBJZGVudGlmaWVyQEpTQ0BAU0FJQUJWVVN0cmlu
Z0AyQEFBX05AWgogICAgID90cmFuc2ZlckBBcnJheUJ1ZmZlckBXVEZAQFFBRV9OQUFWQXJyYXlC
dWZmZXJDb250ZW50c0AyQEFBVj8kVmVjdG9yQFY/JFJlZlB0ckBWQXJyYXlCdWZmZXJWaWV3QFdU
RkBAQFdURkBAJDBBQEAyQEBaCiAgICAgP3RyeUZhc3RDYWxsb2NAV1RGQEBZQT9BVVRyeU1hbGxv
Y1JldHVyblZhbHVlQDFASUlAWgogICAgID90cnlGYXN0TWFsbG9jQFdURkBAWUE/QVVUcnlNYWxs
b2NSZXR1cm5WYWx1ZUAxQElAWgpJbmRleDogU291cmNlL0phdmFTY3JpcHRDb3JlL0phdmFTY3Jp
cHRDb3JlLnhjb2RlcHJvai9wcm9qZWN0LnBieHByb2oKPT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL0ph
dmFTY3JpcHRDb3JlL0phdmFTY3JpcHRDb3JlLnhjb2RlcHJvai9wcm9qZWN0LnBieHByb2oJKHJl
dmlzaW9uIDExNjY3MCkKKysrIFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9KYXZhU2NyaXB0Q29yZS54
Y29kZXByb2ovcHJvamVjdC5wYnhwcm9qCSh3b3JraW5nIGNvcHkpCkBAIC0zNjIsNiArMzYyLDcg
QEAKIAkJODYwNEY1MDUxNDNDRTFDMjAwQjI5NUY1IC8qIEpTR2xvYmFsVGhpcy5oIGluIEhlYWRl
cnMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gODYwNEY1MDMxNDNDRTFDMTAw
QjI5NUY1IC8qIEpTR2xvYmFsVGhpcy5oICovOyBzZXR0aW5ncyA9IHtBVFRSSUJVVEVTID0gKFBy
aXZhdGUsICk7IH07IH07CiAJCTg2MEJEODAxMTQ4RUE2RjIwMDExMkIyRiAvKiBJbnRyaW5zaWMu
aCBpbiBIZWFkZXJzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IDg2QkY2NDJB
MTQ4REIyQjUwMDRERTM2QSAvKiBJbnRyaW5zaWMuaCAqLzsgc2V0dGluZ3MgPSB7QVRUUklCVVRF
UyA9IChQcml2YXRlLCApOyB9OyB9OwogCQk4NjEyRTRDRDE1MjM4OUVDMDBDODM2QkUgLyogTWF0
Y2hSZXN1bHQuaCBpbiBIZWFkZXJzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9
IDg2MTJFNENCMTUyMjkxODQwMEM4MzZCRSAvKiBNYXRjaFJlc3VsdC5oICovOyBzZXR0aW5ncyA9
IHtBVFRSSUJVVEVTID0gKFByaXZhdGUsICk7IH07IH07CisJCTg2MTU4QUIzMTU1QzhCNDAwMEI0
NUM5QyAvKiBQcm9wZXJ0eU5hbWUuaCBpbiBIZWFkZXJzICovID0ge2lzYSA9IFBCWEJ1aWxkRmls
ZTsgZmlsZVJlZiA9IDg2MTU4QUIyMTU1QzhCM0YwMEI0NUM5QyAvKiBQcm9wZXJ0eU5hbWUuaCAq
Lzsgc2V0dGluZ3MgPSB7QVRUUklCVVRFUyA9IChQcml2YXRlLCApOyB9OyB9OwogCQk4NjNCMjNF
MDBGQzYxMTg5MDA3MDNBQTQgLyogTWFjcm9Bc3NlbWJsZXJDb2RlUmVmLmggaW4gSGVhZGVycyAq
LyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSA4NjNCMjNERjBGQzYwRTYyMDA3MDNB
QTQgLyogTWFjcm9Bc3NlbWJsZXJDb2RlUmVmLmggKi87IHNldHRpbmdzID0ge0FUVFJJQlVURVMg
PSAoUHJpdmF0ZSwgKTsgfTsgfTsKIAkJODYzQzZEOUMxNTIxMTExQTAwNTg1RTRFIC8qIFlhcnJD
YW5vbmljYWxpemVVQ1MyLmNwcCBpbiBTb3VyY2VzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsg
ZmlsZVJlZiA9IDg2M0M2RDk4MTUyMTExMTIwMDU4NUU0RSAvKiBZYXJyQ2Fub25pY2FsaXplVUNT
Mi5jcHAgKi87IH07CiAJCTg2NDJDNTEwMTUxQzA2QTkwMDQ2RDRFRiAvKiBSZWdFeHBDYWNoZWRS
ZXN1bHQuY3BwIGluIFNvdXJjZXMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0g
ODZGNzVFRkIxNTFDMDYyRjAwN0M5QkEzIC8qIFJlZ0V4cENhY2hlZFJlc3VsdC5jcHAgKi87IH07
CkBAIC0xMDIwLDYgKzEwMjEsNyBAQAogCQk4NjA0RjRGMjE0M0E2QzQ0MDBCMjk1RjUgLyogQ2hh
bmdlTG9nICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGxhc3RLbm93bkZpbGVUeXBlID0g
dGV4dDsgcGF0aCA9IENoYW5nZUxvZzsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKIAkJODYw
NEY1MDMxNDNDRTFDMTAwQjI5NUY1IC8qIEpTR2xvYmFsVGhpcy5oICovID0ge2lzYSA9IFBCWEZp
bGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNl
Y29kZS5jLmg7IHBhdGggPSBKU0dsb2JhbFRoaXMuaDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+Ijsg
fTsKIAkJODYxMkU0Q0IxNTIyOTE4NDAwQzgzNkJFIC8qIE1hdGNoUmVzdWx0LmggKi8gPSB7aXNh
ID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUg
PSBzb3VyY2Vjb2RlLmMuaDsgcGF0aCA9IE1hdGNoUmVzdWx0Lmg7IHNvdXJjZVRyZWUgPSAiPGdy
b3VwPiI7IH07CisJCTg2MTU4QUIyMTU1QzhCM0YwMEI0NUM5QyAvKiBQcm9wZXJ0eU5hbWUuaCAq
LyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25G
aWxlVHlwZSA9IHNvdXJjZWNvZGUuYy5oOyBwYXRoID0gUHJvcGVydHlOYW1lLmg7IHNvdXJjZVRy
ZWUgPSAiPGdyb3VwPiI7IH07CiAJCTg2M0IyM0RGMEZDNjBFNjIwMDcwM0FBNCAvKiBNYWNyb0Fz
c2VtYmxlckNvZGVSZWYuaCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2Rp
bmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuYy5oOyBwYXRoID0gTWFjcm9B
c3NlbWJsZXJDb2RlUmVmLmg7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CiAJCTg2M0M2RDk4
MTUyMTExMTIwMDU4NUU0RSAvKiBZYXJyQ2Fub25pY2FsaXplVUNTMi5jcHAgKi8gPSB7aXNhID0g
UEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSBz
b3VyY2Vjb2RlLmNwcC5jcHA7IG5hbWUgPSBZYXJyQ2Fub25pY2FsaXplVUNTMi5jcHA7IHBhdGgg
PSB5YXJyL1lhcnJDYW5vbmljYWxpemVVQ1MyLmNwcDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+Ijsg
fTsKIAkJODYzQzZEOTkxNTIxMTExMjAwNTg1RTRFIC8qIFlhcnJDYW5vbmljYWxpemVVQ1MyLmgg
Ki8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3du
RmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmMuaDsgbmFtZSA9IFlhcnJDYW5vbmljYWxpemVVQ1MyLmg7
IHBhdGggPSB5YXJyL1lhcnJDYW5vbmljYWxpemVVQ1MyLmg7IHNvdXJjZVRyZWUgPSAiPGdyb3Vw
PiI7IH07CkBAIC0xOTM2LDYgKzE5MzgsNyBAQAogCQkJCUE3RkI2MEEzMTAzRjdEQzIwMDE3QTI4
NiAvKiBQcm9wZXJ0eURlc2NyaXB0b3IuY3BwICovLAogCQkJCUE3RkI2MDRCMTAzRjVFQUIwMDE3
QTI4NiAvKiBQcm9wZXJ0eURlc2NyaXB0b3IuaCAqLywKIAkJCQlCQzk1NDM3QzBFQkE3MEZEMDA3
MkI2RDMgLyogUHJvcGVydHlNYXBIYXNoVGFibGUuaCAqLywKKwkJCQk4NjE1OEFCMjE1NUM4QjNG
MDBCNDVDOUMgLyogUHJvcGVydHlOYW1lLmggKi8sCiAJCQkJNjU0MDBDMEYwQTY5QkFGMjAwNTA5
ODg3IC8qIFByb3BlcnR5TmFtZUFycmF5LmNwcCAqLywKIAkJCQk2NTQwMEMxMDBBNjlCQUYyMDA1
MDk4ODcgLyogUHJvcGVydHlOYW1lQXJyYXkuaCAqLywKIAkJCQk2NTYyMUU2QjA4OUU4NTk3MDA3
NjBGMzUgLyogUHJvcGVydHlTbG90LmNwcCAqLywKQEAgLTI1ODAsNiArMjU4Myw3IEBACiAJCQkJ
MEYxRTNBNDcxNTM0Q0JCOTAwMEY5NDU2IC8qIERGR0RvdWJsZUZvcm1hdFN0YXRlLmggaW4gSGVh
ZGVycyAqLywKIAkJCQkxNDE1MDEzMzE1NEJCMTNGMDA1RDhDOTggLyogV2Vha1NldElubGluZXMu
aCBpbiBIZWFkZXJzICovLAogCQkJCTE0ODE2RTFDMTU0Q0M1NkMwMEI4MDU0QyAvKiBCbG9ja0Fs
bG9jYXRvci5oIGluIEhlYWRlcnMgKi8sCisJCQkJODYxNThBQjMxNTVDOEI0MDAwQjQ1QzlDIC8q
IFByb3BlcnR5TmFtZS5oIGluIEhlYWRlcnMgKi8sCiAJCQkpOwogCQkJcnVuT25seUZvckRlcGxv
eW1lbnRQb3N0cHJvY2Vzc2luZyA9IDA7CiAJCX07CkluZGV4OiBTb3VyY2UvSmF2YVNjcmlwdENv
cmUvZGVidWdnZXIvRGVidWdnZXJBY3RpdmF0aW9uLmNwcAo9PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2Uv
SmF2YVNjcmlwdENvcmUvZGVidWdnZXIvRGVidWdnZXJBY3RpdmF0aW9uLmNwcAkocmV2aXNpb24g
MTE2NjY3KQorKysgU291cmNlL0phdmFTY3JpcHRDb3JlL2RlYnVnZ2VyL0RlYnVnZ2VyQWN0aXZh
dGlvbi5jcHAJKHdvcmtpbmcgY29weSkKQEAgLTY1LDI1ICs2NSwyNSBAQCBVU3RyaW5nIERlYnVn
Z2VyQWN0aXZhdGlvbjo6Y2xhc3NOYW1lKGNvCiAgICAgcmV0dXJuIHRoaXNPYmplY3QtPm1fYWN0
aXZhdGlvbi0+bWV0aG9kVGFibGUoKS0+Y2xhc3NOYW1lKHRoaXNPYmplY3QtPm1fYWN0aXZhdGlv
bi5nZXQoKSk7CiB9CiAKLWJvb2wgRGVidWdnZXJBY3RpdmF0aW9uOjpnZXRPd25Qcm9wZXJ0eVNs
b3QoSlNDZWxsKiBjZWxsLCBFeGVjU3RhdGUqIGV4ZWMsIGNvbnN0IElkZW50aWZpZXImIHByb3Bl
cnR5TmFtZSwgUHJvcGVydHlTbG90JiBzbG90KQorYm9vbCBEZWJ1Z2dlckFjdGl2YXRpb246Omdl
dE93blByb3BlcnR5U2xvdChKU0NlbGwqIGNlbGwsIEV4ZWNTdGF0ZSogZXhlYywgUHJvcGVydHlO
YW1lIHByb3BlcnR5TmFtZSwgUHJvcGVydHlTbG90JiBzbG90KQogewogICAgIERlYnVnZ2VyQWN0
aXZhdGlvbiogdGhpc09iamVjdCA9IGpzQ2FzdDxEZWJ1Z2dlckFjdGl2YXRpb24qPihjZWxsKTsK
ICAgICByZXR1cm4gdGhpc09iamVjdC0+bV9hY3RpdmF0aW9uLT5tZXRob2RUYWJsZSgpLT5nZXRP
d25Qcm9wZXJ0eVNsb3QodGhpc09iamVjdC0+bV9hY3RpdmF0aW9uLmdldCgpLCBleGVjLCBwcm9w
ZXJ0eU5hbWUsIHNsb3QpOwogfQogCi12b2lkIERlYnVnZ2VyQWN0aXZhdGlvbjo6cHV0KEpTQ2Vs
bCogY2VsbCwgRXhlY1N0YXRlKiBleGVjLCBjb25zdCBJZGVudGlmaWVyJiBwcm9wZXJ0eU5hbWUs
IEpTVmFsdWUgdmFsdWUsIFB1dFByb3BlcnR5U2xvdCYgc2xvdCkKK3ZvaWQgRGVidWdnZXJBY3Rp
dmF0aW9uOjpwdXQoSlNDZWxsKiBjZWxsLCBFeGVjU3RhdGUqIGV4ZWMsIFByb3BlcnR5TmFtZSBw
cm9wZXJ0eU5hbWUsIEpTVmFsdWUgdmFsdWUsIFB1dFByb3BlcnR5U2xvdCYgc2xvdCkKIHsKICAg
ICBEZWJ1Z2dlckFjdGl2YXRpb24qIHRoaXNPYmplY3QgPSBqc0Nhc3Q8RGVidWdnZXJBY3RpdmF0
aW9uKj4oY2VsbCk7CiAgICAgdGhpc09iamVjdC0+bV9hY3RpdmF0aW9uLT5tZXRob2RUYWJsZSgp
LT5wdXQodGhpc09iamVjdC0+bV9hY3RpdmF0aW9uLmdldCgpLCBleGVjLCBwcm9wZXJ0eU5hbWUs
IHZhbHVlLCBzbG90KTsKIH0KIAotdm9pZCBEZWJ1Z2dlckFjdGl2YXRpb246OnB1dERpcmVjdFZp
cnR1YWwoSlNPYmplY3QqIG9iamVjdCwgRXhlY1N0YXRlKiBleGVjLCBjb25zdCBJZGVudGlmaWVy
JiBwcm9wZXJ0eU5hbWUsIEpTVmFsdWUgdmFsdWUsIHVuc2lnbmVkIGF0dHJpYnV0ZXMpCit2b2lk
IERlYnVnZ2VyQWN0aXZhdGlvbjo6cHV0RGlyZWN0VmlydHVhbChKU09iamVjdCogb2JqZWN0LCBF
eGVjU3RhdGUqIGV4ZWMsIFByb3BlcnR5TmFtZSBwcm9wZXJ0eU5hbWUsIEpTVmFsdWUgdmFsdWUs
IHVuc2lnbmVkIGF0dHJpYnV0ZXMpCiB7CiAgICAgRGVidWdnZXJBY3RpdmF0aW9uKiB0aGlzT2Jq
ZWN0ID0ganNDYXN0PERlYnVnZ2VyQWN0aXZhdGlvbio+KG9iamVjdCk7CiAgICAgdGhpc09iamVj
dC0+bV9hY3RpdmF0aW9uLT5tZXRob2RUYWJsZSgpLT5wdXREaXJlY3RWaXJ0dWFsKHRoaXNPYmpl
Y3QtPm1fYWN0aXZhdGlvbi5nZXQoKSwgZXhlYywgcHJvcGVydHlOYW1lLCB2YWx1ZSwgYXR0cmli
dXRlcyk7CiB9CiAKLWJvb2wgRGVidWdnZXJBY3RpdmF0aW9uOjpkZWxldGVQcm9wZXJ0eShKU0Nl
bGwqIGNlbGwsIEV4ZWNTdGF0ZSogZXhlYywgY29uc3QgSWRlbnRpZmllciYgcHJvcGVydHlOYW1l
KQorYm9vbCBEZWJ1Z2dlckFjdGl2YXRpb246OmRlbGV0ZVByb3BlcnR5KEpTQ2VsbCogY2VsbCwg
RXhlY1N0YXRlKiBleGVjLCBQcm9wZXJ0eU5hbWUgcHJvcGVydHlOYW1lKQogewogICAgIERlYnVn
Z2VyQWN0aXZhdGlvbiogdGhpc09iamVjdCA9IGpzQ2FzdDxEZWJ1Z2dlckFjdGl2YXRpb24qPihj
ZWxsKTsKICAgICByZXR1cm4gdGhpc09iamVjdC0+bV9hY3RpdmF0aW9uLT5tZXRob2RUYWJsZSgp
LT5kZWxldGVQcm9wZXJ0eSh0aGlzT2JqZWN0LT5tX2FjdGl2YXRpb24uZ2V0KCksIGV4ZWMsIHBy
b3BlcnR5TmFtZSk7CkBAIC05NSwxMyArOTUsMTMgQEAgdm9pZCBEZWJ1Z2dlckFjdGl2YXRpb246
OmdldE93blByb3BlcnR5TgogICAgIHRoaXNPYmplY3QtPm1fYWN0aXZhdGlvbi0+bWV0aG9kVGFi
bGUoKS0+Z2V0UHJvcGVydHlOYW1lcyh0aGlzT2JqZWN0LT5tX2FjdGl2YXRpb24uZ2V0KCksIGV4
ZWMsIHByb3BlcnR5TmFtZXMsIG1vZGUpOwogfQogCi1ib29sIERlYnVnZ2VyQWN0aXZhdGlvbjo6
Z2V0T3duUHJvcGVydHlEZXNjcmlwdG9yKEpTT2JqZWN0KiBvYmplY3QsIEV4ZWNTdGF0ZSogZXhl
YywgY29uc3QgSWRlbnRpZmllciYgcHJvcGVydHlOYW1lLCBQcm9wZXJ0eURlc2NyaXB0b3ImIGRl
c2NyaXB0b3IpCitib29sIERlYnVnZ2VyQWN0aXZhdGlvbjo6Z2V0T3duUHJvcGVydHlEZXNjcmlw
dG9yKEpTT2JqZWN0KiBvYmplY3QsIEV4ZWNTdGF0ZSogZXhlYywgUHJvcGVydHlOYW1lIHByb3Bl
cnR5TmFtZSwgUHJvcGVydHlEZXNjcmlwdG9yJiBkZXNjcmlwdG9yKQogewogICAgIERlYnVnZ2Vy
QWN0aXZhdGlvbiogdGhpc09iamVjdCA9IGpzQ2FzdDxEZWJ1Z2dlckFjdGl2YXRpb24qPihvYmpl
Y3QpOwogICAgIHJldHVybiB0aGlzT2JqZWN0LT5tX2FjdGl2YXRpb24tPm1ldGhvZFRhYmxlKCkt
PmdldE93blByb3BlcnR5RGVzY3JpcHRvcih0aGlzT2JqZWN0LT5tX2FjdGl2YXRpb24uZ2V0KCks
IGV4ZWMsIHByb3BlcnR5TmFtZSwgZGVzY3JpcHRvcik7CiB9CiAKLWJvb2wgRGVidWdnZXJBY3Rp
dmF0aW9uOjpkZWZpbmVPd25Qcm9wZXJ0eShKU09iamVjdCogb2JqZWN0LCBFeGVjU3RhdGUqIGV4
ZWMsIGNvbnN0IElkZW50aWZpZXImIHByb3BlcnR5TmFtZSwgUHJvcGVydHlEZXNjcmlwdG9yJiBk
ZXNjcmlwdG9yLCBib29sIHNob3VsZFRocm93KQorYm9vbCBEZWJ1Z2dlckFjdGl2YXRpb246OmRl
ZmluZU93blByb3BlcnR5KEpTT2JqZWN0KiBvYmplY3QsIEV4ZWNTdGF0ZSogZXhlYywgUHJvcGVy
dHlOYW1lIHByb3BlcnR5TmFtZSwgUHJvcGVydHlEZXNjcmlwdG9yJiBkZXNjcmlwdG9yLCBib29s
IHNob3VsZFRocm93KQogewogICAgIERlYnVnZ2VyQWN0aXZhdGlvbiogdGhpc09iamVjdCA9IGpz
Q2FzdDxEZWJ1Z2dlckFjdGl2YXRpb24qPihvYmplY3QpOwogICAgIHJldHVybiB0aGlzT2JqZWN0
LT5tX2FjdGl2YXRpb24tPm1ldGhvZFRhYmxlKCktPmRlZmluZU93blByb3BlcnR5KHRoaXNPYmpl
Y3QtPm1fYWN0aXZhdGlvbi5nZXQoKSwgZXhlYywgcHJvcGVydHlOYW1lLCBkZXNjcmlwdG9yLCBz
aG91bGRUaHJvdyk7CkluZGV4OiBTb3VyY2UvSmF2YVNjcmlwdENvcmUvZGVidWdnZXIvRGVidWdn
ZXJBY3RpdmF0aW9uLmgKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL0phdmFTY3JpcHRDb3JlL2RlYnVn
Z2VyL0RlYnVnZ2VyQWN0aXZhdGlvbi5oCShyZXZpc2lvbiAxMTY2NjcpCisrKyBTb3VyY2UvSmF2
YVNjcmlwdENvcmUvZGVidWdnZXIvRGVidWdnZXJBY3RpdmF0aW9uLmgJKHdvcmtpbmcgY29weSkK
QEAgLTQzLDEzICs0MywxMyBAQCBuYW1lc3BhY2UgSlNDIHsKIAogICAgICAgICBzdGF0aWMgdm9p
ZCB2aXNpdENoaWxkcmVuKEpTQ2VsbCosIFNsb3RWaXNpdG9yJik7CiAgICAgICAgIHN0YXRpYyBV
U3RyaW5nIGNsYXNzTmFtZShjb25zdCBKU09iamVjdCopOwotICAgICAgICBzdGF0aWMgYm9vbCBn
ZXRPd25Qcm9wZXJ0eVNsb3QoSlNDZWxsKiwgRXhlY1N0YXRlKiwgY29uc3QgSWRlbnRpZmllciYg
cHJvcGVydHlOYW1lLCBQcm9wZXJ0eVNsb3QmKTsKLSAgICAgICAgc3RhdGljIHZvaWQgcHV0KEpT
Q2VsbCosIEV4ZWNTdGF0ZSosIGNvbnN0IElkZW50aWZpZXImIHByb3BlcnR5TmFtZSwgSlNWYWx1
ZSwgUHV0UHJvcGVydHlTbG90Jik7Ci0gICAgICAgIHN0YXRpYyB2b2lkIHB1dERpcmVjdFZpcnR1
YWwoSlNPYmplY3QqLCBFeGVjU3RhdGUqLCBjb25zdCBJZGVudGlmaWVyJiBwcm9wZXJ0eU5hbWUs
IEpTVmFsdWUsIHVuc2lnbmVkIGF0dHJpYnV0ZXMpOwotICAgICAgICBzdGF0aWMgYm9vbCBkZWxl
dGVQcm9wZXJ0eShKU0NlbGwqLCBFeGVjU3RhdGUqLCBjb25zdCBJZGVudGlmaWVyJiBwcm9wZXJ0
eU5hbWUpOworICAgICAgICBzdGF0aWMgYm9vbCBnZXRPd25Qcm9wZXJ0eVNsb3QoSlNDZWxsKiwg
RXhlY1N0YXRlKiwgUHJvcGVydHlOYW1lLCBQcm9wZXJ0eVNsb3QmKTsKKyAgICAgICAgc3RhdGlj
IHZvaWQgcHV0KEpTQ2VsbCosIEV4ZWNTdGF0ZSosIFByb3BlcnR5TmFtZSwgSlNWYWx1ZSwgUHV0
UHJvcGVydHlTbG90Jik7CisgICAgICAgIHN0YXRpYyB2b2lkIHB1dERpcmVjdFZpcnR1YWwoSlNP
YmplY3QqLCBFeGVjU3RhdGUqLCBQcm9wZXJ0eU5hbWUsIEpTVmFsdWUsIHVuc2lnbmVkIGF0dHJp
YnV0ZXMpOworICAgICAgICBzdGF0aWMgYm9vbCBkZWxldGVQcm9wZXJ0eShKU0NlbGwqLCBFeGVj
U3RhdGUqLCBQcm9wZXJ0eU5hbWUpOwogICAgICAgICBzdGF0aWMgdm9pZCBnZXRPd25Qcm9wZXJ0
eU5hbWVzKEpTT2JqZWN0KiwgRXhlY1N0YXRlKiwgUHJvcGVydHlOYW1lQXJyYXkmLCBFbnVtZXJh
dGlvbk1vZGUpOwotICAgICAgICBzdGF0aWMgYm9vbCBnZXRPd25Qcm9wZXJ0eURlc2NyaXB0b3Io
SlNPYmplY3QqLCBFeGVjU3RhdGUqLCBjb25zdCBJZGVudGlmaWVyJiwgUHJvcGVydHlEZXNjcmlw
dG9yJik7Ci0gICAgICAgIHN0YXRpYyBib29sIGRlZmluZU93blByb3BlcnR5KEpTT2JqZWN0Kiwg
RXhlY1N0YXRlKiwgY29uc3QgSWRlbnRpZmllciYgcHJvcGVydHlOYW1lLCBQcm9wZXJ0eURlc2Ny
aXB0b3ImLCBib29sIHNob3VsZFRocm93KTsKKyAgICAgICAgc3RhdGljIGJvb2wgZ2V0T3duUHJv
cGVydHlEZXNjcmlwdG9yKEpTT2JqZWN0KiwgRXhlY1N0YXRlKiwgUHJvcGVydHlOYW1lLCBQcm9w
ZXJ0eURlc2NyaXB0b3ImKTsKKyAgICAgICAgc3RhdGljIGJvb2wgZGVmaW5lT3duUHJvcGVydHko
SlNPYmplY3QqLCBFeGVjU3RhdGUqLCBQcm9wZXJ0eU5hbWUsIFByb3BlcnR5RGVzY3JpcHRvciYs
IGJvb2wgc2hvdWxkVGhyb3cpOwogCiAgICAgICAgIEpTX0VYUE9SVERBVEEgc3RhdGljIGNvbnN0
IENsYXNzSW5mbyBzX2luZm87CiAKSW5kZXg6IFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1l
L0FyZ3VtZW50cy5jcHAKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRp
bWUvQXJndW1lbnRzLmNwcAkocmV2aXNpb24gMTE2NjY3KQorKysgU291cmNlL0phdmFTY3JpcHRD
b3JlL3J1bnRpbWUvQXJndW1lbnRzLmNwcAkod29ya2luZyBjb3B5KQpAQCAtMTI0LDEyICsxMjQs
MTIgQEAgdm9pZCBBcmd1bWVudHM6OmNyZWF0ZVN0cmljdE1vZGVDYWxsZWVJZgogICAgIG1ldGhv
ZFRhYmxlKCktPmRlZmluZU93blByb3BlcnR5KHRoaXMsIGV4ZWMsIGV4ZWMtPnByb3BlcnR5TmFt
ZXMoKS5jYWxsZWUsIGRlc2NyaXB0b3IsIGZhbHNlKTsKIH0KIAotYm9vbCBBcmd1bWVudHM6Omdl
dE93blByb3BlcnR5U2xvdChKU0NlbGwqIGNlbGwsIEV4ZWNTdGF0ZSogZXhlYywgY29uc3QgSWRl
bnRpZmllciYgcHJvcGVydHlOYW1lLCBQcm9wZXJ0eVNsb3QmIHNsb3QpCitib29sIEFyZ3VtZW50
czo6Z2V0T3duUHJvcGVydHlTbG90KEpTQ2VsbCogY2VsbCwgRXhlY1N0YXRlKiBleGVjLCBQcm9w
ZXJ0eU5hbWUgcHJvcGVydHlOYW1lLCBQcm9wZXJ0eVNsb3QmIHNsb3QpCiB7CiAgICAgQXJndW1l
bnRzKiB0aGlzT2JqZWN0ID0ganNDYXN0PEFyZ3VtZW50cyo+KGNlbGwpOwotICAgIGJvb2wgaXNB
cnJheUluZGV4OwotICAgIHVuc2lnbmVkIGkgPSBwcm9wZXJ0eU5hbWUudG9BcnJheUluZGV4KGlz
QXJyYXlJbmRleCk7Ci0gICAgaWYgKGlzQXJyYXlJbmRleCAmJiBpIDwgdGhpc09iamVjdC0+ZC0+
bnVtQXJndW1lbnRzICYmICghdGhpc09iamVjdC0+ZC0+ZGVsZXRlZEFyZ3VtZW50cyB8fCAhdGhp
c09iamVjdC0+ZC0+ZGVsZXRlZEFyZ3VtZW50c1tpXSkpIHsKKyAgICB1bnNpZ25lZCBpID0gcHJv
cGVydHlOYW1lLmFzSW5kZXgoKTsKKyAgICBpZiAoaSA8IHRoaXNPYmplY3QtPmQtPm51bUFyZ3Vt
ZW50cyAmJiAoIXRoaXNPYmplY3QtPmQtPmRlbGV0ZWRBcmd1bWVudHMgfHwgIXRoaXNPYmplY3Qt
PmQtPmRlbGV0ZWRBcmd1bWVudHNbaV0pKSB7CisgICAgICAgIEFTU0VSVChpIDwgUHJvcGVydHlO
YW1lOjpOb3RBbkluZGV4KTsKICAgICAgICAgc2xvdC5zZXRWYWx1ZSh0aGlzT2JqZWN0LT5hcmd1
bWVudChpKS5nZXQoKSk7CiAgICAgICAgIHJldHVybiB0cnVlOwogICAgIH0KQEAgLTE1MywxMiAr
MTUzLDEyIEBAIGJvb2wgQXJndW1lbnRzOjpnZXRPd25Qcm9wZXJ0eVNsb3QoSlNDZWwKICAgICBy
ZXR1cm4gSlNPYmplY3Q6OmdldE93blByb3BlcnR5U2xvdCh0aGlzT2JqZWN0LCBleGVjLCBwcm9w
ZXJ0eU5hbWUsIHNsb3QpOwogfQogCi1ib29sIEFyZ3VtZW50czo6Z2V0T3duUHJvcGVydHlEZXNj
cmlwdG9yKEpTT2JqZWN0KiBvYmplY3QsIEV4ZWNTdGF0ZSogZXhlYywgY29uc3QgSWRlbnRpZmll
ciYgcHJvcGVydHlOYW1lLCBQcm9wZXJ0eURlc2NyaXB0b3ImIGRlc2NyaXB0b3IpCitib29sIEFy
Z3VtZW50czo6Z2V0T3duUHJvcGVydHlEZXNjcmlwdG9yKEpTT2JqZWN0KiBvYmplY3QsIEV4ZWNT
dGF0ZSogZXhlYywgUHJvcGVydHlOYW1lIHByb3BlcnR5TmFtZSwgUHJvcGVydHlEZXNjcmlwdG9y
JiBkZXNjcmlwdG9yKQogewogICAgIEFyZ3VtZW50cyogdGhpc09iamVjdCA9IGpzQ2FzdDxBcmd1
bWVudHMqPihvYmplY3QpOwotICAgIGJvb2wgaXNBcnJheUluZGV4OwotICAgIHVuc2lnbmVkIGkg
PSBwcm9wZXJ0eU5hbWUudG9BcnJheUluZGV4KGlzQXJyYXlJbmRleCk7Ci0gICAgaWYgKGlzQXJy
YXlJbmRleCAmJiBpIDwgdGhpc09iamVjdC0+ZC0+bnVtQXJndW1lbnRzICYmICghdGhpc09iamVj
dC0+ZC0+ZGVsZXRlZEFyZ3VtZW50cyB8fCAhdGhpc09iamVjdC0+ZC0+ZGVsZXRlZEFyZ3VtZW50
c1tpXSkpIHsKKyAgICB1bnNpZ25lZCBpID0gcHJvcGVydHlOYW1lLmFzSW5kZXgoKTsKKyAgICBp
ZiAoaSA8IHRoaXNPYmplY3QtPmQtPm51bUFyZ3VtZW50cyAmJiAoIXRoaXNPYmplY3QtPmQtPmRl
bGV0ZWRBcmd1bWVudHMgfHwgIXRoaXNPYmplY3QtPmQtPmRlbGV0ZWRBcmd1bWVudHNbaV0pKSB7
CisgICAgICAgIEFTU0VSVChpIDwgUHJvcGVydHlOYW1lOjpOb3RBbkluZGV4KTsKICAgICAgICAg
ZGVzY3JpcHRvci5zZXREZXNjcmlwdG9yKHRoaXNPYmplY3QtPmFyZ3VtZW50KGkpLmdldCgpLCBO
b25lKTsKICAgICAgICAgcmV0dXJuIHRydWU7CiAgICAgfQpAQCAtMjA4LDEyICsyMDgsMTIgQEAg
dm9pZCBBcmd1bWVudHM6OnB1dEJ5SW5kZXgoSlNDZWxsKiBjZWxsLAogICAgIEpTT2JqZWN0Ojpw
dXQodGhpc09iamVjdCwgZXhlYywgSWRlbnRpZmllcihleGVjLCBVU3RyaW5nOjpudW1iZXIoaSkp
LCB2YWx1ZSwgc2xvdCk7CiB9CiAKLXZvaWQgQXJndW1lbnRzOjpwdXQoSlNDZWxsKiBjZWxsLCBF
eGVjU3RhdGUqIGV4ZWMsIGNvbnN0IElkZW50aWZpZXImIHByb3BlcnR5TmFtZSwgSlNWYWx1ZSB2
YWx1ZSwgUHV0UHJvcGVydHlTbG90JiBzbG90KQordm9pZCBBcmd1bWVudHM6OnB1dChKU0NlbGwq
IGNlbGwsIEV4ZWNTdGF0ZSogZXhlYywgUHJvcGVydHlOYW1lIHByb3BlcnR5TmFtZSwgSlNWYWx1
ZSB2YWx1ZSwgUHV0UHJvcGVydHlTbG90JiBzbG90KQogewogICAgIEFyZ3VtZW50cyogdGhpc09i
amVjdCA9IGpzQ2FzdDxBcmd1bWVudHMqPihjZWxsKTsKLSAgICBib29sIGlzQXJyYXlJbmRleDsK
LSAgICB1bnNpZ25lZCBpID0gcHJvcGVydHlOYW1lLnRvQXJyYXlJbmRleChpc0FycmF5SW5kZXgp
OwotICAgIGlmIChpc0FycmF5SW5kZXggJiYgaSA8IHRoaXNPYmplY3QtPmQtPm51bUFyZ3VtZW50
cyAmJiAoIXRoaXNPYmplY3QtPmQtPmRlbGV0ZWRBcmd1bWVudHMgfHwgIXRoaXNPYmplY3QtPmQt
PmRlbGV0ZWRBcmd1bWVudHNbaV0pKSB7CisgICAgdW5zaWduZWQgaSA9IHByb3BlcnR5TmFtZS5h
c0luZGV4KCk7CisgICAgaWYgKGkgPCB0aGlzT2JqZWN0LT5kLT5udW1Bcmd1bWVudHMgJiYgKCF0
aGlzT2JqZWN0LT5kLT5kZWxldGVkQXJndW1lbnRzIHx8ICF0aGlzT2JqZWN0LT5kLT5kZWxldGVk
QXJndW1lbnRzW2ldKSkgeworICAgICAgICBBU1NFUlQoaSA8IFByb3BlcnR5TmFtZTo6Tm90QW5J
bmRleCk7CiAgICAgICAgIHRoaXNPYmplY3QtPmFyZ3VtZW50KGkpLnNldChleGVjLT5nbG9iYWxE
YXRhKCksIHRoaXNPYmplY3QsIHZhbHVlKTsKICAgICAgICAgcmV0dXJuOwogICAgIH0KQEAgLTI1
OSwxNSArMjU5LDE1IEBAIGJvb2wgQXJndW1lbnRzOjpkZWxldGVQcm9wZXJ0eUJ5SW5kZXgoSlMK
ICAgICByZXR1cm4gSlNPYmplY3Q6OmRlbGV0ZVByb3BlcnR5KHRoaXNPYmplY3QsIGV4ZWMsIElk
ZW50aWZpZXIoZXhlYywgVVN0cmluZzo6bnVtYmVyKGkpKSk7CiB9CiAKLWJvb2wgQXJndW1lbnRz
OjpkZWxldGVQcm9wZXJ0eShKU0NlbGwqIGNlbGwsIEV4ZWNTdGF0ZSogZXhlYywgY29uc3QgSWRl
bnRpZmllciYgcHJvcGVydHlOYW1lKSAKK2Jvb2wgQXJndW1lbnRzOjpkZWxldGVQcm9wZXJ0eShK
U0NlbGwqIGNlbGwsIEV4ZWNTdGF0ZSogZXhlYywgUHJvcGVydHlOYW1lIHByb3BlcnR5TmFtZSkg
CiB7CiAgICAgaWYgKGV4ZWMtPmdsb2JhbERhdGEoKS5pc0luRGVmaW5lT3duUHJvcGVydHkoKSkK
ICAgICAgICAgcmV0dXJuIEJhc2U6OmRlbGV0ZVByb3BlcnR5KGNlbGwsIGV4ZWMsIHByb3BlcnR5
TmFtZSk7CiAKICAgICBBcmd1bWVudHMqIHRoaXNPYmplY3QgPSBqc0Nhc3Q8QXJndW1lbnRzKj4o
Y2VsbCk7Ci0gICAgYm9vbCBpc0FycmF5SW5kZXg7Ci0gICAgdW5zaWduZWQgaSA9IHByb3BlcnR5
TmFtZS50b0FycmF5SW5kZXgoaXNBcnJheUluZGV4KTsKLSAgICBpZiAoaXNBcnJheUluZGV4ICYm
IGkgPCB0aGlzT2JqZWN0LT5kLT5udW1Bcmd1bWVudHMpIHsKKyAgICB1bnNpZ25lZCBpID0gcHJv
cGVydHlOYW1lLmFzSW5kZXgoKTsKKyAgICBpZiAoaSA8IHRoaXNPYmplY3QtPmQtPm51bUFyZ3Vt
ZW50cykgeworICAgICAgICBBU1NFUlQoaSA8IFByb3BlcnR5TmFtZTo6Tm90QW5JbmRleCk7CiAg
ICAgICAgIGlmICghQmFzZTo6ZGVsZXRlUHJvcGVydHkoY2VsbCwgZXhlYywgcHJvcGVydHlOYW1l
KSkKICAgICAgICAgICAgIHJldHVybiBmYWxzZTsKIApAQCAtMzAwLDEyICszMDAsMTIgQEAgYm9v
bCBBcmd1bWVudHM6OmRlbGV0ZVByb3BlcnR5KEpTQ2VsbCogYwogICAgIHJldHVybiBKU09iamVj
dDo6ZGVsZXRlUHJvcGVydHkodGhpc09iamVjdCwgZXhlYywgcHJvcGVydHlOYW1lKTsKIH0KIAot
Ym9vbCBBcmd1bWVudHM6OmRlZmluZU93blByb3BlcnR5KEpTT2JqZWN0KiBvYmplY3QsIEV4ZWNT
dGF0ZSogZXhlYywgY29uc3QgSWRlbnRpZmllciYgcHJvcGVydHlOYW1lLCBQcm9wZXJ0eURlc2Ny
aXB0b3ImIGRlc2NyaXB0b3IsIGJvb2wgc2hvdWxkVGhyb3cpCitib29sIEFyZ3VtZW50czo6ZGVm
aW5lT3duUHJvcGVydHkoSlNPYmplY3QqIG9iamVjdCwgRXhlY1N0YXRlKiBleGVjLCBQcm9wZXJ0
eU5hbWUgcHJvcGVydHlOYW1lLCBQcm9wZXJ0eURlc2NyaXB0b3ImIGRlc2NyaXB0b3IsIGJvb2wg
c2hvdWxkVGhyb3cpCiB7CiAgICAgQXJndW1lbnRzKiB0aGlzT2JqZWN0ID0ganNDYXN0PEFyZ3Vt
ZW50cyo+KG9iamVjdCk7Ci0gICAgYm9vbCBpc0FycmF5SW5kZXg7Ci0gICAgdW5zaWduZWQgaSA9
IHByb3BlcnR5TmFtZS50b0FycmF5SW5kZXgoaXNBcnJheUluZGV4KTsKLSAgICBpZiAoaXNBcnJh
eUluZGV4ICYmIGkgPCB0aGlzT2JqZWN0LT5kLT5udW1Bcmd1bWVudHMpIHsKKyAgICB1bnNpZ25l
ZCBpID0gcHJvcGVydHlOYW1lLmFzSW5kZXgoKTsKKyAgICBpZiAoaSA8IHRoaXNPYmplY3QtPmQt
Pm51bUFyZ3VtZW50cykgeworICAgICAgICBBU1NFUlQoaSA8IFByb3BlcnR5TmFtZTo6Tm90QW5J
bmRleCk7CiAgICAgICAgIC8vIElmIHRoZSBwcm9wZXJ0eSBpcyBub3QgeWV0IHByZXNlbnQgb24g
dGhlIG9iamVjdCwgYW5kIGlzIG5vdCB5ZXQgbWFya2VkIGFzIGRlbGV0ZWQsIHRoZW4gYWRkIGl0
IG5vdy4KICAgICAgICAgUHJvcGVydHlTbG90IHNsb3Q7CiAgICAgICAgIGlmICgoIXRoaXNPYmpl
Y3QtPmQtPmRlbGV0ZWRBcmd1bWVudHMgfHwgIXRoaXNPYmplY3QtPmQtPmRlbGV0ZWRBcmd1bWVu
dHNbaV0pICYmICFKU09iamVjdDo6Z2V0T3duUHJvcGVydHlTbG90KHRoaXNPYmplY3QsIGV4ZWMs
IHByb3BlcnR5TmFtZSwgc2xvdCkpCkluZGV4OiBTb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGlt
ZS9Bcmd1bWVudHMuaAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGlt
ZS9Bcmd1bWVudHMuaAkocmV2aXNpb24gMTE2NjY3KQorKysgU291cmNlL0phdmFTY3JpcHRDb3Jl
L3J1bnRpbWUvQXJndW1lbnRzLmgJKHdvcmtpbmcgY29weSkKQEAgLTEwOSwxNSArMTA5LDE1IEBA
IG5hbWVzcGFjZSBKU0MgewogCiAgICAgcHJpdmF0ZToKICAgICAgICAgc3RhdGljIHZvaWQgZGVz
dHJveShKU0NlbGwqKTsKLSAgICAgICAgc3RhdGljIGJvb2wgZ2V0T3duUHJvcGVydHlTbG90KEpT
Q2VsbCosIEV4ZWNTdGF0ZSosIGNvbnN0IElkZW50aWZpZXImIHByb3BlcnR5TmFtZSwgUHJvcGVy
dHlTbG90Jik7CisgICAgICAgIHN0YXRpYyBib29sIGdldE93blByb3BlcnR5U2xvdChKU0NlbGwq
LCBFeGVjU3RhdGUqLCBQcm9wZXJ0eU5hbWUsIFByb3BlcnR5U2xvdCYpOwogICAgICAgICBzdGF0
aWMgYm9vbCBnZXRPd25Qcm9wZXJ0eVNsb3RCeUluZGV4KEpTQ2VsbCosIEV4ZWNTdGF0ZSosIHVu
c2lnbmVkIHByb3BlcnR5TmFtZSwgUHJvcGVydHlTbG90Jik7Ci0gICAgICAgIHN0YXRpYyBib29s
IGdldE93blByb3BlcnR5RGVzY3JpcHRvcihKU09iamVjdCosIEV4ZWNTdGF0ZSosIGNvbnN0IElk
ZW50aWZpZXImLCBQcm9wZXJ0eURlc2NyaXB0b3ImKTsKKyAgICAgICAgc3RhdGljIGJvb2wgZ2V0
T3duUHJvcGVydHlEZXNjcmlwdG9yKEpTT2JqZWN0KiwgRXhlY1N0YXRlKiwgUHJvcGVydHlOYW1l
LCBQcm9wZXJ0eURlc2NyaXB0b3ImKTsKICAgICAgICAgc3RhdGljIHZvaWQgZ2V0T3duUHJvcGVy
dHlOYW1lcyhKU09iamVjdCosIEV4ZWNTdGF0ZSosIFByb3BlcnR5TmFtZUFycmF5JiwgRW51bWVy
YXRpb25Nb2RlKTsKLSAgICAgICAgc3RhdGljIHZvaWQgcHV0KEpTQ2VsbCosIEV4ZWNTdGF0ZSos
IGNvbnN0IElkZW50aWZpZXImIHByb3BlcnR5TmFtZSwgSlNWYWx1ZSwgUHV0UHJvcGVydHlTbG90
Jik7CisgICAgICAgIHN0YXRpYyB2b2lkIHB1dChKU0NlbGwqLCBFeGVjU3RhdGUqLCBQcm9wZXJ0
eU5hbWUsIEpTVmFsdWUsIFB1dFByb3BlcnR5U2xvdCYpOwogICAgICAgICBzdGF0aWMgdm9pZCBw
dXRCeUluZGV4KEpTQ2VsbCosIEV4ZWNTdGF0ZSosIHVuc2lnbmVkIHByb3BlcnR5TmFtZSwgSlNW
YWx1ZSwgYm9vbCBzaG91bGRUaHJvdyk7Ci0gICAgICAgIHN0YXRpYyBib29sIGRlbGV0ZVByb3Bl
cnR5KEpTQ2VsbCosIEV4ZWNTdGF0ZSosIGNvbnN0IElkZW50aWZpZXImIHByb3BlcnR5TmFtZSk7
CisgICAgICAgIHN0YXRpYyBib29sIGRlbGV0ZVByb3BlcnR5KEpTQ2VsbCosIEV4ZWNTdGF0ZSos
IFByb3BlcnR5TmFtZSk7CiAgICAgICAgIHN0YXRpYyBib29sIGRlbGV0ZVByb3BlcnR5QnlJbmRl
eChKU0NlbGwqLCBFeGVjU3RhdGUqLCB1bnNpZ25lZCBwcm9wZXJ0eU5hbWUpOwotICAgICAgICBz
dGF0aWMgYm9vbCBkZWZpbmVPd25Qcm9wZXJ0eShKU09iamVjdCosIEV4ZWNTdGF0ZSosIGNvbnN0
IElkZW50aWZpZXImIHByb3BlcnR5TmFtZSwgUHJvcGVydHlEZXNjcmlwdG9yJiwgYm9vbCBzaG91
bGRUaHJvdyk7CisgICAgICAgIHN0YXRpYyBib29sIGRlZmluZU93blByb3BlcnR5KEpTT2JqZWN0
KiwgRXhlY1N0YXRlKiwgUHJvcGVydHlOYW1lLCBQcm9wZXJ0eURlc2NyaXB0b3ImLCBib29sIHNo
b3VsZFRocm93KTsKICAgICAgICAgdm9pZCBjcmVhdGVTdHJpY3RNb2RlQ2FsbGVySWZOZWNlc3Nh
cnkoRXhlY1N0YXRlKik7CiAgICAgICAgIHZvaWQgY3JlYXRlU3RyaWN0TW9kZUNhbGxlZUlmTmVj
ZXNzYXJ5KEV4ZWNTdGF0ZSopOwogCkluZGV4OiBTb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGlt
ZS9BcnJheUNvbnN0cnVjdG9yLmNwcAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvSmF2YVNjcmlwdENv
cmUvcnVudGltZS9BcnJheUNvbnN0cnVjdG9yLmNwcAkocmV2aXNpb24gMTE2NjY3KQorKysgU291
cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvQXJyYXlDb25zdHJ1Y3Rvci5jcHAJKHdvcmtpbmcg
Y29weSkKQEAgLTYwLDE3ICs2MCwxNyBAQCBBcnJheUNvbnN0cnVjdG9yOjpBcnJheUNvbnN0cnVj
dG9yKEpTR2xvCiAKIHZvaWQgQXJyYXlDb25zdHJ1Y3Rvcjo6ZmluaXNoQ3JlYXRpb24oRXhlY1N0
YXRlKiBleGVjLCBBcnJheVByb3RvdHlwZSogYXJyYXlQcm90b3R5cGUpCiB7Ci0gICAgQmFzZTo6
ZmluaXNoQ3JlYXRpb24oZXhlYy0+Z2xvYmFsRGF0YSgpLCBJZGVudGlmaWVyKGV4ZWMsIGFycmF5
UHJvdG90eXBlLT5jbGFzc0luZm8oKS0+Y2xhc3NOYW1lKSk7CisgICAgQmFzZTo6ZmluaXNoQ3Jl
YXRpb24oZXhlYy0+Z2xvYmFsRGF0YSgpLCBhcnJheVByb3RvdHlwZS0+Y2xhc3NJbmZvKCktPmNs
YXNzTmFtZSk7CiAgICAgcHV0RGlyZWN0V2l0aG91dFRyYW5zaXRpb24oZXhlYy0+Z2xvYmFsRGF0
YSgpLCBleGVjLT5wcm9wZXJ0eU5hbWVzKCkucHJvdG90eXBlLCBhcnJheVByb3RvdHlwZSwgRG9u
dEVudW0gfCBEb250RGVsZXRlIHwgUmVhZE9ubHkpOwogICAgIHB1dERpcmVjdFdpdGhvdXRUcmFu
c2l0aW9uKGV4ZWMtPmdsb2JhbERhdGEoKSwgZXhlYy0+cHJvcGVydHlOYW1lcygpLmxlbmd0aCwg
anNOdW1iZXIoMSksIFJlYWRPbmx5IHwgRG9udEVudW0gfCBEb250RGVsZXRlKTsKIH0KIAotYm9v
bCBBcnJheUNvbnN0cnVjdG9yOjpnZXRPd25Qcm9wZXJ0eVNsb3QoSlNDZWxsKiBjZWxsLCBFeGVj
U3RhdGUqIGV4ZWMsIGNvbnN0IElkZW50aWZpZXImIHByb3BlcnR5TmFtZSwgUHJvcGVydHlTbG90
ICZzbG90KQorYm9vbCBBcnJheUNvbnN0cnVjdG9yOjpnZXRPd25Qcm9wZXJ0eVNsb3QoSlNDZWxs
KiBjZWxsLCBFeGVjU3RhdGUqIGV4ZWMsIFByb3BlcnR5TmFtZSBwcm9wZXJ0eU5hbWUsIFByb3Bl
cnR5U2xvdCAmc2xvdCkKIHsKICAgICByZXR1cm4gZ2V0U3RhdGljRnVuY3Rpb25TbG90PEludGVy
bmFsRnVuY3Rpb24+KGV4ZWMsIEV4ZWNTdGF0ZTo6YXJyYXlDb25zdHJ1Y3RvclRhYmxlKGV4ZWMp
LCBqc0Nhc3Q8QXJyYXlDb25zdHJ1Y3Rvcio+KGNlbGwpLCBwcm9wZXJ0eU5hbWUsIHNsb3QpOwog
fQogCi1ib29sIEFycmF5Q29uc3RydWN0b3I6OmdldE93blByb3BlcnR5RGVzY3JpcHRvcihKU09i
amVjdCogb2JqZWN0LCBFeGVjU3RhdGUqIGV4ZWMsIGNvbnN0IElkZW50aWZpZXImIHByb3BlcnR5
TmFtZSwgUHJvcGVydHlEZXNjcmlwdG9yJiBkZXNjcmlwdG9yKQorYm9vbCBBcnJheUNvbnN0cnVj
dG9yOjpnZXRPd25Qcm9wZXJ0eURlc2NyaXB0b3IoSlNPYmplY3QqIG9iamVjdCwgRXhlY1N0YXRl
KiBleGVjLCBQcm9wZXJ0eU5hbWUgcHJvcGVydHlOYW1lLCBQcm9wZXJ0eURlc2NyaXB0b3ImIGRl
c2NyaXB0b3IpCiB7CiAgICAgcmV0dXJuIGdldFN0YXRpY0Z1bmN0aW9uRGVzY3JpcHRvcjxJbnRl
cm5hbEZ1bmN0aW9uPihleGVjLCBFeGVjU3RhdGU6OmFycmF5Q29uc3RydWN0b3JUYWJsZShleGVj
KSwganNDYXN0PEFycmF5Q29uc3RydWN0b3IqPihvYmplY3QpLCBwcm9wZXJ0eU5hbWUsIGRlc2Ny
aXB0b3IpOwogfQpJbmRleDogU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvQXJyYXlDb25z
dHJ1Y3Rvci5oCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL0Fy
cmF5Q29uc3RydWN0b3IuaAkocmV2aXNpb24gMTE2NjY3KQorKysgU291cmNlL0phdmFTY3JpcHRD
b3JlL3J1bnRpbWUvQXJyYXlDb25zdHJ1Y3Rvci5oCSh3b3JraW5nIGNvcHkpCkBAIC01MSw5ICs1
MSw5IEBAIG5hbWVzcGFjZSBKU0MgewogCiAgICAgcHJpdmF0ZToKICAgICAgICAgQXJyYXlDb25z
dHJ1Y3RvcihKU0dsb2JhbE9iamVjdCosIFN0cnVjdHVyZSopOwotICAgICAgICBzdGF0aWMgYm9v
bCBnZXRPd25Qcm9wZXJ0eVNsb3QoSlNDZWxsKiwgRXhlY1N0YXRlKiwgY29uc3QgSWRlbnRpZmll
ciYsIFByb3BlcnR5U2xvdCYpOworICAgICAgICBzdGF0aWMgYm9vbCBnZXRPd25Qcm9wZXJ0eVNs
b3QoSlNDZWxsKiwgRXhlY1N0YXRlKiwgUHJvcGVydHlOYW1lLCBQcm9wZXJ0eVNsb3QmKTsKIAot
ICAgICAgICBzdGF0aWMgYm9vbCBnZXRPd25Qcm9wZXJ0eURlc2NyaXB0b3IoSlNPYmplY3QqLCBF
eGVjU3RhdGUqLCBjb25zdCBJZGVudGlmaWVyJiwgUHJvcGVydHlEZXNjcmlwdG9yJik7CisgICAg
ICAgIHN0YXRpYyBib29sIGdldE93blByb3BlcnR5RGVzY3JpcHRvcihKU09iamVjdCosIEV4ZWNT
dGF0ZSosIFByb3BlcnR5TmFtZSwgUHJvcGVydHlEZXNjcmlwdG9yJik7CiAKICAgICAgICAgc3Rh
dGljIENvbnN0cnVjdFR5cGUgZ2V0Q29uc3RydWN0RGF0YShKU0NlbGwqLCBDb25zdHJ1Y3REYXRh
Jik7CiAgICAgICAgIHN0YXRpYyBDYWxsVHlwZSBnZXRDYWxsRGF0YShKU0NlbGwqLCBDYWxsRGF0
YSYpOwpJbmRleDogU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvQXJyYXlQcm90b3R5cGUu
Y3BwCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL0FycmF5UHJv
dG90eXBlLmNwcAkocmV2aXNpb24gMTE2NjY3KQorKysgU291cmNlL0phdmFTY3JpcHRDb3JlL3J1
bnRpbWUvQXJyYXlQcm90b3R5cGUuY3BwCSh3b3JraW5nIGNvcHkpCkBAIC0xMjYsMTIgKzEyNiwx
MiBAQCB2b2lkIEFycmF5UHJvdG90eXBlOjpmaW5pc2hDcmVhdGlvbihKU0dsCiAgICAgQVNTRVJU
KGluaGVyaXRzKCZzX2luZm8pKTsKIH0KIAotYm9vbCBBcnJheVByb3RvdHlwZTo6Z2V0T3duUHJv
cGVydHlTbG90KEpTQ2VsbCogY2VsbCwgRXhlY1N0YXRlKiBleGVjLCBjb25zdCBJZGVudGlmaWVy
JiBwcm9wZXJ0eU5hbWUsIFByb3BlcnR5U2xvdCYgc2xvdCkKK2Jvb2wgQXJyYXlQcm90b3R5cGU6
OmdldE93blByb3BlcnR5U2xvdChKU0NlbGwqIGNlbGwsIEV4ZWNTdGF0ZSogZXhlYywgUHJvcGVy
dHlOYW1lIHByb3BlcnR5TmFtZSwgUHJvcGVydHlTbG90JiBzbG90KQogewogICAgIHJldHVybiBn
ZXRTdGF0aWNGdW5jdGlvblNsb3Q8SlNBcnJheT4oZXhlYywgRXhlY1N0YXRlOjphcnJheVByb3Rv
dHlwZVRhYmxlKGV4ZWMpLCBqc0Nhc3Q8QXJyYXlQcm90b3R5cGUqPihjZWxsKSwgcHJvcGVydHlO
YW1lLCBzbG90KTsKIH0KIAotYm9vbCBBcnJheVByb3RvdHlwZTo6Z2V0T3duUHJvcGVydHlEZXNj
cmlwdG9yKEpTT2JqZWN0KiBvYmplY3QsIEV4ZWNTdGF0ZSogZXhlYywgY29uc3QgSWRlbnRpZmll
ciYgcHJvcGVydHlOYW1lLCBQcm9wZXJ0eURlc2NyaXB0b3ImIGRlc2NyaXB0b3IpCitib29sIEFy
cmF5UHJvdG90eXBlOjpnZXRPd25Qcm9wZXJ0eURlc2NyaXB0b3IoSlNPYmplY3QqIG9iamVjdCwg
RXhlY1N0YXRlKiBleGVjLCBQcm9wZXJ0eU5hbWUgcHJvcGVydHlOYW1lLCBQcm9wZXJ0eURlc2Ny
aXB0b3ImIGRlc2NyaXB0b3IpCiB7CiAgICAgcmV0dXJuIGdldFN0YXRpY0Z1bmN0aW9uRGVzY3Jp
cHRvcjxKU0FycmF5PihleGVjLCBFeGVjU3RhdGU6OmFycmF5UHJvdG90eXBlVGFibGUoZXhlYyks
IGpzQ2FzdDxBcnJheVByb3RvdHlwZSo+KG9iamVjdCksIHByb3BlcnR5TmFtZSwgZGVzY3JpcHRv
cik7CiB9CkBAIC0xNDcsNyArMTQ3LDcgQEAgc3RhdGljIEpTVmFsdWUgZ2V0UHJvcGVydHkoRXhl
Y1N0YXRlKiBleAogICAgIHJldHVybiBzbG90LmdldFZhbHVlKGV4ZWMsIGluZGV4KTsKIH0KIAot
c3RhdGljIHZvaWQgcHV0UHJvcGVydHkoRXhlY1N0YXRlKiBleGVjLCBKU09iamVjdCogb2JqLCBj
b25zdCBJZGVudGlmaWVyJiBwcm9wZXJ0eU5hbWUsIEpTVmFsdWUgdmFsdWUpCitzdGF0aWMgdm9p
ZCBwdXRQcm9wZXJ0eShFeGVjU3RhdGUqIGV4ZWMsIEpTT2JqZWN0KiBvYmosIFByb3BlcnR5TmFt
ZSBwcm9wZXJ0eU5hbWUsIEpTVmFsdWUgdmFsdWUpCiB7CiAgICAgUHV0UHJvcGVydHlTbG90IHNs
b3Q7CiAgICAgb2JqLT5tZXRob2RUYWJsZSgpLT5wdXQob2JqLCBleGVjLCBwcm9wZXJ0eU5hbWUs
IHZhbHVlLCBzbG90KTsKSW5kZXg6IFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL0FycmF5
UHJvdG90eXBlLmgKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUv
QXJyYXlQcm90b3R5cGUuaAkocmV2aXNpb24gMTE2NjY3KQorKysgU291cmNlL0phdmFTY3JpcHRD
b3JlL3J1bnRpbWUvQXJyYXlQcm90b3R5cGUuaAkod29ya2luZyBjb3B5KQpAQCAtNDAsOCArNDAs
OCBAQCBuYW1lc3BhY2UgSlNDIHsKICAgICAgICAgICAgIHJldHVybiBwcm90b3R5cGU7CiAgICAg
ICAgIH0KICAgICAgICAgCi0gICAgICAgIHN0YXRpYyBib29sIGdldE93blByb3BlcnR5U2xvdChK
U0NlbGwqLCBFeGVjU3RhdGUqLCBjb25zdCBJZGVudGlmaWVyJiwgUHJvcGVydHlTbG90Jik7Ci0g
ICAgICAgIHN0YXRpYyBib29sIGdldE93blByb3BlcnR5RGVzY3JpcHRvcihKU09iamVjdCosIEV4
ZWNTdGF0ZSosIGNvbnN0IElkZW50aWZpZXImLCBQcm9wZXJ0eURlc2NyaXB0b3ImKTsKKyAgICAg
ICAgc3RhdGljIGJvb2wgZ2V0T3duUHJvcGVydHlTbG90KEpTQ2VsbCosIEV4ZWNTdGF0ZSosIFBy
b3BlcnR5TmFtZSwgUHJvcGVydHlTbG90Jik7CisgICAgICAgIHN0YXRpYyBib29sIGdldE93blBy
b3BlcnR5RGVzY3JpcHRvcihKU09iamVjdCosIEV4ZWNTdGF0ZSosIFByb3BlcnR5TmFtZSwgUHJv
cGVydHlEZXNjcmlwdG9yJik7CiAKICAgICAgICAgc3RhdGljIGNvbnN0IENsYXNzSW5mbyBzX2lu
Zm87CiAKSW5kZXg6IFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL0Jvb2xlYW5Db25zdHJ1
Y3Rvci5jcHAKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvQm9v
bGVhbkNvbnN0cnVjdG9yLmNwcAkocmV2aXNpb24gMTE2NjY3KQorKysgU291cmNlL0phdmFTY3Jp
cHRDb3JlL3J1bnRpbWUvQm9vbGVhbkNvbnN0cnVjdG9yLmNwcAkod29ya2luZyBjb3B5KQpAQCAt
MzgsNyArMzgsNyBAQCBCb29sZWFuQ29uc3RydWN0b3I6OkJvb2xlYW5Db25zdHJ1Y3RvcihKCiAK
IHZvaWQgQm9vbGVhbkNvbnN0cnVjdG9yOjpmaW5pc2hDcmVhdGlvbihFeGVjU3RhdGUqIGV4ZWMs
IEJvb2xlYW5Qcm90b3R5cGUqIGJvb2xlYW5Qcm90b3R5cGUpCiB7Ci0gICAgQmFzZTo6ZmluaXNo
Q3JlYXRpb24oZXhlYy0+Z2xvYmFsRGF0YSgpLCBJZGVudGlmaWVyKGV4ZWMsIGJvb2xlYW5Qcm90
b3R5cGUtPmNsYXNzSW5mbygpLT5jbGFzc05hbWUpKTsKKyAgICBCYXNlOjpmaW5pc2hDcmVhdGlv
bihleGVjLT5nbG9iYWxEYXRhKCksIGJvb2xlYW5Qcm90b3R5cGUtPmNsYXNzSW5mbygpLT5jbGFz
c05hbWUpOwogICAgIHB1dERpcmVjdFdpdGhvdXRUcmFuc2l0aW9uKGV4ZWMtPmdsb2JhbERhdGEo
KSwgZXhlYy0+cHJvcGVydHlOYW1lcygpLnByb3RvdHlwZSwgYm9vbGVhblByb3RvdHlwZSwgRG9u
dEVudW0gfCBEb250RGVsZXRlIHwgUmVhZE9ubHkpOwogCiAgICAgLy8gbm8uIG9mIGFyZ3VtZW50
cyBmb3IgY29uc3RydWN0b3IKSW5kZXg6IFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL0Jv
b2xlYW5Qcm90b3R5cGUuY3BwCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9y
dW50aW1lL0Jvb2xlYW5Qcm90b3R5cGUuY3BwCShyZXZpc2lvbiAxMTY2NjcpCisrKyBTb3VyY2Uv
SmF2YVNjcmlwdENvcmUvcnVudGltZS9Cb29sZWFuUHJvdG90eXBlLmNwcAkod29ya2luZyBjb3B5
KQpAQCAtNjMsMTIgKzYzLDEyIEBAIHZvaWQgQm9vbGVhblByb3RvdHlwZTo6ZmluaXNoQ3JlYXRp
b24oRXgKICAgICBBU1NFUlQoaW5oZXJpdHMoJnNfaW5mbykpOwogfQogCi1ib29sIEJvb2xlYW5Q
cm90b3R5cGU6OmdldE93blByb3BlcnR5U2xvdChKU0NlbGwqIGNlbGwsIEV4ZWNTdGF0ZSogZXhl
YywgY29uc3QgSWRlbnRpZmllciYgcHJvcGVydHlOYW1lLCBQcm9wZXJ0eVNsb3QgJnNsb3QpCiti
b29sIEJvb2xlYW5Qcm90b3R5cGU6OmdldE93blByb3BlcnR5U2xvdChKU0NlbGwqIGNlbGwsIEV4
ZWNTdGF0ZSogZXhlYywgUHJvcGVydHlOYW1lIHByb3BlcnR5TmFtZSwgUHJvcGVydHlTbG90ICZz
bG90KQogewogICAgIHJldHVybiBnZXRTdGF0aWNGdW5jdGlvblNsb3Q8Qm9vbGVhbk9iamVjdD4o
ZXhlYywgRXhlY1N0YXRlOjpib29sZWFuUHJvdG90eXBlVGFibGUoZXhlYyksIGpzQ2FzdDxCb29s
ZWFuUHJvdG90eXBlKj4oY2VsbCksIHByb3BlcnR5TmFtZSwgc2xvdCk7CiB9CiAKLWJvb2wgQm9v
bGVhblByb3RvdHlwZTo6Z2V0T3duUHJvcGVydHlEZXNjcmlwdG9yKEpTT2JqZWN0KiBvYmplY3Qs
IEV4ZWNTdGF0ZSogZXhlYywgY29uc3QgSWRlbnRpZmllciYgcHJvcGVydHlOYW1lLCBQcm9wZXJ0
eURlc2NyaXB0b3ImIGRlc2NyaXB0b3IpCitib29sIEJvb2xlYW5Qcm90b3R5cGU6OmdldE93blBy
b3BlcnR5RGVzY3JpcHRvcihKU09iamVjdCogb2JqZWN0LCBFeGVjU3RhdGUqIGV4ZWMsIFByb3Bl
cnR5TmFtZSBwcm9wZXJ0eU5hbWUsIFByb3BlcnR5RGVzY3JpcHRvciYgZGVzY3JpcHRvcikKIHsK
ICAgICByZXR1cm4gZ2V0U3RhdGljRnVuY3Rpb25EZXNjcmlwdG9yPEJvb2xlYW5PYmplY3Q+KGV4
ZWMsIEV4ZWNTdGF0ZTo6Ym9vbGVhblByb3RvdHlwZVRhYmxlKGV4ZWMpLCBqc0Nhc3Q8Qm9vbGVh
blByb3RvdHlwZSo+KG9iamVjdCksIHByb3BlcnR5TmFtZSwgZGVzY3JpcHRvcik7CiB9CkluZGV4
OiBTb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9Cb29sZWFuUHJvdG90eXBlLmgKPT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PQotLS0gU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvQm9vbGVhblByb3RvdHlwZS5o
CShyZXZpc2lvbiAxMTY2NjcpCisrKyBTb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9Cb29s
ZWFuUHJvdG90eXBlLmgJKHdvcmtpbmcgY29weSkKQEAgLTQ5LDkgKzQ5LDkgQEAgbmFtZXNwYWNl
IEpTQyB7CiAKICAgICBwcml2YXRlOgogICAgICAgICBCb29sZWFuUHJvdG90eXBlKEV4ZWNTdGF0
ZSosIFN0cnVjdHVyZSopOwotICAgICAgICBzdGF0aWMgYm9vbCBnZXRPd25Qcm9wZXJ0eVNsb3Qo
SlNDZWxsKiwgRXhlY1N0YXRlKiwgY29uc3QgSWRlbnRpZmllciYsIFByb3BlcnR5U2xvdCYpOwor
ICAgICAgICBzdGF0aWMgYm9vbCBnZXRPd25Qcm9wZXJ0eVNsb3QoSlNDZWxsKiwgRXhlY1N0YXRl
KiwgUHJvcGVydHlOYW1lLCBQcm9wZXJ0eVNsb3QmKTsKIAotICAgICAgICBzdGF0aWMgYm9vbCBn
ZXRPd25Qcm9wZXJ0eURlc2NyaXB0b3IoSlNPYmplY3QqLCBFeGVjU3RhdGUqLCBjb25zdCBJZGVu
dGlmaWVyJiwgUHJvcGVydHlEZXNjcmlwdG9yJik7CisgICAgICAgIHN0YXRpYyBib29sIGdldE93
blByb3BlcnR5RGVzY3JpcHRvcihKU09iamVjdCosIEV4ZWNTdGF0ZSosIFByb3BlcnR5TmFtZSwg
UHJvcGVydHlEZXNjcmlwdG9yJik7CiAgICAgfTsKIAogfSAvLyBuYW1lc3BhY2UgSlNDCkluZGV4
OiBTb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9DbGFzc0luZm8uaAo9PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0t
LSBTb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9DbGFzc0luZm8uaAkocmV2aXNpb24gMTE2
NjY3KQorKysgU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvQ2xhc3NJbmZvLmgJKHdvcmtp
bmcgY29weSkKQEAgLTQ1LDE5ICs0NSwxOSBAQCBuYW1lc3BhY2UgSlNDIHsKICAgICAgICAgdHlw
ZWRlZiBDb25zdHJ1Y3RUeXBlICgqR2V0Q29uc3RydWN0RGF0YUZ1bmN0aW9uUHRyKShKU0NlbGwq
LCBDb25zdHJ1Y3REYXRhJik7CiAgICAgICAgIEdldENvbnN0cnVjdERhdGFGdW5jdGlvblB0ciBn
ZXRDb25zdHJ1Y3REYXRhOwogCi0gICAgICAgIHR5cGVkZWYgdm9pZCAoKlB1dEZ1bmN0aW9uUHRy
KShKU0NlbGwqLCBFeGVjU3RhdGUqLCBjb25zdCBJZGVudGlmaWVyJiBwcm9wZXJ0eU5hbWUsIEpT
VmFsdWUsIFB1dFByb3BlcnR5U2xvdCYpOworICAgICAgICB0eXBlZGVmIHZvaWQgKCpQdXRGdW5j
dGlvblB0cikoSlNDZWxsKiwgRXhlY1N0YXRlKiwgUHJvcGVydHlOYW1lIHByb3BlcnR5TmFtZSwg
SlNWYWx1ZSwgUHV0UHJvcGVydHlTbG90Jik7CiAgICAgICAgIFB1dEZ1bmN0aW9uUHRyIHB1dDsK
IAogICAgICAgICB0eXBlZGVmIHZvaWQgKCpQdXRCeUluZGV4RnVuY3Rpb25QdHIpKEpTQ2VsbCos
IEV4ZWNTdGF0ZSosIHVuc2lnbmVkIHByb3BlcnR5TmFtZSwgSlNWYWx1ZSwgYm9vbCBzaG91bGRU
aHJvdyk7CiAgICAgICAgIFB1dEJ5SW5kZXhGdW5jdGlvblB0ciBwdXRCeUluZGV4OwogCi0gICAg
ICAgIHR5cGVkZWYgYm9vbCAoKkRlbGV0ZVByb3BlcnR5RnVuY3Rpb25QdHIpKEpTQ2VsbCosIEV4
ZWNTdGF0ZSosIGNvbnN0IElkZW50aWZpZXImKTsKKyAgICAgICAgdHlwZWRlZiBib29sICgqRGVs
ZXRlUHJvcGVydHlGdW5jdGlvblB0cikoSlNDZWxsKiwgRXhlY1N0YXRlKiwgUHJvcGVydHlOYW1l
KTsKICAgICAgICAgRGVsZXRlUHJvcGVydHlGdW5jdGlvblB0ciBkZWxldGVQcm9wZXJ0eTsKIAog
ICAgICAgICB0eXBlZGVmIGJvb2wgKCpEZWxldGVQcm9wZXJ0eUJ5SW5kZXhGdW5jdGlvblB0ciko
SlNDZWxsKiwgRXhlY1N0YXRlKiwgdW5zaWduZWQpOwogICAgICAgICBEZWxldGVQcm9wZXJ0eUJ5
SW5kZXhGdW5jdGlvblB0ciBkZWxldGVQcm9wZXJ0eUJ5SW5kZXg7CiAKLSAgICAgICAgdHlwZWRl
ZiBib29sICgqR2V0T3duUHJvcGVydHlTbG90RnVuY3Rpb25QdHIpKEpTQ2VsbCosIEV4ZWNTdGF0
ZSosIGNvbnN0IElkZW50aWZpZXImLCBQcm9wZXJ0eVNsb3QmKTsKKyAgICAgICAgdHlwZWRlZiBi
b29sICgqR2V0T3duUHJvcGVydHlTbG90RnVuY3Rpb25QdHIpKEpTQ2VsbCosIEV4ZWNTdGF0ZSos
IFByb3BlcnR5TmFtZSwgUHJvcGVydHlTbG90Jik7CiAgICAgICAgIEdldE93blByb3BlcnR5U2xv
dEZ1bmN0aW9uUHRyIGdldE93blByb3BlcnR5U2xvdDsKIAogICAgICAgICB0eXBlZGVmIGJvb2wg
KCpHZXRPd25Qcm9wZXJ0eVNsb3RCeUluZGV4RnVuY3Rpb25QdHIpKEpTQ2VsbCosIEV4ZWNTdGF0
ZSosIHVuc2lnbmVkLCBQcm9wZXJ0eVNsb3QmKTsKQEAgLTgxLDEzICs4MSwxMyBAQCBuYW1lc3Bh
Y2UgSlNDIHsKICAgICAgICAgdHlwZWRlZiBib29sICgqSGFzSW5zdGFuY2VGdW5jdGlvblB0ciko
SlNPYmplY3QqLCBFeGVjU3RhdGUqLCBKU1ZhbHVlLCBKU1ZhbHVlKTsKICAgICAgICAgSGFzSW5z
dGFuY2VGdW5jdGlvblB0ciBoYXNJbnN0YW5jZTsKIAotICAgICAgICB0eXBlZGVmIHZvaWQgKCpQ
dXRXaXRoQXR0cmlidXRlc0Z1bmN0aW9uUHRyKShKU09iamVjdCosIEV4ZWNTdGF0ZSosIGNvbnN0
IElkZW50aWZpZXImIHByb3BlcnR5TmFtZSwgSlNWYWx1ZSwgdW5zaWduZWQgYXR0cmlidXRlcyk7
CisgICAgICAgIHR5cGVkZWYgdm9pZCAoKlB1dFdpdGhBdHRyaWJ1dGVzRnVuY3Rpb25QdHIpKEpT
T2JqZWN0KiwgRXhlY1N0YXRlKiwgUHJvcGVydHlOYW1lIHByb3BlcnR5TmFtZSwgSlNWYWx1ZSwg
dW5zaWduZWQgYXR0cmlidXRlcyk7CiAgICAgICAgIFB1dFdpdGhBdHRyaWJ1dGVzRnVuY3Rpb25Q
dHIgcHV0RGlyZWN0VmlydHVhbDsKIAotICAgICAgICB0eXBlZGVmIGJvb2wgKCpEZWZpbmVPd25Q
cm9wZXJ0eUZ1bmN0aW9uUHRyKShKU09iamVjdCosIEV4ZWNTdGF0ZSosIGNvbnN0IElkZW50aWZp
ZXImLCBQcm9wZXJ0eURlc2NyaXB0b3ImLCBib29sKTsKKyAgICAgICAgdHlwZWRlZiBib29sICgq
RGVmaW5lT3duUHJvcGVydHlGdW5jdGlvblB0cikoSlNPYmplY3QqLCBFeGVjU3RhdGUqLCBQcm9w
ZXJ0eU5hbWUsIFByb3BlcnR5RGVzY3JpcHRvciYsIGJvb2wpOwogICAgICAgICBEZWZpbmVPd25Q
cm9wZXJ0eUZ1bmN0aW9uUHRyIGRlZmluZU93blByb3BlcnR5OwogCi0gICAgICAgIHR5cGVkZWYg
Ym9vbCAoKkdldE93blByb3BlcnR5RGVzY3JpcHRvckZ1bmN0aW9uUHRyKShKU09iamVjdCosIEV4
ZWNTdGF0ZSosIGNvbnN0IElkZW50aWZpZXImLCBQcm9wZXJ0eURlc2NyaXB0b3ImKTsKKyAgICAg
ICAgdHlwZWRlZiBib29sICgqR2V0T3duUHJvcGVydHlEZXNjcmlwdG9yRnVuY3Rpb25QdHIpKEpT
T2JqZWN0KiwgRXhlY1N0YXRlKiwgUHJvcGVydHlOYW1lLCBQcm9wZXJ0eURlc2NyaXB0b3ImKTsK
ICAgICAgICAgR2V0T3duUHJvcGVydHlEZXNjcmlwdG9yRnVuY3Rpb25QdHIgZ2V0T3duUHJvcGVy
dHlEZXNjcmlwdG9yOwogICAgIH07CiAKSW5kZXg6IFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50
aW1lL0RhdGVDb25zdHJ1Y3Rvci5jcHAKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL0phdmFTY3JpcHRD
b3JlL3J1bnRpbWUvRGF0ZUNvbnN0cnVjdG9yLmNwcAkocmV2aXNpb24gMTE2NjY3KQorKysgU291
cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvRGF0ZUNvbnN0cnVjdG9yLmNwcAkod29ya2luZyBj
b3B5KQpAQCAtODEsMTcgKzgxLDE3IEBAIERhdGVDb25zdHJ1Y3Rvcjo6RGF0ZUNvbnN0cnVjdG9y
KEpTR2xvYmEKIAogdm9pZCBEYXRlQ29uc3RydWN0b3I6OmZpbmlzaENyZWF0aW9uKEV4ZWNTdGF0
ZSogZXhlYywgRGF0ZVByb3RvdHlwZSogZGF0ZVByb3RvdHlwZSkKIHsKLSAgICBCYXNlOjpmaW5p
c2hDcmVhdGlvbihleGVjLT5nbG9iYWxEYXRhKCksIElkZW50aWZpZXIoZXhlYywgZGF0ZVByb3Rv
dHlwZS0+Y2xhc3NJbmZvKCktPmNsYXNzTmFtZSkpOworICAgIEJhc2U6OmZpbmlzaENyZWF0aW9u
KGV4ZWMtPmdsb2JhbERhdGEoKSwgZGF0ZVByb3RvdHlwZS0+Y2xhc3NJbmZvKCktPmNsYXNzTmFt
ZSk7CiAgICAgcHV0RGlyZWN0V2l0aG91dFRyYW5zaXRpb24oZXhlYy0+Z2xvYmFsRGF0YSgpLCBl
eGVjLT5wcm9wZXJ0eU5hbWVzKCkucHJvdG90eXBlLCBkYXRlUHJvdG90eXBlLCBEb250RW51bSB8
IERvbnREZWxldGUgfCBSZWFkT25seSk7CiAgICAgcHV0RGlyZWN0V2l0aG91dFRyYW5zaXRpb24o
ZXhlYy0+Z2xvYmFsRGF0YSgpLCBleGVjLT5wcm9wZXJ0eU5hbWVzKCkubGVuZ3RoLCBqc051bWJl
cig3KSwgUmVhZE9ubHkgfCBEb250RW51bSB8IERvbnREZWxldGUpOwogfQogCi1ib29sIERhdGVD
b25zdHJ1Y3Rvcjo6Z2V0T3duUHJvcGVydHlTbG90KEpTQ2VsbCogY2VsbCwgRXhlY1N0YXRlKiBl
eGVjLCBjb25zdCBJZGVudGlmaWVyJiBwcm9wZXJ0eU5hbWUsIFByb3BlcnR5U2xvdCAmc2xvdCkK
K2Jvb2wgRGF0ZUNvbnN0cnVjdG9yOjpnZXRPd25Qcm9wZXJ0eVNsb3QoSlNDZWxsKiBjZWxsLCBF
eGVjU3RhdGUqIGV4ZWMsIFByb3BlcnR5TmFtZSBwcm9wZXJ0eU5hbWUsIFByb3BlcnR5U2xvdCAm
c2xvdCkKIHsKICAgICByZXR1cm4gZ2V0U3RhdGljRnVuY3Rpb25TbG90PEludGVybmFsRnVuY3Rp
b24+KGV4ZWMsIEV4ZWNTdGF0ZTo6ZGF0ZUNvbnN0cnVjdG9yVGFibGUoZXhlYyksIGpzQ2FzdDxE
YXRlQ29uc3RydWN0b3IqPihjZWxsKSwgcHJvcGVydHlOYW1lLCBzbG90KTsKIH0KIAotYm9vbCBE
YXRlQ29uc3RydWN0b3I6OmdldE93blByb3BlcnR5RGVzY3JpcHRvcihKU09iamVjdCogb2JqZWN0
LCBFeGVjU3RhdGUqIGV4ZWMsIGNvbnN0IElkZW50aWZpZXImIHByb3BlcnR5TmFtZSwgUHJvcGVy
dHlEZXNjcmlwdG9yJiBkZXNjcmlwdG9yKQorYm9vbCBEYXRlQ29uc3RydWN0b3I6OmdldE93blBy
b3BlcnR5RGVzY3JpcHRvcihKU09iamVjdCogb2JqZWN0LCBFeGVjU3RhdGUqIGV4ZWMsIFByb3Bl
cnR5TmFtZSBwcm9wZXJ0eU5hbWUsIFByb3BlcnR5RGVzY3JpcHRvciYgZGVzY3JpcHRvcikKIHsK
ICAgICByZXR1cm4gZ2V0U3RhdGljRnVuY3Rpb25EZXNjcmlwdG9yPEludGVybmFsRnVuY3Rpb24+
KGV4ZWMsIEV4ZWNTdGF0ZTo6ZGF0ZUNvbnN0cnVjdG9yVGFibGUoZXhlYyksIGpzQ2FzdDxEYXRl
Q29uc3RydWN0b3IqPihvYmplY3QpLCBwcm9wZXJ0eU5hbWUsIGRlc2NyaXB0b3IpOwogfQpJbmRl
eDogU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvRGF0ZUNvbnN0cnVjdG9yLmgKPT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PQotLS0gU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvRGF0ZUNvbnN0cnVjdG9yLmgJ
KHJldmlzaW9uIDExNjY2NykKKysrIFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL0RhdGVD
b25zdHJ1Y3Rvci5oCSh3b3JraW5nIGNvcHkpCkBAIC01NCw5ICs1NCw5IEBAIG5hbWVzcGFjZSBK
U0MgewogICAgICAgICBzdGF0aWMgQ29uc3RydWN0VHlwZSBnZXRDb25zdHJ1Y3REYXRhKEpTQ2Vs
bCosIENvbnN0cnVjdERhdGEmKTsKICAgICAgICAgc3RhdGljIENhbGxUeXBlIGdldENhbGxEYXRh
KEpTQ2VsbCosIENhbGxEYXRhJik7CiAKLSAgICAgICAgc3RhdGljIGJvb2wgZ2V0T3duUHJvcGVy
dHlTbG90KEpTQ2VsbCosIEV4ZWNTdGF0ZSosIGNvbnN0IElkZW50aWZpZXImLCBQcm9wZXJ0eVNs
b3QmKTsKKyAgICAgICAgc3RhdGljIGJvb2wgZ2V0T3duUHJvcGVydHlTbG90KEpTQ2VsbCosIEV4
ZWNTdGF0ZSosIFByb3BlcnR5TmFtZSwgUHJvcGVydHlTbG90Jik7CiAKLSAgICAgICAgc3RhdGlj
IGJvb2wgZ2V0T3duUHJvcGVydHlEZXNjcmlwdG9yKEpTT2JqZWN0KiwgRXhlY1N0YXRlKiwgY29u
c3QgSWRlbnRpZmllciYsIFByb3BlcnR5RGVzY3JpcHRvciYpOworICAgICAgICBzdGF0aWMgYm9v
bCBnZXRPd25Qcm9wZXJ0eURlc2NyaXB0b3IoSlNPYmplY3QqLCBFeGVjU3RhdGUqLCBQcm9wZXJ0
eU5hbWUsIFByb3BlcnR5RGVzY3JpcHRvciYpOwogICAgIH07CiAKICAgICBKU09iamVjdCogY29u
c3RydWN0RGF0ZShFeGVjU3RhdGUqLCBKU0dsb2JhbE9iamVjdCosIGNvbnN0IEFyZ0xpc3QmKTsK
SW5kZXg6IFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL0RhdGVQcm90b3R5cGUuY3BwCj09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT0KLS0tIFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL0RhdGVQcm90b3R5cGUu
Y3BwCShyZXZpc2lvbiAxMTY2NjcpCisrKyBTb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9E
YXRlUHJvdG90eXBlLmNwcAkod29ya2luZyBjb3B5KQpAQCAtNDY3LDEyICs0NjcsMTIgQEAgdm9p
ZCBEYXRlUHJvdG90eXBlOjpmaW5pc2hDcmVhdGlvbihFeGVjUwogICAgIC8vIFRoZSBjb25zdHJ1
Y3RvciB3aWxsIGJlIGFkZGVkIGxhdGVyLCBhZnRlciBEYXRlQ29uc3RydWN0b3IgaGFzIGJlZW4g
YnVpbHQuCiB9CiAKLWJvb2wgRGF0ZVByb3RvdHlwZTo6Z2V0T3duUHJvcGVydHlTbG90KEpTQ2Vs
bCogY2VsbCwgRXhlY1N0YXRlKiBleGVjLCBjb25zdCBJZGVudGlmaWVyJiBwcm9wZXJ0eU5hbWUs
IFByb3BlcnR5U2xvdCYgc2xvdCkKK2Jvb2wgRGF0ZVByb3RvdHlwZTo6Z2V0T3duUHJvcGVydHlT
bG90KEpTQ2VsbCogY2VsbCwgRXhlY1N0YXRlKiBleGVjLCBQcm9wZXJ0eU5hbWUgcHJvcGVydHlO
YW1lLCBQcm9wZXJ0eVNsb3QmIHNsb3QpCiB7CiAgICAgcmV0dXJuIGdldFN0YXRpY0Z1bmN0aW9u
U2xvdDxKU09iamVjdD4oZXhlYywgRXhlY1N0YXRlOjpkYXRlVGFibGUoZXhlYyksIGpzQ2FzdDxE
YXRlUHJvdG90eXBlKj4oY2VsbCksIHByb3BlcnR5TmFtZSwgc2xvdCk7CiB9CiAKLWJvb2wgRGF0
ZVByb3RvdHlwZTo6Z2V0T3duUHJvcGVydHlEZXNjcmlwdG9yKEpTT2JqZWN0KiBvYmplY3QsIEV4
ZWNTdGF0ZSogZXhlYywgY29uc3QgSWRlbnRpZmllciYgcHJvcGVydHlOYW1lLCBQcm9wZXJ0eURl
c2NyaXB0b3ImIGRlc2NyaXB0b3IpCitib29sIERhdGVQcm90b3R5cGU6OmdldE93blByb3BlcnR5
RGVzY3JpcHRvcihKU09iamVjdCogb2JqZWN0LCBFeGVjU3RhdGUqIGV4ZWMsIFByb3BlcnR5TmFt
ZSBwcm9wZXJ0eU5hbWUsIFByb3BlcnR5RGVzY3JpcHRvciYgZGVzY3JpcHRvcikKIHsKICAgICBy
ZXR1cm4gZ2V0U3RhdGljRnVuY3Rpb25EZXNjcmlwdG9yPEpTT2JqZWN0PihleGVjLCBFeGVjU3Rh
dGU6OmRhdGVUYWJsZShleGVjKSwganNDYXN0PERhdGVQcm90b3R5cGUqPihvYmplY3QpLCBwcm9w
ZXJ0eU5hbWUsIGRlc2NyaXB0b3IpOwogfQpJbmRleDogU291cmNlL0phdmFTY3JpcHRDb3JlL3J1
bnRpbWUvRGF0ZVByb3RvdHlwZS5oCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9KYXZhU2NyaXB0Q29y
ZS9ydW50aW1lL0RhdGVQcm90b3R5cGUuaAkocmV2aXNpb24gMTE2NjY3KQorKysgU291cmNlL0ph
dmFTY3JpcHRDb3JlL3J1bnRpbWUvRGF0ZVByb3RvdHlwZS5oCSh3b3JraW5nIGNvcHkpCkBAIC00
MCw5ICs0MCw5IEBAIG5hbWVzcGFjZSBKU0MgewogICAgICAgICAgICAgcHJvdG90eXBlLT5maW5p
c2hDcmVhdGlvbihleGVjLCBnbG9iYWxPYmplY3QpOwogICAgICAgICAgICAgcmV0dXJuIHByb3Rv
dHlwZTsKICAgICAgICAgfQotICAgICAgICBzdGF0aWMgYm9vbCBnZXRPd25Qcm9wZXJ0eVNsb3Qo
SlNDZWxsKiwgRXhlY1N0YXRlKiwgY29uc3QgSWRlbnRpZmllciYsIFByb3BlcnR5U2xvdCYpOwor
ICAgICAgICBzdGF0aWMgYm9vbCBnZXRPd25Qcm9wZXJ0eVNsb3QoSlNDZWxsKiwgRXhlY1N0YXRl
KiwgUHJvcGVydHlOYW1lLCBQcm9wZXJ0eVNsb3QmKTsKIAotICAgICAgICBzdGF0aWMgYm9vbCBn
ZXRPd25Qcm9wZXJ0eURlc2NyaXB0b3IoSlNPYmplY3QqLCBFeGVjU3RhdGUqLCBjb25zdCBJZGVu
dGlmaWVyJiwgUHJvcGVydHlEZXNjcmlwdG9yJik7CisgICAgICAgIHN0YXRpYyBib29sIGdldE93
blByb3BlcnR5RGVzY3JpcHRvcihKU09iamVjdCosIEV4ZWNTdGF0ZSosIFByb3BlcnR5TmFtZSwg
UHJvcGVydHlEZXNjcmlwdG9yJik7CiAKICAgICAgICAgc3RhdGljIGNvbnN0IENsYXNzSW5mbyBz
X2luZm87CiAKSW5kZXg6IFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL0Vycm9yLmgKPT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PQotLS0gU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvRXJyb3IuaAkocmV2aXNp
b24gMTE2NjY3KQorKysgU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvRXJyb3IuaAkod29y
a2luZyBjb3B5KQpAQCAtOTAsNyArOTAsNyBAQCBuYW1lc3BhY2UgSlNDIHsKICAgICAgICAgc3Rh
dGljIFN0cmljdE1vZGVUeXBlRXJyb3JGdW5jdGlvbiogY3JlYXRlKEV4ZWNTdGF0ZSogZXhlYywg
SlNHbG9iYWxPYmplY3QqIGdsb2JhbE9iamVjdCwgU3RydWN0dXJlKiBzdHJ1Y3R1cmUsIGNvbnN0
IFVTdHJpbmcmIG1lc3NhZ2UpCiAgICAgICAgIHsKICAgICAgICAgICAgIFN0cmljdE1vZGVUeXBl
RXJyb3JGdW5jdGlvbiogZnVuY3Rpb24gPSBuZXcgKE5vdE51bGwsIGFsbG9jYXRlQ2VsbDxTdHJp
Y3RNb2RlVHlwZUVycm9yRnVuY3Rpb24+KCpleGVjLT5oZWFwKCkpKSBTdHJpY3RNb2RlVHlwZUVy
cm9yRnVuY3Rpb24oZ2xvYmFsT2JqZWN0LCBzdHJ1Y3R1cmUsIG1lc3NhZ2UpOwotICAgICAgICAg
ICAgZnVuY3Rpb24tPmZpbmlzaENyZWF0aW9uKGV4ZWMtPmdsb2JhbERhdGEoKSwgZXhlYy0+Z2xv
YmFsRGF0YSgpLnByb3BlcnR5TmFtZXMtPmVtcHR5SWRlbnRpZmllcik7CisgICAgICAgICAgICBm
dW5jdGlvbi0+ZmluaXNoQ3JlYXRpb24oZXhlYy0+Z2xvYmFsRGF0YSgpLCAiIik7CiAgICAgICAg
ICAgICByZXR1cm4gZnVuY3Rpb247CiAgICAgICAgIH0KICAgICAKSW5kZXg6IFNvdXJjZS9KYXZh
U2NyaXB0Q29yZS9ydW50aW1lL0Vycm9yQ29uc3RydWN0b3IuY3BwCj09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNv
dXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL0Vycm9yQ29uc3RydWN0b3IuY3BwCShyZXZpc2lv
biAxMTY2NjcpCisrKyBTb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9FcnJvckNvbnN0cnVj
dG9yLmNwcAkod29ya2luZyBjb3B5KQpAQCAtMzksNyArMzksNyBAQCBFcnJvckNvbnN0cnVjdG9y
OjpFcnJvckNvbnN0cnVjdG9yKEpTR2xvCiAKIHZvaWQgRXJyb3JDb25zdHJ1Y3Rvcjo6ZmluaXNo
Q3JlYXRpb24oRXhlY1N0YXRlKiBleGVjLCBFcnJvclByb3RvdHlwZSogZXJyb3JQcm90b3R5cGUp
CiB7Ci0gICAgQmFzZTo6ZmluaXNoQ3JlYXRpb24oZXhlYy0+Z2xvYmFsRGF0YSgpLCBJZGVudGlm
aWVyKGV4ZWMsIGVycm9yUHJvdG90eXBlLT5jbGFzc0luZm8oKS0+Y2xhc3NOYW1lKSk7CisgICAg
QmFzZTo6ZmluaXNoQ3JlYXRpb24oZXhlYy0+Z2xvYmFsRGF0YSgpLCBlcnJvclByb3RvdHlwZS0+
Y2xhc3NJbmZvKCktPmNsYXNzTmFtZSk7CiAgICAgLy8gRUNNQSAxNS4xMS4zLjEgRXJyb3IucHJv
dG90eXBlCiAgICAgcHV0RGlyZWN0V2l0aG91dFRyYW5zaXRpb24oZXhlYy0+Z2xvYmFsRGF0YSgp
LCBleGVjLT5wcm9wZXJ0eU5hbWVzKCkucHJvdG90eXBlLCBlcnJvclByb3RvdHlwZSwgRG9udEVu
dW0gfCBEb250RGVsZXRlIHwgUmVhZE9ubHkpOwogICAgIHB1dERpcmVjdFdpdGhvdXRUcmFuc2l0
aW9uKGV4ZWMtPmdsb2JhbERhdGEoKSwgZXhlYy0+cHJvcGVydHlOYW1lcygpLmxlbmd0aCwganNO
dW1iZXIoMSksIERvbnREZWxldGUgfCBSZWFkT25seSB8IERvbnRFbnVtKTsKSW5kZXg6IFNvdXJj
ZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL0Vycm9yUHJvdG90eXBlLmNwcAo9PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0t
LSBTb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9FcnJvclByb3RvdHlwZS5jcHAJKHJldmlz
aW9uIDExNjY2NykKKysrIFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL0Vycm9yUHJvdG90
eXBlLmNwcAkod29ya2luZyBjb3B5KQpAQCAtNjMsMTIgKzYzLDEyIEBAIHZvaWQgRXJyb3JQcm90
b3R5cGU6OmZpbmlzaENyZWF0aW9uKEV4ZWMKICAgICBwdXREaXJlY3QoZXhlYy0+Z2xvYmFsRGF0
YSgpLCBleGVjLT5wcm9wZXJ0eU5hbWVzKCkubmFtZSwganNOb250cml2aWFsU3RyaW5nKGV4ZWMs
ICJFcnJvciIpLCBEb250RW51bSk7CiB9CiAKLWJvb2wgRXJyb3JQcm90b3R5cGU6OmdldE93blBy
b3BlcnR5U2xvdChKU0NlbGwqIGNlbGwsIEV4ZWNTdGF0ZSogZXhlYywgY29uc3QgSWRlbnRpZmll
ciYgcHJvcGVydHlOYW1lLCBQcm9wZXJ0eVNsb3QgJnNsb3QpCitib29sIEVycm9yUHJvdG90eXBl
OjpnZXRPd25Qcm9wZXJ0eVNsb3QoSlNDZWxsKiBjZWxsLCBFeGVjU3RhdGUqIGV4ZWMsIFByb3Bl
cnR5TmFtZSBwcm9wZXJ0eU5hbWUsIFByb3BlcnR5U2xvdCAmc2xvdCkKIHsKICAgICByZXR1cm4g
Z2V0U3RhdGljRnVuY3Rpb25TbG90PEVycm9ySW5zdGFuY2U+KGV4ZWMsIEV4ZWNTdGF0ZTo6ZXJy
b3JQcm90b3R5cGVUYWJsZShleGVjKSwganNDYXN0PEVycm9yUHJvdG90eXBlKj4oY2VsbCksIHBy
b3BlcnR5TmFtZSwgc2xvdCk7CiB9CiAKLWJvb2wgRXJyb3JQcm90b3R5cGU6OmdldE93blByb3Bl
cnR5RGVzY3JpcHRvcihKU09iamVjdCogb2JqZWN0LCBFeGVjU3RhdGUqIGV4ZWMsIGNvbnN0IElk
ZW50aWZpZXImIHByb3BlcnR5TmFtZSwgUHJvcGVydHlEZXNjcmlwdG9yJiBkZXNjcmlwdG9yKQor
Ym9vbCBFcnJvclByb3RvdHlwZTo6Z2V0T3duUHJvcGVydHlEZXNjcmlwdG9yKEpTT2JqZWN0KiBv
YmplY3QsIEV4ZWNTdGF0ZSogZXhlYywgUHJvcGVydHlOYW1lIHByb3BlcnR5TmFtZSwgUHJvcGVy
dHlEZXNjcmlwdG9yJiBkZXNjcmlwdG9yKQogewogICAgIHJldHVybiBnZXRTdGF0aWNGdW5jdGlv
bkRlc2NyaXB0b3I8RXJyb3JJbnN0YW5jZT4oZXhlYywgRXhlY1N0YXRlOjplcnJvclByb3RvdHlw
ZVRhYmxlKGV4ZWMpLCBqc0Nhc3Q8RXJyb3JQcm90b3R5cGUqPihvYmplY3QpLCBwcm9wZXJ0eU5h
bWUsIGRlc2NyaXB0b3IpOwogfQpJbmRleDogU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUv
RXJyb3JQcm90b3R5cGUuaAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVu
dGltZS9FcnJvclByb3RvdHlwZS5oCShyZXZpc2lvbiAxMTY2NjcpCisrKyBTb3VyY2UvSmF2YVNj
cmlwdENvcmUvcnVudGltZS9FcnJvclByb3RvdHlwZS5oCSh3b3JraW5nIGNvcHkpCkBAIC01Miw4
ICs1Miw4IEBAIG5hbWVzcGFjZSBKU0MgewogICAgICAgICBzdGF0aWMgY29uc3QgdW5zaWduZWQg
U3RydWN0dXJlRmxhZ3MgPSBPdmVycmlkZXNHZXRPd25Qcm9wZXJ0eVNsb3QgfCBFcnJvckluc3Rh
bmNlOjpTdHJ1Y3R1cmVGbGFnczsKIAogICAgIHByaXZhdGU6Ci0gICAgICAgIHN0YXRpYyBib29s
IGdldE93blByb3BlcnR5U2xvdChKU0NlbGwqLCBFeGVjU3RhdGUqLCBjb25zdCBJZGVudGlmaWVy
JiwgUHJvcGVydHlTbG90Jik7Ci0gICAgICAgIHN0YXRpYyBib29sIGdldE93blByb3BlcnR5RGVz
Y3JpcHRvcihKU09iamVjdCosIEV4ZWNTdGF0ZSosIGNvbnN0IElkZW50aWZpZXImLCBQcm9wZXJ0
eURlc2NyaXB0b3ImKTsKKyAgICAgICAgc3RhdGljIGJvb2wgZ2V0T3duUHJvcGVydHlTbG90KEpT
Q2VsbCosIEV4ZWNTdGF0ZSosIFByb3BlcnR5TmFtZSwgUHJvcGVydHlTbG90Jik7CisgICAgICAg
IHN0YXRpYyBib29sIGdldE93blByb3BlcnR5RGVzY3JpcHRvcihKU09iamVjdCosIEV4ZWNTdGF0
ZSosIFByb3BlcnR5TmFtZSwgUHJvcGVydHlEZXNjcmlwdG9yJik7CiAgICAgfTsKIAogfSAvLyBu
YW1lc3BhY2UgSlNDCkluZGV4OiBTb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9GdW5jdGlv
bkNvbnN0cnVjdG9yLmNwcAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVu
dGltZS9GdW5jdGlvbkNvbnN0cnVjdG9yLmNwcAkocmV2aXNpb24gMTE2NjY3KQorKysgU291cmNl
L0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvRnVuY3Rpb25Db25zdHJ1Y3Rvci5jcHAJKHdvcmtpbmcg
Y29weSkKQEAgLTQ3LDcgKzQ3LDcgQEAgRnVuY3Rpb25Db25zdHJ1Y3Rvcjo6RnVuY3Rpb25Db25z
dHJ1Y3RvcgogCiB2b2lkIEZ1bmN0aW9uQ29uc3RydWN0b3I6OmZpbmlzaENyZWF0aW9uKEV4ZWNT
dGF0ZSogZXhlYywgRnVuY3Rpb25Qcm90b3R5cGUqIGZ1bmN0aW9uUHJvdG90eXBlKQogewotICAg
IEJhc2U6OmZpbmlzaENyZWF0aW9uKGV4ZWMtPmdsb2JhbERhdGEoKSwgSWRlbnRpZmllcihleGVj
LCBmdW5jdGlvblByb3RvdHlwZS0+Y2xhc3NJbmZvKCktPmNsYXNzTmFtZSkpOworICAgIEJhc2U6
OmZpbmlzaENyZWF0aW9uKGV4ZWMtPmdsb2JhbERhdGEoKSwgZnVuY3Rpb25Qcm90b3R5cGUtPmNs
YXNzSW5mbygpLT5jbGFzc05hbWUpOwogICAgIHB1dERpcmVjdFdpdGhvdXRUcmFuc2l0aW9uKGV4
ZWMtPmdsb2JhbERhdGEoKSwgZXhlYy0+cHJvcGVydHlOYW1lcygpLnByb3RvdHlwZSwgZnVuY3Rp
b25Qcm90b3R5cGUsIERvbnRFbnVtIHwgRG9udERlbGV0ZSB8IFJlYWRPbmx5KTsKIAogICAgIC8v
IE51bWJlciBvZiBhcmd1bWVudHMgZm9yIGNvbnN0cnVjdG9yCkluZGV4OiBTb3VyY2UvSmF2YVNj
cmlwdENvcmUvcnVudGltZS9GdW5jdGlvblByb3RvdHlwZS5jcHAKPT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291
cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvRnVuY3Rpb25Qcm90b3R5cGUuY3BwCShyZXZpc2lv
biAxMTY2NjcpCisrKyBTb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9GdW5jdGlvblByb3Rv
dHlwZS5jcHAJKHdvcmtpbmcgY29weSkKQEAgLTQ3LDcgKzQ3LDcgQEAgRnVuY3Rpb25Qcm90b3R5
cGU6OkZ1bmN0aW9uUHJvdG90eXBlKEpTRwogewogfQogCi12b2lkIEZ1bmN0aW9uUHJvdG90eXBl
OjpmaW5pc2hDcmVhdGlvbihFeGVjU3RhdGUqIGV4ZWMsIGNvbnN0IElkZW50aWZpZXImIG5hbWUp
Cit2b2lkIEZ1bmN0aW9uUHJvdG90eXBlOjpmaW5pc2hDcmVhdGlvbihFeGVjU3RhdGUqIGV4ZWMs
IGNvbnN0IFVTdHJpbmcmIG5hbWUpCiB7CiAgICAgQmFzZTo6ZmluaXNoQ3JlYXRpb24oZXhlYy0+
Z2xvYmFsRGF0YSgpLCBuYW1lKTsKICAgICBwdXREaXJlY3RXaXRob3V0VHJhbnNpdGlvbihleGVj
LT5nbG9iYWxEYXRhKCksIGV4ZWMtPnByb3BlcnR5TmFtZXMoKS5sZW5ndGgsIGpzTnVtYmVyKDAp
LCBEb250RGVsZXRlIHwgUmVhZE9ubHkgfCBEb250RW51bSk7CkBAIC01NSwxNiArNTUsMTYgQEAg
dm9pZCBGdW5jdGlvblByb3RvdHlwZTo6ZmluaXNoQ3JlYXRpb24oRQogCiB2b2lkIEZ1bmN0aW9u
UHJvdG90eXBlOjphZGRGdW5jdGlvblByb3BlcnRpZXMoRXhlY1N0YXRlKiBleGVjLCBKU0dsb2Jh
bE9iamVjdCogZ2xvYmFsT2JqZWN0LCBKU0Z1bmN0aW9uKiogY2FsbEZ1bmN0aW9uLCBKU0Z1bmN0
aW9uKiogYXBwbHlGdW5jdGlvbikKIHsKLSAgICBKU0Z1bmN0aW9uKiB0b1N0cmluZ0Z1bmN0aW9u
ID0gSlNGdW5jdGlvbjo6Y3JlYXRlKGV4ZWMsIGdsb2JhbE9iamVjdCwgMCwgZXhlYy0+cHJvcGVy
dHlOYW1lcygpLnRvU3RyaW5nLCBmdW5jdGlvblByb3RvRnVuY1RvU3RyaW5nKTsKKyAgICBKU0Z1
bmN0aW9uKiB0b1N0cmluZ0Z1bmN0aW9uID0gSlNGdW5jdGlvbjo6Y3JlYXRlKGV4ZWMsIGdsb2Jh
bE9iamVjdCwgMCwgZXhlYy0+cHJvcGVydHlOYW1lcygpLnRvU3RyaW5nLnVzdHJpbmcoKSwgZnVu
Y3Rpb25Qcm90b0Z1bmNUb1N0cmluZyk7CiAgICAgcHV0RGlyZWN0V2l0aG91dFRyYW5zaXRpb24o
ZXhlYy0+Z2xvYmFsRGF0YSgpLCBleGVjLT5wcm9wZXJ0eU5hbWVzKCkudG9TdHJpbmcsIHRvU3Ry
aW5nRnVuY3Rpb24sIERvbnRFbnVtKTsKIAotICAgICphcHBseUZ1bmN0aW9uID0gSlNGdW5jdGlv
bjo6Y3JlYXRlKGV4ZWMsIGdsb2JhbE9iamVjdCwgMiwgZXhlYy0+cHJvcGVydHlOYW1lcygpLmFw
cGx5LCBmdW5jdGlvblByb3RvRnVuY0FwcGx5KTsKKyAgICAqYXBwbHlGdW5jdGlvbiA9IEpTRnVu
Y3Rpb246OmNyZWF0ZShleGVjLCBnbG9iYWxPYmplY3QsIDIsIGV4ZWMtPnByb3BlcnR5TmFtZXMo
KS5hcHBseS51c3RyaW5nKCksIGZ1bmN0aW9uUHJvdG9GdW5jQXBwbHkpOwogICAgIHB1dERpcmVj
dFdpdGhvdXRUcmFuc2l0aW9uKGV4ZWMtPmdsb2JhbERhdGEoKSwgZXhlYy0+cHJvcGVydHlOYW1l
cygpLmFwcGx5LCAqYXBwbHlGdW5jdGlvbiwgRG9udEVudW0pOwogCi0gICAgKmNhbGxGdW5jdGlv
biA9IEpTRnVuY3Rpb246OmNyZWF0ZShleGVjLCBnbG9iYWxPYmplY3QsIDEsIGV4ZWMtPnByb3Bl
cnR5TmFtZXMoKS5jYWxsLCBmdW5jdGlvblByb3RvRnVuY0NhbGwpOworICAgICpjYWxsRnVuY3Rp
b24gPSBKU0Z1bmN0aW9uOjpjcmVhdGUoZXhlYywgZ2xvYmFsT2JqZWN0LCAxLCBleGVjLT5wcm9w
ZXJ0eU5hbWVzKCkuY2FsbC51c3RyaW5nKCksIGZ1bmN0aW9uUHJvdG9GdW5jQ2FsbCk7CiAgICAg
cHV0RGlyZWN0V2l0aG91dFRyYW5zaXRpb24oZXhlYy0+Z2xvYmFsRGF0YSgpLCBleGVjLT5wcm9w
ZXJ0eU5hbWVzKCkuY2FsbCwgKmNhbGxGdW5jdGlvbiwgRG9udEVudW0pOwogCi0gICAgSlNGdW5j
dGlvbiogYmluZEZ1bmN0aW9uID0gSlNGdW5jdGlvbjo6Y3JlYXRlKGV4ZWMsIGdsb2JhbE9iamVj
dCwgMSwgZXhlYy0+cHJvcGVydHlOYW1lcygpLmJpbmQsIGZ1bmN0aW9uUHJvdG9GdW5jQmluZCk7
CisgICAgSlNGdW5jdGlvbiogYmluZEZ1bmN0aW9uID0gSlNGdW5jdGlvbjo6Y3JlYXRlKGV4ZWMs
IGdsb2JhbE9iamVjdCwgMSwgZXhlYy0+cHJvcGVydHlOYW1lcygpLmJpbmQudXN0cmluZygpLCBm
dW5jdGlvblByb3RvRnVuY0JpbmQpOwogICAgIHB1dERpcmVjdFdpdGhvdXRUcmFuc2l0aW9uKGV4
ZWMtPmdsb2JhbERhdGEoKSwgZXhlYy0+cHJvcGVydHlOYW1lcygpLmJpbmQsIGJpbmRGdW5jdGlv
biwgRG9udEVudW0pOwogfQogCkBAIC0yMDcsOSArMjA3LDggQEAgRW5jb2RlZEpTVmFsdWUgSlND
X0hPU1RfQ0FMTCBmdW5jdGlvblBybwogICAgICAgICAgICAgbGVuZ3RoID0gdGFyZ2V0TGVuZ3Ro
IC0gbnVtQm91bmRBcmdzOwogICAgIH0KIAotICAgIElkZW50aWZpZXIgbmFtZShleGVjLCB0YXJn
ZXQuZ2V0KGV4ZWMsIGV4ZWMtPnByb3BlcnR5TmFtZXMoKS5uYW1lKS50b1N0cmluZyhleGVjKS0+
dmFsdWUoZXhlYykpOwotCi0gICAgcmV0dXJuIEpTVmFsdWU6OmVuY29kZShKU0JvdW5kRnVuY3Rp
b246OmNyZWF0ZShleGVjLCBnbG9iYWxPYmplY3QsIHRhcmdldE9iamVjdCwgZXhlYy0+YXJndW1l
bnQoMCksIGJvdW5kQXJncywgbGVuZ3RoLCBuYW1lKSk7CisgICAgSlNTdHJpbmcqIG5hbWUgPSB0
YXJnZXQuZ2V0KGV4ZWMsIGV4ZWMtPnByb3BlcnR5TmFtZXMoKS5uYW1lKS50b1N0cmluZyhleGVj
KTsKKyAgICByZXR1cm4gSlNWYWx1ZTo6ZW5jb2RlKEpTQm91bmRGdW5jdGlvbjo6Y3JlYXRlKGV4
ZWMsIGdsb2JhbE9iamVjdCwgdGFyZ2V0T2JqZWN0LCBleGVjLT5hcmd1bWVudCgwKSwgYm91bmRB
cmdzLCBsZW5ndGgsIG5hbWUtPnZhbHVlKGV4ZWMpKSk7CiB9CiAKIH0gLy8gbmFtZXNwYWNlIEpT
QwpJbmRleDogU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvRnVuY3Rpb25Qcm90b3R5cGUu
aAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09Ci0tLSBTb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9GdW5jdGlvblBy
b3RvdHlwZS5oCShyZXZpc2lvbiAxMTY2NjcpCisrKyBTb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVu
dGltZS9GdW5jdGlvblByb3RvdHlwZS5oCSh3b3JraW5nIGNvcHkpCkBAIC0zMiw3ICszMiw3IEBA
IG5hbWVzcGFjZSBKU0MgewogICAgICAgICBzdGF0aWMgRnVuY3Rpb25Qcm90b3R5cGUqIGNyZWF0
ZShFeGVjU3RhdGUqIGV4ZWMsIEpTR2xvYmFsT2JqZWN0KiBnbG9iYWxPYmplY3QsIFN0cnVjdHVy
ZSogc3RydWN0dXJlKQogICAgICAgICB7CiAgICAgICAgICAgICBGdW5jdGlvblByb3RvdHlwZSog
cHJvdG90eXBlID0gbmV3IChOb3ROdWxsLCBhbGxvY2F0ZUNlbGw8RnVuY3Rpb25Qcm90b3R5cGU+
KCpleGVjLT5oZWFwKCkpKSBGdW5jdGlvblByb3RvdHlwZShnbG9iYWxPYmplY3QsIHN0cnVjdHVy
ZSk7Ci0gICAgICAgICAgICBwcm90b3R5cGUtPmZpbmlzaENyZWF0aW9uKGV4ZWMsIGV4ZWMtPnBy
b3BlcnR5TmFtZXMoKS5udWxsSWRlbnRpZmllcik7CisgICAgICAgICAgICBwcm90b3R5cGUtPmZp
bmlzaENyZWF0aW9uKGV4ZWMsICIiKTsKICAgICAgICAgICAgIHJldHVybiBwcm90b3R5cGU7CiAg
ICAgICAgIH0KICAgICAgICAgCkBAIC00Niw3ICs0Niw3IEBAIG5hbWVzcGFjZSBKU0MgewogICAg
ICAgICBzdGF0aWMgY29uc3QgQ2xhc3NJbmZvIHNfaW5mbzsKIAogICAgIHByb3RlY3RlZDoKLSAg
ICAgICAgdm9pZCBmaW5pc2hDcmVhdGlvbihFeGVjU3RhdGUqLCBjb25zdCBJZGVudGlmaWVyJiBu
YW1lKTsKKyAgICAgICAgdm9pZCBmaW5pc2hDcmVhdGlvbihFeGVjU3RhdGUqLCBjb25zdCBVU3Ry
aW5nJiBuYW1lKTsKIAogICAgIHByaXZhdGU6CiAgICAgICAgIEZ1bmN0aW9uUHJvdG90eXBlKEpT
R2xvYmFsT2JqZWN0KiwgU3RydWN0dXJlKik7CkluZGV4OiBTb3VyY2UvSmF2YVNjcmlwdENvcmUv
cnVudGltZS9JZGVudGlmaWVyLmNwcAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvSmF2YVNjcmlwdENv
cmUvcnVudGltZS9JZGVudGlmaWVyLmNwcAkocmV2aXNpb24gMTE2NjY3KQorKysgU291cmNlL0ph
dmFTY3JpcHRDb3JlL3J1bnRpbWUvSWRlbnRpZmllci5jcHAJKHdvcmtpbmcgY29weSkKQEAgLTE0
NSw1NiArMTQ1LDYgQEAgUGFzc1JlZlB0cjxTdHJpbmdJbXBsPiBJZGVudGlmaWVyOjphZGQ4KAog
ICAgIHJldHVybiBhZGRSZXN1bHQuaXNOZXdFbnRyeSA/IGFkb3B0UmVmKCphZGRSZXN1bHQuaXRl
cmF0b3IpIDogKmFkZFJlc3VsdC5pdGVyYXRvcjsKIH0KIAotdGVtcGxhdGUgPHR5cGVuYW1lIENo
YXJUeXBlPgotQUxXQVlTX0lOTElORSB1aW50MzJfdCBJZGVudGlmaWVyOjp0b1VJbnQzMkZyb21D
aGFyYWN0ZXJzKGNvbnN0IENoYXJUeXBlKiBjaGFyYWN0ZXJzLCB1bnNpZ25lZCBsZW5ndGgsIGJv
b2wmIG9rKQotewotICAgIC8vIEdldCB0aGUgZmlyc3QgY2hhcmFjdGVyLCB0dXJuaW5nIGl0IGlu
dG8gYSBkaWdpdC4KLSAgICB1aW50MzJfdCB2YWx1ZSA9IGNoYXJhY3RlcnNbMF0gLSAnMCc7Ci0g
ICAgaWYgKHZhbHVlID4gOSkKLSAgICAgICAgcmV0dXJuIDA7Ci0gICAgCi0gICAgLy8gQ2hlY2sg
Zm9yIGxlYWRpbmcgemVyb3MuIElmIHRoZSBmaXJzdCBjaGFyYWNoZXIgaXMgMCwgdGhlbiB0aGUK
LSAgICAvLyBsZW5ndGggb2YgdGhlIHN0cmluZyBtdXN0IGJlIG9uZSAtIGUuZy4gIjA0MiIgaXMg
bm90IGVxdWFsIHRvICI0MiIuCi0gICAgaWYgKCF2YWx1ZSAmJiBsZW5ndGggPiAxKQotICAgICAg
ICByZXR1cm4gMDsKLSAgICAKLSAgICB3aGlsZSAoLS1sZW5ndGgpIHsKLSAgICAgICAgLy8gTXVs
dGlwbHkgdmFsdWUgYnkgMTAsIGNoZWNraW5nIGZvciBvdmVyZmxvdyBvdXQgb2YgMzIgYml0cy4K
LSAgICAgICAgaWYgKHZhbHVlID4gMHhGRkZGRkZGRlUgLyAxMCkKLSAgICAgICAgICAgIHJldHVy
biAwOwotICAgICAgICB2YWx1ZSAqPSAxMDsKLSAgICAgICAgCi0gICAgICAgIC8vIEdldCB0aGUg
bmV4dCBjaGFyYWN0ZXIsIHR1cm5pbmcgaXQgaW50byBhIGRpZ2l0LgotICAgICAgICB1aW50MzJf
dCBuZXdWYWx1ZSA9ICooKytjaGFyYWN0ZXJzKSAtICcwJzsKLSAgICAgICAgaWYgKG5ld1ZhbHVl
ID4gOSkKLSAgICAgICAgICAgIHJldHVybiAwOwotICAgICAgICAKLSAgICAgICAgLy8gQWRkIGlu
IHRoZSBvbGQgdmFsdWUsIGNoZWNraW5nIGZvciBvdmVyZmxvdyBvdXQgb2YgMzIgYml0cy4KLSAg
ICAgICAgbmV3VmFsdWUgKz0gdmFsdWU7Ci0gICAgICAgIGlmIChuZXdWYWx1ZSA8IHZhbHVlKQot
ICAgICAgICAgICAgcmV0dXJuIDA7Ci0gICAgICAgIHZhbHVlID0gbmV3VmFsdWU7Ci0gICAgfQot
ICAgIAotICAgIG9rID0gdHJ1ZTsKLSAgICByZXR1cm4gdmFsdWU7Ci19Ci0KLXVpbnQzMl90IElk
ZW50aWZpZXI6OnRvVUludDMyKGNvbnN0IFVTdHJpbmcmIHN0cmluZywgYm9vbCYgb2spCi17Ci0g
ICAgb2sgPSBmYWxzZTsKLQotICAgIHVuc2lnbmVkIGxlbmd0aCA9IHN0cmluZy5sZW5ndGgoKTsK
LQotICAgIC8vIEFuIGVtcHR5IHN0cmluZyBpcyBub3QgYSBudW1iZXIuCi0gICAgaWYgKCFsZW5n
dGgpCi0gICAgICAgIHJldHVybiAwOwotCi0gICAgaWYgKHN0cmluZy5pczhCaXQoKSkKLSAgICAg
ICAgcmV0dXJuIHRvVUludDMyRnJvbUNoYXJhY3RlcnMoc3RyaW5nLmNoYXJhY3RlcnM4KCksIGxl
bmd0aCwgb2spOwotICAgIHJldHVybiB0b1VJbnQzMkZyb21DaGFyYWN0ZXJzKHN0cmluZy5jaGFy
YWN0ZXJzMTYoKSwgbGVuZ3RoLCBvayk7Ci19Ci0KIFBhc3NSZWZQdHI8U3RyaW5nSW1wbD4gSWRl
bnRpZmllcjo6YWRkU2xvd0Nhc2UoSlNHbG9iYWxEYXRhKiBnbG9iYWxEYXRhLCBTdHJpbmdJbXBs
KiByKQogewogICAgIEFTU0VSVCghci0+aXNJZGVudGlmaWVyKCkpOwpJbmRleDogU291cmNlL0ph
dmFTY3JpcHRDb3JlL3J1bnRpbWUvSWRlbnRpZmllci5oCj09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9K
YXZhU2NyaXB0Q29yZS9ydW50aW1lL0lkZW50aWZpZXIuaAkocmV2aXNpb24gMTE2NjY3KQorKysg
U291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvSWRlbnRpZmllci5oCSh3b3JraW5nIGNvcHkp
CkBAIC02MywxMCArNjMsNiBAQCBuYW1lc3BhY2UgSlNDIHsKICAgICAgICAgc3RhdGljIElkZW50
aWZpZXIgZnJvbShKU0dsb2JhbERhdGEqLCBpbnQgeSk7CiAgICAgICAgIHN0YXRpYyBJZGVudGlm
aWVyIGZyb20oSlNHbG9iYWxEYXRhKiwgZG91YmxlIHkpOwogCi0gICAgICAgIEpTX0VYUE9SVF9Q
UklWQVRFIHN0YXRpYyB1aW50MzJfdCB0b1VJbnQzMihjb25zdCBVU3RyaW5nJiwgYm9vbCYgb2sp
OwotICAgICAgICB1aW50MzJfdCB0b1VJbnQzMihib29sJiBvaykgY29uc3QgeyByZXR1cm4gdG9V
SW50MzIobV9zdHJpbmcsIG9rKTsgfQotICAgICAgICB1bnNpZ25lZCB0b0FycmF5SW5kZXgoYm9v
bCYgb2spIGNvbnN0OwotCiAgICAgICAgIGJvb2wgaXNOdWxsKCkgY29uc3QgeyByZXR1cm4gbV9z
dHJpbmcuaXNOdWxsKCk7IH0KICAgICAgICAgYm9vbCBpc0VtcHR5KCkgY29uc3QgeyByZXR1cm4g
bV9zdHJpbmcuaXNFbXB0eSgpOyB9CiAgICAgICAgIApJbmRleDogU291cmNlL0phdmFTY3JpcHRD
b3JlL3J1bnRpbWUvSW50ZXJuYWxGdW5jdGlvbi5jcHAKPT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL0ph
dmFTY3JpcHRDb3JlL3J1bnRpbWUvSW50ZXJuYWxGdW5jdGlvbi5jcHAJKHJldmlzaW9uIDExNjY2
NykKKysrIFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL0ludGVybmFsRnVuY3Rpb24uY3Bw
CSh3b3JraW5nIGNvcHkpCkBAIC0zOSwxMiArMzksMTIgQEAgSW50ZXJuYWxGdW5jdGlvbjo6SW50
ZXJuYWxGdW5jdGlvbihKU0dsbwogewogfQogCi12b2lkIEludGVybmFsRnVuY3Rpb246OmZpbmlz
aENyZWF0aW9uKEpTR2xvYmFsRGF0YSYgZ2xvYmFsRGF0YSwgY29uc3QgSWRlbnRpZmllciYgbmFt
ZSkKK3ZvaWQgSW50ZXJuYWxGdW5jdGlvbjo6ZmluaXNoQ3JlYXRpb24oSlNHbG9iYWxEYXRhJiBn
bG9iYWxEYXRhLCBjb25zdCBVU3RyaW5nJiBuYW1lKQogewogICAgIEJhc2U6OmZpbmlzaENyZWF0
aW9uKGdsb2JhbERhdGEpOwogICAgIEFTU0VSVChpbmhlcml0cygmc19pbmZvKSk7CiAgICAgQVNT
RVJUKG1ldGhvZFRhYmxlKCktPmdldENhbGxEYXRhICE9IEludGVybmFsRnVuY3Rpb246OnNfaW5m
by5tZXRob2RUYWJsZS5nZXRDYWxsRGF0YSk7Ci0gICAgcHV0RGlyZWN0KGdsb2JhbERhdGEsIGds
b2JhbERhdGEucHJvcGVydHlOYW1lcy0+bmFtZSwganNTdHJpbmcoJmdsb2JhbERhdGEsIG5hbWUu
aXNOdWxsKCkgPyAiIiA6IG5hbWUudXN0cmluZygpKSwgRG9udERlbGV0ZSB8IFJlYWRPbmx5IHwg
RG9udEVudW0pOworICAgIHB1dERpcmVjdChnbG9iYWxEYXRhLCBnbG9iYWxEYXRhLnByb3BlcnR5
TmFtZXMtPm5hbWUsIGpzU3RyaW5nKCZnbG9iYWxEYXRhLCBuYW1lLmlzTnVsbCgpID8gIiIgOiBu
YW1lKSwgRG9udERlbGV0ZSB8IFJlYWRPbmx5IHwgRG9udEVudW0pOwogfQogCiBjb25zdCBVU3Ry
aW5nJiBJbnRlcm5hbEZ1bmN0aW9uOjpuYW1lKEV4ZWNTdGF0ZSogZXhlYykKSW5kZXg6IFNvdXJj
ZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL0ludGVybmFsRnVuY3Rpb24uaAo9PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0t
LSBTb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9JbnRlcm5hbEZ1bmN0aW9uLmgJKHJldmlz
aW9uIDExNjY2NykKKysrIFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL0ludGVybmFsRnVu
Y3Rpb24uaAkod29ya2luZyBjb3B5KQpAQCAtNTEsNyArNTEsNyBAQCBuYW1lc3BhY2UgSlNDIHsK
IAogICAgICAgICBKU19FWFBPUlRfUFJJVkFURSBJbnRlcm5hbEZ1bmN0aW9uKEpTR2xvYmFsT2Jq
ZWN0KiwgU3RydWN0dXJlKik7CiAKLSAgICAgICAgSlNfRVhQT1JUX1BSSVZBVEUgdm9pZCBmaW5p
c2hDcmVhdGlvbihKU0dsb2JhbERhdGEmLCBjb25zdCBJZGVudGlmaWVyJiBuYW1lKTsKKyAgICAg
ICAgSlNfRVhQT1JUX1BSSVZBVEUgdm9pZCBmaW5pc2hDcmVhdGlvbihKU0dsb2JhbERhdGEmLCBj
b25zdCBVU3RyaW5nJiBuYW1lKTsKIAogICAgICAgICBzdGF0aWMgQ2FsbFR5cGUgZ2V0Q2FsbERh
dGEoSlNDZWxsKiwgQ2FsbERhdGEmKTsKICAgICB9OwpJbmRleDogU291cmNlL0phdmFTY3JpcHRD
b3JlL3J1bnRpbWUvSlNBY3RpdmF0aW9uLmNwcAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvSmF2YVNj
cmlwdENvcmUvcnVudGltZS9KU0FjdGl2YXRpb24uY3BwCShyZXZpc2lvbiAxMTY2NjcpCisrKyBT
b3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9KU0FjdGl2YXRpb24uY3BwCSh3b3JraW5nIGNv
cHkpCkBAIC05MCw3ICs5MCw3IEBAIHZvaWQgSlNBY3RpdmF0aW9uOjp2aXNpdENoaWxkcmVuKEpT
Q2VsbCoKICAgICB2aXNpdG9yLmFwcGVuZFZhbHVlcyhyZWdpc3RlckFycmF5ICsgb2Zmc2V0LCB0
aGlzT2JqZWN0LT5tX251bUNhcHR1cmVkVmFycyk7CiB9CiAKLWlubGluZSBib29sIEpTQWN0aXZh
dGlvbjo6c3ltYm9sVGFibGVHZXQoY29uc3QgSWRlbnRpZmllciYgcHJvcGVydHlOYW1lLCBQcm9w
ZXJ0eVNsb3QmIHNsb3QpCitpbmxpbmUgYm9vbCBKU0FjdGl2YXRpb246OnN5bWJvbFRhYmxlR2V0
KFByb3BlcnR5TmFtZSBwcm9wZXJ0eU5hbWUsIFByb3BlcnR5U2xvdCYgc2xvdCkKIHsKICAgICBT
eW1ib2xUYWJsZUVudHJ5IGVudHJ5ID0gc3ltYm9sVGFibGUoKS5pbmxpbmVHZXQocHJvcGVydHlO
YW1lLmltcGwoKSk7CiAgICAgaWYgKGVudHJ5LmlzTnVsbCgpKQpAQCAtMTAyLDcgKzEwMiw3IEBA
IGlubGluZSBib29sIEpTQWN0aXZhdGlvbjo6c3ltYm9sVGFibGVHZXQKICAgICByZXR1cm4gdHJ1
ZTsKIH0KIAotaW5saW5lIGJvb2wgSlNBY3RpdmF0aW9uOjpzeW1ib2xUYWJsZVB1dChFeGVjU3Rh
dGUqIGV4ZWMsIGNvbnN0IElkZW50aWZpZXImIHByb3BlcnR5TmFtZSwgSlNWYWx1ZSB2YWx1ZSwg
Ym9vbCBzaG91bGRUaHJvdykKK2lubGluZSBib29sIEpTQWN0aXZhdGlvbjo6c3ltYm9sVGFibGVQ
dXQoRXhlY1N0YXRlKiBleGVjLCBQcm9wZXJ0eU5hbWUgcHJvcGVydHlOYW1lLCBKU1ZhbHVlIHZh
bHVlLCBib29sIHNob3VsZFRocm93KQogewogICAgIEpTR2xvYmFsRGF0YSYgZ2xvYmFsRGF0YSA9
IGV4ZWMtPmdsb2JhbERhdGEoKTsKICAgICBBU1NFUlQoIUhlYXA6OmhlYXAodmFsdWUpIHx8IEhl
YXA6OmhlYXAodmFsdWUpID09IEhlYXA6OmhlYXAodGhpcykpOwpAQCAtMTM3LDcgKzEzNyw3IEBA
IHZvaWQgSlNBY3RpdmF0aW9uOjpnZXRPd25Qcm9wZXJ0eU5hbWVzKEoKICAgICBKU09iamVjdDo6
Z2V0T3duUHJvcGVydHlOYW1lcyh0aGlzT2JqZWN0LCBleGVjLCBwcm9wZXJ0eU5hbWVzLCBtb2Rl
KTsKIH0KIAotaW5saW5lIGJvb2wgSlNBY3RpdmF0aW9uOjpzeW1ib2xUYWJsZVB1dFdpdGhBdHRy
aWJ1dGVzKEpTR2xvYmFsRGF0YSYgZ2xvYmFsRGF0YSwgY29uc3QgSWRlbnRpZmllciYgcHJvcGVy
dHlOYW1lLCBKU1ZhbHVlIHZhbHVlLCB1bnNpZ25lZCBhdHRyaWJ1dGVzKQoraW5saW5lIGJvb2wg
SlNBY3RpdmF0aW9uOjpzeW1ib2xUYWJsZVB1dFdpdGhBdHRyaWJ1dGVzKEpTR2xvYmFsRGF0YSYg
Z2xvYmFsRGF0YSwgUHJvcGVydHlOYW1lIHByb3BlcnR5TmFtZSwgSlNWYWx1ZSB2YWx1ZSwgdW5z
aWduZWQgYXR0cmlidXRlcykKIHsKICAgICBBU1NFUlQoIUhlYXA6OmhlYXAodmFsdWUpIHx8IEhl
YXA6OmhlYXAodmFsdWUpID09IEhlYXA6OmhlYXAodGhpcykpOwogICAgIApAQCAtMTU0LDcgKzE1
NCw3IEBAIGlubGluZSBib29sIEpTQWN0aXZhdGlvbjo6c3ltYm9sVGFibGVQdXQKICAgICByZXR1
cm4gdHJ1ZTsKIH0KIAotYm9vbCBKU0FjdGl2YXRpb246OmdldE93blByb3BlcnR5U2xvdChKU0Nl
bGwqIGNlbGwsIEV4ZWNTdGF0ZSogZXhlYywgY29uc3QgSWRlbnRpZmllciYgcHJvcGVydHlOYW1l
LCBQcm9wZXJ0eVNsb3QmIHNsb3QpCitib29sIEpTQWN0aXZhdGlvbjo6Z2V0T3duUHJvcGVydHlT
bG90KEpTQ2VsbCogY2VsbCwgRXhlY1N0YXRlKiBleGVjLCBQcm9wZXJ0eU5hbWUgcHJvcGVydHlO
YW1lLCBQcm9wZXJ0eVNsb3QmIHNsb3QpCiB7CiAgICAgSlNBY3RpdmF0aW9uKiB0aGlzT2JqZWN0
ID0ganNDYXN0PEpTQWN0aXZhdGlvbio+KGNlbGwpOwogICAgIGlmIChwcm9wZXJ0eU5hbWUgPT0g
ZXhlYy0+cHJvcGVydHlOYW1lcygpLmFyZ3VtZW50cykgewpAQCAtMTc3LDcgKzE3Nyw3IEBAIGJv
b2wgSlNBY3RpdmF0aW9uOjpnZXRPd25Qcm9wZXJ0eVNsb3QoSlMKICAgICByZXR1cm4gZmFsc2U7
CiB9CiAKLXZvaWQgSlNBY3RpdmF0aW9uOjpwdXQoSlNDZWxsKiBjZWxsLCBFeGVjU3RhdGUqIGV4
ZWMsIGNvbnN0IElkZW50aWZpZXImIHByb3BlcnR5TmFtZSwgSlNWYWx1ZSB2YWx1ZSwgUHV0UHJv
cGVydHlTbG90JiBzbG90KQordm9pZCBKU0FjdGl2YXRpb246OnB1dChKU0NlbGwqIGNlbGwsIEV4
ZWNTdGF0ZSogZXhlYywgUHJvcGVydHlOYW1lIHByb3BlcnR5TmFtZSwgSlNWYWx1ZSB2YWx1ZSwg
UHV0UHJvcGVydHlTbG90JiBzbG90KQogewogICAgIEpTQWN0aXZhdGlvbiogdGhpc09iamVjdCA9
IGpzQ2FzdDxKU0FjdGl2YXRpb24qPihjZWxsKTsKICAgICBBU1NFUlQoIUhlYXA6OmhlYXAodmFs
dWUpIHx8IEhlYXA6OmhlYXAodmFsdWUpID09IEhlYXA6OmhlYXAodGhpc09iamVjdCkpOwpAQCAt
MTkzLDcgKzE5Myw3IEBAIHZvaWQgSlNBY3RpdmF0aW9uOjpwdXQoSlNDZWxsKiBjZWxsLCBFeGUK
IH0KIAogLy8gRklYTUU6IE1ha2UgdGhpcyBmdW5jdGlvbiBob25vciBSZWFkT25seSAoY29uc3Qp
IGFuZCBEb250RW51bQotdm9pZCBKU0FjdGl2YXRpb246OnB1dERpcmVjdFZpcnR1YWwoSlNPYmpl
Y3QqIG9iamVjdCwgRXhlY1N0YXRlKiBleGVjLCBjb25zdCBJZGVudGlmaWVyJiBwcm9wZXJ0eU5h
bWUsIEpTVmFsdWUgdmFsdWUsIHVuc2lnbmVkIGF0dHJpYnV0ZXMpCit2b2lkIEpTQWN0aXZhdGlv
bjo6cHV0RGlyZWN0VmlydHVhbChKU09iamVjdCogb2JqZWN0LCBFeGVjU3RhdGUqIGV4ZWMsIFBy
b3BlcnR5TmFtZSBwcm9wZXJ0eU5hbWUsIEpTVmFsdWUgdmFsdWUsIHVuc2lnbmVkIGF0dHJpYnV0
ZXMpCiB7CiAgICAgSlNBY3RpdmF0aW9uKiB0aGlzT2JqZWN0ID0ganNDYXN0PEpTQWN0aXZhdGlv
bio+KG9iamVjdCk7CiAgICAgQVNTRVJUKCFIZWFwOjpoZWFwKHZhbHVlKSB8fCBIZWFwOjpoZWFw
KHZhbHVlKSA9PSBIZWFwOjpoZWFwKHRoaXNPYmplY3QpKTsKQEAgLTIwOCw3ICsyMDgsNyBAQCB2
b2lkIEpTQWN0aXZhdGlvbjo6cHV0RGlyZWN0VmlydHVhbChKU09iCiAgICAgSlNPYmplY3Q6OnB1
dERpcmVjdFZpcnR1YWwodGhpc09iamVjdCwgZXhlYywgcHJvcGVydHlOYW1lLCB2YWx1ZSwgYXR0
cmlidXRlcyk7CiB9CiAKLWJvb2wgSlNBY3RpdmF0aW9uOjpkZWxldGVQcm9wZXJ0eShKU0NlbGwq
IGNlbGwsIEV4ZWNTdGF0ZSogZXhlYywgY29uc3QgSWRlbnRpZmllciYgcHJvcGVydHlOYW1lKQor
Ym9vbCBKU0FjdGl2YXRpb246OmRlbGV0ZVByb3BlcnR5KEpTQ2VsbCogY2VsbCwgRXhlY1N0YXRl
KiBleGVjLCBQcm9wZXJ0eU5hbWUgcHJvcGVydHlOYW1lKQogewogICAgIGlmIChwcm9wZXJ0eU5h
bWUgPT0gZXhlYy0+cHJvcGVydHlOYW1lcygpLmFyZ3VtZW50cykKICAgICAgICAgcmV0dXJuIGZh
bHNlOwpAQCAtMjIxLDcgKzIyMSw3IEBAIEpTT2JqZWN0KiBKU0FjdGl2YXRpb246OnRvVGhpc09i
amVjdChKU0MKICAgICByZXR1cm4gZXhlYy0+Z2xvYmFsVGhpc1ZhbHVlKCk7CiB9CiAKLUpTVmFs
dWUgSlNBY3RpdmF0aW9uOjphcmd1bWVudHNHZXR0ZXIoRXhlY1N0YXRlKiwgSlNWYWx1ZSBzbG90
QmFzZSwgY29uc3QgSWRlbnRpZmllciYpCitKU1ZhbHVlIEpTQWN0aXZhdGlvbjo6YXJndW1lbnRz
R2V0dGVyKEV4ZWNTdGF0ZSosIEpTVmFsdWUgc2xvdEJhc2UsIFByb3BlcnR5TmFtZSkKIHsKICAg
ICBKU0FjdGl2YXRpb24qIGFjdGl2YXRpb24gPSBhc0FjdGl2YXRpb24oc2xvdEJhc2UpOwogICAg
IENhbGxGcmFtZSogY2FsbEZyYW1lID0gQ2FsbEZyYW1lOjpjcmVhdGUocmVpbnRlcnByZXRfY2Fz
dDxSZWdpc3Rlcio+KGFjdGl2YXRpb24tPm1fcmVnaXN0ZXJzKSk7CkluZGV4OiBTb3VyY2UvSmF2
YVNjcmlwdENvcmUvcnVudGltZS9KU0FjdGl2YXRpb24uaAo9PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2Uv
SmF2YVNjcmlwdENvcmUvcnVudGltZS9KU0FjdGl2YXRpb24uaAkocmV2aXNpb24gMTE2NjY3KQor
KysgU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvSlNBY3RpdmF0aW9uLmgJKHdvcmtpbmcg
Y29weSkKQEAgLTU5LDEzICs1OSwxMyBAQCBuYW1lc3BhY2UgSlNDIHsKIAogICAgICAgICBib29s
IGlzRHluYW1pY1Njb3BlKGJvb2wmIHJlcXVpcmVzRHluYW1pY0NoZWNrcykgY29uc3Q7CiAKLSAg
ICAgICAgc3RhdGljIGJvb2wgZ2V0T3duUHJvcGVydHlTbG90KEpTQ2VsbCosIEV4ZWNTdGF0ZSos
IGNvbnN0IElkZW50aWZpZXImLCBQcm9wZXJ0eVNsb3QmKTsKKyAgICAgICAgc3RhdGljIGJvb2wg
Z2V0T3duUHJvcGVydHlTbG90KEpTQ2VsbCosIEV4ZWNTdGF0ZSosIFByb3BlcnR5TmFtZSwgUHJv
cGVydHlTbG90Jik7CiAgICAgICAgIHN0YXRpYyB2b2lkIGdldE93blByb3BlcnR5TmFtZXMoSlNP
YmplY3QqLCBFeGVjU3RhdGUqLCBQcm9wZXJ0eU5hbWVBcnJheSYsIEVudW1lcmF0aW9uTW9kZSk7
CiAKLSAgICAgICAgc3RhdGljIHZvaWQgcHV0KEpTQ2VsbCosIEV4ZWNTdGF0ZSosIGNvbnN0IElk
ZW50aWZpZXImLCBKU1ZhbHVlLCBQdXRQcm9wZXJ0eVNsb3QmKTsKKyAgICAgICAgc3RhdGljIHZv
aWQgcHV0KEpTQ2VsbCosIEV4ZWNTdGF0ZSosIFByb3BlcnR5TmFtZSwgSlNWYWx1ZSwgUHV0UHJv
cGVydHlTbG90Jik7CiAKLSAgICAgICAgc3RhdGljIHZvaWQgcHV0RGlyZWN0VmlydHVhbChKU09i
amVjdCosIEV4ZWNTdGF0ZSosIGNvbnN0IElkZW50aWZpZXImLCBKU1ZhbHVlLCB1bnNpZ25lZCBh
dHRyaWJ1dGVzKTsKLSAgICAgICAgc3RhdGljIGJvb2wgZGVsZXRlUHJvcGVydHkoSlNDZWxsKiwg
RXhlY1N0YXRlKiwgY29uc3QgSWRlbnRpZmllciYgcHJvcGVydHlOYW1lKTsKKyAgICAgICAgc3Rh
dGljIHZvaWQgcHV0RGlyZWN0VmlydHVhbChKU09iamVjdCosIEV4ZWNTdGF0ZSosIFByb3BlcnR5
TmFtZSwgSlNWYWx1ZSwgdW5zaWduZWQgYXR0cmlidXRlcyk7CisgICAgICAgIHN0YXRpYyBib29s
IGRlbGV0ZVByb3BlcnR5KEpTQ2VsbCosIEV4ZWNTdGF0ZSosIFByb3BlcnR5TmFtZSk7CiAKICAg
ICAgICAgc3RhdGljIEpTT2JqZWN0KiB0b1RoaXNPYmplY3QoSlNDZWxsKiwgRXhlY1N0YXRlKik7
CiAKQEAgLTgyLDEzICs4MiwxMyBAQCBuYW1lc3BhY2UgSlNDIHsKICAgICAgICAgc3RhdGljIGNv
bnN0IHVuc2lnbmVkIFN0cnVjdHVyZUZsYWdzID0gSXNFbnZpcm9ubWVudFJlY29yZCB8IE92ZXJy
aWRlc0dldE93blByb3BlcnR5U2xvdCB8IE92ZXJyaWRlc1Zpc2l0Q2hpbGRyZW4gfCBPdmVycmlk
ZXNHZXRQcm9wZXJ0eU5hbWVzIHwgSlNWYXJpYWJsZU9iamVjdDo6U3RydWN0dXJlRmxhZ3M7CiAK
ICAgICBwcml2YXRlOgotICAgICAgICBib29sIHN5bWJvbFRhYmxlR2V0KGNvbnN0IElkZW50aWZp
ZXImLCBQcm9wZXJ0eVNsb3QmKTsKLSAgICAgICAgYm9vbCBzeW1ib2xUYWJsZUdldChjb25zdCBJ
ZGVudGlmaWVyJiwgUHJvcGVydHlEZXNjcmlwdG9yJik7Ci0gICAgICAgIGJvb2wgc3ltYm9sVGFi
bGVHZXQoY29uc3QgSWRlbnRpZmllciYsIFByb3BlcnR5U2xvdCYsIGJvb2wmIHNsb3RJc1dyaXRl
YWJsZSk7Ci0gICAgICAgIGJvb2wgc3ltYm9sVGFibGVQdXQoRXhlY1N0YXRlKiwgY29uc3QgSWRl
bnRpZmllciYsIEpTVmFsdWUsIGJvb2wgc2hvdWxkVGhyb3cpOwotICAgICAgICBib29sIHN5bWJv
bFRhYmxlUHV0V2l0aEF0dHJpYnV0ZXMoSlNHbG9iYWxEYXRhJiwgY29uc3QgSWRlbnRpZmllciYs
IEpTVmFsdWUsIHVuc2lnbmVkIGF0dHJpYnV0ZXMpOworICAgICAgICBib29sIHN5bWJvbFRhYmxl
R2V0KFByb3BlcnR5TmFtZSwgUHJvcGVydHlTbG90Jik7CisgICAgICAgIGJvb2wgc3ltYm9sVGFi
bGVHZXQoUHJvcGVydHlOYW1lLCBQcm9wZXJ0eURlc2NyaXB0b3ImKTsKKyAgICAgICAgYm9vbCBz
eW1ib2xUYWJsZUdldChQcm9wZXJ0eU5hbWUsIFByb3BlcnR5U2xvdCYsIGJvb2wmIHNsb3RJc1dy
aXRlYWJsZSk7CisgICAgICAgIGJvb2wgc3ltYm9sVGFibGVQdXQoRXhlY1N0YXRlKiwgUHJvcGVy
dHlOYW1lLCBKU1ZhbHVlLCBib29sIHNob3VsZFRocm93KTsKKyAgICAgICAgYm9vbCBzeW1ib2xU
YWJsZVB1dFdpdGhBdHRyaWJ1dGVzKEpTR2xvYmFsRGF0YSYsIFByb3BlcnR5TmFtZSwgSlNWYWx1
ZSwgdW5zaWduZWQgYXR0cmlidXRlcyk7CiAKLSAgICAgICAgc3RhdGljIEpTVmFsdWUgYXJndW1l
bnRzR2V0dGVyKEV4ZWNTdGF0ZSosIEpTVmFsdWUsIGNvbnN0IElkZW50aWZpZXImKTsKKyAgICAg
ICAgc3RhdGljIEpTVmFsdWUgYXJndW1lbnRzR2V0dGVyKEV4ZWNTdGF0ZSosIEpTVmFsdWUsIFBy
b3BlcnR5TmFtZSk7CiAgICAgICAgIE5FVkVSX0lOTElORSBQcm9wZXJ0eVNsb3Q6OkdldFZhbHVl
RnVuYyBnZXRBcmd1bWVudHNHZXR0ZXIoKTsKIAogICAgICAgICBpbnQgbV9udW1DYXB0dXJlZEFy
Z3M7CkluZGV4OiBTb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9KU0FycmF5LmNwcAo9PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09Ci0tLSBTb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9KU0FycmF5LmNwcAkocmV2
aXNpb24gMTE2NjY3KQorKysgU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvSlNBcnJheS5j
cHAJKHdvcmtpbmcgY29weSkKQEAgLTUzNSw3ICs1MzUsNyBAQCB2b2lkIEpTQXJyYXk6OnNldExl
bmd0aFdyaXRhYmxlKEV4ZWNTdGF0CiB9CiAKIC8vIERlZmluZWQgaW4gRVM1LjEgMTUuNC41LjEK
LWJvb2wgSlNBcnJheTo6ZGVmaW5lT3duUHJvcGVydHkoSlNPYmplY3QqIG9iamVjdCwgRXhlY1N0
YXRlKiBleGVjLCBjb25zdCBJZGVudGlmaWVyJiBwcm9wZXJ0eU5hbWUsIFByb3BlcnR5RGVzY3Jp
cHRvciYgZGVzY3JpcHRvciwgYm9vbCB0aHJvd0V4Y2VwdGlvbikKK2Jvb2wgSlNBcnJheTo6ZGVm
aW5lT3duUHJvcGVydHkoSlNPYmplY3QqIG9iamVjdCwgRXhlY1N0YXRlKiBleGVjLCBQcm9wZXJ0
eU5hbWUgcHJvcGVydHlOYW1lLCBQcm9wZXJ0eURlc2NyaXB0b3ImIGRlc2NyaXB0b3IsIGJvb2wg
dGhyb3dFeGNlcHRpb24pCiB7CiAgICAgSlNBcnJheSogYXJyYXkgPSBqc0Nhc3Q8SlNBcnJheSo+
KG9iamVjdCk7CiAKQEAgLTYxOCwxMCArNjE4LDkgQEAgYm9vbCBKU0FycmF5OjpkZWZpbmVPd25Q
cm9wZXJ0eShKU09iamVjdAogICAgIH0KIAogICAgIC8vIDQuIEVsc2UgaWYgUCBpcyBhbiBhcnJh
eSBpbmRleCAoMTUuNCksIHRoZW4KLSAgICBib29sIGlzQXJyYXlJbmRleDsKICAgICAvLyBhLiBM
ZXQgaW5kZXggYmUgVG9VaW50MzIoUCkuCi0gICAgdW5zaWduZWQgaW5kZXggPSBwcm9wZXJ0eU5h
bWUudG9BcnJheUluZGV4KGlzQXJyYXlJbmRleCk7Ci0gICAgaWYgKGlzQXJyYXlJbmRleCkgewor
ICAgIHVuc2lnbmVkIGluZGV4ID0gcHJvcGVydHlOYW1lLmFzSW5kZXgoKTsKKyAgICBpZiAoaW5k
ZXggIT0gUHJvcGVydHlOYW1lOjpOb3RBbkluZGV4KSB7CiAgICAgICAgIC8vIGIuIFJlamVjdCBp
ZiBpbmRleCA+PSBvbGRMZW4gYW5kIG9sZExlbkRlc2MuW1tXcml0YWJsZV1dIGlzIGZhbHNlLgog
ICAgICAgICBpZiAoaW5kZXggPj0gYXJyYXktPmxlbmd0aCgpICYmICFhcnJheS0+aXNMZW5ndGhX
cml0YWJsZSgpKQogICAgICAgICAgICAgcmV0dXJuIHJlamVjdChleGVjLCB0aHJvd0V4Y2VwdGlv
biwgIkF0dGVtcHRpbmcgdG8gZGVmaW5lIG51bWVyaWMgcHJvcGVydHkgb24gYXJyYXkgd2l0aCBu
b24td3JpdGFibGUgbGVuZ3RoIHByb3BlcnR5LiIpOwpAQCAtNjY1LDcgKzY2NCw3IEBAIGJvb2wg
SlNBcnJheTo6Z2V0T3duUHJvcGVydHlTbG90QnlJbmRleCgKICAgICByZXR1cm4gSlNPYmplY3Q6
OmdldE93blByb3BlcnR5U2xvdCh0aGlzT2JqZWN0LCBleGVjLCBJZGVudGlmaWVyOjpmcm9tKGV4
ZWMsIGkpLCBzbG90KTsKIH0KIAotYm9vbCBKU0FycmF5OjpnZXRPd25Qcm9wZXJ0eVNsb3QoSlND
ZWxsKiBjZWxsLCBFeGVjU3RhdGUqIGV4ZWMsIGNvbnN0IElkZW50aWZpZXImIHByb3BlcnR5TmFt
ZSwgUHJvcGVydHlTbG90JiBzbG90KQorYm9vbCBKU0FycmF5OjpnZXRPd25Qcm9wZXJ0eVNsb3Qo
SlNDZWxsKiBjZWxsLCBFeGVjU3RhdGUqIGV4ZWMsIFByb3BlcnR5TmFtZSBwcm9wZXJ0eU5hbWUs
IFByb3BlcnR5U2xvdCYgc2xvdCkKIHsKICAgICBKU0FycmF5KiB0aGlzT2JqZWN0ID0ganNDYXN0
PEpTQXJyYXkqPihjZWxsKTsKICAgICBpZiAocHJvcGVydHlOYW1lID09IGV4ZWMtPnByb3BlcnR5
TmFtZXMoKS5sZW5ndGgpIHsKQEAgLTY3MywxNSArNjcyLDE0IEBAIGJvb2wgSlNBcnJheTo6Z2V0
T3duUHJvcGVydHlTbG90KEpTQ2VsbCoKICAgICAgICAgcmV0dXJuIHRydWU7CiAgICAgfQogCi0g
ICAgYm9vbCBpc0FycmF5SW5kZXg7Ci0gICAgdW5zaWduZWQgaSA9IHByb3BlcnR5TmFtZS50b0Fy
cmF5SW5kZXgoaXNBcnJheUluZGV4KTsKLSAgICBpZiAoaXNBcnJheUluZGV4KQorICAgIHVuc2ln
bmVkIGkgPSBwcm9wZXJ0eU5hbWUuYXNJbmRleCgpOworICAgIGlmIChpICE9IFByb3BlcnR5TmFt
ZTo6Tm90QW5JbmRleCkKICAgICAgICAgcmV0dXJuIEpTQXJyYXk6OmdldE93blByb3BlcnR5U2xv
dEJ5SW5kZXgodGhpc09iamVjdCwgZXhlYywgaSwgc2xvdCk7CiAKICAgICByZXR1cm4gSlNPYmpl
Y3Q6OmdldE93blByb3BlcnR5U2xvdCh0aGlzT2JqZWN0LCBleGVjLCBwcm9wZXJ0eU5hbWUsIHNs
b3QpOwogfQogCi1ib29sIEpTQXJyYXk6OmdldE93blByb3BlcnR5RGVzY3JpcHRvcihKU09iamVj
dCogb2JqZWN0LCBFeGVjU3RhdGUqIGV4ZWMsIGNvbnN0IElkZW50aWZpZXImIHByb3BlcnR5TmFt
ZSwgUHJvcGVydHlEZXNjcmlwdG9yJiBkZXNjcmlwdG9yKQorYm9vbCBKU0FycmF5OjpnZXRPd25Q
cm9wZXJ0eURlc2NyaXB0b3IoSlNPYmplY3QqIG9iamVjdCwgRXhlY1N0YXRlKiBleGVjLCBQcm9w
ZXJ0eU5hbWUgcHJvcGVydHlOYW1lLCBQcm9wZXJ0eURlc2NyaXB0b3ImIGRlc2NyaXB0b3IpCiB7
CiAgICAgSlNBcnJheSogdGhpc09iamVjdCA9IGpzQ2FzdDxKU0FycmF5Kj4ob2JqZWN0KTsKICAg
ICBpZiAocHJvcGVydHlOYW1lID09IGV4ZWMtPnByb3BlcnR5TmFtZXMoKS5sZW5ndGgpIHsKQEAg
LTY5MSw5ICs2ODksOCBAQCBib29sIEpTQXJyYXk6OmdldE93blByb3BlcnR5RGVzY3JpcHRvcihK
CiAKICAgICBBcnJheVN0b3JhZ2UqIHN0b3JhZ2UgPSB0aGlzT2JqZWN0LT5tX3N0b3JhZ2U7CiAg
ICAgCi0gICAgYm9vbCBpc0FycmF5SW5kZXg7Ci0gICAgdW5zaWduZWQgaSA9IHByb3BlcnR5TmFt
ZS50b0FycmF5SW5kZXgoaXNBcnJheUluZGV4KTsKLSAgICBpZiAoaXNBcnJheUluZGV4KSB7Cisg
ICAgdW5zaWduZWQgaSA9IHByb3BlcnR5TmFtZS5hc0luZGV4KCk7CisgICAgaWYgKGkgIT0gUHJv
cGVydHlOYW1lOjpOb3RBbkluZGV4KSB7CiAgICAgICAgIGlmIChpID49IHN0b3JhZ2UtPm1fbGVu
Z3RoKQogICAgICAgICAgICAgcmV0dXJuIGZhbHNlOwogICAgICAgICBpZiAoaSA8IHRoaXNPYmpl
Y3QtPm1fdmVjdG9yTGVuZ3RoKSB7CkBAIC03MTQsMTIgKzcxMSwxMSBAQCBib29sIEpTQXJyYXk6
OmdldE93blByb3BlcnR5RGVzY3JpcHRvcihKCiB9CiAKIC8vIEVDTUEgMTUuNC41LjEKLXZvaWQg
SlNBcnJheTo6cHV0KEpTQ2VsbCogY2VsbCwgRXhlY1N0YXRlKiBleGVjLCBjb25zdCBJZGVudGlm
aWVyJiBwcm9wZXJ0eU5hbWUsIEpTVmFsdWUgdmFsdWUsIFB1dFByb3BlcnR5U2xvdCYgc2xvdCkK
K3ZvaWQgSlNBcnJheTo6cHV0KEpTQ2VsbCogY2VsbCwgRXhlY1N0YXRlKiBleGVjLCBQcm9wZXJ0
eU5hbWUgcHJvcGVydHlOYW1lLCBKU1ZhbHVlIHZhbHVlLCBQdXRQcm9wZXJ0eVNsb3QmIHNsb3Qp
CiB7CiAgICAgSlNBcnJheSogdGhpc09iamVjdCA9IGpzQ2FzdDxKU0FycmF5Kj4oY2VsbCk7Ci0g
ICAgYm9vbCBpc0FycmF5SW5kZXg7Ci0gICAgdW5zaWduZWQgaSA9IHByb3BlcnR5TmFtZS50b0Fy
cmF5SW5kZXgoaXNBcnJheUluZGV4KTsKLSAgICBpZiAoaXNBcnJheUluZGV4KSB7CisgICAgdW5z
aWduZWQgaSA9IHByb3BlcnR5TmFtZS5hc0luZGV4KCk7CisgICAgaWYgKGkgIT0gUHJvcGVydHlO
YW1lOjpOb3RBbkluZGV4KSB7CiAgICAgICAgIHB1dEJ5SW5kZXgodGhpc09iamVjdCwgZXhlYywg
aSwgdmFsdWUsIHNsb3QuaXNTdHJpY3RNb2RlKCkpOwogICAgICAgICByZXR1cm47CiAgICAgfQpA
QCAtOTE5LDEyICs5MTUsMTEgQEAgYm9vbCBKU0FycmF5OjpwdXREaXJlY3RJbmRleEJleW9uZFZl
Y3RvcgogICAgIHJldHVybiB0cnVlOwogfQogCi1ib29sIEpTQXJyYXk6OmRlbGV0ZVByb3BlcnR5
KEpTQ2VsbCogY2VsbCwgRXhlY1N0YXRlKiBleGVjLCBjb25zdCBJZGVudGlmaWVyJiBwcm9wZXJ0
eU5hbWUpCitib29sIEpTQXJyYXk6OmRlbGV0ZVByb3BlcnR5KEpTQ2VsbCogY2VsbCwgRXhlY1N0
YXRlKiBleGVjLCBQcm9wZXJ0eU5hbWUgcHJvcGVydHlOYW1lKQogewogICAgIEpTQXJyYXkqIHRo
aXNPYmplY3QgPSBqc0Nhc3Q8SlNBcnJheSo+KGNlbGwpOwotICAgIGJvb2wgaXNBcnJheUluZGV4
OwotICAgIHVuc2lnbmVkIGkgPSBwcm9wZXJ0eU5hbWUudG9BcnJheUluZGV4KGlzQXJyYXlJbmRl
eCk7Ci0gICAgaWYgKGlzQXJyYXlJbmRleCkKKyAgICB1bnNpZ25lZCBpID0gcHJvcGVydHlOYW1l
LmFzSW5kZXgoKTsKKyAgICBpZiAoaSAhPSBQcm9wZXJ0eU5hbWU6Ok5vdEFuSW5kZXgpCiAgICAg
ICAgIHJldHVybiB0aGlzT2JqZWN0LT5tZXRob2RUYWJsZSgpLT5kZWxldGVQcm9wZXJ0eUJ5SW5k
ZXgodGhpc09iamVjdCwgZXhlYywgaSk7CiAKICAgICBpZiAocHJvcGVydHlOYW1lID09IGV4ZWMt
PnByb3BlcnR5TmFtZXMoKS5sZW5ndGgpCkluZGV4OiBTb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVu
dGltZS9KU0FycmF5LmgKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRp
bWUvSlNBcnJheS5oCShyZXZpc2lvbiAxMTY2NjcpCisrKyBTb3VyY2UvSmF2YVNjcmlwdENvcmUv
cnVudGltZS9KU0FycmF5LmgJKHdvcmtpbmcgY29weSkKQEAgLTE2NCwxMSArMTY0LDExIEBAIG5h
bWVzcGFjZSBKU0MgewogICAgICAgICAvLyAgIC0gY2FsbGVkICdjb21wbGV0ZUluaXRpYWxpemF0
aW9uJyBhZnRlciBhbGwgcHJvcGVydGllcyBoYXZlIGJlZW4gaW5pdGlhbGl6ZWQuCiAgICAgICAg
IHN0YXRpYyBKU0FycmF5KiB0cnlDcmVhdGVVbmluaXRpYWxpemVkKEpTR2xvYmFsRGF0YSYsIFN0
cnVjdHVyZSosIHVuc2lnbmVkIGluaXRpYWxMZW5ndGgpOwogCi0gICAgICAgIEpTX0VYUE9SVF9Q
UklWQVRFIHN0YXRpYyBib29sIGRlZmluZU93blByb3BlcnR5KEpTT2JqZWN0KiwgRXhlY1N0YXRl
KiwgY29uc3QgSWRlbnRpZmllciYsIFByb3BlcnR5RGVzY3JpcHRvciYsIGJvb2wgdGhyb3dFeGNl
cHRpb24pOworICAgICAgICBKU19FWFBPUlRfUFJJVkFURSBzdGF0aWMgYm9vbCBkZWZpbmVPd25Q
cm9wZXJ0eShKU09iamVjdCosIEV4ZWNTdGF0ZSosIFByb3BlcnR5TmFtZSwgUHJvcGVydHlEZXNj
cmlwdG9yJiwgYm9vbCB0aHJvd0V4Y2VwdGlvbik7CiAKLSAgICAgICAgc3RhdGljIGJvb2wgZ2V0
T3duUHJvcGVydHlTbG90KEpTQ2VsbCosIEV4ZWNTdGF0ZSosIGNvbnN0IElkZW50aWZpZXImLCBQ
cm9wZXJ0eVNsb3QmKTsKKyAgICAgICAgc3RhdGljIGJvb2wgZ2V0T3duUHJvcGVydHlTbG90KEpT
Q2VsbCosIEV4ZWNTdGF0ZSosIFByb3BlcnR5TmFtZSwgUHJvcGVydHlTbG90Jik7CiAgICAgICAg
IEpTX0VYUE9SVF9QUklWQVRFIHN0YXRpYyBib29sIGdldE93blByb3BlcnR5U2xvdEJ5SW5kZXgo
SlNDZWxsKiwgRXhlY1N0YXRlKiwgdW5zaWduZWQgcHJvcGVydHlOYW1lLCBQcm9wZXJ0eVNsb3Qm
KTsKLSAgICAgICAgc3RhdGljIGJvb2wgZ2V0T3duUHJvcGVydHlEZXNjcmlwdG9yKEpTT2JqZWN0
KiwgRXhlY1N0YXRlKiwgY29uc3QgSWRlbnRpZmllciYsIFByb3BlcnR5RGVzY3JpcHRvciYpOwor
ICAgICAgICBzdGF0aWMgYm9vbCBnZXRPd25Qcm9wZXJ0eURlc2NyaXB0b3IoSlNPYmplY3QqLCBF
eGVjU3RhdGUqLCBQcm9wZXJ0eU5hbWUsIFByb3BlcnR5RGVzY3JpcHRvciYpOwogICAgICAgICBz
dGF0aWMgdm9pZCBwdXRCeUluZGV4KEpTQ2VsbCosIEV4ZWNTdGF0ZSosIHVuc2lnbmVkIHByb3Bl
cnR5TmFtZSwgSlNWYWx1ZSwgYm9vbCBzaG91bGRUaHJvdyk7CiAgICAgICAgIC8vIFRoaXMgaXMg
c2ltaWxhciB0byB0aGUgSlNPYmplY3Q6OnB1dERpcmVjdCogbWV0aG9kczoKICAgICAgICAgLy8g
IC0gdGhlIHByb3RvdHlwZSBjaGFpbiBpcyBub3QgY29uc3VsdGVkCkBAIC0yODEsOSArMjgxLDkg
QEAgbmFtZXNwYWNlIEpTQyB7CiAKICAgICBwcm90ZWN0ZWQ6CiAgICAgICAgIHN0YXRpYyBjb25z
dCB1bnNpZ25lZCBTdHJ1Y3R1cmVGbGFncyA9IE92ZXJyaWRlc0dldE93blByb3BlcnR5U2xvdCB8
IE92ZXJyaWRlc1Zpc2l0Q2hpbGRyZW4gfCBPdmVycmlkZXNHZXRQcm9wZXJ0eU5hbWVzIHwgSlNP
YmplY3Q6OlN0cnVjdHVyZUZsYWdzOwotICAgICAgICBzdGF0aWMgdm9pZCBwdXQoSlNDZWxsKiwg
RXhlY1N0YXRlKiwgY29uc3QgSWRlbnRpZmllciYgcHJvcGVydHlOYW1lLCBKU1ZhbHVlLCBQdXRQ
cm9wZXJ0eVNsb3QmKTsKKyAgICAgICAgc3RhdGljIHZvaWQgcHV0KEpTQ2VsbCosIEV4ZWNTdGF0
ZSosIFByb3BlcnR5TmFtZSwgSlNWYWx1ZSwgUHV0UHJvcGVydHlTbG90Jik7CiAKLSAgICAgICAg
c3RhdGljIGJvb2wgZGVsZXRlUHJvcGVydHkoSlNDZWxsKiwgRXhlY1N0YXRlKiwgY29uc3QgSWRl
bnRpZmllciYgcHJvcGVydHlOYW1lKTsKKyAgICAgICAgc3RhdGljIGJvb2wgZGVsZXRlUHJvcGVy
dHkoSlNDZWxsKiwgRXhlY1N0YXRlKiwgUHJvcGVydHlOYW1lKTsKICAgICAgICAgc3RhdGljIGJv
b2wgZGVsZXRlUHJvcGVydHlCeUluZGV4KEpTQ2VsbCosIEV4ZWNTdGF0ZSosIHVuc2lnbmVkIHBy
b3BlcnR5TmFtZSk7CiAgICAgICAgIHN0YXRpYyB2b2lkIGdldE93blByb3BlcnR5TmFtZXMoSlNP
YmplY3QqLCBFeGVjU3RhdGUqLCBQcm9wZXJ0eU5hbWVBcnJheSYsIEVudW1lcmF0aW9uTW9kZSk7
CiAKQEAgLTM1NywxNiArMzU3LDYgQEAgbmFtZXNwYWNlIEpTQyB7CiAgICAgaW5saW5lIGJvb2wg
aXNKU0FycmF5KEpTQ2VsbCogY2VsbCkgeyByZXR1cm4gY2VsbC0+Y2xhc3NJbmZvKCkgPT0gJkpT
QXJyYXk6OnNfaW5mbzsgfQogICAgIGlubGluZSBib29sIGlzSlNBcnJheShKU1ZhbHVlIHYpIHsg
cmV0dXJuIHYuaXNDZWxsKCkgJiYgaXNKU0FycmF5KHYuYXNDZWxsKCkpOyB9CiAKLSAgICAvLyBS
dWxlIGZyb20gRUNNQSAxNS4yIGFib3V0IHdoYXQgYW4gYXJyYXkgaW5kZXggaXMuCi0gICAgLy8g
TXVzdCBleGFjdGx5IG1hdGNoIHN0cmluZyBmb3JtIG9mIGFuIHVuc2lnbmVkIGludGVnZXIsIGFu
ZCBiZSBsZXNzIHRoYW4gMl4zMiAtIDEuCi0gICAgaW5saW5lIHVuc2lnbmVkIElkZW50aWZpZXI6
OnRvQXJyYXlJbmRleChib29sJiBvaykgY29uc3QKLSAgICB7Ci0gICAgICAgIHVuc2lnbmVkIGkg
PSB0b1VJbnQzMihvayk7Ci0gICAgICAgIGlmIChvayAmJiBpID49IDB4RkZGRkZGRkZVKQotICAg
ICAgICAgICAgb2sgPSBmYWxzZTsKLSAgICAgICAgcmV0dXJuIGk7Ci0gICAgfQotCiAvLyBUaGUg
ZGVmaW5pdGlvbiBvZiBNQVhfU1RPUkFHRV9WRUNUT1JfTEVOR1RIIGlzIGRlcGVuZGFudCBvbiB0
aGUgZGVmaW5pdGlvbiBzdG9yYWdlU2l6ZQogLy8gZnVuY3Rpb24gYmVsb3cgLSB0aGUgTUFYX1NU
T1JBR0VfVkVDVE9SX0xFTkdUSCBsaW1pdCBpcyBkZWZpbmVkIHN1Y2ggdGhhdCB0aGUgc3RvcmFn
ZQogLy8gc2l6ZSBjYWxjdWxhdGlvbiBjYW5ub3Qgb3ZlcmZsb3cuICAoc2l6ZW9mKEFycmF5U3Rv
cmFnZSkgLSBzaXplb2YoV3JpdGVCYXJyaWVyPFVua25vd24+KSkgKwpJbmRleDogU291cmNlL0ph
dmFTY3JpcHRDb3JlL3J1bnRpbWUvSlNCb3VuZEZ1bmN0aW9uLmNwcAo9PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBT
b3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9KU0JvdW5kRnVuY3Rpb24uY3BwCShyZXZpc2lv
biAxMTY2NjcpCisrKyBTb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9KU0JvdW5kRnVuY3Rp
b24uY3BwCSh3b3JraW5nIGNvcHkpCkBAIC03Niw3ICs3Niw3IEBAIEVuY29kZWRKU1ZhbHVlIEpT
Q19IT1NUX0NBTEwgYm91bmRGdW5jdGkKICAgICByZXR1cm4gSlNWYWx1ZTo6ZW5jb2RlKGNvbnN0
cnVjdChleGVjLCB0YXJnZXRGdW5jdGlvbiwgY29uc3RydWN0VHlwZSwgY29uc3RydWN0RGF0YSwg
YXJncykpOwogfQogCi1KU0JvdW5kRnVuY3Rpb24qIEpTQm91bmRGdW5jdGlvbjo6Y3JlYXRlKEV4
ZWNTdGF0ZSogZXhlYywgSlNHbG9iYWxPYmplY3QqIGdsb2JhbE9iamVjdCwgSlNPYmplY3QqIHRh
cmdldEZ1bmN0aW9uLCBKU1ZhbHVlIGJvdW5kVGhpcywgSlNWYWx1ZSBib3VuZEFyZ3MsIGludCBs
ZW5ndGgsIGNvbnN0IElkZW50aWZpZXImIG5hbWUpCitKU0JvdW5kRnVuY3Rpb24qIEpTQm91bmRG
dW5jdGlvbjo6Y3JlYXRlKEV4ZWNTdGF0ZSogZXhlYywgSlNHbG9iYWxPYmplY3QqIGdsb2JhbE9i
amVjdCwgSlNPYmplY3QqIHRhcmdldEZ1bmN0aW9uLCBKU1ZhbHVlIGJvdW5kVGhpcywgSlNWYWx1
ZSBib3VuZEFyZ3MsIGludCBsZW5ndGgsIGNvbnN0IFVTdHJpbmcmIG5hbWUpCiB7CiAgICAgQ29u
c3RydWN0RGF0YSBjb25zdHJ1Y3REYXRhOwogICAgIENvbnN0cnVjdFR5cGUgY29uc3RydWN0VHlw
ZSA9IEpTQzo6Z2V0Q29uc3RydWN0RGF0YSh0YXJnZXRGdW5jdGlvbiwgY29uc3RydWN0RGF0YSk7
CkBAIC0xMDcsNyArMTA3LDcgQEAgSlNCb3VuZEZ1bmN0aW9uOjpKU0JvdW5kRnVuY3Rpb24oRXhl
Y1N0YQogewogfQogCi12b2lkIEpTQm91bmRGdW5jdGlvbjo6ZmluaXNoQ3JlYXRpb24oRXhlY1N0
YXRlKiBleGVjLCBOYXRpdmVFeGVjdXRhYmxlKiBleGVjdXRhYmxlLCBpbnQgbGVuZ3RoLCBjb25z
dCBJZGVudGlmaWVyJiBuYW1lKQordm9pZCBKU0JvdW5kRnVuY3Rpb246OmZpbmlzaENyZWF0aW9u
KEV4ZWNTdGF0ZSogZXhlYywgTmF0aXZlRXhlY3V0YWJsZSogZXhlY3V0YWJsZSwgaW50IGxlbmd0
aCwgY29uc3QgVVN0cmluZyYgbmFtZSkKIHsKICAgICBCYXNlOjpmaW5pc2hDcmVhdGlvbihleGVj
LCBleGVjdXRhYmxlLCBsZW5ndGgsIG5hbWUpOwogICAgIEFTU0VSVChpbmhlcml0cygmc19pbmZv
KSk7CkluZGV4OiBTb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9KU0JvdW5kRnVuY3Rpb24u
aAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09Ci0tLSBTb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9KU0JvdW5kRnVu
Y3Rpb24uaAkocmV2aXNpb24gMTE2NjY3KQorKysgU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRp
bWUvSlNCb3VuZEZ1bmN0aW9uLmgJKHdvcmtpbmcgY29weSkKQEAgLTM3LDcgKzM3LDcgQEAgY2xh
c3MgSlNCb3VuZEZ1bmN0aW9uIDogcHVibGljIEpTRnVuY3RpbwogcHVibGljOgogICAgIHR5cGVk
ZWYgSlNGdW5jdGlvbiBCYXNlOwogCi0gICAgc3RhdGljIEpTQm91bmRGdW5jdGlvbiogY3JlYXRl
KEV4ZWNTdGF0ZSosIEpTR2xvYmFsT2JqZWN0KiwgSlNPYmplY3QqIHRhcmdldEZ1bmN0aW9uLCBK
U1ZhbHVlIGJvdW5kVGhpcywgSlNWYWx1ZSBib3VuZEFyZ3MsIGludCwgY29uc3QgSWRlbnRpZmll
ciYpOworICAgIHN0YXRpYyBKU0JvdW5kRnVuY3Rpb24qIGNyZWF0ZShFeGVjU3RhdGUqLCBKU0ds
b2JhbE9iamVjdCosIEpTT2JqZWN0KiB0YXJnZXRGdW5jdGlvbiwgSlNWYWx1ZSBib3VuZFRoaXMs
IEpTVmFsdWUgYm91bmRBcmdzLCBpbnQsIGNvbnN0IFVTdHJpbmcmKTsKIAogICAgIHN0YXRpYyBi
b29sIGhhc0luc3RhbmNlKEpTT2JqZWN0KiwgRXhlY1N0YXRlKiwgSlNWYWx1ZSwgSlNWYWx1ZSBw
cm90byk7CiAKQEAgLTYxLDcgKzYxLDcgQEAgcHJvdGVjdGVkOgogcHJpdmF0ZToKICAgICBKU0Jv
dW5kRnVuY3Rpb24oRXhlY1N0YXRlKiwgSlNHbG9iYWxPYmplY3QqLCBTdHJ1Y3R1cmUqLCBKU09i
amVjdCogdGFyZ2V0RnVuY3Rpb24sIEpTVmFsdWUgYm91bmRUaGlzLCBKU1ZhbHVlIGJvdW5kQXJn
cyk7CiAgICAgCi0gICAgdm9pZCBmaW5pc2hDcmVhdGlvbihFeGVjU3RhdGUqLCBOYXRpdmVFeGVj
dXRhYmxlKiwgaW50LCBjb25zdCBJZGVudGlmaWVyJik7CisgICAgdm9pZCBmaW5pc2hDcmVhdGlv
bihFeGVjU3RhdGUqLCBOYXRpdmVFeGVjdXRhYmxlKiwgaW50LCBjb25zdCBVU3RyaW5nJik7CiAK
ICAgICBXcml0ZUJhcnJpZXI8SlNPYmplY3Q+IG1fdGFyZ2V0RnVuY3Rpb247CiAgICAgV3JpdGVC
YXJyaWVyPFVua25vd24+IG1fYm91bmRUaGlzOwpJbmRleDogU291cmNlL0phdmFTY3JpcHRDb3Jl
L3J1bnRpbWUvSlNDZWxsLmNwcAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvSmF2YVNjcmlwdENvcmUv
cnVudGltZS9KU0NlbGwuY3BwCShyZXZpc2lvbiAxMTY2NjcpCisrKyBTb3VyY2UvSmF2YVNjcmlw
dENvcmUvcnVudGltZS9KU0NlbGwuY3BwCSh3b3JraW5nIGNvcHkpCkBAIC03MSw3ICs3MSw3IEBA
IENvbnN0cnVjdFR5cGUgSlNDZWxsOjpnZXRDb25zdHJ1Y3REYXRhKEoKICAgICByZXR1cm4gQ29u
c3RydWN0VHlwZU5vbmU7CiB9CiAKLWJvb2wgSlNDZWxsOjpnZXRPd25Qcm9wZXJ0eVNsb3QoSlND
ZWxsKiBjZWxsLCBFeGVjU3RhdGUqIGV4ZWMsIGNvbnN0IElkZW50aWZpZXImIGlkZW50aWZpZXIs
IFByb3BlcnR5U2xvdCYgc2xvdCkKK2Jvb2wgSlNDZWxsOjpnZXRPd25Qcm9wZXJ0eVNsb3QoSlND
ZWxsKiBjZWxsLCBFeGVjU3RhdGUqIGV4ZWMsIFByb3BlcnR5TmFtZSBpZGVudGlmaWVyLCBQcm9w
ZXJ0eVNsb3QmIHNsb3QpCiB7CiAgICAgLy8gVGhpcyBpcyBub3QgYSBnZW5lcmFsIHB1cnBvc2Ug
aW1wbGVtZW50YXRpb24gb2YgZ2V0T3duUHJvcGVydHlTbG90LgogICAgIC8vIEl0IHNob3VsZCBv
bmx5IGJlIGNhbGxlZCBieSBKU1ZhbHVlOjpnZXQuCkBAIC05NSw3ICs5NSw3IEBAIGJvb2wgSlND
ZWxsOjpnZXRPd25Qcm9wZXJ0eVNsb3RCeUluZGV4KEoKICAgICByZXR1cm4gdHJ1ZTsKIH0KIAot
dm9pZCBKU0NlbGw6OnB1dChKU0NlbGwqIGNlbGwsIEV4ZWNTdGF0ZSogZXhlYywgY29uc3QgSWRl
bnRpZmllciYgaWRlbnRpZmllciwgSlNWYWx1ZSB2YWx1ZSwgUHV0UHJvcGVydHlTbG90JiBzbG90
KQordm9pZCBKU0NlbGw6OnB1dChKU0NlbGwqIGNlbGwsIEV4ZWNTdGF0ZSogZXhlYywgUHJvcGVy
dHlOYW1lIGlkZW50aWZpZXIsIEpTVmFsdWUgdmFsdWUsIFB1dFByb3BlcnR5U2xvdCYgc2xvdCkK
IHsKICAgICBpZiAoY2VsbC0+aXNTdHJpbmcoKSkgewogICAgICAgICBKU1ZhbHVlKGNlbGwpLnB1
dFRvUHJpbWl0aXZlKGV4ZWMsIGlkZW50aWZpZXIsIHZhbHVlLCBzbG90KTsKQEAgLTExNiw3ICsx
MTYsNyBAQCB2b2lkIEpTQ2VsbDo6cHV0QnlJbmRleChKU0NlbGwqIGNlbGwsIEV4CiAgICAgdGhp
c09iamVjdC0+bWV0aG9kVGFibGUoKS0+cHV0QnlJbmRleCh0aGlzT2JqZWN0LCBleGVjLCBpZGVu
dGlmaWVyLCB2YWx1ZSwgc2hvdWxkVGhyb3cpOwogfQogCi1ib29sIEpTQ2VsbDo6ZGVsZXRlUHJv
cGVydHkoSlNDZWxsKiBjZWxsLCBFeGVjU3RhdGUqIGV4ZWMsIGNvbnN0IElkZW50aWZpZXImIGlk
ZW50aWZpZXIpCitib29sIEpTQ2VsbDo6ZGVsZXRlUHJvcGVydHkoSlNDZWxsKiBjZWxsLCBFeGVj
U3RhdGUqIGV4ZWMsIFByb3BlcnR5TmFtZSBpZGVudGlmaWVyKQogewogICAgIEpTT2JqZWN0KiB0
aGlzT2JqZWN0ID0gY2VsbC0+dG9PYmplY3QoZXhlYywgZXhlYy0+bGV4aWNhbEdsb2JhbE9iamVj
dCgpKTsKICAgICByZXR1cm4gdGhpc09iamVjdC0+bWV0aG9kVGFibGUoKS0+ZGVsZXRlUHJvcGVy
dHkodGhpc09iamVjdCwgZXhlYywgaWRlbnRpZmllcik7CkBAIC0xOTUsMTggKzE5NSwxOCBAQCBi
b29sIEpTQ2VsbDo6aGFzSW5zdGFuY2UoSlNPYmplY3QqLCBFeGVjCiAgICAgcmV0dXJuIGZhbHNl
OwogfQogCi12b2lkIEpTQ2VsbDo6cHV0RGlyZWN0VmlydHVhbChKU09iamVjdCosIEV4ZWNTdGF0
ZSosIGNvbnN0IElkZW50aWZpZXImLCBKU1ZhbHVlLCB1bnNpZ25lZCkKK3ZvaWQgSlNDZWxsOjpw
dXREaXJlY3RWaXJ0dWFsKEpTT2JqZWN0KiwgRXhlY1N0YXRlKiwgUHJvcGVydHlOYW1lLCBKU1Zh
bHVlLCB1bnNpZ25lZCkKIHsKICAgICBBU1NFUlRfTk9UX1JFQUNIRUQoKTsKIH0KIAotYm9vbCBK
U0NlbGw6OmRlZmluZU93blByb3BlcnR5KEpTT2JqZWN0KiwgRXhlY1N0YXRlKiwgY29uc3QgSWRl
bnRpZmllciYsIFByb3BlcnR5RGVzY3JpcHRvciYsIGJvb2wpCitib29sIEpTQ2VsbDo6ZGVmaW5l
T3duUHJvcGVydHkoSlNPYmplY3QqLCBFeGVjU3RhdGUqLCBQcm9wZXJ0eU5hbWUsIFByb3BlcnR5
RGVzY3JpcHRvciYsIGJvb2wpCiB7CiAgICAgQVNTRVJUX05PVF9SRUFDSEVEKCk7CiAgICAgcmV0
dXJuIGZhbHNlOwogfQogCi1ib29sIEpTQ2VsbDo6Z2V0T3duUHJvcGVydHlEZXNjcmlwdG9yKEpT
T2JqZWN0KiwgRXhlY1N0YXRlKiwgY29uc3QgSWRlbnRpZmllciYsIFByb3BlcnR5RGVzY3JpcHRv
ciYpCitib29sIEpTQ2VsbDo6Z2V0T3duUHJvcGVydHlEZXNjcmlwdG9yKEpTT2JqZWN0KiwgRXhl
Y1N0YXRlKiwgUHJvcGVydHlOYW1lLCBQcm9wZXJ0eURlc2NyaXB0b3ImKQogewogICAgIEFTU0VS
VF9OT1RfUkVBQ0hFRCgpOwogICAgIHJldHVybiBmYWxzZTsKSW5kZXg6IFNvdXJjZS9KYXZhU2Ny
aXB0Q29yZS9ydW50aW1lL0pTQ2VsbC5oCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9KYXZhU2NyaXB0
Q29yZS9ydW50aW1lL0pTQ2VsbC5oCShyZXZpc2lvbiAxMTY2NjcpCisrKyBTb3VyY2UvSmF2YVNj
cmlwdENvcmUvcnVudGltZS9KU0NlbGwuaAkod29ya2luZyBjb3B5KQpAQCAtMTA2LDEwICsxMDYs
MTAgQEAgbmFtZXNwYWNlIEpTQyB7CiAgICAgICAgIGNvbnN0IENsYXNzSW5mbyogY2xhc3NJbmZv
KCkgY29uc3Q7CiAgICAgICAgIGNvbnN0IENsYXNzSW5mbyogdmFsaWRhdGVkQ2xhc3NJbmZvKCkg
Y29uc3Q7CiAgICAgICAgIGNvbnN0IE1ldGhvZFRhYmxlKiBtZXRob2RUYWJsZSgpIGNvbnN0Owot
ICAgICAgICBzdGF0aWMgdm9pZCBwdXQoSlNDZWxsKiwgRXhlY1N0YXRlKiwgY29uc3QgSWRlbnRp
ZmllciYgcHJvcGVydHlOYW1lLCBKU1ZhbHVlLCBQdXRQcm9wZXJ0eVNsb3QmKTsKKyAgICAgICAg
c3RhdGljIHZvaWQgcHV0KEpTQ2VsbCosIEV4ZWNTdGF0ZSosIFByb3BlcnR5TmFtZSwgSlNWYWx1
ZSwgUHV0UHJvcGVydHlTbG90Jik7CiAgICAgICAgIHN0YXRpYyB2b2lkIHB1dEJ5SW5kZXgoSlND
ZWxsKiwgRXhlY1N0YXRlKiwgdW5zaWduZWQgcHJvcGVydHlOYW1lLCBKU1ZhbHVlLCBib29sIHNo
b3VsZFRocm93KTsKICAgICAgICAgCi0gICAgICAgIHN0YXRpYyBib29sIGRlbGV0ZVByb3BlcnR5
KEpTQ2VsbCosIEV4ZWNTdGF0ZSosIGNvbnN0IElkZW50aWZpZXImIHByb3BlcnR5TmFtZSk7Cisg
ICAgICAgIHN0YXRpYyBib29sIGRlbGV0ZVByb3BlcnR5KEpTQ2VsbCosIEV4ZWNTdGF0ZSosIFBy
b3BlcnR5TmFtZSk7CiAgICAgICAgIHN0YXRpYyBib29sIGRlbGV0ZVByb3BlcnR5QnlJbmRleChK
U0NlbGwqLCBFeGVjU3RhdGUqLCB1bnNpZ25lZCBwcm9wZXJ0eU5hbWUpOwogCiAgICAgICAgIHN0
YXRpYyBKU09iamVjdCogdG9UaGlzT2JqZWN0KEpTQ2VsbCosIEV4ZWNTdGF0ZSopOwpAQCAtMTIx
LDcgKzEyMSw3IEBAIG5hbWVzcGFjZSBKU0MgewogICAgICAgICAvLyBmYXN0R2V0T3duUHJvcGVy
dHlTbG90IHRvIGdldE93blByb3BlcnR5U2xvdC4gQ2FsbGVycyBzaG91bGQgYWx3YXlzCiAgICAg
ICAgIC8vIGNhbGwgdGhpcyBmdW5jdGlvbiwgbm90IGl0cyBzbG93ZXIgdmlydHVhbCBjb3VudGVy
cGFydC4gKEZvciBpbnRlZ2VyCiAgICAgICAgIC8vIHByb3BlcnR5IG5hbWVzLCB3ZSB3YW50IGEg
c2ltaWxhciBpbnRlcmZhY2Ugd2l0aCBhcHByb3ByaWF0ZSBvcHRpbWl6YXRpb25zLikKLSAgICAg
ICAgYm9vbCBmYXN0R2V0T3duUHJvcGVydHlTbG90KEV4ZWNTdGF0ZSosIGNvbnN0IElkZW50aWZp
ZXImIHByb3BlcnR5TmFtZSwgUHJvcGVydHlTbG90Jik7CisgICAgICAgIGJvb2wgZmFzdEdldE93
blByb3BlcnR5U2xvdChFeGVjU3RhdGUqLCBQcm9wZXJ0eU5hbWUsIFByb3BlcnR5U2xvdCYpOwog
ICAgICAgICBKU1ZhbHVlIGZhc3RHZXRPd25Qcm9wZXJ0eShFeGVjU3RhdGUqLCBjb25zdCBVU3Ry
aW5nJik7CiAKICAgICAgICAgc3RhdGljIHB0cmRpZmZfdCBzdHJ1Y3R1cmVPZmZzZXQoKQpAQCAt
MTUwLDcgKzE1MCw3IEBAIG5hbWVzcGFjZSBKU0MgewogICAgICAgICB2b2lkIGZpbmlzaENyZWF0
aW9uKEpTR2xvYmFsRGF0YSYsIFN0cnVjdHVyZSosIENyZWF0aW5nRWFybHlDZWxsVGFnKTsKIAog
ICAgICAgICAvLyBCYXNlIGltcGxlbWVudGF0aW9uOyBmb3Igbm9uLW9iamVjdCBjbGFzc2VzIGlt
cGxlbWVudHMgZ2V0UHJvcGVydHlTbG90LgotICAgICAgICBzdGF0aWMgYm9vbCBnZXRPd25Qcm9w
ZXJ0eVNsb3QoSlNDZWxsKiwgRXhlY1N0YXRlKiwgY29uc3QgSWRlbnRpZmllciYgcHJvcGVydHlO
YW1lLCBQcm9wZXJ0eVNsb3QmKTsKKyAgICAgICAgc3RhdGljIGJvb2wgZ2V0T3duUHJvcGVydHlT
bG90KEpTQ2VsbCosIEV4ZWNTdGF0ZSosIFByb3BlcnR5TmFtZSwgUHJvcGVydHlTbG90Jik7CiAg
ICAgICAgIHN0YXRpYyBib29sIGdldE93blByb3BlcnR5U2xvdEJ5SW5kZXgoSlNDZWxsKiwgRXhl
Y1N0YXRlKiwgdW5zaWduZWQgcHJvcGVydHlOYW1lLCBQcm9wZXJ0eVNsb3QmKTsKIAogICAgICAg
ICAvLyBEdW1teSBpbXBsZW1lbnRhdGlvbnMgb2Ygb3ZlcnJpZGUtYWJsZSBzdGF0aWMgZnVuY3Rp
b25zIGZvciBjbGFzc2VzIHRvIHB1dCBpbiB0aGVpciBNZXRob2RUYWJsZQpAQCAtMTU5LDkgKzE1
OSw5IEBAIG5hbWVzcGFjZSBKU0MgewogICAgICAgICBzdGF0aWMgTk9fUkVUVVJOX0RVRV9UT19B
U1NFUlQgdm9pZCBnZXRQcm9wZXJ0eU5hbWVzKEpTT2JqZWN0KiwgRXhlY1N0YXRlKiwgUHJvcGVy
dHlOYW1lQXJyYXkmLCBFbnVtZXJhdGlvbk1vZGUpOwogICAgICAgICBzdGF0aWMgVVN0cmluZyBj
bGFzc05hbWUoY29uc3QgSlNPYmplY3QqKTsKICAgICAgICAgc3RhdGljIGJvb2wgaGFzSW5zdGFu
Y2UoSlNPYmplY3QqLCBFeGVjU3RhdGUqLCBKU1ZhbHVlLCBKU1ZhbHVlIHByb3RvdHlwZVByb3Bl
cnR5KTsKLSAgICAgICAgc3RhdGljIE5PX1JFVFVSTl9EVUVfVE9fQVNTRVJUIHZvaWQgcHV0RGly
ZWN0VmlydHVhbChKU09iamVjdCosIEV4ZWNTdGF0ZSosIGNvbnN0IElkZW50aWZpZXImIHByb3Bl
cnR5TmFtZSwgSlNWYWx1ZSwgdW5zaWduZWQgYXR0cmlidXRlcyk7Ci0gICAgICAgIHN0YXRpYyBi
b29sIGRlZmluZU93blByb3BlcnR5KEpTT2JqZWN0KiwgRXhlY1N0YXRlKiwgY29uc3QgSWRlbnRp
ZmllciYgcHJvcGVydHlOYW1lLCBQcm9wZXJ0eURlc2NyaXB0b3ImLCBib29sIHNob3VsZFRocm93
KTsKLSAgICAgICAgc3RhdGljIGJvb2wgZ2V0T3duUHJvcGVydHlEZXNjcmlwdG9yKEpTT2JqZWN0
KiwgRXhlY1N0YXRlKiwgY29uc3QgSWRlbnRpZmllciYsIFByb3BlcnR5RGVzY3JpcHRvciYpOwor
ICAgICAgICBzdGF0aWMgTk9fUkVUVVJOX0RVRV9UT19BU1NFUlQgdm9pZCBwdXREaXJlY3RWaXJ0
dWFsKEpTT2JqZWN0KiwgRXhlY1N0YXRlKiwgUHJvcGVydHlOYW1lLCBKU1ZhbHVlLCB1bnNpZ25l
ZCBhdHRyaWJ1dGVzKTsKKyAgICAgICAgc3RhdGljIGJvb2wgZGVmaW5lT3duUHJvcGVydHkoSlNP
YmplY3QqLCBFeGVjU3RhdGUqLCBQcm9wZXJ0eU5hbWUsIFByb3BlcnR5RGVzY3JpcHRvciYsIGJv
b2wgc2hvdWxkVGhyb3cpOworICAgICAgICBzdGF0aWMgYm9vbCBnZXRPd25Qcm9wZXJ0eURlc2Ny
aXB0b3IoSlNPYmplY3QqLCBFeGVjU3RhdGUqLCBQcm9wZXJ0eU5hbWUsIFByb3BlcnR5RGVzY3Jp
cHRvciYpOwogCiAgICAgcHJpdmF0ZToKICAgICAgICAgZnJpZW5kIGNsYXNzIExMSW50T2Zmc2V0
c0V4dHJhY3RvcjsKSW5kZXg6IFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL0pTRnVuY3Rp
b24uY3BwCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL0pTRnVu
Y3Rpb24uY3BwCShyZXZpc2lvbiAxMTY2NzApCisrKyBTb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVu
dGltZS9KU0Z1bmN0aW9uLmNwcAkod29ya2luZyBjb3B5KQpAQCAtNTksNyArNTksNyBAQCBib29s
IEpTRnVuY3Rpb246OmlzSG9zdEZ1bmN0aW9uTm9uSW5saW5lCiAgICAgcmV0dXJuIGlzSG9zdEZ1
bmN0aW9uKCk7CiB9CiAKLUpTRnVuY3Rpb24qIEpTRnVuY3Rpb246OmNyZWF0ZShFeGVjU3RhdGUq
IGV4ZWMsIEpTR2xvYmFsT2JqZWN0KiBnbG9iYWxPYmplY3QsIGludCBsZW5ndGgsIGNvbnN0IElk
ZW50aWZpZXImIG5hbWUsIE5hdGl2ZUZ1bmN0aW9uIG5hdGl2ZUZ1bmN0aW9uLCBJbnRyaW5zaWMg
aW50cmluc2ljLCBOYXRpdmVGdW5jdGlvbiBuYXRpdmVDb25zdHJ1Y3RvcikKK0pTRnVuY3Rpb24q
IEpTRnVuY3Rpb246OmNyZWF0ZShFeGVjU3RhdGUqIGV4ZWMsIEpTR2xvYmFsT2JqZWN0KiBnbG9i
YWxPYmplY3QsIGludCBsZW5ndGgsIGNvbnN0IFVTdHJpbmcmIG5hbWUsIE5hdGl2ZUZ1bmN0aW9u
IG5hdGl2ZUZ1bmN0aW9uLCBJbnRyaW5zaWMgaW50cmluc2ljLCBOYXRpdmVGdW5jdGlvbiBuYXRp
dmVDb25zdHJ1Y3RvcikKIHsKICAgICBOYXRpdmVFeGVjdXRhYmxlKiBleGVjdXRhYmxlOwogI2lm
ICFFTkFCTEUoSklUKQpAQCAtOTIsMTIgKzkyLDEyIEBAIEpTRnVuY3Rpb246OkpTRnVuY3Rpb24o
RXhlY1N0YXRlKiBleGVjLCAKIHsKIH0KIAotdm9pZCBKU0Z1bmN0aW9uOjpmaW5pc2hDcmVhdGlv
bihFeGVjU3RhdGUqIGV4ZWMsIE5hdGl2ZUV4ZWN1dGFibGUqIGV4ZWN1dGFibGUsIGludCBsZW5n
dGgsIGNvbnN0IElkZW50aWZpZXImIG5hbWUpCit2b2lkIEpTRnVuY3Rpb246OmZpbmlzaENyZWF0
aW9uKEV4ZWNTdGF0ZSogZXhlYywgTmF0aXZlRXhlY3V0YWJsZSogZXhlY3V0YWJsZSwgaW50IGxl
bmd0aCwgY29uc3QgVVN0cmluZyYgbmFtZSkKIHsKICAgICBCYXNlOjpmaW5pc2hDcmVhdGlvbihl
eGVjLT5nbG9iYWxEYXRhKCkpOwogICAgIEFTU0VSVChpbmhlcml0cygmc19pbmZvKSk7CiAgICAg
bV9leGVjdXRhYmxlLnNldChleGVjLT5nbG9iYWxEYXRhKCksIHRoaXMsIGV4ZWN1dGFibGUpOwot
ICAgIHB1dERpcmVjdChleGVjLT5nbG9iYWxEYXRhKCksIGV4ZWMtPmdsb2JhbERhdGEoKS5wcm9w
ZXJ0eU5hbWVzLT5uYW1lLCBqc1N0cmluZyhleGVjLCBuYW1lLmlzTnVsbCgpID8gIiIgOiBuYW1l
LnVzdHJpbmcoKSksIERvbnREZWxldGUgfCBSZWFkT25seSB8IERvbnRFbnVtKTsKKyAgICBwdXRE
aXJlY3QoZXhlYy0+Z2xvYmFsRGF0YSgpLCBleGVjLT5nbG9iYWxEYXRhKCkucHJvcGVydHlOYW1l
cy0+bmFtZSwganNTdHJpbmcoZXhlYywgbmFtZS5pc051bGwoKSA/ICIiIDogbmFtZSksIERvbnRE
ZWxldGUgfCBSZWFkT25seSB8IERvbnRFbnVtKTsKICAgICBwdXREaXJlY3QoZXhlYy0+Z2xvYmFs
RGF0YSgpLCBleGVjLT5wcm9wZXJ0eU5hbWVzKCkubGVuZ3RoLCBqc051bWJlcihsZW5ndGgpLCBE
b250RGVsZXRlIHwgUmVhZE9ubHkgfCBEb250RW51bSk7CiB9CiAKQEAgLTE4MywxNCArMTgzLDE0
IEBAIENhbGxUeXBlIEpTRnVuY3Rpb246OmdldENhbGxEYXRhKEpTQ2VsbCoKICAgICByZXR1cm4g
Q2FsbFR5cGVKUzsKIH0KIAotSlNWYWx1ZSBKU0Z1bmN0aW9uOjphcmd1bWVudHNHZXR0ZXIoRXhl
Y1N0YXRlKiBleGVjLCBKU1ZhbHVlIHNsb3RCYXNlLCBjb25zdCBJZGVudGlmaWVyJikKK0pTVmFs
dWUgSlNGdW5jdGlvbjo6YXJndW1lbnRzR2V0dGVyKEV4ZWNTdGF0ZSogZXhlYywgSlNWYWx1ZSBz
bG90QmFzZSwgUHJvcGVydHlOYW1lKQogewogICAgIEpTRnVuY3Rpb24qIHRoaXNPYmogPSBqc0Nh
c3Q8SlNGdW5jdGlvbio+KHNsb3RCYXNlKTsKICAgICBBU1NFUlQoIXRoaXNPYmotPmlzSG9zdEZ1
bmN0aW9uKCkpOwogICAgIHJldHVybiBleGVjLT5pbnRlcnByZXRlcigpLT5yZXRyaWV2ZUFyZ3Vt
ZW50c0Zyb21WTUNvZGUoZXhlYywgdGhpc09iaik7CiB9CiAKLUpTVmFsdWUgSlNGdW5jdGlvbjo6
Y2FsbGVyR2V0dGVyKEV4ZWNTdGF0ZSogZXhlYywgSlNWYWx1ZSBzbG90QmFzZSwgY29uc3QgSWRl
bnRpZmllciYpCitKU1ZhbHVlIEpTRnVuY3Rpb246OmNhbGxlckdldHRlcihFeGVjU3RhdGUqIGV4
ZWMsIEpTVmFsdWUgc2xvdEJhc2UsIFByb3BlcnR5TmFtZSkKIHsKICAgICBKU0Z1bmN0aW9uKiB0
aGlzT2JqID0ganNDYXN0PEpTRnVuY3Rpb24qPihzbG90QmFzZSk7CiAgICAgQVNTRVJUKCF0aGlz
T2JqLT5pc0hvc3RGdW5jdGlvbigpKTsKQEAgLTIwNSwxNCArMjA1LDE0IEBAIEpTVmFsdWUgSlNG
dW5jdGlvbjo6Y2FsbGVyR2V0dGVyKEV4ZWNTdGEKICAgICByZXR1cm4gdGhyb3dUeXBlRXJyb3Io
ZXhlYywgIkZ1bmN0aW9uLmNhbGxlciB1c2VkIHRvIHJldHJpZXZlIHN0cmljdCBjYWxsZXIiKTsK
IH0KIAotSlNWYWx1ZSBKU0Z1bmN0aW9uOjpsZW5ndGhHZXR0ZXIoRXhlY1N0YXRlKiwgSlNWYWx1
ZSBzbG90QmFzZSwgY29uc3QgSWRlbnRpZmllciYpCitKU1ZhbHVlIEpTRnVuY3Rpb246Omxlbmd0
aEdldHRlcihFeGVjU3RhdGUqLCBKU1ZhbHVlIHNsb3RCYXNlLCBQcm9wZXJ0eU5hbWUpCiB7CiAg
ICAgSlNGdW5jdGlvbiogdGhpc09iaiA9IGpzQ2FzdDxKU0Z1bmN0aW9uKj4oc2xvdEJhc2UpOwog
ICAgIEFTU0VSVCghdGhpc09iai0+aXNIb3N0RnVuY3Rpb24oKSk7CiAgICAgcmV0dXJuIGpzTnVt
YmVyKHRoaXNPYmotPmpzRXhlY3V0YWJsZSgpLT5wYXJhbWV0ZXJDb3VudCgpKTsKIH0KIAotYm9v
bCBKU0Z1bmN0aW9uOjpnZXRPd25Qcm9wZXJ0eVNsb3QoSlNDZWxsKiBjZWxsLCBFeGVjU3RhdGUq
IGV4ZWMsIGNvbnN0IElkZW50aWZpZXImIHByb3BlcnR5TmFtZSwgUHJvcGVydHlTbG90JiBzbG90
KQorYm9vbCBKU0Z1bmN0aW9uOjpnZXRPd25Qcm9wZXJ0eVNsb3QoSlNDZWxsKiBjZWxsLCBFeGVj
U3RhdGUqIGV4ZWMsIFByb3BlcnR5TmFtZSBwcm9wZXJ0eU5hbWUsIFByb3BlcnR5U2xvdCYgc2xv
dCkKIHsKICAgICBKU0Z1bmN0aW9uKiB0aGlzT2JqZWN0ID0ganNDYXN0PEpTRnVuY3Rpb24qPihj
ZWxsKTsKICAgICBpZiAodGhpc09iamVjdC0+aXNIb3N0RnVuY3Rpb24oKSkKQEAgLTI2Nyw3ICsy
NjcsNyBAQCBib29sIEpTRnVuY3Rpb246OmdldE93blByb3BlcnR5U2xvdChKU0NlCiAgICAgcmV0
dXJuIEJhc2U6OmdldE93blByb3BlcnR5U2xvdCh0aGlzT2JqZWN0LCBleGVjLCBwcm9wZXJ0eU5h
bWUsIHNsb3QpOwogfQogCi1ib29sIEpTRnVuY3Rpb246OmdldE93blByb3BlcnR5RGVzY3JpcHRv
cihKU09iamVjdCogb2JqZWN0LCBFeGVjU3RhdGUqIGV4ZWMsIGNvbnN0IElkZW50aWZpZXImIHBy
b3BlcnR5TmFtZSwgUHJvcGVydHlEZXNjcmlwdG9yJiBkZXNjcmlwdG9yKQorYm9vbCBKU0Z1bmN0
aW9uOjpnZXRPd25Qcm9wZXJ0eURlc2NyaXB0b3IoSlNPYmplY3QqIG9iamVjdCwgRXhlY1N0YXRl
KiBleGVjLCBQcm9wZXJ0eU5hbWUgcHJvcGVydHlOYW1lLCBQcm9wZXJ0eURlc2NyaXB0b3ImIGRl
c2NyaXB0b3IpCiB7CiAgICAgSlNGdW5jdGlvbiogdGhpc09iamVjdCA9IGpzQ2FzdDxKU0Z1bmN0
aW9uKj4ob2JqZWN0KTsKICAgICBpZiAodGhpc09iamVjdC0+aXNIb3N0RnVuY3Rpb24oKSkKQEAg
LTMzMCw3ICszMzAsNyBAQCB2b2lkIEpTRnVuY3Rpb246OmdldE93blByb3BlcnR5TmFtZXMoSlNP
CiAgICAgQmFzZTo6Z2V0T3duUHJvcGVydHlOYW1lcyh0aGlzT2JqZWN0LCBleGVjLCBwcm9wZXJ0
eU5hbWVzLCBtb2RlKTsKIH0KIAotdm9pZCBKU0Z1bmN0aW9uOjpwdXQoSlNDZWxsKiBjZWxsLCBF
eGVjU3RhdGUqIGV4ZWMsIGNvbnN0IElkZW50aWZpZXImIHByb3BlcnR5TmFtZSwgSlNWYWx1ZSB2
YWx1ZSwgUHV0UHJvcGVydHlTbG90JiBzbG90KQordm9pZCBKU0Z1bmN0aW9uOjpwdXQoSlNDZWxs
KiBjZWxsLCBFeGVjU3RhdGUqIGV4ZWMsIFByb3BlcnR5TmFtZSBwcm9wZXJ0eU5hbWUsIEpTVmFs
dWUgdmFsdWUsIFB1dFByb3BlcnR5U2xvdCYgc2xvdCkKIHsKICAgICBKU0Z1bmN0aW9uKiB0aGlz
T2JqZWN0ID0ganNDYXN0PEpTRnVuY3Rpb24qPihjZWxsKTsKICAgICBpZiAodGhpc09iamVjdC0+
aXNIb3N0RnVuY3Rpb24oKSkgewpAQCAtMzU5LDcgKzM1OSw3IEBAIHZvaWQgSlNGdW5jdGlvbjo6
cHV0KEpTQ2VsbCogY2VsbCwgRXhlY1MKICAgICBCYXNlOjpwdXQodGhpc09iamVjdCwgZXhlYywg
cHJvcGVydHlOYW1lLCB2YWx1ZSwgc2xvdCk7CiB9CiAKLWJvb2wgSlNGdW5jdGlvbjo6ZGVsZXRl
UHJvcGVydHkoSlNDZWxsKiBjZWxsLCBFeGVjU3RhdGUqIGV4ZWMsIGNvbnN0IElkZW50aWZpZXIm
IHByb3BlcnR5TmFtZSkKK2Jvb2wgSlNGdW5jdGlvbjo6ZGVsZXRlUHJvcGVydHkoSlNDZWxsKiBj
ZWxsLCBFeGVjU3RhdGUqIGV4ZWMsIFByb3BlcnR5TmFtZSBwcm9wZXJ0eU5hbWUpCiB7CiAgICAg
SlNGdW5jdGlvbiogdGhpc09iamVjdCA9IGpzQ2FzdDxKU0Z1bmN0aW9uKj4oY2VsbCk7CiAgICAg
Ly8gRm9yIG5vbi1ob3N0IGZ1bmN0aW9ucywgZG9uJ3QgbGV0IHRoZXNlIHByb3BlcnRpZXMgYnkg
ZGVsZXRlZCAtIGV4Y2VwdCBieSBEZWZpbmVPd25Qcm9wZXJ0eS4KQEAgLTM3Miw3ICszNzIsNyBA
QCBib29sIEpTRnVuY3Rpb246OmRlbGV0ZVByb3BlcnR5KEpTQ2VsbCogCiAgICAgcmV0dXJuIEJh
c2U6OmRlbGV0ZVByb3BlcnR5KHRoaXNPYmplY3QsIGV4ZWMsIHByb3BlcnR5TmFtZSk7CiB9CiAK
LWJvb2wgSlNGdW5jdGlvbjo6ZGVmaW5lT3duUHJvcGVydHkoSlNPYmplY3QqIG9iamVjdCwgRXhl
Y1N0YXRlKiBleGVjLCBjb25zdCBJZGVudGlmaWVyJiBwcm9wZXJ0eU5hbWUsIFByb3BlcnR5RGVz
Y3JpcHRvciYgZGVzY3JpcHRvciwgYm9vbCB0aHJvd0V4Y2VwdGlvbikKK2Jvb2wgSlNGdW5jdGlv
bjo6ZGVmaW5lT3duUHJvcGVydHkoSlNPYmplY3QqIG9iamVjdCwgRXhlY1N0YXRlKiBleGVjLCBQ
cm9wZXJ0eU5hbWUgcHJvcGVydHlOYW1lLCBQcm9wZXJ0eURlc2NyaXB0b3ImIGRlc2NyaXB0b3Is
IGJvb2wgdGhyb3dFeGNlcHRpb24pCiB7CiAgICAgSlNGdW5jdGlvbiogdGhpc09iamVjdCA9IGpz
Q2FzdDxKU0Z1bmN0aW9uKj4ob2JqZWN0KTsKICAgICBpZiAodGhpc09iamVjdC0+aXNIb3N0RnVu
Y3Rpb24oKSkKQEAgLTQ1NSw3ICs0NTUsNyBAQCBVU3RyaW5nIGdldENhbGN1bGF0ZWREaXNwbGF5
TmFtZShDYWxsRnJhCiAgICAgICAgIHJldHVybiBmdW5jdGlvbi0+Y2FsY3VsYXRlZERpc3BsYXlO
YW1lKGNhbGxGcmFtZSk7CiAgICAgaWYgKEludGVybmFsRnVuY3Rpb24qIGZ1bmN0aW9uID0ganNE
eW5hbWljQ2FzdDxJbnRlcm5hbEZ1bmN0aW9uKj4ob2JqZWN0KSkKICAgICAgICAgcmV0dXJuIGZ1
bmN0aW9uLT5jYWxjdWxhdGVkRGlzcGxheU5hbWUoY2FsbEZyYW1lKTsKLSAgICByZXR1cm4gY2Fs
bEZyYW1lLT5nbG9iYWxEYXRhKCkucHJvcGVydHlOYW1lcy0+ZW1wdHlJZGVudGlmaWVyLnVzdHJp
bmcoKTsKKyAgICByZXR1cm4gIiI7CiB9CiAKIH0gLy8gbmFtZXNwYWNlIEpTQwpJbmRleDogU291
cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvSlNGdW5jdGlvbi5oCj09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNv
dXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL0pTRnVuY3Rpb24uaAkocmV2aXNpb24gMTE2Njcw
KQorKysgU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvSlNGdW5jdGlvbi5oCSh3b3JraW5n
IGNvcHkpCkBAIC01NSw3ICs1NSw3IEBAIG5hbWVzcGFjZSBKU0MgewogICAgIHB1YmxpYzoKICAg
ICAgICAgdHlwZWRlZiBKU05vbkZpbmFsT2JqZWN0IEJhc2U7CiAKLSAgICAgICAgSlNfRVhQT1JU
X1BSSVZBVEUgc3RhdGljIEpTRnVuY3Rpb24qIGNyZWF0ZShFeGVjU3RhdGUqLCBKU0dsb2JhbE9i
amVjdCosIGludCBsZW5ndGgsIGNvbnN0IElkZW50aWZpZXImIG5hbWUsIE5hdGl2ZUZ1bmN0aW9u
IG5hdGl2ZUZ1bmN0aW9uLCBJbnRyaW5zaWMgPSBOb0ludHJpbnNpYywgTmF0aXZlRnVuY3Rpb24g
bmF0aXZlQ29uc3RydWN0b3IgPSBjYWxsSG9zdEZ1bmN0aW9uQXNDb25zdHJ1Y3Rvcik7CisgICAg
ICAgIEpTX0VYUE9SVF9QUklWQVRFIHN0YXRpYyBKU0Z1bmN0aW9uKiBjcmVhdGUoRXhlY1N0YXRl
KiwgSlNHbG9iYWxPYmplY3QqLCBpbnQgbGVuZ3RoLCBjb25zdCBVU3RyaW5nJiBuYW1lLCBOYXRp
dmVGdW5jdGlvbiwgSW50cmluc2ljID0gTm9JbnRyaW5zaWMsIE5hdGl2ZUZ1bmN0aW9uIG5hdGl2
ZUNvbnN0cnVjdG9yID0gY2FsbEhvc3RGdW5jdGlvbkFzQ29uc3RydWN0b3IpOwogCiAgICAgICAg
IHN0YXRpYyBKU0Z1bmN0aW9uKiBjcmVhdGUoRXhlY1N0YXRlKiBleGVjLCBGdW5jdGlvbkV4ZWN1
dGFibGUqIGV4ZWN1dGFibGUsIFNjb3BlQ2hhaW5Ob2RlKiBzY29wZUNoYWluKQogICAgICAgICB7
CkBAIC0xMzksMTkgKzEzOSwxOSBAQCBuYW1lc3BhY2UgSlNDIHsKICAgICAgICAgSlNfRVhQT1JU
X1BSSVZBVEUgSlNGdW5jdGlvbihFeGVjU3RhdGUqLCBKU0dsb2JhbE9iamVjdCosIFN0cnVjdHVy
ZSopOwogICAgICAgICBKU0Z1bmN0aW9uKEV4ZWNTdGF0ZSosIEZ1bmN0aW9uRXhlY3V0YWJsZSos
IFNjb3BlQ2hhaW5Ob2RlKik7CiAgICAgICAgIAotICAgICAgICB2b2lkIGZpbmlzaENyZWF0aW9u
KEV4ZWNTdGF0ZSosIE5hdGl2ZUV4ZWN1dGFibGUqLCBpbnQgbGVuZ3RoLCBjb25zdCBJZGVudGlm
aWVyJiBuYW1lKTsKKyAgICAgICAgdm9pZCBmaW5pc2hDcmVhdGlvbihFeGVjU3RhdGUqLCBOYXRp
dmVFeGVjdXRhYmxlKiwgaW50IGxlbmd0aCwgY29uc3QgVVN0cmluZyYgbmFtZSk7CiAgICAgICAg
IHZvaWQgZmluaXNoQ3JlYXRpb24oRXhlY1N0YXRlKiwgRnVuY3Rpb25FeGVjdXRhYmxlKiwgU2Nv
cGVDaGFpbk5vZGUqKTsKIAogICAgICAgICBTdHJ1Y3R1cmUqIGNhY2hlSW5oZXJpdG9ySUQoRXhl
Y1N0YXRlKik7CiAKLSAgICAgICAgc3RhdGljIGJvb2wgZ2V0T3duUHJvcGVydHlTbG90KEpTQ2Vs
bCosIEV4ZWNTdGF0ZSosIGNvbnN0IElkZW50aWZpZXImLCBQcm9wZXJ0eVNsb3QmKTsKLSAgICAg
ICAgc3RhdGljIGJvb2wgZ2V0T3duUHJvcGVydHlEZXNjcmlwdG9yKEpTT2JqZWN0KiwgRXhlY1N0
YXRlKiwgY29uc3QgSWRlbnRpZmllciYsIFByb3BlcnR5RGVzY3JpcHRvciYpOworICAgICAgICBz
dGF0aWMgYm9vbCBnZXRPd25Qcm9wZXJ0eVNsb3QoSlNDZWxsKiwgRXhlY1N0YXRlKiwgUHJvcGVy
dHlOYW1lLCBQcm9wZXJ0eVNsb3QmKTsKKyAgICAgICAgc3RhdGljIGJvb2wgZ2V0T3duUHJvcGVy
dHlEZXNjcmlwdG9yKEpTT2JqZWN0KiwgRXhlY1N0YXRlKiwgUHJvcGVydHlOYW1lLCBQcm9wZXJ0
eURlc2NyaXB0b3ImKTsKICAgICAgICAgc3RhdGljIHZvaWQgZ2V0T3duUHJvcGVydHlOYW1lcyhK
U09iamVjdCosIEV4ZWNTdGF0ZSosIFByb3BlcnR5TmFtZUFycmF5JiwgRW51bWVyYXRpb25Nb2Rl
ID0gRXhjbHVkZURvbnRFbnVtUHJvcGVydGllcyk7Ci0gICAgICAgIHN0YXRpYyBib29sIGRlZmlu
ZU93blByb3BlcnR5KEpTT2JqZWN0KiwgRXhlY1N0YXRlKiwgY29uc3QgSWRlbnRpZmllciYgcHJv
cGVydHlOYW1lLCBQcm9wZXJ0eURlc2NyaXB0b3ImLCBib29sIHNob3VsZFRocm93KTsKKyAgICAg
ICAgc3RhdGljIGJvb2wgZGVmaW5lT3duUHJvcGVydHkoSlNPYmplY3QqLCBFeGVjU3RhdGUqLCBQ
cm9wZXJ0eU5hbWUsIFByb3BlcnR5RGVzY3JpcHRvciYsIGJvb2wgc2hvdWxkVGhyb3cpOwogCi0g
ICAgICAgIHN0YXRpYyB2b2lkIHB1dChKU0NlbGwqLCBFeGVjU3RhdGUqLCBjb25zdCBJZGVudGlm
aWVyJiBwcm9wZXJ0eU5hbWUsIEpTVmFsdWUsIFB1dFByb3BlcnR5U2xvdCYpOworICAgICAgICBz
dGF0aWMgdm9pZCBwdXQoSlNDZWxsKiwgRXhlY1N0YXRlKiwgUHJvcGVydHlOYW1lLCBKU1ZhbHVl
LCBQdXRQcm9wZXJ0eVNsb3QmKTsKIAotICAgICAgICBzdGF0aWMgYm9vbCBkZWxldGVQcm9wZXJ0
eShKU0NlbGwqLCBFeGVjU3RhdGUqLCBjb25zdCBJZGVudGlmaWVyJiBwcm9wZXJ0eU5hbWUpOwor
ICAgICAgICBzdGF0aWMgYm9vbCBkZWxldGVQcm9wZXJ0eShKU0NlbGwqLCBFeGVjU3RhdGUqLCBQ
cm9wZXJ0eU5hbWUpOwogCiAgICAgICAgIHN0YXRpYyB2b2lkIHZpc2l0Q2hpbGRyZW4oSlNDZWxs
KiwgU2xvdFZpc2l0b3ImKTsKIApAQCAtMTYwLDkgKzE2MCw5IEBAIG5hbWVzcGFjZSBKU0Mgewog
ICAgICAgICAKICAgICAgICAgSlNfRVhQT1JUX1BSSVZBVEUgYm9vbCBpc0hvc3RGdW5jdGlvbk5v
bklubGluZSgpIGNvbnN0OwogCi0gICAgICAgIHN0YXRpYyBKU1ZhbHVlIGFyZ3VtZW50c0dldHRl
cihFeGVjU3RhdGUqLCBKU1ZhbHVlLCBjb25zdCBJZGVudGlmaWVyJik7Ci0gICAgICAgIHN0YXRp
YyBKU1ZhbHVlIGNhbGxlckdldHRlcihFeGVjU3RhdGUqLCBKU1ZhbHVlLCBjb25zdCBJZGVudGlm
aWVyJik7Ci0gICAgICAgIHN0YXRpYyBKU1ZhbHVlIGxlbmd0aEdldHRlcihFeGVjU3RhdGUqLCBK
U1ZhbHVlLCBjb25zdCBJZGVudGlmaWVyJik7CisgICAgICAgIHN0YXRpYyBKU1ZhbHVlIGFyZ3Vt
ZW50c0dldHRlcihFeGVjU3RhdGUqLCBKU1ZhbHVlLCBQcm9wZXJ0eU5hbWUpOworICAgICAgICBz
dGF0aWMgSlNWYWx1ZSBjYWxsZXJHZXR0ZXIoRXhlY1N0YXRlKiwgSlNWYWx1ZSwgUHJvcGVydHlO
YW1lKTsKKyAgICAgICAgc3RhdGljIEpTVmFsdWUgbGVuZ3RoR2V0dGVyKEV4ZWNTdGF0ZSosIEpT
VmFsdWUsIFByb3BlcnR5TmFtZSk7CiAKICAgICAgICAgV3JpdGVCYXJyaWVyPEV4ZWN1dGFibGVC
YXNlPiBtX2V4ZWN1dGFibGU7CiAgICAgICAgIFdyaXRlQmFycmllcjxTY29wZUNoYWluTm9kZT4g
bV9zY29wZUNoYWluOwpJbmRleDogU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvSlNHbG9i
YWxPYmplY3QuY3BwCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1l
L0pTR2xvYmFsT2JqZWN0LmNwcAkocmV2aXNpb24gMTE2NjY3KQorKysgU291cmNlL0phdmFTY3Jp
cHRDb3JlL3J1bnRpbWUvSlNHbG9iYWxPYmplY3QuY3BwCSh3b3JraW5nIGNvcHkpCkBAIC0xNDIs
NyArMTQyLDcgQEAgdm9pZCBKU0dsb2JhbE9iamVjdDo6aW5pdChKU09iamVjdCogdGhpcwogICAg
IHJlc2V0KHByb3RvdHlwZSgpKTsKIH0KIAotdm9pZCBKU0dsb2JhbE9iamVjdDo6cHV0KEpTQ2Vs
bCogY2VsbCwgRXhlY1N0YXRlKiBleGVjLCBjb25zdCBJZGVudGlmaWVyJiBwcm9wZXJ0eU5hbWUs
IEpTVmFsdWUgdmFsdWUsIFB1dFByb3BlcnR5U2xvdCYgc2xvdCkKK3ZvaWQgSlNHbG9iYWxPYmpl
Y3Q6OnB1dChKU0NlbGwqIGNlbGwsIEV4ZWNTdGF0ZSogZXhlYywgUHJvcGVydHlOYW1lIHByb3Bl
cnR5TmFtZSwgSlNWYWx1ZSB2YWx1ZSwgUHV0UHJvcGVydHlTbG90JiBzbG90KQogewogICAgIEpT
R2xvYmFsT2JqZWN0KiB0aGlzT2JqZWN0ID0ganNDYXN0PEpTR2xvYmFsT2JqZWN0Kj4oY2VsbCk7
CiAgICAgQVNTRVJUKCFIZWFwOjpoZWFwKHZhbHVlKSB8fCBIZWFwOjpoZWFwKHZhbHVlKSA9PSBI
ZWFwOjpoZWFwKHRoaXNPYmplY3QpKTsKQEAgLTE1Miw3ICsxNTIsNyBAQCB2b2lkIEpTR2xvYmFs
T2JqZWN0OjpwdXQoSlNDZWxsKiBjZWxsLCBFCiAgICAgSlNWYXJpYWJsZU9iamVjdDo6cHV0KHRo
aXNPYmplY3QsIGV4ZWMsIHByb3BlcnR5TmFtZSwgdmFsdWUsIHNsb3QpOwogfQogCi12b2lkIEpT
R2xvYmFsT2JqZWN0OjpwdXREaXJlY3RWaXJ0dWFsKEpTT2JqZWN0KiBvYmplY3QsIEV4ZWNTdGF0
ZSogZXhlYywgY29uc3QgSWRlbnRpZmllciYgcHJvcGVydHlOYW1lLCBKU1ZhbHVlIHZhbHVlLCB1
bnNpZ25lZCBhdHRyaWJ1dGVzKQordm9pZCBKU0dsb2JhbE9iamVjdDo6cHV0RGlyZWN0VmlydHVh
bChKU09iamVjdCogb2JqZWN0LCBFeGVjU3RhdGUqIGV4ZWMsIFByb3BlcnR5TmFtZSBwcm9wZXJ0
eU5hbWUsIEpTVmFsdWUgdmFsdWUsIHVuc2lnbmVkIGF0dHJpYnV0ZXMpCiB7CiAgICAgSlNHbG9i
YWxPYmplY3QqIHRoaXNPYmplY3QgPSBqc0Nhc3Q8SlNHbG9iYWxPYmplY3QqPihvYmplY3QpOwog
ICAgIEFTU0VSVCghSGVhcDo6aGVhcCh2YWx1ZSkgfHwgSGVhcDo6aGVhcCh2YWx1ZSkgPT0gSGVh
cDo6aGVhcCh0aGlzT2JqZWN0KSk7CkBAIC0xNzAsNyArMTcwLDcgQEAgdm9pZCBKU0dsb2JhbE9i
amVjdDo6cHV0RGlyZWN0VmlydHVhbChKUwogICAgIH0KIH0KIAotYm9vbCBKU0dsb2JhbE9iamVj
dDo6ZGVmaW5lT3duUHJvcGVydHkoSlNPYmplY3QqIG9iamVjdCwgRXhlY1N0YXRlKiBleGVjLCBj
b25zdCBJZGVudGlmaWVyJiBwcm9wZXJ0eU5hbWUsIFByb3BlcnR5RGVzY3JpcHRvciYgZGVzY3Jp
cHRvciwgYm9vbCBzaG91bGRUaHJvdykKK2Jvb2wgSlNHbG9iYWxPYmplY3Q6OmRlZmluZU93blBy
b3BlcnR5KEpTT2JqZWN0KiBvYmplY3QsIEV4ZWNTdGF0ZSogZXhlYywgUHJvcGVydHlOYW1lIHBy
b3BlcnR5TmFtZSwgUHJvcGVydHlEZXNjcmlwdG9yJiBkZXNjcmlwdG9yLCBib29sIHNob3VsZFRo
cm93KQogewogICAgIEpTR2xvYmFsT2JqZWN0KiB0aGlzT2JqZWN0ID0ganNDYXN0PEpTR2xvYmFs
T2JqZWN0Kj4ob2JqZWN0KTsKICAgICBQcm9wZXJ0eVNsb3Qgc2xvdDsKQEAgLTIwNSw4ICsyMDUs
OCBAQCB2b2lkIEpTR2xvYmFsT2JqZWN0OjpyZXNldChKU1ZhbHVlIHByb3RvCiAgICAgbV9hcHBs
eUZ1bmN0aW9uLnNldChleGVjLT5nbG9iYWxEYXRhKCksIHRoaXMsIGFwcGx5RnVuY3Rpb24pOwog
ICAgIG1fb2JqZWN0UHJvdG90eXBlLnNldChleGVjLT5nbG9iYWxEYXRhKCksIHRoaXMsIE9iamVj
dFByb3RvdHlwZTo6Y3JlYXRlKGV4ZWMsIHRoaXMsIE9iamVjdFByb3RvdHlwZTo6Y3JlYXRlU3Ry
dWN0dXJlKGV4ZWMtPmdsb2JhbERhdGEoKSwgdGhpcywganNOdWxsKCkpKSk7CiAgICAgR2V0dGVy
U2V0dGVyKiBwcm90b0FjY2Vzc29yID0gR2V0dGVyU2V0dGVyOjpjcmVhdGUoZXhlYyk7Ci0gICAg
cHJvdG9BY2Nlc3Nvci0+c2V0R2V0dGVyKGV4ZWMtPmdsb2JhbERhdGEoKSwgSlNGdW5jdGlvbjo6
Y3JlYXRlKGV4ZWMsIHRoaXMsIDAsIElkZW50aWZpZXIoKSwgZ2xvYmFsRnVuY1Byb3RvR2V0dGVy
KSk7Ci0gICAgcHJvdG9BY2Nlc3Nvci0+c2V0U2V0dGVyKGV4ZWMtPmdsb2JhbERhdGEoKSwgSlNG
dW5jdGlvbjo6Y3JlYXRlKGV4ZWMsIHRoaXMsIDAsIElkZW50aWZpZXIoKSwgZ2xvYmFsRnVuY1By
b3RvU2V0dGVyKSk7CisgICAgcHJvdG9BY2Nlc3Nvci0+c2V0R2V0dGVyKGV4ZWMtPmdsb2JhbERh
dGEoKSwgSlNGdW5jdGlvbjo6Y3JlYXRlKGV4ZWMsIHRoaXMsIDAsICIiLCBnbG9iYWxGdW5jUHJv
dG9HZXR0ZXIpKTsKKyAgICBwcm90b0FjY2Vzc29yLT5zZXRTZXR0ZXIoZXhlYy0+Z2xvYmFsRGF0
YSgpLCBKU0Z1bmN0aW9uOjpjcmVhdGUoZXhlYywgdGhpcywgMCwgIiIsIGdsb2JhbEZ1bmNQcm90
b1NldHRlcikpOwogICAgIG1fb2JqZWN0UHJvdG90eXBlLT5wdXREaXJlY3RBY2Nlc3NvcihleGVj
LT5nbG9iYWxEYXRhKCksIGV4ZWMtPnByb3BlcnR5TmFtZXMoKS51bmRlcnNjb3JlUHJvdG8sIHBy
b3RvQWNjZXNzb3IsIEFjY2Vzc29yIHwgRG9udEVudW0pOwogICAgIG1fZnVuY3Rpb25Qcm90b3R5
cGUtPnN0cnVjdHVyZSgpLT5zZXRQcm90b3R5cGVXaXRob3V0VHJhbnNpdGlvbihleGVjLT5nbG9i
YWxEYXRhKCksIG1fb2JqZWN0UHJvdG90eXBlLmdldCgpKTsKIApAQCAtMjkzLDcgKzI5Myw3IEBA
IHZvaWQgSlNHbG9iYWxPYmplY3Q6OnJlc2V0KEpTVmFsdWUgcHJvdG8KICAgICBwdXREaXJlY3RX
aXRob3V0VHJhbnNpdGlvbihleGVjLT5nbG9iYWxEYXRhKCksIElkZW50aWZpZXIoZXhlYywgIlR5
cGVFcnJvciIpLCBtX3R5cGVFcnJvckNvbnN0cnVjdG9yLmdldCgpLCBEb250RW51bSk7CiAgICAg
cHV0RGlyZWN0V2l0aG91dFRyYW5zaXRpb24oZXhlYy0+Z2xvYmFsRGF0YSgpLCBJZGVudGlmaWVy
KGV4ZWMsICJVUklFcnJvciIpLCBtX1VSSUVycm9yQ29uc3RydWN0b3IuZ2V0KCksIERvbnRFbnVt
KTsKIAotICAgIG1fZXZhbEZ1bmN0aW9uLnNldChleGVjLT5nbG9iYWxEYXRhKCksIHRoaXMsIEpT
RnVuY3Rpb246OmNyZWF0ZShleGVjLCB0aGlzLCAxLCBleGVjLT5wcm9wZXJ0eU5hbWVzKCkuZXZh
bCwgZ2xvYmFsRnVuY0V2YWwpKTsKKyAgICBtX2V2YWxGdW5jdGlvbi5zZXQoZXhlYy0+Z2xvYmFs
RGF0YSgpLCB0aGlzLCBKU0Z1bmN0aW9uOjpjcmVhdGUoZXhlYywgdGhpcywgMSwgZXhlYy0+cHJv
cGVydHlOYW1lcygpLmV2YWwudXN0cmluZygpLCBnbG9iYWxGdW5jRXZhbCkpOwogICAgIHB1dERp
cmVjdFdpdGhvdXRUcmFuc2l0aW9uKGV4ZWMtPmdsb2JhbERhdGEoKSwgZXhlYy0+cHJvcGVydHlO
YW1lcygpLmV2YWwsIG1fZXZhbEZ1bmN0aW9uLmdldCgpLCBEb250RW51bSk7CiAKICAgICBwdXRE
aXJlY3RXaXRob3V0VHJhbnNpdGlvbihleGVjLT5nbG9iYWxEYXRhKCksIElkZW50aWZpZXIoZXhl
YywgIkpTT04iKSwgSlNPTk9iamVjdDo6Y3JlYXRlKGV4ZWMsIHRoaXMsIEpTT05PYmplY3Q6OmNy
ZWF0ZVN0cnVjdHVyZShleGVjLT5nbG9iYWxEYXRhKCksIHRoaXMsIG1fb2JqZWN0UHJvdG90eXBl
LmdldCgpKSksIERvbnRFbnVtKTsKQEAgLTMxMSw3ICszMTEsNyBAQCB2b2lkIEpTR2xvYmFsT2Jq
ZWN0OjpyZXNldChKU1ZhbHVlIHByb3RvCiAKIHZvaWQgSlNHbG9iYWxPYmplY3Q6OmNyZWF0ZVRo
cm93VHlwZUVycm9yKEV4ZWNTdGF0ZSogZXhlYykKIHsKLSAgICBKU0Z1bmN0aW9uKiB0aHJvd2Vy
ID0gSlNGdW5jdGlvbjo6Y3JlYXRlKGV4ZWMsIHRoaXMsIDAsIElkZW50aWZpZXIoKSwgZ2xvYmFs
RnVuY1Rocm93VHlwZUVycm9yKTsKKyAgICBKU0Z1bmN0aW9uKiB0aHJvd2VyID0gSlNGdW5jdGlv
bjo6Y3JlYXRlKGV4ZWMsIHRoaXMsIDAsICIiLCBnbG9iYWxGdW5jVGhyb3dUeXBlRXJyb3IpOwog
ICAgIEdldHRlclNldHRlciogZ2V0dGVyU2V0dGVyID0gR2V0dGVyU2V0dGVyOjpjcmVhdGUoZXhl
Yyk7CiAgICAgZ2V0dGVyU2V0dGVyLT5zZXRHZXR0ZXIoZXhlYy0+Z2xvYmFsRGF0YSgpLCB0aHJv
d2VyKTsKICAgICBnZXR0ZXJTZXR0ZXItPnNldFNldHRlcihleGVjLT5nbG9iYWxEYXRhKCksIHRo
cm93ZXIpOwpAQCAtNDMxLDcgKzQzMSw3IEBAIHZvaWQgSlNHbG9iYWxPYmplY3Q6OmFkZFN0YXRp
Y0dsb2JhbHMoR2wKICAgICB9CiB9CiAKLWJvb2wgSlNHbG9iYWxPYmplY3Q6OmdldE93blByb3Bl
cnR5U2xvdChKU0NlbGwqIGNlbGwsIEV4ZWNTdGF0ZSogZXhlYywgY29uc3QgSWRlbnRpZmllciYg
cHJvcGVydHlOYW1lLCBQcm9wZXJ0eVNsb3QmIHNsb3QpCitib29sIEpTR2xvYmFsT2JqZWN0Ojpn
ZXRPd25Qcm9wZXJ0eVNsb3QoSlNDZWxsKiBjZWxsLCBFeGVjU3RhdGUqIGV4ZWMsIFByb3BlcnR5
TmFtZSBwcm9wZXJ0eU5hbWUsIFByb3BlcnR5U2xvdCYgc2xvdCkKIHsKICAgICBKU0dsb2JhbE9i
amVjdCogdGhpc09iamVjdCA9IGpzQ2FzdDxKU0dsb2JhbE9iamVjdCo+KGNlbGwpOwogICAgIGlm
IChnZXRTdGF0aWNGdW5jdGlvblNsb3Q8SlNWYXJpYWJsZU9iamVjdD4oZXhlYywgRXhlY1N0YXRl
OjpnbG9iYWxPYmplY3RUYWJsZShleGVjKSwgdGhpc09iamVjdCwgcHJvcGVydHlOYW1lLCBzbG90
KSkKQEAgLTQzOSw3ICs0MzksNyBAQCBib29sIEpTR2xvYmFsT2JqZWN0OjpnZXRPd25Qcm9wZXJ0
eVNsb3QoCiAgICAgcmV0dXJuIHRoaXNPYmplY3QtPnN5bWJvbFRhYmxlR2V0KHByb3BlcnR5TmFt
ZSwgc2xvdCk7CiB9CiAKLWJvb2wgSlNHbG9iYWxPYmplY3Q6OmdldE93blByb3BlcnR5RGVzY3Jp
cHRvcihKU09iamVjdCogb2JqZWN0LCBFeGVjU3RhdGUqIGV4ZWMsIGNvbnN0IElkZW50aWZpZXIm
IHByb3BlcnR5TmFtZSwgUHJvcGVydHlEZXNjcmlwdG9yJiBkZXNjcmlwdG9yKQorYm9vbCBKU0ds
b2JhbE9iamVjdDo6Z2V0T3duUHJvcGVydHlEZXNjcmlwdG9yKEpTT2JqZWN0KiBvYmplY3QsIEV4
ZWNTdGF0ZSogZXhlYywgUHJvcGVydHlOYW1lIHByb3BlcnR5TmFtZSwgUHJvcGVydHlEZXNjcmlw
dG9yJiBkZXNjcmlwdG9yKQogewogICAgIEpTR2xvYmFsT2JqZWN0KiB0aGlzT2JqZWN0ID0ganND
YXN0PEpTR2xvYmFsT2JqZWN0Kj4ob2JqZWN0KTsKICAgICBpZiAoZ2V0U3RhdGljRnVuY3Rpb25E
ZXNjcmlwdG9yPEpTVmFyaWFibGVPYmplY3Q+KGV4ZWMsIEV4ZWNTdGF0ZTo6Z2xvYmFsT2JqZWN0
VGFibGUoZXhlYyksIHRoaXNPYmplY3QsIHByb3BlcnR5TmFtZSwgZGVzY3JpcHRvcikpCkluZGV4
OiBTb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9KU0dsb2JhbE9iamVjdC5oCj09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT0KLS0tIFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL0pTR2xvYmFsT2JqZWN0LmgJKHJl
dmlzaW9uIDExNjY2NykKKysrIFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL0pTR2xvYmFs
T2JqZWN0LmgJKHdvcmtpbmcgY29weSkKQEAgLTE5OSwyMCArMTk5LDIwIEBAIG5hbWVzcGFjZSBK
U0MgewogCiAgICAgICAgIEpTX0VYUE9SVF9QUklWQVRFIHN0YXRpYyB2b2lkIHZpc2l0Q2hpbGRy
ZW4oSlNDZWxsKiwgU2xvdFZpc2l0b3ImKTsKIAotICAgICAgICBKU19FWFBPUlRfUFJJVkFURSBz
dGF0aWMgYm9vbCBnZXRPd25Qcm9wZXJ0eVNsb3QoSlNDZWxsKiwgRXhlY1N0YXRlKiwgY29uc3Qg
SWRlbnRpZmllciYsIFByb3BlcnR5U2xvdCYpOwotICAgICAgICBKU19FWFBPUlRfUFJJVkFURSBz
dGF0aWMgYm9vbCBnZXRPd25Qcm9wZXJ0eURlc2NyaXB0b3IoSlNPYmplY3QqLCBFeGVjU3RhdGUq
LCBjb25zdCBJZGVudGlmaWVyJiwgUHJvcGVydHlEZXNjcmlwdG9yJik7Ci0gICAgICAgIGJvb2wg
aGFzT3duUHJvcGVydHlGb3JXcml0ZShFeGVjU3RhdGUqLCBjb25zdCBJZGVudGlmaWVyJik7Ci0g
ICAgICAgIEpTX0VYUE9SVF9QUklWQVRFIHN0YXRpYyB2b2lkIHB1dChKU0NlbGwqLCBFeGVjU3Rh
dGUqLCBjb25zdCBJZGVudGlmaWVyJiwgSlNWYWx1ZSwgUHV0UHJvcGVydHlTbG90Jik7Ci0KLSAg
ICAgICAgSlNfRVhQT1JUX1BSSVZBVEUgc3RhdGljIHZvaWQgcHV0RGlyZWN0VmlydHVhbChKU09i
amVjdCosIEV4ZWNTdGF0ZSosIGNvbnN0IElkZW50aWZpZXImIHByb3BlcnR5TmFtZSwgSlNWYWx1
ZSwgdW5zaWduZWQgYXR0cmlidXRlcyk7Ci0KLSAgICAgICAgSlNfRVhQT1JUX1BSSVZBVEUgc3Rh
dGljIHZvaWQgZGVmaW5lR2V0dGVyKEpTT2JqZWN0KiwgRXhlY1N0YXRlKiwgY29uc3QgSWRlbnRp
ZmllciYgcHJvcGVydHlOYW1lLCBKU09iamVjdCogZ2V0dGVyRnVuYywgdW5zaWduZWQgYXR0cmli
dXRlcyk7Ci0gICAgICAgIEpTX0VYUE9SVF9QUklWQVRFIHN0YXRpYyB2b2lkIGRlZmluZVNldHRl
cihKU09iamVjdCosIEV4ZWNTdGF0ZSosIGNvbnN0IElkZW50aWZpZXImIHByb3BlcnR5TmFtZSwg
SlNPYmplY3QqIHNldHRlckZ1bmMsIHVuc2lnbmVkIGF0dHJpYnV0ZXMpOwotICAgICAgICBKU19F
WFBPUlRfUFJJVkFURSBzdGF0aWMgYm9vbCBkZWZpbmVPd25Qcm9wZXJ0eShKU09iamVjdCosIEV4
ZWNTdGF0ZSosIGNvbnN0IElkZW50aWZpZXImIHByb3BlcnR5TmFtZSwgUHJvcGVydHlEZXNjcmlw
dG9yJiwgYm9vbCBzaG91bGRUaHJvdyk7CisgICAgICAgIEpTX0VYUE9SVF9QUklWQVRFIHN0YXRp
YyBib29sIGdldE93blByb3BlcnR5U2xvdChKU0NlbGwqLCBFeGVjU3RhdGUqLCBQcm9wZXJ0eU5h
bWUsIFByb3BlcnR5U2xvdCYpOworICAgICAgICBKU19FWFBPUlRfUFJJVkFURSBzdGF0aWMgYm9v
bCBnZXRPd25Qcm9wZXJ0eURlc2NyaXB0b3IoSlNPYmplY3QqLCBFeGVjU3RhdGUqLCBQcm9wZXJ0
eU5hbWUsIFByb3BlcnR5RGVzY3JpcHRvciYpOworICAgICAgICBib29sIGhhc093blByb3BlcnR5
Rm9yV3JpdGUoRXhlY1N0YXRlKiwgUHJvcGVydHlOYW1lKTsKKyAgICAgICAgSlNfRVhQT1JUX1BS
SVZBVEUgc3RhdGljIHZvaWQgcHV0KEpTQ2VsbCosIEV4ZWNTdGF0ZSosIFByb3BlcnR5TmFtZSwg
SlNWYWx1ZSwgUHV0UHJvcGVydHlTbG90Jik7CisKKyAgICAgICAgSlNfRVhQT1JUX1BSSVZBVEUg
c3RhdGljIHZvaWQgcHV0RGlyZWN0VmlydHVhbChKU09iamVjdCosIEV4ZWNTdGF0ZSosIFByb3Bl
cnR5TmFtZSwgSlNWYWx1ZSwgdW5zaWduZWQgYXR0cmlidXRlcyk7CisKKyAgICAgICAgSlNfRVhQ
T1JUX1BSSVZBVEUgc3RhdGljIHZvaWQgZGVmaW5lR2V0dGVyKEpTT2JqZWN0KiwgRXhlY1N0YXRl
KiwgUHJvcGVydHlOYW1lLCBKU09iamVjdCogZ2V0dGVyRnVuYywgdW5zaWduZWQgYXR0cmlidXRl
cyk7CisgICAgICAgIEpTX0VYUE9SVF9QUklWQVRFIHN0YXRpYyB2b2lkIGRlZmluZVNldHRlcihK
U09iamVjdCosIEV4ZWNTdGF0ZSosIFByb3BlcnR5TmFtZSwgSlNPYmplY3QqIHNldHRlckZ1bmMs
IHVuc2lnbmVkIGF0dHJpYnV0ZXMpOworICAgICAgICBKU19FWFBPUlRfUFJJVkFURSBzdGF0aWMg
Ym9vbCBkZWZpbmVPd25Qcm9wZXJ0eShKU09iamVjdCosIEV4ZWNTdGF0ZSosIFByb3BlcnR5TmFt
ZSwgUHJvcGVydHlEZXNjcmlwdG9yJiwgYm9vbCBzaG91bGRUaHJvdyk7CiAKICAgICAgICAgLy8g
V2UgdXNlIHRoaXMgaW4gdGhlIGNvZGUgZ2VuZXJhdG9yIGFzIHdlIHBlcmZvcm0gc3ltYm9sIHRh
YmxlCiAgICAgICAgIC8vIGxvb2t1cHMgcHJpb3IgdG8gaW5pdGlhbGl6aW5nIHRoZSBwcm9wZXJ0
aWVzCi0gICAgICAgIGJvb2wgc3ltYm9sVGFibGVIYXNQcm9wZXJ0eShjb25zdCBJZGVudGlmaWVy
JiBwcm9wZXJ0eU5hbWUpOworICAgICAgICBib29sIHN5bWJvbFRhYmxlSGFzUHJvcGVydHkoUHJv
cGVydHlOYW1lKTsKIAogICAgICAgICAvLyBUaGUgZm9sbG93aW5nIGFjY2Vzc29ycyByZXR1cm4g
cHJpc3RpbmUgdmFsdWVzLCBldmVuIGlmIGEgc2NyaXB0IAogICAgICAgICAvLyByZXBsYWNlcyB0
aGUgZ2xvYmFsIG9iamVjdCdzIGFzc29jaWF0ZWQgcHJvcGVydHkuCkBAIC0zNjUsNyArMzY1LDcg
QEAgbmFtZXNwYWNlIEpTQyB7CiAgICAgICAgIG1fcmVnaXN0ZXJBcnJheVNpemUgPSBjb3VudDsK
ICAgICB9CiAKLSAgICBpbmxpbmUgYm9vbCBKU0dsb2JhbE9iamVjdDo6aGFzT3duUHJvcGVydHlG
b3JXcml0ZShFeGVjU3RhdGUqIGV4ZWMsIGNvbnN0IElkZW50aWZpZXImIHByb3BlcnR5TmFtZSkK
KyAgICBpbmxpbmUgYm9vbCBKU0dsb2JhbE9iamVjdDo6aGFzT3duUHJvcGVydHlGb3JXcml0ZShF
eGVjU3RhdGUqIGV4ZWMsIFByb3BlcnR5TmFtZSBwcm9wZXJ0eU5hbWUpCiAgICAgewogICAgICAg
ICBQcm9wZXJ0eVNsb3Qgc2xvdDsKICAgICAgICAgaWYgKEpTVmFyaWFibGVPYmplY3Q6OmdldE93
blByb3BlcnR5U2xvdCh0aGlzLCBleGVjLCBwcm9wZXJ0eU5hbWUsIHNsb3QpKQpAQCAtMzc0LDcg
KzM3NCw3IEBAIG5hbWVzcGFjZSBKU0MgewogICAgICAgICByZXR1cm4gc3ltYm9sVGFibGVHZXQo
cHJvcGVydHlOYW1lLCBzbG90LCBzbG90SXNXcml0ZWFibGUpOwogICAgIH0KIAotICAgIGlubGlu
ZSBib29sIEpTR2xvYmFsT2JqZWN0OjpzeW1ib2xUYWJsZUhhc1Byb3BlcnR5KGNvbnN0IElkZW50
aWZpZXImIHByb3BlcnR5TmFtZSkKKyAgICBpbmxpbmUgYm9vbCBKU0dsb2JhbE9iamVjdDo6c3lt
Ym9sVGFibGVIYXNQcm9wZXJ0eShQcm9wZXJ0eU5hbWUgcHJvcGVydHlOYW1lKQogICAgIHsKICAg
ICAgICAgU3ltYm9sVGFibGVFbnRyeSBlbnRyeSA9IHN5bWJvbFRhYmxlKCkuaW5saW5lR2V0KHBy
b3BlcnR5TmFtZS5pbXBsKCkpOwogICAgICAgICByZXR1cm4gIWVudHJ5LmlzTnVsbCgpOwpJbmRl
eDogU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvSlNOb3RBbk9iamVjdC5jcHAKPT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PQotLS0gU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvSlNOb3RBbk9iamVjdC5jcHAJ
KHJldmlzaW9uIDExNjY2NykKKysrIFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL0pTTm90
QW5PYmplY3QuY3BwCSh3b3JraW5nIGNvcHkpCkBAIC00Nyw3ICs0Nyw3IEBAIEpTVmFsdWUgSlNO
b3RBbk9iamVjdDo6ZGVmYXVsdFZhbHVlKGNvbnMKIH0KIAogLy8gSlNPYmplY3QgbWV0aG9kcwot
Ym9vbCBKU05vdEFuT2JqZWN0OjpnZXRPd25Qcm9wZXJ0eVNsb3QoSlNDZWxsKiwgRXhlY1N0YXRl
KiBleGVjLCBjb25zdCBJZGVudGlmaWVyJiwgUHJvcGVydHlTbG90JikKK2Jvb2wgSlNOb3RBbk9i
amVjdDo6Z2V0T3duUHJvcGVydHlTbG90KEpTQ2VsbCosIEV4ZWNTdGF0ZSogZXhlYywgUHJvcGVy
dHlOYW1lLCBQcm9wZXJ0eVNsb3QmKQogewogICAgIEFTU0VSVF9VTlVTRUQoZXhlYywgZXhlYy0+
aGFkRXhjZXB0aW9uKCkpOwogICAgIHJldHVybiBmYWxzZTsKQEAgLTU5LDEzICs1OSwxMyBAQCBi
b29sIEpTTm90QW5PYmplY3Q6OmdldE93blByb3BlcnR5U2xvdEJ5CiAgICAgcmV0dXJuIGZhbHNl
OwogfQogCi1ib29sIEpTTm90QW5PYmplY3Q6OmdldE93blByb3BlcnR5RGVzY3JpcHRvcihKU09i
amVjdCosIEV4ZWNTdGF0ZSogZXhlYywgY29uc3QgSWRlbnRpZmllciYsIFByb3BlcnR5RGVzY3Jp
cHRvciYpCitib29sIEpTTm90QW5PYmplY3Q6OmdldE93blByb3BlcnR5RGVzY3JpcHRvcihKU09i
amVjdCosIEV4ZWNTdGF0ZSogZXhlYywgUHJvcGVydHlOYW1lLCBQcm9wZXJ0eURlc2NyaXB0b3Im
KQogewogICAgIEFTU0VSVF9VTlVTRUQoZXhlYywgZXhlYy0+aGFkRXhjZXB0aW9uKCkpOwogICAg
IHJldHVybiBmYWxzZTsKIH0KIAotdm9pZCBKU05vdEFuT2JqZWN0OjpwdXQoSlNDZWxsKiwgRXhl
Y1N0YXRlKiBleGVjLCBjb25zdCBJZGVudGlmaWVyJiAsIEpTVmFsdWUsIFB1dFByb3BlcnR5U2xv
dCYpCit2b2lkIEpTTm90QW5PYmplY3Q6OnB1dChKU0NlbGwqLCBFeGVjU3RhdGUqIGV4ZWMsIFBy
b3BlcnR5TmFtZSAsIEpTVmFsdWUsIFB1dFByb3BlcnR5U2xvdCYpCiB7CiAgICAgQVNTRVJUX1VO
VVNFRChleGVjLCBleGVjLT5oYWRFeGNlcHRpb24oKSk7CiB9CkBAIC03NSw3ICs3NSw3IEBAIHZv
aWQgSlNOb3RBbk9iamVjdDo6cHV0QnlJbmRleChKU0NlbGwqLCAKICAgICBBU1NFUlRfVU5VU0VE
KGV4ZWMsIGV4ZWMtPmhhZEV4Y2VwdGlvbigpKTsKIH0KIAotYm9vbCBKU05vdEFuT2JqZWN0Ojpk
ZWxldGVQcm9wZXJ0eShKU0NlbGwqLCBFeGVjU3RhdGUqIGV4ZWMsIGNvbnN0IElkZW50aWZpZXIm
KQorYm9vbCBKU05vdEFuT2JqZWN0OjpkZWxldGVQcm9wZXJ0eShKU0NlbGwqLCBFeGVjU3RhdGUq
IGV4ZWMsIFByb3BlcnR5TmFtZSkKIHsKICAgICBBU1NFUlRfVU5VU0VEKGV4ZWMsIGV4ZWMtPmhh
ZEV4Y2VwdGlvbigpKTsKICAgICByZXR1cm4gZmFsc2U7CkluZGV4OiBTb3VyY2UvSmF2YVNjcmlw
dENvcmUvcnVudGltZS9KU05vdEFuT2JqZWN0LmgKPT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL0phdmFT
Y3JpcHRDb3JlL3J1bnRpbWUvSlNOb3RBbk9iamVjdC5oCShyZXZpc2lvbiAxMTY2NjcpCisrKyBT
b3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9KU05vdEFuT2JqZWN0LmgJKHdvcmtpbmcgY29w
eSkKQEAgLTY4LDE0ICs2OCwxNCBAQCBuYW1lc3BhY2UgSlNDIHsKICAgICAgICAgc3RhdGljIEpT
VmFsdWUgZGVmYXVsdFZhbHVlKGNvbnN0IEpTT2JqZWN0KiwgRXhlY1N0YXRlKiwgUHJlZmVycmVk
UHJpbWl0aXZlVHlwZSk7CiAKICAgICAgICAgLy8gSlNPYmplY3QgbWV0aG9kcwotICAgICAgICBz
dGF0aWMgYm9vbCBnZXRPd25Qcm9wZXJ0eVNsb3QoSlNDZWxsKiwgRXhlY1N0YXRlKiwgY29uc3Qg
SWRlbnRpZmllciYgcHJvcGVydHlOYW1lLCBQcm9wZXJ0eVNsb3QmKTsKKyAgICAgICAgc3RhdGlj
IGJvb2wgZ2V0T3duUHJvcGVydHlTbG90KEpTQ2VsbCosIEV4ZWNTdGF0ZSosIFByb3BlcnR5TmFt
ZSwgUHJvcGVydHlTbG90Jik7CiAgICAgICAgIHN0YXRpYyBib29sIGdldE93blByb3BlcnR5U2xv
dEJ5SW5kZXgoSlNDZWxsKiwgRXhlY1N0YXRlKiwgdW5zaWduZWQgcHJvcGVydHlOYW1lLCBQcm9w
ZXJ0eVNsb3QmKTsKLSAgICAgICAgc3RhdGljIGJvb2wgZ2V0T3duUHJvcGVydHlEZXNjcmlwdG9y
KEpTT2JqZWN0KiwgRXhlY1N0YXRlKiwgY29uc3QgSWRlbnRpZmllciYsIFByb3BlcnR5RGVzY3Jp
cHRvciYpOworICAgICAgICBzdGF0aWMgYm9vbCBnZXRPd25Qcm9wZXJ0eURlc2NyaXB0b3IoSlNP
YmplY3QqLCBFeGVjU3RhdGUqLCBQcm9wZXJ0eU5hbWUsIFByb3BlcnR5RGVzY3JpcHRvciYpOwog
Ci0gICAgICAgIHN0YXRpYyB2b2lkIHB1dChKU0NlbGwqLCBFeGVjU3RhdGUqLCBjb25zdCBJZGVu
dGlmaWVyJiBwcm9wZXJ0eU5hbWUsIEpTVmFsdWUsIFB1dFByb3BlcnR5U2xvdCYpOworICAgICAg
ICBzdGF0aWMgdm9pZCBwdXQoSlNDZWxsKiwgRXhlY1N0YXRlKiwgUHJvcGVydHlOYW1lLCBKU1Zh
bHVlLCBQdXRQcm9wZXJ0eVNsb3QmKTsKICAgICAgICAgc3RhdGljIHZvaWQgcHV0QnlJbmRleChK
U0NlbGwqLCBFeGVjU3RhdGUqLCB1bnNpZ25lZCBwcm9wZXJ0eU5hbWUsIEpTVmFsdWUsIGJvb2wg
c2hvdWxkVGhyb3cpOwogCi0gICAgICAgIHN0YXRpYyBib29sIGRlbGV0ZVByb3BlcnR5KEpTQ2Vs
bCosIEV4ZWNTdGF0ZSosIGNvbnN0IElkZW50aWZpZXImIHByb3BlcnR5TmFtZSk7CisgICAgICAg
IHN0YXRpYyBib29sIGRlbGV0ZVByb3BlcnR5KEpTQ2VsbCosIEV4ZWNTdGF0ZSosIFByb3BlcnR5
TmFtZSk7CiAgICAgICAgIHN0YXRpYyBib29sIGRlbGV0ZVByb3BlcnR5QnlJbmRleChKU0NlbGwq
LCBFeGVjU3RhdGUqLCB1bnNpZ25lZCBwcm9wZXJ0eU5hbWUpOwogCiAgICAgICAgIHN0YXRpYyB2
b2lkIGdldE93blByb3BlcnR5TmFtZXMoSlNPYmplY3QqLCBFeGVjU3RhdGUqLCBQcm9wZXJ0eU5h
bWVBcnJheSYsIEVudW1lcmF0aW9uTW9kZSk7CkluZGV4OiBTb3VyY2UvSmF2YVNjcmlwdENvcmUv
cnVudGltZS9KU09OT2JqZWN0LmNwcAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvSmF2YVNjcmlwdENv
cmUvcnVudGltZS9KU09OT2JqZWN0LmNwcAkocmV2aXNpb24gMTE2NjY3KQorKysgU291cmNlL0ph
dmFTY3JpcHRDb3JlL3J1bnRpbWUvSlNPTk9iamVjdC5jcHAJKHdvcmtpbmcgY29weSkKQEAgLTU5
NSwxMiArNTk1LDEyIEBAIGNvbnN0IENsYXNzSW5mbyBKU09OT2JqZWN0OjpzX2luZm8gPSB7ICIK
IAogLy8gRUNNQSAxNS44CiAKLWJvb2wgSlNPTk9iamVjdDo6Z2V0T3duUHJvcGVydHlTbG90KEpT
Q2VsbCogY2VsbCwgRXhlY1N0YXRlKiBleGVjLCBjb25zdCBJZGVudGlmaWVyJiBwcm9wZXJ0eU5h
bWUsIFByb3BlcnR5U2xvdCYgc2xvdCkKK2Jvb2wgSlNPTk9iamVjdDo6Z2V0T3duUHJvcGVydHlT
bG90KEpTQ2VsbCogY2VsbCwgRXhlY1N0YXRlKiBleGVjLCBQcm9wZXJ0eU5hbWUgcHJvcGVydHlO
YW1lLCBQcm9wZXJ0eVNsb3QmIHNsb3QpCiB7CiAgICAgcmV0dXJuIGdldFN0YXRpY0Z1bmN0aW9u
U2xvdDxKU09iamVjdD4oZXhlYywgRXhlY1N0YXRlOjpqc29uVGFibGUoZXhlYyksIGpzQ2FzdDxK
U09OT2JqZWN0Kj4oY2VsbCksIHByb3BlcnR5TmFtZSwgc2xvdCk7CiB9CiAKLWJvb2wgSlNPTk9i
amVjdDo6Z2V0T3duUHJvcGVydHlEZXNjcmlwdG9yKEpTT2JqZWN0KiBvYmplY3QsIEV4ZWNTdGF0
ZSogZXhlYywgY29uc3QgSWRlbnRpZmllciYgcHJvcGVydHlOYW1lLCBQcm9wZXJ0eURlc2NyaXB0
b3ImIGRlc2NyaXB0b3IpCitib29sIEpTT05PYmplY3Q6OmdldE93blByb3BlcnR5RGVzY3JpcHRv
cihKU09iamVjdCogb2JqZWN0LCBFeGVjU3RhdGUqIGV4ZWMsIFByb3BlcnR5TmFtZSBwcm9wZXJ0
eU5hbWUsIFByb3BlcnR5RGVzY3JpcHRvciYgZGVzY3JpcHRvcikKIHsKICAgICByZXR1cm4gZ2V0
U3RhdGljRnVuY3Rpb25EZXNjcmlwdG9yPEpTT2JqZWN0PihleGVjLCBFeGVjU3RhdGU6Ompzb25U
YWJsZShleGVjKSwganNDYXN0PEpTT05PYmplY3QqPihvYmplY3QpLCBwcm9wZXJ0eU5hbWUsIGRl
c2NyaXB0b3IpOwogfQpJbmRleDogU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvSlNPTk9i
amVjdC5oCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL0pTT05P
YmplY3QuaAkocmV2aXNpb24gMTE2NjY3KQorKysgU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRp
bWUvSlNPTk9iamVjdC5oCSh3b3JraW5nIGNvcHkpCkBAIC01Niw4ICs1Niw4IEBAIG5hbWVzcGFj
ZSBKU0MgewogCiAgICAgcHJpdmF0ZToKICAgICAgICAgSlNPTk9iamVjdChKU0dsb2JhbE9iamVj
dCosIFN0cnVjdHVyZSopOwotICAgICAgICBzdGF0aWMgYm9vbCBnZXRPd25Qcm9wZXJ0eVNsb3Qo
SlNDZWxsKiwgRXhlY1N0YXRlKiwgY29uc3QgSWRlbnRpZmllciYsIFByb3BlcnR5U2xvdCYpOwot
ICAgICAgICBzdGF0aWMgYm9vbCBnZXRPd25Qcm9wZXJ0eURlc2NyaXB0b3IoSlNPYmplY3QqLCBF
eGVjU3RhdGUqLCBjb25zdCBJZGVudGlmaWVyJiwgUHJvcGVydHlEZXNjcmlwdG9yJik7CisgICAg
ICAgIHN0YXRpYyBib29sIGdldE93blByb3BlcnR5U2xvdChKU0NlbGwqLCBFeGVjU3RhdGUqLCBQ
cm9wZXJ0eU5hbWUsIFByb3BlcnR5U2xvdCYpOworICAgICAgICBzdGF0aWMgYm9vbCBnZXRPd25Q
cm9wZXJ0eURlc2NyaXB0b3IoSlNPYmplY3QqLCBFeGVjU3RhdGUqLCBQcm9wZXJ0eU5hbWUsIFBy
b3BlcnR5RGVzY3JpcHRvciYpOwogCiAgICAgfTsKIApJbmRleDogU291cmNlL0phdmFTY3JpcHRD
b3JlL3J1bnRpbWUvSlNPYmplY3QuY3BwCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9KYXZhU2NyaXB0
Q29yZS9ydW50aW1lL0pTT2JqZWN0LmNwcAkocmV2aXNpb24gMTE2NjY3KQorKysgU291cmNlL0ph
dmFTY3JpcHRDb3JlL3J1bnRpbWUvSlNPYmplY3QuY3BwCSh3b3JraW5nIGNvcHkpCkBAIC0xMjAs
NyArMTIwLDcgQEAgYm9vbCBKU09iamVjdDo6Z2V0T3duUHJvcGVydHlTbG90QnlJbmRleAogfQog
CiAvLyBFQ01BIDguNi4yLjIKLXZvaWQgSlNPYmplY3Q6OnB1dChKU0NlbGwqIGNlbGwsIEV4ZWNT
dGF0ZSogZXhlYywgY29uc3QgSWRlbnRpZmllciYgcHJvcGVydHlOYW1lLCBKU1ZhbHVlIHZhbHVl
LCBQdXRQcm9wZXJ0eVNsb3QmIHNsb3QpCit2b2lkIEpTT2JqZWN0OjpwdXQoSlNDZWxsKiBjZWxs
LCBFeGVjU3RhdGUqIGV4ZWMsIFByb3BlcnR5TmFtZSBwcm9wZXJ0eU5hbWUsIEpTVmFsdWUgdmFs
dWUsIFB1dFByb3BlcnR5U2xvdCYgc2xvdCkKIHsKICAgICBKU09iamVjdCogdGhpc09iamVjdCA9
IGpzQ2FzdDxKU09iamVjdCo+KGNlbGwpOwogICAgIEFTU0VSVCh2YWx1ZSk7CkBAIC0xOTIsNyAr
MTkyLDcgQEAgdm9pZCBKU09iamVjdDo6cHV0QnlJbmRleChKU0NlbGwqIGNlbGwsIAogICAgIHRo
aXNPYmplY3QtPm1ldGhvZFRhYmxlKCktPnB1dCh0aGlzT2JqZWN0LCBleGVjLCBJZGVudGlmaWVy
Ojpmcm9tKGV4ZWMsIHByb3BlcnR5TmFtZSksIHZhbHVlLCBzbG90KTsKIH0KIAotdm9pZCBKU09i
amVjdDo6cHV0RGlyZWN0VmlydHVhbChKU09iamVjdCogb2JqZWN0LCBFeGVjU3RhdGUqIGV4ZWMs
IGNvbnN0IElkZW50aWZpZXImIHByb3BlcnR5TmFtZSwgSlNWYWx1ZSB2YWx1ZSwgdW5zaWduZWQg
YXR0cmlidXRlcykKK3ZvaWQgSlNPYmplY3Q6OnB1dERpcmVjdFZpcnR1YWwoSlNPYmplY3QqIG9i
amVjdCwgRXhlY1N0YXRlKiBleGVjLCBQcm9wZXJ0eU5hbWUgcHJvcGVydHlOYW1lLCBKU1ZhbHVl
IHZhbHVlLCB1bnNpZ25lZCBhdHRyaWJ1dGVzKQogewogICAgIEFTU0VSVCghdmFsdWUuaXNHZXR0
ZXJTZXR0ZXIoKSAmJiAhKGF0dHJpYnV0ZXMgJiBBY2Nlc3NvcikpOwogICAgIFB1dFByb3BlcnR5
U2xvdCBzbG90OwpAQCAtMjIxLDcgKzIyMSw3IEBAIGJvb2wgSlNPYmplY3Q6OmFsbG93c0FjY2Vz
c0Zyb20oRXhlY1N0YXQKICAgICByZXR1cm4gZ2xvYmFsT2JqZWN0LT5nbG9iYWxPYmplY3RNZXRo
b2RUYWJsZSgpLT5hbGxvd3NBY2Nlc3NGcm9tKGdsb2JhbE9iamVjdCwgZXhlYyk7CiB9CiAKLXZv
aWQgSlNPYmplY3Q6OnB1dERpcmVjdEFjY2Vzc29yKEpTR2xvYmFsRGF0YSYgZ2xvYmFsRGF0YSwg
Y29uc3QgSWRlbnRpZmllciYgcHJvcGVydHlOYW1lLCBKU1ZhbHVlIHZhbHVlLCB1bnNpZ25lZCBh
dHRyaWJ1dGVzKQordm9pZCBKU09iamVjdDo6cHV0RGlyZWN0QWNjZXNzb3IoSlNHbG9iYWxEYXRh
JiBnbG9iYWxEYXRhLCBQcm9wZXJ0eU5hbWUgcHJvcGVydHlOYW1lLCBKU1ZhbHVlIHZhbHVlLCB1
bnNpZ25lZCBhdHRyaWJ1dGVzKQogewogICAgIEFTU0VSVCh2YWx1ZS5pc0dldHRlclNldHRlcigp
ICYmIChhdHRyaWJ1dGVzICYgQWNjZXNzb3IpKTsKIApAQCAtMjQwLDcgKzI0MCw3IEBAIHZvaWQg
SlNPYmplY3Q6OnB1dERpcmVjdEFjY2Vzc29yKEpTR2xvYmEKICAgICBzdHJ1Y3R1cmUoKS0+c2V0
SGFzR2V0dGVyU2V0dGVyUHJvcGVydGllcyhwcm9wZXJ0eU5hbWUgPT0gZ2xvYmFsRGF0YS5wcm9w
ZXJ0eU5hbWVzLT51bmRlcnNjb3JlUHJvdG8pOwogfQogCi1ib29sIEpTT2JqZWN0OjpoYXNQcm9w
ZXJ0eShFeGVjU3RhdGUqIGV4ZWMsIGNvbnN0IElkZW50aWZpZXImIHByb3BlcnR5TmFtZSkgY29u
c3QKK2Jvb2wgSlNPYmplY3Q6Omhhc1Byb3BlcnR5KEV4ZWNTdGF0ZSogZXhlYywgUHJvcGVydHlO
YW1lIHByb3BlcnR5TmFtZSkgY29uc3QKIHsKICAgICBQcm9wZXJ0eVNsb3Qgc2xvdDsKICAgICBy
ZXR1cm4gY29uc3RfY2FzdDxKU09iamVjdCo+KHRoaXMpLT5nZXRQcm9wZXJ0eVNsb3QoZXhlYywg
cHJvcGVydHlOYW1lLCBzbG90KTsKQEAgLTI1Myw3ICsyNTMsNyBAQCBib29sIEpTT2JqZWN0Ojpo
YXNQcm9wZXJ0eShFeGVjU3RhdGUqIGV4CiB9CiAKIC8vIEVDTUEgOC42LjIuNQotYm9vbCBKU09i
amVjdDo6ZGVsZXRlUHJvcGVydHkoSlNDZWxsKiBjZWxsLCBFeGVjU3RhdGUqIGV4ZWMsIGNvbnN0
IElkZW50aWZpZXImIHByb3BlcnR5TmFtZSkKK2Jvb2wgSlNPYmplY3Q6OmRlbGV0ZVByb3BlcnR5
KEpTQ2VsbCogY2VsbCwgRXhlY1N0YXRlKiBleGVjLCBQcm9wZXJ0eU5hbWUgcHJvcGVydHlOYW1l
KQogewogICAgIEpTT2JqZWN0KiB0aGlzT2JqZWN0ID0ganNDYXN0PEpTT2JqZWN0Kj4oY2VsbCk7
CiAKQEAgLTI3OCw3ICsyNzgsNyBAQCBib29sIEpTT2JqZWN0OjpkZWxldGVQcm9wZXJ0eShKU0Nl
bGwqIGNlCiAgICAgcmV0dXJuIHRydWU7CiB9CiAKLWJvb2wgSlNPYmplY3Q6Omhhc093blByb3Bl
cnR5KEV4ZWNTdGF0ZSogZXhlYywgY29uc3QgSWRlbnRpZmllciYgcHJvcGVydHlOYW1lKSBjb25z
dAorYm9vbCBKU09iamVjdDo6aGFzT3duUHJvcGVydHkoRXhlY1N0YXRlKiBleGVjLCBQcm9wZXJ0
eU5hbWUgcHJvcGVydHlOYW1lKSBjb25zdAogewogICAgIFByb3BlcnR5U2xvdCBzbG90OwogICAg
IHJldHVybiBjb25zdF9jYXN0PEpTT2JqZWN0Kj4odGhpcyktPm1ldGhvZFRhYmxlKCktPmdldE93
blByb3BlcnR5U2xvdChjb25zdF9jYXN0PEpTT2JqZWN0Kj4odGhpcyksIGV4ZWMsIHByb3BlcnR5
TmFtZSwgc2xvdCk7CkBAIC0yOTAsNyArMjkwLDcgQEAgYm9vbCBKU09iamVjdDo6ZGVsZXRlUHJv
cGVydHlCeUluZGV4KEpTQwogICAgIHJldHVybiB0aGlzT2JqZWN0LT5tZXRob2RUYWJsZSgpLT5k
ZWxldGVQcm9wZXJ0eSh0aGlzT2JqZWN0LCBleGVjLCBJZGVudGlmaWVyOjpmcm9tKGV4ZWMsIHBy
b3BlcnR5TmFtZSkpOwogfQogCi1zdGF0aWMgQUxXQVlTX0lOTElORSBKU1ZhbHVlIGNhbGxEZWZh
dWx0VmFsdWVGdW5jdGlvbihFeGVjU3RhdGUqIGV4ZWMsIGNvbnN0IEpTT2JqZWN0KiBvYmplY3Qs
IGNvbnN0IElkZW50aWZpZXImIHByb3BlcnR5TmFtZSkKK3N0YXRpYyBBTFdBWVNfSU5MSU5FIEpT
VmFsdWUgY2FsbERlZmF1bHRWYWx1ZUZ1bmN0aW9uKEV4ZWNTdGF0ZSogZXhlYywgY29uc3QgSlNP
YmplY3QqIG9iamVjdCwgUHJvcGVydHlOYW1lIHByb3BlcnR5TmFtZSkKIHsKICAgICBKU1ZhbHVl
IGZ1bmN0aW9uID0gb2JqZWN0LT5nZXQoZXhlYywgcHJvcGVydHlOYW1lKTsKICAgICBDYWxsRGF0
YSBjYWxsRGF0YTsKQEAgLTM0NCw3ICszNDQsNyBAQCBKU1ZhbHVlIEpTT2JqZWN0OjpkZWZhdWx0
VmFsdWUoY29uc3QgSlNPCiAgICAgcmV0dXJuIHRocm93RXJyb3IoZXhlYywgY3JlYXRlVHlwZUVy
cm9yKGV4ZWMsICJObyBkZWZhdWx0IHZhbHVlIikpOwogfQogCi1jb25zdCBIYXNoRW50cnkqIEpT
T2JqZWN0OjpmaW5kUHJvcGVydHlIYXNoRW50cnkoRXhlY1N0YXRlKiBleGVjLCBjb25zdCBJZGVu
dGlmaWVyJiBwcm9wZXJ0eU5hbWUpIGNvbnN0Citjb25zdCBIYXNoRW50cnkqIEpTT2JqZWN0Ojpm
aW5kUHJvcGVydHlIYXNoRW50cnkoRXhlY1N0YXRlKiBleGVjLCBQcm9wZXJ0eU5hbWUgcHJvcGVy
dHlOYW1lKSBjb25zdAogewogICAgIGZvciAoY29uc3QgQ2xhc3NJbmZvKiBpbmZvID0gY2xhc3NJ
bmZvKCk7IGluZm87IGluZm8gPSBpbmZvLT5wYXJlbnRDbGFzcykgewogICAgICAgICBpZiAoY29u
c3QgSGFzaFRhYmxlKiBwcm9wSGFzaFRhYmxlID0gaW5mby0+cHJvcEhhc2hUYWJsZShleGVjKSkg
ewpAQCAtMzgxLDcgKzM4MSw3IEBAIGJvb2wgSlNPYmplY3Q6OnByb3BlcnR5SXNFbnVtZXJhYmxl
KEV4ZWMKICAgICByZXR1cm4gZGVzY3JpcHRvci5lbnVtZXJhYmxlKCk7CiB9CiAKLWJvb2wgSlNP
YmplY3Q6OmdldFByb3BlcnR5U3BlY2lmaWNWYWx1ZShFeGVjU3RhdGUqIGV4ZWMsIGNvbnN0IElk
ZW50aWZpZXImIHByb3BlcnR5TmFtZSwgSlNDZWxsKiYgc3BlY2lmaWNWYWx1ZSkgY29uc3QKK2Jv
b2wgSlNPYmplY3Q6OmdldFByb3BlcnR5U3BlY2lmaWNWYWx1ZShFeGVjU3RhdGUqIGV4ZWMsIFBy
b3BlcnR5TmFtZSBwcm9wZXJ0eU5hbWUsIEpTQ2VsbComIHNwZWNpZmljVmFsdWUpIGNvbnN0CiB7
CiAgICAgdW5zaWduZWQgYXR0cmlidXRlczsKICAgICBpZiAoc3RydWN0dXJlKCktPmdldChleGVj
LT5nbG9iYWxEYXRhKCksIHByb3BlcnR5TmFtZSwgYXR0cmlidXRlcywgc3BlY2lmaWNWYWx1ZSkg
IT0gV1RGOjpub3RGb3VuZCkKQEAgLTUxMCw3ICs1MTAsNyBAQCB2b2lkIEpTT2JqZWN0OjpyZWlm
eVN0YXRpY0Z1bmN0aW9uc0ZvckRlCiAgICAgc3RydWN0dXJlKCktPnNldFN0YXRpY0Z1bmN0aW9u
c1JlaWZpZWQoKTsKIH0KIAotdm9pZCBKU09iamVjdDo6cmVtb3ZlRGlyZWN0KEpTR2xvYmFsRGF0
YSYgZ2xvYmFsRGF0YSwgY29uc3QgSWRlbnRpZmllciYgcHJvcGVydHlOYW1lKQordm9pZCBKU09i
amVjdDo6cmVtb3ZlRGlyZWN0KEpTR2xvYmFsRGF0YSYgZ2xvYmFsRGF0YSwgUHJvcGVydHlOYW1l
IHByb3BlcnR5TmFtZSkKIHsKICAgICBpZiAoc3RydWN0dXJlKCktPmdldChnbG9iYWxEYXRhLCBw
cm9wZXJ0eU5hbWUpID09IFdURjo6bm90Rm91bmQpCiAgICAgICAgIHJldHVybjsKQEAgLTU4Myw3
ICs1ODMsNyBAQCB2b2lkIEpTT2JqZWN0OjphbGxvY2F0ZVByb3BlcnR5U3RvcmFnZShKCiAgICAg
bV9wcm9wZXJ0eVN0b3JhZ2Uuc2V0KGdsb2JhbERhdGEsIHRoaXMsIG5ld1Byb3BlcnR5U3RvcmFn
ZSk7CiB9CiAKLWJvb2wgSlNPYmplY3Q6OmdldE93blByb3BlcnR5RGVzY3JpcHRvcihKU09iamVj
dCogb2JqZWN0LCBFeGVjU3RhdGUqIGV4ZWMsIGNvbnN0IElkZW50aWZpZXImIHByb3BlcnR5TmFt
ZSwgUHJvcGVydHlEZXNjcmlwdG9yJiBkZXNjcmlwdG9yKQorYm9vbCBKU09iamVjdDo6Z2V0T3du
UHJvcGVydHlEZXNjcmlwdG9yKEpTT2JqZWN0KiBvYmplY3QsIEV4ZWNTdGF0ZSogZXhlYywgUHJv
cGVydHlOYW1lIHByb3BlcnR5TmFtZSwgUHJvcGVydHlEZXNjcmlwdG9yJiBkZXNjcmlwdG9yKQog
ewogICAgIHVuc2lnbmVkIGF0dHJpYnV0ZXMgPSAwOwogICAgIEpTQ2VsbCogY2VsbCA9IDA7CkBA
IC01OTQsNyArNTk0LDcgQEAgYm9vbCBKU09iamVjdDo6Z2V0T3duUHJvcGVydHlEZXNjcmlwdG9y
KAogICAgIHJldHVybiB0cnVlOwogfQogCi1ib29sIEpTT2JqZWN0OjpnZXRQcm9wZXJ0eURlc2Ny
aXB0b3IoRXhlY1N0YXRlKiBleGVjLCBjb25zdCBJZGVudGlmaWVyJiBwcm9wZXJ0eU5hbWUsIFBy
b3BlcnR5RGVzY3JpcHRvciYgZGVzY3JpcHRvcikKK2Jvb2wgSlNPYmplY3Q6OmdldFByb3BlcnR5
RGVzY3JpcHRvcihFeGVjU3RhdGUqIGV4ZWMsIFByb3BlcnR5TmFtZSBwcm9wZXJ0eU5hbWUsIFBy
b3BlcnR5RGVzY3JpcHRvciYgZGVzY3JpcHRvcikKIHsKICAgICBKU09iamVjdCogb2JqZWN0ID0g
dGhpczsKICAgICB3aGlsZSAodHJ1ZSkgewpAQCAtNjA3LDcgKzYwNyw3IEBAIGJvb2wgSlNPYmpl
Y3Q6OmdldFByb3BlcnR5RGVzY3JpcHRvcihFeGUKICAgICB9CiB9CiAKLXN0YXRpYyBib29sIHB1
dERlc2NyaXB0b3IoRXhlY1N0YXRlKiBleGVjLCBKU09iamVjdCogdGFyZ2V0LCBjb25zdCBJZGVu
dGlmaWVyJiBwcm9wZXJ0eU5hbWUsIFByb3BlcnR5RGVzY3JpcHRvciYgZGVzY3JpcHRvciwgdW5z
aWduZWQgYXR0cmlidXRlcywgY29uc3QgUHJvcGVydHlEZXNjcmlwdG9yJiBvbGREZXNjcmlwdG9y
KQorc3RhdGljIGJvb2wgcHV0RGVzY3JpcHRvcihFeGVjU3RhdGUqIGV4ZWMsIEpTT2JqZWN0KiB0
YXJnZXQsIFByb3BlcnR5TmFtZSBwcm9wZXJ0eU5hbWUsIFByb3BlcnR5RGVzY3JpcHRvciYgZGVz
Y3JpcHRvciwgdW5zaWduZWQgYXR0cmlidXRlcywgY29uc3QgUHJvcGVydHlEZXNjcmlwdG9yJiBv
bGREZXNjcmlwdG9yKQogewogICAgIGlmIChkZXNjcmlwdG9yLmlzR2VuZXJpY0Rlc2NyaXB0b3Io
KSB8fCBkZXNjcmlwdG9yLmlzRGF0YURlc2NyaXB0b3IoKSkgewogICAgICAgICBpZiAoZGVzY3Jp
cHRvci5pc0dlbmVyaWNEZXNjcmlwdG9yKCkgJiYgb2xkRGVzY3JpcHRvci5pc0FjY2Vzc29yRGVz
Y3JpcHRvcigpKSB7CkBAIC02NjIsNyArNjYyLDcgQEAgcHJpdmF0ZToKICAgICBKU0dsb2JhbERh
dGEmIG1fZ2xvYmFsRGF0YTsKIH07CiAKLWJvb2wgSlNPYmplY3Q6OmRlZmluZU93blByb3BlcnR5
KEpTT2JqZWN0KiBvYmplY3QsIEV4ZWNTdGF0ZSogZXhlYywgY29uc3QgSWRlbnRpZmllciYgcHJv
cGVydHlOYW1lLCBQcm9wZXJ0eURlc2NyaXB0b3ImIGRlc2NyaXB0b3IsIGJvb2wgdGhyb3dFeGNl
cHRpb24pCitib29sIEpTT2JqZWN0OjpkZWZpbmVPd25Qcm9wZXJ0eShKU09iamVjdCogb2JqZWN0
LCBFeGVjU3RhdGUqIGV4ZWMsIFByb3BlcnR5TmFtZSBwcm9wZXJ0eU5hbWUsIFByb3BlcnR5RGVz
Y3JpcHRvciYgZGVzY3JpcHRvciwgYm9vbCB0aHJvd0V4Y2VwdGlvbikKIHsKICAgICAvLyBUcmFj
ayBvbiB0aGUgZ2xvYmFsZGF0YSB0aGF0IHdlJ3JlIGluIGRlZmluZSBwcm9wZXJ0eS4KICAgICAv
LyBDdXJyZW50bHkgRGVmaW5lT3duUHJvcGVydHkgdXNlcyBkZWxldGUgdG8gcmVtb3ZlIHByb3Bl
cnRpZXMgd2hlbiB0aGV5IGFyZSBiZWluZyByZXBsYWNlZApJbmRleDogU291cmNlL0phdmFTY3Jp
cHRDb3JlL3J1bnRpbWUvSlNPYmplY3QuaAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvSmF2YVNjcmlw
dENvcmUvcnVudGltZS9KU09iamVjdC5oCShyZXZpc2lvbiAxMTY2NjcpCisrKyBTb3VyY2UvSmF2
YVNjcmlwdENvcmUvcnVudGltZS9KU09iamVjdC5oCSh3b3JraW5nIGNvcHkpCkBAIC03NSw3ICs3
NSw3IEBAIG5hbWVzcGFjZSBKU0MgewogICAgICAgICBmcmllbmQgY2xhc3MgSklUOwogICAgICAg
ICBmcmllbmQgY2xhc3MgSlNDZWxsOwogICAgICAgICBmcmllbmQgY2xhc3MgTWFya2VkQmxvY2s7
Ci0gICAgICAgIEpTX0VYUE9SVF9QUklWQVRFIGZyaWVuZCBib29sIHNldFVwU3RhdGljRnVuY3Rp
b25TbG90KEV4ZWNTdGF0ZSogZXhlYywgY29uc3QgSGFzaEVudHJ5KiBlbnRyeSwgSlNPYmplY3Qq
IHRoaXNPYmosIGNvbnN0IElkZW50aWZpZXImIHByb3BlcnR5TmFtZSwgUHJvcGVydHlTbG90JiBz
bG90KTsKKyAgICAgICAgSlNfRVhQT1JUX1BSSVZBVEUgZnJpZW5kIGJvb2wgc2V0VXBTdGF0aWNG
dW5jdGlvblNsb3QoRXhlY1N0YXRlKiwgY29uc3QgSGFzaEVudHJ5KiwgSlNPYmplY3QqLCBQcm9w
ZXJ0eU5hbWUsIFByb3BlcnR5U2xvdCYpOwogCiAgICAgICAgIGVudW0gUHV0TW9kZSB7CiAgICAg
ICAgICAgICBQdXRNb2RlUHV0LApAQCAtOTUsMzkgKzk1LDM5IEBAIG5hbWVzcGFjZSBKU0Mgewog
ICAgICAgICAKICAgICAgICAgU3RydWN0dXJlKiBpbmhlcml0b3JJRChKU0dsb2JhbERhdGEmKTsK
IAotICAgICAgICBKU1ZhbHVlIGdldChFeGVjU3RhdGUqLCBjb25zdCBJZGVudGlmaWVyJiBwcm9w
ZXJ0eU5hbWUpIGNvbnN0OworICAgICAgICBKU1ZhbHVlIGdldChFeGVjU3RhdGUqLCBQcm9wZXJ0
eU5hbWUpIGNvbnN0OwogICAgICAgICBKU1ZhbHVlIGdldChFeGVjU3RhdGUqLCB1bnNpZ25lZCBw
cm9wZXJ0eU5hbWUpIGNvbnN0OwogCi0gICAgICAgIGJvb2wgZ2V0UHJvcGVydHlTbG90KEV4ZWNT
dGF0ZSosIGNvbnN0IElkZW50aWZpZXImIHByb3BlcnR5TmFtZSwgUHJvcGVydHlTbG90Jik7Cisg
ICAgICAgIGJvb2wgZ2V0UHJvcGVydHlTbG90KEV4ZWNTdGF0ZSosIFByb3BlcnR5TmFtZSwgUHJv
cGVydHlTbG90Jik7CiAgICAgICAgIGJvb2wgZ2V0UHJvcGVydHlTbG90KEV4ZWNTdGF0ZSosIHVu
c2lnbmVkIHByb3BlcnR5TmFtZSwgUHJvcGVydHlTbG90Jik7Ci0gICAgICAgIEpTX0VYUE9SVF9Q
UklWQVRFIGJvb2wgZ2V0UHJvcGVydHlEZXNjcmlwdG9yKEV4ZWNTdGF0ZSosIGNvbnN0IElkZW50
aWZpZXImIHByb3BlcnR5TmFtZSwgUHJvcGVydHlEZXNjcmlwdG9yJik7CisgICAgICAgIEpTX0VY
UE9SVF9QUklWQVRFIGJvb2wgZ2V0UHJvcGVydHlEZXNjcmlwdG9yKEV4ZWNTdGF0ZSosIFByb3Bl
cnR5TmFtZSwgUHJvcGVydHlEZXNjcmlwdG9yJik7CiAKLSAgICAgICAgc3RhdGljIGJvb2wgZ2V0
T3duUHJvcGVydHlTbG90KEpTQ2VsbCosIEV4ZWNTdGF0ZSosIGNvbnN0IElkZW50aWZpZXImIHBy
b3BlcnR5TmFtZSwgUHJvcGVydHlTbG90Jik7CisgICAgICAgIHN0YXRpYyBib29sIGdldE93blBy
b3BlcnR5U2xvdChKU0NlbGwqLCBFeGVjU3RhdGUqLCBQcm9wZXJ0eU5hbWUsIFByb3BlcnR5U2xv
dCYpOwogICAgICAgICBKU19FWFBPUlRfUFJJVkFURSBzdGF0aWMgYm9vbCBnZXRPd25Qcm9wZXJ0
eVNsb3RCeUluZGV4KEpTQ2VsbCosIEV4ZWNTdGF0ZSosIHVuc2lnbmVkIHByb3BlcnR5TmFtZSwg
UHJvcGVydHlTbG90Jik7Ci0gICAgICAgIEpTX0VYUE9SVF9QUklWQVRFIHN0YXRpYyBib29sIGdl
dE93blByb3BlcnR5RGVzY3JpcHRvcihKU09iamVjdCosIEV4ZWNTdGF0ZSosIGNvbnN0IElkZW50
aWZpZXImLCBQcm9wZXJ0eURlc2NyaXB0b3ImKTsKKyAgICAgICAgSlNfRVhQT1JUX1BSSVZBVEUg
c3RhdGljIGJvb2wgZ2V0T3duUHJvcGVydHlEZXNjcmlwdG9yKEpTT2JqZWN0KiwgRXhlY1N0YXRl
KiwgUHJvcGVydHlOYW1lLCBQcm9wZXJ0eURlc2NyaXB0b3ImKTsKIAogICAgICAgICBib29sIGFs
bG93c0FjY2Vzc0Zyb20oRXhlY1N0YXRlKik7CiAKLSAgICAgICAgSlNfRVhQT1JUX1BSSVZBVEUg
c3RhdGljIHZvaWQgcHV0KEpTQ2VsbCosIEV4ZWNTdGF0ZSosIGNvbnN0IElkZW50aWZpZXImIHBy
b3BlcnR5TmFtZSwgSlNWYWx1ZSwgUHV0UHJvcGVydHlTbG90Jik7CisgICAgICAgIEpTX0VYUE9S
VF9QUklWQVRFIHN0YXRpYyB2b2lkIHB1dChKU0NlbGwqLCBFeGVjU3RhdGUqLCBQcm9wZXJ0eU5h
bWUsIEpTVmFsdWUsIFB1dFByb3BlcnR5U2xvdCYpOwogICAgICAgICBKU19FWFBPUlRfUFJJVkFU
RSBzdGF0aWMgdm9pZCBwdXRCeUluZGV4KEpTQ2VsbCosIEV4ZWNTdGF0ZSosIHVuc2lnbmVkIHBy
b3BlcnR5TmFtZSwgSlNWYWx1ZSwgYm9vbCBzaG91bGRUaHJvdyk7CiAKICAgICAgICAgLy8gcHV0
RGlyZWN0IGlzIGVmZmVjdGl2ZWx5IGFuIHVuY2hlY2tlZCB2ZXNpb24gb2YgJ2RlZmluZU93blBy
b3BlcnR5JzoKICAgICAgICAgLy8gIC0gdGhlIHByb3RvdHlwZSBjaGFpbiBpcyBub3QgY29uc3Vs
dGVkCiAgICAgICAgIC8vICAtIGFjY2Vzc29ycyBhcmUgbm90IGNhbGxlZC4KICAgICAgICAgLy8g
IC0gYXR0cmlidXRlcyB3aWxsIGJlIHJlc3BlY3RlZCAoYWZ0ZXIgdGhlIGNhbGwgdGhlIHByb3Bl
cnR5IHdpbGwgZXhpc3Qgd2l0aCB0aGUgZ2l2ZW4gYXR0cmlidXRlcykKLSAgICAgICAgSlNfRVhQ
T1JUX1BSSVZBVEUgc3RhdGljIHZvaWQgcHV0RGlyZWN0VmlydHVhbChKU09iamVjdCosIEV4ZWNT
dGF0ZSosIGNvbnN0IElkZW50aWZpZXImIHByb3BlcnR5TmFtZSwgSlNWYWx1ZSwgdW5zaWduZWQg
YXR0cmlidXRlcyk7Ci0gICAgICAgIHZvaWQgcHV0RGlyZWN0KEpTR2xvYmFsRGF0YSYsIGNvbnN0
IElkZW50aWZpZXImIHByb3BlcnR5TmFtZSwgSlNWYWx1ZSwgdW5zaWduZWQgYXR0cmlidXRlcyA9
IDApOwotICAgICAgICB2b2lkIHB1dERpcmVjdChKU0dsb2JhbERhdGEmLCBjb25zdCBJZGVudGlm
aWVyJiBwcm9wZXJ0eU5hbWUsIEpTVmFsdWUsIFB1dFByb3BlcnR5U2xvdCYpOwotICAgICAgICB2
b2lkIHB1dERpcmVjdFdpdGhvdXRUcmFuc2l0aW9uKEpTR2xvYmFsRGF0YSYsIGNvbnN0IElkZW50
aWZpZXImIHByb3BlcnR5TmFtZSwgSlNWYWx1ZSwgdW5zaWduZWQgYXR0cmlidXRlcyA9IDApOwot
ICAgICAgICB2b2lkIHB1dERpcmVjdEFjY2Vzc29yKEpTR2xvYmFsRGF0YSYsIGNvbnN0IElkZW50
aWZpZXImIHByb3BlcnR5TmFtZSwgSlNWYWx1ZSwgdW5zaWduZWQgYXR0cmlidXRlcyk7CisgICAg
ICAgIEpTX0VYUE9SVF9QUklWQVRFIHN0YXRpYyB2b2lkIHB1dERpcmVjdFZpcnR1YWwoSlNPYmpl
Y3QqLCBFeGVjU3RhdGUqLCBQcm9wZXJ0eU5hbWUsIEpTVmFsdWUsIHVuc2lnbmVkIGF0dHJpYnV0
ZXMpOworICAgICAgICB2b2lkIHB1dERpcmVjdChKU0dsb2JhbERhdGEmLCBQcm9wZXJ0eU5hbWUs
IEpTVmFsdWUsIHVuc2lnbmVkIGF0dHJpYnV0ZXMgPSAwKTsKKyAgICAgICAgdm9pZCBwdXREaXJl
Y3QoSlNHbG9iYWxEYXRhJiwgUHJvcGVydHlOYW1lLCBKU1ZhbHVlLCBQdXRQcm9wZXJ0eVNsb3Qm
KTsKKyAgICAgICAgdm9pZCBwdXREaXJlY3RXaXRob3V0VHJhbnNpdGlvbihKU0dsb2JhbERhdGEm
LCBQcm9wZXJ0eU5hbWUsIEpTVmFsdWUsIHVuc2lnbmVkIGF0dHJpYnV0ZXMgPSAwKTsKKyAgICAg
ICAgdm9pZCBwdXREaXJlY3RBY2Nlc3NvcihKU0dsb2JhbERhdGEmLCBQcm9wZXJ0eU5hbWUsIEpT
VmFsdWUsIHVuc2lnbmVkIGF0dHJpYnV0ZXMpOwogCiAgICAgICAgIGJvb2wgcHJvcGVydHlJc0Vu
dW1lcmFibGUoRXhlY1N0YXRlKiwgY29uc3QgSWRlbnRpZmllciYgcHJvcGVydHlOYW1lKSBjb25z
dDsKIAotICAgICAgICBKU19FWFBPUlRfUFJJVkFURSBib29sIGhhc1Byb3BlcnR5KEV4ZWNTdGF0
ZSosIGNvbnN0IElkZW50aWZpZXImIHByb3BlcnR5TmFtZSkgY29uc3Q7CisgICAgICAgIEpTX0VY
UE9SVF9QUklWQVRFIGJvb2wgaGFzUHJvcGVydHkoRXhlY1N0YXRlKiwgUHJvcGVydHlOYW1lKSBj
b25zdDsKICAgICAgICAgSlNfRVhQT1JUX1BSSVZBVEUgYm9vbCBoYXNQcm9wZXJ0eShFeGVjU3Rh
dGUqLCB1bnNpZ25lZCBwcm9wZXJ0eU5hbWUpIGNvbnN0OwotICAgICAgICBib29sIGhhc093blBy
b3BlcnR5KEV4ZWNTdGF0ZSosIGNvbnN0IElkZW50aWZpZXImIHByb3BlcnR5TmFtZSkgY29uc3Q7
CisgICAgICAgIGJvb2wgaGFzT3duUHJvcGVydHkoRXhlY1N0YXRlKiwgUHJvcGVydHlOYW1lKSBj
b25zdDsKIAotICAgICAgICBKU19FWFBPUlRfUFJJVkFURSBzdGF0aWMgYm9vbCBkZWxldGVQcm9w
ZXJ0eShKU0NlbGwqLCBFeGVjU3RhdGUqLCBjb25zdCBJZGVudGlmaWVyJiBwcm9wZXJ0eU5hbWUp
OworICAgICAgICBKU19FWFBPUlRfUFJJVkFURSBzdGF0aWMgYm9vbCBkZWxldGVQcm9wZXJ0eShK
U0NlbGwqLCBFeGVjU3RhdGUqLCBQcm9wZXJ0eU5hbWUpOwogICAgICAgICBKU19FWFBPUlRfUFJJ
VkFURSBzdGF0aWMgYm9vbCBkZWxldGVQcm9wZXJ0eUJ5SW5kZXgoSlNDZWxsKiwgRXhlY1N0YXRl
KiwgdW5zaWduZWQgcHJvcGVydHlOYW1lKTsKIAogICAgICAgICBKU19FWFBPUlRfUFJJVkFURSBz
dGF0aWMgSlNWYWx1ZSBkZWZhdWx0VmFsdWUoY29uc3QgSlNPYmplY3QqLCBFeGVjU3RhdGUqLCBQ
cmVmZXJyZWRQcmltaXRpdmVUeXBlKTsKQEAgLTE0OCwyMiArMTQ4LDIyIEBAIG5hbWVzcGFjZSBK
U0MgewogICAgICAgICBKU19FWFBPUlRfUFJJVkFURSBzdGF0aWMgSlNPYmplY3QqIHRvVGhpc09i
amVjdChKU0NlbGwqLCBFeGVjU3RhdGUqKTsKICAgICAgICAgSlNPYmplY3QqIHVud3JhcHBlZE9i
amVjdCgpOwogCi0gICAgICAgIGJvb2wgZ2V0UHJvcGVydHlTcGVjaWZpY1ZhbHVlKEV4ZWNTdGF0
ZSogZXhlYywgY29uc3QgSWRlbnRpZmllciYgcHJvcGVydHlOYW1lLCBKU0NlbGwqJiBzcGVjaWZp
Y0Z1bmN0aW9uKSBjb25zdDsKKyAgICAgICAgYm9vbCBnZXRQcm9wZXJ0eVNwZWNpZmljVmFsdWUo
RXhlY1N0YXRlKiwgUHJvcGVydHlOYW1lLCBKU0NlbGwqJiBzcGVjaWZpY0Z1bmN0aW9uKSBjb25z
dDsKIAogICAgICAgICAvLyBUaGlzIGdldCBmdW5jdGlvbiBvbmx5IGxvb2tzIGF0IHRoZSBwcm9w
ZXJ0eSBtYXAuCi0gICAgICAgIEpTVmFsdWUgZ2V0RGlyZWN0KEpTR2xvYmFsRGF0YSYgZ2xvYmFs
RGF0YSwgY29uc3QgSWRlbnRpZmllciYgcHJvcGVydHlOYW1lKSBjb25zdAorICAgICAgICBKU1Zh
bHVlIGdldERpcmVjdChKU0dsb2JhbERhdGEmIGdsb2JhbERhdGEsIFByb3BlcnR5TmFtZSBwcm9w
ZXJ0eU5hbWUpIGNvbnN0CiAgICAgICAgIHsKICAgICAgICAgICAgIHNpemVfdCBvZmZzZXQgPSBz
dHJ1Y3R1cmUoKS0+Z2V0KGdsb2JhbERhdGEsIHByb3BlcnR5TmFtZSk7CiAgICAgICAgICAgICBy
ZXR1cm4gb2Zmc2V0ICE9IFdURjo6bm90Rm91bmQgPyBnZXREaXJlY3RPZmZzZXQob2Zmc2V0KSA6
IEpTVmFsdWUoKTsKICAgICAgICAgfQogCi0gICAgICAgIFdyaXRlQmFycmllckJhc2U8VW5rbm93
bj4qIGdldERpcmVjdExvY2F0aW9uKEpTR2xvYmFsRGF0YSYgZ2xvYmFsRGF0YSwgY29uc3QgSWRl
bnRpZmllciYgcHJvcGVydHlOYW1lKQorICAgICAgICBXcml0ZUJhcnJpZXJCYXNlPFVua25vd24+
KiBnZXREaXJlY3RMb2NhdGlvbihKU0dsb2JhbERhdGEmIGdsb2JhbERhdGEsIFByb3BlcnR5TmFt
ZSBwcm9wZXJ0eU5hbWUpCiAgICAgICAgIHsKICAgICAgICAgICAgIHNpemVfdCBvZmZzZXQgPSBz
dHJ1Y3R1cmUoKS0+Z2V0KGdsb2JhbERhdGEsIHByb3BlcnR5TmFtZSk7CiAgICAgICAgICAgICBy
ZXR1cm4gb2Zmc2V0ICE9IFdURjo6bm90Rm91bmQgPyBsb2NhdGlvbkZvck9mZnNldChvZmZzZXQp
IDogMDsKICAgICAgICAgfQogCi0gICAgICAgIFdyaXRlQmFycmllckJhc2U8VW5rbm93bj4qIGdl
dERpcmVjdExvY2F0aW9uKEpTR2xvYmFsRGF0YSYgZ2xvYmFsRGF0YSwgY29uc3QgSWRlbnRpZmll
ciYgcHJvcGVydHlOYW1lLCB1bnNpZ25lZCYgYXR0cmlidXRlcykKKyAgICAgICAgV3JpdGVCYXJy
aWVyQmFzZTxVbmtub3duPiogZ2V0RGlyZWN0TG9jYXRpb24oSlNHbG9iYWxEYXRhJiBnbG9iYWxE
YXRhLCBQcm9wZXJ0eU5hbWUgcHJvcGVydHlOYW1lLCB1bnNpZ25lZCYgYXR0cmlidXRlcykKICAg
ICAgICAgewogICAgICAgICAgICAgSlNDZWxsKiBzcGVjaWZpY0Z1bmN0aW9uOwogICAgICAgICAg
ICAgc2l6ZV90IG9mZnNldCA9IHN0cnVjdHVyZSgpLT5nZXQoZ2xvYmFsRGF0YSwgcHJvcGVydHlO
YW1lLCBhdHRyaWJ1dGVzLCBzcGVjaWZpY0Z1bmN0aW9uKTsKQEAgLTE3Nyw3ICsxNzcsNyBAQCBu
YW1lc3BhY2UgSlNDIHsKIAogICAgICAgICB2b2lkIHRyYW5zaXRpb25UbyhKU0dsb2JhbERhdGEm
LCBTdHJ1Y3R1cmUqKTsKIAotICAgICAgICB2b2lkIHJlbW92ZURpcmVjdChKU0dsb2JhbERhdGEm
LCBjb25zdCBJZGVudGlmaWVyJiBwcm9wZXJ0eU5hbWUpOworICAgICAgICB2b2lkIHJlbW92ZURp
cmVjdChKU0dsb2JhbERhdGEmLCBQcm9wZXJ0eU5hbWUpOwogICAgICAgICBib29sIGhhc0N1c3Rv
bVByb3BlcnRpZXMoKSB7IHJldHVybiBzdHJ1Y3R1cmUoKS0+ZGlkVHJhbnNpdGlvbigpOyB9CiAg
ICAgICAgIGJvb2wgaGFzR2V0dGVyU2V0dGVyUHJvcGVydGllcygpIHsgcmV0dXJuIHN0cnVjdHVy
ZSgpLT5oYXNHZXR0ZXJTZXR0ZXJQcm9wZXJ0aWVzKCk7IH0KIApAQCAtMTg2LDE0ICsxODYsMTQg
QEAgbmFtZXNwYWNlIEpTQyB7CiAgICAgICAgIC8vICAtIHByb3ZpZGVzIG5vIHNwZWNpYWwgaGFu
ZGxpbmcgZm9yIF9fcHJvdG9fXwogICAgICAgICAvLyAgLSBkb2VzIG5vdCB3YWxrIHRoZSBwcm90
b3R5cGUgY2hhaW4gKHRvIGNoZWNrIGZvciBhY2Nlc3NvcnMgb3Igbm9uLXdyaXRhYmxlIHByb3Bl
cnRpZXMpLgogICAgICAgICAvLyBUaGlzIGlzIHVzZWQgYnkgSlNBY3RpdmF0aW9uLgotICAgICAg
ICBib29sIHB1dE93bkRhdGFQcm9wZXJ0eShKU0dsb2JhbERhdGEmLCBjb25zdCBJZGVudGlmaWVy
JiBwcm9wZXJ0eU5hbWUsIEpTVmFsdWUsIFB1dFByb3BlcnR5U2xvdCYpOworICAgICAgICBib29s
IHB1dE93bkRhdGFQcm9wZXJ0eShKU0dsb2JhbERhdGEmLCBQcm9wZXJ0eU5hbWUsIEpTVmFsdWUs
IFB1dFByb3BlcnR5U2xvdCYpOwogCiAgICAgICAgIC8vIEZhc3QgYWNjZXNzIHRvIGtub3duIHBy
b3BlcnR5IG9mZnNldHMuCiAgICAgICAgIEpTVmFsdWUgZ2V0RGlyZWN0T2Zmc2V0KHNpemVfdCBv
ZmZzZXQpIGNvbnN0IHsgcmV0dXJuIHByb3BlcnR5U3RvcmFnZSgpW29mZnNldF0uZ2V0KCk7IH0K
ICAgICAgICAgdm9pZCBwdXREaXJlY3RPZmZzZXQoSlNHbG9iYWxEYXRhJiBnbG9iYWxEYXRhLCBz
aXplX3Qgb2Zmc2V0LCBKU1ZhbHVlIHZhbHVlKSB7IHByb3BlcnR5U3RvcmFnZSgpW29mZnNldF0u
c2V0KGdsb2JhbERhdGEsIHRoaXMsIHZhbHVlKTsgfQogICAgICAgICB2b2lkIHB1dFVuZGVmaW5l
ZEF0RGlyZWN0T2Zmc2V0KHNpemVfdCBvZmZzZXQpIHsgcHJvcGVydHlTdG9yYWdlKClbb2Zmc2V0
XS5zZXRVbmRlZmluZWQoKTsgfQogCi0gICAgICAgIEpTX0VYUE9SVF9QUklWQVRFIHN0YXRpYyBi
b29sIGRlZmluZU93blByb3BlcnR5KEpTT2JqZWN0KiwgRXhlY1N0YXRlKiwgY29uc3QgSWRlbnRp
ZmllciYgcHJvcGVydHlOYW1lLCBQcm9wZXJ0eURlc2NyaXB0b3ImLCBib29sIHNob3VsZFRocm93
KTsKKyAgICAgICAgSlNfRVhQT1JUX1BSSVZBVEUgc3RhdGljIGJvb2wgZGVmaW5lT3duUHJvcGVy
dHkoSlNPYmplY3QqLCBFeGVjU3RhdGUqLCBQcm9wZXJ0eU5hbWUsIFByb3BlcnR5RGVzY3JpcHRv
ciYsIGJvb2wgc2hvdWxkVGhyb3cpOwogCiAgICAgICAgIGJvb2wgaXNHbG9iYWxPYmplY3QoKSBj
b25zdDsKICAgICAgICAgYm9vbCBpc1ZhcmlhYmxlT2JqZWN0KCkgY29uc3Q7CkBAIC0yOTQsMTIg
KzI5NCwxMiBAQCBuYW1lc3BhY2UgSlNDIHsKICAgICAgICAgfQogCiAgICAgICAgIHRlbXBsYXRl
PFB1dE1vZGU+Ci0gICAgICAgIGJvb2wgcHV0RGlyZWN0SW50ZXJuYWwoSlNHbG9iYWxEYXRhJiwg
Y29uc3QgSWRlbnRpZmllciYgcHJvcGVydHlOYW1lLCBKU1ZhbHVlLCB1bnNpZ25lZCBhdHRyLCBQ
dXRQcm9wZXJ0eVNsb3QmLCBKU0NlbGwqKTsKKyAgICAgICAgYm9vbCBwdXREaXJlY3RJbnRlcm5h
bChKU0dsb2JhbERhdGEmLCBQcm9wZXJ0eU5hbWUsIEpTVmFsdWUsIHVuc2lnbmVkIGF0dHIsIFB1
dFByb3BlcnR5U2xvdCYsIEpTQ2VsbCopOwogCi0gICAgICAgIGJvb2wgaW5saW5lR2V0T3duUHJv
cGVydHlTbG90KEV4ZWNTdGF0ZSosIGNvbnN0IElkZW50aWZpZXImIHByb3BlcnR5TmFtZSwgUHJv
cGVydHlTbG90Jik7CisgICAgICAgIGJvb2wgaW5saW5lR2V0T3duUHJvcGVydHlTbG90KEV4ZWNT
dGF0ZSosIFByb3BlcnR5TmFtZSwgUHJvcGVydHlTbG90Jik7CiAgICAgICAgIEpTX0VYUE9SVF9Q
UklWQVRFIHZvaWQgZmlsbEdldHRlclByb3BlcnR5U2xvdChQcm9wZXJ0eVNsb3QmLCBXcml0ZUJh
cnJpZXJCYXNlPFVua25vd24+KiBsb2NhdGlvbik7CiAKLSAgICAgICAgY29uc3QgSGFzaEVudHJ5
KiBmaW5kUHJvcGVydHlIYXNoRW50cnkoRXhlY1N0YXRlKiwgY29uc3QgSWRlbnRpZmllciYgcHJv
cGVydHlOYW1lKSBjb25zdDsKKyAgICAgICAgY29uc3QgSGFzaEVudHJ5KiBmaW5kUHJvcGVydHlI
YXNoRW50cnkoRXhlY1N0YXRlKiwgUHJvcGVydHlOYW1lKSBjb25zdDsKICAgICAgICAgU3RydWN0
dXJlKiBjcmVhdGVJbmhlcml0b3JJRChKU0dsb2JhbERhdGEmKTsKIAogICAgICAgICBTdG9yYWdl
QmFycmllciBtX3Byb3BlcnR5U3RvcmFnZTsKQEAgLTUzOSw3ICs1MzksNyBAQCBpbmxpbmUgSlNP
YmplY3QqIEpTVmFsdWU6OnRvVGhpc09iamVjdChFCiAgICAgcmV0dXJuIGlzQ2VsbCgpID8gYXND
ZWxsKCktPm1ldGhvZFRhYmxlKCktPnRvVGhpc09iamVjdChhc0NlbGwoKSwgZXhlYykgOiB0b1Ro
aXNPYmplY3RTbG93Q2FzZShleGVjKTsKIH0KIAotQUxXQVlTX0lOTElORSBib29sIEpTT2JqZWN0
OjppbmxpbmVHZXRPd25Qcm9wZXJ0eVNsb3QoRXhlY1N0YXRlKiBleGVjLCBjb25zdCBJZGVudGlm
aWVyJiBwcm9wZXJ0eU5hbWUsIFByb3BlcnR5U2xvdCYgc2xvdCkKK0FMV0FZU19JTkxJTkUgYm9v
bCBKU09iamVjdDo6aW5saW5lR2V0T3duUHJvcGVydHlTbG90KEV4ZWNTdGF0ZSogZXhlYywgUHJv
cGVydHlOYW1lIHByb3BlcnR5TmFtZSwgUHJvcGVydHlTbG90JiBzbG90KQogewogICAgIGlmIChX
cml0ZUJhcnJpZXJCYXNlPFVua25vd24+KiBsb2NhdGlvbiA9IGdldERpcmVjdExvY2F0aW9uKGV4
ZWMtPmdsb2JhbERhdGEoKSwgcHJvcGVydHlOYW1lKSkgewogICAgICAgICBpZiAoc3RydWN0dXJl
KCktPmhhc0dldHRlclNldHRlclByb3BlcnRpZXMoKSAmJiBsb2NhdGlvbi0+aXNHZXR0ZXJTZXR0
ZXIoKSkKQEAgLTU1NSwxMiArNTU1LDEyIEBAIEFMV0FZU19JTkxJTkUgYm9vbCBKU09iamVjdDo6
aW5saW5lR2V0T3cKIC8vIEl0IG1heSBzZWVtIGNyYXp5IHRvIGlubGluZSBhIGZ1bmN0aW9uIHRo
aXMgbGFyZ2UsIGVzcGVjaWFsbHkgYSB2aXJ0dWFsIGZ1bmN0aW9uLAogLy8gYnV0IGl0IG1ha2Vz
IGEgYmlnIGRpZmZlcmVuY2UgdG8gcHJvcGVydHkgbG9va3VwIHRoYXQgZGVyaXZlZCBjbGFzc2Vz
IGNhbiBpbmxpbmUgdGhlaXIKIC8vIGJhc2UgY2xhc3MgY2FsbCB0byB0aGlzLgotQUxXQVlTX0lO
TElORSBib29sIEpTT2JqZWN0OjpnZXRPd25Qcm9wZXJ0eVNsb3QoSlNDZWxsKiBjZWxsLCBFeGVj
U3RhdGUqIGV4ZWMsIGNvbnN0IElkZW50aWZpZXImIHByb3BlcnR5TmFtZSwgUHJvcGVydHlTbG90
JiBzbG90KQorQUxXQVlTX0lOTElORSBib29sIEpTT2JqZWN0OjpnZXRPd25Qcm9wZXJ0eVNsb3Qo
SlNDZWxsKiBjZWxsLCBFeGVjU3RhdGUqIGV4ZWMsIFByb3BlcnR5TmFtZSBwcm9wZXJ0eU5hbWUs
IFByb3BlcnR5U2xvdCYgc2xvdCkKIHsKICAgICByZXR1cm4ganNDYXN0PEpTT2JqZWN0Kj4oY2Vs
bCktPmlubGluZUdldE93blByb3BlcnR5U2xvdChleGVjLCBwcm9wZXJ0eU5hbWUsIHNsb3QpOwog
fQogCi1BTFdBWVNfSU5MSU5FIGJvb2wgSlNDZWxsOjpmYXN0R2V0T3duUHJvcGVydHlTbG90KEV4
ZWNTdGF0ZSogZXhlYywgY29uc3QgSWRlbnRpZmllciYgcHJvcGVydHlOYW1lLCBQcm9wZXJ0eVNs
b3QmIHNsb3QpCitBTFdBWVNfSU5MSU5FIGJvb2wgSlNDZWxsOjpmYXN0R2V0T3duUHJvcGVydHlT
bG90KEV4ZWNTdGF0ZSogZXhlYywgUHJvcGVydHlOYW1lIHByb3BlcnR5TmFtZSwgUHJvcGVydHlT
bG90JiBzbG90KQogewogICAgIGlmICghc3RydWN0dXJlKCktPnR5cGVJbmZvKCkub3ZlcnJpZGVz
R2V0T3duUHJvcGVydHlTbG90KCkpCiAgICAgICAgIHJldHVybiBhc09iamVjdCh0aGlzKS0+aW5s
aW5lR2V0T3duUHJvcGVydHlTbG90KGV4ZWMsIHByb3BlcnR5TmFtZSwgc2xvdCk7CkBAIC01ODUs
NyArNTg1LDcgQEAgQUxXQVlTX0lOTElORSBKU1ZhbHVlIEpTQ2VsbDo6ZmFzdEdldE93bgogCiAv
LyBJdCBtYXkgc2VlbSBjcmF6eSB0byBpbmxpbmUgYSBmdW5jdGlvbiB0aGlzIGxhcmdlIGJ1dCBp
dCBtYWtlcyBhIGJpZyBkaWZmZXJlbmNlCiAvLyBzaW5jZSB0aGlzIGlzIGZ1bmN0aW9uIHZlcnkg
aG90IGluIHZhcmlhYmxlIGxvb2t1cAotQUxXQVlTX0lOTElORSBib29sIEpTT2JqZWN0OjpnZXRQ
cm9wZXJ0eVNsb3QoRXhlY1N0YXRlKiBleGVjLCBjb25zdCBJZGVudGlmaWVyJiBwcm9wZXJ0eU5h
bWUsIFByb3BlcnR5U2xvdCYgc2xvdCkKK0FMV0FZU19JTkxJTkUgYm9vbCBKU09iamVjdDo6Z2V0
UHJvcGVydHlTbG90KEV4ZWNTdGF0ZSogZXhlYywgUHJvcGVydHlOYW1lIHByb3BlcnR5TmFtZSwg
UHJvcGVydHlTbG90JiBzbG90KQogewogICAgIEpTT2JqZWN0KiBvYmplY3QgPSB0aGlzOwogICAg
IHdoaWxlICh0cnVlKSB7CkBAIC02MTEsNyArNjExLDcgQEAgQUxXQVlTX0lOTElORSBib29sIEpT
T2JqZWN0OjpnZXRQcm9wZXJ0eQogICAgIH0KIH0KIAotaW5saW5lIEpTVmFsdWUgSlNPYmplY3Q6
OmdldChFeGVjU3RhdGUqIGV4ZWMsIGNvbnN0IElkZW50aWZpZXImIHByb3BlcnR5TmFtZSkgY29u
c3QKK2lubGluZSBKU1ZhbHVlIEpTT2JqZWN0OjpnZXQoRXhlY1N0YXRlKiBleGVjLCBQcm9wZXJ0
eU5hbWUgcHJvcGVydHlOYW1lKSBjb25zdAogewogICAgIFByb3BlcnR5U2xvdCBzbG90KHRoaXMp
OwogICAgIGlmIChjb25zdF9jYXN0PEpTT2JqZWN0Kj4odGhpcyktPmdldFByb3BlcnR5U2xvdChl
eGVjLCBwcm9wZXJ0eU5hbWUsIHNsb3QpKQpAQCAtNjMwLDcgKzYzMCw3IEBAIGlubGluZSBKU1Zh
bHVlIEpTT2JqZWN0OjpnZXQoRXhlY1N0YXRlKiAKIH0KIAogdGVtcGxhdGU8SlNPYmplY3Q6OlB1
dE1vZGUgbW9kZT4KLWlubGluZSBib29sIEpTT2JqZWN0OjpwdXREaXJlY3RJbnRlcm5hbChKU0ds
b2JhbERhdGEmIGdsb2JhbERhdGEsIGNvbnN0IElkZW50aWZpZXImIHByb3BlcnR5TmFtZSwgSlNW
YWx1ZSB2YWx1ZSwgdW5zaWduZWQgYXR0cmlidXRlcywgUHV0UHJvcGVydHlTbG90JiBzbG90LCBK
U0NlbGwqIHNwZWNpZmljRnVuY3Rpb24pCitpbmxpbmUgYm9vbCBKU09iamVjdDo6cHV0RGlyZWN0
SW50ZXJuYWwoSlNHbG9iYWxEYXRhJiBnbG9iYWxEYXRhLCBQcm9wZXJ0eU5hbWUgcHJvcGVydHlO
YW1lLCBKU1ZhbHVlIHZhbHVlLCB1bnNpZ25lZCBhdHRyaWJ1dGVzLCBQdXRQcm9wZXJ0eVNsb3Qm
IHNsb3QsIEpTQ2VsbCogc3BlY2lmaWNGdW5jdGlvbikKIHsKICAgICBBU1NFUlQodmFsdWUpOwog
ICAgIEFTU0VSVCh2YWx1ZS5pc0dldHRlclNldHRlcigpID09ICEhKGF0dHJpYnV0ZXMgJiBBY2Nl
c3NvcikpOwpAQCAtNzQyLDcgKzc0Miw3IEBAIGlubGluZSBib29sIEpTT2JqZWN0OjpwdXREaXJl
Y3RJbnRlcm5hbCgKICAgICByZXR1cm4gdHJ1ZTsKIH0KIAotaW5saW5lIGJvb2wgSlNPYmplY3Q6
OnB1dE93bkRhdGFQcm9wZXJ0eShKU0dsb2JhbERhdGEmIGdsb2JhbERhdGEsIGNvbnN0IElkZW50
aWZpZXImIHByb3BlcnR5TmFtZSwgSlNWYWx1ZSB2YWx1ZSwgUHV0UHJvcGVydHlTbG90JiBzbG90
KQoraW5saW5lIGJvb2wgSlNPYmplY3Q6OnB1dE93bkRhdGFQcm9wZXJ0eShKU0dsb2JhbERhdGEm
IGdsb2JhbERhdGEsIFByb3BlcnR5TmFtZSBwcm9wZXJ0eU5hbWUsIEpTVmFsdWUgdmFsdWUsIFB1
dFByb3BlcnR5U2xvdCYgc2xvdCkKIHsKICAgICBBU1NFUlQodmFsdWUpOwogICAgIEFTU0VSVCgh
SGVhcDo6aGVhcCh2YWx1ZSkgfHwgSGVhcDo6aGVhcCh2YWx1ZSkgPT0gSGVhcDo6aGVhcCh0aGlz
KSk7CkBAIC03NTEsMjAgKzc1MSwyMCBAQCBpbmxpbmUgYm9vbCBKU09iamVjdDo6cHV0T3duRGF0
YVByb3BlcnR5CiAgICAgcmV0dXJuIHB1dERpcmVjdEludGVybmFsPFB1dE1vZGVQdXQ+KGdsb2Jh
bERhdGEsIHByb3BlcnR5TmFtZSwgdmFsdWUsIDAsIHNsb3QsIGdldEpTRnVuY3Rpb24odmFsdWUp
KTsKIH0KIAotaW5saW5lIHZvaWQgSlNPYmplY3Q6OnB1dERpcmVjdChKU0dsb2JhbERhdGEmIGds
b2JhbERhdGEsIGNvbnN0IElkZW50aWZpZXImIHByb3BlcnR5TmFtZSwgSlNWYWx1ZSB2YWx1ZSwg
dW5zaWduZWQgYXR0cmlidXRlcykKK2lubGluZSB2b2lkIEpTT2JqZWN0OjpwdXREaXJlY3QoSlNH
bG9iYWxEYXRhJiBnbG9iYWxEYXRhLCBQcm9wZXJ0eU5hbWUgcHJvcGVydHlOYW1lLCBKU1ZhbHVl
IHZhbHVlLCB1bnNpZ25lZCBhdHRyaWJ1dGVzKQogewogICAgIEFTU0VSVCghdmFsdWUuaXNHZXR0
ZXJTZXR0ZXIoKSAmJiAhKGF0dHJpYnV0ZXMgJiBBY2Nlc3NvcikpOwogICAgIFB1dFByb3BlcnR5
U2xvdCBzbG90OwogICAgIHB1dERpcmVjdEludGVybmFsPFB1dE1vZGVEZWZpbmVPd25Qcm9wZXJ0
eT4oZ2xvYmFsRGF0YSwgcHJvcGVydHlOYW1lLCB2YWx1ZSwgYXR0cmlidXRlcywgc2xvdCwgZ2V0
SlNGdW5jdGlvbih2YWx1ZSkpOwogfQogCi1pbmxpbmUgdm9pZCBKU09iamVjdDo6cHV0RGlyZWN0
KEpTR2xvYmFsRGF0YSYgZ2xvYmFsRGF0YSwgY29uc3QgSWRlbnRpZmllciYgcHJvcGVydHlOYW1l
LCBKU1ZhbHVlIHZhbHVlLCBQdXRQcm9wZXJ0eVNsb3QmIHNsb3QpCitpbmxpbmUgdm9pZCBKU09i
amVjdDo6cHV0RGlyZWN0KEpTR2xvYmFsRGF0YSYgZ2xvYmFsRGF0YSwgUHJvcGVydHlOYW1lIHBy
b3BlcnR5TmFtZSwgSlNWYWx1ZSB2YWx1ZSwgUHV0UHJvcGVydHlTbG90JiBzbG90KQogewogICAg
IEFTU0VSVCghdmFsdWUuaXNHZXR0ZXJTZXR0ZXIoKSk7CiAgICAgcHV0RGlyZWN0SW50ZXJuYWw8
UHV0TW9kZURlZmluZU93blByb3BlcnR5PihnbG9iYWxEYXRhLCBwcm9wZXJ0eU5hbWUsIHZhbHVl
LCAwLCBzbG90LCBnZXRKU0Z1bmN0aW9uKHZhbHVlKSk7CiB9CiAKLWlubGluZSB2b2lkIEpTT2Jq
ZWN0OjpwdXREaXJlY3RXaXRob3V0VHJhbnNpdGlvbihKU0dsb2JhbERhdGEmIGdsb2JhbERhdGEs
IGNvbnN0IElkZW50aWZpZXImIHByb3BlcnR5TmFtZSwgSlNWYWx1ZSB2YWx1ZSwgdW5zaWduZWQg
YXR0cmlidXRlcykKK2lubGluZSB2b2lkIEpTT2JqZWN0OjpwdXREaXJlY3RXaXRob3V0VHJhbnNp
dGlvbihKU0dsb2JhbERhdGEmIGdsb2JhbERhdGEsIFByb3BlcnR5TmFtZSBwcm9wZXJ0eU5hbWUs
IEpTVmFsdWUgdmFsdWUsIHVuc2lnbmVkIGF0dHJpYnV0ZXMpCiB7CiAgICAgQVNTRVJUKCF2YWx1
ZS5pc0dldHRlclNldHRlcigpICYmICEoYXR0cmlidXRlcyAmIEFjY2Vzc29yKSk7CiAgICAgc2l6
ZV90IGN1cnJlbnRDYXBhY2l0eSA9IHN0cnVjdHVyZSgpLT5wcm9wZXJ0eVN0b3JhZ2VDYXBhY2l0
eSgpOwpAQCAtNzg2LDEzICs3ODYsMTMgQEAgaW5saW5lIEpTVmFsdWUgSlNPYmplY3Q6OnRvUHJp
bWl0aXZlKEV4ZQogICAgIHJldHVybiBtZXRob2RUYWJsZSgpLT5kZWZhdWx0VmFsdWUodGhpcywg
ZXhlYywgcHJlZmVycmVkVHlwZSk7CiB9CiAKLWlubGluZSBKU1ZhbHVlIEpTVmFsdWU6OmdldChF
eGVjU3RhdGUqIGV4ZWMsIGNvbnN0IElkZW50aWZpZXImIHByb3BlcnR5TmFtZSkgY29uc3QKK2lu
bGluZSBKU1ZhbHVlIEpTVmFsdWU6OmdldChFeGVjU3RhdGUqIGV4ZWMsIFByb3BlcnR5TmFtZSBw
cm9wZXJ0eU5hbWUpIGNvbnN0CiB7CiAgICAgUHJvcGVydHlTbG90IHNsb3QoYXNWYWx1ZSgpKTsK
ICAgICByZXR1cm4gZ2V0KGV4ZWMsIHByb3BlcnR5TmFtZSwgc2xvdCk7CiB9CiAKLWlubGluZSBK
U1ZhbHVlIEpTVmFsdWU6OmdldChFeGVjU3RhdGUqIGV4ZWMsIGNvbnN0IElkZW50aWZpZXImIHBy
b3BlcnR5TmFtZSwgUHJvcGVydHlTbG90JiBzbG90KSBjb25zdAoraW5saW5lIEpTVmFsdWUgSlNW
YWx1ZTo6Z2V0KEV4ZWNTdGF0ZSogZXhlYywgUHJvcGVydHlOYW1lIHByb3BlcnR5TmFtZSwgUHJv
cGVydHlTbG90JiBzbG90KSBjb25zdAogewogICAgIGlmIChVTkxJS0VMWSghaXNDZWxsKCkpKSB7
CiAgICAgICAgIEpTT2JqZWN0KiBwcm90b3R5cGUgPSBzeW50aGVzaXplUHJvdG90eXBlKGV4ZWMp
OwpAQCAtODM2LDcgKzgzNiw3IEBAIGlubGluZSBKU1ZhbHVlIEpTVmFsdWU6OmdldChFeGVjU3Rh
dGUqIGUKICAgICB9CiB9CiAKLWlubGluZSB2b2lkIEpTVmFsdWU6OnB1dChFeGVjU3RhdGUqIGV4
ZWMsIGNvbnN0IElkZW50aWZpZXImIHByb3BlcnR5TmFtZSwgSlNWYWx1ZSB2YWx1ZSwgUHV0UHJv
cGVydHlTbG90JiBzbG90KQoraW5saW5lIHZvaWQgSlNWYWx1ZTo6cHV0KEV4ZWNTdGF0ZSogZXhl
YywgUHJvcGVydHlOYW1lIHByb3BlcnR5TmFtZSwgSlNWYWx1ZSB2YWx1ZSwgUHV0UHJvcGVydHlT
bG90JiBzbG90KQogewogICAgIGlmIChVTkxJS0VMWSghaXNDZWxsKCkpKSB7CiAgICAgICAgIHB1
dFRvUHJpbWl0aXZlKGV4ZWMsIHByb3BlcnR5TmFtZSwgdmFsdWUsIHNsb3QpOwpJbmRleDogU291
cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvSlNTdGF0aWNTY29wZU9iamVjdC5jcHAKPT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PQotLS0gU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvSlNTdGF0aWNTY29wZU9iamVj
dC5jcHAJKHJldmlzaW9uIDExNjY2NykKKysrIFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1l
L0pTU3RhdGljU2NvcGVPYmplY3QuY3BwCSh3b3JraW5nIGNvcHkpCkBAIC01NCw3ICs1NCw3IEBA
IEpTT2JqZWN0KiBKU1N0YXRpY1Njb3BlT2JqZWN0Ojp0b1RoaXNPYmoKICAgICByZXR1cm4gZXhl
Yy0+Z2xvYmFsVGhpc1ZhbHVlKCk7CiB9CiAKLXZvaWQgSlNTdGF0aWNTY29wZU9iamVjdDo6cHV0
KEpTQ2VsbCogY2VsbCwgRXhlY1N0YXRlKiBleGVjLCBjb25zdCBJZGVudGlmaWVyJiBwcm9wZXJ0
eU5hbWUsIEpTVmFsdWUgdmFsdWUsIFB1dFByb3BlcnR5U2xvdCYgc2xvdCkKK3ZvaWQgSlNTdGF0
aWNTY29wZU9iamVjdDo6cHV0KEpTQ2VsbCogY2VsbCwgRXhlY1N0YXRlKiBleGVjLCBQcm9wZXJ0
eU5hbWUgcHJvcGVydHlOYW1lLCBKU1ZhbHVlIHZhbHVlLCBQdXRQcm9wZXJ0eVNsb3QmIHNsb3Qp
CiB7CiAgICAgSlNTdGF0aWNTY29wZU9iamVjdCogdGhpc09iamVjdCA9IGpzQ2FzdDxKU1N0YXRp
Y1Njb3BlT2JqZWN0Kj4oY2VsbCk7CiAgICAgaWYgKHNsb3QuaXNTdHJpY3RNb2RlKCkpIHsKQEAg
LTc4LDcgKzc4LDcgQEAgdm9pZCBKU1N0YXRpY1Njb3BlT2JqZWN0OjpwdXQoSlNDZWxsKiBjZQog
ICAgIEFTU0VSVF9OT1RfUkVBQ0hFRCgpOwogfQogCi12b2lkIEpTU3RhdGljU2NvcGVPYmplY3Q6
OnB1dERpcmVjdFZpcnR1YWwoSlNPYmplY3QqIG9iamVjdCwgRXhlY1N0YXRlKiBleGVjLCBjb25z
dCBJZGVudGlmaWVyJiBwcm9wZXJ0eU5hbWUsIEpTVmFsdWUgdmFsdWUsIHVuc2lnbmVkIGF0dHJp
YnV0ZXMpCit2b2lkIEpTU3RhdGljU2NvcGVPYmplY3Q6OnB1dERpcmVjdFZpcnR1YWwoSlNPYmpl
Y3QqIG9iamVjdCwgRXhlY1N0YXRlKiBleGVjLCBQcm9wZXJ0eU5hbWUgcHJvcGVydHlOYW1lLCBK
U1ZhbHVlIHZhbHVlLCB1bnNpZ25lZCBhdHRyaWJ1dGVzKQogewogICAgIEpTU3RhdGljU2NvcGVP
YmplY3QqIHRoaXNPYmplY3QgPSBqc0Nhc3Q8SlNTdGF0aWNTY29wZU9iamVjdCo+KG9iamVjdCk7
CiAgICAgaWYgKHRoaXNPYmplY3QtPnN5bWJvbFRhYmxlUHV0V2l0aEF0dHJpYnV0ZXMoZXhlYy0+
Z2xvYmFsRGF0YSgpLCBwcm9wZXJ0eU5hbWUsIHZhbHVlLCBhdHRyaWJ1dGVzKSkKQEAgLTg3LDcg
Kzg3LDcgQEAgdm9pZCBKU1N0YXRpY1Njb3BlT2JqZWN0OjpwdXREaXJlY3RWaXJ0dQogICAgIEFT
U0VSVF9OT1RfUkVBQ0hFRCgpOwogfQogCi1ib29sIEpTU3RhdGljU2NvcGVPYmplY3Q6OmdldE93
blByb3BlcnR5U2xvdChKU0NlbGwqIGNlbGwsIEV4ZWNTdGF0ZSosIGNvbnN0IElkZW50aWZpZXIm
IHByb3BlcnR5TmFtZSwgUHJvcGVydHlTbG90JiBzbG90KQorYm9vbCBKU1N0YXRpY1Njb3BlT2Jq
ZWN0OjpnZXRPd25Qcm9wZXJ0eVNsb3QoSlNDZWxsKiBjZWxsLCBFeGVjU3RhdGUqLCBQcm9wZXJ0
eU5hbWUgcHJvcGVydHlOYW1lLCBQcm9wZXJ0eVNsb3QmIHNsb3QpCiB7CiAgICAgcmV0dXJuIGpz
Q2FzdDxKU1N0YXRpY1Njb3BlT2JqZWN0Kj4oY2VsbCktPnN5bWJvbFRhYmxlR2V0KHByb3BlcnR5
TmFtZSwgc2xvdCk7CiB9CkluZGV4OiBTb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9KU1N0
YXRpY1Njb3BlT2JqZWN0LmgKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL0phdmFTY3JpcHRDb3JlL3J1
bnRpbWUvSlNTdGF0aWNTY29wZU9iamVjdC5oCShyZXZpc2lvbiAxMTY2NjcpCisrKyBTb3VyY2Uv
SmF2YVNjcmlwdENvcmUvcnVudGltZS9KU1N0YXRpY1Njb3BlT2JqZWN0LmgJKHdvcmtpbmcgY29w
eSkKQEAgLTQ0LDEwICs0NCwxMCBAQCBuYW1lc3BhY2UgSlNDewogICAgICAgICBzdGF0aWMgdm9p
ZCB2aXNpdENoaWxkcmVuKEpTQ2VsbCosIFNsb3RWaXNpdG9yJik7CiAgICAgICAgIGJvb2wgaXNE
eW5hbWljU2NvcGUoYm9vbCYgcmVxdWlyZXNEeW5hbWljQ2hlY2tzKSBjb25zdDsKICAgICAgICAg
c3RhdGljIEpTT2JqZWN0KiB0b1RoaXNPYmplY3QoSlNDZWxsKiwgRXhlY1N0YXRlKik7Ci0gICAg
ICAgIHN0YXRpYyBib29sIGdldE93blByb3BlcnR5U2xvdChKU0NlbGwqLCBFeGVjU3RhdGUqLCBj
b25zdCBJZGVudGlmaWVyJiwgUHJvcGVydHlTbG90Jik7Ci0gICAgICAgIHN0YXRpYyB2b2lkIHB1
dChKU0NlbGwqLCBFeGVjU3RhdGUqLCBjb25zdCBJZGVudGlmaWVyJiwgSlNWYWx1ZSwgUHV0UHJv
cGVydHlTbG90Jik7CisgICAgICAgIHN0YXRpYyBib29sIGdldE93blByb3BlcnR5U2xvdChKU0Nl
bGwqLCBFeGVjU3RhdGUqLCBQcm9wZXJ0eU5hbWUsIFByb3BlcnR5U2xvdCYpOworICAgICAgICBz
dGF0aWMgdm9pZCBwdXQoSlNDZWxsKiwgRXhlY1N0YXRlKiwgUHJvcGVydHlOYW1lLCBKU1ZhbHVl
LCBQdXRQcm9wZXJ0eVNsb3QmKTsKIAotICAgICAgICBzdGF0aWMgdm9pZCBwdXREaXJlY3RWaXJ0
dWFsKEpTT2JqZWN0KiwgRXhlY1N0YXRlKiwgY29uc3QgSWRlbnRpZmllciYsIEpTVmFsdWUsIHVu
c2lnbmVkIGF0dHJpYnV0ZXMpOworICAgICAgICBzdGF0aWMgdm9pZCBwdXREaXJlY3RWaXJ0dWFs
KEpTT2JqZWN0KiwgRXhlY1N0YXRlKiwgUHJvcGVydHlOYW1lLCBKU1ZhbHVlLCB1bnNpZ25lZCBh
dHRyaWJ1dGVzKTsKIAogICAgICAgICBzdGF0aWMgU3RydWN0dXJlKiBjcmVhdGVTdHJ1Y3R1cmUo
SlNHbG9iYWxEYXRhJiBnbG9iYWxEYXRhLCBKU0dsb2JhbE9iamVjdCogZ2xvYmFsT2JqZWN0LCBK
U1ZhbHVlIHByb3RvKSB7IHJldHVybiBTdHJ1Y3R1cmU6OmNyZWF0ZShnbG9iYWxEYXRhLCBnbG9i
YWxPYmplY3QsIHByb3RvLCBUeXBlSW5mbyhTdGF0aWNTY29wZU9iamVjdFR5cGUsIFN0cnVjdHVy
ZUZsYWdzKSwgJnNfaW5mbyk7IH0KIApJbmRleDogU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRp
bWUvSlNTdHJpbmcuY3BwCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50
aW1lL0pTU3RyaW5nLmNwcAkocmV2aXNpb24gMTE2NjY3KQorKysgU291cmNlL0phdmFTY3JpcHRD
b3JlL3J1bnRpbWUvSlNTdHJpbmcuY3BwCSh3b3JraW5nIGNvcHkpCkBAIC0yNTcsNyArMjU3LDcg
QEAgSlNPYmplY3QqIEpTU3RyaW5nOjp0b1RoaXNPYmplY3QoSlNDZWxsKgogICAgIHJldHVybiBT
dHJpbmdPYmplY3Q6OmNyZWF0ZShleGVjLCBleGVjLT5sZXhpY2FsR2xvYmFsT2JqZWN0KCksIGpz
Q2FzdDxKU1N0cmluZyo+KGNlbGwpKTsKIH0KIAotYm9vbCBKU1N0cmluZzo6Z2V0T3duUHJvcGVy
dHlTbG90KEpTQ2VsbCogY2VsbCwgRXhlY1N0YXRlKiBleGVjLCBjb25zdCBJZGVudGlmaWVyJiBw
cm9wZXJ0eU5hbWUsIFByb3BlcnR5U2xvdCYgc2xvdCkKK2Jvb2wgSlNTdHJpbmc6OmdldE93blBy
b3BlcnR5U2xvdChKU0NlbGwqIGNlbGwsIEV4ZWNTdGF0ZSogZXhlYywgUHJvcGVydHlOYW1lIHBy
b3BlcnR5TmFtZSwgUHJvcGVydHlTbG90JiBzbG90KQogewogICAgIEpTU3RyaW5nKiB0aGlzT2Jq
ZWN0ID0ganNDYXN0PEpTU3RyaW5nKj4oY2VsbCk7CiAgICAgLy8gVGhlIHNlbWFudGljcyBoZXJl
IGFyZSByZWFsbHkgZ2V0UHJvcGVydHlTbG90LCBub3QgZ2V0T3duUHJvcGVydHlTbG90LgpAQCAt
Mjc1LDE2ICsyNzUsMTYgQEAgYm9vbCBKU1N0cmluZzo6Z2V0T3duUHJvcGVydHlTbG90KEpTQ2Vs
bAogICAgIHJldHVybiB0cnVlOwogfQogCi1ib29sIEpTU3RyaW5nOjpnZXRTdHJpbmdQcm9wZXJ0
eURlc2NyaXB0b3IoRXhlY1N0YXRlKiBleGVjLCBjb25zdCBJZGVudGlmaWVyJiBwcm9wZXJ0eU5h
bWUsIFByb3BlcnR5RGVzY3JpcHRvciYgZGVzY3JpcHRvcikKK2Jvb2wgSlNTdHJpbmc6OmdldFN0
cmluZ1Byb3BlcnR5RGVzY3JpcHRvcihFeGVjU3RhdGUqIGV4ZWMsIFByb3BlcnR5TmFtZSBwcm9w
ZXJ0eU5hbWUsIFByb3BlcnR5RGVzY3JpcHRvciYgZGVzY3JpcHRvcikKIHsKICAgICBpZiAocHJv
cGVydHlOYW1lID09IGV4ZWMtPnByb3BlcnR5TmFtZXMoKS5sZW5ndGgpIHsKICAgICAgICAgZGVz
Y3JpcHRvci5zZXREZXNjcmlwdG9yKGpzTnVtYmVyKG1fbGVuZ3RoKSwgRG9udEVudW0gfCBEb250
RGVsZXRlIHwgUmVhZE9ubHkpOwogICAgICAgICByZXR1cm4gdHJ1ZTsKICAgICB9CiAgICAgCi0g
ICAgYm9vbCBpc1N0cmljdFVJbnQzMjsKLSAgICB1bnNpZ25lZCBpID0gcHJvcGVydHlOYW1lLnRv
VUludDMyKGlzU3RyaWN0VUludDMyKTsKLSAgICBpZiAoaXNTdHJpY3RVSW50MzIgJiYgaSA8IG1f
bGVuZ3RoKSB7CisgICAgdW5zaWduZWQgaSA9IHByb3BlcnR5TmFtZS5hc0luZGV4KCk7CisgICAg
aWYgKGkgPCBtX2xlbmd0aCkgeworICAgICAgICBBU1NFUlQoaSAhPSBQcm9wZXJ0eU5hbWU6Ok5v
dEFuSW5kZXgpOyAvLyBObyBuZWVkIGZvciBhbiBleHBsaWNpdCBjaGVjaywgdGhlIGFib3ZlIHRl
c3Qgd291bGQgYWx3YXlzIGZhaWwhCiAgICAgICAgIGRlc2NyaXB0b3Iuc2V0RGVzY3JpcHRvcihn
ZXRJbmRleChleGVjLCBpKSwgRG9udERlbGV0ZSB8IFJlYWRPbmx5KTsKICAgICAgICAgcmV0dXJu
IHRydWU7CiAgICAgfQpJbmRleDogU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvSlNTdHJp
bmcuaAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9KU1N0cmlu
Zy5oCShyZXZpc2lvbiAxMTY2NjcpCisrKyBTb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9K
U1N0cmluZy5oCSh3b3JraW5nIGNvcHkpCkBAIC0xNDMsOSArMTQzLDkgQEAgbmFtZXNwYWNlIEpT
QyB7CiAgICAgICAgIEpTT2JqZWN0KiB0b09iamVjdChFeGVjU3RhdGUqLCBKU0dsb2JhbE9iamVj
dCopIGNvbnN0OwogICAgICAgICBkb3VibGUgdG9OdW1iZXIoRXhlY1N0YXRlKikgY29uc3Q7CiAg
ICAgICAgIAotICAgICAgICBib29sIGdldFN0cmluZ1Byb3BlcnR5U2xvdChFeGVjU3RhdGUqLCBj
b25zdCBJZGVudGlmaWVyJiBwcm9wZXJ0eU5hbWUsIFByb3BlcnR5U2xvdCYpOworICAgICAgICBi
b29sIGdldFN0cmluZ1Byb3BlcnR5U2xvdChFeGVjU3RhdGUqLCBQcm9wZXJ0eU5hbWUsIFByb3Bl
cnR5U2xvdCYpOwogICAgICAgICBib29sIGdldFN0cmluZ1Byb3BlcnR5U2xvdChFeGVjU3RhdGUq
LCB1bnNpZ25lZCBwcm9wZXJ0eU5hbWUsIFByb3BlcnR5U2xvdCYpOwotICAgICAgICBib29sIGdl
dFN0cmluZ1Byb3BlcnR5RGVzY3JpcHRvcihFeGVjU3RhdGUqLCBjb25zdCBJZGVudGlmaWVyJiBw
cm9wZXJ0eU5hbWUsIFByb3BlcnR5RGVzY3JpcHRvciYpOworICAgICAgICBib29sIGdldFN0cmlu
Z1Byb3BlcnR5RGVzY3JpcHRvcihFeGVjU3RhdGUqLCBQcm9wZXJ0eU5hbWUsIFByb3BlcnR5RGVz
Y3JpcHRvciYpOwogCiAgICAgICAgIGJvb2wgY2FuR2V0SW5kZXgodW5zaWduZWQgaSkgeyByZXR1
cm4gaSA8IG1fbGVuZ3RoOyB9CiAgICAgICAgIEpTU3RyaW5nKiBnZXRJbmRleChFeGVjU3RhdGUq
LCB1bnNpZ25lZCk7CkBAIC0xODEsNyArMTgxLDcgQEAgbmFtZXNwYWNlIEpTQyB7CiAgICAgICAg
IHN0YXRpYyBKU09iamVjdCogdG9UaGlzT2JqZWN0KEpTQ2VsbCosIEV4ZWNTdGF0ZSopOwogCiAg
ICAgICAgIC8vIEFjdHVhbGx5IGdldFByb3BlcnR5U2xvdCwgbm90IGdldE93blByb3BlcnR5U2xv
dCAoc2VlIEpTQ2VsbCkuCi0gICAgICAgIHN0YXRpYyBib29sIGdldE93blByb3BlcnR5U2xvdChK
U0NlbGwqLCBFeGVjU3RhdGUqLCBjb25zdCBJZGVudGlmaWVyJiBwcm9wZXJ0eU5hbWUsIFByb3Bl
cnR5U2xvdCYpOworICAgICAgICBzdGF0aWMgYm9vbCBnZXRPd25Qcm9wZXJ0eVNsb3QoSlNDZWxs
KiwgRXhlY1N0YXRlKiwgUHJvcGVydHlOYW1lLCBQcm9wZXJ0eVNsb3QmKTsKICAgICAgICAgc3Rh
dGljIGJvb2wgZ2V0T3duUHJvcGVydHlTbG90QnlJbmRleChKU0NlbGwqLCBFeGVjU3RhdGUqLCB1
bnNpZ25lZCBwcm9wZXJ0eU5hbWUsIFByb3BlcnR5U2xvdCYpOwogCiAgICAgICAgIFVTdHJpbmcm
IHN0cmluZygpIHsgQVNTRVJUKCFpc1JvcGUoKSk7IHJldHVybiBtX3ZhbHVlOyB9CkBAIC00NDks
MTYgKzQ0OSwxNiBAQCBuYW1lc3BhY2UgSlNDIHsKICAgICBpbmxpbmUgSlNTdHJpbmcqIGpzTm9u
dHJpdmlhbFN0cmluZyhFeGVjU3RhdGUqIGV4ZWMsIGNvbnN0IGNoYXIqIHMpIHsgcmV0dXJuIGpz
Tm9udHJpdmlhbFN0cmluZygmZXhlYy0+Z2xvYmFsRGF0YSgpLCBzKTsgfQogICAgIGlubGluZSBK
U1N0cmluZyoganNPd25lZFN0cmluZyhFeGVjU3RhdGUqIGV4ZWMsIGNvbnN0IFVTdHJpbmcmIHMp
IHsgcmV0dXJuIGpzT3duZWRTdHJpbmcoJmV4ZWMtPmdsb2JhbERhdGEoKSwgcyk7IH0gCiAKLSAg
ICBBTFdBWVNfSU5MSU5FIGJvb2wgSlNTdHJpbmc6OmdldFN0cmluZ1Byb3BlcnR5U2xvdChFeGVj
U3RhdGUqIGV4ZWMsIGNvbnN0IElkZW50aWZpZXImIHByb3BlcnR5TmFtZSwgUHJvcGVydHlTbG90
JiBzbG90KQorICAgIEFMV0FZU19JTkxJTkUgYm9vbCBKU1N0cmluZzo6Z2V0U3RyaW5nUHJvcGVy
dHlTbG90KEV4ZWNTdGF0ZSogZXhlYywgUHJvcGVydHlOYW1lIHByb3BlcnR5TmFtZSwgUHJvcGVy
dHlTbG90JiBzbG90KQogICAgIHsKICAgICAgICAgaWYgKHByb3BlcnR5TmFtZSA9PSBleGVjLT5w
cm9wZXJ0eU5hbWVzKCkubGVuZ3RoKSB7CiAgICAgICAgICAgICBzbG90LnNldFZhbHVlKGpzTnVt
YmVyKG1fbGVuZ3RoKSk7CiAgICAgICAgICAgICByZXR1cm4gdHJ1ZTsKICAgICAgICAgfQogCi0g
ICAgICAgIGJvb2wgaXNTdHJpY3RVSW50MzI7Ci0gICAgICAgIHVuc2lnbmVkIGkgPSBwcm9wZXJ0
eU5hbWUudG9VSW50MzIoaXNTdHJpY3RVSW50MzIpOwotICAgICAgICBpZiAoaXNTdHJpY3RVSW50
MzIgJiYgaSA8IG1fbGVuZ3RoKSB7CisgICAgICAgIHVuc2lnbmVkIGkgPSBwcm9wZXJ0eU5hbWUu
YXNJbmRleCgpOworICAgICAgICBpZiAoaSA8IG1fbGVuZ3RoKSB7CisgICAgICAgICAgICBBU1NF
UlQoaSAhPSBQcm9wZXJ0eU5hbWU6Ok5vdEFuSW5kZXgpOyAvLyBObyBuZWVkIGZvciBhbiBleHBs
aWNpdCBjaGVjaywgdGhlIGFib3ZlIHRlc3Qgd291bGQgYWx3YXlzIGZhaWwhCiAgICAgICAgICAg
ICBzbG90LnNldFZhbHVlKGdldEluZGV4KGV4ZWMsIGkpKTsKICAgICAgICAgICAgIHJldHVybiB0
cnVlOwogICAgICAgICB9CkluZGV4OiBTb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9KU1Zh
bHVlLmNwcAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9KU1Zh
bHVlLmNwcAkocmV2aXNpb24gMTE2NjY3KQorKysgU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRp
bWUvSlNWYWx1ZS5jcHAJKHdvcmtpbmcgY29weSkKQEAgLTEwOSw3ICsxMDksNyBAQCBKU09iamVj
dCogSlNWYWx1ZTo6c3ludGhlc2l6ZVByb3RvdHlwZShFCiB9CiAKIC8vIEVDTUEgOC43LjIKLXZv
aWQgSlNWYWx1ZTo6cHV0VG9QcmltaXRpdmUoRXhlY1N0YXRlKiBleGVjLCBjb25zdCBJZGVudGlm
aWVyJiBwcm9wZXJ0eU5hbWUsIEpTVmFsdWUgdmFsdWUsIFB1dFByb3BlcnR5U2xvdCYgc2xvdCkK
K3ZvaWQgSlNWYWx1ZTo6cHV0VG9QcmltaXRpdmUoRXhlY1N0YXRlKiBleGVjLCBQcm9wZXJ0eU5h
bWUgcHJvcGVydHlOYW1lLCBKU1ZhbHVlIHZhbHVlLCBQdXRQcm9wZXJ0eVNsb3QmIHNsb3QpCiB7
CiAgICAgSlNHbG9iYWxEYXRhJiBnbG9iYWxEYXRhID0gZXhlYy0+Z2xvYmFsRGF0YSgpOwogCklu
ZGV4OiBTb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9KU1ZhbHVlLmgKPT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQot
LS0gU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvSlNWYWx1ZS5oCShyZXZpc2lvbiAxMTY2
NjcpCisrKyBTb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9KU1ZhbHVlLmgJKHdvcmtpbmcg
Y29weSkKQEAgLTM2LDEyICszNiwxMiBAQAogbmFtZXNwYWNlIEpTQyB7CiAKICAgICBjbGFzcyBF
eGVjU3RhdGU7Ci0gICAgY2xhc3MgSWRlbnRpZmllcjsKICAgICBjbGFzcyBKU0NlbGw7CiAgICAg
Y2xhc3MgSlNHbG9iYWxEYXRhOwogICAgIGNsYXNzIEpTR2xvYmFsT2JqZWN0OwogICAgIGNsYXNz
IEpTT2JqZWN0OwogICAgIGNsYXNzIEpTU3RyaW5nOworICAgIGNsYXNzIFByb3BlcnR5TmFtZTsK
ICAgICBjbGFzcyBQcm9wZXJ0eVNsb3Q7CiAgICAgY2xhc3MgUHV0UHJvcGVydHlTbG90OwogICAg
IGNsYXNzIFVTdHJpbmc7CkBAIC0yMTksMTIgKzIxOSwxMiBAQCBuYW1lc3BhY2UgSlNDIHsKICAg
ICAgICAgZmxvYXQgdG9GbG9hdChFeGVjU3RhdGUqIGV4ZWMpIGNvbnN0IHsgcmV0dXJuIHN0YXRp
Y19jYXN0PGZsb2F0Pih0b051bWJlcihleGVjKSk7IH0KIAogICAgICAgICAvLyBPYmplY3Qgb3Bl
cmF0aW9ucywgd2l0aCB0aGUgdG9PYmplY3Qgb3BlcmF0aW9uIGluY2x1ZGVkLgotICAgICAgICBK
U1ZhbHVlIGdldChFeGVjU3RhdGUqLCBjb25zdCBJZGVudGlmaWVyJiBwcm9wZXJ0eU5hbWUpIGNv
bnN0OwotICAgICAgICBKU1ZhbHVlIGdldChFeGVjU3RhdGUqLCBjb25zdCBJZGVudGlmaWVyJiBw
cm9wZXJ0eU5hbWUsIFByb3BlcnR5U2xvdCYpIGNvbnN0OworICAgICAgICBKU1ZhbHVlIGdldChF
eGVjU3RhdGUqLCBQcm9wZXJ0eU5hbWUpIGNvbnN0OworICAgICAgICBKU1ZhbHVlIGdldChFeGVj
U3RhdGUqLCBQcm9wZXJ0eU5hbWUsIFByb3BlcnR5U2xvdCYpIGNvbnN0OwogICAgICAgICBKU1Zh
bHVlIGdldChFeGVjU3RhdGUqLCB1bnNpZ25lZCBwcm9wZXJ0eU5hbWUpIGNvbnN0OwogICAgICAg
ICBKU1ZhbHVlIGdldChFeGVjU3RhdGUqLCB1bnNpZ25lZCBwcm9wZXJ0eU5hbWUsIFByb3BlcnR5
U2xvdCYpIGNvbnN0OwotICAgICAgICB2b2lkIHB1dChFeGVjU3RhdGUqLCBjb25zdCBJZGVudGlm
aWVyJiBwcm9wZXJ0eU5hbWUsIEpTVmFsdWUsIFB1dFByb3BlcnR5U2xvdCYpOwotICAgICAgICB2
b2lkIHB1dFRvUHJpbWl0aXZlKEV4ZWNTdGF0ZSosIGNvbnN0IElkZW50aWZpZXImIHByb3BlcnR5
TmFtZSwgSlNWYWx1ZSwgUHV0UHJvcGVydHlTbG90Jik7CisgICAgICAgIHZvaWQgcHV0KEV4ZWNT
dGF0ZSosIFByb3BlcnR5TmFtZSwgSlNWYWx1ZSwgUHV0UHJvcGVydHlTbG90Jik7CisgICAgICAg
IHZvaWQgcHV0VG9QcmltaXRpdmUoRXhlY1N0YXRlKiwgUHJvcGVydHlOYW1lLCBKU1ZhbHVlLCBQ
dXRQcm9wZXJ0eVNsb3QmKTsKICAgICAgICAgdm9pZCBwdXRCeUluZGV4KEV4ZWNTdGF0ZSosIHVu
c2lnbmVkIHByb3BlcnR5TmFtZSwgSlNWYWx1ZSwgYm9vbCBzaG91bGRUaHJvdyk7CiAKICAgICAg
ICAgSlNPYmplY3QqIHRvVGhpc09iamVjdChFeGVjU3RhdGUqKSBjb25zdDsKSW5kZXg6IFNvdXJj
ZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL0pTVmFyaWFibGVPYmplY3QuY3BwCj09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0K
LS0tIFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL0pTVmFyaWFibGVPYmplY3QuY3BwCShy
ZXZpc2lvbiAxMTY2NjcpCisrKyBTb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9KU1Zhcmlh
YmxlT2JqZWN0LmNwcAkod29ya2luZyBjb3B5KQpAQCAtNDIsNyArNDIsNyBAQCB2b2lkIEpTVmFy
aWFibGVPYmplY3Q6OmRlc3Ryb3koSlNDZWxsKiBjCiAgICAganNDYXN0PEpTVmFyaWFibGVPYmpl
Y3QqPihjZWxsKS0+SlNWYXJpYWJsZU9iamVjdDo6fkpTVmFyaWFibGVPYmplY3QoKTsKIH0KIAot
Ym9vbCBKU1ZhcmlhYmxlT2JqZWN0OjpkZWxldGVQcm9wZXJ0eShKU0NlbGwqIGNlbGwsIEV4ZWNT
dGF0ZSogZXhlYywgY29uc3QgSWRlbnRpZmllciYgcHJvcGVydHlOYW1lKQorYm9vbCBKU1Zhcmlh
YmxlT2JqZWN0OjpkZWxldGVQcm9wZXJ0eShKU0NlbGwqIGNlbGwsIEV4ZWNTdGF0ZSogZXhlYywg
UHJvcGVydHlOYW1lIHByb3BlcnR5TmFtZSkKIHsKICAgICBKU1ZhcmlhYmxlT2JqZWN0KiB0aGlz
T2JqZWN0ID0ganNDYXN0PEpTVmFyaWFibGVPYmplY3QqPihjZWxsKTsKICAgICBpZiAodGhpc09i
amVjdC0+c3ltYm9sVGFibGUoKS5jb250YWlucyhwcm9wZXJ0eU5hbWUuaW1wbCgpKSkKQEAgLTYz
LDcgKzYzLDcgQEAgdm9pZCBKU1ZhcmlhYmxlT2JqZWN0OjpnZXRPd25Qcm9wZXJ0eU5hbQogICAg
IEpTT2JqZWN0OjpnZXRPd25Qcm9wZXJ0eU5hbWVzKHRoaXNPYmplY3QsIGV4ZWMsIHByb3BlcnR5
TmFtZXMsIG1vZGUpOwogfQogCi1ib29sIEpTVmFyaWFibGVPYmplY3Q6OnN5bWJvbFRhYmxlR2V0
KGNvbnN0IElkZW50aWZpZXImIHByb3BlcnR5TmFtZSwgUHJvcGVydHlEZXNjcmlwdG9yJiBkZXNj
cmlwdG9yKQorYm9vbCBKU1ZhcmlhYmxlT2JqZWN0OjpzeW1ib2xUYWJsZUdldChQcm9wZXJ0eU5h
bWUgcHJvcGVydHlOYW1lLCBQcm9wZXJ0eURlc2NyaXB0b3ImIGRlc2NyaXB0b3IpCiB7CiAgICAg
U3ltYm9sVGFibGVFbnRyeSBlbnRyeSA9IHN5bWJvbFRhYmxlKCkuaW5saW5lR2V0KHByb3BlcnR5
TmFtZS5pbXBsKCkpOwogICAgIGlmICghZW50cnkuaXNOdWxsKCkpIHsKQEAgLTczLDcgKzczLDcg
QEAgYm9vbCBKU1ZhcmlhYmxlT2JqZWN0OjpzeW1ib2xUYWJsZUdldChjbwogICAgIHJldHVybiBm
YWxzZTsKIH0KIAotdm9pZCBKU1ZhcmlhYmxlT2JqZWN0OjpwdXREaXJlY3RWaXJ0dWFsKEpTT2Jq
ZWN0KiwgRXhlY1N0YXRlKiwgY29uc3QgSWRlbnRpZmllciYsIEpTVmFsdWUsIHVuc2lnbmVkKQor
dm9pZCBKU1ZhcmlhYmxlT2JqZWN0OjpwdXREaXJlY3RWaXJ0dWFsKEpTT2JqZWN0KiwgRXhlY1N0
YXRlKiwgUHJvcGVydHlOYW1lLCBKU1ZhbHVlLCB1bnNpZ25lZCkKIHsKICAgICBBU1NFUlRfTk9U
X1JFQUNIRUQoKTsKIH0KSW5kZXg6IFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL0pTVmFy
aWFibGVPYmplY3QuaAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGlt
ZS9KU1ZhcmlhYmxlT2JqZWN0LmgJKHJldmlzaW9uIDExNjY2NykKKysrIFNvdXJjZS9KYXZhU2Ny
aXB0Q29yZS9ydW50aW1lL0pTVmFyaWFibGVPYmplY3QuaAkod29ya2luZyBjb3B5KQpAQCAtNTIs
OSArNTIsOSBAQCBuYW1lc3BhY2UgSlNDIHsKIAogICAgICAgICBKU19FWFBPUlRfUFJJVkFURSBz
dGF0aWMgdm9pZCBkZXN0cm95KEpTQ2VsbCopOwogCi0gICAgICAgIHN0YXRpYyBOT19SRVRVUk5f
RFVFX1RPX0FTU0VSVCB2b2lkIHB1dERpcmVjdFZpcnR1YWwoSlNPYmplY3QqLCBFeGVjU3RhdGUq
LCBjb25zdCBJZGVudGlmaWVyJiwgSlNWYWx1ZSwgdW5zaWduZWQgYXR0cmlidXRlcyk7CisgICAg
ICAgIHN0YXRpYyBOT19SRVRVUk5fRFVFX1RPX0FTU0VSVCB2b2lkIHB1dERpcmVjdFZpcnR1YWwo
SlNPYmplY3QqLCBFeGVjU3RhdGUqLCBQcm9wZXJ0eU5hbWUsIEpTVmFsdWUsIHVuc2lnbmVkIGF0
dHJpYnV0ZXMpOwogCi0gICAgICAgIEpTX0VYUE9SVF9QUklWQVRFIHN0YXRpYyBib29sIGRlbGV0
ZVByb3BlcnR5KEpTQ2VsbCosIEV4ZWNTdGF0ZSosIGNvbnN0IElkZW50aWZpZXImKTsKKyAgICAg
ICAgSlNfRVhQT1JUX1BSSVZBVEUgc3RhdGljIGJvb2wgZGVsZXRlUHJvcGVydHkoSlNDZWxsKiwg
RXhlY1N0YXRlKiwgUHJvcGVydHlOYW1lKTsKICAgICAgICAgSlNfRVhQT1JUX1BSSVZBVEUgc3Rh
dGljIHZvaWQgZ2V0T3duUHJvcGVydHlOYW1lcyhKU09iamVjdCosIEV4ZWNTdGF0ZSosIFByb3Bl
cnR5TmFtZUFycmF5JiwgRW51bWVyYXRpb25Nb2RlKTsKICAgICAgICAgCiAgICAgICAgIGJvb2wg
aXNEeW5hbWljU2NvcGUoYm9vbCYgcmVxdWlyZXNEeW5hbWljQ2hlY2tzKSBjb25zdDsKQEAgLTg5
LDE4ICs4OSwxOCBAQCBuYW1lc3BhY2UgSlNDIHsKICAgICAgICAgUGFzc093bkFycmF5UHRyPFdy
aXRlQmFycmllcjxVbmtub3duPiA+IGNvcHlSZWdpc3RlckFycmF5KEpTR2xvYmFsRGF0YSYsIFdy
aXRlQmFycmllcjxVbmtub3duPiogc3JjLCBzaXplX3QgY291bnQsIHNpemVfdCBjYWxsZnJhbWVT
dGFydHMpOwogICAgICAgICB2b2lkIHNldFJlZ2lzdGVycyhXcml0ZUJhcnJpZXI8VW5rbm93bj4q
IHJlZ2lzdGVycywgUGFzc093bkFycmF5UHRyPFdyaXRlQmFycmllcjxVbmtub3duPiA+IHJlZ2lz
dGVyQXJyYXkpOwogCi0gICAgICAgIGJvb2wgc3ltYm9sVGFibGVHZXQoY29uc3QgSWRlbnRpZmll
ciYsIFByb3BlcnR5U2xvdCYpOwotICAgICAgICBKU19FWFBPUlRfUFJJVkFURSBib29sIHN5bWJv
bFRhYmxlR2V0KGNvbnN0IElkZW50aWZpZXImLCBQcm9wZXJ0eURlc2NyaXB0b3ImKTsKLSAgICAg
ICAgYm9vbCBzeW1ib2xUYWJsZUdldChjb25zdCBJZGVudGlmaWVyJiwgUHJvcGVydHlTbG90Jiwg
Ym9vbCYgc2xvdElzV3JpdGVhYmxlKTsKLSAgICAgICAgYm9vbCBzeW1ib2xUYWJsZVB1dChFeGVj
U3RhdGUqLCBjb25zdCBJZGVudGlmaWVyJiwgSlNWYWx1ZSwgYm9vbCBzaG91bGRUaHJvdyk7Ci0g
ICAgICAgIGJvb2wgc3ltYm9sVGFibGVQdXRXaXRoQXR0cmlidXRlcyhKU0dsb2JhbERhdGEmLCBj
b25zdCBJZGVudGlmaWVyJiwgSlNWYWx1ZSwgdW5zaWduZWQgYXR0cmlidXRlcyk7CisgICAgICAg
IGJvb2wgc3ltYm9sVGFibGVHZXQoUHJvcGVydHlOYW1lLCBQcm9wZXJ0eVNsb3QmKTsKKyAgICAg
ICAgSlNfRVhQT1JUX1BSSVZBVEUgYm9vbCBzeW1ib2xUYWJsZUdldChQcm9wZXJ0eU5hbWUsIFBy
b3BlcnR5RGVzY3JpcHRvciYpOworICAgICAgICBib29sIHN5bWJvbFRhYmxlR2V0KFByb3BlcnR5
TmFtZSwgUHJvcGVydHlTbG90JiwgYm9vbCYgc2xvdElzV3JpdGVhYmxlKTsKKyAgICAgICAgYm9v
bCBzeW1ib2xUYWJsZVB1dChFeGVjU3RhdGUqLCBQcm9wZXJ0eU5hbWUsIEpTVmFsdWUsIGJvb2wg
c2hvdWxkVGhyb3cpOworICAgICAgICBib29sIHN5bWJvbFRhYmxlUHV0V2l0aEF0dHJpYnV0ZXMo
SlNHbG9iYWxEYXRhJiwgUHJvcGVydHlOYW1lLCBKU1ZhbHVlLCB1bnNpZ25lZCBhdHRyaWJ1dGVz
KTsKIAogICAgICAgICBTeW1ib2xUYWJsZSogbV9zeW1ib2xUYWJsZTsgLy8gTWFwcyBuYW1lIC0+
IG9mZnNldCBmcm9tICJyIiBpbiByZWdpc3RlciBmaWxlLgogICAgICAgICBXcml0ZUJhcnJpZXI8
VW5rbm93bj4qIG1fcmVnaXN0ZXJzOyAvLyAiciIgaW4gdGhlIHJlZ2lzdGVyIGZpbGUuCiAgICAg
ICAgIE93bkFycmF5UHRyPFdyaXRlQmFycmllcjxVbmtub3duPiA+IG1fcmVnaXN0ZXJBcnJheTsg
Ly8gSW5kZXBlbmRlbnQgY29weSBvZiByZWdpc3RlcnMsIHVzZWQgd2hlbiBhIHZhcmlhYmxlIG9i
amVjdCBjb3BpZXMgaXRzIHJlZ2lzdGVycyBvdXQgb2YgdGhlIHJlZ2lzdGVyIGZpbGUuCiAgICAg
fTsKIAotICAgIGlubGluZSBib29sIEpTVmFyaWFibGVPYmplY3Q6OnN5bWJvbFRhYmxlR2V0KGNv
bnN0IElkZW50aWZpZXImIHByb3BlcnR5TmFtZSwgUHJvcGVydHlTbG90JiBzbG90KQorICAgIGlu
bGluZSBib29sIEpTVmFyaWFibGVPYmplY3Q6OnN5bWJvbFRhYmxlR2V0KFByb3BlcnR5TmFtZSBw
cm9wZXJ0eU5hbWUsIFByb3BlcnR5U2xvdCYgc2xvdCkKICAgICB7CiAgICAgICAgIFN5bWJvbFRh
YmxlRW50cnkgZW50cnkgPSBzeW1ib2xUYWJsZSgpLmlubGluZUdldChwcm9wZXJ0eU5hbWUuaW1w
bCgpKTsKICAgICAgICAgaWYgKCFlbnRyeS5pc051bGwoKSkgewpAQCAtMTEwLDcgKzExMCw3IEBA
IG5hbWVzcGFjZSBKU0MgewogICAgICAgICByZXR1cm4gZmFsc2U7CiAgICAgfQogCi0gICAgaW5s
aW5lIGJvb2wgSlNWYXJpYWJsZU9iamVjdDo6c3ltYm9sVGFibGVHZXQoY29uc3QgSWRlbnRpZmll
ciYgcHJvcGVydHlOYW1lLCBQcm9wZXJ0eVNsb3QmIHNsb3QsIGJvb2wmIHNsb3RJc1dyaXRlYWJs
ZSkKKyAgICBpbmxpbmUgYm9vbCBKU1ZhcmlhYmxlT2JqZWN0OjpzeW1ib2xUYWJsZUdldChQcm9w
ZXJ0eU5hbWUgcHJvcGVydHlOYW1lLCBQcm9wZXJ0eVNsb3QmIHNsb3QsIGJvb2wmIHNsb3RJc1dy
aXRlYWJsZSkKICAgICB7CiAgICAgICAgIFN5bWJvbFRhYmxlRW50cnkgZW50cnkgPSBzeW1ib2xU
YWJsZSgpLmlubGluZUdldChwcm9wZXJ0eU5hbWUuaW1wbCgpKTsKICAgICAgICAgaWYgKCFlbnRy
eS5pc051bGwoKSkgewpAQCAtMTIxLDcgKzEyMSw3IEBAIG5hbWVzcGFjZSBKU0MgewogICAgICAg
ICByZXR1cm4gZmFsc2U7CiAgICAgfQogCi0gICAgaW5saW5lIGJvb2wgSlNWYXJpYWJsZU9iamVj
dDo6c3ltYm9sVGFibGVQdXQoRXhlY1N0YXRlKiBleGVjLCBjb25zdCBJZGVudGlmaWVyJiBwcm9w
ZXJ0eU5hbWUsIEpTVmFsdWUgdmFsdWUsIGJvb2wgc2hvdWxkVGhyb3cpCisgICAgaW5saW5lIGJv
b2wgSlNWYXJpYWJsZU9iamVjdDo6c3ltYm9sVGFibGVQdXQoRXhlY1N0YXRlKiBleGVjLCBQcm9w
ZXJ0eU5hbWUgcHJvcGVydHlOYW1lLCBKU1ZhbHVlIHZhbHVlLCBib29sIHNob3VsZFRocm93KQog
ICAgIHsKICAgICAgICAgSlNHbG9iYWxEYXRhJiBnbG9iYWxEYXRhID0gZXhlYy0+Z2xvYmFsRGF0
YSgpOwogICAgICAgICBBU1NFUlQoIUhlYXA6OmhlYXAodmFsdWUpIHx8IEhlYXA6OmhlYXAodmFs
dWUpID09IEhlYXA6OmhlYXAodGhpcykpOwpAQCAtMTM4LDcgKzEzOCw3IEBAIG5hbWVzcGFjZSBK
U0MgewogICAgICAgICByZXR1cm4gdHJ1ZTsKICAgICB9CiAKLSAgICBpbmxpbmUgYm9vbCBKU1Zh
cmlhYmxlT2JqZWN0OjpzeW1ib2xUYWJsZVB1dFdpdGhBdHRyaWJ1dGVzKEpTR2xvYmFsRGF0YSYg
Z2xvYmFsRGF0YSwgY29uc3QgSWRlbnRpZmllciYgcHJvcGVydHlOYW1lLCBKU1ZhbHVlIHZhbHVl
LCB1bnNpZ25lZCBhdHRyaWJ1dGVzKQorICAgIGlubGluZSBib29sIEpTVmFyaWFibGVPYmplY3Q6
OnN5bWJvbFRhYmxlUHV0V2l0aEF0dHJpYnV0ZXMoSlNHbG9iYWxEYXRhJiBnbG9iYWxEYXRhLCBQ
cm9wZXJ0eU5hbWUgcHJvcGVydHlOYW1lLCBKU1ZhbHVlIHZhbHVlLCB1bnNpZ25lZCBhdHRyaWJ1
dGVzKQogICAgIHsKICAgICAgICAgQVNTRVJUKCFIZWFwOjpoZWFwKHZhbHVlKSB8fCBIZWFwOjpo
ZWFwKHZhbHVlKSA9PSBIZWFwOjpoZWFwKHRoaXMpKTsKIApJbmRleDogU291cmNlL0phdmFTY3Jp
cHRDb3JlL3J1bnRpbWUvTG9va3VwLmNwcAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvSmF2YVNjcmlw
dENvcmUvcnVudGltZS9Mb29rdXAuY3BwCShyZXZpc2lvbiAxMTY2NjcpCisrKyBTb3VyY2UvSmF2
YVNjcmlwdENvcmUvcnVudGltZS9Mb29rdXAuY3BwCSh3b3JraW5nIGNvcHkpCkBAIC02NCw3ICs2
NCw3IEBAIHZvaWQgSGFzaFRhYmxlOjpkZWxldGVUYWJsZSgpIGNvbnN0CiAgICAgfQogfQogCi1i
b29sIHNldFVwU3RhdGljRnVuY3Rpb25TbG90KEV4ZWNTdGF0ZSogZXhlYywgY29uc3QgSGFzaEVu
dHJ5KiBlbnRyeSwgSlNPYmplY3QqIHRoaXNPYmosIGNvbnN0IElkZW50aWZpZXImIHByb3BlcnR5
TmFtZSwgUHJvcGVydHlTbG90JiBzbG90KQorYm9vbCBzZXRVcFN0YXRpY0Z1bmN0aW9uU2xvdChF
eGVjU3RhdGUqIGV4ZWMsIGNvbnN0IEhhc2hFbnRyeSogZW50cnksIEpTT2JqZWN0KiB0aGlzT2Jq
LCBQcm9wZXJ0eU5hbWUgcHJvcGVydHlOYW1lLCBQcm9wZXJ0eVNsb3QmIHNsb3QpCiB7CiAgICAg
QVNTRVJUKHRoaXNPYmotPmdsb2JhbE9iamVjdCgpKTsKICAgICBBU1NFUlQoZW50cnktPmF0dHJp
YnV0ZXMoKSAmIEZ1bmN0aW9uKTsKQEAgLTc2LDcgKzc2LDcgQEAgYm9vbCBzZXRVcFN0YXRpY0Z1
bmN0aW9uU2xvdChFeGVjU3RhdGUqIAogICAgICAgICBpZiAodGhpc09iai0+c3RhdGljRnVuY3Rp
b25zUmVpZmllZCgpKQogICAgICAgICAgICAgcmV0dXJuIGZhbHNlOwogICAgIAotICAgICAgICBK
U0Z1bmN0aW9uKiBmdW5jdGlvbiA9IEpTRnVuY3Rpb246OmNyZWF0ZShleGVjLCB0aGlzT2JqLT5n
bG9iYWxPYmplY3QoKSwgZW50cnktPmZ1bmN0aW9uTGVuZ3RoKCksIHByb3BlcnR5TmFtZSwgZW50
cnktPmZ1bmN0aW9uKCksIGVudHJ5LT5pbnRyaW5zaWMoKSk7CisgICAgICAgIEpTRnVuY3Rpb24q
IGZ1bmN0aW9uID0gSlNGdW5jdGlvbjo6Y3JlYXRlKGV4ZWMsIHRoaXNPYmotPmdsb2JhbE9iamVj
dCgpLCBlbnRyeS0+ZnVuY3Rpb25MZW5ndGgoKSwgcHJvcGVydHlOYW1lLnVzdHJpbmcoKSwgZW50
cnktPmZ1bmN0aW9uKCksIGVudHJ5LT5pbnRyaW5zaWMoKSk7CiAgICAgICAgIHRoaXNPYmotPnB1
dERpcmVjdChleGVjLT5nbG9iYWxEYXRhKCksIHByb3BlcnR5TmFtZSwgZnVuY3Rpb24sIGVudHJ5
LT5hdHRyaWJ1dGVzKCkpOwogICAgICAgICBsb2NhdGlvbiA9IHRoaXNPYmotPmdldERpcmVjdExv
Y2F0aW9uKGV4ZWMtPmdsb2JhbERhdGEoKSwgcHJvcGVydHlOYW1lKTsKICAgICB9CkluZGV4OiBT
b3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9Mb29rdXAuaAo9PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3Vy
Y2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9Mb29rdXAuaAkocmV2aXNpb24gMTE2NjY3KQorKysg
U291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvTG9va3VwLmgJKHdvcmtpbmcgY29weSkKQEAg
LTEyOSwxMyArMTI5LDEzIEBAIG5hbWVzcGFjZSBKU0MgewogICAgICAgICBKU19FWFBPUlRfUFJJ
VkFURSB2b2lkIGRlbGV0ZVRhYmxlKCkgY29uc3Q7CiAKICAgICAgICAgLy8gRmluZCBhbiBlbnRy
eSBpbiB0aGUgdGFibGUsIGFuZCByZXR1cm4gdGhlIGVudHJ5LgotICAgICAgICBBTFdBWVNfSU5M
SU5FIGNvbnN0IEhhc2hFbnRyeSogZW50cnkoSlNHbG9iYWxEYXRhKiBnbG9iYWxEYXRhLCBjb25z
dCBJZGVudGlmaWVyJiBpZGVudGlmaWVyKSBjb25zdAorICAgICAgICBBTFdBWVNfSU5MSU5FIGNv
bnN0IEhhc2hFbnRyeSogZW50cnkoSlNHbG9iYWxEYXRhKiBnbG9iYWxEYXRhLCBQcm9wZXJ0eU5h
bWUgaWRlbnRpZmllcikgY29uc3QKICAgICAgICAgewogICAgICAgICAgICAgaW5pdGlhbGl6ZUlm
TmVlZGVkKGdsb2JhbERhdGEpOwogICAgICAgICAgICAgcmV0dXJuIGVudHJ5KGlkZW50aWZpZXIp
OwogICAgICAgICB9CiAKLSAgICAgICAgQUxXQVlTX0lOTElORSBjb25zdCBIYXNoRW50cnkqIGVu
dHJ5KEV4ZWNTdGF0ZSogZXhlYywgY29uc3QgSWRlbnRpZmllciYgaWRlbnRpZmllcikgY29uc3QK
KyAgICAgICAgQUxXQVlTX0lOTElORSBjb25zdCBIYXNoRW50cnkqIGVudHJ5KEV4ZWNTdGF0ZSog
ZXhlYywgUHJvcGVydHlOYW1lIGlkZW50aWZpZXIpIGNvbnN0CiAgICAgICAgIHsKICAgICAgICAg
ICAgIGluaXRpYWxpemVJZk5lZWRlZChleGVjKTsKICAgICAgICAgICAgIHJldHVybiBlbnRyeShp
ZGVudGlmaWVyKTsKQEAgLTE5OSw3ICsxOTksNyBAQCBuYW1lc3BhY2UgSlNDIHsKICAgICAgICAg
fQogCiAgICAgcHJpdmF0ZToKLSAgICAgICAgQUxXQVlTX0lOTElORSBjb25zdCBIYXNoRW50cnkq
IGVudHJ5KGNvbnN0IElkZW50aWZpZXImIGlkZW50aWZpZXIpIGNvbnN0CisgICAgICAgIEFMV0FZ
U19JTkxJTkUgY29uc3QgSGFzaEVudHJ5KiBlbnRyeShQcm9wZXJ0eU5hbWUgaWRlbnRpZmllcikg
Y29uc3QKICAgICAgICAgewogICAgICAgICAgICAgQVNTRVJUKHRhYmxlKTsKIApAQCAtMjIxLDcg
KzIyMSw3IEBAIG5hbWVzcGFjZSBKU0MgewogICAgICAgICBKU19FWFBPUlRfUFJJVkFURSB2b2lk
IGNyZWF0ZVRhYmxlKEpTR2xvYmFsRGF0YSopIGNvbnN0OwogICAgIH07CiAKLSAgICBKU19FWFBP
UlRfUFJJVkFURSBib29sIHNldFVwU3RhdGljRnVuY3Rpb25TbG90KEV4ZWNTdGF0ZSosIGNvbnN0
IEhhc2hFbnRyeSosIEpTT2JqZWN0KiB0aGlzT2JqZWN0LCBjb25zdCBJZGVudGlmaWVyJiBwcm9w
ZXJ0eU5hbWUsIFByb3BlcnR5U2xvdCYpOworICAgIEpTX0VYUE9SVF9QUklWQVRFIGJvb2wgc2V0
VXBTdGF0aWNGdW5jdGlvblNsb3QoRXhlY1N0YXRlKiwgY29uc3QgSGFzaEVudHJ5KiwgSlNPYmpl
Y3QqIHRoaXNPYmplY3QsIFByb3BlcnR5TmFtZSwgUHJvcGVydHlTbG90Jik7CiAKICAgICAvKioK
ICAgICAgKiBUaGlzIG1ldGhvZCBkb2VzIGl0IGFsbCAobG9va2luZyBpbiB0aGUgaGFzaHRhYmxl
LCBjaGVja2luZyBmb3IgZnVuY3Rpb24KQEAgLTIzMCw3ICsyMzAsNyBAQCBuYW1lc3BhY2UgSlND
IHsKICAgICAgKiB1bmtub3duIHByb3BlcnR5KS4KICAgICAgKi8KICAgICB0ZW1wbGF0ZSA8Y2xh
c3MgVGhpc0ltcCwgY2xhc3MgUGFyZW50SW1wPgotICAgIGlubGluZSBib29sIGdldFN0YXRpY1By
b3BlcnR5U2xvdChFeGVjU3RhdGUqIGV4ZWMsIGNvbnN0IEhhc2hUYWJsZSogdGFibGUsIFRoaXNJ
bXAqIHRoaXNPYmosIGNvbnN0IElkZW50aWZpZXImIHByb3BlcnR5TmFtZSwgUHJvcGVydHlTbG90
JiBzbG90KQorICAgIGlubGluZSBib29sIGdldFN0YXRpY1Byb3BlcnR5U2xvdChFeGVjU3RhdGUq
IGV4ZWMsIGNvbnN0IEhhc2hUYWJsZSogdGFibGUsIFRoaXNJbXAqIHRoaXNPYmosIFByb3BlcnR5
TmFtZSBwcm9wZXJ0eU5hbWUsIFByb3BlcnR5U2xvdCYgc2xvdCkKICAgICB7CiAgICAgICAgIGNv
bnN0IEhhc2hFbnRyeSogZW50cnkgPSB0YWJsZS0+ZW50cnkoZXhlYywgcHJvcGVydHlOYW1lKTsK
IApAQCAtMjQ1LDcgKzI0NSw3IEBAIG5hbWVzcGFjZSBKU0MgewogICAgIH0KIAogICAgIHRlbXBs
YXRlIDxjbGFzcyBUaGlzSW1wLCBjbGFzcyBQYXJlbnRJbXA+Ci0gICAgaW5saW5lIGJvb2wgZ2V0
U3RhdGljUHJvcGVydHlEZXNjcmlwdG9yKEV4ZWNTdGF0ZSogZXhlYywgY29uc3QgSGFzaFRhYmxl
KiB0YWJsZSwgVGhpc0ltcCogdGhpc09iaiwgY29uc3QgSWRlbnRpZmllciYgcHJvcGVydHlOYW1l
LCBQcm9wZXJ0eURlc2NyaXB0b3ImIGRlc2NyaXB0b3IpCisgICAgaW5saW5lIGJvb2wgZ2V0U3Rh
dGljUHJvcGVydHlEZXNjcmlwdG9yKEV4ZWNTdGF0ZSogZXhlYywgY29uc3QgSGFzaFRhYmxlKiB0
YWJsZSwgVGhpc0ltcCogdGhpc09iaiwgUHJvcGVydHlOYW1lIHByb3BlcnR5TmFtZSwgUHJvcGVy
dHlEZXNjcmlwdG9yJiBkZXNjcmlwdG9yKQogICAgIHsKICAgICAgICAgY29uc3QgSGFzaEVudHJ5
KiBlbnRyeSA9IHRhYmxlLT5lbnRyeShleGVjLCBwcm9wZXJ0eU5hbWUpOwogICAgICAgICAKQEAg
LTI3MSw3ICsyNzEsNyBAQCBuYW1lc3BhY2UgSlNDIHsKICAgICAgKiBhIGR1bW15IGdldFZhbHVl
UHJvcGVydHkuCiAgICAgICovCiAgICAgdGVtcGxhdGUgPGNsYXNzIFBhcmVudEltcD4KLSAgICBp
bmxpbmUgYm9vbCBnZXRTdGF0aWNGdW5jdGlvblNsb3QoRXhlY1N0YXRlKiBleGVjLCBjb25zdCBI
YXNoVGFibGUqIHRhYmxlLCBKU09iamVjdCogdGhpc09iaiwgY29uc3QgSWRlbnRpZmllciYgcHJv
cGVydHlOYW1lLCBQcm9wZXJ0eVNsb3QmIHNsb3QpCisgICAgaW5saW5lIGJvb2wgZ2V0U3RhdGlj
RnVuY3Rpb25TbG90KEV4ZWNTdGF0ZSogZXhlYywgY29uc3QgSGFzaFRhYmxlKiB0YWJsZSwgSlNP
YmplY3QqIHRoaXNPYmosIFByb3BlcnR5TmFtZSBwcm9wZXJ0eU5hbWUsIFByb3BlcnR5U2xvdCYg
c2xvdCkKICAgICB7CiAgICAgICAgIGlmIChQYXJlbnRJbXA6OmdldE93blByb3BlcnR5U2xvdCh0
aGlzT2JqLCBleGVjLCBwcm9wZXJ0eU5hbWUsIHNsb3QpKQogICAgICAgICAgICAgcmV0dXJuIHRy
dWU7CkBAIC0yODksNyArMjg5LDcgQEAgbmFtZXNwYWNlIEpTQyB7CiAgICAgICogYSBkdW1teSBn
ZXRWYWx1ZVByb3BlcnR5LgogICAgICAqLwogICAgIHRlbXBsYXRlIDxjbGFzcyBQYXJlbnRJbXA+
Ci0gICAgaW5saW5lIGJvb2wgZ2V0U3RhdGljRnVuY3Rpb25EZXNjcmlwdG9yKEV4ZWNTdGF0ZSog
ZXhlYywgY29uc3QgSGFzaFRhYmxlKiB0YWJsZSwgSlNPYmplY3QqIHRoaXNPYmosIGNvbnN0IElk
ZW50aWZpZXImIHByb3BlcnR5TmFtZSwgUHJvcGVydHlEZXNjcmlwdG9yJiBkZXNjcmlwdG9yKQor
ICAgIGlubGluZSBib29sIGdldFN0YXRpY0Z1bmN0aW9uRGVzY3JpcHRvcihFeGVjU3RhdGUqIGV4
ZWMsIGNvbnN0IEhhc2hUYWJsZSogdGFibGUsIEpTT2JqZWN0KiB0aGlzT2JqLCBQcm9wZXJ0eU5h
bWUgcHJvcGVydHlOYW1lLCBQcm9wZXJ0eURlc2NyaXB0b3ImIGRlc2NyaXB0b3IpCiAgICAgewog
ICAgICAgICBpZiAoUGFyZW50SW1wOjpnZXRPd25Qcm9wZXJ0eURlc2NyaXB0b3Ioc3RhdGljX2Nh
c3Q8UGFyZW50SW1wKj4odGhpc09iaiksIGV4ZWMsIHByb3BlcnR5TmFtZSwgZGVzY3JpcHRvcikp
CiAgICAgICAgICAgICByZXR1cm4gdHJ1ZTsKQEAgLTMxMCw3ICszMTAsNyBAQCBuYW1lc3BhY2Ug
SlNDIHsKICAgICAgKiBVc2luZyB0aGlzIGluc3RlYWQgb2YgZ2V0U3RhdGljUHJvcGVydHlTbG90
IHJlbW92ZXMgdGhlIG5lZWQgZm9yIGEgRnVuY0ltcCBjbGFzcy4KICAgICAgKi8KICAgICB0ZW1w
bGF0ZSA8Y2xhc3MgVGhpc0ltcCwgY2xhc3MgUGFyZW50SW1wPgotICAgIGlubGluZSBib29sIGdl
dFN0YXRpY1ZhbHVlU2xvdChFeGVjU3RhdGUqIGV4ZWMsIGNvbnN0IEhhc2hUYWJsZSogdGFibGUs
IFRoaXNJbXAqIHRoaXNPYmosIGNvbnN0IElkZW50aWZpZXImIHByb3BlcnR5TmFtZSwgUHJvcGVy
dHlTbG90JiBzbG90KQorICAgIGlubGluZSBib29sIGdldFN0YXRpY1ZhbHVlU2xvdChFeGVjU3Rh
dGUqIGV4ZWMsIGNvbnN0IEhhc2hUYWJsZSogdGFibGUsIFRoaXNJbXAqIHRoaXNPYmosIFByb3Bl
cnR5TmFtZSBwcm9wZXJ0eU5hbWUsIFByb3BlcnR5U2xvdCYgc2xvdCkKICAgICB7CiAgICAgICAg
IGNvbnN0IEhhc2hFbnRyeSogZW50cnkgPSB0YWJsZS0+ZW50cnkoZXhlYywgcHJvcGVydHlOYW1l
KTsKIApAQCAtMzI4LDcgKzMyOCw3IEBAIG5hbWVzcGFjZSBKU0MgewogICAgICAqIFVzaW5nIHRo
aXMgaW5zdGVhZCBvZiBnZXRTdGF0aWNQcm9wZXJ0eURlc2NyaXB0b3IgcmVtb3ZlcyB0aGUgbmVl
ZCBmb3IgYSBGdW5jSW1wIGNsYXNzLgogICAgICAqLwogICAgIHRlbXBsYXRlIDxjbGFzcyBUaGlz
SW1wLCBjbGFzcyBQYXJlbnRJbXA+Ci0gICAgaW5saW5lIGJvb2wgZ2V0U3RhdGljVmFsdWVEZXNj
cmlwdG9yKEV4ZWNTdGF0ZSogZXhlYywgY29uc3QgSGFzaFRhYmxlKiB0YWJsZSwgVGhpc0ltcCog
dGhpc09iaiwgY29uc3QgSWRlbnRpZmllciYgcHJvcGVydHlOYW1lLCBQcm9wZXJ0eURlc2NyaXB0
b3ImIGRlc2NyaXB0b3IpCisgICAgaW5saW5lIGJvb2wgZ2V0U3RhdGljVmFsdWVEZXNjcmlwdG9y
KEV4ZWNTdGF0ZSogZXhlYywgY29uc3QgSGFzaFRhYmxlKiB0YWJsZSwgVGhpc0ltcCogdGhpc09i
aiwgUHJvcGVydHlOYW1lIHByb3BlcnR5TmFtZSwgUHJvcGVydHlEZXNjcmlwdG9yJiBkZXNjcmlw
dG9yKQogICAgIHsKICAgICAgICAgY29uc3QgSGFzaEVudHJ5KiBlbnRyeSA9IHRhYmxlLT5lbnRy
eShleGVjLCBwcm9wZXJ0eU5hbWUpOwogICAgICAgICAKQEAgLTM0OCw3ICszNDgsNyBAQCBuYW1l
c3BhY2UgSlNDIHsKICAgICAgKiBpcyBmb3VuZCBpdCBzZXRzIHRoZSB2YWx1ZSBhbmQgcmV0dXJu
cyB0cnVlLCBlbHNlIGl0IHJldHVybnMgZmFsc2UuCiAgICAgICovCiAgICAgdGVtcGxhdGUgPGNs
YXNzIFRoaXNJbXA+Ci0gICAgaW5saW5lIGJvb2wgbG9va3VwUHV0KEV4ZWNTdGF0ZSogZXhlYywg
Y29uc3QgSWRlbnRpZmllciYgcHJvcGVydHlOYW1lLCBKU1ZhbHVlIHZhbHVlLCBjb25zdCBIYXNo
VGFibGUqIHRhYmxlLCBUaGlzSW1wKiB0aGlzT2JqLCBib29sIHNob3VsZFRocm93ID0gZmFsc2Up
CisgICAgaW5saW5lIGJvb2wgbG9va3VwUHV0KEV4ZWNTdGF0ZSogZXhlYywgUHJvcGVydHlOYW1l
IHByb3BlcnR5TmFtZSwgSlNWYWx1ZSB2YWx1ZSwgY29uc3QgSGFzaFRhYmxlKiB0YWJsZSwgVGhp
c0ltcCogdGhpc09iaiwgYm9vbCBzaG91bGRUaHJvdyA9IGZhbHNlKQogICAgIHsKICAgICAgICAg
Y29uc3QgSGFzaEVudHJ5KiBlbnRyeSA9IHRhYmxlLT5lbnRyeShleGVjLCBwcm9wZXJ0eU5hbWUp
OwogICAgICAgICAKQEAgLTM3Myw3ICszNzMsNyBAQCBuYW1lc3BhY2UgSlNDIHsKICAgICAgKiB0
aGVuIGl0IGNhbGxzIHB1dCgpIG9uIHRoZSBQYXJlbnRJbXAgY2xhc3MuCiAgICAgICovCiAgICAg
dGVtcGxhdGUgPGNsYXNzIFRoaXNJbXAsIGNsYXNzIFBhcmVudEltcD4KLSAgICBpbmxpbmUgdm9p
ZCBsb29rdXBQdXQoRXhlY1N0YXRlKiBleGVjLCBjb25zdCBJZGVudGlmaWVyJiBwcm9wZXJ0eU5h
bWUsIEpTVmFsdWUgdmFsdWUsIGNvbnN0IEhhc2hUYWJsZSogdGFibGUsIFRoaXNJbXAqIHRoaXNP
YmosIFB1dFByb3BlcnR5U2xvdCYgc2xvdCkKKyAgICBpbmxpbmUgdm9pZCBsb29rdXBQdXQoRXhl
Y1N0YXRlKiBleGVjLCBQcm9wZXJ0eU5hbWUgcHJvcGVydHlOYW1lLCBKU1ZhbHVlIHZhbHVlLCBj
b25zdCBIYXNoVGFibGUqIHRhYmxlLCBUaGlzSW1wKiB0aGlzT2JqLCBQdXRQcm9wZXJ0eVNsb3Qm
IHNsb3QpCiAgICAgewogICAgICAgICBpZiAoIWxvb2t1cFB1dDxUaGlzSW1wPihleGVjLCBwcm9w
ZXJ0eU5hbWUsIHZhbHVlLCB0YWJsZSwgdGhpc09iaiwgc2xvdC5pc1N0cmljdE1vZGUoKSkpCiAg
ICAgICAgICAgICBQYXJlbnRJbXA6OnB1dCh0aGlzT2JqLCBleGVjLCBwcm9wZXJ0eU5hbWUsIHZh
bHVlLCBzbG90KTsgLy8gbm90IGZvdW5kOiBmb3J3YXJkIHRvIHBhcmVudApJbmRleDogU291cmNl
L0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvTWF0aE9iamVjdC5jcHAKPT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291
cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvTWF0aE9iamVjdC5jcHAJKHJldmlzaW9uIDExNjY2
NykKKysrIFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL01hdGhPYmplY3QuY3BwCSh3b3Jr
aW5nIGNvcHkpCkBAIC0xMDYsMTIgKzEwNiwxMiBAQCB2b2lkIE1hdGhPYmplY3Q6OmZpbmlzaENy
ZWF0aW9uKEV4ZWNTdGF0CiAgICAgcHV0RGlyZWN0V2l0aG91dFRyYW5zaXRpb24oZXhlYy0+Z2xv
YmFsRGF0YSgpLCBJZGVudGlmaWVyKGV4ZWMsICJTUVJUMiIpLCBqc051bWJlcihzcXJ0KDIuMCkp
LCBEb250RGVsZXRlIHwgRG9udEVudW0gfCBSZWFkT25seSk7CiB9CiAKLWJvb2wgTWF0aE9iamVj
dDo6Z2V0T3duUHJvcGVydHlTbG90KEpTQ2VsbCogY2VsbCwgRXhlY1N0YXRlKiBleGVjLCBjb25z
dCBJZGVudGlmaWVyJiBwcm9wZXJ0eU5hbWUsIFByb3BlcnR5U2xvdCAmc2xvdCkKK2Jvb2wgTWF0
aE9iamVjdDo6Z2V0T3duUHJvcGVydHlTbG90KEpTQ2VsbCogY2VsbCwgRXhlY1N0YXRlKiBleGVj
LCBQcm9wZXJ0eU5hbWUgcHJvcGVydHlOYW1lLCBQcm9wZXJ0eVNsb3QgJnNsb3QpCiB7CiAgICAg
cmV0dXJuIGdldFN0YXRpY0Z1bmN0aW9uU2xvdDxKU09iamVjdD4oZXhlYywgRXhlY1N0YXRlOjpt
YXRoVGFibGUoZXhlYyksIGpzQ2FzdDxNYXRoT2JqZWN0Kj4oY2VsbCksIHByb3BlcnR5TmFtZSwg
c2xvdCk7CiB9CiAKLWJvb2wgTWF0aE9iamVjdDo6Z2V0T3duUHJvcGVydHlEZXNjcmlwdG9yKEpT
T2JqZWN0KiBvYmplY3QsIEV4ZWNTdGF0ZSogZXhlYywgY29uc3QgSWRlbnRpZmllciYgcHJvcGVy
dHlOYW1lLCBQcm9wZXJ0eURlc2NyaXB0b3ImIGRlc2NyaXB0b3IpCitib29sIE1hdGhPYmplY3Q6
OmdldE93blByb3BlcnR5RGVzY3JpcHRvcihKU09iamVjdCogb2JqZWN0LCBFeGVjU3RhdGUqIGV4
ZWMsIFByb3BlcnR5TmFtZSBwcm9wZXJ0eU5hbWUsIFByb3BlcnR5RGVzY3JpcHRvciYgZGVzY3Jp
cHRvcikKIHsKICAgICByZXR1cm4gZ2V0U3RhdGljRnVuY3Rpb25EZXNjcmlwdG9yPEpTT2JqZWN0
PihleGVjLCBFeGVjU3RhdGU6Om1hdGhUYWJsZShleGVjKSwganNDYXN0PE1hdGhPYmplY3QqPihv
YmplY3QpLCBwcm9wZXJ0eU5hbWUsIGRlc2NyaXB0b3IpOwogfQpJbmRleDogU291cmNlL0phdmFT
Y3JpcHRDb3JlL3J1bnRpbWUvTWF0aE9iamVjdC5oCj09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9KYXZh
U2NyaXB0Q29yZS9ydW50aW1lL01hdGhPYmplY3QuaAkocmV2aXNpb24gMTE2NjY3KQorKysgU291
cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvTWF0aE9iamVjdC5oCSh3b3JraW5nIGNvcHkpCkBA
IC0zOCw4ICszOCw4IEBAIG5hbWVzcGFjZSBKU0MgewogICAgICAgICAgICAgb2JqZWN0LT5maW5p
c2hDcmVhdGlvbihleGVjLCBnbG9iYWxPYmplY3QpOwogICAgICAgICAgICAgcmV0dXJuIG9iamVj
dDsKICAgICAgICAgfQotICAgICAgICBzdGF0aWMgYm9vbCBnZXRPd25Qcm9wZXJ0eVNsb3QoSlND
ZWxsKiwgRXhlY1N0YXRlKiwgY29uc3QgSWRlbnRpZmllciYsIFByb3BlcnR5U2xvdCYpOwotICAg
ICAgICBzdGF0aWMgYm9vbCBnZXRPd25Qcm9wZXJ0eURlc2NyaXB0b3IoSlNPYmplY3QqLCBFeGVj
U3RhdGUqLCBjb25zdCBJZGVudGlmaWVyJiwgUHJvcGVydHlEZXNjcmlwdG9yJik7CisgICAgICAg
IHN0YXRpYyBib29sIGdldE93blByb3BlcnR5U2xvdChKU0NlbGwqLCBFeGVjU3RhdGUqLCBQcm9w
ZXJ0eU5hbWUsIFByb3BlcnR5U2xvdCYpOworICAgICAgICBzdGF0aWMgYm9vbCBnZXRPd25Qcm9w
ZXJ0eURlc2NyaXB0b3IoSlNPYmplY3QqLCBFeGVjU3RhdGUqLCBQcm9wZXJ0eU5hbWUsIFByb3Bl
cnR5RGVzY3JpcHRvciYpOwogCiAgICAgICAgIHN0YXRpYyBjb25zdCBDbGFzc0luZm8gc19pbmZv
OwogCkluZGV4OiBTb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9OYXRpdmVFcnJvckNvbnN0
cnVjdG9yLmgKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvTmF0
aXZlRXJyb3JDb25zdHJ1Y3Rvci5oCShyZXZpc2lvbiAxMTY2NjcpCisrKyBTb3VyY2UvSmF2YVNj
cmlwdENvcmUvcnVudGltZS9OYXRpdmVFcnJvckNvbnN0cnVjdG9yLmgJKHdvcmtpbmcgY29weSkK
QEAgLTUzLDcgKzUzLDcgQEAgbmFtZXNwYWNlIEpTQyB7CiAgICAgcHJvdGVjdGVkOgogICAgICAg
ICB2b2lkIGZpbmlzaENyZWF0aW9uKEV4ZWNTdGF0ZSogZXhlYywgSlNHbG9iYWxPYmplY3QqIGds
b2JhbE9iamVjdCwgU3RydWN0dXJlKiBwcm90b3R5cGVTdHJ1Y3R1cmUsIGNvbnN0IFVTdHJpbmcm
IG5hbWUpCiAgICAgICAgIHsKLSAgICAgICAgICAgIEJhc2U6OmZpbmlzaENyZWF0aW9uKGV4ZWMt
Pmdsb2JhbERhdGEoKSwgSWRlbnRpZmllcihleGVjLCBuYW1lKSk7CisgICAgICAgICAgICBCYXNl
OjpmaW5pc2hDcmVhdGlvbihleGVjLT5nbG9iYWxEYXRhKCksIG5hbWUpOwogICAgICAgICAgICAg
QVNTRVJUKGluaGVyaXRzKCZzX2luZm8pKTsKIAogICAgICAgICAgICAgTmF0aXZlRXJyb3JQcm90
b3R5cGUqIHByb3RvdHlwZSA9IE5hdGl2ZUVycm9yUHJvdG90eXBlOjpjcmVhdGUoZXhlYywgZ2xv
YmFsT2JqZWN0LCBwcm90b3R5cGVTdHJ1Y3R1cmUsIG5hbWUsIHRoaXMpOwpJbmRleDogU291cmNl
L0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvTnVtYmVyQ29uc3RydWN0b3IuY3BwCj09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0K
LS0tIFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL051bWJlckNvbnN0cnVjdG9yLmNwcAko
cmV2aXNpb24gMTE2NjY3KQorKysgU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvTnVtYmVy
Q29uc3RydWN0b3IuY3BwCSh3b3JraW5nIGNvcHkpCkBAIC0zMCwxMSArMzAsMTEgQEAgbmFtZXNw
YWNlIEpTQyB7CiAKIEFTU0VSVF9DTEFTU19GSVRTX0lOX0NFTEwoTnVtYmVyQ29uc3RydWN0b3Ip
OwogCi1zdGF0aWMgSlNWYWx1ZSBudW1iZXJDb25zdHJ1Y3Rvck5hTlZhbHVlKEV4ZWNTdGF0ZSos
IEpTVmFsdWUsIGNvbnN0IElkZW50aWZpZXImKTsKLXN0YXRpYyBKU1ZhbHVlIG51bWJlckNvbnN0
cnVjdG9yTmVnSW5maW5pdHkoRXhlY1N0YXRlKiwgSlNWYWx1ZSwgY29uc3QgSWRlbnRpZmllciYp
Owotc3RhdGljIEpTVmFsdWUgbnVtYmVyQ29uc3RydWN0b3JQb3NJbmZpbml0eShFeGVjU3RhdGUq
LCBKU1ZhbHVlLCBjb25zdCBJZGVudGlmaWVyJik7Ci1zdGF0aWMgSlNWYWx1ZSBudW1iZXJDb25z
dHJ1Y3Rvck1heFZhbHVlKEV4ZWNTdGF0ZSosIEpTVmFsdWUsIGNvbnN0IElkZW50aWZpZXImKTsK
LXN0YXRpYyBKU1ZhbHVlIG51bWJlckNvbnN0cnVjdG9yTWluVmFsdWUoRXhlY1N0YXRlKiwgSlNW
YWx1ZSwgY29uc3QgSWRlbnRpZmllciYpOworc3RhdGljIEpTVmFsdWUgbnVtYmVyQ29uc3RydWN0
b3JOYU5WYWx1ZShFeGVjU3RhdGUqLCBKU1ZhbHVlLCBQcm9wZXJ0eU5hbWUpOworc3RhdGljIEpT
VmFsdWUgbnVtYmVyQ29uc3RydWN0b3JOZWdJbmZpbml0eShFeGVjU3RhdGUqLCBKU1ZhbHVlLCBQ
cm9wZXJ0eU5hbWUpOworc3RhdGljIEpTVmFsdWUgbnVtYmVyQ29uc3RydWN0b3JQb3NJbmZpbml0
eShFeGVjU3RhdGUqLCBKU1ZhbHVlLCBQcm9wZXJ0eU5hbWUpOworc3RhdGljIEpTVmFsdWUgbnVt
YmVyQ29uc3RydWN0b3JNYXhWYWx1ZShFeGVjU3RhdGUqLCBKU1ZhbHVlLCBQcm9wZXJ0eU5hbWUp
Oworc3RhdGljIEpTVmFsdWUgbnVtYmVyQ29uc3RydWN0b3JNaW5WYWx1ZShFeGVjU3RhdGUqLCBK
U1ZhbHVlLCBQcm9wZXJ0eU5hbWUpOwogCiB9IC8vIG5hbWVzcGFjZSBKU0MKIApAQCAtNjMsNyAr
NjMsNyBAQCBOdW1iZXJDb25zdHJ1Y3Rvcjo6TnVtYmVyQ29uc3RydWN0b3IoSlNHCiAKIHZvaWQg
TnVtYmVyQ29uc3RydWN0b3I6OmZpbmlzaENyZWF0aW9uKEV4ZWNTdGF0ZSogZXhlYywgTnVtYmVy
UHJvdG90eXBlKiBudW1iZXJQcm90b3R5cGUpCiB7Ci0gICAgQmFzZTo6ZmluaXNoQ3JlYXRpb24o
ZXhlYy0+Z2xvYmFsRGF0YSgpLCBJZGVudGlmaWVyKGV4ZWMsIG51bWJlclByb3RvdHlwZS0+c19p
bmZvLmNsYXNzTmFtZSkpOworICAgIEJhc2U6OmZpbmlzaENyZWF0aW9uKGV4ZWMtPmdsb2JhbERh
dGEoKSwgbnVtYmVyUHJvdG90eXBlLT5zX2luZm8uY2xhc3NOYW1lKTsKICAgICBBU1NFUlQoaW5o
ZXJpdHMoJnNfaW5mbykpOwogCiAgICAgLy8gTnVtYmVyLlByb3RvdHlwZQpAQCAtNzMsNDIgKzcz
LDQyIEBAIHZvaWQgTnVtYmVyQ29uc3RydWN0b3I6OmZpbmlzaENyZWF0aW9uKEUKICAgICBwdXRE
aXJlY3RXaXRob3V0VHJhbnNpdGlvbihleGVjLT5nbG9iYWxEYXRhKCksIGV4ZWMtPnByb3BlcnR5
TmFtZXMoKS5sZW5ndGgsIGpzTnVtYmVyKDEpLCBSZWFkT25seSB8IERvbnRFbnVtIHwgRG9udERl
bGV0ZSk7CiB9CiAKLWJvb2wgTnVtYmVyQ29uc3RydWN0b3I6OmdldE93blByb3BlcnR5U2xvdChK
U0NlbGwqIGNlbGwsIEV4ZWNTdGF0ZSogZXhlYywgY29uc3QgSWRlbnRpZmllciYgcHJvcGVydHlO
YW1lLCBQcm9wZXJ0eVNsb3QmIHNsb3QpCitib29sIE51bWJlckNvbnN0cnVjdG9yOjpnZXRPd25Q
cm9wZXJ0eVNsb3QoSlNDZWxsKiBjZWxsLCBFeGVjU3RhdGUqIGV4ZWMsIFByb3BlcnR5TmFtZSBw
cm9wZXJ0eU5hbWUsIFByb3BlcnR5U2xvdCYgc2xvdCkKIHsKICAgICByZXR1cm4gZ2V0U3RhdGlj
VmFsdWVTbG90PE51bWJlckNvbnN0cnVjdG9yLCBJbnRlcm5hbEZ1bmN0aW9uPihleGVjLCBFeGVj
U3RhdGU6Om51bWJlckNvbnN0cnVjdG9yVGFibGUoZXhlYyksIGpzQ2FzdDxOdW1iZXJDb25zdHJ1
Y3Rvcio+KGNlbGwpLCBwcm9wZXJ0eU5hbWUsIHNsb3QpOwogfQogCi1ib29sIE51bWJlckNvbnN0
cnVjdG9yOjpnZXRPd25Qcm9wZXJ0eURlc2NyaXB0b3IoSlNPYmplY3QqIG9iamVjdCwgRXhlY1N0
YXRlKiBleGVjLCBjb25zdCBJZGVudGlmaWVyJiBwcm9wZXJ0eU5hbWUsIFByb3BlcnR5RGVzY3Jp
cHRvciYgZGVzY3JpcHRvcikKK2Jvb2wgTnVtYmVyQ29uc3RydWN0b3I6OmdldE93blByb3BlcnR5
RGVzY3JpcHRvcihKU09iamVjdCogb2JqZWN0LCBFeGVjU3RhdGUqIGV4ZWMsIFByb3BlcnR5TmFt
ZSBwcm9wZXJ0eU5hbWUsIFByb3BlcnR5RGVzY3JpcHRvciYgZGVzY3JpcHRvcikKIHsKICAgICBy
ZXR1cm4gZ2V0U3RhdGljVmFsdWVEZXNjcmlwdG9yPE51bWJlckNvbnN0cnVjdG9yLCBJbnRlcm5h
bEZ1bmN0aW9uPihleGVjLCBFeGVjU3RhdGU6Om51bWJlckNvbnN0cnVjdG9yVGFibGUoZXhlYyks
IGpzQ2FzdDxOdW1iZXJDb25zdHJ1Y3Rvcio+KG9iamVjdCksIHByb3BlcnR5TmFtZSwgZGVzY3Jp
cHRvcik7CiB9CiAKLXZvaWQgTnVtYmVyQ29uc3RydWN0b3I6OnB1dChKU0NlbGwqIGNlbGwsIEV4
ZWNTdGF0ZSogZXhlYywgY29uc3QgSWRlbnRpZmllciYgcHJvcGVydHlOYW1lLCBKU1ZhbHVlIHZh
bHVlLCBQdXRQcm9wZXJ0eVNsb3QmIHNsb3QpCit2b2lkIE51bWJlckNvbnN0cnVjdG9yOjpwdXQo
SlNDZWxsKiBjZWxsLCBFeGVjU3RhdGUqIGV4ZWMsIFByb3BlcnR5TmFtZSBwcm9wZXJ0eU5hbWUs
IEpTVmFsdWUgdmFsdWUsIFB1dFByb3BlcnR5U2xvdCYgc2xvdCkKIHsKICAgICBsb29rdXBQdXQ8
TnVtYmVyQ29uc3RydWN0b3IsIEludGVybmFsRnVuY3Rpb24+KGV4ZWMsIHByb3BlcnR5TmFtZSwg
dmFsdWUsIEV4ZWNTdGF0ZTo6bnVtYmVyQ29uc3RydWN0b3JUYWJsZShleGVjKSwganNDYXN0PE51
bWJlckNvbnN0cnVjdG9yKj4oY2VsbCksIHNsb3QpOwogfQogCi1zdGF0aWMgSlNWYWx1ZSBudW1i
ZXJDb25zdHJ1Y3Rvck5hTlZhbHVlKEV4ZWNTdGF0ZSosIEpTVmFsdWUsIGNvbnN0IElkZW50aWZp
ZXImKQorc3RhdGljIEpTVmFsdWUgbnVtYmVyQ29uc3RydWN0b3JOYU5WYWx1ZShFeGVjU3RhdGUq
LCBKU1ZhbHVlLCBQcm9wZXJ0eU5hbWUpCiB7CiAgICAgcmV0dXJuIGpzTmFOKCk7CiB9CiAKLXN0
YXRpYyBKU1ZhbHVlIG51bWJlckNvbnN0cnVjdG9yTmVnSW5maW5pdHkoRXhlY1N0YXRlKiwgSlNW
YWx1ZSwgY29uc3QgSWRlbnRpZmllciYpCitzdGF0aWMgSlNWYWx1ZSBudW1iZXJDb25zdHJ1Y3Rv
ck5lZ0luZmluaXR5KEV4ZWNTdGF0ZSosIEpTVmFsdWUsIFByb3BlcnR5TmFtZSkKIHsKICAgICBy
ZXR1cm4ganNOdW1iZXIoLXN0ZDo6bnVtZXJpY19saW1pdHM8ZG91YmxlPjo6aW5maW5pdHkoKSk7
CiB9CiAKLXN0YXRpYyBKU1ZhbHVlIG51bWJlckNvbnN0cnVjdG9yUG9zSW5maW5pdHkoRXhlY1N0
YXRlKiwgSlNWYWx1ZSwgY29uc3QgSWRlbnRpZmllciYpCitzdGF0aWMgSlNWYWx1ZSBudW1iZXJD
b25zdHJ1Y3RvclBvc0luZmluaXR5KEV4ZWNTdGF0ZSosIEpTVmFsdWUsIFByb3BlcnR5TmFtZSkK
IHsKICAgICByZXR1cm4ganNOdW1iZXIoc3RkOjpudW1lcmljX2xpbWl0czxkb3VibGU+OjppbmZp
bml0eSgpKTsKIH0KIAotc3RhdGljIEpTVmFsdWUgbnVtYmVyQ29uc3RydWN0b3JNYXhWYWx1ZShF
eGVjU3RhdGUqLCBKU1ZhbHVlLCBjb25zdCBJZGVudGlmaWVyJikKK3N0YXRpYyBKU1ZhbHVlIG51
bWJlckNvbnN0cnVjdG9yTWF4VmFsdWUoRXhlY1N0YXRlKiwgSlNWYWx1ZSwgUHJvcGVydHlOYW1l
KQogewogICAgIHJldHVybiBqc051bWJlcigxLjc5NzY5MzEzNDg2MjMxNTdFKzMwOCk7CiB9CiAK
LXN0YXRpYyBKU1ZhbHVlIG51bWJlckNvbnN0cnVjdG9yTWluVmFsdWUoRXhlY1N0YXRlKiwgSlNW
YWx1ZSwgY29uc3QgSWRlbnRpZmllciYpCitzdGF0aWMgSlNWYWx1ZSBudW1iZXJDb25zdHJ1Y3Rv
ck1pblZhbHVlKEV4ZWNTdGF0ZSosIEpTVmFsdWUsIFByb3BlcnR5TmFtZSkKIHsKICAgICByZXR1
cm4ganNOdW1iZXIoNUUtMzI0KTsKIH0KSW5kZXg6IFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50
aW1lL051bWJlckNvbnN0cnVjdG9yLmgKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL0phdmFTY3JpcHRD
b3JlL3J1bnRpbWUvTnVtYmVyQ29uc3RydWN0b3IuaAkocmV2aXNpb24gMTE2NjY3KQorKysgU291
cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvTnVtYmVyQ29uc3RydWN0b3IuaAkod29ya2luZyBj
b3B5KQpAQCAtMzgsMTAgKzM4LDEwIEBAIG5hbWVzcGFjZSBKU0MgewogICAgICAgICAgICAgcmV0
dXJuIGNvbnN0cnVjdG9yOwogICAgICAgICB9CiAKLSAgICAgICAgc3RhdGljIHZvaWQgcHV0KEpT
Q2VsbCosIEV4ZWNTdGF0ZSosIGNvbnN0IElkZW50aWZpZXImIHByb3BlcnR5TmFtZSwgSlNWYWx1
ZSwgUHV0UHJvcGVydHlTbG90Jik7CisgICAgICAgIHN0YXRpYyB2b2lkIHB1dChKU0NlbGwqLCBF
eGVjU3RhdGUqLCBQcm9wZXJ0eU5hbWUsIEpTVmFsdWUsIFB1dFByb3BlcnR5U2xvdCYpOwogCi0g
ICAgICAgIHN0YXRpYyBib29sIGdldE93blByb3BlcnR5U2xvdChKU0NlbGwqLCBFeGVjU3RhdGUq
LCBjb25zdCBJZGVudGlmaWVyJiwgUHJvcGVydHlTbG90Jik7Ci0gICAgICAgIHN0YXRpYyBib29s
IGdldE93blByb3BlcnR5RGVzY3JpcHRvcihKU09iamVjdCosIEV4ZWNTdGF0ZSosIGNvbnN0IElk
ZW50aWZpZXImLCBQcm9wZXJ0eURlc2NyaXB0b3ImKTsKKyAgICAgICAgc3RhdGljIGJvb2wgZ2V0
T3duUHJvcGVydHlTbG90KEpTQ2VsbCosIEV4ZWNTdGF0ZSosIFByb3BlcnR5TmFtZSwgUHJvcGVy
dHlTbG90Jik7CisgICAgICAgIHN0YXRpYyBib29sIGdldE93blByb3BlcnR5RGVzY3JpcHRvcihK
U09iamVjdCosIEV4ZWNTdGF0ZSosIFByb3BlcnR5TmFtZSwgUHJvcGVydHlEZXNjcmlwdG9yJik7
CiAgICAgICAgIEpTVmFsdWUgZ2V0VmFsdWVQcm9wZXJ0eShFeGVjU3RhdGUqLCBpbnQgdG9rZW4p
IGNvbnN0OwogCiAgICAgICAgIHN0YXRpYyBjb25zdCBDbGFzc0luZm8gc19pbmZvOwpJbmRleDog
U291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvTnVtYmVyUHJvdG90eXBlLmNwcAo9PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09Ci0tLSBTb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9OdW1iZXJQcm90b3R5cGUuY3Bw
CShyZXZpc2lvbiAxMTY2NjcpCisrKyBTb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9OdW1i
ZXJQcm90b3R5cGUuY3BwCSh3b3JraW5nIGNvcHkpCkBAIC04NCwxMiArODQsMTIgQEAgdm9pZCBO
dW1iZXJQcm90b3R5cGU6OmZpbmlzaENyZWF0aW9uKEV4ZQogICAgIEFTU0VSVChpbmhlcml0cygm
c19pbmZvKSk7CiB9CiAKLWJvb2wgTnVtYmVyUHJvdG90eXBlOjpnZXRPd25Qcm9wZXJ0eVNsb3Qo
SlNDZWxsKiBjZWxsLCBFeGVjU3RhdGUqIGV4ZWMsIGNvbnN0IElkZW50aWZpZXImIHByb3BlcnR5
TmFtZSwgUHJvcGVydHlTbG90ICZzbG90KQorYm9vbCBOdW1iZXJQcm90b3R5cGU6OmdldE93blBy
b3BlcnR5U2xvdChKU0NlbGwqIGNlbGwsIEV4ZWNTdGF0ZSogZXhlYywgUHJvcGVydHlOYW1lIHBy
b3BlcnR5TmFtZSwgUHJvcGVydHlTbG90ICZzbG90KQogewogICAgIHJldHVybiBnZXRTdGF0aWNG
dW5jdGlvblNsb3Q8TnVtYmVyT2JqZWN0PihleGVjLCBFeGVjU3RhdGU6Om51bWJlclByb3RvdHlw
ZVRhYmxlKGV4ZWMpLCBqc0Nhc3Q8TnVtYmVyUHJvdG90eXBlKj4oY2VsbCksIHByb3BlcnR5TmFt
ZSwgc2xvdCk7CiB9CiAKLWJvb2wgTnVtYmVyUHJvdG90eXBlOjpnZXRPd25Qcm9wZXJ0eURlc2Ny
aXB0b3IoSlNPYmplY3QqIG9iamVjdCwgRXhlY1N0YXRlKiBleGVjLCBjb25zdCBJZGVudGlmaWVy
JiBwcm9wZXJ0eU5hbWUsIFByb3BlcnR5RGVzY3JpcHRvciYgZGVzY3JpcHRvcikKK2Jvb2wgTnVt
YmVyUHJvdG90eXBlOjpnZXRPd25Qcm9wZXJ0eURlc2NyaXB0b3IoSlNPYmplY3QqIG9iamVjdCwg
RXhlY1N0YXRlKiBleGVjLCBQcm9wZXJ0eU5hbWUgcHJvcGVydHlOYW1lLCBQcm9wZXJ0eURlc2Ny
aXB0b3ImIGRlc2NyaXB0b3IpCiB7CiAgICAgcmV0dXJuIGdldFN0YXRpY0Z1bmN0aW9uRGVzY3Jp
cHRvcjxOdW1iZXJPYmplY3Q+KGV4ZWMsIEV4ZWNTdGF0ZTo6bnVtYmVyUHJvdG90eXBlVGFibGUo
ZXhlYyksIGpzQ2FzdDxOdW1iZXJQcm90b3R5cGUqPihvYmplY3QpLCBwcm9wZXJ0eU5hbWUsIGRl
c2NyaXB0b3IpOwogfQpJbmRleDogU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvTnVtYmVy
UHJvdG90eXBlLmgKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUv
TnVtYmVyUHJvdG90eXBlLmgJKHJldmlzaW9uIDExNjY2NykKKysrIFNvdXJjZS9KYXZhU2NyaXB0
Q29yZS9ydW50aW1lL051bWJlclByb3RvdHlwZS5oCSh3b3JraW5nIGNvcHkpCkBAIC00OSw4ICs0
OSw4IEBAIG5hbWVzcGFjZSBKU0MgewogCiAgICAgcHJpdmF0ZToKICAgICAgICAgTnVtYmVyUHJv
dG90eXBlKEV4ZWNTdGF0ZSosIFN0cnVjdHVyZSopOwotICAgICAgICBzdGF0aWMgYm9vbCBnZXRP
d25Qcm9wZXJ0eVNsb3QoSlNDZWxsKiwgRXhlY1N0YXRlKiwgY29uc3QgSWRlbnRpZmllciYsIFBy
b3BlcnR5U2xvdCYpOwotICAgICAgICBzdGF0aWMgYm9vbCBnZXRPd25Qcm9wZXJ0eURlc2NyaXB0
b3IoSlNPYmplY3QqLCBFeGVjU3RhdGUqLCBjb25zdCBJZGVudGlmaWVyJiwgUHJvcGVydHlEZXNj
cmlwdG9yJik7CisgICAgICAgIHN0YXRpYyBib29sIGdldE93blByb3BlcnR5U2xvdChKU0NlbGwq
LCBFeGVjU3RhdGUqLCBQcm9wZXJ0eU5hbWUsIFByb3BlcnR5U2xvdCYpOworICAgICAgICBzdGF0
aWMgYm9vbCBnZXRPd25Qcm9wZXJ0eURlc2NyaXB0b3IoSlNPYmplY3QqLCBFeGVjU3RhdGUqLCBQ
cm9wZXJ0eU5hbWUsIFByb3BlcnR5RGVzY3JpcHRvciYpOwogICAgIH07CiAKIH0gLy8gbmFtZXNw
YWNlIEpTQwpJbmRleDogU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvT2JqZWN0Q29uc3Ry
dWN0b3IuY3BwCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL09i
amVjdENvbnN0cnVjdG9yLmNwcAkocmV2aXNpb24gMTE2NjY3KQorKysgU291cmNlL0phdmFTY3Jp
cHRDb3JlL3J1bnRpbWUvT2JqZWN0Q29uc3RydWN0b3IuY3BwCSh3b3JraW5nIGNvcHkpCkBAIC04
NCwxOSArODQsMTkgQEAgT2JqZWN0Q29uc3RydWN0b3I6Ok9iamVjdENvbnN0cnVjdG9yKEpTRwog
CiB2b2lkIE9iamVjdENvbnN0cnVjdG9yOjpmaW5pc2hDcmVhdGlvbihFeGVjU3RhdGUqIGV4ZWMs
IE9iamVjdFByb3RvdHlwZSogb2JqZWN0UHJvdG90eXBlKQogewotICAgIEJhc2U6OmZpbmlzaENy
ZWF0aW9uKGV4ZWMtPmdsb2JhbERhdGEoKSwgSWRlbnRpZmllcihleGVjLCAiT2JqZWN0IikpOwor
ICAgIEJhc2U6OmZpbmlzaENyZWF0aW9uKGV4ZWMtPmdsb2JhbERhdGEoKSwgSWRlbnRpZmllcihl
eGVjLCAiT2JqZWN0IikudXN0cmluZygpKTsKICAgICAvLyBFQ01BIDE1LjIuMy4xCiAgICAgcHV0
RGlyZWN0V2l0aG91dFRyYW5zaXRpb24oZXhlYy0+Z2xvYmFsRGF0YSgpLCBleGVjLT5wcm9wZXJ0
eU5hbWVzKCkucHJvdG90eXBlLCBvYmplY3RQcm90b3R5cGUsIERvbnRFbnVtIHwgRG9udERlbGV0
ZSB8IFJlYWRPbmx5KTsKICAgICAvLyBuby4gb2YgYXJndW1lbnRzIGZvciBjb25zdHJ1Y3Rvcgog
ICAgIHB1dERpcmVjdFdpdGhvdXRUcmFuc2l0aW9uKGV4ZWMtPmdsb2JhbERhdGEoKSwgZXhlYy0+
cHJvcGVydHlOYW1lcygpLmxlbmd0aCwganNOdW1iZXIoMSksIFJlYWRPbmx5IHwgRG9udEVudW0g
fCBEb250RGVsZXRlKTsKIH0KIAotYm9vbCBPYmplY3RDb25zdHJ1Y3Rvcjo6Z2V0T3duUHJvcGVy
dHlTbG90KEpTQ2VsbCogY2VsbCwgRXhlY1N0YXRlKiBleGVjLCBjb25zdCBJZGVudGlmaWVyJiBw
cm9wZXJ0eU5hbWUsIFByb3BlcnR5U2xvdCAmc2xvdCkKK2Jvb2wgT2JqZWN0Q29uc3RydWN0b3I6
OmdldE93blByb3BlcnR5U2xvdChKU0NlbGwqIGNlbGwsIEV4ZWNTdGF0ZSogZXhlYywgUHJvcGVy
dHlOYW1lIHByb3BlcnR5TmFtZSwgUHJvcGVydHlTbG90ICZzbG90KQogewogICAgIHJldHVybiBn
ZXRTdGF0aWNGdW5jdGlvblNsb3Q8SlNPYmplY3Q+KGV4ZWMsIEV4ZWNTdGF0ZTo6b2JqZWN0Q29u
c3RydWN0b3JUYWJsZShleGVjKSwganNDYXN0PE9iamVjdENvbnN0cnVjdG9yKj4oY2VsbCksIHBy
b3BlcnR5TmFtZSwgc2xvdCk7CiB9CiAKLWJvb2wgT2JqZWN0Q29uc3RydWN0b3I6OmdldE93blBy
b3BlcnR5RGVzY3JpcHRvcihKU09iamVjdCogb2JqZWN0LCBFeGVjU3RhdGUqIGV4ZWMsIGNvbnN0
IElkZW50aWZpZXImIHByb3BlcnR5TmFtZSwgUHJvcGVydHlEZXNjcmlwdG9yJiBkZXNjcmlwdG9y
KQorYm9vbCBPYmplY3RDb25zdHJ1Y3Rvcjo6Z2V0T3duUHJvcGVydHlEZXNjcmlwdG9yKEpTT2Jq
ZWN0KiBvYmplY3QsIEV4ZWNTdGF0ZSogZXhlYywgUHJvcGVydHlOYW1lIHByb3BlcnR5TmFtZSwg
UHJvcGVydHlEZXNjcmlwdG9yJiBkZXNjcmlwdG9yKQogewogICAgIHJldHVybiBnZXRTdGF0aWNG
dW5jdGlvbkRlc2NyaXB0b3I8SlNPYmplY3Q+KGV4ZWMsIEV4ZWNTdGF0ZTo6b2JqZWN0Q29uc3Ry
dWN0b3JUYWJsZShleGVjKSwganNDYXN0PE9iamVjdENvbnN0cnVjdG9yKj4ob2JqZWN0KSwgcHJv
cGVydHlOYW1lLCBkZXNjcmlwdG9yKTsKIH0KSW5kZXg6IFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9y
dW50aW1lL09iamVjdENvbnN0cnVjdG9yLmgKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL0phdmFTY3Jp
cHRDb3JlL3J1bnRpbWUvT2JqZWN0Q29uc3RydWN0b3IuaAkocmV2aXNpb24gMTE2NjY3KQorKysg
U291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvT2JqZWN0Q29uc3RydWN0b3IuaAkod29ya2lu
ZyBjb3B5KQpAQCAtMzgsOCArMzgsOCBAQCBuYW1lc3BhY2UgSlNDIHsKICAgICAgICAgICAgIHJl
dHVybiBjb25zdHJ1Y3RvcjsKICAgICAgICAgfQogCi0gICAgICAgIHN0YXRpYyBib29sIGdldE93
blByb3BlcnR5U2xvdChKU0NlbGwqLCBFeGVjU3RhdGUqLCBjb25zdCBJZGVudGlmaWVyJiwgUHJv
cGVydHlTbG90Jik7Ci0gICAgICAgIHN0YXRpYyBib29sIGdldE93blByb3BlcnR5RGVzY3JpcHRv
cihKU09iamVjdCosIEV4ZWNTdGF0ZSosIGNvbnN0IElkZW50aWZpZXImLCBQcm9wZXJ0eURlc2Ny
aXB0b3ImKTsKKyAgICAgICAgc3RhdGljIGJvb2wgZ2V0T3duUHJvcGVydHlTbG90KEpTQ2VsbCos
IEV4ZWNTdGF0ZSosIFByb3BlcnR5TmFtZSwgUHJvcGVydHlTbG90Jik7CisgICAgICAgIHN0YXRp
YyBib29sIGdldE93blByb3BlcnR5RGVzY3JpcHRvcihKU09iamVjdCosIEV4ZWNTdGF0ZSosIFBy
b3BlcnR5TmFtZSwgUHJvcGVydHlEZXNjcmlwdG9yJik7CiAKICAgICAgICAgc3RhdGljIGNvbnN0
IENsYXNzSW5mbyBzX2luZm87CiAKSW5kZXg6IFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1l
L09iamVjdFByb3RvdHlwZS5jcHAKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL0phdmFTY3JpcHRDb3Jl
L3J1bnRpbWUvT2JqZWN0UHJvdG90eXBlLmNwcAkocmV2aXNpb24gMTE2NjY3KQorKysgU291cmNl
L0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvT2JqZWN0UHJvdG90eXBlLmNwcAkod29ya2luZyBjb3B5
KQpAQCAtNzcsMjggKzc3LDIyIEBAIHZvaWQgT2JqZWN0UHJvdG90eXBlOjpmaW5pc2hDcmVhdGlv
bihKU0cKICAgICBBU1NFUlQoaW5oZXJpdHMoJnNfaW5mbykpOwogfQogCi12b2lkIE9iamVjdFBy
b3RvdHlwZTo6cHV0KEpTQ2VsbCogY2VsbCwgRXhlY1N0YXRlKiBleGVjLCBjb25zdCBJZGVudGlm
aWVyJiBwcm9wZXJ0eU5hbWUsIEpTVmFsdWUgdmFsdWUsIFB1dFByb3BlcnR5U2xvdCYgc2xvdCkK
K3ZvaWQgT2JqZWN0UHJvdG90eXBlOjpwdXQoSlNDZWxsKiBjZWxsLCBFeGVjU3RhdGUqIGV4ZWMs
IFByb3BlcnR5TmFtZSBwcm9wZXJ0eU5hbWUsIEpTVmFsdWUgdmFsdWUsIFB1dFByb3BlcnR5U2xv
dCYgc2xvdCkKIHsKICAgICBPYmplY3RQcm90b3R5cGUqIHRoaXNPYmplY3QgPSBqc0Nhc3Q8T2Jq
ZWN0UHJvdG90eXBlKj4oY2VsbCk7CiAgICAgQmFzZTo6cHV0KGNlbGwsIGV4ZWMsIHByb3BlcnR5
TmFtZSwgdmFsdWUsIHNsb3QpOwogCi0gICAgaWYgKHRoaXNPYmplY3QtPm1faGFzTm9Qcm9wZXJ0
aWVzV2l0aFVJbnQzMk5hbWVzKSB7Ci0gICAgICAgIGJvb2wgaXNVSW50MzI7Ci0gICAgICAgIHBy
b3BlcnR5TmFtZS50b1VJbnQzMihpc1VJbnQzMik7Ci0gICAgICAgIHRoaXNPYmplY3QtPm1faGFz
Tm9Qcm9wZXJ0aWVzV2l0aFVJbnQzMk5hbWVzID0gIWlzVUludDMyOwotICAgIH0KKyAgICBpZiAo
dGhpc09iamVjdC0+bV9oYXNOb1Byb3BlcnRpZXNXaXRoVUludDMyTmFtZXMgJiYgcHJvcGVydHlO
YW1lLmFzSW5kZXgoKSAhPSBQcm9wZXJ0eU5hbWU6Ok5vdEFuSW5kZXgpCisgICAgICAgIHRoaXNP
YmplY3QtPm1faGFzTm9Qcm9wZXJ0aWVzV2l0aFVJbnQzMk5hbWVzID0gZmFsc2U7CiB9CiAKLWJv
b2wgT2JqZWN0UHJvdG90eXBlOjpkZWZpbmVPd25Qcm9wZXJ0eShKU09iamVjdCogb2JqZWN0LCBF
eGVjU3RhdGUqIGV4ZWMsIGNvbnN0IElkZW50aWZpZXImIHByb3BlcnR5TmFtZSwgUHJvcGVydHlE
ZXNjcmlwdG9yJiBkZXNjcmlwdG9yLCBib29sIHNob3VsZFRocm93KQorYm9vbCBPYmplY3RQcm90
b3R5cGU6OmRlZmluZU93blByb3BlcnR5KEpTT2JqZWN0KiBvYmplY3QsIEV4ZWNTdGF0ZSogZXhl
YywgUHJvcGVydHlOYW1lIHByb3BlcnR5TmFtZSwgUHJvcGVydHlEZXNjcmlwdG9yJiBkZXNjcmlw
dG9yLCBib29sIHNob3VsZFRocm93KQogewogICAgIE9iamVjdFByb3RvdHlwZSogdGhpc09iamVj
dCA9IGpzQ2FzdDxPYmplY3RQcm90b3R5cGUqPihvYmplY3QpOwogICAgIGJvb2wgcmVzdWx0ID0g
QmFzZTo6ZGVmaW5lT3duUHJvcGVydHkob2JqZWN0LCBleGVjLCBwcm9wZXJ0eU5hbWUsIGRlc2Ny
aXB0b3IsIHNob3VsZFRocm93KTsKIAotICAgIGlmICh0aGlzT2JqZWN0LT5tX2hhc05vUHJvcGVy
dGllc1dpdGhVSW50MzJOYW1lcykgewotICAgICAgICBib29sIGlzVUludDMyOwotICAgICAgICBw
cm9wZXJ0eU5hbWUudG9VSW50MzIoaXNVSW50MzIpOwotICAgICAgICB0aGlzT2JqZWN0LT5tX2hh
c05vUHJvcGVydGllc1dpdGhVSW50MzJOYW1lcyA9ICFpc1VJbnQzMjsKLSAgICB9CisgICAgaWYg
KHRoaXNPYmplY3QtPm1faGFzTm9Qcm9wZXJ0aWVzV2l0aFVJbnQzMk5hbWVzICYmIHByb3BlcnR5
TmFtZS5hc0luZGV4KCkgIT0gUHJvcGVydHlOYW1lOjpOb3RBbkluZGV4KQorICAgICAgICB0aGlz
T2JqZWN0LT5tX2hhc05vUHJvcGVydGllc1dpdGhVSW50MzJOYW1lcyA9IGZhbHNlOwogCiAgICAg
cmV0dXJuIHJlc3VsdDsKIH0KQEAgLTExMSwxMiArMTA1LDEyIEBAIGJvb2wgT2JqZWN0UHJvdG90
eXBlOjpnZXRPd25Qcm9wZXJ0eVNsb3QKICAgICByZXR1cm4gQmFzZTo6Z2V0T3duUHJvcGVydHlT
bG90QnlJbmRleCh0aGlzT2JqZWN0LCBleGVjLCBwcm9wZXJ0eU5hbWUsIHNsb3QpOwogfQogCi1i
b29sIE9iamVjdFByb3RvdHlwZTo6Z2V0T3duUHJvcGVydHlTbG90KEpTQ2VsbCogY2VsbCwgRXhl
Y1N0YXRlKiBleGVjLCBjb25zdCBJZGVudGlmaWVyJiBwcm9wZXJ0eU5hbWUsIFByb3BlcnR5U2xv
dCAmc2xvdCkKK2Jvb2wgT2JqZWN0UHJvdG90eXBlOjpnZXRPd25Qcm9wZXJ0eVNsb3QoSlNDZWxs
KiBjZWxsLCBFeGVjU3RhdGUqIGV4ZWMsIFByb3BlcnR5TmFtZSBwcm9wZXJ0eU5hbWUsIFByb3Bl
cnR5U2xvdCAmc2xvdCkKIHsKICAgICByZXR1cm4gZ2V0U3RhdGljRnVuY3Rpb25TbG90PEpTTm9u
RmluYWxPYmplY3Q+KGV4ZWMsIEV4ZWNTdGF0ZTo6b2JqZWN0UHJvdG90eXBlVGFibGUoZXhlYyks
IGpzQ2FzdDxPYmplY3RQcm90b3R5cGUqPihjZWxsKSwgcHJvcGVydHlOYW1lLCBzbG90KTsKIH0K
IAotYm9vbCBPYmplY3RQcm90b3R5cGU6OmdldE93blByb3BlcnR5RGVzY3JpcHRvcihKU09iamVj
dCogb2JqZWN0LCBFeGVjU3RhdGUqIGV4ZWMsIGNvbnN0IElkZW50aWZpZXImIHByb3BlcnR5TmFt
ZSwgUHJvcGVydHlEZXNjcmlwdG9yJiBkZXNjcmlwdG9yKQorYm9vbCBPYmplY3RQcm90b3R5cGU6
OmdldE93blByb3BlcnR5RGVzY3JpcHRvcihKU09iamVjdCogb2JqZWN0LCBFeGVjU3RhdGUqIGV4
ZWMsIFByb3BlcnR5TmFtZSBwcm9wZXJ0eU5hbWUsIFByb3BlcnR5RGVzY3JpcHRvciYgZGVzY3Jp
cHRvcikKIHsKICAgICByZXR1cm4gZ2V0U3RhdGljRnVuY3Rpb25EZXNjcmlwdG9yPEpTTm9uRmlu
YWxPYmplY3Q+KGV4ZWMsIEV4ZWNTdGF0ZTo6b2JqZWN0UHJvdG90eXBlVGFibGUoZXhlYyksIGpz
Q2FzdDxPYmplY3RQcm90b3R5cGUqPihvYmplY3QpLCBwcm9wZXJ0eU5hbWUsIGRlc2NyaXB0b3Ip
OwogfQpJbmRleDogU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvT2JqZWN0UHJvdG90eXBl
LmgKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PQotLS0gU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvT2JqZWN0UHJv
dG90eXBlLmgJKHJldmlzaW9uIDExNjY2NykKKysrIFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50
aW1lL09iamVjdFByb3RvdHlwZS5oCSh3b3JraW5nIGNvcHkpCkBAIC01MCwxMiArNTAsMTIgQEAg
bmFtZXNwYWNlIEpTQyB7CiAKICAgICBwcml2YXRlOgogICAgICAgICBPYmplY3RQcm90b3R5cGUo
RXhlY1N0YXRlKiwgU3RydWN0dXJlKik7Ci0gICAgICAgIHN0YXRpYyB2b2lkIHB1dChKU0NlbGwq
LCBFeGVjU3RhdGUqLCBjb25zdCBJZGVudGlmaWVyJiwgSlNWYWx1ZSwgUHV0UHJvcGVydHlTbG90
Jik7Ci0gICAgICAgIHN0YXRpYyBib29sIGRlZmluZU93blByb3BlcnR5KEpTT2JqZWN0KiwgRXhl
Y1N0YXRlKiwgY29uc3QgSWRlbnRpZmllciYgcHJvcGVydHlOYW1lLCBQcm9wZXJ0eURlc2NyaXB0
b3ImLCBib29sIHNob3VsZFRocm93KTsKKyAgICAgICAgc3RhdGljIHZvaWQgcHV0KEpTQ2VsbCos
IEV4ZWNTdGF0ZSosIFByb3BlcnR5TmFtZSwgSlNWYWx1ZSwgUHV0UHJvcGVydHlTbG90Jik7Cisg
ICAgICAgIHN0YXRpYyBib29sIGRlZmluZU93blByb3BlcnR5KEpTT2JqZWN0KiwgRXhlY1N0YXRl
KiwgUHJvcGVydHlOYW1lLCBQcm9wZXJ0eURlc2NyaXB0b3ImLCBib29sIHNob3VsZFRocm93KTsK
IAotICAgICAgICBzdGF0aWMgYm9vbCBnZXRPd25Qcm9wZXJ0eVNsb3QoSlNDZWxsKiwgRXhlY1N0
YXRlKiwgY29uc3QgSWRlbnRpZmllciYsIFByb3BlcnR5U2xvdCYpOworICAgICAgICBzdGF0aWMg
Ym9vbCBnZXRPd25Qcm9wZXJ0eVNsb3QoSlNDZWxsKiwgRXhlY1N0YXRlKiwgUHJvcGVydHlOYW1l
LCBQcm9wZXJ0eVNsb3QmKTsKICAgICAgICAgc3RhdGljIGJvb2wgZ2V0T3duUHJvcGVydHlTbG90
QnlJbmRleChKU0NlbGwqLCBFeGVjU3RhdGUqLCB1bnNpZ25lZCBwcm9wZXJ0eU5hbWUsIFByb3Bl
cnR5U2xvdCYpOwotICAgICAgICBzdGF0aWMgYm9vbCBnZXRPd25Qcm9wZXJ0eURlc2NyaXB0b3Io
SlNPYmplY3QqLCBFeGVjU3RhdGUqLCBjb25zdCBJZGVudGlmaWVyJiwgUHJvcGVydHlEZXNjcmlw
dG9yJik7CisgICAgICAgIHN0YXRpYyBib29sIGdldE93blByb3BlcnR5RGVzY3JpcHRvcihKU09i
amVjdCosIEV4ZWNTdGF0ZSosIFByb3BlcnR5TmFtZSwgUHJvcGVydHlEZXNjcmlwdG9yJik7CiAK
ICAgICAgICAgYm9vbCBtX2hhc05vUHJvcGVydGllc1dpdGhVSW50MzJOYW1lczsKICAgICB9OwpJ
bmRleDogU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvUHJvcGVydHlOYW1lLmgKPT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PQotLS0gU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvUHJvcGVydHlOYW1lLmgJKHJl
dmlzaW9uIDApCisrKyBTb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9Qcm9wZXJ0eU5hbWUu
aAkocmV2aXNpb24gMCkKQEAgLTAsMCArMSwxMzEgQEAKKy8qCisgKiBDb3B5cmlnaHQgKEMpIDIw
MTIgQXBwbGUgSW5jLiBBbGwgcmlnaHRzIHJlc2VydmVkLgorICoKKyAqIFJlZGlzdHJpYnV0aW9u
IGFuZCB1c2UgaW4gc291cmNlIGFuZCBiaW5hcnkgZm9ybXMsIHdpdGggb3Igd2l0aG91dAorICog
bW9kaWZpY2F0aW9uLCBhcmUgcGVybWl0dGVkIHByb3ZpZGVkIHRoYXQgdGhlIGZvbGxvd2luZyBj
b25kaXRpb25zCisgKiBhcmUgbWV0OgorICogMS4gUmVkaXN0cmlidXRpb25zIG9mIHNvdXJjZSBj
b2RlIG11c3QgcmV0YWluIHRoZSBhYm92ZSBjb3B5cmlnaHQKKyAqICAgIG5vdGljZSwgdGhpcyBs
aXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lci4KKyAqIDIuIFJl
ZGlzdHJpYnV0aW9ucyBpbiBiaW5hcnkgZm9ybSBtdXN0IHJlcHJvZHVjZSB0aGUgYWJvdmUgY29w
eXJpZ2h0CisgKiAgICBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9s
bG93aW5nIGRpc2NsYWltZXIgaW4gdGhlCisgKiAgICBkb2N1bWVudGF0aW9uIGFuZC9vciBvdGhl
ciBtYXRlcmlhbHMgcHJvdmlkZWQgd2l0aCB0aGUgZGlzdHJpYnV0aW9uLgorICoKKyAqIFRISVMg
U09GVFdBUkUgSVMgUFJPVklERUQgQlkgQVBQTEUgSU5DLiBBTkQgSVRTIENPTlRSSUJVVE9SUyBg
YEFTIElTJycKKyAqIEFORCBBTlkgRVhQUkVTUyBPUiBJTVBMSUVEIFdBUlJBTlRJRVMsIElOQ0xV
RElORywgQlVUIE5PVCBMSU1JVEVEIFRPLAorICogVEhFIElNUExJRUQgV0FSUkFOVElFUyBPRiBN
RVJDSEFOVEFCSUxJVFkgQU5EIEZJVE5FU1MgRk9SIEEgUEFSVElDVUxBUgorICogUFVSUE9TRSBB
UkUgRElTQ0xBSU1FRC4gSU4gTk8gRVZFTlQgU0hBTEwgQVBQTEUgSU5DLiBPUiBJVFMgQ09OVFJJ
QlVUT1JTCisgKiBCRSBMSUFCTEUgRk9SIEFOWSBESVJFQ1QsIElORElSRUNULCBJTkNJREVOVEFM
LCBTUEVDSUFMLCBFWEVNUExBUlksIE9SCisgKiBDT05TRVFVRU5USUFMIERBTUFHRVMgKElOQ0xV
RElORywgQlVUIE5PVCBMSU1JVEVEIFRPLCBQUk9DVVJFTUVOVCBPRgorICogU1VCU1RJVFVURSBH
T09EUyBPUiBTRVJWSUNFUzsgTE9TUyBPRiBVU0UsIERBVEEsIE9SIFBST0ZJVFM7IE9SIEJVU0lO
RVNTCisgKiBJTlRFUlJVUFRJT04pIEhPV0VWRVIgQ0FVU0VEIEFORCBPTiBBTlkgVEhFT1JZIE9G
IExJQUJJTElUWSwgV0hFVEhFUiBJTgorICogQ09OVFJBQ1QsIFNUUklDVCBMSUFCSUxJVFksIE9S
IFRPUlQgKElOQ0xVRElORyBORUdMSUdFTkNFIE9SIE9USEVSV0lTRSkKKyAqIEFSSVNJTkcgSU4g
QU5ZIFdBWSBPVVQgT0YgVEhFIFVTRSBPRiBUSElTIFNPRlRXQVJFLCBFVkVOIElGIEFEVklTRUQg
T0YKKyAqIFRIRSBQT1NTSUJJTElUWSBPRiBTVUNIIERBTUFHRS4KKyAqLworCisjaWZuZGVmIFBy
b3BlcnR5TmFtZV9oCisjZGVmaW5lIFByb3BlcnR5TmFtZV9oCisKKyNpbmNsdWRlICJJZGVudGlm
aWVyLmgiCisKK25hbWVzcGFjZSBKU0MgeworCit0ZW1wbGF0ZSA8dHlwZW5hbWUgQ2hhclR5cGU+
CitBTFdBWVNfSU5MSU5FIHVpbnQzMl90IHRvVUludDMyRnJvbUNoYXJhY3RlcnMoY29uc3QgQ2hh
clR5cGUqIGNoYXJhY3RlcnMsIHVuc2lnbmVkIGxlbmd0aCkKK3sKKyAgICAvLyBBbiBlbXB0eSBz
dHJpbmcgaXMgbm90IGEgbnVtYmVyLgorICAgIGlmICghbGVuZ3RoKQorICAgICAgICByZXR1cm4g
MDsKKworICAgIC8vIEdldCB0aGUgZmlyc3QgY2hhcmFjdGVyLCB0dXJuaW5nIGl0IGludG8gYSBk
aWdpdC4KKyAgICB1aW50MzJfdCB2YWx1ZSA9IGNoYXJhY3RlcnNbMF0gLSAnMCc7CisgICAgaWYg
KHZhbHVlID4gOSkKKyAgICAgICAgcmV0dXJuIFVJTlRfTUFYOworICAgIAorICAgIC8vIENoZWNr
IGZvciBsZWFkaW5nIHplcm9zLiBJZiB0aGUgZmlyc3QgY2hhcmFjaGVyIGlzIDAsIHRoZW4gdGhl
CisgICAgLy8gbGVuZ3RoIG9mIHRoZSBzdHJpbmcgbXVzdCBiZSBvbmUgLSBlLmcuICIwNDIiIGlz
IG5vdCBlcXVhbCB0byAiNDIiLgorICAgIGlmICghdmFsdWUgJiYgbGVuZ3RoID4gMSkKKyAgICAg
ICAgcmV0dXJuIFVJTlRfTUFYOworICAgIAorICAgIHdoaWxlICgtLWxlbmd0aCkgeworICAgICAg
ICAvLyBNdWx0aXBseSB2YWx1ZSBieSAxMCwgY2hlY2tpbmcgZm9yIG92ZXJmbG93IG91dCBvZiAz
MiBiaXRzLgorICAgICAgICBpZiAodmFsdWUgPiAweEZGRkZGRkZGVSAvIDEwKQorICAgICAgICAg
ICAgcmV0dXJuIFVJTlRfTUFYOworICAgICAgICB2YWx1ZSAqPSAxMDsKKyAgICAgICAgCisgICAg
ICAgIC8vIEdldCB0aGUgbmV4dCBjaGFyYWN0ZXIsIHR1cm5pbmcgaXQgaW50byBhIGRpZ2l0Lgor
ICAgICAgICB1aW50MzJfdCBuZXdWYWx1ZSA9ICooKytjaGFyYWN0ZXJzKSAtICcwJzsKKyAgICAg
ICAgaWYgKG5ld1ZhbHVlID4gOSkKKyAgICAgICAgICAgIHJldHVybiBVSU5UX01BWDsKKyAgICAg
ICAgCisgICAgICAgIC8vIEFkZCBpbiB0aGUgb2xkIHZhbHVlLCBjaGVja2luZyBmb3Igb3ZlcmZs
b3cgb3V0IG9mIDMyIGJpdHMuCisgICAgICAgIG5ld1ZhbHVlICs9IHZhbHVlOworICAgICAgICBp
ZiAobmV3VmFsdWUgPCB2YWx1ZSkKKyAgICAgICAgICAgIHJldHVybiBVSU5UX01BWDsKKyAgICAg
ICAgdmFsdWUgPSBuZXdWYWx1ZTsKKyAgICB9CisgICAgCisgICAgcmV0dXJuIHZhbHVlOworfQor
CitBTFdBWVNfSU5MSU5FIHVpbnQzMl90IHRvVUludDMyRnJvbVN0cmluZ0ltcGwoU3RyaW5nSW1w
bCogaW1wbCkKK3sKKyAgICBpZiAoaW1wbC0+aXM4Qml0KCkpCisgICAgICAgIHJldHVybiB0b1VJ
bnQzMkZyb21DaGFyYWN0ZXJzKGltcGwtPmNoYXJhY3RlcnM4KCksIGltcGwtPmxlbmd0aCgpKTsK
KyAgICByZXR1cm4gdG9VSW50MzJGcm9tQ2hhcmFjdGVycyhpbXBsLT5jaGFyYWN0ZXJzMTYoKSwg
aW1wbC0+bGVuZ3RoKCkpOworfQorCitjbGFzcyBQcm9wZXJ0eU5hbWUgeworcHVibGljOgorICAg
IFByb3BlcnR5TmFtZShjb25zdCBJZGVudGlmaWVyJiBwcm9wZXJ0eU5hbWUpCisgICAgICAgIDog
bV9pbXBsKHByb3BlcnR5TmFtZS5pbXBsKCkpCisgICAgeworICAgICAgICBBU1NFUlQoIXByb3Bl
cnR5TmFtZS5pc051bGwoKSk7CisgICAgfQorCisgICAgU3RyaW5nSW1wbCogaW1wbCgpIGNvbnN0
IHsgcmV0dXJuIG1faW1wbDsgfQorICAgIFVTdHJpbmcgdXN0cmluZygpIGNvbnN0IHsgcmV0dXJu
IG1faW1wbDsgfQorCisgICAgc3RhdGljIGNvbnN0IHVpbnQzMl90IE5vdEFuSW5kZXggPSBVSU5U
X01BWDsKKyAgICB1aW50MzJfdCBhc0luZGV4KCkKKyAgICB7CisgICAgICAgIHJldHVybiB0b1VJ
bnQzMkZyb21TdHJpbmdJbXBsKG1faW1wbCk7CisgICAgfQorCitwcml2YXRlOgorICAgIFN0cmlu
Z0ltcGwqIG1faW1wbDsKK307CisKK2lubGluZSBib29sIG9wZXJhdG9yPT0oUHJvcGVydHlOYW1l
IGEsIGNvbnN0IElkZW50aWZpZXImIGIpCit7CisgICAgcmV0dXJuIGEuaW1wbCgpID09IGIuaW1w
bCgpOworfQorCitpbmxpbmUgYm9vbCBvcGVyYXRvcj09KGNvbnN0IElkZW50aWZpZXImIGEsIFBy
b3BlcnR5TmFtZSBiKQoreworICAgIHJldHVybiBhLmltcGwoKSA9PSBiLmltcGwoKTsKK30KKwor
aW5saW5lIGJvb2wgb3BlcmF0b3I9PShQcm9wZXJ0eU5hbWUgYSwgUHJvcGVydHlOYW1lIGIpCit7
CisgICAgcmV0dXJuIGEuaW1wbCgpID09IGIuaW1wbCgpOworfQorCitpbmxpbmUgYm9vbCBvcGVy
YXRvciE9KFByb3BlcnR5TmFtZSBhLCBjb25zdCBJZGVudGlmaWVyJiBiKQoreworICAgIHJldHVy
biBhLmltcGwoKSAhPSBiLmltcGwoKTsKK30KKworaW5saW5lIGJvb2wgb3BlcmF0b3IhPShjb25z
dCBJZGVudGlmaWVyJiBhLCBQcm9wZXJ0eU5hbWUgYikKK3sKKyAgICByZXR1cm4gYS5pbXBsKCkg
IT0gYi5pbXBsKCk7Cit9CisKK2lubGluZSBib29sIG9wZXJhdG9yIT0oUHJvcGVydHlOYW1lIGEs
IFByb3BlcnR5TmFtZSBiKQoreworICAgIHJldHVybiBhLmltcGwoKSAhPSBiLmltcGwoKTsKK30K
KworfQorCisjZW5kaWYKSW5kZXg6IFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL1Byb3Bl
cnR5U2xvdC5oCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL1By
b3BlcnR5U2xvdC5oCShyZXZpc2lvbiAxMTY2NjcpCisrKyBTb3VyY2UvSmF2YVNjcmlwdENvcmUv
cnVudGltZS9Qcm9wZXJ0eVNsb3QuaAkod29ya2luZyBjb3B5KQpAQCAtMjEsOCArMjEsOCBAQAog
I2lmbmRlZiBQcm9wZXJ0eVNsb3RfaAogI2RlZmluZSBQcm9wZXJ0eVNsb3RfaAogCi0jaW5jbHVk
ZSAiSWRlbnRpZmllci5oIgogI2luY2x1ZGUgIkpTVmFsdWUuaCIKKyNpbmNsdWRlICJQcm9wZXJ0
eU5hbWUuaCIKICNpbmNsdWRlICJSZWdpc3Rlci5oIgogI2luY2x1ZGUgPHd0Zi9Bc3NlcnRpb25z
Lmg+CiAjaW5jbHVkZSA8d3RmL05vdEZvdW5kLmg+CkBAIC02MSwxMCArNjEsMTAgQEAgbmFtZXNw
YWNlIEpTQyB7CiAgICAgICAgICAgICBjbGVhclZhbHVlKCk7CiAgICAgICAgIH0KIAotICAgICAg
ICB0eXBlZGVmIEpTVmFsdWUgKCpHZXRWYWx1ZUZ1bmMpKEV4ZWNTdGF0ZSosIEpTVmFsdWUgc2xv
dEJhc2UsIGNvbnN0IElkZW50aWZpZXImKTsKKyAgICAgICAgdHlwZWRlZiBKU1ZhbHVlICgqR2V0
VmFsdWVGdW5jKShFeGVjU3RhdGUqLCBKU1ZhbHVlIHNsb3RCYXNlLCBQcm9wZXJ0eU5hbWUpOwog
ICAgICAgICB0eXBlZGVmIEpTVmFsdWUgKCpHZXRJbmRleFZhbHVlRnVuYykoRXhlY1N0YXRlKiwg
SlNWYWx1ZSBzbG90QmFzZSwgdW5zaWduZWQpOwogCi0gICAgICAgIEpTVmFsdWUgZ2V0VmFsdWUo
RXhlY1N0YXRlKiBleGVjLCBjb25zdCBJZGVudGlmaWVyJiBwcm9wZXJ0eU5hbWUpIGNvbnN0Cisg
ICAgICAgIEpTVmFsdWUgZ2V0VmFsdWUoRXhlY1N0YXRlKiBleGVjLCBQcm9wZXJ0eU5hbWUgcHJv
cGVydHlOYW1lKSBjb25zdAogICAgICAgICB7CiAgICAgICAgICAgICBpZiAobV9nZXRWYWx1ZSA9
PSBKU0NfVkFMVUVfTUFSS0VSKQogICAgICAgICAgICAgICAgIHJldHVybiBtX3ZhbHVlOwpJbmRl
eDogU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvUmVnRXhwQ29uc3RydWN0b3IuY3BwCj09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT0KLS0tIFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL1JlZ0V4cENvbnN0cnVj
dG9yLmNwcAkocmV2aXNpb24gMTE2NjY3KQorKysgU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRp
bWUvUmVnRXhwQ29uc3RydWN0b3IuY3BwCSh3b3JraW5nIGNvcHkpCkBAIC0yOCwyMSArMjgsMjEg
QEAKIAogbmFtZXNwYWNlIEpTQyB7CiAKLXN0YXRpYyBKU1ZhbHVlIHJlZ0V4cENvbnN0cnVjdG9y
SW5wdXQoRXhlY1N0YXRlKiwgSlNWYWx1ZSwgY29uc3QgSWRlbnRpZmllciYpOwotc3RhdGljIEpT
VmFsdWUgcmVnRXhwQ29uc3RydWN0b3JNdWx0aWxpbmUoRXhlY1N0YXRlKiwgSlNWYWx1ZSwgY29u
c3QgSWRlbnRpZmllciYpOwotc3RhdGljIEpTVmFsdWUgcmVnRXhwQ29uc3RydWN0b3JMYXN0TWF0
Y2goRXhlY1N0YXRlKiwgSlNWYWx1ZSwgY29uc3QgSWRlbnRpZmllciYpOwotc3RhdGljIEpTVmFs
dWUgcmVnRXhwQ29uc3RydWN0b3JMYXN0UGFyZW4oRXhlY1N0YXRlKiwgSlNWYWx1ZSwgY29uc3Qg
SWRlbnRpZmllciYpOwotc3RhdGljIEpTVmFsdWUgcmVnRXhwQ29uc3RydWN0b3JMZWZ0Q29udGV4
dChFeGVjU3RhdGUqLCBKU1ZhbHVlLCBjb25zdCBJZGVudGlmaWVyJik7Ci1zdGF0aWMgSlNWYWx1
ZSByZWdFeHBDb25zdHJ1Y3RvclJpZ2h0Q29udGV4dChFeGVjU3RhdGUqLCBKU1ZhbHVlLCBjb25z
dCBJZGVudGlmaWVyJik7Ci1zdGF0aWMgSlNWYWx1ZSByZWdFeHBDb25zdHJ1Y3RvckRvbGxhcjEo
RXhlY1N0YXRlKiwgSlNWYWx1ZSwgY29uc3QgSWRlbnRpZmllciYpOwotc3RhdGljIEpTVmFsdWUg
cmVnRXhwQ29uc3RydWN0b3JEb2xsYXIyKEV4ZWNTdGF0ZSosIEpTVmFsdWUsIGNvbnN0IElkZW50
aWZpZXImKTsKLXN0YXRpYyBKU1ZhbHVlIHJlZ0V4cENvbnN0cnVjdG9yRG9sbGFyMyhFeGVjU3Rh
dGUqLCBKU1ZhbHVlLCBjb25zdCBJZGVudGlmaWVyJik7Ci1zdGF0aWMgSlNWYWx1ZSByZWdFeHBD
b25zdHJ1Y3RvckRvbGxhcjQoRXhlY1N0YXRlKiwgSlNWYWx1ZSwgY29uc3QgSWRlbnRpZmllciYp
Owotc3RhdGljIEpTVmFsdWUgcmVnRXhwQ29uc3RydWN0b3JEb2xsYXI1KEV4ZWNTdGF0ZSosIEpT
VmFsdWUsIGNvbnN0IElkZW50aWZpZXImKTsKLXN0YXRpYyBKU1ZhbHVlIHJlZ0V4cENvbnN0cnVj
dG9yRG9sbGFyNihFeGVjU3RhdGUqLCBKU1ZhbHVlLCBjb25zdCBJZGVudGlmaWVyJik7Ci1zdGF0
aWMgSlNWYWx1ZSByZWdFeHBDb25zdHJ1Y3RvckRvbGxhcjcoRXhlY1N0YXRlKiwgSlNWYWx1ZSwg
Y29uc3QgSWRlbnRpZmllciYpOwotc3RhdGljIEpTVmFsdWUgcmVnRXhwQ29uc3RydWN0b3JEb2xs
YXI4KEV4ZWNTdGF0ZSosIEpTVmFsdWUsIGNvbnN0IElkZW50aWZpZXImKTsKLXN0YXRpYyBKU1Zh
bHVlIHJlZ0V4cENvbnN0cnVjdG9yRG9sbGFyOShFeGVjU3RhdGUqLCBKU1ZhbHVlLCBjb25zdCBJ
ZGVudGlmaWVyJik7CitzdGF0aWMgSlNWYWx1ZSByZWdFeHBDb25zdHJ1Y3RvcklucHV0KEV4ZWNT
dGF0ZSosIEpTVmFsdWUsIFByb3BlcnR5TmFtZSk7CitzdGF0aWMgSlNWYWx1ZSByZWdFeHBDb25z
dHJ1Y3Rvck11bHRpbGluZShFeGVjU3RhdGUqLCBKU1ZhbHVlLCBQcm9wZXJ0eU5hbWUpOworc3Rh
dGljIEpTVmFsdWUgcmVnRXhwQ29uc3RydWN0b3JMYXN0TWF0Y2goRXhlY1N0YXRlKiwgSlNWYWx1
ZSwgUHJvcGVydHlOYW1lKTsKK3N0YXRpYyBKU1ZhbHVlIHJlZ0V4cENvbnN0cnVjdG9yTGFzdFBh
cmVuKEV4ZWNTdGF0ZSosIEpTVmFsdWUsIFByb3BlcnR5TmFtZSk7CitzdGF0aWMgSlNWYWx1ZSBy
ZWdFeHBDb25zdHJ1Y3RvckxlZnRDb250ZXh0KEV4ZWNTdGF0ZSosIEpTVmFsdWUsIFByb3BlcnR5
TmFtZSk7CitzdGF0aWMgSlNWYWx1ZSByZWdFeHBDb25zdHJ1Y3RvclJpZ2h0Q29udGV4dChFeGVj
U3RhdGUqLCBKU1ZhbHVlLCBQcm9wZXJ0eU5hbWUpOworc3RhdGljIEpTVmFsdWUgcmVnRXhwQ29u
c3RydWN0b3JEb2xsYXIxKEV4ZWNTdGF0ZSosIEpTVmFsdWUsIFByb3BlcnR5TmFtZSk7CitzdGF0
aWMgSlNWYWx1ZSByZWdFeHBDb25zdHJ1Y3RvckRvbGxhcjIoRXhlY1N0YXRlKiwgSlNWYWx1ZSwg
UHJvcGVydHlOYW1lKTsKK3N0YXRpYyBKU1ZhbHVlIHJlZ0V4cENvbnN0cnVjdG9yRG9sbGFyMyhF
eGVjU3RhdGUqLCBKU1ZhbHVlLCBQcm9wZXJ0eU5hbWUpOworc3RhdGljIEpTVmFsdWUgcmVnRXhw
Q29uc3RydWN0b3JEb2xsYXI0KEV4ZWNTdGF0ZSosIEpTVmFsdWUsIFByb3BlcnR5TmFtZSk7Citz
dGF0aWMgSlNWYWx1ZSByZWdFeHBDb25zdHJ1Y3RvckRvbGxhcjUoRXhlY1N0YXRlKiwgSlNWYWx1
ZSwgUHJvcGVydHlOYW1lKTsKK3N0YXRpYyBKU1ZhbHVlIHJlZ0V4cENvbnN0cnVjdG9yRG9sbGFy
NihFeGVjU3RhdGUqLCBKU1ZhbHVlLCBQcm9wZXJ0eU5hbWUpOworc3RhdGljIEpTVmFsdWUgcmVn
RXhwQ29uc3RydWN0b3JEb2xsYXI3KEV4ZWNTdGF0ZSosIEpTVmFsdWUsIFByb3BlcnR5TmFtZSk7
CitzdGF0aWMgSlNWYWx1ZSByZWdFeHBDb25zdHJ1Y3RvckRvbGxhcjgoRXhlY1N0YXRlKiwgSlNW
YWx1ZSwgUHJvcGVydHlOYW1lKTsKK3N0YXRpYyBKU1ZhbHVlIHJlZ0V4cENvbnN0cnVjdG9yRG9s
bGFyOShFeGVjU3RhdGUqLCBKU1ZhbHVlLCBQcm9wZXJ0eU5hbWUpOwogCiBzdGF0aWMgdm9pZCBz
ZXRSZWdFeHBDb25zdHJ1Y3RvcklucHV0KEV4ZWNTdGF0ZSosIEpTT2JqZWN0KiwgSlNWYWx1ZSk7
CiBzdGF0aWMgdm9pZCBzZXRSZWdFeHBDb25zdHJ1Y3Rvck11bHRpbGluZShFeGVjU3RhdGUqLCBK
U09iamVjdCosIEpTVmFsdWUpOwpAQCAtOTIsNyArOTIsNyBAQCBSZWdFeHBDb25zdHJ1Y3Rvcjo6
UmVnRXhwQ29uc3RydWN0b3IoSlNHCiAKIHZvaWQgUmVnRXhwQ29uc3RydWN0b3I6OmZpbmlzaENy
ZWF0aW9uKEV4ZWNTdGF0ZSogZXhlYywgUmVnRXhwUHJvdG90eXBlKiByZWdFeHBQcm90b3R5cGUp
CiB7Ci0gICAgQmFzZTo6ZmluaXNoQ3JlYXRpb24oZXhlYy0+Z2xvYmFsRGF0YSgpLCBJZGVudGlm
aWVyKGV4ZWMsICJSZWdFeHAiKSk7CisgICAgQmFzZTo6ZmluaXNoQ3JlYXRpb24oZXhlYy0+Z2xv
YmFsRGF0YSgpLCBJZGVudGlmaWVyKGV4ZWMsICJSZWdFeHAiKS51c3RyaW5nKCkpOwogICAgIEFT
U0VSVChpbmhlcml0cygmc19pbmZvKSk7CiAKICAgICAvLyBFQ01BIDE1LjEwLjUuMSBSZWdFeHAu
cHJvdG90eXBlCkBAIC0xNTQsOTIgKzE1NCw5MiBAQCBKU1ZhbHVlIFJlZ0V4cENvbnN0cnVjdG9y
OjpnZXRSaWdodENvbnRlCiAgICAgcmV0dXJuIG1fY2FjaGVkUmVzdWx0Lmxhc3RSZXN1bHQoZXhl
YywgdGhpcyktPnJpZ2h0Q29udGV4dChleGVjKTsKIH0KICAgICAKLWJvb2wgUmVnRXhwQ29uc3Ry
dWN0b3I6OmdldE93blByb3BlcnR5U2xvdChKU0NlbGwqIGNlbGwsIEV4ZWNTdGF0ZSogZXhlYywg
Y29uc3QgSWRlbnRpZmllciYgcHJvcGVydHlOYW1lLCBQcm9wZXJ0eVNsb3QmIHNsb3QpCitib29s
IFJlZ0V4cENvbnN0cnVjdG9yOjpnZXRPd25Qcm9wZXJ0eVNsb3QoSlNDZWxsKiBjZWxsLCBFeGVj
U3RhdGUqIGV4ZWMsIFByb3BlcnR5TmFtZSBwcm9wZXJ0eU5hbWUsIFByb3BlcnR5U2xvdCYgc2xv
dCkKIHsKICAgICByZXR1cm4gZ2V0U3RhdGljVmFsdWVTbG90PFJlZ0V4cENvbnN0cnVjdG9yLCBJ
bnRlcm5hbEZ1bmN0aW9uPihleGVjLCBFeGVjU3RhdGU6OnJlZ0V4cENvbnN0cnVjdG9yVGFibGUo
ZXhlYyksIGpzQ2FzdDxSZWdFeHBDb25zdHJ1Y3Rvcio+KGNlbGwpLCBwcm9wZXJ0eU5hbWUsIHNs
b3QpOwogfQogCi1ib29sIFJlZ0V4cENvbnN0cnVjdG9yOjpnZXRPd25Qcm9wZXJ0eURlc2NyaXB0
b3IoSlNPYmplY3QqIG9iamVjdCwgRXhlY1N0YXRlKiBleGVjLCBjb25zdCBJZGVudGlmaWVyJiBw
cm9wZXJ0eU5hbWUsIFByb3BlcnR5RGVzY3JpcHRvciYgZGVzY3JpcHRvcikKK2Jvb2wgUmVnRXhw
Q29uc3RydWN0b3I6OmdldE93blByb3BlcnR5RGVzY3JpcHRvcihKU09iamVjdCogb2JqZWN0LCBF
eGVjU3RhdGUqIGV4ZWMsIFByb3BlcnR5TmFtZSBwcm9wZXJ0eU5hbWUsIFByb3BlcnR5RGVzY3Jp
cHRvciYgZGVzY3JpcHRvcikKIHsKICAgICByZXR1cm4gZ2V0U3RhdGljVmFsdWVEZXNjcmlwdG9y
PFJlZ0V4cENvbnN0cnVjdG9yLCBJbnRlcm5hbEZ1bmN0aW9uPihleGVjLCBFeGVjU3RhdGU6OnJl
Z0V4cENvbnN0cnVjdG9yVGFibGUoZXhlYyksIGpzQ2FzdDxSZWdFeHBDb25zdHJ1Y3Rvcio+KG9i
amVjdCksIHByb3BlcnR5TmFtZSwgZGVzY3JpcHRvcik7CiB9CiAKLUpTVmFsdWUgcmVnRXhwQ29u
c3RydWN0b3JEb2xsYXIxKEV4ZWNTdGF0ZSogZXhlYywgSlNWYWx1ZSBzbG90QmFzZSwgY29uc3Qg
SWRlbnRpZmllciYpCitKU1ZhbHVlIHJlZ0V4cENvbnN0cnVjdG9yRG9sbGFyMShFeGVjU3RhdGUq
IGV4ZWMsIEpTVmFsdWUgc2xvdEJhc2UsIFByb3BlcnR5TmFtZSkKIHsKICAgICByZXR1cm4gYXNS
ZWdFeHBDb25zdHJ1Y3RvcihzbG90QmFzZSktPmdldEJhY2tyZWYoZXhlYywgMSk7CiB9CiAKLUpT
VmFsdWUgcmVnRXhwQ29uc3RydWN0b3JEb2xsYXIyKEV4ZWNTdGF0ZSogZXhlYywgSlNWYWx1ZSBz
bG90QmFzZSwgY29uc3QgSWRlbnRpZmllciYpCitKU1ZhbHVlIHJlZ0V4cENvbnN0cnVjdG9yRG9s
bGFyMihFeGVjU3RhdGUqIGV4ZWMsIEpTVmFsdWUgc2xvdEJhc2UsIFByb3BlcnR5TmFtZSkKIHsK
ICAgICByZXR1cm4gYXNSZWdFeHBDb25zdHJ1Y3RvcihzbG90QmFzZSktPmdldEJhY2tyZWYoZXhl
YywgMik7CiB9CiAKLUpTVmFsdWUgcmVnRXhwQ29uc3RydWN0b3JEb2xsYXIzKEV4ZWNTdGF0ZSog
ZXhlYywgSlNWYWx1ZSBzbG90QmFzZSwgY29uc3QgSWRlbnRpZmllciYpCitKU1ZhbHVlIHJlZ0V4
cENvbnN0cnVjdG9yRG9sbGFyMyhFeGVjU3RhdGUqIGV4ZWMsIEpTVmFsdWUgc2xvdEJhc2UsIFBy
b3BlcnR5TmFtZSkKIHsKICAgICByZXR1cm4gYXNSZWdFeHBDb25zdHJ1Y3RvcihzbG90QmFzZSkt
PmdldEJhY2tyZWYoZXhlYywgMyk7CiB9CiAKLUpTVmFsdWUgcmVnRXhwQ29uc3RydWN0b3JEb2xs
YXI0KEV4ZWNTdGF0ZSogZXhlYywgSlNWYWx1ZSBzbG90QmFzZSwgY29uc3QgSWRlbnRpZmllciYp
CitKU1ZhbHVlIHJlZ0V4cENvbnN0cnVjdG9yRG9sbGFyNChFeGVjU3RhdGUqIGV4ZWMsIEpTVmFs
dWUgc2xvdEJhc2UsIFByb3BlcnR5TmFtZSkKIHsKICAgICByZXR1cm4gYXNSZWdFeHBDb25zdHJ1
Y3RvcihzbG90QmFzZSktPmdldEJhY2tyZWYoZXhlYywgNCk7CiB9CiAKLUpTVmFsdWUgcmVnRXhw
Q29uc3RydWN0b3JEb2xsYXI1KEV4ZWNTdGF0ZSogZXhlYywgSlNWYWx1ZSBzbG90QmFzZSwgY29u
c3QgSWRlbnRpZmllciYpCitKU1ZhbHVlIHJlZ0V4cENvbnN0cnVjdG9yRG9sbGFyNShFeGVjU3Rh
dGUqIGV4ZWMsIEpTVmFsdWUgc2xvdEJhc2UsIFByb3BlcnR5TmFtZSkKIHsKICAgICByZXR1cm4g
YXNSZWdFeHBDb25zdHJ1Y3RvcihzbG90QmFzZSktPmdldEJhY2tyZWYoZXhlYywgNSk7CiB9CiAK
LUpTVmFsdWUgcmVnRXhwQ29uc3RydWN0b3JEb2xsYXI2KEV4ZWNTdGF0ZSogZXhlYywgSlNWYWx1
ZSBzbG90QmFzZSwgY29uc3QgSWRlbnRpZmllciYpCitKU1ZhbHVlIHJlZ0V4cENvbnN0cnVjdG9y
RG9sbGFyNihFeGVjU3RhdGUqIGV4ZWMsIEpTVmFsdWUgc2xvdEJhc2UsIFByb3BlcnR5TmFtZSkK
IHsKICAgICByZXR1cm4gYXNSZWdFeHBDb25zdHJ1Y3RvcihzbG90QmFzZSktPmdldEJhY2tyZWYo
ZXhlYywgNik7CiB9CiAKLUpTVmFsdWUgcmVnRXhwQ29uc3RydWN0b3JEb2xsYXI3KEV4ZWNTdGF0
ZSogZXhlYywgSlNWYWx1ZSBzbG90QmFzZSwgY29uc3QgSWRlbnRpZmllciYpCitKU1ZhbHVlIHJl
Z0V4cENvbnN0cnVjdG9yRG9sbGFyNyhFeGVjU3RhdGUqIGV4ZWMsIEpTVmFsdWUgc2xvdEJhc2Us
IFByb3BlcnR5TmFtZSkKIHsKICAgICByZXR1cm4gYXNSZWdFeHBDb25zdHJ1Y3RvcihzbG90QmFz
ZSktPmdldEJhY2tyZWYoZXhlYywgNyk7CiB9CiAKLUpTVmFsdWUgcmVnRXhwQ29uc3RydWN0b3JE
b2xsYXI4KEV4ZWNTdGF0ZSogZXhlYywgSlNWYWx1ZSBzbG90QmFzZSwgY29uc3QgSWRlbnRpZmll
ciYpCitKU1ZhbHVlIHJlZ0V4cENvbnN0cnVjdG9yRG9sbGFyOChFeGVjU3RhdGUqIGV4ZWMsIEpT
VmFsdWUgc2xvdEJhc2UsIFByb3BlcnR5TmFtZSkKIHsKICAgICByZXR1cm4gYXNSZWdFeHBDb25z
dHJ1Y3RvcihzbG90QmFzZSktPmdldEJhY2tyZWYoZXhlYywgOCk7CiB9CiAKLUpTVmFsdWUgcmVn
RXhwQ29uc3RydWN0b3JEb2xsYXI5KEV4ZWNTdGF0ZSogZXhlYywgSlNWYWx1ZSBzbG90QmFzZSwg
Y29uc3QgSWRlbnRpZmllciYpCitKU1ZhbHVlIHJlZ0V4cENvbnN0cnVjdG9yRG9sbGFyOShFeGVj
U3RhdGUqIGV4ZWMsIEpTVmFsdWUgc2xvdEJhc2UsIFByb3BlcnR5TmFtZSkKIHsKICAgICByZXR1
cm4gYXNSZWdFeHBDb25zdHJ1Y3RvcihzbG90QmFzZSktPmdldEJhY2tyZWYoZXhlYywgOSk7CiB9
CiAKLUpTVmFsdWUgcmVnRXhwQ29uc3RydWN0b3JJbnB1dChFeGVjU3RhdGUqLCBKU1ZhbHVlIHNs
b3RCYXNlLCBjb25zdCBJZGVudGlmaWVyJikKK0pTVmFsdWUgcmVnRXhwQ29uc3RydWN0b3JJbnB1
dChFeGVjU3RhdGUqLCBKU1ZhbHVlIHNsb3RCYXNlLCBQcm9wZXJ0eU5hbWUpCiB7CiAgICAgcmV0
dXJuIGFzUmVnRXhwQ29uc3RydWN0b3Ioc2xvdEJhc2UpLT5pbnB1dCgpOwogfQogCi1KU1ZhbHVl
IHJlZ0V4cENvbnN0cnVjdG9yTXVsdGlsaW5lKEV4ZWNTdGF0ZSosIEpTVmFsdWUgc2xvdEJhc2Us
IGNvbnN0IElkZW50aWZpZXImKQorSlNWYWx1ZSByZWdFeHBDb25zdHJ1Y3Rvck11bHRpbGluZShF
eGVjU3RhdGUqLCBKU1ZhbHVlIHNsb3RCYXNlLCBQcm9wZXJ0eU5hbWUpCiB7CiAgICAgcmV0dXJu
IGpzQm9vbGVhbihhc1JlZ0V4cENvbnN0cnVjdG9yKHNsb3RCYXNlKS0+bXVsdGlsaW5lKCkpOwog
fQogCi1KU1ZhbHVlIHJlZ0V4cENvbnN0cnVjdG9yTGFzdE1hdGNoKEV4ZWNTdGF0ZSogZXhlYywg
SlNWYWx1ZSBzbG90QmFzZSwgY29uc3QgSWRlbnRpZmllciYpCitKU1ZhbHVlIHJlZ0V4cENvbnN0
cnVjdG9yTGFzdE1hdGNoKEV4ZWNTdGF0ZSogZXhlYywgSlNWYWx1ZSBzbG90QmFzZSwgUHJvcGVy
dHlOYW1lKQogewogICAgIHJldHVybiBhc1JlZ0V4cENvbnN0cnVjdG9yKHNsb3RCYXNlKS0+Z2V0
QmFja3JlZihleGVjLCAwKTsKIH0KIAotSlNWYWx1ZSByZWdFeHBDb25zdHJ1Y3Rvckxhc3RQYXJl
bihFeGVjU3RhdGUqIGV4ZWMsIEpTVmFsdWUgc2xvdEJhc2UsIGNvbnN0IElkZW50aWZpZXImKQor
SlNWYWx1ZSByZWdFeHBDb25zdHJ1Y3Rvckxhc3RQYXJlbihFeGVjU3RhdGUqIGV4ZWMsIEpTVmFs
dWUgc2xvdEJhc2UsIFByb3BlcnR5TmFtZSkKIHsKICAgICByZXR1cm4gYXNSZWdFeHBDb25zdHJ1
Y3RvcihzbG90QmFzZSktPmdldExhc3RQYXJlbihleGVjKTsKIH0KIAotSlNWYWx1ZSByZWdFeHBD
b25zdHJ1Y3RvckxlZnRDb250ZXh0KEV4ZWNTdGF0ZSogZXhlYywgSlNWYWx1ZSBzbG90QmFzZSwg
Y29uc3QgSWRlbnRpZmllciYpCitKU1ZhbHVlIHJlZ0V4cENvbnN0cnVjdG9yTGVmdENvbnRleHQo
RXhlY1N0YXRlKiBleGVjLCBKU1ZhbHVlIHNsb3RCYXNlLCBQcm9wZXJ0eU5hbWUpCiB7CiAgICAg
cmV0dXJuIGFzUmVnRXhwQ29uc3RydWN0b3Ioc2xvdEJhc2UpLT5nZXRMZWZ0Q29udGV4dChleGVj
KTsKIH0KIAotSlNWYWx1ZSByZWdFeHBDb25zdHJ1Y3RvclJpZ2h0Q29udGV4dChFeGVjU3RhdGUq
IGV4ZWMsIEpTVmFsdWUgc2xvdEJhc2UsIGNvbnN0IElkZW50aWZpZXImKQorSlNWYWx1ZSByZWdF
eHBDb25zdHJ1Y3RvclJpZ2h0Q29udGV4dChFeGVjU3RhdGUqIGV4ZWMsIEpTVmFsdWUgc2xvdEJh
c2UsIFByb3BlcnR5TmFtZSkKIHsKICAgICByZXR1cm4gYXNSZWdFeHBDb25zdHJ1Y3RvcihzbG90
QmFzZSktPmdldFJpZ2h0Q29udGV4dChleGVjKTsKIH0KIAotdm9pZCBSZWdFeHBDb25zdHJ1Y3Rv
cjo6cHV0KEpTQ2VsbCogY2VsbCwgRXhlY1N0YXRlKiBleGVjLCBjb25zdCBJZGVudGlmaWVyJiBw
cm9wZXJ0eU5hbWUsIEpTVmFsdWUgdmFsdWUsIFB1dFByb3BlcnR5U2xvdCYgc2xvdCkKK3ZvaWQg
UmVnRXhwQ29uc3RydWN0b3I6OnB1dChKU0NlbGwqIGNlbGwsIEV4ZWNTdGF0ZSogZXhlYywgUHJv
cGVydHlOYW1lIHByb3BlcnR5TmFtZSwgSlNWYWx1ZSB2YWx1ZSwgUHV0UHJvcGVydHlTbG90JiBz
bG90KQogewogICAgIGxvb2t1cFB1dDxSZWdFeHBDb25zdHJ1Y3RvciwgSW50ZXJuYWxGdW5jdGlv
bj4oZXhlYywgcHJvcGVydHlOYW1lLCB2YWx1ZSwgRXhlY1N0YXRlOjpyZWdFeHBDb25zdHJ1Y3Rv
clRhYmxlKGV4ZWMpLCBqc0Nhc3Q8UmVnRXhwQ29uc3RydWN0b3IqPihjZWxsKSwgc2xvdCk7CiB9
CkluZGV4OiBTb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9SZWdFeHBDb25zdHJ1Y3Rvci5o
Cj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT0KLS0tIFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL1JlZ0V4cENvbnN0
cnVjdG9yLmgJKHJldmlzaW9uIDExNjY2NykKKysrIFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50
aW1lL1JlZ0V4cENvbnN0cnVjdG9yLmgJKHdvcmtpbmcgY29weSkKQEAgLTQ4LDEwICs0OCwxMCBA
QCBuYW1lc3BhY2UgSlNDIHsKICAgICAgICAgICAgIHJldHVybiBTdHJ1Y3R1cmU6OmNyZWF0ZShn
bG9iYWxEYXRhLCBnbG9iYWxPYmplY3QsIHByb3RvdHlwZSwgVHlwZUluZm8oT2JqZWN0VHlwZSwg
U3RydWN0dXJlRmxhZ3MpLCAmc19pbmZvKTsKICAgICAgICAgfQogCi0gICAgICAgIHN0YXRpYyB2
b2lkIHB1dChKU0NlbGwqLCBFeGVjU3RhdGUqLCBjb25zdCBJZGVudGlmaWVyJiBwcm9wZXJ0eU5h
bWUsIEpTVmFsdWUsIFB1dFByb3BlcnR5U2xvdCYpOworICAgICAgICBzdGF0aWMgdm9pZCBwdXQo
SlNDZWxsKiwgRXhlY1N0YXRlKiwgUHJvcGVydHlOYW1lLCBKU1ZhbHVlLCBQdXRQcm9wZXJ0eVNs
b3QmKTsKIAotICAgICAgICBzdGF0aWMgYm9vbCBnZXRPd25Qcm9wZXJ0eVNsb3QoSlNDZWxsKiwg
RXhlY1N0YXRlKiwgY29uc3QgSWRlbnRpZmllciYgcHJvcGVydHlOYW1lLCBQcm9wZXJ0eVNsb3Qm
KTsKLSAgICAgICAgc3RhdGljIGJvb2wgZ2V0T3duUHJvcGVydHlEZXNjcmlwdG9yKEpTT2JqZWN0
KiwgRXhlY1N0YXRlKiwgY29uc3QgSWRlbnRpZmllciYsIFByb3BlcnR5RGVzY3JpcHRvciYpOwor
ICAgICAgICBzdGF0aWMgYm9vbCBnZXRPd25Qcm9wZXJ0eVNsb3QoSlNDZWxsKiwgRXhlY1N0YXRl
KiwgUHJvcGVydHlOYW1lLCBQcm9wZXJ0eVNsb3QmKTsKKyAgICAgICAgc3RhdGljIGJvb2wgZ2V0
T3duUHJvcGVydHlEZXNjcmlwdG9yKEpTT2JqZWN0KiwgRXhlY1N0YXRlKiwgUHJvcGVydHlOYW1l
LCBQcm9wZXJ0eURlc2NyaXB0b3ImKTsKIAogICAgICAgICBzdGF0aWMgY29uc3QgQ2xhc3NJbmZv
IHNfaW5mbzsKIApJbmRleDogU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvUmVnRXhwTWF0
Y2hlc0FycmF5LmgKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUv
UmVnRXhwTWF0Y2hlc0FycmF5LmgJKHJldmlzaW9uIDExNjY2NykKKysrIFNvdXJjZS9KYXZhU2Ny
aXB0Q29yZS9ydW50aW1lL1JlZ0V4cE1hdGNoZXNBcnJheS5oCSh3b3JraW5nIGNvcHkpCkBAIC04
MSw3ICs4MSw3IEBAIG5hbWVzcGFjZSBKU0MgewogICAgICAgICAgICAgICAgIHJlaWZ5TWF0Y2hQ
cm9wZXJ0eShleGVjKTsKICAgICAgICAgfQogCi0gICAgICAgIHN0YXRpYyBib29sIGdldE93blBy
b3BlcnR5U2xvdChKU0NlbGwqIGNlbGwsIEV4ZWNTdGF0ZSogZXhlYywgY29uc3QgSWRlbnRpZmll
ciYgcHJvcGVydHlOYW1lLCBQcm9wZXJ0eVNsb3QmIHNsb3QpCisgICAgICAgIHN0YXRpYyBib29s
IGdldE93blByb3BlcnR5U2xvdChKU0NlbGwqIGNlbGwsIEV4ZWNTdGF0ZSogZXhlYywgUHJvcGVy
dHlOYW1lIHByb3BlcnR5TmFtZSwgUHJvcGVydHlTbG90JiBzbG90KQogICAgICAgICB7CiAgICAg
ICAgICAgICBSZWdFeHBNYXRjaGVzQXJyYXkqIHRoaXNPYmplY3QgPSBqc0Nhc3Q8UmVnRXhwTWF0
Y2hlc0FycmF5Kj4oY2VsbCk7CiAgICAgICAgICAgICB0aGlzT2JqZWN0LT5yZWlmeUFsbFByb3Bl
cnRpZXNJZk5lY2Vzc2FyeShleGVjKTsKQEAgLTk4LDE0ICs5OCwxNCBAQCBuYW1lc3BhY2UgSlND
IHsKICAgICAgICAgICAgIHJldHVybiBKU0FycmF5OjpnZXRPd25Qcm9wZXJ0eVNsb3RCeUluZGV4
KHRoaXNPYmplY3QsIGV4ZWMsIHByb3BlcnR5TmFtZSwgc2xvdCk7CiAgICAgICAgIH0KIAotICAg
ICAgICBzdGF0aWMgYm9vbCBnZXRPd25Qcm9wZXJ0eURlc2NyaXB0b3IoSlNPYmplY3QqIG9iamVj
dCwgRXhlY1N0YXRlKiBleGVjLCBjb25zdCBJZGVudGlmaWVyJiBwcm9wZXJ0eU5hbWUsIFByb3Bl
cnR5RGVzY3JpcHRvciYgZGVzY3JpcHRvcikKKyAgICAgICAgc3RhdGljIGJvb2wgZ2V0T3duUHJv
cGVydHlEZXNjcmlwdG9yKEpTT2JqZWN0KiBvYmplY3QsIEV4ZWNTdGF0ZSogZXhlYywgUHJvcGVy
dHlOYW1lIHByb3BlcnR5TmFtZSwgUHJvcGVydHlEZXNjcmlwdG9yJiBkZXNjcmlwdG9yKQogICAg
ICAgICB7CiAgICAgICAgICAgICBSZWdFeHBNYXRjaGVzQXJyYXkqIHRoaXNPYmplY3QgPSBqc0Nh
c3Q8UmVnRXhwTWF0Y2hlc0FycmF5Kj4ob2JqZWN0KTsKICAgICAgICAgICAgIHRoaXNPYmplY3Qt
PnJlaWZ5QWxsUHJvcGVydGllc0lmTmVjZXNzYXJ5KGV4ZWMpOwogICAgICAgICAgICAgcmV0dXJu
IEpTQXJyYXk6OmdldE93blByb3BlcnR5RGVzY3JpcHRvcih0aGlzT2JqZWN0LCBleGVjLCBwcm9w
ZXJ0eU5hbWUsIGRlc2NyaXB0b3IpOwogICAgICAgICB9CiAKLSAgICAgICAgc3RhdGljIHZvaWQg
cHV0KEpTQ2VsbCogY2VsbCwgRXhlY1N0YXRlKiBleGVjLCBjb25zdCBJZGVudGlmaWVyJiBwcm9w
ZXJ0eU5hbWUsIEpTVmFsdWUgdiwgUHV0UHJvcGVydHlTbG90JiBzbG90KQorICAgICAgICBzdGF0
aWMgdm9pZCBwdXQoSlNDZWxsKiBjZWxsLCBFeGVjU3RhdGUqIGV4ZWMsIFByb3BlcnR5TmFtZSBw
cm9wZXJ0eU5hbWUsIEpTVmFsdWUgdiwgUHV0UHJvcGVydHlTbG90JiBzbG90KQogICAgICAgICB7
CiAgICAgICAgICAgICBSZWdFeHBNYXRjaGVzQXJyYXkqIHRoaXNPYmplY3QgPSBqc0Nhc3Q8UmVn
RXhwTWF0Y2hlc0FycmF5Kj4oY2VsbCk7CiAgICAgICAgICAgICB0aGlzT2JqZWN0LT5yZWlmeUFs
bFByb3BlcnRpZXNJZk5lY2Vzc2FyeShleGVjKTsKQEAgLTExOSw3ICsxMTksNyBAQCBuYW1lc3Bh
Y2UgSlNDIHsKICAgICAgICAgICAgIEpTQXJyYXk6OnB1dEJ5SW5kZXgodGhpc09iamVjdCwgZXhl
YywgcHJvcGVydHlOYW1lLCB2LCBzaG91bGRUaHJvdyk7CiAgICAgICAgIH0KIAotICAgICAgICBz
dGF0aWMgYm9vbCBkZWxldGVQcm9wZXJ0eShKU0NlbGwqIGNlbGwsIEV4ZWNTdGF0ZSogZXhlYywg
Y29uc3QgSWRlbnRpZmllciYgcHJvcGVydHlOYW1lKQorICAgICAgICBzdGF0aWMgYm9vbCBkZWxl
dGVQcm9wZXJ0eShKU0NlbGwqIGNlbGwsIEV4ZWNTdGF0ZSogZXhlYywgUHJvcGVydHlOYW1lIHBy
b3BlcnR5TmFtZSkKICAgICAgICAgewogICAgICAgICAgICAgUmVnRXhwTWF0Y2hlc0FycmF5KiB0
aGlzT2JqZWN0ID0ganNDYXN0PFJlZ0V4cE1hdGNoZXNBcnJheSo+KGNlbGwpOwogICAgICAgICAg
ICAgdGhpc09iamVjdC0+cmVpZnlBbGxQcm9wZXJ0aWVzSWZOZWNlc3NhcnkoZXhlYyk7CkBAIC0x
NDAsNyArMTQwLDcgQEAgbmFtZXNwYWNlIEpTQyB7CiAgICAgICAgICAgICBKU0FycmF5OjpnZXRP
d25Qcm9wZXJ0eU5hbWVzKHRoaXNPYmplY3QsIGV4ZWMsIGFyciwgbW9kZSk7CiAgICAgICAgIH0K
IAotICAgICAgICBzdGF0aWMgYm9vbCBkZWZpbmVPd25Qcm9wZXJ0eShKU09iamVjdCogb2JqZWN0
LCBFeGVjU3RhdGUqIGV4ZWMsIGNvbnN0IElkZW50aWZpZXImIHByb3BlcnR5TmFtZSwgUHJvcGVy
dHlEZXNjcmlwdG9yJiBkZXNjcmlwdG9yLCBib29sIHNob3VsZFRocm93KQorICAgICAgICBzdGF0
aWMgYm9vbCBkZWZpbmVPd25Qcm9wZXJ0eShKU09iamVjdCogb2JqZWN0LCBFeGVjU3RhdGUqIGV4
ZWMsIFByb3BlcnR5TmFtZSBwcm9wZXJ0eU5hbWUsIFByb3BlcnR5RGVzY3JpcHRvciYgZGVzY3Jp
cHRvciwgYm9vbCBzaG91bGRUaHJvdykKICAgICAgICAgewogICAgICAgICAgICAgUmVnRXhwTWF0
Y2hlc0FycmF5KiB0aGlzT2JqZWN0ID0ganNDYXN0PFJlZ0V4cE1hdGNoZXNBcnJheSo+KG9iamVj
dCk7CiAgICAgICAgICAgICB0aGlzT2JqZWN0LT5yZWlmeUFsbFByb3BlcnRpZXNJZk5lY2Vzc2Fy
eShleGVjKTsKSW5kZXg6IFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL1JlZ0V4cE9iamVj
dC5jcHAKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PQotLS0gU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvUmVnRXhw
T2JqZWN0LmNwcAkocmV2aXNpb24gMTE2NjY3KQorKysgU291cmNlL0phdmFTY3JpcHRDb3JlL3J1
bnRpbWUvUmVnRXhwT2JqZWN0LmNwcAkod29ya2luZyBjb3B5KQpAQCAtMzcsMTAgKzM3LDEwIEBA
CiAKIG5hbWVzcGFjZSBKU0MgewogCi1zdGF0aWMgSlNWYWx1ZSByZWdFeHBPYmplY3RHbG9iYWwo
RXhlY1N0YXRlKiwgSlNWYWx1ZSwgY29uc3QgSWRlbnRpZmllciYpOwotc3RhdGljIEpTVmFsdWUg
cmVnRXhwT2JqZWN0SWdub3JlQ2FzZShFeGVjU3RhdGUqLCBKU1ZhbHVlLCBjb25zdCBJZGVudGlm
aWVyJik7Ci1zdGF0aWMgSlNWYWx1ZSByZWdFeHBPYmplY3RNdWx0aWxpbmUoRXhlY1N0YXRlKiwg
SlNWYWx1ZSwgY29uc3QgSWRlbnRpZmllciYpOwotc3RhdGljIEpTVmFsdWUgcmVnRXhwT2JqZWN0
U291cmNlKEV4ZWNTdGF0ZSosIEpTVmFsdWUsIGNvbnN0IElkZW50aWZpZXImKTsKK3N0YXRpYyBK
U1ZhbHVlIHJlZ0V4cE9iamVjdEdsb2JhbChFeGVjU3RhdGUqLCBKU1ZhbHVlLCBQcm9wZXJ0eU5h
bWUpOworc3RhdGljIEpTVmFsdWUgcmVnRXhwT2JqZWN0SWdub3JlQ2FzZShFeGVjU3RhdGUqLCBK
U1ZhbHVlLCBQcm9wZXJ0eU5hbWUpOworc3RhdGljIEpTVmFsdWUgcmVnRXhwT2JqZWN0TXVsdGls
aW5lKEV4ZWNTdGF0ZSosIEpTVmFsdWUsIFByb3BlcnR5TmFtZSk7CitzdGF0aWMgSlNWYWx1ZSBy
ZWdFeHBPYmplY3RTb3VyY2UoRXhlY1N0YXRlKiwgSlNWYWx1ZSwgUHJvcGVydHlOYW1lKTsKIAog
fSAvLyBuYW1lc3BhY2UgSlNDCiAKQEAgLTg4LDcgKzg4LDcgQEAgdm9pZCBSZWdFeHBPYmplY3Q6
OnZpc2l0Q2hpbGRyZW4oSlNDZWxsKgogICAgICAgICB2aXNpdG9yLmFwcGVuZCgmdGhpc09iamVj
dC0+bV9sYXN0SW5kZXgpOwogfQogCi1ib29sIFJlZ0V4cE9iamVjdDo6Z2V0T3duUHJvcGVydHlT
bG90KEpTQ2VsbCogY2VsbCwgRXhlY1N0YXRlKiBleGVjLCBjb25zdCBJZGVudGlmaWVyJiBwcm9w
ZXJ0eU5hbWUsIFByb3BlcnR5U2xvdCYgc2xvdCkKK2Jvb2wgUmVnRXhwT2JqZWN0OjpnZXRPd25Q
cm9wZXJ0eVNsb3QoSlNDZWxsKiBjZWxsLCBFeGVjU3RhdGUqIGV4ZWMsIFByb3BlcnR5TmFtZSBw
cm9wZXJ0eU5hbWUsIFByb3BlcnR5U2xvdCYgc2xvdCkKIHsKICAgICBpZiAocHJvcGVydHlOYW1l
ID09IGV4ZWMtPnByb3BlcnR5TmFtZXMoKS5sYXN0SW5kZXgpIHsKICAgICAgICAgUmVnRXhwT2Jq
ZWN0KiByZWdFeHAgPSBhc1JlZ0V4cE9iamVjdChjZWxsKTsKQEAgLTk4LDcgKzk4LDcgQEAgYm9v
bCBSZWdFeHBPYmplY3Q6OmdldE93blByb3BlcnR5U2xvdChKUwogICAgIHJldHVybiBnZXRTdGF0
aWNWYWx1ZVNsb3Q8UmVnRXhwT2JqZWN0LCBKU09iamVjdD4oZXhlYywgRXhlY1N0YXRlOjpyZWdF
eHBUYWJsZShleGVjKSwganNDYXN0PFJlZ0V4cE9iamVjdCo+KGNlbGwpLCBwcm9wZXJ0eU5hbWUs
IHNsb3QpOwogfQogCi1ib29sIFJlZ0V4cE9iamVjdDo6Z2V0T3duUHJvcGVydHlEZXNjcmlwdG9y
KEpTT2JqZWN0KiBvYmplY3QsIEV4ZWNTdGF0ZSogZXhlYywgY29uc3QgSWRlbnRpZmllciYgcHJv
cGVydHlOYW1lLCBQcm9wZXJ0eURlc2NyaXB0b3ImIGRlc2NyaXB0b3IpCitib29sIFJlZ0V4cE9i
amVjdDo6Z2V0T3duUHJvcGVydHlEZXNjcmlwdG9yKEpTT2JqZWN0KiBvYmplY3QsIEV4ZWNTdGF0
ZSogZXhlYywgUHJvcGVydHlOYW1lIHByb3BlcnR5TmFtZSwgUHJvcGVydHlEZXNjcmlwdG9yJiBk
ZXNjcmlwdG9yKQogewogICAgIGlmIChwcm9wZXJ0eU5hbWUgPT0gZXhlYy0+cHJvcGVydHlOYW1l
cygpLmxhc3RJbmRleCkgewogICAgICAgICBSZWdFeHBPYmplY3QqIHJlZ0V4cCA9IGFzUmVnRXhw
T2JqZWN0KG9iamVjdCk7CkBAIC0xMDgsNyArMTA4LDcgQEAgYm9vbCBSZWdFeHBPYmplY3Q6Omdl
dE93blByb3BlcnR5RGVzY3JpcAogICAgIHJldHVybiBnZXRTdGF0aWNWYWx1ZURlc2NyaXB0b3I8
UmVnRXhwT2JqZWN0LCBKU09iamVjdD4oZXhlYywgRXhlY1N0YXRlOjpyZWdFeHBUYWJsZShleGVj
KSwganNDYXN0PFJlZ0V4cE9iamVjdCo+KG9iamVjdCksIHByb3BlcnR5TmFtZSwgZGVzY3JpcHRv
cik7CiB9CiAKLWJvb2wgUmVnRXhwT2JqZWN0OjpkZWxldGVQcm9wZXJ0eShKU0NlbGwqIGNlbGws
IEV4ZWNTdGF0ZSogZXhlYywgY29uc3QgSWRlbnRpZmllciYgcHJvcGVydHlOYW1lKQorYm9vbCBS
ZWdFeHBPYmplY3Q6OmRlbGV0ZVByb3BlcnR5KEpTQ2VsbCogY2VsbCwgRXhlY1N0YXRlKiBleGVj
LCBQcm9wZXJ0eU5hbWUgcHJvcGVydHlOYW1lKQogewogICAgIGlmIChwcm9wZXJ0eU5hbWUgPT0g
ZXhlYy0+cHJvcGVydHlOYW1lcygpLmxhc3RJbmRleCkKICAgICAgICAgcmV0dXJuIGZhbHNlOwpA
QCAtMTM2LDcgKzEzNiw3IEBAIHN0YXRpYyBib29sIHJlamVjdChFeGVjU3RhdGUqIGV4ZWMsIGJv
b2wKICAgICByZXR1cm4gZmFsc2U7CiB9CiAKLWJvb2wgUmVnRXhwT2JqZWN0OjpkZWZpbmVPd25Q
cm9wZXJ0eShKU09iamVjdCogb2JqZWN0LCBFeGVjU3RhdGUqIGV4ZWMsIGNvbnN0IElkZW50aWZp
ZXImIHByb3BlcnR5TmFtZSwgUHJvcGVydHlEZXNjcmlwdG9yJiBkZXNjcmlwdG9yLCBib29sIHNo
b3VsZFRocm93KQorYm9vbCBSZWdFeHBPYmplY3Q6OmRlZmluZU93blByb3BlcnR5KEpTT2JqZWN0
KiBvYmplY3QsIEV4ZWNTdGF0ZSogZXhlYywgUHJvcGVydHlOYW1lIHByb3BlcnR5TmFtZSwgUHJv
cGVydHlEZXNjcmlwdG9yJiBkZXNjcmlwdG9yLCBib29sIHNob3VsZFRocm93KQogewogICAgIGlm
IChwcm9wZXJ0eU5hbWUgPT0gZXhlYy0+cHJvcGVydHlOYW1lcygpLmxhc3RJbmRleCkgewogICAg
ICAgICBSZWdFeHBPYmplY3QqIHJlZ0V4cCA9IGFzUmVnRXhwT2JqZWN0KG9iamVjdCk7CkBAIC0x
NjMsMjIgKzE2MywyMiBAQCBib29sIFJlZ0V4cE9iamVjdDo6ZGVmaW5lT3duUHJvcGVydHkoSlNP
CiAgICAgcmV0dXJuIEJhc2U6OmRlZmluZU93blByb3BlcnR5KG9iamVjdCwgZXhlYywgcHJvcGVy
dHlOYW1lLCBkZXNjcmlwdG9yLCBzaG91bGRUaHJvdyk7CiB9CiAKLUpTVmFsdWUgcmVnRXhwT2Jq
ZWN0R2xvYmFsKEV4ZWNTdGF0ZSosIEpTVmFsdWUgc2xvdEJhc2UsIGNvbnN0IElkZW50aWZpZXIm
KQorSlNWYWx1ZSByZWdFeHBPYmplY3RHbG9iYWwoRXhlY1N0YXRlKiwgSlNWYWx1ZSBzbG90QmFz
ZSwgUHJvcGVydHlOYW1lKQogewogICAgIHJldHVybiBqc0Jvb2xlYW4oYXNSZWdFeHBPYmplY3Qo
c2xvdEJhc2UpLT5yZWdFeHAoKS0+Z2xvYmFsKCkpOwogfQogCi1KU1ZhbHVlIHJlZ0V4cE9iamVj
dElnbm9yZUNhc2UoRXhlY1N0YXRlKiwgSlNWYWx1ZSBzbG90QmFzZSwgY29uc3QgSWRlbnRpZmll
ciYpCitKU1ZhbHVlIHJlZ0V4cE9iamVjdElnbm9yZUNhc2UoRXhlY1N0YXRlKiwgSlNWYWx1ZSBz
bG90QmFzZSwgUHJvcGVydHlOYW1lKQogewogICAgIHJldHVybiBqc0Jvb2xlYW4oYXNSZWdFeHBP
YmplY3Qoc2xvdEJhc2UpLT5yZWdFeHAoKS0+aWdub3JlQ2FzZSgpKTsKIH0KICAKLUpTVmFsdWUg
cmVnRXhwT2JqZWN0TXVsdGlsaW5lKEV4ZWNTdGF0ZSosIEpTVmFsdWUgc2xvdEJhc2UsIGNvbnN0
IElkZW50aWZpZXImKQorSlNWYWx1ZSByZWdFeHBPYmplY3RNdWx0aWxpbmUoRXhlY1N0YXRlKiwg
SlNWYWx1ZSBzbG90QmFzZSwgUHJvcGVydHlOYW1lKQogeyAgICAgICAgICAgIAogICAgIHJldHVy
biBqc0Jvb2xlYW4oYXNSZWdFeHBPYmplY3Qoc2xvdEJhc2UpLT5yZWdFeHAoKS0+bXVsdGlsaW5l
KCkpOwogfQogCi1KU1ZhbHVlIHJlZ0V4cE9iamVjdFNvdXJjZShFeGVjU3RhdGUqIGV4ZWMsIEpT
VmFsdWUgc2xvdEJhc2UsIGNvbnN0IElkZW50aWZpZXImKQorSlNWYWx1ZSByZWdFeHBPYmplY3RT
b3VyY2UoRXhlY1N0YXRlKiBleGVjLCBKU1ZhbHVlIHNsb3RCYXNlLCBQcm9wZXJ0eU5hbWUpCiB7
CiAgICAgVVN0cmluZyBwYXR0ZXJuID0gYXNSZWdFeHBPYmplY3Qoc2xvdEJhc2UpLT5yZWdFeHAo
KS0+cGF0dGVybigpOwogICAgIHVuc2lnbmVkIGxlbmd0aCA9IHBhdHRlcm4ubGVuZ3RoKCk7CkBA
IC0yNjgsNyArMjY4LDcgQEAgSlNWYWx1ZSByZWdFeHBPYmplY3RTb3VyY2UoRXhlY1N0YXRlKiBl
eAogICAgIHJldHVybiBqc1N0cmluZyhleGVjLCByZXN1bHQudG9VU3RyaW5nKCkpOwogfQogCi12
b2lkIFJlZ0V4cE9iamVjdDo6cHV0KEpTQ2VsbCogY2VsbCwgRXhlY1N0YXRlKiBleGVjLCBjb25z
dCBJZGVudGlmaWVyJiBwcm9wZXJ0eU5hbWUsIEpTVmFsdWUgdmFsdWUsIFB1dFByb3BlcnR5U2xv
dCYgc2xvdCkKK3ZvaWQgUmVnRXhwT2JqZWN0OjpwdXQoSlNDZWxsKiBjZWxsLCBFeGVjU3RhdGUq
IGV4ZWMsIFByb3BlcnR5TmFtZSBwcm9wZXJ0eU5hbWUsIEpTVmFsdWUgdmFsdWUsIFB1dFByb3Bl
cnR5U2xvdCYgc2xvdCkKIHsKICAgICBpZiAocHJvcGVydHlOYW1lID09IGV4ZWMtPnByb3BlcnR5
TmFtZXMoKS5sYXN0SW5kZXgpIHsKICAgICAgICAgYXNSZWdFeHBPYmplY3QoY2VsbCktPnNldExh
c3RJbmRleChleGVjLCB2YWx1ZSwgc2xvdC5pc1N0cmljdE1vZGUoKSk7CkluZGV4OiBTb3VyY2Uv
SmF2YVNjcmlwdENvcmUvcnVudGltZS9SZWdFeHBPYmplY3QuaAo9PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3Vy
Y2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9SZWdFeHBPYmplY3QuaAkocmV2aXNpb24gMTE2NjY3
KQorKysgU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvUmVnRXhwT2JqZWN0LmgJKHdvcmtp
bmcgY29weSkKQEAgLTcwLDkgKzcwLDkgQEAgbmFtZXNwYWNlIEpTQyB7CiAgICAgICAgIGJvb2wg
dGVzdChFeGVjU3RhdGUqIGV4ZWMsIEpTU3RyaW5nKiBzdHJpbmcpIHsgcmV0dXJuIG1hdGNoKGV4
ZWMsIHN0cmluZyk7IH0KICAgICAgICAgSlNWYWx1ZSBleGVjKEV4ZWNTdGF0ZSosIEpTU3RyaW5n
Kik7CiAKLSAgICAgICAgc3RhdGljIGJvb2wgZ2V0T3duUHJvcGVydHlTbG90KEpTQ2VsbCosIEV4
ZWNTdGF0ZSosIGNvbnN0IElkZW50aWZpZXImIHByb3BlcnR5TmFtZSwgUHJvcGVydHlTbG90Jik7
Ci0gICAgICAgIHN0YXRpYyBib29sIGdldE93blByb3BlcnR5RGVzY3JpcHRvcihKU09iamVjdCos
IEV4ZWNTdGF0ZSosIGNvbnN0IElkZW50aWZpZXImLCBQcm9wZXJ0eURlc2NyaXB0b3ImKTsKLSAg
ICAgICAgc3RhdGljIHZvaWQgcHV0KEpTQ2VsbCosIEV4ZWNTdGF0ZSosIGNvbnN0IElkZW50aWZp
ZXImIHByb3BlcnR5TmFtZSwgSlNWYWx1ZSwgUHV0UHJvcGVydHlTbG90Jik7CisgICAgICAgIHN0
YXRpYyBib29sIGdldE93blByb3BlcnR5U2xvdChKU0NlbGwqLCBFeGVjU3RhdGUqLCBQcm9wZXJ0
eU5hbWUsIFByb3BlcnR5U2xvdCYpOworICAgICAgICBzdGF0aWMgYm9vbCBnZXRPd25Qcm9wZXJ0
eURlc2NyaXB0b3IoSlNPYmplY3QqLCBFeGVjU3RhdGUqLCBQcm9wZXJ0eU5hbWUsIFByb3BlcnR5
RGVzY3JpcHRvciYpOworICAgICAgICBzdGF0aWMgdm9pZCBwdXQoSlNDZWxsKiwgRXhlY1N0YXRl
KiwgUHJvcGVydHlOYW1lLCBKU1ZhbHVlLCBQdXRQcm9wZXJ0eVNsb3QmKTsKIAogICAgICAgICBz
dGF0aWMgSlNfRVhQT1JUREFUQSBjb25zdCBDbGFzc0luZm8gc19pbmZvOwogCkBAIC04OSwxMCAr
ODksMTAgQEAgbmFtZXNwYWNlIEpTQyB7CiAKICAgICAgICAgc3RhdGljIHZvaWQgdmlzaXRDaGls
ZHJlbihKU0NlbGwqLCBTbG90VmlzaXRvciYpOwogCi0gICAgICAgIEpTX0VYUE9SVF9QUklWQVRF
IHN0YXRpYyBib29sIGRlbGV0ZVByb3BlcnR5KEpTQ2VsbCosIEV4ZWNTdGF0ZSosIGNvbnN0IElk
ZW50aWZpZXImIHByb3BlcnR5TmFtZSk7CisgICAgICAgIEpTX0VYUE9SVF9QUklWQVRFIHN0YXRp
YyBib29sIGRlbGV0ZVByb3BlcnR5KEpTQ2VsbCosIEV4ZWNTdGF0ZSosIFByb3BlcnR5TmFtZSk7
CiAgICAgICAgIEpTX0VYUE9SVF9QUklWQVRFIHN0YXRpYyB2b2lkIGdldE93blByb3BlcnR5TmFt
ZXMoSlNPYmplY3QqLCBFeGVjU3RhdGUqLCBQcm9wZXJ0eU5hbWVBcnJheSYsIEVudW1lcmF0aW9u
TW9kZSk7CiAgICAgICAgIEpTX0VYUE9SVF9QUklWQVRFIHN0YXRpYyB2b2lkIGdldFByb3BlcnR5
TmFtZXMoSlNPYmplY3QqLCBFeGVjU3RhdGUqLCBQcm9wZXJ0eU5hbWVBcnJheSYsIEVudW1lcmF0
aW9uTW9kZSk7Ci0gICAgICAgIEpTX0VYUE9SVF9QUklWQVRFIHN0YXRpYyBib29sIGRlZmluZU93
blByb3BlcnR5KEpTT2JqZWN0KiwgRXhlY1N0YXRlKiwgY29uc3QgSWRlbnRpZmllciYgcHJvcGVy
dHlOYW1lLCBQcm9wZXJ0eURlc2NyaXB0b3ImLCBib29sIHNob3VsZFRocm93KTsKKyAgICAgICAg
SlNfRVhQT1JUX1BSSVZBVEUgc3RhdGljIGJvb2wgZGVmaW5lT3duUHJvcGVydHkoSlNPYmplY3Qq
LCBFeGVjU3RhdGUqLCBQcm9wZXJ0eU5hbWUsIFByb3BlcnR5RGVzY3JpcHRvciYsIGJvb2wgc2hv
dWxkVGhyb3cpOwogCiAgICAgcHJpdmF0ZToKICAgICAgICAgTWF0Y2hSZXN1bHQgbWF0Y2goRXhl
Y1N0YXRlKiwgSlNTdHJpbmcqKTsKSW5kZXg6IFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1l
L1JlZ0V4cFByb3RvdHlwZS5jcHAKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL0phdmFTY3JpcHRDb3Jl
L3J1bnRpbWUvUmVnRXhwUHJvdG90eXBlLmNwcAkocmV2aXNpb24gMTE2NjY3KQorKysgU291cmNl
L0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvUmVnRXhwUHJvdG90eXBlLmNwcAkod29ya2luZyBjb3B5
KQpAQCAtNjcsMTIgKzY3LDEyIEBAIFJlZ0V4cFByb3RvdHlwZTo6UmVnRXhwUHJvdG90eXBlKEpT
R2xvYmEKIHsKIH0KIAotYm9vbCBSZWdFeHBQcm90b3R5cGU6OmdldE93blByb3BlcnR5U2xvdChK
U0NlbGwqIGNlbGwsIEV4ZWNTdGF0ZSogZXhlYywgY29uc3QgSWRlbnRpZmllciYgcHJvcGVydHlO
YW1lLCBQcm9wZXJ0eVNsb3QgJnNsb3QpCitib29sIFJlZ0V4cFByb3RvdHlwZTo6Z2V0T3duUHJv
cGVydHlTbG90KEpTQ2VsbCogY2VsbCwgRXhlY1N0YXRlKiBleGVjLCBQcm9wZXJ0eU5hbWUgcHJv
cGVydHlOYW1lLCBQcm9wZXJ0eVNsb3QgJnNsb3QpCiB7CiAgICAgcmV0dXJuIGdldFN0YXRpY0Z1
bmN0aW9uU2xvdDxSZWdFeHBPYmplY3Q+KGV4ZWMsIEV4ZWNTdGF0ZTo6cmVnRXhwUHJvdG90eXBl
VGFibGUoZXhlYyksIGpzQ2FzdDxSZWdFeHBQcm90b3R5cGUqPihjZWxsKSwgcHJvcGVydHlOYW1l
LCBzbG90KTsKIH0KIAotYm9vbCBSZWdFeHBQcm90b3R5cGU6OmdldE93blByb3BlcnR5RGVzY3Jp
cHRvcihKU09iamVjdCogb2JqZWN0LCBFeGVjU3RhdGUqIGV4ZWMsIGNvbnN0IElkZW50aWZpZXIm
IHByb3BlcnR5TmFtZSwgUHJvcGVydHlEZXNjcmlwdG9yJiBkZXNjcmlwdG9yKQorYm9vbCBSZWdF
eHBQcm90b3R5cGU6OmdldE93blByb3BlcnR5RGVzY3JpcHRvcihKU09iamVjdCogb2JqZWN0LCBF
eGVjU3RhdGUqIGV4ZWMsIFByb3BlcnR5TmFtZSBwcm9wZXJ0eU5hbWUsIFByb3BlcnR5RGVzY3Jp
cHRvciYgZGVzY3JpcHRvcikKIHsKICAgICByZXR1cm4gZ2V0U3RhdGljRnVuY3Rpb25EZXNjcmlw
dG9yPFJlZ0V4cE9iamVjdD4oZXhlYywgRXhlY1N0YXRlOjpyZWdFeHBQcm90b3R5cGVUYWJsZShl
eGVjKSwganNDYXN0PFJlZ0V4cFByb3RvdHlwZSo+KG9iamVjdCksIHByb3BlcnR5TmFtZSwgZGVz
Y3JpcHRvcik7CiB9CkluZGV4OiBTb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9SZWdFeHBQ
cm90b3R5cGUuaAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9S
ZWdFeHBQcm90b3R5cGUuaAkocmV2aXNpb24gMTE2NjY3KQorKysgU291cmNlL0phdmFTY3JpcHRD
b3JlL3J1bnRpbWUvUmVnRXhwUHJvdG90eXBlLmgJKHdvcmtpbmcgY29weSkKQEAgLTQ5LDggKzQ5
LDggQEAgbmFtZXNwYWNlIEpTQyB7CiAgICAgICAgIHN0YXRpYyBjb25zdCB1bnNpZ25lZCBTdHJ1
Y3R1cmVGbGFncyA9IE92ZXJyaWRlc0dldE93blByb3BlcnR5U2xvdCB8IFJlZ0V4cE9iamVjdDo6
U3RydWN0dXJlRmxhZ3M7CiAKICAgICBwcml2YXRlOgotICAgICAgICBzdGF0aWMgYm9vbCBnZXRP
d25Qcm9wZXJ0eVNsb3QoSlNDZWxsKiwgRXhlY1N0YXRlKiwgY29uc3QgSWRlbnRpZmllciYsIFBy
b3BlcnR5U2xvdCYpOwotICAgICAgICBzdGF0aWMgYm9vbCBnZXRPd25Qcm9wZXJ0eURlc2NyaXB0
b3IoSlNPYmplY3QqLCBFeGVjU3RhdGUqLCBjb25zdCBJZGVudGlmaWVyJiwgUHJvcGVydHlEZXNj
cmlwdG9yJik7CisgICAgICAgIHN0YXRpYyBib29sIGdldE93blByb3BlcnR5U2xvdChKU0NlbGwq
LCBFeGVjU3RhdGUqLCBQcm9wZXJ0eU5hbWUsIFByb3BlcnR5U2xvdCYpOworICAgICAgICBzdGF0
aWMgYm9vbCBnZXRPd25Qcm9wZXJ0eURlc2NyaXB0b3IoSlNPYmplY3QqLCBFeGVjU3RhdGUqLCBQ
cm9wZXJ0eU5hbWUsIFByb3BlcnR5RGVzY3JpcHRvciYpOwogICAgIH07CiAKIH0gLy8gbmFtZXNw
YWNlIEpTQwpJbmRleDogU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvU3RyaWN0RXZhbEFj
dGl2YXRpb24uY3BwCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1l
L1N0cmljdEV2YWxBY3RpdmF0aW9uLmNwcAkocmV2aXNpb24gMTE2NjY3KQorKysgU291cmNlL0ph
dmFTY3JpcHRDb3JlL3J1bnRpbWUvU3RyaWN0RXZhbEFjdGl2YXRpb24uY3BwCSh3b3JraW5nIGNv
cHkpCkBAIC0zNyw3ICszNyw3IEBAIFN0cmljdEV2YWxBY3RpdmF0aW9uOjpTdHJpY3RFdmFsQWN0
aXZhdGkKIHsKIH0KIAotYm9vbCBTdHJpY3RFdmFsQWN0aXZhdGlvbjo6ZGVsZXRlUHJvcGVydHko
SlNDZWxsKiwgRXhlY1N0YXRlKiwgY29uc3QgSWRlbnRpZmllciYpCitib29sIFN0cmljdEV2YWxB
Y3RpdmF0aW9uOjpkZWxldGVQcm9wZXJ0eShKU0NlbGwqLCBFeGVjU3RhdGUqLCBQcm9wZXJ0eU5h
bWUpCiB7CiAgICAgcmV0dXJuIGZhbHNlOwogfQpJbmRleDogU291cmNlL0phdmFTY3JpcHRDb3Jl
L3J1bnRpbWUvU3RyaWN0RXZhbEFjdGl2YXRpb24uaAo9PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvSmF2
YVNjcmlwdENvcmUvcnVudGltZS9TdHJpY3RFdmFsQWN0aXZhdGlvbi5oCShyZXZpc2lvbiAxMTY2
NjcpCisrKyBTb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9TdHJpY3RFdmFsQWN0aXZhdGlv
bi5oCSh3b3JraW5nIGNvcHkpCkBAIC00MSw3ICs0MSw3IEBAIHB1YmxpYzoKICAgICAgICAgcmV0
dXJuIGFjdGl2YXRpb247CiAgICAgfQogCi0gICAgc3RhdGljIGJvb2wgZGVsZXRlUHJvcGVydHko
SlNDZWxsKiwgRXhlY1N0YXRlKiwgY29uc3QgSWRlbnRpZmllciYpOworICAgIHN0YXRpYyBib29s
IGRlbGV0ZVByb3BlcnR5KEpTQ2VsbCosIEV4ZWNTdGF0ZSosIFByb3BlcnR5TmFtZSk7CiAgICAg
c3RhdGljIEpTT2JqZWN0KiB0b1RoaXNPYmplY3QoSlNDZWxsKiwgRXhlY1N0YXRlKik7CiAKICAg
ICBzdGF0aWMgU3RydWN0dXJlKiBjcmVhdGVTdHJ1Y3R1cmUoSlNHbG9iYWxEYXRhJiBnbG9iYWxE
YXRhLCBKU0dsb2JhbE9iamVjdCogZ2xvYmFsT2JqZWN0LCBKU1ZhbHVlIHByb3RvdHlwZSkKSW5k
ZXg6IFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL1N0cmluZ0NvbnN0cnVjdG9yLmNwcAo9
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09Ci0tLSBTb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9TdHJpbmdDb25zdHJ1
Y3Rvci5jcHAJKHJldmlzaW9uIDExNjY2NykKKysrIFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50
aW1lL1N0cmluZ0NvbnN0cnVjdG9yLmNwcAkod29ya2luZyBjb3B5KQpAQCAtNTUsMTcgKzU1LDE3
IEBAIFN0cmluZ0NvbnN0cnVjdG9yOjpTdHJpbmdDb25zdHJ1Y3RvcihKU0cKIAogdm9pZCBTdHJp
bmdDb25zdHJ1Y3Rvcjo6ZmluaXNoQ3JlYXRpb24oRXhlY1N0YXRlKiBleGVjLCBTdHJpbmdQcm90
b3R5cGUqIHN0cmluZ1Byb3RvdHlwZSkKIHsKLSAgICBCYXNlOjpmaW5pc2hDcmVhdGlvbihleGVj
LT5nbG9iYWxEYXRhKCksIElkZW50aWZpZXIoZXhlYywgc3RyaW5nUHJvdG90eXBlLT5jbGFzc0lu
Zm8oKS0+Y2xhc3NOYW1lKSk7CisgICAgQmFzZTo6ZmluaXNoQ3JlYXRpb24oZXhlYy0+Z2xvYmFs
RGF0YSgpLCBzdHJpbmdQcm90b3R5cGUtPmNsYXNzSW5mbygpLT5jbGFzc05hbWUpOwogICAgIHB1
dERpcmVjdFdpdGhvdXRUcmFuc2l0aW9uKGV4ZWMtPmdsb2JhbERhdGEoKSwgZXhlYy0+cHJvcGVy
dHlOYW1lcygpLnByb3RvdHlwZSwgc3RyaW5nUHJvdG90eXBlLCBSZWFkT25seSB8IERvbnRFbnVt
IHwgRG9udERlbGV0ZSk7CiAgICAgcHV0RGlyZWN0V2l0aG91dFRyYW5zaXRpb24oZXhlYy0+Z2xv
YmFsRGF0YSgpLCBleGVjLT5wcm9wZXJ0eU5hbWVzKCkubGVuZ3RoLCBqc051bWJlcigxKSwgUmVh
ZE9ubHkgfCBEb250RW51bSB8IERvbnREZWxldGUpOwogfQogCi1ib29sIFN0cmluZ0NvbnN0cnVj
dG9yOjpnZXRPd25Qcm9wZXJ0eVNsb3QoSlNDZWxsKiBjZWxsLCBFeGVjU3RhdGUqIGV4ZWMsIGNv
bnN0IElkZW50aWZpZXImIHByb3BlcnR5TmFtZSwgUHJvcGVydHlTbG90ICZzbG90KQorYm9vbCBT
dHJpbmdDb25zdHJ1Y3Rvcjo6Z2V0T3duUHJvcGVydHlTbG90KEpTQ2VsbCogY2VsbCwgRXhlY1N0
YXRlKiBleGVjLCBQcm9wZXJ0eU5hbWUgcHJvcGVydHlOYW1lLCBQcm9wZXJ0eVNsb3QgJnNsb3Qp
CiB7CiAgICAgcmV0dXJuIGdldFN0YXRpY0Z1bmN0aW9uU2xvdDxJbnRlcm5hbEZ1bmN0aW9uPihl
eGVjLCBFeGVjU3RhdGU6OnN0cmluZ0NvbnN0cnVjdG9yVGFibGUoZXhlYyksIGpzQ2FzdDxTdHJp
bmdDb25zdHJ1Y3Rvcio+KGNlbGwpLCBwcm9wZXJ0eU5hbWUsIHNsb3QpOwogfQogCi1ib29sIFN0
cmluZ0NvbnN0cnVjdG9yOjpnZXRPd25Qcm9wZXJ0eURlc2NyaXB0b3IoSlNPYmplY3QqIG9iamVj
dCwgRXhlY1N0YXRlKiBleGVjLCBjb25zdCBJZGVudGlmaWVyJiBwcm9wZXJ0eU5hbWUsIFByb3Bl
cnR5RGVzY3JpcHRvciYgZGVzY3JpcHRvcikKK2Jvb2wgU3RyaW5nQ29uc3RydWN0b3I6OmdldE93
blByb3BlcnR5RGVzY3JpcHRvcihKU09iamVjdCogb2JqZWN0LCBFeGVjU3RhdGUqIGV4ZWMsIFBy
b3BlcnR5TmFtZSBwcm9wZXJ0eU5hbWUsIFByb3BlcnR5RGVzY3JpcHRvciYgZGVzY3JpcHRvcikK
IHsKICAgICByZXR1cm4gZ2V0U3RhdGljRnVuY3Rpb25EZXNjcmlwdG9yPEludGVybmFsRnVuY3Rp
b24+KGV4ZWMsIEV4ZWNTdGF0ZTo6c3RyaW5nQ29uc3RydWN0b3JUYWJsZShleGVjKSwganNDYXN0
PFN0cmluZ0NvbnN0cnVjdG9yKj4ob2JqZWN0KSwgcHJvcGVydHlOYW1lLCBkZXNjcmlwdG9yKTsK
IH0KSW5kZXg6IFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL1N0cmluZ0NvbnN0cnVjdG9y
LmgKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PQotLS0gU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvU3RyaW5nQ29u
c3RydWN0b3IuaAkocmV2aXNpb24gMTE2NjY3KQorKysgU291cmNlL0phdmFTY3JpcHRDb3JlL3J1
bnRpbWUvU3RyaW5nQ29uc3RydWN0b3IuaAkod29ya2luZyBjb3B5KQpAQCAtNTQsOCArNTQsOCBA
QCBuYW1lc3BhY2UgSlNDIHsKICAgICAgICAgc3RhdGljIENvbnN0cnVjdFR5cGUgZ2V0Q29uc3Ry
dWN0RGF0YShKU0NlbGwqLCBDb25zdHJ1Y3REYXRhJik7CiAgICAgICAgIHN0YXRpYyBDYWxsVHlw
ZSBnZXRDYWxsRGF0YShKU0NlbGwqLCBDYWxsRGF0YSYpOwogCi0gICAgICAgIHN0YXRpYyBib29s
IGdldE93blByb3BlcnR5U2xvdChKU0NlbGwqLCBFeGVjU3RhdGUqLCBjb25zdCBJZGVudGlmaWVy
JiwgUHJvcGVydHlTbG90Jik7Ci0gICAgICAgIHN0YXRpYyBib29sIGdldE93blByb3BlcnR5RGVz
Y3JpcHRvcihKU09iamVjdCosIEV4ZWNTdGF0ZSosIGNvbnN0IElkZW50aWZpZXImLCBQcm9wZXJ0
eURlc2NyaXB0b3ImKTsKKyAgICAgICAgc3RhdGljIGJvb2wgZ2V0T3duUHJvcGVydHlTbG90KEpT
Q2VsbCosIEV4ZWNTdGF0ZSosIFByb3BlcnR5TmFtZSwgUHJvcGVydHlTbG90Jik7CisgICAgICAg
IHN0YXRpYyBib29sIGdldE93blByb3BlcnR5RGVzY3JpcHRvcihKU09iamVjdCosIEV4ZWNTdGF0
ZSosIFByb3BlcnR5TmFtZSwgUHJvcGVydHlEZXNjcmlwdG9yJik7CiAgICAgfTsKIAogfSAvLyBu
YW1lc3BhY2UgSlNDCkluZGV4OiBTb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9TdHJpbmdP
YmplY3QuY3BwCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL1N0
cmluZ09iamVjdC5jcHAJKHJldmlzaW9uIDExNjY2NykKKysrIFNvdXJjZS9KYXZhU2NyaXB0Q29y
ZS9ydW50aW1lL1N0cmluZ09iamVjdC5jcHAJKHdvcmtpbmcgY29weSkKQEAgLTQzLDcgKzQzLDcg
QEAgdm9pZCBTdHJpbmdPYmplY3Q6OmZpbmlzaENyZWF0aW9uKEpTR2xvYgogICAgIHNldEludGVy
bmFsVmFsdWUoZ2xvYmFsRGF0YSwgc3RyaW5nKTsKIH0KIAotYm9vbCBTdHJpbmdPYmplY3Q6Omdl
dE93blByb3BlcnR5U2xvdChKU0NlbGwqIGNlbGwsIEV4ZWNTdGF0ZSogZXhlYywgY29uc3QgSWRl
bnRpZmllciYgcHJvcGVydHlOYW1lLCBQcm9wZXJ0eVNsb3QmIHNsb3QpCitib29sIFN0cmluZ09i
amVjdDo6Z2V0T3duUHJvcGVydHlTbG90KEpTQ2VsbCogY2VsbCwgRXhlY1N0YXRlKiBleGVjLCBQ
cm9wZXJ0eU5hbWUgcHJvcGVydHlOYW1lLCBQcm9wZXJ0eVNsb3QmIHNsb3QpCiB7CiAgICAgU3Ry
aW5nT2JqZWN0KiB0aGlzT2JqZWN0ID0ganNDYXN0PFN0cmluZ09iamVjdCo+KGNlbGwpOwogICAg
IGlmICh0aGlzT2JqZWN0LT5pbnRlcm5hbFZhbHVlKCktPmdldFN0cmluZ1Byb3BlcnR5U2xvdChl
eGVjLCBwcm9wZXJ0eU5hbWUsIHNsb3QpKQpAQCAtNTksNyArNTksNyBAQCBib29sIFN0cmluZ09i
amVjdDo6Z2V0T3duUHJvcGVydHlTbG90QnlJCiAgICAgcmV0dXJuIEpTT2JqZWN0OjpnZXRPd25Q
cm9wZXJ0eVNsb3QodGhpc09iamVjdCwgZXhlYywgSWRlbnRpZmllcjo6ZnJvbShleGVjLCBwcm9w
ZXJ0eU5hbWUpLCBzbG90KTsKIH0KIAotYm9vbCBTdHJpbmdPYmplY3Q6OmdldE93blByb3BlcnR5
RGVzY3JpcHRvcihKU09iamVjdCogb2JqZWN0LCBFeGVjU3RhdGUqIGV4ZWMsIGNvbnN0IElkZW50
aWZpZXImIHByb3BlcnR5TmFtZSwgUHJvcGVydHlEZXNjcmlwdG9yJiBkZXNjcmlwdG9yKQorYm9v
bCBTdHJpbmdPYmplY3Q6OmdldE93blByb3BlcnR5RGVzY3JpcHRvcihKU09iamVjdCogb2JqZWN0
LCBFeGVjU3RhdGUqIGV4ZWMsIFByb3BlcnR5TmFtZSBwcm9wZXJ0eU5hbWUsIFByb3BlcnR5RGVz
Y3JpcHRvciYgZGVzY3JpcHRvcikKIHsKICAgICBTdHJpbmdPYmplY3QqIHRoaXNPYmplY3QgPSBq
c0Nhc3Q8U3RyaW5nT2JqZWN0Kj4ob2JqZWN0KTsKICAgICBpZiAodGhpc09iamVjdC0+aW50ZXJu
YWxWYWx1ZSgpLT5nZXRTdHJpbmdQcm9wZXJ0eURlc2NyaXB0b3IoZXhlYywgcHJvcGVydHlOYW1l
LCBkZXNjcmlwdG9yKSkKQEAgLTY3LDcgKzY3LDcgQEAgYm9vbCBTdHJpbmdPYmplY3Q6OmdldE93
blByb3BlcnR5RGVzY3JpcAogICAgIHJldHVybiBKU09iamVjdDo6Z2V0T3duUHJvcGVydHlEZXNj
cmlwdG9yKHRoaXNPYmplY3QsIGV4ZWMsIHByb3BlcnR5TmFtZSwgZGVzY3JpcHRvcik7CiB9CiAK
LXZvaWQgU3RyaW5nT2JqZWN0OjpwdXQoSlNDZWxsKiBjZWxsLCBFeGVjU3RhdGUqIGV4ZWMsIGNv
bnN0IElkZW50aWZpZXImIHByb3BlcnR5TmFtZSwgSlNWYWx1ZSB2YWx1ZSwgUHV0UHJvcGVydHlT
bG90JiBzbG90KQordm9pZCBTdHJpbmdPYmplY3Q6OnB1dChKU0NlbGwqIGNlbGwsIEV4ZWNTdGF0
ZSogZXhlYywgUHJvcGVydHlOYW1lIHByb3BlcnR5TmFtZSwgSlNWYWx1ZSB2YWx1ZSwgUHV0UHJv
cGVydHlTbG90JiBzbG90KQogewogICAgIGlmIChwcm9wZXJ0eU5hbWUgPT0gZXhlYy0+cHJvcGVy
dHlOYW1lcygpLmxlbmd0aCkgewogICAgICAgICBpZiAoc2xvdC5pc1N0cmljdE1vZGUoKSkKQEAg
LTc3LDcgKzc3LDcgQEAgdm9pZCBTdHJpbmdPYmplY3Q6OnB1dChKU0NlbGwqIGNlbGwsIEV4ZQog
ICAgIEpTT2JqZWN0OjpwdXQoY2VsbCwgZXhlYywgcHJvcGVydHlOYW1lLCB2YWx1ZSwgc2xvdCk7
CiB9CiAKLWJvb2wgU3RyaW5nT2JqZWN0OjpkZWZpbmVPd25Qcm9wZXJ0eShKU09iamVjdCogb2Jq
ZWN0LCBFeGVjU3RhdGUqIGV4ZWMsIGNvbnN0IElkZW50aWZpZXImIHByb3BlcnR5TmFtZSwgUHJv
cGVydHlEZXNjcmlwdG9yJiBkZXNjcmlwdG9yLCBib29sIHRocm93RXhjZXB0aW9uKQorYm9vbCBT
dHJpbmdPYmplY3Q6OmRlZmluZU93blByb3BlcnR5KEpTT2JqZWN0KiBvYmplY3QsIEV4ZWNTdGF0
ZSogZXhlYywgUHJvcGVydHlOYW1lIHByb3BlcnR5TmFtZSwgUHJvcGVydHlEZXNjcmlwdG9yJiBk
ZXNjcmlwdG9yLCBib29sIHRocm93RXhjZXB0aW9uKQogewogICAgIFN0cmluZ09iamVjdCogdGhp
c09iamVjdCA9IGpzQ2FzdDxTdHJpbmdPYmplY3QqPihvYmplY3QpOwogCkBAIC0xMTksMTUgKzEx
OSwxNiBAQCBib29sIFN0cmluZ09iamVjdDo6ZGVmaW5lT3duUHJvcGVydHkoSlNPCiAgICAgcmV0
dXJuIEJhc2U6OmRlZmluZU93blByb3BlcnR5KG9iamVjdCwgZXhlYywgcHJvcGVydHlOYW1lLCBk
ZXNjcmlwdG9yLCB0aHJvd0V4Y2VwdGlvbik7CiB9CiAKLWJvb2wgU3RyaW5nT2JqZWN0OjpkZWxl
dGVQcm9wZXJ0eShKU0NlbGwqIGNlbGwsIEV4ZWNTdGF0ZSogZXhlYywgY29uc3QgSWRlbnRpZmll
ciYgcHJvcGVydHlOYW1lKQorYm9vbCBTdHJpbmdPYmplY3Q6OmRlbGV0ZVByb3BlcnR5KEpTQ2Vs
bCogY2VsbCwgRXhlY1N0YXRlKiBleGVjLCBQcm9wZXJ0eU5hbWUgcHJvcGVydHlOYW1lKQogewog
ICAgIFN0cmluZ09iamVjdCogdGhpc09iamVjdCA9IGpzQ2FzdDxTdHJpbmdPYmplY3QqPihjZWxs
KTsKICAgICBpZiAocHJvcGVydHlOYW1lID09IGV4ZWMtPnByb3BlcnR5TmFtZXMoKS5sZW5ndGgp
CiAgICAgICAgIHJldHVybiBmYWxzZTsKLSAgICBib29sIGlzU3RyaWN0VUludDMyOwotICAgIHVu
c2lnbmVkIGkgPSBwcm9wZXJ0eU5hbWUudG9VSW50MzIoaXNTdHJpY3RVSW50MzIpOwotICAgIGlm
IChpc1N0cmljdFVJbnQzMiAmJiB0aGlzT2JqZWN0LT5pbnRlcm5hbFZhbHVlKCktPmNhbkdldElu
ZGV4KGkpKQorICAgIHVuc2lnbmVkIGkgPSBwcm9wZXJ0eU5hbWUuYXNJbmRleCgpOworICAgIGlm
ICh0aGlzT2JqZWN0LT5pbnRlcm5hbFZhbHVlKCktPmNhbkdldEluZGV4KGkpKSB7CisgICAgICAg
IEFTU0VSVChpICE9IFByb3BlcnR5TmFtZTo6Tm90QW5JbmRleCk7IC8vIE5vIG5lZWQgZm9yIGFu
IGV4cGxpY2l0IGNoZWNrLCB0aGUgYWJvdmUgdGVzdCB3b3VsZCBhbHdheXMgZmFpbCEKICAgICAg
ICAgcmV0dXJuIGZhbHNlOworICAgIH0KICAgICByZXR1cm4gSlNPYmplY3Q6OmRlbGV0ZVByb3Bl
cnR5KHRoaXNPYmplY3QsIGV4ZWMsIHByb3BlcnR5TmFtZSk7CiB9CiAKSW5kZXg6IFNvdXJjZS9K
YXZhU2NyaXB0Q29yZS9ydW50aW1lL1N0cmluZ09iamVjdC5oCj09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJj
ZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL1N0cmluZ09iamVjdC5oCShyZXZpc2lvbiAxMTY2Njcp
CisrKyBTb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9TdHJpbmdPYmplY3QuaAkod29ya2lu
ZyBjb3B5KQpAQCAtNDUsMTUgKzQ1LDE1IEBAIG5hbWVzcGFjZSBKU0MgewogICAgICAgICB9CiAg
ICAgICAgIHN0YXRpYyBTdHJpbmdPYmplY3QqIGNyZWF0ZShFeGVjU3RhdGUqLCBKU0dsb2JhbE9i
amVjdCosIEpTU3RyaW5nKik7CiAKLSAgICAgICAgc3RhdGljIGJvb2wgZ2V0T3duUHJvcGVydHlT
bG90KEpTQ2VsbCosIEV4ZWNTdGF0ZSosIGNvbnN0IElkZW50aWZpZXImIHByb3BlcnR5TmFtZSwg
UHJvcGVydHlTbG90Jik7CisgICAgICAgIHN0YXRpYyBib29sIGdldE93blByb3BlcnR5U2xvdChK
U0NlbGwqLCBFeGVjU3RhdGUqLCBQcm9wZXJ0eU5hbWUsIFByb3BlcnR5U2xvdCYpOwogICAgICAg
ICBzdGF0aWMgYm9vbCBnZXRPd25Qcm9wZXJ0eVNsb3RCeUluZGV4KEpTQ2VsbCosIEV4ZWNTdGF0
ZSosIHVuc2lnbmVkIHByb3BlcnR5TmFtZSwgUHJvcGVydHlTbG90Jik7Ci0gICAgICAgIHN0YXRp
YyBib29sIGdldE93blByb3BlcnR5RGVzY3JpcHRvcihKU09iamVjdCosIEV4ZWNTdGF0ZSosIGNv
bnN0IElkZW50aWZpZXImLCBQcm9wZXJ0eURlc2NyaXB0b3ImKTsKKyAgICAgICAgc3RhdGljIGJv
b2wgZ2V0T3duUHJvcGVydHlEZXNjcmlwdG9yKEpTT2JqZWN0KiwgRXhlY1N0YXRlKiwgUHJvcGVy
dHlOYW1lLCBQcm9wZXJ0eURlc2NyaXB0b3ImKTsKIAotICAgICAgICBzdGF0aWMgdm9pZCBwdXQo
SlNDZWxsKiwgRXhlY1N0YXRlKiwgY29uc3QgSWRlbnRpZmllciYgcHJvcGVydHlOYW1lLCBKU1Zh
bHVlLCBQdXRQcm9wZXJ0eVNsb3QmKTsKKyAgICAgICAgc3RhdGljIHZvaWQgcHV0KEpTQ2VsbCos
IEV4ZWNTdGF0ZSosIFByb3BlcnR5TmFtZSwgSlNWYWx1ZSwgUHV0UHJvcGVydHlTbG90Jik7CiAK
LSAgICAgICAgc3RhdGljIGJvb2wgZGVsZXRlUHJvcGVydHkoSlNDZWxsKiwgRXhlY1N0YXRlKiwg
Y29uc3QgSWRlbnRpZmllciYgcHJvcGVydHlOYW1lKTsKKyAgICAgICAgc3RhdGljIGJvb2wgZGVs
ZXRlUHJvcGVydHkoSlNDZWxsKiwgRXhlY1N0YXRlKiwgUHJvcGVydHlOYW1lKTsKICAgICAgICAg
c3RhdGljIHZvaWQgZ2V0T3duUHJvcGVydHlOYW1lcyhKU09iamVjdCosIEV4ZWNTdGF0ZSosIFBy
b3BlcnR5TmFtZUFycmF5JiwgRW51bWVyYXRpb25Nb2RlKTsKLSAgICAgICAgc3RhdGljIGJvb2wg
ZGVmaW5lT3duUHJvcGVydHkoSlNPYmplY3QqLCBFeGVjU3RhdGUqLCBjb25zdCBJZGVudGlmaWVy
JiBwcm9wZXJ0eU5hbWUsIFByb3BlcnR5RGVzY3JpcHRvciYsIGJvb2wgc2hvdWxkVGhyb3cpOwor
ICAgICAgICBzdGF0aWMgYm9vbCBkZWZpbmVPd25Qcm9wZXJ0eShKU09iamVjdCosIEV4ZWNTdGF0
ZSosIFByb3BlcnR5TmFtZSwgUHJvcGVydHlEZXNjcmlwdG9yJiwgYm9vbCBzaG91bGRUaHJvdyk7
CiAKICAgICAgICAgc3RhdGljIGNvbnN0IEpTX0VYUE9SVERBVEEgQ2xhc3NJbmZvIHNfaW5mbzsK
IApJbmRleDogU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvU3RyaW5nUHJvdG90eXBlLmNw
cAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09Ci0tLSBTb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9TdHJpbmdQcm90
b3R5cGUuY3BwCShyZXZpc2lvbiAxMTY2NjcpCisrKyBTb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVu
dGltZS9TdHJpbmdQcm90b3R5cGUuY3BwCSh3b3JraW5nIGNvcHkpCkBAIC0xNDcsMTIgKzE0Nywx
MiBAQCB2b2lkIFN0cmluZ1Byb3RvdHlwZTo6ZmluaXNoQ3JlYXRpb24oRXhlCiAgICAgcHV0RGly
ZWN0V2l0aG91dFRyYW5zaXRpb24oZXhlYy0+Z2xvYmFsRGF0YSgpLCBleGVjLT5wcm9wZXJ0eU5h
bWVzKCkubGVuZ3RoLCBqc051bWJlcigwKSwgRG9udERlbGV0ZSB8IFJlYWRPbmx5IHwgRG9udEVu
dW0pOwogfQogCi1ib29sIFN0cmluZ1Byb3RvdHlwZTo6Z2V0T3duUHJvcGVydHlTbG90KEpTQ2Vs
bCogY2VsbCwgRXhlY1N0YXRlKiBleGVjLCBjb25zdCBJZGVudGlmaWVyJiBwcm9wZXJ0eU5hbWUs
IFByb3BlcnR5U2xvdCAmc2xvdCkKK2Jvb2wgU3RyaW5nUHJvdG90eXBlOjpnZXRPd25Qcm9wZXJ0
eVNsb3QoSlNDZWxsKiBjZWxsLCBFeGVjU3RhdGUqIGV4ZWMsIFByb3BlcnR5TmFtZSBwcm9wZXJ0
eU5hbWUsIFByb3BlcnR5U2xvdCAmc2xvdCkKIHsKICAgICByZXR1cm4gZ2V0U3RhdGljRnVuY3Rp
b25TbG90PFN0cmluZ09iamVjdD4oZXhlYywgRXhlY1N0YXRlOjpzdHJpbmdUYWJsZShleGVjKSwg
anNDYXN0PFN0cmluZ1Byb3RvdHlwZSo+KGNlbGwpLCBwcm9wZXJ0eU5hbWUsIHNsb3QpOwogfQog
Ci1ib29sIFN0cmluZ1Byb3RvdHlwZTo6Z2V0T3duUHJvcGVydHlEZXNjcmlwdG9yKEpTT2JqZWN0
KiBvYmplY3QsIEV4ZWNTdGF0ZSogZXhlYywgY29uc3QgSWRlbnRpZmllciYgcHJvcGVydHlOYW1l
LCBQcm9wZXJ0eURlc2NyaXB0b3ImIGRlc2NyaXB0b3IpCitib29sIFN0cmluZ1Byb3RvdHlwZTo6
Z2V0T3duUHJvcGVydHlEZXNjcmlwdG9yKEpTT2JqZWN0KiBvYmplY3QsIEV4ZWNTdGF0ZSogZXhl
YywgUHJvcGVydHlOYW1lIHByb3BlcnR5TmFtZSwgUHJvcGVydHlEZXNjcmlwdG9yJiBkZXNjcmlw
dG9yKQogewogICAgIHJldHVybiBnZXRTdGF0aWNGdW5jdGlvbkRlc2NyaXB0b3I8U3RyaW5nT2Jq
ZWN0PihleGVjLCBFeGVjU3RhdGU6OnN0cmluZ1RhYmxlKGV4ZWMpLCBqc0Nhc3Q8U3RyaW5nUHJv
dG90eXBlKj4ob2JqZWN0KSwgcHJvcGVydHlOYW1lLCBkZXNjcmlwdG9yKTsKIH0KSW5kZXg6IFNv
dXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL1N0cmluZ1Byb3RvdHlwZS5oCj09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0K
LS0tIFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL1N0cmluZ1Byb3RvdHlwZS5oCShyZXZp
c2lvbiAxMTY2NjcpCisrKyBTb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9TdHJpbmdQcm90
b3R5cGUuaAkod29ya2luZyBjb3B5KQpAQCAtNDIsOCArNDIsOCBAQCBuYW1lc3BhY2UgSlNDIHsK
ICAgICAgICAgICAgIHJldHVybiBwcm90b3R5cGU7CiAgICAgICAgIH0KIAotICAgICAgICBzdGF0
aWMgYm9vbCBnZXRPd25Qcm9wZXJ0eVNsb3QoSlNDZWxsKiwgRXhlY1N0YXRlKiwgY29uc3QgSWRl
bnRpZmllciYgcHJvcGVydHlOYW1lLCBQcm9wZXJ0eVNsb3QmKTsKLSAgICAgICAgc3RhdGljIGJv
b2wgZ2V0T3duUHJvcGVydHlEZXNjcmlwdG9yKEpTT2JqZWN0KiwgRXhlY1N0YXRlKiwgY29uc3Qg
SWRlbnRpZmllciYsIFByb3BlcnR5RGVzY3JpcHRvciYpOworICAgICAgICBzdGF0aWMgYm9vbCBn
ZXRPd25Qcm9wZXJ0eVNsb3QoSlNDZWxsKiwgRXhlY1N0YXRlKiwgUHJvcGVydHlOYW1lLCBQcm9w
ZXJ0eVNsb3QmKTsKKyAgICAgICAgc3RhdGljIGJvb2wgZ2V0T3duUHJvcGVydHlEZXNjcmlwdG9y
KEpTT2JqZWN0KiwgRXhlY1N0YXRlKiwgUHJvcGVydHlOYW1lLCBQcm9wZXJ0eURlc2NyaXB0b3Im
KTsKIAogICAgICAgICBzdGF0aWMgU3RydWN0dXJlKiBjcmVhdGVTdHJ1Y3R1cmUoSlNHbG9iYWxE
YXRhJiBnbG9iYWxEYXRhLCBKU0dsb2JhbE9iamVjdCogZ2xvYmFsT2JqZWN0LCBKU1ZhbHVlIHBy
b3RvdHlwZSkKICAgICAgICAgewpJbmRleDogU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUv
U3RydWN0dXJlLmNwcAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGlt
ZS9TdHJ1Y3R1cmUuY3BwCShyZXZpc2lvbiAxMTY2NjcpCisrKyBTb3VyY2UvSmF2YVNjcmlwdENv
cmUvcnVudGltZS9TdHJ1Y3R1cmUuY3BwCSh3b3JraW5nIGNvcHkpCkBAIC0yNiw3ICsyNiw2IEBA
CiAjaW5jbHVkZSAiY29uZmlnLmgiCiAjaW5jbHVkZSAiU3RydWN0dXJlLmgiCiAKLSNpbmNsdWRl
ICJJZGVudGlmaWVyLmgiCiAjaW5jbHVkZSAiSlNPYmplY3QuaCIKICNpbmNsdWRlICJKU1Byb3Bl
cnR5TmFtZUl0ZXJhdG9yLmgiCiAjaW5jbHVkZSAiTG9va3VwLmgiCkBAIC0yNjcsNyArMjY2LDcg
QEAgdm9pZCBTdHJ1Y3R1cmU6Omdyb3dQcm9wZXJ0eVN0b3JhZ2VDYXBhYwogICAgICAgICBtX3By
b3BlcnR5U3RvcmFnZUNhcGFjaXR5ICo9IDI7CiB9CiAKLXZvaWQgU3RydWN0dXJlOjpkZXNwZWNp
ZnlEaWN0aW9uYXJ5RnVuY3Rpb24oSlNHbG9iYWxEYXRhJiBnbG9iYWxEYXRhLCBjb25zdCBJZGVu
dGlmaWVyJiBwcm9wZXJ0eU5hbWUpCit2b2lkIFN0cnVjdHVyZTo6ZGVzcGVjaWZ5RGljdGlvbmFy
eUZ1bmN0aW9uKEpTR2xvYmFsRGF0YSYgZ2xvYmFsRGF0YSwgUHJvcGVydHlOYW1lIHByb3BlcnR5
TmFtZSkKIHsKICAgICBTdHJpbmdJbXBsKiByZXAgPSBwcm9wZXJ0eU5hbWUuaW1wbCgpOwogCkBA
IC0yODEsNyArMjgwLDcgQEAgdm9pZCBTdHJ1Y3R1cmU6OmRlc3BlY2lmeURpY3Rpb25hcnlGdW5j
dAogICAgIGVudHJ5LT5zcGVjaWZpY1ZhbHVlLmNsZWFyKCk7CiB9CiAKLVN0cnVjdHVyZSogU3Ry
dWN0dXJlOjphZGRQcm9wZXJ0eVRyYW5zaXRpb25Ub0V4aXN0aW5nU3RydWN0dXJlKFN0cnVjdHVy
ZSogc3RydWN0dXJlLCBjb25zdCBJZGVudGlmaWVyJiBwcm9wZXJ0eU5hbWUsIHVuc2lnbmVkIGF0
dHJpYnV0ZXMsIEpTQ2VsbCogc3BlY2lmaWNWYWx1ZSwgc2l6ZV90JiBvZmZzZXQpCitTdHJ1Y3R1
cmUqIFN0cnVjdHVyZTo6YWRkUHJvcGVydHlUcmFuc2l0aW9uVG9FeGlzdGluZ1N0cnVjdHVyZShT
dHJ1Y3R1cmUqIHN0cnVjdHVyZSwgUHJvcGVydHlOYW1lIHByb3BlcnR5TmFtZSwgdW5zaWduZWQg
YXR0cmlidXRlcywgSlNDZWxsKiBzcGVjaWZpY1ZhbHVlLCBzaXplX3QmIG9mZnNldCkKIHsKICAg
ICBBU1NFUlQoIXN0cnVjdHVyZS0+aXNEaWN0aW9uYXJ5KCkpOwogICAgIEFTU0VSVChzdHJ1Y3R1
cmUtPmlzT2JqZWN0KCkpOwpAQCAtMjk4LDcgKzI5Nyw3IEBAIFN0cnVjdHVyZSogU3RydWN0dXJl
OjphZGRQcm9wZXJ0eVRyYW5zaXQKICAgICByZXR1cm4gMDsKIH0KIAotU3RydWN0dXJlKiBTdHJ1
Y3R1cmU6OmFkZFByb3BlcnR5VHJhbnNpdGlvbihKU0dsb2JhbERhdGEmIGdsb2JhbERhdGEsIFN0
cnVjdHVyZSogc3RydWN0dXJlLCBjb25zdCBJZGVudGlmaWVyJiBwcm9wZXJ0eU5hbWUsIHVuc2ln
bmVkIGF0dHJpYnV0ZXMsIEpTQ2VsbCogc3BlY2lmaWNWYWx1ZSwgc2l6ZV90JiBvZmZzZXQpCitT
dHJ1Y3R1cmUqIFN0cnVjdHVyZTo6YWRkUHJvcGVydHlUcmFuc2l0aW9uKEpTR2xvYmFsRGF0YSYg
Z2xvYmFsRGF0YSwgU3RydWN0dXJlKiBzdHJ1Y3R1cmUsIFByb3BlcnR5TmFtZSBwcm9wZXJ0eU5h
bWUsIHVuc2lnbmVkIGF0dHJpYnV0ZXMsIEpTQ2VsbCogc3BlY2lmaWNWYWx1ZSwgc2l6ZV90JiBv
ZmZzZXQpCiB7CiAgICAgLy8gSWYgd2UgaGF2ZSBhIHNwZWNpZmljIGZ1bmN0aW9uLCB3ZSBtYXkg
aGF2ZSBnb3QgdG8gdGhpcyBwb2ludCBpZiB0aGVyZSBpcwogICAgIC8vIGFscmVhZHkgYSB0cmFu
c2l0aW9uIHdpdGggdGhlIGNvcnJlY3QgcHJvcGVydHkgbmFtZSBhbmQgYXR0cmlidXRlcywgYnV0
CkBAIC0zNTUsNyArMzU0LDcgQEAgU3RydWN0dXJlKiBTdHJ1Y3R1cmU6OmFkZFByb3BlcnR5VHJh
bnNpdAogICAgIHJldHVybiB0cmFuc2l0aW9uOwogfQogCi1TdHJ1Y3R1cmUqIFN0cnVjdHVyZTo6
cmVtb3ZlUHJvcGVydHlUcmFuc2l0aW9uKEpTR2xvYmFsRGF0YSYgZ2xvYmFsRGF0YSwgU3RydWN0
dXJlKiBzdHJ1Y3R1cmUsIGNvbnN0IElkZW50aWZpZXImIHByb3BlcnR5TmFtZSwgc2l6ZV90JiBv
ZmZzZXQpCitTdHJ1Y3R1cmUqIFN0cnVjdHVyZTo6cmVtb3ZlUHJvcGVydHlUcmFuc2l0aW9uKEpT
R2xvYmFsRGF0YSYgZ2xvYmFsRGF0YSwgU3RydWN0dXJlKiBzdHJ1Y3R1cmUsIFByb3BlcnR5TmFt
ZSBwcm9wZXJ0eU5hbWUsIHNpemVfdCYgb2Zmc2V0KQogewogICAgIEFTU0VSVCghc3RydWN0dXJl
LT5pc1VuY2FjaGVhYmxlRGljdGlvbmFyeSgpKTsKIApAQCAtMzgxLDcgKzM4MCw3IEBAIFN0cnVj
dHVyZSogU3RydWN0dXJlOjpjaGFuZ2VQcm90b3R5cGVUcmEKICAgICByZXR1cm4gdHJhbnNpdGlv
bjsKIH0KIAotU3RydWN0dXJlKiBTdHJ1Y3R1cmU6OmRlc3BlY2lmeUZ1bmN0aW9uVHJhbnNpdGlv
bihKU0dsb2JhbERhdGEmIGdsb2JhbERhdGEsIFN0cnVjdHVyZSogc3RydWN0dXJlLCBjb25zdCBJ
ZGVudGlmaWVyJiByZXBsYWNlRnVuY3Rpb24pCitTdHJ1Y3R1cmUqIFN0cnVjdHVyZTo6ZGVzcGVj
aWZ5RnVuY3Rpb25UcmFuc2l0aW9uKEpTR2xvYmFsRGF0YSYgZ2xvYmFsRGF0YSwgU3RydWN0dXJl
KiBzdHJ1Y3R1cmUsIFByb3BlcnR5TmFtZSByZXBsYWNlRnVuY3Rpb24pCiB7CiAgICAgQVNTRVJU
KHN0cnVjdHVyZS0+bV9zcGVjaWZpY0Z1bmN0aW9uVGhyYXNoQ291bnQgPCBtYXhTcGVjaWZpY0Z1
bmN0aW9uVGhyYXNoQ291bnQpOwogICAgIFN0cnVjdHVyZSogdHJhbnNpdGlvbiA9IGNyZWF0ZShn
bG9iYWxEYXRhLCBzdHJ1Y3R1cmUpOwpAQCAtNDA0LDcgKzQwMyw3IEBAIFN0cnVjdHVyZSogU3Ry
dWN0dXJlOjpkZXNwZWNpZnlGdW5jdGlvblQKICAgICByZXR1cm4gdHJhbnNpdGlvbjsKIH0KIAot
U3RydWN0dXJlKiBTdHJ1Y3R1cmU6OmF0dHJpYnV0ZUNoYW5nZVRyYW5zaXRpb24oSlNHbG9iYWxE
YXRhJiBnbG9iYWxEYXRhLCBTdHJ1Y3R1cmUqIHN0cnVjdHVyZSwgY29uc3QgSWRlbnRpZmllciYg
cHJvcGVydHlOYW1lLCB1bnNpZ25lZCBhdHRyaWJ1dGVzKQorU3RydWN0dXJlKiBTdHJ1Y3R1cmU6
OmF0dHJpYnV0ZUNoYW5nZVRyYW5zaXRpb24oSlNHbG9iYWxEYXRhJiBnbG9iYWxEYXRhLCBTdHJ1
Y3R1cmUqIHN0cnVjdHVyZSwgUHJvcGVydHlOYW1lIHByb3BlcnR5TmFtZSwgdW5zaWduZWQgYXR0
cmlidXRlcykKIHsKICAgICBpZiAoIXN0cnVjdHVyZS0+aXNVbmNhY2hlYWJsZURpY3Rpb25hcnko
KSkgewogICAgICAgICBTdHJ1Y3R1cmUqIHRyYW5zaXRpb24gPSBjcmVhdGUoZ2xvYmFsRGF0YSwg
c3RydWN0dXJlKTsKQEAgLTU2Miw3ICs1NjEsNyBAQCBTdHJ1Y3R1cmUqIFN0cnVjdHVyZTo6Zmxh
dHRlbkRpY3Rpb25hcnlTCiAgICAgcmV0dXJuIHRoaXM7CiB9CiAKLXNpemVfdCBTdHJ1Y3R1cmU6
OmFkZFByb3BlcnR5V2l0aG91dFRyYW5zaXRpb24oSlNHbG9iYWxEYXRhJiBnbG9iYWxEYXRhLCBj
b25zdCBJZGVudGlmaWVyJiBwcm9wZXJ0eU5hbWUsIHVuc2lnbmVkIGF0dHJpYnV0ZXMsIEpTQ2Vs
bCogc3BlY2lmaWNWYWx1ZSkKK3NpemVfdCBTdHJ1Y3R1cmU6OmFkZFByb3BlcnR5V2l0aG91dFRy
YW5zaXRpb24oSlNHbG9iYWxEYXRhJiBnbG9iYWxEYXRhLCBQcm9wZXJ0eU5hbWUgcHJvcGVydHlO
YW1lLCB1bnNpZ25lZCBhdHRyaWJ1dGVzLCBKU0NlbGwqIHNwZWNpZmljVmFsdWUpCiB7CiAgICAg
QVNTRVJUKCFtX2VudW1lcmF0aW9uQ2FjaGUpOwogCkBAIC01NzksNyArNTc4LDcgQEAgc2l6ZV90
IFN0cnVjdHVyZTo6YWRkUHJvcGVydHlXaXRob3V0VHJhbgogICAgIHJldHVybiBvZmZzZXQ7CiB9
CiAKLXNpemVfdCBTdHJ1Y3R1cmU6OnJlbW92ZVByb3BlcnR5V2l0aG91dFRyYW5zaXRpb24oSlNH
bG9iYWxEYXRhJiBnbG9iYWxEYXRhLCBjb25zdCBJZGVudGlmaWVyJiBwcm9wZXJ0eU5hbWUpCitz
aXplX3QgU3RydWN0dXJlOjpyZW1vdmVQcm9wZXJ0eVdpdGhvdXRUcmFuc2l0aW9uKEpTR2xvYmFs
RGF0YSYgZ2xvYmFsRGF0YSwgUHJvcGVydHlOYW1lIHByb3BlcnR5TmFtZSkKIHsKICAgICBBU1NF
UlQoaXNVbmNhY2hlYWJsZURpY3Rpb25hcnkoKSk7CiAgICAgQVNTRVJUKCFtX2VudW1lcmF0aW9u
Q2FjaGUpOwpAQCAtNjM2LDEzICs2MzUsMTUgQEAgUGFzc093blB0cjxQcm9wZXJ0eVRhYmxlPiBT
dHJ1Y3R1cmU6OmNvcAogICAgIHJldHVybiBhZG9wdFB0cihtX3Byb3BlcnR5VGFibGUgPyBuZXcg
UHJvcGVydHlUYWJsZShnbG9iYWxEYXRhLCBvd25lciwgKm1fcHJvcGVydHlUYWJsZSkgOiBuZXcg
UHJvcGVydHlUYWJsZShtX29mZnNldCA9PSBub09mZnNldCA/IDAgOiBtX29mZnNldCkpOwogfQog
Ci1zaXplX3QgU3RydWN0dXJlOjpnZXQoSlNHbG9iYWxEYXRhJiBnbG9iYWxEYXRhLCBTdHJpbmdJ
bXBsKiBwcm9wZXJ0eU5hbWUsIHVuc2lnbmVkJiBhdHRyaWJ1dGVzLCBKU0NlbGwqJiBzcGVjaWZp
Y1ZhbHVlKQorc2l6ZV90IFN0cnVjdHVyZTo6Z2V0KEpTR2xvYmFsRGF0YSYgZ2xvYmFsRGF0YSwg
UHJvcGVydHlOYW1lIHByb3BlcnR5TmFtZSwgdW5zaWduZWQmIGF0dHJpYnV0ZXMsIEpTQ2VsbCom
IHNwZWNpZmljVmFsdWUpCiB7CisgICAgQVNTRVJUKHN0cnVjdHVyZSgpLT5jbGFzc0luZm8oKSA9
PSAmc19pbmZvKTsKKwogICAgIG1hdGVyaWFsaXplUHJvcGVydHlNYXBJZk5lY2Vzc2FyeShnbG9i
YWxEYXRhKTsKICAgICBpZiAoIW1fcHJvcGVydHlUYWJsZSkKICAgICAgICAgcmV0dXJuIFdURjo6
bm90Rm91bmQ7CiAKLSAgICBQcm9wZXJ0eU1hcEVudHJ5KiBlbnRyeSA9IG1fcHJvcGVydHlUYWJs
ZS0+ZmluZChwcm9wZXJ0eU5hbWUpLmZpcnN0OworICAgIFByb3BlcnR5TWFwRW50cnkqIGVudHJ5
ID0gbV9wcm9wZXJ0eVRhYmxlLT5maW5kKHByb3BlcnR5TmFtZS5pbXBsKCkpLmZpcnN0OwogICAg
IGlmICghZW50cnkpCiAgICAgICAgIHJldHVybiBXVEY6Om5vdEZvdW5kOwogCkBAIC02NTEsMTMg
KzY1MiwxMiBAQCBzaXplX3QgU3RydWN0dXJlOjpnZXQoSlNHbG9iYWxEYXRhJiBnbG9iCiAgICAg
cmV0dXJuIGVudHJ5LT5vZmZzZXQ7CiB9CiAKLWJvb2wgU3RydWN0dXJlOjpkZXNwZWNpZnlGdW5j
dGlvbihKU0dsb2JhbERhdGEmIGdsb2JhbERhdGEsIGNvbnN0IElkZW50aWZpZXImIHByb3BlcnR5
TmFtZSkKK2Jvb2wgU3RydWN0dXJlOjpkZXNwZWNpZnlGdW5jdGlvbihKU0dsb2JhbERhdGEmIGds
b2JhbERhdGEsIFByb3BlcnR5TmFtZSBwcm9wZXJ0eU5hbWUpCiB7CiAgICAgbWF0ZXJpYWxpemVQ
cm9wZXJ0eU1hcElmTmVjZXNzYXJ5KGdsb2JhbERhdGEpOwogICAgIGlmICghbV9wcm9wZXJ0eVRh
YmxlKQogICAgICAgICByZXR1cm4gZmFsc2U7CiAKLSAgICBBU1NFUlQoIXByb3BlcnR5TmFtZS5p
c051bGwoKSk7CiAgICAgUHJvcGVydHlNYXBFbnRyeSogZW50cnkgPSBtX3Byb3BlcnR5VGFibGUt
PmZpbmQocHJvcGVydHlOYW1lLmltcGwoKSkuZmlyc3Q7CiAgICAgaWYgKCFlbnRyeSkKICAgICAg
ICAgcmV0dXJuIGZhbHNlOwpAQCAtNjc4LDkgKzY3OCw4IEBAIHZvaWQgU3RydWN0dXJlOjpkZXNw
ZWNpZnlBbGxGdW5jdGlvbnMoSlMKICAgICAgICAgaXRlci0+c3BlY2lmaWNWYWx1ZS5jbGVhcigp
OwogfQogCi1zaXplX3QgU3RydWN0dXJlOjpwdXRTcGVjaWZpY1ZhbHVlKEpTR2xvYmFsRGF0YSYg
Z2xvYmFsRGF0YSwgY29uc3QgSWRlbnRpZmllciYgcHJvcGVydHlOYW1lLCB1bnNpZ25lZCBhdHRy
aWJ1dGVzLCBKU0NlbGwqIHNwZWNpZmljVmFsdWUpCitzaXplX3QgU3RydWN0dXJlOjpwdXRTcGVj
aWZpY1ZhbHVlKEpTR2xvYmFsRGF0YSYgZ2xvYmFsRGF0YSwgUHJvcGVydHlOYW1lIHByb3BlcnR5
TmFtZSwgdW5zaWduZWQgYXR0cmlidXRlcywgSlNDZWxsKiBzcGVjaWZpY1ZhbHVlKQogewotICAg
IEFTU0VSVCghcHJvcGVydHlOYW1lLmlzTnVsbCgpKTsKICAgICBBU1NFUlQoZ2V0KGdsb2JhbERh
dGEsIHByb3BlcnR5TmFtZSkgPT0gbm90Rm91bmQpOwogCiAgICAgY2hlY2tDb25zaXN0ZW5jeSgp
OwpAQCAtNzA1LDEwICs3MDQsOCBAQCBzaXplX3QgU3RydWN0dXJlOjpwdXRTcGVjaWZpY1ZhbHVl
KEpTR2xvCiAgICAgcmV0dXJuIG5ld09mZnNldDsKIH0KIAotc2l6ZV90IFN0cnVjdHVyZTo6cmVt
b3ZlKGNvbnN0IElkZW50aWZpZXImIHByb3BlcnR5TmFtZSkKK3NpemVfdCBTdHJ1Y3R1cmU6OnJl
bW92ZShQcm9wZXJ0eU5hbWUgcHJvcGVydHlOYW1lKQogewotICAgIEFTU0VSVCghcHJvcGVydHlO
YW1lLmlzTnVsbCgpKTsKLQogICAgIGNoZWNrQ29uc2lzdGVuY3koKTsKIAogICAgIFN0cmluZ0lt
cGwqIHJlcCA9IHByb3BlcnR5TmFtZS5pbXBsKCk7CkluZGV4OiBTb3VyY2UvSmF2YVNjcmlwdENv
cmUvcnVudGltZS9TdHJ1Y3R1cmUuaAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvSmF2YVNjcmlwdENv
cmUvcnVudGltZS9TdHJ1Y3R1cmUuaAkocmV2aXNpb24gMTE2NjY3KQorKysgU291cmNlL0phdmFT
Y3JpcHRDb3JlL3J1bnRpbWUvU3RydWN0dXJlLmgJKHdvcmtpbmcgY29weSkKQEAgLTI3LDExICsy
NywxMSBAQAogI2RlZmluZSBTdHJ1Y3R1cmVfaAogCiAjaW5jbHVkZSAiQ2xhc3NJbmZvLmgiCi0j
aW5jbHVkZSAiSWRlbnRpZmllci5oIgogI2luY2x1ZGUgIkpTQ2VsbC5oIgogI2luY2x1ZGUgIkpT
VHlwZS5oIgogI2luY2x1ZGUgIkpTVmFsdWUuaCIKICNpbmNsdWRlICJQcm9wZXJ0eU1hcEhhc2hU
YWJsZS5oIgorI2luY2x1ZGUgIlByb3BlcnR5TmFtZS5oIgogI2luY2x1ZGUgIlByb3BlcnR5TmFt
ZUFycmF5LmgiCiAjaW5jbHVkZSAiUHJvdGVjdC5oIgogI2luY2x1ZGUgIlN0cnVjdHVyZVRyYW5z
aXRpb25UYWJsZS5oIgpAQCAtODYsMTIgKzg2LDEyIEBAIG5hbWVzcGFjZSBKU0MgewogICAgIHB1
YmxpYzoKICAgICAgICAgc3RhdGljIHZvaWQgZHVtcFN0YXRpc3RpY3MoKTsKIAotICAgICAgICBK
U19FWFBPUlRfUFJJVkFURSBzdGF0aWMgU3RydWN0dXJlKiBhZGRQcm9wZXJ0eVRyYW5zaXRpb24o
SlNHbG9iYWxEYXRhJiwgU3RydWN0dXJlKiwgY29uc3QgSWRlbnRpZmllciYgcHJvcGVydHlOYW1l
LCB1bnNpZ25lZCBhdHRyaWJ1dGVzLCBKU0NlbGwqIHNwZWNpZmljVmFsdWUsIHNpemVfdCYgb2Zm
c2V0KTsKLSAgICAgICAgSlNfRVhQT1JUX1BSSVZBVEUgc3RhdGljIFN0cnVjdHVyZSogYWRkUHJv
cGVydHlUcmFuc2l0aW9uVG9FeGlzdGluZ1N0cnVjdHVyZShTdHJ1Y3R1cmUqLCBjb25zdCBJZGVu
dGlmaWVyJiBwcm9wZXJ0eU5hbWUsIHVuc2lnbmVkIGF0dHJpYnV0ZXMsIEpTQ2VsbCogc3BlY2lm
aWNWYWx1ZSwgc2l6ZV90JiBvZmZzZXQpOwotICAgICAgICBzdGF0aWMgU3RydWN0dXJlKiByZW1v
dmVQcm9wZXJ0eVRyYW5zaXRpb24oSlNHbG9iYWxEYXRhJiwgU3RydWN0dXJlKiwgY29uc3QgSWRl
bnRpZmllciYgcHJvcGVydHlOYW1lLCBzaXplX3QmIG9mZnNldCk7CisgICAgICAgIEpTX0VYUE9S
VF9QUklWQVRFIHN0YXRpYyBTdHJ1Y3R1cmUqIGFkZFByb3BlcnR5VHJhbnNpdGlvbihKU0dsb2Jh
bERhdGEmLCBTdHJ1Y3R1cmUqLCBQcm9wZXJ0eU5hbWUsIHVuc2lnbmVkIGF0dHJpYnV0ZXMsIEpT
Q2VsbCogc3BlY2lmaWNWYWx1ZSwgc2l6ZV90JiBvZmZzZXQpOworICAgICAgICBKU19FWFBPUlRf
UFJJVkFURSBzdGF0aWMgU3RydWN0dXJlKiBhZGRQcm9wZXJ0eVRyYW5zaXRpb25Ub0V4aXN0aW5n
U3RydWN0dXJlKFN0cnVjdHVyZSosIFByb3BlcnR5TmFtZSwgdW5zaWduZWQgYXR0cmlidXRlcywg
SlNDZWxsKiBzcGVjaWZpY1ZhbHVlLCBzaXplX3QmIG9mZnNldCk7CisgICAgICAgIHN0YXRpYyBT
dHJ1Y3R1cmUqIHJlbW92ZVByb3BlcnR5VHJhbnNpdGlvbihKU0dsb2JhbERhdGEmLCBTdHJ1Y3R1
cmUqLCBQcm9wZXJ0eU5hbWUsIHNpemVfdCYgb2Zmc2V0KTsKICAgICAgICAgSlNfRVhQT1JUX1BS
SVZBVEUgc3RhdGljIFN0cnVjdHVyZSogY2hhbmdlUHJvdG90eXBlVHJhbnNpdGlvbihKU0dsb2Jh
bERhdGEmLCBTdHJ1Y3R1cmUqLCBKU1ZhbHVlIHByb3RvdHlwZSk7Ci0gICAgICAgIEpTX0VYUE9S
VF9QUklWQVRFIHN0YXRpYyBTdHJ1Y3R1cmUqIGRlc3BlY2lmeUZ1bmN0aW9uVHJhbnNpdGlvbihK
U0dsb2JhbERhdGEmLCBTdHJ1Y3R1cmUqLCBjb25zdCBJZGVudGlmaWVyJik7Ci0gICAgICAgIHN0
YXRpYyBTdHJ1Y3R1cmUqIGF0dHJpYnV0ZUNoYW5nZVRyYW5zaXRpb24oSlNHbG9iYWxEYXRhJiwg
U3RydWN0dXJlKiwgY29uc3QgSWRlbnRpZmllciYgcHJvcGVydHlOYW1lLCB1bnNpZ25lZCBhdHRy
aWJ1dGVzKTsKKyAgICAgICAgSlNfRVhQT1JUX1BSSVZBVEUgc3RhdGljIFN0cnVjdHVyZSogZGVz
cGVjaWZ5RnVuY3Rpb25UcmFuc2l0aW9uKEpTR2xvYmFsRGF0YSYsIFN0cnVjdHVyZSosIFByb3Bl
cnR5TmFtZSk7CisgICAgICAgIHN0YXRpYyBTdHJ1Y3R1cmUqIGF0dHJpYnV0ZUNoYW5nZVRyYW5z
aXRpb24oSlNHbG9iYWxEYXRhJiwgU3RydWN0dXJlKiwgUHJvcGVydHlOYW1lLCB1bnNpZ25lZCBh
dHRyaWJ1dGVzKTsKICAgICAgICAgc3RhdGljIFN0cnVjdHVyZSogdG9DYWNoZWFibGVEaWN0aW9u
YXJ5VHJhbnNpdGlvbihKU0dsb2JhbERhdGEmLCBTdHJ1Y3R1cmUqKTsKICAgICAgICAgc3RhdGlj
IFN0cnVjdHVyZSogdG9VbmNhY2hlYWJsZURpY3Rpb25hcnlUcmFuc2l0aW9uKEpTR2xvYmFsRGF0
YSYsIFN0cnVjdHVyZSopOwogICAgICAgICBzdGF0aWMgU3RydWN0dXJlKiBzZWFsVHJhbnNpdGlv
bihKU0dsb2JhbERhdGEmLCBTdHJ1Y3R1cmUqKTsKQEAgLTEwOCw4ICsxMDgsOCBAQCBuYW1lc3Bh
Y2UgSlNDIHsKICAgICAgICAgc3RhdGljIHZvaWQgZGVzdHJveShKU0NlbGwqKTsKIAogICAgICAg
ICAvLyBUaGVzZSBzaG91bGQgYmUgdXNlZCB3aXRoIGNhdXRpb24uICAKLSAgICAgICAgSlNfRVhQ
T1JUX1BSSVZBVEUgc2l6ZV90IGFkZFByb3BlcnR5V2l0aG91dFRyYW5zaXRpb24oSlNHbG9iYWxE
YXRhJiwgY29uc3QgSWRlbnRpZmllciYgcHJvcGVydHlOYW1lLCB1bnNpZ25lZCBhdHRyaWJ1dGVz
LCBKU0NlbGwqIHNwZWNpZmljVmFsdWUpOwotICAgICAgICBzaXplX3QgcmVtb3ZlUHJvcGVydHlX
aXRob3V0VHJhbnNpdGlvbihKU0dsb2JhbERhdGEmLCBjb25zdCBJZGVudGlmaWVyJiBwcm9wZXJ0
eU5hbWUpOworICAgICAgICBKU19FWFBPUlRfUFJJVkFURSBzaXplX3QgYWRkUHJvcGVydHlXaXRo
b3V0VHJhbnNpdGlvbihKU0dsb2JhbERhdGEmLCBQcm9wZXJ0eU5hbWUsIHVuc2lnbmVkIGF0dHJp
YnV0ZXMsIEpTQ2VsbCogc3BlY2lmaWNWYWx1ZSk7CisgICAgICAgIHNpemVfdCByZW1vdmVQcm9w
ZXJ0eVdpdGhvdXRUcmFuc2l0aW9uKEpTR2xvYmFsRGF0YSYsIFByb3BlcnR5TmFtZSk7CiAgICAg
ICAgIHZvaWQgc2V0UHJvdG90eXBlV2l0aG91dFRyYW5zaXRpb24oSlNHbG9iYWxEYXRhJiBnbG9i
YWxEYXRhLCBKU1ZhbHVlIHByb3RvdHlwZSkgeyBtX3Byb3RvdHlwZS5zZXQoZ2xvYmFsRGF0YSwg
dGhpcywgcHJvdG90eXBlKTsgfQogICAgICAgICAKICAgICAgICAgYm9vbCBpc0RpY3Rpb25hcnko
KSBjb25zdCB7IHJldHVybiBtX2RpY3Rpb25hcnlLaW5kICE9IE5vbmVEaWN0aW9uYXJ5S2luZDsg
fQpAQCAtMTM2LDE1ICsxMzYsOSBAQCBuYW1lc3BhY2UgSlNDIHsKICAgICAgICAgdW5zaWduZWQg
cHJvcGVydHlTdG9yYWdlU2l6ZSgpIGNvbnN0IHsgQVNTRVJUKHN0cnVjdHVyZSgpLT5jbGFzc0lu
Zm8oKSA9PSAmc19pbmZvKTsgcmV0dXJuIChtX3Byb3BlcnR5VGFibGUgPyBtX3Byb3BlcnR5VGFi
bGUtPnByb3BlcnR5U3RvcmFnZVNpemUoKSA6IHN0YXRpY19jYXN0PHVuc2lnbmVkPihtX29mZnNl
dCArIDEpKTsgfQogICAgICAgICBib29sIGlzVXNpbmdJbmxpbmVTdG9yYWdlKCkgY29uc3Q7CiAK
LSAgICAgICAgc2l6ZV90IGdldChKU0dsb2JhbERhdGEmLCBjb25zdCBJZGVudGlmaWVyJiBwcm9w
ZXJ0eU5hbWUpOworICAgICAgICBzaXplX3QgZ2V0KEpTR2xvYmFsRGF0YSYsIFByb3BlcnR5TmFt
ZSk7CiAgICAgICAgIHNpemVfdCBnZXQoSlNHbG9iYWxEYXRhJiwgY29uc3QgVVN0cmluZyYgbmFt
ZSk7Ci0gICAgICAgIEpTX0VYUE9SVF9QUklWQVRFIHNpemVfdCBnZXQoSlNHbG9iYWxEYXRhJiwg
U3RyaW5nSW1wbCogcHJvcGVydHlOYW1lLCB1bnNpZ25lZCYgYXR0cmlidXRlcywgSlNDZWxsKiYg
c3BlY2lmaWNWYWx1ZSk7Ci0gICAgICAgIHNpemVfdCBnZXQoSlNHbG9iYWxEYXRhJiBnbG9iYWxE
YXRhLCBjb25zdCBJZGVudGlmaWVyJiBwcm9wZXJ0eU5hbWUsIHVuc2lnbmVkJiBhdHRyaWJ1dGVz
LCBKU0NlbGwqJiBzcGVjaWZpY1ZhbHVlKQotICAgICAgICB7Ci0gICAgICAgICAgICBBU1NFUlQo
IXByb3BlcnR5TmFtZS5pc051bGwoKSk7Ci0gICAgICAgICAgICBBU1NFUlQoc3RydWN0dXJlKCkt
PmNsYXNzSW5mbygpID09ICZzX2luZm8pOwotICAgICAgICAgICAgcmV0dXJuIGdldChnbG9iYWxE
YXRhLCBwcm9wZXJ0eU5hbWUuaW1wbCgpLCBhdHRyaWJ1dGVzLCBzcGVjaWZpY1ZhbHVlKTsKLSAg
ICAgICAgfQorICAgICAgICBKU19FWFBPUlRfUFJJVkFURSBzaXplX3QgZ2V0KEpTR2xvYmFsRGF0
YSYsIFByb3BlcnR5TmFtZSwgdW5zaWduZWQmIGF0dHJpYnV0ZXMsIEpTQ2VsbComIHNwZWNpZmlj
VmFsdWUpOwogCiAgICAgICAgIGJvb2wgaGFzR2V0dGVyU2V0dGVyUHJvcGVydGllcygpIGNvbnN0
IHsgcmV0dXJuIG1faGFzR2V0dGVyU2V0dGVyUHJvcGVydGllczsgfQogICAgICAgICBib29sIGhh
c1JlYWRPbmx5T3JHZXR0ZXJTZXR0ZXJQcm9wZXJ0aWVzRXhjbHVkaW5nUHJvdG8oKSBjb25zdCB7
IHJldHVybiBtX2hhc1JlYWRPbmx5T3JHZXR0ZXJTZXR0ZXJQcm9wZXJ0aWVzRXhjbHVkaW5nUHJv
dG87IH0KQEAgLTE2Myw3ICsxNTcsNyBAQCBuYW1lc3BhY2UgSlNDIHsKICAgICAgICAgCiAgICAg
ICAgIGJvb2wgaXNFbXB0eSgpIGNvbnN0IHsgcmV0dXJuIG1fcHJvcGVydHlUYWJsZSA/IG1fcHJv
cGVydHlUYWJsZS0+aXNFbXB0eSgpIDogbV9vZmZzZXQgPT0gbm9PZmZzZXQ7IH0KIAotICAgICAg
ICBKU19FWFBPUlRfUFJJVkFURSB2b2lkIGRlc3BlY2lmeURpY3Rpb25hcnlGdW5jdGlvbihKU0ds
b2JhbERhdGEmLCBjb25zdCBJZGVudGlmaWVyJiBwcm9wZXJ0eU5hbWUpOworICAgICAgICBKU19F
WFBPUlRfUFJJVkFURSB2b2lkIGRlc3BlY2lmeURpY3Rpb25hcnlGdW5jdGlvbihKU0dsb2JhbERh
dGEmLCBQcm9wZXJ0eU5hbWUpOwogICAgICAgICB2b2lkIGRpc2FibGVTcGVjaWZpY0Z1bmN0aW9u
VHJhY2tpbmcoKSB7IG1fc3BlY2lmaWNGdW5jdGlvblRocmFzaENvdW50ID0gbWF4U3BlY2lmaWNG
dW5jdGlvblRocmFzaENvdW50OyB9CiAKICAgICAgICAgdm9pZCBzZXRFbnVtZXJhdGlvbkNhY2hl
KEpTR2xvYmFsRGF0YSYsIEpTUHJvcGVydHlOYW1lSXRlcmF0b3IqIGVudW1lcmF0aW9uQ2FjaGUp
OyAvLyBEZWZpbmVkIGluIEpTUHJvcGVydHlOYW1lSXRlcmF0b3IuaC4KQEAgLTIxNiw3ICsyMTAs
NyBAQCBuYW1lc3BhY2UgSlNDIHsKIAogICAgIHByaXZhdGU6CiAgICAgICAgIGZyaWVuZCBjbGFz
cyBMTEludE9mZnNldHNFeHRyYWN0b3I7Ci0gICAgICAgIAorCiAgICAgICAgIEpTX0VYUE9SVF9Q
UklWQVRFIFN0cnVjdHVyZShKU0dsb2JhbERhdGEmLCBKU0dsb2JhbE9iamVjdCosIEpTVmFsdWUg
cHJvdG90eXBlLCBjb25zdCBUeXBlSW5mbyYsIGNvbnN0IENsYXNzSW5mbyopOwogICAgICAgICBT
dHJ1Y3R1cmUoSlNHbG9iYWxEYXRhJik7CiAgICAgICAgIFN0cnVjdHVyZShKU0dsb2JhbERhdGEm
LCBjb25zdCBTdHJ1Y3R1cmUqKTsKQEAgLTIzNiwxMyArMjMwLDEzIEBAIG5hbWVzcGFjZSBKU0Mg
ewogICAgICAgICB9IERpY3Rpb25hcnlLaW5kOwogICAgICAgICBzdGF0aWMgU3RydWN0dXJlKiB0
b0RpY3Rpb25hcnlUcmFuc2l0aW9uKEpTR2xvYmFsRGF0YSYsIFN0cnVjdHVyZSosIERpY3Rpb25h
cnlLaW5kKTsKIAotICAgICAgICBzaXplX3QgcHV0U3BlY2lmaWNWYWx1ZShKU0dsb2JhbERhdGEm
LCBjb25zdCBJZGVudGlmaWVyJiBwcm9wZXJ0eU5hbWUsIHVuc2lnbmVkIGF0dHJpYnV0ZXMsIEpT
Q2VsbCogc3BlY2lmaWNWYWx1ZSk7Ci0gICAgICAgIHNpemVfdCByZW1vdmUoY29uc3QgSWRlbnRp
ZmllciYgcHJvcGVydHlOYW1lKTsKKyAgICAgICAgc2l6ZV90IHB1dFNwZWNpZmljVmFsdWUoSlNH
bG9iYWxEYXRhJiwgUHJvcGVydHlOYW1lLCB1bnNpZ25lZCBhdHRyaWJ1dGVzLCBKU0NlbGwqIHNw
ZWNpZmljVmFsdWUpOworICAgICAgICBzaXplX3QgcmVtb3ZlKFByb3BlcnR5TmFtZSk7CiAKICAg
ICAgICAgdm9pZCBjcmVhdGVQcm9wZXJ0eU1hcCh1bnNpZ25lZCBrZXlDb3VudCA9IDApOwogICAg
ICAgICB2b2lkIGNoZWNrQ29uc2lzdGVuY3koKTsKIAotICAgICAgICBib29sIGRlc3BlY2lmeUZ1
bmN0aW9uKEpTR2xvYmFsRGF0YSYsIGNvbnN0IElkZW50aWZpZXImKTsKKyAgICAgICAgYm9vbCBk
ZXNwZWNpZnlGdW5jdGlvbihKU0dsb2JhbERhdGEmLCBQcm9wZXJ0eU5hbWUpOwogICAgICAgICB2
b2lkIGRlc3BlY2lmeUFsbEZ1bmN0aW9ucyhKU0dsb2JhbERhdGEmKTsKIAogICAgICAgICBQYXNz
T3duUHRyPFByb3BlcnR5VGFibGU+IGNvcHlQcm9wZXJ0eVRhYmxlKEpTR2xvYmFsRGF0YSYsIFN0
cnVjdHVyZSogb3duZXIpOwpAQCAtMzE0LDcgKzMwOCw3IEBAIG5hbWVzcGFjZSBKU0MgewogICAg
ICAgICB1bnNpZ25lZCBtX3N0YXRpY0Z1bmN0aW9uUmVpZmllZDsKICAgICB9OwogCi0gICAgaW5s
aW5lIHNpemVfdCBTdHJ1Y3R1cmU6OmdldChKU0dsb2JhbERhdGEmIGdsb2JhbERhdGEsIGNvbnN0
IElkZW50aWZpZXImIHByb3BlcnR5TmFtZSkKKyAgICBpbmxpbmUgc2l6ZV90IFN0cnVjdHVyZTo6
Z2V0KEpTR2xvYmFsRGF0YSYgZ2xvYmFsRGF0YSwgUHJvcGVydHlOYW1lIHByb3BlcnR5TmFtZSkK
ICAgICB7CiAgICAgICAgIEFTU0VSVChzdHJ1Y3R1cmUoKS0+Y2xhc3NJbmZvKCkgPT0gJnNfaW5m
byk7CiAgICAgICAgIG1hdGVyaWFsaXplUHJvcGVydHlNYXBJZk5lY2Vzc2FyeShnbG9iYWxEYXRh
KTsKSW5kZXg6IFNvdXJjZS9XZWJDb3JlL0NoYW5nZUxvZwo9PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2Uv
V2ViQ29yZS9DaGFuZ2VMb2cJKHJldmlzaW9uIDExNjc5MikKKysrIFNvdXJjZS9XZWJDb3JlL0No
YW5nZUxvZwkod29ya2luZyBjb3B5KQpAQCAtMSwzICsxLDIyOSBAQAorMjAxMi0wNS0xMSAgR2F2
aW4gQmFycmFjbG91Z2ggIDxiYXJyYWNsb3VnaEBhcHBsZS5jb20+CisKKyAgICAgICAgSW50cm9k
dWNlIFByb3BlcnR5TmFtZSBjbGFzcworICAgICAgICBodHRwczovL2J1Z3Mud2Via2l0Lm9yZy9z
aG93X2J1Zy5jZ2k/aWQ9ODYyNDEKKworICAgICAgICBSZXZpZXdlZCBieSBOT0JPRFkgKE9PUFMh
KS4KKworICAgICAgICBSZXBsYWNlICdjb25zdCBJZGVudGlmaWVyJicgYXJndW1lbnRzIHRvIGZ1
bmN0aW9ucyBhY2Nlc3Npbmcgb2JqZWN0IHByb3BlcnRpZXMgd2l0aCBhIG5ldyAnUHJvcGVydHlO
YW1lJyB0eXBlLgorICAgICAgICBUaGlzIGNoYW5nZSBwYXZlcyB0aGUgd2F5IHRvIGFsbG93IGZv
ciBwcm9wZXJ0aWVzIGtleWVkIGJ5IHZhbHVlcyB0aGF0IGFyZSBub3QgSWRlbnRpZmllcnMuCisK
KyAgICAgICAgVGhpcyBjaGFuZ2UgaXMgbGFyZ2VseSBhIG1lY2hhbmljYWwgZmluZCAmIHJlcGxh
Y2UuCisgICAgICAgIEl0IGFsc28gY2hhbmdlcyBKU0Z1bmN0aW9uJ3MgY29uc3RydWN0b3IgdG8g
dGFrZSBhIFVTdHJpbmcmIGluc3RlYWQgb2YgYW4gSWRlbnRpZmllciYKKyAgICAgICAgKHNpbmNl
IGluIHNvbWUgY2FzZXMgd2UgY2FuIG5vIGxvbmdlciBndWFyYW50ZWUgdGhhdCB3ZSdsbGwgaGF2
ZSBhbiBJZGVudGlmaWVyKSwgYW5kCisgICAgICAgIHVuaWZpZXMgSWRlbnRpZmllcidzIG1ldGhv
ZHMgdG8gb2J0YWluIGFycmF5IGluZGljZXMgb250byBQcm9wZXJ0eU5hbWUuCisKKyAgICAgICAg
VGhlIG5ldyBQcm9wZXJ0eU5hbWUgY2xhc3MgcmV0YWlucyB0aGUgYWJpbGl0eSB0byBzdXBwb3J0
IC5pbXBsKCkgYW5kIC51c3RyaW5nKCksIGJ1dAorICAgICAgICBpbiBhIGZ1dHVyZSBwYXRjaCB3
ZSBtYXkgbmVlZCB0byByZXdvcmsgdGhpcywgc2luY2Ugbm90IGFsbCBQcm9wZXJ0eU5hbWVzIHNo
b3VsZCBiZQorICAgICAgICBlcXVhbCBiYXNlZCBvbiB0aGVpciBzdHJpbmcgcmVwcmVzZW50YXRp
b24uCisKKyAgICAgICAgKiBXZWJDb3JlLmV4cC5pbjoKKyAgICAgICAgKiBiaW5kaW5ncy9qcy9K
U0NTU1N0eWxlRGVjbGFyYXRpb25DdXN0b20uY3BwOgorICAgICAgICAoV2ViQ29yZTo6Y3NzUHJv
cGVydHlJREZvckpTQ1NTUHJvcGVydHlOYW1lKToKKyAgICAgICAgKFdlYkNvcmU6OkpTQ1NTU3R5
bGVEZWNsYXJhdGlvbjo6Z2V0T3duUHJvcGVydHlTbG90RGVsZWdhdGUpOgorICAgICAgICAoV2Vi
Q29yZTo6SlNDU1NTdHlsZURlY2xhcmF0aW9uOjpnZXRPd25Qcm9wZXJ0eURlc2NyaXB0b3JEZWxl
Z2F0ZSk6CisgICAgICAgIChXZWJDb3JlOjpKU0NTU1N0eWxlRGVjbGFyYXRpb246OnB1dERlbGVn
YXRlKToKKyAgICAgICAgKiBiaW5kaW5ncy9qcy9KU0RPTUJpbmRpbmcuY3BwOgorICAgICAgICAo
V2ViQ29yZTo6ZmluZEF0b21pY1N0cmluZyk6CisgICAgICAgIChXZWJDb3JlOjpvYmplY3RUb1N0
cmluZ0Z1bmN0aW9uR2V0dGVyKToKKyAgICAgICAgKiBiaW5kaW5ncy9qcy9KU0RPTUJpbmRpbmcu
aDoKKyAgICAgICAgKFdlYkNvcmUpOgorICAgICAgICAoV2ViQ29yZTo6cHJvcGVydHlOYW1lVG9T
dHJpbmcpOgorICAgICAgICAoV2ViQ29yZTo6cHJvcGVydHlOYW1lVG9BdG9taWNTdHJpbmcpOgor
ICAgICAgICAqIGJpbmRpbmdzL2pzL0pTRE9NTWltZVR5cGVBcnJheUN1c3RvbS5jcHA6CisgICAg
ICAgIChXZWJDb3JlOjpKU0RPTU1pbWVUeXBlQXJyYXk6OmNhbkdldEl0ZW1zRm9yTmFtZSk6Cisg
ICAgICAgIChXZWJDb3JlOjpKU0RPTU1pbWVUeXBlQXJyYXk6Om5hbWVHZXR0ZXIpOgorICAgICAg
ICAqIGJpbmRpbmdzL2pzL0pTRE9NUGx1Z2luQXJyYXlDdXN0b20uY3BwOgorICAgICAgICAoV2Vi
Q29yZTo6SlNET01QbHVnaW5BcnJheTo6Y2FuR2V0SXRlbXNGb3JOYW1lKToKKyAgICAgICAgKFdl
YkNvcmU6OkpTRE9NUGx1Z2luQXJyYXk6Om5hbWVHZXR0ZXIpOgorICAgICAgICAqIGJpbmRpbmdz
L2pzL0pTRE9NUGx1Z2luQ3VzdG9tLmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OkpTRE9NUGx1Z2lu
OjpjYW5HZXRJdGVtc0Zvck5hbWUpOgorICAgICAgICAoV2ViQ29yZTo6SlNET01QbHVnaW46Om5h
bWVHZXR0ZXIpOgorICAgICAgICAqIGJpbmRpbmdzL2pzL0pTRE9NU3RyaW5nTWFwQ3VzdG9tLmNw
cDoKKyAgICAgICAgKFdlYkNvcmU6OkpTRE9NU3RyaW5nTWFwOjpjYW5HZXRJdGVtc0Zvck5hbWUp
OgorICAgICAgICAoV2ViQ29yZTo6SlNET01TdHJpbmdNYXA6Om5hbWVHZXR0ZXIpOgorICAgICAg
ICAoV2ViQ29yZTo6SlNET01TdHJpbmdNYXA6OmRlbGV0ZVByb3BlcnR5KToKKyAgICAgICAgKFdl
YkNvcmU6OkpTRE9NU3RyaW5nTWFwOjpwdXREZWxlZ2F0ZSk6CisgICAgICAgICogYmluZGluZ3Mv
anMvSlNET01XaW5kb3dDdXN0b20uY3BwOgorICAgICAgICAoV2ViQ29yZTo6bm9uQ2FjaGluZ1N0
YXRpY0Z1bmN0aW9uR2V0dGVyKToKKyAgICAgICAgKFdlYkNvcmU6OmNoaWxkRnJhbWVHZXR0ZXIp
OgorICAgICAgICAoV2ViQ29yZTo6bmFtZWRJdGVtR2V0dGVyKToKKyAgICAgICAgKFdlYkNvcmU6
OkpTRE9NV2luZG93OjpnZXRPd25Qcm9wZXJ0eVNsb3QpOgorICAgICAgICAoV2ViQ29yZTo6SlNE
T01XaW5kb3c6OmdldE93blByb3BlcnR5RGVzY3JpcHRvcik6CisgICAgICAgIChXZWJDb3JlOjpK
U0RPTVdpbmRvdzo6cHV0KToKKyAgICAgICAgKFdlYkNvcmU6OkpTRE9NV2luZG93OjpkZWxldGVQ
cm9wZXJ0eSk6CisgICAgICAgIChXZWJDb3JlOjpKU0RPTVdpbmRvdzo6ZGVmaW5lT3duUHJvcGVy
dHkpOgorICAgICAgICAqIGJpbmRpbmdzL2pzL0pTRE9NV2luZG93U2hlbGwuY3BwOgorICAgICAg
ICAoV2ViQ29yZTo6SlNET01XaW5kb3dTaGVsbDo6Z2V0T3duUHJvcGVydHlTbG90KToKKyAgICAg
ICAgKFdlYkNvcmU6OkpTRE9NV2luZG93U2hlbGw6OmdldE93blByb3BlcnR5RGVzY3JpcHRvcik6
CisgICAgICAgIChXZWJDb3JlOjpKU0RPTVdpbmRvd1NoZWxsOjpwdXQpOgorICAgICAgICAoV2Vi
Q29yZTo6SlNET01XaW5kb3dTaGVsbDo6cHV0RGlyZWN0VmlydHVhbCk6CisgICAgICAgIChXZWJD
b3JlOjpKU0RPTVdpbmRvd1NoZWxsOjpkZWZpbmVPd25Qcm9wZXJ0eSk6CisgICAgICAgIChXZWJD
b3JlOjpKU0RPTVdpbmRvd1NoZWxsOjpkZWxldGVQcm9wZXJ0eSk6CisgICAgICAgICogYmluZGlu
Z3MvanMvSlNET01XaW5kb3dTaGVsbC5oOgorICAgICAgICAoSlNET01XaW5kb3dTaGVsbCk6Cisg
ICAgICAgICogYmluZGluZ3MvanMvSlNIVE1MQWxsQ29sbGVjdGlvbkN1c3RvbS5jcHA6CisgICAg
ICAgIChXZWJDb3JlOjpnZXROYW1lZEl0ZW1zKToKKyAgICAgICAgKFdlYkNvcmU6OmNhbGxIVE1M
QWxsQ29sbGVjdGlvbik6CisgICAgICAgIChXZWJDb3JlOjpKU0hUTUxBbGxDb2xsZWN0aW9uOjpj
YW5HZXRJdGVtc0Zvck5hbWUpOgorICAgICAgICAoV2ViQ29yZTo6SlNIVE1MQWxsQ29sbGVjdGlv
bjo6bmFtZUdldHRlcik6CisgICAgICAgIChXZWJDb3JlOjpKU0hUTUxBbGxDb2xsZWN0aW9uOjpp
dGVtKToKKyAgICAgICAgKiBiaW5kaW5ncy9qcy9KU0hUTUxBcHBsZXRFbGVtZW50Q3VzdG9tLmNw
cDoKKyAgICAgICAgKFdlYkNvcmU6OkpTSFRNTEFwcGxldEVsZW1lbnQ6OmdldE93blByb3BlcnR5
U2xvdERlbGVnYXRlKToKKyAgICAgICAgKFdlYkNvcmU6OkpTSFRNTEFwcGxldEVsZW1lbnQ6Omdl
dE93blByb3BlcnR5RGVzY3JpcHRvckRlbGVnYXRlKToKKyAgICAgICAgKFdlYkNvcmU6OkpTSFRN
TEFwcGxldEVsZW1lbnQ6OnB1dERlbGVnYXRlKToKKyAgICAgICAgKiBiaW5kaW5ncy9qcy9KU0hU
TUxDb2xsZWN0aW9uQ3VzdG9tLmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OmdldE5hbWVkSXRlbXMp
OgorICAgICAgICAoV2ViQ29yZTo6SlNIVE1MQ29sbGVjdGlvbjo6Y2FuR2V0SXRlbXNGb3JOYW1l
KToKKyAgICAgICAgKFdlYkNvcmU6OkpTSFRNTENvbGxlY3Rpb246Om5hbWVHZXR0ZXIpOgorICAg
ICAgICAqIGJpbmRpbmdzL2pzL0pTSFRNTERvY3VtZW50Q3VzdG9tLmNwcDoKKyAgICAgICAgKFdl
YkNvcmU6OkpTSFRNTERvY3VtZW50OjpjYW5HZXRJdGVtc0Zvck5hbWUpOgorICAgICAgICAoV2Vi
Q29yZTo6SlNIVE1MRG9jdW1lbnQ6Om5hbWVHZXR0ZXIpOgorICAgICAgICAqIGJpbmRpbmdzL2pz
L0pTSFRNTEVtYmVkRWxlbWVudEN1c3RvbS5jcHA6CisgICAgICAgIChXZWJDb3JlOjpKU0hUTUxF
bWJlZEVsZW1lbnQ6OmdldE93blByb3BlcnR5U2xvdERlbGVnYXRlKToKKyAgICAgICAgKFdlYkNv
cmU6OkpTSFRNTEVtYmVkRWxlbWVudDo6Z2V0T3duUHJvcGVydHlEZXNjcmlwdG9yRGVsZWdhdGUp
OgorICAgICAgICAoV2ViQ29yZTo6SlNIVE1MRW1iZWRFbGVtZW50OjpwdXREZWxlZ2F0ZSk6Cisg
ICAgICAgICogYmluZGluZ3MvanMvSlNIVE1MRm9ybUVsZW1lbnRDdXN0b20uY3BwOgorICAgICAg
ICAoV2ViQ29yZTo6SlNIVE1MRm9ybUVsZW1lbnQ6OmNhbkdldEl0ZW1zRm9yTmFtZSk6CisgICAg
ICAgIChXZWJDb3JlOjpKU0hUTUxGb3JtRWxlbWVudDo6bmFtZUdldHRlcik6CisgICAgICAgICog
YmluZGluZ3MvanMvSlNIVE1MRnJhbWVTZXRFbGVtZW50Q3VzdG9tLmNwcDoKKyAgICAgICAgKFdl
YkNvcmU6OkpTSFRNTEZyYW1lU2V0RWxlbWVudDo6Y2FuR2V0SXRlbXNGb3JOYW1lKToKKyAgICAg
ICAgKFdlYkNvcmU6OkpTSFRNTEZyYW1lU2V0RWxlbWVudDo6bmFtZUdldHRlcik6CisgICAgICAg
ICogYmluZGluZ3MvanMvSlNIVE1MT2JqZWN0RWxlbWVudEN1c3RvbS5jcHA6CisgICAgICAgIChX
ZWJDb3JlOjpKU0hUTUxPYmplY3RFbGVtZW50OjpnZXRPd25Qcm9wZXJ0eVNsb3REZWxlZ2F0ZSk6
CisgICAgICAgIChXZWJDb3JlOjpKU0hUTUxPYmplY3RFbGVtZW50OjpnZXRPd25Qcm9wZXJ0eURl
c2NyaXB0b3JEZWxlZ2F0ZSk6CisgICAgICAgIChXZWJDb3JlOjpKU0hUTUxPYmplY3RFbGVtZW50
OjpwdXREZWxlZ2F0ZSk6CisgICAgICAgICogYmluZGluZ3MvanMvSlNIaXN0b3J5Q3VzdG9tLmNw
cDoKKyAgICAgICAgKFdlYkNvcmU6Om5vbkNhY2hpbmdTdGF0aWNCYWNrRnVuY3Rpb25HZXR0ZXIp
OgorICAgICAgICAoV2ViQ29yZTo6bm9uQ2FjaGluZ1N0YXRpY0ZvcndhcmRGdW5jdGlvbkdldHRl
cik6CisgICAgICAgIChXZWJDb3JlOjpub25DYWNoaW5nU3RhdGljR29GdW5jdGlvbkdldHRlcik6
CisgICAgICAgIChXZWJDb3JlOjpKU0hpc3Rvcnk6OmdldE93blByb3BlcnR5U2xvdERlbGVnYXRl
KToKKyAgICAgICAgKFdlYkNvcmU6OkpTSGlzdG9yeTo6Z2V0T3duUHJvcGVydHlEZXNjcmlwdG9y
RGVsZWdhdGUpOgorICAgICAgICAoV2ViQ29yZTo6SlNIaXN0b3J5OjpwdXREZWxlZ2F0ZSk6Cisg
ICAgICAgIChXZWJDb3JlOjpKU0hpc3Rvcnk6OmRlbGV0ZVByb3BlcnR5KToKKyAgICAgICAgKiBi
aW5kaW5ncy9qcy9KU0xvY2F0aW9uQ3VzdG9tLmNwcDoKKyAgICAgICAgKFdlYkNvcmU6Om5vbkNh
Y2hpbmdTdGF0aWNSZXBsYWNlRnVuY3Rpb25HZXR0ZXIpOgorICAgICAgICAoV2ViQ29yZTo6bm9u
Q2FjaGluZ1N0YXRpY1JlbG9hZEZ1bmN0aW9uR2V0dGVyKToKKyAgICAgICAgKFdlYkNvcmU6Om5v
bkNhY2hpbmdTdGF0aWNBc3NpZ25GdW5jdGlvbkdldHRlcik6CisgICAgICAgIChXZWJDb3JlOjpK
U0xvY2F0aW9uOjpnZXRPd25Qcm9wZXJ0eVNsb3REZWxlZ2F0ZSk6CisgICAgICAgIChXZWJDb3Jl
OjpKU0xvY2F0aW9uOjpnZXRPd25Qcm9wZXJ0eURlc2NyaXB0b3JEZWxlZ2F0ZSk6CisgICAgICAg
IChXZWJDb3JlOjpKU0xvY2F0aW9uOjpwdXREZWxlZ2F0ZSk6CisgICAgICAgIChXZWJDb3JlOjpK
U0xvY2F0aW9uOjpkZWxldGVQcm9wZXJ0eSk6CisgICAgICAgIChXZWJDb3JlOjpKU0xvY2F0aW9u
OjpkZWZpbmVPd25Qcm9wZXJ0eSk6CisgICAgICAgIChXZWJDb3JlOjpKU0xvY2F0aW9uUHJvdG90
eXBlOjpwdXREZWxlZ2F0ZSk6CisgICAgICAgIChXZWJDb3JlOjpKU0xvY2F0aW9uUHJvdG90eXBl
OjpkZWZpbmVPd25Qcm9wZXJ0eSk6CisgICAgICAgICogYmluZGluZ3MvanMvSlNOYW1lZE5vZGVN
YXBDdXN0b20uY3BwOgorICAgICAgICAoV2ViQ29yZTo6SlNOYW1lZE5vZGVNYXA6OmNhbkdldEl0
ZW1zRm9yTmFtZSk6CisgICAgICAgIChXZWJDb3JlOjpKU05hbWVkTm9kZU1hcDo6bmFtZUdldHRl
cik6CisgICAgICAgICogYmluZGluZ3MvanMvSlNOb2RlTGlzdEN1c3RvbS5jcHA6CisgICAgICAg
IChXZWJDb3JlOjpKU05vZGVMaXN0OjpjYW5HZXRJdGVtc0Zvck5hbWUpOgorICAgICAgICAoV2Vi
Q29yZTo6SlNOb2RlTGlzdDo6bmFtZUdldHRlcik6CisgICAgICAgICogYmluZGluZ3MvanMvSlNQ
bHVnaW5FbGVtZW50RnVuY3Rpb25zLmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OnJ1bnRpbWVPYmpl
Y3RQcm9wZXJ0eUdldHRlcik6CisgICAgICAgIChXZWJDb3JlOjpydW50aW1lT2JqZWN0Q3VzdG9t
R2V0T3duUHJvcGVydHlTbG90KToKKyAgICAgICAgKFdlYkNvcmU6OnJ1bnRpbWVPYmplY3RDdXN0
b21HZXRPd25Qcm9wZXJ0eURlc2NyaXB0b3IpOgorICAgICAgICAoV2ViQ29yZTo6cnVudGltZU9i
amVjdEN1c3RvbVB1dCk6CisgICAgICAgICogYmluZGluZ3MvanMvSlNQbHVnaW5FbGVtZW50RnVu
Y3Rpb25zLmg6CisgICAgICAgIChXZWJDb3JlKToKKyAgICAgICAgKiBiaW5kaW5ncy9qcy9KU1N0
b3JhZ2VDdXN0b20uY3BwOgorICAgICAgICAoV2ViQ29yZTo6SlNTdG9yYWdlOjpjYW5HZXRJdGVt
c0Zvck5hbWUpOgorICAgICAgICAoV2ViQ29yZTo6SlNTdG9yYWdlOjpuYW1lR2V0dGVyKToKKyAg
ICAgICAgKFdlYkNvcmU6OkpTU3RvcmFnZTo6ZGVsZXRlUHJvcGVydHkpOgorICAgICAgICAoV2Vi
Q29yZTo6SlNTdG9yYWdlOjpwdXREZWxlZ2F0ZSk6CisgICAgICAgICogYmluZGluZ3MvanMvSlNT
dHlsZVNoZWV0TGlzdEN1c3RvbS5jcHA6CisgICAgICAgIChXZWJDb3JlOjpKU1N0eWxlU2hlZXRM
aXN0OjpjYW5HZXRJdGVtc0Zvck5hbWUpOgorICAgICAgICAoV2ViQ29yZTo6SlNTdHlsZVNoZWV0
TGlzdDo6bmFtZUdldHRlcik6CisgICAgICAgICogYmluZGluZ3MvanMvSlNXb3JrZXJDb250ZXh0
Q3VzdG9tLmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OkpTV29ya2VyQ29udGV4dDo6Z2V0T3duUHJv
cGVydHlTbG90RGVsZWdhdGUpOgorICAgICAgICAoV2ViQ29yZTo6SlNXb3JrZXJDb250ZXh0Ojpn
ZXRPd25Qcm9wZXJ0eURlc2NyaXB0b3JEZWxlZ2F0ZSk6CisgICAgICAgICogYmluZGluZ3Mvc2Ny
aXB0cy9Db2RlR2VuZXJhdG9ySlMucG06CisgICAgICAgIChHZW5lcmF0ZUdldE93blByb3BlcnR5
U2xvdEJvZHkpOgorICAgICAgICAoR2VuZXJhdGVHZXRPd25Qcm9wZXJ0eURlc2NyaXB0b3JCb2R5
KToKKyAgICAgICAgKEdlbmVyYXRlSGVhZGVyKToKKyAgICAgICAgKEdlbmVyYXRlSW1wbGVtZW50
YXRpb24pOgorICAgICAgICAoR2VuZXJhdGVDb25zdHJ1Y3RvckRlY2xhcmF0aW9uKToKKyAgICAg
ICAgKEdlbmVyYXRlQ29uc3RydWN0b3JEZWZpbml0aW9uKToKKyAgICAgICAgKiBicmlkZ2UvYy9j
X2NsYXNzLmNwcDoKKyAgICAgICAgKEpTQzo6QmluZGluZ3M6OkNDbGFzczo6bWV0aG9kc05hbWVk
KToKKyAgICAgICAgKEpTQzo6QmluZGluZ3M6OkNDbGFzczo6ZmllbGROYW1lZCk6CisgICAgICAg
ICogYnJpZGdlL2MvY19jbGFzcy5oOgorICAgICAgICAoQ0NsYXNzKToKKyAgICAgICAgKiBicmlk
Z2UvYy9jX2luc3RhbmNlLmNwcDoKKyAgICAgICAgKEpTQzo6QmluZGluZ3M6OkNSdW50aW1lTWV0
aG9kOjpjcmVhdGUpOgorICAgICAgICAoSlNDOjpCaW5kaW5nczo6Q1J1bnRpbWVNZXRob2Q6OmZp
bmlzaENyZWF0aW9uKToKKyAgICAgICAgKEpTQzo6QmluZGluZ3M6OkNJbnN0YW5jZTo6Z2V0TWV0
aG9kKToKKyAgICAgICAgKiBicmlkZ2UvYy9jX2luc3RhbmNlLmg6CisgICAgICAgIChDSW5zdGFu
Y2UpOgorICAgICAgICAqIGJyaWRnZS9qbmkvanNjL0phdmFDbGFzc0pTQy5jcHA6CisgICAgICAg
IChKYXZhQ2xhc3M6Om1ldGhvZHNOYW1lZCk6CisgICAgICAgIChKYXZhQ2xhc3M6OmZpZWxkTmFt
ZWQpOgorICAgICAgICAqIGJyaWRnZS9qbmkvanNjL0phdmFDbGFzc0pTQy5oOgorICAgICAgICAo
SmF2YUNsYXNzKToKKyAgICAgICAgKiBicmlkZ2Uvam5pL2pzYy9KYXZhSW5zdGFuY2VKU0MuY3Bw
OgorICAgICAgICAoSmF2YVJ1bnRpbWVNZXRob2Q6OmNyZWF0ZSk6CisgICAgICAgIChKYXZhUnVu
dGltZU1ldGhvZDo6ZmluaXNoQ3JlYXRpb24pOgorICAgICAgICAqIGJyaWRnZS9qbmkvanNjL0ph
dmFJbnN0YW5jZUpTQy5oOgorICAgICAgICAoSmF2YUluc3RhbmNlKToKKyAgICAgICAgKiBicmlk
Z2UvanNjL0JyaWRnZUpTQy5oOgorICAgICAgICAoQ2xhc3MpOgorICAgICAgICAoSlNDOjpCaW5k
aW5nczo6Q2xhc3M6OmZhbGxiYWNrT2JqZWN0KToKKyAgICAgICAgKEpTQzo6QmluZGluZ3M6Oklu
c3RhbmNlOjpzZXRWYWx1ZU9mVW5kZWZpbmVkRmllbGQpOgorICAgICAgICAoSW5zdGFuY2UpOgor
ICAgICAgICAoSlNDOjpCaW5kaW5nczo6SW5zdGFuY2U6OmdldE93blByb3BlcnR5U2xvdCk6Cisg
ICAgICAgIChKU0M6OkJpbmRpbmdzOjpJbnN0YW5jZTo6Z2V0T3duUHJvcGVydHlEZXNjcmlwdG9y
KToKKyAgICAgICAgKEpTQzo6QmluZGluZ3M6Okluc3RhbmNlOjpwdXQpOgorICAgICAgICAqIGJy
aWRnZS9vYmpjL29iamNfY2xhc3MuaDoKKyAgICAgICAgKE9iamNDbGFzcyk6CisgICAgICAgICog
YnJpZGdlL29iamMvb2JqY19jbGFzcy5tbToKKyAgICAgICAgKEpTQzo6QmluZGluZ3M6Ok9iamND
bGFzczo6bWV0aG9kc05hbWVkKToKKyAgICAgICAgKEpTQzo6QmluZGluZ3M6Ok9iamNDbGFzczo6
ZmllbGROYW1lZCk6CisgICAgICAgIChKU0M6OkJpbmRpbmdzOjpPYmpjQ2xhc3M6OmZhbGxiYWNr
T2JqZWN0KToKKyAgICAgICAgKiBicmlkZ2Uvb2JqYy9vYmpjX2luc3RhbmNlLmg6CisgICAgICAg
IChPYmpjSW5zdGFuY2UpOgorICAgICAgICAqIGJyaWRnZS9vYmpjL29iamNfaW5zdGFuY2UubW06
CisgICAgICAgIChPYmpDUnVudGltZU1ldGhvZDo6Y3JlYXRlKToKKyAgICAgICAgKE9iakNSdW50
aW1lTWV0aG9kOjpmaW5pc2hDcmVhdGlvbik6CisgICAgICAgIChPYmpjSW5zdGFuY2U6OnNldFZh
bHVlT2ZVbmRlZmluZWRGaWVsZCk6CisgICAgICAgIChPYmpjSW5zdGFuY2U6OmdldFZhbHVlT2ZV
bmRlZmluZWRGaWVsZCk6CisgICAgICAgICogYnJpZGdlL29iamMvb2JqY19ydW50aW1lLmg6Cisg
ICAgICAgIChKU0M6OkJpbmRpbmdzOjpPYmpjRmFsbGJhY2tPYmplY3RJbXA6OmNyZWF0ZSk6Cisg
ICAgICAgIChKU0M6OkJpbmRpbmdzOjpPYmpjRmFsbGJhY2tPYmplY3RJbXA6OnByb3BlcnR5TmFt
ZSk6CisgICAgICAgIChPYmpjRmFsbGJhY2tPYmplY3RJbXApOgorICAgICAgICAqIGJyaWRnZS9v
YmpjL29iamNfcnVudGltZS5tbToKKyAgICAgICAgKEpTQzo6QmluZGluZ3M6Ok9iamNGYWxsYmFj
a09iamVjdEltcDo6T2JqY0ZhbGxiYWNrT2JqZWN0SW1wKToKKyAgICAgICAgKEpTQzo6QmluZGlu
Z3M6Ok9iamNGYWxsYmFja09iamVjdEltcDo6Z2V0T3duUHJvcGVydHlTbG90KToKKyAgICAgICAg
KEpTQzo6QmluZGluZ3M6Ok9iamNGYWxsYmFja09iamVjdEltcDo6Z2V0T3duUHJvcGVydHlEZXNj
cmlwdG9yKToKKyAgICAgICAgKEpTQzo6QmluZGluZ3M6Ok9iamNGYWxsYmFja09iamVjdEltcDo6
cHV0KToKKyAgICAgICAgKEpTQzo6QmluZGluZ3M6OmNhbGxPYmpDRmFsbGJhY2tPYmplY3QpOgor
ICAgICAgICAoSlNDOjpCaW5kaW5nczo6T2JqY0ZhbGxiYWNrT2JqZWN0SW1wOjpkZWxldGVQcm9w
ZXJ0eSk6CisgICAgICAgIChKU0M6OkJpbmRpbmdzOjpPYmpjRmFsbGJhY2tPYmplY3RJbXA6OmRl
ZmF1bHRWYWx1ZSk6CisgICAgICAgICogYnJpZGdlL3J1bnRpbWVfYXJyYXkuY3BwOgorICAgICAg
ICAoSlNDOjpSdW50aW1lQXJyYXk6Omxlbmd0aEdldHRlcik6CisgICAgICAgIChKU0M6OlJ1bnRp
bWVBcnJheTo6Z2V0T3duUHJvcGVydHlTbG90KToKKyAgICAgICAgKEpTQzo6UnVudGltZUFycmF5
OjpnZXRPd25Qcm9wZXJ0eURlc2NyaXB0b3IpOgorICAgICAgICAoSlNDOjpSdW50aW1lQXJyYXk6
OnB1dCk6CisgICAgICAgIChKU0M6OlJ1bnRpbWVBcnJheTo6ZGVsZXRlUHJvcGVydHkpOgorICAg
ICAgICAqIGJyaWRnZS9ydW50aW1lX2FycmF5Lmg6CisgICAgICAgIChSdW50aW1lQXJyYXkpOgor
ICAgICAgICAqIGJyaWRnZS9ydW50aW1lX21ldGhvZC5jcHA6CisgICAgICAgIChKU0M6OlJ1bnRp
bWVNZXRob2Q6OmZpbmlzaENyZWF0aW9uKToKKyAgICAgICAgKEpTQzo6UnVudGltZU1ldGhvZDo6
bGVuZ3RoR2V0dGVyKToKKyAgICAgICAgKEpTQzo6UnVudGltZU1ldGhvZDo6Z2V0T3duUHJvcGVy
dHlTbG90KToKKyAgICAgICAgKEpTQzo6UnVudGltZU1ldGhvZDo6Z2V0T3duUHJvcGVydHlEZXNj
cmlwdG9yKToKKyAgICAgICAgKiBicmlkZ2UvcnVudGltZV9tZXRob2QuaDoKKyAgICAgICAgKEpT
Qzo6UnVudGltZU1ldGhvZDo6Y3JlYXRlKToKKyAgICAgICAgKFJ1bnRpbWVNZXRob2QpOgorICAg
ICAgICAqIGJyaWRnZS9ydW50aW1lX29iamVjdC5jcHA6CisgICAgICAgIChKU0M6OkJpbmRpbmdz
OjpSdW50aW1lT2JqZWN0OjpmYWxsYmFja09iamVjdEdldHRlcik6CisgICAgICAgIChKU0M6OkJp
bmRpbmdzOjpSdW50aW1lT2JqZWN0OjpmaWVsZEdldHRlcik6CisgICAgICAgIChKU0M6OkJpbmRp
bmdzOjpSdW50aW1lT2JqZWN0OjptZXRob2RHZXR0ZXIpOgorICAgICAgICAoSlNDOjpCaW5kaW5n
czo6UnVudGltZU9iamVjdDo6Z2V0T3duUHJvcGVydHlTbG90KToKKyAgICAgICAgKEpTQzo6Qmlu
ZGluZ3M6OlJ1bnRpbWVPYmplY3Q6OmdldE93blByb3BlcnR5RGVzY3JpcHRvcik6CisgICAgICAg
IChKU0M6OkJpbmRpbmdzOjpSdW50aW1lT2JqZWN0OjpwdXQpOgorICAgICAgICAoSlNDOjpCaW5k
aW5nczo6UnVudGltZU9iamVjdDo6ZGVsZXRlUHJvcGVydHkpOgorICAgICAgICAqIGJyaWRnZS9y
dW50aW1lX29iamVjdC5oOgorICAgICAgICAoUnVudGltZU9iamVjdCk6CisKIDIwMTItMDUtMTEg
IFNpbW9uIEZyYXNlciAgPHNpbW9uLmZyYXNlckBhcHBsZS5jb20+CiAKICAgICAgICAgQ1ZEaXNw
bGF5TGluayBrZWVwcyBydW5uaW5nIGFmdGVyIGEgc2luZ2xlIHJlcXVlc3RBbmltYXRpb25GcmFt
ZQpJbmRleDogU291cmNlL1dlYkNvcmUvV2ViQ29yZS5leHAuaW4KPT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291
cmNlL1dlYkNvcmUvV2ViQ29yZS5leHAuaW4JKHJldmlzaW9uIDExNjY2NykKKysrIFNvdXJjZS9X
ZWJDb3JlL1dlYkNvcmUuZXhwLmluCSh3b3JraW5nIGNvcHkpCkBAIC0xODg0LDIyICsxODg0LDIy
IEBAIF9fWk43V2ViQ29yZTVGcmFtZTI2c2VuZE9yaWVudGF0aW9uQ2hhbmcKIAogI2lmIFVTRShQ
TFVHSU5fSE9TVF9QUk9DRVNTKQogX19aTjNKU0MxM1J1bnRpbWVNZXRob2QxMWdldENhbGxEYXRh
RVBOU182SlNDZWxsRVJOU184Q2FsbERhdGFFCi1fX1pOM0pTQzEzUnVudGltZU1ldGhvZDE0Zmlu
aXNoQ3JlYXRpb25FUk5TXzEySlNHbG9iYWxEYXRhRVJLTlNfMTBJZGVudGlmaWVyRQotX19aTjNK
U0MxM1J1bnRpbWVNZXRob2QxOGdldE93blByb3BlcnR5U2xvdEVQTlNfNkpTQ2VsbEVQTlNfOUV4
ZWNTdGF0ZUVSS05TXzEwSWRlbnRpZmllckVSTlNfMTJQcm9wZXJ0eVNsb3RFCi1fX1pOM0pTQzEz
UnVudGltZU1ldGhvZDI0Z2V0T3duUHJvcGVydHlEZXNjcmlwdG9yRVBOU184SlNPYmplY3RFUE5T
XzlFeGVjU3RhdGVFUktOU18xMElkZW50aWZpZXJFUk5TXzE4UHJvcGVydHlEZXNjcmlwdG9yRQor
X19aTjNKU0MxM1J1bnRpbWVNZXRob2QxNGZpbmlzaENyZWF0aW9uRVJOU18xMkpTR2xvYmFsRGF0
YUVSS05TXzdVU3RyaW5nRQorX19aTjNKU0MxM1J1bnRpbWVNZXRob2QxOGdldE93blByb3BlcnR5
U2xvdEVQTlNfNkpTQ2VsbEVQTlNfOUV4ZWNTdGF0ZUVOU18xMlByb3BlcnR5TmFtZUVSTlNfMTJQ
cm9wZXJ0eVNsb3RFCitfX1pOM0pTQzEzUnVudGltZU1ldGhvZDI0Z2V0T3duUHJvcGVydHlEZXNj
cmlwdG9yRVBOU184SlNPYmplY3RFUE5TXzlFeGVjU3RhdGVFTlNfMTJQcm9wZXJ0eU5hbWVFUk5T
XzE4UHJvcGVydHlEZXNjcmlwdG9yRQogX19aTjNKU0MxM1J1bnRpbWVNZXRob2Q2c19pbmZvRQog
X19aTjNKU0MxM1J1bnRpbWVNZXRob2Q3ZGVzdHJveUVQTlNfNkpTQ2VsbEUKIF9fWk4zSlNDMTNS
dW50aW1lTWV0aG9kQzJFUE5TXzE0SlNHbG9iYWxPYmplY3RFUE5TXzlTdHJ1Y3R1cmVFUk4zV1RG
NlZlY3RvcklQTlNfOEJpbmRpbmdzNk1ldGhvZEVMbTBFRUUKIF9fWk4zSlNDOEJpbmRpbmdzMTBS
b290T2JqZWN0RDFFdgogX19aTjNKU0M4QmluZGluZ3MxM1J1bnRpbWVPYmplY3QxMWdldENhbGxE
YXRhRVBOU182SlNDZWxsRVJOU184Q2FsbERhdGFFCiBfX1pOM0pTQzhCaW5kaW5nczEzUnVudGlt
ZU9iamVjdDEyZGVmYXVsdFZhbHVlRVBLTlNfOEpTT2JqZWN0RVBOU185RXhlY1N0YXRlRU5TXzIy
UHJlZmVycmVkUHJpbWl0aXZlVHlwZUUKLV9fWk4zSlNDOEJpbmRpbmdzMTNSdW50aW1lT2JqZWN0
MTRkZWxldGVQcm9wZXJ0eUVQTlNfNkpTQ2VsbEVQTlNfOUV4ZWNTdGF0ZUVSS05TXzEwSWRlbnRp
ZmllckUKK19fWk4zSlNDOEJpbmRpbmdzMTNSdW50aW1lT2JqZWN0MTRkZWxldGVQcm9wZXJ0eUVQ
TlNfNkpTQ2VsbEVQTlNfOUV4ZWNTdGF0ZUVOU18xMlByb3BlcnR5TmFtZUUKIF9fWk4zSlNDOEJp
bmRpbmdzMTNSdW50aW1lT2JqZWN0MTRmaW5pc2hDcmVhdGlvbkVQTlNfMTRKU0dsb2JhbE9iamVj
dEUKIF9fWk4zSlNDOEJpbmRpbmdzMTNSdW50aW1lT2JqZWN0MTZnZXRDb25zdHJ1Y3REYXRhRVBO
U182SlNDZWxsRVJOU18xM0NvbnN0cnVjdERhdGFFCi1fX1pOM0pTQzhCaW5kaW5nczEzUnVudGlt
ZU9iamVjdDE4Z2V0T3duUHJvcGVydHlTbG90RVBOU182SlNDZWxsRVBOU185RXhlY1N0YXRlRVJL
TlNfMTBJZGVudGlmaWVyRVJOU18xMlByb3BlcnR5U2xvdEUKK19fWk4zSlNDOEJpbmRpbmdzMTNS
dW50aW1lT2JqZWN0MThnZXRPd25Qcm9wZXJ0eVNsb3RFUE5TXzZKU0NlbGxFUE5TXzlFeGVjU3Rh
dGVFTlNfMTJQcm9wZXJ0eU5hbWVFUk5TXzEyUHJvcGVydHlTbG90RQogX19aTjNKU0M4QmluZGlu
Z3MxM1J1bnRpbWVPYmplY3QxOWdldE93blByb3BlcnR5TmFtZXNFUE5TXzhKU09iamVjdEVQTlNf
OUV4ZWNTdGF0ZUVSTlNfMTdQcm9wZXJ0eU5hbWVBcnJheUVOU18xNUVudW1lcmF0aW9uTW9kZUUK
LV9fWk4zSlNDOEJpbmRpbmdzMTNSdW50aW1lT2JqZWN0MjRnZXRPd25Qcm9wZXJ0eURlc2NyaXB0
b3JFUE5TXzhKU09iamVjdEVQTlNfOUV4ZWNTdGF0ZUVSS05TXzEwSWRlbnRpZmllckVSTlNfMThQ
cm9wZXJ0eURlc2NyaXB0b3JFCi1fX1pOM0pTQzhCaW5kaW5nczEzUnVudGltZU9iamVjdDNwdXRF
UE5TXzZKU0NlbGxFUE5TXzlFeGVjU3RhdGVFUktOU18xMElkZW50aWZpZXJFTlNfN0pTVmFsdWVF
Uk5TXzE1UHV0UHJvcGVydHlTbG90RQorX19aTjNKU0M4QmluZGluZ3MxM1J1bnRpbWVPYmplY3Qy
NGdldE93blByb3BlcnR5RGVzY3JpcHRvckVQTlNfOEpTT2JqZWN0RVBOU185RXhlY1N0YXRlRU5T
XzEyUHJvcGVydHlOYW1lRVJOU18xOFByb3BlcnR5RGVzY3JpcHRvckUKK19fWk4zSlNDOEJpbmRp
bmdzMTNSdW50aW1lT2JqZWN0M3B1dEVQTlNfNkpTQ2VsbEVQTlNfOUV4ZWNTdGF0ZUVOU18xMlBy
b3BlcnR5TmFtZUVOU183SlNWYWx1ZUVSTlNfMTVQdXRQcm9wZXJ0eVNsb3RFCiBfX1pOM0pTQzhC
aW5kaW5nczEzUnVudGltZU9iamVjdDZzX2luZm9FCiBfX1pOM0pTQzhCaW5kaW5nczEzUnVudGlt
ZU9iamVjdDdkZXN0cm95RVBOU182SlNDZWxsRQogX19aTjNKU0M4QmluZGluZ3MxM1J1bnRpbWVP
YmplY3RDMkVQTlNfOUV4ZWNTdGF0ZUVQTlNfMTRKU0dsb2JhbE9iamVjdEVQTlNfOVN0cnVjdHVy
ZUVOM1dURjEwUGFzc1JlZlB0cklOUzBfOEluc3RhbmNlRUVFCkluZGV4OiBTb3VyY2UvV2ViQ29y
ZS9iaW5kaW5ncy9qcy9KU0NTU1N0eWxlRGVjbGFyYXRpb25DdXN0b20uY3BwCj09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0K
LS0tIFNvdXJjZS9XZWJDb3JlL2JpbmRpbmdzL2pzL0pTQ1NTU3R5bGVEZWNsYXJhdGlvbkN1c3Rv
bS5jcHAJKHJldmlzaW9uIDExNjY2NykKKysrIFNvdXJjZS9XZWJDb3JlL2JpbmRpbmdzL2pzL0pT
Q1NTU3R5bGVEZWNsYXJhdGlvbkN1c3RvbS5jcHAJKHdvcmtpbmcgY29weSkKQEAgLTE3NiwxNiAr
MTc2LDE2IEBAIHN0YXRpYyBpbmxpbmUgdm9pZCB3cml0ZUVwdWJQcmVmaXgoY2hhcioKICAgICAq
YnVmZmVyKysgPSAnLSc7CiB9CiAKLXN0YXRpYyBDU1NQcm9wZXJ0eUluZm8gY3NzUHJvcGVydHlJ
REZvckpTQ1NTUHJvcGVydHlOYW1lKGNvbnN0IElkZW50aWZpZXImIHByb3BlcnR5TmFtZSkKK3N0
YXRpYyBDU1NQcm9wZXJ0eUluZm8gY3NzUHJvcGVydHlJREZvckpTQ1NTUHJvcGVydHlOYW1lKFBy
b3BlcnR5TmFtZSBwcm9wZXJ0eU5hbWUpCiB7CiAgICAgQ1NTUHJvcGVydHlJbmZvIHByb3BlcnR5
SW5mbyA9IHtDU1NQcm9wZXJ0eUludmFsaWQsIGZhbHNlfTsKICAgICBib29sIGhhZFBpeGVsT3JQ
b3NQcmVmaXggPSBmYWxzZTsKIAotICAgIHVuc2lnbmVkIGxlbmd0aCA9IHByb3BlcnR5TmFtZS5s
ZW5ndGgoKTsKKyAgICBTdHJpbmdJbXBsKiBwcm9wZXJ0eU5hbWVTdHJpbmcgPSBwcm9wZXJ0eU5h
bWUuaW1wbCgpOworICAgIHVuc2lnbmVkIGxlbmd0aCA9IHByb3BlcnR5TmFtZVN0cmluZy0+bGVu
Z3RoKCk7CiAgICAgaWYgKCFsZW5ndGgpCiAgICAgICAgIHJldHVybiBwcm9wZXJ0eUluZm87CiAK
LSAgICBTdHJpbmdJbXBsKiBwcm9wZXJ0eU5hbWVTdHJpbmcgPSBwcm9wZXJ0eU5hbWUuaW1wbCgp
OwogICAgIFN0cmluZyBzdHJpbmdGb3JDYWNoZSA9IFN0cmluZyhwcm9wZXJ0eU5hbWVTdHJpbmcp
OwogICAgIHR5cGVkZWYgSGFzaE1hcDxTdHJpbmcsIENTU1Byb3BlcnR5SW5mbz4gQ1NTUHJvcGVy
dHlJbmZvTWFwOwogICAgIERFRklORV9TVEFUSUNfTE9DQUwoQ1NTUHJvcGVydHlJbmZvTWFwLCBw
cm9wZXJ0eUluZm9DYWNoZSwgKCkpOwpAQCAtMzIwLDcgKzMyMCw3IEBAIHN0YXRpYyBKU1ZhbHVl
IGNzc1Byb3BlcnR5R2V0dGVyQ2FsbGJhY2sKICAgICByZXR1cm4gY3NzUHJvcGVydHlHZXR0ZXIo
ZXhlYywganNDYXN0PEpTQ1NTU3R5bGVEZWNsYXJhdGlvbio+KGFzT2JqZWN0KHNsb3RCYXNlKSks
IHByb3BlcnR5SUQpOwogfQogCi1ib29sIEpTQ1NTU3R5bGVEZWNsYXJhdGlvbjo6Z2V0T3duUHJv
cGVydHlTbG90RGVsZWdhdGUoRXhlY1N0YXRlKiwgY29uc3QgSWRlbnRpZmllciYgcHJvcGVydHlJ
ZGVudGlmaWVyLCBQcm9wZXJ0eVNsb3QmIHNsb3QpCitib29sIEpTQ1NTU3R5bGVEZWNsYXJhdGlv
bjo6Z2V0T3duUHJvcGVydHlTbG90RGVsZWdhdGUoRXhlY1N0YXRlKiwgUHJvcGVydHlOYW1lIHBy
b3BlcnR5SWRlbnRpZmllciwgUHJvcGVydHlTbG90JiBzbG90KQogewogICAgIENTU1Byb3BlcnR5
SW5mbyBwcm9wZXJ0eUluZm8gPSBjc3NQcm9wZXJ0eUlERm9ySlNDU1NQcm9wZXJ0eU5hbWUocHJv
cGVydHlJZGVudGlmaWVyKTsKICAgICBpZiAoIXByb3BlcnR5SW5mby5wcm9wZXJ0eUlEKQpAQCAt
MzMzLDcgKzMzMyw3IEBAIGJvb2wgSlNDU1NTdHlsZURlY2xhcmF0aW9uOjpnZXRPd25Qcm9wZXIK
ICAgICByZXR1cm4gdHJ1ZTsKIH0KIAotYm9vbCBKU0NTU1N0eWxlRGVjbGFyYXRpb246OmdldE93
blByb3BlcnR5RGVzY3JpcHRvckRlbGVnYXRlKEpTQzo6RXhlY1N0YXRlKiBleGVjLCBjb25zdCBK
U0M6OklkZW50aWZpZXImIHByb3BlcnR5SWRlbnRpZmllciwgSlNDOjpQcm9wZXJ0eURlc2NyaXB0
b3ImIGRlc2NyaXB0b3IpCitib29sIEpTQ1NTU3R5bGVEZWNsYXJhdGlvbjo6Z2V0T3duUHJvcGVy
dHlEZXNjcmlwdG9yRGVsZWdhdGUoSlNDOjpFeGVjU3RhdGUqIGV4ZWMsIEpTQzo6UHJvcGVydHlO
YW1lIHByb3BlcnR5SWRlbnRpZmllciwgSlNDOjpQcm9wZXJ0eURlc2NyaXB0b3ImIGRlc2NyaXB0
b3IpCiB7CiAgICAgQ1NTUHJvcGVydHlJbmZvIHByb3BlcnR5SW5mbyA9IGNzc1Byb3BlcnR5SURG
b3JKU0NTU1Byb3BlcnR5TmFtZShwcm9wZXJ0eUlkZW50aWZpZXIpOwogICAgIGlmICghcHJvcGVy
dHlJbmZvLnByb3BlcnR5SUQpCkBAIC0zNDgsNyArMzQ4LDcgQEAgYm9vbCBKU0NTU1N0eWxlRGVj
bGFyYXRpb246OmdldE93blByb3BlcgogICAgIHJldHVybiB0cnVlOwogfQogCi1ib29sIEpTQ1NT
U3R5bGVEZWNsYXJhdGlvbjo6cHV0RGVsZWdhdGUoRXhlY1N0YXRlKiBleGVjLCBjb25zdCBJZGVu
dGlmaWVyJiBwcm9wZXJ0eU5hbWUsIEpTVmFsdWUgdmFsdWUsIFB1dFByb3BlcnR5U2xvdCYpCiti
b29sIEpTQ1NTU3R5bGVEZWNsYXJhdGlvbjo6cHV0RGVsZWdhdGUoRXhlY1N0YXRlKiBleGVjLCBQ
cm9wZXJ0eU5hbWUgcHJvcGVydHlOYW1lLCBKU1ZhbHVlIHZhbHVlLCBQdXRQcm9wZXJ0eVNsb3Qm
KQogewogICAgIENTU1Byb3BlcnR5SW5mbyBwcm9wZXJ0eUluZm8gPSBjc3NQcm9wZXJ0eUlERm9y
SlNDU1NQcm9wZXJ0eU5hbWUocHJvcGVydHlOYW1lKTsKICAgICBpZiAoIXByb3BlcnR5SW5mby5w
cm9wZXJ0eUlEKQpJbmRleDogU291cmNlL1dlYkNvcmUvYmluZGluZ3MvanMvSlNET01CaW5kaW5n
LmNwcAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2ViQ29yZS9iaW5kaW5ncy9qcy9KU0RPTUJpbmRp
bmcuY3BwCShyZXZpc2lvbiAxMTY2NjcpCisrKyBTb3VyY2UvV2ViQ29yZS9iaW5kaW5ncy9qcy9K
U0RPTUJpbmRpbmcuY3BwCSh3b3JraW5nIGNvcHkpCkBAIC0xMDcsMTEgKzEwNywxMSBAQCBKU1Zh
bHVlIGpzU3RyaW5nT3JGYWxzZShFeGVjU3RhdGUqIGV4ZWMsCiAgICAgcmV0dXJuIGpzU3RyaW5n
KGV4ZWMsIHVybC5zdHJpbmcoKSk7CiB9CiAKLUF0b21pY1N0cmluZ0ltcGwqIGZpbmRBdG9taWNT
dHJpbmcoY29uc3QgSWRlbnRpZmllciYgaWRlbnRpZmllcikKK0F0b21pY1N0cmluZ0ltcGwqIGZp
bmRBdG9taWNTdHJpbmcoUHJvcGVydHlOYW1lIHByb3BlcnR5TmFtZSkKIHsKLSAgICBpZiAoaWRl
bnRpZmllci5pc051bGwoKSkKKyAgICBTdHJpbmdJbXBsKiBpbXBsID0gcHJvcGVydHlOYW1lLmlt
cGwoKTsKKyAgICBpZiAoIWltcGwpCiAgICAgICAgIHJldHVybiAwOwotICAgIFN0cmluZ0ltcGwq
IGltcGwgPSBpZGVudGlmaWVyLmltcGwoKTsKICAgICBBU1NFUlQoaW1wbC0+ZXhpc3RpbmdIYXNo
KCkpOwogICAgIHJldHVybiBBdG9taWNTdHJpbmc6OmZpbmQoaW1wbC0+Y2hhcmFjdGVycygpLCBp
bXBsLT5sZW5ndGgoKSwgaW1wbC0+ZXhpc3RpbmdIYXNoKCkpOwogfQpAQCAtMjQzLDkgKzI0Myw5
IEBAIHZvaWQgcHJpbnRFcnJvck1lc3NhZ2VGb3JGcmFtZShGcmFtZSogZnIKICAgICBmcmFtZS0+
ZG9tV2luZG93KCktPnByaW50RXJyb3JNZXNzYWdlKG1lc3NhZ2UpOwogfQogCi1KU1ZhbHVlIG9i
amVjdFRvU3RyaW5nRnVuY3Rpb25HZXR0ZXIoRXhlY1N0YXRlKiBleGVjLCBKU1ZhbHVlLCBjb25z
dCBJZGVudGlmaWVyJiBwcm9wZXJ0eU5hbWUpCitKU1ZhbHVlIG9iamVjdFRvU3RyaW5nRnVuY3Rp
b25HZXR0ZXIoRXhlY1N0YXRlKiBleGVjLCBKU1ZhbHVlLCBQcm9wZXJ0eU5hbWUgcHJvcGVydHlO
YW1lKQogewotICAgIHJldHVybiBKU0Z1bmN0aW9uOjpjcmVhdGUoZXhlYywgZXhlYy0+bGV4aWNh
bEdsb2JhbE9iamVjdCgpLCAwLCBwcm9wZXJ0eU5hbWUsIG9iamVjdFByb3RvRnVuY1RvU3RyaW5n
KTsKKyAgICByZXR1cm4gSlNGdW5jdGlvbjo6Y3JlYXRlKGV4ZWMsIGV4ZWMtPmxleGljYWxHbG9i
YWxPYmplY3QoKSwgMCwgcHJvcGVydHlOYW1lLmltcGwoKSwgb2JqZWN0UHJvdG9GdW5jVG9TdHJp
bmcpOwogfQogCiBTdHJ1Y3R1cmUqIGdldENhY2hlZERPTVN0cnVjdHVyZShKU0RPTUdsb2JhbE9i
amVjdCogZ2xvYmFsT2JqZWN0LCBjb25zdCBDbGFzc0luZm8qIGNsYXNzSW5mbykKSW5kZXg6IFNv
dXJjZS9XZWJDb3JlL2JpbmRpbmdzL2pzL0pTRE9NQmluZGluZy5oCj09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNv
dXJjZS9XZWJDb3JlL2JpbmRpbmdzL2pzL0pTRE9NQmluZGluZy5oCShyZXZpc2lvbiAxMTY2Njcp
CisrKyBTb3VyY2UvV2ViQ29yZS9iaW5kaW5ncy9qcy9KU0RPTUJpbmRpbmcuaAkod29ya2luZyBj
b3B5KQpAQCAtMjUyLDEzICsyNTIsMTMgQEAgZW51bSBQYXJhbWV0ZXJEZWZhdWx0UG9saWN5IHsK
ICAgICAvLyBvYmplY3QsIHRvIGxldCB0aGUgZW5naW5lIGtub3cgdGhhdCBjb2xsZWN0aW5nIHRo
ZSBKU1N0cmluZyB3cmFwcGVyIGlzIHVubGlrZWx5IHRvIHNhdmUgbWVtb3J5LgogICAgIEpTQzo6
SlNWYWx1ZSBqc093bmVkU3RyaW5nT3JOdWxsKEpTQzo6RXhlY1N0YXRlKiwgY29uc3QgU3RyaW5n
Jik7IAogCi0gICAgU3RyaW5nIGlkZW50aWZpZXJUb1N0cmluZyhjb25zdCBKU0M6OklkZW50aWZp
ZXImKTsKKyAgICBTdHJpbmcgcHJvcGVydHlOYW1lVG9TdHJpbmcoSlNDOjpQcm9wZXJ0eU5hbWUp
OwogICAgIFN0cmluZyB1c3RyaW5nVG9TdHJpbmcoY29uc3QgSlNDOjpVU3RyaW5nJik7CiAgICAg
SlNDOjpVU3RyaW5nIHN0cmluZ1RvVVN0cmluZyhjb25zdCBTdHJpbmcmKTsKIAotICAgIEF0b21p
Y1N0cmluZyBpZGVudGlmaWVyVG9BdG9taWNTdHJpbmcoY29uc3QgSlNDOjpJZGVudGlmaWVyJik7
CisgICAgQXRvbWljU3RyaW5nIHByb3BlcnR5TmFtZVRvQXRvbWljU3RyaW5nKEpTQzo6UHJvcGVy
dHlOYW1lKTsKICAgICBBdG9taWNTdHJpbmcgdXN0cmluZ1RvQXRvbWljU3RyaW5nKGNvbnN0IEpT
Qzo6VVN0cmluZyYpOwotICAgIEF0b21pY1N0cmluZ0ltcGwqIGZpbmRBdG9taWNTdHJpbmcoY29u
c3QgSlNDOjpJZGVudGlmaWVyJik7CisgICAgQXRvbWljU3RyaW5nSW1wbCogZmluZEF0b21pY1N0
cmluZyhKU0M6OlByb3BlcnR5TmFtZSk7CiAKICAgICBTdHJpbmcgdmFsdWVUb1N0cmluZ1dpdGhO
dWxsQ2hlY2soSlNDOjpFeGVjU3RhdGUqLCBKU0M6OkpTVmFsdWUpOyAvLyBudWxsIGlmIHRoZSB2
YWx1ZSBpcyBudWxsCiAgICAgU3RyaW5nIHZhbHVlVG9TdHJpbmdXaXRoVW5kZWZpbmVkT3JOdWxs
Q2hlY2soSlNDOjpFeGVjU3RhdGUqLCBKU0M6OkpTVmFsdWUpOyAvLyBudWxsIGlmIHRoZSB2YWx1
ZSBpcyBudWxsIG9yIHVuZGVmaW5lZApAQCAtMzM3LDcgKzMzNyw3IEBAIGVudW0gUGFyYW1ldGVy
RGVmYXVsdFBvbGljeSB7CiAgICAgRE9NV2luZG93KiBmaXJzdERPTVdpbmRvdyhKU0M6OkV4ZWNT
dGF0ZSopOwogCiAgICAgdm9pZCBwcmludEVycm9yTWVzc2FnZUZvckZyYW1lKEZyYW1lKiwgY29u
c3QgU3RyaW5nJiBtZXNzYWdlKTsKLSAgICBKU0M6OkpTVmFsdWUgb2JqZWN0VG9TdHJpbmdGdW5j
dGlvbkdldHRlcihKU0M6OkV4ZWNTdGF0ZSosIEpTQzo6SlNWYWx1ZSwgY29uc3QgSlNDOjpJZGVu
dGlmaWVyJiBwcm9wZXJ0eU5hbWUpOworICAgIEpTQzo6SlNWYWx1ZSBvYmplY3RUb1N0cmluZ0Z1
bmN0aW9uR2V0dGVyKEpTQzo6RXhlY1N0YXRlKiwgSlNDOjpKU1ZhbHVlLCBKU0M6OlByb3BlcnR5
TmFtZSk7CiAKICAgICBpbmxpbmUgSlNDOjpKU1ZhbHVlIGpzU3RyaW5nKEpTQzo6RXhlY1N0YXRl
KiBleGVjLCBjb25zdCBTdHJpbmcmIHMpCiAgICAgewpAQCAtMzcxLDkgKzM3MSw5IEBAIGVudW0g
UGFyYW1ldGVyRGVmYXVsdFBvbGljeSB7CiAgICAgICAgIHJldHVybiBKU0M6OlVTdHJpbmcocy5p
bXBsKCkpOwogICAgIH0KIAotICAgIGlubGluZSBTdHJpbmcgaWRlbnRpZmllclRvU3RyaW5nKGNv
bnN0IEpTQzo6SWRlbnRpZmllciYgaSkKKyAgICBpbmxpbmUgU3RyaW5nIHByb3BlcnR5TmFtZVRv
U3RyaW5nKEpTQzo6UHJvcGVydHlOYW1lIHByb3BlcnR5TmFtZSkKICAgICB7Ci0gICAgICAgIHJl
dHVybiBpLmltcGwoKTsKKyAgICAgICAgcmV0dXJuIHByb3BlcnR5TmFtZS5pbXBsKCk7CiAgICAg
fQogCiAgICAgaW5saW5lIEF0b21pY1N0cmluZyB1c3RyaW5nVG9BdG9taWNTdHJpbmcoY29uc3Qg
SlNDOjpVU3RyaW5nJiB1KQpAQCAtMzgxLDkgKzM4MSw5IEBAIGVudW0gUGFyYW1ldGVyRGVmYXVs
dFBvbGljeSB7CiAgICAgICAgIHJldHVybiBBdG9taWNTdHJpbmcodS5pbXBsKCkpOwogICAgIH0K
IAotICAgIGlubGluZSBBdG9taWNTdHJpbmcgaWRlbnRpZmllclRvQXRvbWljU3RyaW5nKGNvbnN0
IEpTQzo6SWRlbnRpZmllciYgaWRlbnRpZmllcikKKyAgICBpbmxpbmUgQXRvbWljU3RyaW5nIHBy
b3BlcnR5TmFtZVRvQXRvbWljU3RyaW5nKEpTQzo6UHJvcGVydHlOYW1lIHByb3BlcnR5TmFtZSkK
ICAgICB7Ci0gICAgICAgIHJldHVybiBBdG9taWNTdHJpbmcoaWRlbnRpZmllci5pbXBsKCkpOwor
ICAgICAgICByZXR1cm4gQXRvbWljU3RyaW5nKHByb3BlcnR5TmFtZS5pbXBsKCkpOwogICAgIH0K
IAogICAgIGlubGluZSBWZWN0b3I8dW5zaWduZWQgbG9uZz4ganNVbnNpZ25lZExvbmdBcnJheVRv
VmVjdG9yKEpTQzo6RXhlY1N0YXRlKiBleGVjLCBKU0M6OkpTVmFsdWUgdmFsdWUpCkluZGV4OiBT
b3VyY2UvV2ViQ29yZS9iaW5kaW5ncy9qcy9KU0RPTU1pbWVUeXBlQXJyYXlDdXN0b20uY3BwCj09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT0KLS0tIFNvdXJjZS9XZWJDb3JlL2JpbmRpbmdzL2pzL0pTRE9NTWltZVR5cGVBcnJh
eUN1c3RvbS5jcHAJKHJldmlzaW9uIDExNjY2NykKKysrIFNvdXJjZS9XZWJDb3JlL2JpbmRpbmdz
L2pzL0pTRE9NTWltZVR5cGVBcnJheUN1c3RvbS5jcHAJKHdvcmtpbmcgY29weSkKQEAgLTI4LDE1
ICsyOCwxNSBAQCBuYW1lc3BhY2UgV2ViQ29yZSB7CiAKIHVzaW5nIG5hbWVzcGFjZSBKU0M7CiAK
LWJvb2wgSlNET01NaW1lVHlwZUFycmF5OjpjYW5HZXRJdGVtc0Zvck5hbWUoRXhlY1N0YXRlKiwg
RE9NTWltZVR5cGVBcnJheSogbWltZVR5cGVBcnJheSwgY29uc3QgSWRlbnRpZmllciYgcHJvcGVy
dHlOYW1lKQorYm9vbCBKU0RPTU1pbWVUeXBlQXJyYXk6OmNhbkdldEl0ZW1zRm9yTmFtZShFeGVj
U3RhdGUqLCBET01NaW1lVHlwZUFycmF5KiBtaW1lVHlwZUFycmF5LCBQcm9wZXJ0eU5hbWUgcHJv
cGVydHlOYW1lKQogewotICAgIHJldHVybiBtaW1lVHlwZUFycmF5LT5jYW5HZXRJdGVtc0Zvck5h
bWUoaWRlbnRpZmllclRvQXRvbWljU3RyaW5nKHByb3BlcnR5TmFtZSkpOworICAgIHJldHVybiBt
aW1lVHlwZUFycmF5LT5jYW5HZXRJdGVtc0Zvck5hbWUocHJvcGVydHlOYW1lVG9BdG9taWNTdHJp
bmcocHJvcGVydHlOYW1lKSk7CiB9CiAKLUpTVmFsdWUgSlNET01NaW1lVHlwZUFycmF5OjpuYW1l
R2V0dGVyKEV4ZWNTdGF0ZSogZXhlYywgSlNWYWx1ZSBzbG90QmFzZSwgY29uc3QgSWRlbnRpZmll
ciYgcHJvcGVydHlOYW1lKQorSlNWYWx1ZSBKU0RPTU1pbWVUeXBlQXJyYXk6Om5hbWVHZXR0ZXIo
RXhlY1N0YXRlKiBleGVjLCBKU1ZhbHVlIHNsb3RCYXNlLCBQcm9wZXJ0eU5hbWUgcHJvcGVydHlO
YW1lKQogewogICAgIEpTRE9NTWltZVR5cGVBcnJheSogdGhpc09iaiA9IGpzQ2FzdDxKU0RPTU1p
bWVUeXBlQXJyYXkqPihhc09iamVjdChzbG90QmFzZSkpOwotICAgIHJldHVybiB0b0pTKGV4ZWMs
IHRoaXNPYmotPmdsb2JhbE9iamVjdCgpLCB0aGlzT2JqLT5pbXBsKCktPm5hbWVkSXRlbShpZGVu
dGlmaWVyVG9BdG9taWNTdHJpbmcocHJvcGVydHlOYW1lKSkpOworICAgIHJldHVybiB0b0pTKGV4
ZWMsIHRoaXNPYmotPmdsb2JhbE9iamVjdCgpLCB0aGlzT2JqLT5pbXBsKCktPm5hbWVkSXRlbShw
cm9wZXJ0eU5hbWVUb0F0b21pY1N0cmluZyhwcm9wZXJ0eU5hbWUpKSk7CiB9CiAKIH0gLy8gbmFt
ZXNwYWNlIFdlYkNvcmUKSW5kZXg6IFNvdXJjZS9XZWJDb3JlL2JpbmRpbmdzL2pzL0pTRE9NUGx1
Z2luQXJyYXlDdXN0b20uY3BwCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9XZWJDb3JlL2JpbmRpbmdz
L2pzL0pTRE9NUGx1Z2luQXJyYXlDdXN0b20uY3BwCShyZXZpc2lvbiAxMTY2NjcpCisrKyBTb3Vy
Y2UvV2ViQ29yZS9iaW5kaW5ncy9qcy9KU0RPTVBsdWdpbkFycmF5Q3VzdG9tLmNwcAkod29ya2lu
ZyBjb3B5KQpAQCAtMjgsMTUgKzI4LDE1IEBAIG5hbWVzcGFjZSBXZWJDb3JlIHsKIAogdXNpbmcg
bmFtZXNwYWNlIEpTQzsKIAotYm9vbCBKU0RPTVBsdWdpbkFycmF5OjpjYW5HZXRJdGVtc0Zvck5h
bWUoRXhlY1N0YXRlKiwgRE9NUGx1Z2luQXJyYXkqIHBsdWdpbkFycmF5LCBjb25zdCBJZGVudGlm
aWVyJiBwcm9wZXJ0eU5hbWUpCitib29sIEpTRE9NUGx1Z2luQXJyYXk6OmNhbkdldEl0ZW1zRm9y
TmFtZShFeGVjU3RhdGUqLCBET01QbHVnaW5BcnJheSogcGx1Z2luQXJyYXksIFByb3BlcnR5TmFt
ZSBwcm9wZXJ0eU5hbWUpCiB7Ci0gICAgcmV0dXJuIHBsdWdpbkFycmF5LT5jYW5HZXRJdGVtc0Zv
ck5hbWUoaWRlbnRpZmllclRvQXRvbWljU3RyaW5nKHByb3BlcnR5TmFtZSkpOworICAgIHJldHVy
biBwbHVnaW5BcnJheS0+Y2FuR2V0SXRlbXNGb3JOYW1lKHByb3BlcnR5TmFtZVRvQXRvbWljU3Ry
aW5nKHByb3BlcnR5TmFtZSkpOwogfQogCi1KU1ZhbHVlIEpTRE9NUGx1Z2luQXJyYXk6Om5hbWVH
ZXR0ZXIoRXhlY1N0YXRlKiBleGVjLCBKU1ZhbHVlIHNsb3RCYXNlLCBjb25zdCBJZGVudGlmaWVy
JiBwcm9wZXJ0eU5hbWUpCitKU1ZhbHVlIEpTRE9NUGx1Z2luQXJyYXk6Om5hbWVHZXR0ZXIoRXhl
Y1N0YXRlKiBleGVjLCBKU1ZhbHVlIHNsb3RCYXNlLCBQcm9wZXJ0eU5hbWUgcHJvcGVydHlOYW1l
KQogewogICAgIEpTRE9NUGx1Z2luQXJyYXkqIHRoaXNPYmogPSBqc0Nhc3Q8SlNET01QbHVnaW5B
cnJheSo+KGFzT2JqZWN0KHNsb3RCYXNlKSk7Ci0gICAgcmV0dXJuIHRvSlMoZXhlYywgdGhpc09i
ai0+Z2xvYmFsT2JqZWN0KCksIHRoaXNPYmotPmltcGwoKS0+bmFtZWRJdGVtKGlkZW50aWZpZXJU
b0F0b21pY1N0cmluZyhwcm9wZXJ0eU5hbWUpKSk7CisgICAgcmV0dXJuIHRvSlMoZXhlYywgdGhp
c09iai0+Z2xvYmFsT2JqZWN0KCksIHRoaXNPYmotPmltcGwoKS0+bmFtZWRJdGVtKHByb3BlcnR5
TmFtZVRvQXRvbWljU3RyaW5nKHByb3BlcnR5TmFtZSkpKTsKIH0KIAogfSAvLyBuYW1lc3BhY2Ug
V2ViQ29yZQpJbmRleDogU291cmNlL1dlYkNvcmUvYmluZGluZ3MvanMvSlNET01QbHVnaW5DdXN0
b20uY3BwCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9XZWJDb3JlL2JpbmRpbmdzL2pzL0pTRE9NUGx1
Z2luQ3VzdG9tLmNwcAkocmV2aXNpb24gMTE2NjY3KQorKysgU291cmNlL1dlYkNvcmUvYmluZGlu
Z3MvanMvSlNET01QbHVnaW5DdXN0b20uY3BwCSh3b3JraW5nIGNvcHkpCkBAIC0yNywxNSArMjcs
MTUgQEAgbmFtZXNwYWNlIFdlYkNvcmUgewogCiB1c2luZyBuYW1lc3BhY2UgSlNDOwogCi1ib29s
IEpTRE9NUGx1Z2luOjpjYW5HZXRJdGVtc0Zvck5hbWUoRXhlY1N0YXRlKiwgRE9NUGx1Z2luKiBw
bHVnaW4sIGNvbnN0IElkZW50aWZpZXImIHByb3BlcnR5TmFtZSkKK2Jvb2wgSlNET01QbHVnaW46
OmNhbkdldEl0ZW1zRm9yTmFtZShFeGVjU3RhdGUqLCBET01QbHVnaW4qIHBsdWdpbiwgUHJvcGVy
dHlOYW1lIHByb3BlcnR5TmFtZSkKIHsKLSAgICByZXR1cm4gcGx1Z2luLT5jYW5HZXRJdGVtc0Zv
ck5hbWUoaWRlbnRpZmllclRvQXRvbWljU3RyaW5nKHByb3BlcnR5TmFtZSkpOworICAgIHJldHVy
biBwbHVnaW4tPmNhbkdldEl0ZW1zRm9yTmFtZShwcm9wZXJ0eU5hbWVUb0F0b21pY1N0cmluZyhw
cm9wZXJ0eU5hbWUpKTsKIH0KIAotSlNWYWx1ZSBKU0RPTVBsdWdpbjo6bmFtZUdldHRlcihFeGVj
U3RhdGUqIGV4ZWMsIEpTVmFsdWUgc2xvdEJhc2UsIGNvbnN0IElkZW50aWZpZXImIHByb3BlcnR5
TmFtZSkKK0pTVmFsdWUgSlNET01QbHVnaW46Om5hbWVHZXR0ZXIoRXhlY1N0YXRlKiBleGVjLCBK
U1ZhbHVlIHNsb3RCYXNlLCBQcm9wZXJ0eU5hbWUgcHJvcGVydHlOYW1lKQogewogICAgIEpTRE9N
UGx1Z2luKiB0aGlzT2JqID0ganNDYXN0PEpTRE9NUGx1Z2luKj4oYXNPYmplY3Qoc2xvdEJhc2Up
KTsKLSAgICByZXR1cm4gdG9KUyhleGVjLCB0aGlzT2JqLT5nbG9iYWxPYmplY3QoKSwgdGhpc09i
ai0+aW1wbCgpLT5uYW1lZEl0ZW0oaWRlbnRpZmllclRvQXRvbWljU3RyaW5nKHByb3BlcnR5TmFt
ZSkpKTsKKyAgICByZXR1cm4gdG9KUyhleGVjLCB0aGlzT2JqLT5nbG9iYWxPYmplY3QoKSwgdGhp
c09iai0+aW1wbCgpLT5uYW1lZEl0ZW0ocHJvcGVydHlOYW1lVG9BdG9taWNTdHJpbmcocHJvcGVy
dHlOYW1lKSkpOwogfQogCiB9IC8vIG5hbWVzcGFjZSBXZWJDb3JlCkluZGV4OiBTb3VyY2UvV2Vi
Q29yZS9iaW5kaW5ncy9qcy9KU0RPTVN0cmluZ01hcEN1c3RvbS5jcHAKPT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0g
U291cmNlL1dlYkNvcmUvYmluZGluZ3MvanMvSlNET01TdHJpbmdNYXBDdXN0b20uY3BwCShyZXZp
c2lvbiAxMTY2NjcpCisrKyBTb3VyY2UvV2ViQ29yZS9iaW5kaW5ncy9qcy9KU0RPTVN0cmluZ01h
cEN1c3RvbS5jcHAJKHdvcmtpbmcgY29weSkKQEAgLTM1LDE1ICszNSwxNSBAQCB1c2luZyBuYW1l
c3BhY2UgSlNDOwogCiBuYW1lc3BhY2UgV2ViQ29yZSB7CiAKLWJvb2wgSlNET01TdHJpbmdNYXA6
OmNhbkdldEl0ZW1zRm9yTmFtZShFeGVjU3RhdGUqLCBET01TdHJpbmdNYXAqIGltcGwsIGNvbnN0
IElkZW50aWZpZXImIHByb3BlcnR5TmFtZSkKK2Jvb2wgSlNET01TdHJpbmdNYXA6OmNhbkdldEl0
ZW1zRm9yTmFtZShFeGVjU3RhdGUqLCBET01TdHJpbmdNYXAqIGltcGwsIFByb3BlcnR5TmFtZSBw
cm9wZXJ0eU5hbWUpCiB7Ci0gICAgcmV0dXJuIGltcGwtPmNvbnRhaW5zKGlkZW50aWZpZXJUb0F0
b21pY1N0cmluZyhwcm9wZXJ0eU5hbWUpKTsKKyAgICByZXR1cm4gaW1wbC0+Y29udGFpbnMocHJv
cGVydHlOYW1lVG9BdG9taWNTdHJpbmcocHJvcGVydHlOYW1lKSk7CiB9CiAKLUpTVmFsdWUgSlNE
T01TdHJpbmdNYXA6Om5hbWVHZXR0ZXIoRXhlY1N0YXRlKiBleGVjLCBKU1ZhbHVlIHNsb3RCYXNl
LCBjb25zdCBJZGVudGlmaWVyJiBwcm9wZXJ0eU5hbWUpCitKU1ZhbHVlIEpTRE9NU3RyaW5nTWFw
OjpuYW1lR2V0dGVyKEV4ZWNTdGF0ZSogZXhlYywgSlNWYWx1ZSBzbG90QmFzZSwgUHJvcGVydHlO
YW1lIHByb3BlcnR5TmFtZSkKIHsKICAgICBKU0RPTVN0cmluZ01hcCogdGhpc09iaiA9IGpzQ2Fz
dDxKU0RPTVN0cmluZ01hcCo+KGFzT2JqZWN0KHNsb3RCYXNlKSk7Ci0gICAgcmV0dXJuIGpzU3Ry
aW5nKGV4ZWMsIHRoaXNPYmotPmltcGwoKS0+aXRlbShpZGVudGlmaWVyVG9BdG9taWNTdHJpbmco
cHJvcGVydHlOYW1lKSkpOworICAgIHJldHVybiBqc1N0cmluZyhleGVjLCB0aGlzT2JqLT5pbXBs
KCktPml0ZW0ocHJvcGVydHlOYW1lVG9BdG9taWNTdHJpbmcocHJvcGVydHlOYW1lKSkpOwogfQog
CiB2b2lkIEpTRE9NU3RyaW5nTWFwOjpnZXRPd25Qcm9wZXJ0eU5hbWVzKEpTT2JqZWN0KiBvYmpl
Y3QsIEV4ZWNTdGF0ZSogZXhlYywgUHJvcGVydHlOYW1lQXJyYXkmIHByb3BlcnR5TmFtZXMsIEVu
dW1lcmF0aW9uTW9kZSBtb2RlKQpAQCAtNTgsMTAgKzU4LDEwIEBAIHZvaWQgSlNET01TdHJpbmdN
YXA6OmdldE93blByb3BlcnR5TmFtZXMKICAgICBCYXNlOjpnZXRPd25Qcm9wZXJ0eU5hbWVzKHRo
aXNPYmplY3QsIGV4ZWMsIHByb3BlcnR5TmFtZXMsIG1vZGUpOwogfQogCi1ib29sIEpTRE9NU3Ry
aW5nTWFwOjpkZWxldGVQcm9wZXJ0eShKU0NlbGwqIGNlbGwsIEV4ZWNTdGF0ZSogZXhlYywgY29u
c3QgSWRlbnRpZmllciYgcHJvcGVydHlOYW1lKQorYm9vbCBKU0RPTVN0cmluZ01hcDo6ZGVsZXRl
UHJvcGVydHkoSlNDZWxsKiBjZWxsLCBFeGVjU3RhdGUqIGV4ZWMsIFByb3BlcnR5TmFtZSBwcm9w
ZXJ0eU5hbWUpCiB7CiAgICAgSlNET01TdHJpbmdNYXAqIHRoaXNPYmplY3QgPSBqc0Nhc3Q8SlNE
T01TdHJpbmdNYXAqPihjZWxsKTsKLSAgICBBdG9taWNTdHJpbmcgc3RyaW5nTmFtZSA9IGlkZW50
aWZpZXJUb0F0b21pY1N0cmluZyhwcm9wZXJ0eU5hbWUpOworICAgIEF0b21pY1N0cmluZyBzdHJp
bmdOYW1lID0gcHJvcGVydHlOYW1lVG9BdG9taWNTdHJpbmcocHJvcGVydHlOYW1lKTsKICAgICBp
ZiAoIXRoaXNPYmplY3QtPm1faW1wbC0+Y29udGFpbnMoc3RyaW5nTmFtZSkpCiAgICAgICAgIHJl
dHVybiBmYWxzZTsKICAgICBFeGNlcHRpb25Db2RlIGVjID0gMDsKQEAgLTcwLDEzICs3MCwxMyBA
QCBib29sIEpTRE9NU3RyaW5nTWFwOjpkZWxldGVQcm9wZXJ0eShKU0NlCiAgICAgcmV0dXJuICFl
YzsKIH0KIAotYm9vbCBKU0RPTVN0cmluZ01hcDo6cHV0RGVsZWdhdGUoRXhlY1N0YXRlKiBleGVj
LCBjb25zdCBJZGVudGlmaWVyJiBwcm9wZXJ0eU5hbWUsIEpTVmFsdWUgdmFsdWUsIFB1dFByb3Bl
cnR5U2xvdCYpCitib29sIEpTRE9NU3RyaW5nTWFwOjpwdXREZWxlZ2F0ZShFeGVjU3RhdGUqIGV4
ZWMsIFByb3BlcnR5TmFtZSBwcm9wZXJ0eU5hbWUsIEpTVmFsdWUgdmFsdWUsIFB1dFByb3BlcnR5
U2xvdCYpCiB7CiAgICAgU3RyaW5nIHN0cmluZ1ZhbHVlID0gdXN0cmluZ1RvU3RyaW5nKHZhbHVl
LnRvU3RyaW5nKGV4ZWMpLT52YWx1ZShleGVjKSk7CiAgICAgaWYgKGV4ZWMtPmhhZEV4Y2VwdGlv
bigpKQogICAgICAgICByZXR1cm4gZmFsc2U7CiAgICAgRXhjZXB0aW9uQ29kZSBlYyA9IDA7Ci0g
ICAgaW1wbCgpLT5zZXRJdGVtKGlkZW50aWZpZXJUb1N0cmluZyhwcm9wZXJ0eU5hbWUpLCBzdHJp
bmdWYWx1ZSwgZWMpOworICAgIGltcGwoKS0+c2V0SXRlbShwcm9wZXJ0eU5hbWVUb1N0cmluZyhw
cm9wZXJ0eU5hbWUpLCBzdHJpbmdWYWx1ZSwgZWMpOwogICAgIHNldERPTUV4Y2VwdGlvbihleGVj
LCBlYyk7CiAgICAgcmV0dXJuICFlYzsKIH0KSW5kZXg6IFNvdXJjZS9XZWJDb3JlL2JpbmRpbmdz
L2pzL0pTRE9NV2luZG93Q3VzdG9tLmNwcAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2ViQ29yZS9i
aW5kaW5ncy9qcy9KU0RPTVdpbmRvd0N1c3RvbS5jcHAJKHJldmlzaW9uIDExNjY2NykKKysrIFNv
dXJjZS9XZWJDb3JlL2JpbmRpbmdzL2pzL0pTRE9NV2luZG93Q3VzdG9tLmNwcAkod29ya2luZyBj
b3B5KQpAQCAtOTIsMTQgKzkyLDE0IEBAIHZvaWQgSlNET01XaW5kb3c6OnZpc2l0Q2hpbGRyZW4o
SlNDZWxsKiAKIH0KIAogdGVtcGxhdGU8TmF0aXZlRnVuY3Rpb24gbmF0aXZlRnVuY3Rpb24sIGlu
dCBsZW5ndGg+Ci1KU1ZhbHVlIG5vbkNhY2hpbmdTdGF0aWNGdW5jdGlvbkdldHRlcihFeGVjU3Rh
dGUqIGV4ZWMsIEpTVmFsdWUsIGNvbnN0IElkZW50aWZpZXImIHByb3BlcnR5TmFtZSkKK0pTVmFs
dWUgbm9uQ2FjaGluZ1N0YXRpY0Z1bmN0aW9uR2V0dGVyKEV4ZWNTdGF0ZSogZXhlYywgSlNWYWx1
ZSwgUHJvcGVydHlOYW1lIHByb3BlcnR5TmFtZSkKIHsKLSAgICByZXR1cm4gSlNGdW5jdGlvbjo6
Y3JlYXRlKGV4ZWMsIGV4ZWMtPmxleGljYWxHbG9iYWxPYmplY3QoKSwgbGVuZ3RoLCBwcm9wZXJ0
eU5hbWUsIG5hdGl2ZUZ1bmN0aW9uKTsKKyAgICByZXR1cm4gSlNGdW5jdGlvbjo6Y3JlYXRlKGV4
ZWMsIGV4ZWMtPmxleGljYWxHbG9iYWxPYmplY3QoKSwgbGVuZ3RoLCBwcm9wZXJ0eU5hbWUuaW1w
bCgpLCBuYXRpdmVGdW5jdGlvbik7CiB9CiAKLXN0YXRpYyBKU1ZhbHVlIGNoaWxkRnJhbWVHZXR0
ZXIoRXhlY1N0YXRlKiBleGVjLCBKU1ZhbHVlIHNsb3RCYXNlLCBjb25zdCBJZGVudGlmaWVyJiBw
cm9wZXJ0eU5hbWUpCitzdGF0aWMgSlNWYWx1ZSBjaGlsZEZyYW1lR2V0dGVyKEV4ZWNTdGF0ZSog
ZXhlYywgSlNWYWx1ZSBzbG90QmFzZSwgUHJvcGVydHlOYW1lIHByb3BlcnR5TmFtZSkKIHsKLSAg
ICByZXR1cm4gdG9KUyhleGVjLCBqc0Nhc3Q8SlNET01XaW5kb3cqPihhc09iamVjdChzbG90QmFz
ZSkpLT5pbXBsKCktPmZyYW1lKCktPnRyZWUoKS0+c2NvcGVkQ2hpbGQoaWRlbnRpZmllclRvQXRv
bWljU3RyaW5nKHByb3BlcnR5TmFtZSkpLT5kb21XaW5kb3coKSk7CisgICAgcmV0dXJuIHRvSlMo
ZXhlYywganNDYXN0PEpTRE9NV2luZG93Kj4oYXNPYmplY3Qoc2xvdEJhc2UpKS0+aW1wbCgpLT5m
cmFtZSgpLT50cmVlKCktPnNjb3BlZENoaWxkKHByb3BlcnR5TmFtZVRvQXRvbWljU3RyaW5nKHBy
b3BlcnR5TmFtZSkpLT5kb21XaW5kb3coKSk7CiB9CiAKIHN0YXRpYyBKU1ZhbHVlIGluZGV4R2V0
dGVyKEV4ZWNTdGF0ZSogZXhlYywgSlNWYWx1ZSBzbG90QmFzZSwgdW5zaWduZWQgaW5kZXgpCkBA
IC0xMDcsNyArMTA3LDcgQEAgc3RhdGljIEpTVmFsdWUgaW5kZXhHZXR0ZXIoRXhlY1N0YXRlKiBl
eAogICAgIHJldHVybiB0b0pTKGV4ZWMsIGpzQ2FzdDxKU0RPTVdpbmRvdyo+KGFzT2JqZWN0KHNs
b3RCYXNlKSktPmltcGwoKS0+ZnJhbWUoKS0+dHJlZSgpLT5zY29wZWRDaGlsZChpbmRleCktPmRv
bVdpbmRvdygpKTsKIH0KIAotc3RhdGljIEpTVmFsdWUgbmFtZWRJdGVtR2V0dGVyKEV4ZWNTdGF0
ZSogZXhlYywgSlNWYWx1ZSBzbG90QmFzZSwgY29uc3QgSWRlbnRpZmllciYgcHJvcGVydHlOYW1l
KQorc3RhdGljIEpTVmFsdWUgbmFtZWRJdGVtR2V0dGVyKEV4ZWNTdGF0ZSogZXhlYywgSlNWYWx1
ZSBzbG90QmFzZSwgUHJvcGVydHlOYW1lIHByb3BlcnR5TmFtZSkKIHsKICAgICBKU0RPTVdpbmRv
d0Jhc2UqIHRoaXNPYmogPSBqc0Nhc3Q8SlNET01XaW5kb3cqPihhc09iamVjdChzbG90QmFzZSkp
OwogICAgIERvY3VtZW50KiBkb2N1bWVudCA9IHRoaXNPYmotPmltcGwoKS0+ZnJhbWUoKS0+ZG9j
dW1lbnQoKTsKQEAgLTExNiwxMyArMTE2LDEzIEBAIHN0YXRpYyBKU1ZhbHVlIG5hbWVkSXRlbUdl
dHRlcihFeGVjU3RhdGUKICAgICBBU1NFUlQoZG9jdW1lbnQpOwogICAgIEFTU0VSVChkb2N1bWVu
dC0+aXNIVE1MRG9jdW1lbnQoKSk7CiAKLSAgICBIVE1MQ29sbGVjdGlvbiogY29sbGVjdGlvbiA9
IGRvY3VtZW50LT53aW5kb3dOYW1lZEl0ZW1zKGlkZW50aWZpZXJUb0F0b21pY1N0cmluZyhwcm9w
ZXJ0eU5hbWUpKTsKKyAgICBIVE1MQ29sbGVjdGlvbiogY29sbGVjdGlvbiA9IGRvY3VtZW50LT53
aW5kb3dOYW1lZEl0ZW1zKHByb3BlcnR5TmFtZVRvQXRvbWljU3RyaW5nKHByb3BlcnR5TmFtZSkp
OwogICAgIGlmIChjb2xsZWN0aW9uLT5sZW5ndGgoKSA9PSAxKQogICAgICAgICByZXR1cm4gdG9K
UyhleGVjLCB0aGlzT2JqLCBjb2xsZWN0aW9uLT5maXJzdEl0ZW0oKSk7CiAgICAgcmV0dXJuIHRv
SlMoZXhlYywgdGhpc09iaiwgY29sbGVjdGlvbik7CiB9CiAKLWJvb2wgSlNET01XaW5kb3c6Omdl
dE93blByb3BlcnR5U2xvdChKU0NlbGwqIGNlbGwsIEV4ZWNTdGF0ZSogZXhlYywgY29uc3QgSWRl
bnRpZmllciYgcHJvcGVydHlOYW1lLCBQcm9wZXJ0eVNsb3QmIHNsb3QpCitib29sIEpTRE9NV2lu
ZG93OjpnZXRPd25Qcm9wZXJ0eVNsb3QoSlNDZWxsKiBjZWxsLCBFeGVjU3RhdGUqIGV4ZWMsIFBy
b3BlcnR5TmFtZSBwcm9wZXJ0eU5hbWUsIFByb3BlcnR5U2xvdCYgc2xvdCkKIHsKICAgICBKU0RP
TVdpbmRvdyogdGhpc09iamVjdCA9IGpzQ2FzdDxKU0RPTVdpbmRvdyo+KGNlbGwpOwogICAgIC8v
IFdoZW4gYWNjZXNzaW5nIGEgV2luZG93IGNyb3NzLWRvbWFpbiwgZnVuY3Rpb25zIGFyZSBhbHdh
eXMgdGhlIG5hdGl2ZSBidWlsdC1pbiBvbmVzLCBhbmQgdGhleQpAQCAtMjIwLDcgKzIyMCw3IEBA
IGJvb2wgSlNET01XaW5kb3c6OmdldE93blByb3BlcnR5U2xvdChKU0MKICAgICAvLyBuYW1pbmcg
ZnJhbWVzIHRoaW5ncyB0aGF0IGNvbmZsaWN0IHdpdGggd2luZG93IHByb3BlcnRpZXMgdGhhdAog
ICAgIC8vIGFyZSBpbiBNb3ogYnV0IG5vdCBJRS4gU2luY2Ugd2UgaGF2ZSBzb21lIG9mIHRoZXNl
LCB3ZSBoYXZlIHRvIGRvCiAgICAgLy8gaXQgdGhlIE1veiB3YXkuCi0gICAgaWYgKHRoaXNPYmpl
Y3QtPmltcGwoKS0+ZnJhbWUoKS0+dHJlZSgpLT5zY29wZWRDaGlsZChpZGVudGlmaWVyVG9BdG9t
aWNTdHJpbmcocHJvcGVydHlOYW1lKSkpIHsKKyAgICBpZiAodGhpc09iamVjdC0+aW1wbCgpLT5m
cmFtZSgpLT50cmVlKCktPnNjb3BlZENoaWxkKHByb3BlcnR5TmFtZVRvQXRvbWljU3RyaW5nKHBy
b3BlcnR5TmFtZSkpKSB7CiAgICAgICAgIHNsb3Quc2V0Q3VzdG9tKHRoaXNPYmplY3QsIGNoaWxk
RnJhbWVHZXR0ZXIpOwogICAgICAgICByZXR1cm4gdHJ1ZTsKICAgICB9CkBAIC0yNDIsOSArMjQy
LDkgQEAgYm9vbCBKU0RPTVdpbmRvdzo6Z2V0T3duUHJvcGVydHlTbG90KEpTQwogICAgIC8vIFdl
IG5lZWQgdG8gdGVzdCB0aGUgY29ycmVjdCBwcmlvcml0eSBvcmRlci4KIAogICAgIC8vIGFsbG93
IHdpbmRvd1sxXSBvciBwYXJlbnRbMV0gZXRjLiAoIzU2OTgzKQotICAgIGJvb2wgb2s7Ci0gICAg
dW5zaWduZWQgaSA9IHByb3BlcnR5TmFtZS50b0FycmF5SW5kZXgob2spOwotICAgIGlmIChvayAm
JiBpIDwgdGhpc09iamVjdC0+aW1wbCgpLT5mcmFtZSgpLT50cmVlKCktPnNjb3BlZENoaWxkQ291
bnQoKSkgeworICAgIHVuc2lnbmVkIGkgPSBwcm9wZXJ0eU5hbWUuYXNJbmRleCgpOworICAgIGlm
IChpIDwgdGhpc09iamVjdC0+aW1wbCgpLT5mcmFtZSgpLT50cmVlKCktPnNjb3BlZENoaWxkQ291
bnQoKSkgeworICAgICAgICBBU1NFUlQoaSAhPSBQcm9wZXJ0eU5hbWU6Ok5vdEFuSW5kZXgpOwog
ICAgICAgICBzbG90LnNldEN1c3RvbUluZGV4KHRoaXNPYmplY3QsIGksIGluZGV4R2V0dGVyKTsK
ICAgICAgICAgcmV0dXJuIHRydWU7CiAgICAgfQpAQCAtMjY4LDcgKzI2OCw3IEBAIGJvb2wgSlNE
T01XaW5kb3c6OmdldE93blByb3BlcnR5U2xvdChKU0MKICAgICByZXR1cm4gQmFzZTo6Z2V0T3du
UHJvcGVydHlTbG90KHRoaXNPYmplY3QsIGV4ZWMsIHByb3BlcnR5TmFtZSwgc2xvdCk7CiB9CiAK
LWJvb2wgSlNET01XaW5kb3c6OmdldE93blByb3BlcnR5RGVzY3JpcHRvcihKU09iamVjdCogb2Jq
ZWN0LCBFeGVjU3RhdGUqIGV4ZWMsIGNvbnN0IElkZW50aWZpZXImIHByb3BlcnR5TmFtZSwgUHJv
cGVydHlEZXNjcmlwdG9yJiBkZXNjcmlwdG9yKQorYm9vbCBKU0RPTVdpbmRvdzo6Z2V0T3duUHJv
cGVydHlEZXNjcmlwdG9yKEpTT2JqZWN0KiBvYmplY3QsIEV4ZWNTdGF0ZSogZXhlYywgUHJvcGVy
dHlOYW1lIHByb3BlcnR5TmFtZSwgUHJvcGVydHlEZXNjcmlwdG9yJiBkZXNjcmlwdG9yKQogewog
ICAgIEpTRE9NV2luZG93KiB0aGlzT2JqZWN0ID0ganNDYXN0PEpTRE9NV2luZG93Kj4ob2JqZWN0
KTsKICAgICAvLyBOZXZlciBhbGxvdyBjcm9zcy1kb21haW4gZ2V0T3duUHJvcGVydHlEZXNjcmlw
dG9yCkBAIC0zMTAsMTYgKzMxMCwxNiBAQCBib29sIEpTRE9NV2luZG93OjpnZXRPd25Qcm9wZXJ0
eURlc2NyaXB0CiAgICAgLy8gbmFtaW5nIGZyYW1lcyB0aGluZ3MgdGhhdCBjb25mbGljdCB3aXRo
IHdpbmRvdyBwcm9wZXJ0aWVzIHRoYXQKICAgICAvLyBhcmUgaW4gTW96IGJ1dCBub3QgSUUuIFNp
bmNlIHdlIGhhdmUgc29tZSBvZiB0aGVzZSwgd2UgaGF2ZSB0byBkbwogICAgIC8vIGl0IHRoZSBN
b3ogd2F5LgotICAgIGlmICh0aGlzT2JqZWN0LT5pbXBsKCktPmZyYW1lKCktPnRyZWUoKS0+c2Nv
cGVkQ2hpbGQoaWRlbnRpZmllclRvQXRvbWljU3RyaW5nKHByb3BlcnR5TmFtZSkpKSB7CisgICAg
aWYgKHRoaXNPYmplY3QtPmltcGwoKS0+ZnJhbWUoKS0+dHJlZSgpLT5zY29wZWRDaGlsZChwcm9w
ZXJ0eU5hbWVUb0F0b21pY1N0cmluZyhwcm9wZXJ0eU5hbWUpKSkgewogICAgICAgICBQcm9wZXJ0
eVNsb3Qgc2xvdDsKICAgICAgICAgc2xvdC5zZXRDdXN0b20odGhpc09iamVjdCwgY2hpbGRGcmFt
ZUdldHRlcik7CiAgICAgICAgIGRlc2NyaXB0b3Iuc2V0RGVzY3JpcHRvcihzbG90LmdldFZhbHVl
KGV4ZWMsIHByb3BlcnR5TmFtZSksIFJlYWRPbmx5IHwgRG9udERlbGV0ZSB8IERvbnRFbnVtKTsK
ICAgICAgICAgcmV0dXJuIHRydWU7CiAgICAgfQogICAgIAotICAgIGJvb2wgb2s7Ci0gICAgdW5z
aWduZWQgaSA9IHByb3BlcnR5TmFtZS50b0FycmF5SW5kZXgob2spOwotICAgIGlmIChvayAmJiBp
IDwgdGhpc09iamVjdC0+aW1wbCgpLT5mcmFtZSgpLT50cmVlKCktPnNjb3BlZENoaWxkQ291bnQo
KSkgeworICAgIHVuc2lnbmVkIGkgPSBwcm9wZXJ0eU5hbWUuYXNJbmRleCgpOworICAgIGlmIChp
IDwgdGhpc09iamVjdC0+aW1wbCgpLT5mcmFtZSgpLT50cmVlKCktPnNjb3BlZENoaWxkQ291bnQo
KSkgeworICAgICAgICBBU1NFUlQoaSAhPSBQcm9wZXJ0eU5hbWU6Ok5vdEFuSW5kZXgpOwogICAg
ICAgICBQcm9wZXJ0eVNsb3Qgc2xvdDsKICAgICAgICAgc2xvdC5zZXRDdXN0b21JbmRleCh0aGlz
T2JqZWN0LCBpLCBpbmRleEdldHRlcik7CiAgICAgICAgIGRlc2NyaXB0b3Iuc2V0RGVzY3JpcHRv
cihzbG90LmdldFZhbHVlKGV4ZWMsIHByb3BlcnR5TmFtZSksIFJlYWRPbmx5IHwgRG9udERlbGV0
ZSB8IERvbnRFbnVtKTsKQEAgLTM0MSw3ICszNDEsNyBAQCBib29sIEpTRE9NV2luZG93OjpnZXRP
d25Qcm9wZXJ0eURlc2NyaXB0CiAgICAgcmV0dXJuIEJhc2U6OmdldE93blByb3BlcnR5RGVzY3Jp
cHRvcih0aGlzT2JqZWN0LCBleGVjLCBwcm9wZXJ0eU5hbWUsIGRlc2NyaXB0b3IpOwogfQogCi12
b2lkIEpTRE9NV2luZG93OjpwdXQoSlNDZWxsKiBjZWxsLCBFeGVjU3RhdGUqIGV4ZWMsIGNvbnN0
IElkZW50aWZpZXImIHByb3BlcnR5TmFtZSwgSlNWYWx1ZSB2YWx1ZSwgUHV0UHJvcGVydHlTbG90
JiBzbG90KQordm9pZCBKU0RPTVdpbmRvdzo6cHV0KEpTQ2VsbCogY2VsbCwgRXhlY1N0YXRlKiBl
eGVjLCBQcm9wZXJ0eU5hbWUgcHJvcGVydHlOYW1lLCBKU1ZhbHVlIHZhbHVlLCBQdXRQcm9wZXJ0
eVNsb3QmIHNsb3QpCiB7CiAgICAgSlNET01XaW5kb3cqIHRoaXNPYmplY3QgPSBqc0Nhc3Q8SlNE
T01XaW5kb3cqPihjZWxsKTsKICAgICBpZiAoIXRoaXNPYmplY3QtPmltcGwoKS0+ZnJhbWUoKSkK
QEAgLTM2MSw3ICszNjEsNyBAQCB2b2lkIEpTRE9NV2luZG93OjpwdXQoSlNDZWxsKiBjZWxsLCBF
eGVjCiAgICAgICAgIEJhc2U6OnB1dCh0aGlzT2JqZWN0LCBleGVjLCBwcm9wZXJ0eU5hbWUsIHZh
bHVlLCBzbG90KTsKIH0KIAotYm9vbCBKU0RPTVdpbmRvdzo6ZGVsZXRlUHJvcGVydHkoSlNDZWxs
KiBjZWxsLCBFeGVjU3RhdGUqIGV4ZWMsIGNvbnN0IElkZW50aWZpZXImIHByb3BlcnR5TmFtZSkK
K2Jvb2wgSlNET01XaW5kb3c6OmRlbGV0ZVByb3BlcnR5KEpTQ2VsbCogY2VsbCwgRXhlY1N0YXRl
KiBleGVjLCBQcm9wZXJ0eU5hbWUgcHJvcGVydHlOYW1lKQogewogICAgIEpTRE9NV2luZG93KiB0
aGlzT2JqZWN0ID0ganNDYXN0PEpTRE9NV2luZG93Kj4oY2VsbCk7CiAgICAgLy8gT25seSBhbGxv
dyBkZWxldGluZyBwcm9wZXJ0aWVzIGJ5IGZyYW1lcyBpbiB0aGUgc2FtZSBvcmlnaW4uCkBAIC0z
ODgsNyArMzg4LDcgQEAgdm9pZCBKU0RPTVdpbmRvdzo6Z2V0T3duUHJvcGVydHlOYW1lcyhKUwog
ICAgIEJhc2U6OmdldE93blByb3BlcnR5TmFtZXModGhpc09iamVjdCwgZXhlYywgcHJvcGVydHlO
YW1lcywgbW9kZSk7CiB9CiAKLWJvb2wgSlNET01XaW5kb3c6OmRlZmluZU93blByb3BlcnR5KEpT
Qzo6SlNPYmplY3QqIG9iamVjdCwgSlNDOjpFeGVjU3RhdGUqIGV4ZWMsIGNvbnN0IEpTQzo6SWRl
bnRpZmllciYgcHJvcGVydHlOYW1lLCBKU0M6OlByb3BlcnR5RGVzY3JpcHRvciYgZGVzY3JpcHRv
ciwgYm9vbCBzaG91bGRUaHJvdykKK2Jvb2wgSlNET01XaW5kb3c6OmRlZmluZU93blByb3BlcnR5
KEpTQzo6SlNPYmplY3QqIG9iamVjdCwgSlNDOjpFeGVjU3RhdGUqIGV4ZWMsIEpTQzo6UHJvcGVy
dHlOYW1lIHByb3BlcnR5TmFtZSwgSlNDOjpQcm9wZXJ0eURlc2NyaXB0b3ImIGRlc2NyaXB0b3Is
IGJvb2wgc2hvdWxkVGhyb3cpCiB7CiAgICAgSlNET01XaW5kb3cqIHRoaXNPYmplY3QgPSBqc0Nh
c3Q8SlNET01XaW5kb3cqPihvYmplY3QpOwogICAgIC8vIE9ubHkgYWxsb3cgZGVmaW5pbmcgcHJv
cGVydGllcyBpbiB0aGlzIHdheSBieSBmcmFtZXMgaW4gdGhlIHNhbWUgb3JpZ2luLCBhcyBpdCBh
bGxvd3Mgc2V0dGVycyB0byBiZSBpbnRyb2R1Y2VkLgpAQCAtMzk2LDcgKzM5Niw3IEBAIGJvb2wg
SlNET01XaW5kb3c6OmRlZmluZU93blByb3BlcnR5KEpTQzoKICAgICAgICAgcmV0dXJuIGZhbHNl
OwogCiAgICAgLy8gRG9uJ3QgYWxsb3cgc2hhZG93aW5nIGxvY2F0aW9uIHVzaW5nIGFjY2Vzc29y
IHByb3BlcnRpZXMuCi0gICAgaWYgKGRlc2NyaXB0b3IuaXNBY2Nlc3NvckRlc2NyaXB0b3IoKSAm
JiBwcm9wZXJ0eU5hbWUgPT0gImxvY2F0aW9uIikKKyAgICBpZiAoZGVzY3JpcHRvci5pc0FjY2Vz
c29yRGVzY3JpcHRvcigpICYmIHByb3BlcnR5TmFtZSA9PSBJZGVudGlmaWVyKGV4ZWMsICJsb2Nh
dGlvbiIpKQogICAgICAgICByZXR1cm4gZmFsc2U7CiAKICAgICByZXR1cm4gQmFzZTo6ZGVmaW5l
T3duUHJvcGVydHkodGhpc09iamVjdCwgZXhlYywgcHJvcGVydHlOYW1lLCBkZXNjcmlwdG9yLCBz
aG91bGRUaHJvdyk7CkluZGV4OiBTb3VyY2UvV2ViQ29yZS9iaW5kaW5ncy9qcy9KU0RPTVdpbmRv
d1NoZWxsLmNwcAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2ViQ29yZS9iaW5kaW5ncy9qcy9KU0RP
TVdpbmRvd1NoZWxsLmNwcAkocmV2aXNpb24gMTE2NjY3KQorKysgU291cmNlL1dlYkNvcmUvYmlu
ZGluZ3MvanMvSlNET01XaW5kb3dTaGVsbC5jcHAJKHdvcmtpbmcgY29weSkKQEAgLTkxLDM3ICs5
MSwzNyBAQCBVU3RyaW5nIEpTRE9NV2luZG93U2hlbGw6OmNsYXNzTmFtZShjb25zCiAgICAgcmV0
dXJuIHRoaXNPYmplY3QtPndpbmRvdygpLT5tZXRob2RUYWJsZSgpLT5jbGFzc05hbWUodGhpc09i
amVjdC0+d2luZG93KCkpOwogfQogCi1ib29sIEpTRE9NV2luZG93U2hlbGw6OmdldE93blByb3Bl
cnR5U2xvdChKU0NlbGwqIGNlbGwsIEV4ZWNTdGF0ZSogZXhlYywgY29uc3QgSWRlbnRpZmllciYg
cHJvcGVydHlOYW1lLCBQcm9wZXJ0eVNsb3QmIHNsb3QpCitib29sIEpTRE9NV2luZG93U2hlbGw6
OmdldE93blByb3BlcnR5U2xvdChKU0NlbGwqIGNlbGwsIEV4ZWNTdGF0ZSogZXhlYywgUHJvcGVy
dHlOYW1lIHByb3BlcnR5TmFtZSwgUHJvcGVydHlTbG90JiBzbG90KQogewogICAgIEpTRE9NV2lu
ZG93U2hlbGwqIHRoaXNPYmplY3QgPSBqc0Nhc3Q8SlNET01XaW5kb3dTaGVsbCo+KGNlbGwpOwog
ICAgIHJldHVybiB0aGlzT2JqZWN0LT53aW5kb3coKS0+bWV0aG9kVGFibGUoKS0+Z2V0T3duUHJv
cGVydHlTbG90KHRoaXNPYmplY3QtPndpbmRvdygpLCBleGVjLCBwcm9wZXJ0eU5hbWUsIHNsb3Qp
OwogfQogCi1ib29sIEpTRE9NV2luZG93U2hlbGw6OmdldE93blByb3BlcnR5RGVzY3JpcHRvcihK
U09iamVjdCogb2JqZWN0LCBFeGVjU3RhdGUqIGV4ZWMsIGNvbnN0IElkZW50aWZpZXImIHByb3Bl
cnR5TmFtZSwgUHJvcGVydHlEZXNjcmlwdG9yJiBkZXNjcmlwdG9yKQorYm9vbCBKU0RPTVdpbmRv
d1NoZWxsOjpnZXRPd25Qcm9wZXJ0eURlc2NyaXB0b3IoSlNPYmplY3QqIG9iamVjdCwgRXhlY1N0
YXRlKiBleGVjLCBQcm9wZXJ0eU5hbWUgcHJvcGVydHlOYW1lLCBQcm9wZXJ0eURlc2NyaXB0b3Im
IGRlc2NyaXB0b3IpCiB7CiAgICAgSlNET01XaW5kb3dTaGVsbCogdGhpc09iamVjdCA9IGpzQ2Fz
dDxKU0RPTVdpbmRvd1NoZWxsKj4ob2JqZWN0KTsKICAgICByZXR1cm4gdGhpc09iamVjdC0+d2lu
ZG93KCktPm1ldGhvZFRhYmxlKCktPmdldE93blByb3BlcnR5RGVzY3JpcHRvcih0aGlzT2JqZWN0
LT53aW5kb3coKSwgZXhlYywgcHJvcGVydHlOYW1lLCBkZXNjcmlwdG9yKTsKIH0KIAotdm9pZCBK
U0RPTVdpbmRvd1NoZWxsOjpwdXQoSlNDZWxsKiBjZWxsLCBFeGVjU3RhdGUqIGV4ZWMsIGNvbnN0
IElkZW50aWZpZXImIHByb3BlcnR5TmFtZSwgSlNWYWx1ZSB2YWx1ZSwgUHV0UHJvcGVydHlTbG90
JiBzbG90KQordm9pZCBKU0RPTVdpbmRvd1NoZWxsOjpwdXQoSlNDZWxsKiBjZWxsLCBFeGVjU3Rh
dGUqIGV4ZWMsIFByb3BlcnR5TmFtZSBwcm9wZXJ0eU5hbWUsIEpTVmFsdWUgdmFsdWUsIFB1dFBy
b3BlcnR5U2xvdCYgc2xvdCkKIHsKICAgICBKU0RPTVdpbmRvd1NoZWxsKiB0aGlzT2JqZWN0ID0g
anNDYXN0PEpTRE9NV2luZG93U2hlbGwqPihjZWxsKTsKICAgICB0aGlzT2JqZWN0LT53aW5kb3co
KS0+bWV0aG9kVGFibGUoKS0+cHV0KHRoaXNPYmplY3QtPndpbmRvdygpLCBleGVjLCBwcm9wZXJ0
eU5hbWUsIHZhbHVlLCBzbG90KTsKIH0KIAotdm9pZCBKU0RPTVdpbmRvd1NoZWxsOjpwdXREaXJl
Y3RWaXJ0dWFsKEpTT2JqZWN0KiBvYmplY3QsIEV4ZWNTdGF0ZSogZXhlYywgY29uc3QgSWRlbnRp
ZmllciYgcHJvcGVydHlOYW1lLCBKU1ZhbHVlIHZhbHVlLCB1bnNpZ25lZCBhdHRyaWJ1dGVzKQor
dm9pZCBKU0RPTVdpbmRvd1NoZWxsOjpwdXREaXJlY3RWaXJ0dWFsKEpTT2JqZWN0KiBvYmplY3Qs
IEV4ZWNTdGF0ZSogZXhlYywgUHJvcGVydHlOYW1lIHByb3BlcnR5TmFtZSwgSlNWYWx1ZSB2YWx1
ZSwgdW5zaWduZWQgYXR0cmlidXRlcykKIHsKICAgICBKU0RPTVdpbmRvd1NoZWxsKiB0aGlzT2Jq
ZWN0ID0ganNDYXN0PEpTRE9NV2luZG93U2hlbGwqPihvYmplY3QpOwogICAgIHRoaXNPYmplY3Qt
PndpbmRvdygpLT5wdXREaXJlY3RWaXJ0dWFsKHRoaXNPYmplY3QtPndpbmRvdygpLCBleGVjLCBw
cm9wZXJ0eU5hbWUsIHZhbHVlLCBhdHRyaWJ1dGVzKTsKIH0KIAotYm9vbCBKU0RPTVdpbmRvd1No
ZWxsOjpkZWZpbmVPd25Qcm9wZXJ0eShKU0M6OkpTT2JqZWN0KiBvYmplY3QsIEpTQzo6RXhlY1N0
YXRlKiBleGVjLCBjb25zdCBKU0M6OklkZW50aWZpZXImIHByb3BlcnR5TmFtZSwgSlNDOjpQcm9w
ZXJ0eURlc2NyaXB0b3ImIGRlc2NyaXB0b3IsIGJvb2wgc2hvdWxkVGhyb3cpCitib29sIEpTRE9N
V2luZG93U2hlbGw6OmRlZmluZU93blByb3BlcnR5KEpTQzo6SlNPYmplY3QqIG9iamVjdCwgSlND
OjpFeGVjU3RhdGUqIGV4ZWMsIEpTQzo6UHJvcGVydHlOYW1lIHByb3BlcnR5TmFtZSwgSlNDOjpQ
cm9wZXJ0eURlc2NyaXB0b3ImIGRlc2NyaXB0b3IsIGJvb2wgc2hvdWxkVGhyb3cpCiB7CiAgICAg
SlNET01XaW5kb3dTaGVsbCogdGhpc09iamVjdCA9IGpzQ2FzdDxKU0RPTVdpbmRvd1NoZWxsKj4o
b2JqZWN0KTsKICAgICByZXR1cm4gdGhpc09iamVjdC0+d2luZG93KCktPm1ldGhvZFRhYmxlKCkt
PmRlZmluZU93blByb3BlcnR5KHRoaXNPYmplY3QtPndpbmRvdygpLCBleGVjLCBwcm9wZXJ0eU5h
bWUsIGRlc2NyaXB0b3IsIHNob3VsZFRocm93KTsKIH0KIAotYm9vbCBKU0RPTVdpbmRvd1NoZWxs
OjpkZWxldGVQcm9wZXJ0eShKU0NlbGwqIGNlbGwsIEV4ZWNTdGF0ZSogZXhlYywgY29uc3QgSWRl
bnRpZmllciYgcHJvcGVydHlOYW1lKQorYm9vbCBKU0RPTVdpbmRvd1NoZWxsOjpkZWxldGVQcm9w
ZXJ0eShKU0NlbGwqIGNlbGwsIEV4ZWNTdGF0ZSogZXhlYywgUHJvcGVydHlOYW1lIHByb3BlcnR5
TmFtZSkKIHsKICAgICBKU0RPTVdpbmRvd1NoZWxsKiB0aGlzT2JqZWN0ID0ganNDYXN0PEpTRE9N
V2luZG93U2hlbGwqPihjZWxsKTsKICAgICByZXR1cm4gdGhpc09iamVjdC0+d2luZG93KCktPm1l
dGhvZFRhYmxlKCktPmRlbGV0ZVByb3BlcnR5KHRoaXNPYmplY3QtPndpbmRvdygpLCBleGVjLCBw
cm9wZXJ0eU5hbWUpOwpJbmRleDogU291cmNlL1dlYkNvcmUvYmluZGluZ3MvanMvSlNET01XaW5k
b3dTaGVsbC5oCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9XZWJDb3JlL2JpbmRpbmdzL2pzL0pTRE9N
V2luZG93U2hlbGwuaAkocmV2aXNpb24gMTE2NjY3KQorKysgU291cmNlL1dlYkNvcmUvYmluZGlu
Z3MvanMvSlNET01XaW5kb3dTaGVsbC5oCSh3b3JraW5nIGNvcHkpCkBAIC03OCwxNCArNzgsMTQg
QEAgbmFtZXNwYWNlIFdlYkNvcmUgewogICAgICAgICBzdGF0aWMgY29uc3QgdW5zaWduZWQgU3Ry
dWN0dXJlRmxhZ3MgPSBKU0M6Ok92ZXJyaWRlc0dldE93blByb3BlcnR5U2xvdCB8IEpTQzo6T3Zl
cnJpZGVzR2V0UHJvcGVydHlOYW1lcyB8IEJhc2U6OlN0cnVjdHVyZUZsYWdzOwogCiAgICAgICAg
IHN0YXRpYyBKU0M6OlVTdHJpbmcgY2xhc3NOYW1lKGNvbnN0IEpTQzo6SlNPYmplY3QqKTsKLSAg
ICAgICAgc3RhdGljIGJvb2wgZ2V0T3duUHJvcGVydHlTbG90KEpTQzo6SlNDZWxsKiwgSlNDOjpF
eGVjU3RhdGUqLCBjb25zdCBKU0M6OklkZW50aWZpZXImIHByb3BlcnR5TmFtZSwgSlNDOjpQcm9w
ZXJ0eVNsb3QmKTsKLSAgICAgICAgc3RhdGljIGJvb2wgZ2V0T3duUHJvcGVydHlEZXNjcmlwdG9y
KEpTQzo6SlNPYmplY3QqLCBKU0M6OkV4ZWNTdGF0ZSosIGNvbnN0IEpTQzo6SWRlbnRpZmllciYg
cHJvcGVydHlOYW1lLCBKU0M6OlByb3BlcnR5RGVzY3JpcHRvciYpOwotICAgICAgICBzdGF0aWMg
dm9pZCBwdXQoSlNDOjpKU0NlbGwqLCBKU0M6OkV4ZWNTdGF0ZSosIGNvbnN0IEpTQzo6SWRlbnRp
ZmllciYgcHJvcGVydHlOYW1lLCBKU0M6OkpTVmFsdWUsIEpTQzo6UHV0UHJvcGVydHlTbG90Jik7
Ci0gICAgICAgIHN0YXRpYyB2b2lkIHB1dERpcmVjdFZpcnR1YWwoSlNDOjpKU09iamVjdCosIEpT
Qzo6RXhlY1N0YXRlKiwgY29uc3QgSlNDOjpJZGVudGlmaWVyJiBwcm9wZXJ0eU5hbWUsIEpTQzo6
SlNWYWx1ZSwgdW5zaWduZWQgYXR0cmlidXRlcyk7Ci0gICAgICAgIHN0YXRpYyBib29sIGRlbGV0
ZVByb3BlcnR5KEpTQzo6SlNDZWxsKiwgSlNDOjpFeGVjU3RhdGUqLCBjb25zdCBKU0M6OklkZW50
aWZpZXImIHByb3BlcnR5TmFtZSk7CisgICAgICAgIHN0YXRpYyBib29sIGdldE93blByb3BlcnR5
U2xvdChKU0M6OkpTQ2VsbCosIEpTQzo6RXhlY1N0YXRlKiwgSlNDOjpQcm9wZXJ0eU5hbWUsIEpT
Qzo6UHJvcGVydHlTbG90Jik7CisgICAgICAgIHN0YXRpYyBib29sIGdldE93blByb3BlcnR5RGVz
Y3JpcHRvcihKU0M6OkpTT2JqZWN0KiwgSlNDOjpFeGVjU3RhdGUqLCBKU0M6OlByb3BlcnR5TmFt
ZSwgSlNDOjpQcm9wZXJ0eURlc2NyaXB0b3ImKTsKKyAgICAgICAgc3RhdGljIHZvaWQgcHV0KEpT
Qzo6SlNDZWxsKiwgSlNDOjpFeGVjU3RhdGUqLCBKU0M6OlByb3BlcnR5TmFtZSwgSlNDOjpKU1Zh
bHVlLCBKU0M6OlB1dFByb3BlcnR5U2xvdCYpOworICAgICAgICBzdGF0aWMgdm9pZCBwdXREaXJl
Y3RWaXJ0dWFsKEpTQzo6SlNPYmplY3QqLCBKU0M6OkV4ZWNTdGF0ZSosIEpTQzo6UHJvcGVydHlO
YW1lLCBKU0M6OkpTVmFsdWUsIHVuc2lnbmVkIGF0dHJpYnV0ZXMpOworICAgICAgICBzdGF0aWMg
Ym9vbCBkZWxldGVQcm9wZXJ0eShKU0M6OkpTQ2VsbCosIEpTQzo6RXhlY1N0YXRlKiwgSlNDOjpQ
cm9wZXJ0eU5hbWUpOwogICAgICAgICBzdGF0aWMgdm9pZCBnZXRPd25Qcm9wZXJ0eU5hbWVzKEpT
Qzo6SlNPYmplY3QqLCBKU0M6OkV4ZWNTdGF0ZSosIEpTQzo6UHJvcGVydHlOYW1lQXJyYXkmLCBK
U0M6OkVudW1lcmF0aW9uTW9kZSk7CiAgICAgICAgIHN0YXRpYyB2b2lkIGdldFByb3BlcnR5TmFt
ZXMoSlNDOjpKU09iamVjdCosIEpTQzo6RXhlY1N0YXRlKiwgSlNDOjpQcm9wZXJ0eU5hbWVBcnJh
eSYsIEpTQzo6RW51bWVyYXRpb25Nb2RlKTsKLSAgICAgICAgc3RhdGljIGJvb2wgZGVmaW5lT3du
UHJvcGVydHkoSlNDOjpKU09iamVjdCosIEpTQzo6RXhlY1N0YXRlKiwgY29uc3QgSlNDOjpJZGVu
dGlmaWVyJiBwcm9wZXJ0eU5hbWUsIEpTQzo6UHJvcGVydHlEZXNjcmlwdG9yJiwgYm9vbCBzaG91
bGRUaHJvdyk7CisgICAgICAgIHN0YXRpYyBib29sIGRlZmluZU93blByb3BlcnR5KEpTQzo6SlNP
YmplY3QqLCBKU0M6OkV4ZWNTdGF0ZSosIEpTQzo6UHJvcGVydHlOYW1lLCBKU0M6OlByb3BlcnR5
RGVzY3JpcHRvciYsIGJvb2wgc2hvdWxkVGhyb3cpOwogCiAgICAgICAgIFJlZlB0cjxET01XcmFw
cGVyV29ybGQ+IG1fd29ybGQ7CiAgICAgfTsKSW5kZXg6IFNvdXJjZS9XZWJDb3JlL2JpbmRpbmdz
L2pzL0pTSFRNTEFsbENvbGxlY3Rpb25DdXN0b20uY3BwCj09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9X
ZWJDb3JlL2JpbmRpbmdzL2pzL0pTSFRNTEFsbENvbGxlY3Rpb25DdXN0b20uY3BwCShyZXZpc2lv
biAxMTY2NjcpCisrKyBTb3VyY2UvV2ViQ29yZS9iaW5kaW5ncy9qcy9KU0hUTUxBbGxDb2xsZWN0
aW9uQ3VzdG9tLmNwcAkod29ya2luZyBjb3B5KQpAQCAtNDEsMTAgKzQxLDEwIEBAIHVzaW5nIG5h
bWVzcGFjZSBKU0M7CiAKIG5hbWVzcGFjZSBXZWJDb3JlIHsKIAotc3RhdGljIEpTVmFsdWUgZ2V0
TmFtZWRJdGVtcyhFeGVjU3RhdGUqIGV4ZWMsIEpTSFRNTEFsbENvbGxlY3Rpb24qIGNvbGxlY3Rp
b24sIGNvbnN0IElkZW50aWZpZXImIHByb3BlcnR5TmFtZSkKK3N0YXRpYyBKU1ZhbHVlIGdldE5h
bWVkSXRlbXMoRXhlY1N0YXRlKiBleGVjLCBKU0hUTUxBbGxDb2xsZWN0aW9uKiBjb2xsZWN0aW9u
LCBQcm9wZXJ0eU5hbWUgcHJvcGVydHlOYW1lKQogewogICAgIFZlY3RvcjxSZWZQdHI8Tm9kZT4g
PiBuYW1lZEl0ZW1zOwotICAgIGNvbGxlY3Rpb24tPmltcGwoKS0+bmFtZWRJdGVtcyhpZGVudGlm
aWVyVG9BdG9taWNTdHJpbmcocHJvcGVydHlOYW1lKSwgbmFtZWRJdGVtcyk7CisgICAgY29sbGVj
dGlvbi0+aW1wbCgpLT5uYW1lZEl0ZW1zKHByb3BlcnR5TmFtZVRvQXRvbWljU3RyaW5nKHByb3Bl
cnR5TmFtZSksIG5hbWVkSXRlbXMpOwogCiAgICAgaWYgKG5hbWVkSXRlbXMuaXNFbXB0eSgpKQog
ICAgICAgICByZXR1cm4ganNVbmRlZmluZWQoKTsKQEAgLTcxLDEwICs3MSw5IEBAIHN0YXRpYyBF
bmNvZGVkSlNWYWx1ZSBKU0NfSE9TVF9DQUxMIGNhbGwKIAogICAgIGlmIChleGVjLT5hcmd1bWVu
dENvdW50KCkgPT0gMSkgewogICAgICAgICAvLyBTdXBwb3J0IGZvciBkb2N1bWVudC5hbGwoPGlu
ZGV4PikgZXRjLgotICAgICAgICBib29sIG9rOwogICAgICAgICBVU3RyaW5nIHN0cmluZyA9IGV4
ZWMtPmFyZ3VtZW50KDApLnRvU3RyaW5nKGV4ZWMpLT52YWx1ZShleGVjKTsKLSAgICAgICAgdW5z
aWduZWQgaW5kZXggPSBJZGVudGlmaWVyOjp0b1VJbnQzMihzdHJpbmcsIG9rKTsKLSAgICAgICAg
aWYgKG9rKQorICAgICAgICB1bnNpZ25lZCBpbmRleCA9IHRvVUludDMyRnJvbVN0cmluZ0ltcGwo
c3RyaW5nLmltcGwoKSk7CisgICAgICAgIGlmIChpbmRleCAhPSBQcm9wZXJ0eU5hbWU6Ok5vdEFu
SW5kZXgpCiAgICAgICAgICAgICByZXR1cm4gSlNWYWx1ZTo6ZW5jb2RlKHRvSlMoZXhlYywganND
b2xsZWN0aW9uLT5nbG9iYWxPYmplY3QoKSwgY29sbGVjdGlvbi0+aXRlbShpbmRleCkpKTsKIAog
ICAgICAgICAvLyBTdXBwb3J0IGZvciBkb2N1bWVudC5pbWFnZXMoJzxuYW1lPicpIGV0Yy4KQEAg
LTgyLDEwICs4MSw5IEBAIHN0YXRpYyBFbmNvZGVkSlNWYWx1ZSBKU0NfSE9TVF9DQUxMIGNhbGwK
ICAgICB9CiAKICAgICAvLyBUaGUgc2Vjb25kIGFyZywgaWYgc2V0LCBpcyB0aGUgaW5kZXggb2Yg
dGhlIGl0ZW0gd2Ugd2FudAotICAgIGJvb2wgb2s7CiAgICAgVVN0cmluZyBzdHJpbmcgPSBleGVj
LT5hcmd1bWVudCgwKS50b1N0cmluZyhleGVjKS0+dmFsdWUoZXhlYyk7Ci0gICAgdW5zaWduZWQg
aW5kZXggPSBJZGVudGlmaWVyOjp0b1VJbnQzMihleGVjLT5hcmd1bWVudCgxKS50b1N0cmluZyhl
eGVjKS0+dmFsdWUoZXhlYyksIG9rKTsKLSAgICBpZiAob2spIHsKKyAgICB1bnNpZ25lZCBpbmRl
eCA9IHRvVUludDMyRnJvbVN0cmluZ0ltcGwoZXhlYy0+YXJndW1lbnQoMSkudG9TdHJpbmcoZXhl
YyktPnZhbHVlKGV4ZWMpLmltcGwoKSk7CisgICAgaWYgKGluZGV4ICE9IFByb3BlcnR5TmFtZTo6
Tm90QW5JbmRleCkgewogICAgICAgICBpZiAoTm9kZSogbm9kZSA9IGNvbGxlY3Rpb24tPm5hbWVk
SXRlbVdpdGhJbmRleCh1c3RyaW5nVG9BdG9taWNTdHJpbmcoc3RyaW5nKSwgaW5kZXgpKQogICAg
ICAgICAgICAgcmV0dXJuIEpTVmFsdWU6OmVuY29kZSh0b0pTKGV4ZWMsIGpzQ29sbGVjdGlvbi0+
Z2xvYmFsT2JqZWN0KCksIG5vZGUpKTsKICAgICB9CkBAIC05OSwxMiArOTcsMTIgQEAgQ2FsbFR5
cGUgSlNIVE1MQWxsQ29sbGVjdGlvbjo6Z2V0Q2FsbERhdAogICAgIHJldHVybiBDYWxsVHlwZUhv
c3Q7CiB9CiAKLWJvb2wgSlNIVE1MQWxsQ29sbGVjdGlvbjo6Y2FuR2V0SXRlbXNGb3JOYW1lKEV4
ZWNTdGF0ZSosIEhUTUxBbGxDb2xsZWN0aW9uKiBjb2xsZWN0aW9uLCBjb25zdCBJZGVudGlmaWVy
JiBwcm9wZXJ0eU5hbWUpCitib29sIEpTSFRNTEFsbENvbGxlY3Rpb246OmNhbkdldEl0ZW1zRm9y
TmFtZShFeGVjU3RhdGUqLCBIVE1MQWxsQ29sbGVjdGlvbiogY29sbGVjdGlvbiwgUHJvcGVydHlO
YW1lIHByb3BlcnR5TmFtZSkKIHsKLSAgICByZXR1cm4gY29sbGVjdGlvbi0+aGFzTmFtZWRJdGVt
KGlkZW50aWZpZXJUb0F0b21pY1N0cmluZyhwcm9wZXJ0eU5hbWUpKTsKKyAgICByZXR1cm4gY29s
bGVjdGlvbi0+aGFzTmFtZWRJdGVtKHByb3BlcnR5TmFtZVRvQXRvbWljU3RyaW5nKHByb3BlcnR5
TmFtZSkpOwogfQogCi1KU1ZhbHVlIEpTSFRNTEFsbENvbGxlY3Rpb246Om5hbWVHZXR0ZXIoRXhl
Y1N0YXRlKiBleGVjLCBKU1ZhbHVlIHNsb3RCYXNlLCBjb25zdCBJZGVudGlmaWVyJiBwcm9wZXJ0
eU5hbWUpCitKU1ZhbHVlIEpTSFRNTEFsbENvbGxlY3Rpb246Om5hbWVHZXR0ZXIoRXhlY1N0YXRl
KiBleGVjLCBKU1ZhbHVlIHNsb3RCYXNlLCBQcm9wZXJ0eU5hbWUgcHJvcGVydHlOYW1lKQogewog
ICAgIEpTSFRNTEFsbENvbGxlY3Rpb24qIHRoaXNPYmogPSBqc0Nhc3Q8SlNIVE1MQWxsQ29sbGVj
dGlvbio+KGFzT2JqZWN0KHNsb3RCYXNlKSk7CiAgICAgcmV0dXJuIGdldE5hbWVkSXRlbXMoZXhl
YywgdGhpc09iaiwgcHJvcGVydHlOYW1lKTsKQEAgLTExMiw5ICsxMTAsOCBAQCBKU1ZhbHVlIEpT
SFRNTEFsbENvbGxlY3Rpb246Om5hbWVHZXR0ZXIoCiAKIEpTVmFsdWUgSlNIVE1MQWxsQ29sbGVj
dGlvbjo6aXRlbShFeGVjU3RhdGUqIGV4ZWMpCiB7Ci0gICAgYm9vbCBvazsKLSAgICB1aW50MzJf
dCBpbmRleCA9IElkZW50aWZpZXI6OnRvVUludDMyKGV4ZWMtPmFyZ3VtZW50KDApLnRvU3RyaW5n
KGV4ZWMpLT52YWx1ZShleGVjKSwgb2spOwotICAgIGlmIChvaykKKyAgICB1aW50MzJfdCBpbmRl
eCA9IHRvVUludDMyRnJvbVN0cmluZ0ltcGwoZXhlYy0+YXJndW1lbnQoMCkudG9TdHJpbmcoZXhl
YyktPnZhbHVlKGV4ZWMpLmltcGwoKSk7CisgICAgaWYgKGluZGV4ICE9IFByb3BlcnR5TmFtZTo6
Tm90QW5JbmRleCkKICAgICAgICAgcmV0dXJuIHRvSlMoZXhlYywgZ2xvYmFsT2JqZWN0KCksIGlt
cGwoKS0+aXRlbShpbmRleCkpOwogICAgIHJldHVybiBnZXROYW1lZEl0ZW1zKGV4ZWMsIHRoaXMs
IElkZW50aWZpZXIoZXhlYywgZXhlYy0+YXJndW1lbnQoMCkudG9TdHJpbmcoZXhlYyktPnZhbHVl
KGV4ZWMpKSk7CiB9CkluZGV4OiBTb3VyY2UvV2ViQ29yZS9iaW5kaW5ncy9qcy9KU0hUTUxBcHBs
ZXRFbGVtZW50Q3VzdG9tLmNwcAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2ViQ29yZS9iaW5kaW5n
cy9qcy9KU0hUTUxBcHBsZXRFbGVtZW50Q3VzdG9tLmNwcAkocmV2aXNpb24gMTE2NjY3KQorKysg
U291cmNlL1dlYkNvcmUvYmluZGluZ3MvanMvSlNIVE1MQXBwbGV0RWxlbWVudEN1c3RvbS5jcHAJ
KHdvcmtpbmcgY29weSkKQEAgLTMzLDE3ICszMywxNyBAQCBuYW1lc3BhY2UgV2ViQ29yZSB7CiAK
IHVzaW5nIG5hbWVzcGFjZSBKU0M7CiAKLWJvb2wgSlNIVE1MQXBwbGV0RWxlbWVudDo6Z2V0T3du
UHJvcGVydHlTbG90RGVsZWdhdGUoRXhlY1N0YXRlKiBleGVjLCBjb25zdCBJZGVudGlmaWVyJiBw
cm9wZXJ0eU5hbWUsIFByb3BlcnR5U2xvdCYgc2xvdCkKK2Jvb2wgSlNIVE1MQXBwbGV0RWxlbWVu
dDo6Z2V0T3duUHJvcGVydHlTbG90RGVsZWdhdGUoRXhlY1N0YXRlKiBleGVjLCBQcm9wZXJ0eU5h
bWUgcHJvcGVydHlOYW1lLCBQcm9wZXJ0eVNsb3QmIHNsb3QpCiB7CiAgICAgcmV0dXJuIHJ1bnRp
bWVPYmplY3RDdXN0b21HZXRPd25Qcm9wZXJ0eVNsb3QoZXhlYywgcHJvcGVydHlOYW1lLCBzbG90
LCB0aGlzKTsKIH0KIAotYm9vbCBKU0hUTUxBcHBsZXRFbGVtZW50OjpnZXRPd25Qcm9wZXJ0eURl
c2NyaXB0b3JEZWxlZ2F0ZShFeGVjU3RhdGUqIGV4ZWMsIGNvbnN0IElkZW50aWZpZXImIHByb3Bl
cnR5TmFtZSwgUHJvcGVydHlEZXNjcmlwdG9yJiBkZXNjcmlwdG9yKQorYm9vbCBKU0hUTUxBcHBs
ZXRFbGVtZW50OjpnZXRPd25Qcm9wZXJ0eURlc2NyaXB0b3JEZWxlZ2F0ZShFeGVjU3RhdGUqIGV4
ZWMsIFByb3BlcnR5TmFtZSBwcm9wZXJ0eU5hbWUsIFByb3BlcnR5RGVzY3JpcHRvciYgZGVzY3Jp
cHRvcikKIHsKICAgICByZXR1cm4gcnVudGltZU9iamVjdEN1c3RvbUdldE93blByb3BlcnR5RGVz
Y3JpcHRvcihleGVjLCBwcm9wZXJ0eU5hbWUsIGRlc2NyaXB0b3IsIHRoaXMpOwogfQogCi1ib29s
IEpTSFRNTEFwcGxldEVsZW1lbnQ6OnB1dERlbGVnYXRlKEV4ZWNTdGF0ZSogZXhlYywgY29uc3Qg
SWRlbnRpZmllciYgcHJvcGVydHlOYW1lLCBKU1ZhbHVlIHZhbHVlLCBQdXRQcm9wZXJ0eVNsb3Qm
IHNsb3QpCitib29sIEpTSFRNTEFwcGxldEVsZW1lbnQ6OnB1dERlbGVnYXRlKEV4ZWNTdGF0ZSog
ZXhlYywgUHJvcGVydHlOYW1lIHByb3BlcnR5TmFtZSwgSlNWYWx1ZSB2YWx1ZSwgUHV0UHJvcGVy
dHlTbG90JiBzbG90KQogewogICAgIHJldHVybiBydW50aW1lT2JqZWN0Q3VzdG9tUHV0KGV4ZWMs
IHByb3BlcnR5TmFtZSwgdmFsdWUsIHRoaXMsIHNsb3QpOwogfQpJbmRleDogU291cmNlL1dlYkNv
cmUvYmluZGluZ3MvanMvSlNIVE1MQ29sbGVjdGlvbkN1c3RvbS5jcHAKPT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0g
U291cmNlL1dlYkNvcmUvYmluZGluZ3MvanMvSlNIVE1MQ29sbGVjdGlvbkN1c3RvbS5jcHAJKHJl
dmlzaW9uIDExNjY2NykKKysrIFNvdXJjZS9XZWJDb3JlL2JpbmRpbmdzL2pzL0pTSFRNTENvbGxl
Y3Rpb25DdXN0b20uY3BwCSh3b3JraW5nIGNvcHkpCkBAIC0zOSwxMCArMzksMTAgQEAgdXNpbmcg
bmFtZXNwYWNlIEpTQzsKIAogbmFtZXNwYWNlIFdlYkNvcmUgewogCi1zdGF0aWMgSlNWYWx1ZSBn
ZXROYW1lZEl0ZW1zKEV4ZWNTdGF0ZSogZXhlYywgSlNIVE1MQ29sbGVjdGlvbiogY29sbGVjdGlv
biwgY29uc3QgSWRlbnRpZmllciYgcHJvcGVydHlOYW1lKQorc3RhdGljIEpTVmFsdWUgZ2V0TmFt
ZWRJdGVtcyhFeGVjU3RhdGUqIGV4ZWMsIEpTSFRNTENvbGxlY3Rpb24qIGNvbGxlY3Rpb24sIFBy
b3BlcnR5TmFtZSBwcm9wZXJ0eU5hbWUpCiB7CiAgICAgVmVjdG9yPFJlZlB0cjxOb2RlPiA+IG5h
bWVkSXRlbXM7Ci0gICAgY29uc3QgQXRvbWljU3RyaW5nJiBuYW1lID0gaWRlbnRpZmllclRvQXRv
bWljU3RyaW5nKHByb3BlcnR5TmFtZSk7CisgICAgY29uc3QgQXRvbWljU3RyaW5nJiBuYW1lID0g
cHJvcGVydHlOYW1lVG9BdG9taWNTdHJpbmcocHJvcGVydHlOYW1lKTsKICAgICBjb2xsZWN0aW9u
LT5pbXBsKCktPm5hbWVkSXRlbXMobmFtZSwgbmFtZWRJdGVtcyk7CiAKICAgICBpZiAobmFtZWRJ
dGVtcy5pc0VtcHR5KCkpCkBAIC01OSwxMiArNTksMTIgQEAgc3RhdGljIEpTVmFsdWUgZ2V0TmFt
ZWRJdGVtcyhFeGVjU3RhdGUqIAogICAgIHJldHVybiB0b0pTKGV4ZWMsIGNvbGxlY3Rpb24tPmds
b2JhbE9iamVjdCgpLCBTdGF0aWNOb2RlTGlzdDo6YWRvcHQobmFtZWRJdGVtcykuZ2V0KCkpOwog
fQogCi1ib29sIEpTSFRNTENvbGxlY3Rpb246OmNhbkdldEl0ZW1zRm9yTmFtZShFeGVjU3RhdGUq
LCBIVE1MQ29sbGVjdGlvbiogY29sbGVjdGlvbiwgY29uc3QgSWRlbnRpZmllciYgcHJvcGVydHlO
YW1lKQorYm9vbCBKU0hUTUxDb2xsZWN0aW9uOjpjYW5HZXRJdGVtc0Zvck5hbWUoRXhlY1N0YXRl
KiwgSFRNTENvbGxlY3Rpb24qIGNvbGxlY3Rpb24sIFByb3BlcnR5TmFtZSBwcm9wZXJ0eU5hbWUp
CiB7Ci0gICAgcmV0dXJuIGNvbGxlY3Rpb24tPmhhc05hbWVkSXRlbShpZGVudGlmaWVyVG9BdG9t
aWNTdHJpbmcocHJvcGVydHlOYW1lKSk7CisgICAgcmV0dXJuIGNvbGxlY3Rpb24tPmhhc05hbWVk
SXRlbShwcm9wZXJ0eU5hbWVUb0F0b21pY1N0cmluZyhwcm9wZXJ0eU5hbWUpKTsKIH0KIAotSlNW
YWx1ZSBKU0hUTUxDb2xsZWN0aW9uOjpuYW1lR2V0dGVyKEV4ZWNTdGF0ZSogZXhlYywgSlNWYWx1
ZSBzbG90QmFzZSwgY29uc3QgSWRlbnRpZmllciYgcHJvcGVydHlOYW1lKQorSlNWYWx1ZSBKU0hU
TUxDb2xsZWN0aW9uOjpuYW1lR2V0dGVyKEV4ZWNTdGF0ZSogZXhlYywgSlNWYWx1ZSBzbG90QmFz
ZSwgUHJvcGVydHlOYW1lIHByb3BlcnR5TmFtZSkKIHsKICAgICBKU0hUTUxDb2xsZWN0aW9uKiB0
aGlzT2JqID0ganNDYXN0PEpTSFRNTENvbGxlY3Rpb24qPihhc09iamVjdChzbG90QmFzZSkpOwog
ICAgIHJldHVybiBnZXROYW1lZEl0ZW1zKGV4ZWMsIHRoaXNPYmosIHByb3BlcnR5TmFtZSk7Cklu
ZGV4OiBTb3VyY2UvV2ViQ29yZS9iaW5kaW5ncy9qcy9KU0hUTUxEb2N1bWVudEN1c3RvbS5jcHAK
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PQotLS0gU291cmNlL1dlYkNvcmUvYmluZGluZ3MvanMvSlNIVE1MRG9jdW1lbnRD
dXN0b20uY3BwCShyZXZpc2lvbiAxMTY2NjcpCisrKyBTb3VyY2UvV2ViQ29yZS9iaW5kaW5ncy9q
cy9KU0hUTUxEb2N1bWVudEN1c3RvbS5jcHAJKHdvcmtpbmcgY29weSkKQEAgLTUxLDE4ICs1MSwx
OCBAQCBuYW1lc3BhY2UgV2ViQ29yZSB7CiAKIHVzaW5nIG5hbWVzcGFjZSBIVE1MTmFtZXM7CiAK
LWJvb2wgSlNIVE1MRG9jdW1lbnQ6OmNhbkdldEl0ZW1zRm9yTmFtZShFeGVjU3RhdGUqLCBIVE1M
RG9jdW1lbnQqIGRvY3VtZW50LCBjb25zdCBJZGVudGlmaWVyJiBwcm9wZXJ0eU5hbWUpCitib29s
IEpTSFRNTERvY3VtZW50OjpjYW5HZXRJdGVtc0Zvck5hbWUoRXhlY1N0YXRlKiwgSFRNTERvY3Vt
ZW50KiBkb2N1bWVudCwgUHJvcGVydHlOYW1lIHByb3BlcnR5TmFtZSkKIHsKICAgICBBdG9taWNT
dHJpbmdJbXBsKiBhdG9taWNQcm9wZXJ0eU5hbWUgPSBmaW5kQXRvbWljU3RyaW5nKHByb3BlcnR5
TmFtZSk7CiAgICAgcmV0dXJuIGF0b21pY1Byb3BlcnR5TmFtZSAmJiAoZG9jdW1lbnQtPmhhc05h
bWVkSXRlbShhdG9taWNQcm9wZXJ0eU5hbWUpIHx8IGRvY3VtZW50LT5oYXNFeHRyYU5hbWVkSXRl
bShhdG9taWNQcm9wZXJ0eU5hbWUpKTsKIH0KIAotSlNWYWx1ZSBKU0hUTUxEb2N1bWVudDo6bmFt
ZUdldHRlcihFeGVjU3RhdGUqIGV4ZWMsIEpTVmFsdWUgc2xvdEJhc2UsIGNvbnN0IElkZW50aWZp
ZXImIHByb3BlcnR5TmFtZSkKK0pTVmFsdWUgSlNIVE1MRG9jdW1lbnQ6Om5hbWVHZXR0ZXIoRXhl
Y1N0YXRlKiBleGVjLCBKU1ZhbHVlIHNsb3RCYXNlLCBQcm9wZXJ0eU5hbWUgcHJvcGVydHlOYW1l
KQogewogICAgIEpTSFRNTERvY3VtZW50KiB0aGlzT2JqID0ganNDYXN0PEpTSFRNTERvY3VtZW50
Kj4oYXNPYmplY3Qoc2xvdEJhc2UpKTsKICAgICBIVE1MRG9jdW1lbnQqIGRvY3VtZW50ID0gc3Rh
dGljX2Nhc3Q8SFRNTERvY3VtZW50Kj4odGhpc09iai0+aW1wbCgpKTsKIAotICAgIEhUTUxDb2xs
ZWN0aW9uKiBjb2xsZWN0aW9uID0gZG9jdW1lbnQtPmRvY3VtZW50TmFtZWRJdGVtcyhpZGVudGlm
aWVyVG9BdG9taWNTdHJpbmcocHJvcGVydHlOYW1lKSk7CisgICAgSFRNTENvbGxlY3Rpb24qIGNv
bGxlY3Rpb24gPSBkb2N1bWVudC0+ZG9jdW1lbnROYW1lZEl0ZW1zKHByb3BlcnR5TmFtZVRvQXRv
bWljU3RyaW5nKHByb3BlcnR5TmFtZSkpOwogCiAgICAgdW5zaWduZWQgbGVuZ3RoID0gY29sbGVj
dGlvbi0+bGVuZ3RoKCk7CiAgICAgaWYgKCFsZW5ndGgpCkluZGV4OiBTb3VyY2UvV2ViQ29yZS9i
aW5kaW5ncy9qcy9KU0hUTUxFbWJlZEVsZW1lbnRDdXN0b20uY3BwCj09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNv
dXJjZS9XZWJDb3JlL2JpbmRpbmdzL2pzL0pTSFRNTEVtYmVkRWxlbWVudEN1c3RvbS5jcHAJKHJl
dmlzaW9uIDExNjY2NykKKysrIFNvdXJjZS9XZWJDb3JlL2JpbmRpbmdzL2pzL0pTSFRNTEVtYmVk
RWxlbWVudEN1c3RvbS5jcHAJKHdvcmtpbmcgY29weSkKQEAgLTMzLDE3ICszMywxNyBAQCBuYW1l
c3BhY2UgV2ViQ29yZSB7CiAKIHVzaW5nIG5hbWVzcGFjZSBKU0M7CiAKLWJvb2wgSlNIVE1MRW1i
ZWRFbGVtZW50OjpnZXRPd25Qcm9wZXJ0eVNsb3REZWxlZ2F0ZShFeGVjU3RhdGUqIGV4ZWMsIGNv
bnN0IElkZW50aWZpZXImIHByb3BlcnR5TmFtZSwgUHJvcGVydHlTbG90JiBzbG90KQorYm9vbCBK
U0hUTUxFbWJlZEVsZW1lbnQ6OmdldE93blByb3BlcnR5U2xvdERlbGVnYXRlKEV4ZWNTdGF0ZSog
ZXhlYywgUHJvcGVydHlOYW1lIHByb3BlcnR5TmFtZSwgUHJvcGVydHlTbG90JiBzbG90KQogewog
ICAgIHJldHVybiBydW50aW1lT2JqZWN0Q3VzdG9tR2V0T3duUHJvcGVydHlTbG90KGV4ZWMsIHBy
b3BlcnR5TmFtZSwgc2xvdCwgdGhpcyk7CiB9CiAKLWJvb2wgSlNIVE1MRW1iZWRFbGVtZW50Ojpn
ZXRPd25Qcm9wZXJ0eURlc2NyaXB0b3JEZWxlZ2F0ZShFeGVjU3RhdGUqIGV4ZWMsIGNvbnN0IElk
ZW50aWZpZXImIHByb3BlcnR5TmFtZSwgUHJvcGVydHlEZXNjcmlwdG9yJiBkZXNjcmlwdG9yKQor
Ym9vbCBKU0hUTUxFbWJlZEVsZW1lbnQ6OmdldE93blByb3BlcnR5RGVzY3JpcHRvckRlbGVnYXRl
KEV4ZWNTdGF0ZSogZXhlYywgUHJvcGVydHlOYW1lIHByb3BlcnR5TmFtZSwgUHJvcGVydHlEZXNj
cmlwdG9yJiBkZXNjcmlwdG9yKQogewogICAgIHJldHVybiBydW50aW1lT2JqZWN0Q3VzdG9tR2V0
T3duUHJvcGVydHlEZXNjcmlwdG9yKGV4ZWMsIHByb3BlcnR5TmFtZSwgZGVzY3JpcHRvciwgdGhp
cyk7CiB9CiAKLWJvb2wgSlNIVE1MRW1iZWRFbGVtZW50OjpwdXREZWxlZ2F0ZShFeGVjU3RhdGUq
IGV4ZWMsIGNvbnN0IElkZW50aWZpZXImIHByb3BlcnR5TmFtZSwgSlNWYWx1ZSB2YWx1ZSwgUHV0
UHJvcGVydHlTbG90JiBzbG90KQorYm9vbCBKU0hUTUxFbWJlZEVsZW1lbnQ6OnB1dERlbGVnYXRl
KEV4ZWNTdGF0ZSogZXhlYywgUHJvcGVydHlOYW1lIHByb3BlcnR5TmFtZSwgSlNWYWx1ZSB2YWx1
ZSwgUHV0UHJvcGVydHlTbG90JiBzbG90KQogewogICAgIHJldHVybiBydW50aW1lT2JqZWN0Q3Vz
dG9tUHV0KGV4ZWMsIHByb3BlcnR5TmFtZSwgdmFsdWUsIHRoaXMsIHNsb3QpOwogfQpJbmRleDog
U291cmNlL1dlYkNvcmUvYmluZGluZ3MvanMvSlNIVE1MRm9ybUVsZW1lbnRDdXN0b20uY3BwCj09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT0KLS0tIFNvdXJjZS9XZWJDb3JlL2JpbmRpbmdzL2pzL0pTSFRNTEZvcm1FbGVtZW50
Q3VzdG9tLmNwcAkocmV2aXNpb24gMTE2NjY3KQorKysgU291cmNlL1dlYkNvcmUvYmluZGluZ3Mv
anMvSlNIVE1MRm9ybUVsZW1lbnRDdXN0b20uY3BwCSh3b3JraW5nIGNvcHkpCkBAIC0zNywyMCAr
MzcsMjAgQEAgdXNpbmcgbmFtZXNwYWNlIEpTQzsKIAogbmFtZXNwYWNlIFdlYkNvcmUgewogCi1i
b29sIEpTSFRNTEZvcm1FbGVtZW50OjpjYW5HZXRJdGVtc0Zvck5hbWUoRXhlY1N0YXRlKiwgSFRN
TEZvcm1FbGVtZW50KiBmb3JtLCBjb25zdCBJZGVudGlmaWVyJiBwcm9wZXJ0eU5hbWUpCitib29s
IEpTSFRNTEZvcm1FbGVtZW50OjpjYW5HZXRJdGVtc0Zvck5hbWUoRXhlY1N0YXRlKiwgSFRNTEZv
cm1FbGVtZW50KiBmb3JtLCBQcm9wZXJ0eU5hbWUgcHJvcGVydHlOYW1lKQogewogICAgIFZlY3Rv
cjxSZWZQdHI8Tm9kZT4gPiBuYW1lZEl0ZW1zOwotICAgIGZvcm0tPmdldE5hbWVkRWxlbWVudHMo
aWRlbnRpZmllclRvQXRvbWljU3RyaW5nKHByb3BlcnR5TmFtZSksIG5hbWVkSXRlbXMpOworICAg
IGZvcm0tPmdldE5hbWVkRWxlbWVudHMocHJvcGVydHlOYW1lVG9BdG9taWNTdHJpbmcocHJvcGVy
dHlOYW1lKSwgbmFtZWRJdGVtcyk7CiAgICAgcmV0dXJuIG5hbWVkSXRlbXMuc2l6ZSgpOwogfQog
Ci1KU1ZhbHVlIEpTSFRNTEZvcm1FbGVtZW50OjpuYW1lR2V0dGVyKEV4ZWNTdGF0ZSogZXhlYywg
SlNWYWx1ZSBzbG90QmFzZSwgY29uc3QgSWRlbnRpZmllciYgcHJvcGVydHlOYW1lKQorSlNWYWx1
ZSBKU0hUTUxGb3JtRWxlbWVudDo6bmFtZUdldHRlcihFeGVjU3RhdGUqIGV4ZWMsIEpTVmFsdWUg
c2xvdEJhc2UsIFByb3BlcnR5TmFtZSBwcm9wZXJ0eU5hbWUpCiB7CiAgICAgSlNIVE1MRWxlbWVu
dCoganNGb3JtID0ganNDYXN0PEpTSFRNTEZvcm1FbGVtZW50Kj4oYXNPYmplY3Qoc2xvdEJhc2Up
KTsKICAgICBIVE1MRm9ybUVsZW1lbnQqIGZvcm0gPSBzdGF0aWNfY2FzdDxIVE1MRm9ybUVsZW1l
bnQqPihqc0Zvcm0tPmltcGwoKSk7CiAKICAgICBWZWN0b3I8UmVmUHRyPE5vZGU+ID4gbmFtZWRJ
dGVtczsKLSAgICBmb3JtLT5nZXROYW1lZEVsZW1lbnRzKGlkZW50aWZpZXJUb0F0b21pY1N0cmlu
Zyhwcm9wZXJ0eU5hbWUpLCBuYW1lZEl0ZW1zKTsKKyAgICBmb3JtLT5nZXROYW1lZEVsZW1lbnRz
KHByb3BlcnR5TmFtZVRvQXRvbWljU3RyaW5nKHByb3BlcnR5TmFtZSksIG5hbWVkSXRlbXMpOwog
ICAgIAogICAgIGlmIChuYW1lZEl0ZW1zLmlzRW1wdHkoKSkKICAgICAgICAgcmV0dXJuIGpzVW5k
ZWZpbmVkKCk7CkluZGV4OiBTb3VyY2UvV2ViQ29yZS9iaW5kaW5ncy9qcy9KU0hUTUxGcmFtZVNl
dEVsZW1lbnRDdXN0b20uY3BwCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9XZWJDb3JlL2JpbmRpbmdz
L2pzL0pTSFRNTEZyYW1lU2V0RWxlbWVudEN1c3RvbS5jcHAJKHJldmlzaW9uIDExNjY2NykKKysr
IFNvdXJjZS9XZWJDb3JlL2JpbmRpbmdzL2pzL0pTSFRNTEZyYW1lU2V0RWxlbWVudEN1c3RvbS5j
cHAJKHdvcmtpbmcgY29weSkKQEAgLTQxLDE2ICs0MSwxNiBAQCBuYW1lc3BhY2UgV2ViQ29yZSB7
CiAKIHVzaW5nIG5hbWVzcGFjZSBIVE1MTmFtZXM7CiAKLWJvb2wgSlNIVE1MRnJhbWVTZXRFbGVt
ZW50OjpjYW5HZXRJdGVtc0Zvck5hbWUoRXhlY1N0YXRlKiwgSFRNTEZyYW1lU2V0RWxlbWVudCog
ZnJhbWVTZXQsIGNvbnN0IElkZW50aWZpZXImIHByb3BlcnR5TmFtZSkKK2Jvb2wgSlNIVE1MRnJh
bWVTZXRFbGVtZW50OjpjYW5HZXRJdGVtc0Zvck5hbWUoRXhlY1N0YXRlKiwgSFRNTEZyYW1lU2V0
RWxlbWVudCogZnJhbWVTZXQsIFByb3BlcnR5TmFtZSBwcm9wZXJ0eU5hbWUpCiB7Ci0gICAgTm9k
ZSogZnJhbWUgPSBmcmFtZVNldC0+Y2hpbGRyZW4oKS0+bmFtZWRJdGVtKGlkZW50aWZpZXJUb0F0
b21pY1N0cmluZyhwcm9wZXJ0eU5hbWUpKTsKKyAgICBOb2RlKiBmcmFtZSA9IGZyYW1lU2V0LT5j
aGlsZHJlbigpLT5uYW1lZEl0ZW0ocHJvcGVydHlOYW1lVG9BdG9taWNTdHJpbmcocHJvcGVydHlO
YW1lKSk7CiAgICAgcmV0dXJuIGZyYW1lICYmIGZyYW1lLT5oYXNUYWdOYW1lKGZyYW1lVGFnKTsK
IH0KIAotSlNWYWx1ZSBKU0hUTUxGcmFtZVNldEVsZW1lbnQ6Om5hbWVHZXR0ZXIoRXhlY1N0YXRl
KiBleGVjLCBKU1ZhbHVlIHNsb3RCYXNlLCBjb25zdCBJZGVudGlmaWVyJiBwcm9wZXJ0eU5hbWUp
CitKU1ZhbHVlIEpTSFRNTEZyYW1lU2V0RWxlbWVudDo6bmFtZUdldHRlcihFeGVjU3RhdGUqIGV4
ZWMsIEpTVmFsdWUgc2xvdEJhc2UsIFByb3BlcnR5TmFtZSBwcm9wZXJ0eU5hbWUpCiB7CiAgICAg
SFRNTEVsZW1lbnQqIGVsZW1lbnQgPSBqc0Nhc3Q8SlNIVE1MRWxlbWVudCo+KGFzT2JqZWN0KHNs
b3RCYXNlKSktPmltcGwoKTsKLSAgICBOb2RlKiBmcmFtZUVsZW1lbnQgPSBlbGVtZW50LT5jaGls
ZHJlbigpLT5uYW1lZEl0ZW0oaWRlbnRpZmllclRvQXRvbWljU3RyaW5nKHByb3BlcnR5TmFtZSkp
OworICAgIE5vZGUqIGZyYW1lRWxlbWVudCA9IGVsZW1lbnQtPmNoaWxkcmVuKCktPm5hbWVkSXRl
bShwcm9wZXJ0eU5hbWVUb0F0b21pY1N0cmluZyhwcm9wZXJ0eU5hbWUpKTsKICAgICBpZiAoRG9j
dW1lbnQqIGRvY3VtZW50ID0gc3RhdGljX2Nhc3Q8SFRNTEZyYW1lRWxlbWVudCo+KGZyYW1lRWxl
bWVudCktPmNvbnRlbnREb2N1bWVudCgpKSB7CiAgICAgICAgIGlmIChKU0RPTVdpbmRvd1NoZWxs
KiB3aW5kb3cgPSB0b0pTRE9NV2luZG93U2hlbGwoZG9jdW1lbnQtPmZyYW1lKCksIGN1cnJlbnRX
b3JsZChleGVjKSkpCiAgICAgICAgICAgICByZXR1cm4gd2luZG93OwpJbmRleDogU291cmNlL1dl
YkNvcmUvYmluZGluZ3MvanMvSlNIVE1MT2JqZWN0RWxlbWVudEN1c3RvbS5jcHAKPT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PQotLS0gU291cmNlL1dlYkNvcmUvYmluZGluZ3MvanMvSlNIVE1MT2JqZWN0RWxlbWVudEN1c3Rv
bS5jcHAJKHJldmlzaW9uIDExNjY2NykKKysrIFNvdXJjZS9XZWJDb3JlL2JpbmRpbmdzL2pzL0pT
SFRNTE9iamVjdEVsZW1lbnRDdXN0b20uY3BwCSh3b3JraW5nIGNvcHkpCkBAIC0zMywxNyArMzMs
MTcgQEAgbmFtZXNwYWNlIFdlYkNvcmUgewogCiB1c2luZyBuYW1lc3BhY2UgSlNDOwogCi1ib29s
IEpTSFRNTE9iamVjdEVsZW1lbnQ6OmdldE93blByb3BlcnR5U2xvdERlbGVnYXRlKEV4ZWNTdGF0
ZSogZXhlYywgY29uc3QgSWRlbnRpZmllciYgcHJvcGVydHlOYW1lLCBQcm9wZXJ0eVNsb3QmIHNs
b3QpCitib29sIEpTSFRNTE9iamVjdEVsZW1lbnQ6OmdldE93blByb3BlcnR5U2xvdERlbGVnYXRl
KEV4ZWNTdGF0ZSogZXhlYywgUHJvcGVydHlOYW1lIHByb3BlcnR5TmFtZSwgUHJvcGVydHlTbG90
JiBzbG90KQogewogICAgIHJldHVybiBydW50aW1lT2JqZWN0Q3VzdG9tR2V0T3duUHJvcGVydHlT
bG90KGV4ZWMsIHByb3BlcnR5TmFtZSwgc2xvdCwgdGhpcyk7CiB9CiAKLWJvb2wgSlNIVE1MT2Jq
ZWN0RWxlbWVudDo6Z2V0T3duUHJvcGVydHlEZXNjcmlwdG9yRGVsZWdhdGUoRXhlY1N0YXRlKiBl
eGVjLCBjb25zdCBJZGVudGlmaWVyJiBwcm9wZXJ0eU5hbWUsIFByb3BlcnR5RGVzY3JpcHRvciYg
ZGVzY3JpcHRvcikKK2Jvb2wgSlNIVE1MT2JqZWN0RWxlbWVudDo6Z2V0T3duUHJvcGVydHlEZXNj
cmlwdG9yRGVsZWdhdGUoRXhlY1N0YXRlKiBleGVjLCBQcm9wZXJ0eU5hbWUgcHJvcGVydHlOYW1l
LCBQcm9wZXJ0eURlc2NyaXB0b3ImIGRlc2NyaXB0b3IpCiB7CiAgICAgcmV0dXJuIHJ1bnRpbWVP
YmplY3RDdXN0b21HZXRPd25Qcm9wZXJ0eURlc2NyaXB0b3IoZXhlYywgcHJvcGVydHlOYW1lLCBk
ZXNjcmlwdG9yLCB0aGlzKTsKIH0KIAotYm9vbCBKU0hUTUxPYmplY3RFbGVtZW50OjpwdXREZWxl
Z2F0ZShFeGVjU3RhdGUqIGV4ZWMsIGNvbnN0IElkZW50aWZpZXImIHByb3BlcnR5TmFtZSwgSlNW
YWx1ZSB2YWx1ZSwgUHV0UHJvcGVydHlTbG90JiBzbG90KQorYm9vbCBKU0hUTUxPYmplY3RFbGVt
ZW50OjpwdXREZWxlZ2F0ZShFeGVjU3RhdGUqIGV4ZWMsIFByb3BlcnR5TmFtZSBwcm9wZXJ0eU5h
bWUsIEpTVmFsdWUgdmFsdWUsIFB1dFByb3BlcnR5U2xvdCYgc2xvdCkKIHsKICAgICByZXR1cm4g
cnVudGltZU9iamVjdEN1c3RvbVB1dChleGVjLCBwcm9wZXJ0eU5hbWUsIHZhbHVlLCB0aGlzLCBz
bG90KTsKIH0KSW5kZXg6IFNvdXJjZS9XZWJDb3JlL2JpbmRpbmdzL2pzL0pTSGlzdG9yeUN1c3Rv
bS5jcHAKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PQotLS0gU291cmNlL1dlYkNvcmUvYmluZGluZ3MvanMvSlNIaXN0b3J5
Q3VzdG9tLmNwcAkocmV2aXNpb24gMTE2NjY3KQorKysgU291cmNlL1dlYkNvcmUvYmluZGluZ3Mv
anMvSlNIaXN0b3J5Q3VzdG9tLmNwcAkod29ya2luZyBjb3B5KQpAQCAtMzgsMjIgKzM4LDIyIEBA
IHVzaW5nIG5hbWVzcGFjZSBKU0M7CiAKIG5hbWVzcGFjZSBXZWJDb3JlIHsKIAotc3RhdGljIEpT
VmFsdWUgbm9uQ2FjaGluZ1N0YXRpY0JhY2tGdW5jdGlvbkdldHRlcihFeGVjU3RhdGUqIGV4ZWMs
IEpTVmFsdWUsIGNvbnN0IElkZW50aWZpZXImIHByb3BlcnR5TmFtZSkKK3N0YXRpYyBKU1ZhbHVl
IG5vbkNhY2hpbmdTdGF0aWNCYWNrRnVuY3Rpb25HZXR0ZXIoRXhlY1N0YXRlKiBleGVjLCBKU1Zh
bHVlLCBQcm9wZXJ0eU5hbWUgcHJvcGVydHlOYW1lKQogewotICAgIHJldHVybiBKU0Z1bmN0aW9u
OjpjcmVhdGUoZXhlYywgZXhlYy0+bGV4aWNhbEdsb2JhbE9iamVjdCgpLCAwLCBwcm9wZXJ0eU5h
bWUsIGpzSGlzdG9yeVByb3RvdHlwZUZ1bmN0aW9uQmFjayk7CisgICAgcmV0dXJuIEpTRnVuY3Rp
b246OmNyZWF0ZShleGVjLCBleGVjLT5sZXhpY2FsR2xvYmFsT2JqZWN0KCksIDAsIHByb3BlcnR5
TmFtZS5pbXBsKCksIGpzSGlzdG9yeVByb3RvdHlwZUZ1bmN0aW9uQmFjayk7CiB9CiAKLXN0YXRp
YyBKU1ZhbHVlIG5vbkNhY2hpbmdTdGF0aWNGb3J3YXJkRnVuY3Rpb25HZXR0ZXIoRXhlY1N0YXRl
KiBleGVjLCBKU1ZhbHVlLCBjb25zdCBJZGVudGlmaWVyJiBwcm9wZXJ0eU5hbWUpCitzdGF0aWMg
SlNWYWx1ZSBub25DYWNoaW5nU3RhdGljRm9yd2FyZEZ1bmN0aW9uR2V0dGVyKEV4ZWNTdGF0ZSog
ZXhlYywgSlNWYWx1ZSwgUHJvcGVydHlOYW1lIHByb3BlcnR5TmFtZSkKIHsKLSAgICByZXR1cm4g
SlNGdW5jdGlvbjo6Y3JlYXRlKGV4ZWMsIGV4ZWMtPmxleGljYWxHbG9iYWxPYmplY3QoKSwgMCwg
cHJvcGVydHlOYW1lLCBqc0hpc3RvcnlQcm90b3R5cGVGdW5jdGlvbkZvcndhcmQpOworICAgIHJl
dHVybiBKU0Z1bmN0aW9uOjpjcmVhdGUoZXhlYywgZXhlYy0+bGV4aWNhbEdsb2JhbE9iamVjdCgp
LCAwLCBwcm9wZXJ0eU5hbWUuaW1wbCgpLCBqc0hpc3RvcnlQcm90b3R5cGVGdW5jdGlvbkZvcndh
cmQpOwogfQogCi1zdGF0aWMgSlNWYWx1ZSBub25DYWNoaW5nU3RhdGljR29GdW5jdGlvbkdldHRl
cihFeGVjU3RhdGUqIGV4ZWMsIEpTVmFsdWUsIGNvbnN0IElkZW50aWZpZXImIHByb3BlcnR5TmFt
ZSkKK3N0YXRpYyBKU1ZhbHVlIG5vbkNhY2hpbmdTdGF0aWNHb0Z1bmN0aW9uR2V0dGVyKEV4ZWNT
dGF0ZSogZXhlYywgSlNWYWx1ZSwgUHJvcGVydHlOYW1lIHByb3BlcnR5TmFtZSkKIHsKLSAgICBy
ZXR1cm4gSlNGdW5jdGlvbjo6Y3JlYXRlKGV4ZWMsIGV4ZWMtPmxleGljYWxHbG9iYWxPYmplY3Qo
KSwgMSwgcHJvcGVydHlOYW1lLCBqc0hpc3RvcnlQcm90b3R5cGVGdW5jdGlvbkdvKTsKKyAgICBy
ZXR1cm4gSlNGdW5jdGlvbjo6Y3JlYXRlKGV4ZWMsIGV4ZWMtPmxleGljYWxHbG9iYWxPYmplY3Qo
KSwgMSwgcHJvcGVydHlOYW1lLmltcGwoKSwganNIaXN0b3J5UHJvdG90eXBlRnVuY3Rpb25Hbyk7
CiB9CiAKLWJvb2wgSlNIaXN0b3J5OjpnZXRPd25Qcm9wZXJ0eVNsb3REZWxlZ2F0ZShFeGVjU3Rh
dGUqIGV4ZWMsIGNvbnN0IElkZW50aWZpZXImIHByb3BlcnR5TmFtZSwgUHJvcGVydHlTbG90JiBz
bG90KQorYm9vbCBKU0hpc3Rvcnk6OmdldE93blByb3BlcnR5U2xvdERlbGVnYXRlKEV4ZWNTdGF0
ZSogZXhlYywgUHJvcGVydHlOYW1lIHByb3BlcnR5TmFtZSwgUHJvcGVydHlTbG90JiBzbG90KQog
ewogICAgIC8vIFdoZW4gYWNjZXNzaW5nIEhpc3RvcnkgY3Jvc3MtZG9tYWluLCBmdW5jdGlvbnMg
YXJlIGFsd2F5cyB0aGUgbmF0aXZlIGJ1aWx0LWluIG9uZXMuCiAgICAgLy8gU2VlIEpTRE9NV2lu
ZG93OjpnZXRPd25Qcm9wZXJ0eVNsb3REZWxlZ2F0ZSBmb3IgYWRkaXRpb25hbCBkZXRhaWxzLgpA
QCAtOTMsNyArOTMsNyBAQCBib29sIEpTSGlzdG9yeTo6Z2V0T3duUHJvcGVydHlTbG90RGVsZWdh
CiAgICAgcmV0dXJuIHRydWU7CiB9CiAKLWJvb2wgSlNIaXN0b3J5OjpnZXRPd25Qcm9wZXJ0eURl
c2NyaXB0b3JEZWxlZ2F0ZShFeGVjU3RhdGUqIGV4ZWMsIGNvbnN0IElkZW50aWZpZXImIHByb3Bl
cnR5TmFtZSwgUHJvcGVydHlEZXNjcmlwdG9yJiBkZXNjcmlwdG9yKQorYm9vbCBKU0hpc3Rvcnk6
OmdldE93blByb3BlcnR5RGVzY3JpcHRvckRlbGVnYXRlKEV4ZWNTdGF0ZSogZXhlYywgUHJvcGVy
dHlOYW1lIHByb3BlcnR5TmFtZSwgUHJvcGVydHlEZXNjcmlwdG9yJiBkZXNjcmlwdG9yKQogewog
ICAgIGlmICghaW1wbCgpLT5mcmFtZSgpKSB7CiAgICAgICAgIGRlc2NyaXB0b3Iuc2V0VW5kZWZp
bmVkKCk7CkBAIC0xMzgsNyArMTM4LDcgQEAgYm9vbCBKU0hpc3Rvcnk6OmdldE93blByb3BlcnR5
RGVzY3JpcHRvcgogICAgIHJldHVybiB0cnVlOwogfQogCi1ib29sIEpTSGlzdG9yeTo6cHV0RGVs
ZWdhdGUoRXhlY1N0YXRlKiBleGVjLCBjb25zdCBJZGVudGlmaWVyJiwgSlNWYWx1ZSwgUHV0UHJv
cGVydHlTbG90JikKK2Jvb2wgSlNIaXN0b3J5OjpwdXREZWxlZ2F0ZShFeGVjU3RhdGUqIGV4ZWMs
IFByb3BlcnR5TmFtZSwgSlNWYWx1ZSwgUHV0UHJvcGVydHlTbG90JikKIHsKICAgICAvLyBPbmx5
IGFsbG93IHB1dHRpbmcgYnkgZnJhbWVzIGluIHRoZSBzYW1lIG9yaWdpbi4KICAgICBpZiAoIXNo
b3VsZEFsbG93QWNjZXNzVG9GcmFtZShleGVjLCBpbXBsKCktPmZyYW1lKCkpKQpAQCAtMTQ2LDcg
KzE0Niw3IEBAIGJvb2wgSlNIaXN0b3J5OjpwdXREZWxlZ2F0ZShFeGVjU3RhdGUqIGUKICAgICBy
ZXR1cm4gZmFsc2U7CiB9CiAKLWJvb2wgSlNIaXN0b3J5OjpkZWxldGVQcm9wZXJ0eShKU0NlbGwq
IGNlbGwsIEV4ZWNTdGF0ZSogZXhlYywgY29uc3QgSWRlbnRpZmllciYgcHJvcGVydHlOYW1lKQor
Ym9vbCBKU0hpc3Rvcnk6OmRlbGV0ZVByb3BlcnR5KEpTQ2VsbCogY2VsbCwgRXhlY1N0YXRlKiBl
eGVjLCBQcm9wZXJ0eU5hbWUgcHJvcGVydHlOYW1lKQogewogICAgIEpTSGlzdG9yeSogdGhpc09i
amVjdCA9IGpzQ2FzdDxKU0hpc3RvcnkqPihjZWxsKTsKICAgICAvLyBPbmx5IGFsbG93IGRlbGV0
aW5nIGJ5IGZyYW1lcyBpbiB0aGUgc2FtZSBvcmlnaW4uCkluZGV4OiBTb3VyY2UvV2ViQ29yZS9i
aW5kaW5ncy9qcy9KU0xvY2F0aW9uQ3VzdG9tLmNwcAo9PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2Vi
Q29yZS9iaW5kaW5ncy9qcy9KU0xvY2F0aW9uQ3VzdG9tLmNwcAkocmV2aXNpb24gMTE2NjY3KQor
KysgU291cmNlL1dlYkNvcmUvYmluZGluZ3MvanMvSlNMb2NhdGlvbkN1c3RvbS5jcHAJKHdvcmtp
bmcgY29weSkKQEAgLTMwLDIyICszMCwyMiBAQCB1c2luZyBuYW1lc3BhY2UgSlNDOwogCiBuYW1l
c3BhY2UgV2ViQ29yZSB7CiAKLXN0YXRpYyBKU1ZhbHVlIG5vbkNhY2hpbmdTdGF0aWNSZXBsYWNl
RnVuY3Rpb25HZXR0ZXIoRXhlY1N0YXRlKiBleGVjLCBKU1ZhbHVlLCBjb25zdCBJZGVudGlmaWVy
JiBwcm9wZXJ0eU5hbWUpCitzdGF0aWMgSlNWYWx1ZSBub25DYWNoaW5nU3RhdGljUmVwbGFjZUZ1
bmN0aW9uR2V0dGVyKEV4ZWNTdGF0ZSogZXhlYywgSlNWYWx1ZSwgUHJvcGVydHlOYW1lIHByb3Bl
cnR5TmFtZSkKIHsKLSAgICByZXR1cm4gSlNGdW5jdGlvbjo6Y3JlYXRlKGV4ZWMsIGV4ZWMtPmxl
eGljYWxHbG9iYWxPYmplY3QoKSwgMSwgcHJvcGVydHlOYW1lLCBqc0xvY2F0aW9uUHJvdG90eXBl
RnVuY3Rpb25SZXBsYWNlKTsKKyAgICByZXR1cm4gSlNGdW5jdGlvbjo6Y3JlYXRlKGV4ZWMsIGV4
ZWMtPmxleGljYWxHbG9iYWxPYmplY3QoKSwgMSwgcHJvcGVydHlOYW1lLmltcGwoKSwganNMb2Nh
dGlvblByb3RvdHlwZUZ1bmN0aW9uUmVwbGFjZSk7CiB9CiAKLXN0YXRpYyBKU1ZhbHVlIG5vbkNh
Y2hpbmdTdGF0aWNSZWxvYWRGdW5jdGlvbkdldHRlcihFeGVjU3RhdGUqIGV4ZWMsIEpTVmFsdWUs
IGNvbnN0IElkZW50aWZpZXImIHByb3BlcnR5TmFtZSkKK3N0YXRpYyBKU1ZhbHVlIG5vbkNhY2hp
bmdTdGF0aWNSZWxvYWRGdW5jdGlvbkdldHRlcihFeGVjU3RhdGUqIGV4ZWMsIEpTVmFsdWUsIFBy
b3BlcnR5TmFtZSBwcm9wZXJ0eU5hbWUpCiB7Ci0gICAgcmV0dXJuIEpTRnVuY3Rpb246OmNyZWF0
ZShleGVjLCBleGVjLT5sZXhpY2FsR2xvYmFsT2JqZWN0KCksIDAsIHByb3BlcnR5TmFtZSwganNM
b2NhdGlvblByb3RvdHlwZUZ1bmN0aW9uUmVsb2FkKTsKKyAgICByZXR1cm4gSlNGdW5jdGlvbjo6
Y3JlYXRlKGV4ZWMsIGV4ZWMtPmxleGljYWxHbG9iYWxPYmplY3QoKSwgMCwgcHJvcGVydHlOYW1l
LmltcGwoKSwganNMb2NhdGlvblByb3RvdHlwZUZ1bmN0aW9uUmVsb2FkKTsKIH0KIAotc3RhdGlj
IEpTVmFsdWUgbm9uQ2FjaGluZ1N0YXRpY0Fzc2lnbkZ1bmN0aW9uR2V0dGVyKEV4ZWNTdGF0ZSog
ZXhlYywgSlNWYWx1ZSwgY29uc3QgSWRlbnRpZmllciYgcHJvcGVydHlOYW1lKQorc3RhdGljIEpT
VmFsdWUgbm9uQ2FjaGluZ1N0YXRpY0Fzc2lnbkZ1bmN0aW9uR2V0dGVyKEV4ZWNTdGF0ZSogZXhl
YywgSlNWYWx1ZSwgUHJvcGVydHlOYW1lIHByb3BlcnR5TmFtZSkKIHsKLSAgICByZXR1cm4gSlNG
dW5jdGlvbjo6Y3JlYXRlKGV4ZWMsIGV4ZWMtPmxleGljYWxHbG9iYWxPYmplY3QoKSwgMSwgcHJv
cGVydHlOYW1lLCBqc0xvY2F0aW9uUHJvdG90eXBlRnVuY3Rpb25Bc3NpZ24pOworICAgIHJldHVy
biBKU0Z1bmN0aW9uOjpjcmVhdGUoZXhlYywgZXhlYy0+bGV4aWNhbEdsb2JhbE9iamVjdCgpLCAx
LCBwcm9wZXJ0eU5hbWUuaW1wbCgpLCBqc0xvY2F0aW9uUHJvdG90eXBlRnVuY3Rpb25Bc3NpZ24p
OwogfQogCi1ib29sIEpTTG9jYXRpb246OmdldE93blByb3BlcnR5U2xvdERlbGVnYXRlKEV4ZWNT
dGF0ZSogZXhlYywgY29uc3QgSWRlbnRpZmllciYgcHJvcGVydHlOYW1lLCBQcm9wZXJ0eVNsb3Qm
IHNsb3QpCitib29sIEpTTG9jYXRpb246OmdldE93blByb3BlcnR5U2xvdERlbGVnYXRlKEV4ZWNT
dGF0ZSogZXhlYywgUHJvcGVydHlOYW1lIHByb3BlcnR5TmFtZSwgUHJvcGVydHlTbG90JiBzbG90
KQogewogICAgIEZyYW1lKiBmcmFtZSA9IGltcGwoKS0+ZnJhbWUoKTsKICAgICBpZiAoIWZyYW1l
KSB7CkBAIC04Niw3ICs4Niw3IEBAIGJvb2wgSlNMb2NhdGlvbjo6Z2V0T3duUHJvcGVydHlTbG90
RGVsZWcKICAgICByZXR1cm4gdHJ1ZTsKIH0KIAotYm9vbCBKU0xvY2F0aW9uOjpnZXRPd25Qcm9w
ZXJ0eURlc2NyaXB0b3JEZWxlZ2F0ZShFeGVjU3RhdGUqIGV4ZWMsIGNvbnN0IElkZW50aWZpZXIm
IHByb3BlcnR5TmFtZSwgUHJvcGVydHlEZXNjcmlwdG9yJiBkZXNjcmlwdG9yKQorYm9vbCBKU0xv
Y2F0aW9uOjpnZXRPd25Qcm9wZXJ0eURlc2NyaXB0b3JEZWxlZ2F0ZShFeGVjU3RhdGUqIGV4ZWMs
IFByb3BlcnR5TmFtZSBwcm9wZXJ0eU5hbWUsIFByb3BlcnR5RGVzY3JpcHRvciYgZGVzY3JpcHRv
cikKIHsKICAgICBGcmFtZSogZnJhbWUgPSBpbXBsKCktPmZyYW1lKCk7CiAgICAgaWYgKCFmcmFt
ZSkgewpAQCAtMTI1LDcgKzEyNSw3IEBAIGJvb2wgSlNMb2NhdGlvbjo6Z2V0T3duUHJvcGVydHlE
ZXNjcmlwdG8KICAgICByZXR1cm4gdHJ1ZTsKIH0KIAotYm9vbCBKU0xvY2F0aW9uOjpwdXREZWxl
Z2F0ZShFeGVjU3RhdGUqIGV4ZWMsIGNvbnN0IElkZW50aWZpZXImIHByb3BlcnR5TmFtZSwgSlNW
YWx1ZSB2YWx1ZSwgUHV0UHJvcGVydHlTbG90JiBzbG90KQorYm9vbCBKU0xvY2F0aW9uOjpwdXRE
ZWxlZ2F0ZShFeGVjU3RhdGUqIGV4ZWMsIFByb3BlcnR5TmFtZSBwcm9wZXJ0eU5hbWUsIEpTVmFs
dWUgdmFsdWUsIFB1dFByb3BlcnR5U2xvdCYgc2xvdCkKIHsKICAgICBGcmFtZSogZnJhbWUgPSBp
bXBsKCktPmZyYW1lKCk7CiAgICAgaWYgKCFmcmFtZSkKQEAgLTE1Miw3ICsxNTIsNyBAQCBib29s
IEpTTG9jYXRpb246OnB1dERlbGVnYXRlKEV4ZWNTdGF0ZSogCiAgICAgcmV0dXJuIGZhbHNlOwog
fQogCi1ib29sIEpTTG9jYXRpb246OmRlbGV0ZVByb3BlcnR5KEpTQ2VsbCogY2VsbCwgRXhlY1N0
YXRlKiBleGVjLCBjb25zdCBJZGVudGlmaWVyJiBwcm9wZXJ0eU5hbWUpCitib29sIEpTTG9jYXRp
b246OmRlbGV0ZVByb3BlcnR5KEpTQ2VsbCogY2VsbCwgRXhlY1N0YXRlKiBleGVjLCBQcm9wZXJ0
eU5hbWUgcHJvcGVydHlOYW1lKQogewogICAgIEpTTG9jYXRpb24qIHRoaXNPYmplY3QgPSBqc0Nh
c3Q8SlNMb2NhdGlvbio+KGNlbGwpOwogICAgIC8vIE9ubHkgYWxsb3cgZGVsZXRpbmcgYnkgZnJh
bWVzIGluIHRoZSBzYW1lIG9yaWdpbi4KQEAgLTE3MCw3ICsxNzAsNyBAQCB2b2lkIEpTTG9jYXRp
b246OmdldE93blByb3BlcnR5TmFtZXMoSlNPCiAgICAgQmFzZTo6Z2V0T3duUHJvcGVydHlOYW1l
cyh0aGlzT2JqZWN0LCBleGVjLCBwcm9wZXJ0eU5hbWVzLCBtb2RlKTsKIH0KIAotYm9vbCBKU0xv
Y2F0aW9uOjpkZWZpbmVPd25Qcm9wZXJ0eShKU09iamVjdCogb2JqZWN0LCBFeGVjU3RhdGUqIGV4
ZWMsIGNvbnN0IElkZW50aWZpZXImIHByb3BlcnR5TmFtZSwgUHJvcGVydHlEZXNjcmlwdG9yJiBk
ZXNjcmlwdG9yLCBib29sIHRocm93RXhjZXB0aW9uKQorYm9vbCBKU0xvY2F0aW9uOjpkZWZpbmVP
d25Qcm9wZXJ0eShKU09iamVjdCogb2JqZWN0LCBFeGVjU3RhdGUqIGV4ZWMsIFByb3BlcnR5TmFt
ZSBwcm9wZXJ0eU5hbWUsIFByb3BlcnR5RGVzY3JpcHRvciYgZGVzY3JpcHRvciwgYm9vbCB0aHJv
d0V4Y2VwdGlvbikKIHsKICAgICBpZiAoZGVzY3JpcHRvci5pc0FjY2Vzc29yRGVzY3JpcHRvcigp
ICYmIChwcm9wZXJ0eU5hbWUgPT0gZXhlYy0+cHJvcGVydHlOYW1lcygpLnRvU3RyaW5nIHx8IHBy
b3BlcnR5TmFtZSA9PSBleGVjLT5wcm9wZXJ0eU5hbWVzKCkudmFsdWVPZikpCiAgICAgICAgIHJl
dHVybiBmYWxzZTsKQEAgLTI3NiwxMiArMjc2LDEyIEBAIEpTVmFsdWUgSlNMb2NhdGlvbjo6dG9T
dHJpbmdGdW5jdGlvbihFeGUKICAgICByZXR1cm4ganNTdHJpbmcoZXhlYywgaW1wbCgpLT50b1N0
cmluZygpKTsKIH0KIAotYm9vbCBKU0xvY2F0aW9uUHJvdG90eXBlOjpwdXREZWxlZ2F0ZShFeGVj
U3RhdGUqIGV4ZWMsIGNvbnN0IElkZW50aWZpZXImIHByb3BlcnR5TmFtZSwgSlNWYWx1ZSwgUHV0
UHJvcGVydHlTbG90JikKK2Jvb2wgSlNMb2NhdGlvblByb3RvdHlwZTo6cHV0RGVsZWdhdGUoRXhl
Y1N0YXRlKiBleGVjLCBQcm9wZXJ0eU5hbWUgcHJvcGVydHlOYW1lLCBKU1ZhbHVlLCBQdXRQcm9w
ZXJ0eVNsb3QmKQogewogICAgIHJldHVybiAocHJvcGVydHlOYW1lID09IGV4ZWMtPnByb3BlcnR5
TmFtZXMoKS50b1N0cmluZyB8fCBwcm9wZXJ0eU5hbWUgPT0gZXhlYy0+cHJvcGVydHlOYW1lcygp
LnZhbHVlT2YpOwogfQogCi1ib29sIEpTTG9jYXRpb25Qcm90b3R5cGU6OmRlZmluZU93blByb3Bl
cnR5KEpTT2JqZWN0KiBvYmplY3QsIEV4ZWNTdGF0ZSogZXhlYywgY29uc3QgSWRlbnRpZmllciYg
cHJvcGVydHlOYW1lLCBQcm9wZXJ0eURlc2NyaXB0b3ImIGRlc2NyaXB0b3IsIGJvb2wgdGhyb3dF
eGNlcHRpb24pCitib29sIEpTTG9jYXRpb25Qcm90b3R5cGU6OmRlZmluZU93blByb3BlcnR5KEpT
T2JqZWN0KiBvYmplY3QsIEV4ZWNTdGF0ZSogZXhlYywgUHJvcGVydHlOYW1lIHByb3BlcnR5TmFt
ZSwgUHJvcGVydHlEZXNjcmlwdG9yJiBkZXNjcmlwdG9yLCBib29sIHRocm93RXhjZXB0aW9uKQog
ewogICAgIGlmIChkZXNjcmlwdG9yLmlzQWNjZXNzb3JEZXNjcmlwdG9yKCkgJiYgKHByb3BlcnR5
TmFtZSA9PSBleGVjLT5wcm9wZXJ0eU5hbWVzKCkudG9TdHJpbmcgfHwgcHJvcGVydHlOYW1lID09
IGV4ZWMtPnByb3BlcnR5TmFtZXMoKS52YWx1ZU9mKSkKICAgICAgICAgcmV0dXJuIGZhbHNlOwpJ
bmRleDogU291cmNlL1dlYkNvcmUvYmluZGluZ3MvanMvSlNOYW1lZE5vZGVNYXBDdXN0b20uY3Bw
Cj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT0KLS0tIFNvdXJjZS9XZWJDb3JlL2JpbmRpbmdzL2pzL0pTTmFtZWROb2RlTWFw
Q3VzdG9tLmNwcAkocmV2aXNpb24gMTE2NjY3KQorKysgU291cmNlL1dlYkNvcmUvYmluZGluZ3Mv
anMvSlNOYW1lZE5vZGVNYXBDdXN0b20uY3BwCSh3b3JraW5nIGNvcHkpCkBAIC0zNSwxNSArMzUs
MTUgQEAgdXNpbmcgbmFtZXNwYWNlIEpTQzsKIAogbmFtZXNwYWNlIFdlYkNvcmUgewogCi1ib29s
IEpTTmFtZWROb2RlTWFwOjpjYW5HZXRJdGVtc0Zvck5hbWUoRXhlY1N0YXRlKiwgTmFtZWROb2Rl
TWFwKiBpbXBsLCBjb25zdCBJZGVudGlmaWVyJiBwcm9wZXJ0eU5hbWUpCitib29sIEpTTmFtZWRO
b2RlTWFwOjpjYW5HZXRJdGVtc0Zvck5hbWUoRXhlY1N0YXRlKiwgTmFtZWROb2RlTWFwKiBpbXBs
LCBQcm9wZXJ0eU5hbWUgcHJvcGVydHlOYW1lKQogewotICAgIHJldHVybiBpbXBsLT5nZXROYW1l
ZEl0ZW0oaWRlbnRpZmllclRvU3RyaW5nKHByb3BlcnR5TmFtZSkpOworICAgIHJldHVybiBpbXBs
LT5nZXROYW1lZEl0ZW0ocHJvcGVydHlOYW1lVG9TdHJpbmcocHJvcGVydHlOYW1lKSk7CiB9CiAK
LUpTVmFsdWUgSlNOYW1lZE5vZGVNYXA6Om5hbWVHZXR0ZXIoRXhlY1N0YXRlKiBleGVjLCBKU1Zh
bHVlIHNsb3RCYXNlLCBjb25zdCBJZGVudGlmaWVyJiBwcm9wZXJ0eU5hbWUpCitKU1ZhbHVlIEpT
TmFtZWROb2RlTWFwOjpuYW1lR2V0dGVyKEV4ZWNTdGF0ZSogZXhlYywgSlNWYWx1ZSBzbG90QmFz
ZSwgUHJvcGVydHlOYW1lIHByb3BlcnR5TmFtZSkKIHsKICAgICBKU05hbWVkTm9kZU1hcCogdGhp
c09iaiA9IGpzQ2FzdDxKU05hbWVkTm9kZU1hcCo+KGFzT2JqZWN0KHNsb3RCYXNlKSk7Ci0gICAg
cmV0dXJuIHRvSlMoZXhlYywgdGhpc09iai0+Z2xvYmFsT2JqZWN0KCksIHRoaXNPYmotPmltcGwo
KS0+Z2V0TmFtZWRJdGVtKGlkZW50aWZpZXJUb1N0cmluZyhwcm9wZXJ0eU5hbWUpKSk7CisgICAg
cmV0dXJuIHRvSlMoZXhlYywgdGhpc09iai0+Z2xvYmFsT2JqZWN0KCksIHRoaXNPYmotPmltcGwo
KS0+Z2V0TmFtZWRJdGVtKHByb3BlcnR5TmFtZVRvU3RyaW5nKHByb3BlcnR5TmFtZSkpKTsKIH0K
IAogdm9pZCBKU05hbWVkTm9kZU1hcDo6dmlzaXRDaGlsZHJlbihKU0NlbGwqIGNlbGwsIFNsb3RW
aXNpdG9yJiB2aXNpdG9yKQpJbmRleDogU291cmNlL1dlYkNvcmUvYmluZGluZ3MvanMvSlNOb2Rl
TGlzdEN1c3RvbS5jcHAKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL1dlYkNvcmUvYmluZGluZ3MvanMv
SlNOb2RlTGlzdEN1c3RvbS5jcHAJKHJldmlzaW9uIDExNjY2NykKKysrIFNvdXJjZS9XZWJDb3Jl
L2JpbmRpbmdzL2pzL0pTTm9kZUxpc3RDdXN0b20uY3BwCSh3b3JraW5nIGNvcHkpCkBAIC00Niwx
NSArNDYsMTUgQEAgYm9vbCBKU05vZGVMaXN0T3duZXI6OmlzUmVhY2hhYmxlRnJvbU9wYQogICAg
IHJldHVybiB2aXNpdG9yLmNvbnRhaW5zT3BhcXVlUm9vdChyb290KHN0YXRpY19jYXN0PER5bmFt
aWNOb2RlTGlzdCo+KGpzTm9kZUxpc3QtPmltcGwoKSktPm5vZGUoKSkpOwogfQogCi1ib29sIEpT
Tm9kZUxpc3Q6OmNhbkdldEl0ZW1zRm9yTmFtZShFeGVjU3RhdGUqLCBOb2RlTGlzdCogaW1wbCwg
Y29uc3QgSWRlbnRpZmllciYgcHJvcGVydHlOYW1lKQorYm9vbCBKU05vZGVMaXN0OjpjYW5HZXRJ
dGVtc0Zvck5hbWUoRXhlY1N0YXRlKiwgTm9kZUxpc3QqIGltcGwsIFByb3BlcnR5TmFtZSBwcm9w
ZXJ0eU5hbWUpCiB7Ci0gICAgcmV0dXJuIGltcGwtPml0ZW1XaXRoTmFtZShpZGVudGlmaWVyVG9B
dG9taWNTdHJpbmcocHJvcGVydHlOYW1lKSk7CisgICAgcmV0dXJuIGltcGwtPml0ZW1XaXRoTmFt
ZShwcm9wZXJ0eU5hbWVUb0F0b21pY1N0cmluZyhwcm9wZXJ0eU5hbWUpKTsKIH0KIAotSlNWYWx1
ZSBKU05vZGVMaXN0OjpuYW1lR2V0dGVyKEV4ZWNTdGF0ZSogZXhlYywgSlNWYWx1ZSBzbG90QmFz
ZSwgY29uc3QgSWRlbnRpZmllciYgcHJvcGVydHlOYW1lKQorSlNWYWx1ZSBKU05vZGVMaXN0Ojpu
YW1lR2V0dGVyKEV4ZWNTdGF0ZSogZXhlYywgSlNWYWx1ZSBzbG90QmFzZSwgUHJvcGVydHlOYW1l
IHByb3BlcnR5TmFtZSkKIHsKICAgICBKU05vZGVMaXN0KiB0aGlzT2JqID0ganNDYXN0PEpTTm9k
ZUxpc3QqPihhc09iamVjdChzbG90QmFzZSkpOwotICAgIHJldHVybiB0b0pTKGV4ZWMsIHRoaXNP
YmotPmdsb2JhbE9iamVjdCgpLCB0aGlzT2JqLT5pbXBsKCktPml0ZW1XaXRoTmFtZShpZGVudGlm
aWVyVG9BdG9taWNTdHJpbmcocHJvcGVydHlOYW1lKSkpOworICAgIHJldHVybiB0b0pTKGV4ZWMs
IHRoaXNPYmotPmdsb2JhbE9iamVjdCgpLCB0aGlzT2JqLT5pbXBsKCktPml0ZW1XaXRoTmFtZShw
cm9wZXJ0eU5hbWVUb0F0b21pY1N0cmluZyhwcm9wZXJ0eU5hbWUpKSk7CiB9CiAKIH0gLy8gbmFt
ZXNwYWNlIFdlYkNvcmUKSW5kZXg6IFNvdXJjZS9XZWJDb3JlL2JpbmRpbmdzL2pzL0pTUGx1Z2lu
RWxlbWVudEZ1bmN0aW9ucy5jcHAKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL1dlYkNvcmUvYmluZGlu
Z3MvanMvSlNQbHVnaW5FbGVtZW50RnVuY3Rpb25zLmNwcAkocmV2aXNpb24gMTE2NjY3KQorKysg
U291cmNlL1dlYkNvcmUvYmluZGluZ3MvanMvSlNQbHVnaW5FbGVtZW50RnVuY3Rpb25zLmNwcAko
d29ya2luZyBjb3B5KQpAQCAtMTAwLDcgKzEwMCw3IEBAIEpTT2JqZWN0KiBwbHVnaW5TY3JpcHRP
YmplY3QoRXhlY1N0YXRlKiAKICAgICByZXR1cm4gaW5zdGFuY2UtPmNyZWF0ZVJ1bnRpbWVPYmpl
Y3QoZXhlYyk7CiB9CiAgICAgCi1KU1ZhbHVlIHJ1bnRpbWVPYmplY3RQcm9wZXJ0eUdldHRlcihF
eGVjU3RhdGUqIGV4ZWMsIEpTVmFsdWUgc2xvdEJhc2UsIGNvbnN0IElkZW50aWZpZXImIHByb3Bl
cnR5TmFtZSkKK0pTVmFsdWUgcnVudGltZU9iamVjdFByb3BlcnR5R2V0dGVyKEV4ZWNTdGF0ZSog
ZXhlYywgSlNWYWx1ZSBzbG90QmFzZSwgUHJvcGVydHlOYW1lIHByb3BlcnR5TmFtZSkKIHsKICAg
ICBKU0hUTUxFbGVtZW50KiBlbGVtZW50ID0ganNDYXN0PEpTSFRNTEVsZW1lbnQqPihhc09iamVj
dChzbG90QmFzZSkpOwogICAgIEpTT2JqZWN0KiBzY3JpcHRPYmplY3QgPSBwbHVnaW5TY3JpcHRP
YmplY3QoZXhlYywgZWxlbWVudCk7CkBAIC0xMTAsNyArMTEwLDcgQEAgSlNWYWx1ZSBydW50aW1l
T2JqZWN0UHJvcGVydHlHZXR0ZXIoRXhlYwogICAgIHJldHVybiBzY3JpcHRPYmplY3QtPmdldChl
eGVjLCBwcm9wZXJ0eU5hbWUpOwogfQogCi1ib29sIHJ1bnRpbWVPYmplY3RDdXN0b21HZXRPd25Q
cm9wZXJ0eVNsb3QoRXhlY1N0YXRlKiBleGVjLCBjb25zdCBJZGVudGlmaWVyJiBwcm9wZXJ0eU5h
bWUsIFByb3BlcnR5U2xvdCYgc2xvdCwgSlNIVE1MRWxlbWVudCogZWxlbWVudCkKK2Jvb2wgcnVu
dGltZU9iamVjdEN1c3RvbUdldE93blByb3BlcnR5U2xvdChFeGVjU3RhdGUqIGV4ZWMsIFByb3Bl
cnR5TmFtZSBwcm9wZXJ0eU5hbWUsIFByb3BlcnR5U2xvdCYgc2xvdCwgSlNIVE1MRWxlbWVudCog
ZWxlbWVudCkKIHsKICAgICBKU09iamVjdCogc2NyaXB0T2JqZWN0ID0gcGx1Z2luU2NyaXB0T2Jq
ZWN0KGV4ZWMsIGVsZW1lbnQpOwogICAgIGlmICghc2NyaXB0T2JqZWN0KQpAQCAtMTIyLDcgKzEy
Miw3IEBAIGJvb2wgcnVudGltZU9iamVjdEN1c3RvbUdldE93blByb3BlcnR5U2wKICAgICByZXR1
cm4gdHJ1ZTsKIH0KIAotYm9vbCBydW50aW1lT2JqZWN0Q3VzdG9tR2V0T3duUHJvcGVydHlEZXNj
cmlwdG9yKEV4ZWNTdGF0ZSogZXhlYywgY29uc3QgSWRlbnRpZmllciYgcHJvcGVydHlOYW1lLCBQ
cm9wZXJ0eURlc2NyaXB0b3ImIGRlc2NyaXB0b3IsIEpTSFRNTEVsZW1lbnQqIGVsZW1lbnQpCiti
b29sIHJ1bnRpbWVPYmplY3RDdXN0b21HZXRPd25Qcm9wZXJ0eURlc2NyaXB0b3IoRXhlY1N0YXRl
KiBleGVjLCBQcm9wZXJ0eU5hbWUgcHJvcGVydHlOYW1lLCBQcm9wZXJ0eURlc2NyaXB0b3ImIGRl
c2NyaXB0b3IsIEpTSFRNTEVsZW1lbnQqIGVsZW1lbnQpCiB7CiAgICAgSlNPYmplY3QqIHNjcmlw
dE9iamVjdCA9IHBsdWdpblNjcmlwdE9iamVjdChleGVjLCBlbGVtZW50KTsKICAgICBpZiAoIXNj
cmlwdE9iamVjdCkKQEAgLTEzOCw3ICsxMzgsNyBAQCBib29sIHJ1bnRpbWVPYmplY3RDdXN0b21H
ZXRPd25Qcm9wZXJ0eURlCiAgICAgcmV0dXJuIHRydWU7CiB9CiAKLWJvb2wgcnVudGltZU9iamVj
dEN1c3RvbVB1dChFeGVjU3RhdGUqIGV4ZWMsIGNvbnN0IElkZW50aWZpZXImIHByb3BlcnR5TmFt
ZSwgSlNWYWx1ZSB2YWx1ZSwgSlNIVE1MRWxlbWVudCogZWxlbWVudCwgUHV0UHJvcGVydHlTbG90
JiBzbG90KQorYm9vbCBydW50aW1lT2JqZWN0Q3VzdG9tUHV0KEV4ZWNTdGF0ZSogZXhlYywgUHJv
cGVydHlOYW1lIHByb3BlcnR5TmFtZSwgSlNWYWx1ZSB2YWx1ZSwgSlNIVE1MRWxlbWVudCogZWxl
bWVudCwgUHV0UHJvcGVydHlTbG90JiBzbG90KQogewogICAgIEpTT2JqZWN0KiBzY3JpcHRPYmpl
Y3QgPSBwbHVnaW5TY3JpcHRPYmplY3QoZXhlYywgZWxlbWVudCk7CiAgICAgaWYgKCFzY3JpcHRP
YmplY3QpCkluZGV4OiBTb3VyY2UvV2ViQ29yZS9iaW5kaW5ncy9qcy9KU1BsdWdpbkVsZW1lbnRG
dW5jdGlvbnMuaAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2ViQ29yZS9iaW5kaW5ncy9qcy9KU1Bs
dWdpbkVsZW1lbnRGdW5jdGlvbnMuaAkocmV2aXNpb24gMTE2NjY3KQorKysgU291cmNlL1dlYkNv
cmUvYmluZGluZ3MvanMvSlNQbHVnaW5FbGVtZW50RnVuY3Rpb25zLmgJKHdvcmtpbmcgY29weSkK
QEAgLTM4LDEwICszOCwxMCBAQCBuYW1lc3BhY2UgV2ViQ29yZSB7CiAgICAgSlNDOjpCaW5kaW5n
czo6SW5zdGFuY2UqIHBsdWdpbkluc3RhbmNlKE5vZGUqKTsKICAgICBKU0M6OkpTT2JqZWN0KiBw
bHVnaW5TY3JpcHRPYmplY3QoSlNDOjpFeGVjU3RhdGUqIGV4ZWMsIEpTSFRNTEVsZW1lbnQqIGpz
SFRNTEVsZW1lbnQpOwogCi0gICAgSlNDOjpKU1ZhbHVlIHJ1bnRpbWVPYmplY3RQcm9wZXJ0eUdl
dHRlcihKU0M6OkV4ZWNTdGF0ZSosIEpTQzo6SlNWYWx1ZSwgY29uc3QgSlNDOjpJZGVudGlmaWVy
Jik7Ci0gICAgYm9vbCBydW50aW1lT2JqZWN0Q3VzdG9tR2V0T3duUHJvcGVydHlTbG90KEpTQzo6
RXhlY1N0YXRlKiwgY29uc3QgSlNDOjpJZGVudGlmaWVyJiwgSlNDOjpQcm9wZXJ0eVNsb3QmLCBK
U0hUTUxFbGVtZW50Kik7Ci0gICAgYm9vbCBydW50aW1lT2JqZWN0Q3VzdG9tR2V0T3duUHJvcGVy
dHlEZXNjcmlwdG9yKEpTQzo6RXhlY1N0YXRlKiwgY29uc3QgSlNDOjpJZGVudGlmaWVyJiwgSlND
OjpQcm9wZXJ0eURlc2NyaXB0b3ImLCBKU0hUTUxFbGVtZW50Kik7Ci0gICAgYm9vbCBydW50aW1l
T2JqZWN0Q3VzdG9tUHV0KEpTQzo6RXhlY1N0YXRlKiwgY29uc3QgSlNDOjpJZGVudGlmaWVyJiwg
SlNDOjpKU1ZhbHVlLCBKU0hUTUxFbGVtZW50KiwgSlNDOjpQdXRQcm9wZXJ0eVNsb3QmKTsKKyAg
ICBKU0M6OkpTVmFsdWUgcnVudGltZU9iamVjdFByb3BlcnR5R2V0dGVyKEpTQzo6RXhlY1N0YXRl
KiwgSlNDOjpKU1ZhbHVlLCBKU0M6OlByb3BlcnR5TmFtZSk7CisgICAgYm9vbCBydW50aW1lT2Jq
ZWN0Q3VzdG9tR2V0T3duUHJvcGVydHlTbG90KEpTQzo6RXhlY1N0YXRlKiwgSlNDOjpQcm9wZXJ0
eU5hbWUsIEpTQzo6UHJvcGVydHlTbG90JiwgSlNIVE1MRWxlbWVudCopOworICAgIGJvb2wgcnVu
dGltZU9iamVjdEN1c3RvbUdldE93blByb3BlcnR5RGVzY3JpcHRvcihKU0M6OkV4ZWNTdGF0ZSos
IEpTQzo6UHJvcGVydHlOYW1lLCBKU0M6OlByb3BlcnR5RGVzY3JpcHRvciYsIEpTSFRNTEVsZW1l
bnQqKTsKKyAgICBib29sIHJ1bnRpbWVPYmplY3RDdXN0b21QdXQoSlNDOjpFeGVjU3RhdGUqLCBK
U0M6OlByb3BlcnR5TmFtZSwgSlNDOjpKU1ZhbHVlLCBKU0hUTUxFbGVtZW50KiwgSlNDOjpQdXRQ
cm9wZXJ0eVNsb3QmKTsKICAgICBKU0M6OkNhbGxUeXBlIHJ1bnRpbWVPYmplY3RHZXRDYWxsRGF0
YShKU0hUTUxFbGVtZW50KiwgSlNDOjpDYWxsRGF0YSYpOwogCiB9IC8vIG5hbWVzcGFjZSBXZWJD
b3JlCkluZGV4OiBTb3VyY2UvV2ViQ29yZS9iaW5kaW5ncy9qcy9KU1N0b3JhZ2VDdXN0b20uY3Bw
Cj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT0KLS0tIFNvdXJjZS9XZWJDb3JlL2JpbmRpbmdzL2pzL0pTU3RvcmFnZUN1c3Rv
bS5jcHAJKHJldmlzaW9uIDExNjY2NykKKysrIFNvdXJjZS9XZWJDb3JlL2JpbmRpbmdzL2pzL0pT
U3RvcmFnZUN1c3RvbS5jcHAJKHdvcmtpbmcgY29weSkKQEAgLTM0LDEyICszNCwxMiBAQCB1c2lu
ZyBuYW1lc3BhY2UgSlNDOwogCiBuYW1lc3BhY2UgV2ViQ29yZSB7CiAKLWJvb2wgSlNTdG9yYWdl
OjpjYW5HZXRJdGVtc0Zvck5hbWUoRXhlY1N0YXRlKiwgU3RvcmFnZSogaW1wbCwgY29uc3QgSWRl
bnRpZmllciYgcHJvcGVydHlOYW1lKQorYm9vbCBKU1N0b3JhZ2U6OmNhbkdldEl0ZW1zRm9yTmFt
ZShFeGVjU3RhdGUqLCBTdG9yYWdlKiBpbXBsLCBQcm9wZXJ0eU5hbWUgcHJvcGVydHlOYW1lKQog
ewotICAgIHJldHVybiBpbXBsLT5jb250YWlucyhpZGVudGlmaWVyVG9TdHJpbmcocHJvcGVydHlO
YW1lKSk7CisgICAgcmV0dXJuIGltcGwtPmNvbnRhaW5zKHByb3BlcnR5TmFtZVRvU3RyaW5nKHBy
b3BlcnR5TmFtZSkpOwogfQogCi1KU1ZhbHVlIEpTU3RvcmFnZTo6bmFtZUdldHRlcihFeGVjU3Rh
dGUqIGV4ZWMsIEpTVmFsdWUgc2xvdEJhc2UsIGNvbnN0IElkZW50aWZpZXImIHByb3BlcnR5TmFt
ZSkKK0pTVmFsdWUgSlNTdG9yYWdlOjpuYW1lR2V0dGVyKEV4ZWNTdGF0ZSogZXhlYywgSlNWYWx1
ZSBzbG90QmFzZSwgUHJvcGVydHlOYW1lIHByb3BlcnR5TmFtZSkKIHsKICAgICBKU1N0b3JhZ2Uq
IHRoaXNPYmogPSBqc0Nhc3Q8SlNTdG9yYWdlKj4oYXNPYmplY3Qoc2xvdEJhc2UpKTsKICAgICAg
ICAgCkBAIC00NywxMCArNDcsMTAgQEAgSlNWYWx1ZSBKU1N0b3JhZ2U6Om5hbWVHZXR0ZXIoRXhl
Y1N0YXRlKgogICAgIGlmIChwcm90b3R5cGUuaXNPYmplY3QoKSAmJiBhc09iamVjdChwcm90b3R5
cGUpLT5oYXNQcm9wZXJ0eShleGVjLCBwcm9wZXJ0eU5hbWUpKQogICAgICAgICByZXR1cm4gYXNP
YmplY3QocHJvdG90eXBlKS0+Z2V0KGV4ZWMsIHByb3BlcnR5TmFtZSk7CiAgCi0gICAgcmV0dXJu
IGpzU3RyaW5nT3JOdWxsKGV4ZWMsIHRoaXNPYmotPmltcGwoKS0+Z2V0SXRlbShpZGVudGlmaWVy
VG9TdHJpbmcocHJvcGVydHlOYW1lKSkpOworICAgIHJldHVybiBqc1N0cmluZ09yTnVsbChleGVj
LCB0aGlzT2JqLT5pbXBsKCktPmdldEl0ZW0ocHJvcGVydHlOYW1lVG9TdHJpbmcocHJvcGVydHlO
YW1lKSkpOwogfQogCi1ib29sIEpTU3RvcmFnZTo6ZGVsZXRlUHJvcGVydHkoSlNDZWxsKiBjZWxs
LCBFeGVjU3RhdGUqIGV4ZWMsIGNvbnN0IElkZW50aWZpZXImIHByb3BlcnR5TmFtZSkKK2Jvb2wg
SlNTdG9yYWdlOjpkZWxldGVQcm9wZXJ0eShKU0NlbGwqIGNlbGwsIEV4ZWNTdGF0ZSogZXhlYywg
UHJvcGVydHlOYW1lIHByb3BlcnR5TmFtZSkKIHsKICAgICBKU1N0b3JhZ2UqIHRoaXNPYmplY3Qg
PSBqc0Nhc3Q8SlNTdG9yYWdlKj4oY2VsbCk7CiAgICAgLy8gT25seSBwZXJmb3JtIHRoZSBjdXN0
b20gZGVsZXRlIGlmIHRoZSBvYmplY3QgZG9lc24ndCBoYXZlIGEgbmF0aXZlIHByb3BlcnR5IGJ5
IHRoaXMgbmFtZS4KQEAgLTY0LDcgKzY0LDcgQEAgYm9vbCBKU1N0b3JhZ2U6OmRlbGV0ZVByb3Bl
cnR5KEpTQ2VsbCogYwogICAgIGlmIChwcm90b3R5cGUuaXNPYmplY3QoKSAmJiBhc09iamVjdChw
cm90b3R5cGUpLT5oYXNQcm9wZXJ0eShleGVjLCBwcm9wZXJ0eU5hbWUpKQogICAgICAgICByZXR1
cm4gZmFsc2U7CiAKLSAgICB0aGlzT2JqZWN0LT5tX2ltcGwtPnJlbW92ZUl0ZW0oaWRlbnRpZmll
clRvU3RyaW5nKHByb3BlcnR5TmFtZSkpOworICAgIHRoaXNPYmplY3QtPm1faW1wbC0+cmVtb3Zl
SXRlbShwcm9wZXJ0eU5hbWVUb1N0cmluZyhwcm9wZXJ0eU5hbWUpKTsKICAgICByZXR1cm4gdHJ1
ZTsKIH0KIApAQCAtNzgsNyArNzgsNyBAQCB2b2lkIEpTU3RvcmFnZTo6Z2V0T3duUHJvcGVydHlO
YW1lcyhKU09iCiAgICAgQmFzZTo6Z2V0T3duUHJvcGVydHlOYW1lcyh0aGlzT2JqZWN0LCBleGVj
LCBwcm9wZXJ0eU5hbWVzLCBtb2RlKTsKIH0KIAotYm9vbCBKU1N0b3JhZ2U6OnB1dERlbGVnYXRl
KEV4ZWNTdGF0ZSogZXhlYywgY29uc3QgSWRlbnRpZmllciYgcHJvcGVydHlOYW1lLCBKU1ZhbHVl
IHZhbHVlLCBQdXRQcm9wZXJ0eVNsb3QmKQorYm9vbCBKU1N0b3JhZ2U6OnB1dERlbGVnYXRlKEV4
ZWNTdGF0ZSogZXhlYywgUHJvcGVydHlOYW1lIHByb3BlcnR5TmFtZSwgSlNWYWx1ZSB2YWx1ZSwg
UHV0UHJvcGVydHlTbG90JikKIHsKICAgICAvLyBPbmx5IHBlcmZvcm0gdGhlIGN1c3RvbSBwdXQg
aWYgdGhlIG9iamVjdCBkb2Vzbid0IGhhdmUgYSBuYXRpdmUgcHJvcGVydHkgYnkgdGhpcyBuYW1l
LgogICAgIC8vIFNpbmNlIGhhc1Byb3BlcnR5KCkgd291bGQgZW5kIHVwIGNhbGxpbmcgY2FuR2V0
SXRlbXNGb3JOYW1lKCkgYW5kIGJlIGZvb2xlZCwgd2UgbmVlZCB0byBjaGVjawpAQCAtOTYsNyAr
OTYsNyBAQCBib29sIEpTU3RvcmFnZTo6cHV0RGVsZWdhdGUoRXhlY1N0YXRlKiBlCiAgICAgICAg
IHJldHVybiB0cnVlOwogICAgIAogICAgIEV4Y2VwdGlvbkNvZGUgZWMgPSAwOwotICAgIGltcGwo
KS0+c2V0SXRlbShpZGVudGlmaWVyVG9TdHJpbmcocHJvcGVydHlOYW1lKSwgc3RyaW5nVmFsdWUs
IGVjKTsKKyAgICBpbXBsKCktPnNldEl0ZW0ocHJvcGVydHlOYW1lVG9TdHJpbmcocHJvcGVydHlO
YW1lKSwgc3RyaW5nVmFsdWUsIGVjKTsKICAgICBzZXRET01FeGNlcHRpb24oZXhlYywgZWMpOwog
CiAgICAgcmV0dXJuIHRydWU7CkluZGV4OiBTb3VyY2UvV2ViQ29yZS9iaW5kaW5ncy9qcy9KU1N0
eWxlU2hlZXRMaXN0Q3VzdG9tLmNwcAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2ViQ29yZS9iaW5k
aW5ncy9qcy9KU1N0eWxlU2hlZXRMaXN0Q3VzdG9tLmNwcAkocmV2aXNpb24gMTE2NjY3KQorKysg
U291cmNlL1dlYkNvcmUvYmluZGluZ3MvanMvSlNTdHlsZVNoZWV0TGlzdEN1c3RvbS5jcHAJKHdv
cmtpbmcgY29weSkKQEAgLTM1LDE1ICszNSwxNSBAQCB1c2luZyBuYW1lc3BhY2UgSlNDOwogCiBu
YW1lc3BhY2UgV2ViQ29yZSB7CiAKLWJvb2wgSlNTdHlsZVNoZWV0TGlzdDo6Y2FuR2V0SXRlbXNG
b3JOYW1lKEV4ZWNTdGF0ZSosIFN0eWxlU2hlZXRMaXN0KiBzdHlsZVNoZWV0TGlzdCwgY29uc3Qg
SWRlbnRpZmllciYgcHJvcGVydHlOYW1lKQorYm9vbCBKU1N0eWxlU2hlZXRMaXN0OjpjYW5HZXRJ
dGVtc0Zvck5hbWUoRXhlY1N0YXRlKiwgU3R5bGVTaGVldExpc3QqIHN0eWxlU2hlZXRMaXN0LCBQ
cm9wZXJ0eU5hbWUgcHJvcGVydHlOYW1lKQogewotICAgIHJldHVybiBzdHlsZVNoZWV0TGlzdC0+
Z2V0TmFtZWRJdGVtKGlkZW50aWZpZXJUb1N0cmluZyhwcm9wZXJ0eU5hbWUpKTsKKyAgICByZXR1
cm4gc3R5bGVTaGVldExpc3QtPmdldE5hbWVkSXRlbShwcm9wZXJ0eU5hbWVUb1N0cmluZyhwcm9w
ZXJ0eU5hbWUpKTsKIH0KIAotSlNWYWx1ZSBKU1N0eWxlU2hlZXRMaXN0OjpuYW1lR2V0dGVyKEV4
ZWNTdGF0ZSogZXhlYywgSlNWYWx1ZSBzbG90QmFzZSwgY29uc3QgSWRlbnRpZmllciYgcHJvcGVy
dHlOYW1lKQorSlNWYWx1ZSBKU1N0eWxlU2hlZXRMaXN0OjpuYW1lR2V0dGVyKEV4ZWNTdGF0ZSog
ZXhlYywgSlNWYWx1ZSBzbG90QmFzZSwgUHJvcGVydHlOYW1lIHByb3BlcnR5TmFtZSkKIHsKICAg
ICBKU1N0eWxlU2hlZXRMaXN0KiB0aGlzT2JqID0ganNDYXN0PEpTU3R5bGVTaGVldExpc3QqPihh
c09iamVjdChzbG90QmFzZSkpOwotICAgIEhUTUxTdHlsZUVsZW1lbnQqIGVsZW1lbnQgPSB0aGlz
T2JqLT5pbXBsKCktPmdldE5hbWVkSXRlbShpZGVudGlmaWVyVG9TdHJpbmcocHJvcGVydHlOYW1l
KSk7CisgICAgSFRNTFN0eWxlRWxlbWVudCogZWxlbWVudCA9IHRoaXNPYmotPmltcGwoKS0+Z2V0
TmFtZWRJdGVtKHByb3BlcnR5TmFtZVRvU3RyaW5nKHByb3BlcnR5TmFtZSkpOwogICAgIEFTU0VS
VChlbGVtZW50KTsKICAgICByZXR1cm4gdG9KUyhleGVjLCB0aGlzT2JqLT5nbG9iYWxPYmplY3Qo
KSwgZWxlbWVudC0+c2hlZXQoKSk7CiB9CkluZGV4OiBTb3VyY2UvV2ViQ29yZS9iaW5kaW5ncy9q
cy9KU1dvcmtlckNvbnRleHRDdXN0b20uY3BwCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9XZWJDb3Jl
L2JpbmRpbmdzL2pzL0pTV29ya2VyQ29udGV4dEN1c3RvbS5jcHAJKHJldmlzaW9uIDExNjY2NykK
KysrIFNvdXJjZS9XZWJDb3JlL2JpbmRpbmdzL2pzL0pTV29ya2VyQ29udGV4dEN1c3RvbS5jcHAJ
KHdvcmtpbmcgY29weSkKQEAgLTY5LDcgKzY5LDcgQEAgdm9pZCBKU1dvcmtlckNvbnRleHQ6OnZp
c2l0Q2hpbGRyZW4oSlNDZQogICAgIHRoaXNPYmplY3QtPmltcGwoKS0+dmlzaXRKU0V2ZW50TGlz
dGVuZXJzKHZpc2l0b3IpOwogfQogCi1ib29sIEpTV29ya2VyQ29udGV4dDo6Z2V0T3duUHJvcGVy
dHlTbG90RGVsZWdhdGUoRXhlY1N0YXRlKiBleGVjLCBjb25zdCBJZGVudGlmaWVyJiBwcm9wZXJ0
eU5hbWUsIFByb3BlcnR5U2xvdCYgc2xvdCkKK2Jvb2wgSlNXb3JrZXJDb250ZXh0OjpnZXRPd25Q
cm9wZXJ0eVNsb3REZWxlZ2F0ZShFeGVjU3RhdGUqIGV4ZWMsIFByb3BlcnR5TmFtZSBwcm9wZXJ0
eU5hbWUsIFByb3BlcnR5U2xvdCYgc2xvdCkKIHsKICAgICAvLyBMb29rIGZvciBvdmVycmlkZXMg
YmVmb3JlIGxvb2tpbmcgYXQgYW55IG9mIG91ciBvd24gcHJvcGVydGllcy4KICAgICBpZiAoSlNH
bG9iYWxPYmplY3Q6OmdldE93blByb3BlcnR5U2xvdCh0aGlzLCBleGVjLCBwcm9wZXJ0eU5hbWUs
IHNsb3QpKQpAQCAtNzcsNyArNzcsNyBAQCBib29sIEpTV29ya2VyQ29udGV4dDo6Z2V0T3duUHJv
cGVydHlTbG90CiAgICAgcmV0dXJuIGZhbHNlOwogfQogCi1ib29sIEpTV29ya2VyQ29udGV4dDo6
Z2V0T3duUHJvcGVydHlEZXNjcmlwdG9yRGVsZWdhdGUoRXhlY1N0YXRlKiBleGVjLCBjb25zdCBJ
ZGVudGlmaWVyJiBwcm9wZXJ0eU5hbWUsIFByb3BlcnR5RGVzY3JpcHRvciYgZGVzY3JpcHRvcikK
K2Jvb2wgSlNXb3JrZXJDb250ZXh0OjpnZXRPd25Qcm9wZXJ0eURlc2NyaXB0b3JEZWxlZ2F0ZShF
eGVjU3RhdGUqIGV4ZWMsIFByb3BlcnR5TmFtZSBwcm9wZXJ0eU5hbWUsIFByb3BlcnR5RGVzY3Jp
cHRvciYgZGVzY3JpcHRvcikKIHsKICAgICAvLyBMb29rIGZvciBvdmVycmlkZXMgYmVmb3JlIGxv
b2tpbmcgYXQgYW55IG9mIG91ciBvd24gcHJvcGVydGllcy4KICAgICBpZiAoSlNHbG9iYWxPYmpl
Y3Q6OmdldE93blByb3BlcnR5RGVzY3JpcHRvcih0aGlzLCBleGVjLCBwcm9wZXJ0eU5hbWUsIGRl
c2NyaXB0b3IpKQpJbmRleDogU291cmNlL1dlYkNvcmUvYmluZGluZ3Mvc2NyaXB0cy9Db2RlR2Vu
ZXJhdG9ySlMucG0KPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL1dlYkNvcmUvYmluZGluZ3Mvc2NyaXB0
cy9Db2RlR2VuZXJhdG9ySlMucG0JKHJldmlzaW9uIDExNjY2NykKKysrIFNvdXJjZS9XZWJDb3Jl
L2JpbmRpbmdzL3NjcmlwdHMvQ29kZUdlbmVyYXRvckpTLnBtCSh3b3JraW5nIGNvcHkpCkBAIC00
MTIsMTUgKzQxMiwxNCBAQCBzdWIgR2VuZXJhdGVHZXRPd25Qcm9wZXJ0eVNsb3RCb2R5CiAgICAg
fQogCiAgICAgaWYgKCRkYXRhTm9kZS0+ZXh0ZW5kZWRBdHRyaWJ1dGVzLT57IkluZGV4ZWRHZXR0
ZXIifSB8fCAkZGF0YU5vZGUtPmV4dGVuZGVkQXR0cmlidXRlcy0+eyJOdW1lcmljSW5kZXhlZEdl
dHRlciJ9KSB7Ci0gICAgICAgIHB1c2goQGdldE93blByb3BlcnR5U2xvdEltcGwsICIgICAgYm9v
bCBvaztcbiIpOwotICAgICAgICBwdXNoKEBnZXRPd25Qcm9wZXJ0eVNsb3RJbXBsLCAiICAgIHVu
c2lnbmVkIGluZGV4ID0gcHJvcGVydHlOYW1lLnRvVUludDMyKG9rKTtcbiIpOworICAgICAgICBw
dXNoKEBnZXRPd25Qcm9wZXJ0eVNsb3RJbXBsLCAiICAgIHVuc2lnbmVkIGluZGV4ID0gcHJvcGVy
dHlOYW1lLmFzSW5kZXgoKTtcbiIpOwogCiAgICAgICAgICMgSWYgdGhlIGl0ZW0gZnVuY3Rpb24g
cmV0dXJucyBhIHN0cmluZyB0aGVuIHdlIGxldCB0aGUgVHJlYXRSZXR1cm5lZE51bGxTdHJpbmdB
cyBoYW5kbGUgdGhlIGNhc2VzCiAgICAgICAgICMgd2hlcmUgdGhlIGluZGV4IGlzIG91dCBvZiBy
YW5nZS4KICAgICAgICAgaWYgKEluZGV4R2V0dGVyUmV0dXJuc1N0cmluZ3MoJGltcGxDbGFzc05h
bWUpKSB7Ci0gICAgICAgICAgICBwdXNoKEBnZXRPd25Qcm9wZXJ0eVNsb3RJbXBsLCAiICAgIGlm
IChvaykge1xuIik7CisgICAgICAgICAgICBwdXNoKEBnZXRPd25Qcm9wZXJ0eVNsb3RJbXBsLCAi
ICAgIGlmIChpbmRleCAhPSBQcm9wZXJ0eU5hbWU6Ok5vdEFuSW5kZXgpIHtcbiIpOwogICAgICAg
ICB9IGVsc2UgewotICAgICAgICAgICAgcHVzaChAZ2V0T3duUHJvcGVydHlTbG90SW1wbCwgIiAg
ICBpZiAob2sgJiYgaW5kZXggPCBzdGF0aWNfY2FzdDwkaW1wbENsYXNzTmFtZSo+KHRoaXNPYmpl
Y3QtPmltcGwoKSktPmxlbmd0aCgpKSB7XG4iKTsKKyAgICAgICAgICAgIHB1c2goQGdldE93blBy
b3BlcnR5U2xvdEltcGwsICIgICAgaWYgKGluZGV4ICE9IFByb3BlcnR5TmFtZTo6Tm90QW5JbmRl
eCAmJiBpbmRleCA8IHN0YXRpY19jYXN0PCRpbXBsQ2xhc3NOYW1lKj4odGhpc09iamVjdC0+aW1w
bCgpKS0+bGVuZ3RoKCkpIHtcbiIpOwogICAgICAgICB9CiAgICAgICAgIGlmICgkZGF0YU5vZGUt
PmV4dGVuZGVkQXR0cmlidXRlcy0+eyJOdW1lcmljSW5kZXhlZEdldHRlciJ9KSB7CiAgICAgICAg
ICAgICBwdXNoKEBnZXRPd25Qcm9wZXJ0eVNsb3RJbXBsLCAiICAgICAgICBzbG90LnNldFZhbHVl
KHRoaXNPYmplY3QtPmdldEJ5SW5kZXgoZXhlYywgaW5kZXgpKTtcbiIpOwpAQCAtNTA2LDkgKzUw
NSw4IEBAIHN1YiBHZW5lcmF0ZUdldE93blByb3BlcnR5RGVzY3JpcHRvckJvZHkKICAgICB9CiAK
ICAgICBpZiAoJGRhdGFOb2RlLT5leHRlbmRlZEF0dHJpYnV0ZXMtPnsiSW5kZXhlZEdldHRlciJ9
IHx8ICRkYXRhTm9kZS0+ZXh0ZW5kZWRBdHRyaWJ1dGVzLT57Ik51bWVyaWNJbmRleGVkR2V0dGVy
In0pIHsKLSAgICAgICAgcHVzaChAZ2V0T3duUHJvcGVydHlEZXNjcmlwdG9ySW1wbCwgIiAgICBi
b29sIG9rO1xuIik7Ci0gICAgICAgIHB1c2goQGdldE93blByb3BlcnR5RGVzY3JpcHRvckltcGws
ICIgICAgdW5zaWduZWQgaW5kZXggPSBwcm9wZXJ0eU5hbWUudG9VSW50MzIob2spO1xuIik7Ci0g
ICAgICAgIHB1c2goQGdldE93blByb3BlcnR5RGVzY3JpcHRvckltcGwsICIgICAgaWYgKG9rICYm
IGluZGV4IDwgc3RhdGljX2Nhc3Q8JGltcGxDbGFzc05hbWUqPih0aGlzT2JqZWN0LT5pbXBsKCkp
LT5sZW5ndGgoKSkge1xuIik7CisgICAgICAgIHB1c2goQGdldE93blByb3BlcnR5RGVzY3JpcHRv
ckltcGwsICIgICAgdW5zaWduZWQgaW5kZXggPSBwcm9wZXJ0eU5hbWUuYXNJbmRleCgpO1xuIik7
CisgICAgICAgIHB1c2goQGdldE93blByb3BlcnR5RGVzY3JpcHRvckltcGwsICIgICAgaWYgKGlu
ZGV4ICE9IFByb3BlcnR5TmFtZTo6Tm90QW5JbmRleCAmJiBpbmRleCA8IHN0YXRpY19jYXN0PCRp
bXBsQ2xhc3NOYW1lKj4odGhpc09iamVjdC0+aW1wbCgpKS0+bGVuZ3RoKCkpIHtcbiIpOwogICAg
ICAgICBpZiAoJGRhdGFOb2RlLT5leHRlbmRlZEF0dHJpYnV0ZXMtPnsiTnVtZXJpY0luZGV4ZWRH
ZXR0ZXIifSkgewogICAgICAgICAgICAgIyBBc3N1bWUgdGhhdCBpZiB0aGVyZSdzIGEgc2V0dGVy
LCB0aGUgaW5kZXggd2lsbCBiZSB3cml0YWJsZQogICAgICAgICAgICAgaWYgKCRkYXRhTm9kZS0+
ZXh0ZW5kZWRBdHRyaWJ1dGVzLT57IkN1c3RvbUluZGV4ZWRTZXR0ZXIifSkgewpAQCAtNzQyLDEx
ICs3NDAsMTEgQEAgc3ViIEdlbmVyYXRlSGVhZGVyCiAKICAgICAjIEdldHRlcnMKICAgICBpZiAo
JGhhc0dldHRlcikgewotICAgICAgICBwdXNoKEBoZWFkZXJDb250ZW50LCAiICAgIHN0YXRpYyBi
b29sIGdldE93blByb3BlcnR5U2xvdChKU0M6OkpTQ2VsbCosIEpTQzo6RXhlY1N0YXRlKiwgY29u
c3QgSlNDOjpJZGVudGlmaWVyJiBwcm9wZXJ0eU5hbWUsIEpTQzo6UHJvcGVydHlTbG90Jik7XG4i
KTsKLSAgICAgICAgcHVzaChAaGVhZGVyQ29udGVudCwgIiAgICBzdGF0aWMgYm9vbCBnZXRPd25Q
cm9wZXJ0eURlc2NyaXB0b3IoSlNDOjpKU09iamVjdCosIEpTQzo6RXhlY1N0YXRlKiwgY29uc3Qg
SlNDOjpJZGVudGlmaWVyJiBwcm9wZXJ0eU5hbWUsIEpTQzo6UHJvcGVydHlEZXNjcmlwdG9yJik7
XG4iKTsKKyAgICAgICAgcHVzaChAaGVhZGVyQ29udGVudCwgIiAgICBzdGF0aWMgYm9vbCBnZXRP
d25Qcm9wZXJ0eVNsb3QoSlNDOjpKU0NlbGwqLCBKU0M6OkV4ZWNTdGF0ZSosIEpTQzo6UHJvcGVy
dHlOYW1lLCBKU0M6OlByb3BlcnR5U2xvdCYpO1xuIik7CisgICAgICAgIHB1c2goQGhlYWRlckNv
bnRlbnQsICIgICAgc3RhdGljIGJvb2wgZ2V0T3duUHJvcGVydHlEZXNjcmlwdG9yKEpTQzo6SlNP
YmplY3QqLCBKU0M6OkV4ZWNTdGF0ZSosIEpTQzo6UHJvcGVydHlOYW1lLCBKU0M6OlByb3BlcnR5
RGVzY3JpcHRvciYpO1xuIik7CiAgICAgICAgIHB1c2goQGhlYWRlckNvbnRlbnQsICIgICAgc3Rh
dGljIGJvb2wgZ2V0T3duUHJvcGVydHlTbG90QnlJbmRleChKU0M6OkpTQ2VsbCosIEpTQzo6RXhl
Y1N0YXRlKiwgdW5zaWduZWQgcHJvcGVydHlOYW1lLCBKU0M6OlByb3BlcnR5U2xvdCYpO1xuIikg
aWYgKCRkYXRhTm9kZS0+ZXh0ZW5kZWRBdHRyaWJ1dGVzLT57IkluZGV4ZWRHZXR0ZXIifSB8fCAk
ZGF0YU5vZGUtPmV4dGVuZGVkQXR0cmlidXRlcy0+eyJOdW1lcmljSW5kZXhlZEdldHRlciJ9KSAm
JiAhJGRhdGFOb2RlLT5leHRlbmRlZEF0dHJpYnV0ZXMtPnsiQ3VzdG9tTmFtZWRHZXR0ZXIifTsK
LSAgICAgICAgcHVzaChAaGVhZGVyQ29udGVudCwgIiAgICBib29sIGdldE93blByb3BlcnR5U2xv
dERlbGVnYXRlKEpTQzo6RXhlY1N0YXRlKiwgY29uc3QgSlNDOjpJZGVudGlmaWVyJiwgSlNDOjpQ
cm9wZXJ0eVNsb3QmKTtcbiIpIGlmICRkYXRhTm9kZS0+ZXh0ZW5kZWRBdHRyaWJ1dGVzLT57IkpT
Q3VzdG9tR2V0T3duUHJvcGVydHlTbG90QW5kRGVzY3JpcHRvciJ9OwotICAgICAgICBwdXNoKEBo
ZWFkZXJDb250ZW50LCAiICAgIGJvb2wgZ2V0T3duUHJvcGVydHlEZXNjcmlwdG9yRGVsZWdhdGUo
SlNDOjpFeGVjU3RhdGUqLCBjb25zdCBKU0M6OklkZW50aWZpZXImLCBKU0M6OlByb3BlcnR5RGVz
Y3JpcHRvciYpO1xuIikgaWYgJGRhdGFOb2RlLT5leHRlbmRlZEF0dHJpYnV0ZXMtPnsiSlNDdXN0
b21HZXRPd25Qcm9wZXJ0eVNsb3RBbmREZXNjcmlwdG9yIn07CisgICAgICAgIHB1c2goQGhlYWRl
ckNvbnRlbnQsICIgICAgYm9vbCBnZXRPd25Qcm9wZXJ0eVNsb3REZWxlZ2F0ZShKU0M6OkV4ZWNT
dGF0ZSosIEpTQzo6UHJvcGVydHlOYW1lLCBKU0M6OlByb3BlcnR5U2xvdCYpO1xuIikgaWYgJGRh
dGFOb2RlLT5leHRlbmRlZEF0dHJpYnV0ZXMtPnsiSlNDdXN0b21HZXRPd25Qcm9wZXJ0eVNsb3RB
bmREZXNjcmlwdG9yIn07CisgICAgICAgIHB1c2goQGhlYWRlckNvbnRlbnQsICIgICAgYm9vbCBn
ZXRPd25Qcm9wZXJ0eURlc2NyaXB0b3JEZWxlZ2F0ZShKU0M6OkV4ZWNTdGF0ZSosIEpTQzo6UHJv
cGVydHlOYW1lLCBKU0M6OlByb3BlcnR5RGVzY3JpcHRvciYpO1xuIikgaWYgJGRhdGFOb2RlLT5l
eHRlbmRlZEF0dHJpYnV0ZXMtPnsiSlNDdXN0b21HZXRPd25Qcm9wZXJ0eVNsb3RBbmREZXNjcmlw
dG9yIn07CiAgICAgICAgICRzdHJ1Y3R1cmVGbGFnc3siSlNDOjpPdmVycmlkZXNHZXRPd25Qcm9w
ZXJ0eVNsb3QifSA9IDE7CiAgICAgfQogCkBAIC03NjUsOSArNzYzLDkgQEAgc3ViIEdlbmVyYXRl
SGVhZGVyCiAKICAgICAjIEdldHRlcnMKICAgICBpZiAoJGhhc1NldHRlcikgewotICAgICAgICBw
dXNoKEBoZWFkZXJDb250ZW50LCAiICAgIHN0YXRpYyB2b2lkIHB1dChKU0M6OkpTQ2VsbCosIEpT
Qzo6RXhlY1N0YXRlKiwgY29uc3QgSlNDOjpJZGVudGlmaWVyJiBwcm9wZXJ0eU5hbWUsIEpTQzo6
SlNWYWx1ZSwgSlNDOjpQdXRQcm9wZXJ0eVNsb3QmKTtcbiIpOworICAgICAgICBwdXNoKEBoZWFk
ZXJDb250ZW50LCAiICAgIHN0YXRpYyB2b2lkIHB1dChKU0M6OkpTQ2VsbCosIEpTQzo6RXhlY1N0
YXRlKiwgSlNDOjpQcm9wZXJ0eU5hbWUsIEpTQzo6SlNWYWx1ZSwgSlNDOjpQdXRQcm9wZXJ0eVNs
b3QmKTtcbiIpOwogICAgICAgICBwdXNoKEBoZWFkZXJDb250ZW50LCAiICAgIHN0YXRpYyB2b2lk
IHB1dEJ5SW5kZXgoSlNDOjpKU0NlbGwqLCBKU0M6OkV4ZWNTdGF0ZSosIHVuc2lnbmVkIHByb3Bl
cnR5TmFtZSwgSlNDOjpKU1ZhbHVlLCBib29sIHNob3VsZFRocm93KTtcbiIpIGlmICRkYXRhTm9k
ZS0+ZXh0ZW5kZWRBdHRyaWJ1dGVzLT57IkN1c3RvbUluZGV4ZWRTZXR0ZXIifTsKLSAgICAgICAg
cHVzaChAaGVhZGVyQ29udGVudCwgIiAgICBib29sIHB1dERlbGVnYXRlKEpTQzo6RXhlY1N0YXRl
KiwgY29uc3QgSlNDOjpJZGVudGlmaWVyJiwgSlNDOjpKU1ZhbHVlLCBKU0M6OlB1dFByb3BlcnR5
U2xvdCYpO1xuIikgaWYgJGRhdGFOb2RlLT5leHRlbmRlZEF0dHJpYnV0ZXMtPnsiQ3VzdG9tTmFt
ZWRTZXR0ZXIifTsKKyAgICAgICAgcHVzaChAaGVhZGVyQ29udGVudCwgIiAgICBib29sIHB1dERl
bGVnYXRlKEpTQzo6RXhlY1N0YXRlKiwgSlNDOjpQcm9wZXJ0eU5hbWUsIEpTQzo6SlNWYWx1ZSwg
SlNDOjpQdXRQcm9wZXJ0eVNsb3QmKTtcbiIpIGlmICRkYXRhTm9kZS0+ZXh0ZW5kZWRBdHRyaWJ1
dGVzLT57IkN1c3RvbU5hbWVkU2V0dGVyIn07CiAgICAgfQogCiAgICAgaWYgKCEkaGFzUGFyZW50
KSB7CkBAIC03OTgsNyArNzk2LDcgQEAgc3ViIEdlbmVyYXRlSGVhZGVyCiAgICAgcHVzaChAaGVh
ZGVyQ29udGVudCwgIiAgICBzdGF0aWMgSlNDOjpDYWxsVHlwZSBnZXRDYWxsRGF0YShKU0M6OkpT
Q2VsbCosIEpTQzo6Q2FsbERhdGEmKTtcblxuIikgaWYgJGRhdGFOb2RlLT5leHRlbmRlZEF0dHJp
YnV0ZXMtPnsiQ3VzdG9tQ2FsbCJ9OwogCiAgICAgIyBDdXN0b20gZGVsZXRlUHJvcGVydHkgZnVu
Y3Rpb24KLSAgICBwdXNoKEBoZWFkZXJDb250ZW50LCAiICAgIHN0YXRpYyBib29sIGRlbGV0ZVBy
b3BlcnR5KEpTQzo6SlNDZWxsKiwgSlNDOjpFeGVjU3RhdGUqLCBjb25zdCBKU0M6OklkZW50aWZp
ZXImKTtcbiIpIGlmICRkYXRhTm9kZS0+ZXh0ZW5kZWRBdHRyaWJ1dGVzLT57IkN1c3RvbURlbGV0
ZVByb3BlcnR5In07CisgICAgcHVzaChAaGVhZGVyQ29udGVudCwgIiAgICBzdGF0aWMgYm9vbCBk
ZWxldGVQcm9wZXJ0eShKU0M6OkpTQ2VsbCosIEpTQzo6RXhlY1N0YXRlKiwgSlNDOjpQcm9wZXJ0
eU5hbWUpO1xuIikgaWYgJGRhdGFOb2RlLT5leHRlbmRlZEF0dHJpYnV0ZXMtPnsiQ3VzdG9tRGVs
ZXRlUHJvcGVydHkifTsKIAogICAgICMgQ3VzdG9tIGdldFByb3BlcnR5TmFtZXMgZnVuY3Rpb24g
ZXhpc3RzIG9uIERPTVdpbmRvdwogICAgIGlmICgkaW50ZXJmYWNlTmFtZSBlcSAiRE9NV2luZG93
IikgewpAQCAtODEzLDcgKzgxMSw3IEBAIHN1YiBHZW5lcmF0ZUhlYWRlcgogICAgIH0KIAogICAg
ICMgQ3VzdG9tIGRlZmluZU93blByb3BlcnR5IGZ1bmN0aW9uCi0gICAgcHVzaChAaGVhZGVyQ29u
dGVudCwgIiAgICBzdGF0aWMgYm9vbCBkZWZpbmVPd25Qcm9wZXJ0eShKU0M6OkpTT2JqZWN0Kiwg
SlNDOjpFeGVjU3RhdGUqLCBjb25zdCBKU0M6OklkZW50aWZpZXImIHByb3BlcnR5TmFtZSwgSlND
OjpQcm9wZXJ0eURlc2NyaXB0b3ImLCBib29sIHNob3VsZFRocm93KTtcbiIpIGlmICRkYXRhTm9k
ZS0+ZXh0ZW5kZWRBdHRyaWJ1dGVzLT57IkpTQ3VzdG9tRGVmaW5lT3duUHJvcGVydHkifTsKKyAg
ICBwdXNoKEBoZWFkZXJDb250ZW50LCAiICAgIHN0YXRpYyBib29sIGRlZmluZU93blByb3BlcnR5
KEpTQzo6SlNPYmplY3QqLCBKU0M6OkV4ZWNTdGF0ZSosIEpTQzo6UHJvcGVydHlOYW1lLCBKU0M6
OlByb3BlcnR5RGVzY3JpcHRvciYsIGJvb2wgc2hvdWxkVGhyb3cpO1xuIikgaWYgJGRhdGFOb2Rl
LT5leHRlbmRlZEF0dHJpYnV0ZXMtPnsiSlNDdXN0b21EZWZpbmVPd25Qcm9wZXJ0eSJ9OwogCiAg
ICAgIyBPdmVycmlkZSB0b0Jvb2xlYW4gdG8gcmV0dXJuIGZhbHNlIGZvciBvYmplY3RzIHRoYXQg
d2FudCB0byAnTWFzcXVlcmFkZXNBc1VuZGVmaW5lZCcuCiAgICAgaWYgKCRkYXRhTm9kZS0+ZXh0
ZW5kZWRBdHRyaWJ1dGVzLT57Ik1hc3F1ZXJhZGVzQXNVbmRlZmluZWQifSkgewpAQCAtOTQ4LDIw
ICs5NDYsMjAgQEAgc3ViIEdlbmVyYXRlSGVhZGVyCiAgICAgIyBOYW1lIGdldHRlcgogICAgIGlm
ICgkZGF0YU5vZGUtPmV4dGVuZGVkQXR0cmlidXRlcy0+eyJOYW1lZEdldHRlciJ9IHx8ICRkYXRh
Tm9kZS0+ZXh0ZW5kZWRBdHRyaWJ1dGVzLT57IkN1c3RvbU5hbWVkR2V0dGVyIn0pIHsKICAgICAg
ICAgcHVzaChAaGVhZGVyQ29udGVudCwgInByaXZhdGU6XG4iKTsKLSAgICAgICAgcHVzaChAaGVh
ZGVyQ29udGVudCwgIiAgICBzdGF0aWMgYm9vbCBjYW5HZXRJdGVtc0Zvck5hbWUoSlNDOjpFeGVj
U3RhdGUqLCAkaW1wbENsYXNzTmFtZSosIGNvbnN0IEpTQzo6SWRlbnRpZmllciYpO1xuIik7Ci0g
ICAgICAgIHB1c2goQGhlYWRlckNvbnRlbnQsICIgICAgc3RhdGljIEpTQzo6SlNWYWx1ZSBuYW1l
R2V0dGVyKEpTQzo6RXhlY1N0YXRlKiwgSlNDOjpKU1ZhbHVlLCBjb25zdCBKU0M6OklkZW50aWZp
ZXImKTtcbiIpOworICAgICAgICBwdXNoKEBoZWFkZXJDb250ZW50LCAiICAgIHN0YXRpYyBib29s
IGNhbkdldEl0ZW1zRm9yTmFtZShKU0M6OkV4ZWNTdGF0ZSosICRpbXBsQ2xhc3NOYW1lKiwgSlND
OjpQcm9wZXJ0eU5hbWUpO1xuIik7CisgICAgICAgIHB1c2goQGhlYWRlckNvbnRlbnQsICIgICAg
c3RhdGljIEpTQzo6SlNWYWx1ZSBuYW1lR2V0dGVyKEpTQzo6RXhlY1N0YXRlKiwgSlNDOjpKU1Zh
bHVlLCBKU0M6OlByb3BlcnR5TmFtZSk7XG4iKTsKICAgICB9CiAKICAgICBwdXNoKEBoZWFkZXJD
b250ZW50LCAifTtcblxuIik7CiAKICAgICBpZiAoJGRhdGFOb2RlLT5leHRlbmRlZEF0dHJpYnV0
ZXMtPnsiSlNJbmxpbmVHZXRPd25Qcm9wZXJ0eVNsb3QifSAmJiAhJGRhdGFOb2RlLT5leHRlbmRl
ZEF0dHJpYnV0ZXMtPnsiQ3VzdG9tR2V0T3duUHJvcGVydHlTbG90In0pIHsKLSAgICAgICAgcHVz
aChAaGVhZGVyQ29udGVudCwgIkFMV0FZU19JTkxJTkUgYm9vbCAke2NsYXNzTmFtZX06OmdldE93
blByb3BlcnR5U2xvdChKU0M6OkpTQ2VsbCogY2VsbCwgSlNDOjpFeGVjU3RhdGUqIGV4ZWMsIGNv
bnN0IEpTQzo6SWRlbnRpZmllciYgcHJvcGVydHlOYW1lLCBKU0M6OlByb3BlcnR5U2xvdCYgc2xv
dClcbiIpOworICAgICAgICBwdXNoKEBoZWFkZXJDb250ZW50LCAiQUxXQVlTX0lOTElORSBib29s
ICR7Y2xhc3NOYW1lfTo6Z2V0T3duUHJvcGVydHlTbG90KEpTQzo6SlNDZWxsKiBjZWxsLCBKU0M6
OkV4ZWNTdGF0ZSogZXhlYywgSlNDOjpQcm9wZXJ0eU5hbWUgcHJvcGVydHlOYW1lLCBKU0M6OlBy
b3BlcnR5U2xvdCYgc2xvdClcbiIpOwogICAgICAgICBwdXNoKEBoZWFkZXJDb250ZW50LCAie1xu
Iik7CiAgICAgICAgIHB1c2goQGhlYWRlckNvbnRlbnQsICIgICAgJHtjbGFzc05hbWV9KiB0aGlz
T2JqZWN0ID0gSlNDOjpqc0Nhc3Q8JHtjbGFzc05hbWV9Kj4oY2VsbCk7XG4iKTsKICAgICAgICAg
cHVzaChAaGVhZGVyQ29udGVudCwgIiAgICBBU1NFUlRfR0NfT0JKRUNUX0lOSEVSSVRTKHRoaXNP
YmplY3QsICZzX2luZm8pO1xuIik7CiAgICAgICAgIHB1c2goQGhlYWRlckNvbnRlbnQsIEdlbmVy
YXRlR2V0T3duUHJvcGVydHlTbG90Qm9keSgkZGF0YU5vZGUsICRpbnRlcmZhY2VOYW1lLCAkY2xh
c3NOYW1lLCAkaW1wbENsYXNzTmFtZSwgJG51bUF0dHJpYnV0ZXMgPiAwLCAxKSk7CiAgICAgICAg
IHB1c2goQGhlYWRlckNvbnRlbnQsICJ9XG5cbiIpOwotICAgICAgICBwdXNoKEBoZWFkZXJDb250
ZW50LCAiQUxXQVlTX0lOTElORSBib29sICR7Y2xhc3NOYW1lfTo6Z2V0T3duUHJvcGVydHlEZXNj
cmlwdG9yKEpTQzo6SlNPYmplY3QqIG9iamVjdCwgSlNDOjpFeGVjU3RhdGUqIGV4ZWMsIGNvbnN0
IEpTQzo6SWRlbnRpZmllciYgcHJvcGVydHlOYW1lLCBKU0M6OlByb3BlcnR5RGVzY3JpcHRvciYg
ZGVzY3JpcHRvcilcbiIpOworICAgICAgICBwdXNoKEBoZWFkZXJDb250ZW50LCAiQUxXQVlTX0lO
TElORSBib29sICR7Y2xhc3NOYW1lfTo6Z2V0T3duUHJvcGVydHlEZXNjcmlwdG9yKEpTQzo6SlNP
YmplY3QqIG9iamVjdCwgSlNDOjpFeGVjU3RhdGUqIGV4ZWMsIEpTQzo6UHJvcGVydHlOYW1lIHBy
b3BlcnR5TmFtZSwgSlNDOjpQcm9wZXJ0eURlc2NyaXB0b3ImIGRlc2NyaXB0b3IpXG4iKTsKICAg
ICAgICAgcHVzaChAaGVhZGVyQ29udGVudCwgIntcbiIpOwogICAgICAgICBwdXNoKEBoZWFkZXJD
b250ZW50LCAiICAgICR7Y2xhc3NOYW1lfSogdGhpc09iamVjdCA9IEpTQzo6anNDYXN0PCR7Y2xh
c3NOYW1lfSo+KG9iamVjdCk7XG4iKTsKICAgICAgICAgcHVzaChAaGVhZGVyQ29udGVudCwgIiAg
ICBBU1NFUlRfR0NfT0JKRUNUX0lOSEVSSVRTKHRoaXNPYmplY3QsICZzX2luZm8pO1xuIik7CkBA
IC0xMDI2LDggKzEwMjQsOCBAQCBzdWIgR2VuZXJhdGVIZWFkZXIKIAogICAgIHB1c2goQGhlYWRl
ckNvbnRlbnQsICIgICAgc3RhdGljIGNvbnN0IEpTQzo6Q2xhc3NJbmZvIHNfaW5mbztcbiIpOwog
ICAgIGlmICgkbnVtRnVuY3Rpb25zID4gMCB8fCAkbnVtQ29uc3RhbnRzID4gMCkgewotICAgICAg
ICBwdXNoKEBoZWFkZXJDb250ZW50LCAiICAgIHN0YXRpYyBib29sIGdldE93blByb3BlcnR5U2xv
dChKU0M6OkpTQ2VsbCosIEpTQzo6RXhlY1N0YXRlKiwgY29uc3QgSlNDOjpJZGVudGlmaWVyJiwg
SlNDOjpQcm9wZXJ0eVNsb3QmKTtcbiIpOwotICAgICAgICBwdXNoKEBoZWFkZXJDb250ZW50LCAi
ICAgIHN0YXRpYyBib29sIGdldE93blByb3BlcnR5RGVzY3JpcHRvcihKU0M6OkpTT2JqZWN0Kiwg
SlNDOjpFeGVjU3RhdGUqLCBjb25zdCBKU0M6OklkZW50aWZpZXImLCBKU0M6OlByb3BlcnR5RGVz
Y3JpcHRvciYpO1xuIik7CisgICAgICAgIHB1c2goQGhlYWRlckNvbnRlbnQsICIgICAgc3RhdGlj
IGJvb2wgZ2V0T3duUHJvcGVydHlTbG90KEpTQzo6SlNDZWxsKiwgSlNDOjpFeGVjU3RhdGUqLCBK
U0M6OlByb3BlcnR5TmFtZSwgSlNDOjpQcm9wZXJ0eVNsb3QmKTtcbiIpOworICAgICAgICBwdXNo
KEBoZWFkZXJDb250ZW50LCAiICAgIHN0YXRpYyBib29sIGdldE93blByb3BlcnR5RGVzY3JpcHRv
cihKU0M6OkpTT2JqZWN0KiwgSlNDOjpFeGVjU3RhdGUqLCBKU0M6OlByb3BlcnR5TmFtZSwgSlND
OjpQcm9wZXJ0eURlc2NyaXB0b3ImKTtcbiIpOwogICAgICAgICAkc3RydWN0dXJlRmxhZ3N7IkpT
Qzo6T3ZlcnJpZGVzR2V0T3duUHJvcGVydHlTbG90In0gPSAxOwogICAgIH0KICAgICBpZiAoJGRh
dGFOb2RlLT5leHRlbmRlZEF0dHJpYnV0ZXMtPnsiSlNDdXN0b21NYXJrRnVuY3Rpb24ifSBvciAk
bmVlZHNNYXJrQ2hpbGRyZW4pIHsKQEAgLTEwMzksMTIgKzEwMzcsMTIgQEAgc3ViIEdlbmVyYXRl
SGVhZGVyCiAgICAgICAgICIgICAgICAgIHJldHVybiBKU0M6OlN0cnVjdHVyZTo6Y3JlYXRlKGds
b2JhbERhdGEsIGdsb2JhbE9iamVjdCwgcHJvdG90eXBlLCBKU0M6OlR5cGVJbmZvKEpTQzo6T2Jq
ZWN0VHlwZSwgU3RydWN0dXJlRmxhZ3MpLCAmc19pbmZvKTtcbiIgLgogICAgICAgICAiICAgIH1c
biIpOwogICAgIGlmICgkZGF0YU5vZGUtPmV4dGVuZGVkQXR0cmlidXRlcy0+eyJKU0N1c3RvbU5h
bWVkR2V0dGVyT25Qcm90b3R5cGUifSkgewotICAgICAgICBwdXNoKEBoZWFkZXJDb250ZW50LCAi
ICAgIHN0YXRpYyB2b2lkIHB1dChKU0M6OkpTQ2VsbCosIEpTQzo6RXhlY1N0YXRlKiwgY29uc3Qg
SlNDOjpJZGVudGlmaWVyJiBwcm9wZXJ0eU5hbWUsIEpTQzo6SlNWYWx1ZSwgSlNDOjpQdXRQcm9w
ZXJ0eVNsb3QmKTtcbiIpOwotICAgICAgICBwdXNoKEBoZWFkZXJDb250ZW50LCAiICAgIGJvb2wg
cHV0RGVsZWdhdGUoSlNDOjpFeGVjU3RhdGUqLCBjb25zdCBKU0M6OklkZW50aWZpZXImLCBKU0M6
OkpTVmFsdWUsIEpTQzo6UHV0UHJvcGVydHlTbG90Jik7XG4iKTsKKyAgICAgICAgcHVzaChAaGVh
ZGVyQ29udGVudCwgIiAgICBzdGF0aWMgdm9pZCBwdXQoSlNDOjpKU0NlbGwqLCBKU0M6OkV4ZWNT
dGF0ZSosIEpTQzo6UHJvcGVydHlOYW1lLCBKU0M6OkpTVmFsdWUsIEpTQzo6UHV0UHJvcGVydHlT
bG90Jik7XG4iKTsKKyAgICAgICAgcHVzaChAaGVhZGVyQ29udGVudCwgIiAgICBib29sIHB1dERl
bGVnYXRlKEpTQzo6RXhlY1N0YXRlKiwgSlNDOjpQcm9wZXJ0eU5hbWUsIEpTQzo6SlNWYWx1ZSwg
SlNDOjpQdXRQcm9wZXJ0eVNsb3QmKTtcbiIpOwogICAgIH0KIAogICAgICMgQ3VzdG9tIGRlZmlu
ZU93blByb3BlcnR5IGZ1bmN0aW9uCi0gICAgcHVzaChAaGVhZGVyQ29udGVudCwgIiAgICBzdGF0
aWMgYm9vbCBkZWZpbmVPd25Qcm9wZXJ0eShKU0M6OkpTT2JqZWN0KiwgSlNDOjpFeGVjU3RhdGUq
LCBjb25zdCBKU0M6OklkZW50aWZpZXImIHByb3BlcnR5TmFtZSwgSlNDOjpQcm9wZXJ0eURlc2Ny
aXB0b3ImLCBib29sIHNob3VsZFRocm93KTtcbiIpIGlmICRkYXRhTm9kZS0+ZXh0ZW5kZWRBdHRy
aWJ1dGVzLT57IkpTQ3VzdG9tRGVmaW5lT3duUHJvcGVydHlPblByb3RvdHlwZSJ9OworICAgIHB1
c2goQGhlYWRlckNvbnRlbnQsICIgICAgc3RhdGljIGJvb2wgZGVmaW5lT3duUHJvcGVydHkoSlND
OjpKU09iamVjdCosIEpTQzo6RXhlY1N0YXRlKiwgSlNDOjpQcm9wZXJ0eU5hbWUsIEpTQzo6UHJv
cGVydHlEZXNjcmlwdG9yJiwgYm9vbCBzaG91bGRUaHJvdyk7XG4iKSBpZiAkZGF0YU5vZGUtPmV4
dGVuZGVkQXR0cmlidXRlcy0+eyJKU0N1c3RvbURlZmluZU93blByb3BlcnR5T25Qcm90b3R5cGUi
fTsKIAogICAgIHB1c2goQGhlYWRlckNvbnRlbnQsICJcbnByaXZhdGU6XG4iKTsKICAgICBwdXNo
KEBoZWFkZXJDb250ZW50LCAiICAgICR7Y2xhc3NOYW1lfVByb3RvdHlwZShKU0M6OkpTR2xvYmFs
RGF0YSYgZ2xvYmFsRGF0YSwgSlNDOjpKU0dsb2JhbE9iamVjdCosIEpTQzo6U3RydWN0dXJlKiBz
dHJ1Y3R1cmUpIDogSlNDOjpKU05vbkZpbmFsT2JqZWN0KGdsb2JhbERhdGEsIHN0cnVjdHVyZSkg
eyB9XG4iKTsKQEAgLTEwODIsNyArMTA4MCw3IEBAIHN1YiBHZW5lcmF0ZUhlYWRlcgogICAgICAg
ICAgICAgbXkgJGNvbmRpdGlvbmFsU3RyaW5nID0gJGNvZGVHZW5lcmF0b3ItPkdlbmVyYXRlQ29u
ZGl0aW9uYWxTdHJpbmcoJGF0dHJpYnV0ZS0+c2lnbmF0dXJlKTsKICAgICAgICAgICAgIHB1c2go
QGhlYWRlckNvbnRlbnQsICIjaWYgJHtjb25kaXRpb25hbFN0cmluZ31cbiIpIGlmICRjb25kaXRp
b25hbFN0cmluZzsKICAgICAgICAgICAgIG15ICRnZXR0ZXIgPSAianMiIC4gJGludGVyZmFjZU5h
bWUgLiAkY29kZUdlbmVyYXRvci0+V0tfdWNmaXJzdCgkYXR0cmlidXRlLT5zaWduYXR1cmUtPm5h
bWUpIC4gKCRhdHRyaWJ1dGUtPnNpZ25hdHVyZS0+dHlwZSA9fiAvQ29uc3RydWN0b3IkLyA/ICJD
b25zdHJ1Y3RvciIgOiAiIik7Ci0gICAgICAgICAgICBwdXNoKEBoZWFkZXJDb250ZW50LCAiSlND
OjpKU1ZhbHVlICR7Z2V0dGVyfShKU0M6OkV4ZWNTdGF0ZSosIEpTQzo6SlNWYWx1ZSwgY29uc3Qg
SlNDOjpJZGVudGlmaWVyJik7XG4iKTsKKyAgICAgICAgICAgIHB1c2goQGhlYWRlckNvbnRlbnQs
ICJKU0M6OkpTVmFsdWUgJHtnZXR0ZXJ9KEpTQzo6RXhlY1N0YXRlKiwgSlNDOjpKU1ZhbHVlLCBK
U0M6OlByb3BlcnR5TmFtZSk7XG4iKTsKICAgICAgICAgICAgIHVubGVzcyAoJGF0dHJpYnV0ZS0+
dHlwZSA9fiAvcmVhZG9ubHkvKSB7CiAgICAgICAgICAgICAgICAgbXkgJHNldHRlciA9ICJzZXRK
UyIgLiAkaW50ZXJmYWNlTmFtZSAuICRjb2RlR2VuZXJhdG9yLT5XS191Y2ZpcnN0KCRhdHRyaWJ1
dGUtPnNpZ25hdHVyZS0+bmFtZSkgLiAoJGF0dHJpYnV0ZS0+c2lnbmF0dXJlLT50eXBlID1+IC9D
b25zdHJ1Y3RvciQvID8gIkNvbnN0cnVjdG9yIiA6ICIiKTsKICAgICAgICAgICAgICAgICBwdXNo
KEBoZWFkZXJDb250ZW50LCAidm9pZCAke3NldHRlcn0oSlNDOjpFeGVjU3RhdGUqLCBKU0M6OkpT
T2JqZWN0KiwgSlNDOjpKU1ZhbHVlKTtcbiIpOwpAQCAtMTA5Miw3ICsxMDkwLDcgQEAgc3ViIEdl
bmVyYXRlSGVhZGVyCiAgICAgICAgIAogICAgICAgICBpZiAoISRkYXRhTm9kZS0+ZXh0ZW5kZWRB
dHRyaWJ1dGVzLT57Ik9taXRDb25zdHJ1Y3RvciJ9KSB7CiAgICAgICAgICAgICBteSAkZ2V0dGVy
ID0gImpzIiAuICRpbnRlcmZhY2VOYW1lIC4gIkNvbnN0cnVjdG9yIjsKLSAgICAgICAgICAgIHB1
c2goQGhlYWRlckNvbnRlbnQsICJKU0M6OkpTVmFsdWUgJHtnZXR0ZXJ9KEpTQzo6RXhlY1N0YXRl
KiwgSlNDOjpKU1ZhbHVlLCBjb25zdCBKU0M6OklkZW50aWZpZXImKTtcbiIpOworICAgICAgICAg
ICAgcHVzaChAaGVhZGVyQ29udGVudCwgIkpTQzo6SlNWYWx1ZSAke2dldHRlcn0oSlNDOjpFeGVj
U3RhdGUqLCBKU0M6OkpTVmFsdWUsIEpTQzo6UHJvcGVydHlOYW1lKTtcbiIpOwogICAgICAgICB9
CiAKICAgICAgICAgaWYgKCRkYXRhTm9kZS0+ZXh0ZW5kZWRBdHRyaWJ1dGVzLT57IlJlcGxhY2Vh
YmxlQ29uc3RydWN0b3IifSkgewpAQCAtMTEwNyw3ICsxMTA1LDcgQEAgc3ViIEdlbmVyYXRlSGVh
ZGVyCiAgICAgICAgICAgICBteSAkY29uZGl0aW9uYWxTdHJpbmcgPSAkY29kZUdlbmVyYXRvci0+
R2VuZXJhdGVDb25kaXRpb25hbFN0cmluZygkY29uc3RhbnQpOwogICAgICAgICAgICAgcHVzaChA
aGVhZGVyQ29udGVudCwgIiNpZiAke2NvbmRpdGlvbmFsU3RyaW5nfVxuIikgaWYgJGNvbmRpdGlv
bmFsU3RyaW5nOwogICAgICAgICAgICAgbXkgJGdldHRlciA9ICJqcyIgLiAkaW50ZXJmYWNlTmFt
ZSAuICRjb2RlR2VuZXJhdG9yLT5XS191Y2ZpcnN0KCRjb25zdGFudC0+bmFtZSk7Ci0gICAgICAg
ICAgICBwdXNoKEBoZWFkZXJDb250ZW50LCAiSlNDOjpKU1ZhbHVlICR7Z2V0dGVyfShKU0M6OkV4
ZWNTdGF0ZSosIEpTQzo6SlNWYWx1ZSwgY29uc3QgSlNDOjpJZGVudGlmaWVyJik7XG4iKTsKKyAg
ICAgICAgICAgIHB1c2goQGhlYWRlckNvbnRlbnQsICJKU0M6OkpTVmFsdWUgJHtnZXR0ZXJ9KEpT
Qzo6RXhlY1N0YXRlKiwgSlNDOjpKU1ZhbHVlLCBKU0M6OlByb3BlcnR5TmFtZSk7XG4iKTsKICAg
ICAgICAgICAgIHB1c2goQGhlYWRlckNvbnRlbnQsICIjZW5kaWZcbiIpIGlmICRjb25kaXRpb25h
bFN0cmluZzsKICAgICAgICAgfQogICAgIH0KQEAgLTE0ODAsNyArMTQ3OCw3IEBAIHN1YiBHZW5l
cmF0ZUltcGxlbWVudGF0aW9uCiAgICAgfQogCiAgICAgaWYgKCRudW1Db25zdGFudHMgPiAwIHx8
ICRudW1GdW5jdGlvbnMgPiAwKSB7Ci0gICAgICAgIHB1c2goQGltcGxDb250ZW50LCAiYm9vbCAk
e2NsYXNzTmFtZX1Qcm90b3R5cGU6OmdldE93blByb3BlcnR5U2xvdChKU0NlbGwqIGNlbGwsIEV4
ZWNTdGF0ZSogZXhlYywgY29uc3QgSWRlbnRpZmllciYgcHJvcGVydHlOYW1lLCBQcm9wZXJ0eVNs
b3QmIHNsb3QpXG4iKTsKKyAgICAgICAgcHVzaChAaW1wbENvbnRlbnQsICJib29sICR7Y2xhc3NO
YW1lfVByb3RvdHlwZTo6Z2V0T3duUHJvcGVydHlTbG90KEpTQ2VsbCogY2VsbCwgRXhlY1N0YXRl
KiBleGVjLCBQcm9wZXJ0eU5hbWUgcHJvcGVydHlOYW1lLCBQcm9wZXJ0eVNsb3QmIHNsb3QpXG4i
KTsKICAgICAgICAgcHVzaChAaW1wbENvbnRlbnQsICJ7XG4iKTsKICAgICAgICAgcHVzaChAaW1w
bENvbnRlbnQsICIgICAgJHtjbGFzc05hbWV9UHJvdG90eXBlKiB0aGlzT2JqZWN0ID0ganNDYXN0
PCR7Y2xhc3NOYW1lfVByb3RvdHlwZSo+KGNlbGwpO1xuIik7CiAKQEAgLTE0OTUsNyArMTQ5Myw3
IEBAIHN1YiBHZW5lcmF0ZUltcGxlbWVudGF0aW9uCiAgICAgICAgIH0KICAgICAgICAgcHVzaChA
aW1wbENvbnRlbnQsICJ9XG5cbiIpOwogCi0gICAgICAgIHB1c2goQGltcGxDb250ZW50LCAiYm9v
bCAke2NsYXNzTmFtZX1Qcm90b3R5cGU6OmdldE93blByb3BlcnR5RGVzY3JpcHRvcihKU09iamVj
dCogb2JqZWN0LCBFeGVjU3RhdGUqIGV4ZWMsIGNvbnN0IElkZW50aWZpZXImIHByb3BlcnR5TmFt
ZSwgUHJvcGVydHlEZXNjcmlwdG9yJiBkZXNjcmlwdG9yKVxuIik7CisgICAgICAgIHB1c2goQGlt
cGxDb250ZW50LCAiYm9vbCAke2NsYXNzTmFtZX1Qcm90b3R5cGU6OmdldE93blByb3BlcnR5RGVz
Y3JpcHRvcihKU09iamVjdCogb2JqZWN0LCBFeGVjU3RhdGUqIGV4ZWMsIFByb3BlcnR5TmFtZSBw
cm9wZXJ0eU5hbWUsIFByb3BlcnR5RGVzY3JpcHRvciYgZGVzY3JpcHRvcilcbiIpOwogICAgICAg
ICBwdXNoKEBpbXBsQ29udGVudCwgIntcbiIpOwogICAgICAgICBwdXNoKEBpbXBsQ29udGVudCwg
IiAgICAke2NsYXNzTmFtZX1Qcm90b3R5cGUqIHRoaXNPYmplY3QgPSBqc0Nhc3Q8JHtjbGFzc05h
bWV9UHJvdG90eXBlKj4ob2JqZWN0KTtcbiIpOwogCkBAIC0xNTEyLDcgKzE1MTAsNyBAQCBzdWIg
R2VuZXJhdGVJbXBsZW1lbnRhdGlvbgogICAgIH0KIAogICAgIGlmICgkZGF0YU5vZGUtPmV4dGVu
ZGVkQXR0cmlidXRlcy0+eyJKU0N1c3RvbU5hbWVkR2V0dGVyT25Qcm90b3R5cGUifSkgewotICAg
ICAgICBwdXNoKEBpbXBsQ29udGVudCwgInZvaWQgJHtjbGFzc05hbWV9UHJvdG90eXBlOjpwdXQo
SlNDZWxsKiBjZWxsLCBFeGVjU3RhdGUqIGV4ZWMsIGNvbnN0IElkZW50aWZpZXImIHByb3BlcnR5
TmFtZSwgSlNWYWx1ZSB2YWx1ZSwgUHV0UHJvcGVydHlTbG90JiBzbG90KVxuIik7CisgICAgICAg
IHB1c2goQGltcGxDb250ZW50LCAidm9pZCAke2NsYXNzTmFtZX1Qcm90b3R5cGU6OnB1dChKU0Nl
bGwqIGNlbGwsIEV4ZWNTdGF0ZSogZXhlYywgUHJvcGVydHlOYW1lIHByb3BlcnR5TmFtZSwgSlNW
YWx1ZSB2YWx1ZSwgUHV0UHJvcGVydHlTbG90JiBzbG90KVxuIik7CiAgICAgICAgIHB1c2goQGlt
cGxDb250ZW50LCAie1xuIik7CiAgICAgICAgIHB1c2goQGltcGxDb250ZW50LCAiICAgICR7Y2xh
c3NOYW1lfVByb3RvdHlwZSogdGhpc09iamVjdCA9IGpzQ2FzdDwke2NsYXNzTmFtZX1Qcm90b3R5
cGUqPihjZWxsKTtcbiIpOwogICAgICAgICBwdXNoKEBpbXBsQ29udGVudCwgIiAgICBpZiAodGhp
c09iamVjdC0+cHV0RGVsZWdhdGUoZXhlYywgcHJvcGVydHlOYW1lLCB2YWx1ZSwgc2xvdCkpXG4i
KTsKQEAgLTE2MzIsMTMgKzE2MzAsMTMgQEAgc3ViIEdlbmVyYXRlSW1wbGVtZW50YXRpb24KICAg
ICAjIEF0dHJpYnV0ZXMKICAgICBpZiAoJGhhc0dldHRlcikgewogICAgICAgICBpZiAoISRkYXRh
Tm9kZS0+ZXh0ZW5kZWRBdHRyaWJ1dGVzLT57IkpTSW5saW5lR2V0T3duUHJvcGVydHlTbG90In0g
JiYgISRkYXRhTm9kZS0+ZXh0ZW5kZWRBdHRyaWJ1dGVzLT57IkN1c3RvbUdldE93blByb3BlcnR5
U2xvdCJ9KSB7Ci0gICAgICAgICAgICBwdXNoKEBpbXBsQ29udGVudCwgImJvb2wgJHtjbGFzc05h
bWV9OjpnZXRPd25Qcm9wZXJ0eVNsb3QoSlNDZWxsKiBjZWxsLCBFeGVjU3RhdGUqIGV4ZWMsIGNv
bnN0IElkZW50aWZpZXImIHByb3BlcnR5TmFtZSwgUHJvcGVydHlTbG90JiBzbG90KVxuIik7Cisg
ICAgICAgICAgICBwdXNoKEBpbXBsQ29udGVudCwgImJvb2wgJHtjbGFzc05hbWV9OjpnZXRPd25Q
cm9wZXJ0eVNsb3QoSlNDZWxsKiBjZWxsLCBFeGVjU3RhdGUqIGV4ZWMsIFByb3BlcnR5TmFtZSBw
cm9wZXJ0eU5hbWUsIFByb3BlcnR5U2xvdCYgc2xvdClcbiIpOwogICAgICAgICAgICAgcHVzaChA
aW1wbENvbnRlbnQsICJ7XG4iKTsKICAgICAgICAgICAgIHB1c2goQGltcGxDb250ZW50LCAiICAg
ICR7Y2xhc3NOYW1lfSogdGhpc09iamVjdCA9IGpzQ2FzdDwke2NsYXNzTmFtZX0qPihjZWxsKTtc
biIpOwogICAgICAgICAgICAgcHVzaChAaW1wbENvbnRlbnQsICIgICAgQVNTRVJUX0dDX09CSkVD
VF9JTkhFUklUUyh0aGlzT2JqZWN0LCAmc19pbmZvKTtcbiIpOwogICAgICAgICAgICAgcHVzaChA
aW1wbENvbnRlbnQsIEdlbmVyYXRlR2V0T3duUHJvcGVydHlTbG90Qm9keSgkZGF0YU5vZGUsICRp
bnRlcmZhY2VOYW1lLCAkY2xhc3NOYW1lLCAkaW1wbENsYXNzTmFtZSwgJG51bUF0dHJpYnV0ZXMg
PiAwLCAwKSk7CiAgICAgICAgICAgICBwdXNoKEBpbXBsQ29udGVudCwgIn1cblxuIik7Ci0gICAg
ICAgICAgICBwdXNoKEBpbXBsQ29udGVudCwgImJvb2wgJHtjbGFzc05hbWV9OjpnZXRPd25Qcm9w
ZXJ0eURlc2NyaXB0b3IoSlNPYmplY3QqIG9iamVjdCwgRXhlY1N0YXRlKiBleGVjLCBjb25zdCBJ
ZGVudGlmaWVyJiBwcm9wZXJ0eU5hbWUsIFByb3BlcnR5RGVzY3JpcHRvciYgZGVzY3JpcHRvcilc
biIpOworICAgICAgICAgICAgcHVzaChAaW1wbENvbnRlbnQsICJib29sICR7Y2xhc3NOYW1lfTo6
Z2V0T3duUHJvcGVydHlEZXNjcmlwdG9yKEpTT2JqZWN0KiBvYmplY3QsIEV4ZWNTdGF0ZSogZXhl
YywgUHJvcGVydHlOYW1lIHByb3BlcnR5TmFtZSwgUHJvcGVydHlEZXNjcmlwdG9yJiBkZXNjcmlw
dG9yKVxuIik7CiAgICAgICAgICAgICBwdXNoKEBpbXBsQ29udGVudCwgIntcbiIpOwogICAgICAg
ICAgICAgcHVzaChAaW1wbENvbnRlbnQsICIgICAgJHtjbGFzc05hbWV9KiB0aGlzT2JqZWN0ID0g
anNDYXN0PCR7Y2xhc3NOYW1lfSo+KG9iamVjdCk7XG4iKTsKICAgICAgICAgICAgIHB1c2goQGlt
cGxDb250ZW50LCAiICAgIEFTU0VSVF9HQ19PQkpFQ1RfSU5IRVJJVFModGhpc09iamVjdCwgJnNf
aW5mbyk7XG4iKTsKQEAgLTE2NzQsNyArMTY3Miw3IEBAIHN1YiBHZW5lcmF0ZUltcGxlbWVudGF0
aW9uCiAgICAgICAgICAgICAgICAgbXkgJGF0dHJpYnV0ZUNvbmRpdGlvbmFsU3RyaW5nID0gJGNv
ZGVHZW5lcmF0b3ItPkdlbmVyYXRlQ29uZGl0aW9uYWxTdHJpbmcoJGF0dHJpYnV0ZS0+c2lnbmF0
dXJlKTsKICAgICAgICAgICAgICAgICBwdXNoKEBpbXBsQ29udGVudCwgIiNpZiAke2F0dHJpYnV0
ZUNvbmRpdGlvbmFsU3RyaW5nfVxuIikgaWYgJGF0dHJpYnV0ZUNvbmRpdGlvbmFsU3RyaW5nOwog
Ci0gICAgICAgICAgICAgICAgcHVzaChAaW1wbENvbnRlbnQsICJKU1ZhbHVlICR7Z2V0RnVuY3Rp
b25OYW1lfShFeGVjU3RhdGUqIGV4ZWMsIEpTVmFsdWUgc2xvdEJhc2UsIGNvbnN0IElkZW50aWZp
ZXImKVxuIik7CisgICAgICAgICAgICAgICAgcHVzaChAaW1wbENvbnRlbnQsICJKU1ZhbHVlICR7
Z2V0RnVuY3Rpb25OYW1lfShFeGVjU3RhdGUqIGV4ZWMsIEpTVmFsdWUgc2xvdEJhc2UsIFByb3Bl
cnR5TmFtZSlcbiIpOwogICAgICAgICAgICAgICAgIHB1c2goQGltcGxDb250ZW50LCAie1xuIik7
CiAgICAgICAgICAgICAgICAgcHVzaChAaW1wbENvbnRlbnQsICIgICAgJHtjbGFzc05hbWV9KiBj
YXN0ZWRUaGlzID0ganNDYXN0PCRjbGFzc05hbWUqPihhc09iamVjdChzbG90QmFzZSkpO1xuIik7
CiAKQEAgLTE3OTMsNyArMTc5MSw3IEBAIHN1YiBHZW5lcmF0ZUltcGxlbWVudGF0aW9uCiAgICAg
ICAgICAgICBpZiAoISRkYXRhTm9kZS0+ZXh0ZW5kZWRBdHRyaWJ1dGVzLT57Ik9taXRDb25zdHJ1
Y3RvciJ9KSB7CiAgICAgICAgICAgICAgICAgbXkgJGNvbnN0cnVjdG9yRnVuY3Rpb25OYW1lID0g
ImpzIiAuICRpbnRlcmZhY2VOYW1lIC4gIkNvbnN0cnVjdG9yIjsKIAotICAgICAgICAgICAgICAg
IHB1c2goQGltcGxDb250ZW50LCAiSlNWYWx1ZSAke2NvbnN0cnVjdG9yRnVuY3Rpb25OYW1lfShF
eGVjU3RhdGUqIGV4ZWMsIEpTVmFsdWUgc2xvdEJhc2UsIGNvbnN0IElkZW50aWZpZXImKVxuIik7
CisgICAgICAgICAgICAgICAgcHVzaChAaW1wbENvbnRlbnQsICJKU1ZhbHVlICR7Y29uc3RydWN0
b3JGdW5jdGlvbk5hbWV9KEV4ZWNTdGF0ZSogZXhlYywgSlNWYWx1ZSBzbG90QmFzZSwgUHJvcGVy
dHlOYW1lKVxuIik7CiAgICAgICAgICAgICAgICAgcHVzaChAaW1wbENvbnRlbnQsICJ7XG4iKTsK
ICAgICAgICAgICAgICAgICBwdXNoKEBpbXBsQ29udGVudCwgIiAgICAke2NsYXNzTmFtZX0qIGRv
bU9iamVjdCA9IGpzQ2FzdDwkY2xhc3NOYW1lKj4oYXNPYmplY3Qoc2xvdEJhc2UpKTtcbiIpOwog
CkBAIC0xODE5LDE0ICsxODE3LDEzIEBAIHN1YiBHZW5lcmF0ZUltcGxlbWVudGF0aW9uCiAKICAg
ICAgICAgaWYgKCRoYXNTZXR0ZXIpIHsKICAgICAgICAgICAgIGlmICghJGRhdGFOb2RlLT5leHRl
bmRlZEF0dHJpYnV0ZXMtPnsiQ3VzdG9tUHV0RnVuY3Rpb24ifSkgewotICAgICAgICAgICAgICAg
IHB1c2goQGltcGxDb250ZW50LCAidm9pZCAke2NsYXNzTmFtZX06OnB1dChKU0NlbGwqIGNlbGws
IEV4ZWNTdGF0ZSogZXhlYywgY29uc3QgSWRlbnRpZmllciYgcHJvcGVydHlOYW1lLCBKU1ZhbHVl
IHZhbHVlLCBQdXRQcm9wZXJ0eVNsb3QmIHNsb3QpXG4iKTsKKyAgICAgICAgICAgICAgICBwdXNo
KEBpbXBsQ29udGVudCwgInZvaWQgJHtjbGFzc05hbWV9OjpwdXQoSlNDZWxsKiBjZWxsLCBFeGVj
U3RhdGUqIGV4ZWMsIFByb3BlcnR5TmFtZSBwcm9wZXJ0eU5hbWUsIEpTVmFsdWUgdmFsdWUsIFB1
dFByb3BlcnR5U2xvdCYgc2xvdClcbiIpOwogICAgICAgICAgICAgICAgIHB1c2goQGltcGxDb250
ZW50LCAie1xuIik7CiAgICAgICAgICAgICAgICAgcHVzaChAaW1wbENvbnRlbnQsICIgICAgJHtj
bGFzc05hbWV9KiB0aGlzT2JqZWN0ID0ganNDYXN0PCR7Y2xhc3NOYW1lfSo+KGNlbGwpO1xuIik7
CiAgICAgICAgICAgICAgICAgcHVzaChAaW1wbENvbnRlbnQsICIgICAgQVNTRVJUX0dDX09CSkVD
VF9JTkhFUklUUyh0aGlzT2JqZWN0LCAmc19pbmZvKTtcbiIpOwogICAgICAgICAgICAgICAgIGlm
ICgkZGF0YU5vZGUtPmV4dGVuZGVkQXR0cmlidXRlcy0+eyJDdXN0b21JbmRleGVkU2V0dGVyIn0p
IHsKLSAgICAgICAgICAgICAgICAgICAgcHVzaChAaW1wbENvbnRlbnQsICIgICAgYm9vbCBvaztc
biIpOwotICAgICAgICAgICAgICAgICAgICBwdXNoKEBpbXBsQ29udGVudCwgIiAgICB1bnNpZ25l
ZCBpbmRleCA9IHByb3BlcnR5TmFtZS50b1VJbnQzMihvayk7XG4iKTsKLSAgICAgICAgICAgICAg
ICAgICAgcHVzaChAaW1wbENvbnRlbnQsICIgICAgaWYgKG9rKSB7XG4iKTsKKyAgICAgICAgICAg
ICAgICAgICAgcHVzaChAaW1wbENvbnRlbnQsICIgICAgdW5zaWduZWQgaW5kZXggPSBwcm9wZXJ0
eU5hbWUuYXNJbmRleCgpO1xuIik7CisgICAgICAgICAgICAgICAgICAgIHB1c2goQGltcGxDb250
ZW50LCAiICAgIGlmIChpbmRleCAhPSBQcm9wZXJ0eU5hbWU6Ok5vdEFuSW5kZXgpIHtcbiIpOwog
ICAgICAgICAgICAgICAgICAgICBwdXNoKEBpbXBsQ29udGVudCwgIiAgICAgICAgdGhpc09iamVj
dC0+aW5kZXhTZXR0ZXIoZXhlYywgaW5kZXgsIHZhbHVlKTtcbiIpOwogICAgICAgICAgICAgICAg
ICAgICBwdXNoKEBpbXBsQ29udGVudCwgIiAgICAgICAgcmV0dXJuO1xuIik7CiAgICAgICAgICAg
ICAgICAgICAgIHB1c2goQGltcGxDb250ZW50LCAiICAgIH1cbiIpOwpAQCAtMjE5OCw3ICsyMTk1
LDcgQEAgc3ViIEdlbmVyYXRlSW1wbGVtZW50YXRpb24KICAgICAgICAgICAgIH0KIAogICAgICAg
ICAgICAgIyBGSVhNRTogdGhpcyBjYXN0cyBpbnRvIGludCB0byBtYXRjaCBvdXIgcHJldmlvdXMg
YmVoYXZpb3Igd2hpY2ggdHVybmVkIDB4RkZGRkZGRkYgaW4gLTEgZm9yIE5vZGVGaWx0ZXIuU0hP
V19BTEwKLSAgICAgICAgICAgIHB1c2goQGltcGxDb250ZW50LCAiSlNWYWx1ZSAke2dldHRlcn0o
RXhlY1N0YXRlKiBleGVjLCBKU1ZhbHVlLCBjb25zdCBJZGVudGlmaWVyJilcbiIpOworICAgICAg
ICAgICAgcHVzaChAaW1wbENvbnRlbnQsICJKU1ZhbHVlICR7Z2V0dGVyfShFeGVjU3RhdGUqIGV4
ZWMsIEpTVmFsdWUsIFByb3BlcnR5TmFtZSlcbiIpOwogICAgICAgICAgICAgcHVzaChAaW1wbENv
bnRlbnQsICJ7XG4iKTsKICAgICAgICAgICAgIGlmICgkY29uc3RhbnQtPnR5cGUgZXEgIkRPTVN0
cmluZyIpIHsKICAgICAgICAgICAgICAgICBwdXNoKEBpbXBsQ29udGVudCwgIiAgICByZXR1cm4g
anNTdHJpbmdPck51bGwoZXhlYywgU3RyaW5nKCIgLiAkY29uc3RhbnQtPnZhbHVlIC4gIikpO1xu
Iik7CkBAIC0yMjQ3LDE0ICsyMjQ0LDE0IEBAIHN1YiBHZW5lcmF0ZUltcGxlbWVudGF0aW9uCiAK
ICAgICBpZiAoJGludGVyZmFjZU5hbWUgZXEgIkhUTUxQcm9wZXJ0aWVzQ29sbGVjdGlvbiIpIHsK
ICAgICAgICAgaWYgKCRkYXRhTm9kZS0+ZXh0ZW5kZWRBdHRyaWJ1dGVzLT57Ik5hbWVkR2V0dGVy
In0pIHsKLSAgICAgICAgICAgIHB1c2goQGltcGxDb250ZW50LCAiYm9vbCAke2NsYXNzTmFtZX06
OmNhbkdldEl0ZW1zRm9yTmFtZShFeGVjU3RhdGUqLCAkaW1wbENsYXNzTmFtZSogY29sbGVjdGlv
biwgY29uc3QgSWRlbnRpZmllciYgcHJvcGVydHlOYW1lKVxuIik7CisgICAgICAgICAgICBwdXNo
KEBpbXBsQ29udGVudCwgImJvb2wgJHtjbGFzc05hbWV9OjpjYW5HZXRJdGVtc0Zvck5hbWUoRXhl
Y1N0YXRlKiwgJGltcGxDbGFzc05hbWUqIGNvbGxlY3Rpb24sIFByb3BlcnR5TmFtZSBwcm9wZXJ0
eU5hbWUpXG4iKTsKICAgICAgICAgICAgIHB1c2goQGltcGxDb250ZW50LCAie1xuIik7Ci0gICAg
ICAgICAgICBwdXNoKEBpbXBsQ29udGVudCwgIiAgICByZXR1cm4gY29sbGVjdGlvbi0+aGFzTmFt
ZWRJdGVtKGlkZW50aWZpZXJUb0F0b21pY1N0cmluZyhwcm9wZXJ0eU5hbWUpKTtcbiIpOworICAg
ICAgICAgICAgcHVzaChAaW1wbENvbnRlbnQsICIgICAgcmV0dXJuIGNvbGxlY3Rpb24tPmhhc05h
bWVkSXRlbShwcm9wZXJ0eU5hbWVUb0F0b21pY1N0cmluZyhwcm9wZXJ0eU5hbWUpKTtcbiIpOwog
ICAgICAgICAgICAgcHVzaChAaW1wbENvbnRlbnQsICJ9XG5cbiIpOwotICAgICAgICAgICAgcHVz
aChAaW1wbENvbnRlbnQsICJKU1ZhbHVlICR7Y2xhc3NOYW1lfTo6bmFtZUdldHRlcihFeGVjU3Rh
dGUqIGV4ZWMsIEpTVmFsdWUgc2xvdEJhc2UsIGNvbnN0IElkZW50aWZpZXImIHByb3BlcnR5TmFt
ZSlcbiIpOworICAgICAgICAgICAgcHVzaChAaW1wbENvbnRlbnQsICJKU1ZhbHVlICR7Y2xhc3NO
YW1lfTo6bmFtZUdldHRlcihFeGVjU3RhdGUqIGV4ZWMsIEpTVmFsdWUgc2xvdEJhc2UsIFByb3Bl
cnR5TmFtZSBwcm9wZXJ0eU5hbWUpXG4iKTsKICAgICAgICAgICAgIHB1c2goQGltcGxDb250ZW50
LCAie1xuIik7CiAgICAgICAgICAgICBwdXNoKEBpbXBsQ29udGVudCwgIiAgICAke2NsYXNzTmFt
ZX0qIHRoaXNPYmogPSBqc0Nhc3Q8JGNsYXNzTmFtZSo+KGFzT2JqZWN0KHNsb3RCYXNlKSk7XG4i
KTsKLSAgICAgICAgICAgIHB1c2goQGltcGxDb250ZW50LCAiICAgIHJldHVybiB0b0pTKGV4ZWMs
IHRoaXNPYmotPmdsb2JhbE9iamVjdCgpLCBzdGF0aWNfY2FzdDwkaW1wbENsYXNzTmFtZSo+KHRo
aXNPYmotPmltcGwoKSktPm5hbWVkSXRlbShpZGVudGlmaWVyVG9BdG9taWNTdHJpbmcocHJvcGVy
dHlOYW1lKSkpO1xuIik7CisgICAgICAgICAgICBwdXNoKEBpbXBsQ29udGVudCwgIiAgICByZXR1
cm4gdG9KUyhleGVjLCB0aGlzT2JqLT5nbG9iYWxPYmplY3QoKSwgc3RhdGljX2Nhc3Q8JGltcGxD
bGFzc05hbWUqPih0aGlzT2JqLT5pbXBsKCkpLT5uYW1lZEl0ZW0ocHJvcGVydHlOYW1lVG9BdG9t
aWNTdHJpbmcocHJvcGVydHlOYW1lKSkpO1xuIik7CiAgICAgICAgICAgICBwdXNoKEBpbXBsQ29u
dGVudCwgIn1cblxuIik7CiAgICAgICAgIH0KICAgICB9CkBAIC0zMzg3LDggKzMzODQsOCBAQCBz
dWIgR2VuZXJhdGVDb25zdHJ1Y3RvckRlY2xhcmF0aW9uCiAgICAgcHVzaChAJG91dHB1dEFycmF5
LCAiICAgICAgICByZXR1cm4gcHRyO1xuIik7CiAgICAgcHVzaChAJG91dHB1dEFycmF5LCAiICAg
IH1cblxuIik7CiAKLSAgICBwdXNoKEAkb3V0cHV0QXJyYXksICIgICAgc3RhdGljIGJvb2wgZ2V0
T3duUHJvcGVydHlTbG90KEpTQzo6SlNDZWxsKiwgSlNDOjpFeGVjU3RhdGUqLCBjb25zdCBKU0M6
OklkZW50aWZpZXImLCBKU0M6OlByb3BlcnR5U2xvdCYpO1xuIik7Ci0gICAgcHVzaChAJG91dHB1
dEFycmF5LCAiICAgIHN0YXRpYyBib29sIGdldE93blByb3BlcnR5RGVzY3JpcHRvcihKU0M6OkpT
T2JqZWN0KiwgSlNDOjpFeGVjU3RhdGUqLCBjb25zdCBKU0M6OklkZW50aWZpZXImLCBKU0M6OlBy
b3BlcnR5RGVzY3JpcHRvciYpO1xuIik7CisgICAgcHVzaChAJG91dHB1dEFycmF5LCAiICAgIHN0
YXRpYyBib29sIGdldE93blByb3BlcnR5U2xvdChKU0M6OkpTQ2VsbCosIEpTQzo6RXhlY1N0YXRl
KiwgSlNDOjpQcm9wZXJ0eU5hbWUsIEpTQzo6UHJvcGVydHlTbG90Jik7XG4iKTsKKyAgICBwdXNo
KEAkb3V0cHV0QXJyYXksICIgICAgc3RhdGljIGJvb2wgZ2V0T3duUHJvcGVydHlEZXNjcmlwdG9y
KEpTQzo6SlNPYmplY3QqLCBKU0M6OkV4ZWNTdGF0ZSosIEpTQzo6UHJvcGVydHlOYW1lLCBKU0M6
OlByb3BlcnR5RGVzY3JpcHRvciYpO1xuIik7CiAgICAgcHVzaChAJG91dHB1dEFycmF5LCAiICAg
IHN0YXRpYyBjb25zdCBKU0M6OkNsYXNzSW5mbyBzX2luZm87XG4iKTsKIAogICAgIHB1c2goQCRv
dXRwdXRBcnJheSwgIiAgICBzdGF0aWMgSlNDOjpTdHJ1Y3R1cmUqIGNyZWF0ZVN0cnVjdHVyZShK
U0M6OkpTR2xvYmFsRGF0YSYgZ2xvYmFsRGF0YSwgSlNDOjpKU0dsb2JhbE9iamVjdCogZ2xvYmFs
T2JqZWN0LCBKU0M6OkpTVmFsdWUgcHJvdG90eXBlKVxuIik7CkBAIC0zNTA0LDEyICszNTAxLDEy
IEBAIHN1YiBHZW5lcmF0ZUNvbnN0cnVjdG9yRGVmaW5pdGlvbgogCiAgICAgICAgIG15ICRraW5k
ID0gJGhhc1N0YXRpY0Z1bmN0aW9ucyA/ICJQcm9wZXJ0eSIgOiAiVmFsdWUiOwogCi0gICAgICAg
IHB1c2goQCRvdXRwdXRBcnJheSwgImJvb2wgJHtjb25zdHJ1Y3RvckNsYXNzTmFtZX06OmdldE93
blByb3BlcnR5U2xvdChKU0NlbGwqIGNlbGwsIEV4ZWNTdGF0ZSogZXhlYywgY29uc3QgSWRlbnRp
ZmllciYgcHJvcGVydHlOYW1lLCBQcm9wZXJ0eVNsb3QmIHNsb3QpXG4iKTsKKyAgICAgICAgcHVz
aChAJG91dHB1dEFycmF5LCAiYm9vbCAke2NvbnN0cnVjdG9yQ2xhc3NOYW1lfTo6Z2V0T3duUHJv
cGVydHlTbG90KEpTQ2VsbCogY2VsbCwgRXhlY1N0YXRlKiBleGVjLCBQcm9wZXJ0eU5hbWUgcHJv
cGVydHlOYW1lLCBQcm9wZXJ0eVNsb3QmIHNsb3QpXG4iKTsKICAgICAgICAgcHVzaChAJG91dHB1
dEFycmF5LCAie1xuIik7CiAgICAgICAgIHB1c2goQCRvdXRwdXRBcnJheSwgIiAgICByZXR1cm4g
Z2V0U3RhdGljJHtraW5kfVNsb3Q8JHtjb25zdHJ1Y3RvckNsYXNzTmFtZX0sIEpTRE9NV3JhcHBl
cj4oZXhlYywgJiR7Y29uc3RydWN0b3JDbGFzc05hbWV9VGFibGUsIGpzQ2FzdDwke2NvbnN0cnVj
dG9yQ2xhc3NOYW1lfSo+KGNlbGwpLCBwcm9wZXJ0eU5hbWUsIHNsb3QpO1xuIik7CiAgICAgICAg
IHB1c2goQCRvdXRwdXRBcnJheSwgIn1cblxuIik7CiAKLSAgICAgICAgcHVzaChAJG91dHB1dEFy
cmF5LCAiYm9vbCAke2NvbnN0cnVjdG9yQ2xhc3NOYW1lfTo6Z2V0T3duUHJvcGVydHlEZXNjcmlw
dG9yKEpTT2JqZWN0KiBvYmplY3QsIEV4ZWNTdGF0ZSogZXhlYywgY29uc3QgSWRlbnRpZmllciYg
cHJvcGVydHlOYW1lLCBQcm9wZXJ0eURlc2NyaXB0b3ImIGRlc2NyaXB0b3IpXG4iKTsKKyAgICAg
ICAgcHVzaChAJG91dHB1dEFycmF5LCAiYm9vbCAke2NvbnN0cnVjdG9yQ2xhc3NOYW1lfTo6Z2V0
T3duUHJvcGVydHlEZXNjcmlwdG9yKEpTT2JqZWN0KiBvYmplY3QsIEV4ZWNTdGF0ZSogZXhlYywg
UHJvcGVydHlOYW1lIHByb3BlcnR5TmFtZSwgUHJvcGVydHlEZXNjcmlwdG9yJiBkZXNjcmlwdG9y
KVxuIik7CiAgICAgICAgIHB1c2goQCRvdXRwdXRBcnJheSwgIntcbiIpOwogICAgICAgICBwdXNo
KEAkb3V0cHV0QXJyYXksICIgICAgcmV0dXJuIGdldFN0YXRpYyR7a2luZH1EZXNjcmlwdG9yPCR7
Y29uc3RydWN0b3JDbGFzc05hbWV9LCBKU0RPTVdyYXBwZXI+KGV4ZWMsICYke2NvbnN0cnVjdG9y
Q2xhc3NOYW1lfVRhYmxlLCBqc0Nhc3Q8JHtjb25zdHJ1Y3RvckNsYXNzTmFtZX0qPihvYmplY3Qp
LCBwcm9wZXJ0eU5hbWUsIGRlc2NyaXB0b3IpO1xuIik7CiAgICAgICAgIHB1c2goQCRvdXRwdXRB
cnJheSwgIn1cblxuIik7CkluZGV4OiBTb3VyY2UvV2ViQ29yZS9icmlkZ2UvcnVudGltZV9hcnJh
eS5jcHAKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PQotLS0gU291cmNlL1dlYkNvcmUvYnJpZGdlL3J1bnRpbWVfYXJyYXku
Y3BwCShyZXZpc2lvbiAxMTY2NjcpCisrKyBTb3VyY2UvV2ViQ29yZS9icmlkZ2UvcnVudGltZV9h
cnJheS5jcHAJKHdvcmtpbmcgY29weSkKQEAgLTYwLDcgKzYwLDcgQEAgdm9pZCBSdW50aW1lQXJy
YXk6OmRlc3Ryb3koSlNDZWxsKiBjZWxsKQogICAgIGpzQ2FzdDxSdW50aW1lQXJyYXkqPihjZWxs
KS0+UnVudGltZUFycmF5Ojp+UnVudGltZUFycmF5KCk7CiB9CiAKLUpTVmFsdWUgUnVudGltZUFy
cmF5OjpsZW5ndGhHZXR0ZXIoRXhlY1N0YXRlKiwgSlNWYWx1ZSBzbG90QmFzZSwgY29uc3QgSWRl
bnRpZmllciYpCitKU1ZhbHVlIFJ1bnRpbWVBcnJheTo6bGVuZ3RoR2V0dGVyKEV4ZWNTdGF0ZSos
IEpTVmFsdWUgc2xvdEJhc2UsIFByb3BlcnR5TmFtZSkKIHsKICAgICBSdW50aW1lQXJyYXkqIHRo
aXNPYmogPSBzdGF0aWNfY2FzdDxSdW50aW1lQXJyYXkqPihhc09iamVjdChzbG90QmFzZSkpOwog
ICAgIHJldHVybiBqc051bWJlcih0aGlzT2JqLT5nZXRMZW5ndGgoKSk7CkBAIC04NSw3ICs4NSw3
IEBAIHZvaWQgUnVudGltZUFycmF5OjpnZXRPd25Qcm9wZXJ0eU5hbWVzKEoKICAgICBKU09iamVj
dDo6Z2V0T3duUHJvcGVydHlOYW1lcyh0aGlzT2JqZWN0LCBleGVjLCBwcm9wZXJ0eU5hbWVzLCBt
b2RlKTsKIH0KIAotYm9vbCBSdW50aW1lQXJyYXk6OmdldE93blByb3BlcnR5U2xvdChKU0NlbGwq
IGNlbGwsIEV4ZWNTdGF0ZSogZXhlYywgY29uc3QgSWRlbnRpZmllciYgcHJvcGVydHlOYW1lLCBQ
cm9wZXJ0eVNsb3QmIHNsb3QpCitib29sIFJ1bnRpbWVBcnJheTo6Z2V0T3duUHJvcGVydHlTbG90
KEpTQ2VsbCogY2VsbCwgRXhlY1N0YXRlKiBleGVjLCBQcm9wZXJ0eU5hbWUgcHJvcGVydHlOYW1l
LCBQcm9wZXJ0eVNsb3QmIHNsb3QpCiB7CiAgICAgUnVudGltZUFycmF5KiB0aGlzT2JqZWN0ID0g
anNDYXN0PFJ1bnRpbWVBcnJheSo+KGNlbGwpOwogICAgIGlmIChwcm9wZXJ0eU5hbWUgPT0gZXhl
Yy0+cHJvcGVydHlOYW1lcygpLmxlbmd0aCkgewpAQCAtOTMsMTkgKzkzLDE3IEBAIGJvb2wgUnVu
dGltZUFycmF5OjpnZXRPd25Qcm9wZXJ0eVNsb3QoSlMKICAgICAgICAgcmV0dXJuIHRydWU7CiAg
ICAgfQogICAgIAotICAgIGJvb2wgb2s7Ci0gICAgdW5zaWduZWQgaW5kZXggPSBwcm9wZXJ0eU5h
bWUudG9BcnJheUluZGV4KG9rKTsKLSAgICBpZiAob2spIHsKLSAgICAgICAgaWYgKGluZGV4IDwg
dGhpc09iamVjdC0+Z2V0TGVuZ3RoKCkpIHsKLSAgICAgICAgICAgIHNsb3Quc2V0Q3VzdG9tSW5k
ZXgodGhpc09iamVjdCwgaW5kZXgsIHRoaXNPYmplY3QtPmluZGV4R2V0dGVyKTsKLSAgICAgICAg
ICAgIHJldHVybiB0cnVlOwotICAgICAgICB9CisgICAgdW5zaWduZWQgaW5kZXggPSBwcm9wZXJ0
eU5hbWUuYXNJbmRleCgpOworICAgIGlmIChpbmRleCA8IHRoaXNPYmplY3QtPmdldExlbmd0aCgp
KSB7CisgICAgICAgIEFTU0VSVChpbmRleCAhPSBQcm9wZXJ0eU5hbWU6Ok5vdEFuSW5kZXgpOwor
ICAgICAgICBzbG90LnNldEN1c3RvbUluZGV4KHRoaXNPYmplY3QsIGluZGV4LCB0aGlzT2JqZWN0
LT5pbmRleEdldHRlcik7CisgICAgICAgIHJldHVybiB0cnVlOwogICAgIH0KICAgICAKICAgICBy
ZXR1cm4gSlNPYmplY3Q6OmdldE93blByb3BlcnR5U2xvdCh0aGlzT2JqZWN0LCBleGVjLCBwcm9w
ZXJ0eU5hbWUsIHNsb3QpOwogfQogCi1ib29sIFJ1bnRpbWVBcnJheTo6Z2V0T3duUHJvcGVydHlE
ZXNjcmlwdG9yKEpTT2JqZWN0KiBvYmplY3QsIEV4ZWNTdGF0ZSogZXhlYywgY29uc3QgSWRlbnRp
ZmllciYgcHJvcGVydHlOYW1lLCBQcm9wZXJ0eURlc2NyaXB0b3ImIGRlc2NyaXB0b3IpCitib29s
IFJ1bnRpbWVBcnJheTo6Z2V0T3duUHJvcGVydHlEZXNjcmlwdG9yKEpTT2JqZWN0KiBvYmplY3Qs
IEV4ZWNTdGF0ZSogZXhlYywgUHJvcGVydHlOYW1lIHByb3BlcnR5TmFtZSwgUHJvcGVydHlEZXNj
cmlwdG9yJiBkZXNjcmlwdG9yKQogewogICAgIFJ1bnRpbWVBcnJheSogdGhpc09iamVjdCA9IGpz
Q2FzdDxSdW50aW1lQXJyYXkqPihvYmplY3QpOwogICAgIGlmIChwcm9wZXJ0eU5hbWUgPT0gZXhl
Yy0+cHJvcGVydHlOYW1lcygpLmxlbmd0aCkgewpAQCAtMTE1LDE1ICsxMTMsMTMgQEAgYm9vbCBS
dW50aW1lQXJyYXk6OmdldE93blByb3BlcnR5RGVzY3JpcAogICAgICAgICByZXR1cm4gdHJ1ZTsK
ICAgICB9CiAgICAgCi0gICAgYm9vbCBvazsKLSAgICB1bnNpZ25lZCBpbmRleCA9IHByb3BlcnR5
TmFtZS50b0FycmF5SW5kZXgob2spOwotICAgIGlmIChvaykgewotICAgICAgICBpZiAoaW5kZXgg
PCB0aGlzT2JqZWN0LT5nZXRMZW5ndGgoKSkgewotICAgICAgICAgICAgUHJvcGVydHlTbG90IHNs
b3Q7Ci0gICAgICAgICAgICBzbG90LnNldEN1c3RvbUluZGV4KHRoaXNPYmplY3QsIGluZGV4LCBp
bmRleEdldHRlcik7Ci0gICAgICAgICAgICBkZXNjcmlwdG9yLnNldERlc2NyaXB0b3Ioc2xvdC5n
ZXRWYWx1ZShleGVjLCBwcm9wZXJ0eU5hbWUpLCBEb250RGVsZXRlIHwgRG9udEVudW0pOwotICAg
ICAgICAgICAgcmV0dXJuIHRydWU7Ci0gICAgICAgIH0KKyAgICB1bnNpZ25lZCBpbmRleCA9IHBy
b3BlcnR5TmFtZS5hc0luZGV4KCk7CisgICAgaWYgKGluZGV4IDwgdGhpc09iamVjdC0+Z2V0TGVu
Z3RoKCkpIHsKKyAgICAgICAgQVNTRVJUKGluZGV4ICE9IFByb3BlcnR5TmFtZTo6Tm90QW5JbmRl
eCk7CisgICAgICAgIFByb3BlcnR5U2xvdCBzbG90OworICAgICAgICBzbG90LnNldEN1c3RvbUlu
ZGV4KHRoaXNPYmplY3QsIGluZGV4LCBpbmRleEdldHRlcik7CisgICAgICAgIGRlc2NyaXB0b3Iu
c2V0RGVzY3JpcHRvcihzbG90LmdldFZhbHVlKGV4ZWMsIHByb3BlcnR5TmFtZSksIERvbnREZWxl
dGUgfCBEb250RW51bSk7CisgICAgICAgIHJldHVybiB0cnVlOwogICAgIH0KICAgICAKICAgICBy
ZXR1cm4gSlNPYmplY3Q6OmdldE93blByb3BlcnR5RGVzY3JpcHRvcih0aGlzT2JqZWN0LCBleGVj
LCBwcm9wZXJ0eU5hbWUsIGRlc2NyaXB0b3IpOwpAQCAtMTQwLDcgKzEzNiw3IEBAIGJvb2wgUnVu
dGltZUFycmF5OjpnZXRPd25Qcm9wZXJ0eVNsb3RCeUkKICAgICByZXR1cm4gSlNPYmplY3Q6Omdl
dE93blByb3BlcnR5U2xvdEJ5SW5kZXgodGhpc09iamVjdCwgZXhlYywgaW5kZXgsIHNsb3QpOwog
fQogCi12b2lkIFJ1bnRpbWVBcnJheTo6cHV0KEpTQ2VsbCogY2VsbCwgRXhlY1N0YXRlKiBleGVj
LCBjb25zdCBJZGVudGlmaWVyJiBwcm9wZXJ0eU5hbWUsIEpTVmFsdWUgdmFsdWUsIFB1dFByb3Bl
cnR5U2xvdCYgc2xvdCkKK3ZvaWQgUnVudGltZUFycmF5OjpwdXQoSlNDZWxsKiBjZWxsLCBFeGVj
U3RhdGUqIGV4ZWMsIFByb3BlcnR5TmFtZSBwcm9wZXJ0eU5hbWUsIEpTVmFsdWUgdmFsdWUsIFB1
dFByb3BlcnR5U2xvdCYgc2xvdCkKIHsKICAgICBSdW50aW1lQXJyYXkqIHRoaXNPYmplY3QgPSBq
c0Nhc3Q8UnVudGltZUFycmF5Kj4oY2VsbCk7CiAgICAgaWYgKHByb3BlcnR5TmFtZSA9PSBleGVj
LT5wcm9wZXJ0eU5hbWVzKCkubGVuZ3RoKSB7CkBAIC0xNDgsOSArMTQ0LDggQEAgdm9pZCBSdW50
aW1lQXJyYXk6OnB1dChKU0NlbGwqIGNlbGwsIEV4ZQogICAgICAgICByZXR1cm47CiAgICAgfQog
ICAgIAotICAgIGJvb2wgb2s7Ci0gICAgdW5zaWduZWQgaW5kZXggPSBwcm9wZXJ0eU5hbWUudG9B
cnJheUluZGV4KG9rKTsKLSAgICBpZiAob2spIHsKKyAgICB1bnNpZ25lZCBpbmRleCA9IHByb3Bl
cnR5TmFtZS5hc0luZGV4KCk7CisgICAgaWYgKGluZGV4ICE9IFByb3BlcnR5TmFtZTo6Tm90QW5J
bmRleCkgewogICAgICAgICB0aGlzT2JqZWN0LT5nZXRDb25jcmV0ZUFycmF5KCktPnNldFZhbHVl
QXQoZXhlYywgaW5kZXgsIHZhbHVlKTsKICAgICAgICAgcmV0dXJuOwogICAgIH0KQEAgLTE2OSw3
ICsxNjQsNyBAQCB2b2lkIFJ1bnRpbWVBcnJheTo6cHV0QnlJbmRleChKU0NlbGwqIGNlCiAgICAg
dGhpc09iamVjdC0+Z2V0Q29uY3JldGVBcnJheSgpLT5zZXRWYWx1ZUF0KGV4ZWMsIGluZGV4LCB2
YWx1ZSk7CiB9CiAKLWJvb2wgUnVudGltZUFycmF5OjpkZWxldGVQcm9wZXJ0eShKU0NlbGwqLCBF
eGVjU3RhdGUqLCBjb25zdCBJZGVudGlmaWVyJikKK2Jvb2wgUnVudGltZUFycmF5OjpkZWxldGVQ
cm9wZXJ0eShKU0NlbGwqLCBFeGVjU3RhdGUqLCBQcm9wZXJ0eU5hbWUpCiB7CiAgICAgcmV0dXJu
IGZhbHNlOwogfQpJbmRleDogU291cmNlL1dlYkNvcmUvYnJpZGdlL3J1bnRpbWVfYXJyYXkuaAo9
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09Ci0tLSBTb3VyY2UvV2ViQ29yZS9icmlkZ2UvcnVudGltZV9hcnJheS5oCShyZXZp
c2lvbiAxMTY2NjcpCisrKyBTb3VyY2UvV2ViQ29yZS9icmlkZ2UvcnVudGltZV9hcnJheS5oCSh3
b3JraW5nIGNvcHkpCkBAIC01MSwxMyArNTEsMTMgQEAgcHVibGljOgogICAgIHN0YXRpYyB2b2lk
IGRlc3Ryb3koSlNDZWxsKik7CiAKICAgICBzdGF0aWMgdm9pZCBnZXRPd25Qcm9wZXJ0eU5hbWVz
KEpTT2JqZWN0KiwgRXhlY1N0YXRlKiwgUHJvcGVydHlOYW1lQXJyYXkmLCBFbnVtZXJhdGlvbk1v
ZGUpOwotICAgIHN0YXRpYyBib29sIGdldE93blByb3BlcnR5U2xvdChKU0NlbGwqLCBFeGVjU3Rh
dGUqLCBjb25zdCBJZGVudGlmaWVyJiwgUHJvcGVydHlTbG90Jik7CisgICAgc3RhdGljIGJvb2wg
Z2V0T3duUHJvcGVydHlTbG90KEpTQ2VsbCosIEV4ZWNTdGF0ZSosIFByb3BlcnR5TmFtZSwgUHJv
cGVydHlTbG90Jik7CiAgICAgc3RhdGljIGJvb2wgZ2V0T3duUHJvcGVydHlTbG90QnlJbmRleChK
U0NlbGwqLCBFeGVjU3RhdGUqLCB1bnNpZ25lZCwgUHJvcGVydHlTbG90Jik7Ci0gICAgc3RhdGlj
IGJvb2wgZ2V0T3duUHJvcGVydHlEZXNjcmlwdG9yKEpTT2JqZWN0KiwgRXhlY1N0YXRlKiwgY29u
c3QgSWRlbnRpZmllciYsIFByb3BlcnR5RGVzY3JpcHRvciYpOwotICAgIHN0YXRpYyB2b2lkIHB1
dChKU0NlbGwqLCBFeGVjU3RhdGUqLCBjb25zdCBJZGVudGlmaWVyJiBwcm9wZXJ0eU5hbWUsIEpT
VmFsdWUsIFB1dFByb3BlcnR5U2xvdCYpOworICAgIHN0YXRpYyBib29sIGdldE93blByb3BlcnR5
RGVzY3JpcHRvcihKU09iamVjdCosIEV4ZWNTdGF0ZSosIFByb3BlcnR5TmFtZSwgUHJvcGVydHlE
ZXNjcmlwdG9yJik7CisgICAgc3RhdGljIHZvaWQgcHV0KEpTQ2VsbCosIEV4ZWNTdGF0ZSosIFBy
b3BlcnR5TmFtZSwgSlNWYWx1ZSwgUHV0UHJvcGVydHlTbG90Jik7CiAgICAgc3RhdGljIHZvaWQg
cHV0QnlJbmRleChKU0NlbGwqLCBFeGVjU3RhdGUqLCB1bnNpZ25lZCBwcm9wZXJ0eU5hbWUsIEpT
VmFsdWUsIGJvb2wgc2hvdWxkVGhyb3cpOwogICAgIAotICAgIHN0YXRpYyBib29sIGRlbGV0ZVBy
b3BlcnR5KEpTQ2VsbCosIEV4ZWNTdGF0ZSosIGNvbnN0IElkZW50aWZpZXIgJnByb3BlcnR5TmFt
ZSk7CisgICAgc3RhdGljIGJvb2wgZGVsZXRlUHJvcGVydHkoSlNDZWxsKiwgRXhlY1N0YXRlKiwg
UHJvcGVydHlOYW1lKTsKICAgICBzdGF0aWMgYm9vbCBkZWxldGVQcm9wZXJ0eUJ5SW5kZXgoSlND
ZWxsKiwgRXhlY1N0YXRlKiwgdW5zaWduZWQgcHJvcGVydHlOYW1lKTsKICAgICAKICAgICB1bnNp
Z25lZCBnZXRMZW5ndGgoKSBjb25zdCB7IHJldHVybiBtX2FycmF5LT5nZXRMZW5ndGgoKTsgfQpA
QCAtODMsNyArODMsNyBAQCBwcm90ZWN0ZWQ6CiAKIHByaXZhdGU6CiAgICAgUnVudGltZUFycmF5
KEV4ZWNTdGF0ZSosIFN0cnVjdHVyZSopOwotICAgIHN0YXRpYyBKU1ZhbHVlIGxlbmd0aEdldHRl
cihFeGVjU3RhdGUqLCBKU1ZhbHVlLCBjb25zdCBJZGVudGlmaWVyJik7CisgICAgc3RhdGljIEpT
VmFsdWUgbGVuZ3RoR2V0dGVyKEV4ZWNTdGF0ZSosIEpTVmFsdWUsIFByb3BlcnR5TmFtZSk7CiAg
ICAgc3RhdGljIEpTVmFsdWUgaW5kZXhHZXR0ZXIoRXhlY1N0YXRlKiwgSlNWYWx1ZSwgdW5zaWdu
ZWQpOwogCiAgICAgQmluZGluZ3NBcnJheSogbV9hcnJheTsKSW5kZXg6IFNvdXJjZS9XZWJDb3Jl
L2JyaWRnZS9ydW50aW1lX21ldGhvZC5jcHAKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL1dlYkNvcmUv
YnJpZGdlL3J1bnRpbWVfbWV0aG9kLmNwcAkocmV2aXNpb24gMTE2NjY3KQorKysgU291cmNlL1dl
YkNvcmUvYnJpZGdlL3J1bnRpbWVfbWV0aG9kLmNwcAkod29ya2luZyBjb3B5KQpAQCAtNTUsMTMg
KzU1LDEzIEBAIHZvaWQgUnVudGltZU1ldGhvZDo6ZGVzdHJveShKU0NlbGwqIGNlbGwKICAgICBq
c0Nhc3Q8UnVudGltZU1ldGhvZCo+KGNlbGwpLT5SdW50aW1lTWV0aG9kOjp+UnVudGltZU1ldGhv
ZCgpOwogfQogCi12b2lkIFJ1bnRpbWVNZXRob2Q6OmZpbmlzaENyZWF0aW9uKEpTR2xvYmFsRGF0
YSYgZ2xvYmFsRGF0YSwgY29uc3QgSWRlbnRpZmllciYgaWRlbnQpCit2b2lkIFJ1bnRpbWVNZXRo
b2Q6OmZpbmlzaENyZWF0aW9uKEpTR2xvYmFsRGF0YSYgZ2xvYmFsRGF0YSwgY29uc3QgVVN0cmlu
ZyYgaWRlbnQpCiB7CiAgICAgQmFzZTo6ZmluaXNoQ3JlYXRpb24oZ2xvYmFsRGF0YSwgaWRlbnQp
OwogICAgIEFTU0VSVChpbmhlcml0cygmc19pbmZvKSk7CiB9CiAKLUpTVmFsdWUgUnVudGltZU1l
dGhvZDo6bGVuZ3RoR2V0dGVyKEV4ZWNTdGF0ZSosIEpTVmFsdWUgc2xvdEJhc2UsIGNvbnN0IElk
ZW50aWZpZXImKQorSlNWYWx1ZSBSdW50aW1lTWV0aG9kOjpsZW5ndGhHZXR0ZXIoRXhlY1N0YXRl
KiwgSlNWYWx1ZSBzbG90QmFzZSwgUHJvcGVydHlOYW1lKQogewogICAgIFJ1bnRpbWVNZXRob2Qq
IHRoaXNPYmogPSBzdGF0aWNfY2FzdDxSdW50aW1lTWV0aG9kKj4oYXNPYmplY3Qoc2xvdEJhc2Up
KTsKIApAQCAtNzQsNyArNzQsNyBAQCBKU1ZhbHVlIFJ1bnRpbWVNZXRob2Q6Omxlbmd0aEdldHRl
cihFeGVjCiAgICAgcmV0dXJuIGpzTnVtYmVyKHRoaXNPYmotPl9tZXRob2RMaXN0LT5hdCgwKS0+
bnVtUGFyYW1ldGVycygpKTsKIH0KIAotYm9vbCBSdW50aW1lTWV0aG9kOjpnZXRPd25Qcm9wZXJ0
eVNsb3QoSlNDZWxsKiBjZWxsLCBFeGVjU3RhdGUqIGV4ZWMsIGNvbnN0IElkZW50aWZpZXImIHBy
b3BlcnR5TmFtZSwgUHJvcGVydHlTbG90ICZzbG90KQorYm9vbCBSdW50aW1lTWV0aG9kOjpnZXRP
d25Qcm9wZXJ0eVNsb3QoSlNDZWxsKiBjZWxsLCBFeGVjU3RhdGUqIGV4ZWMsIFByb3BlcnR5TmFt
ZSBwcm9wZXJ0eU5hbWUsIFByb3BlcnR5U2xvdCAmc2xvdCkKIHsKICAgICBSdW50aW1lTWV0aG9k
KiB0aGlzT2JqZWN0ID0ganNDYXN0PFJ1bnRpbWVNZXRob2QqPihjZWxsKTsKICAgICBpZiAocHJv
cGVydHlOYW1lID09IGV4ZWMtPnByb3BlcnR5TmFtZXMoKS5sZW5ndGgpIHsKQEAgLTg1LDcgKzg1
LDcgQEAgYm9vbCBSdW50aW1lTWV0aG9kOjpnZXRPd25Qcm9wZXJ0eVNsb3QoSgogICAgIHJldHVy
biBJbnRlcm5hbEZ1bmN0aW9uOjpnZXRPd25Qcm9wZXJ0eVNsb3QodGhpc09iamVjdCwgZXhlYywg
cHJvcGVydHlOYW1lLCBzbG90KTsKIH0KIAotYm9vbCBSdW50aW1lTWV0aG9kOjpnZXRPd25Qcm9w
ZXJ0eURlc2NyaXB0b3IoSlNPYmplY3QqIG9iamVjdCwgRXhlY1N0YXRlKiBleGVjLCBjb25zdCBJ
ZGVudGlmaWVyJiBwcm9wZXJ0eU5hbWUsIFByb3BlcnR5RGVzY3JpcHRvciAmZGVzY3JpcHRvcikK
K2Jvb2wgUnVudGltZU1ldGhvZDo6Z2V0T3duUHJvcGVydHlEZXNjcmlwdG9yKEpTT2JqZWN0KiBv
YmplY3QsIEV4ZWNTdGF0ZSogZXhlYywgUHJvcGVydHlOYW1lIHByb3BlcnR5TmFtZSwgUHJvcGVy
dHlEZXNjcmlwdG9yICZkZXNjcmlwdG9yKQogewogICAgIFJ1bnRpbWVNZXRob2QqIHRoaXNPYmpl
Y3QgPSBqc0Nhc3Q8UnVudGltZU1ldGhvZCo+KG9iamVjdCk7CiAgICAgaWYgKHByb3BlcnR5TmFt
ZSA9PSBleGVjLT5wcm9wZXJ0eU5hbWVzKCkubGVuZ3RoKSB7CkluZGV4OiBTb3VyY2UvV2ViQ29y
ZS9icmlkZ2UvcnVudGltZV9tZXRob2QuaAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2ViQ29yZS9i
cmlkZ2UvcnVudGltZV9tZXRob2QuaAkocmV2aXNpb24gMTE2NjY3KQorKysgU291cmNlL1dlYkNv
cmUvYnJpZGdlL3J1bnRpbWVfbWV0aG9kLmgJKHdvcmtpbmcgY29weSkKQEAgLTM5LDcgKzM5LDcg
QEAgcHVibGljOgogCiAgICAgc3RhdGljIHZvaWQgZGVzdHJveShKU0NlbGwqKTsKIAotICAgIHN0
YXRpYyBSdW50aW1lTWV0aG9kKiBjcmVhdGUoRXhlY1N0YXRlKiBleGVjLCBKU0dsb2JhbE9iamVj
dCogZ2xvYmFsT2JqZWN0LCBTdHJ1Y3R1cmUqIHN0cnVjdHVyZSwgY29uc3QgSWRlbnRpZmllciYg
bmFtZSwgQmluZGluZ3M6Ok1ldGhvZExpc3QmIG1ldGhvZExpc3QpCisgICAgc3RhdGljIFJ1bnRp
bWVNZXRob2QqIGNyZWF0ZShFeGVjU3RhdGUqIGV4ZWMsIEpTR2xvYmFsT2JqZWN0KiBnbG9iYWxP
YmplY3QsIFN0cnVjdHVyZSogc3RydWN0dXJlLCBjb25zdCBVU3RyaW5nJiBuYW1lLCBCaW5kaW5n
czo6TWV0aG9kTGlzdCYgbWV0aG9kTGlzdCkKICAgICB7CiAgICAgICAgIFJ1bnRpbWVNZXRob2Qq
IG1ldGhvZCA9IG5ldyAoTm90TnVsbCwgYWxsb2NhdGVDZWxsPFJ1bnRpbWVNZXRob2Q+KCpleGVj
LT5oZWFwKCkpKSBSdW50aW1lTWV0aG9kKGdsb2JhbE9iamVjdCwgc3RydWN0dXJlLCBtZXRob2RM
aXN0KTsKICAgICAgICAgbWV0aG9kLT5maW5pc2hDcmVhdGlvbihleGVjLT5nbG9iYWxEYXRhKCks
IG5hbWUpOwpAQCAtNjIsMTUgKzYyLDE1IEBAIHB1YmxpYzoKIAogcHJvdGVjdGVkOgogICAgIFJ1
bnRpbWVNZXRob2QoSlNHbG9iYWxPYmplY3QqLCBTdHJ1Y3R1cmUqLCBCaW5kaW5nczo6TWV0aG9k
TGlzdCYpOwotICAgIHZvaWQgZmluaXNoQ3JlYXRpb24oSlNHbG9iYWxEYXRhJiwgY29uc3QgSWRl
bnRpZmllciYpOworICAgIHZvaWQgZmluaXNoQ3JlYXRpb24oSlNHbG9iYWxEYXRhJiwgY29uc3Qg
VVN0cmluZyYpOwogICAgIHN0YXRpYyBjb25zdCB1bnNpZ25lZCBTdHJ1Y3R1cmVGbGFncyA9IE92
ZXJyaWRlc0dldE93blByb3BlcnR5U2xvdCB8IEludGVybmFsRnVuY3Rpb246OlN0cnVjdHVyZUZs
YWdzOwogICAgIHN0YXRpYyBDYWxsVHlwZSBnZXRDYWxsRGF0YShKU0NlbGwqLCBDYWxsRGF0YSYp
OwogCi0gICAgc3RhdGljIGJvb2wgZ2V0T3duUHJvcGVydHlTbG90KEpTQ2VsbCosIEV4ZWNTdGF0
ZSosIGNvbnN0IElkZW50aWZpZXImLCBQcm9wZXJ0eVNsb3QmKTsKLSAgICBzdGF0aWMgYm9vbCBn
ZXRPd25Qcm9wZXJ0eURlc2NyaXB0b3IoSlNPYmplY3QqLCBFeGVjU3RhdGUqLCBjb25zdCBJZGVu
dGlmaWVyJiwgUHJvcGVydHlEZXNjcmlwdG9yJik7CisgICAgc3RhdGljIGJvb2wgZ2V0T3duUHJv
cGVydHlTbG90KEpTQ2VsbCosIEV4ZWNTdGF0ZSosIFByb3BlcnR5TmFtZSwgUHJvcGVydHlTbG90
Jik7CisgICAgc3RhdGljIGJvb2wgZ2V0T3duUHJvcGVydHlEZXNjcmlwdG9yKEpTT2JqZWN0Kiwg
RXhlY1N0YXRlKiwgUHJvcGVydHlOYW1lLCBQcm9wZXJ0eURlc2NyaXB0b3ImKTsKIAogcHJpdmF0
ZToKLSAgICBzdGF0aWMgSlNWYWx1ZSBsZW5ndGhHZXR0ZXIoRXhlY1N0YXRlKiwgSlNWYWx1ZSwg
Y29uc3QgSWRlbnRpZmllciYpOworICAgIHN0YXRpYyBKU1ZhbHVlIGxlbmd0aEdldHRlcihFeGVj
U3RhdGUqLCBKU1ZhbHVlLCBQcm9wZXJ0eU5hbWUpOwogCiAgICAgT3duUHRyPEJpbmRpbmdzOjpN
ZXRob2RMaXN0PiBfbWV0aG9kTGlzdDsKIH07CkluZGV4OiBTb3VyY2UvV2ViQ29yZS9icmlkZ2Uv
cnVudGltZV9vYmplY3QuY3BwCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9XZWJDb3JlL2JyaWRnZS9y
dW50aW1lX29iamVjdC5jcHAJKHJldmlzaW9uIDExNjY2NykKKysrIFNvdXJjZS9XZWJDb3JlL2Jy
aWRnZS9ydW50aW1lX29iamVjdC5jcHAJKHdvcmtpbmcgY29weSkKQEAgLTY0LDcgKzY0LDcgQEAg
dm9pZCBSdW50aW1lT2JqZWN0OjppbnZhbGlkYXRlKCkKICAgICBtX2luc3RhbmNlID0gMDsKIH0K
IAotSlNWYWx1ZSBSdW50aW1lT2JqZWN0OjpmYWxsYmFja09iamVjdEdldHRlcihFeGVjU3RhdGUq
IGV4ZWMsIEpTVmFsdWUgc2xvdEJhc2UsIGNvbnN0IElkZW50aWZpZXImIHByb3BlcnR5TmFtZSkK
K0pTVmFsdWUgUnVudGltZU9iamVjdDo6ZmFsbGJhY2tPYmplY3RHZXR0ZXIoRXhlY1N0YXRlKiBl
eGVjLCBKU1ZhbHVlIHNsb3RCYXNlLCBQcm9wZXJ0eU5hbWUgcHJvcGVydHlOYW1lKQogewogICAg
IFJ1bnRpbWVPYmplY3QqIHRoaXNPYmogPSBzdGF0aWNfY2FzdDxSdW50aW1lT2JqZWN0Kj4oYXNP
YmplY3Qoc2xvdEJhc2UpKTsKICAgICBSZWZQdHI8SW5zdGFuY2U+IGluc3RhbmNlID0gdGhpc09i
ai0+bV9pbnN0YW5jZTsKQEAgLTgyLDcgKzgyLDcgQEAgSlNWYWx1ZSBSdW50aW1lT2JqZWN0Ojpm
YWxsYmFja09iamVjdEdldAogICAgIHJldHVybiByZXN1bHQ7CiB9CiAKLUpTVmFsdWUgUnVudGlt
ZU9iamVjdDo6ZmllbGRHZXR0ZXIoRXhlY1N0YXRlKiBleGVjLCBKU1ZhbHVlIHNsb3RCYXNlLCBj
b25zdCBJZGVudGlmaWVyJiBwcm9wZXJ0eU5hbWUpCitKU1ZhbHVlIFJ1bnRpbWVPYmplY3Q6OmZp
ZWxkR2V0dGVyKEV4ZWNTdGF0ZSogZXhlYywgSlNWYWx1ZSBzbG90QmFzZSwgUHJvcGVydHlOYW1l
IHByb3BlcnR5TmFtZSkKIHsgICAgCiAgICAgUnVudGltZU9iamVjdCogdGhpc09iaiA9IHN0YXRp
Y19jYXN0PFJ1bnRpbWVPYmplY3QqPihhc09iamVjdChzbG90QmFzZSkpOwogICAgIFJlZlB0cjxJ
bnN0YW5jZT4gaW5zdGFuY2UgPSB0aGlzT2JqLT5tX2luc3RhbmNlOwpAQCAtMTAxLDcgKzEwMSw3
IEBAIEpTVmFsdWUgUnVudGltZU9iamVjdDo6ZmllbGRHZXR0ZXIoRXhlY1MKICAgICByZXR1cm4g
cmVzdWx0OwogfQogCi1KU1ZhbHVlIFJ1bnRpbWVPYmplY3Q6Om1ldGhvZEdldHRlcihFeGVjU3Rh
dGUqIGV4ZWMsIEpTVmFsdWUgc2xvdEJhc2UsIGNvbnN0IElkZW50aWZpZXImIHByb3BlcnR5TmFt
ZSkKK0pTVmFsdWUgUnVudGltZU9iamVjdDo6bWV0aG9kR2V0dGVyKEV4ZWNTdGF0ZSogZXhlYywg
SlNWYWx1ZSBzbG90QmFzZSwgUHJvcGVydHlOYW1lIHByb3BlcnR5TmFtZSkKIHsKICAgICBSdW50
aW1lT2JqZWN0KiB0aGlzT2JqID0gc3RhdGljX2Nhc3Q8UnVudGltZU9iamVjdCo+KGFzT2JqZWN0
KHNsb3RCYXNlKSk7CiAgICAgUmVmUHRyPEluc3RhbmNlPiBpbnN0YW5jZSA9IHRoaXNPYmotPm1f
aW5zdGFuY2U7CkBAIC0xMTgsNyArMTE4LDcgQEAgSlNWYWx1ZSBSdW50aW1lT2JqZWN0OjptZXRo
b2RHZXR0ZXIoRXhlYwogICAgIHJldHVybiBtZXRob2Q7CiB9CiAKLWJvb2wgUnVudGltZU9iamVj
dDo6Z2V0T3duUHJvcGVydHlTbG90KEpTQ2VsbCogY2VsbCwgRXhlY1N0YXRlICpleGVjLCBjb25z
dCBJZGVudGlmaWVyJiBwcm9wZXJ0eU5hbWUsIFByb3BlcnR5U2xvdCYgc2xvdCkKK2Jvb2wgUnVu
dGltZU9iamVjdDo6Z2V0T3duUHJvcGVydHlTbG90KEpTQ2VsbCogY2VsbCwgRXhlY1N0YXRlICpl
eGVjLCBQcm9wZXJ0eU5hbWUgcHJvcGVydHlOYW1lLCBQcm9wZXJ0eVNsb3QmIHNsb3QpCiB7CiAg
ICAgUnVudGltZU9iamVjdCogdGhpc09iamVjdCA9IGpzQ2FzdDxSdW50aW1lT2JqZWN0Kj4oY2Vs
bCk7CiAgICAgaWYgKCF0aGlzT2JqZWN0LT5tX2luc3RhbmNlKSB7CkBAIC0xNjQsNyArMTY0LDcg
QEAgYm9vbCBSdW50aW1lT2JqZWN0OjpnZXRPd25Qcm9wZXJ0eVNsb3QoSgogICAgIHJldHVybiBp
bnN0YW5jZS0+Z2V0T3duUHJvcGVydHlTbG90KHRoaXNPYmplY3QsIGV4ZWMsIHByb3BlcnR5TmFt
ZSwgc2xvdCk7CiB9CiAKLWJvb2wgUnVudGltZU9iamVjdDo6Z2V0T3duUHJvcGVydHlEZXNjcmlw
dG9yKEpTT2JqZWN0KiBvYmplY3QsIEV4ZWNTdGF0ZSAqZXhlYywgY29uc3QgSWRlbnRpZmllciYg
cHJvcGVydHlOYW1lLCBQcm9wZXJ0eURlc2NyaXB0b3ImIGRlc2NyaXB0b3IpCitib29sIFJ1bnRp
bWVPYmplY3Q6OmdldE93blByb3BlcnR5RGVzY3JpcHRvcihKU09iamVjdCogb2JqZWN0LCBFeGVj
U3RhdGUgKmV4ZWMsIFByb3BlcnR5TmFtZSBwcm9wZXJ0eU5hbWUsIFByb3BlcnR5RGVzY3JpcHRv
ciYgZGVzY3JpcHRvcikKIHsKICAgICBSdW50aW1lT2JqZWN0KiB0aGlzT2JqZWN0ID0ganNDYXN0
PFJ1bnRpbWVPYmplY3QqPihvYmplY3QpOwogICAgIGlmICghdGhpc09iamVjdC0+bV9pbnN0YW5j
ZSkgewpAQCAtMjE0LDcgKzIxNCw3IEBAIGJvb2wgUnVudGltZU9iamVjdDo6Z2V0T3duUHJvcGVy
dHlEZXNjcmkKICAgICByZXR1cm4gaW5zdGFuY2UtPmdldE93blByb3BlcnR5RGVzY3JpcHRvcih0
aGlzT2JqZWN0LCBleGVjLCBwcm9wZXJ0eU5hbWUsIGRlc2NyaXB0b3IpOwogfQogCi12b2lkIFJ1
bnRpbWVPYmplY3Q6OnB1dChKU0NlbGwqIGNlbGwsIEV4ZWNTdGF0ZSogZXhlYywgY29uc3QgSWRl
bnRpZmllciYgcHJvcGVydHlOYW1lLCBKU1ZhbHVlIHZhbHVlLCBQdXRQcm9wZXJ0eVNsb3QmIHNs
b3QpCit2b2lkIFJ1bnRpbWVPYmplY3Q6OnB1dChKU0NlbGwqIGNlbGwsIEV4ZWNTdGF0ZSogZXhl
YywgUHJvcGVydHlOYW1lIHByb3BlcnR5TmFtZSwgSlNWYWx1ZSB2YWx1ZSwgUHV0UHJvcGVydHlT
bG90JiBzbG90KQogewogICAgIFJ1bnRpbWVPYmplY3QqIHRoaXNPYmplY3QgPSBqc0Nhc3Q8UnVu
dGltZU9iamVjdCo+KGNlbGwpOwogICAgIGlmICghdGhpc09iamVjdC0+bV9pbnN0YW5jZSkgewpA
QCAtMjM1LDcgKzIzNSw3IEBAIHZvaWQgUnVudGltZU9iamVjdDo6cHV0KEpTQ2VsbCogY2VsbCwg
RXgKICAgICBpbnN0YW5jZS0+ZW5kKCk7CiB9CiAKLWJvb2wgUnVudGltZU9iamVjdDo6ZGVsZXRl
UHJvcGVydHkoSlNDZWxsKiwgRXhlY1N0YXRlKiwgY29uc3QgSWRlbnRpZmllciYpCitib29sIFJ1
bnRpbWVPYmplY3Q6OmRlbGV0ZVByb3BlcnR5KEpTQ2VsbCosIEV4ZWNTdGF0ZSosIFByb3BlcnR5
TmFtZSkKIHsKICAgICAvLyBDYW4gbmV2ZXIgcmVtb3ZlIGEgcHJvcGVydHkgb2YgYSBSdW50aW1l
T2JqZWN0LgogICAgIHJldHVybiBmYWxzZTsKSW5kZXg6IFNvdXJjZS9XZWJDb3JlL2JyaWRnZS9y
dW50aW1lX29iamVjdC5oCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9XZWJDb3JlL2JyaWRnZS9ydW50
aW1lX29iamVjdC5oCShyZXZpc2lvbiAxMTY2NjcpCisrKyBTb3VyY2UvV2ViQ29yZS9icmlkZ2Uv
cnVudGltZV9vYmplY3QuaAkod29ya2luZyBjb3B5KQpAQCAtNDUsMTAgKzQ1LDEwIEBAIHB1Ymxp
YzoKIAogICAgIHN0YXRpYyB2b2lkIGRlc3Ryb3koSlNDZWxsKik7CiAKLSAgICBzdGF0aWMgYm9v
bCBnZXRPd25Qcm9wZXJ0eVNsb3QoSlNDZWxsKiwgRXhlY1N0YXRlKiwgY29uc3QgSWRlbnRpZmll
ciYgcHJvcGVydHlOYW1lLCBQcm9wZXJ0eVNsb3QmKTsKLSAgICBzdGF0aWMgYm9vbCBnZXRPd25Q
cm9wZXJ0eURlc2NyaXB0b3IoSlNPYmplY3QqLCBFeGVjU3RhdGUqLCBjb25zdCBJZGVudGlmaWVy
JiBwcm9wZXJ0eU5hbWUsIFByb3BlcnR5RGVzY3JpcHRvciYpOwotICAgIHN0YXRpYyB2b2lkIHB1
dChKU0NlbGwqLCBFeGVjU3RhdGUqLCBjb25zdCBJZGVudGlmaWVyJiBwcm9wZXJ0eU5hbWUsIEpT
VmFsdWUsIFB1dFByb3BlcnR5U2xvdCYpOwotICAgIHN0YXRpYyBib29sIGRlbGV0ZVByb3BlcnR5
KEpTQ2VsbCosIEV4ZWNTdGF0ZSosIGNvbnN0IElkZW50aWZpZXImIHByb3BlcnR5TmFtZSk7Cisg
ICAgc3RhdGljIGJvb2wgZ2V0T3duUHJvcGVydHlTbG90KEpTQ2VsbCosIEV4ZWNTdGF0ZSosIFBy
b3BlcnR5TmFtZSwgUHJvcGVydHlTbG90Jik7CisgICAgc3RhdGljIGJvb2wgZ2V0T3duUHJvcGVy
dHlEZXNjcmlwdG9yKEpTT2JqZWN0KiwgRXhlY1N0YXRlKiwgUHJvcGVydHlOYW1lLCBQcm9wZXJ0
eURlc2NyaXB0b3ImKTsKKyAgICBzdGF0aWMgdm9pZCBwdXQoSlNDZWxsKiwgRXhlY1N0YXRlKiwg
UHJvcGVydHlOYW1lLCBKU1ZhbHVlLCBQdXRQcm9wZXJ0eVNsb3QmKTsKKyAgICBzdGF0aWMgYm9v
bCBkZWxldGVQcm9wZXJ0eShKU0NlbGwqLCBFeGVjU3RhdGUqLCBQcm9wZXJ0eU5hbWUpOwogICAg
IHN0YXRpYyBKU1ZhbHVlIGRlZmF1bHRWYWx1ZShjb25zdCBKU09iamVjdCosIEV4ZWNTdGF0ZSos
IFByZWZlcnJlZFByaW1pdGl2ZVR5cGUpOwogICAgIHN0YXRpYyBDYWxsVHlwZSBnZXRDYWxsRGF0
YShKU0NlbGwqLCBDYWxsRGF0YSYpOwogICAgIHN0YXRpYyBDb25zdHJ1Y3RUeXBlIGdldENvbnN0
cnVjdERhdGEoSlNDZWxsKiwgQ29uc3RydWN0RGF0YSYpOwpAQCAtNzksOSArNzksOSBAQCBwcm90
ZWN0ZWQ6CiAgICAgc3RhdGljIGNvbnN0IHVuc2lnbmVkIFN0cnVjdHVyZUZsYWdzID0gT3ZlcnJp
ZGVzR2V0T3duUHJvcGVydHlTbG90IHwgT3ZlcnJpZGVzR2V0UHJvcGVydHlOYW1lcyB8IEJhc2U6
OlN0cnVjdHVyZUZsYWdzOwogCiBwcml2YXRlOgotICAgIHN0YXRpYyBKU1ZhbHVlIGZhbGxiYWNr
T2JqZWN0R2V0dGVyKEV4ZWNTdGF0ZSosIEpTVmFsdWUsIGNvbnN0IElkZW50aWZpZXImKTsKLSAg
ICBzdGF0aWMgSlNWYWx1ZSBmaWVsZEdldHRlcihFeGVjU3RhdGUqLCBKU1ZhbHVlLCBjb25zdCBJ
ZGVudGlmaWVyJik7Ci0gICAgc3RhdGljIEpTVmFsdWUgbWV0aG9kR2V0dGVyKEV4ZWNTdGF0ZSos
IEpTVmFsdWUsIGNvbnN0IElkZW50aWZpZXImKTsKKyAgICBzdGF0aWMgSlNWYWx1ZSBmYWxsYmFj
a09iamVjdEdldHRlcihFeGVjU3RhdGUqLCBKU1ZhbHVlLCBQcm9wZXJ0eU5hbWUpOworICAgIHN0
YXRpYyBKU1ZhbHVlIGZpZWxkR2V0dGVyKEV4ZWNTdGF0ZSosIEpTVmFsdWUsIFByb3BlcnR5TmFt
ZSk7CisgICAgc3RhdGljIEpTVmFsdWUgbWV0aG9kR2V0dGVyKEV4ZWNTdGF0ZSosIEpTVmFsdWUs
IFByb3BlcnR5TmFtZSk7CiAKICAgICBSZWZQdHI8SW5zdGFuY2U+IG1faW5zdGFuY2U7CiB9OwpJ
bmRleDogU291cmNlL1dlYkNvcmUvYnJpZGdlL2MvY19jbGFzcy5jcHAKPT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0g
U291cmNlL1dlYkNvcmUvYnJpZGdlL2MvY19jbGFzcy5jcHAJKHJldmlzaW9uIDExNjY2NykKKysr
IFNvdXJjZS9XZWJDb3JlL2JyaWRnZS9jL2NfY2xhc3MuY3BwCSh3b3JraW5nIGNvcHkpCkBAIC03
MywyNCArNzMsMjYgQEAgQ0NsYXNzKiBDQ2xhc3M6OmNsYXNzRm9ySXNBKE5QQ2xhc3MqIGlzYQog
ICAgIHJldHVybiBhQ2xhc3M7CiB9CiAKLU1ldGhvZExpc3QgQ0NsYXNzOjptZXRob2RzTmFtZWQo
Y29uc3QgSWRlbnRpZmllciYgaWRlbnRpZmllciwgSW5zdGFuY2UqIGluc3RhbmNlKSBjb25zdAor
TWV0aG9kTGlzdCBDQ2xhc3M6Om1ldGhvZHNOYW1lZChQcm9wZXJ0eU5hbWUgaWRlbnRpZmllciwg
SW5zdGFuY2UqIGluc3RhbmNlKSBjb25zdAogeworICAgIFVTdHJpbmcgbmFtZShpZGVudGlmaWVy
LmltcGwoKSk7CisgICAgCiAgICAgTWV0aG9kTGlzdCBtZXRob2RMaXN0OwogCi0gICAgTWV0aG9k
KiBtZXRob2QgPSBfbWV0aG9kcy5nZXQoaWRlbnRpZmllci51c3RyaW5nKCkuaW1wbCgpKTsKKyAg
ICBNZXRob2QqIG1ldGhvZCA9IF9tZXRob2RzLmdldChuYW1lLmltcGwoKSk7CiAgICAgaWYgKG1l
dGhvZCkgewogICAgICAgICBtZXRob2RMaXN0LmFwcGVuZChtZXRob2QpOwogICAgICAgICByZXR1
cm4gbWV0aG9kTGlzdDsKICAgICB9CiAKLSAgICBOUElkZW50aWZpZXIgaWRlbnQgPSBfTlBOX0dl
dFN0cmluZ0lkZW50aWZpZXIoaWRlbnRpZmllci5hc2NpaSgpLmRhdGEoKSk7CisgICAgTlBJZGVu
dGlmaWVyIGlkZW50ID0gX05QTl9HZXRTdHJpbmdJZGVudGlmaWVyKG5hbWUuYXNjaWkoKS5kYXRh
KCkpOwogICAgIGNvbnN0IENJbnN0YW5jZSogaW5zdCA9IHN0YXRpY19jYXN0PGNvbnN0IENJbnN0
YW5jZSo+KGluc3RhbmNlKTsKICAgICBOUE9iamVjdCogb2JqID0gaW5zdC0+Z2V0T2JqZWN0KCk7
CiAgICAgaWYgKF9pc2EtPmhhc01ldGhvZCAmJiBfaXNhLT5oYXNNZXRob2Qob2JqLCBpZGVudCkp
ewogICAgICAgICBNZXRob2QqIGFNZXRob2QgPSBuZXcgQ01ldGhvZChpZGVudCk7IC8vIGRlbGV0
ZWQgaW4gdGhlIENDbGFzcyBkZXN0cnVjdG9yCiAgICAgICAgIHsKICAgICAgICAgICAgIEpTTG9j
ayBsb2NrKFNpbGVuY2VBc3NlcnRpb25zT25seSk7Ci0gICAgICAgICAgICBfbWV0aG9kcy5zZXQo
aWRlbnRpZmllci51c3RyaW5nKCkuaW1wbCgpLCBhTWV0aG9kKTsKKyAgICAgICAgICAgIF9tZXRo
b2RzLnNldChuYW1lLmltcGwoKSwgYU1ldGhvZCk7CiAgICAgICAgIH0KICAgICAgICAgbWV0aG9k
TGlzdC5hcHBlbmQoYU1ldGhvZCk7CiAgICAgfQpAQCAtOTgsMjAgKzEwMCwyMiBAQCBNZXRob2RM
aXN0IENDbGFzczo6bWV0aG9kc05hbWVkKGNvbnN0IElkCiAgICAgcmV0dXJuIG1ldGhvZExpc3Q7
CiB9CiAKLUZpZWxkKiBDQ2xhc3M6OmZpZWxkTmFtZWQoY29uc3QgSWRlbnRpZmllciYgaWRlbnRp
ZmllciwgSW5zdGFuY2UqIGluc3RhbmNlKSBjb25zdAorRmllbGQqIENDbGFzczo6ZmllbGROYW1l
ZChQcm9wZXJ0eU5hbWUgaWRlbnRpZmllciwgSW5zdGFuY2UqIGluc3RhbmNlKSBjb25zdAogewot
ICAgIEZpZWxkKiBhRmllbGQgPSBfZmllbGRzLmdldChpZGVudGlmaWVyLnVzdHJpbmcoKS5pbXBs
KCkpOworICAgIFVTdHJpbmcgbmFtZShpZGVudGlmaWVyLmltcGwoKSk7CisgICAgCisgICAgRmll
bGQqIGFGaWVsZCA9IF9maWVsZHMuZ2V0KG5hbWUuaW1wbCgpKTsKICAgICBpZiAoYUZpZWxkKQog
ICAgICAgICByZXR1cm4gYUZpZWxkOwogICAgIAotICAgIE5QSWRlbnRpZmllciBpZGVudCA9IF9O
UE5fR2V0U3RyaW5nSWRlbnRpZmllcihpZGVudGlmaWVyLmFzY2lpKCkuZGF0YSgpKTsKKyAgICBO
UElkZW50aWZpZXIgaWRlbnQgPSBfTlBOX0dldFN0cmluZ0lkZW50aWZpZXIobmFtZS5hc2NpaSgp
LmRhdGEoKSk7CiAgICAgY29uc3QgQ0luc3RhbmNlKiBpbnN0ID0gc3RhdGljX2Nhc3Q8Y29uc3Qg
Q0luc3RhbmNlKj4oaW5zdGFuY2UpOwogICAgIE5QT2JqZWN0KiBvYmogPSBpbnN0LT5nZXRPYmpl
Y3QoKTsKICAgICBpZiAoX2lzYS0+aGFzUHJvcGVydHkgJiYgX2lzYS0+aGFzUHJvcGVydHkob2Jq
LCBpZGVudCkpewogICAgICAgICBhRmllbGQgPSBuZXcgQ0ZpZWxkKGlkZW50KTsgLy8gZGVsZXRl
ZCBpbiB0aGUgQ0NsYXNzIGRlc3RydWN0b3IKICAgICAgICAgewogICAgICAgICAgICAgSlNMb2Nr
IGxvY2soU2lsZW5jZUFzc2VydGlvbnNPbmx5KTsKLSAgICAgICAgICAgIF9maWVsZHMuc2V0KGlk
ZW50aWZpZXIudXN0cmluZygpLmltcGwoKSwgYUZpZWxkKTsKKyAgICAgICAgICAgIF9maWVsZHMu
c2V0KG5hbWUuaW1wbCgpLCBhRmllbGQpOwogICAgICAgICB9CiAgICAgfQogICAgIHJldHVybiBh
RmllbGQ7CkluZGV4OiBTb3VyY2UvV2ViQ29yZS9icmlkZ2UvYy9jX2NsYXNzLmgKPT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PQotLS0gU291cmNlL1dlYkNvcmUvYnJpZGdlL2MvY19jbGFzcy5oCShyZXZpc2lvbiAxMTY2Njcp
CisrKyBTb3VyY2UvV2ViQ29yZS9icmlkZ2UvYy9jX2NsYXNzLmgJKHdvcmtpbmcgY29weSkKQEAg
LTQzLDggKzQzLDggQEAgcHVibGljOgogICAgIHN0YXRpYyBDQ2xhc3MqIGNsYXNzRm9ySXNBKE5Q
Q2xhc3MqKTsKICAgICB2aXJ0dWFsIH5DQ2xhc3MoKTsKIAotICAgIHZpcnR1YWwgTWV0aG9kTGlz
dCBtZXRob2RzTmFtZWQoY29uc3QgSWRlbnRpZmllciYsIEluc3RhbmNlKikgY29uc3Q7Ci0gICAg
dmlydHVhbCBGaWVsZCogZmllbGROYW1lZChjb25zdCBJZGVudGlmaWVyJiwgSW5zdGFuY2UqKSBj
b25zdDsKKyAgICB2aXJ0dWFsIE1ldGhvZExpc3QgbWV0aG9kc05hbWVkKFByb3BlcnR5TmFtZSwg
SW5zdGFuY2UqKSBjb25zdDsKKyAgICB2aXJ0dWFsIEZpZWxkKiBmaWVsZE5hbWVkKFByb3BlcnR5
TmFtZSwgSW5zdGFuY2UqKSBjb25zdDsKIAogcHJpdmF0ZToKICAgICBOUENsYXNzKiBfaXNhOwpJ
bmRleDogU291cmNlL1dlYkNvcmUvYnJpZGdlL2MvY19pbnN0YW5jZS5jcHAKPT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQot
LS0gU291cmNlL1dlYkNvcmUvYnJpZGdlL2MvY19pbnN0YW5jZS5jcHAJKHJldmlzaW9uIDExNjY2
NykKKysrIFNvdXJjZS9XZWJDb3JlL2JyaWRnZS9jL2NfaW5zdGFuY2UuY3BwCSh3b3JraW5nIGNv
cHkpCkBAIC0xMTMsNyArMTEzLDcgQEAgY2xhc3MgQ1J1bnRpbWVNZXRob2QgOiBwdWJsaWMgUnVu
dGltZU1ldAogcHVibGljOgogICAgIHR5cGVkZWYgUnVudGltZU1ldGhvZCBCYXNlOwogCi0gICAg
c3RhdGljIENSdW50aW1lTWV0aG9kKiBjcmVhdGUoRXhlY1N0YXRlKiBleGVjLCBKU0dsb2JhbE9i
amVjdCogZ2xvYmFsT2JqZWN0LCBjb25zdCBJZGVudGlmaWVyJiBuYW1lLCBCaW5kaW5nczo6TWV0
aG9kTGlzdCYgbGlzdCkKKyAgICBzdGF0aWMgQ1J1bnRpbWVNZXRob2QqIGNyZWF0ZShFeGVjU3Rh
dGUqIGV4ZWMsIEpTR2xvYmFsT2JqZWN0KiBnbG9iYWxPYmplY3QsIGNvbnN0IFVTdHJpbmcmIG5h
bWUsIEJpbmRpbmdzOjpNZXRob2RMaXN0JiBsaXN0KQogICAgIHsKICAgICAgICAgLy8gRklYTUU6
IGRlcHJlY2F0ZWRHZXRET01TdHJ1Y3R1cmUgdXNlcyB0aGUgcHJvdG90eXBlIG9mZiBvZiB0aGUg
d3JvbmcgZ2xvYmFsIG9iamVjdAogICAgICAgICAvLyBXZSBuZWVkIHRvIHBhc3MgaW4gdGhlIHJp
Z2h0IGdsb2JhbCBvYmplY3QgZm9yICJpIi4KQEAgLTEzNiw3ICsxMzYsNyBAQCBwcml2YXRlOgog
ICAgIHsKICAgICB9CiAKLSAgICB2b2lkIGZpbmlzaENyZWF0aW9uKEpTR2xvYmFsRGF0YSYgZ2xv
YmFsRGF0YSwgY29uc3QgSWRlbnRpZmllciYgbmFtZSkKKyAgICB2b2lkIGZpbmlzaENyZWF0aW9u
KEpTR2xvYmFsRGF0YSYgZ2xvYmFsRGF0YSwgY29uc3QgVVN0cmluZyYgbmFtZSkKICAgICB7CiAg
ICAgICAgIEJhc2U6OmZpbmlzaENyZWF0aW9uKGdsb2JhbERhdGEsIG5hbWUpOwogICAgICAgICBB
U1NFUlQoaW5oZXJpdHMoJnNfaW5mbykpOwpAQCAtMTQ2LDEwICsxNDYsMTAgQEAgcHJpdmF0ZToK
IAogY29uc3QgQ2xhc3NJbmZvIENSdW50aW1lTWV0aG9kOjpzX2luZm8gPSB7ICJDUnVudGltZU1l
dGhvZCIsICZSdW50aW1lTWV0aG9kOjpzX2luZm8sIDAsIDAsIENSRUFURV9NRVRIT0RfVEFCTEUo
Q1J1bnRpbWVNZXRob2QpIH07CiAKLUpTVmFsdWUgQ0luc3RhbmNlOjpnZXRNZXRob2QoRXhlY1N0
YXRlKiBleGVjLCBjb25zdCBJZGVudGlmaWVyJiBwcm9wZXJ0eU5hbWUpCitKU1ZhbHVlIENJbnN0
YW5jZTo6Z2V0TWV0aG9kKEV4ZWNTdGF0ZSogZXhlYywgUHJvcGVydHlOYW1lIHByb3BlcnR5TmFt
ZSkKIHsKICAgICBNZXRob2RMaXN0IG1ldGhvZExpc3QgPSBnZXRDbGFzcygpLT5tZXRob2RzTmFt
ZWQocHJvcGVydHlOYW1lLCB0aGlzKTsKLSAgICByZXR1cm4gQ1J1bnRpbWVNZXRob2Q6OmNyZWF0
ZShleGVjLCBleGVjLT5sZXhpY2FsR2xvYmFsT2JqZWN0KCksIHByb3BlcnR5TmFtZSwgbWV0aG9k
TGlzdCk7CisgICAgcmV0dXJuIENSdW50aW1lTWV0aG9kOjpjcmVhdGUoZXhlYywgZXhlYy0+bGV4
aWNhbEdsb2JhbE9iamVjdCgpLCBwcm9wZXJ0eU5hbWUuaW1wbCgpLCBtZXRob2RMaXN0KTsKIH0K
IAogSlNWYWx1ZSBDSW5zdGFuY2U6Omludm9rZU1ldGhvZChFeGVjU3RhdGUqIGV4ZWMsIFJ1bnRp
bWVNZXRob2QqIHJ1bnRpbWVNZXRob2QpCkluZGV4OiBTb3VyY2UvV2ViQ29yZS9icmlkZ2UvYy9j
X2luc3RhbmNlLmgKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL1dlYkNvcmUvYnJpZGdlL2MvY19pbnN0
YW5jZS5oCShyZXZpc2lvbiAxMTY2NjcpCisrKyBTb3VyY2UvV2ViQ29yZS9icmlkZ2UvYy9jX2lu
c3RhbmNlLmgJKHdvcmtpbmcgY29weSkKQEAgLTU5LDcgKzU5LDcgQEAgcHVibGljOgogICAgIHZp
cnR1YWwgSlNWYWx1ZSB2YWx1ZU9mKEV4ZWNTdGF0ZSopIGNvbnN0OwogICAgIHZpcnR1YWwgSlNW
YWx1ZSBkZWZhdWx0VmFsdWUoRXhlY1N0YXRlKiwgUHJlZmVycmVkUHJpbWl0aXZlVHlwZSkgY29u
c3Q7CiAKLSAgICB2aXJ0dWFsIEpTVmFsdWUgZ2V0TWV0aG9kKEV4ZWNTdGF0ZSogZXhlYywgY29u
c3QgSWRlbnRpZmllciYgcHJvcGVydHlOYW1lKTsKKyAgICB2aXJ0dWFsIEpTVmFsdWUgZ2V0TWV0
aG9kKEV4ZWNTdGF0ZSosIFByb3BlcnR5TmFtZSk7CiAgICAgdmlydHVhbCBKU1ZhbHVlIGludm9r
ZU1ldGhvZChFeGVjU3RhdGUqLCBSdW50aW1lTWV0aG9kKiBtZXRob2QpOwogICAgIHZpcnR1YWwg
Ym9vbCBzdXBwb3J0c0ludm9rZURlZmF1bHRNZXRob2QoKSBjb25zdDsKICAgICB2aXJ0dWFsIEpT
VmFsdWUgaW52b2tlRGVmYXVsdE1ldGhvZChFeGVjU3RhdGUqKTsKSW5kZXg6IFNvdXJjZS9XZWJD
b3JlL2JyaWRnZS9qbmkvanNjL0phdmFDbGFzc0pTQy5jcHAKPT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNl
L1dlYkNvcmUvYnJpZGdlL2puaS9qc2MvSmF2YUNsYXNzSlNDLmNwcAkocmV2aXNpb24gMTE2NjY3
KQorKysgU291cmNlL1dlYkNvcmUvYnJpZGdlL2puaS9qc2MvSmF2YUNsYXNzSlNDLmNwcAkod29y
a2luZyBjb3B5KQpAQCAtMTE0LDcgKzExNCw3IEBAIEphdmFDbGFzczo6fkphdmFDbGFzcygpCiAg
ICAgbV9tZXRob2RzLmNsZWFyKCk7CiB9CiAKLU1ldGhvZExpc3QgSmF2YUNsYXNzOjptZXRob2Rz
TmFtZWQoY29uc3QgSWRlbnRpZmllciYgaWRlbnRpZmllciwgSW5zdGFuY2UqKSBjb25zdAorTWV0
aG9kTGlzdCBKYXZhQ2xhc3M6Om1ldGhvZHNOYW1lZChQcm9wZXJ0eU5hbWUgaWRlbnRpZmllciwg
SW5zdGFuY2UqKSBjb25zdAogewogICAgIE1ldGhvZExpc3QqIG1ldGhvZExpc3QgPSBtX21ldGhv
ZHMuZ2V0KGlkZW50aWZpZXIudXN0cmluZygpLmltcGwoKSk7CiAKQEAgLTEyMyw3ICsxMjMsNyBA
QCBNZXRob2RMaXN0IEphdmFDbGFzczo6bWV0aG9kc05hbWVkKGNvbnN0CiAgICAgcmV0dXJuIE1l
dGhvZExpc3QoKTsKIH0KIAotRmllbGQqIEphdmFDbGFzczo6ZmllbGROYW1lZChjb25zdCBJZGVu
dGlmaWVyJiBpZGVudGlmaWVyLCBJbnN0YW5jZSopIGNvbnN0CitGaWVsZCogSmF2YUNsYXNzOjpm
aWVsZE5hbWVkKFByb3BlcnR5TmFtZSBpZGVudGlmaWVyLCBJbnN0YW5jZSopIGNvbnN0CiB7CiAg
ICAgcmV0dXJuIG1fZmllbGRzLmdldChpZGVudGlmaWVyLnVzdHJpbmcoKS5pbXBsKCkpOwogfQpJ
bmRleDogU291cmNlL1dlYkNvcmUvYnJpZGdlL2puaS9qc2MvSmF2YUNsYXNzSlNDLmgKPT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PQotLS0gU291cmNlL1dlYkNvcmUvYnJpZGdlL2puaS9qc2MvSmF2YUNsYXNzSlNDLmgJKHJl
dmlzaW9uIDExNjY2NykKKysrIFNvdXJjZS9XZWJDb3JlL2JyaWRnZS9qbmkvanNjL0phdmFDbGFz
c0pTQy5oCSh3b3JraW5nIGNvcHkpCkBAIC00MSw4ICs0MSw4IEBAIHB1YmxpYzoKICAgICBKYXZh
Q2xhc3Moam9iamVjdCk7CiAgICAgfkphdmFDbGFzcygpOwogCi0gICAgdmlydHVhbCBNZXRob2RM
aXN0IG1ldGhvZHNOYW1lZChjb25zdCBJZGVudGlmaWVyJiwgSW5zdGFuY2UqKSBjb25zdDsKLSAg
ICB2aXJ0dWFsIEZpZWxkKiBmaWVsZE5hbWVkKGNvbnN0IElkZW50aWZpZXImLCBJbnN0YW5jZSop
IGNvbnN0OworICAgIHZpcnR1YWwgTWV0aG9kTGlzdCBtZXRob2RzTmFtZWQoUHJvcGVydHlOYW1l
LCBJbnN0YW5jZSopIGNvbnN0OworICAgIHZpcnR1YWwgRmllbGQqIGZpZWxkTmFtZWQoUHJvcGVy
dHlOYW1lLCBJbnN0YW5jZSopIGNvbnN0OwogCiAgICAgYm9vbCBpc051bWJlckNsYXNzKCkgY29u
c3Q7CiAgICAgYm9vbCBpc0Jvb2xlYW5DbGFzcygpIGNvbnN0OwpJbmRleDogU291cmNlL1dlYkNv
cmUvYnJpZGdlL2puaS9qc2MvSmF2YUluc3RhbmNlSlNDLmNwcAo9PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3Vy
Y2UvV2ViQ29yZS9icmlkZ2Uvam5pL2pzYy9KYXZhSW5zdGFuY2VKU0MuY3BwCShyZXZpc2lvbiAx
MTY2NjcpCisrKyBTb3VyY2UvV2ViQ29yZS9icmlkZ2Uvam5pL2pzYy9KYXZhSW5zdGFuY2VKU0Mu
Y3BwCSh3b3JraW5nIGNvcHkpCkBAIC0xMTgsNyArMTE4LDcgQEAgY2xhc3MgSmF2YVJ1bnRpbWVN
ZXRob2QgOiBwdWJsaWMgUnVudGltZQogcHVibGljOgogICAgIHR5cGVkZWYgUnVudGltZU1ldGhv
ZCBCYXNlOwogCi0gICAgc3RhdGljIEphdmFSdW50aW1lTWV0aG9kKiBjcmVhdGUoRXhlY1N0YXRl
KiBleGVjLCBKU0dsb2JhbE9iamVjdCogZ2xvYmFsT2JqZWN0LCBjb25zdCBJZGVudGlmaWVyJiBu
YW1lLCBCaW5kaW5nczo6TWV0aG9kTGlzdCYgbGlzdCkKKyAgICBzdGF0aWMgSmF2YVJ1bnRpbWVN
ZXRob2QqIGNyZWF0ZShFeGVjU3RhdGUqIGV4ZWMsIEpTR2xvYmFsT2JqZWN0KiBnbG9iYWxPYmpl
Y3QsIGNvbnN0IFVTdHJpbmcmIG5hbWUsIEJpbmRpbmdzOjpNZXRob2RMaXN0JiBsaXN0KQogICAg
IHsKICAgICAgICAgLy8gRklYTUU6IGRlcHJlY2F0ZWRHZXRET01TdHJ1Y3R1cmUgdXNlcyB0aGUg
cHJvdG90eXBlIG9mZiBvZiB0aGUgd3JvbmcgZ2xvYmFsIG9iamVjdAogICAgICAgICAvLyBXZSBu
ZWVkIHRvIHBhc3MgaW4gdGhlIHJpZ2h0IGdsb2JhbCBvYmplY3QgZm9yICJpIi4KQEAgLTE0MSw3
ICsxNDEsNyBAQCBwcml2YXRlOgogICAgIHsKICAgICB9CiAKLSAgICB2b2lkIGZpbmlzaENyZWF0
aW9uKEpTR2xvYmFsRGF0YSYgZ2xvYmFsRGF0YSwgY29uc3QgSWRlbnRpZmllciYgbmFtZSkKKyAg
ICB2b2lkIGZpbmlzaENyZWF0aW9uKEpTR2xvYmFsRGF0YSYgZ2xvYmFsRGF0YSwgY29uc3QgVVN0
cmluZyYgbmFtZSkKICAgICB7CiAgICAgICAgIEJhc2U6OmZpbmlzaENyZWF0aW9uKGdsb2JhbERh
dGEsIG5hbWUpOwogICAgICAgICBBU1NFUlQoaW5oZXJpdHMoJnNfaW5mbykpOwpAQCAtMTUwLDEw
ICsxNTAsMTAgQEAgcHJpdmF0ZToKIAogY29uc3QgQ2xhc3NJbmZvIEphdmFSdW50aW1lTWV0aG9k
OjpzX2luZm8gPSB7ICJKYXZhUnVudGltZU1ldGhvZCIsICZSdW50aW1lTWV0aG9kOjpzX2luZm8s
IDAsIDAsIENSRUFURV9NRVRIT0RfVEFCTEUoSmF2YVJ1bnRpbWVNZXRob2QpIH07CiAKLUpTVmFs
dWUgSmF2YUluc3RhbmNlOjpnZXRNZXRob2QoRXhlY1N0YXRlKiBleGVjLCBjb25zdCBJZGVudGlm
aWVyJiBwcm9wZXJ0eU5hbWUpCitKU1ZhbHVlIEphdmFJbnN0YW5jZTo6Z2V0TWV0aG9kKEV4ZWNT
dGF0ZSogZXhlYywgUHJvcGVydHlOYW1lIHByb3BlcnR5TmFtZSkKIHsKICAgICBNZXRob2RMaXN0
IG1ldGhvZExpc3QgPSBnZXRDbGFzcygpLT5tZXRob2RzTmFtZWQocHJvcGVydHlOYW1lLCB0aGlz
KTsKLSAgICByZXR1cm4gSmF2YVJ1bnRpbWVNZXRob2Q6OmNyZWF0ZShleGVjLCBleGVjLT5sZXhp
Y2FsR2xvYmFsT2JqZWN0KCksIHByb3BlcnR5TmFtZSwgbWV0aG9kTGlzdCk7CisgICAgcmV0dXJu
IEphdmFSdW50aW1lTWV0aG9kOjpjcmVhdGUoZXhlYywgZXhlYy0+bGV4aWNhbEdsb2JhbE9iamVj
dCgpLCBwcm9wZXJ0eU5hbWUudXN0cmluZygpLCBtZXRob2RMaXN0KTsKIH0KIAogSlNWYWx1ZSBK
YXZhSW5zdGFuY2U6Omludm9rZU1ldGhvZChFeGVjU3RhdGUqIGV4ZWMsIFJ1bnRpbWVNZXRob2Qq
IHJ1bnRpbWVNZXRob2QpCkluZGV4OiBTb3VyY2UvV2ViQ29yZS9icmlkZ2Uvam5pL2pzYy9KYXZh
SW5zdGFuY2VKU0MuaAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2ViQ29yZS9icmlkZ2Uvam5pL2pz
Yy9KYXZhSW5zdGFuY2VKU0MuaAkocmV2aXNpb24gMTE2NjY3KQorKysgU291cmNlL1dlYkNvcmUv
YnJpZGdlL2puaS9qc2MvSmF2YUluc3RhbmNlSlNDLmgJKHdvcmtpbmcgY29weSkKQEAgLTUzLDgg
KzUzLDggQEAgcHVibGljOgogICAgIHZpcnR1YWwgSlNWYWx1ZSB2YWx1ZU9mKEV4ZWNTdGF0ZSop
IGNvbnN0OwogICAgIHZpcnR1YWwgSlNWYWx1ZSBkZWZhdWx0VmFsdWUoRXhlY1N0YXRlKiwgUHJl
ZmVycmVkUHJpbWl0aXZlVHlwZSkgY29uc3Q7CiAKLSAgICB2aXJ0dWFsIEpTVmFsdWUgZ2V0TWV0
aG9kKEV4ZWNTdGF0ZSogZXhlYywgY29uc3QgSWRlbnRpZmllciYgcHJvcGVydHlOYW1lKTsKLSAg
ICB2aXJ0dWFsIEpTVmFsdWUgaW52b2tlTWV0aG9kKEV4ZWNTdGF0ZSogZXhlYywgUnVudGltZU1l
dGhvZCogbWV0aG9kKTsKKyAgICB2aXJ0dWFsIEpTVmFsdWUgZ2V0TWV0aG9kKEV4ZWNTdGF0ZSos
IFByb3BlcnR5TmFtZSk7CisgICAgdmlydHVhbCBKU1ZhbHVlIGludm9rZU1ldGhvZChFeGVjU3Rh
dGUqLCBSdW50aW1lTWV0aG9kKik7CiAKICAgICBqb2JqZWN0IGphdmFJbnN0YW5jZSgpIGNvbnN0
IHsgcmV0dXJuIG1faW5zdGFuY2UtPmluc3RhbmNlKCk7IH0KIApJbmRleDogU291cmNlL1dlYkNv
cmUvYnJpZGdlL2pzYy9CcmlkZ2VKU0MuaAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2ViQ29yZS9i
cmlkZ2UvanNjL0JyaWRnZUpTQy5oCShyZXZpc2lvbiAxMTY2NjcpCisrKyBTb3VyY2UvV2ViQ29y
ZS9icmlkZ2UvanNjL0JyaWRnZUpTQy5oCSh3b3JraW5nIGNvcHkpCkBAIC02Miw5ICs2Miw5IEBA
IGNsYXNzIENsYXNzIHsKICAgICBXVEZfTUFLRV9OT05DT1BZQUJMRShDbGFzcyk7IFdURl9NQUtF
X0ZBU1RfQUxMT0NBVEVEOwogcHVibGljOgogICAgIENsYXNzKCkgeyB9Ci0gICAgdmlydHVhbCBN
ZXRob2RMaXN0IG1ldGhvZHNOYW1lZChjb25zdCBJZGVudGlmaWVyJiwgSW5zdGFuY2UqKSBjb25z
dCA9IDA7Ci0gICAgdmlydHVhbCBGaWVsZCogZmllbGROYW1lZChjb25zdCBJZGVudGlmaWVyJiwg
SW5zdGFuY2UqKSBjb25zdCA9IDA7Ci0gICAgdmlydHVhbCBKU1ZhbHVlIGZhbGxiYWNrT2JqZWN0
KEV4ZWNTdGF0ZSosIEluc3RhbmNlKiwgY29uc3QgSWRlbnRpZmllciYpIHsgcmV0dXJuIGpzVW5k
ZWZpbmVkKCk7IH0KKyAgICB2aXJ0dWFsIE1ldGhvZExpc3QgbWV0aG9kc05hbWVkKFByb3BlcnR5
TmFtZSwgSW5zdGFuY2UqKSBjb25zdCA9IDA7CisgICAgdmlydHVhbCBGaWVsZCogZmllbGROYW1l
ZChQcm9wZXJ0eU5hbWUsIEluc3RhbmNlKikgY29uc3QgPSAwOworICAgIHZpcnR1YWwgSlNWYWx1
ZSBmYWxsYmFja09iamVjdChFeGVjU3RhdGUqLCBJbnN0YW5jZSosIFByb3BlcnR5TmFtZSkgeyBy
ZXR1cm4ganNVbmRlZmluZWQoKTsgfQogCiAgICAgdmlydHVhbCB+Q2xhc3MoKSB7IH0KIH07CkBA
IC04OSw5ICs4OSw5IEBAIHB1YmxpYzoKICAgICB2b2lkIHdpbGxJbnZhbGlkYXRlUnVudGltZU9i
amVjdCgpOwogCiAgICAgLy8gUmV0dXJucyBmYWxzZSBpZiB0aGUgdmFsdWUgd2FzIG5vdCBzZXQg
c3VjY2Vzc2Z1bGx5LgotICAgIHZpcnR1YWwgYm9vbCBzZXRWYWx1ZU9mVW5kZWZpbmVkRmllbGQo
RXhlY1N0YXRlKiwgY29uc3QgSWRlbnRpZmllciYsIEpTVmFsdWUpIHsgcmV0dXJuIGZhbHNlOyB9
CisgICAgdmlydHVhbCBib29sIHNldFZhbHVlT2ZVbmRlZmluZWRGaWVsZChFeGVjU3RhdGUqLCBQ
cm9wZXJ0eU5hbWUsIEpTVmFsdWUpIHsgcmV0dXJuIGZhbHNlOyB9CiAKLSAgICB2aXJ0dWFsIEpT
VmFsdWUgZ2V0TWV0aG9kKEV4ZWNTdGF0ZSogZXhlYywgY29uc3QgSWRlbnRpZmllciYgcHJvcGVy
dHlOYW1lKSA9IDA7CisgICAgdmlydHVhbCBKU1ZhbHVlIGdldE1ldGhvZChFeGVjU3RhdGUqLCBQ
cm9wZXJ0eU5hbWUpID0gMDsKICAgICB2aXJ0dWFsIEpTVmFsdWUgaW52b2tlTWV0aG9kKEV4ZWNT
dGF0ZSosIFJ1bnRpbWVNZXRob2QqIG1ldGhvZCkgPSAwOwogCiAgICAgdmlydHVhbCBib29sIHN1
cHBvcnRzSW52b2tlRGVmYXVsdE1ldGhvZCgpIGNvbnN0IHsgcmV0dXJuIGZhbHNlOyB9CkBAIC0x
MTAsOSArMTEwLDkgQEAgcHVibGljOgogCiAgICAgdmlydHVhbCB+SW5zdGFuY2UoKTsKIAotICAg
IHZpcnR1YWwgYm9vbCBnZXRPd25Qcm9wZXJ0eVNsb3QoSlNPYmplY3QqLCBFeGVjU3RhdGUqLCBj
b25zdCBJZGVudGlmaWVyJiwgUHJvcGVydHlTbG90JikgeyByZXR1cm4gZmFsc2U7IH0KLSAgICB2
aXJ0dWFsIGJvb2wgZ2V0T3duUHJvcGVydHlEZXNjcmlwdG9yKEpTT2JqZWN0KiwgRXhlY1N0YXRl
KiwgY29uc3QgSWRlbnRpZmllciYsIFByb3BlcnR5RGVzY3JpcHRvciYpIHsgcmV0dXJuIGZhbHNl
OyB9Ci0gICAgdmlydHVhbCB2b2lkIHB1dChKU09iamVjdCosIEV4ZWNTdGF0ZSosIGNvbnN0IElk
ZW50aWZpZXImLCBKU1ZhbHVlLCBQdXRQcm9wZXJ0eVNsb3QmKSB7IH0KKyAgICB2aXJ0dWFsIGJv
b2wgZ2V0T3duUHJvcGVydHlTbG90KEpTT2JqZWN0KiwgRXhlY1N0YXRlKiwgUHJvcGVydHlOYW1l
LCBQcm9wZXJ0eVNsb3QmKSB7IHJldHVybiBmYWxzZTsgfQorICAgIHZpcnR1YWwgYm9vbCBnZXRP
d25Qcm9wZXJ0eURlc2NyaXB0b3IoSlNPYmplY3QqLCBFeGVjU3RhdGUqLCBQcm9wZXJ0eU5hbWUs
IFByb3BlcnR5RGVzY3JpcHRvciYpIHsgcmV0dXJuIGZhbHNlOyB9CisgICAgdmlydHVhbCB2b2lk
IHB1dChKU09iamVjdCosIEV4ZWNTdGF0ZSosIFByb3BlcnR5TmFtZSwgSlNWYWx1ZSwgUHV0UHJv
cGVydHlTbG90JikgeyB9CiAKIHByb3RlY3RlZDoKICAgICB2aXJ0dWFsIHZvaWQgdmlydHVhbEJl
Z2luKCkgeyB9CkluZGV4OiBTb3VyY2UvV2ViQ29yZS9icmlkZ2Uvb2JqYy9vYmpjX2NsYXNzLmgK
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PQotLS0gU291cmNlL1dlYkNvcmUvYnJpZGdlL29iamMvb2JqY19jbGFzcy5oCShy
ZXZpc2lvbiAxMTY2NjcpCisrKyBTb3VyY2UvV2ViQ29yZS9icmlkZ2Uvb2JqYy9vYmpjX2NsYXNz
LmgJKHdvcmtpbmcgY29weSkKQEAgLTQxLDEwICs0MSwxMCBAQCBwdWJsaWM6CiAgICAgLy8gUmV0
dXJuIHRoZSBjYWNoZWQgT2JqQyBvZiB0aGUgc3BlY2lmaWVkIG5hbWUuCiAgICAgc3RhdGljIE9i
amNDbGFzcyAqY2xhc3NGb3JJc0EoQ2xhc3NTdHJ1Y3RQdHIpOwogICAgIAotICAgIHZpcnR1YWwg
TWV0aG9kTGlzdCBtZXRob2RzTmFtZWQoY29uc3QgSWRlbnRpZmllciYsIEluc3RhbmNlICppbnN0
YW5jZSkgY29uc3Q7Ci0gICAgdmlydHVhbCBGaWVsZCAqZmllbGROYW1lZChjb25zdCBJZGVudGlm
aWVyJiwgSW5zdGFuY2UgKmluc3RhbmNlKSBjb25zdDsKKyAgICB2aXJ0dWFsIE1ldGhvZExpc3Qg
bWV0aG9kc05hbWVkKFByb3BlcnR5TmFtZSwgSW5zdGFuY2UqKSBjb25zdDsKKyAgICB2aXJ0dWFs
IEZpZWxkICpmaWVsZE5hbWVkKFByb3BlcnR5TmFtZSwgSW5zdGFuY2UqKSBjb25zdDsKIAotICAg
IHZpcnR1YWwgSlNWYWx1ZSBmYWxsYmFja09iamVjdChFeGVjU3RhdGUgKmV4ZWMsIEluc3RhbmNl
ICppbnN0YW5jZSwgY29uc3QgSWRlbnRpZmllciAmcHJvcGVydHlOYW1lKTsKKyAgICB2aXJ0dWFs
IEpTVmFsdWUgZmFsbGJhY2tPYmplY3QoRXhlY1N0YXRlKiwgSW5zdGFuY2UqLCBQcm9wZXJ0eU5h
bWUpOwogICAgIAogICAgIENsYXNzU3RydWN0UHRyIGlzYSgpIHsgcmV0dXJuIF9pc2E7IH0KICAg
ICAKSW5kZXg6IFNvdXJjZS9XZWJDb3JlL2JyaWRnZS9vYmpjL29iamNfY2xhc3MubW0KPT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PQotLS0gU291cmNlL1dlYkNvcmUvYnJpZGdlL29iamMvb2JqY19jbGFzcy5tbQkocmV2aXNp
b24gMTE2NjY3KQorKysgU291cmNlL1dlYkNvcmUvYnJpZGdlL29iamMvb2JqY19jbGFzcy5tbQko
d29ya2luZyBjb3B5KQpAQCAtOTUsNyArOTUsNyBAQCBzdGF0aWMgaW5saW5lIHZvaWQgY29udmVy
dEpTTWV0aG9kTmFtZVRvCiAgICAgfQogfQogCi1NZXRob2RMaXN0IE9iamNDbGFzczo6bWV0aG9k
c05hbWVkKGNvbnN0IElkZW50aWZpZXImIGlkZW50aWZpZXIsIEluc3RhbmNlKikgY29uc3QKK01l
dGhvZExpc3QgT2JqY0NsYXNzOjptZXRob2RzTmFtZWQoUHJvcGVydHlOYW1lIGlkZW50aWZpZXIs
IEluc3RhbmNlKikgY29uc3QKIHsKICAgICBNZXRob2RMaXN0IG1ldGhvZExpc3Q7CiAgICAgaWYg
KE1ldGhvZCogbWV0aG9kID0gbV9tZXRob2RDYWNoZS5nZXQoaWRlbnRpZmllci5pbXBsKCkpKSB7
CkBAIC0xMDMsNyArMTAzLDcgQEAgTWV0aG9kTGlzdCBPYmpjQ2xhc3M6Om1ldGhvZHNOYW1lZChj
b25zdAogICAgICAgICByZXR1cm4gbWV0aG9kTGlzdDsKICAgICB9CiAKLSAgICBDU3RyaW5nIGpz
TmFtZSA9IGlkZW50aWZpZXIuYXNjaWkoKTsKKyAgICBDU3RyaW5nIGpzTmFtZSA9IGlkZW50aWZp
ZXIudXN0cmluZygpLmFzY2lpKCk7CiAgICAgSlNOYW1lQ29udmVyc2lvbkJ1ZmZlciBidWZmZXI7
CiAgICAgY29udmVydEpTTWV0aG9kTmFtZVRvT2JqYyhqc05hbWUsIGJ1ZmZlcik7CiAgICAgUmV0
YWluUHRyPENGU3RyaW5nUmVmPiBtZXRob2ROYW1lKEFkb3B0Q0YsIENGU3RyaW5nQ3JlYXRlV2l0
aENTdHJpbmcoTlVMTCwgYnVmZmVyLmRhdGEoKSwga0NGU3RyaW5nRW5jb2RpbmdBU0NJSSkpOwpA
QCAtMTQzLDcgKzE0Myw3IEBAIE1ldGhvZExpc3QgT2JqY0NsYXNzOjptZXRob2RzTmFtZWQoY29u
c3QKICAgICByZXR1cm4gbWV0aG9kTGlzdDsKIH0KIAotRmllbGQqIE9iamNDbGFzczo6ZmllbGRO
YW1lZChjb25zdCBJZGVudGlmaWVyJiBpZGVudGlmaWVyLCBJbnN0YW5jZSogaW5zdGFuY2UpIGNv
bnN0CitGaWVsZCogT2JqY0NsYXNzOjpmaWVsZE5hbWVkKFByb3BlcnR5TmFtZSBpZGVudGlmaWVy
LCBJbnN0YW5jZSogaW5zdGFuY2UpIGNvbnN0CiB7CiAgICAgRmllbGQqIGZpZWxkID0gbV9maWVs
ZENhY2hlLmdldChpZGVudGlmaWVyLmltcGwoKSk7CiAgICAgaWYgKGZpZWxkKQpAQCAtMTUxLDcg
KzE1MSw3IEBAIEZpZWxkKiBPYmpjQ2xhc3M6OmZpZWxkTmFtZWQoY29uc3QgSWRlbnQKIAogICAg
IENsYXNzU3RydWN0UHRyIHRoaXNDbGFzcyA9IF9pc2E7CiAKLSAgICBDU3RyaW5nIGpzTmFtZSA9
IGlkZW50aWZpZXIuYXNjaWkoKTsKKyAgICBDU3RyaW5nIGpzTmFtZSA9IGlkZW50aWZpZXIudXN0
cmluZygpLmFzY2lpKCk7CiAgICAgUmV0YWluUHRyPENGU3RyaW5nUmVmPiBmaWVsZE5hbWUoQWRv
cHRDRiwgQ0ZTdHJpbmdDcmVhdGVXaXRoQ1N0cmluZyhOVUxMLCBqc05hbWUuZGF0YSgpLCBrQ0ZT
dHJpbmdFbmNvZGluZ0FTQ0lJKSk7CiAgICAgaWQgdGFyZ2V0T2JqZWN0ID0gKHN0YXRpY19jYXN0
PE9iamNJbnN0YW5jZSo+KGluc3RhbmNlKSktPmdldE9iamVjdCgpOwogICAgIGlkIGF0dHJpYnV0
ZXMgPSBbdGFyZ2V0T2JqZWN0IGF0dHJpYnV0ZUtleXNdOwpAQCAtMjIxLDE0ICsyMjEsMTQgQEAg
RmllbGQqIE9iamNDbGFzczo6ZmllbGROYW1lZChjb25zdCBJZGVudAogICAgIHJldHVybiBmaWVs
ZDsKIH0KIAotSlNWYWx1ZSBPYmpjQ2xhc3M6OmZhbGxiYWNrT2JqZWN0KEV4ZWNTdGF0ZSogZXhl
YywgSW5zdGFuY2UqIGluc3RhbmNlLCBjb25zdCBJZGVudGlmaWVyICZwcm9wZXJ0eU5hbWUpCitK
U1ZhbHVlIE9iamNDbGFzczo6ZmFsbGJhY2tPYmplY3QoRXhlY1N0YXRlKiBleGVjLCBJbnN0YW5j
ZSogaW5zdGFuY2UsIFByb3BlcnR5TmFtZSBwcm9wZXJ0eU5hbWUpCiB7CiAgICAgT2JqY0luc3Rh
bmNlKiBvYmpjSW5zdGFuY2UgPSBzdGF0aWNfY2FzdDxPYmpjSW5zdGFuY2UqPihpbnN0YW5jZSk7
CiAgICAgaWQgdGFyZ2V0T2JqZWN0ID0gb2JqY0luc3RhbmNlLT5nZXRPYmplY3QoKTsKICAgICAK
ICAgICBpZiAoIVt0YXJnZXRPYmplY3QgcmVzcG9uZHNUb1NlbGVjdG9yOkBzZWxlY3RvcihpbnZv
a2VVbmRlZmluZWRNZXRob2RGcm9tV2ViU2NyaXB0OndpdGhBcmd1bWVudHM6KV0pCiAgICAgICAg
IHJldHVybiBqc1VuZGVmaW5lZCgpOwotICAgIHJldHVybiBPYmpjRmFsbGJhY2tPYmplY3RJbXA6
OmNyZWF0ZShleGVjLCBleGVjLT5sZXhpY2FsR2xvYmFsT2JqZWN0KCksIG9iamNJbnN0YW5jZSwg
cHJvcGVydHlOYW1lKTsKKyAgICByZXR1cm4gT2JqY0ZhbGxiYWNrT2JqZWN0SW1wOjpjcmVhdGUo
ZXhlYywgZXhlYy0+bGV4aWNhbEdsb2JhbE9iamVjdCgpLCBvYmpjSW5zdGFuY2UsIHByb3BlcnR5
TmFtZS5pbXBsKCkpOwogfQogCiB9CkluZGV4OiBTb3VyY2UvV2ViQ29yZS9icmlkZ2Uvb2JqYy9v
YmpjX2luc3RhbmNlLmgKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL1dlYkNvcmUvYnJpZGdlL29iamMv
b2JqY19pbnN0YW5jZS5oCShyZXZpc2lvbiAxMTY2NjcpCisrKyBTb3VyY2UvV2ViQ29yZS9icmlk
Z2Uvb2JqYy9vYmpjX2luc3RhbmNlLmgJKHdvcmtpbmcgY29weSkKQEAgLTQ3LDE0ICs0NywxNCBA
QCBwdWJsaWM6CiAgICAgdmlydHVhbCBKU1ZhbHVlIHZhbHVlT2YoRXhlY1N0YXRlKikgY29uc3Q7
CiAgICAgdmlydHVhbCBKU1ZhbHVlIGRlZmF1bHRWYWx1ZShFeGVjU3RhdGUqLCBQcmVmZXJyZWRQ
cmltaXRpdmVUeXBlKSBjb25zdDsKIAotICAgIHZpcnR1YWwgSlNWYWx1ZSBnZXRNZXRob2QoRXhl
Y1N0YXRlKiBleGVjLCBjb25zdCBJZGVudGlmaWVyJiBwcm9wZXJ0eU5hbWUpOworICAgIHZpcnR1
YWwgSlNWYWx1ZSBnZXRNZXRob2QoRXhlY1N0YXRlKiwgUHJvcGVydHlOYW1lKTsKICAgICBKU1Zh
bHVlIGludm9rZU9iamNNZXRob2QoRXhlY1N0YXRlKiwgT2JqY01ldGhvZCogbWV0aG9kKTsKICAg
ICB2aXJ0dWFsIEpTVmFsdWUgaW52b2tlTWV0aG9kKEV4ZWNTdGF0ZSosIFJ1bnRpbWVNZXRob2Qq
IG1ldGhvZCk7CiAgICAgdmlydHVhbCBib29sIHN1cHBvcnRzSW52b2tlRGVmYXVsdE1ldGhvZCgp
IGNvbnN0OwogICAgIHZpcnR1YWwgSlNWYWx1ZSBpbnZva2VEZWZhdWx0TWV0aG9kKEV4ZWNTdGF0
ZSopOwogCi0gICAgSlNWYWx1ZSBnZXRWYWx1ZU9mVW5kZWZpbmVkRmllbGQoRXhlY1N0YXRlKiwg
Y29uc3QgSWRlbnRpZmllciYpIGNvbnN0OwotICAgIHZpcnR1YWwgYm9vbCBzZXRWYWx1ZU9mVW5k
ZWZpbmVkRmllbGQoRXhlY1N0YXRlKiwgY29uc3QgSWRlbnRpZmllciYsIEpTVmFsdWUpOworICAg
IEpTVmFsdWUgZ2V0VmFsdWVPZlVuZGVmaW5lZEZpZWxkKEV4ZWNTdGF0ZSosIFByb3BlcnR5TmFt
ZSkgY29uc3Q7CisgICAgdmlydHVhbCBib29sIHNldFZhbHVlT2ZVbmRlZmluZWRGaWVsZChFeGVj
U3RhdGUqLCBQcm9wZXJ0eU5hbWUsIEpTVmFsdWUpOwogCiAgICAgT2JqZWN0U3RydWN0UHRyIGdl
dE9iamVjdCgpIGNvbnN0IHsgcmV0dXJuIF9pbnN0YW5jZS5nZXQoKTsgfQogICAgIApJbmRleDog
U291cmNlL1dlYkNvcmUvYnJpZGdlL29iamMvb2JqY19pbnN0YW5jZS5tbQo9PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0t
LSBTb3VyY2UvV2ViQ29yZS9icmlkZ2Uvb2JqYy9vYmpjX2luc3RhbmNlLm1tCShyZXZpc2lvbiAx
MTY2NjcpCisrKyBTb3VyY2UvV2ViQ29yZS9icmlkZ2Uvb2JqYy9vYmpjX2luc3RhbmNlLm1tCSh3
b3JraW5nIGNvcHkpCkBAIC0xODEsNyArMTgxLDcgQEAgYm9vbCBPYmpjSW5zdGFuY2U6OnN1cHBv
cnRzSW52b2tlRGVmYXVsdAogCiBjbGFzcyBPYmpDUnVudGltZU1ldGhvZCA6IHB1YmxpYyBSdW50
aW1lTWV0aG9kIHsKIHB1YmxpYzoKLSAgICBzdGF0aWMgT2JqQ1J1bnRpbWVNZXRob2QqIGNyZWF0
ZShFeGVjU3RhdGUqIGV4ZWMsIEpTR2xvYmFsT2JqZWN0KiBnbG9iYWxPYmplY3QsIGNvbnN0IElk
ZW50aWZpZXImIG5hbWUsIEJpbmRpbmdzOjpNZXRob2RMaXN0JiBsaXN0KQorICAgIHN0YXRpYyBP
YmpDUnVudGltZU1ldGhvZCogY3JlYXRlKEV4ZWNTdGF0ZSogZXhlYywgSlNHbG9iYWxPYmplY3Qq
IGdsb2JhbE9iamVjdCwgY29uc3QgVVN0cmluZyYgbmFtZSwgQmluZGluZ3M6Ok1ldGhvZExpc3Qm
IGxpc3QpCiAgICAgewogICAgICAgICAvLyBGSVhNRTogZGVwcmVjYXRlZEdldERPTVN0cnVjdHVy
ZSB1c2VzIHRoZSBwcm90b3R5cGUgb2ZmIG9mIHRoZSB3cm9uZyBnbG9iYWwgb2JqZWN0CiAgICAg
ICAgIC8vIFdlIG5lZWQgdG8gcGFzcyBpbiB0aGUgcmlnaHQgZ2xvYmFsIG9iamVjdCBmb3IgImki
LgpAQCAtMjA2LDcgKzIwNiw3IEBAIHByaXZhdGU6CiAgICAgewogICAgIH0KIAotICAgIHZvaWQg
ZmluaXNoQ3JlYXRpb24oSlNHbG9iYWxEYXRhJiBnbG9iYWxEYXRhLCBjb25zdCBJZGVudGlmaWVy
JiBuYW1lKQorICAgIHZvaWQgZmluaXNoQ3JlYXRpb24oSlNHbG9iYWxEYXRhJiBnbG9iYWxEYXRh
LCBjb25zdCBVU3RyaW5nJiBuYW1lKQogICAgIHsKICAgICAgICAgQmFzZTo6ZmluaXNoQ3JlYXRp
b24oZ2xvYmFsRGF0YSwgbmFtZSk7CiAgICAgICAgIEFTU0VSVChpbmhlcml0cygmc19pbmZvKSk7
CkBAIC0yMTUsMTAgKzIxNSwxMCBAQCBwcml2YXRlOgogCiBjb25zdCBDbGFzc0luZm8gT2JqQ1J1
bnRpbWVNZXRob2Q6OnNfaW5mbyA9IHsgIk9iakNSdW50aW1lTWV0aG9kIiwgJlJ1bnRpbWVNZXRo
b2Q6OnNfaW5mbywgMCwgMCwgQ1JFQVRFX01FVEhPRF9UQUJMRShPYmpDUnVudGltZU1ldGhvZCkg
fTsKIAotSlNWYWx1ZSBPYmpjSW5zdGFuY2U6OmdldE1ldGhvZChFeGVjU3RhdGUqIGV4ZWMsIGNv
bnN0IElkZW50aWZpZXImIHByb3BlcnR5TmFtZSkKK0pTVmFsdWUgT2JqY0luc3RhbmNlOjpnZXRN
ZXRob2QoRXhlY1N0YXRlKiBleGVjLCBQcm9wZXJ0eU5hbWUgcHJvcGVydHlOYW1lKQogewogICAg
IE1ldGhvZExpc3QgbWV0aG9kTGlzdCA9IGdldENsYXNzKCktPm1ldGhvZHNOYW1lZChwcm9wZXJ0
eU5hbWUsIHRoaXMpOwotICAgIHJldHVybiBPYmpDUnVudGltZU1ldGhvZDo6Y3JlYXRlKGV4ZWMs
IGV4ZWMtPmxleGljYWxHbG9iYWxPYmplY3QoKSwgcHJvcGVydHlOYW1lLCBtZXRob2RMaXN0KTsK
KyAgICByZXR1cm4gT2JqQ1J1bnRpbWVNZXRob2Q6OmNyZWF0ZShleGVjLCBleGVjLT5sZXhpY2Fs
R2xvYmFsT2JqZWN0KCksIHByb3BlcnR5TmFtZS51c3RyaW5nKCksIG1ldGhvZExpc3QpOwogfQog
CiBKU1ZhbHVlIE9iamNJbnN0YW5jZTo6aW52b2tlTWV0aG9kKEV4ZWNTdGF0ZSogZXhlYywgUnVu
dGltZU1ldGhvZCogcnVudGltZU1ldGhvZCkKQEAgLTQwMSw3ICs0MDEsNyBAQCBKU1ZhbHVlIE9i
amNJbnN0YW5jZTo6aW52b2tlRGVmYXVsdE1ldGhvCiAgICAgcmV0dXJuIGNvbnN0X2Nhc3Q8SlNW
YWx1ZSY+KHJlc3VsdCk7CiB9CiAKLWJvb2wgT2JqY0luc3RhbmNlOjpzZXRWYWx1ZU9mVW5kZWZp
bmVkRmllbGQoRXhlY1N0YXRlKiBleGVjLCBjb25zdCBJZGVudGlmaWVyJiBwcm9wZXJ0eSwgSlNW
YWx1ZSBhVmFsdWUpCitib29sIE9iamNJbnN0YW5jZTo6c2V0VmFsdWVPZlVuZGVmaW5lZEZpZWxk
KEV4ZWNTdGF0ZSogZXhlYywgUHJvcGVydHlOYW1lIHByb3BlcnR5LCBKU1ZhbHVlIGFWYWx1ZSkK
IHsKICAgICBpZCB0YXJnZXRPYmplY3QgPSBnZXRPYmplY3QoKTsKICAgICBpZiAoIVt0YXJnZXRP
YmplY3QgcmVzcG9uZHNUb1NlbGVjdG9yOkBzZWxlY3RvcihzZXRWYWx1ZTpmb3JVbmRlZmluZWRL
ZXk6KV0pCkBAIC00MTgsNyArNDE4LDcgQEAgYm9vbCBPYmpjSW5zdGFuY2U6OnNldFZhbHVlT2ZV
bmRlZmluZWRGaQogICAgICAgICBPYmpjVmFsdWUgb2JqY1ZhbHVlID0gY29udmVydFZhbHVlVG9P
YmpjVmFsdWUoZXhlYywgYVZhbHVlLCBPYmpjT2JqZWN0VHlwZSk7CiAKICAgICAgICAgQHRyeSB7
Ci0gICAgICAgICAgICBbdGFyZ2V0T2JqZWN0IHNldFZhbHVlOm9iamNWYWx1ZS5vYmplY3RWYWx1
ZSBmb3JVbmRlZmluZWRLZXk6W05TU3RyaW5nIHN0cmluZ1dpdGhDU3RyaW5nOnByb3BlcnR5LmFz
Y2lpKCkuZGF0YSgpIGVuY29kaW5nOk5TQVNDSUlTdHJpbmdFbmNvZGluZ11dOworICAgICAgICAg
ICAgW3RhcmdldE9iamVjdCBzZXRWYWx1ZTpvYmpjVmFsdWUub2JqZWN0VmFsdWUgZm9yVW5kZWZp
bmVkS2V5OltOU1N0cmluZyBzdHJpbmdXaXRoQ1N0cmluZzpwcm9wZXJ0eS51c3RyaW5nKCkuYXNj
aWkoKS5kYXRhKCkgZW5jb2Rpbmc6TlNBU0NJSVN0cmluZ0VuY29kaW5nXV07CiAgICAgICAgIH0g
QGNhdGNoKE5TRXhjZXB0aW9uKiBsb2NhbEV4Y2VwdGlvbikgewogICAgICAgICAgICAgLy8gRG8g
bm90aGluZy4gIENsYXNzIGRpZCBub3Qgb3ZlcnJpZGUgdmFsdWVGb3JVbmRlZmluZWRLZXk6Lgog
ICAgICAgICB9CkBAIC00MjksNyArNDI5LDcgQEAgYm9vbCBPYmpjSW5zdGFuY2U6OnNldFZhbHVl
T2ZVbmRlZmluZWRGaQogICAgIHJldHVybiB0cnVlOwogfQogCi1KU1ZhbHVlIE9iamNJbnN0YW5j
ZTo6Z2V0VmFsdWVPZlVuZGVmaW5lZEZpZWxkKEV4ZWNTdGF0ZSogZXhlYywgY29uc3QgSWRlbnRp
ZmllciYgcHJvcGVydHkpIGNvbnN0CitKU1ZhbHVlIE9iamNJbnN0YW5jZTo6Z2V0VmFsdWVPZlVu
ZGVmaW5lZEZpZWxkKEV4ZWNTdGF0ZSogZXhlYywgUHJvcGVydHlOYW1lIHByb3BlcnR5KSBjb25z
dAogewogICAgIEpTVmFsdWUgcmVzdWx0ID0ganNVbmRlZmluZWQoKTsKICAgICAKQEAgLTQ0NCw3
ICs0NDQsNyBAQCBKU1ZhbHVlIE9iamNJbnN0YW5jZTo6Z2V0VmFsdWVPZlVuZGVmaW5lCiAgICAg
ICAgIHNldEdsb2JhbEV4Y2VwdGlvbihuaWwpOwogICAgIAogICAgICAgICBAdHJ5IHsKLSAgICAg
ICAgICAgIGlkIG9iamNWYWx1ZSA9IFt0YXJnZXRPYmplY3QgdmFsdWVGb3JVbmRlZmluZWRLZXk6
W05TU3RyaW5nIHN0cmluZ1dpdGhDU3RyaW5nOnByb3BlcnR5LmFzY2lpKCkuZGF0YSgpIGVuY29k
aW5nOk5TQVNDSUlTdHJpbmdFbmNvZGluZ11dOworICAgICAgICAgICAgaWQgb2JqY1ZhbHVlID0g
W3RhcmdldE9iamVjdCB2YWx1ZUZvclVuZGVmaW5lZEtleTpbTlNTdHJpbmcgc3RyaW5nV2l0aENT
dHJpbmc6cHJvcGVydHkudXN0cmluZygpLmFzY2lpKCkuZGF0YSgpIGVuY29kaW5nOk5TQVNDSUlT
dHJpbmdFbmNvZGluZ11dOwogICAgICAgICAgICAgcmVzdWx0ID0gY29udmVydE9iamNWYWx1ZVRv
VmFsdWUoZXhlYywgJm9iamNWYWx1ZSwgT2JqY09iamVjdFR5cGUsIG1fcm9vdE9iamVjdC5nZXQo
KSk7CiAgICAgICAgIH0gQGNhdGNoKE5TRXhjZXB0aW9uKiBsb2NhbEV4Y2VwdGlvbikgewogICAg
ICAgICAgICAgLy8gRG8gbm90aGluZy4gIENsYXNzIGRpZCBub3Qgb3ZlcnJpZGUgdmFsdWVGb3JV
bmRlZmluZWRLZXk6LgpJbmRleDogU291cmNlL1dlYkNvcmUvYnJpZGdlL29iamMvb2JqY19ydW50
aW1lLmgKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PQotLS0gU291cmNlL1dlYkNvcmUvYnJpZGdlL29iamMvb2JqY19ydW50
aW1lLmgJKHJldmlzaW9uIDExNjY2NykKKysrIFNvdXJjZS9XZWJDb3JlL2JyaWRnZS9vYmpjL29i
amNfcnVudGltZS5oCSh3b3JraW5nIGNvcHkpCkBAIC05NCw3ICs5NCw3IEBAIGNsYXNzIE9iamNG
YWxsYmFja09iamVjdEltcCA6IHB1YmxpYyBKU04KIHB1YmxpYzoKICAgICB0eXBlZGVmIEpTTm9u
RmluYWxPYmplY3QgQmFzZTsKIAotICAgIHN0YXRpYyBPYmpjRmFsbGJhY2tPYmplY3RJbXAqIGNy
ZWF0ZShFeGVjU3RhdGUqIGV4ZWMsIEpTR2xvYmFsT2JqZWN0KiBnbG9iYWxPYmplY3QsIE9iamNJ
bnN0YW5jZSogaW5zdGFuY2UsIGNvbnN0IElkZW50aWZpZXImIHByb3BlcnR5TmFtZSkKKyAgICBz
dGF0aWMgT2JqY0ZhbGxiYWNrT2JqZWN0SW1wKiBjcmVhdGUoRXhlY1N0YXRlKiBleGVjLCBKU0ds
b2JhbE9iamVjdCogZ2xvYmFsT2JqZWN0LCBPYmpjSW5zdGFuY2UqIGluc3RhbmNlLCBjb25zdCBV
U3RyaW5nJiBwcm9wZXJ0eU5hbWUpCiAgICAgewogICAgICAgICAvLyBGSVhNRTogZGVwcmVjYXRl
ZEdldERPTVN0cnVjdHVyZSB1c2VzIHRoZSBwcm90b3R5cGUgb2ZmIG9mIHRoZSB3cm9uZyBnbG9i
YWwgb2JqZWN0CiAgICAgICAgIFN0cnVjdHVyZSogZG9tU3RydWN0dXJlID0gV2ViQ29yZTo6ZGVw
cmVjYXRlZEdldERPTVN0cnVjdHVyZTxPYmpjRmFsbGJhY2tPYmplY3RJbXA+KGV4ZWMpOwpAQCAt
MTA1LDcgKzEwNSw3IEBAIHB1YmxpYzoKIAogICAgIHN0YXRpYyBjb25zdCBDbGFzc0luZm8gc19p
bmZvOwogCi0gICAgY29uc3QgSWRlbnRpZmllciYgcHJvcGVydHlOYW1lKCkgY29uc3QgeyByZXR1
cm4gX2l0ZW07IH0KKyAgICBjb25zdCBVU3RyaW5nJiBwcm9wZXJ0eU5hbWUoKSBjb25zdCB7IHJl
dHVybiBfaXRlbTsgfQogCiAgICAgc3RhdGljIE9iamVjdFByb3RvdHlwZSogY3JlYXRlUHJvdG90
eXBlKEV4ZWNTdGF0ZSosIEpTR2xvYmFsT2JqZWN0KiBnbG9iYWxPYmplY3QpCiAgICAgewpAQCAt
MTIxLDIwICsxMjEsMjAgQEAgcHJvdGVjdGVkOgogICAgIHZvaWQgZmluaXNoQ3JlYXRpb24oSlNH
bG9iYWxPYmplY3QqKTsKIAogcHJpdmF0ZToKLSAgICBPYmpjRmFsbGJhY2tPYmplY3RJbXAoSlNH
bG9iYWxPYmplY3QqLCBTdHJ1Y3R1cmUqLCBPYmpjSW5zdGFuY2UqLCBjb25zdCBJZGVudGlmaWVy
JiBwcm9wZXJ0eU5hbWUpOworICAgIE9iamNGYWxsYmFja09iamVjdEltcChKU0dsb2JhbE9iamVj
dCosIFN0cnVjdHVyZSosIE9iamNJbnN0YW5jZSosIGNvbnN0IFVTdHJpbmcmIHByb3BlcnR5TmFt
ZSk7CiAgICAgc3RhdGljIHZvaWQgZGVzdHJveShKU0NlbGwqKTsKICAgICBzdGF0aWMgY29uc3Qg
dW5zaWduZWQgU3RydWN0dXJlRmxhZ3MgPSBPdmVycmlkZXNHZXRPd25Qcm9wZXJ0eVNsb3QgfCBK
U09iamVjdDo6U3RydWN0dXJlRmxhZ3M7Ci0gICAgc3RhdGljIGJvb2wgZ2V0T3duUHJvcGVydHlT
bG90KEpTQ2VsbCosIEV4ZWNTdGF0ZSosIGNvbnN0IElkZW50aWZpZXImLCBQcm9wZXJ0eVNsb3Qm
KTsKLSAgICBzdGF0aWMgYm9vbCBnZXRPd25Qcm9wZXJ0eURlc2NyaXB0b3IoSlNPYmplY3QqLCBF
eGVjU3RhdGUqLCBjb25zdCBJZGVudGlmaWVyJiwgUHJvcGVydHlEZXNjcmlwdG9yJik7Ci0gICAg
c3RhdGljIHZvaWQgcHV0KEpTQ2VsbCosIEV4ZWNTdGF0ZSosIGNvbnN0IElkZW50aWZpZXImIHBy
b3BlcnR5TmFtZSwgSlNWYWx1ZSwgUHV0UHJvcGVydHlTbG90Jik7CisgICAgc3RhdGljIGJvb2wg
Z2V0T3duUHJvcGVydHlTbG90KEpTQ2VsbCosIEV4ZWNTdGF0ZSosIFByb3BlcnR5TmFtZSwgUHJv
cGVydHlTbG90Jik7CisgICAgc3RhdGljIGJvb2wgZ2V0T3duUHJvcGVydHlEZXNjcmlwdG9yKEpT
T2JqZWN0KiwgRXhlY1N0YXRlKiwgUHJvcGVydHlOYW1lLCBQcm9wZXJ0eURlc2NyaXB0b3ImKTsK
KyAgICBzdGF0aWMgdm9pZCBwdXQoSlNDZWxsKiwgRXhlY1N0YXRlKiwgUHJvcGVydHlOYW1lLCBK
U1ZhbHVlLCBQdXRQcm9wZXJ0eVNsb3QmKTsKICAgICBzdGF0aWMgQ2FsbFR5cGUgZ2V0Q2FsbERh
dGEoSlNDZWxsKiwgQ2FsbERhdGEmKTsKLSAgICBzdGF0aWMgYm9vbCBkZWxldGVQcm9wZXJ0eShK
U0NlbGwqLCBFeGVjU3RhdGUqLCBjb25zdCBJZGVudGlmaWVyJiBwcm9wZXJ0eU5hbWUpOworICAg
IHN0YXRpYyBib29sIGRlbGV0ZVByb3BlcnR5KEpTQ2VsbCosIEV4ZWNTdGF0ZSosIFByb3BlcnR5
TmFtZSk7CiAgICAgc3RhdGljIEpTVmFsdWUgZGVmYXVsdFZhbHVlKGNvbnN0IEpTT2JqZWN0Kiwg
RXhlY1N0YXRlKiwgUHJlZmVycmVkUHJpbWl0aXZlVHlwZSk7CiAKICAgICBib29sIHRvQm9vbGVh
bihFeGVjU3RhdGUqKSBjb25zdDsgLy8gRklYTUU6IEN1cnJlbnRseSB0aGlzIGlzIGJyb2tlbiBi
ZWNhdXNlIG5vbmUgb2YgdGhlIHN1cGVyY2xhc3NlcyBhcmUgbWFya2VkIHZpcnR1YWwuIFdlIG5l
ZWQgdG8gc29sdmUgdGhpcyBpbiB0aGUgbG9uZ2VyIHRlcm0uCiAKICAgICBSZWZQdHI8T2JqY0lu
c3RhbmNlPiBfaW5zdGFuY2U7Ci0gICAgSWRlbnRpZmllciBfaXRlbTsKKyAgICBVU3RyaW5nIF9p
dGVtOwogfTsKIAogfSAvLyBuYW1lc3BhY2UgQmluZGluZ3MKSW5kZXg6IFNvdXJjZS9XZWJDb3Jl
L2JyaWRnZS9vYmpjL29iamNfcnVudGltZS5tbQo9PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2ViQ29y
ZS9icmlkZ2Uvb2JqYy9vYmpjX3J1bnRpbWUubW0JKHJldmlzaW9uIDExNjY2NykKKysrIFNvdXJj
ZS9XZWJDb3JlL2JyaWRnZS9vYmpjL29iamNfcnVudGltZS5tbQkod29ya2luZyBjb3B5KQpAQCAt
MTkyLDcgKzE5Miw3IEBAIHVuc2lnbmVkIGludCBPYmpjQXJyYXk6OmdldExlbmd0aCgpIGNvbnMK
IAogY29uc3QgQ2xhc3NJbmZvIE9iamNGYWxsYmFja09iamVjdEltcDo6c19pbmZvID0geyAiT2Jq
Y0ZhbGxiYWNrT2JqZWN0IiwgJkpTTm9uRmluYWxPYmplY3Q6OnNfaW5mbywgMCwgMCwgQ1JFQVRF
X01FVEhPRF9UQUJMRShPYmpjRmFsbGJhY2tPYmplY3RJbXApIH07CiAKLU9iamNGYWxsYmFja09i
amVjdEltcDo6T2JqY0ZhbGxiYWNrT2JqZWN0SW1wKEpTR2xvYmFsT2JqZWN0KiBnbG9iYWxPYmpl
Y3QsIFN0cnVjdHVyZSogc3RydWN0dXJlLCBPYmpjSW5zdGFuY2UqIGksIGNvbnN0IElkZW50aWZp
ZXImIHByb3BlcnR5TmFtZSkKK09iamNGYWxsYmFja09iamVjdEltcDo6T2JqY0ZhbGxiYWNrT2Jq
ZWN0SW1wKEpTR2xvYmFsT2JqZWN0KiBnbG9iYWxPYmplY3QsIFN0cnVjdHVyZSogc3RydWN0dXJl
LCBPYmpjSW5zdGFuY2UqIGksIGNvbnN0IFVTdHJpbmcmIHByb3BlcnR5TmFtZSkKICAgICA6IEpT
Tm9uRmluYWxPYmplY3QoZ2xvYmFsT2JqZWN0LT5nbG9iYWxEYXRhKCksIHN0cnVjdHVyZSkKICAg
ICAsIF9pbnN0YW5jZShpKQogICAgICwgX2l0ZW0ocHJvcGVydHlOYW1lKQpAQCAtMjEwLDIxICsy
MTAsMjEgQEAgdm9pZCBPYmpjRmFsbGJhY2tPYmplY3RJbXA6OmZpbmlzaENyZWF0aQogICAgIEFT
U0VSVChpbmhlcml0cygmc19pbmZvKSk7CiB9CiAKLWJvb2wgT2JqY0ZhbGxiYWNrT2JqZWN0SW1w
OjpnZXRPd25Qcm9wZXJ0eVNsb3QoSlNDZWxsKiwgRXhlY1N0YXRlKiwgY29uc3QgSWRlbnRpZmll
ciYsIFByb3BlcnR5U2xvdCYgc2xvdCkKK2Jvb2wgT2JqY0ZhbGxiYWNrT2JqZWN0SW1wOjpnZXRP
d25Qcm9wZXJ0eVNsb3QoSlNDZWxsKiwgRXhlY1N0YXRlKiwgUHJvcGVydHlOYW1lLCBQcm9wZXJ0
eVNsb3QmIHNsb3QpCiB7CiAgICAgLy8ga2VlcCB0aGUgcHJvdG90eXBlIGZyb20gZ2V0dGluZyBj
YWxsZWQgaW5zdGVhZCBvZiBqdXN0IHJldHVybmluZyBmYWxzZQogICAgIHNsb3Quc2V0VW5kZWZp
bmVkKCk7CiAgICAgcmV0dXJuIHRydWU7CiB9CiAKLWJvb2wgT2JqY0ZhbGxiYWNrT2JqZWN0SW1w
OjpnZXRPd25Qcm9wZXJ0eURlc2NyaXB0b3IoSlNPYmplY3QqLCBFeGVjU3RhdGUqLCBjb25zdCBJ
ZGVudGlmaWVyJiwgUHJvcGVydHlEZXNjcmlwdG9yJiBkZXNjcmlwdG9yKQorYm9vbCBPYmpjRmFs
bGJhY2tPYmplY3RJbXA6OmdldE93blByb3BlcnR5RGVzY3JpcHRvcihKU09iamVjdCosIEV4ZWNT
dGF0ZSosIFByb3BlcnR5TmFtZSwgUHJvcGVydHlEZXNjcmlwdG9yJiBkZXNjcmlwdG9yKQogewog
ICAgIC8vIGtlZXAgdGhlIHByb3RvdHlwZSBmcm9tIGdldHRpbmcgY2FsbGVkIGluc3RlYWQgb2Yg
anVzdCByZXR1cm5pbmcgZmFsc2UKICAgICBkZXNjcmlwdG9yLnNldFVuZGVmaW5lZCgpOwogICAg
IHJldHVybiB0cnVlOwogfQogCi12b2lkIE9iamNGYWxsYmFja09iamVjdEltcDo6cHV0KEpTQ2Vs
bCosIEV4ZWNTdGF0ZSosIGNvbnN0IElkZW50aWZpZXImLCBKU1ZhbHVlLCBQdXRQcm9wZXJ0eVNs
b3QmKQordm9pZCBPYmpjRmFsbGJhY2tPYmplY3RJbXA6OnB1dChKU0NlbGwqLCBFeGVjU3RhdGUq
LCBQcm9wZXJ0eU5hbWUsIEpTVmFsdWUsIFB1dFByb3BlcnR5U2xvdCYpCiB7CiB9CiAKQEAgLTI0
OSw3ICsyNDksNyBAQCBzdGF0aWMgRW5jb2RlZEpTVmFsdWUgSlNDX0hPU1RfQ0FMTCBjYWxsCiAg
ICAgaWYgKFt0YXJnZXRPYmplY3QgcmVzcG9uZHNUb1NlbGVjdG9yOkBzZWxlY3RvcihpbnZva2VV
bmRlZmluZWRNZXRob2RGcm9tV2ViU2NyaXB0OndpdGhBcmd1bWVudHM6KV0pewogICAgICAgICBP
YmpjQ2xhc3MqIG9iamNDbGFzcyA9IHN0YXRpY19jYXN0PE9iamNDbGFzcyo+KG9iamNJbnN0YW5j
ZS0+Z2V0Q2xhc3MoKSk7CiAgICAgICAgIE93blB0cjxPYmpjTWV0aG9kPiBmYWxsYmFja01ldGhv
ZChhZG9wdFB0cihuZXcgT2JqY01ldGhvZChvYmpjQ2xhc3MtPmlzYSgpLCBAc2VsZWN0b3IoaW52
b2tlVW5kZWZpbmVkTWV0aG9kRnJvbVdlYlNjcmlwdDp3aXRoQXJndW1lbnRzOikpKSk7Ci0gICAg
ICAgIGNvbnN0IElkZW50aWZpZXImIG5hbWVJZGVudGlmaWVyID0gc3RhdGljX2Nhc3Q8T2JqY0Zh
bGxiYWNrT2JqZWN0SW1wKj4oZXhlYy0+Y2FsbGVlKCkpLT5wcm9wZXJ0eU5hbWUoKTsKKyAgICAg
ICAgY29uc3QgVVN0cmluZyYgbmFtZUlkZW50aWZpZXIgPSBzdGF0aWNfY2FzdDxPYmpjRmFsbGJh
Y2tPYmplY3RJbXAqPihleGVjLT5jYWxsZWUoKSktPnByb3BlcnR5TmFtZSgpOwogICAgICAgICBS
ZXRhaW5QdHI8Q0ZTdHJpbmdSZWY+IG5hbWUoQWRvcHRDRiwgQ0ZTdHJpbmdDcmVhdGVXaXRoQ2hh
cmFjdGVycygwLCBuYW1lSWRlbnRpZmllci5jaGFyYWN0ZXJzKCksIG5hbWVJZGVudGlmaWVyLmxl
bmd0aCgpKSk7CiAgICAgICAgIGZhbGxiYWNrTWV0aG9kLT5zZXRKYXZhU2NyaXB0TmFtZShuYW1l
LmdldCgpKTsKICAgICAgICAgcmVzdWx0ID0gb2JqY0luc3RhbmNlLT5pbnZva2VPYmpjTWV0aG9k
KGV4ZWMsIGZhbGxiYWNrTWV0aG9kLmdldCgpKTsKQEAgLTI3MCw3ICsyNzAsNyBAQCBDYWxsVHlw
ZSBPYmpjRmFsbGJhY2tPYmplY3RJbXA6OmdldENhbGxECiAgICAgcmV0dXJuIENhbGxUeXBlSG9z
dDsKIH0KIAotYm9vbCBPYmpjRmFsbGJhY2tPYmplY3RJbXA6OmRlbGV0ZVByb3BlcnR5KEpTQ2Vs
bCosIEV4ZWNTdGF0ZSosIGNvbnN0IElkZW50aWZpZXImKQorYm9vbCBPYmpjRmFsbGJhY2tPYmpl
Y3RJbXA6OmRlbGV0ZVByb3BlcnR5KEpTQ2VsbCosIEV4ZWNTdGF0ZSosIFByb3BlcnR5TmFtZSkK
IHsKICAgICByZXR1cm4gZmFsc2U7CiB9CkBAIC0yNzgsNyArMjc4LDcgQEAgYm9vbCBPYmpjRmFs
bGJhY2tPYmplY3RJbXA6OmRlbGV0ZVByb3BlcgogSlNWYWx1ZSBPYmpjRmFsbGJhY2tPYmplY3RJ
bXA6OmRlZmF1bHRWYWx1ZShjb25zdCBKU09iamVjdCogb2JqZWN0LCBFeGVjU3RhdGUqIGV4ZWMs
IFByZWZlcnJlZFByaW1pdGl2ZVR5cGUpCiB7CiAgICAgY29uc3QgT2JqY0ZhbGxiYWNrT2JqZWN0
SW1wKiB0aGlzT2JqZWN0ID0ganNDYXN0PGNvbnN0IE9iamNGYWxsYmFja09iamVjdEltcCo+KG9i
amVjdCk7Ci0gICAgcmV0dXJuIHRoaXNPYmplY3QtPl9pbnN0YW5jZS0+Z2V0VmFsdWVPZlVuZGVm
aW5lZEZpZWxkKGV4ZWMsIHRoaXNPYmplY3QtPl9pdGVtKTsKKyAgICByZXR1cm4gdGhpc09iamVj
dC0+X2luc3RhbmNlLT5nZXRWYWx1ZU9mVW5kZWZpbmVkRmllbGQoZXhlYywgSWRlbnRpZmllcihl
eGVjLCB0aGlzT2JqZWN0LT5faXRlbSkpOwogfQogCiBib29sIE9iamNGYWxsYmFja09iamVjdElt
cDo6dG9Cb29sZWFuKEV4ZWNTdGF0ZSAqKSBjb25zdApJbmRleDogU291cmNlL1dlYkNvcmUvYnJp
ZGdlL3F0L3F0X2NsYXNzLmNwcAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2ViQ29yZS9icmlkZ2Uv
cXQvcXRfY2xhc3MuY3BwCShyZXZpc2lvbiAxMTY2NjcpCisrKyBTb3VyY2UvV2ViQ29yZS9icmlk
Z2UvcXQvcXRfY2xhc3MuY3BwCSh3b3JraW5nIGNvcHkpCkBAIC02Niw3ICs2Niw3IEBAIGNvbnN0
IGNoYXIqIFF0Q2xhc3M6Om5hbWUoKSBjb25zdAogLy8gYW5kIG5vdCBnZXQgd3JhcHBlZCBpbiBS
dW50aW1lTWV0aG9kKS4gQWxzbywgdXNlIHRoaXMgZm9yIG1ldGhvZHMsCiAvLyBzbyB3ZSBjYW4g
Y2FjaGUgdGhlIG9iamVjdCBhbmQgcmV0dXJuIHRoZSBzYW1lIG9iamVjdCBmb3IgdGhlIHNhbWUK
IC8vIGlkZW50aWZpZXIuCi1KU1ZhbHVlIFF0Q2xhc3M6OmZhbGxiYWNrT2JqZWN0KEV4ZWNTdGF0
ZSogZXhlYywgSW5zdGFuY2UqIGluc3QsIGNvbnN0IElkZW50aWZpZXImIGlkZW50aWZpZXIpCitK
U1ZhbHVlIFF0Q2xhc3M6OmZhbGxiYWNrT2JqZWN0KEV4ZWNTdGF0ZSogZXhlYywgSW5zdGFuY2Uq
IGluc3QsIFByb3BlcnR5TmFtZSBpZGVudGlmaWVyKQogewogICAgIFF0SW5zdGFuY2UqIHF0aW5z
dCA9IHN0YXRpY19jYXN0PFF0SW5zdGFuY2UqPihpbnN0KTsKIApAQCAtODYsNyArODYsNyBAQCBK
U1ZhbHVlIFF0Q2xhc3M6OmZhbGxiYWNrT2JqZWN0KEV4ZWNTdGF0CiAgICAgaWYgKG5vcm1hbC5j
b250YWlucygnKCcpICYmIChpbmRleCA9IG1fbWV0YU9iamVjdC0+aW5kZXhPZk1ldGhvZChub3Jt
YWwpKSAhPSAtMSkgewogICAgICAgICBRTWV0YU1ldGhvZCBtID0gbV9tZXRhT2JqZWN0LT5tZXRo
b2QoaW5kZXgpOwogICAgICAgICBpZiAobS5hY2Nlc3MoKSAhPSBRTWV0YU1ldGhvZDo6UHJpdmF0
ZSkgewotICAgICAgICAgICAgUXRSdW50aW1lTWV0YU1ldGhvZCogdmFsID0gUXRSdW50aW1lTWV0
YU1ldGhvZDo6Y3JlYXRlKGV4ZWMsIGlkZW50aWZpZXIsIHN0YXRpY19jYXN0PFF0SW5zdGFuY2Uq
PihpbnN0KSwgaW5kZXgsIG5vcm1hbCwgZmFsc2UpOworICAgICAgICAgICAgUXRSdW50aW1lTWV0
YU1ldGhvZCogdmFsID0gUXRSdW50aW1lTWV0YU1ldGhvZDo6Y3JlYXRlKGV4ZWMsIHVzdHJpbmcs
IHN0YXRpY19jYXN0PFF0SW5zdGFuY2UqPihpbnN0KSwgaW5kZXgsIG5vcm1hbCwgZmFsc2UpOwog
ICAgICAgICAgICAgcXRpbnN0LT5tX21ldGhvZHMuaW5zZXJ0KG5hbWUsIFdyaXRlQmFycmllcjxK
U09iamVjdD4oZXhlYy0+Z2xvYmFsRGF0YSgpLCBxdGluc3QtPmNyZWF0ZVJ1bnRpbWVPYmplY3Qo
ZXhlYyksIHZhbCkpOwogICAgICAgICAgICAgcmV0dXJuIHZhbDsKICAgICAgICAgfQpAQCAtMTA5
LDcgKzEwOSw3IEBAIEpTVmFsdWUgUXRDbGFzczo6ZmFsbGJhY2tPYmplY3QoRXhlY1N0YXQKICNl
bHNlCiAgICAgICAgIGlmIChub3JtYWwgPT0gbS5uYW1lKCkpIHsKICNlbmRpZgotICAgICAgICAg
ICAgUXRSdW50aW1lTWV0YU1ldGhvZCogdmFsID0gUXRSdW50aW1lTWV0YU1ldGhvZDo6Y3JlYXRl
KGV4ZWMsIGlkZW50aWZpZXIsIHN0YXRpY19jYXN0PFF0SW5zdGFuY2UqPihpbnN0KSwgaW5kZXgs
IG5vcm1hbCwgZmFsc2UpOworICAgICAgICAgICAgUXRSdW50aW1lTWV0YU1ldGhvZCogdmFsID0g
UXRSdW50aW1lTWV0YU1ldGhvZDo6Y3JlYXRlKGV4ZWMsIHVzdHJpbmcsIHN0YXRpY19jYXN0PFF0
SW5zdGFuY2UqPihpbnN0KSwgaW5kZXgsIG5vcm1hbCwgZmFsc2UpOwogICAgICAgICAgICAgcXRp
bnN0LT5tX21ldGhvZHMuaW5zZXJ0KG5hbWUsIFdyaXRlQmFycmllcjxKU09iamVjdD4oZXhlYy0+
Z2xvYmFsRGF0YSgpLCBxdGluc3QtPmNyZWF0ZVJ1bnRpbWVPYmplY3QoZXhlYyksIHZhbCkpOwog
ICAgICAgICAgICAgcmV0dXJuIHZhbDsKICAgICAgICAgfQpAQCAtMTE5LDcgKzExOSw3IEBAIEpT
VmFsdWUgUXRDbGFzczo6ZmFsbGJhY2tPYmplY3QoRXhlY1N0YXQKIH0KIAogLy8gVGhpcyBmdW5j
dGlvbmFsaXR5IGlzIGhhbmRsZWQgYnkgdGhlIGZhbGxiYWNrIGNhc2UgYWJvdmUuLi4KLU1ldGhv
ZExpc3QgUXRDbGFzczo6bWV0aG9kc05hbWVkKGNvbnN0IElkZW50aWZpZXImLCBJbnN0YW5jZSop
IGNvbnN0CitNZXRob2RMaXN0IFF0Q2xhc3M6Om1ldGhvZHNOYW1lZChQcm9wZXJ0eU5hbWUsIElu
c3RhbmNlKikgY29uc3QKIHsKICAgICByZXR1cm4gTWV0aG9kTGlzdCgpOwogfQpAQCAtMTI3LDcg
KzEyNyw3IEBAIE1ldGhvZExpc3QgUXRDbGFzczo6bWV0aG9kc05hbWVkKGNvbnN0IEkKIC8vICMj
IyB3ZSBtYXkgZW5kIHVwIHdpdGggYSBkaWZmZXJlbnQgc2VhcmNoIG9yZGVyIHRoYW4gUXRTY3Jp
cHQgYnkgbm90CiAvLyBmb2xkaW5nIHRoaXMgY29kZSBpbnRvIHRoZSBmYWxsYmFja01ldGhvZCBh
Ym92ZSwgYnV0IEZpZWxkcyBwcm9wYWdhdGUgb3V0CiAvLyBvZiB0aGUgYmluZGluZyBjb2RlCi1G
aWVsZCogUXRDbGFzczo6ZmllbGROYW1lZChjb25zdCBJZGVudGlmaWVyJiBpZGVudGlmaWVyLCBJ
bnN0YW5jZSogaW5zdGFuY2UpIGNvbnN0CitGaWVsZCogUXRDbGFzczo6ZmllbGROYW1lZChQcm9w
ZXJ0eU5hbWUgaWRlbnRpZmllciwgSW5zdGFuY2UqIGluc3RhbmNlKSBjb25zdAogewogICAgIC8v
IENoZWNrIHN0YXRpYyBwcm9wZXJ0aWVzIGZpcnN0CiAgICAgUXRJbnN0YW5jZSogcXRpbnN0ID0g
c3RhdGljX2Nhc3Q8UXRJbnN0YW5jZSo+KGluc3RhbmNlKTsKSW5kZXg6IFNvdXJjZS9XZWJDb3Jl
L2JyaWRnZS9xdC9xdF9jbGFzcy5oCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9XZWJDb3JlL2JyaWRn
ZS9xdC9xdF9jbGFzcy5oCShyZXZpc2lvbiAxMTY2NjcpCisrKyBTb3VyY2UvV2ViQ29yZS9icmlk
Z2UvcXQvcXRfY2xhc3MuaAkod29ya2luZyBjb3B5KQpAQCAtNDEsMTAgKzQxLDEwIEBAIHB1Ymxp
YzoKICAgICB2aXJ0dWFsIH5RdENsYXNzKCk7CiAKICAgICB2aXJ0dWFsIGNvbnN0IGNoYXIqIG5h
bWUoKSBjb25zdDsKLSAgICB2aXJ0dWFsIE1ldGhvZExpc3QgbWV0aG9kc05hbWVkKGNvbnN0IElk
ZW50aWZpZXImLCBJbnN0YW5jZSopIGNvbnN0OwotICAgIHZpcnR1YWwgRmllbGQqIGZpZWxkTmFt
ZWQoY29uc3QgSWRlbnRpZmllciYsIEluc3RhbmNlKikgY29uc3Q7CisgICAgdmlydHVhbCBNZXRo
b2RMaXN0IG1ldGhvZHNOYW1lZChQcm9wZXJ0eU5hbWUsIEluc3RhbmNlKikgY29uc3Q7CisgICAg
dmlydHVhbCBGaWVsZCogZmllbGROYW1lZChQcm9wZXJ0eU5hbWUsIEluc3RhbmNlKikgY29uc3Q7
CiAKLSAgICB2aXJ0dWFsIEpTVmFsdWUgZmFsbGJhY2tPYmplY3QoRXhlY1N0YXRlKiwgSW5zdGFu
Y2UqLCBjb25zdCBJZGVudGlmaWVyJik7CisgICAgdmlydHVhbCBKU1ZhbHVlIGZhbGxiYWNrT2Jq
ZWN0KEV4ZWNTdGF0ZSosIEluc3RhbmNlKiwgUHJvcGVydHlOYW1lKTsKIAogcHJpdmF0ZToKICAg
ICBRdENsYXNzKGNvbnN0IFF0Q2xhc3MmKTsgLy8gcHJvaGliaXQgY29weWluZwpJbmRleDogU291
cmNlL1dlYkNvcmUvYnJpZGdlL3F0L3F0X2luc3RhbmNlLmNwcAo9PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3Vy
Y2UvV2ViQ29yZS9icmlkZ2UvcXQvcXRfaW5zdGFuY2UuY3BwCShyZXZpc2lvbiAxMTY2NjcpCisr
KyBTb3VyY2UvV2ViQ29yZS9icmlkZ2UvcXQvcXRfaW5zdGFuY2UuY3BwCSh3b3JraW5nIGNvcHkp
CkBAIC0xNDgsMTIgKzE0OCwxMiBAQCBQYXNzUmVmUHRyPFF0SW5zdGFuY2U+IFF0SW5zdGFuY2U6
OmdldFF0CiAgICAgcmV0dXJuIHJldC5yZWxlYXNlKCk7CiB9CiAKLWJvb2wgUXRJbnN0YW5jZTo6
Z2V0T3duUHJvcGVydHlTbG90KEpTT2JqZWN0KiBvYmplY3QsIEV4ZWNTdGF0ZSogZXhlYywgY29u
c3QgSWRlbnRpZmllciYgcHJvcGVydHlOYW1lLCBQcm9wZXJ0eVNsb3QmIHNsb3QpCitib29sIFF0
SW5zdGFuY2U6OmdldE93blByb3BlcnR5U2xvdChKU09iamVjdCogb2JqZWN0LCBFeGVjU3RhdGUq
IGV4ZWMsIFByb3BlcnR5TmFtZSBwcm9wZXJ0eU5hbWUsIFByb3BlcnR5U2xvdCYgc2xvdCkKIHsK
ICAgICByZXR1cm4gSlNPYmplY3Q6OmdldE93blByb3BlcnR5U2xvdChvYmplY3QsIGV4ZWMsIHBy
b3BlcnR5TmFtZSwgc2xvdCk7CiB9CiAKLXZvaWQgUXRJbnN0YW5jZTo6cHV0KEpTT2JqZWN0KiBv
YmplY3QsIEV4ZWNTdGF0ZSogZXhlYywgY29uc3QgSWRlbnRpZmllciYgcHJvcGVydHlOYW1lLCBK
U1ZhbHVlIHZhbHVlLCBQdXRQcm9wZXJ0eVNsb3QmIHNsb3QpCit2b2lkIFF0SW5zdGFuY2U6OnB1
dChKU09iamVjdCogb2JqZWN0LCBFeGVjU3RhdGUqIGV4ZWMsIFByb3BlcnR5TmFtZSBwcm9wZXJ0
eU5hbWUsIEpTVmFsdWUgdmFsdWUsIFB1dFByb3BlcnR5U2xvdCYgc2xvdCkKIHsKICAgICBKU09i
amVjdDo6cHV0KG9iamVjdCwgZXhlYywgcHJvcGVydHlOYW1lLCB2YWx1ZSwgc2xvdCk7CiB9CkBA
IC0yNDgsMTIgKzI0OCwxMiBAQCB2b2lkIFF0SW5zdGFuY2U6OmdldFByb3BlcnR5TmFtZXMoRXhl
Y1N0CiAgICAgfQogfQogCi1KU1ZhbHVlIFF0SW5zdGFuY2U6OmdldE1ldGhvZChFeGVjU3RhdGUq
IGV4ZWMsIGNvbnN0IElkZW50aWZpZXImIHByb3BlcnR5TmFtZSkKK0pTVmFsdWUgUXRJbnN0YW5j
ZTo6Z2V0TWV0aG9kKEV4ZWNTdGF0ZSogZXhlYywgUHJvcGVydHlOYW1lIHByb3BlcnR5TmFtZSkK
IHsKICAgICBpZiAoIWdldENsYXNzKCkpCiAgICAgICAgIHJldHVybiBqc051bGwoKTsKICAgICBN
ZXRob2RMaXN0IG1ldGhvZExpc3QgPSBtX2NsYXNzLT5tZXRob2RzTmFtZWQocHJvcGVydHlOYW1l
LCB0aGlzKTsKLSAgICByZXR1cm4gUnVudGltZU1ldGhvZDo6Y3JlYXRlKGV4ZWMsIGV4ZWMtPmxl
eGljYWxHbG9iYWxPYmplY3QoKSwgV2ViQ29yZTo6ZGVwcmVjYXRlZEdldERPTVN0cnVjdHVyZTxS
dW50aW1lTWV0aG9kPihleGVjKSwgcHJvcGVydHlOYW1lLCBtZXRob2RMaXN0KTsKKyAgICByZXR1
cm4gUnVudGltZU1ldGhvZDo6Y3JlYXRlKGV4ZWMsIGV4ZWMtPmxleGljYWxHbG9iYWxPYmplY3Qo
KSwgV2ViQ29yZTo6ZGVwcmVjYXRlZEdldERPTVN0cnVjdHVyZTxSdW50aW1lTWV0aG9kPihleGVj
KSwgcHJvcGVydHlOYW1lLnVzdHJpbmcoKSwgbWV0aG9kTGlzdCk7CiB9CiAKIEpTVmFsdWUgUXRJ
bnN0YW5jZTo6aW52b2tlTWV0aG9kKEV4ZWNTdGF0ZSosIFJ1bnRpbWVNZXRob2QqKQpJbmRleDog
U291cmNlL1dlYkNvcmUvYnJpZGdlL3F0L3F0X2luc3RhbmNlLmgKPT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291
cmNlL1dlYkNvcmUvYnJpZGdlL3F0L3F0X2luc3RhbmNlLmgJKHJldmlzaW9uIDExNjY2NykKKysr
IFNvdXJjZS9XZWJDb3JlL2JyaWRnZS9xdC9xdF9pbnN0YW5jZS5oCSh3b3JraW5nIGNvcHkpCkBA
IC01MSw3ICs1MSw3IEBAIHB1YmxpYzoKIAogICAgIHZvaWQgdmlzaXRBZ2dyZWdhdGUoU2xvdFZp
c2l0b3ImKTsKIAotICAgIHZpcnR1YWwgSlNWYWx1ZSBnZXRNZXRob2QoRXhlY1N0YXRlKiBleGVj
LCBjb25zdCBJZGVudGlmaWVyJiBwcm9wZXJ0eU5hbWUpOworICAgIHZpcnR1YWwgSlNWYWx1ZSBn
ZXRNZXRob2QoRXhlY1N0YXRlKiwgUHJvcGVydHlOYW1lKTsKICAgICB2aXJ0dWFsIEpTVmFsdWUg
aW52b2tlTWV0aG9kKEV4ZWNTdGF0ZSosIFJ1bnRpbWVNZXRob2QqKTsKIAogICAgIHZpcnR1YWwg
dm9pZCBnZXRQcm9wZXJ0eU5hbWVzKEV4ZWNTdGF0ZSosIFByb3BlcnR5TmFtZUFycmF5Jik7CkBA
IC02NSw4ICs2NSw4IEBAIHB1YmxpYzoKIAogICAgIHN0YXRpYyBQYXNzUmVmUHRyPFF0SW5zdGFu
Y2U+IGdldFF0SW5zdGFuY2UoUU9iamVjdCosIFBhc3NSZWZQdHI8Um9vdE9iamVjdD4sIFFTY3Jp
cHRFbmdpbmU6OlZhbHVlT3duZXJzaGlwIG93bmVyc2hpcCk7CiAKLSAgICB2aXJ0dWFsIGJvb2wg
Z2V0T3duUHJvcGVydHlTbG90KEpTT2JqZWN0KiwgRXhlY1N0YXRlKiwgY29uc3QgSWRlbnRpZmll
ciYsIFByb3BlcnR5U2xvdCYpOwotICAgIHZpcnR1YWwgdm9pZCBwdXQoSlNPYmplY3QqLCBFeGVj
U3RhdGUqLCBjb25zdCBJZGVudGlmaWVyJiwgSlNWYWx1ZSwgUHV0UHJvcGVydHlTbG90Jik7Cisg
ICAgdmlydHVhbCBib29sIGdldE93blByb3BlcnR5U2xvdChKU09iamVjdCosIEV4ZWNTdGF0ZSos
IFByb3BlcnR5TmFtZSwgUHJvcGVydHlTbG90Jik7CisgICAgdmlydHVhbCB2b2lkIHB1dChKU09i
amVjdCosIEV4ZWNTdGF0ZSosIFByb3BlcnR5TmFtZSwgSlNWYWx1ZSwgUHV0UHJvcGVydHlTbG90
Jik7CiAKICAgICB2b2lkIHJlbW92ZUNhY2hlZE1ldGhvZChKU09iamVjdCopOwogCkluZGV4OiBT
b3VyY2UvV2ViQ29yZS9icmlkZ2UvcXQvcXRfcGl4bWFwcnVudGltZS5jcHAKPT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQot
LS0gU291cmNlL1dlYkNvcmUvYnJpZGdlL3F0L3F0X3BpeG1hcHJ1bnRpbWUuY3BwCShyZXZpc2lv
biAxMTY2NjcpCisrKyBTb3VyY2UvV2ViQ29yZS9icmlkZ2UvcXQvcXRfcGl4bWFwcnVudGltZS5j
cHAJKHdvcmtpbmcgY29weSkKQEAgLTUwLDggKzUwLDggQEAgbmFtZXNwYWNlIEJpbmRpbmdzIHsK
IGNsYXNzIFF0UGl4bWFwQ2xhc3MgOiBwdWJsaWMgQ2xhc3MgewogcHVibGljOgogICAgIFF0UGl4
bWFwQ2xhc3MoKTsKLSAgICB2aXJ0dWFsIE1ldGhvZExpc3QgbWV0aG9kc05hbWVkKGNvbnN0IElk
ZW50aWZpZXImLCBJbnN0YW5jZSopIGNvbnN0OwotICAgIHZpcnR1YWwgRmllbGQqIGZpZWxkTmFt
ZWQoY29uc3QgSWRlbnRpZmllciYsIEluc3RhbmNlKikgY29uc3Q7CisgICAgdmlydHVhbCBNZXRo
b2RMaXN0IG1ldGhvZHNOYW1lZChQcm9wZXJ0eU5hbWUsIEluc3RhbmNlKikgY29uc3Q7CisgICAg
dmlydHVhbCBGaWVsZCogZmllbGROYW1lZChQcm9wZXJ0eU5hbWUsIEluc3RhbmNlKikgY29uc3Q7
CiB9OwogCiAKQEAgLTIzOSwxMCArMjM5LDEwIEBAIENsYXNzKiBRdFBpeG1hcEluc3RhbmNlOjpn
ZXRDbGFzcygpIGNvbnMKICAgICByZXR1cm4gJnF0X3BpeG1hcF9tZXRhRGF0YS5jbHM7CiB9CiAK
LUpTVmFsdWUgUXRQaXhtYXBJbnN0YW5jZTo6Z2V0TWV0aG9kKEV4ZWNTdGF0ZSogZXhlYywgY29u
c3QgSWRlbnRpZmllciYgcHJvcGVydHlOYW1lKQorSlNWYWx1ZSBRdFBpeG1hcEluc3RhbmNlOjpn
ZXRNZXRob2QoRXhlY1N0YXRlKiBleGVjLCBQcm9wZXJ0eU5hbWUgcHJvcGVydHlOYW1lKQogewog
ICAgIE1ldGhvZExpc3QgbWV0aG9kTGlzdCA9IGdldENsYXNzKCktPm1ldGhvZHNOYW1lZChwcm9w
ZXJ0eU5hbWUsIHRoaXMpOwotICAgIHJldHVybiBSdW50aW1lTWV0aG9kOjpjcmVhdGUoZXhlYywg
ZXhlYy0+bGV4aWNhbEdsb2JhbE9iamVjdCgpLCBXZWJDb3JlOjpkZXByZWNhdGVkR2V0RE9NU3Ry
dWN0dXJlPFJ1bnRpbWVNZXRob2Q+KGV4ZWMpLCBwcm9wZXJ0eU5hbWUsIG1ldGhvZExpc3QpOwor
ICAgIHJldHVybiBSdW50aW1lTWV0aG9kOjpjcmVhdGUoZXhlYywgZXhlYy0+bGV4aWNhbEdsb2Jh
bE9iamVjdCgpLCBXZWJDb3JlOjpkZXByZWNhdGVkR2V0RE9NU3RydWN0dXJlPFJ1bnRpbWVNZXRo
b2Q+KGV4ZWMpLCBwcm9wZXJ0eU5hbWUudXN0cmluZygpLCBtZXRob2RMaXN0KTsKIH0KIAogSlNW
YWx1ZSBRdFBpeG1hcEluc3RhbmNlOjppbnZva2VNZXRob2QoRXhlY1N0YXRlKiBleGVjLCBSdW50
aW1lTWV0aG9kKiBydW50aW1lTWV0aG9kKQpAQCAtMjU2LDI1ICsyNTYsMjUgQEAgSlNWYWx1ZSBR
dFBpeG1hcEluc3RhbmNlOjppbnZva2VNZXRob2QoRQogICAgIHJldHVybiBqc1VuZGVmaW5lZCgp
OwogfQogCi1NZXRob2RMaXN0IFF0UGl4bWFwQ2xhc3M6Om1ldGhvZHNOYW1lZChjb25zdCBJZGVu
dGlmaWVyJiBpZGVudGlmaWVyLCBJbnN0YW5jZSopIGNvbnN0CitNZXRob2RMaXN0IFF0UGl4bWFw
Q2xhc3M6Om1ldGhvZHNOYW1lZChQcm9wZXJ0eU5hbWUgaWRlbnRpZmllciwgSW5zdGFuY2UqKSBj
b25zdAogewogICAgIE1ldGhvZExpc3QgbWV0aG9kczsKLSAgICBpZiAoaWRlbnRpZmllciA9PSBR
dFBpeG1hcFRvRGF0YVVybE1ldGhvZDo6bmFtZSgpKQorICAgIGlmIChpZGVudGlmaWVyLnVzdHJp
bmcoKSA9PSBRdFBpeG1hcFRvRGF0YVVybE1ldGhvZDo6bmFtZSgpKQogICAgICAgICBtZXRob2Rz
LmFwcGVuZCgmcXRfcGl4bWFwX21ldGFEYXRhLnRvRGF0YVVybE1ldGhvZCk7Ci0gICAgZWxzZSBp
ZiAoaWRlbnRpZmllciA9PSBRdFBpeG1hcFRvSW1hZ2VEYXRhTWV0aG9kOjpuYW1lKCkpCisgICAg
ZWxzZSBpZiAoaWRlbnRpZmllci51c3RyaW5nKCkgPT0gUXRQaXhtYXBUb0ltYWdlRGF0YU1ldGhv
ZDo6bmFtZSgpKQogICAgICAgICBtZXRob2RzLmFwcGVuZCgmcXRfcGl4bWFwX21ldGFEYXRhLnRv
SW1hZ2VEYXRhTWV0aG9kKTsKLSAgICBlbHNlIGlmIChpZGVudGlmaWVyID09IFF0UGl4bWFwQXNz
aWduVG9FbGVtZW50TWV0aG9kOjpuYW1lKCkpCisgICAgZWxzZSBpZiAoaWRlbnRpZmllci51c3Ry
aW5nKCkgPT0gUXRQaXhtYXBBc3NpZ25Ub0VsZW1lbnRNZXRob2Q6Om5hbWUoKSkKICAgICAgICAg
bWV0aG9kcy5hcHBlbmQoJnF0X3BpeG1hcF9tZXRhRGF0YS5hc3NpZ25Ub0VsZW1lbnRNZXRob2Qp
OwotICAgIGVsc2UgaWYgKGlkZW50aWZpZXIgPT0gUXRQaXhtYXBUb1N0cmluZ01ldGhvZDo6bmFt
ZSgpKQorICAgIGVsc2UgaWYgKGlkZW50aWZpZXIudXN0cmluZygpID09IFF0UGl4bWFwVG9TdHJp
bmdNZXRob2Q6Om5hbWUoKSkKICAgICAgICAgbWV0aG9kcy5hcHBlbmQoJnF0X3BpeG1hcF9tZXRh
RGF0YS50b1N0cmluZ01ldGhvZCk7CiAgICAgcmV0dXJuIG1ldGhvZHM7CiB9CiAKLUZpZWxkKiBR
dFBpeG1hcENsYXNzOjpmaWVsZE5hbWVkKGNvbnN0IElkZW50aWZpZXImIGlkZW50aWZpZXIsIElu
c3RhbmNlKikgY29uc3QKK0ZpZWxkKiBRdFBpeG1hcENsYXNzOjpmaWVsZE5hbWVkKFByb3BlcnR5
TmFtZSBpZGVudGlmaWVyLCBJbnN0YW5jZSopIGNvbnN0CiB7Ci0gICAgaWYgKGlkZW50aWZpZXIg
PT0gUXRQaXhtYXBXaWR0aEZpZWxkOjpuYW1lKCkpCisgICAgaWYgKGlkZW50aWZpZXIudXN0cmlu
ZygpID09IFF0UGl4bWFwV2lkdGhGaWVsZDo6bmFtZSgpKQogICAgICAgICByZXR1cm4gJnF0X3Bp
eG1hcF9tZXRhRGF0YS53aWR0aEZpZWxkOwotICAgIGlmIChpZGVudGlmaWVyID09IFF0UGl4bWFw
SGVpZ2h0RmllbGQ6Om5hbWUoKSkKKyAgICBpZiAoaWRlbnRpZmllci51c3RyaW5nKCkgPT0gUXRQ
aXhtYXBIZWlnaHRGaWVsZDo6bmFtZSgpKQogICAgICAgICByZXR1cm4gJnF0X3BpeG1hcF9tZXRh
RGF0YS5oZWlnaHRGaWVsZDsKICAgICByZXR1cm4gMDsKIH0KSW5kZXg6IFNvdXJjZS9XZWJDb3Jl
L2JyaWRnZS9xdC9xdF9waXhtYXBydW50aW1lLmgKPT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL1dlYkNv
cmUvYnJpZGdlL3F0L3F0X3BpeG1hcHJ1bnRpbWUuaAkocmV2aXNpb24gMTE2NjY3KQorKysgU291
cmNlL1dlYkNvcmUvYnJpZGdlL3F0L3F0X3BpeG1hcHJ1bnRpbWUuaAkod29ya2luZyBjb3B5KQpA
QCAtMzIsMTcgKzMyLDE3IEBAIGNsYXNzIFF0UGl4bWFwSW5zdGFuY2UgOiBwdWJsaWMgSW5zdGFu
Y2UKIHB1YmxpYzoKICAgICBRdFBpeG1hcEluc3RhbmNlKFBhc3NSZWZQdHI8Um9vdE9iamVjdD4g
cm9vdE9iaiwgY29uc3QgUVZhcmlhbnQmIG5ld0RhdGEpOwogICAgIHZpcnR1YWwgQ2xhc3MqIGdl
dENsYXNzKCkgY29uc3Q7Ci0gICAgdmlydHVhbCBKU1ZhbHVlIGdldE1ldGhvZChFeGVjU3RhdGUq
IGV4ZWMsIGNvbnN0IElkZW50aWZpZXImIHByb3BlcnR5TmFtZSk7CisgICAgdmlydHVhbCBKU1Zh
bHVlIGdldE1ldGhvZChFeGVjU3RhdGUqLCBQcm9wZXJ0eU5hbWUpOwogICAgIHZpcnR1YWwgSlNW
YWx1ZSBpbnZva2VNZXRob2QoRXhlY1N0YXRlKiwgUnVudGltZU1ldGhvZCopOwogICAgIHZpcnR1
YWwgdm9pZCBnZXRQcm9wZXJ0eU5hbWVzKEV4ZWNTdGF0ZSosIFByb3BlcnR5TmFtZUFycmF5Jik7
CiAKICAgICB2aXJ0dWFsIEpTVmFsdWUgZGVmYXVsdFZhbHVlKEV4ZWNTdGF0ZSosIFByZWZlcnJl
ZFByaW1pdGl2ZVR5cGUpIGNvbnN0OwotICAgIHZpcnR1YWwgSlNWYWx1ZSB2YWx1ZU9mKEV4ZWNT
dGF0ZSogZXhlYykgY29uc3Q7CisgICAgdmlydHVhbCBKU1ZhbHVlIHZhbHVlT2YoRXhlY1N0YXRl
KikgY29uc3Q7CiAgICAgaW50IHdpZHRoKCkgY29uc3Q7CiAgICAgaW50IGhlaWdodCgpIGNvbnN0
OwogICAgIFFQaXhtYXAgdG9QaXhtYXAoKTsKICAgICBRSW1hZ2UgdG9JbWFnZSgpOwotICAgIFJ1
bnRpbWVPYmplY3QqIG5ld1J1bnRpbWVPYmplY3QoRXhlY1N0YXRlKiBleGVjKTsKKyAgICBSdW50
aW1lT2JqZWN0KiBuZXdSdW50aW1lT2JqZWN0KEV4ZWNTdGF0ZSopOwogICAgIHN0YXRpYyBKU09i
amVjdCogY3JlYXRlUGl4bWFwUnVudGltZU9iamVjdChFeGVjU3RhdGUqLCBQYXNzUmVmUHRyPFJv
b3RPYmplY3Q+LCBjb25zdCBRVmFyaWFudCYpOwogICAgIHN0YXRpYyBRVmFyaWFudCB2YXJpYW50
RnJvbU9iamVjdChKU09iamVjdCosIFFNZXRhVHlwZTo6VHlwZSBoaW50KTsKICAgICBzdGF0aWMg
Ym9vbCBjYW5IYW5kbGUoUU1ldGFUeXBlOjpUeXBlIGhpbnQpOwpJbmRleDogU291cmNlL1dlYkNv
cmUvYnJpZGdlL3F0L3F0X3J1bnRpbWUuY3BwCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9XZWJDb3Jl
L2JyaWRnZS9xdC9xdF9ydW50aW1lLmNwcAkocmV2aXNpb24gMTE2NjY3KQorKysgU291cmNlL1dl
YkNvcmUvYnJpZGdlL3F0L3F0X3J1bnRpbWUuY3BwCSh3b3JraW5nIGNvcHkpCkBAIC05NjgsMTMg
Kzk2OCwxMyBAQCBKU1ZhbHVlIGNvbnZlcnRRVmFyaWFudFRvVmFsdWUoRXhlY1N0YXRlCiAKIGNv
bnN0IENsYXNzSW5mbyBRdFJ1bnRpbWVNZXRob2Q6OnNfaW5mbyA9IHsgIlF0UnVudGltZU1ldGhv
ZCIsICZJbnRlcm5hbEZ1bmN0aW9uOjpzX2luZm8sIDAsIDAsIENSRUFURV9NRVRIT0RfVEFCTEUo
UXRSdW50aW1lTWV0aG9kKSB9OwogCi1RdFJ1bnRpbWVNZXRob2Q6OlF0UnVudGltZU1ldGhvZChR
dFJ1bnRpbWVNZXRob2REYXRhKiBkZCwgRXhlY1N0YXRlKiBleGVjLCBTdHJ1Y3R1cmUqIHN0cnVj
dHVyZSwgY29uc3QgSWRlbnRpZmllciYgaWRlbnRpZmllcikKK1F0UnVudGltZU1ldGhvZDo6UXRS
dW50aW1lTWV0aG9kKFF0UnVudGltZU1ldGhvZERhdGEqIGRkLCBFeGVjU3RhdGUqIGV4ZWMsIFN0
cnVjdHVyZSogc3RydWN0dXJlLCBjb25zdCBVU3RyaW5nJiBpZGVudGlmaWVyKQogICAgIDogSW50
ZXJuYWxGdW5jdGlvbihleGVjLT5sZXhpY2FsR2xvYmFsT2JqZWN0KCksIHN0cnVjdHVyZSkKICAg
ICAsIGRfcHRyKGRkKQogewogfQogCi12b2lkIFF0UnVudGltZU1ldGhvZDo6ZmluaXNoQ3JlYXRp
b24oRXhlY1N0YXRlKiBleGVjLCBjb25zdCBJZGVudGlmaWVyJiBpZGVudGlmaWVyLCBQYXNzUmVm
UHRyPFF0SW5zdGFuY2U+IGluc3RhbmNlKQordm9pZCBRdFJ1bnRpbWVNZXRob2Q6OmZpbmlzaENy
ZWF0aW9uKEV4ZWNTdGF0ZSogZXhlYywgY29uc3QgVVN0cmluZyYgaWRlbnRpZmllciwgUGFzc1Jl
ZlB0cjxRdEluc3RhbmNlPiBpbnN0YW5jZSkKIHsKICAgICBCYXNlOjpmaW5pc2hDcmVhdGlvbihl
eGVjLT5nbG9iYWxEYXRhKCksIGlkZW50aWZpZXIpOwogICAgIFFXX0QoUXRSdW50aW1lTWV0aG9k
KTsKQEAgLTEzODUsMTIgKzEzODUsMTIgQEAgc3RhdGljIGludCBmaW5kU2lnbmFsSW5kZXgoY29u
c3QgUU1ldGFPYgogCiBjb25zdCBDbGFzc0luZm8gUXRSdW50aW1lTWV0YU1ldGhvZDo6c19pbmZv
ID0geyAiUXRSdW50aW1lTWV0aG9kIiwgJkJhc2U6OnNfaW5mbywgMCwgMCwgQ1JFQVRFX01FVEhP
RF9UQUJMRShRdFJ1bnRpbWVNZXRhTWV0aG9kKSB9OwogCi1RdFJ1bnRpbWVNZXRhTWV0aG9kOjpR
dFJ1bnRpbWVNZXRhTWV0aG9kKEV4ZWNTdGF0ZSogZXhlYywgU3RydWN0dXJlKiBzdHJ1Y3R1cmUs
IGNvbnN0IElkZW50aWZpZXImIGlkZW50aWZpZXIpCitRdFJ1bnRpbWVNZXRhTWV0aG9kOjpRdFJ1
bnRpbWVNZXRhTWV0aG9kKEV4ZWNTdGF0ZSogZXhlYywgU3RydWN0dXJlKiBzdHJ1Y3R1cmUsIGNv
bnN0IFVTdHJpbmcmIGlkZW50aWZpZXIpCiAgICAgOiBRdFJ1bnRpbWVNZXRob2QgKG5ldyBRdFJ1
bnRpbWVNZXRhTWV0aG9kRGF0YSgpLCBleGVjLCBzdHJ1Y3R1cmUsIGlkZW50aWZpZXIpCiB7CiB9
CiAKLXZvaWQgUXRSdW50aW1lTWV0YU1ldGhvZDo6ZmluaXNoQ3JlYXRpb24oRXhlY1N0YXRlKiBl
eGVjLCBjb25zdCBJZGVudGlmaWVyJiBpZGVudGlmaWVyLCBQYXNzUmVmUHRyPFF0SW5zdGFuY2U+
IGluc3RhbmNlLCBpbnQgaW5kZXgsIGNvbnN0IFFCeXRlQXJyYXkmIHNpZ25hdHVyZSwgYm9vbCBh
bGxvd1ByaXZhdGUpCit2b2lkIFF0UnVudGltZU1ldGFNZXRob2Q6OmZpbmlzaENyZWF0aW9uKEV4
ZWNTdGF0ZSogZXhlYywgY29uc3QgVVN0cmluZyYgaWRlbnRpZmllciwgUGFzc1JlZlB0cjxRdElu
c3RhbmNlPiBpbnN0YW5jZSwgaW50IGluZGV4LCBjb25zdCBRQnl0ZUFycmF5JiBzaWduYXR1cmUs
IGJvb2wgYWxsb3dQcml2YXRlKQogewogICAgIEJhc2U6OmZpbmlzaENyZWF0aW9uKGV4ZWMsIGlk
ZW50aWZpZXIsIGluc3RhbmNlKTsKICAgICBRV19EKFF0UnVudGltZU1ldGFNZXRob2QpOwpAQCAt
MTQ1MiwxNiArMTQ1MiwxOCBAQCBDYWxsVHlwZSBRdFJ1bnRpbWVNZXRhTWV0aG9kOjpnZXRDYWxs
RGF0CiAgICAgcmV0dXJuIENhbGxUeXBlSG9zdDsKIH0KIAotYm9vbCBRdFJ1bnRpbWVNZXRhTWV0
aG9kOjpnZXRPd25Qcm9wZXJ0eVNsb3QoSlNDZWxsKiBjZWxsLCBFeGVjU3RhdGUqIGV4ZWMsIGNv
bnN0IElkZW50aWZpZXImIHByb3BlcnR5TmFtZSwgUHJvcGVydHlTbG90JiBzbG90KQorYm9vbCBR
dFJ1bnRpbWVNZXRhTWV0aG9kOjpnZXRPd25Qcm9wZXJ0eVNsb3QoSlNDZWxsKiBjZWxsLCBFeGVj
U3RhdGUqIGV4ZWMsIFByb3BlcnR5TmFtZSBwcm9wZXJ0eU5hbWUsIFByb3BlcnR5U2xvdCYgc2xv
dCkKIHsKICAgICBRdFJ1bnRpbWVNZXRhTWV0aG9kKiB0aGlzT2JqZWN0ID0ganNDYXN0PFF0UnVu
dGltZU1ldGFNZXRob2QqPihjZWxsKTsKLSAgICBpZiAocHJvcGVydHlOYW1lID09ICJjb25uZWN0
IikgeworICAgIGlmIChwcm9wZXJ0eU5hbWUgPT0gSWRlbnRpZmllcihleGVjLCAiY29ubmVjdCIp
KSB7CiAgICAgICAgIHNsb3Quc2V0Q3VzdG9tKHRoaXNPYmplY3QsIHRoaXNPYmplY3QtPmNvbm5l
Y3RHZXR0ZXIpOwogICAgICAgICByZXR1cm4gdHJ1ZTsKLSAgICB9IGVsc2UgaWYgKHByb3BlcnR5
TmFtZSA9PSAiZGlzY29ubmVjdCIpIHsKKyAgICB9CisgICAgaWYgKHByb3BlcnR5TmFtZSA9PSBJ
ZGVudGlmaWVyKGV4ZWMsICJkaXNjb25uZWN0IikpIHsKICAgICAgICAgc2xvdC5zZXRDdXN0b20o
dGhpc09iamVjdCwgdGhpc09iamVjdC0+ZGlzY29ubmVjdEdldHRlcik7CiAgICAgICAgIHJldHVy
biB0cnVlOwotICAgIH0gZWxzZSBpZiAocHJvcGVydHlOYW1lID09IGV4ZWMtPnByb3BlcnR5TmFt
ZXMoKS5sZW5ndGgpIHsKKyAgICB9CisgICAgaWYgKHByb3BlcnR5TmFtZSA9PSBleGVjLT5wcm9w
ZXJ0eU5hbWVzKCkubGVuZ3RoKSB7CiAgICAgICAgIHNsb3Quc2V0Q3VzdG9tKHRoaXNPYmplY3Qs
IHRoaXNPYmplY3QtPmxlbmd0aEdldHRlcik7CiAgICAgICAgIHJldHVybiB0cnVlOwogICAgIH0K
QEAgLTE0NjksMTcgKzE0NzEsMTcgQEAgYm9vbCBRdFJ1bnRpbWVNZXRhTWV0aG9kOjpnZXRPd25Q
cm9wZXJ0eQogICAgIHJldHVybiBRdFJ1bnRpbWVNZXRob2Q6OmdldE93blByb3BlcnR5U2xvdCh0
aGlzT2JqZWN0LCBleGVjLCBwcm9wZXJ0eU5hbWUsIHNsb3QpOwogfQogCi1ib29sIFF0UnVudGlt
ZU1ldGFNZXRob2Q6OmdldE93blByb3BlcnR5RGVzY3JpcHRvcihKU09iamVjdCogb2JqZWN0LCBF
eGVjU3RhdGUqIGV4ZWMsIGNvbnN0IElkZW50aWZpZXImIHByb3BlcnR5TmFtZSwgUHJvcGVydHlE
ZXNjcmlwdG9yJiBkZXNjcmlwdG9yKQorYm9vbCBRdFJ1bnRpbWVNZXRhTWV0aG9kOjpnZXRPd25Q
cm9wZXJ0eURlc2NyaXB0b3IoSlNPYmplY3QqIG9iamVjdCwgRXhlY1N0YXRlKiBleGVjLCBQcm9w
ZXJ0eU5hbWUgcHJvcGVydHlOYW1lLCBQcm9wZXJ0eURlc2NyaXB0b3ImIGRlc2NyaXB0b3IpCiB7
CiAgICAgUXRSdW50aW1lTWV0YU1ldGhvZCogdGhpc09iamVjdCA9IGpzQ2FzdDxRdFJ1bnRpbWVN
ZXRhTWV0aG9kKj4ob2JqZWN0KTsKLSAgICBpZiAocHJvcGVydHlOYW1lID09ICJjb25uZWN0Iikg
eworICAgIGlmIChwcm9wZXJ0eU5hbWUgPT0gSWRlbnRpZmllcihleGVjLCAiY29ubmVjdCIpKSB7
CiAgICAgICAgIFByb3BlcnR5U2xvdCBzbG90OwogICAgICAgICBzbG90LnNldEN1c3RvbSh0aGlz
T2JqZWN0LCBjb25uZWN0R2V0dGVyKTsKICAgICAgICAgZGVzY3JpcHRvci5zZXREZXNjcmlwdG9y
KHNsb3QuZ2V0VmFsdWUoZXhlYywgcHJvcGVydHlOYW1lKSwgRG9udERlbGV0ZSB8IFJlYWRPbmx5
IHwgRG9udEVudW0pOwogICAgICAgICByZXR1cm4gdHJ1ZTsKICAgICB9CiAKLSAgICBpZiAocHJv
cGVydHlOYW1lID09ICJkaXNjb25uZWN0IikgeworICAgIGlmIChwcm9wZXJ0eU5hbWUgPT0gSWRl
bnRpZmllcihleGVjLCAiZGlzY29ubmVjdCIpKSB7CiAgICAgICAgIFByb3BlcnR5U2xvdCBzbG90
OwogICAgICAgICBzbG90LnNldEN1c3RvbSh0aGlzT2JqZWN0LCBkaXNjb25uZWN0R2V0dGVyKTsK
ICAgICAgICAgZGVzY3JpcHRvci5zZXREZXNjcmlwdG9yKHNsb3QuZ2V0VmFsdWUoZXhlYywgcHJv
cGVydHlOYW1lKSwgRG9udERlbGV0ZSB8IFJlYWRPbmx5IHwgRG9udEVudW0pOwpAQCAtMTUwNywy
OSArMTUwOSwyOSBAQCB2b2lkIFF0UnVudGltZU1ldGFNZXRob2Q6OmdldE93blByb3BlcnR5CiAg
ICAgUXRSdW50aW1lTWV0aG9kOjpnZXRPd25Qcm9wZXJ0eU5hbWVzKG9iamVjdCwgZXhlYywgcHJv
cGVydHlOYW1lcywgbW9kZSk7CiB9CiAKLUpTVmFsdWUgUXRSdW50aW1lTWV0YU1ldGhvZDo6bGVu
Z3RoR2V0dGVyKEV4ZWNTdGF0ZSosIEpTVmFsdWUsIGNvbnN0IElkZW50aWZpZXImKQorSlNWYWx1
ZSBRdFJ1bnRpbWVNZXRhTWV0aG9kOjpsZW5ndGhHZXR0ZXIoRXhlY1N0YXRlKiwgSlNWYWx1ZSwg
UHJvcGVydHlOYW1lKQogewogICAgIC8vIFF0U2NyaXB0IGFsd2F5cyByZXR1cm5zIDAKICAgICBy
ZXR1cm4ganNOdW1iZXIoMCk7CiB9CiAKLUpTVmFsdWUgUXRSdW50aW1lTWV0YU1ldGhvZDo6Y29u
bmVjdEdldHRlcihFeGVjU3RhdGUqIGV4ZWMsIEpTVmFsdWUgc2xvdEJhc2UsIGNvbnN0IElkZW50
aWZpZXImIGlkZW50KQorSlNWYWx1ZSBRdFJ1bnRpbWVNZXRhTWV0aG9kOjpjb25uZWN0R2V0dGVy
KEV4ZWNTdGF0ZSogZXhlYywgSlNWYWx1ZSBzbG90QmFzZSwgUHJvcGVydHlOYW1lIGlkZW50KQog
ewogICAgIFF0UnVudGltZU1ldGFNZXRob2QqIHRoaXNPYmogPSBzdGF0aWNfY2FzdDxRdFJ1bnRp
bWVNZXRhTWV0aG9kKj4oYXNPYmplY3Qoc2xvdEJhc2UpKTsKICAgICBRV19EUyhRdFJ1bnRpbWVN
ZXRhTWV0aG9kLCB0aGlzT2JqKTsKIAogICAgIGlmICghZC0+bV9jb25uZWN0KQotICAgICAgICBk
LT5tX2Nvbm5lY3Quc2V0KGV4ZWMtPmdsb2JhbERhdGEoKSwgdGhpc09iaiwgUXRSdW50aW1lQ29u
bmVjdGlvbk1ldGhvZDo6Y3JlYXRlKGV4ZWMsIGlkZW50LCB0cnVlLCBkLT5tX2luc3RhbmNlLCBk
LT5tX2luZGV4LCBkLT5tX3NpZ25hdHVyZSkpOworICAgICAgICBkLT5tX2Nvbm5lY3Quc2V0KGV4
ZWMtPmdsb2JhbERhdGEoKSwgdGhpc09iaiwgUXRSdW50aW1lQ29ubmVjdGlvbk1ldGhvZDo6Y3Jl
YXRlKGV4ZWMsIGlkZW50LmltcGwoKSwgdHJ1ZSwgZC0+bV9pbnN0YW5jZSwgZC0+bV9pbmRleCwg
ZC0+bV9zaWduYXR1cmUpKTsKICAgICByZXR1cm4gZC0+bV9jb25uZWN0LmdldCgpOwogfQogCi1K
U1ZhbHVlIFF0UnVudGltZU1ldGFNZXRob2Q6OmRpc2Nvbm5lY3RHZXR0ZXIoRXhlY1N0YXRlKiBl
eGVjLCBKU1ZhbHVlIHNsb3RCYXNlLCBjb25zdCBJZGVudGlmaWVyJiBpZGVudCkKK0pTVmFsdWUg
UXRSdW50aW1lTWV0YU1ldGhvZDo6ZGlzY29ubmVjdEdldHRlcihFeGVjU3RhdGUqIGV4ZWMsIEpT
VmFsdWUgc2xvdEJhc2UsIFByb3BlcnR5TmFtZSBpZGVudCkKIHsKICAgICBRdFJ1bnRpbWVNZXRh
TWV0aG9kKiB0aGlzT2JqID0gc3RhdGljX2Nhc3Q8UXRSdW50aW1lTWV0YU1ldGhvZCo+KGFzT2Jq
ZWN0KHNsb3RCYXNlKSk7CiAgICAgUVdfRFMoUXRSdW50aW1lTWV0YU1ldGhvZCwgdGhpc09iaik7
CiAKICAgICBpZiAoIWQtPm1fZGlzY29ubmVjdCkKLSAgICAgICAgZC0+bV9kaXNjb25uZWN0LnNl
dChleGVjLT5nbG9iYWxEYXRhKCksIHRoaXNPYmosIFF0UnVudGltZUNvbm5lY3Rpb25NZXRob2Q6
OmNyZWF0ZShleGVjLCBpZGVudCwgZmFsc2UsIGQtPm1faW5zdGFuY2UsIGQtPm1faW5kZXgsIGQt
Pm1fc2lnbmF0dXJlKSk7CisgICAgICAgIGQtPm1fZGlzY29ubmVjdC5zZXQoZXhlYy0+Z2xvYmFs
RGF0YSgpLCB0aGlzT2JqLCBRdFJ1bnRpbWVDb25uZWN0aW9uTWV0aG9kOjpjcmVhdGUoZXhlYywg
aWRlbnQuaW1wbCgpLCBmYWxzZSwgZC0+bV9pbnN0YW5jZSwgZC0+bV9pbmRleCwgZC0+bV9zaWdu
YXR1cmUpKTsKICAgICByZXR1cm4gZC0+bV9kaXNjb25uZWN0LmdldCgpOwogfQogCkBAIC0xNTM5
LDEyICsxNTQxLDEyIEBAIFFNdWx0aU1hcDxRT2JqZWN0KiwgUXRDb25uZWN0aW9uT2JqZWN0Kj4K
IAogY29uc3QgQ2xhc3NJbmZvIFF0UnVudGltZUNvbm5lY3Rpb25NZXRob2Q6OnNfaW5mbyA9IHsg
IlF0UnVudGltZU1ldGhvZCIsICZCYXNlOjpzX2luZm8sIDAsIDAsIENSRUFURV9NRVRIT0RfVEFC
TEUoUXRSdW50aW1lQ29ubmVjdGlvbk1ldGhvZCkgfTsKIAotUXRSdW50aW1lQ29ubmVjdGlvbk1l
dGhvZDo6UXRSdW50aW1lQ29ubmVjdGlvbk1ldGhvZChFeGVjU3RhdGUqIGV4ZWMsIFN0cnVjdHVy
ZSogc3RydWN0dXJlLCBjb25zdCBJZGVudGlmaWVyJiBpZGVudGlmaWVyKQorUXRSdW50aW1lQ29u
bmVjdGlvbk1ldGhvZDo6UXRSdW50aW1lQ29ubmVjdGlvbk1ldGhvZChFeGVjU3RhdGUqIGV4ZWMs
IFN0cnVjdHVyZSogc3RydWN0dXJlLCBjb25zdCBVU3RyaW5nJiBpZGVudGlmaWVyKQogICAgIDog
UXRSdW50aW1lTWV0aG9kIChuZXcgUXRSdW50aW1lQ29ubmVjdGlvbk1ldGhvZERhdGEoKSwgZXhl
Yywgc3RydWN0dXJlLCBpZGVudGlmaWVyKQogewogfQogCi12b2lkIFF0UnVudGltZUNvbm5lY3Rp
b25NZXRob2Q6OmZpbmlzaENyZWF0aW9uKEV4ZWNTdGF0ZSogZXhlYywgY29uc3QgSWRlbnRpZmll
ciYgaWRlbnRpZmllciwgYm9vbCBpc0Nvbm5lY3QsIFBhc3NSZWZQdHI8UXRJbnN0YW5jZT4gaW5z
dGFuY2UsIGludCBpbmRleCwgY29uc3QgUUJ5dGVBcnJheSYgc2lnbmF0dXJlKQordm9pZCBRdFJ1
bnRpbWVDb25uZWN0aW9uTWV0aG9kOjpmaW5pc2hDcmVhdGlvbihFeGVjU3RhdGUqIGV4ZWMsIGNv
bnN0IFVTdHJpbmcmIGlkZW50aWZpZXIsIGJvb2wgaXNDb25uZWN0LCBQYXNzUmVmUHRyPFF0SW5z
dGFuY2U+IGluc3RhbmNlLCBpbnQgaW5kZXgsIGNvbnN0IFFCeXRlQXJyYXkmIHNpZ25hdHVyZSkK
IHsKICAgICBCYXNlOjpmaW5pc2hDcmVhdGlvbihleGVjLCBpZGVudGlmaWVyLCBpbnN0YW5jZSk7
CiAgICAgUVdfRChRdFJ1bnRpbWVDb25uZWN0aW9uTWV0aG9kKTsKQEAgLTE2OTUsNyArMTY5Nyw3
IEBAIENhbGxUeXBlIFF0UnVudGltZUNvbm5lY3Rpb25NZXRob2Q6OmdldEMKICAgICByZXR1cm4g
Q2FsbFR5cGVIb3N0OwogfQogCi1ib29sIFF0UnVudGltZUNvbm5lY3Rpb25NZXRob2Q6OmdldE93
blByb3BlcnR5U2xvdChKU0NlbGwqIGNlbGwsIEV4ZWNTdGF0ZSogZXhlYywgY29uc3QgSWRlbnRp
ZmllciYgcHJvcGVydHlOYW1lLCBQcm9wZXJ0eVNsb3QmIHNsb3QpCitib29sIFF0UnVudGltZUNv
bm5lY3Rpb25NZXRob2Q6OmdldE93blByb3BlcnR5U2xvdChKU0NlbGwqIGNlbGwsIEV4ZWNTdGF0
ZSogZXhlYywgUHJvcGVydHlOYW1lIHByb3BlcnR5TmFtZSwgUHJvcGVydHlTbG90JiBzbG90KQog
ewogICAgIFF0UnVudGltZUNvbm5lY3Rpb25NZXRob2QqIHRoaXNPYmplY3QgPSBqc0Nhc3Q8UXRS
dW50aW1lQ29ubmVjdGlvbk1ldGhvZCo+KGNlbGwpOwogICAgIGlmIChwcm9wZXJ0eU5hbWUgPT0g
ZXhlYy0+cHJvcGVydHlOYW1lcygpLmxlbmd0aCkgewpAQCAtMTcwNiw3ICsxNzA4LDcgQEAgYm9v
bCBRdFJ1bnRpbWVDb25uZWN0aW9uTWV0aG9kOjpnZXRPd25QcgogICAgIHJldHVybiBRdFJ1bnRp
bWVNZXRob2Q6OmdldE93blByb3BlcnR5U2xvdCh0aGlzT2JqZWN0LCBleGVjLCBwcm9wZXJ0eU5h
bWUsIHNsb3QpOwogfQogCi1ib29sIFF0UnVudGltZUNvbm5lY3Rpb25NZXRob2Q6OmdldE93blBy
b3BlcnR5RGVzY3JpcHRvcihKU09iamVjdCogb2JqZWN0LCBFeGVjU3RhdGUqIGV4ZWMsIGNvbnN0
IElkZW50aWZpZXImIHByb3BlcnR5TmFtZSwgUHJvcGVydHlEZXNjcmlwdG9yJiBkZXNjcmlwdG9y
KQorYm9vbCBRdFJ1bnRpbWVDb25uZWN0aW9uTWV0aG9kOjpnZXRPd25Qcm9wZXJ0eURlc2NyaXB0
b3IoSlNPYmplY3QqIG9iamVjdCwgRXhlY1N0YXRlKiBleGVjLCBQcm9wZXJ0eU5hbWUgcHJvcGVy
dHlOYW1lLCBQcm9wZXJ0eURlc2NyaXB0b3ImIGRlc2NyaXB0b3IpCiB7CiAgICAgUXRSdW50aW1l
Q29ubmVjdGlvbk1ldGhvZCogdGhpc09iamVjdCA9IGpzQ2FzdDxRdFJ1bnRpbWVDb25uZWN0aW9u
TWV0aG9kKj4ob2JqZWN0KTsKICAgICBpZiAocHJvcGVydHlOYW1lID09IGV4ZWMtPnByb3BlcnR5
TmFtZXMoKS5sZW5ndGgpIHsKQEAgLTE3MjcsNyArMTcyOSw3IEBAIHZvaWQgUXRSdW50aW1lQ29u
bmVjdGlvbk1ldGhvZDo6Z2V0T3duUHIKICAgICBRdFJ1bnRpbWVNZXRob2Q6OmdldE93blByb3Bl
cnR5TmFtZXMob2JqZWN0LCBleGVjLCBwcm9wZXJ0eU5hbWVzLCBtb2RlKTsKIH0KIAotSlNWYWx1
ZSBRdFJ1bnRpbWVDb25uZWN0aW9uTWV0aG9kOjpsZW5ndGhHZXR0ZXIoRXhlY1N0YXRlKiwgSlNW
YWx1ZSwgY29uc3QgSWRlbnRpZmllciYpCitKU1ZhbHVlIFF0UnVudGltZUNvbm5lY3Rpb25NZXRo
b2Q6Omxlbmd0aEdldHRlcihFeGVjU3RhdGUqLCBKU1ZhbHVlLCBQcm9wZXJ0eU5hbWUpCiB7CiAg
ICAgLy8gd2UgaGF2ZSBvbmUgZm9ybWFsIGFyZ3VtZW50LCBhbmQgb25lIG9wdGlvbmFsCiAgICAg
cmV0dXJuIGpzTnVtYmVyKDEpOwpJbmRleDogU291cmNlL1dlYkNvcmUvYnJpZGdlL3F0L3F0X3J1
bnRpbWUuaAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2ViQ29yZS9icmlkZ2UvcXQvcXRfcnVudGlt
ZS5oCShyZXZpc2lvbiAxMTY2NjcpCisrKyBTb3VyY2UvV2ViQ29yZS9icmlkZ2UvcXQvcXRfcnVu
dGltZS5oCSh3b3JraW5nIGNvcHkpCkBAIC0xNDksMTEgKzE0OSwxMSBAQCBwdWJsaWM6CiAgICAg
fQogCiBwcm90ZWN0ZWQ6Ci0gICAgdm9pZCBmaW5pc2hDcmVhdGlvbihFeGVjU3RhdGUqLCBjb25z
dCBJZGVudGlmaWVyJiwgUGFzc1JlZlB0cjxRdEluc3RhbmNlPik7CisgICAgdm9pZCBmaW5pc2hD
cmVhdGlvbihFeGVjU3RhdGUqLCBjb25zdCBVU3RyaW5nJiwgUGFzc1JlZlB0cjxRdEluc3RhbmNl
Pik7CiAgICAgc3RhdGljIGNvbnN0IHVuc2lnbmVkIFN0cnVjdHVyZUZsYWdzID0gT3ZlcnJpZGVz
R2V0T3duUHJvcGVydHlTbG90IHwgT3ZlcnJpZGVzR2V0UHJvcGVydHlOYW1lcyB8IEludGVybmFs
RnVuY3Rpb246OlN0cnVjdHVyZUZsYWdzIHwgT3ZlcnJpZGVzVmlzaXRDaGlsZHJlbjsKIAogICAg
IFF0UnVudGltZU1ldGhvZERhdGEgKmRfZnVuYygpIGNvbnN0IHtyZXR1cm4gZF9wdHI7fQotICAg
IFF0UnVudGltZU1ldGhvZChRdFJ1bnRpbWVNZXRob2REYXRhICpkZCwgRXhlY1N0YXRlICosIFN0
cnVjdHVyZSosIGNvbnN0IElkZW50aWZpZXIgJm5hbWUpOworICAgIFF0UnVudGltZU1ldGhvZChR
dFJ1bnRpbWVNZXRob2REYXRhICpkZCwgRXhlY1N0YXRlICosIFN0cnVjdHVyZSosIGNvbnN0IFVT
dHJpbmcmIG5hbWUpOwogICAgIFF0UnVudGltZU1ldGhvZERhdGEgKmRfcHRyOwogfTsKIApAQCAt
MTYxLDcgKzE2MSw3IEBAIGNsYXNzIFF0UnVudGltZU1ldGFNZXRob2QgOiBwdWJsaWMgUXRSdW4K
IHB1YmxpYzoKICAgICB0eXBlZGVmIFF0UnVudGltZU1ldGhvZCBCYXNlOwogCi0gICAgc3RhdGlj
IFF0UnVudGltZU1ldGFNZXRob2QqIGNyZWF0ZShFeGVjU3RhdGUqIGV4ZWMsIGNvbnN0IElkZW50
aWZpZXImIG5hbWUsIFBhc3NSZWZQdHI8UXRJbnN0YW5jZT4gaW5zdGFuY2UsIGludCBpbmRleCwg
Y29uc3QgUUJ5dGVBcnJheSYgc2lnbmF0dXJlLCBib29sIGFsbG93UHJpdmF0ZSkKKyAgICBzdGF0
aWMgUXRSdW50aW1lTWV0YU1ldGhvZCogY3JlYXRlKEV4ZWNTdGF0ZSogZXhlYywgY29uc3QgVVN0
cmluZyYgbmFtZSwgUGFzc1JlZlB0cjxRdEluc3RhbmNlPiBpbnN0YW5jZSwgaW50IGluZGV4LCBj
b25zdCBRQnl0ZUFycmF5JiBzaWduYXR1cmUsIGJvb2wgYWxsb3dQcml2YXRlKQogICAgIHsKICAg
ICAgICAgU3RydWN0dXJlKiBkb21TdHJ1Y3R1cmUgPSBXZWJDb3JlOjpkZXByZWNhdGVkR2V0RE9N
U3RydWN0dXJlPFF0UnVudGltZU1ldGFNZXRob2Q+KGV4ZWMpOwogICAgICAgICBRdFJ1bnRpbWVN
ZXRhTWV0aG9kKiBtZXRob2QgPSBuZXcgKGFsbG9jYXRlQ2VsbDxRdFJ1bnRpbWVNZXRhTWV0aG9k
PigqZXhlYy0+aGVhcCgpKSkgUXRSdW50aW1lTWV0YU1ldGhvZChleGVjLCBkb21TdHJ1Y3R1cmUs
IG5hbWUpOwpAQCAtMTY5LDggKzE2OSw4IEBAIHB1YmxpYzoKICAgICAgICAgcmV0dXJuIG1ldGhv
ZDsKICAgICB9CiAKLSAgICBzdGF0aWMgYm9vbCBnZXRPd25Qcm9wZXJ0eVNsb3QoSlNDZWxsKiwg
RXhlY1N0YXRlICosIGNvbnN0IElkZW50aWZpZXImLCBQcm9wZXJ0eVNsb3QmKTsKLSAgICBzdGF0
aWMgYm9vbCBnZXRPd25Qcm9wZXJ0eURlc2NyaXB0b3IoSlNPYmplY3QqLCBFeGVjU3RhdGUqLCBj
b25zdCBJZGVudGlmaWVyJiwgUHJvcGVydHlEZXNjcmlwdG9yJik7CisgICAgc3RhdGljIGJvb2wg
Z2V0T3duUHJvcGVydHlTbG90KEpTQ2VsbCosIEV4ZWNTdGF0ZSAqLCBQcm9wZXJ0eU5hbWUsIFBy
b3BlcnR5U2xvdCYpOworICAgIHN0YXRpYyBib29sIGdldE93blByb3BlcnR5RGVzY3JpcHRvcihK
U09iamVjdCosIEV4ZWNTdGF0ZSosIFByb3BlcnR5TmFtZSwgUHJvcGVydHlEZXNjcmlwdG9yJik7
CiAgICAgc3RhdGljIHZvaWQgZ2V0T3duUHJvcGVydHlOYW1lcyhKU09iamVjdCosIEV4ZWNTdGF0
ZSosIFByb3BlcnR5TmFtZUFycmF5JiwgRW51bWVyYXRpb25Nb2RlKTsKIAogICAgIHN0YXRpYyB2
b2lkIHZpc2l0Q2hpbGRyZW4oSlNDZWxsKiwgU2xvdFZpc2l0b3ImKTsKQEAgLTE4NiwxNCArMTg2
LDE0IEBAIHByb3RlY3RlZDoKICAgICBRdFJ1bnRpbWVNZXRhTWV0aG9kRGF0YSogZF9mdW5jKCkg
Y29uc3Qge3JldHVybiByZWludGVycHJldF9jYXN0PFF0UnVudGltZU1ldGFNZXRob2REYXRhKj4o
ZF9wdHIpO30KIAogcHJpdmF0ZToKLSAgICBRdFJ1bnRpbWVNZXRhTWV0aG9kKEV4ZWNTdGF0ZSos
IFN0cnVjdHVyZSosIGNvbnN0IElkZW50aWZpZXImKTsKLSAgICB2b2lkIGZpbmlzaENyZWF0aW9u
KEV4ZWNTdGF0ZSosIGNvbnN0IElkZW50aWZpZXImLCBQYXNzUmVmUHRyPFF0SW5zdGFuY2U+LCBp
bnQgaW5kZXgsIGNvbnN0IFFCeXRlQXJyYXkmIHNpZ25hdHVyZSwgYm9vbCBhbGxvd1ByaXZhdGUp
OworICAgIFF0UnVudGltZU1ldGFNZXRob2QoRXhlY1N0YXRlKiwgU3RydWN0dXJlKiwgY29uc3Qg
VVN0cmluZyYpOworICAgIHZvaWQgZmluaXNoQ3JlYXRpb24oRXhlY1N0YXRlKiwgY29uc3QgVVN0
cmluZyYsIFBhc3NSZWZQdHI8UXRJbnN0YW5jZT4sIGludCBpbmRleCwgY29uc3QgUUJ5dGVBcnJh
eSYgc2lnbmF0dXJlLCBib29sIGFsbG93UHJpdmF0ZSk7CiAKICAgICBzdGF0aWMgQ2FsbFR5cGUg
Z2V0Q2FsbERhdGEoSlNDZWxsKiwgQ2FsbERhdGEmKTsKICAgICBzdGF0aWMgRW5jb2RlZEpTVmFs
dWUgSlNDX0hPU1RfQ0FMTCBjYWxsKEV4ZWNTdGF0ZSogZXhlYyk7Ci0gICAgc3RhdGljIEpTVmFs
dWUgbGVuZ3RoR2V0dGVyKEV4ZWNTdGF0ZSosIEpTVmFsdWUsIGNvbnN0IElkZW50aWZpZXImKTsK
LSAgICBzdGF0aWMgSlNWYWx1ZSBjb25uZWN0R2V0dGVyKEV4ZWNTdGF0ZSosIEpTVmFsdWUsIGNv
bnN0IElkZW50aWZpZXImKTsKLSAgICBzdGF0aWMgSlNWYWx1ZSBkaXNjb25uZWN0R2V0dGVyKEV4
ZWNTdGF0ZSosIEpTVmFsdWUsIGNvbnN0IElkZW50aWZpZXImKTsKKyAgICBzdGF0aWMgSlNWYWx1
ZSBsZW5ndGhHZXR0ZXIoRXhlY1N0YXRlKiwgSlNWYWx1ZSwgUHJvcGVydHlOYW1lKTsKKyAgICBz
dGF0aWMgSlNWYWx1ZSBjb25uZWN0R2V0dGVyKEV4ZWNTdGF0ZSosIEpTVmFsdWUsIFByb3BlcnR5
TmFtZSk7CisgICAgc3RhdGljIEpTVmFsdWUgZGlzY29ubmVjdEdldHRlcihFeGVjU3RhdGUqLCBK
U1ZhbHVlLCBQcm9wZXJ0eU5hbWUpOwogfTsKIAogY2xhc3MgUXRDb25uZWN0aW9uT2JqZWN0OwpA
QCAtMjAxLDcgKzIwMSw3IEBAIGNsYXNzIFF0UnVudGltZUNvbm5lY3Rpb25NZXRob2QgOiBwdWJs
aWMKIHB1YmxpYzoKICAgICB0eXBlZGVmIFF0UnVudGltZU1ldGhvZCBCYXNlOwogCi0gICAgc3Rh
dGljIFF0UnVudGltZUNvbm5lY3Rpb25NZXRob2QqIGNyZWF0ZShFeGVjU3RhdGUqIGV4ZWMsIGNv
bnN0IElkZW50aWZpZXImIG5hbWUsIGJvb2wgaXNDb25uZWN0LCBQYXNzUmVmUHRyPFF0SW5zdGFu
Y2U+IGluc3RhbmNlLCBpbnQgaW5kZXgsIGNvbnN0IFFCeXRlQXJyYXkmIHNpZ25hdHVyZSkKKyAg
ICBzdGF0aWMgUXRSdW50aW1lQ29ubmVjdGlvbk1ldGhvZCogY3JlYXRlKEV4ZWNTdGF0ZSogZXhl
YywgY29uc3QgVVN0cmluZyYgbmFtZSwgYm9vbCBpc0Nvbm5lY3QsIFBhc3NSZWZQdHI8UXRJbnN0
YW5jZT4gaW5zdGFuY2UsIGludCBpbmRleCwgY29uc3QgUUJ5dGVBcnJheSYgc2lnbmF0dXJlKQog
ICAgIHsKICAgICAgICAgU3RydWN0dXJlKiBkb21TdHJ1Y3R1cmUgPSBXZWJDb3JlOjpkZXByZWNh
dGVkR2V0RE9NU3RydWN0dXJlPFF0UnVudGltZUNvbm5lY3Rpb25NZXRob2Q+KGV4ZWMpOwogICAg
ICAgICBRdFJ1bnRpbWVDb25uZWN0aW9uTWV0aG9kKiBtZXRob2QgPSBuZXcgKGFsbG9jYXRlQ2Vs
bDxRdFJ1bnRpbWVDb25uZWN0aW9uTWV0aG9kPigqZXhlYy0+aGVhcCgpKSkgUXRSdW50aW1lQ29u
bmVjdGlvbk1ldGhvZChleGVjLCBkb21TdHJ1Y3R1cmUsIG5hbWUpOwpAQCAtMjA5LDggKzIwOSw4
IEBAIHB1YmxpYzoKICAgICAgICAgcmV0dXJuIG1ldGhvZDsKICAgICB9CiAKLSAgICBzdGF0aWMg
Ym9vbCBnZXRPd25Qcm9wZXJ0eVNsb3QoSlNDZWxsKiwgRXhlY1N0YXRlICosIGNvbnN0IElkZW50
aWZpZXImLCBQcm9wZXJ0eVNsb3QmKTsKLSAgICBzdGF0aWMgYm9vbCBnZXRPd25Qcm9wZXJ0eURl
c2NyaXB0b3IoSlNPYmplY3QqLCBFeGVjU3RhdGUqLCBjb25zdCBJZGVudGlmaWVyJiwgUHJvcGVy
dHlEZXNjcmlwdG9yJik7CisgICAgc3RhdGljIGJvb2wgZ2V0T3duUHJvcGVydHlTbG90KEpTQ2Vs
bCosIEV4ZWNTdGF0ZSAqLCBQcm9wZXJ0eU5hbWUsIFByb3BlcnR5U2xvdCYpOworICAgIHN0YXRp
YyBib29sIGdldE93blByb3BlcnR5RGVzY3JpcHRvcihKU09iamVjdCosIEV4ZWNTdGF0ZSosIFBy
b3BlcnR5TmFtZSwgUHJvcGVydHlEZXNjcmlwdG9yJik7CiAgICAgc3RhdGljIHZvaWQgZ2V0T3du
UHJvcGVydHlOYW1lcyhKU09iamVjdCosIEV4ZWNTdGF0ZSosIFByb3BlcnR5TmFtZUFycmF5Jiwg
RW51bWVyYXRpb25Nb2RlKTsKICAKICAgICBzdGF0aWMgY29uc3QgQ2xhc3NJbmZvIHNfaW5mbzsK
QEAgLTIyNCwxMiArMjI0LDEyIEBAIHByb3RlY3RlZDoKICAgICBRdFJ1bnRpbWVDb25uZWN0aW9u
TWV0aG9kRGF0YSogZF9mdW5jKCkgY29uc3Qge3JldHVybiByZWludGVycHJldF9jYXN0PFF0UnVu
dGltZUNvbm5lY3Rpb25NZXRob2REYXRhKj4oZF9wdHIpO30KIAogcHJpdmF0ZToKLSAgICBRdFJ1
bnRpbWVDb25uZWN0aW9uTWV0aG9kKEV4ZWNTdGF0ZSosIFN0cnVjdHVyZSosIGNvbnN0IElkZW50
aWZpZXImKTsKLSAgICB2b2lkIGZpbmlzaENyZWF0aW9uKEV4ZWNTdGF0ZSosIGNvbnN0IElkZW50
aWZpZXImLCBib29sIGlzQ29ubmVjdCwgUGFzc1JlZlB0cjxRdEluc3RhbmNlPiwgaW50IGluZGV4
LCBjb25zdCBRQnl0ZUFycmF5JiBzaWduYXR1cmUpOworICAgIFF0UnVudGltZUNvbm5lY3Rpb25N
ZXRob2QoRXhlY1N0YXRlKiwgU3RydWN0dXJlKiwgY29uc3QgVVN0cmluZyYpOworICAgIHZvaWQg
ZmluaXNoQ3JlYXRpb24oRXhlY1N0YXRlKiwgY29uc3QgVVN0cmluZyYsIGJvb2wgaXNDb25uZWN0
LCBQYXNzUmVmUHRyPFF0SW5zdGFuY2U+LCBpbnQgaW5kZXgsIGNvbnN0IFFCeXRlQXJyYXkmIHNp
Z25hdHVyZSk7CiAKICAgICBzdGF0aWMgQ2FsbFR5cGUgZ2V0Q2FsbERhdGEoSlNDZWxsKiwgQ2Fs
bERhdGEmKTsKICAgICBzdGF0aWMgRW5jb2RlZEpTVmFsdWUgSlNDX0hPU1RfQ0FMTCBjYWxsKEV4
ZWNTdGF0ZSogZXhlYyk7Ci0gICAgc3RhdGljIEpTVmFsdWUgbGVuZ3RoR2V0dGVyKEV4ZWNTdGF0
ZSosIEpTVmFsdWUsIGNvbnN0IElkZW50aWZpZXImKTsKKyAgICBzdGF0aWMgSlNWYWx1ZSBsZW5n
dGhHZXR0ZXIoRXhlY1N0YXRlKiwgSlNWYWx1ZSwgUHJvcGVydHlOYW1lKTsKICAgICBzdGF0aWMg
UU11bHRpTWFwPFFPYmplY3QgKiwgUXRDb25uZWN0aW9uT2JqZWN0ICo+IGNvbm5lY3Rpb25zOwog
ICAgIGZyaWVuZCBjbGFzcyBRdENvbm5lY3Rpb25PYmplY3Q7CiB9OwpJbmRleDogU291cmNlL1dl
YkNvcmUvYnJpZGdlL3F0L3F0X3J1bnRpbWVfcXQ0LmNwcAo9PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2Uv
V2ViQ29yZS9icmlkZ2UvcXQvcXRfcnVudGltZV9xdDQuY3BwCShyZXZpc2lvbiAxMTY2NjcpCisr
KyBTb3VyY2UvV2ViQ29yZS9icmlkZ2UvcXQvcXRfcnVudGltZV9xdDQuY3BwCSh3b3JraW5nIGNv
cHkpCkBAIC05NjgsMTMgKzk2OCwxMyBAQCBKU1ZhbHVlIGNvbnZlcnRRVmFyaWFudFRvVmFsdWUo
RXhlY1N0YXRlCiAKIGNvbnN0IENsYXNzSW5mbyBRdFJ1bnRpbWVNZXRob2Q6OnNfaW5mbyA9IHsg
IlF0UnVudGltZU1ldGhvZCIsICZJbnRlcm5hbEZ1bmN0aW9uOjpzX2luZm8sIDAsIDAsIENSRUFU
RV9NRVRIT0RfVEFCTEUoUXRSdW50aW1lTWV0aG9kKSB9OwogCi1RdFJ1bnRpbWVNZXRob2Q6OlF0
UnVudGltZU1ldGhvZChRdFJ1bnRpbWVNZXRob2REYXRhKiBkZCwgRXhlY1N0YXRlKiBleGVjLCBT
dHJ1Y3R1cmUqIHN0cnVjdHVyZSwgY29uc3QgSWRlbnRpZmllciYgaWRlbnRpZmllcikKK1F0UnVu
dGltZU1ldGhvZDo6UXRSdW50aW1lTWV0aG9kKFF0UnVudGltZU1ldGhvZERhdGEqIGRkLCBFeGVj
U3RhdGUqIGV4ZWMsIFN0cnVjdHVyZSogc3RydWN0dXJlLCBjb25zdCBVU3RyaW5nJiBpZGVudGlm
aWVyKQogICAgIDogSW50ZXJuYWxGdW5jdGlvbihleGVjLT5sZXhpY2FsR2xvYmFsT2JqZWN0KCks
IHN0cnVjdHVyZSkKICAgICAsIGRfcHRyKGRkKQogewogfQogCi12b2lkIFF0UnVudGltZU1ldGhv
ZDo6ZmluaXNoQ3JlYXRpb24oRXhlY1N0YXRlKiBleGVjLCBjb25zdCBJZGVudGlmaWVyJiBpZGVu
dGlmaWVyLCBQYXNzUmVmUHRyPFF0SW5zdGFuY2U+IGluc3RhbmNlKQordm9pZCBRdFJ1bnRpbWVN
ZXRob2Q6OmZpbmlzaENyZWF0aW9uKEV4ZWNTdGF0ZSogZXhlYywgY29uc3QgVVN0cmluZyYgaWRl
bnRpZmllciwgUGFzc1JlZlB0cjxRdEluc3RhbmNlPiBpbnN0YW5jZSkKIHsKICAgICBCYXNlOjpm
aW5pc2hDcmVhdGlvbihleGVjLT5nbG9iYWxEYXRhKCksIGlkZW50aWZpZXIpOwogICAgIFFXX0Qo
UXRSdW50aW1lTWV0aG9kKTsKQEAgLTEzOTQsMTIgKzEzOTQsMTIgQEAgc3RhdGljIGludCBmaW5k
U2lnbmFsSW5kZXgoY29uc3QgUU1ldGFPYgogCiBjb25zdCBDbGFzc0luZm8gUXRSdW50aW1lTWV0
YU1ldGhvZDo6c19pbmZvID0geyAiUXRSdW50aW1lTWV0aG9kIiwgJkJhc2U6OnNfaW5mbywgMCwg
MCwgQ1JFQVRFX01FVEhPRF9UQUJMRShRdFJ1bnRpbWVNZXRhTWV0aG9kKSB9OwogCi1RdFJ1bnRp
bWVNZXRhTWV0aG9kOjpRdFJ1bnRpbWVNZXRhTWV0aG9kKEV4ZWNTdGF0ZSogZXhlYywgU3RydWN0
dXJlKiBzdHJ1Y3R1cmUsIGNvbnN0IElkZW50aWZpZXImIGlkZW50aWZpZXIpCitRdFJ1bnRpbWVN
ZXRhTWV0aG9kOjpRdFJ1bnRpbWVNZXRhTWV0aG9kKEV4ZWNTdGF0ZSogZXhlYywgU3RydWN0dXJl
KiBzdHJ1Y3R1cmUsIGNvbnN0IFVTdHJpbmcmIGlkZW50aWZpZXIpCiAgICAgOiBRdFJ1bnRpbWVN
ZXRob2QgKG5ldyBRdFJ1bnRpbWVNZXRhTWV0aG9kRGF0YSgpLCBleGVjLCBzdHJ1Y3R1cmUsIGlk
ZW50aWZpZXIpCiB7CiB9CiAKLXZvaWQgUXRSdW50aW1lTWV0YU1ldGhvZDo6ZmluaXNoQ3JlYXRp
b24oRXhlY1N0YXRlKiBleGVjLCBjb25zdCBJZGVudGlmaWVyJiBpZGVudGlmaWVyLCBQYXNzUmVm
UHRyPFF0SW5zdGFuY2U+IGluc3RhbmNlLCBpbnQgaW5kZXgsIGNvbnN0IFFCeXRlQXJyYXkmIHNp
Z25hdHVyZSwgYm9vbCBhbGxvd1ByaXZhdGUpCit2b2lkIFF0UnVudGltZU1ldGFNZXRob2Q6OmZp
bmlzaENyZWF0aW9uKEV4ZWNTdGF0ZSogZXhlYywgY29uc3QgVVN0cmluZyYgaWRlbnRpZmllciwg
UGFzc1JlZlB0cjxRdEluc3RhbmNlPiBpbnN0YW5jZSwgaW50IGluZGV4LCBjb25zdCBRQnl0ZUFy
cmF5JiBzaWduYXR1cmUsIGJvb2wgYWxsb3dQcml2YXRlKQogewogICAgIEJhc2U6OmZpbmlzaENy
ZWF0aW9uKGV4ZWMsIGlkZW50aWZpZXIsIGluc3RhbmNlKTsKICAgICBRV19EKFF0UnVudGltZU1l
dGFNZXRob2QpOwpAQCAtMTQ2MSwxNiArMTQ2MSwxOCBAQCBDYWxsVHlwZSBRdFJ1bnRpbWVNZXRh
TWV0aG9kOjpnZXRDYWxsRGF0CiAgICAgcmV0dXJuIENhbGxUeXBlSG9zdDsKIH0KIAotYm9vbCBR
dFJ1bnRpbWVNZXRhTWV0aG9kOjpnZXRPd25Qcm9wZXJ0eVNsb3QoSlNDZWxsKiBjZWxsLCBFeGVj
U3RhdGUqIGV4ZWMsIGNvbnN0IElkZW50aWZpZXImIHByb3BlcnR5TmFtZSwgUHJvcGVydHlTbG90
JiBzbG90KQorYm9vbCBRdFJ1bnRpbWVNZXRhTWV0aG9kOjpnZXRPd25Qcm9wZXJ0eVNsb3QoSlND
ZWxsKiBjZWxsLCBFeGVjU3RhdGUqIGV4ZWMsIFByb3BlcnR5TmFtZSBwcm9wZXJ0eU5hbWUsIFBy
b3BlcnR5U2xvdCYgc2xvdCkKIHsKICAgICBRdFJ1bnRpbWVNZXRhTWV0aG9kKiB0aGlzT2JqZWN0
ID0ganNDYXN0PFF0UnVudGltZU1ldGFNZXRob2QqPihjZWxsKTsKLSAgICBpZiAocHJvcGVydHlO
YW1lID09ICJjb25uZWN0IikgeworICAgIGlmIChwcm9wZXJ0eU5hbWUgPT0gSWRlbnRpZmllcihl
eGVjLCAiY29ubmVjdCIpKSB7CiAgICAgICAgIHNsb3Quc2V0Q3VzdG9tKHRoaXNPYmplY3QsIHRo
aXNPYmplY3QtPmNvbm5lY3RHZXR0ZXIpOwogICAgICAgICByZXR1cm4gdHJ1ZTsKLSAgICB9IGVs
c2UgaWYgKHByb3BlcnR5TmFtZSA9PSAiZGlzY29ubmVjdCIpIHsKKyAgICB9CisgICAgaWYgKHBy
b3BlcnR5TmFtZSA9PSBJZGVudGlmaWVyKGV4ZWMsICJkaXNjb25uZWN0IikpIHsKICAgICAgICAg
c2xvdC5zZXRDdXN0b20odGhpc09iamVjdCwgdGhpc09iamVjdC0+ZGlzY29ubmVjdEdldHRlcik7
CiAgICAgICAgIHJldHVybiB0cnVlOwotICAgIH0gZWxzZSBpZiAocHJvcGVydHlOYW1lID09IGV4
ZWMtPnByb3BlcnR5TmFtZXMoKS5sZW5ndGgpIHsKKyAgICB9CisgICAgaWYgKHByb3BlcnR5TmFt
ZSA9PSBleGVjLT5wcm9wZXJ0eU5hbWVzKCkubGVuZ3RoKSB7CiAgICAgICAgIHNsb3Quc2V0Q3Vz
dG9tKHRoaXNPYmplY3QsIHRoaXNPYmplY3QtPmxlbmd0aEdldHRlcik7CiAgICAgICAgIHJldHVy
biB0cnVlOwogICAgIH0KQEAgLTE0NzgsMTcgKzE0ODAsMTcgQEAgYm9vbCBRdFJ1bnRpbWVNZXRh
TWV0aG9kOjpnZXRPd25Qcm9wZXJ0eQogICAgIHJldHVybiBRdFJ1bnRpbWVNZXRob2Q6OmdldE93
blByb3BlcnR5U2xvdCh0aGlzT2JqZWN0LCBleGVjLCBwcm9wZXJ0eU5hbWUsIHNsb3QpOwogfQog
Ci1ib29sIFF0UnVudGltZU1ldGFNZXRob2Q6OmdldE93blByb3BlcnR5RGVzY3JpcHRvcihKU09i
amVjdCogb2JqZWN0LCBFeGVjU3RhdGUqIGV4ZWMsIGNvbnN0IElkZW50aWZpZXImIHByb3BlcnR5
TmFtZSwgUHJvcGVydHlEZXNjcmlwdG9yJiBkZXNjcmlwdG9yKQorYm9vbCBRdFJ1bnRpbWVNZXRh
TWV0aG9kOjpnZXRPd25Qcm9wZXJ0eURlc2NyaXB0b3IoSlNPYmplY3QqIG9iamVjdCwgRXhlY1N0
YXRlKiBleGVjLCBQcm9wZXJ0eU5hbWUgcHJvcGVydHlOYW1lLCBQcm9wZXJ0eURlc2NyaXB0b3Im
IGRlc2NyaXB0b3IpCiB7CiAgICAgUXRSdW50aW1lTWV0YU1ldGhvZCogdGhpc09iamVjdCA9IGpz
Q2FzdDxRdFJ1bnRpbWVNZXRhTWV0aG9kKj4ob2JqZWN0KTsKLSAgICBpZiAocHJvcGVydHlOYW1l
ID09ICJjb25uZWN0IikgeworICAgIGlmIChwcm9wZXJ0eU5hbWUgPT0gSWRlbnRpZmllcihleGVj
LCAiY29ubmVjdCIpKSB7CiAgICAgICAgIFByb3BlcnR5U2xvdCBzbG90OwogICAgICAgICBzbG90
LnNldEN1c3RvbSh0aGlzT2JqZWN0LCBjb25uZWN0R2V0dGVyKTsKICAgICAgICAgZGVzY3JpcHRv
ci5zZXREZXNjcmlwdG9yKHNsb3QuZ2V0VmFsdWUoZXhlYywgcHJvcGVydHlOYW1lKSwgRG9udERl
bGV0ZSB8IFJlYWRPbmx5IHwgRG9udEVudW0pOwogICAgICAgICByZXR1cm4gdHJ1ZTsKICAgICB9
CiAKLSAgICBpZiAocHJvcGVydHlOYW1lID09ICJkaXNjb25uZWN0IikgeworICAgIGlmIChwcm9w
ZXJ0eU5hbWUgPT0gSWRlbnRpZmllcihleGVjLCAiZGlzY29ubmVjdCIpKSB7CiAgICAgICAgIFBy
b3BlcnR5U2xvdCBzbG90OwogICAgICAgICBzbG90LnNldEN1c3RvbSh0aGlzT2JqZWN0LCBkaXNj
b25uZWN0R2V0dGVyKTsKICAgICAgICAgZGVzY3JpcHRvci5zZXREZXNjcmlwdG9yKHNsb3QuZ2V0
VmFsdWUoZXhlYywgcHJvcGVydHlOYW1lKSwgRG9udERlbGV0ZSB8IFJlYWRPbmx5IHwgRG9udEVu
dW0pOwpAQCAtMTUxNiwyOSArMTUxOCwyOSBAQCB2b2lkIFF0UnVudGltZU1ldGFNZXRob2Q6Omdl
dE93blByb3BlcnR5CiAgICAgUXRSdW50aW1lTWV0aG9kOjpnZXRPd25Qcm9wZXJ0eU5hbWVzKG9i
amVjdCwgZXhlYywgcHJvcGVydHlOYW1lcywgbW9kZSk7CiB9CiAKLUpTVmFsdWUgUXRSdW50aW1l
TWV0YU1ldGhvZDo6bGVuZ3RoR2V0dGVyKEV4ZWNTdGF0ZSosIEpTVmFsdWUsIGNvbnN0IElkZW50
aWZpZXImKQorSlNWYWx1ZSBRdFJ1bnRpbWVNZXRhTWV0aG9kOjpsZW5ndGhHZXR0ZXIoRXhlY1N0
YXRlKiwgSlNWYWx1ZSwgUHJvcGVydHlOYW1lKQogewogICAgIC8vIFF0U2NyaXB0IGFsd2F5cyBy
ZXR1cm5zIDAKICAgICByZXR1cm4ganNOdW1iZXIoMCk7CiB9CiAKLUpTVmFsdWUgUXRSdW50aW1l
TWV0YU1ldGhvZDo6Y29ubmVjdEdldHRlcihFeGVjU3RhdGUqIGV4ZWMsIEpTVmFsdWUgc2xvdEJh
c2UsIGNvbnN0IElkZW50aWZpZXImIGlkZW50KQorSlNWYWx1ZSBRdFJ1bnRpbWVNZXRhTWV0aG9k
Ojpjb25uZWN0R2V0dGVyKEV4ZWNTdGF0ZSogZXhlYywgSlNWYWx1ZSBzbG90QmFzZSwgUHJvcGVy
dHlOYW1lIGlkZW50KQogewogICAgIFF0UnVudGltZU1ldGFNZXRob2QqIHRoaXNPYmogPSBzdGF0
aWNfY2FzdDxRdFJ1bnRpbWVNZXRhTWV0aG9kKj4oYXNPYmplY3Qoc2xvdEJhc2UpKTsKICAgICBR
V19EUyhRdFJ1bnRpbWVNZXRhTWV0aG9kLCB0aGlzT2JqKTsKIAogICAgIGlmICghZC0+bV9jb25u
ZWN0KQotICAgICAgICBkLT5tX2Nvbm5lY3Quc2V0KGV4ZWMtPmdsb2JhbERhdGEoKSwgdGhpc09i
aiwgUXRSdW50aW1lQ29ubmVjdGlvbk1ldGhvZDo6Y3JlYXRlKGV4ZWMsIGlkZW50LCB0cnVlLCBk
LT5tX2luc3RhbmNlLCBkLT5tX2luZGV4LCBkLT5tX3NpZ25hdHVyZSkpOworICAgICAgICBkLT5t
X2Nvbm5lY3Quc2V0KGV4ZWMtPmdsb2JhbERhdGEoKSwgdGhpc09iaiwgUXRSdW50aW1lQ29ubmVj
dGlvbk1ldGhvZDo6Y3JlYXRlKGV4ZWMsIGlkZW50LnVzdHJpbmcoKSwgdHJ1ZSwgZC0+bV9pbnN0
YW5jZSwgZC0+bV9pbmRleCwgZC0+bV9zaWduYXR1cmUpKTsKICAgICByZXR1cm4gZC0+bV9jb25u
ZWN0LmdldCgpOwogfQogCi1KU1ZhbHVlIFF0UnVudGltZU1ldGFNZXRob2Q6OmRpc2Nvbm5lY3RH
ZXR0ZXIoRXhlY1N0YXRlKiBleGVjLCBKU1ZhbHVlIHNsb3RCYXNlLCBjb25zdCBJZGVudGlmaWVy
JiBpZGVudCkKK0pTVmFsdWUgUXRSdW50aW1lTWV0YU1ldGhvZDo6ZGlzY29ubmVjdEdldHRlcihF
eGVjU3RhdGUqIGV4ZWMsIEpTVmFsdWUgc2xvdEJhc2UsIFByb3BlcnR5TmFtZSBpZGVudCkKIHsK
ICAgICBRdFJ1bnRpbWVNZXRhTWV0aG9kKiB0aGlzT2JqID0gc3RhdGljX2Nhc3Q8UXRSdW50aW1l
TWV0YU1ldGhvZCo+KGFzT2JqZWN0KHNsb3RCYXNlKSk7CiAgICAgUVdfRFMoUXRSdW50aW1lTWV0
YU1ldGhvZCwgdGhpc09iaik7CiAKICAgICBpZiAoIWQtPm1fZGlzY29ubmVjdCkKLSAgICAgICAg
ZC0+bV9kaXNjb25uZWN0LnNldChleGVjLT5nbG9iYWxEYXRhKCksIHRoaXNPYmosIFF0UnVudGlt
ZUNvbm5lY3Rpb25NZXRob2Q6OmNyZWF0ZShleGVjLCBpZGVudCwgZmFsc2UsIGQtPm1faW5zdGFu
Y2UsIGQtPm1faW5kZXgsIGQtPm1fc2lnbmF0dXJlKSk7CisgICAgICAgIGQtPm1fZGlzY29ubmVj
dC5zZXQoZXhlYy0+Z2xvYmFsRGF0YSgpLCB0aGlzT2JqLCBRdFJ1bnRpbWVDb25uZWN0aW9uTWV0
aG9kOjpjcmVhdGUoZXhlYywgaWRlbnQudXN0cmluZygpLCBmYWxzZSwgZC0+bV9pbnN0YW5jZSwg
ZC0+bV9pbmRleCwgZC0+bV9zaWduYXR1cmUpKTsKICAgICByZXR1cm4gZC0+bV9kaXNjb25uZWN0
LmdldCgpOwogfQogCkBAIC0xNTQ4LDEyICsxNTUwLDEyIEBAIFFNdWx0aU1hcDxRT2JqZWN0Kiwg
UXRDb25uZWN0aW9uT2JqZWN0Kj4KIAogY29uc3QgQ2xhc3NJbmZvIFF0UnVudGltZUNvbm5lY3Rp
b25NZXRob2Q6OnNfaW5mbyA9IHsgIlF0UnVudGltZU1ldGhvZCIsICZCYXNlOjpzX2luZm8sIDAs
IDAsIENSRUFURV9NRVRIT0RfVEFCTEUoUXRSdW50aW1lQ29ubmVjdGlvbk1ldGhvZCkgfTsKIAot
UXRSdW50aW1lQ29ubmVjdGlvbk1ldGhvZDo6UXRSdW50aW1lQ29ubmVjdGlvbk1ldGhvZChFeGVj
U3RhdGUqIGV4ZWMsIFN0cnVjdHVyZSogc3RydWN0dXJlLCBjb25zdCBJZGVudGlmaWVyJiBpZGVu
dGlmaWVyKQorUXRSdW50aW1lQ29ubmVjdGlvbk1ldGhvZDo6UXRSdW50aW1lQ29ubmVjdGlvbk1l
dGhvZChFeGVjU3RhdGUqIGV4ZWMsIFN0cnVjdHVyZSogc3RydWN0dXJlLCBjb25zdCBVU3RyaW5n
JiBpZGVudGlmaWVyKQogICAgIDogUXRSdW50aW1lTWV0aG9kIChuZXcgUXRSdW50aW1lQ29ubmVj
dGlvbk1ldGhvZERhdGEoKSwgZXhlYywgc3RydWN0dXJlLCBpZGVudGlmaWVyKQogewogfQogCi12
b2lkIFF0UnVudGltZUNvbm5lY3Rpb25NZXRob2Q6OmZpbmlzaENyZWF0aW9uKEV4ZWNTdGF0ZSog
ZXhlYywgY29uc3QgSWRlbnRpZmllciYgaWRlbnRpZmllciwgYm9vbCBpc0Nvbm5lY3QsIFBhc3NS
ZWZQdHI8UXRJbnN0YW5jZT4gaW5zdGFuY2UsIGludCBpbmRleCwgY29uc3QgUUJ5dGVBcnJheSYg
c2lnbmF0dXJlKQordm9pZCBRdFJ1bnRpbWVDb25uZWN0aW9uTWV0aG9kOjpmaW5pc2hDcmVhdGlv
bihFeGVjU3RhdGUqIGV4ZWMsIGNvbnN0IFVTdHJpbmcmIGlkZW50aWZpZXIsIGJvb2wgaXNDb25u
ZWN0LCBQYXNzUmVmUHRyPFF0SW5zdGFuY2U+IGluc3RhbmNlLCBpbnQgaW5kZXgsIGNvbnN0IFFC
eXRlQXJyYXkmIHNpZ25hdHVyZSkKIHsKICAgICBCYXNlOjpmaW5pc2hDcmVhdGlvbihleGVjLCBp
ZGVudGlmaWVyLCBpbnN0YW5jZSk7CiAgICAgUVdfRChRdFJ1bnRpbWVDb25uZWN0aW9uTWV0aG9k
KTsKQEAgLTE3MDQsNyArMTcwNiw3IEBAIENhbGxUeXBlIFF0UnVudGltZUNvbm5lY3Rpb25NZXRo
b2Q6OmdldEMKICAgICByZXR1cm4gQ2FsbFR5cGVIb3N0OwogfQogCi1ib29sIFF0UnVudGltZUNv
bm5lY3Rpb25NZXRob2Q6OmdldE93blByb3BlcnR5U2xvdChKU0NlbGwqIGNlbGwsIEV4ZWNTdGF0
ZSogZXhlYywgY29uc3QgSWRlbnRpZmllciYgcHJvcGVydHlOYW1lLCBQcm9wZXJ0eVNsb3QmIHNs
b3QpCitib29sIFF0UnVudGltZUNvbm5lY3Rpb25NZXRob2Q6OmdldE93blByb3BlcnR5U2xvdChK
U0NlbGwqIGNlbGwsIEV4ZWNTdGF0ZSogZXhlYywgUHJvcGVydHlOYW1lIHByb3BlcnR5TmFtZSwg
UHJvcGVydHlTbG90JiBzbG90KQogewogICAgIFF0UnVudGltZUNvbm5lY3Rpb25NZXRob2QqIHRo
aXNPYmplY3QgPSBqc0Nhc3Q8UXRSdW50aW1lQ29ubmVjdGlvbk1ldGhvZCo+KGNlbGwpOwogICAg
IGlmIChwcm9wZXJ0eU5hbWUgPT0gZXhlYy0+cHJvcGVydHlOYW1lcygpLmxlbmd0aCkgewpAQCAt
MTcxNSw3ICsxNzE3LDcgQEAgYm9vbCBRdFJ1bnRpbWVDb25uZWN0aW9uTWV0aG9kOjpnZXRPd25Q
cgogICAgIHJldHVybiBRdFJ1bnRpbWVNZXRob2Q6OmdldE93blByb3BlcnR5U2xvdCh0aGlzT2Jq
ZWN0LCBleGVjLCBwcm9wZXJ0eU5hbWUsIHNsb3QpOwogfQogCi1ib29sIFF0UnVudGltZUNvbm5l
Y3Rpb25NZXRob2Q6OmdldE93blByb3BlcnR5RGVzY3JpcHRvcihKU09iamVjdCogb2JqZWN0LCBF
eGVjU3RhdGUqIGV4ZWMsIGNvbnN0IElkZW50aWZpZXImIHByb3BlcnR5TmFtZSwgUHJvcGVydHlE
ZXNjcmlwdG9yJiBkZXNjcmlwdG9yKQorYm9vbCBRdFJ1bnRpbWVDb25uZWN0aW9uTWV0aG9kOjpn
ZXRPd25Qcm9wZXJ0eURlc2NyaXB0b3IoSlNPYmplY3QqIG9iamVjdCwgRXhlY1N0YXRlKiBleGVj
LCBQcm9wZXJ0eU5hbWUgcHJvcGVydHlOYW1lLCBQcm9wZXJ0eURlc2NyaXB0b3ImIGRlc2NyaXB0
b3IpCiB7CiAgICAgUXRSdW50aW1lQ29ubmVjdGlvbk1ldGhvZCogdGhpc09iamVjdCA9IGpzQ2Fz
dDxRdFJ1bnRpbWVDb25uZWN0aW9uTWV0aG9kKj4ob2JqZWN0KTsKICAgICBpZiAocHJvcGVydHlO
YW1lID09IGV4ZWMtPnByb3BlcnR5TmFtZXMoKS5sZW5ndGgpIHsKQEAgLTE3MzYsNyArMTczOCw3
IEBAIHZvaWQgUXRSdW50aW1lQ29ubmVjdGlvbk1ldGhvZDo6Z2V0T3duUHIKICAgICBRdFJ1bnRp
bWVNZXRob2Q6OmdldE93blByb3BlcnR5TmFtZXMob2JqZWN0LCBleGVjLCBwcm9wZXJ0eU5hbWVz
LCBtb2RlKTsKIH0KIAotSlNWYWx1ZSBRdFJ1bnRpbWVDb25uZWN0aW9uTWV0aG9kOjpsZW5ndGhH
ZXR0ZXIoRXhlY1N0YXRlKiwgSlNWYWx1ZSwgY29uc3QgSWRlbnRpZmllciYpCitKU1ZhbHVlIFF0
UnVudGltZUNvbm5lY3Rpb25NZXRob2Q6Omxlbmd0aEdldHRlcihFeGVjU3RhdGUqLCBKU1ZhbHVl
LCBQcm9wZXJ0eU5hbWUpCiB7CiAgICAgLy8gd2UgaGF2ZSBvbmUgZm9ybWFsIGFyZ3VtZW50LCBh
bmQgb25lIG9wdGlvbmFsCiAgICAgcmV0dXJuIGpzTnVtYmVyKDEpOwpJbmRleDogU291cmNlL1dl
YktpdDIvQ2hhbmdlTG9nCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9XZWJLaXQyL0NoYW5nZUxvZwko
cmV2aXNpb24gMTE2NzkyKQorKysgU291cmNlL1dlYktpdDIvQ2hhbmdlTG9nCSh3b3JraW5nIGNv
cHkpCkBAIC0xLDMgKzEsMzggQEAKKzIwMTItMDUtMTEgIEdhdmluIEJhcnJhY2xvdWdoICA8YmFy
cmFjbG91Z2hAYXBwbGUuY29tPgorCisgICAgICAgIEludHJvZHVjZSBQcm9wZXJ0eU5hbWUgY2xh
c3MKKyAgICAgICAgaHR0cHM6Ly9idWdzLndlYmtpdC5vcmcvc2hvd19idWcuY2dpP2lkPTg2MjQx
CisKKyAgICAgICAgUmV2aWV3ZWQgYnkgTk9CT0RZIChPT1BTISkuCisKKyAgICAgICAgUmVwbGFj
ZSAnY29uc3QgSWRlbnRpZmllciYnIGFyZ3VtZW50cyB0byBmdW5jdGlvbnMgYWNjZXNzaW5nIG9i
amVjdCBwcm9wZXJ0aWVzIHdpdGggYSBuZXcgJ1Byb3BlcnR5TmFtZScgdHlwZS4KKyAgICAgICAg
VGhpcyBjaGFuZ2UgcGF2ZXMgdGhlIHdheSB0byBhbGxvdyBmb3IgcHJvcGVydGllcyBrZXllZCBi
eSB2YWx1ZXMgdGhhdCBhcmUgbm90IElkZW50aWZpZXJzLgorCisgICAgICAgIFRoaXMgY2hhbmdl
IGlzIGxhcmdlbHkgYSBtZWNoYW5pY2FsIGZpbmQgJiByZXBsYWNlLgorICAgICAgICBJdCBhbHNv
IGNoYW5nZXMgSlNGdW5jdGlvbidzIGNvbnN0cnVjdG9yIHRvIHRha2UgYSBVU3RyaW5nJiBpbnN0
ZWFkIG9mIGFuIElkZW50aWZpZXImCisgICAgICAgIChzaW5jZSBpbiBzb21lIGNhc2VzIHdlIGNh
biBubyBsb25nZXIgZ3VhcmFudGVlIHRoYXQgd2UnbGxsIGhhdmUgYW4gSWRlbnRpZmllciksIGFu
ZAorICAgICAgICB1bmlmaWVzIElkZW50aWZpZXIncyBtZXRob2RzIHRvIG9idGFpbiBhcnJheSBp
bmRpY2VzIG9udG8gUHJvcGVydHlOYW1lLgorCisgICAgICAgIFRoZSBuZXcgUHJvcGVydHlOYW1l
IGNsYXNzIHJldGFpbnMgdGhlIGFiaWxpdHkgdG8gc3VwcG9ydCAuaW1wbCgpIGFuZCAudXN0cmlu
ZygpLCBidXQKKyAgICAgICAgaW4gYSBmdXR1cmUgcGF0Y2ggd2UgbWF5IG5lZWQgdG8gcmV3b3Jr
IHRoaXMsIHNpbmNlIG5vdCBhbGwgUHJvcGVydHlOYW1lcyBzaG91bGQgYmUKKyAgICAgICAgZXF1
YWwgYmFzZWQgb24gdGhlaXIgc3RyaW5nIHJlcHJlc2VudGF0aW9uLgorCisgICAgICAgICogV2Vi
UHJvY2Vzcy9QbHVnaW5zL05ldHNjYXBlL0pTTlBNZXRob2QuY3BwOgorICAgICAgICAoV2ViS2l0
OjpKU05QTWV0aG9kOjpmaW5pc2hDcmVhdGlvbik6CisgICAgICAgICogV2ViUHJvY2Vzcy9QbHVn
aW5zL05ldHNjYXBlL0pTTlBNZXRob2QuaDoKKyAgICAgICAgKFdlYktpdDo6SlNOUE1ldGhvZDo6
Y3JlYXRlKToKKyAgICAgICAgKEpTTlBNZXRob2QpOgorICAgICAgICAqIFdlYlByb2Nlc3MvUGx1
Z2lucy9OZXRzY2FwZS9KU05QT2JqZWN0LmNwcDoKKyAgICAgICAgKFdlYktpdDo6bnBJZGVudGlm
aWVyRnJvbUlkZW50aWZpZXIpOgorICAgICAgICAoV2ViS2l0OjpKU05QT2JqZWN0OjpnZXRPd25Q
cm9wZXJ0eVNsb3QpOgorICAgICAgICAoV2ViS2l0OjpKU05QT2JqZWN0OjpnZXRPd25Qcm9wZXJ0
eURlc2NyaXB0b3IpOgorICAgICAgICAoV2ViS2l0OjpKU05QT2JqZWN0OjpwdXQpOgorICAgICAg
ICAoV2ViS2l0OjpKU05QT2JqZWN0OjpkZWxldGVQcm9wZXJ0eSk6CisgICAgICAgIChXZWJLaXQ6
OkpTTlBPYmplY3Q6OnByb3BlcnR5R2V0dGVyKToKKyAgICAgICAgKFdlYktpdDo6SlNOUE9iamVj
dDo6bWV0aG9kR2V0dGVyKToKKyAgICAgICAgKiBXZWJQcm9jZXNzL1BsdWdpbnMvTmV0c2NhcGUv
SlNOUE9iamVjdC5oOgorICAgICAgICAoSlNOUE9iamVjdCk6CisKIDIwMTItMDUtMTEgIEd1c3Rh
dm8gTm9yb25oYSBTaWx2YSAgPGduc0Bnbm9tZS5vcmc+CiAKICAgICAgICAgUkVHUkVTU0lPTihy
MTE2MjA1KTogW0dUS106IGJ1aWxkIG5vIGxvbmdlciBzdXBwb3J0cyB0aGluIGFyY2hpdmVzCklu
ZGV4OiBTb3VyY2UvV2ViS2l0Mi9XZWJQcm9jZXNzL1BsdWdpbnMvTmV0c2NhcGUvSlNOUE1ldGhv
ZC5jcHAKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PQotLS0gU291cmNlL1dlYktpdDIvV2ViUHJvY2Vzcy9QbHVnaW5zL05l
dHNjYXBlL0pTTlBNZXRob2QuY3BwCShyZXZpc2lvbiAxMTY2NjcpCisrKyBTb3VyY2UvV2ViS2l0
Mi9XZWJQcm9jZXNzL1BsdWdpbnMvTmV0c2NhcGUvSlNOUE1ldGhvZC5jcHAJKHdvcmtpbmcgY29w
eSkKQEAgLTQ5LDcgKzQ5LDcgQEAgSlNOUE1ldGhvZDo6SlNOUE1ldGhvZChKU0dsb2JhbE9iamVj
dCogZwogewogfQogCi12b2lkIEpTTlBNZXRob2Q6OmZpbmlzaENyZWF0aW9uKEpTR2xvYmFsRGF0
YSYgZ2xvYmFsRGF0YSwgY29uc3QgSWRlbnRpZmllciYgbmFtZSkKK3ZvaWQgSlNOUE1ldGhvZDo6
ZmluaXNoQ3JlYXRpb24oSlNHbG9iYWxEYXRhJiBnbG9iYWxEYXRhLCBjb25zdCBVU3RyaW5nJiBu
YW1lKQogewogICAgIEJhc2U6OmZpbmlzaENyZWF0aW9uKGdsb2JhbERhdGEsIG5hbWUpOwogICAg
IEFTU0VSVChpbmhlcml0cygmc19pbmZvKSk7CkluZGV4OiBTb3VyY2UvV2ViS2l0Mi9XZWJQcm9j
ZXNzL1BsdWdpbnMvTmV0c2NhcGUvSlNOUE1ldGhvZC5oCj09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9X
ZWJLaXQyL1dlYlByb2Nlc3MvUGx1Z2lucy9OZXRzY2FwZS9KU05QTWV0aG9kLmgJKHJldmlzaW9u
IDExNjY2NykKKysrIFNvdXJjZS9XZWJLaXQyL1dlYlByb2Nlc3MvUGx1Z2lucy9OZXRzY2FwZS9K
U05QTWV0aG9kLmgJKHdvcmtpbmcgY29weSkKQEAgLTM5LDcgKzM5LDcgQEAgY2xhc3MgSlNOUE1l
dGhvZCA6IHB1YmxpYyBKU0M6OkludGVybmFsRgogcHVibGljOgogICAgIHR5cGVkZWYgSlNDOjpJ
bnRlcm5hbEZ1bmN0aW9uIEJhc2U7CiAKLSAgICBzdGF0aWMgSlNOUE1ldGhvZCogY3JlYXRlKEpT
Qzo6RXhlY1N0YXRlKiBleGVjLCBKU0M6OkpTR2xvYmFsT2JqZWN0KiBnbG9iYWxPYmplY3QsIGNv
bnN0IEpTQzo6SWRlbnRpZmllciYgbmFtZSwgTlBJZGVudGlmaWVyIG5wSWRlbnQpCisgICAgc3Rh
dGljIEpTTlBNZXRob2QqIGNyZWF0ZShKU0M6OkV4ZWNTdGF0ZSogZXhlYywgSlNDOjpKU0dsb2Jh
bE9iamVjdCogZ2xvYmFsT2JqZWN0LCBjb25zdCBKU0M6OlVTdHJpbmcmIG5hbWUsIE5QSWRlbnRp
ZmllciBucElkZW50KQogICAgIHsKICAgICAgICAgSlNDOjpTdHJ1Y3R1cmUqIHN0cnVjdHVyZSA9
IGNyZWF0ZVN0cnVjdHVyZShleGVjLT5nbG9iYWxEYXRhKCksIGdsb2JhbE9iamVjdCwgZ2xvYmFs
T2JqZWN0LT5mdW5jdGlvblByb3RvdHlwZSgpKTsKICAgICAgICAgSlNOUE1ldGhvZCogbWV0aG9k
ID0gbmV3IChKU0M6OmFsbG9jYXRlQ2VsbDxKU05QTWV0aG9kPigqZXhlYy0+aGVhcCgpKSkgSlNO
UE1ldGhvZChnbG9iYWxPYmplY3QsIHN0cnVjdHVyZSwgbnBJZGVudCk7CkBAIC01Miw3ICs1Miw3
IEBAIHB1YmxpYzoKICAgICBOUElkZW50aWZpZXIgbnBJZGVudGlmaWVyKCkgY29uc3QgeyByZXR1
cm4gbV9ucElkZW50aWZpZXI7IH0KIAogcHJvdGVjdGVkOgotICAgIHZvaWQgZmluaXNoQ3JlYXRp
b24oSlNDOjpKU0dsb2JhbERhdGEmLCBjb25zdCBKU0M6OklkZW50aWZpZXImIG5hbWUpOworICAg
IHZvaWQgZmluaXNoQ3JlYXRpb24oSlNDOjpKU0dsb2JhbERhdGEmLCBjb25zdCBKU0M6OlVTdHJp
bmcmIG5hbWUpOwogCiBwcml2YXRlOiAgICAKICAgICBKU05QTWV0aG9kKEpTQzo6SlNHbG9iYWxP
YmplY3QqLCBKU0M6OlN0cnVjdHVyZSosIE5QSWRlbnRpZmllcik7CkluZGV4OiBTb3VyY2UvV2Vi
S2l0Mi9XZWJQcm9jZXNzL1BsdWdpbnMvTmV0c2NhcGUvSlNOUE9iamVjdC5jcHAKPT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PQotLS0gU291cmNlL1dlYktpdDIvV2ViUHJvY2Vzcy9QbHVnaW5zL05ldHNjYXBlL0pTTlBPYmpl
Y3QuY3BwCShyZXZpc2lvbiAxMTY2NjcpCisrKyBTb3VyY2UvV2ViS2l0Mi9XZWJQcm9jZXNzL1Bs
dWdpbnMvTmV0c2NhcGUvSlNOUE9iamVjdC5jcHAJKHdvcmtpbmcgY29weSkKQEAgLTQzLDcgKzQz
LDcgQEAgdXNpbmcgbmFtZXNwYWNlIFdlYkNvcmU7CiAKIG5hbWVzcGFjZSBXZWJLaXQgewogCi1z
dGF0aWMgTlBJZGVudGlmaWVyIG5wSWRlbnRpZmllckZyb21JZGVudGlmaWVyKGNvbnN0IElkZW50
aWZpZXImIGlkZW50aWZpZXIpCitzdGF0aWMgTlBJZGVudGlmaWVyIG5wSWRlbnRpZmllckZyb21J
ZGVudGlmaWVyKFByb3BlcnR5TmFtZSBpZGVudGlmaWVyKQogewogICAgIHJldHVybiBzdGF0aWNf
Y2FzdDxOUElkZW50aWZpZXI+KElkZW50aWZpZXJSZXA6OmdldChpZGVudGlmaWVyLnVzdHJpbmco
KS51dGY4KCkuZGF0YSgpKSk7CiB9CkBAIC0yNTIsNyArMjUyLDcgQEAgQ29uc3RydWN0VHlwZSBK
U05QT2JqZWN0OjpnZXRDb25zdHJ1Y3REYQogICAgIHJldHVybiBDb25zdHJ1Y3RUeXBlSG9zdDsK
IH0KIAotYm9vbCBKU05QT2JqZWN0OjpnZXRPd25Qcm9wZXJ0eVNsb3QoSlNDZWxsKiBjZWxsLCBF
eGVjU3RhdGUqIGV4ZWMsIGNvbnN0IElkZW50aWZpZXImIHByb3BlcnR5TmFtZSwgUHJvcGVydHlT
bG90JiBzbG90KQorYm9vbCBKU05QT2JqZWN0OjpnZXRPd25Qcm9wZXJ0eVNsb3QoSlNDZWxsKiBj
ZWxsLCBFeGVjU3RhdGUqIGV4ZWMsIFByb3BlcnR5TmFtZSBwcm9wZXJ0eU5hbWUsIFByb3BlcnR5
U2xvdCYgc2xvdCkKIHsKICAgICBKU05QT2JqZWN0KiB0aGlzT2JqZWN0ID0gSlNDOjpqc0Nhc3Q8
SlNOUE9iamVjdCo+KGNlbGwpOwogICAgIEFTU0VSVF9HQ19PQkpFQ1RfSU5IRVJJVFModGhpc09i
amVjdCwgJnNfaW5mbyk7CkBAIC0yNzgsNyArMjc4LDcgQEAgYm9vbCBKU05QT2JqZWN0OjpnZXRP
d25Qcm9wZXJ0eVNsb3QoSlNDZQogICAgIHJldHVybiBmYWxzZTsKIH0KIAotYm9vbCBKU05QT2Jq
ZWN0OjpnZXRPd25Qcm9wZXJ0eURlc2NyaXB0b3IoSlNPYmplY3QqIG9iamVjdCwgRXhlY1N0YXRl
KiBleGVjLCBjb25zdCBJZGVudGlmaWVyJiBwcm9wZXJ0eU5hbWUsIFByb3BlcnR5RGVzY3JpcHRv
ciYgZGVzY3JpcHRvcikKK2Jvb2wgSlNOUE9iamVjdDo6Z2V0T3duUHJvcGVydHlEZXNjcmlwdG9y
KEpTT2JqZWN0KiBvYmplY3QsIEV4ZWNTdGF0ZSogZXhlYywgUHJvcGVydHlOYW1lIHByb3BlcnR5
TmFtZSwgUHJvcGVydHlEZXNjcmlwdG9yJiBkZXNjcmlwdG9yKQogewogICAgIEpTTlBPYmplY3Qq
IHRoaXNPYmplY3QgPSBqc0Nhc3Q8SlNOUE9iamVjdCo+KG9iamVjdCk7CiAgICAgQVNTRVJUX0dD
X09CSkVDVF9JTkhFUklUUyh0aGlzT2JqZWN0LCAmc19pbmZvKTsKQEAgLTMwOCw3ICszMDgsNyBA
QCBib29sIEpTTlBPYmplY3Q6OmdldE93blByb3BlcnR5RGVzY3JpcHRvCiAgICAgcmV0dXJuIGZh
bHNlOwogfQogCi12b2lkIEpTTlBPYmplY3Q6OnB1dChKU0NlbGwqIGNlbGwsIEV4ZWNTdGF0ZSog
ZXhlYywgY29uc3QgSWRlbnRpZmllciYgcHJvcGVydHlOYW1lLCBKU1ZhbHVlIHZhbHVlLCBQdXRQ
cm9wZXJ0eVNsb3QmKQordm9pZCBKU05QT2JqZWN0OjpwdXQoSlNDZWxsKiBjZWxsLCBFeGVjU3Rh
dGUqIGV4ZWMsIFByb3BlcnR5TmFtZSBwcm9wZXJ0eU5hbWUsIEpTVmFsdWUgdmFsdWUsIFB1dFBy
b3BlcnR5U2xvdCYpCiB7CiAgICAgSlNOUE9iamVjdCogdGhpc09iamVjdCA9IEpTQzo6anNDYXN0
PEpTTlBPYmplY3QqPihjZWxsKTsKICAgICBBU1NFUlRfR0NfT0JKRUNUX0lOSEVSSVRTKHRoaXNP
YmplY3QsICZzX2luZm8pOwpAQCAtMzQ3LDcgKzM0Nyw3IEBAIHZvaWQgSlNOUE9iamVjdDo6cHV0
KEpTQ2VsbCogY2VsbCwgRXhlY1MKICAgICByZWxlYXNlTlBWYXJpYW50VmFsdWUoJnZhcmlhbnQp
OwogfQogCi1ib29sIEpTTlBPYmplY3Q6OmRlbGV0ZVByb3BlcnR5KEpTQ2VsbCogY2VsbCwgRXhl
Y1N0YXRlKiBleGVjLCBjb25zdCBJZGVudGlmaWVyJiBwcm9wZXJ0eU5hbWUpCitib29sIEpTTlBP
YmplY3Q6OmRlbGV0ZVByb3BlcnR5KEpTQ2VsbCogY2VsbCwgRXhlY1N0YXRlKiBleGVjLCBQcm9w
ZXJ0eU5hbWUgcHJvcGVydHlOYW1lKQogewogICAgIHJldHVybiBqc0Nhc3Q8SlNOUE9iamVjdCo+
KGNlbGwpLT5kZWxldGVQcm9wZXJ0eShleGVjLCBucElkZW50aWZpZXJGcm9tSWRlbnRpZmllcihw
cm9wZXJ0eU5hbWUpKTsKIH0KQEAgLTQzNiw3ICs0MzYsNyBAQCB2b2lkIEpTTlBPYmplY3Q6Omdl
dE93blByb3BlcnR5TmFtZXMoSlNPCiAgICAgbnBuTWVtRnJlZShpZGVudGlmaWVycyk7CiB9CiAK
LUpTVmFsdWUgSlNOUE9iamVjdDo6cHJvcGVydHlHZXR0ZXIoRXhlY1N0YXRlKiBleGVjLCBKU1Zh
bHVlIHNsb3RCYXNlLCBjb25zdCBJZGVudGlmaWVyJiBwcm9wZXJ0eU5hbWUpCitKU1ZhbHVlIEpT
TlBPYmplY3Q6OnByb3BlcnR5R2V0dGVyKEV4ZWNTdGF0ZSogZXhlYywgSlNWYWx1ZSBzbG90QmFz
ZSwgUHJvcGVydHlOYW1lIHByb3BlcnR5TmFtZSkKIHsKICAgICBKU05QT2JqZWN0KiB0aGlzT2Jq
ID0gc3RhdGljX2Nhc3Q8SlNOUE9iamVjdCo+KGFzT2JqZWN0KHNsb3RCYXNlKSk7CiAgICAgQVNT
RVJUX0dDX09CSkVDVF9JTkhFUklUUyh0aGlzT2JqLCAmc19pbmZvKTsKQEAgLTQ3Miw3ICs0NzIs
NyBAQCBKU1ZhbHVlIEpTTlBPYmplY3Q6OnByb3BlcnR5R2V0dGVyKEV4ZWNTCiAgICAgcmV0dXJu
IHByb3BlcnR5VmFsdWU7CiB9CiAKLUpTVmFsdWUgSlNOUE9iamVjdDo6bWV0aG9kR2V0dGVyKEV4
ZWNTdGF0ZSogZXhlYywgSlNWYWx1ZSBzbG90QmFzZSwgY29uc3QgSWRlbnRpZmllciYgbWV0aG9k
TmFtZSkKK0pTVmFsdWUgSlNOUE9iamVjdDo6bWV0aG9kR2V0dGVyKEV4ZWNTdGF0ZSogZXhlYywg
SlNWYWx1ZSBzbG90QmFzZSwgUHJvcGVydHlOYW1lIG1ldGhvZE5hbWUpCiB7CiAgICAgSlNOUE9i
amVjdCogdGhpc09iaiA9IHN0YXRpY19jYXN0PEpTTlBPYmplY3QqPihhc09iamVjdChzbG90QmFz
ZSkpOwogICAgIEFTU0VSVF9HQ19PQkpFQ1RfSU5IRVJJVFModGhpc09iaiwgJnNfaW5mbyk7CkBA
IC00ODEsNyArNDgxLDcgQEAgSlNWYWx1ZSBKU05QT2JqZWN0OjptZXRob2RHZXR0ZXIoRXhlY1N0
YQogICAgICAgICByZXR1cm4gdGhyb3dJbnZhbGlkQWNjZXNzRXJyb3IoZXhlYyk7CiAKICAgICBO
UElkZW50aWZpZXIgbnBJZGVudGlmaWVyID0gbnBJZGVudGlmaWVyRnJvbUlkZW50aWZpZXIobWV0
aG9kTmFtZSk7Ci0gICAgcmV0dXJuIEpTTlBNZXRob2Q6OmNyZWF0ZShleGVjLCB0aGlzT2JqLT5n
bG9iYWxPYmplY3QoKSwgbWV0aG9kTmFtZSwgbnBJZGVudGlmaWVyKTsKKyAgICByZXR1cm4gSlNO
UE1ldGhvZDo6Y3JlYXRlKGV4ZWMsIHRoaXNPYmotPmdsb2JhbE9iamVjdCgpLCBtZXRob2ROYW1l
LnVzdHJpbmcoKSwgbnBJZGVudGlmaWVyKTsKIH0KIAogSlNPYmplY3QqIEpTTlBPYmplY3Q6OnRo
cm93SW52YWxpZEFjY2Vzc0Vycm9yKEV4ZWNTdGF0ZSogZXhlYykKSW5kZXg6IFNvdXJjZS9XZWJL
aXQyL1dlYlByb2Nlc3MvUGx1Z2lucy9OZXRzY2FwZS9KU05QT2JqZWN0LmgKPT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQot
LS0gU291cmNlL1dlYktpdDIvV2ViUHJvY2Vzcy9QbHVnaW5zL05ldHNjYXBlL0pTTlBPYmplY3Qu
aAkocmV2aXNpb24gMTE2NjY3KQorKysgU291cmNlL1dlYktpdDIvV2ViUHJvY2Vzcy9QbHVnaW5z
L05ldHNjYXBlL0pTTlBPYmplY3QuaAkod29ya2luZyBjb3B5KQpAQCAtODMsMTkgKzgzLDE5IEBA
IHByaXZhdGU6CiAgICAgc3RhdGljIEpTQzo6Q2FsbFR5cGUgZ2V0Q2FsbERhdGEoSlNDOjpKU0Nl
bGwqLCBKU0M6OkNhbGxEYXRhJik7CiAgICAgc3RhdGljIEpTQzo6Q29uc3RydWN0VHlwZSBnZXRD
b25zdHJ1Y3REYXRhKEpTQzo6SlNDZWxsKiwgSlNDOjpDb25zdHJ1Y3REYXRhJik7CiAKLSAgICBz
dGF0aWMgYm9vbCBnZXRPd25Qcm9wZXJ0eVNsb3QoSlNDOjpKU0NlbGwqLCBKU0M6OkV4ZWNTdGF0
ZSosIGNvbnN0IEpTQzo6SWRlbnRpZmllciYgcHJvcGVydHlOYW1lLCBKU0M6OlByb3BlcnR5U2xv
dCYpOwotICAgIHN0YXRpYyBib29sIGdldE93blByb3BlcnR5RGVzY3JpcHRvcihKU0M6OkpTT2Jq
ZWN0KiwgSlNDOjpFeGVjU3RhdGUqLCBjb25zdCBKU0M6OklkZW50aWZpZXImIHByb3BlcnR5TmFt
ZSwgSlNDOjpQcm9wZXJ0eURlc2NyaXB0b3ImKTsKLSAgICBzdGF0aWMgdm9pZCBwdXQoSlNDOjpK
U0NlbGwqLCBKU0M6OkV4ZWNTdGF0ZSosIGNvbnN0IEpTQzo6SWRlbnRpZmllciYgcHJvcGVydHlO
YW1lLCBKU0M6OkpTVmFsdWUsIEpTQzo6UHV0UHJvcGVydHlTbG90Jik7CisgICAgc3RhdGljIGJv
b2wgZ2V0T3duUHJvcGVydHlTbG90KEpTQzo6SlNDZWxsKiwgSlNDOjpFeGVjU3RhdGUqLCBKU0M6
OlByb3BlcnR5TmFtZSwgSlNDOjpQcm9wZXJ0eVNsb3QmKTsKKyAgICBzdGF0aWMgYm9vbCBnZXRP
d25Qcm9wZXJ0eURlc2NyaXB0b3IoSlNDOjpKU09iamVjdCosIEpTQzo6RXhlY1N0YXRlKiwgSlND
OjpQcm9wZXJ0eU5hbWUsIEpTQzo6UHJvcGVydHlEZXNjcmlwdG9yJik7CisgICAgc3RhdGljIHZv
aWQgcHV0KEpTQzo6SlNDZWxsKiwgSlNDOjpFeGVjU3RhdGUqLCBKU0M6OlByb3BlcnR5TmFtZSwg
SlNDOjpKU1ZhbHVlLCBKU0M6OlB1dFByb3BlcnR5U2xvdCYpOwogCi0gICAgc3RhdGljIGJvb2wg
ZGVsZXRlUHJvcGVydHkoSlNDOjpKU0NlbGwqLCBKU0M6OkV4ZWNTdGF0ZSosIGNvbnN0IEpTQzo6
SWRlbnRpZmllciYgcHJvcGVydHlOYW1lKTsKKyAgICBzdGF0aWMgYm9vbCBkZWxldGVQcm9wZXJ0
eShKU0M6OkpTQ2VsbCosIEpTQzo6RXhlY1N0YXRlKiwgSlNDOjpQcm9wZXJ0eU5hbWUpOwogICAg
IHN0YXRpYyBib29sIGRlbGV0ZVByb3BlcnR5QnlJbmRleChKU0M6OkpTQ2VsbCosIEpTQzo6RXhl
Y1N0YXRlKiwgdW5zaWduZWQgcHJvcGVydHlOYW1lKTsKIAogICAgIGJvb2wgZGVsZXRlUHJvcGVy
dHkoSlNDOjpFeGVjU3RhdGUqLCBOUElkZW50aWZpZXIgcHJvcGVydHlOYW1lKTsKIAogICAgIHN0
YXRpYyB2b2lkIGdldE93blByb3BlcnR5TmFtZXMoSlNDOjpKU09iamVjdCosIEpTQzo6RXhlY1N0
YXRlKiwgSlNDOjpQcm9wZXJ0eU5hbWVBcnJheSYsIEpTQzo6RW51bWVyYXRpb25Nb2RlKTsKIAot
ICAgIHN0YXRpYyBKU0M6OkpTVmFsdWUgcHJvcGVydHlHZXR0ZXIoSlNDOjpFeGVjU3RhdGUqLCBK
U0M6OkpTVmFsdWUsIGNvbnN0IEpTQzo6SWRlbnRpZmllciYpOwotICAgIHN0YXRpYyBKU0M6OkpT
VmFsdWUgbWV0aG9kR2V0dGVyKEpTQzo6RXhlY1N0YXRlKiwgSlNDOjpKU1ZhbHVlLCBjb25zdCBK
U0M6OklkZW50aWZpZXImKTsKKyAgICBzdGF0aWMgSlNDOjpKU1ZhbHVlIHByb3BlcnR5R2V0dGVy
KEpTQzo6RXhlY1N0YXRlKiwgSlNDOjpKU1ZhbHVlLCBKU0M6OlByb3BlcnR5TmFtZSk7CisgICAg
c3RhdGljIEpTQzo6SlNWYWx1ZSBtZXRob2RHZXR0ZXIoSlNDOjpFeGVjU3RhdGUqLCBKU0M6OkpT
VmFsdWUsIEpTQzo6UHJvcGVydHlOYW1lKTsKICAgICBzdGF0aWMgSlNDOjpKU09iamVjdCogdGhy
b3dJbnZhbGlkQWNjZXNzRXJyb3IoSlNDOjpFeGVjU3RhdGUqKTsKIAogICAgIE5QUnVudGltZU9i
amVjdE1hcCogbV9vYmplY3RNYXA7CkluZGV4OiBTb3VyY2UvV2ViS2l0L21hYy9DaGFuZ2VMb2cK
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PQotLS0gU291cmNlL1dlYktpdC9tYWMvQ2hhbmdlTG9nCShyZXZpc2lvbiAxMTY3
OTIpCisrKyBTb3VyY2UvV2ViS2l0L21hYy9DaGFuZ2VMb2cJKHdvcmtpbmcgY29weSkKQEAgLTEs
MyArMSwzNCBAQAorMjAxMi0wNS0xMSAgR2F2aW4gQmFycmFjbG91Z2ggIDxiYXJyYWNsb3VnaEBh
cHBsZS5jb20+CisKKyAgICAgICAgSW50cm9kdWNlIFByb3BlcnR5TmFtZSBjbGFzcworICAgICAg
ICBodHRwczovL2J1Z3Mud2Via2l0Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9ODYyNDEKKworICAgICAg
ICBSZXZpZXdlZCBieSBOT0JPRFkgKE9PUFMhKS4KKworICAgICAgICBSZXBsYWNlICdjb25zdCBJ
ZGVudGlmaWVyJicgYXJndW1lbnRzIHRvIGZ1bmN0aW9ucyBhY2Nlc3Npbmcgb2JqZWN0IHByb3Bl
cnRpZXMgd2l0aCBhIG5ldyAnUHJvcGVydHlOYW1lJyB0eXBlLgorICAgICAgICBUaGlzIGNoYW5n
ZSBwYXZlcyB0aGUgd2F5IHRvIGFsbG93IGZvciBwcm9wZXJ0aWVzIGtleWVkIGJ5IHZhbHVlcyB0
aGF0IGFyZSBub3QgSWRlbnRpZmllcnMuCisKKyAgICAgICAgVGhpcyBjaGFuZ2UgaXMgbGFyZ2Vs
eSBhIG1lY2hhbmljYWwgZmluZCAmIHJlcGxhY2UuCisgICAgICAgIEl0IGFsc28gY2hhbmdlcyBK
U0Z1bmN0aW9uJ3MgY29uc3RydWN0b3IgdG8gdGFrZSBhIFVTdHJpbmcmIGluc3RlYWQgb2YgYW4g
SWRlbnRpZmllciYKKyAgICAgICAgKHNpbmNlIGluIHNvbWUgY2FzZXMgd2UgY2FuIG5vIGxvbmdl
ciBndWFyYW50ZWUgdGhhdCB3ZSdsbGwgaGF2ZSBhbiBJZGVudGlmaWVyKSwgYW5kCisgICAgICAg
IHVuaWZpZXMgSWRlbnRpZmllcidzIG1ldGhvZHMgdG8gb2J0YWluIGFycmF5IGluZGljZXMgb250
byBQcm9wZXJ0eU5hbWUuCisKKyAgICAgICAgVGhlIG5ldyBQcm9wZXJ0eU5hbWUgY2xhc3MgcmV0
YWlucyB0aGUgYWJpbGl0eSB0byBzdXBwb3J0IC5pbXBsKCkgYW5kIC51c3RyaW5nKCksIGJ1dAor
ICAgICAgICBpbiBhIGZ1dHVyZSBwYXRjaCB3ZSBtYXkgbmVlZCB0byByZXdvcmsgdGhpcywgc2lu
Y2Ugbm90IGFsbCBQcm9wZXJ0eU5hbWVzIHNob3VsZCBiZQorICAgICAgICBlcXVhbCBiYXNlZCBv
biB0aGVpciBzdHJpbmcgcmVwcmVzZW50YXRpb24uCisKKyAgICAgICAgKiBQbHVnaW5zL0hvc3Rl
ZC9Qcm94eUluc3RhbmNlLmg6CisgICAgICAgIChQcm94eUluc3RhbmNlKToKKyAgICAgICAgKiBQ
bHVnaW5zL0hvc3RlZC9Qcm94eUluc3RhbmNlLm1tOgorICAgICAgICAoUHJveHlDbGFzcyk6Cisg
ICAgICAgIChXZWJLaXQ6OlByb3h5Q2xhc3M6Om1ldGhvZHNOYW1lZCk6CisgICAgICAgIChXZWJL
aXQ6OlByb3h5Q2xhc3M6OmZpZWxkTmFtZWQpOgorICAgICAgICAoV2ViS2l0OjpQcm94eVJ1bnRp
bWVNZXRob2Q6OmNyZWF0ZSk6CisgICAgICAgIChXZWJLaXQ6OlByb3h5UnVudGltZU1ldGhvZDo6
ZmluaXNoQ3JlYXRpb24pOgorICAgICAgICAoV2ViS2l0OjpQcm94eUluc3RhbmNlOjpnZXRNZXRo
b2QpOgorICAgICAgICAoV2ViS2l0OjpQcm94eUluc3RhbmNlOjptZXRob2RzTmFtZWQpOgorICAg
ICAgICAoV2ViS2l0OjpQcm94eUluc3RhbmNlOjpmaWVsZE5hbWVkKToKKwogMjAxMi0wNS0xMCAg
R3l1eW91bmcgS2ltICA8Z3l1eW91bmcua2ltQHNhbXN1bmcuY29tPgogCiAgICAgICAgIE1vdmUg
cmVzdW1lQW5pbWF0aW9ucyB0byB1c2UgSW50ZXJuYWxzIGludGVyZmFjZQpJbmRleDogU291cmNl
L1dlYktpdC9tYWMvUGx1Z2lucy9Ib3N0ZWQvUHJveHlJbnN0YW5jZS5oCj09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0t
IFNvdXJjZS9XZWJLaXQvbWFjL1BsdWdpbnMvSG9zdGVkL1Byb3h5SW5zdGFuY2UuaAkocmV2aXNp
b24gMTE2NjY3KQorKysgU291cmNlL1dlYktpdC9tYWMvUGx1Z2lucy9Ib3N0ZWQvUHJveHlJbnN0
YW5jZS5oCSh3b3JraW5nIGNvcHkpCkBAIC00Niw4ICs0Niw4IEBAIHB1YmxpYzoKICAgICB9CiAg
ICAgflByb3h5SW5zdGFuY2UoKTsKIAotICAgIEpTQzo6QmluZGluZ3M6Ok1ldGhvZExpc3QgbWV0
aG9kc05hbWVkKGNvbnN0IEpTQzo6SWRlbnRpZmllciYpOwotICAgIEpTQzo6QmluZGluZ3M6OkZp
ZWxkKiBmaWVsZE5hbWVkKGNvbnN0IEpTQzo6SWRlbnRpZmllciYpOworICAgIEpTQzo6QmluZGlu
Z3M6Ok1ldGhvZExpc3QgbWV0aG9kc05hbWVkKEpTQzo6UHJvcGVydHlOYW1lKTsKKyAgICBKU0M6
OkJpbmRpbmdzOjpGaWVsZCogZmllbGROYW1lZChKU0M6OlByb3BlcnR5TmFtZSk7CiAKICAgICBK
U0M6OkpTVmFsdWUgZmllbGRWYWx1ZShKU0M6OkV4ZWNTdGF0ZSosIGNvbnN0IEpTQzo6QmluZGlu
Z3M6OkZpZWxkKikgY29uc3Q7CiAgICAgdm9pZCBzZXRGaWVsZFZhbHVlKEpTQzo6RXhlY1N0YXRl
KiwgY29uc3QgSlNDOjpCaW5kaW5nczo6RmllbGQqLCBKU0M6OkpTVmFsdWUpIGNvbnN0OwpAQCAt
NjYsNyArNjYsNyBAQCBwcml2YXRlOgogCiAgICAgdmlydHVhbCBKU0M6OkJpbmRpbmdzOjpDbGFz
cyogZ2V0Q2xhc3MoKSBjb25zdDsKIAotICAgIHZpcnR1YWwgSlNDOjpKU1ZhbHVlIGdldE1ldGhv
ZChKU0M6OkV4ZWNTdGF0ZSogZXhlYywgY29uc3QgSlNDOjpJZGVudGlmaWVyJiBwcm9wZXJ0eU5h
bWUpOworICAgIHZpcnR1YWwgSlNDOjpKU1ZhbHVlIGdldE1ldGhvZChKU0M6OkV4ZWNTdGF0ZSos
IEpTQzo6UHJvcGVydHlOYW1lKTsKICAgICB2aXJ0dWFsIEpTQzo6SlNWYWx1ZSBpbnZva2VNZXRo
b2QoSlNDOjpFeGVjU3RhdGUqLCBKU0M6OlJ1bnRpbWVNZXRob2QqKTsKIAogICAgIHZpcnR1YWwg
Ym9vbCBzdXBwb3J0c0ludm9rZURlZmF1bHRNZXRob2QoKSBjb25zdDsKSW5kZXg6IFNvdXJjZS9X
ZWJLaXQvbWFjL1BsdWdpbnMvSG9zdGVkL1Byb3h5SW5zdGFuY2UubW0KPT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0g
U291cmNlL1dlYktpdC9tYWMvUGx1Z2lucy9Ib3N0ZWQvUHJveHlJbnN0YW5jZS5tbQkocmV2aXNp
b24gMTE2NjY3KQorKysgU291cmNlL1dlYktpdC9tYWMvUGx1Z2lucy9Ib3N0ZWQvUHJveHlJbnN0
YW5jZS5tbQkod29ya2luZyBjb3B5KQpAQCAtNTAsMTYgKzUwLDE2IEBAIG5hbWVzcGFjZSBXZWJL
aXQgewogCiBjbGFzcyBQcm94eUNsYXNzIDogcHVibGljIEpTQzo6QmluZGluZ3M6OkNsYXNzIHsK
IHByaXZhdGU6Ci0gICAgdmlydHVhbCBNZXRob2RMaXN0IG1ldGhvZHNOYW1lZChjb25zdCBJZGVu
dGlmaWVyJiwgSW5zdGFuY2UqKSBjb25zdDsKLSAgICB2aXJ0dWFsIEZpZWxkKiBmaWVsZE5hbWVk
KGNvbnN0IElkZW50aWZpZXImLCBJbnN0YW5jZSopIGNvbnN0OworICAgIHZpcnR1YWwgTWV0aG9k
TGlzdCBtZXRob2RzTmFtZWQoUHJvcGVydHlOYW1lLCBJbnN0YW5jZSopIGNvbnN0OworICAgIHZp
cnR1YWwgRmllbGQqIGZpZWxkTmFtZWQoUHJvcGVydHlOYW1lLCBJbnN0YW5jZSopIGNvbnN0Owog
fTsKIAotTWV0aG9kTGlzdCBQcm94eUNsYXNzOjptZXRob2RzTmFtZWQoY29uc3QgSWRlbnRpZmll
ciYgaWRlbnRpZmllciwgSW5zdGFuY2UqIGluc3RhbmNlKSBjb25zdAorTWV0aG9kTGlzdCBQcm94
eUNsYXNzOjptZXRob2RzTmFtZWQoUHJvcGVydHlOYW1lIGlkZW50aWZpZXIsIEluc3RhbmNlKiBp
bnN0YW5jZSkgY29uc3QKIHsKICAgICByZXR1cm4gc3RhdGljX2Nhc3Q8UHJveHlJbnN0YW5jZSo+
KGluc3RhbmNlKS0+bWV0aG9kc05hbWVkKGlkZW50aWZpZXIpOwogfQogCi1GaWVsZCogUHJveHlD
bGFzczo6ZmllbGROYW1lZChjb25zdCBJZGVudGlmaWVyJiBpZGVudGlmaWVyLCBJbnN0YW5jZSog
aW5zdGFuY2UpIGNvbnN0CitGaWVsZCogUHJveHlDbGFzczo6ZmllbGROYW1lZChQcm9wZXJ0eU5h
bWUgaWRlbnRpZmllciwgSW5zdGFuY2UqIGluc3RhbmNlKSBjb25zdAogewogICAgIHJldHVybiBz
dGF0aWNfY2FzdDxQcm94eUluc3RhbmNlKj4oaW5zdGFuY2UpLT5maWVsZE5hbWVkKGlkZW50aWZp
ZXIpOwogfQpAQCAtMTgxLDcgKzE4MSw3IEBAIGNsYXNzIFByb3h5UnVudGltZU1ldGhvZCA6IHB1
YmxpYyBSdW50aW0KIHB1YmxpYzoKICAgICB0eXBlZGVmIFJ1bnRpbWVNZXRob2QgQmFzZTsKIAot
ICAgIHN0YXRpYyBQcm94eVJ1bnRpbWVNZXRob2QqIGNyZWF0ZShFeGVjU3RhdGUqIGV4ZWMsIEpT
R2xvYmFsT2JqZWN0KiBnbG9iYWxPYmplY3QsIGNvbnN0IElkZW50aWZpZXImIG5hbWUsIEJpbmRp
bmdzOjpNZXRob2RMaXN0JiBsaXN0KQorICAgIHN0YXRpYyBQcm94eVJ1bnRpbWVNZXRob2QqIGNy
ZWF0ZShFeGVjU3RhdGUqIGV4ZWMsIEpTR2xvYmFsT2JqZWN0KiBnbG9iYWxPYmplY3QsIGNvbnN0
IFVTdHJpbmcmIG5hbWUsIEJpbmRpbmdzOjpNZXRob2RMaXN0JiBsaXN0KQogICAgIHsKICAgICAg
ICAgLy8gRklYTUU6IGRlcHJlY2F0ZWRHZXRET01TdHJ1Y3R1cmUgdXNlcyB0aGUgcHJvdG90eXBl
IG9mZiBvZiB0aGUgd3JvbmcgZ2xvYmFsIG9iamVjdAogICAgICAgICAvLyBleGVjLWdsb2JhbERh
dGEoKSBpcyBhbHNvIGxpa2VseSB3cm9uZy4KQEAgLTIwNCw3ICsyMDQsNyBAQCBwcml2YXRlOgog
ICAgIHsKICAgICB9CiAKLSAgICB2b2lkIGZpbmlzaENyZWF0aW9uKEpTR2xvYmFsRGF0YSYgZ2xv
YmFsRGF0YSwgY29uc3QgSWRlbnRpZmllciYgbmFtZSkKKyAgICB2b2lkIGZpbmlzaENyZWF0aW9u
KEpTR2xvYmFsRGF0YSYgZ2xvYmFsRGF0YSwgY29uc3QgVVN0cmluZyYgbmFtZSkKICAgICB7CiAg
ICAgICAgIEJhc2U6OmZpbmlzaENyZWF0aW9uKGdsb2JhbERhdGEsIG5hbWUpOwogICAgICAgICBB
U1NFUlQoaW5oZXJpdHMoJnNfaW5mbykpOwpAQCAtMjEzLDEwICsyMTMsMTAgQEAgcHJpdmF0ZToK
IAogY29uc3QgQ2xhc3NJbmZvIFByb3h5UnVudGltZU1ldGhvZDo6c19pbmZvID0geyAiUHJveHlS
dW50aW1lTWV0aG9kIiwgJlJ1bnRpbWVNZXRob2Q6OnNfaW5mbywgMCwgMCwgQ1JFQVRFX01FVEhP
RF9UQUJMRShQcm94eVJ1bnRpbWVNZXRob2QpIH07CiAKLUpTVmFsdWUgUHJveHlJbnN0YW5jZTo6
Z2V0TWV0aG9kKEpTQzo6RXhlY1N0YXRlKiBleGVjLCBjb25zdCBKU0M6OklkZW50aWZpZXImIHBy
b3BlcnR5TmFtZSkKK0pTVmFsdWUgUHJveHlJbnN0YW5jZTo6Z2V0TWV0aG9kKEpTQzo6RXhlY1N0
YXRlKiBleGVjLCBQcm9wZXJ0eU5hbWUgcHJvcGVydHlOYW1lKQogewogICAgIE1ldGhvZExpc3Qg
bWV0aG9kTGlzdCA9IGdldENsYXNzKCktPm1ldGhvZHNOYW1lZChwcm9wZXJ0eU5hbWUsIHRoaXMp
OwotICAgIHJldHVybiBQcm94eVJ1bnRpbWVNZXRob2Q6OmNyZWF0ZShleGVjLCBleGVjLT5sZXhp
Y2FsR2xvYmFsT2JqZWN0KCksIHByb3BlcnR5TmFtZSwgbWV0aG9kTGlzdCk7CisgICAgcmV0dXJu
IFByb3h5UnVudGltZU1ldGhvZDo6Y3JlYXRlKGV4ZWMsIGV4ZWMtPmxleGljYWxHbG9iYWxPYmpl
Y3QoKSwgcHJvcGVydHlOYW1lLmltcGwoKSwgbWV0aG9kTGlzdCk7CiB9CiAKIEpTVmFsdWUgUHJv
eHlJbnN0YW5jZTo6aW52b2tlTWV0aG9kKEV4ZWNTdGF0ZSogZXhlYywgSlNDOjpSdW50aW1lTWV0
aG9kKiBydW50aW1lTWV0aG9kKQpAQCAtMzQ2LDcgKzM0Niw3IEBAIHZvaWQgUHJveHlJbnN0YW5j
ZTo6Z2V0UHJvcGVydHlOYW1lcyhFeGUKICAgICB9CiB9CiAKLU1ldGhvZExpc3QgUHJveHlJbnN0
YW5jZTo6bWV0aG9kc05hbWVkKGNvbnN0IElkZW50aWZpZXImIGlkZW50aWZpZXIpCitNZXRob2RM
aXN0IFByb3h5SW5zdGFuY2U6Om1ldGhvZHNOYW1lZChQcm9wZXJ0eU5hbWUgaWRlbnRpZmllcikK
IHsKICAgICBpZiAoIW1faW5zdGFuY2VQcm94eSkKICAgICAgICAgcmV0dXJuIE1ldGhvZExpc3Qo
KTsKQEAgLTM2MCw3ICszNjAsNyBAQCBNZXRob2RMaXN0IFByb3h5SW5zdGFuY2U6Om1ldGhvZHNO
YW1lZChjCiAgICAgICAgIHJldHVybiBtZXRob2RMaXN0OwogICAgIH0KICAgICAKLSAgICB1aW50
NjRfdCBtZXRob2ROYW1lID0gcmVpbnRlcnByZXRfY2FzdDx1aW50NjRfdD4oX05QTl9HZXRTdHJp
bmdJZGVudGlmaWVyKGlkZW50aWZpZXIuYXNjaWkoKS5kYXRhKCkpKTsKKyAgICB1aW50NjRfdCBt
ZXRob2ROYW1lID0gcmVpbnRlcnByZXRfY2FzdDx1aW50NjRfdD4oX05QTl9HZXRTdHJpbmdJZGVu
dGlmaWVyKGlkZW50aWZpZXIudXN0cmluZygpLmFzY2lpKCkuZGF0YSgpKSk7CiAgICAgdWludDMy
X3QgcmVxdWVzdElEID0gbV9pbnN0YW5jZVByb3h5LT5uZXh0UmVxdWVzdElEKCk7CiAgICAgCiAg
ICAgaWYgKF9XS1BITlBPYmplY3RIYXNNZXRob2QobV9pbnN0YW5jZVByb3h5LT5ob3N0UHJveHko
KS0+cG9ydCgpLApAQCAtMzg2LDcgKzM4Niw3IEBAIE1ldGhvZExpc3QgUHJveHlJbnN0YW5jZTo6
bWV0aG9kc05hbWVkKGMKICAgICByZXR1cm4gbWV0aG9kTGlzdDsKIH0KIAotRmllbGQqIFByb3h5
SW5zdGFuY2U6OmZpZWxkTmFtZWQoY29uc3QgSWRlbnRpZmllciYgaWRlbnRpZmllcikKK0ZpZWxk
KiBQcm94eUluc3RhbmNlOjpmaWVsZE5hbWVkKFByb3BlcnR5TmFtZSBpZGVudGlmaWVyKQogewog
ICAgIGlmICghbV9pbnN0YW5jZVByb3h5KQogICAgICAgICByZXR1cm4gMDsKQEAgLTM5Niw3ICsz
OTYsNyBAQCBGaWVsZCogUHJveHlJbnN0YW5jZTo6ZmllbGROYW1lZChjb25zdCBJCiAgICAgaWYg
KGV4aXN0aW5nTWFwRW50cnkgIT0gbV9maWVsZHMuZW5kKCkpCiAgICAgICAgIHJldHVybiBleGlz
dGluZ01hcEVudHJ5LT5zZWNvbmQ7CiAgICAgCi0gICAgdWludDY0X3QgcHJvcGVydHlOYW1lID0g
cmVpbnRlcnByZXRfY2FzdDx1aW50NjRfdD4oX05QTl9HZXRTdHJpbmdJZGVudGlmaWVyKGlkZW50
aWZpZXIuYXNjaWkoKS5kYXRhKCkpKTsKKyAgICB1aW50NjRfdCBwcm9wZXJ0eU5hbWUgPSByZWlu
dGVycHJldF9jYXN0PHVpbnQ2NF90PihfTlBOX0dldFN0cmluZ0lkZW50aWZpZXIoaWRlbnRpZmll
ci51c3RyaW5nKCkuYXNjaWkoKS5kYXRhKCkpKTsKICAgICB1aW50MzJfdCByZXF1ZXN0SUQgPSBt
X2luc3RhbmNlUHJveHktPm5leHRSZXF1ZXN0SUQoKTsKICAgICAKICAgICBpZiAoX1dLUEhOUE9i
amVjdEhhc1Byb3BlcnR5KG1faW5zdGFuY2VQcm94eS0+aG9zdFByb3h5KCktPnBvcnQoKSwK
</data>

          </attachment>
          <attachment
              isobsolete="0"
              ispatch="1"
              isprivate="0"
          >
            <attachid>141505</attachid>
            <date>2012-05-11 15:15:08 -0700</date>
            <delta_ts>2012-05-11 15:15:08 -0700</delta_ts>
            <desc>and a few more!</desc>
            <filename>PropertyName.9.patch</filename>
            <type>text/plain</type>
            <size>573169</size>
            <attacher name="Gavin Barraclough">barraclough</attacher>
            
              <data encoding="base64">SW5kZXg6IFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9DaGFuZ2VMb2cKPT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291
cmNlL0phdmFTY3JpcHRDb3JlL0NoYW5nZUxvZwkocmV2aXNpb24gMTE2NzkyKQorKysgU291cmNl
L0phdmFTY3JpcHRDb3JlL0NoYW5nZUxvZwkod29ya2luZyBjb3B5KQpAQCAtMSwzICsxLDM4OCBA
QAorMjAxMi0wNS0xMSAgR2F2aW4gQmFycmFjbG91Z2ggIDxiYXJyYWNsb3VnaEBhcHBsZS5jb20+
CisKKyAgICAgICAgSW50cm9kdWNlIFByb3BlcnR5TmFtZSBjbGFzcworICAgICAgICBodHRwczov
L2J1Z3Mud2Via2l0Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9ODYyNDEKKworICAgICAgICBSZXZpZXdl
ZCBieSBOT0JPRFkgKE9PUFMhKS4KKworICAgICAgICBSZXBsYWNlICdjb25zdCBJZGVudGlmaWVy
JicgYXJndW1lbnRzIHRvIGZ1bmN0aW9ucyBhY2Nlc3Npbmcgb2JqZWN0IHByb3BlcnRpZXMgd2l0
aCBhIG5ldyAnUHJvcGVydHlOYW1lJyB0eXBlLgorICAgICAgICBUaGlzIGNoYW5nZSBwYXZlcyB0
aGUgd2F5IHRvIGFsbG93IGZvciBwcm9wZXJ0aWVzIGtleWVkIGJ5IHZhbHVlcyB0aGF0IGFyZSBu
b3QgSWRlbnRpZmllcnMuCisKKyAgICAgICAgVGhpcyBjaGFuZ2UgaXMgbGFyZ2VseSBhIG1lY2hh
bmljYWwgZmluZCAmIHJlcGxhY2UuCisgICAgICAgIEl0IGFsc28gY2hhbmdlcyBKU0Z1bmN0aW9u
J3MgY29uc3RydWN0b3IgdG8gdGFrZSBhIFVTdHJpbmcmIGluc3RlYWQgb2YgYW4gSWRlbnRpZmll
ciYKKyAgICAgICAgKHNpbmNlIGluIHNvbWUgY2FzZXMgd2UgY2FuIG5vIGxvbmdlciBndWFyYW50
ZWUgdGhhdCB3ZSdsbGwgaGF2ZSBhbiBJZGVudGlmaWVyKSwgYW5kCisgICAgICAgIHVuaWZpZXMg
SWRlbnRpZmllcidzIG1ldGhvZHMgdG8gb2J0YWluIGFycmF5IGluZGljZXMgb250byBQcm9wZXJ0
eU5hbWUuCisKKyAgICAgICAgVGhlIG5ldyBQcm9wZXJ0eU5hbWUgY2xhc3MgcmV0YWlucyB0aGUg
YWJpbGl0eSB0byBzdXBwb3J0IC5pbXBsKCkgYW5kIC51c3RyaW5nKCksIGJ1dAorICAgICAgICBp
biBhIGZ1dHVyZSBwYXRjaCB3ZSBtYXkgbmVlZCB0byByZXdvcmsgdGhpcywgc2luY2Ugbm90IGFs
bCBQcm9wZXJ0eU5hbWVzIHNob3VsZCBiZQorICAgICAgICBlcXVhbCBiYXNlZCBvbiB0aGVpciBz
dHJpbmcgcmVwcmVzZW50YXRpb24uCisKKyAgICAgICAgKiBBUEkvSlNDYWxsYmFja0Z1bmN0aW9u
LmNwcDoKKyAgICAgICAgKEpTQzo6SlNDYWxsYmFja0Z1bmN0aW9uOjpmaW5pc2hDcmVhdGlvbik6
CisgICAgICAgICogQVBJL0pTQ2FsbGJhY2tGdW5jdGlvbi5oOgorICAgICAgICAoSlNDYWxsYmFj
a0Z1bmN0aW9uKToKKyAgICAgICAgKEpTQzo6SlNDYWxsYmFja0Z1bmN0aW9uOjpjcmVhdGUpOgor
ICAgICAgICAqIEFQSS9KU0NhbGxiYWNrT2JqZWN0Lmg6CisgICAgICAgIChKU0NhbGxiYWNrT2Jq
ZWN0KToKKyAgICAgICAgKiBBUEkvSlNDYWxsYmFja09iamVjdEZ1bmN0aW9ucy5oOgorICAgICAg
ICAoSlNDOjo6OmdldE93blByb3BlcnR5U2xvdCk6CisgICAgICAgIChKU0M6Ojo6Z2V0T3duUHJv
cGVydHlEZXNjcmlwdG9yKToKKyAgICAgICAgKEpTQzo6OjpwdXQpOgorICAgICAgICAoSlNDOjo6
OmRlbGV0ZVByb3BlcnR5KToKKyAgICAgICAgKEpTQzo6OjpnZXRTdGF0aWNWYWx1ZSk6CisgICAg
ICAgIChKU0M6Ojo6c3RhdGljRnVuY3Rpb25HZXR0ZXIpOgorICAgICAgICAoSlNDOjo6OmNhbGxi
YWNrR2V0dGVyKToKKyAgICAgICAgKiBBUEkvSlNPYmplY3RSZWYuY3BwOgorICAgICAgICAoSlNP
YmplY3RNYWtlRnVuY3Rpb25XaXRoQ2FsbGJhY2spOgorICAgICAgICAqIEpTQ1R5cGVkQXJyYXlT
dHVicy5oOgorICAgICAgICAoSlNDKToKKyAgICAgICAgKiBKYXZhU2NyaXB0Q29yZS54Y29kZXBy
b2ovcHJvamVjdC5wYnhwcm9qOgorICAgICAgICAqIGRlYnVnZ2VyL0RlYnVnZ2VyQWN0aXZhdGlv
bi5jcHA6CisgICAgICAgIChKU0M6OkRlYnVnZ2VyQWN0aXZhdGlvbjo6Z2V0T3duUHJvcGVydHlT
bG90KToKKyAgICAgICAgKEpTQzo6RGVidWdnZXJBY3RpdmF0aW9uOjpwdXQpOgorICAgICAgICAo
SlNDOjpEZWJ1Z2dlckFjdGl2YXRpb246OnB1dERpcmVjdFZpcnR1YWwpOgorICAgICAgICAoSlND
OjpEZWJ1Z2dlckFjdGl2YXRpb246OmRlbGV0ZVByb3BlcnR5KToKKyAgICAgICAgKEpTQzo6RGVi
dWdnZXJBY3RpdmF0aW9uOjpnZXRPd25Qcm9wZXJ0eURlc2NyaXB0b3IpOgorICAgICAgICAoSlND
OjpEZWJ1Z2dlckFjdGl2YXRpb246OmRlZmluZU93blByb3BlcnR5KToKKyAgICAgICAgKiBkZWJ1
Z2dlci9EZWJ1Z2dlckFjdGl2YXRpb24uaDoKKyAgICAgICAgKERlYnVnZ2VyQWN0aXZhdGlvbik6
CisgICAgICAgICoganNjLmNwcDoKKyAgICAgICAgKEdsb2JhbE9iamVjdDo6YWRkRnVuY3Rpb24p
OgorICAgICAgICAoR2xvYmFsT2JqZWN0OjphZGRDb25zdHJ1Y3RhYmxlRnVuY3Rpb24pOgorICAg
ICAgICAqIHJ1bnRpbWUvQXJndW1lbnRzLmNwcDoKKyAgICAgICAgKEpTQzo6QXJndW1lbnRzOjpn
ZXRPd25Qcm9wZXJ0eVNsb3QpOgorICAgICAgICAoSlNDOjpBcmd1bWVudHM6OmdldE93blByb3Bl
cnR5RGVzY3JpcHRvcik6CisgICAgICAgIChKU0M6OkFyZ3VtZW50czo6cHV0KToKKyAgICAgICAg
KEpTQzo6QXJndW1lbnRzOjpkZWxldGVQcm9wZXJ0eSk6CisgICAgICAgIChKU0M6OkFyZ3VtZW50
czo6ZGVmaW5lT3duUHJvcGVydHkpOgorICAgICAgICAqIHJ1bnRpbWUvQXJndW1lbnRzLmg6Cisg
ICAgICAgIChBcmd1bWVudHMpOgorICAgICAgICAqIHJ1bnRpbWUvQXJyYXlDb25zdHJ1Y3Rvci5j
cHA6CisgICAgICAgIChKU0M6OkFycmF5Q29uc3RydWN0b3I6OmZpbmlzaENyZWF0aW9uKToKKyAg
ICAgICAgKEpTQzo6QXJyYXlDb25zdHJ1Y3Rvcjo6Z2V0T3duUHJvcGVydHlTbG90KToKKyAgICAg
ICAgKEpTQzo6QXJyYXlDb25zdHJ1Y3Rvcjo6Z2V0T3duUHJvcGVydHlEZXNjcmlwdG9yKToKKyAg
ICAgICAgKiBydW50aW1lL0FycmF5Q29uc3RydWN0b3IuaDoKKyAgICAgICAgKEFycmF5Q29uc3Ry
dWN0b3IpOgorICAgICAgICAqIHJ1bnRpbWUvQXJyYXlQcm90b3R5cGUuY3BwOgorICAgICAgICAo
SlNDOjpBcnJheVByb3RvdHlwZTo6Z2V0T3duUHJvcGVydHlTbG90KToKKyAgICAgICAgKEpTQzo6
QXJyYXlQcm90b3R5cGU6OmdldE93blByb3BlcnR5RGVzY3JpcHRvcik6CisgICAgICAgIChKU0M6
OnB1dFByb3BlcnR5KToKKyAgICAgICAgKiBydW50aW1lL0FycmF5UHJvdG90eXBlLmg6CisgICAg
ICAgIChBcnJheVByb3RvdHlwZSk6CisgICAgICAgICogcnVudGltZS9Cb29sZWFuQ29uc3RydWN0
b3IuY3BwOgorICAgICAgICAoSlNDOjpCb29sZWFuQ29uc3RydWN0b3I6OmZpbmlzaENyZWF0aW9u
KToKKyAgICAgICAgKiBydW50aW1lL0Jvb2xlYW5Qcm90b3R5cGUuY3BwOgorICAgICAgICAoSlND
OjpCb29sZWFuUHJvdG90eXBlOjpnZXRPd25Qcm9wZXJ0eVNsb3QpOgorICAgICAgICAoSlNDOjpC
b29sZWFuUHJvdG90eXBlOjpnZXRPd25Qcm9wZXJ0eURlc2NyaXB0b3IpOgorICAgICAgICAqIHJ1
bnRpbWUvQm9vbGVhblByb3RvdHlwZS5oOgorICAgICAgICAoQm9vbGVhblByb3RvdHlwZSk6Cisg
ICAgICAgICogcnVudGltZS9DbGFzc0luZm8uaDoKKyAgICAgICAgKE1ldGhvZFRhYmxlKToKKyAg
ICAgICAgKiBydW50aW1lL0RhdGVDb25zdHJ1Y3Rvci5jcHA6CisgICAgICAgIChKU0M6OkRhdGVD
b25zdHJ1Y3Rvcjo6ZmluaXNoQ3JlYXRpb24pOgorICAgICAgICAoSlNDOjpEYXRlQ29uc3RydWN0
b3I6OmdldE93blByb3BlcnR5U2xvdCk6CisgICAgICAgIChKU0M6OkRhdGVDb25zdHJ1Y3Rvcjo6
Z2V0T3duUHJvcGVydHlEZXNjcmlwdG9yKToKKyAgICAgICAgKiBydW50aW1lL0RhdGVDb25zdHJ1
Y3Rvci5oOgorICAgICAgICAoRGF0ZUNvbnN0cnVjdG9yKToKKyAgICAgICAgKiBydW50aW1lL0Rh
dGVQcm90b3R5cGUuY3BwOgorICAgICAgICAoSlNDOjpEYXRlUHJvdG90eXBlOjpnZXRPd25Qcm9w
ZXJ0eVNsb3QpOgorICAgICAgICAoSlNDOjpEYXRlUHJvdG90eXBlOjpnZXRPd25Qcm9wZXJ0eURl
c2NyaXB0b3IpOgorICAgICAgICAqIHJ1bnRpbWUvRGF0ZVByb3RvdHlwZS5oOgorICAgICAgICAo
RGF0ZVByb3RvdHlwZSk6CisgICAgICAgICogcnVudGltZS9FcnJvci5oOgorICAgICAgICAoSlND
OjpTdHJpY3RNb2RlVHlwZUVycm9yRnVuY3Rpb246OmNyZWF0ZSk6CisgICAgICAgICogcnVudGlt
ZS9FcnJvckNvbnN0cnVjdG9yLmNwcDoKKyAgICAgICAgKEpTQzo6RXJyb3JDb25zdHJ1Y3Rvcjo6
ZmluaXNoQ3JlYXRpb24pOgorICAgICAgICAqIHJ1bnRpbWUvRXJyb3JQcm90b3R5cGUuY3BwOgor
ICAgICAgICAoSlNDOjpFcnJvclByb3RvdHlwZTo6Z2V0T3duUHJvcGVydHlTbG90KToKKyAgICAg
ICAgKEpTQzo6RXJyb3JQcm90b3R5cGU6OmdldE93blByb3BlcnR5RGVzY3JpcHRvcik6CisgICAg
ICAgICogcnVudGltZS9FcnJvclByb3RvdHlwZS5oOgorICAgICAgICAoRXJyb3JQcm90b3R5cGUp
OgorICAgICAgICAqIHJ1bnRpbWUvRnVuY3Rpb25Db25zdHJ1Y3Rvci5jcHA6CisgICAgICAgIChK
U0M6OkZ1bmN0aW9uQ29uc3RydWN0b3I6OmZpbmlzaENyZWF0aW9uKToKKyAgICAgICAgKiBydW50
aW1lL0Z1bmN0aW9uUHJvdG90eXBlLmNwcDoKKyAgICAgICAgKEpTQzo6RnVuY3Rpb25Qcm90b3R5
cGU6OmZpbmlzaENyZWF0aW9uKToKKyAgICAgICAgKEpTQzo6RnVuY3Rpb25Qcm90b3R5cGU6OmFk
ZEZ1bmN0aW9uUHJvcGVydGllcyk6CisgICAgICAgIChKU0M6OmZ1bmN0aW9uUHJvdG9GdW5jQmlu
ZCk6CisgICAgICAgICogcnVudGltZS9GdW5jdGlvblByb3RvdHlwZS5oOgorICAgICAgICAoSlND
OjpGdW5jdGlvblByb3RvdHlwZTo6Y3JlYXRlKToKKyAgICAgICAgKEZ1bmN0aW9uUHJvdG90eXBl
KToKKyAgICAgICAgKiBydW50aW1lL0lkZW50aWZpZXIuY3BwOgorICAgICAgICAoSlNDKToKKyAg
ICAgICAgKiBydW50aW1lL0lkZW50aWZpZXIuaDoKKyAgICAgICAgKElkZW50aWZpZXIpOgorICAg
ICAgICAqIHJ1bnRpbWUvSW50ZXJuYWxGdW5jdGlvbi5jcHA6CisgICAgICAgIChKU0M6OkludGVy
bmFsRnVuY3Rpb246OmZpbmlzaENyZWF0aW9uKToKKyAgICAgICAgKiBydW50aW1lL0ludGVybmFs
RnVuY3Rpb24uaDoKKyAgICAgICAgKEludGVybmFsRnVuY3Rpb24pOgorICAgICAgICAqIHJ1bnRp
bWUvSlNBY3RpdmF0aW9uLmNwcDoKKyAgICAgICAgKEpTQzo6SlNBY3RpdmF0aW9uOjpzeW1ib2xU
YWJsZUdldCk6CisgICAgICAgIChKU0M6OkpTQWN0aXZhdGlvbjo6c3ltYm9sVGFibGVQdXQpOgor
ICAgICAgICAoSlNDOjpKU0FjdGl2YXRpb246OnN5bWJvbFRhYmxlUHV0V2l0aEF0dHJpYnV0ZXMp
OgorICAgICAgICAoSlNDOjpKU0FjdGl2YXRpb246OmdldE93blByb3BlcnR5U2xvdCk6CisgICAg
ICAgIChKU0M6OkpTQWN0aXZhdGlvbjo6cHV0KToKKyAgICAgICAgKEpTQzo6SlNBY3RpdmF0aW9u
OjpwdXREaXJlY3RWaXJ0dWFsKToKKyAgICAgICAgKEpTQzo6SlNBY3RpdmF0aW9uOjpkZWxldGVQ
cm9wZXJ0eSk6CisgICAgICAgIChKU0M6OkpTQWN0aXZhdGlvbjo6YXJndW1lbnRzR2V0dGVyKToK
KyAgICAgICAgKiBydW50aW1lL0pTQWN0aXZhdGlvbi5oOgorICAgICAgICAoSlNBY3RpdmF0aW9u
KToKKyAgICAgICAgKiBydW50aW1lL0pTQXJyYXkuY3BwOgorICAgICAgICAoSlNDOjpKU0FycmF5
OjpkZWZpbmVPd25Qcm9wZXJ0eSk6CisgICAgICAgIChKU0M6OkpTQXJyYXk6OmdldE93blByb3Bl
cnR5U2xvdCk6CisgICAgICAgIChKU0M6OkpTQXJyYXk6OmdldE93blByb3BlcnR5RGVzY3JpcHRv
cik6CisgICAgICAgIChKU0M6OkpTQXJyYXk6OnB1dCk6CisgICAgICAgIChKU0M6OkpTQXJyYXk6
OmRlbGV0ZVByb3BlcnR5KToKKyAgICAgICAgKiBydW50aW1lL0pTQXJyYXkuaDoKKyAgICAgICAg
KEpTQXJyYXkpOgorICAgICAgICAoSlNDKToKKyAgICAgICAgKiBydW50aW1lL0pTQm91bmRGdW5j
dGlvbi5jcHA6CisgICAgICAgIChKU0M6OkpTQm91bmRGdW5jdGlvbjo6Y3JlYXRlKToKKyAgICAg
ICAgKEpTQzo6SlNCb3VuZEZ1bmN0aW9uOjpmaW5pc2hDcmVhdGlvbik6CisgICAgICAgICogcnVu
dGltZS9KU0JvdW5kRnVuY3Rpb24uaDoKKyAgICAgICAgKEpTQm91bmRGdW5jdGlvbik6CisgICAg
ICAgICogcnVudGltZS9KU0NlbGwuY3BwOgorICAgICAgICAoSlNDOjpKU0NlbGw6OmdldE93blBy
b3BlcnR5U2xvdCk6CisgICAgICAgIChKU0M6OkpTQ2VsbDo6cHV0KToKKyAgICAgICAgKEpTQzo6
SlNDZWxsOjpkZWxldGVQcm9wZXJ0eSk6CisgICAgICAgIChKU0M6OkpTQ2VsbDo6cHV0RGlyZWN0
VmlydHVhbCk6CisgICAgICAgIChKU0M6OkpTQ2VsbDo6ZGVmaW5lT3duUHJvcGVydHkpOgorICAg
ICAgICAoSlNDOjpKU0NlbGw6OmdldE93blByb3BlcnR5RGVzY3JpcHRvcik6CisgICAgICAgICog
cnVudGltZS9KU0NlbGwuaDoKKyAgICAgICAgKEpTQ2VsbCk6CisgICAgICAgICogcnVudGltZS9K
U0Z1bmN0aW9uLmNwcDoKKyAgICAgICAgKEpTQzo6SlNGdW5jdGlvbjo6Y3JlYXRlKToKKyAgICAg
ICAgKEpTQzo6SlNGdW5jdGlvbjo6ZmluaXNoQ3JlYXRpb24pOgorICAgICAgICAoSlNDOjpKU0Z1
bmN0aW9uOjphcmd1bWVudHNHZXR0ZXIpOgorICAgICAgICAoSlNDOjpKU0Z1bmN0aW9uOjpjYWxs
ZXJHZXR0ZXIpOgorICAgICAgICAoSlNDOjpKU0Z1bmN0aW9uOjpsZW5ndGhHZXR0ZXIpOgorICAg
ICAgICAoSlNDOjpKU0Z1bmN0aW9uOjpnZXRPd25Qcm9wZXJ0eVNsb3QpOgorICAgICAgICAoSlND
OjpKU0Z1bmN0aW9uOjpnZXRPd25Qcm9wZXJ0eURlc2NyaXB0b3IpOgorICAgICAgICAoSlNDOjpK
U0Z1bmN0aW9uOjpwdXQpOgorICAgICAgICAoSlNDOjpKU0Z1bmN0aW9uOjpkZWxldGVQcm9wZXJ0
eSk6CisgICAgICAgIChKU0M6OkpTRnVuY3Rpb246OmRlZmluZU93blByb3BlcnR5KToKKyAgICAg
ICAgKEpTQzo6Z2V0Q2FsY3VsYXRlZERpc3BsYXlOYW1lKToKKyAgICAgICAgKiBydW50aW1lL0pT
RnVuY3Rpb24uaDoKKyAgICAgICAgKEpTRnVuY3Rpb24pOgorICAgICAgICAqIHJ1bnRpbWUvSlNH
bG9iYWxPYmplY3QuY3BwOgorICAgICAgICAoSlNDOjpKU0dsb2JhbE9iamVjdDo6cHV0KToKKyAg
ICAgICAgKEpTQzo6SlNHbG9iYWxPYmplY3Q6OnB1dERpcmVjdFZpcnR1YWwpOgorICAgICAgICAo
SlNDOjpKU0dsb2JhbE9iamVjdDo6ZGVmaW5lT3duUHJvcGVydHkpOgorICAgICAgICAoSlNDOjpK
U0dsb2JhbE9iamVjdDo6cmVzZXQpOgorICAgICAgICAoSlNDOjpKU0dsb2JhbE9iamVjdDo6Y3Jl
YXRlVGhyb3dUeXBlRXJyb3IpOgorICAgICAgICAoSlNDOjpKU0dsb2JhbE9iamVjdDo6Z2V0T3du
UHJvcGVydHlTbG90KToKKyAgICAgICAgKEpTQzo6SlNHbG9iYWxPYmplY3Q6OmdldE93blByb3Bl
cnR5RGVzY3JpcHRvcik6CisgICAgICAgICogcnVudGltZS9KU0dsb2JhbE9iamVjdC5oOgorICAg
ICAgICAoSlNHbG9iYWxPYmplY3QpOgorICAgICAgICAoSlNDOjpKU0dsb2JhbE9iamVjdDo6aGFz
T3duUHJvcGVydHlGb3JXcml0ZSk6CisgICAgICAgIChKU0M6OkpTR2xvYmFsT2JqZWN0OjpzeW1i
b2xUYWJsZUhhc1Byb3BlcnR5KToKKyAgICAgICAgKiBydW50aW1lL0pTTm90QW5PYmplY3QuY3Bw
OgorICAgICAgICAoSlNDOjpKU05vdEFuT2JqZWN0OjpnZXRPd25Qcm9wZXJ0eVNsb3QpOgorICAg
ICAgICAoSlNDOjpKU05vdEFuT2JqZWN0OjpnZXRPd25Qcm9wZXJ0eURlc2NyaXB0b3IpOgorICAg
ICAgICAoSlNDOjpKU05vdEFuT2JqZWN0OjpwdXQpOgorICAgICAgICAoSlNDOjpKU05vdEFuT2Jq
ZWN0OjpkZWxldGVQcm9wZXJ0eSk6CisgICAgICAgICogcnVudGltZS9KU05vdEFuT2JqZWN0Lmg6
CisgICAgICAgIChKU05vdEFuT2JqZWN0KToKKyAgICAgICAgKiBydW50aW1lL0pTT05PYmplY3Qu
Y3BwOgorICAgICAgICAoSlNDOjpKU09OT2JqZWN0OjpnZXRPd25Qcm9wZXJ0eVNsb3QpOgorICAg
ICAgICAoSlNDOjpKU09OT2JqZWN0OjpnZXRPd25Qcm9wZXJ0eURlc2NyaXB0b3IpOgorICAgICAg
ICAqIHJ1bnRpbWUvSlNPTk9iamVjdC5oOgorICAgICAgICAoSlNPTk9iamVjdCk6CisgICAgICAg
ICogcnVudGltZS9KU09iamVjdC5jcHA6CisgICAgICAgIChKU0M6OkpTT2JqZWN0OjpwdXQpOgor
ICAgICAgICAoSlNDOjpKU09iamVjdDo6cHV0RGlyZWN0VmlydHVhbCk6CisgICAgICAgIChKU0M6
OkpTT2JqZWN0OjpwdXREaXJlY3RBY2Nlc3Nvcik6CisgICAgICAgIChKU0M6OkpTT2JqZWN0Ojpo
YXNQcm9wZXJ0eSk6CisgICAgICAgIChKU0M6OkpTT2JqZWN0OjpkZWxldGVQcm9wZXJ0eSk6Cisg
ICAgICAgIChKU0M6OkpTT2JqZWN0OjpoYXNPd25Qcm9wZXJ0eSk6CisgICAgICAgIChKU0M6OmNh
bGxEZWZhdWx0VmFsdWVGdW5jdGlvbik6CisgICAgICAgIChKU0M6OkpTT2JqZWN0OjpmaW5kUHJv
cGVydHlIYXNoRW50cnkpOgorICAgICAgICAoSlNDOjpKU09iamVjdDo6Z2V0UHJvcGVydHlTcGVj
aWZpY1ZhbHVlKToKKyAgICAgICAgKEpTQzo6SlNPYmplY3Q6OnJlbW92ZURpcmVjdCk6CisgICAg
ICAgIChKU0M6OkpTT2JqZWN0OjpnZXRPd25Qcm9wZXJ0eURlc2NyaXB0b3IpOgorICAgICAgICAo
SlNDOjpKU09iamVjdDo6Z2V0UHJvcGVydHlEZXNjcmlwdG9yKToKKyAgICAgICAgKEpTQzo6cHV0
RGVzY3JpcHRvcik6CisgICAgICAgIChKU0M6OkpTT2JqZWN0OjpkZWZpbmVPd25Qcm9wZXJ0eSk6
CisgICAgICAgICogcnVudGltZS9KU09iamVjdC5oOgorICAgICAgICAoSlNPYmplY3QpOgorICAg
ICAgICAoSlNDOjpKU09iamVjdDo6Z2V0RGlyZWN0KToKKyAgICAgICAgKEpTQzo6SlNPYmplY3Q6
OmdldERpcmVjdExvY2F0aW9uKToKKyAgICAgICAgKEpTQzo6SlNPYmplY3Q6OmlubGluZUdldE93
blByb3BlcnR5U2xvdCk6CisgICAgICAgIChKU0M6OkpTT2JqZWN0OjpnZXRPd25Qcm9wZXJ0eVNs
b3QpOgorICAgICAgICAoSlNDOjpKU0NlbGw6OmZhc3RHZXRPd25Qcm9wZXJ0eVNsb3QpOgorICAg
ICAgICAoSlNDOjpKU09iamVjdDo6Z2V0UHJvcGVydHlTbG90KToKKyAgICAgICAgKEpTQzo6SlNP
YmplY3Q6OmdldCk6CisgICAgICAgIChKU0M6OkpTT2JqZWN0OjpwdXREaXJlY3RJbnRlcm5hbCk6
CisgICAgICAgIChKU0M6OkpTT2JqZWN0OjpwdXRPd25EYXRhUHJvcGVydHkpOgorICAgICAgICAo
SlNDOjpKU09iamVjdDo6cHV0RGlyZWN0KToKKyAgICAgICAgKEpTQzo6SlNPYmplY3Q6OnB1dERp
cmVjdFdpdGhvdXRUcmFuc2l0aW9uKToKKyAgICAgICAgKEpTQzo6SlNWYWx1ZTo6Z2V0KToKKyAg
ICAgICAgKEpTQzo6SlNWYWx1ZTo6cHV0KToKKyAgICAgICAgKiBydW50aW1lL0pTU3RhdGljU2Nv
cGVPYmplY3QuY3BwOgorICAgICAgICAoSlNDOjpKU1N0YXRpY1Njb3BlT2JqZWN0OjpwdXQpOgor
ICAgICAgICAoSlNDOjpKU1N0YXRpY1Njb3BlT2JqZWN0OjpwdXREaXJlY3RWaXJ0dWFsKToKKyAg
ICAgICAgKEpTQzo6SlNTdGF0aWNTY29wZU9iamVjdDo6Z2V0T3duUHJvcGVydHlTbG90KToKKyAg
ICAgICAgKiBydW50aW1lL0pTU3RhdGljU2NvcGVPYmplY3QuaDoKKyAgICAgICAgKEpTU3RhdGlj
U2NvcGVPYmplY3QpOgorICAgICAgICAqIHJ1bnRpbWUvSlNTdHJpbmcuY3BwOgorICAgICAgICAo
SlNDOjpKU1N0cmluZzo6Z2V0T3duUHJvcGVydHlTbG90KToKKyAgICAgICAgKEpTQzo6SlNTdHJp
bmc6OmdldFN0cmluZ1Byb3BlcnR5RGVzY3JpcHRvcik6CisgICAgICAgICogcnVudGltZS9KU1N0
cmluZy5oOgorICAgICAgICAoSlNTdHJpbmcpOgorICAgICAgICAoSlNDOjpKU1N0cmluZzo6Z2V0
U3RyaW5nUHJvcGVydHlTbG90KToKKyAgICAgICAgKiBydW50aW1lL0pTVmFsdWUuY3BwOgorICAg
ICAgICAoSlNDOjpKU1ZhbHVlOjpwdXRUb1ByaW1pdGl2ZSk6CisgICAgICAgICogcnVudGltZS9K
U1ZhbHVlLmg6CisgICAgICAgIChKU0MpOgorICAgICAgICAoSlNWYWx1ZSk6CisgICAgICAgICog
cnVudGltZS9KU1ZhcmlhYmxlT2JqZWN0LmNwcDoKKyAgICAgICAgKEpTQzo6SlNWYXJpYWJsZU9i
amVjdDo6ZGVsZXRlUHJvcGVydHkpOgorICAgICAgICAoSlNDOjpKU1ZhcmlhYmxlT2JqZWN0Ojpz
eW1ib2xUYWJsZUdldCk6CisgICAgICAgIChKU0M6OkpTVmFyaWFibGVPYmplY3Q6OnB1dERpcmVj
dFZpcnR1YWwpOgorICAgICAgICAqIHJ1bnRpbWUvSlNWYXJpYWJsZU9iamVjdC5oOgorICAgICAg
ICAoSlNWYXJpYWJsZU9iamVjdCk6CisgICAgICAgIChKU0M6OkpTVmFyaWFibGVPYmplY3Q6OnN5
bWJvbFRhYmxlR2V0KToKKyAgICAgICAgKEpTQzo6SlNWYXJpYWJsZU9iamVjdDo6c3ltYm9sVGFi
bGVQdXQpOgorICAgICAgICAoSlNDOjpKU1ZhcmlhYmxlT2JqZWN0OjpzeW1ib2xUYWJsZVB1dFdp
dGhBdHRyaWJ1dGVzKToKKyAgICAgICAgKiBydW50aW1lL0xvb2t1cC5jcHA6CisgICAgICAgIChK
U0M6OnNldFVwU3RhdGljRnVuY3Rpb25TbG90KToKKyAgICAgICAgKiBydW50aW1lL0xvb2t1cC5o
OgorICAgICAgICAoSlNDOjpIYXNoVGFibGU6OmVudHJ5KToKKyAgICAgICAgKEpTQyk6CisgICAg
ICAgIChKU0M6OmdldFN0YXRpY1Byb3BlcnR5U2xvdCk6CisgICAgICAgIChKU0M6OmdldFN0YXRp
Y1Byb3BlcnR5RGVzY3JpcHRvcik6CisgICAgICAgIChKU0M6OmdldFN0YXRpY0Z1bmN0aW9uU2xv
dCk6CisgICAgICAgIChKU0M6OmdldFN0YXRpY0Z1bmN0aW9uRGVzY3JpcHRvcik6CisgICAgICAg
IChKU0M6OmdldFN0YXRpY1ZhbHVlU2xvdCk6CisgICAgICAgIChKU0M6OmdldFN0YXRpY1ZhbHVl
RGVzY3JpcHRvcik6CisgICAgICAgIChKU0M6Omxvb2t1cFB1dCk6CisgICAgICAgICogcnVudGlt
ZS9NYXRoT2JqZWN0LmNwcDoKKyAgICAgICAgKEpTQzo6TWF0aE9iamVjdDo6Z2V0T3duUHJvcGVy
dHlTbG90KToKKyAgICAgICAgKEpTQzo6TWF0aE9iamVjdDo6Z2V0T3duUHJvcGVydHlEZXNjcmlw
dG9yKToKKyAgICAgICAgKiBydW50aW1lL01hdGhPYmplY3QuaDoKKyAgICAgICAgKE1hdGhPYmpl
Y3QpOgorICAgICAgICAqIHJ1bnRpbWUvTmF0aXZlRXJyb3JDb25zdHJ1Y3Rvci5oOgorICAgICAg
ICAoSlNDOjpOYXRpdmVFcnJvckNvbnN0cnVjdG9yOjpmaW5pc2hDcmVhdGlvbik6CisgICAgICAg
ICogcnVudGltZS9OdW1iZXJDb25zdHJ1Y3Rvci5jcHA6CisgICAgICAgIChKU0MpOgorICAgICAg
ICAoSlNDOjpOdW1iZXJDb25zdHJ1Y3Rvcjo6ZmluaXNoQ3JlYXRpb24pOgorICAgICAgICAoSlND
OjpOdW1iZXJDb25zdHJ1Y3Rvcjo6Z2V0T3duUHJvcGVydHlTbG90KToKKyAgICAgICAgKEpTQzo6
TnVtYmVyQ29uc3RydWN0b3I6OmdldE93blByb3BlcnR5RGVzY3JpcHRvcik6CisgICAgICAgIChK
U0M6Ok51bWJlckNvbnN0cnVjdG9yOjpwdXQpOgorICAgICAgICAoSlNDOjpudW1iZXJDb25zdHJ1
Y3Rvck5hTlZhbHVlKToKKyAgICAgICAgKEpTQzo6bnVtYmVyQ29uc3RydWN0b3JOZWdJbmZpbml0
eSk6CisgICAgICAgIChKU0M6Om51bWJlckNvbnN0cnVjdG9yUG9zSW5maW5pdHkpOgorICAgICAg
ICAoSlNDOjpudW1iZXJDb25zdHJ1Y3Rvck1heFZhbHVlKToKKyAgICAgICAgKEpTQzo6bnVtYmVy
Q29uc3RydWN0b3JNaW5WYWx1ZSk6CisgICAgICAgICogcnVudGltZS9OdW1iZXJDb25zdHJ1Y3Rv
ci5oOgorICAgICAgICAoTnVtYmVyQ29uc3RydWN0b3IpOgorICAgICAgICAqIHJ1bnRpbWUvTnVt
YmVyUHJvdG90eXBlLmNwcDoKKyAgICAgICAgKEpTQzo6TnVtYmVyUHJvdG90eXBlOjpnZXRPd25Q
cm9wZXJ0eVNsb3QpOgorICAgICAgICAoSlNDOjpOdW1iZXJQcm90b3R5cGU6OmdldE93blByb3Bl
cnR5RGVzY3JpcHRvcik6CisgICAgICAgICogcnVudGltZS9OdW1iZXJQcm90b3R5cGUuaDoKKyAg
ICAgICAgKE51bWJlclByb3RvdHlwZSk6CisgICAgICAgICogcnVudGltZS9PYmplY3RDb25zdHJ1
Y3Rvci5jcHA6CisgICAgICAgIChKU0M6Ok9iamVjdENvbnN0cnVjdG9yOjpmaW5pc2hDcmVhdGlv
bik6CisgICAgICAgIChKU0M6Ok9iamVjdENvbnN0cnVjdG9yOjpnZXRPd25Qcm9wZXJ0eVNsb3Qp
OgorICAgICAgICAoSlNDOjpPYmplY3RDb25zdHJ1Y3Rvcjo6Z2V0T3duUHJvcGVydHlEZXNjcmlw
dG9yKToKKyAgICAgICAgKiBydW50aW1lL09iamVjdENvbnN0cnVjdG9yLmg6CisgICAgICAgIChP
YmplY3RDb25zdHJ1Y3Rvcik6CisgICAgICAgICogcnVudGltZS9PYmplY3RQcm90b3R5cGUuY3Bw
OgorICAgICAgICAoSlNDOjpPYmplY3RQcm90b3R5cGU6OnB1dCk6CisgICAgICAgIChKU0M6Ok9i
amVjdFByb3RvdHlwZTo6ZGVmaW5lT3duUHJvcGVydHkpOgorICAgICAgICAoSlNDOjpPYmplY3RQ
cm90b3R5cGU6OmdldE93blByb3BlcnR5U2xvdCk6CisgICAgICAgIChKU0M6Ok9iamVjdFByb3Rv
dHlwZTo6Z2V0T3duUHJvcGVydHlEZXNjcmlwdG9yKToKKyAgICAgICAgKiBydW50aW1lL09iamVj
dFByb3RvdHlwZS5oOgorICAgICAgICAoT2JqZWN0UHJvdG90eXBlKToKKyAgICAgICAgKiBydW50
aW1lL1Byb3BlcnR5U2xvdC5oOgorICAgICAgICAoUHJvcGVydHlTbG90KToKKyAgICAgICAgKEpT
Qzo6UHJvcGVydHlTbG90OjpnZXRWYWx1ZSk6CisgICAgICAgICogcnVudGltZS9SZWdFeHBDb25z
dHJ1Y3Rvci5jcHA6CisgICAgICAgIChKU0MpOgorICAgICAgICAoSlNDOjpSZWdFeHBDb25zdHJ1
Y3Rvcjo6ZmluaXNoQ3JlYXRpb24pOgorICAgICAgICAoSlNDOjpSZWdFeHBDb25zdHJ1Y3Rvcjo6
Z2V0T3duUHJvcGVydHlTbG90KToKKyAgICAgICAgKEpTQzo6UmVnRXhwQ29uc3RydWN0b3I6Omdl
dE93blByb3BlcnR5RGVzY3JpcHRvcik6CisgICAgICAgIChKU0M6OnJlZ0V4cENvbnN0cnVjdG9y
RG9sbGFyMSk6CisgICAgICAgIChKU0M6OnJlZ0V4cENvbnN0cnVjdG9yRG9sbGFyMik6CisgICAg
ICAgIChKU0M6OnJlZ0V4cENvbnN0cnVjdG9yRG9sbGFyMyk6CisgICAgICAgIChKU0M6OnJlZ0V4
cENvbnN0cnVjdG9yRG9sbGFyNCk6CisgICAgICAgIChKU0M6OnJlZ0V4cENvbnN0cnVjdG9yRG9s
bGFyNSk6CisgICAgICAgIChKU0M6OnJlZ0V4cENvbnN0cnVjdG9yRG9sbGFyNik6CisgICAgICAg
IChKU0M6OnJlZ0V4cENvbnN0cnVjdG9yRG9sbGFyNyk6CisgICAgICAgIChKU0M6OnJlZ0V4cENv
bnN0cnVjdG9yRG9sbGFyOCk6CisgICAgICAgIChKU0M6OnJlZ0V4cENvbnN0cnVjdG9yRG9sbGFy
OSk6CisgICAgICAgIChKU0M6OnJlZ0V4cENvbnN0cnVjdG9ySW5wdXQpOgorICAgICAgICAoSlND
OjpyZWdFeHBDb25zdHJ1Y3Rvck11bHRpbGluZSk6CisgICAgICAgIChKU0M6OnJlZ0V4cENvbnN0
cnVjdG9yTGFzdE1hdGNoKToKKyAgICAgICAgKEpTQzo6cmVnRXhwQ29uc3RydWN0b3JMYXN0UGFy
ZW4pOgorICAgICAgICAoSlNDOjpyZWdFeHBDb25zdHJ1Y3RvckxlZnRDb250ZXh0KToKKyAgICAg
ICAgKEpTQzo6cmVnRXhwQ29uc3RydWN0b3JSaWdodENvbnRleHQpOgorICAgICAgICAoSlNDOjpS
ZWdFeHBDb25zdHJ1Y3Rvcjo6cHV0KToKKyAgICAgICAgKiBydW50aW1lL1JlZ0V4cENvbnN0cnVj
dG9yLmg6CisgICAgICAgIChSZWdFeHBDb25zdHJ1Y3Rvcik6CisgICAgICAgICogcnVudGltZS9S
ZWdFeHBNYXRjaGVzQXJyYXkuaDoKKyAgICAgICAgKEpTQzo6UmVnRXhwTWF0Y2hlc0FycmF5Ojpn
ZXRPd25Qcm9wZXJ0eVNsb3QpOgorICAgICAgICAoSlNDOjpSZWdFeHBNYXRjaGVzQXJyYXk6Omdl
dE93blByb3BlcnR5RGVzY3JpcHRvcik6CisgICAgICAgIChKU0M6OlJlZ0V4cE1hdGNoZXNBcnJh
eTo6cHV0KToKKyAgICAgICAgKEpTQzo6UmVnRXhwTWF0Y2hlc0FycmF5OjpkZWxldGVQcm9wZXJ0
eSk6CisgICAgICAgIChKU0M6OlJlZ0V4cE1hdGNoZXNBcnJheTo6ZGVmaW5lT3duUHJvcGVydHkp
OgorICAgICAgICAqIHJ1bnRpbWUvUmVnRXhwT2JqZWN0LmNwcDoKKyAgICAgICAgKEpTQyk6Cisg
ICAgICAgIChKU0M6OlJlZ0V4cE9iamVjdDo6Z2V0T3duUHJvcGVydHlTbG90KToKKyAgICAgICAg
KEpTQzo6UmVnRXhwT2JqZWN0OjpnZXRPd25Qcm9wZXJ0eURlc2NyaXB0b3IpOgorICAgICAgICAo
SlNDOjpSZWdFeHBPYmplY3Q6OmRlbGV0ZVByb3BlcnR5KToKKyAgICAgICAgKEpTQzo6UmVnRXhw
T2JqZWN0OjpkZWZpbmVPd25Qcm9wZXJ0eSk6CisgICAgICAgIChKU0M6OnJlZ0V4cE9iamVjdEds
b2JhbCk6CisgICAgICAgIChKU0M6OnJlZ0V4cE9iamVjdElnbm9yZUNhc2UpOgorICAgICAgICAo
SlNDOjpyZWdFeHBPYmplY3RNdWx0aWxpbmUpOgorICAgICAgICAoSlNDOjpyZWdFeHBPYmplY3RT
b3VyY2UpOgorICAgICAgICAoSlNDOjpSZWdFeHBPYmplY3Q6OnB1dCk6CisgICAgICAgICogcnVu
dGltZS9SZWdFeHBPYmplY3QuaDoKKyAgICAgICAgKFJlZ0V4cE9iamVjdCk6CisgICAgICAgICog
cnVudGltZS9SZWdFeHBQcm90b3R5cGUuY3BwOgorICAgICAgICAoSlNDOjpSZWdFeHBQcm90b3R5
cGU6OmdldE93blByb3BlcnR5U2xvdCk6CisgICAgICAgIChKU0M6OlJlZ0V4cFByb3RvdHlwZTo6
Z2V0T3duUHJvcGVydHlEZXNjcmlwdG9yKToKKyAgICAgICAgKiBydW50aW1lL1JlZ0V4cFByb3Rv
dHlwZS5oOgorICAgICAgICAoUmVnRXhwUHJvdG90eXBlKToKKyAgICAgICAgKiBydW50aW1lL1N0
cmljdEV2YWxBY3RpdmF0aW9uLmNwcDoKKyAgICAgICAgKEpTQzo6U3RyaWN0RXZhbEFjdGl2YXRp
b246OmRlbGV0ZVByb3BlcnR5KToKKyAgICAgICAgKiBydW50aW1lL1N0cmljdEV2YWxBY3RpdmF0
aW9uLmg6CisgICAgICAgIChTdHJpY3RFdmFsQWN0aXZhdGlvbik6CisgICAgICAgICogcnVudGlt
ZS9TdHJpbmdDb25zdHJ1Y3Rvci5jcHA6CisgICAgICAgIChKU0M6OlN0cmluZ0NvbnN0cnVjdG9y
OjpmaW5pc2hDcmVhdGlvbik6CisgICAgICAgIChKU0M6OlN0cmluZ0NvbnN0cnVjdG9yOjpnZXRP
d25Qcm9wZXJ0eVNsb3QpOgorICAgICAgICAoSlNDOjpTdHJpbmdDb25zdHJ1Y3Rvcjo6Z2V0T3du
UHJvcGVydHlEZXNjcmlwdG9yKToKKyAgICAgICAgKiBydW50aW1lL1N0cmluZ0NvbnN0cnVjdG9y
Lmg6CisgICAgICAgIChTdHJpbmdDb25zdHJ1Y3Rvcik6CisgICAgICAgICogcnVudGltZS9TdHJp
bmdPYmplY3QuY3BwOgorICAgICAgICAoSlNDOjpTdHJpbmdPYmplY3Q6OmdldE93blByb3BlcnR5
U2xvdCk6CisgICAgICAgIChKU0M6OlN0cmluZ09iamVjdDo6Z2V0T3duUHJvcGVydHlEZXNjcmlw
dG9yKToKKyAgICAgICAgKEpTQzo6U3RyaW5nT2JqZWN0OjpwdXQpOgorICAgICAgICAoSlNDOjpT
dHJpbmdPYmplY3Q6OmRlZmluZU93blByb3BlcnR5KToKKyAgICAgICAgKEpTQzo6U3RyaW5nT2Jq
ZWN0OjpkZWxldGVQcm9wZXJ0eSk6CisgICAgICAgICogcnVudGltZS9TdHJpbmdPYmplY3QuaDoK
KyAgICAgICAgKFN0cmluZ09iamVjdCk6CisgICAgICAgICogcnVudGltZS9TdHJpbmdQcm90b3R5
cGUuY3BwOgorICAgICAgICAoSlNDOjpTdHJpbmdQcm90b3R5cGU6OmdldE93blByb3BlcnR5U2xv
dCk6CisgICAgICAgIChKU0M6OlN0cmluZ1Byb3RvdHlwZTo6Z2V0T3duUHJvcGVydHlEZXNjcmlw
dG9yKToKKyAgICAgICAgKiBydW50aW1lL1N0cmluZ1Byb3RvdHlwZS5oOgorICAgICAgICAoU3Ry
aW5nUHJvdG90eXBlKToKKyAgICAgICAgKiBydW50aW1lL1N0cnVjdHVyZS5jcHA6CisgICAgICAg
IChKU0M6OlN0cnVjdHVyZTo6ZGVzcGVjaWZ5RGljdGlvbmFyeUZ1bmN0aW9uKToKKyAgICAgICAg
KEpTQzo6U3RydWN0dXJlOjphZGRQcm9wZXJ0eVRyYW5zaXRpb25Ub0V4aXN0aW5nU3RydWN0dXJl
KToKKyAgICAgICAgKEpTQzo6U3RydWN0dXJlOjphZGRQcm9wZXJ0eVRyYW5zaXRpb24pOgorICAg
ICAgICAoSlNDOjpTdHJ1Y3R1cmU6OnJlbW92ZVByb3BlcnR5VHJhbnNpdGlvbik6CisgICAgICAg
IChKU0M6OlN0cnVjdHVyZTo6ZGVzcGVjaWZ5RnVuY3Rpb25UcmFuc2l0aW9uKToKKyAgICAgICAg
KEpTQzo6U3RydWN0dXJlOjphdHRyaWJ1dGVDaGFuZ2VUcmFuc2l0aW9uKToKKyAgICAgICAgKEpT
Qzo6U3RydWN0dXJlOjphZGRQcm9wZXJ0eVdpdGhvdXRUcmFuc2l0aW9uKToKKyAgICAgICAgKEpT
Qzo6U3RydWN0dXJlOjpyZW1vdmVQcm9wZXJ0eVdpdGhvdXRUcmFuc2l0aW9uKToKKyAgICAgICAg
KEpTQzo6U3RydWN0dXJlOjpnZXQpOgorICAgICAgICAoSlNDOjpTdHJ1Y3R1cmU6OmRlc3BlY2lm
eUZ1bmN0aW9uKToKKyAgICAgICAgKEpTQzo6U3RydWN0dXJlOjpwdXRTcGVjaWZpY1ZhbHVlKToK
KyAgICAgICAgKEpTQzo6U3RydWN0dXJlOjpyZW1vdmUpOgorICAgICAgICAqIHJ1bnRpbWUvU3Ry
dWN0dXJlLmg6CisgICAgICAgIChTdHJ1Y3R1cmUpOgorICAgICAgICAoSlNDOjpTdHJ1Y3R1cmU6
OmdldCk6CisKIDIwMTItMDUtMTEgIFNhbSBXZWluaWcgIDxzYW1Ad2Via2l0Lm9yZz4KIAogICAg
ICAgICBGaXggY3Jhc2ggc2VlbiB3aGVuIHJ1bm5pbmcgd2l0aCBsaWJnbWFsbG9jCkluZGV4OiBT
b3VyY2UvSmF2YVNjcmlwdENvcmUvSlNDVHlwZWRBcnJheVN0dWJzLmgKPT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0g
U291cmNlL0phdmFTY3JpcHRDb3JlL0pTQ1R5cGVkQXJyYXlTdHVicy5oCShyZXZpc2lvbiAxMTY2
NjcpCisrKyBTb3VyY2UvSmF2YVNjcmlwdENvcmUvSlNDVHlwZWRBcnJheVN0dWJzLmgJKHdvcmtp
bmcgY29weSkKQEAgLTUyLDEwICs1MiwxMCBAQCBwdWJsaWM6IFwKICAgICAgICAgcmV0dXJuIHB0
cjsgXAogICAgIH1cCiBcCi0gICAgc3RhdGljIGJvb2wgZ2V0T3duUHJvcGVydHlTbG90KEpTQzo6
SlNDZWxsKiwgSlNDOjpFeGVjU3RhdGUqLCBjb25zdCBKU0M6OklkZW50aWZpZXImIHByb3BlcnR5
TmFtZSwgSlNDOjpQcm9wZXJ0eVNsb3QmKTtcCi0gICAgc3RhdGljIGJvb2wgZ2V0T3duUHJvcGVy
dHlEZXNjcmlwdG9yKEpTQzo6SlNPYmplY3QqLCBKU0M6OkV4ZWNTdGF0ZSosIGNvbnN0IEpTQzo6
SWRlbnRpZmllciYgcHJvcGVydHlOYW1lLCBKU0M6OlByb3BlcnR5RGVzY3JpcHRvciYpO1wKKyAg
ICBzdGF0aWMgYm9vbCBnZXRPd25Qcm9wZXJ0eVNsb3QoSlNDOjpKU0NlbGwqLCBKU0M6OkV4ZWNT
dGF0ZSosIEpTQzo6UHJvcGVydHlOYW1lIHByb3BlcnR5TmFtZSwgSlNDOjpQcm9wZXJ0eVNsb3Qm
KTtcCisgICAgc3RhdGljIGJvb2wgZ2V0T3duUHJvcGVydHlEZXNjcmlwdG9yKEpTQzo6SlNPYmpl
Y3QqLCBKU0M6OkV4ZWNTdGF0ZSosIEpTQzo6UHJvcGVydHlOYW1lIHByb3BlcnR5TmFtZSwgSlND
OjpQcm9wZXJ0eURlc2NyaXB0b3ImKTtcCiAgICAgc3RhdGljIGJvb2wgZ2V0T3duUHJvcGVydHlT
bG90QnlJbmRleChKU0M6OkpTQ2VsbCosIEpTQzo6RXhlY1N0YXRlKiwgdW5zaWduZWQgcHJvcGVy
dHlOYW1lLCBKU0M6OlByb3BlcnR5U2xvdCYpO1wKLSAgICBzdGF0aWMgdm9pZCBwdXQoSlNDOjpK
U0NlbGwqLCBKU0M6OkV4ZWNTdGF0ZSosIGNvbnN0IEpTQzo6SWRlbnRpZmllciYgcHJvcGVydHlO
YW1lLCBKU0M6OkpTVmFsdWUsIEpTQzo6UHV0UHJvcGVydHlTbG90Jik7XAorICAgIHN0YXRpYyB2
b2lkIHB1dChKU0M6OkpTQ2VsbCosIEpTQzo6RXhlY1N0YXRlKiwgSlNDOjpQcm9wZXJ0eU5hbWUg
cHJvcGVydHlOYW1lLCBKU0M6OkpTVmFsdWUsIEpTQzo6UHV0UHJvcGVydHlTbG90Jik7XAogICAg
IHN0YXRpYyB2b2lkIHB1dEJ5SW5kZXgoSlNDOjpKU0NlbGwqLCBKU0M6OkV4ZWNTdGF0ZSosIHVu
c2lnbmVkIHByb3BlcnR5TmFtZSwgSlNDOjpKU1ZhbHVlLCBib29sKTtcCiAgICAgc3RhdGljIGNv
bnN0IEpTQzo6Q2xhc3NJbmZvIHNfaW5mbztcCiBcCkBAIC05OCwyNiArOTgsMjYgQEAgdm9pZCBK
UyMjbmFtZSMjQXJyYXk6OmZpbmlzaENyZWF0aW9uKEpTRwogICAgIEFTU0VSVChpbmhlcml0cygm
c19pbmZvKSk7XAogfVwKIFwKLWJvb2wgSlMjI25hbWUjI0FycmF5OjpnZXRPd25Qcm9wZXJ0eVNs
b3QoSlNDZWxsKiBjZWxsLCBFeGVjU3RhdGUqIGV4ZWMsIGNvbnN0IElkZW50aWZpZXImIHByb3Bl
cnR5TmFtZSwgUHJvcGVydHlTbG90JiBzbG90KVwKK2Jvb2wgSlMjI25hbWUjI0FycmF5OjpnZXRP
d25Qcm9wZXJ0eVNsb3QoSlNDZWxsKiBjZWxsLCBFeGVjU3RhdGUqIGV4ZWMsIFByb3BlcnR5TmFt
ZSBwcm9wZXJ0eU5hbWUsIFByb3BlcnR5U2xvdCYgc2xvdClcCiB7XAogICAgIEpTIyNuYW1lIyNB
cnJheSogdGhpc09iamVjdCA9IGpzQ2FzdDxKUyMjbmFtZSMjQXJyYXkqPihjZWxsKTtcCiAgICAg
QVNTRVJUX0dDX09CSkVDVF9JTkhFUklUUyh0aGlzT2JqZWN0LCAmc19pbmZvKTtcCi0gICAgYm9v
bCBvaztcCi0gICAgdW5zaWduZWQgaW5kZXggPSBwcm9wZXJ0eU5hbWUudG9VSW50MzIob2spO1wK
LSAgICBpZiAob2sgJiYgaW5kZXggPCB0aGlzT2JqZWN0LT5tX3N0b3JhZ2VMZW5ndGgpIHtcCisg
ICAgdW5zaWduZWQgaW5kZXggPSBwcm9wZXJ0eU5hbWUuYXNJbmRleCgpO1wKKyAgICBpZiAoaW5k
ZXggPCB0aGlzT2JqZWN0LT5tX3N0b3JhZ2VMZW5ndGgpIHtcCisgICAgICAgIEFTU0VSVChpbmRl
eCAhPSBQcm9wZXJ0eU5hbWU6Ok5vdEFuSW5kZXgpO1wKICAgICAgICAgc2xvdC5zZXRWYWx1ZSh0
aGlzT2JqZWN0LT5nZXRCeUluZGV4KGV4ZWMsIGluZGV4KSk7XAogICAgICAgICByZXR1cm4gdHJ1
ZTtcCiAgICAgfVwKICAgICByZXR1cm4gQmFzZTo6Z2V0T3duUHJvcGVydHlTbG90KGNlbGwsIGV4
ZWMsIHByb3BlcnR5TmFtZSwgc2xvdCk7XAogfVwKIFwKLWJvb2wgSlMjI25hbWUjI0FycmF5Ojpn
ZXRPd25Qcm9wZXJ0eURlc2NyaXB0b3IoSlNPYmplY3QqIG9iamVjdCwgRXhlY1N0YXRlKiBleGVj
LCBjb25zdCBJZGVudGlmaWVyJiBwcm9wZXJ0eU5hbWUsIFByb3BlcnR5RGVzY3JpcHRvciYgZGVz
Y3JpcHRvcilcCitib29sIEpTIyNuYW1lIyNBcnJheTo6Z2V0T3duUHJvcGVydHlEZXNjcmlwdG9y
KEpTT2JqZWN0KiBvYmplY3QsIEV4ZWNTdGF0ZSogZXhlYywgUHJvcGVydHlOYW1lIHByb3BlcnR5
TmFtZSwgUHJvcGVydHlEZXNjcmlwdG9yJiBkZXNjcmlwdG9yKVwKIHtcCiAgICAgSlMjI25hbWUj
I0FycmF5KiB0aGlzT2JqZWN0ID0ganNDYXN0PEpTIyNuYW1lIyNBcnJheSo+KG9iamVjdCk7XAog
ICAgIEFTU0VSVF9HQ19PQkpFQ1RfSU5IRVJJVFModGhpc09iamVjdCwgJnNfaW5mbyk7XAotICAg
IGJvb2wgb2s7XAotICAgIHVuc2lnbmVkIGluZGV4ID0gcHJvcGVydHlOYW1lLnRvVUludDMyKG9r
KTtcCi0gICAgaWYgKG9rICYmIGluZGV4IDwgdGhpc09iamVjdC0+bV9zdG9yYWdlTGVuZ3RoKSB7
XAorICAgIHVuc2lnbmVkIGluZGV4ID0gcHJvcGVydHlOYW1lLmFzSW5kZXgoKTtcCisgICAgaWYg
KGluZGV4IDwgdGhpc09iamVjdC0+bV9zdG9yYWdlTGVuZ3RoKSB7XAorICAgICAgICBBU1NFUlQo
aW5kZXggIT0gUHJvcGVydHlOYW1lOjpOb3RBbkluZGV4KTtcCiAgICAgICAgIGRlc2NyaXB0b3Iu
c2V0RGVzY3JpcHRvcih0aGlzT2JqZWN0LT5nZXRCeUluZGV4KGV4ZWMsIGluZGV4KSwgRG9udERl
bGV0ZSk7XAogICAgICAgICByZXR1cm4gdHJ1ZTtcCiAgICAgfVwKQEAgLTEzNSwxMyArMTM1LDEy
IEBAIGJvb2wgSlMjI25hbWUjI0FycmF5OjpnZXRPd25Qcm9wZXJ0eVNsb3QKICAgICByZXR1cm4g
dGhpc09iamVjdC0+bWV0aG9kVGFibGUoKS0+Z2V0T3duUHJvcGVydHlTbG90KHRoaXNPYmplY3Qs
IGV4ZWMsIElkZW50aWZpZXI6OmZyb20oZXhlYywgcHJvcGVydHlOYW1lKSwgc2xvdCk7XAogfVwK
IFwKLXZvaWQgSlMjI25hbWUjI0FycmF5OjpwdXQoSlNDZWxsKiBjZWxsLCBFeGVjU3RhdGUqIGV4
ZWMsIGNvbnN0IElkZW50aWZpZXImIHByb3BlcnR5TmFtZSwgSlNWYWx1ZSB2YWx1ZSwgUHV0UHJv
cGVydHlTbG90JiBzbG90KVwKK3ZvaWQgSlMjI25hbWUjI0FycmF5OjpwdXQoSlNDZWxsKiBjZWxs
LCBFeGVjU3RhdGUqIGV4ZWMsIFByb3BlcnR5TmFtZSBwcm9wZXJ0eU5hbWUsIEpTVmFsdWUgdmFs
dWUsIFB1dFByb3BlcnR5U2xvdCYgc2xvdClcCiB7XAogICAgIEpTIyNuYW1lIyNBcnJheSogdGhp
c09iamVjdCA9IGpzQ2FzdDxKUyMjbmFtZSMjQXJyYXkqPihjZWxsKTtcCiAgICAgQVNTRVJUX0dD
X09CSkVDVF9JTkhFUklUUyh0aGlzT2JqZWN0LCAmc19pbmZvKTtcCi0gICAgYm9vbCBvaztcCi0g
ICAgdW5zaWduZWQgaW5kZXggPSBwcm9wZXJ0eU5hbWUudG9VSW50MzIob2spO1wKLSAgICBpZiAo
b2spIHtcCisgICAgdW5zaWduZWQgaW5kZXggPSBwcm9wZXJ0eU5hbWUuYXNJbmRleCgpO1wKKyAg
ICBpZiAoaW5kZXggIT0gUHJvcGVydHlOYW1lOjpOb3RBbkluZGV4KSB7XAogICAgICAgICB0aGlz
T2JqZWN0LT5pbmRleFNldHRlcihleGVjLCBpbmRleCwgdmFsdWUpO1wKICAgICAgICAgcmV0dXJu
O1wKICAgICB9XApJbmRleDogU291cmNlL0phdmFTY3JpcHRDb3JlL2pzYy5jcHAKPT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PQotLS0gU291cmNlL0phdmFTY3JpcHRDb3JlL2pzYy5jcHAJKHJldmlzaW9uIDExNjY2NykKKysr
IFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9qc2MuY3BwCSh3b3JraW5nIGNvcHkpCkBAIC0yMTgsMTMg
KzIxOCwxMyBAQCBwcm90ZWN0ZWQ6CiAgICAgdm9pZCBhZGRGdW5jdGlvbihKU0dsb2JhbERhdGEm
IGdsb2JhbERhdGEsIGNvbnN0IGNoYXIqIG5hbWUsIE5hdGl2ZUZ1bmN0aW9uIGZ1bmN0aW9uLCB1
bnNpZ25lZCBhcmd1bWVudHMpCiAgICAgewogICAgICAgICBJZGVudGlmaWVyIGlkZW50aWZpZXIo
Z2xvYmFsRXhlYygpLCBuYW1lKTsKLSAgICAgICAgcHV0RGlyZWN0KGdsb2JhbERhdGEsIGlkZW50
aWZpZXIsIEpTRnVuY3Rpb246OmNyZWF0ZShnbG9iYWxFeGVjKCksIHRoaXMsIGFyZ3VtZW50cywg
aWRlbnRpZmllciwgZnVuY3Rpb24pKTsKKyAgICAgICAgcHV0RGlyZWN0KGdsb2JhbERhdGEsIGlk
ZW50aWZpZXIsIEpTRnVuY3Rpb246OmNyZWF0ZShnbG9iYWxFeGVjKCksIHRoaXMsIGFyZ3VtZW50
cywgaWRlbnRpZmllci51c3RyaW5nKCksIGZ1bmN0aW9uKSk7CiAgICAgfQogICAgIAogICAgIHZv
aWQgYWRkQ29uc3RydWN0YWJsZUZ1bmN0aW9uKEpTR2xvYmFsRGF0YSYgZ2xvYmFsRGF0YSwgY29u
c3QgY2hhciogbmFtZSwgTmF0aXZlRnVuY3Rpb24gZnVuY3Rpb24sIHVuc2lnbmVkIGFyZ3VtZW50
cykKICAgICB7CiAgICAgICAgIElkZW50aWZpZXIgaWRlbnRpZmllcihnbG9iYWxFeGVjKCksIG5h
bWUpOwotICAgICAgICBwdXREaXJlY3QoZ2xvYmFsRGF0YSwgaWRlbnRpZmllciwgSlNGdW5jdGlv
bjo6Y3JlYXRlKGdsb2JhbEV4ZWMoKSwgdGhpcywgYXJndW1lbnRzLCBpZGVudGlmaWVyLCBmdW5j
dGlvbiwgTm9JbnRyaW5zaWMsIGZ1bmN0aW9uKSk7CisgICAgICAgIHB1dERpcmVjdChnbG9iYWxE
YXRhLCBpZGVudGlmaWVyLCBKU0Z1bmN0aW9uOjpjcmVhdGUoZ2xvYmFsRXhlYygpLCB0aGlzLCBh
cmd1bWVudHMsIGlkZW50aWZpZXIudXN0cmluZygpLCBmdW5jdGlvbiwgTm9JbnRyaW5zaWMsIGZ1
bmN0aW9uKSk7CiAgICAgfQogfTsKIENPTVBJTEVfQVNTRVJUKCFJc0ludGVnZXI8R2xvYmFsT2Jq
ZWN0Pjo6dmFsdWUsIFdURl9Jc0ludGVnZXJfR2xvYmFsT2JqZWN0X2ZhbHNlKTsKSW5kZXg6IFNv
dXJjZS9KYXZhU2NyaXB0Q29yZS9BUEkvSlNDYWxsYmFja0Z1bmN0aW9uLmNwcAo9PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
Ci0tLSBTb3VyY2UvSmF2YVNjcmlwdENvcmUvQVBJL0pTQ2FsbGJhY2tGdW5jdGlvbi5jcHAJKHJl
dmlzaW9uIDExNjY2NykKKysrIFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9BUEkvSlNDYWxsYmFja0Z1
bmN0aW9uLmNwcAkod29ya2luZyBjb3B5KQpAQCAtNDksNyArNDksNyBAQCBKU0NhbGxiYWNrRnVu
Y3Rpb246OkpTQ2FsbGJhY2tGdW5jdGlvbihKCiB7CiB9CiAKLXZvaWQgSlNDYWxsYmFja0Z1bmN0
aW9uOjpmaW5pc2hDcmVhdGlvbihKU0dsb2JhbERhdGEmIGdsb2JhbERhdGEsIGNvbnN0IElkZW50
aWZpZXImIG5hbWUpCit2b2lkIEpTQ2FsbGJhY2tGdW5jdGlvbjo6ZmluaXNoQ3JlYXRpb24oSlNH
bG9iYWxEYXRhJiBnbG9iYWxEYXRhLCBjb25zdCBVU3RyaW5nJiBuYW1lKQogewogICAgIEJhc2U6
OmZpbmlzaENyZWF0aW9uKGdsb2JhbERhdGEsIG5hbWUpOwogICAgIEFTU0VSVChpbmhlcml0cygm
c19pbmZvKSk7CkluZGV4OiBTb3VyY2UvSmF2YVNjcmlwdENvcmUvQVBJL0pTQ2FsbGJhY2tGdW5j
dGlvbi5oCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9BUEkvSlNDYWxsYmFj
a0Z1bmN0aW9uLmgJKHJldmlzaW9uIDExNjY2NykKKysrIFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9B
UEkvSlNDYWxsYmFja0Z1bmN0aW9uLmgJKHdvcmtpbmcgY29weSkKQEAgLTM0LDEyICszNCwxMiBA
QCBuYW1lc3BhY2UgSlNDIHsKIGNsYXNzIEpTQ2FsbGJhY2tGdW5jdGlvbiA6IHB1YmxpYyBJbnRl
cm5hbEZ1bmN0aW9uIHsKIHByb3RlY3RlZDoKICAgICBKU0NhbGxiYWNrRnVuY3Rpb24oSlNHbG9i
YWxPYmplY3QqLCBKU09iamVjdENhbGxBc0Z1bmN0aW9uQ2FsbGJhY2spOwotICAgIHZvaWQgZmlu
aXNoQ3JlYXRpb24oSlNHbG9iYWxEYXRhJiwgY29uc3QgSWRlbnRpZmllciYgbmFtZSk7CisgICAg
dm9pZCBmaW5pc2hDcmVhdGlvbihKU0dsb2JhbERhdGEmLCBjb25zdCBVU3RyaW5nJiBuYW1lKTsK
IAogcHVibGljOgogICAgIHR5cGVkZWYgSW50ZXJuYWxGdW5jdGlvbiBCYXNlOwogCi0gICAgc3Rh
dGljIEpTQ2FsbGJhY2tGdW5jdGlvbiogY3JlYXRlKEV4ZWNTdGF0ZSogZXhlYywgSlNHbG9iYWxP
YmplY3QqIGdsb2JhbE9iamVjdCwgSlNPYmplY3RDYWxsQXNGdW5jdGlvbkNhbGxiYWNrIGNhbGxi
YWNrLCBjb25zdCBJZGVudGlmaWVyJiBuYW1lKQorICAgIHN0YXRpYyBKU0NhbGxiYWNrRnVuY3Rp
b24qIGNyZWF0ZShFeGVjU3RhdGUqIGV4ZWMsIEpTR2xvYmFsT2JqZWN0KiBnbG9iYWxPYmplY3Qs
IEpTT2JqZWN0Q2FsbEFzRnVuY3Rpb25DYWxsYmFjayBjYWxsYmFjaywgY29uc3QgVVN0cmluZyYg
bmFtZSkKICAgICB7CiAgICAgICAgIEpTQ2FsbGJhY2tGdW5jdGlvbiogZnVuY3Rpb24gPSBuZXcg
KE5vdE51bGwsIGFsbG9jYXRlQ2VsbDxKU0NhbGxiYWNrRnVuY3Rpb24+KCpleGVjLT5oZWFwKCkp
KSBKU0NhbGxiYWNrRnVuY3Rpb24oZ2xvYmFsT2JqZWN0LCBjYWxsYmFjayk7CiAgICAgICAgIGZ1
bmN0aW9uLT5maW5pc2hDcmVhdGlvbihleGVjLT5nbG9iYWxEYXRhKCksIG5hbWUpOwpJbmRleDog
U291cmNlL0phdmFTY3JpcHRDb3JlL0FQSS9KU0NhbGxiYWNrT2JqZWN0LmgKPT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQot
LS0gU291cmNlL0phdmFTY3JpcHRDb3JlL0FQSS9KU0NhbGxiYWNrT2JqZWN0LmgJKHJldmlzaW9u
IDExNjY2NykKKysrIFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9BUEkvSlNDYWxsYmFja09iamVjdC5o
CSh3b3JraW5nIGNvcHkpCkBAIC0xNzcsMTIgKzE3NywxMiBAQCBwcml2YXRlOgogCiAgICAgc3Rh
dGljIEpTVmFsdWUgZGVmYXVsdFZhbHVlKGNvbnN0IEpTT2JqZWN0KiwgRXhlY1N0YXRlKiwgUHJl
ZmVycmVkUHJpbWl0aXZlVHlwZSk7CiAKLSAgICBzdGF0aWMgYm9vbCBnZXRPd25Qcm9wZXJ0eVNs
b3QoSlNDZWxsKiwgRXhlY1N0YXRlKiwgY29uc3QgSWRlbnRpZmllciYsIFByb3BlcnR5U2xvdCYp
OwotICAgIHN0YXRpYyBib29sIGdldE93blByb3BlcnR5RGVzY3JpcHRvcihKU09iamVjdCosIEV4
ZWNTdGF0ZSosIGNvbnN0IElkZW50aWZpZXImLCBQcm9wZXJ0eURlc2NyaXB0b3ImKTsKKyAgICBz
dGF0aWMgYm9vbCBnZXRPd25Qcm9wZXJ0eVNsb3QoSlNDZWxsKiwgRXhlY1N0YXRlKiwgUHJvcGVy
dHlOYW1lLCBQcm9wZXJ0eVNsb3QmKTsKKyAgICBzdGF0aWMgYm9vbCBnZXRPd25Qcm9wZXJ0eURl
c2NyaXB0b3IoSlNPYmplY3QqLCBFeGVjU3RhdGUqLCBQcm9wZXJ0eU5hbWUsIFByb3BlcnR5RGVz
Y3JpcHRvciYpOwogICAgIAotICAgIHN0YXRpYyB2b2lkIHB1dChKU0NlbGwqLCBFeGVjU3RhdGUq
LCBjb25zdCBJZGVudGlmaWVyJiwgSlNWYWx1ZSwgUHV0UHJvcGVydHlTbG90Jik7CisgICAgc3Rh
dGljIHZvaWQgcHV0KEpTQ2VsbCosIEV4ZWNTdGF0ZSosIFByb3BlcnR5TmFtZSwgSlNWYWx1ZSwg
UHV0UHJvcGVydHlTbG90Jik7CiAKLSAgICBzdGF0aWMgYm9vbCBkZWxldGVQcm9wZXJ0eShKU0Nl
bGwqLCBFeGVjU3RhdGUqLCBjb25zdCBJZGVudGlmaWVyJik7CisgICAgc3RhdGljIGJvb2wgZGVs
ZXRlUHJvcGVydHkoSlNDZWxsKiwgRXhlY1N0YXRlKiwgUHJvcGVydHlOYW1lKTsKICAgICBzdGF0
aWMgYm9vbCBkZWxldGVQcm9wZXJ0eUJ5SW5kZXgoSlNDZWxsKiwgRXhlY1N0YXRlKiwgdW5zaWdu
ZWQpOwogCiAgICAgc3RhdGljIGJvb2wgaGFzSW5zdGFuY2UoSlNPYmplY3QqLCBFeGVjU3RhdGUq
LCBKU1ZhbHVlLCBKU1ZhbHVlIHByb3RvKTsKQEAgLTIwOSw5ICsyMDksOSBAQCBwcml2YXRlOgog
ICAgIHN0YXRpYyBFbmNvZGVkSlNWYWx1ZSBKU0NfSE9TVF9DQUxMIGNhbGwoRXhlY1N0YXRlKik7
CiAgICAgc3RhdGljIEVuY29kZWRKU1ZhbHVlIEpTQ19IT1NUX0NBTEwgY29uc3RydWN0KEV4ZWNT
dGF0ZSopOwogICAgCi0gICAgSlNWYWx1ZSBnZXRTdGF0aWNWYWx1ZShFeGVjU3RhdGUqLCBjb25z
dCBJZGVudGlmaWVyJik7Ci0gICAgc3RhdGljIEpTVmFsdWUgc3RhdGljRnVuY3Rpb25HZXR0ZXIo
RXhlY1N0YXRlKiwgSlNWYWx1ZSwgY29uc3QgSWRlbnRpZmllciYpOwotICAgIHN0YXRpYyBKU1Zh
bHVlIGNhbGxiYWNrR2V0dGVyKEV4ZWNTdGF0ZSosIEpTVmFsdWUsIGNvbnN0IElkZW50aWZpZXIm
KTsKKyAgICBKU1ZhbHVlIGdldFN0YXRpY1ZhbHVlKEV4ZWNTdGF0ZSosIFByb3BlcnR5TmFtZSk7
CisgICAgc3RhdGljIEpTVmFsdWUgc3RhdGljRnVuY3Rpb25HZXR0ZXIoRXhlY1N0YXRlKiwgSlNW
YWx1ZSwgUHJvcGVydHlOYW1lKTsKKyAgICBzdGF0aWMgSlNWYWx1ZSBjYWxsYmFja0dldHRlcihF
eGVjU3RhdGUqLCBKU1ZhbHVlLCBQcm9wZXJ0eU5hbWUpOwogCiAgICAgT3duUHRyPEpTQ2FsbGJh
Y2tPYmplY3REYXRhPiBtX2NhbGxiYWNrT2JqZWN0RGF0YTsKIH07CkluZGV4OiBTb3VyY2UvSmF2
YVNjcmlwdENvcmUvQVBJL0pTQ2FsbGJhY2tPYmplY3RGdW5jdGlvbnMuaAo9PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0t
LSBTb3VyY2UvSmF2YVNjcmlwdENvcmUvQVBJL0pTQ2FsbGJhY2tPYmplY3RGdW5jdGlvbnMuaAko
cmV2aXNpb24gMTE2NjY3KQorKysgU291cmNlL0phdmFTY3JpcHRDb3JlL0FQSS9KU0NhbGxiYWNr
T2JqZWN0RnVuY3Rpb25zLmgJKHdvcmtpbmcgY29weSkKQEAgLTEyMiw3ICsxMjIsNyBAQCBVU3Ry
aW5nIEpTQ2FsbGJhY2tPYmplY3Q8UGFyZW50Pjo6Y2xhc3NOCiB9CiAKIHRlbXBsYXRlIDxjbGFz
cyBQYXJlbnQ+Ci1ib29sIEpTQ2FsbGJhY2tPYmplY3Q8UGFyZW50Pjo6Z2V0T3duUHJvcGVydHlT
bG90KEpTQ2VsbCogY2VsbCwgRXhlY1N0YXRlKiBleGVjLCBjb25zdCBJZGVudGlmaWVyJiBwcm9w
ZXJ0eU5hbWUsIFByb3BlcnR5U2xvdCYgc2xvdCkKK2Jvb2wgSlNDYWxsYmFja09iamVjdDxQYXJl
bnQ+OjpnZXRPd25Qcm9wZXJ0eVNsb3QoSlNDZWxsKiBjZWxsLCBFeGVjU3RhdGUqIGV4ZWMsIFBy
b3BlcnR5TmFtZSBwcm9wZXJ0eU5hbWUsIFByb3BlcnR5U2xvdCYgc2xvdCkKIHsKICAgICBKU0Nh
bGxiYWNrT2JqZWN0KiB0aGlzT2JqZWN0ID0ganNDYXN0PEpTQ2FsbGJhY2tPYmplY3QqPihjZWxs
KTsKICAgICBKU0NvbnRleHRSZWYgY3R4ID0gdG9SZWYoZXhlYyk7CkBAIC0yMDUsNyArMjA1LDcg
QEAgSlNWYWx1ZSBKU0NhbGxiYWNrT2JqZWN0PFBhcmVudD46OmRlZmF1bAogfQogCiB0ZW1wbGF0
ZSA8Y2xhc3MgUGFyZW50PgotYm9vbCBKU0NhbGxiYWNrT2JqZWN0PFBhcmVudD46OmdldE93blBy
b3BlcnR5RGVzY3JpcHRvcihKU09iamVjdCogb2JqZWN0LCBFeGVjU3RhdGUqIGV4ZWMsIGNvbnN0
IElkZW50aWZpZXImIHByb3BlcnR5TmFtZSwgUHJvcGVydHlEZXNjcmlwdG9yJiBkZXNjcmlwdG9y
KQorYm9vbCBKU0NhbGxiYWNrT2JqZWN0PFBhcmVudD46OmdldE93blByb3BlcnR5RGVzY3JpcHRv
cihKU09iamVjdCogb2JqZWN0LCBFeGVjU3RhdGUqIGV4ZWMsIFByb3BlcnR5TmFtZSBwcm9wZXJ0
eU5hbWUsIFByb3BlcnR5RGVzY3JpcHRvciYgZGVzY3JpcHRvcikKIHsKICAgICBKU0NhbGxiYWNr
T2JqZWN0KiB0aGlzT2JqZWN0ID0ganNDYXN0PEpTQ2FsbGJhY2tPYmplY3QqPihvYmplY3QpOwog
ICAgIFByb3BlcnR5U2xvdCBzbG90OwpAQCAtMjI1LDcgKzIyNSw3IEBAIGJvb2wgSlNDYWxsYmFj
a09iamVjdDxQYXJlbnQ+OjpnZXRPd25Qcm8KIH0KIAogdGVtcGxhdGUgPGNsYXNzIFBhcmVudD4K
LXZvaWQgSlNDYWxsYmFja09iamVjdDxQYXJlbnQ+OjpwdXQoSlNDZWxsKiBjZWxsLCBFeGVjU3Rh
dGUqIGV4ZWMsIGNvbnN0IElkZW50aWZpZXImIHByb3BlcnR5TmFtZSwgSlNWYWx1ZSB2YWx1ZSwg
UHV0UHJvcGVydHlTbG90JiBzbG90KQordm9pZCBKU0NhbGxiYWNrT2JqZWN0PFBhcmVudD46OnB1
dChKU0NlbGwqIGNlbGwsIEV4ZWNTdGF0ZSogZXhlYywgUHJvcGVydHlOYW1lIHByb3BlcnR5TmFt
ZSwgSlNWYWx1ZSB2YWx1ZSwgUHV0UHJvcGVydHlTbG90JiBzbG90KQogewogICAgIEpTQ2FsbGJh
Y2tPYmplY3QqIHRoaXNPYmplY3QgPSBqc0Nhc3Q8SlNDYWxsYmFja09iamVjdCo+KGNlbGwpOwog
ICAgIEpTQ29udGV4dFJlZiBjdHggPSB0b1JlZihleGVjKTsKQEAgLTI4NCw3ICsyODQsNyBAQCB2
b2lkIEpTQ2FsbGJhY2tPYmplY3Q8UGFyZW50Pjo6cHV0KEpTQ2VsCiB9CiAKIHRlbXBsYXRlIDxj
bGFzcyBQYXJlbnQ+Ci1ib29sIEpTQ2FsbGJhY2tPYmplY3Q8UGFyZW50Pjo6ZGVsZXRlUHJvcGVy
dHkoSlNDZWxsKiBjZWxsLCBFeGVjU3RhdGUqIGV4ZWMsIGNvbnN0IElkZW50aWZpZXImIHByb3Bl
cnR5TmFtZSkKK2Jvb2wgSlNDYWxsYmFja09iamVjdDxQYXJlbnQ+OjpkZWxldGVQcm9wZXJ0eShK
U0NlbGwqIGNlbGwsIEV4ZWNTdGF0ZSogZXhlYywgUHJvcGVydHlOYW1lIHByb3BlcnR5TmFtZSkK
IHsKICAgICBKU0NhbGxiYWNrT2JqZWN0KiB0aGlzT2JqZWN0ID0ganNDYXN0PEpTQ2FsbGJhY2tP
YmplY3QqPihjZWxsKTsKICAgICBKU0NvbnRleHRSZWYgY3R4ID0gdG9SZWYoZXhlYyk7CkBAIC01
MDQsNyArNTA0LDcgQEAgYm9vbCBKU0NhbGxiYWNrT2JqZWN0PFBhcmVudD46OmluaGVyaXRzKAog
fQogCiB0ZW1wbGF0ZSA8Y2xhc3MgUGFyZW50PgotSlNWYWx1ZSBKU0NhbGxiYWNrT2JqZWN0PFBh
cmVudD46OmdldFN0YXRpY1ZhbHVlKEV4ZWNTdGF0ZSogZXhlYywgY29uc3QgSWRlbnRpZmllciYg
cHJvcGVydHlOYW1lKQorSlNWYWx1ZSBKU0NhbGxiYWNrT2JqZWN0PFBhcmVudD46OmdldFN0YXRp
Y1ZhbHVlKEV4ZWNTdGF0ZSogZXhlYywgUHJvcGVydHlOYW1lIHByb3BlcnR5TmFtZSkKIHsKICAg
ICBKU09iamVjdFJlZiB0aGlzUmVmID0gdG9SZWYodGhpcyk7CiAgICAgUmVmUHRyPE9wYXF1ZUpT
U3RyaW5nPiBwcm9wZXJ0eU5hbWVSZWY7CkBAIC01MzMsNyArNTMzLDcgQEAgSlNWYWx1ZSBKU0Nh
bGxiYWNrT2JqZWN0PFBhcmVudD46OmdldFN0YQogfQogCiB0ZW1wbGF0ZSA8Y2xhc3MgUGFyZW50
PgotSlNWYWx1ZSBKU0NhbGxiYWNrT2JqZWN0PFBhcmVudD46OnN0YXRpY0Z1bmN0aW9uR2V0dGVy
KEV4ZWNTdGF0ZSogZXhlYywgSlNWYWx1ZSBzbG90UGFyZW50LCBjb25zdCBJZGVudGlmaWVyJiBw
cm9wZXJ0eU5hbWUpCitKU1ZhbHVlIEpTQ2FsbGJhY2tPYmplY3Q8UGFyZW50Pjo6c3RhdGljRnVu
Y3Rpb25HZXR0ZXIoRXhlY1N0YXRlKiBleGVjLCBKU1ZhbHVlIHNsb3RQYXJlbnQsIFByb3BlcnR5
TmFtZSBwcm9wZXJ0eU5hbWUpCiB7CiAgICAgSlNDYWxsYmFja09iamVjdCogdGhpc09iaiA9IGFz
Q2FsbGJhY2tPYmplY3Qoc2xvdFBhcmVudCk7CiAgICAgCkBAIC01NDcsNyArNTQ3LDcgQEAgSlNW
YWx1ZSBKU0NhbGxiYWNrT2JqZWN0PFBhcmVudD46OnN0YXRpYwogICAgICAgICAgICAgaWYgKFN0
YXRpY0Z1bmN0aW9uRW50cnkqIGVudHJ5ID0gc3RhdGljRnVuY3Rpb25zLT5nZXQocHJvcGVydHlO
YW1lLmltcGwoKSkpIHsKICAgICAgICAgICAgICAgICBpZiAoSlNPYmplY3RDYWxsQXNGdW5jdGlv
bkNhbGxiYWNrIGNhbGxBc0Z1bmN0aW9uID0gZW50cnktPmNhbGxBc0Z1bmN0aW9uKSB7CiAgICAg
ICAgICAgICAgICAgICAgIAotICAgICAgICAgICAgICAgICAgICBKU09iamVjdCogbyA9IEpTQ2Fs
bGJhY2tGdW5jdGlvbjo6Y3JlYXRlKGV4ZWMsIHRoaXNPYmotPmdsb2JhbE9iamVjdCgpLCBjYWxs
QXNGdW5jdGlvbiwgcHJvcGVydHlOYW1lKTsKKyAgICAgICAgICAgICAgICAgICAgSlNPYmplY3Qq
IG8gPSBKU0NhbGxiYWNrRnVuY3Rpb246OmNyZWF0ZShleGVjLCB0aGlzT2JqLT5nbG9iYWxPYmpl
Y3QoKSwgY2FsbEFzRnVuY3Rpb24sIHByb3BlcnR5TmFtZS51c3RyaW5nKCkpOwogICAgICAgICAg
ICAgICAgICAgICB0aGlzT2JqLT5wdXREaXJlY3QoZXhlYy0+Z2xvYmFsRGF0YSgpLCBwcm9wZXJ0
eU5hbWUsIG8sIGVudHJ5LT5hdHRyaWJ1dGVzKTsKICAgICAgICAgICAgICAgICAgICAgcmV0dXJu
IG87CiAgICAgICAgICAgICAgICAgfQpAQCAtNTU5LDcgKzU1OSw3IEBAIEpTVmFsdWUgSlNDYWxs
YmFja09iamVjdDxQYXJlbnQ+OjpzdGF0aWMKIH0KIAogdGVtcGxhdGUgPGNsYXNzIFBhcmVudD4K
LUpTVmFsdWUgSlNDYWxsYmFja09iamVjdDxQYXJlbnQ+OjpjYWxsYmFja0dldHRlcihFeGVjU3Rh
dGUqIGV4ZWMsIEpTVmFsdWUgc2xvdFBhcmVudCwgY29uc3QgSWRlbnRpZmllciYgcHJvcGVydHlO
YW1lKQorSlNWYWx1ZSBKU0NhbGxiYWNrT2JqZWN0PFBhcmVudD46OmNhbGxiYWNrR2V0dGVyKEV4
ZWNTdGF0ZSogZXhlYywgSlNWYWx1ZSBzbG90UGFyZW50LCBQcm9wZXJ0eU5hbWUgcHJvcGVydHlO
YW1lKQogewogICAgIEpTQ2FsbGJhY2tPYmplY3QqIHRoaXNPYmogPSBhc0NhbGxiYWNrT2JqZWN0
KHNsb3RQYXJlbnQpOwogICAgIApJbmRleDogU291cmNlL0phdmFTY3JpcHRDb3JlL0FQSS9KU09i
amVjdFJlZi5jcHAKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL0phdmFTY3JpcHRDb3JlL0FQSS9KU09i
amVjdFJlZi5jcHAJKHJldmlzaW9uIDExNjY2NykKKysrIFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9B
UEkvSlNPYmplY3RSZWYuY3BwCSh3b3JraW5nIGNvcHkpCkBAIC05MiwxMCArOTIsNyBAQCBKU09i
amVjdFJlZiBKU09iamVjdE1ha2VGdW5jdGlvbldpdGhDYWxsCiB7CiAgICAgRXhlY1N0YXRlKiBl
eGVjID0gdG9KUyhjdHgpOwogICAgIEFQSUVudHJ5U2hpbSBlbnRyeVNoaW0oZXhlYyk7Ci0KLSAg
ICBJZGVudGlmaWVyIG5hbWVJRCA9IG5hbWUgPyBuYW1lLT5pZGVudGlmaWVyKCZleGVjLT5nbG9i
YWxEYXRhKCkpIDogSWRlbnRpZmllcihleGVjLCAiYW5vbnltb3VzIik7Ci0gICAgCi0gICAgcmV0
dXJuIHRvUmVmKEpTQ2FsbGJhY2tGdW5jdGlvbjo6Y3JlYXRlKGV4ZWMsIGV4ZWMtPmxleGljYWxH
bG9iYWxPYmplY3QoKSwgY2FsbEFzRnVuY3Rpb24sIG5hbWVJRCkpOworICAgIHJldHVybiB0b1Jl
ZihKU0NhbGxiYWNrRnVuY3Rpb246OmNyZWF0ZShleGVjLCBleGVjLT5sZXhpY2FsR2xvYmFsT2Jq
ZWN0KCksIGNhbGxBc0Z1bmN0aW9uLCBuYW1lID8gbmFtZS0+dXN0cmluZygpIDogImFub255bW91
cyIpKTsKIH0KIAogSlNPYmplY3RSZWYgSlNPYmplY3RNYWtlQ29uc3RydWN0b3IoSlNDb250ZXh0
UmVmIGN0eCwgSlNDbGFzc1JlZiBqc0NsYXNzLCBKU09iamVjdENhbGxBc0NvbnN0cnVjdG9yQ2Fs
bGJhY2sgY2FsbEFzQ29uc3RydWN0b3IpCkluZGV4OiBTb3VyY2UvSmF2YVNjcmlwdENvcmUvSmF2
YVNjcmlwdENvcmUudmNwcm9qL0phdmFTY3JpcHRDb3JlL0phdmFTY3JpcHRDb3JlLmRlZgo9PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09Ci0tLSBTb3VyY2UvSmF2YVNjcmlwdENvcmUvSmF2YVNjcmlwdENvcmUudmNwcm9qL0ph
dmFTY3JpcHRDb3JlL0phdmFTY3JpcHRDb3JlLmRlZgkocmV2aXNpb24gMTE2NjY3KQorKysgU291
cmNlL0phdmFTY3JpcHRDb3JlL0phdmFTY3JpcHRDb3JlLnZjcHJvai9KYXZhU2NyaXB0Q29yZS9K
YXZhU2NyaXB0Q29yZS5kZWYJKHdvcmtpbmcgY29weSkKQEAgLTU2LDkgKzU2LDkgQEAgRVhQT1JU
UwogICAgID9hZGRCeXRlc0BTSEExQFdURkBAUUFFWFBCRUlAWgogICAgID9hZGRDdXJyZW50VGhy
ZWFkQE1hY2hpbmVUaHJlYWRzQEpTQ0BAUUFFWFhaCiAgICAgP2FkZEZpbmFsaXplckBIZWFwQEpT
Q0BAUUFFWFBBVkpTQ2VsbEAyQFA2QVgwQFpAWgotICAgID9hZGRQcm9wZXJ0eVRyYW5zaXRpb25A
U3RydWN0dXJlQEpTQ0BAU0FQQVYxMkBBQVZKU0dsb2JhbERhdGFAMkBQQVYxMkBBQlZJZGVudGlm
aWVyQDJASVBBVkpTQ2VsbEAyQEFBSUBaCi0gICAgP2FkZFByb3BlcnR5VHJhbnNpdGlvblRvRXhp
c3RpbmdTdHJ1Y3R1cmVAU3RydWN0dXJlQEpTQ0BAU0FQQVYxMkBQQVYxMkBBQlZJZGVudGlmaWVy
QDJASVBBVkpTQ2VsbEAyQEFBSUBaCi0gICAgP2FkZFByb3BlcnR5V2l0aG91dFRyYW5zaXRpb25A
U3RydWN0dXJlQEpTQ0BAUUFFSUFBVkpTR2xvYmFsRGF0YUAyQEFCVklkZW50aWZpZXJAMkBJUEFW
SlNDZWxsQDJAQFoKKyAgICA/YWRkUHJvcGVydHlUcmFuc2l0aW9uQFN0cnVjdHVyZUBKU0NAQFNB
UEFWMTJAQUFWSlNHbG9iYWxEYXRhQDJAUEFWMTJAVlByb3BlcnR5TmFtZUAyQElQQVZKU0NlbGxA
MkBBQUlAWgorICAgID9hZGRQcm9wZXJ0eVRyYW5zaXRpb25Ub0V4aXN0aW5nU3RydWN0dXJlQFN0
cnVjdHVyZUBKU0NAQFNBUEFWMTJAUEFWMTJAVlByb3BlcnR5TmFtZUAyQElQQVZKU0NlbGxAMkBB
QUlAWgorICAgID9hZGRQcm9wZXJ0eVdpdGhvdXRUcmFuc2l0aW9uQFN0cnVjdHVyZUBKU0NAQFFB
RUlBQVZKU0dsb2JhbERhdGFAMkBWUHJvcGVydHlOYW1lQDJASVBBVkpTQ2VsbEAyQEBaCiAgICAg
P2FkZFNsb3dDYXNlQElkZW50aWZpZXJASlNDQEBDQT9BVj8kUGFzc1JlZlB0ckBWU3RyaW5nSW1w
bEBXVEZAQEBXVEZAQFBBVkV4ZWNTdGF0ZUAyQFBBVlN0cmluZ0ltcGxANEBAWgogICAgID9hZGRT
bG93Q2FzZUBJZGVudGlmaWVyQEpTQ0BAQ0E/QVY/JFBhc3NSZWZQdHJAVlN0cmluZ0ltcGxAV1RG
QEBAV1RGQEBQQVZKU0dsb2JhbERhdGFAMkBQQVZTdHJpbmdJbXBsQDRAQFoKICAgICA/YWRkU3Rh
dGljR2xvYmFsc0BKU0dsb2JhbE9iamVjdEBKU0NAQElBRVhQQVVHbG9iYWxQcm9wZXJ0eUluZm9A
MTJASEBaCkBAIC0xMDIsNyArMTAyLDcgQEAgRVhQT1JUUwogICAgID9jb252ZXJ0TGF0aW4xVG9V
VEY4QFVuaWNvZGVAV1RGQEBZQT9BVzRDb252ZXJzaW9uUmVzdWx0QDEyQFBBUEJFUEJFUEFQQURQ
QURAWgogICAgID9jb252ZXJ0VVRGMTZUb1VURjhAVW5pY29kZUBXVEZAQFlBP0FXNENvbnZlcnNp
b25SZXN1bHRAMTJAUEFQQl9XUEJfV1BBUEFEUEFEX05AWgogICAgID9jb252ZXJ0VVRGOFRvVVRG
MTZAVW5pY29kZUBXVEZAQFlBP0FXNENvbnZlcnNpb25SZXN1bHRAMTJAUEFQQkRQQkRQQVBBX1dQ
QV9XX05AWgotICAgID9jcmVhdGVASlNGdW5jdGlvbkBKU0NAQFNBUEFWMTJAUEFWRXhlY1N0YXRl
QDJAUEFWSlNHbG9iYWxPYmplY3RAMkBIQUJWSWRlbnRpZmllckAyQFA2SV9KMEBaVzRJbnRyaW5z
aWNAMkAzQFoKKyAgICA/Y3JlYXRlQEpTRnVuY3Rpb25ASlNDQEBTQVBBVjEyQFBBVkV4ZWNTdGF0
ZUAyQFBBVkpTR2xvYmFsT2JqZWN0QDJASEFCVlVTdHJpbmdAMkBQNklfSjBAWlc0SW50cmluc2lj
QDJAM0BaCiAgICAgP2NyZWF0ZUBKU0dsb2JhbERhdGFASlNDQEBTQT9BVj8kUGFzc1JlZlB0ckBW
SlNHbG9iYWxEYXRhQEpTQ0BAQFdURkBAVzRUaHJlYWRTdGFja1R5cGVAMkBXNEhlYXBTaXplQDJA
QFoKICAgICA/Y3JlYXRlQE9wYXF1ZUpTU3RyaW5nQEBTQT9BVj8kUGFzc1JlZlB0ckBVT3BhcXVl
SlNTdHJpbmdAQEBXVEZAQEFCVlVTdHJpbmdASlNDQEBAWgogICAgID9jcmVhdGVAUmVnRXhwQEpT
Q0BAU0FQQVYxMkBBQVZKU0dsb2JhbERhdGFAMkBBQlZVU3RyaW5nQDJAVzRSZWdFeHBGbGFnc0Ay
QEBaCkBAIC0xMTAsNiArMTEwLDcgQEAgRVhQT1JUUwogICAgID9jcmVhdGVFcnJvckBKU0NAQFlB
UEFWSlNPYmplY3RAMUBQQVZFeGVjU3RhdGVAMUBBQlZVU3RyaW5nQDFAQFoKICAgICA/Y3JlYXRl
SW50ZXJydXB0ZWRFeGVjdXRpb25FeGNlcHRpb25ASlNDQEBZQVBBVkpTT2JqZWN0QDFAUEFWSlNH
bG9iYWxEYXRhQDFAQFoKICAgICA/Y3JlYXRlTGVha2VkQEpTR2xvYmFsRGF0YUBKU0NAQFNBP0FW
PyRQYXNzUmVmUHRyQFZKU0dsb2JhbERhdGFASlNDQEBAV1RGQEBXNFRocmVhZFN0YWNrVHlwZUAy
QFc0SGVhcFNpemVAMkBAWgorICAgID9jcmVhdGVOb3RFbm91Z2hBcmd1bWVudHNFcnJvckBKU0NA
QFlBUEFWSlNPYmplY3RAMUBQQVZFeGVjU3RhdGVAMUBAWgogICAgID9jcmVhdGVSYW5nZUVycm9y
QEpTQ0BAWUFQQVZKU09iamVjdEAxQFBBVkV4ZWNTdGF0ZUAxQEFCVlVTdHJpbmdAMUBAWgogICAg
ID9jcmVhdGVSZWZlcmVuY2VFcnJvckBKU0NAQFlBUEFWSlNPYmplY3RAMUBQQVZFeGVjU3RhdGVA
MUBBQlZVU3RyaW5nQDFAQFoKICAgICA/Y3JlYXRlU2luZ2xlQ2hhcmFjdGVyU3RyaW5nQFNtYWxs
U3RyaW5nc0BKU0NAQEFBRVhQQVZKU0dsb2JhbERhdGFAMkBFQFoKQEAgLTEyMCw3ICsxMjEsNiBA
QCBFWFBPUlRTCiAgICAgP2NyZWF0ZVRocmVhZEBXVEZAQFlBSVA2QVBBWFBBWEBaMFBCREBaCiAg
ICAgP2NyZWF0ZVRocmVhZEBXVEZAQFlBSVA2QVhQQVhAWjBQQkRAWgogICAgID9jcmVhdGVUeXBl
RXJyb3JASlNDQEBZQVBBVkpTT2JqZWN0QDFAUEFWRXhlY1N0YXRlQDFAQUJWVVN0cmluZ0AxQEBa
Ci0gICAgP2NyZWF0ZU5vdEVub3VnaEFyZ3VtZW50c0Vycm9yQEpTQ0BAWUFQQVZKU09iamVjdEAx
QFBBVkV4ZWNTdGF0ZUAxQEBaCiAgICAgP2NyeXB0b2dyYXBoaWNhbGx5UmFuZG9tTnVtYmVyQFdU
RkBAWUFJWFoKICAgICA/Y3J5cHRvZ3JhcGhpY2FsbHlSYW5kb21WYWx1ZXNAV1RGQEBZQVhQQVhJ
QFoKICAgICA/Y3VycmVudFRocmVhZEBXVEZAQFlBSVhaCkBAIC0xMzMsMTkgKzEzMywxOSBAQCBF
WFBPUlRTCiAgICAgP2RheUluWWVhckBXVEZAQFlBSE5IQFoKICAgICA/ZGVjcmVtZW50QFJlZkNv
dW50ZWRMZWFrQ291bnRlckBXVEZAQFFBRVhYWgogICAgID9kZWZhdWx0VmFsdWVASlNPYmplY3RA
SlNDQEBTQT9BVkpTVmFsdWVAMkBQQlYxMkBQQVZFeGVjU3RhdGVAMkBXNFByZWZlcnJlZFByaW1p
dGl2ZVR5cGVAMkBAWgotICAgID9kZWZpbmVPd25Qcm9wZXJ0eUBKU0dsb2JhbE9iamVjdEBKU0NA
QFNBX05QQVZKU09iamVjdEAyQFBBVkV4ZWNTdGF0ZUAyQEFCVklkZW50aWZpZXJAMkBBQVZQcm9w
ZXJ0eURlc2NyaXB0b3JAMkBfTkBaCi0gICAgP2RlZmluZU93blByb3BlcnR5QEpTT2JqZWN0QEpT
Q0BAU0FfTlBBVjEyQFBBVkV4ZWNTdGF0ZUAyQEFCVklkZW50aWZpZXJAMkBBQVZQcm9wZXJ0eURl
c2NyaXB0b3JAMkBfTkBaCisgICAgP2RlZmluZU93blByb3BlcnR5QEpTR2xvYmFsT2JqZWN0QEpT
Q0BAU0FfTlBBVkpTT2JqZWN0QDJAUEFWRXhlY1N0YXRlQDJAVlByb3BlcnR5TmFtZUAyQEFBVlBy
b3BlcnR5RGVzY3JpcHRvckAyQF9OQFoKKyAgICA/ZGVmaW5lT3duUHJvcGVydHlASlNPYmplY3RA
SlNDQEBTQV9OUEFWMTJAUEFWRXhlY1N0YXRlQDJAVlByb3BlcnR5TmFtZUAyQEFBVlByb3BlcnR5
RGVzY3JpcHRvckAyQF9OQFoKICAgICA/ZGVsZXRlT3duZWRQdHJAV1RGQEBZQVhQQVVIQklUTUFQ
X19AQEBaCiAgICAgP2RlbGV0ZU93bmVkUHRyQFdURkBAWUFYUEFVSEJSVVNIX19AQEBaCiAgICAg
P2RlbGV0ZU93bmVkUHRyQFdURkBAWUFYUEFVSERDX19AQEBaCiAgICAgP2RlbGV0ZU93bmVkUHRy
QFdURkBAWUFYUEFVSEZPTlRfX0BAQFoKICAgICA/ZGVsZXRlT3duZWRQdHJAV1RGQEBZQVhQQVVI
UkdOX19AQEBaCi0gICAgP2RlbGV0ZVByb3BlcnR5QEpTT2JqZWN0QEpTQ0BAU0FfTlBBVkpTQ2Vs
bEAyQFBBVkV4ZWNTdGF0ZUAyQEFCVklkZW50aWZpZXJAMkBAWgotICAgID9kZWxldGVQcm9wZXJ0
eUBKU1ZhcmlhYmxlT2JqZWN0QEpTQ0BAU0FfTlBBVkpTQ2VsbEAyQFBBVkV4ZWNTdGF0ZUAyQEFC
VklkZW50aWZpZXJAMkBAWgorICAgID9kZWxldGVQcm9wZXJ0eUBKU09iamVjdEBKU0NAQFNBX05Q
QVZKU0NlbGxAMkBQQVZFeGVjU3RhdGVAMkBWUHJvcGVydHlOYW1lQDJAQFoKKyAgICA/ZGVsZXRl
UHJvcGVydHlASlNWYXJpYWJsZU9iamVjdEBKU0NAQFNBX05QQVZKU0NlbGxAMkBQQVZFeGVjU3Rh
dGVAMkBWUHJvcGVydHlOYW1lQDJAQFoKICAgICA/ZGVsZXRlUHJvcGVydHlCeUluZGV4QEpTT2Jq
ZWN0QEpTQ0BAU0FfTlBBVkpTQ2VsbEAyQFBBVkV4ZWNTdGF0ZUAyQElAWgogICAgID9kZWxldGVU
YWJsZUBIYXNoVGFibGVASlNDQEBRQkVYWFoKLSAgICA/ZGVzcGVjaWZ5RGljdGlvbmFyeUZ1bmN0
aW9uQFN0cnVjdHVyZUBKU0NAQFFBRVhBQVZKU0dsb2JhbERhdGFAMkBBQlZJZGVudGlmaWVyQDJA
QFoKLSAgICA/ZGVzcGVjaWZ5RnVuY3Rpb25UcmFuc2l0aW9uQFN0cnVjdHVyZUBKU0NAQFNBUEFW
MTJAQUFWSlNHbG9iYWxEYXRhQDJAUEFWMTJAQUJWSWRlbnRpZmllckAyQEBaCisgICAgP2Rlc3Bl
Y2lmeURpY3Rpb25hcnlGdW5jdGlvbkBTdHJ1Y3R1cmVASlNDQEBRQUVYQUFWSlNHbG9iYWxEYXRh
QDJAVlByb3BlcnR5TmFtZUAyQEBaCisgICAgP2Rlc3BlY2lmeUZ1bmN0aW9uVHJhbnNpdGlvbkBT
dHJ1Y3R1cmVASlNDQEBTQVBBVjEyQEFBVkpTR2xvYmFsRGF0YUAyQFBBVjEyQFZQcm9wZXJ0eU5h
bWVAMkBAWgogICAgID9kZXN0cm95QEpTQ2VsbEBKU0NAQEtBWFBBVjEyQEBaCiAgICAgP2Rlc3Ry
b3lASlNHbG9iYWxPYmplY3RASlNDQEBTQVhQQVZKU0NlbGxAMkBAWgogICAgID9kZXN0cm95QE91
dE9mTGluZUJpdHNAQml0VmVjdG9yQFdURkBAU0FYUEFWMTIzQEBaCkBAIC0xNzcsNyArMTc3LDcg
QEAgRVhQT1JUUwogICAgID9maW5hbGl6ZUBXZWFrSGFuZGxlT3duZXJASlNDQEBVQUVYVj8kSGFu
ZGxlQFc0VW5rbm93bkBKU0NAQEAyQFBBWEBaCiAgICAgP2ZpbmRBbGxvY2F0b3JAV2Vha1NldEBK
U0NAQEFBRVBBVUZyZWVDZWxsQFdlYWtCbG9ja0AyQFhaCiAgICAgP2ZpbmlzaENyZWF0aW9uQERh
dGVJbnN0YW5jZUBKU0NAQElBRVhBQVZKU0dsb2JhbERhdGFAMkBOQFoKLSAgICA/ZmluaXNoQ3Jl
YXRpb25ASW50ZXJuYWxGdW5jdGlvbkBKU0NAQElBRVhBQVZKU0dsb2JhbERhdGFAMkBBQlZJZGVu
dGlmaWVyQDJAQFoKKyAgICA/ZmluaXNoQ3JlYXRpb25ASW50ZXJuYWxGdW5jdGlvbkBKU0NAQElB
RVhBQVZKU0dsb2JhbERhdGFAMkBBQlZVU3RyaW5nQDJAQFoKICAgICA/ZmluaXNoQ3JlYXRpb25A
SlNBcnJheUBKU0NAQElBRVhBQVZKU0dsb2JhbERhdGFAMkBJQFoKICAgICA/ZmluaXNoQ3JlYXRp
b25AUmVnRXhwT2JqZWN0QEpTQ0BASUFFWFBBVkpTR2xvYmFsT2JqZWN0QDJAQFoKICAgICA/Zmlu
aXNoQ3JlYXRpb25AU3RyaW5nT2JqZWN0QEpTQ0BASUFFWEFBVkpTR2xvYmFsRGF0YUAyQFBBVkpT
U3RyaW5nQDJAQFoKQEAgLTE4NiwyMSArMTg2LDE5IEBAIEVYUE9SVFMKICAgICA/ZnJvbUBJZGVu
dGlmaWVyQEpTQ0BAU0E/QVYxMkBQQVZFeGVjU3RhdGVAMkBJQFoKICAgICA/ZnVuY3Rpb25HZXR0
ZXJAUHJvcGVydHlTbG90QEpTQ0BAQUJFP0FWSlNWYWx1ZUAyQFBBVkV4ZWNTdGF0ZUAyQEBaCiAg
ICAgP2Z1bmN0aW9uTmFtZUBEZWJ1Z2dlckNhbGxGcmFtZUBKU0NAQFFCRVBCVlVTdHJpbmdAMkBY
WgotICAgID9nZXRAU3RydWN0dXJlQEpTQ0BAUUFFSUFBVkpTR2xvYmFsRGF0YUAyQEFCVklkZW50
aWZpZXJAMkBBQUlBQVBBVkpTQ2VsbEAyQEBaCi0gICAgP2dldEBTdHJ1Y3R1cmVASlNDQEBRQUVJ
QUFWSlNHbG9iYWxEYXRhQDJAUEFWU3RyaW5nSW1wbEBXVEZAQEFBSUFBUEFWSlNDZWxsQDJAQFoK
KyAgICA/Z2V0QFN0cnVjdHVyZUBKU0NAQFFBRUlBQVZKU0dsb2JhbERhdGFAMkBWUHJvcGVydHlO
YW1lQDJAQUFJQUFQQVZKU0NlbGxAMkBAWgogICAgID9nZXRDYWxjdWxhdGVkRGlzcGxheU5hbWVA
SlNDQEBZQT9BVlVTdHJpbmdAMUBQQVZFeGVjU3RhdGVAMUBQQVZKU09iamVjdEAxQEBaCiAgICAg
P2dldENhbGxEYXRhQEpTQ2VsbEBKU0NAQFNBP0FXNENhbGxUeXBlQDJAUEFWMTJAQUFUQ2FsbERh
dGFAMkBAWgogICAgID9nZXRDb25zdHJ1Y3REYXRhQEpTQ2VsbEBKU0NAQFNBP0FXNENvbnN0cnVj
dFR5cGVAMkBQQVYxMkBBQVRDb25zdHJ1Y3REYXRhQDJAQFoKICAgICA/Z2V0Q3VycmVudExvY2Fs
VGltZUBXVEZAQFlBWFBBVXRtQEBAWgogICAgID9nZXRPYmplY3RASlNDZWxsQEpTQ0BAUUFFUEFW
SlNPYmplY3RAMkBYWgotICAgID9nZXRPd25Qcm9wZXJ0eURlc2NyaXB0b3JASlNHbG9iYWxPYmpl
Y3RASlNDQEBTQV9OUEFWSlNPYmplY3RAMkBQQVZFeGVjU3RhdGVAMkBBQlZJZGVudGlmaWVyQDJA
QUFWUHJvcGVydHlEZXNjcmlwdG9yQDJAQFoKLSAgICA/Z2V0T3duUHJvcGVydHlEZXNjcmlwdG9y
QEpTT2JqZWN0QEpTQ0BAU0FfTlBBVjEyQFBBVkV4ZWNTdGF0ZUAyQEFCVklkZW50aWZpZXJAMkBB
QVZQcm9wZXJ0eURlc2NyaXB0b3JAMkBAWgorICAgID9nZXRPd25Qcm9wZXJ0eURlc2NyaXB0b3JA
SlNHbG9iYWxPYmplY3RASlNDQEBTQV9OUEFWSlNPYmplY3RAMkBQQVZFeGVjU3RhdGVAMkBWUHJv
cGVydHlOYW1lQDJAQUFWUHJvcGVydHlEZXNjcmlwdG9yQDJAQFoKKyAgICA/Z2V0T3duUHJvcGVy
dHlEZXNjcmlwdG9yQEpTT2JqZWN0QEpTQ0BAU0FfTlBBVjEyQFBBVkV4ZWNTdGF0ZUAyQFZQcm9w
ZXJ0eU5hbWVAMkBBQVZQcm9wZXJ0eURlc2NyaXB0b3JAMkBAWgogICAgID9nZXRPd25Qcm9wZXJ0
eU5hbWVzQEpTT2JqZWN0QEpTQ0BAU0FYUEFWMTJAUEFWRXhlY1N0YXRlQDJAQUFWUHJvcGVydHlO
YW1lQXJyYXlAMkBXNEVudW1lcmF0aW9uTW9kZUAyQEBaCiAgICAgP2dldE93blByb3BlcnR5TmFt
ZXNASlNWYXJpYWJsZU9iamVjdEBKU0NAQFNBWFBBVkpTT2JqZWN0QDJAUEFWRXhlY1N0YXRlQDJA
QUFWUHJvcGVydHlOYW1lQXJyYXlAMkBXNEVudW1lcmF0aW9uTW9kZUAyQEBaCi0gICAgP2dldE93
blByb3BlcnR5U2xvdEBKU0dsb2JhbE9iamVjdEBKU0NAQFNBX05QQVZKU0NlbGxAMkBQQVZFeGVj
U3RhdGVAMkBBQlZJZGVudGlmaWVyQDJAQUFWUHJvcGVydHlTbG90QDJAQFoKKyAgICA/Z2V0T3du
UHJvcGVydHlTbG90QEpTR2xvYmFsT2JqZWN0QEpTQ0BAU0FfTlBBVkpTQ2VsbEAyQFBBVkV4ZWNT
dGF0ZUAyQFZQcm9wZXJ0eU5hbWVAMkBBQVZQcm9wZXJ0eVNsb3RAMkBAWgogICAgID9nZXRPd25Q
cm9wZXJ0eVNsb3RCeUluZGV4QEpTQXJyYXlASlNDQEBTQV9OUEFWSlNDZWxsQDJAUEFWRXhlY1N0
YXRlQDJASUFBVlByb3BlcnR5U2xvdEAyQEBaCiAgICAgP2dldE93blByb3BlcnR5U2xvdEJ5SW5k
ZXhASlNPYmplY3RASlNDQEBTQV9OUEFWSlNDZWxsQDJAUEFWRXhlY1N0YXRlQDJASUFBVlByb3Bl
cnR5U2xvdEAyQEBaCi0gICAgP2dldFByb3BlcnR5RGVzY3JpcHRvckBKU09iamVjdEBKU0NAQFFB
RV9OUEFWRXhlY1N0YXRlQDJAQUJWSWRlbnRpZmllckAyQEFBVlByb3BlcnR5RGVzY3JpcHRvckAy
QEBaCiAgICAgP2dldFByb3BlcnR5TmFtZXNASlNPYmplY3RASlNDQEBTQVhQQVYxMkBQQVZFeGVj
U3RhdGVAMkBBQVZQcm9wZXJ0eU5hbWVBcnJheUAyQFc0RW51bWVyYXRpb25Nb2RlQDJAQFoKICAg
ICA/Z2V0U2xpY2VAQXJnTGlzdEBKU0NAQFFCRVhIQUFWMTJAQFoKICAgICA/Z2V0U3RhY2tUcmFj
ZUBJbnRlcnByZXRlckBKU0NAQFNBWFBBVkpTR2xvYmFsRGF0YUAyQEFBVj8kVmVjdG9yQFVTdGFj
a0ZyYW1lQEpTQ0BAJDBBQEBXVEZAQEBaCkBAIC0yMTEsOCArMjA5LDggQEAgRVhQT1JUUwogICAg
ID9nbG9iYWxPYmplY3RDb3VudEBIZWFwQEpTQ0BAUUFFSVhaCiAgICAgP2dyb3dASGFuZGxlU2V0
QEpTQ0BAQUFFWFhaCiAgICAgP2hhc0luc3RhbmNlQEpTT2JqZWN0QEpTQ0BAU0FfTlBBVjEyQFBB
VkV4ZWNTdGF0ZUAyQFZKU1ZhbHVlQDJAMkBaCi0gICAgP2hhc1Byb3BlcnR5QEpTT2JqZWN0QEpT
Q0BAUUJFX05QQVZFeGVjU3RhdGVAMkBBQlZJZGVudGlmaWVyQDJAQFoKICAgICA/aGFzUHJvcGVy
dHlASlNPYmplY3RASlNDQEBRQkVfTlBBVkV4ZWNTdGF0ZUAyQElAWgorICAgID9oYXNQcm9wZXJ0
eUBKU09iamVjdEBKU0NAQFFCRV9OUEFWRXhlY1N0YXRlQDJAVlByb3BlcnR5TmFtZUAyQEBaCiAg
ICAgP2hhc2hTbG93Q2FzZUBTdHJpbmdJbXBsQFdURkBAQUJFSVhaCiAgICAgP2hlYXBASGVhcEBK
U0NAQFNBUEFWMTJAVkpTVmFsdWVAMkBAWgogICAgID9pbmNyZW1lbnRAUmVmQ291bnRlZExlYWtD
b3VudGVyQFdURkBAUUFFWFhaCkBAIC0yNjYsMTIgKzI2NCwxMiBAQCBFWFBPUlRTCiAgICAgP3By
b3RlY3RlZEdsb2JhbE9iamVjdENvdW50QEhlYXBASlNDQEBRQUVJWFoKICAgICA/cHJvdGVjdGVk
T2JqZWN0Q291bnRASGVhcEBKU0NAQFFBRUlYWgogICAgID9wcm90ZWN0ZWRPYmplY3RUeXBlQ291
bnRzQEhlYXBASlNDQEBRQUU/QVY/JFBhc3NPd25QdHJAVj8kSGFzaENvdW50ZWRTZXRAUEJEVT8k
UHRySGFzaEBQQkRAV1RGQEBVPyRIYXNoVHJhaXRzQFBCREAyQEBXVEZAQEBXVEZAQFhaCi0gICAg
P3B1dEBKU0dsb2JhbE9iamVjdEBKU0NAQFNBWFBBVkpTQ2VsbEAyQFBBVkV4ZWNTdGF0ZUAyQEFC
VklkZW50aWZpZXJAMkBWSlNWYWx1ZUAyQEFBVlB1dFByb3BlcnR5U2xvdEAyQEBaCi0gICAgP3B1
dEBKU09iamVjdEBKU0NAQFNBWFBBVkpTQ2VsbEAyQFBBVkV4ZWNTdGF0ZUAyQEFCVklkZW50aWZp
ZXJAMkBWSlNWYWx1ZUAyQEFBVlB1dFByb3BlcnR5U2xvdEAyQEBaCisgICAgP3B1dEBKU0dsb2Jh
bE9iamVjdEBKU0NAQFNBWFBBVkpTQ2VsbEAyQFBBVkV4ZWNTdGF0ZUAyQFZQcm9wZXJ0eU5hbWVA
MkBWSlNWYWx1ZUAyQEFBVlB1dFByb3BlcnR5U2xvdEAyQEBaCisgICAgP3B1dEBKU09iamVjdEBK
U0NAQFNBWFBBVkpTQ2VsbEAyQFBBVkV4ZWNTdGF0ZUAyQFZQcm9wZXJ0eU5hbWVAMkBWSlNWYWx1
ZUAyQEFBVlB1dFByb3BlcnR5U2xvdEAyQEBaCiAgICAgP3B1dEJ5SW5kZXhASlNPYmplY3RASlND
QEBTQVhQQVZKU0NlbGxAMkBQQVZFeGVjU3RhdGVAMkBJVkpTVmFsdWVAMkBfTkBaCiAgICAgP3B1
dERpcmVjdEluZGV4QmV5b25kVmVjdG9yTGVuZ3RoQEpTQXJyYXlASlNDQEBBQUVfTlBBVkV4ZWNT
dGF0ZUAyQElWSlNWYWx1ZUAyQF9OQFoKLSAgICA/cHV0RGlyZWN0VmlydHVhbEBKU0dsb2JhbE9i
amVjdEBKU0NAQFNBWFBBVkpTT2JqZWN0QDJAUEFWRXhlY1N0YXRlQDJAQUJWSWRlbnRpZmllckAy
QFZKU1ZhbHVlQDJASUBaCi0gICAgP3B1dERpcmVjdFZpcnR1YWxASlNPYmplY3RASlNDQEBTQVhQ
QVYxMkBQQVZFeGVjU3RhdGVAMkBBQlZJZGVudGlmaWVyQDJAVkpTVmFsdWVAMkBJQFoKKyAgICA/
cHV0RGlyZWN0VmlydHVhbEBKU0dsb2JhbE9iamVjdEBKU0NAQFNBWFBBVkpTT2JqZWN0QDJAUEFW
RXhlY1N0YXRlQDJAVlByb3BlcnR5TmFtZUAyQFZKU1ZhbHVlQDJASUBaCisgICAgP3B1dERpcmVj
dFZpcnR1YWxASlNPYmplY3RASlNDQEBTQVhQQVYxMkBQQVZFeGVjU3RhdGVAMkBWUHJvcGVydHlO
YW1lQDJAVkpTVmFsdWVAMkBJQFoKICAgICA/cmFuZG9tTnVtYmVyQFdURkBAWUFOWFoKICAgICA/
cmVjb21waWxlQWxsSlNGdW5jdGlvbnNARGVidWdnZXJASlNDQEBRQUVYUEFWSlNHbG9iYWxEYXRh
QDJAQFoKICAgICA/cmVnRXhwRmxhZ3NASlNDQEBZQT9BVzRSZWdFeHBGbGFnc0AxQEFCVlVTdHJp
bmdAMUBAWgpAQCAtMzA0LDcgKzMwMiw3IEBAIEVYUE9SVFMKICAgICA/c2V0U2V0dGVyQFByb3Bl
cnR5RGVzY3JpcHRvckBKU0NAQFFBRVhWSlNWYWx1ZUAyQEBaCiAgICAgP3NldFVuZGVmaW5lZEBQ
cm9wZXJ0eURlc2NyaXB0b3JASlNDQEBRQUVYWFoKICAgICA/c2V0VW53cmFwcGVkT2JqZWN0QEpT
R2xvYmFsVGhpc0BKU0NAQElBRVhBQVZKU0dsb2JhbERhdGFAMkBQQVZKU0dsb2JhbE9iamVjdEAy
QEBaCi0gICAgP3NldFVwU3RhdGljRnVuY3Rpb25TbG90QEpTQ0BAWUFfTlBBVkV4ZWNTdGF0ZUAx
QFBCVkhhc2hFbnRyeUAxQFBBVkpTT2JqZWN0QDFAQUJWSWRlbnRpZmllckAxQEFBVlByb3BlcnR5
U2xvdEAxQEBaCisgICAgP3NldFVwU3RhdGljRnVuY3Rpb25TbG90QEpTQ0BAWUFfTlBBVkV4ZWNT
dGF0ZUAxQFBCVkhhc2hFbnRyeUAxQFBBVkpTT2JqZWN0QDFAVlByb3BlcnR5TmFtZUAxQEFBVlBy
b3BlcnR5U2xvdEAxQEBaCiAgICAgP3NldFdyaXRhYmxlQFByb3BlcnR5RGVzY3JpcHRvckBKU0NA
QFFBRVhfTkBaCiAgICAgP3NldHRlckBQcm9wZXJ0eURlc2NyaXB0b3JASlNDQEBRQkU/QVZKU1Zh
bHVlQDJAWFoKICAgICA/c2hyaW5rVG9GaXRAU3RyaW5nQnVpbGRlckBXVEZAQFFBRVhYWgpAQCAt
MzIwLDcgKzMxOCw2IEBAIEVYUE9SVFMKICAgICA/c3RvcFByb2ZpbGluZ0BQcm9maWxlckBKU0NA
QFFBRT9BVj8kUGFzc1JlZlB0ckBWUHJvZmlsZUBKU0NAQEBXVEZAQFBBVkV4ZWNTdGF0ZUAyQEFC
VlVTdHJpbmdAMkBAWgogICAgID9zdG9wU2FtcGxpbmdASlNHbG9iYWxEYXRhQEpTQ0BAUUFFWFha
CiAgICAgP3N1YnN0cmluZ1NoYXJpbmdJbXBsQFVTdHJpbmdASlNDQEBRQkU/QVYxMkBJSUBaCi0g
ICAgP3N5bWJvbFRhYmxlR2V0QEpTVmFyaWFibGVPYmplY3RASlNDQEBJQUVfTkFCVklkZW50aWZp
ZXJAMkBBQVZQcm9wZXJ0eURlc2NyaXB0b3JAMkBAWgogICAgID9zeW50aGVzaXplUHJvdG90eXBl
QEpTVmFsdWVASlNDQEBRQkVQQVZKU09iamVjdEAyQFBBVkV4ZWNTdGF0ZUAyQEBaCiAgICAgP3Ro
aXNPYmplY3RARGVidWdnZXJDYWxsRnJhbWVASlNDQEBRQkVQQVZKU09iamVjdEAyQFhaCiAgICAg
P3Rocm93RXJyb3JASlNDQEBZQT9BVkpTVmFsdWVAMUBQQVZFeGVjU3RhdGVAMUBWMjFAQFoKQEAg
LTM0Myw3ICszNDAsNiBAQCBFWFBPUlRTCiAgICAgP3RvU3RyaW5nU2xvd0Nhc2VASlNWYWx1ZUBK
U0NAQEFCRVBBVkpTU3RyaW5nQDJAUEFWRXhlY1N0YXRlQDJAQFoKICAgICA/dG9UaGlzT2JqZWN0
QEpTT2JqZWN0QEpTQ0BAU0FQQVYxMkBQQVZKU0NlbGxAMkBQQVZFeGVjU3RhdGVAMkBAWgogICAg
ID90b1RoaXNPYmplY3RTbG93Q2FzZUBKU1ZhbHVlQEpTQ0BAQUJFUEFWSlNPYmplY3RAMkBQQVZF
eGVjU3RhdGVAMkBAWgotICAgID90b1VJbnQzMkBJZGVudGlmaWVyQEpTQ0BAU0FJQUJWVVN0cmlu
Z0AyQEFBX05AWgogICAgID90cmFuc2ZlckBBcnJheUJ1ZmZlckBXVEZAQFFBRV9OQUFWQXJyYXlC
dWZmZXJDb250ZW50c0AyQEFBVj8kVmVjdG9yQFY/JFJlZlB0ckBWQXJyYXlCdWZmZXJWaWV3QFdU
RkBAQFdURkBAJDBBQEAyQEBaCiAgICAgP3RyeUZhc3RDYWxsb2NAV1RGQEBZQT9BVVRyeU1hbGxv
Y1JldHVyblZhbHVlQDFASUlAWgogICAgID90cnlGYXN0TWFsbG9jQFdURkBAWUE/QVVUcnlNYWxs
b2NSZXR1cm5WYWx1ZUAxQElAWgpJbmRleDogU291cmNlL0phdmFTY3JpcHRDb3JlL0phdmFTY3Jp
cHRDb3JlLnhjb2RlcHJvai9wcm9qZWN0LnBieHByb2oKPT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL0ph
dmFTY3JpcHRDb3JlL0phdmFTY3JpcHRDb3JlLnhjb2RlcHJvai9wcm9qZWN0LnBieHByb2oJKHJl
dmlzaW9uIDExNjY3MCkKKysrIFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9KYXZhU2NyaXB0Q29yZS54
Y29kZXByb2ovcHJvamVjdC5wYnhwcm9qCSh3b3JraW5nIGNvcHkpCkBAIC0zNjIsNiArMzYyLDcg
QEAKIAkJODYwNEY1MDUxNDNDRTFDMjAwQjI5NUY1IC8qIEpTR2xvYmFsVGhpcy5oIGluIEhlYWRl
cnMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gODYwNEY1MDMxNDNDRTFDMTAw
QjI5NUY1IC8qIEpTR2xvYmFsVGhpcy5oICovOyBzZXR0aW5ncyA9IHtBVFRSSUJVVEVTID0gKFBy
aXZhdGUsICk7IH07IH07CiAJCTg2MEJEODAxMTQ4RUE2RjIwMDExMkIyRiAvKiBJbnRyaW5zaWMu
aCBpbiBIZWFkZXJzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IDg2QkY2NDJB
MTQ4REIyQjUwMDRERTM2QSAvKiBJbnRyaW5zaWMuaCAqLzsgc2V0dGluZ3MgPSB7QVRUUklCVVRF
UyA9IChQcml2YXRlLCApOyB9OyB9OwogCQk4NjEyRTRDRDE1MjM4OUVDMDBDODM2QkUgLyogTWF0
Y2hSZXN1bHQuaCBpbiBIZWFkZXJzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9
IDg2MTJFNENCMTUyMjkxODQwMEM4MzZCRSAvKiBNYXRjaFJlc3VsdC5oICovOyBzZXR0aW5ncyA9
IHtBVFRSSUJVVEVTID0gKFByaXZhdGUsICk7IH07IH07CisJCTg2MTU4QUIzMTU1QzhCNDAwMEI0
NUM5QyAvKiBQcm9wZXJ0eU5hbWUuaCBpbiBIZWFkZXJzICovID0ge2lzYSA9IFBCWEJ1aWxkRmls
ZTsgZmlsZVJlZiA9IDg2MTU4QUIyMTU1QzhCM0YwMEI0NUM5QyAvKiBQcm9wZXJ0eU5hbWUuaCAq
Lzsgc2V0dGluZ3MgPSB7QVRUUklCVVRFUyA9IChQcml2YXRlLCApOyB9OyB9OwogCQk4NjNCMjNF
MDBGQzYxMTg5MDA3MDNBQTQgLyogTWFjcm9Bc3NlbWJsZXJDb2RlUmVmLmggaW4gSGVhZGVycyAq
LyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSA4NjNCMjNERjBGQzYwRTYyMDA3MDNB
QTQgLyogTWFjcm9Bc3NlbWJsZXJDb2RlUmVmLmggKi87IHNldHRpbmdzID0ge0FUVFJJQlVURVMg
PSAoUHJpdmF0ZSwgKTsgfTsgfTsKIAkJODYzQzZEOUMxNTIxMTExQTAwNTg1RTRFIC8qIFlhcnJD
YW5vbmljYWxpemVVQ1MyLmNwcCBpbiBTb3VyY2VzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsg
ZmlsZVJlZiA9IDg2M0M2RDk4MTUyMTExMTIwMDU4NUU0RSAvKiBZYXJyQ2Fub25pY2FsaXplVUNT
Mi5jcHAgKi87IH07CiAJCTg2NDJDNTEwMTUxQzA2QTkwMDQ2RDRFRiAvKiBSZWdFeHBDYWNoZWRS
ZXN1bHQuY3BwIGluIFNvdXJjZXMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0g
ODZGNzVFRkIxNTFDMDYyRjAwN0M5QkEzIC8qIFJlZ0V4cENhY2hlZFJlc3VsdC5jcHAgKi87IH07
CkBAIC0xMDIwLDYgKzEwMjEsNyBAQAogCQk4NjA0RjRGMjE0M0E2QzQ0MDBCMjk1RjUgLyogQ2hh
bmdlTG9nICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGxhc3RLbm93bkZpbGVUeXBlID0g
dGV4dDsgcGF0aCA9IENoYW5nZUxvZzsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKIAkJODYw
NEY1MDMxNDNDRTFDMTAwQjI5NUY1IC8qIEpTR2xvYmFsVGhpcy5oICovID0ge2lzYSA9IFBCWEZp
bGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNl
Y29kZS5jLmg7IHBhdGggPSBKU0dsb2JhbFRoaXMuaDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+Ijsg
fTsKIAkJODYxMkU0Q0IxNTIyOTE4NDAwQzgzNkJFIC8qIE1hdGNoUmVzdWx0LmggKi8gPSB7aXNh
ID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUg
PSBzb3VyY2Vjb2RlLmMuaDsgcGF0aCA9IE1hdGNoUmVzdWx0Lmg7IHNvdXJjZVRyZWUgPSAiPGdy
b3VwPiI7IH07CisJCTg2MTU4QUIyMTU1QzhCM0YwMEI0NUM5QyAvKiBQcm9wZXJ0eU5hbWUuaCAq
LyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25G
aWxlVHlwZSA9IHNvdXJjZWNvZGUuYy5oOyBwYXRoID0gUHJvcGVydHlOYW1lLmg7IHNvdXJjZVRy
ZWUgPSAiPGdyb3VwPiI7IH07CiAJCTg2M0IyM0RGMEZDNjBFNjIwMDcwM0FBNCAvKiBNYWNyb0Fz
c2VtYmxlckNvZGVSZWYuaCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2Rp
bmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuYy5oOyBwYXRoID0gTWFjcm9B
c3NlbWJsZXJDb2RlUmVmLmg7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CiAJCTg2M0M2RDk4
MTUyMTExMTIwMDU4NUU0RSAvKiBZYXJyQ2Fub25pY2FsaXplVUNTMi5jcHAgKi8gPSB7aXNhID0g
UEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSBz
b3VyY2Vjb2RlLmNwcC5jcHA7IG5hbWUgPSBZYXJyQ2Fub25pY2FsaXplVUNTMi5jcHA7IHBhdGgg
PSB5YXJyL1lhcnJDYW5vbmljYWxpemVVQ1MyLmNwcDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+Ijsg
fTsKIAkJODYzQzZEOTkxNTIxMTExMjAwNTg1RTRFIC8qIFlhcnJDYW5vbmljYWxpemVVQ1MyLmgg
Ki8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3du
RmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmMuaDsgbmFtZSA9IFlhcnJDYW5vbmljYWxpemVVQ1MyLmg7
IHBhdGggPSB5YXJyL1lhcnJDYW5vbmljYWxpemVVQ1MyLmg7IHNvdXJjZVRyZWUgPSAiPGdyb3Vw
PiI7IH07CkBAIC0xOTM2LDYgKzE5MzgsNyBAQAogCQkJCUE3RkI2MEEzMTAzRjdEQzIwMDE3QTI4
NiAvKiBQcm9wZXJ0eURlc2NyaXB0b3IuY3BwICovLAogCQkJCUE3RkI2MDRCMTAzRjVFQUIwMDE3
QTI4NiAvKiBQcm9wZXJ0eURlc2NyaXB0b3IuaCAqLywKIAkJCQlCQzk1NDM3QzBFQkE3MEZEMDA3
MkI2RDMgLyogUHJvcGVydHlNYXBIYXNoVGFibGUuaCAqLywKKwkJCQk4NjE1OEFCMjE1NUM4QjNG
MDBCNDVDOUMgLyogUHJvcGVydHlOYW1lLmggKi8sCiAJCQkJNjU0MDBDMEYwQTY5QkFGMjAwNTA5
ODg3IC8qIFByb3BlcnR5TmFtZUFycmF5LmNwcCAqLywKIAkJCQk2NTQwMEMxMDBBNjlCQUYyMDA1
MDk4ODcgLyogUHJvcGVydHlOYW1lQXJyYXkuaCAqLywKIAkJCQk2NTYyMUU2QjA4OUU4NTk3MDA3
NjBGMzUgLyogUHJvcGVydHlTbG90LmNwcCAqLywKQEAgLTI1ODAsNiArMjU4Myw3IEBACiAJCQkJ
MEYxRTNBNDcxNTM0Q0JCOTAwMEY5NDU2IC8qIERGR0RvdWJsZUZvcm1hdFN0YXRlLmggaW4gSGVh
ZGVycyAqLywKIAkJCQkxNDE1MDEzMzE1NEJCMTNGMDA1RDhDOTggLyogV2Vha1NldElubGluZXMu
aCBpbiBIZWFkZXJzICovLAogCQkJCTE0ODE2RTFDMTU0Q0M1NkMwMEI4MDU0QyAvKiBCbG9ja0Fs
bG9jYXRvci5oIGluIEhlYWRlcnMgKi8sCisJCQkJODYxNThBQjMxNTVDOEI0MDAwQjQ1QzlDIC8q
IFByb3BlcnR5TmFtZS5oIGluIEhlYWRlcnMgKi8sCiAJCQkpOwogCQkJcnVuT25seUZvckRlcGxv
eW1lbnRQb3N0cHJvY2Vzc2luZyA9IDA7CiAJCX07CkluZGV4OiBTb3VyY2UvSmF2YVNjcmlwdENv
cmUvZGVidWdnZXIvRGVidWdnZXJBY3RpdmF0aW9uLmNwcAo9PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2Uv
SmF2YVNjcmlwdENvcmUvZGVidWdnZXIvRGVidWdnZXJBY3RpdmF0aW9uLmNwcAkocmV2aXNpb24g
MTE2NjY3KQorKysgU291cmNlL0phdmFTY3JpcHRDb3JlL2RlYnVnZ2VyL0RlYnVnZ2VyQWN0aXZh
dGlvbi5jcHAJKHdvcmtpbmcgY29weSkKQEAgLTY1LDI1ICs2NSwyNSBAQCBVU3RyaW5nIERlYnVn
Z2VyQWN0aXZhdGlvbjo6Y2xhc3NOYW1lKGNvCiAgICAgcmV0dXJuIHRoaXNPYmplY3QtPm1fYWN0
aXZhdGlvbi0+bWV0aG9kVGFibGUoKS0+Y2xhc3NOYW1lKHRoaXNPYmplY3QtPm1fYWN0aXZhdGlv
bi5nZXQoKSk7CiB9CiAKLWJvb2wgRGVidWdnZXJBY3RpdmF0aW9uOjpnZXRPd25Qcm9wZXJ0eVNs
b3QoSlNDZWxsKiBjZWxsLCBFeGVjU3RhdGUqIGV4ZWMsIGNvbnN0IElkZW50aWZpZXImIHByb3Bl
cnR5TmFtZSwgUHJvcGVydHlTbG90JiBzbG90KQorYm9vbCBEZWJ1Z2dlckFjdGl2YXRpb246Omdl
dE93blByb3BlcnR5U2xvdChKU0NlbGwqIGNlbGwsIEV4ZWNTdGF0ZSogZXhlYywgUHJvcGVydHlO
YW1lIHByb3BlcnR5TmFtZSwgUHJvcGVydHlTbG90JiBzbG90KQogewogICAgIERlYnVnZ2VyQWN0
aXZhdGlvbiogdGhpc09iamVjdCA9IGpzQ2FzdDxEZWJ1Z2dlckFjdGl2YXRpb24qPihjZWxsKTsK
ICAgICByZXR1cm4gdGhpc09iamVjdC0+bV9hY3RpdmF0aW9uLT5tZXRob2RUYWJsZSgpLT5nZXRP
d25Qcm9wZXJ0eVNsb3QodGhpc09iamVjdC0+bV9hY3RpdmF0aW9uLmdldCgpLCBleGVjLCBwcm9w
ZXJ0eU5hbWUsIHNsb3QpOwogfQogCi12b2lkIERlYnVnZ2VyQWN0aXZhdGlvbjo6cHV0KEpTQ2Vs
bCogY2VsbCwgRXhlY1N0YXRlKiBleGVjLCBjb25zdCBJZGVudGlmaWVyJiBwcm9wZXJ0eU5hbWUs
IEpTVmFsdWUgdmFsdWUsIFB1dFByb3BlcnR5U2xvdCYgc2xvdCkKK3ZvaWQgRGVidWdnZXJBY3Rp
dmF0aW9uOjpwdXQoSlNDZWxsKiBjZWxsLCBFeGVjU3RhdGUqIGV4ZWMsIFByb3BlcnR5TmFtZSBw
cm9wZXJ0eU5hbWUsIEpTVmFsdWUgdmFsdWUsIFB1dFByb3BlcnR5U2xvdCYgc2xvdCkKIHsKICAg
ICBEZWJ1Z2dlckFjdGl2YXRpb24qIHRoaXNPYmplY3QgPSBqc0Nhc3Q8RGVidWdnZXJBY3RpdmF0
aW9uKj4oY2VsbCk7CiAgICAgdGhpc09iamVjdC0+bV9hY3RpdmF0aW9uLT5tZXRob2RUYWJsZSgp
LT5wdXQodGhpc09iamVjdC0+bV9hY3RpdmF0aW9uLmdldCgpLCBleGVjLCBwcm9wZXJ0eU5hbWUs
IHZhbHVlLCBzbG90KTsKIH0KIAotdm9pZCBEZWJ1Z2dlckFjdGl2YXRpb246OnB1dERpcmVjdFZp
cnR1YWwoSlNPYmplY3QqIG9iamVjdCwgRXhlY1N0YXRlKiBleGVjLCBjb25zdCBJZGVudGlmaWVy
JiBwcm9wZXJ0eU5hbWUsIEpTVmFsdWUgdmFsdWUsIHVuc2lnbmVkIGF0dHJpYnV0ZXMpCit2b2lk
IERlYnVnZ2VyQWN0aXZhdGlvbjo6cHV0RGlyZWN0VmlydHVhbChKU09iamVjdCogb2JqZWN0LCBF
eGVjU3RhdGUqIGV4ZWMsIFByb3BlcnR5TmFtZSBwcm9wZXJ0eU5hbWUsIEpTVmFsdWUgdmFsdWUs
IHVuc2lnbmVkIGF0dHJpYnV0ZXMpCiB7CiAgICAgRGVidWdnZXJBY3RpdmF0aW9uKiB0aGlzT2Jq
ZWN0ID0ganNDYXN0PERlYnVnZ2VyQWN0aXZhdGlvbio+KG9iamVjdCk7CiAgICAgdGhpc09iamVj
dC0+bV9hY3RpdmF0aW9uLT5tZXRob2RUYWJsZSgpLT5wdXREaXJlY3RWaXJ0dWFsKHRoaXNPYmpl
Y3QtPm1fYWN0aXZhdGlvbi5nZXQoKSwgZXhlYywgcHJvcGVydHlOYW1lLCB2YWx1ZSwgYXR0cmli
dXRlcyk7CiB9CiAKLWJvb2wgRGVidWdnZXJBY3RpdmF0aW9uOjpkZWxldGVQcm9wZXJ0eShKU0Nl
bGwqIGNlbGwsIEV4ZWNTdGF0ZSogZXhlYywgY29uc3QgSWRlbnRpZmllciYgcHJvcGVydHlOYW1l
KQorYm9vbCBEZWJ1Z2dlckFjdGl2YXRpb246OmRlbGV0ZVByb3BlcnR5KEpTQ2VsbCogY2VsbCwg
RXhlY1N0YXRlKiBleGVjLCBQcm9wZXJ0eU5hbWUgcHJvcGVydHlOYW1lKQogewogICAgIERlYnVn
Z2VyQWN0aXZhdGlvbiogdGhpc09iamVjdCA9IGpzQ2FzdDxEZWJ1Z2dlckFjdGl2YXRpb24qPihj
ZWxsKTsKICAgICByZXR1cm4gdGhpc09iamVjdC0+bV9hY3RpdmF0aW9uLT5tZXRob2RUYWJsZSgp
LT5kZWxldGVQcm9wZXJ0eSh0aGlzT2JqZWN0LT5tX2FjdGl2YXRpb24uZ2V0KCksIGV4ZWMsIHBy
b3BlcnR5TmFtZSk7CkBAIC05NSwxMyArOTUsMTMgQEAgdm9pZCBEZWJ1Z2dlckFjdGl2YXRpb246
OmdldE93blByb3BlcnR5TgogICAgIHRoaXNPYmplY3QtPm1fYWN0aXZhdGlvbi0+bWV0aG9kVGFi
bGUoKS0+Z2V0UHJvcGVydHlOYW1lcyh0aGlzT2JqZWN0LT5tX2FjdGl2YXRpb24uZ2V0KCksIGV4
ZWMsIHByb3BlcnR5TmFtZXMsIG1vZGUpOwogfQogCi1ib29sIERlYnVnZ2VyQWN0aXZhdGlvbjo6
Z2V0T3duUHJvcGVydHlEZXNjcmlwdG9yKEpTT2JqZWN0KiBvYmplY3QsIEV4ZWNTdGF0ZSogZXhl
YywgY29uc3QgSWRlbnRpZmllciYgcHJvcGVydHlOYW1lLCBQcm9wZXJ0eURlc2NyaXB0b3ImIGRl
c2NyaXB0b3IpCitib29sIERlYnVnZ2VyQWN0aXZhdGlvbjo6Z2V0T3duUHJvcGVydHlEZXNjcmlw
dG9yKEpTT2JqZWN0KiBvYmplY3QsIEV4ZWNTdGF0ZSogZXhlYywgUHJvcGVydHlOYW1lIHByb3Bl
cnR5TmFtZSwgUHJvcGVydHlEZXNjcmlwdG9yJiBkZXNjcmlwdG9yKQogewogICAgIERlYnVnZ2Vy
QWN0aXZhdGlvbiogdGhpc09iamVjdCA9IGpzQ2FzdDxEZWJ1Z2dlckFjdGl2YXRpb24qPihvYmpl
Y3QpOwogICAgIHJldHVybiB0aGlzT2JqZWN0LT5tX2FjdGl2YXRpb24tPm1ldGhvZFRhYmxlKCkt
PmdldE93blByb3BlcnR5RGVzY3JpcHRvcih0aGlzT2JqZWN0LT5tX2FjdGl2YXRpb24uZ2V0KCks
IGV4ZWMsIHByb3BlcnR5TmFtZSwgZGVzY3JpcHRvcik7CiB9CiAKLWJvb2wgRGVidWdnZXJBY3Rp
dmF0aW9uOjpkZWZpbmVPd25Qcm9wZXJ0eShKU09iamVjdCogb2JqZWN0LCBFeGVjU3RhdGUqIGV4
ZWMsIGNvbnN0IElkZW50aWZpZXImIHByb3BlcnR5TmFtZSwgUHJvcGVydHlEZXNjcmlwdG9yJiBk
ZXNjcmlwdG9yLCBib29sIHNob3VsZFRocm93KQorYm9vbCBEZWJ1Z2dlckFjdGl2YXRpb246OmRl
ZmluZU93blByb3BlcnR5KEpTT2JqZWN0KiBvYmplY3QsIEV4ZWNTdGF0ZSogZXhlYywgUHJvcGVy
dHlOYW1lIHByb3BlcnR5TmFtZSwgUHJvcGVydHlEZXNjcmlwdG9yJiBkZXNjcmlwdG9yLCBib29s
IHNob3VsZFRocm93KQogewogICAgIERlYnVnZ2VyQWN0aXZhdGlvbiogdGhpc09iamVjdCA9IGpz
Q2FzdDxEZWJ1Z2dlckFjdGl2YXRpb24qPihvYmplY3QpOwogICAgIHJldHVybiB0aGlzT2JqZWN0
LT5tX2FjdGl2YXRpb24tPm1ldGhvZFRhYmxlKCktPmRlZmluZU93blByb3BlcnR5KHRoaXNPYmpl
Y3QtPm1fYWN0aXZhdGlvbi5nZXQoKSwgZXhlYywgcHJvcGVydHlOYW1lLCBkZXNjcmlwdG9yLCBz
aG91bGRUaHJvdyk7CkluZGV4OiBTb3VyY2UvSmF2YVNjcmlwdENvcmUvZGVidWdnZXIvRGVidWdn
ZXJBY3RpdmF0aW9uLmgKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL0phdmFTY3JpcHRDb3JlL2RlYnVn
Z2VyL0RlYnVnZ2VyQWN0aXZhdGlvbi5oCShyZXZpc2lvbiAxMTY2NjcpCisrKyBTb3VyY2UvSmF2
YVNjcmlwdENvcmUvZGVidWdnZXIvRGVidWdnZXJBY3RpdmF0aW9uLmgJKHdvcmtpbmcgY29weSkK
QEAgLTQzLDEzICs0MywxMyBAQCBuYW1lc3BhY2UgSlNDIHsKIAogICAgICAgICBzdGF0aWMgdm9p
ZCB2aXNpdENoaWxkcmVuKEpTQ2VsbCosIFNsb3RWaXNpdG9yJik7CiAgICAgICAgIHN0YXRpYyBV
U3RyaW5nIGNsYXNzTmFtZShjb25zdCBKU09iamVjdCopOwotICAgICAgICBzdGF0aWMgYm9vbCBn
ZXRPd25Qcm9wZXJ0eVNsb3QoSlNDZWxsKiwgRXhlY1N0YXRlKiwgY29uc3QgSWRlbnRpZmllciYg
cHJvcGVydHlOYW1lLCBQcm9wZXJ0eVNsb3QmKTsKLSAgICAgICAgc3RhdGljIHZvaWQgcHV0KEpT
Q2VsbCosIEV4ZWNTdGF0ZSosIGNvbnN0IElkZW50aWZpZXImIHByb3BlcnR5TmFtZSwgSlNWYWx1
ZSwgUHV0UHJvcGVydHlTbG90Jik7Ci0gICAgICAgIHN0YXRpYyB2b2lkIHB1dERpcmVjdFZpcnR1
YWwoSlNPYmplY3QqLCBFeGVjU3RhdGUqLCBjb25zdCBJZGVudGlmaWVyJiBwcm9wZXJ0eU5hbWUs
IEpTVmFsdWUsIHVuc2lnbmVkIGF0dHJpYnV0ZXMpOwotICAgICAgICBzdGF0aWMgYm9vbCBkZWxl
dGVQcm9wZXJ0eShKU0NlbGwqLCBFeGVjU3RhdGUqLCBjb25zdCBJZGVudGlmaWVyJiBwcm9wZXJ0
eU5hbWUpOworICAgICAgICBzdGF0aWMgYm9vbCBnZXRPd25Qcm9wZXJ0eVNsb3QoSlNDZWxsKiwg
RXhlY1N0YXRlKiwgUHJvcGVydHlOYW1lLCBQcm9wZXJ0eVNsb3QmKTsKKyAgICAgICAgc3RhdGlj
IHZvaWQgcHV0KEpTQ2VsbCosIEV4ZWNTdGF0ZSosIFByb3BlcnR5TmFtZSwgSlNWYWx1ZSwgUHV0
UHJvcGVydHlTbG90Jik7CisgICAgICAgIHN0YXRpYyB2b2lkIHB1dERpcmVjdFZpcnR1YWwoSlNP
YmplY3QqLCBFeGVjU3RhdGUqLCBQcm9wZXJ0eU5hbWUsIEpTVmFsdWUsIHVuc2lnbmVkIGF0dHJp
YnV0ZXMpOworICAgICAgICBzdGF0aWMgYm9vbCBkZWxldGVQcm9wZXJ0eShKU0NlbGwqLCBFeGVj
U3RhdGUqLCBQcm9wZXJ0eU5hbWUpOwogICAgICAgICBzdGF0aWMgdm9pZCBnZXRPd25Qcm9wZXJ0
eU5hbWVzKEpTT2JqZWN0KiwgRXhlY1N0YXRlKiwgUHJvcGVydHlOYW1lQXJyYXkmLCBFbnVtZXJh
dGlvbk1vZGUpOwotICAgICAgICBzdGF0aWMgYm9vbCBnZXRPd25Qcm9wZXJ0eURlc2NyaXB0b3Io
SlNPYmplY3QqLCBFeGVjU3RhdGUqLCBjb25zdCBJZGVudGlmaWVyJiwgUHJvcGVydHlEZXNjcmlw
dG9yJik7Ci0gICAgICAgIHN0YXRpYyBib29sIGRlZmluZU93blByb3BlcnR5KEpTT2JqZWN0Kiwg
RXhlY1N0YXRlKiwgY29uc3QgSWRlbnRpZmllciYgcHJvcGVydHlOYW1lLCBQcm9wZXJ0eURlc2Ny
aXB0b3ImLCBib29sIHNob3VsZFRocm93KTsKKyAgICAgICAgc3RhdGljIGJvb2wgZ2V0T3duUHJv
cGVydHlEZXNjcmlwdG9yKEpTT2JqZWN0KiwgRXhlY1N0YXRlKiwgUHJvcGVydHlOYW1lLCBQcm9w
ZXJ0eURlc2NyaXB0b3ImKTsKKyAgICAgICAgc3RhdGljIGJvb2wgZGVmaW5lT3duUHJvcGVydHko
SlNPYmplY3QqLCBFeGVjU3RhdGUqLCBQcm9wZXJ0eU5hbWUsIFByb3BlcnR5RGVzY3JpcHRvciYs
IGJvb2wgc2hvdWxkVGhyb3cpOwogCiAgICAgICAgIEpTX0VYUE9SVERBVEEgc3RhdGljIGNvbnN0
IENsYXNzSW5mbyBzX2luZm87CiAKSW5kZXg6IFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1l
L0FyZ3VtZW50cy5jcHAKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRp
bWUvQXJndW1lbnRzLmNwcAkocmV2aXNpb24gMTE2NjY3KQorKysgU291cmNlL0phdmFTY3JpcHRD
b3JlL3J1bnRpbWUvQXJndW1lbnRzLmNwcAkod29ya2luZyBjb3B5KQpAQCAtMTI0LDEyICsxMjQs
MTIgQEAgdm9pZCBBcmd1bWVudHM6OmNyZWF0ZVN0cmljdE1vZGVDYWxsZWVJZgogICAgIG1ldGhv
ZFRhYmxlKCktPmRlZmluZU93blByb3BlcnR5KHRoaXMsIGV4ZWMsIGV4ZWMtPnByb3BlcnR5TmFt
ZXMoKS5jYWxsZWUsIGRlc2NyaXB0b3IsIGZhbHNlKTsKIH0KIAotYm9vbCBBcmd1bWVudHM6Omdl
dE93blByb3BlcnR5U2xvdChKU0NlbGwqIGNlbGwsIEV4ZWNTdGF0ZSogZXhlYywgY29uc3QgSWRl
bnRpZmllciYgcHJvcGVydHlOYW1lLCBQcm9wZXJ0eVNsb3QmIHNsb3QpCitib29sIEFyZ3VtZW50
czo6Z2V0T3duUHJvcGVydHlTbG90KEpTQ2VsbCogY2VsbCwgRXhlY1N0YXRlKiBleGVjLCBQcm9w
ZXJ0eU5hbWUgcHJvcGVydHlOYW1lLCBQcm9wZXJ0eVNsb3QmIHNsb3QpCiB7CiAgICAgQXJndW1l
bnRzKiB0aGlzT2JqZWN0ID0ganNDYXN0PEFyZ3VtZW50cyo+KGNlbGwpOwotICAgIGJvb2wgaXNB
cnJheUluZGV4OwotICAgIHVuc2lnbmVkIGkgPSBwcm9wZXJ0eU5hbWUudG9BcnJheUluZGV4KGlz
QXJyYXlJbmRleCk7Ci0gICAgaWYgKGlzQXJyYXlJbmRleCAmJiBpIDwgdGhpc09iamVjdC0+ZC0+
bnVtQXJndW1lbnRzICYmICghdGhpc09iamVjdC0+ZC0+ZGVsZXRlZEFyZ3VtZW50cyB8fCAhdGhp
c09iamVjdC0+ZC0+ZGVsZXRlZEFyZ3VtZW50c1tpXSkpIHsKKyAgICB1bnNpZ25lZCBpID0gcHJv
cGVydHlOYW1lLmFzSW5kZXgoKTsKKyAgICBpZiAoaSA8IHRoaXNPYmplY3QtPmQtPm51bUFyZ3Vt
ZW50cyAmJiAoIXRoaXNPYmplY3QtPmQtPmRlbGV0ZWRBcmd1bWVudHMgfHwgIXRoaXNPYmplY3Qt
PmQtPmRlbGV0ZWRBcmd1bWVudHNbaV0pKSB7CisgICAgICAgIEFTU0VSVChpIDwgUHJvcGVydHlO
YW1lOjpOb3RBbkluZGV4KTsKICAgICAgICAgc2xvdC5zZXRWYWx1ZSh0aGlzT2JqZWN0LT5hcmd1
bWVudChpKS5nZXQoKSk7CiAgICAgICAgIHJldHVybiB0cnVlOwogICAgIH0KQEAgLTE1MywxMiAr
MTUzLDEyIEBAIGJvb2wgQXJndW1lbnRzOjpnZXRPd25Qcm9wZXJ0eVNsb3QoSlNDZWwKICAgICBy
ZXR1cm4gSlNPYmplY3Q6OmdldE93blByb3BlcnR5U2xvdCh0aGlzT2JqZWN0LCBleGVjLCBwcm9w
ZXJ0eU5hbWUsIHNsb3QpOwogfQogCi1ib29sIEFyZ3VtZW50czo6Z2V0T3duUHJvcGVydHlEZXNj
cmlwdG9yKEpTT2JqZWN0KiBvYmplY3QsIEV4ZWNTdGF0ZSogZXhlYywgY29uc3QgSWRlbnRpZmll
ciYgcHJvcGVydHlOYW1lLCBQcm9wZXJ0eURlc2NyaXB0b3ImIGRlc2NyaXB0b3IpCitib29sIEFy
Z3VtZW50czo6Z2V0T3duUHJvcGVydHlEZXNjcmlwdG9yKEpTT2JqZWN0KiBvYmplY3QsIEV4ZWNT
dGF0ZSogZXhlYywgUHJvcGVydHlOYW1lIHByb3BlcnR5TmFtZSwgUHJvcGVydHlEZXNjcmlwdG9y
JiBkZXNjcmlwdG9yKQogewogICAgIEFyZ3VtZW50cyogdGhpc09iamVjdCA9IGpzQ2FzdDxBcmd1
bWVudHMqPihvYmplY3QpOwotICAgIGJvb2wgaXNBcnJheUluZGV4OwotICAgIHVuc2lnbmVkIGkg
PSBwcm9wZXJ0eU5hbWUudG9BcnJheUluZGV4KGlzQXJyYXlJbmRleCk7Ci0gICAgaWYgKGlzQXJy
YXlJbmRleCAmJiBpIDwgdGhpc09iamVjdC0+ZC0+bnVtQXJndW1lbnRzICYmICghdGhpc09iamVj
dC0+ZC0+ZGVsZXRlZEFyZ3VtZW50cyB8fCAhdGhpc09iamVjdC0+ZC0+ZGVsZXRlZEFyZ3VtZW50
c1tpXSkpIHsKKyAgICB1bnNpZ25lZCBpID0gcHJvcGVydHlOYW1lLmFzSW5kZXgoKTsKKyAgICBp
ZiAoaSA8IHRoaXNPYmplY3QtPmQtPm51bUFyZ3VtZW50cyAmJiAoIXRoaXNPYmplY3QtPmQtPmRl
bGV0ZWRBcmd1bWVudHMgfHwgIXRoaXNPYmplY3QtPmQtPmRlbGV0ZWRBcmd1bWVudHNbaV0pKSB7
CisgICAgICAgIEFTU0VSVChpIDwgUHJvcGVydHlOYW1lOjpOb3RBbkluZGV4KTsKICAgICAgICAg
ZGVzY3JpcHRvci5zZXREZXNjcmlwdG9yKHRoaXNPYmplY3QtPmFyZ3VtZW50KGkpLmdldCgpLCBO
b25lKTsKICAgICAgICAgcmV0dXJuIHRydWU7CiAgICAgfQpAQCAtMjA4LDEyICsyMDgsMTIgQEAg
dm9pZCBBcmd1bWVudHM6OnB1dEJ5SW5kZXgoSlNDZWxsKiBjZWxsLAogICAgIEpTT2JqZWN0Ojpw
dXQodGhpc09iamVjdCwgZXhlYywgSWRlbnRpZmllcihleGVjLCBVU3RyaW5nOjpudW1iZXIoaSkp
LCB2YWx1ZSwgc2xvdCk7CiB9CiAKLXZvaWQgQXJndW1lbnRzOjpwdXQoSlNDZWxsKiBjZWxsLCBF
eGVjU3RhdGUqIGV4ZWMsIGNvbnN0IElkZW50aWZpZXImIHByb3BlcnR5TmFtZSwgSlNWYWx1ZSB2
YWx1ZSwgUHV0UHJvcGVydHlTbG90JiBzbG90KQordm9pZCBBcmd1bWVudHM6OnB1dChKU0NlbGwq
IGNlbGwsIEV4ZWNTdGF0ZSogZXhlYywgUHJvcGVydHlOYW1lIHByb3BlcnR5TmFtZSwgSlNWYWx1
ZSB2YWx1ZSwgUHV0UHJvcGVydHlTbG90JiBzbG90KQogewogICAgIEFyZ3VtZW50cyogdGhpc09i
amVjdCA9IGpzQ2FzdDxBcmd1bWVudHMqPihjZWxsKTsKLSAgICBib29sIGlzQXJyYXlJbmRleDsK
LSAgICB1bnNpZ25lZCBpID0gcHJvcGVydHlOYW1lLnRvQXJyYXlJbmRleChpc0FycmF5SW5kZXgp
OwotICAgIGlmIChpc0FycmF5SW5kZXggJiYgaSA8IHRoaXNPYmplY3QtPmQtPm51bUFyZ3VtZW50
cyAmJiAoIXRoaXNPYmplY3QtPmQtPmRlbGV0ZWRBcmd1bWVudHMgfHwgIXRoaXNPYmplY3QtPmQt
PmRlbGV0ZWRBcmd1bWVudHNbaV0pKSB7CisgICAgdW5zaWduZWQgaSA9IHByb3BlcnR5TmFtZS5h
c0luZGV4KCk7CisgICAgaWYgKGkgPCB0aGlzT2JqZWN0LT5kLT5udW1Bcmd1bWVudHMgJiYgKCF0
aGlzT2JqZWN0LT5kLT5kZWxldGVkQXJndW1lbnRzIHx8ICF0aGlzT2JqZWN0LT5kLT5kZWxldGVk
QXJndW1lbnRzW2ldKSkgeworICAgICAgICBBU1NFUlQoaSA8IFByb3BlcnR5TmFtZTo6Tm90QW5J
bmRleCk7CiAgICAgICAgIHRoaXNPYmplY3QtPmFyZ3VtZW50KGkpLnNldChleGVjLT5nbG9iYWxE
YXRhKCksIHRoaXNPYmplY3QsIHZhbHVlKTsKICAgICAgICAgcmV0dXJuOwogICAgIH0KQEAgLTI1
OSwxNSArMjU5LDE1IEBAIGJvb2wgQXJndW1lbnRzOjpkZWxldGVQcm9wZXJ0eUJ5SW5kZXgoSlMK
ICAgICByZXR1cm4gSlNPYmplY3Q6OmRlbGV0ZVByb3BlcnR5KHRoaXNPYmplY3QsIGV4ZWMsIElk
ZW50aWZpZXIoZXhlYywgVVN0cmluZzo6bnVtYmVyKGkpKSk7CiB9CiAKLWJvb2wgQXJndW1lbnRz
OjpkZWxldGVQcm9wZXJ0eShKU0NlbGwqIGNlbGwsIEV4ZWNTdGF0ZSogZXhlYywgY29uc3QgSWRl
bnRpZmllciYgcHJvcGVydHlOYW1lKSAKK2Jvb2wgQXJndW1lbnRzOjpkZWxldGVQcm9wZXJ0eShK
U0NlbGwqIGNlbGwsIEV4ZWNTdGF0ZSogZXhlYywgUHJvcGVydHlOYW1lIHByb3BlcnR5TmFtZSkg
CiB7CiAgICAgaWYgKGV4ZWMtPmdsb2JhbERhdGEoKS5pc0luRGVmaW5lT3duUHJvcGVydHkoKSkK
ICAgICAgICAgcmV0dXJuIEJhc2U6OmRlbGV0ZVByb3BlcnR5KGNlbGwsIGV4ZWMsIHByb3BlcnR5
TmFtZSk7CiAKICAgICBBcmd1bWVudHMqIHRoaXNPYmplY3QgPSBqc0Nhc3Q8QXJndW1lbnRzKj4o
Y2VsbCk7Ci0gICAgYm9vbCBpc0FycmF5SW5kZXg7Ci0gICAgdW5zaWduZWQgaSA9IHByb3BlcnR5
TmFtZS50b0FycmF5SW5kZXgoaXNBcnJheUluZGV4KTsKLSAgICBpZiAoaXNBcnJheUluZGV4ICYm
IGkgPCB0aGlzT2JqZWN0LT5kLT5udW1Bcmd1bWVudHMpIHsKKyAgICB1bnNpZ25lZCBpID0gcHJv
cGVydHlOYW1lLmFzSW5kZXgoKTsKKyAgICBpZiAoaSA8IHRoaXNPYmplY3QtPmQtPm51bUFyZ3Vt
ZW50cykgeworICAgICAgICBBU1NFUlQoaSA8IFByb3BlcnR5TmFtZTo6Tm90QW5JbmRleCk7CiAg
ICAgICAgIGlmICghQmFzZTo6ZGVsZXRlUHJvcGVydHkoY2VsbCwgZXhlYywgcHJvcGVydHlOYW1l
KSkKICAgICAgICAgICAgIHJldHVybiBmYWxzZTsKIApAQCAtMzAwLDEyICszMDAsMTIgQEAgYm9v
bCBBcmd1bWVudHM6OmRlbGV0ZVByb3BlcnR5KEpTQ2VsbCogYwogICAgIHJldHVybiBKU09iamVj
dDo6ZGVsZXRlUHJvcGVydHkodGhpc09iamVjdCwgZXhlYywgcHJvcGVydHlOYW1lKTsKIH0KIAot
Ym9vbCBBcmd1bWVudHM6OmRlZmluZU93blByb3BlcnR5KEpTT2JqZWN0KiBvYmplY3QsIEV4ZWNT
dGF0ZSogZXhlYywgY29uc3QgSWRlbnRpZmllciYgcHJvcGVydHlOYW1lLCBQcm9wZXJ0eURlc2Ny
aXB0b3ImIGRlc2NyaXB0b3IsIGJvb2wgc2hvdWxkVGhyb3cpCitib29sIEFyZ3VtZW50czo6ZGVm
aW5lT3duUHJvcGVydHkoSlNPYmplY3QqIG9iamVjdCwgRXhlY1N0YXRlKiBleGVjLCBQcm9wZXJ0
eU5hbWUgcHJvcGVydHlOYW1lLCBQcm9wZXJ0eURlc2NyaXB0b3ImIGRlc2NyaXB0b3IsIGJvb2wg
c2hvdWxkVGhyb3cpCiB7CiAgICAgQXJndW1lbnRzKiB0aGlzT2JqZWN0ID0ganNDYXN0PEFyZ3Vt
ZW50cyo+KG9iamVjdCk7Ci0gICAgYm9vbCBpc0FycmF5SW5kZXg7Ci0gICAgdW5zaWduZWQgaSA9
IHByb3BlcnR5TmFtZS50b0FycmF5SW5kZXgoaXNBcnJheUluZGV4KTsKLSAgICBpZiAoaXNBcnJh
eUluZGV4ICYmIGkgPCB0aGlzT2JqZWN0LT5kLT5udW1Bcmd1bWVudHMpIHsKKyAgICB1bnNpZ25l
ZCBpID0gcHJvcGVydHlOYW1lLmFzSW5kZXgoKTsKKyAgICBpZiAoaSA8IHRoaXNPYmplY3QtPmQt
Pm51bUFyZ3VtZW50cykgeworICAgICAgICBBU1NFUlQoaSA8IFByb3BlcnR5TmFtZTo6Tm90QW5J
bmRleCk7CiAgICAgICAgIC8vIElmIHRoZSBwcm9wZXJ0eSBpcyBub3QgeWV0IHByZXNlbnQgb24g
dGhlIG9iamVjdCwgYW5kIGlzIG5vdCB5ZXQgbWFya2VkIGFzIGRlbGV0ZWQsIHRoZW4gYWRkIGl0
IG5vdy4KICAgICAgICAgUHJvcGVydHlTbG90IHNsb3Q7CiAgICAgICAgIGlmICgoIXRoaXNPYmpl
Y3QtPmQtPmRlbGV0ZWRBcmd1bWVudHMgfHwgIXRoaXNPYmplY3QtPmQtPmRlbGV0ZWRBcmd1bWVu
dHNbaV0pICYmICFKU09iamVjdDo6Z2V0T3duUHJvcGVydHlTbG90KHRoaXNPYmplY3QsIGV4ZWMs
IHByb3BlcnR5TmFtZSwgc2xvdCkpCkluZGV4OiBTb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGlt
ZS9Bcmd1bWVudHMuaAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGlt
ZS9Bcmd1bWVudHMuaAkocmV2aXNpb24gMTE2NjY3KQorKysgU291cmNlL0phdmFTY3JpcHRDb3Jl
L3J1bnRpbWUvQXJndW1lbnRzLmgJKHdvcmtpbmcgY29weSkKQEAgLTEwOSwxNSArMTA5LDE1IEBA
IG5hbWVzcGFjZSBKU0MgewogCiAgICAgcHJpdmF0ZToKICAgICAgICAgc3RhdGljIHZvaWQgZGVz
dHJveShKU0NlbGwqKTsKLSAgICAgICAgc3RhdGljIGJvb2wgZ2V0T3duUHJvcGVydHlTbG90KEpT
Q2VsbCosIEV4ZWNTdGF0ZSosIGNvbnN0IElkZW50aWZpZXImIHByb3BlcnR5TmFtZSwgUHJvcGVy
dHlTbG90Jik7CisgICAgICAgIHN0YXRpYyBib29sIGdldE93blByb3BlcnR5U2xvdChKU0NlbGwq
LCBFeGVjU3RhdGUqLCBQcm9wZXJ0eU5hbWUsIFByb3BlcnR5U2xvdCYpOwogICAgICAgICBzdGF0
aWMgYm9vbCBnZXRPd25Qcm9wZXJ0eVNsb3RCeUluZGV4KEpTQ2VsbCosIEV4ZWNTdGF0ZSosIHVu
c2lnbmVkIHByb3BlcnR5TmFtZSwgUHJvcGVydHlTbG90Jik7Ci0gICAgICAgIHN0YXRpYyBib29s
IGdldE93blByb3BlcnR5RGVzY3JpcHRvcihKU09iamVjdCosIEV4ZWNTdGF0ZSosIGNvbnN0IElk
ZW50aWZpZXImLCBQcm9wZXJ0eURlc2NyaXB0b3ImKTsKKyAgICAgICAgc3RhdGljIGJvb2wgZ2V0
T3duUHJvcGVydHlEZXNjcmlwdG9yKEpTT2JqZWN0KiwgRXhlY1N0YXRlKiwgUHJvcGVydHlOYW1l
LCBQcm9wZXJ0eURlc2NyaXB0b3ImKTsKICAgICAgICAgc3RhdGljIHZvaWQgZ2V0T3duUHJvcGVy
dHlOYW1lcyhKU09iamVjdCosIEV4ZWNTdGF0ZSosIFByb3BlcnR5TmFtZUFycmF5JiwgRW51bWVy
YXRpb25Nb2RlKTsKLSAgICAgICAgc3RhdGljIHZvaWQgcHV0KEpTQ2VsbCosIEV4ZWNTdGF0ZSos
IGNvbnN0IElkZW50aWZpZXImIHByb3BlcnR5TmFtZSwgSlNWYWx1ZSwgUHV0UHJvcGVydHlTbG90
Jik7CisgICAgICAgIHN0YXRpYyB2b2lkIHB1dChKU0NlbGwqLCBFeGVjU3RhdGUqLCBQcm9wZXJ0
eU5hbWUsIEpTVmFsdWUsIFB1dFByb3BlcnR5U2xvdCYpOwogICAgICAgICBzdGF0aWMgdm9pZCBw
dXRCeUluZGV4KEpTQ2VsbCosIEV4ZWNTdGF0ZSosIHVuc2lnbmVkIHByb3BlcnR5TmFtZSwgSlNW
YWx1ZSwgYm9vbCBzaG91bGRUaHJvdyk7Ci0gICAgICAgIHN0YXRpYyBib29sIGRlbGV0ZVByb3Bl
cnR5KEpTQ2VsbCosIEV4ZWNTdGF0ZSosIGNvbnN0IElkZW50aWZpZXImIHByb3BlcnR5TmFtZSk7
CisgICAgICAgIHN0YXRpYyBib29sIGRlbGV0ZVByb3BlcnR5KEpTQ2VsbCosIEV4ZWNTdGF0ZSos
IFByb3BlcnR5TmFtZSk7CiAgICAgICAgIHN0YXRpYyBib29sIGRlbGV0ZVByb3BlcnR5QnlJbmRl
eChKU0NlbGwqLCBFeGVjU3RhdGUqLCB1bnNpZ25lZCBwcm9wZXJ0eU5hbWUpOwotICAgICAgICBz
dGF0aWMgYm9vbCBkZWZpbmVPd25Qcm9wZXJ0eShKU09iamVjdCosIEV4ZWNTdGF0ZSosIGNvbnN0
IElkZW50aWZpZXImIHByb3BlcnR5TmFtZSwgUHJvcGVydHlEZXNjcmlwdG9yJiwgYm9vbCBzaG91
bGRUaHJvdyk7CisgICAgICAgIHN0YXRpYyBib29sIGRlZmluZU93blByb3BlcnR5KEpTT2JqZWN0
KiwgRXhlY1N0YXRlKiwgUHJvcGVydHlOYW1lLCBQcm9wZXJ0eURlc2NyaXB0b3ImLCBib29sIHNo
b3VsZFRocm93KTsKICAgICAgICAgdm9pZCBjcmVhdGVTdHJpY3RNb2RlQ2FsbGVySWZOZWNlc3Nh
cnkoRXhlY1N0YXRlKik7CiAgICAgICAgIHZvaWQgY3JlYXRlU3RyaWN0TW9kZUNhbGxlZUlmTmVj
ZXNzYXJ5KEV4ZWNTdGF0ZSopOwogCkluZGV4OiBTb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGlt
ZS9BcnJheUNvbnN0cnVjdG9yLmNwcAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvSmF2YVNjcmlwdENv
cmUvcnVudGltZS9BcnJheUNvbnN0cnVjdG9yLmNwcAkocmV2aXNpb24gMTE2NjY3KQorKysgU291
cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvQXJyYXlDb25zdHJ1Y3Rvci5jcHAJKHdvcmtpbmcg
Y29weSkKQEAgLTYwLDE3ICs2MCwxNyBAQCBBcnJheUNvbnN0cnVjdG9yOjpBcnJheUNvbnN0cnVj
dG9yKEpTR2xvCiAKIHZvaWQgQXJyYXlDb25zdHJ1Y3Rvcjo6ZmluaXNoQ3JlYXRpb24oRXhlY1N0
YXRlKiBleGVjLCBBcnJheVByb3RvdHlwZSogYXJyYXlQcm90b3R5cGUpCiB7Ci0gICAgQmFzZTo6
ZmluaXNoQ3JlYXRpb24oZXhlYy0+Z2xvYmFsRGF0YSgpLCBJZGVudGlmaWVyKGV4ZWMsIGFycmF5
UHJvdG90eXBlLT5jbGFzc0luZm8oKS0+Y2xhc3NOYW1lKSk7CisgICAgQmFzZTo6ZmluaXNoQ3Jl
YXRpb24oZXhlYy0+Z2xvYmFsRGF0YSgpLCBhcnJheVByb3RvdHlwZS0+Y2xhc3NJbmZvKCktPmNs
YXNzTmFtZSk7CiAgICAgcHV0RGlyZWN0V2l0aG91dFRyYW5zaXRpb24oZXhlYy0+Z2xvYmFsRGF0
YSgpLCBleGVjLT5wcm9wZXJ0eU5hbWVzKCkucHJvdG90eXBlLCBhcnJheVByb3RvdHlwZSwgRG9u
dEVudW0gfCBEb250RGVsZXRlIHwgUmVhZE9ubHkpOwogICAgIHB1dERpcmVjdFdpdGhvdXRUcmFu
c2l0aW9uKGV4ZWMtPmdsb2JhbERhdGEoKSwgZXhlYy0+cHJvcGVydHlOYW1lcygpLmxlbmd0aCwg
anNOdW1iZXIoMSksIFJlYWRPbmx5IHwgRG9udEVudW0gfCBEb250RGVsZXRlKTsKIH0KIAotYm9v
bCBBcnJheUNvbnN0cnVjdG9yOjpnZXRPd25Qcm9wZXJ0eVNsb3QoSlNDZWxsKiBjZWxsLCBFeGVj
U3RhdGUqIGV4ZWMsIGNvbnN0IElkZW50aWZpZXImIHByb3BlcnR5TmFtZSwgUHJvcGVydHlTbG90
ICZzbG90KQorYm9vbCBBcnJheUNvbnN0cnVjdG9yOjpnZXRPd25Qcm9wZXJ0eVNsb3QoSlNDZWxs
KiBjZWxsLCBFeGVjU3RhdGUqIGV4ZWMsIFByb3BlcnR5TmFtZSBwcm9wZXJ0eU5hbWUsIFByb3Bl
cnR5U2xvdCAmc2xvdCkKIHsKICAgICByZXR1cm4gZ2V0U3RhdGljRnVuY3Rpb25TbG90PEludGVy
bmFsRnVuY3Rpb24+KGV4ZWMsIEV4ZWNTdGF0ZTo6YXJyYXlDb25zdHJ1Y3RvclRhYmxlKGV4ZWMp
LCBqc0Nhc3Q8QXJyYXlDb25zdHJ1Y3Rvcio+KGNlbGwpLCBwcm9wZXJ0eU5hbWUsIHNsb3QpOwog
fQogCi1ib29sIEFycmF5Q29uc3RydWN0b3I6OmdldE93blByb3BlcnR5RGVzY3JpcHRvcihKU09i
amVjdCogb2JqZWN0LCBFeGVjU3RhdGUqIGV4ZWMsIGNvbnN0IElkZW50aWZpZXImIHByb3BlcnR5
TmFtZSwgUHJvcGVydHlEZXNjcmlwdG9yJiBkZXNjcmlwdG9yKQorYm9vbCBBcnJheUNvbnN0cnVj
dG9yOjpnZXRPd25Qcm9wZXJ0eURlc2NyaXB0b3IoSlNPYmplY3QqIG9iamVjdCwgRXhlY1N0YXRl
KiBleGVjLCBQcm9wZXJ0eU5hbWUgcHJvcGVydHlOYW1lLCBQcm9wZXJ0eURlc2NyaXB0b3ImIGRl
c2NyaXB0b3IpCiB7CiAgICAgcmV0dXJuIGdldFN0YXRpY0Z1bmN0aW9uRGVzY3JpcHRvcjxJbnRl
cm5hbEZ1bmN0aW9uPihleGVjLCBFeGVjU3RhdGU6OmFycmF5Q29uc3RydWN0b3JUYWJsZShleGVj
KSwganNDYXN0PEFycmF5Q29uc3RydWN0b3IqPihvYmplY3QpLCBwcm9wZXJ0eU5hbWUsIGRlc2Ny
aXB0b3IpOwogfQpJbmRleDogU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvQXJyYXlDb25z
dHJ1Y3Rvci5oCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL0Fy
cmF5Q29uc3RydWN0b3IuaAkocmV2aXNpb24gMTE2NjY3KQorKysgU291cmNlL0phdmFTY3JpcHRD
b3JlL3J1bnRpbWUvQXJyYXlDb25zdHJ1Y3Rvci5oCSh3b3JraW5nIGNvcHkpCkBAIC01MSw5ICs1
MSw5IEBAIG5hbWVzcGFjZSBKU0MgewogCiAgICAgcHJpdmF0ZToKICAgICAgICAgQXJyYXlDb25z
dHJ1Y3RvcihKU0dsb2JhbE9iamVjdCosIFN0cnVjdHVyZSopOwotICAgICAgICBzdGF0aWMgYm9v
bCBnZXRPd25Qcm9wZXJ0eVNsb3QoSlNDZWxsKiwgRXhlY1N0YXRlKiwgY29uc3QgSWRlbnRpZmll
ciYsIFByb3BlcnR5U2xvdCYpOworICAgICAgICBzdGF0aWMgYm9vbCBnZXRPd25Qcm9wZXJ0eVNs
b3QoSlNDZWxsKiwgRXhlY1N0YXRlKiwgUHJvcGVydHlOYW1lLCBQcm9wZXJ0eVNsb3QmKTsKIAot
ICAgICAgICBzdGF0aWMgYm9vbCBnZXRPd25Qcm9wZXJ0eURlc2NyaXB0b3IoSlNPYmplY3QqLCBF
eGVjU3RhdGUqLCBjb25zdCBJZGVudGlmaWVyJiwgUHJvcGVydHlEZXNjcmlwdG9yJik7CisgICAg
ICAgIHN0YXRpYyBib29sIGdldE93blByb3BlcnR5RGVzY3JpcHRvcihKU09iamVjdCosIEV4ZWNT
dGF0ZSosIFByb3BlcnR5TmFtZSwgUHJvcGVydHlEZXNjcmlwdG9yJik7CiAKICAgICAgICAgc3Rh
dGljIENvbnN0cnVjdFR5cGUgZ2V0Q29uc3RydWN0RGF0YShKU0NlbGwqLCBDb25zdHJ1Y3REYXRh
Jik7CiAgICAgICAgIHN0YXRpYyBDYWxsVHlwZSBnZXRDYWxsRGF0YShKU0NlbGwqLCBDYWxsRGF0
YSYpOwpJbmRleDogU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvQXJyYXlQcm90b3R5cGUu
Y3BwCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL0FycmF5UHJv
dG90eXBlLmNwcAkocmV2aXNpb24gMTE2NjY3KQorKysgU291cmNlL0phdmFTY3JpcHRDb3JlL3J1
bnRpbWUvQXJyYXlQcm90b3R5cGUuY3BwCSh3b3JraW5nIGNvcHkpCkBAIC0xMjYsMTIgKzEyNiwx
MiBAQCB2b2lkIEFycmF5UHJvdG90eXBlOjpmaW5pc2hDcmVhdGlvbihKU0dsCiAgICAgQVNTRVJU
KGluaGVyaXRzKCZzX2luZm8pKTsKIH0KIAotYm9vbCBBcnJheVByb3RvdHlwZTo6Z2V0T3duUHJv
cGVydHlTbG90KEpTQ2VsbCogY2VsbCwgRXhlY1N0YXRlKiBleGVjLCBjb25zdCBJZGVudGlmaWVy
JiBwcm9wZXJ0eU5hbWUsIFByb3BlcnR5U2xvdCYgc2xvdCkKK2Jvb2wgQXJyYXlQcm90b3R5cGU6
OmdldE93blByb3BlcnR5U2xvdChKU0NlbGwqIGNlbGwsIEV4ZWNTdGF0ZSogZXhlYywgUHJvcGVy
dHlOYW1lIHByb3BlcnR5TmFtZSwgUHJvcGVydHlTbG90JiBzbG90KQogewogICAgIHJldHVybiBn
ZXRTdGF0aWNGdW5jdGlvblNsb3Q8SlNBcnJheT4oZXhlYywgRXhlY1N0YXRlOjphcnJheVByb3Rv
dHlwZVRhYmxlKGV4ZWMpLCBqc0Nhc3Q8QXJyYXlQcm90b3R5cGUqPihjZWxsKSwgcHJvcGVydHlO
YW1lLCBzbG90KTsKIH0KIAotYm9vbCBBcnJheVByb3RvdHlwZTo6Z2V0T3duUHJvcGVydHlEZXNj
cmlwdG9yKEpTT2JqZWN0KiBvYmplY3QsIEV4ZWNTdGF0ZSogZXhlYywgY29uc3QgSWRlbnRpZmll
ciYgcHJvcGVydHlOYW1lLCBQcm9wZXJ0eURlc2NyaXB0b3ImIGRlc2NyaXB0b3IpCitib29sIEFy
cmF5UHJvdG90eXBlOjpnZXRPd25Qcm9wZXJ0eURlc2NyaXB0b3IoSlNPYmplY3QqIG9iamVjdCwg
RXhlY1N0YXRlKiBleGVjLCBQcm9wZXJ0eU5hbWUgcHJvcGVydHlOYW1lLCBQcm9wZXJ0eURlc2Ny
aXB0b3ImIGRlc2NyaXB0b3IpCiB7CiAgICAgcmV0dXJuIGdldFN0YXRpY0Z1bmN0aW9uRGVzY3Jp
cHRvcjxKU0FycmF5PihleGVjLCBFeGVjU3RhdGU6OmFycmF5UHJvdG90eXBlVGFibGUoZXhlYyks
IGpzQ2FzdDxBcnJheVByb3RvdHlwZSo+KG9iamVjdCksIHByb3BlcnR5TmFtZSwgZGVzY3JpcHRv
cik7CiB9CkBAIC0xNDcsNyArMTQ3LDcgQEAgc3RhdGljIEpTVmFsdWUgZ2V0UHJvcGVydHkoRXhl
Y1N0YXRlKiBleAogICAgIHJldHVybiBzbG90LmdldFZhbHVlKGV4ZWMsIGluZGV4KTsKIH0KIAot
c3RhdGljIHZvaWQgcHV0UHJvcGVydHkoRXhlY1N0YXRlKiBleGVjLCBKU09iamVjdCogb2JqLCBj
b25zdCBJZGVudGlmaWVyJiBwcm9wZXJ0eU5hbWUsIEpTVmFsdWUgdmFsdWUpCitzdGF0aWMgdm9p
ZCBwdXRQcm9wZXJ0eShFeGVjU3RhdGUqIGV4ZWMsIEpTT2JqZWN0KiBvYmosIFByb3BlcnR5TmFt
ZSBwcm9wZXJ0eU5hbWUsIEpTVmFsdWUgdmFsdWUpCiB7CiAgICAgUHV0UHJvcGVydHlTbG90IHNs
b3Q7CiAgICAgb2JqLT5tZXRob2RUYWJsZSgpLT5wdXQob2JqLCBleGVjLCBwcm9wZXJ0eU5hbWUs
IHZhbHVlLCBzbG90KTsKSW5kZXg6IFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL0FycmF5
UHJvdG90eXBlLmgKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUv
QXJyYXlQcm90b3R5cGUuaAkocmV2aXNpb24gMTE2NjY3KQorKysgU291cmNlL0phdmFTY3JpcHRD
b3JlL3J1bnRpbWUvQXJyYXlQcm90b3R5cGUuaAkod29ya2luZyBjb3B5KQpAQCAtNDAsOCArNDAs
OCBAQCBuYW1lc3BhY2UgSlNDIHsKICAgICAgICAgICAgIHJldHVybiBwcm90b3R5cGU7CiAgICAg
ICAgIH0KICAgICAgICAgCi0gICAgICAgIHN0YXRpYyBib29sIGdldE93blByb3BlcnR5U2xvdChK
U0NlbGwqLCBFeGVjU3RhdGUqLCBjb25zdCBJZGVudGlmaWVyJiwgUHJvcGVydHlTbG90Jik7Ci0g
ICAgICAgIHN0YXRpYyBib29sIGdldE93blByb3BlcnR5RGVzY3JpcHRvcihKU09iamVjdCosIEV4
ZWNTdGF0ZSosIGNvbnN0IElkZW50aWZpZXImLCBQcm9wZXJ0eURlc2NyaXB0b3ImKTsKKyAgICAg
ICAgc3RhdGljIGJvb2wgZ2V0T3duUHJvcGVydHlTbG90KEpTQ2VsbCosIEV4ZWNTdGF0ZSosIFBy
b3BlcnR5TmFtZSwgUHJvcGVydHlTbG90Jik7CisgICAgICAgIHN0YXRpYyBib29sIGdldE93blBy
b3BlcnR5RGVzY3JpcHRvcihKU09iamVjdCosIEV4ZWNTdGF0ZSosIFByb3BlcnR5TmFtZSwgUHJv
cGVydHlEZXNjcmlwdG9yJik7CiAKICAgICAgICAgc3RhdGljIGNvbnN0IENsYXNzSW5mbyBzX2lu
Zm87CiAKSW5kZXg6IFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL0Jvb2xlYW5Db25zdHJ1
Y3Rvci5jcHAKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvQm9v
bGVhbkNvbnN0cnVjdG9yLmNwcAkocmV2aXNpb24gMTE2NjY3KQorKysgU291cmNlL0phdmFTY3Jp
cHRDb3JlL3J1bnRpbWUvQm9vbGVhbkNvbnN0cnVjdG9yLmNwcAkod29ya2luZyBjb3B5KQpAQCAt
MzgsNyArMzgsNyBAQCBCb29sZWFuQ29uc3RydWN0b3I6OkJvb2xlYW5Db25zdHJ1Y3RvcihKCiAK
IHZvaWQgQm9vbGVhbkNvbnN0cnVjdG9yOjpmaW5pc2hDcmVhdGlvbihFeGVjU3RhdGUqIGV4ZWMs
IEJvb2xlYW5Qcm90b3R5cGUqIGJvb2xlYW5Qcm90b3R5cGUpCiB7Ci0gICAgQmFzZTo6ZmluaXNo
Q3JlYXRpb24oZXhlYy0+Z2xvYmFsRGF0YSgpLCBJZGVudGlmaWVyKGV4ZWMsIGJvb2xlYW5Qcm90
b3R5cGUtPmNsYXNzSW5mbygpLT5jbGFzc05hbWUpKTsKKyAgICBCYXNlOjpmaW5pc2hDcmVhdGlv
bihleGVjLT5nbG9iYWxEYXRhKCksIGJvb2xlYW5Qcm90b3R5cGUtPmNsYXNzSW5mbygpLT5jbGFz
c05hbWUpOwogICAgIHB1dERpcmVjdFdpdGhvdXRUcmFuc2l0aW9uKGV4ZWMtPmdsb2JhbERhdGEo
KSwgZXhlYy0+cHJvcGVydHlOYW1lcygpLnByb3RvdHlwZSwgYm9vbGVhblByb3RvdHlwZSwgRG9u
dEVudW0gfCBEb250RGVsZXRlIHwgUmVhZE9ubHkpOwogCiAgICAgLy8gbm8uIG9mIGFyZ3VtZW50
cyBmb3IgY29uc3RydWN0b3IKSW5kZXg6IFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL0Jv
b2xlYW5Qcm90b3R5cGUuY3BwCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9y
dW50aW1lL0Jvb2xlYW5Qcm90b3R5cGUuY3BwCShyZXZpc2lvbiAxMTY2NjcpCisrKyBTb3VyY2Uv
SmF2YVNjcmlwdENvcmUvcnVudGltZS9Cb29sZWFuUHJvdG90eXBlLmNwcAkod29ya2luZyBjb3B5
KQpAQCAtNjMsMTIgKzYzLDEyIEBAIHZvaWQgQm9vbGVhblByb3RvdHlwZTo6ZmluaXNoQ3JlYXRp
b24oRXgKICAgICBBU1NFUlQoaW5oZXJpdHMoJnNfaW5mbykpOwogfQogCi1ib29sIEJvb2xlYW5Q
cm90b3R5cGU6OmdldE93blByb3BlcnR5U2xvdChKU0NlbGwqIGNlbGwsIEV4ZWNTdGF0ZSogZXhl
YywgY29uc3QgSWRlbnRpZmllciYgcHJvcGVydHlOYW1lLCBQcm9wZXJ0eVNsb3QgJnNsb3QpCiti
b29sIEJvb2xlYW5Qcm90b3R5cGU6OmdldE93blByb3BlcnR5U2xvdChKU0NlbGwqIGNlbGwsIEV4
ZWNTdGF0ZSogZXhlYywgUHJvcGVydHlOYW1lIHByb3BlcnR5TmFtZSwgUHJvcGVydHlTbG90ICZz
bG90KQogewogICAgIHJldHVybiBnZXRTdGF0aWNGdW5jdGlvblNsb3Q8Qm9vbGVhbk9iamVjdD4o
ZXhlYywgRXhlY1N0YXRlOjpib29sZWFuUHJvdG90eXBlVGFibGUoZXhlYyksIGpzQ2FzdDxCb29s
ZWFuUHJvdG90eXBlKj4oY2VsbCksIHByb3BlcnR5TmFtZSwgc2xvdCk7CiB9CiAKLWJvb2wgQm9v
bGVhblByb3RvdHlwZTo6Z2V0T3duUHJvcGVydHlEZXNjcmlwdG9yKEpTT2JqZWN0KiBvYmplY3Qs
IEV4ZWNTdGF0ZSogZXhlYywgY29uc3QgSWRlbnRpZmllciYgcHJvcGVydHlOYW1lLCBQcm9wZXJ0
eURlc2NyaXB0b3ImIGRlc2NyaXB0b3IpCitib29sIEJvb2xlYW5Qcm90b3R5cGU6OmdldE93blBy
b3BlcnR5RGVzY3JpcHRvcihKU09iamVjdCogb2JqZWN0LCBFeGVjU3RhdGUqIGV4ZWMsIFByb3Bl
cnR5TmFtZSBwcm9wZXJ0eU5hbWUsIFByb3BlcnR5RGVzY3JpcHRvciYgZGVzY3JpcHRvcikKIHsK
ICAgICByZXR1cm4gZ2V0U3RhdGljRnVuY3Rpb25EZXNjcmlwdG9yPEJvb2xlYW5PYmplY3Q+KGV4
ZWMsIEV4ZWNTdGF0ZTo6Ym9vbGVhblByb3RvdHlwZVRhYmxlKGV4ZWMpLCBqc0Nhc3Q8Qm9vbGVh
blByb3RvdHlwZSo+KG9iamVjdCksIHByb3BlcnR5TmFtZSwgZGVzY3JpcHRvcik7CiB9CkluZGV4
OiBTb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9Cb29sZWFuUHJvdG90eXBlLmgKPT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PQotLS0gU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvQm9vbGVhblByb3RvdHlwZS5o
CShyZXZpc2lvbiAxMTY2NjcpCisrKyBTb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9Cb29s
ZWFuUHJvdG90eXBlLmgJKHdvcmtpbmcgY29weSkKQEAgLTQ5LDkgKzQ5LDkgQEAgbmFtZXNwYWNl
IEpTQyB7CiAKICAgICBwcml2YXRlOgogICAgICAgICBCb29sZWFuUHJvdG90eXBlKEV4ZWNTdGF0
ZSosIFN0cnVjdHVyZSopOwotICAgICAgICBzdGF0aWMgYm9vbCBnZXRPd25Qcm9wZXJ0eVNsb3Qo
SlNDZWxsKiwgRXhlY1N0YXRlKiwgY29uc3QgSWRlbnRpZmllciYsIFByb3BlcnR5U2xvdCYpOwor
ICAgICAgICBzdGF0aWMgYm9vbCBnZXRPd25Qcm9wZXJ0eVNsb3QoSlNDZWxsKiwgRXhlY1N0YXRl
KiwgUHJvcGVydHlOYW1lLCBQcm9wZXJ0eVNsb3QmKTsKIAotICAgICAgICBzdGF0aWMgYm9vbCBn
ZXRPd25Qcm9wZXJ0eURlc2NyaXB0b3IoSlNPYmplY3QqLCBFeGVjU3RhdGUqLCBjb25zdCBJZGVu
dGlmaWVyJiwgUHJvcGVydHlEZXNjcmlwdG9yJik7CisgICAgICAgIHN0YXRpYyBib29sIGdldE93
blByb3BlcnR5RGVzY3JpcHRvcihKU09iamVjdCosIEV4ZWNTdGF0ZSosIFByb3BlcnR5TmFtZSwg
UHJvcGVydHlEZXNjcmlwdG9yJik7CiAgICAgfTsKIAogfSAvLyBuYW1lc3BhY2UgSlNDCkluZGV4
OiBTb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9DbGFzc0luZm8uaAo9PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0t
LSBTb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9DbGFzc0luZm8uaAkocmV2aXNpb24gMTE2
NjY3KQorKysgU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvQ2xhc3NJbmZvLmgJKHdvcmtp
bmcgY29weSkKQEAgLTQ1LDE5ICs0NSwxOSBAQCBuYW1lc3BhY2UgSlNDIHsKICAgICAgICAgdHlw
ZWRlZiBDb25zdHJ1Y3RUeXBlICgqR2V0Q29uc3RydWN0RGF0YUZ1bmN0aW9uUHRyKShKU0NlbGwq
LCBDb25zdHJ1Y3REYXRhJik7CiAgICAgICAgIEdldENvbnN0cnVjdERhdGFGdW5jdGlvblB0ciBn
ZXRDb25zdHJ1Y3REYXRhOwogCi0gICAgICAgIHR5cGVkZWYgdm9pZCAoKlB1dEZ1bmN0aW9uUHRy
KShKU0NlbGwqLCBFeGVjU3RhdGUqLCBjb25zdCBJZGVudGlmaWVyJiBwcm9wZXJ0eU5hbWUsIEpT
VmFsdWUsIFB1dFByb3BlcnR5U2xvdCYpOworICAgICAgICB0eXBlZGVmIHZvaWQgKCpQdXRGdW5j
dGlvblB0cikoSlNDZWxsKiwgRXhlY1N0YXRlKiwgUHJvcGVydHlOYW1lIHByb3BlcnR5TmFtZSwg
SlNWYWx1ZSwgUHV0UHJvcGVydHlTbG90Jik7CiAgICAgICAgIFB1dEZ1bmN0aW9uUHRyIHB1dDsK
IAogICAgICAgICB0eXBlZGVmIHZvaWQgKCpQdXRCeUluZGV4RnVuY3Rpb25QdHIpKEpTQ2VsbCos
IEV4ZWNTdGF0ZSosIHVuc2lnbmVkIHByb3BlcnR5TmFtZSwgSlNWYWx1ZSwgYm9vbCBzaG91bGRU
aHJvdyk7CiAgICAgICAgIFB1dEJ5SW5kZXhGdW5jdGlvblB0ciBwdXRCeUluZGV4OwogCi0gICAg
ICAgIHR5cGVkZWYgYm9vbCAoKkRlbGV0ZVByb3BlcnR5RnVuY3Rpb25QdHIpKEpTQ2VsbCosIEV4
ZWNTdGF0ZSosIGNvbnN0IElkZW50aWZpZXImKTsKKyAgICAgICAgdHlwZWRlZiBib29sICgqRGVs
ZXRlUHJvcGVydHlGdW5jdGlvblB0cikoSlNDZWxsKiwgRXhlY1N0YXRlKiwgUHJvcGVydHlOYW1l
KTsKICAgICAgICAgRGVsZXRlUHJvcGVydHlGdW5jdGlvblB0ciBkZWxldGVQcm9wZXJ0eTsKIAog
ICAgICAgICB0eXBlZGVmIGJvb2wgKCpEZWxldGVQcm9wZXJ0eUJ5SW5kZXhGdW5jdGlvblB0ciko
SlNDZWxsKiwgRXhlY1N0YXRlKiwgdW5zaWduZWQpOwogICAgICAgICBEZWxldGVQcm9wZXJ0eUJ5
SW5kZXhGdW5jdGlvblB0ciBkZWxldGVQcm9wZXJ0eUJ5SW5kZXg7CiAKLSAgICAgICAgdHlwZWRl
ZiBib29sICgqR2V0T3duUHJvcGVydHlTbG90RnVuY3Rpb25QdHIpKEpTQ2VsbCosIEV4ZWNTdGF0
ZSosIGNvbnN0IElkZW50aWZpZXImLCBQcm9wZXJ0eVNsb3QmKTsKKyAgICAgICAgdHlwZWRlZiBi
b29sICgqR2V0T3duUHJvcGVydHlTbG90RnVuY3Rpb25QdHIpKEpTQ2VsbCosIEV4ZWNTdGF0ZSos
IFByb3BlcnR5TmFtZSwgUHJvcGVydHlTbG90Jik7CiAgICAgICAgIEdldE93blByb3BlcnR5U2xv
dEZ1bmN0aW9uUHRyIGdldE93blByb3BlcnR5U2xvdDsKIAogICAgICAgICB0eXBlZGVmIGJvb2wg
KCpHZXRPd25Qcm9wZXJ0eVNsb3RCeUluZGV4RnVuY3Rpb25QdHIpKEpTQ2VsbCosIEV4ZWNTdGF0
ZSosIHVuc2lnbmVkLCBQcm9wZXJ0eVNsb3QmKTsKQEAgLTgxLDEzICs4MSwxMyBAQCBuYW1lc3Bh
Y2UgSlNDIHsKICAgICAgICAgdHlwZWRlZiBib29sICgqSGFzSW5zdGFuY2VGdW5jdGlvblB0ciko
SlNPYmplY3QqLCBFeGVjU3RhdGUqLCBKU1ZhbHVlLCBKU1ZhbHVlKTsKICAgICAgICAgSGFzSW5z
dGFuY2VGdW5jdGlvblB0ciBoYXNJbnN0YW5jZTsKIAotICAgICAgICB0eXBlZGVmIHZvaWQgKCpQ
dXRXaXRoQXR0cmlidXRlc0Z1bmN0aW9uUHRyKShKU09iamVjdCosIEV4ZWNTdGF0ZSosIGNvbnN0
IElkZW50aWZpZXImIHByb3BlcnR5TmFtZSwgSlNWYWx1ZSwgdW5zaWduZWQgYXR0cmlidXRlcyk7
CisgICAgICAgIHR5cGVkZWYgdm9pZCAoKlB1dFdpdGhBdHRyaWJ1dGVzRnVuY3Rpb25QdHIpKEpT
T2JqZWN0KiwgRXhlY1N0YXRlKiwgUHJvcGVydHlOYW1lIHByb3BlcnR5TmFtZSwgSlNWYWx1ZSwg
dW5zaWduZWQgYXR0cmlidXRlcyk7CiAgICAgICAgIFB1dFdpdGhBdHRyaWJ1dGVzRnVuY3Rpb25Q
dHIgcHV0RGlyZWN0VmlydHVhbDsKIAotICAgICAgICB0eXBlZGVmIGJvb2wgKCpEZWZpbmVPd25Q
cm9wZXJ0eUZ1bmN0aW9uUHRyKShKU09iamVjdCosIEV4ZWNTdGF0ZSosIGNvbnN0IElkZW50aWZp
ZXImLCBQcm9wZXJ0eURlc2NyaXB0b3ImLCBib29sKTsKKyAgICAgICAgdHlwZWRlZiBib29sICgq
RGVmaW5lT3duUHJvcGVydHlGdW5jdGlvblB0cikoSlNPYmplY3QqLCBFeGVjU3RhdGUqLCBQcm9w
ZXJ0eU5hbWUsIFByb3BlcnR5RGVzY3JpcHRvciYsIGJvb2wpOwogICAgICAgICBEZWZpbmVPd25Q
cm9wZXJ0eUZ1bmN0aW9uUHRyIGRlZmluZU93blByb3BlcnR5OwogCi0gICAgICAgIHR5cGVkZWYg
Ym9vbCAoKkdldE93blByb3BlcnR5RGVzY3JpcHRvckZ1bmN0aW9uUHRyKShKU09iamVjdCosIEV4
ZWNTdGF0ZSosIGNvbnN0IElkZW50aWZpZXImLCBQcm9wZXJ0eURlc2NyaXB0b3ImKTsKKyAgICAg
ICAgdHlwZWRlZiBib29sICgqR2V0T3duUHJvcGVydHlEZXNjcmlwdG9yRnVuY3Rpb25QdHIpKEpT
T2JqZWN0KiwgRXhlY1N0YXRlKiwgUHJvcGVydHlOYW1lLCBQcm9wZXJ0eURlc2NyaXB0b3ImKTsK
ICAgICAgICAgR2V0T3duUHJvcGVydHlEZXNjcmlwdG9yRnVuY3Rpb25QdHIgZ2V0T3duUHJvcGVy
dHlEZXNjcmlwdG9yOwogICAgIH07CiAKSW5kZXg6IFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50
aW1lL0RhdGVDb25zdHJ1Y3Rvci5jcHAKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL0phdmFTY3JpcHRD
b3JlL3J1bnRpbWUvRGF0ZUNvbnN0cnVjdG9yLmNwcAkocmV2aXNpb24gMTE2NjY3KQorKysgU291
cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvRGF0ZUNvbnN0cnVjdG9yLmNwcAkod29ya2luZyBj
b3B5KQpAQCAtODEsMTcgKzgxLDE3IEBAIERhdGVDb25zdHJ1Y3Rvcjo6RGF0ZUNvbnN0cnVjdG9y
KEpTR2xvYmEKIAogdm9pZCBEYXRlQ29uc3RydWN0b3I6OmZpbmlzaENyZWF0aW9uKEV4ZWNTdGF0
ZSogZXhlYywgRGF0ZVByb3RvdHlwZSogZGF0ZVByb3RvdHlwZSkKIHsKLSAgICBCYXNlOjpmaW5p
c2hDcmVhdGlvbihleGVjLT5nbG9iYWxEYXRhKCksIElkZW50aWZpZXIoZXhlYywgZGF0ZVByb3Rv
dHlwZS0+Y2xhc3NJbmZvKCktPmNsYXNzTmFtZSkpOworICAgIEJhc2U6OmZpbmlzaENyZWF0aW9u
KGV4ZWMtPmdsb2JhbERhdGEoKSwgZGF0ZVByb3RvdHlwZS0+Y2xhc3NJbmZvKCktPmNsYXNzTmFt
ZSk7CiAgICAgcHV0RGlyZWN0V2l0aG91dFRyYW5zaXRpb24oZXhlYy0+Z2xvYmFsRGF0YSgpLCBl
eGVjLT5wcm9wZXJ0eU5hbWVzKCkucHJvdG90eXBlLCBkYXRlUHJvdG90eXBlLCBEb250RW51bSB8
IERvbnREZWxldGUgfCBSZWFkT25seSk7CiAgICAgcHV0RGlyZWN0V2l0aG91dFRyYW5zaXRpb24o
ZXhlYy0+Z2xvYmFsRGF0YSgpLCBleGVjLT5wcm9wZXJ0eU5hbWVzKCkubGVuZ3RoLCBqc051bWJl
cig3KSwgUmVhZE9ubHkgfCBEb250RW51bSB8IERvbnREZWxldGUpOwogfQogCi1ib29sIERhdGVD
b25zdHJ1Y3Rvcjo6Z2V0T3duUHJvcGVydHlTbG90KEpTQ2VsbCogY2VsbCwgRXhlY1N0YXRlKiBl
eGVjLCBjb25zdCBJZGVudGlmaWVyJiBwcm9wZXJ0eU5hbWUsIFByb3BlcnR5U2xvdCAmc2xvdCkK
K2Jvb2wgRGF0ZUNvbnN0cnVjdG9yOjpnZXRPd25Qcm9wZXJ0eVNsb3QoSlNDZWxsKiBjZWxsLCBF
eGVjU3RhdGUqIGV4ZWMsIFByb3BlcnR5TmFtZSBwcm9wZXJ0eU5hbWUsIFByb3BlcnR5U2xvdCAm
c2xvdCkKIHsKICAgICByZXR1cm4gZ2V0U3RhdGljRnVuY3Rpb25TbG90PEludGVybmFsRnVuY3Rp
b24+KGV4ZWMsIEV4ZWNTdGF0ZTo6ZGF0ZUNvbnN0cnVjdG9yVGFibGUoZXhlYyksIGpzQ2FzdDxE
YXRlQ29uc3RydWN0b3IqPihjZWxsKSwgcHJvcGVydHlOYW1lLCBzbG90KTsKIH0KIAotYm9vbCBE
YXRlQ29uc3RydWN0b3I6OmdldE93blByb3BlcnR5RGVzY3JpcHRvcihKU09iamVjdCogb2JqZWN0
LCBFeGVjU3RhdGUqIGV4ZWMsIGNvbnN0IElkZW50aWZpZXImIHByb3BlcnR5TmFtZSwgUHJvcGVy
dHlEZXNjcmlwdG9yJiBkZXNjcmlwdG9yKQorYm9vbCBEYXRlQ29uc3RydWN0b3I6OmdldE93blBy
b3BlcnR5RGVzY3JpcHRvcihKU09iamVjdCogb2JqZWN0LCBFeGVjU3RhdGUqIGV4ZWMsIFByb3Bl
cnR5TmFtZSBwcm9wZXJ0eU5hbWUsIFByb3BlcnR5RGVzY3JpcHRvciYgZGVzY3JpcHRvcikKIHsK
ICAgICByZXR1cm4gZ2V0U3RhdGljRnVuY3Rpb25EZXNjcmlwdG9yPEludGVybmFsRnVuY3Rpb24+
KGV4ZWMsIEV4ZWNTdGF0ZTo6ZGF0ZUNvbnN0cnVjdG9yVGFibGUoZXhlYyksIGpzQ2FzdDxEYXRl
Q29uc3RydWN0b3IqPihvYmplY3QpLCBwcm9wZXJ0eU5hbWUsIGRlc2NyaXB0b3IpOwogfQpJbmRl
eDogU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvRGF0ZUNvbnN0cnVjdG9yLmgKPT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PQotLS0gU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvRGF0ZUNvbnN0cnVjdG9yLmgJ
KHJldmlzaW9uIDExNjY2NykKKysrIFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL0RhdGVD
b25zdHJ1Y3Rvci5oCSh3b3JraW5nIGNvcHkpCkBAIC01NCw5ICs1NCw5IEBAIG5hbWVzcGFjZSBK
U0MgewogICAgICAgICBzdGF0aWMgQ29uc3RydWN0VHlwZSBnZXRDb25zdHJ1Y3REYXRhKEpTQ2Vs
bCosIENvbnN0cnVjdERhdGEmKTsKICAgICAgICAgc3RhdGljIENhbGxUeXBlIGdldENhbGxEYXRh
KEpTQ2VsbCosIENhbGxEYXRhJik7CiAKLSAgICAgICAgc3RhdGljIGJvb2wgZ2V0T3duUHJvcGVy
dHlTbG90KEpTQ2VsbCosIEV4ZWNTdGF0ZSosIGNvbnN0IElkZW50aWZpZXImLCBQcm9wZXJ0eVNs
b3QmKTsKKyAgICAgICAgc3RhdGljIGJvb2wgZ2V0T3duUHJvcGVydHlTbG90KEpTQ2VsbCosIEV4
ZWNTdGF0ZSosIFByb3BlcnR5TmFtZSwgUHJvcGVydHlTbG90Jik7CiAKLSAgICAgICAgc3RhdGlj
IGJvb2wgZ2V0T3duUHJvcGVydHlEZXNjcmlwdG9yKEpTT2JqZWN0KiwgRXhlY1N0YXRlKiwgY29u
c3QgSWRlbnRpZmllciYsIFByb3BlcnR5RGVzY3JpcHRvciYpOworICAgICAgICBzdGF0aWMgYm9v
bCBnZXRPd25Qcm9wZXJ0eURlc2NyaXB0b3IoSlNPYmplY3QqLCBFeGVjU3RhdGUqLCBQcm9wZXJ0
eU5hbWUsIFByb3BlcnR5RGVzY3JpcHRvciYpOwogICAgIH07CiAKICAgICBKU09iamVjdCogY29u
c3RydWN0RGF0ZShFeGVjU3RhdGUqLCBKU0dsb2JhbE9iamVjdCosIGNvbnN0IEFyZ0xpc3QmKTsK
SW5kZXg6IFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL0RhdGVQcm90b3R5cGUuY3BwCj09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT0KLS0tIFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL0RhdGVQcm90b3R5cGUu
Y3BwCShyZXZpc2lvbiAxMTY2NjcpCisrKyBTb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9E
YXRlUHJvdG90eXBlLmNwcAkod29ya2luZyBjb3B5KQpAQCAtNDY3LDEyICs0NjcsMTIgQEAgdm9p
ZCBEYXRlUHJvdG90eXBlOjpmaW5pc2hDcmVhdGlvbihFeGVjUwogICAgIC8vIFRoZSBjb25zdHJ1
Y3RvciB3aWxsIGJlIGFkZGVkIGxhdGVyLCBhZnRlciBEYXRlQ29uc3RydWN0b3IgaGFzIGJlZW4g
YnVpbHQuCiB9CiAKLWJvb2wgRGF0ZVByb3RvdHlwZTo6Z2V0T3duUHJvcGVydHlTbG90KEpTQ2Vs
bCogY2VsbCwgRXhlY1N0YXRlKiBleGVjLCBjb25zdCBJZGVudGlmaWVyJiBwcm9wZXJ0eU5hbWUs
IFByb3BlcnR5U2xvdCYgc2xvdCkKK2Jvb2wgRGF0ZVByb3RvdHlwZTo6Z2V0T3duUHJvcGVydHlT
bG90KEpTQ2VsbCogY2VsbCwgRXhlY1N0YXRlKiBleGVjLCBQcm9wZXJ0eU5hbWUgcHJvcGVydHlO
YW1lLCBQcm9wZXJ0eVNsb3QmIHNsb3QpCiB7CiAgICAgcmV0dXJuIGdldFN0YXRpY0Z1bmN0aW9u
U2xvdDxKU09iamVjdD4oZXhlYywgRXhlY1N0YXRlOjpkYXRlVGFibGUoZXhlYyksIGpzQ2FzdDxE
YXRlUHJvdG90eXBlKj4oY2VsbCksIHByb3BlcnR5TmFtZSwgc2xvdCk7CiB9CiAKLWJvb2wgRGF0
ZVByb3RvdHlwZTo6Z2V0T3duUHJvcGVydHlEZXNjcmlwdG9yKEpTT2JqZWN0KiBvYmplY3QsIEV4
ZWNTdGF0ZSogZXhlYywgY29uc3QgSWRlbnRpZmllciYgcHJvcGVydHlOYW1lLCBQcm9wZXJ0eURl
c2NyaXB0b3ImIGRlc2NyaXB0b3IpCitib29sIERhdGVQcm90b3R5cGU6OmdldE93blByb3BlcnR5
RGVzY3JpcHRvcihKU09iamVjdCogb2JqZWN0LCBFeGVjU3RhdGUqIGV4ZWMsIFByb3BlcnR5TmFt
ZSBwcm9wZXJ0eU5hbWUsIFByb3BlcnR5RGVzY3JpcHRvciYgZGVzY3JpcHRvcikKIHsKICAgICBy
ZXR1cm4gZ2V0U3RhdGljRnVuY3Rpb25EZXNjcmlwdG9yPEpTT2JqZWN0PihleGVjLCBFeGVjU3Rh
dGU6OmRhdGVUYWJsZShleGVjKSwganNDYXN0PERhdGVQcm90b3R5cGUqPihvYmplY3QpLCBwcm9w
ZXJ0eU5hbWUsIGRlc2NyaXB0b3IpOwogfQpJbmRleDogU291cmNlL0phdmFTY3JpcHRDb3JlL3J1
bnRpbWUvRGF0ZVByb3RvdHlwZS5oCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9KYXZhU2NyaXB0Q29y
ZS9ydW50aW1lL0RhdGVQcm90b3R5cGUuaAkocmV2aXNpb24gMTE2NjY3KQorKysgU291cmNlL0ph
dmFTY3JpcHRDb3JlL3J1bnRpbWUvRGF0ZVByb3RvdHlwZS5oCSh3b3JraW5nIGNvcHkpCkBAIC00
MCw5ICs0MCw5IEBAIG5hbWVzcGFjZSBKU0MgewogICAgICAgICAgICAgcHJvdG90eXBlLT5maW5p
c2hDcmVhdGlvbihleGVjLCBnbG9iYWxPYmplY3QpOwogICAgICAgICAgICAgcmV0dXJuIHByb3Rv
dHlwZTsKICAgICAgICAgfQotICAgICAgICBzdGF0aWMgYm9vbCBnZXRPd25Qcm9wZXJ0eVNsb3Qo
SlNDZWxsKiwgRXhlY1N0YXRlKiwgY29uc3QgSWRlbnRpZmllciYsIFByb3BlcnR5U2xvdCYpOwor
ICAgICAgICBzdGF0aWMgYm9vbCBnZXRPd25Qcm9wZXJ0eVNsb3QoSlNDZWxsKiwgRXhlY1N0YXRl
KiwgUHJvcGVydHlOYW1lLCBQcm9wZXJ0eVNsb3QmKTsKIAotICAgICAgICBzdGF0aWMgYm9vbCBn
ZXRPd25Qcm9wZXJ0eURlc2NyaXB0b3IoSlNPYmplY3QqLCBFeGVjU3RhdGUqLCBjb25zdCBJZGVu
dGlmaWVyJiwgUHJvcGVydHlEZXNjcmlwdG9yJik7CisgICAgICAgIHN0YXRpYyBib29sIGdldE93
blByb3BlcnR5RGVzY3JpcHRvcihKU09iamVjdCosIEV4ZWNTdGF0ZSosIFByb3BlcnR5TmFtZSwg
UHJvcGVydHlEZXNjcmlwdG9yJik7CiAKICAgICAgICAgc3RhdGljIGNvbnN0IENsYXNzSW5mbyBz
X2luZm87CiAKSW5kZXg6IFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL0Vycm9yLmgKPT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PQotLS0gU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvRXJyb3IuaAkocmV2aXNp
b24gMTE2NjY3KQorKysgU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvRXJyb3IuaAkod29y
a2luZyBjb3B5KQpAQCAtOTAsNyArOTAsNyBAQCBuYW1lc3BhY2UgSlNDIHsKICAgICAgICAgc3Rh
dGljIFN0cmljdE1vZGVUeXBlRXJyb3JGdW5jdGlvbiogY3JlYXRlKEV4ZWNTdGF0ZSogZXhlYywg
SlNHbG9iYWxPYmplY3QqIGdsb2JhbE9iamVjdCwgU3RydWN0dXJlKiBzdHJ1Y3R1cmUsIGNvbnN0
IFVTdHJpbmcmIG1lc3NhZ2UpCiAgICAgICAgIHsKICAgICAgICAgICAgIFN0cmljdE1vZGVUeXBl
RXJyb3JGdW5jdGlvbiogZnVuY3Rpb24gPSBuZXcgKE5vdE51bGwsIGFsbG9jYXRlQ2VsbDxTdHJp
Y3RNb2RlVHlwZUVycm9yRnVuY3Rpb24+KCpleGVjLT5oZWFwKCkpKSBTdHJpY3RNb2RlVHlwZUVy
cm9yRnVuY3Rpb24oZ2xvYmFsT2JqZWN0LCBzdHJ1Y3R1cmUsIG1lc3NhZ2UpOwotICAgICAgICAg
ICAgZnVuY3Rpb24tPmZpbmlzaENyZWF0aW9uKGV4ZWMtPmdsb2JhbERhdGEoKSwgZXhlYy0+Z2xv
YmFsRGF0YSgpLnByb3BlcnR5TmFtZXMtPmVtcHR5SWRlbnRpZmllcik7CisgICAgICAgICAgICBm
dW5jdGlvbi0+ZmluaXNoQ3JlYXRpb24oZXhlYy0+Z2xvYmFsRGF0YSgpLCAiIik7CiAgICAgICAg
ICAgICByZXR1cm4gZnVuY3Rpb247CiAgICAgICAgIH0KICAgICAKSW5kZXg6IFNvdXJjZS9KYXZh
U2NyaXB0Q29yZS9ydW50aW1lL0Vycm9yQ29uc3RydWN0b3IuY3BwCj09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNv
dXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL0Vycm9yQ29uc3RydWN0b3IuY3BwCShyZXZpc2lv
biAxMTY2NjcpCisrKyBTb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9FcnJvckNvbnN0cnVj
dG9yLmNwcAkod29ya2luZyBjb3B5KQpAQCAtMzksNyArMzksNyBAQCBFcnJvckNvbnN0cnVjdG9y
OjpFcnJvckNvbnN0cnVjdG9yKEpTR2xvCiAKIHZvaWQgRXJyb3JDb25zdHJ1Y3Rvcjo6ZmluaXNo
Q3JlYXRpb24oRXhlY1N0YXRlKiBleGVjLCBFcnJvclByb3RvdHlwZSogZXJyb3JQcm90b3R5cGUp
CiB7Ci0gICAgQmFzZTo6ZmluaXNoQ3JlYXRpb24oZXhlYy0+Z2xvYmFsRGF0YSgpLCBJZGVudGlm
aWVyKGV4ZWMsIGVycm9yUHJvdG90eXBlLT5jbGFzc0luZm8oKS0+Y2xhc3NOYW1lKSk7CisgICAg
QmFzZTo6ZmluaXNoQ3JlYXRpb24oZXhlYy0+Z2xvYmFsRGF0YSgpLCBlcnJvclByb3RvdHlwZS0+
Y2xhc3NJbmZvKCktPmNsYXNzTmFtZSk7CiAgICAgLy8gRUNNQSAxNS4xMS4zLjEgRXJyb3IucHJv
dG90eXBlCiAgICAgcHV0RGlyZWN0V2l0aG91dFRyYW5zaXRpb24oZXhlYy0+Z2xvYmFsRGF0YSgp
LCBleGVjLT5wcm9wZXJ0eU5hbWVzKCkucHJvdG90eXBlLCBlcnJvclByb3RvdHlwZSwgRG9udEVu
dW0gfCBEb250RGVsZXRlIHwgUmVhZE9ubHkpOwogICAgIHB1dERpcmVjdFdpdGhvdXRUcmFuc2l0
aW9uKGV4ZWMtPmdsb2JhbERhdGEoKSwgZXhlYy0+cHJvcGVydHlOYW1lcygpLmxlbmd0aCwganNO
dW1iZXIoMSksIERvbnREZWxldGUgfCBSZWFkT25seSB8IERvbnRFbnVtKTsKSW5kZXg6IFNvdXJj
ZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL0Vycm9yUHJvdG90eXBlLmNwcAo9PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0t
LSBTb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9FcnJvclByb3RvdHlwZS5jcHAJKHJldmlz
aW9uIDExNjY2NykKKysrIFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL0Vycm9yUHJvdG90
eXBlLmNwcAkod29ya2luZyBjb3B5KQpAQCAtNjMsMTIgKzYzLDEyIEBAIHZvaWQgRXJyb3JQcm90
b3R5cGU6OmZpbmlzaENyZWF0aW9uKEV4ZWMKICAgICBwdXREaXJlY3QoZXhlYy0+Z2xvYmFsRGF0
YSgpLCBleGVjLT5wcm9wZXJ0eU5hbWVzKCkubmFtZSwganNOb250cml2aWFsU3RyaW5nKGV4ZWMs
ICJFcnJvciIpLCBEb250RW51bSk7CiB9CiAKLWJvb2wgRXJyb3JQcm90b3R5cGU6OmdldE93blBy
b3BlcnR5U2xvdChKU0NlbGwqIGNlbGwsIEV4ZWNTdGF0ZSogZXhlYywgY29uc3QgSWRlbnRpZmll
ciYgcHJvcGVydHlOYW1lLCBQcm9wZXJ0eVNsb3QgJnNsb3QpCitib29sIEVycm9yUHJvdG90eXBl
OjpnZXRPd25Qcm9wZXJ0eVNsb3QoSlNDZWxsKiBjZWxsLCBFeGVjU3RhdGUqIGV4ZWMsIFByb3Bl
cnR5TmFtZSBwcm9wZXJ0eU5hbWUsIFByb3BlcnR5U2xvdCAmc2xvdCkKIHsKICAgICByZXR1cm4g
Z2V0U3RhdGljRnVuY3Rpb25TbG90PEVycm9ySW5zdGFuY2U+KGV4ZWMsIEV4ZWNTdGF0ZTo6ZXJy
b3JQcm90b3R5cGVUYWJsZShleGVjKSwganNDYXN0PEVycm9yUHJvdG90eXBlKj4oY2VsbCksIHBy
b3BlcnR5TmFtZSwgc2xvdCk7CiB9CiAKLWJvb2wgRXJyb3JQcm90b3R5cGU6OmdldE93blByb3Bl
cnR5RGVzY3JpcHRvcihKU09iamVjdCogb2JqZWN0LCBFeGVjU3RhdGUqIGV4ZWMsIGNvbnN0IElk
ZW50aWZpZXImIHByb3BlcnR5TmFtZSwgUHJvcGVydHlEZXNjcmlwdG9yJiBkZXNjcmlwdG9yKQor
Ym9vbCBFcnJvclByb3RvdHlwZTo6Z2V0T3duUHJvcGVydHlEZXNjcmlwdG9yKEpTT2JqZWN0KiBv
YmplY3QsIEV4ZWNTdGF0ZSogZXhlYywgUHJvcGVydHlOYW1lIHByb3BlcnR5TmFtZSwgUHJvcGVy
dHlEZXNjcmlwdG9yJiBkZXNjcmlwdG9yKQogewogICAgIHJldHVybiBnZXRTdGF0aWNGdW5jdGlv
bkRlc2NyaXB0b3I8RXJyb3JJbnN0YW5jZT4oZXhlYywgRXhlY1N0YXRlOjplcnJvclByb3RvdHlw
ZVRhYmxlKGV4ZWMpLCBqc0Nhc3Q8RXJyb3JQcm90b3R5cGUqPihvYmplY3QpLCBwcm9wZXJ0eU5h
bWUsIGRlc2NyaXB0b3IpOwogfQpJbmRleDogU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUv
RXJyb3JQcm90b3R5cGUuaAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVu
dGltZS9FcnJvclByb3RvdHlwZS5oCShyZXZpc2lvbiAxMTY2NjcpCisrKyBTb3VyY2UvSmF2YVNj
cmlwdENvcmUvcnVudGltZS9FcnJvclByb3RvdHlwZS5oCSh3b3JraW5nIGNvcHkpCkBAIC01Miw4
ICs1Miw4IEBAIG5hbWVzcGFjZSBKU0MgewogICAgICAgICBzdGF0aWMgY29uc3QgdW5zaWduZWQg
U3RydWN0dXJlRmxhZ3MgPSBPdmVycmlkZXNHZXRPd25Qcm9wZXJ0eVNsb3QgfCBFcnJvckluc3Rh
bmNlOjpTdHJ1Y3R1cmVGbGFnczsKIAogICAgIHByaXZhdGU6Ci0gICAgICAgIHN0YXRpYyBib29s
IGdldE93blByb3BlcnR5U2xvdChKU0NlbGwqLCBFeGVjU3RhdGUqLCBjb25zdCBJZGVudGlmaWVy
JiwgUHJvcGVydHlTbG90Jik7Ci0gICAgICAgIHN0YXRpYyBib29sIGdldE93blByb3BlcnR5RGVz
Y3JpcHRvcihKU09iamVjdCosIEV4ZWNTdGF0ZSosIGNvbnN0IElkZW50aWZpZXImLCBQcm9wZXJ0
eURlc2NyaXB0b3ImKTsKKyAgICAgICAgc3RhdGljIGJvb2wgZ2V0T3duUHJvcGVydHlTbG90KEpT
Q2VsbCosIEV4ZWNTdGF0ZSosIFByb3BlcnR5TmFtZSwgUHJvcGVydHlTbG90Jik7CisgICAgICAg
IHN0YXRpYyBib29sIGdldE93blByb3BlcnR5RGVzY3JpcHRvcihKU09iamVjdCosIEV4ZWNTdGF0
ZSosIFByb3BlcnR5TmFtZSwgUHJvcGVydHlEZXNjcmlwdG9yJik7CiAgICAgfTsKIAogfSAvLyBu
YW1lc3BhY2UgSlNDCkluZGV4OiBTb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9GdW5jdGlv
bkNvbnN0cnVjdG9yLmNwcAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVu
dGltZS9GdW5jdGlvbkNvbnN0cnVjdG9yLmNwcAkocmV2aXNpb24gMTE2NjY3KQorKysgU291cmNl
L0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvRnVuY3Rpb25Db25zdHJ1Y3Rvci5jcHAJKHdvcmtpbmcg
Y29weSkKQEAgLTQ3LDcgKzQ3LDcgQEAgRnVuY3Rpb25Db25zdHJ1Y3Rvcjo6RnVuY3Rpb25Db25z
dHJ1Y3RvcgogCiB2b2lkIEZ1bmN0aW9uQ29uc3RydWN0b3I6OmZpbmlzaENyZWF0aW9uKEV4ZWNT
dGF0ZSogZXhlYywgRnVuY3Rpb25Qcm90b3R5cGUqIGZ1bmN0aW9uUHJvdG90eXBlKQogewotICAg
IEJhc2U6OmZpbmlzaENyZWF0aW9uKGV4ZWMtPmdsb2JhbERhdGEoKSwgSWRlbnRpZmllcihleGVj
LCBmdW5jdGlvblByb3RvdHlwZS0+Y2xhc3NJbmZvKCktPmNsYXNzTmFtZSkpOworICAgIEJhc2U6
OmZpbmlzaENyZWF0aW9uKGV4ZWMtPmdsb2JhbERhdGEoKSwgZnVuY3Rpb25Qcm90b3R5cGUtPmNs
YXNzSW5mbygpLT5jbGFzc05hbWUpOwogICAgIHB1dERpcmVjdFdpdGhvdXRUcmFuc2l0aW9uKGV4
ZWMtPmdsb2JhbERhdGEoKSwgZXhlYy0+cHJvcGVydHlOYW1lcygpLnByb3RvdHlwZSwgZnVuY3Rp
b25Qcm90b3R5cGUsIERvbnRFbnVtIHwgRG9udERlbGV0ZSB8IFJlYWRPbmx5KTsKIAogICAgIC8v
IE51bWJlciBvZiBhcmd1bWVudHMgZm9yIGNvbnN0cnVjdG9yCkluZGV4OiBTb3VyY2UvSmF2YVNj
cmlwdENvcmUvcnVudGltZS9GdW5jdGlvblByb3RvdHlwZS5jcHAKPT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291
cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvRnVuY3Rpb25Qcm90b3R5cGUuY3BwCShyZXZpc2lv
biAxMTY2NjcpCisrKyBTb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9GdW5jdGlvblByb3Rv
dHlwZS5jcHAJKHdvcmtpbmcgY29weSkKQEAgLTQ3LDcgKzQ3LDcgQEAgRnVuY3Rpb25Qcm90b3R5
cGU6OkZ1bmN0aW9uUHJvdG90eXBlKEpTRwogewogfQogCi12b2lkIEZ1bmN0aW9uUHJvdG90eXBl
OjpmaW5pc2hDcmVhdGlvbihFeGVjU3RhdGUqIGV4ZWMsIGNvbnN0IElkZW50aWZpZXImIG5hbWUp
Cit2b2lkIEZ1bmN0aW9uUHJvdG90eXBlOjpmaW5pc2hDcmVhdGlvbihFeGVjU3RhdGUqIGV4ZWMs
IGNvbnN0IFVTdHJpbmcmIG5hbWUpCiB7CiAgICAgQmFzZTo6ZmluaXNoQ3JlYXRpb24oZXhlYy0+
Z2xvYmFsRGF0YSgpLCBuYW1lKTsKICAgICBwdXREaXJlY3RXaXRob3V0VHJhbnNpdGlvbihleGVj
LT5nbG9iYWxEYXRhKCksIGV4ZWMtPnByb3BlcnR5TmFtZXMoKS5sZW5ndGgsIGpzTnVtYmVyKDAp
LCBEb250RGVsZXRlIHwgUmVhZE9ubHkgfCBEb250RW51bSk7CkBAIC01NSwxNiArNTUsMTYgQEAg
dm9pZCBGdW5jdGlvblByb3RvdHlwZTo6ZmluaXNoQ3JlYXRpb24oRQogCiB2b2lkIEZ1bmN0aW9u
UHJvdG90eXBlOjphZGRGdW5jdGlvblByb3BlcnRpZXMoRXhlY1N0YXRlKiBleGVjLCBKU0dsb2Jh
bE9iamVjdCogZ2xvYmFsT2JqZWN0LCBKU0Z1bmN0aW9uKiogY2FsbEZ1bmN0aW9uLCBKU0Z1bmN0
aW9uKiogYXBwbHlGdW5jdGlvbikKIHsKLSAgICBKU0Z1bmN0aW9uKiB0b1N0cmluZ0Z1bmN0aW9u
ID0gSlNGdW5jdGlvbjo6Y3JlYXRlKGV4ZWMsIGdsb2JhbE9iamVjdCwgMCwgZXhlYy0+cHJvcGVy
dHlOYW1lcygpLnRvU3RyaW5nLCBmdW5jdGlvblByb3RvRnVuY1RvU3RyaW5nKTsKKyAgICBKU0Z1
bmN0aW9uKiB0b1N0cmluZ0Z1bmN0aW9uID0gSlNGdW5jdGlvbjo6Y3JlYXRlKGV4ZWMsIGdsb2Jh
bE9iamVjdCwgMCwgZXhlYy0+cHJvcGVydHlOYW1lcygpLnRvU3RyaW5nLnVzdHJpbmcoKSwgZnVu
Y3Rpb25Qcm90b0Z1bmNUb1N0cmluZyk7CiAgICAgcHV0RGlyZWN0V2l0aG91dFRyYW5zaXRpb24o
ZXhlYy0+Z2xvYmFsRGF0YSgpLCBleGVjLT5wcm9wZXJ0eU5hbWVzKCkudG9TdHJpbmcsIHRvU3Ry
aW5nRnVuY3Rpb24sIERvbnRFbnVtKTsKIAotICAgICphcHBseUZ1bmN0aW9uID0gSlNGdW5jdGlv
bjo6Y3JlYXRlKGV4ZWMsIGdsb2JhbE9iamVjdCwgMiwgZXhlYy0+cHJvcGVydHlOYW1lcygpLmFw
cGx5LCBmdW5jdGlvblByb3RvRnVuY0FwcGx5KTsKKyAgICAqYXBwbHlGdW5jdGlvbiA9IEpTRnVu
Y3Rpb246OmNyZWF0ZShleGVjLCBnbG9iYWxPYmplY3QsIDIsIGV4ZWMtPnByb3BlcnR5TmFtZXMo
KS5hcHBseS51c3RyaW5nKCksIGZ1bmN0aW9uUHJvdG9GdW5jQXBwbHkpOwogICAgIHB1dERpcmVj
dFdpdGhvdXRUcmFuc2l0aW9uKGV4ZWMtPmdsb2JhbERhdGEoKSwgZXhlYy0+cHJvcGVydHlOYW1l
cygpLmFwcGx5LCAqYXBwbHlGdW5jdGlvbiwgRG9udEVudW0pOwogCi0gICAgKmNhbGxGdW5jdGlv
biA9IEpTRnVuY3Rpb246OmNyZWF0ZShleGVjLCBnbG9iYWxPYmplY3QsIDEsIGV4ZWMtPnByb3Bl
cnR5TmFtZXMoKS5jYWxsLCBmdW5jdGlvblByb3RvRnVuY0NhbGwpOworICAgICpjYWxsRnVuY3Rp
b24gPSBKU0Z1bmN0aW9uOjpjcmVhdGUoZXhlYywgZ2xvYmFsT2JqZWN0LCAxLCBleGVjLT5wcm9w
ZXJ0eU5hbWVzKCkuY2FsbC51c3RyaW5nKCksIGZ1bmN0aW9uUHJvdG9GdW5jQ2FsbCk7CiAgICAg
cHV0RGlyZWN0V2l0aG91dFRyYW5zaXRpb24oZXhlYy0+Z2xvYmFsRGF0YSgpLCBleGVjLT5wcm9w
ZXJ0eU5hbWVzKCkuY2FsbCwgKmNhbGxGdW5jdGlvbiwgRG9udEVudW0pOwogCi0gICAgSlNGdW5j
dGlvbiogYmluZEZ1bmN0aW9uID0gSlNGdW5jdGlvbjo6Y3JlYXRlKGV4ZWMsIGdsb2JhbE9iamVj
dCwgMSwgZXhlYy0+cHJvcGVydHlOYW1lcygpLmJpbmQsIGZ1bmN0aW9uUHJvdG9GdW5jQmluZCk7
CisgICAgSlNGdW5jdGlvbiogYmluZEZ1bmN0aW9uID0gSlNGdW5jdGlvbjo6Y3JlYXRlKGV4ZWMs
IGdsb2JhbE9iamVjdCwgMSwgZXhlYy0+cHJvcGVydHlOYW1lcygpLmJpbmQudXN0cmluZygpLCBm
dW5jdGlvblByb3RvRnVuY0JpbmQpOwogICAgIHB1dERpcmVjdFdpdGhvdXRUcmFuc2l0aW9uKGV4
ZWMtPmdsb2JhbERhdGEoKSwgZXhlYy0+cHJvcGVydHlOYW1lcygpLmJpbmQsIGJpbmRGdW5jdGlv
biwgRG9udEVudW0pOwogfQogCkBAIC0yMDcsOSArMjA3LDggQEAgRW5jb2RlZEpTVmFsdWUgSlND
X0hPU1RfQ0FMTCBmdW5jdGlvblBybwogICAgICAgICAgICAgbGVuZ3RoID0gdGFyZ2V0TGVuZ3Ro
IC0gbnVtQm91bmRBcmdzOwogICAgIH0KIAotICAgIElkZW50aWZpZXIgbmFtZShleGVjLCB0YXJn
ZXQuZ2V0KGV4ZWMsIGV4ZWMtPnByb3BlcnR5TmFtZXMoKS5uYW1lKS50b1N0cmluZyhleGVjKS0+
dmFsdWUoZXhlYykpOwotCi0gICAgcmV0dXJuIEpTVmFsdWU6OmVuY29kZShKU0JvdW5kRnVuY3Rp
b246OmNyZWF0ZShleGVjLCBnbG9iYWxPYmplY3QsIHRhcmdldE9iamVjdCwgZXhlYy0+YXJndW1l
bnQoMCksIGJvdW5kQXJncywgbGVuZ3RoLCBuYW1lKSk7CisgICAgSlNTdHJpbmcqIG5hbWUgPSB0
YXJnZXQuZ2V0KGV4ZWMsIGV4ZWMtPnByb3BlcnR5TmFtZXMoKS5uYW1lKS50b1N0cmluZyhleGVj
KTsKKyAgICByZXR1cm4gSlNWYWx1ZTo6ZW5jb2RlKEpTQm91bmRGdW5jdGlvbjo6Y3JlYXRlKGV4
ZWMsIGdsb2JhbE9iamVjdCwgdGFyZ2V0T2JqZWN0LCBleGVjLT5hcmd1bWVudCgwKSwgYm91bmRB
cmdzLCBsZW5ndGgsIG5hbWUtPnZhbHVlKGV4ZWMpKSk7CiB9CiAKIH0gLy8gbmFtZXNwYWNlIEpT
QwpJbmRleDogU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvRnVuY3Rpb25Qcm90b3R5cGUu
aAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09Ci0tLSBTb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9GdW5jdGlvblBy
b3RvdHlwZS5oCShyZXZpc2lvbiAxMTY2NjcpCisrKyBTb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVu
dGltZS9GdW5jdGlvblByb3RvdHlwZS5oCSh3b3JraW5nIGNvcHkpCkBAIC0zMiw3ICszMiw3IEBA
IG5hbWVzcGFjZSBKU0MgewogICAgICAgICBzdGF0aWMgRnVuY3Rpb25Qcm90b3R5cGUqIGNyZWF0
ZShFeGVjU3RhdGUqIGV4ZWMsIEpTR2xvYmFsT2JqZWN0KiBnbG9iYWxPYmplY3QsIFN0cnVjdHVy
ZSogc3RydWN0dXJlKQogICAgICAgICB7CiAgICAgICAgICAgICBGdW5jdGlvblByb3RvdHlwZSog
cHJvdG90eXBlID0gbmV3IChOb3ROdWxsLCBhbGxvY2F0ZUNlbGw8RnVuY3Rpb25Qcm90b3R5cGU+
KCpleGVjLT5oZWFwKCkpKSBGdW5jdGlvblByb3RvdHlwZShnbG9iYWxPYmplY3QsIHN0cnVjdHVy
ZSk7Ci0gICAgICAgICAgICBwcm90b3R5cGUtPmZpbmlzaENyZWF0aW9uKGV4ZWMsIGV4ZWMtPnBy
b3BlcnR5TmFtZXMoKS5udWxsSWRlbnRpZmllcik7CisgICAgICAgICAgICBwcm90b3R5cGUtPmZp
bmlzaENyZWF0aW9uKGV4ZWMsICIiKTsKICAgICAgICAgICAgIHJldHVybiBwcm90b3R5cGU7CiAg
ICAgICAgIH0KICAgICAgICAgCkBAIC00Niw3ICs0Niw3IEBAIG5hbWVzcGFjZSBKU0MgewogICAg
ICAgICBzdGF0aWMgY29uc3QgQ2xhc3NJbmZvIHNfaW5mbzsKIAogICAgIHByb3RlY3RlZDoKLSAg
ICAgICAgdm9pZCBmaW5pc2hDcmVhdGlvbihFeGVjU3RhdGUqLCBjb25zdCBJZGVudGlmaWVyJiBu
YW1lKTsKKyAgICAgICAgdm9pZCBmaW5pc2hDcmVhdGlvbihFeGVjU3RhdGUqLCBjb25zdCBVU3Ry
aW5nJiBuYW1lKTsKIAogICAgIHByaXZhdGU6CiAgICAgICAgIEZ1bmN0aW9uUHJvdG90eXBlKEpT
R2xvYmFsT2JqZWN0KiwgU3RydWN0dXJlKik7CkluZGV4OiBTb3VyY2UvSmF2YVNjcmlwdENvcmUv
cnVudGltZS9JZGVudGlmaWVyLmNwcAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvSmF2YVNjcmlwdENv
cmUvcnVudGltZS9JZGVudGlmaWVyLmNwcAkocmV2aXNpb24gMTE2NjY3KQorKysgU291cmNlL0ph
dmFTY3JpcHRDb3JlL3J1bnRpbWUvSWRlbnRpZmllci5jcHAJKHdvcmtpbmcgY29weSkKQEAgLTE0
NSw1NiArMTQ1LDYgQEAgUGFzc1JlZlB0cjxTdHJpbmdJbXBsPiBJZGVudGlmaWVyOjphZGQ4KAog
ICAgIHJldHVybiBhZGRSZXN1bHQuaXNOZXdFbnRyeSA/IGFkb3B0UmVmKCphZGRSZXN1bHQuaXRl
cmF0b3IpIDogKmFkZFJlc3VsdC5pdGVyYXRvcjsKIH0KIAotdGVtcGxhdGUgPHR5cGVuYW1lIENo
YXJUeXBlPgotQUxXQVlTX0lOTElORSB1aW50MzJfdCBJZGVudGlmaWVyOjp0b1VJbnQzMkZyb21D
aGFyYWN0ZXJzKGNvbnN0IENoYXJUeXBlKiBjaGFyYWN0ZXJzLCB1bnNpZ25lZCBsZW5ndGgsIGJv
b2wmIG9rKQotewotICAgIC8vIEdldCB0aGUgZmlyc3QgY2hhcmFjdGVyLCB0dXJuaW5nIGl0IGlu
dG8gYSBkaWdpdC4KLSAgICB1aW50MzJfdCB2YWx1ZSA9IGNoYXJhY3RlcnNbMF0gLSAnMCc7Ci0g
ICAgaWYgKHZhbHVlID4gOSkKLSAgICAgICAgcmV0dXJuIDA7Ci0gICAgCi0gICAgLy8gQ2hlY2sg
Zm9yIGxlYWRpbmcgemVyb3MuIElmIHRoZSBmaXJzdCBjaGFyYWNoZXIgaXMgMCwgdGhlbiB0aGUK
LSAgICAvLyBsZW5ndGggb2YgdGhlIHN0cmluZyBtdXN0IGJlIG9uZSAtIGUuZy4gIjA0MiIgaXMg
bm90IGVxdWFsIHRvICI0MiIuCi0gICAgaWYgKCF2YWx1ZSAmJiBsZW5ndGggPiAxKQotICAgICAg
ICByZXR1cm4gMDsKLSAgICAKLSAgICB3aGlsZSAoLS1sZW5ndGgpIHsKLSAgICAgICAgLy8gTXVs
dGlwbHkgdmFsdWUgYnkgMTAsIGNoZWNraW5nIGZvciBvdmVyZmxvdyBvdXQgb2YgMzIgYml0cy4K
LSAgICAgICAgaWYgKHZhbHVlID4gMHhGRkZGRkZGRlUgLyAxMCkKLSAgICAgICAgICAgIHJldHVy
biAwOwotICAgICAgICB2YWx1ZSAqPSAxMDsKLSAgICAgICAgCi0gICAgICAgIC8vIEdldCB0aGUg
bmV4dCBjaGFyYWN0ZXIsIHR1cm5pbmcgaXQgaW50byBhIGRpZ2l0LgotICAgICAgICB1aW50MzJf
dCBuZXdWYWx1ZSA9ICooKytjaGFyYWN0ZXJzKSAtICcwJzsKLSAgICAgICAgaWYgKG5ld1ZhbHVl
ID4gOSkKLSAgICAgICAgICAgIHJldHVybiAwOwotICAgICAgICAKLSAgICAgICAgLy8gQWRkIGlu
IHRoZSBvbGQgdmFsdWUsIGNoZWNraW5nIGZvciBvdmVyZmxvdyBvdXQgb2YgMzIgYml0cy4KLSAg
ICAgICAgbmV3VmFsdWUgKz0gdmFsdWU7Ci0gICAgICAgIGlmIChuZXdWYWx1ZSA8IHZhbHVlKQot
ICAgICAgICAgICAgcmV0dXJuIDA7Ci0gICAgICAgIHZhbHVlID0gbmV3VmFsdWU7Ci0gICAgfQot
ICAgIAotICAgIG9rID0gdHJ1ZTsKLSAgICByZXR1cm4gdmFsdWU7Ci19Ci0KLXVpbnQzMl90IElk
ZW50aWZpZXI6OnRvVUludDMyKGNvbnN0IFVTdHJpbmcmIHN0cmluZywgYm9vbCYgb2spCi17Ci0g
ICAgb2sgPSBmYWxzZTsKLQotICAgIHVuc2lnbmVkIGxlbmd0aCA9IHN0cmluZy5sZW5ndGgoKTsK
LQotICAgIC8vIEFuIGVtcHR5IHN0cmluZyBpcyBub3QgYSBudW1iZXIuCi0gICAgaWYgKCFsZW5n
dGgpCi0gICAgICAgIHJldHVybiAwOwotCi0gICAgaWYgKHN0cmluZy5pczhCaXQoKSkKLSAgICAg
ICAgcmV0dXJuIHRvVUludDMyRnJvbUNoYXJhY3RlcnMoc3RyaW5nLmNoYXJhY3RlcnM4KCksIGxl
bmd0aCwgb2spOwotICAgIHJldHVybiB0b1VJbnQzMkZyb21DaGFyYWN0ZXJzKHN0cmluZy5jaGFy
YWN0ZXJzMTYoKSwgbGVuZ3RoLCBvayk7Ci19Ci0KIFBhc3NSZWZQdHI8U3RyaW5nSW1wbD4gSWRl
bnRpZmllcjo6YWRkU2xvd0Nhc2UoSlNHbG9iYWxEYXRhKiBnbG9iYWxEYXRhLCBTdHJpbmdJbXBs
KiByKQogewogICAgIEFTU0VSVCghci0+aXNJZGVudGlmaWVyKCkpOwpJbmRleDogU291cmNlL0ph
dmFTY3JpcHRDb3JlL3J1bnRpbWUvSWRlbnRpZmllci5oCj09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9K
YXZhU2NyaXB0Q29yZS9ydW50aW1lL0lkZW50aWZpZXIuaAkocmV2aXNpb24gMTE2NjY3KQorKysg
U291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvSWRlbnRpZmllci5oCSh3b3JraW5nIGNvcHkp
CkBAIC02MywxMCArNjMsNiBAQCBuYW1lc3BhY2UgSlNDIHsKICAgICAgICAgc3RhdGljIElkZW50
aWZpZXIgZnJvbShKU0dsb2JhbERhdGEqLCBpbnQgeSk7CiAgICAgICAgIHN0YXRpYyBJZGVudGlm
aWVyIGZyb20oSlNHbG9iYWxEYXRhKiwgZG91YmxlIHkpOwogCi0gICAgICAgIEpTX0VYUE9SVF9Q
UklWQVRFIHN0YXRpYyB1aW50MzJfdCB0b1VJbnQzMihjb25zdCBVU3RyaW5nJiwgYm9vbCYgb2sp
OwotICAgICAgICB1aW50MzJfdCB0b1VJbnQzMihib29sJiBvaykgY29uc3QgeyByZXR1cm4gdG9V
SW50MzIobV9zdHJpbmcsIG9rKTsgfQotICAgICAgICB1bnNpZ25lZCB0b0FycmF5SW5kZXgoYm9v
bCYgb2spIGNvbnN0OwotCiAgICAgICAgIGJvb2wgaXNOdWxsKCkgY29uc3QgeyByZXR1cm4gbV9z
dHJpbmcuaXNOdWxsKCk7IH0KICAgICAgICAgYm9vbCBpc0VtcHR5KCkgY29uc3QgeyByZXR1cm4g
bV9zdHJpbmcuaXNFbXB0eSgpOyB9CiAgICAgICAgIApJbmRleDogU291cmNlL0phdmFTY3JpcHRD
b3JlL3J1bnRpbWUvSW50ZXJuYWxGdW5jdGlvbi5jcHAKPT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL0ph
dmFTY3JpcHRDb3JlL3J1bnRpbWUvSW50ZXJuYWxGdW5jdGlvbi5jcHAJKHJldmlzaW9uIDExNjY2
NykKKysrIFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL0ludGVybmFsRnVuY3Rpb24uY3Bw
CSh3b3JraW5nIGNvcHkpCkBAIC0zOSwxMiArMzksMTIgQEAgSW50ZXJuYWxGdW5jdGlvbjo6SW50
ZXJuYWxGdW5jdGlvbihKU0dsbwogewogfQogCi12b2lkIEludGVybmFsRnVuY3Rpb246OmZpbmlz
aENyZWF0aW9uKEpTR2xvYmFsRGF0YSYgZ2xvYmFsRGF0YSwgY29uc3QgSWRlbnRpZmllciYgbmFt
ZSkKK3ZvaWQgSW50ZXJuYWxGdW5jdGlvbjo6ZmluaXNoQ3JlYXRpb24oSlNHbG9iYWxEYXRhJiBn
bG9iYWxEYXRhLCBjb25zdCBVU3RyaW5nJiBuYW1lKQogewogICAgIEJhc2U6OmZpbmlzaENyZWF0
aW9uKGdsb2JhbERhdGEpOwogICAgIEFTU0VSVChpbmhlcml0cygmc19pbmZvKSk7CiAgICAgQVNT
RVJUKG1ldGhvZFRhYmxlKCktPmdldENhbGxEYXRhICE9IEludGVybmFsRnVuY3Rpb246OnNfaW5m
by5tZXRob2RUYWJsZS5nZXRDYWxsRGF0YSk7Ci0gICAgcHV0RGlyZWN0KGdsb2JhbERhdGEsIGds
b2JhbERhdGEucHJvcGVydHlOYW1lcy0+bmFtZSwganNTdHJpbmcoJmdsb2JhbERhdGEsIG5hbWUu
aXNOdWxsKCkgPyAiIiA6IG5hbWUudXN0cmluZygpKSwgRG9udERlbGV0ZSB8IFJlYWRPbmx5IHwg
RG9udEVudW0pOworICAgIHB1dERpcmVjdChnbG9iYWxEYXRhLCBnbG9iYWxEYXRhLnByb3BlcnR5
TmFtZXMtPm5hbWUsIGpzU3RyaW5nKCZnbG9iYWxEYXRhLCBuYW1lLmlzTnVsbCgpID8gIiIgOiBu
YW1lKSwgRG9udERlbGV0ZSB8IFJlYWRPbmx5IHwgRG9udEVudW0pOwogfQogCiBjb25zdCBVU3Ry
aW5nJiBJbnRlcm5hbEZ1bmN0aW9uOjpuYW1lKEV4ZWNTdGF0ZSogZXhlYykKSW5kZXg6IFNvdXJj
ZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL0ludGVybmFsRnVuY3Rpb24uaAo9PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0t
LSBTb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9JbnRlcm5hbEZ1bmN0aW9uLmgJKHJldmlz
aW9uIDExNjY2NykKKysrIFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL0ludGVybmFsRnVu
Y3Rpb24uaAkod29ya2luZyBjb3B5KQpAQCAtNTEsNyArNTEsNyBAQCBuYW1lc3BhY2UgSlNDIHsK
IAogICAgICAgICBKU19FWFBPUlRfUFJJVkFURSBJbnRlcm5hbEZ1bmN0aW9uKEpTR2xvYmFsT2Jq
ZWN0KiwgU3RydWN0dXJlKik7CiAKLSAgICAgICAgSlNfRVhQT1JUX1BSSVZBVEUgdm9pZCBmaW5p
c2hDcmVhdGlvbihKU0dsb2JhbERhdGEmLCBjb25zdCBJZGVudGlmaWVyJiBuYW1lKTsKKyAgICAg
ICAgSlNfRVhQT1JUX1BSSVZBVEUgdm9pZCBmaW5pc2hDcmVhdGlvbihKU0dsb2JhbERhdGEmLCBj
b25zdCBVU3RyaW5nJiBuYW1lKTsKIAogICAgICAgICBzdGF0aWMgQ2FsbFR5cGUgZ2V0Q2FsbERh
dGEoSlNDZWxsKiwgQ2FsbERhdGEmKTsKICAgICB9OwpJbmRleDogU291cmNlL0phdmFTY3JpcHRD
b3JlL3J1bnRpbWUvSlNBY3RpdmF0aW9uLmNwcAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvSmF2YVNj
cmlwdENvcmUvcnVudGltZS9KU0FjdGl2YXRpb24uY3BwCShyZXZpc2lvbiAxMTY2NjcpCisrKyBT
b3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9KU0FjdGl2YXRpb24uY3BwCSh3b3JraW5nIGNv
cHkpCkBAIC05MCw3ICs5MCw3IEBAIHZvaWQgSlNBY3RpdmF0aW9uOjp2aXNpdENoaWxkcmVuKEpT
Q2VsbCoKICAgICB2aXNpdG9yLmFwcGVuZFZhbHVlcyhyZWdpc3RlckFycmF5ICsgb2Zmc2V0LCB0
aGlzT2JqZWN0LT5tX251bUNhcHR1cmVkVmFycyk7CiB9CiAKLWlubGluZSBib29sIEpTQWN0aXZh
dGlvbjo6c3ltYm9sVGFibGVHZXQoY29uc3QgSWRlbnRpZmllciYgcHJvcGVydHlOYW1lLCBQcm9w
ZXJ0eVNsb3QmIHNsb3QpCitpbmxpbmUgYm9vbCBKU0FjdGl2YXRpb246OnN5bWJvbFRhYmxlR2V0
KFByb3BlcnR5TmFtZSBwcm9wZXJ0eU5hbWUsIFByb3BlcnR5U2xvdCYgc2xvdCkKIHsKICAgICBT
eW1ib2xUYWJsZUVudHJ5IGVudHJ5ID0gc3ltYm9sVGFibGUoKS5pbmxpbmVHZXQocHJvcGVydHlO
YW1lLmltcGwoKSk7CiAgICAgaWYgKGVudHJ5LmlzTnVsbCgpKQpAQCAtMTAyLDcgKzEwMiw3IEBA
IGlubGluZSBib29sIEpTQWN0aXZhdGlvbjo6c3ltYm9sVGFibGVHZXQKICAgICByZXR1cm4gdHJ1
ZTsKIH0KIAotaW5saW5lIGJvb2wgSlNBY3RpdmF0aW9uOjpzeW1ib2xUYWJsZVB1dChFeGVjU3Rh
dGUqIGV4ZWMsIGNvbnN0IElkZW50aWZpZXImIHByb3BlcnR5TmFtZSwgSlNWYWx1ZSB2YWx1ZSwg
Ym9vbCBzaG91bGRUaHJvdykKK2lubGluZSBib29sIEpTQWN0aXZhdGlvbjo6c3ltYm9sVGFibGVQ
dXQoRXhlY1N0YXRlKiBleGVjLCBQcm9wZXJ0eU5hbWUgcHJvcGVydHlOYW1lLCBKU1ZhbHVlIHZh
bHVlLCBib29sIHNob3VsZFRocm93KQogewogICAgIEpTR2xvYmFsRGF0YSYgZ2xvYmFsRGF0YSA9
IGV4ZWMtPmdsb2JhbERhdGEoKTsKICAgICBBU1NFUlQoIUhlYXA6OmhlYXAodmFsdWUpIHx8IEhl
YXA6OmhlYXAodmFsdWUpID09IEhlYXA6OmhlYXAodGhpcykpOwpAQCAtMTM3LDcgKzEzNyw3IEBA
IHZvaWQgSlNBY3RpdmF0aW9uOjpnZXRPd25Qcm9wZXJ0eU5hbWVzKEoKICAgICBKU09iamVjdDo6
Z2V0T3duUHJvcGVydHlOYW1lcyh0aGlzT2JqZWN0LCBleGVjLCBwcm9wZXJ0eU5hbWVzLCBtb2Rl
KTsKIH0KIAotaW5saW5lIGJvb2wgSlNBY3RpdmF0aW9uOjpzeW1ib2xUYWJsZVB1dFdpdGhBdHRy
aWJ1dGVzKEpTR2xvYmFsRGF0YSYgZ2xvYmFsRGF0YSwgY29uc3QgSWRlbnRpZmllciYgcHJvcGVy
dHlOYW1lLCBKU1ZhbHVlIHZhbHVlLCB1bnNpZ25lZCBhdHRyaWJ1dGVzKQoraW5saW5lIGJvb2wg
SlNBY3RpdmF0aW9uOjpzeW1ib2xUYWJsZVB1dFdpdGhBdHRyaWJ1dGVzKEpTR2xvYmFsRGF0YSYg
Z2xvYmFsRGF0YSwgUHJvcGVydHlOYW1lIHByb3BlcnR5TmFtZSwgSlNWYWx1ZSB2YWx1ZSwgdW5z
aWduZWQgYXR0cmlidXRlcykKIHsKICAgICBBU1NFUlQoIUhlYXA6OmhlYXAodmFsdWUpIHx8IEhl
YXA6OmhlYXAodmFsdWUpID09IEhlYXA6OmhlYXAodGhpcykpOwogICAgIApAQCAtMTU0LDcgKzE1
NCw3IEBAIGlubGluZSBib29sIEpTQWN0aXZhdGlvbjo6c3ltYm9sVGFibGVQdXQKICAgICByZXR1
cm4gdHJ1ZTsKIH0KIAotYm9vbCBKU0FjdGl2YXRpb246OmdldE93blByb3BlcnR5U2xvdChKU0Nl
bGwqIGNlbGwsIEV4ZWNTdGF0ZSogZXhlYywgY29uc3QgSWRlbnRpZmllciYgcHJvcGVydHlOYW1l
LCBQcm9wZXJ0eVNsb3QmIHNsb3QpCitib29sIEpTQWN0aXZhdGlvbjo6Z2V0T3duUHJvcGVydHlT
bG90KEpTQ2VsbCogY2VsbCwgRXhlY1N0YXRlKiBleGVjLCBQcm9wZXJ0eU5hbWUgcHJvcGVydHlO
YW1lLCBQcm9wZXJ0eVNsb3QmIHNsb3QpCiB7CiAgICAgSlNBY3RpdmF0aW9uKiB0aGlzT2JqZWN0
ID0ganNDYXN0PEpTQWN0aXZhdGlvbio+KGNlbGwpOwogICAgIGlmIChwcm9wZXJ0eU5hbWUgPT0g
ZXhlYy0+cHJvcGVydHlOYW1lcygpLmFyZ3VtZW50cykgewpAQCAtMTc3LDcgKzE3Nyw3IEBAIGJv
b2wgSlNBY3RpdmF0aW9uOjpnZXRPd25Qcm9wZXJ0eVNsb3QoSlMKICAgICByZXR1cm4gZmFsc2U7
CiB9CiAKLXZvaWQgSlNBY3RpdmF0aW9uOjpwdXQoSlNDZWxsKiBjZWxsLCBFeGVjU3RhdGUqIGV4
ZWMsIGNvbnN0IElkZW50aWZpZXImIHByb3BlcnR5TmFtZSwgSlNWYWx1ZSB2YWx1ZSwgUHV0UHJv
cGVydHlTbG90JiBzbG90KQordm9pZCBKU0FjdGl2YXRpb246OnB1dChKU0NlbGwqIGNlbGwsIEV4
ZWNTdGF0ZSogZXhlYywgUHJvcGVydHlOYW1lIHByb3BlcnR5TmFtZSwgSlNWYWx1ZSB2YWx1ZSwg
UHV0UHJvcGVydHlTbG90JiBzbG90KQogewogICAgIEpTQWN0aXZhdGlvbiogdGhpc09iamVjdCA9
IGpzQ2FzdDxKU0FjdGl2YXRpb24qPihjZWxsKTsKICAgICBBU1NFUlQoIUhlYXA6OmhlYXAodmFs
dWUpIHx8IEhlYXA6OmhlYXAodmFsdWUpID09IEhlYXA6OmhlYXAodGhpc09iamVjdCkpOwpAQCAt
MTkzLDcgKzE5Myw3IEBAIHZvaWQgSlNBY3RpdmF0aW9uOjpwdXQoSlNDZWxsKiBjZWxsLCBFeGUK
IH0KIAogLy8gRklYTUU6IE1ha2UgdGhpcyBmdW5jdGlvbiBob25vciBSZWFkT25seSAoY29uc3Qp
IGFuZCBEb250RW51bQotdm9pZCBKU0FjdGl2YXRpb246OnB1dERpcmVjdFZpcnR1YWwoSlNPYmpl
Y3QqIG9iamVjdCwgRXhlY1N0YXRlKiBleGVjLCBjb25zdCBJZGVudGlmaWVyJiBwcm9wZXJ0eU5h
bWUsIEpTVmFsdWUgdmFsdWUsIHVuc2lnbmVkIGF0dHJpYnV0ZXMpCit2b2lkIEpTQWN0aXZhdGlv
bjo6cHV0RGlyZWN0VmlydHVhbChKU09iamVjdCogb2JqZWN0LCBFeGVjU3RhdGUqIGV4ZWMsIFBy
b3BlcnR5TmFtZSBwcm9wZXJ0eU5hbWUsIEpTVmFsdWUgdmFsdWUsIHVuc2lnbmVkIGF0dHJpYnV0
ZXMpCiB7CiAgICAgSlNBY3RpdmF0aW9uKiB0aGlzT2JqZWN0ID0ganNDYXN0PEpTQWN0aXZhdGlv
bio+KG9iamVjdCk7CiAgICAgQVNTRVJUKCFIZWFwOjpoZWFwKHZhbHVlKSB8fCBIZWFwOjpoZWFw
KHZhbHVlKSA9PSBIZWFwOjpoZWFwKHRoaXNPYmplY3QpKTsKQEAgLTIwOCw3ICsyMDgsNyBAQCB2
b2lkIEpTQWN0aXZhdGlvbjo6cHV0RGlyZWN0VmlydHVhbChKU09iCiAgICAgSlNPYmplY3Q6OnB1
dERpcmVjdFZpcnR1YWwodGhpc09iamVjdCwgZXhlYywgcHJvcGVydHlOYW1lLCB2YWx1ZSwgYXR0
cmlidXRlcyk7CiB9CiAKLWJvb2wgSlNBY3RpdmF0aW9uOjpkZWxldGVQcm9wZXJ0eShKU0NlbGwq
IGNlbGwsIEV4ZWNTdGF0ZSogZXhlYywgY29uc3QgSWRlbnRpZmllciYgcHJvcGVydHlOYW1lKQor
Ym9vbCBKU0FjdGl2YXRpb246OmRlbGV0ZVByb3BlcnR5KEpTQ2VsbCogY2VsbCwgRXhlY1N0YXRl
KiBleGVjLCBQcm9wZXJ0eU5hbWUgcHJvcGVydHlOYW1lKQogewogICAgIGlmIChwcm9wZXJ0eU5h
bWUgPT0gZXhlYy0+cHJvcGVydHlOYW1lcygpLmFyZ3VtZW50cykKICAgICAgICAgcmV0dXJuIGZh
bHNlOwpAQCAtMjIxLDcgKzIyMSw3IEBAIEpTT2JqZWN0KiBKU0FjdGl2YXRpb246OnRvVGhpc09i
amVjdChKU0MKICAgICByZXR1cm4gZXhlYy0+Z2xvYmFsVGhpc1ZhbHVlKCk7CiB9CiAKLUpTVmFs
dWUgSlNBY3RpdmF0aW9uOjphcmd1bWVudHNHZXR0ZXIoRXhlY1N0YXRlKiwgSlNWYWx1ZSBzbG90
QmFzZSwgY29uc3QgSWRlbnRpZmllciYpCitKU1ZhbHVlIEpTQWN0aXZhdGlvbjo6YXJndW1lbnRz
R2V0dGVyKEV4ZWNTdGF0ZSosIEpTVmFsdWUgc2xvdEJhc2UsIFByb3BlcnR5TmFtZSkKIHsKICAg
ICBKU0FjdGl2YXRpb24qIGFjdGl2YXRpb24gPSBhc0FjdGl2YXRpb24oc2xvdEJhc2UpOwogICAg
IENhbGxGcmFtZSogY2FsbEZyYW1lID0gQ2FsbEZyYW1lOjpjcmVhdGUocmVpbnRlcnByZXRfY2Fz
dDxSZWdpc3Rlcio+KGFjdGl2YXRpb24tPm1fcmVnaXN0ZXJzKSk7CkluZGV4OiBTb3VyY2UvSmF2
YVNjcmlwdENvcmUvcnVudGltZS9KU0FjdGl2YXRpb24uaAo9PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2Uv
SmF2YVNjcmlwdENvcmUvcnVudGltZS9KU0FjdGl2YXRpb24uaAkocmV2aXNpb24gMTE2NjY3KQor
KysgU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvSlNBY3RpdmF0aW9uLmgJKHdvcmtpbmcg
Y29weSkKQEAgLTU5LDEzICs1OSwxMyBAQCBuYW1lc3BhY2UgSlNDIHsKIAogICAgICAgICBib29s
IGlzRHluYW1pY1Njb3BlKGJvb2wmIHJlcXVpcmVzRHluYW1pY0NoZWNrcykgY29uc3Q7CiAKLSAg
ICAgICAgc3RhdGljIGJvb2wgZ2V0T3duUHJvcGVydHlTbG90KEpTQ2VsbCosIEV4ZWNTdGF0ZSos
IGNvbnN0IElkZW50aWZpZXImLCBQcm9wZXJ0eVNsb3QmKTsKKyAgICAgICAgc3RhdGljIGJvb2wg
Z2V0T3duUHJvcGVydHlTbG90KEpTQ2VsbCosIEV4ZWNTdGF0ZSosIFByb3BlcnR5TmFtZSwgUHJv
cGVydHlTbG90Jik7CiAgICAgICAgIHN0YXRpYyB2b2lkIGdldE93blByb3BlcnR5TmFtZXMoSlNP
YmplY3QqLCBFeGVjU3RhdGUqLCBQcm9wZXJ0eU5hbWVBcnJheSYsIEVudW1lcmF0aW9uTW9kZSk7
CiAKLSAgICAgICAgc3RhdGljIHZvaWQgcHV0KEpTQ2VsbCosIEV4ZWNTdGF0ZSosIGNvbnN0IElk
ZW50aWZpZXImLCBKU1ZhbHVlLCBQdXRQcm9wZXJ0eVNsb3QmKTsKKyAgICAgICAgc3RhdGljIHZv
aWQgcHV0KEpTQ2VsbCosIEV4ZWNTdGF0ZSosIFByb3BlcnR5TmFtZSwgSlNWYWx1ZSwgUHV0UHJv
cGVydHlTbG90Jik7CiAKLSAgICAgICAgc3RhdGljIHZvaWQgcHV0RGlyZWN0VmlydHVhbChKU09i
amVjdCosIEV4ZWNTdGF0ZSosIGNvbnN0IElkZW50aWZpZXImLCBKU1ZhbHVlLCB1bnNpZ25lZCBh
dHRyaWJ1dGVzKTsKLSAgICAgICAgc3RhdGljIGJvb2wgZGVsZXRlUHJvcGVydHkoSlNDZWxsKiwg
RXhlY1N0YXRlKiwgY29uc3QgSWRlbnRpZmllciYgcHJvcGVydHlOYW1lKTsKKyAgICAgICAgc3Rh
dGljIHZvaWQgcHV0RGlyZWN0VmlydHVhbChKU09iamVjdCosIEV4ZWNTdGF0ZSosIFByb3BlcnR5
TmFtZSwgSlNWYWx1ZSwgdW5zaWduZWQgYXR0cmlidXRlcyk7CisgICAgICAgIHN0YXRpYyBib29s
IGRlbGV0ZVByb3BlcnR5KEpTQ2VsbCosIEV4ZWNTdGF0ZSosIFByb3BlcnR5TmFtZSk7CiAKICAg
ICAgICAgc3RhdGljIEpTT2JqZWN0KiB0b1RoaXNPYmplY3QoSlNDZWxsKiwgRXhlY1N0YXRlKik7
CiAKQEAgLTgyLDEzICs4MiwxMyBAQCBuYW1lc3BhY2UgSlNDIHsKICAgICAgICAgc3RhdGljIGNv
bnN0IHVuc2lnbmVkIFN0cnVjdHVyZUZsYWdzID0gSXNFbnZpcm9ubWVudFJlY29yZCB8IE92ZXJy
aWRlc0dldE93blByb3BlcnR5U2xvdCB8IE92ZXJyaWRlc1Zpc2l0Q2hpbGRyZW4gfCBPdmVycmlk
ZXNHZXRQcm9wZXJ0eU5hbWVzIHwgSlNWYXJpYWJsZU9iamVjdDo6U3RydWN0dXJlRmxhZ3M7CiAK
ICAgICBwcml2YXRlOgotICAgICAgICBib29sIHN5bWJvbFRhYmxlR2V0KGNvbnN0IElkZW50aWZp
ZXImLCBQcm9wZXJ0eVNsb3QmKTsKLSAgICAgICAgYm9vbCBzeW1ib2xUYWJsZUdldChjb25zdCBJ
ZGVudGlmaWVyJiwgUHJvcGVydHlEZXNjcmlwdG9yJik7Ci0gICAgICAgIGJvb2wgc3ltYm9sVGFi
bGVHZXQoY29uc3QgSWRlbnRpZmllciYsIFByb3BlcnR5U2xvdCYsIGJvb2wmIHNsb3RJc1dyaXRl
YWJsZSk7Ci0gICAgICAgIGJvb2wgc3ltYm9sVGFibGVQdXQoRXhlY1N0YXRlKiwgY29uc3QgSWRl
bnRpZmllciYsIEpTVmFsdWUsIGJvb2wgc2hvdWxkVGhyb3cpOwotICAgICAgICBib29sIHN5bWJv
bFRhYmxlUHV0V2l0aEF0dHJpYnV0ZXMoSlNHbG9iYWxEYXRhJiwgY29uc3QgSWRlbnRpZmllciYs
IEpTVmFsdWUsIHVuc2lnbmVkIGF0dHJpYnV0ZXMpOworICAgICAgICBib29sIHN5bWJvbFRhYmxl
R2V0KFByb3BlcnR5TmFtZSwgUHJvcGVydHlTbG90Jik7CisgICAgICAgIGJvb2wgc3ltYm9sVGFi
bGVHZXQoUHJvcGVydHlOYW1lLCBQcm9wZXJ0eURlc2NyaXB0b3ImKTsKKyAgICAgICAgYm9vbCBz
eW1ib2xUYWJsZUdldChQcm9wZXJ0eU5hbWUsIFByb3BlcnR5U2xvdCYsIGJvb2wmIHNsb3RJc1dy
aXRlYWJsZSk7CisgICAgICAgIGJvb2wgc3ltYm9sVGFibGVQdXQoRXhlY1N0YXRlKiwgUHJvcGVy
dHlOYW1lLCBKU1ZhbHVlLCBib29sIHNob3VsZFRocm93KTsKKyAgICAgICAgYm9vbCBzeW1ib2xU
YWJsZVB1dFdpdGhBdHRyaWJ1dGVzKEpTR2xvYmFsRGF0YSYsIFByb3BlcnR5TmFtZSwgSlNWYWx1
ZSwgdW5zaWduZWQgYXR0cmlidXRlcyk7CiAKLSAgICAgICAgc3RhdGljIEpTVmFsdWUgYXJndW1l
bnRzR2V0dGVyKEV4ZWNTdGF0ZSosIEpTVmFsdWUsIGNvbnN0IElkZW50aWZpZXImKTsKKyAgICAg
ICAgc3RhdGljIEpTVmFsdWUgYXJndW1lbnRzR2V0dGVyKEV4ZWNTdGF0ZSosIEpTVmFsdWUsIFBy
b3BlcnR5TmFtZSk7CiAgICAgICAgIE5FVkVSX0lOTElORSBQcm9wZXJ0eVNsb3Q6OkdldFZhbHVl
RnVuYyBnZXRBcmd1bWVudHNHZXR0ZXIoKTsKIAogICAgICAgICBpbnQgbV9udW1DYXB0dXJlZEFy
Z3M7CkluZGV4OiBTb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9KU0FycmF5LmNwcAo9PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09Ci0tLSBTb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9KU0FycmF5LmNwcAkocmV2
aXNpb24gMTE2NjY3KQorKysgU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvSlNBcnJheS5j
cHAJKHdvcmtpbmcgY29weSkKQEAgLTUzNSw3ICs1MzUsNyBAQCB2b2lkIEpTQXJyYXk6OnNldExl
bmd0aFdyaXRhYmxlKEV4ZWNTdGF0CiB9CiAKIC8vIERlZmluZWQgaW4gRVM1LjEgMTUuNC41LjEK
LWJvb2wgSlNBcnJheTo6ZGVmaW5lT3duUHJvcGVydHkoSlNPYmplY3QqIG9iamVjdCwgRXhlY1N0
YXRlKiBleGVjLCBjb25zdCBJZGVudGlmaWVyJiBwcm9wZXJ0eU5hbWUsIFByb3BlcnR5RGVzY3Jp
cHRvciYgZGVzY3JpcHRvciwgYm9vbCB0aHJvd0V4Y2VwdGlvbikKK2Jvb2wgSlNBcnJheTo6ZGVm
aW5lT3duUHJvcGVydHkoSlNPYmplY3QqIG9iamVjdCwgRXhlY1N0YXRlKiBleGVjLCBQcm9wZXJ0
eU5hbWUgcHJvcGVydHlOYW1lLCBQcm9wZXJ0eURlc2NyaXB0b3ImIGRlc2NyaXB0b3IsIGJvb2wg
dGhyb3dFeGNlcHRpb24pCiB7CiAgICAgSlNBcnJheSogYXJyYXkgPSBqc0Nhc3Q8SlNBcnJheSo+
KG9iamVjdCk7CiAKQEAgLTYxOCwxMCArNjE4LDkgQEAgYm9vbCBKU0FycmF5OjpkZWZpbmVPd25Q
cm9wZXJ0eShKU09iamVjdAogICAgIH0KIAogICAgIC8vIDQuIEVsc2UgaWYgUCBpcyBhbiBhcnJh
eSBpbmRleCAoMTUuNCksIHRoZW4KLSAgICBib29sIGlzQXJyYXlJbmRleDsKICAgICAvLyBhLiBM
ZXQgaW5kZXggYmUgVG9VaW50MzIoUCkuCi0gICAgdW5zaWduZWQgaW5kZXggPSBwcm9wZXJ0eU5h
bWUudG9BcnJheUluZGV4KGlzQXJyYXlJbmRleCk7Ci0gICAgaWYgKGlzQXJyYXlJbmRleCkgewor
ICAgIHVuc2lnbmVkIGluZGV4ID0gcHJvcGVydHlOYW1lLmFzSW5kZXgoKTsKKyAgICBpZiAoaW5k
ZXggIT0gUHJvcGVydHlOYW1lOjpOb3RBbkluZGV4KSB7CiAgICAgICAgIC8vIGIuIFJlamVjdCBp
ZiBpbmRleCA+PSBvbGRMZW4gYW5kIG9sZExlbkRlc2MuW1tXcml0YWJsZV1dIGlzIGZhbHNlLgog
ICAgICAgICBpZiAoaW5kZXggPj0gYXJyYXktPmxlbmd0aCgpICYmICFhcnJheS0+aXNMZW5ndGhX
cml0YWJsZSgpKQogICAgICAgICAgICAgcmV0dXJuIHJlamVjdChleGVjLCB0aHJvd0V4Y2VwdGlv
biwgIkF0dGVtcHRpbmcgdG8gZGVmaW5lIG51bWVyaWMgcHJvcGVydHkgb24gYXJyYXkgd2l0aCBu
b24td3JpdGFibGUgbGVuZ3RoIHByb3BlcnR5LiIpOwpAQCAtNjY1LDcgKzY2NCw3IEBAIGJvb2wg
SlNBcnJheTo6Z2V0T3duUHJvcGVydHlTbG90QnlJbmRleCgKICAgICByZXR1cm4gSlNPYmplY3Q6
OmdldE93blByb3BlcnR5U2xvdCh0aGlzT2JqZWN0LCBleGVjLCBJZGVudGlmaWVyOjpmcm9tKGV4
ZWMsIGkpLCBzbG90KTsKIH0KIAotYm9vbCBKU0FycmF5OjpnZXRPd25Qcm9wZXJ0eVNsb3QoSlND
ZWxsKiBjZWxsLCBFeGVjU3RhdGUqIGV4ZWMsIGNvbnN0IElkZW50aWZpZXImIHByb3BlcnR5TmFt
ZSwgUHJvcGVydHlTbG90JiBzbG90KQorYm9vbCBKU0FycmF5OjpnZXRPd25Qcm9wZXJ0eVNsb3Qo
SlNDZWxsKiBjZWxsLCBFeGVjU3RhdGUqIGV4ZWMsIFByb3BlcnR5TmFtZSBwcm9wZXJ0eU5hbWUs
IFByb3BlcnR5U2xvdCYgc2xvdCkKIHsKICAgICBKU0FycmF5KiB0aGlzT2JqZWN0ID0ganNDYXN0
PEpTQXJyYXkqPihjZWxsKTsKICAgICBpZiAocHJvcGVydHlOYW1lID09IGV4ZWMtPnByb3BlcnR5
TmFtZXMoKS5sZW5ndGgpIHsKQEAgLTY3MywxNSArNjcyLDE0IEBAIGJvb2wgSlNBcnJheTo6Z2V0
T3duUHJvcGVydHlTbG90KEpTQ2VsbCoKICAgICAgICAgcmV0dXJuIHRydWU7CiAgICAgfQogCi0g
ICAgYm9vbCBpc0FycmF5SW5kZXg7Ci0gICAgdW5zaWduZWQgaSA9IHByb3BlcnR5TmFtZS50b0Fy
cmF5SW5kZXgoaXNBcnJheUluZGV4KTsKLSAgICBpZiAoaXNBcnJheUluZGV4KQorICAgIHVuc2ln
bmVkIGkgPSBwcm9wZXJ0eU5hbWUuYXNJbmRleCgpOworICAgIGlmIChpICE9IFByb3BlcnR5TmFt
ZTo6Tm90QW5JbmRleCkKICAgICAgICAgcmV0dXJuIEpTQXJyYXk6OmdldE93blByb3BlcnR5U2xv
dEJ5SW5kZXgodGhpc09iamVjdCwgZXhlYywgaSwgc2xvdCk7CiAKICAgICByZXR1cm4gSlNPYmpl
Y3Q6OmdldE93blByb3BlcnR5U2xvdCh0aGlzT2JqZWN0LCBleGVjLCBwcm9wZXJ0eU5hbWUsIHNs
b3QpOwogfQogCi1ib29sIEpTQXJyYXk6OmdldE93blByb3BlcnR5RGVzY3JpcHRvcihKU09iamVj
dCogb2JqZWN0LCBFeGVjU3RhdGUqIGV4ZWMsIGNvbnN0IElkZW50aWZpZXImIHByb3BlcnR5TmFt
ZSwgUHJvcGVydHlEZXNjcmlwdG9yJiBkZXNjcmlwdG9yKQorYm9vbCBKU0FycmF5OjpnZXRPd25Q
cm9wZXJ0eURlc2NyaXB0b3IoSlNPYmplY3QqIG9iamVjdCwgRXhlY1N0YXRlKiBleGVjLCBQcm9w
ZXJ0eU5hbWUgcHJvcGVydHlOYW1lLCBQcm9wZXJ0eURlc2NyaXB0b3ImIGRlc2NyaXB0b3IpCiB7
CiAgICAgSlNBcnJheSogdGhpc09iamVjdCA9IGpzQ2FzdDxKU0FycmF5Kj4ob2JqZWN0KTsKICAg
ICBpZiAocHJvcGVydHlOYW1lID09IGV4ZWMtPnByb3BlcnR5TmFtZXMoKS5sZW5ndGgpIHsKQEAg
LTY5MSw5ICs2ODksOCBAQCBib29sIEpTQXJyYXk6OmdldE93blByb3BlcnR5RGVzY3JpcHRvcihK
CiAKICAgICBBcnJheVN0b3JhZ2UqIHN0b3JhZ2UgPSB0aGlzT2JqZWN0LT5tX3N0b3JhZ2U7CiAg
ICAgCi0gICAgYm9vbCBpc0FycmF5SW5kZXg7Ci0gICAgdW5zaWduZWQgaSA9IHByb3BlcnR5TmFt
ZS50b0FycmF5SW5kZXgoaXNBcnJheUluZGV4KTsKLSAgICBpZiAoaXNBcnJheUluZGV4KSB7Cisg
ICAgdW5zaWduZWQgaSA9IHByb3BlcnR5TmFtZS5hc0luZGV4KCk7CisgICAgaWYgKGkgIT0gUHJv
cGVydHlOYW1lOjpOb3RBbkluZGV4KSB7CiAgICAgICAgIGlmIChpID49IHN0b3JhZ2UtPm1fbGVu
Z3RoKQogICAgICAgICAgICAgcmV0dXJuIGZhbHNlOwogICAgICAgICBpZiAoaSA8IHRoaXNPYmpl
Y3QtPm1fdmVjdG9yTGVuZ3RoKSB7CkBAIC03MTQsMTIgKzcxMSwxMSBAQCBib29sIEpTQXJyYXk6
OmdldE93blByb3BlcnR5RGVzY3JpcHRvcihKCiB9CiAKIC8vIEVDTUEgMTUuNC41LjEKLXZvaWQg
SlNBcnJheTo6cHV0KEpTQ2VsbCogY2VsbCwgRXhlY1N0YXRlKiBleGVjLCBjb25zdCBJZGVudGlm
aWVyJiBwcm9wZXJ0eU5hbWUsIEpTVmFsdWUgdmFsdWUsIFB1dFByb3BlcnR5U2xvdCYgc2xvdCkK
K3ZvaWQgSlNBcnJheTo6cHV0KEpTQ2VsbCogY2VsbCwgRXhlY1N0YXRlKiBleGVjLCBQcm9wZXJ0
eU5hbWUgcHJvcGVydHlOYW1lLCBKU1ZhbHVlIHZhbHVlLCBQdXRQcm9wZXJ0eVNsb3QmIHNsb3Qp
CiB7CiAgICAgSlNBcnJheSogdGhpc09iamVjdCA9IGpzQ2FzdDxKU0FycmF5Kj4oY2VsbCk7Ci0g
ICAgYm9vbCBpc0FycmF5SW5kZXg7Ci0gICAgdW5zaWduZWQgaSA9IHByb3BlcnR5TmFtZS50b0Fy
cmF5SW5kZXgoaXNBcnJheUluZGV4KTsKLSAgICBpZiAoaXNBcnJheUluZGV4KSB7CisgICAgdW5z
aWduZWQgaSA9IHByb3BlcnR5TmFtZS5hc0luZGV4KCk7CisgICAgaWYgKGkgIT0gUHJvcGVydHlO
YW1lOjpOb3RBbkluZGV4KSB7CiAgICAgICAgIHB1dEJ5SW5kZXgodGhpc09iamVjdCwgZXhlYywg
aSwgdmFsdWUsIHNsb3QuaXNTdHJpY3RNb2RlKCkpOwogICAgICAgICByZXR1cm47CiAgICAgfQpA
QCAtOTE5LDEyICs5MTUsMTEgQEAgYm9vbCBKU0FycmF5OjpwdXREaXJlY3RJbmRleEJleW9uZFZl
Y3RvcgogICAgIHJldHVybiB0cnVlOwogfQogCi1ib29sIEpTQXJyYXk6OmRlbGV0ZVByb3BlcnR5
KEpTQ2VsbCogY2VsbCwgRXhlY1N0YXRlKiBleGVjLCBjb25zdCBJZGVudGlmaWVyJiBwcm9wZXJ0
eU5hbWUpCitib29sIEpTQXJyYXk6OmRlbGV0ZVByb3BlcnR5KEpTQ2VsbCogY2VsbCwgRXhlY1N0
YXRlKiBleGVjLCBQcm9wZXJ0eU5hbWUgcHJvcGVydHlOYW1lKQogewogICAgIEpTQXJyYXkqIHRo
aXNPYmplY3QgPSBqc0Nhc3Q8SlNBcnJheSo+KGNlbGwpOwotICAgIGJvb2wgaXNBcnJheUluZGV4
OwotICAgIHVuc2lnbmVkIGkgPSBwcm9wZXJ0eU5hbWUudG9BcnJheUluZGV4KGlzQXJyYXlJbmRl
eCk7Ci0gICAgaWYgKGlzQXJyYXlJbmRleCkKKyAgICB1bnNpZ25lZCBpID0gcHJvcGVydHlOYW1l
LmFzSW5kZXgoKTsKKyAgICBpZiAoaSAhPSBQcm9wZXJ0eU5hbWU6Ok5vdEFuSW5kZXgpCiAgICAg
ICAgIHJldHVybiB0aGlzT2JqZWN0LT5tZXRob2RUYWJsZSgpLT5kZWxldGVQcm9wZXJ0eUJ5SW5k
ZXgodGhpc09iamVjdCwgZXhlYywgaSk7CiAKICAgICBpZiAocHJvcGVydHlOYW1lID09IGV4ZWMt
PnByb3BlcnR5TmFtZXMoKS5sZW5ndGgpCkluZGV4OiBTb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVu
dGltZS9KU0FycmF5LmgKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRp
bWUvSlNBcnJheS5oCShyZXZpc2lvbiAxMTY2NjcpCisrKyBTb3VyY2UvSmF2YVNjcmlwdENvcmUv
cnVudGltZS9KU0FycmF5LmgJKHdvcmtpbmcgY29weSkKQEAgLTE2NCwxMSArMTY0LDExIEBAIG5h
bWVzcGFjZSBKU0MgewogICAgICAgICAvLyAgIC0gY2FsbGVkICdjb21wbGV0ZUluaXRpYWxpemF0
aW9uJyBhZnRlciBhbGwgcHJvcGVydGllcyBoYXZlIGJlZW4gaW5pdGlhbGl6ZWQuCiAgICAgICAg
IHN0YXRpYyBKU0FycmF5KiB0cnlDcmVhdGVVbmluaXRpYWxpemVkKEpTR2xvYmFsRGF0YSYsIFN0
cnVjdHVyZSosIHVuc2lnbmVkIGluaXRpYWxMZW5ndGgpOwogCi0gICAgICAgIEpTX0VYUE9SVF9Q
UklWQVRFIHN0YXRpYyBib29sIGRlZmluZU93blByb3BlcnR5KEpTT2JqZWN0KiwgRXhlY1N0YXRl
KiwgY29uc3QgSWRlbnRpZmllciYsIFByb3BlcnR5RGVzY3JpcHRvciYsIGJvb2wgdGhyb3dFeGNl
cHRpb24pOworICAgICAgICBKU19FWFBPUlRfUFJJVkFURSBzdGF0aWMgYm9vbCBkZWZpbmVPd25Q
cm9wZXJ0eShKU09iamVjdCosIEV4ZWNTdGF0ZSosIFByb3BlcnR5TmFtZSwgUHJvcGVydHlEZXNj
cmlwdG9yJiwgYm9vbCB0aHJvd0V4Y2VwdGlvbik7CiAKLSAgICAgICAgc3RhdGljIGJvb2wgZ2V0
T3duUHJvcGVydHlTbG90KEpTQ2VsbCosIEV4ZWNTdGF0ZSosIGNvbnN0IElkZW50aWZpZXImLCBQ
cm9wZXJ0eVNsb3QmKTsKKyAgICAgICAgc3RhdGljIGJvb2wgZ2V0T3duUHJvcGVydHlTbG90KEpT
Q2VsbCosIEV4ZWNTdGF0ZSosIFByb3BlcnR5TmFtZSwgUHJvcGVydHlTbG90Jik7CiAgICAgICAg
IEpTX0VYUE9SVF9QUklWQVRFIHN0YXRpYyBib29sIGdldE93blByb3BlcnR5U2xvdEJ5SW5kZXgo
SlNDZWxsKiwgRXhlY1N0YXRlKiwgdW5zaWduZWQgcHJvcGVydHlOYW1lLCBQcm9wZXJ0eVNsb3Qm
KTsKLSAgICAgICAgc3RhdGljIGJvb2wgZ2V0T3duUHJvcGVydHlEZXNjcmlwdG9yKEpTT2JqZWN0
KiwgRXhlY1N0YXRlKiwgY29uc3QgSWRlbnRpZmllciYsIFByb3BlcnR5RGVzY3JpcHRvciYpOwor
ICAgICAgICBzdGF0aWMgYm9vbCBnZXRPd25Qcm9wZXJ0eURlc2NyaXB0b3IoSlNPYmplY3QqLCBF
eGVjU3RhdGUqLCBQcm9wZXJ0eU5hbWUsIFByb3BlcnR5RGVzY3JpcHRvciYpOwogICAgICAgICBz
dGF0aWMgdm9pZCBwdXRCeUluZGV4KEpTQ2VsbCosIEV4ZWNTdGF0ZSosIHVuc2lnbmVkIHByb3Bl
cnR5TmFtZSwgSlNWYWx1ZSwgYm9vbCBzaG91bGRUaHJvdyk7CiAgICAgICAgIC8vIFRoaXMgaXMg
c2ltaWxhciB0byB0aGUgSlNPYmplY3Q6OnB1dERpcmVjdCogbWV0aG9kczoKICAgICAgICAgLy8g
IC0gdGhlIHByb3RvdHlwZSBjaGFpbiBpcyBub3QgY29uc3VsdGVkCkBAIC0yODEsOSArMjgxLDkg
QEAgbmFtZXNwYWNlIEpTQyB7CiAKICAgICBwcm90ZWN0ZWQ6CiAgICAgICAgIHN0YXRpYyBjb25z
dCB1bnNpZ25lZCBTdHJ1Y3R1cmVGbGFncyA9IE92ZXJyaWRlc0dldE93blByb3BlcnR5U2xvdCB8
IE92ZXJyaWRlc1Zpc2l0Q2hpbGRyZW4gfCBPdmVycmlkZXNHZXRQcm9wZXJ0eU5hbWVzIHwgSlNP
YmplY3Q6OlN0cnVjdHVyZUZsYWdzOwotICAgICAgICBzdGF0aWMgdm9pZCBwdXQoSlNDZWxsKiwg
RXhlY1N0YXRlKiwgY29uc3QgSWRlbnRpZmllciYgcHJvcGVydHlOYW1lLCBKU1ZhbHVlLCBQdXRQ
cm9wZXJ0eVNsb3QmKTsKKyAgICAgICAgc3RhdGljIHZvaWQgcHV0KEpTQ2VsbCosIEV4ZWNTdGF0
ZSosIFByb3BlcnR5TmFtZSwgSlNWYWx1ZSwgUHV0UHJvcGVydHlTbG90Jik7CiAKLSAgICAgICAg
c3RhdGljIGJvb2wgZGVsZXRlUHJvcGVydHkoSlNDZWxsKiwgRXhlY1N0YXRlKiwgY29uc3QgSWRl
bnRpZmllciYgcHJvcGVydHlOYW1lKTsKKyAgICAgICAgc3RhdGljIGJvb2wgZGVsZXRlUHJvcGVy
dHkoSlNDZWxsKiwgRXhlY1N0YXRlKiwgUHJvcGVydHlOYW1lKTsKICAgICAgICAgc3RhdGljIGJv
b2wgZGVsZXRlUHJvcGVydHlCeUluZGV4KEpTQ2VsbCosIEV4ZWNTdGF0ZSosIHVuc2lnbmVkIHBy
b3BlcnR5TmFtZSk7CiAgICAgICAgIHN0YXRpYyB2b2lkIGdldE93blByb3BlcnR5TmFtZXMoSlNP
YmplY3QqLCBFeGVjU3RhdGUqLCBQcm9wZXJ0eU5hbWVBcnJheSYsIEVudW1lcmF0aW9uTW9kZSk7
CiAKQEAgLTM1NywxNiArMzU3LDYgQEAgbmFtZXNwYWNlIEpTQyB7CiAgICAgaW5saW5lIGJvb2wg
aXNKU0FycmF5KEpTQ2VsbCogY2VsbCkgeyByZXR1cm4gY2VsbC0+Y2xhc3NJbmZvKCkgPT0gJkpT
QXJyYXk6OnNfaW5mbzsgfQogICAgIGlubGluZSBib29sIGlzSlNBcnJheShKU1ZhbHVlIHYpIHsg
cmV0dXJuIHYuaXNDZWxsKCkgJiYgaXNKU0FycmF5KHYuYXNDZWxsKCkpOyB9CiAKLSAgICAvLyBS
dWxlIGZyb20gRUNNQSAxNS4yIGFib3V0IHdoYXQgYW4gYXJyYXkgaW5kZXggaXMuCi0gICAgLy8g
TXVzdCBleGFjdGx5IG1hdGNoIHN0cmluZyBmb3JtIG9mIGFuIHVuc2lnbmVkIGludGVnZXIsIGFu
ZCBiZSBsZXNzIHRoYW4gMl4zMiAtIDEuCi0gICAgaW5saW5lIHVuc2lnbmVkIElkZW50aWZpZXI6
OnRvQXJyYXlJbmRleChib29sJiBvaykgY29uc3QKLSAgICB7Ci0gICAgICAgIHVuc2lnbmVkIGkg
PSB0b1VJbnQzMihvayk7Ci0gICAgICAgIGlmIChvayAmJiBpID49IDB4RkZGRkZGRkZVKQotICAg
ICAgICAgICAgb2sgPSBmYWxzZTsKLSAgICAgICAgcmV0dXJuIGk7Ci0gICAgfQotCiAvLyBUaGUg
ZGVmaW5pdGlvbiBvZiBNQVhfU1RPUkFHRV9WRUNUT1JfTEVOR1RIIGlzIGRlcGVuZGFudCBvbiB0
aGUgZGVmaW5pdGlvbiBzdG9yYWdlU2l6ZQogLy8gZnVuY3Rpb24gYmVsb3cgLSB0aGUgTUFYX1NU
T1JBR0VfVkVDVE9SX0xFTkdUSCBsaW1pdCBpcyBkZWZpbmVkIHN1Y2ggdGhhdCB0aGUgc3RvcmFn
ZQogLy8gc2l6ZSBjYWxjdWxhdGlvbiBjYW5ub3Qgb3ZlcmZsb3cuICAoc2l6ZW9mKEFycmF5U3Rv
cmFnZSkgLSBzaXplb2YoV3JpdGVCYXJyaWVyPFVua25vd24+KSkgKwpJbmRleDogU291cmNlL0ph
dmFTY3JpcHRDb3JlL3J1bnRpbWUvSlNCb3VuZEZ1bmN0aW9uLmNwcAo9PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBT
b3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9KU0JvdW5kRnVuY3Rpb24uY3BwCShyZXZpc2lv
biAxMTY2NjcpCisrKyBTb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9KU0JvdW5kRnVuY3Rp
b24uY3BwCSh3b3JraW5nIGNvcHkpCkBAIC03Niw3ICs3Niw3IEBAIEVuY29kZWRKU1ZhbHVlIEpT
Q19IT1NUX0NBTEwgYm91bmRGdW5jdGkKICAgICByZXR1cm4gSlNWYWx1ZTo6ZW5jb2RlKGNvbnN0
cnVjdChleGVjLCB0YXJnZXRGdW5jdGlvbiwgY29uc3RydWN0VHlwZSwgY29uc3RydWN0RGF0YSwg
YXJncykpOwogfQogCi1KU0JvdW5kRnVuY3Rpb24qIEpTQm91bmRGdW5jdGlvbjo6Y3JlYXRlKEV4
ZWNTdGF0ZSogZXhlYywgSlNHbG9iYWxPYmplY3QqIGdsb2JhbE9iamVjdCwgSlNPYmplY3QqIHRh
cmdldEZ1bmN0aW9uLCBKU1ZhbHVlIGJvdW5kVGhpcywgSlNWYWx1ZSBib3VuZEFyZ3MsIGludCBs
ZW5ndGgsIGNvbnN0IElkZW50aWZpZXImIG5hbWUpCitKU0JvdW5kRnVuY3Rpb24qIEpTQm91bmRG
dW5jdGlvbjo6Y3JlYXRlKEV4ZWNTdGF0ZSogZXhlYywgSlNHbG9iYWxPYmplY3QqIGdsb2JhbE9i
amVjdCwgSlNPYmplY3QqIHRhcmdldEZ1bmN0aW9uLCBKU1ZhbHVlIGJvdW5kVGhpcywgSlNWYWx1
ZSBib3VuZEFyZ3MsIGludCBsZW5ndGgsIGNvbnN0IFVTdHJpbmcmIG5hbWUpCiB7CiAgICAgQ29u
c3RydWN0RGF0YSBjb25zdHJ1Y3REYXRhOwogICAgIENvbnN0cnVjdFR5cGUgY29uc3RydWN0VHlw
ZSA9IEpTQzo6Z2V0Q29uc3RydWN0RGF0YSh0YXJnZXRGdW5jdGlvbiwgY29uc3RydWN0RGF0YSk7
CkBAIC0xMDcsNyArMTA3LDcgQEAgSlNCb3VuZEZ1bmN0aW9uOjpKU0JvdW5kRnVuY3Rpb24oRXhl
Y1N0YQogewogfQogCi12b2lkIEpTQm91bmRGdW5jdGlvbjo6ZmluaXNoQ3JlYXRpb24oRXhlY1N0
YXRlKiBleGVjLCBOYXRpdmVFeGVjdXRhYmxlKiBleGVjdXRhYmxlLCBpbnQgbGVuZ3RoLCBjb25z
dCBJZGVudGlmaWVyJiBuYW1lKQordm9pZCBKU0JvdW5kRnVuY3Rpb246OmZpbmlzaENyZWF0aW9u
KEV4ZWNTdGF0ZSogZXhlYywgTmF0aXZlRXhlY3V0YWJsZSogZXhlY3V0YWJsZSwgaW50IGxlbmd0
aCwgY29uc3QgVVN0cmluZyYgbmFtZSkKIHsKICAgICBCYXNlOjpmaW5pc2hDcmVhdGlvbihleGVj
LCBleGVjdXRhYmxlLCBsZW5ndGgsIG5hbWUpOwogICAgIEFTU0VSVChpbmhlcml0cygmc19pbmZv
KSk7CkluZGV4OiBTb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9KU0JvdW5kRnVuY3Rpb24u
aAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09Ci0tLSBTb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9KU0JvdW5kRnVu
Y3Rpb24uaAkocmV2aXNpb24gMTE2NjY3KQorKysgU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRp
bWUvSlNCb3VuZEZ1bmN0aW9uLmgJKHdvcmtpbmcgY29weSkKQEAgLTM3LDcgKzM3LDcgQEAgY2xh
c3MgSlNCb3VuZEZ1bmN0aW9uIDogcHVibGljIEpTRnVuY3RpbwogcHVibGljOgogICAgIHR5cGVk
ZWYgSlNGdW5jdGlvbiBCYXNlOwogCi0gICAgc3RhdGljIEpTQm91bmRGdW5jdGlvbiogY3JlYXRl
KEV4ZWNTdGF0ZSosIEpTR2xvYmFsT2JqZWN0KiwgSlNPYmplY3QqIHRhcmdldEZ1bmN0aW9uLCBK
U1ZhbHVlIGJvdW5kVGhpcywgSlNWYWx1ZSBib3VuZEFyZ3MsIGludCwgY29uc3QgSWRlbnRpZmll
ciYpOworICAgIHN0YXRpYyBKU0JvdW5kRnVuY3Rpb24qIGNyZWF0ZShFeGVjU3RhdGUqLCBKU0ds
b2JhbE9iamVjdCosIEpTT2JqZWN0KiB0YXJnZXRGdW5jdGlvbiwgSlNWYWx1ZSBib3VuZFRoaXMs
IEpTVmFsdWUgYm91bmRBcmdzLCBpbnQsIGNvbnN0IFVTdHJpbmcmKTsKIAogICAgIHN0YXRpYyBi
b29sIGhhc0luc3RhbmNlKEpTT2JqZWN0KiwgRXhlY1N0YXRlKiwgSlNWYWx1ZSwgSlNWYWx1ZSBw
cm90byk7CiAKQEAgLTYxLDcgKzYxLDcgQEAgcHJvdGVjdGVkOgogcHJpdmF0ZToKICAgICBKU0Jv
dW5kRnVuY3Rpb24oRXhlY1N0YXRlKiwgSlNHbG9iYWxPYmplY3QqLCBTdHJ1Y3R1cmUqLCBKU09i
amVjdCogdGFyZ2V0RnVuY3Rpb24sIEpTVmFsdWUgYm91bmRUaGlzLCBKU1ZhbHVlIGJvdW5kQXJn
cyk7CiAgICAgCi0gICAgdm9pZCBmaW5pc2hDcmVhdGlvbihFeGVjU3RhdGUqLCBOYXRpdmVFeGVj
dXRhYmxlKiwgaW50LCBjb25zdCBJZGVudGlmaWVyJik7CisgICAgdm9pZCBmaW5pc2hDcmVhdGlv
bihFeGVjU3RhdGUqLCBOYXRpdmVFeGVjdXRhYmxlKiwgaW50LCBjb25zdCBVU3RyaW5nJik7CiAK
ICAgICBXcml0ZUJhcnJpZXI8SlNPYmplY3Q+IG1fdGFyZ2V0RnVuY3Rpb247CiAgICAgV3JpdGVC
YXJyaWVyPFVua25vd24+IG1fYm91bmRUaGlzOwpJbmRleDogU291cmNlL0phdmFTY3JpcHRDb3Jl
L3J1bnRpbWUvSlNDZWxsLmNwcAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvSmF2YVNjcmlwdENvcmUv
cnVudGltZS9KU0NlbGwuY3BwCShyZXZpc2lvbiAxMTY2NjcpCisrKyBTb3VyY2UvSmF2YVNjcmlw
dENvcmUvcnVudGltZS9KU0NlbGwuY3BwCSh3b3JraW5nIGNvcHkpCkBAIC03MSw3ICs3MSw3IEBA
IENvbnN0cnVjdFR5cGUgSlNDZWxsOjpnZXRDb25zdHJ1Y3REYXRhKEoKICAgICByZXR1cm4gQ29u
c3RydWN0VHlwZU5vbmU7CiB9CiAKLWJvb2wgSlNDZWxsOjpnZXRPd25Qcm9wZXJ0eVNsb3QoSlND
ZWxsKiBjZWxsLCBFeGVjU3RhdGUqIGV4ZWMsIGNvbnN0IElkZW50aWZpZXImIGlkZW50aWZpZXIs
IFByb3BlcnR5U2xvdCYgc2xvdCkKK2Jvb2wgSlNDZWxsOjpnZXRPd25Qcm9wZXJ0eVNsb3QoSlND
ZWxsKiBjZWxsLCBFeGVjU3RhdGUqIGV4ZWMsIFByb3BlcnR5TmFtZSBpZGVudGlmaWVyLCBQcm9w
ZXJ0eVNsb3QmIHNsb3QpCiB7CiAgICAgLy8gVGhpcyBpcyBub3QgYSBnZW5lcmFsIHB1cnBvc2Ug
aW1wbGVtZW50YXRpb24gb2YgZ2V0T3duUHJvcGVydHlTbG90LgogICAgIC8vIEl0IHNob3VsZCBv
bmx5IGJlIGNhbGxlZCBieSBKU1ZhbHVlOjpnZXQuCkBAIC05NSw3ICs5NSw3IEBAIGJvb2wgSlND
ZWxsOjpnZXRPd25Qcm9wZXJ0eVNsb3RCeUluZGV4KEoKICAgICByZXR1cm4gdHJ1ZTsKIH0KIAot
dm9pZCBKU0NlbGw6OnB1dChKU0NlbGwqIGNlbGwsIEV4ZWNTdGF0ZSogZXhlYywgY29uc3QgSWRl
bnRpZmllciYgaWRlbnRpZmllciwgSlNWYWx1ZSB2YWx1ZSwgUHV0UHJvcGVydHlTbG90JiBzbG90
KQordm9pZCBKU0NlbGw6OnB1dChKU0NlbGwqIGNlbGwsIEV4ZWNTdGF0ZSogZXhlYywgUHJvcGVy
dHlOYW1lIGlkZW50aWZpZXIsIEpTVmFsdWUgdmFsdWUsIFB1dFByb3BlcnR5U2xvdCYgc2xvdCkK
IHsKICAgICBpZiAoY2VsbC0+aXNTdHJpbmcoKSkgewogICAgICAgICBKU1ZhbHVlKGNlbGwpLnB1
dFRvUHJpbWl0aXZlKGV4ZWMsIGlkZW50aWZpZXIsIHZhbHVlLCBzbG90KTsKQEAgLTExNiw3ICsx
MTYsNyBAQCB2b2lkIEpTQ2VsbDo6cHV0QnlJbmRleChKU0NlbGwqIGNlbGwsIEV4CiAgICAgdGhp
c09iamVjdC0+bWV0aG9kVGFibGUoKS0+cHV0QnlJbmRleCh0aGlzT2JqZWN0LCBleGVjLCBpZGVu
dGlmaWVyLCB2YWx1ZSwgc2hvdWxkVGhyb3cpOwogfQogCi1ib29sIEpTQ2VsbDo6ZGVsZXRlUHJv
cGVydHkoSlNDZWxsKiBjZWxsLCBFeGVjU3RhdGUqIGV4ZWMsIGNvbnN0IElkZW50aWZpZXImIGlk
ZW50aWZpZXIpCitib29sIEpTQ2VsbDo6ZGVsZXRlUHJvcGVydHkoSlNDZWxsKiBjZWxsLCBFeGVj
U3RhdGUqIGV4ZWMsIFByb3BlcnR5TmFtZSBpZGVudGlmaWVyKQogewogICAgIEpTT2JqZWN0KiB0
aGlzT2JqZWN0ID0gY2VsbC0+dG9PYmplY3QoZXhlYywgZXhlYy0+bGV4aWNhbEdsb2JhbE9iamVj
dCgpKTsKICAgICByZXR1cm4gdGhpc09iamVjdC0+bWV0aG9kVGFibGUoKS0+ZGVsZXRlUHJvcGVy
dHkodGhpc09iamVjdCwgZXhlYywgaWRlbnRpZmllcik7CkBAIC0xOTUsMTggKzE5NSwxOCBAQCBi
b29sIEpTQ2VsbDo6aGFzSW5zdGFuY2UoSlNPYmplY3QqLCBFeGVjCiAgICAgcmV0dXJuIGZhbHNl
OwogfQogCi12b2lkIEpTQ2VsbDo6cHV0RGlyZWN0VmlydHVhbChKU09iamVjdCosIEV4ZWNTdGF0
ZSosIGNvbnN0IElkZW50aWZpZXImLCBKU1ZhbHVlLCB1bnNpZ25lZCkKK3ZvaWQgSlNDZWxsOjpw
dXREaXJlY3RWaXJ0dWFsKEpTT2JqZWN0KiwgRXhlY1N0YXRlKiwgUHJvcGVydHlOYW1lLCBKU1Zh
bHVlLCB1bnNpZ25lZCkKIHsKICAgICBBU1NFUlRfTk9UX1JFQUNIRUQoKTsKIH0KIAotYm9vbCBK
U0NlbGw6OmRlZmluZU93blByb3BlcnR5KEpTT2JqZWN0KiwgRXhlY1N0YXRlKiwgY29uc3QgSWRl
bnRpZmllciYsIFByb3BlcnR5RGVzY3JpcHRvciYsIGJvb2wpCitib29sIEpTQ2VsbDo6ZGVmaW5l
T3duUHJvcGVydHkoSlNPYmplY3QqLCBFeGVjU3RhdGUqLCBQcm9wZXJ0eU5hbWUsIFByb3BlcnR5
RGVzY3JpcHRvciYsIGJvb2wpCiB7CiAgICAgQVNTRVJUX05PVF9SRUFDSEVEKCk7CiAgICAgcmV0
dXJuIGZhbHNlOwogfQogCi1ib29sIEpTQ2VsbDo6Z2V0T3duUHJvcGVydHlEZXNjcmlwdG9yKEpT
T2JqZWN0KiwgRXhlY1N0YXRlKiwgY29uc3QgSWRlbnRpZmllciYsIFByb3BlcnR5RGVzY3JpcHRv
ciYpCitib29sIEpTQ2VsbDo6Z2V0T3duUHJvcGVydHlEZXNjcmlwdG9yKEpTT2JqZWN0KiwgRXhl
Y1N0YXRlKiwgUHJvcGVydHlOYW1lLCBQcm9wZXJ0eURlc2NyaXB0b3ImKQogewogICAgIEFTU0VS
VF9OT1RfUkVBQ0hFRCgpOwogICAgIHJldHVybiBmYWxzZTsKSW5kZXg6IFNvdXJjZS9KYXZhU2Ny
aXB0Q29yZS9ydW50aW1lL0pTQ2VsbC5oCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9KYXZhU2NyaXB0
Q29yZS9ydW50aW1lL0pTQ2VsbC5oCShyZXZpc2lvbiAxMTY2NjcpCisrKyBTb3VyY2UvSmF2YVNj
cmlwdENvcmUvcnVudGltZS9KU0NlbGwuaAkod29ya2luZyBjb3B5KQpAQCAtMTA2LDEwICsxMDYs
MTAgQEAgbmFtZXNwYWNlIEpTQyB7CiAgICAgICAgIGNvbnN0IENsYXNzSW5mbyogY2xhc3NJbmZv
KCkgY29uc3Q7CiAgICAgICAgIGNvbnN0IENsYXNzSW5mbyogdmFsaWRhdGVkQ2xhc3NJbmZvKCkg
Y29uc3Q7CiAgICAgICAgIGNvbnN0IE1ldGhvZFRhYmxlKiBtZXRob2RUYWJsZSgpIGNvbnN0Owot
ICAgICAgICBzdGF0aWMgdm9pZCBwdXQoSlNDZWxsKiwgRXhlY1N0YXRlKiwgY29uc3QgSWRlbnRp
ZmllciYgcHJvcGVydHlOYW1lLCBKU1ZhbHVlLCBQdXRQcm9wZXJ0eVNsb3QmKTsKKyAgICAgICAg
c3RhdGljIHZvaWQgcHV0KEpTQ2VsbCosIEV4ZWNTdGF0ZSosIFByb3BlcnR5TmFtZSwgSlNWYWx1
ZSwgUHV0UHJvcGVydHlTbG90Jik7CiAgICAgICAgIHN0YXRpYyB2b2lkIHB1dEJ5SW5kZXgoSlND
ZWxsKiwgRXhlY1N0YXRlKiwgdW5zaWduZWQgcHJvcGVydHlOYW1lLCBKU1ZhbHVlLCBib29sIHNo
b3VsZFRocm93KTsKICAgICAgICAgCi0gICAgICAgIHN0YXRpYyBib29sIGRlbGV0ZVByb3BlcnR5
KEpTQ2VsbCosIEV4ZWNTdGF0ZSosIGNvbnN0IElkZW50aWZpZXImIHByb3BlcnR5TmFtZSk7Cisg
ICAgICAgIHN0YXRpYyBib29sIGRlbGV0ZVByb3BlcnR5KEpTQ2VsbCosIEV4ZWNTdGF0ZSosIFBy
b3BlcnR5TmFtZSk7CiAgICAgICAgIHN0YXRpYyBib29sIGRlbGV0ZVByb3BlcnR5QnlJbmRleChK
U0NlbGwqLCBFeGVjU3RhdGUqLCB1bnNpZ25lZCBwcm9wZXJ0eU5hbWUpOwogCiAgICAgICAgIHN0
YXRpYyBKU09iamVjdCogdG9UaGlzT2JqZWN0KEpTQ2VsbCosIEV4ZWNTdGF0ZSopOwpAQCAtMTIx
LDcgKzEyMSw3IEBAIG5hbWVzcGFjZSBKU0MgewogICAgICAgICAvLyBmYXN0R2V0T3duUHJvcGVy
dHlTbG90IHRvIGdldE93blByb3BlcnR5U2xvdC4gQ2FsbGVycyBzaG91bGQgYWx3YXlzCiAgICAg
ICAgIC8vIGNhbGwgdGhpcyBmdW5jdGlvbiwgbm90IGl0cyBzbG93ZXIgdmlydHVhbCBjb3VudGVy
cGFydC4gKEZvciBpbnRlZ2VyCiAgICAgICAgIC8vIHByb3BlcnR5IG5hbWVzLCB3ZSB3YW50IGEg
c2ltaWxhciBpbnRlcmZhY2Ugd2l0aCBhcHByb3ByaWF0ZSBvcHRpbWl6YXRpb25zLikKLSAgICAg
ICAgYm9vbCBmYXN0R2V0T3duUHJvcGVydHlTbG90KEV4ZWNTdGF0ZSosIGNvbnN0IElkZW50aWZp
ZXImIHByb3BlcnR5TmFtZSwgUHJvcGVydHlTbG90Jik7CisgICAgICAgIGJvb2wgZmFzdEdldE93
blByb3BlcnR5U2xvdChFeGVjU3RhdGUqLCBQcm9wZXJ0eU5hbWUsIFByb3BlcnR5U2xvdCYpOwog
ICAgICAgICBKU1ZhbHVlIGZhc3RHZXRPd25Qcm9wZXJ0eShFeGVjU3RhdGUqLCBjb25zdCBVU3Ry
aW5nJik7CiAKICAgICAgICAgc3RhdGljIHB0cmRpZmZfdCBzdHJ1Y3R1cmVPZmZzZXQoKQpAQCAt
MTUwLDcgKzE1MCw3IEBAIG5hbWVzcGFjZSBKU0MgewogICAgICAgICB2b2lkIGZpbmlzaENyZWF0
aW9uKEpTR2xvYmFsRGF0YSYsIFN0cnVjdHVyZSosIENyZWF0aW5nRWFybHlDZWxsVGFnKTsKIAog
ICAgICAgICAvLyBCYXNlIGltcGxlbWVudGF0aW9uOyBmb3Igbm9uLW9iamVjdCBjbGFzc2VzIGlt
cGxlbWVudHMgZ2V0UHJvcGVydHlTbG90LgotICAgICAgICBzdGF0aWMgYm9vbCBnZXRPd25Qcm9w
ZXJ0eVNsb3QoSlNDZWxsKiwgRXhlY1N0YXRlKiwgY29uc3QgSWRlbnRpZmllciYgcHJvcGVydHlO
YW1lLCBQcm9wZXJ0eVNsb3QmKTsKKyAgICAgICAgc3RhdGljIGJvb2wgZ2V0T3duUHJvcGVydHlT
bG90KEpTQ2VsbCosIEV4ZWNTdGF0ZSosIFByb3BlcnR5TmFtZSwgUHJvcGVydHlTbG90Jik7CiAg
ICAgICAgIHN0YXRpYyBib29sIGdldE93blByb3BlcnR5U2xvdEJ5SW5kZXgoSlNDZWxsKiwgRXhl
Y1N0YXRlKiwgdW5zaWduZWQgcHJvcGVydHlOYW1lLCBQcm9wZXJ0eVNsb3QmKTsKIAogICAgICAg
ICAvLyBEdW1teSBpbXBsZW1lbnRhdGlvbnMgb2Ygb3ZlcnJpZGUtYWJsZSBzdGF0aWMgZnVuY3Rp
b25zIGZvciBjbGFzc2VzIHRvIHB1dCBpbiB0aGVpciBNZXRob2RUYWJsZQpAQCAtMTU5LDkgKzE1
OSw5IEBAIG5hbWVzcGFjZSBKU0MgewogICAgICAgICBzdGF0aWMgTk9fUkVUVVJOX0RVRV9UT19B
U1NFUlQgdm9pZCBnZXRQcm9wZXJ0eU5hbWVzKEpTT2JqZWN0KiwgRXhlY1N0YXRlKiwgUHJvcGVy
dHlOYW1lQXJyYXkmLCBFbnVtZXJhdGlvbk1vZGUpOwogICAgICAgICBzdGF0aWMgVVN0cmluZyBj
bGFzc05hbWUoY29uc3QgSlNPYmplY3QqKTsKICAgICAgICAgc3RhdGljIGJvb2wgaGFzSW5zdGFu
Y2UoSlNPYmplY3QqLCBFeGVjU3RhdGUqLCBKU1ZhbHVlLCBKU1ZhbHVlIHByb3RvdHlwZVByb3Bl
cnR5KTsKLSAgICAgICAgc3RhdGljIE5PX1JFVFVSTl9EVUVfVE9fQVNTRVJUIHZvaWQgcHV0RGly
ZWN0VmlydHVhbChKU09iamVjdCosIEV4ZWNTdGF0ZSosIGNvbnN0IElkZW50aWZpZXImIHByb3Bl
cnR5TmFtZSwgSlNWYWx1ZSwgdW5zaWduZWQgYXR0cmlidXRlcyk7Ci0gICAgICAgIHN0YXRpYyBi
b29sIGRlZmluZU93blByb3BlcnR5KEpTT2JqZWN0KiwgRXhlY1N0YXRlKiwgY29uc3QgSWRlbnRp
ZmllciYgcHJvcGVydHlOYW1lLCBQcm9wZXJ0eURlc2NyaXB0b3ImLCBib29sIHNob3VsZFRocm93
KTsKLSAgICAgICAgc3RhdGljIGJvb2wgZ2V0T3duUHJvcGVydHlEZXNjcmlwdG9yKEpTT2JqZWN0
KiwgRXhlY1N0YXRlKiwgY29uc3QgSWRlbnRpZmllciYsIFByb3BlcnR5RGVzY3JpcHRvciYpOwor
ICAgICAgICBzdGF0aWMgTk9fUkVUVVJOX0RVRV9UT19BU1NFUlQgdm9pZCBwdXREaXJlY3RWaXJ0
dWFsKEpTT2JqZWN0KiwgRXhlY1N0YXRlKiwgUHJvcGVydHlOYW1lLCBKU1ZhbHVlLCB1bnNpZ25l
ZCBhdHRyaWJ1dGVzKTsKKyAgICAgICAgc3RhdGljIGJvb2wgZGVmaW5lT3duUHJvcGVydHkoSlNP
YmplY3QqLCBFeGVjU3RhdGUqLCBQcm9wZXJ0eU5hbWUsIFByb3BlcnR5RGVzY3JpcHRvciYsIGJv
b2wgc2hvdWxkVGhyb3cpOworICAgICAgICBzdGF0aWMgYm9vbCBnZXRPd25Qcm9wZXJ0eURlc2Ny
aXB0b3IoSlNPYmplY3QqLCBFeGVjU3RhdGUqLCBQcm9wZXJ0eU5hbWUsIFByb3BlcnR5RGVzY3Jp
cHRvciYpOwogCiAgICAgcHJpdmF0ZToKICAgICAgICAgZnJpZW5kIGNsYXNzIExMSW50T2Zmc2V0
c0V4dHJhY3RvcjsKSW5kZXg6IFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL0pTRnVuY3Rp
b24uY3BwCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL0pTRnVu
Y3Rpb24uY3BwCShyZXZpc2lvbiAxMTY2NzApCisrKyBTb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVu
dGltZS9KU0Z1bmN0aW9uLmNwcAkod29ya2luZyBjb3B5KQpAQCAtNTksNyArNTksNyBAQCBib29s
IEpTRnVuY3Rpb246OmlzSG9zdEZ1bmN0aW9uTm9uSW5saW5lCiAgICAgcmV0dXJuIGlzSG9zdEZ1
bmN0aW9uKCk7CiB9CiAKLUpTRnVuY3Rpb24qIEpTRnVuY3Rpb246OmNyZWF0ZShFeGVjU3RhdGUq
IGV4ZWMsIEpTR2xvYmFsT2JqZWN0KiBnbG9iYWxPYmplY3QsIGludCBsZW5ndGgsIGNvbnN0IElk
ZW50aWZpZXImIG5hbWUsIE5hdGl2ZUZ1bmN0aW9uIG5hdGl2ZUZ1bmN0aW9uLCBJbnRyaW5zaWMg
aW50cmluc2ljLCBOYXRpdmVGdW5jdGlvbiBuYXRpdmVDb25zdHJ1Y3RvcikKK0pTRnVuY3Rpb24q
IEpTRnVuY3Rpb246OmNyZWF0ZShFeGVjU3RhdGUqIGV4ZWMsIEpTR2xvYmFsT2JqZWN0KiBnbG9i
YWxPYmplY3QsIGludCBsZW5ndGgsIGNvbnN0IFVTdHJpbmcmIG5hbWUsIE5hdGl2ZUZ1bmN0aW9u
IG5hdGl2ZUZ1bmN0aW9uLCBJbnRyaW5zaWMgaW50cmluc2ljLCBOYXRpdmVGdW5jdGlvbiBuYXRp
dmVDb25zdHJ1Y3RvcikKIHsKICAgICBOYXRpdmVFeGVjdXRhYmxlKiBleGVjdXRhYmxlOwogI2lm
ICFFTkFCTEUoSklUKQpAQCAtOTIsMTIgKzkyLDEyIEBAIEpTRnVuY3Rpb246OkpTRnVuY3Rpb24o
RXhlY1N0YXRlKiBleGVjLCAKIHsKIH0KIAotdm9pZCBKU0Z1bmN0aW9uOjpmaW5pc2hDcmVhdGlv
bihFeGVjU3RhdGUqIGV4ZWMsIE5hdGl2ZUV4ZWN1dGFibGUqIGV4ZWN1dGFibGUsIGludCBsZW5n
dGgsIGNvbnN0IElkZW50aWZpZXImIG5hbWUpCit2b2lkIEpTRnVuY3Rpb246OmZpbmlzaENyZWF0
aW9uKEV4ZWNTdGF0ZSogZXhlYywgTmF0aXZlRXhlY3V0YWJsZSogZXhlY3V0YWJsZSwgaW50IGxl
bmd0aCwgY29uc3QgVVN0cmluZyYgbmFtZSkKIHsKICAgICBCYXNlOjpmaW5pc2hDcmVhdGlvbihl
eGVjLT5nbG9iYWxEYXRhKCkpOwogICAgIEFTU0VSVChpbmhlcml0cygmc19pbmZvKSk7CiAgICAg
bV9leGVjdXRhYmxlLnNldChleGVjLT5nbG9iYWxEYXRhKCksIHRoaXMsIGV4ZWN1dGFibGUpOwot
ICAgIHB1dERpcmVjdChleGVjLT5nbG9iYWxEYXRhKCksIGV4ZWMtPmdsb2JhbERhdGEoKS5wcm9w
ZXJ0eU5hbWVzLT5uYW1lLCBqc1N0cmluZyhleGVjLCBuYW1lLmlzTnVsbCgpID8gIiIgOiBuYW1l
LnVzdHJpbmcoKSksIERvbnREZWxldGUgfCBSZWFkT25seSB8IERvbnRFbnVtKTsKKyAgICBwdXRE
aXJlY3QoZXhlYy0+Z2xvYmFsRGF0YSgpLCBleGVjLT5nbG9iYWxEYXRhKCkucHJvcGVydHlOYW1l
cy0+bmFtZSwganNTdHJpbmcoZXhlYywgbmFtZS5pc051bGwoKSA/ICIiIDogbmFtZSksIERvbnRE
ZWxldGUgfCBSZWFkT25seSB8IERvbnRFbnVtKTsKICAgICBwdXREaXJlY3QoZXhlYy0+Z2xvYmFs
RGF0YSgpLCBleGVjLT5wcm9wZXJ0eU5hbWVzKCkubGVuZ3RoLCBqc051bWJlcihsZW5ndGgpLCBE
b250RGVsZXRlIHwgUmVhZE9ubHkgfCBEb250RW51bSk7CiB9CiAKQEAgLTE4MywxNCArMTgzLDE0
IEBAIENhbGxUeXBlIEpTRnVuY3Rpb246OmdldENhbGxEYXRhKEpTQ2VsbCoKICAgICByZXR1cm4g
Q2FsbFR5cGVKUzsKIH0KIAotSlNWYWx1ZSBKU0Z1bmN0aW9uOjphcmd1bWVudHNHZXR0ZXIoRXhl
Y1N0YXRlKiBleGVjLCBKU1ZhbHVlIHNsb3RCYXNlLCBjb25zdCBJZGVudGlmaWVyJikKK0pTVmFs
dWUgSlNGdW5jdGlvbjo6YXJndW1lbnRzR2V0dGVyKEV4ZWNTdGF0ZSogZXhlYywgSlNWYWx1ZSBz
bG90QmFzZSwgUHJvcGVydHlOYW1lKQogewogICAgIEpTRnVuY3Rpb24qIHRoaXNPYmogPSBqc0Nh
c3Q8SlNGdW5jdGlvbio+KHNsb3RCYXNlKTsKICAgICBBU1NFUlQoIXRoaXNPYmotPmlzSG9zdEZ1
bmN0aW9uKCkpOwogICAgIHJldHVybiBleGVjLT5pbnRlcnByZXRlcigpLT5yZXRyaWV2ZUFyZ3Vt
ZW50c0Zyb21WTUNvZGUoZXhlYywgdGhpc09iaik7CiB9CiAKLUpTVmFsdWUgSlNGdW5jdGlvbjo6
Y2FsbGVyR2V0dGVyKEV4ZWNTdGF0ZSogZXhlYywgSlNWYWx1ZSBzbG90QmFzZSwgY29uc3QgSWRl
bnRpZmllciYpCitKU1ZhbHVlIEpTRnVuY3Rpb246OmNhbGxlckdldHRlcihFeGVjU3RhdGUqIGV4
ZWMsIEpTVmFsdWUgc2xvdEJhc2UsIFByb3BlcnR5TmFtZSkKIHsKICAgICBKU0Z1bmN0aW9uKiB0
aGlzT2JqID0ganNDYXN0PEpTRnVuY3Rpb24qPihzbG90QmFzZSk7CiAgICAgQVNTRVJUKCF0aGlz
T2JqLT5pc0hvc3RGdW5jdGlvbigpKTsKQEAgLTIwNSwxNCArMjA1LDE0IEBAIEpTVmFsdWUgSlNG
dW5jdGlvbjo6Y2FsbGVyR2V0dGVyKEV4ZWNTdGEKICAgICByZXR1cm4gdGhyb3dUeXBlRXJyb3Io
ZXhlYywgIkZ1bmN0aW9uLmNhbGxlciB1c2VkIHRvIHJldHJpZXZlIHN0cmljdCBjYWxsZXIiKTsK
IH0KIAotSlNWYWx1ZSBKU0Z1bmN0aW9uOjpsZW5ndGhHZXR0ZXIoRXhlY1N0YXRlKiwgSlNWYWx1
ZSBzbG90QmFzZSwgY29uc3QgSWRlbnRpZmllciYpCitKU1ZhbHVlIEpTRnVuY3Rpb246Omxlbmd0
aEdldHRlcihFeGVjU3RhdGUqLCBKU1ZhbHVlIHNsb3RCYXNlLCBQcm9wZXJ0eU5hbWUpCiB7CiAg
ICAgSlNGdW5jdGlvbiogdGhpc09iaiA9IGpzQ2FzdDxKU0Z1bmN0aW9uKj4oc2xvdEJhc2UpOwog
ICAgIEFTU0VSVCghdGhpc09iai0+aXNIb3N0RnVuY3Rpb24oKSk7CiAgICAgcmV0dXJuIGpzTnVt
YmVyKHRoaXNPYmotPmpzRXhlY3V0YWJsZSgpLT5wYXJhbWV0ZXJDb3VudCgpKTsKIH0KIAotYm9v
bCBKU0Z1bmN0aW9uOjpnZXRPd25Qcm9wZXJ0eVNsb3QoSlNDZWxsKiBjZWxsLCBFeGVjU3RhdGUq
IGV4ZWMsIGNvbnN0IElkZW50aWZpZXImIHByb3BlcnR5TmFtZSwgUHJvcGVydHlTbG90JiBzbG90
KQorYm9vbCBKU0Z1bmN0aW9uOjpnZXRPd25Qcm9wZXJ0eVNsb3QoSlNDZWxsKiBjZWxsLCBFeGVj
U3RhdGUqIGV4ZWMsIFByb3BlcnR5TmFtZSBwcm9wZXJ0eU5hbWUsIFByb3BlcnR5U2xvdCYgc2xv
dCkKIHsKICAgICBKU0Z1bmN0aW9uKiB0aGlzT2JqZWN0ID0ganNDYXN0PEpTRnVuY3Rpb24qPihj
ZWxsKTsKICAgICBpZiAodGhpc09iamVjdC0+aXNIb3N0RnVuY3Rpb24oKSkKQEAgLTI2Nyw3ICsy
NjcsNyBAQCBib29sIEpTRnVuY3Rpb246OmdldE93blByb3BlcnR5U2xvdChKU0NlCiAgICAgcmV0
dXJuIEJhc2U6OmdldE93blByb3BlcnR5U2xvdCh0aGlzT2JqZWN0LCBleGVjLCBwcm9wZXJ0eU5h
bWUsIHNsb3QpOwogfQogCi1ib29sIEpTRnVuY3Rpb246OmdldE93blByb3BlcnR5RGVzY3JpcHRv
cihKU09iamVjdCogb2JqZWN0LCBFeGVjU3RhdGUqIGV4ZWMsIGNvbnN0IElkZW50aWZpZXImIHBy
b3BlcnR5TmFtZSwgUHJvcGVydHlEZXNjcmlwdG9yJiBkZXNjcmlwdG9yKQorYm9vbCBKU0Z1bmN0
aW9uOjpnZXRPd25Qcm9wZXJ0eURlc2NyaXB0b3IoSlNPYmplY3QqIG9iamVjdCwgRXhlY1N0YXRl
KiBleGVjLCBQcm9wZXJ0eU5hbWUgcHJvcGVydHlOYW1lLCBQcm9wZXJ0eURlc2NyaXB0b3ImIGRl
c2NyaXB0b3IpCiB7CiAgICAgSlNGdW5jdGlvbiogdGhpc09iamVjdCA9IGpzQ2FzdDxKU0Z1bmN0
aW9uKj4ob2JqZWN0KTsKICAgICBpZiAodGhpc09iamVjdC0+aXNIb3N0RnVuY3Rpb24oKSkKQEAg
LTMzMCw3ICszMzAsNyBAQCB2b2lkIEpTRnVuY3Rpb246OmdldE93blByb3BlcnR5TmFtZXMoSlNP
CiAgICAgQmFzZTo6Z2V0T3duUHJvcGVydHlOYW1lcyh0aGlzT2JqZWN0LCBleGVjLCBwcm9wZXJ0
eU5hbWVzLCBtb2RlKTsKIH0KIAotdm9pZCBKU0Z1bmN0aW9uOjpwdXQoSlNDZWxsKiBjZWxsLCBF
eGVjU3RhdGUqIGV4ZWMsIGNvbnN0IElkZW50aWZpZXImIHByb3BlcnR5TmFtZSwgSlNWYWx1ZSB2
YWx1ZSwgUHV0UHJvcGVydHlTbG90JiBzbG90KQordm9pZCBKU0Z1bmN0aW9uOjpwdXQoSlNDZWxs
KiBjZWxsLCBFeGVjU3RhdGUqIGV4ZWMsIFByb3BlcnR5TmFtZSBwcm9wZXJ0eU5hbWUsIEpTVmFs
dWUgdmFsdWUsIFB1dFByb3BlcnR5U2xvdCYgc2xvdCkKIHsKICAgICBKU0Z1bmN0aW9uKiB0aGlz
T2JqZWN0ID0ganNDYXN0PEpTRnVuY3Rpb24qPihjZWxsKTsKICAgICBpZiAodGhpc09iamVjdC0+
aXNIb3N0RnVuY3Rpb24oKSkgewpAQCAtMzU5LDcgKzM1OSw3IEBAIHZvaWQgSlNGdW5jdGlvbjo6
cHV0KEpTQ2VsbCogY2VsbCwgRXhlY1MKICAgICBCYXNlOjpwdXQodGhpc09iamVjdCwgZXhlYywg
cHJvcGVydHlOYW1lLCB2YWx1ZSwgc2xvdCk7CiB9CiAKLWJvb2wgSlNGdW5jdGlvbjo6ZGVsZXRl
UHJvcGVydHkoSlNDZWxsKiBjZWxsLCBFeGVjU3RhdGUqIGV4ZWMsIGNvbnN0IElkZW50aWZpZXIm
IHByb3BlcnR5TmFtZSkKK2Jvb2wgSlNGdW5jdGlvbjo6ZGVsZXRlUHJvcGVydHkoSlNDZWxsKiBj
ZWxsLCBFeGVjU3RhdGUqIGV4ZWMsIFByb3BlcnR5TmFtZSBwcm9wZXJ0eU5hbWUpCiB7CiAgICAg
SlNGdW5jdGlvbiogdGhpc09iamVjdCA9IGpzQ2FzdDxKU0Z1bmN0aW9uKj4oY2VsbCk7CiAgICAg
Ly8gRm9yIG5vbi1ob3N0IGZ1bmN0aW9ucywgZG9uJ3QgbGV0IHRoZXNlIHByb3BlcnRpZXMgYnkg
ZGVsZXRlZCAtIGV4Y2VwdCBieSBEZWZpbmVPd25Qcm9wZXJ0eS4KQEAgLTM3Miw3ICszNzIsNyBA
QCBib29sIEpTRnVuY3Rpb246OmRlbGV0ZVByb3BlcnR5KEpTQ2VsbCogCiAgICAgcmV0dXJuIEJh
c2U6OmRlbGV0ZVByb3BlcnR5KHRoaXNPYmplY3QsIGV4ZWMsIHByb3BlcnR5TmFtZSk7CiB9CiAK
LWJvb2wgSlNGdW5jdGlvbjo6ZGVmaW5lT3duUHJvcGVydHkoSlNPYmplY3QqIG9iamVjdCwgRXhl
Y1N0YXRlKiBleGVjLCBjb25zdCBJZGVudGlmaWVyJiBwcm9wZXJ0eU5hbWUsIFByb3BlcnR5RGVz
Y3JpcHRvciYgZGVzY3JpcHRvciwgYm9vbCB0aHJvd0V4Y2VwdGlvbikKK2Jvb2wgSlNGdW5jdGlv
bjo6ZGVmaW5lT3duUHJvcGVydHkoSlNPYmplY3QqIG9iamVjdCwgRXhlY1N0YXRlKiBleGVjLCBQ
cm9wZXJ0eU5hbWUgcHJvcGVydHlOYW1lLCBQcm9wZXJ0eURlc2NyaXB0b3ImIGRlc2NyaXB0b3Is
IGJvb2wgdGhyb3dFeGNlcHRpb24pCiB7CiAgICAgSlNGdW5jdGlvbiogdGhpc09iamVjdCA9IGpz
Q2FzdDxKU0Z1bmN0aW9uKj4ob2JqZWN0KTsKICAgICBpZiAodGhpc09iamVjdC0+aXNIb3N0RnVu
Y3Rpb24oKSkKQEAgLTQ1NSw3ICs0NTUsNyBAQCBVU3RyaW5nIGdldENhbGN1bGF0ZWREaXNwbGF5
TmFtZShDYWxsRnJhCiAgICAgICAgIHJldHVybiBmdW5jdGlvbi0+Y2FsY3VsYXRlZERpc3BsYXlO
YW1lKGNhbGxGcmFtZSk7CiAgICAgaWYgKEludGVybmFsRnVuY3Rpb24qIGZ1bmN0aW9uID0ganNE
eW5hbWljQ2FzdDxJbnRlcm5hbEZ1bmN0aW9uKj4ob2JqZWN0KSkKICAgICAgICAgcmV0dXJuIGZ1
bmN0aW9uLT5jYWxjdWxhdGVkRGlzcGxheU5hbWUoY2FsbEZyYW1lKTsKLSAgICByZXR1cm4gY2Fs
bEZyYW1lLT5nbG9iYWxEYXRhKCkucHJvcGVydHlOYW1lcy0+ZW1wdHlJZGVudGlmaWVyLnVzdHJp
bmcoKTsKKyAgICByZXR1cm4gIiI7CiB9CiAKIH0gLy8gbmFtZXNwYWNlIEpTQwpJbmRleDogU291
cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvSlNGdW5jdGlvbi5oCj09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNv
dXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL0pTRnVuY3Rpb24uaAkocmV2aXNpb24gMTE2Njcw
KQorKysgU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvSlNGdW5jdGlvbi5oCSh3b3JraW5n
IGNvcHkpCkBAIC01NSw3ICs1NSw3IEBAIG5hbWVzcGFjZSBKU0MgewogICAgIHB1YmxpYzoKICAg
ICAgICAgdHlwZWRlZiBKU05vbkZpbmFsT2JqZWN0IEJhc2U7CiAKLSAgICAgICAgSlNfRVhQT1JU
X1BSSVZBVEUgc3RhdGljIEpTRnVuY3Rpb24qIGNyZWF0ZShFeGVjU3RhdGUqLCBKU0dsb2JhbE9i
amVjdCosIGludCBsZW5ndGgsIGNvbnN0IElkZW50aWZpZXImIG5hbWUsIE5hdGl2ZUZ1bmN0aW9u
IG5hdGl2ZUZ1bmN0aW9uLCBJbnRyaW5zaWMgPSBOb0ludHJpbnNpYywgTmF0aXZlRnVuY3Rpb24g
bmF0aXZlQ29uc3RydWN0b3IgPSBjYWxsSG9zdEZ1bmN0aW9uQXNDb25zdHJ1Y3Rvcik7CisgICAg
ICAgIEpTX0VYUE9SVF9QUklWQVRFIHN0YXRpYyBKU0Z1bmN0aW9uKiBjcmVhdGUoRXhlY1N0YXRl
KiwgSlNHbG9iYWxPYmplY3QqLCBpbnQgbGVuZ3RoLCBjb25zdCBVU3RyaW5nJiBuYW1lLCBOYXRp
dmVGdW5jdGlvbiwgSW50cmluc2ljID0gTm9JbnRyaW5zaWMsIE5hdGl2ZUZ1bmN0aW9uIG5hdGl2
ZUNvbnN0cnVjdG9yID0gY2FsbEhvc3RGdW5jdGlvbkFzQ29uc3RydWN0b3IpOwogCiAgICAgICAg
IHN0YXRpYyBKU0Z1bmN0aW9uKiBjcmVhdGUoRXhlY1N0YXRlKiBleGVjLCBGdW5jdGlvbkV4ZWN1
dGFibGUqIGV4ZWN1dGFibGUsIFNjb3BlQ2hhaW5Ob2RlKiBzY29wZUNoYWluKQogICAgICAgICB7
CkBAIC0xMzksMTkgKzEzOSwxOSBAQCBuYW1lc3BhY2UgSlNDIHsKICAgICAgICAgSlNfRVhQT1JU
X1BSSVZBVEUgSlNGdW5jdGlvbihFeGVjU3RhdGUqLCBKU0dsb2JhbE9iamVjdCosIFN0cnVjdHVy
ZSopOwogICAgICAgICBKU0Z1bmN0aW9uKEV4ZWNTdGF0ZSosIEZ1bmN0aW9uRXhlY3V0YWJsZSos
IFNjb3BlQ2hhaW5Ob2RlKik7CiAgICAgICAgIAotICAgICAgICB2b2lkIGZpbmlzaENyZWF0aW9u
KEV4ZWNTdGF0ZSosIE5hdGl2ZUV4ZWN1dGFibGUqLCBpbnQgbGVuZ3RoLCBjb25zdCBJZGVudGlm
aWVyJiBuYW1lKTsKKyAgICAgICAgdm9pZCBmaW5pc2hDcmVhdGlvbihFeGVjU3RhdGUqLCBOYXRp
dmVFeGVjdXRhYmxlKiwgaW50IGxlbmd0aCwgY29uc3QgVVN0cmluZyYgbmFtZSk7CiAgICAgICAg
IHZvaWQgZmluaXNoQ3JlYXRpb24oRXhlY1N0YXRlKiwgRnVuY3Rpb25FeGVjdXRhYmxlKiwgU2Nv
cGVDaGFpbk5vZGUqKTsKIAogICAgICAgICBTdHJ1Y3R1cmUqIGNhY2hlSW5oZXJpdG9ySUQoRXhl
Y1N0YXRlKik7CiAKLSAgICAgICAgc3RhdGljIGJvb2wgZ2V0T3duUHJvcGVydHlTbG90KEpTQ2Vs
bCosIEV4ZWNTdGF0ZSosIGNvbnN0IElkZW50aWZpZXImLCBQcm9wZXJ0eVNsb3QmKTsKLSAgICAg
ICAgc3RhdGljIGJvb2wgZ2V0T3duUHJvcGVydHlEZXNjcmlwdG9yKEpTT2JqZWN0KiwgRXhlY1N0
YXRlKiwgY29uc3QgSWRlbnRpZmllciYsIFByb3BlcnR5RGVzY3JpcHRvciYpOworICAgICAgICBz
dGF0aWMgYm9vbCBnZXRPd25Qcm9wZXJ0eVNsb3QoSlNDZWxsKiwgRXhlY1N0YXRlKiwgUHJvcGVy
dHlOYW1lLCBQcm9wZXJ0eVNsb3QmKTsKKyAgICAgICAgc3RhdGljIGJvb2wgZ2V0T3duUHJvcGVy
dHlEZXNjcmlwdG9yKEpTT2JqZWN0KiwgRXhlY1N0YXRlKiwgUHJvcGVydHlOYW1lLCBQcm9wZXJ0
eURlc2NyaXB0b3ImKTsKICAgICAgICAgc3RhdGljIHZvaWQgZ2V0T3duUHJvcGVydHlOYW1lcyhK
U09iamVjdCosIEV4ZWNTdGF0ZSosIFByb3BlcnR5TmFtZUFycmF5JiwgRW51bWVyYXRpb25Nb2Rl
ID0gRXhjbHVkZURvbnRFbnVtUHJvcGVydGllcyk7Ci0gICAgICAgIHN0YXRpYyBib29sIGRlZmlu
ZU93blByb3BlcnR5KEpTT2JqZWN0KiwgRXhlY1N0YXRlKiwgY29uc3QgSWRlbnRpZmllciYgcHJv
cGVydHlOYW1lLCBQcm9wZXJ0eURlc2NyaXB0b3ImLCBib29sIHNob3VsZFRocm93KTsKKyAgICAg
ICAgc3RhdGljIGJvb2wgZGVmaW5lT3duUHJvcGVydHkoSlNPYmplY3QqLCBFeGVjU3RhdGUqLCBQ
cm9wZXJ0eU5hbWUsIFByb3BlcnR5RGVzY3JpcHRvciYsIGJvb2wgc2hvdWxkVGhyb3cpOwogCi0g
ICAgICAgIHN0YXRpYyB2b2lkIHB1dChKU0NlbGwqLCBFeGVjU3RhdGUqLCBjb25zdCBJZGVudGlm
aWVyJiBwcm9wZXJ0eU5hbWUsIEpTVmFsdWUsIFB1dFByb3BlcnR5U2xvdCYpOworICAgICAgICBz
dGF0aWMgdm9pZCBwdXQoSlNDZWxsKiwgRXhlY1N0YXRlKiwgUHJvcGVydHlOYW1lLCBKU1ZhbHVl
LCBQdXRQcm9wZXJ0eVNsb3QmKTsKIAotICAgICAgICBzdGF0aWMgYm9vbCBkZWxldGVQcm9wZXJ0
eShKU0NlbGwqLCBFeGVjU3RhdGUqLCBjb25zdCBJZGVudGlmaWVyJiBwcm9wZXJ0eU5hbWUpOwor
ICAgICAgICBzdGF0aWMgYm9vbCBkZWxldGVQcm9wZXJ0eShKU0NlbGwqLCBFeGVjU3RhdGUqLCBQ
cm9wZXJ0eU5hbWUpOwogCiAgICAgICAgIHN0YXRpYyB2b2lkIHZpc2l0Q2hpbGRyZW4oSlNDZWxs
KiwgU2xvdFZpc2l0b3ImKTsKIApAQCAtMTYwLDkgKzE2MCw5IEBAIG5hbWVzcGFjZSBKU0Mgewog
ICAgICAgICAKICAgICAgICAgSlNfRVhQT1JUX1BSSVZBVEUgYm9vbCBpc0hvc3RGdW5jdGlvbk5v
bklubGluZSgpIGNvbnN0OwogCi0gICAgICAgIHN0YXRpYyBKU1ZhbHVlIGFyZ3VtZW50c0dldHRl
cihFeGVjU3RhdGUqLCBKU1ZhbHVlLCBjb25zdCBJZGVudGlmaWVyJik7Ci0gICAgICAgIHN0YXRp
YyBKU1ZhbHVlIGNhbGxlckdldHRlcihFeGVjU3RhdGUqLCBKU1ZhbHVlLCBjb25zdCBJZGVudGlm
aWVyJik7Ci0gICAgICAgIHN0YXRpYyBKU1ZhbHVlIGxlbmd0aEdldHRlcihFeGVjU3RhdGUqLCBK
U1ZhbHVlLCBjb25zdCBJZGVudGlmaWVyJik7CisgICAgICAgIHN0YXRpYyBKU1ZhbHVlIGFyZ3Vt
ZW50c0dldHRlcihFeGVjU3RhdGUqLCBKU1ZhbHVlLCBQcm9wZXJ0eU5hbWUpOworICAgICAgICBz
dGF0aWMgSlNWYWx1ZSBjYWxsZXJHZXR0ZXIoRXhlY1N0YXRlKiwgSlNWYWx1ZSwgUHJvcGVydHlO
YW1lKTsKKyAgICAgICAgc3RhdGljIEpTVmFsdWUgbGVuZ3RoR2V0dGVyKEV4ZWNTdGF0ZSosIEpT
VmFsdWUsIFByb3BlcnR5TmFtZSk7CiAKICAgICAgICAgV3JpdGVCYXJyaWVyPEV4ZWN1dGFibGVC
YXNlPiBtX2V4ZWN1dGFibGU7CiAgICAgICAgIFdyaXRlQmFycmllcjxTY29wZUNoYWluTm9kZT4g
bV9zY29wZUNoYWluOwpJbmRleDogU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvSlNHbG9i
YWxPYmplY3QuY3BwCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1l
L0pTR2xvYmFsT2JqZWN0LmNwcAkocmV2aXNpb24gMTE2NjY3KQorKysgU291cmNlL0phdmFTY3Jp
cHRDb3JlL3J1bnRpbWUvSlNHbG9iYWxPYmplY3QuY3BwCSh3b3JraW5nIGNvcHkpCkBAIC0xNDIs
NyArMTQyLDcgQEAgdm9pZCBKU0dsb2JhbE9iamVjdDo6aW5pdChKU09iamVjdCogdGhpcwogICAg
IHJlc2V0KHByb3RvdHlwZSgpKTsKIH0KIAotdm9pZCBKU0dsb2JhbE9iamVjdDo6cHV0KEpTQ2Vs
bCogY2VsbCwgRXhlY1N0YXRlKiBleGVjLCBjb25zdCBJZGVudGlmaWVyJiBwcm9wZXJ0eU5hbWUs
IEpTVmFsdWUgdmFsdWUsIFB1dFByb3BlcnR5U2xvdCYgc2xvdCkKK3ZvaWQgSlNHbG9iYWxPYmpl
Y3Q6OnB1dChKU0NlbGwqIGNlbGwsIEV4ZWNTdGF0ZSogZXhlYywgUHJvcGVydHlOYW1lIHByb3Bl
cnR5TmFtZSwgSlNWYWx1ZSB2YWx1ZSwgUHV0UHJvcGVydHlTbG90JiBzbG90KQogewogICAgIEpT
R2xvYmFsT2JqZWN0KiB0aGlzT2JqZWN0ID0ganNDYXN0PEpTR2xvYmFsT2JqZWN0Kj4oY2VsbCk7
CiAgICAgQVNTRVJUKCFIZWFwOjpoZWFwKHZhbHVlKSB8fCBIZWFwOjpoZWFwKHZhbHVlKSA9PSBI
ZWFwOjpoZWFwKHRoaXNPYmplY3QpKTsKQEAgLTE1Miw3ICsxNTIsNyBAQCB2b2lkIEpTR2xvYmFs
T2JqZWN0OjpwdXQoSlNDZWxsKiBjZWxsLCBFCiAgICAgSlNWYXJpYWJsZU9iamVjdDo6cHV0KHRo
aXNPYmplY3QsIGV4ZWMsIHByb3BlcnR5TmFtZSwgdmFsdWUsIHNsb3QpOwogfQogCi12b2lkIEpT
R2xvYmFsT2JqZWN0OjpwdXREaXJlY3RWaXJ0dWFsKEpTT2JqZWN0KiBvYmplY3QsIEV4ZWNTdGF0
ZSogZXhlYywgY29uc3QgSWRlbnRpZmllciYgcHJvcGVydHlOYW1lLCBKU1ZhbHVlIHZhbHVlLCB1
bnNpZ25lZCBhdHRyaWJ1dGVzKQordm9pZCBKU0dsb2JhbE9iamVjdDo6cHV0RGlyZWN0VmlydHVh
bChKU09iamVjdCogb2JqZWN0LCBFeGVjU3RhdGUqIGV4ZWMsIFByb3BlcnR5TmFtZSBwcm9wZXJ0
eU5hbWUsIEpTVmFsdWUgdmFsdWUsIHVuc2lnbmVkIGF0dHJpYnV0ZXMpCiB7CiAgICAgSlNHbG9i
YWxPYmplY3QqIHRoaXNPYmplY3QgPSBqc0Nhc3Q8SlNHbG9iYWxPYmplY3QqPihvYmplY3QpOwog
ICAgIEFTU0VSVCghSGVhcDo6aGVhcCh2YWx1ZSkgfHwgSGVhcDo6aGVhcCh2YWx1ZSkgPT0gSGVh
cDo6aGVhcCh0aGlzT2JqZWN0KSk7CkBAIC0xNzAsNyArMTcwLDcgQEAgdm9pZCBKU0dsb2JhbE9i
amVjdDo6cHV0RGlyZWN0VmlydHVhbChKUwogICAgIH0KIH0KIAotYm9vbCBKU0dsb2JhbE9iamVj
dDo6ZGVmaW5lT3duUHJvcGVydHkoSlNPYmplY3QqIG9iamVjdCwgRXhlY1N0YXRlKiBleGVjLCBj
b25zdCBJZGVudGlmaWVyJiBwcm9wZXJ0eU5hbWUsIFByb3BlcnR5RGVzY3JpcHRvciYgZGVzY3Jp
cHRvciwgYm9vbCBzaG91bGRUaHJvdykKK2Jvb2wgSlNHbG9iYWxPYmplY3Q6OmRlZmluZU93blBy
b3BlcnR5KEpTT2JqZWN0KiBvYmplY3QsIEV4ZWNTdGF0ZSogZXhlYywgUHJvcGVydHlOYW1lIHBy
b3BlcnR5TmFtZSwgUHJvcGVydHlEZXNjcmlwdG9yJiBkZXNjcmlwdG9yLCBib29sIHNob3VsZFRo
cm93KQogewogICAgIEpTR2xvYmFsT2JqZWN0KiB0aGlzT2JqZWN0ID0ganNDYXN0PEpTR2xvYmFs
T2JqZWN0Kj4ob2JqZWN0KTsKICAgICBQcm9wZXJ0eVNsb3Qgc2xvdDsKQEAgLTIwNSw4ICsyMDUs
OCBAQCB2b2lkIEpTR2xvYmFsT2JqZWN0OjpyZXNldChKU1ZhbHVlIHByb3RvCiAgICAgbV9hcHBs
eUZ1bmN0aW9uLnNldChleGVjLT5nbG9iYWxEYXRhKCksIHRoaXMsIGFwcGx5RnVuY3Rpb24pOwog
ICAgIG1fb2JqZWN0UHJvdG90eXBlLnNldChleGVjLT5nbG9iYWxEYXRhKCksIHRoaXMsIE9iamVj
dFByb3RvdHlwZTo6Y3JlYXRlKGV4ZWMsIHRoaXMsIE9iamVjdFByb3RvdHlwZTo6Y3JlYXRlU3Ry
dWN0dXJlKGV4ZWMtPmdsb2JhbERhdGEoKSwgdGhpcywganNOdWxsKCkpKSk7CiAgICAgR2V0dGVy
U2V0dGVyKiBwcm90b0FjY2Vzc29yID0gR2V0dGVyU2V0dGVyOjpjcmVhdGUoZXhlYyk7Ci0gICAg
cHJvdG9BY2Nlc3Nvci0+c2V0R2V0dGVyKGV4ZWMtPmdsb2JhbERhdGEoKSwgSlNGdW5jdGlvbjo6
Y3JlYXRlKGV4ZWMsIHRoaXMsIDAsIElkZW50aWZpZXIoKSwgZ2xvYmFsRnVuY1Byb3RvR2V0dGVy
KSk7Ci0gICAgcHJvdG9BY2Nlc3Nvci0+c2V0U2V0dGVyKGV4ZWMtPmdsb2JhbERhdGEoKSwgSlNG
dW5jdGlvbjo6Y3JlYXRlKGV4ZWMsIHRoaXMsIDAsIElkZW50aWZpZXIoKSwgZ2xvYmFsRnVuY1By
b3RvU2V0dGVyKSk7CisgICAgcHJvdG9BY2Nlc3Nvci0+c2V0R2V0dGVyKGV4ZWMtPmdsb2JhbERh
dGEoKSwgSlNGdW5jdGlvbjo6Y3JlYXRlKGV4ZWMsIHRoaXMsIDAsICIiLCBnbG9iYWxGdW5jUHJv
dG9HZXR0ZXIpKTsKKyAgICBwcm90b0FjY2Vzc29yLT5zZXRTZXR0ZXIoZXhlYy0+Z2xvYmFsRGF0
YSgpLCBKU0Z1bmN0aW9uOjpjcmVhdGUoZXhlYywgdGhpcywgMCwgIiIsIGdsb2JhbEZ1bmNQcm90
b1NldHRlcikpOwogICAgIG1fb2JqZWN0UHJvdG90eXBlLT5wdXREaXJlY3RBY2Nlc3NvcihleGVj
LT5nbG9iYWxEYXRhKCksIGV4ZWMtPnByb3BlcnR5TmFtZXMoKS51bmRlcnNjb3JlUHJvdG8sIHBy
b3RvQWNjZXNzb3IsIEFjY2Vzc29yIHwgRG9udEVudW0pOwogICAgIG1fZnVuY3Rpb25Qcm90b3R5
cGUtPnN0cnVjdHVyZSgpLT5zZXRQcm90b3R5cGVXaXRob3V0VHJhbnNpdGlvbihleGVjLT5nbG9i
YWxEYXRhKCksIG1fb2JqZWN0UHJvdG90eXBlLmdldCgpKTsKIApAQCAtMjkzLDcgKzI5Myw3IEBA
IHZvaWQgSlNHbG9iYWxPYmplY3Q6OnJlc2V0KEpTVmFsdWUgcHJvdG8KICAgICBwdXREaXJlY3RX
aXRob3V0VHJhbnNpdGlvbihleGVjLT5nbG9iYWxEYXRhKCksIElkZW50aWZpZXIoZXhlYywgIlR5
cGVFcnJvciIpLCBtX3R5cGVFcnJvckNvbnN0cnVjdG9yLmdldCgpLCBEb250RW51bSk7CiAgICAg
cHV0RGlyZWN0V2l0aG91dFRyYW5zaXRpb24oZXhlYy0+Z2xvYmFsRGF0YSgpLCBJZGVudGlmaWVy
KGV4ZWMsICJVUklFcnJvciIpLCBtX1VSSUVycm9yQ29uc3RydWN0b3IuZ2V0KCksIERvbnRFbnVt
KTsKIAotICAgIG1fZXZhbEZ1bmN0aW9uLnNldChleGVjLT5nbG9iYWxEYXRhKCksIHRoaXMsIEpT
RnVuY3Rpb246OmNyZWF0ZShleGVjLCB0aGlzLCAxLCBleGVjLT5wcm9wZXJ0eU5hbWVzKCkuZXZh
bCwgZ2xvYmFsRnVuY0V2YWwpKTsKKyAgICBtX2V2YWxGdW5jdGlvbi5zZXQoZXhlYy0+Z2xvYmFs
RGF0YSgpLCB0aGlzLCBKU0Z1bmN0aW9uOjpjcmVhdGUoZXhlYywgdGhpcywgMSwgZXhlYy0+cHJv
cGVydHlOYW1lcygpLmV2YWwudXN0cmluZygpLCBnbG9iYWxGdW5jRXZhbCkpOwogICAgIHB1dERp
cmVjdFdpdGhvdXRUcmFuc2l0aW9uKGV4ZWMtPmdsb2JhbERhdGEoKSwgZXhlYy0+cHJvcGVydHlO
YW1lcygpLmV2YWwsIG1fZXZhbEZ1bmN0aW9uLmdldCgpLCBEb250RW51bSk7CiAKICAgICBwdXRE
aXJlY3RXaXRob3V0VHJhbnNpdGlvbihleGVjLT5nbG9iYWxEYXRhKCksIElkZW50aWZpZXIoZXhl
YywgIkpTT04iKSwgSlNPTk9iamVjdDo6Y3JlYXRlKGV4ZWMsIHRoaXMsIEpTT05PYmplY3Q6OmNy
ZWF0ZVN0cnVjdHVyZShleGVjLT5nbG9iYWxEYXRhKCksIHRoaXMsIG1fb2JqZWN0UHJvdG90eXBl
LmdldCgpKSksIERvbnRFbnVtKTsKQEAgLTMxMSw3ICszMTEsNyBAQCB2b2lkIEpTR2xvYmFsT2Jq
ZWN0OjpyZXNldChKU1ZhbHVlIHByb3RvCiAKIHZvaWQgSlNHbG9iYWxPYmplY3Q6OmNyZWF0ZVRo
cm93VHlwZUVycm9yKEV4ZWNTdGF0ZSogZXhlYykKIHsKLSAgICBKU0Z1bmN0aW9uKiB0aHJvd2Vy
ID0gSlNGdW5jdGlvbjo6Y3JlYXRlKGV4ZWMsIHRoaXMsIDAsIElkZW50aWZpZXIoKSwgZ2xvYmFs
RnVuY1Rocm93VHlwZUVycm9yKTsKKyAgICBKU0Z1bmN0aW9uKiB0aHJvd2VyID0gSlNGdW5jdGlv
bjo6Y3JlYXRlKGV4ZWMsIHRoaXMsIDAsICIiLCBnbG9iYWxGdW5jVGhyb3dUeXBlRXJyb3IpOwog
ICAgIEdldHRlclNldHRlciogZ2V0dGVyU2V0dGVyID0gR2V0dGVyU2V0dGVyOjpjcmVhdGUoZXhl
Yyk7CiAgICAgZ2V0dGVyU2V0dGVyLT5zZXRHZXR0ZXIoZXhlYy0+Z2xvYmFsRGF0YSgpLCB0aHJv
d2VyKTsKICAgICBnZXR0ZXJTZXR0ZXItPnNldFNldHRlcihleGVjLT5nbG9iYWxEYXRhKCksIHRo
cm93ZXIpOwpAQCAtNDMxLDcgKzQzMSw3IEBAIHZvaWQgSlNHbG9iYWxPYmplY3Q6OmFkZFN0YXRp
Y0dsb2JhbHMoR2wKICAgICB9CiB9CiAKLWJvb2wgSlNHbG9iYWxPYmplY3Q6OmdldE93blByb3Bl
cnR5U2xvdChKU0NlbGwqIGNlbGwsIEV4ZWNTdGF0ZSogZXhlYywgY29uc3QgSWRlbnRpZmllciYg
cHJvcGVydHlOYW1lLCBQcm9wZXJ0eVNsb3QmIHNsb3QpCitib29sIEpTR2xvYmFsT2JqZWN0Ojpn
ZXRPd25Qcm9wZXJ0eVNsb3QoSlNDZWxsKiBjZWxsLCBFeGVjU3RhdGUqIGV4ZWMsIFByb3BlcnR5
TmFtZSBwcm9wZXJ0eU5hbWUsIFByb3BlcnR5U2xvdCYgc2xvdCkKIHsKICAgICBKU0dsb2JhbE9i
amVjdCogdGhpc09iamVjdCA9IGpzQ2FzdDxKU0dsb2JhbE9iamVjdCo+KGNlbGwpOwogICAgIGlm
IChnZXRTdGF0aWNGdW5jdGlvblNsb3Q8SlNWYXJpYWJsZU9iamVjdD4oZXhlYywgRXhlY1N0YXRl
OjpnbG9iYWxPYmplY3RUYWJsZShleGVjKSwgdGhpc09iamVjdCwgcHJvcGVydHlOYW1lLCBzbG90
KSkKQEAgLTQzOSw3ICs0MzksNyBAQCBib29sIEpTR2xvYmFsT2JqZWN0OjpnZXRPd25Qcm9wZXJ0
eVNsb3QoCiAgICAgcmV0dXJuIHRoaXNPYmplY3QtPnN5bWJvbFRhYmxlR2V0KHByb3BlcnR5TmFt
ZSwgc2xvdCk7CiB9CiAKLWJvb2wgSlNHbG9iYWxPYmplY3Q6OmdldE93blByb3BlcnR5RGVzY3Jp
cHRvcihKU09iamVjdCogb2JqZWN0LCBFeGVjU3RhdGUqIGV4ZWMsIGNvbnN0IElkZW50aWZpZXIm
IHByb3BlcnR5TmFtZSwgUHJvcGVydHlEZXNjcmlwdG9yJiBkZXNjcmlwdG9yKQorYm9vbCBKU0ds
b2JhbE9iamVjdDo6Z2V0T3duUHJvcGVydHlEZXNjcmlwdG9yKEpTT2JqZWN0KiBvYmplY3QsIEV4
ZWNTdGF0ZSogZXhlYywgUHJvcGVydHlOYW1lIHByb3BlcnR5TmFtZSwgUHJvcGVydHlEZXNjcmlw
dG9yJiBkZXNjcmlwdG9yKQogewogICAgIEpTR2xvYmFsT2JqZWN0KiB0aGlzT2JqZWN0ID0ganND
YXN0PEpTR2xvYmFsT2JqZWN0Kj4ob2JqZWN0KTsKICAgICBpZiAoZ2V0U3RhdGljRnVuY3Rpb25E
ZXNjcmlwdG9yPEpTVmFyaWFibGVPYmplY3Q+KGV4ZWMsIEV4ZWNTdGF0ZTo6Z2xvYmFsT2JqZWN0
VGFibGUoZXhlYyksIHRoaXNPYmplY3QsIHByb3BlcnR5TmFtZSwgZGVzY3JpcHRvcikpCkluZGV4
OiBTb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9KU0dsb2JhbE9iamVjdC5oCj09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT0KLS0tIFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL0pTR2xvYmFsT2JqZWN0LmgJKHJl
dmlzaW9uIDExNjY2NykKKysrIFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL0pTR2xvYmFs
T2JqZWN0LmgJKHdvcmtpbmcgY29weSkKQEAgLTE5OSwyMCArMTk5LDIwIEBAIG5hbWVzcGFjZSBK
U0MgewogCiAgICAgICAgIEpTX0VYUE9SVF9QUklWQVRFIHN0YXRpYyB2b2lkIHZpc2l0Q2hpbGRy
ZW4oSlNDZWxsKiwgU2xvdFZpc2l0b3ImKTsKIAotICAgICAgICBKU19FWFBPUlRfUFJJVkFURSBz
dGF0aWMgYm9vbCBnZXRPd25Qcm9wZXJ0eVNsb3QoSlNDZWxsKiwgRXhlY1N0YXRlKiwgY29uc3Qg
SWRlbnRpZmllciYsIFByb3BlcnR5U2xvdCYpOwotICAgICAgICBKU19FWFBPUlRfUFJJVkFURSBz
dGF0aWMgYm9vbCBnZXRPd25Qcm9wZXJ0eURlc2NyaXB0b3IoSlNPYmplY3QqLCBFeGVjU3RhdGUq
LCBjb25zdCBJZGVudGlmaWVyJiwgUHJvcGVydHlEZXNjcmlwdG9yJik7Ci0gICAgICAgIGJvb2wg
aGFzT3duUHJvcGVydHlGb3JXcml0ZShFeGVjU3RhdGUqLCBjb25zdCBJZGVudGlmaWVyJik7Ci0g
ICAgICAgIEpTX0VYUE9SVF9QUklWQVRFIHN0YXRpYyB2b2lkIHB1dChKU0NlbGwqLCBFeGVjU3Rh
dGUqLCBjb25zdCBJZGVudGlmaWVyJiwgSlNWYWx1ZSwgUHV0UHJvcGVydHlTbG90Jik7Ci0KLSAg
ICAgICAgSlNfRVhQT1JUX1BSSVZBVEUgc3RhdGljIHZvaWQgcHV0RGlyZWN0VmlydHVhbChKU09i
amVjdCosIEV4ZWNTdGF0ZSosIGNvbnN0IElkZW50aWZpZXImIHByb3BlcnR5TmFtZSwgSlNWYWx1
ZSwgdW5zaWduZWQgYXR0cmlidXRlcyk7Ci0KLSAgICAgICAgSlNfRVhQT1JUX1BSSVZBVEUgc3Rh
dGljIHZvaWQgZGVmaW5lR2V0dGVyKEpTT2JqZWN0KiwgRXhlY1N0YXRlKiwgY29uc3QgSWRlbnRp
ZmllciYgcHJvcGVydHlOYW1lLCBKU09iamVjdCogZ2V0dGVyRnVuYywgdW5zaWduZWQgYXR0cmli
dXRlcyk7Ci0gICAgICAgIEpTX0VYUE9SVF9QUklWQVRFIHN0YXRpYyB2b2lkIGRlZmluZVNldHRl
cihKU09iamVjdCosIEV4ZWNTdGF0ZSosIGNvbnN0IElkZW50aWZpZXImIHByb3BlcnR5TmFtZSwg
SlNPYmplY3QqIHNldHRlckZ1bmMsIHVuc2lnbmVkIGF0dHJpYnV0ZXMpOwotICAgICAgICBKU19F
WFBPUlRfUFJJVkFURSBzdGF0aWMgYm9vbCBkZWZpbmVPd25Qcm9wZXJ0eShKU09iamVjdCosIEV4
ZWNTdGF0ZSosIGNvbnN0IElkZW50aWZpZXImIHByb3BlcnR5TmFtZSwgUHJvcGVydHlEZXNjcmlw
dG9yJiwgYm9vbCBzaG91bGRUaHJvdyk7CisgICAgICAgIEpTX0VYUE9SVF9QUklWQVRFIHN0YXRp
YyBib29sIGdldE93blByb3BlcnR5U2xvdChKU0NlbGwqLCBFeGVjU3RhdGUqLCBQcm9wZXJ0eU5h
bWUsIFByb3BlcnR5U2xvdCYpOworICAgICAgICBKU19FWFBPUlRfUFJJVkFURSBzdGF0aWMgYm9v
bCBnZXRPd25Qcm9wZXJ0eURlc2NyaXB0b3IoSlNPYmplY3QqLCBFeGVjU3RhdGUqLCBQcm9wZXJ0
eU5hbWUsIFByb3BlcnR5RGVzY3JpcHRvciYpOworICAgICAgICBib29sIGhhc093blByb3BlcnR5
Rm9yV3JpdGUoRXhlY1N0YXRlKiwgUHJvcGVydHlOYW1lKTsKKyAgICAgICAgSlNfRVhQT1JUX1BS
SVZBVEUgc3RhdGljIHZvaWQgcHV0KEpTQ2VsbCosIEV4ZWNTdGF0ZSosIFByb3BlcnR5TmFtZSwg
SlNWYWx1ZSwgUHV0UHJvcGVydHlTbG90Jik7CisKKyAgICAgICAgSlNfRVhQT1JUX1BSSVZBVEUg
c3RhdGljIHZvaWQgcHV0RGlyZWN0VmlydHVhbChKU09iamVjdCosIEV4ZWNTdGF0ZSosIFByb3Bl
cnR5TmFtZSwgSlNWYWx1ZSwgdW5zaWduZWQgYXR0cmlidXRlcyk7CisKKyAgICAgICAgSlNfRVhQ
T1JUX1BSSVZBVEUgc3RhdGljIHZvaWQgZGVmaW5lR2V0dGVyKEpTT2JqZWN0KiwgRXhlY1N0YXRl
KiwgUHJvcGVydHlOYW1lLCBKU09iamVjdCogZ2V0dGVyRnVuYywgdW5zaWduZWQgYXR0cmlidXRl
cyk7CisgICAgICAgIEpTX0VYUE9SVF9QUklWQVRFIHN0YXRpYyB2b2lkIGRlZmluZVNldHRlcihK
U09iamVjdCosIEV4ZWNTdGF0ZSosIFByb3BlcnR5TmFtZSwgSlNPYmplY3QqIHNldHRlckZ1bmMs
IHVuc2lnbmVkIGF0dHJpYnV0ZXMpOworICAgICAgICBKU19FWFBPUlRfUFJJVkFURSBzdGF0aWMg
Ym9vbCBkZWZpbmVPd25Qcm9wZXJ0eShKU09iamVjdCosIEV4ZWNTdGF0ZSosIFByb3BlcnR5TmFt
ZSwgUHJvcGVydHlEZXNjcmlwdG9yJiwgYm9vbCBzaG91bGRUaHJvdyk7CiAKICAgICAgICAgLy8g
V2UgdXNlIHRoaXMgaW4gdGhlIGNvZGUgZ2VuZXJhdG9yIGFzIHdlIHBlcmZvcm0gc3ltYm9sIHRh
YmxlCiAgICAgICAgIC8vIGxvb2t1cHMgcHJpb3IgdG8gaW5pdGlhbGl6aW5nIHRoZSBwcm9wZXJ0
aWVzCi0gICAgICAgIGJvb2wgc3ltYm9sVGFibGVIYXNQcm9wZXJ0eShjb25zdCBJZGVudGlmaWVy
JiBwcm9wZXJ0eU5hbWUpOworICAgICAgICBib29sIHN5bWJvbFRhYmxlSGFzUHJvcGVydHkoUHJv
cGVydHlOYW1lKTsKIAogICAgICAgICAvLyBUaGUgZm9sbG93aW5nIGFjY2Vzc29ycyByZXR1cm4g
cHJpc3RpbmUgdmFsdWVzLCBldmVuIGlmIGEgc2NyaXB0IAogICAgICAgICAvLyByZXBsYWNlcyB0
aGUgZ2xvYmFsIG9iamVjdCdzIGFzc29jaWF0ZWQgcHJvcGVydHkuCkBAIC0zNjUsNyArMzY1LDcg
QEAgbmFtZXNwYWNlIEpTQyB7CiAgICAgICAgIG1fcmVnaXN0ZXJBcnJheVNpemUgPSBjb3VudDsK
ICAgICB9CiAKLSAgICBpbmxpbmUgYm9vbCBKU0dsb2JhbE9iamVjdDo6aGFzT3duUHJvcGVydHlG
b3JXcml0ZShFeGVjU3RhdGUqIGV4ZWMsIGNvbnN0IElkZW50aWZpZXImIHByb3BlcnR5TmFtZSkK
KyAgICBpbmxpbmUgYm9vbCBKU0dsb2JhbE9iamVjdDo6aGFzT3duUHJvcGVydHlGb3JXcml0ZShF
eGVjU3RhdGUqIGV4ZWMsIFByb3BlcnR5TmFtZSBwcm9wZXJ0eU5hbWUpCiAgICAgewogICAgICAg
ICBQcm9wZXJ0eVNsb3Qgc2xvdDsKICAgICAgICAgaWYgKEpTVmFyaWFibGVPYmplY3Q6OmdldE93
blByb3BlcnR5U2xvdCh0aGlzLCBleGVjLCBwcm9wZXJ0eU5hbWUsIHNsb3QpKQpAQCAtMzc0LDcg
KzM3NCw3IEBAIG5hbWVzcGFjZSBKU0MgewogICAgICAgICByZXR1cm4gc3ltYm9sVGFibGVHZXQo
cHJvcGVydHlOYW1lLCBzbG90LCBzbG90SXNXcml0ZWFibGUpOwogICAgIH0KIAotICAgIGlubGlu
ZSBib29sIEpTR2xvYmFsT2JqZWN0OjpzeW1ib2xUYWJsZUhhc1Byb3BlcnR5KGNvbnN0IElkZW50
aWZpZXImIHByb3BlcnR5TmFtZSkKKyAgICBpbmxpbmUgYm9vbCBKU0dsb2JhbE9iamVjdDo6c3lt
Ym9sVGFibGVIYXNQcm9wZXJ0eShQcm9wZXJ0eU5hbWUgcHJvcGVydHlOYW1lKQogICAgIHsKICAg
ICAgICAgU3ltYm9sVGFibGVFbnRyeSBlbnRyeSA9IHN5bWJvbFRhYmxlKCkuaW5saW5lR2V0KHBy
b3BlcnR5TmFtZS5pbXBsKCkpOwogICAgICAgICByZXR1cm4gIWVudHJ5LmlzTnVsbCgpOwpJbmRl
eDogU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvSlNOb3RBbk9iamVjdC5jcHAKPT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PQotLS0gU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvSlNOb3RBbk9iamVjdC5jcHAJ
KHJldmlzaW9uIDExNjY2NykKKysrIFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL0pTTm90
QW5PYmplY3QuY3BwCSh3b3JraW5nIGNvcHkpCkBAIC00Nyw3ICs0Nyw3IEBAIEpTVmFsdWUgSlNO
b3RBbk9iamVjdDo6ZGVmYXVsdFZhbHVlKGNvbnMKIH0KIAogLy8gSlNPYmplY3QgbWV0aG9kcwot
Ym9vbCBKU05vdEFuT2JqZWN0OjpnZXRPd25Qcm9wZXJ0eVNsb3QoSlNDZWxsKiwgRXhlY1N0YXRl
KiBleGVjLCBjb25zdCBJZGVudGlmaWVyJiwgUHJvcGVydHlTbG90JikKK2Jvb2wgSlNOb3RBbk9i
amVjdDo6Z2V0T3duUHJvcGVydHlTbG90KEpTQ2VsbCosIEV4ZWNTdGF0ZSogZXhlYywgUHJvcGVy
dHlOYW1lLCBQcm9wZXJ0eVNsb3QmKQogewogICAgIEFTU0VSVF9VTlVTRUQoZXhlYywgZXhlYy0+
aGFkRXhjZXB0aW9uKCkpOwogICAgIHJldHVybiBmYWxzZTsKQEAgLTU5LDEzICs1OSwxMyBAQCBi
b29sIEpTTm90QW5PYmplY3Q6OmdldE93blByb3BlcnR5U2xvdEJ5CiAgICAgcmV0dXJuIGZhbHNl
OwogfQogCi1ib29sIEpTTm90QW5PYmplY3Q6OmdldE93blByb3BlcnR5RGVzY3JpcHRvcihKU09i
amVjdCosIEV4ZWNTdGF0ZSogZXhlYywgY29uc3QgSWRlbnRpZmllciYsIFByb3BlcnR5RGVzY3Jp
cHRvciYpCitib29sIEpTTm90QW5PYmplY3Q6OmdldE93blByb3BlcnR5RGVzY3JpcHRvcihKU09i
amVjdCosIEV4ZWNTdGF0ZSogZXhlYywgUHJvcGVydHlOYW1lLCBQcm9wZXJ0eURlc2NyaXB0b3Im
KQogewogICAgIEFTU0VSVF9VTlVTRUQoZXhlYywgZXhlYy0+aGFkRXhjZXB0aW9uKCkpOwogICAg
IHJldHVybiBmYWxzZTsKIH0KIAotdm9pZCBKU05vdEFuT2JqZWN0OjpwdXQoSlNDZWxsKiwgRXhl
Y1N0YXRlKiBleGVjLCBjb25zdCBJZGVudGlmaWVyJiAsIEpTVmFsdWUsIFB1dFByb3BlcnR5U2xv
dCYpCit2b2lkIEpTTm90QW5PYmplY3Q6OnB1dChKU0NlbGwqLCBFeGVjU3RhdGUqIGV4ZWMsIFBy
b3BlcnR5TmFtZSAsIEpTVmFsdWUsIFB1dFByb3BlcnR5U2xvdCYpCiB7CiAgICAgQVNTRVJUX1VO
VVNFRChleGVjLCBleGVjLT5oYWRFeGNlcHRpb24oKSk7CiB9CkBAIC03NSw3ICs3NSw3IEBAIHZv
aWQgSlNOb3RBbk9iamVjdDo6cHV0QnlJbmRleChKU0NlbGwqLCAKICAgICBBU1NFUlRfVU5VU0VE
KGV4ZWMsIGV4ZWMtPmhhZEV4Y2VwdGlvbigpKTsKIH0KIAotYm9vbCBKU05vdEFuT2JqZWN0Ojpk
ZWxldGVQcm9wZXJ0eShKU0NlbGwqLCBFeGVjU3RhdGUqIGV4ZWMsIGNvbnN0IElkZW50aWZpZXIm
KQorYm9vbCBKU05vdEFuT2JqZWN0OjpkZWxldGVQcm9wZXJ0eShKU0NlbGwqLCBFeGVjU3RhdGUq
IGV4ZWMsIFByb3BlcnR5TmFtZSkKIHsKICAgICBBU1NFUlRfVU5VU0VEKGV4ZWMsIGV4ZWMtPmhh
ZEV4Y2VwdGlvbigpKTsKICAgICByZXR1cm4gZmFsc2U7CkluZGV4OiBTb3VyY2UvSmF2YVNjcmlw
dENvcmUvcnVudGltZS9KU05vdEFuT2JqZWN0LmgKPT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL0phdmFT
Y3JpcHRDb3JlL3J1bnRpbWUvSlNOb3RBbk9iamVjdC5oCShyZXZpc2lvbiAxMTY2NjcpCisrKyBT
b3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9KU05vdEFuT2JqZWN0LmgJKHdvcmtpbmcgY29w
eSkKQEAgLTY4LDE0ICs2OCwxNCBAQCBuYW1lc3BhY2UgSlNDIHsKICAgICAgICAgc3RhdGljIEpT
VmFsdWUgZGVmYXVsdFZhbHVlKGNvbnN0IEpTT2JqZWN0KiwgRXhlY1N0YXRlKiwgUHJlZmVycmVk
UHJpbWl0aXZlVHlwZSk7CiAKICAgICAgICAgLy8gSlNPYmplY3QgbWV0aG9kcwotICAgICAgICBz
dGF0aWMgYm9vbCBnZXRPd25Qcm9wZXJ0eVNsb3QoSlNDZWxsKiwgRXhlY1N0YXRlKiwgY29uc3Qg
SWRlbnRpZmllciYgcHJvcGVydHlOYW1lLCBQcm9wZXJ0eVNsb3QmKTsKKyAgICAgICAgc3RhdGlj
IGJvb2wgZ2V0T3duUHJvcGVydHlTbG90KEpTQ2VsbCosIEV4ZWNTdGF0ZSosIFByb3BlcnR5TmFt
ZSwgUHJvcGVydHlTbG90Jik7CiAgICAgICAgIHN0YXRpYyBib29sIGdldE93blByb3BlcnR5U2xv
dEJ5SW5kZXgoSlNDZWxsKiwgRXhlY1N0YXRlKiwgdW5zaWduZWQgcHJvcGVydHlOYW1lLCBQcm9w
ZXJ0eVNsb3QmKTsKLSAgICAgICAgc3RhdGljIGJvb2wgZ2V0T3duUHJvcGVydHlEZXNjcmlwdG9y
KEpTT2JqZWN0KiwgRXhlY1N0YXRlKiwgY29uc3QgSWRlbnRpZmllciYsIFByb3BlcnR5RGVzY3Jp
cHRvciYpOworICAgICAgICBzdGF0aWMgYm9vbCBnZXRPd25Qcm9wZXJ0eURlc2NyaXB0b3IoSlNP
YmplY3QqLCBFeGVjU3RhdGUqLCBQcm9wZXJ0eU5hbWUsIFByb3BlcnR5RGVzY3JpcHRvciYpOwog
Ci0gICAgICAgIHN0YXRpYyB2b2lkIHB1dChKU0NlbGwqLCBFeGVjU3RhdGUqLCBjb25zdCBJZGVu
dGlmaWVyJiBwcm9wZXJ0eU5hbWUsIEpTVmFsdWUsIFB1dFByb3BlcnR5U2xvdCYpOworICAgICAg
ICBzdGF0aWMgdm9pZCBwdXQoSlNDZWxsKiwgRXhlY1N0YXRlKiwgUHJvcGVydHlOYW1lLCBKU1Zh
bHVlLCBQdXRQcm9wZXJ0eVNsb3QmKTsKICAgICAgICAgc3RhdGljIHZvaWQgcHV0QnlJbmRleChK
U0NlbGwqLCBFeGVjU3RhdGUqLCB1bnNpZ25lZCBwcm9wZXJ0eU5hbWUsIEpTVmFsdWUsIGJvb2wg
c2hvdWxkVGhyb3cpOwogCi0gICAgICAgIHN0YXRpYyBib29sIGRlbGV0ZVByb3BlcnR5KEpTQ2Vs
bCosIEV4ZWNTdGF0ZSosIGNvbnN0IElkZW50aWZpZXImIHByb3BlcnR5TmFtZSk7CisgICAgICAg
IHN0YXRpYyBib29sIGRlbGV0ZVByb3BlcnR5KEpTQ2VsbCosIEV4ZWNTdGF0ZSosIFByb3BlcnR5
TmFtZSk7CiAgICAgICAgIHN0YXRpYyBib29sIGRlbGV0ZVByb3BlcnR5QnlJbmRleChKU0NlbGwq
LCBFeGVjU3RhdGUqLCB1bnNpZ25lZCBwcm9wZXJ0eU5hbWUpOwogCiAgICAgICAgIHN0YXRpYyB2
b2lkIGdldE93blByb3BlcnR5TmFtZXMoSlNPYmplY3QqLCBFeGVjU3RhdGUqLCBQcm9wZXJ0eU5h
bWVBcnJheSYsIEVudW1lcmF0aW9uTW9kZSk7CkluZGV4OiBTb3VyY2UvSmF2YVNjcmlwdENvcmUv
cnVudGltZS9KU09OT2JqZWN0LmNwcAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvSmF2YVNjcmlwdENv
cmUvcnVudGltZS9KU09OT2JqZWN0LmNwcAkocmV2aXNpb24gMTE2NjY3KQorKysgU291cmNlL0ph
dmFTY3JpcHRDb3JlL3J1bnRpbWUvSlNPTk9iamVjdC5jcHAJKHdvcmtpbmcgY29weSkKQEAgLTU5
NSwxMiArNTk1LDEyIEBAIGNvbnN0IENsYXNzSW5mbyBKU09OT2JqZWN0OjpzX2luZm8gPSB7ICIK
IAogLy8gRUNNQSAxNS44CiAKLWJvb2wgSlNPTk9iamVjdDo6Z2V0T3duUHJvcGVydHlTbG90KEpT
Q2VsbCogY2VsbCwgRXhlY1N0YXRlKiBleGVjLCBjb25zdCBJZGVudGlmaWVyJiBwcm9wZXJ0eU5h
bWUsIFByb3BlcnR5U2xvdCYgc2xvdCkKK2Jvb2wgSlNPTk9iamVjdDo6Z2V0T3duUHJvcGVydHlT
bG90KEpTQ2VsbCogY2VsbCwgRXhlY1N0YXRlKiBleGVjLCBQcm9wZXJ0eU5hbWUgcHJvcGVydHlO
YW1lLCBQcm9wZXJ0eVNsb3QmIHNsb3QpCiB7CiAgICAgcmV0dXJuIGdldFN0YXRpY0Z1bmN0aW9u
U2xvdDxKU09iamVjdD4oZXhlYywgRXhlY1N0YXRlOjpqc29uVGFibGUoZXhlYyksIGpzQ2FzdDxK
U09OT2JqZWN0Kj4oY2VsbCksIHByb3BlcnR5TmFtZSwgc2xvdCk7CiB9CiAKLWJvb2wgSlNPTk9i
amVjdDo6Z2V0T3duUHJvcGVydHlEZXNjcmlwdG9yKEpTT2JqZWN0KiBvYmplY3QsIEV4ZWNTdGF0
ZSogZXhlYywgY29uc3QgSWRlbnRpZmllciYgcHJvcGVydHlOYW1lLCBQcm9wZXJ0eURlc2NyaXB0
b3ImIGRlc2NyaXB0b3IpCitib29sIEpTT05PYmplY3Q6OmdldE93blByb3BlcnR5RGVzY3JpcHRv
cihKU09iamVjdCogb2JqZWN0LCBFeGVjU3RhdGUqIGV4ZWMsIFByb3BlcnR5TmFtZSBwcm9wZXJ0
eU5hbWUsIFByb3BlcnR5RGVzY3JpcHRvciYgZGVzY3JpcHRvcikKIHsKICAgICByZXR1cm4gZ2V0
U3RhdGljRnVuY3Rpb25EZXNjcmlwdG9yPEpTT2JqZWN0PihleGVjLCBFeGVjU3RhdGU6Ompzb25U
YWJsZShleGVjKSwganNDYXN0PEpTT05PYmplY3QqPihvYmplY3QpLCBwcm9wZXJ0eU5hbWUsIGRl
c2NyaXB0b3IpOwogfQpJbmRleDogU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvSlNPTk9i
amVjdC5oCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL0pTT05P
YmplY3QuaAkocmV2aXNpb24gMTE2NjY3KQorKysgU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRp
bWUvSlNPTk9iamVjdC5oCSh3b3JraW5nIGNvcHkpCkBAIC01Niw4ICs1Niw4IEBAIG5hbWVzcGFj
ZSBKU0MgewogCiAgICAgcHJpdmF0ZToKICAgICAgICAgSlNPTk9iamVjdChKU0dsb2JhbE9iamVj
dCosIFN0cnVjdHVyZSopOwotICAgICAgICBzdGF0aWMgYm9vbCBnZXRPd25Qcm9wZXJ0eVNsb3Qo
SlNDZWxsKiwgRXhlY1N0YXRlKiwgY29uc3QgSWRlbnRpZmllciYsIFByb3BlcnR5U2xvdCYpOwot
ICAgICAgICBzdGF0aWMgYm9vbCBnZXRPd25Qcm9wZXJ0eURlc2NyaXB0b3IoSlNPYmplY3QqLCBF
eGVjU3RhdGUqLCBjb25zdCBJZGVudGlmaWVyJiwgUHJvcGVydHlEZXNjcmlwdG9yJik7CisgICAg
ICAgIHN0YXRpYyBib29sIGdldE93blByb3BlcnR5U2xvdChKU0NlbGwqLCBFeGVjU3RhdGUqLCBQ
cm9wZXJ0eU5hbWUsIFByb3BlcnR5U2xvdCYpOworICAgICAgICBzdGF0aWMgYm9vbCBnZXRPd25Q
cm9wZXJ0eURlc2NyaXB0b3IoSlNPYmplY3QqLCBFeGVjU3RhdGUqLCBQcm9wZXJ0eU5hbWUsIFBy
b3BlcnR5RGVzY3JpcHRvciYpOwogCiAgICAgfTsKIApJbmRleDogU291cmNlL0phdmFTY3JpcHRD
b3JlL3J1bnRpbWUvSlNPYmplY3QuY3BwCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9KYXZhU2NyaXB0
Q29yZS9ydW50aW1lL0pTT2JqZWN0LmNwcAkocmV2aXNpb24gMTE2NjY3KQorKysgU291cmNlL0ph
dmFTY3JpcHRDb3JlL3J1bnRpbWUvSlNPYmplY3QuY3BwCSh3b3JraW5nIGNvcHkpCkBAIC0xMjAs
NyArMTIwLDcgQEAgYm9vbCBKU09iamVjdDo6Z2V0T3duUHJvcGVydHlTbG90QnlJbmRleAogfQog
CiAvLyBFQ01BIDguNi4yLjIKLXZvaWQgSlNPYmplY3Q6OnB1dChKU0NlbGwqIGNlbGwsIEV4ZWNT
dGF0ZSogZXhlYywgY29uc3QgSWRlbnRpZmllciYgcHJvcGVydHlOYW1lLCBKU1ZhbHVlIHZhbHVl
LCBQdXRQcm9wZXJ0eVNsb3QmIHNsb3QpCit2b2lkIEpTT2JqZWN0OjpwdXQoSlNDZWxsKiBjZWxs
LCBFeGVjU3RhdGUqIGV4ZWMsIFByb3BlcnR5TmFtZSBwcm9wZXJ0eU5hbWUsIEpTVmFsdWUgdmFs
dWUsIFB1dFByb3BlcnR5U2xvdCYgc2xvdCkKIHsKICAgICBKU09iamVjdCogdGhpc09iamVjdCA9
IGpzQ2FzdDxKU09iamVjdCo+KGNlbGwpOwogICAgIEFTU0VSVCh2YWx1ZSk7CkBAIC0xOTIsNyAr
MTkyLDcgQEAgdm9pZCBKU09iamVjdDo6cHV0QnlJbmRleChKU0NlbGwqIGNlbGwsIAogICAgIHRo
aXNPYmplY3QtPm1ldGhvZFRhYmxlKCktPnB1dCh0aGlzT2JqZWN0LCBleGVjLCBJZGVudGlmaWVy
Ojpmcm9tKGV4ZWMsIHByb3BlcnR5TmFtZSksIHZhbHVlLCBzbG90KTsKIH0KIAotdm9pZCBKU09i
amVjdDo6cHV0RGlyZWN0VmlydHVhbChKU09iamVjdCogb2JqZWN0LCBFeGVjU3RhdGUqIGV4ZWMs
IGNvbnN0IElkZW50aWZpZXImIHByb3BlcnR5TmFtZSwgSlNWYWx1ZSB2YWx1ZSwgdW5zaWduZWQg
YXR0cmlidXRlcykKK3ZvaWQgSlNPYmplY3Q6OnB1dERpcmVjdFZpcnR1YWwoSlNPYmplY3QqIG9i
amVjdCwgRXhlY1N0YXRlKiBleGVjLCBQcm9wZXJ0eU5hbWUgcHJvcGVydHlOYW1lLCBKU1ZhbHVl
IHZhbHVlLCB1bnNpZ25lZCBhdHRyaWJ1dGVzKQogewogICAgIEFTU0VSVCghdmFsdWUuaXNHZXR0
ZXJTZXR0ZXIoKSAmJiAhKGF0dHJpYnV0ZXMgJiBBY2Nlc3NvcikpOwogICAgIFB1dFByb3BlcnR5
U2xvdCBzbG90OwpAQCAtMjIxLDcgKzIyMSw3IEBAIGJvb2wgSlNPYmplY3Q6OmFsbG93c0FjY2Vz
c0Zyb20oRXhlY1N0YXQKICAgICByZXR1cm4gZ2xvYmFsT2JqZWN0LT5nbG9iYWxPYmplY3RNZXRo
b2RUYWJsZSgpLT5hbGxvd3NBY2Nlc3NGcm9tKGdsb2JhbE9iamVjdCwgZXhlYyk7CiB9CiAKLXZv
aWQgSlNPYmplY3Q6OnB1dERpcmVjdEFjY2Vzc29yKEpTR2xvYmFsRGF0YSYgZ2xvYmFsRGF0YSwg
Y29uc3QgSWRlbnRpZmllciYgcHJvcGVydHlOYW1lLCBKU1ZhbHVlIHZhbHVlLCB1bnNpZ25lZCBh
dHRyaWJ1dGVzKQordm9pZCBKU09iamVjdDo6cHV0RGlyZWN0QWNjZXNzb3IoSlNHbG9iYWxEYXRh
JiBnbG9iYWxEYXRhLCBQcm9wZXJ0eU5hbWUgcHJvcGVydHlOYW1lLCBKU1ZhbHVlIHZhbHVlLCB1
bnNpZ25lZCBhdHRyaWJ1dGVzKQogewogICAgIEFTU0VSVCh2YWx1ZS5pc0dldHRlclNldHRlcigp
ICYmIChhdHRyaWJ1dGVzICYgQWNjZXNzb3IpKTsKIApAQCAtMjQwLDcgKzI0MCw3IEBAIHZvaWQg
SlNPYmplY3Q6OnB1dERpcmVjdEFjY2Vzc29yKEpTR2xvYmEKICAgICBzdHJ1Y3R1cmUoKS0+c2V0
SGFzR2V0dGVyU2V0dGVyUHJvcGVydGllcyhwcm9wZXJ0eU5hbWUgPT0gZ2xvYmFsRGF0YS5wcm9w
ZXJ0eU5hbWVzLT51bmRlcnNjb3JlUHJvdG8pOwogfQogCi1ib29sIEpTT2JqZWN0OjpoYXNQcm9w
ZXJ0eShFeGVjU3RhdGUqIGV4ZWMsIGNvbnN0IElkZW50aWZpZXImIHByb3BlcnR5TmFtZSkgY29u
c3QKK2Jvb2wgSlNPYmplY3Q6Omhhc1Byb3BlcnR5KEV4ZWNTdGF0ZSogZXhlYywgUHJvcGVydHlO
YW1lIHByb3BlcnR5TmFtZSkgY29uc3QKIHsKICAgICBQcm9wZXJ0eVNsb3Qgc2xvdDsKICAgICBy
ZXR1cm4gY29uc3RfY2FzdDxKU09iamVjdCo+KHRoaXMpLT5nZXRQcm9wZXJ0eVNsb3QoZXhlYywg
cHJvcGVydHlOYW1lLCBzbG90KTsKQEAgLTI1Myw3ICsyNTMsNyBAQCBib29sIEpTT2JqZWN0Ojpo
YXNQcm9wZXJ0eShFeGVjU3RhdGUqIGV4CiB9CiAKIC8vIEVDTUEgOC42LjIuNQotYm9vbCBKU09i
amVjdDo6ZGVsZXRlUHJvcGVydHkoSlNDZWxsKiBjZWxsLCBFeGVjU3RhdGUqIGV4ZWMsIGNvbnN0
IElkZW50aWZpZXImIHByb3BlcnR5TmFtZSkKK2Jvb2wgSlNPYmplY3Q6OmRlbGV0ZVByb3BlcnR5
KEpTQ2VsbCogY2VsbCwgRXhlY1N0YXRlKiBleGVjLCBQcm9wZXJ0eU5hbWUgcHJvcGVydHlOYW1l
KQogewogICAgIEpTT2JqZWN0KiB0aGlzT2JqZWN0ID0ganNDYXN0PEpTT2JqZWN0Kj4oY2VsbCk7
CiAKQEAgLTI3OCw3ICsyNzgsNyBAQCBib29sIEpTT2JqZWN0OjpkZWxldGVQcm9wZXJ0eShKU0Nl
bGwqIGNlCiAgICAgcmV0dXJuIHRydWU7CiB9CiAKLWJvb2wgSlNPYmplY3Q6Omhhc093blByb3Bl
cnR5KEV4ZWNTdGF0ZSogZXhlYywgY29uc3QgSWRlbnRpZmllciYgcHJvcGVydHlOYW1lKSBjb25z
dAorYm9vbCBKU09iamVjdDo6aGFzT3duUHJvcGVydHkoRXhlY1N0YXRlKiBleGVjLCBQcm9wZXJ0
eU5hbWUgcHJvcGVydHlOYW1lKSBjb25zdAogewogICAgIFByb3BlcnR5U2xvdCBzbG90OwogICAg
IHJldHVybiBjb25zdF9jYXN0PEpTT2JqZWN0Kj4odGhpcyktPm1ldGhvZFRhYmxlKCktPmdldE93
blByb3BlcnR5U2xvdChjb25zdF9jYXN0PEpTT2JqZWN0Kj4odGhpcyksIGV4ZWMsIHByb3BlcnR5
TmFtZSwgc2xvdCk7CkBAIC0yOTAsNyArMjkwLDcgQEAgYm9vbCBKU09iamVjdDo6ZGVsZXRlUHJv
cGVydHlCeUluZGV4KEpTQwogICAgIHJldHVybiB0aGlzT2JqZWN0LT5tZXRob2RUYWJsZSgpLT5k
ZWxldGVQcm9wZXJ0eSh0aGlzT2JqZWN0LCBleGVjLCBJZGVudGlmaWVyOjpmcm9tKGV4ZWMsIHBy
b3BlcnR5TmFtZSkpOwogfQogCi1zdGF0aWMgQUxXQVlTX0lOTElORSBKU1ZhbHVlIGNhbGxEZWZh
dWx0VmFsdWVGdW5jdGlvbihFeGVjU3RhdGUqIGV4ZWMsIGNvbnN0IEpTT2JqZWN0KiBvYmplY3Qs
IGNvbnN0IElkZW50aWZpZXImIHByb3BlcnR5TmFtZSkKK3N0YXRpYyBBTFdBWVNfSU5MSU5FIEpT
VmFsdWUgY2FsbERlZmF1bHRWYWx1ZUZ1bmN0aW9uKEV4ZWNTdGF0ZSogZXhlYywgY29uc3QgSlNP
YmplY3QqIG9iamVjdCwgUHJvcGVydHlOYW1lIHByb3BlcnR5TmFtZSkKIHsKICAgICBKU1ZhbHVl
IGZ1bmN0aW9uID0gb2JqZWN0LT5nZXQoZXhlYywgcHJvcGVydHlOYW1lKTsKICAgICBDYWxsRGF0
YSBjYWxsRGF0YTsKQEAgLTM0NCw3ICszNDQsNyBAQCBKU1ZhbHVlIEpTT2JqZWN0OjpkZWZhdWx0
VmFsdWUoY29uc3QgSlNPCiAgICAgcmV0dXJuIHRocm93RXJyb3IoZXhlYywgY3JlYXRlVHlwZUVy
cm9yKGV4ZWMsICJObyBkZWZhdWx0IHZhbHVlIikpOwogfQogCi1jb25zdCBIYXNoRW50cnkqIEpT
T2JqZWN0OjpmaW5kUHJvcGVydHlIYXNoRW50cnkoRXhlY1N0YXRlKiBleGVjLCBjb25zdCBJZGVu
dGlmaWVyJiBwcm9wZXJ0eU5hbWUpIGNvbnN0Citjb25zdCBIYXNoRW50cnkqIEpTT2JqZWN0Ojpm
aW5kUHJvcGVydHlIYXNoRW50cnkoRXhlY1N0YXRlKiBleGVjLCBQcm9wZXJ0eU5hbWUgcHJvcGVy
dHlOYW1lKSBjb25zdAogewogICAgIGZvciAoY29uc3QgQ2xhc3NJbmZvKiBpbmZvID0gY2xhc3NJ
bmZvKCk7IGluZm87IGluZm8gPSBpbmZvLT5wYXJlbnRDbGFzcykgewogICAgICAgICBpZiAoY29u
c3QgSGFzaFRhYmxlKiBwcm9wSGFzaFRhYmxlID0gaW5mby0+cHJvcEhhc2hUYWJsZShleGVjKSkg
ewpAQCAtMzgxLDcgKzM4MSw3IEBAIGJvb2wgSlNPYmplY3Q6OnByb3BlcnR5SXNFbnVtZXJhYmxl
KEV4ZWMKICAgICByZXR1cm4gZGVzY3JpcHRvci5lbnVtZXJhYmxlKCk7CiB9CiAKLWJvb2wgSlNP
YmplY3Q6OmdldFByb3BlcnR5U3BlY2lmaWNWYWx1ZShFeGVjU3RhdGUqIGV4ZWMsIGNvbnN0IElk
ZW50aWZpZXImIHByb3BlcnR5TmFtZSwgSlNDZWxsKiYgc3BlY2lmaWNWYWx1ZSkgY29uc3QKK2Jv
b2wgSlNPYmplY3Q6OmdldFByb3BlcnR5U3BlY2lmaWNWYWx1ZShFeGVjU3RhdGUqIGV4ZWMsIFBy
b3BlcnR5TmFtZSBwcm9wZXJ0eU5hbWUsIEpTQ2VsbComIHNwZWNpZmljVmFsdWUpIGNvbnN0CiB7
CiAgICAgdW5zaWduZWQgYXR0cmlidXRlczsKICAgICBpZiAoc3RydWN0dXJlKCktPmdldChleGVj
LT5nbG9iYWxEYXRhKCksIHByb3BlcnR5TmFtZSwgYXR0cmlidXRlcywgc3BlY2lmaWNWYWx1ZSkg
IT0gV1RGOjpub3RGb3VuZCkKQEAgLTUxMCw3ICs1MTAsNyBAQCB2b2lkIEpTT2JqZWN0OjpyZWlm
eVN0YXRpY0Z1bmN0aW9uc0ZvckRlCiAgICAgc3RydWN0dXJlKCktPnNldFN0YXRpY0Z1bmN0aW9u
c1JlaWZpZWQoKTsKIH0KIAotdm9pZCBKU09iamVjdDo6cmVtb3ZlRGlyZWN0KEpTR2xvYmFsRGF0
YSYgZ2xvYmFsRGF0YSwgY29uc3QgSWRlbnRpZmllciYgcHJvcGVydHlOYW1lKQordm9pZCBKU09i
amVjdDo6cmVtb3ZlRGlyZWN0KEpTR2xvYmFsRGF0YSYgZ2xvYmFsRGF0YSwgUHJvcGVydHlOYW1l
IHByb3BlcnR5TmFtZSkKIHsKICAgICBpZiAoc3RydWN0dXJlKCktPmdldChnbG9iYWxEYXRhLCBw
cm9wZXJ0eU5hbWUpID09IFdURjo6bm90Rm91bmQpCiAgICAgICAgIHJldHVybjsKQEAgLTU4Myw3
ICs1ODMsNyBAQCB2b2lkIEpTT2JqZWN0OjphbGxvY2F0ZVByb3BlcnR5U3RvcmFnZShKCiAgICAg
bV9wcm9wZXJ0eVN0b3JhZ2Uuc2V0KGdsb2JhbERhdGEsIHRoaXMsIG5ld1Byb3BlcnR5U3RvcmFn
ZSk7CiB9CiAKLWJvb2wgSlNPYmplY3Q6OmdldE93blByb3BlcnR5RGVzY3JpcHRvcihKU09iamVj
dCogb2JqZWN0LCBFeGVjU3RhdGUqIGV4ZWMsIGNvbnN0IElkZW50aWZpZXImIHByb3BlcnR5TmFt
ZSwgUHJvcGVydHlEZXNjcmlwdG9yJiBkZXNjcmlwdG9yKQorYm9vbCBKU09iamVjdDo6Z2V0T3du
UHJvcGVydHlEZXNjcmlwdG9yKEpTT2JqZWN0KiBvYmplY3QsIEV4ZWNTdGF0ZSogZXhlYywgUHJv
cGVydHlOYW1lIHByb3BlcnR5TmFtZSwgUHJvcGVydHlEZXNjcmlwdG9yJiBkZXNjcmlwdG9yKQog
ewogICAgIHVuc2lnbmVkIGF0dHJpYnV0ZXMgPSAwOwogICAgIEpTQ2VsbCogY2VsbCA9IDA7CkBA
IC01OTQsNyArNTk0LDcgQEAgYm9vbCBKU09iamVjdDo6Z2V0T3duUHJvcGVydHlEZXNjcmlwdG9y
KAogICAgIHJldHVybiB0cnVlOwogfQogCi1ib29sIEpTT2JqZWN0OjpnZXRQcm9wZXJ0eURlc2Ny
aXB0b3IoRXhlY1N0YXRlKiBleGVjLCBjb25zdCBJZGVudGlmaWVyJiBwcm9wZXJ0eU5hbWUsIFBy
b3BlcnR5RGVzY3JpcHRvciYgZGVzY3JpcHRvcikKK2Jvb2wgSlNPYmplY3Q6OmdldFByb3BlcnR5
RGVzY3JpcHRvcihFeGVjU3RhdGUqIGV4ZWMsIFByb3BlcnR5TmFtZSBwcm9wZXJ0eU5hbWUsIFBy
b3BlcnR5RGVzY3JpcHRvciYgZGVzY3JpcHRvcikKIHsKICAgICBKU09iamVjdCogb2JqZWN0ID0g
dGhpczsKICAgICB3aGlsZSAodHJ1ZSkgewpAQCAtNjA3LDcgKzYwNyw3IEBAIGJvb2wgSlNPYmpl
Y3Q6OmdldFByb3BlcnR5RGVzY3JpcHRvcihFeGUKICAgICB9CiB9CiAKLXN0YXRpYyBib29sIHB1
dERlc2NyaXB0b3IoRXhlY1N0YXRlKiBleGVjLCBKU09iamVjdCogdGFyZ2V0LCBjb25zdCBJZGVu
dGlmaWVyJiBwcm9wZXJ0eU5hbWUsIFByb3BlcnR5RGVzY3JpcHRvciYgZGVzY3JpcHRvciwgdW5z
aWduZWQgYXR0cmlidXRlcywgY29uc3QgUHJvcGVydHlEZXNjcmlwdG9yJiBvbGREZXNjcmlwdG9y
KQorc3RhdGljIGJvb2wgcHV0RGVzY3JpcHRvcihFeGVjU3RhdGUqIGV4ZWMsIEpTT2JqZWN0KiB0
YXJnZXQsIFByb3BlcnR5TmFtZSBwcm9wZXJ0eU5hbWUsIFByb3BlcnR5RGVzY3JpcHRvciYgZGVz
Y3JpcHRvciwgdW5zaWduZWQgYXR0cmlidXRlcywgY29uc3QgUHJvcGVydHlEZXNjcmlwdG9yJiBv
bGREZXNjcmlwdG9yKQogewogICAgIGlmIChkZXNjcmlwdG9yLmlzR2VuZXJpY0Rlc2NyaXB0b3Io
KSB8fCBkZXNjcmlwdG9yLmlzRGF0YURlc2NyaXB0b3IoKSkgewogICAgICAgICBpZiAoZGVzY3Jp
cHRvci5pc0dlbmVyaWNEZXNjcmlwdG9yKCkgJiYgb2xkRGVzY3JpcHRvci5pc0FjY2Vzc29yRGVz
Y3JpcHRvcigpKSB7CkBAIC02NjIsNyArNjYyLDcgQEAgcHJpdmF0ZToKICAgICBKU0dsb2JhbERh
dGEmIG1fZ2xvYmFsRGF0YTsKIH07CiAKLWJvb2wgSlNPYmplY3Q6OmRlZmluZU93blByb3BlcnR5
KEpTT2JqZWN0KiBvYmplY3QsIEV4ZWNTdGF0ZSogZXhlYywgY29uc3QgSWRlbnRpZmllciYgcHJv
cGVydHlOYW1lLCBQcm9wZXJ0eURlc2NyaXB0b3ImIGRlc2NyaXB0b3IsIGJvb2wgdGhyb3dFeGNl
cHRpb24pCitib29sIEpTT2JqZWN0OjpkZWZpbmVPd25Qcm9wZXJ0eShKU09iamVjdCogb2JqZWN0
LCBFeGVjU3RhdGUqIGV4ZWMsIFByb3BlcnR5TmFtZSBwcm9wZXJ0eU5hbWUsIFByb3BlcnR5RGVz
Y3JpcHRvciYgZGVzY3JpcHRvciwgYm9vbCB0aHJvd0V4Y2VwdGlvbikKIHsKICAgICAvLyBUcmFj
ayBvbiB0aGUgZ2xvYmFsZGF0YSB0aGF0IHdlJ3JlIGluIGRlZmluZSBwcm9wZXJ0eS4KICAgICAv
LyBDdXJyZW50bHkgRGVmaW5lT3duUHJvcGVydHkgdXNlcyBkZWxldGUgdG8gcmVtb3ZlIHByb3Bl
cnRpZXMgd2hlbiB0aGV5IGFyZSBiZWluZyByZXBsYWNlZApJbmRleDogU291cmNlL0phdmFTY3Jp
cHRDb3JlL3J1bnRpbWUvSlNPYmplY3QuaAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvSmF2YVNjcmlw
dENvcmUvcnVudGltZS9KU09iamVjdC5oCShyZXZpc2lvbiAxMTY2NjcpCisrKyBTb3VyY2UvSmF2
YVNjcmlwdENvcmUvcnVudGltZS9KU09iamVjdC5oCSh3b3JraW5nIGNvcHkpCkBAIC03NSw3ICs3
NSw3IEBAIG5hbWVzcGFjZSBKU0MgewogICAgICAgICBmcmllbmQgY2xhc3MgSklUOwogICAgICAg
ICBmcmllbmQgY2xhc3MgSlNDZWxsOwogICAgICAgICBmcmllbmQgY2xhc3MgTWFya2VkQmxvY2s7
Ci0gICAgICAgIEpTX0VYUE9SVF9QUklWQVRFIGZyaWVuZCBib29sIHNldFVwU3RhdGljRnVuY3Rp
b25TbG90KEV4ZWNTdGF0ZSogZXhlYywgY29uc3QgSGFzaEVudHJ5KiBlbnRyeSwgSlNPYmplY3Qq
IHRoaXNPYmosIGNvbnN0IElkZW50aWZpZXImIHByb3BlcnR5TmFtZSwgUHJvcGVydHlTbG90JiBz
bG90KTsKKyAgICAgICAgSlNfRVhQT1JUX1BSSVZBVEUgZnJpZW5kIGJvb2wgc2V0VXBTdGF0aWNG
dW5jdGlvblNsb3QoRXhlY1N0YXRlKiwgY29uc3QgSGFzaEVudHJ5KiwgSlNPYmplY3QqLCBQcm9w
ZXJ0eU5hbWUsIFByb3BlcnR5U2xvdCYpOwogCiAgICAgICAgIGVudW0gUHV0TW9kZSB7CiAgICAg
ICAgICAgICBQdXRNb2RlUHV0LApAQCAtOTUsMzkgKzk1LDM5IEBAIG5hbWVzcGFjZSBKU0Mgewog
ICAgICAgICAKICAgICAgICAgU3RydWN0dXJlKiBpbmhlcml0b3JJRChKU0dsb2JhbERhdGEmKTsK
IAotICAgICAgICBKU1ZhbHVlIGdldChFeGVjU3RhdGUqLCBjb25zdCBJZGVudGlmaWVyJiBwcm9w
ZXJ0eU5hbWUpIGNvbnN0OworICAgICAgICBKU1ZhbHVlIGdldChFeGVjU3RhdGUqLCBQcm9wZXJ0
eU5hbWUpIGNvbnN0OwogICAgICAgICBKU1ZhbHVlIGdldChFeGVjU3RhdGUqLCB1bnNpZ25lZCBw
cm9wZXJ0eU5hbWUpIGNvbnN0OwogCi0gICAgICAgIGJvb2wgZ2V0UHJvcGVydHlTbG90KEV4ZWNT
dGF0ZSosIGNvbnN0IElkZW50aWZpZXImIHByb3BlcnR5TmFtZSwgUHJvcGVydHlTbG90Jik7Cisg
ICAgICAgIGJvb2wgZ2V0UHJvcGVydHlTbG90KEV4ZWNTdGF0ZSosIFByb3BlcnR5TmFtZSwgUHJv
cGVydHlTbG90Jik7CiAgICAgICAgIGJvb2wgZ2V0UHJvcGVydHlTbG90KEV4ZWNTdGF0ZSosIHVu
c2lnbmVkIHByb3BlcnR5TmFtZSwgUHJvcGVydHlTbG90Jik7Ci0gICAgICAgIEpTX0VYUE9SVF9Q
UklWQVRFIGJvb2wgZ2V0UHJvcGVydHlEZXNjcmlwdG9yKEV4ZWNTdGF0ZSosIGNvbnN0IElkZW50
aWZpZXImIHByb3BlcnR5TmFtZSwgUHJvcGVydHlEZXNjcmlwdG9yJik7CisgICAgICAgIEpTX0VY
UE9SVF9QUklWQVRFIGJvb2wgZ2V0UHJvcGVydHlEZXNjcmlwdG9yKEV4ZWNTdGF0ZSosIFByb3Bl
cnR5TmFtZSwgUHJvcGVydHlEZXNjcmlwdG9yJik7CiAKLSAgICAgICAgc3RhdGljIGJvb2wgZ2V0
T3duUHJvcGVydHlTbG90KEpTQ2VsbCosIEV4ZWNTdGF0ZSosIGNvbnN0IElkZW50aWZpZXImIHBy
b3BlcnR5TmFtZSwgUHJvcGVydHlTbG90Jik7CisgICAgICAgIHN0YXRpYyBib29sIGdldE93blBy
b3BlcnR5U2xvdChKU0NlbGwqLCBFeGVjU3RhdGUqLCBQcm9wZXJ0eU5hbWUsIFByb3BlcnR5U2xv
dCYpOwogICAgICAgICBKU19FWFBPUlRfUFJJVkFURSBzdGF0aWMgYm9vbCBnZXRPd25Qcm9wZXJ0
eVNsb3RCeUluZGV4KEpTQ2VsbCosIEV4ZWNTdGF0ZSosIHVuc2lnbmVkIHByb3BlcnR5TmFtZSwg
UHJvcGVydHlTbG90Jik7Ci0gICAgICAgIEpTX0VYUE9SVF9QUklWQVRFIHN0YXRpYyBib29sIGdl
dE93blByb3BlcnR5RGVzY3JpcHRvcihKU09iamVjdCosIEV4ZWNTdGF0ZSosIGNvbnN0IElkZW50
aWZpZXImLCBQcm9wZXJ0eURlc2NyaXB0b3ImKTsKKyAgICAgICAgSlNfRVhQT1JUX1BSSVZBVEUg
c3RhdGljIGJvb2wgZ2V0T3duUHJvcGVydHlEZXNjcmlwdG9yKEpTT2JqZWN0KiwgRXhlY1N0YXRl
KiwgUHJvcGVydHlOYW1lLCBQcm9wZXJ0eURlc2NyaXB0b3ImKTsKIAogICAgICAgICBib29sIGFs
bG93c0FjY2Vzc0Zyb20oRXhlY1N0YXRlKik7CiAKLSAgICAgICAgSlNfRVhQT1JUX1BSSVZBVEUg
c3RhdGljIHZvaWQgcHV0KEpTQ2VsbCosIEV4ZWNTdGF0ZSosIGNvbnN0IElkZW50aWZpZXImIHBy
b3BlcnR5TmFtZSwgSlNWYWx1ZSwgUHV0UHJvcGVydHlTbG90Jik7CisgICAgICAgIEpTX0VYUE9S
VF9QUklWQVRFIHN0YXRpYyB2b2lkIHB1dChKU0NlbGwqLCBFeGVjU3RhdGUqLCBQcm9wZXJ0eU5h
bWUsIEpTVmFsdWUsIFB1dFByb3BlcnR5U2xvdCYpOwogICAgICAgICBKU19FWFBPUlRfUFJJVkFU
RSBzdGF0aWMgdm9pZCBwdXRCeUluZGV4KEpTQ2VsbCosIEV4ZWNTdGF0ZSosIHVuc2lnbmVkIHBy
b3BlcnR5TmFtZSwgSlNWYWx1ZSwgYm9vbCBzaG91bGRUaHJvdyk7CiAKICAgICAgICAgLy8gcHV0
RGlyZWN0IGlzIGVmZmVjdGl2ZWx5IGFuIHVuY2hlY2tlZCB2ZXNpb24gb2YgJ2RlZmluZU93blBy
b3BlcnR5JzoKICAgICAgICAgLy8gIC0gdGhlIHByb3RvdHlwZSBjaGFpbiBpcyBub3QgY29uc3Vs
dGVkCiAgICAgICAgIC8vICAtIGFjY2Vzc29ycyBhcmUgbm90IGNhbGxlZC4KICAgICAgICAgLy8g
IC0gYXR0cmlidXRlcyB3aWxsIGJlIHJlc3BlY3RlZCAoYWZ0ZXIgdGhlIGNhbGwgdGhlIHByb3Bl
cnR5IHdpbGwgZXhpc3Qgd2l0aCB0aGUgZ2l2ZW4gYXR0cmlidXRlcykKLSAgICAgICAgSlNfRVhQ
T1JUX1BSSVZBVEUgc3RhdGljIHZvaWQgcHV0RGlyZWN0VmlydHVhbChKU09iamVjdCosIEV4ZWNT
dGF0ZSosIGNvbnN0IElkZW50aWZpZXImIHByb3BlcnR5TmFtZSwgSlNWYWx1ZSwgdW5zaWduZWQg
YXR0cmlidXRlcyk7Ci0gICAgICAgIHZvaWQgcHV0RGlyZWN0KEpTR2xvYmFsRGF0YSYsIGNvbnN0
IElkZW50aWZpZXImIHByb3BlcnR5TmFtZSwgSlNWYWx1ZSwgdW5zaWduZWQgYXR0cmlidXRlcyA9
IDApOwotICAgICAgICB2b2lkIHB1dERpcmVjdChKU0dsb2JhbERhdGEmLCBjb25zdCBJZGVudGlm
aWVyJiBwcm9wZXJ0eU5hbWUsIEpTVmFsdWUsIFB1dFByb3BlcnR5U2xvdCYpOwotICAgICAgICB2
b2lkIHB1dERpcmVjdFdpdGhvdXRUcmFuc2l0aW9uKEpTR2xvYmFsRGF0YSYsIGNvbnN0IElkZW50
aWZpZXImIHByb3BlcnR5TmFtZSwgSlNWYWx1ZSwgdW5zaWduZWQgYXR0cmlidXRlcyA9IDApOwot
ICAgICAgICB2b2lkIHB1dERpcmVjdEFjY2Vzc29yKEpTR2xvYmFsRGF0YSYsIGNvbnN0IElkZW50
aWZpZXImIHByb3BlcnR5TmFtZSwgSlNWYWx1ZSwgdW5zaWduZWQgYXR0cmlidXRlcyk7CisgICAg
ICAgIEpTX0VYUE9SVF9QUklWQVRFIHN0YXRpYyB2b2lkIHB1dERpcmVjdFZpcnR1YWwoSlNPYmpl
Y3QqLCBFeGVjU3RhdGUqLCBQcm9wZXJ0eU5hbWUsIEpTVmFsdWUsIHVuc2lnbmVkIGF0dHJpYnV0
ZXMpOworICAgICAgICB2b2lkIHB1dERpcmVjdChKU0dsb2JhbERhdGEmLCBQcm9wZXJ0eU5hbWUs
IEpTVmFsdWUsIHVuc2lnbmVkIGF0dHJpYnV0ZXMgPSAwKTsKKyAgICAgICAgdm9pZCBwdXREaXJl
Y3QoSlNHbG9iYWxEYXRhJiwgUHJvcGVydHlOYW1lLCBKU1ZhbHVlLCBQdXRQcm9wZXJ0eVNsb3Qm
KTsKKyAgICAgICAgdm9pZCBwdXREaXJlY3RXaXRob3V0VHJhbnNpdGlvbihKU0dsb2JhbERhdGEm
LCBQcm9wZXJ0eU5hbWUsIEpTVmFsdWUsIHVuc2lnbmVkIGF0dHJpYnV0ZXMgPSAwKTsKKyAgICAg
ICAgdm9pZCBwdXREaXJlY3RBY2Nlc3NvcihKU0dsb2JhbERhdGEmLCBQcm9wZXJ0eU5hbWUsIEpT
VmFsdWUsIHVuc2lnbmVkIGF0dHJpYnV0ZXMpOwogCiAgICAgICAgIGJvb2wgcHJvcGVydHlJc0Vu
dW1lcmFibGUoRXhlY1N0YXRlKiwgY29uc3QgSWRlbnRpZmllciYgcHJvcGVydHlOYW1lKSBjb25z
dDsKIAotICAgICAgICBKU19FWFBPUlRfUFJJVkFURSBib29sIGhhc1Byb3BlcnR5KEV4ZWNTdGF0
ZSosIGNvbnN0IElkZW50aWZpZXImIHByb3BlcnR5TmFtZSkgY29uc3Q7CisgICAgICAgIEpTX0VY
UE9SVF9QUklWQVRFIGJvb2wgaGFzUHJvcGVydHkoRXhlY1N0YXRlKiwgUHJvcGVydHlOYW1lKSBj
b25zdDsKICAgICAgICAgSlNfRVhQT1JUX1BSSVZBVEUgYm9vbCBoYXNQcm9wZXJ0eShFeGVjU3Rh
dGUqLCB1bnNpZ25lZCBwcm9wZXJ0eU5hbWUpIGNvbnN0OwotICAgICAgICBib29sIGhhc093blBy
b3BlcnR5KEV4ZWNTdGF0ZSosIGNvbnN0IElkZW50aWZpZXImIHByb3BlcnR5TmFtZSkgY29uc3Q7
CisgICAgICAgIGJvb2wgaGFzT3duUHJvcGVydHkoRXhlY1N0YXRlKiwgUHJvcGVydHlOYW1lKSBj
b25zdDsKIAotICAgICAgICBKU19FWFBPUlRfUFJJVkFURSBzdGF0aWMgYm9vbCBkZWxldGVQcm9w
ZXJ0eShKU0NlbGwqLCBFeGVjU3RhdGUqLCBjb25zdCBJZGVudGlmaWVyJiBwcm9wZXJ0eU5hbWUp
OworICAgICAgICBKU19FWFBPUlRfUFJJVkFURSBzdGF0aWMgYm9vbCBkZWxldGVQcm9wZXJ0eShK
U0NlbGwqLCBFeGVjU3RhdGUqLCBQcm9wZXJ0eU5hbWUpOwogICAgICAgICBKU19FWFBPUlRfUFJJ
VkFURSBzdGF0aWMgYm9vbCBkZWxldGVQcm9wZXJ0eUJ5SW5kZXgoSlNDZWxsKiwgRXhlY1N0YXRl
KiwgdW5zaWduZWQgcHJvcGVydHlOYW1lKTsKIAogICAgICAgICBKU19FWFBPUlRfUFJJVkFURSBz
dGF0aWMgSlNWYWx1ZSBkZWZhdWx0VmFsdWUoY29uc3QgSlNPYmplY3QqLCBFeGVjU3RhdGUqLCBQ
cmVmZXJyZWRQcmltaXRpdmVUeXBlKTsKQEAgLTE0OCwyMiArMTQ4LDIyIEBAIG5hbWVzcGFjZSBK
U0MgewogICAgICAgICBKU19FWFBPUlRfUFJJVkFURSBzdGF0aWMgSlNPYmplY3QqIHRvVGhpc09i
amVjdChKU0NlbGwqLCBFeGVjU3RhdGUqKTsKICAgICAgICAgSlNPYmplY3QqIHVud3JhcHBlZE9i
amVjdCgpOwogCi0gICAgICAgIGJvb2wgZ2V0UHJvcGVydHlTcGVjaWZpY1ZhbHVlKEV4ZWNTdGF0
ZSogZXhlYywgY29uc3QgSWRlbnRpZmllciYgcHJvcGVydHlOYW1lLCBKU0NlbGwqJiBzcGVjaWZp
Y0Z1bmN0aW9uKSBjb25zdDsKKyAgICAgICAgYm9vbCBnZXRQcm9wZXJ0eVNwZWNpZmljVmFsdWUo
RXhlY1N0YXRlKiwgUHJvcGVydHlOYW1lLCBKU0NlbGwqJiBzcGVjaWZpY0Z1bmN0aW9uKSBjb25z
dDsKIAogICAgICAgICAvLyBUaGlzIGdldCBmdW5jdGlvbiBvbmx5IGxvb2tzIGF0IHRoZSBwcm9w
ZXJ0eSBtYXAuCi0gICAgICAgIEpTVmFsdWUgZ2V0RGlyZWN0KEpTR2xvYmFsRGF0YSYgZ2xvYmFs
RGF0YSwgY29uc3QgSWRlbnRpZmllciYgcHJvcGVydHlOYW1lKSBjb25zdAorICAgICAgICBKU1Zh
bHVlIGdldERpcmVjdChKU0dsb2JhbERhdGEmIGdsb2JhbERhdGEsIFByb3BlcnR5TmFtZSBwcm9w
ZXJ0eU5hbWUpIGNvbnN0CiAgICAgICAgIHsKICAgICAgICAgICAgIHNpemVfdCBvZmZzZXQgPSBz
dHJ1Y3R1cmUoKS0+Z2V0KGdsb2JhbERhdGEsIHByb3BlcnR5TmFtZSk7CiAgICAgICAgICAgICBy
ZXR1cm4gb2Zmc2V0ICE9IFdURjo6bm90Rm91bmQgPyBnZXREaXJlY3RPZmZzZXQob2Zmc2V0KSA6
IEpTVmFsdWUoKTsKICAgICAgICAgfQogCi0gICAgICAgIFdyaXRlQmFycmllckJhc2U8VW5rbm93
bj4qIGdldERpcmVjdExvY2F0aW9uKEpTR2xvYmFsRGF0YSYgZ2xvYmFsRGF0YSwgY29uc3QgSWRl
bnRpZmllciYgcHJvcGVydHlOYW1lKQorICAgICAgICBXcml0ZUJhcnJpZXJCYXNlPFVua25vd24+
KiBnZXREaXJlY3RMb2NhdGlvbihKU0dsb2JhbERhdGEmIGdsb2JhbERhdGEsIFByb3BlcnR5TmFt
ZSBwcm9wZXJ0eU5hbWUpCiAgICAgICAgIHsKICAgICAgICAgICAgIHNpemVfdCBvZmZzZXQgPSBz
dHJ1Y3R1cmUoKS0+Z2V0KGdsb2JhbERhdGEsIHByb3BlcnR5TmFtZSk7CiAgICAgICAgICAgICBy
ZXR1cm4gb2Zmc2V0ICE9IFdURjo6bm90Rm91bmQgPyBsb2NhdGlvbkZvck9mZnNldChvZmZzZXQp
IDogMDsKICAgICAgICAgfQogCi0gICAgICAgIFdyaXRlQmFycmllckJhc2U8VW5rbm93bj4qIGdl
dERpcmVjdExvY2F0aW9uKEpTR2xvYmFsRGF0YSYgZ2xvYmFsRGF0YSwgY29uc3QgSWRlbnRpZmll
ciYgcHJvcGVydHlOYW1lLCB1bnNpZ25lZCYgYXR0cmlidXRlcykKKyAgICAgICAgV3JpdGVCYXJy
aWVyQmFzZTxVbmtub3duPiogZ2V0RGlyZWN0TG9jYXRpb24oSlNHbG9iYWxEYXRhJiBnbG9iYWxE
YXRhLCBQcm9wZXJ0eU5hbWUgcHJvcGVydHlOYW1lLCB1bnNpZ25lZCYgYXR0cmlidXRlcykKICAg
ICAgICAgewogICAgICAgICAgICAgSlNDZWxsKiBzcGVjaWZpY0Z1bmN0aW9uOwogICAgICAgICAg
ICAgc2l6ZV90IG9mZnNldCA9IHN0cnVjdHVyZSgpLT5nZXQoZ2xvYmFsRGF0YSwgcHJvcGVydHlO
YW1lLCBhdHRyaWJ1dGVzLCBzcGVjaWZpY0Z1bmN0aW9uKTsKQEAgLTE3Nyw3ICsxNzcsNyBAQCBu
YW1lc3BhY2UgSlNDIHsKIAogICAgICAgICB2b2lkIHRyYW5zaXRpb25UbyhKU0dsb2JhbERhdGEm
LCBTdHJ1Y3R1cmUqKTsKIAotICAgICAgICB2b2lkIHJlbW92ZURpcmVjdChKU0dsb2JhbERhdGEm
LCBjb25zdCBJZGVudGlmaWVyJiBwcm9wZXJ0eU5hbWUpOworICAgICAgICB2b2lkIHJlbW92ZURp
cmVjdChKU0dsb2JhbERhdGEmLCBQcm9wZXJ0eU5hbWUpOwogICAgICAgICBib29sIGhhc0N1c3Rv
bVByb3BlcnRpZXMoKSB7IHJldHVybiBzdHJ1Y3R1cmUoKS0+ZGlkVHJhbnNpdGlvbigpOyB9CiAg
ICAgICAgIGJvb2wgaGFzR2V0dGVyU2V0dGVyUHJvcGVydGllcygpIHsgcmV0dXJuIHN0cnVjdHVy
ZSgpLT5oYXNHZXR0ZXJTZXR0ZXJQcm9wZXJ0aWVzKCk7IH0KIApAQCAtMTg2LDE0ICsxODYsMTQg
QEAgbmFtZXNwYWNlIEpTQyB7CiAgICAgICAgIC8vICAtIHByb3ZpZGVzIG5vIHNwZWNpYWwgaGFu
ZGxpbmcgZm9yIF9fcHJvdG9fXwogICAgICAgICAvLyAgLSBkb2VzIG5vdCB3YWxrIHRoZSBwcm90
b3R5cGUgY2hhaW4gKHRvIGNoZWNrIGZvciBhY2Nlc3NvcnMgb3Igbm9uLXdyaXRhYmxlIHByb3Bl
cnRpZXMpLgogICAgICAgICAvLyBUaGlzIGlzIHVzZWQgYnkgSlNBY3RpdmF0aW9uLgotICAgICAg
ICBib29sIHB1dE93bkRhdGFQcm9wZXJ0eShKU0dsb2JhbERhdGEmLCBjb25zdCBJZGVudGlmaWVy
JiBwcm9wZXJ0eU5hbWUsIEpTVmFsdWUsIFB1dFByb3BlcnR5U2xvdCYpOworICAgICAgICBib29s
IHB1dE93bkRhdGFQcm9wZXJ0eShKU0dsb2JhbERhdGEmLCBQcm9wZXJ0eU5hbWUsIEpTVmFsdWUs
IFB1dFByb3BlcnR5U2xvdCYpOwogCiAgICAgICAgIC8vIEZhc3QgYWNjZXNzIHRvIGtub3duIHBy
b3BlcnR5IG9mZnNldHMuCiAgICAgICAgIEpTVmFsdWUgZ2V0RGlyZWN0T2Zmc2V0KHNpemVfdCBv
ZmZzZXQpIGNvbnN0IHsgcmV0dXJuIHByb3BlcnR5U3RvcmFnZSgpW29mZnNldF0uZ2V0KCk7IH0K
ICAgICAgICAgdm9pZCBwdXREaXJlY3RPZmZzZXQoSlNHbG9iYWxEYXRhJiBnbG9iYWxEYXRhLCBz
aXplX3Qgb2Zmc2V0LCBKU1ZhbHVlIHZhbHVlKSB7IHByb3BlcnR5U3RvcmFnZSgpW29mZnNldF0u
c2V0KGdsb2JhbERhdGEsIHRoaXMsIHZhbHVlKTsgfQogICAgICAgICB2b2lkIHB1dFVuZGVmaW5l
ZEF0RGlyZWN0T2Zmc2V0KHNpemVfdCBvZmZzZXQpIHsgcHJvcGVydHlTdG9yYWdlKClbb2Zmc2V0
XS5zZXRVbmRlZmluZWQoKTsgfQogCi0gICAgICAgIEpTX0VYUE9SVF9QUklWQVRFIHN0YXRpYyBi
b29sIGRlZmluZU93blByb3BlcnR5KEpTT2JqZWN0KiwgRXhlY1N0YXRlKiwgY29uc3QgSWRlbnRp
ZmllciYgcHJvcGVydHlOYW1lLCBQcm9wZXJ0eURlc2NyaXB0b3ImLCBib29sIHNob3VsZFRocm93
KTsKKyAgICAgICAgSlNfRVhQT1JUX1BSSVZBVEUgc3RhdGljIGJvb2wgZGVmaW5lT3duUHJvcGVy
dHkoSlNPYmplY3QqLCBFeGVjU3RhdGUqLCBQcm9wZXJ0eU5hbWUsIFByb3BlcnR5RGVzY3JpcHRv
ciYsIGJvb2wgc2hvdWxkVGhyb3cpOwogCiAgICAgICAgIGJvb2wgaXNHbG9iYWxPYmplY3QoKSBj
b25zdDsKICAgICAgICAgYm9vbCBpc1ZhcmlhYmxlT2JqZWN0KCkgY29uc3Q7CkBAIC0yOTQsMTIg
KzI5NCwxMiBAQCBuYW1lc3BhY2UgSlNDIHsKICAgICAgICAgfQogCiAgICAgICAgIHRlbXBsYXRl
PFB1dE1vZGU+Ci0gICAgICAgIGJvb2wgcHV0RGlyZWN0SW50ZXJuYWwoSlNHbG9iYWxEYXRhJiwg
Y29uc3QgSWRlbnRpZmllciYgcHJvcGVydHlOYW1lLCBKU1ZhbHVlLCB1bnNpZ25lZCBhdHRyLCBQ
dXRQcm9wZXJ0eVNsb3QmLCBKU0NlbGwqKTsKKyAgICAgICAgYm9vbCBwdXREaXJlY3RJbnRlcm5h
bChKU0dsb2JhbERhdGEmLCBQcm9wZXJ0eU5hbWUsIEpTVmFsdWUsIHVuc2lnbmVkIGF0dHIsIFB1
dFByb3BlcnR5U2xvdCYsIEpTQ2VsbCopOwogCi0gICAgICAgIGJvb2wgaW5saW5lR2V0T3duUHJv
cGVydHlTbG90KEV4ZWNTdGF0ZSosIGNvbnN0IElkZW50aWZpZXImIHByb3BlcnR5TmFtZSwgUHJv
cGVydHlTbG90Jik7CisgICAgICAgIGJvb2wgaW5saW5lR2V0T3duUHJvcGVydHlTbG90KEV4ZWNT
dGF0ZSosIFByb3BlcnR5TmFtZSwgUHJvcGVydHlTbG90Jik7CiAgICAgICAgIEpTX0VYUE9SVF9Q
UklWQVRFIHZvaWQgZmlsbEdldHRlclByb3BlcnR5U2xvdChQcm9wZXJ0eVNsb3QmLCBXcml0ZUJh
cnJpZXJCYXNlPFVua25vd24+KiBsb2NhdGlvbik7CiAKLSAgICAgICAgY29uc3QgSGFzaEVudHJ5
KiBmaW5kUHJvcGVydHlIYXNoRW50cnkoRXhlY1N0YXRlKiwgY29uc3QgSWRlbnRpZmllciYgcHJv
cGVydHlOYW1lKSBjb25zdDsKKyAgICAgICAgY29uc3QgSGFzaEVudHJ5KiBmaW5kUHJvcGVydHlI
YXNoRW50cnkoRXhlY1N0YXRlKiwgUHJvcGVydHlOYW1lKSBjb25zdDsKICAgICAgICAgU3RydWN0
dXJlKiBjcmVhdGVJbmhlcml0b3JJRChKU0dsb2JhbERhdGEmKTsKIAogICAgICAgICBTdG9yYWdl
QmFycmllciBtX3Byb3BlcnR5U3RvcmFnZTsKQEAgLTUzOSw3ICs1MzksNyBAQCBpbmxpbmUgSlNP
YmplY3QqIEpTVmFsdWU6OnRvVGhpc09iamVjdChFCiAgICAgcmV0dXJuIGlzQ2VsbCgpID8gYXND
ZWxsKCktPm1ldGhvZFRhYmxlKCktPnRvVGhpc09iamVjdChhc0NlbGwoKSwgZXhlYykgOiB0b1Ro
aXNPYmplY3RTbG93Q2FzZShleGVjKTsKIH0KIAotQUxXQVlTX0lOTElORSBib29sIEpTT2JqZWN0
OjppbmxpbmVHZXRPd25Qcm9wZXJ0eVNsb3QoRXhlY1N0YXRlKiBleGVjLCBjb25zdCBJZGVudGlm
aWVyJiBwcm9wZXJ0eU5hbWUsIFByb3BlcnR5U2xvdCYgc2xvdCkKK0FMV0FZU19JTkxJTkUgYm9v
bCBKU09iamVjdDo6aW5saW5lR2V0T3duUHJvcGVydHlTbG90KEV4ZWNTdGF0ZSogZXhlYywgUHJv
cGVydHlOYW1lIHByb3BlcnR5TmFtZSwgUHJvcGVydHlTbG90JiBzbG90KQogewogICAgIGlmIChX
cml0ZUJhcnJpZXJCYXNlPFVua25vd24+KiBsb2NhdGlvbiA9IGdldERpcmVjdExvY2F0aW9uKGV4
ZWMtPmdsb2JhbERhdGEoKSwgcHJvcGVydHlOYW1lKSkgewogICAgICAgICBpZiAoc3RydWN0dXJl
KCktPmhhc0dldHRlclNldHRlclByb3BlcnRpZXMoKSAmJiBsb2NhdGlvbi0+aXNHZXR0ZXJTZXR0
ZXIoKSkKQEAgLTU1NSwxMiArNTU1LDEyIEBAIEFMV0FZU19JTkxJTkUgYm9vbCBKU09iamVjdDo6
aW5saW5lR2V0T3cKIC8vIEl0IG1heSBzZWVtIGNyYXp5IHRvIGlubGluZSBhIGZ1bmN0aW9uIHRo
aXMgbGFyZ2UsIGVzcGVjaWFsbHkgYSB2aXJ0dWFsIGZ1bmN0aW9uLAogLy8gYnV0IGl0IG1ha2Vz
IGEgYmlnIGRpZmZlcmVuY2UgdG8gcHJvcGVydHkgbG9va3VwIHRoYXQgZGVyaXZlZCBjbGFzc2Vz
IGNhbiBpbmxpbmUgdGhlaXIKIC8vIGJhc2UgY2xhc3MgY2FsbCB0byB0aGlzLgotQUxXQVlTX0lO
TElORSBib29sIEpTT2JqZWN0OjpnZXRPd25Qcm9wZXJ0eVNsb3QoSlNDZWxsKiBjZWxsLCBFeGVj
U3RhdGUqIGV4ZWMsIGNvbnN0IElkZW50aWZpZXImIHByb3BlcnR5TmFtZSwgUHJvcGVydHlTbG90
JiBzbG90KQorQUxXQVlTX0lOTElORSBib29sIEpTT2JqZWN0OjpnZXRPd25Qcm9wZXJ0eVNsb3Qo
SlNDZWxsKiBjZWxsLCBFeGVjU3RhdGUqIGV4ZWMsIFByb3BlcnR5TmFtZSBwcm9wZXJ0eU5hbWUs
IFByb3BlcnR5U2xvdCYgc2xvdCkKIHsKICAgICByZXR1cm4ganNDYXN0PEpTT2JqZWN0Kj4oY2Vs
bCktPmlubGluZUdldE93blByb3BlcnR5U2xvdChleGVjLCBwcm9wZXJ0eU5hbWUsIHNsb3QpOwog
fQogCi1BTFdBWVNfSU5MSU5FIGJvb2wgSlNDZWxsOjpmYXN0R2V0T3duUHJvcGVydHlTbG90KEV4
ZWNTdGF0ZSogZXhlYywgY29uc3QgSWRlbnRpZmllciYgcHJvcGVydHlOYW1lLCBQcm9wZXJ0eVNs
b3QmIHNsb3QpCitBTFdBWVNfSU5MSU5FIGJvb2wgSlNDZWxsOjpmYXN0R2V0T3duUHJvcGVydHlT
bG90KEV4ZWNTdGF0ZSogZXhlYywgUHJvcGVydHlOYW1lIHByb3BlcnR5TmFtZSwgUHJvcGVydHlT
bG90JiBzbG90KQogewogICAgIGlmICghc3RydWN0dXJlKCktPnR5cGVJbmZvKCkub3ZlcnJpZGVz
R2V0T3duUHJvcGVydHlTbG90KCkpCiAgICAgICAgIHJldHVybiBhc09iamVjdCh0aGlzKS0+aW5s
aW5lR2V0T3duUHJvcGVydHlTbG90KGV4ZWMsIHByb3BlcnR5TmFtZSwgc2xvdCk7CkBAIC01ODUs
NyArNTg1LDcgQEAgQUxXQVlTX0lOTElORSBKU1ZhbHVlIEpTQ2VsbDo6ZmFzdEdldE93bgogCiAv
LyBJdCBtYXkgc2VlbSBjcmF6eSB0byBpbmxpbmUgYSBmdW5jdGlvbiB0aGlzIGxhcmdlIGJ1dCBp
dCBtYWtlcyBhIGJpZyBkaWZmZXJlbmNlCiAvLyBzaW5jZSB0aGlzIGlzIGZ1bmN0aW9uIHZlcnkg
aG90IGluIHZhcmlhYmxlIGxvb2t1cAotQUxXQVlTX0lOTElORSBib29sIEpTT2JqZWN0OjpnZXRQ
cm9wZXJ0eVNsb3QoRXhlY1N0YXRlKiBleGVjLCBjb25zdCBJZGVudGlmaWVyJiBwcm9wZXJ0eU5h
bWUsIFByb3BlcnR5U2xvdCYgc2xvdCkKK0FMV0FZU19JTkxJTkUgYm9vbCBKU09iamVjdDo6Z2V0
UHJvcGVydHlTbG90KEV4ZWNTdGF0ZSogZXhlYywgUHJvcGVydHlOYW1lIHByb3BlcnR5TmFtZSwg
UHJvcGVydHlTbG90JiBzbG90KQogewogICAgIEpTT2JqZWN0KiBvYmplY3QgPSB0aGlzOwogICAg
IHdoaWxlICh0cnVlKSB7CkBAIC02MTEsNyArNjExLDcgQEAgQUxXQVlTX0lOTElORSBib29sIEpT
T2JqZWN0OjpnZXRQcm9wZXJ0eQogICAgIH0KIH0KIAotaW5saW5lIEpTVmFsdWUgSlNPYmplY3Q6
OmdldChFeGVjU3RhdGUqIGV4ZWMsIGNvbnN0IElkZW50aWZpZXImIHByb3BlcnR5TmFtZSkgY29u
c3QKK2lubGluZSBKU1ZhbHVlIEpTT2JqZWN0OjpnZXQoRXhlY1N0YXRlKiBleGVjLCBQcm9wZXJ0
eU5hbWUgcHJvcGVydHlOYW1lKSBjb25zdAogewogICAgIFByb3BlcnR5U2xvdCBzbG90KHRoaXMp
OwogICAgIGlmIChjb25zdF9jYXN0PEpTT2JqZWN0Kj4odGhpcyktPmdldFByb3BlcnR5U2xvdChl
eGVjLCBwcm9wZXJ0eU5hbWUsIHNsb3QpKQpAQCAtNjMwLDcgKzYzMCw3IEBAIGlubGluZSBKU1Zh
bHVlIEpTT2JqZWN0OjpnZXQoRXhlY1N0YXRlKiAKIH0KIAogdGVtcGxhdGU8SlNPYmplY3Q6OlB1
dE1vZGUgbW9kZT4KLWlubGluZSBib29sIEpTT2JqZWN0OjpwdXREaXJlY3RJbnRlcm5hbChKU0ds
b2JhbERhdGEmIGdsb2JhbERhdGEsIGNvbnN0IElkZW50aWZpZXImIHByb3BlcnR5TmFtZSwgSlNW
YWx1ZSB2YWx1ZSwgdW5zaWduZWQgYXR0cmlidXRlcywgUHV0UHJvcGVydHlTbG90JiBzbG90LCBK
U0NlbGwqIHNwZWNpZmljRnVuY3Rpb24pCitpbmxpbmUgYm9vbCBKU09iamVjdDo6cHV0RGlyZWN0
SW50ZXJuYWwoSlNHbG9iYWxEYXRhJiBnbG9iYWxEYXRhLCBQcm9wZXJ0eU5hbWUgcHJvcGVydHlO
YW1lLCBKU1ZhbHVlIHZhbHVlLCB1bnNpZ25lZCBhdHRyaWJ1dGVzLCBQdXRQcm9wZXJ0eVNsb3Qm
IHNsb3QsIEpTQ2VsbCogc3BlY2lmaWNGdW5jdGlvbikKIHsKICAgICBBU1NFUlQodmFsdWUpOwog
ICAgIEFTU0VSVCh2YWx1ZS5pc0dldHRlclNldHRlcigpID09ICEhKGF0dHJpYnV0ZXMgJiBBY2Nl
c3NvcikpOwpAQCAtNzQyLDcgKzc0Miw3IEBAIGlubGluZSBib29sIEpTT2JqZWN0OjpwdXREaXJl
Y3RJbnRlcm5hbCgKICAgICByZXR1cm4gdHJ1ZTsKIH0KIAotaW5saW5lIGJvb2wgSlNPYmplY3Q6
OnB1dE93bkRhdGFQcm9wZXJ0eShKU0dsb2JhbERhdGEmIGdsb2JhbERhdGEsIGNvbnN0IElkZW50
aWZpZXImIHByb3BlcnR5TmFtZSwgSlNWYWx1ZSB2YWx1ZSwgUHV0UHJvcGVydHlTbG90JiBzbG90
KQoraW5saW5lIGJvb2wgSlNPYmplY3Q6OnB1dE93bkRhdGFQcm9wZXJ0eShKU0dsb2JhbERhdGEm
IGdsb2JhbERhdGEsIFByb3BlcnR5TmFtZSBwcm9wZXJ0eU5hbWUsIEpTVmFsdWUgdmFsdWUsIFB1
dFByb3BlcnR5U2xvdCYgc2xvdCkKIHsKICAgICBBU1NFUlQodmFsdWUpOwogICAgIEFTU0VSVCgh
SGVhcDo6aGVhcCh2YWx1ZSkgfHwgSGVhcDo6aGVhcCh2YWx1ZSkgPT0gSGVhcDo6aGVhcCh0aGlz
KSk7CkBAIC03NTEsMjAgKzc1MSwyMCBAQCBpbmxpbmUgYm9vbCBKU09iamVjdDo6cHV0T3duRGF0
YVByb3BlcnR5CiAgICAgcmV0dXJuIHB1dERpcmVjdEludGVybmFsPFB1dE1vZGVQdXQ+KGdsb2Jh
bERhdGEsIHByb3BlcnR5TmFtZSwgdmFsdWUsIDAsIHNsb3QsIGdldEpTRnVuY3Rpb24odmFsdWUp
KTsKIH0KIAotaW5saW5lIHZvaWQgSlNPYmplY3Q6OnB1dERpcmVjdChKU0dsb2JhbERhdGEmIGds
b2JhbERhdGEsIGNvbnN0IElkZW50aWZpZXImIHByb3BlcnR5TmFtZSwgSlNWYWx1ZSB2YWx1ZSwg
dW5zaWduZWQgYXR0cmlidXRlcykKK2lubGluZSB2b2lkIEpTT2JqZWN0OjpwdXREaXJlY3QoSlNH
bG9iYWxEYXRhJiBnbG9iYWxEYXRhLCBQcm9wZXJ0eU5hbWUgcHJvcGVydHlOYW1lLCBKU1ZhbHVl
IHZhbHVlLCB1bnNpZ25lZCBhdHRyaWJ1dGVzKQogewogICAgIEFTU0VSVCghdmFsdWUuaXNHZXR0
ZXJTZXR0ZXIoKSAmJiAhKGF0dHJpYnV0ZXMgJiBBY2Nlc3NvcikpOwogICAgIFB1dFByb3BlcnR5
U2xvdCBzbG90OwogICAgIHB1dERpcmVjdEludGVybmFsPFB1dE1vZGVEZWZpbmVPd25Qcm9wZXJ0
eT4oZ2xvYmFsRGF0YSwgcHJvcGVydHlOYW1lLCB2YWx1ZSwgYXR0cmlidXRlcywgc2xvdCwgZ2V0
SlNGdW5jdGlvbih2YWx1ZSkpOwogfQogCi1pbmxpbmUgdm9pZCBKU09iamVjdDo6cHV0RGlyZWN0
KEpTR2xvYmFsRGF0YSYgZ2xvYmFsRGF0YSwgY29uc3QgSWRlbnRpZmllciYgcHJvcGVydHlOYW1l
LCBKU1ZhbHVlIHZhbHVlLCBQdXRQcm9wZXJ0eVNsb3QmIHNsb3QpCitpbmxpbmUgdm9pZCBKU09i
amVjdDo6cHV0RGlyZWN0KEpTR2xvYmFsRGF0YSYgZ2xvYmFsRGF0YSwgUHJvcGVydHlOYW1lIHBy
b3BlcnR5TmFtZSwgSlNWYWx1ZSB2YWx1ZSwgUHV0UHJvcGVydHlTbG90JiBzbG90KQogewogICAg
IEFTU0VSVCghdmFsdWUuaXNHZXR0ZXJTZXR0ZXIoKSk7CiAgICAgcHV0RGlyZWN0SW50ZXJuYWw8
UHV0TW9kZURlZmluZU93blByb3BlcnR5PihnbG9iYWxEYXRhLCBwcm9wZXJ0eU5hbWUsIHZhbHVl
LCAwLCBzbG90LCBnZXRKU0Z1bmN0aW9uKHZhbHVlKSk7CiB9CiAKLWlubGluZSB2b2lkIEpTT2Jq
ZWN0OjpwdXREaXJlY3RXaXRob3V0VHJhbnNpdGlvbihKU0dsb2JhbERhdGEmIGdsb2JhbERhdGEs
IGNvbnN0IElkZW50aWZpZXImIHByb3BlcnR5TmFtZSwgSlNWYWx1ZSB2YWx1ZSwgdW5zaWduZWQg
YXR0cmlidXRlcykKK2lubGluZSB2b2lkIEpTT2JqZWN0OjpwdXREaXJlY3RXaXRob3V0VHJhbnNp
dGlvbihKU0dsb2JhbERhdGEmIGdsb2JhbERhdGEsIFByb3BlcnR5TmFtZSBwcm9wZXJ0eU5hbWUs
IEpTVmFsdWUgdmFsdWUsIHVuc2lnbmVkIGF0dHJpYnV0ZXMpCiB7CiAgICAgQVNTRVJUKCF2YWx1
ZS5pc0dldHRlclNldHRlcigpICYmICEoYXR0cmlidXRlcyAmIEFjY2Vzc29yKSk7CiAgICAgc2l6
ZV90IGN1cnJlbnRDYXBhY2l0eSA9IHN0cnVjdHVyZSgpLT5wcm9wZXJ0eVN0b3JhZ2VDYXBhY2l0
eSgpOwpAQCAtNzg2LDEzICs3ODYsMTMgQEAgaW5saW5lIEpTVmFsdWUgSlNPYmplY3Q6OnRvUHJp
bWl0aXZlKEV4ZQogICAgIHJldHVybiBtZXRob2RUYWJsZSgpLT5kZWZhdWx0VmFsdWUodGhpcywg
ZXhlYywgcHJlZmVycmVkVHlwZSk7CiB9CiAKLWlubGluZSBKU1ZhbHVlIEpTVmFsdWU6OmdldChF
eGVjU3RhdGUqIGV4ZWMsIGNvbnN0IElkZW50aWZpZXImIHByb3BlcnR5TmFtZSkgY29uc3QKK2lu
bGluZSBKU1ZhbHVlIEpTVmFsdWU6OmdldChFeGVjU3RhdGUqIGV4ZWMsIFByb3BlcnR5TmFtZSBw
cm9wZXJ0eU5hbWUpIGNvbnN0CiB7CiAgICAgUHJvcGVydHlTbG90IHNsb3QoYXNWYWx1ZSgpKTsK
ICAgICByZXR1cm4gZ2V0KGV4ZWMsIHByb3BlcnR5TmFtZSwgc2xvdCk7CiB9CiAKLWlubGluZSBK
U1ZhbHVlIEpTVmFsdWU6OmdldChFeGVjU3RhdGUqIGV4ZWMsIGNvbnN0IElkZW50aWZpZXImIHBy
b3BlcnR5TmFtZSwgUHJvcGVydHlTbG90JiBzbG90KSBjb25zdAoraW5saW5lIEpTVmFsdWUgSlNW
YWx1ZTo6Z2V0KEV4ZWNTdGF0ZSogZXhlYywgUHJvcGVydHlOYW1lIHByb3BlcnR5TmFtZSwgUHJv
cGVydHlTbG90JiBzbG90KSBjb25zdAogewogICAgIGlmIChVTkxJS0VMWSghaXNDZWxsKCkpKSB7
CiAgICAgICAgIEpTT2JqZWN0KiBwcm90b3R5cGUgPSBzeW50aGVzaXplUHJvdG90eXBlKGV4ZWMp
OwpAQCAtODM2LDcgKzgzNiw3IEBAIGlubGluZSBKU1ZhbHVlIEpTVmFsdWU6OmdldChFeGVjU3Rh
dGUqIGUKICAgICB9CiB9CiAKLWlubGluZSB2b2lkIEpTVmFsdWU6OnB1dChFeGVjU3RhdGUqIGV4
ZWMsIGNvbnN0IElkZW50aWZpZXImIHByb3BlcnR5TmFtZSwgSlNWYWx1ZSB2YWx1ZSwgUHV0UHJv
cGVydHlTbG90JiBzbG90KQoraW5saW5lIHZvaWQgSlNWYWx1ZTo6cHV0KEV4ZWNTdGF0ZSogZXhl
YywgUHJvcGVydHlOYW1lIHByb3BlcnR5TmFtZSwgSlNWYWx1ZSB2YWx1ZSwgUHV0UHJvcGVydHlT
bG90JiBzbG90KQogewogICAgIGlmIChVTkxJS0VMWSghaXNDZWxsKCkpKSB7CiAgICAgICAgIHB1
dFRvUHJpbWl0aXZlKGV4ZWMsIHByb3BlcnR5TmFtZSwgdmFsdWUsIHNsb3QpOwpJbmRleDogU291
cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvSlNTdGF0aWNTY29wZU9iamVjdC5jcHAKPT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PQotLS0gU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvSlNTdGF0aWNTY29wZU9iamVj
dC5jcHAJKHJldmlzaW9uIDExNjY2NykKKysrIFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1l
L0pTU3RhdGljU2NvcGVPYmplY3QuY3BwCSh3b3JraW5nIGNvcHkpCkBAIC01NCw3ICs1NCw3IEBA
IEpTT2JqZWN0KiBKU1N0YXRpY1Njb3BlT2JqZWN0Ojp0b1RoaXNPYmoKICAgICByZXR1cm4gZXhl
Yy0+Z2xvYmFsVGhpc1ZhbHVlKCk7CiB9CiAKLXZvaWQgSlNTdGF0aWNTY29wZU9iamVjdDo6cHV0
KEpTQ2VsbCogY2VsbCwgRXhlY1N0YXRlKiBleGVjLCBjb25zdCBJZGVudGlmaWVyJiBwcm9wZXJ0
eU5hbWUsIEpTVmFsdWUgdmFsdWUsIFB1dFByb3BlcnR5U2xvdCYgc2xvdCkKK3ZvaWQgSlNTdGF0
aWNTY29wZU9iamVjdDo6cHV0KEpTQ2VsbCogY2VsbCwgRXhlY1N0YXRlKiBleGVjLCBQcm9wZXJ0
eU5hbWUgcHJvcGVydHlOYW1lLCBKU1ZhbHVlIHZhbHVlLCBQdXRQcm9wZXJ0eVNsb3QmIHNsb3Qp
CiB7CiAgICAgSlNTdGF0aWNTY29wZU9iamVjdCogdGhpc09iamVjdCA9IGpzQ2FzdDxKU1N0YXRp
Y1Njb3BlT2JqZWN0Kj4oY2VsbCk7CiAgICAgaWYgKHNsb3QuaXNTdHJpY3RNb2RlKCkpIHsKQEAg
LTc4LDcgKzc4LDcgQEAgdm9pZCBKU1N0YXRpY1Njb3BlT2JqZWN0OjpwdXQoSlNDZWxsKiBjZQog
ICAgIEFTU0VSVF9OT1RfUkVBQ0hFRCgpOwogfQogCi12b2lkIEpTU3RhdGljU2NvcGVPYmplY3Q6
OnB1dERpcmVjdFZpcnR1YWwoSlNPYmplY3QqIG9iamVjdCwgRXhlY1N0YXRlKiBleGVjLCBjb25z
dCBJZGVudGlmaWVyJiBwcm9wZXJ0eU5hbWUsIEpTVmFsdWUgdmFsdWUsIHVuc2lnbmVkIGF0dHJp
YnV0ZXMpCit2b2lkIEpTU3RhdGljU2NvcGVPYmplY3Q6OnB1dERpcmVjdFZpcnR1YWwoSlNPYmpl
Y3QqIG9iamVjdCwgRXhlY1N0YXRlKiBleGVjLCBQcm9wZXJ0eU5hbWUgcHJvcGVydHlOYW1lLCBK
U1ZhbHVlIHZhbHVlLCB1bnNpZ25lZCBhdHRyaWJ1dGVzKQogewogICAgIEpTU3RhdGljU2NvcGVP
YmplY3QqIHRoaXNPYmplY3QgPSBqc0Nhc3Q8SlNTdGF0aWNTY29wZU9iamVjdCo+KG9iamVjdCk7
CiAgICAgaWYgKHRoaXNPYmplY3QtPnN5bWJvbFRhYmxlUHV0V2l0aEF0dHJpYnV0ZXMoZXhlYy0+
Z2xvYmFsRGF0YSgpLCBwcm9wZXJ0eU5hbWUsIHZhbHVlLCBhdHRyaWJ1dGVzKSkKQEAgLTg3LDcg
Kzg3LDcgQEAgdm9pZCBKU1N0YXRpY1Njb3BlT2JqZWN0OjpwdXREaXJlY3RWaXJ0dQogICAgIEFT
U0VSVF9OT1RfUkVBQ0hFRCgpOwogfQogCi1ib29sIEpTU3RhdGljU2NvcGVPYmplY3Q6OmdldE93
blByb3BlcnR5U2xvdChKU0NlbGwqIGNlbGwsIEV4ZWNTdGF0ZSosIGNvbnN0IElkZW50aWZpZXIm
IHByb3BlcnR5TmFtZSwgUHJvcGVydHlTbG90JiBzbG90KQorYm9vbCBKU1N0YXRpY1Njb3BlT2Jq
ZWN0OjpnZXRPd25Qcm9wZXJ0eVNsb3QoSlNDZWxsKiBjZWxsLCBFeGVjU3RhdGUqLCBQcm9wZXJ0
eU5hbWUgcHJvcGVydHlOYW1lLCBQcm9wZXJ0eVNsb3QmIHNsb3QpCiB7CiAgICAgcmV0dXJuIGpz
Q2FzdDxKU1N0YXRpY1Njb3BlT2JqZWN0Kj4oY2VsbCktPnN5bWJvbFRhYmxlR2V0KHByb3BlcnR5
TmFtZSwgc2xvdCk7CiB9CkluZGV4OiBTb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9KU1N0
YXRpY1Njb3BlT2JqZWN0LmgKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL0phdmFTY3JpcHRDb3JlL3J1
bnRpbWUvSlNTdGF0aWNTY29wZU9iamVjdC5oCShyZXZpc2lvbiAxMTY2NjcpCisrKyBTb3VyY2Uv
SmF2YVNjcmlwdENvcmUvcnVudGltZS9KU1N0YXRpY1Njb3BlT2JqZWN0LmgJKHdvcmtpbmcgY29w
eSkKQEAgLTQ0LDEwICs0NCwxMCBAQCBuYW1lc3BhY2UgSlNDewogICAgICAgICBzdGF0aWMgdm9p
ZCB2aXNpdENoaWxkcmVuKEpTQ2VsbCosIFNsb3RWaXNpdG9yJik7CiAgICAgICAgIGJvb2wgaXNE
eW5hbWljU2NvcGUoYm9vbCYgcmVxdWlyZXNEeW5hbWljQ2hlY2tzKSBjb25zdDsKICAgICAgICAg
c3RhdGljIEpTT2JqZWN0KiB0b1RoaXNPYmplY3QoSlNDZWxsKiwgRXhlY1N0YXRlKik7Ci0gICAg
ICAgIHN0YXRpYyBib29sIGdldE93blByb3BlcnR5U2xvdChKU0NlbGwqLCBFeGVjU3RhdGUqLCBj
b25zdCBJZGVudGlmaWVyJiwgUHJvcGVydHlTbG90Jik7Ci0gICAgICAgIHN0YXRpYyB2b2lkIHB1
dChKU0NlbGwqLCBFeGVjU3RhdGUqLCBjb25zdCBJZGVudGlmaWVyJiwgSlNWYWx1ZSwgUHV0UHJv
cGVydHlTbG90Jik7CisgICAgICAgIHN0YXRpYyBib29sIGdldE93blByb3BlcnR5U2xvdChKU0Nl
bGwqLCBFeGVjU3RhdGUqLCBQcm9wZXJ0eU5hbWUsIFByb3BlcnR5U2xvdCYpOworICAgICAgICBz
dGF0aWMgdm9pZCBwdXQoSlNDZWxsKiwgRXhlY1N0YXRlKiwgUHJvcGVydHlOYW1lLCBKU1ZhbHVl
LCBQdXRQcm9wZXJ0eVNsb3QmKTsKIAotICAgICAgICBzdGF0aWMgdm9pZCBwdXREaXJlY3RWaXJ0
dWFsKEpTT2JqZWN0KiwgRXhlY1N0YXRlKiwgY29uc3QgSWRlbnRpZmllciYsIEpTVmFsdWUsIHVu
c2lnbmVkIGF0dHJpYnV0ZXMpOworICAgICAgICBzdGF0aWMgdm9pZCBwdXREaXJlY3RWaXJ0dWFs
KEpTT2JqZWN0KiwgRXhlY1N0YXRlKiwgUHJvcGVydHlOYW1lLCBKU1ZhbHVlLCB1bnNpZ25lZCBh
dHRyaWJ1dGVzKTsKIAogICAgICAgICBzdGF0aWMgU3RydWN0dXJlKiBjcmVhdGVTdHJ1Y3R1cmUo
SlNHbG9iYWxEYXRhJiBnbG9iYWxEYXRhLCBKU0dsb2JhbE9iamVjdCogZ2xvYmFsT2JqZWN0LCBK
U1ZhbHVlIHByb3RvKSB7IHJldHVybiBTdHJ1Y3R1cmU6OmNyZWF0ZShnbG9iYWxEYXRhLCBnbG9i
YWxPYmplY3QsIHByb3RvLCBUeXBlSW5mbyhTdGF0aWNTY29wZU9iamVjdFR5cGUsIFN0cnVjdHVy
ZUZsYWdzKSwgJnNfaW5mbyk7IH0KIApJbmRleDogU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRp
bWUvSlNTdHJpbmcuY3BwCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50
aW1lL0pTU3RyaW5nLmNwcAkocmV2aXNpb24gMTE2NjY3KQorKysgU291cmNlL0phdmFTY3JpcHRD
b3JlL3J1bnRpbWUvSlNTdHJpbmcuY3BwCSh3b3JraW5nIGNvcHkpCkBAIC0yNTcsNyArMjU3LDcg
QEAgSlNPYmplY3QqIEpTU3RyaW5nOjp0b1RoaXNPYmplY3QoSlNDZWxsKgogICAgIHJldHVybiBT
dHJpbmdPYmplY3Q6OmNyZWF0ZShleGVjLCBleGVjLT5sZXhpY2FsR2xvYmFsT2JqZWN0KCksIGpz
Q2FzdDxKU1N0cmluZyo+KGNlbGwpKTsKIH0KIAotYm9vbCBKU1N0cmluZzo6Z2V0T3duUHJvcGVy
dHlTbG90KEpTQ2VsbCogY2VsbCwgRXhlY1N0YXRlKiBleGVjLCBjb25zdCBJZGVudGlmaWVyJiBw
cm9wZXJ0eU5hbWUsIFByb3BlcnR5U2xvdCYgc2xvdCkKK2Jvb2wgSlNTdHJpbmc6OmdldE93blBy
b3BlcnR5U2xvdChKU0NlbGwqIGNlbGwsIEV4ZWNTdGF0ZSogZXhlYywgUHJvcGVydHlOYW1lIHBy
b3BlcnR5TmFtZSwgUHJvcGVydHlTbG90JiBzbG90KQogewogICAgIEpTU3RyaW5nKiB0aGlzT2Jq
ZWN0ID0ganNDYXN0PEpTU3RyaW5nKj4oY2VsbCk7CiAgICAgLy8gVGhlIHNlbWFudGljcyBoZXJl
IGFyZSByZWFsbHkgZ2V0UHJvcGVydHlTbG90LCBub3QgZ2V0T3duUHJvcGVydHlTbG90LgpAQCAt
Mjc1LDE2ICsyNzUsMTYgQEAgYm9vbCBKU1N0cmluZzo6Z2V0T3duUHJvcGVydHlTbG90KEpTQ2Vs
bAogICAgIHJldHVybiB0cnVlOwogfQogCi1ib29sIEpTU3RyaW5nOjpnZXRTdHJpbmdQcm9wZXJ0
eURlc2NyaXB0b3IoRXhlY1N0YXRlKiBleGVjLCBjb25zdCBJZGVudGlmaWVyJiBwcm9wZXJ0eU5h
bWUsIFByb3BlcnR5RGVzY3JpcHRvciYgZGVzY3JpcHRvcikKK2Jvb2wgSlNTdHJpbmc6OmdldFN0
cmluZ1Byb3BlcnR5RGVzY3JpcHRvcihFeGVjU3RhdGUqIGV4ZWMsIFByb3BlcnR5TmFtZSBwcm9w
ZXJ0eU5hbWUsIFByb3BlcnR5RGVzY3JpcHRvciYgZGVzY3JpcHRvcikKIHsKICAgICBpZiAocHJv
cGVydHlOYW1lID09IGV4ZWMtPnByb3BlcnR5TmFtZXMoKS5sZW5ndGgpIHsKICAgICAgICAgZGVz
Y3JpcHRvci5zZXREZXNjcmlwdG9yKGpzTnVtYmVyKG1fbGVuZ3RoKSwgRG9udEVudW0gfCBEb250
RGVsZXRlIHwgUmVhZE9ubHkpOwogICAgICAgICByZXR1cm4gdHJ1ZTsKICAgICB9CiAgICAgCi0g
ICAgYm9vbCBpc1N0cmljdFVJbnQzMjsKLSAgICB1bnNpZ25lZCBpID0gcHJvcGVydHlOYW1lLnRv
VUludDMyKGlzU3RyaWN0VUludDMyKTsKLSAgICBpZiAoaXNTdHJpY3RVSW50MzIgJiYgaSA8IG1f
bGVuZ3RoKSB7CisgICAgdW5zaWduZWQgaSA9IHByb3BlcnR5TmFtZS5hc0luZGV4KCk7CisgICAg
aWYgKGkgPCBtX2xlbmd0aCkgeworICAgICAgICBBU1NFUlQoaSAhPSBQcm9wZXJ0eU5hbWU6Ok5v
dEFuSW5kZXgpOyAvLyBObyBuZWVkIGZvciBhbiBleHBsaWNpdCBjaGVjaywgdGhlIGFib3ZlIHRl
c3Qgd291bGQgYWx3YXlzIGZhaWwhCiAgICAgICAgIGRlc2NyaXB0b3Iuc2V0RGVzY3JpcHRvcihn
ZXRJbmRleChleGVjLCBpKSwgRG9udERlbGV0ZSB8IFJlYWRPbmx5KTsKICAgICAgICAgcmV0dXJu
IHRydWU7CiAgICAgfQpJbmRleDogU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvSlNTdHJp
bmcuaAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9KU1N0cmlu
Zy5oCShyZXZpc2lvbiAxMTY2NjcpCisrKyBTb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9K
U1N0cmluZy5oCSh3b3JraW5nIGNvcHkpCkBAIC0xNDMsOSArMTQzLDkgQEAgbmFtZXNwYWNlIEpT
QyB7CiAgICAgICAgIEpTT2JqZWN0KiB0b09iamVjdChFeGVjU3RhdGUqLCBKU0dsb2JhbE9iamVj
dCopIGNvbnN0OwogICAgICAgICBkb3VibGUgdG9OdW1iZXIoRXhlY1N0YXRlKikgY29uc3Q7CiAg
ICAgICAgIAotICAgICAgICBib29sIGdldFN0cmluZ1Byb3BlcnR5U2xvdChFeGVjU3RhdGUqLCBj
b25zdCBJZGVudGlmaWVyJiBwcm9wZXJ0eU5hbWUsIFByb3BlcnR5U2xvdCYpOworICAgICAgICBi
b29sIGdldFN0cmluZ1Byb3BlcnR5U2xvdChFeGVjU3RhdGUqLCBQcm9wZXJ0eU5hbWUsIFByb3Bl
cnR5U2xvdCYpOwogICAgICAgICBib29sIGdldFN0cmluZ1Byb3BlcnR5U2xvdChFeGVjU3RhdGUq
LCB1bnNpZ25lZCBwcm9wZXJ0eU5hbWUsIFByb3BlcnR5U2xvdCYpOwotICAgICAgICBib29sIGdl
dFN0cmluZ1Byb3BlcnR5RGVzY3JpcHRvcihFeGVjU3RhdGUqLCBjb25zdCBJZGVudGlmaWVyJiBw
cm9wZXJ0eU5hbWUsIFByb3BlcnR5RGVzY3JpcHRvciYpOworICAgICAgICBib29sIGdldFN0cmlu
Z1Byb3BlcnR5RGVzY3JpcHRvcihFeGVjU3RhdGUqLCBQcm9wZXJ0eU5hbWUsIFByb3BlcnR5RGVz
Y3JpcHRvciYpOwogCiAgICAgICAgIGJvb2wgY2FuR2V0SW5kZXgodW5zaWduZWQgaSkgeyByZXR1
cm4gaSA8IG1fbGVuZ3RoOyB9CiAgICAgICAgIEpTU3RyaW5nKiBnZXRJbmRleChFeGVjU3RhdGUq
LCB1bnNpZ25lZCk7CkBAIC0xODEsNyArMTgxLDcgQEAgbmFtZXNwYWNlIEpTQyB7CiAgICAgICAg
IHN0YXRpYyBKU09iamVjdCogdG9UaGlzT2JqZWN0KEpTQ2VsbCosIEV4ZWNTdGF0ZSopOwogCiAg
ICAgICAgIC8vIEFjdHVhbGx5IGdldFByb3BlcnR5U2xvdCwgbm90IGdldE93blByb3BlcnR5U2xv
dCAoc2VlIEpTQ2VsbCkuCi0gICAgICAgIHN0YXRpYyBib29sIGdldE93blByb3BlcnR5U2xvdChK
U0NlbGwqLCBFeGVjU3RhdGUqLCBjb25zdCBJZGVudGlmaWVyJiBwcm9wZXJ0eU5hbWUsIFByb3Bl
cnR5U2xvdCYpOworICAgICAgICBzdGF0aWMgYm9vbCBnZXRPd25Qcm9wZXJ0eVNsb3QoSlNDZWxs
KiwgRXhlY1N0YXRlKiwgUHJvcGVydHlOYW1lLCBQcm9wZXJ0eVNsb3QmKTsKICAgICAgICAgc3Rh
dGljIGJvb2wgZ2V0T3duUHJvcGVydHlTbG90QnlJbmRleChKU0NlbGwqLCBFeGVjU3RhdGUqLCB1
bnNpZ25lZCBwcm9wZXJ0eU5hbWUsIFByb3BlcnR5U2xvdCYpOwogCiAgICAgICAgIFVTdHJpbmcm
IHN0cmluZygpIHsgQVNTRVJUKCFpc1JvcGUoKSk7IHJldHVybiBtX3ZhbHVlOyB9CkBAIC00NDks
MTYgKzQ0OSwxNiBAQCBuYW1lc3BhY2UgSlNDIHsKICAgICBpbmxpbmUgSlNTdHJpbmcqIGpzTm9u
dHJpdmlhbFN0cmluZyhFeGVjU3RhdGUqIGV4ZWMsIGNvbnN0IGNoYXIqIHMpIHsgcmV0dXJuIGpz
Tm9udHJpdmlhbFN0cmluZygmZXhlYy0+Z2xvYmFsRGF0YSgpLCBzKTsgfQogICAgIGlubGluZSBK
U1N0cmluZyoganNPd25lZFN0cmluZyhFeGVjU3RhdGUqIGV4ZWMsIGNvbnN0IFVTdHJpbmcmIHMp
IHsgcmV0dXJuIGpzT3duZWRTdHJpbmcoJmV4ZWMtPmdsb2JhbERhdGEoKSwgcyk7IH0gCiAKLSAg
ICBBTFdBWVNfSU5MSU5FIGJvb2wgSlNTdHJpbmc6OmdldFN0cmluZ1Byb3BlcnR5U2xvdChFeGVj
U3RhdGUqIGV4ZWMsIGNvbnN0IElkZW50aWZpZXImIHByb3BlcnR5TmFtZSwgUHJvcGVydHlTbG90
JiBzbG90KQorICAgIEFMV0FZU19JTkxJTkUgYm9vbCBKU1N0cmluZzo6Z2V0U3RyaW5nUHJvcGVy
dHlTbG90KEV4ZWNTdGF0ZSogZXhlYywgUHJvcGVydHlOYW1lIHByb3BlcnR5TmFtZSwgUHJvcGVy
dHlTbG90JiBzbG90KQogICAgIHsKICAgICAgICAgaWYgKHByb3BlcnR5TmFtZSA9PSBleGVjLT5w
cm9wZXJ0eU5hbWVzKCkubGVuZ3RoKSB7CiAgICAgICAgICAgICBzbG90LnNldFZhbHVlKGpzTnVt
YmVyKG1fbGVuZ3RoKSk7CiAgICAgICAgICAgICByZXR1cm4gdHJ1ZTsKICAgICAgICAgfQogCi0g
ICAgICAgIGJvb2wgaXNTdHJpY3RVSW50MzI7Ci0gICAgICAgIHVuc2lnbmVkIGkgPSBwcm9wZXJ0
eU5hbWUudG9VSW50MzIoaXNTdHJpY3RVSW50MzIpOwotICAgICAgICBpZiAoaXNTdHJpY3RVSW50
MzIgJiYgaSA8IG1fbGVuZ3RoKSB7CisgICAgICAgIHVuc2lnbmVkIGkgPSBwcm9wZXJ0eU5hbWUu
YXNJbmRleCgpOworICAgICAgICBpZiAoaSA8IG1fbGVuZ3RoKSB7CisgICAgICAgICAgICBBU1NF
UlQoaSAhPSBQcm9wZXJ0eU5hbWU6Ok5vdEFuSW5kZXgpOyAvLyBObyBuZWVkIGZvciBhbiBleHBs
aWNpdCBjaGVjaywgdGhlIGFib3ZlIHRlc3Qgd291bGQgYWx3YXlzIGZhaWwhCiAgICAgICAgICAg
ICBzbG90LnNldFZhbHVlKGdldEluZGV4KGV4ZWMsIGkpKTsKICAgICAgICAgICAgIHJldHVybiB0
cnVlOwogICAgICAgICB9CkluZGV4OiBTb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9KU1Zh
bHVlLmNwcAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9KU1Zh
bHVlLmNwcAkocmV2aXNpb24gMTE2NjY3KQorKysgU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRp
bWUvSlNWYWx1ZS5jcHAJKHdvcmtpbmcgY29weSkKQEAgLTEwOSw3ICsxMDksNyBAQCBKU09iamVj
dCogSlNWYWx1ZTo6c3ludGhlc2l6ZVByb3RvdHlwZShFCiB9CiAKIC8vIEVDTUEgOC43LjIKLXZv
aWQgSlNWYWx1ZTo6cHV0VG9QcmltaXRpdmUoRXhlY1N0YXRlKiBleGVjLCBjb25zdCBJZGVudGlm
aWVyJiBwcm9wZXJ0eU5hbWUsIEpTVmFsdWUgdmFsdWUsIFB1dFByb3BlcnR5U2xvdCYgc2xvdCkK
K3ZvaWQgSlNWYWx1ZTo6cHV0VG9QcmltaXRpdmUoRXhlY1N0YXRlKiBleGVjLCBQcm9wZXJ0eU5h
bWUgcHJvcGVydHlOYW1lLCBKU1ZhbHVlIHZhbHVlLCBQdXRQcm9wZXJ0eVNsb3QmIHNsb3QpCiB7
CiAgICAgSlNHbG9iYWxEYXRhJiBnbG9iYWxEYXRhID0gZXhlYy0+Z2xvYmFsRGF0YSgpOwogCklu
ZGV4OiBTb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9KU1ZhbHVlLmgKPT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQot
LS0gU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvSlNWYWx1ZS5oCShyZXZpc2lvbiAxMTY2
NjcpCisrKyBTb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9KU1ZhbHVlLmgJKHdvcmtpbmcg
Y29weSkKQEAgLTM2LDEyICszNiwxMiBAQAogbmFtZXNwYWNlIEpTQyB7CiAKICAgICBjbGFzcyBF
eGVjU3RhdGU7Ci0gICAgY2xhc3MgSWRlbnRpZmllcjsKICAgICBjbGFzcyBKU0NlbGw7CiAgICAg
Y2xhc3MgSlNHbG9iYWxEYXRhOwogICAgIGNsYXNzIEpTR2xvYmFsT2JqZWN0OwogICAgIGNsYXNz
IEpTT2JqZWN0OwogICAgIGNsYXNzIEpTU3RyaW5nOworICAgIGNsYXNzIFByb3BlcnR5TmFtZTsK
ICAgICBjbGFzcyBQcm9wZXJ0eVNsb3Q7CiAgICAgY2xhc3MgUHV0UHJvcGVydHlTbG90OwogICAg
IGNsYXNzIFVTdHJpbmc7CkBAIC0yMTksMTIgKzIxOSwxMiBAQCBuYW1lc3BhY2UgSlNDIHsKICAg
ICAgICAgZmxvYXQgdG9GbG9hdChFeGVjU3RhdGUqIGV4ZWMpIGNvbnN0IHsgcmV0dXJuIHN0YXRp
Y19jYXN0PGZsb2F0Pih0b051bWJlcihleGVjKSk7IH0KIAogICAgICAgICAvLyBPYmplY3Qgb3Bl
cmF0aW9ucywgd2l0aCB0aGUgdG9PYmplY3Qgb3BlcmF0aW9uIGluY2x1ZGVkLgotICAgICAgICBK
U1ZhbHVlIGdldChFeGVjU3RhdGUqLCBjb25zdCBJZGVudGlmaWVyJiBwcm9wZXJ0eU5hbWUpIGNv
bnN0OwotICAgICAgICBKU1ZhbHVlIGdldChFeGVjU3RhdGUqLCBjb25zdCBJZGVudGlmaWVyJiBw
cm9wZXJ0eU5hbWUsIFByb3BlcnR5U2xvdCYpIGNvbnN0OworICAgICAgICBKU1ZhbHVlIGdldChF
eGVjU3RhdGUqLCBQcm9wZXJ0eU5hbWUpIGNvbnN0OworICAgICAgICBKU1ZhbHVlIGdldChFeGVj
U3RhdGUqLCBQcm9wZXJ0eU5hbWUsIFByb3BlcnR5U2xvdCYpIGNvbnN0OwogICAgICAgICBKU1Zh
bHVlIGdldChFeGVjU3RhdGUqLCB1bnNpZ25lZCBwcm9wZXJ0eU5hbWUpIGNvbnN0OwogICAgICAg
ICBKU1ZhbHVlIGdldChFeGVjU3RhdGUqLCB1bnNpZ25lZCBwcm9wZXJ0eU5hbWUsIFByb3BlcnR5
U2xvdCYpIGNvbnN0OwotICAgICAgICB2b2lkIHB1dChFeGVjU3RhdGUqLCBjb25zdCBJZGVudGlm
aWVyJiBwcm9wZXJ0eU5hbWUsIEpTVmFsdWUsIFB1dFByb3BlcnR5U2xvdCYpOwotICAgICAgICB2
b2lkIHB1dFRvUHJpbWl0aXZlKEV4ZWNTdGF0ZSosIGNvbnN0IElkZW50aWZpZXImIHByb3BlcnR5
TmFtZSwgSlNWYWx1ZSwgUHV0UHJvcGVydHlTbG90Jik7CisgICAgICAgIHZvaWQgcHV0KEV4ZWNT
dGF0ZSosIFByb3BlcnR5TmFtZSwgSlNWYWx1ZSwgUHV0UHJvcGVydHlTbG90Jik7CisgICAgICAg
IHZvaWQgcHV0VG9QcmltaXRpdmUoRXhlY1N0YXRlKiwgUHJvcGVydHlOYW1lLCBKU1ZhbHVlLCBQ
dXRQcm9wZXJ0eVNsb3QmKTsKICAgICAgICAgdm9pZCBwdXRCeUluZGV4KEV4ZWNTdGF0ZSosIHVu
c2lnbmVkIHByb3BlcnR5TmFtZSwgSlNWYWx1ZSwgYm9vbCBzaG91bGRUaHJvdyk7CiAKICAgICAg
ICAgSlNPYmplY3QqIHRvVGhpc09iamVjdChFeGVjU3RhdGUqKSBjb25zdDsKSW5kZXg6IFNvdXJj
ZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL0pTVmFyaWFibGVPYmplY3QuY3BwCj09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0K
LS0tIFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL0pTVmFyaWFibGVPYmplY3QuY3BwCShy
ZXZpc2lvbiAxMTY2NjcpCisrKyBTb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9KU1Zhcmlh
YmxlT2JqZWN0LmNwcAkod29ya2luZyBjb3B5KQpAQCAtNDIsNyArNDIsNyBAQCB2b2lkIEpTVmFy
aWFibGVPYmplY3Q6OmRlc3Ryb3koSlNDZWxsKiBjCiAgICAganNDYXN0PEpTVmFyaWFibGVPYmpl
Y3QqPihjZWxsKS0+SlNWYXJpYWJsZU9iamVjdDo6fkpTVmFyaWFibGVPYmplY3QoKTsKIH0KIAot
Ym9vbCBKU1ZhcmlhYmxlT2JqZWN0OjpkZWxldGVQcm9wZXJ0eShKU0NlbGwqIGNlbGwsIEV4ZWNT
dGF0ZSogZXhlYywgY29uc3QgSWRlbnRpZmllciYgcHJvcGVydHlOYW1lKQorYm9vbCBKU1Zhcmlh
YmxlT2JqZWN0OjpkZWxldGVQcm9wZXJ0eShKU0NlbGwqIGNlbGwsIEV4ZWNTdGF0ZSogZXhlYywg
UHJvcGVydHlOYW1lIHByb3BlcnR5TmFtZSkKIHsKICAgICBKU1ZhcmlhYmxlT2JqZWN0KiB0aGlz
T2JqZWN0ID0ganNDYXN0PEpTVmFyaWFibGVPYmplY3QqPihjZWxsKTsKICAgICBpZiAodGhpc09i
amVjdC0+c3ltYm9sVGFibGUoKS5jb250YWlucyhwcm9wZXJ0eU5hbWUuaW1wbCgpKSkKQEAgLTYz
LDcgKzYzLDcgQEAgdm9pZCBKU1ZhcmlhYmxlT2JqZWN0OjpnZXRPd25Qcm9wZXJ0eU5hbQogICAg
IEpTT2JqZWN0OjpnZXRPd25Qcm9wZXJ0eU5hbWVzKHRoaXNPYmplY3QsIGV4ZWMsIHByb3BlcnR5
TmFtZXMsIG1vZGUpOwogfQogCi1ib29sIEpTVmFyaWFibGVPYmplY3Q6OnN5bWJvbFRhYmxlR2V0
KGNvbnN0IElkZW50aWZpZXImIHByb3BlcnR5TmFtZSwgUHJvcGVydHlEZXNjcmlwdG9yJiBkZXNj
cmlwdG9yKQorYm9vbCBKU1ZhcmlhYmxlT2JqZWN0OjpzeW1ib2xUYWJsZUdldChQcm9wZXJ0eU5h
bWUgcHJvcGVydHlOYW1lLCBQcm9wZXJ0eURlc2NyaXB0b3ImIGRlc2NyaXB0b3IpCiB7CiAgICAg
U3ltYm9sVGFibGVFbnRyeSBlbnRyeSA9IHN5bWJvbFRhYmxlKCkuaW5saW5lR2V0KHByb3BlcnR5
TmFtZS5pbXBsKCkpOwogICAgIGlmICghZW50cnkuaXNOdWxsKCkpIHsKQEAgLTczLDcgKzczLDcg
QEAgYm9vbCBKU1ZhcmlhYmxlT2JqZWN0OjpzeW1ib2xUYWJsZUdldChjbwogICAgIHJldHVybiBm
YWxzZTsKIH0KIAotdm9pZCBKU1ZhcmlhYmxlT2JqZWN0OjpwdXREaXJlY3RWaXJ0dWFsKEpTT2Jq
ZWN0KiwgRXhlY1N0YXRlKiwgY29uc3QgSWRlbnRpZmllciYsIEpTVmFsdWUsIHVuc2lnbmVkKQor
dm9pZCBKU1ZhcmlhYmxlT2JqZWN0OjpwdXREaXJlY3RWaXJ0dWFsKEpTT2JqZWN0KiwgRXhlY1N0
YXRlKiwgUHJvcGVydHlOYW1lLCBKU1ZhbHVlLCB1bnNpZ25lZCkKIHsKICAgICBBU1NFUlRfTk9U
X1JFQUNIRUQoKTsKIH0KSW5kZXg6IFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL0pTVmFy
aWFibGVPYmplY3QuaAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGlt
ZS9KU1ZhcmlhYmxlT2JqZWN0LmgJKHJldmlzaW9uIDExNjY2NykKKysrIFNvdXJjZS9KYXZhU2Ny
aXB0Q29yZS9ydW50aW1lL0pTVmFyaWFibGVPYmplY3QuaAkod29ya2luZyBjb3B5KQpAQCAtNTIs
OSArNTIsOSBAQCBuYW1lc3BhY2UgSlNDIHsKIAogICAgICAgICBKU19FWFBPUlRfUFJJVkFURSBz
dGF0aWMgdm9pZCBkZXN0cm95KEpTQ2VsbCopOwogCi0gICAgICAgIHN0YXRpYyBOT19SRVRVUk5f
RFVFX1RPX0FTU0VSVCB2b2lkIHB1dERpcmVjdFZpcnR1YWwoSlNPYmplY3QqLCBFeGVjU3RhdGUq
LCBjb25zdCBJZGVudGlmaWVyJiwgSlNWYWx1ZSwgdW5zaWduZWQgYXR0cmlidXRlcyk7CisgICAg
ICAgIHN0YXRpYyBOT19SRVRVUk5fRFVFX1RPX0FTU0VSVCB2b2lkIHB1dERpcmVjdFZpcnR1YWwo
SlNPYmplY3QqLCBFeGVjU3RhdGUqLCBQcm9wZXJ0eU5hbWUsIEpTVmFsdWUsIHVuc2lnbmVkIGF0
dHJpYnV0ZXMpOwogCi0gICAgICAgIEpTX0VYUE9SVF9QUklWQVRFIHN0YXRpYyBib29sIGRlbGV0
ZVByb3BlcnR5KEpTQ2VsbCosIEV4ZWNTdGF0ZSosIGNvbnN0IElkZW50aWZpZXImKTsKKyAgICAg
ICAgSlNfRVhQT1JUX1BSSVZBVEUgc3RhdGljIGJvb2wgZGVsZXRlUHJvcGVydHkoSlNDZWxsKiwg
RXhlY1N0YXRlKiwgUHJvcGVydHlOYW1lKTsKICAgICAgICAgSlNfRVhQT1JUX1BSSVZBVEUgc3Rh
dGljIHZvaWQgZ2V0T3duUHJvcGVydHlOYW1lcyhKU09iamVjdCosIEV4ZWNTdGF0ZSosIFByb3Bl
cnR5TmFtZUFycmF5JiwgRW51bWVyYXRpb25Nb2RlKTsKICAgICAgICAgCiAgICAgICAgIGJvb2wg
aXNEeW5hbWljU2NvcGUoYm9vbCYgcmVxdWlyZXNEeW5hbWljQ2hlY2tzKSBjb25zdDsKQEAgLTg5
LDE4ICs4OSwxOCBAQCBuYW1lc3BhY2UgSlNDIHsKICAgICAgICAgUGFzc093bkFycmF5UHRyPFdy
aXRlQmFycmllcjxVbmtub3duPiA+IGNvcHlSZWdpc3RlckFycmF5KEpTR2xvYmFsRGF0YSYsIFdy
aXRlQmFycmllcjxVbmtub3duPiogc3JjLCBzaXplX3QgY291bnQsIHNpemVfdCBjYWxsZnJhbWVT
dGFydHMpOwogICAgICAgICB2b2lkIHNldFJlZ2lzdGVycyhXcml0ZUJhcnJpZXI8VW5rbm93bj4q
IHJlZ2lzdGVycywgUGFzc093bkFycmF5UHRyPFdyaXRlQmFycmllcjxVbmtub3duPiA+IHJlZ2lz
dGVyQXJyYXkpOwogCi0gICAgICAgIGJvb2wgc3ltYm9sVGFibGVHZXQoY29uc3QgSWRlbnRpZmll
ciYsIFByb3BlcnR5U2xvdCYpOwotICAgICAgICBKU19FWFBPUlRfUFJJVkFURSBib29sIHN5bWJv
bFRhYmxlR2V0KGNvbnN0IElkZW50aWZpZXImLCBQcm9wZXJ0eURlc2NyaXB0b3ImKTsKLSAgICAg
ICAgYm9vbCBzeW1ib2xUYWJsZUdldChjb25zdCBJZGVudGlmaWVyJiwgUHJvcGVydHlTbG90Jiwg
Ym9vbCYgc2xvdElzV3JpdGVhYmxlKTsKLSAgICAgICAgYm9vbCBzeW1ib2xUYWJsZVB1dChFeGVj
U3RhdGUqLCBjb25zdCBJZGVudGlmaWVyJiwgSlNWYWx1ZSwgYm9vbCBzaG91bGRUaHJvdyk7Ci0g
ICAgICAgIGJvb2wgc3ltYm9sVGFibGVQdXRXaXRoQXR0cmlidXRlcyhKU0dsb2JhbERhdGEmLCBj
b25zdCBJZGVudGlmaWVyJiwgSlNWYWx1ZSwgdW5zaWduZWQgYXR0cmlidXRlcyk7CisgICAgICAg
IGJvb2wgc3ltYm9sVGFibGVHZXQoUHJvcGVydHlOYW1lLCBQcm9wZXJ0eVNsb3QmKTsKKyAgICAg
ICAgSlNfRVhQT1JUX1BSSVZBVEUgYm9vbCBzeW1ib2xUYWJsZUdldChQcm9wZXJ0eU5hbWUsIFBy
b3BlcnR5RGVzY3JpcHRvciYpOworICAgICAgICBib29sIHN5bWJvbFRhYmxlR2V0KFByb3BlcnR5
TmFtZSwgUHJvcGVydHlTbG90JiwgYm9vbCYgc2xvdElzV3JpdGVhYmxlKTsKKyAgICAgICAgYm9v
bCBzeW1ib2xUYWJsZVB1dChFeGVjU3RhdGUqLCBQcm9wZXJ0eU5hbWUsIEpTVmFsdWUsIGJvb2wg
c2hvdWxkVGhyb3cpOworICAgICAgICBib29sIHN5bWJvbFRhYmxlUHV0V2l0aEF0dHJpYnV0ZXMo
SlNHbG9iYWxEYXRhJiwgUHJvcGVydHlOYW1lLCBKU1ZhbHVlLCB1bnNpZ25lZCBhdHRyaWJ1dGVz
KTsKIAogICAgICAgICBTeW1ib2xUYWJsZSogbV9zeW1ib2xUYWJsZTsgLy8gTWFwcyBuYW1lIC0+
IG9mZnNldCBmcm9tICJyIiBpbiByZWdpc3RlciBmaWxlLgogICAgICAgICBXcml0ZUJhcnJpZXI8
VW5rbm93bj4qIG1fcmVnaXN0ZXJzOyAvLyAiciIgaW4gdGhlIHJlZ2lzdGVyIGZpbGUuCiAgICAg
ICAgIE93bkFycmF5UHRyPFdyaXRlQmFycmllcjxVbmtub3duPiA+IG1fcmVnaXN0ZXJBcnJheTsg
Ly8gSW5kZXBlbmRlbnQgY29weSBvZiByZWdpc3RlcnMsIHVzZWQgd2hlbiBhIHZhcmlhYmxlIG9i
amVjdCBjb3BpZXMgaXRzIHJlZ2lzdGVycyBvdXQgb2YgdGhlIHJlZ2lzdGVyIGZpbGUuCiAgICAg
fTsKIAotICAgIGlubGluZSBib29sIEpTVmFyaWFibGVPYmplY3Q6OnN5bWJvbFRhYmxlR2V0KGNv
bnN0IElkZW50aWZpZXImIHByb3BlcnR5TmFtZSwgUHJvcGVydHlTbG90JiBzbG90KQorICAgIGlu
bGluZSBib29sIEpTVmFyaWFibGVPYmplY3Q6OnN5bWJvbFRhYmxlR2V0KFByb3BlcnR5TmFtZSBw
cm9wZXJ0eU5hbWUsIFByb3BlcnR5U2xvdCYgc2xvdCkKICAgICB7CiAgICAgICAgIFN5bWJvbFRh
YmxlRW50cnkgZW50cnkgPSBzeW1ib2xUYWJsZSgpLmlubGluZUdldChwcm9wZXJ0eU5hbWUuaW1w
bCgpKTsKICAgICAgICAgaWYgKCFlbnRyeS5pc051bGwoKSkgewpAQCAtMTEwLDcgKzExMCw3IEBA
IG5hbWVzcGFjZSBKU0MgewogICAgICAgICByZXR1cm4gZmFsc2U7CiAgICAgfQogCi0gICAgaW5s
aW5lIGJvb2wgSlNWYXJpYWJsZU9iamVjdDo6c3ltYm9sVGFibGVHZXQoY29uc3QgSWRlbnRpZmll
ciYgcHJvcGVydHlOYW1lLCBQcm9wZXJ0eVNsb3QmIHNsb3QsIGJvb2wmIHNsb3RJc1dyaXRlYWJs
ZSkKKyAgICBpbmxpbmUgYm9vbCBKU1ZhcmlhYmxlT2JqZWN0OjpzeW1ib2xUYWJsZUdldChQcm9w
ZXJ0eU5hbWUgcHJvcGVydHlOYW1lLCBQcm9wZXJ0eVNsb3QmIHNsb3QsIGJvb2wmIHNsb3RJc1dy
aXRlYWJsZSkKICAgICB7CiAgICAgICAgIFN5bWJvbFRhYmxlRW50cnkgZW50cnkgPSBzeW1ib2xU
YWJsZSgpLmlubGluZUdldChwcm9wZXJ0eU5hbWUuaW1wbCgpKTsKICAgICAgICAgaWYgKCFlbnRy
eS5pc051bGwoKSkgewpAQCAtMTIxLDcgKzEyMSw3IEBAIG5hbWVzcGFjZSBKU0MgewogICAgICAg
ICByZXR1cm4gZmFsc2U7CiAgICAgfQogCi0gICAgaW5saW5lIGJvb2wgSlNWYXJpYWJsZU9iamVj
dDo6c3ltYm9sVGFibGVQdXQoRXhlY1N0YXRlKiBleGVjLCBjb25zdCBJZGVudGlmaWVyJiBwcm9w
ZXJ0eU5hbWUsIEpTVmFsdWUgdmFsdWUsIGJvb2wgc2hvdWxkVGhyb3cpCisgICAgaW5saW5lIGJv
b2wgSlNWYXJpYWJsZU9iamVjdDo6c3ltYm9sVGFibGVQdXQoRXhlY1N0YXRlKiBleGVjLCBQcm9w
ZXJ0eU5hbWUgcHJvcGVydHlOYW1lLCBKU1ZhbHVlIHZhbHVlLCBib29sIHNob3VsZFRocm93KQog
ICAgIHsKICAgICAgICAgSlNHbG9iYWxEYXRhJiBnbG9iYWxEYXRhID0gZXhlYy0+Z2xvYmFsRGF0
YSgpOwogICAgICAgICBBU1NFUlQoIUhlYXA6OmhlYXAodmFsdWUpIHx8IEhlYXA6OmhlYXAodmFs
dWUpID09IEhlYXA6OmhlYXAodGhpcykpOwpAQCAtMTM4LDcgKzEzOCw3IEBAIG5hbWVzcGFjZSBK
U0MgewogICAgICAgICByZXR1cm4gdHJ1ZTsKICAgICB9CiAKLSAgICBpbmxpbmUgYm9vbCBKU1Zh
cmlhYmxlT2JqZWN0OjpzeW1ib2xUYWJsZVB1dFdpdGhBdHRyaWJ1dGVzKEpTR2xvYmFsRGF0YSYg
Z2xvYmFsRGF0YSwgY29uc3QgSWRlbnRpZmllciYgcHJvcGVydHlOYW1lLCBKU1ZhbHVlIHZhbHVl
LCB1bnNpZ25lZCBhdHRyaWJ1dGVzKQorICAgIGlubGluZSBib29sIEpTVmFyaWFibGVPYmplY3Q6
OnN5bWJvbFRhYmxlUHV0V2l0aEF0dHJpYnV0ZXMoSlNHbG9iYWxEYXRhJiBnbG9iYWxEYXRhLCBQ
cm9wZXJ0eU5hbWUgcHJvcGVydHlOYW1lLCBKU1ZhbHVlIHZhbHVlLCB1bnNpZ25lZCBhdHRyaWJ1
dGVzKQogICAgIHsKICAgICAgICAgQVNTRVJUKCFIZWFwOjpoZWFwKHZhbHVlKSB8fCBIZWFwOjpo
ZWFwKHZhbHVlKSA9PSBIZWFwOjpoZWFwKHRoaXMpKTsKIApJbmRleDogU291cmNlL0phdmFTY3Jp
cHRDb3JlL3J1bnRpbWUvTG9va3VwLmNwcAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvSmF2YVNjcmlw
dENvcmUvcnVudGltZS9Mb29rdXAuY3BwCShyZXZpc2lvbiAxMTY2NjcpCisrKyBTb3VyY2UvSmF2
YVNjcmlwdENvcmUvcnVudGltZS9Mb29rdXAuY3BwCSh3b3JraW5nIGNvcHkpCkBAIC02NCw3ICs2
NCw3IEBAIHZvaWQgSGFzaFRhYmxlOjpkZWxldGVUYWJsZSgpIGNvbnN0CiAgICAgfQogfQogCi1i
b29sIHNldFVwU3RhdGljRnVuY3Rpb25TbG90KEV4ZWNTdGF0ZSogZXhlYywgY29uc3QgSGFzaEVu
dHJ5KiBlbnRyeSwgSlNPYmplY3QqIHRoaXNPYmosIGNvbnN0IElkZW50aWZpZXImIHByb3BlcnR5
TmFtZSwgUHJvcGVydHlTbG90JiBzbG90KQorYm9vbCBzZXRVcFN0YXRpY0Z1bmN0aW9uU2xvdChF
eGVjU3RhdGUqIGV4ZWMsIGNvbnN0IEhhc2hFbnRyeSogZW50cnksIEpTT2JqZWN0KiB0aGlzT2Jq
LCBQcm9wZXJ0eU5hbWUgcHJvcGVydHlOYW1lLCBQcm9wZXJ0eVNsb3QmIHNsb3QpCiB7CiAgICAg
QVNTRVJUKHRoaXNPYmotPmdsb2JhbE9iamVjdCgpKTsKICAgICBBU1NFUlQoZW50cnktPmF0dHJp
YnV0ZXMoKSAmIEZ1bmN0aW9uKTsKQEAgLTc2LDcgKzc2LDcgQEAgYm9vbCBzZXRVcFN0YXRpY0Z1
bmN0aW9uU2xvdChFeGVjU3RhdGUqIAogICAgICAgICBpZiAodGhpc09iai0+c3RhdGljRnVuY3Rp
b25zUmVpZmllZCgpKQogICAgICAgICAgICAgcmV0dXJuIGZhbHNlOwogICAgIAotICAgICAgICBK
U0Z1bmN0aW9uKiBmdW5jdGlvbiA9IEpTRnVuY3Rpb246OmNyZWF0ZShleGVjLCB0aGlzT2JqLT5n
bG9iYWxPYmplY3QoKSwgZW50cnktPmZ1bmN0aW9uTGVuZ3RoKCksIHByb3BlcnR5TmFtZSwgZW50
cnktPmZ1bmN0aW9uKCksIGVudHJ5LT5pbnRyaW5zaWMoKSk7CisgICAgICAgIEpTRnVuY3Rpb24q
IGZ1bmN0aW9uID0gSlNGdW5jdGlvbjo6Y3JlYXRlKGV4ZWMsIHRoaXNPYmotPmdsb2JhbE9iamVj
dCgpLCBlbnRyeS0+ZnVuY3Rpb25MZW5ndGgoKSwgcHJvcGVydHlOYW1lLnVzdHJpbmcoKSwgZW50
cnktPmZ1bmN0aW9uKCksIGVudHJ5LT5pbnRyaW5zaWMoKSk7CiAgICAgICAgIHRoaXNPYmotPnB1
dERpcmVjdChleGVjLT5nbG9iYWxEYXRhKCksIHByb3BlcnR5TmFtZSwgZnVuY3Rpb24sIGVudHJ5
LT5hdHRyaWJ1dGVzKCkpOwogICAgICAgICBsb2NhdGlvbiA9IHRoaXNPYmotPmdldERpcmVjdExv
Y2F0aW9uKGV4ZWMtPmdsb2JhbERhdGEoKSwgcHJvcGVydHlOYW1lKTsKICAgICB9CkluZGV4OiBT
b3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9Mb29rdXAuaAo9PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3Vy
Y2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9Mb29rdXAuaAkocmV2aXNpb24gMTE2NjY3KQorKysg
U291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvTG9va3VwLmgJKHdvcmtpbmcgY29weSkKQEAg
LTEyOSwxMyArMTI5LDEzIEBAIG5hbWVzcGFjZSBKU0MgewogICAgICAgICBKU19FWFBPUlRfUFJJ
VkFURSB2b2lkIGRlbGV0ZVRhYmxlKCkgY29uc3Q7CiAKICAgICAgICAgLy8gRmluZCBhbiBlbnRy
eSBpbiB0aGUgdGFibGUsIGFuZCByZXR1cm4gdGhlIGVudHJ5LgotICAgICAgICBBTFdBWVNfSU5M
SU5FIGNvbnN0IEhhc2hFbnRyeSogZW50cnkoSlNHbG9iYWxEYXRhKiBnbG9iYWxEYXRhLCBjb25z
dCBJZGVudGlmaWVyJiBpZGVudGlmaWVyKSBjb25zdAorICAgICAgICBBTFdBWVNfSU5MSU5FIGNv
bnN0IEhhc2hFbnRyeSogZW50cnkoSlNHbG9iYWxEYXRhKiBnbG9iYWxEYXRhLCBQcm9wZXJ0eU5h
bWUgaWRlbnRpZmllcikgY29uc3QKICAgICAgICAgewogICAgICAgICAgICAgaW5pdGlhbGl6ZUlm
TmVlZGVkKGdsb2JhbERhdGEpOwogICAgICAgICAgICAgcmV0dXJuIGVudHJ5KGlkZW50aWZpZXIp
OwogICAgICAgICB9CiAKLSAgICAgICAgQUxXQVlTX0lOTElORSBjb25zdCBIYXNoRW50cnkqIGVu
dHJ5KEV4ZWNTdGF0ZSogZXhlYywgY29uc3QgSWRlbnRpZmllciYgaWRlbnRpZmllcikgY29uc3QK
KyAgICAgICAgQUxXQVlTX0lOTElORSBjb25zdCBIYXNoRW50cnkqIGVudHJ5KEV4ZWNTdGF0ZSog
ZXhlYywgUHJvcGVydHlOYW1lIGlkZW50aWZpZXIpIGNvbnN0CiAgICAgICAgIHsKICAgICAgICAg
ICAgIGluaXRpYWxpemVJZk5lZWRlZChleGVjKTsKICAgICAgICAgICAgIHJldHVybiBlbnRyeShp
ZGVudGlmaWVyKTsKQEAgLTE5OSw3ICsxOTksNyBAQCBuYW1lc3BhY2UgSlNDIHsKICAgICAgICAg
fQogCiAgICAgcHJpdmF0ZToKLSAgICAgICAgQUxXQVlTX0lOTElORSBjb25zdCBIYXNoRW50cnkq
IGVudHJ5KGNvbnN0IElkZW50aWZpZXImIGlkZW50aWZpZXIpIGNvbnN0CisgICAgICAgIEFMV0FZ
U19JTkxJTkUgY29uc3QgSGFzaEVudHJ5KiBlbnRyeShQcm9wZXJ0eU5hbWUgaWRlbnRpZmllcikg
Y29uc3QKICAgICAgICAgewogICAgICAgICAgICAgQVNTRVJUKHRhYmxlKTsKIApAQCAtMjIxLDcg
KzIyMSw3IEBAIG5hbWVzcGFjZSBKU0MgewogICAgICAgICBKU19FWFBPUlRfUFJJVkFURSB2b2lk
IGNyZWF0ZVRhYmxlKEpTR2xvYmFsRGF0YSopIGNvbnN0OwogICAgIH07CiAKLSAgICBKU19FWFBP
UlRfUFJJVkFURSBib29sIHNldFVwU3RhdGljRnVuY3Rpb25TbG90KEV4ZWNTdGF0ZSosIGNvbnN0
IEhhc2hFbnRyeSosIEpTT2JqZWN0KiB0aGlzT2JqZWN0LCBjb25zdCBJZGVudGlmaWVyJiBwcm9w
ZXJ0eU5hbWUsIFByb3BlcnR5U2xvdCYpOworICAgIEpTX0VYUE9SVF9QUklWQVRFIGJvb2wgc2V0
VXBTdGF0aWNGdW5jdGlvblNsb3QoRXhlY1N0YXRlKiwgY29uc3QgSGFzaEVudHJ5KiwgSlNPYmpl
Y3QqIHRoaXNPYmplY3QsIFByb3BlcnR5TmFtZSwgUHJvcGVydHlTbG90Jik7CiAKICAgICAvKioK
ICAgICAgKiBUaGlzIG1ldGhvZCBkb2VzIGl0IGFsbCAobG9va2luZyBpbiB0aGUgaGFzaHRhYmxl
LCBjaGVja2luZyBmb3IgZnVuY3Rpb24KQEAgLTIzMCw3ICsyMzAsNyBAQCBuYW1lc3BhY2UgSlND
IHsKICAgICAgKiB1bmtub3duIHByb3BlcnR5KS4KICAgICAgKi8KICAgICB0ZW1wbGF0ZSA8Y2xh
c3MgVGhpc0ltcCwgY2xhc3MgUGFyZW50SW1wPgotICAgIGlubGluZSBib29sIGdldFN0YXRpY1By
b3BlcnR5U2xvdChFeGVjU3RhdGUqIGV4ZWMsIGNvbnN0IEhhc2hUYWJsZSogdGFibGUsIFRoaXNJ
bXAqIHRoaXNPYmosIGNvbnN0IElkZW50aWZpZXImIHByb3BlcnR5TmFtZSwgUHJvcGVydHlTbG90
JiBzbG90KQorICAgIGlubGluZSBib29sIGdldFN0YXRpY1Byb3BlcnR5U2xvdChFeGVjU3RhdGUq
IGV4ZWMsIGNvbnN0IEhhc2hUYWJsZSogdGFibGUsIFRoaXNJbXAqIHRoaXNPYmosIFByb3BlcnR5
TmFtZSBwcm9wZXJ0eU5hbWUsIFByb3BlcnR5U2xvdCYgc2xvdCkKICAgICB7CiAgICAgICAgIGNv
bnN0IEhhc2hFbnRyeSogZW50cnkgPSB0YWJsZS0+ZW50cnkoZXhlYywgcHJvcGVydHlOYW1lKTsK
IApAQCAtMjQ1LDcgKzI0NSw3IEBAIG5hbWVzcGFjZSBKU0MgewogICAgIH0KIAogICAgIHRlbXBs
YXRlIDxjbGFzcyBUaGlzSW1wLCBjbGFzcyBQYXJlbnRJbXA+Ci0gICAgaW5saW5lIGJvb2wgZ2V0
U3RhdGljUHJvcGVydHlEZXNjcmlwdG9yKEV4ZWNTdGF0ZSogZXhlYywgY29uc3QgSGFzaFRhYmxl
KiB0YWJsZSwgVGhpc0ltcCogdGhpc09iaiwgY29uc3QgSWRlbnRpZmllciYgcHJvcGVydHlOYW1l
LCBQcm9wZXJ0eURlc2NyaXB0b3ImIGRlc2NyaXB0b3IpCisgICAgaW5saW5lIGJvb2wgZ2V0U3Rh
dGljUHJvcGVydHlEZXNjcmlwdG9yKEV4ZWNTdGF0ZSogZXhlYywgY29uc3QgSGFzaFRhYmxlKiB0
YWJsZSwgVGhpc0ltcCogdGhpc09iaiwgUHJvcGVydHlOYW1lIHByb3BlcnR5TmFtZSwgUHJvcGVy
dHlEZXNjcmlwdG9yJiBkZXNjcmlwdG9yKQogICAgIHsKICAgICAgICAgY29uc3QgSGFzaEVudHJ5
KiBlbnRyeSA9IHRhYmxlLT5lbnRyeShleGVjLCBwcm9wZXJ0eU5hbWUpOwogICAgICAgICAKQEAg
LTI3MSw3ICsyNzEsNyBAQCBuYW1lc3BhY2UgSlNDIHsKICAgICAgKiBhIGR1bW15IGdldFZhbHVl
UHJvcGVydHkuCiAgICAgICovCiAgICAgdGVtcGxhdGUgPGNsYXNzIFBhcmVudEltcD4KLSAgICBp
bmxpbmUgYm9vbCBnZXRTdGF0aWNGdW5jdGlvblNsb3QoRXhlY1N0YXRlKiBleGVjLCBjb25zdCBI
YXNoVGFibGUqIHRhYmxlLCBKU09iamVjdCogdGhpc09iaiwgY29uc3QgSWRlbnRpZmllciYgcHJv
cGVydHlOYW1lLCBQcm9wZXJ0eVNsb3QmIHNsb3QpCisgICAgaW5saW5lIGJvb2wgZ2V0U3RhdGlj
RnVuY3Rpb25TbG90KEV4ZWNTdGF0ZSogZXhlYywgY29uc3QgSGFzaFRhYmxlKiB0YWJsZSwgSlNP
YmplY3QqIHRoaXNPYmosIFByb3BlcnR5TmFtZSBwcm9wZXJ0eU5hbWUsIFByb3BlcnR5U2xvdCYg
c2xvdCkKICAgICB7CiAgICAgICAgIGlmIChQYXJlbnRJbXA6OmdldE93blByb3BlcnR5U2xvdCh0
aGlzT2JqLCBleGVjLCBwcm9wZXJ0eU5hbWUsIHNsb3QpKQogICAgICAgICAgICAgcmV0dXJuIHRy
dWU7CkBAIC0yODksNyArMjg5LDcgQEAgbmFtZXNwYWNlIEpTQyB7CiAgICAgICogYSBkdW1teSBn
ZXRWYWx1ZVByb3BlcnR5LgogICAgICAqLwogICAgIHRlbXBsYXRlIDxjbGFzcyBQYXJlbnRJbXA+
Ci0gICAgaW5saW5lIGJvb2wgZ2V0U3RhdGljRnVuY3Rpb25EZXNjcmlwdG9yKEV4ZWNTdGF0ZSog
ZXhlYywgY29uc3QgSGFzaFRhYmxlKiB0YWJsZSwgSlNPYmplY3QqIHRoaXNPYmosIGNvbnN0IElk
ZW50aWZpZXImIHByb3BlcnR5TmFtZSwgUHJvcGVydHlEZXNjcmlwdG9yJiBkZXNjcmlwdG9yKQor
ICAgIGlubGluZSBib29sIGdldFN0YXRpY0Z1bmN0aW9uRGVzY3JpcHRvcihFeGVjU3RhdGUqIGV4
ZWMsIGNvbnN0IEhhc2hUYWJsZSogdGFibGUsIEpTT2JqZWN0KiB0aGlzT2JqLCBQcm9wZXJ0eU5h
bWUgcHJvcGVydHlOYW1lLCBQcm9wZXJ0eURlc2NyaXB0b3ImIGRlc2NyaXB0b3IpCiAgICAgewog
ICAgICAgICBpZiAoUGFyZW50SW1wOjpnZXRPd25Qcm9wZXJ0eURlc2NyaXB0b3Ioc3RhdGljX2Nh
c3Q8UGFyZW50SW1wKj4odGhpc09iaiksIGV4ZWMsIHByb3BlcnR5TmFtZSwgZGVzY3JpcHRvcikp
CiAgICAgICAgICAgICByZXR1cm4gdHJ1ZTsKQEAgLTMxMCw3ICszMTAsNyBAQCBuYW1lc3BhY2Ug
SlNDIHsKICAgICAgKiBVc2luZyB0aGlzIGluc3RlYWQgb2YgZ2V0U3RhdGljUHJvcGVydHlTbG90
IHJlbW92ZXMgdGhlIG5lZWQgZm9yIGEgRnVuY0ltcCBjbGFzcy4KICAgICAgKi8KICAgICB0ZW1w
bGF0ZSA8Y2xhc3MgVGhpc0ltcCwgY2xhc3MgUGFyZW50SW1wPgotICAgIGlubGluZSBib29sIGdl
dFN0YXRpY1ZhbHVlU2xvdChFeGVjU3RhdGUqIGV4ZWMsIGNvbnN0IEhhc2hUYWJsZSogdGFibGUs
IFRoaXNJbXAqIHRoaXNPYmosIGNvbnN0IElkZW50aWZpZXImIHByb3BlcnR5TmFtZSwgUHJvcGVy
dHlTbG90JiBzbG90KQorICAgIGlubGluZSBib29sIGdldFN0YXRpY1ZhbHVlU2xvdChFeGVjU3Rh
dGUqIGV4ZWMsIGNvbnN0IEhhc2hUYWJsZSogdGFibGUsIFRoaXNJbXAqIHRoaXNPYmosIFByb3Bl
cnR5TmFtZSBwcm9wZXJ0eU5hbWUsIFByb3BlcnR5U2xvdCYgc2xvdCkKICAgICB7CiAgICAgICAg
IGNvbnN0IEhhc2hFbnRyeSogZW50cnkgPSB0YWJsZS0+ZW50cnkoZXhlYywgcHJvcGVydHlOYW1l
KTsKIApAQCAtMzI4LDcgKzMyOCw3IEBAIG5hbWVzcGFjZSBKU0MgewogICAgICAqIFVzaW5nIHRo
aXMgaW5zdGVhZCBvZiBnZXRTdGF0aWNQcm9wZXJ0eURlc2NyaXB0b3IgcmVtb3ZlcyB0aGUgbmVl
ZCBmb3IgYSBGdW5jSW1wIGNsYXNzLgogICAgICAqLwogICAgIHRlbXBsYXRlIDxjbGFzcyBUaGlz
SW1wLCBjbGFzcyBQYXJlbnRJbXA+Ci0gICAgaW5saW5lIGJvb2wgZ2V0U3RhdGljVmFsdWVEZXNj
cmlwdG9yKEV4ZWNTdGF0ZSogZXhlYywgY29uc3QgSGFzaFRhYmxlKiB0YWJsZSwgVGhpc0ltcCog
dGhpc09iaiwgY29uc3QgSWRlbnRpZmllciYgcHJvcGVydHlOYW1lLCBQcm9wZXJ0eURlc2NyaXB0
b3ImIGRlc2NyaXB0b3IpCisgICAgaW5saW5lIGJvb2wgZ2V0U3RhdGljVmFsdWVEZXNjcmlwdG9y
KEV4ZWNTdGF0ZSogZXhlYywgY29uc3QgSGFzaFRhYmxlKiB0YWJsZSwgVGhpc0ltcCogdGhpc09i
aiwgUHJvcGVydHlOYW1lIHByb3BlcnR5TmFtZSwgUHJvcGVydHlEZXNjcmlwdG9yJiBkZXNjcmlw
dG9yKQogICAgIHsKICAgICAgICAgY29uc3QgSGFzaEVudHJ5KiBlbnRyeSA9IHRhYmxlLT5lbnRy
eShleGVjLCBwcm9wZXJ0eU5hbWUpOwogICAgICAgICAKQEAgLTM0OCw3ICszNDgsNyBAQCBuYW1l
c3BhY2UgSlNDIHsKICAgICAgKiBpcyBmb3VuZCBpdCBzZXRzIHRoZSB2YWx1ZSBhbmQgcmV0dXJu
cyB0cnVlLCBlbHNlIGl0IHJldHVybnMgZmFsc2UuCiAgICAgICovCiAgICAgdGVtcGxhdGUgPGNs
YXNzIFRoaXNJbXA+Ci0gICAgaW5saW5lIGJvb2wgbG9va3VwUHV0KEV4ZWNTdGF0ZSogZXhlYywg
Y29uc3QgSWRlbnRpZmllciYgcHJvcGVydHlOYW1lLCBKU1ZhbHVlIHZhbHVlLCBjb25zdCBIYXNo
VGFibGUqIHRhYmxlLCBUaGlzSW1wKiB0aGlzT2JqLCBib29sIHNob3VsZFRocm93ID0gZmFsc2Up
CisgICAgaW5saW5lIGJvb2wgbG9va3VwUHV0KEV4ZWNTdGF0ZSogZXhlYywgUHJvcGVydHlOYW1l
IHByb3BlcnR5TmFtZSwgSlNWYWx1ZSB2YWx1ZSwgY29uc3QgSGFzaFRhYmxlKiB0YWJsZSwgVGhp
c0ltcCogdGhpc09iaiwgYm9vbCBzaG91bGRUaHJvdyA9IGZhbHNlKQogICAgIHsKICAgICAgICAg
Y29uc3QgSGFzaEVudHJ5KiBlbnRyeSA9IHRhYmxlLT5lbnRyeShleGVjLCBwcm9wZXJ0eU5hbWUp
OwogICAgICAgICAKQEAgLTM3Myw3ICszNzMsNyBAQCBuYW1lc3BhY2UgSlNDIHsKICAgICAgKiB0
aGVuIGl0IGNhbGxzIHB1dCgpIG9uIHRoZSBQYXJlbnRJbXAgY2xhc3MuCiAgICAgICovCiAgICAg
dGVtcGxhdGUgPGNsYXNzIFRoaXNJbXAsIGNsYXNzIFBhcmVudEltcD4KLSAgICBpbmxpbmUgdm9p
ZCBsb29rdXBQdXQoRXhlY1N0YXRlKiBleGVjLCBjb25zdCBJZGVudGlmaWVyJiBwcm9wZXJ0eU5h
bWUsIEpTVmFsdWUgdmFsdWUsIGNvbnN0IEhhc2hUYWJsZSogdGFibGUsIFRoaXNJbXAqIHRoaXNP
YmosIFB1dFByb3BlcnR5U2xvdCYgc2xvdCkKKyAgICBpbmxpbmUgdm9pZCBsb29rdXBQdXQoRXhl
Y1N0YXRlKiBleGVjLCBQcm9wZXJ0eU5hbWUgcHJvcGVydHlOYW1lLCBKU1ZhbHVlIHZhbHVlLCBj
b25zdCBIYXNoVGFibGUqIHRhYmxlLCBUaGlzSW1wKiB0aGlzT2JqLCBQdXRQcm9wZXJ0eVNsb3Qm
IHNsb3QpCiAgICAgewogICAgICAgICBpZiAoIWxvb2t1cFB1dDxUaGlzSW1wPihleGVjLCBwcm9w
ZXJ0eU5hbWUsIHZhbHVlLCB0YWJsZSwgdGhpc09iaiwgc2xvdC5pc1N0cmljdE1vZGUoKSkpCiAg
ICAgICAgICAgICBQYXJlbnRJbXA6OnB1dCh0aGlzT2JqLCBleGVjLCBwcm9wZXJ0eU5hbWUsIHZh
bHVlLCBzbG90KTsgLy8gbm90IGZvdW5kOiBmb3J3YXJkIHRvIHBhcmVudApJbmRleDogU291cmNl
L0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvTWF0aE9iamVjdC5jcHAKPT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291
cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvTWF0aE9iamVjdC5jcHAJKHJldmlzaW9uIDExNjY2
NykKKysrIFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL01hdGhPYmplY3QuY3BwCSh3b3Jr
aW5nIGNvcHkpCkBAIC0xMDYsMTIgKzEwNiwxMiBAQCB2b2lkIE1hdGhPYmplY3Q6OmZpbmlzaENy
ZWF0aW9uKEV4ZWNTdGF0CiAgICAgcHV0RGlyZWN0V2l0aG91dFRyYW5zaXRpb24oZXhlYy0+Z2xv
YmFsRGF0YSgpLCBJZGVudGlmaWVyKGV4ZWMsICJTUVJUMiIpLCBqc051bWJlcihzcXJ0KDIuMCkp
LCBEb250RGVsZXRlIHwgRG9udEVudW0gfCBSZWFkT25seSk7CiB9CiAKLWJvb2wgTWF0aE9iamVj
dDo6Z2V0T3duUHJvcGVydHlTbG90KEpTQ2VsbCogY2VsbCwgRXhlY1N0YXRlKiBleGVjLCBjb25z
dCBJZGVudGlmaWVyJiBwcm9wZXJ0eU5hbWUsIFByb3BlcnR5U2xvdCAmc2xvdCkKK2Jvb2wgTWF0
aE9iamVjdDo6Z2V0T3duUHJvcGVydHlTbG90KEpTQ2VsbCogY2VsbCwgRXhlY1N0YXRlKiBleGVj
LCBQcm9wZXJ0eU5hbWUgcHJvcGVydHlOYW1lLCBQcm9wZXJ0eVNsb3QgJnNsb3QpCiB7CiAgICAg
cmV0dXJuIGdldFN0YXRpY0Z1bmN0aW9uU2xvdDxKU09iamVjdD4oZXhlYywgRXhlY1N0YXRlOjpt
YXRoVGFibGUoZXhlYyksIGpzQ2FzdDxNYXRoT2JqZWN0Kj4oY2VsbCksIHByb3BlcnR5TmFtZSwg
c2xvdCk7CiB9CiAKLWJvb2wgTWF0aE9iamVjdDo6Z2V0T3duUHJvcGVydHlEZXNjcmlwdG9yKEpT
T2JqZWN0KiBvYmplY3QsIEV4ZWNTdGF0ZSogZXhlYywgY29uc3QgSWRlbnRpZmllciYgcHJvcGVy
dHlOYW1lLCBQcm9wZXJ0eURlc2NyaXB0b3ImIGRlc2NyaXB0b3IpCitib29sIE1hdGhPYmplY3Q6
OmdldE93blByb3BlcnR5RGVzY3JpcHRvcihKU09iamVjdCogb2JqZWN0LCBFeGVjU3RhdGUqIGV4
ZWMsIFByb3BlcnR5TmFtZSBwcm9wZXJ0eU5hbWUsIFByb3BlcnR5RGVzY3JpcHRvciYgZGVzY3Jp
cHRvcikKIHsKICAgICByZXR1cm4gZ2V0U3RhdGljRnVuY3Rpb25EZXNjcmlwdG9yPEpTT2JqZWN0
PihleGVjLCBFeGVjU3RhdGU6Om1hdGhUYWJsZShleGVjKSwganNDYXN0PE1hdGhPYmplY3QqPihv
YmplY3QpLCBwcm9wZXJ0eU5hbWUsIGRlc2NyaXB0b3IpOwogfQpJbmRleDogU291cmNlL0phdmFT
Y3JpcHRDb3JlL3J1bnRpbWUvTWF0aE9iamVjdC5oCj09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9KYXZh
U2NyaXB0Q29yZS9ydW50aW1lL01hdGhPYmplY3QuaAkocmV2aXNpb24gMTE2NjY3KQorKysgU291
cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvTWF0aE9iamVjdC5oCSh3b3JraW5nIGNvcHkpCkBA
IC0zOCw4ICszOCw4IEBAIG5hbWVzcGFjZSBKU0MgewogICAgICAgICAgICAgb2JqZWN0LT5maW5p
c2hDcmVhdGlvbihleGVjLCBnbG9iYWxPYmplY3QpOwogICAgICAgICAgICAgcmV0dXJuIG9iamVj
dDsKICAgICAgICAgfQotICAgICAgICBzdGF0aWMgYm9vbCBnZXRPd25Qcm9wZXJ0eVNsb3QoSlND
ZWxsKiwgRXhlY1N0YXRlKiwgY29uc3QgSWRlbnRpZmllciYsIFByb3BlcnR5U2xvdCYpOwotICAg
ICAgICBzdGF0aWMgYm9vbCBnZXRPd25Qcm9wZXJ0eURlc2NyaXB0b3IoSlNPYmplY3QqLCBFeGVj
U3RhdGUqLCBjb25zdCBJZGVudGlmaWVyJiwgUHJvcGVydHlEZXNjcmlwdG9yJik7CisgICAgICAg
IHN0YXRpYyBib29sIGdldE93blByb3BlcnR5U2xvdChKU0NlbGwqLCBFeGVjU3RhdGUqLCBQcm9w
ZXJ0eU5hbWUsIFByb3BlcnR5U2xvdCYpOworICAgICAgICBzdGF0aWMgYm9vbCBnZXRPd25Qcm9w
ZXJ0eURlc2NyaXB0b3IoSlNPYmplY3QqLCBFeGVjU3RhdGUqLCBQcm9wZXJ0eU5hbWUsIFByb3Bl
cnR5RGVzY3JpcHRvciYpOwogCiAgICAgICAgIHN0YXRpYyBjb25zdCBDbGFzc0luZm8gc19pbmZv
OwogCkluZGV4OiBTb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9OYXRpdmVFcnJvckNvbnN0
cnVjdG9yLmgKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvTmF0
aXZlRXJyb3JDb25zdHJ1Y3Rvci5oCShyZXZpc2lvbiAxMTY2NjcpCisrKyBTb3VyY2UvSmF2YVNj
cmlwdENvcmUvcnVudGltZS9OYXRpdmVFcnJvckNvbnN0cnVjdG9yLmgJKHdvcmtpbmcgY29weSkK
QEAgLTUzLDcgKzUzLDcgQEAgbmFtZXNwYWNlIEpTQyB7CiAgICAgcHJvdGVjdGVkOgogICAgICAg
ICB2b2lkIGZpbmlzaENyZWF0aW9uKEV4ZWNTdGF0ZSogZXhlYywgSlNHbG9iYWxPYmplY3QqIGds
b2JhbE9iamVjdCwgU3RydWN0dXJlKiBwcm90b3R5cGVTdHJ1Y3R1cmUsIGNvbnN0IFVTdHJpbmcm
IG5hbWUpCiAgICAgICAgIHsKLSAgICAgICAgICAgIEJhc2U6OmZpbmlzaENyZWF0aW9uKGV4ZWMt
Pmdsb2JhbERhdGEoKSwgSWRlbnRpZmllcihleGVjLCBuYW1lKSk7CisgICAgICAgICAgICBCYXNl
OjpmaW5pc2hDcmVhdGlvbihleGVjLT5nbG9iYWxEYXRhKCksIG5hbWUpOwogICAgICAgICAgICAg
QVNTRVJUKGluaGVyaXRzKCZzX2luZm8pKTsKIAogICAgICAgICAgICAgTmF0aXZlRXJyb3JQcm90
b3R5cGUqIHByb3RvdHlwZSA9IE5hdGl2ZUVycm9yUHJvdG90eXBlOjpjcmVhdGUoZXhlYywgZ2xv
YmFsT2JqZWN0LCBwcm90b3R5cGVTdHJ1Y3R1cmUsIG5hbWUsIHRoaXMpOwpJbmRleDogU291cmNl
L0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvTnVtYmVyQ29uc3RydWN0b3IuY3BwCj09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0K
LS0tIFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL051bWJlckNvbnN0cnVjdG9yLmNwcAko
cmV2aXNpb24gMTE2NjY3KQorKysgU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvTnVtYmVy
Q29uc3RydWN0b3IuY3BwCSh3b3JraW5nIGNvcHkpCkBAIC0zMCwxMSArMzAsMTEgQEAgbmFtZXNw
YWNlIEpTQyB7CiAKIEFTU0VSVF9DTEFTU19GSVRTX0lOX0NFTEwoTnVtYmVyQ29uc3RydWN0b3Ip
OwogCi1zdGF0aWMgSlNWYWx1ZSBudW1iZXJDb25zdHJ1Y3Rvck5hTlZhbHVlKEV4ZWNTdGF0ZSos
IEpTVmFsdWUsIGNvbnN0IElkZW50aWZpZXImKTsKLXN0YXRpYyBKU1ZhbHVlIG51bWJlckNvbnN0
cnVjdG9yTmVnSW5maW5pdHkoRXhlY1N0YXRlKiwgSlNWYWx1ZSwgY29uc3QgSWRlbnRpZmllciYp
Owotc3RhdGljIEpTVmFsdWUgbnVtYmVyQ29uc3RydWN0b3JQb3NJbmZpbml0eShFeGVjU3RhdGUq
LCBKU1ZhbHVlLCBjb25zdCBJZGVudGlmaWVyJik7Ci1zdGF0aWMgSlNWYWx1ZSBudW1iZXJDb25z
dHJ1Y3Rvck1heFZhbHVlKEV4ZWNTdGF0ZSosIEpTVmFsdWUsIGNvbnN0IElkZW50aWZpZXImKTsK
LXN0YXRpYyBKU1ZhbHVlIG51bWJlckNvbnN0cnVjdG9yTWluVmFsdWUoRXhlY1N0YXRlKiwgSlNW
YWx1ZSwgY29uc3QgSWRlbnRpZmllciYpOworc3RhdGljIEpTVmFsdWUgbnVtYmVyQ29uc3RydWN0
b3JOYU5WYWx1ZShFeGVjU3RhdGUqLCBKU1ZhbHVlLCBQcm9wZXJ0eU5hbWUpOworc3RhdGljIEpT
VmFsdWUgbnVtYmVyQ29uc3RydWN0b3JOZWdJbmZpbml0eShFeGVjU3RhdGUqLCBKU1ZhbHVlLCBQ
cm9wZXJ0eU5hbWUpOworc3RhdGljIEpTVmFsdWUgbnVtYmVyQ29uc3RydWN0b3JQb3NJbmZpbml0
eShFeGVjU3RhdGUqLCBKU1ZhbHVlLCBQcm9wZXJ0eU5hbWUpOworc3RhdGljIEpTVmFsdWUgbnVt
YmVyQ29uc3RydWN0b3JNYXhWYWx1ZShFeGVjU3RhdGUqLCBKU1ZhbHVlLCBQcm9wZXJ0eU5hbWUp
Oworc3RhdGljIEpTVmFsdWUgbnVtYmVyQ29uc3RydWN0b3JNaW5WYWx1ZShFeGVjU3RhdGUqLCBK
U1ZhbHVlLCBQcm9wZXJ0eU5hbWUpOwogCiB9IC8vIG5hbWVzcGFjZSBKU0MKIApAQCAtNjMsNyAr
NjMsNyBAQCBOdW1iZXJDb25zdHJ1Y3Rvcjo6TnVtYmVyQ29uc3RydWN0b3IoSlNHCiAKIHZvaWQg
TnVtYmVyQ29uc3RydWN0b3I6OmZpbmlzaENyZWF0aW9uKEV4ZWNTdGF0ZSogZXhlYywgTnVtYmVy
UHJvdG90eXBlKiBudW1iZXJQcm90b3R5cGUpCiB7Ci0gICAgQmFzZTo6ZmluaXNoQ3JlYXRpb24o
ZXhlYy0+Z2xvYmFsRGF0YSgpLCBJZGVudGlmaWVyKGV4ZWMsIG51bWJlclByb3RvdHlwZS0+c19p
bmZvLmNsYXNzTmFtZSkpOworICAgIEJhc2U6OmZpbmlzaENyZWF0aW9uKGV4ZWMtPmdsb2JhbERh
dGEoKSwgbnVtYmVyUHJvdG90eXBlLT5zX2luZm8uY2xhc3NOYW1lKTsKICAgICBBU1NFUlQoaW5o
ZXJpdHMoJnNfaW5mbykpOwogCiAgICAgLy8gTnVtYmVyLlByb3RvdHlwZQpAQCAtNzMsNDIgKzcz
LDQyIEBAIHZvaWQgTnVtYmVyQ29uc3RydWN0b3I6OmZpbmlzaENyZWF0aW9uKEUKICAgICBwdXRE
aXJlY3RXaXRob3V0VHJhbnNpdGlvbihleGVjLT5nbG9iYWxEYXRhKCksIGV4ZWMtPnByb3BlcnR5
TmFtZXMoKS5sZW5ndGgsIGpzTnVtYmVyKDEpLCBSZWFkT25seSB8IERvbnRFbnVtIHwgRG9udERl
bGV0ZSk7CiB9CiAKLWJvb2wgTnVtYmVyQ29uc3RydWN0b3I6OmdldE93blByb3BlcnR5U2xvdChK
U0NlbGwqIGNlbGwsIEV4ZWNTdGF0ZSogZXhlYywgY29uc3QgSWRlbnRpZmllciYgcHJvcGVydHlO
YW1lLCBQcm9wZXJ0eVNsb3QmIHNsb3QpCitib29sIE51bWJlckNvbnN0cnVjdG9yOjpnZXRPd25Q
cm9wZXJ0eVNsb3QoSlNDZWxsKiBjZWxsLCBFeGVjU3RhdGUqIGV4ZWMsIFByb3BlcnR5TmFtZSBw
cm9wZXJ0eU5hbWUsIFByb3BlcnR5U2xvdCYgc2xvdCkKIHsKICAgICByZXR1cm4gZ2V0U3RhdGlj
VmFsdWVTbG90PE51bWJlckNvbnN0cnVjdG9yLCBJbnRlcm5hbEZ1bmN0aW9uPihleGVjLCBFeGVj
U3RhdGU6Om51bWJlckNvbnN0cnVjdG9yVGFibGUoZXhlYyksIGpzQ2FzdDxOdW1iZXJDb25zdHJ1
Y3Rvcio+KGNlbGwpLCBwcm9wZXJ0eU5hbWUsIHNsb3QpOwogfQogCi1ib29sIE51bWJlckNvbnN0
cnVjdG9yOjpnZXRPd25Qcm9wZXJ0eURlc2NyaXB0b3IoSlNPYmplY3QqIG9iamVjdCwgRXhlY1N0
YXRlKiBleGVjLCBjb25zdCBJZGVudGlmaWVyJiBwcm9wZXJ0eU5hbWUsIFByb3BlcnR5RGVzY3Jp
cHRvciYgZGVzY3JpcHRvcikKK2Jvb2wgTnVtYmVyQ29uc3RydWN0b3I6OmdldE93blByb3BlcnR5
RGVzY3JpcHRvcihKU09iamVjdCogb2JqZWN0LCBFeGVjU3RhdGUqIGV4ZWMsIFByb3BlcnR5TmFt
ZSBwcm9wZXJ0eU5hbWUsIFByb3BlcnR5RGVzY3JpcHRvciYgZGVzY3JpcHRvcikKIHsKICAgICBy
ZXR1cm4gZ2V0U3RhdGljVmFsdWVEZXNjcmlwdG9yPE51bWJlckNvbnN0cnVjdG9yLCBJbnRlcm5h
bEZ1bmN0aW9uPihleGVjLCBFeGVjU3RhdGU6Om51bWJlckNvbnN0cnVjdG9yVGFibGUoZXhlYyks
IGpzQ2FzdDxOdW1iZXJDb25zdHJ1Y3Rvcio+KG9iamVjdCksIHByb3BlcnR5TmFtZSwgZGVzY3Jp
cHRvcik7CiB9CiAKLXZvaWQgTnVtYmVyQ29uc3RydWN0b3I6OnB1dChKU0NlbGwqIGNlbGwsIEV4
ZWNTdGF0ZSogZXhlYywgY29uc3QgSWRlbnRpZmllciYgcHJvcGVydHlOYW1lLCBKU1ZhbHVlIHZh
bHVlLCBQdXRQcm9wZXJ0eVNsb3QmIHNsb3QpCit2b2lkIE51bWJlckNvbnN0cnVjdG9yOjpwdXQo
SlNDZWxsKiBjZWxsLCBFeGVjU3RhdGUqIGV4ZWMsIFByb3BlcnR5TmFtZSBwcm9wZXJ0eU5hbWUs
IEpTVmFsdWUgdmFsdWUsIFB1dFByb3BlcnR5U2xvdCYgc2xvdCkKIHsKICAgICBsb29rdXBQdXQ8
TnVtYmVyQ29uc3RydWN0b3IsIEludGVybmFsRnVuY3Rpb24+KGV4ZWMsIHByb3BlcnR5TmFtZSwg
dmFsdWUsIEV4ZWNTdGF0ZTo6bnVtYmVyQ29uc3RydWN0b3JUYWJsZShleGVjKSwganNDYXN0PE51
bWJlckNvbnN0cnVjdG9yKj4oY2VsbCksIHNsb3QpOwogfQogCi1zdGF0aWMgSlNWYWx1ZSBudW1i
ZXJDb25zdHJ1Y3Rvck5hTlZhbHVlKEV4ZWNTdGF0ZSosIEpTVmFsdWUsIGNvbnN0IElkZW50aWZp
ZXImKQorc3RhdGljIEpTVmFsdWUgbnVtYmVyQ29uc3RydWN0b3JOYU5WYWx1ZShFeGVjU3RhdGUq
LCBKU1ZhbHVlLCBQcm9wZXJ0eU5hbWUpCiB7CiAgICAgcmV0dXJuIGpzTmFOKCk7CiB9CiAKLXN0
YXRpYyBKU1ZhbHVlIG51bWJlckNvbnN0cnVjdG9yTmVnSW5maW5pdHkoRXhlY1N0YXRlKiwgSlNW
YWx1ZSwgY29uc3QgSWRlbnRpZmllciYpCitzdGF0aWMgSlNWYWx1ZSBudW1iZXJDb25zdHJ1Y3Rv
ck5lZ0luZmluaXR5KEV4ZWNTdGF0ZSosIEpTVmFsdWUsIFByb3BlcnR5TmFtZSkKIHsKICAgICBy
ZXR1cm4ganNOdW1iZXIoLXN0ZDo6bnVtZXJpY19saW1pdHM8ZG91YmxlPjo6aW5maW5pdHkoKSk7
CiB9CiAKLXN0YXRpYyBKU1ZhbHVlIG51bWJlckNvbnN0cnVjdG9yUG9zSW5maW5pdHkoRXhlY1N0
YXRlKiwgSlNWYWx1ZSwgY29uc3QgSWRlbnRpZmllciYpCitzdGF0aWMgSlNWYWx1ZSBudW1iZXJD
b25zdHJ1Y3RvclBvc0luZmluaXR5KEV4ZWNTdGF0ZSosIEpTVmFsdWUsIFByb3BlcnR5TmFtZSkK
IHsKICAgICByZXR1cm4ganNOdW1iZXIoc3RkOjpudW1lcmljX2xpbWl0czxkb3VibGU+OjppbmZp
bml0eSgpKTsKIH0KIAotc3RhdGljIEpTVmFsdWUgbnVtYmVyQ29uc3RydWN0b3JNYXhWYWx1ZShF
eGVjU3RhdGUqLCBKU1ZhbHVlLCBjb25zdCBJZGVudGlmaWVyJikKK3N0YXRpYyBKU1ZhbHVlIG51
bWJlckNvbnN0cnVjdG9yTWF4VmFsdWUoRXhlY1N0YXRlKiwgSlNWYWx1ZSwgUHJvcGVydHlOYW1l
KQogewogICAgIHJldHVybiBqc051bWJlcigxLjc5NzY5MzEzNDg2MjMxNTdFKzMwOCk7CiB9CiAK
LXN0YXRpYyBKU1ZhbHVlIG51bWJlckNvbnN0cnVjdG9yTWluVmFsdWUoRXhlY1N0YXRlKiwgSlNW
YWx1ZSwgY29uc3QgSWRlbnRpZmllciYpCitzdGF0aWMgSlNWYWx1ZSBudW1iZXJDb25zdHJ1Y3Rv
ck1pblZhbHVlKEV4ZWNTdGF0ZSosIEpTVmFsdWUsIFByb3BlcnR5TmFtZSkKIHsKICAgICByZXR1
cm4ganNOdW1iZXIoNUUtMzI0KTsKIH0KSW5kZXg6IFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50
aW1lL051bWJlckNvbnN0cnVjdG9yLmgKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL0phdmFTY3JpcHRD
b3JlL3J1bnRpbWUvTnVtYmVyQ29uc3RydWN0b3IuaAkocmV2aXNpb24gMTE2NjY3KQorKysgU291
cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvTnVtYmVyQ29uc3RydWN0b3IuaAkod29ya2luZyBj
b3B5KQpAQCAtMzgsMTAgKzM4LDEwIEBAIG5hbWVzcGFjZSBKU0MgewogICAgICAgICAgICAgcmV0
dXJuIGNvbnN0cnVjdG9yOwogICAgICAgICB9CiAKLSAgICAgICAgc3RhdGljIHZvaWQgcHV0KEpT
Q2VsbCosIEV4ZWNTdGF0ZSosIGNvbnN0IElkZW50aWZpZXImIHByb3BlcnR5TmFtZSwgSlNWYWx1
ZSwgUHV0UHJvcGVydHlTbG90Jik7CisgICAgICAgIHN0YXRpYyB2b2lkIHB1dChKU0NlbGwqLCBF
eGVjU3RhdGUqLCBQcm9wZXJ0eU5hbWUsIEpTVmFsdWUsIFB1dFByb3BlcnR5U2xvdCYpOwogCi0g
ICAgICAgIHN0YXRpYyBib29sIGdldE93blByb3BlcnR5U2xvdChKU0NlbGwqLCBFeGVjU3RhdGUq
LCBjb25zdCBJZGVudGlmaWVyJiwgUHJvcGVydHlTbG90Jik7Ci0gICAgICAgIHN0YXRpYyBib29s
IGdldE93blByb3BlcnR5RGVzY3JpcHRvcihKU09iamVjdCosIEV4ZWNTdGF0ZSosIGNvbnN0IElk
ZW50aWZpZXImLCBQcm9wZXJ0eURlc2NyaXB0b3ImKTsKKyAgICAgICAgc3RhdGljIGJvb2wgZ2V0
T3duUHJvcGVydHlTbG90KEpTQ2VsbCosIEV4ZWNTdGF0ZSosIFByb3BlcnR5TmFtZSwgUHJvcGVy
dHlTbG90Jik7CisgICAgICAgIHN0YXRpYyBib29sIGdldE93blByb3BlcnR5RGVzY3JpcHRvcihK
U09iamVjdCosIEV4ZWNTdGF0ZSosIFByb3BlcnR5TmFtZSwgUHJvcGVydHlEZXNjcmlwdG9yJik7
CiAgICAgICAgIEpTVmFsdWUgZ2V0VmFsdWVQcm9wZXJ0eShFeGVjU3RhdGUqLCBpbnQgdG9rZW4p
IGNvbnN0OwogCiAgICAgICAgIHN0YXRpYyBjb25zdCBDbGFzc0luZm8gc19pbmZvOwpJbmRleDog
U291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvTnVtYmVyUHJvdG90eXBlLmNwcAo9PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09Ci0tLSBTb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9OdW1iZXJQcm90b3R5cGUuY3Bw
CShyZXZpc2lvbiAxMTY2NjcpCisrKyBTb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9OdW1i
ZXJQcm90b3R5cGUuY3BwCSh3b3JraW5nIGNvcHkpCkBAIC04NCwxMiArODQsMTIgQEAgdm9pZCBO
dW1iZXJQcm90b3R5cGU6OmZpbmlzaENyZWF0aW9uKEV4ZQogICAgIEFTU0VSVChpbmhlcml0cygm
c19pbmZvKSk7CiB9CiAKLWJvb2wgTnVtYmVyUHJvdG90eXBlOjpnZXRPd25Qcm9wZXJ0eVNsb3Qo
SlNDZWxsKiBjZWxsLCBFeGVjU3RhdGUqIGV4ZWMsIGNvbnN0IElkZW50aWZpZXImIHByb3BlcnR5
TmFtZSwgUHJvcGVydHlTbG90ICZzbG90KQorYm9vbCBOdW1iZXJQcm90b3R5cGU6OmdldE93blBy
b3BlcnR5U2xvdChKU0NlbGwqIGNlbGwsIEV4ZWNTdGF0ZSogZXhlYywgUHJvcGVydHlOYW1lIHBy
b3BlcnR5TmFtZSwgUHJvcGVydHlTbG90ICZzbG90KQogewogICAgIHJldHVybiBnZXRTdGF0aWNG
dW5jdGlvblNsb3Q8TnVtYmVyT2JqZWN0PihleGVjLCBFeGVjU3RhdGU6Om51bWJlclByb3RvdHlw
ZVRhYmxlKGV4ZWMpLCBqc0Nhc3Q8TnVtYmVyUHJvdG90eXBlKj4oY2VsbCksIHByb3BlcnR5TmFt
ZSwgc2xvdCk7CiB9CiAKLWJvb2wgTnVtYmVyUHJvdG90eXBlOjpnZXRPd25Qcm9wZXJ0eURlc2Ny
aXB0b3IoSlNPYmplY3QqIG9iamVjdCwgRXhlY1N0YXRlKiBleGVjLCBjb25zdCBJZGVudGlmaWVy
JiBwcm9wZXJ0eU5hbWUsIFByb3BlcnR5RGVzY3JpcHRvciYgZGVzY3JpcHRvcikKK2Jvb2wgTnVt
YmVyUHJvdG90eXBlOjpnZXRPd25Qcm9wZXJ0eURlc2NyaXB0b3IoSlNPYmplY3QqIG9iamVjdCwg
RXhlY1N0YXRlKiBleGVjLCBQcm9wZXJ0eU5hbWUgcHJvcGVydHlOYW1lLCBQcm9wZXJ0eURlc2Ny
aXB0b3ImIGRlc2NyaXB0b3IpCiB7CiAgICAgcmV0dXJuIGdldFN0YXRpY0Z1bmN0aW9uRGVzY3Jp
cHRvcjxOdW1iZXJPYmplY3Q+KGV4ZWMsIEV4ZWNTdGF0ZTo6bnVtYmVyUHJvdG90eXBlVGFibGUo
ZXhlYyksIGpzQ2FzdDxOdW1iZXJQcm90b3R5cGUqPihvYmplY3QpLCBwcm9wZXJ0eU5hbWUsIGRl
c2NyaXB0b3IpOwogfQpJbmRleDogU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvTnVtYmVy
UHJvdG90eXBlLmgKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUv
TnVtYmVyUHJvdG90eXBlLmgJKHJldmlzaW9uIDExNjY2NykKKysrIFNvdXJjZS9KYXZhU2NyaXB0
Q29yZS9ydW50aW1lL051bWJlclByb3RvdHlwZS5oCSh3b3JraW5nIGNvcHkpCkBAIC00OSw4ICs0
OSw4IEBAIG5hbWVzcGFjZSBKU0MgewogCiAgICAgcHJpdmF0ZToKICAgICAgICAgTnVtYmVyUHJv
dG90eXBlKEV4ZWNTdGF0ZSosIFN0cnVjdHVyZSopOwotICAgICAgICBzdGF0aWMgYm9vbCBnZXRP
d25Qcm9wZXJ0eVNsb3QoSlNDZWxsKiwgRXhlY1N0YXRlKiwgY29uc3QgSWRlbnRpZmllciYsIFBy
b3BlcnR5U2xvdCYpOwotICAgICAgICBzdGF0aWMgYm9vbCBnZXRPd25Qcm9wZXJ0eURlc2NyaXB0
b3IoSlNPYmplY3QqLCBFeGVjU3RhdGUqLCBjb25zdCBJZGVudGlmaWVyJiwgUHJvcGVydHlEZXNj
cmlwdG9yJik7CisgICAgICAgIHN0YXRpYyBib29sIGdldE93blByb3BlcnR5U2xvdChKU0NlbGwq
LCBFeGVjU3RhdGUqLCBQcm9wZXJ0eU5hbWUsIFByb3BlcnR5U2xvdCYpOworICAgICAgICBzdGF0
aWMgYm9vbCBnZXRPd25Qcm9wZXJ0eURlc2NyaXB0b3IoSlNPYmplY3QqLCBFeGVjU3RhdGUqLCBQ
cm9wZXJ0eU5hbWUsIFByb3BlcnR5RGVzY3JpcHRvciYpOwogICAgIH07CiAKIH0gLy8gbmFtZXNw
YWNlIEpTQwpJbmRleDogU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvT2JqZWN0Q29uc3Ry
dWN0b3IuY3BwCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL09i
amVjdENvbnN0cnVjdG9yLmNwcAkocmV2aXNpb24gMTE2NjY3KQorKysgU291cmNlL0phdmFTY3Jp
cHRDb3JlL3J1bnRpbWUvT2JqZWN0Q29uc3RydWN0b3IuY3BwCSh3b3JraW5nIGNvcHkpCkBAIC04
NCwxOSArODQsMTkgQEAgT2JqZWN0Q29uc3RydWN0b3I6Ok9iamVjdENvbnN0cnVjdG9yKEpTRwog
CiB2b2lkIE9iamVjdENvbnN0cnVjdG9yOjpmaW5pc2hDcmVhdGlvbihFeGVjU3RhdGUqIGV4ZWMs
IE9iamVjdFByb3RvdHlwZSogb2JqZWN0UHJvdG90eXBlKQogewotICAgIEJhc2U6OmZpbmlzaENy
ZWF0aW9uKGV4ZWMtPmdsb2JhbERhdGEoKSwgSWRlbnRpZmllcihleGVjLCAiT2JqZWN0IikpOwor
ICAgIEJhc2U6OmZpbmlzaENyZWF0aW9uKGV4ZWMtPmdsb2JhbERhdGEoKSwgSWRlbnRpZmllcihl
eGVjLCAiT2JqZWN0IikudXN0cmluZygpKTsKICAgICAvLyBFQ01BIDE1LjIuMy4xCiAgICAgcHV0
RGlyZWN0V2l0aG91dFRyYW5zaXRpb24oZXhlYy0+Z2xvYmFsRGF0YSgpLCBleGVjLT5wcm9wZXJ0
eU5hbWVzKCkucHJvdG90eXBlLCBvYmplY3RQcm90b3R5cGUsIERvbnRFbnVtIHwgRG9udERlbGV0
ZSB8IFJlYWRPbmx5KTsKICAgICAvLyBuby4gb2YgYXJndW1lbnRzIGZvciBjb25zdHJ1Y3Rvcgog
ICAgIHB1dERpcmVjdFdpdGhvdXRUcmFuc2l0aW9uKGV4ZWMtPmdsb2JhbERhdGEoKSwgZXhlYy0+
cHJvcGVydHlOYW1lcygpLmxlbmd0aCwganNOdW1iZXIoMSksIFJlYWRPbmx5IHwgRG9udEVudW0g
fCBEb250RGVsZXRlKTsKIH0KIAotYm9vbCBPYmplY3RDb25zdHJ1Y3Rvcjo6Z2V0T3duUHJvcGVy
dHlTbG90KEpTQ2VsbCogY2VsbCwgRXhlY1N0YXRlKiBleGVjLCBjb25zdCBJZGVudGlmaWVyJiBw
cm9wZXJ0eU5hbWUsIFByb3BlcnR5U2xvdCAmc2xvdCkKK2Jvb2wgT2JqZWN0Q29uc3RydWN0b3I6
OmdldE93blByb3BlcnR5U2xvdChKU0NlbGwqIGNlbGwsIEV4ZWNTdGF0ZSogZXhlYywgUHJvcGVy
dHlOYW1lIHByb3BlcnR5TmFtZSwgUHJvcGVydHlTbG90ICZzbG90KQogewogICAgIHJldHVybiBn
ZXRTdGF0aWNGdW5jdGlvblNsb3Q8SlNPYmplY3Q+KGV4ZWMsIEV4ZWNTdGF0ZTo6b2JqZWN0Q29u
c3RydWN0b3JUYWJsZShleGVjKSwganNDYXN0PE9iamVjdENvbnN0cnVjdG9yKj4oY2VsbCksIHBy
b3BlcnR5TmFtZSwgc2xvdCk7CiB9CiAKLWJvb2wgT2JqZWN0Q29uc3RydWN0b3I6OmdldE93blBy
b3BlcnR5RGVzY3JpcHRvcihKU09iamVjdCogb2JqZWN0LCBFeGVjU3RhdGUqIGV4ZWMsIGNvbnN0
IElkZW50aWZpZXImIHByb3BlcnR5TmFtZSwgUHJvcGVydHlEZXNjcmlwdG9yJiBkZXNjcmlwdG9y
KQorYm9vbCBPYmplY3RDb25zdHJ1Y3Rvcjo6Z2V0T3duUHJvcGVydHlEZXNjcmlwdG9yKEpTT2Jq
ZWN0KiBvYmplY3QsIEV4ZWNTdGF0ZSogZXhlYywgUHJvcGVydHlOYW1lIHByb3BlcnR5TmFtZSwg
UHJvcGVydHlEZXNjcmlwdG9yJiBkZXNjcmlwdG9yKQogewogICAgIHJldHVybiBnZXRTdGF0aWNG
dW5jdGlvbkRlc2NyaXB0b3I8SlNPYmplY3Q+KGV4ZWMsIEV4ZWNTdGF0ZTo6b2JqZWN0Q29uc3Ry
dWN0b3JUYWJsZShleGVjKSwganNDYXN0PE9iamVjdENvbnN0cnVjdG9yKj4ob2JqZWN0KSwgcHJv
cGVydHlOYW1lLCBkZXNjcmlwdG9yKTsKIH0KSW5kZXg6IFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9y
dW50aW1lL09iamVjdENvbnN0cnVjdG9yLmgKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL0phdmFTY3Jp
cHRDb3JlL3J1bnRpbWUvT2JqZWN0Q29uc3RydWN0b3IuaAkocmV2aXNpb24gMTE2NjY3KQorKysg
U291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvT2JqZWN0Q29uc3RydWN0b3IuaAkod29ya2lu
ZyBjb3B5KQpAQCAtMzgsOCArMzgsOCBAQCBuYW1lc3BhY2UgSlNDIHsKICAgICAgICAgICAgIHJl
dHVybiBjb25zdHJ1Y3RvcjsKICAgICAgICAgfQogCi0gICAgICAgIHN0YXRpYyBib29sIGdldE93
blByb3BlcnR5U2xvdChKU0NlbGwqLCBFeGVjU3RhdGUqLCBjb25zdCBJZGVudGlmaWVyJiwgUHJv
cGVydHlTbG90Jik7Ci0gICAgICAgIHN0YXRpYyBib29sIGdldE93blByb3BlcnR5RGVzY3JpcHRv
cihKU09iamVjdCosIEV4ZWNTdGF0ZSosIGNvbnN0IElkZW50aWZpZXImLCBQcm9wZXJ0eURlc2Ny
aXB0b3ImKTsKKyAgICAgICAgc3RhdGljIGJvb2wgZ2V0T3duUHJvcGVydHlTbG90KEpTQ2VsbCos
IEV4ZWNTdGF0ZSosIFByb3BlcnR5TmFtZSwgUHJvcGVydHlTbG90Jik7CisgICAgICAgIHN0YXRp
YyBib29sIGdldE93blByb3BlcnR5RGVzY3JpcHRvcihKU09iamVjdCosIEV4ZWNTdGF0ZSosIFBy
b3BlcnR5TmFtZSwgUHJvcGVydHlEZXNjcmlwdG9yJik7CiAKICAgICAgICAgc3RhdGljIGNvbnN0
IENsYXNzSW5mbyBzX2luZm87CiAKSW5kZXg6IFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1l
L09iamVjdFByb3RvdHlwZS5jcHAKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL0phdmFTY3JpcHRDb3Jl
L3J1bnRpbWUvT2JqZWN0UHJvdG90eXBlLmNwcAkocmV2aXNpb24gMTE2NjY3KQorKysgU291cmNl
L0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvT2JqZWN0UHJvdG90eXBlLmNwcAkod29ya2luZyBjb3B5
KQpAQCAtNzcsMjggKzc3LDIyIEBAIHZvaWQgT2JqZWN0UHJvdG90eXBlOjpmaW5pc2hDcmVhdGlv
bihKU0cKICAgICBBU1NFUlQoaW5oZXJpdHMoJnNfaW5mbykpOwogfQogCi12b2lkIE9iamVjdFBy
b3RvdHlwZTo6cHV0KEpTQ2VsbCogY2VsbCwgRXhlY1N0YXRlKiBleGVjLCBjb25zdCBJZGVudGlm
aWVyJiBwcm9wZXJ0eU5hbWUsIEpTVmFsdWUgdmFsdWUsIFB1dFByb3BlcnR5U2xvdCYgc2xvdCkK
K3ZvaWQgT2JqZWN0UHJvdG90eXBlOjpwdXQoSlNDZWxsKiBjZWxsLCBFeGVjU3RhdGUqIGV4ZWMs
IFByb3BlcnR5TmFtZSBwcm9wZXJ0eU5hbWUsIEpTVmFsdWUgdmFsdWUsIFB1dFByb3BlcnR5U2xv
dCYgc2xvdCkKIHsKICAgICBPYmplY3RQcm90b3R5cGUqIHRoaXNPYmplY3QgPSBqc0Nhc3Q8T2Jq
ZWN0UHJvdG90eXBlKj4oY2VsbCk7CiAgICAgQmFzZTo6cHV0KGNlbGwsIGV4ZWMsIHByb3BlcnR5
TmFtZSwgdmFsdWUsIHNsb3QpOwogCi0gICAgaWYgKHRoaXNPYmplY3QtPm1faGFzTm9Qcm9wZXJ0
aWVzV2l0aFVJbnQzMk5hbWVzKSB7Ci0gICAgICAgIGJvb2wgaXNVSW50MzI7Ci0gICAgICAgIHBy
b3BlcnR5TmFtZS50b1VJbnQzMihpc1VJbnQzMik7Ci0gICAgICAgIHRoaXNPYmplY3QtPm1faGFz
Tm9Qcm9wZXJ0aWVzV2l0aFVJbnQzMk5hbWVzID0gIWlzVUludDMyOwotICAgIH0KKyAgICBpZiAo
dGhpc09iamVjdC0+bV9oYXNOb1Byb3BlcnRpZXNXaXRoVUludDMyTmFtZXMgJiYgcHJvcGVydHlO
YW1lLmFzSW5kZXgoKSAhPSBQcm9wZXJ0eU5hbWU6Ok5vdEFuSW5kZXgpCisgICAgICAgIHRoaXNP
YmplY3QtPm1faGFzTm9Qcm9wZXJ0aWVzV2l0aFVJbnQzMk5hbWVzID0gZmFsc2U7CiB9CiAKLWJv
b2wgT2JqZWN0UHJvdG90eXBlOjpkZWZpbmVPd25Qcm9wZXJ0eShKU09iamVjdCogb2JqZWN0LCBF
eGVjU3RhdGUqIGV4ZWMsIGNvbnN0IElkZW50aWZpZXImIHByb3BlcnR5TmFtZSwgUHJvcGVydHlE
ZXNjcmlwdG9yJiBkZXNjcmlwdG9yLCBib29sIHNob3VsZFRocm93KQorYm9vbCBPYmplY3RQcm90
b3R5cGU6OmRlZmluZU93blByb3BlcnR5KEpTT2JqZWN0KiBvYmplY3QsIEV4ZWNTdGF0ZSogZXhl
YywgUHJvcGVydHlOYW1lIHByb3BlcnR5TmFtZSwgUHJvcGVydHlEZXNjcmlwdG9yJiBkZXNjcmlw
dG9yLCBib29sIHNob3VsZFRocm93KQogewogICAgIE9iamVjdFByb3RvdHlwZSogdGhpc09iamVj
dCA9IGpzQ2FzdDxPYmplY3RQcm90b3R5cGUqPihvYmplY3QpOwogICAgIGJvb2wgcmVzdWx0ID0g
QmFzZTo6ZGVmaW5lT3duUHJvcGVydHkob2JqZWN0LCBleGVjLCBwcm9wZXJ0eU5hbWUsIGRlc2Ny
aXB0b3IsIHNob3VsZFRocm93KTsKIAotICAgIGlmICh0aGlzT2JqZWN0LT5tX2hhc05vUHJvcGVy
dGllc1dpdGhVSW50MzJOYW1lcykgewotICAgICAgICBib29sIGlzVUludDMyOwotICAgICAgICBw
cm9wZXJ0eU5hbWUudG9VSW50MzIoaXNVSW50MzIpOwotICAgICAgICB0aGlzT2JqZWN0LT5tX2hh
c05vUHJvcGVydGllc1dpdGhVSW50MzJOYW1lcyA9ICFpc1VJbnQzMjsKLSAgICB9CisgICAgaWYg
KHRoaXNPYmplY3QtPm1faGFzTm9Qcm9wZXJ0aWVzV2l0aFVJbnQzMk5hbWVzICYmIHByb3BlcnR5
TmFtZS5hc0luZGV4KCkgIT0gUHJvcGVydHlOYW1lOjpOb3RBbkluZGV4KQorICAgICAgICB0aGlz
T2JqZWN0LT5tX2hhc05vUHJvcGVydGllc1dpdGhVSW50MzJOYW1lcyA9IGZhbHNlOwogCiAgICAg
cmV0dXJuIHJlc3VsdDsKIH0KQEAgLTExMSwxMiArMTA1LDEyIEBAIGJvb2wgT2JqZWN0UHJvdG90
eXBlOjpnZXRPd25Qcm9wZXJ0eVNsb3QKICAgICByZXR1cm4gQmFzZTo6Z2V0T3duUHJvcGVydHlT
bG90QnlJbmRleCh0aGlzT2JqZWN0LCBleGVjLCBwcm9wZXJ0eU5hbWUsIHNsb3QpOwogfQogCi1i
b29sIE9iamVjdFByb3RvdHlwZTo6Z2V0T3duUHJvcGVydHlTbG90KEpTQ2VsbCogY2VsbCwgRXhl
Y1N0YXRlKiBleGVjLCBjb25zdCBJZGVudGlmaWVyJiBwcm9wZXJ0eU5hbWUsIFByb3BlcnR5U2xv
dCAmc2xvdCkKK2Jvb2wgT2JqZWN0UHJvdG90eXBlOjpnZXRPd25Qcm9wZXJ0eVNsb3QoSlNDZWxs
KiBjZWxsLCBFeGVjU3RhdGUqIGV4ZWMsIFByb3BlcnR5TmFtZSBwcm9wZXJ0eU5hbWUsIFByb3Bl
cnR5U2xvdCAmc2xvdCkKIHsKICAgICByZXR1cm4gZ2V0U3RhdGljRnVuY3Rpb25TbG90PEpTTm9u
RmluYWxPYmplY3Q+KGV4ZWMsIEV4ZWNTdGF0ZTo6b2JqZWN0UHJvdG90eXBlVGFibGUoZXhlYyks
IGpzQ2FzdDxPYmplY3RQcm90b3R5cGUqPihjZWxsKSwgcHJvcGVydHlOYW1lLCBzbG90KTsKIH0K
IAotYm9vbCBPYmplY3RQcm90b3R5cGU6OmdldE93blByb3BlcnR5RGVzY3JpcHRvcihKU09iamVj
dCogb2JqZWN0LCBFeGVjU3RhdGUqIGV4ZWMsIGNvbnN0IElkZW50aWZpZXImIHByb3BlcnR5TmFt
ZSwgUHJvcGVydHlEZXNjcmlwdG9yJiBkZXNjcmlwdG9yKQorYm9vbCBPYmplY3RQcm90b3R5cGU6
OmdldE93blByb3BlcnR5RGVzY3JpcHRvcihKU09iamVjdCogb2JqZWN0LCBFeGVjU3RhdGUqIGV4
ZWMsIFByb3BlcnR5TmFtZSBwcm9wZXJ0eU5hbWUsIFByb3BlcnR5RGVzY3JpcHRvciYgZGVzY3Jp
cHRvcikKIHsKICAgICByZXR1cm4gZ2V0U3RhdGljRnVuY3Rpb25EZXNjcmlwdG9yPEpTTm9uRmlu
YWxPYmplY3Q+KGV4ZWMsIEV4ZWNTdGF0ZTo6b2JqZWN0UHJvdG90eXBlVGFibGUoZXhlYyksIGpz
Q2FzdDxPYmplY3RQcm90b3R5cGUqPihvYmplY3QpLCBwcm9wZXJ0eU5hbWUsIGRlc2NyaXB0b3Ip
OwogfQpJbmRleDogU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvT2JqZWN0UHJvdG90eXBl
LmgKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PQotLS0gU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvT2JqZWN0UHJv
dG90eXBlLmgJKHJldmlzaW9uIDExNjY2NykKKysrIFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50
aW1lL09iamVjdFByb3RvdHlwZS5oCSh3b3JraW5nIGNvcHkpCkBAIC01MCwxMiArNTAsMTIgQEAg
bmFtZXNwYWNlIEpTQyB7CiAKICAgICBwcml2YXRlOgogICAgICAgICBPYmplY3RQcm90b3R5cGUo
RXhlY1N0YXRlKiwgU3RydWN0dXJlKik7Ci0gICAgICAgIHN0YXRpYyB2b2lkIHB1dChKU0NlbGwq
LCBFeGVjU3RhdGUqLCBjb25zdCBJZGVudGlmaWVyJiwgSlNWYWx1ZSwgUHV0UHJvcGVydHlTbG90
Jik7Ci0gICAgICAgIHN0YXRpYyBib29sIGRlZmluZU93blByb3BlcnR5KEpTT2JqZWN0KiwgRXhl
Y1N0YXRlKiwgY29uc3QgSWRlbnRpZmllciYgcHJvcGVydHlOYW1lLCBQcm9wZXJ0eURlc2NyaXB0
b3ImLCBib29sIHNob3VsZFRocm93KTsKKyAgICAgICAgc3RhdGljIHZvaWQgcHV0KEpTQ2VsbCos
IEV4ZWNTdGF0ZSosIFByb3BlcnR5TmFtZSwgSlNWYWx1ZSwgUHV0UHJvcGVydHlTbG90Jik7Cisg
ICAgICAgIHN0YXRpYyBib29sIGRlZmluZU93blByb3BlcnR5KEpTT2JqZWN0KiwgRXhlY1N0YXRl
KiwgUHJvcGVydHlOYW1lLCBQcm9wZXJ0eURlc2NyaXB0b3ImLCBib29sIHNob3VsZFRocm93KTsK
IAotICAgICAgICBzdGF0aWMgYm9vbCBnZXRPd25Qcm9wZXJ0eVNsb3QoSlNDZWxsKiwgRXhlY1N0
YXRlKiwgY29uc3QgSWRlbnRpZmllciYsIFByb3BlcnR5U2xvdCYpOworICAgICAgICBzdGF0aWMg
Ym9vbCBnZXRPd25Qcm9wZXJ0eVNsb3QoSlNDZWxsKiwgRXhlY1N0YXRlKiwgUHJvcGVydHlOYW1l
LCBQcm9wZXJ0eVNsb3QmKTsKICAgICAgICAgc3RhdGljIGJvb2wgZ2V0T3duUHJvcGVydHlTbG90
QnlJbmRleChKU0NlbGwqLCBFeGVjU3RhdGUqLCB1bnNpZ25lZCBwcm9wZXJ0eU5hbWUsIFByb3Bl
cnR5U2xvdCYpOwotICAgICAgICBzdGF0aWMgYm9vbCBnZXRPd25Qcm9wZXJ0eURlc2NyaXB0b3Io
SlNPYmplY3QqLCBFeGVjU3RhdGUqLCBjb25zdCBJZGVudGlmaWVyJiwgUHJvcGVydHlEZXNjcmlw
dG9yJik7CisgICAgICAgIHN0YXRpYyBib29sIGdldE93blByb3BlcnR5RGVzY3JpcHRvcihKU09i
amVjdCosIEV4ZWNTdGF0ZSosIFByb3BlcnR5TmFtZSwgUHJvcGVydHlEZXNjcmlwdG9yJik7CiAK
ICAgICAgICAgYm9vbCBtX2hhc05vUHJvcGVydGllc1dpdGhVSW50MzJOYW1lczsKICAgICB9OwpJ
bmRleDogU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvUHJvcGVydHlOYW1lLmgKPT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PQotLS0gU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvUHJvcGVydHlOYW1lLmgJKHJl
dmlzaW9uIDApCisrKyBTb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9Qcm9wZXJ0eU5hbWUu
aAkocmV2aXNpb24gMCkKQEAgLTAsMCArMSwxMzEgQEAKKy8qCisgKiBDb3B5cmlnaHQgKEMpIDIw
MTIgQXBwbGUgSW5jLiBBbGwgcmlnaHRzIHJlc2VydmVkLgorICoKKyAqIFJlZGlzdHJpYnV0aW9u
IGFuZCB1c2UgaW4gc291cmNlIGFuZCBiaW5hcnkgZm9ybXMsIHdpdGggb3Igd2l0aG91dAorICog
bW9kaWZpY2F0aW9uLCBhcmUgcGVybWl0dGVkIHByb3ZpZGVkIHRoYXQgdGhlIGZvbGxvd2luZyBj
b25kaXRpb25zCisgKiBhcmUgbWV0OgorICogMS4gUmVkaXN0cmlidXRpb25zIG9mIHNvdXJjZSBj
b2RlIG11c3QgcmV0YWluIHRoZSBhYm92ZSBjb3B5cmlnaHQKKyAqICAgIG5vdGljZSwgdGhpcyBs
aXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lci4KKyAqIDIuIFJl
ZGlzdHJpYnV0aW9ucyBpbiBiaW5hcnkgZm9ybSBtdXN0IHJlcHJvZHVjZSB0aGUgYWJvdmUgY29w
eXJpZ2h0CisgKiAgICBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9s
bG93aW5nIGRpc2NsYWltZXIgaW4gdGhlCisgKiAgICBkb2N1bWVudGF0aW9uIGFuZC9vciBvdGhl
ciBtYXRlcmlhbHMgcHJvdmlkZWQgd2l0aCB0aGUgZGlzdHJpYnV0aW9uLgorICoKKyAqIFRISVMg
U09GVFdBUkUgSVMgUFJPVklERUQgQlkgQVBQTEUgSU5DLiBBTkQgSVRTIENPTlRSSUJVVE9SUyBg
YEFTIElTJycKKyAqIEFORCBBTlkgRVhQUkVTUyBPUiBJTVBMSUVEIFdBUlJBTlRJRVMsIElOQ0xV
RElORywgQlVUIE5PVCBMSU1JVEVEIFRPLAorICogVEhFIElNUExJRUQgV0FSUkFOVElFUyBPRiBN
RVJDSEFOVEFCSUxJVFkgQU5EIEZJVE5FU1MgRk9SIEEgUEFSVElDVUxBUgorICogUFVSUE9TRSBB
UkUgRElTQ0xBSU1FRC4gSU4gTk8gRVZFTlQgU0hBTEwgQVBQTEUgSU5DLiBPUiBJVFMgQ09OVFJJ
QlVUT1JTCisgKiBCRSBMSUFCTEUgRk9SIEFOWSBESVJFQ1QsIElORElSRUNULCBJTkNJREVOVEFM
LCBTUEVDSUFMLCBFWEVNUExBUlksIE9SCisgKiBDT05TRVFVRU5USUFMIERBTUFHRVMgKElOQ0xV
RElORywgQlVUIE5PVCBMSU1JVEVEIFRPLCBQUk9DVVJFTUVOVCBPRgorICogU1VCU1RJVFVURSBH
T09EUyBPUiBTRVJWSUNFUzsgTE9TUyBPRiBVU0UsIERBVEEsIE9SIFBST0ZJVFM7IE9SIEJVU0lO
RVNTCisgKiBJTlRFUlJVUFRJT04pIEhPV0VWRVIgQ0FVU0VEIEFORCBPTiBBTlkgVEhFT1JZIE9G
IExJQUJJTElUWSwgV0hFVEhFUiBJTgorICogQ09OVFJBQ1QsIFNUUklDVCBMSUFCSUxJVFksIE9S
IFRPUlQgKElOQ0xVRElORyBORUdMSUdFTkNFIE9SIE9USEVSV0lTRSkKKyAqIEFSSVNJTkcgSU4g
QU5ZIFdBWSBPVVQgT0YgVEhFIFVTRSBPRiBUSElTIFNPRlRXQVJFLCBFVkVOIElGIEFEVklTRUQg
T0YKKyAqIFRIRSBQT1NTSUJJTElUWSBPRiBTVUNIIERBTUFHRS4KKyAqLworCisjaWZuZGVmIFBy
b3BlcnR5TmFtZV9oCisjZGVmaW5lIFByb3BlcnR5TmFtZV9oCisKKyNpbmNsdWRlICJJZGVudGlm
aWVyLmgiCisKK25hbWVzcGFjZSBKU0MgeworCit0ZW1wbGF0ZSA8dHlwZW5hbWUgQ2hhclR5cGU+
CitBTFdBWVNfSU5MSU5FIHVpbnQzMl90IHRvVUludDMyRnJvbUNoYXJhY3RlcnMoY29uc3QgQ2hh
clR5cGUqIGNoYXJhY3RlcnMsIHVuc2lnbmVkIGxlbmd0aCkKK3sKKyAgICAvLyBBbiBlbXB0eSBz
dHJpbmcgaXMgbm90IGEgbnVtYmVyLgorICAgIGlmICghbGVuZ3RoKQorICAgICAgICByZXR1cm4g
MDsKKworICAgIC8vIEdldCB0aGUgZmlyc3QgY2hhcmFjdGVyLCB0dXJuaW5nIGl0IGludG8gYSBk
aWdpdC4KKyAgICB1aW50MzJfdCB2YWx1ZSA9IGNoYXJhY3RlcnNbMF0gLSAnMCc7CisgICAgaWYg
KHZhbHVlID4gOSkKKyAgICAgICAgcmV0dXJuIFVJTlRfTUFYOworICAgIAorICAgIC8vIENoZWNr
IGZvciBsZWFkaW5nIHplcm9zLiBJZiB0aGUgZmlyc3QgY2hhcmFjaGVyIGlzIDAsIHRoZW4gdGhl
CisgICAgLy8gbGVuZ3RoIG9mIHRoZSBzdHJpbmcgbXVzdCBiZSBvbmUgLSBlLmcuICIwNDIiIGlz
IG5vdCBlcXVhbCB0byAiNDIiLgorICAgIGlmICghdmFsdWUgJiYgbGVuZ3RoID4gMSkKKyAgICAg
ICAgcmV0dXJuIFVJTlRfTUFYOworICAgIAorICAgIHdoaWxlICgtLWxlbmd0aCkgeworICAgICAg
ICAvLyBNdWx0aXBseSB2YWx1ZSBieSAxMCwgY2hlY2tpbmcgZm9yIG92ZXJmbG93IG91dCBvZiAz
MiBiaXRzLgorICAgICAgICBpZiAodmFsdWUgPiAweEZGRkZGRkZGVSAvIDEwKQorICAgICAgICAg
ICAgcmV0dXJuIFVJTlRfTUFYOworICAgICAgICB2YWx1ZSAqPSAxMDsKKyAgICAgICAgCisgICAg
ICAgIC8vIEdldCB0aGUgbmV4dCBjaGFyYWN0ZXIsIHR1cm5pbmcgaXQgaW50byBhIGRpZ2l0Lgor
ICAgICAgICB1aW50MzJfdCBuZXdWYWx1ZSA9ICooKytjaGFyYWN0ZXJzKSAtICcwJzsKKyAgICAg
ICAgaWYgKG5ld1ZhbHVlID4gOSkKKyAgICAgICAgICAgIHJldHVybiBVSU5UX01BWDsKKyAgICAg
ICAgCisgICAgICAgIC8vIEFkZCBpbiB0aGUgb2xkIHZhbHVlLCBjaGVja2luZyBmb3Igb3ZlcmZs
b3cgb3V0IG9mIDMyIGJpdHMuCisgICAgICAgIG5ld1ZhbHVlICs9IHZhbHVlOworICAgICAgICBp
ZiAobmV3VmFsdWUgPCB2YWx1ZSkKKyAgICAgICAgICAgIHJldHVybiBVSU5UX01BWDsKKyAgICAg
ICAgdmFsdWUgPSBuZXdWYWx1ZTsKKyAgICB9CisgICAgCisgICAgcmV0dXJuIHZhbHVlOworfQor
CitBTFdBWVNfSU5MSU5FIHVpbnQzMl90IHRvVUludDMyRnJvbVN0cmluZ0ltcGwoU3RyaW5nSW1w
bCogaW1wbCkKK3sKKyAgICBpZiAoaW1wbC0+aXM4Qml0KCkpCisgICAgICAgIHJldHVybiB0b1VJ
bnQzMkZyb21DaGFyYWN0ZXJzKGltcGwtPmNoYXJhY3RlcnM4KCksIGltcGwtPmxlbmd0aCgpKTsK
KyAgICByZXR1cm4gdG9VSW50MzJGcm9tQ2hhcmFjdGVycyhpbXBsLT5jaGFyYWN0ZXJzMTYoKSwg
aW1wbC0+bGVuZ3RoKCkpOworfQorCitjbGFzcyBQcm9wZXJ0eU5hbWUgeworcHVibGljOgorICAg
IFByb3BlcnR5TmFtZShjb25zdCBJZGVudGlmaWVyJiBwcm9wZXJ0eU5hbWUpCisgICAgICAgIDog
bV9pbXBsKHByb3BlcnR5TmFtZS5pbXBsKCkpCisgICAgeworICAgICAgICBBU1NFUlQoIXByb3Bl
cnR5TmFtZS5pc051bGwoKSk7CisgICAgfQorCisgICAgU3RyaW5nSW1wbCogaW1wbCgpIGNvbnN0
IHsgcmV0dXJuIG1faW1wbDsgfQorICAgIFVTdHJpbmcgdXN0cmluZygpIGNvbnN0IHsgcmV0dXJu
IG1faW1wbDsgfQorCisgICAgc3RhdGljIGNvbnN0IHVpbnQzMl90IE5vdEFuSW5kZXggPSBVSU5U
X01BWDsKKyAgICB1aW50MzJfdCBhc0luZGV4KCkKKyAgICB7CisgICAgICAgIHJldHVybiB0b1VJ
bnQzMkZyb21TdHJpbmdJbXBsKG1faW1wbCk7CisgICAgfQorCitwcml2YXRlOgorICAgIFN0cmlu
Z0ltcGwqIG1faW1wbDsKK307CisKK2lubGluZSBib29sIG9wZXJhdG9yPT0oUHJvcGVydHlOYW1l
IGEsIGNvbnN0IElkZW50aWZpZXImIGIpCit7CisgICAgcmV0dXJuIGEuaW1wbCgpID09IGIuaW1w
bCgpOworfQorCitpbmxpbmUgYm9vbCBvcGVyYXRvcj09KGNvbnN0IElkZW50aWZpZXImIGEsIFBy
b3BlcnR5TmFtZSBiKQoreworICAgIHJldHVybiBhLmltcGwoKSA9PSBiLmltcGwoKTsKK30KKwor
aW5saW5lIGJvb2wgb3BlcmF0b3I9PShQcm9wZXJ0eU5hbWUgYSwgUHJvcGVydHlOYW1lIGIpCit7
CisgICAgcmV0dXJuIGEuaW1wbCgpID09IGIuaW1wbCgpOworfQorCitpbmxpbmUgYm9vbCBvcGVy
YXRvciE9KFByb3BlcnR5TmFtZSBhLCBjb25zdCBJZGVudGlmaWVyJiBiKQoreworICAgIHJldHVy
biBhLmltcGwoKSAhPSBiLmltcGwoKTsKK30KKworaW5saW5lIGJvb2wgb3BlcmF0b3IhPShjb25z
dCBJZGVudGlmaWVyJiBhLCBQcm9wZXJ0eU5hbWUgYikKK3sKKyAgICByZXR1cm4gYS5pbXBsKCkg
IT0gYi5pbXBsKCk7Cit9CisKK2lubGluZSBib29sIG9wZXJhdG9yIT0oUHJvcGVydHlOYW1lIGEs
IFByb3BlcnR5TmFtZSBiKQoreworICAgIHJldHVybiBhLmltcGwoKSAhPSBiLmltcGwoKTsKK30K
KworfQorCisjZW5kaWYKSW5kZXg6IFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL1Byb3Bl
cnR5U2xvdC5oCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL1By
b3BlcnR5U2xvdC5oCShyZXZpc2lvbiAxMTY2NjcpCisrKyBTb3VyY2UvSmF2YVNjcmlwdENvcmUv
cnVudGltZS9Qcm9wZXJ0eVNsb3QuaAkod29ya2luZyBjb3B5KQpAQCAtMjEsOCArMjEsOCBAQAog
I2lmbmRlZiBQcm9wZXJ0eVNsb3RfaAogI2RlZmluZSBQcm9wZXJ0eVNsb3RfaAogCi0jaW5jbHVk
ZSAiSWRlbnRpZmllci5oIgogI2luY2x1ZGUgIkpTVmFsdWUuaCIKKyNpbmNsdWRlICJQcm9wZXJ0
eU5hbWUuaCIKICNpbmNsdWRlICJSZWdpc3Rlci5oIgogI2luY2x1ZGUgPHd0Zi9Bc3NlcnRpb25z
Lmg+CiAjaW5jbHVkZSA8d3RmL05vdEZvdW5kLmg+CkBAIC02MSwxMCArNjEsMTAgQEAgbmFtZXNw
YWNlIEpTQyB7CiAgICAgICAgICAgICBjbGVhclZhbHVlKCk7CiAgICAgICAgIH0KIAotICAgICAg
ICB0eXBlZGVmIEpTVmFsdWUgKCpHZXRWYWx1ZUZ1bmMpKEV4ZWNTdGF0ZSosIEpTVmFsdWUgc2xv
dEJhc2UsIGNvbnN0IElkZW50aWZpZXImKTsKKyAgICAgICAgdHlwZWRlZiBKU1ZhbHVlICgqR2V0
VmFsdWVGdW5jKShFeGVjU3RhdGUqLCBKU1ZhbHVlIHNsb3RCYXNlLCBQcm9wZXJ0eU5hbWUpOwog
ICAgICAgICB0eXBlZGVmIEpTVmFsdWUgKCpHZXRJbmRleFZhbHVlRnVuYykoRXhlY1N0YXRlKiwg
SlNWYWx1ZSBzbG90QmFzZSwgdW5zaWduZWQpOwogCi0gICAgICAgIEpTVmFsdWUgZ2V0VmFsdWUo
RXhlY1N0YXRlKiBleGVjLCBjb25zdCBJZGVudGlmaWVyJiBwcm9wZXJ0eU5hbWUpIGNvbnN0Cisg
ICAgICAgIEpTVmFsdWUgZ2V0VmFsdWUoRXhlY1N0YXRlKiBleGVjLCBQcm9wZXJ0eU5hbWUgcHJv
cGVydHlOYW1lKSBjb25zdAogICAgICAgICB7CiAgICAgICAgICAgICBpZiAobV9nZXRWYWx1ZSA9
PSBKU0NfVkFMVUVfTUFSS0VSKQogICAgICAgICAgICAgICAgIHJldHVybiBtX3ZhbHVlOwpJbmRl
eDogU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvUmVnRXhwQ29uc3RydWN0b3IuY3BwCj09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT0KLS0tIFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL1JlZ0V4cENvbnN0cnVj
dG9yLmNwcAkocmV2aXNpb24gMTE2NjY3KQorKysgU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRp
bWUvUmVnRXhwQ29uc3RydWN0b3IuY3BwCSh3b3JraW5nIGNvcHkpCkBAIC0yOCwyMSArMjgsMjEg
QEAKIAogbmFtZXNwYWNlIEpTQyB7CiAKLXN0YXRpYyBKU1ZhbHVlIHJlZ0V4cENvbnN0cnVjdG9y
SW5wdXQoRXhlY1N0YXRlKiwgSlNWYWx1ZSwgY29uc3QgSWRlbnRpZmllciYpOwotc3RhdGljIEpT
VmFsdWUgcmVnRXhwQ29uc3RydWN0b3JNdWx0aWxpbmUoRXhlY1N0YXRlKiwgSlNWYWx1ZSwgY29u
c3QgSWRlbnRpZmllciYpOwotc3RhdGljIEpTVmFsdWUgcmVnRXhwQ29uc3RydWN0b3JMYXN0TWF0
Y2goRXhlY1N0YXRlKiwgSlNWYWx1ZSwgY29uc3QgSWRlbnRpZmllciYpOwotc3RhdGljIEpTVmFs
dWUgcmVnRXhwQ29uc3RydWN0b3JMYXN0UGFyZW4oRXhlY1N0YXRlKiwgSlNWYWx1ZSwgY29uc3Qg
SWRlbnRpZmllciYpOwotc3RhdGljIEpTVmFsdWUgcmVnRXhwQ29uc3RydWN0b3JMZWZ0Q29udGV4
dChFeGVjU3RhdGUqLCBKU1ZhbHVlLCBjb25zdCBJZGVudGlmaWVyJik7Ci1zdGF0aWMgSlNWYWx1
ZSByZWdFeHBDb25zdHJ1Y3RvclJpZ2h0Q29udGV4dChFeGVjU3RhdGUqLCBKU1ZhbHVlLCBjb25z
dCBJZGVudGlmaWVyJik7Ci1zdGF0aWMgSlNWYWx1ZSByZWdFeHBDb25zdHJ1Y3RvckRvbGxhcjEo
RXhlY1N0YXRlKiwgSlNWYWx1ZSwgY29uc3QgSWRlbnRpZmllciYpOwotc3RhdGljIEpTVmFsdWUg
cmVnRXhwQ29uc3RydWN0b3JEb2xsYXIyKEV4ZWNTdGF0ZSosIEpTVmFsdWUsIGNvbnN0IElkZW50
aWZpZXImKTsKLXN0YXRpYyBKU1ZhbHVlIHJlZ0V4cENvbnN0cnVjdG9yRG9sbGFyMyhFeGVjU3Rh
dGUqLCBKU1ZhbHVlLCBjb25zdCBJZGVudGlmaWVyJik7Ci1zdGF0aWMgSlNWYWx1ZSByZWdFeHBD
b25zdHJ1Y3RvckRvbGxhcjQoRXhlY1N0YXRlKiwgSlNWYWx1ZSwgY29uc3QgSWRlbnRpZmllciYp
Owotc3RhdGljIEpTVmFsdWUgcmVnRXhwQ29uc3RydWN0b3JEb2xsYXI1KEV4ZWNTdGF0ZSosIEpT
VmFsdWUsIGNvbnN0IElkZW50aWZpZXImKTsKLXN0YXRpYyBKU1ZhbHVlIHJlZ0V4cENvbnN0cnVj
dG9yRG9sbGFyNihFeGVjU3RhdGUqLCBKU1ZhbHVlLCBjb25zdCBJZGVudGlmaWVyJik7Ci1zdGF0
aWMgSlNWYWx1ZSByZWdFeHBDb25zdHJ1Y3RvckRvbGxhcjcoRXhlY1N0YXRlKiwgSlNWYWx1ZSwg
Y29uc3QgSWRlbnRpZmllciYpOwotc3RhdGljIEpTVmFsdWUgcmVnRXhwQ29uc3RydWN0b3JEb2xs
YXI4KEV4ZWNTdGF0ZSosIEpTVmFsdWUsIGNvbnN0IElkZW50aWZpZXImKTsKLXN0YXRpYyBKU1Zh
bHVlIHJlZ0V4cENvbnN0cnVjdG9yRG9sbGFyOShFeGVjU3RhdGUqLCBKU1ZhbHVlLCBjb25zdCBJ
ZGVudGlmaWVyJik7CitzdGF0aWMgSlNWYWx1ZSByZWdFeHBDb25zdHJ1Y3RvcklucHV0KEV4ZWNT
dGF0ZSosIEpTVmFsdWUsIFByb3BlcnR5TmFtZSk7CitzdGF0aWMgSlNWYWx1ZSByZWdFeHBDb25z
dHJ1Y3Rvck11bHRpbGluZShFeGVjU3RhdGUqLCBKU1ZhbHVlLCBQcm9wZXJ0eU5hbWUpOworc3Rh
dGljIEpTVmFsdWUgcmVnRXhwQ29uc3RydWN0b3JMYXN0TWF0Y2goRXhlY1N0YXRlKiwgSlNWYWx1
ZSwgUHJvcGVydHlOYW1lKTsKK3N0YXRpYyBKU1ZhbHVlIHJlZ0V4cENvbnN0cnVjdG9yTGFzdFBh
cmVuKEV4ZWNTdGF0ZSosIEpTVmFsdWUsIFByb3BlcnR5TmFtZSk7CitzdGF0aWMgSlNWYWx1ZSBy
ZWdFeHBDb25zdHJ1Y3RvckxlZnRDb250ZXh0KEV4ZWNTdGF0ZSosIEpTVmFsdWUsIFByb3BlcnR5
TmFtZSk7CitzdGF0aWMgSlNWYWx1ZSByZWdFeHBDb25zdHJ1Y3RvclJpZ2h0Q29udGV4dChFeGVj
U3RhdGUqLCBKU1ZhbHVlLCBQcm9wZXJ0eU5hbWUpOworc3RhdGljIEpTVmFsdWUgcmVnRXhwQ29u
c3RydWN0b3JEb2xsYXIxKEV4ZWNTdGF0ZSosIEpTVmFsdWUsIFByb3BlcnR5TmFtZSk7CitzdGF0
aWMgSlNWYWx1ZSByZWdFeHBDb25zdHJ1Y3RvckRvbGxhcjIoRXhlY1N0YXRlKiwgSlNWYWx1ZSwg
UHJvcGVydHlOYW1lKTsKK3N0YXRpYyBKU1ZhbHVlIHJlZ0V4cENvbnN0cnVjdG9yRG9sbGFyMyhF
eGVjU3RhdGUqLCBKU1ZhbHVlLCBQcm9wZXJ0eU5hbWUpOworc3RhdGljIEpTVmFsdWUgcmVnRXhw
Q29uc3RydWN0b3JEb2xsYXI0KEV4ZWNTdGF0ZSosIEpTVmFsdWUsIFByb3BlcnR5TmFtZSk7Citz
dGF0aWMgSlNWYWx1ZSByZWdFeHBDb25zdHJ1Y3RvckRvbGxhcjUoRXhlY1N0YXRlKiwgSlNWYWx1
ZSwgUHJvcGVydHlOYW1lKTsKK3N0YXRpYyBKU1ZhbHVlIHJlZ0V4cENvbnN0cnVjdG9yRG9sbGFy
NihFeGVjU3RhdGUqLCBKU1ZhbHVlLCBQcm9wZXJ0eU5hbWUpOworc3RhdGljIEpTVmFsdWUgcmVn
RXhwQ29uc3RydWN0b3JEb2xsYXI3KEV4ZWNTdGF0ZSosIEpTVmFsdWUsIFByb3BlcnR5TmFtZSk7
CitzdGF0aWMgSlNWYWx1ZSByZWdFeHBDb25zdHJ1Y3RvckRvbGxhcjgoRXhlY1N0YXRlKiwgSlNW
YWx1ZSwgUHJvcGVydHlOYW1lKTsKK3N0YXRpYyBKU1ZhbHVlIHJlZ0V4cENvbnN0cnVjdG9yRG9s
bGFyOShFeGVjU3RhdGUqLCBKU1ZhbHVlLCBQcm9wZXJ0eU5hbWUpOwogCiBzdGF0aWMgdm9pZCBz
ZXRSZWdFeHBDb25zdHJ1Y3RvcklucHV0KEV4ZWNTdGF0ZSosIEpTT2JqZWN0KiwgSlNWYWx1ZSk7
CiBzdGF0aWMgdm9pZCBzZXRSZWdFeHBDb25zdHJ1Y3Rvck11bHRpbGluZShFeGVjU3RhdGUqLCBK
U09iamVjdCosIEpTVmFsdWUpOwpAQCAtOTIsNyArOTIsNyBAQCBSZWdFeHBDb25zdHJ1Y3Rvcjo6
UmVnRXhwQ29uc3RydWN0b3IoSlNHCiAKIHZvaWQgUmVnRXhwQ29uc3RydWN0b3I6OmZpbmlzaENy
ZWF0aW9uKEV4ZWNTdGF0ZSogZXhlYywgUmVnRXhwUHJvdG90eXBlKiByZWdFeHBQcm90b3R5cGUp
CiB7Ci0gICAgQmFzZTo6ZmluaXNoQ3JlYXRpb24oZXhlYy0+Z2xvYmFsRGF0YSgpLCBJZGVudGlm
aWVyKGV4ZWMsICJSZWdFeHAiKSk7CisgICAgQmFzZTo6ZmluaXNoQ3JlYXRpb24oZXhlYy0+Z2xv
YmFsRGF0YSgpLCBJZGVudGlmaWVyKGV4ZWMsICJSZWdFeHAiKS51c3RyaW5nKCkpOwogICAgIEFT
U0VSVChpbmhlcml0cygmc19pbmZvKSk7CiAKICAgICAvLyBFQ01BIDE1LjEwLjUuMSBSZWdFeHAu
cHJvdG90eXBlCkBAIC0xNTQsOTIgKzE1NCw5MiBAQCBKU1ZhbHVlIFJlZ0V4cENvbnN0cnVjdG9y
OjpnZXRSaWdodENvbnRlCiAgICAgcmV0dXJuIG1fY2FjaGVkUmVzdWx0Lmxhc3RSZXN1bHQoZXhl
YywgdGhpcyktPnJpZ2h0Q29udGV4dChleGVjKTsKIH0KICAgICAKLWJvb2wgUmVnRXhwQ29uc3Ry
dWN0b3I6OmdldE93blByb3BlcnR5U2xvdChKU0NlbGwqIGNlbGwsIEV4ZWNTdGF0ZSogZXhlYywg
Y29uc3QgSWRlbnRpZmllciYgcHJvcGVydHlOYW1lLCBQcm9wZXJ0eVNsb3QmIHNsb3QpCitib29s
IFJlZ0V4cENvbnN0cnVjdG9yOjpnZXRPd25Qcm9wZXJ0eVNsb3QoSlNDZWxsKiBjZWxsLCBFeGVj
U3RhdGUqIGV4ZWMsIFByb3BlcnR5TmFtZSBwcm9wZXJ0eU5hbWUsIFByb3BlcnR5U2xvdCYgc2xv
dCkKIHsKICAgICByZXR1cm4gZ2V0U3RhdGljVmFsdWVTbG90PFJlZ0V4cENvbnN0cnVjdG9yLCBJ
bnRlcm5hbEZ1bmN0aW9uPihleGVjLCBFeGVjU3RhdGU6OnJlZ0V4cENvbnN0cnVjdG9yVGFibGUo
ZXhlYyksIGpzQ2FzdDxSZWdFeHBDb25zdHJ1Y3Rvcio+KGNlbGwpLCBwcm9wZXJ0eU5hbWUsIHNs
b3QpOwogfQogCi1ib29sIFJlZ0V4cENvbnN0cnVjdG9yOjpnZXRPd25Qcm9wZXJ0eURlc2NyaXB0
b3IoSlNPYmplY3QqIG9iamVjdCwgRXhlY1N0YXRlKiBleGVjLCBjb25zdCBJZGVudGlmaWVyJiBw
cm9wZXJ0eU5hbWUsIFByb3BlcnR5RGVzY3JpcHRvciYgZGVzY3JpcHRvcikKK2Jvb2wgUmVnRXhw
Q29uc3RydWN0b3I6OmdldE93blByb3BlcnR5RGVzY3JpcHRvcihKU09iamVjdCogb2JqZWN0LCBF
eGVjU3RhdGUqIGV4ZWMsIFByb3BlcnR5TmFtZSBwcm9wZXJ0eU5hbWUsIFByb3BlcnR5RGVzY3Jp
cHRvciYgZGVzY3JpcHRvcikKIHsKICAgICByZXR1cm4gZ2V0U3RhdGljVmFsdWVEZXNjcmlwdG9y
PFJlZ0V4cENvbnN0cnVjdG9yLCBJbnRlcm5hbEZ1bmN0aW9uPihleGVjLCBFeGVjU3RhdGU6OnJl
Z0V4cENvbnN0cnVjdG9yVGFibGUoZXhlYyksIGpzQ2FzdDxSZWdFeHBDb25zdHJ1Y3Rvcio+KG9i
amVjdCksIHByb3BlcnR5TmFtZSwgZGVzY3JpcHRvcik7CiB9CiAKLUpTVmFsdWUgcmVnRXhwQ29u
c3RydWN0b3JEb2xsYXIxKEV4ZWNTdGF0ZSogZXhlYywgSlNWYWx1ZSBzbG90QmFzZSwgY29uc3Qg
SWRlbnRpZmllciYpCitKU1ZhbHVlIHJlZ0V4cENvbnN0cnVjdG9yRG9sbGFyMShFeGVjU3RhdGUq
IGV4ZWMsIEpTVmFsdWUgc2xvdEJhc2UsIFByb3BlcnR5TmFtZSkKIHsKICAgICByZXR1cm4gYXNS
ZWdFeHBDb25zdHJ1Y3RvcihzbG90QmFzZSktPmdldEJhY2tyZWYoZXhlYywgMSk7CiB9CiAKLUpT
VmFsdWUgcmVnRXhwQ29uc3RydWN0b3JEb2xsYXIyKEV4ZWNTdGF0ZSogZXhlYywgSlNWYWx1ZSBz
bG90QmFzZSwgY29uc3QgSWRlbnRpZmllciYpCitKU1ZhbHVlIHJlZ0V4cENvbnN0cnVjdG9yRG9s
bGFyMihFeGVjU3RhdGUqIGV4ZWMsIEpTVmFsdWUgc2xvdEJhc2UsIFByb3BlcnR5TmFtZSkKIHsK
ICAgICByZXR1cm4gYXNSZWdFeHBDb25zdHJ1Y3RvcihzbG90QmFzZSktPmdldEJhY2tyZWYoZXhl
YywgMik7CiB9CiAKLUpTVmFsdWUgcmVnRXhwQ29uc3RydWN0b3JEb2xsYXIzKEV4ZWNTdGF0ZSog
ZXhlYywgSlNWYWx1ZSBzbG90QmFzZSwgY29uc3QgSWRlbnRpZmllciYpCitKU1ZhbHVlIHJlZ0V4
cENvbnN0cnVjdG9yRG9sbGFyMyhFeGVjU3RhdGUqIGV4ZWMsIEpTVmFsdWUgc2xvdEJhc2UsIFBy
b3BlcnR5TmFtZSkKIHsKICAgICByZXR1cm4gYXNSZWdFeHBDb25zdHJ1Y3RvcihzbG90QmFzZSkt
PmdldEJhY2tyZWYoZXhlYywgMyk7CiB9CiAKLUpTVmFsdWUgcmVnRXhwQ29uc3RydWN0b3JEb2xs
YXI0KEV4ZWNTdGF0ZSogZXhlYywgSlNWYWx1ZSBzbG90QmFzZSwgY29uc3QgSWRlbnRpZmllciYp
CitKU1ZhbHVlIHJlZ0V4cENvbnN0cnVjdG9yRG9sbGFyNChFeGVjU3RhdGUqIGV4ZWMsIEpTVmFs
dWUgc2xvdEJhc2UsIFByb3BlcnR5TmFtZSkKIHsKICAgICByZXR1cm4gYXNSZWdFeHBDb25zdHJ1
Y3RvcihzbG90QmFzZSktPmdldEJhY2tyZWYoZXhlYywgNCk7CiB9CiAKLUpTVmFsdWUgcmVnRXhw
Q29uc3RydWN0b3JEb2xsYXI1KEV4ZWNTdGF0ZSogZXhlYywgSlNWYWx1ZSBzbG90QmFzZSwgY29u
c3QgSWRlbnRpZmllciYpCitKU1ZhbHVlIHJlZ0V4cENvbnN0cnVjdG9yRG9sbGFyNShFeGVjU3Rh
dGUqIGV4ZWMsIEpTVmFsdWUgc2xvdEJhc2UsIFByb3BlcnR5TmFtZSkKIHsKICAgICByZXR1cm4g
YXNSZWdFeHBDb25zdHJ1Y3RvcihzbG90QmFzZSktPmdldEJhY2tyZWYoZXhlYywgNSk7CiB9CiAK
LUpTVmFsdWUgcmVnRXhwQ29uc3RydWN0b3JEb2xsYXI2KEV4ZWNTdGF0ZSogZXhlYywgSlNWYWx1
ZSBzbG90QmFzZSwgY29uc3QgSWRlbnRpZmllciYpCitKU1ZhbHVlIHJlZ0V4cENvbnN0cnVjdG9y
RG9sbGFyNihFeGVjU3RhdGUqIGV4ZWMsIEpTVmFsdWUgc2xvdEJhc2UsIFByb3BlcnR5TmFtZSkK
IHsKICAgICByZXR1cm4gYXNSZWdFeHBDb25zdHJ1Y3RvcihzbG90QmFzZSktPmdldEJhY2tyZWYo
ZXhlYywgNik7CiB9CiAKLUpTVmFsdWUgcmVnRXhwQ29uc3RydWN0b3JEb2xsYXI3KEV4ZWNTdGF0
ZSogZXhlYywgSlNWYWx1ZSBzbG90QmFzZSwgY29uc3QgSWRlbnRpZmllciYpCitKU1ZhbHVlIHJl
Z0V4cENvbnN0cnVjdG9yRG9sbGFyNyhFeGVjU3RhdGUqIGV4ZWMsIEpTVmFsdWUgc2xvdEJhc2Us
IFByb3BlcnR5TmFtZSkKIHsKICAgICByZXR1cm4gYXNSZWdFeHBDb25zdHJ1Y3RvcihzbG90QmFz
ZSktPmdldEJhY2tyZWYoZXhlYywgNyk7CiB9CiAKLUpTVmFsdWUgcmVnRXhwQ29uc3RydWN0b3JE
b2xsYXI4KEV4ZWNTdGF0ZSogZXhlYywgSlNWYWx1ZSBzbG90QmFzZSwgY29uc3QgSWRlbnRpZmll
ciYpCitKU1ZhbHVlIHJlZ0V4cENvbnN0cnVjdG9yRG9sbGFyOChFeGVjU3RhdGUqIGV4ZWMsIEpT
VmFsdWUgc2xvdEJhc2UsIFByb3BlcnR5TmFtZSkKIHsKICAgICByZXR1cm4gYXNSZWdFeHBDb25z
dHJ1Y3RvcihzbG90QmFzZSktPmdldEJhY2tyZWYoZXhlYywgOCk7CiB9CiAKLUpTVmFsdWUgcmVn
RXhwQ29uc3RydWN0b3JEb2xsYXI5KEV4ZWNTdGF0ZSogZXhlYywgSlNWYWx1ZSBzbG90QmFzZSwg
Y29uc3QgSWRlbnRpZmllciYpCitKU1ZhbHVlIHJlZ0V4cENvbnN0cnVjdG9yRG9sbGFyOShFeGVj
U3RhdGUqIGV4ZWMsIEpTVmFsdWUgc2xvdEJhc2UsIFByb3BlcnR5TmFtZSkKIHsKICAgICByZXR1
cm4gYXNSZWdFeHBDb25zdHJ1Y3RvcihzbG90QmFzZSktPmdldEJhY2tyZWYoZXhlYywgOSk7CiB9
CiAKLUpTVmFsdWUgcmVnRXhwQ29uc3RydWN0b3JJbnB1dChFeGVjU3RhdGUqLCBKU1ZhbHVlIHNs
b3RCYXNlLCBjb25zdCBJZGVudGlmaWVyJikKK0pTVmFsdWUgcmVnRXhwQ29uc3RydWN0b3JJbnB1
dChFeGVjU3RhdGUqLCBKU1ZhbHVlIHNsb3RCYXNlLCBQcm9wZXJ0eU5hbWUpCiB7CiAgICAgcmV0
dXJuIGFzUmVnRXhwQ29uc3RydWN0b3Ioc2xvdEJhc2UpLT5pbnB1dCgpOwogfQogCi1KU1ZhbHVl
IHJlZ0V4cENvbnN0cnVjdG9yTXVsdGlsaW5lKEV4ZWNTdGF0ZSosIEpTVmFsdWUgc2xvdEJhc2Us
IGNvbnN0IElkZW50aWZpZXImKQorSlNWYWx1ZSByZWdFeHBDb25zdHJ1Y3Rvck11bHRpbGluZShF
eGVjU3RhdGUqLCBKU1ZhbHVlIHNsb3RCYXNlLCBQcm9wZXJ0eU5hbWUpCiB7CiAgICAgcmV0dXJu
IGpzQm9vbGVhbihhc1JlZ0V4cENvbnN0cnVjdG9yKHNsb3RCYXNlKS0+bXVsdGlsaW5lKCkpOwog
fQogCi1KU1ZhbHVlIHJlZ0V4cENvbnN0cnVjdG9yTGFzdE1hdGNoKEV4ZWNTdGF0ZSogZXhlYywg
SlNWYWx1ZSBzbG90QmFzZSwgY29uc3QgSWRlbnRpZmllciYpCitKU1ZhbHVlIHJlZ0V4cENvbnN0
cnVjdG9yTGFzdE1hdGNoKEV4ZWNTdGF0ZSogZXhlYywgSlNWYWx1ZSBzbG90QmFzZSwgUHJvcGVy
dHlOYW1lKQogewogICAgIHJldHVybiBhc1JlZ0V4cENvbnN0cnVjdG9yKHNsb3RCYXNlKS0+Z2V0
QmFja3JlZihleGVjLCAwKTsKIH0KIAotSlNWYWx1ZSByZWdFeHBDb25zdHJ1Y3Rvckxhc3RQYXJl
bihFeGVjU3RhdGUqIGV4ZWMsIEpTVmFsdWUgc2xvdEJhc2UsIGNvbnN0IElkZW50aWZpZXImKQor
SlNWYWx1ZSByZWdFeHBDb25zdHJ1Y3Rvckxhc3RQYXJlbihFeGVjU3RhdGUqIGV4ZWMsIEpTVmFs
dWUgc2xvdEJhc2UsIFByb3BlcnR5TmFtZSkKIHsKICAgICByZXR1cm4gYXNSZWdFeHBDb25zdHJ1
Y3RvcihzbG90QmFzZSktPmdldExhc3RQYXJlbihleGVjKTsKIH0KIAotSlNWYWx1ZSByZWdFeHBD
b25zdHJ1Y3RvckxlZnRDb250ZXh0KEV4ZWNTdGF0ZSogZXhlYywgSlNWYWx1ZSBzbG90QmFzZSwg
Y29uc3QgSWRlbnRpZmllciYpCitKU1ZhbHVlIHJlZ0V4cENvbnN0cnVjdG9yTGVmdENvbnRleHQo
RXhlY1N0YXRlKiBleGVjLCBKU1ZhbHVlIHNsb3RCYXNlLCBQcm9wZXJ0eU5hbWUpCiB7CiAgICAg
cmV0dXJuIGFzUmVnRXhwQ29uc3RydWN0b3Ioc2xvdEJhc2UpLT5nZXRMZWZ0Q29udGV4dChleGVj
KTsKIH0KIAotSlNWYWx1ZSByZWdFeHBDb25zdHJ1Y3RvclJpZ2h0Q29udGV4dChFeGVjU3RhdGUq
IGV4ZWMsIEpTVmFsdWUgc2xvdEJhc2UsIGNvbnN0IElkZW50aWZpZXImKQorSlNWYWx1ZSByZWdF
eHBDb25zdHJ1Y3RvclJpZ2h0Q29udGV4dChFeGVjU3RhdGUqIGV4ZWMsIEpTVmFsdWUgc2xvdEJh
c2UsIFByb3BlcnR5TmFtZSkKIHsKICAgICByZXR1cm4gYXNSZWdFeHBDb25zdHJ1Y3RvcihzbG90
QmFzZSktPmdldFJpZ2h0Q29udGV4dChleGVjKTsKIH0KIAotdm9pZCBSZWdFeHBDb25zdHJ1Y3Rv
cjo6cHV0KEpTQ2VsbCogY2VsbCwgRXhlY1N0YXRlKiBleGVjLCBjb25zdCBJZGVudGlmaWVyJiBw
cm9wZXJ0eU5hbWUsIEpTVmFsdWUgdmFsdWUsIFB1dFByb3BlcnR5U2xvdCYgc2xvdCkKK3ZvaWQg
UmVnRXhwQ29uc3RydWN0b3I6OnB1dChKU0NlbGwqIGNlbGwsIEV4ZWNTdGF0ZSogZXhlYywgUHJv
cGVydHlOYW1lIHByb3BlcnR5TmFtZSwgSlNWYWx1ZSB2YWx1ZSwgUHV0UHJvcGVydHlTbG90JiBz
bG90KQogewogICAgIGxvb2t1cFB1dDxSZWdFeHBDb25zdHJ1Y3RvciwgSW50ZXJuYWxGdW5jdGlv
bj4oZXhlYywgcHJvcGVydHlOYW1lLCB2YWx1ZSwgRXhlY1N0YXRlOjpyZWdFeHBDb25zdHJ1Y3Rv
clRhYmxlKGV4ZWMpLCBqc0Nhc3Q8UmVnRXhwQ29uc3RydWN0b3IqPihjZWxsKSwgc2xvdCk7CiB9
CkluZGV4OiBTb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9SZWdFeHBDb25zdHJ1Y3Rvci5o
Cj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT0KLS0tIFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL1JlZ0V4cENvbnN0
cnVjdG9yLmgJKHJldmlzaW9uIDExNjY2NykKKysrIFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50
aW1lL1JlZ0V4cENvbnN0cnVjdG9yLmgJKHdvcmtpbmcgY29weSkKQEAgLTQ4LDEwICs0OCwxMCBA
QCBuYW1lc3BhY2UgSlNDIHsKICAgICAgICAgICAgIHJldHVybiBTdHJ1Y3R1cmU6OmNyZWF0ZShn
bG9iYWxEYXRhLCBnbG9iYWxPYmplY3QsIHByb3RvdHlwZSwgVHlwZUluZm8oT2JqZWN0VHlwZSwg
U3RydWN0dXJlRmxhZ3MpLCAmc19pbmZvKTsKICAgICAgICAgfQogCi0gICAgICAgIHN0YXRpYyB2
b2lkIHB1dChKU0NlbGwqLCBFeGVjU3RhdGUqLCBjb25zdCBJZGVudGlmaWVyJiBwcm9wZXJ0eU5h
bWUsIEpTVmFsdWUsIFB1dFByb3BlcnR5U2xvdCYpOworICAgICAgICBzdGF0aWMgdm9pZCBwdXQo
SlNDZWxsKiwgRXhlY1N0YXRlKiwgUHJvcGVydHlOYW1lLCBKU1ZhbHVlLCBQdXRQcm9wZXJ0eVNs
b3QmKTsKIAotICAgICAgICBzdGF0aWMgYm9vbCBnZXRPd25Qcm9wZXJ0eVNsb3QoSlNDZWxsKiwg
RXhlY1N0YXRlKiwgY29uc3QgSWRlbnRpZmllciYgcHJvcGVydHlOYW1lLCBQcm9wZXJ0eVNsb3Qm
KTsKLSAgICAgICAgc3RhdGljIGJvb2wgZ2V0T3duUHJvcGVydHlEZXNjcmlwdG9yKEpTT2JqZWN0
KiwgRXhlY1N0YXRlKiwgY29uc3QgSWRlbnRpZmllciYsIFByb3BlcnR5RGVzY3JpcHRvciYpOwor
ICAgICAgICBzdGF0aWMgYm9vbCBnZXRPd25Qcm9wZXJ0eVNsb3QoSlNDZWxsKiwgRXhlY1N0YXRl
KiwgUHJvcGVydHlOYW1lLCBQcm9wZXJ0eVNsb3QmKTsKKyAgICAgICAgc3RhdGljIGJvb2wgZ2V0
T3duUHJvcGVydHlEZXNjcmlwdG9yKEpTT2JqZWN0KiwgRXhlY1N0YXRlKiwgUHJvcGVydHlOYW1l
LCBQcm9wZXJ0eURlc2NyaXB0b3ImKTsKIAogICAgICAgICBzdGF0aWMgY29uc3QgQ2xhc3NJbmZv
IHNfaW5mbzsKIApJbmRleDogU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvUmVnRXhwTWF0
Y2hlc0FycmF5LmgKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUv
UmVnRXhwTWF0Y2hlc0FycmF5LmgJKHJldmlzaW9uIDExNjY2NykKKysrIFNvdXJjZS9KYXZhU2Ny
aXB0Q29yZS9ydW50aW1lL1JlZ0V4cE1hdGNoZXNBcnJheS5oCSh3b3JraW5nIGNvcHkpCkBAIC04
MSw3ICs4MSw3IEBAIG5hbWVzcGFjZSBKU0MgewogICAgICAgICAgICAgICAgIHJlaWZ5TWF0Y2hQ
cm9wZXJ0eShleGVjKTsKICAgICAgICAgfQogCi0gICAgICAgIHN0YXRpYyBib29sIGdldE93blBy
b3BlcnR5U2xvdChKU0NlbGwqIGNlbGwsIEV4ZWNTdGF0ZSogZXhlYywgY29uc3QgSWRlbnRpZmll
ciYgcHJvcGVydHlOYW1lLCBQcm9wZXJ0eVNsb3QmIHNsb3QpCisgICAgICAgIHN0YXRpYyBib29s
IGdldE93blByb3BlcnR5U2xvdChKU0NlbGwqIGNlbGwsIEV4ZWNTdGF0ZSogZXhlYywgUHJvcGVy
dHlOYW1lIHByb3BlcnR5TmFtZSwgUHJvcGVydHlTbG90JiBzbG90KQogICAgICAgICB7CiAgICAg
ICAgICAgICBSZWdFeHBNYXRjaGVzQXJyYXkqIHRoaXNPYmplY3QgPSBqc0Nhc3Q8UmVnRXhwTWF0
Y2hlc0FycmF5Kj4oY2VsbCk7CiAgICAgICAgICAgICB0aGlzT2JqZWN0LT5yZWlmeUFsbFByb3Bl
cnRpZXNJZk5lY2Vzc2FyeShleGVjKTsKQEAgLTk4LDE0ICs5OCwxNCBAQCBuYW1lc3BhY2UgSlND
IHsKICAgICAgICAgICAgIHJldHVybiBKU0FycmF5OjpnZXRPd25Qcm9wZXJ0eVNsb3RCeUluZGV4
KHRoaXNPYmplY3QsIGV4ZWMsIHByb3BlcnR5TmFtZSwgc2xvdCk7CiAgICAgICAgIH0KIAotICAg
ICAgICBzdGF0aWMgYm9vbCBnZXRPd25Qcm9wZXJ0eURlc2NyaXB0b3IoSlNPYmplY3QqIG9iamVj
dCwgRXhlY1N0YXRlKiBleGVjLCBjb25zdCBJZGVudGlmaWVyJiBwcm9wZXJ0eU5hbWUsIFByb3Bl
cnR5RGVzY3JpcHRvciYgZGVzY3JpcHRvcikKKyAgICAgICAgc3RhdGljIGJvb2wgZ2V0T3duUHJv
cGVydHlEZXNjcmlwdG9yKEpTT2JqZWN0KiBvYmplY3QsIEV4ZWNTdGF0ZSogZXhlYywgUHJvcGVy
dHlOYW1lIHByb3BlcnR5TmFtZSwgUHJvcGVydHlEZXNjcmlwdG9yJiBkZXNjcmlwdG9yKQogICAg
ICAgICB7CiAgICAgICAgICAgICBSZWdFeHBNYXRjaGVzQXJyYXkqIHRoaXNPYmplY3QgPSBqc0Nh
c3Q8UmVnRXhwTWF0Y2hlc0FycmF5Kj4ob2JqZWN0KTsKICAgICAgICAgICAgIHRoaXNPYmplY3Qt
PnJlaWZ5QWxsUHJvcGVydGllc0lmTmVjZXNzYXJ5KGV4ZWMpOwogICAgICAgICAgICAgcmV0dXJu
IEpTQXJyYXk6OmdldE93blByb3BlcnR5RGVzY3JpcHRvcih0aGlzT2JqZWN0LCBleGVjLCBwcm9w
ZXJ0eU5hbWUsIGRlc2NyaXB0b3IpOwogICAgICAgICB9CiAKLSAgICAgICAgc3RhdGljIHZvaWQg
cHV0KEpTQ2VsbCogY2VsbCwgRXhlY1N0YXRlKiBleGVjLCBjb25zdCBJZGVudGlmaWVyJiBwcm9w
ZXJ0eU5hbWUsIEpTVmFsdWUgdiwgUHV0UHJvcGVydHlTbG90JiBzbG90KQorICAgICAgICBzdGF0
aWMgdm9pZCBwdXQoSlNDZWxsKiBjZWxsLCBFeGVjU3RhdGUqIGV4ZWMsIFByb3BlcnR5TmFtZSBw
cm9wZXJ0eU5hbWUsIEpTVmFsdWUgdiwgUHV0UHJvcGVydHlTbG90JiBzbG90KQogICAgICAgICB7
CiAgICAgICAgICAgICBSZWdFeHBNYXRjaGVzQXJyYXkqIHRoaXNPYmplY3QgPSBqc0Nhc3Q8UmVn
RXhwTWF0Y2hlc0FycmF5Kj4oY2VsbCk7CiAgICAgICAgICAgICB0aGlzT2JqZWN0LT5yZWlmeUFs
bFByb3BlcnRpZXNJZk5lY2Vzc2FyeShleGVjKTsKQEAgLTExOSw3ICsxMTksNyBAQCBuYW1lc3Bh
Y2UgSlNDIHsKICAgICAgICAgICAgIEpTQXJyYXk6OnB1dEJ5SW5kZXgodGhpc09iamVjdCwgZXhl
YywgcHJvcGVydHlOYW1lLCB2LCBzaG91bGRUaHJvdyk7CiAgICAgICAgIH0KIAotICAgICAgICBz
dGF0aWMgYm9vbCBkZWxldGVQcm9wZXJ0eShKU0NlbGwqIGNlbGwsIEV4ZWNTdGF0ZSogZXhlYywg
Y29uc3QgSWRlbnRpZmllciYgcHJvcGVydHlOYW1lKQorICAgICAgICBzdGF0aWMgYm9vbCBkZWxl
dGVQcm9wZXJ0eShKU0NlbGwqIGNlbGwsIEV4ZWNTdGF0ZSogZXhlYywgUHJvcGVydHlOYW1lIHBy
b3BlcnR5TmFtZSkKICAgICAgICAgewogICAgICAgICAgICAgUmVnRXhwTWF0Y2hlc0FycmF5KiB0
aGlzT2JqZWN0ID0ganNDYXN0PFJlZ0V4cE1hdGNoZXNBcnJheSo+KGNlbGwpOwogICAgICAgICAg
ICAgdGhpc09iamVjdC0+cmVpZnlBbGxQcm9wZXJ0aWVzSWZOZWNlc3NhcnkoZXhlYyk7CkBAIC0x
NDAsNyArMTQwLDcgQEAgbmFtZXNwYWNlIEpTQyB7CiAgICAgICAgICAgICBKU0FycmF5OjpnZXRP
d25Qcm9wZXJ0eU5hbWVzKHRoaXNPYmplY3QsIGV4ZWMsIGFyciwgbW9kZSk7CiAgICAgICAgIH0K
IAotICAgICAgICBzdGF0aWMgYm9vbCBkZWZpbmVPd25Qcm9wZXJ0eShKU09iamVjdCogb2JqZWN0
LCBFeGVjU3RhdGUqIGV4ZWMsIGNvbnN0IElkZW50aWZpZXImIHByb3BlcnR5TmFtZSwgUHJvcGVy
dHlEZXNjcmlwdG9yJiBkZXNjcmlwdG9yLCBib29sIHNob3VsZFRocm93KQorICAgICAgICBzdGF0
aWMgYm9vbCBkZWZpbmVPd25Qcm9wZXJ0eShKU09iamVjdCogb2JqZWN0LCBFeGVjU3RhdGUqIGV4
ZWMsIFByb3BlcnR5TmFtZSBwcm9wZXJ0eU5hbWUsIFByb3BlcnR5RGVzY3JpcHRvciYgZGVzY3Jp
cHRvciwgYm9vbCBzaG91bGRUaHJvdykKICAgICAgICAgewogICAgICAgICAgICAgUmVnRXhwTWF0
Y2hlc0FycmF5KiB0aGlzT2JqZWN0ID0ganNDYXN0PFJlZ0V4cE1hdGNoZXNBcnJheSo+KG9iamVj
dCk7CiAgICAgICAgICAgICB0aGlzT2JqZWN0LT5yZWlmeUFsbFByb3BlcnRpZXNJZk5lY2Vzc2Fy
eShleGVjKTsKSW5kZXg6IFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL1JlZ0V4cE9iamVj
dC5jcHAKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PQotLS0gU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvUmVnRXhw
T2JqZWN0LmNwcAkocmV2aXNpb24gMTE2NjY3KQorKysgU291cmNlL0phdmFTY3JpcHRDb3JlL3J1
bnRpbWUvUmVnRXhwT2JqZWN0LmNwcAkod29ya2luZyBjb3B5KQpAQCAtMzcsMTAgKzM3LDEwIEBA
CiAKIG5hbWVzcGFjZSBKU0MgewogCi1zdGF0aWMgSlNWYWx1ZSByZWdFeHBPYmplY3RHbG9iYWwo
RXhlY1N0YXRlKiwgSlNWYWx1ZSwgY29uc3QgSWRlbnRpZmllciYpOwotc3RhdGljIEpTVmFsdWUg
cmVnRXhwT2JqZWN0SWdub3JlQ2FzZShFeGVjU3RhdGUqLCBKU1ZhbHVlLCBjb25zdCBJZGVudGlm
aWVyJik7Ci1zdGF0aWMgSlNWYWx1ZSByZWdFeHBPYmplY3RNdWx0aWxpbmUoRXhlY1N0YXRlKiwg
SlNWYWx1ZSwgY29uc3QgSWRlbnRpZmllciYpOwotc3RhdGljIEpTVmFsdWUgcmVnRXhwT2JqZWN0
U291cmNlKEV4ZWNTdGF0ZSosIEpTVmFsdWUsIGNvbnN0IElkZW50aWZpZXImKTsKK3N0YXRpYyBK
U1ZhbHVlIHJlZ0V4cE9iamVjdEdsb2JhbChFeGVjU3RhdGUqLCBKU1ZhbHVlLCBQcm9wZXJ0eU5h
bWUpOworc3RhdGljIEpTVmFsdWUgcmVnRXhwT2JqZWN0SWdub3JlQ2FzZShFeGVjU3RhdGUqLCBK
U1ZhbHVlLCBQcm9wZXJ0eU5hbWUpOworc3RhdGljIEpTVmFsdWUgcmVnRXhwT2JqZWN0TXVsdGls
aW5lKEV4ZWNTdGF0ZSosIEpTVmFsdWUsIFByb3BlcnR5TmFtZSk7CitzdGF0aWMgSlNWYWx1ZSBy
ZWdFeHBPYmplY3RTb3VyY2UoRXhlY1N0YXRlKiwgSlNWYWx1ZSwgUHJvcGVydHlOYW1lKTsKIAog
fSAvLyBuYW1lc3BhY2UgSlNDCiAKQEAgLTg4LDcgKzg4LDcgQEAgdm9pZCBSZWdFeHBPYmplY3Q6
OnZpc2l0Q2hpbGRyZW4oSlNDZWxsKgogICAgICAgICB2aXNpdG9yLmFwcGVuZCgmdGhpc09iamVj
dC0+bV9sYXN0SW5kZXgpOwogfQogCi1ib29sIFJlZ0V4cE9iamVjdDo6Z2V0T3duUHJvcGVydHlT
bG90KEpTQ2VsbCogY2VsbCwgRXhlY1N0YXRlKiBleGVjLCBjb25zdCBJZGVudGlmaWVyJiBwcm9w
ZXJ0eU5hbWUsIFByb3BlcnR5U2xvdCYgc2xvdCkKK2Jvb2wgUmVnRXhwT2JqZWN0OjpnZXRPd25Q
cm9wZXJ0eVNsb3QoSlNDZWxsKiBjZWxsLCBFeGVjU3RhdGUqIGV4ZWMsIFByb3BlcnR5TmFtZSBw
cm9wZXJ0eU5hbWUsIFByb3BlcnR5U2xvdCYgc2xvdCkKIHsKICAgICBpZiAocHJvcGVydHlOYW1l
ID09IGV4ZWMtPnByb3BlcnR5TmFtZXMoKS5sYXN0SW5kZXgpIHsKICAgICAgICAgUmVnRXhwT2Jq
ZWN0KiByZWdFeHAgPSBhc1JlZ0V4cE9iamVjdChjZWxsKTsKQEAgLTk4LDcgKzk4LDcgQEAgYm9v
bCBSZWdFeHBPYmplY3Q6OmdldE93blByb3BlcnR5U2xvdChKUwogICAgIHJldHVybiBnZXRTdGF0
aWNWYWx1ZVNsb3Q8UmVnRXhwT2JqZWN0LCBKU09iamVjdD4oZXhlYywgRXhlY1N0YXRlOjpyZWdF
eHBUYWJsZShleGVjKSwganNDYXN0PFJlZ0V4cE9iamVjdCo+KGNlbGwpLCBwcm9wZXJ0eU5hbWUs
IHNsb3QpOwogfQogCi1ib29sIFJlZ0V4cE9iamVjdDo6Z2V0T3duUHJvcGVydHlEZXNjcmlwdG9y
KEpTT2JqZWN0KiBvYmplY3QsIEV4ZWNTdGF0ZSogZXhlYywgY29uc3QgSWRlbnRpZmllciYgcHJv
cGVydHlOYW1lLCBQcm9wZXJ0eURlc2NyaXB0b3ImIGRlc2NyaXB0b3IpCitib29sIFJlZ0V4cE9i
amVjdDo6Z2V0T3duUHJvcGVydHlEZXNjcmlwdG9yKEpTT2JqZWN0KiBvYmplY3QsIEV4ZWNTdGF0
ZSogZXhlYywgUHJvcGVydHlOYW1lIHByb3BlcnR5TmFtZSwgUHJvcGVydHlEZXNjcmlwdG9yJiBk
ZXNjcmlwdG9yKQogewogICAgIGlmIChwcm9wZXJ0eU5hbWUgPT0gZXhlYy0+cHJvcGVydHlOYW1l
cygpLmxhc3RJbmRleCkgewogICAgICAgICBSZWdFeHBPYmplY3QqIHJlZ0V4cCA9IGFzUmVnRXhw
T2JqZWN0KG9iamVjdCk7CkBAIC0xMDgsNyArMTA4LDcgQEAgYm9vbCBSZWdFeHBPYmplY3Q6Omdl
dE93blByb3BlcnR5RGVzY3JpcAogICAgIHJldHVybiBnZXRTdGF0aWNWYWx1ZURlc2NyaXB0b3I8
UmVnRXhwT2JqZWN0LCBKU09iamVjdD4oZXhlYywgRXhlY1N0YXRlOjpyZWdFeHBUYWJsZShleGVj
KSwganNDYXN0PFJlZ0V4cE9iamVjdCo+KG9iamVjdCksIHByb3BlcnR5TmFtZSwgZGVzY3JpcHRv
cik7CiB9CiAKLWJvb2wgUmVnRXhwT2JqZWN0OjpkZWxldGVQcm9wZXJ0eShKU0NlbGwqIGNlbGws
IEV4ZWNTdGF0ZSogZXhlYywgY29uc3QgSWRlbnRpZmllciYgcHJvcGVydHlOYW1lKQorYm9vbCBS
ZWdFeHBPYmplY3Q6OmRlbGV0ZVByb3BlcnR5KEpTQ2VsbCogY2VsbCwgRXhlY1N0YXRlKiBleGVj
LCBQcm9wZXJ0eU5hbWUgcHJvcGVydHlOYW1lKQogewogICAgIGlmIChwcm9wZXJ0eU5hbWUgPT0g
ZXhlYy0+cHJvcGVydHlOYW1lcygpLmxhc3RJbmRleCkKICAgICAgICAgcmV0dXJuIGZhbHNlOwpA
QCAtMTM2LDcgKzEzNiw3IEBAIHN0YXRpYyBib29sIHJlamVjdChFeGVjU3RhdGUqIGV4ZWMsIGJv
b2wKICAgICByZXR1cm4gZmFsc2U7CiB9CiAKLWJvb2wgUmVnRXhwT2JqZWN0OjpkZWZpbmVPd25Q
cm9wZXJ0eShKU09iamVjdCogb2JqZWN0LCBFeGVjU3RhdGUqIGV4ZWMsIGNvbnN0IElkZW50aWZp
ZXImIHByb3BlcnR5TmFtZSwgUHJvcGVydHlEZXNjcmlwdG9yJiBkZXNjcmlwdG9yLCBib29sIHNo
b3VsZFRocm93KQorYm9vbCBSZWdFeHBPYmplY3Q6OmRlZmluZU93blByb3BlcnR5KEpTT2JqZWN0
KiBvYmplY3QsIEV4ZWNTdGF0ZSogZXhlYywgUHJvcGVydHlOYW1lIHByb3BlcnR5TmFtZSwgUHJv
cGVydHlEZXNjcmlwdG9yJiBkZXNjcmlwdG9yLCBib29sIHNob3VsZFRocm93KQogewogICAgIGlm
IChwcm9wZXJ0eU5hbWUgPT0gZXhlYy0+cHJvcGVydHlOYW1lcygpLmxhc3RJbmRleCkgewogICAg
ICAgICBSZWdFeHBPYmplY3QqIHJlZ0V4cCA9IGFzUmVnRXhwT2JqZWN0KG9iamVjdCk7CkBAIC0x
NjMsMjIgKzE2MywyMiBAQCBib29sIFJlZ0V4cE9iamVjdDo6ZGVmaW5lT3duUHJvcGVydHkoSlNP
CiAgICAgcmV0dXJuIEJhc2U6OmRlZmluZU93blByb3BlcnR5KG9iamVjdCwgZXhlYywgcHJvcGVy
dHlOYW1lLCBkZXNjcmlwdG9yLCBzaG91bGRUaHJvdyk7CiB9CiAKLUpTVmFsdWUgcmVnRXhwT2Jq
ZWN0R2xvYmFsKEV4ZWNTdGF0ZSosIEpTVmFsdWUgc2xvdEJhc2UsIGNvbnN0IElkZW50aWZpZXIm
KQorSlNWYWx1ZSByZWdFeHBPYmplY3RHbG9iYWwoRXhlY1N0YXRlKiwgSlNWYWx1ZSBzbG90QmFz
ZSwgUHJvcGVydHlOYW1lKQogewogICAgIHJldHVybiBqc0Jvb2xlYW4oYXNSZWdFeHBPYmplY3Qo
c2xvdEJhc2UpLT5yZWdFeHAoKS0+Z2xvYmFsKCkpOwogfQogCi1KU1ZhbHVlIHJlZ0V4cE9iamVj
dElnbm9yZUNhc2UoRXhlY1N0YXRlKiwgSlNWYWx1ZSBzbG90QmFzZSwgY29uc3QgSWRlbnRpZmll
ciYpCitKU1ZhbHVlIHJlZ0V4cE9iamVjdElnbm9yZUNhc2UoRXhlY1N0YXRlKiwgSlNWYWx1ZSBz
bG90QmFzZSwgUHJvcGVydHlOYW1lKQogewogICAgIHJldHVybiBqc0Jvb2xlYW4oYXNSZWdFeHBP
YmplY3Qoc2xvdEJhc2UpLT5yZWdFeHAoKS0+aWdub3JlQ2FzZSgpKTsKIH0KICAKLUpTVmFsdWUg
cmVnRXhwT2JqZWN0TXVsdGlsaW5lKEV4ZWNTdGF0ZSosIEpTVmFsdWUgc2xvdEJhc2UsIGNvbnN0
IElkZW50aWZpZXImKQorSlNWYWx1ZSByZWdFeHBPYmplY3RNdWx0aWxpbmUoRXhlY1N0YXRlKiwg
SlNWYWx1ZSBzbG90QmFzZSwgUHJvcGVydHlOYW1lKQogeyAgICAgICAgICAgIAogICAgIHJldHVy
biBqc0Jvb2xlYW4oYXNSZWdFeHBPYmplY3Qoc2xvdEJhc2UpLT5yZWdFeHAoKS0+bXVsdGlsaW5l
KCkpOwogfQogCi1KU1ZhbHVlIHJlZ0V4cE9iamVjdFNvdXJjZShFeGVjU3RhdGUqIGV4ZWMsIEpT
VmFsdWUgc2xvdEJhc2UsIGNvbnN0IElkZW50aWZpZXImKQorSlNWYWx1ZSByZWdFeHBPYmplY3RT
b3VyY2UoRXhlY1N0YXRlKiBleGVjLCBKU1ZhbHVlIHNsb3RCYXNlLCBQcm9wZXJ0eU5hbWUpCiB7
CiAgICAgVVN0cmluZyBwYXR0ZXJuID0gYXNSZWdFeHBPYmplY3Qoc2xvdEJhc2UpLT5yZWdFeHAo
KS0+cGF0dGVybigpOwogICAgIHVuc2lnbmVkIGxlbmd0aCA9IHBhdHRlcm4ubGVuZ3RoKCk7CkBA
IC0yNjgsNyArMjY4LDcgQEAgSlNWYWx1ZSByZWdFeHBPYmplY3RTb3VyY2UoRXhlY1N0YXRlKiBl
eAogICAgIHJldHVybiBqc1N0cmluZyhleGVjLCByZXN1bHQudG9VU3RyaW5nKCkpOwogfQogCi12
b2lkIFJlZ0V4cE9iamVjdDo6cHV0KEpTQ2VsbCogY2VsbCwgRXhlY1N0YXRlKiBleGVjLCBjb25z
dCBJZGVudGlmaWVyJiBwcm9wZXJ0eU5hbWUsIEpTVmFsdWUgdmFsdWUsIFB1dFByb3BlcnR5U2xv
dCYgc2xvdCkKK3ZvaWQgUmVnRXhwT2JqZWN0OjpwdXQoSlNDZWxsKiBjZWxsLCBFeGVjU3RhdGUq
IGV4ZWMsIFByb3BlcnR5TmFtZSBwcm9wZXJ0eU5hbWUsIEpTVmFsdWUgdmFsdWUsIFB1dFByb3Bl
cnR5U2xvdCYgc2xvdCkKIHsKICAgICBpZiAocHJvcGVydHlOYW1lID09IGV4ZWMtPnByb3BlcnR5
TmFtZXMoKS5sYXN0SW5kZXgpIHsKICAgICAgICAgYXNSZWdFeHBPYmplY3QoY2VsbCktPnNldExh
c3RJbmRleChleGVjLCB2YWx1ZSwgc2xvdC5pc1N0cmljdE1vZGUoKSk7CkluZGV4OiBTb3VyY2Uv
SmF2YVNjcmlwdENvcmUvcnVudGltZS9SZWdFeHBPYmplY3QuaAo9PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3Vy
Y2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9SZWdFeHBPYmplY3QuaAkocmV2aXNpb24gMTE2NjY3
KQorKysgU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvUmVnRXhwT2JqZWN0LmgJKHdvcmtp
bmcgY29weSkKQEAgLTcwLDkgKzcwLDkgQEAgbmFtZXNwYWNlIEpTQyB7CiAgICAgICAgIGJvb2wg
dGVzdChFeGVjU3RhdGUqIGV4ZWMsIEpTU3RyaW5nKiBzdHJpbmcpIHsgcmV0dXJuIG1hdGNoKGV4
ZWMsIHN0cmluZyk7IH0KICAgICAgICAgSlNWYWx1ZSBleGVjKEV4ZWNTdGF0ZSosIEpTU3RyaW5n
Kik7CiAKLSAgICAgICAgc3RhdGljIGJvb2wgZ2V0T3duUHJvcGVydHlTbG90KEpTQ2VsbCosIEV4
ZWNTdGF0ZSosIGNvbnN0IElkZW50aWZpZXImIHByb3BlcnR5TmFtZSwgUHJvcGVydHlTbG90Jik7
Ci0gICAgICAgIHN0YXRpYyBib29sIGdldE93blByb3BlcnR5RGVzY3JpcHRvcihKU09iamVjdCos
IEV4ZWNTdGF0ZSosIGNvbnN0IElkZW50aWZpZXImLCBQcm9wZXJ0eURlc2NyaXB0b3ImKTsKLSAg
ICAgICAgc3RhdGljIHZvaWQgcHV0KEpTQ2VsbCosIEV4ZWNTdGF0ZSosIGNvbnN0IElkZW50aWZp
ZXImIHByb3BlcnR5TmFtZSwgSlNWYWx1ZSwgUHV0UHJvcGVydHlTbG90Jik7CisgICAgICAgIHN0
YXRpYyBib29sIGdldE93blByb3BlcnR5U2xvdChKU0NlbGwqLCBFeGVjU3RhdGUqLCBQcm9wZXJ0
eU5hbWUsIFByb3BlcnR5U2xvdCYpOworICAgICAgICBzdGF0aWMgYm9vbCBnZXRPd25Qcm9wZXJ0
eURlc2NyaXB0b3IoSlNPYmplY3QqLCBFeGVjU3RhdGUqLCBQcm9wZXJ0eU5hbWUsIFByb3BlcnR5
RGVzY3JpcHRvciYpOworICAgICAgICBzdGF0aWMgdm9pZCBwdXQoSlNDZWxsKiwgRXhlY1N0YXRl
KiwgUHJvcGVydHlOYW1lLCBKU1ZhbHVlLCBQdXRQcm9wZXJ0eVNsb3QmKTsKIAogICAgICAgICBz
dGF0aWMgSlNfRVhQT1JUREFUQSBjb25zdCBDbGFzc0luZm8gc19pbmZvOwogCkBAIC04OSwxMCAr
ODksMTAgQEAgbmFtZXNwYWNlIEpTQyB7CiAKICAgICAgICAgc3RhdGljIHZvaWQgdmlzaXRDaGls
ZHJlbihKU0NlbGwqLCBTbG90VmlzaXRvciYpOwogCi0gICAgICAgIEpTX0VYUE9SVF9QUklWQVRF
IHN0YXRpYyBib29sIGRlbGV0ZVByb3BlcnR5KEpTQ2VsbCosIEV4ZWNTdGF0ZSosIGNvbnN0IElk
ZW50aWZpZXImIHByb3BlcnR5TmFtZSk7CisgICAgICAgIEpTX0VYUE9SVF9QUklWQVRFIHN0YXRp
YyBib29sIGRlbGV0ZVByb3BlcnR5KEpTQ2VsbCosIEV4ZWNTdGF0ZSosIFByb3BlcnR5TmFtZSk7
CiAgICAgICAgIEpTX0VYUE9SVF9QUklWQVRFIHN0YXRpYyB2b2lkIGdldE93blByb3BlcnR5TmFt
ZXMoSlNPYmplY3QqLCBFeGVjU3RhdGUqLCBQcm9wZXJ0eU5hbWVBcnJheSYsIEVudW1lcmF0aW9u
TW9kZSk7CiAgICAgICAgIEpTX0VYUE9SVF9QUklWQVRFIHN0YXRpYyB2b2lkIGdldFByb3BlcnR5
TmFtZXMoSlNPYmplY3QqLCBFeGVjU3RhdGUqLCBQcm9wZXJ0eU5hbWVBcnJheSYsIEVudW1lcmF0
aW9uTW9kZSk7Ci0gICAgICAgIEpTX0VYUE9SVF9QUklWQVRFIHN0YXRpYyBib29sIGRlZmluZU93
blByb3BlcnR5KEpTT2JqZWN0KiwgRXhlY1N0YXRlKiwgY29uc3QgSWRlbnRpZmllciYgcHJvcGVy
dHlOYW1lLCBQcm9wZXJ0eURlc2NyaXB0b3ImLCBib29sIHNob3VsZFRocm93KTsKKyAgICAgICAg
SlNfRVhQT1JUX1BSSVZBVEUgc3RhdGljIGJvb2wgZGVmaW5lT3duUHJvcGVydHkoSlNPYmplY3Qq
LCBFeGVjU3RhdGUqLCBQcm9wZXJ0eU5hbWUsIFByb3BlcnR5RGVzY3JpcHRvciYsIGJvb2wgc2hv
dWxkVGhyb3cpOwogCiAgICAgcHJpdmF0ZToKICAgICAgICAgTWF0Y2hSZXN1bHQgbWF0Y2goRXhl
Y1N0YXRlKiwgSlNTdHJpbmcqKTsKSW5kZXg6IFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1l
L1JlZ0V4cFByb3RvdHlwZS5jcHAKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL0phdmFTY3JpcHRDb3Jl
L3J1bnRpbWUvUmVnRXhwUHJvdG90eXBlLmNwcAkocmV2aXNpb24gMTE2NjY3KQorKysgU291cmNl
L0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvUmVnRXhwUHJvdG90eXBlLmNwcAkod29ya2luZyBjb3B5
KQpAQCAtNjcsMTIgKzY3LDEyIEBAIFJlZ0V4cFByb3RvdHlwZTo6UmVnRXhwUHJvdG90eXBlKEpT
R2xvYmEKIHsKIH0KIAotYm9vbCBSZWdFeHBQcm90b3R5cGU6OmdldE93blByb3BlcnR5U2xvdChK
U0NlbGwqIGNlbGwsIEV4ZWNTdGF0ZSogZXhlYywgY29uc3QgSWRlbnRpZmllciYgcHJvcGVydHlO
YW1lLCBQcm9wZXJ0eVNsb3QgJnNsb3QpCitib29sIFJlZ0V4cFByb3RvdHlwZTo6Z2V0T3duUHJv
cGVydHlTbG90KEpTQ2VsbCogY2VsbCwgRXhlY1N0YXRlKiBleGVjLCBQcm9wZXJ0eU5hbWUgcHJv
cGVydHlOYW1lLCBQcm9wZXJ0eVNsb3QgJnNsb3QpCiB7CiAgICAgcmV0dXJuIGdldFN0YXRpY0Z1
bmN0aW9uU2xvdDxSZWdFeHBPYmplY3Q+KGV4ZWMsIEV4ZWNTdGF0ZTo6cmVnRXhwUHJvdG90eXBl
VGFibGUoZXhlYyksIGpzQ2FzdDxSZWdFeHBQcm90b3R5cGUqPihjZWxsKSwgcHJvcGVydHlOYW1l
LCBzbG90KTsKIH0KIAotYm9vbCBSZWdFeHBQcm90b3R5cGU6OmdldE93blByb3BlcnR5RGVzY3Jp
cHRvcihKU09iamVjdCogb2JqZWN0LCBFeGVjU3RhdGUqIGV4ZWMsIGNvbnN0IElkZW50aWZpZXIm
IHByb3BlcnR5TmFtZSwgUHJvcGVydHlEZXNjcmlwdG9yJiBkZXNjcmlwdG9yKQorYm9vbCBSZWdF
eHBQcm90b3R5cGU6OmdldE93blByb3BlcnR5RGVzY3JpcHRvcihKU09iamVjdCogb2JqZWN0LCBF
eGVjU3RhdGUqIGV4ZWMsIFByb3BlcnR5TmFtZSBwcm9wZXJ0eU5hbWUsIFByb3BlcnR5RGVzY3Jp
cHRvciYgZGVzY3JpcHRvcikKIHsKICAgICByZXR1cm4gZ2V0U3RhdGljRnVuY3Rpb25EZXNjcmlw
dG9yPFJlZ0V4cE9iamVjdD4oZXhlYywgRXhlY1N0YXRlOjpyZWdFeHBQcm90b3R5cGVUYWJsZShl
eGVjKSwganNDYXN0PFJlZ0V4cFByb3RvdHlwZSo+KG9iamVjdCksIHByb3BlcnR5TmFtZSwgZGVz
Y3JpcHRvcik7CiB9CkluZGV4OiBTb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9SZWdFeHBQ
cm90b3R5cGUuaAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9S
ZWdFeHBQcm90b3R5cGUuaAkocmV2aXNpb24gMTE2NjY3KQorKysgU291cmNlL0phdmFTY3JpcHRD
b3JlL3J1bnRpbWUvUmVnRXhwUHJvdG90eXBlLmgJKHdvcmtpbmcgY29weSkKQEAgLTQ5LDggKzQ5
LDggQEAgbmFtZXNwYWNlIEpTQyB7CiAgICAgICAgIHN0YXRpYyBjb25zdCB1bnNpZ25lZCBTdHJ1
Y3R1cmVGbGFncyA9IE92ZXJyaWRlc0dldE93blByb3BlcnR5U2xvdCB8IFJlZ0V4cE9iamVjdDo6
U3RydWN0dXJlRmxhZ3M7CiAKICAgICBwcml2YXRlOgotICAgICAgICBzdGF0aWMgYm9vbCBnZXRP
d25Qcm9wZXJ0eVNsb3QoSlNDZWxsKiwgRXhlY1N0YXRlKiwgY29uc3QgSWRlbnRpZmllciYsIFBy
b3BlcnR5U2xvdCYpOwotICAgICAgICBzdGF0aWMgYm9vbCBnZXRPd25Qcm9wZXJ0eURlc2NyaXB0
b3IoSlNPYmplY3QqLCBFeGVjU3RhdGUqLCBjb25zdCBJZGVudGlmaWVyJiwgUHJvcGVydHlEZXNj
cmlwdG9yJik7CisgICAgICAgIHN0YXRpYyBib29sIGdldE93blByb3BlcnR5U2xvdChKU0NlbGwq
LCBFeGVjU3RhdGUqLCBQcm9wZXJ0eU5hbWUsIFByb3BlcnR5U2xvdCYpOworICAgICAgICBzdGF0
aWMgYm9vbCBnZXRPd25Qcm9wZXJ0eURlc2NyaXB0b3IoSlNPYmplY3QqLCBFeGVjU3RhdGUqLCBQ
cm9wZXJ0eU5hbWUsIFByb3BlcnR5RGVzY3JpcHRvciYpOwogICAgIH07CiAKIH0gLy8gbmFtZXNw
YWNlIEpTQwpJbmRleDogU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvU3RyaWN0RXZhbEFj
dGl2YXRpb24uY3BwCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1l
L1N0cmljdEV2YWxBY3RpdmF0aW9uLmNwcAkocmV2aXNpb24gMTE2NjY3KQorKysgU291cmNlL0ph
dmFTY3JpcHRDb3JlL3J1bnRpbWUvU3RyaWN0RXZhbEFjdGl2YXRpb24uY3BwCSh3b3JraW5nIGNv
cHkpCkBAIC0zNyw3ICszNyw3IEBAIFN0cmljdEV2YWxBY3RpdmF0aW9uOjpTdHJpY3RFdmFsQWN0
aXZhdGkKIHsKIH0KIAotYm9vbCBTdHJpY3RFdmFsQWN0aXZhdGlvbjo6ZGVsZXRlUHJvcGVydHko
SlNDZWxsKiwgRXhlY1N0YXRlKiwgY29uc3QgSWRlbnRpZmllciYpCitib29sIFN0cmljdEV2YWxB
Y3RpdmF0aW9uOjpkZWxldGVQcm9wZXJ0eShKU0NlbGwqLCBFeGVjU3RhdGUqLCBQcm9wZXJ0eU5h
bWUpCiB7CiAgICAgcmV0dXJuIGZhbHNlOwogfQpJbmRleDogU291cmNlL0phdmFTY3JpcHRDb3Jl
L3J1bnRpbWUvU3RyaWN0RXZhbEFjdGl2YXRpb24uaAo9PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvSmF2
YVNjcmlwdENvcmUvcnVudGltZS9TdHJpY3RFdmFsQWN0aXZhdGlvbi5oCShyZXZpc2lvbiAxMTY2
NjcpCisrKyBTb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9TdHJpY3RFdmFsQWN0aXZhdGlv
bi5oCSh3b3JraW5nIGNvcHkpCkBAIC00MSw3ICs0MSw3IEBAIHB1YmxpYzoKICAgICAgICAgcmV0
dXJuIGFjdGl2YXRpb247CiAgICAgfQogCi0gICAgc3RhdGljIGJvb2wgZGVsZXRlUHJvcGVydHko
SlNDZWxsKiwgRXhlY1N0YXRlKiwgY29uc3QgSWRlbnRpZmllciYpOworICAgIHN0YXRpYyBib29s
IGRlbGV0ZVByb3BlcnR5KEpTQ2VsbCosIEV4ZWNTdGF0ZSosIFByb3BlcnR5TmFtZSk7CiAgICAg
c3RhdGljIEpTT2JqZWN0KiB0b1RoaXNPYmplY3QoSlNDZWxsKiwgRXhlY1N0YXRlKik7CiAKICAg
ICBzdGF0aWMgU3RydWN0dXJlKiBjcmVhdGVTdHJ1Y3R1cmUoSlNHbG9iYWxEYXRhJiBnbG9iYWxE
YXRhLCBKU0dsb2JhbE9iamVjdCogZ2xvYmFsT2JqZWN0LCBKU1ZhbHVlIHByb3RvdHlwZSkKSW5k
ZXg6IFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL1N0cmluZ0NvbnN0cnVjdG9yLmNwcAo9
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09Ci0tLSBTb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9TdHJpbmdDb25zdHJ1
Y3Rvci5jcHAJKHJldmlzaW9uIDExNjY2NykKKysrIFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50
aW1lL1N0cmluZ0NvbnN0cnVjdG9yLmNwcAkod29ya2luZyBjb3B5KQpAQCAtNTUsMTcgKzU1LDE3
IEBAIFN0cmluZ0NvbnN0cnVjdG9yOjpTdHJpbmdDb25zdHJ1Y3RvcihKU0cKIAogdm9pZCBTdHJp
bmdDb25zdHJ1Y3Rvcjo6ZmluaXNoQ3JlYXRpb24oRXhlY1N0YXRlKiBleGVjLCBTdHJpbmdQcm90
b3R5cGUqIHN0cmluZ1Byb3RvdHlwZSkKIHsKLSAgICBCYXNlOjpmaW5pc2hDcmVhdGlvbihleGVj
LT5nbG9iYWxEYXRhKCksIElkZW50aWZpZXIoZXhlYywgc3RyaW5nUHJvdG90eXBlLT5jbGFzc0lu
Zm8oKS0+Y2xhc3NOYW1lKSk7CisgICAgQmFzZTo6ZmluaXNoQ3JlYXRpb24oZXhlYy0+Z2xvYmFs
RGF0YSgpLCBzdHJpbmdQcm90b3R5cGUtPmNsYXNzSW5mbygpLT5jbGFzc05hbWUpOwogICAgIHB1
dERpcmVjdFdpdGhvdXRUcmFuc2l0aW9uKGV4ZWMtPmdsb2JhbERhdGEoKSwgZXhlYy0+cHJvcGVy
dHlOYW1lcygpLnByb3RvdHlwZSwgc3RyaW5nUHJvdG90eXBlLCBSZWFkT25seSB8IERvbnRFbnVt
IHwgRG9udERlbGV0ZSk7CiAgICAgcHV0RGlyZWN0V2l0aG91dFRyYW5zaXRpb24oZXhlYy0+Z2xv
YmFsRGF0YSgpLCBleGVjLT5wcm9wZXJ0eU5hbWVzKCkubGVuZ3RoLCBqc051bWJlcigxKSwgUmVh
ZE9ubHkgfCBEb250RW51bSB8IERvbnREZWxldGUpOwogfQogCi1ib29sIFN0cmluZ0NvbnN0cnVj
dG9yOjpnZXRPd25Qcm9wZXJ0eVNsb3QoSlNDZWxsKiBjZWxsLCBFeGVjU3RhdGUqIGV4ZWMsIGNv
bnN0IElkZW50aWZpZXImIHByb3BlcnR5TmFtZSwgUHJvcGVydHlTbG90ICZzbG90KQorYm9vbCBT
dHJpbmdDb25zdHJ1Y3Rvcjo6Z2V0T3duUHJvcGVydHlTbG90KEpTQ2VsbCogY2VsbCwgRXhlY1N0
YXRlKiBleGVjLCBQcm9wZXJ0eU5hbWUgcHJvcGVydHlOYW1lLCBQcm9wZXJ0eVNsb3QgJnNsb3Qp
CiB7CiAgICAgcmV0dXJuIGdldFN0YXRpY0Z1bmN0aW9uU2xvdDxJbnRlcm5hbEZ1bmN0aW9uPihl
eGVjLCBFeGVjU3RhdGU6OnN0cmluZ0NvbnN0cnVjdG9yVGFibGUoZXhlYyksIGpzQ2FzdDxTdHJp
bmdDb25zdHJ1Y3Rvcio+KGNlbGwpLCBwcm9wZXJ0eU5hbWUsIHNsb3QpOwogfQogCi1ib29sIFN0
cmluZ0NvbnN0cnVjdG9yOjpnZXRPd25Qcm9wZXJ0eURlc2NyaXB0b3IoSlNPYmplY3QqIG9iamVj
dCwgRXhlY1N0YXRlKiBleGVjLCBjb25zdCBJZGVudGlmaWVyJiBwcm9wZXJ0eU5hbWUsIFByb3Bl
cnR5RGVzY3JpcHRvciYgZGVzY3JpcHRvcikKK2Jvb2wgU3RyaW5nQ29uc3RydWN0b3I6OmdldE93
blByb3BlcnR5RGVzY3JpcHRvcihKU09iamVjdCogb2JqZWN0LCBFeGVjU3RhdGUqIGV4ZWMsIFBy
b3BlcnR5TmFtZSBwcm9wZXJ0eU5hbWUsIFByb3BlcnR5RGVzY3JpcHRvciYgZGVzY3JpcHRvcikK
IHsKICAgICByZXR1cm4gZ2V0U3RhdGljRnVuY3Rpb25EZXNjcmlwdG9yPEludGVybmFsRnVuY3Rp
b24+KGV4ZWMsIEV4ZWNTdGF0ZTo6c3RyaW5nQ29uc3RydWN0b3JUYWJsZShleGVjKSwganNDYXN0
PFN0cmluZ0NvbnN0cnVjdG9yKj4ob2JqZWN0KSwgcHJvcGVydHlOYW1lLCBkZXNjcmlwdG9yKTsK
IH0KSW5kZXg6IFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL1N0cmluZ0NvbnN0cnVjdG9y
LmgKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PQotLS0gU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvU3RyaW5nQ29u
c3RydWN0b3IuaAkocmV2aXNpb24gMTE2NjY3KQorKysgU291cmNlL0phdmFTY3JpcHRDb3JlL3J1
bnRpbWUvU3RyaW5nQ29uc3RydWN0b3IuaAkod29ya2luZyBjb3B5KQpAQCAtNTQsOCArNTQsOCBA
QCBuYW1lc3BhY2UgSlNDIHsKICAgICAgICAgc3RhdGljIENvbnN0cnVjdFR5cGUgZ2V0Q29uc3Ry
dWN0RGF0YShKU0NlbGwqLCBDb25zdHJ1Y3REYXRhJik7CiAgICAgICAgIHN0YXRpYyBDYWxsVHlw
ZSBnZXRDYWxsRGF0YShKU0NlbGwqLCBDYWxsRGF0YSYpOwogCi0gICAgICAgIHN0YXRpYyBib29s
IGdldE93blByb3BlcnR5U2xvdChKU0NlbGwqLCBFeGVjU3RhdGUqLCBjb25zdCBJZGVudGlmaWVy
JiwgUHJvcGVydHlTbG90Jik7Ci0gICAgICAgIHN0YXRpYyBib29sIGdldE93blByb3BlcnR5RGVz
Y3JpcHRvcihKU09iamVjdCosIEV4ZWNTdGF0ZSosIGNvbnN0IElkZW50aWZpZXImLCBQcm9wZXJ0
eURlc2NyaXB0b3ImKTsKKyAgICAgICAgc3RhdGljIGJvb2wgZ2V0T3duUHJvcGVydHlTbG90KEpT
Q2VsbCosIEV4ZWNTdGF0ZSosIFByb3BlcnR5TmFtZSwgUHJvcGVydHlTbG90Jik7CisgICAgICAg
IHN0YXRpYyBib29sIGdldE93blByb3BlcnR5RGVzY3JpcHRvcihKU09iamVjdCosIEV4ZWNTdGF0
ZSosIFByb3BlcnR5TmFtZSwgUHJvcGVydHlEZXNjcmlwdG9yJik7CiAgICAgfTsKIAogfSAvLyBu
YW1lc3BhY2UgSlNDCkluZGV4OiBTb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9TdHJpbmdP
YmplY3QuY3BwCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL1N0
cmluZ09iamVjdC5jcHAJKHJldmlzaW9uIDExNjY2NykKKysrIFNvdXJjZS9KYXZhU2NyaXB0Q29y
ZS9ydW50aW1lL1N0cmluZ09iamVjdC5jcHAJKHdvcmtpbmcgY29weSkKQEAgLTQzLDcgKzQzLDcg
QEAgdm9pZCBTdHJpbmdPYmplY3Q6OmZpbmlzaENyZWF0aW9uKEpTR2xvYgogICAgIHNldEludGVy
bmFsVmFsdWUoZ2xvYmFsRGF0YSwgc3RyaW5nKTsKIH0KIAotYm9vbCBTdHJpbmdPYmplY3Q6Omdl
dE93blByb3BlcnR5U2xvdChKU0NlbGwqIGNlbGwsIEV4ZWNTdGF0ZSogZXhlYywgY29uc3QgSWRl
bnRpZmllciYgcHJvcGVydHlOYW1lLCBQcm9wZXJ0eVNsb3QmIHNsb3QpCitib29sIFN0cmluZ09i
amVjdDo6Z2V0T3duUHJvcGVydHlTbG90KEpTQ2VsbCogY2VsbCwgRXhlY1N0YXRlKiBleGVjLCBQ
cm9wZXJ0eU5hbWUgcHJvcGVydHlOYW1lLCBQcm9wZXJ0eVNsb3QmIHNsb3QpCiB7CiAgICAgU3Ry
aW5nT2JqZWN0KiB0aGlzT2JqZWN0ID0ganNDYXN0PFN0cmluZ09iamVjdCo+KGNlbGwpOwogICAg
IGlmICh0aGlzT2JqZWN0LT5pbnRlcm5hbFZhbHVlKCktPmdldFN0cmluZ1Byb3BlcnR5U2xvdChl
eGVjLCBwcm9wZXJ0eU5hbWUsIHNsb3QpKQpAQCAtNTksNyArNTksNyBAQCBib29sIFN0cmluZ09i
amVjdDo6Z2V0T3duUHJvcGVydHlTbG90QnlJCiAgICAgcmV0dXJuIEpTT2JqZWN0OjpnZXRPd25Q
cm9wZXJ0eVNsb3QodGhpc09iamVjdCwgZXhlYywgSWRlbnRpZmllcjo6ZnJvbShleGVjLCBwcm9w
ZXJ0eU5hbWUpLCBzbG90KTsKIH0KIAotYm9vbCBTdHJpbmdPYmplY3Q6OmdldE93blByb3BlcnR5
RGVzY3JpcHRvcihKU09iamVjdCogb2JqZWN0LCBFeGVjU3RhdGUqIGV4ZWMsIGNvbnN0IElkZW50
aWZpZXImIHByb3BlcnR5TmFtZSwgUHJvcGVydHlEZXNjcmlwdG9yJiBkZXNjcmlwdG9yKQorYm9v
bCBTdHJpbmdPYmplY3Q6OmdldE93blByb3BlcnR5RGVzY3JpcHRvcihKU09iamVjdCogb2JqZWN0
LCBFeGVjU3RhdGUqIGV4ZWMsIFByb3BlcnR5TmFtZSBwcm9wZXJ0eU5hbWUsIFByb3BlcnR5RGVz
Y3JpcHRvciYgZGVzY3JpcHRvcikKIHsKICAgICBTdHJpbmdPYmplY3QqIHRoaXNPYmplY3QgPSBq
c0Nhc3Q8U3RyaW5nT2JqZWN0Kj4ob2JqZWN0KTsKICAgICBpZiAodGhpc09iamVjdC0+aW50ZXJu
YWxWYWx1ZSgpLT5nZXRTdHJpbmdQcm9wZXJ0eURlc2NyaXB0b3IoZXhlYywgcHJvcGVydHlOYW1l
LCBkZXNjcmlwdG9yKSkKQEAgLTY3LDcgKzY3LDcgQEAgYm9vbCBTdHJpbmdPYmplY3Q6OmdldE93
blByb3BlcnR5RGVzY3JpcAogICAgIHJldHVybiBKU09iamVjdDo6Z2V0T3duUHJvcGVydHlEZXNj
cmlwdG9yKHRoaXNPYmplY3QsIGV4ZWMsIHByb3BlcnR5TmFtZSwgZGVzY3JpcHRvcik7CiB9CiAK
LXZvaWQgU3RyaW5nT2JqZWN0OjpwdXQoSlNDZWxsKiBjZWxsLCBFeGVjU3RhdGUqIGV4ZWMsIGNv
bnN0IElkZW50aWZpZXImIHByb3BlcnR5TmFtZSwgSlNWYWx1ZSB2YWx1ZSwgUHV0UHJvcGVydHlT
bG90JiBzbG90KQordm9pZCBTdHJpbmdPYmplY3Q6OnB1dChKU0NlbGwqIGNlbGwsIEV4ZWNTdGF0
ZSogZXhlYywgUHJvcGVydHlOYW1lIHByb3BlcnR5TmFtZSwgSlNWYWx1ZSB2YWx1ZSwgUHV0UHJv
cGVydHlTbG90JiBzbG90KQogewogICAgIGlmIChwcm9wZXJ0eU5hbWUgPT0gZXhlYy0+cHJvcGVy
dHlOYW1lcygpLmxlbmd0aCkgewogICAgICAgICBpZiAoc2xvdC5pc1N0cmljdE1vZGUoKSkKQEAg
LTc3LDcgKzc3LDcgQEAgdm9pZCBTdHJpbmdPYmplY3Q6OnB1dChKU0NlbGwqIGNlbGwsIEV4ZQog
ICAgIEpTT2JqZWN0OjpwdXQoY2VsbCwgZXhlYywgcHJvcGVydHlOYW1lLCB2YWx1ZSwgc2xvdCk7
CiB9CiAKLWJvb2wgU3RyaW5nT2JqZWN0OjpkZWZpbmVPd25Qcm9wZXJ0eShKU09iamVjdCogb2Jq
ZWN0LCBFeGVjU3RhdGUqIGV4ZWMsIGNvbnN0IElkZW50aWZpZXImIHByb3BlcnR5TmFtZSwgUHJv
cGVydHlEZXNjcmlwdG9yJiBkZXNjcmlwdG9yLCBib29sIHRocm93RXhjZXB0aW9uKQorYm9vbCBT
dHJpbmdPYmplY3Q6OmRlZmluZU93blByb3BlcnR5KEpTT2JqZWN0KiBvYmplY3QsIEV4ZWNTdGF0
ZSogZXhlYywgUHJvcGVydHlOYW1lIHByb3BlcnR5TmFtZSwgUHJvcGVydHlEZXNjcmlwdG9yJiBk
ZXNjcmlwdG9yLCBib29sIHRocm93RXhjZXB0aW9uKQogewogICAgIFN0cmluZ09iamVjdCogdGhp
c09iamVjdCA9IGpzQ2FzdDxTdHJpbmdPYmplY3QqPihvYmplY3QpOwogCkBAIC0xMTksMTUgKzEx
OSwxNiBAQCBib29sIFN0cmluZ09iamVjdDo6ZGVmaW5lT3duUHJvcGVydHkoSlNPCiAgICAgcmV0
dXJuIEJhc2U6OmRlZmluZU93blByb3BlcnR5KG9iamVjdCwgZXhlYywgcHJvcGVydHlOYW1lLCBk
ZXNjcmlwdG9yLCB0aHJvd0V4Y2VwdGlvbik7CiB9CiAKLWJvb2wgU3RyaW5nT2JqZWN0OjpkZWxl
dGVQcm9wZXJ0eShKU0NlbGwqIGNlbGwsIEV4ZWNTdGF0ZSogZXhlYywgY29uc3QgSWRlbnRpZmll
ciYgcHJvcGVydHlOYW1lKQorYm9vbCBTdHJpbmdPYmplY3Q6OmRlbGV0ZVByb3BlcnR5KEpTQ2Vs
bCogY2VsbCwgRXhlY1N0YXRlKiBleGVjLCBQcm9wZXJ0eU5hbWUgcHJvcGVydHlOYW1lKQogewog
ICAgIFN0cmluZ09iamVjdCogdGhpc09iamVjdCA9IGpzQ2FzdDxTdHJpbmdPYmplY3QqPihjZWxs
KTsKICAgICBpZiAocHJvcGVydHlOYW1lID09IGV4ZWMtPnByb3BlcnR5TmFtZXMoKS5sZW5ndGgp
CiAgICAgICAgIHJldHVybiBmYWxzZTsKLSAgICBib29sIGlzU3RyaWN0VUludDMyOwotICAgIHVu
c2lnbmVkIGkgPSBwcm9wZXJ0eU5hbWUudG9VSW50MzIoaXNTdHJpY3RVSW50MzIpOwotICAgIGlm
IChpc1N0cmljdFVJbnQzMiAmJiB0aGlzT2JqZWN0LT5pbnRlcm5hbFZhbHVlKCktPmNhbkdldElu
ZGV4KGkpKQorICAgIHVuc2lnbmVkIGkgPSBwcm9wZXJ0eU5hbWUuYXNJbmRleCgpOworICAgIGlm
ICh0aGlzT2JqZWN0LT5pbnRlcm5hbFZhbHVlKCktPmNhbkdldEluZGV4KGkpKSB7CisgICAgICAg
IEFTU0VSVChpICE9IFByb3BlcnR5TmFtZTo6Tm90QW5JbmRleCk7IC8vIE5vIG5lZWQgZm9yIGFu
IGV4cGxpY2l0IGNoZWNrLCB0aGUgYWJvdmUgdGVzdCB3b3VsZCBhbHdheXMgZmFpbCEKICAgICAg
ICAgcmV0dXJuIGZhbHNlOworICAgIH0KICAgICByZXR1cm4gSlNPYmplY3Q6OmRlbGV0ZVByb3Bl
cnR5KHRoaXNPYmplY3QsIGV4ZWMsIHByb3BlcnR5TmFtZSk7CiB9CiAKSW5kZXg6IFNvdXJjZS9K
YXZhU2NyaXB0Q29yZS9ydW50aW1lL1N0cmluZ09iamVjdC5oCj09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJj
ZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL1N0cmluZ09iamVjdC5oCShyZXZpc2lvbiAxMTY2Njcp
CisrKyBTb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9TdHJpbmdPYmplY3QuaAkod29ya2lu
ZyBjb3B5KQpAQCAtNDUsMTUgKzQ1LDE1IEBAIG5hbWVzcGFjZSBKU0MgewogICAgICAgICB9CiAg
ICAgICAgIHN0YXRpYyBTdHJpbmdPYmplY3QqIGNyZWF0ZShFeGVjU3RhdGUqLCBKU0dsb2JhbE9i
amVjdCosIEpTU3RyaW5nKik7CiAKLSAgICAgICAgc3RhdGljIGJvb2wgZ2V0T3duUHJvcGVydHlT
bG90KEpTQ2VsbCosIEV4ZWNTdGF0ZSosIGNvbnN0IElkZW50aWZpZXImIHByb3BlcnR5TmFtZSwg
UHJvcGVydHlTbG90Jik7CisgICAgICAgIHN0YXRpYyBib29sIGdldE93blByb3BlcnR5U2xvdChK
U0NlbGwqLCBFeGVjU3RhdGUqLCBQcm9wZXJ0eU5hbWUsIFByb3BlcnR5U2xvdCYpOwogICAgICAg
ICBzdGF0aWMgYm9vbCBnZXRPd25Qcm9wZXJ0eVNsb3RCeUluZGV4KEpTQ2VsbCosIEV4ZWNTdGF0
ZSosIHVuc2lnbmVkIHByb3BlcnR5TmFtZSwgUHJvcGVydHlTbG90Jik7Ci0gICAgICAgIHN0YXRp
YyBib29sIGdldE93blByb3BlcnR5RGVzY3JpcHRvcihKU09iamVjdCosIEV4ZWNTdGF0ZSosIGNv
bnN0IElkZW50aWZpZXImLCBQcm9wZXJ0eURlc2NyaXB0b3ImKTsKKyAgICAgICAgc3RhdGljIGJv
b2wgZ2V0T3duUHJvcGVydHlEZXNjcmlwdG9yKEpTT2JqZWN0KiwgRXhlY1N0YXRlKiwgUHJvcGVy
dHlOYW1lLCBQcm9wZXJ0eURlc2NyaXB0b3ImKTsKIAotICAgICAgICBzdGF0aWMgdm9pZCBwdXQo
SlNDZWxsKiwgRXhlY1N0YXRlKiwgY29uc3QgSWRlbnRpZmllciYgcHJvcGVydHlOYW1lLCBKU1Zh
bHVlLCBQdXRQcm9wZXJ0eVNsb3QmKTsKKyAgICAgICAgc3RhdGljIHZvaWQgcHV0KEpTQ2VsbCos
IEV4ZWNTdGF0ZSosIFByb3BlcnR5TmFtZSwgSlNWYWx1ZSwgUHV0UHJvcGVydHlTbG90Jik7CiAK
LSAgICAgICAgc3RhdGljIGJvb2wgZGVsZXRlUHJvcGVydHkoSlNDZWxsKiwgRXhlY1N0YXRlKiwg
Y29uc3QgSWRlbnRpZmllciYgcHJvcGVydHlOYW1lKTsKKyAgICAgICAgc3RhdGljIGJvb2wgZGVs
ZXRlUHJvcGVydHkoSlNDZWxsKiwgRXhlY1N0YXRlKiwgUHJvcGVydHlOYW1lKTsKICAgICAgICAg
c3RhdGljIHZvaWQgZ2V0T3duUHJvcGVydHlOYW1lcyhKU09iamVjdCosIEV4ZWNTdGF0ZSosIFBy
b3BlcnR5TmFtZUFycmF5JiwgRW51bWVyYXRpb25Nb2RlKTsKLSAgICAgICAgc3RhdGljIGJvb2wg
ZGVmaW5lT3duUHJvcGVydHkoSlNPYmplY3QqLCBFeGVjU3RhdGUqLCBjb25zdCBJZGVudGlmaWVy
JiBwcm9wZXJ0eU5hbWUsIFByb3BlcnR5RGVzY3JpcHRvciYsIGJvb2wgc2hvdWxkVGhyb3cpOwor
ICAgICAgICBzdGF0aWMgYm9vbCBkZWZpbmVPd25Qcm9wZXJ0eShKU09iamVjdCosIEV4ZWNTdGF0
ZSosIFByb3BlcnR5TmFtZSwgUHJvcGVydHlEZXNjcmlwdG9yJiwgYm9vbCBzaG91bGRUaHJvdyk7
CiAKICAgICAgICAgc3RhdGljIGNvbnN0IEpTX0VYUE9SVERBVEEgQ2xhc3NJbmZvIHNfaW5mbzsK
IApJbmRleDogU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvU3RyaW5nUHJvdG90eXBlLmNw
cAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09Ci0tLSBTb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9TdHJpbmdQcm90
b3R5cGUuY3BwCShyZXZpc2lvbiAxMTY2NjcpCisrKyBTb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVu
dGltZS9TdHJpbmdQcm90b3R5cGUuY3BwCSh3b3JraW5nIGNvcHkpCkBAIC0xNDcsMTIgKzE0Nywx
MiBAQCB2b2lkIFN0cmluZ1Byb3RvdHlwZTo6ZmluaXNoQ3JlYXRpb24oRXhlCiAgICAgcHV0RGly
ZWN0V2l0aG91dFRyYW5zaXRpb24oZXhlYy0+Z2xvYmFsRGF0YSgpLCBleGVjLT5wcm9wZXJ0eU5h
bWVzKCkubGVuZ3RoLCBqc051bWJlcigwKSwgRG9udERlbGV0ZSB8IFJlYWRPbmx5IHwgRG9udEVu
dW0pOwogfQogCi1ib29sIFN0cmluZ1Byb3RvdHlwZTo6Z2V0T3duUHJvcGVydHlTbG90KEpTQ2Vs
bCogY2VsbCwgRXhlY1N0YXRlKiBleGVjLCBjb25zdCBJZGVudGlmaWVyJiBwcm9wZXJ0eU5hbWUs
IFByb3BlcnR5U2xvdCAmc2xvdCkKK2Jvb2wgU3RyaW5nUHJvdG90eXBlOjpnZXRPd25Qcm9wZXJ0
eVNsb3QoSlNDZWxsKiBjZWxsLCBFeGVjU3RhdGUqIGV4ZWMsIFByb3BlcnR5TmFtZSBwcm9wZXJ0
eU5hbWUsIFByb3BlcnR5U2xvdCAmc2xvdCkKIHsKICAgICByZXR1cm4gZ2V0U3RhdGljRnVuY3Rp
b25TbG90PFN0cmluZ09iamVjdD4oZXhlYywgRXhlY1N0YXRlOjpzdHJpbmdUYWJsZShleGVjKSwg
anNDYXN0PFN0cmluZ1Byb3RvdHlwZSo+KGNlbGwpLCBwcm9wZXJ0eU5hbWUsIHNsb3QpOwogfQog
Ci1ib29sIFN0cmluZ1Byb3RvdHlwZTo6Z2V0T3duUHJvcGVydHlEZXNjcmlwdG9yKEpTT2JqZWN0
KiBvYmplY3QsIEV4ZWNTdGF0ZSogZXhlYywgY29uc3QgSWRlbnRpZmllciYgcHJvcGVydHlOYW1l
LCBQcm9wZXJ0eURlc2NyaXB0b3ImIGRlc2NyaXB0b3IpCitib29sIFN0cmluZ1Byb3RvdHlwZTo6
Z2V0T3duUHJvcGVydHlEZXNjcmlwdG9yKEpTT2JqZWN0KiBvYmplY3QsIEV4ZWNTdGF0ZSogZXhl
YywgUHJvcGVydHlOYW1lIHByb3BlcnR5TmFtZSwgUHJvcGVydHlEZXNjcmlwdG9yJiBkZXNjcmlw
dG9yKQogewogICAgIHJldHVybiBnZXRTdGF0aWNGdW5jdGlvbkRlc2NyaXB0b3I8U3RyaW5nT2Jq
ZWN0PihleGVjLCBFeGVjU3RhdGU6OnN0cmluZ1RhYmxlKGV4ZWMpLCBqc0Nhc3Q8U3RyaW5nUHJv
dG90eXBlKj4ob2JqZWN0KSwgcHJvcGVydHlOYW1lLCBkZXNjcmlwdG9yKTsKIH0KSW5kZXg6IFNv
dXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL1N0cmluZ1Byb3RvdHlwZS5oCj09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0K
LS0tIFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL1N0cmluZ1Byb3RvdHlwZS5oCShyZXZp
c2lvbiAxMTY2NjcpCisrKyBTb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9TdHJpbmdQcm90
b3R5cGUuaAkod29ya2luZyBjb3B5KQpAQCAtNDIsOCArNDIsOCBAQCBuYW1lc3BhY2UgSlNDIHsK
ICAgICAgICAgICAgIHJldHVybiBwcm90b3R5cGU7CiAgICAgICAgIH0KIAotICAgICAgICBzdGF0
aWMgYm9vbCBnZXRPd25Qcm9wZXJ0eVNsb3QoSlNDZWxsKiwgRXhlY1N0YXRlKiwgY29uc3QgSWRl
bnRpZmllciYgcHJvcGVydHlOYW1lLCBQcm9wZXJ0eVNsb3QmKTsKLSAgICAgICAgc3RhdGljIGJv
b2wgZ2V0T3duUHJvcGVydHlEZXNjcmlwdG9yKEpTT2JqZWN0KiwgRXhlY1N0YXRlKiwgY29uc3Qg
SWRlbnRpZmllciYsIFByb3BlcnR5RGVzY3JpcHRvciYpOworICAgICAgICBzdGF0aWMgYm9vbCBn
ZXRPd25Qcm9wZXJ0eVNsb3QoSlNDZWxsKiwgRXhlY1N0YXRlKiwgUHJvcGVydHlOYW1lLCBQcm9w
ZXJ0eVNsb3QmKTsKKyAgICAgICAgc3RhdGljIGJvb2wgZ2V0T3duUHJvcGVydHlEZXNjcmlwdG9y
KEpTT2JqZWN0KiwgRXhlY1N0YXRlKiwgUHJvcGVydHlOYW1lLCBQcm9wZXJ0eURlc2NyaXB0b3Im
KTsKIAogICAgICAgICBzdGF0aWMgU3RydWN0dXJlKiBjcmVhdGVTdHJ1Y3R1cmUoSlNHbG9iYWxE
YXRhJiBnbG9iYWxEYXRhLCBKU0dsb2JhbE9iamVjdCogZ2xvYmFsT2JqZWN0LCBKU1ZhbHVlIHBy
b3RvdHlwZSkKICAgICAgICAgewpJbmRleDogU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUv
U3RydWN0dXJlLmNwcAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGlt
ZS9TdHJ1Y3R1cmUuY3BwCShyZXZpc2lvbiAxMTY2NjcpCisrKyBTb3VyY2UvSmF2YVNjcmlwdENv
cmUvcnVudGltZS9TdHJ1Y3R1cmUuY3BwCSh3b3JraW5nIGNvcHkpCkBAIC0yNiw3ICsyNiw2IEBA
CiAjaW5jbHVkZSAiY29uZmlnLmgiCiAjaW5jbHVkZSAiU3RydWN0dXJlLmgiCiAKLSNpbmNsdWRl
ICJJZGVudGlmaWVyLmgiCiAjaW5jbHVkZSAiSlNPYmplY3QuaCIKICNpbmNsdWRlICJKU1Byb3Bl
cnR5TmFtZUl0ZXJhdG9yLmgiCiAjaW5jbHVkZSAiTG9va3VwLmgiCkBAIC0yNjcsNyArMjY2LDcg
QEAgdm9pZCBTdHJ1Y3R1cmU6Omdyb3dQcm9wZXJ0eVN0b3JhZ2VDYXBhYwogICAgICAgICBtX3By
b3BlcnR5U3RvcmFnZUNhcGFjaXR5ICo9IDI7CiB9CiAKLXZvaWQgU3RydWN0dXJlOjpkZXNwZWNp
ZnlEaWN0aW9uYXJ5RnVuY3Rpb24oSlNHbG9iYWxEYXRhJiBnbG9iYWxEYXRhLCBjb25zdCBJZGVu
dGlmaWVyJiBwcm9wZXJ0eU5hbWUpCit2b2lkIFN0cnVjdHVyZTo6ZGVzcGVjaWZ5RGljdGlvbmFy
eUZ1bmN0aW9uKEpTR2xvYmFsRGF0YSYgZ2xvYmFsRGF0YSwgUHJvcGVydHlOYW1lIHByb3BlcnR5
TmFtZSkKIHsKICAgICBTdHJpbmdJbXBsKiByZXAgPSBwcm9wZXJ0eU5hbWUuaW1wbCgpOwogCkBA
IC0yODEsNyArMjgwLDcgQEAgdm9pZCBTdHJ1Y3R1cmU6OmRlc3BlY2lmeURpY3Rpb25hcnlGdW5j
dAogICAgIGVudHJ5LT5zcGVjaWZpY1ZhbHVlLmNsZWFyKCk7CiB9CiAKLVN0cnVjdHVyZSogU3Ry
dWN0dXJlOjphZGRQcm9wZXJ0eVRyYW5zaXRpb25Ub0V4aXN0aW5nU3RydWN0dXJlKFN0cnVjdHVy
ZSogc3RydWN0dXJlLCBjb25zdCBJZGVudGlmaWVyJiBwcm9wZXJ0eU5hbWUsIHVuc2lnbmVkIGF0
dHJpYnV0ZXMsIEpTQ2VsbCogc3BlY2lmaWNWYWx1ZSwgc2l6ZV90JiBvZmZzZXQpCitTdHJ1Y3R1
cmUqIFN0cnVjdHVyZTo6YWRkUHJvcGVydHlUcmFuc2l0aW9uVG9FeGlzdGluZ1N0cnVjdHVyZShT
dHJ1Y3R1cmUqIHN0cnVjdHVyZSwgUHJvcGVydHlOYW1lIHByb3BlcnR5TmFtZSwgdW5zaWduZWQg
YXR0cmlidXRlcywgSlNDZWxsKiBzcGVjaWZpY1ZhbHVlLCBzaXplX3QmIG9mZnNldCkKIHsKICAg
ICBBU1NFUlQoIXN0cnVjdHVyZS0+aXNEaWN0aW9uYXJ5KCkpOwogICAgIEFTU0VSVChzdHJ1Y3R1
cmUtPmlzT2JqZWN0KCkpOwpAQCAtMjk4LDcgKzI5Nyw3IEBAIFN0cnVjdHVyZSogU3RydWN0dXJl
OjphZGRQcm9wZXJ0eVRyYW5zaXQKICAgICByZXR1cm4gMDsKIH0KIAotU3RydWN0dXJlKiBTdHJ1
Y3R1cmU6OmFkZFByb3BlcnR5VHJhbnNpdGlvbihKU0dsb2JhbERhdGEmIGdsb2JhbERhdGEsIFN0
cnVjdHVyZSogc3RydWN0dXJlLCBjb25zdCBJZGVudGlmaWVyJiBwcm9wZXJ0eU5hbWUsIHVuc2ln
bmVkIGF0dHJpYnV0ZXMsIEpTQ2VsbCogc3BlY2lmaWNWYWx1ZSwgc2l6ZV90JiBvZmZzZXQpCitT
dHJ1Y3R1cmUqIFN0cnVjdHVyZTo6YWRkUHJvcGVydHlUcmFuc2l0aW9uKEpTR2xvYmFsRGF0YSYg
Z2xvYmFsRGF0YSwgU3RydWN0dXJlKiBzdHJ1Y3R1cmUsIFByb3BlcnR5TmFtZSBwcm9wZXJ0eU5h
bWUsIHVuc2lnbmVkIGF0dHJpYnV0ZXMsIEpTQ2VsbCogc3BlY2lmaWNWYWx1ZSwgc2l6ZV90JiBv
ZmZzZXQpCiB7CiAgICAgLy8gSWYgd2UgaGF2ZSBhIHNwZWNpZmljIGZ1bmN0aW9uLCB3ZSBtYXkg
aGF2ZSBnb3QgdG8gdGhpcyBwb2ludCBpZiB0aGVyZSBpcwogICAgIC8vIGFscmVhZHkgYSB0cmFu
c2l0aW9uIHdpdGggdGhlIGNvcnJlY3QgcHJvcGVydHkgbmFtZSBhbmQgYXR0cmlidXRlcywgYnV0
CkBAIC0zNTUsNyArMzU0LDcgQEAgU3RydWN0dXJlKiBTdHJ1Y3R1cmU6OmFkZFByb3BlcnR5VHJh
bnNpdAogICAgIHJldHVybiB0cmFuc2l0aW9uOwogfQogCi1TdHJ1Y3R1cmUqIFN0cnVjdHVyZTo6
cmVtb3ZlUHJvcGVydHlUcmFuc2l0aW9uKEpTR2xvYmFsRGF0YSYgZ2xvYmFsRGF0YSwgU3RydWN0
dXJlKiBzdHJ1Y3R1cmUsIGNvbnN0IElkZW50aWZpZXImIHByb3BlcnR5TmFtZSwgc2l6ZV90JiBv
ZmZzZXQpCitTdHJ1Y3R1cmUqIFN0cnVjdHVyZTo6cmVtb3ZlUHJvcGVydHlUcmFuc2l0aW9uKEpT
R2xvYmFsRGF0YSYgZ2xvYmFsRGF0YSwgU3RydWN0dXJlKiBzdHJ1Y3R1cmUsIFByb3BlcnR5TmFt
ZSBwcm9wZXJ0eU5hbWUsIHNpemVfdCYgb2Zmc2V0KQogewogICAgIEFTU0VSVCghc3RydWN0dXJl
LT5pc1VuY2FjaGVhYmxlRGljdGlvbmFyeSgpKTsKIApAQCAtMzgxLDcgKzM4MCw3IEBAIFN0cnVj
dHVyZSogU3RydWN0dXJlOjpjaGFuZ2VQcm90b3R5cGVUcmEKICAgICByZXR1cm4gdHJhbnNpdGlv
bjsKIH0KIAotU3RydWN0dXJlKiBTdHJ1Y3R1cmU6OmRlc3BlY2lmeUZ1bmN0aW9uVHJhbnNpdGlv
bihKU0dsb2JhbERhdGEmIGdsb2JhbERhdGEsIFN0cnVjdHVyZSogc3RydWN0dXJlLCBjb25zdCBJ
ZGVudGlmaWVyJiByZXBsYWNlRnVuY3Rpb24pCitTdHJ1Y3R1cmUqIFN0cnVjdHVyZTo6ZGVzcGVj
aWZ5RnVuY3Rpb25UcmFuc2l0aW9uKEpTR2xvYmFsRGF0YSYgZ2xvYmFsRGF0YSwgU3RydWN0dXJl
KiBzdHJ1Y3R1cmUsIFByb3BlcnR5TmFtZSByZXBsYWNlRnVuY3Rpb24pCiB7CiAgICAgQVNTRVJU
KHN0cnVjdHVyZS0+bV9zcGVjaWZpY0Z1bmN0aW9uVGhyYXNoQ291bnQgPCBtYXhTcGVjaWZpY0Z1
bmN0aW9uVGhyYXNoQ291bnQpOwogICAgIFN0cnVjdHVyZSogdHJhbnNpdGlvbiA9IGNyZWF0ZShn
bG9iYWxEYXRhLCBzdHJ1Y3R1cmUpOwpAQCAtNDA0LDcgKzQwMyw3IEBAIFN0cnVjdHVyZSogU3Ry
dWN0dXJlOjpkZXNwZWNpZnlGdW5jdGlvblQKICAgICByZXR1cm4gdHJhbnNpdGlvbjsKIH0KIAot
U3RydWN0dXJlKiBTdHJ1Y3R1cmU6OmF0dHJpYnV0ZUNoYW5nZVRyYW5zaXRpb24oSlNHbG9iYWxE
YXRhJiBnbG9iYWxEYXRhLCBTdHJ1Y3R1cmUqIHN0cnVjdHVyZSwgY29uc3QgSWRlbnRpZmllciYg
cHJvcGVydHlOYW1lLCB1bnNpZ25lZCBhdHRyaWJ1dGVzKQorU3RydWN0dXJlKiBTdHJ1Y3R1cmU6
OmF0dHJpYnV0ZUNoYW5nZVRyYW5zaXRpb24oSlNHbG9iYWxEYXRhJiBnbG9iYWxEYXRhLCBTdHJ1
Y3R1cmUqIHN0cnVjdHVyZSwgUHJvcGVydHlOYW1lIHByb3BlcnR5TmFtZSwgdW5zaWduZWQgYXR0
cmlidXRlcykKIHsKICAgICBpZiAoIXN0cnVjdHVyZS0+aXNVbmNhY2hlYWJsZURpY3Rpb25hcnko
KSkgewogICAgICAgICBTdHJ1Y3R1cmUqIHRyYW5zaXRpb24gPSBjcmVhdGUoZ2xvYmFsRGF0YSwg
c3RydWN0dXJlKTsKQEAgLTU2Miw3ICs1NjEsNyBAQCBTdHJ1Y3R1cmUqIFN0cnVjdHVyZTo6Zmxh
dHRlbkRpY3Rpb25hcnlTCiAgICAgcmV0dXJuIHRoaXM7CiB9CiAKLXNpemVfdCBTdHJ1Y3R1cmU6
OmFkZFByb3BlcnR5V2l0aG91dFRyYW5zaXRpb24oSlNHbG9iYWxEYXRhJiBnbG9iYWxEYXRhLCBj
b25zdCBJZGVudGlmaWVyJiBwcm9wZXJ0eU5hbWUsIHVuc2lnbmVkIGF0dHJpYnV0ZXMsIEpTQ2Vs
bCogc3BlY2lmaWNWYWx1ZSkKK3NpemVfdCBTdHJ1Y3R1cmU6OmFkZFByb3BlcnR5V2l0aG91dFRy
YW5zaXRpb24oSlNHbG9iYWxEYXRhJiBnbG9iYWxEYXRhLCBQcm9wZXJ0eU5hbWUgcHJvcGVydHlO
YW1lLCB1bnNpZ25lZCBhdHRyaWJ1dGVzLCBKU0NlbGwqIHNwZWNpZmljVmFsdWUpCiB7CiAgICAg
QVNTRVJUKCFtX2VudW1lcmF0aW9uQ2FjaGUpOwogCkBAIC01NzksNyArNTc4LDcgQEAgc2l6ZV90
IFN0cnVjdHVyZTo6YWRkUHJvcGVydHlXaXRob3V0VHJhbgogICAgIHJldHVybiBvZmZzZXQ7CiB9
CiAKLXNpemVfdCBTdHJ1Y3R1cmU6OnJlbW92ZVByb3BlcnR5V2l0aG91dFRyYW5zaXRpb24oSlNH
bG9iYWxEYXRhJiBnbG9iYWxEYXRhLCBjb25zdCBJZGVudGlmaWVyJiBwcm9wZXJ0eU5hbWUpCitz
aXplX3QgU3RydWN0dXJlOjpyZW1vdmVQcm9wZXJ0eVdpdGhvdXRUcmFuc2l0aW9uKEpTR2xvYmFs
RGF0YSYgZ2xvYmFsRGF0YSwgUHJvcGVydHlOYW1lIHByb3BlcnR5TmFtZSkKIHsKICAgICBBU1NF
UlQoaXNVbmNhY2hlYWJsZURpY3Rpb25hcnkoKSk7CiAgICAgQVNTRVJUKCFtX2VudW1lcmF0aW9u
Q2FjaGUpOwpAQCAtNjM2LDEzICs2MzUsMTUgQEAgUGFzc093blB0cjxQcm9wZXJ0eVRhYmxlPiBT
dHJ1Y3R1cmU6OmNvcAogICAgIHJldHVybiBhZG9wdFB0cihtX3Byb3BlcnR5VGFibGUgPyBuZXcg
UHJvcGVydHlUYWJsZShnbG9iYWxEYXRhLCBvd25lciwgKm1fcHJvcGVydHlUYWJsZSkgOiBuZXcg
UHJvcGVydHlUYWJsZShtX29mZnNldCA9PSBub09mZnNldCA/IDAgOiBtX29mZnNldCkpOwogfQog
Ci1zaXplX3QgU3RydWN0dXJlOjpnZXQoSlNHbG9iYWxEYXRhJiBnbG9iYWxEYXRhLCBTdHJpbmdJ
bXBsKiBwcm9wZXJ0eU5hbWUsIHVuc2lnbmVkJiBhdHRyaWJ1dGVzLCBKU0NlbGwqJiBzcGVjaWZp
Y1ZhbHVlKQorc2l6ZV90IFN0cnVjdHVyZTo6Z2V0KEpTR2xvYmFsRGF0YSYgZ2xvYmFsRGF0YSwg
UHJvcGVydHlOYW1lIHByb3BlcnR5TmFtZSwgdW5zaWduZWQmIGF0dHJpYnV0ZXMsIEpTQ2VsbCom
IHNwZWNpZmljVmFsdWUpCiB7CisgICAgQVNTRVJUKHN0cnVjdHVyZSgpLT5jbGFzc0luZm8oKSA9
PSAmc19pbmZvKTsKKwogICAgIG1hdGVyaWFsaXplUHJvcGVydHlNYXBJZk5lY2Vzc2FyeShnbG9i
YWxEYXRhKTsKICAgICBpZiAoIW1fcHJvcGVydHlUYWJsZSkKICAgICAgICAgcmV0dXJuIFdURjo6
bm90Rm91bmQ7CiAKLSAgICBQcm9wZXJ0eU1hcEVudHJ5KiBlbnRyeSA9IG1fcHJvcGVydHlUYWJs
ZS0+ZmluZChwcm9wZXJ0eU5hbWUpLmZpcnN0OworICAgIFByb3BlcnR5TWFwRW50cnkqIGVudHJ5
ID0gbV9wcm9wZXJ0eVRhYmxlLT5maW5kKHByb3BlcnR5TmFtZS5pbXBsKCkpLmZpcnN0OwogICAg
IGlmICghZW50cnkpCiAgICAgICAgIHJldHVybiBXVEY6Om5vdEZvdW5kOwogCkBAIC02NTEsMTMg
KzY1MiwxMiBAQCBzaXplX3QgU3RydWN0dXJlOjpnZXQoSlNHbG9iYWxEYXRhJiBnbG9iCiAgICAg
cmV0dXJuIGVudHJ5LT5vZmZzZXQ7CiB9CiAKLWJvb2wgU3RydWN0dXJlOjpkZXNwZWNpZnlGdW5j
dGlvbihKU0dsb2JhbERhdGEmIGdsb2JhbERhdGEsIGNvbnN0IElkZW50aWZpZXImIHByb3BlcnR5
TmFtZSkKK2Jvb2wgU3RydWN0dXJlOjpkZXNwZWNpZnlGdW5jdGlvbihKU0dsb2JhbERhdGEmIGds
b2JhbERhdGEsIFByb3BlcnR5TmFtZSBwcm9wZXJ0eU5hbWUpCiB7CiAgICAgbWF0ZXJpYWxpemVQ
cm9wZXJ0eU1hcElmTmVjZXNzYXJ5KGdsb2JhbERhdGEpOwogICAgIGlmICghbV9wcm9wZXJ0eVRh
YmxlKQogICAgICAgICByZXR1cm4gZmFsc2U7CiAKLSAgICBBU1NFUlQoIXByb3BlcnR5TmFtZS5p
c051bGwoKSk7CiAgICAgUHJvcGVydHlNYXBFbnRyeSogZW50cnkgPSBtX3Byb3BlcnR5VGFibGUt
PmZpbmQocHJvcGVydHlOYW1lLmltcGwoKSkuZmlyc3Q7CiAgICAgaWYgKCFlbnRyeSkKICAgICAg
ICAgcmV0dXJuIGZhbHNlOwpAQCAtNjc4LDkgKzY3OCw4IEBAIHZvaWQgU3RydWN0dXJlOjpkZXNw
ZWNpZnlBbGxGdW5jdGlvbnMoSlMKICAgICAgICAgaXRlci0+c3BlY2lmaWNWYWx1ZS5jbGVhcigp
OwogfQogCi1zaXplX3QgU3RydWN0dXJlOjpwdXRTcGVjaWZpY1ZhbHVlKEpTR2xvYmFsRGF0YSYg
Z2xvYmFsRGF0YSwgY29uc3QgSWRlbnRpZmllciYgcHJvcGVydHlOYW1lLCB1bnNpZ25lZCBhdHRy
aWJ1dGVzLCBKU0NlbGwqIHNwZWNpZmljVmFsdWUpCitzaXplX3QgU3RydWN0dXJlOjpwdXRTcGVj
aWZpY1ZhbHVlKEpTR2xvYmFsRGF0YSYgZ2xvYmFsRGF0YSwgUHJvcGVydHlOYW1lIHByb3BlcnR5
TmFtZSwgdW5zaWduZWQgYXR0cmlidXRlcywgSlNDZWxsKiBzcGVjaWZpY1ZhbHVlKQogewotICAg
IEFTU0VSVCghcHJvcGVydHlOYW1lLmlzTnVsbCgpKTsKICAgICBBU1NFUlQoZ2V0KGdsb2JhbERh
dGEsIHByb3BlcnR5TmFtZSkgPT0gbm90Rm91bmQpOwogCiAgICAgY2hlY2tDb25zaXN0ZW5jeSgp
OwpAQCAtNzA1LDEwICs3MDQsOCBAQCBzaXplX3QgU3RydWN0dXJlOjpwdXRTcGVjaWZpY1ZhbHVl
KEpTR2xvCiAgICAgcmV0dXJuIG5ld09mZnNldDsKIH0KIAotc2l6ZV90IFN0cnVjdHVyZTo6cmVt
b3ZlKGNvbnN0IElkZW50aWZpZXImIHByb3BlcnR5TmFtZSkKK3NpemVfdCBTdHJ1Y3R1cmU6OnJl
bW92ZShQcm9wZXJ0eU5hbWUgcHJvcGVydHlOYW1lKQogewotICAgIEFTU0VSVCghcHJvcGVydHlO
YW1lLmlzTnVsbCgpKTsKLQogICAgIGNoZWNrQ29uc2lzdGVuY3koKTsKIAogICAgIFN0cmluZ0lt
cGwqIHJlcCA9IHByb3BlcnR5TmFtZS5pbXBsKCk7CkluZGV4OiBTb3VyY2UvSmF2YVNjcmlwdENv
cmUvcnVudGltZS9TdHJ1Y3R1cmUuaAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvSmF2YVNjcmlwdENv
cmUvcnVudGltZS9TdHJ1Y3R1cmUuaAkocmV2aXNpb24gMTE2NjY3KQorKysgU291cmNlL0phdmFT
Y3JpcHRDb3JlL3J1bnRpbWUvU3RydWN0dXJlLmgJKHdvcmtpbmcgY29weSkKQEAgLTI3LDExICsy
NywxMSBAQAogI2RlZmluZSBTdHJ1Y3R1cmVfaAogCiAjaW5jbHVkZSAiQ2xhc3NJbmZvLmgiCi0j
aW5jbHVkZSAiSWRlbnRpZmllci5oIgogI2luY2x1ZGUgIkpTQ2VsbC5oIgogI2luY2x1ZGUgIkpT
VHlwZS5oIgogI2luY2x1ZGUgIkpTVmFsdWUuaCIKICNpbmNsdWRlICJQcm9wZXJ0eU1hcEhhc2hU
YWJsZS5oIgorI2luY2x1ZGUgIlByb3BlcnR5TmFtZS5oIgogI2luY2x1ZGUgIlByb3BlcnR5TmFt
ZUFycmF5LmgiCiAjaW5jbHVkZSAiUHJvdGVjdC5oIgogI2luY2x1ZGUgIlN0cnVjdHVyZVRyYW5z
aXRpb25UYWJsZS5oIgpAQCAtODYsMTIgKzg2LDEyIEBAIG5hbWVzcGFjZSBKU0MgewogICAgIHB1
YmxpYzoKICAgICAgICAgc3RhdGljIHZvaWQgZHVtcFN0YXRpc3RpY3MoKTsKIAotICAgICAgICBK
U19FWFBPUlRfUFJJVkFURSBzdGF0aWMgU3RydWN0dXJlKiBhZGRQcm9wZXJ0eVRyYW5zaXRpb24o
SlNHbG9iYWxEYXRhJiwgU3RydWN0dXJlKiwgY29uc3QgSWRlbnRpZmllciYgcHJvcGVydHlOYW1l
LCB1bnNpZ25lZCBhdHRyaWJ1dGVzLCBKU0NlbGwqIHNwZWNpZmljVmFsdWUsIHNpemVfdCYgb2Zm
c2V0KTsKLSAgICAgICAgSlNfRVhQT1JUX1BSSVZBVEUgc3RhdGljIFN0cnVjdHVyZSogYWRkUHJv
cGVydHlUcmFuc2l0aW9uVG9FeGlzdGluZ1N0cnVjdHVyZShTdHJ1Y3R1cmUqLCBjb25zdCBJZGVu
dGlmaWVyJiBwcm9wZXJ0eU5hbWUsIHVuc2lnbmVkIGF0dHJpYnV0ZXMsIEpTQ2VsbCogc3BlY2lm
aWNWYWx1ZSwgc2l6ZV90JiBvZmZzZXQpOwotICAgICAgICBzdGF0aWMgU3RydWN0dXJlKiByZW1v
dmVQcm9wZXJ0eVRyYW5zaXRpb24oSlNHbG9iYWxEYXRhJiwgU3RydWN0dXJlKiwgY29uc3QgSWRl
bnRpZmllciYgcHJvcGVydHlOYW1lLCBzaXplX3QmIG9mZnNldCk7CisgICAgICAgIEpTX0VYUE9S
VF9QUklWQVRFIHN0YXRpYyBTdHJ1Y3R1cmUqIGFkZFByb3BlcnR5VHJhbnNpdGlvbihKU0dsb2Jh
bERhdGEmLCBTdHJ1Y3R1cmUqLCBQcm9wZXJ0eU5hbWUsIHVuc2lnbmVkIGF0dHJpYnV0ZXMsIEpT
Q2VsbCogc3BlY2lmaWNWYWx1ZSwgc2l6ZV90JiBvZmZzZXQpOworICAgICAgICBKU19FWFBPUlRf
UFJJVkFURSBzdGF0aWMgU3RydWN0dXJlKiBhZGRQcm9wZXJ0eVRyYW5zaXRpb25Ub0V4aXN0aW5n
U3RydWN0dXJlKFN0cnVjdHVyZSosIFByb3BlcnR5TmFtZSwgdW5zaWduZWQgYXR0cmlidXRlcywg
SlNDZWxsKiBzcGVjaWZpY1ZhbHVlLCBzaXplX3QmIG9mZnNldCk7CisgICAgICAgIHN0YXRpYyBT
dHJ1Y3R1cmUqIHJlbW92ZVByb3BlcnR5VHJhbnNpdGlvbihKU0dsb2JhbERhdGEmLCBTdHJ1Y3R1
cmUqLCBQcm9wZXJ0eU5hbWUsIHNpemVfdCYgb2Zmc2V0KTsKICAgICAgICAgSlNfRVhQT1JUX1BS
SVZBVEUgc3RhdGljIFN0cnVjdHVyZSogY2hhbmdlUHJvdG90eXBlVHJhbnNpdGlvbihKU0dsb2Jh
bERhdGEmLCBTdHJ1Y3R1cmUqLCBKU1ZhbHVlIHByb3RvdHlwZSk7Ci0gICAgICAgIEpTX0VYUE9S
VF9QUklWQVRFIHN0YXRpYyBTdHJ1Y3R1cmUqIGRlc3BlY2lmeUZ1bmN0aW9uVHJhbnNpdGlvbihK
U0dsb2JhbERhdGEmLCBTdHJ1Y3R1cmUqLCBjb25zdCBJZGVudGlmaWVyJik7Ci0gICAgICAgIHN0
YXRpYyBTdHJ1Y3R1cmUqIGF0dHJpYnV0ZUNoYW5nZVRyYW5zaXRpb24oSlNHbG9iYWxEYXRhJiwg
U3RydWN0dXJlKiwgY29uc3QgSWRlbnRpZmllciYgcHJvcGVydHlOYW1lLCB1bnNpZ25lZCBhdHRy
aWJ1dGVzKTsKKyAgICAgICAgSlNfRVhQT1JUX1BSSVZBVEUgc3RhdGljIFN0cnVjdHVyZSogZGVz
cGVjaWZ5RnVuY3Rpb25UcmFuc2l0aW9uKEpTR2xvYmFsRGF0YSYsIFN0cnVjdHVyZSosIFByb3Bl
cnR5TmFtZSk7CisgICAgICAgIHN0YXRpYyBTdHJ1Y3R1cmUqIGF0dHJpYnV0ZUNoYW5nZVRyYW5z
aXRpb24oSlNHbG9iYWxEYXRhJiwgU3RydWN0dXJlKiwgUHJvcGVydHlOYW1lLCB1bnNpZ25lZCBh
dHRyaWJ1dGVzKTsKICAgICAgICAgc3RhdGljIFN0cnVjdHVyZSogdG9DYWNoZWFibGVEaWN0aW9u
YXJ5VHJhbnNpdGlvbihKU0dsb2JhbERhdGEmLCBTdHJ1Y3R1cmUqKTsKICAgICAgICAgc3RhdGlj
IFN0cnVjdHVyZSogdG9VbmNhY2hlYWJsZURpY3Rpb25hcnlUcmFuc2l0aW9uKEpTR2xvYmFsRGF0
YSYsIFN0cnVjdHVyZSopOwogICAgICAgICBzdGF0aWMgU3RydWN0dXJlKiBzZWFsVHJhbnNpdGlv
bihKU0dsb2JhbERhdGEmLCBTdHJ1Y3R1cmUqKTsKQEAgLTEwOCw4ICsxMDgsOCBAQCBuYW1lc3Bh
Y2UgSlNDIHsKICAgICAgICAgc3RhdGljIHZvaWQgZGVzdHJveShKU0NlbGwqKTsKIAogICAgICAg
ICAvLyBUaGVzZSBzaG91bGQgYmUgdXNlZCB3aXRoIGNhdXRpb24uICAKLSAgICAgICAgSlNfRVhQ
T1JUX1BSSVZBVEUgc2l6ZV90IGFkZFByb3BlcnR5V2l0aG91dFRyYW5zaXRpb24oSlNHbG9iYWxE
YXRhJiwgY29uc3QgSWRlbnRpZmllciYgcHJvcGVydHlOYW1lLCB1bnNpZ25lZCBhdHRyaWJ1dGVz
LCBKU0NlbGwqIHNwZWNpZmljVmFsdWUpOwotICAgICAgICBzaXplX3QgcmVtb3ZlUHJvcGVydHlX
aXRob3V0VHJhbnNpdGlvbihKU0dsb2JhbERhdGEmLCBjb25zdCBJZGVudGlmaWVyJiBwcm9wZXJ0
eU5hbWUpOworICAgICAgICBKU19FWFBPUlRfUFJJVkFURSBzaXplX3QgYWRkUHJvcGVydHlXaXRo
b3V0VHJhbnNpdGlvbihKU0dsb2JhbERhdGEmLCBQcm9wZXJ0eU5hbWUsIHVuc2lnbmVkIGF0dHJp
YnV0ZXMsIEpTQ2VsbCogc3BlY2lmaWNWYWx1ZSk7CisgICAgICAgIHNpemVfdCByZW1vdmVQcm9w
ZXJ0eVdpdGhvdXRUcmFuc2l0aW9uKEpTR2xvYmFsRGF0YSYsIFByb3BlcnR5TmFtZSk7CiAgICAg
ICAgIHZvaWQgc2V0UHJvdG90eXBlV2l0aG91dFRyYW5zaXRpb24oSlNHbG9iYWxEYXRhJiBnbG9i
YWxEYXRhLCBKU1ZhbHVlIHByb3RvdHlwZSkgeyBtX3Byb3RvdHlwZS5zZXQoZ2xvYmFsRGF0YSwg
dGhpcywgcHJvdG90eXBlKTsgfQogICAgICAgICAKICAgICAgICAgYm9vbCBpc0RpY3Rpb25hcnko
KSBjb25zdCB7IHJldHVybiBtX2RpY3Rpb25hcnlLaW5kICE9IE5vbmVEaWN0aW9uYXJ5S2luZDsg
fQpAQCAtMTM2LDE1ICsxMzYsOSBAQCBuYW1lc3BhY2UgSlNDIHsKICAgICAgICAgdW5zaWduZWQg
cHJvcGVydHlTdG9yYWdlU2l6ZSgpIGNvbnN0IHsgQVNTRVJUKHN0cnVjdHVyZSgpLT5jbGFzc0lu
Zm8oKSA9PSAmc19pbmZvKTsgcmV0dXJuIChtX3Byb3BlcnR5VGFibGUgPyBtX3Byb3BlcnR5VGFi
bGUtPnByb3BlcnR5U3RvcmFnZVNpemUoKSA6IHN0YXRpY19jYXN0PHVuc2lnbmVkPihtX29mZnNl
dCArIDEpKTsgfQogICAgICAgICBib29sIGlzVXNpbmdJbmxpbmVTdG9yYWdlKCkgY29uc3Q7CiAK
LSAgICAgICAgc2l6ZV90IGdldChKU0dsb2JhbERhdGEmLCBjb25zdCBJZGVudGlmaWVyJiBwcm9w
ZXJ0eU5hbWUpOworICAgICAgICBzaXplX3QgZ2V0KEpTR2xvYmFsRGF0YSYsIFByb3BlcnR5TmFt
ZSk7CiAgICAgICAgIHNpemVfdCBnZXQoSlNHbG9iYWxEYXRhJiwgY29uc3QgVVN0cmluZyYgbmFt
ZSk7Ci0gICAgICAgIEpTX0VYUE9SVF9QUklWQVRFIHNpemVfdCBnZXQoSlNHbG9iYWxEYXRhJiwg
U3RyaW5nSW1wbCogcHJvcGVydHlOYW1lLCB1bnNpZ25lZCYgYXR0cmlidXRlcywgSlNDZWxsKiYg
c3BlY2lmaWNWYWx1ZSk7Ci0gICAgICAgIHNpemVfdCBnZXQoSlNHbG9iYWxEYXRhJiBnbG9iYWxE
YXRhLCBjb25zdCBJZGVudGlmaWVyJiBwcm9wZXJ0eU5hbWUsIHVuc2lnbmVkJiBhdHRyaWJ1dGVz
LCBKU0NlbGwqJiBzcGVjaWZpY1ZhbHVlKQotICAgICAgICB7Ci0gICAgICAgICAgICBBU1NFUlQo
IXByb3BlcnR5TmFtZS5pc051bGwoKSk7Ci0gICAgICAgICAgICBBU1NFUlQoc3RydWN0dXJlKCkt
PmNsYXNzSW5mbygpID09ICZzX2luZm8pOwotICAgICAgICAgICAgcmV0dXJuIGdldChnbG9iYWxE
YXRhLCBwcm9wZXJ0eU5hbWUuaW1wbCgpLCBhdHRyaWJ1dGVzLCBzcGVjaWZpY1ZhbHVlKTsKLSAg
ICAgICAgfQorICAgICAgICBKU19FWFBPUlRfUFJJVkFURSBzaXplX3QgZ2V0KEpTR2xvYmFsRGF0
YSYsIFByb3BlcnR5TmFtZSwgdW5zaWduZWQmIGF0dHJpYnV0ZXMsIEpTQ2VsbComIHNwZWNpZmlj
VmFsdWUpOwogCiAgICAgICAgIGJvb2wgaGFzR2V0dGVyU2V0dGVyUHJvcGVydGllcygpIGNvbnN0
IHsgcmV0dXJuIG1faGFzR2V0dGVyU2V0dGVyUHJvcGVydGllczsgfQogICAgICAgICBib29sIGhh
c1JlYWRPbmx5T3JHZXR0ZXJTZXR0ZXJQcm9wZXJ0aWVzRXhjbHVkaW5nUHJvdG8oKSBjb25zdCB7
IHJldHVybiBtX2hhc1JlYWRPbmx5T3JHZXR0ZXJTZXR0ZXJQcm9wZXJ0aWVzRXhjbHVkaW5nUHJv
dG87IH0KQEAgLTE2Myw3ICsxNTcsNyBAQCBuYW1lc3BhY2UgSlNDIHsKICAgICAgICAgCiAgICAg
ICAgIGJvb2wgaXNFbXB0eSgpIGNvbnN0IHsgcmV0dXJuIG1fcHJvcGVydHlUYWJsZSA/IG1fcHJv
cGVydHlUYWJsZS0+aXNFbXB0eSgpIDogbV9vZmZzZXQgPT0gbm9PZmZzZXQ7IH0KIAotICAgICAg
ICBKU19FWFBPUlRfUFJJVkFURSB2b2lkIGRlc3BlY2lmeURpY3Rpb25hcnlGdW5jdGlvbihKU0ds
b2JhbERhdGEmLCBjb25zdCBJZGVudGlmaWVyJiBwcm9wZXJ0eU5hbWUpOworICAgICAgICBKU19F
WFBPUlRfUFJJVkFURSB2b2lkIGRlc3BlY2lmeURpY3Rpb25hcnlGdW5jdGlvbihKU0dsb2JhbERh
dGEmLCBQcm9wZXJ0eU5hbWUpOwogICAgICAgICB2b2lkIGRpc2FibGVTcGVjaWZpY0Z1bmN0aW9u
VHJhY2tpbmcoKSB7IG1fc3BlY2lmaWNGdW5jdGlvblRocmFzaENvdW50ID0gbWF4U3BlY2lmaWNG
dW5jdGlvblRocmFzaENvdW50OyB9CiAKICAgICAgICAgdm9pZCBzZXRFbnVtZXJhdGlvbkNhY2hl
KEpTR2xvYmFsRGF0YSYsIEpTUHJvcGVydHlOYW1lSXRlcmF0b3IqIGVudW1lcmF0aW9uQ2FjaGUp
OyAvLyBEZWZpbmVkIGluIEpTUHJvcGVydHlOYW1lSXRlcmF0b3IuaC4KQEAgLTIxNiw3ICsyMTAs
NyBAQCBuYW1lc3BhY2UgSlNDIHsKIAogICAgIHByaXZhdGU6CiAgICAgICAgIGZyaWVuZCBjbGFz
cyBMTEludE9mZnNldHNFeHRyYWN0b3I7Ci0gICAgICAgIAorCiAgICAgICAgIEpTX0VYUE9SVF9Q
UklWQVRFIFN0cnVjdHVyZShKU0dsb2JhbERhdGEmLCBKU0dsb2JhbE9iamVjdCosIEpTVmFsdWUg
cHJvdG90eXBlLCBjb25zdCBUeXBlSW5mbyYsIGNvbnN0IENsYXNzSW5mbyopOwogICAgICAgICBT
dHJ1Y3R1cmUoSlNHbG9iYWxEYXRhJik7CiAgICAgICAgIFN0cnVjdHVyZShKU0dsb2JhbERhdGEm
LCBjb25zdCBTdHJ1Y3R1cmUqKTsKQEAgLTIzNiwxMyArMjMwLDEzIEBAIG5hbWVzcGFjZSBKU0Mg
ewogICAgICAgICB9IERpY3Rpb25hcnlLaW5kOwogICAgICAgICBzdGF0aWMgU3RydWN0dXJlKiB0
b0RpY3Rpb25hcnlUcmFuc2l0aW9uKEpTR2xvYmFsRGF0YSYsIFN0cnVjdHVyZSosIERpY3Rpb25h
cnlLaW5kKTsKIAotICAgICAgICBzaXplX3QgcHV0U3BlY2lmaWNWYWx1ZShKU0dsb2JhbERhdGEm
LCBjb25zdCBJZGVudGlmaWVyJiBwcm9wZXJ0eU5hbWUsIHVuc2lnbmVkIGF0dHJpYnV0ZXMsIEpT
Q2VsbCogc3BlY2lmaWNWYWx1ZSk7Ci0gICAgICAgIHNpemVfdCByZW1vdmUoY29uc3QgSWRlbnRp
ZmllciYgcHJvcGVydHlOYW1lKTsKKyAgICAgICAgc2l6ZV90IHB1dFNwZWNpZmljVmFsdWUoSlNH
bG9iYWxEYXRhJiwgUHJvcGVydHlOYW1lLCB1bnNpZ25lZCBhdHRyaWJ1dGVzLCBKU0NlbGwqIHNw
ZWNpZmljVmFsdWUpOworICAgICAgICBzaXplX3QgcmVtb3ZlKFByb3BlcnR5TmFtZSk7CiAKICAg
ICAgICAgdm9pZCBjcmVhdGVQcm9wZXJ0eU1hcCh1bnNpZ25lZCBrZXlDb3VudCA9IDApOwogICAg
ICAgICB2b2lkIGNoZWNrQ29uc2lzdGVuY3koKTsKIAotICAgICAgICBib29sIGRlc3BlY2lmeUZ1
bmN0aW9uKEpTR2xvYmFsRGF0YSYsIGNvbnN0IElkZW50aWZpZXImKTsKKyAgICAgICAgYm9vbCBk
ZXNwZWNpZnlGdW5jdGlvbihKU0dsb2JhbERhdGEmLCBQcm9wZXJ0eU5hbWUpOwogICAgICAgICB2
b2lkIGRlc3BlY2lmeUFsbEZ1bmN0aW9ucyhKU0dsb2JhbERhdGEmKTsKIAogICAgICAgICBQYXNz
T3duUHRyPFByb3BlcnR5VGFibGU+IGNvcHlQcm9wZXJ0eVRhYmxlKEpTR2xvYmFsRGF0YSYsIFN0
cnVjdHVyZSogb3duZXIpOwpAQCAtMzE0LDcgKzMwOCw3IEBAIG5hbWVzcGFjZSBKU0MgewogICAg
ICAgICB1bnNpZ25lZCBtX3N0YXRpY0Z1bmN0aW9uUmVpZmllZDsKICAgICB9OwogCi0gICAgaW5s
aW5lIHNpemVfdCBTdHJ1Y3R1cmU6OmdldChKU0dsb2JhbERhdGEmIGdsb2JhbERhdGEsIGNvbnN0
IElkZW50aWZpZXImIHByb3BlcnR5TmFtZSkKKyAgICBpbmxpbmUgc2l6ZV90IFN0cnVjdHVyZTo6
Z2V0KEpTR2xvYmFsRGF0YSYgZ2xvYmFsRGF0YSwgUHJvcGVydHlOYW1lIHByb3BlcnR5TmFtZSkK
ICAgICB7CiAgICAgICAgIEFTU0VSVChzdHJ1Y3R1cmUoKS0+Y2xhc3NJbmZvKCkgPT0gJnNfaW5m
byk7CiAgICAgICAgIG1hdGVyaWFsaXplUHJvcGVydHlNYXBJZk5lY2Vzc2FyeShnbG9iYWxEYXRh
KTsKSW5kZXg6IFNvdXJjZS9XZWJDb3JlL0NoYW5nZUxvZwo9PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2Uv
V2ViQ29yZS9DaGFuZ2VMb2cJKHJldmlzaW9uIDExNjc5MikKKysrIFNvdXJjZS9XZWJDb3JlL0No
YW5nZUxvZwkod29ya2luZyBjb3B5KQpAQCAtMSwzICsxLDIyOSBAQAorMjAxMi0wNS0xMSAgR2F2
aW4gQmFycmFjbG91Z2ggIDxiYXJyYWNsb3VnaEBhcHBsZS5jb20+CisKKyAgICAgICAgSW50cm9k
dWNlIFByb3BlcnR5TmFtZSBjbGFzcworICAgICAgICBodHRwczovL2J1Z3Mud2Via2l0Lm9yZy9z
aG93X2J1Zy5jZ2k/aWQ9ODYyNDEKKworICAgICAgICBSZXZpZXdlZCBieSBOT0JPRFkgKE9PUFMh
KS4KKworICAgICAgICBSZXBsYWNlICdjb25zdCBJZGVudGlmaWVyJicgYXJndW1lbnRzIHRvIGZ1
bmN0aW9ucyBhY2Nlc3Npbmcgb2JqZWN0IHByb3BlcnRpZXMgd2l0aCBhIG5ldyAnUHJvcGVydHlO
YW1lJyB0eXBlLgorICAgICAgICBUaGlzIGNoYW5nZSBwYXZlcyB0aGUgd2F5IHRvIGFsbG93IGZv
ciBwcm9wZXJ0aWVzIGtleWVkIGJ5IHZhbHVlcyB0aGF0IGFyZSBub3QgSWRlbnRpZmllcnMuCisK
KyAgICAgICAgVGhpcyBjaGFuZ2UgaXMgbGFyZ2VseSBhIG1lY2hhbmljYWwgZmluZCAmIHJlcGxh
Y2UuCisgICAgICAgIEl0IGFsc28gY2hhbmdlcyBKU0Z1bmN0aW9uJ3MgY29uc3RydWN0b3IgdG8g
dGFrZSBhIFVTdHJpbmcmIGluc3RlYWQgb2YgYW4gSWRlbnRpZmllciYKKyAgICAgICAgKHNpbmNl
IGluIHNvbWUgY2FzZXMgd2UgY2FuIG5vIGxvbmdlciBndWFyYW50ZWUgdGhhdCB3ZSdsbGwgaGF2
ZSBhbiBJZGVudGlmaWVyKSwgYW5kCisgICAgICAgIHVuaWZpZXMgSWRlbnRpZmllcidzIG1ldGhv
ZHMgdG8gb2J0YWluIGFycmF5IGluZGljZXMgb250byBQcm9wZXJ0eU5hbWUuCisKKyAgICAgICAg
VGhlIG5ldyBQcm9wZXJ0eU5hbWUgY2xhc3MgcmV0YWlucyB0aGUgYWJpbGl0eSB0byBzdXBwb3J0
IC5pbXBsKCkgYW5kIC51c3RyaW5nKCksIGJ1dAorICAgICAgICBpbiBhIGZ1dHVyZSBwYXRjaCB3
ZSBtYXkgbmVlZCB0byByZXdvcmsgdGhpcywgc2luY2Ugbm90IGFsbCBQcm9wZXJ0eU5hbWVzIHNo
b3VsZCBiZQorICAgICAgICBlcXVhbCBiYXNlZCBvbiB0aGVpciBzdHJpbmcgcmVwcmVzZW50YXRp
b24uCisKKyAgICAgICAgKiBXZWJDb3JlLmV4cC5pbjoKKyAgICAgICAgKiBiaW5kaW5ncy9qcy9K
U0NTU1N0eWxlRGVjbGFyYXRpb25DdXN0b20uY3BwOgorICAgICAgICAoV2ViQ29yZTo6Y3NzUHJv
cGVydHlJREZvckpTQ1NTUHJvcGVydHlOYW1lKToKKyAgICAgICAgKFdlYkNvcmU6OkpTQ1NTU3R5
bGVEZWNsYXJhdGlvbjo6Z2V0T3duUHJvcGVydHlTbG90RGVsZWdhdGUpOgorICAgICAgICAoV2Vi
Q29yZTo6SlNDU1NTdHlsZURlY2xhcmF0aW9uOjpnZXRPd25Qcm9wZXJ0eURlc2NyaXB0b3JEZWxl
Z2F0ZSk6CisgICAgICAgIChXZWJDb3JlOjpKU0NTU1N0eWxlRGVjbGFyYXRpb246OnB1dERlbGVn
YXRlKToKKyAgICAgICAgKiBiaW5kaW5ncy9qcy9KU0RPTUJpbmRpbmcuY3BwOgorICAgICAgICAo
V2ViQ29yZTo6ZmluZEF0b21pY1N0cmluZyk6CisgICAgICAgIChXZWJDb3JlOjpvYmplY3RUb1N0
cmluZ0Z1bmN0aW9uR2V0dGVyKToKKyAgICAgICAgKiBiaW5kaW5ncy9qcy9KU0RPTUJpbmRpbmcu
aDoKKyAgICAgICAgKFdlYkNvcmUpOgorICAgICAgICAoV2ViQ29yZTo6cHJvcGVydHlOYW1lVG9T
dHJpbmcpOgorICAgICAgICAoV2ViQ29yZTo6cHJvcGVydHlOYW1lVG9BdG9taWNTdHJpbmcpOgor
ICAgICAgICAqIGJpbmRpbmdzL2pzL0pTRE9NTWltZVR5cGVBcnJheUN1c3RvbS5jcHA6CisgICAg
ICAgIChXZWJDb3JlOjpKU0RPTU1pbWVUeXBlQXJyYXk6OmNhbkdldEl0ZW1zRm9yTmFtZSk6Cisg
ICAgICAgIChXZWJDb3JlOjpKU0RPTU1pbWVUeXBlQXJyYXk6Om5hbWVHZXR0ZXIpOgorICAgICAg
ICAqIGJpbmRpbmdzL2pzL0pTRE9NUGx1Z2luQXJyYXlDdXN0b20uY3BwOgorICAgICAgICAoV2Vi
Q29yZTo6SlNET01QbHVnaW5BcnJheTo6Y2FuR2V0SXRlbXNGb3JOYW1lKToKKyAgICAgICAgKFdl
YkNvcmU6OkpTRE9NUGx1Z2luQXJyYXk6Om5hbWVHZXR0ZXIpOgorICAgICAgICAqIGJpbmRpbmdz
L2pzL0pTRE9NUGx1Z2luQ3VzdG9tLmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OkpTRE9NUGx1Z2lu
OjpjYW5HZXRJdGVtc0Zvck5hbWUpOgorICAgICAgICAoV2ViQ29yZTo6SlNET01QbHVnaW46Om5h
bWVHZXR0ZXIpOgorICAgICAgICAqIGJpbmRpbmdzL2pzL0pTRE9NU3RyaW5nTWFwQ3VzdG9tLmNw
cDoKKyAgICAgICAgKFdlYkNvcmU6OkpTRE9NU3RyaW5nTWFwOjpjYW5HZXRJdGVtc0Zvck5hbWUp
OgorICAgICAgICAoV2ViQ29yZTo6SlNET01TdHJpbmdNYXA6Om5hbWVHZXR0ZXIpOgorICAgICAg
ICAoV2ViQ29yZTo6SlNET01TdHJpbmdNYXA6OmRlbGV0ZVByb3BlcnR5KToKKyAgICAgICAgKFdl
YkNvcmU6OkpTRE9NU3RyaW5nTWFwOjpwdXREZWxlZ2F0ZSk6CisgICAgICAgICogYmluZGluZ3Mv
anMvSlNET01XaW5kb3dDdXN0b20uY3BwOgorICAgICAgICAoV2ViQ29yZTo6bm9uQ2FjaGluZ1N0
YXRpY0Z1bmN0aW9uR2V0dGVyKToKKyAgICAgICAgKFdlYkNvcmU6OmNoaWxkRnJhbWVHZXR0ZXIp
OgorICAgICAgICAoV2ViQ29yZTo6bmFtZWRJdGVtR2V0dGVyKToKKyAgICAgICAgKFdlYkNvcmU6
OkpTRE9NV2luZG93OjpnZXRPd25Qcm9wZXJ0eVNsb3QpOgorICAgICAgICAoV2ViQ29yZTo6SlNE
T01XaW5kb3c6OmdldE93blByb3BlcnR5RGVzY3JpcHRvcik6CisgICAgICAgIChXZWJDb3JlOjpK
U0RPTVdpbmRvdzo6cHV0KToKKyAgICAgICAgKFdlYkNvcmU6OkpTRE9NV2luZG93OjpkZWxldGVQ
cm9wZXJ0eSk6CisgICAgICAgIChXZWJDb3JlOjpKU0RPTVdpbmRvdzo6ZGVmaW5lT3duUHJvcGVy
dHkpOgorICAgICAgICAqIGJpbmRpbmdzL2pzL0pTRE9NV2luZG93U2hlbGwuY3BwOgorICAgICAg
ICAoV2ViQ29yZTo6SlNET01XaW5kb3dTaGVsbDo6Z2V0T3duUHJvcGVydHlTbG90KToKKyAgICAg
ICAgKFdlYkNvcmU6OkpTRE9NV2luZG93U2hlbGw6OmdldE93blByb3BlcnR5RGVzY3JpcHRvcik6
CisgICAgICAgIChXZWJDb3JlOjpKU0RPTVdpbmRvd1NoZWxsOjpwdXQpOgorICAgICAgICAoV2Vi
Q29yZTo6SlNET01XaW5kb3dTaGVsbDo6cHV0RGlyZWN0VmlydHVhbCk6CisgICAgICAgIChXZWJD
b3JlOjpKU0RPTVdpbmRvd1NoZWxsOjpkZWZpbmVPd25Qcm9wZXJ0eSk6CisgICAgICAgIChXZWJD
b3JlOjpKU0RPTVdpbmRvd1NoZWxsOjpkZWxldGVQcm9wZXJ0eSk6CisgICAgICAgICogYmluZGlu
Z3MvanMvSlNET01XaW5kb3dTaGVsbC5oOgorICAgICAgICAoSlNET01XaW5kb3dTaGVsbCk6Cisg
ICAgICAgICogYmluZGluZ3MvanMvSlNIVE1MQWxsQ29sbGVjdGlvbkN1c3RvbS5jcHA6CisgICAg
ICAgIChXZWJDb3JlOjpnZXROYW1lZEl0ZW1zKToKKyAgICAgICAgKFdlYkNvcmU6OmNhbGxIVE1M
QWxsQ29sbGVjdGlvbik6CisgICAgICAgIChXZWJDb3JlOjpKU0hUTUxBbGxDb2xsZWN0aW9uOjpj
YW5HZXRJdGVtc0Zvck5hbWUpOgorICAgICAgICAoV2ViQ29yZTo6SlNIVE1MQWxsQ29sbGVjdGlv
bjo6bmFtZUdldHRlcik6CisgICAgICAgIChXZWJDb3JlOjpKU0hUTUxBbGxDb2xsZWN0aW9uOjpp
dGVtKToKKyAgICAgICAgKiBiaW5kaW5ncy9qcy9KU0hUTUxBcHBsZXRFbGVtZW50Q3VzdG9tLmNw
cDoKKyAgICAgICAgKFdlYkNvcmU6OkpTSFRNTEFwcGxldEVsZW1lbnQ6OmdldE93blByb3BlcnR5
U2xvdERlbGVnYXRlKToKKyAgICAgICAgKFdlYkNvcmU6OkpTSFRNTEFwcGxldEVsZW1lbnQ6Omdl
dE93blByb3BlcnR5RGVzY3JpcHRvckRlbGVnYXRlKToKKyAgICAgICAgKFdlYkNvcmU6OkpTSFRN
TEFwcGxldEVsZW1lbnQ6OnB1dERlbGVnYXRlKToKKyAgICAgICAgKiBiaW5kaW5ncy9qcy9KU0hU
TUxDb2xsZWN0aW9uQ3VzdG9tLmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OmdldE5hbWVkSXRlbXMp
OgorICAgICAgICAoV2ViQ29yZTo6SlNIVE1MQ29sbGVjdGlvbjo6Y2FuR2V0SXRlbXNGb3JOYW1l
KToKKyAgICAgICAgKFdlYkNvcmU6OkpTSFRNTENvbGxlY3Rpb246Om5hbWVHZXR0ZXIpOgorICAg
ICAgICAqIGJpbmRpbmdzL2pzL0pTSFRNTERvY3VtZW50Q3VzdG9tLmNwcDoKKyAgICAgICAgKFdl
YkNvcmU6OkpTSFRNTERvY3VtZW50OjpjYW5HZXRJdGVtc0Zvck5hbWUpOgorICAgICAgICAoV2Vi
Q29yZTo6SlNIVE1MRG9jdW1lbnQ6Om5hbWVHZXR0ZXIpOgorICAgICAgICAqIGJpbmRpbmdzL2pz
L0pTSFRNTEVtYmVkRWxlbWVudEN1c3RvbS5jcHA6CisgICAgICAgIChXZWJDb3JlOjpKU0hUTUxF
bWJlZEVsZW1lbnQ6OmdldE93blByb3BlcnR5U2xvdERlbGVnYXRlKToKKyAgICAgICAgKFdlYkNv
cmU6OkpTSFRNTEVtYmVkRWxlbWVudDo6Z2V0T3duUHJvcGVydHlEZXNjcmlwdG9yRGVsZWdhdGUp
OgorICAgICAgICAoV2ViQ29yZTo6SlNIVE1MRW1iZWRFbGVtZW50OjpwdXREZWxlZ2F0ZSk6Cisg
ICAgICAgICogYmluZGluZ3MvanMvSlNIVE1MRm9ybUVsZW1lbnRDdXN0b20uY3BwOgorICAgICAg
ICAoV2ViQ29yZTo6SlNIVE1MRm9ybUVsZW1lbnQ6OmNhbkdldEl0ZW1zRm9yTmFtZSk6CisgICAg
ICAgIChXZWJDb3JlOjpKU0hUTUxGb3JtRWxlbWVudDo6bmFtZUdldHRlcik6CisgICAgICAgICog
YmluZGluZ3MvanMvSlNIVE1MRnJhbWVTZXRFbGVtZW50Q3VzdG9tLmNwcDoKKyAgICAgICAgKFdl
YkNvcmU6OkpTSFRNTEZyYW1lU2V0RWxlbWVudDo6Y2FuR2V0SXRlbXNGb3JOYW1lKToKKyAgICAg
ICAgKFdlYkNvcmU6OkpTSFRNTEZyYW1lU2V0RWxlbWVudDo6bmFtZUdldHRlcik6CisgICAgICAg
ICogYmluZGluZ3MvanMvSlNIVE1MT2JqZWN0RWxlbWVudEN1c3RvbS5jcHA6CisgICAgICAgIChX
ZWJDb3JlOjpKU0hUTUxPYmplY3RFbGVtZW50OjpnZXRPd25Qcm9wZXJ0eVNsb3REZWxlZ2F0ZSk6
CisgICAgICAgIChXZWJDb3JlOjpKU0hUTUxPYmplY3RFbGVtZW50OjpnZXRPd25Qcm9wZXJ0eURl
c2NyaXB0b3JEZWxlZ2F0ZSk6CisgICAgICAgIChXZWJDb3JlOjpKU0hUTUxPYmplY3RFbGVtZW50
OjpwdXREZWxlZ2F0ZSk6CisgICAgICAgICogYmluZGluZ3MvanMvSlNIaXN0b3J5Q3VzdG9tLmNw
cDoKKyAgICAgICAgKFdlYkNvcmU6Om5vbkNhY2hpbmdTdGF0aWNCYWNrRnVuY3Rpb25HZXR0ZXIp
OgorICAgICAgICAoV2ViQ29yZTo6bm9uQ2FjaGluZ1N0YXRpY0ZvcndhcmRGdW5jdGlvbkdldHRl
cik6CisgICAgICAgIChXZWJDb3JlOjpub25DYWNoaW5nU3RhdGljR29GdW5jdGlvbkdldHRlcik6
CisgICAgICAgIChXZWJDb3JlOjpKU0hpc3Rvcnk6OmdldE93blByb3BlcnR5U2xvdERlbGVnYXRl
KToKKyAgICAgICAgKFdlYkNvcmU6OkpTSGlzdG9yeTo6Z2V0T3duUHJvcGVydHlEZXNjcmlwdG9y
RGVsZWdhdGUpOgorICAgICAgICAoV2ViQ29yZTo6SlNIaXN0b3J5OjpwdXREZWxlZ2F0ZSk6Cisg
ICAgICAgIChXZWJDb3JlOjpKU0hpc3Rvcnk6OmRlbGV0ZVByb3BlcnR5KToKKyAgICAgICAgKiBi
aW5kaW5ncy9qcy9KU0xvY2F0aW9uQ3VzdG9tLmNwcDoKKyAgICAgICAgKFdlYkNvcmU6Om5vbkNh
Y2hpbmdTdGF0aWNSZXBsYWNlRnVuY3Rpb25HZXR0ZXIpOgorICAgICAgICAoV2ViQ29yZTo6bm9u
Q2FjaGluZ1N0YXRpY1JlbG9hZEZ1bmN0aW9uR2V0dGVyKToKKyAgICAgICAgKFdlYkNvcmU6Om5v
bkNhY2hpbmdTdGF0aWNBc3NpZ25GdW5jdGlvbkdldHRlcik6CisgICAgICAgIChXZWJDb3JlOjpK
U0xvY2F0aW9uOjpnZXRPd25Qcm9wZXJ0eVNsb3REZWxlZ2F0ZSk6CisgICAgICAgIChXZWJDb3Jl
OjpKU0xvY2F0aW9uOjpnZXRPd25Qcm9wZXJ0eURlc2NyaXB0b3JEZWxlZ2F0ZSk6CisgICAgICAg
IChXZWJDb3JlOjpKU0xvY2F0aW9uOjpwdXREZWxlZ2F0ZSk6CisgICAgICAgIChXZWJDb3JlOjpK
U0xvY2F0aW9uOjpkZWxldGVQcm9wZXJ0eSk6CisgICAgICAgIChXZWJDb3JlOjpKU0xvY2F0aW9u
OjpkZWZpbmVPd25Qcm9wZXJ0eSk6CisgICAgICAgIChXZWJDb3JlOjpKU0xvY2F0aW9uUHJvdG90
eXBlOjpwdXREZWxlZ2F0ZSk6CisgICAgICAgIChXZWJDb3JlOjpKU0xvY2F0aW9uUHJvdG90eXBl
OjpkZWZpbmVPd25Qcm9wZXJ0eSk6CisgICAgICAgICogYmluZGluZ3MvanMvSlNOYW1lZE5vZGVN
YXBDdXN0b20uY3BwOgorICAgICAgICAoV2ViQ29yZTo6SlNOYW1lZE5vZGVNYXA6OmNhbkdldEl0
ZW1zRm9yTmFtZSk6CisgICAgICAgIChXZWJDb3JlOjpKU05hbWVkTm9kZU1hcDo6bmFtZUdldHRl
cik6CisgICAgICAgICogYmluZGluZ3MvanMvSlNOb2RlTGlzdEN1c3RvbS5jcHA6CisgICAgICAg
IChXZWJDb3JlOjpKU05vZGVMaXN0OjpjYW5HZXRJdGVtc0Zvck5hbWUpOgorICAgICAgICAoV2Vi
Q29yZTo6SlNOb2RlTGlzdDo6bmFtZUdldHRlcik6CisgICAgICAgICogYmluZGluZ3MvanMvSlNQ
bHVnaW5FbGVtZW50RnVuY3Rpb25zLmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OnJ1bnRpbWVPYmpl
Y3RQcm9wZXJ0eUdldHRlcik6CisgICAgICAgIChXZWJDb3JlOjpydW50aW1lT2JqZWN0Q3VzdG9t
R2V0T3duUHJvcGVydHlTbG90KToKKyAgICAgICAgKFdlYkNvcmU6OnJ1bnRpbWVPYmplY3RDdXN0
b21HZXRPd25Qcm9wZXJ0eURlc2NyaXB0b3IpOgorICAgICAgICAoV2ViQ29yZTo6cnVudGltZU9i
amVjdEN1c3RvbVB1dCk6CisgICAgICAgICogYmluZGluZ3MvanMvSlNQbHVnaW5FbGVtZW50RnVu
Y3Rpb25zLmg6CisgICAgICAgIChXZWJDb3JlKToKKyAgICAgICAgKiBiaW5kaW5ncy9qcy9KU1N0
b3JhZ2VDdXN0b20uY3BwOgorICAgICAgICAoV2ViQ29yZTo6SlNTdG9yYWdlOjpjYW5HZXRJdGVt
c0Zvck5hbWUpOgorICAgICAgICAoV2ViQ29yZTo6SlNTdG9yYWdlOjpuYW1lR2V0dGVyKToKKyAg
ICAgICAgKFdlYkNvcmU6OkpTU3RvcmFnZTo6ZGVsZXRlUHJvcGVydHkpOgorICAgICAgICAoV2Vi
Q29yZTo6SlNTdG9yYWdlOjpwdXREZWxlZ2F0ZSk6CisgICAgICAgICogYmluZGluZ3MvanMvSlNT
dHlsZVNoZWV0TGlzdEN1c3RvbS5jcHA6CisgICAgICAgIChXZWJDb3JlOjpKU1N0eWxlU2hlZXRM
aXN0OjpjYW5HZXRJdGVtc0Zvck5hbWUpOgorICAgICAgICAoV2ViQ29yZTo6SlNTdHlsZVNoZWV0
TGlzdDo6bmFtZUdldHRlcik6CisgICAgICAgICogYmluZGluZ3MvanMvSlNXb3JrZXJDb250ZXh0
Q3VzdG9tLmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OkpTV29ya2VyQ29udGV4dDo6Z2V0T3duUHJv
cGVydHlTbG90RGVsZWdhdGUpOgorICAgICAgICAoV2ViQ29yZTo6SlNXb3JrZXJDb250ZXh0Ojpn
ZXRPd25Qcm9wZXJ0eURlc2NyaXB0b3JEZWxlZ2F0ZSk6CisgICAgICAgICogYmluZGluZ3Mvc2Ny
aXB0cy9Db2RlR2VuZXJhdG9ySlMucG06CisgICAgICAgIChHZW5lcmF0ZUdldE93blByb3BlcnR5
U2xvdEJvZHkpOgorICAgICAgICAoR2VuZXJhdGVHZXRPd25Qcm9wZXJ0eURlc2NyaXB0b3JCb2R5
KToKKyAgICAgICAgKEdlbmVyYXRlSGVhZGVyKToKKyAgICAgICAgKEdlbmVyYXRlSW1wbGVtZW50
YXRpb24pOgorICAgICAgICAoR2VuZXJhdGVDb25zdHJ1Y3RvckRlY2xhcmF0aW9uKToKKyAgICAg
ICAgKEdlbmVyYXRlQ29uc3RydWN0b3JEZWZpbml0aW9uKToKKyAgICAgICAgKiBicmlkZ2UvYy9j
X2NsYXNzLmNwcDoKKyAgICAgICAgKEpTQzo6QmluZGluZ3M6OkNDbGFzczo6bWV0aG9kc05hbWVk
KToKKyAgICAgICAgKEpTQzo6QmluZGluZ3M6OkNDbGFzczo6ZmllbGROYW1lZCk6CisgICAgICAg
ICogYnJpZGdlL2MvY19jbGFzcy5oOgorICAgICAgICAoQ0NsYXNzKToKKyAgICAgICAgKiBicmlk
Z2UvYy9jX2luc3RhbmNlLmNwcDoKKyAgICAgICAgKEpTQzo6QmluZGluZ3M6OkNSdW50aW1lTWV0
aG9kOjpjcmVhdGUpOgorICAgICAgICAoSlNDOjpCaW5kaW5nczo6Q1J1bnRpbWVNZXRob2Q6OmZp
bmlzaENyZWF0aW9uKToKKyAgICAgICAgKEpTQzo6QmluZGluZ3M6OkNJbnN0YW5jZTo6Z2V0TWV0
aG9kKToKKyAgICAgICAgKiBicmlkZ2UvYy9jX2luc3RhbmNlLmg6CisgICAgICAgIChDSW5zdGFu
Y2UpOgorICAgICAgICAqIGJyaWRnZS9qbmkvanNjL0phdmFDbGFzc0pTQy5jcHA6CisgICAgICAg
IChKYXZhQ2xhc3M6Om1ldGhvZHNOYW1lZCk6CisgICAgICAgIChKYXZhQ2xhc3M6OmZpZWxkTmFt
ZWQpOgorICAgICAgICAqIGJyaWRnZS9qbmkvanNjL0phdmFDbGFzc0pTQy5oOgorICAgICAgICAo
SmF2YUNsYXNzKToKKyAgICAgICAgKiBicmlkZ2Uvam5pL2pzYy9KYXZhSW5zdGFuY2VKU0MuY3Bw
OgorICAgICAgICAoSmF2YVJ1bnRpbWVNZXRob2Q6OmNyZWF0ZSk6CisgICAgICAgIChKYXZhUnVu
dGltZU1ldGhvZDo6ZmluaXNoQ3JlYXRpb24pOgorICAgICAgICAqIGJyaWRnZS9qbmkvanNjL0ph
dmFJbnN0YW5jZUpTQy5oOgorICAgICAgICAoSmF2YUluc3RhbmNlKToKKyAgICAgICAgKiBicmlk
Z2UvanNjL0JyaWRnZUpTQy5oOgorICAgICAgICAoQ2xhc3MpOgorICAgICAgICAoSlNDOjpCaW5k
aW5nczo6Q2xhc3M6OmZhbGxiYWNrT2JqZWN0KToKKyAgICAgICAgKEpTQzo6QmluZGluZ3M6Oklu
c3RhbmNlOjpzZXRWYWx1ZU9mVW5kZWZpbmVkRmllbGQpOgorICAgICAgICAoSW5zdGFuY2UpOgor
ICAgICAgICAoSlNDOjpCaW5kaW5nczo6SW5zdGFuY2U6OmdldE93blByb3BlcnR5U2xvdCk6Cisg
ICAgICAgIChKU0M6OkJpbmRpbmdzOjpJbnN0YW5jZTo6Z2V0T3duUHJvcGVydHlEZXNjcmlwdG9y
KToKKyAgICAgICAgKEpTQzo6QmluZGluZ3M6Okluc3RhbmNlOjpwdXQpOgorICAgICAgICAqIGJy
aWRnZS9vYmpjL29iamNfY2xhc3MuaDoKKyAgICAgICAgKE9iamNDbGFzcyk6CisgICAgICAgICog
YnJpZGdlL29iamMvb2JqY19jbGFzcy5tbToKKyAgICAgICAgKEpTQzo6QmluZGluZ3M6Ok9iamND
bGFzczo6bWV0aG9kc05hbWVkKToKKyAgICAgICAgKEpTQzo6QmluZGluZ3M6Ok9iamNDbGFzczo6
ZmllbGROYW1lZCk6CisgICAgICAgIChKU0M6OkJpbmRpbmdzOjpPYmpjQ2xhc3M6OmZhbGxiYWNr
T2JqZWN0KToKKyAgICAgICAgKiBicmlkZ2Uvb2JqYy9vYmpjX2luc3RhbmNlLmg6CisgICAgICAg
IChPYmpjSW5zdGFuY2UpOgorICAgICAgICAqIGJyaWRnZS9vYmpjL29iamNfaW5zdGFuY2UubW06
CisgICAgICAgIChPYmpDUnVudGltZU1ldGhvZDo6Y3JlYXRlKToKKyAgICAgICAgKE9iakNSdW50
aW1lTWV0aG9kOjpmaW5pc2hDcmVhdGlvbik6CisgICAgICAgIChPYmpjSW5zdGFuY2U6OnNldFZh
bHVlT2ZVbmRlZmluZWRGaWVsZCk6CisgICAgICAgIChPYmpjSW5zdGFuY2U6OmdldFZhbHVlT2ZV
bmRlZmluZWRGaWVsZCk6CisgICAgICAgICogYnJpZGdlL29iamMvb2JqY19ydW50aW1lLmg6Cisg
ICAgICAgIChKU0M6OkJpbmRpbmdzOjpPYmpjRmFsbGJhY2tPYmplY3RJbXA6OmNyZWF0ZSk6Cisg
ICAgICAgIChKU0M6OkJpbmRpbmdzOjpPYmpjRmFsbGJhY2tPYmplY3RJbXA6OnByb3BlcnR5TmFt
ZSk6CisgICAgICAgIChPYmpjRmFsbGJhY2tPYmplY3RJbXApOgorICAgICAgICAqIGJyaWRnZS9v
YmpjL29iamNfcnVudGltZS5tbToKKyAgICAgICAgKEpTQzo6QmluZGluZ3M6Ok9iamNGYWxsYmFj
a09iamVjdEltcDo6T2JqY0ZhbGxiYWNrT2JqZWN0SW1wKToKKyAgICAgICAgKEpTQzo6QmluZGlu
Z3M6Ok9iamNGYWxsYmFja09iamVjdEltcDo6Z2V0T3duUHJvcGVydHlTbG90KToKKyAgICAgICAg
KEpTQzo6QmluZGluZ3M6Ok9iamNGYWxsYmFja09iamVjdEltcDo6Z2V0T3duUHJvcGVydHlEZXNj
cmlwdG9yKToKKyAgICAgICAgKEpTQzo6QmluZGluZ3M6Ok9iamNGYWxsYmFja09iamVjdEltcDo6
cHV0KToKKyAgICAgICAgKEpTQzo6QmluZGluZ3M6OmNhbGxPYmpDRmFsbGJhY2tPYmplY3QpOgor
ICAgICAgICAoSlNDOjpCaW5kaW5nczo6T2JqY0ZhbGxiYWNrT2JqZWN0SW1wOjpkZWxldGVQcm9w
ZXJ0eSk6CisgICAgICAgIChKU0M6OkJpbmRpbmdzOjpPYmpjRmFsbGJhY2tPYmplY3RJbXA6OmRl
ZmF1bHRWYWx1ZSk6CisgICAgICAgICogYnJpZGdlL3J1bnRpbWVfYXJyYXkuY3BwOgorICAgICAg
ICAoSlNDOjpSdW50aW1lQXJyYXk6Omxlbmd0aEdldHRlcik6CisgICAgICAgIChKU0M6OlJ1bnRp
bWVBcnJheTo6Z2V0T3duUHJvcGVydHlTbG90KToKKyAgICAgICAgKEpTQzo6UnVudGltZUFycmF5
OjpnZXRPd25Qcm9wZXJ0eURlc2NyaXB0b3IpOgorICAgICAgICAoSlNDOjpSdW50aW1lQXJyYXk6
OnB1dCk6CisgICAgICAgIChKU0M6OlJ1bnRpbWVBcnJheTo6ZGVsZXRlUHJvcGVydHkpOgorICAg
ICAgICAqIGJyaWRnZS9ydW50aW1lX2FycmF5Lmg6CisgICAgICAgIChSdW50aW1lQXJyYXkpOgor
ICAgICAgICAqIGJyaWRnZS9ydW50aW1lX21ldGhvZC5jcHA6CisgICAgICAgIChKU0M6OlJ1bnRp
bWVNZXRob2Q6OmZpbmlzaENyZWF0aW9uKToKKyAgICAgICAgKEpTQzo6UnVudGltZU1ldGhvZDo6
bGVuZ3RoR2V0dGVyKToKKyAgICAgICAgKEpTQzo6UnVudGltZU1ldGhvZDo6Z2V0T3duUHJvcGVy
dHlTbG90KToKKyAgICAgICAgKEpTQzo6UnVudGltZU1ldGhvZDo6Z2V0T3duUHJvcGVydHlEZXNj
cmlwdG9yKToKKyAgICAgICAgKiBicmlkZ2UvcnVudGltZV9tZXRob2QuaDoKKyAgICAgICAgKEpT
Qzo6UnVudGltZU1ldGhvZDo6Y3JlYXRlKToKKyAgICAgICAgKFJ1bnRpbWVNZXRob2QpOgorICAg
ICAgICAqIGJyaWRnZS9ydW50aW1lX29iamVjdC5jcHA6CisgICAgICAgIChKU0M6OkJpbmRpbmdz
OjpSdW50aW1lT2JqZWN0OjpmYWxsYmFja09iamVjdEdldHRlcik6CisgICAgICAgIChKU0M6OkJp
bmRpbmdzOjpSdW50aW1lT2JqZWN0OjpmaWVsZEdldHRlcik6CisgICAgICAgIChKU0M6OkJpbmRp
bmdzOjpSdW50aW1lT2JqZWN0OjptZXRob2RHZXR0ZXIpOgorICAgICAgICAoSlNDOjpCaW5kaW5n
czo6UnVudGltZU9iamVjdDo6Z2V0T3duUHJvcGVydHlTbG90KToKKyAgICAgICAgKEpTQzo6Qmlu
ZGluZ3M6OlJ1bnRpbWVPYmplY3Q6OmdldE93blByb3BlcnR5RGVzY3JpcHRvcik6CisgICAgICAg
IChKU0M6OkJpbmRpbmdzOjpSdW50aW1lT2JqZWN0OjpwdXQpOgorICAgICAgICAoSlNDOjpCaW5k
aW5nczo6UnVudGltZU9iamVjdDo6ZGVsZXRlUHJvcGVydHkpOgorICAgICAgICAqIGJyaWRnZS9y
dW50aW1lX29iamVjdC5oOgorICAgICAgICAoUnVudGltZU9iamVjdCk6CisKIDIwMTItMDUtMTEg
IFNpbW9uIEZyYXNlciAgPHNpbW9uLmZyYXNlckBhcHBsZS5jb20+CiAKICAgICAgICAgQ1ZEaXNw
bGF5TGluayBrZWVwcyBydW5uaW5nIGFmdGVyIGEgc2luZ2xlIHJlcXVlc3RBbmltYXRpb25GcmFt
ZQpJbmRleDogU291cmNlL1dlYkNvcmUvV2ViQ29yZS5leHAuaW4KPT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291
cmNlL1dlYkNvcmUvV2ViQ29yZS5leHAuaW4JKHJldmlzaW9uIDExNjY2NykKKysrIFNvdXJjZS9X
ZWJDb3JlL1dlYkNvcmUuZXhwLmluCSh3b3JraW5nIGNvcHkpCkBAIC0xODg0LDIyICsxODg0LDIy
IEBAIF9fWk43V2ViQ29yZTVGcmFtZTI2c2VuZE9yaWVudGF0aW9uQ2hhbmcKIAogI2lmIFVTRShQ
TFVHSU5fSE9TVF9QUk9DRVNTKQogX19aTjNKU0MxM1J1bnRpbWVNZXRob2QxMWdldENhbGxEYXRh
RVBOU182SlNDZWxsRVJOU184Q2FsbERhdGFFCi1fX1pOM0pTQzEzUnVudGltZU1ldGhvZDE0Zmlu
aXNoQ3JlYXRpb25FUk5TXzEySlNHbG9iYWxEYXRhRVJLTlNfMTBJZGVudGlmaWVyRQotX19aTjNK
U0MxM1J1bnRpbWVNZXRob2QxOGdldE93blByb3BlcnR5U2xvdEVQTlNfNkpTQ2VsbEVQTlNfOUV4
ZWNTdGF0ZUVSS05TXzEwSWRlbnRpZmllckVSTlNfMTJQcm9wZXJ0eVNsb3RFCi1fX1pOM0pTQzEz
UnVudGltZU1ldGhvZDI0Z2V0T3duUHJvcGVydHlEZXNjcmlwdG9yRVBOU184SlNPYmplY3RFUE5T
XzlFeGVjU3RhdGVFUktOU18xMElkZW50aWZpZXJFUk5TXzE4UHJvcGVydHlEZXNjcmlwdG9yRQor
X19aTjNKU0MxM1J1bnRpbWVNZXRob2QxNGZpbmlzaENyZWF0aW9uRVJOU18xMkpTR2xvYmFsRGF0
YUVSS05TXzdVU3RyaW5nRQorX19aTjNKU0MxM1J1bnRpbWVNZXRob2QxOGdldE93blByb3BlcnR5
U2xvdEVQTlNfNkpTQ2VsbEVQTlNfOUV4ZWNTdGF0ZUVOU18xMlByb3BlcnR5TmFtZUVSTlNfMTJQ
cm9wZXJ0eVNsb3RFCitfX1pOM0pTQzEzUnVudGltZU1ldGhvZDI0Z2V0T3duUHJvcGVydHlEZXNj
cmlwdG9yRVBOU184SlNPYmplY3RFUE5TXzlFeGVjU3RhdGVFTlNfMTJQcm9wZXJ0eU5hbWVFUk5T
XzE4UHJvcGVydHlEZXNjcmlwdG9yRQogX19aTjNKU0MxM1J1bnRpbWVNZXRob2Q2c19pbmZvRQog
X19aTjNKU0MxM1J1bnRpbWVNZXRob2Q3ZGVzdHJveUVQTlNfNkpTQ2VsbEUKIF9fWk4zSlNDMTNS
dW50aW1lTWV0aG9kQzJFUE5TXzE0SlNHbG9iYWxPYmplY3RFUE5TXzlTdHJ1Y3R1cmVFUk4zV1RG
NlZlY3RvcklQTlNfOEJpbmRpbmdzNk1ldGhvZEVMbTBFRUUKIF9fWk4zSlNDOEJpbmRpbmdzMTBS
b290T2JqZWN0RDFFdgogX19aTjNKU0M4QmluZGluZ3MxM1J1bnRpbWVPYmplY3QxMWdldENhbGxE
YXRhRVBOU182SlNDZWxsRVJOU184Q2FsbERhdGFFCiBfX1pOM0pTQzhCaW5kaW5nczEzUnVudGlt
ZU9iamVjdDEyZGVmYXVsdFZhbHVlRVBLTlNfOEpTT2JqZWN0RVBOU185RXhlY1N0YXRlRU5TXzIy
UHJlZmVycmVkUHJpbWl0aXZlVHlwZUUKLV9fWk4zSlNDOEJpbmRpbmdzMTNSdW50aW1lT2JqZWN0
MTRkZWxldGVQcm9wZXJ0eUVQTlNfNkpTQ2VsbEVQTlNfOUV4ZWNTdGF0ZUVSS05TXzEwSWRlbnRp
ZmllckUKK19fWk4zSlNDOEJpbmRpbmdzMTNSdW50aW1lT2JqZWN0MTRkZWxldGVQcm9wZXJ0eUVQ
TlNfNkpTQ2VsbEVQTlNfOUV4ZWNTdGF0ZUVOU18xMlByb3BlcnR5TmFtZUUKIF9fWk4zSlNDOEJp
bmRpbmdzMTNSdW50aW1lT2JqZWN0MTRmaW5pc2hDcmVhdGlvbkVQTlNfMTRKU0dsb2JhbE9iamVj
dEUKIF9fWk4zSlNDOEJpbmRpbmdzMTNSdW50aW1lT2JqZWN0MTZnZXRDb25zdHJ1Y3REYXRhRVBO
U182SlNDZWxsRVJOU18xM0NvbnN0cnVjdERhdGFFCi1fX1pOM0pTQzhCaW5kaW5nczEzUnVudGlt
ZU9iamVjdDE4Z2V0T3duUHJvcGVydHlTbG90RVBOU182SlNDZWxsRVBOU185RXhlY1N0YXRlRVJL
TlNfMTBJZGVudGlmaWVyRVJOU18xMlByb3BlcnR5U2xvdEUKK19fWk4zSlNDOEJpbmRpbmdzMTNS
dW50aW1lT2JqZWN0MThnZXRPd25Qcm9wZXJ0eVNsb3RFUE5TXzZKU0NlbGxFUE5TXzlFeGVjU3Rh
dGVFTlNfMTJQcm9wZXJ0eU5hbWVFUk5TXzEyUHJvcGVydHlTbG90RQogX19aTjNKU0M4QmluZGlu
Z3MxM1J1bnRpbWVPYmplY3QxOWdldE93blByb3BlcnR5TmFtZXNFUE5TXzhKU09iamVjdEVQTlNf
OUV4ZWNTdGF0ZUVSTlNfMTdQcm9wZXJ0eU5hbWVBcnJheUVOU18xNUVudW1lcmF0aW9uTW9kZUUK
LV9fWk4zSlNDOEJpbmRpbmdzMTNSdW50aW1lT2JqZWN0MjRnZXRPd25Qcm9wZXJ0eURlc2NyaXB0
b3JFUE5TXzhKU09iamVjdEVQTlNfOUV4ZWNTdGF0ZUVSS05TXzEwSWRlbnRpZmllckVSTlNfMThQ
cm9wZXJ0eURlc2NyaXB0b3JFCi1fX1pOM0pTQzhCaW5kaW5nczEzUnVudGltZU9iamVjdDNwdXRF
UE5TXzZKU0NlbGxFUE5TXzlFeGVjU3RhdGVFUktOU18xMElkZW50aWZpZXJFTlNfN0pTVmFsdWVF
Uk5TXzE1UHV0UHJvcGVydHlTbG90RQorX19aTjNKU0M4QmluZGluZ3MxM1J1bnRpbWVPYmplY3Qy
NGdldE93blByb3BlcnR5RGVzY3JpcHRvckVQTlNfOEpTT2JqZWN0RVBOU185RXhlY1N0YXRlRU5T
XzEyUHJvcGVydHlOYW1lRVJOU18xOFByb3BlcnR5RGVzY3JpcHRvckUKK19fWk4zSlNDOEJpbmRp
bmdzMTNSdW50aW1lT2JqZWN0M3B1dEVQTlNfNkpTQ2VsbEVQTlNfOUV4ZWNTdGF0ZUVOU18xMlBy
b3BlcnR5TmFtZUVOU183SlNWYWx1ZUVSTlNfMTVQdXRQcm9wZXJ0eVNsb3RFCiBfX1pOM0pTQzhC
aW5kaW5nczEzUnVudGltZU9iamVjdDZzX2luZm9FCiBfX1pOM0pTQzhCaW5kaW5nczEzUnVudGlt
ZU9iamVjdDdkZXN0cm95RVBOU182SlNDZWxsRQogX19aTjNKU0M4QmluZGluZ3MxM1J1bnRpbWVP
YmplY3RDMkVQTlNfOUV4ZWNTdGF0ZUVQTlNfMTRKU0dsb2JhbE9iamVjdEVQTlNfOVN0cnVjdHVy
ZUVOM1dURjEwUGFzc1JlZlB0cklOUzBfOEluc3RhbmNlRUVFCkluZGV4OiBTb3VyY2UvV2ViQ29y
ZS9iaW5kaW5ncy9qcy9KU0NTU1N0eWxlRGVjbGFyYXRpb25DdXN0b20uY3BwCj09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0K
LS0tIFNvdXJjZS9XZWJDb3JlL2JpbmRpbmdzL2pzL0pTQ1NTU3R5bGVEZWNsYXJhdGlvbkN1c3Rv
bS5jcHAJKHJldmlzaW9uIDExNjY2NykKKysrIFNvdXJjZS9XZWJDb3JlL2JpbmRpbmdzL2pzL0pT
Q1NTU3R5bGVEZWNsYXJhdGlvbkN1c3RvbS5jcHAJKHdvcmtpbmcgY29weSkKQEAgLTE3NiwxNiAr
MTc2LDE2IEBAIHN0YXRpYyBpbmxpbmUgdm9pZCB3cml0ZUVwdWJQcmVmaXgoY2hhcioKICAgICAq
YnVmZmVyKysgPSAnLSc7CiB9CiAKLXN0YXRpYyBDU1NQcm9wZXJ0eUluZm8gY3NzUHJvcGVydHlJ
REZvckpTQ1NTUHJvcGVydHlOYW1lKGNvbnN0IElkZW50aWZpZXImIHByb3BlcnR5TmFtZSkKK3N0
YXRpYyBDU1NQcm9wZXJ0eUluZm8gY3NzUHJvcGVydHlJREZvckpTQ1NTUHJvcGVydHlOYW1lKFBy
b3BlcnR5TmFtZSBwcm9wZXJ0eU5hbWUpCiB7CiAgICAgQ1NTUHJvcGVydHlJbmZvIHByb3BlcnR5
SW5mbyA9IHtDU1NQcm9wZXJ0eUludmFsaWQsIGZhbHNlfTsKICAgICBib29sIGhhZFBpeGVsT3JQ
b3NQcmVmaXggPSBmYWxzZTsKIAotICAgIHVuc2lnbmVkIGxlbmd0aCA9IHByb3BlcnR5TmFtZS5s
ZW5ndGgoKTsKKyAgICBTdHJpbmdJbXBsKiBwcm9wZXJ0eU5hbWVTdHJpbmcgPSBwcm9wZXJ0eU5h
bWUuaW1wbCgpOworICAgIHVuc2lnbmVkIGxlbmd0aCA9IHByb3BlcnR5TmFtZVN0cmluZy0+bGVu
Z3RoKCk7CiAgICAgaWYgKCFsZW5ndGgpCiAgICAgICAgIHJldHVybiBwcm9wZXJ0eUluZm87CiAK
LSAgICBTdHJpbmdJbXBsKiBwcm9wZXJ0eU5hbWVTdHJpbmcgPSBwcm9wZXJ0eU5hbWUuaW1wbCgp
OwogICAgIFN0cmluZyBzdHJpbmdGb3JDYWNoZSA9IFN0cmluZyhwcm9wZXJ0eU5hbWVTdHJpbmcp
OwogICAgIHR5cGVkZWYgSGFzaE1hcDxTdHJpbmcsIENTU1Byb3BlcnR5SW5mbz4gQ1NTUHJvcGVy
dHlJbmZvTWFwOwogICAgIERFRklORV9TVEFUSUNfTE9DQUwoQ1NTUHJvcGVydHlJbmZvTWFwLCBw
cm9wZXJ0eUluZm9DYWNoZSwgKCkpOwpAQCAtMzIwLDcgKzMyMCw3IEBAIHN0YXRpYyBKU1ZhbHVl
IGNzc1Byb3BlcnR5R2V0dGVyQ2FsbGJhY2sKICAgICByZXR1cm4gY3NzUHJvcGVydHlHZXR0ZXIo
ZXhlYywganNDYXN0PEpTQ1NTU3R5bGVEZWNsYXJhdGlvbio+KGFzT2JqZWN0KHNsb3RCYXNlKSks
IHByb3BlcnR5SUQpOwogfQogCi1ib29sIEpTQ1NTU3R5bGVEZWNsYXJhdGlvbjo6Z2V0T3duUHJv
cGVydHlTbG90RGVsZWdhdGUoRXhlY1N0YXRlKiwgY29uc3QgSWRlbnRpZmllciYgcHJvcGVydHlJ
ZGVudGlmaWVyLCBQcm9wZXJ0eVNsb3QmIHNsb3QpCitib29sIEpTQ1NTU3R5bGVEZWNsYXJhdGlv
bjo6Z2V0T3duUHJvcGVydHlTbG90RGVsZWdhdGUoRXhlY1N0YXRlKiwgUHJvcGVydHlOYW1lIHBy
b3BlcnR5SWRlbnRpZmllciwgUHJvcGVydHlTbG90JiBzbG90KQogewogICAgIENTU1Byb3BlcnR5
SW5mbyBwcm9wZXJ0eUluZm8gPSBjc3NQcm9wZXJ0eUlERm9ySlNDU1NQcm9wZXJ0eU5hbWUocHJv
cGVydHlJZGVudGlmaWVyKTsKICAgICBpZiAoIXByb3BlcnR5SW5mby5wcm9wZXJ0eUlEKQpAQCAt
MzMzLDcgKzMzMyw3IEBAIGJvb2wgSlNDU1NTdHlsZURlY2xhcmF0aW9uOjpnZXRPd25Qcm9wZXIK
ICAgICByZXR1cm4gdHJ1ZTsKIH0KIAotYm9vbCBKU0NTU1N0eWxlRGVjbGFyYXRpb246OmdldE93
blByb3BlcnR5RGVzY3JpcHRvckRlbGVnYXRlKEpTQzo6RXhlY1N0YXRlKiBleGVjLCBjb25zdCBK
U0M6OklkZW50aWZpZXImIHByb3BlcnR5SWRlbnRpZmllciwgSlNDOjpQcm9wZXJ0eURlc2NyaXB0
b3ImIGRlc2NyaXB0b3IpCitib29sIEpTQ1NTU3R5bGVEZWNsYXJhdGlvbjo6Z2V0T3duUHJvcGVy
dHlEZXNjcmlwdG9yRGVsZWdhdGUoSlNDOjpFeGVjU3RhdGUqIGV4ZWMsIEpTQzo6UHJvcGVydHlO
YW1lIHByb3BlcnR5SWRlbnRpZmllciwgSlNDOjpQcm9wZXJ0eURlc2NyaXB0b3ImIGRlc2NyaXB0
b3IpCiB7CiAgICAgQ1NTUHJvcGVydHlJbmZvIHByb3BlcnR5SW5mbyA9IGNzc1Byb3BlcnR5SURG
b3JKU0NTU1Byb3BlcnR5TmFtZShwcm9wZXJ0eUlkZW50aWZpZXIpOwogICAgIGlmICghcHJvcGVy
dHlJbmZvLnByb3BlcnR5SUQpCkBAIC0zNDgsNyArMzQ4LDcgQEAgYm9vbCBKU0NTU1N0eWxlRGVj
bGFyYXRpb246OmdldE93blByb3BlcgogICAgIHJldHVybiB0cnVlOwogfQogCi1ib29sIEpTQ1NT
U3R5bGVEZWNsYXJhdGlvbjo6cHV0RGVsZWdhdGUoRXhlY1N0YXRlKiBleGVjLCBjb25zdCBJZGVu
dGlmaWVyJiBwcm9wZXJ0eU5hbWUsIEpTVmFsdWUgdmFsdWUsIFB1dFByb3BlcnR5U2xvdCYpCiti
b29sIEpTQ1NTU3R5bGVEZWNsYXJhdGlvbjo6cHV0RGVsZWdhdGUoRXhlY1N0YXRlKiBleGVjLCBQ
cm9wZXJ0eU5hbWUgcHJvcGVydHlOYW1lLCBKU1ZhbHVlIHZhbHVlLCBQdXRQcm9wZXJ0eVNsb3Qm
KQogewogICAgIENTU1Byb3BlcnR5SW5mbyBwcm9wZXJ0eUluZm8gPSBjc3NQcm9wZXJ0eUlERm9y
SlNDU1NQcm9wZXJ0eU5hbWUocHJvcGVydHlOYW1lKTsKICAgICBpZiAoIXByb3BlcnR5SW5mby5w
cm9wZXJ0eUlEKQpJbmRleDogU291cmNlL1dlYkNvcmUvYmluZGluZ3MvanMvSlNET01CaW5kaW5n
LmNwcAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2ViQ29yZS9iaW5kaW5ncy9qcy9KU0RPTUJpbmRp
bmcuY3BwCShyZXZpc2lvbiAxMTY2NjcpCisrKyBTb3VyY2UvV2ViQ29yZS9iaW5kaW5ncy9qcy9K
U0RPTUJpbmRpbmcuY3BwCSh3b3JraW5nIGNvcHkpCkBAIC0xMDcsMTEgKzEwNywxMSBAQCBKU1Zh
bHVlIGpzU3RyaW5nT3JGYWxzZShFeGVjU3RhdGUqIGV4ZWMsCiAgICAgcmV0dXJuIGpzU3RyaW5n
KGV4ZWMsIHVybC5zdHJpbmcoKSk7CiB9CiAKLUF0b21pY1N0cmluZ0ltcGwqIGZpbmRBdG9taWNT
dHJpbmcoY29uc3QgSWRlbnRpZmllciYgaWRlbnRpZmllcikKK0F0b21pY1N0cmluZ0ltcGwqIGZp
bmRBdG9taWNTdHJpbmcoUHJvcGVydHlOYW1lIHByb3BlcnR5TmFtZSkKIHsKLSAgICBpZiAoaWRl
bnRpZmllci5pc051bGwoKSkKKyAgICBTdHJpbmdJbXBsKiBpbXBsID0gcHJvcGVydHlOYW1lLmlt
cGwoKTsKKyAgICBpZiAoIWltcGwpCiAgICAgICAgIHJldHVybiAwOwotICAgIFN0cmluZ0ltcGwq
IGltcGwgPSBpZGVudGlmaWVyLmltcGwoKTsKICAgICBBU1NFUlQoaW1wbC0+ZXhpc3RpbmdIYXNo
KCkpOwogICAgIHJldHVybiBBdG9taWNTdHJpbmc6OmZpbmQoaW1wbC0+Y2hhcmFjdGVycygpLCBp
bXBsLT5sZW5ndGgoKSwgaW1wbC0+ZXhpc3RpbmdIYXNoKCkpOwogfQpAQCAtMjQzLDkgKzI0Myw5
IEBAIHZvaWQgcHJpbnRFcnJvck1lc3NhZ2VGb3JGcmFtZShGcmFtZSogZnIKICAgICBmcmFtZS0+
ZG9tV2luZG93KCktPnByaW50RXJyb3JNZXNzYWdlKG1lc3NhZ2UpOwogfQogCi1KU1ZhbHVlIG9i
amVjdFRvU3RyaW5nRnVuY3Rpb25HZXR0ZXIoRXhlY1N0YXRlKiBleGVjLCBKU1ZhbHVlLCBjb25z
dCBJZGVudGlmaWVyJiBwcm9wZXJ0eU5hbWUpCitKU1ZhbHVlIG9iamVjdFRvU3RyaW5nRnVuY3Rp
b25HZXR0ZXIoRXhlY1N0YXRlKiBleGVjLCBKU1ZhbHVlLCBQcm9wZXJ0eU5hbWUgcHJvcGVydHlO
YW1lKQogewotICAgIHJldHVybiBKU0Z1bmN0aW9uOjpjcmVhdGUoZXhlYywgZXhlYy0+bGV4aWNh
bEdsb2JhbE9iamVjdCgpLCAwLCBwcm9wZXJ0eU5hbWUsIG9iamVjdFByb3RvRnVuY1RvU3RyaW5n
KTsKKyAgICByZXR1cm4gSlNGdW5jdGlvbjo6Y3JlYXRlKGV4ZWMsIGV4ZWMtPmxleGljYWxHbG9i
YWxPYmplY3QoKSwgMCwgcHJvcGVydHlOYW1lLmltcGwoKSwgb2JqZWN0UHJvdG9GdW5jVG9TdHJp
bmcpOwogfQogCiBTdHJ1Y3R1cmUqIGdldENhY2hlZERPTVN0cnVjdHVyZShKU0RPTUdsb2JhbE9i
amVjdCogZ2xvYmFsT2JqZWN0LCBjb25zdCBDbGFzc0luZm8qIGNsYXNzSW5mbykKSW5kZXg6IFNv
dXJjZS9XZWJDb3JlL2JpbmRpbmdzL2pzL0pTRE9NQmluZGluZy5oCj09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNv
dXJjZS9XZWJDb3JlL2JpbmRpbmdzL2pzL0pTRE9NQmluZGluZy5oCShyZXZpc2lvbiAxMTY2Njcp
CisrKyBTb3VyY2UvV2ViQ29yZS9iaW5kaW5ncy9qcy9KU0RPTUJpbmRpbmcuaAkod29ya2luZyBj
b3B5KQpAQCAtMjUyLDEzICsyNTIsMTMgQEAgZW51bSBQYXJhbWV0ZXJEZWZhdWx0UG9saWN5IHsK
ICAgICAvLyBvYmplY3QsIHRvIGxldCB0aGUgZW5naW5lIGtub3cgdGhhdCBjb2xsZWN0aW5nIHRo
ZSBKU1N0cmluZyB3cmFwcGVyIGlzIHVubGlrZWx5IHRvIHNhdmUgbWVtb3J5LgogICAgIEpTQzo6
SlNWYWx1ZSBqc093bmVkU3RyaW5nT3JOdWxsKEpTQzo6RXhlY1N0YXRlKiwgY29uc3QgU3RyaW5n
Jik7IAogCi0gICAgU3RyaW5nIGlkZW50aWZpZXJUb1N0cmluZyhjb25zdCBKU0M6OklkZW50aWZp
ZXImKTsKKyAgICBTdHJpbmcgcHJvcGVydHlOYW1lVG9TdHJpbmcoSlNDOjpQcm9wZXJ0eU5hbWUp
OwogICAgIFN0cmluZyB1c3RyaW5nVG9TdHJpbmcoY29uc3QgSlNDOjpVU3RyaW5nJik7CiAgICAg
SlNDOjpVU3RyaW5nIHN0cmluZ1RvVVN0cmluZyhjb25zdCBTdHJpbmcmKTsKIAotICAgIEF0b21p
Y1N0cmluZyBpZGVudGlmaWVyVG9BdG9taWNTdHJpbmcoY29uc3QgSlNDOjpJZGVudGlmaWVyJik7
CisgICAgQXRvbWljU3RyaW5nIHByb3BlcnR5TmFtZVRvQXRvbWljU3RyaW5nKEpTQzo6UHJvcGVy
dHlOYW1lKTsKICAgICBBdG9taWNTdHJpbmcgdXN0cmluZ1RvQXRvbWljU3RyaW5nKGNvbnN0IEpT
Qzo6VVN0cmluZyYpOwotICAgIEF0b21pY1N0cmluZ0ltcGwqIGZpbmRBdG9taWNTdHJpbmcoY29u
c3QgSlNDOjpJZGVudGlmaWVyJik7CisgICAgQXRvbWljU3RyaW5nSW1wbCogZmluZEF0b21pY1N0
cmluZyhKU0M6OlByb3BlcnR5TmFtZSk7CiAKICAgICBTdHJpbmcgdmFsdWVUb1N0cmluZ1dpdGhO
dWxsQ2hlY2soSlNDOjpFeGVjU3RhdGUqLCBKU0M6OkpTVmFsdWUpOyAvLyBudWxsIGlmIHRoZSB2
YWx1ZSBpcyBudWxsCiAgICAgU3RyaW5nIHZhbHVlVG9TdHJpbmdXaXRoVW5kZWZpbmVkT3JOdWxs
Q2hlY2soSlNDOjpFeGVjU3RhdGUqLCBKU0M6OkpTVmFsdWUpOyAvLyBudWxsIGlmIHRoZSB2YWx1
ZSBpcyBudWxsIG9yIHVuZGVmaW5lZApAQCAtMzM3LDcgKzMzNyw3IEBAIGVudW0gUGFyYW1ldGVy
RGVmYXVsdFBvbGljeSB7CiAgICAgRE9NV2luZG93KiBmaXJzdERPTVdpbmRvdyhKU0M6OkV4ZWNT
dGF0ZSopOwogCiAgICAgdm9pZCBwcmludEVycm9yTWVzc2FnZUZvckZyYW1lKEZyYW1lKiwgY29u
c3QgU3RyaW5nJiBtZXNzYWdlKTsKLSAgICBKU0M6OkpTVmFsdWUgb2JqZWN0VG9TdHJpbmdGdW5j
dGlvbkdldHRlcihKU0M6OkV4ZWNTdGF0ZSosIEpTQzo6SlNWYWx1ZSwgY29uc3QgSlNDOjpJZGVu
dGlmaWVyJiBwcm9wZXJ0eU5hbWUpOworICAgIEpTQzo6SlNWYWx1ZSBvYmplY3RUb1N0cmluZ0Z1
bmN0aW9uR2V0dGVyKEpTQzo6RXhlY1N0YXRlKiwgSlNDOjpKU1ZhbHVlLCBKU0M6OlByb3BlcnR5
TmFtZSk7CiAKICAgICBpbmxpbmUgSlNDOjpKU1ZhbHVlIGpzU3RyaW5nKEpTQzo6RXhlY1N0YXRl
KiBleGVjLCBjb25zdCBTdHJpbmcmIHMpCiAgICAgewpAQCAtMzcxLDkgKzM3MSw5IEBAIGVudW0g
UGFyYW1ldGVyRGVmYXVsdFBvbGljeSB7CiAgICAgICAgIHJldHVybiBKU0M6OlVTdHJpbmcocy5p
bXBsKCkpOwogICAgIH0KIAotICAgIGlubGluZSBTdHJpbmcgaWRlbnRpZmllclRvU3RyaW5nKGNv
bnN0IEpTQzo6SWRlbnRpZmllciYgaSkKKyAgICBpbmxpbmUgU3RyaW5nIHByb3BlcnR5TmFtZVRv
U3RyaW5nKEpTQzo6UHJvcGVydHlOYW1lIHByb3BlcnR5TmFtZSkKICAgICB7Ci0gICAgICAgIHJl
dHVybiBpLmltcGwoKTsKKyAgICAgICAgcmV0dXJuIHByb3BlcnR5TmFtZS5pbXBsKCk7CiAgICAg
fQogCiAgICAgaW5saW5lIEF0b21pY1N0cmluZyB1c3RyaW5nVG9BdG9taWNTdHJpbmcoY29uc3Qg
SlNDOjpVU3RyaW5nJiB1KQpAQCAtMzgxLDkgKzM4MSw5IEBAIGVudW0gUGFyYW1ldGVyRGVmYXVs
dFBvbGljeSB7CiAgICAgICAgIHJldHVybiBBdG9taWNTdHJpbmcodS5pbXBsKCkpOwogICAgIH0K
IAotICAgIGlubGluZSBBdG9taWNTdHJpbmcgaWRlbnRpZmllclRvQXRvbWljU3RyaW5nKGNvbnN0
IEpTQzo6SWRlbnRpZmllciYgaWRlbnRpZmllcikKKyAgICBpbmxpbmUgQXRvbWljU3RyaW5nIHBy
b3BlcnR5TmFtZVRvQXRvbWljU3RyaW5nKEpTQzo6UHJvcGVydHlOYW1lIHByb3BlcnR5TmFtZSkK
ICAgICB7Ci0gICAgICAgIHJldHVybiBBdG9taWNTdHJpbmcoaWRlbnRpZmllci5pbXBsKCkpOwor
ICAgICAgICByZXR1cm4gQXRvbWljU3RyaW5nKHByb3BlcnR5TmFtZS5pbXBsKCkpOwogICAgIH0K
IAogICAgIGlubGluZSBWZWN0b3I8dW5zaWduZWQgbG9uZz4ganNVbnNpZ25lZExvbmdBcnJheVRv
VmVjdG9yKEpTQzo6RXhlY1N0YXRlKiBleGVjLCBKU0M6OkpTVmFsdWUgdmFsdWUpCkluZGV4OiBT
b3VyY2UvV2ViQ29yZS9iaW5kaW5ncy9qcy9KU0RPTU1pbWVUeXBlQXJyYXlDdXN0b20uY3BwCj09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT0KLS0tIFNvdXJjZS9XZWJDb3JlL2JpbmRpbmdzL2pzL0pTRE9NTWltZVR5cGVBcnJh
eUN1c3RvbS5jcHAJKHJldmlzaW9uIDExNjY2NykKKysrIFNvdXJjZS9XZWJDb3JlL2JpbmRpbmdz
L2pzL0pTRE9NTWltZVR5cGVBcnJheUN1c3RvbS5jcHAJKHdvcmtpbmcgY29weSkKQEAgLTI4LDE1
ICsyOCwxNSBAQCBuYW1lc3BhY2UgV2ViQ29yZSB7CiAKIHVzaW5nIG5hbWVzcGFjZSBKU0M7CiAK
LWJvb2wgSlNET01NaW1lVHlwZUFycmF5OjpjYW5HZXRJdGVtc0Zvck5hbWUoRXhlY1N0YXRlKiwg
RE9NTWltZVR5cGVBcnJheSogbWltZVR5cGVBcnJheSwgY29uc3QgSWRlbnRpZmllciYgcHJvcGVy
dHlOYW1lKQorYm9vbCBKU0RPTU1pbWVUeXBlQXJyYXk6OmNhbkdldEl0ZW1zRm9yTmFtZShFeGVj
U3RhdGUqLCBET01NaW1lVHlwZUFycmF5KiBtaW1lVHlwZUFycmF5LCBQcm9wZXJ0eU5hbWUgcHJv
cGVydHlOYW1lKQogewotICAgIHJldHVybiBtaW1lVHlwZUFycmF5LT5jYW5HZXRJdGVtc0Zvck5h
bWUoaWRlbnRpZmllclRvQXRvbWljU3RyaW5nKHByb3BlcnR5TmFtZSkpOworICAgIHJldHVybiBt
aW1lVHlwZUFycmF5LT5jYW5HZXRJdGVtc0Zvck5hbWUocHJvcGVydHlOYW1lVG9BdG9taWNTdHJp
bmcocHJvcGVydHlOYW1lKSk7CiB9CiAKLUpTVmFsdWUgSlNET01NaW1lVHlwZUFycmF5OjpuYW1l
R2V0dGVyKEV4ZWNTdGF0ZSogZXhlYywgSlNWYWx1ZSBzbG90QmFzZSwgY29uc3QgSWRlbnRpZmll
ciYgcHJvcGVydHlOYW1lKQorSlNWYWx1ZSBKU0RPTU1pbWVUeXBlQXJyYXk6Om5hbWVHZXR0ZXIo
RXhlY1N0YXRlKiBleGVjLCBKU1ZhbHVlIHNsb3RCYXNlLCBQcm9wZXJ0eU5hbWUgcHJvcGVydHlO
YW1lKQogewogICAgIEpTRE9NTWltZVR5cGVBcnJheSogdGhpc09iaiA9IGpzQ2FzdDxKU0RPTU1p
bWVUeXBlQXJyYXkqPihhc09iamVjdChzbG90QmFzZSkpOwotICAgIHJldHVybiB0b0pTKGV4ZWMs
IHRoaXNPYmotPmdsb2JhbE9iamVjdCgpLCB0aGlzT2JqLT5pbXBsKCktPm5hbWVkSXRlbShpZGVu
dGlmaWVyVG9BdG9taWNTdHJpbmcocHJvcGVydHlOYW1lKSkpOworICAgIHJldHVybiB0b0pTKGV4
ZWMsIHRoaXNPYmotPmdsb2JhbE9iamVjdCgpLCB0aGlzT2JqLT5pbXBsKCktPm5hbWVkSXRlbShw
cm9wZXJ0eU5hbWVUb0F0b21pY1N0cmluZyhwcm9wZXJ0eU5hbWUpKSk7CiB9CiAKIH0gLy8gbmFt
ZXNwYWNlIFdlYkNvcmUKSW5kZXg6IFNvdXJjZS9XZWJDb3JlL2JpbmRpbmdzL2pzL0pTRE9NUGx1
Z2luQXJyYXlDdXN0b20uY3BwCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9XZWJDb3JlL2JpbmRpbmdz
L2pzL0pTRE9NUGx1Z2luQXJyYXlDdXN0b20uY3BwCShyZXZpc2lvbiAxMTY2NjcpCisrKyBTb3Vy
Y2UvV2ViQ29yZS9iaW5kaW5ncy9qcy9KU0RPTVBsdWdpbkFycmF5Q3VzdG9tLmNwcAkod29ya2lu
ZyBjb3B5KQpAQCAtMjgsMTUgKzI4LDE1IEBAIG5hbWVzcGFjZSBXZWJDb3JlIHsKIAogdXNpbmcg
bmFtZXNwYWNlIEpTQzsKIAotYm9vbCBKU0RPTVBsdWdpbkFycmF5OjpjYW5HZXRJdGVtc0Zvck5h
bWUoRXhlY1N0YXRlKiwgRE9NUGx1Z2luQXJyYXkqIHBsdWdpbkFycmF5LCBjb25zdCBJZGVudGlm
aWVyJiBwcm9wZXJ0eU5hbWUpCitib29sIEpTRE9NUGx1Z2luQXJyYXk6OmNhbkdldEl0ZW1zRm9y
TmFtZShFeGVjU3RhdGUqLCBET01QbHVnaW5BcnJheSogcGx1Z2luQXJyYXksIFByb3BlcnR5TmFt
ZSBwcm9wZXJ0eU5hbWUpCiB7Ci0gICAgcmV0dXJuIHBsdWdpbkFycmF5LT5jYW5HZXRJdGVtc0Zv
ck5hbWUoaWRlbnRpZmllclRvQXRvbWljU3RyaW5nKHByb3BlcnR5TmFtZSkpOworICAgIHJldHVy
biBwbHVnaW5BcnJheS0+Y2FuR2V0SXRlbXNGb3JOYW1lKHByb3BlcnR5TmFtZVRvQXRvbWljU3Ry
aW5nKHByb3BlcnR5TmFtZSkpOwogfQogCi1KU1ZhbHVlIEpTRE9NUGx1Z2luQXJyYXk6Om5hbWVH
ZXR0ZXIoRXhlY1N0YXRlKiBleGVjLCBKU1ZhbHVlIHNsb3RCYXNlLCBjb25zdCBJZGVudGlmaWVy
JiBwcm9wZXJ0eU5hbWUpCitKU1ZhbHVlIEpTRE9NUGx1Z2luQXJyYXk6Om5hbWVHZXR0ZXIoRXhl
Y1N0YXRlKiBleGVjLCBKU1ZhbHVlIHNsb3RCYXNlLCBQcm9wZXJ0eU5hbWUgcHJvcGVydHlOYW1l
KQogewogICAgIEpTRE9NUGx1Z2luQXJyYXkqIHRoaXNPYmogPSBqc0Nhc3Q8SlNET01QbHVnaW5B
cnJheSo+KGFzT2JqZWN0KHNsb3RCYXNlKSk7Ci0gICAgcmV0dXJuIHRvSlMoZXhlYywgdGhpc09i
ai0+Z2xvYmFsT2JqZWN0KCksIHRoaXNPYmotPmltcGwoKS0+bmFtZWRJdGVtKGlkZW50aWZpZXJU
b0F0b21pY1N0cmluZyhwcm9wZXJ0eU5hbWUpKSk7CisgICAgcmV0dXJuIHRvSlMoZXhlYywgdGhp
c09iai0+Z2xvYmFsT2JqZWN0KCksIHRoaXNPYmotPmltcGwoKS0+bmFtZWRJdGVtKHByb3BlcnR5
TmFtZVRvQXRvbWljU3RyaW5nKHByb3BlcnR5TmFtZSkpKTsKIH0KIAogfSAvLyBuYW1lc3BhY2Ug
V2ViQ29yZQpJbmRleDogU291cmNlL1dlYkNvcmUvYmluZGluZ3MvanMvSlNET01QbHVnaW5DdXN0
b20uY3BwCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9XZWJDb3JlL2JpbmRpbmdzL2pzL0pTRE9NUGx1
Z2luQ3VzdG9tLmNwcAkocmV2aXNpb24gMTE2NjY3KQorKysgU291cmNlL1dlYkNvcmUvYmluZGlu
Z3MvanMvSlNET01QbHVnaW5DdXN0b20uY3BwCSh3b3JraW5nIGNvcHkpCkBAIC0yNywxNSArMjcs
MTUgQEAgbmFtZXNwYWNlIFdlYkNvcmUgewogCiB1c2luZyBuYW1lc3BhY2UgSlNDOwogCi1ib29s
IEpTRE9NUGx1Z2luOjpjYW5HZXRJdGVtc0Zvck5hbWUoRXhlY1N0YXRlKiwgRE9NUGx1Z2luKiBw
bHVnaW4sIGNvbnN0IElkZW50aWZpZXImIHByb3BlcnR5TmFtZSkKK2Jvb2wgSlNET01QbHVnaW46
OmNhbkdldEl0ZW1zRm9yTmFtZShFeGVjU3RhdGUqLCBET01QbHVnaW4qIHBsdWdpbiwgUHJvcGVy
dHlOYW1lIHByb3BlcnR5TmFtZSkKIHsKLSAgICByZXR1cm4gcGx1Z2luLT5jYW5HZXRJdGVtc0Zv
ck5hbWUoaWRlbnRpZmllclRvQXRvbWljU3RyaW5nKHByb3BlcnR5TmFtZSkpOworICAgIHJldHVy
biBwbHVnaW4tPmNhbkdldEl0ZW1zRm9yTmFtZShwcm9wZXJ0eU5hbWVUb0F0b21pY1N0cmluZyhw
cm9wZXJ0eU5hbWUpKTsKIH0KIAotSlNWYWx1ZSBKU0RPTVBsdWdpbjo6bmFtZUdldHRlcihFeGVj
U3RhdGUqIGV4ZWMsIEpTVmFsdWUgc2xvdEJhc2UsIGNvbnN0IElkZW50aWZpZXImIHByb3BlcnR5
TmFtZSkKK0pTVmFsdWUgSlNET01QbHVnaW46Om5hbWVHZXR0ZXIoRXhlY1N0YXRlKiBleGVjLCBK
U1ZhbHVlIHNsb3RCYXNlLCBQcm9wZXJ0eU5hbWUgcHJvcGVydHlOYW1lKQogewogICAgIEpTRE9N
UGx1Z2luKiB0aGlzT2JqID0ganNDYXN0PEpTRE9NUGx1Z2luKj4oYXNPYmplY3Qoc2xvdEJhc2Up
KTsKLSAgICByZXR1cm4gdG9KUyhleGVjLCB0aGlzT2JqLT5nbG9iYWxPYmplY3QoKSwgdGhpc09i
ai0+aW1wbCgpLT5uYW1lZEl0ZW0oaWRlbnRpZmllclRvQXRvbWljU3RyaW5nKHByb3BlcnR5TmFt
ZSkpKTsKKyAgICByZXR1cm4gdG9KUyhleGVjLCB0aGlzT2JqLT5nbG9iYWxPYmplY3QoKSwgdGhp
c09iai0+aW1wbCgpLT5uYW1lZEl0ZW0ocHJvcGVydHlOYW1lVG9BdG9taWNTdHJpbmcocHJvcGVy
dHlOYW1lKSkpOwogfQogCiB9IC8vIG5hbWVzcGFjZSBXZWJDb3JlCkluZGV4OiBTb3VyY2UvV2Vi
Q29yZS9iaW5kaW5ncy9qcy9KU0RPTVN0cmluZ01hcEN1c3RvbS5jcHAKPT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0g
U291cmNlL1dlYkNvcmUvYmluZGluZ3MvanMvSlNET01TdHJpbmdNYXBDdXN0b20uY3BwCShyZXZp
c2lvbiAxMTY2NjcpCisrKyBTb3VyY2UvV2ViQ29yZS9iaW5kaW5ncy9qcy9KU0RPTVN0cmluZ01h
cEN1c3RvbS5jcHAJKHdvcmtpbmcgY29weSkKQEAgLTM1LDE1ICszNSwxNSBAQCB1c2luZyBuYW1l
c3BhY2UgSlNDOwogCiBuYW1lc3BhY2UgV2ViQ29yZSB7CiAKLWJvb2wgSlNET01TdHJpbmdNYXA6
OmNhbkdldEl0ZW1zRm9yTmFtZShFeGVjU3RhdGUqLCBET01TdHJpbmdNYXAqIGltcGwsIGNvbnN0
IElkZW50aWZpZXImIHByb3BlcnR5TmFtZSkKK2Jvb2wgSlNET01TdHJpbmdNYXA6OmNhbkdldEl0
ZW1zRm9yTmFtZShFeGVjU3RhdGUqLCBET01TdHJpbmdNYXAqIGltcGwsIFByb3BlcnR5TmFtZSBw
cm9wZXJ0eU5hbWUpCiB7Ci0gICAgcmV0dXJuIGltcGwtPmNvbnRhaW5zKGlkZW50aWZpZXJUb0F0
b21pY1N0cmluZyhwcm9wZXJ0eU5hbWUpKTsKKyAgICByZXR1cm4gaW1wbC0+Y29udGFpbnMocHJv
cGVydHlOYW1lVG9BdG9taWNTdHJpbmcocHJvcGVydHlOYW1lKSk7CiB9CiAKLUpTVmFsdWUgSlNE
T01TdHJpbmdNYXA6Om5hbWVHZXR0ZXIoRXhlY1N0YXRlKiBleGVjLCBKU1ZhbHVlIHNsb3RCYXNl
LCBjb25zdCBJZGVudGlmaWVyJiBwcm9wZXJ0eU5hbWUpCitKU1ZhbHVlIEpTRE9NU3RyaW5nTWFw
OjpuYW1lR2V0dGVyKEV4ZWNTdGF0ZSogZXhlYywgSlNWYWx1ZSBzbG90QmFzZSwgUHJvcGVydHlO
YW1lIHByb3BlcnR5TmFtZSkKIHsKICAgICBKU0RPTVN0cmluZ01hcCogdGhpc09iaiA9IGpzQ2Fz
dDxKU0RPTVN0cmluZ01hcCo+KGFzT2JqZWN0KHNsb3RCYXNlKSk7Ci0gICAgcmV0dXJuIGpzU3Ry
aW5nKGV4ZWMsIHRoaXNPYmotPmltcGwoKS0+aXRlbShpZGVudGlmaWVyVG9BdG9taWNTdHJpbmco
cHJvcGVydHlOYW1lKSkpOworICAgIHJldHVybiBqc1N0cmluZyhleGVjLCB0aGlzT2JqLT5pbXBs
KCktPml0ZW0ocHJvcGVydHlOYW1lVG9BdG9taWNTdHJpbmcocHJvcGVydHlOYW1lKSkpOwogfQog
CiB2b2lkIEpTRE9NU3RyaW5nTWFwOjpnZXRPd25Qcm9wZXJ0eU5hbWVzKEpTT2JqZWN0KiBvYmpl
Y3QsIEV4ZWNTdGF0ZSogZXhlYywgUHJvcGVydHlOYW1lQXJyYXkmIHByb3BlcnR5TmFtZXMsIEVu
dW1lcmF0aW9uTW9kZSBtb2RlKQpAQCAtNTgsMTAgKzU4LDEwIEBAIHZvaWQgSlNET01TdHJpbmdN
YXA6OmdldE93blByb3BlcnR5TmFtZXMKICAgICBCYXNlOjpnZXRPd25Qcm9wZXJ0eU5hbWVzKHRo
aXNPYmplY3QsIGV4ZWMsIHByb3BlcnR5TmFtZXMsIG1vZGUpOwogfQogCi1ib29sIEpTRE9NU3Ry
aW5nTWFwOjpkZWxldGVQcm9wZXJ0eShKU0NlbGwqIGNlbGwsIEV4ZWNTdGF0ZSogZXhlYywgY29u
c3QgSWRlbnRpZmllciYgcHJvcGVydHlOYW1lKQorYm9vbCBKU0RPTVN0cmluZ01hcDo6ZGVsZXRl
UHJvcGVydHkoSlNDZWxsKiBjZWxsLCBFeGVjU3RhdGUqIGV4ZWMsIFByb3BlcnR5TmFtZSBwcm9w
ZXJ0eU5hbWUpCiB7CiAgICAgSlNET01TdHJpbmdNYXAqIHRoaXNPYmplY3QgPSBqc0Nhc3Q8SlNE
T01TdHJpbmdNYXAqPihjZWxsKTsKLSAgICBBdG9taWNTdHJpbmcgc3RyaW5nTmFtZSA9IGlkZW50
aWZpZXJUb0F0b21pY1N0cmluZyhwcm9wZXJ0eU5hbWUpOworICAgIEF0b21pY1N0cmluZyBzdHJp
bmdOYW1lID0gcHJvcGVydHlOYW1lVG9BdG9taWNTdHJpbmcocHJvcGVydHlOYW1lKTsKICAgICBp
ZiAoIXRoaXNPYmplY3QtPm1faW1wbC0+Y29udGFpbnMoc3RyaW5nTmFtZSkpCiAgICAgICAgIHJl
dHVybiBmYWxzZTsKICAgICBFeGNlcHRpb25Db2RlIGVjID0gMDsKQEAgLTcwLDEzICs3MCwxMyBA
QCBib29sIEpTRE9NU3RyaW5nTWFwOjpkZWxldGVQcm9wZXJ0eShKU0NlCiAgICAgcmV0dXJuICFl
YzsKIH0KIAotYm9vbCBKU0RPTVN0cmluZ01hcDo6cHV0RGVsZWdhdGUoRXhlY1N0YXRlKiBleGVj
LCBjb25zdCBJZGVudGlmaWVyJiBwcm9wZXJ0eU5hbWUsIEpTVmFsdWUgdmFsdWUsIFB1dFByb3Bl
cnR5U2xvdCYpCitib29sIEpTRE9NU3RyaW5nTWFwOjpwdXREZWxlZ2F0ZShFeGVjU3RhdGUqIGV4
ZWMsIFByb3BlcnR5TmFtZSBwcm9wZXJ0eU5hbWUsIEpTVmFsdWUgdmFsdWUsIFB1dFByb3BlcnR5
U2xvdCYpCiB7CiAgICAgU3RyaW5nIHN0cmluZ1ZhbHVlID0gdXN0cmluZ1RvU3RyaW5nKHZhbHVl
LnRvU3RyaW5nKGV4ZWMpLT52YWx1ZShleGVjKSk7CiAgICAgaWYgKGV4ZWMtPmhhZEV4Y2VwdGlv
bigpKQogICAgICAgICByZXR1cm4gZmFsc2U7CiAgICAgRXhjZXB0aW9uQ29kZSBlYyA9IDA7Ci0g
ICAgaW1wbCgpLT5zZXRJdGVtKGlkZW50aWZpZXJUb1N0cmluZyhwcm9wZXJ0eU5hbWUpLCBzdHJp
bmdWYWx1ZSwgZWMpOworICAgIGltcGwoKS0+c2V0SXRlbShwcm9wZXJ0eU5hbWVUb1N0cmluZyhw
cm9wZXJ0eU5hbWUpLCBzdHJpbmdWYWx1ZSwgZWMpOwogICAgIHNldERPTUV4Y2VwdGlvbihleGVj
LCBlYyk7CiAgICAgcmV0dXJuICFlYzsKIH0KSW5kZXg6IFNvdXJjZS9XZWJDb3JlL2JpbmRpbmdz
L2pzL0pTRE9NV2luZG93Q3VzdG9tLmNwcAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2ViQ29yZS9i
aW5kaW5ncy9qcy9KU0RPTVdpbmRvd0N1c3RvbS5jcHAJKHJldmlzaW9uIDExNjY2NykKKysrIFNv
dXJjZS9XZWJDb3JlL2JpbmRpbmdzL2pzL0pTRE9NV2luZG93Q3VzdG9tLmNwcAkod29ya2luZyBj
b3B5KQpAQCAtOTIsMTQgKzkyLDE0IEBAIHZvaWQgSlNET01XaW5kb3c6OnZpc2l0Q2hpbGRyZW4o
SlNDZWxsKiAKIH0KIAogdGVtcGxhdGU8TmF0aXZlRnVuY3Rpb24gbmF0aXZlRnVuY3Rpb24sIGlu
dCBsZW5ndGg+Ci1KU1ZhbHVlIG5vbkNhY2hpbmdTdGF0aWNGdW5jdGlvbkdldHRlcihFeGVjU3Rh
dGUqIGV4ZWMsIEpTVmFsdWUsIGNvbnN0IElkZW50aWZpZXImIHByb3BlcnR5TmFtZSkKK0pTVmFs
dWUgbm9uQ2FjaGluZ1N0YXRpY0Z1bmN0aW9uR2V0dGVyKEV4ZWNTdGF0ZSogZXhlYywgSlNWYWx1
ZSwgUHJvcGVydHlOYW1lIHByb3BlcnR5TmFtZSkKIHsKLSAgICByZXR1cm4gSlNGdW5jdGlvbjo6
Y3JlYXRlKGV4ZWMsIGV4ZWMtPmxleGljYWxHbG9iYWxPYmplY3QoKSwgbGVuZ3RoLCBwcm9wZXJ0
eU5hbWUsIG5hdGl2ZUZ1bmN0aW9uKTsKKyAgICByZXR1cm4gSlNGdW5jdGlvbjo6Y3JlYXRlKGV4
ZWMsIGV4ZWMtPmxleGljYWxHbG9iYWxPYmplY3QoKSwgbGVuZ3RoLCBwcm9wZXJ0eU5hbWUuaW1w
bCgpLCBuYXRpdmVGdW5jdGlvbik7CiB9CiAKLXN0YXRpYyBKU1ZhbHVlIGNoaWxkRnJhbWVHZXR0
ZXIoRXhlY1N0YXRlKiBleGVjLCBKU1ZhbHVlIHNsb3RCYXNlLCBjb25zdCBJZGVudGlmaWVyJiBw
cm9wZXJ0eU5hbWUpCitzdGF0aWMgSlNWYWx1ZSBjaGlsZEZyYW1lR2V0dGVyKEV4ZWNTdGF0ZSog
ZXhlYywgSlNWYWx1ZSBzbG90QmFzZSwgUHJvcGVydHlOYW1lIHByb3BlcnR5TmFtZSkKIHsKLSAg
ICByZXR1cm4gdG9KUyhleGVjLCBqc0Nhc3Q8SlNET01XaW5kb3cqPihhc09iamVjdChzbG90QmFz
ZSkpLT5pbXBsKCktPmZyYW1lKCktPnRyZWUoKS0+c2NvcGVkQ2hpbGQoaWRlbnRpZmllclRvQXRv
bWljU3RyaW5nKHByb3BlcnR5TmFtZSkpLT5kb21XaW5kb3coKSk7CisgICAgcmV0dXJuIHRvSlMo
ZXhlYywganNDYXN0PEpTRE9NV2luZG93Kj4oYXNPYmplY3Qoc2xvdEJhc2UpKS0+aW1wbCgpLT5m
cmFtZSgpLT50cmVlKCktPnNjb3BlZENoaWxkKHByb3BlcnR5TmFtZVRvQXRvbWljU3RyaW5nKHBy
b3BlcnR5TmFtZSkpLT5kb21XaW5kb3coKSk7CiB9CiAKIHN0YXRpYyBKU1ZhbHVlIGluZGV4R2V0
dGVyKEV4ZWNTdGF0ZSogZXhlYywgSlNWYWx1ZSBzbG90QmFzZSwgdW5zaWduZWQgaW5kZXgpCkBA
IC0xMDcsNyArMTA3LDcgQEAgc3RhdGljIEpTVmFsdWUgaW5kZXhHZXR0ZXIoRXhlY1N0YXRlKiBl
eAogICAgIHJldHVybiB0b0pTKGV4ZWMsIGpzQ2FzdDxKU0RPTVdpbmRvdyo+KGFzT2JqZWN0KHNs
b3RCYXNlKSktPmltcGwoKS0+ZnJhbWUoKS0+dHJlZSgpLT5zY29wZWRDaGlsZChpbmRleCktPmRv
bVdpbmRvdygpKTsKIH0KIAotc3RhdGljIEpTVmFsdWUgbmFtZWRJdGVtR2V0dGVyKEV4ZWNTdGF0
ZSogZXhlYywgSlNWYWx1ZSBzbG90QmFzZSwgY29uc3QgSWRlbnRpZmllciYgcHJvcGVydHlOYW1l
KQorc3RhdGljIEpTVmFsdWUgbmFtZWRJdGVtR2V0dGVyKEV4ZWNTdGF0ZSogZXhlYywgSlNWYWx1
ZSBzbG90QmFzZSwgUHJvcGVydHlOYW1lIHByb3BlcnR5TmFtZSkKIHsKICAgICBKU0RPTVdpbmRv
d0Jhc2UqIHRoaXNPYmogPSBqc0Nhc3Q8SlNET01XaW5kb3cqPihhc09iamVjdChzbG90QmFzZSkp
OwogICAgIERvY3VtZW50KiBkb2N1bWVudCA9IHRoaXNPYmotPmltcGwoKS0+ZnJhbWUoKS0+ZG9j
dW1lbnQoKTsKQEAgLTExNiwxMyArMTE2LDEzIEBAIHN0YXRpYyBKU1ZhbHVlIG5hbWVkSXRlbUdl
dHRlcihFeGVjU3RhdGUKICAgICBBU1NFUlQoZG9jdW1lbnQpOwogICAgIEFTU0VSVChkb2N1bWVu
dC0+aXNIVE1MRG9jdW1lbnQoKSk7CiAKLSAgICBIVE1MQ29sbGVjdGlvbiogY29sbGVjdGlvbiA9
IGRvY3VtZW50LT53aW5kb3dOYW1lZEl0ZW1zKGlkZW50aWZpZXJUb0F0b21pY1N0cmluZyhwcm9w
ZXJ0eU5hbWUpKTsKKyAgICBIVE1MQ29sbGVjdGlvbiogY29sbGVjdGlvbiA9IGRvY3VtZW50LT53
aW5kb3dOYW1lZEl0ZW1zKHByb3BlcnR5TmFtZVRvQXRvbWljU3RyaW5nKHByb3BlcnR5TmFtZSkp
OwogICAgIGlmIChjb2xsZWN0aW9uLT5sZW5ndGgoKSA9PSAxKQogICAgICAgICByZXR1cm4gdG9K
UyhleGVjLCB0aGlzT2JqLCBjb2xsZWN0aW9uLT5maXJzdEl0ZW0oKSk7CiAgICAgcmV0dXJuIHRv
SlMoZXhlYywgdGhpc09iaiwgY29sbGVjdGlvbik7CiB9CiAKLWJvb2wgSlNET01XaW5kb3c6Omdl
dE93blByb3BlcnR5U2xvdChKU0NlbGwqIGNlbGwsIEV4ZWNTdGF0ZSogZXhlYywgY29uc3QgSWRl
bnRpZmllciYgcHJvcGVydHlOYW1lLCBQcm9wZXJ0eVNsb3QmIHNsb3QpCitib29sIEpTRE9NV2lu
ZG93OjpnZXRPd25Qcm9wZXJ0eVNsb3QoSlNDZWxsKiBjZWxsLCBFeGVjU3RhdGUqIGV4ZWMsIFBy
b3BlcnR5TmFtZSBwcm9wZXJ0eU5hbWUsIFByb3BlcnR5U2xvdCYgc2xvdCkKIHsKICAgICBKU0RP
TVdpbmRvdyogdGhpc09iamVjdCA9IGpzQ2FzdDxKU0RPTVdpbmRvdyo+KGNlbGwpOwogICAgIC8v
IFdoZW4gYWNjZXNzaW5nIGEgV2luZG93IGNyb3NzLWRvbWFpbiwgZnVuY3Rpb25zIGFyZSBhbHdh
eXMgdGhlIG5hdGl2ZSBidWlsdC1pbiBvbmVzLCBhbmQgdGhleQpAQCAtMjIwLDcgKzIyMCw3IEBA
IGJvb2wgSlNET01XaW5kb3c6OmdldE93blByb3BlcnR5U2xvdChKU0MKICAgICAvLyBuYW1pbmcg
ZnJhbWVzIHRoaW5ncyB0aGF0IGNvbmZsaWN0IHdpdGggd2luZG93IHByb3BlcnRpZXMgdGhhdAog
ICAgIC8vIGFyZSBpbiBNb3ogYnV0IG5vdCBJRS4gU2luY2Ugd2UgaGF2ZSBzb21lIG9mIHRoZXNl
LCB3ZSBoYXZlIHRvIGRvCiAgICAgLy8gaXQgdGhlIE1veiB3YXkuCi0gICAgaWYgKHRoaXNPYmpl
Y3QtPmltcGwoKS0+ZnJhbWUoKS0+dHJlZSgpLT5zY29wZWRDaGlsZChpZGVudGlmaWVyVG9BdG9t
aWNTdHJpbmcocHJvcGVydHlOYW1lKSkpIHsKKyAgICBpZiAodGhpc09iamVjdC0+aW1wbCgpLT5m
cmFtZSgpLT50cmVlKCktPnNjb3BlZENoaWxkKHByb3BlcnR5TmFtZVRvQXRvbWljU3RyaW5nKHBy
b3BlcnR5TmFtZSkpKSB7CiAgICAgICAgIHNsb3Quc2V0Q3VzdG9tKHRoaXNPYmplY3QsIGNoaWxk
RnJhbWVHZXR0ZXIpOwogICAgICAgICByZXR1cm4gdHJ1ZTsKICAgICB9CkBAIC0yNDIsOSArMjQy
LDkgQEAgYm9vbCBKU0RPTVdpbmRvdzo6Z2V0T3duUHJvcGVydHlTbG90KEpTQwogICAgIC8vIFdl
IG5lZWQgdG8gdGVzdCB0aGUgY29ycmVjdCBwcmlvcml0eSBvcmRlci4KIAogICAgIC8vIGFsbG93
IHdpbmRvd1sxXSBvciBwYXJlbnRbMV0gZXRjLiAoIzU2OTgzKQotICAgIGJvb2wgb2s7Ci0gICAg
dW5zaWduZWQgaSA9IHByb3BlcnR5TmFtZS50b0FycmF5SW5kZXgob2spOwotICAgIGlmIChvayAm
JiBpIDwgdGhpc09iamVjdC0+aW1wbCgpLT5mcmFtZSgpLT50cmVlKCktPnNjb3BlZENoaWxkQ291
bnQoKSkgeworICAgIHVuc2lnbmVkIGkgPSBwcm9wZXJ0eU5hbWUuYXNJbmRleCgpOworICAgIGlm
IChpIDwgdGhpc09iamVjdC0+aW1wbCgpLT5mcmFtZSgpLT50cmVlKCktPnNjb3BlZENoaWxkQ291
bnQoKSkgeworICAgICAgICBBU1NFUlQoaSAhPSBQcm9wZXJ0eU5hbWU6Ok5vdEFuSW5kZXgpOwog
ICAgICAgICBzbG90LnNldEN1c3RvbUluZGV4KHRoaXNPYmplY3QsIGksIGluZGV4R2V0dGVyKTsK
ICAgICAgICAgcmV0dXJuIHRydWU7CiAgICAgfQpAQCAtMjY4LDcgKzI2OCw3IEBAIGJvb2wgSlNE
T01XaW5kb3c6OmdldE93blByb3BlcnR5U2xvdChKU0MKICAgICByZXR1cm4gQmFzZTo6Z2V0T3du
UHJvcGVydHlTbG90KHRoaXNPYmplY3QsIGV4ZWMsIHByb3BlcnR5TmFtZSwgc2xvdCk7CiB9CiAK
LWJvb2wgSlNET01XaW5kb3c6OmdldE93blByb3BlcnR5RGVzY3JpcHRvcihKU09iamVjdCogb2Jq
ZWN0LCBFeGVjU3RhdGUqIGV4ZWMsIGNvbnN0IElkZW50aWZpZXImIHByb3BlcnR5TmFtZSwgUHJv
cGVydHlEZXNjcmlwdG9yJiBkZXNjcmlwdG9yKQorYm9vbCBKU0RPTVdpbmRvdzo6Z2V0T3duUHJv
cGVydHlEZXNjcmlwdG9yKEpTT2JqZWN0KiBvYmplY3QsIEV4ZWNTdGF0ZSogZXhlYywgUHJvcGVy
dHlOYW1lIHByb3BlcnR5TmFtZSwgUHJvcGVydHlEZXNjcmlwdG9yJiBkZXNjcmlwdG9yKQogewog
ICAgIEpTRE9NV2luZG93KiB0aGlzT2JqZWN0ID0ganNDYXN0PEpTRE9NV2luZG93Kj4ob2JqZWN0
KTsKICAgICAvLyBOZXZlciBhbGxvdyBjcm9zcy1kb21haW4gZ2V0T3duUHJvcGVydHlEZXNjcmlw
dG9yCkBAIC0zMTAsMTYgKzMxMCwxNiBAQCBib29sIEpTRE9NV2luZG93OjpnZXRPd25Qcm9wZXJ0
eURlc2NyaXB0CiAgICAgLy8gbmFtaW5nIGZyYW1lcyB0aGluZ3MgdGhhdCBjb25mbGljdCB3aXRo
IHdpbmRvdyBwcm9wZXJ0aWVzIHRoYXQKICAgICAvLyBhcmUgaW4gTW96IGJ1dCBub3QgSUUuIFNp
bmNlIHdlIGhhdmUgc29tZSBvZiB0aGVzZSwgd2UgaGF2ZSB0byBkbwogICAgIC8vIGl0IHRoZSBN
b3ogd2F5LgotICAgIGlmICh0aGlzT2JqZWN0LT5pbXBsKCktPmZyYW1lKCktPnRyZWUoKS0+c2Nv
cGVkQ2hpbGQoaWRlbnRpZmllclRvQXRvbWljU3RyaW5nKHByb3BlcnR5TmFtZSkpKSB7CisgICAg
aWYgKHRoaXNPYmplY3QtPmltcGwoKS0+ZnJhbWUoKS0+dHJlZSgpLT5zY29wZWRDaGlsZChwcm9w
ZXJ0eU5hbWVUb0F0b21pY1N0cmluZyhwcm9wZXJ0eU5hbWUpKSkgewogICAgICAgICBQcm9wZXJ0
eVNsb3Qgc2xvdDsKICAgICAgICAgc2xvdC5zZXRDdXN0b20odGhpc09iamVjdCwgY2hpbGRGcmFt
ZUdldHRlcik7CiAgICAgICAgIGRlc2NyaXB0b3Iuc2V0RGVzY3JpcHRvcihzbG90LmdldFZhbHVl
KGV4ZWMsIHByb3BlcnR5TmFtZSksIFJlYWRPbmx5IHwgRG9udERlbGV0ZSB8IERvbnRFbnVtKTsK
ICAgICAgICAgcmV0dXJuIHRydWU7CiAgICAgfQogICAgIAotICAgIGJvb2wgb2s7Ci0gICAgdW5z
aWduZWQgaSA9IHByb3BlcnR5TmFtZS50b0FycmF5SW5kZXgob2spOwotICAgIGlmIChvayAmJiBp
IDwgdGhpc09iamVjdC0+aW1wbCgpLT5mcmFtZSgpLT50cmVlKCktPnNjb3BlZENoaWxkQ291bnQo
KSkgeworICAgIHVuc2lnbmVkIGkgPSBwcm9wZXJ0eU5hbWUuYXNJbmRleCgpOworICAgIGlmIChp
IDwgdGhpc09iamVjdC0+aW1wbCgpLT5mcmFtZSgpLT50cmVlKCktPnNjb3BlZENoaWxkQ291bnQo
KSkgeworICAgICAgICBBU1NFUlQoaSAhPSBQcm9wZXJ0eU5hbWU6Ok5vdEFuSW5kZXgpOwogICAg
ICAgICBQcm9wZXJ0eVNsb3Qgc2xvdDsKICAgICAgICAgc2xvdC5zZXRDdXN0b21JbmRleCh0aGlz
T2JqZWN0LCBpLCBpbmRleEdldHRlcik7CiAgICAgICAgIGRlc2NyaXB0b3Iuc2V0RGVzY3JpcHRv
cihzbG90LmdldFZhbHVlKGV4ZWMsIHByb3BlcnR5TmFtZSksIFJlYWRPbmx5IHwgRG9udERlbGV0
ZSB8IERvbnRFbnVtKTsKQEAgLTM0MSw3ICszNDEsNyBAQCBib29sIEpTRE9NV2luZG93OjpnZXRP
d25Qcm9wZXJ0eURlc2NyaXB0CiAgICAgcmV0dXJuIEJhc2U6OmdldE93blByb3BlcnR5RGVzY3Jp
cHRvcih0aGlzT2JqZWN0LCBleGVjLCBwcm9wZXJ0eU5hbWUsIGRlc2NyaXB0b3IpOwogfQogCi12
b2lkIEpTRE9NV2luZG93OjpwdXQoSlNDZWxsKiBjZWxsLCBFeGVjU3RhdGUqIGV4ZWMsIGNvbnN0
IElkZW50aWZpZXImIHByb3BlcnR5TmFtZSwgSlNWYWx1ZSB2YWx1ZSwgUHV0UHJvcGVydHlTbG90
JiBzbG90KQordm9pZCBKU0RPTVdpbmRvdzo6cHV0KEpTQ2VsbCogY2VsbCwgRXhlY1N0YXRlKiBl
eGVjLCBQcm9wZXJ0eU5hbWUgcHJvcGVydHlOYW1lLCBKU1ZhbHVlIHZhbHVlLCBQdXRQcm9wZXJ0
eVNsb3QmIHNsb3QpCiB7CiAgICAgSlNET01XaW5kb3cqIHRoaXNPYmplY3QgPSBqc0Nhc3Q8SlNE
T01XaW5kb3cqPihjZWxsKTsKICAgICBpZiAoIXRoaXNPYmplY3QtPmltcGwoKS0+ZnJhbWUoKSkK
QEAgLTM2MSw3ICszNjEsNyBAQCB2b2lkIEpTRE9NV2luZG93OjpwdXQoSlNDZWxsKiBjZWxsLCBF
eGVjCiAgICAgICAgIEJhc2U6OnB1dCh0aGlzT2JqZWN0LCBleGVjLCBwcm9wZXJ0eU5hbWUsIHZh
bHVlLCBzbG90KTsKIH0KIAotYm9vbCBKU0RPTVdpbmRvdzo6ZGVsZXRlUHJvcGVydHkoSlNDZWxs
KiBjZWxsLCBFeGVjU3RhdGUqIGV4ZWMsIGNvbnN0IElkZW50aWZpZXImIHByb3BlcnR5TmFtZSkK
K2Jvb2wgSlNET01XaW5kb3c6OmRlbGV0ZVByb3BlcnR5KEpTQ2VsbCogY2VsbCwgRXhlY1N0YXRl
KiBleGVjLCBQcm9wZXJ0eU5hbWUgcHJvcGVydHlOYW1lKQogewogICAgIEpTRE9NV2luZG93KiB0
aGlzT2JqZWN0ID0ganNDYXN0PEpTRE9NV2luZG93Kj4oY2VsbCk7CiAgICAgLy8gT25seSBhbGxv
dyBkZWxldGluZyBwcm9wZXJ0aWVzIGJ5IGZyYW1lcyBpbiB0aGUgc2FtZSBvcmlnaW4uCkBAIC0z
ODgsNyArMzg4LDcgQEAgdm9pZCBKU0RPTVdpbmRvdzo6Z2V0T3duUHJvcGVydHlOYW1lcyhKUwog
ICAgIEJhc2U6OmdldE93blByb3BlcnR5TmFtZXModGhpc09iamVjdCwgZXhlYywgcHJvcGVydHlO
YW1lcywgbW9kZSk7CiB9CiAKLWJvb2wgSlNET01XaW5kb3c6OmRlZmluZU93blByb3BlcnR5KEpT
Qzo6SlNPYmplY3QqIG9iamVjdCwgSlNDOjpFeGVjU3RhdGUqIGV4ZWMsIGNvbnN0IEpTQzo6SWRl
bnRpZmllciYgcHJvcGVydHlOYW1lLCBKU0M6OlByb3BlcnR5RGVzY3JpcHRvciYgZGVzY3JpcHRv
ciwgYm9vbCBzaG91bGRUaHJvdykKK2Jvb2wgSlNET01XaW5kb3c6OmRlZmluZU93blByb3BlcnR5
KEpTQzo6SlNPYmplY3QqIG9iamVjdCwgSlNDOjpFeGVjU3RhdGUqIGV4ZWMsIEpTQzo6UHJvcGVy
dHlOYW1lIHByb3BlcnR5TmFtZSwgSlNDOjpQcm9wZXJ0eURlc2NyaXB0b3ImIGRlc2NyaXB0b3Is
IGJvb2wgc2hvdWxkVGhyb3cpCiB7CiAgICAgSlNET01XaW5kb3cqIHRoaXNPYmplY3QgPSBqc0Nh
c3Q8SlNET01XaW5kb3cqPihvYmplY3QpOwogICAgIC8vIE9ubHkgYWxsb3cgZGVmaW5pbmcgcHJv
cGVydGllcyBpbiB0aGlzIHdheSBieSBmcmFtZXMgaW4gdGhlIHNhbWUgb3JpZ2luLCBhcyBpdCBh
bGxvd3Mgc2V0dGVycyB0byBiZSBpbnRyb2R1Y2VkLgpAQCAtMzk2LDcgKzM5Niw3IEBAIGJvb2wg
SlNET01XaW5kb3c6OmRlZmluZU93blByb3BlcnR5KEpTQzoKICAgICAgICAgcmV0dXJuIGZhbHNl
OwogCiAgICAgLy8gRG9uJ3QgYWxsb3cgc2hhZG93aW5nIGxvY2F0aW9uIHVzaW5nIGFjY2Vzc29y
IHByb3BlcnRpZXMuCi0gICAgaWYgKGRlc2NyaXB0b3IuaXNBY2Nlc3NvckRlc2NyaXB0b3IoKSAm
JiBwcm9wZXJ0eU5hbWUgPT0gImxvY2F0aW9uIikKKyAgICBpZiAoZGVzY3JpcHRvci5pc0FjY2Vz
c29yRGVzY3JpcHRvcigpICYmIHByb3BlcnR5TmFtZSA9PSBJZGVudGlmaWVyKGV4ZWMsICJsb2Nh
dGlvbiIpKQogICAgICAgICByZXR1cm4gZmFsc2U7CiAKICAgICByZXR1cm4gQmFzZTo6ZGVmaW5l
T3duUHJvcGVydHkodGhpc09iamVjdCwgZXhlYywgcHJvcGVydHlOYW1lLCBkZXNjcmlwdG9yLCBz
aG91bGRUaHJvdyk7CkluZGV4OiBTb3VyY2UvV2ViQ29yZS9iaW5kaW5ncy9qcy9KU0RPTVdpbmRv
d1NoZWxsLmNwcAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2ViQ29yZS9iaW5kaW5ncy9qcy9KU0RP
TVdpbmRvd1NoZWxsLmNwcAkocmV2aXNpb24gMTE2NjY3KQorKysgU291cmNlL1dlYkNvcmUvYmlu
ZGluZ3MvanMvSlNET01XaW5kb3dTaGVsbC5jcHAJKHdvcmtpbmcgY29weSkKQEAgLTkxLDM3ICs5
MSwzNyBAQCBVU3RyaW5nIEpTRE9NV2luZG93U2hlbGw6OmNsYXNzTmFtZShjb25zCiAgICAgcmV0
dXJuIHRoaXNPYmplY3QtPndpbmRvdygpLT5tZXRob2RUYWJsZSgpLT5jbGFzc05hbWUodGhpc09i
amVjdC0+d2luZG93KCkpOwogfQogCi1ib29sIEpTRE9NV2luZG93U2hlbGw6OmdldE93blByb3Bl
cnR5U2xvdChKU0NlbGwqIGNlbGwsIEV4ZWNTdGF0ZSogZXhlYywgY29uc3QgSWRlbnRpZmllciYg
cHJvcGVydHlOYW1lLCBQcm9wZXJ0eVNsb3QmIHNsb3QpCitib29sIEpTRE9NV2luZG93U2hlbGw6
OmdldE93blByb3BlcnR5U2xvdChKU0NlbGwqIGNlbGwsIEV4ZWNTdGF0ZSogZXhlYywgUHJvcGVy
dHlOYW1lIHByb3BlcnR5TmFtZSwgUHJvcGVydHlTbG90JiBzbG90KQogewogICAgIEpTRE9NV2lu
ZG93U2hlbGwqIHRoaXNPYmplY3QgPSBqc0Nhc3Q8SlNET01XaW5kb3dTaGVsbCo+KGNlbGwpOwog
ICAgIHJldHVybiB0aGlzT2JqZWN0LT53aW5kb3coKS0+bWV0aG9kVGFibGUoKS0+Z2V0T3duUHJv
cGVydHlTbG90KHRoaXNPYmplY3QtPndpbmRvdygpLCBleGVjLCBwcm9wZXJ0eU5hbWUsIHNsb3Qp
OwogfQogCi1ib29sIEpTRE9NV2luZG93U2hlbGw6OmdldE93blByb3BlcnR5RGVzY3JpcHRvcihK
U09iamVjdCogb2JqZWN0LCBFeGVjU3RhdGUqIGV4ZWMsIGNvbnN0IElkZW50aWZpZXImIHByb3Bl
cnR5TmFtZSwgUHJvcGVydHlEZXNjcmlwdG9yJiBkZXNjcmlwdG9yKQorYm9vbCBKU0RPTVdpbmRv
d1NoZWxsOjpnZXRPd25Qcm9wZXJ0eURlc2NyaXB0b3IoSlNPYmplY3QqIG9iamVjdCwgRXhlY1N0
YXRlKiBleGVjLCBQcm9wZXJ0eU5hbWUgcHJvcGVydHlOYW1lLCBQcm9wZXJ0eURlc2NyaXB0b3Im
IGRlc2NyaXB0b3IpCiB7CiAgICAgSlNET01XaW5kb3dTaGVsbCogdGhpc09iamVjdCA9IGpzQ2Fz
dDxKU0RPTVdpbmRvd1NoZWxsKj4ob2JqZWN0KTsKICAgICByZXR1cm4gdGhpc09iamVjdC0+d2lu
ZG93KCktPm1ldGhvZFRhYmxlKCktPmdldE93blByb3BlcnR5RGVzY3JpcHRvcih0aGlzT2JqZWN0
LT53aW5kb3coKSwgZXhlYywgcHJvcGVydHlOYW1lLCBkZXNjcmlwdG9yKTsKIH0KIAotdm9pZCBK
U0RPTVdpbmRvd1NoZWxsOjpwdXQoSlNDZWxsKiBjZWxsLCBFeGVjU3RhdGUqIGV4ZWMsIGNvbnN0
IElkZW50aWZpZXImIHByb3BlcnR5TmFtZSwgSlNWYWx1ZSB2YWx1ZSwgUHV0UHJvcGVydHlTbG90
JiBzbG90KQordm9pZCBKU0RPTVdpbmRvd1NoZWxsOjpwdXQoSlNDZWxsKiBjZWxsLCBFeGVjU3Rh
dGUqIGV4ZWMsIFByb3BlcnR5TmFtZSBwcm9wZXJ0eU5hbWUsIEpTVmFsdWUgdmFsdWUsIFB1dFBy
b3BlcnR5U2xvdCYgc2xvdCkKIHsKICAgICBKU0RPTVdpbmRvd1NoZWxsKiB0aGlzT2JqZWN0ID0g
anNDYXN0PEpTRE9NV2luZG93U2hlbGwqPihjZWxsKTsKICAgICB0aGlzT2JqZWN0LT53aW5kb3co
KS0+bWV0aG9kVGFibGUoKS0+cHV0KHRoaXNPYmplY3QtPndpbmRvdygpLCBleGVjLCBwcm9wZXJ0
eU5hbWUsIHZhbHVlLCBzbG90KTsKIH0KIAotdm9pZCBKU0RPTVdpbmRvd1NoZWxsOjpwdXREaXJl
Y3RWaXJ0dWFsKEpTT2JqZWN0KiBvYmplY3QsIEV4ZWNTdGF0ZSogZXhlYywgY29uc3QgSWRlbnRp
ZmllciYgcHJvcGVydHlOYW1lLCBKU1ZhbHVlIHZhbHVlLCB1bnNpZ25lZCBhdHRyaWJ1dGVzKQor
dm9pZCBKU0RPTVdpbmRvd1NoZWxsOjpwdXREaXJlY3RWaXJ0dWFsKEpTT2JqZWN0KiBvYmplY3Qs
IEV4ZWNTdGF0ZSogZXhlYywgUHJvcGVydHlOYW1lIHByb3BlcnR5TmFtZSwgSlNWYWx1ZSB2YWx1
ZSwgdW5zaWduZWQgYXR0cmlidXRlcykKIHsKICAgICBKU0RPTVdpbmRvd1NoZWxsKiB0aGlzT2Jq
ZWN0ID0ganNDYXN0PEpTRE9NV2luZG93U2hlbGwqPihvYmplY3QpOwogICAgIHRoaXNPYmplY3Qt
PndpbmRvdygpLT5wdXREaXJlY3RWaXJ0dWFsKHRoaXNPYmplY3QtPndpbmRvdygpLCBleGVjLCBw
cm9wZXJ0eU5hbWUsIHZhbHVlLCBhdHRyaWJ1dGVzKTsKIH0KIAotYm9vbCBKU0RPTVdpbmRvd1No
ZWxsOjpkZWZpbmVPd25Qcm9wZXJ0eShKU0M6OkpTT2JqZWN0KiBvYmplY3QsIEpTQzo6RXhlY1N0
YXRlKiBleGVjLCBjb25zdCBKU0M6OklkZW50aWZpZXImIHByb3BlcnR5TmFtZSwgSlNDOjpQcm9w
ZXJ0eURlc2NyaXB0b3ImIGRlc2NyaXB0b3IsIGJvb2wgc2hvdWxkVGhyb3cpCitib29sIEpTRE9N
V2luZG93U2hlbGw6OmRlZmluZU93blByb3BlcnR5KEpTQzo6SlNPYmplY3QqIG9iamVjdCwgSlND
OjpFeGVjU3RhdGUqIGV4ZWMsIEpTQzo6UHJvcGVydHlOYW1lIHByb3BlcnR5TmFtZSwgSlNDOjpQ
cm9wZXJ0eURlc2NyaXB0b3ImIGRlc2NyaXB0b3IsIGJvb2wgc2hvdWxkVGhyb3cpCiB7CiAgICAg
SlNET01XaW5kb3dTaGVsbCogdGhpc09iamVjdCA9IGpzQ2FzdDxKU0RPTVdpbmRvd1NoZWxsKj4o
b2JqZWN0KTsKICAgICByZXR1cm4gdGhpc09iamVjdC0+d2luZG93KCktPm1ldGhvZFRhYmxlKCkt
PmRlZmluZU93blByb3BlcnR5KHRoaXNPYmplY3QtPndpbmRvdygpLCBleGVjLCBwcm9wZXJ0eU5h
bWUsIGRlc2NyaXB0b3IsIHNob3VsZFRocm93KTsKIH0KIAotYm9vbCBKU0RPTVdpbmRvd1NoZWxs
OjpkZWxldGVQcm9wZXJ0eShKU0NlbGwqIGNlbGwsIEV4ZWNTdGF0ZSogZXhlYywgY29uc3QgSWRl
bnRpZmllciYgcHJvcGVydHlOYW1lKQorYm9vbCBKU0RPTVdpbmRvd1NoZWxsOjpkZWxldGVQcm9w
ZXJ0eShKU0NlbGwqIGNlbGwsIEV4ZWNTdGF0ZSogZXhlYywgUHJvcGVydHlOYW1lIHByb3BlcnR5
TmFtZSkKIHsKICAgICBKU0RPTVdpbmRvd1NoZWxsKiB0aGlzT2JqZWN0ID0ganNDYXN0PEpTRE9N
V2luZG93U2hlbGwqPihjZWxsKTsKICAgICByZXR1cm4gdGhpc09iamVjdC0+d2luZG93KCktPm1l
dGhvZFRhYmxlKCktPmRlbGV0ZVByb3BlcnR5KHRoaXNPYmplY3QtPndpbmRvdygpLCBleGVjLCBw
cm9wZXJ0eU5hbWUpOwpJbmRleDogU291cmNlL1dlYkNvcmUvYmluZGluZ3MvanMvSlNET01XaW5k
b3dTaGVsbC5oCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9XZWJDb3JlL2JpbmRpbmdzL2pzL0pTRE9N
V2luZG93U2hlbGwuaAkocmV2aXNpb24gMTE2NjY3KQorKysgU291cmNlL1dlYkNvcmUvYmluZGlu
Z3MvanMvSlNET01XaW5kb3dTaGVsbC5oCSh3b3JraW5nIGNvcHkpCkBAIC03OCwxNCArNzgsMTQg
QEAgbmFtZXNwYWNlIFdlYkNvcmUgewogICAgICAgICBzdGF0aWMgY29uc3QgdW5zaWduZWQgU3Ry
dWN0dXJlRmxhZ3MgPSBKU0M6Ok92ZXJyaWRlc0dldE93blByb3BlcnR5U2xvdCB8IEpTQzo6T3Zl
cnJpZGVzR2V0UHJvcGVydHlOYW1lcyB8IEJhc2U6OlN0cnVjdHVyZUZsYWdzOwogCiAgICAgICAg
IHN0YXRpYyBKU0M6OlVTdHJpbmcgY2xhc3NOYW1lKGNvbnN0IEpTQzo6SlNPYmplY3QqKTsKLSAg
ICAgICAgc3RhdGljIGJvb2wgZ2V0T3duUHJvcGVydHlTbG90KEpTQzo6SlNDZWxsKiwgSlNDOjpF
eGVjU3RhdGUqLCBjb25zdCBKU0M6OklkZW50aWZpZXImIHByb3BlcnR5TmFtZSwgSlNDOjpQcm9w
ZXJ0eVNsb3QmKTsKLSAgICAgICAgc3RhdGljIGJvb2wgZ2V0T3duUHJvcGVydHlEZXNjcmlwdG9y
KEpTQzo6SlNPYmplY3QqLCBKU0M6OkV4ZWNTdGF0ZSosIGNvbnN0IEpTQzo6SWRlbnRpZmllciYg
cHJvcGVydHlOYW1lLCBKU0M6OlByb3BlcnR5RGVzY3JpcHRvciYpOwotICAgICAgICBzdGF0aWMg
dm9pZCBwdXQoSlNDOjpKU0NlbGwqLCBKU0M6OkV4ZWNTdGF0ZSosIGNvbnN0IEpTQzo6SWRlbnRp
ZmllciYgcHJvcGVydHlOYW1lLCBKU0M6OkpTVmFsdWUsIEpTQzo6UHV0UHJvcGVydHlTbG90Jik7
Ci0gICAgICAgIHN0YXRpYyB2b2lkIHB1dERpcmVjdFZpcnR1YWwoSlNDOjpKU09iamVjdCosIEpT
Qzo6RXhlY1N0YXRlKiwgY29uc3QgSlNDOjpJZGVudGlmaWVyJiBwcm9wZXJ0eU5hbWUsIEpTQzo6
SlNWYWx1ZSwgdW5zaWduZWQgYXR0cmlidXRlcyk7Ci0gICAgICAgIHN0YXRpYyBib29sIGRlbGV0
ZVByb3BlcnR5KEpTQzo6SlNDZWxsKiwgSlNDOjpFeGVjU3RhdGUqLCBjb25zdCBKU0M6OklkZW50
aWZpZXImIHByb3BlcnR5TmFtZSk7CisgICAgICAgIHN0YXRpYyBib29sIGdldE93blByb3BlcnR5
U2xvdChKU0M6OkpTQ2VsbCosIEpTQzo6RXhlY1N0YXRlKiwgSlNDOjpQcm9wZXJ0eU5hbWUsIEpT
Qzo6UHJvcGVydHlTbG90Jik7CisgICAgICAgIHN0YXRpYyBib29sIGdldE93blByb3BlcnR5RGVz
Y3JpcHRvcihKU0M6OkpTT2JqZWN0KiwgSlNDOjpFeGVjU3RhdGUqLCBKU0M6OlByb3BlcnR5TmFt
ZSwgSlNDOjpQcm9wZXJ0eURlc2NyaXB0b3ImKTsKKyAgICAgICAgc3RhdGljIHZvaWQgcHV0KEpT
Qzo6SlNDZWxsKiwgSlNDOjpFeGVjU3RhdGUqLCBKU0M6OlByb3BlcnR5TmFtZSwgSlNDOjpKU1Zh
bHVlLCBKU0M6OlB1dFByb3BlcnR5U2xvdCYpOworICAgICAgICBzdGF0aWMgdm9pZCBwdXREaXJl
Y3RWaXJ0dWFsKEpTQzo6SlNPYmplY3QqLCBKU0M6OkV4ZWNTdGF0ZSosIEpTQzo6UHJvcGVydHlO
YW1lLCBKU0M6OkpTVmFsdWUsIHVuc2lnbmVkIGF0dHJpYnV0ZXMpOworICAgICAgICBzdGF0aWMg
Ym9vbCBkZWxldGVQcm9wZXJ0eShKU0M6OkpTQ2VsbCosIEpTQzo6RXhlY1N0YXRlKiwgSlNDOjpQ
cm9wZXJ0eU5hbWUpOwogICAgICAgICBzdGF0aWMgdm9pZCBnZXRPd25Qcm9wZXJ0eU5hbWVzKEpT
Qzo6SlNPYmplY3QqLCBKU0M6OkV4ZWNTdGF0ZSosIEpTQzo6UHJvcGVydHlOYW1lQXJyYXkmLCBK
U0M6OkVudW1lcmF0aW9uTW9kZSk7CiAgICAgICAgIHN0YXRpYyB2b2lkIGdldFByb3BlcnR5TmFt
ZXMoSlNDOjpKU09iamVjdCosIEpTQzo6RXhlY1N0YXRlKiwgSlNDOjpQcm9wZXJ0eU5hbWVBcnJh
eSYsIEpTQzo6RW51bWVyYXRpb25Nb2RlKTsKLSAgICAgICAgc3RhdGljIGJvb2wgZGVmaW5lT3du
UHJvcGVydHkoSlNDOjpKU09iamVjdCosIEpTQzo6RXhlY1N0YXRlKiwgY29uc3QgSlNDOjpJZGVu
dGlmaWVyJiBwcm9wZXJ0eU5hbWUsIEpTQzo6UHJvcGVydHlEZXNjcmlwdG9yJiwgYm9vbCBzaG91
bGRUaHJvdyk7CisgICAgICAgIHN0YXRpYyBib29sIGRlZmluZU93blByb3BlcnR5KEpTQzo6SlNP
YmplY3QqLCBKU0M6OkV4ZWNTdGF0ZSosIEpTQzo6UHJvcGVydHlOYW1lLCBKU0M6OlByb3BlcnR5
RGVzY3JpcHRvciYsIGJvb2wgc2hvdWxkVGhyb3cpOwogCiAgICAgICAgIFJlZlB0cjxET01XcmFw
cGVyV29ybGQ+IG1fd29ybGQ7CiAgICAgfTsKSW5kZXg6IFNvdXJjZS9XZWJDb3JlL2JpbmRpbmdz
L2pzL0pTSFRNTEFsbENvbGxlY3Rpb25DdXN0b20uY3BwCj09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9X
ZWJDb3JlL2JpbmRpbmdzL2pzL0pTSFRNTEFsbENvbGxlY3Rpb25DdXN0b20uY3BwCShyZXZpc2lv
biAxMTY2NjcpCisrKyBTb3VyY2UvV2ViQ29yZS9iaW5kaW5ncy9qcy9KU0hUTUxBbGxDb2xsZWN0
aW9uQ3VzdG9tLmNwcAkod29ya2luZyBjb3B5KQpAQCAtNDEsMTAgKzQxLDEwIEBAIHVzaW5nIG5h
bWVzcGFjZSBKU0M7CiAKIG5hbWVzcGFjZSBXZWJDb3JlIHsKIAotc3RhdGljIEpTVmFsdWUgZ2V0
TmFtZWRJdGVtcyhFeGVjU3RhdGUqIGV4ZWMsIEpTSFRNTEFsbENvbGxlY3Rpb24qIGNvbGxlY3Rp
b24sIGNvbnN0IElkZW50aWZpZXImIHByb3BlcnR5TmFtZSkKK3N0YXRpYyBKU1ZhbHVlIGdldE5h
bWVkSXRlbXMoRXhlY1N0YXRlKiBleGVjLCBKU0hUTUxBbGxDb2xsZWN0aW9uKiBjb2xsZWN0aW9u
LCBQcm9wZXJ0eU5hbWUgcHJvcGVydHlOYW1lKQogewogICAgIFZlY3RvcjxSZWZQdHI8Tm9kZT4g
PiBuYW1lZEl0ZW1zOwotICAgIGNvbGxlY3Rpb24tPmltcGwoKS0+bmFtZWRJdGVtcyhpZGVudGlm
aWVyVG9BdG9taWNTdHJpbmcocHJvcGVydHlOYW1lKSwgbmFtZWRJdGVtcyk7CisgICAgY29sbGVj
dGlvbi0+aW1wbCgpLT5uYW1lZEl0ZW1zKHByb3BlcnR5TmFtZVRvQXRvbWljU3RyaW5nKHByb3Bl
cnR5TmFtZSksIG5hbWVkSXRlbXMpOwogCiAgICAgaWYgKG5hbWVkSXRlbXMuaXNFbXB0eSgpKQog
ICAgICAgICByZXR1cm4ganNVbmRlZmluZWQoKTsKQEAgLTcxLDEwICs3MSw5IEBAIHN0YXRpYyBF
bmNvZGVkSlNWYWx1ZSBKU0NfSE9TVF9DQUxMIGNhbGwKIAogICAgIGlmIChleGVjLT5hcmd1bWVu
dENvdW50KCkgPT0gMSkgewogICAgICAgICAvLyBTdXBwb3J0IGZvciBkb2N1bWVudC5hbGwoPGlu
ZGV4PikgZXRjLgotICAgICAgICBib29sIG9rOwogICAgICAgICBVU3RyaW5nIHN0cmluZyA9IGV4
ZWMtPmFyZ3VtZW50KDApLnRvU3RyaW5nKGV4ZWMpLT52YWx1ZShleGVjKTsKLSAgICAgICAgdW5z
aWduZWQgaW5kZXggPSBJZGVudGlmaWVyOjp0b1VJbnQzMihzdHJpbmcsIG9rKTsKLSAgICAgICAg
aWYgKG9rKQorICAgICAgICB1bnNpZ25lZCBpbmRleCA9IHRvVUludDMyRnJvbVN0cmluZ0ltcGwo
c3RyaW5nLmltcGwoKSk7CisgICAgICAgIGlmIChpbmRleCAhPSBQcm9wZXJ0eU5hbWU6Ok5vdEFu
SW5kZXgpCiAgICAgICAgICAgICByZXR1cm4gSlNWYWx1ZTo6ZW5jb2RlKHRvSlMoZXhlYywganND
b2xsZWN0aW9uLT5nbG9iYWxPYmplY3QoKSwgY29sbGVjdGlvbi0+aXRlbShpbmRleCkpKTsKIAog
ICAgICAgICAvLyBTdXBwb3J0IGZvciBkb2N1bWVudC5pbWFnZXMoJzxuYW1lPicpIGV0Yy4KQEAg
LTgyLDEwICs4MSw5IEBAIHN0YXRpYyBFbmNvZGVkSlNWYWx1ZSBKU0NfSE9TVF9DQUxMIGNhbGwK
ICAgICB9CiAKICAgICAvLyBUaGUgc2Vjb25kIGFyZywgaWYgc2V0LCBpcyB0aGUgaW5kZXggb2Yg
dGhlIGl0ZW0gd2Ugd2FudAotICAgIGJvb2wgb2s7CiAgICAgVVN0cmluZyBzdHJpbmcgPSBleGVj
LT5hcmd1bWVudCgwKS50b1N0cmluZyhleGVjKS0+dmFsdWUoZXhlYyk7Ci0gICAgdW5zaWduZWQg
aW5kZXggPSBJZGVudGlmaWVyOjp0b1VJbnQzMihleGVjLT5hcmd1bWVudCgxKS50b1N0cmluZyhl
eGVjKS0+dmFsdWUoZXhlYyksIG9rKTsKLSAgICBpZiAob2spIHsKKyAgICB1bnNpZ25lZCBpbmRl
eCA9IHRvVUludDMyRnJvbVN0cmluZ0ltcGwoZXhlYy0+YXJndW1lbnQoMSkudG9TdHJpbmcoZXhl
YyktPnZhbHVlKGV4ZWMpLmltcGwoKSk7CisgICAgaWYgKGluZGV4ICE9IFByb3BlcnR5TmFtZTo6
Tm90QW5JbmRleCkgewogICAgICAgICBpZiAoTm9kZSogbm9kZSA9IGNvbGxlY3Rpb24tPm5hbWVk
SXRlbVdpdGhJbmRleCh1c3RyaW5nVG9BdG9taWNTdHJpbmcoc3RyaW5nKSwgaW5kZXgpKQogICAg
ICAgICAgICAgcmV0dXJuIEpTVmFsdWU6OmVuY29kZSh0b0pTKGV4ZWMsIGpzQ29sbGVjdGlvbi0+
Z2xvYmFsT2JqZWN0KCksIG5vZGUpKTsKICAgICB9CkBAIC05OSwxMiArOTcsMTIgQEAgQ2FsbFR5
cGUgSlNIVE1MQWxsQ29sbGVjdGlvbjo6Z2V0Q2FsbERhdAogICAgIHJldHVybiBDYWxsVHlwZUhv
c3Q7CiB9CiAKLWJvb2wgSlNIVE1MQWxsQ29sbGVjdGlvbjo6Y2FuR2V0SXRlbXNGb3JOYW1lKEV4
ZWNTdGF0ZSosIEhUTUxBbGxDb2xsZWN0aW9uKiBjb2xsZWN0aW9uLCBjb25zdCBJZGVudGlmaWVy
JiBwcm9wZXJ0eU5hbWUpCitib29sIEpTSFRNTEFsbENvbGxlY3Rpb246OmNhbkdldEl0ZW1zRm9y
TmFtZShFeGVjU3RhdGUqLCBIVE1MQWxsQ29sbGVjdGlvbiogY29sbGVjdGlvbiwgUHJvcGVydHlO
YW1lIHByb3BlcnR5TmFtZSkKIHsKLSAgICByZXR1cm4gY29sbGVjdGlvbi0+aGFzTmFtZWRJdGVt
KGlkZW50aWZpZXJUb0F0b21pY1N0cmluZyhwcm9wZXJ0eU5hbWUpKTsKKyAgICByZXR1cm4gY29s
bGVjdGlvbi0+aGFzTmFtZWRJdGVtKHByb3BlcnR5TmFtZVRvQXRvbWljU3RyaW5nKHByb3BlcnR5
TmFtZSkpOwogfQogCi1KU1ZhbHVlIEpTSFRNTEFsbENvbGxlY3Rpb246Om5hbWVHZXR0ZXIoRXhl
Y1N0YXRlKiBleGVjLCBKU1ZhbHVlIHNsb3RCYXNlLCBjb25zdCBJZGVudGlmaWVyJiBwcm9wZXJ0
eU5hbWUpCitKU1ZhbHVlIEpTSFRNTEFsbENvbGxlY3Rpb246Om5hbWVHZXR0ZXIoRXhlY1N0YXRl
KiBleGVjLCBKU1ZhbHVlIHNsb3RCYXNlLCBQcm9wZXJ0eU5hbWUgcHJvcGVydHlOYW1lKQogewog
ICAgIEpTSFRNTEFsbENvbGxlY3Rpb24qIHRoaXNPYmogPSBqc0Nhc3Q8SlNIVE1MQWxsQ29sbGVj
dGlvbio+KGFzT2JqZWN0KHNsb3RCYXNlKSk7CiAgICAgcmV0dXJuIGdldE5hbWVkSXRlbXMoZXhl
YywgdGhpc09iaiwgcHJvcGVydHlOYW1lKTsKQEAgLTExMiw5ICsxMTAsOCBAQCBKU1ZhbHVlIEpT
SFRNTEFsbENvbGxlY3Rpb246Om5hbWVHZXR0ZXIoCiAKIEpTVmFsdWUgSlNIVE1MQWxsQ29sbGVj
dGlvbjo6aXRlbShFeGVjU3RhdGUqIGV4ZWMpCiB7Ci0gICAgYm9vbCBvazsKLSAgICB1aW50MzJf
dCBpbmRleCA9IElkZW50aWZpZXI6OnRvVUludDMyKGV4ZWMtPmFyZ3VtZW50KDApLnRvU3RyaW5n
KGV4ZWMpLT52YWx1ZShleGVjKSwgb2spOwotICAgIGlmIChvaykKKyAgICB1aW50MzJfdCBpbmRl
eCA9IHRvVUludDMyRnJvbVN0cmluZ0ltcGwoZXhlYy0+YXJndW1lbnQoMCkudG9TdHJpbmcoZXhl
YyktPnZhbHVlKGV4ZWMpLmltcGwoKSk7CisgICAgaWYgKGluZGV4ICE9IFByb3BlcnR5TmFtZTo6
Tm90QW5JbmRleCkKICAgICAgICAgcmV0dXJuIHRvSlMoZXhlYywgZ2xvYmFsT2JqZWN0KCksIGlt
cGwoKS0+aXRlbShpbmRleCkpOwogICAgIHJldHVybiBnZXROYW1lZEl0ZW1zKGV4ZWMsIHRoaXMs
IElkZW50aWZpZXIoZXhlYywgZXhlYy0+YXJndW1lbnQoMCkudG9TdHJpbmcoZXhlYyktPnZhbHVl
KGV4ZWMpKSk7CiB9CkluZGV4OiBTb3VyY2UvV2ViQ29yZS9iaW5kaW5ncy9qcy9KU0hUTUxBcHBs
ZXRFbGVtZW50Q3VzdG9tLmNwcAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2ViQ29yZS9iaW5kaW5n
cy9qcy9KU0hUTUxBcHBsZXRFbGVtZW50Q3VzdG9tLmNwcAkocmV2aXNpb24gMTE2NjY3KQorKysg
U291cmNlL1dlYkNvcmUvYmluZGluZ3MvanMvSlNIVE1MQXBwbGV0RWxlbWVudEN1c3RvbS5jcHAJ
KHdvcmtpbmcgY29weSkKQEAgLTMzLDE3ICszMywxNyBAQCBuYW1lc3BhY2UgV2ViQ29yZSB7CiAK
IHVzaW5nIG5hbWVzcGFjZSBKU0M7CiAKLWJvb2wgSlNIVE1MQXBwbGV0RWxlbWVudDo6Z2V0T3du
UHJvcGVydHlTbG90RGVsZWdhdGUoRXhlY1N0YXRlKiBleGVjLCBjb25zdCBJZGVudGlmaWVyJiBw
cm9wZXJ0eU5hbWUsIFByb3BlcnR5U2xvdCYgc2xvdCkKK2Jvb2wgSlNIVE1MQXBwbGV0RWxlbWVu
dDo6Z2V0T3duUHJvcGVydHlTbG90RGVsZWdhdGUoRXhlY1N0YXRlKiBleGVjLCBQcm9wZXJ0eU5h
bWUgcHJvcGVydHlOYW1lLCBQcm9wZXJ0eVNsb3QmIHNsb3QpCiB7CiAgICAgcmV0dXJuIHJ1bnRp
bWVPYmplY3RDdXN0b21HZXRPd25Qcm9wZXJ0eVNsb3QoZXhlYywgcHJvcGVydHlOYW1lLCBzbG90
LCB0aGlzKTsKIH0KIAotYm9vbCBKU0hUTUxBcHBsZXRFbGVtZW50OjpnZXRPd25Qcm9wZXJ0eURl
c2NyaXB0b3JEZWxlZ2F0ZShFeGVjU3RhdGUqIGV4ZWMsIGNvbnN0IElkZW50aWZpZXImIHByb3Bl
cnR5TmFtZSwgUHJvcGVydHlEZXNjcmlwdG9yJiBkZXNjcmlwdG9yKQorYm9vbCBKU0hUTUxBcHBs
ZXRFbGVtZW50OjpnZXRPd25Qcm9wZXJ0eURlc2NyaXB0b3JEZWxlZ2F0ZShFeGVjU3RhdGUqIGV4
ZWMsIFByb3BlcnR5TmFtZSBwcm9wZXJ0eU5hbWUsIFByb3BlcnR5RGVzY3JpcHRvciYgZGVzY3Jp
cHRvcikKIHsKICAgICByZXR1cm4gcnVudGltZU9iamVjdEN1c3RvbUdldE93blByb3BlcnR5RGVz
Y3JpcHRvcihleGVjLCBwcm9wZXJ0eU5hbWUsIGRlc2NyaXB0b3IsIHRoaXMpOwogfQogCi1ib29s
IEpTSFRNTEFwcGxldEVsZW1lbnQ6OnB1dERlbGVnYXRlKEV4ZWNTdGF0ZSogZXhlYywgY29uc3Qg
SWRlbnRpZmllciYgcHJvcGVydHlOYW1lLCBKU1ZhbHVlIHZhbHVlLCBQdXRQcm9wZXJ0eVNsb3Qm
IHNsb3QpCitib29sIEpTSFRNTEFwcGxldEVsZW1lbnQ6OnB1dERlbGVnYXRlKEV4ZWNTdGF0ZSog
ZXhlYywgUHJvcGVydHlOYW1lIHByb3BlcnR5TmFtZSwgSlNWYWx1ZSB2YWx1ZSwgUHV0UHJvcGVy
dHlTbG90JiBzbG90KQogewogICAgIHJldHVybiBydW50aW1lT2JqZWN0Q3VzdG9tUHV0KGV4ZWMs
IHByb3BlcnR5TmFtZSwgdmFsdWUsIHRoaXMsIHNsb3QpOwogfQpJbmRleDogU291cmNlL1dlYkNv
cmUvYmluZGluZ3MvanMvSlNIVE1MQ29sbGVjdGlvbkN1c3RvbS5jcHAKPT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0g
U291cmNlL1dlYkNvcmUvYmluZGluZ3MvanMvSlNIVE1MQ29sbGVjdGlvbkN1c3RvbS5jcHAJKHJl
dmlzaW9uIDExNjY2NykKKysrIFNvdXJjZS9XZWJDb3JlL2JpbmRpbmdzL2pzL0pTSFRNTENvbGxl
Y3Rpb25DdXN0b20uY3BwCSh3b3JraW5nIGNvcHkpCkBAIC0zOSwxMCArMzksMTAgQEAgdXNpbmcg
bmFtZXNwYWNlIEpTQzsKIAogbmFtZXNwYWNlIFdlYkNvcmUgewogCi1zdGF0aWMgSlNWYWx1ZSBn
ZXROYW1lZEl0ZW1zKEV4ZWNTdGF0ZSogZXhlYywgSlNIVE1MQ29sbGVjdGlvbiogY29sbGVjdGlv
biwgY29uc3QgSWRlbnRpZmllciYgcHJvcGVydHlOYW1lKQorc3RhdGljIEpTVmFsdWUgZ2V0TmFt
ZWRJdGVtcyhFeGVjU3RhdGUqIGV4ZWMsIEpTSFRNTENvbGxlY3Rpb24qIGNvbGxlY3Rpb24sIFBy
b3BlcnR5TmFtZSBwcm9wZXJ0eU5hbWUpCiB7CiAgICAgVmVjdG9yPFJlZlB0cjxOb2RlPiA+IG5h
bWVkSXRlbXM7Ci0gICAgY29uc3QgQXRvbWljU3RyaW5nJiBuYW1lID0gaWRlbnRpZmllclRvQXRv
bWljU3RyaW5nKHByb3BlcnR5TmFtZSk7CisgICAgY29uc3QgQXRvbWljU3RyaW5nJiBuYW1lID0g
cHJvcGVydHlOYW1lVG9BdG9taWNTdHJpbmcocHJvcGVydHlOYW1lKTsKICAgICBjb2xsZWN0aW9u
LT5pbXBsKCktPm5hbWVkSXRlbXMobmFtZSwgbmFtZWRJdGVtcyk7CiAKICAgICBpZiAobmFtZWRJ
dGVtcy5pc0VtcHR5KCkpCkBAIC01OSwxMiArNTksMTIgQEAgc3RhdGljIEpTVmFsdWUgZ2V0TmFt
ZWRJdGVtcyhFeGVjU3RhdGUqIAogICAgIHJldHVybiB0b0pTKGV4ZWMsIGNvbGxlY3Rpb24tPmds
b2JhbE9iamVjdCgpLCBTdGF0aWNOb2RlTGlzdDo6YWRvcHQobmFtZWRJdGVtcykuZ2V0KCkpOwog
fQogCi1ib29sIEpTSFRNTENvbGxlY3Rpb246OmNhbkdldEl0ZW1zRm9yTmFtZShFeGVjU3RhdGUq
LCBIVE1MQ29sbGVjdGlvbiogY29sbGVjdGlvbiwgY29uc3QgSWRlbnRpZmllciYgcHJvcGVydHlO
YW1lKQorYm9vbCBKU0hUTUxDb2xsZWN0aW9uOjpjYW5HZXRJdGVtc0Zvck5hbWUoRXhlY1N0YXRl
KiwgSFRNTENvbGxlY3Rpb24qIGNvbGxlY3Rpb24sIFByb3BlcnR5TmFtZSBwcm9wZXJ0eU5hbWUp
CiB7Ci0gICAgcmV0dXJuIGNvbGxlY3Rpb24tPmhhc05hbWVkSXRlbShpZGVudGlmaWVyVG9BdG9t
aWNTdHJpbmcocHJvcGVydHlOYW1lKSk7CisgICAgcmV0dXJuIGNvbGxlY3Rpb24tPmhhc05hbWVk
SXRlbShwcm9wZXJ0eU5hbWVUb0F0b21pY1N0cmluZyhwcm9wZXJ0eU5hbWUpKTsKIH0KIAotSlNW
YWx1ZSBKU0hUTUxDb2xsZWN0aW9uOjpuYW1lR2V0dGVyKEV4ZWNTdGF0ZSogZXhlYywgSlNWYWx1
ZSBzbG90QmFzZSwgY29uc3QgSWRlbnRpZmllciYgcHJvcGVydHlOYW1lKQorSlNWYWx1ZSBKU0hU
TUxDb2xsZWN0aW9uOjpuYW1lR2V0dGVyKEV4ZWNTdGF0ZSogZXhlYywgSlNWYWx1ZSBzbG90QmFz
ZSwgUHJvcGVydHlOYW1lIHByb3BlcnR5TmFtZSkKIHsKICAgICBKU0hUTUxDb2xsZWN0aW9uKiB0
aGlzT2JqID0ganNDYXN0PEpTSFRNTENvbGxlY3Rpb24qPihhc09iamVjdChzbG90QmFzZSkpOwog
ICAgIHJldHVybiBnZXROYW1lZEl0ZW1zKGV4ZWMsIHRoaXNPYmosIHByb3BlcnR5TmFtZSk7Cklu
ZGV4OiBTb3VyY2UvV2ViQ29yZS9iaW5kaW5ncy9qcy9KU0hUTUxEb2N1bWVudEN1c3RvbS5jcHAK
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PQotLS0gU291cmNlL1dlYkNvcmUvYmluZGluZ3MvanMvSlNIVE1MRG9jdW1lbnRD
dXN0b20uY3BwCShyZXZpc2lvbiAxMTY2NjcpCisrKyBTb3VyY2UvV2ViQ29yZS9iaW5kaW5ncy9q
cy9KU0hUTUxEb2N1bWVudEN1c3RvbS5jcHAJKHdvcmtpbmcgY29weSkKQEAgLTUxLDE4ICs1MSwx
OCBAQCBuYW1lc3BhY2UgV2ViQ29yZSB7CiAKIHVzaW5nIG5hbWVzcGFjZSBIVE1MTmFtZXM7CiAK
LWJvb2wgSlNIVE1MRG9jdW1lbnQ6OmNhbkdldEl0ZW1zRm9yTmFtZShFeGVjU3RhdGUqLCBIVE1M
RG9jdW1lbnQqIGRvY3VtZW50LCBjb25zdCBJZGVudGlmaWVyJiBwcm9wZXJ0eU5hbWUpCitib29s
IEpTSFRNTERvY3VtZW50OjpjYW5HZXRJdGVtc0Zvck5hbWUoRXhlY1N0YXRlKiwgSFRNTERvY3Vt
ZW50KiBkb2N1bWVudCwgUHJvcGVydHlOYW1lIHByb3BlcnR5TmFtZSkKIHsKICAgICBBdG9taWNT
dHJpbmdJbXBsKiBhdG9taWNQcm9wZXJ0eU5hbWUgPSBmaW5kQXRvbWljU3RyaW5nKHByb3BlcnR5
TmFtZSk7CiAgICAgcmV0dXJuIGF0b21pY1Byb3BlcnR5TmFtZSAmJiAoZG9jdW1lbnQtPmhhc05h
bWVkSXRlbShhdG9taWNQcm9wZXJ0eU5hbWUpIHx8IGRvY3VtZW50LT5oYXNFeHRyYU5hbWVkSXRl
bShhdG9taWNQcm9wZXJ0eU5hbWUpKTsKIH0KIAotSlNWYWx1ZSBKU0hUTUxEb2N1bWVudDo6bmFt
ZUdldHRlcihFeGVjU3RhdGUqIGV4ZWMsIEpTVmFsdWUgc2xvdEJhc2UsIGNvbnN0IElkZW50aWZp
ZXImIHByb3BlcnR5TmFtZSkKK0pTVmFsdWUgSlNIVE1MRG9jdW1lbnQ6Om5hbWVHZXR0ZXIoRXhl
Y1N0YXRlKiBleGVjLCBKU1ZhbHVlIHNsb3RCYXNlLCBQcm9wZXJ0eU5hbWUgcHJvcGVydHlOYW1l
KQogewogICAgIEpTSFRNTERvY3VtZW50KiB0aGlzT2JqID0ganNDYXN0PEpTSFRNTERvY3VtZW50
Kj4oYXNPYmplY3Qoc2xvdEJhc2UpKTsKICAgICBIVE1MRG9jdW1lbnQqIGRvY3VtZW50ID0gc3Rh
dGljX2Nhc3Q8SFRNTERvY3VtZW50Kj4odGhpc09iai0+aW1wbCgpKTsKIAotICAgIEhUTUxDb2xs
ZWN0aW9uKiBjb2xsZWN0aW9uID0gZG9jdW1lbnQtPmRvY3VtZW50TmFtZWRJdGVtcyhpZGVudGlm
aWVyVG9BdG9taWNTdHJpbmcocHJvcGVydHlOYW1lKSk7CisgICAgSFRNTENvbGxlY3Rpb24qIGNv
bGxlY3Rpb24gPSBkb2N1bWVudC0+ZG9jdW1lbnROYW1lZEl0ZW1zKHByb3BlcnR5TmFtZVRvQXRv
bWljU3RyaW5nKHByb3BlcnR5TmFtZSkpOwogCiAgICAgdW5zaWduZWQgbGVuZ3RoID0gY29sbGVj
dGlvbi0+bGVuZ3RoKCk7CiAgICAgaWYgKCFsZW5ndGgpCkluZGV4OiBTb3VyY2UvV2ViQ29yZS9i
aW5kaW5ncy9qcy9KU0hUTUxFbWJlZEVsZW1lbnRDdXN0b20uY3BwCj09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNv
dXJjZS9XZWJDb3JlL2JpbmRpbmdzL2pzL0pTSFRNTEVtYmVkRWxlbWVudEN1c3RvbS5jcHAJKHJl
dmlzaW9uIDExNjY2NykKKysrIFNvdXJjZS9XZWJDb3JlL2JpbmRpbmdzL2pzL0pTSFRNTEVtYmVk
RWxlbWVudEN1c3RvbS5jcHAJKHdvcmtpbmcgY29weSkKQEAgLTMzLDE3ICszMywxNyBAQCBuYW1l
c3BhY2UgV2ViQ29yZSB7CiAKIHVzaW5nIG5hbWVzcGFjZSBKU0M7CiAKLWJvb2wgSlNIVE1MRW1i
ZWRFbGVtZW50OjpnZXRPd25Qcm9wZXJ0eVNsb3REZWxlZ2F0ZShFeGVjU3RhdGUqIGV4ZWMsIGNv
bnN0IElkZW50aWZpZXImIHByb3BlcnR5TmFtZSwgUHJvcGVydHlTbG90JiBzbG90KQorYm9vbCBK
U0hUTUxFbWJlZEVsZW1lbnQ6OmdldE93blByb3BlcnR5U2xvdERlbGVnYXRlKEV4ZWNTdGF0ZSog
ZXhlYywgUHJvcGVydHlOYW1lIHByb3BlcnR5TmFtZSwgUHJvcGVydHlTbG90JiBzbG90KQogewog
ICAgIHJldHVybiBydW50aW1lT2JqZWN0Q3VzdG9tR2V0T3duUHJvcGVydHlTbG90KGV4ZWMsIHBy
b3BlcnR5TmFtZSwgc2xvdCwgdGhpcyk7CiB9CiAKLWJvb2wgSlNIVE1MRW1iZWRFbGVtZW50Ojpn
ZXRPd25Qcm9wZXJ0eURlc2NyaXB0b3JEZWxlZ2F0ZShFeGVjU3RhdGUqIGV4ZWMsIGNvbnN0IElk
ZW50aWZpZXImIHByb3BlcnR5TmFtZSwgUHJvcGVydHlEZXNjcmlwdG9yJiBkZXNjcmlwdG9yKQor
Ym9vbCBKU0hUTUxFbWJlZEVsZW1lbnQ6OmdldE93blByb3BlcnR5RGVzY3JpcHRvckRlbGVnYXRl
KEV4ZWNTdGF0ZSogZXhlYywgUHJvcGVydHlOYW1lIHByb3BlcnR5TmFtZSwgUHJvcGVydHlEZXNj
cmlwdG9yJiBkZXNjcmlwdG9yKQogewogICAgIHJldHVybiBydW50aW1lT2JqZWN0Q3VzdG9tR2V0
T3duUHJvcGVydHlEZXNjcmlwdG9yKGV4ZWMsIHByb3BlcnR5TmFtZSwgZGVzY3JpcHRvciwgdGhp
cyk7CiB9CiAKLWJvb2wgSlNIVE1MRW1iZWRFbGVtZW50OjpwdXREZWxlZ2F0ZShFeGVjU3RhdGUq
IGV4ZWMsIGNvbnN0IElkZW50aWZpZXImIHByb3BlcnR5TmFtZSwgSlNWYWx1ZSB2YWx1ZSwgUHV0
UHJvcGVydHlTbG90JiBzbG90KQorYm9vbCBKU0hUTUxFbWJlZEVsZW1lbnQ6OnB1dERlbGVnYXRl
KEV4ZWNTdGF0ZSogZXhlYywgUHJvcGVydHlOYW1lIHByb3BlcnR5TmFtZSwgSlNWYWx1ZSB2YWx1
ZSwgUHV0UHJvcGVydHlTbG90JiBzbG90KQogewogICAgIHJldHVybiBydW50aW1lT2JqZWN0Q3Vz
dG9tUHV0KGV4ZWMsIHByb3BlcnR5TmFtZSwgdmFsdWUsIHRoaXMsIHNsb3QpOwogfQpJbmRleDog
U291cmNlL1dlYkNvcmUvYmluZGluZ3MvanMvSlNIVE1MRm9ybUVsZW1lbnRDdXN0b20uY3BwCj09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT0KLS0tIFNvdXJjZS9XZWJDb3JlL2JpbmRpbmdzL2pzL0pTSFRNTEZvcm1FbGVtZW50
Q3VzdG9tLmNwcAkocmV2aXNpb24gMTE2NjY3KQorKysgU291cmNlL1dlYkNvcmUvYmluZGluZ3Mv
anMvSlNIVE1MRm9ybUVsZW1lbnRDdXN0b20uY3BwCSh3b3JraW5nIGNvcHkpCkBAIC0zNywyMCAr
MzcsMjAgQEAgdXNpbmcgbmFtZXNwYWNlIEpTQzsKIAogbmFtZXNwYWNlIFdlYkNvcmUgewogCi1i
b29sIEpTSFRNTEZvcm1FbGVtZW50OjpjYW5HZXRJdGVtc0Zvck5hbWUoRXhlY1N0YXRlKiwgSFRN
TEZvcm1FbGVtZW50KiBmb3JtLCBjb25zdCBJZGVudGlmaWVyJiBwcm9wZXJ0eU5hbWUpCitib29s
IEpTSFRNTEZvcm1FbGVtZW50OjpjYW5HZXRJdGVtc0Zvck5hbWUoRXhlY1N0YXRlKiwgSFRNTEZv
cm1FbGVtZW50KiBmb3JtLCBQcm9wZXJ0eU5hbWUgcHJvcGVydHlOYW1lKQogewogICAgIFZlY3Rv
cjxSZWZQdHI8Tm9kZT4gPiBuYW1lZEl0ZW1zOwotICAgIGZvcm0tPmdldE5hbWVkRWxlbWVudHMo
aWRlbnRpZmllclRvQXRvbWljU3RyaW5nKHByb3BlcnR5TmFtZSksIG5hbWVkSXRlbXMpOworICAg
IGZvcm0tPmdldE5hbWVkRWxlbWVudHMocHJvcGVydHlOYW1lVG9BdG9taWNTdHJpbmcocHJvcGVy
dHlOYW1lKSwgbmFtZWRJdGVtcyk7CiAgICAgcmV0dXJuIG5hbWVkSXRlbXMuc2l6ZSgpOwogfQog
Ci1KU1ZhbHVlIEpTSFRNTEZvcm1FbGVtZW50OjpuYW1lR2V0dGVyKEV4ZWNTdGF0ZSogZXhlYywg
SlNWYWx1ZSBzbG90QmFzZSwgY29uc3QgSWRlbnRpZmllciYgcHJvcGVydHlOYW1lKQorSlNWYWx1
ZSBKU0hUTUxGb3JtRWxlbWVudDo6bmFtZUdldHRlcihFeGVjU3RhdGUqIGV4ZWMsIEpTVmFsdWUg
c2xvdEJhc2UsIFByb3BlcnR5TmFtZSBwcm9wZXJ0eU5hbWUpCiB7CiAgICAgSlNIVE1MRWxlbWVu
dCoganNGb3JtID0ganNDYXN0PEpTSFRNTEZvcm1FbGVtZW50Kj4oYXNPYmplY3Qoc2xvdEJhc2Up
KTsKICAgICBIVE1MRm9ybUVsZW1lbnQqIGZvcm0gPSBzdGF0aWNfY2FzdDxIVE1MRm9ybUVsZW1l
bnQqPihqc0Zvcm0tPmltcGwoKSk7CiAKICAgICBWZWN0b3I8UmVmUHRyPE5vZGU+ID4gbmFtZWRJ
dGVtczsKLSAgICBmb3JtLT5nZXROYW1lZEVsZW1lbnRzKGlkZW50aWZpZXJUb0F0b21pY1N0cmlu
Zyhwcm9wZXJ0eU5hbWUpLCBuYW1lZEl0ZW1zKTsKKyAgICBmb3JtLT5nZXROYW1lZEVsZW1lbnRz
KHByb3BlcnR5TmFtZVRvQXRvbWljU3RyaW5nKHByb3BlcnR5TmFtZSksIG5hbWVkSXRlbXMpOwog
ICAgIAogICAgIGlmIChuYW1lZEl0ZW1zLmlzRW1wdHkoKSkKICAgICAgICAgcmV0dXJuIGpzVW5k
ZWZpbmVkKCk7CkluZGV4OiBTb3VyY2UvV2ViQ29yZS9iaW5kaW5ncy9qcy9KU0hUTUxGcmFtZVNl
dEVsZW1lbnRDdXN0b20uY3BwCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9XZWJDb3JlL2JpbmRpbmdz
L2pzL0pTSFRNTEZyYW1lU2V0RWxlbWVudEN1c3RvbS5jcHAJKHJldmlzaW9uIDExNjY2NykKKysr
IFNvdXJjZS9XZWJDb3JlL2JpbmRpbmdzL2pzL0pTSFRNTEZyYW1lU2V0RWxlbWVudEN1c3RvbS5j
cHAJKHdvcmtpbmcgY29weSkKQEAgLTQxLDE2ICs0MSwxNiBAQCBuYW1lc3BhY2UgV2ViQ29yZSB7
CiAKIHVzaW5nIG5hbWVzcGFjZSBIVE1MTmFtZXM7CiAKLWJvb2wgSlNIVE1MRnJhbWVTZXRFbGVt
ZW50OjpjYW5HZXRJdGVtc0Zvck5hbWUoRXhlY1N0YXRlKiwgSFRNTEZyYW1lU2V0RWxlbWVudCog
ZnJhbWVTZXQsIGNvbnN0IElkZW50aWZpZXImIHByb3BlcnR5TmFtZSkKK2Jvb2wgSlNIVE1MRnJh
bWVTZXRFbGVtZW50OjpjYW5HZXRJdGVtc0Zvck5hbWUoRXhlY1N0YXRlKiwgSFRNTEZyYW1lU2V0
RWxlbWVudCogZnJhbWVTZXQsIFByb3BlcnR5TmFtZSBwcm9wZXJ0eU5hbWUpCiB7Ci0gICAgTm9k
ZSogZnJhbWUgPSBmcmFtZVNldC0+Y2hpbGRyZW4oKS0+bmFtZWRJdGVtKGlkZW50aWZpZXJUb0F0
b21pY1N0cmluZyhwcm9wZXJ0eU5hbWUpKTsKKyAgICBOb2RlKiBmcmFtZSA9IGZyYW1lU2V0LT5j
aGlsZHJlbigpLT5uYW1lZEl0ZW0ocHJvcGVydHlOYW1lVG9BdG9taWNTdHJpbmcocHJvcGVydHlO
YW1lKSk7CiAgICAgcmV0dXJuIGZyYW1lICYmIGZyYW1lLT5oYXNUYWdOYW1lKGZyYW1lVGFnKTsK
IH0KIAotSlNWYWx1ZSBKU0hUTUxGcmFtZVNldEVsZW1lbnQ6Om5hbWVHZXR0ZXIoRXhlY1N0YXRl
KiBleGVjLCBKU1ZhbHVlIHNsb3RCYXNlLCBjb25zdCBJZGVudGlmaWVyJiBwcm9wZXJ0eU5hbWUp
CitKU1ZhbHVlIEpTSFRNTEZyYW1lU2V0RWxlbWVudDo6bmFtZUdldHRlcihFeGVjU3RhdGUqIGV4
ZWMsIEpTVmFsdWUgc2xvdEJhc2UsIFByb3BlcnR5TmFtZSBwcm9wZXJ0eU5hbWUpCiB7CiAgICAg
SFRNTEVsZW1lbnQqIGVsZW1lbnQgPSBqc0Nhc3Q8SlNIVE1MRWxlbWVudCo+KGFzT2JqZWN0KHNs
b3RCYXNlKSktPmltcGwoKTsKLSAgICBOb2RlKiBmcmFtZUVsZW1lbnQgPSBlbGVtZW50LT5jaGls
ZHJlbigpLT5uYW1lZEl0ZW0oaWRlbnRpZmllclRvQXRvbWljU3RyaW5nKHByb3BlcnR5TmFtZSkp
OworICAgIE5vZGUqIGZyYW1lRWxlbWVudCA9IGVsZW1lbnQtPmNoaWxkcmVuKCktPm5hbWVkSXRl
bShwcm9wZXJ0eU5hbWVUb0F0b21pY1N0cmluZyhwcm9wZXJ0eU5hbWUpKTsKICAgICBpZiAoRG9j
dW1lbnQqIGRvY3VtZW50ID0gc3RhdGljX2Nhc3Q8SFRNTEZyYW1lRWxlbWVudCo+KGZyYW1lRWxl
bWVudCktPmNvbnRlbnREb2N1bWVudCgpKSB7CiAgICAgICAgIGlmIChKU0RPTVdpbmRvd1NoZWxs
KiB3aW5kb3cgPSB0b0pTRE9NV2luZG93U2hlbGwoZG9jdW1lbnQtPmZyYW1lKCksIGN1cnJlbnRX
b3JsZChleGVjKSkpCiAgICAgICAgICAgICByZXR1cm4gd2luZG93OwpJbmRleDogU291cmNlL1dl
YkNvcmUvYmluZGluZ3MvanMvSlNIVE1MT2JqZWN0RWxlbWVudEN1c3RvbS5jcHAKPT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PQotLS0gU291cmNlL1dlYkNvcmUvYmluZGluZ3MvanMvSlNIVE1MT2JqZWN0RWxlbWVudEN1c3Rv
bS5jcHAJKHJldmlzaW9uIDExNjY2NykKKysrIFNvdXJjZS9XZWJDb3JlL2JpbmRpbmdzL2pzL0pT
SFRNTE9iamVjdEVsZW1lbnRDdXN0b20uY3BwCSh3b3JraW5nIGNvcHkpCkBAIC0zMywxNyArMzMs
MTcgQEAgbmFtZXNwYWNlIFdlYkNvcmUgewogCiB1c2luZyBuYW1lc3BhY2UgSlNDOwogCi1ib29s
IEpTSFRNTE9iamVjdEVsZW1lbnQ6OmdldE93blByb3BlcnR5U2xvdERlbGVnYXRlKEV4ZWNTdGF0
ZSogZXhlYywgY29uc3QgSWRlbnRpZmllciYgcHJvcGVydHlOYW1lLCBQcm9wZXJ0eVNsb3QmIHNs
b3QpCitib29sIEpTSFRNTE9iamVjdEVsZW1lbnQ6OmdldE93blByb3BlcnR5U2xvdERlbGVnYXRl
KEV4ZWNTdGF0ZSogZXhlYywgUHJvcGVydHlOYW1lIHByb3BlcnR5TmFtZSwgUHJvcGVydHlTbG90
JiBzbG90KQogewogICAgIHJldHVybiBydW50aW1lT2JqZWN0Q3VzdG9tR2V0T3duUHJvcGVydHlT
bG90KGV4ZWMsIHByb3BlcnR5TmFtZSwgc2xvdCwgdGhpcyk7CiB9CiAKLWJvb2wgSlNIVE1MT2Jq
ZWN0RWxlbWVudDo6Z2V0T3duUHJvcGVydHlEZXNjcmlwdG9yRGVsZWdhdGUoRXhlY1N0YXRlKiBl
eGVjLCBjb25zdCBJZGVudGlmaWVyJiBwcm9wZXJ0eU5hbWUsIFByb3BlcnR5RGVzY3JpcHRvciYg
ZGVzY3JpcHRvcikKK2Jvb2wgSlNIVE1MT2JqZWN0RWxlbWVudDo6Z2V0T3duUHJvcGVydHlEZXNj
cmlwdG9yRGVsZWdhdGUoRXhlY1N0YXRlKiBleGVjLCBQcm9wZXJ0eU5hbWUgcHJvcGVydHlOYW1l
LCBQcm9wZXJ0eURlc2NyaXB0b3ImIGRlc2NyaXB0b3IpCiB7CiAgICAgcmV0dXJuIHJ1bnRpbWVP
YmplY3RDdXN0b21HZXRPd25Qcm9wZXJ0eURlc2NyaXB0b3IoZXhlYywgcHJvcGVydHlOYW1lLCBk
ZXNjcmlwdG9yLCB0aGlzKTsKIH0KIAotYm9vbCBKU0hUTUxPYmplY3RFbGVtZW50OjpwdXREZWxl
Z2F0ZShFeGVjU3RhdGUqIGV4ZWMsIGNvbnN0IElkZW50aWZpZXImIHByb3BlcnR5TmFtZSwgSlNW
YWx1ZSB2YWx1ZSwgUHV0UHJvcGVydHlTbG90JiBzbG90KQorYm9vbCBKU0hUTUxPYmplY3RFbGVt
ZW50OjpwdXREZWxlZ2F0ZShFeGVjU3RhdGUqIGV4ZWMsIFByb3BlcnR5TmFtZSBwcm9wZXJ0eU5h
bWUsIEpTVmFsdWUgdmFsdWUsIFB1dFByb3BlcnR5U2xvdCYgc2xvdCkKIHsKICAgICByZXR1cm4g
cnVudGltZU9iamVjdEN1c3RvbVB1dChleGVjLCBwcm9wZXJ0eU5hbWUsIHZhbHVlLCB0aGlzLCBz
bG90KTsKIH0KSW5kZXg6IFNvdXJjZS9XZWJDb3JlL2JpbmRpbmdzL2pzL0pTSGlzdG9yeUN1c3Rv
bS5jcHAKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PQotLS0gU291cmNlL1dlYkNvcmUvYmluZGluZ3MvanMvSlNIaXN0b3J5
Q3VzdG9tLmNwcAkocmV2aXNpb24gMTE2NjY3KQorKysgU291cmNlL1dlYkNvcmUvYmluZGluZ3Mv
anMvSlNIaXN0b3J5Q3VzdG9tLmNwcAkod29ya2luZyBjb3B5KQpAQCAtMzgsMjIgKzM4LDIyIEBA
IHVzaW5nIG5hbWVzcGFjZSBKU0M7CiAKIG5hbWVzcGFjZSBXZWJDb3JlIHsKIAotc3RhdGljIEpT
VmFsdWUgbm9uQ2FjaGluZ1N0YXRpY0JhY2tGdW5jdGlvbkdldHRlcihFeGVjU3RhdGUqIGV4ZWMs
IEpTVmFsdWUsIGNvbnN0IElkZW50aWZpZXImIHByb3BlcnR5TmFtZSkKK3N0YXRpYyBKU1ZhbHVl
IG5vbkNhY2hpbmdTdGF0aWNCYWNrRnVuY3Rpb25HZXR0ZXIoRXhlY1N0YXRlKiBleGVjLCBKU1Zh
bHVlLCBQcm9wZXJ0eU5hbWUgcHJvcGVydHlOYW1lKQogewotICAgIHJldHVybiBKU0Z1bmN0aW9u
OjpjcmVhdGUoZXhlYywgZXhlYy0+bGV4aWNhbEdsb2JhbE9iamVjdCgpLCAwLCBwcm9wZXJ0eU5h
bWUsIGpzSGlzdG9yeVByb3RvdHlwZUZ1bmN0aW9uQmFjayk7CisgICAgcmV0dXJuIEpTRnVuY3Rp
b246OmNyZWF0ZShleGVjLCBleGVjLT5sZXhpY2FsR2xvYmFsT2JqZWN0KCksIDAsIHByb3BlcnR5
TmFtZS5pbXBsKCksIGpzSGlzdG9yeVByb3RvdHlwZUZ1bmN0aW9uQmFjayk7CiB9CiAKLXN0YXRp
YyBKU1ZhbHVlIG5vbkNhY2hpbmdTdGF0aWNGb3J3YXJkRnVuY3Rpb25HZXR0ZXIoRXhlY1N0YXRl
KiBleGVjLCBKU1ZhbHVlLCBjb25zdCBJZGVudGlmaWVyJiBwcm9wZXJ0eU5hbWUpCitzdGF0aWMg
SlNWYWx1ZSBub25DYWNoaW5nU3RhdGljRm9yd2FyZEZ1bmN0aW9uR2V0dGVyKEV4ZWNTdGF0ZSog
ZXhlYywgSlNWYWx1ZSwgUHJvcGVydHlOYW1lIHByb3BlcnR5TmFtZSkKIHsKLSAgICByZXR1cm4g
SlNGdW5jdGlvbjo6Y3JlYXRlKGV4ZWMsIGV4ZWMtPmxleGljYWxHbG9iYWxPYmplY3QoKSwgMCwg
cHJvcGVydHlOYW1lLCBqc0hpc3RvcnlQcm90b3R5cGVGdW5jdGlvbkZvcndhcmQpOworICAgIHJl
dHVybiBKU0Z1bmN0aW9uOjpjcmVhdGUoZXhlYywgZXhlYy0+bGV4aWNhbEdsb2JhbE9iamVjdCgp
LCAwLCBwcm9wZXJ0eU5hbWUuaW1wbCgpLCBqc0hpc3RvcnlQcm90b3R5cGVGdW5jdGlvbkZvcndh
cmQpOwogfQogCi1zdGF0aWMgSlNWYWx1ZSBub25DYWNoaW5nU3RhdGljR29GdW5jdGlvbkdldHRl
cihFeGVjU3RhdGUqIGV4ZWMsIEpTVmFsdWUsIGNvbnN0IElkZW50aWZpZXImIHByb3BlcnR5TmFt
ZSkKK3N0YXRpYyBKU1ZhbHVlIG5vbkNhY2hpbmdTdGF0aWNHb0Z1bmN0aW9uR2V0dGVyKEV4ZWNT
dGF0ZSogZXhlYywgSlNWYWx1ZSwgUHJvcGVydHlOYW1lIHByb3BlcnR5TmFtZSkKIHsKLSAgICBy
ZXR1cm4gSlNGdW5jdGlvbjo6Y3JlYXRlKGV4ZWMsIGV4ZWMtPmxleGljYWxHbG9iYWxPYmplY3Qo
KSwgMSwgcHJvcGVydHlOYW1lLCBqc0hpc3RvcnlQcm90b3R5cGVGdW5jdGlvbkdvKTsKKyAgICBy
ZXR1cm4gSlNGdW5jdGlvbjo6Y3JlYXRlKGV4ZWMsIGV4ZWMtPmxleGljYWxHbG9iYWxPYmplY3Qo
KSwgMSwgcHJvcGVydHlOYW1lLmltcGwoKSwganNIaXN0b3J5UHJvdG90eXBlRnVuY3Rpb25Hbyk7
CiB9CiAKLWJvb2wgSlNIaXN0b3J5OjpnZXRPd25Qcm9wZXJ0eVNsb3REZWxlZ2F0ZShFeGVjU3Rh
dGUqIGV4ZWMsIGNvbnN0IElkZW50aWZpZXImIHByb3BlcnR5TmFtZSwgUHJvcGVydHlTbG90JiBz
bG90KQorYm9vbCBKU0hpc3Rvcnk6OmdldE93blByb3BlcnR5U2xvdERlbGVnYXRlKEV4ZWNTdGF0
ZSogZXhlYywgUHJvcGVydHlOYW1lIHByb3BlcnR5TmFtZSwgUHJvcGVydHlTbG90JiBzbG90KQog
ewogICAgIC8vIFdoZW4gYWNjZXNzaW5nIEhpc3RvcnkgY3Jvc3MtZG9tYWluLCBmdW5jdGlvbnMg
YXJlIGFsd2F5cyB0aGUgbmF0aXZlIGJ1aWx0LWluIG9uZXMuCiAgICAgLy8gU2VlIEpTRE9NV2lu
ZG93OjpnZXRPd25Qcm9wZXJ0eVNsb3REZWxlZ2F0ZSBmb3IgYWRkaXRpb25hbCBkZXRhaWxzLgpA
QCAtOTMsNyArOTMsNyBAQCBib29sIEpTSGlzdG9yeTo6Z2V0T3duUHJvcGVydHlTbG90RGVsZWdh
CiAgICAgcmV0dXJuIHRydWU7CiB9CiAKLWJvb2wgSlNIaXN0b3J5OjpnZXRPd25Qcm9wZXJ0eURl
c2NyaXB0b3JEZWxlZ2F0ZShFeGVjU3RhdGUqIGV4ZWMsIGNvbnN0IElkZW50aWZpZXImIHByb3Bl
cnR5TmFtZSwgUHJvcGVydHlEZXNjcmlwdG9yJiBkZXNjcmlwdG9yKQorYm9vbCBKU0hpc3Rvcnk6
OmdldE93blByb3BlcnR5RGVzY3JpcHRvckRlbGVnYXRlKEV4ZWNTdGF0ZSogZXhlYywgUHJvcGVy
dHlOYW1lIHByb3BlcnR5TmFtZSwgUHJvcGVydHlEZXNjcmlwdG9yJiBkZXNjcmlwdG9yKQogewog
ICAgIGlmICghaW1wbCgpLT5mcmFtZSgpKSB7CiAgICAgICAgIGRlc2NyaXB0b3Iuc2V0VW5kZWZp
bmVkKCk7CkBAIC0xMzgsNyArMTM4LDcgQEAgYm9vbCBKU0hpc3Rvcnk6OmdldE93blByb3BlcnR5
RGVzY3JpcHRvcgogICAgIHJldHVybiB0cnVlOwogfQogCi1ib29sIEpTSGlzdG9yeTo6cHV0RGVs
ZWdhdGUoRXhlY1N0YXRlKiBleGVjLCBjb25zdCBJZGVudGlmaWVyJiwgSlNWYWx1ZSwgUHV0UHJv
cGVydHlTbG90JikKK2Jvb2wgSlNIaXN0b3J5OjpwdXREZWxlZ2F0ZShFeGVjU3RhdGUqIGV4ZWMs
IFByb3BlcnR5TmFtZSwgSlNWYWx1ZSwgUHV0UHJvcGVydHlTbG90JikKIHsKICAgICAvLyBPbmx5
IGFsbG93IHB1dHRpbmcgYnkgZnJhbWVzIGluIHRoZSBzYW1lIG9yaWdpbi4KICAgICBpZiAoIXNo
b3VsZEFsbG93QWNjZXNzVG9GcmFtZShleGVjLCBpbXBsKCktPmZyYW1lKCkpKQpAQCAtMTQ2LDcg
KzE0Niw3IEBAIGJvb2wgSlNIaXN0b3J5OjpwdXREZWxlZ2F0ZShFeGVjU3RhdGUqIGUKICAgICBy
ZXR1cm4gZmFsc2U7CiB9CiAKLWJvb2wgSlNIaXN0b3J5OjpkZWxldGVQcm9wZXJ0eShKU0NlbGwq
IGNlbGwsIEV4ZWNTdGF0ZSogZXhlYywgY29uc3QgSWRlbnRpZmllciYgcHJvcGVydHlOYW1lKQor
Ym9vbCBKU0hpc3Rvcnk6OmRlbGV0ZVByb3BlcnR5KEpTQ2VsbCogY2VsbCwgRXhlY1N0YXRlKiBl
eGVjLCBQcm9wZXJ0eU5hbWUgcHJvcGVydHlOYW1lKQogewogICAgIEpTSGlzdG9yeSogdGhpc09i
amVjdCA9IGpzQ2FzdDxKU0hpc3RvcnkqPihjZWxsKTsKICAgICAvLyBPbmx5IGFsbG93IGRlbGV0
aW5nIGJ5IGZyYW1lcyBpbiB0aGUgc2FtZSBvcmlnaW4uCkluZGV4OiBTb3VyY2UvV2ViQ29yZS9i
aW5kaW5ncy9qcy9KU0xvY2F0aW9uQ3VzdG9tLmNwcAo9PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2Vi
Q29yZS9iaW5kaW5ncy9qcy9KU0xvY2F0aW9uQ3VzdG9tLmNwcAkocmV2aXNpb24gMTE2NjY3KQor
KysgU291cmNlL1dlYkNvcmUvYmluZGluZ3MvanMvSlNMb2NhdGlvbkN1c3RvbS5jcHAJKHdvcmtp
bmcgY29weSkKQEAgLTMwLDIyICszMCwyMiBAQCB1c2luZyBuYW1lc3BhY2UgSlNDOwogCiBuYW1l
c3BhY2UgV2ViQ29yZSB7CiAKLXN0YXRpYyBKU1ZhbHVlIG5vbkNhY2hpbmdTdGF0aWNSZXBsYWNl
RnVuY3Rpb25HZXR0ZXIoRXhlY1N0YXRlKiBleGVjLCBKU1ZhbHVlLCBjb25zdCBJZGVudGlmaWVy
JiBwcm9wZXJ0eU5hbWUpCitzdGF0aWMgSlNWYWx1ZSBub25DYWNoaW5nU3RhdGljUmVwbGFjZUZ1
bmN0aW9uR2V0dGVyKEV4ZWNTdGF0ZSogZXhlYywgSlNWYWx1ZSwgUHJvcGVydHlOYW1lIHByb3Bl
cnR5TmFtZSkKIHsKLSAgICByZXR1cm4gSlNGdW5jdGlvbjo6Y3JlYXRlKGV4ZWMsIGV4ZWMtPmxl
eGljYWxHbG9iYWxPYmplY3QoKSwgMSwgcHJvcGVydHlOYW1lLCBqc0xvY2F0aW9uUHJvdG90eXBl
RnVuY3Rpb25SZXBsYWNlKTsKKyAgICByZXR1cm4gSlNGdW5jdGlvbjo6Y3JlYXRlKGV4ZWMsIGV4
ZWMtPmxleGljYWxHbG9iYWxPYmplY3QoKSwgMSwgcHJvcGVydHlOYW1lLmltcGwoKSwganNMb2Nh
dGlvblByb3RvdHlwZUZ1bmN0aW9uUmVwbGFjZSk7CiB9CiAKLXN0YXRpYyBKU1ZhbHVlIG5vbkNh
Y2hpbmdTdGF0aWNSZWxvYWRGdW5jdGlvbkdldHRlcihFeGVjU3RhdGUqIGV4ZWMsIEpTVmFsdWUs
IGNvbnN0IElkZW50aWZpZXImIHByb3BlcnR5TmFtZSkKK3N0YXRpYyBKU1ZhbHVlIG5vbkNhY2hp
bmdTdGF0aWNSZWxvYWRGdW5jdGlvbkdldHRlcihFeGVjU3RhdGUqIGV4ZWMsIEpTVmFsdWUsIFBy
b3BlcnR5TmFtZSBwcm9wZXJ0eU5hbWUpCiB7Ci0gICAgcmV0dXJuIEpTRnVuY3Rpb246OmNyZWF0
ZShleGVjLCBleGVjLT5sZXhpY2FsR2xvYmFsT2JqZWN0KCksIDAsIHByb3BlcnR5TmFtZSwganNM
b2NhdGlvblByb3RvdHlwZUZ1bmN0aW9uUmVsb2FkKTsKKyAgICByZXR1cm4gSlNGdW5jdGlvbjo6
Y3JlYXRlKGV4ZWMsIGV4ZWMtPmxleGljYWxHbG9iYWxPYmplY3QoKSwgMCwgcHJvcGVydHlOYW1l
LmltcGwoKSwganNMb2NhdGlvblByb3RvdHlwZUZ1bmN0aW9uUmVsb2FkKTsKIH0KIAotc3RhdGlj
IEpTVmFsdWUgbm9uQ2FjaGluZ1N0YXRpY0Fzc2lnbkZ1bmN0aW9uR2V0dGVyKEV4ZWNTdGF0ZSog
ZXhlYywgSlNWYWx1ZSwgY29uc3QgSWRlbnRpZmllciYgcHJvcGVydHlOYW1lKQorc3RhdGljIEpT
VmFsdWUgbm9uQ2FjaGluZ1N0YXRpY0Fzc2lnbkZ1bmN0aW9uR2V0dGVyKEV4ZWNTdGF0ZSogZXhl
YywgSlNWYWx1ZSwgUHJvcGVydHlOYW1lIHByb3BlcnR5TmFtZSkKIHsKLSAgICByZXR1cm4gSlNG
dW5jdGlvbjo6Y3JlYXRlKGV4ZWMsIGV4ZWMtPmxleGljYWxHbG9iYWxPYmplY3QoKSwgMSwgcHJv
cGVydHlOYW1lLCBqc0xvY2F0aW9uUHJvdG90eXBlRnVuY3Rpb25Bc3NpZ24pOworICAgIHJldHVy
biBKU0Z1bmN0aW9uOjpjcmVhdGUoZXhlYywgZXhlYy0+bGV4aWNhbEdsb2JhbE9iamVjdCgpLCAx
LCBwcm9wZXJ0eU5hbWUuaW1wbCgpLCBqc0xvY2F0aW9uUHJvdG90eXBlRnVuY3Rpb25Bc3NpZ24p
OwogfQogCi1ib29sIEpTTG9jYXRpb246OmdldE93blByb3BlcnR5U2xvdERlbGVnYXRlKEV4ZWNT
dGF0ZSogZXhlYywgY29uc3QgSWRlbnRpZmllciYgcHJvcGVydHlOYW1lLCBQcm9wZXJ0eVNsb3Qm
IHNsb3QpCitib29sIEpTTG9jYXRpb246OmdldE93blByb3BlcnR5U2xvdERlbGVnYXRlKEV4ZWNT
dGF0ZSogZXhlYywgUHJvcGVydHlOYW1lIHByb3BlcnR5TmFtZSwgUHJvcGVydHlTbG90JiBzbG90
KQogewogICAgIEZyYW1lKiBmcmFtZSA9IGltcGwoKS0+ZnJhbWUoKTsKICAgICBpZiAoIWZyYW1l
KSB7CkBAIC04Niw3ICs4Niw3IEBAIGJvb2wgSlNMb2NhdGlvbjo6Z2V0T3duUHJvcGVydHlTbG90
RGVsZWcKICAgICByZXR1cm4gdHJ1ZTsKIH0KIAotYm9vbCBKU0xvY2F0aW9uOjpnZXRPd25Qcm9w
ZXJ0eURlc2NyaXB0b3JEZWxlZ2F0ZShFeGVjU3RhdGUqIGV4ZWMsIGNvbnN0IElkZW50aWZpZXIm
IHByb3BlcnR5TmFtZSwgUHJvcGVydHlEZXNjcmlwdG9yJiBkZXNjcmlwdG9yKQorYm9vbCBKU0xv
Y2F0aW9uOjpnZXRPd25Qcm9wZXJ0eURlc2NyaXB0b3JEZWxlZ2F0ZShFeGVjU3RhdGUqIGV4ZWMs
IFByb3BlcnR5TmFtZSBwcm9wZXJ0eU5hbWUsIFByb3BlcnR5RGVzY3JpcHRvciYgZGVzY3JpcHRv
cikKIHsKICAgICBGcmFtZSogZnJhbWUgPSBpbXBsKCktPmZyYW1lKCk7CiAgICAgaWYgKCFmcmFt
ZSkgewpAQCAtMTI1LDcgKzEyNSw3IEBAIGJvb2wgSlNMb2NhdGlvbjo6Z2V0T3duUHJvcGVydHlE
ZXNjcmlwdG8KICAgICByZXR1cm4gdHJ1ZTsKIH0KIAotYm9vbCBKU0xvY2F0aW9uOjpwdXREZWxl
Z2F0ZShFeGVjU3RhdGUqIGV4ZWMsIGNvbnN0IElkZW50aWZpZXImIHByb3BlcnR5TmFtZSwgSlNW
YWx1ZSB2YWx1ZSwgUHV0UHJvcGVydHlTbG90JiBzbG90KQorYm9vbCBKU0xvY2F0aW9uOjpwdXRE
ZWxlZ2F0ZShFeGVjU3RhdGUqIGV4ZWMsIFByb3BlcnR5TmFtZSBwcm9wZXJ0eU5hbWUsIEpTVmFs
dWUgdmFsdWUsIFB1dFByb3BlcnR5U2xvdCYgc2xvdCkKIHsKICAgICBGcmFtZSogZnJhbWUgPSBp
bXBsKCktPmZyYW1lKCk7CiAgICAgaWYgKCFmcmFtZSkKQEAgLTE1Miw3ICsxNTIsNyBAQCBib29s
IEpTTG9jYXRpb246OnB1dERlbGVnYXRlKEV4ZWNTdGF0ZSogCiAgICAgcmV0dXJuIGZhbHNlOwog
fQogCi1ib29sIEpTTG9jYXRpb246OmRlbGV0ZVByb3BlcnR5KEpTQ2VsbCogY2VsbCwgRXhlY1N0
YXRlKiBleGVjLCBjb25zdCBJZGVudGlmaWVyJiBwcm9wZXJ0eU5hbWUpCitib29sIEpTTG9jYXRp
b246OmRlbGV0ZVByb3BlcnR5KEpTQ2VsbCogY2VsbCwgRXhlY1N0YXRlKiBleGVjLCBQcm9wZXJ0
eU5hbWUgcHJvcGVydHlOYW1lKQogewogICAgIEpTTG9jYXRpb24qIHRoaXNPYmplY3QgPSBqc0Nh
c3Q8SlNMb2NhdGlvbio+KGNlbGwpOwogICAgIC8vIE9ubHkgYWxsb3cgZGVsZXRpbmcgYnkgZnJh
bWVzIGluIHRoZSBzYW1lIG9yaWdpbi4KQEAgLTE3MCw3ICsxNzAsNyBAQCB2b2lkIEpTTG9jYXRp
b246OmdldE93blByb3BlcnR5TmFtZXMoSlNPCiAgICAgQmFzZTo6Z2V0T3duUHJvcGVydHlOYW1l
cyh0aGlzT2JqZWN0LCBleGVjLCBwcm9wZXJ0eU5hbWVzLCBtb2RlKTsKIH0KIAotYm9vbCBKU0xv
Y2F0aW9uOjpkZWZpbmVPd25Qcm9wZXJ0eShKU09iamVjdCogb2JqZWN0LCBFeGVjU3RhdGUqIGV4
ZWMsIGNvbnN0IElkZW50aWZpZXImIHByb3BlcnR5TmFtZSwgUHJvcGVydHlEZXNjcmlwdG9yJiBk
ZXNjcmlwdG9yLCBib29sIHRocm93RXhjZXB0aW9uKQorYm9vbCBKU0xvY2F0aW9uOjpkZWZpbmVP
d25Qcm9wZXJ0eShKU09iamVjdCogb2JqZWN0LCBFeGVjU3RhdGUqIGV4ZWMsIFByb3BlcnR5TmFt
ZSBwcm9wZXJ0eU5hbWUsIFByb3BlcnR5RGVzY3JpcHRvciYgZGVzY3JpcHRvciwgYm9vbCB0aHJv
d0V4Y2VwdGlvbikKIHsKICAgICBpZiAoZGVzY3JpcHRvci5pc0FjY2Vzc29yRGVzY3JpcHRvcigp
ICYmIChwcm9wZXJ0eU5hbWUgPT0gZXhlYy0+cHJvcGVydHlOYW1lcygpLnRvU3RyaW5nIHx8IHBy
b3BlcnR5TmFtZSA9PSBleGVjLT5wcm9wZXJ0eU5hbWVzKCkudmFsdWVPZikpCiAgICAgICAgIHJl
dHVybiBmYWxzZTsKQEAgLTI3NiwxMiArMjc2LDEyIEBAIEpTVmFsdWUgSlNMb2NhdGlvbjo6dG9T
dHJpbmdGdW5jdGlvbihFeGUKICAgICByZXR1cm4ganNTdHJpbmcoZXhlYywgaW1wbCgpLT50b1N0
cmluZygpKTsKIH0KIAotYm9vbCBKU0xvY2F0aW9uUHJvdG90eXBlOjpwdXREZWxlZ2F0ZShFeGVj
U3RhdGUqIGV4ZWMsIGNvbnN0IElkZW50aWZpZXImIHByb3BlcnR5TmFtZSwgSlNWYWx1ZSwgUHV0
UHJvcGVydHlTbG90JikKK2Jvb2wgSlNMb2NhdGlvblByb3RvdHlwZTo6cHV0RGVsZWdhdGUoRXhl
Y1N0YXRlKiBleGVjLCBQcm9wZXJ0eU5hbWUgcHJvcGVydHlOYW1lLCBKU1ZhbHVlLCBQdXRQcm9w
ZXJ0eVNsb3QmKQogewogICAgIHJldHVybiAocHJvcGVydHlOYW1lID09IGV4ZWMtPnByb3BlcnR5
TmFtZXMoKS50b1N0cmluZyB8fCBwcm9wZXJ0eU5hbWUgPT0gZXhlYy0+cHJvcGVydHlOYW1lcygp
LnZhbHVlT2YpOwogfQogCi1ib29sIEpTTG9jYXRpb25Qcm90b3R5cGU6OmRlZmluZU93blByb3Bl
cnR5KEpTT2JqZWN0KiBvYmplY3QsIEV4ZWNTdGF0ZSogZXhlYywgY29uc3QgSWRlbnRpZmllciYg
cHJvcGVydHlOYW1lLCBQcm9wZXJ0eURlc2NyaXB0b3ImIGRlc2NyaXB0b3IsIGJvb2wgdGhyb3dF
eGNlcHRpb24pCitib29sIEpTTG9jYXRpb25Qcm90b3R5cGU6OmRlZmluZU93blByb3BlcnR5KEpT
T2JqZWN0KiBvYmplY3QsIEV4ZWNTdGF0ZSogZXhlYywgUHJvcGVydHlOYW1lIHByb3BlcnR5TmFt
ZSwgUHJvcGVydHlEZXNjcmlwdG9yJiBkZXNjcmlwdG9yLCBib29sIHRocm93RXhjZXB0aW9uKQog
ewogICAgIGlmIChkZXNjcmlwdG9yLmlzQWNjZXNzb3JEZXNjcmlwdG9yKCkgJiYgKHByb3BlcnR5
TmFtZSA9PSBleGVjLT5wcm9wZXJ0eU5hbWVzKCkudG9TdHJpbmcgfHwgcHJvcGVydHlOYW1lID09
IGV4ZWMtPnByb3BlcnR5TmFtZXMoKS52YWx1ZU9mKSkKICAgICAgICAgcmV0dXJuIGZhbHNlOwpJ
bmRleDogU291cmNlL1dlYkNvcmUvYmluZGluZ3MvanMvSlNOYW1lZE5vZGVNYXBDdXN0b20uY3Bw
Cj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT0KLS0tIFNvdXJjZS9XZWJDb3JlL2JpbmRpbmdzL2pzL0pTTmFtZWROb2RlTWFw
Q3VzdG9tLmNwcAkocmV2aXNpb24gMTE2NjY3KQorKysgU291cmNlL1dlYkNvcmUvYmluZGluZ3Mv
anMvSlNOYW1lZE5vZGVNYXBDdXN0b20uY3BwCSh3b3JraW5nIGNvcHkpCkBAIC0zNSwxNSArMzUs
MTUgQEAgdXNpbmcgbmFtZXNwYWNlIEpTQzsKIAogbmFtZXNwYWNlIFdlYkNvcmUgewogCi1ib29s
IEpTTmFtZWROb2RlTWFwOjpjYW5HZXRJdGVtc0Zvck5hbWUoRXhlY1N0YXRlKiwgTmFtZWROb2Rl
TWFwKiBpbXBsLCBjb25zdCBJZGVudGlmaWVyJiBwcm9wZXJ0eU5hbWUpCitib29sIEpTTmFtZWRO
b2RlTWFwOjpjYW5HZXRJdGVtc0Zvck5hbWUoRXhlY1N0YXRlKiwgTmFtZWROb2RlTWFwKiBpbXBs
LCBQcm9wZXJ0eU5hbWUgcHJvcGVydHlOYW1lKQogewotICAgIHJldHVybiBpbXBsLT5nZXROYW1l
ZEl0ZW0oaWRlbnRpZmllclRvU3RyaW5nKHByb3BlcnR5TmFtZSkpOworICAgIHJldHVybiBpbXBs
LT5nZXROYW1lZEl0ZW0ocHJvcGVydHlOYW1lVG9TdHJpbmcocHJvcGVydHlOYW1lKSk7CiB9CiAK
LUpTVmFsdWUgSlNOYW1lZE5vZGVNYXA6Om5hbWVHZXR0ZXIoRXhlY1N0YXRlKiBleGVjLCBKU1Zh
bHVlIHNsb3RCYXNlLCBjb25zdCBJZGVudGlmaWVyJiBwcm9wZXJ0eU5hbWUpCitKU1ZhbHVlIEpT
TmFtZWROb2RlTWFwOjpuYW1lR2V0dGVyKEV4ZWNTdGF0ZSogZXhlYywgSlNWYWx1ZSBzbG90QmFz
ZSwgUHJvcGVydHlOYW1lIHByb3BlcnR5TmFtZSkKIHsKICAgICBKU05hbWVkTm9kZU1hcCogdGhp
c09iaiA9IGpzQ2FzdDxKU05hbWVkTm9kZU1hcCo+KGFzT2JqZWN0KHNsb3RCYXNlKSk7Ci0gICAg
cmV0dXJuIHRvSlMoZXhlYywgdGhpc09iai0+Z2xvYmFsT2JqZWN0KCksIHRoaXNPYmotPmltcGwo
KS0+Z2V0TmFtZWRJdGVtKGlkZW50aWZpZXJUb1N0cmluZyhwcm9wZXJ0eU5hbWUpKSk7CisgICAg
cmV0dXJuIHRvSlMoZXhlYywgdGhpc09iai0+Z2xvYmFsT2JqZWN0KCksIHRoaXNPYmotPmltcGwo
KS0+Z2V0TmFtZWRJdGVtKHByb3BlcnR5TmFtZVRvU3RyaW5nKHByb3BlcnR5TmFtZSkpKTsKIH0K
IAogdm9pZCBKU05hbWVkTm9kZU1hcDo6dmlzaXRDaGlsZHJlbihKU0NlbGwqIGNlbGwsIFNsb3RW
aXNpdG9yJiB2aXNpdG9yKQpJbmRleDogU291cmNlL1dlYkNvcmUvYmluZGluZ3MvanMvSlNOb2Rl
TGlzdEN1c3RvbS5jcHAKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL1dlYkNvcmUvYmluZGluZ3MvanMv
SlNOb2RlTGlzdEN1c3RvbS5jcHAJKHJldmlzaW9uIDExNjY2NykKKysrIFNvdXJjZS9XZWJDb3Jl
L2JpbmRpbmdzL2pzL0pTTm9kZUxpc3RDdXN0b20uY3BwCSh3b3JraW5nIGNvcHkpCkBAIC00Niwx
NSArNDYsMTUgQEAgYm9vbCBKU05vZGVMaXN0T3duZXI6OmlzUmVhY2hhYmxlRnJvbU9wYQogICAg
IHJldHVybiB2aXNpdG9yLmNvbnRhaW5zT3BhcXVlUm9vdChyb290KHN0YXRpY19jYXN0PER5bmFt
aWNOb2RlTGlzdCo+KGpzTm9kZUxpc3QtPmltcGwoKSktPm5vZGUoKSkpOwogfQogCi1ib29sIEpT
Tm9kZUxpc3Q6OmNhbkdldEl0ZW1zRm9yTmFtZShFeGVjU3RhdGUqLCBOb2RlTGlzdCogaW1wbCwg
Y29uc3QgSWRlbnRpZmllciYgcHJvcGVydHlOYW1lKQorYm9vbCBKU05vZGVMaXN0OjpjYW5HZXRJ
dGVtc0Zvck5hbWUoRXhlY1N0YXRlKiwgTm9kZUxpc3QqIGltcGwsIFByb3BlcnR5TmFtZSBwcm9w
ZXJ0eU5hbWUpCiB7Ci0gICAgcmV0dXJuIGltcGwtPml0ZW1XaXRoTmFtZShpZGVudGlmaWVyVG9B
dG9taWNTdHJpbmcocHJvcGVydHlOYW1lKSk7CisgICAgcmV0dXJuIGltcGwtPml0ZW1XaXRoTmFt
ZShwcm9wZXJ0eU5hbWVUb0F0b21pY1N0cmluZyhwcm9wZXJ0eU5hbWUpKTsKIH0KIAotSlNWYWx1
ZSBKU05vZGVMaXN0OjpuYW1lR2V0dGVyKEV4ZWNTdGF0ZSogZXhlYywgSlNWYWx1ZSBzbG90QmFz
ZSwgY29uc3QgSWRlbnRpZmllciYgcHJvcGVydHlOYW1lKQorSlNWYWx1ZSBKU05vZGVMaXN0Ojpu
YW1lR2V0dGVyKEV4ZWNTdGF0ZSogZXhlYywgSlNWYWx1ZSBzbG90QmFzZSwgUHJvcGVydHlOYW1l
IHByb3BlcnR5TmFtZSkKIHsKICAgICBKU05vZGVMaXN0KiB0aGlzT2JqID0ganNDYXN0PEpTTm9k
ZUxpc3QqPihhc09iamVjdChzbG90QmFzZSkpOwotICAgIHJldHVybiB0b0pTKGV4ZWMsIHRoaXNP
YmotPmdsb2JhbE9iamVjdCgpLCB0aGlzT2JqLT5pbXBsKCktPml0ZW1XaXRoTmFtZShpZGVudGlm
aWVyVG9BdG9taWNTdHJpbmcocHJvcGVydHlOYW1lKSkpOworICAgIHJldHVybiB0b0pTKGV4ZWMs
IHRoaXNPYmotPmdsb2JhbE9iamVjdCgpLCB0aGlzT2JqLT5pbXBsKCktPml0ZW1XaXRoTmFtZShw
cm9wZXJ0eU5hbWVUb0F0b21pY1N0cmluZyhwcm9wZXJ0eU5hbWUpKSk7CiB9CiAKIH0gLy8gbmFt
ZXNwYWNlIFdlYkNvcmUKSW5kZXg6IFNvdXJjZS9XZWJDb3JlL2JpbmRpbmdzL2pzL0pTUGx1Z2lu
RWxlbWVudEZ1bmN0aW9ucy5jcHAKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL1dlYkNvcmUvYmluZGlu
Z3MvanMvSlNQbHVnaW5FbGVtZW50RnVuY3Rpb25zLmNwcAkocmV2aXNpb24gMTE2NjY3KQorKysg
U291cmNlL1dlYkNvcmUvYmluZGluZ3MvanMvSlNQbHVnaW5FbGVtZW50RnVuY3Rpb25zLmNwcAko
d29ya2luZyBjb3B5KQpAQCAtMTAwLDcgKzEwMCw3IEBAIEpTT2JqZWN0KiBwbHVnaW5TY3JpcHRP
YmplY3QoRXhlY1N0YXRlKiAKICAgICByZXR1cm4gaW5zdGFuY2UtPmNyZWF0ZVJ1bnRpbWVPYmpl
Y3QoZXhlYyk7CiB9CiAgICAgCi1KU1ZhbHVlIHJ1bnRpbWVPYmplY3RQcm9wZXJ0eUdldHRlcihF
eGVjU3RhdGUqIGV4ZWMsIEpTVmFsdWUgc2xvdEJhc2UsIGNvbnN0IElkZW50aWZpZXImIHByb3Bl
cnR5TmFtZSkKK0pTVmFsdWUgcnVudGltZU9iamVjdFByb3BlcnR5R2V0dGVyKEV4ZWNTdGF0ZSog
ZXhlYywgSlNWYWx1ZSBzbG90QmFzZSwgUHJvcGVydHlOYW1lIHByb3BlcnR5TmFtZSkKIHsKICAg
ICBKU0hUTUxFbGVtZW50KiBlbGVtZW50ID0ganNDYXN0PEpTSFRNTEVsZW1lbnQqPihhc09iamVj
dChzbG90QmFzZSkpOwogICAgIEpTT2JqZWN0KiBzY3JpcHRPYmplY3QgPSBwbHVnaW5TY3JpcHRP
YmplY3QoZXhlYywgZWxlbWVudCk7CkBAIC0xMTAsNyArMTEwLDcgQEAgSlNWYWx1ZSBydW50aW1l
T2JqZWN0UHJvcGVydHlHZXR0ZXIoRXhlYwogICAgIHJldHVybiBzY3JpcHRPYmplY3QtPmdldChl
eGVjLCBwcm9wZXJ0eU5hbWUpOwogfQogCi1ib29sIHJ1bnRpbWVPYmplY3RDdXN0b21HZXRPd25Q
cm9wZXJ0eVNsb3QoRXhlY1N0YXRlKiBleGVjLCBjb25zdCBJZGVudGlmaWVyJiBwcm9wZXJ0eU5h
bWUsIFByb3BlcnR5U2xvdCYgc2xvdCwgSlNIVE1MRWxlbWVudCogZWxlbWVudCkKK2Jvb2wgcnVu
dGltZU9iamVjdEN1c3RvbUdldE93blByb3BlcnR5U2xvdChFeGVjU3RhdGUqIGV4ZWMsIFByb3Bl
cnR5TmFtZSBwcm9wZXJ0eU5hbWUsIFByb3BlcnR5U2xvdCYgc2xvdCwgSlNIVE1MRWxlbWVudCog
ZWxlbWVudCkKIHsKICAgICBKU09iamVjdCogc2NyaXB0T2JqZWN0ID0gcGx1Z2luU2NyaXB0T2Jq
ZWN0KGV4ZWMsIGVsZW1lbnQpOwogICAgIGlmICghc2NyaXB0T2JqZWN0KQpAQCAtMTIyLDcgKzEy
Miw3IEBAIGJvb2wgcnVudGltZU9iamVjdEN1c3RvbUdldE93blByb3BlcnR5U2wKICAgICByZXR1
cm4gdHJ1ZTsKIH0KIAotYm9vbCBydW50aW1lT2JqZWN0Q3VzdG9tR2V0T3duUHJvcGVydHlEZXNj
cmlwdG9yKEV4ZWNTdGF0ZSogZXhlYywgY29uc3QgSWRlbnRpZmllciYgcHJvcGVydHlOYW1lLCBQ
cm9wZXJ0eURlc2NyaXB0b3ImIGRlc2NyaXB0b3IsIEpTSFRNTEVsZW1lbnQqIGVsZW1lbnQpCiti
b29sIHJ1bnRpbWVPYmplY3RDdXN0b21HZXRPd25Qcm9wZXJ0eURlc2NyaXB0b3IoRXhlY1N0YXRl
KiBleGVjLCBQcm9wZXJ0eU5hbWUgcHJvcGVydHlOYW1lLCBQcm9wZXJ0eURlc2NyaXB0b3ImIGRl
c2NyaXB0b3IsIEpTSFRNTEVsZW1lbnQqIGVsZW1lbnQpCiB7CiAgICAgSlNPYmplY3QqIHNjcmlw
dE9iamVjdCA9IHBsdWdpblNjcmlwdE9iamVjdChleGVjLCBlbGVtZW50KTsKICAgICBpZiAoIXNj
cmlwdE9iamVjdCkKQEAgLTEzOCw3ICsxMzgsNyBAQCBib29sIHJ1bnRpbWVPYmplY3RDdXN0b21H
ZXRPd25Qcm9wZXJ0eURlCiAgICAgcmV0dXJuIHRydWU7CiB9CiAKLWJvb2wgcnVudGltZU9iamVj
dEN1c3RvbVB1dChFeGVjU3RhdGUqIGV4ZWMsIGNvbnN0IElkZW50aWZpZXImIHByb3BlcnR5TmFt
ZSwgSlNWYWx1ZSB2YWx1ZSwgSlNIVE1MRWxlbWVudCogZWxlbWVudCwgUHV0UHJvcGVydHlTbG90
JiBzbG90KQorYm9vbCBydW50aW1lT2JqZWN0Q3VzdG9tUHV0KEV4ZWNTdGF0ZSogZXhlYywgUHJv
cGVydHlOYW1lIHByb3BlcnR5TmFtZSwgSlNWYWx1ZSB2YWx1ZSwgSlNIVE1MRWxlbWVudCogZWxl
bWVudCwgUHV0UHJvcGVydHlTbG90JiBzbG90KQogewogICAgIEpTT2JqZWN0KiBzY3JpcHRPYmpl
Y3QgPSBwbHVnaW5TY3JpcHRPYmplY3QoZXhlYywgZWxlbWVudCk7CiAgICAgaWYgKCFzY3JpcHRP
YmplY3QpCkluZGV4OiBTb3VyY2UvV2ViQ29yZS9iaW5kaW5ncy9qcy9KU1BsdWdpbkVsZW1lbnRG
dW5jdGlvbnMuaAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2ViQ29yZS9iaW5kaW5ncy9qcy9KU1Bs
dWdpbkVsZW1lbnRGdW5jdGlvbnMuaAkocmV2aXNpb24gMTE2NjY3KQorKysgU291cmNlL1dlYkNv
cmUvYmluZGluZ3MvanMvSlNQbHVnaW5FbGVtZW50RnVuY3Rpb25zLmgJKHdvcmtpbmcgY29weSkK
QEAgLTM4LDEwICszOCwxMCBAQCBuYW1lc3BhY2UgV2ViQ29yZSB7CiAgICAgSlNDOjpCaW5kaW5n
czo6SW5zdGFuY2UqIHBsdWdpbkluc3RhbmNlKE5vZGUqKTsKICAgICBKU0M6OkpTT2JqZWN0KiBw
bHVnaW5TY3JpcHRPYmplY3QoSlNDOjpFeGVjU3RhdGUqIGV4ZWMsIEpTSFRNTEVsZW1lbnQqIGpz
SFRNTEVsZW1lbnQpOwogCi0gICAgSlNDOjpKU1ZhbHVlIHJ1bnRpbWVPYmplY3RQcm9wZXJ0eUdl
dHRlcihKU0M6OkV4ZWNTdGF0ZSosIEpTQzo6SlNWYWx1ZSwgY29uc3QgSlNDOjpJZGVudGlmaWVy
Jik7Ci0gICAgYm9vbCBydW50aW1lT2JqZWN0Q3VzdG9tR2V0T3duUHJvcGVydHlTbG90KEpTQzo6
RXhlY1N0YXRlKiwgY29uc3QgSlNDOjpJZGVudGlmaWVyJiwgSlNDOjpQcm9wZXJ0eVNsb3QmLCBK
U0hUTUxFbGVtZW50Kik7Ci0gICAgYm9vbCBydW50aW1lT2JqZWN0Q3VzdG9tR2V0T3duUHJvcGVy
dHlEZXNjcmlwdG9yKEpTQzo6RXhlY1N0YXRlKiwgY29uc3QgSlNDOjpJZGVudGlmaWVyJiwgSlND
OjpQcm9wZXJ0eURlc2NyaXB0b3ImLCBKU0hUTUxFbGVtZW50Kik7Ci0gICAgYm9vbCBydW50aW1l
T2JqZWN0Q3VzdG9tUHV0KEpTQzo6RXhlY1N0YXRlKiwgY29uc3QgSlNDOjpJZGVudGlmaWVyJiwg
SlNDOjpKU1ZhbHVlLCBKU0hUTUxFbGVtZW50KiwgSlNDOjpQdXRQcm9wZXJ0eVNsb3QmKTsKKyAg
ICBKU0M6OkpTVmFsdWUgcnVudGltZU9iamVjdFByb3BlcnR5R2V0dGVyKEpTQzo6RXhlY1N0YXRl
KiwgSlNDOjpKU1ZhbHVlLCBKU0M6OlByb3BlcnR5TmFtZSk7CisgICAgYm9vbCBydW50aW1lT2Jq
ZWN0Q3VzdG9tR2V0T3duUHJvcGVydHlTbG90KEpTQzo6RXhlY1N0YXRlKiwgSlNDOjpQcm9wZXJ0
eU5hbWUsIEpTQzo6UHJvcGVydHlTbG90JiwgSlNIVE1MRWxlbWVudCopOworICAgIGJvb2wgcnVu
dGltZU9iamVjdEN1c3RvbUdldE93blByb3BlcnR5RGVzY3JpcHRvcihKU0M6OkV4ZWNTdGF0ZSos
IEpTQzo6UHJvcGVydHlOYW1lLCBKU0M6OlByb3BlcnR5RGVzY3JpcHRvciYsIEpTSFRNTEVsZW1l
bnQqKTsKKyAgICBib29sIHJ1bnRpbWVPYmplY3RDdXN0b21QdXQoSlNDOjpFeGVjU3RhdGUqLCBK
U0M6OlByb3BlcnR5TmFtZSwgSlNDOjpKU1ZhbHVlLCBKU0hUTUxFbGVtZW50KiwgSlNDOjpQdXRQ
cm9wZXJ0eVNsb3QmKTsKICAgICBKU0M6OkNhbGxUeXBlIHJ1bnRpbWVPYmplY3RHZXRDYWxsRGF0
YShKU0hUTUxFbGVtZW50KiwgSlNDOjpDYWxsRGF0YSYpOwogCiB9IC8vIG5hbWVzcGFjZSBXZWJD
b3JlCkluZGV4OiBTb3VyY2UvV2ViQ29yZS9iaW5kaW5ncy9qcy9KU1N0b3JhZ2VDdXN0b20uY3Bw
Cj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT0KLS0tIFNvdXJjZS9XZWJDb3JlL2JpbmRpbmdzL2pzL0pTU3RvcmFnZUN1c3Rv
bS5jcHAJKHJldmlzaW9uIDExNjY2NykKKysrIFNvdXJjZS9XZWJDb3JlL2JpbmRpbmdzL2pzL0pT
U3RvcmFnZUN1c3RvbS5jcHAJKHdvcmtpbmcgY29weSkKQEAgLTM0LDEyICszNCwxMiBAQCB1c2lu
ZyBuYW1lc3BhY2UgSlNDOwogCiBuYW1lc3BhY2UgV2ViQ29yZSB7CiAKLWJvb2wgSlNTdG9yYWdl
OjpjYW5HZXRJdGVtc0Zvck5hbWUoRXhlY1N0YXRlKiwgU3RvcmFnZSogaW1wbCwgY29uc3QgSWRl
bnRpZmllciYgcHJvcGVydHlOYW1lKQorYm9vbCBKU1N0b3JhZ2U6OmNhbkdldEl0ZW1zRm9yTmFt
ZShFeGVjU3RhdGUqLCBTdG9yYWdlKiBpbXBsLCBQcm9wZXJ0eU5hbWUgcHJvcGVydHlOYW1lKQog
ewotICAgIHJldHVybiBpbXBsLT5jb250YWlucyhpZGVudGlmaWVyVG9TdHJpbmcocHJvcGVydHlO
YW1lKSk7CisgICAgcmV0dXJuIGltcGwtPmNvbnRhaW5zKHByb3BlcnR5TmFtZVRvU3RyaW5nKHBy
b3BlcnR5TmFtZSkpOwogfQogCi1KU1ZhbHVlIEpTU3RvcmFnZTo6bmFtZUdldHRlcihFeGVjU3Rh
dGUqIGV4ZWMsIEpTVmFsdWUgc2xvdEJhc2UsIGNvbnN0IElkZW50aWZpZXImIHByb3BlcnR5TmFt
ZSkKK0pTVmFsdWUgSlNTdG9yYWdlOjpuYW1lR2V0dGVyKEV4ZWNTdGF0ZSogZXhlYywgSlNWYWx1
ZSBzbG90QmFzZSwgUHJvcGVydHlOYW1lIHByb3BlcnR5TmFtZSkKIHsKICAgICBKU1N0b3JhZ2Uq
IHRoaXNPYmogPSBqc0Nhc3Q8SlNTdG9yYWdlKj4oYXNPYmplY3Qoc2xvdEJhc2UpKTsKICAgICAg
ICAgCkBAIC00NywxMCArNDcsMTAgQEAgSlNWYWx1ZSBKU1N0b3JhZ2U6Om5hbWVHZXR0ZXIoRXhl
Y1N0YXRlKgogICAgIGlmIChwcm90b3R5cGUuaXNPYmplY3QoKSAmJiBhc09iamVjdChwcm90b3R5
cGUpLT5oYXNQcm9wZXJ0eShleGVjLCBwcm9wZXJ0eU5hbWUpKQogICAgICAgICByZXR1cm4gYXNP
YmplY3QocHJvdG90eXBlKS0+Z2V0KGV4ZWMsIHByb3BlcnR5TmFtZSk7CiAgCi0gICAgcmV0dXJu
IGpzU3RyaW5nT3JOdWxsKGV4ZWMsIHRoaXNPYmotPmltcGwoKS0+Z2V0SXRlbShpZGVudGlmaWVy
VG9TdHJpbmcocHJvcGVydHlOYW1lKSkpOworICAgIHJldHVybiBqc1N0cmluZ09yTnVsbChleGVj
LCB0aGlzT2JqLT5pbXBsKCktPmdldEl0ZW0ocHJvcGVydHlOYW1lVG9TdHJpbmcocHJvcGVydHlO
YW1lKSkpOwogfQogCi1ib29sIEpTU3RvcmFnZTo6ZGVsZXRlUHJvcGVydHkoSlNDZWxsKiBjZWxs
LCBFeGVjU3RhdGUqIGV4ZWMsIGNvbnN0IElkZW50aWZpZXImIHByb3BlcnR5TmFtZSkKK2Jvb2wg
SlNTdG9yYWdlOjpkZWxldGVQcm9wZXJ0eShKU0NlbGwqIGNlbGwsIEV4ZWNTdGF0ZSogZXhlYywg
UHJvcGVydHlOYW1lIHByb3BlcnR5TmFtZSkKIHsKICAgICBKU1N0b3JhZ2UqIHRoaXNPYmplY3Qg
PSBqc0Nhc3Q8SlNTdG9yYWdlKj4oY2VsbCk7CiAgICAgLy8gT25seSBwZXJmb3JtIHRoZSBjdXN0
b20gZGVsZXRlIGlmIHRoZSBvYmplY3QgZG9lc24ndCBoYXZlIGEgbmF0aXZlIHByb3BlcnR5IGJ5
IHRoaXMgbmFtZS4KQEAgLTY0LDcgKzY0LDcgQEAgYm9vbCBKU1N0b3JhZ2U6OmRlbGV0ZVByb3Bl
cnR5KEpTQ2VsbCogYwogICAgIGlmIChwcm90b3R5cGUuaXNPYmplY3QoKSAmJiBhc09iamVjdChw
cm90b3R5cGUpLT5oYXNQcm9wZXJ0eShleGVjLCBwcm9wZXJ0eU5hbWUpKQogICAgICAgICByZXR1
cm4gZmFsc2U7CiAKLSAgICB0aGlzT2JqZWN0LT5tX2ltcGwtPnJlbW92ZUl0ZW0oaWRlbnRpZmll
clRvU3RyaW5nKHByb3BlcnR5TmFtZSkpOworICAgIHRoaXNPYmplY3QtPm1faW1wbC0+cmVtb3Zl
SXRlbShwcm9wZXJ0eU5hbWVUb1N0cmluZyhwcm9wZXJ0eU5hbWUpKTsKICAgICByZXR1cm4gdHJ1
ZTsKIH0KIApAQCAtNzgsNyArNzgsNyBAQCB2b2lkIEpTU3RvcmFnZTo6Z2V0T3duUHJvcGVydHlO
YW1lcyhKU09iCiAgICAgQmFzZTo6Z2V0T3duUHJvcGVydHlOYW1lcyh0aGlzT2JqZWN0LCBleGVj
LCBwcm9wZXJ0eU5hbWVzLCBtb2RlKTsKIH0KIAotYm9vbCBKU1N0b3JhZ2U6OnB1dERlbGVnYXRl
KEV4ZWNTdGF0ZSogZXhlYywgY29uc3QgSWRlbnRpZmllciYgcHJvcGVydHlOYW1lLCBKU1ZhbHVl
IHZhbHVlLCBQdXRQcm9wZXJ0eVNsb3QmKQorYm9vbCBKU1N0b3JhZ2U6OnB1dERlbGVnYXRlKEV4
ZWNTdGF0ZSogZXhlYywgUHJvcGVydHlOYW1lIHByb3BlcnR5TmFtZSwgSlNWYWx1ZSB2YWx1ZSwg
UHV0UHJvcGVydHlTbG90JikKIHsKICAgICAvLyBPbmx5IHBlcmZvcm0gdGhlIGN1c3RvbSBwdXQg
aWYgdGhlIG9iamVjdCBkb2Vzbid0IGhhdmUgYSBuYXRpdmUgcHJvcGVydHkgYnkgdGhpcyBuYW1l
LgogICAgIC8vIFNpbmNlIGhhc1Byb3BlcnR5KCkgd291bGQgZW5kIHVwIGNhbGxpbmcgY2FuR2V0
SXRlbXNGb3JOYW1lKCkgYW5kIGJlIGZvb2xlZCwgd2UgbmVlZCB0byBjaGVjawpAQCAtOTYsNyAr
OTYsNyBAQCBib29sIEpTU3RvcmFnZTo6cHV0RGVsZWdhdGUoRXhlY1N0YXRlKiBlCiAgICAgICAg
IHJldHVybiB0cnVlOwogICAgIAogICAgIEV4Y2VwdGlvbkNvZGUgZWMgPSAwOwotICAgIGltcGwo
KS0+c2V0SXRlbShpZGVudGlmaWVyVG9TdHJpbmcocHJvcGVydHlOYW1lKSwgc3RyaW5nVmFsdWUs
IGVjKTsKKyAgICBpbXBsKCktPnNldEl0ZW0ocHJvcGVydHlOYW1lVG9TdHJpbmcocHJvcGVydHlO
YW1lKSwgc3RyaW5nVmFsdWUsIGVjKTsKICAgICBzZXRET01FeGNlcHRpb24oZXhlYywgZWMpOwog
CiAgICAgcmV0dXJuIHRydWU7CkluZGV4OiBTb3VyY2UvV2ViQ29yZS9iaW5kaW5ncy9qcy9KU1N0
eWxlU2hlZXRMaXN0Q3VzdG9tLmNwcAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2ViQ29yZS9iaW5k
aW5ncy9qcy9KU1N0eWxlU2hlZXRMaXN0Q3VzdG9tLmNwcAkocmV2aXNpb24gMTE2NjY3KQorKysg
U291cmNlL1dlYkNvcmUvYmluZGluZ3MvanMvSlNTdHlsZVNoZWV0TGlzdEN1c3RvbS5jcHAJKHdv
cmtpbmcgY29weSkKQEAgLTM1LDE1ICszNSwxNSBAQCB1c2luZyBuYW1lc3BhY2UgSlNDOwogCiBu
YW1lc3BhY2UgV2ViQ29yZSB7CiAKLWJvb2wgSlNTdHlsZVNoZWV0TGlzdDo6Y2FuR2V0SXRlbXNG
b3JOYW1lKEV4ZWNTdGF0ZSosIFN0eWxlU2hlZXRMaXN0KiBzdHlsZVNoZWV0TGlzdCwgY29uc3Qg
SWRlbnRpZmllciYgcHJvcGVydHlOYW1lKQorYm9vbCBKU1N0eWxlU2hlZXRMaXN0OjpjYW5HZXRJ
dGVtc0Zvck5hbWUoRXhlY1N0YXRlKiwgU3R5bGVTaGVldExpc3QqIHN0eWxlU2hlZXRMaXN0LCBQ
cm9wZXJ0eU5hbWUgcHJvcGVydHlOYW1lKQogewotICAgIHJldHVybiBzdHlsZVNoZWV0TGlzdC0+
Z2V0TmFtZWRJdGVtKGlkZW50aWZpZXJUb1N0cmluZyhwcm9wZXJ0eU5hbWUpKTsKKyAgICByZXR1
cm4gc3R5bGVTaGVldExpc3QtPmdldE5hbWVkSXRlbShwcm9wZXJ0eU5hbWVUb1N0cmluZyhwcm9w
ZXJ0eU5hbWUpKTsKIH0KIAotSlNWYWx1ZSBKU1N0eWxlU2hlZXRMaXN0OjpuYW1lR2V0dGVyKEV4
ZWNTdGF0ZSogZXhlYywgSlNWYWx1ZSBzbG90QmFzZSwgY29uc3QgSWRlbnRpZmllciYgcHJvcGVy
dHlOYW1lKQorSlNWYWx1ZSBKU1N0eWxlU2hlZXRMaXN0OjpuYW1lR2V0dGVyKEV4ZWNTdGF0ZSog
ZXhlYywgSlNWYWx1ZSBzbG90QmFzZSwgUHJvcGVydHlOYW1lIHByb3BlcnR5TmFtZSkKIHsKICAg
ICBKU1N0eWxlU2hlZXRMaXN0KiB0aGlzT2JqID0ganNDYXN0PEpTU3R5bGVTaGVldExpc3QqPihh
c09iamVjdChzbG90QmFzZSkpOwotICAgIEhUTUxTdHlsZUVsZW1lbnQqIGVsZW1lbnQgPSB0aGlz
T2JqLT5pbXBsKCktPmdldE5hbWVkSXRlbShpZGVudGlmaWVyVG9TdHJpbmcocHJvcGVydHlOYW1l
KSk7CisgICAgSFRNTFN0eWxlRWxlbWVudCogZWxlbWVudCA9IHRoaXNPYmotPmltcGwoKS0+Z2V0
TmFtZWRJdGVtKHByb3BlcnR5TmFtZVRvU3RyaW5nKHByb3BlcnR5TmFtZSkpOwogICAgIEFTU0VS
VChlbGVtZW50KTsKICAgICByZXR1cm4gdG9KUyhleGVjLCB0aGlzT2JqLT5nbG9iYWxPYmplY3Qo
KSwgZWxlbWVudC0+c2hlZXQoKSk7CiB9CkluZGV4OiBTb3VyY2UvV2ViQ29yZS9iaW5kaW5ncy9q
cy9KU1dvcmtlckNvbnRleHRDdXN0b20uY3BwCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9XZWJDb3Jl
L2JpbmRpbmdzL2pzL0pTV29ya2VyQ29udGV4dEN1c3RvbS5jcHAJKHJldmlzaW9uIDExNjY2NykK
KysrIFNvdXJjZS9XZWJDb3JlL2JpbmRpbmdzL2pzL0pTV29ya2VyQ29udGV4dEN1c3RvbS5jcHAJ
KHdvcmtpbmcgY29weSkKQEAgLTY5LDcgKzY5LDcgQEAgdm9pZCBKU1dvcmtlckNvbnRleHQ6OnZp
c2l0Q2hpbGRyZW4oSlNDZQogICAgIHRoaXNPYmplY3QtPmltcGwoKS0+dmlzaXRKU0V2ZW50TGlz
dGVuZXJzKHZpc2l0b3IpOwogfQogCi1ib29sIEpTV29ya2VyQ29udGV4dDo6Z2V0T3duUHJvcGVy
dHlTbG90RGVsZWdhdGUoRXhlY1N0YXRlKiBleGVjLCBjb25zdCBJZGVudGlmaWVyJiBwcm9wZXJ0
eU5hbWUsIFByb3BlcnR5U2xvdCYgc2xvdCkKK2Jvb2wgSlNXb3JrZXJDb250ZXh0OjpnZXRPd25Q
cm9wZXJ0eVNsb3REZWxlZ2F0ZShFeGVjU3RhdGUqIGV4ZWMsIFByb3BlcnR5TmFtZSBwcm9wZXJ0
eU5hbWUsIFByb3BlcnR5U2xvdCYgc2xvdCkKIHsKICAgICAvLyBMb29rIGZvciBvdmVycmlkZXMg
YmVmb3JlIGxvb2tpbmcgYXQgYW55IG9mIG91ciBvd24gcHJvcGVydGllcy4KICAgICBpZiAoSlNH
bG9iYWxPYmplY3Q6OmdldE93blByb3BlcnR5U2xvdCh0aGlzLCBleGVjLCBwcm9wZXJ0eU5hbWUs
IHNsb3QpKQpAQCAtNzcsNyArNzcsNyBAQCBib29sIEpTV29ya2VyQ29udGV4dDo6Z2V0T3duUHJv
cGVydHlTbG90CiAgICAgcmV0dXJuIGZhbHNlOwogfQogCi1ib29sIEpTV29ya2VyQ29udGV4dDo6
Z2V0T3duUHJvcGVydHlEZXNjcmlwdG9yRGVsZWdhdGUoRXhlY1N0YXRlKiBleGVjLCBjb25zdCBJ
ZGVudGlmaWVyJiBwcm9wZXJ0eU5hbWUsIFByb3BlcnR5RGVzY3JpcHRvciYgZGVzY3JpcHRvcikK
K2Jvb2wgSlNXb3JrZXJDb250ZXh0OjpnZXRPd25Qcm9wZXJ0eURlc2NyaXB0b3JEZWxlZ2F0ZShF
eGVjU3RhdGUqIGV4ZWMsIFByb3BlcnR5TmFtZSBwcm9wZXJ0eU5hbWUsIFByb3BlcnR5RGVzY3Jp
cHRvciYgZGVzY3JpcHRvcikKIHsKICAgICAvLyBMb29rIGZvciBvdmVycmlkZXMgYmVmb3JlIGxv
b2tpbmcgYXQgYW55IG9mIG91ciBvd24gcHJvcGVydGllcy4KICAgICBpZiAoSlNHbG9iYWxPYmpl
Y3Q6OmdldE93blByb3BlcnR5RGVzY3JpcHRvcih0aGlzLCBleGVjLCBwcm9wZXJ0eU5hbWUsIGRl
c2NyaXB0b3IpKQpJbmRleDogU291cmNlL1dlYkNvcmUvYmluZGluZ3Mvc2NyaXB0cy9Db2RlR2Vu
ZXJhdG9ySlMucG0KPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL1dlYkNvcmUvYmluZGluZ3Mvc2NyaXB0
cy9Db2RlR2VuZXJhdG9ySlMucG0JKHJldmlzaW9uIDExNjY2NykKKysrIFNvdXJjZS9XZWJDb3Jl
L2JpbmRpbmdzL3NjcmlwdHMvQ29kZUdlbmVyYXRvckpTLnBtCSh3b3JraW5nIGNvcHkpCkBAIC00
MTIsMTUgKzQxMiwxNCBAQCBzdWIgR2VuZXJhdGVHZXRPd25Qcm9wZXJ0eVNsb3RCb2R5CiAgICAg
fQogCiAgICAgaWYgKCRkYXRhTm9kZS0+ZXh0ZW5kZWRBdHRyaWJ1dGVzLT57IkluZGV4ZWRHZXR0
ZXIifSB8fCAkZGF0YU5vZGUtPmV4dGVuZGVkQXR0cmlidXRlcy0+eyJOdW1lcmljSW5kZXhlZEdl
dHRlciJ9KSB7Ci0gICAgICAgIHB1c2goQGdldE93blByb3BlcnR5U2xvdEltcGwsICIgICAgYm9v
bCBvaztcbiIpOwotICAgICAgICBwdXNoKEBnZXRPd25Qcm9wZXJ0eVNsb3RJbXBsLCAiICAgIHVu
c2lnbmVkIGluZGV4ID0gcHJvcGVydHlOYW1lLnRvVUludDMyKG9rKTtcbiIpOworICAgICAgICBw
dXNoKEBnZXRPd25Qcm9wZXJ0eVNsb3RJbXBsLCAiICAgIHVuc2lnbmVkIGluZGV4ID0gcHJvcGVy
dHlOYW1lLmFzSW5kZXgoKTtcbiIpOwogCiAgICAgICAgICMgSWYgdGhlIGl0ZW0gZnVuY3Rpb24g
cmV0dXJucyBhIHN0cmluZyB0aGVuIHdlIGxldCB0aGUgVHJlYXRSZXR1cm5lZE51bGxTdHJpbmdB
cyBoYW5kbGUgdGhlIGNhc2VzCiAgICAgICAgICMgd2hlcmUgdGhlIGluZGV4IGlzIG91dCBvZiBy
YW5nZS4KICAgICAgICAgaWYgKEluZGV4R2V0dGVyUmV0dXJuc1N0cmluZ3MoJGltcGxDbGFzc05h
bWUpKSB7Ci0gICAgICAgICAgICBwdXNoKEBnZXRPd25Qcm9wZXJ0eVNsb3RJbXBsLCAiICAgIGlm
IChvaykge1xuIik7CisgICAgICAgICAgICBwdXNoKEBnZXRPd25Qcm9wZXJ0eVNsb3RJbXBsLCAi
ICAgIGlmIChpbmRleCAhPSBQcm9wZXJ0eU5hbWU6Ok5vdEFuSW5kZXgpIHtcbiIpOwogICAgICAg
ICB9IGVsc2UgewotICAgICAgICAgICAgcHVzaChAZ2V0T3duUHJvcGVydHlTbG90SW1wbCwgIiAg
ICBpZiAob2sgJiYgaW5kZXggPCBzdGF0aWNfY2FzdDwkaW1wbENsYXNzTmFtZSo+KHRoaXNPYmpl
Y3QtPmltcGwoKSktPmxlbmd0aCgpKSB7XG4iKTsKKyAgICAgICAgICAgIHB1c2goQGdldE93blBy
b3BlcnR5U2xvdEltcGwsICIgICAgaWYgKGluZGV4ICE9IFByb3BlcnR5TmFtZTo6Tm90QW5JbmRl
eCAmJiBpbmRleCA8IHN0YXRpY19jYXN0PCRpbXBsQ2xhc3NOYW1lKj4odGhpc09iamVjdC0+aW1w
bCgpKS0+bGVuZ3RoKCkpIHtcbiIpOwogICAgICAgICB9CiAgICAgICAgIGlmICgkZGF0YU5vZGUt
PmV4dGVuZGVkQXR0cmlidXRlcy0+eyJOdW1lcmljSW5kZXhlZEdldHRlciJ9KSB7CiAgICAgICAg
ICAgICBwdXNoKEBnZXRPd25Qcm9wZXJ0eVNsb3RJbXBsLCAiICAgICAgICBzbG90LnNldFZhbHVl
KHRoaXNPYmplY3QtPmdldEJ5SW5kZXgoZXhlYywgaW5kZXgpKTtcbiIpOwpAQCAtNTA2LDkgKzUw
NSw4IEBAIHN1YiBHZW5lcmF0ZUdldE93blByb3BlcnR5RGVzY3JpcHRvckJvZHkKICAgICB9CiAK
ICAgICBpZiAoJGRhdGFOb2RlLT5leHRlbmRlZEF0dHJpYnV0ZXMtPnsiSW5kZXhlZEdldHRlciJ9
IHx8ICRkYXRhTm9kZS0+ZXh0ZW5kZWRBdHRyaWJ1dGVzLT57Ik51bWVyaWNJbmRleGVkR2V0dGVy
In0pIHsKLSAgICAgICAgcHVzaChAZ2V0T3duUHJvcGVydHlEZXNjcmlwdG9ySW1wbCwgIiAgICBi
b29sIG9rO1xuIik7Ci0gICAgICAgIHB1c2goQGdldE93blByb3BlcnR5RGVzY3JpcHRvckltcGws
ICIgICAgdW5zaWduZWQgaW5kZXggPSBwcm9wZXJ0eU5hbWUudG9VSW50MzIob2spO1xuIik7Ci0g
ICAgICAgIHB1c2goQGdldE93blByb3BlcnR5RGVzY3JpcHRvckltcGwsICIgICAgaWYgKG9rICYm
IGluZGV4IDwgc3RhdGljX2Nhc3Q8JGltcGxDbGFzc05hbWUqPih0aGlzT2JqZWN0LT5pbXBsKCkp
LT5sZW5ndGgoKSkge1xuIik7CisgICAgICAgIHB1c2goQGdldE93blByb3BlcnR5RGVzY3JpcHRv
ckltcGwsICIgICAgdW5zaWduZWQgaW5kZXggPSBwcm9wZXJ0eU5hbWUuYXNJbmRleCgpO1xuIik7
CisgICAgICAgIHB1c2goQGdldE93blByb3BlcnR5RGVzY3JpcHRvckltcGwsICIgICAgaWYgKGlu
ZGV4ICE9IFByb3BlcnR5TmFtZTo6Tm90QW5JbmRleCAmJiBpbmRleCA8IHN0YXRpY19jYXN0PCRp
bXBsQ2xhc3NOYW1lKj4odGhpc09iamVjdC0+aW1wbCgpKS0+bGVuZ3RoKCkpIHtcbiIpOwogICAg
ICAgICBpZiAoJGRhdGFOb2RlLT5leHRlbmRlZEF0dHJpYnV0ZXMtPnsiTnVtZXJpY0luZGV4ZWRH
ZXR0ZXIifSkgewogICAgICAgICAgICAgIyBBc3N1bWUgdGhhdCBpZiB0aGVyZSdzIGEgc2V0dGVy
LCB0aGUgaW5kZXggd2lsbCBiZSB3cml0YWJsZQogICAgICAgICAgICAgaWYgKCRkYXRhTm9kZS0+
ZXh0ZW5kZWRBdHRyaWJ1dGVzLT57IkN1c3RvbUluZGV4ZWRTZXR0ZXIifSkgewpAQCAtNzQyLDEx
ICs3NDAsMTEgQEAgc3ViIEdlbmVyYXRlSGVhZGVyCiAKICAgICAjIEdldHRlcnMKICAgICBpZiAo
JGhhc0dldHRlcikgewotICAgICAgICBwdXNoKEBoZWFkZXJDb250ZW50LCAiICAgIHN0YXRpYyBi
b29sIGdldE93blByb3BlcnR5U2xvdChKU0M6OkpTQ2VsbCosIEpTQzo6RXhlY1N0YXRlKiwgY29u
c3QgSlNDOjpJZGVudGlmaWVyJiBwcm9wZXJ0eU5hbWUsIEpTQzo6UHJvcGVydHlTbG90Jik7XG4i
KTsKLSAgICAgICAgcHVzaChAaGVhZGVyQ29udGVudCwgIiAgICBzdGF0aWMgYm9vbCBnZXRPd25Q
cm9wZXJ0eURlc2NyaXB0b3IoSlNDOjpKU09iamVjdCosIEpTQzo6RXhlY1N0YXRlKiwgY29uc3Qg
SlNDOjpJZGVudGlmaWVyJiBwcm9wZXJ0eU5hbWUsIEpTQzo6UHJvcGVydHlEZXNjcmlwdG9yJik7
XG4iKTsKKyAgICAgICAgcHVzaChAaGVhZGVyQ29udGVudCwgIiAgICBzdGF0aWMgYm9vbCBnZXRP
d25Qcm9wZXJ0eVNsb3QoSlNDOjpKU0NlbGwqLCBKU0M6OkV4ZWNTdGF0ZSosIEpTQzo6UHJvcGVy
dHlOYW1lLCBKU0M6OlByb3BlcnR5U2xvdCYpO1xuIik7CisgICAgICAgIHB1c2goQGhlYWRlckNv
bnRlbnQsICIgICAgc3RhdGljIGJvb2wgZ2V0T3duUHJvcGVydHlEZXNjcmlwdG9yKEpTQzo6SlNP
YmplY3QqLCBKU0M6OkV4ZWNTdGF0ZSosIEpTQzo6UHJvcGVydHlOYW1lLCBKU0M6OlByb3BlcnR5
RGVzY3JpcHRvciYpO1xuIik7CiAgICAgICAgIHB1c2goQGhlYWRlckNvbnRlbnQsICIgICAgc3Rh
dGljIGJvb2wgZ2V0T3duUHJvcGVydHlTbG90QnlJbmRleChKU0M6OkpTQ2VsbCosIEpTQzo6RXhl
Y1N0YXRlKiwgdW5zaWduZWQgcHJvcGVydHlOYW1lLCBKU0M6OlByb3BlcnR5U2xvdCYpO1xuIikg
aWYgKCRkYXRhTm9kZS0+ZXh0ZW5kZWRBdHRyaWJ1dGVzLT57IkluZGV4ZWRHZXR0ZXIifSB8fCAk
ZGF0YU5vZGUtPmV4dGVuZGVkQXR0cmlidXRlcy0+eyJOdW1lcmljSW5kZXhlZEdldHRlciJ9KSAm
JiAhJGRhdGFOb2RlLT5leHRlbmRlZEF0dHJpYnV0ZXMtPnsiQ3VzdG9tTmFtZWRHZXR0ZXIifTsK
LSAgICAgICAgcHVzaChAaGVhZGVyQ29udGVudCwgIiAgICBib29sIGdldE93blByb3BlcnR5U2xv
dERlbGVnYXRlKEpTQzo6RXhlY1N0YXRlKiwgY29uc3QgSlNDOjpJZGVudGlmaWVyJiwgSlNDOjpQ
cm9wZXJ0eVNsb3QmKTtcbiIpIGlmICRkYXRhTm9kZS0+ZXh0ZW5kZWRBdHRyaWJ1dGVzLT57IkpT
Q3VzdG9tR2V0T3duUHJvcGVydHlTbG90QW5kRGVzY3JpcHRvciJ9OwotICAgICAgICBwdXNoKEBo
ZWFkZXJDb250ZW50LCAiICAgIGJvb2wgZ2V0T3duUHJvcGVydHlEZXNjcmlwdG9yRGVsZWdhdGUo
SlNDOjpFeGVjU3RhdGUqLCBjb25zdCBKU0M6OklkZW50aWZpZXImLCBKU0M6OlByb3BlcnR5RGVz
Y3JpcHRvciYpO1xuIikgaWYgJGRhdGFOb2RlLT5leHRlbmRlZEF0dHJpYnV0ZXMtPnsiSlNDdXN0
b21HZXRPd25Qcm9wZXJ0eVNsb3RBbmREZXNjcmlwdG9yIn07CisgICAgICAgIHB1c2goQGhlYWRl
ckNvbnRlbnQsICIgICAgYm9vbCBnZXRPd25Qcm9wZXJ0eVNsb3REZWxlZ2F0ZShKU0M6OkV4ZWNT
dGF0ZSosIEpTQzo6UHJvcGVydHlOYW1lLCBKU0M6OlByb3BlcnR5U2xvdCYpO1xuIikgaWYgJGRh
dGFOb2RlLT5leHRlbmRlZEF0dHJpYnV0ZXMtPnsiSlNDdXN0b21HZXRPd25Qcm9wZXJ0eVNsb3RB
bmREZXNjcmlwdG9yIn07CisgICAgICAgIHB1c2goQGhlYWRlckNvbnRlbnQsICIgICAgYm9vbCBn
ZXRPd25Qcm9wZXJ0eURlc2NyaXB0b3JEZWxlZ2F0ZShKU0M6OkV4ZWNTdGF0ZSosIEpTQzo6UHJv
cGVydHlOYW1lLCBKU0M6OlByb3BlcnR5RGVzY3JpcHRvciYpO1xuIikgaWYgJGRhdGFOb2RlLT5l
eHRlbmRlZEF0dHJpYnV0ZXMtPnsiSlNDdXN0b21HZXRPd25Qcm9wZXJ0eVNsb3RBbmREZXNjcmlw
dG9yIn07CiAgICAgICAgICRzdHJ1Y3R1cmVGbGFnc3siSlNDOjpPdmVycmlkZXNHZXRPd25Qcm9w
ZXJ0eVNsb3QifSA9IDE7CiAgICAgfQogCkBAIC03NjUsOSArNzYzLDkgQEAgc3ViIEdlbmVyYXRl
SGVhZGVyCiAKICAgICAjIEdldHRlcnMKICAgICBpZiAoJGhhc1NldHRlcikgewotICAgICAgICBw
dXNoKEBoZWFkZXJDb250ZW50LCAiICAgIHN0YXRpYyB2b2lkIHB1dChKU0M6OkpTQ2VsbCosIEpT
Qzo6RXhlY1N0YXRlKiwgY29uc3QgSlNDOjpJZGVudGlmaWVyJiBwcm9wZXJ0eU5hbWUsIEpTQzo6
SlNWYWx1ZSwgSlNDOjpQdXRQcm9wZXJ0eVNsb3QmKTtcbiIpOworICAgICAgICBwdXNoKEBoZWFk
ZXJDb250ZW50LCAiICAgIHN0YXRpYyB2b2lkIHB1dChKU0M6OkpTQ2VsbCosIEpTQzo6RXhlY1N0
YXRlKiwgSlNDOjpQcm9wZXJ0eU5hbWUsIEpTQzo6SlNWYWx1ZSwgSlNDOjpQdXRQcm9wZXJ0eVNs
b3QmKTtcbiIpOwogICAgICAgICBwdXNoKEBoZWFkZXJDb250ZW50LCAiICAgIHN0YXRpYyB2b2lk
IHB1dEJ5SW5kZXgoSlNDOjpKU0NlbGwqLCBKU0M6OkV4ZWNTdGF0ZSosIHVuc2lnbmVkIHByb3Bl
cnR5TmFtZSwgSlNDOjpKU1ZhbHVlLCBib29sIHNob3VsZFRocm93KTtcbiIpIGlmICRkYXRhTm9k
ZS0+ZXh0ZW5kZWRBdHRyaWJ1dGVzLT57IkN1c3RvbUluZGV4ZWRTZXR0ZXIifTsKLSAgICAgICAg
cHVzaChAaGVhZGVyQ29udGVudCwgIiAgICBib29sIHB1dERlbGVnYXRlKEpTQzo6RXhlY1N0YXRl
KiwgY29uc3QgSlNDOjpJZGVudGlmaWVyJiwgSlNDOjpKU1ZhbHVlLCBKU0M6OlB1dFByb3BlcnR5
U2xvdCYpO1xuIikgaWYgJGRhdGFOb2RlLT5leHRlbmRlZEF0dHJpYnV0ZXMtPnsiQ3VzdG9tTmFt
ZWRTZXR0ZXIifTsKKyAgICAgICAgcHVzaChAaGVhZGVyQ29udGVudCwgIiAgICBib29sIHB1dERl
bGVnYXRlKEpTQzo6RXhlY1N0YXRlKiwgSlNDOjpQcm9wZXJ0eU5hbWUsIEpTQzo6SlNWYWx1ZSwg
SlNDOjpQdXRQcm9wZXJ0eVNsb3QmKTtcbiIpIGlmICRkYXRhTm9kZS0+ZXh0ZW5kZWRBdHRyaWJ1
dGVzLT57IkN1c3RvbU5hbWVkU2V0dGVyIn07CiAgICAgfQogCiAgICAgaWYgKCEkaGFzUGFyZW50
KSB7CkBAIC03OTgsNyArNzk2LDcgQEAgc3ViIEdlbmVyYXRlSGVhZGVyCiAgICAgcHVzaChAaGVh
ZGVyQ29udGVudCwgIiAgICBzdGF0aWMgSlNDOjpDYWxsVHlwZSBnZXRDYWxsRGF0YShKU0M6OkpT
Q2VsbCosIEpTQzo6Q2FsbERhdGEmKTtcblxuIikgaWYgJGRhdGFOb2RlLT5leHRlbmRlZEF0dHJp
YnV0ZXMtPnsiQ3VzdG9tQ2FsbCJ9OwogCiAgICAgIyBDdXN0b20gZGVsZXRlUHJvcGVydHkgZnVu
Y3Rpb24KLSAgICBwdXNoKEBoZWFkZXJDb250ZW50LCAiICAgIHN0YXRpYyBib29sIGRlbGV0ZVBy
b3BlcnR5KEpTQzo6SlNDZWxsKiwgSlNDOjpFeGVjU3RhdGUqLCBjb25zdCBKU0M6OklkZW50aWZp
ZXImKTtcbiIpIGlmICRkYXRhTm9kZS0+ZXh0ZW5kZWRBdHRyaWJ1dGVzLT57IkN1c3RvbURlbGV0
ZVByb3BlcnR5In07CisgICAgcHVzaChAaGVhZGVyQ29udGVudCwgIiAgICBzdGF0aWMgYm9vbCBk
ZWxldGVQcm9wZXJ0eShKU0M6OkpTQ2VsbCosIEpTQzo6RXhlY1N0YXRlKiwgSlNDOjpQcm9wZXJ0
eU5hbWUpO1xuIikgaWYgJGRhdGFOb2RlLT5leHRlbmRlZEF0dHJpYnV0ZXMtPnsiQ3VzdG9tRGVs
ZXRlUHJvcGVydHkifTsKIAogICAgICMgQ3VzdG9tIGdldFByb3BlcnR5TmFtZXMgZnVuY3Rpb24g
ZXhpc3RzIG9uIERPTVdpbmRvdwogICAgIGlmICgkaW50ZXJmYWNlTmFtZSBlcSAiRE9NV2luZG93
IikgewpAQCAtODEzLDcgKzgxMSw3IEBAIHN1YiBHZW5lcmF0ZUhlYWRlcgogICAgIH0KIAogICAg
ICMgQ3VzdG9tIGRlZmluZU93blByb3BlcnR5IGZ1bmN0aW9uCi0gICAgcHVzaChAaGVhZGVyQ29u
dGVudCwgIiAgICBzdGF0aWMgYm9vbCBkZWZpbmVPd25Qcm9wZXJ0eShKU0M6OkpTT2JqZWN0Kiwg
SlNDOjpFeGVjU3RhdGUqLCBjb25zdCBKU0M6OklkZW50aWZpZXImIHByb3BlcnR5TmFtZSwgSlND
OjpQcm9wZXJ0eURlc2NyaXB0b3ImLCBib29sIHNob3VsZFRocm93KTtcbiIpIGlmICRkYXRhTm9k
ZS0+ZXh0ZW5kZWRBdHRyaWJ1dGVzLT57IkpTQ3VzdG9tRGVmaW5lT3duUHJvcGVydHkifTsKKyAg
ICBwdXNoKEBoZWFkZXJDb250ZW50LCAiICAgIHN0YXRpYyBib29sIGRlZmluZU93blByb3BlcnR5
KEpTQzo6SlNPYmplY3QqLCBKU0M6OkV4ZWNTdGF0ZSosIEpTQzo6UHJvcGVydHlOYW1lLCBKU0M6
OlByb3BlcnR5RGVzY3JpcHRvciYsIGJvb2wgc2hvdWxkVGhyb3cpO1xuIikgaWYgJGRhdGFOb2Rl
LT5leHRlbmRlZEF0dHJpYnV0ZXMtPnsiSlNDdXN0b21EZWZpbmVPd25Qcm9wZXJ0eSJ9OwogCiAg
ICAgIyBPdmVycmlkZSB0b0Jvb2xlYW4gdG8gcmV0dXJuIGZhbHNlIGZvciBvYmplY3RzIHRoYXQg
d2FudCB0byAnTWFzcXVlcmFkZXNBc1VuZGVmaW5lZCcuCiAgICAgaWYgKCRkYXRhTm9kZS0+ZXh0
ZW5kZWRBdHRyaWJ1dGVzLT57Ik1hc3F1ZXJhZGVzQXNVbmRlZmluZWQifSkgewpAQCAtOTQ4LDIw
ICs5NDYsMjAgQEAgc3ViIEdlbmVyYXRlSGVhZGVyCiAgICAgIyBOYW1lIGdldHRlcgogICAgIGlm
ICgkZGF0YU5vZGUtPmV4dGVuZGVkQXR0cmlidXRlcy0+eyJOYW1lZEdldHRlciJ9IHx8ICRkYXRh
Tm9kZS0+ZXh0ZW5kZWRBdHRyaWJ1dGVzLT57IkN1c3RvbU5hbWVkR2V0dGVyIn0pIHsKICAgICAg
ICAgcHVzaChAaGVhZGVyQ29udGVudCwgInByaXZhdGU6XG4iKTsKLSAgICAgICAgcHVzaChAaGVh
ZGVyQ29udGVudCwgIiAgICBzdGF0aWMgYm9vbCBjYW5HZXRJdGVtc0Zvck5hbWUoSlNDOjpFeGVj
U3RhdGUqLCAkaW1wbENsYXNzTmFtZSosIGNvbnN0IEpTQzo6SWRlbnRpZmllciYpO1xuIik7Ci0g
ICAgICAgIHB1c2goQGhlYWRlckNvbnRlbnQsICIgICAgc3RhdGljIEpTQzo6SlNWYWx1ZSBuYW1l
R2V0dGVyKEpTQzo6RXhlY1N0YXRlKiwgSlNDOjpKU1ZhbHVlLCBjb25zdCBKU0M6OklkZW50aWZp
ZXImKTtcbiIpOworICAgICAgICBwdXNoKEBoZWFkZXJDb250ZW50LCAiICAgIHN0YXRpYyBib29s
IGNhbkdldEl0ZW1zRm9yTmFtZShKU0M6OkV4ZWNTdGF0ZSosICRpbXBsQ2xhc3NOYW1lKiwgSlND
OjpQcm9wZXJ0eU5hbWUpO1xuIik7CisgICAgICAgIHB1c2goQGhlYWRlckNvbnRlbnQsICIgICAg
c3RhdGljIEpTQzo6SlNWYWx1ZSBuYW1lR2V0dGVyKEpTQzo6RXhlY1N0YXRlKiwgSlNDOjpKU1Zh
bHVlLCBKU0M6OlByb3BlcnR5TmFtZSk7XG4iKTsKICAgICB9CiAKICAgICBwdXNoKEBoZWFkZXJD
b250ZW50LCAifTtcblxuIik7CiAKICAgICBpZiAoJGRhdGFOb2RlLT5leHRlbmRlZEF0dHJpYnV0
ZXMtPnsiSlNJbmxpbmVHZXRPd25Qcm9wZXJ0eVNsb3QifSAmJiAhJGRhdGFOb2RlLT5leHRlbmRl
ZEF0dHJpYnV0ZXMtPnsiQ3VzdG9tR2V0T3duUHJvcGVydHlTbG90In0pIHsKLSAgICAgICAgcHVz
aChAaGVhZGVyQ29udGVudCwgIkFMV0FZU19JTkxJTkUgYm9vbCAke2NsYXNzTmFtZX06OmdldE93
blByb3BlcnR5U2xvdChKU0M6OkpTQ2VsbCogY2VsbCwgSlNDOjpFeGVjU3RhdGUqIGV4ZWMsIGNv
bnN0IEpTQzo6SWRlbnRpZmllciYgcHJvcGVydHlOYW1lLCBKU0M6OlByb3BlcnR5U2xvdCYgc2xv
dClcbiIpOworICAgICAgICBwdXNoKEBoZWFkZXJDb250ZW50LCAiQUxXQVlTX0lOTElORSBib29s
ICR7Y2xhc3NOYW1lfTo6Z2V0T3duUHJvcGVydHlTbG90KEpTQzo6SlNDZWxsKiBjZWxsLCBKU0M6
OkV4ZWNTdGF0ZSogZXhlYywgSlNDOjpQcm9wZXJ0eU5hbWUgcHJvcGVydHlOYW1lLCBKU0M6OlBy
b3BlcnR5U2xvdCYgc2xvdClcbiIpOwogICAgICAgICBwdXNoKEBoZWFkZXJDb250ZW50LCAie1xu
Iik7CiAgICAgICAgIHB1c2goQGhlYWRlckNvbnRlbnQsICIgICAgJHtjbGFzc05hbWV9KiB0aGlz
T2JqZWN0ID0gSlNDOjpqc0Nhc3Q8JHtjbGFzc05hbWV9Kj4oY2VsbCk7XG4iKTsKICAgICAgICAg
cHVzaChAaGVhZGVyQ29udGVudCwgIiAgICBBU1NFUlRfR0NfT0JKRUNUX0lOSEVSSVRTKHRoaXNP
YmplY3QsICZzX2luZm8pO1xuIik7CiAgICAgICAgIHB1c2goQGhlYWRlckNvbnRlbnQsIEdlbmVy
YXRlR2V0T3duUHJvcGVydHlTbG90Qm9keSgkZGF0YU5vZGUsICRpbnRlcmZhY2VOYW1lLCAkY2xh
c3NOYW1lLCAkaW1wbENsYXNzTmFtZSwgJG51bUF0dHJpYnV0ZXMgPiAwLCAxKSk7CiAgICAgICAg
IHB1c2goQGhlYWRlckNvbnRlbnQsICJ9XG5cbiIpOwotICAgICAgICBwdXNoKEBoZWFkZXJDb250
ZW50LCAiQUxXQVlTX0lOTElORSBib29sICR7Y2xhc3NOYW1lfTo6Z2V0T3duUHJvcGVydHlEZXNj
cmlwdG9yKEpTQzo6SlNPYmplY3QqIG9iamVjdCwgSlNDOjpFeGVjU3RhdGUqIGV4ZWMsIGNvbnN0
IEpTQzo6SWRlbnRpZmllciYgcHJvcGVydHlOYW1lLCBKU0M6OlByb3BlcnR5RGVzY3JpcHRvciYg
ZGVzY3JpcHRvcilcbiIpOworICAgICAgICBwdXNoKEBoZWFkZXJDb250ZW50LCAiQUxXQVlTX0lO
TElORSBib29sICR7Y2xhc3NOYW1lfTo6Z2V0T3duUHJvcGVydHlEZXNjcmlwdG9yKEpTQzo6SlNP
YmplY3QqIG9iamVjdCwgSlNDOjpFeGVjU3RhdGUqIGV4ZWMsIEpTQzo6UHJvcGVydHlOYW1lIHBy
b3BlcnR5TmFtZSwgSlNDOjpQcm9wZXJ0eURlc2NyaXB0b3ImIGRlc2NyaXB0b3IpXG4iKTsKICAg
ICAgICAgcHVzaChAaGVhZGVyQ29udGVudCwgIntcbiIpOwogICAgICAgICBwdXNoKEBoZWFkZXJD
b250ZW50LCAiICAgICR7Y2xhc3NOYW1lfSogdGhpc09iamVjdCA9IEpTQzo6anNDYXN0PCR7Y2xh
c3NOYW1lfSo+KG9iamVjdCk7XG4iKTsKICAgICAgICAgcHVzaChAaGVhZGVyQ29udGVudCwgIiAg
ICBBU1NFUlRfR0NfT0JKRUNUX0lOSEVSSVRTKHRoaXNPYmplY3QsICZzX2luZm8pO1xuIik7CkBA
IC0xMDI2LDggKzEwMjQsOCBAQCBzdWIgR2VuZXJhdGVIZWFkZXIKIAogICAgIHB1c2goQGhlYWRl
ckNvbnRlbnQsICIgICAgc3RhdGljIGNvbnN0IEpTQzo6Q2xhc3NJbmZvIHNfaW5mbztcbiIpOwog
ICAgIGlmICgkbnVtRnVuY3Rpb25zID4gMCB8fCAkbnVtQ29uc3RhbnRzID4gMCkgewotICAgICAg
ICBwdXNoKEBoZWFkZXJDb250ZW50LCAiICAgIHN0YXRpYyBib29sIGdldE93blByb3BlcnR5U2xv
dChKU0M6OkpTQ2VsbCosIEpTQzo6RXhlY1N0YXRlKiwgY29uc3QgSlNDOjpJZGVudGlmaWVyJiwg
SlNDOjpQcm9wZXJ0eVNsb3QmKTtcbiIpOwotICAgICAgICBwdXNoKEBoZWFkZXJDb250ZW50LCAi
ICAgIHN0YXRpYyBib29sIGdldE93blByb3BlcnR5RGVzY3JpcHRvcihKU0M6OkpTT2JqZWN0Kiwg
SlNDOjpFeGVjU3RhdGUqLCBjb25zdCBKU0M6OklkZW50aWZpZXImLCBKU0M6OlByb3BlcnR5RGVz
Y3JpcHRvciYpO1xuIik7CisgICAgICAgIHB1c2goQGhlYWRlckNvbnRlbnQsICIgICAgc3RhdGlj
IGJvb2wgZ2V0T3duUHJvcGVydHlTbG90KEpTQzo6SlNDZWxsKiwgSlNDOjpFeGVjU3RhdGUqLCBK
U0M6OlByb3BlcnR5TmFtZSwgSlNDOjpQcm9wZXJ0eVNsb3QmKTtcbiIpOworICAgICAgICBwdXNo
KEBoZWFkZXJDb250ZW50LCAiICAgIHN0YXRpYyBib29sIGdldE93blByb3BlcnR5RGVzY3JpcHRv
cihKU0M6OkpTT2JqZWN0KiwgSlNDOjpFeGVjU3RhdGUqLCBKU0M6OlByb3BlcnR5TmFtZSwgSlND
OjpQcm9wZXJ0eURlc2NyaXB0b3ImKTtcbiIpOwogICAgICAgICAkc3RydWN0dXJlRmxhZ3N7IkpT
Qzo6T3ZlcnJpZGVzR2V0T3duUHJvcGVydHlTbG90In0gPSAxOwogICAgIH0KICAgICBpZiAoJGRh
dGFOb2RlLT5leHRlbmRlZEF0dHJpYnV0ZXMtPnsiSlNDdXN0b21NYXJrRnVuY3Rpb24ifSBvciAk
bmVlZHNNYXJrQ2hpbGRyZW4pIHsKQEAgLTEwMzksMTIgKzEwMzcsMTIgQEAgc3ViIEdlbmVyYXRl
SGVhZGVyCiAgICAgICAgICIgICAgICAgIHJldHVybiBKU0M6OlN0cnVjdHVyZTo6Y3JlYXRlKGds
b2JhbERhdGEsIGdsb2JhbE9iamVjdCwgcHJvdG90eXBlLCBKU0M6OlR5cGVJbmZvKEpTQzo6T2Jq
ZWN0VHlwZSwgU3RydWN0dXJlRmxhZ3MpLCAmc19pbmZvKTtcbiIgLgogICAgICAgICAiICAgIH1c
biIpOwogICAgIGlmICgkZGF0YU5vZGUtPmV4dGVuZGVkQXR0cmlidXRlcy0+eyJKU0N1c3RvbU5h
bWVkR2V0dGVyT25Qcm90b3R5cGUifSkgewotICAgICAgICBwdXNoKEBoZWFkZXJDb250ZW50LCAi
ICAgIHN0YXRpYyB2b2lkIHB1dChKU0M6OkpTQ2VsbCosIEpTQzo6RXhlY1N0YXRlKiwgY29uc3Qg
SlNDOjpJZGVudGlmaWVyJiBwcm9wZXJ0eU5hbWUsIEpTQzo6SlNWYWx1ZSwgSlNDOjpQdXRQcm9w
ZXJ0eVNsb3QmKTtcbiIpOwotICAgICAgICBwdXNoKEBoZWFkZXJDb250ZW50LCAiICAgIGJvb2wg
cHV0RGVsZWdhdGUoSlNDOjpFeGVjU3RhdGUqLCBjb25zdCBKU0M6OklkZW50aWZpZXImLCBKU0M6
OkpTVmFsdWUsIEpTQzo6UHV0UHJvcGVydHlTbG90Jik7XG4iKTsKKyAgICAgICAgcHVzaChAaGVh
ZGVyQ29udGVudCwgIiAgICBzdGF0aWMgdm9pZCBwdXQoSlNDOjpKU0NlbGwqLCBKU0M6OkV4ZWNT
dGF0ZSosIEpTQzo6UHJvcGVydHlOYW1lLCBKU0M6OkpTVmFsdWUsIEpTQzo6UHV0UHJvcGVydHlT
bG90Jik7XG4iKTsKKyAgICAgICAgcHVzaChAaGVhZGVyQ29udGVudCwgIiAgICBib29sIHB1dERl
bGVnYXRlKEpTQzo6RXhlY1N0YXRlKiwgSlNDOjpQcm9wZXJ0eU5hbWUsIEpTQzo6SlNWYWx1ZSwg
SlNDOjpQdXRQcm9wZXJ0eVNsb3QmKTtcbiIpOwogICAgIH0KIAogICAgICMgQ3VzdG9tIGRlZmlu
ZU93blByb3BlcnR5IGZ1bmN0aW9uCi0gICAgcHVzaChAaGVhZGVyQ29udGVudCwgIiAgICBzdGF0
aWMgYm9vbCBkZWZpbmVPd25Qcm9wZXJ0eShKU0M6OkpTT2JqZWN0KiwgSlNDOjpFeGVjU3RhdGUq
LCBjb25zdCBKU0M6OklkZW50aWZpZXImIHByb3BlcnR5TmFtZSwgSlNDOjpQcm9wZXJ0eURlc2Ny
aXB0b3ImLCBib29sIHNob3VsZFRocm93KTtcbiIpIGlmICRkYXRhTm9kZS0+ZXh0ZW5kZWRBdHRy
aWJ1dGVzLT57IkpTQ3VzdG9tRGVmaW5lT3duUHJvcGVydHlPblByb3RvdHlwZSJ9OworICAgIHB1
c2goQGhlYWRlckNvbnRlbnQsICIgICAgc3RhdGljIGJvb2wgZGVmaW5lT3duUHJvcGVydHkoSlND
OjpKU09iamVjdCosIEpTQzo6RXhlY1N0YXRlKiwgSlNDOjpQcm9wZXJ0eU5hbWUsIEpTQzo6UHJv
cGVydHlEZXNjcmlwdG9yJiwgYm9vbCBzaG91bGRUaHJvdyk7XG4iKSBpZiAkZGF0YU5vZGUtPmV4
dGVuZGVkQXR0cmlidXRlcy0+eyJKU0N1c3RvbURlZmluZU93blByb3BlcnR5T25Qcm90b3R5cGUi
fTsKIAogICAgIHB1c2goQGhlYWRlckNvbnRlbnQsICJcbnByaXZhdGU6XG4iKTsKICAgICBwdXNo
KEBoZWFkZXJDb250ZW50LCAiICAgICR7Y2xhc3NOYW1lfVByb3RvdHlwZShKU0M6OkpTR2xvYmFs
RGF0YSYgZ2xvYmFsRGF0YSwgSlNDOjpKU0dsb2JhbE9iamVjdCosIEpTQzo6U3RydWN0dXJlKiBz
dHJ1Y3R1cmUpIDogSlNDOjpKU05vbkZpbmFsT2JqZWN0KGdsb2JhbERhdGEsIHN0cnVjdHVyZSkg
eyB9XG4iKTsKQEAgLTEwODIsNyArMTA4MCw3IEBAIHN1YiBHZW5lcmF0ZUhlYWRlcgogICAgICAg
ICAgICAgbXkgJGNvbmRpdGlvbmFsU3RyaW5nID0gJGNvZGVHZW5lcmF0b3ItPkdlbmVyYXRlQ29u
ZGl0aW9uYWxTdHJpbmcoJGF0dHJpYnV0ZS0+c2lnbmF0dXJlKTsKICAgICAgICAgICAgIHB1c2go
QGhlYWRlckNvbnRlbnQsICIjaWYgJHtjb25kaXRpb25hbFN0cmluZ31cbiIpIGlmICRjb25kaXRp
b25hbFN0cmluZzsKICAgICAgICAgICAgIG15ICRnZXR0ZXIgPSAianMiIC4gJGludGVyZmFjZU5h
bWUgLiAkY29kZUdlbmVyYXRvci0+V0tfdWNmaXJzdCgkYXR0cmlidXRlLT5zaWduYXR1cmUtPm5h
bWUpIC4gKCRhdHRyaWJ1dGUtPnNpZ25hdHVyZS0+dHlwZSA9fiAvQ29uc3RydWN0b3IkLyA/ICJD
b25zdHJ1Y3RvciIgOiAiIik7Ci0gICAgICAgICAgICBwdXNoKEBoZWFkZXJDb250ZW50LCAiSlND
OjpKU1ZhbHVlICR7Z2V0dGVyfShKU0M6OkV4ZWNTdGF0ZSosIEpTQzo6SlNWYWx1ZSwgY29uc3Qg
SlNDOjpJZGVudGlmaWVyJik7XG4iKTsKKyAgICAgICAgICAgIHB1c2goQGhlYWRlckNvbnRlbnQs
ICJKU0M6OkpTVmFsdWUgJHtnZXR0ZXJ9KEpTQzo6RXhlY1N0YXRlKiwgSlNDOjpKU1ZhbHVlLCBK
U0M6OlByb3BlcnR5TmFtZSk7XG4iKTsKICAgICAgICAgICAgIHVubGVzcyAoJGF0dHJpYnV0ZS0+
dHlwZSA9fiAvcmVhZG9ubHkvKSB7CiAgICAgICAgICAgICAgICAgbXkgJHNldHRlciA9ICJzZXRK
UyIgLiAkaW50ZXJmYWNlTmFtZSAuICRjb2RlR2VuZXJhdG9yLT5XS191Y2ZpcnN0KCRhdHRyaWJ1
dGUtPnNpZ25hdHVyZS0+bmFtZSkgLiAoJGF0dHJpYnV0ZS0+c2lnbmF0dXJlLT50eXBlID1+IC9D
b25zdHJ1Y3RvciQvID8gIkNvbnN0cnVjdG9yIiA6ICIiKTsKICAgICAgICAgICAgICAgICBwdXNo
KEBoZWFkZXJDb250ZW50LCAidm9pZCAke3NldHRlcn0oSlNDOjpFeGVjU3RhdGUqLCBKU0M6OkpT
T2JqZWN0KiwgSlNDOjpKU1ZhbHVlKTtcbiIpOwpAQCAtMTA5Miw3ICsxMDkwLDcgQEAgc3ViIEdl
bmVyYXRlSGVhZGVyCiAgICAgICAgIAogICAgICAgICBpZiAoISRkYXRhTm9kZS0+ZXh0ZW5kZWRB
dHRyaWJ1dGVzLT57Ik9taXRDb25zdHJ1Y3RvciJ9KSB7CiAgICAgICAgICAgICBteSAkZ2V0dGVy
ID0gImpzIiAuICRpbnRlcmZhY2VOYW1lIC4gIkNvbnN0cnVjdG9yIjsKLSAgICAgICAgICAgIHB1
c2goQGhlYWRlckNvbnRlbnQsICJKU0M6OkpTVmFsdWUgJHtnZXR0ZXJ9KEpTQzo6RXhlY1N0YXRl
KiwgSlNDOjpKU1ZhbHVlLCBjb25zdCBKU0M6OklkZW50aWZpZXImKTtcbiIpOworICAgICAgICAg
ICAgcHVzaChAaGVhZGVyQ29udGVudCwgIkpTQzo6SlNWYWx1ZSAke2dldHRlcn0oSlNDOjpFeGVj
U3RhdGUqLCBKU0M6OkpTVmFsdWUsIEpTQzo6UHJvcGVydHlOYW1lKTtcbiIpOwogICAgICAgICB9
CiAKICAgICAgICAgaWYgKCRkYXRhTm9kZS0+ZXh0ZW5kZWRBdHRyaWJ1dGVzLT57IlJlcGxhY2Vh
YmxlQ29uc3RydWN0b3IifSkgewpAQCAtMTEwNyw3ICsxMTA1LDcgQEAgc3ViIEdlbmVyYXRlSGVh
ZGVyCiAgICAgICAgICAgICBteSAkY29uZGl0aW9uYWxTdHJpbmcgPSAkY29kZUdlbmVyYXRvci0+
R2VuZXJhdGVDb25kaXRpb25hbFN0cmluZygkY29uc3RhbnQpOwogICAgICAgICAgICAgcHVzaChA
aGVhZGVyQ29udGVudCwgIiNpZiAke2NvbmRpdGlvbmFsU3RyaW5nfVxuIikgaWYgJGNvbmRpdGlv
bmFsU3RyaW5nOwogICAgICAgICAgICAgbXkgJGdldHRlciA9ICJqcyIgLiAkaW50ZXJmYWNlTmFt
ZSAuICRjb2RlR2VuZXJhdG9yLT5XS191Y2ZpcnN0KCRjb25zdGFudC0+bmFtZSk7Ci0gICAgICAg
ICAgICBwdXNoKEBoZWFkZXJDb250ZW50LCAiSlNDOjpKU1ZhbHVlICR7Z2V0dGVyfShKU0M6OkV4
ZWNTdGF0ZSosIEpTQzo6SlNWYWx1ZSwgY29uc3QgSlNDOjpJZGVudGlmaWVyJik7XG4iKTsKKyAg
ICAgICAgICAgIHB1c2goQGhlYWRlckNvbnRlbnQsICJKU0M6OkpTVmFsdWUgJHtnZXR0ZXJ9KEpT
Qzo6RXhlY1N0YXRlKiwgSlNDOjpKU1ZhbHVlLCBKU0M6OlByb3BlcnR5TmFtZSk7XG4iKTsKICAg
ICAgICAgICAgIHB1c2goQGhlYWRlckNvbnRlbnQsICIjZW5kaWZcbiIpIGlmICRjb25kaXRpb25h
bFN0cmluZzsKICAgICAgICAgfQogICAgIH0KQEAgLTE0ODAsNyArMTQ3OCw3IEBAIHN1YiBHZW5l
cmF0ZUltcGxlbWVudGF0aW9uCiAgICAgfQogCiAgICAgaWYgKCRudW1Db25zdGFudHMgPiAwIHx8
ICRudW1GdW5jdGlvbnMgPiAwKSB7Ci0gICAgICAgIHB1c2goQGltcGxDb250ZW50LCAiYm9vbCAk
e2NsYXNzTmFtZX1Qcm90b3R5cGU6OmdldE93blByb3BlcnR5U2xvdChKU0NlbGwqIGNlbGwsIEV4
ZWNTdGF0ZSogZXhlYywgY29uc3QgSWRlbnRpZmllciYgcHJvcGVydHlOYW1lLCBQcm9wZXJ0eVNs
b3QmIHNsb3QpXG4iKTsKKyAgICAgICAgcHVzaChAaW1wbENvbnRlbnQsICJib29sICR7Y2xhc3NO
YW1lfVByb3RvdHlwZTo6Z2V0T3duUHJvcGVydHlTbG90KEpTQ2VsbCogY2VsbCwgRXhlY1N0YXRl
KiBleGVjLCBQcm9wZXJ0eU5hbWUgcHJvcGVydHlOYW1lLCBQcm9wZXJ0eVNsb3QmIHNsb3QpXG4i
KTsKICAgICAgICAgcHVzaChAaW1wbENvbnRlbnQsICJ7XG4iKTsKICAgICAgICAgcHVzaChAaW1w
bENvbnRlbnQsICIgICAgJHtjbGFzc05hbWV9UHJvdG90eXBlKiB0aGlzT2JqZWN0ID0ganNDYXN0
PCR7Y2xhc3NOYW1lfVByb3RvdHlwZSo+KGNlbGwpO1xuIik7CiAKQEAgLTE0OTUsNyArMTQ5Myw3
IEBAIHN1YiBHZW5lcmF0ZUltcGxlbWVudGF0aW9uCiAgICAgICAgIH0KICAgICAgICAgcHVzaChA
aW1wbENvbnRlbnQsICJ9XG5cbiIpOwogCi0gICAgICAgIHB1c2goQGltcGxDb250ZW50LCAiYm9v
bCAke2NsYXNzTmFtZX1Qcm90b3R5cGU6OmdldE93blByb3BlcnR5RGVzY3JpcHRvcihKU09iamVj
dCogb2JqZWN0LCBFeGVjU3RhdGUqIGV4ZWMsIGNvbnN0IElkZW50aWZpZXImIHByb3BlcnR5TmFt
ZSwgUHJvcGVydHlEZXNjcmlwdG9yJiBkZXNjcmlwdG9yKVxuIik7CisgICAgICAgIHB1c2goQGlt
cGxDb250ZW50LCAiYm9vbCAke2NsYXNzTmFtZX1Qcm90b3R5cGU6OmdldE93blByb3BlcnR5RGVz
Y3JpcHRvcihKU09iamVjdCogb2JqZWN0LCBFeGVjU3RhdGUqIGV4ZWMsIFByb3BlcnR5TmFtZSBw
cm9wZXJ0eU5hbWUsIFByb3BlcnR5RGVzY3JpcHRvciYgZGVzY3JpcHRvcilcbiIpOwogICAgICAg
ICBwdXNoKEBpbXBsQ29udGVudCwgIntcbiIpOwogICAgICAgICBwdXNoKEBpbXBsQ29udGVudCwg
IiAgICAke2NsYXNzTmFtZX1Qcm90b3R5cGUqIHRoaXNPYmplY3QgPSBqc0Nhc3Q8JHtjbGFzc05h
bWV9UHJvdG90eXBlKj4ob2JqZWN0KTtcbiIpOwogCkBAIC0xNTEyLDcgKzE1MTAsNyBAQCBzdWIg
R2VuZXJhdGVJbXBsZW1lbnRhdGlvbgogICAgIH0KIAogICAgIGlmICgkZGF0YU5vZGUtPmV4dGVu
ZGVkQXR0cmlidXRlcy0+eyJKU0N1c3RvbU5hbWVkR2V0dGVyT25Qcm90b3R5cGUifSkgewotICAg
ICAgICBwdXNoKEBpbXBsQ29udGVudCwgInZvaWQgJHtjbGFzc05hbWV9UHJvdG90eXBlOjpwdXQo
SlNDZWxsKiBjZWxsLCBFeGVjU3RhdGUqIGV4ZWMsIGNvbnN0IElkZW50aWZpZXImIHByb3BlcnR5
TmFtZSwgSlNWYWx1ZSB2YWx1ZSwgUHV0UHJvcGVydHlTbG90JiBzbG90KVxuIik7CisgICAgICAg
IHB1c2goQGltcGxDb250ZW50LCAidm9pZCAke2NsYXNzTmFtZX1Qcm90b3R5cGU6OnB1dChKU0Nl
bGwqIGNlbGwsIEV4ZWNTdGF0ZSogZXhlYywgUHJvcGVydHlOYW1lIHByb3BlcnR5TmFtZSwgSlNW
YWx1ZSB2YWx1ZSwgUHV0UHJvcGVydHlTbG90JiBzbG90KVxuIik7CiAgICAgICAgIHB1c2goQGlt
cGxDb250ZW50LCAie1xuIik7CiAgICAgICAgIHB1c2goQGltcGxDb250ZW50LCAiICAgICR7Y2xh
c3NOYW1lfVByb3RvdHlwZSogdGhpc09iamVjdCA9IGpzQ2FzdDwke2NsYXNzTmFtZX1Qcm90b3R5
cGUqPihjZWxsKTtcbiIpOwogICAgICAgICBwdXNoKEBpbXBsQ29udGVudCwgIiAgICBpZiAodGhp
c09iamVjdC0+cHV0RGVsZWdhdGUoZXhlYywgcHJvcGVydHlOYW1lLCB2YWx1ZSwgc2xvdCkpXG4i
KTsKQEAgLTE2MzIsMTMgKzE2MzAsMTMgQEAgc3ViIEdlbmVyYXRlSW1wbGVtZW50YXRpb24KICAg
ICAjIEF0dHJpYnV0ZXMKICAgICBpZiAoJGhhc0dldHRlcikgewogICAgICAgICBpZiAoISRkYXRh
Tm9kZS0+ZXh0ZW5kZWRBdHRyaWJ1dGVzLT57IkpTSW5saW5lR2V0T3duUHJvcGVydHlTbG90In0g
JiYgISRkYXRhTm9kZS0+ZXh0ZW5kZWRBdHRyaWJ1dGVzLT57IkN1c3RvbUdldE93blByb3BlcnR5
U2xvdCJ9KSB7Ci0gICAgICAgICAgICBwdXNoKEBpbXBsQ29udGVudCwgImJvb2wgJHtjbGFzc05h
bWV9OjpnZXRPd25Qcm9wZXJ0eVNsb3QoSlNDZWxsKiBjZWxsLCBFeGVjU3RhdGUqIGV4ZWMsIGNv
bnN0IElkZW50aWZpZXImIHByb3BlcnR5TmFtZSwgUHJvcGVydHlTbG90JiBzbG90KVxuIik7Cisg
ICAgICAgICAgICBwdXNoKEBpbXBsQ29udGVudCwgImJvb2wgJHtjbGFzc05hbWV9OjpnZXRPd25Q
cm9wZXJ0eVNsb3QoSlNDZWxsKiBjZWxsLCBFeGVjU3RhdGUqIGV4ZWMsIFByb3BlcnR5TmFtZSBw
cm9wZXJ0eU5hbWUsIFByb3BlcnR5U2xvdCYgc2xvdClcbiIpOwogICAgICAgICAgICAgcHVzaChA
aW1wbENvbnRlbnQsICJ7XG4iKTsKICAgICAgICAgICAgIHB1c2goQGltcGxDb250ZW50LCAiICAg
ICR7Y2xhc3NOYW1lfSogdGhpc09iamVjdCA9IGpzQ2FzdDwke2NsYXNzTmFtZX0qPihjZWxsKTtc
biIpOwogICAgICAgICAgICAgcHVzaChAaW1wbENvbnRlbnQsICIgICAgQVNTRVJUX0dDX09CSkVD
VF9JTkhFUklUUyh0aGlzT2JqZWN0LCAmc19pbmZvKTtcbiIpOwogICAgICAgICAgICAgcHVzaChA
aW1wbENvbnRlbnQsIEdlbmVyYXRlR2V0T3duUHJvcGVydHlTbG90Qm9keSgkZGF0YU5vZGUsICRp
bnRlcmZhY2VOYW1lLCAkY2xhc3NOYW1lLCAkaW1wbENsYXNzTmFtZSwgJG51bUF0dHJpYnV0ZXMg
PiAwLCAwKSk7CiAgICAgICAgICAgICBwdXNoKEBpbXBsQ29udGVudCwgIn1cblxuIik7Ci0gICAg
ICAgICAgICBwdXNoKEBpbXBsQ29udGVudCwgImJvb2wgJHtjbGFzc05hbWV9OjpnZXRPd25Qcm9w
ZXJ0eURlc2NyaXB0b3IoSlNPYmplY3QqIG9iamVjdCwgRXhlY1N0YXRlKiBleGVjLCBjb25zdCBJ
ZGVudGlmaWVyJiBwcm9wZXJ0eU5hbWUsIFByb3BlcnR5RGVzY3JpcHRvciYgZGVzY3JpcHRvcilc
biIpOworICAgICAgICAgICAgcHVzaChAaW1wbENvbnRlbnQsICJib29sICR7Y2xhc3NOYW1lfTo6
Z2V0T3duUHJvcGVydHlEZXNjcmlwdG9yKEpTT2JqZWN0KiBvYmplY3QsIEV4ZWNTdGF0ZSogZXhl
YywgUHJvcGVydHlOYW1lIHByb3BlcnR5TmFtZSwgUHJvcGVydHlEZXNjcmlwdG9yJiBkZXNjcmlw
dG9yKVxuIik7CiAgICAgICAgICAgICBwdXNoKEBpbXBsQ29udGVudCwgIntcbiIpOwogICAgICAg
ICAgICAgcHVzaChAaW1wbENvbnRlbnQsICIgICAgJHtjbGFzc05hbWV9KiB0aGlzT2JqZWN0ID0g
anNDYXN0PCR7Y2xhc3NOYW1lfSo+KG9iamVjdCk7XG4iKTsKICAgICAgICAgICAgIHB1c2goQGlt
cGxDb250ZW50LCAiICAgIEFTU0VSVF9HQ19PQkpFQ1RfSU5IRVJJVFModGhpc09iamVjdCwgJnNf
aW5mbyk7XG4iKTsKQEAgLTE2NzQsNyArMTY3Miw3IEBAIHN1YiBHZW5lcmF0ZUltcGxlbWVudGF0
aW9uCiAgICAgICAgICAgICAgICAgbXkgJGF0dHJpYnV0ZUNvbmRpdGlvbmFsU3RyaW5nID0gJGNv
ZGVHZW5lcmF0b3ItPkdlbmVyYXRlQ29uZGl0aW9uYWxTdHJpbmcoJGF0dHJpYnV0ZS0+c2lnbmF0
dXJlKTsKICAgICAgICAgICAgICAgICBwdXNoKEBpbXBsQ29udGVudCwgIiNpZiAke2F0dHJpYnV0
ZUNvbmRpdGlvbmFsU3RyaW5nfVxuIikgaWYgJGF0dHJpYnV0ZUNvbmRpdGlvbmFsU3RyaW5nOwog
Ci0gICAgICAgICAgICAgICAgcHVzaChAaW1wbENvbnRlbnQsICJKU1ZhbHVlICR7Z2V0RnVuY3Rp
b25OYW1lfShFeGVjU3RhdGUqIGV4ZWMsIEpTVmFsdWUgc2xvdEJhc2UsIGNvbnN0IElkZW50aWZp
ZXImKVxuIik7CisgICAgICAgICAgICAgICAgcHVzaChAaW1wbENvbnRlbnQsICJKU1ZhbHVlICR7
Z2V0RnVuY3Rpb25OYW1lfShFeGVjU3RhdGUqIGV4ZWMsIEpTVmFsdWUgc2xvdEJhc2UsIFByb3Bl
cnR5TmFtZSlcbiIpOwogICAgICAgICAgICAgICAgIHB1c2goQGltcGxDb250ZW50LCAie1xuIik7
CiAgICAgICAgICAgICAgICAgcHVzaChAaW1wbENvbnRlbnQsICIgICAgJHtjbGFzc05hbWV9KiBj
YXN0ZWRUaGlzID0ganNDYXN0PCRjbGFzc05hbWUqPihhc09iamVjdChzbG90QmFzZSkpO1xuIik7
CiAKQEAgLTE3OTMsNyArMTc5MSw3IEBAIHN1YiBHZW5lcmF0ZUltcGxlbWVudGF0aW9uCiAgICAg
ICAgICAgICBpZiAoISRkYXRhTm9kZS0+ZXh0ZW5kZWRBdHRyaWJ1dGVzLT57Ik9taXRDb25zdHJ1
Y3RvciJ9KSB7CiAgICAgICAgICAgICAgICAgbXkgJGNvbnN0cnVjdG9yRnVuY3Rpb25OYW1lID0g
ImpzIiAuICRpbnRlcmZhY2VOYW1lIC4gIkNvbnN0cnVjdG9yIjsKIAotICAgICAgICAgICAgICAg
IHB1c2goQGltcGxDb250ZW50LCAiSlNWYWx1ZSAke2NvbnN0cnVjdG9yRnVuY3Rpb25OYW1lfShF
eGVjU3RhdGUqIGV4ZWMsIEpTVmFsdWUgc2xvdEJhc2UsIGNvbnN0IElkZW50aWZpZXImKVxuIik7
CisgICAgICAgICAgICAgICAgcHVzaChAaW1wbENvbnRlbnQsICJKU1ZhbHVlICR7Y29uc3RydWN0
b3JGdW5jdGlvbk5hbWV9KEV4ZWNTdGF0ZSogZXhlYywgSlNWYWx1ZSBzbG90QmFzZSwgUHJvcGVy
dHlOYW1lKVxuIik7CiAgICAgICAgICAgICAgICAgcHVzaChAaW1wbENvbnRlbnQsICJ7XG4iKTsK
ICAgICAgICAgICAgICAgICBwdXNoKEBpbXBsQ29udGVudCwgIiAgICAke2NsYXNzTmFtZX0qIGRv
bU9iamVjdCA9IGpzQ2FzdDwkY2xhc3NOYW1lKj4oYXNPYmplY3Qoc2xvdEJhc2UpKTtcbiIpOwog
CkBAIC0xODE5LDE0ICsxODE3LDEzIEBAIHN1YiBHZW5lcmF0ZUltcGxlbWVudGF0aW9uCiAKICAg
ICAgICAgaWYgKCRoYXNTZXR0ZXIpIHsKICAgICAgICAgICAgIGlmICghJGRhdGFOb2RlLT5leHRl
bmRlZEF0dHJpYnV0ZXMtPnsiQ3VzdG9tUHV0RnVuY3Rpb24ifSkgewotICAgICAgICAgICAgICAg
IHB1c2goQGltcGxDb250ZW50LCAidm9pZCAke2NsYXNzTmFtZX06OnB1dChKU0NlbGwqIGNlbGws
IEV4ZWNTdGF0ZSogZXhlYywgY29uc3QgSWRlbnRpZmllciYgcHJvcGVydHlOYW1lLCBKU1ZhbHVl
IHZhbHVlLCBQdXRQcm9wZXJ0eVNsb3QmIHNsb3QpXG4iKTsKKyAgICAgICAgICAgICAgICBwdXNo
KEBpbXBsQ29udGVudCwgInZvaWQgJHtjbGFzc05hbWV9OjpwdXQoSlNDZWxsKiBjZWxsLCBFeGVj
U3RhdGUqIGV4ZWMsIFByb3BlcnR5TmFtZSBwcm9wZXJ0eU5hbWUsIEpTVmFsdWUgdmFsdWUsIFB1
dFByb3BlcnR5U2xvdCYgc2xvdClcbiIpOwogICAgICAgICAgICAgICAgIHB1c2goQGltcGxDb250
ZW50LCAie1xuIik7CiAgICAgICAgICAgICAgICAgcHVzaChAaW1wbENvbnRlbnQsICIgICAgJHtj
bGFzc05hbWV9KiB0aGlzT2JqZWN0ID0ganNDYXN0PCR7Y2xhc3NOYW1lfSo+KGNlbGwpO1xuIik7
CiAgICAgICAgICAgICAgICAgcHVzaChAaW1wbENvbnRlbnQsICIgICAgQVNTRVJUX0dDX09CSkVD
VF9JTkhFUklUUyh0aGlzT2JqZWN0LCAmc19pbmZvKTtcbiIpOwogICAgICAgICAgICAgICAgIGlm
ICgkZGF0YU5vZGUtPmV4dGVuZGVkQXR0cmlidXRlcy0+eyJDdXN0b21JbmRleGVkU2V0dGVyIn0p
IHsKLSAgICAgICAgICAgICAgICAgICAgcHVzaChAaW1wbENvbnRlbnQsICIgICAgYm9vbCBvaztc
biIpOwotICAgICAgICAgICAgICAgICAgICBwdXNoKEBpbXBsQ29udGVudCwgIiAgICB1bnNpZ25l
ZCBpbmRleCA9IHByb3BlcnR5TmFtZS50b1VJbnQzMihvayk7XG4iKTsKLSAgICAgICAgICAgICAg
ICAgICAgcHVzaChAaW1wbENvbnRlbnQsICIgICAgaWYgKG9rKSB7XG4iKTsKKyAgICAgICAgICAg
ICAgICAgICAgcHVzaChAaW1wbENvbnRlbnQsICIgICAgdW5zaWduZWQgaW5kZXggPSBwcm9wZXJ0
eU5hbWUuYXNJbmRleCgpO1xuIik7CisgICAgICAgICAgICAgICAgICAgIHB1c2goQGltcGxDb250
ZW50LCAiICAgIGlmIChpbmRleCAhPSBQcm9wZXJ0eU5hbWU6Ok5vdEFuSW5kZXgpIHtcbiIpOwog
ICAgICAgICAgICAgICAgICAgICBwdXNoKEBpbXBsQ29udGVudCwgIiAgICAgICAgdGhpc09iamVj
dC0+aW5kZXhTZXR0ZXIoZXhlYywgaW5kZXgsIHZhbHVlKTtcbiIpOwogICAgICAgICAgICAgICAg
ICAgICBwdXNoKEBpbXBsQ29udGVudCwgIiAgICAgICAgcmV0dXJuO1xuIik7CiAgICAgICAgICAg
ICAgICAgICAgIHB1c2goQGltcGxDb250ZW50LCAiICAgIH1cbiIpOwpAQCAtMjE5OCw3ICsyMTk1
LDcgQEAgc3ViIEdlbmVyYXRlSW1wbGVtZW50YXRpb24KICAgICAgICAgICAgIH0KIAogICAgICAg
ICAgICAgIyBGSVhNRTogdGhpcyBjYXN0cyBpbnRvIGludCB0byBtYXRjaCBvdXIgcHJldmlvdXMg
YmVoYXZpb3Igd2hpY2ggdHVybmVkIDB4RkZGRkZGRkYgaW4gLTEgZm9yIE5vZGVGaWx0ZXIuU0hP
V19BTEwKLSAgICAgICAgICAgIHB1c2goQGltcGxDb250ZW50LCAiSlNWYWx1ZSAke2dldHRlcn0o
RXhlY1N0YXRlKiBleGVjLCBKU1ZhbHVlLCBjb25zdCBJZGVudGlmaWVyJilcbiIpOworICAgICAg
ICAgICAgcHVzaChAaW1wbENvbnRlbnQsICJKU1ZhbHVlICR7Z2V0dGVyfShFeGVjU3RhdGUqIGV4
ZWMsIEpTVmFsdWUsIFByb3BlcnR5TmFtZSlcbiIpOwogICAgICAgICAgICAgcHVzaChAaW1wbENv
bnRlbnQsICJ7XG4iKTsKICAgICAgICAgICAgIGlmICgkY29uc3RhbnQtPnR5cGUgZXEgIkRPTVN0
cmluZyIpIHsKICAgICAgICAgICAgICAgICBwdXNoKEBpbXBsQ29udGVudCwgIiAgICByZXR1cm4g
anNTdHJpbmdPck51bGwoZXhlYywgU3RyaW5nKCIgLiAkY29uc3RhbnQtPnZhbHVlIC4gIikpO1xu
Iik7CkBAIC0yMjQ3LDE0ICsyMjQ0LDE0IEBAIHN1YiBHZW5lcmF0ZUltcGxlbWVudGF0aW9uCiAK
ICAgICBpZiAoJGludGVyZmFjZU5hbWUgZXEgIkhUTUxQcm9wZXJ0aWVzQ29sbGVjdGlvbiIpIHsK
ICAgICAgICAgaWYgKCRkYXRhTm9kZS0+ZXh0ZW5kZWRBdHRyaWJ1dGVzLT57Ik5hbWVkR2V0dGVy
In0pIHsKLSAgICAgICAgICAgIHB1c2goQGltcGxDb250ZW50LCAiYm9vbCAke2NsYXNzTmFtZX06
OmNhbkdldEl0ZW1zRm9yTmFtZShFeGVjU3RhdGUqLCAkaW1wbENsYXNzTmFtZSogY29sbGVjdGlv
biwgY29uc3QgSWRlbnRpZmllciYgcHJvcGVydHlOYW1lKVxuIik7CisgICAgICAgICAgICBwdXNo
KEBpbXBsQ29udGVudCwgImJvb2wgJHtjbGFzc05hbWV9OjpjYW5HZXRJdGVtc0Zvck5hbWUoRXhl
Y1N0YXRlKiwgJGltcGxDbGFzc05hbWUqIGNvbGxlY3Rpb24sIFByb3BlcnR5TmFtZSBwcm9wZXJ0
eU5hbWUpXG4iKTsKICAgICAgICAgICAgIHB1c2goQGltcGxDb250ZW50LCAie1xuIik7Ci0gICAg
ICAgICAgICBwdXNoKEBpbXBsQ29udGVudCwgIiAgICByZXR1cm4gY29sbGVjdGlvbi0+aGFzTmFt
ZWRJdGVtKGlkZW50aWZpZXJUb0F0b21pY1N0cmluZyhwcm9wZXJ0eU5hbWUpKTtcbiIpOworICAg
ICAgICAgICAgcHVzaChAaW1wbENvbnRlbnQsICIgICAgcmV0dXJuIGNvbGxlY3Rpb24tPmhhc05h
bWVkSXRlbShwcm9wZXJ0eU5hbWVUb0F0b21pY1N0cmluZyhwcm9wZXJ0eU5hbWUpKTtcbiIpOwog
ICAgICAgICAgICAgcHVzaChAaW1wbENvbnRlbnQsICJ9XG5cbiIpOwotICAgICAgICAgICAgcHVz
aChAaW1wbENvbnRlbnQsICJKU1ZhbHVlICR7Y2xhc3NOYW1lfTo6bmFtZUdldHRlcihFeGVjU3Rh
dGUqIGV4ZWMsIEpTVmFsdWUgc2xvdEJhc2UsIGNvbnN0IElkZW50aWZpZXImIHByb3BlcnR5TmFt
ZSlcbiIpOworICAgICAgICAgICAgcHVzaChAaW1wbENvbnRlbnQsICJKU1ZhbHVlICR7Y2xhc3NO
YW1lfTo6bmFtZUdldHRlcihFeGVjU3RhdGUqIGV4ZWMsIEpTVmFsdWUgc2xvdEJhc2UsIFByb3Bl
cnR5TmFtZSBwcm9wZXJ0eU5hbWUpXG4iKTsKICAgICAgICAgICAgIHB1c2goQGltcGxDb250ZW50
LCAie1xuIik7CiAgICAgICAgICAgICBwdXNoKEBpbXBsQ29udGVudCwgIiAgICAke2NsYXNzTmFt
ZX0qIHRoaXNPYmogPSBqc0Nhc3Q8JGNsYXNzTmFtZSo+KGFzT2JqZWN0KHNsb3RCYXNlKSk7XG4i
KTsKLSAgICAgICAgICAgIHB1c2goQGltcGxDb250ZW50LCAiICAgIHJldHVybiB0b0pTKGV4ZWMs
IHRoaXNPYmotPmdsb2JhbE9iamVjdCgpLCBzdGF0aWNfY2FzdDwkaW1wbENsYXNzTmFtZSo+KHRo
aXNPYmotPmltcGwoKSktPm5hbWVkSXRlbShpZGVudGlmaWVyVG9BdG9taWNTdHJpbmcocHJvcGVy
dHlOYW1lKSkpO1xuIik7CisgICAgICAgICAgICBwdXNoKEBpbXBsQ29udGVudCwgIiAgICByZXR1
cm4gdG9KUyhleGVjLCB0aGlzT2JqLT5nbG9iYWxPYmplY3QoKSwgc3RhdGljX2Nhc3Q8JGltcGxD
bGFzc05hbWUqPih0aGlzT2JqLT5pbXBsKCkpLT5uYW1lZEl0ZW0ocHJvcGVydHlOYW1lVG9BdG9t
aWNTdHJpbmcocHJvcGVydHlOYW1lKSkpO1xuIik7CiAgICAgICAgICAgICBwdXNoKEBpbXBsQ29u
dGVudCwgIn1cblxuIik7CiAgICAgICAgIH0KICAgICB9CkBAIC0zMzg3LDggKzMzODQsOCBAQCBz
dWIgR2VuZXJhdGVDb25zdHJ1Y3RvckRlY2xhcmF0aW9uCiAgICAgcHVzaChAJG91dHB1dEFycmF5
LCAiICAgICAgICByZXR1cm4gcHRyO1xuIik7CiAgICAgcHVzaChAJG91dHB1dEFycmF5LCAiICAg
IH1cblxuIik7CiAKLSAgICBwdXNoKEAkb3V0cHV0QXJyYXksICIgICAgc3RhdGljIGJvb2wgZ2V0
T3duUHJvcGVydHlTbG90KEpTQzo6SlNDZWxsKiwgSlNDOjpFeGVjU3RhdGUqLCBjb25zdCBKU0M6
OklkZW50aWZpZXImLCBKU0M6OlByb3BlcnR5U2xvdCYpO1xuIik7Ci0gICAgcHVzaChAJG91dHB1
dEFycmF5LCAiICAgIHN0YXRpYyBib29sIGdldE93blByb3BlcnR5RGVzY3JpcHRvcihKU0M6OkpT
T2JqZWN0KiwgSlNDOjpFeGVjU3RhdGUqLCBjb25zdCBKU0M6OklkZW50aWZpZXImLCBKU0M6OlBy
b3BlcnR5RGVzY3JpcHRvciYpO1xuIik7CisgICAgcHVzaChAJG91dHB1dEFycmF5LCAiICAgIHN0
YXRpYyBib29sIGdldE93blByb3BlcnR5U2xvdChKU0M6OkpTQ2VsbCosIEpTQzo6RXhlY1N0YXRl
KiwgSlNDOjpQcm9wZXJ0eU5hbWUsIEpTQzo6UHJvcGVydHlTbG90Jik7XG4iKTsKKyAgICBwdXNo
KEAkb3V0cHV0QXJyYXksICIgICAgc3RhdGljIGJvb2wgZ2V0T3duUHJvcGVydHlEZXNjcmlwdG9y
KEpTQzo6SlNPYmplY3QqLCBKU0M6OkV4ZWNTdGF0ZSosIEpTQzo6UHJvcGVydHlOYW1lLCBKU0M6
OlByb3BlcnR5RGVzY3JpcHRvciYpO1xuIik7CiAgICAgcHVzaChAJG91dHB1dEFycmF5LCAiICAg
IHN0YXRpYyBjb25zdCBKU0M6OkNsYXNzSW5mbyBzX2luZm87XG4iKTsKIAogICAgIHB1c2goQCRv
dXRwdXRBcnJheSwgIiAgICBzdGF0aWMgSlNDOjpTdHJ1Y3R1cmUqIGNyZWF0ZVN0cnVjdHVyZShK
U0M6OkpTR2xvYmFsRGF0YSYgZ2xvYmFsRGF0YSwgSlNDOjpKU0dsb2JhbE9iamVjdCogZ2xvYmFs
T2JqZWN0LCBKU0M6OkpTVmFsdWUgcHJvdG90eXBlKVxuIik7CkBAIC0zNTA0LDEyICszNTAxLDEy
IEBAIHN1YiBHZW5lcmF0ZUNvbnN0cnVjdG9yRGVmaW5pdGlvbgogCiAgICAgICAgIG15ICRraW5k
ID0gJGhhc1N0YXRpY0Z1bmN0aW9ucyA/ICJQcm9wZXJ0eSIgOiAiVmFsdWUiOwogCi0gICAgICAg
IHB1c2goQCRvdXRwdXRBcnJheSwgImJvb2wgJHtjb25zdHJ1Y3RvckNsYXNzTmFtZX06OmdldE93
blByb3BlcnR5U2xvdChKU0NlbGwqIGNlbGwsIEV4ZWNTdGF0ZSogZXhlYywgY29uc3QgSWRlbnRp
ZmllciYgcHJvcGVydHlOYW1lLCBQcm9wZXJ0eVNsb3QmIHNsb3QpXG4iKTsKKyAgICAgICAgcHVz
aChAJG91dHB1dEFycmF5LCAiYm9vbCAke2NvbnN0cnVjdG9yQ2xhc3NOYW1lfTo6Z2V0T3duUHJv
cGVydHlTbG90KEpTQ2VsbCogY2VsbCwgRXhlY1N0YXRlKiBleGVjLCBQcm9wZXJ0eU5hbWUgcHJv
cGVydHlOYW1lLCBQcm9wZXJ0eVNsb3QmIHNsb3QpXG4iKTsKICAgICAgICAgcHVzaChAJG91dHB1
dEFycmF5LCAie1xuIik7CiAgICAgICAgIHB1c2goQCRvdXRwdXRBcnJheSwgIiAgICByZXR1cm4g
Z2V0U3RhdGljJHtraW5kfVNsb3Q8JHtjb25zdHJ1Y3RvckNsYXNzTmFtZX0sIEpTRE9NV3JhcHBl
cj4oZXhlYywgJiR7Y29uc3RydWN0b3JDbGFzc05hbWV9VGFibGUsIGpzQ2FzdDwke2NvbnN0cnVj
dG9yQ2xhc3NOYW1lfSo+KGNlbGwpLCBwcm9wZXJ0eU5hbWUsIHNsb3QpO1xuIik7CiAgICAgICAg
IHB1c2goQCRvdXRwdXRBcnJheSwgIn1cblxuIik7CiAKLSAgICAgICAgcHVzaChAJG91dHB1dEFy
cmF5LCAiYm9vbCAke2NvbnN0cnVjdG9yQ2xhc3NOYW1lfTo6Z2V0T3duUHJvcGVydHlEZXNjcmlw
dG9yKEpTT2JqZWN0KiBvYmplY3QsIEV4ZWNTdGF0ZSogZXhlYywgY29uc3QgSWRlbnRpZmllciYg
cHJvcGVydHlOYW1lLCBQcm9wZXJ0eURlc2NyaXB0b3ImIGRlc2NyaXB0b3IpXG4iKTsKKyAgICAg
ICAgcHVzaChAJG91dHB1dEFycmF5LCAiYm9vbCAke2NvbnN0cnVjdG9yQ2xhc3NOYW1lfTo6Z2V0
T3duUHJvcGVydHlEZXNjcmlwdG9yKEpTT2JqZWN0KiBvYmplY3QsIEV4ZWNTdGF0ZSogZXhlYywg
UHJvcGVydHlOYW1lIHByb3BlcnR5TmFtZSwgUHJvcGVydHlEZXNjcmlwdG9yJiBkZXNjcmlwdG9y
KVxuIik7CiAgICAgICAgIHB1c2goQCRvdXRwdXRBcnJheSwgIntcbiIpOwogICAgICAgICBwdXNo
KEAkb3V0cHV0QXJyYXksICIgICAgcmV0dXJuIGdldFN0YXRpYyR7a2luZH1EZXNjcmlwdG9yPCR7
Y29uc3RydWN0b3JDbGFzc05hbWV9LCBKU0RPTVdyYXBwZXI+KGV4ZWMsICYke2NvbnN0cnVjdG9y
Q2xhc3NOYW1lfVRhYmxlLCBqc0Nhc3Q8JHtjb25zdHJ1Y3RvckNsYXNzTmFtZX0qPihvYmplY3Qp
LCBwcm9wZXJ0eU5hbWUsIGRlc2NyaXB0b3IpO1xuIik7CiAgICAgICAgIHB1c2goQCRvdXRwdXRB
cnJheSwgIn1cblxuIik7CkluZGV4OiBTb3VyY2UvV2ViQ29yZS9iaW5kaW5ncy9zY3JpcHRzL3Rl
c3QvSlMvSlNGbG9hdDY0QXJyYXkuY3BwCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9XZWJDb3JlL2Jp
bmRpbmdzL3NjcmlwdHMvdGVzdC9KUy9KU0Zsb2F0NjRBcnJheS5jcHAJKHJldmlzaW9uIDExNjY2
NykKKysrIFNvdXJjZS9XZWJDb3JlL2JpbmRpbmdzL3NjcmlwdHMvdGVzdC9KUy9KU0Zsb2F0NjRB
cnJheS5jcHAJKHdvcmtpbmcgY29weSkKQEAgLTY4LDEyICs2OCwxMiBAQCB2b2lkIEpTRmxvYXQ2
NEFycmF5Q29uc3RydWN0b3I6OmZpbmlzaENyCiAgICAgcHV0RGlyZWN0KGV4ZWMtPmdsb2JhbERh
dGEoKSwgZXhlYy0+cHJvcGVydHlOYW1lcygpLmxlbmd0aCwganNOdW1iZXIoMTIzKSwgUmVhZE9u
bHkgfCBEb250RGVsZXRlIHwgRG9udEVudW0pOwogfQogCi1ib29sIEpTRmxvYXQ2NEFycmF5Q29u
c3RydWN0b3I6OmdldE93blByb3BlcnR5U2xvdChKU0NlbGwqIGNlbGwsIEV4ZWNTdGF0ZSogZXhl
YywgY29uc3QgSWRlbnRpZmllciYgcHJvcGVydHlOYW1lLCBQcm9wZXJ0eVNsb3QmIHNsb3QpCiti
b29sIEpTRmxvYXQ2NEFycmF5Q29uc3RydWN0b3I6OmdldE93blByb3BlcnR5U2xvdChKU0NlbGwq
IGNlbGwsIEV4ZWNTdGF0ZSogZXhlYywgUHJvcGVydHlOYW1lIHByb3BlcnR5TmFtZSwgUHJvcGVy
dHlTbG90JiBzbG90KQogewogICAgIHJldHVybiBnZXRTdGF0aWNWYWx1ZVNsb3Q8SlNGbG9hdDY0
QXJyYXlDb25zdHJ1Y3RvciwgSlNET01XcmFwcGVyPihleGVjLCAmSlNGbG9hdDY0QXJyYXlDb25z
dHJ1Y3RvclRhYmxlLCBqc0Nhc3Q8SlNGbG9hdDY0QXJyYXlDb25zdHJ1Y3Rvcio+KGNlbGwpLCBw
cm9wZXJ0eU5hbWUsIHNsb3QpOwogfQogCi1ib29sIEpTRmxvYXQ2NEFycmF5Q29uc3RydWN0b3I6
OmdldE93blByb3BlcnR5RGVzY3JpcHRvcihKU09iamVjdCogb2JqZWN0LCBFeGVjU3RhdGUqIGV4
ZWMsIGNvbnN0IElkZW50aWZpZXImIHByb3BlcnR5TmFtZSwgUHJvcGVydHlEZXNjcmlwdG9yJiBk
ZXNjcmlwdG9yKQorYm9vbCBKU0Zsb2F0NjRBcnJheUNvbnN0cnVjdG9yOjpnZXRPd25Qcm9wZXJ0
eURlc2NyaXB0b3IoSlNPYmplY3QqIG9iamVjdCwgRXhlY1N0YXRlKiBleGVjLCBQcm9wZXJ0eU5h
bWUgcHJvcGVydHlOYW1lLCBQcm9wZXJ0eURlc2NyaXB0b3ImIGRlc2NyaXB0b3IpCiB7CiAgICAg
cmV0dXJuIGdldFN0YXRpY1ZhbHVlRGVzY3JpcHRvcjxKU0Zsb2F0NjRBcnJheUNvbnN0cnVjdG9y
LCBKU0RPTVdyYXBwZXI+KGV4ZWMsICZKU0Zsb2F0NjRBcnJheUNvbnN0cnVjdG9yVGFibGUsIGpz
Q2FzdDxKU0Zsb2F0NjRBcnJheUNvbnN0cnVjdG9yKj4ob2JqZWN0KSwgcHJvcGVydHlOYW1lLCBk
ZXNjcmlwdG9yKTsKIH0KQEAgLTEwNSwxMyArMTA1LDEzIEBAIEpTT2JqZWN0KiBKU0Zsb2F0NjRB
cnJheVByb3RvdHlwZTo6c2VsZigKICAgICByZXR1cm4gZ2V0RE9NUHJvdG90eXBlPEpTRmxvYXQ2
NEFycmF5PihleGVjLCBnbG9iYWxPYmplY3QpOwogfQogCi1ib29sIEpTRmxvYXQ2NEFycmF5UHJv
dG90eXBlOjpnZXRPd25Qcm9wZXJ0eVNsb3QoSlNDZWxsKiBjZWxsLCBFeGVjU3RhdGUqIGV4ZWMs
IGNvbnN0IElkZW50aWZpZXImIHByb3BlcnR5TmFtZSwgUHJvcGVydHlTbG90JiBzbG90KQorYm9v
bCBKU0Zsb2F0NjRBcnJheVByb3RvdHlwZTo6Z2V0T3duUHJvcGVydHlTbG90KEpTQ2VsbCogY2Vs
bCwgRXhlY1N0YXRlKiBleGVjLCBQcm9wZXJ0eU5hbWUgcHJvcGVydHlOYW1lLCBQcm9wZXJ0eVNs
b3QmIHNsb3QpCiB7CiAgICAgSlNGbG9hdDY0QXJyYXlQcm90b3R5cGUqIHRoaXNPYmplY3QgPSBq
c0Nhc3Q8SlNGbG9hdDY0QXJyYXlQcm90b3R5cGUqPihjZWxsKTsKICAgICByZXR1cm4gZ2V0U3Rh
dGljRnVuY3Rpb25TbG90PEpTT2JqZWN0PihleGVjLCBnZXRKU0Zsb2F0NjRBcnJheVByb3RvdHlw
ZVRhYmxlKGV4ZWMpLCB0aGlzT2JqZWN0LCBwcm9wZXJ0eU5hbWUsIHNsb3QpOwogfQogCi1ib29s
IEpTRmxvYXQ2NEFycmF5UHJvdG90eXBlOjpnZXRPd25Qcm9wZXJ0eURlc2NyaXB0b3IoSlNPYmpl
Y3QqIG9iamVjdCwgRXhlY1N0YXRlKiBleGVjLCBjb25zdCBJZGVudGlmaWVyJiBwcm9wZXJ0eU5h
bWUsIFByb3BlcnR5RGVzY3JpcHRvciYgZGVzY3JpcHRvcikKK2Jvb2wgSlNGbG9hdDY0QXJyYXlQ
cm90b3R5cGU6OmdldE93blByb3BlcnR5RGVzY3JpcHRvcihKU09iamVjdCogb2JqZWN0LCBFeGVj
U3RhdGUqIGV4ZWMsIFByb3BlcnR5TmFtZSBwcm9wZXJ0eU5hbWUsIFByb3BlcnR5RGVzY3JpcHRv
ciYgZGVzY3JpcHRvcikKIHsKICAgICBKU0Zsb2F0NjRBcnJheVByb3RvdHlwZSogdGhpc09iamVj
dCA9IGpzQ2FzdDxKU0Zsb2F0NjRBcnJheVByb3RvdHlwZSo+KG9iamVjdCk7CiAgICAgcmV0dXJu
IGdldFN0YXRpY0Z1bmN0aW9uRGVzY3JpcHRvcjxKU09iamVjdD4oZXhlYywgZ2V0SlNGbG9hdDY0
QXJyYXlQcm90b3R5cGVUYWJsZShleGVjKSwgdGhpc09iamVjdCwgcHJvcGVydHlOYW1lLCBkZXNj
cmlwdG9yKTsKQEAgLTE0NCw3ICsxNDQsNyBAQCBKU09iamVjdCogSlNGbG9hdDY0QXJyYXk6OmNy
ZWF0ZVByb3RvdHlwCiAgICAgcmV0dXJuIEpTRmxvYXQ2NEFycmF5UHJvdG90eXBlOjpjcmVhdGUo
ZXhlYy0+Z2xvYmFsRGF0YSgpLCBnbG9iYWxPYmplY3QsIEpTRmxvYXQ2NEFycmF5UHJvdG90eXBl
OjpjcmVhdGVTdHJ1Y3R1cmUoZXhlYy0+Z2xvYmFsRGF0YSgpLCBnbG9iYWxPYmplY3QsIEpTQXJy
YXlCdWZmZXJWaWV3UHJvdG90eXBlOjpzZWxmKGV4ZWMsIGdsb2JhbE9iamVjdCkpKTsKIH0KIAot
Ym9vbCBKU0Zsb2F0NjRBcnJheTo6Z2V0T3duUHJvcGVydHlTbG90KEpTQ2VsbCogY2VsbCwgRXhl
Y1N0YXRlKiBleGVjLCBjb25zdCBJZGVudGlmaWVyJiBwcm9wZXJ0eU5hbWUsIFByb3BlcnR5U2xv
dCYgc2xvdCkKK2Jvb2wgSlNGbG9hdDY0QXJyYXk6OmdldE93blByb3BlcnR5U2xvdChKU0NlbGwq
IGNlbGwsIEV4ZWNTdGF0ZSogZXhlYywgUHJvcGVydHlOYW1lIHByb3BlcnR5TmFtZSwgUHJvcGVy
dHlTbG90JiBzbG90KQogewogICAgIEpTRmxvYXQ2NEFycmF5KiB0aGlzT2JqZWN0ID0ganNDYXN0
PEpTRmxvYXQ2NEFycmF5Kj4oY2VsbCk7CiAgICAgQVNTRVJUX0dDX09CSkVDVF9JTkhFUklUUyh0
aGlzT2JqZWN0LCAmc19pbmZvKTsKQEAgLTE1Nyw3ICsxNTcsNyBAQCBib29sIEpTRmxvYXQ2NEFy
cmF5OjpnZXRPd25Qcm9wZXJ0eVNsb3QoCiAgICAgcmV0dXJuIGdldFN0YXRpY1ZhbHVlU2xvdDxK
U0Zsb2F0NjRBcnJheSwgQmFzZT4oZXhlYywgZ2V0SlNGbG9hdDY0QXJyYXlUYWJsZShleGVjKSwg
dGhpc09iamVjdCwgcHJvcGVydHlOYW1lLCBzbG90KTsKIH0KIAotYm9vbCBKU0Zsb2F0NjRBcnJh
eTo6Z2V0T3duUHJvcGVydHlEZXNjcmlwdG9yKEpTT2JqZWN0KiBvYmplY3QsIEV4ZWNTdGF0ZSog
ZXhlYywgY29uc3QgSWRlbnRpZmllciYgcHJvcGVydHlOYW1lLCBQcm9wZXJ0eURlc2NyaXB0b3Im
IGRlc2NyaXB0b3IpCitib29sIEpTRmxvYXQ2NEFycmF5OjpnZXRPd25Qcm9wZXJ0eURlc2NyaXB0
b3IoSlNPYmplY3QqIG9iamVjdCwgRXhlY1N0YXRlKiBleGVjLCBQcm9wZXJ0eU5hbWUgcHJvcGVy
dHlOYW1lLCBQcm9wZXJ0eURlc2NyaXB0b3ImIGRlc2NyaXB0b3IpCiB7CiAgICAgSlNGbG9hdDY0
QXJyYXkqIHRoaXNPYmplY3QgPSBqc0Nhc3Q8SlNGbG9hdDY0QXJyYXkqPihvYmplY3QpOwogICAg
IEFTU0VSVF9HQ19PQkpFQ1RfSU5IRVJJVFModGhpc09iamVjdCwgJnNfaW5mbyk7CkBAIC0xODEs
MTMgKzE4MSwxMyBAQCBib29sIEpTRmxvYXQ2NEFycmF5OjpnZXRPd25Qcm9wZXJ0eVNsb3RCCiAg
ICAgcmV0dXJuIHRoaXNPYmplY3QtPm1ldGhvZFRhYmxlKCktPmdldE93blByb3BlcnR5U2xvdCh0
aGlzT2JqZWN0LCBleGVjLCBJZGVudGlmaWVyOjpmcm9tKGV4ZWMsIHByb3BlcnR5TmFtZSksIHNs
b3QpOwogfQogCi1KU1ZhbHVlIGpzRmxvYXQ2NEFycmF5Q29uc3RydWN0b3IoRXhlY1N0YXRlKiBl
eGVjLCBKU1ZhbHVlIHNsb3RCYXNlLCBjb25zdCBJZGVudGlmaWVyJikKK0pTVmFsdWUganNGbG9h
dDY0QXJyYXlDb25zdHJ1Y3RvcihFeGVjU3RhdGUqIGV4ZWMsIEpTVmFsdWUgc2xvdEJhc2UsIFBy
b3BlcnR5TmFtZSkKIHsKICAgICBKU0Zsb2F0NjRBcnJheSogZG9tT2JqZWN0ID0ganNDYXN0PEpT
RmxvYXQ2NEFycmF5Kj4oYXNPYmplY3Qoc2xvdEJhc2UpKTsKICAgICByZXR1cm4gSlNGbG9hdDY0
QXJyYXk6OmdldENvbnN0cnVjdG9yKGV4ZWMsIGRvbU9iamVjdC0+Z2xvYmFsT2JqZWN0KCkpOwog
fQogCi12b2lkIEpTRmxvYXQ2NEFycmF5OjpwdXQoSlNDZWxsKiBjZWxsLCBFeGVjU3RhdGUqIGV4
ZWMsIGNvbnN0IElkZW50aWZpZXImIHByb3BlcnR5TmFtZSwgSlNWYWx1ZSB2YWx1ZSwgUHV0UHJv
cGVydHlTbG90JiBzbG90KQordm9pZCBKU0Zsb2F0NjRBcnJheTo6cHV0KEpTQ2VsbCogY2VsbCwg
RXhlY1N0YXRlKiBleGVjLCBQcm9wZXJ0eU5hbWUgcHJvcGVydHlOYW1lLCBKU1ZhbHVlIHZhbHVl
LCBQdXRQcm9wZXJ0eVNsb3QmIHNsb3QpCiB7CiAgICAgSlNGbG9hdDY0QXJyYXkqIHRoaXNPYmpl
Y3QgPSBqc0Nhc3Q8SlNGbG9hdDY0QXJyYXkqPihjZWxsKTsKICAgICBBU1NFUlRfR0NfT0JKRUNU
X0lOSEVSSVRTKHRoaXNPYmplY3QsICZzX2luZm8pOwpJbmRleDogU291cmNlL1dlYkNvcmUvYmlu
ZGluZ3Mvc2NyaXB0cy90ZXN0L0pTL0pTRmxvYXQ2NEFycmF5LmgKPT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291
cmNlL1dlYkNvcmUvYmluZGluZ3Mvc2NyaXB0cy90ZXN0L0pTL0pTRmxvYXQ2NEFycmF5LmgJKHJl
dmlzaW9uIDExNjY2NykKKysrIFNvdXJjZS9XZWJDb3JlL2JpbmRpbmdzL3NjcmlwdHMvdGVzdC9K
Uy9KU0Zsb2F0NjRBcnJheS5oCSh3b3JraW5nIGNvcHkpCkBAIC0zOSwxMCArMzksMTAgQEAgcHVi
bGljOgogICAgIH0KIAogICAgIHN0YXRpYyBKU0M6OkpTT2JqZWN0KiBjcmVhdGVQcm90b3R5cGUo
SlNDOjpFeGVjU3RhdGUqLCBKU0M6OkpTR2xvYmFsT2JqZWN0Kik7Ci0gICAgc3RhdGljIGJvb2wg
Z2V0T3duUHJvcGVydHlTbG90KEpTQzo6SlNDZWxsKiwgSlNDOjpFeGVjU3RhdGUqLCBjb25zdCBK
U0M6OklkZW50aWZpZXImIHByb3BlcnR5TmFtZSwgSlNDOjpQcm9wZXJ0eVNsb3QmKTsKLSAgICBz
dGF0aWMgYm9vbCBnZXRPd25Qcm9wZXJ0eURlc2NyaXB0b3IoSlNDOjpKU09iamVjdCosIEpTQzo6
RXhlY1N0YXRlKiwgY29uc3QgSlNDOjpJZGVudGlmaWVyJiBwcm9wZXJ0eU5hbWUsIEpTQzo6UHJv
cGVydHlEZXNjcmlwdG9yJik7CisgICAgc3RhdGljIGJvb2wgZ2V0T3duUHJvcGVydHlTbG90KEpT
Qzo6SlNDZWxsKiwgSlNDOjpFeGVjU3RhdGUqLCBKU0M6OlByb3BlcnR5TmFtZSwgSlNDOjpQcm9w
ZXJ0eVNsb3QmKTsKKyAgICBzdGF0aWMgYm9vbCBnZXRPd25Qcm9wZXJ0eURlc2NyaXB0b3IoSlND
OjpKU09iamVjdCosIEpTQzo6RXhlY1N0YXRlKiwgSlNDOjpQcm9wZXJ0eU5hbWUsIEpTQzo6UHJv
cGVydHlEZXNjcmlwdG9yJik7CiAgICAgc3RhdGljIGJvb2wgZ2V0T3duUHJvcGVydHlTbG90QnlJ
bmRleChKU0M6OkpTQ2VsbCosIEpTQzo6RXhlY1N0YXRlKiwgdW5zaWduZWQgcHJvcGVydHlOYW1l
LCBKU0M6OlByb3BlcnR5U2xvdCYpOwotICAgIHN0YXRpYyB2b2lkIHB1dChKU0M6OkpTQ2VsbCos
IEpTQzo6RXhlY1N0YXRlKiwgY29uc3QgSlNDOjpJZGVudGlmaWVyJiBwcm9wZXJ0eU5hbWUsIEpT
Qzo6SlNWYWx1ZSwgSlNDOjpQdXRQcm9wZXJ0eVNsb3QmKTsKKyAgICBzdGF0aWMgdm9pZCBwdXQo
SlNDOjpKU0NlbGwqLCBKU0M6OkV4ZWNTdGF0ZSosIEpTQzo6UHJvcGVydHlOYW1lLCBKU0M6OkpT
VmFsdWUsIEpTQzo6UHV0UHJvcGVydHlTbG90Jik7CiAgICAgc3RhdGljIHZvaWQgcHV0QnlJbmRl
eChKU0M6OkpTQ2VsbCosIEpTQzo6RXhlY1N0YXRlKiwgdW5zaWduZWQgcHJvcGVydHlOYW1lLCBK
U0M6OkpTVmFsdWUsIGJvb2wgc2hvdWxkVGhyb3cpOwogICAgIHN0YXRpYyBjb25zdCBKU0M6OkNs
YXNzSW5mbyBzX2luZm87CiAKQEAgLTgzLDggKzgzLDggQEAgcHVibGljOgogICAgIH0KIAogICAg
IHN0YXRpYyBjb25zdCBKU0M6OkNsYXNzSW5mbyBzX2luZm87Ci0gICAgc3RhdGljIGJvb2wgZ2V0
T3duUHJvcGVydHlTbG90KEpTQzo6SlNDZWxsKiwgSlNDOjpFeGVjU3RhdGUqLCBjb25zdCBKU0M6
OklkZW50aWZpZXImLCBKU0M6OlByb3BlcnR5U2xvdCYpOwotICAgIHN0YXRpYyBib29sIGdldE93
blByb3BlcnR5RGVzY3JpcHRvcihKU0M6OkpTT2JqZWN0KiwgSlNDOjpFeGVjU3RhdGUqLCBjb25z
dCBKU0M6OklkZW50aWZpZXImLCBKU0M6OlByb3BlcnR5RGVzY3JpcHRvciYpOworICAgIHN0YXRp
YyBib29sIGdldE93blByb3BlcnR5U2xvdChKU0M6OkpTQ2VsbCosIEpTQzo6RXhlY1N0YXRlKiwg
SlNDOjpQcm9wZXJ0eU5hbWUsIEpTQzo6UHJvcGVydHlTbG90Jik7CisgICAgc3RhdGljIGJvb2wg
Z2V0T3duUHJvcGVydHlEZXNjcmlwdG9yKEpTQzo6SlNPYmplY3QqLCBKU0M6OkV4ZWNTdGF0ZSos
IEpTQzo6UHJvcGVydHlOYW1lLCBKU0M6OlByb3BlcnR5RGVzY3JpcHRvciYpOwogICAgIHN0YXRp
YyBKU0M6OlN0cnVjdHVyZSogY3JlYXRlU3RydWN0dXJlKEpTQzo6SlNHbG9iYWxEYXRhJiBnbG9i
YWxEYXRhLCBKU0M6OkpTR2xvYmFsT2JqZWN0KiBnbG9iYWxPYmplY3QsIEpTQzo6SlNWYWx1ZSBw
cm90b3R5cGUpCiAgICAgewogICAgICAgICByZXR1cm4gSlNDOjpTdHJ1Y3R1cmU6OmNyZWF0ZShn
bG9iYWxEYXRhLCBnbG9iYWxPYmplY3QsIHByb3RvdHlwZSwgSlNDOjpUeXBlSW5mbyhKU0M6Ok9i
amVjdFR5cGUsIFN0cnVjdHVyZUZsYWdzKSwgJnNfaW5mbyk7CkBAIC0xMTAsOCArMTEwLDggQEAg
cHVibGljOgogICAgICAgICByZXR1cm4gcHRyOwogICAgIH0KIAotICAgIHN0YXRpYyBib29sIGdl
dE93blByb3BlcnR5U2xvdChKU0M6OkpTQ2VsbCosIEpTQzo6RXhlY1N0YXRlKiwgY29uc3QgSlND
OjpJZGVudGlmaWVyJiwgSlNDOjpQcm9wZXJ0eVNsb3QmKTsKLSAgICBzdGF0aWMgYm9vbCBnZXRP
d25Qcm9wZXJ0eURlc2NyaXB0b3IoSlNDOjpKU09iamVjdCosIEpTQzo6RXhlY1N0YXRlKiwgY29u
c3QgSlNDOjpJZGVudGlmaWVyJiwgSlNDOjpQcm9wZXJ0eURlc2NyaXB0b3ImKTsKKyAgICBzdGF0
aWMgYm9vbCBnZXRPd25Qcm9wZXJ0eVNsb3QoSlNDOjpKU0NlbGwqLCBKU0M6OkV4ZWNTdGF0ZSos
IEpTQzo6UHJvcGVydHlOYW1lLCBKU0M6OlByb3BlcnR5U2xvdCYpOworICAgIHN0YXRpYyBib29s
IGdldE93blByb3BlcnR5RGVzY3JpcHRvcihKU0M6OkpTT2JqZWN0KiwgSlNDOjpFeGVjU3RhdGUq
LCBKU0M6OlByb3BlcnR5TmFtZSwgSlNDOjpQcm9wZXJ0eURlc2NyaXB0b3ImKTsKICAgICBzdGF0
aWMgY29uc3QgSlNDOjpDbGFzc0luZm8gc19pbmZvOwogICAgIHN0YXRpYyBKU0M6OlN0cnVjdHVy
ZSogY3JlYXRlU3RydWN0dXJlKEpTQzo6SlNHbG9iYWxEYXRhJiBnbG9iYWxEYXRhLCBKU0M6OkpT
R2xvYmFsT2JqZWN0KiBnbG9iYWxPYmplY3QsIEpTQzo6SlNWYWx1ZSBwcm90b3R5cGUpCiAgICAg
ewpAQCAtMTI4LDcgKzEyOCw3IEBAIHByb3RlY3RlZDoKIEpTQzo6RW5jb2RlZEpTVmFsdWUgSlND
X0hPU1RfQ0FMTCBqc0Zsb2F0NjRBcnJheVByb3RvdHlwZUZ1bmN0aW9uRm9vKEpTQzo6RXhlY1N0
YXRlKik7CiAvLyBBdHRyaWJ1dGVzCiAKLUpTQzo6SlNWYWx1ZSBqc0Zsb2F0NjRBcnJheUNvbnN0
cnVjdG9yKEpTQzo6RXhlY1N0YXRlKiwgSlNDOjpKU1ZhbHVlLCBjb25zdCBKU0M6OklkZW50aWZp
ZXImKTsKK0pTQzo6SlNWYWx1ZSBqc0Zsb2F0NjRBcnJheUNvbnN0cnVjdG9yKEpTQzo6RXhlY1N0
YXRlKiwgSlNDOjpKU1ZhbHVlLCBKU0M6OlByb3BlcnR5TmFtZSk7CiAKIH0gLy8gbmFtZXNwYWNl
IFdlYkNvcmUKIApJbmRleDogU291cmNlL1dlYkNvcmUvYmluZGluZ3Mvc2NyaXB0cy90ZXN0L0pT
L0pTVGVzdEFjdGl2ZURPTU9iamVjdC5jcHAKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL1dlYkNvcmUv
YmluZGluZ3Mvc2NyaXB0cy90ZXN0L0pTL0pTVGVzdEFjdGl2ZURPTU9iamVjdC5jcHAJKHJldmlz
aW9uIDExNjY2NykKKysrIFNvdXJjZS9XZWJDb3JlL2JpbmRpbmdzL3NjcmlwdHMvdGVzdC9KUy9K
U1Rlc3RBY3RpdmVET01PYmplY3QuY3BwCSh3b3JraW5nIGNvcHkpCkBAIC02NSwxMiArNjUsMTIg
QEAgdm9pZCBKU1Rlc3RBY3RpdmVET01PYmplY3RDb25zdHJ1Y3Rvcjo6ZgogICAgIHB1dERpcmVj
dChleGVjLT5nbG9iYWxEYXRhKCksIGV4ZWMtPnByb3BlcnR5TmFtZXMoKS5wcm90b3R5cGUsIEpT
VGVzdEFjdGl2ZURPTU9iamVjdFByb3RvdHlwZTo6c2VsZihleGVjLCBnbG9iYWxPYmplY3QpLCBE
b250RGVsZXRlIHwgUmVhZE9ubHkpOwogfQogCi1ib29sIEpTVGVzdEFjdGl2ZURPTU9iamVjdENv
bnN0cnVjdG9yOjpnZXRPd25Qcm9wZXJ0eVNsb3QoSlNDZWxsKiBjZWxsLCBFeGVjU3RhdGUqIGV4
ZWMsIGNvbnN0IElkZW50aWZpZXImIHByb3BlcnR5TmFtZSwgUHJvcGVydHlTbG90JiBzbG90KQor
Ym9vbCBKU1Rlc3RBY3RpdmVET01PYmplY3RDb25zdHJ1Y3Rvcjo6Z2V0T3duUHJvcGVydHlTbG90
KEpTQ2VsbCogY2VsbCwgRXhlY1N0YXRlKiBleGVjLCBQcm9wZXJ0eU5hbWUgcHJvcGVydHlOYW1l
LCBQcm9wZXJ0eVNsb3QmIHNsb3QpCiB7CiAgICAgcmV0dXJuIGdldFN0YXRpY1ZhbHVlU2xvdDxK
U1Rlc3RBY3RpdmVET01PYmplY3RDb25zdHJ1Y3RvciwgSlNET01XcmFwcGVyPihleGVjLCAmSlNU
ZXN0QWN0aXZlRE9NT2JqZWN0Q29uc3RydWN0b3JUYWJsZSwganNDYXN0PEpTVGVzdEFjdGl2ZURP
TU9iamVjdENvbnN0cnVjdG9yKj4oY2VsbCksIHByb3BlcnR5TmFtZSwgc2xvdCk7CiB9CiAKLWJv
b2wgSlNUZXN0QWN0aXZlRE9NT2JqZWN0Q29uc3RydWN0b3I6OmdldE93blByb3BlcnR5RGVzY3Jp
cHRvcihKU09iamVjdCogb2JqZWN0LCBFeGVjU3RhdGUqIGV4ZWMsIGNvbnN0IElkZW50aWZpZXIm
IHByb3BlcnR5TmFtZSwgUHJvcGVydHlEZXNjcmlwdG9yJiBkZXNjcmlwdG9yKQorYm9vbCBKU1Rl
c3RBY3RpdmVET01PYmplY3RDb25zdHJ1Y3Rvcjo6Z2V0T3duUHJvcGVydHlEZXNjcmlwdG9yKEpT
T2JqZWN0KiBvYmplY3QsIEV4ZWNTdGF0ZSogZXhlYywgUHJvcGVydHlOYW1lIHByb3BlcnR5TmFt
ZSwgUHJvcGVydHlEZXNjcmlwdG9yJiBkZXNjcmlwdG9yKQogewogICAgIHJldHVybiBnZXRTdGF0
aWNWYWx1ZURlc2NyaXB0b3I8SlNUZXN0QWN0aXZlRE9NT2JqZWN0Q29uc3RydWN0b3IsIEpTRE9N
V3JhcHBlcj4oZXhlYywgJkpTVGVzdEFjdGl2ZURPTU9iamVjdENvbnN0cnVjdG9yVGFibGUsIGpz
Q2FzdDxKU1Rlc3RBY3RpdmVET01PYmplY3RDb25zdHJ1Y3Rvcio+KG9iamVjdCksIHByb3BlcnR5
TmFtZSwgZGVzY3JpcHRvcik7CiB9CkBAIC05MiwxMyArOTIsMTMgQEAgSlNPYmplY3QqIEpTVGVz
dEFjdGl2ZURPTU9iamVjdFByb3RvdHlwZQogICAgIHJldHVybiBnZXRET01Qcm90b3R5cGU8SlNU
ZXN0QWN0aXZlRE9NT2JqZWN0PihleGVjLCBnbG9iYWxPYmplY3QpOwogfQogCi1ib29sIEpTVGVz
dEFjdGl2ZURPTU9iamVjdFByb3RvdHlwZTo6Z2V0T3duUHJvcGVydHlTbG90KEpTQ2VsbCogY2Vs
bCwgRXhlY1N0YXRlKiBleGVjLCBjb25zdCBJZGVudGlmaWVyJiBwcm9wZXJ0eU5hbWUsIFByb3Bl
cnR5U2xvdCYgc2xvdCkKK2Jvb2wgSlNUZXN0QWN0aXZlRE9NT2JqZWN0UHJvdG90eXBlOjpnZXRP
d25Qcm9wZXJ0eVNsb3QoSlNDZWxsKiBjZWxsLCBFeGVjU3RhdGUqIGV4ZWMsIFByb3BlcnR5TmFt
ZSBwcm9wZXJ0eU5hbWUsIFByb3BlcnR5U2xvdCYgc2xvdCkKIHsKICAgICBKU1Rlc3RBY3RpdmVE
T01PYmplY3RQcm90b3R5cGUqIHRoaXNPYmplY3QgPSBqc0Nhc3Q8SlNUZXN0QWN0aXZlRE9NT2Jq
ZWN0UHJvdG90eXBlKj4oY2VsbCk7CiAgICAgcmV0dXJuIGdldFN0YXRpY0Z1bmN0aW9uU2xvdDxK
U09iamVjdD4oZXhlYywgJkpTVGVzdEFjdGl2ZURPTU9iamVjdFByb3RvdHlwZVRhYmxlLCB0aGlz
T2JqZWN0LCBwcm9wZXJ0eU5hbWUsIHNsb3QpOwogfQogCi1ib29sIEpTVGVzdEFjdGl2ZURPTU9i
amVjdFByb3RvdHlwZTo6Z2V0T3duUHJvcGVydHlEZXNjcmlwdG9yKEpTT2JqZWN0KiBvYmplY3Qs
IEV4ZWNTdGF0ZSogZXhlYywgY29uc3QgSWRlbnRpZmllciYgcHJvcGVydHlOYW1lLCBQcm9wZXJ0
eURlc2NyaXB0b3ImIGRlc2NyaXB0b3IpCitib29sIEpTVGVzdEFjdGl2ZURPTU9iamVjdFByb3Rv
dHlwZTo6Z2V0T3duUHJvcGVydHlEZXNjcmlwdG9yKEpTT2JqZWN0KiBvYmplY3QsIEV4ZWNTdGF0
ZSogZXhlYywgUHJvcGVydHlOYW1lIHByb3BlcnR5TmFtZSwgUHJvcGVydHlEZXNjcmlwdG9yJiBk
ZXNjcmlwdG9yKQogewogICAgIEpTVGVzdEFjdGl2ZURPTU9iamVjdFByb3RvdHlwZSogdGhpc09i
amVjdCA9IGpzQ2FzdDxKU1Rlc3RBY3RpdmVET01PYmplY3RQcm90b3R5cGUqPihvYmplY3QpOwog
ICAgIHJldHVybiBnZXRTdGF0aWNGdW5jdGlvbkRlc2NyaXB0b3I8SlNPYmplY3Q+KGV4ZWMsICZK
U1Rlc3RBY3RpdmVET01PYmplY3RQcm90b3R5cGVUYWJsZSwgdGhpc09iamVjdCwgcHJvcGVydHlO
YW1lLCBkZXNjcmlwdG9yKTsKQEAgLTEzNCwxNCArMTM0LDE0IEBAIEpTVGVzdEFjdGl2ZURPTU9i
amVjdDo6fkpTVGVzdEFjdGl2ZURPTU8KICAgICByZWxlYXNlSW1wbElmTm90TnVsbCgpOwogfQog
Ci1ib29sIEpTVGVzdEFjdGl2ZURPTU9iamVjdDo6Z2V0T3duUHJvcGVydHlTbG90KEpTQ2VsbCog
Y2VsbCwgRXhlY1N0YXRlKiBleGVjLCBjb25zdCBJZGVudGlmaWVyJiBwcm9wZXJ0eU5hbWUsIFBy
b3BlcnR5U2xvdCYgc2xvdCkKK2Jvb2wgSlNUZXN0QWN0aXZlRE9NT2JqZWN0OjpnZXRPd25Qcm9w
ZXJ0eVNsb3QoSlNDZWxsKiBjZWxsLCBFeGVjU3RhdGUqIGV4ZWMsIFByb3BlcnR5TmFtZSBwcm9w
ZXJ0eU5hbWUsIFByb3BlcnR5U2xvdCYgc2xvdCkKIHsKICAgICBKU1Rlc3RBY3RpdmVET01PYmpl
Y3QqIHRoaXNPYmplY3QgPSBqc0Nhc3Q8SlNUZXN0QWN0aXZlRE9NT2JqZWN0Kj4oY2VsbCk7CiAg
ICAgQVNTRVJUX0dDX09CSkVDVF9JTkhFUklUUyh0aGlzT2JqZWN0LCAmc19pbmZvKTsKICAgICBy
ZXR1cm4gZ2V0U3RhdGljVmFsdWVTbG90PEpTVGVzdEFjdGl2ZURPTU9iamVjdCwgQmFzZT4oZXhl
YywgJkpTVGVzdEFjdGl2ZURPTU9iamVjdFRhYmxlLCB0aGlzT2JqZWN0LCBwcm9wZXJ0eU5hbWUs
IHNsb3QpOwogfQogCi1ib29sIEpTVGVzdEFjdGl2ZURPTU9iamVjdDo6Z2V0T3duUHJvcGVydHlE
ZXNjcmlwdG9yKEpTT2JqZWN0KiBvYmplY3QsIEV4ZWNTdGF0ZSogZXhlYywgY29uc3QgSWRlbnRp
ZmllciYgcHJvcGVydHlOYW1lLCBQcm9wZXJ0eURlc2NyaXB0b3ImIGRlc2NyaXB0b3IpCitib29s
IEpTVGVzdEFjdGl2ZURPTU9iamVjdDo6Z2V0T3duUHJvcGVydHlEZXNjcmlwdG9yKEpTT2JqZWN0
KiBvYmplY3QsIEV4ZWNTdGF0ZSogZXhlYywgUHJvcGVydHlOYW1lIHByb3BlcnR5TmFtZSwgUHJv
cGVydHlEZXNjcmlwdG9yJiBkZXNjcmlwdG9yKQogewogICAgIEpTVGVzdEFjdGl2ZURPTU9iamVj
dCogdGhpc09iamVjdCA9IGpzQ2FzdDxKU1Rlc3RBY3RpdmVET01PYmplY3QqPihvYmplY3QpOwog
ICAgIEFTU0VSVF9HQ19PQkpFQ1RfSU5IRVJJVFModGhpc09iamVjdCwgJnNfaW5mbyk7CkBAIC0x
NTAsNyArMTUwLDcgQEAgYm9vbCBKU1Rlc3RBY3RpdmVET01PYmplY3Q6OmdldE93blByb3Blcgog
ICAgIHJldHVybiBnZXRTdGF0aWNWYWx1ZURlc2NyaXB0b3I8SlNUZXN0QWN0aXZlRE9NT2JqZWN0
LCBCYXNlPihleGVjLCAmSlNUZXN0QWN0aXZlRE9NT2JqZWN0VGFibGUsIHRoaXNPYmplY3QsIHBy
b3BlcnR5TmFtZSwgZGVzY3JpcHRvcik7CiB9CiAKLUpTVmFsdWUganNUZXN0QWN0aXZlRE9NT2Jq
ZWN0RXhjaXRpbmdBdHRyKEV4ZWNTdGF0ZSogZXhlYywgSlNWYWx1ZSBzbG90QmFzZSwgY29uc3Qg
SWRlbnRpZmllciYpCitKU1ZhbHVlIGpzVGVzdEFjdGl2ZURPTU9iamVjdEV4Y2l0aW5nQXR0cihF
eGVjU3RhdGUqIGV4ZWMsIEpTVmFsdWUgc2xvdEJhc2UsIFByb3BlcnR5TmFtZSkKIHsKICAgICBK
U1Rlc3RBY3RpdmVET01PYmplY3QqIGNhc3RlZFRoaXMgPSBqc0Nhc3Q8SlNUZXN0QWN0aXZlRE9N
T2JqZWN0Kj4oYXNPYmplY3Qoc2xvdEJhc2UpKTsKICAgICBpZiAoIWNhc3RlZFRoaXMtPmFsbG93
c0FjY2Vzc0Zyb20oZXhlYykpCkBAIC0xNjIsNyArMTYyLDcgQEAgSlNWYWx1ZSBqc1Rlc3RBY3Rp
dmVET01PYmplY3RFeGNpdGluZ0F0dAogfQogCiAKLUpTVmFsdWUganNUZXN0QWN0aXZlRE9NT2Jq
ZWN0Q29uc3RydWN0b3IoRXhlY1N0YXRlKiBleGVjLCBKU1ZhbHVlIHNsb3RCYXNlLCBjb25zdCBJ
ZGVudGlmaWVyJikKK0pTVmFsdWUganNUZXN0QWN0aXZlRE9NT2JqZWN0Q29uc3RydWN0b3IoRXhl
Y1N0YXRlKiBleGVjLCBKU1ZhbHVlIHNsb3RCYXNlLCBQcm9wZXJ0eU5hbWUpCiB7CiAgICAgSlNU
ZXN0QWN0aXZlRE9NT2JqZWN0KiBkb21PYmplY3QgPSBqc0Nhc3Q8SlNUZXN0QWN0aXZlRE9NT2Jq
ZWN0Kj4oYXNPYmplY3Qoc2xvdEJhc2UpKTsKICAgICBpZiAoIWRvbU9iamVjdC0+YWxsb3dzQWNj
ZXNzRnJvbShleGVjKSkKSW5kZXg6IFNvdXJjZS9XZWJDb3JlL2JpbmRpbmdzL3NjcmlwdHMvdGVz
dC9KUy9KU1Rlc3RBY3RpdmVET01PYmplY3QuaAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2ViQ29y
ZS9iaW5kaW5ncy9zY3JpcHRzL3Rlc3QvSlMvSlNUZXN0QWN0aXZlRE9NT2JqZWN0LmgJKHJldmlz
aW9uIDExNjY2NykKKysrIFNvdXJjZS9XZWJDb3JlL2JpbmRpbmdzL3NjcmlwdHMvdGVzdC9KUy9K
U1Rlc3RBY3RpdmVET01PYmplY3QuaAkod29ya2luZyBjb3B5KQpAQCAtNDAsOCArNDAsOCBAQCBw
dWJsaWM6CiAgICAgfQogCiAgICAgc3RhdGljIEpTQzo6SlNPYmplY3QqIGNyZWF0ZVByb3RvdHlw
ZShKU0M6OkV4ZWNTdGF0ZSosIEpTQzo6SlNHbG9iYWxPYmplY3QqKTsKLSAgICBzdGF0aWMgYm9v
bCBnZXRPd25Qcm9wZXJ0eVNsb3QoSlNDOjpKU0NlbGwqLCBKU0M6OkV4ZWNTdGF0ZSosIGNvbnN0
IEpTQzo6SWRlbnRpZmllciYgcHJvcGVydHlOYW1lLCBKU0M6OlByb3BlcnR5U2xvdCYpOwotICAg
IHN0YXRpYyBib29sIGdldE93blByb3BlcnR5RGVzY3JpcHRvcihKU0M6OkpTT2JqZWN0KiwgSlND
OjpFeGVjU3RhdGUqLCBjb25zdCBKU0M6OklkZW50aWZpZXImIHByb3BlcnR5TmFtZSwgSlNDOjpQ
cm9wZXJ0eURlc2NyaXB0b3ImKTsKKyAgICBzdGF0aWMgYm9vbCBnZXRPd25Qcm9wZXJ0eVNsb3Qo
SlNDOjpKU0NlbGwqLCBKU0M6OkV4ZWNTdGF0ZSosIEpTQzo6UHJvcGVydHlOYW1lLCBKU0M6OlBy
b3BlcnR5U2xvdCYpOworICAgIHN0YXRpYyBib29sIGdldE93blByb3BlcnR5RGVzY3JpcHRvcihK
U0M6OkpTT2JqZWN0KiwgSlNDOjpFeGVjU3RhdGUqLCBKU0M6OlByb3BlcnR5TmFtZSwgSlNDOjpQ
cm9wZXJ0eURlc2NyaXB0b3ImKTsKICAgICBzdGF0aWMgdm9pZCBkZXN0cm95KEpTQzo6SlNDZWxs
Kik7CiAgICAgfkpTVGVzdEFjdGl2ZURPTU9iamVjdCgpOwogICAgIHN0YXRpYyBjb25zdCBKU0M6
OkNsYXNzSW5mbyBzX2luZm87CkBAIC05Niw4ICs5Niw4IEBAIHB1YmxpYzoKICAgICB9CiAKICAg
ICBzdGF0aWMgY29uc3QgSlNDOjpDbGFzc0luZm8gc19pbmZvOwotICAgIHN0YXRpYyBib29sIGdl
dE93blByb3BlcnR5U2xvdChKU0M6OkpTQ2VsbCosIEpTQzo6RXhlY1N0YXRlKiwgY29uc3QgSlND
OjpJZGVudGlmaWVyJiwgSlNDOjpQcm9wZXJ0eVNsb3QmKTsKLSAgICBzdGF0aWMgYm9vbCBnZXRP
d25Qcm9wZXJ0eURlc2NyaXB0b3IoSlNDOjpKU09iamVjdCosIEpTQzo6RXhlY1N0YXRlKiwgY29u
c3QgSlNDOjpJZGVudGlmaWVyJiwgSlNDOjpQcm9wZXJ0eURlc2NyaXB0b3ImKTsKKyAgICBzdGF0
aWMgYm9vbCBnZXRPd25Qcm9wZXJ0eVNsb3QoSlNDOjpKU0NlbGwqLCBKU0M6OkV4ZWNTdGF0ZSos
IEpTQzo6UHJvcGVydHlOYW1lLCBKU0M6OlByb3BlcnR5U2xvdCYpOworICAgIHN0YXRpYyBib29s
IGdldE93blByb3BlcnR5RGVzY3JpcHRvcihKU0M6OkpTT2JqZWN0KiwgSlNDOjpFeGVjU3RhdGUq
LCBKU0M6OlByb3BlcnR5TmFtZSwgSlNDOjpQcm9wZXJ0eURlc2NyaXB0b3ImKTsKICAgICBzdGF0
aWMgSlNDOjpTdHJ1Y3R1cmUqIGNyZWF0ZVN0cnVjdHVyZShKU0M6OkpTR2xvYmFsRGF0YSYgZ2xv
YmFsRGF0YSwgSlNDOjpKU0dsb2JhbE9iamVjdCogZ2xvYmFsT2JqZWN0LCBKU0M6OkpTVmFsdWUg
cHJvdG90eXBlKQogICAgIHsKICAgICAgICAgcmV0dXJuIEpTQzo6U3RydWN0dXJlOjpjcmVhdGUo
Z2xvYmFsRGF0YSwgZ2xvYmFsT2JqZWN0LCBwcm90b3R5cGUsIEpTQzo6VHlwZUluZm8oSlNDOjpP
YmplY3RUeXBlLCBTdHJ1Y3R1cmVGbGFncyksICZzX2luZm8pOwpAQCAtMTIzLDggKzEyMyw4IEBA
IHB1YmxpYzoKICAgICAgICAgcmV0dXJuIHB0cjsKICAgICB9CiAKLSAgICBzdGF0aWMgYm9vbCBn
ZXRPd25Qcm9wZXJ0eVNsb3QoSlNDOjpKU0NlbGwqLCBKU0M6OkV4ZWNTdGF0ZSosIGNvbnN0IEpT
Qzo6SWRlbnRpZmllciYsIEpTQzo6UHJvcGVydHlTbG90Jik7Ci0gICAgc3RhdGljIGJvb2wgZ2V0
T3duUHJvcGVydHlEZXNjcmlwdG9yKEpTQzo6SlNPYmplY3QqLCBKU0M6OkV4ZWNTdGF0ZSosIGNv
bnN0IEpTQzo6SWRlbnRpZmllciYsIEpTQzo6UHJvcGVydHlEZXNjcmlwdG9yJik7CisgICAgc3Rh
dGljIGJvb2wgZ2V0T3duUHJvcGVydHlTbG90KEpTQzo6SlNDZWxsKiwgSlNDOjpFeGVjU3RhdGUq
LCBKU0M6OlByb3BlcnR5TmFtZSwgSlNDOjpQcm9wZXJ0eVNsb3QmKTsKKyAgICBzdGF0aWMgYm9v
bCBnZXRPd25Qcm9wZXJ0eURlc2NyaXB0b3IoSlNDOjpKU09iamVjdCosIEpTQzo6RXhlY1N0YXRl
KiwgSlNDOjpQcm9wZXJ0eU5hbWUsIEpTQzo6UHJvcGVydHlEZXNjcmlwdG9yJik7CiAgICAgc3Rh
dGljIGNvbnN0IEpTQzo6Q2xhc3NJbmZvIHNfaW5mbzsKICAgICBzdGF0aWMgSlNDOjpTdHJ1Y3R1
cmUqIGNyZWF0ZVN0cnVjdHVyZShKU0M6OkpTR2xvYmFsRGF0YSYgZ2xvYmFsRGF0YSwgSlNDOjpK
U0dsb2JhbE9iamVjdCogZ2xvYmFsT2JqZWN0LCBKU0M6OkpTVmFsdWUgcHJvdG90eXBlKQogICAg
IHsKQEAgLTE0MCw4ICsxNDAsOCBAQCBKU0M6OkVuY29kZWRKU1ZhbHVlIEpTQ19IT1NUX0NBTEwg
anNUZXN0CiBKU0M6OkVuY29kZWRKU1ZhbHVlIEpTQ19IT1NUX0NBTEwganNUZXN0QWN0aXZlRE9N
T2JqZWN0UHJvdG90eXBlRnVuY3Rpb25Qb3N0TWVzc2FnZShKU0M6OkV4ZWNTdGF0ZSopOwogLy8g
QXR0cmlidXRlcwogCi1KU0M6OkpTVmFsdWUganNUZXN0QWN0aXZlRE9NT2JqZWN0RXhjaXRpbmdB
dHRyKEpTQzo6RXhlY1N0YXRlKiwgSlNDOjpKU1ZhbHVlLCBjb25zdCBKU0M6OklkZW50aWZpZXIm
KTsKLUpTQzo6SlNWYWx1ZSBqc1Rlc3RBY3RpdmVET01PYmplY3RDb25zdHJ1Y3RvcihKU0M6OkV4
ZWNTdGF0ZSosIEpTQzo6SlNWYWx1ZSwgY29uc3QgSlNDOjpJZGVudGlmaWVyJik7CitKU0M6OkpT
VmFsdWUganNUZXN0QWN0aXZlRE9NT2JqZWN0RXhjaXRpbmdBdHRyKEpTQzo6RXhlY1N0YXRlKiwg
SlNDOjpKU1ZhbHVlLCBKU0M6OlByb3BlcnR5TmFtZSk7CitKU0M6OkpTVmFsdWUganNUZXN0QWN0
aXZlRE9NT2JqZWN0Q29uc3RydWN0b3IoSlNDOjpFeGVjU3RhdGUqLCBKU0M6OkpTVmFsdWUsIEpT
Qzo6UHJvcGVydHlOYW1lKTsKIAogfSAvLyBuYW1lc3BhY2UgV2ViQ29yZQogCkluZGV4OiBTb3Vy
Y2UvV2ViQ29yZS9iaW5kaW5ncy9zY3JpcHRzL3Rlc3QvSlMvSlNUZXN0Q3VzdG9tTmFtZWRHZXR0
ZXIuY3BwCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9XZWJDb3JlL2JpbmRpbmdzL3NjcmlwdHMvdGVz
dC9KUy9KU1Rlc3RDdXN0b21OYW1lZEdldHRlci5jcHAJKHJldmlzaW9uIDExNjY2NykKKysrIFNv
dXJjZS9XZWJDb3JlL2JpbmRpbmdzL3NjcmlwdHMvdGVzdC9KUy9KU1Rlc3RDdXN0b21OYW1lZEdl
dHRlci5jcHAJKHdvcmtpbmcgY29weSkKQEAgLTY0LDEyICs2NCwxMiBAQCB2b2lkIEpTVGVzdEN1
c3RvbU5hbWVkR2V0dGVyQ29uc3RydWN0b3I6CiAgICAgcHV0RGlyZWN0KGV4ZWMtPmdsb2JhbERh
dGEoKSwgZXhlYy0+cHJvcGVydHlOYW1lcygpLnByb3RvdHlwZSwgSlNUZXN0Q3VzdG9tTmFtZWRH
ZXR0ZXJQcm90b3R5cGU6OnNlbGYoZXhlYywgZ2xvYmFsT2JqZWN0KSwgRG9udERlbGV0ZSB8IFJl
YWRPbmx5KTsKIH0KIAotYm9vbCBKU1Rlc3RDdXN0b21OYW1lZEdldHRlckNvbnN0cnVjdG9yOjpn
ZXRPd25Qcm9wZXJ0eVNsb3QoSlNDZWxsKiBjZWxsLCBFeGVjU3RhdGUqIGV4ZWMsIGNvbnN0IElk
ZW50aWZpZXImIHByb3BlcnR5TmFtZSwgUHJvcGVydHlTbG90JiBzbG90KQorYm9vbCBKU1Rlc3RD
dXN0b21OYW1lZEdldHRlckNvbnN0cnVjdG9yOjpnZXRPd25Qcm9wZXJ0eVNsb3QoSlNDZWxsKiBj
ZWxsLCBFeGVjU3RhdGUqIGV4ZWMsIFByb3BlcnR5TmFtZSBwcm9wZXJ0eU5hbWUsIFByb3BlcnR5
U2xvdCYgc2xvdCkKIHsKICAgICByZXR1cm4gZ2V0U3RhdGljVmFsdWVTbG90PEpTVGVzdEN1c3Rv
bU5hbWVkR2V0dGVyQ29uc3RydWN0b3IsIEpTRE9NV3JhcHBlcj4oZXhlYywgJkpTVGVzdEN1c3Rv
bU5hbWVkR2V0dGVyQ29uc3RydWN0b3JUYWJsZSwganNDYXN0PEpTVGVzdEN1c3RvbU5hbWVkR2V0
dGVyQ29uc3RydWN0b3IqPihjZWxsKSwgcHJvcGVydHlOYW1lLCBzbG90KTsKIH0KIAotYm9vbCBK
U1Rlc3RDdXN0b21OYW1lZEdldHRlckNvbnN0cnVjdG9yOjpnZXRPd25Qcm9wZXJ0eURlc2NyaXB0
b3IoSlNPYmplY3QqIG9iamVjdCwgRXhlY1N0YXRlKiBleGVjLCBjb25zdCBJZGVudGlmaWVyJiBw
cm9wZXJ0eU5hbWUsIFByb3BlcnR5RGVzY3JpcHRvciYgZGVzY3JpcHRvcikKK2Jvb2wgSlNUZXN0
Q3VzdG9tTmFtZWRHZXR0ZXJDb25zdHJ1Y3Rvcjo6Z2V0T3duUHJvcGVydHlEZXNjcmlwdG9yKEpT
T2JqZWN0KiBvYmplY3QsIEV4ZWNTdGF0ZSogZXhlYywgUHJvcGVydHlOYW1lIHByb3BlcnR5TmFt
ZSwgUHJvcGVydHlEZXNjcmlwdG9yJiBkZXNjcmlwdG9yKQogewogICAgIHJldHVybiBnZXRTdGF0
aWNWYWx1ZURlc2NyaXB0b3I8SlNUZXN0Q3VzdG9tTmFtZWRHZXR0ZXJDb25zdHJ1Y3RvciwgSlNE
T01XcmFwcGVyPihleGVjLCAmSlNUZXN0Q3VzdG9tTmFtZWRHZXR0ZXJDb25zdHJ1Y3RvclRhYmxl
LCBqc0Nhc3Q8SlNUZXN0Q3VzdG9tTmFtZWRHZXR0ZXJDb25zdHJ1Y3Rvcio+KG9iamVjdCksIHBy
b3BlcnR5TmFtZSwgZGVzY3JpcHRvcik7CiB9CkBAIC05MCwxMyArOTAsMTMgQEAgSlNPYmplY3Qq
IEpTVGVzdEN1c3RvbU5hbWVkR2V0dGVyUHJvdG90eQogICAgIHJldHVybiBnZXRET01Qcm90b3R5
cGU8SlNUZXN0Q3VzdG9tTmFtZWRHZXR0ZXI+KGV4ZWMsIGdsb2JhbE9iamVjdCk7CiB9CiAKLWJv
b2wgSlNUZXN0Q3VzdG9tTmFtZWRHZXR0ZXJQcm90b3R5cGU6OmdldE93blByb3BlcnR5U2xvdChK
U0NlbGwqIGNlbGwsIEV4ZWNTdGF0ZSogZXhlYywgY29uc3QgSWRlbnRpZmllciYgcHJvcGVydHlO
YW1lLCBQcm9wZXJ0eVNsb3QmIHNsb3QpCitib29sIEpTVGVzdEN1c3RvbU5hbWVkR2V0dGVyUHJv
dG90eXBlOjpnZXRPd25Qcm9wZXJ0eVNsb3QoSlNDZWxsKiBjZWxsLCBFeGVjU3RhdGUqIGV4ZWMs
IFByb3BlcnR5TmFtZSBwcm9wZXJ0eU5hbWUsIFByb3BlcnR5U2xvdCYgc2xvdCkKIHsKICAgICBK
U1Rlc3RDdXN0b21OYW1lZEdldHRlclByb3RvdHlwZSogdGhpc09iamVjdCA9IGpzQ2FzdDxKU1Rl
c3RDdXN0b21OYW1lZEdldHRlclByb3RvdHlwZSo+KGNlbGwpOwogICAgIHJldHVybiBnZXRTdGF0
aWNGdW5jdGlvblNsb3Q8SlNPYmplY3Q+KGV4ZWMsICZKU1Rlc3RDdXN0b21OYW1lZEdldHRlclBy
b3RvdHlwZVRhYmxlLCB0aGlzT2JqZWN0LCBwcm9wZXJ0eU5hbWUsIHNsb3QpOwogfQogCi1ib29s
IEpTVGVzdEN1c3RvbU5hbWVkR2V0dGVyUHJvdG90eXBlOjpnZXRPd25Qcm9wZXJ0eURlc2NyaXB0
b3IoSlNPYmplY3QqIG9iamVjdCwgRXhlY1N0YXRlKiBleGVjLCBjb25zdCBJZGVudGlmaWVyJiBw
cm9wZXJ0eU5hbWUsIFByb3BlcnR5RGVzY3JpcHRvciYgZGVzY3JpcHRvcikKK2Jvb2wgSlNUZXN0
Q3VzdG9tTmFtZWRHZXR0ZXJQcm90b3R5cGU6OmdldE93blByb3BlcnR5RGVzY3JpcHRvcihKU09i
amVjdCogb2JqZWN0LCBFeGVjU3RhdGUqIGV4ZWMsIFByb3BlcnR5TmFtZSBwcm9wZXJ0eU5hbWUs
IFByb3BlcnR5RGVzY3JpcHRvciYgZGVzY3JpcHRvcikKIHsKICAgICBKU1Rlc3RDdXN0b21OYW1l
ZEdldHRlclByb3RvdHlwZSogdGhpc09iamVjdCA9IGpzQ2FzdDxKU1Rlc3RDdXN0b21OYW1lZEdl
dHRlclByb3RvdHlwZSo+KG9iamVjdCk7CiAgICAgcmV0dXJuIGdldFN0YXRpY0Z1bmN0aW9uRGVz
Y3JpcHRvcjxKU09iamVjdD4oZXhlYywgJkpTVGVzdEN1c3RvbU5hbWVkR2V0dGVyUHJvdG90eXBl
VGFibGUsIHRoaXNPYmplY3QsIHByb3BlcnR5TmFtZSwgZGVzY3JpcHRvcik7CkBAIC0xMzIsNyAr
MTMyLDcgQEAgSlNUZXN0Q3VzdG9tTmFtZWRHZXR0ZXI6On5KU1Rlc3RDdXN0b21OYQogICAgIHJl
bGVhc2VJbXBsSWZOb3ROdWxsKCk7CiB9CiAKLWJvb2wgSlNUZXN0Q3VzdG9tTmFtZWRHZXR0ZXI6
OmdldE93blByb3BlcnR5U2xvdChKU0NlbGwqIGNlbGwsIEV4ZWNTdGF0ZSogZXhlYywgY29uc3Qg
SWRlbnRpZmllciYgcHJvcGVydHlOYW1lLCBQcm9wZXJ0eVNsb3QmIHNsb3QpCitib29sIEpTVGVz
dEN1c3RvbU5hbWVkR2V0dGVyOjpnZXRPd25Qcm9wZXJ0eVNsb3QoSlNDZWxsKiBjZWxsLCBFeGVj
U3RhdGUqIGV4ZWMsIFByb3BlcnR5TmFtZSBwcm9wZXJ0eU5hbWUsIFByb3BlcnR5U2xvdCYgc2xv
dCkKIHsKICAgICBKU1Rlc3RDdXN0b21OYW1lZEdldHRlciogdGhpc09iamVjdCA9IGpzQ2FzdDxK
U1Rlc3RDdXN0b21OYW1lZEdldHRlcio+KGNlbGwpOwogICAgIEFTU0VSVF9HQ19PQkpFQ1RfSU5I
RVJJVFModGhpc09iamVjdCwgJnNfaW5mbyk7CkBAIC0xNDMsNyArMTQzLDcgQEAgYm9vbCBKU1Rl
c3RDdXN0b21OYW1lZEdldHRlcjo6Z2V0T3duUHJvcAogICAgIHJldHVybiBnZXRTdGF0aWNWYWx1
ZVNsb3Q8SlNUZXN0Q3VzdG9tTmFtZWRHZXR0ZXIsIEJhc2U+KGV4ZWMsICZKU1Rlc3RDdXN0b21O
YW1lZEdldHRlclRhYmxlLCB0aGlzT2JqZWN0LCBwcm9wZXJ0eU5hbWUsIHNsb3QpOwogfQogCi1i
b29sIEpTVGVzdEN1c3RvbU5hbWVkR2V0dGVyOjpnZXRPd25Qcm9wZXJ0eURlc2NyaXB0b3IoSlNP
YmplY3QqIG9iamVjdCwgRXhlY1N0YXRlKiBleGVjLCBjb25zdCBJZGVudGlmaWVyJiBwcm9wZXJ0
eU5hbWUsIFByb3BlcnR5RGVzY3JpcHRvciYgZGVzY3JpcHRvcikKK2Jvb2wgSlNUZXN0Q3VzdG9t
TmFtZWRHZXR0ZXI6OmdldE93blByb3BlcnR5RGVzY3JpcHRvcihKU09iamVjdCogb2JqZWN0LCBF
eGVjU3RhdGUqIGV4ZWMsIFByb3BlcnR5TmFtZSBwcm9wZXJ0eU5hbWUsIFByb3BlcnR5RGVzY3Jp
cHRvciYgZGVzY3JpcHRvcikKIHsKICAgICBKU1Rlc3RDdXN0b21OYW1lZEdldHRlciogdGhpc09i
amVjdCA9IGpzQ2FzdDxKU1Rlc3RDdXN0b21OYW1lZEdldHRlcio+KG9iamVjdCk7CiAgICAgQVNT
RVJUX0dDX09CSkVDVF9JTkhFUklUUyh0aGlzT2JqZWN0LCAmc19pbmZvKTsKQEAgLTE1Niw3ICsx
NTYsNyBAQCBib29sIEpTVGVzdEN1c3RvbU5hbWVkR2V0dGVyOjpnZXRPd25Qcm9wCiAgICAgcmV0
dXJuIGdldFN0YXRpY1ZhbHVlRGVzY3JpcHRvcjxKU1Rlc3RDdXN0b21OYW1lZEdldHRlciwgQmFz
ZT4oZXhlYywgJkpTVGVzdEN1c3RvbU5hbWVkR2V0dGVyVGFibGUsIHRoaXNPYmplY3QsIHByb3Bl
cnR5TmFtZSwgZGVzY3JpcHRvcik7CiB9CiAKLUpTVmFsdWUganNUZXN0Q3VzdG9tTmFtZWRHZXR0
ZXJDb25zdHJ1Y3RvcihFeGVjU3RhdGUqIGV4ZWMsIEpTVmFsdWUgc2xvdEJhc2UsIGNvbnN0IElk
ZW50aWZpZXImKQorSlNWYWx1ZSBqc1Rlc3RDdXN0b21OYW1lZEdldHRlckNvbnN0cnVjdG9yKEV4
ZWNTdGF0ZSogZXhlYywgSlNWYWx1ZSBzbG90QmFzZSwgUHJvcGVydHlOYW1lKQogewogICAgIEpT
VGVzdEN1c3RvbU5hbWVkR2V0dGVyKiBkb21PYmplY3QgPSBqc0Nhc3Q8SlNUZXN0Q3VzdG9tTmFt
ZWRHZXR0ZXIqPihhc09iamVjdChzbG90QmFzZSkpOwogICAgIHJldHVybiBKU1Rlc3RDdXN0b21O
YW1lZEdldHRlcjo6Z2V0Q29uc3RydWN0b3IoZXhlYywgZG9tT2JqZWN0LT5nbG9iYWxPYmplY3Qo
KSk7CkluZGV4OiBTb3VyY2UvV2ViQ29yZS9iaW5kaW5ncy9zY3JpcHRzL3Rlc3QvSlMvSlNUZXN0
Q3VzdG9tTmFtZWRHZXR0ZXIuaAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2ViQ29yZS9iaW5kaW5n
cy9zY3JpcHRzL3Rlc3QvSlMvSlNUZXN0Q3VzdG9tTmFtZWRHZXR0ZXIuaAkocmV2aXNpb24gMTE2
NjY3KQorKysgU291cmNlL1dlYkNvcmUvYmluZGluZ3Mvc2NyaXB0cy90ZXN0L0pTL0pTVGVzdEN1
c3RvbU5hbWVkR2V0dGVyLmgJKHdvcmtpbmcgY29weSkKQEAgLTQwLDggKzQwLDggQEAgcHVibGlj
OgogICAgIH0KIAogICAgIHN0YXRpYyBKU0M6OkpTT2JqZWN0KiBjcmVhdGVQcm90b3R5cGUoSlND
OjpFeGVjU3RhdGUqLCBKU0M6OkpTR2xvYmFsT2JqZWN0Kik7Ci0gICAgc3RhdGljIGJvb2wgZ2V0
T3duUHJvcGVydHlTbG90KEpTQzo6SlNDZWxsKiwgSlNDOjpFeGVjU3RhdGUqLCBjb25zdCBKU0M6
OklkZW50aWZpZXImIHByb3BlcnR5TmFtZSwgSlNDOjpQcm9wZXJ0eVNsb3QmKTsKLSAgICBzdGF0
aWMgYm9vbCBnZXRPd25Qcm9wZXJ0eURlc2NyaXB0b3IoSlNDOjpKU09iamVjdCosIEpTQzo6RXhl
Y1N0YXRlKiwgY29uc3QgSlNDOjpJZGVudGlmaWVyJiBwcm9wZXJ0eU5hbWUsIEpTQzo6UHJvcGVy
dHlEZXNjcmlwdG9yJik7CisgICAgc3RhdGljIGJvb2wgZ2V0T3duUHJvcGVydHlTbG90KEpTQzo6
SlNDZWxsKiwgSlNDOjpFeGVjU3RhdGUqLCBKU0M6OlByb3BlcnR5TmFtZSwgSlNDOjpQcm9wZXJ0
eVNsb3QmKTsKKyAgICBzdGF0aWMgYm9vbCBnZXRPd25Qcm9wZXJ0eURlc2NyaXB0b3IoSlNDOjpK
U09iamVjdCosIEpTQzo6RXhlY1N0YXRlKiwgSlNDOjpQcm9wZXJ0eU5hbWUsIEpTQzo6UHJvcGVy
dHlEZXNjcmlwdG9yJik7CiAgICAgc3RhdGljIHZvaWQgZGVzdHJveShKU0M6OkpTQ2VsbCopOwog
ICAgIH5KU1Rlc3RDdXN0b21OYW1lZEdldHRlcigpOwogICAgIHN0YXRpYyBjb25zdCBKU0M6OkNs
YXNzSW5mbyBzX2luZm87CkBAIC02NCw4ICs2NCw4IEBAIHByb3RlY3RlZDoKICAgICB2b2lkIGZp
bmlzaENyZWF0aW9uKEpTQzo6SlNHbG9iYWxEYXRhJik7CiAgICAgc3RhdGljIGNvbnN0IHVuc2ln
bmVkIFN0cnVjdHVyZUZsYWdzID0gSlNDOjpPdmVycmlkZXNHZXRPd25Qcm9wZXJ0eVNsb3QgfCBC
YXNlOjpTdHJ1Y3R1cmVGbGFnczsKIHByaXZhdGU6Ci0gICAgc3RhdGljIGJvb2wgY2FuR2V0SXRl
bXNGb3JOYW1lKEpTQzo6RXhlY1N0YXRlKiwgVGVzdEN1c3RvbU5hbWVkR2V0dGVyKiwgY29uc3Qg
SlNDOjpJZGVudGlmaWVyJik7Ci0gICAgc3RhdGljIEpTQzo6SlNWYWx1ZSBuYW1lR2V0dGVyKEpT
Qzo6RXhlY1N0YXRlKiwgSlNDOjpKU1ZhbHVlLCBjb25zdCBKU0M6OklkZW50aWZpZXImKTsKKyAg
ICBzdGF0aWMgYm9vbCBjYW5HZXRJdGVtc0Zvck5hbWUoSlNDOjpFeGVjU3RhdGUqLCBUZXN0Q3Vz
dG9tTmFtZWRHZXR0ZXIqLCBKU0M6OlByb3BlcnR5TmFtZSk7CisgICAgc3RhdGljIEpTQzo6SlNW
YWx1ZSBuYW1lR2V0dGVyKEpTQzo6RXhlY1N0YXRlKiwgSlNDOjpKU1ZhbHVlLCBKU0M6OlByb3Bl
cnR5TmFtZSk7CiB9OwogCiBjbGFzcyBKU1Rlc3RDdXN0b21OYW1lZEdldHRlck93bmVyIDogcHVi
bGljIEpTQzo6V2Vha0hhbmRsZU93bmVyIHsKQEAgLTk5LDggKzk5LDggQEAgcHVibGljOgogICAg
IH0KIAogICAgIHN0YXRpYyBjb25zdCBKU0M6OkNsYXNzSW5mbyBzX2luZm87Ci0gICAgc3RhdGlj
IGJvb2wgZ2V0T3duUHJvcGVydHlTbG90KEpTQzo6SlNDZWxsKiwgSlNDOjpFeGVjU3RhdGUqLCBj
b25zdCBKU0M6OklkZW50aWZpZXImLCBKU0M6OlByb3BlcnR5U2xvdCYpOwotICAgIHN0YXRpYyBi
b29sIGdldE93blByb3BlcnR5RGVzY3JpcHRvcihKU0M6OkpTT2JqZWN0KiwgSlNDOjpFeGVjU3Rh
dGUqLCBjb25zdCBKU0M6OklkZW50aWZpZXImLCBKU0M6OlByb3BlcnR5RGVzY3JpcHRvciYpOwor
ICAgIHN0YXRpYyBib29sIGdldE93blByb3BlcnR5U2xvdChKU0M6OkpTQ2VsbCosIEpTQzo6RXhl
Y1N0YXRlKiwgSlNDOjpQcm9wZXJ0eU5hbWUsIEpTQzo6UHJvcGVydHlTbG90Jik7CisgICAgc3Rh
dGljIGJvb2wgZ2V0T3duUHJvcGVydHlEZXNjcmlwdG9yKEpTQzo6SlNPYmplY3QqLCBKU0M6OkV4
ZWNTdGF0ZSosIEpTQzo6UHJvcGVydHlOYW1lLCBKU0M6OlByb3BlcnR5RGVzY3JpcHRvciYpOwog
ICAgIHN0YXRpYyBKU0M6OlN0cnVjdHVyZSogY3JlYXRlU3RydWN0dXJlKEpTQzo6SlNHbG9iYWxE
YXRhJiBnbG9iYWxEYXRhLCBKU0M6OkpTR2xvYmFsT2JqZWN0KiBnbG9iYWxPYmplY3QsIEpTQzo6
SlNWYWx1ZSBwcm90b3R5cGUpCiAgICAgewogICAgICAgICByZXR1cm4gSlNDOjpTdHJ1Y3R1cmU6
OmNyZWF0ZShnbG9iYWxEYXRhLCBnbG9iYWxPYmplY3QsIHByb3RvdHlwZSwgSlNDOjpUeXBlSW5m
byhKU0M6Ok9iamVjdFR5cGUsIFN0cnVjdHVyZUZsYWdzKSwgJnNfaW5mbyk7CkBAIC0xMjYsOCAr
MTI2LDggQEAgcHVibGljOgogICAgICAgICByZXR1cm4gcHRyOwogICAgIH0KIAotICAgIHN0YXRp
YyBib29sIGdldE93blByb3BlcnR5U2xvdChKU0M6OkpTQ2VsbCosIEpTQzo6RXhlY1N0YXRlKiwg
Y29uc3QgSlNDOjpJZGVudGlmaWVyJiwgSlNDOjpQcm9wZXJ0eVNsb3QmKTsKLSAgICBzdGF0aWMg
Ym9vbCBnZXRPd25Qcm9wZXJ0eURlc2NyaXB0b3IoSlNDOjpKU09iamVjdCosIEpTQzo6RXhlY1N0
YXRlKiwgY29uc3QgSlNDOjpJZGVudGlmaWVyJiwgSlNDOjpQcm9wZXJ0eURlc2NyaXB0b3ImKTsK
KyAgICBzdGF0aWMgYm9vbCBnZXRPd25Qcm9wZXJ0eVNsb3QoSlNDOjpKU0NlbGwqLCBKU0M6OkV4
ZWNTdGF0ZSosIEpTQzo6UHJvcGVydHlOYW1lLCBKU0M6OlByb3BlcnR5U2xvdCYpOworICAgIHN0
YXRpYyBib29sIGdldE93blByb3BlcnR5RGVzY3JpcHRvcihKU0M6OkpTT2JqZWN0KiwgSlNDOjpF
eGVjU3RhdGUqLCBKU0M6OlByb3BlcnR5TmFtZSwgSlNDOjpQcm9wZXJ0eURlc2NyaXB0b3ImKTsK
ICAgICBzdGF0aWMgY29uc3QgSlNDOjpDbGFzc0luZm8gc19pbmZvOwogICAgIHN0YXRpYyBKU0M6
OlN0cnVjdHVyZSogY3JlYXRlU3RydWN0dXJlKEpTQzo6SlNHbG9iYWxEYXRhJiBnbG9iYWxEYXRh
LCBKU0M6OkpTR2xvYmFsT2JqZWN0KiBnbG9iYWxPYmplY3QsIEpTQzo6SlNWYWx1ZSBwcm90b3R5
cGUpCiAgICAgewpAQCAtMTQyLDcgKzE0Miw3IEBAIHByb3RlY3RlZDoKIEpTQzo6RW5jb2RlZEpT
VmFsdWUgSlNDX0hPU1RfQ0FMTCBqc1Rlc3RDdXN0b21OYW1lZEdldHRlclByb3RvdHlwZUZ1bmN0
aW9uQW5vdGhlckZ1bmN0aW9uKEpTQzo6RXhlY1N0YXRlKik7CiAvLyBBdHRyaWJ1dGVzCiAKLUpT
Qzo6SlNWYWx1ZSBqc1Rlc3RDdXN0b21OYW1lZEdldHRlckNvbnN0cnVjdG9yKEpTQzo6RXhlY1N0
YXRlKiwgSlNDOjpKU1ZhbHVlLCBjb25zdCBKU0M6OklkZW50aWZpZXImKTsKK0pTQzo6SlNWYWx1
ZSBqc1Rlc3RDdXN0b21OYW1lZEdldHRlckNvbnN0cnVjdG9yKEpTQzo6RXhlY1N0YXRlKiwgSlND
OjpKU1ZhbHVlLCBKU0M6OlByb3BlcnR5TmFtZSk7CiAKIH0gLy8gbmFtZXNwYWNlIFdlYkNvcmUK
IApJbmRleDogU291cmNlL1dlYkNvcmUvYmluZGluZ3Mvc2NyaXB0cy90ZXN0L0pTL0pTVGVzdEV2
ZW50Q29uc3RydWN0b3IuY3BwCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9XZWJDb3JlL2JpbmRpbmdz
L3NjcmlwdHMvdGVzdC9KUy9KU1Rlc3RFdmVudENvbnN0cnVjdG9yLmNwcAkocmV2aXNpb24gMTE2
NjY3KQorKysgU291cmNlL1dlYkNvcmUvYmluZGluZ3Mvc2NyaXB0cy90ZXN0L0pTL0pTVGVzdEV2
ZW50Q29uc3RydWN0b3IuY3BwCSh3b3JraW5nIGNvcHkpCkBAIC02NywxMiArNjcsMTIgQEAgdm9p
ZCBKU1Rlc3RFdmVudENvbnN0cnVjdG9yQ29uc3RydWN0b3I6OgogICAgIHB1dERpcmVjdChleGVj
LT5nbG9iYWxEYXRhKCksIGV4ZWMtPnByb3BlcnR5TmFtZXMoKS5sZW5ndGgsIGpzTnVtYmVyKDIp
LCBSZWFkT25seSB8IERvbnREZWxldGUgfCBEb250RW51bSk7CiB9CiAKLWJvb2wgSlNUZXN0RXZl
bnRDb25zdHJ1Y3RvckNvbnN0cnVjdG9yOjpnZXRPd25Qcm9wZXJ0eVNsb3QoSlNDZWxsKiBjZWxs
LCBFeGVjU3RhdGUqIGV4ZWMsIGNvbnN0IElkZW50aWZpZXImIHByb3BlcnR5TmFtZSwgUHJvcGVy
dHlTbG90JiBzbG90KQorYm9vbCBKU1Rlc3RFdmVudENvbnN0cnVjdG9yQ29uc3RydWN0b3I6Omdl
dE93blByb3BlcnR5U2xvdChKU0NlbGwqIGNlbGwsIEV4ZWNTdGF0ZSogZXhlYywgUHJvcGVydHlO
YW1lIHByb3BlcnR5TmFtZSwgUHJvcGVydHlTbG90JiBzbG90KQogewogICAgIHJldHVybiBnZXRT
dGF0aWNWYWx1ZVNsb3Q8SlNUZXN0RXZlbnRDb25zdHJ1Y3RvckNvbnN0cnVjdG9yLCBKU0RPTVdy
YXBwZXI+KGV4ZWMsICZKU1Rlc3RFdmVudENvbnN0cnVjdG9yQ29uc3RydWN0b3JUYWJsZSwganND
YXN0PEpTVGVzdEV2ZW50Q29uc3RydWN0b3JDb25zdHJ1Y3Rvcio+KGNlbGwpLCBwcm9wZXJ0eU5h
bWUsIHNsb3QpOwogfQogCi1ib29sIEpTVGVzdEV2ZW50Q29uc3RydWN0b3JDb25zdHJ1Y3Rvcjo6
Z2V0T3duUHJvcGVydHlEZXNjcmlwdG9yKEpTT2JqZWN0KiBvYmplY3QsIEV4ZWNTdGF0ZSogZXhl
YywgY29uc3QgSWRlbnRpZmllciYgcHJvcGVydHlOYW1lLCBQcm9wZXJ0eURlc2NyaXB0b3ImIGRl
c2NyaXB0b3IpCitib29sIEpTVGVzdEV2ZW50Q29uc3RydWN0b3JDb25zdHJ1Y3Rvcjo6Z2V0T3du
UHJvcGVydHlEZXNjcmlwdG9yKEpTT2JqZWN0KiBvYmplY3QsIEV4ZWNTdGF0ZSogZXhlYywgUHJv
cGVydHlOYW1lIHByb3BlcnR5TmFtZSwgUHJvcGVydHlEZXNjcmlwdG9yJiBkZXNjcmlwdG9yKQog
ewogICAgIHJldHVybiBnZXRTdGF0aWNWYWx1ZURlc2NyaXB0b3I8SlNUZXN0RXZlbnRDb25zdHJ1
Y3RvckNvbnN0cnVjdG9yLCBKU0RPTVdyYXBwZXI+KGV4ZWMsICZKU1Rlc3RFdmVudENvbnN0cnVj
dG9yQ29uc3RydWN0b3JUYWJsZSwganNDYXN0PEpTVGVzdEV2ZW50Q29uc3RydWN0b3JDb25zdHJ1
Y3Rvcio+KG9iamVjdCksIHByb3BlcnR5TmFtZSwgZGVzY3JpcHRvcik7CiB9CkBAIC0xNjYsMjEg
KzE2NiwyMSBAQCBKU1Rlc3RFdmVudENvbnN0cnVjdG9yOjp+SlNUZXN0RXZlbnRDb25zCiAgICAg
cmVsZWFzZUltcGxJZk5vdE51bGwoKTsKIH0KIAotYm9vbCBKU1Rlc3RFdmVudENvbnN0cnVjdG9y
OjpnZXRPd25Qcm9wZXJ0eVNsb3QoSlNDZWxsKiBjZWxsLCBFeGVjU3RhdGUqIGV4ZWMsIGNvbnN0
IElkZW50aWZpZXImIHByb3BlcnR5TmFtZSwgUHJvcGVydHlTbG90JiBzbG90KQorYm9vbCBKU1Rl
c3RFdmVudENvbnN0cnVjdG9yOjpnZXRPd25Qcm9wZXJ0eVNsb3QoSlNDZWxsKiBjZWxsLCBFeGVj
U3RhdGUqIGV4ZWMsIFByb3BlcnR5TmFtZSBwcm9wZXJ0eU5hbWUsIFByb3BlcnR5U2xvdCYgc2xv
dCkKIHsKICAgICBKU1Rlc3RFdmVudENvbnN0cnVjdG9yKiB0aGlzT2JqZWN0ID0ganNDYXN0PEpT
VGVzdEV2ZW50Q29uc3RydWN0b3IqPihjZWxsKTsKICAgICBBU1NFUlRfR0NfT0JKRUNUX0lOSEVS
SVRTKHRoaXNPYmplY3QsICZzX2luZm8pOwogICAgIHJldHVybiBnZXRTdGF0aWNWYWx1ZVNsb3Q8
SlNUZXN0RXZlbnRDb25zdHJ1Y3RvciwgQmFzZT4oZXhlYywgJkpTVGVzdEV2ZW50Q29uc3RydWN0
b3JUYWJsZSwgdGhpc09iamVjdCwgcHJvcGVydHlOYW1lLCBzbG90KTsKIH0KIAotYm9vbCBKU1Rl
c3RFdmVudENvbnN0cnVjdG9yOjpnZXRPd25Qcm9wZXJ0eURlc2NyaXB0b3IoSlNPYmplY3QqIG9i
amVjdCwgRXhlY1N0YXRlKiBleGVjLCBjb25zdCBJZGVudGlmaWVyJiBwcm9wZXJ0eU5hbWUsIFBy
b3BlcnR5RGVzY3JpcHRvciYgZGVzY3JpcHRvcikKK2Jvb2wgSlNUZXN0RXZlbnRDb25zdHJ1Y3Rv
cjo6Z2V0T3duUHJvcGVydHlEZXNjcmlwdG9yKEpTT2JqZWN0KiBvYmplY3QsIEV4ZWNTdGF0ZSog
ZXhlYywgUHJvcGVydHlOYW1lIHByb3BlcnR5TmFtZSwgUHJvcGVydHlEZXNjcmlwdG9yJiBkZXNj
cmlwdG9yKQogewogICAgIEpTVGVzdEV2ZW50Q29uc3RydWN0b3IqIHRoaXNPYmplY3QgPSBqc0Nh
c3Q8SlNUZXN0RXZlbnRDb25zdHJ1Y3Rvcio+KG9iamVjdCk7CiAgICAgQVNTRVJUX0dDX09CSkVD
VF9JTkhFUklUUyh0aGlzT2JqZWN0LCAmc19pbmZvKTsKICAgICByZXR1cm4gZ2V0U3RhdGljVmFs
dWVEZXNjcmlwdG9yPEpTVGVzdEV2ZW50Q29uc3RydWN0b3IsIEJhc2U+KGV4ZWMsICZKU1Rlc3RF
dmVudENvbnN0cnVjdG9yVGFibGUsIHRoaXNPYmplY3QsIHByb3BlcnR5TmFtZSwgZGVzY3JpcHRv
cik7CiB9CiAKLUpTVmFsdWUganNUZXN0RXZlbnRDb25zdHJ1Y3RvckF0dHIxKEV4ZWNTdGF0ZSog
ZXhlYywgSlNWYWx1ZSBzbG90QmFzZSwgY29uc3QgSWRlbnRpZmllciYpCitKU1ZhbHVlIGpzVGVz
dEV2ZW50Q29uc3RydWN0b3JBdHRyMShFeGVjU3RhdGUqIGV4ZWMsIEpTVmFsdWUgc2xvdEJhc2Us
IFByb3BlcnR5TmFtZSkKIHsKICAgICBKU1Rlc3RFdmVudENvbnN0cnVjdG9yKiBjYXN0ZWRUaGlz
ID0ganNDYXN0PEpTVGVzdEV2ZW50Q29uc3RydWN0b3IqPihhc09iamVjdChzbG90QmFzZSkpOwog
ICAgIFVOVVNFRF9QQVJBTShleGVjKTsKQEAgLTE5MCw3ICsxOTAsNyBAQCBKU1ZhbHVlIGpzVGVz
dEV2ZW50Q29uc3RydWN0b3JBdHRyMShFeGVjCiB9CiAKIAotSlNWYWx1ZSBqc1Rlc3RFdmVudENv
bnN0cnVjdG9yQXR0cjIoRXhlY1N0YXRlKiBleGVjLCBKU1ZhbHVlIHNsb3RCYXNlLCBjb25zdCBJ
ZGVudGlmaWVyJikKK0pTVmFsdWUganNUZXN0RXZlbnRDb25zdHJ1Y3RvckF0dHIyKEV4ZWNTdGF0
ZSogZXhlYywgSlNWYWx1ZSBzbG90QmFzZSwgUHJvcGVydHlOYW1lKQogewogICAgIEpTVGVzdEV2
ZW50Q29uc3RydWN0b3IqIGNhc3RlZFRoaXMgPSBqc0Nhc3Q8SlNUZXN0RXZlbnRDb25zdHJ1Y3Rv
cio+KGFzT2JqZWN0KHNsb3RCYXNlKSk7CiAgICAgVU5VU0VEX1BBUkFNKGV4ZWMpOwpAQCAtMjAw
LDcgKzIwMCw3IEBAIEpTVmFsdWUganNUZXN0RXZlbnRDb25zdHJ1Y3RvckF0dHIyKEV4ZWMKIH0K
IAogCi1KU1ZhbHVlIGpzVGVzdEV2ZW50Q29uc3RydWN0b3JDb25zdHJ1Y3RvcihFeGVjU3RhdGUq
IGV4ZWMsIEpTVmFsdWUgc2xvdEJhc2UsIGNvbnN0IElkZW50aWZpZXImKQorSlNWYWx1ZSBqc1Rl
c3RFdmVudENvbnN0cnVjdG9yQ29uc3RydWN0b3IoRXhlY1N0YXRlKiBleGVjLCBKU1ZhbHVlIHNs
b3RCYXNlLCBQcm9wZXJ0eU5hbWUpCiB7CiAgICAgSlNUZXN0RXZlbnRDb25zdHJ1Y3RvciogZG9t
T2JqZWN0ID0ganNDYXN0PEpTVGVzdEV2ZW50Q29uc3RydWN0b3IqPihhc09iamVjdChzbG90QmFz
ZSkpOwogICAgIHJldHVybiBKU1Rlc3RFdmVudENvbnN0cnVjdG9yOjpnZXRDb25zdHJ1Y3Rvcihl
eGVjLCBkb21PYmplY3QtPmdsb2JhbE9iamVjdCgpKTsKSW5kZXg6IFNvdXJjZS9XZWJDb3JlL2Jp
bmRpbmdzL3NjcmlwdHMvdGVzdC9KUy9KU1Rlc3RFdmVudENvbnN0cnVjdG9yLmgKPT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PQotLS0gU291cmNlL1dlYkNvcmUvYmluZGluZ3Mvc2NyaXB0cy90ZXN0L0pTL0pTVGVzdEV2ZW50
Q29uc3RydWN0b3IuaAkocmV2aXNpb24gMTE2NjY3KQorKysgU291cmNlL1dlYkNvcmUvYmluZGlu
Z3Mvc2NyaXB0cy90ZXN0L0pTL0pTVGVzdEV2ZW50Q29uc3RydWN0b3IuaAkod29ya2luZyBjb3B5
KQpAQCAtNDIsOCArNDIsOCBAQCBwdWJsaWM6CiAgICAgfQogCiAgICAgc3RhdGljIEpTQzo6SlNP
YmplY3QqIGNyZWF0ZVByb3RvdHlwZShKU0M6OkV4ZWNTdGF0ZSosIEpTQzo6SlNHbG9iYWxPYmpl
Y3QqKTsKLSAgICBzdGF0aWMgYm9vbCBnZXRPd25Qcm9wZXJ0eVNsb3QoSlNDOjpKU0NlbGwqLCBK
U0M6OkV4ZWNTdGF0ZSosIGNvbnN0IEpTQzo6SWRlbnRpZmllciYgcHJvcGVydHlOYW1lLCBKU0M6
OlByb3BlcnR5U2xvdCYpOwotICAgIHN0YXRpYyBib29sIGdldE93blByb3BlcnR5RGVzY3JpcHRv
cihKU0M6OkpTT2JqZWN0KiwgSlNDOjpFeGVjU3RhdGUqLCBjb25zdCBKU0M6OklkZW50aWZpZXIm
IHByb3BlcnR5TmFtZSwgSlNDOjpQcm9wZXJ0eURlc2NyaXB0b3ImKTsKKyAgICBzdGF0aWMgYm9v
bCBnZXRPd25Qcm9wZXJ0eVNsb3QoSlNDOjpKU0NlbGwqLCBKU0M6OkV4ZWNTdGF0ZSosIEpTQzo6
UHJvcGVydHlOYW1lLCBKU0M6OlByb3BlcnR5U2xvdCYpOworICAgIHN0YXRpYyBib29sIGdldE93
blByb3BlcnR5RGVzY3JpcHRvcihKU0M6OkpTT2JqZWN0KiwgSlNDOjpFeGVjU3RhdGUqLCBKU0M6
OlByb3BlcnR5TmFtZSwgSlNDOjpQcm9wZXJ0eURlc2NyaXB0b3ImKTsKICAgICBzdGF0aWMgdm9p
ZCBkZXN0cm95KEpTQzo6SlNDZWxsKik7CiAgICAgfkpTVGVzdEV2ZW50Q29uc3RydWN0b3IoKTsK
ICAgICBzdGF0aWMgY29uc3QgSlNDOjpDbGFzc0luZm8gc19pbmZvOwpAQCAtMTIzLDggKzEyMyw4
IEBAIHB1YmxpYzoKICAgICAgICAgcmV0dXJuIHB0cjsKICAgICB9CiAKLSAgICBzdGF0aWMgYm9v
bCBnZXRPd25Qcm9wZXJ0eVNsb3QoSlNDOjpKU0NlbGwqLCBKU0M6OkV4ZWNTdGF0ZSosIGNvbnN0
IEpTQzo6SWRlbnRpZmllciYsIEpTQzo6UHJvcGVydHlTbG90Jik7Ci0gICAgc3RhdGljIGJvb2wg
Z2V0T3duUHJvcGVydHlEZXNjcmlwdG9yKEpTQzo6SlNPYmplY3QqLCBKU0M6OkV4ZWNTdGF0ZSos
IGNvbnN0IEpTQzo6SWRlbnRpZmllciYsIEpTQzo6UHJvcGVydHlEZXNjcmlwdG9yJik7CisgICAg
c3RhdGljIGJvb2wgZ2V0T3duUHJvcGVydHlTbG90KEpTQzo6SlNDZWxsKiwgSlNDOjpFeGVjU3Rh
dGUqLCBKU0M6OlByb3BlcnR5TmFtZSwgSlNDOjpQcm9wZXJ0eVNsb3QmKTsKKyAgICBzdGF0aWMg
Ym9vbCBnZXRPd25Qcm9wZXJ0eURlc2NyaXB0b3IoSlNDOjpKU09iamVjdCosIEpTQzo6RXhlY1N0
YXRlKiwgSlNDOjpQcm9wZXJ0eU5hbWUsIEpTQzo6UHJvcGVydHlEZXNjcmlwdG9yJik7CiAgICAg
c3RhdGljIGNvbnN0IEpTQzo6Q2xhc3NJbmZvIHNfaW5mbzsKICAgICBzdGF0aWMgSlNDOjpTdHJ1
Y3R1cmUqIGNyZWF0ZVN0cnVjdHVyZShKU0M6OkpTR2xvYmFsRGF0YSYgZ2xvYmFsRGF0YSwgSlND
OjpKU0dsb2JhbE9iamVjdCogZ2xvYmFsT2JqZWN0LCBKU0M6OkpTVmFsdWUgcHJvdG90eXBlKQog
ICAgIHsKQEAgLTE0MCw5ICsxNDAsOSBAQCBib29sIGZpbGxUZXN0RXZlbnRDb25zdHJ1Y3Rvcklu
aXQoVGVzdEV2CiAKIC8vIEF0dHJpYnV0ZXMKIAotSlNDOjpKU1ZhbHVlIGpzVGVzdEV2ZW50Q29u
c3RydWN0b3JBdHRyMShKU0M6OkV4ZWNTdGF0ZSosIEpTQzo6SlNWYWx1ZSwgY29uc3QgSlNDOjpJ
ZGVudGlmaWVyJik7Ci1KU0M6OkpTVmFsdWUganNUZXN0RXZlbnRDb25zdHJ1Y3RvckF0dHIyKEpT
Qzo6RXhlY1N0YXRlKiwgSlNDOjpKU1ZhbHVlLCBjb25zdCBKU0M6OklkZW50aWZpZXImKTsKLUpT
Qzo6SlNWYWx1ZSBqc1Rlc3RFdmVudENvbnN0cnVjdG9yQ29uc3RydWN0b3IoSlNDOjpFeGVjU3Rh
dGUqLCBKU0M6OkpTVmFsdWUsIGNvbnN0IEpTQzo6SWRlbnRpZmllciYpOworSlNDOjpKU1ZhbHVl
IGpzVGVzdEV2ZW50Q29uc3RydWN0b3JBdHRyMShKU0M6OkV4ZWNTdGF0ZSosIEpTQzo6SlNWYWx1
ZSwgSlNDOjpQcm9wZXJ0eU5hbWUpOworSlNDOjpKU1ZhbHVlIGpzVGVzdEV2ZW50Q29uc3RydWN0
b3JBdHRyMihKU0M6OkV4ZWNTdGF0ZSosIEpTQzo6SlNWYWx1ZSwgSlNDOjpQcm9wZXJ0eU5hbWUp
OworSlNDOjpKU1ZhbHVlIGpzVGVzdEV2ZW50Q29uc3RydWN0b3JDb25zdHJ1Y3RvcihKU0M6OkV4
ZWNTdGF0ZSosIEpTQzo6SlNWYWx1ZSwgSlNDOjpQcm9wZXJ0eU5hbWUpOwogCiB9IC8vIG5hbWVz
cGFjZSBXZWJDb3JlCiAKSW5kZXg6IFNvdXJjZS9XZWJDb3JlL2JpbmRpbmdzL3NjcmlwdHMvdGVz
dC9KUy9KU1Rlc3RFdmVudFRhcmdldC5jcHAKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL1dlYkNvcmUv
YmluZGluZ3Mvc2NyaXB0cy90ZXN0L0pTL0pTVGVzdEV2ZW50VGFyZ2V0LmNwcAkocmV2aXNpb24g
MTE2NjY3KQorKysgU291cmNlL1dlYkNvcmUvYmluZGluZ3Mvc2NyaXB0cy90ZXN0L0pTL0pTVGVz
dEV2ZW50VGFyZ2V0LmNwcAkod29ya2luZyBjb3B5KQpAQCAtNzAsMTIgKzcwLDEyIEBAIHZvaWQg
SlNUZXN0RXZlbnRUYXJnZXRDb25zdHJ1Y3Rvcjo6ZmluaXMKICAgICBwdXREaXJlY3QoZXhlYy0+
Z2xvYmFsRGF0YSgpLCBleGVjLT5wcm9wZXJ0eU5hbWVzKCkucHJvdG90eXBlLCBKU1Rlc3RFdmVu
dFRhcmdldFByb3RvdHlwZTo6c2VsZihleGVjLCBnbG9iYWxPYmplY3QpLCBEb250RGVsZXRlIHwg
UmVhZE9ubHkpOwogfQogCi1ib29sIEpTVGVzdEV2ZW50VGFyZ2V0Q29uc3RydWN0b3I6OmdldE93
blByb3BlcnR5U2xvdChKU0NlbGwqIGNlbGwsIEV4ZWNTdGF0ZSogZXhlYywgY29uc3QgSWRlbnRp
ZmllciYgcHJvcGVydHlOYW1lLCBQcm9wZXJ0eVNsb3QmIHNsb3QpCitib29sIEpTVGVzdEV2ZW50
VGFyZ2V0Q29uc3RydWN0b3I6OmdldE93blByb3BlcnR5U2xvdChKU0NlbGwqIGNlbGwsIEV4ZWNT
dGF0ZSogZXhlYywgUHJvcGVydHlOYW1lIHByb3BlcnR5TmFtZSwgUHJvcGVydHlTbG90JiBzbG90
KQogewogICAgIHJldHVybiBnZXRTdGF0aWNWYWx1ZVNsb3Q8SlNUZXN0RXZlbnRUYXJnZXRDb25z
dHJ1Y3RvciwgSlNET01XcmFwcGVyPihleGVjLCAmSlNUZXN0RXZlbnRUYXJnZXRDb25zdHJ1Y3Rv
clRhYmxlLCBqc0Nhc3Q8SlNUZXN0RXZlbnRUYXJnZXRDb25zdHJ1Y3Rvcio+KGNlbGwpLCBwcm9w
ZXJ0eU5hbWUsIHNsb3QpOwogfQogCi1ib29sIEpTVGVzdEV2ZW50VGFyZ2V0Q29uc3RydWN0b3I6
OmdldE93blByb3BlcnR5RGVzY3JpcHRvcihKU09iamVjdCogb2JqZWN0LCBFeGVjU3RhdGUqIGV4
ZWMsIGNvbnN0IElkZW50aWZpZXImIHByb3BlcnR5TmFtZSwgUHJvcGVydHlEZXNjcmlwdG9yJiBk
ZXNjcmlwdG9yKQorYm9vbCBKU1Rlc3RFdmVudFRhcmdldENvbnN0cnVjdG9yOjpnZXRPd25Qcm9w
ZXJ0eURlc2NyaXB0b3IoSlNPYmplY3QqIG9iamVjdCwgRXhlY1N0YXRlKiBleGVjLCBQcm9wZXJ0
eU5hbWUgcHJvcGVydHlOYW1lLCBQcm9wZXJ0eURlc2NyaXB0b3ImIGRlc2NyaXB0b3IpCiB7CiAg
ICAgcmV0dXJuIGdldFN0YXRpY1ZhbHVlRGVzY3JpcHRvcjxKU1Rlc3RFdmVudFRhcmdldENvbnN0
cnVjdG9yLCBKU0RPTVdyYXBwZXI+KGV4ZWMsICZKU1Rlc3RFdmVudFRhcmdldENvbnN0cnVjdG9y
VGFibGUsIGpzQ2FzdDxKU1Rlc3RFdmVudFRhcmdldENvbnN0cnVjdG9yKj4ob2JqZWN0KSwgcHJv
cGVydHlOYW1lLCBkZXNjcmlwdG9yKTsKIH0KQEAgLTk5LDEzICs5OSwxMyBAQCBKU09iamVjdCog
SlNUZXN0RXZlbnRUYXJnZXRQcm90b3R5cGU6OnNlCiAgICAgcmV0dXJuIGdldERPTVByb3RvdHlw
ZTxKU1Rlc3RFdmVudFRhcmdldD4oZXhlYywgZ2xvYmFsT2JqZWN0KTsKIH0KIAotYm9vbCBKU1Rl
c3RFdmVudFRhcmdldFByb3RvdHlwZTo6Z2V0T3duUHJvcGVydHlTbG90KEpTQ2VsbCogY2VsbCwg
RXhlY1N0YXRlKiBleGVjLCBjb25zdCBJZGVudGlmaWVyJiBwcm9wZXJ0eU5hbWUsIFByb3BlcnR5
U2xvdCYgc2xvdCkKK2Jvb2wgSlNUZXN0RXZlbnRUYXJnZXRQcm90b3R5cGU6OmdldE93blByb3Bl
cnR5U2xvdChKU0NlbGwqIGNlbGwsIEV4ZWNTdGF0ZSogZXhlYywgUHJvcGVydHlOYW1lIHByb3Bl
cnR5TmFtZSwgUHJvcGVydHlTbG90JiBzbG90KQogewogICAgIEpTVGVzdEV2ZW50VGFyZ2V0UHJv
dG90eXBlKiB0aGlzT2JqZWN0ID0ganNDYXN0PEpTVGVzdEV2ZW50VGFyZ2V0UHJvdG90eXBlKj4o
Y2VsbCk7CiAgICAgcmV0dXJuIGdldFN0YXRpY0Z1bmN0aW9uU2xvdDxKU09iamVjdD4oZXhlYywg
JkpTVGVzdEV2ZW50VGFyZ2V0UHJvdG90eXBlVGFibGUsIHRoaXNPYmplY3QsIHByb3BlcnR5TmFt
ZSwgc2xvdCk7CiB9CiAKLWJvb2wgSlNUZXN0RXZlbnRUYXJnZXRQcm90b3R5cGU6OmdldE93blBy
b3BlcnR5RGVzY3JpcHRvcihKU09iamVjdCogb2JqZWN0LCBFeGVjU3RhdGUqIGV4ZWMsIGNvbnN0
IElkZW50aWZpZXImIHByb3BlcnR5TmFtZSwgUHJvcGVydHlEZXNjcmlwdG9yJiBkZXNjcmlwdG9y
KQorYm9vbCBKU1Rlc3RFdmVudFRhcmdldFByb3RvdHlwZTo6Z2V0T3duUHJvcGVydHlEZXNjcmlw
dG9yKEpTT2JqZWN0KiBvYmplY3QsIEV4ZWNTdGF0ZSogZXhlYywgUHJvcGVydHlOYW1lIHByb3Bl
cnR5TmFtZSwgUHJvcGVydHlEZXNjcmlwdG9yJiBkZXNjcmlwdG9yKQogewogICAgIEpTVGVzdEV2
ZW50VGFyZ2V0UHJvdG90eXBlKiB0aGlzT2JqZWN0ID0ganNDYXN0PEpTVGVzdEV2ZW50VGFyZ2V0
UHJvdG90eXBlKj4ob2JqZWN0KTsKICAgICByZXR1cm4gZ2V0U3RhdGljRnVuY3Rpb25EZXNjcmlw
dG9yPEpTT2JqZWN0PihleGVjLCAmSlNUZXN0RXZlbnRUYXJnZXRQcm90b3R5cGVUYWJsZSwgdGhp
c09iamVjdCwgcHJvcGVydHlOYW1lLCBkZXNjcmlwdG9yKTsKQEAgLTE0MSw3ICsxNDEsNyBAQCBK
U1Rlc3RFdmVudFRhcmdldDo6fkpTVGVzdEV2ZW50VGFyZ2V0KCkKICAgICByZWxlYXNlSW1wbElm
Tm90TnVsbCgpOwogfQogCi1ib29sIEpTVGVzdEV2ZW50VGFyZ2V0OjpnZXRPd25Qcm9wZXJ0eVNs
b3QoSlNDZWxsKiBjZWxsLCBFeGVjU3RhdGUqIGV4ZWMsIGNvbnN0IElkZW50aWZpZXImIHByb3Bl
cnR5TmFtZSwgUHJvcGVydHlTbG90JiBzbG90KQorYm9vbCBKU1Rlc3RFdmVudFRhcmdldDo6Z2V0
T3duUHJvcGVydHlTbG90KEpTQ2VsbCogY2VsbCwgRXhlY1N0YXRlKiBleGVjLCBQcm9wZXJ0eU5h
bWUgcHJvcGVydHlOYW1lLCBQcm9wZXJ0eVNsb3QmIHNsb3QpCiB7CiAgICAgSlNUZXN0RXZlbnRU
YXJnZXQqIHRoaXNPYmplY3QgPSBqc0Nhc3Q8SlNUZXN0RXZlbnRUYXJnZXQqPihjZWxsKTsKICAg
ICBBU1NFUlRfR0NfT0JKRUNUX0lOSEVSSVRTKHRoaXNPYmplY3QsICZzX2luZm8pOwpAQCAtMTYz
LDcgKzE2Myw3IEBAIGJvb2wgSlNUZXN0RXZlbnRUYXJnZXQ6OmdldE93blByb3BlcnR5U2wKICAg
ICByZXR1cm4gZ2V0U3RhdGljVmFsdWVTbG90PEpTVGVzdEV2ZW50VGFyZ2V0LCBCYXNlPihleGVj
LCAmSlNUZXN0RXZlbnRUYXJnZXRUYWJsZSwgdGhpc09iamVjdCwgcHJvcGVydHlOYW1lLCBzbG90
KTsKIH0KIAotYm9vbCBKU1Rlc3RFdmVudFRhcmdldDo6Z2V0T3duUHJvcGVydHlEZXNjcmlwdG9y
KEpTT2JqZWN0KiBvYmplY3QsIEV4ZWNTdGF0ZSogZXhlYywgY29uc3QgSWRlbnRpZmllciYgcHJv
cGVydHlOYW1lLCBQcm9wZXJ0eURlc2NyaXB0b3ImIGRlc2NyaXB0b3IpCitib29sIEpTVGVzdEV2
ZW50VGFyZ2V0OjpnZXRPd25Qcm9wZXJ0eURlc2NyaXB0b3IoSlNPYmplY3QqIG9iamVjdCwgRXhl
Y1N0YXRlKiBleGVjLCBQcm9wZXJ0eU5hbWUgcHJvcGVydHlOYW1lLCBQcm9wZXJ0eURlc2NyaXB0
b3ImIGRlc2NyaXB0b3IpCiB7CiAgICAgSlNUZXN0RXZlbnRUYXJnZXQqIHRoaXNPYmplY3QgPSBq
c0Nhc3Q8SlNUZXN0RXZlbnRUYXJnZXQqPihvYmplY3QpOwogICAgIEFTU0VSVF9HQ19PQkpFQ1Rf
SU5IRVJJVFModGhpc09iamVjdCwgJnNfaW5mbyk7CkBAIC0yMDIsNyArMjAyLDcgQEAgYm9vbCBK
U1Rlc3RFdmVudFRhcmdldDo6Z2V0T3duUHJvcGVydHlTbAogICAgIHJldHVybiB0aGlzT2JqZWN0
LT5tZXRob2RUYWJsZSgpLT5nZXRPd25Qcm9wZXJ0eVNsb3QodGhpc09iamVjdCwgZXhlYywgSWRl
bnRpZmllcjo6ZnJvbShleGVjLCBwcm9wZXJ0eU5hbWUpLCBzbG90KTsKIH0KIAotSlNWYWx1ZSBq
c1Rlc3RFdmVudFRhcmdldENvbnN0cnVjdG9yKEV4ZWNTdGF0ZSogZXhlYywgSlNWYWx1ZSBzbG90
QmFzZSwgY29uc3QgSWRlbnRpZmllciYpCitKU1ZhbHVlIGpzVGVzdEV2ZW50VGFyZ2V0Q29uc3Ry
dWN0b3IoRXhlY1N0YXRlKiBleGVjLCBKU1ZhbHVlIHNsb3RCYXNlLCBQcm9wZXJ0eU5hbWUpCiB7
CiAgICAgSlNUZXN0RXZlbnRUYXJnZXQqIGRvbU9iamVjdCA9IGpzQ2FzdDxKU1Rlc3RFdmVudFRh
cmdldCo+KGFzT2JqZWN0KHNsb3RCYXNlKSk7CiAgICAgcmV0dXJuIEpTVGVzdEV2ZW50VGFyZ2V0
OjpnZXRDb25zdHJ1Y3RvcihleGVjLCBkb21PYmplY3QtPmdsb2JhbE9iamVjdCgpKTsKSW5kZXg6
IFNvdXJjZS9XZWJDb3JlL2JpbmRpbmdzL3NjcmlwdHMvdGVzdC9KUy9KU1Rlc3RFdmVudFRhcmdl
dC5oCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9XZWJDb3JlL2JpbmRpbmdzL3NjcmlwdHMvdGVzdC9K
Uy9KU1Rlc3RFdmVudFRhcmdldC5oCShyZXZpc2lvbiAxMTY2NjcpCisrKyBTb3VyY2UvV2ViQ29y
ZS9iaW5kaW5ncy9zY3JpcHRzL3Rlc3QvSlMvSlNUZXN0RXZlbnRUYXJnZXQuaAkod29ya2luZyBj
b3B5KQpAQCAtNDAsOCArNDAsOCBAQCBwdWJsaWM6CiAgICAgfQogCiAgICAgc3RhdGljIEpTQzo6
SlNPYmplY3QqIGNyZWF0ZVByb3RvdHlwZShKU0M6OkV4ZWNTdGF0ZSosIEpTQzo6SlNHbG9iYWxP
YmplY3QqKTsKLSAgICBzdGF0aWMgYm9vbCBnZXRPd25Qcm9wZXJ0eVNsb3QoSlNDOjpKU0NlbGwq
LCBKU0M6OkV4ZWNTdGF0ZSosIGNvbnN0IEpTQzo6SWRlbnRpZmllciYgcHJvcGVydHlOYW1lLCBK
U0M6OlByb3BlcnR5U2xvdCYpOwotICAgIHN0YXRpYyBib29sIGdldE93blByb3BlcnR5RGVzY3Jp
cHRvcihKU0M6OkpTT2JqZWN0KiwgSlNDOjpFeGVjU3RhdGUqLCBjb25zdCBKU0M6OklkZW50aWZp
ZXImIHByb3BlcnR5TmFtZSwgSlNDOjpQcm9wZXJ0eURlc2NyaXB0b3ImKTsKKyAgICBzdGF0aWMg
Ym9vbCBnZXRPd25Qcm9wZXJ0eVNsb3QoSlNDOjpKU0NlbGwqLCBKU0M6OkV4ZWNTdGF0ZSosIEpT
Qzo6UHJvcGVydHlOYW1lLCBKU0M6OlByb3BlcnR5U2xvdCYpOworICAgIHN0YXRpYyBib29sIGdl
dE93blByb3BlcnR5RGVzY3JpcHRvcihKU0M6OkpTT2JqZWN0KiwgSlNDOjpFeGVjU3RhdGUqLCBK
U0M6OlByb3BlcnR5TmFtZSwgSlNDOjpQcm9wZXJ0eURlc2NyaXB0b3ImKTsKICAgICBzdGF0aWMg
Ym9vbCBnZXRPd25Qcm9wZXJ0eVNsb3RCeUluZGV4KEpTQzo6SlNDZWxsKiwgSlNDOjpFeGVjU3Rh
dGUqLCB1bnNpZ25lZCBwcm9wZXJ0eU5hbWUsIEpTQzo6UHJvcGVydHlTbG90Jik7CiAgICAgc3Rh
dGljIHZvaWQgZGVzdHJveShKU0M6OkpTQ2VsbCopOwogICAgIH5KU1Rlc3RFdmVudFRhcmdldCgp
OwpAQCAtNjksOCArNjksOCBAQCBwcm90ZWN0ZWQ6CiAgICAgc3RhdGljIGNvbnN0IHVuc2lnbmVk
IFN0cnVjdHVyZUZsYWdzID0gSlNDOjpPdmVycmlkZXNHZXRQcm9wZXJ0eU5hbWVzIHwgSlNDOjpP
dmVycmlkZXNHZXRPd25Qcm9wZXJ0eVNsb3QgfCBKU0M6Ok92ZXJyaWRlc1Zpc2l0Q2hpbGRyZW4g
fCBKU0M6Ok1hc3F1ZXJhZGVzQXNVbmRlZmluZWQgfCBCYXNlOjpTdHJ1Y3R1cmVGbGFnczsKICAg
ICBzdGF0aWMgSlNDOjpKU1ZhbHVlIGluZGV4R2V0dGVyKEpTQzo6RXhlY1N0YXRlKiwgSlNDOjpK
U1ZhbHVlLCB1bnNpZ25lZCk7CiBwcml2YXRlOgotICAgIHN0YXRpYyBib29sIGNhbkdldEl0ZW1z
Rm9yTmFtZShKU0M6OkV4ZWNTdGF0ZSosIFRlc3RFdmVudFRhcmdldCosIGNvbnN0IEpTQzo6SWRl
bnRpZmllciYpOwotICAgIHN0YXRpYyBKU0M6OkpTVmFsdWUgbmFtZUdldHRlcihKU0M6OkV4ZWNT
dGF0ZSosIEpTQzo6SlNWYWx1ZSwgY29uc3QgSlNDOjpJZGVudGlmaWVyJik7CisgICAgc3RhdGlj
IGJvb2wgY2FuR2V0SXRlbXNGb3JOYW1lKEpTQzo6RXhlY1N0YXRlKiwgVGVzdEV2ZW50VGFyZ2V0
KiwgSlNDOjpQcm9wZXJ0eU5hbWUpOworICAgIHN0YXRpYyBKU0M6OkpTVmFsdWUgbmFtZUdldHRl
cihKU0M6OkV4ZWNTdGF0ZSosIEpTQzo6SlNWYWx1ZSwgSlNDOjpQcm9wZXJ0eU5hbWUpOwogfTsK
IAogY2xhc3MgSlNUZXN0RXZlbnRUYXJnZXRPd25lciA6IHB1YmxpYyBKU0M6OldlYWtIYW5kbGVP
d25lciB7CkBAIC0xMDQsOCArMTA0LDggQEAgcHVibGljOgogICAgIH0KIAogICAgIHN0YXRpYyBj
b25zdCBKU0M6OkNsYXNzSW5mbyBzX2luZm87Ci0gICAgc3RhdGljIGJvb2wgZ2V0T3duUHJvcGVy
dHlTbG90KEpTQzo6SlNDZWxsKiwgSlNDOjpFeGVjU3RhdGUqLCBjb25zdCBKU0M6OklkZW50aWZp
ZXImLCBKU0M6OlByb3BlcnR5U2xvdCYpOwotICAgIHN0YXRpYyBib29sIGdldE93blByb3BlcnR5
RGVzY3JpcHRvcihKU0M6OkpTT2JqZWN0KiwgSlNDOjpFeGVjU3RhdGUqLCBjb25zdCBKU0M6Oklk
ZW50aWZpZXImLCBKU0M6OlByb3BlcnR5RGVzY3JpcHRvciYpOworICAgIHN0YXRpYyBib29sIGdl
dE93blByb3BlcnR5U2xvdChKU0M6OkpTQ2VsbCosIEpTQzo6RXhlY1N0YXRlKiwgSlNDOjpQcm9w
ZXJ0eU5hbWUsIEpTQzo6UHJvcGVydHlTbG90Jik7CisgICAgc3RhdGljIGJvb2wgZ2V0T3duUHJv
cGVydHlEZXNjcmlwdG9yKEpTQzo6SlNPYmplY3QqLCBKU0M6OkV4ZWNTdGF0ZSosIEpTQzo6UHJv
cGVydHlOYW1lLCBKU0M6OlByb3BlcnR5RGVzY3JpcHRvciYpOwogICAgIHN0YXRpYyBKU0M6OlN0
cnVjdHVyZSogY3JlYXRlU3RydWN0dXJlKEpTQzo6SlNHbG9iYWxEYXRhJiBnbG9iYWxEYXRhLCBK
U0M6OkpTR2xvYmFsT2JqZWN0KiBnbG9iYWxPYmplY3QsIEpTQzo6SlNWYWx1ZSBwcm90b3R5cGUp
CiAgICAgewogICAgICAgICByZXR1cm4gSlNDOjpTdHJ1Y3R1cmU6OmNyZWF0ZShnbG9iYWxEYXRh
LCBnbG9iYWxPYmplY3QsIHByb3RvdHlwZSwgSlNDOjpUeXBlSW5mbyhKU0M6Ok9iamVjdFR5cGUs
IFN0cnVjdHVyZUZsYWdzKSwgJnNfaW5mbyk7CkBAIC0xMzEsOCArMTMxLDggQEAgcHVibGljOgog
ICAgICAgICByZXR1cm4gcHRyOwogICAgIH0KIAotICAgIHN0YXRpYyBib29sIGdldE93blByb3Bl
cnR5U2xvdChKU0M6OkpTQ2VsbCosIEpTQzo6RXhlY1N0YXRlKiwgY29uc3QgSlNDOjpJZGVudGlm
aWVyJiwgSlNDOjpQcm9wZXJ0eVNsb3QmKTsKLSAgICBzdGF0aWMgYm9vbCBnZXRPd25Qcm9wZXJ0
eURlc2NyaXB0b3IoSlNDOjpKU09iamVjdCosIEpTQzo6RXhlY1N0YXRlKiwgY29uc3QgSlNDOjpJ
ZGVudGlmaWVyJiwgSlNDOjpQcm9wZXJ0eURlc2NyaXB0b3ImKTsKKyAgICBzdGF0aWMgYm9vbCBn
ZXRPd25Qcm9wZXJ0eVNsb3QoSlNDOjpKU0NlbGwqLCBKU0M6OkV4ZWNTdGF0ZSosIEpTQzo6UHJv
cGVydHlOYW1lLCBKU0M6OlByb3BlcnR5U2xvdCYpOworICAgIHN0YXRpYyBib29sIGdldE93blBy
b3BlcnR5RGVzY3JpcHRvcihKU0M6OkpTT2JqZWN0KiwgSlNDOjpFeGVjU3RhdGUqLCBKU0M6OlBy
b3BlcnR5TmFtZSwgSlNDOjpQcm9wZXJ0eURlc2NyaXB0b3ImKTsKICAgICBzdGF0aWMgY29uc3Qg
SlNDOjpDbGFzc0luZm8gc19pbmZvOwogICAgIHN0YXRpYyBKU0M6OlN0cnVjdHVyZSogY3JlYXRl
U3RydWN0dXJlKEpTQzo6SlNHbG9iYWxEYXRhJiBnbG9iYWxEYXRhLCBKU0M6OkpTR2xvYmFsT2Jq
ZWN0KiBnbG9iYWxPYmplY3QsIEpTQzo6SlNWYWx1ZSBwcm90b3R5cGUpCiAgICAgewpAQCAtMTUw
LDcgKzE1MCw3IEBAIEpTQzo6RW5jb2RlZEpTVmFsdWUgSlNDX0hPU1RfQ0FMTCBqc1Rlc3QKIEpT
Qzo6RW5jb2RlZEpTVmFsdWUgSlNDX0hPU1RfQ0FMTCBqc1Rlc3RFdmVudFRhcmdldFByb3RvdHlw
ZUZ1bmN0aW9uRGlzcGF0Y2hFdmVudChKU0M6OkV4ZWNTdGF0ZSopOwogLy8gQXR0cmlidXRlcwog
Ci1KU0M6OkpTVmFsdWUganNUZXN0RXZlbnRUYXJnZXRDb25zdHJ1Y3RvcihKU0M6OkV4ZWNTdGF0
ZSosIEpTQzo6SlNWYWx1ZSwgY29uc3QgSlNDOjpJZGVudGlmaWVyJik7CitKU0M6OkpTVmFsdWUg
anNUZXN0RXZlbnRUYXJnZXRDb25zdHJ1Y3RvcihKU0M6OkV4ZWNTdGF0ZSosIEpTQzo6SlNWYWx1
ZSwgSlNDOjpQcm9wZXJ0eU5hbWUpOwogCiB9IC8vIG5hbWVzcGFjZSBXZWJDb3JlCiAKSW5kZXg6
IFNvdXJjZS9XZWJDb3JlL2JpbmRpbmdzL3NjcmlwdHMvdGVzdC9KUy9KU1Rlc3RFeGNlcHRpb24u
Y3BwCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9XZWJDb3JlL2JpbmRpbmdzL3NjcmlwdHMvdGVzdC9K
Uy9KU1Rlc3RFeGNlcHRpb24uY3BwCShyZXZpc2lvbiAxMTY2NjcpCisrKyBTb3VyY2UvV2ViQ29y
ZS9iaW5kaW5ncy9zY3JpcHRzL3Rlc3QvSlMvSlNUZXN0RXhjZXB0aW9uLmNwcAkod29ya2luZyBj
b3B5KQpAQCAtNjMsMTIgKzYzLDEyIEBAIHZvaWQgSlNUZXN0RXhjZXB0aW9uQ29uc3RydWN0b3I6
OmZpbmlzaEMKICAgICBwdXREaXJlY3QoZXhlYy0+Z2xvYmFsRGF0YSgpLCBleGVjLT5wcm9wZXJ0
eU5hbWVzKCkucHJvdG90eXBlLCBKU1Rlc3RFeGNlcHRpb25Qcm90b3R5cGU6OnNlbGYoZXhlYywg
Z2xvYmFsT2JqZWN0KSwgRG9udERlbGV0ZSB8IFJlYWRPbmx5KTsKIH0KIAotYm9vbCBKU1Rlc3RF
eGNlcHRpb25Db25zdHJ1Y3Rvcjo6Z2V0T3duUHJvcGVydHlTbG90KEpTQ2VsbCogY2VsbCwgRXhl
Y1N0YXRlKiBleGVjLCBjb25zdCBJZGVudGlmaWVyJiBwcm9wZXJ0eU5hbWUsIFByb3BlcnR5U2xv
dCYgc2xvdCkKK2Jvb2wgSlNUZXN0RXhjZXB0aW9uQ29uc3RydWN0b3I6OmdldE93blByb3BlcnR5
U2xvdChKU0NlbGwqIGNlbGwsIEV4ZWNTdGF0ZSogZXhlYywgUHJvcGVydHlOYW1lIHByb3BlcnR5
TmFtZSwgUHJvcGVydHlTbG90JiBzbG90KQogewogICAgIHJldHVybiBnZXRTdGF0aWNWYWx1ZVNs
b3Q8SlNUZXN0RXhjZXB0aW9uQ29uc3RydWN0b3IsIEpTRE9NV3JhcHBlcj4oZXhlYywgJkpTVGVz
dEV4Y2VwdGlvbkNvbnN0cnVjdG9yVGFibGUsIGpzQ2FzdDxKU1Rlc3RFeGNlcHRpb25Db25zdHJ1
Y3Rvcio+KGNlbGwpLCBwcm9wZXJ0eU5hbWUsIHNsb3QpOwogfQogCi1ib29sIEpTVGVzdEV4Y2Vw
dGlvbkNvbnN0cnVjdG9yOjpnZXRPd25Qcm9wZXJ0eURlc2NyaXB0b3IoSlNPYmplY3QqIG9iamVj
dCwgRXhlY1N0YXRlKiBleGVjLCBjb25zdCBJZGVudGlmaWVyJiBwcm9wZXJ0eU5hbWUsIFByb3Bl
cnR5RGVzY3JpcHRvciYgZGVzY3JpcHRvcikKK2Jvb2wgSlNUZXN0RXhjZXB0aW9uQ29uc3RydWN0
b3I6OmdldE93blByb3BlcnR5RGVzY3JpcHRvcihKU09iamVjdCogb2JqZWN0LCBFeGVjU3RhdGUq
IGV4ZWMsIFByb3BlcnR5TmFtZSBwcm9wZXJ0eU5hbWUsIFByb3BlcnR5RGVzY3JpcHRvciYgZGVz
Y3JpcHRvcikKIHsKICAgICByZXR1cm4gZ2V0U3RhdGljVmFsdWVEZXNjcmlwdG9yPEpTVGVzdEV4
Y2VwdGlvbkNvbnN0cnVjdG9yLCBKU0RPTVdyYXBwZXI+KGV4ZWMsICZKU1Rlc3RFeGNlcHRpb25D
b25zdHJ1Y3RvclRhYmxlLCBqc0Nhc3Q8SlNUZXN0RXhjZXB0aW9uQ29uc3RydWN0b3IqPihvYmpl
Y3QpLCBwcm9wZXJ0eU5hbWUsIGRlc2NyaXB0b3IpOwogfQpAQCAtMTE4LDIxICsxMTgsMjEgQEAg
SlNUZXN0RXhjZXB0aW9uOjp+SlNUZXN0RXhjZXB0aW9uKCkKICAgICByZWxlYXNlSW1wbElmTm90
TnVsbCgpOwogfQogCi1ib29sIEpTVGVzdEV4Y2VwdGlvbjo6Z2V0T3duUHJvcGVydHlTbG90KEpT
Q2VsbCogY2VsbCwgRXhlY1N0YXRlKiBleGVjLCBjb25zdCBJZGVudGlmaWVyJiBwcm9wZXJ0eU5h
bWUsIFByb3BlcnR5U2xvdCYgc2xvdCkKK2Jvb2wgSlNUZXN0RXhjZXB0aW9uOjpnZXRPd25Qcm9w
ZXJ0eVNsb3QoSlNDZWxsKiBjZWxsLCBFeGVjU3RhdGUqIGV4ZWMsIFByb3BlcnR5TmFtZSBwcm9w
ZXJ0eU5hbWUsIFByb3BlcnR5U2xvdCYgc2xvdCkKIHsKICAgICBKU1Rlc3RFeGNlcHRpb24qIHRo
aXNPYmplY3QgPSBqc0Nhc3Q8SlNUZXN0RXhjZXB0aW9uKj4oY2VsbCk7CiAgICAgQVNTRVJUX0dD
X09CSkVDVF9JTkhFUklUUyh0aGlzT2JqZWN0LCAmc19pbmZvKTsKICAgICByZXR1cm4gZ2V0U3Rh
dGljVmFsdWVTbG90PEpTVGVzdEV4Y2VwdGlvbiwgQmFzZT4oZXhlYywgJkpTVGVzdEV4Y2VwdGlv
blRhYmxlLCB0aGlzT2JqZWN0LCBwcm9wZXJ0eU5hbWUsIHNsb3QpOwogfQogCi1ib29sIEpTVGVz
dEV4Y2VwdGlvbjo6Z2V0T3duUHJvcGVydHlEZXNjcmlwdG9yKEpTT2JqZWN0KiBvYmplY3QsIEV4
ZWNTdGF0ZSogZXhlYywgY29uc3QgSWRlbnRpZmllciYgcHJvcGVydHlOYW1lLCBQcm9wZXJ0eURl
c2NyaXB0b3ImIGRlc2NyaXB0b3IpCitib29sIEpTVGVzdEV4Y2VwdGlvbjo6Z2V0T3duUHJvcGVy
dHlEZXNjcmlwdG9yKEpTT2JqZWN0KiBvYmplY3QsIEV4ZWNTdGF0ZSogZXhlYywgUHJvcGVydHlO
YW1lIHByb3BlcnR5TmFtZSwgUHJvcGVydHlEZXNjcmlwdG9yJiBkZXNjcmlwdG9yKQogewogICAg
IEpTVGVzdEV4Y2VwdGlvbiogdGhpc09iamVjdCA9IGpzQ2FzdDxKU1Rlc3RFeGNlcHRpb24qPihv
YmplY3QpOwogICAgIEFTU0VSVF9HQ19PQkpFQ1RfSU5IRVJJVFModGhpc09iamVjdCwgJnNfaW5m
byk7CiAgICAgcmV0dXJuIGdldFN0YXRpY1ZhbHVlRGVzY3JpcHRvcjxKU1Rlc3RFeGNlcHRpb24s
IEJhc2U+KGV4ZWMsICZKU1Rlc3RFeGNlcHRpb25UYWJsZSwgdGhpc09iamVjdCwgcHJvcGVydHlO
YW1lLCBkZXNjcmlwdG9yKTsKIH0KIAotSlNWYWx1ZSBqc1Rlc3RFeGNlcHRpb25OYW1lKEV4ZWNT
dGF0ZSogZXhlYywgSlNWYWx1ZSBzbG90QmFzZSwgY29uc3QgSWRlbnRpZmllciYpCitKU1ZhbHVl
IGpzVGVzdEV4Y2VwdGlvbk5hbWUoRXhlY1N0YXRlKiBleGVjLCBKU1ZhbHVlIHNsb3RCYXNlLCBQ
cm9wZXJ0eU5hbWUpCiB7CiAgICAgSlNUZXN0RXhjZXB0aW9uKiBjYXN0ZWRUaGlzID0ganNDYXN0
PEpTVGVzdEV4Y2VwdGlvbio+KGFzT2JqZWN0KHNsb3RCYXNlKSk7CiAgICAgVU5VU0VEX1BBUkFN
KGV4ZWMpOwpAQCAtMTQyLDcgKzE0Miw3IEBAIEpTVmFsdWUganNUZXN0RXhjZXB0aW9uTmFtZShF
eGVjU3RhdGUqIGUKIH0KIAogCi1KU1ZhbHVlIGpzVGVzdEV4Y2VwdGlvbkNvbnN0cnVjdG9yKEV4
ZWNTdGF0ZSogZXhlYywgSlNWYWx1ZSBzbG90QmFzZSwgY29uc3QgSWRlbnRpZmllciYpCitKU1Zh
bHVlIGpzVGVzdEV4Y2VwdGlvbkNvbnN0cnVjdG9yKEV4ZWNTdGF0ZSogZXhlYywgSlNWYWx1ZSBz
bG90QmFzZSwgUHJvcGVydHlOYW1lKQogewogICAgIEpTVGVzdEV4Y2VwdGlvbiogZG9tT2JqZWN0
ID0ganNDYXN0PEpTVGVzdEV4Y2VwdGlvbio+KGFzT2JqZWN0KHNsb3RCYXNlKSk7CiAgICAgcmV0
dXJuIEpTVGVzdEV4Y2VwdGlvbjo6Z2V0Q29uc3RydWN0b3IoZXhlYywgZG9tT2JqZWN0LT5nbG9i
YWxPYmplY3QoKSk7CkluZGV4OiBTb3VyY2UvV2ViQ29yZS9iaW5kaW5ncy9zY3JpcHRzL3Rlc3Qv
SlMvSlNUZXN0RXhjZXB0aW9uLmgKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL1dlYkNvcmUvYmluZGlu
Z3Mvc2NyaXB0cy90ZXN0L0pTL0pTVGVzdEV4Y2VwdGlvbi5oCShyZXZpc2lvbiAxMTY2NjcpCisr
KyBTb3VyY2UvV2ViQ29yZS9iaW5kaW5ncy9zY3JpcHRzL3Rlc3QvSlMvSlNUZXN0RXhjZXB0aW9u
LmgJKHdvcmtpbmcgY29weSkKQEAgLTQwLDggKzQwLDggQEAgcHVibGljOgogICAgIH0KIAogICAg
IHN0YXRpYyBKU0M6OkpTT2JqZWN0KiBjcmVhdGVQcm90b3R5cGUoSlNDOjpFeGVjU3RhdGUqLCBK
U0M6OkpTR2xvYmFsT2JqZWN0Kik7Ci0gICAgc3RhdGljIGJvb2wgZ2V0T3duUHJvcGVydHlTbG90
KEpTQzo6SlNDZWxsKiwgSlNDOjpFeGVjU3RhdGUqLCBjb25zdCBKU0M6OklkZW50aWZpZXImIHBy
b3BlcnR5TmFtZSwgSlNDOjpQcm9wZXJ0eVNsb3QmKTsKLSAgICBzdGF0aWMgYm9vbCBnZXRPd25Q
cm9wZXJ0eURlc2NyaXB0b3IoSlNDOjpKU09iamVjdCosIEpTQzo6RXhlY1N0YXRlKiwgY29uc3Qg
SlNDOjpJZGVudGlmaWVyJiBwcm9wZXJ0eU5hbWUsIEpTQzo6UHJvcGVydHlEZXNjcmlwdG9yJik7
CisgICAgc3RhdGljIGJvb2wgZ2V0T3duUHJvcGVydHlTbG90KEpTQzo6SlNDZWxsKiwgSlNDOjpF
eGVjU3RhdGUqLCBKU0M6OlByb3BlcnR5TmFtZSwgSlNDOjpQcm9wZXJ0eVNsb3QmKTsKKyAgICBz
dGF0aWMgYm9vbCBnZXRPd25Qcm9wZXJ0eURlc2NyaXB0b3IoSlNDOjpKU09iamVjdCosIEpTQzo6
RXhlY1N0YXRlKiwgSlNDOjpQcm9wZXJ0eU5hbWUsIEpTQzo6UHJvcGVydHlEZXNjcmlwdG9yJik7
CiAgICAgc3RhdGljIHZvaWQgZGVzdHJveShKU0M6OkpTQ2VsbCopOwogICAgIH5KU1Rlc3RFeGNl
cHRpb24oKTsKICAgICBzdGF0aWMgY29uc3QgSlNDOjpDbGFzc0luZm8gc19pbmZvOwpAQCAtMTIx
LDggKzEyMSw4IEBAIHB1YmxpYzoKICAgICAgICAgcmV0dXJuIHB0cjsKICAgICB9CiAKLSAgICBz
dGF0aWMgYm9vbCBnZXRPd25Qcm9wZXJ0eVNsb3QoSlNDOjpKU0NlbGwqLCBKU0M6OkV4ZWNTdGF0
ZSosIGNvbnN0IEpTQzo6SWRlbnRpZmllciYsIEpTQzo6UHJvcGVydHlTbG90Jik7Ci0gICAgc3Rh
dGljIGJvb2wgZ2V0T3duUHJvcGVydHlEZXNjcmlwdG9yKEpTQzo6SlNPYmplY3QqLCBKU0M6OkV4
ZWNTdGF0ZSosIGNvbnN0IEpTQzo6SWRlbnRpZmllciYsIEpTQzo6UHJvcGVydHlEZXNjcmlwdG9y
Jik7CisgICAgc3RhdGljIGJvb2wgZ2V0T3duUHJvcGVydHlTbG90KEpTQzo6SlNDZWxsKiwgSlND
OjpFeGVjU3RhdGUqLCBKU0M6OlByb3BlcnR5TmFtZSwgSlNDOjpQcm9wZXJ0eVNsb3QmKTsKKyAg
ICBzdGF0aWMgYm9vbCBnZXRPd25Qcm9wZXJ0eURlc2NyaXB0b3IoSlNDOjpKU09iamVjdCosIEpT
Qzo6RXhlY1N0YXRlKiwgSlNDOjpQcm9wZXJ0eU5hbWUsIEpTQzo6UHJvcGVydHlEZXNjcmlwdG9y
Jik7CiAgICAgc3RhdGljIGNvbnN0IEpTQzo6Q2xhc3NJbmZvIHNfaW5mbzsKICAgICBzdGF0aWMg
SlNDOjpTdHJ1Y3R1cmUqIGNyZWF0ZVN0cnVjdHVyZShKU0M6OkpTR2xvYmFsRGF0YSYgZ2xvYmFs
RGF0YSwgSlNDOjpKU0dsb2JhbE9iamVjdCogZ2xvYmFsT2JqZWN0LCBKU0M6OkpTVmFsdWUgcHJv
dG90eXBlKQogICAgIHsKQEAgLTEzNCw4ICsxMzQsOCBAQCBwcm90ZWN0ZWQ6CiAKIC8vIEF0dHJp
YnV0ZXMKIAotSlNDOjpKU1ZhbHVlIGpzVGVzdEV4Y2VwdGlvbk5hbWUoSlNDOjpFeGVjU3RhdGUq
LCBKU0M6OkpTVmFsdWUsIGNvbnN0IEpTQzo6SWRlbnRpZmllciYpOwotSlNDOjpKU1ZhbHVlIGpz
VGVzdEV4Y2VwdGlvbkNvbnN0cnVjdG9yKEpTQzo6RXhlY1N0YXRlKiwgSlNDOjpKU1ZhbHVlLCBj
b25zdCBKU0M6OklkZW50aWZpZXImKTsKK0pTQzo6SlNWYWx1ZSBqc1Rlc3RFeGNlcHRpb25OYW1l
KEpTQzo6RXhlY1N0YXRlKiwgSlNDOjpKU1ZhbHVlLCBKU0M6OlByb3BlcnR5TmFtZSk7CitKU0M6
OkpTVmFsdWUganNUZXN0RXhjZXB0aW9uQ29uc3RydWN0b3IoSlNDOjpFeGVjU3RhdGUqLCBKU0M6
OkpTVmFsdWUsIEpTQzo6UHJvcGVydHlOYW1lKTsKIAogfSAvLyBuYW1lc3BhY2UgV2ViQ29yZQog
CkluZGV4OiBTb3VyY2UvV2ViQ29yZS9iaW5kaW5ncy9zY3JpcHRzL3Rlc3QvSlMvSlNUZXN0SW50
ZXJmYWNlLmNwcAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2ViQ29yZS9iaW5kaW5ncy9zY3JpcHRz
L3Rlc3QvSlMvSlNUZXN0SW50ZXJmYWNlLmNwcAkocmV2aXNpb24gMTE2NjY3KQorKysgU291cmNl
L1dlYkNvcmUvYmluZGluZ3Mvc2NyaXB0cy90ZXN0L0pTL0pTVGVzdEludGVyZmFjZS5jcHAJKHdv
cmtpbmcgY29weSkKQEAgLTExMCwxMiArMTEwLDEyIEBAIHZvaWQgSlNUZXN0SW50ZXJmYWNlQ29u
c3RydWN0b3I6OmZpbmlzaEMKICAgICBwdXREaXJlY3QoZXhlYy0+Z2xvYmFsRGF0YSgpLCBleGVj
LT5wcm9wZXJ0eU5hbWVzKCkubGVuZ3RoLCBqc051bWJlcigyKSwgUmVhZE9ubHkgfCBEb250RGVs
ZXRlIHwgRG9udEVudW0pOwogfQogCi1ib29sIEpTVGVzdEludGVyZmFjZUNvbnN0cnVjdG9yOjpn
ZXRPd25Qcm9wZXJ0eVNsb3QoSlNDZWxsKiBjZWxsLCBFeGVjU3RhdGUqIGV4ZWMsIGNvbnN0IElk
ZW50aWZpZXImIHByb3BlcnR5TmFtZSwgUHJvcGVydHlTbG90JiBzbG90KQorYm9vbCBKU1Rlc3RJ
bnRlcmZhY2VDb25zdHJ1Y3Rvcjo6Z2V0T3duUHJvcGVydHlTbG90KEpTQ2VsbCogY2VsbCwgRXhl
Y1N0YXRlKiBleGVjLCBQcm9wZXJ0eU5hbWUgcHJvcGVydHlOYW1lLCBQcm9wZXJ0eVNsb3QmIHNs
b3QpCiB7CiAgICAgcmV0dXJuIGdldFN0YXRpY1Byb3BlcnR5U2xvdDxKU1Rlc3RJbnRlcmZhY2VD
b25zdHJ1Y3RvciwgSlNET01XcmFwcGVyPihleGVjLCAmSlNUZXN0SW50ZXJmYWNlQ29uc3RydWN0
b3JUYWJsZSwganNDYXN0PEpTVGVzdEludGVyZmFjZUNvbnN0cnVjdG9yKj4oY2VsbCksIHByb3Bl
cnR5TmFtZSwgc2xvdCk7CiB9CiAKLWJvb2wgSlNUZXN0SW50ZXJmYWNlQ29uc3RydWN0b3I6Omdl
dE93blByb3BlcnR5RGVzY3JpcHRvcihKU09iamVjdCogb2JqZWN0LCBFeGVjU3RhdGUqIGV4ZWMs
IGNvbnN0IElkZW50aWZpZXImIHByb3BlcnR5TmFtZSwgUHJvcGVydHlEZXNjcmlwdG9yJiBkZXNj
cmlwdG9yKQorYm9vbCBKU1Rlc3RJbnRlcmZhY2VDb25zdHJ1Y3Rvcjo6Z2V0T3duUHJvcGVydHlE
ZXNjcmlwdG9yKEpTT2JqZWN0KiBvYmplY3QsIEV4ZWNTdGF0ZSogZXhlYywgUHJvcGVydHlOYW1l
IHByb3BlcnR5TmFtZSwgUHJvcGVydHlEZXNjcmlwdG9yJiBkZXNjcmlwdG9yKQogewogICAgIHJl
dHVybiBnZXRTdGF0aWNQcm9wZXJ0eURlc2NyaXB0b3I8SlNUZXN0SW50ZXJmYWNlQ29uc3RydWN0
b3IsIEpTRE9NV3JhcHBlcj4oZXhlYywgJkpTVGVzdEludGVyZmFjZUNvbnN0cnVjdG9yVGFibGUs
IGpzQ2FzdDxKU1Rlc3RJbnRlcmZhY2VDb25zdHJ1Y3Rvcio+KG9iamVjdCksIHByb3BlcnR5TmFt
ZSwgZGVzY3JpcHRvcik7CiB9CkBAIC0xNzksMTMgKzE3OSwxMyBAQCBKU09iamVjdCogSlNUZXN0
SW50ZXJmYWNlUHJvdG90eXBlOjpzZWxmCiAgICAgcmV0dXJuIGdldERPTVByb3RvdHlwZTxKU1Rl
c3RJbnRlcmZhY2U+KGV4ZWMsIGdsb2JhbE9iamVjdCk7CiB9CiAKLWJvb2wgSlNUZXN0SW50ZXJm
YWNlUHJvdG90eXBlOjpnZXRPd25Qcm9wZXJ0eVNsb3QoSlNDZWxsKiBjZWxsLCBFeGVjU3RhdGUq
IGV4ZWMsIGNvbnN0IElkZW50aWZpZXImIHByb3BlcnR5TmFtZSwgUHJvcGVydHlTbG90JiBzbG90
KQorYm9vbCBKU1Rlc3RJbnRlcmZhY2VQcm90b3R5cGU6OmdldE93blByb3BlcnR5U2xvdChKU0Nl
bGwqIGNlbGwsIEV4ZWNTdGF0ZSogZXhlYywgUHJvcGVydHlOYW1lIHByb3BlcnR5TmFtZSwgUHJv
cGVydHlTbG90JiBzbG90KQogewogICAgIEpTVGVzdEludGVyZmFjZVByb3RvdHlwZSogdGhpc09i
amVjdCA9IGpzQ2FzdDxKU1Rlc3RJbnRlcmZhY2VQcm90b3R5cGUqPihjZWxsKTsKICAgICByZXR1
cm4gZ2V0U3RhdGljUHJvcGVydHlTbG90PEpTVGVzdEludGVyZmFjZVByb3RvdHlwZSwgSlNPYmpl
Y3Q+KGV4ZWMsICZKU1Rlc3RJbnRlcmZhY2VQcm90b3R5cGVUYWJsZSwgdGhpc09iamVjdCwgcHJv
cGVydHlOYW1lLCBzbG90KTsKIH0KIAotYm9vbCBKU1Rlc3RJbnRlcmZhY2VQcm90b3R5cGU6Omdl
dE93blByb3BlcnR5RGVzY3JpcHRvcihKU09iamVjdCogb2JqZWN0LCBFeGVjU3RhdGUqIGV4ZWMs
IGNvbnN0IElkZW50aWZpZXImIHByb3BlcnR5TmFtZSwgUHJvcGVydHlEZXNjcmlwdG9yJiBkZXNj
cmlwdG9yKQorYm9vbCBKU1Rlc3RJbnRlcmZhY2VQcm90b3R5cGU6OmdldE93blByb3BlcnR5RGVz
Y3JpcHRvcihKU09iamVjdCogb2JqZWN0LCBFeGVjU3RhdGUqIGV4ZWMsIFByb3BlcnR5TmFtZSBw
cm9wZXJ0eU5hbWUsIFByb3BlcnR5RGVzY3JpcHRvciYgZGVzY3JpcHRvcikKIHsKICAgICBKU1Rl
c3RJbnRlcmZhY2VQcm90b3R5cGUqIHRoaXNPYmplY3QgPSBqc0Nhc3Q8SlNUZXN0SW50ZXJmYWNl
UHJvdG90eXBlKj4ob2JqZWN0KTsKICAgICByZXR1cm4gZ2V0U3RhdGljUHJvcGVydHlEZXNjcmlw
dG9yPEpTVGVzdEludGVyZmFjZVByb3RvdHlwZSwgSlNPYmplY3Q+KGV4ZWMsICZKU1Rlc3RJbnRl
cmZhY2VQcm90b3R5cGVUYWJsZSwgdGhpc09iamVjdCwgcHJvcGVydHlOYW1lLCBkZXNjcmlwdG9y
KTsKQEAgLTIyMSwxNCArMjIxLDE0IEBAIEpTVGVzdEludGVyZmFjZTo6fkpTVGVzdEludGVyZmFj
ZSgpCiAgICAgcmVsZWFzZUltcGxJZk5vdE51bGwoKTsKIH0KIAotYm9vbCBKU1Rlc3RJbnRlcmZh
Y2U6OmdldE93blByb3BlcnR5U2xvdChKU0NlbGwqIGNlbGwsIEV4ZWNTdGF0ZSogZXhlYywgY29u
c3QgSWRlbnRpZmllciYgcHJvcGVydHlOYW1lLCBQcm9wZXJ0eVNsb3QmIHNsb3QpCitib29sIEpT
VGVzdEludGVyZmFjZTo6Z2V0T3duUHJvcGVydHlTbG90KEpTQ2VsbCogY2VsbCwgRXhlY1N0YXRl
KiBleGVjLCBQcm9wZXJ0eU5hbWUgcHJvcGVydHlOYW1lLCBQcm9wZXJ0eVNsb3QmIHNsb3QpCiB7
CiAgICAgSlNUZXN0SW50ZXJmYWNlKiB0aGlzT2JqZWN0ID0ganNDYXN0PEpTVGVzdEludGVyZmFj
ZSo+KGNlbGwpOwogICAgIEFTU0VSVF9HQ19PQkpFQ1RfSU5IRVJJVFModGhpc09iamVjdCwgJnNf
aW5mbyk7CiAgICAgcmV0dXJuIGdldFN0YXRpY1ZhbHVlU2xvdDxKU1Rlc3RJbnRlcmZhY2UsIEJh
c2U+KGV4ZWMsICZKU1Rlc3RJbnRlcmZhY2VUYWJsZSwgdGhpc09iamVjdCwgcHJvcGVydHlOYW1l
LCBzbG90KTsKIH0KIAotYm9vbCBKU1Rlc3RJbnRlcmZhY2U6OmdldE93blByb3BlcnR5RGVzY3Jp
cHRvcihKU09iamVjdCogb2JqZWN0LCBFeGVjU3RhdGUqIGV4ZWMsIGNvbnN0IElkZW50aWZpZXIm
IHByb3BlcnR5TmFtZSwgUHJvcGVydHlEZXNjcmlwdG9yJiBkZXNjcmlwdG9yKQorYm9vbCBKU1Rl
c3RJbnRlcmZhY2U6OmdldE93blByb3BlcnR5RGVzY3JpcHRvcihKU09iamVjdCogb2JqZWN0LCBF
eGVjU3RhdGUqIGV4ZWMsIFByb3BlcnR5TmFtZSBwcm9wZXJ0eU5hbWUsIFByb3BlcnR5RGVzY3Jp
cHRvciYgZGVzY3JpcHRvcikKIHsKICAgICBKU1Rlc3RJbnRlcmZhY2UqIHRoaXNPYmplY3QgPSBq
c0Nhc3Q8SlNUZXN0SW50ZXJmYWNlKj4ob2JqZWN0KTsKICAgICBBU1NFUlRfR0NfT0JKRUNUX0lO
SEVSSVRTKHRoaXNPYmplY3QsICZzX2luZm8pOwpAQCAtMjM2LDcgKzIzNiw3IEBAIGJvb2wgSlNU
ZXN0SW50ZXJmYWNlOjpnZXRPd25Qcm9wZXJ0eURlc2MKIH0KIAogI2lmIEVOQUJMRShDb25kaXRp
b24xMSkgfHwgRU5BQkxFKENvbmRpdGlvbjEyKQotSlNWYWx1ZSBqc1Rlc3RJbnRlcmZhY2VTdXBw
bGVtZW50YWxTdHIxKEV4ZWNTdGF0ZSogZXhlYywgSlNWYWx1ZSBzbG90QmFzZSwgY29uc3QgSWRl
bnRpZmllciYpCitKU1ZhbHVlIGpzVGVzdEludGVyZmFjZVN1cHBsZW1lbnRhbFN0cjEoRXhlY1N0
YXRlKiBleGVjLCBKU1ZhbHVlIHNsb3RCYXNlLCBQcm9wZXJ0eU5hbWUpCiB7CiAgICAgSlNUZXN0
SW50ZXJmYWNlKiBjYXN0ZWRUaGlzID0ganNDYXN0PEpTVGVzdEludGVyZmFjZSo+KGFzT2JqZWN0
KHNsb3RCYXNlKSk7CiAgICAgVU5VU0VEX1BBUkFNKGV4ZWMpOwpAQCAtMjQ4LDcgKzI0OCw3IEBA
IEpTVmFsdWUganNUZXN0SW50ZXJmYWNlU3VwcGxlbWVudGFsU3RyMSgKICNlbmRpZgogCiAjaWYg
RU5BQkxFKENvbmRpdGlvbjExKSB8fCBFTkFCTEUoQ29uZGl0aW9uMTIpCi1KU1ZhbHVlIGpzVGVz
dEludGVyZmFjZVN1cHBsZW1lbnRhbFN0cjIoRXhlY1N0YXRlKiBleGVjLCBKU1ZhbHVlIHNsb3RC
YXNlLCBjb25zdCBJZGVudGlmaWVyJikKK0pTVmFsdWUganNUZXN0SW50ZXJmYWNlU3VwcGxlbWVu
dGFsU3RyMihFeGVjU3RhdGUqIGV4ZWMsIEpTVmFsdWUgc2xvdEJhc2UsIFByb3BlcnR5TmFtZSkK
IHsKICAgICBKU1Rlc3RJbnRlcmZhY2UqIGNhc3RlZFRoaXMgPSBqc0Nhc3Q8SlNUZXN0SW50ZXJm
YWNlKj4oYXNPYmplY3Qoc2xvdEJhc2UpKTsKICAgICBVTlVTRURfUEFSQU0oZXhlYyk7CkBAIC0y
NjAsNyArMjYwLDcgQEAgSlNWYWx1ZSBqc1Rlc3RJbnRlcmZhY2VTdXBwbGVtZW50YWxTdHIyKAog
I2VuZGlmCiAKICNpZiBFTkFCTEUoQ29uZGl0aW9uMTEpIHx8IEVOQUJMRShDb25kaXRpb24xMikK
LUpTVmFsdWUganNUZXN0SW50ZXJmYWNlU3VwcGxlbWVudGFsU3RyMyhFeGVjU3RhdGUqIGV4ZWMs
IEpTVmFsdWUgc2xvdEJhc2UsIGNvbnN0IElkZW50aWZpZXImKQorSlNWYWx1ZSBqc1Rlc3RJbnRl
cmZhY2VTdXBwbGVtZW50YWxTdHIzKEV4ZWNTdGF0ZSogZXhlYywgSlNWYWx1ZSBzbG90QmFzZSwg
UHJvcGVydHlOYW1lKQogewogICAgIEpTVGVzdEludGVyZmFjZSogY2FzdGVkVGhpcyA9IGpzQ2Fz
dDxKU1Rlc3RJbnRlcmZhY2UqPihhc09iamVjdChzbG90QmFzZSkpOwogICAgIHJldHVybiBjYXN0
ZWRUaGlzLT5zdXBwbGVtZW50YWxTdHIzKGV4ZWMpOwpAQCAtMjY5LDcgKzI2OSw3IEBAIEpTVmFs
dWUganNUZXN0SW50ZXJmYWNlU3VwcGxlbWVudGFsU3RyMygKICNlbmRpZgogCiAjaWYgRU5BQkxF
KENvbmRpdGlvbjExKSB8fCBFTkFCTEUoQ29uZGl0aW9uMTIpCi1KU1ZhbHVlIGpzVGVzdEludGVy
ZmFjZVN1cHBsZW1lbnRhbE5vZGUoRXhlY1N0YXRlKiBleGVjLCBKU1ZhbHVlIHNsb3RCYXNlLCBj
b25zdCBJZGVudGlmaWVyJikKK0pTVmFsdWUganNUZXN0SW50ZXJmYWNlU3VwcGxlbWVudGFsTm9k
ZShFeGVjU3RhdGUqIGV4ZWMsIEpTVmFsdWUgc2xvdEJhc2UsIFByb3BlcnR5TmFtZSkKIHsKICAg
ICBKU1Rlc3RJbnRlcmZhY2UqIGNhc3RlZFRoaXMgPSBqc0Nhc3Q8SlNUZXN0SW50ZXJmYWNlKj4o
YXNPYmplY3Qoc2xvdEJhc2UpKTsKICAgICBVTlVTRURfUEFSQU0oZXhlYyk7CkBAIC0yODAsMTMg
KzI4MCwxMyBAQCBKU1ZhbHVlIGpzVGVzdEludGVyZmFjZVN1cHBsZW1lbnRhbE5vZGUoCiAKICNl
bmRpZgogCi1KU1ZhbHVlIGpzVGVzdEludGVyZmFjZUNvbnN0cnVjdG9yKEV4ZWNTdGF0ZSogZXhl
YywgSlNWYWx1ZSBzbG90QmFzZSwgY29uc3QgSWRlbnRpZmllciYpCitKU1ZhbHVlIGpzVGVzdElu
dGVyZmFjZUNvbnN0cnVjdG9yKEV4ZWNTdGF0ZSogZXhlYywgSlNWYWx1ZSBzbG90QmFzZSwgUHJv
cGVydHlOYW1lKQogewogICAgIEpTVGVzdEludGVyZmFjZSogZG9tT2JqZWN0ID0ganNDYXN0PEpT
VGVzdEludGVyZmFjZSo+KGFzT2JqZWN0KHNsb3RCYXNlKSk7CiAgICAgcmV0dXJuIEpTVGVzdElu
dGVyZmFjZTo6Z2V0Q29uc3RydWN0b3IoZXhlYywgZG9tT2JqZWN0LT5nbG9iYWxPYmplY3QoKSk7
CiB9CiAKLXZvaWQgSlNUZXN0SW50ZXJmYWNlOjpwdXQoSlNDZWxsKiBjZWxsLCBFeGVjU3RhdGUq
IGV4ZWMsIGNvbnN0IElkZW50aWZpZXImIHByb3BlcnR5TmFtZSwgSlNWYWx1ZSB2YWx1ZSwgUHV0
UHJvcGVydHlTbG90JiBzbG90KQordm9pZCBKU1Rlc3RJbnRlcmZhY2U6OnB1dChKU0NlbGwqIGNl
bGwsIEV4ZWNTdGF0ZSogZXhlYywgUHJvcGVydHlOYW1lIHByb3BlcnR5TmFtZSwgSlNWYWx1ZSB2
YWx1ZSwgUHV0UHJvcGVydHlTbG90JiBzbG90KQogewogICAgIEpTVGVzdEludGVyZmFjZSogdGhp
c09iamVjdCA9IGpzQ2FzdDxKU1Rlc3RJbnRlcmZhY2UqPihjZWxsKTsKICAgICBBU1NFUlRfR0Nf
T0JKRUNUX0lOSEVSSVRTKHRoaXNPYmplY3QsICZzX2luZm8pOwpAQCAtMzk3LDcgKzM5Nyw3IEBA
IEVuY29kZWRKU1ZhbHVlIEpTQ19IT1NUX0NBTEwganNUZXN0SW50ZXIKIC8vIENvbnN0YW50IGdl
dHRlcnMKIAogI2lmIEVOQUJMRShDb25kaXRpb24xMSkgfHwgRU5BQkxFKENvbmRpdGlvbjEyKQot
SlNWYWx1ZSBqc1Rlc3RJbnRlcmZhY2VTVVBQTEVNRU5UQUxDT05TVEFOVDEoRXhlY1N0YXRlKiBl
eGVjLCBKU1ZhbHVlLCBjb25zdCBJZGVudGlmaWVyJikKK0pTVmFsdWUganNUZXN0SW50ZXJmYWNl
U1VQUExFTUVOVEFMQ09OU1RBTlQxKEV4ZWNTdGF0ZSogZXhlYywgSlNWYWx1ZSwgUHJvcGVydHlO
YW1lKQogewogICAgIFVOVVNFRF9QQVJBTShleGVjKTsKICAgICByZXR1cm4ganNOdW1iZXIoc3Rh
dGljX2Nhc3Q8aW50PigxKSk7CkBAIC00MDUsNyArNDA1LDcgQEAgSlNWYWx1ZSBqc1Rlc3RJbnRl
cmZhY2VTVVBQTEVNRU5UQUxDT05TVAogCiAjZW5kaWYKICNpZiBFTkFCTEUoQ29uZGl0aW9uMTEp
IHx8IEVOQUJMRShDb25kaXRpb24xMikKLUpTVmFsdWUganNUZXN0SW50ZXJmYWNlU1VQUExFTUVO
VEFMQ09OU1RBTlQyKEV4ZWNTdGF0ZSogZXhlYywgSlNWYWx1ZSwgY29uc3QgSWRlbnRpZmllciYp
CitKU1ZhbHVlIGpzVGVzdEludGVyZmFjZVNVUFBMRU1FTlRBTENPTlNUQU5UMihFeGVjU3RhdGUq
IGV4ZWMsIEpTVmFsdWUsIFByb3BlcnR5TmFtZSkKIHsKICAgICBVTlVTRURfUEFSQU0oZXhlYyk7
CiAgICAgcmV0dXJuIGpzTnVtYmVyKHN0YXRpY19jYXN0PGludD4oMikpOwpJbmRleDogU291cmNl
L1dlYkNvcmUvYmluZGluZ3Mvc2NyaXB0cy90ZXN0L0pTL0pTVGVzdEludGVyZmFjZS5oCj09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT0KLS0tIFNvdXJjZS9XZWJDb3JlL2JpbmRpbmdzL3NjcmlwdHMvdGVzdC9KUy9KU1Rlc3RJ
bnRlcmZhY2UuaAkocmV2aXNpb24gMTE2NjY3KQorKysgU291cmNlL1dlYkNvcmUvYmluZGluZ3Mv
c2NyaXB0cy90ZXN0L0pTL0pTVGVzdEludGVyZmFjZS5oCSh3b3JraW5nIGNvcHkpCkBAIC00Miwx
MCArNDIsMTAgQEAgcHVibGljOgogICAgIH0KIAogICAgIHN0YXRpYyBKU0M6OkpTT2JqZWN0KiBj
cmVhdGVQcm90b3R5cGUoSlNDOjpFeGVjU3RhdGUqLCBKU0M6OkpTR2xvYmFsT2JqZWN0Kik7Ci0g
ICAgc3RhdGljIGJvb2wgZ2V0T3duUHJvcGVydHlTbG90KEpTQzo6SlNDZWxsKiwgSlNDOjpFeGVj
U3RhdGUqLCBjb25zdCBKU0M6OklkZW50aWZpZXImIHByb3BlcnR5TmFtZSwgSlNDOjpQcm9wZXJ0
eVNsb3QmKTsKLSAgICBzdGF0aWMgYm9vbCBnZXRPd25Qcm9wZXJ0eURlc2NyaXB0b3IoSlNDOjpK
U09iamVjdCosIEpTQzo6RXhlY1N0YXRlKiwgY29uc3QgSlNDOjpJZGVudGlmaWVyJiBwcm9wZXJ0
eU5hbWUsIEpTQzo6UHJvcGVydHlEZXNjcmlwdG9yJik7Ci0gICAgc3RhdGljIHZvaWQgcHV0KEpT
Qzo6SlNDZWxsKiwgSlNDOjpFeGVjU3RhdGUqLCBjb25zdCBKU0M6OklkZW50aWZpZXImIHByb3Bl
cnR5TmFtZSwgSlNDOjpKU1ZhbHVlLCBKU0M6OlB1dFByb3BlcnR5U2xvdCYpOwotICAgIGJvb2wg
cHV0RGVsZWdhdGUoSlNDOjpFeGVjU3RhdGUqLCBjb25zdCBKU0M6OklkZW50aWZpZXImLCBKU0M6
OkpTVmFsdWUsIEpTQzo6UHV0UHJvcGVydHlTbG90Jik7CisgICAgc3RhdGljIGJvb2wgZ2V0T3du
UHJvcGVydHlTbG90KEpTQzo6SlNDZWxsKiwgSlNDOjpFeGVjU3RhdGUqLCBKU0M6OlByb3BlcnR5
TmFtZSwgSlNDOjpQcm9wZXJ0eVNsb3QmKTsKKyAgICBzdGF0aWMgYm9vbCBnZXRPd25Qcm9wZXJ0
eURlc2NyaXB0b3IoSlNDOjpKU09iamVjdCosIEpTQzo6RXhlY1N0YXRlKiwgSlNDOjpQcm9wZXJ0
eU5hbWUsIEpTQzo6UHJvcGVydHlEZXNjcmlwdG9yJik7CisgICAgc3RhdGljIHZvaWQgcHV0KEpT
Qzo6SlNDZWxsKiwgSlNDOjpFeGVjU3RhdGUqLCBKU0M6OlByb3BlcnR5TmFtZSwgSlNDOjpKU1Zh
bHVlLCBKU0M6OlB1dFByb3BlcnR5U2xvdCYpOworICAgIGJvb2wgcHV0RGVsZWdhdGUoSlNDOjpF
eGVjU3RhdGUqLCBKU0M6OlByb3BlcnR5TmFtZSwgSlNDOjpKU1ZhbHVlLCBKU0M6OlB1dFByb3Bl
cnR5U2xvdCYpOwogICAgIHN0YXRpYyB2b2lkIGRlc3Ryb3koSlNDOjpKU0NlbGwqKTsKICAgICB+
SlNUZXN0SW50ZXJmYWNlKCk7CiAgICAgc3RhdGljIGNvbnN0IEpTQzo6Q2xhc3NJbmZvIHNfaW5m
bzsKQEAgLTExMyw4ICsxMTMsOCBAQCBwdWJsaWM6CiAgICAgfQogCiAgICAgc3RhdGljIGNvbnN0
IEpTQzo6Q2xhc3NJbmZvIHNfaW5mbzsKLSAgICBzdGF0aWMgYm9vbCBnZXRPd25Qcm9wZXJ0eVNs
b3QoSlNDOjpKU0NlbGwqLCBKU0M6OkV4ZWNTdGF0ZSosIGNvbnN0IEpTQzo6SWRlbnRpZmllciYs
IEpTQzo6UHJvcGVydHlTbG90Jik7Ci0gICAgc3RhdGljIGJvb2wgZ2V0T3duUHJvcGVydHlEZXNj
cmlwdG9yKEpTQzo6SlNPYmplY3QqLCBKU0M6OkV4ZWNTdGF0ZSosIGNvbnN0IEpTQzo6SWRlbnRp
ZmllciYsIEpTQzo6UHJvcGVydHlEZXNjcmlwdG9yJik7CisgICAgc3RhdGljIGJvb2wgZ2V0T3du
UHJvcGVydHlTbG90KEpTQzo6SlNDZWxsKiwgSlNDOjpFeGVjU3RhdGUqLCBKU0M6OlByb3BlcnR5
TmFtZSwgSlNDOjpQcm9wZXJ0eVNsb3QmKTsKKyAgICBzdGF0aWMgYm9vbCBnZXRPd25Qcm9wZXJ0
eURlc2NyaXB0b3IoSlNDOjpKU09iamVjdCosIEpTQzo6RXhlY1N0YXRlKiwgSlNDOjpQcm9wZXJ0
eU5hbWUsIEpTQzo6UHJvcGVydHlEZXNjcmlwdG9yJik7CiAgICAgc3RhdGljIEpTQzo6U3RydWN0
dXJlKiBjcmVhdGVTdHJ1Y3R1cmUoSlNDOjpKU0dsb2JhbERhdGEmIGdsb2JhbERhdGEsIEpTQzo6
SlNHbG9iYWxPYmplY3QqIGdsb2JhbE9iamVjdCwgSlNDOjpKU1ZhbHVlIHByb3RvdHlwZSkKICAg
ICB7CiAgICAgICAgIHJldHVybiBKU0M6OlN0cnVjdHVyZTo6Y3JlYXRlKGdsb2JhbERhdGEsIGds
b2JhbE9iamVjdCwgcHJvdG90eXBlLCBKU0M6OlR5cGVJbmZvKEpTQzo6T2JqZWN0VHlwZSwgU3Ry
dWN0dXJlRmxhZ3MpLCAmc19pbmZvKTsKQEAgLTE0MCw4ICsxNDAsOCBAQCBwdWJsaWM6CiAgICAg
ICAgIHJldHVybiBwdHI7CiAgICAgfQogCi0gICAgc3RhdGljIGJvb2wgZ2V0T3duUHJvcGVydHlT
bG90KEpTQzo6SlNDZWxsKiwgSlNDOjpFeGVjU3RhdGUqLCBjb25zdCBKU0M6OklkZW50aWZpZXIm
LCBKU0M6OlByb3BlcnR5U2xvdCYpOwotICAgIHN0YXRpYyBib29sIGdldE93blByb3BlcnR5RGVz
Y3JpcHRvcihKU0M6OkpTT2JqZWN0KiwgSlNDOjpFeGVjU3RhdGUqLCBjb25zdCBKU0M6OklkZW50
aWZpZXImLCBKU0M6OlByb3BlcnR5RGVzY3JpcHRvciYpOworICAgIHN0YXRpYyBib29sIGdldE93
blByb3BlcnR5U2xvdChKU0M6OkpTQ2VsbCosIEpTQzo6RXhlY1N0YXRlKiwgSlNDOjpQcm9wZXJ0
eU5hbWUsIEpTQzo6UHJvcGVydHlTbG90Jik7CisgICAgc3RhdGljIGJvb2wgZ2V0T3duUHJvcGVy
dHlEZXNjcmlwdG9yKEpTQzo6SlNPYmplY3QqLCBKU0M6OkV4ZWNTdGF0ZSosIEpTQzo6UHJvcGVy
dHlOYW1lLCBKU0M6OlByb3BlcnR5RGVzY3JpcHRvciYpOwogICAgIHN0YXRpYyBjb25zdCBKU0M6
OkNsYXNzSW5mbyBzX2luZm87CiAgICAgc3RhdGljIEpTQzo6U3RydWN0dXJlKiBjcmVhdGVTdHJ1
Y3R1cmUoSlNDOjpKU0dsb2JhbERhdGEmIGdsb2JhbERhdGEsIEpTQzo6SlNHbG9iYWxPYmplY3Qq
IGdsb2JhbE9iamVjdCwgSlNDOjpKU1ZhbHVlIHByb3RvdHlwZSkKICAgICB7CkBAIC0xNzAsMjgg
KzE3MCwyOCBAQCBKU0M6OkVuY29kZWRKU1ZhbHVlIEpTQ19IT1NUX0NBTEwganNUZXN0CiAvLyBB
dHRyaWJ1dGVzCiAKICNpZiBFTkFCTEUoQ29uZGl0aW9uMTEpIHx8IEVOQUJMRShDb25kaXRpb24x
MikKLUpTQzo6SlNWYWx1ZSBqc1Rlc3RJbnRlcmZhY2VTdXBwbGVtZW50YWxTdHIxKEpTQzo6RXhl
Y1N0YXRlKiwgSlNDOjpKU1ZhbHVlLCBjb25zdCBKU0M6OklkZW50aWZpZXImKTsKK0pTQzo6SlNW
YWx1ZSBqc1Rlc3RJbnRlcmZhY2VTdXBwbGVtZW50YWxTdHIxKEpTQzo6RXhlY1N0YXRlKiwgSlND
OjpKU1ZhbHVlLCBKU0M6OlByb3BlcnR5TmFtZSk7CiAjZW5kaWYKICNpZiBFTkFCTEUoQ29uZGl0
aW9uMTEpIHx8IEVOQUJMRShDb25kaXRpb24xMikKLUpTQzo6SlNWYWx1ZSBqc1Rlc3RJbnRlcmZh
Y2VTdXBwbGVtZW50YWxTdHIyKEpTQzo6RXhlY1N0YXRlKiwgSlNDOjpKU1ZhbHVlLCBjb25zdCBK
U0M6OklkZW50aWZpZXImKTsKK0pTQzo6SlNWYWx1ZSBqc1Rlc3RJbnRlcmZhY2VTdXBwbGVtZW50
YWxTdHIyKEpTQzo6RXhlY1N0YXRlKiwgSlNDOjpKU1ZhbHVlLCBKU0M6OlByb3BlcnR5TmFtZSk7
CiB2b2lkIHNldEpTVGVzdEludGVyZmFjZVN1cHBsZW1lbnRhbFN0cjIoSlNDOjpFeGVjU3RhdGUq
LCBKU0M6OkpTT2JqZWN0KiwgSlNDOjpKU1ZhbHVlKTsKICNlbmRpZgogI2lmIEVOQUJMRShDb25k
aXRpb24xMSkgfHwgRU5BQkxFKENvbmRpdGlvbjEyKQotSlNDOjpKU1ZhbHVlIGpzVGVzdEludGVy
ZmFjZVN1cHBsZW1lbnRhbFN0cjMoSlNDOjpFeGVjU3RhdGUqLCBKU0M6OkpTVmFsdWUsIGNvbnN0
IEpTQzo6SWRlbnRpZmllciYpOworSlNDOjpKU1ZhbHVlIGpzVGVzdEludGVyZmFjZVN1cHBsZW1l
bnRhbFN0cjMoSlNDOjpFeGVjU3RhdGUqLCBKU0M6OkpTVmFsdWUsIEpTQzo6UHJvcGVydHlOYW1l
KTsKIHZvaWQgc2V0SlNUZXN0SW50ZXJmYWNlU3VwcGxlbWVudGFsU3RyMyhKU0M6OkV4ZWNTdGF0
ZSosIEpTQzo6SlNPYmplY3QqLCBKU0M6OkpTVmFsdWUpOwogI2VuZGlmCiAjaWYgRU5BQkxFKENv
bmRpdGlvbjExKSB8fCBFTkFCTEUoQ29uZGl0aW9uMTIpCi1KU0M6OkpTVmFsdWUganNUZXN0SW50
ZXJmYWNlU3VwcGxlbWVudGFsTm9kZShKU0M6OkV4ZWNTdGF0ZSosIEpTQzo6SlNWYWx1ZSwgY29u
c3QgSlNDOjpJZGVudGlmaWVyJik7CitKU0M6OkpTVmFsdWUganNUZXN0SW50ZXJmYWNlU3VwcGxl
bWVudGFsTm9kZShKU0M6OkV4ZWNTdGF0ZSosIEpTQzo6SlNWYWx1ZSwgSlNDOjpQcm9wZXJ0eU5h
bWUpOwogdm9pZCBzZXRKU1Rlc3RJbnRlcmZhY2VTdXBwbGVtZW50YWxOb2RlKEpTQzo6RXhlY1N0
YXRlKiwgSlNDOjpKU09iamVjdCosIEpTQzo6SlNWYWx1ZSk7CiAjZW5kaWYKLUpTQzo6SlNWYWx1
ZSBqc1Rlc3RJbnRlcmZhY2VDb25zdHJ1Y3RvcihKU0M6OkV4ZWNTdGF0ZSosIEpTQzo6SlNWYWx1
ZSwgY29uc3QgSlNDOjpJZGVudGlmaWVyJik7CitKU0M6OkpTVmFsdWUganNUZXN0SW50ZXJmYWNl
Q29uc3RydWN0b3IoSlNDOjpFeGVjU3RhdGUqLCBKU0M6OkpTVmFsdWUsIEpTQzo6UHJvcGVydHlO
YW1lKTsKIC8vIENvbnN0YW50cwogCiAjaWYgRU5BQkxFKENvbmRpdGlvbjExKSB8fCBFTkFCTEUo
Q29uZGl0aW9uMTIpCi1KU0M6OkpTVmFsdWUganNUZXN0SW50ZXJmYWNlU1VQUExFTUVOVEFMQ09O
U1RBTlQxKEpTQzo6RXhlY1N0YXRlKiwgSlNDOjpKU1ZhbHVlLCBjb25zdCBKU0M6OklkZW50aWZp
ZXImKTsKK0pTQzo6SlNWYWx1ZSBqc1Rlc3RJbnRlcmZhY2VTVVBQTEVNRU5UQUxDT05TVEFOVDEo
SlNDOjpFeGVjU3RhdGUqLCBKU0M6OkpTVmFsdWUsIEpTQzo6UHJvcGVydHlOYW1lKTsKICNlbmRp
ZgogI2lmIEVOQUJMRShDb25kaXRpb24xMSkgfHwgRU5BQkxFKENvbmRpdGlvbjEyKQotSlNDOjpK
U1ZhbHVlIGpzVGVzdEludGVyZmFjZVNVUFBMRU1FTlRBTENPTlNUQU5UMihKU0M6OkV4ZWNTdGF0
ZSosIEpTQzo6SlNWYWx1ZSwgY29uc3QgSlNDOjpJZGVudGlmaWVyJik7CitKU0M6OkpTVmFsdWUg
anNUZXN0SW50ZXJmYWNlU1VQUExFTUVOVEFMQ09OU1RBTlQyKEpTQzo6RXhlY1N0YXRlKiwgSlND
OjpKU1ZhbHVlLCBKU0M6OlByb3BlcnR5TmFtZSk7CiAjZW5kaWYKIAogfSAvLyBuYW1lc3BhY2Ug
V2ViQ29yZQpJbmRleDogU291cmNlL1dlYkNvcmUvYmluZGluZ3Mvc2NyaXB0cy90ZXN0L0pTL0pT
VGVzdE1lZGlhUXVlcnlMaXN0TGlzdGVuZXIuY3BwCj09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9XZWJD
b3JlL2JpbmRpbmdzL3NjcmlwdHMvdGVzdC9KUy9KU1Rlc3RNZWRpYVF1ZXJ5TGlzdExpc3RlbmVy
LmNwcAkocmV2aXNpb24gMTE2NjY3KQorKysgU291cmNlL1dlYkNvcmUvYmluZGluZ3Mvc2NyaXB0
cy90ZXN0L0pTL0pTVGVzdE1lZGlhUXVlcnlMaXN0TGlzdGVuZXIuY3BwCSh3b3JraW5nIGNvcHkp
CkBAIC02NCwxMiArNjQsMTIgQEAgdm9pZCBKU1Rlc3RNZWRpYVF1ZXJ5TGlzdExpc3RlbmVyQ29u
c3RydQogICAgIHB1dERpcmVjdChleGVjLT5nbG9iYWxEYXRhKCksIGV4ZWMtPnByb3BlcnR5TmFt
ZXMoKS5wcm90b3R5cGUsIEpTVGVzdE1lZGlhUXVlcnlMaXN0TGlzdGVuZXJQcm90b3R5cGU6OnNl
bGYoZXhlYywgZ2xvYmFsT2JqZWN0KSwgRG9udERlbGV0ZSB8IFJlYWRPbmx5KTsKIH0KIAotYm9v
bCBKU1Rlc3RNZWRpYVF1ZXJ5TGlzdExpc3RlbmVyQ29uc3RydWN0b3I6OmdldE93blByb3BlcnR5
U2xvdChKU0NlbGwqIGNlbGwsIEV4ZWNTdGF0ZSogZXhlYywgY29uc3QgSWRlbnRpZmllciYgcHJv
cGVydHlOYW1lLCBQcm9wZXJ0eVNsb3QmIHNsb3QpCitib29sIEpTVGVzdE1lZGlhUXVlcnlMaXN0
TGlzdGVuZXJDb25zdHJ1Y3Rvcjo6Z2V0T3duUHJvcGVydHlTbG90KEpTQ2VsbCogY2VsbCwgRXhl
Y1N0YXRlKiBleGVjLCBQcm9wZXJ0eU5hbWUgcHJvcGVydHlOYW1lLCBQcm9wZXJ0eVNsb3QmIHNs
b3QpCiB7CiAgICAgcmV0dXJuIGdldFN0YXRpY1ZhbHVlU2xvdDxKU1Rlc3RNZWRpYVF1ZXJ5TGlz
dExpc3RlbmVyQ29uc3RydWN0b3IsIEpTRE9NV3JhcHBlcj4oZXhlYywgJkpTVGVzdE1lZGlhUXVl
cnlMaXN0TGlzdGVuZXJDb25zdHJ1Y3RvclRhYmxlLCBqc0Nhc3Q8SlNUZXN0TWVkaWFRdWVyeUxp
c3RMaXN0ZW5lckNvbnN0cnVjdG9yKj4oY2VsbCksIHByb3BlcnR5TmFtZSwgc2xvdCk7CiB9CiAK
LWJvb2wgSlNUZXN0TWVkaWFRdWVyeUxpc3RMaXN0ZW5lckNvbnN0cnVjdG9yOjpnZXRPd25Qcm9w
ZXJ0eURlc2NyaXB0b3IoSlNPYmplY3QqIG9iamVjdCwgRXhlY1N0YXRlKiBleGVjLCBjb25zdCBJ
ZGVudGlmaWVyJiBwcm9wZXJ0eU5hbWUsIFByb3BlcnR5RGVzY3JpcHRvciYgZGVzY3JpcHRvcikK
K2Jvb2wgSlNUZXN0TWVkaWFRdWVyeUxpc3RMaXN0ZW5lckNvbnN0cnVjdG9yOjpnZXRPd25Qcm9w
ZXJ0eURlc2NyaXB0b3IoSlNPYmplY3QqIG9iamVjdCwgRXhlY1N0YXRlKiBleGVjLCBQcm9wZXJ0
eU5hbWUgcHJvcGVydHlOYW1lLCBQcm9wZXJ0eURlc2NyaXB0b3ImIGRlc2NyaXB0b3IpCiB7CiAg
ICAgcmV0dXJuIGdldFN0YXRpY1ZhbHVlRGVzY3JpcHRvcjxKU1Rlc3RNZWRpYVF1ZXJ5TGlzdExp
c3RlbmVyQ29uc3RydWN0b3IsIEpTRE9NV3JhcHBlcj4oZXhlYywgJkpTVGVzdE1lZGlhUXVlcnlM
aXN0TGlzdGVuZXJDb25zdHJ1Y3RvclRhYmxlLCBqc0Nhc3Q8SlNUZXN0TWVkaWFRdWVyeUxpc3RM
aXN0ZW5lckNvbnN0cnVjdG9yKj4ob2JqZWN0KSwgcHJvcGVydHlOYW1lLCBkZXNjcmlwdG9yKTsK
IH0KQEAgLTkwLDEzICs5MCwxMyBAQCBKU09iamVjdCogSlNUZXN0TWVkaWFRdWVyeUxpc3RMaXN0
ZW5lclByCiAgICAgcmV0dXJuIGdldERPTVByb3RvdHlwZTxKU1Rlc3RNZWRpYVF1ZXJ5TGlzdExp
c3RlbmVyPihleGVjLCBnbG9iYWxPYmplY3QpOwogfQogCi1ib29sIEpTVGVzdE1lZGlhUXVlcnlM
aXN0TGlzdGVuZXJQcm90b3R5cGU6OmdldE93blByb3BlcnR5U2xvdChKU0NlbGwqIGNlbGwsIEV4
ZWNTdGF0ZSogZXhlYywgY29uc3QgSWRlbnRpZmllciYgcHJvcGVydHlOYW1lLCBQcm9wZXJ0eVNs
b3QmIHNsb3QpCitib29sIEpTVGVzdE1lZGlhUXVlcnlMaXN0TGlzdGVuZXJQcm90b3R5cGU6Omdl
dE93blByb3BlcnR5U2xvdChKU0NlbGwqIGNlbGwsIEV4ZWNTdGF0ZSogZXhlYywgUHJvcGVydHlO
YW1lIHByb3BlcnR5TmFtZSwgUHJvcGVydHlTbG90JiBzbG90KQogewogICAgIEpTVGVzdE1lZGlh
UXVlcnlMaXN0TGlzdGVuZXJQcm90b3R5cGUqIHRoaXNPYmplY3QgPSBqc0Nhc3Q8SlNUZXN0TWVk
aWFRdWVyeUxpc3RMaXN0ZW5lclByb3RvdHlwZSo+KGNlbGwpOwogICAgIHJldHVybiBnZXRTdGF0
aWNGdW5jdGlvblNsb3Q8SlNPYmplY3Q+KGV4ZWMsICZKU1Rlc3RNZWRpYVF1ZXJ5TGlzdExpc3Rl
bmVyUHJvdG90eXBlVGFibGUsIHRoaXNPYmplY3QsIHByb3BlcnR5TmFtZSwgc2xvdCk7CiB9CiAK
LWJvb2wgSlNUZXN0TWVkaWFRdWVyeUxpc3RMaXN0ZW5lclByb3RvdHlwZTo6Z2V0T3duUHJvcGVy
dHlEZXNjcmlwdG9yKEpTT2JqZWN0KiBvYmplY3QsIEV4ZWNTdGF0ZSogZXhlYywgY29uc3QgSWRl
bnRpZmllciYgcHJvcGVydHlOYW1lLCBQcm9wZXJ0eURlc2NyaXB0b3ImIGRlc2NyaXB0b3IpCiti
b29sIEpTVGVzdE1lZGlhUXVlcnlMaXN0TGlzdGVuZXJQcm90b3R5cGU6OmdldE93blByb3BlcnR5
RGVzY3JpcHRvcihKU09iamVjdCogb2JqZWN0LCBFeGVjU3RhdGUqIGV4ZWMsIFByb3BlcnR5TmFt
ZSBwcm9wZXJ0eU5hbWUsIFByb3BlcnR5RGVzY3JpcHRvciYgZGVzY3JpcHRvcikKIHsKICAgICBK
U1Rlc3RNZWRpYVF1ZXJ5TGlzdExpc3RlbmVyUHJvdG90eXBlKiB0aGlzT2JqZWN0ID0ganNDYXN0
PEpTVGVzdE1lZGlhUXVlcnlMaXN0TGlzdGVuZXJQcm90b3R5cGUqPihvYmplY3QpOwogICAgIHJl
dHVybiBnZXRTdGF0aWNGdW5jdGlvbkRlc2NyaXB0b3I8SlNPYmplY3Q+KGV4ZWMsICZKU1Rlc3RN
ZWRpYVF1ZXJ5TGlzdExpc3RlbmVyUHJvdG90eXBlVGFibGUsIHRoaXNPYmplY3QsIHByb3BlcnR5
TmFtZSwgZGVzY3JpcHRvcik7CkBAIC0xMzIsMjEgKzEzMiwyMSBAQCBKU1Rlc3RNZWRpYVF1ZXJ5
TGlzdExpc3RlbmVyOjp+SlNUZXN0TWVkCiAgICAgcmVsZWFzZUltcGxJZk5vdE51bGwoKTsKIH0K
IAotYm9vbCBKU1Rlc3RNZWRpYVF1ZXJ5TGlzdExpc3RlbmVyOjpnZXRPd25Qcm9wZXJ0eVNsb3Qo
SlNDZWxsKiBjZWxsLCBFeGVjU3RhdGUqIGV4ZWMsIGNvbnN0IElkZW50aWZpZXImIHByb3BlcnR5
TmFtZSwgUHJvcGVydHlTbG90JiBzbG90KQorYm9vbCBKU1Rlc3RNZWRpYVF1ZXJ5TGlzdExpc3Rl
bmVyOjpnZXRPd25Qcm9wZXJ0eVNsb3QoSlNDZWxsKiBjZWxsLCBFeGVjU3RhdGUqIGV4ZWMsIFBy
b3BlcnR5TmFtZSBwcm9wZXJ0eU5hbWUsIFByb3BlcnR5U2xvdCYgc2xvdCkKIHsKICAgICBKU1Rl
c3RNZWRpYVF1ZXJ5TGlzdExpc3RlbmVyKiB0aGlzT2JqZWN0ID0ganNDYXN0PEpTVGVzdE1lZGlh
UXVlcnlMaXN0TGlzdGVuZXIqPihjZWxsKTsKICAgICBBU1NFUlRfR0NfT0JKRUNUX0lOSEVSSVRT
KHRoaXNPYmplY3QsICZzX2luZm8pOwogICAgIHJldHVybiBnZXRTdGF0aWNWYWx1ZVNsb3Q8SlNU
ZXN0TWVkaWFRdWVyeUxpc3RMaXN0ZW5lciwgQmFzZT4oZXhlYywgJkpTVGVzdE1lZGlhUXVlcnlM
aXN0TGlzdGVuZXJUYWJsZSwgdGhpc09iamVjdCwgcHJvcGVydHlOYW1lLCBzbG90KTsKIH0KIAot
Ym9vbCBKU1Rlc3RNZWRpYVF1ZXJ5TGlzdExpc3RlbmVyOjpnZXRPd25Qcm9wZXJ0eURlc2NyaXB0
b3IoSlNPYmplY3QqIG9iamVjdCwgRXhlY1N0YXRlKiBleGVjLCBjb25zdCBJZGVudGlmaWVyJiBw
cm9wZXJ0eU5hbWUsIFByb3BlcnR5RGVzY3JpcHRvciYgZGVzY3JpcHRvcikKK2Jvb2wgSlNUZXN0
TWVkaWFRdWVyeUxpc3RMaXN0ZW5lcjo6Z2V0T3duUHJvcGVydHlEZXNjcmlwdG9yKEpTT2JqZWN0
KiBvYmplY3QsIEV4ZWNTdGF0ZSogZXhlYywgUHJvcGVydHlOYW1lIHByb3BlcnR5TmFtZSwgUHJv
cGVydHlEZXNjcmlwdG9yJiBkZXNjcmlwdG9yKQogewogICAgIEpTVGVzdE1lZGlhUXVlcnlMaXN0
TGlzdGVuZXIqIHRoaXNPYmplY3QgPSBqc0Nhc3Q8SlNUZXN0TWVkaWFRdWVyeUxpc3RMaXN0ZW5l
cio+KG9iamVjdCk7CiAgICAgQVNTRVJUX0dDX09CSkVDVF9JTkhFUklUUyh0aGlzT2JqZWN0LCAm
c19pbmZvKTsKICAgICByZXR1cm4gZ2V0U3RhdGljVmFsdWVEZXNjcmlwdG9yPEpTVGVzdE1lZGlh
UXVlcnlMaXN0TGlzdGVuZXIsIEJhc2U+KGV4ZWMsICZKU1Rlc3RNZWRpYVF1ZXJ5TGlzdExpc3Rl
bmVyVGFibGUsIHRoaXNPYmplY3QsIHByb3BlcnR5TmFtZSwgZGVzY3JpcHRvcik7CiB9CiAKLUpT
VmFsdWUganNUZXN0TWVkaWFRdWVyeUxpc3RMaXN0ZW5lckNvbnN0cnVjdG9yKEV4ZWNTdGF0ZSog
ZXhlYywgSlNWYWx1ZSBzbG90QmFzZSwgY29uc3QgSWRlbnRpZmllciYpCitKU1ZhbHVlIGpzVGVz
dE1lZGlhUXVlcnlMaXN0TGlzdGVuZXJDb25zdHJ1Y3RvcihFeGVjU3RhdGUqIGV4ZWMsIEpTVmFs
dWUgc2xvdEJhc2UsIFByb3BlcnR5TmFtZSkKIHsKICAgICBKU1Rlc3RNZWRpYVF1ZXJ5TGlzdExp
c3RlbmVyKiBkb21PYmplY3QgPSBqc0Nhc3Q8SlNUZXN0TWVkaWFRdWVyeUxpc3RMaXN0ZW5lcio+
KGFzT2JqZWN0KHNsb3RCYXNlKSk7CiAgICAgcmV0dXJuIEpTVGVzdE1lZGlhUXVlcnlMaXN0TGlz
dGVuZXI6OmdldENvbnN0cnVjdG9yKGV4ZWMsIGRvbU9iamVjdC0+Z2xvYmFsT2JqZWN0KCkpOwpJ
bmRleDogU291cmNlL1dlYkNvcmUvYmluZGluZ3Mvc2NyaXB0cy90ZXN0L0pTL0pTVGVzdE1lZGlh
UXVlcnlMaXN0TGlzdGVuZXIuaAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2ViQ29yZS9iaW5kaW5n
cy9zY3JpcHRzL3Rlc3QvSlMvSlNUZXN0TWVkaWFRdWVyeUxpc3RMaXN0ZW5lci5oCShyZXZpc2lv
biAxMTY2NjcpCisrKyBTb3VyY2UvV2ViQ29yZS9iaW5kaW5ncy9zY3JpcHRzL3Rlc3QvSlMvSlNU
ZXN0TWVkaWFRdWVyeUxpc3RMaXN0ZW5lci5oCSh3b3JraW5nIGNvcHkpCkBAIC00MCw4ICs0MCw4
IEBAIHB1YmxpYzoKICAgICB9CiAKICAgICBzdGF0aWMgSlNDOjpKU09iamVjdCogY3JlYXRlUHJv
dG90eXBlKEpTQzo6RXhlY1N0YXRlKiwgSlNDOjpKU0dsb2JhbE9iamVjdCopOwotICAgIHN0YXRp
YyBib29sIGdldE93blByb3BlcnR5U2xvdChKU0M6OkpTQ2VsbCosIEpTQzo6RXhlY1N0YXRlKiwg
Y29uc3QgSlNDOjpJZGVudGlmaWVyJiBwcm9wZXJ0eU5hbWUsIEpTQzo6UHJvcGVydHlTbG90Jik7
Ci0gICAgc3RhdGljIGJvb2wgZ2V0T3duUHJvcGVydHlEZXNjcmlwdG9yKEpTQzo6SlNPYmplY3Qq
LCBKU0M6OkV4ZWNTdGF0ZSosIGNvbnN0IEpTQzo6SWRlbnRpZmllciYgcHJvcGVydHlOYW1lLCBK
U0M6OlByb3BlcnR5RGVzY3JpcHRvciYpOworICAgIHN0YXRpYyBib29sIGdldE93blByb3BlcnR5
U2xvdChKU0M6OkpTQ2VsbCosIEpTQzo6RXhlY1N0YXRlKiwgSlNDOjpQcm9wZXJ0eU5hbWUsIEpT
Qzo6UHJvcGVydHlTbG90Jik7CisgICAgc3RhdGljIGJvb2wgZ2V0T3duUHJvcGVydHlEZXNjcmlw
dG9yKEpTQzo6SlNPYmplY3QqLCBKU0M6OkV4ZWNTdGF0ZSosIEpTQzo6UHJvcGVydHlOYW1lLCBK
U0M6OlByb3BlcnR5RGVzY3JpcHRvciYpOwogICAgIHN0YXRpYyB2b2lkIGRlc3Ryb3koSlNDOjpK
U0NlbGwqKTsKICAgICB+SlNUZXN0TWVkaWFRdWVyeUxpc3RMaXN0ZW5lcigpOwogICAgIHN0YXRp
YyBjb25zdCBKU0M6OkNsYXNzSW5mbyBzX2luZm87CkBAIC05Niw4ICs5Niw4IEBAIHB1YmxpYzoK
ICAgICB9CiAKICAgICBzdGF0aWMgY29uc3QgSlNDOjpDbGFzc0luZm8gc19pbmZvOwotICAgIHN0
YXRpYyBib29sIGdldE93blByb3BlcnR5U2xvdChKU0M6OkpTQ2VsbCosIEpTQzo6RXhlY1N0YXRl
KiwgY29uc3QgSlNDOjpJZGVudGlmaWVyJiwgSlNDOjpQcm9wZXJ0eVNsb3QmKTsKLSAgICBzdGF0
aWMgYm9vbCBnZXRPd25Qcm9wZXJ0eURlc2NyaXB0b3IoSlNDOjpKU09iamVjdCosIEpTQzo6RXhl
Y1N0YXRlKiwgY29uc3QgSlNDOjpJZGVudGlmaWVyJiwgSlNDOjpQcm9wZXJ0eURlc2NyaXB0b3Im
KTsKKyAgICBzdGF0aWMgYm9vbCBnZXRPd25Qcm9wZXJ0eVNsb3QoSlNDOjpKU0NlbGwqLCBKU0M6
OkV4ZWNTdGF0ZSosIEpTQzo6UHJvcGVydHlOYW1lLCBKU0M6OlByb3BlcnR5U2xvdCYpOworICAg
IHN0YXRpYyBib29sIGdldE93blByb3BlcnR5RGVzY3JpcHRvcihKU0M6OkpTT2JqZWN0KiwgSlND
OjpFeGVjU3RhdGUqLCBKU0M6OlByb3BlcnR5TmFtZSwgSlNDOjpQcm9wZXJ0eURlc2NyaXB0b3Im
KTsKICAgICBzdGF0aWMgSlNDOjpTdHJ1Y3R1cmUqIGNyZWF0ZVN0cnVjdHVyZShKU0M6OkpTR2xv
YmFsRGF0YSYgZ2xvYmFsRGF0YSwgSlNDOjpKU0dsb2JhbE9iamVjdCogZ2xvYmFsT2JqZWN0LCBK
U0M6OkpTVmFsdWUgcHJvdG90eXBlKQogICAgIHsKICAgICAgICAgcmV0dXJuIEpTQzo6U3RydWN0
dXJlOjpjcmVhdGUoZ2xvYmFsRGF0YSwgZ2xvYmFsT2JqZWN0LCBwcm90b3R5cGUsIEpTQzo6VHlw
ZUluZm8oSlNDOjpPYmplY3RUeXBlLCBTdHJ1Y3R1cmVGbGFncyksICZzX2luZm8pOwpAQCAtMTIz
LDggKzEyMyw4IEBAIHB1YmxpYzoKICAgICAgICAgcmV0dXJuIHB0cjsKICAgICB9CiAKLSAgICBz
dGF0aWMgYm9vbCBnZXRPd25Qcm9wZXJ0eVNsb3QoSlNDOjpKU0NlbGwqLCBKU0M6OkV4ZWNTdGF0
ZSosIGNvbnN0IEpTQzo6SWRlbnRpZmllciYsIEpTQzo6UHJvcGVydHlTbG90Jik7Ci0gICAgc3Rh
dGljIGJvb2wgZ2V0T3duUHJvcGVydHlEZXNjcmlwdG9yKEpTQzo6SlNPYmplY3QqLCBKU0M6OkV4
ZWNTdGF0ZSosIGNvbnN0IEpTQzo6SWRlbnRpZmllciYsIEpTQzo6UHJvcGVydHlEZXNjcmlwdG9y
Jik7CisgICAgc3RhdGljIGJvb2wgZ2V0T3duUHJvcGVydHlTbG90KEpTQzo6SlNDZWxsKiwgSlND
OjpFeGVjU3RhdGUqLCBKU0M6OlByb3BlcnR5TmFtZSwgSlNDOjpQcm9wZXJ0eVNsb3QmKTsKKyAg
ICBzdGF0aWMgYm9vbCBnZXRPd25Qcm9wZXJ0eURlc2NyaXB0b3IoSlNDOjpKU09iamVjdCosIEpT
Qzo6RXhlY1N0YXRlKiwgSlNDOjpQcm9wZXJ0eU5hbWUsIEpTQzo6UHJvcGVydHlEZXNjcmlwdG9y
Jik7CiAgICAgc3RhdGljIGNvbnN0IEpTQzo6Q2xhc3NJbmZvIHNfaW5mbzsKICAgICBzdGF0aWMg
SlNDOjpTdHJ1Y3R1cmUqIGNyZWF0ZVN0cnVjdHVyZShKU0M6OkpTR2xvYmFsRGF0YSYgZ2xvYmFs
RGF0YSwgSlNDOjpKU0dsb2JhbE9iamVjdCogZ2xvYmFsT2JqZWN0LCBKU0M6OkpTVmFsdWUgcHJv
dG90eXBlKQogICAgIHsKQEAgLTEzOSw3ICsxMzksNyBAQCBwcm90ZWN0ZWQ6CiBKU0M6OkVuY29k
ZWRKU1ZhbHVlIEpTQ19IT1NUX0NBTEwganNUZXN0TWVkaWFRdWVyeUxpc3RMaXN0ZW5lclByb3Rv
dHlwZUZ1bmN0aW9uTWV0aG9kKEpTQzo6RXhlY1N0YXRlKik7CiAvLyBBdHRyaWJ1dGVzCiAKLUpT
Qzo6SlNWYWx1ZSBqc1Rlc3RNZWRpYVF1ZXJ5TGlzdExpc3RlbmVyQ29uc3RydWN0b3IoSlNDOjpF
eGVjU3RhdGUqLCBKU0M6OkpTVmFsdWUsIGNvbnN0IEpTQzo6SWRlbnRpZmllciYpOworSlNDOjpK
U1ZhbHVlIGpzVGVzdE1lZGlhUXVlcnlMaXN0TGlzdGVuZXJDb25zdHJ1Y3RvcihKU0M6OkV4ZWNT
dGF0ZSosIEpTQzo6SlNWYWx1ZSwgSlNDOjpQcm9wZXJ0eU5hbWUpOwogCiB9IC8vIG5hbWVzcGFj
ZSBXZWJDb3JlCiAKSW5kZXg6IFNvdXJjZS9XZWJDb3JlL2JpbmRpbmdzL3NjcmlwdHMvdGVzdC9K
Uy9KU1Rlc3ROYW1lZENvbnN0cnVjdG9yLmNwcAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2ViQ29y
ZS9iaW5kaW5ncy9zY3JpcHRzL3Rlc3QvSlMvSlNUZXN0TmFtZWRDb25zdHJ1Y3Rvci5jcHAJKHJl
dmlzaW9uIDExNjY2NykKKysrIFNvdXJjZS9XZWJDb3JlL2JpbmRpbmdzL3NjcmlwdHMvdGVzdC9K
Uy9KU1Rlc3ROYW1lZENvbnN0cnVjdG9yLmNwcAkod29ya2luZyBjb3B5KQpAQCAtNjMsMTIgKzYz
LDEyIEBAIHZvaWQgSlNUZXN0TmFtZWRDb25zdHJ1Y3RvckNvbnN0cnVjdG9yOjoKICAgICBwdXRE
aXJlY3QoZXhlYy0+Z2xvYmFsRGF0YSgpLCBleGVjLT5wcm9wZXJ0eU5hbWVzKCkucHJvdG90eXBl
LCBKU1Rlc3ROYW1lZENvbnN0cnVjdG9yUHJvdG90eXBlOjpzZWxmKGV4ZWMsIGdsb2JhbE9iamVj
dCksIERvbnREZWxldGUgfCBSZWFkT25seSk7CiB9CiAKLWJvb2wgSlNUZXN0TmFtZWRDb25zdHJ1
Y3RvckNvbnN0cnVjdG9yOjpnZXRPd25Qcm9wZXJ0eVNsb3QoSlNDZWxsKiBjZWxsLCBFeGVjU3Rh
dGUqIGV4ZWMsIGNvbnN0IElkZW50aWZpZXImIHByb3BlcnR5TmFtZSwgUHJvcGVydHlTbG90JiBz
bG90KQorYm9vbCBKU1Rlc3ROYW1lZENvbnN0cnVjdG9yQ29uc3RydWN0b3I6OmdldE93blByb3Bl
cnR5U2xvdChKU0NlbGwqIGNlbGwsIEV4ZWNTdGF0ZSogZXhlYywgUHJvcGVydHlOYW1lIHByb3Bl
cnR5TmFtZSwgUHJvcGVydHlTbG90JiBzbG90KQogewogICAgIHJldHVybiBnZXRTdGF0aWNWYWx1
ZVNsb3Q8SlNUZXN0TmFtZWRDb25zdHJ1Y3RvckNvbnN0cnVjdG9yLCBKU0RPTVdyYXBwZXI+KGV4
ZWMsICZKU1Rlc3ROYW1lZENvbnN0cnVjdG9yQ29uc3RydWN0b3JUYWJsZSwganNDYXN0PEpTVGVz
dE5hbWVkQ29uc3RydWN0b3JDb25zdHJ1Y3Rvcio+KGNlbGwpLCBwcm9wZXJ0eU5hbWUsIHNsb3Qp
OwogfQogCi1ib29sIEpTVGVzdE5hbWVkQ29uc3RydWN0b3JDb25zdHJ1Y3Rvcjo6Z2V0T3duUHJv
cGVydHlEZXNjcmlwdG9yKEpTT2JqZWN0KiBvYmplY3QsIEV4ZWNTdGF0ZSogZXhlYywgY29uc3Qg
SWRlbnRpZmllciYgcHJvcGVydHlOYW1lLCBQcm9wZXJ0eURlc2NyaXB0b3ImIGRlc2NyaXB0b3Ip
Citib29sIEpTVGVzdE5hbWVkQ29uc3RydWN0b3JDb25zdHJ1Y3Rvcjo6Z2V0T3duUHJvcGVydHlE
ZXNjcmlwdG9yKEpTT2JqZWN0KiBvYmplY3QsIEV4ZWNTdGF0ZSogZXhlYywgUHJvcGVydHlOYW1l
IHByb3BlcnR5TmFtZSwgUHJvcGVydHlEZXNjcmlwdG9yJiBkZXNjcmlwdG9yKQogewogICAgIHJl
dHVybiBnZXRTdGF0aWNWYWx1ZURlc2NyaXB0b3I8SlNUZXN0TmFtZWRDb25zdHJ1Y3RvckNvbnN0
cnVjdG9yLCBKU0RPTVdyYXBwZXI+KGV4ZWMsICZKU1Rlc3ROYW1lZENvbnN0cnVjdG9yQ29uc3Ry
dWN0b3JUYWJsZSwganNDYXN0PEpTVGVzdE5hbWVkQ29uc3RydWN0b3JDb25zdHJ1Y3Rvcio+KG9i
amVjdCksIHByb3BlcnR5TmFtZSwgZGVzY3JpcHRvcik7CiB9CkBAIC0xNjEsMjEgKzE2MSwyMSBA
QCBKU1Rlc3ROYW1lZENvbnN0cnVjdG9yOjp+SlNUZXN0TmFtZWRDb25zCiAgICAgcmVsZWFzZUlt
cGxJZk5vdE51bGwoKTsKIH0KIAotYm9vbCBKU1Rlc3ROYW1lZENvbnN0cnVjdG9yOjpnZXRPd25Q
cm9wZXJ0eVNsb3QoSlNDZWxsKiBjZWxsLCBFeGVjU3RhdGUqIGV4ZWMsIGNvbnN0IElkZW50aWZp
ZXImIHByb3BlcnR5TmFtZSwgUHJvcGVydHlTbG90JiBzbG90KQorYm9vbCBKU1Rlc3ROYW1lZENv
bnN0cnVjdG9yOjpnZXRPd25Qcm9wZXJ0eVNsb3QoSlNDZWxsKiBjZWxsLCBFeGVjU3RhdGUqIGV4
ZWMsIFByb3BlcnR5TmFtZSBwcm9wZXJ0eU5hbWUsIFByb3BlcnR5U2xvdCYgc2xvdCkKIHsKICAg
ICBKU1Rlc3ROYW1lZENvbnN0cnVjdG9yKiB0aGlzT2JqZWN0ID0ganNDYXN0PEpTVGVzdE5hbWVk
Q29uc3RydWN0b3IqPihjZWxsKTsKICAgICBBU1NFUlRfR0NfT0JKRUNUX0lOSEVSSVRTKHRoaXNP
YmplY3QsICZzX2luZm8pOwogICAgIHJldHVybiBnZXRTdGF0aWNWYWx1ZVNsb3Q8SlNUZXN0TmFt
ZWRDb25zdHJ1Y3RvciwgQmFzZT4oZXhlYywgJkpTVGVzdE5hbWVkQ29uc3RydWN0b3JUYWJsZSwg
dGhpc09iamVjdCwgcHJvcGVydHlOYW1lLCBzbG90KTsKIH0KIAotYm9vbCBKU1Rlc3ROYW1lZENv
bnN0cnVjdG9yOjpnZXRPd25Qcm9wZXJ0eURlc2NyaXB0b3IoSlNPYmplY3QqIG9iamVjdCwgRXhl
Y1N0YXRlKiBleGVjLCBjb25zdCBJZGVudGlmaWVyJiBwcm9wZXJ0eU5hbWUsIFByb3BlcnR5RGVz
Y3JpcHRvciYgZGVzY3JpcHRvcikKK2Jvb2wgSlNUZXN0TmFtZWRDb25zdHJ1Y3Rvcjo6Z2V0T3du
UHJvcGVydHlEZXNjcmlwdG9yKEpTT2JqZWN0KiBvYmplY3QsIEV4ZWNTdGF0ZSogZXhlYywgUHJv
cGVydHlOYW1lIHByb3BlcnR5TmFtZSwgUHJvcGVydHlEZXNjcmlwdG9yJiBkZXNjcmlwdG9yKQog
ewogICAgIEpTVGVzdE5hbWVkQ29uc3RydWN0b3IqIHRoaXNPYmplY3QgPSBqc0Nhc3Q8SlNUZXN0
TmFtZWRDb25zdHJ1Y3Rvcio+KG9iamVjdCk7CiAgICAgQVNTRVJUX0dDX09CSkVDVF9JTkhFUklU
Uyh0aGlzT2JqZWN0LCAmc19pbmZvKTsKICAgICByZXR1cm4gZ2V0U3RhdGljVmFsdWVEZXNjcmlw
dG9yPEpTVGVzdE5hbWVkQ29uc3RydWN0b3IsIEJhc2U+KGV4ZWMsICZKU1Rlc3ROYW1lZENvbnN0
cnVjdG9yVGFibGUsIHRoaXNPYmplY3QsIHByb3BlcnR5TmFtZSwgZGVzY3JpcHRvcik7CiB9CiAK
LUpTVmFsdWUganNUZXN0TmFtZWRDb25zdHJ1Y3RvckNvbnN0cnVjdG9yKEV4ZWNTdGF0ZSogZXhl
YywgSlNWYWx1ZSBzbG90QmFzZSwgY29uc3QgSWRlbnRpZmllciYpCitKU1ZhbHVlIGpzVGVzdE5h
bWVkQ29uc3RydWN0b3JDb25zdHJ1Y3RvcihFeGVjU3RhdGUqIGV4ZWMsIEpTVmFsdWUgc2xvdEJh
c2UsIFByb3BlcnR5TmFtZSkKIHsKICAgICBKU1Rlc3ROYW1lZENvbnN0cnVjdG9yKiBkb21PYmpl
Y3QgPSBqc0Nhc3Q8SlNUZXN0TmFtZWRDb25zdHJ1Y3Rvcio+KGFzT2JqZWN0KHNsb3RCYXNlKSk7
CiAgICAgcmV0dXJuIEpTVGVzdE5hbWVkQ29uc3RydWN0b3I6OmdldENvbnN0cnVjdG9yKGV4ZWMs
IGRvbU9iamVjdC0+Z2xvYmFsT2JqZWN0KCkpOwpJbmRleDogU291cmNlL1dlYkNvcmUvYmluZGlu
Z3Mvc2NyaXB0cy90ZXN0L0pTL0pTVGVzdE5hbWVkQ29uc3RydWN0b3IuaAo9PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0t
LSBTb3VyY2UvV2ViQ29yZS9iaW5kaW5ncy9zY3JpcHRzL3Rlc3QvSlMvSlNUZXN0TmFtZWRDb25z
dHJ1Y3Rvci5oCShyZXZpc2lvbiAxMTY2NjcpCisrKyBTb3VyY2UvV2ViQ29yZS9iaW5kaW5ncy9z
Y3JpcHRzL3Rlc3QvSlMvSlNUZXN0TmFtZWRDb25zdHJ1Y3Rvci5oCSh3b3JraW5nIGNvcHkpCkBA
IC00MCw4ICs0MCw4IEBAIHB1YmxpYzoKICAgICB9CiAKICAgICBzdGF0aWMgSlNDOjpKU09iamVj
dCogY3JlYXRlUHJvdG90eXBlKEpTQzo6RXhlY1N0YXRlKiwgSlNDOjpKU0dsb2JhbE9iamVjdCop
OwotICAgIHN0YXRpYyBib29sIGdldE93blByb3BlcnR5U2xvdChKU0M6OkpTQ2VsbCosIEpTQzo6
RXhlY1N0YXRlKiwgY29uc3QgSlNDOjpJZGVudGlmaWVyJiBwcm9wZXJ0eU5hbWUsIEpTQzo6UHJv
cGVydHlTbG90Jik7Ci0gICAgc3RhdGljIGJvb2wgZ2V0T3duUHJvcGVydHlEZXNjcmlwdG9yKEpT
Qzo6SlNPYmplY3QqLCBKU0M6OkV4ZWNTdGF0ZSosIGNvbnN0IEpTQzo6SWRlbnRpZmllciYgcHJv
cGVydHlOYW1lLCBKU0M6OlByb3BlcnR5RGVzY3JpcHRvciYpOworICAgIHN0YXRpYyBib29sIGdl
dE93blByb3BlcnR5U2xvdChKU0M6OkpTQ2VsbCosIEpTQzo6RXhlY1N0YXRlKiwgSlNDOjpQcm9w
ZXJ0eU5hbWUsIEpTQzo6UHJvcGVydHlTbG90Jik7CisgICAgc3RhdGljIGJvb2wgZ2V0T3duUHJv
cGVydHlEZXNjcmlwdG9yKEpTQzo6SlNPYmplY3QqLCBKU0M6OkV4ZWNTdGF0ZSosIEpTQzo6UHJv
cGVydHlOYW1lLCBKU0M6OlByb3BlcnR5RGVzY3JpcHRvciYpOwogICAgIHN0YXRpYyB2b2lkIGRl
c3Ryb3koSlNDOjpKU0NlbGwqKTsKICAgICB+SlNUZXN0TmFtZWRDb25zdHJ1Y3RvcigpOwogICAg
IHN0YXRpYyBjb25zdCBKU0M6OkNsYXNzSW5mbyBzX2luZm87CkBAIC0xMjEsOCArMTIxLDggQEAg
cHVibGljOgogICAgICAgICByZXR1cm4gcHRyOwogICAgIH0KIAotICAgIHN0YXRpYyBib29sIGdl
dE93blByb3BlcnR5U2xvdChKU0M6OkpTQ2VsbCosIEpTQzo6RXhlY1N0YXRlKiwgY29uc3QgSlND
OjpJZGVudGlmaWVyJiwgSlNDOjpQcm9wZXJ0eVNsb3QmKTsKLSAgICBzdGF0aWMgYm9vbCBnZXRP
d25Qcm9wZXJ0eURlc2NyaXB0b3IoSlNDOjpKU09iamVjdCosIEpTQzo6RXhlY1N0YXRlKiwgY29u
c3QgSlNDOjpJZGVudGlmaWVyJiwgSlNDOjpQcm9wZXJ0eURlc2NyaXB0b3ImKTsKKyAgICBzdGF0
aWMgYm9vbCBnZXRPd25Qcm9wZXJ0eVNsb3QoSlNDOjpKU0NlbGwqLCBKU0M6OkV4ZWNTdGF0ZSos
IEpTQzo6UHJvcGVydHlOYW1lLCBKU0M6OlByb3BlcnR5U2xvdCYpOworICAgIHN0YXRpYyBib29s
IGdldE93blByb3BlcnR5RGVzY3JpcHRvcihKU0M6OkpTT2JqZWN0KiwgSlNDOjpFeGVjU3RhdGUq
LCBKU0M6OlByb3BlcnR5TmFtZSwgSlNDOjpQcm9wZXJ0eURlc2NyaXB0b3ImKTsKICAgICBzdGF0
aWMgY29uc3QgSlNDOjpDbGFzc0luZm8gc19pbmZvOwogICAgIHN0YXRpYyBKU0M6OlN0cnVjdHVy
ZSogY3JlYXRlU3RydWN0dXJlKEpTQzo6SlNHbG9iYWxEYXRhJiBnbG9iYWxEYXRhLCBKU0M6OkpT
R2xvYmFsT2JqZWN0KiBnbG9iYWxPYmplY3QsIEpTQzo6SlNWYWx1ZSBwcm90b3R5cGUpCiAgICAg
ewpAQCAtMTU5LDcgKzE1OSw3IEBAIHByaXZhdGU6CiAKIC8vIEF0dHJpYnV0ZXMKIAotSlNDOjpK
U1ZhbHVlIGpzVGVzdE5hbWVkQ29uc3RydWN0b3JDb25zdHJ1Y3RvcihKU0M6OkV4ZWNTdGF0ZSos
IEpTQzo6SlNWYWx1ZSwgY29uc3QgSlNDOjpJZGVudGlmaWVyJik7CitKU0M6OkpTVmFsdWUganNU
ZXN0TmFtZWRDb25zdHJ1Y3RvckNvbnN0cnVjdG9yKEpTQzo6RXhlY1N0YXRlKiwgSlNDOjpKU1Zh
bHVlLCBKU0M6OlByb3BlcnR5TmFtZSk7CiAKIH0gLy8gbmFtZXNwYWNlIFdlYkNvcmUKIApJbmRl
eDogU291cmNlL1dlYkNvcmUvYmluZGluZ3Mvc2NyaXB0cy90ZXN0L0pTL0pTVGVzdE5vZGUuY3Bw
Cj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT0KLS0tIFNvdXJjZS9XZWJDb3JlL2JpbmRpbmdzL3NjcmlwdHMvdGVzdC9KUy9K
U1Rlc3ROb2RlLmNwcAkocmV2aXNpb24gMTE2NjY3KQorKysgU291cmNlL1dlYkNvcmUvYmluZGlu
Z3Mvc2NyaXB0cy90ZXN0L0pTL0pTVGVzdE5vZGUuY3BwCSh3b3JraW5nIGNvcHkpCkBAIC02NCwx
MiArNjQsMTIgQEAgdm9pZCBKU1Rlc3ROb2RlQ29uc3RydWN0b3I6OmZpbmlzaENyZWF0aQogICAg
IHB1dERpcmVjdChleGVjLT5nbG9iYWxEYXRhKCksIGV4ZWMtPnByb3BlcnR5TmFtZXMoKS5sZW5n
dGgsIGpzTnVtYmVyKDApLCBSZWFkT25seSB8IERvbnREZWxldGUgfCBEb250RW51bSk7CiB9CiAK
LWJvb2wgSlNUZXN0Tm9kZUNvbnN0cnVjdG9yOjpnZXRPd25Qcm9wZXJ0eVNsb3QoSlNDZWxsKiBj
ZWxsLCBFeGVjU3RhdGUqIGV4ZWMsIGNvbnN0IElkZW50aWZpZXImIHByb3BlcnR5TmFtZSwgUHJv
cGVydHlTbG90JiBzbG90KQorYm9vbCBKU1Rlc3ROb2RlQ29uc3RydWN0b3I6OmdldE93blByb3Bl
cnR5U2xvdChKU0NlbGwqIGNlbGwsIEV4ZWNTdGF0ZSogZXhlYywgUHJvcGVydHlOYW1lIHByb3Bl
cnR5TmFtZSwgUHJvcGVydHlTbG90JiBzbG90KQogewogICAgIHJldHVybiBnZXRTdGF0aWNWYWx1
ZVNsb3Q8SlNUZXN0Tm9kZUNvbnN0cnVjdG9yLCBKU0RPTVdyYXBwZXI+KGV4ZWMsICZKU1Rlc3RO
b2RlQ29uc3RydWN0b3JUYWJsZSwganNDYXN0PEpTVGVzdE5vZGVDb25zdHJ1Y3Rvcio+KGNlbGwp
LCBwcm9wZXJ0eU5hbWUsIHNsb3QpOwogfQogCi1ib29sIEpTVGVzdE5vZGVDb25zdHJ1Y3Rvcjo6
Z2V0T3duUHJvcGVydHlEZXNjcmlwdG9yKEpTT2JqZWN0KiBvYmplY3QsIEV4ZWNTdGF0ZSogZXhl
YywgY29uc3QgSWRlbnRpZmllciYgcHJvcGVydHlOYW1lLCBQcm9wZXJ0eURlc2NyaXB0b3ImIGRl
c2NyaXB0b3IpCitib29sIEpTVGVzdE5vZGVDb25zdHJ1Y3Rvcjo6Z2V0T3duUHJvcGVydHlEZXNj
cmlwdG9yKEpTT2JqZWN0KiBvYmplY3QsIEV4ZWNTdGF0ZSogZXhlYywgUHJvcGVydHlOYW1lIHBy
b3BlcnR5TmFtZSwgUHJvcGVydHlEZXNjcmlwdG9yJiBkZXNjcmlwdG9yKQogewogICAgIHJldHVy
biBnZXRTdGF0aWNWYWx1ZURlc2NyaXB0b3I8SlNUZXN0Tm9kZUNvbnN0cnVjdG9yLCBKU0RPTVdy
YXBwZXI+KGV4ZWMsICZKU1Rlc3ROb2RlQ29uc3RydWN0b3JUYWJsZSwganNDYXN0PEpTVGVzdE5v
ZGVDb25zdHJ1Y3Rvcio+KG9iamVjdCksIHByb3BlcnR5TmFtZSwgZGVzY3JpcHRvcik7CiB9CkBA
IC0xMjAsMjEgKzEyMCwyMSBAQCBKU09iamVjdCogSlNUZXN0Tm9kZTo6Y3JlYXRlUHJvdG90eXBl
KEV4CiAgICAgcmV0dXJuIEpTVGVzdE5vZGVQcm90b3R5cGU6OmNyZWF0ZShleGVjLT5nbG9iYWxE
YXRhKCksIGdsb2JhbE9iamVjdCwgSlNUZXN0Tm9kZVByb3RvdHlwZTo6Y3JlYXRlU3RydWN0dXJl
KGV4ZWMtPmdsb2JhbERhdGEoKSwgZ2xvYmFsT2JqZWN0LCBKU05vZGVQcm90b3R5cGU6OnNlbGYo
ZXhlYywgZ2xvYmFsT2JqZWN0KSkpOwogfQogCi1ib29sIEpTVGVzdE5vZGU6OmdldE93blByb3Bl
cnR5U2xvdChKU0NlbGwqIGNlbGwsIEV4ZWNTdGF0ZSogZXhlYywgY29uc3QgSWRlbnRpZmllciYg
cHJvcGVydHlOYW1lLCBQcm9wZXJ0eVNsb3QmIHNsb3QpCitib29sIEpTVGVzdE5vZGU6OmdldE93
blByb3BlcnR5U2xvdChKU0NlbGwqIGNlbGwsIEV4ZWNTdGF0ZSogZXhlYywgUHJvcGVydHlOYW1l
IHByb3BlcnR5TmFtZSwgUHJvcGVydHlTbG90JiBzbG90KQogewogICAgIEpTVGVzdE5vZGUqIHRo
aXNPYmplY3QgPSBqc0Nhc3Q8SlNUZXN0Tm9kZSo+KGNlbGwpOwogICAgIEFTU0VSVF9HQ19PQkpF
Q1RfSU5IRVJJVFModGhpc09iamVjdCwgJnNfaW5mbyk7CiAgICAgcmV0dXJuIGdldFN0YXRpY1Zh
bHVlU2xvdDxKU1Rlc3ROb2RlLCBCYXNlPihleGVjLCAmSlNUZXN0Tm9kZVRhYmxlLCB0aGlzT2Jq
ZWN0LCBwcm9wZXJ0eU5hbWUsIHNsb3QpOwogfQogCi1ib29sIEpTVGVzdE5vZGU6OmdldE93blBy
b3BlcnR5RGVzY3JpcHRvcihKU09iamVjdCogb2JqZWN0LCBFeGVjU3RhdGUqIGV4ZWMsIGNvbnN0
IElkZW50aWZpZXImIHByb3BlcnR5TmFtZSwgUHJvcGVydHlEZXNjcmlwdG9yJiBkZXNjcmlwdG9y
KQorYm9vbCBKU1Rlc3ROb2RlOjpnZXRPd25Qcm9wZXJ0eURlc2NyaXB0b3IoSlNPYmplY3QqIG9i
amVjdCwgRXhlY1N0YXRlKiBleGVjLCBQcm9wZXJ0eU5hbWUgcHJvcGVydHlOYW1lLCBQcm9wZXJ0
eURlc2NyaXB0b3ImIGRlc2NyaXB0b3IpCiB7CiAgICAgSlNUZXN0Tm9kZSogdGhpc09iamVjdCA9
IGpzQ2FzdDxKU1Rlc3ROb2RlKj4ob2JqZWN0KTsKICAgICBBU1NFUlRfR0NfT0JKRUNUX0lOSEVS
SVRTKHRoaXNPYmplY3QsICZzX2luZm8pOwogICAgIHJldHVybiBnZXRTdGF0aWNWYWx1ZURlc2Ny
aXB0b3I8SlNUZXN0Tm9kZSwgQmFzZT4oZXhlYywgJkpTVGVzdE5vZGVUYWJsZSwgdGhpc09iamVj
dCwgcHJvcGVydHlOYW1lLCBkZXNjcmlwdG9yKTsKIH0KIAotSlNWYWx1ZSBqc1Rlc3ROb2RlQ29u
c3RydWN0b3IoRXhlY1N0YXRlKiBleGVjLCBKU1ZhbHVlIHNsb3RCYXNlLCBjb25zdCBJZGVudGlm
aWVyJikKK0pTVmFsdWUganNUZXN0Tm9kZUNvbnN0cnVjdG9yKEV4ZWNTdGF0ZSogZXhlYywgSlNW
YWx1ZSBzbG90QmFzZSwgUHJvcGVydHlOYW1lKQogewogICAgIEpTVGVzdE5vZGUqIGRvbU9iamVj
dCA9IGpzQ2FzdDxKU1Rlc3ROb2RlKj4oYXNPYmplY3Qoc2xvdEJhc2UpKTsKICAgICByZXR1cm4g
SlNUZXN0Tm9kZTo6Z2V0Q29uc3RydWN0b3IoZXhlYywgZG9tT2JqZWN0LT5nbG9iYWxPYmplY3Qo
KSk7CkluZGV4OiBTb3VyY2UvV2ViQ29yZS9iaW5kaW5ncy9zY3JpcHRzL3Rlc3QvSlMvSlNUZXN0
Tm9kZS5oCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9XZWJDb3JlL2JpbmRpbmdzL3NjcmlwdHMvdGVz
dC9KUy9KU1Rlc3ROb2RlLmgJKHJldmlzaW9uIDExNjY2NykKKysrIFNvdXJjZS9XZWJDb3JlL2Jp
bmRpbmdzL3NjcmlwdHMvdGVzdC9KUy9KU1Rlc3ROb2RlLmgJKHdvcmtpbmcgY29weSkKQEAgLTM5
LDggKzM5LDggQEAgcHVibGljOgogICAgIH0KIAogICAgIHN0YXRpYyBKU0M6OkpTT2JqZWN0KiBj
cmVhdGVQcm90b3R5cGUoSlNDOjpFeGVjU3RhdGUqLCBKU0M6OkpTR2xvYmFsT2JqZWN0Kik7Ci0g
ICAgc3RhdGljIGJvb2wgZ2V0T3duUHJvcGVydHlTbG90KEpTQzo6SlNDZWxsKiwgSlNDOjpFeGVj
U3RhdGUqLCBjb25zdCBKU0M6OklkZW50aWZpZXImIHByb3BlcnR5TmFtZSwgSlNDOjpQcm9wZXJ0
eVNsb3QmKTsKLSAgICBzdGF0aWMgYm9vbCBnZXRPd25Qcm9wZXJ0eURlc2NyaXB0b3IoSlNDOjpK
U09iamVjdCosIEpTQzo6RXhlY1N0YXRlKiwgY29uc3QgSlNDOjpJZGVudGlmaWVyJiBwcm9wZXJ0
eU5hbWUsIEpTQzo6UHJvcGVydHlEZXNjcmlwdG9yJik7CisgICAgc3RhdGljIGJvb2wgZ2V0T3du
UHJvcGVydHlTbG90KEpTQzo6SlNDZWxsKiwgSlNDOjpFeGVjU3RhdGUqLCBKU0M6OlByb3BlcnR5
TmFtZSwgSlNDOjpQcm9wZXJ0eVNsb3QmKTsKKyAgICBzdGF0aWMgYm9vbCBnZXRPd25Qcm9wZXJ0
eURlc2NyaXB0b3IoSlNDOjpKU09iamVjdCosIEpTQzo6RXhlY1N0YXRlKiwgSlNDOjpQcm9wZXJ0
eU5hbWUsIEpTQzo6UHJvcGVydHlEZXNjcmlwdG9yJik7CiAgICAgc3RhdGljIGNvbnN0IEpTQzo6
Q2xhc3NJbmZvIHNfaW5mbzsKIAogICAgIHN0YXRpYyBKU0M6OlN0cnVjdHVyZSogY3JlYXRlU3Ry
dWN0dXJlKEpTQzo6SlNHbG9iYWxEYXRhJiBnbG9iYWxEYXRhLCBKU0M6OkpTR2xvYmFsT2JqZWN0
KiBnbG9iYWxPYmplY3QsIEpTQzo6SlNWYWx1ZSBwcm90b3R5cGUpCkBAIC05NSw4ICs5NSw4IEBA
IHB1YmxpYzoKICAgICAgICAgcmV0dXJuIHB0cjsKICAgICB9CiAKLSAgICBzdGF0aWMgYm9vbCBn
ZXRPd25Qcm9wZXJ0eVNsb3QoSlNDOjpKU0NlbGwqLCBKU0M6OkV4ZWNTdGF0ZSosIGNvbnN0IEpT
Qzo6SWRlbnRpZmllciYsIEpTQzo6UHJvcGVydHlTbG90Jik7Ci0gICAgc3RhdGljIGJvb2wgZ2V0
T3duUHJvcGVydHlEZXNjcmlwdG9yKEpTQzo6SlNPYmplY3QqLCBKU0M6OkV4ZWNTdGF0ZSosIGNv
bnN0IEpTQzo6SWRlbnRpZmllciYsIEpTQzo6UHJvcGVydHlEZXNjcmlwdG9yJik7CisgICAgc3Rh
dGljIGJvb2wgZ2V0T3duUHJvcGVydHlTbG90KEpTQzo6SlNDZWxsKiwgSlNDOjpFeGVjU3RhdGUq
LCBKU0M6OlByb3BlcnR5TmFtZSwgSlNDOjpQcm9wZXJ0eVNsb3QmKTsKKyAgICBzdGF0aWMgYm9v
bCBnZXRPd25Qcm9wZXJ0eURlc2NyaXB0b3IoSlNDOjpKU09iamVjdCosIEpTQzo6RXhlY1N0YXRl
KiwgSlNDOjpQcm9wZXJ0eU5hbWUsIEpTQzo6UHJvcGVydHlEZXNjcmlwdG9yJik7CiAgICAgc3Rh
dGljIGNvbnN0IEpTQzo6Q2xhc3NJbmZvIHNfaW5mbzsKICAgICBzdGF0aWMgSlNDOjpTdHJ1Y3R1
cmUqIGNyZWF0ZVN0cnVjdHVyZShKU0M6OkpTR2xvYmFsRGF0YSYgZ2xvYmFsRGF0YSwgSlNDOjpK
U0dsb2JhbE9iamVjdCogZ2xvYmFsT2JqZWN0LCBKU0M6OkpTVmFsdWUgcHJvdG90eXBlKQogICAg
IHsKQEAgLTExMCw3ICsxMTAsNyBAQCBwcm90ZWN0ZWQ6CiAKIC8vIEF0dHJpYnV0ZXMKIAotSlND
OjpKU1ZhbHVlIGpzVGVzdE5vZGVDb25zdHJ1Y3RvcihKU0M6OkV4ZWNTdGF0ZSosIEpTQzo6SlNW
YWx1ZSwgY29uc3QgSlNDOjpJZGVudGlmaWVyJik7CitKU0M6OkpTVmFsdWUganNUZXN0Tm9kZUNv
bnN0cnVjdG9yKEpTQzo6RXhlY1N0YXRlKiwgSlNDOjpKU1ZhbHVlLCBKU0M6OlByb3BlcnR5TmFt
ZSk7CiAKIH0gLy8gbmFtZXNwYWNlIFdlYkNvcmUKIApJbmRleDogU291cmNlL1dlYkNvcmUvYmlu
ZGluZ3Mvc2NyaXB0cy90ZXN0L0pTL0pTVGVzdE9iai5jcHAKPT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNl
L1dlYkNvcmUvYmluZGluZ3Mvc2NyaXB0cy90ZXN0L0pTL0pTVGVzdE9iai5jcHAJKHJldmlzaW9u
IDExNjY2NykKKysrIFNvdXJjZS9XZWJDb3JlL2JpbmRpbmdzL3NjcmlwdHMvdGVzdC9KUy9KU1Rl
c3RPYmouY3BwCSh3b3JraW5nIGNvcHkpCkBAIC0yMjEsMTIgKzIyMSwxMiBAQCB2b2lkIEpTVGVz
dE9iakNvbnN0cnVjdG9yOjpmaW5pc2hDcmVhdGlvCiAgICAgcHV0RGlyZWN0KGV4ZWMtPmdsb2Jh
bERhdGEoKSwgZXhlYy0+cHJvcGVydHlOYW1lcygpLmxlbmd0aCwganNOdW1iZXIoMSksIFJlYWRP
bmx5IHwgRG9udERlbGV0ZSB8IERvbnRFbnVtKTsKIH0KIAotYm9vbCBKU1Rlc3RPYmpDb25zdHJ1
Y3Rvcjo6Z2V0T3duUHJvcGVydHlTbG90KEpTQ2VsbCogY2VsbCwgRXhlY1N0YXRlKiBleGVjLCBj
b25zdCBJZGVudGlmaWVyJiBwcm9wZXJ0eU5hbWUsIFByb3BlcnR5U2xvdCYgc2xvdCkKK2Jvb2wg
SlNUZXN0T2JqQ29uc3RydWN0b3I6OmdldE93blByb3BlcnR5U2xvdChKU0NlbGwqIGNlbGwsIEV4
ZWNTdGF0ZSogZXhlYywgUHJvcGVydHlOYW1lIHByb3BlcnR5TmFtZSwgUHJvcGVydHlTbG90JiBz
bG90KQogewogICAgIHJldHVybiBnZXRTdGF0aWNQcm9wZXJ0eVNsb3Q8SlNUZXN0T2JqQ29uc3Ry
dWN0b3IsIEpTRE9NV3JhcHBlcj4oZXhlYywgJkpTVGVzdE9iakNvbnN0cnVjdG9yVGFibGUsIGpz
Q2FzdDxKU1Rlc3RPYmpDb25zdHJ1Y3Rvcio+KGNlbGwpLCBwcm9wZXJ0eU5hbWUsIHNsb3QpOwog
fQogCi1ib29sIEpTVGVzdE9iakNvbnN0cnVjdG9yOjpnZXRPd25Qcm9wZXJ0eURlc2NyaXB0b3Io
SlNPYmplY3QqIG9iamVjdCwgRXhlY1N0YXRlKiBleGVjLCBjb25zdCBJZGVudGlmaWVyJiBwcm9w
ZXJ0eU5hbWUsIFByb3BlcnR5RGVzY3JpcHRvciYgZGVzY3JpcHRvcikKK2Jvb2wgSlNUZXN0T2Jq
Q29uc3RydWN0b3I6OmdldE93blByb3BlcnR5RGVzY3JpcHRvcihKU09iamVjdCogb2JqZWN0LCBF
eGVjU3RhdGUqIGV4ZWMsIFByb3BlcnR5TmFtZSBwcm9wZXJ0eU5hbWUsIFByb3BlcnR5RGVzY3Jp
cHRvciYgZGVzY3JpcHRvcikKIHsKICAgICByZXR1cm4gZ2V0U3RhdGljUHJvcGVydHlEZXNjcmlw
dG9yPEpTVGVzdE9iakNvbnN0cnVjdG9yLCBKU0RPTVdyYXBwZXI+KGV4ZWMsICZKU1Rlc3RPYmpD
b25zdHJ1Y3RvclRhYmxlLCBqc0Nhc3Q8SlNUZXN0T2JqQ29uc3RydWN0b3IqPihvYmplY3QpLCBw
cm9wZXJ0eU5hbWUsIGRlc2NyaXB0b3IpOwogfQpAQCAtMzM3LDEzICszMzcsMTMgQEAgSlNPYmpl
Y3QqIEpTVGVzdE9ialByb3RvdHlwZTo6c2VsZihFeGVjUwogICAgIHJldHVybiBnZXRET01Qcm90
b3R5cGU8SlNUZXN0T2JqPihleGVjLCBnbG9iYWxPYmplY3QpOwogfQogCi1ib29sIEpTVGVzdE9i
alByb3RvdHlwZTo6Z2V0T3duUHJvcGVydHlTbG90KEpTQ2VsbCogY2VsbCwgRXhlY1N0YXRlKiBl
eGVjLCBjb25zdCBJZGVudGlmaWVyJiBwcm9wZXJ0eU5hbWUsIFByb3BlcnR5U2xvdCYgc2xvdCkK
K2Jvb2wgSlNUZXN0T2JqUHJvdG90eXBlOjpnZXRPd25Qcm9wZXJ0eVNsb3QoSlNDZWxsKiBjZWxs
LCBFeGVjU3RhdGUqIGV4ZWMsIFByb3BlcnR5TmFtZSBwcm9wZXJ0eU5hbWUsIFByb3BlcnR5U2xv
dCYgc2xvdCkKIHsKICAgICBKU1Rlc3RPYmpQcm90b3R5cGUqIHRoaXNPYmplY3QgPSBqc0Nhc3Q8
SlNUZXN0T2JqUHJvdG90eXBlKj4oY2VsbCk7CiAgICAgcmV0dXJuIGdldFN0YXRpY1Byb3BlcnR5
U2xvdDxKU1Rlc3RPYmpQcm90b3R5cGUsIEpTT2JqZWN0PihleGVjLCAmSlNUZXN0T2JqUHJvdG90
eXBlVGFibGUsIHRoaXNPYmplY3QsIHByb3BlcnR5TmFtZSwgc2xvdCk7CiB9CiAKLWJvb2wgSlNU
ZXN0T2JqUHJvdG90eXBlOjpnZXRPd25Qcm9wZXJ0eURlc2NyaXB0b3IoSlNPYmplY3QqIG9iamVj
dCwgRXhlY1N0YXRlKiBleGVjLCBjb25zdCBJZGVudGlmaWVyJiBwcm9wZXJ0eU5hbWUsIFByb3Bl
cnR5RGVzY3JpcHRvciYgZGVzY3JpcHRvcikKK2Jvb2wgSlNUZXN0T2JqUHJvdG90eXBlOjpnZXRP
d25Qcm9wZXJ0eURlc2NyaXB0b3IoSlNPYmplY3QqIG9iamVjdCwgRXhlY1N0YXRlKiBleGVjLCBQ
cm9wZXJ0eU5hbWUgcHJvcGVydHlOYW1lLCBQcm9wZXJ0eURlc2NyaXB0b3ImIGRlc2NyaXB0b3Ip
CiB7CiAgICAgSlNUZXN0T2JqUHJvdG90eXBlKiB0aGlzT2JqZWN0ID0ganNDYXN0PEpTVGVzdE9i
alByb3RvdHlwZSo+KG9iamVjdCk7CiAgICAgcmV0dXJuIGdldFN0YXRpY1Byb3BlcnR5RGVzY3Jp
cHRvcjxKU1Rlc3RPYmpQcm90b3R5cGUsIEpTT2JqZWN0PihleGVjLCAmSlNUZXN0T2JqUHJvdG90
eXBlVGFibGUsIHRoaXNPYmplY3QsIHByb3BlcnR5TmFtZSwgZGVzY3JpcHRvcik7CkBAIC0zNzks
MjEgKzM3OSwyMSBAQCBKU1Rlc3RPYmo6On5KU1Rlc3RPYmooKQogICAgIHJlbGVhc2VJbXBsSWZO
b3ROdWxsKCk7CiB9CiAKLWJvb2wgSlNUZXN0T2JqOjpnZXRPd25Qcm9wZXJ0eVNsb3QoSlNDZWxs
KiBjZWxsLCBFeGVjU3RhdGUqIGV4ZWMsIGNvbnN0IElkZW50aWZpZXImIHByb3BlcnR5TmFtZSwg
UHJvcGVydHlTbG90JiBzbG90KQorYm9vbCBKU1Rlc3RPYmo6OmdldE93blByb3BlcnR5U2xvdChK
U0NlbGwqIGNlbGwsIEV4ZWNTdGF0ZSogZXhlYywgUHJvcGVydHlOYW1lIHByb3BlcnR5TmFtZSwg
UHJvcGVydHlTbG90JiBzbG90KQogewogICAgIEpTVGVzdE9iaiogdGhpc09iamVjdCA9IGpzQ2Fz
dDxKU1Rlc3RPYmoqPihjZWxsKTsKICAgICBBU1NFUlRfR0NfT0JKRUNUX0lOSEVSSVRTKHRoaXNP
YmplY3QsICZzX2luZm8pOwogICAgIHJldHVybiBnZXRTdGF0aWNWYWx1ZVNsb3Q8SlNUZXN0T2Jq
LCBCYXNlPihleGVjLCAmSlNUZXN0T2JqVGFibGUsIHRoaXNPYmplY3QsIHByb3BlcnR5TmFtZSwg
c2xvdCk7CiB9CiAKLWJvb2wgSlNUZXN0T2JqOjpnZXRPd25Qcm9wZXJ0eURlc2NyaXB0b3IoSlNP
YmplY3QqIG9iamVjdCwgRXhlY1N0YXRlKiBleGVjLCBjb25zdCBJZGVudGlmaWVyJiBwcm9wZXJ0
eU5hbWUsIFByb3BlcnR5RGVzY3JpcHRvciYgZGVzY3JpcHRvcikKK2Jvb2wgSlNUZXN0T2JqOjpn
ZXRPd25Qcm9wZXJ0eURlc2NyaXB0b3IoSlNPYmplY3QqIG9iamVjdCwgRXhlY1N0YXRlKiBleGVj
LCBQcm9wZXJ0eU5hbWUgcHJvcGVydHlOYW1lLCBQcm9wZXJ0eURlc2NyaXB0b3ImIGRlc2NyaXB0
b3IpCiB7CiAgICAgSlNUZXN0T2JqKiB0aGlzT2JqZWN0ID0ganNDYXN0PEpTVGVzdE9iaio+KG9i
amVjdCk7CiAgICAgQVNTRVJUX0dDX09CSkVDVF9JTkhFUklUUyh0aGlzT2JqZWN0LCAmc19pbmZv
KTsKICAgICByZXR1cm4gZ2V0U3RhdGljVmFsdWVEZXNjcmlwdG9yPEpTVGVzdE9iaiwgQmFzZT4o
ZXhlYywgJkpTVGVzdE9ialRhYmxlLCB0aGlzT2JqZWN0LCBwcm9wZXJ0eU5hbWUsIGRlc2NyaXB0
b3IpOwogfQogCi1KU1ZhbHVlIGpzVGVzdE9ialJlYWRPbmx5SW50QXR0cihFeGVjU3RhdGUqIGV4
ZWMsIEpTVmFsdWUgc2xvdEJhc2UsIGNvbnN0IElkZW50aWZpZXImKQorSlNWYWx1ZSBqc1Rlc3RP
YmpSZWFkT25seUludEF0dHIoRXhlY1N0YXRlKiBleGVjLCBKU1ZhbHVlIHNsb3RCYXNlLCBQcm9w
ZXJ0eU5hbWUpCiB7CiAgICAgSlNUZXN0T2JqKiBjYXN0ZWRUaGlzID0ganNDYXN0PEpTVGVzdE9i
aio+KGFzT2JqZWN0KHNsb3RCYXNlKSk7CiAgICAgVU5VU0VEX1BBUkFNKGV4ZWMpOwpAQCAtNDAz
LDcgKzQwMyw3IEBAIEpTVmFsdWUganNUZXN0T2JqUmVhZE9ubHlJbnRBdHRyKEV4ZWNTdGEKIH0K
IAogCi1KU1ZhbHVlIGpzVGVzdE9ialJlYWRPbmx5U3RyaW5nQXR0cihFeGVjU3RhdGUqIGV4ZWMs
IEpTVmFsdWUgc2xvdEJhc2UsIGNvbnN0IElkZW50aWZpZXImKQorSlNWYWx1ZSBqc1Rlc3RPYmpS
ZWFkT25seVN0cmluZ0F0dHIoRXhlY1N0YXRlKiBleGVjLCBKU1ZhbHVlIHNsb3RCYXNlLCBQcm9w
ZXJ0eU5hbWUpCiB7CiAgICAgSlNUZXN0T2JqKiBjYXN0ZWRUaGlzID0ganNDYXN0PEpTVGVzdE9i
aio+KGFzT2JqZWN0KHNsb3RCYXNlKSk7CiAgICAgVU5VU0VEX1BBUkFNKGV4ZWMpOwpAQCAtNDEz
LDcgKzQxMyw3IEBAIEpTVmFsdWUganNUZXN0T2JqUmVhZE9ubHlTdHJpbmdBdHRyKEV4ZWMKIH0K
IAogCi1KU1ZhbHVlIGpzVGVzdE9ialJlYWRPbmx5VGVzdE9iakF0dHIoRXhlY1N0YXRlKiBleGVj
LCBKU1ZhbHVlIHNsb3RCYXNlLCBjb25zdCBJZGVudGlmaWVyJikKK0pTVmFsdWUganNUZXN0T2Jq
UmVhZE9ubHlUZXN0T2JqQXR0cihFeGVjU3RhdGUqIGV4ZWMsIEpTVmFsdWUgc2xvdEJhc2UsIFBy
b3BlcnR5TmFtZSkKIHsKICAgICBKU1Rlc3RPYmoqIGNhc3RlZFRoaXMgPSBqc0Nhc3Q8SlNUZXN0
T2JqKj4oYXNPYmplY3Qoc2xvdEJhc2UpKTsKICAgICBVTlVTRURfUEFSQU0oZXhlYyk7CkBAIC00
MjMsNyArNDIzLDcgQEAgSlNWYWx1ZSBqc1Rlc3RPYmpSZWFkT25seVRlc3RPYmpBdHRyKEV4ZQog
fQogCiAKLUpTVmFsdWUganNUZXN0T2JqU2hvcnRBdHRyKEV4ZWNTdGF0ZSogZXhlYywgSlNWYWx1
ZSBzbG90QmFzZSwgY29uc3QgSWRlbnRpZmllciYpCitKU1ZhbHVlIGpzVGVzdE9ialNob3J0QXR0
cihFeGVjU3RhdGUqIGV4ZWMsIEpTVmFsdWUgc2xvdEJhc2UsIFByb3BlcnR5TmFtZSkKIHsKICAg
ICBKU1Rlc3RPYmoqIGNhc3RlZFRoaXMgPSBqc0Nhc3Q8SlNUZXN0T2JqKj4oYXNPYmplY3Qoc2xv
dEJhc2UpKTsKICAgICBVTlVTRURfUEFSQU0oZXhlYyk7CkBAIC00MzMsNyArNDMzLDcgQEAgSlNW
YWx1ZSBqc1Rlc3RPYmpTaG9ydEF0dHIoRXhlY1N0YXRlKiBleAogfQogCiAKLUpTVmFsdWUganNU
ZXN0T2JqVW5zaWduZWRTaG9ydEF0dHIoRXhlY1N0YXRlKiBleGVjLCBKU1ZhbHVlIHNsb3RCYXNl
LCBjb25zdCBJZGVudGlmaWVyJikKK0pTVmFsdWUganNUZXN0T2JqVW5zaWduZWRTaG9ydEF0dHIo
RXhlY1N0YXRlKiBleGVjLCBKU1ZhbHVlIHNsb3RCYXNlLCBQcm9wZXJ0eU5hbWUpCiB7CiAgICAg
SlNUZXN0T2JqKiBjYXN0ZWRUaGlzID0ganNDYXN0PEpTVGVzdE9iaio+KGFzT2JqZWN0KHNsb3RC
YXNlKSk7CiAgICAgVU5VU0VEX1BBUkFNKGV4ZWMpOwpAQCAtNDQzLDcgKzQ0Myw3IEBAIEpTVmFs
dWUganNUZXN0T2JqVW5zaWduZWRTaG9ydEF0dHIoRXhlY1MKIH0KIAogCi1KU1ZhbHVlIGpzVGVz
dE9iakludEF0dHIoRXhlY1N0YXRlKiBleGVjLCBKU1ZhbHVlIHNsb3RCYXNlLCBjb25zdCBJZGVu
dGlmaWVyJikKK0pTVmFsdWUganNUZXN0T2JqSW50QXR0cihFeGVjU3RhdGUqIGV4ZWMsIEpTVmFs
dWUgc2xvdEJhc2UsIFByb3BlcnR5TmFtZSkKIHsKICAgICBKU1Rlc3RPYmoqIGNhc3RlZFRoaXMg
PSBqc0Nhc3Q8SlNUZXN0T2JqKj4oYXNPYmplY3Qoc2xvdEJhc2UpKTsKICAgICBVTlVTRURfUEFS
QU0oZXhlYyk7CkBAIC00NTMsNyArNDUzLDcgQEAgSlNWYWx1ZSBqc1Rlc3RPYmpJbnRBdHRyKEV4
ZWNTdGF0ZSogZXhlYwogfQogCiAKLUpTVmFsdWUganNUZXN0T2JqTG9uZ0xvbmdBdHRyKEV4ZWNT
dGF0ZSogZXhlYywgSlNWYWx1ZSBzbG90QmFzZSwgY29uc3QgSWRlbnRpZmllciYpCitKU1ZhbHVl
IGpzVGVzdE9iakxvbmdMb25nQXR0cihFeGVjU3RhdGUqIGV4ZWMsIEpTVmFsdWUgc2xvdEJhc2Us
IFByb3BlcnR5TmFtZSkKIHsKICAgICBKU1Rlc3RPYmoqIGNhc3RlZFRoaXMgPSBqc0Nhc3Q8SlNU
ZXN0T2JqKj4oYXNPYmplY3Qoc2xvdEJhc2UpKTsKICAgICBVTlVTRURfUEFSQU0oZXhlYyk7CkBA
IC00NjMsNyArNDYzLDcgQEAgSlNWYWx1ZSBqc1Rlc3RPYmpMb25nTG9uZ0F0dHIoRXhlY1N0YXRl
KgogfQogCiAKLUpTVmFsdWUganNUZXN0T2JqVW5zaWduZWRMb25nTG9uZ0F0dHIoRXhlY1N0YXRl
KiBleGVjLCBKU1ZhbHVlIHNsb3RCYXNlLCBjb25zdCBJZGVudGlmaWVyJikKK0pTVmFsdWUganNU
ZXN0T2JqVW5zaWduZWRMb25nTG9uZ0F0dHIoRXhlY1N0YXRlKiBleGVjLCBKU1ZhbHVlIHNsb3RC
YXNlLCBQcm9wZXJ0eU5hbWUpCiB7CiAgICAgSlNUZXN0T2JqKiBjYXN0ZWRUaGlzID0ganNDYXN0
PEpTVGVzdE9iaio+KGFzT2JqZWN0KHNsb3RCYXNlKSk7CiAgICAgVU5VU0VEX1BBUkFNKGV4ZWMp
OwpAQCAtNDczLDcgKzQ3Myw3IEBAIEpTVmFsdWUganNUZXN0T2JqVW5zaWduZWRMb25nTG9uZ0F0
dHIoRXgKIH0KIAogCi1KU1ZhbHVlIGpzVGVzdE9ialN0cmluZ0F0dHIoRXhlY1N0YXRlKiBleGVj
LCBKU1ZhbHVlIHNsb3RCYXNlLCBjb25zdCBJZGVudGlmaWVyJikKK0pTVmFsdWUganNUZXN0T2Jq
U3RyaW5nQXR0cihFeGVjU3RhdGUqIGV4ZWMsIEpTVmFsdWUgc2xvdEJhc2UsIFByb3BlcnR5TmFt
ZSkKIHsKICAgICBKU1Rlc3RPYmoqIGNhc3RlZFRoaXMgPSBqc0Nhc3Q8SlNUZXN0T2JqKj4oYXNP
YmplY3Qoc2xvdEJhc2UpKTsKICAgICBVTlVTRURfUEFSQU0oZXhlYyk7CkBAIC00ODMsNyArNDgz
LDcgQEAgSlNWYWx1ZSBqc1Rlc3RPYmpTdHJpbmdBdHRyKEV4ZWNTdGF0ZSogZQogfQogCiAKLUpT
VmFsdWUganNUZXN0T2JqVGVzdE9iakF0dHIoRXhlY1N0YXRlKiBleGVjLCBKU1ZhbHVlIHNsb3RC
YXNlLCBjb25zdCBJZGVudGlmaWVyJikKK0pTVmFsdWUganNUZXN0T2JqVGVzdE9iakF0dHIoRXhl
Y1N0YXRlKiBleGVjLCBKU1ZhbHVlIHNsb3RCYXNlLCBQcm9wZXJ0eU5hbWUpCiB7CiAgICAgSlNU
ZXN0T2JqKiBjYXN0ZWRUaGlzID0ganNDYXN0PEpTVGVzdE9iaio+KGFzT2JqZWN0KHNsb3RCYXNl
KSk7CiAgICAgVU5VU0VEX1BBUkFNKGV4ZWMpOwpAQCAtNDkzLDcgKzQ5Myw3IEBAIEpTVmFsdWUg
anNUZXN0T2JqVGVzdE9iakF0dHIoRXhlY1N0YXRlKiAKIH0KIAogCi1KU1ZhbHVlIGpzVGVzdE9i
alNlcXVlbmNlQXR0cihFeGVjU3RhdGUqIGV4ZWMsIEpTVmFsdWUgc2xvdEJhc2UsIGNvbnN0IElk
ZW50aWZpZXImKQorSlNWYWx1ZSBqc1Rlc3RPYmpTZXF1ZW5jZUF0dHIoRXhlY1N0YXRlKiBleGVj
LCBKU1ZhbHVlIHNsb3RCYXNlLCBQcm9wZXJ0eU5hbWUpCiB7CiAgICAgSlNUZXN0T2JqKiBjYXN0
ZWRUaGlzID0ganNDYXN0PEpTVGVzdE9iaio+KGFzT2JqZWN0KHNsb3RCYXNlKSk7CiAgICAgVU5V
U0VEX1BBUkFNKGV4ZWMpOwpAQCAtNTAzLDcgKzUwMyw3IEBAIEpTVmFsdWUganNUZXN0T2JqU2Vx
dWVuY2VBdHRyKEV4ZWNTdGF0ZSoKIH0KIAogCi1KU1ZhbHVlIGpzVGVzdE9iakludFNlcXVlbmNl
QXR0cihFeGVjU3RhdGUqIGV4ZWMsIEpTVmFsdWUgc2xvdEJhc2UsIGNvbnN0IElkZW50aWZpZXIm
KQorSlNWYWx1ZSBqc1Rlc3RPYmpJbnRTZXF1ZW5jZUF0dHIoRXhlY1N0YXRlKiBleGVjLCBKU1Zh
bHVlIHNsb3RCYXNlLCBQcm9wZXJ0eU5hbWUpCiB7CiAgICAgSlNUZXN0T2JqKiBjYXN0ZWRUaGlz
ID0ganNDYXN0PEpTVGVzdE9iaio+KGFzT2JqZWN0KHNsb3RCYXNlKSk7CiAgICAgVU5VU0VEX1BB
UkFNKGV4ZWMpOwpAQCAtNTEzLDcgKzUxMyw3IEBAIEpTVmFsdWUganNUZXN0T2JqSW50U2VxdWVu
Y2VBdHRyKEV4ZWNTdGEKIH0KIAogCi1KU1ZhbHVlIGpzVGVzdE9ialNob3J0U2VxdWVuY2VBdHRy
KEV4ZWNTdGF0ZSogZXhlYywgSlNWYWx1ZSBzbG90QmFzZSwgY29uc3QgSWRlbnRpZmllciYpCitK
U1ZhbHVlIGpzVGVzdE9ialNob3J0U2VxdWVuY2VBdHRyKEV4ZWNTdGF0ZSogZXhlYywgSlNWYWx1
ZSBzbG90QmFzZSwgUHJvcGVydHlOYW1lKQogewogICAgIEpTVGVzdE9iaiogY2FzdGVkVGhpcyA9
IGpzQ2FzdDxKU1Rlc3RPYmoqPihhc09iamVjdChzbG90QmFzZSkpOwogICAgIFVOVVNFRF9QQVJB
TShleGVjKTsKQEAgLTUyMyw3ICs1MjMsNyBAQCBKU1ZhbHVlIGpzVGVzdE9ialNob3J0U2VxdWVu
Y2VBdHRyKEV4ZWNTCiB9CiAKIAotSlNWYWx1ZSBqc1Rlc3RPYmpMb25nU2VxdWVuY2VBdHRyKEV4
ZWNTdGF0ZSogZXhlYywgSlNWYWx1ZSBzbG90QmFzZSwgY29uc3QgSWRlbnRpZmllciYpCitKU1Zh
bHVlIGpzVGVzdE9iakxvbmdTZXF1ZW5jZUF0dHIoRXhlY1N0YXRlKiBleGVjLCBKU1ZhbHVlIHNs
b3RCYXNlLCBQcm9wZXJ0eU5hbWUpCiB7CiAgICAgSlNUZXN0T2JqKiBjYXN0ZWRUaGlzID0ganND
YXN0PEpTVGVzdE9iaio+KGFzT2JqZWN0KHNsb3RCYXNlKSk7CiAgICAgVU5VU0VEX1BBUkFNKGV4
ZWMpOwpAQCAtNTMzLDcgKzUzMyw3IEBAIEpTVmFsdWUganNUZXN0T2JqTG9uZ1NlcXVlbmNlQXR0
cihFeGVjU3QKIH0KIAogCi1KU1ZhbHVlIGpzVGVzdE9iakxvbmdMb25nU2VxdWVuY2VBdHRyKEV4
ZWNTdGF0ZSogZXhlYywgSlNWYWx1ZSBzbG90QmFzZSwgY29uc3QgSWRlbnRpZmllciYpCitKU1Zh
bHVlIGpzVGVzdE9iakxvbmdMb25nU2VxdWVuY2VBdHRyKEV4ZWNTdGF0ZSogZXhlYywgSlNWYWx1
ZSBzbG90QmFzZSwgUHJvcGVydHlOYW1lKQogewogICAgIEpTVGVzdE9iaiogY2FzdGVkVGhpcyA9
IGpzQ2FzdDxKU1Rlc3RPYmoqPihhc09iamVjdChzbG90QmFzZSkpOwogICAgIFVOVVNFRF9QQVJB
TShleGVjKTsKQEAgLTU0Myw3ICs1NDMsNyBAQCBKU1ZhbHVlIGpzVGVzdE9iakxvbmdMb25nU2Vx
dWVuY2VBdHRyKEV4CiB9CiAKIAotSlNWYWx1ZSBqc1Rlc3RPYmpVbnNpZ25lZEludFNlcXVlbmNl
QXR0cihFeGVjU3RhdGUqIGV4ZWMsIEpTVmFsdWUgc2xvdEJhc2UsIGNvbnN0IElkZW50aWZpZXIm
KQorSlNWYWx1ZSBqc1Rlc3RPYmpVbnNpZ25lZEludFNlcXVlbmNlQXR0cihFeGVjU3RhdGUqIGV4
ZWMsIEpTVmFsdWUgc2xvdEJhc2UsIFByb3BlcnR5TmFtZSkKIHsKICAgICBKU1Rlc3RPYmoqIGNh
c3RlZFRoaXMgPSBqc0Nhc3Q8SlNUZXN0T2JqKj4oYXNPYmplY3Qoc2xvdEJhc2UpKTsKICAgICBV
TlVTRURfUEFSQU0oZXhlYyk7CkBAIC01NTMsNyArNTUzLDcgQEAgSlNWYWx1ZSBqc1Rlc3RPYmpV
bnNpZ25lZEludFNlcXVlbmNlQXR0cgogfQogCiAKLUpTVmFsdWUganNUZXN0T2JqVW5zaWduZWRT
aG9ydFNlcXVlbmNlQXR0cihFeGVjU3RhdGUqIGV4ZWMsIEpTVmFsdWUgc2xvdEJhc2UsIGNvbnN0
IElkZW50aWZpZXImKQorSlNWYWx1ZSBqc1Rlc3RPYmpVbnNpZ25lZFNob3J0U2VxdWVuY2VBdHRy
KEV4ZWNTdGF0ZSogZXhlYywgSlNWYWx1ZSBzbG90QmFzZSwgUHJvcGVydHlOYW1lKQogewogICAg
IEpTVGVzdE9iaiogY2FzdGVkVGhpcyA9IGpzQ2FzdDxKU1Rlc3RPYmoqPihhc09iamVjdChzbG90
QmFzZSkpOwogICAgIFVOVVNFRF9QQVJBTShleGVjKTsKQEAgLTU2Myw3ICs1NjMsNyBAQCBKU1Zh
bHVlIGpzVGVzdE9ialVuc2lnbmVkU2hvcnRTZXF1ZW5jZUF0CiB9CiAKIAotSlNWYWx1ZSBqc1Rl
c3RPYmpVbnNpZ25lZExvbmdTZXF1ZW5jZUF0dHIoRXhlY1N0YXRlKiBleGVjLCBKU1ZhbHVlIHNs
b3RCYXNlLCBjb25zdCBJZGVudGlmaWVyJikKK0pTVmFsdWUganNUZXN0T2JqVW5zaWduZWRMb25n
U2VxdWVuY2VBdHRyKEV4ZWNTdGF0ZSogZXhlYywgSlNWYWx1ZSBzbG90QmFzZSwgUHJvcGVydHlO
YW1lKQogewogICAgIEpTVGVzdE9iaiogY2FzdGVkVGhpcyA9IGpzQ2FzdDxKU1Rlc3RPYmoqPihh
c09iamVjdChzbG90QmFzZSkpOwogICAgIFVOVVNFRF9QQVJBTShleGVjKTsKQEAgLTU3Myw3ICs1
NzMsNyBAQCBKU1ZhbHVlIGpzVGVzdE9ialVuc2lnbmVkTG9uZ1NlcXVlbmNlQXR0CiB9CiAKIAot
SlNWYWx1ZSBqc1Rlc3RPYmpVbnNpZ25lZExvbmdMb25nU2VxdWVuY2VBdHRyKEV4ZWNTdGF0ZSog
ZXhlYywgSlNWYWx1ZSBzbG90QmFzZSwgY29uc3QgSWRlbnRpZmllciYpCitKU1ZhbHVlIGpzVGVz
dE9ialVuc2lnbmVkTG9uZ0xvbmdTZXF1ZW5jZUF0dHIoRXhlY1N0YXRlKiBleGVjLCBKU1ZhbHVl
IHNsb3RCYXNlLCBQcm9wZXJ0eU5hbWUpCiB7CiAgICAgSlNUZXN0T2JqKiBjYXN0ZWRUaGlzID0g
anNDYXN0PEpTVGVzdE9iaio+KGFzT2JqZWN0KHNsb3RCYXNlKSk7CiAgICAgVU5VU0VEX1BBUkFN
KGV4ZWMpOwpAQCAtNTgzLDcgKzU4Myw3IEBAIEpTVmFsdWUganNUZXN0T2JqVW5zaWduZWRMb25n
TG9uZ1NlcXVlbmMKIH0KIAogCi1KU1ZhbHVlIGpzVGVzdE9iakZsb2F0U2VxdWVuY2VBdHRyKEV4
ZWNTdGF0ZSogZXhlYywgSlNWYWx1ZSBzbG90QmFzZSwgY29uc3QgSWRlbnRpZmllciYpCitKU1Zh
bHVlIGpzVGVzdE9iakZsb2F0U2VxdWVuY2VBdHRyKEV4ZWNTdGF0ZSogZXhlYywgSlNWYWx1ZSBz
bG90QmFzZSwgUHJvcGVydHlOYW1lKQogewogICAgIEpTVGVzdE9iaiogY2FzdGVkVGhpcyA9IGpz
Q2FzdDxKU1Rlc3RPYmoqPihhc09iamVjdChzbG90QmFzZSkpOwogICAgIFVOVVNFRF9QQVJBTShl
eGVjKTsKQEAgLTU5Myw3ICs1OTMsNyBAQCBKU1ZhbHVlIGpzVGVzdE9iakZsb2F0U2VxdWVuY2VB
dHRyKEV4ZWNTCiB9CiAKIAotSlNWYWx1ZSBqc1Rlc3RPYmpEb3VibGVTZXF1ZW5jZUF0dHIoRXhl
Y1N0YXRlKiBleGVjLCBKU1ZhbHVlIHNsb3RCYXNlLCBjb25zdCBJZGVudGlmaWVyJikKK0pTVmFs
dWUganNUZXN0T2JqRG91YmxlU2VxdWVuY2VBdHRyKEV4ZWNTdGF0ZSogZXhlYywgSlNWYWx1ZSBz
bG90QmFzZSwgUHJvcGVydHlOYW1lKQogewogICAgIEpTVGVzdE9iaiogY2FzdGVkVGhpcyA9IGpz
Q2FzdDxKU1Rlc3RPYmoqPihhc09iamVjdChzbG90QmFzZSkpOwogICAgIFVOVVNFRF9QQVJBTShl
eGVjKTsKQEAgLTYwMyw3ICs2MDMsNyBAQCBKU1ZhbHVlIGpzVGVzdE9iakRvdWJsZVNlcXVlbmNl
QXR0cihFeGVjCiB9CiAKIAotSlNWYWx1ZSBqc1Rlc3RPYmpCb29sZWFuU2VxdWVuY2VBdHRyKEV4
ZWNTdGF0ZSogZXhlYywgSlNWYWx1ZSBzbG90QmFzZSwgY29uc3QgSWRlbnRpZmllciYpCitKU1Zh
bHVlIGpzVGVzdE9iakJvb2xlYW5TZXF1ZW5jZUF0dHIoRXhlY1N0YXRlKiBleGVjLCBKU1ZhbHVl
IHNsb3RCYXNlLCBQcm9wZXJ0eU5hbWUpCiB7CiAgICAgSlNUZXN0T2JqKiBjYXN0ZWRUaGlzID0g
anNDYXN0PEpTVGVzdE9iaio+KGFzT2JqZWN0KHNsb3RCYXNlKSk7CiAgICAgVU5VU0VEX1BBUkFN
KGV4ZWMpOwpAQCAtNjEzLDcgKzYxMyw3IEBAIEpTVmFsdWUganNUZXN0T2JqQm9vbGVhblNlcXVl
bmNlQXR0cihFeGUKIH0KIAogCi1KU1ZhbHVlIGpzVGVzdE9ialZvaWRTZXF1ZW5jZUF0dHIoRXhl
Y1N0YXRlKiBleGVjLCBKU1ZhbHVlIHNsb3RCYXNlLCBjb25zdCBJZGVudGlmaWVyJikKK0pTVmFs
dWUganNUZXN0T2JqVm9pZFNlcXVlbmNlQXR0cihFeGVjU3RhdGUqIGV4ZWMsIEpTVmFsdWUgc2xv
dEJhc2UsIFByb3BlcnR5TmFtZSkKIHsKICAgICBKU1Rlc3RPYmoqIGNhc3RlZFRoaXMgPSBqc0Nh
c3Q8SlNUZXN0T2JqKj4oYXNPYmplY3Qoc2xvdEJhc2UpKTsKICAgICBVTlVTRURfUEFSQU0oZXhl
Yyk7CkBAIC02MjMsNyArNjIzLDcgQEAgSlNWYWx1ZSBqc1Rlc3RPYmpWb2lkU2VxdWVuY2VBdHRy
KEV4ZWNTdAogfQogCiAKLUpTVmFsdWUganNUZXN0T2JqRGF0ZVNlcXVlbmNlQXR0cihFeGVjU3Rh
dGUqIGV4ZWMsIEpTVmFsdWUgc2xvdEJhc2UsIGNvbnN0IElkZW50aWZpZXImKQorSlNWYWx1ZSBq
c1Rlc3RPYmpEYXRlU2VxdWVuY2VBdHRyKEV4ZWNTdGF0ZSogZXhlYywgSlNWYWx1ZSBzbG90QmFz
ZSwgUHJvcGVydHlOYW1lKQogewogICAgIEpTVGVzdE9iaiogY2FzdGVkVGhpcyA9IGpzQ2FzdDxK
U1Rlc3RPYmoqPihhc09iamVjdChzbG90QmFzZSkpOwogICAgIFVOVVNFRF9QQVJBTShleGVjKTsK
QEAgLTYzMyw3ICs2MzMsNyBAQCBKU1ZhbHVlIGpzVGVzdE9iakRhdGVTZXF1ZW5jZUF0dHIoRXhl
Y1N0CiB9CiAKIAotSlNWYWx1ZSBqc1Rlc3RPYmpYTUxPYmpBdHRyKEV4ZWNTdGF0ZSogZXhlYywg
SlNWYWx1ZSBzbG90QmFzZSwgY29uc3QgSWRlbnRpZmllciYpCitKU1ZhbHVlIGpzVGVzdE9ialhN
TE9iakF0dHIoRXhlY1N0YXRlKiBleGVjLCBKU1ZhbHVlIHNsb3RCYXNlLCBQcm9wZXJ0eU5hbWUp
CiB7CiAgICAgSlNUZXN0T2JqKiBjYXN0ZWRUaGlzID0ganNDYXN0PEpTVGVzdE9iaio+KGFzT2Jq
ZWN0KHNsb3RCYXNlKSk7CiAgICAgVU5VU0VEX1BBUkFNKGV4ZWMpOwpAQCAtNjQzLDcgKzY0Myw3
IEBAIEpTVmFsdWUganNUZXN0T2JqWE1MT2JqQXR0cihFeGVjU3RhdGUqIGUKIH0KIAogCi1KU1Zh
bHVlIGpzVGVzdE9iakNyZWF0ZShFeGVjU3RhdGUqIGV4ZWMsIEpTVmFsdWUgc2xvdEJhc2UsIGNv
bnN0IElkZW50aWZpZXImKQorSlNWYWx1ZSBqc1Rlc3RPYmpDcmVhdGUoRXhlY1N0YXRlKiBleGVj
LCBKU1ZhbHVlIHNsb3RCYXNlLCBQcm9wZXJ0eU5hbWUpCiB7CiAgICAgSlNUZXN0T2JqKiBjYXN0
ZWRUaGlzID0ganNDYXN0PEpTVGVzdE9iaio+KGFzT2JqZWN0KHNsb3RCYXNlKSk7CiAgICAgVU5V
U0VEX1BBUkFNKGV4ZWMpOwpAQCAtNjUzLDcgKzY1Myw3IEBAIEpTVmFsdWUganNUZXN0T2JqQ3Jl
YXRlKEV4ZWNTdGF0ZSogZXhlYywKIH0KIAogCi1KU1ZhbHVlIGpzVGVzdE9ialJlZmxlY3RlZFN0
cmluZ0F0dHIoRXhlY1N0YXRlKiBleGVjLCBKU1ZhbHVlIHNsb3RCYXNlLCBjb25zdCBJZGVudGlm
aWVyJikKK0pTVmFsdWUganNUZXN0T2JqUmVmbGVjdGVkU3RyaW5nQXR0cihFeGVjU3RhdGUqIGV4
ZWMsIEpTVmFsdWUgc2xvdEJhc2UsIFByb3BlcnR5TmFtZSkKIHsKICAgICBKU1Rlc3RPYmoqIGNh
c3RlZFRoaXMgPSBqc0Nhc3Q8SlNUZXN0T2JqKj4oYXNPYmplY3Qoc2xvdEJhc2UpKTsKICAgICBV
TlVTRURfUEFSQU0oZXhlYyk7CkBAIC02NjMsNyArNjYzLDcgQEAgSlNWYWx1ZSBqc1Rlc3RPYmpS
ZWZsZWN0ZWRTdHJpbmdBdHRyKEV4ZQogfQogCiAKLUpTVmFsdWUganNUZXN0T2JqUmVmbGVjdGVk
SW50ZWdyYWxBdHRyKEV4ZWNTdGF0ZSogZXhlYywgSlNWYWx1ZSBzbG90QmFzZSwgY29uc3QgSWRl
bnRpZmllciYpCitKU1ZhbHVlIGpzVGVzdE9ialJlZmxlY3RlZEludGVncmFsQXR0cihFeGVjU3Rh
dGUqIGV4ZWMsIEpTVmFsdWUgc2xvdEJhc2UsIFByb3BlcnR5TmFtZSkKIHsKICAgICBKU1Rlc3RP
YmoqIGNhc3RlZFRoaXMgPSBqc0Nhc3Q8SlNUZXN0T2JqKj4oYXNPYmplY3Qoc2xvdEJhc2UpKTsK
ICAgICBVTlVTRURfUEFSQU0oZXhlYyk7CkBAIC02NzMsNyArNjczLDcgQEAgSlNWYWx1ZSBqc1Rl
c3RPYmpSZWZsZWN0ZWRJbnRlZ3JhbEF0dHIoRQogfQogCiAKLUpTVmFsdWUganNUZXN0T2JqUmVm
bGVjdGVkVW5zaWduZWRJbnRlZ3JhbEF0dHIoRXhlY1N0YXRlKiBleGVjLCBKU1ZhbHVlIHNsb3RC
YXNlLCBjb25zdCBJZGVudGlmaWVyJikKK0pTVmFsdWUganNUZXN0T2JqUmVmbGVjdGVkVW5zaWdu
ZWRJbnRlZ3JhbEF0dHIoRXhlY1N0YXRlKiBleGVjLCBKU1ZhbHVlIHNsb3RCYXNlLCBQcm9wZXJ0
eU5hbWUpCiB7CiAgICAgSlNUZXN0T2JqKiBjYXN0ZWRUaGlzID0ganNDYXN0PEpTVGVzdE9iaio+
KGFzT2JqZWN0KHNsb3RCYXNlKSk7CiAgICAgVU5VU0VEX1BBUkFNKGV4ZWMpOwpAQCAtNjgzLDcg
KzY4Myw3IEBAIEpTVmFsdWUganNUZXN0T2JqUmVmbGVjdGVkVW5zaWduZWRJbnRlZ3IKIH0KIAog
Ci1KU1ZhbHVlIGpzVGVzdE9ialJlZmxlY3RlZEJvb2xlYW5BdHRyKEV4ZWNTdGF0ZSogZXhlYywg
SlNWYWx1ZSBzbG90QmFzZSwgY29uc3QgSWRlbnRpZmllciYpCitKU1ZhbHVlIGpzVGVzdE9ialJl
ZmxlY3RlZEJvb2xlYW5BdHRyKEV4ZWNTdGF0ZSogZXhlYywgSlNWYWx1ZSBzbG90QmFzZSwgUHJv
cGVydHlOYW1lKQogewogICAgIEpTVGVzdE9iaiogY2FzdGVkVGhpcyA9IGpzQ2FzdDxKU1Rlc3RP
YmoqPihhc09iamVjdChzbG90QmFzZSkpOwogICAgIFVOVVNFRF9QQVJBTShleGVjKTsKQEAgLTY5
Myw3ICs2OTMsNyBAQCBKU1ZhbHVlIGpzVGVzdE9ialJlZmxlY3RlZEJvb2xlYW5BdHRyKEV4CiB9
CiAKIAotSlNWYWx1ZSBqc1Rlc3RPYmpSZWZsZWN0ZWRVUkxBdHRyKEV4ZWNTdGF0ZSogZXhlYywg
SlNWYWx1ZSBzbG90QmFzZSwgY29uc3QgSWRlbnRpZmllciYpCitKU1ZhbHVlIGpzVGVzdE9ialJl
ZmxlY3RlZFVSTEF0dHIoRXhlY1N0YXRlKiBleGVjLCBKU1ZhbHVlIHNsb3RCYXNlLCBQcm9wZXJ0
eU5hbWUpCiB7CiAgICAgSlNUZXN0T2JqKiBjYXN0ZWRUaGlzID0ganNDYXN0PEpTVGVzdE9iaio+
KGFzT2JqZWN0KHNsb3RCYXNlKSk7CiAgICAgVU5VU0VEX1BBUkFNKGV4ZWMpOwpAQCAtNzAzLDcg
KzcwMyw3IEBAIEpTVmFsdWUganNUZXN0T2JqUmVmbGVjdGVkVVJMQXR0cihFeGVjU3QKIH0KIAog
Ci1KU1ZhbHVlIGpzVGVzdE9ialJlZmxlY3RlZFN0cmluZ0F0dHIoRXhlY1N0YXRlKiBleGVjLCBK
U1ZhbHVlIHNsb3RCYXNlLCBjb25zdCBJZGVudGlmaWVyJikKK0pTVmFsdWUganNUZXN0T2JqUmVm
bGVjdGVkU3RyaW5nQXR0cihFeGVjU3RhdGUqIGV4ZWMsIEpTVmFsdWUgc2xvdEJhc2UsIFByb3Bl
cnR5TmFtZSkKIHsKICAgICBKU1Rlc3RPYmoqIGNhc3RlZFRoaXMgPSBqc0Nhc3Q8SlNUZXN0T2Jq
Kj4oYXNPYmplY3Qoc2xvdEJhc2UpKTsKICAgICBVTlVTRURfUEFSQU0oZXhlYyk7CkBAIC03MTMs
NyArNzEzLDcgQEAgSlNWYWx1ZSBqc1Rlc3RPYmpSZWZsZWN0ZWRTdHJpbmdBdHRyKEV4ZQogfQog
CiAKLUpTVmFsdWUganNUZXN0T2JqUmVmbGVjdGVkQ3VzdG9tSW50ZWdyYWxBdHRyKEV4ZWNTdGF0
ZSogZXhlYywgSlNWYWx1ZSBzbG90QmFzZSwgY29uc3QgSWRlbnRpZmllciYpCitKU1ZhbHVlIGpz
VGVzdE9ialJlZmxlY3RlZEN1c3RvbUludGVncmFsQXR0cihFeGVjU3RhdGUqIGV4ZWMsIEpTVmFs
dWUgc2xvdEJhc2UsIFByb3BlcnR5TmFtZSkKIHsKICAgICBKU1Rlc3RPYmoqIGNhc3RlZFRoaXMg
PSBqc0Nhc3Q8SlNUZXN0T2JqKj4oYXNPYmplY3Qoc2xvdEJhc2UpKTsKICAgICBVTlVTRURfUEFS
QU0oZXhlYyk7CkBAIC03MjMsNyArNzIzLDcgQEAgSlNWYWx1ZSBqc1Rlc3RPYmpSZWZsZWN0ZWRD
dXN0b21JbnRlZ3JhbAogfQogCiAKLUpTVmFsdWUganNUZXN0T2JqUmVmbGVjdGVkQ3VzdG9tQm9v
bGVhbkF0dHIoRXhlY1N0YXRlKiBleGVjLCBKU1ZhbHVlIHNsb3RCYXNlLCBjb25zdCBJZGVudGlm
aWVyJikKK0pTVmFsdWUganNUZXN0T2JqUmVmbGVjdGVkQ3VzdG9tQm9vbGVhbkF0dHIoRXhlY1N0
YXRlKiBleGVjLCBKU1ZhbHVlIHNsb3RCYXNlLCBQcm9wZXJ0eU5hbWUpCiB7CiAgICAgSlNUZXN0
T2JqKiBjYXN0ZWRUaGlzID0ganNDYXN0PEpTVGVzdE9iaio+KGFzT2JqZWN0KHNsb3RCYXNlKSk7
CiAgICAgVU5VU0VEX1BBUkFNKGV4ZWMpOwpAQCAtNzMzLDcgKzczMyw3IEBAIEpTVmFsdWUganNU
ZXN0T2JqUmVmbGVjdGVkQ3VzdG9tQm9vbGVhbkEKIH0KIAogCi1KU1ZhbHVlIGpzVGVzdE9ialJl
ZmxlY3RlZEN1c3RvbVVSTEF0dHIoRXhlY1N0YXRlKiBleGVjLCBKU1ZhbHVlIHNsb3RCYXNlLCBj
b25zdCBJZGVudGlmaWVyJikKK0pTVmFsdWUganNUZXN0T2JqUmVmbGVjdGVkQ3VzdG9tVVJMQXR0
cihFeGVjU3RhdGUqIGV4ZWMsIEpTVmFsdWUgc2xvdEJhc2UsIFByb3BlcnR5TmFtZSkKIHsKICAg
ICBKU1Rlc3RPYmoqIGNhc3RlZFRoaXMgPSBqc0Nhc3Q8SlNUZXN0T2JqKj4oYXNPYmplY3Qoc2xv
dEJhc2UpKTsKICAgICBVTlVTRURfUEFSQU0oZXhlYyk7CkBAIC03NDMsNyArNzQzLDcgQEAgSlNW
YWx1ZSBqc1Rlc3RPYmpSZWZsZWN0ZWRDdXN0b21VUkxBdHRyKAogfQogCiAKLUpTVmFsdWUganNU
ZXN0T2JqQXR0cldpdGhHZXR0ZXJFeGNlcHRpb24oRXhlY1N0YXRlKiBleGVjLCBKU1ZhbHVlIHNs
b3RCYXNlLCBjb25zdCBJZGVudGlmaWVyJikKK0pTVmFsdWUganNUZXN0T2JqQXR0cldpdGhHZXR0
ZXJFeGNlcHRpb24oRXhlY1N0YXRlKiBleGVjLCBKU1ZhbHVlIHNsb3RCYXNlLCBQcm9wZXJ0eU5h
bWUpCiB7CiAgICAgSlNUZXN0T2JqKiBjYXN0ZWRUaGlzID0ganNDYXN0PEpTVGVzdE9iaio+KGFz
T2JqZWN0KHNsb3RCYXNlKSk7CiAgICAgRXhjZXB0aW9uQ29kZSBlYyA9IDA7CkBAIC03NTQsNyAr
NzU0LDcgQEAgSlNWYWx1ZSBqc1Rlc3RPYmpBdHRyV2l0aEdldHRlckV4Y2VwdGlvbgogfQogCiAK
LUpTVmFsdWUganNUZXN0T2JqQXR0cldpdGhTZXR0ZXJFeGNlcHRpb24oRXhlY1N0YXRlKiBleGVj
LCBKU1ZhbHVlIHNsb3RCYXNlLCBjb25zdCBJZGVudGlmaWVyJikKK0pTVmFsdWUganNUZXN0T2Jq
QXR0cldpdGhTZXR0ZXJFeGNlcHRpb24oRXhlY1N0YXRlKiBleGVjLCBKU1ZhbHVlIHNsb3RCYXNl
LCBQcm9wZXJ0eU5hbWUpCiB7CiAgICAgSlNUZXN0T2JqKiBjYXN0ZWRUaGlzID0ganNDYXN0PEpT
VGVzdE9iaio+KGFzT2JqZWN0KHNsb3RCYXNlKSk7CiAgICAgVU5VU0VEX1BBUkFNKGV4ZWMpOwpA
QCAtNzY0LDcgKzc2NCw3IEBAIEpTVmFsdWUganNUZXN0T2JqQXR0cldpdGhTZXR0ZXJFeGNlcHRp
b24KIH0KIAogCi1KU1ZhbHVlIGpzVGVzdE9ialN0cmluZ0F0dHJXaXRoR2V0dGVyRXhjZXB0aW9u
KEV4ZWNTdGF0ZSogZXhlYywgSlNWYWx1ZSBzbG90QmFzZSwgY29uc3QgSWRlbnRpZmllciYpCitK
U1ZhbHVlIGpzVGVzdE9ialN0cmluZ0F0dHJXaXRoR2V0dGVyRXhjZXB0aW9uKEV4ZWNTdGF0ZSog
ZXhlYywgSlNWYWx1ZSBzbG90QmFzZSwgUHJvcGVydHlOYW1lKQogewogICAgIEpTVGVzdE9iaiog
Y2FzdGVkVGhpcyA9IGpzQ2FzdDxKU1Rlc3RPYmoqPihhc09iamVjdChzbG90QmFzZSkpOwogICAg
IEV4Y2VwdGlvbkNvZGUgZWMgPSAwOwpAQCAtNzc1LDcgKzc3NSw3IEBAIEpTVmFsdWUganNUZXN0
T2JqU3RyaW5nQXR0cldpdGhHZXR0ZXJFeGMKIH0KIAogCi1KU1ZhbHVlIGpzVGVzdE9ialN0cmlu
Z0F0dHJXaXRoU2V0dGVyRXhjZXB0aW9uKEV4ZWNTdGF0ZSogZXhlYywgSlNWYWx1ZSBzbG90QmFz
ZSwgY29uc3QgSWRlbnRpZmllciYpCitKU1ZhbHVlIGpzVGVzdE9ialN0cmluZ0F0dHJXaXRoU2V0
dGVyRXhjZXB0aW9uKEV4ZWNTdGF0ZSogZXhlYywgSlNWYWx1ZSBzbG90QmFzZSwgUHJvcGVydHlO
YW1lKQogewogICAgIEpTVGVzdE9iaiogY2FzdGVkVGhpcyA9IGpzQ2FzdDxKU1Rlc3RPYmoqPihh
c09iamVjdChzbG90QmFzZSkpOwogICAgIFVOVVNFRF9QQVJBTShleGVjKTsKQEAgLTc4NSwxNCAr
Nzg1LDE0IEBAIEpTVmFsdWUganNUZXN0T2JqU3RyaW5nQXR0cldpdGhTZXR0ZXJFeGMKIH0KIAog
Ci1KU1ZhbHVlIGpzVGVzdE9iakN1c3RvbUF0dHIoRXhlY1N0YXRlKiBleGVjLCBKU1ZhbHVlIHNs
b3RCYXNlLCBjb25zdCBJZGVudGlmaWVyJikKK0pTVmFsdWUganNUZXN0T2JqQ3VzdG9tQXR0cihF
eGVjU3RhdGUqIGV4ZWMsIEpTVmFsdWUgc2xvdEJhc2UsIFByb3BlcnR5TmFtZSkKIHsKICAgICBK
U1Rlc3RPYmoqIGNhc3RlZFRoaXMgPSBqc0Nhc3Q8SlNUZXN0T2JqKj4oYXNPYmplY3Qoc2xvdEJh
c2UpKTsKICAgICByZXR1cm4gY2FzdGVkVGhpcy0+Y3VzdG9tQXR0cihleGVjKTsKIH0KIAogCi1K
U1ZhbHVlIGpzVGVzdE9ialdpdGhTY3JpcHRTdGF0ZUF0dHJpYnV0ZShFeGVjU3RhdGUqIGV4ZWMs
IEpTVmFsdWUgc2xvdEJhc2UsIGNvbnN0IElkZW50aWZpZXImKQorSlNWYWx1ZSBqc1Rlc3RPYmpX
aXRoU2NyaXB0U3RhdGVBdHRyaWJ1dGUoRXhlY1N0YXRlKiBleGVjLCBKU1ZhbHVlIHNsb3RCYXNl
LCBQcm9wZXJ0eU5hbWUpCiB7CiAgICAgSlNUZXN0T2JqKiBjYXN0ZWRUaGlzID0ganNDYXN0PEpT
VGVzdE9iaio+KGFzT2JqZWN0KHNsb3RCYXNlKSk7CiAgICAgVGVzdE9iaiogaW1wbCA9IHN0YXRp
Y19jYXN0PFRlc3RPYmoqPihjYXN0ZWRUaGlzLT5pbXBsKCkpOwpAQCAtODAxLDcgKzgwMSw3IEBA
IEpTVmFsdWUganNUZXN0T2JqV2l0aFNjcmlwdFN0YXRlQXR0cmlidXQKIH0KIAogCi1KU1ZhbHVl
IGpzVGVzdE9ialdpdGhTY3JpcHRFeGVjdXRpb25Db250ZXh0QXR0cmlidXRlKEV4ZWNTdGF0ZSog
ZXhlYywgSlNWYWx1ZSBzbG90QmFzZSwgY29uc3QgSWRlbnRpZmllciYpCitKU1ZhbHVlIGpzVGVz
dE9ialdpdGhTY3JpcHRFeGVjdXRpb25Db250ZXh0QXR0cmlidXRlKEV4ZWNTdGF0ZSogZXhlYywg
SlNWYWx1ZSBzbG90QmFzZSwgUHJvcGVydHlOYW1lKQogewogICAgIEpTVGVzdE9iaiogY2FzdGVk
VGhpcyA9IGpzQ2FzdDxKU1Rlc3RPYmoqPihhc09iamVjdChzbG90QmFzZSkpOwogICAgIFNjcmlw
dEV4ZWN1dGlvbkNvbnRleHQqIHNjcmlwdENvbnRleHQgPSBqc0Nhc3Q8SlNET01HbG9iYWxPYmpl
Y3QqPihleGVjLT5sZXhpY2FsR2xvYmFsT2JqZWN0KCkpLT5zY3JpcHRFeGVjdXRpb25Db250ZXh0
KCk7CkBAIC04MTMsNyArODEzLDcgQEAgSlNWYWx1ZSBqc1Rlc3RPYmpXaXRoU2NyaXB0RXhlY3V0
aW9uQ29udAogfQogCiAKLUpTVmFsdWUganNUZXN0T2JqV2l0aFNjcmlwdFN0YXRlQXR0cmlidXRl
UmFpc2VzKEV4ZWNTdGF0ZSogZXhlYywgSlNWYWx1ZSBzbG90QmFzZSwgY29uc3QgSWRlbnRpZmll
ciYpCitKU1ZhbHVlIGpzVGVzdE9ialdpdGhTY3JpcHRTdGF0ZUF0dHJpYnV0ZVJhaXNlcyhFeGVj
U3RhdGUqIGV4ZWMsIEpTVmFsdWUgc2xvdEJhc2UsIFByb3BlcnR5TmFtZSkKIHsKICAgICBKU1Rl
c3RPYmoqIGNhc3RlZFRoaXMgPSBqc0Nhc3Q8SlNUZXN0T2JqKj4oYXNPYmplY3Qoc2xvdEJhc2Up
KTsKICAgICBFeGNlcHRpb25Db2RlIGVjID0gMDsKQEAgLTgyNCw3ICs4MjQsNyBAQCBKU1ZhbHVl
IGpzVGVzdE9ialdpdGhTY3JpcHRTdGF0ZUF0dHJpYnV0CiB9CiAKIAotSlNWYWx1ZSBqc1Rlc3RP
YmpXaXRoU2NyaXB0RXhlY3V0aW9uQ29udGV4dEF0dHJpYnV0ZVJhaXNlcyhFeGVjU3RhdGUqIGV4
ZWMsIEpTVmFsdWUgc2xvdEJhc2UsIGNvbnN0IElkZW50aWZpZXImKQorSlNWYWx1ZSBqc1Rlc3RP
YmpXaXRoU2NyaXB0RXhlY3V0aW9uQ29udGV4dEF0dHJpYnV0ZVJhaXNlcyhFeGVjU3RhdGUqIGV4
ZWMsIEpTVmFsdWUgc2xvdEJhc2UsIFByb3BlcnR5TmFtZSkKIHsKICAgICBKU1Rlc3RPYmoqIGNh
c3RlZFRoaXMgPSBqc0Nhc3Q8SlNUZXN0T2JqKj4oYXNPYmplY3Qoc2xvdEJhc2UpKTsKICAgICBF
eGNlcHRpb25Db2RlIGVjID0gMDsKQEAgLTgzOCw3ICs4MzgsNyBAQCBKU1ZhbHVlIGpzVGVzdE9i
aldpdGhTY3JpcHRFeGVjdXRpb25Db250CiB9CiAKIAotSlNWYWx1ZSBqc1Rlc3RPYmpXaXRoU2Ny
aXB0RXhlY3V0aW9uQ29udGV4dEFuZFNjcmlwdFN0YXRlQXR0cmlidXRlKEV4ZWNTdGF0ZSogZXhl
YywgSlNWYWx1ZSBzbG90QmFzZSwgY29uc3QgSWRlbnRpZmllciYpCitKU1ZhbHVlIGpzVGVzdE9i
aldpdGhTY3JpcHRFeGVjdXRpb25Db250ZXh0QW5kU2NyaXB0U3RhdGVBdHRyaWJ1dGUoRXhlY1N0
YXRlKiBleGVjLCBKU1ZhbHVlIHNsb3RCYXNlLCBQcm9wZXJ0eU5hbWUpCiB7CiAgICAgSlNUZXN0
T2JqKiBjYXN0ZWRUaGlzID0ganNDYXN0PEpTVGVzdE9iaio+KGFzT2JqZWN0KHNsb3RCYXNlKSk7
CiAgICAgU2NyaXB0RXhlY3V0aW9uQ29udGV4dCogc2NyaXB0Q29udGV4dCA9IGpzQ2FzdDxKU0RP
TUdsb2JhbE9iamVjdCo+KGV4ZWMtPmxleGljYWxHbG9iYWxPYmplY3QoKSktPnNjcmlwdEV4ZWN1
dGlvbkNvbnRleHQoKTsKQEAgLTg1MCw3ICs4NTAsNyBAQCBKU1ZhbHVlIGpzVGVzdE9ialdpdGhT
Y3JpcHRFeGVjdXRpb25Db250CiB9CiAKIAotSlNWYWx1ZSBqc1Rlc3RPYmpXaXRoU2NyaXB0RXhl
Y3V0aW9uQ29udGV4dEFuZFNjcmlwdFN0YXRlQXR0cmlidXRlUmFpc2VzKEV4ZWNTdGF0ZSogZXhl
YywgSlNWYWx1ZSBzbG90QmFzZSwgY29uc3QgSWRlbnRpZmllciYpCitKU1ZhbHVlIGpzVGVzdE9i
aldpdGhTY3JpcHRFeGVjdXRpb25Db250ZXh0QW5kU2NyaXB0U3RhdGVBdHRyaWJ1dGVSYWlzZXMo
RXhlY1N0YXRlKiBleGVjLCBKU1ZhbHVlIHNsb3RCYXNlLCBQcm9wZXJ0eU5hbWUpCiB7CiAgICAg
SlNUZXN0T2JqKiBjYXN0ZWRUaGlzID0ganNDYXN0PEpTVGVzdE9iaio+KGFzT2JqZWN0KHNsb3RC
YXNlKSk7CiAgICAgRXhjZXB0aW9uQ29kZSBlYyA9IDA7CkBAIC04NjQsNyArODY0LDcgQEAgSlNW
YWx1ZSBqc1Rlc3RPYmpXaXRoU2NyaXB0RXhlY3V0aW9uQ29udAogfQogCiAKLUpTVmFsdWUganNU
ZXN0T2JqV2l0aFNjcmlwdEV4ZWN1dGlvbkNvbnRleHRBbmRTY3JpcHRTdGF0ZVdpdGhTcGFjZXNB
dHRyaWJ1dGUoRXhlY1N0YXRlKiBleGVjLCBKU1ZhbHVlIHNsb3RCYXNlLCBjb25zdCBJZGVudGlm
aWVyJikKK0pTVmFsdWUganNUZXN0T2JqV2l0aFNjcmlwdEV4ZWN1dGlvbkNvbnRleHRBbmRTY3Jp
cHRTdGF0ZVdpdGhTcGFjZXNBdHRyaWJ1dGUoRXhlY1N0YXRlKiBleGVjLCBKU1ZhbHVlIHNsb3RC
YXNlLCBQcm9wZXJ0eU5hbWUpCiB7CiAgICAgSlNUZXN0T2JqKiBjYXN0ZWRUaGlzID0ganNDYXN0
PEpTVGVzdE9iaio+KGFzT2JqZWN0KHNsb3RCYXNlKSk7CiAgICAgU2NyaXB0RXhlY3V0aW9uQ29u
dGV4dCogc2NyaXB0Q29udGV4dCA9IGpzQ2FzdDxKU0RPTUdsb2JhbE9iamVjdCo+KGV4ZWMtPmxl
eGljYWxHbG9iYWxPYmplY3QoKSktPnNjcmlwdEV4ZWN1dGlvbkNvbnRleHQoKTsKQEAgLTg3Niw3
ICs4NzYsNyBAQCBKU1ZhbHVlIGpzVGVzdE9ialdpdGhTY3JpcHRFeGVjdXRpb25Db250CiB9CiAK
IAotSlNWYWx1ZSBqc1Rlc3RPYmpXaXRoU2NyaXB0QXJndW1lbnRzQW5kQ2FsbFN0YWNrQXR0cmli
dXRlKEV4ZWNTdGF0ZSogZXhlYywgSlNWYWx1ZSBzbG90QmFzZSwgY29uc3QgSWRlbnRpZmllciYp
CitKU1ZhbHVlIGpzVGVzdE9ialdpdGhTY3JpcHRBcmd1bWVudHNBbmRDYWxsU3RhY2tBdHRyaWJ1
dGUoRXhlY1N0YXRlKiBleGVjLCBKU1ZhbHVlIHNsb3RCYXNlLCBQcm9wZXJ0eU5hbWUpCiB7CiAg
ICAgSlNUZXN0T2JqKiBjYXN0ZWRUaGlzID0ganNDYXN0PEpTVGVzdE9iaio+KGFzT2JqZWN0KHNs
b3RCYXNlKSk7CiAgICAgUmVmUHRyPFNjcmlwdENhbGxTdGFjaz4gY2FsbFN0YWNrKGNyZWF0ZVNj
cmlwdENhbGxTdGFja0Zvckluc3BlY3RvcihleGVjKSk7CkBAIC04ODcsNyArODg3LDcgQEAgSlNW
YWx1ZSBqc1Rlc3RPYmpXaXRoU2NyaXB0QXJndW1lbnRzQW5kQwogCiAKICNpZiBFTkFCTEUoQ29u
ZGl0aW9uMSkKLUpTVmFsdWUganNUZXN0T2JqQ29uZGl0aW9uYWxBdHRyMShFeGVjU3RhdGUqIGV4
ZWMsIEpTVmFsdWUgc2xvdEJhc2UsIGNvbnN0IElkZW50aWZpZXImKQorSlNWYWx1ZSBqc1Rlc3RP
YmpDb25kaXRpb25hbEF0dHIxKEV4ZWNTdGF0ZSogZXhlYywgSlNWYWx1ZSBzbG90QmFzZSwgUHJv
cGVydHlOYW1lKQogewogICAgIEpTVGVzdE9iaiogY2FzdGVkVGhpcyA9IGpzQ2FzdDxKU1Rlc3RP
YmoqPihhc09iamVjdChzbG90QmFzZSkpOwogICAgIFVOVVNFRF9QQVJBTShleGVjKTsKQEAgLTg5
OSw3ICs4OTksNyBAQCBKU1ZhbHVlIGpzVGVzdE9iakNvbmRpdGlvbmFsQXR0cjEoRXhlY1N0CiAj
ZW5kaWYKIAogI2lmIEVOQUJMRShDb25kaXRpb24xKSAmJiBFTkFCTEUoQ29uZGl0aW9uMikKLUpT
VmFsdWUganNUZXN0T2JqQ29uZGl0aW9uYWxBdHRyMihFeGVjU3RhdGUqIGV4ZWMsIEpTVmFsdWUg
c2xvdEJhc2UsIGNvbnN0IElkZW50aWZpZXImKQorSlNWYWx1ZSBqc1Rlc3RPYmpDb25kaXRpb25h
bEF0dHIyKEV4ZWNTdGF0ZSogZXhlYywgSlNWYWx1ZSBzbG90QmFzZSwgUHJvcGVydHlOYW1lKQog
ewogICAgIEpTVGVzdE9iaiogY2FzdGVkVGhpcyA9IGpzQ2FzdDxKU1Rlc3RPYmoqPihhc09iamVj
dChzbG90QmFzZSkpOwogICAgIFVOVVNFRF9QQVJBTShleGVjKTsKQEAgLTkxMSw3ICs5MTEsNyBA
QCBKU1ZhbHVlIGpzVGVzdE9iakNvbmRpdGlvbmFsQXR0cjIoRXhlY1N0CiAjZW5kaWYKIAogI2lm
IEVOQUJMRShDb25kaXRpb24xKSB8fCBFTkFCTEUoQ29uZGl0aW9uMikKLUpTVmFsdWUganNUZXN0
T2JqQ29uZGl0aW9uYWxBdHRyMyhFeGVjU3RhdGUqIGV4ZWMsIEpTVmFsdWUgc2xvdEJhc2UsIGNv
bnN0IElkZW50aWZpZXImKQorSlNWYWx1ZSBqc1Rlc3RPYmpDb25kaXRpb25hbEF0dHIzKEV4ZWNT
dGF0ZSogZXhlYywgSlNWYWx1ZSBzbG90QmFzZSwgUHJvcGVydHlOYW1lKQogewogICAgIEpTVGVz
dE9iaiogY2FzdGVkVGhpcyA9IGpzQ2FzdDxKU1Rlc3RPYmoqPihhc09iamVjdChzbG90QmFzZSkp
OwogICAgIFVOVVNFRF9QQVJBTShleGVjKTsKQEAgLTkyMyw3ICs5MjMsNyBAQCBKU1ZhbHVlIGpz
VGVzdE9iakNvbmRpdGlvbmFsQXR0cjMoRXhlY1N0CiAjZW5kaWYKIAogI2lmIEVOQUJMRShDb25k
aXRpb24xKQotSlNWYWx1ZSBqc1Rlc3RPYmpDb25kaXRpb25hbEF0dHI0Q29uc3RydWN0b3IoRXhl
Y1N0YXRlKiBleGVjLCBKU1ZhbHVlIHNsb3RCYXNlLCBjb25zdCBJZGVudGlmaWVyJikKK0pTVmFs
dWUganNUZXN0T2JqQ29uZGl0aW9uYWxBdHRyNENvbnN0cnVjdG9yKEV4ZWNTdGF0ZSogZXhlYywg
SlNWYWx1ZSBzbG90QmFzZSwgUHJvcGVydHlOYW1lKQogewogICAgIEpTVGVzdE9iaiogY2FzdGVk
VGhpcyA9IGpzQ2FzdDxKU1Rlc3RPYmoqPihhc09iamVjdChzbG90QmFzZSkpOwogICAgIHJldHVy
biBKU1Rlc3RPYmplY3RBOjpnZXRDb25zdHJ1Y3RvcihleGVjLCBjYXN0ZWRUaGlzKTsKQEAgLTkz
Miw3ICs5MzIsNyBAQCBKU1ZhbHVlIGpzVGVzdE9iakNvbmRpdGlvbmFsQXR0cjRDb25zdHJ1CiAj
ZW5kaWYKIAogI2lmIEVOQUJMRShDb25kaXRpb24xKSAmJiBFTkFCTEUoQ29uZGl0aW9uMikKLUpT
VmFsdWUganNUZXN0T2JqQ29uZGl0aW9uYWxBdHRyNUNvbnN0cnVjdG9yKEV4ZWNTdGF0ZSogZXhl
YywgSlNWYWx1ZSBzbG90QmFzZSwgY29uc3QgSWRlbnRpZmllciYpCitKU1ZhbHVlIGpzVGVzdE9i
akNvbmRpdGlvbmFsQXR0cjVDb25zdHJ1Y3RvcihFeGVjU3RhdGUqIGV4ZWMsIEpTVmFsdWUgc2xv
dEJhc2UsIFByb3BlcnR5TmFtZSkKIHsKICAgICBKU1Rlc3RPYmoqIGNhc3RlZFRoaXMgPSBqc0Nh
c3Q8SlNUZXN0T2JqKj4oYXNPYmplY3Qoc2xvdEJhc2UpKTsKICAgICByZXR1cm4gSlNUZXN0T2Jq
ZWN0Qjo6Z2V0Q29uc3RydWN0b3IoZXhlYywgY2FzdGVkVGhpcyk7CkBAIC05NDEsNyArOTQxLDcg
QEAgSlNWYWx1ZSBqc1Rlc3RPYmpDb25kaXRpb25hbEF0dHI1Q29uc3RydQogI2VuZGlmCiAKICNp
ZiBFTkFCTEUoQ29uZGl0aW9uMSkgfHwgRU5BQkxFKENvbmRpdGlvbjIpCi1KU1ZhbHVlIGpzVGVz
dE9iakNvbmRpdGlvbmFsQXR0cjZDb25zdHJ1Y3RvcihFeGVjU3RhdGUqIGV4ZWMsIEpTVmFsdWUg
c2xvdEJhc2UsIGNvbnN0IElkZW50aWZpZXImKQorSlNWYWx1ZSBqc1Rlc3RPYmpDb25kaXRpb25h
bEF0dHI2Q29uc3RydWN0b3IoRXhlY1N0YXRlKiBleGVjLCBKU1ZhbHVlIHNsb3RCYXNlLCBQcm9w
ZXJ0eU5hbWUpCiB7CiAgICAgSlNUZXN0T2JqKiBjYXN0ZWRUaGlzID0ganNDYXN0PEpTVGVzdE9i
aio+KGFzT2JqZWN0KHNsb3RCYXNlKSk7CiAgICAgcmV0dXJuIEpTVGVzdE9iamVjdEM6OmdldENv
bnN0cnVjdG9yKGV4ZWMsIGNhc3RlZFRoaXMpOwpAQCAtOTQ5LDcgKzk0OSw3IEBAIEpTVmFsdWUg
anNUZXN0T2JqQ29uZGl0aW9uYWxBdHRyNkNvbnN0cnUKIAogI2VuZGlmCiAKLUpTVmFsdWUganNU
ZXN0T2JqQ2FjaGVkQXR0cmlidXRlMShFeGVjU3RhdGUqIGV4ZWMsIEpTVmFsdWUgc2xvdEJhc2Us
IGNvbnN0IElkZW50aWZpZXImKQorSlNWYWx1ZSBqc1Rlc3RPYmpDYWNoZWRBdHRyaWJ1dGUxKEV4
ZWNTdGF0ZSogZXhlYywgSlNWYWx1ZSBzbG90QmFzZSwgUHJvcGVydHlOYW1lKQogewogICAgIEpT
VGVzdE9iaiogY2FzdGVkVGhpcyA9IGpzQ2FzdDxKU1Rlc3RPYmoqPihhc09iamVjdChzbG90QmFz
ZSkpOwogICAgIFVOVVNFRF9QQVJBTShleGVjKTsKQEAgLTk2Miw3ICs5NjIsNyBAQCBKU1ZhbHVl
IGpzVGVzdE9iakNhY2hlZEF0dHJpYnV0ZTEoRXhlY1N0CiB9CiAKIAotSlNWYWx1ZSBqc1Rlc3RP
YmpDYWNoZWRBdHRyaWJ1dGUyKEV4ZWNTdGF0ZSogZXhlYywgSlNWYWx1ZSBzbG90QmFzZSwgY29u
c3QgSWRlbnRpZmllciYpCitKU1ZhbHVlIGpzVGVzdE9iakNhY2hlZEF0dHJpYnV0ZTIoRXhlY1N0
YXRlKiBleGVjLCBKU1ZhbHVlIHNsb3RCYXNlLCBQcm9wZXJ0eU5hbWUpCiB7CiAgICAgSlNUZXN0
T2JqKiBjYXN0ZWRUaGlzID0ganNDYXN0PEpTVGVzdE9iaio+KGFzT2JqZWN0KHNsb3RCYXNlKSk7
CiAgICAgVU5VU0VEX1BBUkFNKGV4ZWMpOwpAQCAtOTc1LDcgKzk3NSw3IEBAIEpTVmFsdWUganNU
ZXN0T2JqQ2FjaGVkQXR0cmlidXRlMihFeGVjU3QKIH0KIAogCi1KU1ZhbHVlIGpzVGVzdE9iakNv
bnRlbnREb2N1bWVudChFeGVjU3RhdGUqIGV4ZWMsIEpTVmFsdWUgc2xvdEJhc2UsIGNvbnN0IElk
ZW50aWZpZXImKQorSlNWYWx1ZSBqc1Rlc3RPYmpDb250ZW50RG9jdW1lbnQoRXhlY1N0YXRlKiBl
eGVjLCBKU1ZhbHVlIHNsb3RCYXNlLCBQcm9wZXJ0eU5hbWUpCiB7CiAgICAgSlNUZXN0T2JqKiBj
YXN0ZWRUaGlzID0ganNDYXN0PEpTVGVzdE9iaio+KGFzT2JqZWN0KHNsb3RCYXNlKSk7CiAgICAg
VGVzdE9iaiogaW1wbCA9IHN0YXRpY19jYXN0PFRlc3RPYmoqPihjYXN0ZWRUaGlzLT5pbXBsKCkp
OwpAQCAtOTgzLDcgKzk4Myw3IEBAIEpTVmFsdWUganNUZXN0T2JqQ29udGVudERvY3VtZW50KEV4
ZWNTdGEKIH0KIAogCi1KU1ZhbHVlIGpzVGVzdE9iak11dGFibGVQb2ludChFeGVjU3RhdGUqIGV4
ZWMsIEpTVmFsdWUgc2xvdEJhc2UsIGNvbnN0IElkZW50aWZpZXImKQorSlNWYWx1ZSBqc1Rlc3RP
YmpNdXRhYmxlUG9pbnQoRXhlY1N0YXRlKiBleGVjLCBKU1ZhbHVlIHNsb3RCYXNlLCBQcm9wZXJ0
eU5hbWUpCiB7CiAgICAgSlNUZXN0T2JqKiBjYXN0ZWRUaGlzID0ganNDYXN0PEpTVGVzdE9iaio+
KGFzT2JqZWN0KHNsb3RCYXNlKSk7CiAgICAgVU5VU0VEX1BBUkFNKGV4ZWMpOwpAQCAtOTkzLDcg
Kzk5Myw3IEBAIEpTVmFsdWUganNUZXN0T2JqTXV0YWJsZVBvaW50KEV4ZWNTdGF0ZSoKIH0KIAog
Ci1KU1ZhbHVlIGpzVGVzdE9iakltbXV0YWJsZVBvaW50KEV4ZWNTdGF0ZSogZXhlYywgSlNWYWx1
ZSBzbG90QmFzZSwgY29uc3QgSWRlbnRpZmllciYpCitKU1ZhbHVlIGpzVGVzdE9iakltbXV0YWJs
ZVBvaW50KEV4ZWNTdGF0ZSogZXhlYywgSlNWYWx1ZSBzbG90QmFzZSwgUHJvcGVydHlOYW1lKQog
ewogICAgIEpTVGVzdE9iaiogY2FzdGVkVGhpcyA9IGpzQ2FzdDxKU1Rlc3RPYmoqPihhc09iamVj
dChzbG90QmFzZSkpOwogICAgIFVOVVNFRF9QQVJBTShleGVjKTsKQEAgLTEwMDMsNyArMTAwMyw3
IEBAIEpTVmFsdWUganNUZXN0T2JqSW1tdXRhYmxlUG9pbnQoRXhlY1N0YXQKIH0KIAogCi1KU1Zh
bHVlIGpzVGVzdE9ialN0cmF3YmVycnkoRXhlY1N0YXRlKiBleGVjLCBKU1ZhbHVlIHNsb3RCYXNl
LCBjb25zdCBJZGVudGlmaWVyJikKK0pTVmFsdWUganNUZXN0T2JqU3RyYXdiZXJyeShFeGVjU3Rh
dGUqIGV4ZWMsIEpTVmFsdWUgc2xvdEJhc2UsIFByb3BlcnR5TmFtZSkKIHsKICAgICBKU1Rlc3RP
YmoqIGNhc3RlZFRoaXMgPSBqc0Nhc3Q8SlNUZXN0T2JqKj4oYXNPYmplY3Qoc2xvdEJhc2UpKTsK
ICAgICBVTlVTRURfUEFSQU0oZXhlYyk7CkBAIC0xMDEzLDcgKzEwMTMsNyBAQCBKU1ZhbHVlIGpz
VGVzdE9ialN0cmF3YmVycnkoRXhlY1N0YXRlKiBlCiB9CiAKIAotSlNWYWx1ZSBqc1Rlc3RPYmpT
dHJpY3RGbG9hdChFeGVjU3RhdGUqIGV4ZWMsIEpTVmFsdWUgc2xvdEJhc2UsIGNvbnN0IElkZW50
aWZpZXImKQorSlNWYWx1ZSBqc1Rlc3RPYmpTdHJpY3RGbG9hdChFeGVjU3RhdGUqIGV4ZWMsIEpT
VmFsdWUgc2xvdEJhc2UsIFByb3BlcnR5TmFtZSkKIHsKICAgICBKU1Rlc3RPYmoqIGNhc3RlZFRo
aXMgPSBqc0Nhc3Q8SlNUZXN0T2JqKj4oYXNPYmplY3Qoc2xvdEJhc2UpKTsKICAgICBVTlVTRURf
UEFSQU0oZXhlYyk7CkBAIC0xMDIzLDcgKzEwMjMsNyBAQCBKU1ZhbHVlIGpzVGVzdE9ialN0cmlj
dEZsb2F0KEV4ZWNTdGF0ZSogCiB9CiAKIAotSlNWYWx1ZSBqc1Rlc3RPYmpEZXNjcmlwdGlvbihF
eGVjU3RhdGUqIGV4ZWMsIEpTVmFsdWUgc2xvdEJhc2UsIGNvbnN0IElkZW50aWZpZXImKQorSlNW
YWx1ZSBqc1Rlc3RPYmpEZXNjcmlwdGlvbihFeGVjU3RhdGUqIGV4ZWMsIEpTVmFsdWUgc2xvdEJh
c2UsIFByb3BlcnR5TmFtZSkKIHsKICAgICBKU1Rlc3RPYmoqIGNhc3RlZFRoaXMgPSBqc0Nhc3Q8
SlNUZXN0T2JqKj4oYXNPYmplY3Qoc2xvdEJhc2UpKTsKICAgICBVTlVTRURfUEFSQU0oZXhlYyk7
CkBAIC0xMDMzLDcgKzEwMzMsNyBAQCBKU1ZhbHVlIGpzVGVzdE9iakRlc2NyaXB0aW9uKEV4ZWNT
dGF0ZSogCiB9CiAKIAotSlNWYWx1ZSBqc1Rlc3RPYmpJZChFeGVjU3RhdGUqIGV4ZWMsIEpTVmFs
dWUgc2xvdEJhc2UsIGNvbnN0IElkZW50aWZpZXImKQorSlNWYWx1ZSBqc1Rlc3RPYmpJZChFeGVj
U3RhdGUqIGV4ZWMsIEpTVmFsdWUgc2xvdEJhc2UsIFByb3BlcnR5TmFtZSkKIHsKICAgICBKU1Rl
c3RPYmoqIGNhc3RlZFRoaXMgPSBqc0Nhc3Q8SlNUZXN0T2JqKj4oYXNPYmplY3Qoc2xvdEJhc2Up
KTsKICAgICBVTlVTRURfUEFSQU0oZXhlYyk7CkBAIC0xMDQzLDcgKzEwNDMsNyBAQCBKU1ZhbHVl
IGpzVGVzdE9iaklkKEV4ZWNTdGF0ZSogZXhlYywgSlNWCiB9CiAKIAotSlNWYWx1ZSBqc1Rlc3RP
YmpIYXNoKEV4ZWNTdGF0ZSogZXhlYywgSlNWYWx1ZSBzbG90QmFzZSwgY29uc3QgSWRlbnRpZmll
ciYpCitKU1ZhbHVlIGpzVGVzdE9iakhhc2goRXhlY1N0YXRlKiBleGVjLCBKU1ZhbHVlIHNsb3RC
YXNlLCBQcm9wZXJ0eU5hbWUpCiB7CiAgICAgSlNUZXN0T2JqKiBjYXN0ZWRUaGlzID0ganNDYXN0
PEpTVGVzdE9iaio+KGFzT2JqZWN0KHNsb3RCYXNlKSk7CiAgICAgVU5VU0VEX1BBUkFNKGV4ZWMp
OwpAQCAtMTA1MywxMyArMTA1MywxMyBAQCBKU1ZhbHVlIGpzVGVzdE9iakhhc2goRXhlY1N0YXRl
KiBleGVjLCBKCiB9CiAKIAotSlNWYWx1ZSBqc1Rlc3RPYmpDb25zdHJ1Y3RvcihFeGVjU3RhdGUq
IGV4ZWMsIEpTVmFsdWUgc2xvdEJhc2UsIGNvbnN0IElkZW50aWZpZXImKQorSlNWYWx1ZSBqc1Rl
c3RPYmpDb25zdHJ1Y3RvcihFeGVjU3RhdGUqIGV4ZWMsIEpTVmFsdWUgc2xvdEJhc2UsIFByb3Bl
cnR5TmFtZSkKIHsKICAgICBKU1Rlc3RPYmoqIGRvbU9iamVjdCA9IGpzQ2FzdDxKU1Rlc3RPYmoq
Pihhc09iamVjdChzbG90QmFzZSkpOwogICAgIHJldHVybiBKU1Rlc3RPYmo6OmdldENvbnN0cnVj
dG9yKGV4ZWMsIGRvbU9iamVjdC0+Z2xvYmFsT2JqZWN0KCkpOwogfQogCi12b2lkIEpTVGVzdE9i
ajo6cHV0KEpTQ2VsbCogY2VsbCwgRXhlY1N0YXRlKiBleGVjLCBjb25zdCBJZGVudGlmaWVyJiBw
cm9wZXJ0eU5hbWUsIEpTVmFsdWUgdmFsdWUsIFB1dFByb3BlcnR5U2xvdCYgc2xvdCkKK3ZvaWQg
SlNUZXN0T2JqOjpwdXQoSlNDZWxsKiBjZWxsLCBFeGVjU3RhdGUqIGV4ZWMsIFByb3BlcnR5TmFt
ZSBwcm9wZXJ0eU5hbWUsIEpTVmFsdWUgdmFsdWUsIFB1dFByb3BlcnR5U2xvdCYgc2xvdCkKIHsK
ICAgICBKU1Rlc3RPYmoqIHRoaXNPYmplY3QgPSBqc0Nhc3Q8SlNUZXN0T2JqKj4oY2VsbCk7CiAg
ICAgQVNTRVJUX0dDX09CSkVDVF9JTkhFUklUUyh0aGlzT2JqZWN0LCAmc19pbmZvKTsKQEAgLTI2
NTgsNzkgKzI2NTgsNzkgQEAgdm9pZCBKU1Rlc3RPYmo6OnZpc2l0Q2hpbGRyZW4oSlNDZWxsKiBj
ZQogLy8gQ29uc3RhbnQgZ2V0dGVycwogCiAjaWYgRU5BQkxFKENvbmRpdGlvbjEpCi1KU1ZhbHVl
IGpzVGVzdE9iakNPTkRJVElPTkFMX0NPTlNUKEV4ZWNTdGF0ZSogZXhlYywgSlNWYWx1ZSwgY29u
c3QgSWRlbnRpZmllciYpCitKU1ZhbHVlIGpzVGVzdE9iakNPTkRJVElPTkFMX0NPTlNUKEV4ZWNT
dGF0ZSogZXhlYywgSlNWYWx1ZSwgUHJvcGVydHlOYW1lKQogewogICAgIFVOVVNFRF9QQVJBTShl
eGVjKTsKICAgICByZXR1cm4ganNOdW1iZXIoc3RhdGljX2Nhc3Q8aW50PigwKSk7CiB9CiAKICNl
bmRpZgotSlNWYWx1ZSBqc1Rlc3RPYmpDT05TVF9WQUxVRV8wKEV4ZWNTdGF0ZSogZXhlYywgSlNW
YWx1ZSwgY29uc3QgSWRlbnRpZmllciYpCitKU1ZhbHVlIGpzVGVzdE9iakNPTlNUX1ZBTFVFXzAo
RXhlY1N0YXRlKiBleGVjLCBKU1ZhbHVlLCBQcm9wZXJ0eU5hbWUpCiB7CiAgICAgVU5VU0VEX1BB
UkFNKGV4ZWMpOwogICAgIHJldHVybiBqc051bWJlcihzdGF0aWNfY2FzdDxpbnQ+KDApKTsKIH0K
IAotSlNWYWx1ZSBqc1Rlc3RPYmpDT05TVF9WQUxVRV8xKEV4ZWNTdGF0ZSogZXhlYywgSlNWYWx1
ZSwgY29uc3QgSWRlbnRpZmllciYpCitKU1ZhbHVlIGpzVGVzdE9iakNPTlNUX1ZBTFVFXzEoRXhl
Y1N0YXRlKiBleGVjLCBKU1ZhbHVlLCBQcm9wZXJ0eU5hbWUpCiB7CiAgICAgVU5VU0VEX1BBUkFN
KGV4ZWMpOwogICAgIHJldHVybiBqc051bWJlcihzdGF0aWNfY2FzdDxpbnQ+KDEpKTsKIH0KIAot
SlNWYWx1ZSBqc1Rlc3RPYmpDT05TVF9WQUxVRV8yKEV4ZWNTdGF0ZSogZXhlYywgSlNWYWx1ZSwg
Y29uc3QgSWRlbnRpZmllciYpCitKU1ZhbHVlIGpzVGVzdE9iakNPTlNUX1ZBTFVFXzIoRXhlY1N0
YXRlKiBleGVjLCBKU1ZhbHVlLCBQcm9wZXJ0eU5hbWUpCiB7CiAgICAgVU5VU0VEX1BBUkFNKGV4
ZWMpOwogICAgIHJldHVybiBqc051bWJlcihzdGF0aWNfY2FzdDxpbnQ+KDIpKTsKIH0KIAotSlNW
YWx1ZSBqc1Rlc3RPYmpDT05TVF9WQUxVRV80KEV4ZWNTdGF0ZSogZXhlYywgSlNWYWx1ZSwgY29u
c3QgSWRlbnRpZmllciYpCitKU1ZhbHVlIGpzVGVzdE9iakNPTlNUX1ZBTFVFXzQoRXhlY1N0YXRl
KiBleGVjLCBKU1ZhbHVlLCBQcm9wZXJ0eU5hbWUpCiB7CiAgICAgVU5VU0VEX1BBUkFNKGV4ZWMp
OwogICAgIHJldHVybiBqc051bWJlcihzdGF0aWNfY2FzdDxpbnQ+KDQpKTsKIH0KIAotSlNWYWx1
ZSBqc1Rlc3RPYmpDT05TVF9WQUxVRV84KEV4ZWNTdGF0ZSogZXhlYywgSlNWYWx1ZSwgY29uc3Qg
SWRlbnRpZmllciYpCitKU1ZhbHVlIGpzVGVzdE9iakNPTlNUX1ZBTFVFXzgoRXhlY1N0YXRlKiBl
eGVjLCBKU1ZhbHVlLCBQcm9wZXJ0eU5hbWUpCiB7CiAgICAgVU5VU0VEX1BBUkFNKGV4ZWMpOwog
ICAgIHJldHVybiBqc051bWJlcihzdGF0aWNfY2FzdDxpbnQ+KDgpKTsKIH0KIAotSlNWYWx1ZSBq
c1Rlc3RPYmpDT05TVF9WQUxVRV85KEV4ZWNTdGF0ZSogZXhlYywgSlNWYWx1ZSwgY29uc3QgSWRl
bnRpZmllciYpCitKU1ZhbHVlIGpzVGVzdE9iakNPTlNUX1ZBTFVFXzkoRXhlY1N0YXRlKiBleGVj
LCBKU1ZhbHVlLCBQcm9wZXJ0eU5hbWUpCiB7CiAgICAgVU5VU0VEX1BBUkFNKGV4ZWMpOwogICAg
IHJldHVybiBqc051bWJlcihzdGF0aWNfY2FzdDxpbnQ+KC0xKSk7CiB9CiAKLUpTVmFsdWUganNU
ZXN0T2JqQ09OU1RfVkFMVUVfMTAoRXhlY1N0YXRlKiBleGVjLCBKU1ZhbHVlLCBjb25zdCBJZGVu
dGlmaWVyJikKK0pTVmFsdWUganNUZXN0T2JqQ09OU1RfVkFMVUVfMTAoRXhlY1N0YXRlKiBleGVj
LCBKU1ZhbHVlLCBQcm9wZXJ0eU5hbWUpCiB7CiAgICAgcmV0dXJuIGpzU3RyaW5nT3JOdWxsKGV4
ZWMsIFN0cmluZygibXkgY29uc3RhbnQgc3RyaW5nIikpOwogfQogCi1KU1ZhbHVlIGpzVGVzdE9i
akNPTlNUX1ZBTFVFXzExKEV4ZWNTdGF0ZSogZXhlYywgSlNWYWx1ZSwgY29uc3QgSWRlbnRpZmll
ciYpCitKU1ZhbHVlIGpzVGVzdE9iakNPTlNUX1ZBTFVFXzExKEV4ZWNTdGF0ZSogZXhlYywgSlNW
YWx1ZSwgUHJvcGVydHlOYW1lKQogewogICAgIFVOVVNFRF9QQVJBTShleGVjKTsKICAgICByZXR1
cm4ganNOdW1iZXIoc3RhdGljX2Nhc3Q8aW50PigweGZmZmZmZmZmKSk7CiB9CiAKLUpTVmFsdWUg
anNUZXN0T2JqQ09OU1RfVkFMVUVfMTIoRXhlY1N0YXRlKiBleGVjLCBKU1ZhbHVlLCBjb25zdCBJ
ZGVudGlmaWVyJikKK0pTVmFsdWUganNUZXN0T2JqQ09OU1RfVkFMVUVfMTIoRXhlY1N0YXRlKiBl
eGVjLCBKU1ZhbHVlLCBQcm9wZXJ0eU5hbWUpCiB7CiAgICAgVU5VU0VEX1BBUkFNKGV4ZWMpOwog
ICAgIHJldHVybiBqc051bWJlcihzdGF0aWNfY2FzdDxpbnQ+KDB4MDEpKTsKIH0KIAotSlNWYWx1
ZSBqc1Rlc3RPYmpDT05TVF9WQUxVRV8xMyhFeGVjU3RhdGUqIGV4ZWMsIEpTVmFsdWUsIGNvbnN0
IElkZW50aWZpZXImKQorSlNWYWx1ZSBqc1Rlc3RPYmpDT05TVF9WQUxVRV8xMyhFeGVjU3RhdGUq
IGV4ZWMsIEpTVmFsdWUsIFByb3BlcnR5TmFtZSkKIHsKICAgICBVTlVTRURfUEFSQU0oZXhlYyk7
CiAgICAgcmV0dXJuIGpzTnVtYmVyKHN0YXRpY19jYXN0PGludD4oMFgyMCkpOwogfQogCi1KU1Zh
bHVlIGpzVGVzdE9iakNPTlNUX1ZBTFVFXzE0KEV4ZWNTdGF0ZSogZXhlYywgSlNWYWx1ZSwgY29u
c3QgSWRlbnRpZmllciYpCitKU1ZhbHVlIGpzVGVzdE9iakNPTlNUX1ZBTFVFXzE0KEV4ZWNTdGF0
ZSogZXhlYywgSlNWYWx1ZSwgUHJvcGVydHlOYW1lKQogewogICAgIFVOVVNFRF9QQVJBTShleGVj
KTsKICAgICByZXR1cm4ganNOdW1iZXIoc3RhdGljX2Nhc3Q8aW50PigweDFhYmMpKTsKIH0KIAot
SlNWYWx1ZSBqc1Rlc3RPYmpDT05TVF9KQVZBU0NSSVBUKEV4ZWNTdGF0ZSogZXhlYywgSlNWYWx1
ZSwgY29uc3QgSWRlbnRpZmllciYpCitKU1ZhbHVlIGpzVGVzdE9iakNPTlNUX0pBVkFTQ1JJUFQo
RXhlY1N0YXRlKiBleGVjLCBKU1ZhbHVlLCBQcm9wZXJ0eU5hbWUpCiB7CiAgICAgVU5VU0VEX1BB
UkFNKGV4ZWMpOwogICAgIHJldHVybiBqc051bWJlcihzdGF0aWNfY2FzdDxpbnQ+KDE1KSk7Cklu
ZGV4OiBTb3VyY2UvV2ViQ29yZS9iaW5kaW5ncy9zY3JpcHRzL3Rlc3QvSlMvSlNUZXN0T2JqLmgK
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PQotLS0gU291cmNlL1dlYkNvcmUvYmluZGluZ3Mvc2NyaXB0cy90ZXN0L0pTL0pT
VGVzdE9iai5oCShyZXZpc2lvbiAxMTY2NjcpCisrKyBTb3VyY2UvV2ViQ29yZS9iaW5kaW5ncy9z
Y3JpcHRzL3Rlc3QvSlMvSlNUZXN0T2JqLmgJKHdvcmtpbmcgY29weSkKQEAgLTQwLDkgKzQwLDkg
QEAgcHVibGljOgogICAgIH0KIAogICAgIHN0YXRpYyBKU0M6OkpTT2JqZWN0KiBjcmVhdGVQcm90
b3R5cGUoSlNDOjpFeGVjU3RhdGUqLCBKU0M6OkpTR2xvYmFsT2JqZWN0Kik7Ci0gICAgc3RhdGlj
IGJvb2wgZ2V0T3duUHJvcGVydHlTbG90KEpTQzo6SlNDZWxsKiwgSlNDOjpFeGVjU3RhdGUqLCBj
b25zdCBKU0M6OklkZW50aWZpZXImIHByb3BlcnR5TmFtZSwgSlNDOjpQcm9wZXJ0eVNsb3QmKTsK
LSAgICBzdGF0aWMgYm9vbCBnZXRPd25Qcm9wZXJ0eURlc2NyaXB0b3IoSlNDOjpKU09iamVjdCos
IEpTQzo6RXhlY1N0YXRlKiwgY29uc3QgSlNDOjpJZGVudGlmaWVyJiBwcm9wZXJ0eU5hbWUsIEpT
Qzo6UHJvcGVydHlEZXNjcmlwdG9yJik7Ci0gICAgc3RhdGljIHZvaWQgcHV0KEpTQzo6SlNDZWxs
KiwgSlNDOjpFeGVjU3RhdGUqLCBjb25zdCBKU0M6OklkZW50aWZpZXImIHByb3BlcnR5TmFtZSwg
SlNDOjpKU1ZhbHVlLCBKU0M6OlB1dFByb3BlcnR5U2xvdCYpOworICAgIHN0YXRpYyBib29sIGdl
dE93blByb3BlcnR5U2xvdChKU0M6OkpTQ2VsbCosIEpTQzo6RXhlY1N0YXRlKiwgSlNDOjpQcm9w
ZXJ0eU5hbWUsIEpTQzo6UHJvcGVydHlTbG90Jik7CisgICAgc3RhdGljIGJvb2wgZ2V0T3duUHJv
cGVydHlEZXNjcmlwdG9yKEpTQzo6SlNPYmplY3QqLCBKU0M6OkV4ZWNTdGF0ZSosIEpTQzo6UHJv
cGVydHlOYW1lLCBKU0M6OlByb3BlcnR5RGVzY3JpcHRvciYpOworICAgIHN0YXRpYyB2b2lkIHB1
dChKU0M6OkpTQ2VsbCosIEpTQzo6RXhlY1N0YXRlKiwgSlNDOjpQcm9wZXJ0eU5hbWUsIEpTQzo6
SlNWYWx1ZSwgSlNDOjpQdXRQcm9wZXJ0eVNsb3QmKTsKICAgICBzdGF0aWMgdm9pZCBkZXN0cm95
KEpTQzo6SlNDZWxsKik7CiAgICAgfkpTVGVzdE9iaigpOwogICAgIHN0YXRpYyBjb25zdCBKU0M6
OkNsYXNzSW5mbyBzX2luZm87CkBAIC0xMTAsOCArMTEwLDggQEAgcHVibGljOgogICAgIH0KIAog
ICAgIHN0YXRpYyBjb25zdCBKU0M6OkNsYXNzSW5mbyBzX2luZm87Ci0gICAgc3RhdGljIGJvb2wg
Z2V0T3duUHJvcGVydHlTbG90KEpTQzo6SlNDZWxsKiwgSlNDOjpFeGVjU3RhdGUqLCBjb25zdCBK
U0M6OklkZW50aWZpZXImLCBKU0M6OlByb3BlcnR5U2xvdCYpOwotICAgIHN0YXRpYyBib29sIGdl
dE93blByb3BlcnR5RGVzY3JpcHRvcihKU0M6OkpTT2JqZWN0KiwgSlNDOjpFeGVjU3RhdGUqLCBj
b25zdCBKU0M6OklkZW50aWZpZXImLCBKU0M6OlByb3BlcnR5RGVzY3JpcHRvciYpOworICAgIHN0
YXRpYyBib29sIGdldE93blByb3BlcnR5U2xvdChKU0M6OkpTQ2VsbCosIEpTQzo6RXhlY1N0YXRl
KiwgSlNDOjpQcm9wZXJ0eU5hbWUsIEpTQzo6UHJvcGVydHlTbG90Jik7CisgICAgc3RhdGljIGJv
b2wgZ2V0T3duUHJvcGVydHlEZXNjcmlwdG9yKEpTQzo6SlNPYmplY3QqLCBKU0M6OkV4ZWNTdGF0
ZSosIEpTQzo6UHJvcGVydHlOYW1lLCBKU0M6OlByb3BlcnR5RGVzY3JpcHRvciYpOwogICAgIHN0
YXRpYyBKU0M6OlN0cnVjdHVyZSogY3JlYXRlU3RydWN0dXJlKEpTQzo6SlNHbG9iYWxEYXRhJiBn
bG9iYWxEYXRhLCBKU0M6OkpTR2xvYmFsT2JqZWN0KiBnbG9iYWxPYmplY3QsIEpTQzo6SlNWYWx1
ZSBwcm90b3R5cGUpCiAgICAgewogICAgICAgICByZXR1cm4gSlNDOjpTdHJ1Y3R1cmU6OmNyZWF0
ZShnbG9iYWxEYXRhLCBnbG9iYWxPYmplY3QsIHByb3RvdHlwZSwgSlNDOjpUeXBlSW5mbyhKU0M6
Ok9iamVjdFR5cGUsIFN0cnVjdHVyZUZsYWdzKSwgJnNfaW5mbyk7CkBAIC0xMzcsOCArMTM3LDgg
QEAgcHVibGljOgogICAgICAgICByZXR1cm4gcHRyOwogICAgIH0KIAotICAgIHN0YXRpYyBib29s
IGdldE93blByb3BlcnR5U2xvdChKU0M6OkpTQ2VsbCosIEpTQzo6RXhlY1N0YXRlKiwgY29uc3Qg
SlNDOjpJZGVudGlmaWVyJiwgSlNDOjpQcm9wZXJ0eVNsb3QmKTsKLSAgICBzdGF0aWMgYm9vbCBn
ZXRPd25Qcm9wZXJ0eURlc2NyaXB0b3IoSlNDOjpKU09iamVjdCosIEpTQzo6RXhlY1N0YXRlKiwg
Y29uc3QgSlNDOjpJZGVudGlmaWVyJiwgSlNDOjpQcm9wZXJ0eURlc2NyaXB0b3ImKTsKKyAgICBz
dGF0aWMgYm9vbCBnZXRPd25Qcm9wZXJ0eVNsb3QoSlNDOjpKU0NlbGwqLCBKU0M6OkV4ZWNTdGF0
ZSosIEpTQzo6UHJvcGVydHlOYW1lLCBKU0M6OlByb3BlcnR5U2xvdCYpOworICAgIHN0YXRpYyBi
b29sIGdldE93blByb3BlcnR5RGVzY3JpcHRvcihKU0M6OkpTT2JqZWN0KiwgSlNDOjpFeGVjU3Rh
dGUqLCBKU0M6OlByb3BlcnR5TmFtZSwgSlNDOjpQcm9wZXJ0eURlc2NyaXB0b3ImKTsKICAgICBz
dGF0aWMgY29uc3QgSlNDOjpDbGFzc0luZm8gc19pbmZvOwogICAgIHN0YXRpYyBKU0M6OlN0cnVj
dHVyZSogY3JlYXRlU3RydWN0dXJlKEpTQzo6SlNHbG9iYWxEYXRhJiBnbG9iYWxEYXRhLCBKU0M6
OkpTR2xvYmFsT2JqZWN0KiBnbG9iYWxPYmplY3QsIEpTQzo6SlNWYWx1ZSBwcm90b3R5cGUpCiAg
ICAgewpAQCAtMjE2LDE1NiArMjE2LDE1NiBAQCBKU0M6OkVuY29kZWRKU1ZhbHVlIEpTQ19IT1NU
X0NBTEwganNUZXN0CiBKU0M6OkVuY29kZWRKU1ZhbHVlIEpTQ19IT1NUX0NBTEwganNUZXN0T2Jq
UHJvdG90eXBlRnVuY3Rpb25TdHJpY3RGdW5jdGlvbihKU0M6OkV4ZWNTdGF0ZSopOwogLy8gQXR0
cmlidXRlcwogCi1KU0M6OkpTVmFsdWUganNUZXN0T2JqUmVhZE9ubHlJbnRBdHRyKEpTQzo6RXhl
Y1N0YXRlKiwgSlNDOjpKU1ZhbHVlLCBjb25zdCBKU0M6OklkZW50aWZpZXImKTsKLUpTQzo6SlNW
YWx1ZSBqc1Rlc3RPYmpSZWFkT25seVN0cmluZ0F0dHIoSlNDOjpFeGVjU3RhdGUqLCBKU0M6OkpT
VmFsdWUsIGNvbnN0IEpTQzo6SWRlbnRpZmllciYpOwotSlNDOjpKU1ZhbHVlIGpzVGVzdE9ialJl
YWRPbmx5VGVzdE9iakF0dHIoSlNDOjpFeGVjU3RhdGUqLCBKU0M6OkpTVmFsdWUsIGNvbnN0IEpT
Qzo6SWRlbnRpZmllciYpOwotSlNDOjpKU1ZhbHVlIGpzVGVzdE9ialNob3J0QXR0cihKU0M6OkV4
ZWNTdGF0ZSosIEpTQzo6SlNWYWx1ZSwgY29uc3QgSlNDOjpJZGVudGlmaWVyJik7CitKU0M6OkpT
VmFsdWUganNUZXN0T2JqUmVhZE9ubHlJbnRBdHRyKEpTQzo6RXhlY1N0YXRlKiwgSlNDOjpKU1Zh
bHVlLCBKU0M6OlByb3BlcnR5TmFtZSk7CitKU0M6OkpTVmFsdWUganNUZXN0T2JqUmVhZE9ubHlT
dHJpbmdBdHRyKEpTQzo6RXhlY1N0YXRlKiwgSlNDOjpKU1ZhbHVlLCBKU0M6OlByb3BlcnR5TmFt
ZSk7CitKU0M6OkpTVmFsdWUganNUZXN0T2JqUmVhZE9ubHlUZXN0T2JqQXR0cihKU0M6OkV4ZWNT
dGF0ZSosIEpTQzo6SlNWYWx1ZSwgSlNDOjpQcm9wZXJ0eU5hbWUpOworSlNDOjpKU1ZhbHVlIGpz
VGVzdE9ialNob3J0QXR0cihKU0M6OkV4ZWNTdGF0ZSosIEpTQzo6SlNWYWx1ZSwgSlNDOjpQcm9w
ZXJ0eU5hbWUpOwogdm9pZCBzZXRKU1Rlc3RPYmpTaG9ydEF0dHIoSlNDOjpFeGVjU3RhdGUqLCBK
U0M6OkpTT2JqZWN0KiwgSlNDOjpKU1ZhbHVlKTsKLUpTQzo6SlNWYWx1ZSBqc1Rlc3RPYmpVbnNp
Z25lZFNob3J0QXR0cihKU0M6OkV4ZWNTdGF0ZSosIEpTQzo6SlNWYWx1ZSwgY29uc3QgSlNDOjpJ
ZGVudGlmaWVyJik7CitKU0M6OkpTVmFsdWUganNUZXN0T2JqVW5zaWduZWRTaG9ydEF0dHIoSlND
OjpFeGVjU3RhdGUqLCBKU0M6OkpTVmFsdWUsIEpTQzo6UHJvcGVydHlOYW1lKTsKIHZvaWQgc2V0
SlNUZXN0T2JqVW5zaWduZWRTaG9ydEF0dHIoSlNDOjpFeGVjU3RhdGUqLCBKU0M6OkpTT2JqZWN0
KiwgSlNDOjpKU1ZhbHVlKTsKLUpTQzo6SlNWYWx1ZSBqc1Rlc3RPYmpJbnRBdHRyKEpTQzo6RXhl
Y1N0YXRlKiwgSlNDOjpKU1ZhbHVlLCBjb25zdCBKU0M6OklkZW50aWZpZXImKTsKK0pTQzo6SlNW
YWx1ZSBqc1Rlc3RPYmpJbnRBdHRyKEpTQzo6RXhlY1N0YXRlKiwgSlNDOjpKU1ZhbHVlLCBKU0M6
OlByb3BlcnR5TmFtZSk7CiB2b2lkIHNldEpTVGVzdE9iakludEF0dHIoSlNDOjpFeGVjU3RhdGUq
LCBKU0M6OkpTT2JqZWN0KiwgSlNDOjpKU1ZhbHVlKTsKLUpTQzo6SlNWYWx1ZSBqc1Rlc3RPYmpM
b25nTG9uZ0F0dHIoSlNDOjpFeGVjU3RhdGUqLCBKU0M6OkpTVmFsdWUsIGNvbnN0IEpTQzo6SWRl
bnRpZmllciYpOworSlNDOjpKU1ZhbHVlIGpzVGVzdE9iakxvbmdMb25nQXR0cihKU0M6OkV4ZWNT
dGF0ZSosIEpTQzo6SlNWYWx1ZSwgSlNDOjpQcm9wZXJ0eU5hbWUpOwogdm9pZCBzZXRKU1Rlc3RP
YmpMb25nTG9uZ0F0dHIoSlNDOjpFeGVjU3RhdGUqLCBKU0M6OkpTT2JqZWN0KiwgSlNDOjpKU1Zh
bHVlKTsKLUpTQzo6SlNWYWx1ZSBqc1Rlc3RPYmpVbnNpZ25lZExvbmdMb25nQXR0cihKU0M6OkV4
ZWNTdGF0ZSosIEpTQzo6SlNWYWx1ZSwgY29uc3QgSlNDOjpJZGVudGlmaWVyJik7CitKU0M6OkpT
VmFsdWUganNUZXN0T2JqVW5zaWduZWRMb25nTG9uZ0F0dHIoSlNDOjpFeGVjU3RhdGUqLCBKU0M6
OkpTVmFsdWUsIEpTQzo6UHJvcGVydHlOYW1lKTsKIHZvaWQgc2V0SlNUZXN0T2JqVW5zaWduZWRM
b25nTG9uZ0F0dHIoSlNDOjpFeGVjU3RhdGUqLCBKU0M6OkpTT2JqZWN0KiwgSlNDOjpKU1ZhbHVl
KTsKLUpTQzo6SlNWYWx1ZSBqc1Rlc3RPYmpTdHJpbmdBdHRyKEpTQzo6RXhlY1N0YXRlKiwgSlND
OjpKU1ZhbHVlLCBjb25zdCBKU0M6OklkZW50aWZpZXImKTsKK0pTQzo6SlNWYWx1ZSBqc1Rlc3RP
YmpTdHJpbmdBdHRyKEpTQzo6RXhlY1N0YXRlKiwgSlNDOjpKU1ZhbHVlLCBKU0M6OlByb3BlcnR5
TmFtZSk7CiB2b2lkIHNldEpTVGVzdE9ialN0cmluZ0F0dHIoSlNDOjpFeGVjU3RhdGUqLCBKU0M6
OkpTT2JqZWN0KiwgSlNDOjpKU1ZhbHVlKTsKLUpTQzo6SlNWYWx1ZSBqc1Rlc3RPYmpUZXN0T2Jq
QXR0cihKU0M6OkV4ZWNTdGF0ZSosIEpTQzo6SlNWYWx1ZSwgY29uc3QgSlNDOjpJZGVudGlmaWVy
Jik7CitKU0M6OkpTVmFsdWUganNUZXN0T2JqVGVzdE9iakF0dHIoSlNDOjpFeGVjU3RhdGUqLCBK
U0M6OkpTVmFsdWUsIEpTQzo6UHJvcGVydHlOYW1lKTsKIHZvaWQgc2V0SlNUZXN0T2JqVGVzdE9i
akF0dHIoSlNDOjpFeGVjU3RhdGUqLCBKU0M6OkpTT2JqZWN0KiwgSlNDOjpKU1ZhbHVlKTsKLUpT
Qzo6SlNWYWx1ZSBqc1Rlc3RPYmpTZXF1ZW5jZUF0dHIoSlNDOjpFeGVjU3RhdGUqLCBKU0M6OkpT
VmFsdWUsIGNvbnN0IEpTQzo6SWRlbnRpZmllciYpOworSlNDOjpKU1ZhbHVlIGpzVGVzdE9ialNl
cXVlbmNlQXR0cihKU0M6OkV4ZWNTdGF0ZSosIEpTQzo6SlNWYWx1ZSwgSlNDOjpQcm9wZXJ0eU5h
bWUpOwogdm9pZCBzZXRKU1Rlc3RPYmpTZXF1ZW5jZUF0dHIoSlNDOjpFeGVjU3RhdGUqLCBKU0M6
OkpTT2JqZWN0KiwgSlNDOjpKU1ZhbHVlKTsKLUpTQzo6SlNWYWx1ZSBqc1Rlc3RPYmpJbnRTZXF1
ZW5jZUF0dHIoSlNDOjpFeGVjU3RhdGUqLCBKU0M6OkpTVmFsdWUsIGNvbnN0IEpTQzo6SWRlbnRp
ZmllciYpOworSlNDOjpKU1ZhbHVlIGpzVGVzdE9iakludFNlcXVlbmNlQXR0cihKU0M6OkV4ZWNT
dGF0ZSosIEpTQzo6SlNWYWx1ZSwgSlNDOjpQcm9wZXJ0eU5hbWUpOwogdm9pZCBzZXRKU1Rlc3RP
YmpJbnRTZXF1ZW5jZUF0dHIoSlNDOjpFeGVjU3RhdGUqLCBKU0M6OkpTT2JqZWN0KiwgSlNDOjpK
U1ZhbHVlKTsKLUpTQzo6SlNWYWx1ZSBqc1Rlc3RPYmpTaG9ydFNlcXVlbmNlQXR0cihKU0M6OkV4
ZWNTdGF0ZSosIEpTQzo6SlNWYWx1ZSwgY29uc3QgSlNDOjpJZGVudGlmaWVyJik7CitKU0M6OkpT
VmFsdWUganNUZXN0T2JqU2hvcnRTZXF1ZW5jZUF0dHIoSlNDOjpFeGVjU3RhdGUqLCBKU0M6OkpT
VmFsdWUsIEpTQzo6UHJvcGVydHlOYW1lKTsKIHZvaWQgc2V0SlNUZXN0T2JqU2hvcnRTZXF1ZW5j
ZUF0dHIoSlNDOjpFeGVjU3RhdGUqLCBKU0M6OkpTT2JqZWN0KiwgSlNDOjpKU1ZhbHVlKTsKLUpT
Qzo6SlNWYWx1ZSBqc1Rlc3RPYmpMb25nU2VxdWVuY2VBdHRyKEpTQzo6RXhlY1N0YXRlKiwgSlND
OjpKU1ZhbHVlLCBjb25zdCBKU0M6OklkZW50aWZpZXImKTsKK0pTQzo6SlNWYWx1ZSBqc1Rlc3RP
YmpMb25nU2VxdWVuY2VBdHRyKEpTQzo6RXhlY1N0YXRlKiwgSlNDOjpKU1ZhbHVlLCBKU0M6OlBy
b3BlcnR5TmFtZSk7CiB2b2lkIHNldEpTVGVzdE9iakxvbmdTZXF1ZW5jZUF0dHIoSlNDOjpFeGVj
U3RhdGUqLCBKU0M6OkpTT2JqZWN0KiwgSlNDOjpKU1ZhbHVlKTsKLUpTQzo6SlNWYWx1ZSBqc1Rl
c3RPYmpMb25nTG9uZ1NlcXVlbmNlQXR0cihKU0M6OkV4ZWNTdGF0ZSosIEpTQzo6SlNWYWx1ZSwg
Y29uc3QgSlNDOjpJZGVudGlmaWVyJik7CitKU0M6OkpTVmFsdWUganNUZXN0T2JqTG9uZ0xvbmdT
ZXF1ZW5jZUF0dHIoSlNDOjpFeGVjU3RhdGUqLCBKU0M6OkpTVmFsdWUsIEpTQzo6UHJvcGVydHlO
YW1lKTsKIHZvaWQgc2V0SlNUZXN0T2JqTG9uZ0xvbmdTZXF1ZW5jZUF0dHIoSlNDOjpFeGVjU3Rh
dGUqLCBKU0M6OkpTT2JqZWN0KiwgSlNDOjpKU1ZhbHVlKTsKLUpTQzo6SlNWYWx1ZSBqc1Rlc3RP
YmpVbnNpZ25lZEludFNlcXVlbmNlQXR0cihKU0M6OkV4ZWNTdGF0ZSosIEpTQzo6SlNWYWx1ZSwg
Y29uc3QgSlNDOjpJZGVudGlmaWVyJik7CitKU0M6OkpTVmFsdWUganNUZXN0T2JqVW5zaWduZWRJ
bnRTZXF1ZW5jZUF0dHIoSlNDOjpFeGVjU3RhdGUqLCBKU0M6OkpTVmFsdWUsIEpTQzo6UHJvcGVy
dHlOYW1lKTsKIHZvaWQgc2V0SlNUZXN0T2JqVW5zaWduZWRJbnRTZXF1ZW5jZUF0dHIoSlNDOjpF
eGVjU3RhdGUqLCBKU0M6OkpTT2JqZWN0KiwgSlNDOjpKU1ZhbHVlKTsKLUpTQzo6SlNWYWx1ZSBq
c1Rlc3RPYmpVbnNpZ25lZFNob3J0U2VxdWVuY2VBdHRyKEpTQzo6RXhlY1N0YXRlKiwgSlNDOjpK
U1ZhbHVlLCBjb25zdCBKU0M6OklkZW50aWZpZXImKTsKK0pTQzo6SlNWYWx1ZSBqc1Rlc3RPYmpV
bnNpZ25lZFNob3J0U2VxdWVuY2VBdHRyKEpTQzo6RXhlY1N0YXRlKiwgSlNDOjpKU1ZhbHVlLCBK
U0M6OlByb3BlcnR5TmFtZSk7CiB2b2lkIHNldEpTVGVzdE9ialVuc2lnbmVkU2hvcnRTZXF1ZW5j
ZUF0dHIoSlNDOjpFeGVjU3RhdGUqLCBKU0M6OkpTT2JqZWN0KiwgSlNDOjpKU1ZhbHVlKTsKLUpT
Qzo6SlNWYWx1ZSBqc1Rlc3RPYmpVbnNpZ25lZExvbmdTZXF1ZW5jZUF0dHIoSlNDOjpFeGVjU3Rh
dGUqLCBKU0M6OkpTVmFsdWUsIGNvbnN0IEpTQzo6SWRlbnRpZmllciYpOworSlNDOjpKU1ZhbHVl
IGpzVGVzdE9ialVuc2lnbmVkTG9uZ1NlcXVlbmNlQXR0cihKU0M6OkV4ZWNTdGF0ZSosIEpTQzo6
SlNWYWx1ZSwgSlNDOjpQcm9wZXJ0eU5hbWUpOwogdm9pZCBzZXRKU1Rlc3RPYmpVbnNpZ25lZExv
bmdTZXF1ZW5jZUF0dHIoSlNDOjpFeGVjU3RhdGUqLCBKU0M6OkpTT2JqZWN0KiwgSlNDOjpKU1Zh
bHVlKTsKLUpTQzo6SlNWYWx1ZSBqc1Rlc3RPYmpVbnNpZ25lZExvbmdMb25nU2VxdWVuY2VBdHRy
KEpTQzo6RXhlY1N0YXRlKiwgSlNDOjpKU1ZhbHVlLCBjb25zdCBKU0M6OklkZW50aWZpZXImKTsK
K0pTQzo6SlNWYWx1ZSBqc1Rlc3RPYmpVbnNpZ25lZExvbmdMb25nU2VxdWVuY2VBdHRyKEpTQzo6
RXhlY1N0YXRlKiwgSlNDOjpKU1ZhbHVlLCBKU0M6OlByb3BlcnR5TmFtZSk7CiB2b2lkIHNldEpT
VGVzdE9ialVuc2lnbmVkTG9uZ0xvbmdTZXF1ZW5jZUF0dHIoSlNDOjpFeGVjU3RhdGUqLCBKU0M6
OkpTT2JqZWN0KiwgSlNDOjpKU1ZhbHVlKTsKLUpTQzo6SlNWYWx1ZSBqc1Rlc3RPYmpGbG9hdFNl
cXVlbmNlQXR0cihKU0M6OkV4ZWNTdGF0ZSosIEpTQzo6SlNWYWx1ZSwgY29uc3QgSlNDOjpJZGVu
dGlmaWVyJik7CitKU0M6OkpTVmFsdWUganNUZXN0T2JqRmxvYXRTZXF1ZW5jZUF0dHIoSlNDOjpF
eGVjU3RhdGUqLCBKU0M6OkpTVmFsdWUsIEpTQzo6UHJvcGVydHlOYW1lKTsKIHZvaWQgc2V0SlNU
ZXN0T2JqRmxvYXRTZXF1ZW5jZUF0dHIoSlNDOjpFeGVjU3RhdGUqLCBKU0M6OkpTT2JqZWN0Kiwg
SlNDOjpKU1ZhbHVlKTsKLUpTQzo6SlNWYWx1ZSBqc1Rlc3RPYmpEb3VibGVTZXF1ZW5jZUF0dHIo
SlNDOjpFeGVjU3RhdGUqLCBKU0M6OkpTVmFsdWUsIGNvbnN0IEpTQzo6SWRlbnRpZmllciYpOwor
SlNDOjpKU1ZhbHVlIGpzVGVzdE9iakRvdWJsZVNlcXVlbmNlQXR0cihKU0M6OkV4ZWNTdGF0ZSos
IEpTQzo6SlNWYWx1ZSwgSlNDOjpQcm9wZXJ0eU5hbWUpOwogdm9pZCBzZXRKU1Rlc3RPYmpEb3Vi
bGVTZXF1ZW5jZUF0dHIoSlNDOjpFeGVjU3RhdGUqLCBKU0M6OkpTT2JqZWN0KiwgSlNDOjpKU1Zh
bHVlKTsKLUpTQzo6SlNWYWx1ZSBqc1Rlc3RPYmpCb29sZWFuU2VxdWVuY2VBdHRyKEpTQzo6RXhl
Y1N0YXRlKiwgSlNDOjpKU1ZhbHVlLCBjb25zdCBKU0M6OklkZW50aWZpZXImKTsKK0pTQzo6SlNW
YWx1ZSBqc1Rlc3RPYmpCb29sZWFuU2VxdWVuY2VBdHRyKEpTQzo6RXhlY1N0YXRlKiwgSlNDOjpK
U1ZhbHVlLCBKU0M6OlByb3BlcnR5TmFtZSk7CiB2b2lkIHNldEpTVGVzdE9iakJvb2xlYW5TZXF1
ZW5jZUF0dHIoSlNDOjpFeGVjU3RhdGUqLCBKU0M6OkpTT2JqZWN0KiwgSlNDOjpKU1ZhbHVlKTsK
LUpTQzo6SlNWYWx1ZSBqc1Rlc3RPYmpWb2lkU2VxdWVuY2VBdHRyKEpTQzo6RXhlY1N0YXRlKiwg
SlNDOjpKU1ZhbHVlLCBjb25zdCBKU0M6OklkZW50aWZpZXImKTsKK0pTQzo6SlNWYWx1ZSBqc1Rl
c3RPYmpWb2lkU2VxdWVuY2VBdHRyKEpTQzo6RXhlY1N0YXRlKiwgSlNDOjpKU1ZhbHVlLCBKU0M6
OlByb3BlcnR5TmFtZSk7CiB2b2lkIHNldEpTVGVzdE9ialZvaWRTZXF1ZW5jZUF0dHIoSlNDOjpF
eGVjU3RhdGUqLCBKU0M6OkpTT2JqZWN0KiwgSlNDOjpKU1ZhbHVlKTsKLUpTQzo6SlNWYWx1ZSBq
c1Rlc3RPYmpEYXRlU2VxdWVuY2VBdHRyKEpTQzo6RXhlY1N0YXRlKiwgSlNDOjpKU1ZhbHVlLCBj
b25zdCBKU0M6OklkZW50aWZpZXImKTsKK0pTQzo6SlNWYWx1ZSBqc1Rlc3RPYmpEYXRlU2VxdWVu
Y2VBdHRyKEpTQzo6RXhlY1N0YXRlKiwgSlNDOjpKU1ZhbHVlLCBKU0M6OlByb3BlcnR5TmFtZSk7
CiB2b2lkIHNldEpTVGVzdE9iakRhdGVTZXF1ZW5jZUF0dHIoSlNDOjpFeGVjU3RhdGUqLCBKU0M6
OkpTT2JqZWN0KiwgSlNDOjpKU1ZhbHVlKTsKLUpTQzo6SlNWYWx1ZSBqc1Rlc3RPYmpYTUxPYmpB
dHRyKEpTQzo6RXhlY1N0YXRlKiwgSlNDOjpKU1ZhbHVlLCBjb25zdCBKU0M6OklkZW50aWZpZXIm
KTsKK0pTQzo6SlNWYWx1ZSBqc1Rlc3RPYmpYTUxPYmpBdHRyKEpTQzo6RXhlY1N0YXRlKiwgSlND
OjpKU1ZhbHVlLCBKU0M6OlByb3BlcnR5TmFtZSk7CiB2b2lkIHNldEpTVGVzdE9ialhNTE9iakF0
dHIoSlNDOjpFeGVjU3RhdGUqLCBKU0M6OkpTT2JqZWN0KiwgSlNDOjpKU1ZhbHVlKTsKLUpTQzo6
SlNWYWx1ZSBqc1Rlc3RPYmpDcmVhdGUoSlNDOjpFeGVjU3RhdGUqLCBKU0M6OkpTVmFsdWUsIGNv
bnN0IEpTQzo6SWRlbnRpZmllciYpOworSlNDOjpKU1ZhbHVlIGpzVGVzdE9iakNyZWF0ZShKU0M6
OkV4ZWNTdGF0ZSosIEpTQzo6SlNWYWx1ZSwgSlNDOjpQcm9wZXJ0eU5hbWUpOwogdm9pZCBzZXRK
U1Rlc3RPYmpDcmVhdGUoSlNDOjpFeGVjU3RhdGUqLCBKU0M6OkpTT2JqZWN0KiwgSlNDOjpKU1Zh
bHVlKTsKLUpTQzo6SlNWYWx1ZSBqc1Rlc3RPYmpSZWZsZWN0ZWRTdHJpbmdBdHRyKEpTQzo6RXhl
Y1N0YXRlKiwgSlNDOjpKU1ZhbHVlLCBjb25zdCBKU0M6OklkZW50aWZpZXImKTsKK0pTQzo6SlNW
YWx1ZSBqc1Rlc3RPYmpSZWZsZWN0ZWRTdHJpbmdBdHRyKEpTQzo6RXhlY1N0YXRlKiwgSlNDOjpK
U1ZhbHVlLCBKU0M6OlByb3BlcnR5TmFtZSk7CiB2b2lkIHNldEpTVGVzdE9ialJlZmxlY3RlZFN0
cmluZ0F0dHIoSlNDOjpFeGVjU3RhdGUqLCBKU0M6OkpTT2JqZWN0KiwgSlNDOjpKU1ZhbHVlKTsK
LUpTQzo6SlNWYWx1ZSBqc1Rlc3RPYmpSZWZsZWN0ZWRJbnRlZ3JhbEF0dHIoSlNDOjpFeGVjU3Rh
dGUqLCBKU0M6OkpTVmFsdWUsIGNvbnN0IEpTQzo6SWRlbnRpZmllciYpOworSlNDOjpKU1ZhbHVl
IGpzVGVzdE9ialJlZmxlY3RlZEludGVncmFsQXR0cihKU0M6OkV4ZWNTdGF0ZSosIEpTQzo6SlNW
YWx1ZSwgSlNDOjpQcm9wZXJ0eU5hbWUpOwogdm9pZCBzZXRKU1Rlc3RPYmpSZWZsZWN0ZWRJbnRl
Z3JhbEF0dHIoSlNDOjpFeGVjU3RhdGUqLCBKU0M6OkpTT2JqZWN0KiwgSlNDOjpKU1ZhbHVlKTsK
LUpTQzo6SlNWYWx1ZSBqc1Rlc3RPYmpSZWZsZWN0ZWRVbnNpZ25lZEludGVncmFsQXR0cihKU0M6
OkV4ZWNTdGF0ZSosIEpTQzo6SlNWYWx1ZSwgY29uc3QgSlNDOjpJZGVudGlmaWVyJik7CitKU0M6
OkpTVmFsdWUganNUZXN0T2JqUmVmbGVjdGVkVW5zaWduZWRJbnRlZ3JhbEF0dHIoSlNDOjpFeGVj
U3RhdGUqLCBKU0M6OkpTVmFsdWUsIEpTQzo6UHJvcGVydHlOYW1lKTsKIHZvaWQgc2V0SlNUZXN0
T2JqUmVmbGVjdGVkVW5zaWduZWRJbnRlZ3JhbEF0dHIoSlNDOjpFeGVjU3RhdGUqLCBKU0M6OkpT
T2JqZWN0KiwgSlNDOjpKU1ZhbHVlKTsKLUpTQzo6SlNWYWx1ZSBqc1Rlc3RPYmpSZWZsZWN0ZWRC
b29sZWFuQXR0cihKU0M6OkV4ZWNTdGF0ZSosIEpTQzo6SlNWYWx1ZSwgY29uc3QgSlNDOjpJZGVu
dGlmaWVyJik7CitKU0M6OkpTVmFsdWUganNUZXN0T2JqUmVmbGVjdGVkQm9vbGVhbkF0dHIoSlND
OjpFeGVjU3RhdGUqLCBKU0M6OkpTVmFsdWUsIEpTQzo6UHJvcGVydHlOYW1lKTsKIHZvaWQgc2V0
SlNUZXN0T2JqUmVmbGVjdGVkQm9vbGVhbkF0dHIoSlNDOjpFeGVjU3RhdGUqLCBKU0M6OkpTT2Jq
ZWN0KiwgSlNDOjpKU1ZhbHVlKTsKLUpTQzo6SlNWYWx1ZSBqc1Rlc3RPYmpSZWZsZWN0ZWRVUkxB
dHRyKEpTQzo6RXhlY1N0YXRlKiwgSlNDOjpKU1ZhbHVlLCBjb25zdCBKU0M6OklkZW50aWZpZXIm
KTsKK0pTQzo6SlNWYWx1ZSBqc1Rlc3RPYmpSZWZsZWN0ZWRVUkxBdHRyKEpTQzo6RXhlY1N0YXRl
KiwgSlNDOjpKU1ZhbHVlLCBKU0M6OlByb3BlcnR5TmFtZSk7CiB2b2lkIHNldEpTVGVzdE9ialJl
ZmxlY3RlZFVSTEF0dHIoSlNDOjpFeGVjU3RhdGUqLCBKU0M6OkpTT2JqZWN0KiwgSlNDOjpKU1Zh
bHVlKTsKLUpTQzo6SlNWYWx1ZSBqc1Rlc3RPYmpSZWZsZWN0ZWRTdHJpbmdBdHRyKEpTQzo6RXhl
Y1N0YXRlKiwgSlNDOjpKU1ZhbHVlLCBjb25zdCBKU0M6OklkZW50aWZpZXImKTsKK0pTQzo6SlNW
YWx1ZSBqc1Rlc3RPYmpSZWZsZWN0ZWRTdHJpbmdBdHRyKEpTQzo6RXhlY1N0YXRlKiwgSlNDOjpK
U1ZhbHVlLCBKU0M6OlByb3BlcnR5TmFtZSk7CiB2b2lkIHNldEpTVGVzdE9ialJlZmxlY3RlZFN0
cmluZ0F0dHIoSlNDOjpFeGVjU3RhdGUqLCBKU0M6OkpTT2JqZWN0KiwgSlNDOjpKU1ZhbHVlKTsK
LUpTQzo6SlNWYWx1ZSBqc1Rlc3RPYmpSZWZsZWN0ZWRDdXN0b21JbnRlZ3JhbEF0dHIoSlNDOjpF
eGVjU3RhdGUqLCBKU0M6OkpTVmFsdWUsIGNvbnN0IEpTQzo6SWRlbnRpZmllciYpOworSlNDOjpK
U1ZhbHVlIGpzVGVzdE9ialJlZmxlY3RlZEN1c3RvbUludGVncmFsQXR0cihKU0M6OkV4ZWNTdGF0
ZSosIEpTQzo6SlNWYWx1ZSwgSlNDOjpQcm9wZXJ0eU5hbWUpOwogdm9pZCBzZXRKU1Rlc3RPYmpS
ZWZsZWN0ZWRDdXN0b21JbnRlZ3JhbEF0dHIoSlNDOjpFeGVjU3RhdGUqLCBKU0M6OkpTT2JqZWN0
KiwgSlNDOjpKU1ZhbHVlKTsKLUpTQzo6SlNWYWx1ZSBqc1Rlc3RPYmpSZWZsZWN0ZWRDdXN0b21C
b29sZWFuQXR0cihKU0M6OkV4ZWNTdGF0ZSosIEpTQzo6SlNWYWx1ZSwgY29uc3QgSlNDOjpJZGVu
dGlmaWVyJik7CitKU0M6OkpTVmFsdWUganNUZXN0T2JqUmVmbGVjdGVkQ3VzdG9tQm9vbGVhbkF0
dHIoSlNDOjpFeGVjU3RhdGUqLCBKU0M6OkpTVmFsdWUsIEpTQzo6UHJvcGVydHlOYW1lKTsKIHZv
aWQgc2V0SlNUZXN0T2JqUmVmbGVjdGVkQ3VzdG9tQm9vbGVhbkF0dHIoSlNDOjpFeGVjU3RhdGUq
LCBKU0M6OkpTT2JqZWN0KiwgSlNDOjpKU1ZhbHVlKTsKLUpTQzo6SlNWYWx1ZSBqc1Rlc3RPYmpS
ZWZsZWN0ZWRDdXN0b21VUkxBdHRyKEpTQzo6RXhlY1N0YXRlKiwgSlNDOjpKU1ZhbHVlLCBjb25z
dCBKU0M6OklkZW50aWZpZXImKTsKK0pTQzo6SlNWYWx1ZSBqc1Rlc3RPYmpSZWZsZWN0ZWRDdXN0
b21VUkxBdHRyKEpTQzo6RXhlY1N0YXRlKiwgSlNDOjpKU1ZhbHVlLCBKU0M6OlByb3BlcnR5TmFt
ZSk7CiB2b2lkIHNldEpTVGVzdE9ialJlZmxlY3RlZEN1c3RvbVVSTEF0dHIoSlNDOjpFeGVjU3Rh
dGUqLCBKU0M6OkpTT2JqZWN0KiwgSlNDOjpKU1ZhbHVlKTsKLUpTQzo6SlNWYWx1ZSBqc1Rlc3RP
YmpBdHRyV2l0aEdldHRlckV4Y2VwdGlvbihKU0M6OkV4ZWNTdGF0ZSosIEpTQzo6SlNWYWx1ZSwg
Y29uc3QgSlNDOjpJZGVudGlmaWVyJik7CitKU0M6OkpTVmFsdWUganNUZXN0T2JqQXR0cldpdGhH
ZXR0ZXJFeGNlcHRpb24oSlNDOjpFeGVjU3RhdGUqLCBKU0M6OkpTVmFsdWUsIEpTQzo6UHJvcGVy
dHlOYW1lKTsKIHZvaWQgc2V0SlNUZXN0T2JqQXR0cldpdGhHZXR0ZXJFeGNlcHRpb24oSlNDOjpF
eGVjU3RhdGUqLCBKU0M6OkpTT2JqZWN0KiwgSlNDOjpKU1ZhbHVlKTsKLUpTQzo6SlNWYWx1ZSBq
c1Rlc3RPYmpBdHRyV2l0aFNldHRlckV4Y2VwdGlvbihKU0M6OkV4ZWNTdGF0ZSosIEpTQzo6SlNW
YWx1ZSwgY29uc3QgSlNDOjpJZGVudGlmaWVyJik7CitKU0M6OkpTVmFsdWUganNUZXN0T2JqQXR0
cldpdGhTZXR0ZXJFeGNlcHRpb24oSlNDOjpFeGVjU3RhdGUqLCBKU0M6OkpTVmFsdWUsIEpTQzo6
UHJvcGVydHlOYW1lKTsKIHZvaWQgc2V0SlNUZXN0T2JqQXR0cldpdGhTZXR0ZXJFeGNlcHRpb24o
SlNDOjpFeGVjU3RhdGUqLCBKU0M6OkpTT2JqZWN0KiwgSlNDOjpKU1ZhbHVlKTsKLUpTQzo6SlNW
YWx1ZSBqc1Rlc3RPYmpTdHJpbmdBdHRyV2l0aEdldHRlckV4Y2VwdGlvbihKU0M6OkV4ZWNTdGF0
ZSosIEpTQzo6SlNWYWx1ZSwgY29uc3QgSlNDOjpJZGVudGlmaWVyJik7CitKU0M6OkpTVmFsdWUg
anNUZXN0T2JqU3RyaW5nQXR0cldpdGhHZXR0ZXJFeGNlcHRpb24oSlNDOjpFeGVjU3RhdGUqLCBK
U0M6OkpTVmFsdWUsIEpTQzo6UHJvcGVydHlOYW1lKTsKIHZvaWQgc2V0SlNUZXN0T2JqU3RyaW5n
QXR0cldpdGhHZXR0ZXJFeGNlcHRpb24oSlNDOjpFeGVjU3RhdGUqLCBKU0M6OkpTT2JqZWN0Kiwg
SlNDOjpKU1ZhbHVlKTsKLUpTQzo6SlNWYWx1ZSBqc1Rlc3RPYmpTdHJpbmdBdHRyV2l0aFNldHRl
ckV4Y2VwdGlvbihKU0M6OkV4ZWNTdGF0ZSosIEpTQzo6SlNWYWx1ZSwgY29uc3QgSlNDOjpJZGVu
dGlmaWVyJik7CitKU0M6OkpTVmFsdWUganNUZXN0T2JqU3RyaW5nQXR0cldpdGhTZXR0ZXJFeGNl
cHRpb24oSlNDOjpFeGVjU3RhdGUqLCBKU0M6OkpTVmFsdWUsIEpTQzo6UHJvcGVydHlOYW1lKTsK
IHZvaWQgc2V0SlNUZXN0T2JqU3RyaW5nQXR0cldpdGhTZXR0ZXJFeGNlcHRpb24oSlNDOjpFeGVj
U3RhdGUqLCBKU0M6OkpTT2JqZWN0KiwgSlNDOjpKU1ZhbHVlKTsKLUpTQzo6SlNWYWx1ZSBqc1Rl
c3RPYmpDdXN0b21BdHRyKEpTQzo6RXhlY1N0YXRlKiwgSlNDOjpKU1ZhbHVlLCBjb25zdCBKU0M6
OklkZW50aWZpZXImKTsKK0pTQzo6SlNWYWx1ZSBqc1Rlc3RPYmpDdXN0b21BdHRyKEpTQzo6RXhl
Y1N0YXRlKiwgSlNDOjpKU1ZhbHVlLCBKU0M6OlByb3BlcnR5TmFtZSk7CiB2b2lkIHNldEpTVGVz
dE9iakN1c3RvbUF0dHIoSlNDOjpFeGVjU3RhdGUqLCBKU0M6OkpTT2JqZWN0KiwgSlNDOjpKU1Zh
bHVlKTsKLUpTQzo6SlNWYWx1ZSBqc1Rlc3RPYmpXaXRoU2NyaXB0U3RhdGVBdHRyaWJ1dGUoSlND
OjpFeGVjU3RhdGUqLCBKU0M6OkpTVmFsdWUsIGNvbnN0IEpTQzo6SWRlbnRpZmllciYpOworSlND
OjpKU1ZhbHVlIGpzVGVzdE9ialdpdGhTY3JpcHRTdGF0ZUF0dHJpYnV0ZShKU0M6OkV4ZWNTdGF0
ZSosIEpTQzo6SlNWYWx1ZSwgSlNDOjpQcm9wZXJ0eU5hbWUpOwogdm9pZCBzZXRKU1Rlc3RPYmpX
aXRoU2NyaXB0U3RhdGVBdHRyaWJ1dGUoSlNDOjpFeGVjU3RhdGUqLCBKU0M6OkpTT2JqZWN0Kiwg
SlNDOjpKU1ZhbHVlKTsKLUpTQzo6SlNWYWx1ZSBqc1Rlc3RPYmpXaXRoU2NyaXB0RXhlY3V0aW9u
Q29udGV4dEF0dHJpYnV0ZShKU0M6OkV4ZWNTdGF0ZSosIEpTQzo6SlNWYWx1ZSwgY29uc3QgSlND
OjpJZGVudGlmaWVyJik7CitKU0M6OkpTVmFsdWUganNUZXN0T2JqV2l0aFNjcmlwdEV4ZWN1dGlv
bkNvbnRleHRBdHRyaWJ1dGUoSlNDOjpFeGVjU3RhdGUqLCBKU0M6OkpTVmFsdWUsIEpTQzo6UHJv
cGVydHlOYW1lKTsKIHZvaWQgc2V0SlNUZXN0T2JqV2l0aFNjcmlwdEV4ZWN1dGlvbkNvbnRleHRB
dHRyaWJ1dGUoSlNDOjpFeGVjU3RhdGUqLCBKU0M6OkpTT2JqZWN0KiwgSlNDOjpKU1ZhbHVlKTsK
LUpTQzo6SlNWYWx1ZSBqc1Rlc3RPYmpXaXRoU2NyaXB0U3RhdGVBdHRyaWJ1dGVSYWlzZXMoSlND
OjpFeGVjU3RhdGUqLCBKU0M6OkpTVmFsdWUsIGNvbnN0IEpTQzo6SWRlbnRpZmllciYpOworSlND
OjpKU1ZhbHVlIGpzVGVzdE9ialdpdGhTY3JpcHRTdGF0ZUF0dHJpYnV0ZVJhaXNlcyhKU0M6OkV4
ZWNTdGF0ZSosIEpTQzo6SlNWYWx1ZSwgSlNDOjpQcm9wZXJ0eU5hbWUpOwogdm9pZCBzZXRKU1Rl
c3RPYmpXaXRoU2NyaXB0U3RhdGVBdHRyaWJ1dGVSYWlzZXMoSlNDOjpFeGVjU3RhdGUqLCBKU0M6
OkpTT2JqZWN0KiwgSlNDOjpKU1ZhbHVlKTsKLUpTQzo6SlNWYWx1ZSBqc1Rlc3RPYmpXaXRoU2Ny
aXB0RXhlY3V0aW9uQ29udGV4dEF0dHJpYnV0ZVJhaXNlcyhKU0M6OkV4ZWNTdGF0ZSosIEpTQzo6
SlNWYWx1ZSwgY29uc3QgSlNDOjpJZGVudGlmaWVyJik7CitKU0M6OkpTVmFsdWUganNUZXN0T2Jq
V2l0aFNjcmlwdEV4ZWN1dGlvbkNvbnRleHRBdHRyaWJ1dGVSYWlzZXMoSlNDOjpFeGVjU3RhdGUq
LCBKU0M6OkpTVmFsdWUsIEpTQzo6UHJvcGVydHlOYW1lKTsKIHZvaWQgc2V0SlNUZXN0T2JqV2l0
aFNjcmlwdEV4ZWN1dGlvbkNvbnRleHRBdHRyaWJ1dGVSYWlzZXMoSlNDOjpFeGVjU3RhdGUqLCBK
U0M6OkpTT2JqZWN0KiwgSlNDOjpKU1ZhbHVlKTsKLUpTQzo6SlNWYWx1ZSBqc1Rlc3RPYmpXaXRo
U2NyaXB0RXhlY3V0aW9uQ29udGV4dEFuZFNjcmlwdFN0YXRlQXR0cmlidXRlKEpTQzo6RXhlY1N0
YXRlKiwgSlNDOjpKU1ZhbHVlLCBjb25zdCBKU0M6OklkZW50aWZpZXImKTsKK0pTQzo6SlNWYWx1
ZSBqc1Rlc3RPYmpXaXRoU2NyaXB0RXhlY3V0aW9uQ29udGV4dEFuZFNjcmlwdFN0YXRlQXR0cmli
dXRlKEpTQzo6RXhlY1N0YXRlKiwgSlNDOjpKU1ZhbHVlLCBKU0M6OlByb3BlcnR5TmFtZSk7CiB2
b2lkIHNldEpTVGVzdE9ialdpdGhTY3JpcHRFeGVjdXRpb25Db250ZXh0QW5kU2NyaXB0U3RhdGVB
dHRyaWJ1dGUoSlNDOjpFeGVjU3RhdGUqLCBKU0M6OkpTT2JqZWN0KiwgSlNDOjpKU1ZhbHVlKTsK
LUpTQzo6SlNWYWx1ZSBqc1Rlc3RPYmpXaXRoU2NyaXB0RXhlY3V0aW9uQ29udGV4dEFuZFNjcmlw
dFN0YXRlQXR0cmlidXRlUmFpc2VzKEpTQzo6RXhlY1N0YXRlKiwgSlNDOjpKU1ZhbHVlLCBjb25z
dCBKU0M6OklkZW50aWZpZXImKTsKK0pTQzo6SlNWYWx1ZSBqc1Rlc3RPYmpXaXRoU2NyaXB0RXhl
Y3V0aW9uQ29udGV4dEFuZFNjcmlwdFN0YXRlQXR0cmlidXRlUmFpc2VzKEpTQzo6RXhlY1N0YXRl
KiwgSlNDOjpKU1ZhbHVlLCBKU0M6OlByb3BlcnR5TmFtZSk7CiB2b2lkIHNldEpTVGVzdE9ialdp
dGhTY3JpcHRFeGVjdXRpb25Db250ZXh0QW5kU2NyaXB0U3RhdGVBdHRyaWJ1dGVSYWlzZXMoSlND
OjpFeGVjU3RhdGUqLCBKU0M6OkpTT2JqZWN0KiwgSlNDOjpKU1ZhbHVlKTsKLUpTQzo6SlNWYWx1
ZSBqc1Rlc3RPYmpXaXRoU2NyaXB0RXhlY3V0aW9uQ29udGV4dEFuZFNjcmlwdFN0YXRlV2l0aFNw
YWNlc0F0dHJpYnV0ZShKU0M6OkV4ZWNTdGF0ZSosIEpTQzo6SlNWYWx1ZSwgY29uc3QgSlNDOjpJ
ZGVudGlmaWVyJik7CitKU0M6OkpTVmFsdWUganNUZXN0T2JqV2l0aFNjcmlwdEV4ZWN1dGlvbkNv
bnRleHRBbmRTY3JpcHRTdGF0ZVdpdGhTcGFjZXNBdHRyaWJ1dGUoSlNDOjpFeGVjU3RhdGUqLCBK
U0M6OkpTVmFsdWUsIEpTQzo6UHJvcGVydHlOYW1lKTsKIHZvaWQgc2V0SlNUZXN0T2JqV2l0aFNj
cmlwdEV4ZWN1dGlvbkNvbnRleHRBbmRTY3JpcHRTdGF0ZVdpdGhTcGFjZXNBdHRyaWJ1dGUoSlND
OjpFeGVjU3RhdGUqLCBKU0M6OkpTT2JqZWN0KiwgSlNDOjpKU1ZhbHVlKTsKLUpTQzo6SlNWYWx1
ZSBqc1Rlc3RPYmpXaXRoU2NyaXB0QXJndW1lbnRzQW5kQ2FsbFN0YWNrQXR0cmlidXRlKEpTQzo6
RXhlY1N0YXRlKiwgSlNDOjpKU1ZhbHVlLCBjb25zdCBKU0M6OklkZW50aWZpZXImKTsKK0pTQzo6
SlNWYWx1ZSBqc1Rlc3RPYmpXaXRoU2NyaXB0QXJndW1lbnRzQW5kQ2FsbFN0YWNrQXR0cmlidXRl
KEpTQzo6RXhlY1N0YXRlKiwgSlNDOjpKU1ZhbHVlLCBKU0M6OlByb3BlcnR5TmFtZSk7CiB2b2lk
IHNldEpTVGVzdE9ialdpdGhTY3JpcHRBcmd1bWVudHNBbmRDYWxsU3RhY2tBdHRyaWJ1dGUoSlND
OjpFeGVjU3RhdGUqLCBKU0M6OkpTT2JqZWN0KiwgSlNDOjpKU1ZhbHVlKTsKICNpZiBFTkFCTEUo
Q29uZGl0aW9uMSkKLUpTQzo6SlNWYWx1ZSBqc1Rlc3RPYmpDb25kaXRpb25hbEF0dHIxKEpTQzo6
RXhlY1N0YXRlKiwgSlNDOjpKU1ZhbHVlLCBjb25zdCBKU0M6OklkZW50aWZpZXImKTsKK0pTQzo6
SlNWYWx1ZSBqc1Rlc3RPYmpDb25kaXRpb25hbEF0dHIxKEpTQzo6RXhlY1N0YXRlKiwgSlNDOjpK
U1ZhbHVlLCBKU0M6OlByb3BlcnR5TmFtZSk7CiB2b2lkIHNldEpTVGVzdE9iakNvbmRpdGlvbmFs
QXR0cjEoSlNDOjpFeGVjU3RhdGUqLCBKU0M6OkpTT2JqZWN0KiwgSlNDOjpKU1ZhbHVlKTsKICNl
bmRpZgogI2lmIEVOQUJMRShDb25kaXRpb24xKSAmJiBFTkFCTEUoQ29uZGl0aW9uMikKLUpTQzo6
SlNWYWx1ZSBqc1Rlc3RPYmpDb25kaXRpb25hbEF0dHIyKEpTQzo6RXhlY1N0YXRlKiwgSlNDOjpK
U1ZhbHVlLCBjb25zdCBKU0M6OklkZW50aWZpZXImKTsKK0pTQzo6SlNWYWx1ZSBqc1Rlc3RPYmpD
b25kaXRpb25hbEF0dHIyKEpTQzo6RXhlY1N0YXRlKiwgSlNDOjpKU1ZhbHVlLCBKU0M6OlByb3Bl
cnR5TmFtZSk7CiB2b2lkIHNldEpTVGVzdE9iakNvbmRpdGlvbmFsQXR0cjIoSlNDOjpFeGVjU3Rh
dGUqLCBKU0M6OkpTT2JqZWN0KiwgSlNDOjpKU1ZhbHVlKTsKICNlbmRpZgogI2lmIEVOQUJMRShD
b25kaXRpb24xKSB8fCBFTkFCTEUoQ29uZGl0aW9uMikKLUpTQzo6SlNWYWx1ZSBqc1Rlc3RPYmpD
b25kaXRpb25hbEF0dHIzKEpTQzo6RXhlY1N0YXRlKiwgSlNDOjpKU1ZhbHVlLCBjb25zdCBKU0M6
OklkZW50aWZpZXImKTsKK0pTQzo6SlNWYWx1ZSBqc1Rlc3RPYmpDb25kaXRpb25hbEF0dHIzKEpT
Qzo6RXhlY1N0YXRlKiwgSlNDOjpKU1ZhbHVlLCBKU0M6OlByb3BlcnR5TmFtZSk7CiB2b2lkIHNl
dEpTVGVzdE9iakNvbmRpdGlvbmFsQXR0cjMoSlNDOjpFeGVjU3RhdGUqLCBKU0M6OkpTT2JqZWN0
KiwgSlNDOjpKU1ZhbHVlKTsKICNlbmRpZgogI2lmIEVOQUJMRShDb25kaXRpb24xKQotSlNDOjpK
U1ZhbHVlIGpzVGVzdE9iakNvbmRpdGlvbmFsQXR0cjRDb25zdHJ1Y3RvcihKU0M6OkV4ZWNTdGF0
ZSosIEpTQzo6SlNWYWx1ZSwgY29uc3QgSlNDOjpJZGVudGlmaWVyJik7CitKU0M6OkpTVmFsdWUg
anNUZXN0T2JqQ29uZGl0aW9uYWxBdHRyNENvbnN0cnVjdG9yKEpTQzo6RXhlY1N0YXRlKiwgSlND
OjpKU1ZhbHVlLCBKU0M6OlByb3BlcnR5TmFtZSk7CiB2b2lkIHNldEpTVGVzdE9iakNvbmRpdGlv
bmFsQXR0cjRDb25zdHJ1Y3RvcihKU0M6OkV4ZWNTdGF0ZSosIEpTQzo6SlNPYmplY3QqLCBKU0M6
OkpTVmFsdWUpOwogI2VuZGlmCiAjaWYgRU5BQkxFKENvbmRpdGlvbjEpICYmIEVOQUJMRShDb25k
aXRpb24yKQotSlNDOjpKU1ZhbHVlIGpzVGVzdE9iakNvbmRpdGlvbmFsQXR0cjVDb25zdHJ1Y3Rv
cihKU0M6OkV4ZWNTdGF0ZSosIEpTQzo6SlNWYWx1ZSwgY29uc3QgSlNDOjpJZGVudGlmaWVyJik7
CitKU0M6OkpTVmFsdWUganNUZXN0T2JqQ29uZGl0aW9uYWxBdHRyNUNvbnN0cnVjdG9yKEpTQzo6
RXhlY1N0YXRlKiwgSlNDOjpKU1ZhbHVlLCBKU0M6OlByb3BlcnR5TmFtZSk7CiB2b2lkIHNldEpT
VGVzdE9iakNvbmRpdGlvbmFsQXR0cjVDb25zdHJ1Y3RvcihKU0M6OkV4ZWNTdGF0ZSosIEpTQzo6
SlNPYmplY3QqLCBKU0M6OkpTVmFsdWUpOwogI2VuZGlmCiAjaWYgRU5BQkxFKENvbmRpdGlvbjEp
IHx8IEVOQUJMRShDb25kaXRpb24yKQotSlNDOjpKU1ZhbHVlIGpzVGVzdE9iakNvbmRpdGlvbmFs
QXR0cjZDb25zdHJ1Y3RvcihKU0M6OkV4ZWNTdGF0ZSosIEpTQzo6SlNWYWx1ZSwgY29uc3QgSlND
OjpJZGVudGlmaWVyJik7CitKU0M6OkpTVmFsdWUganNUZXN0T2JqQ29uZGl0aW9uYWxBdHRyNkNv
bnN0cnVjdG9yKEpTQzo6RXhlY1N0YXRlKiwgSlNDOjpKU1ZhbHVlLCBKU0M6OlByb3BlcnR5TmFt
ZSk7CiB2b2lkIHNldEpTVGVzdE9iakNvbmRpdGlvbmFsQXR0cjZDb25zdHJ1Y3RvcihKU0M6OkV4
ZWNTdGF0ZSosIEpTQzo6SlNPYmplY3QqLCBKU0M6OkpTVmFsdWUpOwogI2VuZGlmCi1KU0M6OkpT
VmFsdWUganNUZXN0T2JqQ2FjaGVkQXR0cmlidXRlMShKU0M6OkV4ZWNTdGF0ZSosIEpTQzo6SlNW
YWx1ZSwgY29uc3QgSlNDOjpJZGVudGlmaWVyJik7Ci1KU0M6OkpTVmFsdWUganNUZXN0T2JqQ2Fj
aGVkQXR0cmlidXRlMihKU0M6OkV4ZWNTdGF0ZSosIEpTQzo6SlNWYWx1ZSwgY29uc3QgSlNDOjpJ
ZGVudGlmaWVyJik7Ci1KU0M6OkpTVmFsdWUganNUZXN0T2JqQ29udGVudERvY3VtZW50KEpTQzo6
RXhlY1N0YXRlKiwgSlNDOjpKU1ZhbHVlLCBjb25zdCBKU0M6OklkZW50aWZpZXImKTsKLUpTQzo6
SlNWYWx1ZSBqc1Rlc3RPYmpNdXRhYmxlUG9pbnQoSlNDOjpFeGVjU3RhdGUqLCBKU0M6OkpTVmFs
dWUsIGNvbnN0IEpTQzo6SWRlbnRpZmllciYpOworSlNDOjpKU1ZhbHVlIGpzVGVzdE9iakNhY2hl
ZEF0dHJpYnV0ZTEoSlNDOjpFeGVjU3RhdGUqLCBKU0M6OkpTVmFsdWUsIEpTQzo6UHJvcGVydHlO
YW1lKTsKK0pTQzo6SlNWYWx1ZSBqc1Rlc3RPYmpDYWNoZWRBdHRyaWJ1dGUyKEpTQzo6RXhlY1N0
YXRlKiwgSlNDOjpKU1ZhbHVlLCBKU0M6OlByb3BlcnR5TmFtZSk7CitKU0M6OkpTVmFsdWUganNU
ZXN0T2JqQ29udGVudERvY3VtZW50KEpTQzo6RXhlY1N0YXRlKiwgSlNDOjpKU1ZhbHVlLCBKU0M6
OlByb3BlcnR5TmFtZSk7CitKU0M6OkpTVmFsdWUganNUZXN0T2JqTXV0YWJsZVBvaW50KEpTQzo6
RXhlY1N0YXRlKiwgSlNDOjpKU1ZhbHVlLCBKU0M6OlByb3BlcnR5TmFtZSk7CiB2b2lkIHNldEpT
VGVzdE9iak11dGFibGVQb2ludChKU0M6OkV4ZWNTdGF0ZSosIEpTQzo6SlNPYmplY3QqLCBKU0M6
OkpTVmFsdWUpOwotSlNDOjpKU1ZhbHVlIGpzVGVzdE9iakltbXV0YWJsZVBvaW50KEpTQzo6RXhl
Y1N0YXRlKiwgSlNDOjpKU1ZhbHVlLCBjb25zdCBKU0M6OklkZW50aWZpZXImKTsKK0pTQzo6SlNW
YWx1ZSBqc1Rlc3RPYmpJbW11dGFibGVQb2ludChKU0M6OkV4ZWNTdGF0ZSosIEpTQzo6SlNWYWx1
ZSwgSlNDOjpQcm9wZXJ0eU5hbWUpOwogdm9pZCBzZXRKU1Rlc3RPYmpJbW11dGFibGVQb2ludChK
U0M6OkV4ZWNTdGF0ZSosIEpTQzo6SlNPYmplY3QqLCBKU0M6OkpTVmFsdWUpOwotSlNDOjpKU1Zh
bHVlIGpzVGVzdE9ialN0cmF3YmVycnkoSlNDOjpFeGVjU3RhdGUqLCBKU0M6OkpTVmFsdWUsIGNv
bnN0IEpTQzo6SWRlbnRpZmllciYpOworSlNDOjpKU1ZhbHVlIGpzVGVzdE9ialN0cmF3YmVycnko
SlNDOjpFeGVjU3RhdGUqLCBKU0M6OkpTVmFsdWUsIEpTQzo6UHJvcGVydHlOYW1lKTsKIHZvaWQg
c2V0SlNUZXN0T2JqU3RyYXdiZXJyeShKU0M6OkV4ZWNTdGF0ZSosIEpTQzo6SlNPYmplY3QqLCBK
U0M6OkpTVmFsdWUpOwotSlNDOjpKU1ZhbHVlIGpzVGVzdE9ialN0cmljdEZsb2F0KEpTQzo6RXhl
Y1N0YXRlKiwgSlNDOjpKU1ZhbHVlLCBjb25zdCBKU0M6OklkZW50aWZpZXImKTsKK0pTQzo6SlNW
YWx1ZSBqc1Rlc3RPYmpTdHJpY3RGbG9hdChKU0M6OkV4ZWNTdGF0ZSosIEpTQzo6SlNWYWx1ZSwg
SlNDOjpQcm9wZXJ0eU5hbWUpOwogdm9pZCBzZXRKU1Rlc3RPYmpTdHJpY3RGbG9hdChKU0M6OkV4
ZWNTdGF0ZSosIEpTQzo6SlNPYmplY3QqLCBKU0M6OkpTVmFsdWUpOwotSlNDOjpKU1ZhbHVlIGpz
VGVzdE9iakRlc2NyaXB0aW9uKEpTQzo6RXhlY1N0YXRlKiwgSlNDOjpKU1ZhbHVlLCBjb25zdCBK
U0M6OklkZW50aWZpZXImKTsKLUpTQzo6SlNWYWx1ZSBqc1Rlc3RPYmpJZChKU0M6OkV4ZWNTdGF0
ZSosIEpTQzo6SlNWYWx1ZSwgY29uc3QgSlNDOjpJZGVudGlmaWVyJik7CitKU0M6OkpTVmFsdWUg
anNUZXN0T2JqRGVzY3JpcHRpb24oSlNDOjpFeGVjU3RhdGUqLCBKU0M6OkpTVmFsdWUsIEpTQzo6
UHJvcGVydHlOYW1lKTsKK0pTQzo6SlNWYWx1ZSBqc1Rlc3RPYmpJZChKU0M6OkV4ZWNTdGF0ZSos
IEpTQzo6SlNWYWx1ZSwgSlNDOjpQcm9wZXJ0eU5hbWUpOwogdm9pZCBzZXRKU1Rlc3RPYmpJZChK
U0M6OkV4ZWNTdGF0ZSosIEpTQzo6SlNPYmplY3QqLCBKU0M6OkpTVmFsdWUpOwotSlNDOjpKU1Zh
bHVlIGpzVGVzdE9iakhhc2goSlNDOjpFeGVjU3RhdGUqLCBKU0M6OkpTVmFsdWUsIGNvbnN0IEpT
Qzo6SWRlbnRpZmllciYpOwotSlNDOjpKU1ZhbHVlIGpzVGVzdE9iakNvbnN0cnVjdG9yKEpTQzo6
RXhlY1N0YXRlKiwgSlNDOjpKU1ZhbHVlLCBjb25zdCBKU0M6OklkZW50aWZpZXImKTsKK0pTQzo6
SlNWYWx1ZSBqc1Rlc3RPYmpIYXNoKEpTQzo6RXhlY1N0YXRlKiwgSlNDOjpKU1ZhbHVlLCBKU0M6
OlByb3BlcnR5TmFtZSk7CitKU0M6OkpTVmFsdWUganNUZXN0T2JqQ29uc3RydWN0b3IoSlNDOjpF
eGVjU3RhdGUqLCBKU0M6OkpTVmFsdWUsIEpTQzo6UHJvcGVydHlOYW1lKTsKIC8vIENvbnN0YW50
cwogCiAjaWYgRU5BQkxFKENvbmRpdGlvbjEpCi1KU0M6OkpTVmFsdWUganNUZXN0T2JqQ09ORElU
SU9OQUxfQ09OU1QoSlNDOjpFeGVjU3RhdGUqLCBKU0M6OkpTVmFsdWUsIGNvbnN0IEpTQzo6SWRl
bnRpZmllciYpOworSlNDOjpKU1ZhbHVlIGpzVGVzdE9iakNPTkRJVElPTkFMX0NPTlNUKEpTQzo6
RXhlY1N0YXRlKiwgSlNDOjpKU1ZhbHVlLCBKU0M6OlByb3BlcnR5TmFtZSk7CiAjZW5kaWYKLUpT
Qzo6SlNWYWx1ZSBqc1Rlc3RPYmpDT05TVF9WQUxVRV8wKEpTQzo6RXhlY1N0YXRlKiwgSlNDOjpK
U1ZhbHVlLCBjb25zdCBKU0M6OklkZW50aWZpZXImKTsKLUpTQzo6SlNWYWx1ZSBqc1Rlc3RPYmpD
T05TVF9WQUxVRV8xKEpTQzo6RXhlY1N0YXRlKiwgSlNDOjpKU1ZhbHVlLCBjb25zdCBKU0M6Oklk
ZW50aWZpZXImKTsKLUpTQzo6SlNWYWx1ZSBqc1Rlc3RPYmpDT05TVF9WQUxVRV8yKEpTQzo6RXhl
Y1N0YXRlKiwgSlNDOjpKU1ZhbHVlLCBjb25zdCBKU0M6OklkZW50aWZpZXImKTsKLUpTQzo6SlNW
YWx1ZSBqc1Rlc3RPYmpDT05TVF9WQUxVRV80KEpTQzo6RXhlY1N0YXRlKiwgSlNDOjpKU1ZhbHVl
LCBjb25zdCBKU0M6OklkZW50aWZpZXImKTsKLUpTQzo6SlNWYWx1ZSBqc1Rlc3RPYmpDT05TVF9W
QUxVRV84KEpTQzo6RXhlY1N0YXRlKiwgSlNDOjpKU1ZhbHVlLCBjb25zdCBKU0M6OklkZW50aWZp
ZXImKTsKLUpTQzo6SlNWYWx1ZSBqc1Rlc3RPYmpDT05TVF9WQUxVRV85KEpTQzo6RXhlY1N0YXRl
KiwgSlNDOjpKU1ZhbHVlLCBjb25zdCBKU0M6OklkZW50aWZpZXImKTsKLUpTQzo6SlNWYWx1ZSBq
c1Rlc3RPYmpDT05TVF9WQUxVRV8xMChKU0M6OkV4ZWNTdGF0ZSosIEpTQzo6SlNWYWx1ZSwgY29u
c3QgSlNDOjpJZGVudGlmaWVyJik7Ci1KU0M6OkpTVmFsdWUganNUZXN0T2JqQ09OU1RfVkFMVUVf
MTEoSlNDOjpFeGVjU3RhdGUqLCBKU0M6OkpTVmFsdWUsIGNvbnN0IEpTQzo6SWRlbnRpZmllciYp
OwotSlNDOjpKU1ZhbHVlIGpzVGVzdE9iakNPTlNUX1ZBTFVFXzEyKEpTQzo6RXhlY1N0YXRlKiwg
SlNDOjpKU1ZhbHVlLCBjb25zdCBKU0M6OklkZW50aWZpZXImKTsKLUpTQzo6SlNWYWx1ZSBqc1Rl
c3RPYmpDT05TVF9WQUxVRV8xMyhKU0M6OkV4ZWNTdGF0ZSosIEpTQzo6SlNWYWx1ZSwgY29uc3Qg
SlNDOjpJZGVudGlmaWVyJik7Ci1KU0M6OkpTVmFsdWUganNUZXN0T2JqQ09OU1RfVkFMVUVfMTQo
SlNDOjpFeGVjU3RhdGUqLCBKU0M6OkpTVmFsdWUsIGNvbnN0IEpTQzo6SWRlbnRpZmllciYpOwot
SlNDOjpKU1ZhbHVlIGpzVGVzdE9iakNPTlNUX0pBVkFTQ1JJUFQoSlNDOjpFeGVjU3RhdGUqLCBK
U0M6OkpTVmFsdWUsIGNvbnN0IEpTQzo6SWRlbnRpZmllciYpOworSlNDOjpKU1ZhbHVlIGpzVGVz
dE9iakNPTlNUX1ZBTFVFXzAoSlNDOjpFeGVjU3RhdGUqLCBKU0M6OkpTVmFsdWUsIEpTQzo6UHJv
cGVydHlOYW1lKTsKK0pTQzo6SlNWYWx1ZSBqc1Rlc3RPYmpDT05TVF9WQUxVRV8xKEpTQzo6RXhl
Y1N0YXRlKiwgSlNDOjpKU1ZhbHVlLCBKU0M6OlByb3BlcnR5TmFtZSk7CitKU0M6OkpTVmFsdWUg
anNUZXN0T2JqQ09OU1RfVkFMVUVfMihKU0M6OkV4ZWNTdGF0ZSosIEpTQzo6SlNWYWx1ZSwgSlND
OjpQcm9wZXJ0eU5hbWUpOworSlNDOjpKU1ZhbHVlIGpzVGVzdE9iakNPTlNUX1ZBTFVFXzQoSlND
OjpFeGVjU3RhdGUqLCBKU0M6OkpTVmFsdWUsIEpTQzo6UHJvcGVydHlOYW1lKTsKK0pTQzo6SlNW
YWx1ZSBqc1Rlc3RPYmpDT05TVF9WQUxVRV84KEpTQzo6RXhlY1N0YXRlKiwgSlNDOjpKU1ZhbHVl
LCBKU0M6OlByb3BlcnR5TmFtZSk7CitKU0M6OkpTVmFsdWUganNUZXN0T2JqQ09OU1RfVkFMVUVf
OShKU0M6OkV4ZWNTdGF0ZSosIEpTQzo6SlNWYWx1ZSwgSlNDOjpQcm9wZXJ0eU5hbWUpOworSlND
OjpKU1ZhbHVlIGpzVGVzdE9iakNPTlNUX1ZBTFVFXzEwKEpTQzo6RXhlY1N0YXRlKiwgSlNDOjpK
U1ZhbHVlLCBKU0M6OlByb3BlcnR5TmFtZSk7CitKU0M6OkpTVmFsdWUganNUZXN0T2JqQ09OU1Rf
VkFMVUVfMTEoSlNDOjpFeGVjU3RhdGUqLCBKU0M6OkpTVmFsdWUsIEpTQzo6UHJvcGVydHlOYW1l
KTsKK0pTQzo6SlNWYWx1ZSBqc1Rlc3RPYmpDT05TVF9WQUxVRV8xMihKU0M6OkV4ZWNTdGF0ZSos
IEpTQzo6SlNWYWx1ZSwgSlNDOjpQcm9wZXJ0eU5hbWUpOworSlNDOjpKU1ZhbHVlIGpzVGVzdE9i
akNPTlNUX1ZBTFVFXzEzKEpTQzo6RXhlY1N0YXRlKiwgSlNDOjpKU1ZhbHVlLCBKU0M6OlByb3Bl
cnR5TmFtZSk7CitKU0M6OkpTVmFsdWUganNUZXN0T2JqQ09OU1RfVkFMVUVfMTQoSlNDOjpFeGVj
U3RhdGUqLCBKU0M6OkpTVmFsdWUsIEpTQzo6UHJvcGVydHlOYW1lKTsKK0pTQzo6SlNWYWx1ZSBq
c1Rlc3RPYmpDT05TVF9KQVZBU0NSSVBUKEpTQzo6RXhlY1N0YXRlKiwgSlNDOjpKU1ZhbHVlLCBK
U0M6OlByb3BlcnR5TmFtZSk7CiAKIH0gLy8gbmFtZXNwYWNlIFdlYkNvcmUKIApJbmRleDogU291
cmNlL1dlYkNvcmUvYmluZGluZ3Mvc2NyaXB0cy90ZXN0L0pTL0pTVGVzdFNlcmlhbGl6ZWRTY3Jp
cHRWYWx1ZUludGVyZmFjZS5jcHAKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL1dlYkNvcmUvYmluZGlu
Z3Mvc2NyaXB0cy90ZXN0L0pTL0pTVGVzdFNlcmlhbGl6ZWRTY3JpcHRWYWx1ZUludGVyZmFjZS5j
cHAJKHJldmlzaW9uIDExNjY2NykKKysrIFNvdXJjZS9XZWJDb3JlL2JpbmRpbmdzL3NjcmlwdHMv
dGVzdC9KUy9KU1Rlc3RTZXJpYWxpemVkU2NyaXB0VmFsdWVJbnRlcmZhY2UuY3BwCSh3b3JraW5n
IGNvcHkpCkBAIC03NiwxMiArNzYsMTIgQEAgdm9pZCBKU1Rlc3RTZXJpYWxpemVkU2NyaXB0VmFs
dWVJbnRlcmZhYwogICAgIHB1dERpcmVjdChleGVjLT5nbG9iYWxEYXRhKCksIGV4ZWMtPnByb3Bl
cnR5TmFtZXMoKS5sZW5ndGgsIGpzTnVtYmVyKDMpLCBSZWFkT25seSB8IERvbnREZWxldGUgfCBE
b250RW51bSk7CiB9CiAKLWJvb2wgSlNUZXN0U2VyaWFsaXplZFNjcmlwdFZhbHVlSW50ZXJmYWNl
Q29uc3RydWN0b3I6OmdldE93blByb3BlcnR5U2xvdChKU0NlbGwqIGNlbGwsIEV4ZWNTdGF0ZSog
ZXhlYywgY29uc3QgSWRlbnRpZmllciYgcHJvcGVydHlOYW1lLCBQcm9wZXJ0eVNsb3QmIHNsb3Qp
Citib29sIEpTVGVzdFNlcmlhbGl6ZWRTY3JpcHRWYWx1ZUludGVyZmFjZUNvbnN0cnVjdG9yOjpn
ZXRPd25Qcm9wZXJ0eVNsb3QoSlNDZWxsKiBjZWxsLCBFeGVjU3RhdGUqIGV4ZWMsIFByb3BlcnR5
TmFtZSBwcm9wZXJ0eU5hbWUsIFByb3BlcnR5U2xvdCYgc2xvdCkKIHsKICAgICByZXR1cm4gZ2V0
U3RhdGljVmFsdWVTbG90PEpTVGVzdFNlcmlhbGl6ZWRTY3JpcHRWYWx1ZUludGVyZmFjZUNvbnN0
cnVjdG9yLCBKU0RPTVdyYXBwZXI+KGV4ZWMsICZKU1Rlc3RTZXJpYWxpemVkU2NyaXB0VmFsdWVJ
bnRlcmZhY2VDb25zdHJ1Y3RvclRhYmxlLCBqc0Nhc3Q8SlNUZXN0U2VyaWFsaXplZFNjcmlwdFZh
bHVlSW50ZXJmYWNlQ29uc3RydWN0b3IqPihjZWxsKSwgcHJvcGVydHlOYW1lLCBzbG90KTsKIH0K
IAotYm9vbCBKU1Rlc3RTZXJpYWxpemVkU2NyaXB0VmFsdWVJbnRlcmZhY2VDb25zdHJ1Y3Rvcjo6
Z2V0T3duUHJvcGVydHlEZXNjcmlwdG9yKEpTT2JqZWN0KiBvYmplY3QsIEV4ZWNTdGF0ZSogZXhl
YywgY29uc3QgSWRlbnRpZmllciYgcHJvcGVydHlOYW1lLCBQcm9wZXJ0eURlc2NyaXB0b3ImIGRl
c2NyaXB0b3IpCitib29sIEpTVGVzdFNlcmlhbGl6ZWRTY3JpcHRWYWx1ZUludGVyZmFjZUNvbnN0
cnVjdG9yOjpnZXRPd25Qcm9wZXJ0eURlc2NyaXB0b3IoSlNPYmplY3QqIG9iamVjdCwgRXhlY1N0
YXRlKiBleGVjLCBQcm9wZXJ0eU5hbWUgcHJvcGVydHlOYW1lLCBQcm9wZXJ0eURlc2NyaXB0b3Im
IGRlc2NyaXB0b3IpCiB7CiAgICAgcmV0dXJuIGdldFN0YXRpY1ZhbHVlRGVzY3JpcHRvcjxKU1Rl
c3RTZXJpYWxpemVkU2NyaXB0VmFsdWVJbnRlcmZhY2VDb25zdHJ1Y3RvciwgSlNET01XcmFwcGVy
PihleGVjLCAmSlNUZXN0U2VyaWFsaXplZFNjcmlwdFZhbHVlSW50ZXJmYWNlQ29uc3RydWN0b3JU
YWJsZSwganNDYXN0PEpTVGVzdFNlcmlhbGl6ZWRTY3JpcHRWYWx1ZUludGVyZmFjZUNvbnN0cnVj
dG9yKj4ob2JqZWN0KSwgcHJvcGVydHlOYW1lLCBkZXNjcmlwdG9yKTsKIH0KQEAgLTEyNywxMyAr
MTI3LDEzIEBAIEpTT2JqZWN0KiBKU1Rlc3RTZXJpYWxpemVkU2NyaXB0VmFsdWVJbnQKICAgICBy
ZXR1cm4gZ2V0RE9NUHJvdG90eXBlPEpTVGVzdFNlcmlhbGl6ZWRTY3JpcHRWYWx1ZUludGVyZmFj
ZT4oZXhlYywgZ2xvYmFsT2JqZWN0KTsKIH0KIAotYm9vbCBKU1Rlc3RTZXJpYWxpemVkU2NyaXB0
VmFsdWVJbnRlcmZhY2VQcm90b3R5cGU6OmdldE93blByb3BlcnR5U2xvdChKU0NlbGwqIGNlbGws
IEV4ZWNTdGF0ZSogZXhlYywgY29uc3QgSWRlbnRpZmllciYgcHJvcGVydHlOYW1lLCBQcm9wZXJ0
eVNsb3QmIHNsb3QpCitib29sIEpTVGVzdFNlcmlhbGl6ZWRTY3JpcHRWYWx1ZUludGVyZmFjZVBy
b3RvdHlwZTo6Z2V0T3duUHJvcGVydHlTbG90KEpTQ2VsbCogY2VsbCwgRXhlY1N0YXRlKiBleGVj
LCBQcm9wZXJ0eU5hbWUgcHJvcGVydHlOYW1lLCBQcm9wZXJ0eVNsb3QmIHNsb3QpCiB7CiAgICAg
SlNUZXN0U2VyaWFsaXplZFNjcmlwdFZhbHVlSW50ZXJmYWNlUHJvdG90eXBlKiB0aGlzT2JqZWN0
ID0ganNDYXN0PEpTVGVzdFNlcmlhbGl6ZWRTY3JpcHRWYWx1ZUludGVyZmFjZVByb3RvdHlwZSo+
KGNlbGwpOwogICAgIHJldHVybiBnZXRTdGF0aWNGdW5jdGlvblNsb3Q8SlNPYmplY3Q+KGV4ZWMs
ICZKU1Rlc3RTZXJpYWxpemVkU2NyaXB0VmFsdWVJbnRlcmZhY2VQcm90b3R5cGVUYWJsZSwgdGhp
c09iamVjdCwgcHJvcGVydHlOYW1lLCBzbG90KTsKIH0KIAotYm9vbCBKU1Rlc3RTZXJpYWxpemVk
U2NyaXB0VmFsdWVJbnRlcmZhY2VQcm90b3R5cGU6OmdldE93blByb3BlcnR5RGVzY3JpcHRvcihK
U09iamVjdCogb2JqZWN0LCBFeGVjU3RhdGUqIGV4ZWMsIGNvbnN0IElkZW50aWZpZXImIHByb3Bl
cnR5TmFtZSwgUHJvcGVydHlEZXNjcmlwdG9yJiBkZXNjcmlwdG9yKQorYm9vbCBKU1Rlc3RTZXJp
YWxpemVkU2NyaXB0VmFsdWVJbnRlcmZhY2VQcm90b3R5cGU6OmdldE93blByb3BlcnR5RGVzY3Jp
cHRvcihKU09iamVjdCogb2JqZWN0LCBFeGVjU3RhdGUqIGV4ZWMsIFByb3BlcnR5TmFtZSBwcm9w
ZXJ0eU5hbWUsIFByb3BlcnR5RGVzY3JpcHRvciYgZGVzY3JpcHRvcikKIHsKICAgICBKU1Rlc3RT
ZXJpYWxpemVkU2NyaXB0VmFsdWVJbnRlcmZhY2VQcm90b3R5cGUqIHRoaXNPYmplY3QgPSBqc0Nh
c3Q8SlNUZXN0U2VyaWFsaXplZFNjcmlwdFZhbHVlSW50ZXJmYWNlUHJvdG90eXBlKj4ob2JqZWN0
KTsKICAgICByZXR1cm4gZ2V0U3RhdGljRnVuY3Rpb25EZXNjcmlwdG9yPEpTT2JqZWN0PihleGVj
LCAmSlNUZXN0U2VyaWFsaXplZFNjcmlwdFZhbHVlSW50ZXJmYWNlUHJvdG90eXBlVGFibGUsIHRo
aXNPYmplY3QsIHByb3BlcnR5TmFtZSwgZGVzY3JpcHRvcik7CkBAIC0xNjksMjEgKzE2OSwyMSBA
QCBKU1Rlc3RTZXJpYWxpemVkU2NyaXB0VmFsdWVJbnRlcmZhY2U6On5KCiAgICAgcmVsZWFzZUlt
cGxJZk5vdE51bGwoKTsKIH0KIAotYm9vbCBKU1Rlc3RTZXJpYWxpemVkU2NyaXB0VmFsdWVJbnRl
cmZhY2U6OmdldE93blByb3BlcnR5U2xvdChKU0NlbGwqIGNlbGwsIEV4ZWNTdGF0ZSogZXhlYywg
Y29uc3QgSWRlbnRpZmllciYgcHJvcGVydHlOYW1lLCBQcm9wZXJ0eVNsb3QmIHNsb3QpCitib29s
IEpTVGVzdFNlcmlhbGl6ZWRTY3JpcHRWYWx1ZUludGVyZmFjZTo6Z2V0T3duUHJvcGVydHlTbG90
KEpTQ2VsbCogY2VsbCwgRXhlY1N0YXRlKiBleGVjLCBQcm9wZXJ0eU5hbWUgcHJvcGVydHlOYW1l
LCBQcm9wZXJ0eVNsb3QmIHNsb3QpCiB7CiAgICAgSlNUZXN0U2VyaWFsaXplZFNjcmlwdFZhbHVl
SW50ZXJmYWNlKiB0aGlzT2JqZWN0ID0ganNDYXN0PEpTVGVzdFNlcmlhbGl6ZWRTY3JpcHRWYWx1
ZUludGVyZmFjZSo+KGNlbGwpOwogICAgIEFTU0VSVF9HQ19PQkpFQ1RfSU5IRVJJVFModGhpc09i
amVjdCwgJnNfaW5mbyk7CiAgICAgcmV0dXJuIGdldFN0YXRpY1ZhbHVlU2xvdDxKU1Rlc3RTZXJp
YWxpemVkU2NyaXB0VmFsdWVJbnRlcmZhY2UsIEJhc2U+KGV4ZWMsICZKU1Rlc3RTZXJpYWxpemVk
U2NyaXB0VmFsdWVJbnRlcmZhY2VUYWJsZSwgdGhpc09iamVjdCwgcHJvcGVydHlOYW1lLCBzbG90
KTsKIH0KIAotYm9vbCBKU1Rlc3RTZXJpYWxpemVkU2NyaXB0VmFsdWVJbnRlcmZhY2U6OmdldE93
blByb3BlcnR5RGVzY3JpcHRvcihKU09iamVjdCogb2JqZWN0LCBFeGVjU3RhdGUqIGV4ZWMsIGNv
bnN0IElkZW50aWZpZXImIHByb3BlcnR5TmFtZSwgUHJvcGVydHlEZXNjcmlwdG9yJiBkZXNjcmlw
dG9yKQorYm9vbCBKU1Rlc3RTZXJpYWxpemVkU2NyaXB0VmFsdWVJbnRlcmZhY2U6OmdldE93blBy
b3BlcnR5RGVzY3JpcHRvcihKU09iamVjdCogb2JqZWN0LCBFeGVjU3RhdGUqIGV4ZWMsIFByb3Bl
cnR5TmFtZSBwcm9wZXJ0eU5hbWUsIFByb3BlcnR5RGVzY3JpcHRvciYgZGVzY3JpcHRvcikKIHsK
ICAgICBKU1Rlc3RTZXJpYWxpemVkU2NyaXB0VmFsdWVJbnRlcmZhY2UqIHRoaXNPYmplY3QgPSBq
c0Nhc3Q8SlNUZXN0U2VyaWFsaXplZFNjcmlwdFZhbHVlSW50ZXJmYWNlKj4ob2JqZWN0KTsKICAg
ICBBU1NFUlRfR0NfT0JKRUNUX0lOSEVSSVRTKHRoaXNPYmplY3QsICZzX2luZm8pOwogICAgIHJl
dHVybiBnZXRTdGF0aWNWYWx1ZURlc2NyaXB0b3I8SlNUZXN0U2VyaWFsaXplZFNjcmlwdFZhbHVl
SW50ZXJmYWNlLCBCYXNlPihleGVjLCAmSlNUZXN0U2VyaWFsaXplZFNjcmlwdFZhbHVlSW50ZXJm
YWNlVGFibGUsIHRoaXNPYmplY3QsIHByb3BlcnR5TmFtZSwgZGVzY3JpcHRvcik7CiB9CiAKLUpT
VmFsdWUganNUZXN0U2VyaWFsaXplZFNjcmlwdFZhbHVlSW50ZXJmYWNlVmFsdWUoRXhlY1N0YXRl
KiBleGVjLCBKU1ZhbHVlIHNsb3RCYXNlLCBjb25zdCBJZGVudGlmaWVyJikKK0pTVmFsdWUganNU
ZXN0U2VyaWFsaXplZFNjcmlwdFZhbHVlSW50ZXJmYWNlVmFsdWUoRXhlY1N0YXRlKiBleGVjLCBK
U1ZhbHVlIHNsb3RCYXNlLCBQcm9wZXJ0eU5hbWUpCiB7CiAgICAgSlNUZXN0U2VyaWFsaXplZFNj
cmlwdFZhbHVlSW50ZXJmYWNlKiBjYXN0ZWRUaGlzID0ganNDYXN0PEpTVGVzdFNlcmlhbGl6ZWRT
Y3JpcHRWYWx1ZUludGVyZmFjZSo+KGFzT2JqZWN0KHNsb3RCYXNlKSk7CiAgICAgVU5VU0VEX1BB
UkFNKGV4ZWMpOwpAQCAtMTkzLDcgKzE5Myw3IEBAIEpTVmFsdWUganNUZXN0U2VyaWFsaXplZFNj
cmlwdFZhbHVlSW50ZXIKIH0KIAogCi1KU1ZhbHVlIGpzVGVzdFNlcmlhbGl6ZWRTY3JpcHRWYWx1
ZUludGVyZmFjZVJlYWRvbmx5VmFsdWUoRXhlY1N0YXRlKiBleGVjLCBKU1ZhbHVlIHNsb3RCYXNl
LCBjb25zdCBJZGVudGlmaWVyJikKK0pTVmFsdWUganNUZXN0U2VyaWFsaXplZFNjcmlwdFZhbHVl
SW50ZXJmYWNlUmVhZG9ubHlWYWx1ZShFeGVjU3RhdGUqIGV4ZWMsIEpTVmFsdWUgc2xvdEJhc2Us
IFByb3BlcnR5TmFtZSkKIHsKICAgICBKU1Rlc3RTZXJpYWxpemVkU2NyaXB0VmFsdWVJbnRlcmZh
Y2UqIGNhc3RlZFRoaXMgPSBqc0Nhc3Q8SlNUZXN0U2VyaWFsaXplZFNjcmlwdFZhbHVlSW50ZXJm
YWNlKj4oYXNPYmplY3Qoc2xvdEJhc2UpKTsKICAgICBVTlVTRURfUEFSQU0oZXhlYyk7CkBAIC0y
MDMsNyArMjAzLDcgQEAgSlNWYWx1ZSBqc1Rlc3RTZXJpYWxpemVkU2NyaXB0VmFsdWVJbnRlcgog
fQogCiAKLUpTVmFsdWUganNUZXN0U2VyaWFsaXplZFNjcmlwdFZhbHVlSW50ZXJmYWNlQ2FjaGVk
VmFsdWUoRXhlY1N0YXRlKiBleGVjLCBKU1ZhbHVlIHNsb3RCYXNlLCBjb25zdCBJZGVudGlmaWVy
JikKK0pTVmFsdWUganNUZXN0U2VyaWFsaXplZFNjcmlwdFZhbHVlSW50ZXJmYWNlQ2FjaGVkVmFs
dWUoRXhlY1N0YXRlKiBleGVjLCBKU1ZhbHVlIHNsb3RCYXNlLCBQcm9wZXJ0eU5hbWUpCiB7CiAg
ICAgSlNUZXN0U2VyaWFsaXplZFNjcmlwdFZhbHVlSW50ZXJmYWNlKiBjYXN0ZWRUaGlzID0ganND
YXN0PEpTVGVzdFNlcmlhbGl6ZWRTY3JpcHRWYWx1ZUludGVyZmFjZSo+KGFzT2JqZWN0KHNsb3RC
YXNlKSk7CiAgICAgVU5VU0VEX1BBUkFNKGV4ZWMpOwpAQCAtMjE2LDcgKzIxNiw3IEBAIEpTVmFs
dWUganNUZXN0U2VyaWFsaXplZFNjcmlwdFZhbHVlSW50ZXIKIH0KIAogCi1KU1ZhbHVlIGpzVGVz
dFNlcmlhbGl6ZWRTY3JpcHRWYWx1ZUludGVyZmFjZVBvcnRzKEV4ZWNTdGF0ZSogZXhlYywgSlNW
YWx1ZSBzbG90QmFzZSwgY29uc3QgSWRlbnRpZmllciYpCitKU1ZhbHVlIGpzVGVzdFNlcmlhbGl6
ZWRTY3JpcHRWYWx1ZUludGVyZmFjZVBvcnRzKEV4ZWNTdGF0ZSogZXhlYywgSlNWYWx1ZSBzbG90
QmFzZSwgUHJvcGVydHlOYW1lKQogewogICAgIEpTVGVzdFNlcmlhbGl6ZWRTY3JpcHRWYWx1ZUlu
dGVyZmFjZSogY2FzdGVkVGhpcyA9IGpzQ2FzdDxKU1Rlc3RTZXJpYWxpemVkU2NyaXB0VmFsdWVJ
bnRlcmZhY2UqPihhc09iamVjdChzbG90QmFzZSkpOwogICAgIFVOVVNFRF9QQVJBTShleGVjKTsK
QEAgLTIyNiw3ICsyMjYsNyBAQCBKU1ZhbHVlIGpzVGVzdFNlcmlhbGl6ZWRTY3JpcHRWYWx1ZUlu
dGVyCiB9CiAKIAotSlNWYWx1ZSBqc1Rlc3RTZXJpYWxpemVkU2NyaXB0VmFsdWVJbnRlcmZhY2VD
YWNoZWRSZWFkb25seVZhbHVlKEV4ZWNTdGF0ZSogZXhlYywgSlNWYWx1ZSBzbG90QmFzZSwgY29u
c3QgSWRlbnRpZmllciYpCitKU1ZhbHVlIGpzVGVzdFNlcmlhbGl6ZWRTY3JpcHRWYWx1ZUludGVy
ZmFjZUNhY2hlZFJlYWRvbmx5VmFsdWUoRXhlY1N0YXRlKiBleGVjLCBKU1ZhbHVlIHNsb3RCYXNl
LCBQcm9wZXJ0eU5hbWUpCiB7CiAgICAgSlNUZXN0U2VyaWFsaXplZFNjcmlwdFZhbHVlSW50ZXJm
YWNlKiBjYXN0ZWRUaGlzID0ganNDYXN0PEpTVGVzdFNlcmlhbGl6ZWRTY3JpcHRWYWx1ZUludGVy
ZmFjZSo+KGFzT2JqZWN0KHNsb3RCYXNlKSk7CiAgICAgVU5VU0VEX1BBUkFNKGV4ZWMpOwpAQCAt
MjM5LDEzICsyMzksMTMgQEAgSlNWYWx1ZSBqc1Rlc3RTZXJpYWxpemVkU2NyaXB0VmFsdWVJbnRl
cgogfQogCiAKLUpTVmFsdWUganNUZXN0U2VyaWFsaXplZFNjcmlwdFZhbHVlSW50ZXJmYWNlQ29u
c3RydWN0b3IoRXhlY1N0YXRlKiBleGVjLCBKU1ZhbHVlIHNsb3RCYXNlLCBjb25zdCBJZGVudGlm
aWVyJikKK0pTVmFsdWUganNUZXN0U2VyaWFsaXplZFNjcmlwdFZhbHVlSW50ZXJmYWNlQ29uc3Ry
dWN0b3IoRXhlY1N0YXRlKiBleGVjLCBKU1ZhbHVlIHNsb3RCYXNlLCBQcm9wZXJ0eU5hbWUpCiB7
CiAgICAgSlNUZXN0U2VyaWFsaXplZFNjcmlwdFZhbHVlSW50ZXJmYWNlKiBkb21PYmplY3QgPSBq
c0Nhc3Q8SlNUZXN0U2VyaWFsaXplZFNjcmlwdFZhbHVlSW50ZXJmYWNlKj4oYXNPYmplY3Qoc2xv
dEJhc2UpKTsKICAgICByZXR1cm4gSlNUZXN0U2VyaWFsaXplZFNjcmlwdFZhbHVlSW50ZXJmYWNl
OjpnZXRDb25zdHJ1Y3RvcihleGVjLCBkb21PYmplY3QtPmdsb2JhbE9iamVjdCgpKTsKIH0KIAot
dm9pZCBKU1Rlc3RTZXJpYWxpemVkU2NyaXB0VmFsdWVJbnRlcmZhY2U6OnB1dChKU0NlbGwqIGNl
bGwsIEV4ZWNTdGF0ZSogZXhlYywgY29uc3QgSWRlbnRpZmllciYgcHJvcGVydHlOYW1lLCBKU1Zh
bHVlIHZhbHVlLCBQdXRQcm9wZXJ0eVNsb3QmIHNsb3QpCit2b2lkIEpTVGVzdFNlcmlhbGl6ZWRT
Y3JpcHRWYWx1ZUludGVyZmFjZTo6cHV0KEpTQ2VsbCogY2VsbCwgRXhlY1N0YXRlKiBleGVjLCBQ
cm9wZXJ0eU5hbWUgcHJvcGVydHlOYW1lLCBKU1ZhbHVlIHZhbHVlLCBQdXRQcm9wZXJ0eVNsb3Qm
IHNsb3QpCiB7CiAgICAgSlNUZXN0U2VyaWFsaXplZFNjcmlwdFZhbHVlSW50ZXJmYWNlKiB0aGlz
T2JqZWN0ID0ganNDYXN0PEpTVGVzdFNlcmlhbGl6ZWRTY3JpcHRWYWx1ZUludGVyZmFjZSo+KGNl
bGwpOwogICAgIEFTU0VSVF9HQ19PQkpFQ1RfSU5IRVJJVFModGhpc09iamVjdCwgJnNfaW5mbyk7
CkluZGV4OiBTb3VyY2UvV2ViQ29yZS9iaW5kaW5ncy9zY3JpcHRzL3Rlc3QvSlMvSlNUZXN0U2Vy
aWFsaXplZFNjcmlwdFZhbHVlSW50ZXJmYWNlLmgKPT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL1dlYkNv
cmUvYmluZGluZ3Mvc2NyaXB0cy90ZXN0L0pTL0pTVGVzdFNlcmlhbGl6ZWRTY3JpcHRWYWx1ZUlu
dGVyZmFjZS5oCShyZXZpc2lvbiAxMTY2NjcpCisrKyBTb3VyY2UvV2ViQ29yZS9iaW5kaW5ncy9z
Y3JpcHRzL3Rlc3QvSlMvSlNUZXN0U2VyaWFsaXplZFNjcmlwdFZhbHVlSW50ZXJmYWNlLmgJKHdv
cmtpbmcgY29weSkKQEAgLTQyLDkgKzQyLDkgQEAgcHVibGljOgogICAgIH0KIAogICAgIHN0YXRp
YyBKU0M6OkpTT2JqZWN0KiBjcmVhdGVQcm90b3R5cGUoSlNDOjpFeGVjU3RhdGUqLCBKU0M6OkpT
R2xvYmFsT2JqZWN0Kik7Ci0gICAgc3RhdGljIGJvb2wgZ2V0T3duUHJvcGVydHlTbG90KEpTQzo6
SlNDZWxsKiwgSlNDOjpFeGVjU3RhdGUqLCBjb25zdCBKU0M6OklkZW50aWZpZXImIHByb3BlcnR5
TmFtZSwgSlNDOjpQcm9wZXJ0eVNsb3QmKTsKLSAgICBzdGF0aWMgYm9vbCBnZXRPd25Qcm9wZXJ0
eURlc2NyaXB0b3IoSlNDOjpKU09iamVjdCosIEpTQzo6RXhlY1N0YXRlKiwgY29uc3QgSlNDOjpJ
ZGVudGlmaWVyJiBwcm9wZXJ0eU5hbWUsIEpTQzo6UHJvcGVydHlEZXNjcmlwdG9yJik7Ci0gICAg
c3RhdGljIHZvaWQgcHV0KEpTQzo6SlNDZWxsKiwgSlNDOjpFeGVjU3RhdGUqLCBjb25zdCBKU0M6
OklkZW50aWZpZXImIHByb3BlcnR5TmFtZSwgSlNDOjpKU1ZhbHVlLCBKU0M6OlB1dFByb3BlcnR5
U2xvdCYpOworICAgIHN0YXRpYyBib29sIGdldE93blByb3BlcnR5U2xvdChKU0M6OkpTQ2VsbCos
IEpTQzo6RXhlY1N0YXRlKiwgSlNDOjpQcm9wZXJ0eU5hbWUsIEpTQzo6UHJvcGVydHlTbG90Jik7
CisgICAgc3RhdGljIGJvb2wgZ2V0T3duUHJvcGVydHlEZXNjcmlwdG9yKEpTQzo6SlNPYmplY3Qq
LCBKU0M6OkV4ZWNTdGF0ZSosIEpTQzo6UHJvcGVydHlOYW1lLCBKU0M6OlByb3BlcnR5RGVzY3Jp
cHRvciYpOworICAgIHN0YXRpYyB2b2lkIHB1dChKU0M6OkpTQ2VsbCosIEpTQzo6RXhlY1N0YXRl
KiwgSlNDOjpQcm9wZXJ0eU5hbWUsIEpTQzo6SlNWYWx1ZSwgSlNDOjpQdXRQcm9wZXJ0eVNsb3Qm
KTsKICAgICBzdGF0aWMgdm9pZCBkZXN0cm95KEpTQzo6SlNDZWxsKik7CiAgICAgfkpTVGVzdFNl
cmlhbGl6ZWRTY3JpcHRWYWx1ZUludGVyZmFjZSgpOwogICAgIHN0YXRpYyBjb25zdCBKU0M6OkNs
YXNzSW5mbyBzX2luZm87CkBAIC0xMDMsOCArMTAzLDggQEAgcHVibGljOgogICAgIH0KIAogICAg
IHN0YXRpYyBjb25zdCBKU0M6OkNsYXNzSW5mbyBzX2luZm87Ci0gICAgc3RhdGljIGJvb2wgZ2V0
T3duUHJvcGVydHlTbG90KEpTQzo6SlNDZWxsKiwgSlNDOjpFeGVjU3RhdGUqLCBjb25zdCBKU0M6
OklkZW50aWZpZXImLCBKU0M6OlByb3BlcnR5U2xvdCYpOwotICAgIHN0YXRpYyBib29sIGdldE93
blByb3BlcnR5RGVzY3JpcHRvcihKU0M6OkpTT2JqZWN0KiwgSlNDOjpFeGVjU3RhdGUqLCBjb25z
dCBKU0M6OklkZW50aWZpZXImLCBKU0M6OlByb3BlcnR5RGVzY3JpcHRvciYpOworICAgIHN0YXRp
YyBib29sIGdldE93blByb3BlcnR5U2xvdChKU0M6OkpTQ2VsbCosIEpTQzo6RXhlY1N0YXRlKiwg
SlNDOjpQcm9wZXJ0eU5hbWUsIEpTQzo6UHJvcGVydHlTbG90Jik7CisgICAgc3RhdGljIGJvb2wg
Z2V0T3duUHJvcGVydHlEZXNjcmlwdG9yKEpTQzo6SlNPYmplY3QqLCBKU0M6OkV4ZWNTdGF0ZSos
IEpTQzo6UHJvcGVydHlOYW1lLCBKU0M6OlByb3BlcnR5RGVzY3JpcHRvciYpOwogICAgIHN0YXRp
YyBKU0M6OlN0cnVjdHVyZSogY3JlYXRlU3RydWN0dXJlKEpTQzo6SlNHbG9iYWxEYXRhJiBnbG9i
YWxEYXRhLCBKU0M6OkpTR2xvYmFsT2JqZWN0KiBnbG9iYWxPYmplY3QsIEpTQzo6SlNWYWx1ZSBw
cm90b3R5cGUpCiAgICAgewogICAgICAgICByZXR1cm4gSlNDOjpTdHJ1Y3R1cmU6OmNyZWF0ZShn
bG9iYWxEYXRhLCBnbG9iYWxPYmplY3QsIHByb3RvdHlwZSwgSlNDOjpUeXBlSW5mbyhKU0M6Ok9i
amVjdFR5cGUsIFN0cnVjdHVyZUZsYWdzKSwgJnNfaW5mbyk7CkBAIC0xMzAsOCArMTMwLDggQEAg
cHVibGljOgogICAgICAgICByZXR1cm4gcHRyOwogICAgIH0KIAotICAgIHN0YXRpYyBib29sIGdl
dE93blByb3BlcnR5U2xvdChKU0M6OkpTQ2VsbCosIEpTQzo6RXhlY1N0YXRlKiwgY29uc3QgSlND
OjpJZGVudGlmaWVyJiwgSlNDOjpQcm9wZXJ0eVNsb3QmKTsKLSAgICBzdGF0aWMgYm9vbCBnZXRP
d25Qcm9wZXJ0eURlc2NyaXB0b3IoSlNDOjpKU09iamVjdCosIEpTQzo6RXhlY1N0YXRlKiwgY29u
c3QgSlNDOjpJZGVudGlmaWVyJiwgSlNDOjpQcm9wZXJ0eURlc2NyaXB0b3ImKTsKKyAgICBzdGF0
aWMgYm9vbCBnZXRPd25Qcm9wZXJ0eVNsb3QoSlNDOjpKU0NlbGwqLCBKU0M6OkV4ZWNTdGF0ZSos
IEpTQzo6UHJvcGVydHlOYW1lLCBKU0M6OlByb3BlcnR5U2xvdCYpOworICAgIHN0YXRpYyBib29s
IGdldE93blByb3BlcnR5RGVzY3JpcHRvcihKU0M6OkpTT2JqZWN0KiwgSlNDOjpFeGVjU3RhdGUq
LCBKU0M6OlByb3BlcnR5TmFtZSwgSlNDOjpQcm9wZXJ0eURlc2NyaXB0b3ImKTsKICAgICBzdGF0
aWMgY29uc3QgSlNDOjpDbGFzc0luZm8gc19pbmZvOwogICAgIHN0YXRpYyBKU0M6OlN0cnVjdHVy
ZSogY3JlYXRlU3RydWN0dXJlKEpTQzo6SlNHbG9iYWxEYXRhJiBnbG9iYWxEYXRhLCBKU0M6OkpT
R2xvYmFsT2JqZWN0KiBnbG9iYWxPYmplY3QsIEpTQzo6SlNWYWx1ZSBwcm90b3R5cGUpCiAgICAg
ewpAQCAtMTQ5LDE0ICsxNDksMTQgQEAgSlNDOjpFbmNvZGVkSlNWYWx1ZSBKU0NfSE9TVF9DQUxM
IGpzVGVzdAogSlNDOjpFbmNvZGVkSlNWYWx1ZSBKU0NfSE9TVF9DQUxMIGpzVGVzdFNlcmlhbGl6
ZWRTY3JpcHRWYWx1ZUludGVyZmFjZVByb3RvdHlwZUZ1bmN0aW9uTXVsdGlUcmFuc2Zlckxpc3Qo
SlNDOjpFeGVjU3RhdGUqKTsKIC8vIEF0dHJpYnV0ZXMKIAotSlNDOjpKU1ZhbHVlIGpzVGVzdFNl
cmlhbGl6ZWRTY3JpcHRWYWx1ZUludGVyZmFjZVZhbHVlKEpTQzo6RXhlY1N0YXRlKiwgSlNDOjpK
U1ZhbHVlLCBjb25zdCBKU0M6OklkZW50aWZpZXImKTsKK0pTQzo6SlNWYWx1ZSBqc1Rlc3RTZXJp
YWxpemVkU2NyaXB0VmFsdWVJbnRlcmZhY2VWYWx1ZShKU0M6OkV4ZWNTdGF0ZSosIEpTQzo6SlNW
YWx1ZSwgSlNDOjpQcm9wZXJ0eU5hbWUpOwogdm9pZCBzZXRKU1Rlc3RTZXJpYWxpemVkU2NyaXB0
VmFsdWVJbnRlcmZhY2VWYWx1ZShKU0M6OkV4ZWNTdGF0ZSosIEpTQzo6SlNPYmplY3QqLCBKU0M6
OkpTVmFsdWUpOwotSlNDOjpKU1ZhbHVlIGpzVGVzdFNlcmlhbGl6ZWRTY3JpcHRWYWx1ZUludGVy
ZmFjZVJlYWRvbmx5VmFsdWUoSlNDOjpFeGVjU3RhdGUqLCBKU0M6OkpTVmFsdWUsIGNvbnN0IEpT
Qzo6SWRlbnRpZmllciYpOwotSlNDOjpKU1ZhbHVlIGpzVGVzdFNlcmlhbGl6ZWRTY3JpcHRWYWx1
ZUludGVyZmFjZUNhY2hlZFZhbHVlKEpTQzo6RXhlY1N0YXRlKiwgSlNDOjpKU1ZhbHVlLCBjb25z
dCBKU0M6OklkZW50aWZpZXImKTsKK0pTQzo6SlNWYWx1ZSBqc1Rlc3RTZXJpYWxpemVkU2NyaXB0
VmFsdWVJbnRlcmZhY2VSZWFkb25seVZhbHVlKEpTQzo6RXhlY1N0YXRlKiwgSlNDOjpKU1ZhbHVl
LCBKU0M6OlByb3BlcnR5TmFtZSk7CitKU0M6OkpTVmFsdWUganNUZXN0U2VyaWFsaXplZFNjcmlw
dFZhbHVlSW50ZXJmYWNlQ2FjaGVkVmFsdWUoSlNDOjpFeGVjU3RhdGUqLCBKU0M6OkpTVmFsdWUs
IEpTQzo6UHJvcGVydHlOYW1lKTsKIHZvaWQgc2V0SlNUZXN0U2VyaWFsaXplZFNjcmlwdFZhbHVl
SW50ZXJmYWNlQ2FjaGVkVmFsdWUoSlNDOjpFeGVjU3RhdGUqLCBKU0M6OkpTT2JqZWN0KiwgSlND
OjpKU1ZhbHVlKTsKLUpTQzo6SlNWYWx1ZSBqc1Rlc3RTZXJpYWxpemVkU2NyaXB0VmFsdWVJbnRl
cmZhY2VQb3J0cyhKU0M6OkV4ZWNTdGF0ZSosIEpTQzo6SlNWYWx1ZSwgY29uc3QgSlNDOjpJZGVu
dGlmaWVyJik7Ci1KU0M6OkpTVmFsdWUganNUZXN0U2VyaWFsaXplZFNjcmlwdFZhbHVlSW50ZXJm
YWNlQ2FjaGVkUmVhZG9ubHlWYWx1ZShKU0M6OkV4ZWNTdGF0ZSosIEpTQzo6SlNWYWx1ZSwgY29u
c3QgSlNDOjpJZGVudGlmaWVyJik7Ci1KU0M6OkpTVmFsdWUganNUZXN0U2VyaWFsaXplZFNjcmlw
dFZhbHVlSW50ZXJmYWNlQ29uc3RydWN0b3IoSlNDOjpFeGVjU3RhdGUqLCBKU0M6OkpTVmFsdWUs
IGNvbnN0IEpTQzo6SWRlbnRpZmllciYpOworSlNDOjpKU1ZhbHVlIGpzVGVzdFNlcmlhbGl6ZWRT
Y3JpcHRWYWx1ZUludGVyZmFjZVBvcnRzKEpTQzo6RXhlY1N0YXRlKiwgSlNDOjpKU1ZhbHVlLCBK
U0M6OlByb3BlcnR5TmFtZSk7CitKU0M6OkpTVmFsdWUganNUZXN0U2VyaWFsaXplZFNjcmlwdFZh
bHVlSW50ZXJmYWNlQ2FjaGVkUmVhZG9ubHlWYWx1ZShKU0M6OkV4ZWNTdGF0ZSosIEpTQzo6SlNW
YWx1ZSwgSlNDOjpQcm9wZXJ0eU5hbWUpOworSlNDOjpKU1ZhbHVlIGpzVGVzdFNlcmlhbGl6ZWRT
Y3JpcHRWYWx1ZUludGVyZmFjZUNvbnN0cnVjdG9yKEpTQzo6RXhlY1N0YXRlKiwgSlNDOjpKU1Zh
bHVlLCBKU0M6OlByb3BlcnR5TmFtZSk7CiAKIH0gLy8gbmFtZXNwYWNlIFdlYkNvcmUKIApJbmRl
eDogU291cmNlL1dlYkNvcmUvYnJpZGdlL3J1bnRpbWVfYXJyYXkuY3BwCj09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0t
IFNvdXJjZS9XZWJDb3JlL2JyaWRnZS9ydW50aW1lX2FycmF5LmNwcAkocmV2aXNpb24gMTE2NjY3
KQorKysgU291cmNlL1dlYkNvcmUvYnJpZGdlL3J1bnRpbWVfYXJyYXkuY3BwCSh3b3JraW5nIGNv
cHkpCkBAIC02MCw3ICs2MCw3IEBAIHZvaWQgUnVudGltZUFycmF5OjpkZXN0cm95KEpTQ2VsbCog
Y2VsbCkKICAgICBqc0Nhc3Q8UnVudGltZUFycmF5Kj4oY2VsbCktPlJ1bnRpbWVBcnJheTo6flJ1
bnRpbWVBcnJheSgpOwogfQogCi1KU1ZhbHVlIFJ1bnRpbWVBcnJheTo6bGVuZ3RoR2V0dGVyKEV4
ZWNTdGF0ZSosIEpTVmFsdWUgc2xvdEJhc2UsIGNvbnN0IElkZW50aWZpZXImKQorSlNWYWx1ZSBS
dW50aW1lQXJyYXk6Omxlbmd0aEdldHRlcihFeGVjU3RhdGUqLCBKU1ZhbHVlIHNsb3RCYXNlLCBQ
cm9wZXJ0eU5hbWUpCiB7CiAgICAgUnVudGltZUFycmF5KiB0aGlzT2JqID0gc3RhdGljX2Nhc3Q8
UnVudGltZUFycmF5Kj4oYXNPYmplY3Qoc2xvdEJhc2UpKTsKICAgICByZXR1cm4ganNOdW1iZXIo
dGhpc09iai0+Z2V0TGVuZ3RoKCkpOwpAQCAtODUsNyArODUsNyBAQCB2b2lkIFJ1bnRpbWVBcnJh
eTo6Z2V0T3duUHJvcGVydHlOYW1lcyhKCiAgICAgSlNPYmplY3Q6OmdldE93blByb3BlcnR5TmFt
ZXModGhpc09iamVjdCwgZXhlYywgcHJvcGVydHlOYW1lcywgbW9kZSk7CiB9CiAKLWJvb2wgUnVu
dGltZUFycmF5OjpnZXRPd25Qcm9wZXJ0eVNsb3QoSlNDZWxsKiBjZWxsLCBFeGVjU3RhdGUqIGV4
ZWMsIGNvbnN0IElkZW50aWZpZXImIHByb3BlcnR5TmFtZSwgUHJvcGVydHlTbG90JiBzbG90KQor
Ym9vbCBSdW50aW1lQXJyYXk6OmdldE93blByb3BlcnR5U2xvdChKU0NlbGwqIGNlbGwsIEV4ZWNT
dGF0ZSogZXhlYywgUHJvcGVydHlOYW1lIHByb3BlcnR5TmFtZSwgUHJvcGVydHlTbG90JiBzbG90
KQogewogICAgIFJ1bnRpbWVBcnJheSogdGhpc09iamVjdCA9IGpzQ2FzdDxSdW50aW1lQXJyYXkq
PihjZWxsKTsKICAgICBpZiAocHJvcGVydHlOYW1lID09IGV4ZWMtPnByb3BlcnR5TmFtZXMoKS5s
ZW5ndGgpIHsKQEAgLTkzLDE5ICs5MywxNyBAQCBib29sIFJ1bnRpbWVBcnJheTo6Z2V0T3duUHJv
cGVydHlTbG90KEpTCiAgICAgICAgIHJldHVybiB0cnVlOwogICAgIH0KICAgICAKLSAgICBib29s
IG9rOwotICAgIHVuc2lnbmVkIGluZGV4ID0gcHJvcGVydHlOYW1lLnRvQXJyYXlJbmRleChvayk7
Ci0gICAgaWYgKG9rKSB7Ci0gICAgICAgIGlmIChpbmRleCA8IHRoaXNPYmplY3QtPmdldExlbmd0
aCgpKSB7Ci0gICAgICAgICAgICBzbG90LnNldEN1c3RvbUluZGV4KHRoaXNPYmplY3QsIGluZGV4
LCB0aGlzT2JqZWN0LT5pbmRleEdldHRlcik7Ci0gICAgICAgICAgICByZXR1cm4gdHJ1ZTsKLSAg
ICAgICAgfQorICAgIHVuc2lnbmVkIGluZGV4ID0gcHJvcGVydHlOYW1lLmFzSW5kZXgoKTsKKyAg
ICBpZiAoaW5kZXggPCB0aGlzT2JqZWN0LT5nZXRMZW5ndGgoKSkgeworICAgICAgICBBU1NFUlQo
aW5kZXggIT0gUHJvcGVydHlOYW1lOjpOb3RBbkluZGV4KTsKKyAgICAgICAgc2xvdC5zZXRDdXN0
b21JbmRleCh0aGlzT2JqZWN0LCBpbmRleCwgdGhpc09iamVjdC0+aW5kZXhHZXR0ZXIpOworICAg
ICAgICByZXR1cm4gdHJ1ZTsKICAgICB9CiAgICAgCiAgICAgcmV0dXJuIEpTT2JqZWN0OjpnZXRP
d25Qcm9wZXJ0eVNsb3QodGhpc09iamVjdCwgZXhlYywgcHJvcGVydHlOYW1lLCBzbG90KTsKIH0K
IAotYm9vbCBSdW50aW1lQXJyYXk6OmdldE93blByb3BlcnR5RGVzY3JpcHRvcihKU09iamVjdCog
b2JqZWN0LCBFeGVjU3RhdGUqIGV4ZWMsIGNvbnN0IElkZW50aWZpZXImIHByb3BlcnR5TmFtZSwg
UHJvcGVydHlEZXNjcmlwdG9yJiBkZXNjcmlwdG9yKQorYm9vbCBSdW50aW1lQXJyYXk6OmdldE93
blByb3BlcnR5RGVzY3JpcHRvcihKU09iamVjdCogb2JqZWN0LCBFeGVjU3RhdGUqIGV4ZWMsIFBy
b3BlcnR5TmFtZSBwcm9wZXJ0eU5hbWUsIFByb3BlcnR5RGVzY3JpcHRvciYgZGVzY3JpcHRvcikK
IHsKICAgICBSdW50aW1lQXJyYXkqIHRoaXNPYmplY3QgPSBqc0Nhc3Q8UnVudGltZUFycmF5Kj4o
b2JqZWN0KTsKICAgICBpZiAocHJvcGVydHlOYW1lID09IGV4ZWMtPnByb3BlcnR5TmFtZXMoKS5s
ZW5ndGgpIHsKQEAgLTExNSwxNSArMTEzLDEzIEBAIGJvb2wgUnVudGltZUFycmF5OjpnZXRPd25Q
cm9wZXJ0eURlc2NyaXAKICAgICAgICAgcmV0dXJuIHRydWU7CiAgICAgfQogICAgIAotICAgIGJv
b2wgb2s7Ci0gICAgdW5zaWduZWQgaW5kZXggPSBwcm9wZXJ0eU5hbWUudG9BcnJheUluZGV4KG9r
KTsKLSAgICBpZiAob2spIHsKLSAgICAgICAgaWYgKGluZGV4IDwgdGhpc09iamVjdC0+Z2V0TGVu
Z3RoKCkpIHsKLSAgICAgICAgICAgIFByb3BlcnR5U2xvdCBzbG90OwotICAgICAgICAgICAgc2xv
dC5zZXRDdXN0b21JbmRleCh0aGlzT2JqZWN0LCBpbmRleCwgaW5kZXhHZXR0ZXIpOwotICAgICAg
ICAgICAgZGVzY3JpcHRvci5zZXREZXNjcmlwdG9yKHNsb3QuZ2V0VmFsdWUoZXhlYywgcHJvcGVy
dHlOYW1lKSwgRG9udERlbGV0ZSB8IERvbnRFbnVtKTsKLSAgICAgICAgICAgIHJldHVybiB0cnVl
OwotICAgICAgICB9CisgICAgdW5zaWduZWQgaW5kZXggPSBwcm9wZXJ0eU5hbWUuYXNJbmRleCgp
OworICAgIGlmIChpbmRleCA8IHRoaXNPYmplY3QtPmdldExlbmd0aCgpKSB7CisgICAgICAgIEFT
U0VSVChpbmRleCAhPSBQcm9wZXJ0eU5hbWU6Ok5vdEFuSW5kZXgpOworICAgICAgICBQcm9wZXJ0
eVNsb3Qgc2xvdDsKKyAgICAgICAgc2xvdC5zZXRDdXN0b21JbmRleCh0aGlzT2JqZWN0LCBpbmRl
eCwgaW5kZXhHZXR0ZXIpOworICAgICAgICBkZXNjcmlwdG9yLnNldERlc2NyaXB0b3Ioc2xvdC5n
ZXRWYWx1ZShleGVjLCBwcm9wZXJ0eU5hbWUpLCBEb250RGVsZXRlIHwgRG9udEVudW0pOworICAg
ICAgICByZXR1cm4gdHJ1ZTsKICAgICB9CiAgICAgCiAgICAgcmV0dXJuIEpTT2JqZWN0OjpnZXRP
d25Qcm9wZXJ0eURlc2NyaXB0b3IodGhpc09iamVjdCwgZXhlYywgcHJvcGVydHlOYW1lLCBkZXNj
cmlwdG9yKTsKQEAgLTE0MCw3ICsxMzYsNyBAQCBib29sIFJ1bnRpbWVBcnJheTo6Z2V0T3duUHJv
cGVydHlTbG90QnlJCiAgICAgcmV0dXJuIEpTT2JqZWN0OjpnZXRPd25Qcm9wZXJ0eVNsb3RCeUlu
ZGV4KHRoaXNPYmplY3QsIGV4ZWMsIGluZGV4LCBzbG90KTsKIH0KIAotdm9pZCBSdW50aW1lQXJy
YXk6OnB1dChKU0NlbGwqIGNlbGwsIEV4ZWNTdGF0ZSogZXhlYywgY29uc3QgSWRlbnRpZmllciYg
cHJvcGVydHlOYW1lLCBKU1ZhbHVlIHZhbHVlLCBQdXRQcm9wZXJ0eVNsb3QmIHNsb3QpCit2b2lk
IFJ1bnRpbWVBcnJheTo6cHV0KEpTQ2VsbCogY2VsbCwgRXhlY1N0YXRlKiBleGVjLCBQcm9wZXJ0
eU5hbWUgcHJvcGVydHlOYW1lLCBKU1ZhbHVlIHZhbHVlLCBQdXRQcm9wZXJ0eVNsb3QmIHNsb3Qp
CiB7CiAgICAgUnVudGltZUFycmF5KiB0aGlzT2JqZWN0ID0ganNDYXN0PFJ1bnRpbWVBcnJheSo+
KGNlbGwpOwogICAgIGlmIChwcm9wZXJ0eU5hbWUgPT0gZXhlYy0+cHJvcGVydHlOYW1lcygpLmxl
bmd0aCkgewpAQCAtMTQ4LDkgKzE0NCw4IEBAIHZvaWQgUnVudGltZUFycmF5OjpwdXQoSlNDZWxs
KiBjZWxsLCBFeGUKICAgICAgICAgcmV0dXJuOwogICAgIH0KICAgICAKLSAgICBib29sIG9rOwot
ICAgIHVuc2lnbmVkIGluZGV4ID0gcHJvcGVydHlOYW1lLnRvQXJyYXlJbmRleChvayk7Ci0gICAg
aWYgKG9rKSB7CisgICAgdW5zaWduZWQgaW5kZXggPSBwcm9wZXJ0eU5hbWUuYXNJbmRleCgpOwor
ICAgIGlmIChpbmRleCAhPSBQcm9wZXJ0eU5hbWU6Ok5vdEFuSW5kZXgpIHsKICAgICAgICAgdGhp
c09iamVjdC0+Z2V0Q29uY3JldGVBcnJheSgpLT5zZXRWYWx1ZUF0KGV4ZWMsIGluZGV4LCB2YWx1
ZSk7CiAgICAgICAgIHJldHVybjsKICAgICB9CkBAIC0xNjksNyArMTY0LDcgQEAgdm9pZCBSdW50
aW1lQXJyYXk6OnB1dEJ5SW5kZXgoSlNDZWxsKiBjZQogICAgIHRoaXNPYmplY3QtPmdldENvbmNy
ZXRlQXJyYXkoKS0+c2V0VmFsdWVBdChleGVjLCBpbmRleCwgdmFsdWUpOwogfQogCi1ib29sIFJ1
bnRpbWVBcnJheTo6ZGVsZXRlUHJvcGVydHkoSlNDZWxsKiwgRXhlY1N0YXRlKiwgY29uc3QgSWRl
bnRpZmllciYpCitib29sIFJ1bnRpbWVBcnJheTo6ZGVsZXRlUHJvcGVydHkoSlNDZWxsKiwgRXhl
Y1N0YXRlKiwgUHJvcGVydHlOYW1lKQogewogICAgIHJldHVybiBmYWxzZTsKIH0KSW5kZXg6IFNv
dXJjZS9XZWJDb3JlL2JyaWRnZS9ydW50aW1lX2FycmF5LmgKPT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNl
L1dlYkNvcmUvYnJpZGdlL3J1bnRpbWVfYXJyYXkuaAkocmV2aXNpb24gMTE2NjY3KQorKysgU291
cmNlL1dlYkNvcmUvYnJpZGdlL3J1bnRpbWVfYXJyYXkuaAkod29ya2luZyBjb3B5KQpAQCAtNTEs
MTMgKzUxLDEzIEBAIHB1YmxpYzoKICAgICBzdGF0aWMgdm9pZCBkZXN0cm95KEpTQ2VsbCopOwog
CiAgICAgc3RhdGljIHZvaWQgZ2V0T3duUHJvcGVydHlOYW1lcyhKU09iamVjdCosIEV4ZWNTdGF0
ZSosIFByb3BlcnR5TmFtZUFycmF5JiwgRW51bWVyYXRpb25Nb2RlKTsKLSAgICBzdGF0aWMgYm9v
bCBnZXRPd25Qcm9wZXJ0eVNsb3QoSlNDZWxsKiwgRXhlY1N0YXRlKiwgY29uc3QgSWRlbnRpZmll
ciYsIFByb3BlcnR5U2xvdCYpOworICAgIHN0YXRpYyBib29sIGdldE93blByb3BlcnR5U2xvdChK
U0NlbGwqLCBFeGVjU3RhdGUqLCBQcm9wZXJ0eU5hbWUsIFByb3BlcnR5U2xvdCYpOwogICAgIHN0
YXRpYyBib29sIGdldE93blByb3BlcnR5U2xvdEJ5SW5kZXgoSlNDZWxsKiwgRXhlY1N0YXRlKiwg
dW5zaWduZWQsIFByb3BlcnR5U2xvdCYpOwotICAgIHN0YXRpYyBib29sIGdldE93blByb3BlcnR5
RGVzY3JpcHRvcihKU09iamVjdCosIEV4ZWNTdGF0ZSosIGNvbnN0IElkZW50aWZpZXImLCBQcm9w
ZXJ0eURlc2NyaXB0b3ImKTsKLSAgICBzdGF0aWMgdm9pZCBwdXQoSlNDZWxsKiwgRXhlY1N0YXRl
KiwgY29uc3QgSWRlbnRpZmllciYgcHJvcGVydHlOYW1lLCBKU1ZhbHVlLCBQdXRQcm9wZXJ0eVNs
b3QmKTsKKyAgICBzdGF0aWMgYm9vbCBnZXRPd25Qcm9wZXJ0eURlc2NyaXB0b3IoSlNPYmplY3Qq
LCBFeGVjU3RhdGUqLCBQcm9wZXJ0eU5hbWUsIFByb3BlcnR5RGVzY3JpcHRvciYpOworICAgIHN0
YXRpYyB2b2lkIHB1dChKU0NlbGwqLCBFeGVjU3RhdGUqLCBQcm9wZXJ0eU5hbWUsIEpTVmFsdWUs
IFB1dFByb3BlcnR5U2xvdCYpOwogICAgIHN0YXRpYyB2b2lkIHB1dEJ5SW5kZXgoSlNDZWxsKiwg
RXhlY1N0YXRlKiwgdW5zaWduZWQgcHJvcGVydHlOYW1lLCBKU1ZhbHVlLCBib29sIHNob3VsZFRo
cm93KTsKICAgICAKLSAgICBzdGF0aWMgYm9vbCBkZWxldGVQcm9wZXJ0eShKU0NlbGwqLCBFeGVj
U3RhdGUqLCBjb25zdCBJZGVudGlmaWVyICZwcm9wZXJ0eU5hbWUpOworICAgIHN0YXRpYyBib29s
IGRlbGV0ZVByb3BlcnR5KEpTQ2VsbCosIEV4ZWNTdGF0ZSosIFByb3BlcnR5TmFtZSk7CiAgICAg
c3RhdGljIGJvb2wgZGVsZXRlUHJvcGVydHlCeUluZGV4KEpTQ2VsbCosIEV4ZWNTdGF0ZSosIHVu
c2lnbmVkIHByb3BlcnR5TmFtZSk7CiAgICAgCiAgICAgdW5zaWduZWQgZ2V0TGVuZ3RoKCkgY29u
c3QgeyByZXR1cm4gbV9hcnJheS0+Z2V0TGVuZ3RoKCk7IH0KQEAgLTgzLDcgKzgzLDcgQEAgcHJv
dGVjdGVkOgogCiBwcml2YXRlOgogICAgIFJ1bnRpbWVBcnJheShFeGVjU3RhdGUqLCBTdHJ1Y3R1
cmUqKTsKLSAgICBzdGF0aWMgSlNWYWx1ZSBsZW5ndGhHZXR0ZXIoRXhlY1N0YXRlKiwgSlNWYWx1
ZSwgY29uc3QgSWRlbnRpZmllciYpOworICAgIHN0YXRpYyBKU1ZhbHVlIGxlbmd0aEdldHRlcihF
eGVjU3RhdGUqLCBKU1ZhbHVlLCBQcm9wZXJ0eU5hbWUpOwogICAgIHN0YXRpYyBKU1ZhbHVlIGlu
ZGV4R2V0dGVyKEV4ZWNTdGF0ZSosIEpTVmFsdWUsIHVuc2lnbmVkKTsKIAogICAgIEJpbmRpbmdz
QXJyYXkqIG1fYXJyYXk7CkluZGV4OiBTb3VyY2UvV2ViQ29yZS9icmlkZ2UvcnVudGltZV9tZXRo
b2QuY3BwCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9XZWJDb3JlL2JyaWRnZS9ydW50aW1lX21ldGhv
ZC5jcHAJKHJldmlzaW9uIDExNjY2NykKKysrIFNvdXJjZS9XZWJDb3JlL2JyaWRnZS9ydW50aW1l
X21ldGhvZC5jcHAJKHdvcmtpbmcgY29weSkKQEAgLTU1LDEzICs1NSwxMyBAQCB2b2lkIFJ1bnRp
bWVNZXRob2Q6OmRlc3Ryb3koSlNDZWxsKiBjZWxsCiAgICAganNDYXN0PFJ1bnRpbWVNZXRob2Qq
PihjZWxsKS0+UnVudGltZU1ldGhvZDo6flJ1bnRpbWVNZXRob2QoKTsKIH0KIAotdm9pZCBSdW50
aW1lTWV0aG9kOjpmaW5pc2hDcmVhdGlvbihKU0dsb2JhbERhdGEmIGdsb2JhbERhdGEsIGNvbnN0
IElkZW50aWZpZXImIGlkZW50KQordm9pZCBSdW50aW1lTWV0aG9kOjpmaW5pc2hDcmVhdGlvbihK
U0dsb2JhbERhdGEmIGdsb2JhbERhdGEsIGNvbnN0IFVTdHJpbmcmIGlkZW50KQogewogICAgIEJh
c2U6OmZpbmlzaENyZWF0aW9uKGdsb2JhbERhdGEsIGlkZW50KTsKICAgICBBU1NFUlQoaW5oZXJp
dHMoJnNfaW5mbykpOwogfQogCi1KU1ZhbHVlIFJ1bnRpbWVNZXRob2Q6Omxlbmd0aEdldHRlcihF
eGVjU3RhdGUqLCBKU1ZhbHVlIHNsb3RCYXNlLCBjb25zdCBJZGVudGlmaWVyJikKK0pTVmFsdWUg
UnVudGltZU1ldGhvZDo6bGVuZ3RoR2V0dGVyKEV4ZWNTdGF0ZSosIEpTVmFsdWUgc2xvdEJhc2Us
IFByb3BlcnR5TmFtZSkKIHsKICAgICBSdW50aW1lTWV0aG9kKiB0aGlzT2JqID0gc3RhdGljX2Nh
c3Q8UnVudGltZU1ldGhvZCo+KGFzT2JqZWN0KHNsb3RCYXNlKSk7CiAKQEAgLTc0LDcgKzc0LDcg
QEAgSlNWYWx1ZSBSdW50aW1lTWV0aG9kOjpsZW5ndGhHZXR0ZXIoRXhlYwogICAgIHJldHVybiBq
c051bWJlcih0aGlzT2JqLT5fbWV0aG9kTGlzdC0+YXQoMCktPm51bVBhcmFtZXRlcnMoKSk7CiB9
CiAKLWJvb2wgUnVudGltZU1ldGhvZDo6Z2V0T3duUHJvcGVydHlTbG90KEpTQ2VsbCogY2VsbCwg
RXhlY1N0YXRlKiBleGVjLCBjb25zdCBJZGVudGlmaWVyJiBwcm9wZXJ0eU5hbWUsIFByb3BlcnR5
U2xvdCAmc2xvdCkKK2Jvb2wgUnVudGltZU1ldGhvZDo6Z2V0T3duUHJvcGVydHlTbG90KEpTQ2Vs
bCogY2VsbCwgRXhlY1N0YXRlKiBleGVjLCBQcm9wZXJ0eU5hbWUgcHJvcGVydHlOYW1lLCBQcm9w
ZXJ0eVNsb3QgJnNsb3QpCiB7CiAgICAgUnVudGltZU1ldGhvZCogdGhpc09iamVjdCA9IGpzQ2Fz
dDxSdW50aW1lTWV0aG9kKj4oY2VsbCk7CiAgICAgaWYgKHByb3BlcnR5TmFtZSA9PSBleGVjLT5w
cm9wZXJ0eU5hbWVzKCkubGVuZ3RoKSB7CkBAIC04NSw3ICs4NSw3IEBAIGJvb2wgUnVudGltZU1l
dGhvZDo6Z2V0T3duUHJvcGVydHlTbG90KEoKICAgICByZXR1cm4gSW50ZXJuYWxGdW5jdGlvbjo6
Z2V0T3duUHJvcGVydHlTbG90KHRoaXNPYmplY3QsIGV4ZWMsIHByb3BlcnR5TmFtZSwgc2xvdCk7
CiB9CiAKLWJvb2wgUnVudGltZU1ldGhvZDo6Z2V0T3duUHJvcGVydHlEZXNjcmlwdG9yKEpTT2Jq
ZWN0KiBvYmplY3QsIEV4ZWNTdGF0ZSogZXhlYywgY29uc3QgSWRlbnRpZmllciYgcHJvcGVydHlO
YW1lLCBQcm9wZXJ0eURlc2NyaXB0b3IgJmRlc2NyaXB0b3IpCitib29sIFJ1bnRpbWVNZXRob2Q6
OmdldE93blByb3BlcnR5RGVzY3JpcHRvcihKU09iamVjdCogb2JqZWN0LCBFeGVjU3RhdGUqIGV4
ZWMsIFByb3BlcnR5TmFtZSBwcm9wZXJ0eU5hbWUsIFByb3BlcnR5RGVzY3JpcHRvciAmZGVzY3Jp
cHRvcikKIHsKICAgICBSdW50aW1lTWV0aG9kKiB0aGlzT2JqZWN0ID0ganNDYXN0PFJ1bnRpbWVN
ZXRob2QqPihvYmplY3QpOwogICAgIGlmIChwcm9wZXJ0eU5hbWUgPT0gZXhlYy0+cHJvcGVydHlO
YW1lcygpLmxlbmd0aCkgewpJbmRleDogU291cmNlL1dlYkNvcmUvYnJpZGdlL3J1bnRpbWVfbWV0
aG9kLmgKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PQotLS0gU291cmNlL1dlYkNvcmUvYnJpZGdlL3J1bnRpbWVfbWV0aG9k
LmgJKHJldmlzaW9uIDExNjY2NykKKysrIFNvdXJjZS9XZWJDb3JlL2JyaWRnZS9ydW50aW1lX21l
dGhvZC5oCSh3b3JraW5nIGNvcHkpCkBAIC0zOSw3ICszOSw3IEBAIHB1YmxpYzoKIAogICAgIHN0
YXRpYyB2b2lkIGRlc3Ryb3koSlNDZWxsKik7CiAKLSAgICBzdGF0aWMgUnVudGltZU1ldGhvZCog
Y3JlYXRlKEV4ZWNTdGF0ZSogZXhlYywgSlNHbG9iYWxPYmplY3QqIGdsb2JhbE9iamVjdCwgU3Ry
dWN0dXJlKiBzdHJ1Y3R1cmUsIGNvbnN0IElkZW50aWZpZXImIG5hbWUsIEJpbmRpbmdzOjpNZXRo
b2RMaXN0JiBtZXRob2RMaXN0KQorICAgIHN0YXRpYyBSdW50aW1lTWV0aG9kKiBjcmVhdGUoRXhl
Y1N0YXRlKiBleGVjLCBKU0dsb2JhbE9iamVjdCogZ2xvYmFsT2JqZWN0LCBTdHJ1Y3R1cmUqIHN0
cnVjdHVyZSwgY29uc3QgVVN0cmluZyYgbmFtZSwgQmluZGluZ3M6Ok1ldGhvZExpc3QmIG1ldGhv
ZExpc3QpCiAgICAgewogICAgICAgICBSdW50aW1lTWV0aG9kKiBtZXRob2QgPSBuZXcgKE5vdE51
bGwsIGFsbG9jYXRlQ2VsbDxSdW50aW1lTWV0aG9kPigqZXhlYy0+aGVhcCgpKSkgUnVudGltZU1l
dGhvZChnbG9iYWxPYmplY3QsIHN0cnVjdHVyZSwgbWV0aG9kTGlzdCk7CiAgICAgICAgIG1ldGhv
ZC0+ZmluaXNoQ3JlYXRpb24oZXhlYy0+Z2xvYmFsRGF0YSgpLCBuYW1lKTsKQEAgLTYyLDE1ICs2
MiwxNSBAQCBwdWJsaWM6CiAKIHByb3RlY3RlZDoKICAgICBSdW50aW1lTWV0aG9kKEpTR2xvYmFs
T2JqZWN0KiwgU3RydWN0dXJlKiwgQmluZGluZ3M6Ok1ldGhvZExpc3QmKTsKLSAgICB2b2lkIGZp
bmlzaENyZWF0aW9uKEpTR2xvYmFsRGF0YSYsIGNvbnN0IElkZW50aWZpZXImKTsKKyAgICB2b2lk
IGZpbmlzaENyZWF0aW9uKEpTR2xvYmFsRGF0YSYsIGNvbnN0IFVTdHJpbmcmKTsKICAgICBzdGF0
aWMgY29uc3QgdW5zaWduZWQgU3RydWN0dXJlRmxhZ3MgPSBPdmVycmlkZXNHZXRPd25Qcm9wZXJ0
eVNsb3QgfCBJbnRlcm5hbEZ1bmN0aW9uOjpTdHJ1Y3R1cmVGbGFnczsKICAgICBzdGF0aWMgQ2Fs
bFR5cGUgZ2V0Q2FsbERhdGEoSlNDZWxsKiwgQ2FsbERhdGEmKTsKIAotICAgIHN0YXRpYyBib29s
IGdldE93blByb3BlcnR5U2xvdChKU0NlbGwqLCBFeGVjU3RhdGUqLCBjb25zdCBJZGVudGlmaWVy
JiwgUHJvcGVydHlTbG90Jik7Ci0gICAgc3RhdGljIGJvb2wgZ2V0T3duUHJvcGVydHlEZXNjcmlw
dG9yKEpTT2JqZWN0KiwgRXhlY1N0YXRlKiwgY29uc3QgSWRlbnRpZmllciYsIFByb3BlcnR5RGVz
Y3JpcHRvciYpOworICAgIHN0YXRpYyBib29sIGdldE93blByb3BlcnR5U2xvdChKU0NlbGwqLCBF
eGVjU3RhdGUqLCBQcm9wZXJ0eU5hbWUsIFByb3BlcnR5U2xvdCYpOworICAgIHN0YXRpYyBib29s
IGdldE93blByb3BlcnR5RGVzY3JpcHRvcihKU09iamVjdCosIEV4ZWNTdGF0ZSosIFByb3BlcnR5
TmFtZSwgUHJvcGVydHlEZXNjcmlwdG9yJik7CiAKIHByaXZhdGU6Ci0gICAgc3RhdGljIEpTVmFs
dWUgbGVuZ3RoR2V0dGVyKEV4ZWNTdGF0ZSosIEpTVmFsdWUsIGNvbnN0IElkZW50aWZpZXImKTsK
KyAgICBzdGF0aWMgSlNWYWx1ZSBsZW5ndGhHZXR0ZXIoRXhlY1N0YXRlKiwgSlNWYWx1ZSwgUHJv
cGVydHlOYW1lKTsKIAogICAgIE93blB0cjxCaW5kaW5nczo6TWV0aG9kTGlzdD4gX21ldGhvZExp
c3Q7CiB9OwpJbmRleDogU291cmNlL1dlYkNvcmUvYnJpZGdlL3J1bnRpbWVfb2JqZWN0LmNwcAo9
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09Ci0tLSBTb3VyY2UvV2ViQ29yZS9icmlkZ2UvcnVudGltZV9vYmplY3QuY3BwCShy
ZXZpc2lvbiAxMTY2NjcpCisrKyBTb3VyY2UvV2ViQ29yZS9icmlkZ2UvcnVudGltZV9vYmplY3Qu
Y3BwCSh3b3JraW5nIGNvcHkpCkBAIC02NCw3ICs2NCw3IEBAIHZvaWQgUnVudGltZU9iamVjdDo6
aW52YWxpZGF0ZSgpCiAgICAgbV9pbnN0YW5jZSA9IDA7CiB9CiAKLUpTVmFsdWUgUnVudGltZU9i
amVjdDo6ZmFsbGJhY2tPYmplY3RHZXR0ZXIoRXhlY1N0YXRlKiBleGVjLCBKU1ZhbHVlIHNsb3RC
YXNlLCBjb25zdCBJZGVudGlmaWVyJiBwcm9wZXJ0eU5hbWUpCitKU1ZhbHVlIFJ1bnRpbWVPYmpl
Y3Q6OmZhbGxiYWNrT2JqZWN0R2V0dGVyKEV4ZWNTdGF0ZSogZXhlYywgSlNWYWx1ZSBzbG90QmFz
ZSwgUHJvcGVydHlOYW1lIHByb3BlcnR5TmFtZSkKIHsKICAgICBSdW50aW1lT2JqZWN0KiB0aGlz
T2JqID0gc3RhdGljX2Nhc3Q8UnVudGltZU9iamVjdCo+KGFzT2JqZWN0KHNsb3RCYXNlKSk7CiAg
ICAgUmVmUHRyPEluc3RhbmNlPiBpbnN0YW5jZSA9IHRoaXNPYmotPm1faW5zdGFuY2U7CkBAIC04
Miw3ICs4Miw3IEBAIEpTVmFsdWUgUnVudGltZU9iamVjdDo6ZmFsbGJhY2tPYmplY3RHZXQKICAg
ICByZXR1cm4gcmVzdWx0OwogfQogCi1KU1ZhbHVlIFJ1bnRpbWVPYmplY3Q6OmZpZWxkR2V0dGVy
KEV4ZWNTdGF0ZSogZXhlYywgSlNWYWx1ZSBzbG90QmFzZSwgY29uc3QgSWRlbnRpZmllciYgcHJv
cGVydHlOYW1lKQorSlNWYWx1ZSBSdW50aW1lT2JqZWN0OjpmaWVsZEdldHRlcihFeGVjU3RhdGUq
IGV4ZWMsIEpTVmFsdWUgc2xvdEJhc2UsIFByb3BlcnR5TmFtZSBwcm9wZXJ0eU5hbWUpCiB7ICAg
IAogICAgIFJ1bnRpbWVPYmplY3QqIHRoaXNPYmogPSBzdGF0aWNfY2FzdDxSdW50aW1lT2JqZWN0
Kj4oYXNPYmplY3Qoc2xvdEJhc2UpKTsKICAgICBSZWZQdHI8SW5zdGFuY2U+IGluc3RhbmNlID0g
dGhpc09iai0+bV9pbnN0YW5jZTsKQEAgLTEwMSw3ICsxMDEsNyBAQCBKU1ZhbHVlIFJ1bnRpbWVP
YmplY3Q6OmZpZWxkR2V0dGVyKEV4ZWNTCiAgICAgcmV0dXJuIHJlc3VsdDsKIH0KIAotSlNWYWx1
ZSBSdW50aW1lT2JqZWN0OjptZXRob2RHZXR0ZXIoRXhlY1N0YXRlKiBleGVjLCBKU1ZhbHVlIHNs
b3RCYXNlLCBjb25zdCBJZGVudGlmaWVyJiBwcm9wZXJ0eU5hbWUpCitKU1ZhbHVlIFJ1bnRpbWVP
YmplY3Q6Om1ldGhvZEdldHRlcihFeGVjU3RhdGUqIGV4ZWMsIEpTVmFsdWUgc2xvdEJhc2UsIFBy
b3BlcnR5TmFtZSBwcm9wZXJ0eU5hbWUpCiB7CiAgICAgUnVudGltZU9iamVjdCogdGhpc09iaiA9
IHN0YXRpY19jYXN0PFJ1bnRpbWVPYmplY3QqPihhc09iamVjdChzbG90QmFzZSkpOwogICAgIFJl
ZlB0cjxJbnN0YW5jZT4gaW5zdGFuY2UgPSB0aGlzT2JqLT5tX2luc3RhbmNlOwpAQCAtMTE4LDcg
KzExOCw3IEBAIEpTVmFsdWUgUnVudGltZU9iamVjdDo6bWV0aG9kR2V0dGVyKEV4ZWMKICAgICBy
ZXR1cm4gbWV0aG9kOwogfQogCi1ib29sIFJ1bnRpbWVPYmplY3Q6OmdldE93blByb3BlcnR5U2xv
dChKU0NlbGwqIGNlbGwsIEV4ZWNTdGF0ZSAqZXhlYywgY29uc3QgSWRlbnRpZmllciYgcHJvcGVy
dHlOYW1lLCBQcm9wZXJ0eVNsb3QmIHNsb3QpCitib29sIFJ1bnRpbWVPYmplY3Q6OmdldE93blBy
b3BlcnR5U2xvdChKU0NlbGwqIGNlbGwsIEV4ZWNTdGF0ZSAqZXhlYywgUHJvcGVydHlOYW1lIHBy
b3BlcnR5TmFtZSwgUHJvcGVydHlTbG90JiBzbG90KQogewogICAgIFJ1bnRpbWVPYmplY3QqIHRo
aXNPYmplY3QgPSBqc0Nhc3Q8UnVudGltZU9iamVjdCo+KGNlbGwpOwogICAgIGlmICghdGhpc09i
amVjdC0+bV9pbnN0YW5jZSkgewpAQCAtMTY0LDcgKzE2NCw3IEBAIGJvb2wgUnVudGltZU9iamVj
dDo6Z2V0T3duUHJvcGVydHlTbG90KEoKICAgICByZXR1cm4gaW5zdGFuY2UtPmdldE93blByb3Bl
cnR5U2xvdCh0aGlzT2JqZWN0LCBleGVjLCBwcm9wZXJ0eU5hbWUsIHNsb3QpOwogfQogCi1ib29s
IFJ1bnRpbWVPYmplY3Q6OmdldE93blByb3BlcnR5RGVzY3JpcHRvcihKU09iamVjdCogb2JqZWN0
LCBFeGVjU3RhdGUgKmV4ZWMsIGNvbnN0IElkZW50aWZpZXImIHByb3BlcnR5TmFtZSwgUHJvcGVy
dHlEZXNjcmlwdG9yJiBkZXNjcmlwdG9yKQorYm9vbCBSdW50aW1lT2JqZWN0OjpnZXRPd25Qcm9w
ZXJ0eURlc2NyaXB0b3IoSlNPYmplY3QqIG9iamVjdCwgRXhlY1N0YXRlICpleGVjLCBQcm9wZXJ0
eU5hbWUgcHJvcGVydHlOYW1lLCBQcm9wZXJ0eURlc2NyaXB0b3ImIGRlc2NyaXB0b3IpCiB7CiAg
ICAgUnVudGltZU9iamVjdCogdGhpc09iamVjdCA9IGpzQ2FzdDxSdW50aW1lT2JqZWN0Kj4ob2Jq
ZWN0KTsKICAgICBpZiAoIXRoaXNPYmplY3QtPm1faW5zdGFuY2UpIHsKQEAgLTIxNCw3ICsyMTQs
NyBAQCBib29sIFJ1bnRpbWVPYmplY3Q6OmdldE93blByb3BlcnR5RGVzY3JpCiAgICAgcmV0dXJu
IGluc3RhbmNlLT5nZXRPd25Qcm9wZXJ0eURlc2NyaXB0b3IodGhpc09iamVjdCwgZXhlYywgcHJv
cGVydHlOYW1lLCBkZXNjcmlwdG9yKTsKIH0KIAotdm9pZCBSdW50aW1lT2JqZWN0OjpwdXQoSlND
ZWxsKiBjZWxsLCBFeGVjU3RhdGUqIGV4ZWMsIGNvbnN0IElkZW50aWZpZXImIHByb3BlcnR5TmFt
ZSwgSlNWYWx1ZSB2YWx1ZSwgUHV0UHJvcGVydHlTbG90JiBzbG90KQordm9pZCBSdW50aW1lT2Jq
ZWN0OjpwdXQoSlNDZWxsKiBjZWxsLCBFeGVjU3RhdGUqIGV4ZWMsIFByb3BlcnR5TmFtZSBwcm9w
ZXJ0eU5hbWUsIEpTVmFsdWUgdmFsdWUsIFB1dFByb3BlcnR5U2xvdCYgc2xvdCkKIHsKICAgICBS
dW50aW1lT2JqZWN0KiB0aGlzT2JqZWN0ID0ganNDYXN0PFJ1bnRpbWVPYmplY3QqPihjZWxsKTsK
ICAgICBpZiAoIXRoaXNPYmplY3QtPm1faW5zdGFuY2UpIHsKQEAgLTIzNSw3ICsyMzUsNyBAQCB2
b2lkIFJ1bnRpbWVPYmplY3Q6OnB1dChKU0NlbGwqIGNlbGwsIEV4CiAgICAgaW5zdGFuY2UtPmVu
ZCgpOwogfQogCi1ib29sIFJ1bnRpbWVPYmplY3Q6OmRlbGV0ZVByb3BlcnR5KEpTQ2VsbCosIEV4
ZWNTdGF0ZSosIGNvbnN0IElkZW50aWZpZXImKQorYm9vbCBSdW50aW1lT2JqZWN0OjpkZWxldGVQ
cm9wZXJ0eShKU0NlbGwqLCBFeGVjU3RhdGUqLCBQcm9wZXJ0eU5hbWUpCiB7CiAgICAgLy8gQ2Fu
IG5ldmVyIHJlbW92ZSBhIHByb3BlcnR5IG9mIGEgUnVudGltZU9iamVjdC4KICAgICByZXR1cm4g
ZmFsc2U7CkluZGV4OiBTb3VyY2UvV2ViQ29yZS9icmlkZ2UvcnVudGltZV9vYmplY3QuaAo9PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09Ci0tLSBTb3VyY2UvV2ViQ29yZS9icmlkZ2UvcnVudGltZV9vYmplY3QuaAkocmV2aXNp
b24gMTE2NjY3KQorKysgU291cmNlL1dlYkNvcmUvYnJpZGdlL3J1bnRpbWVfb2JqZWN0LmgJKHdv
cmtpbmcgY29weSkKQEAgLTQ1LDEwICs0NSwxMCBAQCBwdWJsaWM6CiAKICAgICBzdGF0aWMgdm9p
ZCBkZXN0cm95KEpTQ2VsbCopOwogCi0gICAgc3RhdGljIGJvb2wgZ2V0T3duUHJvcGVydHlTbG90
KEpTQ2VsbCosIEV4ZWNTdGF0ZSosIGNvbnN0IElkZW50aWZpZXImIHByb3BlcnR5TmFtZSwgUHJv
cGVydHlTbG90Jik7Ci0gICAgc3RhdGljIGJvb2wgZ2V0T3duUHJvcGVydHlEZXNjcmlwdG9yKEpT
T2JqZWN0KiwgRXhlY1N0YXRlKiwgY29uc3QgSWRlbnRpZmllciYgcHJvcGVydHlOYW1lLCBQcm9w
ZXJ0eURlc2NyaXB0b3ImKTsKLSAgICBzdGF0aWMgdm9pZCBwdXQoSlNDZWxsKiwgRXhlY1N0YXRl
KiwgY29uc3QgSWRlbnRpZmllciYgcHJvcGVydHlOYW1lLCBKU1ZhbHVlLCBQdXRQcm9wZXJ0eVNs
b3QmKTsKLSAgICBzdGF0aWMgYm9vbCBkZWxldGVQcm9wZXJ0eShKU0NlbGwqLCBFeGVjU3RhdGUq
LCBjb25zdCBJZGVudGlmaWVyJiBwcm9wZXJ0eU5hbWUpOworICAgIHN0YXRpYyBib29sIGdldE93
blByb3BlcnR5U2xvdChKU0NlbGwqLCBFeGVjU3RhdGUqLCBQcm9wZXJ0eU5hbWUsIFByb3BlcnR5
U2xvdCYpOworICAgIHN0YXRpYyBib29sIGdldE93blByb3BlcnR5RGVzY3JpcHRvcihKU09iamVj
dCosIEV4ZWNTdGF0ZSosIFByb3BlcnR5TmFtZSwgUHJvcGVydHlEZXNjcmlwdG9yJik7CisgICAg
c3RhdGljIHZvaWQgcHV0KEpTQ2VsbCosIEV4ZWNTdGF0ZSosIFByb3BlcnR5TmFtZSwgSlNWYWx1
ZSwgUHV0UHJvcGVydHlTbG90Jik7CisgICAgc3RhdGljIGJvb2wgZGVsZXRlUHJvcGVydHkoSlND
ZWxsKiwgRXhlY1N0YXRlKiwgUHJvcGVydHlOYW1lKTsKICAgICBzdGF0aWMgSlNWYWx1ZSBkZWZh
dWx0VmFsdWUoY29uc3QgSlNPYmplY3QqLCBFeGVjU3RhdGUqLCBQcmVmZXJyZWRQcmltaXRpdmVU
eXBlKTsKICAgICBzdGF0aWMgQ2FsbFR5cGUgZ2V0Q2FsbERhdGEoSlNDZWxsKiwgQ2FsbERhdGEm
KTsKICAgICBzdGF0aWMgQ29uc3RydWN0VHlwZSBnZXRDb25zdHJ1Y3REYXRhKEpTQ2VsbCosIENv
bnN0cnVjdERhdGEmKTsKQEAgLTc5LDkgKzc5LDkgQEAgcHJvdGVjdGVkOgogICAgIHN0YXRpYyBj
b25zdCB1bnNpZ25lZCBTdHJ1Y3R1cmVGbGFncyA9IE92ZXJyaWRlc0dldE93blByb3BlcnR5U2xv
dCB8IE92ZXJyaWRlc0dldFByb3BlcnR5TmFtZXMgfCBCYXNlOjpTdHJ1Y3R1cmVGbGFnczsKIAog
cHJpdmF0ZToKLSAgICBzdGF0aWMgSlNWYWx1ZSBmYWxsYmFja09iamVjdEdldHRlcihFeGVjU3Rh
dGUqLCBKU1ZhbHVlLCBjb25zdCBJZGVudGlmaWVyJik7Ci0gICAgc3RhdGljIEpTVmFsdWUgZmll
bGRHZXR0ZXIoRXhlY1N0YXRlKiwgSlNWYWx1ZSwgY29uc3QgSWRlbnRpZmllciYpOwotICAgIHN0
YXRpYyBKU1ZhbHVlIG1ldGhvZEdldHRlcihFeGVjU3RhdGUqLCBKU1ZhbHVlLCBjb25zdCBJZGVu
dGlmaWVyJik7CisgICAgc3RhdGljIEpTVmFsdWUgZmFsbGJhY2tPYmplY3RHZXR0ZXIoRXhlY1N0
YXRlKiwgSlNWYWx1ZSwgUHJvcGVydHlOYW1lKTsKKyAgICBzdGF0aWMgSlNWYWx1ZSBmaWVsZEdl
dHRlcihFeGVjU3RhdGUqLCBKU1ZhbHVlLCBQcm9wZXJ0eU5hbWUpOworICAgIHN0YXRpYyBKU1Zh
bHVlIG1ldGhvZEdldHRlcihFeGVjU3RhdGUqLCBKU1ZhbHVlLCBQcm9wZXJ0eU5hbWUpOwogCiAg
ICAgUmVmUHRyPEluc3RhbmNlPiBtX2luc3RhbmNlOwogfTsKSW5kZXg6IFNvdXJjZS9XZWJDb3Jl
L2JyaWRnZS9jL2NfY2xhc3MuY3BwCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9XZWJDb3JlL2JyaWRn
ZS9jL2NfY2xhc3MuY3BwCShyZXZpc2lvbiAxMTY2NjcpCisrKyBTb3VyY2UvV2ViQ29yZS9icmlk
Z2UvYy9jX2NsYXNzLmNwcAkod29ya2luZyBjb3B5KQpAQCAtNzMsMjQgKzczLDI2IEBAIENDbGFz
cyogQ0NsYXNzOjpjbGFzc0ZvcklzQShOUENsYXNzKiBpc2EKICAgICByZXR1cm4gYUNsYXNzOwog
fQogCi1NZXRob2RMaXN0IENDbGFzczo6bWV0aG9kc05hbWVkKGNvbnN0IElkZW50aWZpZXImIGlk
ZW50aWZpZXIsIEluc3RhbmNlKiBpbnN0YW5jZSkgY29uc3QKK01ldGhvZExpc3QgQ0NsYXNzOjpt
ZXRob2RzTmFtZWQoUHJvcGVydHlOYW1lIGlkZW50aWZpZXIsIEluc3RhbmNlKiBpbnN0YW5jZSkg
Y29uc3QKIHsKKyAgICBVU3RyaW5nIG5hbWUoaWRlbnRpZmllci5pbXBsKCkpOworICAgIAogICAg
IE1ldGhvZExpc3QgbWV0aG9kTGlzdDsKIAotICAgIE1ldGhvZCogbWV0aG9kID0gX21ldGhvZHMu
Z2V0KGlkZW50aWZpZXIudXN0cmluZygpLmltcGwoKSk7CisgICAgTWV0aG9kKiBtZXRob2QgPSBf
bWV0aG9kcy5nZXQobmFtZS5pbXBsKCkpOwogICAgIGlmIChtZXRob2QpIHsKICAgICAgICAgbWV0
aG9kTGlzdC5hcHBlbmQobWV0aG9kKTsKICAgICAgICAgcmV0dXJuIG1ldGhvZExpc3Q7CiAgICAg
fQogCi0gICAgTlBJZGVudGlmaWVyIGlkZW50ID0gX05QTl9HZXRTdHJpbmdJZGVudGlmaWVyKGlk
ZW50aWZpZXIuYXNjaWkoKS5kYXRhKCkpOworICAgIE5QSWRlbnRpZmllciBpZGVudCA9IF9OUE5f
R2V0U3RyaW5nSWRlbnRpZmllcihuYW1lLmFzY2lpKCkuZGF0YSgpKTsKICAgICBjb25zdCBDSW5z
dGFuY2UqIGluc3QgPSBzdGF0aWNfY2FzdDxjb25zdCBDSW5zdGFuY2UqPihpbnN0YW5jZSk7CiAg
ICAgTlBPYmplY3QqIG9iaiA9IGluc3QtPmdldE9iamVjdCgpOwogICAgIGlmIChfaXNhLT5oYXNN
ZXRob2QgJiYgX2lzYS0+aGFzTWV0aG9kKG9iaiwgaWRlbnQpKXsKICAgICAgICAgTWV0aG9kKiBh
TWV0aG9kID0gbmV3IENNZXRob2QoaWRlbnQpOyAvLyBkZWxldGVkIGluIHRoZSBDQ2xhc3MgZGVz
dHJ1Y3RvcgogICAgICAgICB7CiAgICAgICAgICAgICBKU0xvY2sgbG9jayhTaWxlbmNlQXNzZXJ0
aW9uc09ubHkpOwotICAgICAgICAgICAgX21ldGhvZHMuc2V0KGlkZW50aWZpZXIudXN0cmluZygp
LmltcGwoKSwgYU1ldGhvZCk7CisgICAgICAgICAgICBfbWV0aG9kcy5zZXQobmFtZS5pbXBsKCks
IGFNZXRob2QpOwogICAgICAgICB9CiAgICAgICAgIG1ldGhvZExpc3QuYXBwZW5kKGFNZXRob2Qp
OwogICAgIH0KQEAgLTk4LDIwICsxMDAsMjIgQEAgTWV0aG9kTGlzdCBDQ2xhc3M6Om1ldGhvZHNO
YW1lZChjb25zdCBJZAogICAgIHJldHVybiBtZXRob2RMaXN0OwogfQogCi1GaWVsZCogQ0NsYXNz
OjpmaWVsZE5hbWVkKGNvbnN0IElkZW50aWZpZXImIGlkZW50aWZpZXIsIEluc3RhbmNlKiBpbnN0
YW5jZSkgY29uc3QKK0ZpZWxkKiBDQ2xhc3M6OmZpZWxkTmFtZWQoUHJvcGVydHlOYW1lIGlkZW50
aWZpZXIsIEluc3RhbmNlKiBpbnN0YW5jZSkgY29uc3QKIHsKLSAgICBGaWVsZCogYUZpZWxkID0g
X2ZpZWxkcy5nZXQoaWRlbnRpZmllci51c3RyaW5nKCkuaW1wbCgpKTsKKyAgICBVU3RyaW5nIG5h
bWUoaWRlbnRpZmllci5pbXBsKCkpOworICAgIAorICAgIEZpZWxkKiBhRmllbGQgPSBfZmllbGRz
LmdldChuYW1lLmltcGwoKSk7CiAgICAgaWYgKGFGaWVsZCkKICAgICAgICAgcmV0dXJuIGFGaWVs
ZDsKICAgICAKLSAgICBOUElkZW50aWZpZXIgaWRlbnQgPSBfTlBOX0dldFN0cmluZ0lkZW50aWZp
ZXIoaWRlbnRpZmllci5hc2NpaSgpLmRhdGEoKSk7CisgICAgTlBJZGVudGlmaWVyIGlkZW50ID0g
X05QTl9HZXRTdHJpbmdJZGVudGlmaWVyKG5hbWUuYXNjaWkoKS5kYXRhKCkpOwogICAgIGNvbnN0
IENJbnN0YW5jZSogaW5zdCA9IHN0YXRpY19jYXN0PGNvbnN0IENJbnN0YW5jZSo+KGluc3RhbmNl
KTsKICAgICBOUE9iamVjdCogb2JqID0gaW5zdC0+Z2V0T2JqZWN0KCk7CiAgICAgaWYgKF9pc2Et
Pmhhc1Byb3BlcnR5ICYmIF9pc2EtPmhhc1Byb3BlcnR5KG9iaiwgaWRlbnQpKXsKICAgICAgICAg
YUZpZWxkID0gbmV3IENGaWVsZChpZGVudCk7IC8vIGRlbGV0ZWQgaW4gdGhlIENDbGFzcyBkZXN0
cnVjdG9yCiAgICAgICAgIHsKICAgICAgICAgICAgIEpTTG9jayBsb2NrKFNpbGVuY2VBc3NlcnRp
b25zT25seSk7Ci0gICAgICAgICAgICBfZmllbGRzLnNldChpZGVudGlmaWVyLnVzdHJpbmcoKS5p
bXBsKCksIGFGaWVsZCk7CisgICAgICAgICAgICBfZmllbGRzLnNldChuYW1lLmltcGwoKSwgYUZp
ZWxkKTsKICAgICAgICAgfQogICAgIH0KICAgICByZXR1cm4gYUZpZWxkOwpJbmRleDogU291cmNl
L1dlYkNvcmUvYnJpZGdlL2MvY19jbGFzcy5oCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9XZWJDb3Jl
L2JyaWRnZS9jL2NfY2xhc3MuaAkocmV2aXNpb24gMTE2NjY3KQorKysgU291cmNlL1dlYkNvcmUv
YnJpZGdlL2MvY19jbGFzcy5oCSh3b3JraW5nIGNvcHkpCkBAIC00Myw4ICs0Myw4IEBAIHB1Ymxp
YzoKICAgICBzdGF0aWMgQ0NsYXNzKiBjbGFzc0ZvcklzQShOUENsYXNzKik7CiAgICAgdmlydHVh
bCB+Q0NsYXNzKCk7CiAKLSAgICB2aXJ0dWFsIE1ldGhvZExpc3QgbWV0aG9kc05hbWVkKGNvbnN0
IElkZW50aWZpZXImLCBJbnN0YW5jZSopIGNvbnN0OwotICAgIHZpcnR1YWwgRmllbGQqIGZpZWxk
TmFtZWQoY29uc3QgSWRlbnRpZmllciYsIEluc3RhbmNlKikgY29uc3Q7CisgICAgdmlydHVhbCBN
ZXRob2RMaXN0IG1ldGhvZHNOYW1lZChQcm9wZXJ0eU5hbWUsIEluc3RhbmNlKikgY29uc3Q7Cisg
ICAgdmlydHVhbCBGaWVsZCogZmllbGROYW1lZChQcm9wZXJ0eU5hbWUsIEluc3RhbmNlKikgY29u
c3Q7CiAKIHByaXZhdGU6CiAgICAgTlBDbGFzcyogX2lzYTsKSW5kZXg6IFNvdXJjZS9XZWJDb3Jl
L2JyaWRnZS9jL2NfaW5zdGFuY2UuY3BwCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9XZWJDb3JlL2Jy
aWRnZS9jL2NfaW5zdGFuY2UuY3BwCShyZXZpc2lvbiAxMTY2NjcpCisrKyBTb3VyY2UvV2ViQ29y
ZS9icmlkZ2UvYy9jX2luc3RhbmNlLmNwcAkod29ya2luZyBjb3B5KQpAQCAtMTEzLDcgKzExMyw3
IEBAIGNsYXNzIENSdW50aW1lTWV0aG9kIDogcHVibGljIFJ1bnRpbWVNZXQKIHB1YmxpYzoKICAg
ICB0eXBlZGVmIFJ1bnRpbWVNZXRob2QgQmFzZTsKIAotICAgIHN0YXRpYyBDUnVudGltZU1ldGhv
ZCogY3JlYXRlKEV4ZWNTdGF0ZSogZXhlYywgSlNHbG9iYWxPYmplY3QqIGdsb2JhbE9iamVjdCwg
Y29uc3QgSWRlbnRpZmllciYgbmFtZSwgQmluZGluZ3M6Ok1ldGhvZExpc3QmIGxpc3QpCisgICAg
c3RhdGljIENSdW50aW1lTWV0aG9kKiBjcmVhdGUoRXhlY1N0YXRlKiBleGVjLCBKU0dsb2JhbE9i
amVjdCogZ2xvYmFsT2JqZWN0LCBjb25zdCBVU3RyaW5nJiBuYW1lLCBCaW5kaW5nczo6TWV0aG9k
TGlzdCYgbGlzdCkKICAgICB7CiAgICAgICAgIC8vIEZJWE1FOiBkZXByZWNhdGVkR2V0RE9NU3Ry
dWN0dXJlIHVzZXMgdGhlIHByb3RvdHlwZSBvZmYgb2YgdGhlIHdyb25nIGdsb2JhbCBvYmplY3QK
ICAgICAgICAgLy8gV2UgbmVlZCB0byBwYXNzIGluIHRoZSByaWdodCBnbG9iYWwgb2JqZWN0IGZv
ciAiaSIuCkBAIC0xMzYsNyArMTM2LDcgQEAgcHJpdmF0ZToKICAgICB7CiAgICAgfQogCi0gICAg
dm9pZCBmaW5pc2hDcmVhdGlvbihKU0dsb2JhbERhdGEmIGdsb2JhbERhdGEsIGNvbnN0IElkZW50
aWZpZXImIG5hbWUpCisgICAgdm9pZCBmaW5pc2hDcmVhdGlvbihKU0dsb2JhbERhdGEmIGdsb2Jh
bERhdGEsIGNvbnN0IFVTdHJpbmcmIG5hbWUpCiAgICAgewogICAgICAgICBCYXNlOjpmaW5pc2hD
cmVhdGlvbihnbG9iYWxEYXRhLCBuYW1lKTsKICAgICAgICAgQVNTRVJUKGluaGVyaXRzKCZzX2lu
Zm8pKTsKQEAgLTE0NiwxMCArMTQ2LDEwIEBAIHByaXZhdGU6CiAKIGNvbnN0IENsYXNzSW5mbyBD
UnVudGltZU1ldGhvZDo6c19pbmZvID0geyAiQ1J1bnRpbWVNZXRob2QiLCAmUnVudGltZU1ldGhv
ZDo6c19pbmZvLCAwLCAwLCBDUkVBVEVfTUVUSE9EX1RBQkxFKENSdW50aW1lTWV0aG9kKSB9Owog
Ci1KU1ZhbHVlIENJbnN0YW5jZTo6Z2V0TWV0aG9kKEV4ZWNTdGF0ZSogZXhlYywgY29uc3QgSWRl
bnRpZmllciYgcHJvcGVydHlOYW1lKQorSlNWYWx1ZSBDSW5zdGFuY2U6OmdldE1ldGhvZChFeGVj
U3RhdGUqIGV4ZWMsIFByb3BlcnR5TmFtZSBwcm9wZXJ0eU5hbWUpCiB7CiAgICAgTWV0aG9kTGlz
dCBtZXRob2RMaXN0ID0gZ2V0Q2xhc3MoKS0+bWV0aG9kc05hbWVkKHByb3BlcnR5TmFtZSwgdGhp
cyk7Ci0gICAgcmV0dXJuIENSdW50aW1lTWV0aG9kOjpjcmVhdGUoZXhlYywgZXhlYy0+bGV4aWNh
bEdsb2JhbE9iamVjdCgpLCBwcm9wZXJ0eU5hbWUsIG1ldGhvZExpc3QpOworICAgIHJldHVybiBD
UnVudGltZU1ldGhvZDo6Y3JlYXRlKGV4ZWMsIGV4ZWMtPmxleGljYWxHbG9iYWxPYmplY3QoKSwg
cHJvcGVydHlOYW1lLmltcGwoKSwgbWV0aG9kTGlzdCk7CiB9CiAKIEpTVmFsdWUgQ0luc3RhbmNl
OjppbnZva2VNZXRob2QoRXhlY1N0YXRlKiBleGVjLCBSdW50aW1lTWV0aG9kKiBydW50aW1lTWV0
aG9kKQpJbmRleDogU291cmNlL1dlYkNvcmUvYnJpZGdlL2MvY19pbnN0YW5jZS5oCj09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT0KLS0tIFNvdXJjZS9XZWJDb3JlL2JyaWRnZS9jL2NfaW5zdGFuY2UuaAkocmV2aXNpb24gMTE2
NjY3KQorKysgU291cmNlL1dlYkNvcmUvYnJpZGdlL2MvY19pbnN0YW5jZS5oCSh3b3JraW5nIGNv
cHkpCkBAIC01OSw3ICs1OSw3IEBAIHB1YmxpYzoKICAgICB2aXJ0dWFsIEpTVmFsdWUgdmFsdWVP
ZihFeGVjU3RhdGUqKSBjb25zdDsKICAgICB2aXJ0dWFsIEpTVmFsdWUgZGVmYXVsdFZhbHVlKEV4
ZWNTdGF0ZSosIFByZWZlcnJlZFByaW1pdGl2ZVR5cGUpIGNvbnN0OwogCi0gICAgdmlydHVhbCBK
U1ZhbHVlIGdldE1ldGhvZChFeGVjU3RhdGUqIGV4ZWMsIGNvbnN0IElkZW50aWZpZXImIHByb3Bl
cnR5TmFtZSk7CisgICAgdmlydHVhbCBKU1ZhbHVlIGdldE1ldGhvZChFeGVjU3RhdGUqLCBQcm9w
ZXJ0eU5hbWUpOwogICAgIHZpcnR1YWwgSlNWYWx1ZSBpbnZva2VNZXRob2QoRXhlY1N0YXRlKiwg
UnVudGltZU1ldGhvZCogbWV0aG9kKTsKICAgICB2aXJ0dWFsIGJvb2wgc3VwcG9ydHNJbnZva2VE
ZWZhdWx0TWV0aG9kKCkgY29uc3Q7CiAgICAgdmlydHVhbCBKU1ZhbHVlIGludm9rZURlZmF1bHRN
ZXRob2QoRXhlY1N0YXRlKik7CkluZGV4OiBTb3VyY2UvV2ViQ29yZS9icmlkZ2Uvam5pL2pzYy9K
YXZhQ2xhc3NKU0MuY3BwCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9XZWJDb3JlL2JyaWRnZS9qbmkv
anNjL0phdmFDbGFzc0pTQy5jcHAJKHJldmlzaW9uIDExNjY2NykKKysrIFNvdXJjZS9XZWJDb3Jl
L2JyaWRnZS9qbmkvanNjL0phdmFDbGFzc0pTQy5jcHAJKHdvcmtpbmcgY29weSkKQEAgLTExNCw3
ICsxMTQsNyBAQCBKYXZhQ2xhc3M6On5KYXZhQ2xhc3MoKQogICAgIG1fbWV0aG9kcy5jbGVhcigp
OwogfQogCi1NZXRob2RMaXN0IEphdmFDbGFzczo6bWV0aG9kc05hbWVkKGNvbnN0IElkZW50aWZp
ZXImIGlkZW50aWZpZXIsIEluc3RhbmNlKikgY29uc3QKK01ldGhvZExpc3QgSmF2YUNsYXNzOjpt
ZXRob2RzTmFtZWQoUHJvcGVydHlOYW1lIGlkZW50aWZpZXIsIEluc3RhbmNlKikgY29uc3QKIHsK
ICAgICBNZXRob2RMaXN0KiBtZXRob2RMaXN0ID0gbV9tZXRob2RzLmdldChpZGVudGlmaWVyLnVz
dHJpbmcoKS5pbXBsKCkpOwogCkBAIC0xMjMsNyArMTIzLDcgQEAgTWV0aG9kTGlzdCBKYXZhQ2xh
c3M6Om1ldGhvZHNOYW1lZChjb25zdAogICAgIHJldHVybiBNZXRob2RMaXN0KCk7CiB9CiAKLUZp
ZWxkKiBKYXZhQ2xhc3M6OmZpZWxkTmFtZWQoY29uc3QgSWRlbnRpZmllciYgaWRlbnRpZmllciwg
SW5zdGFuY2UqKSBjb25zdAorRmllbGQqIEphdmFDbGFzczo6ZmllbGROYW1lZChQcm9wZXJ0eU5h
bWUgaWRlbnRpZmllciwgSW5zdGFuY2UqKSBjb25zdAogewogICAgIHJldHVybiBtX2ZpZWxkcy5n
ZXQoaWRlbnRpZmllci51c3RyaW5nKCkuaW1wbCgpKTsKIH0KSW5kZXg6IFNvdXJjZS9XZWJDb3Jl
L2JyaWRnZS9qbmkvanNjL0phdmFDbGFzc0pTQy5oCj09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9XZWJD
b3JlL2JyaWRnZS9qbmkvanNjL0phdmFDbGFzc0pTQy5oCShyZXZpc2lvbiAxMTY2NjcpCisrKyBT
b3VyY2UvV2ViQ29yZS9icmlkZ2Uvam5pL2pzYy9KYXZhQ2xhc3NKU0MuaAkod29ya2luZyBjb3B5
KQpAQCAtNDEsOCArNDEsOCBAQCBwdWJsaWM6CiAgICAgSmF2YUNsYXNzKGpvYmplY3QpOwogICAg
IH5KYXZhQ2xhc3MoKTsKIAotICAgIHZpcnR1YWwgTWV0aG9kTGlzdCBtZXRob2RzTmFtZWQoY29u
c3QgSWRlbnRpZmllciYsIEluc3RhbmNlKikgY29uc3Q7Ci0gICAgdmlydHVhbCBGaWVsZCogZmll
bGROYW1lZChjb25zdCBJZGVudGlmaWVyJiwgSW5zdGFuY2UqKSBjb25zdDsKKyAgICB2aXJ0dWFs
IE1ldGhvZExpc3QgbWV0aG9kc05hbWVkKFByb3BlcnR5TmFtZSwgSW5zdGFuY2UqKSBjb25zdDsK
KyAgICB2aXJ0dWFsIEZpZWxkKiBmaWVsZE5hbWVkKFByb3BlcnR5TmFtZSwgSW5zdGFuY2UqKSBj
b25zdDsKIAogICAgIGJvb2wgaXNOdW1iZXJDbGFzcygpIGNvbnN0OwogICAgIGJvb2wgaXNCb29s
ZWFuQ2xhc3MoKSBjb25zdDsKSW5kZXg6IFNvdXJjZS9XZWJDb3JlL2JyaWRnZS9qbmkvanNjL0ph
dmFJbnN0YW5jZUpTQy5jcHAKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL1dlYkNvcmUvYnJpZGdlL2pu
aS9qc2MvSmF2YUluc3RhbmNlSlNDLmNwcAkocmV2aXNpb24gMTE2NjY3KQorKysgU291cmNlL1dl
YkNvcmUvYnJpZGdlL2puaS9qc2MvSmF2YUluc3RhbmNlSlNDLmNwcAkod29ya2luZyBjb3B5KQpA
QCAtMTE4LDcgKzExOCw3IEBAIGNsYXNzIEphdmFSdW50aW1lTWV0aG9kIDogcHVibGljIFJ1bnRp
bWUKIHB1YmxpYzoKICAgICB0eXBlZGVmIFJ1bnRpbWVNZXRob2QgQmFzZTsKIAotICAgIHN0YXRp
YyBKYXZhUnVudGltZU1ldGhvZCogY3JlYXRlKEV4ZWNTdGF0ZSogZXhlYywgSlNHbG9iYWxPYmpl
Y3QqIGdsb2JhbE9iamVjdCwgY29uc3QgSWRlbnRpZmllciYgbmFtZSwgQmluZGluZ3M6Ok1ldGhv
ZExpc3QmIGxpc3QpCisgICAgc3RhdGljIEphdmFSdW50aW1lTWV0aG9kKiBjcmVhdGUoRXhlY1N0
YXRlKiBleGVjLCBKU0dsb2JhbE9iamVjdCogZ2xvYmFsT2JqZWN0LCBjb25zdCBVU3RyaW5nJiBu
YW1lLCBCaW5kaW5nczo6TWV0aG9kTGlzdCYgbGlzdCkKICAgICB7CiAgICAgICAgIC8vIEZJWE1F
OiBkZXByZWNhdGVkR2V0RE9NU3RydWN0dXJlIHVzZXMgdGhlIHByb3RvdHlwZSBvZmYgb2YgdGhl
IHdyb25nIGdsb2JhbCBvYmplY3QKICAgICAgICAgLy8gV2UgbmVlZCB0byBwYXNzIGluIHRoZSBy
aWdodCBnbG9iYWwgb2JqZWN0IGZvciAiaSIuCkBAIC0xNDEsNyArMTQxLDcgQEAgcHJpdmF0ZToK
ICAgICB7CiAgICAgfQogCi0gICAgdm9pZCBmaW5pc2hDcmVhdGlvbihKU0dsb2JhbERhdGEmIGds
b2JhbERhdGEsIGNvbnN0IElkZW50aWZpZXImIG5hbWUpCisgICAgdm9pZCBmaW5pc2hDcmVhdGlv
bihKU0dsb2JhbERhdGEmIGdsb2JhbERhdGEsIGNvbnN0IFVTdHJpbmcmIG5hbWUpCiAgICAgewog
ICAgICAgICBCYXNlOjpmaW5pc2hDcmVhdGlvbihnbG9iYWxEYXRhLCBuYW1lKTsKICAgICAgICAg
QVNTRVJUKGluaGVyaXRzKCZzX2luZm8pKTsKQEAgLTE1MCwxMCArMTUwLDEwIEBAIHByaXZhdGU6
CiAKIGNvbnN0IENsYXNzSW5mbyBKYXZhUnVudGltZU1ldGhvZDo6c19pbmZvID0geyAiSmF2YVJ1
bnRpbWVNZXRob2QiLCAmUnVudGltZU1ldGhvZDo6c19pbmZvLCAwLCAwLCBDUkVBVEVfTUVUSE9E
X1RBQkxFKEphdmFSdW50aW1lTWV0aG9kKSB9OwogCi1KU1ZhbHVlIEphdmFJbnN0YW5jZTo6Z2V0
TWV0aG9kKEV4ZWNTdGF0ZSogZXhlYywgY29uc3QgSWRlbnRpZmllciYgcHJvcGVydHlOYW1lKQor
SlNWYWx1ZSBKYXZhSW5zdGFuY2U6OmdldE1ldGhvZChFeGVjU3RhdGUqIGV4ZWMsIFByb3BlcnR5
TmFtZSBwcm9wZXJ0eU5hbWUpCiB7CiAgICAgTWV0aG9kTGlzdCBtZXRob2RMaXN0ID0gZ2V0Q2xh
c3MoKS0+bWV0aG9kc05hbWVkKHByb3BlcnR5TmFtZSwgdGhpcyk7Ci0gICAgcmV0dXJuIEphdmFS
dW50aW1lTWV0aG9kOjpjcmVhdGUoZXhlYywgZXhlYy0+bGV4aWNhbEdsb2JhbE9iamVjdCgpLCBw
cm9wZXJ0eU5hbWUsIG1ldGhvZExpc3QpOworICAgIHJldHVybiBKYXZhUnVudGltZU1ldGhvZDo6
Y3JlYXRlKGV4ZWMsIGV4ZWMtPmxleGljYWxHbG9iYWxPYmplY3QoKSwgcHJvcGVydHlOYW1lLnVz
dHJpbmcoKSwgbWV0aG9kTGlzdCk7CiB9CiAKIEpTVmFsdWUgSmF2YUluc3RhbmNlOjppbnZva2VN
ZXRob2QoRXhlY1N0YXRlKiBleGVjLCBSdW50aW1lTWV0aG9kKiBydW50aW1lTWV0aG9kKQpJbmRl
eDogU291cmNlL1dlYkNvcmUvYnJpZGdlL2puaS9qc2MvSmF2YUluc3RhbmNlSlNDLmgKPT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PQotLS0gU291cmNlL1dlYkNvcmUvYnJpZGdlL2puaS9qc2MvSmF2YUluc3RhbmNlSlNDLmgJ
KHJldmlzaW9uIDExNjY2NykKKysrIFNvdXJjZS9XZWJDb3JlL2JyaWRnZS9qbmkvanNjL0phdmFJ
bnN0YW5jZUpTQy5oCSh3b3JraW5nIGNvcHkpCkBAIC01Myw4ICs1Myw4IEBAIHB1YmxpYzoKICAg
ICB2aXJ0dWFsIEpTVmFsdWUgdmFsdWVPZihFeGVjU3RhdGUqKSBjb25zdDsKICAgICB2aXJ0dWFs
IEpTVmFsdWUgZGVmYXVsdFZhbHVlKEV4ZWNTdGF0ZSosIFByZWZlcnJlZFByaW1pdGl2ZVR5cGUp
IGNvbnN0OwogCi0gICAgdmlydHVhbCBKU1ZhbHVlIGdldE1ldGhvZChFeGVjU3RhdGUqIGV4ZWMs
IGNvbnN0IElkZW50aWZpZXImIHByb3BlcnR5TmFtZSk7Ci0gICAgdmlydHVhbCBKU1ZhbHVlIGlu
dm9rZU1ldGhvZChFeGVjU3RhdGUqIGV4ZWMsIFJ1bnRpbWVNZXRob2QqIG1ldGhvZCk7CisgICAg
dmlydHVhbCBKU1ZhbHVlIGdldE1ldGhvZChFeGVjU3RhdGUqLCBQcm9wZXJ0eU5hbWUpOworICAg
IHZpcnR1YWwgSlNWYWx1ZSBpbnZva2VNZXRob2QoRXhlY1N0YXRlKiwgUnVudGltZU1ldGhvZCop
OwogCiAgICAgam9iamVjdCBqYXZhSW5zdGFuY2UoKSBjb25zdCB7IHJldHVybiBtX2luc3RhbmNl
LT5pbnN0YW5jZSgpOyB9CiAKSW5kZXg6IFNvdXJjZS9XZWJDb3JlL2JyaWRnZS9qc2MvQnJpZGdl
SlNDLmgKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PQotLS0gU291cmNlL1dlYkNvcmUvYnJpZGdlL2pzYy9CcmlkZ2VKU0Mu
aAkocmV2aXNpb24gMTE2NjY3KQorKysgU291cmNlL1dlYkNvcmUvYnJpZGdlL2pzYy9CcmlkZ2VK
U0MuaAkod29ya2luZyBjb3B5KQpAQCAtNjIsOSArNjIsOSBAQCBjbGFzcyBDbGFzcyB7CiAgICAg
V1RGX01BS0VfTk9OQ09QWUFCTEUoQ2xhc3MpOyBXVEZfTUFLRV9GQVNUX0FMTE9DQVRFRDsKIHB1
YmxpYzoKICAgICBDbGFzcygpIHsgfQotICAgIHZpcnR1YWwgTWV0aG9kTGlzdCBtZXRob2RzTmFt
ZWQoY29uc3QgSWRlbnRpZmllciYsIEluc3RhbmNlKikgY29uc3QgPSAwOwotICAgIHZpcnR1YWwg
RmllbGQqIGZpZWxkTmFtZWQoY29uc3QgSWRlbnRpZmllciYsIEluc3RhbmNlKikgY29uc3QgPSAw
OwotICAgIHZpcnR1YWwgSlNWYWx1ZSBmYWxsYmFja09iamVjdChFeGVjU3RhdGUqLCBJbnN0YW5j
ZSosIGNvbnN0IElkZW50aWZpZXImKSB7IHJldHVybiBqc1VuZGVmaW5lZCgpOyB9CisgICAgdmly
dHVhbCBNZXRob2RMaXN0IG1ldGhvZHNOYW1lZChQcm9wZXJ0eU5hbWUsIEluc3RhbmNlKikgY29u
c3QgPSAwOworICAgIHZpcnR1YWwgRmllbGQqIGZpZWxkTmFtZWQoUHJvcGVydHlOYW1lLCBJbnN0
YW5jZSopIGNvbnN0ID0gMDsKKyAgICB2aXJ0dWFsIEpTVmFsdWUgZmFsbGJhY2tPYmplY3QoRXhl
Y1N0YXRlKiwgSW5zdGFuY2UqLCBQcm9wZXJ0eU5hbWUpIHsgcmV0dXJuIGpzVW5kZWZpbmVkKCk7
IH0KIAogICAgIHZpcnR1YWwgfkNsYXNzKCkgeyB9CiB9OwpAQCAtODksOSArODksOSBAQCBwdWJs
aWM6CiAgICAgdm9pZCB3aWxsSW52YWxpZGF0ZVJ1bnRpbWVPYmplY3QoKTsKIAogICAgIC8vIFJl
dHVybnMgZmFsc2UgaWYgdGhlIHZhbHVlIHdhcyBub3Qgc2V0IHN1Y2Nlc3NmdWxseS4KLSAgICB2
aXJ0dWFsIGJvb2wgc2V0VmFsdWVPZlVuZGVmaW5lZEZpZWxkKEV4ZWNTdGF0ZSosIGNvbnN0IElk
ZW50aWZpZXImLCBKU1ZhbHVlKSB7IHJldHVybiBmYWxzZTsgfQorICAgIHZpcnR1YWwgYm9vbCBz
ZXRWYWx1ZU9mVW5kZWZpbmVkRmllbGQoRXhlY1N0YXRlKiwgUHJvcGVydHlOYW1lLCBKU1ZhbHVl
KSB7IHJldHVybiBmYWxzZTsgfQogCi0gICAgdmlydHVhbCBKU1ZhbHVlIGdldE1ldGhvZChFeGVj
U3RhdGUqIGV4ZWMsIGNvbnN0IElkZW50aWZpZXImIHByb3BlcnR5TmFtZSkgPSAwOworICAgIHZp
cnR1YWwgSlNWYWx1ZSBnZXRNZXRob2QoRXhlY1N0YXRlKiwgUHJvcGVydHlOYW1lKSA9IDA7CiAg
ICAgdmlydHVhbCBKU1ZhbHVlIGludm9rZU1ldGhvZChFeGVjU3RhdGUqLCBSdW50aW1lTWV0aG9k
KiBtZXRob2QpID0gMDsKIAogICAgIHZpcnR1YWwgYm9vbCBzdXBwb3J0c0ludm9rZURlZmF1bHRN
ZXRob2QoKSBjb25zdCB7IHJldHVybiBmYWxzZTsgfQpAQCAtMTEwLDkgKzExMCw5IEBAIHB1Ymxp
YzoKIAogICAgIHZpcnR1YWwgfkluc3RhbmNlKCk7CiAKLSAgICB2aXJ0dWFsIGJvb2wgZ2V0T3du
UHJvcGVydHlTbG90KEpTT2JqZWN0KiwgRXhlY1N0YXRlKiwgY29uc3QgSWRlbnRpZmllciYsIFBy
b3BlcnR5U2xvdCYpIHsgcmV0dXJuIGZhbHNlOyB9Ci0gICAgdmlydHVhbCBib29sIGdldE93blBy
b3BlcnR5RGVzY3JpcHRvcihKU09iamVjdCosIEV4ZWNTdGF0ZSosIGNvbnN0IElkZW50aWZpZXIm
LCBQcm9wZXJ0eURlc2NyaXB0b3ImKSB7IHJldHVybiBmYWxzZTsgfQotICAgIHZpcnR1YWwgdm9p
ZCBwdXQoSlNPYmplY3QqLCBFeGVjU3RhdGUqLCBjb25zdCBJZGVudGlmaWVyJiwgSlNWYWx1ZSwg
UHV0UHJvcGVydHlTbG90JikgeyB9CisgICAgdmlydHVhbCBib29sIGdldE93blByb3BlcnR5U2xv
dChKU09iamVjdCosIEV4ZWNTdGF0ZSosIFByb3BlcnR5TmFtZSwgUHJvcGVydHlTbG90JikgeyBy
ZXR1cm4gZmFsc2U7IH0KKyAgICB2aXJ0dWFsIGJvb2wgZ2V0T3duUHJvcGVydHlEZXNjcmlwdG9y
KEpTT2JqZWN0KiwgRXhlY1N0YXRlKiwgUHJvcGVydHlOYW1lLCBQcm9wZXJ0eURlc2NyaXB0b3Im
KSB7IHJldHVybiBmYWxzZTsgfQorICAgIHZpcnR1YWwgdm9pZCBwdXQoSlNPYmplY3QqLCBFeGVj
U3RhdGUqLCBQcm9wZXJ0eU5hbWUsIEpTVmFsdWUsIFB1dFByb3BlcnR5U2xvdCYpIHsgfQogCiBw
cm90ZWN0ZWQ6CiAgICAgdmlydHVhbCB2b2lkIHZpcnR1YWxCZWdpbigpIHsgfQpJbmRleDogU291
cmNlL1dlYkNvcmUvYnJpZGdlL29iamMvb2JqY19jbGFzcy5oCj09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJj
ZS9XZWJDb3JlL2JyaWRnZS9vYmpjL29iamNfY2xhc3MuaAkocmV2aXNpb24gMTE2NjY3KQorKysg
U291cmNlL1dlYkNvcmUvYnJpZGdlL29iamMvb2JqY19jbGFzcy5oCSh3b3JraW5nIGNvcHkpCkBA
IC00MSwxMCArNDEsMTAgQEAgcHVibGljOgogICAgIC8vIFJldHVybiB0aGUgY2FjaGVkIE9iakMg
b2YgdGhlIHNwZWNpZmllZCBuYW1lLgogICAgIHN0YXRpYyBPYmpjQ2xhc3MgKmNsYXNzRm9ySXNB
KENsYXNzU3RydWN0UHRyKTsKICAgICAKLSAgICB2aXJ0dWFsIE1ldGhvZExpc3QgbWV0aG9kc05h
bWVkKGNvbnN0IElkZW50aWZpZXImLCBJbnN0YW5jZSAqaW5zdGFuY2UpIGNvbnN0OwotICAgIHZp
cnR1YWwgRmllbGQgKmZpZWxkTmFtZWQoY29uc3QgSWRlbnRpZmllciYsIEluc3RhbmNlICppbnN0
YW5jZSkgY29uc3Q7CisgICAgdmlydHVhbCBNZXRob2RMaXN0IG1ldGhvZHNOYW1lZChQcm9wZXJ0
eU5hbWUsIEluc3RhbmNlKikgY29uc3Q7CisgICAgdmlydHVhbCBGaWVsZCAqZmllbGROYW1lZChQ
cm9wZXJ0eU5hbWUsIEluc3RhbmNlKikgY29uc3Q7CiAKLSAgICB2aXJ0dWFsIEpTVmFsdWUgZmFs
bGJhY2tPYmplY3QoRXhlY1N0YXRlICpleGVjLCBJbnN0YW5jZSAqaW5zdGFuY2UsIGNvbnN0IElk
ZW50aWZpZXIgJnByb3BlcnR5TmFtZSk7CisgICAgdmlydHVhbCBKU1ZhbHVlIGZhbGxiYWNrT2Jq
ZWN0KEV4ZWNTdGF0ZSosIEluc3RhbmNlKiwgUHJvcGVydHlOYW1lKTsKICAgICAKICAgICBDbGFz
c1N0cnVjdFB0ciBpc2EoKSB7IHJldHVybiBfaXNhOyB9CiAgICAgCkluZGV4OiBTb3VyY2UvV2Vi
Q29yZS9icmlkZ2Uvb2JqYy9vYmpjX2NsYXNzLm1tCj09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9XZWJD
b3JlL2JyaWRnZS9vYmpjL29iamNfY2xhc3MubW0JKHJldmlzaW9uIDExNjY2NykKKysrIFNvdXJj
ZS9XZWJDb3JlL2JyaWRnZS9vYmpjL29iamNfY2xhc3MubW0JKHdvcmtpbmcgY29weSkKQEAgLTk1
LDcgKzk1LDcgQEAgc3RhdGljIGlubGluZSB2b2lkIGNvbnZlcnRKU01ldGhvZE5hbWVUbwogICAg
IH0KIH0KIAotTWV0aG9kTGlzdCBPYmpjQ2xhc3M6Om1ldGhvZHNOYW1lZChjb25zdCBJZGVudGlm
aWVyJiBpZGVudGlmaWVyLCBJbnN0YW5jZSopIGNvbnN0CitNZXRob2RMaXN0IE9iamNDbGFzczo6
bWV0aG9kc05hbWVkKFByb3BlcnR5TmFtZSBpZGVudGlmaWVyLCBJbnN0YW5jZSopIGNvbnN0CiB7
CiAgICAgTWV0aG9kTGlzdCBtZXRob2RMaXN0OwogICAgIGlmIChNZXRob2QqIG1ldGhvZCA9IG1f
bWV0aG9kQ2FjaGUuZ2V0KGlkZW50aWZpZXIuaW1wbCgpKSkgewpAQCAtMTAzLDcgKzEwMyw3IEBA
IE1ldGhvZExpc3QgT2JqY0NsYXNzOjptZXRob2RzTmFtZWQoY29uc3QKICAgICAgICAgcmV0dXJu
IG1ldGhvZExpc3Q7CiAgICAgfQogCi0gICAgQ1N0cmluZyBqc05hbWUgPSBpZGVudGlmaWVyLmFz
Y2lpKCk7CisgICAgQ1N0cmluZyBqc05hbWUgPSBpZGVudGlmaWVyLnVzdHJpbmcoKS5hc2NpaSgp
OwogICAgIEpTTmFtZUNvbnZlcnNpb25CdWZmZXIgYnVmZmVyOwogICAgIGNvbnZlcnRKU01ldGhv
ZE5hbWVUb09iamMoanNOYW1lLCBidWZmZXIpOwogICAgIFJldGFpblB0cjxDRlN0cmluZ1JlZj4g
bWV0aG9kTmFtZShBZG9wdENGLCBDRlN0cmluZ0NyZWF0ZVdpdGhDU3RyaW5nKE5VTEwsIGJ1ZmZl
ci5kYXRhKCksIGtDRlN0cmluZ0VuY29kaW5nQVNDSUkpKTsKQEAgLTE0Myw3ICsxNDMsNyBAQCBN
ZXRob2RMaXN0IE9iamNDbGFzczo6bWV0aG9kc05hbWVkKGNvbnN0CiAgICAgcmV0dXJuIG1ldGhv
ZExpc3Q7CiB9CiAKLUZpZWxkKiBPYmpjQ2xhc3M6OmZpZWxkTmFtZWQoY29uc3QgSWRlbnRpZmll
ciYgaWRlbnRpZmllciwgSW5zdGFuY2UqIGluc3RhbmNlKSBjb25zdAorRmllbGQqIE9iamNDbGFz
czo6ZmllbGROYW1lZChQcm9wZXJ0eU5hbWUgaWRlbnRpZmllciwgSW5zdGFuY2UqIGluc3RhbmNl
KSBjb25zdAogewogICAgIEZpZWxkKiBmaWVsZCA9IG1fZmllbGRDYWNoZS5nZXQoaWRlbnRpZmll
ci5pbXBsKCkpOwogICAgIGlmIChmaWVsZCkKQEAgLTE1MSw3ICsxNTEsNyBAQCBGaWVsZCogT2Jq
Y0NsYXNzOjpmaWVsZE5hbWVkKGNvbnN0IElkZW50CiAKICAgICBDbGFzc1N0cnVjdFB0ciB0aGlz
Q2xhc3MgPSBfaXNhOwogCi0gICAgQ1N0cmluZyBqc05hbWUgPSBpZGVudGlmaWVyLmFzY2lpKCk7
CisgICAgQ1N0cmluZyBqc05hbWUgPSBpZGVudGlmaWVyLnVzdHJpbmcoKS5hc2NpaSgpOwogICAg
IFJldGFpblB0cjxDRlN0cmluZ1JlZj4gZmllbGROYW1lKEFkb3B0Q0YsIENGU3RyaW5nQ3JlYXRl
V2l0aENTdHJpbmcoTlVMTCwganNOYW1lLmRhdGEoKSwga0NGU3RyaW5nRW5jb2RpbmdBU0NJSSkp
OwogICAgIGlkIHRhcmdldE9iamVjdCA9IChzdGF0aWNfY2FzdDxPYmpjSW5zdGFuY2UqPihpbnN0
YW5jZSkpLT5nZXRPYmplY3QoKTsKICAgICBpZCBhdHRyaWJ1dGVzID0gW3RhcmdldE9iamVjdCBh
dHRyaWJ1dGVLZXlzXTsKQEAgLTIyMSwxNCArMjIxLDE0IEBAIEZpZWxkKiBPYmpjQ2xhc3M6OmZp
ZWxkTmFtZWQoY29uc3QgSWRlbnQKICAgICByZXR1cm4gZmllbGQ7CiB9CiAKLUpTVmFsdWUgT2Jq
Y0NsYXNzOjpmYWxsYmFja09iamVjdChFeGVjU3RhdGUqIGV4ZWMsIEluc3RhbmNlKiBpbnN0YW5j
ZSwgY29uc3QgSWRlbnRpZmllciAmcHJvcGVydHlOYW1lKQorSlNWYWx1ZSBPYmpjQ2xhc3M6OmZh
bGxiYWNrT2JqZWN0KEV4ZWNTdGF0ZSogZXhlYywgSW5zdGFuY2UqIGluc3RhbmNlLCBQcm9wZXJ0
eU5hbWUgcHJvcGVydHlOYW1lKQogewogICAgIE9iamNJbnN0YW5jZSogb2JqY0luc3RhbmNlID0g
c3RhdGljX2Nhc3Q8T2JqY0luc3RhbmNlKj4oaW5zdGFuY2UpOwogICAgIGlkIHRhcmdldE9iamVj
dCA9IG9iamNJbnN0YW5jZS0+Z2V0T2JqZWN0KCk7CiAgICAgCiAgICAgaWYgKCFbdGFyZ2V0T2Jq
ZWN0IHJlc3BvbmRzVG9TZWxlY3RvcjpAc2VsZWN0b3IoaW52b2tlVW5kZWZpbmVkTWV0aG9kRnJv
bVdlYlNjcmlwdDp3aXRoQXJndW1lbnRzOildKQogICAgICAgICByZXR1cm4ganNVbmRlZmluZWQo
KTsKLSAgICByZXR1cm4gT2JqY0ZhbGxiYWNrT2JqZWN0SW1wOjpjcmVhdGUoZXhlYywgZXhlYy0+
bGV4aWNhbEdsb2JhbE9iamVjdCgpLCBvYmpjSW5zdGFuY2UsIHByb3BlcnR5TmFtZSk7CisgICAg
cmV0dXJuIE9iamNGYWxsYmFja09iamVjdEltcDo6Y3JlYXRlKGV4ZWMsIGV4ZWMtPmxleGljYWxH
bG9iYWxPYmplY3QoKSwgb2JqY0luc3RhbmNlLCBwcm9wZXJ0eU5hbWUuaW1wbCgpKTsKIH0KIAog
fQpJbmRleDogU291cmNlL1dlYkNvcmUvYnJpZGdlL29iamMvb2JqY19pbnN0YW5jZS5oCj09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT0KLS0tIFNvdXJjZS9XZWJDb3JlL2JyaWRnZS9vYmpjL29iamNfaW5zdGFuY2UuaAkocmV2
aXNpb24gMTE2NjY3KQorKysgU291cmNlL1dlYkNvcmUvYnJpZGdlL29iamMvb2JqY19pbnN0YW5j
ZS5oCSh3b3JraW5nIGNvcHkpCkBAIC00NywxNCArNDcsMTQgQEAgcHVibGljOgogICAgIHZpcnR1
YWwgSlNWYWx1ZSB2YWx1ZU9mKEV4ZWNTdGF0ZSopIGNvbnN0OwogICAgIHZpcnR1YWwgSlNWYWx1
ZSBkZWZhdWx0VmFsdWUoRXhlY1N0YXRlKiwgUHJlZmVycmVkUHJpbWl0aXZlVHlwZSkgY29uc3Q7
CiAKLSAgICB2aXJ0dWFsIEpTVmFsdWUgZ2V0TWV0aG9kKEV4ZWNTdGF0ZSogZXhlYywgY29uc3Qg
SWRlbnRpZmllciYgcHJvcGVydHlOYW1lKTsKKyAgICB2aXJ0dWFsIEpTVmFsdWUgZ2V0TWV0aG9k
KEV4ZWNTdGF0ZSosIFByb3BlcnR5TmFtZSk7CiAgICAgSlNWYWx1ZSBpbnZva2VPYmpjTWV0aG9k
KEV4ZWNTdGF0ZSosIE9iamNNZXRob2QqIG1ldGhvZCk7CiAgICAgdmlydHVhbCBKU1ZhbHVlIGlu
dm9rZU1ldGhvZChFeGVjU3RhdGUqLCBSdW50aW1lTWV0aG9kKiBtZXRob2QpOwogICAgIHZpcnR1
YWwgYm9vbCBzdXBwb3J0c0ludm9rZURlZmF1bHRNZXRob2QoKSBjb25zdDsKICAgICB2aXJ0dWFs
IEpTVmFsdWUgaW52b2tlRGVmYXVsdE1ldGhvZChFeGVjU3RhdGUqKTsKIAotICAgIEpTVmFsdWUg
Z2V0VmFsdWVPZlVuZGVmaW5lZEZpZWxkKEV4ZWNTdGF0ZSosIGNvbnN0IElkZW50aWZpZXImKSBj
b25zdDsKLSAgICB2aXJ0dWFsIGJvb2wgc2V0VmFsdWVPZlVuZGVmaW5lZEZpZWxkKEV4ZWNTdGF0
ZSosIGNvbnN0IElkZW50aWZpZXImLCBKU1ZhbHVlKTsKKyAgICBKU1ZhbHVlIGdldFZhbHVlT2ZV
bmRlZmluZWRGaWVsZChFeGVjU3RhdGUqLCBQcm9wZXJ0eU5hbWUpIGNvbnN0OworICAgIHZpcnR1
YWwgYm9vbCBzZXRWYWx1ZU9mVW5kZWZpbmVkRmllbGQoRXhlY1N0YXRlKiwgUHJvcGVydHlOYW1l
LCBKU1ZhbHVlKTsKIAogICAgIE9iamVjdFN0cnVjdFB0ciBnZXRPYmplY3QoKSBjb25zdCB7IHJl
dHVybiBfaW5zdGFuY2UuZ2V0KCk7IH0KICAgICAKSW5kZXg6IFNvdXJjZS9XZWJDb3JlL2JyaWRn
ZS9vYmpjL29iamNfaW5zdGFuY2UubW0KPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL1dlYkNvcmUvYnJp
ZGdlL29iamMvb2JqY19pbnN0YW5jZS5tbQkocmV2aXNpb24gMTE2NjY3KQorKysgU291cmNlL1dl
YkNvcmUvYnJpZGdlL29iamMvb2JqY19pbnN0YW5jZS5tbQkod29ya2luZyBjb3B5KQpAQCAtMTgx
LDcgKzE4MSw3IEBAIGJvb2wgT2JqY0luc3RhbmNlOjpzdXBwb3J0c0ludm9rZURlZmF1bHQKIAog
Y2xhc3MgT2JqQ1J1bnRpbWVNZXRob2QgOiBwdWJsaWMgUnVudGltZU1ldGhvZCB7CiBwdWJsaWM6
Ci0gICAgc3RhdGljIE9iakNSdW50aW1lTWV0aG9kKiBjcmVhdGUoRXhlY1N0YXRlKiBleGVjLCBK
U0dsb2JhbE9iamVjdCogZ2xvYmFsT2JqZWN0LCBjb25zdCBJZGVudGlmaWVyJiBuYW1lLCBCaW5k
aW5nczo6TWV0aG9kTGlzdCYgbGlzdCkKKyAgICBzdGF0aWMgT2JqQ1J1bnRpbWVNZXRob2QqIGNy
ZWF0ZShFeGVjU3RhdGUqIGV4ZWMsIEpTR2xvYmFsT2JqZWN0KiBnbG9iYWxPYmplY3QsIGNvbnN0
IFVTdHJpbmcmIG5hbWUsIEJpbmRpbmdzOjpNZXRob2RMaXN0JiBsaXN0KQogICAgIHsKICAgICAg
ICAgLy8gRklYTUU6IGRlcHJlY2F0ZWRHZXRET01TdHJ1Y3R1cmUgdXNlcyB0aGUgcHJvdG90eXBl
IG9mZiBvZiB0aGUgd3JvbmcgZ2xvYmFsIG9iamVjdAogICAgICAgICAvLyBXZSBuZWVkIHRvIHBh
c3MgaW4gdGhlIHJpZ2h0IGdsb2JhbCBvYmplY3QgZm9yICJpIi4KQEAgLTIwNiw3ICsyMDYsNyBA
QCBwcml2YXRlOgogICAgIHsKICAgICB9CiAKLSAgICB2b2lkIGZpbmlzaENyZWF0aW9uKEpTR2xv
YmFsRGF0YSYgZ2xvYmFsRGF0YSwgY29uc3QgSWRlbnRpZmllciYgbmFtZSkKKyAgICB2b2lkIGZp
bmlzaENyZWF0aW9uKEpTR2xvYmFsRGF0YSYgZ2xvYmFsRGF0YSwgY29uc3QgVVN0cmluZyYgbmFt
ZSkKICAgICB7CiAgICAgICAgIEJhc2U6OmZpbmlzaENyZWF0aW9uKGdsb2JhbERhdGEsIG5hbWUp
OwogICAgICAgICBBU1NFUlQoaW5oZXJpdHMoJnNfaW5mbykpOwpAQCAtMjE1LDEwICsyMTUsMTAg
QEAgcHJpdmF0ZToKIAogY29uc3QgQ2xhc3NJbmZvIE9iakNSdW50aW1lTWV0aG9kOjpzX2luZm8g
PSB7ICJPYmpDUnVudGltZU1ldGhvZCIsICZSdW50aW1lTWV0aG9kOjpzX2luZm8sIDAsIDAsIENS
RUFURV9NRVRIT0RfVEFCTEUoT2JqQ1J1bnRpbWVNZXRob2QpIH07CiAKLUpTVmFsdWUgT2JqY0lu
c3RhbmNlOjpnZXRNZXRob2QoRXhlY1N0YXRlKiBleGVjLCBjb25zdCBJZGVudGlmaWVyJiBwcm9w
ZXJ0eU5hbWUpCitKU1ZhbHVlIE9iamNJbnN0YW5jZTo6Z2V0TWV0aG9kKEV4ZWNTdGF0ZSogZXhl
YywgUHJvcGVydHlOYW1lIHByb3BlcnR5TmFtZSkKIHsKICAgICBNZXRob2RMaXN0IG1ldGhvZExp
c3QgPSBnZXRDbGFzcygpLT5tZXRob2RzTmFtZWQocHJvcGVydHlOYW1lLCB0aGlzKTsKLSAgICBy
ZXR1cm4gT2JqQ1J1bnRpbWVNZXRob2Q6OmNyZWF0ZShleGVjLCBleGVjLT5sZXhpY2FsR2xvYmFs
T2JqZWN0KCksIHByb3BlcnR5TmFtZSwgbWV0aG9kTGlzdCk7CisgICAgcmV0dXJuIE9iakNSdW50
aW1lTWV0aG9kOjpjcmVhdGUoZXhlYywgZXhlYy0+bGV4aWNhbEdsb2JhbE9iamVjdCgpLCBwcm9w
ZXJ0eU5hbWUudXN0cmluZygpLCBtZXRob2RMaXN0KTsKIH0KIAogSlNWYWx1ZSBPYmpjSW5zdGFu
Y2U6Omludm9rZU1ldGhvZChFeGVjU3RhdGUqIGV4ZWMsIFJ1bnRpbWVNZXRob2QqIHJ1bnRpbWVN
ZXRob2QpCkBAIC00MDEsNyArNDAxLDcgQEAgSlNWYWx1ZSBPYmpjSW5zdGFuY2U6Omludm9rZURl
ZmF1bHRNZXRobwogICAgIHJldHVybiBjb25zdF9jYXN0PEpTVmFsdWUmPihyZXN1bHQpOwogfQog
Ci1ib29sIE9iamNJbnN0YW5jZTo6c2V0VmFsdWVPZlVuZGVmaW5lZEZpZWxkKEV4ZWNTdGF0ZSog
ZXhlYywgY29uc3QgSWRlbnRpZmllciYgcHJvcGVydHksIEpTVmFsdWUgYVZhbHVlKQorYm9vbCBP
YmpjSW5zdGFuY2U6OnNldFZhbHVlT2ZVbmRlZmluZWRGaWVsZChFeGVjU3RhdGUqIGV4ZWMsIFBy
b3BlcnR5TmFtZSBwcm9wZXJ0eSwgSlNWYWx1ZSBhVmFsdWUpCiB7CiAgICAgaWQgdGFyZ2V0T2Jq
ZWN0ID0gZ2V0T2JqZWN0KCk7CiAgICAgaWYgKCFbdGFyZ2V0T2JqZWN0IHJlc3BvbmRzVG9TZWxl
Y3RvcjpAc2VsZWN0b3Ioc2V0VmFsdWU6Zm9yVW5kZWZpbmVkS2V5OildKQpAQCAtNDE4LDcgKzQx
OCw3IEBAIGJvb2wgT2JqY0luc3RhbmNlOjpzZXRWYWx1ZU9mVW5kZWZpbmVkRmkKICAgICAgICAg
T2JqY1ZhbHVlIG9iamNWYWx1ZSA9IGNvbnZlcnRWYWx1ZVRvT2JqY1ZhbHVlKGV4ZWMsIGFWYWx1
ZSwgT2JqY09iamVjdFR5cGUpOwogCiAgICAgICAgIEB0cnkgewotICAgICAgICAgICAgW3Rhcmdl
dE9iamVjdCBzZXRWYWx1ZTpvYmpjVmFsdWUub2JqZWN0VmFsdWUgZm9yVW5kZWZpbmVkS2V5OltO
U1N0cmluZyBzdHJpbmdXaXRoQ1N0cmluZzpwcm9wZXJ0eS5hc2NpaSgpLmRhdGEoKSBlbmNvZGlu
ZzpOU0FTQ0lJU3RyaW5nRW5jb2RpbmddXTsKKyAgICAgICAgICAgIFt0YXJnZXRPYmplY3Qgc2V0
VmFsdWU6b2JqY1ZhbHVlLm9iamVjdFZhbHVlIGZvclVuZGVmaW5lZEtleTpbTlNTdHJpbmcgc3Ry
aW5nV2l0aENTdHJpbmc6cHJvcGVydHkudXN0cmluZygpLmFzY2lpKCkuZGF0YSgpIGVuY29kaW5n
Ok5TQVNDSUlTdHJpbmdFbmNvZGluZ11dOwogICAgICAgICB9IEBjYXRjaChOU0V4Y2VwdGlvbiog
bG9jYWxFeGNlcHRpb24pIHsKICAgICAgICAgICAgIC8vIERvIG5vdGhpbmcuICBDbGFzcyBkaWQg
bm90IG92ZXJyaWRlIHZhbHVlRm9yVW5kZWZpbmVkS2V5Oi4KICAgICAgICAgfQpAQCAtNDI5LDcg
KzQyOSw3IEBAIGJvb2wgT2JqY0luc3RhbmNlOjpzZXRWYWx1ZU9mVW5kZWZpbmVkRmkKICAgICBy
ZXR1cm4gdHJ1ZTsKIH0KIAotSlNWYWx1ZSBPYmpjSW5zdGFuY2U6OmdldFZhbHVlT2ZVbmRlZmlu
ZWRGaWVsZChFeGVjU3RhdGUqIGV4ZWMsIGNvbnN0IElkZW50aWZpZXImIHByb3BlcnR5KSBjb25z
dAorSlNWYWx1ZSBPYmpjSW5zdGFuY2U6OmdldFZhbHVlT2ZVbmRlZmluZWRGaWVsZChFeGVjU3Rh
dGUqIGV4ZWMsIFByb3BlcnR5TmFtZSBwcm9wZXJ0eSkgY29uc3QKIHsKICAgICBKU1ZhbHVlIHJl
c3VsdCA9IGpzVW5kZWZpbmVkKCk7CiAgICAgCkBAIC00NDQsNyArNDQ0LDcgQEAgSlNWYWx1ZSBP
YmpjSW5zdGFuY2U6OmdldFZhbHVlT2ZVbmRlZmluZQogICAgICAgICBzZXRHbG9iYWxFeGNlcHRp
b24obmlsKTsKICAgICAKICAgICAgICAgQHRyeSB7Ci0gICAgICAgICAgICBpZCBvYmpjVmFsdWUg
PSBbdGFyZ2V0T2JqZWN0IHZhbHVlRm9yVW5kZWZpbmVkS2V5OltOU1N0cmluZyBzdHJpbmdXaXRo
Q1N0cmluZzpwcm9wZXJ0eS5hc2NpaSgpLmRhdGEoKSBlbmNvZGluZzpOU0FTQ0lJU3RyaW5nRW5j
b2RpbmddXTsKKyAgICAgICAgICAgIGlkIG9iamNWYWx1ZSA9IFt0YXJnZXRPYmplY3QgdmFsdWVG
b3JVbmRlZmluZWRLZXk6W05TU3RyaW5nIHN0cmluZ1dpdGhDU3RyaW5nOnByb3BlcnR5LnVzdHJp
bmcoKS5hc2NpaSgpLmRhdGEoKSBlbmNvZGluZzpOU0FTQ0lJU3RyaW5nRW5jb2RpbmddXTsKICAg
ICAgICAgICAgIHJlc3VsdCA9IGNvbnZlcnRPYmpjVmFsdWVUb1ZhbHVlKGV4ZWMsICZvYmpjVmFs
dWUsIE9iamNPYmplY3RUeXBlLCBtX3Jvb3RPYmplY3QuZ2V0KCkpOwogICAgICAgICB9IEBjYXRj
aChOU0V4Y2VwdGlvbiogbG9jYWxFeGNlcHRpb24pIHsKICAgICAgICAgICAgIC8vIERvIG5vdGhp
bmcuICBDbGFzcyBkaWQgbm90IG92ZXJyaWRlIHZhbHVlRm9yVW5kZWZpbmVkS2V5Oi4KSW5kZXg6
IFNvdXJjZS9XZWJDb3JlL2JyaWRnZS9vYmpjL29iamNfcnVudGltZS5oCj09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0t
IFNvdXJjZS9XZWJDb3JlL2JyaWRnZS9vYmpjL29iamNfcnVudGltZS5oCShyZXZpc2lvbiAxMTY2
NjcpCisrKyBTb3VyY2UvV2ViQ29yZS9icmlkZ2Uvb2JqYy9vYmpjX3J1bnRpbWUuaAkod29ya2lu
ZyBjb3B5KQpAQCAtOTQsNyArOTQsNyBAQCBjbGFzcyBPYmpjRmFsbGJhY2tPYmplY3RJbXAgOiBw
dWJsaWMgSlNOCiBwdWJsaWM6CiAgICAgdHlwZWRlZiBKU05vbkZpbmFsT2JqZWN0IEJhc2U7CiAK
LSAgICBzdGF0aWMgT2JqY0ZhbGxiYWNrT2JqZWN0SW1wKiBjcmVhdGUoRXhlY1N0YXRlKiBleGVj
LCBKU0dsb2JhbE9iamVjdCogZ2xvYmFsT2JqZWN0LCBPYmpjSW5zdGFuY2UqIGluc3RhbmNlLCBj
b25zdCBJZGVudGlmaWVyJiBwcm9wZXJ0eU5hbWUpCisgICAgc3RhdGljIE9iamNGYWxsYmFja09i
amVjdEltcCogY3JlYXRlKEV4ZWNTdGF0ZSogZXhlYywgSlNHbG9iYWxPYmplY3QqIGdsb2JhbE9i
amVjdCwgT2JqY0luc3RhbmNlKiBpbnN0YW5jZSwgY29uc3QgVVN0cmluZyYgcHJvcGVydHlOYW1l
KQogICAgIHsKICAgICAgICAgLy8gRklYTUU6IGRlcHJlY2F0ZWRHZXRET01TdHJ1Y3R1cmUgdXNl
cyB0aGUgcHJvdG90eXBlIG9mZiBvZiB0aGUgd3JvbmcgZ2xvYmFsIG9iamVjdAogICAgICAgICBT
dHJ1Y3R1cmUqIGRvbVN0cnVjdHVyZSA9IFdlYkNvcmU6OmRlcHJlY2F0ZWRHZXRET01TdHJ1Y3R1
cmU8T2JqY0ZhbGxiYWNrT2JqZWN0SW1wPihleGVjKTsKQEAgLTEwNSw3ICsxMDUsNyBAQCBwdWJs
aWM6CiAKICAgICBzdGF0aWMgY29uc3QgQ2xhc3NJbmZvIHNfaW5mbzsKIAotICAgIGNvbnN0IElk
ZW50aWZpZXImIHByb3BlcnR5TmFtZSgpIGNvbnN0IHsgcmV0dXJuIF9pdGVtOyB9CisgICAgY29u
c3QgVVN0cmluZyYgcHJvcGVydHlOYW1lKCkgY29uc3QgeyByZXR1cm4gX2l0ZW07IH0KIAogICAg
IHN0YXRpYyBPYmplY3RQcm90b3R5cGUqIGNyZWF0ZVByb3RvdHlwZShFeGVjU3RhdGUqLCBKU0ds
b2JhbE9iamVjdCogZ2xvYmFsT2JqZWN0KQogICAgIHsKQEAgLTEyMSwyMCArMTIxLDIwIEBAIHBy
b3RlY3RlZDoKICAgICB2b2lkIGZpbmlzaENyZWF0aW9uKEpTR2xvYmFsT2JqZWN0Kik7CiAKIHBy
aXZhdGU6Ci0gICAgT2JqY0ZhbGxiYWNrT2JqZWN0SW1wKEpTR2xvYmFsT2JqZWN0KiwgU3RydWN0
dXJlKiwgT2JqY0luc3RhbmNlKiwgY29uc3QgSWRlbnRpZmllciYgcHJvcGVydHlOYW1lKTsKKyAg
ICBPYmpjRmFsbGJhY2tPYmplY3RJbXAoSlNHbG9iYWxPYmplY3QqLCBTdHJ1Y3R1cmUqLCBPYmpj
SW5zdGFuY2UqLCBjb25zdCBVU3RyaW5nJiBwcm9wZXJ0eU5hbWUpOwogICAgIHN0YXRpYyB2b2lk
IGRlc3Ryb3koSlNDZWxsKik7CiAgICAgc3RhdGljIGNvbnN0IHVuc2lnbmVkIFN0cnVjdHVyZUZs
YWdzID0gT3ZlcnJpZGVzR2V0T3duUHJvcGVydHlTbG90IHwgSlNPYmplY3Q6OlN0cnVjdHVyZUZs
YWdzOwotICAgIHN0YXRpYyBib29sIGdldE93blByb3BlcnR5U2xvdChKU0NlbGwqLCBFeGVjU3Rh
dGUqLCBjb25zdCBJZGVudGlmaWVyJiwgUHJvcGVydHlTbG90Jik7Ci0gICAgc3RhdGljIGJvb2wg
Z2V0T3duUHJvcGVydHlEZXNjcmlwdG9yKEpTT2JqZWN0KiwgRXhlY1N0YXRlKiwgY29uc3QgSWRl
bnRpZmllciYsIFByb3BlcnR5RGVzY3JpcHRvciYpOwotICAgIHN0YXRpYyB2b2lkIHB1dChKU0Nl
bGwqLCBFeGVjU3RhdGUqLCBjb25zdCBJZGVudGlmaWVyJiBwcm9wZXJ0eU5hbWUsIEpTVmFsdWUs
IFB1dFByb3BlcnR5U2xvdCYpOworICAgIHN0YXRpYyBib29sIGdldE93blByb3BlcnR5U2xvdChK
U0NlbGwqLCBFeGVjU3RhdGUqLCBQcm9wZXJ0eU5hbWUsIFByb3BlcnR5U2xvdCYpOworICAgIHN0
YXRpYyBib29sIGdldE93blByb3BlcnR5RGVzY3JpcHRvcihKU09iamVjdCosIEV4ZWNTdGF0ZSos
IFByb3BlcnR5TmFtZSwgUHJvcGVydHlEZXNjcmlwdG9yJik7CisgICAgc3RhdGljIHZvaWQgcHV0
KEpTQ2VsbCosIEV4ZWNTdGF0ZSosIFByb3BlcnR5TmFtZSwgSlNWYWx1ZSwgUHV0UHJvcGVydHlT
bG90Jik7CiAgICAgc3RhdGljIENhbGxUeXBlIGdldENhbGxEYXRhKEpTQ2VsbCosIENhbGxEYXRh
Jik7Ci0gICAgc3RhdGljIGJvb2wgZGVsZXRlUHJvcGVydHkoSlNDZWxsKiwgRXhlY1N0YXRlKiwg
Y29uc3QgSWRlbnRpZmllciYgcHJvcGVydHlOYW1lKTsKKyAgICBzdGF0aWMgYm9vbCBkZWxldGVQ
cm9wZXJ0eShKU0NlbGwqLCBFeGVjU3RhdGUqLCBQcm9wZXJ0eU5hbWUpOwogICAgIHN0YXRpYyBK
U1ZhbHVlIGRlZmF1bHRWYWx1ZShjb25zdCBKU09iamVjdCosIEV4ZWNTdGF0ZSosIFByZWZlcnJl
ZFByaW1pdGl2ZVR5cGUpOwogCiAgICAgYm9vbCB0b0Jvb2xlYW4oRXhlY1N0YXRlKikgY29uc3Q7
IC8vIEZJWE1FOiBDdXJyZW50bHkgdGhpcyBpcyBicm9rZW4gYmVjYXVzZSBub25lIG9mIHRoZSBz
dXBlcmNsYXNzZXMgYXJlIG1hcmtlZCB2aXJ0dWFsLiBXZSBuZWVkIHRvIHNvbHZlIHRoaXMgaW4g
dGhlIGxvbmdlciB0ZXJtLgogCiAgICAgUmVmUHRyPE9iamNJbnN0YW5jZT4gX2luc3RhbmNlOwot
ICAgIElkZW50aWZpZXIgX2l0ZW07CisgICAgVVN0cmluZyBfaXRlbTsKIH07CiAKIH0gLy8gbmFt
ZXNwYWNlIEJpbmRpbmdzCkluZGV4OiBTb3VyY2UvV2ViQ29yZS9icmlkZ2Uvb2JqYy9vYmpjX3J1
bnRpbWUubW0KPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL1dlYkNvcmUvYnJpZGdlL29iamMvb2JqY19y
dW50aW1lLm1tCShyZXZpc2lvbiAxMTY2NjcpCisrKyBTb3VyY2UvV2ViQ29yZS9icmlkZ2Uvb2Jq
Yy9vYmpjX3J1bnRpbWUubW0JKHdvcmtpbmcgY29weSkKQEAgLTE5Miw3ICsxOTIsNyBAQCB1bnNp
Z25lZCBpbnQgT2JqY0FycmF5OjpnZXRMZW5ndGgoKSBjb25zCiAKIGNvbnN0IENsYXNzSW5mbyBP
YmpjRmFsbGJhY2tPYmplY3RJbXA6OnNfaW5mbyA9IHsgIk9iamNGYWxsYmFja09iamVjdCIsICZK
U05vbkZpbmFsT2JqZWN0OjpzX2luZm8sIDAsIDAsIENSRUFURV9NRVRIT0RfVEFCTEUoT2JqY0Zh
bGxiYWNrT2JqZWN0SW1wKSB9OwogCi1PYmpjRmFsbGJhY2tPYmplY3RJbXA6Ok9iamNGYWxsYmFj
a09iamVjdEltcChKU0dsb2JhbE9iamVjdCogZ2xvYmFsT2JqZWN0LCBTdHJ1Y3R1cmUqIHN0cnVj
dHVyZSwgT2JqY0luc3RhbmNlKiBpLCBjb25zdCBJZGVudGlmaWVyJiBwcm9wZXJ0eU5hbWUpCitP
YmpjRmFsbGJhY2tPYmplY3RJbXA6Ok9iamNGYWxsYmFja09iamVjdEltcChKU0dsb2JhbE9iamVj
dCogZ2xvYmFsT2JqZWN0LCBTdHJ1Y3R1cmUqIHN0cnVjdHVyZSwgT2JqY0luc3RhbmNlKiBpLCBj
b25zdCBVU3RyaW5nJiBwcm9wZXJ0eU5hbWUpCiAgICAgOiBKU05vbkZpbmFsT2JqZWN0KGdsb2Jh
bE9iamVjdC0+Z2xvYmFsRGF0YSgpLCBzdHJ1Y3R1cmUpCiAgICAgLCBfaW5zdGFuY2UoaSkKICAg
ICAsIF9pdGVtKHByb3BlcnR5TmFtZSkKQEAgLTIxMCwyMSArMjEwLDIxIEBAIHZvaWQgT2JqY0Zh
bGxiYWNrT2JqZWN0SW1wOjpmaW5pc2hDcmVhdGkKICAgICBBU1NFUlQoaW5oZXJpdHMoJnNfaW5m
bykpOwogfQogCi1ib29sIE9iamNGYWxsYmFja09iamVjdEltcDo6Z2V0T3duUHJvcGVydHlTbG90
KEpTQ2VsbCosIEV4ZWNTdGF0ZSosIGNvbnN0IElkZW50aWZpZXImLCBQcm9wZXJ0eVNsb3QmIHNs
b3QpCitib29sIE9iamNGYWxsYmFja09iamVjdEltcDo6Z2V0T3duUHJvcGVydHlTbG90KEpTQ2Vs
bCosIEV4ZWNTdGF0ZSosIFByb3BlcnR5TmFtZSwgUHJvcGVydHlTbG90JiBzbG90KQogewogICAg
IC8vIGtlZXAgdGhlIHByb3RvdHlwZSBmcm9tIGdldHRpbmcgY2FsbGVkIGluc3RlYWQgb2YganVz
dCByZXR1cm5pbmcgZmFsc2UKICAgICBzbG90LnNldFVuZGVmaW5lZCgpOwogICAgIHJldHVybiB0
cnVlOwogfQogCi1ib29sIE9iamNGYWxsYmFja09iamVjdEltcDo6Z2V0T3duUHJvcGVydHlEZXNj
cmlwdG9yKEpTT2JqZWN0KiwgRXhlY1N0YXRlKiwgY29uc3QgSWRlbnRpZmllciYsIFByb3BlcnR5
RGVzY3JpcHRvciYgZGVzY3JpcHRvcikKK2Jvb2wgT2JqY0ZhbGxiYWNrT2JqZWN0SW1wOjpnZXRP
d25Qcm9wZXJ0eURlc2NyaXB0b3IoSlNPYmplY3QqLCBFeGVjU3RhdGUqLCBQcm9wZXJ0eU5hbWUs
IFByb3BlcnR5RGVzY3JpcHRvciYgZGVzY3JpcHRvcikKIHsKICAgICAvLyBrZWVwIHRoZSBwcm90
b3R5cGUgZnJvbSBnZXR0aW5nIGNhbGxlZCBpbnN0ZWFkIG9mIGp1c3QgcmV0dXJuaW5nIGZhbHNl
CiAgICAgZGVzY3JpcHRvci5zZXRVbmRlZmluZWQoKTsKICAgICByZXR1cm4gdHJ1ZTsKIH0KIAot
dm9pZCBPYmpjRmFsbGJhY2tPYmplY3RJbXA6OnB1dChKU0NlbGwqLCBFeGVjU3RhdGUqLCBjb25z
dCBJZGVudGlmaWVyJiwgSlNWYWx1ZSwgUHV0UHJvcGVydHlTbG90JikKK3ZvaWQgT2JqY0ZhbGxi
YWNrT2JqZWN0SW1wOjpwdXQoSlNDZWxsKiwgRXhlY1N0YXRlKiwgUHJvcGVydHlOYW1lLCBKU1Zh
bHVlLCBQdXRQcm9wZXJ0eVNsb3QmKQogewogfQogCkBAIC0yNDksNyArMjQ5LDcgQEAgc3RhdGlj
IEVuY29kZWRKU1ZhbHVlIEpTQ19IT1NUX0NBTEwgY2FsbAogICAgIGlmIChbdGFyZ2V0T2JqZWN0
IHJlc3BvbmRzVG9TZWxlY3RvcjpAc2VsZWN0b3IoaW52b2tlVW5kZWZpbmVkTWV0aG9kRnJvbVdl
YlNjcmlwdDp3aXRoQXJndW1lbnRzOildKXsKICAgICAgICAgT2JqY0NsYXNzKiBvYmpjQ2xhc3Mg
PSBzdGF0aWNfY2FzdDxPYmpjQ2xhc3MqPihvYmpjSW5zdGFuY2UtPmdldENsYXNzKCkpOwogICAg
ICAgICBPd25QdHI8T2JqY01ldGhvZD4gZmFsbGJhY2tNZXRob2QoYWRvcHRQdHIobmV3IE9iamNN
ZXRob2Qob2JqY0NsYXNzLT5pc2EoKSwgQHNlbGVjdG9yKGludm9rZVVuZGVmaW5lZE1ldGhvZEZy
b21XZWJTY3JpcHQ6d2l0aEFyZ3VtZW50czopKSkpOwotICAgICAgICBjb25zdCBJZGVudGlmaWVy
JiBuYW1lSWRlbnRpZmllciA9IHN0YXRpY19jYXN0PE9iamNGYWxsYmFja09iamVjdEltcCo+KGV4
ZWMtPmNhbGxlZSgpKS0+cHJvcGVydHlOYW1lKCk7CisgICAgICAgIGNvbnN0IFVTdHJpbmcmIG5h
bWVJZGVudGlmaWVyID0gc3RhdGljX2Nhc3Q8T2JqY0ZhbGxiYWNrT2JqZWN0SW1wKj4oZXhlYy0+
Y2FsbGVlKCkpLT5wcm9wZXJ0eU5hbWUoKTsKICAgICAgICAgUmV0YWluUHRyPENGU3RyaW5nUmVm
PiBuYW1lKEFkb3B0Q0YsIENGU3RyaW5nQ3JlYXRlV2l0aENoYXJhY3RlcnMoMCwgbmFtZUlkZW50
aWZpZXIuY2hhcmFjdGVycygpLCBuYW1lSWRlbnRpZmllci5sZW5ndGgoKSkpOwogICAgICAgICBm
YWxsYmFja01ldGhvZC0+c2V0SmF2YVNjcmlwdE5hbWUobmFtZS5nZXQoKSk7CiAgICAgICAgIHJl
c3VsdCA9IG9iamNJbnN0YW5jZS0+aW52b2tlT2JqY01ldGhvZChleGVjLCBmYWxsYmFja01ldGhv
ZC5nZXQoKSk7CkBAIC0yNzAsNyArMjcwLDcgQEAgQ2FsbFR5cGUgT2JqY0ZhbGxiYWNrT2JqZWN0
SW1wOjpnZXRDYWxsRAogICAgIHJldHVybiBDYWxsVHlwZUhvc3Q7CiB9CiAKLWJvb2wgT2JqY0Zh
bGxiYWNrT2JqZWN0SW1wOjpkZWxldGVQcm9wZXJ0eShKU0NlbGwqLCBFeGVjU3RhdGUqLCBjb25z
dCBJZGVudGlmaWVyJikKK2Jvb2wgT2JqY0ZhbGxiYWNrT2JqZWN0SW1wOjpkZWxldGVQcm9wZXJ0
eShKU0NlbGwqLCBFeGVjU3RhdGUqLCBQcm9wZXJ0eU5hbWUpCiB7CiAgICAgcmV0dXJuIGZhbHNl
OwogfQpAQCAtMjc4LDcgKzI3OCw3IEBAIGJvb2wgT2JqY0ZhbGxiYWNrT2JqZWN0SW1wOjpkZWxl
dGVQcm9wZXIKIEpTVmFsdWUgT2JqY0ZhbGxiYWNrT2JqZWN0SW1wOjpkZWZhdWx0VmFsdWUoY29u
c3QgSlNPYmplY3QqIG9iamVjdCwgRXhlY1N0YXRlKiBleGVjLCBQcmVmZXJyZWRQcmltaXRpdmVU
eXBlKQogewogICAgIGNvbnN0IE9iamNGYWxsYmFja09iamVjdEltcCogdGhpc09iamVjdCA9IGpz
Q2FzdDxjb25zdCBPYmpjRmFsbGJhY2tPYmplY3RJbXAqPihvYmplY3QpOwotICAgIHJldHVybiB0
aGlzT2JqZWN0LT5faW5zdGFuY2UtPmdldFZhbHVlT2ZVbmRlZmluZWRGaWVsZChleGVjLCB0aGlz
T2JqZWN0LT5faXRlbSk7CisgICAgcmV0dXJuIHRoaXNPYmplY3QtPl9pbnN0YW5jZS0+Z2V0VmFs
dWVPZlVuZGVmaW5lZEZpZWxkKGV4ZWMsIElkZW50aWZpZXIoZXhlYywgdGhpc09iamVjdC0+X2l0
ZW0pKTsKIH0KIAogYm9vbCBPYmpjRmFsbGJhY2tPYmplY3RJbXA6OnRvQm9vbGVhbihFeGVjU3Rh
dGUgKikgY29uc3QKSW5kZXg6IFNvdXJjZS9XZWJDb3JlL2JyaWRnZS9xdC9xdF9jbGFzcy5jcHAK
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PQotLS0gU291cmNlL1dlYkNvcmUvYnJpZGdlL3F0L3F0X2NsYXNzLmNwcAkocmV2
aXNpb24gMTE2NjY3KQorKysgU291cmNlL1dlYkNvcmUvYnJpZGdlL3F0L3F0X2NsYXNzLmNwcAko
d29ya2luZyBjb3B5KQpAQCAtNjYsNyArNjYsNyBAQCBjb25zdCBjaGFyKiBRdENsYXNzOjpuYW1l
KCkgY29uc3QKIC8vIGFuZCBub3QgZ2V0IHdyYXBwZWQgaW4gUnVudGltZU1ldGhvZCkuIEFsc28s
IHVzZSB0aGlzIGZvciBtZXRob2RzLAogLy8gc28gd2UgY2FuIGNhY2hlIHRoZSBvYmplY3QgYW5k
IHJldHVybiB0aGUgc2FtZSBvYmplY3QgZm9yIHRoZSBzYW1lCiAvLyBpZGVudGlmaWVyLgotSlNW
YWx1ZSBRdENsYXNzOjpmYWxsYmFja09iamVjdChFeGVjU3RhdGUqIGV4ZWMsIEluc3RhbmNlKiBp
bnN0LCBjb25zdCBJZGVudGlmaWVyJiBpZGVudGlmaWVyKQorSlNWYWx1ZSBRdENsYXNzOjpmYWxs
YmFja09iamVjdChFeGVjU3RhdGUqIGV4ZWMsIEluc3RhbmNlKiBpbnN0LCBQcm9wZXJ0eU5hbWUg
aWRlbnRpZmllcikKIHsKICAgICBRdEluc3RhbmNlKiBxdGluc3QgPSBzdGF0aWNfY2FzdDxRdElu
c3RhbmNlKj4oaW5zdCk7CiAKQEAgLTg2LDcgKzg2LDcgQEAgSlNWYWx1ZSBRdENsYXNzOjpmYWxs
YmFja09iamVjdChFeGVjU3RhdAogICAgIGlmIChub3JtYWwuY29udGFpbnMoJygnKSAmJiAoaW5k
ZXggPSBtX21ldGFPYmplY3QtPmluZGV4T2ZNZXRob2Qobm9ybWFsKSkgIT0gLTEpIHsKICAgICAg
ICAgUU1ldGFNZXRob2QgbSA9IG1fbWV0YU9iamVjdC0+bWV0aG9kKGluZGV4KTsKICAgICAgICAg
aWYgKG0uYWNjZXNzKCkgIT0gUU1ldGFNZXRob2Q6OlByaXZhdGUpIHsKLSAgICAgICAgICAgIFF0
UnVudGltZU1ldGFNZXRob2QqIHZhbCA9IFF0UnVudGltZU1ldGFNZXRob2Q6OmNyZWF0ZShleGVj
LCBpZGVudGlmaWVyLCBzdGF0aWNfY2FzdDxRdEluc3RhbmNlKj4oaW5zdCksIGluZGV4LCBub3Jt
YWwsIGZhbHNlKTsKKyAgICAgICAgICAgIFF0UnVudGltZU1ldGFNZXRob2QqIHZhbCA9IFF0UnVu
dGltZU1ldGFNZXRob2Q6OmNyZWF0ZShleGVjLCB1c3RyaW5nLCBzdGF0aWNfY2FzdDxRdEluc3Rh
bmNlKj4oaW5zdCksIGluZGV4LCBub3JtYWwsIGZhbHNlKTsKICAgICAgICAgICAgIHF0aW5zdC0+
bV9tZXRob2RzLmluc2VydChuYW1lLCBXcml0ZUJhcnJpZXI8SlNPYmplY3Q+KGV4ZWMtPmdsb2Jh
bERhdGEoKSwgcXRpbnN0LT5jcmVhdGVSdW50aW1lT2JqZWN0KGV4ZWMpLCB2YWwpKTsKICAgICAg
ICAgICAgIHJldHVybiB2YWw7CiAgICAgICAgIH0KQEAgLTEwOSw3ICsxMDksNyBAQCBKU1ZhbHVl
IFF0Q2xhc3M6OmZhbGxiYWNrT2JqZWN0KEV4ZWNTdGF0CiAjZWxzZQogICAgICAgICBpZiAobm9y
bWFsID09IG0ubmFtZSgpKSB7CiAjZW5kaWYKLSAgICAgICAgICAgIFF0UnVudGltZU1ldGFNZXRo
b2QqIHZhbCA9IFF0UnVudGltZU1ldGFNZXRob2Q6OmNyZWF0ZShleGVjLCBpZGVudGlmaWVyLCBz
dGF0aWNfY2FzdDxRdEluc3RhbmNlKj4oaW5zdCksIGluZGV4LCBub3JtYWwsIGZhbHNlKTsKKyAg
ICAgICAgICAgIFF0UnVudGltZU1ldGFNZXRob2QqIHZhbCA9IFF0UnVudGltZU1ldGFNZXRob2Q6
OmNyZWF0ZShleGVjLCB1c3RyaW5nLCBzdGF0aWNfY2FzdDxRdEluc3RhbmNlKj4oaW5zdCksIGlu
ZGV4LCBub3JtYWwsIGZhbHNlKTsKICAgICAgICAgICAgIHF0aW5zdC0+bV9tZXRob2RzLmluc2Vy
dChuYW1lLCBXcml0ZUJhcnJpZXI8SlNPYmplY3Q+KGV4ZWMtPmdsb2JhbERhdGEoKSwgcXRpbnN0
LT5jcmVhdGVSdW50aW1lT2JqZWN0KGV4ZWMpLCB2YWwpKTsKICAgICAgICAgICAgIHJldHVybiB2
YWw7CiAgICAgICAgIH0KQEAgLTExOSw3ICsxMTksNyBAQCBKU1ZhbHVlIFF0Q2xhc3M6OmZhbGxi
YWNrT2JqZWN0KEV4ZWNTdGF0CiB9CiAKIC8vIFRoaXMgZnVuY3Rpb25hbGl0eSBpcyBoYW5kbGVk
IGJ5IHRoZSBmYWxsYmFjayBjYXNlIGFib3ZlLi4uCi1NZXRob2RMaXN0IFF0Q2xhc3M6Om1ldGhv
ZHNOYW1lZChjb25zdCBJZGVudGlmaWVyJiwgSW5zdGFuY2UqKSBjb25zdAorTWV0aG9kTGlzdCBR
dENsYXNzOjptZXRob2RzTmFtZWQoUHJvcGVydHlOYW1lLCBJbnN0YW5jZSopIGNvbnN0CiB7CiAg
ICAgcmV0dXJuIE1ldGhvZExpc3QoKTsKIH0KQEAgLTEyNyw3ICsxMjcsNyBAQCBNZXRob2RMaXN0
IFF0Q2xhc3M6Om1ldGhvZHNOYW1lZChjb25zdCBJCiAvLyAjIyMgd2UgbWF5IGVuZCB1cCB3aXRo
IGEgZGlmZmVyZW50IHNlYXJjaCBvcmRlciB0aGFuIFF0U2NyaXB0IGJ5IG5vdAogLy8gZm9sZGlu
ZyB0aGlzIGNvZGUgaW50byB0aGUgZmFsbGJhY2tNZXRob2QgYWJvdmUsIGJ1dCBGaWVsZHMgcHJv
cGFnYXRlIG91dAogLy8gb2YgdGhlIGJpbmRpbmcgY29kZQotRmllbGQqIFF0Q2xhc3M6OmZpZWxk
TmFtZWQoY29uc3QgSWRlbnRpZmllciYgaWRlbnRpZmllciwgSW5zdGFuY2UqIGluc3RhbmNlKSBj
b25zdAorRmllbGQqIFF0Q2xhc3M6OmZpZWxkTmFtZWQoUHJvcGVydHlOYW1lIGlkZW50aWZpZXIs
IEluc3RhbmNlKiBpbnN0YW5jZSkgY29uc3QKIHsKICAgICAvLyBDaGVjayBzdGF0aWMgcHJvcGVy
dGllcyBmaXJzdAogICAgIFF0SW5zdGFuY2UqIHF0aW5zdCA9IHN0YXRpY19jYXN0PFF0SW5zdGFu
Y2UqPihpbnN0YW5jZSk7CkluZGV4OiBTb3VyY2UvV2ViQ29yZS9icmlkZ2UvcXQvcXRfY2xhc3Mu
aAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2ViQ29yZS9icmlkZ2UvcXQvcXRfY2xhc3MuaAkocmV2
aXNpb24gMTE2NjY3KQorKysgU291cmNlL1dlYkNvcmUvYnJpZGdlL3F0L3F0X2NsYXNzLmgJKHdv
cmtpbmcgY29weSkKQEAgLTQxLDEwICs0MSwxMCBAQCBwdWJsaWM6CiAgICAgdmlydHVhbCB+UXRD
bGFzcygpOwogCiAgICAgdmlydHVhbCBjb25zdCBjaGFyKiBuYW1lKCkgY29uc3Q7Ci0gICAgdmly
dHVhbCBNZXRob2RMaXN0IG1ldGhvZHNOYW1lZChjb25zdCBJZGVudGlmaWVyJiwgSW5zdGFuY2Uq
KSBjb25zdDsKLSAgICB2aXJ0dWFsIEZpZWxkKiBmaWVsZE5hbWVkKGNvbnN0IElkZW50aWZpZXIm
LCBJbnN0YW5jZSopIGNvbnN0OworICAgIHZpcnR1YWwgTWV0aG9kTGlzdCBtZXRob2RzTmFtZWQo
UHJvcGVydHlOYW1lLCBJbnN0YW5jZSopIGNvbnN0OworICAgIHZpcnR1YWwgRmllbGQqIGZpZWxk
TmFtZWQoUHJvcGVydHlOYW1lLCBJbnN0YW5jZSopIGNvbnN0OwogCi0gICAgdmlydHVhbCBKU1Zh
bHVlIGZhbGxiYWNrT2JqZWN0KEV4ZWNTdGF0ZSosIEluc3RhbmNlKiwgY29uc3QgSWRlbnRpZmll
ciYpOworICAgIHZpcnR1YWwgSlNWYWx1ZSBmYWxsYmFja09iamVjdChFeGVjU3RhdGUqLCBJbnN0
YW5jZSosIFByb3BlcnR5TmFtZSk7CiAKIHByaXZhdGU6CiAgICAgUXRDbGFzcyhjb25zdCBRdENs
YXNzJik7IC8vIHByb2hpYml0IGNvcHlpbmcKSW5kZXg6IFNvdXJjZS9XZWJDb3JlL2JyaWRnZS9x
dC9xdF9pbnN0YW5jZS5jcHAKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL1dlYkNvcmUvYnJpZGdlL3F0
L3F0X2luc3RhbmNlLmNwcAkocmV2aXNpb24gMTE2NjY3KQorKysgU291cmNlL1dlYkNvcmUvYnJp
ZGdlL3F0L3F0X2luc3RhbmNlLmNwcAkod29ya2luZyBjb3B5KQpAQCAtMTQ4LDEyICsxNDgsMTIg
QEAgUGFzc1JlZlB0cjxRdEluc3RhbmNlPiBRdEluc3RhbmNlOjpnZXRRdAogICAgIHJldHVybiBy
ZXQucmVsZWFzZSgpOwogfQogCi1ib29sIFF0SW5zdGFuY2U6OmdldE93blByb3BlcnR5U2xvdChK
U09iamVjdCogb2JqZWN0LCBFeGVjU3RhdGUqIGV4ZWMsIGNvbnN0IElkZW50aWZpZXImIHByb3Bl
cnR5TmFtZSwgUHJvcGVydHlTbG90JiBzbG90KQorYm9vbCBRdEluc3RhbmNlOjpnZXRPd25Qcm9w
ZXJ0eVNsb3QoSlNPYmplY3QqIG9iamVjdCwgRXhlY1N0YXRlKiBleGVjLCBQcm9wZXJ0eU5hbWUg
cHJvcGVydHlOYW1lLCBQcm9wZXJ0eVNsb3QmIHNsb3QpCiB7CiAgICAgcmV0dXJuIEpTT2JqZWN0
OjpnZXRPd25Qcm9wZXJ0eVNsb3Qob2JqZWN0LCBleGVjLCBwcm9wZXJ0eU5hbWUsIHNsb3QpOwog
fQogCi12b2lkIFF0SW5zdGFuY2U6OnB1dChKU09iamVjdCogb2JqZWN0LCBFeGVjU3RhdGUqIGV4
ZWMsIGNvbnN0IElkZW50aWZpZXImIHByb3BlcnR5TmFtZSwgSlNWYWx1ZSB2YWx1ZSwgUHV0UHJv
cGVydHlTbG90JiBzbG90KQordm9pZCBRdEluc3RhbmNlOjpwdXQoSlNPYmplY3QqIG9iamVjdCwg
RXhlY1N0YXRlKiBleGVjLCBQcm9wZXJ0eU5hbWUgcHJvcGVydHlOYW1lLCBKU1ZhbHVlIHZhbHVl
LCBQdXRQcm9wZXJ0eVNsb3QmIHNsb3QpCiB7CiAgICAgSlNPYmplY3Q6OnB1dChvYmplY3QsIGV4
ZWMsIHByb3BlcnR5TmFtZSwgdmFsdWUsIHNsb3QpOwogfQpAQCAtMjQ4LDEyICsyNDgsMTIgQEAg
dm9pZCBRdEluc3RhbmNlOjpnZXRQcm9wZXJ0eU5hbWVzKEV4ZWNTdAogICAgIH0KIH0KIAotSlNW
YWx1ZSBRdEluc3RhbmNlOjpnZXRNZXRob2QoRXhlY1N0YXRlKiBleGVjLCBjb25zdCBJZGVudGlm
aWVyJiBwcm9wZXJ0eU5hbWUpCitKU1ZhbHVlIFF0SW5zdGFuY2U6OmdldE1ldGhvZChFeGVjU3Rh
dGUqIGV4ZWMsIFByb3BlcnR5TmFtZSBwcm9wZXJ0eU5hbWUpCiB7CiAgICAgaWYgKCFnZXRDbGFz
cygpKQogICAgICAgICByZXR1cm4ganNOdWxsKCk7CiAgICAgTWV0aG9kTGlzdCBtZXRob2RMaXN0
ID0gbV9jbGFzcy0+bWV0aG9kc05hbWVkKHByb3BlcnR5TmFtZSwgdGhpcyk7Ci0gICAgcmV0dXJu
IFJ1bnRpbWVNZXRob2Q6OmNyZWF0ZShleGVjLCBleGVjLT5sZXhpY2FsR2xvYmFsT2JqZWN0KCks
IFdlYkNvcmU6OmRlcHJlY2F0ZWRHZXRET01TdHJ1Y3R1cmU8UnVudGltZU1ldGhvZD4oZXhlYyks
IHByb3BlcnR5TmFtZSwgbWV0aG9kTGlzdCk7CisgICAgcmV0dXJuIFJ1bnRpbWVNZXRob2Q6OmNy
ZWF0ZShleGVjLCBleGVjLT5sZXhpY2FsR2xvYmFsT2JqZWN0KCksIFdlYkNvcmU6OmRlcHJlY2F0
ZWRHZXRET01TdHJ1Y3R1cmU8UnVudGltZU1ldGhvZD4oZXhlYyksIHByb3BlcnR5TmFtZS51c3Ry
aW5nKCksIG1ldGhvZExpc3QpOwogfQogCiBKU1ZhbHVlIFF0SW5zdGFuY2U6Omludm9rZU1ldGhv
ZChFeGVjU3RhdGUqLCBSdW50aW1lTWV0aG9kKikKSW5kZXg6IFNvdXJjZS9XZWJDb3JlL2JyaWRn
ZS9xdC9xdF9pbnN0YW5jZS5oCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9XZWJDb3JlL2JyaWRnZS9x
dC9xdF9pbnN0YW5jZS5oCShyZXZpc2lvbiAxMTY2NjcpCisrKyBTb3VyY2UvV2ViQ29yZS9icmlk
Z2UvcXQvcXRfaW5zdGFuY2UuaAkod29ya2luZyBjb3B5KQpAQCAtNTEsNyArNTEsNyBAQCBwdWJs
aWM6CiAKICAgICB2b2lkIHZpc2l0QWdncmVnYXRlKFNsb3RWaXNpdG9yJik7CiAKLSAgICB2aXJ0
dWFsIEpTVmFsdWUgZ2V0TWV0aG9kKEV4ZWNTdGF0ZSogZXhlYywgY29uc3QgSWRlbnRpZmllciYg
cHJvcGVydHlOYW1lKTsKKyAgICB2aXJ0dWFsIEpTVmFsdWUgZ2V0TWV0aG9kKEV4ZWNTdGF0ZSos
IFByb3BlcnR5TmFtZSk7CiAgICAgdmlydHVhbCBKU1ZhbHVlIGludm9rZU1ldGhvZChFeGVjU3Rh
dGUqLCBSdW50aW1lTWV0aG9kKik7CiAKICAgICB2aXJ0dWFsIHZvaWQgZ2V0UHJvcGVydHlOYW1l
cyhFeGVjU3RhdGUqLCBQcm9wZXJ0eU5hbWVBcnJheSYpOwpAQCAtNjUsOCArNjUsOCBAQCBwdWJs
aWM6CiAKICAgICBzdGF0aWMgUGFzc1JlZlB0cjxRdEluc3RhbmNlPiBnZXRRdEluc3RhbmNlKFFP
YmplY3QqLCBQYXNzUmVmUHRyPFJvb3RPYmplY3Q+LCBRU2NyaXB0RW5naW5lOjpWYWx1ZU93bmVy
c2hpcCBvd25lcnNoaXApOwogCi0gICAgdmlydHVhbCBib29sIGdldE93blByb3BlcnR5U2xvdChK
U09iamVjdCosIEV4ZWNTdGF0ZSosIGNvbnN0IElkZW50aWZpZXImLCBQcm9wZXJ0eVNsb3QmKTsK
LSAgICB2aXJ0dWFsIHZvaWQgcHV0KEpTT2JqZWN0KiwgRXhlY1N0YXRlKiwgY29uc3QgSWRlbnRp
ZmllciYsIEpTVmFsdWUsIFB1dFByb3BlcnR5U2xvdCYpOworICAgIHZpcnR1YWwgYm9vbCBnZXRP
d25Qcm9wZXJ0eVNsb3QoSlNPYmplY3QqLCBFeGVjU3RhdGUqLCBQcm9wZXJ0eU5hbWUsIFByb3Bl
cnR5U2xvdCYpOworICAgIHZpcnR1YWwgdm9pZCBwdXQoSlNPYmplY3QqLCBFeGVjU3RhdGUqLCBQ
cm9wZXJ0eU5hbWUsIEpTVmFsdWUsIFB1dFByb3BlcnR5U2xvdCYpOwogCiAgICAgdm9pZCByZW1v
dmVDYWNoZWRNZXRob2QoSlNPYmplY3QqKTsKIApJbmRleDogU291cmNlL1dlYkNvcmUvYnJpZGdl
L3F0L3F0X3BpeG1hcHJ1bnRpbWUuY3BwCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9XZWJDb3JlL2Jy
aWRnZS9xdC9xdF9waXhtYXBydW50aW1lLmNwcAkocmV2aXNpb24gMTE2NjY3KQorKysgU291cmNl
L1dlYkNvcmUvYnJpZGdlL3F0L3F0X3BpeG1hcHJ1bnRpbWUuY3BwCSh3b3JraW5nIGNvcHkpCkBA
IC01MCw4ICs1MCw4IEBAIG5hbWVzcGFjZSBCaW5kaW5ncyB7CiBjbGFzcyBRdFBpeG1hcENsYXNz
IDogcHVibGljIENsYXNzIHsKIHB1YmxpYzoKICAgICBRdFBpeG1hcENsYXNzKCk7Ci0gICAgdmly
dHVhbCBNZXRob2RMaXN0IG1ldGhvZHNOYW1lZChjb25zdCBJZGVudGlmaWVyJiwgSW5zdGFuY2Uq
KSBjb25zdDsKLSAgICB2aXJ0dWFsIEZpZWxkKiBmaWVsZE5hbWVkKGNvbnN0IElkZW50aWZpZXIm
LCBJbnN0YW5jZSopIGNvbnN0OworICAgIHZpcnR1YWwgTWV0aG9kTGlzdCBtZXRob2RzTmFtZWQo
UHJvcGVydHlOYW1lLCBJbnN0YW5jZSopIGNvbnN0OworICAgIHZpcnR1YWwgRmllbGQqIGZpZWxk
TmFtZWQoUHJvcGVydHlOYW1lLCBJbnN0YW5jZSopIGNvbnN0OwogfTsKIAogCkBAIC0yMzksMTAg
KzIzOSwxMCBAQCBDbGFzcyogUXRQaXhtYXBJbnN0YW5jZTo6Z2V0Q2xhc3MoKSBjb25zCiAgICAg
cmV0dXJuICZxdF9waXhtYXBfbWV0YURhdGEuY2xzOwogfQogCi1KU1ZhbHVlIFF0UGl4bWFwSW5z
dGFuY2U6OmdldE1ldGhvZChFeGVjU3RhdGUqIGV4ZWMsIGNvbnN0IElkZW50aWZpZXImIHByb3Bl
cnR5TmFtZSkKK0pTVmFsdWUgUXRQaXhtYXBJbnN0YW5jZTo6Z2V0TWV0aG9kKEV4ZWNTdGF0ZSog
ZXhlYywgUHJvcGVydHlOYW1lIHByb3BlcnR5TmFtZSkKIHsKICAgICBNZXRob2RMaXN0IG1ldGhv
ZExpc3QgPSBnZXRDbGFzcygpLT5tZXRob2RzTmFtZWQocHJvcGVydHlOYW1lLCB0aGlzKTsKLSAg
ICByZXR1cm4gUnVudGltZU1ldGhvZDo6Y3JlYXRlKGV4ZWMsIGV4ZWMtPmxleGljYWxHbG9iYWxP
YmplY3QoKSwgV2ViQ29yZTo6ZGVwcmVjYXRlZEdldERPTVN0cnVjdHVyZTxSdW50aW1lTWV0aG9k
PihleGVjKSwgcHJvcGVydHlOYW1lLCBtZXRob2RMaXN0KTsKKyAgICByZXR1cm4gUnVudGltZU1l
dGhvZDo6Y3JlYXRlKGV4ZWMsIGV4ZWMtPmxleGljYWxHbG9iYWxPYmplY3QoKSwgV2ViQ29yZTo6
ZGVwcmVjYXRlZEdldERPTVN0cnVjdHVyZTxSdW50aW1lTWV0aG9kPihleGVjKSwgcHJvcGVydHlO
YW1lLnVzdHJpbmcoKSwgbWV0aG9kTGlzdCk7CiB9CiAKIEpTVmFsdWUgUXRQaXhtYXBJbnN0YW5j
ZTo6aW52b2tlTWV0aG9kKEV4ZWNTdGF0ZSogZXhlYywgUnVudGltZU1ldGhvZCogcnVudGltZU1l
dGhvZCkKQEAgLTI1NiwyNSArMjU2LDI1IEBAIEpTVmFsdWUgUXRQaXhtYXBJbnN0YW5jZTo6aW52
b2tlTWV0aG9kKEUKICAgICByZXR1cm4ganNVbmRlZmluZWQoKTsKIH0KIAotTWV0aG9kTGlzdCBR
dFBpeG1hcENsYXNzOjptZXRob2RzTmFtZWQoY29uc3QgSWRlbnRpZmllciYgaWRlbnRpZmllciwg
SW5zdGFuY2UqKSBjb25zdAorTWV0aG9kTGlzdCBRdFBpeG1hcENsYXNzOjptZXRob2RzTmFtZWQo
UHJvcGVydHlOYW1lIGlkZW50aWZpZXIsIEluc3RhbmNlKikgY29uc3QKIHsKICAgICBNZXRob2RM
aXN0IG1ldGhvZHM7Ci0gICAgaWYgKGlkZW50aWZpZXIgPT0gUXRQaXhtYXBUb0RhdGFVcmxNZXRo
b2Q6Om5hbWUoKSkKKyAgICBpZiAoaWRlbnRpZmllci51c3RyaW5nKCkgPT0gUXRQaXhtYXBUb0Rh
dGFVcmxNZXRob2Q6Om5hbWUoKSkKICAgICAgICAgbWV0aG9kcy5hcHBlbmQoJnF0X3BpeG1hcF9t
ZXRhRGF0YS50b0RhdGFVcmxNZXRob2QpOwotICAgIGVsc2UgaWYgKGlkZW50aWZpZXIgPT0gUXRQ
aXhtYXBUb0ltYWdlRGF0YU1ldGhvZDo6bmFtZSgpKQorICAgIGVsc2UgaWYgKGlkZW50aWZpZXIu
dXN0cmluZygpID09IFF0UGl4bWFwVG9JbWFnZURhdGFNZXRob2Q6Om5hbWUoKSkKICAgICAgICAg
bWV0aG9kcy5hcHBlbmQoJnF0X3BpeG1hcF9tZXRhRGF0YS50b0ltYWdlRGF0YU1ldGhvZCk7Ci0g
ICAgZWxzZSBpZiAoaWRlbnRpZmllciA9PSBRdFBpeG1hcEFzc2lnblRvRWxlbWVudE1ldGhvZDo6
bmFtZSgpKQorICAgIGVsc2UgaWYgKGlkZW50aWZpZXIudXN0cmluZygpID09IFF0UGl4bWFwQXNz
aWduVG9FbGVtZW50TWV0aG9kOjpuYW1lKCkpCiAgICAgICAgIG1ldGhvZHMuYXBwZW5kKCZxdF9w
aXhtYXBfbWV0YURhdGEuYXNzaWduVG9FbGVtZW50TWV0aG9kKTsKLSAgICBlbHNlIGlmIChpZGVu
dGlmaWVyID09IFF0UGl4bWFwVG9TdHJpbmdNZXRob2Q6Om5hbWUoKSkKKyAgICBlbHNlIGlmIChp
ZGVudGlmaWVyLnVzdHJpbmcoKSA9PSBRdFBpeG1hcFRvU3RyaW5nTWV0aG9kOjpuYW1lKCkpCiAg
ICAgICAgIG1ldGhvZHMuYXBwZW5kKCZxdF9waXhtYXBfbWV0YURhdGEudG9TdHJpbmdNZXRob2Qp
OwogICAgIHJldHVybiBtZXRob2RzOwogfQogCi1GaWVsZCogUXRQaXhtYXBDbGFzczo6ZmllbGRO
YW1lZChjb25zdCBJZGVudGlmaWVyJiBpZGVudGlmaWVyLCBJbnN0YW5jZSopIGNvbnN0CitGaWVs
ZCogUXRQaXhtYXBDbGFzczo6ZmllbGROYW1lZChQcm9wZXJ0eU5hbWUgaWRlbnRpZmllciwgSW5z
dGFuY2UqKSBjb25zdAogewotICAgIGlmIChpZGVudGlmaWVyID09IFF0UGl4bWFwV2lkdGhGaWVs
ZDo6bmFtZSgpKQorICAgIGlmIChpZGVudGlmaWVyLnVzdHJpbmcoKSA9PSBRdFBpeG1hcFdpZHRo
RmllbGQ6Om5hbWUoKSkKICAgICAgICAgcmV0dXJuICZxdF9waXhtYXBfbWV0YURhdGEud2lkdGhG
aWVsZDsKLSAgICBpZiAoaWRlbnRpZmllciA9PSBRdFBpeG1hcEhlaWdodEZpZWxkOjpuYW1lKCkp
CisgICAgaWYgKGlkZW50aWZpZXIudXN0cmluZygpID09IFF0UGl4bWFwSGVpZ2h0RmllbGQ6Om5h
bWUoKSkKICAgICAgICAgcmV0dXJuICZxdF9waXhtYXBfbWV0YURhdGEuaGVpZ2h0RmllbGQ7CiAg
ICAgcmV0dXJuIDA7CiB9CkluZGV4OiBTb3VyY2UvV2ViQ29yZS9icmlkZ2UvcXQvcXRfcGl4bWFw
cnVudGltZS5oCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9XZWJDb3JlL2JyaWRnZS9xdC9xdF9waXht
YXBydW50aW1lLmgJKHJldmlzaW9uIDExNjY2NykKKysrIFNvdXJjZS9XZWJDb3JlL2JyaWRnZS9x
dC9xdF9waXhtYXBydW50aW1lLmgJKHdvcmtpbmcgY29weSkKQEAgLTMyLDE3ICszMiwxNyBAQCBj
bGFzcyBRdFBpeG1hcEluc3RhbmNlIDogcHVibGljIEluc3RhbmNlCiBwdWJsaWM6CiAgICAgUXRQ
aXhtYXBJbnN0YW5jZShQYXNzUmVmUHRyPFJvb3RPYmplY3Q+IHJvb3RPYmosIGNvbnN0IFFWYXJp
YW50JiBuZXdEYXRhKTsKICAgICB2aXJ0dWFsIENsYXNzKiBnZXRDbGFzcygpIGNvbnN0OwotICAg
IHZpcnR1YWwgSlNWYWx1ZSBnZXRNZXRob2QoRXhlY1N0YXRlKiBleGVjLCBjb25zdCBJZGVudGlm
aWVyJiBwcm9wZXJ0eU5hbWUpOworICAgIHZpcnR1YWwgSlNWYWx1ZSBnZXRNZXRob2QoRXhlY1N0
YXRlKiwgUHJvcGVydHlOYW1lKTsKICAgICB2aXJ0dWFsIEpTVmFsdWUgaW52b2tlTWV0aG9kKEV4
ZWNTdGF0ZSosIFJ1bnRpbWVNZXRob2QqKTsKICAgICB2aXJ0dWFsIHZvaWQgZ2V0UHJvcGVydHlO
YW1lcyhFeGVjU3RhdGUqLCBQcm9wZXJ0eU5hbWVBcnJheSYpOwogCiAgICAgdmlydHVhbCBKU1Zh
bHVlIGRlZmF1bHRWYWx1ZShFeGVjU3RhdGUqLCBQcmVmZXJyZWRQcmltaXRpdmVUeXBlKSBjb25z
dDsKLSAgICB2aXJ0dWFsIEpTVmFsdWUgdmFsdWVPZihFeGVjU3RhdGUqIGV4ZWMpIGNvbnN0Owor
ICAgIHZpcnR1YWwgSlNWYWx1ZSB2YWx1ZU9mKEV4ZWNTdGF0ZSopIGNvbnN0OwogICAgIGludCB3
aWR0aCgpIGNvbnN0OwogICAgIGludCBoZWlnaHQoKSBjb25zdDsKICAgICBRUGl4bWFwIHRvUGl4
bWFwKCk7CiAgICAgUUltYWdlIHRvSW1hZ2UoKTsKLSAgICBSdW50aW1lT2JqZWN0KiBuZXdSdW50
aW1lT2JqZWN0KEV4ZWNTdGF0ZSogZXhlYyk7CisgICAgUnVudGltZU9iamVjdCogbmV3UnVudGlt
ZU9iamVjdChFeGVjU3RhdGUqKTsKICAgICBzdGF0aWMgSlNPYmplY3QqIGNyZWF0ZVBpeG1hcFJ1
bnRpbWVPYmplY3QoRXhlY1N0YXRlKiwgUGFzc1JlZlB0cjxSb290T2JqZWN0PiwgY29uc3QgUVZh
cmlhbnQmKTsKICAgICBzdGF0aWMgUVZhcmlhbnQgdmFyaWFudEZyb21PYmplY3QoSlNPYmplY3Qq
LCBRTWV0YVR5cGU6OlR5cGUgaGludCk7CiAgICAgc3RhdGljIGJvb2wgY2FuSGFuZGxlKFFNZXRh
VHlwZTo6VHlwZSBoaW50KTsKSW5kZXg6IFNvdXJjZS9XZWJDb3JlL2JyaWRnZS9xdC9xdF9ydW50
aW1lLmNwcAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2ViQ29yZS9icmlkZ2UvcXQvcXRfcnVudGlt
ZS5jcHAJKHJldmlzaW9uIDExNjY2NykKKysrIFNvdXJjZS9XZWJDb3JlL2JyaWRnZS9xdC9xdF9y
dW50aW1lLmNwcAkod29ya2luZyBjb3B5KQpAQCAtOTY4LDEzICs5NjgsMTMgQEAgSlNWYWx1ZSBj
b252ZXJ0UVZhcmlhbnRUb1ZhbHVlKEV4ZWNTdGF0ZQogCiBjb25zdCBDbGFzc0luZm8gUXRSdW50
aW1lTWV0aG9kOjpzX2luZm8gPSB7ICJRdFJ1bnRpbWVNZXRob2QiLCAmSW50ZXJuYWxGdW5jdGlv
bjo6c19pbmZvLCAwLCAwLCBDUkVBVEVfTUVUSE9EX1RBQkxFKFF0UnVudGltZU1ldGhvZCkgfTsK
IAotUXRSdW50aW1lTWV0aG9kOjpRdFJ1bnRpbWVNZXRob2QoUXRSdW50aW1lTWV0aG9kRGF0YSog
ZGQsIEV4ZWNTdGF0ZSogZXhlYywgU3RydWN0dXJlKiBzdHJ1Y3R1cmUsIGNvbnN0IElkZW50aWZp
ZXImIGlkZW50aWZpZXIpCitRdFJ1bnRpbWVNZXRob2Q6OlF0UnVudGltZU1ldGhvZChRdFJ1bnRp
bWVNZXRob2REYXRhKiBkZCwgRXhlY1N0YXRlKiBleGVjLCBTdHJ1Y3R1cmUqIHN0cnVjdHVyZSwg
Y29uc3QgVVN0cmluZyYgaWRlbnRpZmllcikKICAgICA6IEludGVybmFsRnVuY3Rpb24oZXhlYy0+
bGV4aWNhbEdsb2JhbE9iamVjdCgpLCBzdHJ1Y3R1cmUpCiAgICAgLCBkX3B0cihkZCkKIHsKIH0K
IAotdm9pZCBRdFJ1bnRpbWVNZXRob2Q6OmZpbmlzaENyZWF0aW9uKEV4ZWNTdGF0ZSogZXhlYywg
Y29uc3QgSWRlbnRpZmllciYgaWRlbnRpZmllciwgUGFzc1JlZlB0cjxRdEluc3RhbmNlPiBpbnN0
YW5jZSkKK3ZvaWQgUXRSdW50aW1lTWV0aG9kOjpmaW5pc2hDcmVhdGlvbihFeGVjU3RhdGUqIGV4
ZWMsIGNvbnN0IFVTdHJpbmcmIGlkZW50aWZpZXIsIFBhc3NSZWZQdHI8UXRJbnN0YW5jZT4gaW5z
dGFuY2UpCiB7CiAgICAgQmFzZTo6ZmluaXNoQ3JlYXRpb24oZXhlYy0+Z2xvYmFsRGF0YSgpLCBp
ZGVudGlmaWVyKTsKICAgICBRV19EKFF0UnVudGltZU1ldGhvZCk7CkBAIC0xMzg1LDEyICsxMzg1
LDEyIEBAIHN0YXRpYyBpbnQgZmluZFNpZ25hbEluZGV4KGNvbnN0IFFNZXRhT2IKIAogY29uc3Qg
Q2xhc3NJbmZvIFF0UnVudGltZU1ldGFNZXRob2Q6OnNfaW5mbyA9IHsgIlF0UnVudGltZU1ldGhv
ZCIsICZCYXNlOjpzX2luZm8sIDAsIDAsIENSRUFURV9NRVRIT0RfVEFCTEUoUXRSdW50aW1lTWV0
YU1ldGhvZCkgfTsKIAotUXRSdW50aW1lTWV0YU1ldGhvZDo6UXRSdW50aW1lTWV0YU1ldGhvZChF
eGVjU3RhdGUqIGV4ZWMsIFN0cnVjdHVyZSogc3RydWN0dXJlLCBjb25zdCBJZGVudGlmaWVyJiBp
ZGVudGlmaWVyKQorUXRSdW50aW1lTWV0YU1ldGhvZDo6UXRSdW50aW1lTWV0YU1ldGhvZChFeGVj
U3RhdGUqIGV4ZWMsIFN0cnVjdHVyZSogc3RydWN0dXJlLCBjb25zdCBVU3RyaW5nJiBpZGVudGlm
aWVyKQogICAgIDogUXRSdW50aW1lTWV0aG9kIChuZXcgUXRSdW50aW1lTWV0YU1ldGhvZERhdGEo
KSwgZXhlYywgc3RydWN0dXJlLCBpZGVudGlmaWVyKQogewogfQogCi12b2lkIFF0UnVudGltZU1l
dGFNZXRob2Q6OmZpbmlzaENyZWF0aW9uKEV4ZWNTdGF0ZSogZXhlYywgY29uc3QgSWRlbnRpZmll
ciYgaWRlbnRpZmllciwgUGFzc1JlZlB0cjxRdEluc3RhbmNlPiBpbnN0YW5jZSwgaW50IGluZGV4
LCBjb25zdCBRQnl0ZUFycmF5JiBzaWduYXR1cmUsIGJvb2wgYWxsb3dQcml2YXRlKQordm9pZCBR
dFJ1bnRpbWVNZXRhTWV0aG9kOjpmaW5pc2hDcmVhdGlvbihFeGVjU3RhdGUqIGV4ZWMsIGNvbnN0
IFVTdHJpbmcmIGlkZW50aWZpZXIsIFBhc3NSZWZQdHI8UXRJbnN0YW5jZT4gaW5zdGFuY2UsIGlu
dCBpbmRleCwgY29uc3QgUUJ5dGVBcnJheSYgc2lnbmF0dXJlLCBib29sIGFsbG93UHJpdmF0ZSkK
IHsKICAgICBCYXNlOjpmaW5pc2hDcmVhdGlvbihleGVjLCBpZGVudGlmaWVyLCBpbnN0YW5jZSk7
CiAgICAgUVdfRChRdFJ1bnRpbWVNZXRhTWV0aG9kKTsKQEAgLTE0NTIsMTYgKzE0NTIsMTggQEAg
Q2FsbFR5cGUgUXRSdW50aW1lTWV0YU1ldGhvZDo6Z2V0Q2FsbERhdAogICAgIHJldHVybiBDYWxs
VHlwZUhvc3Q7CiB9CiAKLWJvb2wgUXRSdW50aW1lTWV0YU1ldGhvZDo6Z2V0T3duUHJvcGVydHlT
bG90KEpTQ2VsbCogY2VsbCwgRXhlY1N0YXRlKiBleGVjLCBjb25zdCBJZGVudGlmaWVyJiBwcm9w
ZXJ0eU5hbWUsIFByb3BlcnR5U2xvdCYgc2xvdCkKK2Jvb2wgUXRSdW50aW1lTWV0YU1ldGhvZDo6
Z2V0T3duUHJvcGVydHlTbG90KEpTQ2VsbCogY2VsbCwgRXhlY1N0YXRlKiBleGVjLCBQcm9wZXJ0
eU5hbWUgcHJvcGVydHlOYW1lLCBQcm9wZXJ0eVNsb3QmIHNsb3QpCiB7CiAgICAgUXRSdW50aW1l
TWV0YU1ldGhvZCogdGhpc09iamVjdCA9IGpzQ2FzdDxRdFJ1bnRpbWVNZXRhTWV0aG9kKj4oY2Vs
bCk7Ci0gICAgaWYgKHByb3BlcnR5TmFtZSA9PSAiY29ubmVjdCIpIHsKKyAgICBpZiAocHJvcGVy
dHlOYW1lID09IElkZW50aWZpZXIoZXhlYywgImNvbm5lY3QiKSkgewogICAgICAgICBzbG90LnNl
dEN1c3RvbSh0aGlzT2JqZWN0LCB0aGlzT2JqZWN0LT5jb25uZWN0R2V0dGVyKTsKICAgICAgICAg
cmV0dXJuIHRydWU7Ci0gICAgfSBlbHNlIGlmIChwcm9wZXJ0eU5hbWUgPT0gImRpc2Nvbm5lY3Qi
KSB7CisgICAgfQorICAgIGlmIChwcm9wZXJ0eU5hbWUgPT0gSWRlbnRpZmllcihleGVjLCAiZGlz
Y29ubmVjdCIpKSB7CiAgICAgICAgIHNsb3Quc2V0Q3VzdG9tKHRoaXNPYmplY3QsIHRoaXNPYmpl
Y3QtPmRpc2Nvbm5lY3RHZXR0ZXIpOwogICAgICAgICByZXR1cm4gdHJ1ZTsKLSAgICB9IGVsc2Ug
aWYgKHByb3BlcnR5TmFtZSA9PSBleGVjLT5wcm9wZXJ0eU5hbWVzKCkubGVuZ3RoKSB7CisgICAg
fQorICAgIGlmIChwcm9wZXJ0eU5hbWUgPT0gZXhlYy0+cHJvcGVydHlOYW1lcygpLmxlbmd0aCkg
ewogICAgICAgICBzbG90LnNldEN1c3RvbSh0aGlzT2JqZWN0LCB0aGlzT2JqZWN0LT5sZW5ndGhH
ZXR0ZXIpOwogICAgICAgICByZXR1cm4gdHJ1ZTsKICAgICB9CkBAIC0xNDY5LDE3ICsxNDcxLDE3
IEBAIGJvb2wgUXRSdW50aW1lTWV0YU1ldGhvZDo6Z2V0T3duUHJvcGVydHkKICAgICByZXR1cm4g
UXRSdW50aW1lTWV0aG9kOjpnZXRPd25Qcm9wZXJ0eVNsb3QodGhpc09iamVjdCwgZXhlYywgcHJv
cGVydHlOYW1lLCBzbG90KTsKIH0KIAotYm9vbCBRdFJ1bnRpbWVNZXRhTWV0aG9kOjpnZXRPd25Q
cm9wZXJ0eURlc2NyaXB0b3IoSlNPYmplY3QqIG9iamVjdCwgRXhlY1N0YXRlKiBleGVjLCBjb25z
dCBJZGVudGlmaWVyJiBwcm9wZXJ0eU5hbWUsIFByb3BlcnR5RGVzY3JpcHRvciYgZGVzY3JpcHRv
cikKK2Jvb2wgUXRSdW50aW1lTWV0YU1ldGhvZDo6Z2V0T3duUHJvcGVydHlEZXNjcmlwdG9yKEpT
T2JqZWN0KiBvYmplY3QsIEV4ZWNTdGF0ZSogZXhlYywgUHJvcGVydHlOYW1lIHByb3BlcnR5TmFt
ZSwgUHJvcGVydHlEZXNjcmlwdG9yJiBkZXNjcmlwdG9yKQogewogICAgIFF0UnVudGltZU1ldGFN
ZXRob2QqIHRoaXNPYmplY3QgPSBqc0Nhc3Q8UXRSdW50aW1lTWV0YU1ldGhvZCo+KG9iamVjdCk7
Ci0gICAgaWYgKHByb3BlcnR5TmFtZSA9PSAiY29ubmVjdCIpIHsKKyAgICBpZiAocHJvcGVydHlO
YW1lID09IElkZW50aWZpZXIoZXhlYywgImNvbm5lY3QiKSkgewogICAgICAgICBQcm9wZXJ0eVNs
b3Qgc2xvdDsKICAgICAgICAgc2xvdC5zZXRDdXN0b20odGhpc09iamVjdCwgY29ubmVjdEdldHRl
cik7CiAgICAgICAgIGRlc2NyaXB0b3Iuc2V0RGVzY3JpcHRvcihzbG90LmdldFZhbHVlKGV4ZWMs
IHByb3BlcnR5TmFtZSksIERvbnREZWxldGUgfCBSZWFkT25seSB8IERvbnRFbnVtKTsKICAgICAg
ICAgcmV0dXJuIHRydWU7CiAgICAgfQogCi0gICAgaWYgKHByb3BlcnR5TmFtZSA9PSAiZGlzY29u
bmVjdCIpIHsKKyAgICBpZiAocHJvcGVydHlOYW1lID09IElkZW50aWZpZXIoZXhlYywgImRpc2Nv
bm5lY3QiKSkgewogICAgICAgICBQcm9wZXJ0eVNsb3Qgc2xvdDsKICAgICAgICAgc2xvdC5zZXRD
dXN0b20odGhpc09iamVjdCwgZGlzY29ubmVjdEdldHRlcik7CiAgICAgICAgIGRlc2NyaXB0b3Iu
c2V0RGVzY3JpcHRvcihzbG90LmdldFZhbHVlKGV4ZWMsIHByb3BlcnR5TmFtZSksIERvbnREZWxl
dGUgfCBSZWFkT25seSB8IERvbnRFbnVtKTsKQEAgLTE1MDcsMjkgKzE1MDksMjkgQEAgdm9pZCBR
dFJ1bnRpbWVNZXRhTWV0aG9kOjpnZXRPd25Qcm9wZXJ0eQogICAgIFF0UnVudGltZU1ldGhvZDo6
Z2V0T3duUHJvcGVydHlOYW1lcyhvYmplY3QsIGV4ZWMsIHByb3BlcnR5TmFtZXMsIG1vZGUpOwog
fQogCi1KU1ZhbHVlIFF0UnVudGltZU1ldGFNZXRob2Q6Omxlbmd0aEdldHRlcihFeGVjU3RhdGUq
LCBKU1ZhbHVlLCBjb25zdCBJZGVudGlmaWVyJikKK0pTVmFsdWUgUXRSdW50aW1lTWV0YU1ldGhv
ZDo6bGVuZ3RoR2V0dGVyKEV4ZWNTdGF0ZSosIEpTVmFsdWUsIFByb3BlcnR5TmFtZSkKIHsKICAg
ICAvLyBRdFNjcmlwdCBhbHdheXMgcmV0dXJucyAwCiAgICAgcmV0dXJuIGpzTnVtYmVyKDApOwog
fQogCi1KU1ZhbHVlIFF0UnVudGltZU1ldGFNZXRob2Q6OmNvbm5lY3RHZXR0ZXIoRXhlY1N0YXRl
KiBleGVjLCBKU1ZhbHVlIHNsb3RCYXNlLCBjb25zdCBJZGVudGlmaWVyJiBpZGVudCkKK0pTVmFs
dWUgUXRSdW50aW1lTWV0YU1ldGhvZDo6Y29ubmVjdEdldHRlcihFeGVjU3RhdGUqIGV4ZWMsIEpT
VmFsdWUgc2xvdEJhc2UsIFByb3BlcnR5TmFtZSBpZGVudCkKIHsKICAgICBRdFJ1bnRpbWVNZXRh
TWV0aG9kKiB0aGlzT2JqID0gc3RhdGljX2Nhc3Q8UXRSdW50aW1lTWV0YU1ldGhvZCo+KGFzT2Jq
ZWN0KHNsb3RCYXNlKSk7CiAgICAgUVdfRFMoUXRSdW50aW1lTWV0YU1ldGhvZCwgdGhpc09iaik7
CiAKICAgICBpZiAoIWQtPm1fY29ubmVjdCkKLSAgICAgICAgZC0+bV9jb25uZWN0LnNldChleGVj
LT5nbG9iYWxEYXRhKCksIHRoaXNPYmosIFF0UnVudGltZUNvbm5lY3Rpb25NZXRob2Q6OmNyZWF0
ZShleGVjLCBpZGVudCwgdHJ1ZSwgZC0+bV9pbnN0YW5jZSwgZC0+bV9pbmRleCwgZC0+bV9zaWdu
YXR1cmUpKTsKKyAgICAgICAgZC0+bV9jb25uZWN0LnNldChleGVjLT5nbG9iYWxEYXRhKCksIHRo
aXNPYmosIFF0UnVudGltZUNvbm5lY3Rpb25NZXRob2Q6OmNyZWF0ZShleGVjLCBpZGVudC5pbXBs
KCksIHRydWUsIGQtPm1faW5zdGFuY2UsIGQtPm1faW5kZXgsIGQtPm1fc2lnbmF0dXJlKSk7CiAg
ICAgcmV0dXJuIGQtPm1fY29ubmVjdC5nZXQoKTsKIH0KIAotSlNWYWx1ZSBRdFJ1bnRpbWVNZXRh
TWV0aG9kOjpkaXNjb25uZWN0R2V0dGVyKEV4ZWNTdGF0ZSogZXhlYywgSlNWYWx1ZSBzbG90QmFz
ZSwgY29uc3QgSWRlbnRpZmllciYgaWRlbnQpCitKU1ZhbHVlIFF0UnVudGltZU1ldGFNZXRob2Q6
OmRpc2Nvbm5lY3RHZXR0ZXIoRXhlY1N0YXRlKiBleGVjLCBKU1ZhbHVlIHNsb3RCYXNlLCBQcm9w
ZXJ0eU5hbWUgaWRlbnQpCiB7CiAgICAgUXRSdW50aW1lTWV0YU1ldGhvZCogdGhpc09iaiA9IHN0
YXRpY19jYXN0PFF0UnVudGltZU1ldGFNZXRob2QqPihhc09iamVjdChzbG90QmFzZSkpOwogICAg
IFFXX0RTKFF0UnVudGltZU1ldGFNZXRob2QsIHRoaXNPYmopOwogCiAgICAgaWYgKCFkLT5tX2Rp
c2Nvbm5lY3QpCi0gICAgICAgIGQtPm1fZGlzY29ubmVjdC5zZXQoZXhlYy0+Z2xvYmFsRGF0YSgp
LCB0aGlzT2JqLCBRdFJ1bnRpbWVDb25uZWN0aW9uTWV0aG9kOjpjcmVhdGUoZXhlYywgaWRlbnQs
IGZhbHNlLCBkLT5tX2luc3RhbmNlLCBkLT5tX2luZGV4LCBkLT5tX3NpZ25hdHVyZSkpOworICAg
ICAgICBkLT5tX2Rpc2Nvbm5lY3Quc2V0KGV4ZWMtPmdsb2JhbERhdGEoKSwgdGhpc09iaiwgUXRS
dW50aW1lQ29ubmVjdGlvbk1ldGhvZDo6Y3JlYXRlKGV4ZWMsIGlkZW50LmltcGwoKSwgZmFsc2Us
IGQtPm1faW5zdGFuY2UsIGQtPm1faW5kZXgsIGQtPm1fc2lnbmF0dXJlKSk7CiAgICAgcmV0dXJu
IGQtPm1fZGlzY29ubmVjdC5nZXQoKTsKIH0KIApAQCAtMTUzOSwxMiArMTU0MSwxMiBAQCBRTXVs
dGlNYXA8UU9iamVjdCosIFF0Q29ubmVjdGlvbk9iamVjdCo+CiAKIGNvbnN0IENsYXNzSW5mbyBR
dFJ1bnRpbWVDb25uZWN0aW9uTWV0aG9kOjpzX2luZm8gPSB7ICJRdFJ1bnRpbWVNZXRob2QiLCAm
QmFzZTo6c19pbmZvLCAwLCAwLCBDUkVBVEVfTUVUSE9EX1RBQkxFKFF0UnVudGltZUNvbm5lY3Rp
b25NZXRob2QpIH07CiAKLVF0UnVudGltZUNvbm5lY3Rpb25NZXRob2Q6OlF0UnVudGltZUNvbm5l
Y3Rpb25NZXRob2QoRXhlY1N0YXRlKiBleGVjLCBTdHJ1Y3R1cmUqIHN0cnVjdHVyZSwgY29uc3Qg
SWRlbnRpZmllciYgaWRlbnRpZmllcikKK1F0UnVudGltZUNvbm5lY3Rpb25NZXRob2Q6OlF0UnVu
dGltZUNvbm5lY3Rpb25NZXRob2QoRXhlY1N0YXRlKiBleGVjLCBTdHJ1Y3R1cmUqIHN0cnVjdHVy
ZSwgY29uc3QgVVN0cmluZyYgaWRlbnRpZmllcikKICAgICA6IFF0UnVudGltZU1ldGhvZCAobmV3
IFF0UnVudGltZUNvbm5lY3Rpb25NZXRob2REYXRhKCksIGV4ZWMsIHN0cnVjdHVyZSwgaWRlbnRp
ZmllcikKIHsKIH0KIAotdm9pZCBRdFJ1bnRpbWVDb25uZWN0aW9uTWV0aG9kOjpmaW5pc2hDcmVh
dGlvbihFeGVjU3RhdGUqIGV4ZWMsIGNvbnN0IElkZW50aWZpZXImIGlkZW50aWZpZXIsIGJvb2wg
aXNDb25uZWN0LCBQYXNzUmVmUHRyPFF0SW5zdGFuY2U+IGluc3RhbmNlLCBpbnQgaW5kZXgsIGNv
bnN0IFFCeXRlQXJyYXkmIHNpZ25hdHVyZSkKK3ZvaWQgUXRSdW50aW1lQ29ubmVjdGlvbk1ldGhv
ZDo6ZmluaXNoQ3JlYXRpb24oRXhlY1N0YXRlKiBleGVjLCBjb25zdCBVU3RyaW5nJiBpZGVudGlm
aWVyLCBib29sIGlzQ29ubmVjdCwgUGFzc1JlZlB0cjxRdEluc3RhbmNlPiBpbnN0YW5jZSwgaW50
IGluZGV4LCBjb25zdCBRQnl0ZUFycmF5JiBzaWduYXR1cmUpCiB7CiAgICAgQmFzZTo6ZmluaXNo
Q3JlYXRpb24oZXhlYywgaWRlbnRpZmllciwgaW5zdGFuY2UpOwogICAgIFFXX0QoUXRSdW50aW1l
Q29ubmVjdGlvbk1ldGhvZCk7CkBAIC0xNjk1LDcgKzE2OTcsNyBAQCBDYWxsVHlwZSBRdFJ1bnRp
bWVDb25uZWN0aW9uTWV0aG9kOjpnZXRDCiAgICAgcmV0dXJuIENhbGxUeXBlSG9zdDsKIH0KIAot
Ym9vbCBRdFJ1bnRpbWVDb25uZWN0aW9uTWV0aG9kOjpnZXRPd25Qcm9wZXJ0eVNsb3QoSlNDZWxs
KiBjZWxsLCBFeGVjU3RhdGUqIGV4ZWMsIGNvbnN0IElkZW50aWZpZXImIHByb3BlcnR5TmFtZSwg
UHJvcGVydHlTbG90JiBzbG90KQorYm9vbCBRdFJ1bnRpbWVDb25uZWN0aW9uTWV0aG9kOjpnZXRP
d25Qcm9wZXJ0eVNsb3QoSlNDZWxsKiBjZWxsLCBFeGVjU3RhdGUqIGV4ZWMsIFByb3BlcnR5TmFt
ZSBwcm9wZXJ0eU5hbWUsIFByb3BlcnR5U2xvdCYgc2xvdCkKIHsKICAgICBRdFJ1bnRpbWVDb25u
ZWN0aW9uTWV0aG9kKiB0aGlzT2JqZWN0ID0ganNDYXN0PFF0UnVudGltZUNvbm5lY3Rpb25NZXRo
b2QqPihjZWxsKTsKICAgICBpZiAocHJvcGVydHlOYW1lID09IGV4ZWMtPnByb3BlcnR5TmFtZXMo
KS5sZW5ndGgpIHsKQEAgLTE3MDYsNyArMTcwOCw3IEBAIGJvb2wgUXRSdW50aW1lQ29ubmVjdGlv
bk1ldGhvZDo6Z2V0T3duUHIKICAgICByZXR1cm4gUXRSdW50aW1lTWV0aG9kOjpnZXRPd25Qcm9w
ZXJ0eVNsb3QodGhpc09iamVjdCwgZXhlYywgcHJvcGVydHlOYW1lLCBzbG90KTsKIH0KIAotYm9v
bCBRdFJ1bnRpbWVDb25uZWN0aW9uTWV0aG9kOjpnZXRPd25Qcm9wZXJ0eURlc2NyaXB0b3IoSlNP
YmplY3QqIG9iamVjdCwgRXhlY1N0YXRlKiBleGVjLCBjb25zdCBJZGVudGlmaWVyJiBwcm9wZXJ0
eU5hbWUsIFByb3BlcnR5RGVzY3JpcHRvciYgZGVzY3JpcHRvcikKK2Jvb2wgUXRSdW50aW1lQ29u
bmVjdGlvbk1ldGhvZDo6Z2V0T3duUHJvcGVydHlEZXNjcmlwdG9yKEpTT2JqZWN0KiBvYmplY3Qs
IEV4ZWNTdGF0ZSogZXhlYywgUHJvcGVydHlOYW1lIHByb3BlcnR5TmFtZSwgUHJvcGVydHlEZXNj
cmlwdG9yJiBkZXNjcmlwdG9yKQogewogICAgIFF0UnVudGltZUNvbm5lY3Rpb25NZXRob2QqIHRo
aXNPYmplY3QgPSBqc0Nhc3Q8UXRSdW50aW1lQ29ubmVjdGlvbk1ldGhvZCo+KG9iamVjdCk7CiAg
ICAgaWYgKHByb3BlcnR5TmFtZSA9PSBleGVjLT5wcm9wZXJ0eU5hbWVzKCkubGVuZ3RoKSB7CkBA
IC0xNzI3LDcgKzE3MjksNyBAQCB2b2lkIFF0UnVudGltZUNvbm5lY3Rpb25NZXRob2Q6OmdldE93
blByCiAgICAgUXRSdW50aW1lTWV0aG9kOjpnZXRPd25Qcm9wZXJ0eU5hbWVzKG9iamVjdCwgZXhl
YywgcHJvcGVydHlOYW1lcywgbW9kZSk7CiB9CiAKLUpTVmFsdWUgUXRSdW50aW1lQ29ubmVjdGlv
bk1ldGhvZDo6bGVuZ3RoR2V0dGVyKEV4ZWNTdGF0ZSosIEpTVmFsdWUsIGNvbnN0IElkZW50aWZp
ZXImKQorSlNWYWx1ZSBRdFJ1bnRpbWVDb25uZWN0aW9uTWV0aG9kOjpsZW5ndGhHZXR0ZXIoRXhl
Y1N0YXRlKiwgSlNWYWx1ZSwgUHJvcGVydHlOYW1lKQogewogICAgIC8vIHdlIGhhdmUgb25lIGZv
cm1hbCBhcmd1bWVudCwgYW5kIG9uZSBvcHRpb25hbAogICAgIHJldHVybiBqc051bWJlcigxKTsK
SW5kZXg6IFNvdXJjZS9XZWJDb3JlL2JyaWRnZS9xdC9xdF9ydW50aW1lLmgKPT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQot
LS0gU291cmNlL1dlYkNvcmUvYnJpZGdlL3F0L3F0X3J1bnRpbWUuaAkocmV2aXNpb24gMTE2NjY3
KQorKysgU291cmNlL1dlYkNvcmUvYnJpZGdlL3F0L3F0X3J1bnRpbWUuaAkod29ya2luZyBjb3B5
KQpAQCAtMTQ5LDExICsxNDksMTEgQEAgcHVibGljOgogICAgIH0KIAogcHJvdGVjdGVkOgotICAg
IHZvaWQgZmluaXNoQ3JlYXRpb24oRXhlY1N0YXRlKiwgY29uc3QgSWRlbnRpZmllciYsIFBhc3NS
ZWZQdHI8UXRJbnN0YW5jZT4pOworICAgIHZvaWQgZmluaXNoQ3JlYXRpb24oRXhlY1N0YXRlKiwg
Y29uc3QgVVN0cmluZyYsIFBhc3NSZWZQdHI8UXRJbnN0YW5jZT4pOwogICAgIHN0YXRpYyBjb25z
dCB1bnNpZ25lZCBTdHJ1Y3R1cmVGbGFncyA9IE92ZXJyaWRlc0dldE93blByb3BlcnR5U2xvdCB8
IE92ZXJyaWRlc0dldFByb3BlcnR5TmFtZXMgfCBJbnRlcm5hbEZ1bmN0aW9uOjpTdHJ1Y3R1cmVG
bGFncyB8IE92ZXJyaWRlc1Zpc2l0Q2hpbGRyZW47CiAKICAgICBRdFJ1bnRpbWVNZXRob2REYXRh
ICpkX2Z1bmMoKSBjb25zdCB7cmV0dXJuIGRfcHRyO30KLSAgICBRdFJ1bnRpbWVNZXRob2QoUXRS
dW50aW1lTWV0aG9kRGF0YSAqZGQsIEV4ZWNTdGF0ZSAqLCBTdHJ1Y3R1cmUqLCBjb25zdCBJZGVu
dGlmaWVyICZuYW1lKTsKKyAgICBRdFJ1bnRpbWVNZXRob2QoUXRSdW50aW1lTWV0aG9kRGF0YSAq
ZGQsIEV4ZWNTdGF0ZSAqLCBTdHJ1Y3R1cmUqLCBjb25zdCBVU3RyaW5nJiBuYW1lKTsKICAgICBR
dFJ1bnRpbWVNZXRob2REYXRhICpkX3B0cjsKIH07CiAKQEAgLTE2MSw3ICsxNjEsNyBAQCBjbGFz
cyBRdFJ1bnRpbWVNZXRhTWV0aG9kIDogcHVibGljIFF0UnVuCiBwdWJsaWM6CiAgICAgdHlwZWRl
ZiBRdFJ1bnRpbWVNZXRob2QgQmFzZTsKIAotICAgIHN0YXRpYyBRdFJ1bnRpbWVNZXRhTWV0aG9k
KiBjcmVhdGUoRXhlY1N0YXRlKiBleGVjLCBjb25zdCBJZGVudGlmaWVyJiBuYW1lLCBQYXNzUmVm
UHRyPFF0SW5zdGFuY2U+IGluc3RhbmNlLCBpbnQgaW5kZXgsIGNvbnN0IFFCeXRlQXJyYXkmIHNp
Z25hdHVyZSwgYm9vbCBhbGxvd1ByaXZhdGUpCisgICAgc3RhdGljIFF0UnVudGltZU1ldGFNZXRo
b2QqIGNyZWF0ZShFeGVjU3RhdGUqIGV4ZWMsIGNvbnN0IFVTdHJpbmcmIG5hbWUsIFBhc3NSZWZQ
dHI8UXRJbnN0YW5jZT4gaW5zdGFuY2UsIGludCBpbmRleCwgY29uc3QgUUJ5dGVBcnJheSYgc2ln
bmF0dXJlLCBib29sIGFsbG93UHJpdmF0ZSkKICAgICB7CiAgICAgICAgIFN0cnVjdHVyZSogZG9t
U3RydWN0dXJlID0gV2ViQ29yZTo6ZGVwcmVjYXRlZEdldERPTVN0cnVjdHVyZTxRdFJ1bnRpbWVN
ZXRhTWV0aG9kPihleGVjKTsKICAgICAgICAgUXRSdW50aW1lTWV0YU1ldGhvZCogbWV0aG9kID0g
bmV3IChhbGxvY2F0ZUNlbGw8UXRSdW50aW1lTWV0YU1ldGhvZD4oKmV4ZWMtPmhlYXAoKSkpIFF0
UnVudGltZU1ldGFNZXRob2QoZXhlYywgZG9tU3RydWN0dXJlLCBuYW1lKTsKQEAgLTE2OSw4ICsx
NjksOCBAQCBwdWJsaWM6CiAgICAgICAgIHJldHVybiBtZXRob2Q7CiAgICAgfQogCi0gICAgc3Rh
dGljIGJvb2wgZ2V0T3duUHJvcGVydHlTbG90KEpTQ2VsbCosIEV4ZWNTdGF0ZSAqLCBjb25zdCBJ
ZGVudGlmaWVyJiwgUHJvcGVydHlTbG90Jik7Ci0gICAgc3RhdGljIGJvb2wgZ2V0T3duUHJvcGVy
dHlEZXNjcmlwdG9yKEpTT2JqZWN0KiwgRXhlY1N0YXRlKiwgY29uc3QgSWRlbnRpZmllciYsIFBy
b3BlcnR5RGVzY3JpcHRvciYpOworICAgIHN0YXRpYyBib29sIGdldE93blByb3BlcnR5U2xvdChK
U0NlbGwqLCBFeGVjU3RhdGUgKiwgUHJvcGVydHlOYW1lLCBQcm9wZXJ0eVNsb3QmKTsKKyAgICBz
dGF0aWMgYm9vbCBnZXRPd25Qcm9wZXJ0eURlc2NyaXB0b3IoSlNPYmplY3QqLCBFeGVjU3RhdGUq
LCBQcm9wZXJ0eU5hbWUsIFByb3BlcnR5RGVzY3JpcHRvciYpOwogICAgIHN0YXRpYyB2b2lkIGdl
dE93blByb3BlcnR5TmFtZXMoSlNPYmplY3QqLCBFeGVjU3RhdGUqLCBQcm9wZXJ0eU5hbWVBcnJh
eSYsIEVudW1lcmF0aW9uTW9kZSk7CiAKICAgICBzdGF0aWMgdm9pZCB2aXNpdENoaWxkcmVuKEpT
Q2VsbCosIFNsb3RWaXNpdG9yJik7CkBAIC0xODYsMTQgKzE4NiwxNCBAQCBwcm90ZWN0ZWQ6CiAg
ICAgUXRSdW50aW1lTWV0YU1ldGhvZERhdGEqIGRfZnVuYygpIGNvbnN0IHtyZXR1cm4gcmVpbnRl
cnByZXRfY2FzdDxRdFJ1bnRpbWVNZXRhTWV0aG9kRGF0YSo+KGRfcHRyKTt9CiAKIHByaXZhdGU6
Ci0gICAgUXRSdW50aW1lTWV0YU1ldGhvZChFeGVjU3RhdGUqLCBTdHJ1Y3R1cmUqLCBjb25zdCBJ
ZGVudGlmaWVyJik7Ci0gICAgdm9pZCBmaW5pc2hDcmVhdGlvbihFeGVjU3RhdGUqLCBjb25zdCBJ
ZGVudGlmaWVyJiwgUGFzc1JlZlB0cjxRdEluc3RhbmNlPiwgaW50IGluZGV4LCBjb25zdCBRQnl0
ZUFycmF5JiBzaWduYXR1cmUsIGJvb2wgYWxsb3dQcml2YXRlKTsKKyAgICBRdFJ1bnRpbWVNZXRh
TWV0aG9kKEV4ZWNTdGF0ZSosIFN0cnVjdHVyZSosIGNvbnN0IFVTdHJpbmcmKTsKKyAgICB2b2lk
IGZpbmlzaENyZWF0aW9uKEV4ZWNTdGF0ZSosIGNvbnN0IFVTdHJpbmcmLCBQYXNzUmVmUHRyPFF0
SW5zdGFuY2U+LCBpbnQgaW5kZXgsIGNvbnN0IFFCeXRlQXJyYXkmIHNpZ25hdHVyZSwgYm9vbCBh
bGxvd1ByaXZhdGUpOwogCiAgICAgc3RhdGljIENhbGxUeXBlIGdldENhbGxEYXRhKEpTQ2VsbCos
IENhbGxEYXRhJik7CiAgICAgc3RhdGljIEVuY29kZWRKU1ZhbHVlIEpTQ19IT1NUX0NBTEwgY2Fs
bChFeGVjU3RhdGUqIGV4ZWMpOwotICAgIHN0YXRpYyBKU1ZhbHVlIGxlbmd0aEdldHRlcihFeGVj
U3RhdGUqLCBKU1ZhbHVlLCBjb25zdCBJZGVudGlmaWVyJik7Ci0gICAgc3RhdGljIEpTVmFsdWUg
Y29ubmVjdEdldHRlcihFeGVjU3RhdGUqLCBKU1ZhbHVlLCBjb25zdCBJZGVudGlmaWVyJik7Ci0g
ICAgc3RhdGljIEpTVmFsdWUgZGlzY29ubmVjdEdldHRlcihFeGVjU3RhdGUqLCBKU1ZhbHVlLCBj
b25zdCBJZGVudGlmaWVyJik7CisgICAgc3RhdGljIEpTVmFsdWUgbGVuZ3RoR2V0dGVyKEV4ZWNT
dGF0ZSosIEpTVmFsdWUsIFByb3BlcnR5TmFtZSk7CisgICAgc3RhdGljIEpTVmFsdWUgY29ubmVj
dEdldHRlcihFeGVjU3RhdGUqLCBKU1ZhbHVlLCBQcm9wZXJ0eU5hbWUpOworICAgIHN0YXRpYyBK
U1ZhbHVlIGRpc2Nvbm5lY3RHZXR0ZXIoRXhlY1N0YXRlKiwgSlNWYWx1ZSwgUHJvcGVydHlOYW1l
KTsKIH07CiAKIGNsYXNzIFF0Q29ubmVjdGlvbk9iamVjdDsKQEAgLTIwMSw3ICsyMDEsNyBAQCBj
bGFzcyBRdFJ1bnRpbWVDb25uZWN0aW9uTWV0aG9kIDogcHVibGljCiBwdWJsaWM6CiAgICAgdHlw
ZWRlZiBRdFJ1bnRpbWVNZXRob2QgQmFzZTsKIAotICAgIHN0YXRpYyBRdFJ1bnRpbWVDb25uZWN0
aW9uTWV0aG9kKiBjcmVhdGUoRXhlY1N0YXRlKiBleGVjLCBjb25zdCBJZGVudGlmaWVyJiBuYW1l
LCBib29sIGlzQ29ubmVjdCwgUGFzc1JlZlB0cjxRdEluc3RhbmNlPiBpbnN0YW5jZSwgaW50IGlu
ZGV4LCBjb25zdCBRQnl0ZUFycmF5JiBzaWduYXR1cmUpCisgICAgc3RhdGljIFF0UnVudGltZUNv
bm5lY3Rpb25NZXRob2QqIGNyZWF0ZShFeGVjU3RhdGUqIGV4ZWMsIGNvbnN0IFVTdHJpbmcmIG5h
bWUsIGJvb2wgaXNDb25uZWN0LCBQYXNzUmVmUHRyPFF0SW5zdGFuY2U+IGluc3RhbmNlLCBpbnQg
aW5kZXgsIGNvbnN0IFFCeXRlQXJyYXkmIHNpZ25hdHVyZSkKICAgICB7CiAgICAgICAgIFN0cnVj
dHVyZSogZG9tU3RydWN0dXJlID0gV2ViQ29yZTo6ZGVwcmVjYXRlZEdldERPTVN0cnVjdHVyZTxR
dFJ1bnRpbWVDb25uZWN0aW9uTWV0aG9kPihleGVjKTsKICAgICAgICAgUXRSdW50aW1lQ29ubmVj
dGlvbk1ldGhvZCogbWV0aG9kID0gbmV3IChhbGxvY2F0ZUNlbGw8UXRSdW50aW1lQ29ubmVjdGlv
bk1ldGhvZD4oKmV4ZWMtPmhlYXAoKSkpIFF0UnVudGltZUNvbm5lY3Rpb25NZXRob2QoZXhlYywg
ZG9tU3RydWN0dXJlLCBuYW1lKTsKQEAgLTIwOSw4ICsyMDksOCBAQCBwdWJsaWM6CiAgICAgICAg
IHJldHVybiBtZXRob2Q7CiAgICAgfQogCi0gICAgc3RhdGljIGJvb2wgZ2V0T3duUHJvcGVydHlT
bG90KEpTQ2VsbCosIEV4ZWNTdGF0ZSAqLCBjb25zdCBJZGVudGlmaWVyJiwgUHJvcGVydHlTbG90
Jik7Ci0gICAgc3RhdGljIGJvb2wgZ2V0T3duUHJvcGVydHlEZXNjcmlwdG9yKEpTT2JqZWN0Kiwg
RXhlY1N0YXRlKiwgY29uc3QgSWRlbnRpZmllciYsIFByb3BlcnR5RGVzY3JpcHRvciYpOworICAg
IHN0YXRpYyBib29sIGdldE93blByb3BlcnR5U2xvdChKU0NlbGwqLCBFeGVjU3RhdGUgKiwgUHJv
cGVydHlOYW1lLCBQcm9wZXJ0eVNsb3QmKTsKKyAgICBzdGF0aWMgYm9vbCBnZXRPd25Qcm9wZXJ0
eURlc2NyaXB0b3IoSlNPYmplY3QqLCBFeGVjU3RhdGUqLCBQcm9wZXJ0eU5hbWUsIFByb3BlcnR5
RGVzY3JpcHRvciYpOwogICAgIHN0YXRpYyB2b2lkIGdldE93blByb3BlcnR5TmFtZXMoSlNPYmpl
Y3QqLCBFeGVjU3RhdGUqLCBQcm9wZXJ0eU5hbWVBcnJheSYsIEVudW1lcmF0aW9uTW9kZSk7CiAg
CiAgICAgc3RhdGljIGNvbnN0IENsYXNzSW5mbyBzX2luZm87CkBAIC0yMjQsMTIgKzIyNCwxMiBA
QCBwcm90ZWN0ZWQ6CiAgICAgUXRSdW50aW1lQ29ubmVjdGlvbk1ldGhvZERhdGEqIGRfZnVuYygp
IGNvbnN0IHtyZXR1cm4gcmVpbnRlcnByZXRfY2FzdDxRdFJ1bnRpbWVDb25uZWN0aW9uTWV0aG9k
RGF0YSo+KGRfcHRyKTt9CiAKIHByaXZhdGU6Ci0gICAgUXRSdW50aW1lQ29ubmVjdGlvbk1ldGhv
ZChFeGVjU3RhdGUqLCBTdHJ1Y3R1cmUqLCBjb25zdCBJZGVudGlmaWVyJik7Ci0gICAgdm9pZCBm
aW5pc2hDcmVhdGlvbihFeGVjU3RhdGUqLCBjb25zdCBJZGVudGlmaWVyJiwgYm9vbCBpc0Nvbm5l
Y3QsIFBhc3NSZWZQdHI8UXRJbnN0YW5jZT4sIGludCBpbmRleCwgY29uc3QgUUJ5dGVBcnJheSYg
c2lnbmF0dXJlKTsKKyAgICBRdFJ1bnRpbWVDb25uZWN0aW9uTWV0aG9kKEV4ZWNTdGF0ZSosIFN0
cnVjdHVyZSosIGNvbnN0IFVTdHJpbmcmKTsKKyAgICB2b2lkIGZpbmlzaENyZWF0aW9uKEV4ZWNT
dGF0ZSosIGNvbnN0IFVTdHJpbmcmLCBib29sIGlzQ29ubmVjdCwgUGFzc1JlZlB0cjxRdEluc3Rh
bmNlPiwgaW50IGluZGV4LCBjb25zdCBRQnl0ZUFycmF5JiBzaWduYXR1cmUpOwogCiAgICAgc3Rh
dGljIENhbGxUeXBlIGdldENhbGxEYXRhKEpTQ2VsbCosIENhbGxEYXRhJik7CiAgICAgc3RhdGlj
IEVuY29kZWRKU1ZhbHVlIEpTQ19IT1NUX0NBTEwgY2FsbChFeGVjU3RhdGUqIGV4ZWMpOwotICAg
IHN0YXRpYyBKU1ZhbHVlIGxlbmd0aEdldHRlcihFeGVjU3RhdGUqLCBKU1ZhbHVlLCBjb25zdCBJ
ZGVudGlmaWVyJik7CisgICAgc3RhdGljIEpTVmFsdWUgbGVuZ3RoR2V0dGVyKEV4ZWNTdGF0ZSos
IEpTVmFsdWUsIFByb3BlcnR5TmFtZSk7CiAgICAgc3RhdGljIFFNdWx0aU1hcDxRT2JqZWN0ICos
IFF0Q29ubmVjdGlvbk9iamVjdCAqPiBjb25uZWN0aW9uczsKICAgICBmcmllbmQgY2xhc3MgUXRD
b25uZWN0aW9uT2JqZWN0OwogfTsKSW5kZXg6IFNvdXJjZS9XZWJDb3JlL2JyaWRnZS9xdC9xdF9y
dW50aW1lX3F0NC5jcHAKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL1dlYkNvcmUvYnJpZGdlL3F0L3F0
X3J1bnRpbWVfcXQ0LmNwcAkocmV2aXNpb24gMTE2NjY3KQorKysgU291cmNlL1dlYkNvcmUvYnJp
ZGdlL3F0L3F0X3J1bnRpbWVfcXQ0LmNwcAkod29ya2luZyBjb3B5KQpAQCAtOTY4LDEzICs5Njgs
MTMgQEAgSlNWYWx1ZSBjb252ZXJ0UVZhcmlhbnRUb1ZhbHVlKEV4ZWNTdGF0ZQogCiBjb25zdCBD
bGFzc0luZm8gUXRSdW50aW1lTWV0aG9kOjpzX2luZm8gPSB7ICJRdFJ1bnRpbWVNZXRob2QiLCAm
SW50ZXJuYWxGdW5jdGlvbjo6c19pbmZvLCAwLCAwLCBDUkVBVEVfTUVUSE9EX1RBQkxFKFF0UnVu
dGltZU1ldGhvZCkgfTsKIAotUXRSdW50aW1lTWV0aG9kOjpRdFJ1bnRpbWVNZXRob2QoUXRSdW50
aW1lTWV0aG9kRGF0YSogZGQsIEV4ZWNTdGF0ZSogZXhlYywgU3RydWN0dXJlKiBzdHJ1Y3R1cmUs
IGNvbnN0IElkZW50aWZpZXImIGlkZW50aWZpZXIpCitRdFJ1bnRpbWVNZXRob2Q6OlF0UnVudGlt
ZU1ldGhvZChRdFJ1bnRpbWVNZXRob2REYXRhKiBkZCwgRXhlY1N0YXRlKiBleGVjLCBTdHJ1Y3R1
cmUqIHN0cnVjdHVyZSwgY29uc3QgVVN0cmluZyYgaWRlbnRpZmllcikKICAgICA6IEludGVybmFs
RnVuY3Rpb24oZXhlYy0+bGV4aWNhbEdsb2JhbE9iamVjdCgpLCBzdHJ1Y3R1cmUpCiAgICAgLCBk
X3B0cihkZCkKIHsKIH0KIAotdm9pZCBRdFJ1bnRpbWVNZXRob2Q6OmZpbmlzaENyZWF0aW9uKEV4
ZWNTdGF0ZSogZXhlYywgY29uc3QgSWRlbnRpZmllciYgaWRlbnRpZmllciwgUGFzc1JlZlB0cjxR
dEluc3RhbmNlPiBpbnN0YW5jZSkKK3ZvaWQgUXRSdW50aW1lTWV0aG9kOjpmaW5pc2hDcmVhdGlv
bihFeGVjU3RhdGUqIGV4ZWMsIGNvbnN0IFVTdHJpbmcmIGlkZW50aWZpZXIsIFBhc3NSZWZQdHI8
UXRJbnN0YW5jZT4gaW5zdGFuY2UpCiB7CiAgICAgQmFzZTo6ZmluaXNoQ3JlYXRpb24oZXhlYy0+
Z2xvYmFsRGF0YSgpLCBpZGVudGlmaWVyKTsKICAgICBRV19EKFF0UnVudGltZU1ldGhvZCk7CkBA
IC0xMzk0LDEyICsxMzk0LDEyIEBAIHN0YXRpYyBpbnQgZmluZFNpZ25hbEluZGV4KGNvbnN0IFFN
ZXRhT2IKIAogY29uc3QgQ2xhc3NJbmZvIFF0UnVudGltZU1ldGFNZXRob2Q6OnNfaW5mbyA9IHsg
IlF0UnVudGltZU1ldGhvZCIsICZCYXNlOjpzX2luZm8sIDAsIDAsIENSRUFURV9NRVRIT0RfVEFC
TEUoUXRSdW50aW1lTWV0YU1ldGhvZCkgfTsKIAotUXRSdW50aW1lTWV0YU1ldGhvZDo6UXRSdW50
aW1lTWV0YU1ldGhvZChFeGVjU3RhdGUqIGV4ZWMsIFN0cnVjdHVyZSogc3RydWN0dXJlLCBjb25z
dCBJZGVudGlmaWVyJiBpZGVudGlmaWVyKQorUXRSdW50aW1lTWV0YU1ldGhvZDo6UXRSdW50aW1l
TWV0YU1ldGhvZChFeGVjU3RhdGUqIGV4ZWMsIFN0cnVjdHVyZSogc3RydWN0dXJlLCBjb25zdCBV
U3RyaW5nJiBpZGVudGlmaWVyKQogICAgIDogUXRSdW50aW1lTWV0aG9kIChuZXcgUXRSdW50aW1l
TWV0YU1ldGhvZERhdGEoKSwgZXhlYywgc3RydWN0dXJlLCBpZGVudGlmaWVyKQogewogfQogCi12
b2lkIFF0UnVudGltZU1ldGFNZXRob2Q6OmZpbmlzaENyZWF0aW9uKEV4ZWNTdGF0ZSogZXhlYywg
Y29uc3QgSWRlbnRpZmllciYgaWRlbnRpZmllciwgUGFzc1JlZlB0cjxRdEluc3RhbmNlPiBpbnN0
YW5jZSwgaW50IGluZGV4LCBjb25zdCBRQnl0ZUFycmF5JiBzaWduYXR1cmUsIGJvb2wgYWxsb3dQ
cml2YXRlKQordm9pZCBRdFJ1bnRpbWVNZXRhTWV0aG9kOjpmaW5pc2hDcmVhdGlvbihFeGVjU3Rh
dGUqIGV4ZWMsIGNvbnN0IFVTdHJpbmcmIGlkZW50aWZpZXIsIFBhc3NSZWZQdHI8UXRJbnN0YW5j
ZT4gaW5zdGFuY2UsIGludCBpbmRleCwgY29uc3QgUUJ5dGVBcnJheSYgc2lnbmF0dXJlLCBib29s
IGFsbG93UHJpdmF0ZSkKIHsKICAgICBCYXNlOjpmaW5pc2hDcmVhdGlvbihleGVjLCBpZGVudGlm
aWVyLCBpbnN0YW5jZSk7CiAgICAgUVdfRChRdFJ1bnRpbWVNZXRhTWV0aG9kKTsKQEAgLTE0NjEs
MTYgKzE0NjEsMTggQEAgQ2FsbFR5cGUgUXRSdW50aW1lTWV0YU1ldGhvZDo6Z2V0Q2FsbERhdAog
ICAgIHJldHVybiBDYWxsVHlwZUhvc3Q7CiB9CiAKLWJvb2wgUXRSdW50aW1lTWV0YU1ldGhvZDo6
Z2V0T3duUHJvcGVydHlTbG90KEpTQ2VsbCogY2VsbCwgRXhlY1N0YXRlKiBleGVjLCBjb25zdCBJ
ZGVudGlmaWVyJiBwcm9wZXJ0eU5hbWUsIFByb3BlcnR5U2xvdCYgc2xvdCkKK2Jvb2wgUXRSdW50
aW1lTWV0YU1ldGhvZDo6Z2V0T3duUHJvcGVydHlTbG90KEpTQ2VsbCogY2VsbCwgRXhlY1N0YXRl
KiBleGVjLCBQcm9wZXJ0eU5hbWUgcHJvcGVydHlOYW1lLCBQcm9wZXJ0eVNsb3QmIHNsb3QpCiB7
CiAgICAgUXRSdW50aW1lTWV0YU1ldGhvZCogdGhpc09iamVjdCA9IGpzQ2FzdDxRdFJ1bnRpbWVN
ZXRhTWV0aG9kKj4oY2VsbCk7Ci0gICAgaWYgKHByb3BlcnR5TmFtZSA9PSAiY29ubmVjdCIpIHsK
KyAgICBpZiAocHJvcGVydHlOYW1lID09IElkZW50aWZpZXIoZXhlYywgImNvbm5lY3QiKSkgewog
ICAgICAgICBzbG90LnNldEN1c3RvbSh0aGlzT2JqZWN0LCB0aGlzT2JqZWN0LT5jb25uZWN0R2V0
dGVyKTsKICAgICAgICAgcmV0dXJuIHRydWU7Ci0gICAgfSBlbHNlIGlmIChwcm9wZXJ0eU5hbWUg
PT0gImRpc2Nvbm5lY3QiKSB7CisgICAgfQorICAgIGlmIChwcm9wZXJ0eU5hbWUgPT0gSWRlbnRp
ZmllcihleGVjLCAiZGlzY29ubmVjdCIpKSB7CiAgICAgICAgIHNsb3Quc2V0Q3VzdG9tKHRoaXNP
YmplY3QsIHRoaXNPYmplY3QtPmRpc2Nvbm5lY3RHZXR0ZXIpOwogICAgICAgICByZXR1cm4gdHJ1
ZTsKLSAgICB9IGVsc2UgaWYgKHByb3BlcnR5TmFtZSA9PSBleGVjLT5wcm9wZXJ0eU5hbWVzKCku
bGVuZ3RoKSB7CisgICAgfQorICAgIGlmIChwcm9wZXJ0eU5hbWUgPT0gZXhlYy0+cHJvcGVydHlO
YW1lcygpLmxlbmd0aCkgewogICAgICAgICBzbG90LnNldEN1c3RvbSh0aGlzT2JqZWN0LCB0aGlz
T2JqZWN0LT5sZW5ndGhHZXR0ZXIpOwogICAgICAgICByZXR1cm4gdHJ1ZTsKICAgICB9CkBAIC0x
NDc4LDE3ICsxNDgwLDE3IEBAIGJvb2wgUXRSdW50aW1lTWV0YU1ldGhvZDo6Z2V0T3duUHJvcGVy
dHkKICAgICByZXR1cm4gUXRSdW50aW1lTWV0aG9kOjpnZXRPd25Qcm9wZXJ0eVNsb3QodGhpc09i
amVjdCwgZXhlYywgcHJvcGVydHlOYW1lLCBzbG90KTsKIH0KIAotYm9vbCBRdFJ1bnRpbWVNZXRh
TWV0aG9kOjpnZXRPd25Qcm9wZXJ0eURlc2NyaXB0b3IoSlNPYmplY3QqIG9iamVjdCwgRXhlY1N0
YXRlKiBleGVjLCBjb25zdCBJZGVudGlmaWVyJiBwcm9wZXJ0eU5hbWUsIFByb3BlcnR5RGVzY3Jp
cHRvciYgZGVzY3JpcHRvcikKK2Jvb2wgUXRSdW50aW1lTWV0YU1ldGhvZDo6Z2V0T3duUHJvcGVy
dHlEZXNjcmlwdG9yKEpTT2JqZWN0KiBvYmplY3QsIEV4ZWNTdGF0ZSogZXhlYywgUHJvcGVydHlO
YW1lIHByb3BlcnR5TmFtZSwgUHJvcGVydHlEZXNjcmlwdG9yJiBkZXNjcmlwdG9yKQogewogICAg
IFF0UnVudGltZU1ldGFNZXRob2QqIHRoaXNPYmplY3QgPSBqc0Nhc3Q8UXRSdW50aW1lTWV0YU1l
dGhvZCo+KG9iamVjdCk7Ci0gICAgaWYgKHByb3BlcnR5TmFtZSA9PSAiY29ubmVjdCIpIHsKKyAg
ICBpZiAocHJvcGVydHlOYW1lID09IElkZW50aWZpZXIoZXhlYywgImNvbm5lY3QiKSkgewogICAg
ICAgICBQcm9wZXJ0eVNsb3Qgc2xvdDsKICAgICAgICAgc2xvdC5zZXRDdXN0b20odGhpc09iamVj
dCwgY29ubmVjdEdldHRlcik7CiAgICAgICAgIGRlc2NyaXB0b3Iuc2V0RGVzY3JpcHRvcihzbG90
LmdldFZhbHVlKGV4ZWMsIHByb3BlcnR5TmFtZSksIERvbnREZWxldGUgfCBSZWFkT25seSB8IERv
bnRFbnVtKTsKICAgICAgICAgcmV0dXJuIHRydWU7CiAgICAgfQogCi0gICAgaWYgKHByb3BlcnR5
TmFtZSA9PSAiZGlzY29ubmVjdCIpIHsKKyAgICBpZiAocHJvcGVydHlOYW1lID09IElkZW50aWZp
ZXIoZXhlYywgImRpc2Nvbm5lY3QiKSkgewogICAgICAgICBQcm9wZXJ0eVNsb3Qgc2xvdDsKICAg
ICAgICAgc2xvdC5zZXRDdXN0b20odGhpc09iamVjdCwgZGlzY29ubmVjdEdldHRlcik7CiAgICAg
ICAgIGRlc2NyaXB0b3Iuc2V0RGVzY3JpcHRvcihzbG90LmdldFZhbHVlKGV4ZWMsIHByb3BlcnR5
TmFtZSksIERvbnREZWxldGUgfCBSZWFkT25seSB8IERvbnRFbnVtKTsKQEAgLTE1MTYsMjkgKzE1
MTgsMjkgQEAgdm9pZCBRdFJ1bnRpbWVNZXRhTWV0aG9kOjpnZXRPd25Qcm9wZXJ0eQogICAgIFF0
UnVudGltZU1ldGhvZDo6Z2V0T3duUHJvcGVydHlOYW1lcyhvYmplY3QsIGV4ZWMsIHByb3BlcnR5
TmFtZXMsIG1vZGUpOwogfQogCi1KU1ZhbHVlIFF0UnVudGltZU1ldGFNZXRob2Q6Omxlbmd0aEdl
dHRlcihFeGVjU3RhdGUqLCBKU1ZhbHVlLCBjb25zdCBJZGVudGlmaWVyJikKK0pTVmFsdWUgUXRS
dW50aW1lTWV0YU1ldGhvZDo6bGVuZ3RoR2V0dGVyKEV4ZWNTdGF0ZSosIEpTVmFsdWUsIFByb3Bl
cnR5TmFtZSkKIHsKICAgICAvLyBRdFNjcmlwdCBhbHdheXMgcmV0dXJucyAwCiAgICAgcmV0dXJu
IGpzTnVtYmVyKDApOwogfQogCi1KU1ZhbHVlIFF0UnVudGltZU1ldGFNZXRob2Q6OmNvbm5lY3RH
ZXR0ZXIoRXhlY1N0YXRlKiBleGVjLCBKU1ZhbHVlIHNsb3RCYXNlLCBjb25zdCBJZGVudGlmaWVy
JiBpZGVudCkKK0pTVmFsdWUgUXRSdW50aW1lTWV0YU1ldGhvZDo6Y29ubmVjdEdldHRlcihFeGVj
U3RhdGUqIGV4ZWMsIEpTVmFsdWUgc2xvdEJhc2UsIFByb3BlcnR5TmFtZSBpZGVudCkKIHsKICAg
ICBRdFJ1bnRpbWVNZXRhTWV0aG9kKiB0aGlzT2JqID0gc3RhdGljX2Nhc3Q8UXRSdW50aW1lTWV0
YU1ldGhvZCo+KGFzT2JqZWN0KHNsb3RCYXNlKSk7CiAgICAgUVdfRFMoUXRSdW50aW1lTWV0YU1l
dGhvZCwgdGhpc09iaik7CiAKICAgICBpZiAoIWQtPm1fY29ubmVjdCkKLSAgICAgICAgZC0+bV9j
b25uZWN0LnNldChleGVjLT5nbG9iYWxEYXRhKCksIHRoaXNPYmosIFF0UnVudGltZUNvbm5lY3Rp
b25NZXRob2Q6OmNyZWF0ZShleGVjLCBpZGVudCwgdHJ1ZSwgZC0+bV9pbnN0YW5jZSwgZC0+bV9p
bmRleCwgZC0+bV9zaWduYXR1cmUpKTsKKyAgICAgICAgZC0+bV9jb25uZWN0LnNldChleGVjLT5n
bG9iYWxEYXRhKCksIHRoaXNPYmosIFF0UnVudGltZUNvbm5lY3Rpb25NZXRob2Q6OmNyZWF0ZShl
eGVjLCBpZGVudC51c3RyaW5nKCksIHRydWUsIGQtPm1faW5zdGFuY2UsIGQtPm1faW5kZXgsIGQt
Pm1fc2lnbmF0dXJlKSk7CiAgICAgcmV0dXJuIGQtPm1fY29ubmVjdC5nZXQoKTsKIH0KIAotSlNW
YWx1ZSBRdFJ1bnRpbWVNZXRhTWV0aG9kOjpkaXNjb25uZWN0R2V0dGVyKEV4ZWNTdGF0ZSogZXhl
YywgSlNWYWx1ZSBzbG90QmFzZSwgY29uc3QgSWRlbnRpZmllciYgaWRlbnQpCitKU1ZhbHVlIFF0
UnVudGltZU1ldGFNZXRob2Q6OmRpc2Nvbm5lY3RHZXR0ZXIoRXhlY1N0YXRlKiBleGVjLCBKU1Zh
bHVlIHNsb3RCYXNlLCBQcm9wZXJ0eU5hbWUgaWRlbnQpCiB7CiAgICAgUXRSdW50aW1lTWV0YU1l
dGhvZCogdGhpc09iaiA9IHN0YXRpY19jYXN0PFF0UnVudGltZU1ldGFNZXRob2QqPihhc09iamVj
dChzbG90QmFzZSkpOwogICAgIFFXX0RTKFF0UnVudGltZU1ldGFNZXRob2QsIHRoaXNPYmopOwog
CiAgICAgaWYgKCFkLT5tX2Rpc2Nvbm5lY3QpCi0gICAgICAgIGQtPm1fZGlzY29ubmVjdC5zZXQo
ZXhlYy0+Z2xvYmFsRGF0YSgpLCB0aGlzT2JqLCBRdFJ1bnRpbWVDb25uZWN0aW9uTWV0aG9kOjpj
cmVhdGUoZXhlYywgaWRlbnQsIGZhbHNlLCBkLT5tX2luc3RhbmNlLCBkLT5tX2luZGV4LCBkLT5t
X3NpZ25hdHVyZSkpOworICAgICAgICBkLT5tX2Rpc2Nvbm5lY3Quc2V0KGV4ZWMtPmdsb2JhbERh
dGEoKSwgdGhpc09iaiwgUXRSdW50aW1lQ29ubmVjdGlvbk1ldGhvZDo6Y3JlYXRlKGV4ZWMsIGlk
ZW50LnVzdHJpbmcoKSwgZmFsc2UsIGQtPm1faW5zdGFuY2UsIGQtPm1faW5kZXgsIGQtPm1fc2ln
bmF0dXJlKSk7CiAgICAgcmV0dXJuIGQtPm1fZGlzY29ubmVjdC5nZXQoKTsKIH0KIApAQCAtMTU0
OCwxMiArMTU1MCwxMiBAQCBRTXVsdGlNYXA8UU9iamVjdCosIFF0Q29ubmVjdGlvbk9iamVjdCo+
CiAKIGNvbnN0IENsYXNzSW5mbyBRdFJ1bnRpbWVDb25uZWN0aW9uTWV0aG9kOjpzX2luZm8gPSB7
ICJRdFJ1bnRpbWVNZXRob2QiLCAmQmFzZTo6c19pbmZvLCAwLCAwLCBDUkVBVEVfTUVUSE9EX1RB
QkxFKFF0UnVudGltZUNvbm5lY3Rpb25NZXRob2QpIH07CiAKLVF0UnVudGltZUNvbm5lY3Rpb25N
ZXRob2Q6OlF0UnVudGltZUNvbm5lY3Rpb25NZXRob2QoRXhlY1N0YXRlKiBleGVjLCBTdHJ1Y3R1
cmUqIHN0cnVjdHVyZSwgY29uc3QgSWRlbnRpZmllciYgaWRlbnRpZmllcikKK1F0UnVudGltZUNv
bm5lY3Rpb25NZXRob2Q6OlF0UnVudGltZUNvbm5lY3Rpb25NZXRob2QoRXhlY1N0YXRlKiBleGVj
LCBTdHJ1Y3R1cmUqIHN0cnVjdHVyZSwgY29uc3QgVVN0cmluZyYgaWRlbnRpZmllcikKICAgICA6
IFF0UnVudGltZU1ldGhvZCAobmV3IFF0UnVudGltZUNvbm5lY3Rpb25NZXRob2REYXRhKCksIGV4
ZWMsIHN0cnVjdHVyZSwgaWRlbnRpZmllcikKIHsKIH0KIAotdm9pZCBRdFJ1bnRpbWVDb25uZWN0
aW9uTWV0aG9kOjpmaW5pc2hDcmVhdGlvbihFeGVjU3RhdGUqIGV4ZWMsIGNvbnN0IElkZW50aWZp
ZXImIGlkZW50aWZpZXIsIGJvb2wgaXNDb25uZWN0LCBQYXNzUmVmUHRyPFF0SW5zdGFuY2U+IGlu
c3RhbmNlLCBpbnQgaW5kZXgsIGNvbnN0IFFCeXRlQXJyYXkmIHNpZ25hdHVyZSkKK3ZvaWQgUXRS
dW50aW1lQ29ubmVjdGlvbk1ldGhvZDo6ZmluaXNoQ3JlYXRpb24oRXhlY1N0YXRlKiBleGVjLCBj
b25zdCBVU3RyaW5nJiBpZGVudGlmaWVyLCBib29sIGlzQ29ubmVjdCwgUGFzc1JlZlB0cjxRdElu
c3RhbmNlPiBpbnN0YW5jZSwgaW50IGluZGV4LCBjb25zdCBRQnl0ZUFycmF5JiBzaWduYXR1cmUp
CiB7CiAgICAgQmFzZTo6ZmluaXNoQ3JlYXRpb24oZXhlYywgaWRlbnRpZmllciwgaW5zdGFuY2Up
OwogICAgIFFXX0QoUXRSdW50aW1lQ29ubmVjdGlvbk1ldGhvZCk7CkBAIC0xNzA0LDcgKzE3MDYs
NyBAQCBDYWxsVHlwZSBRdFJ1bnRpbWVDb25uZWN0aW9uTWV0aG9kOjpnZXRDCiAgICAgcmV0dXJu
IENhbGxUeXBlSG9zdDsKIH0KIAotYm9vbCBRdFJ1bnRpbWVDb25uZWN0aW9uTWV0aG9kOjpnZXRP
d25Qcm9wZXJ0eVNsb3QoSlNDZWxsKiBjZWxsLCBFeGVjU3RhdGUqIGV4ZWMsIGNvbnN0IElkZW50
aWZpZXImIHByb3BlcnR5TmFtZSwgUHJvcGVydHlTbG90JiBzbG90KQorYm9vbCBRdFJ1bnRpbWVD
b25uZWN0aW9uTWV0aG9kOjpnZXRPd25Qcm9wZXJ0eVNsb3QoSlNDZWxsKiBjZWxsLCBFeGVjU3Rh
dGUqIGV4ZWMsIFByb3BlcnR5TmFtZSBwcm9wZXJ0eU5hbWUsIFByb3BlcnR5U2xvdCYgc2xvdCkK
IHsKICAgICBRdFJ1bnRpbWVDb25uZWN0aW9uTWV0aG9kKiB0aGlzT2JqZWN0ID0ganNDYXN0PFF0
UnVudGltZUNvbm5lY3Rpb25NZXRob2QqPihjZWxsKTsKICAgICBpZiAocHJvcGVydHlOYW1lID09
IGV4ZWMtPnByb3BlcnR5TmFtZXMoKS5sZW5ndGgpIHsKQEAgLTE3MTUsNyArMTcxNyw3IEBAIGJv
b2wgUXRSdW50aW1lQ29ubmVjdGlvbk1ldGhvZDo6Z2V0T3duUHIKICAgICByZXR1cm4gUXRSdW50
aW1lTWV0aG9kOjpnZXRPd25Qcm9wZXJ0eVNsb3QodGhpc09iamVjdCwgZXhlYywgcHJvcGVydHlO
YW1lLCBzbG90KTsKIH0KIAotYm9vbCBRdFJ1bnRpbWVDb25uZWN0aW9uTWV0aG9kOjpnZXRPd25Q
cm9wZXJ0eURlc2NyaXB0b3IoSlNPYmplY3QqIG9iamVjdCwgRXhlY1N0YXRlKiBleGVjLCBjb25z
dCBJZGVudGlmaWVyJiBwcm9wZXJ0eU5hbWUsIFByb3BlcnR5RGVzY3JpcHRvciYgZGVzY3JpcHRv
cikKK2Jvb2wgUXRSdW50aW1lQ29ubmVjdGlvbk1ldGhvZDo6Z2V0T3duUHJvcGVydHlEZXNjcmlw
dG9yKEpTT2JqZWN0KiBvYmplY3QsIEV4ZWNTdGF0ZSogZXhlYywgUHJvcGVydHlOYW1lIHByb3Bl
cnR5TmFtZSwgUHJvcGVydHlEZXNjcmlwdG9yJiBkZXNjcmlwdG9yKQogewogICAgIFF0UnVudGlt
ZUNvbm5lY3Rpb25NZXRob2QqIHRoaXNPYmplY3QgPSBqc0Nhc3Q8UXRSdW50aW1lQ29ubmVjdGlv
bk1ldGhvZCo+KG9iamVjdCk7CiAgICAgaWYgKHByb3BlcnR5TmFtZSA9PSBleGVjLT5wcm9wZXJ0
eU5hbWVzKCkubGVuZ3RoKSB7CkBAIC0xNzM2LDcgKzE3MzgsNyBAQCB2b2lkIFF0UnVudGltZUNv
bm5lY3Rpb25NZXRob2Q6OmdldE93blByCiAgICAgUXRSdW50aW1lTWV0aG9kOjpnZXRPd25Qcm9w
ZXJ0eU5hbWVzKG9iamVjdCwgZXhlYywgcHJvcGVydHlOYW1lcywgbW9kZSk7CiB9CiAKLUpTVmFs
dWUgUXRSdW50aW1lQ29ubmVjdGlvbk1ldGhvZDo6bGVuZ3RoR2V0dGVyKEV4ZWNTdGF0ZSosIEpT
VmFsdWUsIGNvbnN0IElkZW50aWZpZXImKQorSlNWYWx1ZSBRdFJ1bnRpbWVDb25uZWN0aW9uTWV0
aG9kOjpsZW5ndGhHZXR0ZXIoRXhlY1N0YXRlKiwgSlNWYWx1ZSwgUHJvcGVydHlOYW1lKQogewog
ICAgIC8vIHdlIGhhdmUgb25lIGZvcm1hbCBhcmd1bWVudCwgYW5kIG9uZSBvcHRpb25hbAogICAg
IHJldHVybiBqc051bWJlcigxKTsKSW5kZXg6IFNvdXJjZS9XZWJLaXQyL0NoYW5nZUxvZwo9PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09Ci0tLSBTb3VyY2UvV2ViS2l0Mi9DaGFuZ2VMb2cJKHJldmlzaW9uIDExNjc5MikKKysr
IFNvdXJjZS9XZWJLaXQyL0NoYW5nZUxvZwkod29ya2luZyBjb3B5KQpAQCAtMSwzICsxLDM4IEBA
CisyMDEyLTA1LTExICBHYXZpbiBCYXJyYWNsb3VnaCAgPGJhcnJhY2xvdWdoQGFwcGxlLmNvbT4K
KworICAgICAgICBJbnRyb2R1Y2UgUHJvcGVydHlOYW1lIGNsYXNzCisgICAgICAgIGh0dHBzOi8v
YnVncy53ZWJraXQub3JnL3Nob3dfYnVnLmNnaT9pZD04NjI0MQorCisgICAgICAgIFJldmlld2Vk
IGJ5IE5PQk9EWSAoT09QUyEpLgorCisgICAgICAgIFJlcGxhY2UgJ2NvbnN0IElkZW50aWZpZXIm
JyBhcmd1bWVudHMgdG8gZnVuY3Rpb25zIGFjY2Vzc2luZyBvYmplY3QgcHJvcGVydGllcyB3aXRo
IGEgbmV3ICdQcm9wZXJ0eU5hbWUnIHR5cGUuCisgICAgICAgIFRoaXMgY2hhbmdlIHBhdmVzIHRo
ZSB3YXkgdG8gYWxsb3cgZm9yIHByb3BlcnRpZXMga2V5ZWQgYnkgdmFsdWVzIHRoYXQgYXJlIG5v
dCBJZGVudGlmaWVycy4KKworICAgICAgICBUaGlzIGNoYW5nZSBpcyBsYXJnZWx5IGEgbWVjaGFu
aWNhbCBmaW5kICYgcmVwbGFjZS4KKyAgICAgICAgSXQgYWxzbyBjaGFuZ2VzIEpTRnVuY3Rpb24n
cyBjb25zdHJ1Y3RvciB0byB0YWtlIGEgVVN0cmluZyYgaW5zdGVhZCBvZiBhbiBJZGVudGlmaWVy
JgorICAgICAgICAoc2luY2UgaW4gc29tZSBjYXNlcyB3ZSBjYW4gbm8gbG9uZ2VyIGd1YXJhbnRl
ZSB0aGF0IHdlJ2xsbCBoYXZlIGFuIElkZW50aWZpZXIpLCBhbmQKKyAgICAgICAgdW5pZmllcyBJ
ZGVudGlmaWVyJ3MgbWV0aG9kcyB0byBvYnRhaW4gYXJyYXkgaW5kaWNlcyBvbnRvIFByb3BlcnR5
TmFtZS4KKworICAgICAgICBUaGUgbmV3IFByb3BlcnR5TmFtZSBjbGFzcyByZXRhaW5zIHRoZSBh
YmlsaXR5IHRvIHN1cHBvcnQgLmltcGwoKSBhbmQgLnVzdHJpbmcoKSwgYnV0CisgICAgICAgIGlu
IGEgZnV0dXJlIHBhdGNoIHdlIG1heSBuZWVkIHRvIHJld29yayB0aGlzLCBzaW5jZSBub3QgYWxs
IFByb3BlcnR5TmFtZXMgc2hvdWxkIGJlCisgICAgICAgIGVxdWFsIGJhc2VkIG9uIHRoZWlyIHN0
cmluZyByZXByZXNlbnRhdGlvbi4KKworICAgICAgICAqIFdlYlByb2Nlc3MvUGx1Z2lucy9OZXRz
Y2FwZS9KU05QTWV0aG9kLmNwcDoKKyAgICAgICAgKFdlYktpdDo6SlNOUE1ldGhvZDo6ZmluaXNo
Q3JlYXRpb24pOgorICAgICAgICAqIFdlYlByb2Nlc3MvUGx1Z2lucy9OZXRzY2FwZS9KU05QTWV0
aG9kLmg6CisgICAgICAgIChXZWJLaXQ6OkpTTlBNZXRob2Q6OmNyZWF0ZSk6CisgICAgICAgIChK
U05QTWV0aG9kKToKKyAgICAgICAgKiBXZWJQcm9jZXNzL1BsdWdpbnMvTmV0c2NhcGUvSlNOUE9i
amVjdC5jcHA6CisgICAgICAgIChXZWJLaXQ6Om5wSWRlbnRpZmllckZyb21JZGVudGlmaWVyKToK
KyAgICAgICAgKFdlYktpdDo6SlNOUE9iamVjdDo6Z2V0T3duUHJvcGVydHlTbG90KToKKyAgICAg
ICAgKFdlYktpdDo6SlNOUE9iamVjdDo6Z2V0T3duUHJvcGVydHlEZXNjcmlwdG9yKToKKyAgICAg
ICAgKFdlYktpdDo6SlNOUE9iamVjdDo6cHV0KToKKyAgICAgICAgKFdlYktpdDo6SlNOUE9iamVj
dDo6ZGVsZXRlUHJvcGVydHkpOgorICAgICAgICAoV2ViS2l0OjpKU05QT2JqZWN0Ojpwcm9wZXJ0
eUdldHRlcik6CisgICAgICAgIChXZWJLaXQ6OkpTTlBPYmplY3Q6Om1ldGhvZEdldHRlcik6Cisg
ICAgICAgICogV2ViUHJvY2Vzcy9QbHVnaW5zL05ldHNjYXBlL0pTTlBPYmplY3QuaDoKKyAgICAg
ICAgKEpTTlBPYmplY3QpOgorCiAyMDEyLTA1LTExICBHdXN0YXZvIE5vcm9uaGEgU2lsdmEgIDxn
bnNAZ25vbWUub3JnPgogCiAgICAgICAgIFJFR1JFU1NJT04ocjExNjIwNSk6IFtHVEtdOiBidWls
ZCBubyBsb25nZXIgc3VwcG9ydHMgdGhpbiBhcmNoaXZlcwpJbmRleDogU291cmNlL1dlYktpdDIv
V2ViUHJvY2Vzcy9QbHVnaW5zL05ldHNjYXBlL0pTTlBNZXRob2QuY3BwCj09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0t
IFNvdXJjZS9XZWJLaXQyL1dlYlByb2Nlc3MvUGx1Z2lucy9OZXRzY2FwZS9KU05QTWV0aG9kLmNw
cAkocmV2aXNpb24gMTE2NjY3KQorKysgU291cmNlL1dlYktpdDIvV2ViUHJvY2Vzcy9QbHVnaW5z
L05ldHNjYXBlL0pTTlBNZXRob2QuY3BwCSh3b3JraW5nIGNvcHkpCkBAIC00OSw3ICs0OSw3IEBA
IEpTTlBNZXRob2Q6OkpTTlBNZXRob2QoSlNHbG9iYWxPYmplY3QqIGcKIHsKIH0KIAotdm9pZCBK
U05QTWV0aG9kOjpmaW5pc2hDcmVhdGlvbihKU0dsb2JhbERhdGEmIGdsb2JhbERhdGEsIGNvbnN0
IElkZW50aWZpZXImIG5hbWUpCit2b2lkIEpTTlBNZXRob2Q6OmZpbmlzaENyZWF0aW9uKEpTR2xv
YmFsRGF0YSYgZ2xvYmFsRGF0YSwgY29uc3QgVVN0cmluZyYgbmFtZSkKIHsKICAgICBCYXNlOjpm
aW5pc2hDcmVhdGlvbihnbG9iYWxEYXRhLCBuYW1lKTsKICAgICBBU1NFUlQoaW5oZXJpdHMoJnNf
aW5mbykpOwpJbmRleDogU291cmNlL1dlYktpdDIvV2ViUHJvY2Vzcy9QbHVnaW5zL05ldHNjYXBl
L0pTTlBNZXRob2QuaAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2ViS2l0Mi9XZWJQcm9jZXNzL1Bs
dWdpbnMvTmV0c2NhcGUvSlNOUE1ldGhvZC5oCShyZXZpc2lvbiAxMTY2NjcpCisrKyBTb3VyY2Uv
V2ViS2l0Mi9XZWJQcm9jZXNzL1BsdWdpbnMvTmV0c2NhcGUvSlNOUE1ldGhvZC5oCSh3b3JraW5n
IGNvcHkpCkBAIC0zOSw3ICszOSw3IEBAIGNsYXNzIEpTTlBNZXRob2QgOiBwdWJsaWMgSlNDOjpJ
bnRlcm5hbEYKIHB1YmxpYzoKICAgICB0eXBlZGVmIEpTQzo6SW50ZXJuYWxGdW5jdGlvbiBCYXNl
OwogCi0gICAgc3RhdGljIEpTTlBNZXRob2QqIGNyZWF0ZShKU0M6OkV4ZWNTdGF0ZSogZXhlYywg
SlNDOjpKU0dsb2JhbE9iamVjdCogZ2xvYmFsT2JqZWN0LCBjb25zdCBKU0M6OklkZW50aWZpZXIm
IG5hbWUsIE5QSWRlbnRpZmllciBucElkZW50KQorICAgIHN0YXRpYyBKU05QTWV0aG9kKiBjcmVh
dGUoSlNDOjpFeGVjU3RhdGUqIGV4ZWMsIEpTQzo6SlNHbG9iYWxPYmplY3QqIGdsb2JhbE9iamVj
dCwgY29uc3QgSlNDOjpVU3RyaW5nJiBuYW1lLCBOUElkZW50aWZpZXIgbnBJZGVudCkKICAgICB7
CiAgICAgICAgIEpTQzo6U3RydWN0dXJlKiBzdHJ1Y3R1cmUgPSBjcmVhdGVTdHJ1Y3R1cmUoZXhl
Yy0+Z2xvYmFsRGF0YSgpLCBnbG9iYWxPYmplY3QsIGdsb2JhbE9iamVjdC0+ZnVuY3Rpb25Qcm90
b3R5cGUoKSk7CiAgICAgICAgIEpTTlBNZXRob2QqIG1ldGhvZCA9IG5ldyAoSlNDOjphbGxvY2F0
ZUNlbGw8SlNOUE1ldGhvZD4oKmV4ZWMtPmhlYXAoKSkpIEpTTlBNZXRob2QoZ2xvYmFsT2JqZWN0
LCBzdHJ1Y3R1cmUsIG5wSWRlbnQpOwpAQCAtNTIsNyArNTIsNyBAQCBwdWJsaWM6CiAgICAgTlBJ
ZGVudGlmaWVyIG5wSWRlbnRpZmllcigpIGNvbnN0IHsgcmV0dXJuIG1fbnBJZGVudGlmaWVyOyB9
CiAKIHByb3RlY3RlZDoKLSAgICB2b2lkIGZpbmlzaENyZWF0aW9uKEpTQzo6SlNHbG9iYWxEYXRh
JiwgY29uc3QgSlNDOjpJZGVudGlmaWVyJiBuYW1lKTsKKyAgICB2b2lkIGZpbmlzaENyZWF0aW9u
KEpTQzo6SlNHbG9iYWxEYXRhJiwgY29uc3QgSlNDOjpVU3RyaW5nJiBuYW1lKTsKIAogcHJpdmF0
ZTogICAgCiAgICAgSlNOUE1ldGhvZChKU0M6OkpTR2xvYmFsT2JqZWN0KiwgSlNDOjpTdHJ1Y3R1
cmUqLCBOUElkZW50aWZpZXIpOwpJbmRleDogU291cmNlL1dlYktpdDIvV2ViUHJvY2Vzcy9QbHVn
aW5zL05ldHNjYXBlL0pTTlBPYmplY3QuY3BwCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9XZWJLaXQy
L1dlYlByb2Nlc3MvUGx1Z2lucy9OZXRzY2FwZS9KU05QT2JqZWN0LmNwcAkocmV2aXNpb24gMTE2
NjY3KQorKysgU291cmNlL1dlYktpdDIvV2ViUHJvY2Vzcy9QbHVnaW5zL05ldHNjYXBlL0pTTlBP
YmplY3QuY3BwCSh3b3JraW5nIGNvcHkpCkBAIC00Myw3ICs0Myw3IEBAIHVzaW5nIG5hbWVzcGFj
ZSBXZWJDb3JlOwogCiBuYW1lc3BhY2UgV2ViS2l0IHsKIAotc3RhdGljIE5QSWRlbnRpZmllciBu
cElkZW50aWZpZXJGcm9tSWRlbnRpZmllcihjb25zdCBJZGVudGlmaWVyJiBpZGVudGlmaWVyKQor
c3RhdGljIE5QSWRlbnRpZmllciBucElkZW50aWZpZXJGcm9tSWRlbnRpZmllcihQcm9wZXJ0eU5h
bWUgaWRlbnRpZmllcikKIHsKICAgICByZXR1cm4gc3RhdGljX2Nhc3Q8TlBJZGVudGlmaWVyPihJ
ZGVudGlmaWVyUmVwOjpnZXQoaWRlbnRpZmllci51c3RyaW5nKCkudXRmOCgpLmRhdGEoKSkpOwog
fQpAQCAtMjUyLDcgKzI1Miw3IEBAIENvbnN0cnVjdFR5cGUgSlNOUE9iamVjdDo6Z2V0Q29uc3Ry
dWN0RGEKICAgICByZXR1cm4gQ29uc3RydWN0VHlwZUhvc3Q7CiB9CiAKLWJvb2wgSlNOUE9iamVj
dDo6Z2V0T3duUHJvcGVydHlTbG90KEpTQ2VsbCogY2VsbCwgRXhlY1N0YXRlKiBleGVjLCBjb25z
dCBJZGVudGlmaWVyJiBwcm9wZXJ0eU5hbWUsIFByb3BlcnR5U2xvdCYgc2xvdCkKK2Jvb2wgSlNO
UE9iamVjdDo6Z2V0T3duUHJvcGVydHlTbG90KEpTQ2VsbCogY2VsbCwgRXhlY1N0YXRlKiBleGVj
LCBQcm9wZXJ0eU5hbWUgcHJvcGVydHlOYW1lLCBQcm9wZXJ0eVNsb3QmIHNsb3QpCiB7CiAgICAg
SlNOUE9iamVjdCogdGhpc09iamVjdCA9IEpTQzo6anNDYXN0PEpTTlBPYmplY3QqPihjZWxsKTsK
ICAgICBBU1NFUlRfR0NfT0JKRUNUX0lOSEVSSVRTKHRoaXNPYmplY3QsICZzX2luZm8pOwpAQCAt
Mjc4LDcgKzI3OCw3IEBAIGJvb2wgSlNOUE9iamVjdDo6Z2V0T3duUHJvcGVydHlTbG90KEpTQ2UK
ICAgICByZXR1cm4gZmFsc2U7CiB9CiAKLWJvb2wgSlNOUE9iamVjdDo6Z2V0T3duUHJvcGVydHlE
ZXNjcmlwdG9yKEpTT2JqZWN0KiBvYmplY3QsIEV4ZWNTdGF0ZSogZXhlYywgY29uc3QgSWRlbnRp
ZmllciYgcHJvcGVydHlOYW1lLCBQcm9wZXJ0eURlc2NyaXB0b3ImIGRlc2NyaXB0b3IpCitib29s
IEpTTlBPYmplY3Q6OmdldE93blByb3BlcnR5RGVzY3JpcHRvcihKU09iamVjdCogb2JqZWN0LCBF
eGVjU3RhdGUqIGV4ZWMsIFByb3BlcnR5TmFtZSBwcm9wZXJ0eU5hbWUsIFByb3BlcnR5RGVzY3Jp
cHRvciYgZGVzY3JpcHRvcikKIHsKICAgICBKU05QT2JqZWN0KiB0aGlzT2JqZWN0ID0ganNDYXN0
PEpTTlBPYmplY3QqPihvYmplY3QpOwogICAgIEFTU0VSVF9HQ19PQkpFQ1RfSU5IRVJJVFModGhp
c09iamVjdCwgJnNfaW5mbyk7CkBAIC0zMDgsNyArMzA4LDcgQEAgYm9vbCBKU05QT2JqZWN0Ojpn
ZXRPd25Qcm9wZXJ0eURlc2NyaXB0bwogICAgIHJldHVybiBmYWxzZTsKIH0KIAotdm9pZCBKU05Q
T2JqZWN0OjpwdXQoSlNDZWxsKiBjZWxsLCBFeGVjU3RhdGUqIGV4ZWMsIGNvbnN0IElkZW50aWZp
ZXImIHByb3BlcnR5TmFtZSwgSlNWYWx1ZSB2YWx1ZSwgUHV0UHJvcGVydHlTbG90JikKK3ZvaWQg
SlNOUE9iamVjdDo6cHV0KEpTQ2VsbCogY2VsbCwgRXhlY1N0YXRlKiBleGVjLCBQcm9wZXJ0eU5h
bWUgcHJvcGVydHlOYW1lLCBKU1ZhbHVlIHZhbHVlLCBQdXRQcm9wZXJ0eVNsb3QmKQogewogICAg
IEpTTlBPYmplY3QqIHRoaXNPYmplY3QgPSBKU0M6OmpzQ2FzdDxKU05QT2JqZWN0Kj4oY2VsbCk7
CiAgICAgQVNTRVJUX0dDX09CSkVDVF9JTkhFUklUUyh0aGlzT2JqZWN0LCAmc19pbmZvKTsKQEAg
LTM0Nyw3ICszNDcsNyBAQCB2b2lkIEpTTlBPYmplY3Q6OnB1dChKU0NlbGwqIGNlbGwsIEV4ZWNT
CiAgICAgcmVsZWFzZU5QVmFyaWFudFZhbHVlKCZ2YXJpYW50KTsKIH0KIAotYm9vbCBKU05QT2Jq
ZWN0OjpkZWxldGVQcm9wZXJ0eShKU0NlbGwqIGNlbGwsIEV4ZWNTdGF0ZSogZXhlYywgY29uc3Qg
SWRlbnRpZmllciYgcHJvcGVydHlOYW1lKQorYm9vbCBKU05QT2JqZWN0OjpkZWxldGVQcm9wZXJ0
eShKU0NlbGwqIGNlbGwsIEV4ZWNTdGF0ZSogZXhlYywgUHJvcGVydHlOYW1lIHByb3BlcnR5TmFt
ZSkKIHsKICAgICByZXR1cm4ganNDYXN0PEpTTlBPYmplY3QqPihjZWxsKS0+ZGVsZXRlUHJvcGVy
dHkoZXhlYywgbnBJZGVudGlmaWVyRnJvbUlkZW50aWZpZXIocHJvcGVydHlOYW1lKSk7CiB9CkBA
IC00MzYsNyArNDM2LDcgQEAgdm9pZCBKU05QT2JqZWN0OjpnZXRPd25Qcm9wZXJ0eU5hbWVzKEpT
TwogICAgIG5wbk1lbUZyZWUoaWRlbnRpZmllcnMpOwogfQogCi1KU1ZhbHVlIEpTTlBPYmplY3Q6
OnByb3BlcnR5R2V0dGVyKEV4ZWNTdGF0ZSogZXhlYywgSlNWYWx1ZSBzbG90QmFzZSwgY29uc3Qg
SWRlbnRpZmllciYgcHJvcGVydHlOYW1lKQorSlNWYWx1ZSBKU05QT2JqZWN0Ojpwcm9wZXJ0eUdl
dHRlcihFeGVjU3RhdGUqIGV4ZWMsIEpTVmFsdWUgc2xvdEJhc2UsIFByb3BlcnR5TmFtZSBwcm9w
ZXJ0eU5hbWUpCiB7CiAgICAgSlNOUE9iamVjdCogdGhpc09iaiA9IHN0YXRpY19jYXN0PEpTTlBP
YmplY3QqPihhc09iamVjdChzbG90QmFzZSkpOwogICAgIEFTU0VSVF9HQ19PQkpFQ1RfSU5IRVJJ
VFModGhpc09iaiwgJnNfaW5mbyk7CkBAIC00NzIsNyArNDcyLDcgQEAgSlNWYWx1ZSBKU05QT2Jq
ZWN0Ojpwcm9wZXJ0eUdldHRlcihFeGVjUwogICAgIHJldHVybiBwcm9wZXJ0eVZhbHVlOwogfQog
Ci1KU1ZhbHVlIEpTTlBPYmplY3Q6Om1ldGhvZEdldHRlcihFeGVjU3RhdGUqIGV4ZWMsIEpTVmFs
dWUgc2xvdEJhc2UsIGNvbnN0IElkZW50aWZpZXImIG1ldGhvZE5hbWUpCitKU1ZhbHVlIEpTTlBP
YmplY3Q6Om1ldGhvZEdldHRlcihFeGVjU3RhdGUqIGV4ZWMsIEpTVmFsdWUgc2xvdEJhc2UsIFBy
b3BlcnR5TmFtZSBtZXRob2ROYW1lKQogewogICAgIEpTTlBPYmplY3QqIHRoaXNPYmogPSBzdGF0
aWNfY2FzdDxKU05QT2JqZWN0Kj4oYXNPYmplY3Qoc2xvdEJhc2UpKTsKICAgICBBU1NFUlRfR0Nf
T0JKRUNUX0lOSEVSSVRTKHRoaXNPYmosICZzX2luZm8pOwpAQCAtNDgxLDcgKzQ4MSw3IEBAIEpT
VmFsdWUgSlNOUE9iamVjdDo6bWV0aG9kR2V0dGVyKEV4ZWNTdGEKICAgICAgICAgcmV0dXJuIHRo
cm93SW52YWxpZEFjY2Vzc0Vycm9yKGV4ZWMpOwogCiAgICAgTlBJZGVudGlmaWVyIG5wSWRlbnRp
ZmllciA9IG5wSWRlbnRpZmllckZyb21JZGVudGlmaWVyKG1ldGhvZE5hbWUpOwotICAgIHJldHVy
biBKU05QTWV0aG9kOjpjcmVhdGUoZXhlYywgdGhpc09iai0+Z2xvYmFsT2JqZWN0KCksIG1ldGhv
ZE5hbWUsIG5wSWRlbnRpZmllcik7CisgICAgcmV0dXJuIEpTTlBNZXRob2Q6OmNyZWF0ZShleGVj
LCB0aGlzT2JqLT5nbG9iYWxPYmplY3QoKSwgbWV0aG9kTmFtZS51c3RyaW5nKCksIG5wSWRlbnRp
Zmllcik7CiB9CiAKIEpTT2JqZWN0KiBKU05QT2JqZWN0Ojp0aHJvd0ludmFsaWRBY2Nlc3NFcnJv
cihFeGVjU3RhdGUqIGV4ZWMpCkluZGV4OiBTb3VyY2UvV2ViS2l0Mi9XZWJQcm9jZXNzL1BsdWdp
bnMvTmV0c2NhcGUvSlNOUE9iamVjdC5oCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9XZWJLaXQyL1dl
YlByb2Nlc3MvUGx1Z2lucy9OZXRzY2FwZS9KU05QT2JqZWN0LmgJKHJldmlzaW9uIDExNjY2NykK
KysrIFNvdXJjZS9XZWJLaXQyL1dlYlByb2Nlc3MvUGx1Z2lucy9OZXRzY2FwZS9KU05QT2JqZWN0
LmgJKHdvcmtpbmcgY29weSkKQEAgLTgzLDE5ICs4MywxOSBAQCBwcml2YXRlOgogICAgIHN0YXRp
YyBKU0M6OkNhbGxUeXBlIGdldENhbGxEYXRhKEpTQzo6SlNDZWxsKiwgSlNDOjpDYWxsRGF0YSYp
OwogICAgIHN0YXRpYyBKU0M6OkNvbnN0cnVjdFR5cGUgZ2V0Q29uc3RydWN0RGF0YShKU0M6OkpT
Q2VsbCosIEpTQzo6Q29uc3RydWN0RGF0YSYpOwogCi0gICAgc3RhdGljIGJvb2wgZ2V0T3duUHJv
cGVydHlTbG90KEpTQzo6SlNDZWxsKiwgSlNDOjpFeGVjU3RhdGUqLCBjb25zdCBKU0M6OklkZW50
aWZpZXImIHByb3BlcnR5TmFtZSwgSlNDOjpQcm9wZXJ0eVNsb3QmKTsKLSAgICBzdGF0aWMgYm9v
bCBnZXRPd25Qcm9wZXJ0eURlc2NyaXB0b3IoSlNDOjpKU09iamVjdCosIEpTQzo6RXhlY1N0YXRl
KiwgY29uc3QgSlNDOjpJZGVudGlmaWVyJiBwcm9wZXJ0eU5hbWUsIEpTQzo6UHJvcGVydHlEZXNj
cmlwdG9yJik7Ci0gICAgc3RhdGljIHZvaWQgcHV0KEpTQzo6SlNDZWxsKiwgSlNDOjpFeGVjU3Rh
dGUqLCBjb25zdCBKU0M6OklkZW50aWZpZXImIHByb3BlcnR5TmFtZSwgSlNDOjpKU1ZhbHVlLCBK
U0M6OlB1dFByb3BlcnR5U2xvdCYpOworICAgIHN0YXRpYyBib29sIGdldE93blByb3BlcnR5U2xv
dChKU0M6OkpTQ2VsbCosIEpTQzo6RXhlY1N0YXRlKiwgSlNDOjpQcm9wZXJ0eU5hbWUsIEpTQzo6
UHJvcGVydHlTbG90Jik7CisgICAgc3RhdGljIGJvb2wgZ2V0T3duUHJvcGVydHlEZXNjcmlwdG9y
KEpTQzo6SlNPYmplY3QqLCBKU0M6OkV4ZWNTdGF0ZSosIEpTQzo6UHJvcGVydHlOYW1lLCBKU0M6
OlByb3BlcnR5RGVzY3JpcHRvciYpOworICAgIHN0YXRpYyB2b2lkIHB1dChKU0M6OkpTQ2VsbCos
IEpTQzo6RXhlY1N0YXRlKiwgSlNDOjpQcm9wZXJ0eU5hbWUsIEpTQzo6SlNWYWx1ZSwgSlNDOjpQ
dXRQcm9wZXJ0eVNsb3QmKTsKIAotICAgIHN0YXRpYyBib29sIGRlbGV0ZVByb3BlcnR5KEpTQzo6
SlNDZWxsKiwgSlNDOjpFeGVjU3RhdGUqLCBjb25zdCBKU0M6OklkZW50aWZpZXImIHByb3BlcnR5
TmFtZSk7CisgICAgc3RhdGljIGJvb2wgZGVsZXRlUHJvcGVydHkoSlNDOjpKU0NlbGwqLCBKU0M6
OkV4ZWNTdGF0ZSosIEpTQzo6UHJvcGVydHlOYW1lKTsKICAgICBzdGF0aWMgYm9vbCBkZWxldGVQ
cm9wZXJ0eUJ5SW5kZXgoSlNDOjpKU0NlbGwqLCBKU0M6OkV4ZWNTdGF0ZSosIHVuc2lnbmVkIHBy
b3BlcnR5TmFtZSk7CiAKICAgICBib29sIGRlbGV0ZVByb3BlcnR5KEpTQzo6RXhlY1N0YXRlKiwg
TlBJZGVudGlmaWVyIHByb3BlcnR5TmFtZSk7CiAKICAgICBzdGF0aWMgdm9pZCBnZXRPd25Qcm9w
ZXJ0eU5hbWVzKEpTQzo6SlNPYmplY3QqLCBKU0M6OkV4ZWNTdGF0ZSosIEpTQzo6UHJvcGVydHlO
YW1lQXJyYXkmLCBKU0M6OkVudW1lcmF0aW9uTW9kZSk7CiAKLSAgICBzdGF0aWMgSlNDOjpKU1Zh
bHVlIHByb3BlcnR5R2V0dGVyKEpTQzo6RXhlY1N0YXRlKiwgSlNDOjpKU1ZhbHVlLCBjb25zdCBK
U0M6OklkZW50aWZpZXImKTsKLSAgICBzdGF0aWMgSlNDOjpKU1ZhbHVlIG1ldGhvZEdldHRlcihK
U0M6OkV4ZWNTdGF0ZSosIEpTQzo6SlNWYWx1ZSwgY29uc3QgSlNDOjpJZGVudGlmaWVyJik7Cisg
ICAgc3RhdGljIEpTQzo6SlNWYWx1ZSBwcm9wZXJ0eUdldHRlcihKU0M6OkV4ZWNTdGF0ZSosIEpT
Qzo6SlNWYWx1ZSwgSlNDOjpQcm9wZXJ0eU5hbWUpOworICAgIHN0YXRpYyBKU0M6OkpTVmFsdWUg
bWV0aG9kR2V0dGVyKEpTQzo6RXhlY1N0YXRlKiwgSlNDOjpKU1ZhbHVlLCBKU0M6OlByb3BlcnR5
TmFtZSk7CiAgICAgc3RhdGljIEpTQzo6SlNPYmplY3QqIHRocm93SW52YWxpZEFjY2Vzc0Vycm9y
KEpTQzo6RXhlY1N0YXRlKik7CiAKICAgICBOUFJ1bnRpbWVPYmplY3RNYXAqIG1fb2JqZWN0TWFw
OwpJbmRleDogU291cmNlL1dlYktpdC9tYWMvQ2hhbmdlTG9nCj09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJj
ZS9XZWJLaXQvbWFjL0NoYW5nZUxvZwkocmV2aXNpb24gMTE2NzkyKQorKysgU291cmNlL1dlYktp
dC9tYWMvQ2hhbmdlTG9nCSh3b3JraW5nIGNvcHkpCkBAIC0xLDMgKzEsMzQgQEAKKzIwMTItMDUt
MTEgIEdhdmluIEJhcnJhY2xvdWdoICA8YmFycmFjbG91Z2hAYXBwbGUuY29tPgorCisgICAgICAg
IEludHJvZHVjZSBQcm9wZXJ0eU5hbWUgY2xhc3MKKyAgICAgICAgaHR0cHM6Ly9idWdzLndlYmtp
dC5vcmcvc2hvd19idWcuY2dpP2lkPTg2MjQxCisKKyAgICAgICAgUmV2aWV3ZWQgYnkgTk9CT0RZ
IChPT1BTISkuCisKKyAgICAgICAgUmVwbGFjZSAnY29uc3QgSWRlbnRpZmllciYnIGFyZ3VtZW50
cyB0byBmdW5jdGlvbnMgYWNjZXNzaW5nIG9iamVjdCBwcm9wZXJ0aWVzIHdpdGggYSBuZXcgJ1By
b3BlcnR5TmFtZScgdHlwZS4KKyAgICAgICAgVGhpcyBjaGFuZ2UgcGF2ZXMgdGhlIHdheSB0byBh
bGxvdyBmb3IgcHJvcGVydGllcyBrZXllZCBieSB2YWx1ZXMgdGhhdCBhcmUgbm90IElkZW50aWZp
ZXJzLgorCisgICAgICAgIFRoaXMgY2hhbmdlIGlzIGxhcmdlbHkgYSBtZWNoYW5pY2FsIGZpbmQg
JiByZXBsYWNlLgorICAgICAgICBJdCBhbHNvIGNoYW5nZXMgSlNGdW5jdGlvbidzIGNvbnN0cnVj
dG9yIHRvIHRha2UgYSBVU3RyaW5nJiBpbnN0ZWFkIG9mIGFuIElkZW50aWZpZXImCisgICAgICAg
IChzaW5jZSBpbiBzb21lIGNhc2VzIHdlIGNhbiBubyBsb25nZXIgZ3VhcmFudGVlIHRoYXQgd2Un
bGxsIGhhdmUgYW4gSWRlbnRpZmllciksIGFuZAorICAgICAgICB1bmlmaWVzIElkZW50aWZpZXIn
cyBtZXRob2RzIHRvIG9idGFpbiBhcnJheSBpbmRpY2VzIG9udG8gUHJvcGVydHlOYW1lLgorCisg
ICAgICAgIFRoZSBuZXcgUHJvcGVydHlOYW1lIGNsYXNzIHJldGFpbnMgdGhlIGFiaWxpdHkgdG8g
c3VwcG9ydCAuaW1wbCgpIGFuZCAudXN0cmluZygpLCBidXQKKyAgICAgICAgaW4gYSBmdXR1cmUg
cGF0Y2ggd2UgbWF5IG5lZWQgdG8gcmV3b3JrIHRoaXMsIHNpbmNlIG5vdCBhbGwgUHJvcGVydHlO
YW1lcyBzaG91bGQgYmUKKyAgICAgICAgZXF1YWwgYmFzZWQgb24gdGhlaXIgc3RyaW5nIHJlcHJl
c2VudGF0aW9uLgorCisgICAgICAgICogUGx1Z2lucy9Ib3N0ZWQvUHJveHlJbnN0YW5jZS5oOgor
ICAgICAgICAoUHJveHlJbnN0YW5jZSk6CisgICAgICAgICogUGx1Z2lucy9Ib3N0ZWQvUHJveHlJ
bnN0YW5jZS5tbToKKyAgICAgICAgKFByb3h5Q2xhc3MpOgorICAgICAgICAoV2ViS2l0OjpQcm94
eUNsYXNzOjptZXRob2RzTmFtZWQpOgorICAgICAgICAoV2ViS2l0OjpQcm94eUNsYXNzOjpmaWVs
ZE5hbWVkKToKKyAgICAgICAgKFdlYktpdDo6UHJveHlSdW50aW1lTWV0aG9kOjpjcmVhdGUpOgor
ICAgICAgICAoV2ViS2l0OjpQcm94eVJ1bnRpbWVNZXRob2Q6OmZpbmlzaENyZWF0aW9uKToKKyAg
ICAgICAgKFdlYktpdDo6UHJveHlJbnN0YW5jZTo6Z2V0TWV0aG9kKToKKyAgICAgICAgKFdlYktp
dDo6UHJveHlJbnN0YW5jZTo6bWV0aG9kc05hbWVkKToKKyAgICAgICAgKFdlYktpdDo6UHJveHlJ
bnN0YW5jZTo6ZmllbGROYW1lZCk6CisKIDIwMTItMDUtMTAgIEd5dXlvdW5nIEtpbSAgPGd5dXlv
dW5nLmtpbUBzYW1zdW5nLmNvbT4KIAogICAgICAgICBNb3ZlIHJlc3VtZUFuaW1hdGlvbnMgdG8g
dXNlIEludGVybmFscyBpbnRlcmZhY2UKSW5kZXg6IFNvdXJjZS9XZWJLaXQvbWFjL1BsdWdpbnMv
SG9zdGVkL1Byb3h5SW5zdGFuY2UuaAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2ViS2l0L21hYy9Q
bHVnaW5zL0hvc3RlZC9Qcm94eUluc3RhbmNlLmgJKHJldmlzaW9uIDExNjY2NykKKysrIFNvdXJj
ZS9XZWJLaXQvbWFjL1BsdWdpbnMvSG9zdGVkL1Byb3h5SW5zdGFuY2UuaAkod29ya2luZyBjb3B5
KQpAQCAtNDYsOCArNDYsOCBAQCBwdWJsaWM6CiAgICAgfQogICAgIH5Qcm94eUluc3RhbmNlKCk7
CiAKLSAgICBKU0M6OkJpbmRpbmdzOjpNZXRob2RMaXN0IG1ldGhvZHNOYW1lZChjb25zdCBKU0M6
OklkZW50aWZpZXImKTsKLSAgICBKU0M6OkJpbmRpbmdzOjpGaWVsZCogZmllbGROYW1lZChjb25z
dCBKU0M6OklkZW50aWZpZXImKTsKKyAgICBKU0M6OkJpbmRpbmdzOjpNZXRob2RMaXN0IG1ldGhv
ZHNOYW1lZChKU0M6OlByb3BlcnR5TmFtZSk7CisgICAgSlNDOjpCaW5kaW5nczo6RmllbGQqIGZp
ZWxkTmFtZWQoSlNDOjpQcm9wZXJ0eU5hbWUpOwogCiAgICAgSlNDOjpKU1ZhbHVlIGZpZWxkVmFs
dWUoSlNDOjpFeGVjU3RhdGUqLCBjb25zdCBKU0M6OkJpbmRpbmdzOjpGaWVsZCopIGNvbnN0Owog
ICAgIHZvaWQgc2V0RmllbGRWYWx1ZShKU0M6OkV4ZWNTdGF0ZSosIGNvbnN0IEpTQzo6QmluZGlu
Z3M6OkZpZWxkKiwgSlNDOjpKU1ZhbHVlKSBjb25zdDsKQEAgLTY2LDcgKzY2LDcgQEAgcHJpdmF0
ZToKIAogICAgIHZpcnR1YWwgSlNDOjpCaW5kaW5nczo6Q2xhc3MqIGdldENsYXNzKCkgY29uc3Q7
CiAKLSAgICB2aXJ0dWFsIEpTQzo6SlNWYWx1ZSBnZXRNZXRob2QoSlNDOjpFeGVjU3RhdGUqIGV4
ZWMsIGNvbnN0IEpTQzo6SWRlbnRpZmllciYgcHJvcGVydHlOYW1lKTsKKyAgICB2aXJ0dWFsIEpT
Qzo6SlNWYWx1ZSBnZXRNZXRob2QoSlNDOjpFeGVjU3RhdGUqLCBKU0M6OlByb3BlcnR5TmFtZSk7
CiAgICAgdmlydHVhbCBKU0M6OkpTVmFsdWUgaW52b2tlTWV0aG9kKEpTQzo6RXhlY1N0YXRlKiwg
SlNDOjpSdW50aW1lTWV0aG9kKik7CiAKICAgICB2aXJ0dWFsIGJvb2wgc3VwcG9ydHNJbnZva2VE
ZWZhdWx0TWV0aG9kKCkgY29uc3Q7CkluZGV4OiBTb3VyY2UvV2ViS2l0L21hYy9QbHVnaW5zL0hv
c3RlZC9Qcm94eUluc3RhbmNlLm1tCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9XZWJLaXQvbWFjL1Bs
dWdpbnMvSG9zdGVkL1Byb3h5SW5zdGFuY2UubW0JKHJldmlzaW9uIDExNjY2NykKKysrIFNvdXJj
ZS9XZWJLaXQvbWFjL1BsdWdpbnMvSG9zdGVkL1Byb3h5SW5zdGFuY2UubW0JKHdvcmtpbmcgY29w
eSkKQEAgLTUwLDE2ICs1MCwxNiBAQCBuYW1lc3BhY2UgV2ViS2l0IHsKIAogY2xhc3MgUHJveHlD
bGFzcyA6IHB1YmxpYyBKU0M6OkJpbmRpbmdzOjpDbGFzcyB7CiBwcml2YXRlOgotICAgIHZpcnR1
YWwgTWV0aG9kTGlzdCBtZXRob2RzTmFtZWQoY29uc3QgSWRlbnRpZmllciYsIEluc3RhbmNlKikg
Y29uc3Q7Ci0gICAgdmlydHVhbCBGaWVsZCogZmllbGROYW1lZChjb25zdCBJZGVudGlmaWVyJiwg
SW5zdGFuY2UqKSBjb25zdDsKKyAgICB2aXJ0dWFsIE1ldGhvZExpc3QgbWV0aG9kc05hbWVkKFBy
b3BlcnR5TmFtZSwgSW5zdGFuY2UqKSBjb25zdDsKKyAgICB2aXJ0dWFsIEZpZWxkKiBmaWVsZE5h
bWVkKFByb3BlcnR5TmFtZSwgSW5zdGFuY2UqKSBjb25zdDsKIH07CiAKLU1ldGhvZExpc3QgUHJv
eHlDbGFzczo6bWV0aG9kc05hbWVkKGNvbnN0IElkZW50aWZpZXImIGlkZW50aWZpZXIsIEluc3Rh
bmNlKiBpbnN0YW5jZSkgY29uc3QKK01ldGhvZExpc3QgUHJveHlDbGFzczo6bWV0aG9kc05hbWVk
KFByb3BlcnR5TmFtZSBpZGVudGlmaWVyLCBJbnN0YW5jZSogaW5zdGFuY2UpIGNvbnN0CiB7CiAg
ICAgcmV0dXJuIHN0YXRpY19jYXN0PFByb3h5SW5zdGFuY2UqPihpbnN0YW5jZSktPm1ldGhvZHNO
YW1lZChpZGVudGlmaWVyKTsKIH0KIAotRmllbGQqIFByb3h5Q2xhc3M6OmZpZWxkTmFtZWQoY29u
c3QgSWRlbnRpZmllciYgaWRlbnRpZmllciwgSW5zdGFuY2UqIGluc3RhbmNlKSBjb25zdAorRmll
bGQqIFByb3h5Q2xhc3M6OmZpZWxkTmFtZWQoUHJvcGVydHlOYW1lIGlkZW50aWZpZXIsIEluc3Rh
bmNlKiBpbnN0YW5jZSkgY29uc3QKIHsKICAgICByZXR1cm4gc3RhdGljX2Nhc3Q8UHJveHlJbnN0
YW5jZSo+KGluc3RhbmNlKS0+ZmllbGROYW1lZChpZGVudGlmaWVyKTsKIH0KQEAgLTE4MSw3ICsx
ODEsNyBAQCBjbGFzcyBQcm94eVJ1bnRpbWVNZXRob2QgOiBwdWJsaWMgUnVudGltCiBwdWJsaWM6
CiAgICAgdHlwZWRlZiBSdW50aW1lTWV0aG9kIEJhc2U7CiAKLSAgICBzdGF0aWMgUHJveHlSdW50
aW1lTWV0aG9kKiBjcmVhdGUoRXhlY1N0YXRlKiBleGVjLCBKU0dsb2JhbE9iamVjdCogZ2xvYmFs
T2JqZWN0LCBjb25zdCBJZGVudGlmaWVyJiBuYW1lLCBCaW5kaW5nczo6TWV0aG9kTGlzdCYgbGlz
dCkKKyAgICBzdGF0aWMgUHJveHlSdW50aW1lTWV0aG9kKiBjcmVhdGUoRXhlY1N0YXRlKiBleGVj
LCBKU0dsb2JhbE9iamVjdCogZ2xvYmFsT2JqZWN0LCBjb25zdCBVU3RyaW5nJiBuYW1lLCBCaW5k
aW5nczo6TWV0aG9kTGlzdCYgbGlzdCkKICAgICB7CiAgICAgICAgIC8vIEZJWE1FOiBkZXByZWNh
dGVkR2V0RE9NU3RydWN0dXJlIHVzZXMgdGhlIHByb3RvdHlwZSBvZmYgb2YgdGhlIHdyb25nIGds
b2JhbCBvYmplY3QKICAgICAgICAgLy8gZXhlYy1nbG9iYWxEYXRhKCkgaXMgYWxzbyBsaWtlbHkg
d3JvbmcuCkBAIC0yMDQsNyArMjA0LDcgQEAgcHJpdmF0ZToKICAgICB7CiAgICAgfQogCi0gICAg
dm9pZCBmaW5pc2hDcmVhdGlvbihKU0dsb2JhbERhdGEmIGdsb2JhbERhdGEsIGNvbnN0IElkZW50
aWZpZXImIG5hbWUpCisgICAgdm9pZCBmaW5pc2hDcmVhdGlvbihKU0dsb2JhbERhdGEmIGdsb2Jh
bERhdGEsIGNvbnN0IFVTdHJpbmcmIG5hbWUpCiAgICAgewogICAgICAgICBCYXNlOjpmaW5pc2hD
cmVhdGlvbihnbG9iYWxEYXRhLCBuYW1lKTsKICAgICAgICAgQVNTRVJUKGluaGVyaXRzKCZzX2lu
Zm8pKTsKQEAgLTIxMywxMCArMjEzLDEwIEBAIHByaXZhdGU6CiAKIGNvbnN0IENsYXNzSW5mbyBQ
cm94eVJ1bnRpbWVNZXRob2Q6OnNfaW5mbyA9IHsgIlByb3h5UnVudGltZU1ldGhvZCIsICZSdW50
aW1lTWV0aG9kOjpzX2luZm8sIDAsIDAsIENSRUFURV9NRVRIT0RfVEFCTEUoUHJveHlSdW50aW1l
TWV0aG9kKSB9OwogCi1KU1ZhbHVlIFByb3h5SW5zdGFuY2U6OmdldE1ldGhvZChKU0M6OkV4ZWNT
dGF0ZSogZXhlYywgY29uc3QgSlNDOjpJZGVudGlmaWVyJiBwcm9wZXJ0eU5hbWUpCitKU1ZhbHVl
IFByb3h5SW5zdGFuY2U6OmdldE1ldGhvZChKU0M6OkV4ZWNTdGF0ZSogZXhlYywgUHJvcGVydHlO
YW1lIHByb3BlcnR5TmFtZSkKIHsKICAgICBNZXRob2RMaXN0IG1ldGhvZExpc3QgPSBnZXRDbGFz
cygpLT5tZXRob2RzTmFtZWQocHJvcGVydHlOYW1lLCB0aGlzKTsKLSAgICByZXR1cm4gUHJveHlS
dW50aW1lTWV0aG9kOjpjcmVhdGUoZXhlYywgZXhlYy0+bGV4aWNhbEdsb2JhbE9iamVjdCgpLCBw
cm9wZXJ0eU5hbWUsIG1ldGhvZExpc3QpOworICAgIHJldHVybiBQcm94eVJ1bnRpbWVNZXRob2Q6
OmNyZWF0ZShleGVjLCBleGVjLT5sZXhpY2FsR2xvYmFsT2JqZWN0KCksIHByb3BlcnR5TmFtZS5p
bXBsKCksIG1ldGhvZExpc3QpOwogfQogCiBKU1ZhbHVlIFByb3h5SW5zdGFuY2U6Omludm9rZU1l
dGhvZChFeGVjU3RhdGUqIGV4ZWMsIEpTQzo6UnVudGltZU1ldGhvZCogcnVudGltZU1ldGhvZCkK
QEAgLTM0Niw3ICszNDYsNyBAQCB2b2lkIFByb3h5SW5zdGFuY2U6OmdldFByb3BlcnR5TmFtZXMo
RXhlCiAgICAgfQogfQogCi1NZXRob2RMaXN0IFByb3h5SW5zdGFuY2U6Om1ldGhvZHNOYW1lZChj
b25zdCBJZGVudGlmaWVyJiBpZGVudGlmaWVyKQorTWV0aG9kTGlzdCBQcm94eUluc3RhbmNlOjpt
ZXRob2RzTmFtZWQoUHJvcGVydHlOYW1lIGlkZW50aWZpZXIpCiB7CiAgICAgaWYgKCFtX2luc3Rh
bmNlUHJveHkpCiAgICAgICAgIHJldHVybiBNZXRob2RMaXN0KCk7CkBAIC0zNjAsNyArMzYwLDcg
QEAgTWV0aG9kTGlzdCBQcm94eUluc3RhbmNlOjptZXRob2RzTmFtZWQoYwogICAgICAgICByZXR1
cm4gbWV0aG9kTGlzdDsKICAgICB9CiAgICAgCi0gICAgdWludDY0X3QgbWV0aG9kTmFtZSA9IHJl
aW50ZXJwcmV0X2Nhc3Q8dWludDY0X3Q+KF9OUE5fR2V0U3RyaW5nSWRlbnRpZmllcihpZGVudGlm
aWVyLmFzY2lpKCkuZGF0YSgpKSk7CisgICAgdWludDY0X3QgbWV0aG9kTmFtZSA9IHJlaW50ZXJw
cmV0X2Nhc3Q8dWludDY0X3Q+KF9OUE5fR2V0U3RyaW5nSWRlbnRpZmllcihpZGVudGlmaWVyLnVz
dHJpbmcoKS5hc2NpaSgpLmRhdGEoKSkpOwogICAgIHVpbnQzMl90IHJlcXVlc3RJRCA9IG1faW5z
dGFuY2VQcm94eS0+bmV4dFJlcXVlc3RJRCgpOwogICAgIAogICAgIGlmIChfV0tQSE5QT2JqZWN0
SGFzTWV0aG9kKG1faW5zdGFuY2VQcm94eS0+aG9zdFByb3h5KCktPnBvcnQoKSwKQEAgLTM4Niw3
ICszODYsNyBAQCBNZXRob2RMaXN0IFByb3h5SW5zdGFuY2U6Om1ldGhvZHNOYW1lZChjCiAgICAg
cmV0dXJuIG1ldGhvZExpc3Q7CiB9CiAKLUZpZWxkKiBQcm94eUluc3RhbmNlOjpmaWVsZE5hbWVk
KGNvbnN0IElkZW50aWZpZXImIGlkZW50aWZpZXIpCitGaWVsZCogUHJveHlJbnN0YW5jZTo6Zmll
bGROYW1lZChQcm9wZXJ0eU5hbWUgaWRlbnRpZmllcikKIHsKICAgICBpZiAoIW1faW5zdGFuY2VQ
cm94eSkKICAgICAgICAgcmV0dXJuIDA7CkBAIC0zOTYsNyArMzk2LDcgQEAgRmllbGQqIFByb3h5
SW5zdGFuY2U6OmZpZWxkTmFtZWQoY29uc3QgSQogICAgIGlmIChleGlzdGluZ01hcEVudHJ5ICE9
IG1fZmllbGRzLmVuZCgpKQogICAgICAgICByZXR1cm4gZXhpc3RpbmdNYXBFbnRyeS0+c2Vjb25k
OwogICAgIAotICAgIHVpbnQ2NF90IHByb3BlcnR5TmFtZSA9IHJlaW50ZXJwcmV0X2Nhc3Q8dWlu
dDY0X3Q+KF9OUE5fR2V0U3RyaW5nSWRlbnRpZmllcihpZGVudGlmaWVyLmFzY2lpKCkuZGF0YSgp
KSk7CisgICAgdWludDY0X3QgcHJvcGVydHlOYW1lID0gcmVpbnRlcnByZXRfY2FzdDx1aW50NjRf
dD4oX05QTl9HZXRTdHJpbmdJZGVudGlmaWVyKGlkZW50aWZpZXIudXN0cmluZygpLmFzY2lpKCku
ZGF0YSgpKSk7CiAgICAgdWludDMyX3QgcmVxdWVzdElEID0gbV9pbnN0YW5jZVByb3h5LT5uZXh0
UmVxdWVzdElEKCk7CiAgICAgCiAgICAgaWYgKF9XS1BITlBPYmplY3RIYXNQcm9wZXJ0eShtX2lu
c3RhbmNlUHJveHktPmhvc3RQcm94eSgpLT5wb3J0KCksCg==
</data>

          </attachment>
          <attachment
              isobsolete="0"
              ispatch="1"
              isprivate="0"
          >
            <attachid>141654</attachid>
            <date>2012-05-13 23:58:10 -0700</date>
            <delta_ts>2012-05-14 00:03:12 -0700</delta_ts>
            <desc>Bug fixes for a couple of regressions this patch introduced</desc>
            <filename>86241.fixes.patch</filename>
            <type>text/plain</type>
            <size>1575</size>
            <attacher name="Gavin Barraclough">barraclough</attacher>
            
              <data encoding="base64">SW5kZXg6IFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9DaGFuZ2VMb2cKPT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291
cmNlL0phdmFTY3JpcHRDb3JlL0NoYW5nZUxvZwkocmV2aXNpb24gMTE2OTE2KQorKysgU291cmNl
L0phdmFTY3JpcHRDb3JlL0NoYW5nZUxvZwkod29ya2luZyBjb3B5KQpAQCAtMSwzICsxLDE4IEBA
CisyMDEyLTA1LTEzICBHYXZpbiBCYXJyYWNsb3VnaCAgPGJhcnJhY2xvdWdoQGFwcGxlLmNvbT4K
KworICAgICAgICBJbnRyb2R1Y2UgUHJvcGVydHlOYW1lIGNsYXNzCisgICAgICAgIGh0dHBzOi8v
YnVncy53ZWJraXQub3JnL3Nob3dfYnVnLmNnaT9pZD04NjI0MQorCisgICAgICAgIFJldmlld2Vk
IGJ5IE5PQk9EWSAoT09QUyEpLgorCisgICAgICAgIFRoaXMgcGF0Y2ggaW50cm9kdWNlZCBhIGNv
dXBsZSBvZiBzbWFsbCBidWdzLgorCisgICAgICAgICogcnVudGltZS9Qcm9wZXJ0eU5hbWUuaDoK
KyAgICAgICAgKEpTQzo6dG9VSW50MzJGcm9tQ2hhcmFjdGVycyk6CisgICAgICAgICAgICAtIFJl
dHVybmluZyB3cm9uZyB2YWx1ZSBmb3IgIiIgLSBzaG91bGQgbm90IGNvbnZlcnQgdG8gMC4KKyAg
ICAgICAgKEpTQzo6UHJvcGVydHlOYW1lOjpQcm9wZXJ0eU5hbWUpOgorICAgICAgICAgICAgLSBS
ZW1vdmUgdGhlIEFTU0VSVCwgaXQgd2FzIGEgbGl0dGxlIHRvbyBhc3BpcmF0aW9uYWwuCisKIDIw
MTItMDUtMTEgIEdhdmluIEJhcnJhY2xvdWdoICA8YmFycmFjbG91Z2hAYXBwbGUuY29tPgogCiAg
ICAgICAgIEludHJvZHVjZSBQcm9wZXJ0eU5hbWUgY2xhc3MKSW5kZXg6IFNvdXJjZS9KYXZhU2Ny
aXB0Q29yZS9ydW50aW1lL1Byb3BlcnR5TmFtZS5oCj09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9KYXZh
U2NyaXB0Q29yZS9ydW50aW1lL1Byb3BlcnR5TmFtZS5oCShyZXZpc2lvbiAxMTY4NjUpCisrKyBT
b3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9Qcm9wZXJ0eU5hbWUuaAkod29ya2luZyBjb3B5
KQpAQCAtMzUsNyArMzUsNyBAQCBBTFdBWVNfSU5MSU5FIHVpbnQzMl90IHRvVUludDMyRnJvbUNo
YXJhCiB7CiAgICAgLy8gQW4gZW1wdHkgc3RyaW5nIGlzIG5vdCBhIG51bWJlci4KICAgICBpZiAo
IWxlbmd0aCkKLSAgICAgICAgcmV0dXJuIDA7CisgICAgICAgIHJldHVybiBVSU5UX01BWDsKIAog
ICAgIC8vIEdldCB0aGUgZmlyc3QgY2hhcmFjdGVyLCB0dXJuaW5nIGl0IGludG8gYSBkaWdpdC4K
ICAgICB1aW50MzJfdCB2YWx1ZSA9IGNoYXJhY3RlcnNbMF0gLSAnMCc7CkBAIC04MCw3ICs4MCw2
IEBAIHB1YmxpYzoKICAgICBQcm9wZXJ0eU5hbWUoY29uc3QgSWRlbnRpZmllciYgcHJvcGVydHlO
YW1lKQogICAgICAgICA6IG1faW1wbChwcm9wZXJ0eU5hbWUuaW1wbCgpKQogICAgIHsKLSAgICAg
ICAgQVNTRVJUKCFwcm9wZXJ0eU5hbWUuaXNOdWxsKCkpOwogICAgIH0KIAogICAgIFN0cmluZ0lt
cGwqIGltcGwoKSBjb25zdCB7IHJldHVybiBtX2ltcGw7IH0K
</data>
<flag name="review"
          id="147823"
          type_id="1"
          status="+"
          setter="darin"
    />
          </attachment>
      

    </bug>

</bugzilla>