<?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>147876</bug_id>
          
          <creation_ts>2015-08-11 02:23:00 -0700</creation_ts>
          <short_desc>[ES6] prototyping module loader in JSC shell</short_desc>
          <delta_ts>2015-08-20 22:00:08 -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>
          
          <blocked>147340</blocked>
    
    <blocked>148053</blocked>
          <everconfirmed>1</everconfirmed>
          <reporter name="Yusuke Suzuki">ysuzuki</reporter>
          <assigned_to name="Yusuke Suzuki">ysuzuki</assigned_to>
          <cc>commit-queue</cc>
    
    <cc>fealebenpae</cc>
    
    <cc>fpizlo</cc>
    
    <cc>ggaren</cc>
    
    <cc>ivanbuhov2</cc>
    
    <cc>mark.lam</cc>
    
    <cc>saam</cc>
    
    <cc>sam</cc>
          

      

      

      

          <comment_sort_order>oldest_to_newest</comment_sort_order>  
          <long_desc isprivate="0" >
    <commentid>1116523</commentid>
    <comment_count>0</comment_count>
    <who name="Yusuke Suzuki">ysuzuki</who>
    <bug_when>2015-08-11 02:23:00 -0700</bug_when>
    <thetext>Let&apos;s implement the synchronous module loader in JSC shell side to test the dependency analysis.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1117161</commentid>
    <comment_count>1</comment_count>
    <who name="Yusuke Suzuki">ysuzuki</who>
    <bug_when>2015-08-12 20:03:38 -0700</bug_when>
    <thetext>After roughly seeing the module loader draft[1], I think the details are already stated.
Since JSC already has the Promises and the microtasks system inside the framework, we can implement the module&apos;s asynchronous loader (of course, file loading is done synchronously in our first implementation).

[1]: https://whatwg.github.io/loader/</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1117476</commentid>
    <comment_count>2</comment_count>
    <who name="Yusuke Suzuki">ysuzuki</who>
    <bug_when>2015-08-13 17:01:58 -0700</bug_when>
    <thetext>I&apos;m now planning to construct the loader with the ES6 Promises.
But when using it, we should do it carefully; Do not use the user-modifiable values and do not perform the user-observable operations.

Now, All the operation needed in the Loader implementation are,

1. Promise#then
2. Promise.all

So, I&apos;ll extract the non-user-observable part to the Promise operation and create the new methods, @then and @all to use them.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1117844</commentid>
    <comment_count>3</comment_count>
      <attachid>259060</attachid>
    <who name="Yusuke Suzuki">ysuzuki</who>
    <bug_when>2015-08-14 17:49:23 -0700</bug_when>
    <thetext>Created attachment 259060
Patch

WIP</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1117880</commentid>
    <comment_count>4</comment_count>
    <who name="Yusuke Suzuki">ysuzuki</who>
    <bug_when>2015-08-14 20:18:03 -0700</bug_when>
    <thetext>Opened the issues related to this.

https://github.com/whatwg/loader/pull/66
https://github.com/whatwg/loader/pull/67</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1117910</commentid>
    <comment_count>5</comment_count>
    <who name="Yusuke Suzuki">ysuzuki</who>
    <bug_when>2015-08-15 00:09:25 -0700</bug_when>
    <thetext>Naive loader implementation based on the spec causes infinite recursion when there&apos;s circular dependencies.
I think we can solve this by introducing the one more promise that represents &quot;this modules now resolving the dependent ones&quot;.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1117911</commentid>
    <comment_count>6</comment_count>
      <attachid>259085</attachid>
    <who name="Yusuke Suzuki">ysuzuki</who>
    <bug_when>2015-08-15 01:05:47 -0700</bug_when>
    <thetext>Created attachment 259085
Patch

WIP</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1117912</commentid>
    <comment_count>7</comment_count>
    <who name="Yusuke Suzuki">ysuzuki</who>
    <bug_when>2015-08-15 01:26:27 -0700</bug_when>
    <thetext>https://github.com/whatwg/loader/issues/68 Proposed fix.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1117916</commentid>
    <comment_count>8</comment_count>
    <who name="WebKit Commit Bot">commit-queue</who>
    <bug_when>2015-08-15 01:59:59 -0700</bug_when>
    <thetext>Attachment 259085 did not pass style-queue:


ERROR: Source/JavaScriptCore/parser/NodesAnalyzeModule.cpp:30:  Alphabetical sorting problem.  [build/include_order] [4]
ERROR: Source/WebCore/ChangeLog:8:  You should remove the &apos;No new tests&apos; and either add and list tests, or explain why no new tests were possible.  [changelog/nonewtests] [5]
ERROR: Source/JavaScriptCore/runtime/JSModuleRecord.h:151:  This { should be at the end of the previous line  [whitespace/braces] [4]
ERROR: Source/JavaScriptCore/runtime/Completion.cpp:33:  Alphabetical sorting problem.  [build/include_order] [4]
Total errors found: 4 in 35 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>1117917</commentid>
    <comment_count>9</comment_count>
      <attachid>259087</attachid>
    <who name="Yusuke Suzuki">ysuzuki</who>
    <bug_when>2015-08-15 02:28:55 -0700</bug_when>
    <thetext>Created attachment 259087
Patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1117918</commentid>
    <comment_count>10</comment_count>
    <who name="WebKit Commit Bot">commit-queue</who>
    <bug_when>2015-08-15 02:31:38 -0700</bug_when>
    <thetext>Attachment 259087 did not pass style-queue:


ERROR: Source/JavaScriptCore/parser/NodesAnalyzeModule.cpp:30:  Alphabetical sorting problem.  [build/include_order] [4]
ERROR: Source/JavaScriptCore/runtime/JSModuleRecord.h:151:  This { should be at the end of the previous line  [whitespace/braces] [4]
Total errors found: 2 in 38 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>1117967</commentid>
    <comment_count>11</comment_count>
      <attachid>259100</attachid>
    <who name="Yusuke Suzuki">ysuzuki</who>
    <bug_when>2015-08-15 12:48:36 -0700</bug_when>
    <thetext>Created attachment 259100
Patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1117969</commentid>
    <comment_count>12</comment_count>
    <who name="WebKit Commit Bot">commit-queue</who>
    <bug_when>2015-08-15 12:51:22 -0700</bug_when>
    <thetext>Attachment 259100 did not pass style-queue:


ERROR: Source/JavaScriptCore/parser/NodesAnalyzeModule.cpp:30:  Alphabetical sorting problem.  [build/include_order] [4]
ERROR: Source/JavaScriptCore/runtime/JSModuleRecord.h:151:  This { should be at the end of the previous line  [whitespace/braces] [4]
Total errors found: 2 in 38 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>1117971</commentid>
    <comment_count>13</comment_count>
      <attachid>259101</attachid>
    <who name="Yusuke Suzuki">ysuzuki</who>
    <bug_when>2015-08-15 13:08:07 -0700</bug_when>
    <thetext>Created attachment 259101
Patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1117972</commentid>
    <comment_count>14</comment_count>
    <who name="WebKit Commit Bot">commit-queue</who>
    <bug_when>2015-08-15 13:10:52 -0700</bug_when>
    <thetext>Attachment 259101 did not pass style-queue:


ERROR: Source/JavaScriptCore/parser/NodesAnalyzeModule.cpp:30:  Alphabetical sorting problem.  [build/include_order] [4]
ERROR: Source/JavaScriptCore/runtime/JSModuleRecord.h:151:  This { should be at the end of the previous line  [whitespace/braces] [4]
Total errors found: 2 in 38 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>1117986</commentid>
    <comment_count>15</comment_count>
    <who name="Yusuke Suzuki">ysuzuki</who>
    <bug_when>2015-08-15 16:00:35 -0700</bug_when>
    <thetext>ok, pstch is ready.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1118004</commentid>
    <comment_count>16</comment_count>
    <who name="Saam Barati">saam</who>
    <bug_when>2015-08-15 18:39:57 -0700</bug_when>
    <thetext>(In reply to comment #15)
&gt; ok, pstch is ready.
Okay. I can review tomorrow night if you want.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1118012</commentid>
    <comment_count>17</comment_count>
    <who name="Yusuke Suzuki">ysuzuki</who>
    <bug_when>2015-08-15 21:29:17 -0700</bug_when>
    <thetext>(In reply to comment #16)
&gt; (In reply to comment #15)
&gt; &gt; ok, pstch is ready.
&gt; Okay. I can review tomorrow night if you want.

Great! Thank you so much :D</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1118015</commentid>
    <comment_count>18</comment_count>
    <who name="Yusuke Suzuki">ysuzuki</who>
    <bug_when>2015-08-15 23:30:59 -0700</bug_when>
    <thetext>(In reply to comment #17)
&gt; (In reply to comment #16)
&gt; &gt; (In reply to comment #15)
&gt; &gt; &gt; ok, pstch is ready.
&gt; &gt; Okay. I can review tomorrow night if you want.
&gt; 
&gt; Great! Thank you so much :D

During your review, I&apos;ll start https://bugs.webkit.org/show_bug.cgi?id=148053,
this is partially independent work.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1118378</commentid>
    <comment_count>19</comment_count>
      <attachid>259101</attachid>
    <who name="Saam Barati">saam</who>
    <bug_when>2015-08-17 19:58:34 -0700</bug_when>
    <thetext>Comment on attachment 259101
Patch

View in context: https://bugs.webkit.org/attachment.cgi?id=259101&amp;action=review

Patch is looking good.
I&apos;d split out the promise work into another patch and make some of my suggested changes and I&apos;ll review again.
I like the implementation direction here. I think writing the Loader in JS is nice.

&gt; Source/JavaScriptCore/ChangeLog:27
&gt; +        To test the current module progress easily, we add the `-m` option to the JSC shell.

I think we should use `-module` instead of `-m`.

&gt; Source/JavaScriptCore/builtins/ModuleLoaderObject.js:32
&gt; +    if (entry.state &lt; newState)

Will this ever be false?

&gt; Source/JavaScriptCore/builtins/ModuleLoaderObject.js:54
&gt; +    // 3. Instantiate

I think it would be good for us to propose to the spec better names for these phases.
Right now, we should follow the names that the spec uses, but with the hope of improving them.
I think this phase would be better named &quot;Analyze&quot; or &quot;AnalayzeModule&quot;.

&gt; Source/JavaScriptCore/builtins/ModuleLoaderObject.js:62
&gt; +    // 4. Collect (not in the draft) https://github.com/whatwg/loader/issues/68

This phase might also have a better name, but I&apos;m not quite sure what a proper name would be.
This phase sort of does recursive graph resolution.

&gt; Source/JavaScriptCore/builtins/ModuleLoaderObject.js:71
&gt; +    //     Linking means the importing and exporting the bindings with each other.

This sentence confuses me. I&apos;m not sure what you&apos;re trying to say.

&gt; Source/JavaScriptCore/builtins/ModuleLoaderObject.js:98
&gt; +        module: undefined,

I think a comment saying this is a JSModuleRecord would be helpful. Maybe just &quot;// JSModuleRecord&quot;

&gt; Source/JavaScriptCore/builtins/ModuleLoaderObject.js:175
&gt; +    var instance = this.instantiation(optionalInstance, source);

maybe we can call this var moduleRecord?

&gt; Source/JavaScriptCore/builtins/ModuleLoaderObject.js:184
&gt; +    var deps = [];

I think this and all other uses of &quot;deps&quot; or other abbreviations for &quot;dependencies&quot;/&quot;dependency&quot; should spell out the full word.
So here, I think this should be &quot;var dependencies&quot; and the next line should be &quot;dependenciesMap&quot;.

&gt; Source/JavaScriptCore/builtins/ModuleLoaderObject.js:206
&gt; +    // FIXME: Current implementation does not support optionalInstance.

I think we should have bugs for some of these FIXMEs.
Or maybe a few bugs that different FIXMEs refer to.

&gt; Source/JavaScriptCore/builtins/ModuleLoaderObject.js:232
&gt; +    var fetchPromise = this.fetch(key).@then(function (payload) {

Nit: This and some other function expressions don&apos;t need a space between &quot;function&quot; and &quot;(&quot;.

&gt; Source/JavaScriptCore/builtins/ModuleLoaderObject.js:285
&gt; +        return loader.instantiate(key, source).@then(function (optionalInstance) {

Maybe it would be nice to document all hook points? I know this is one.
I know you have them listed in the module loader object, but having them in this builtin would be helpful.

&gt; Source/JavaScriptCore/builtins/Operations.Promise.js:222
&gt; +function promiseThen(promise, capability, onFulfilled, onRejected)

I think all the changes to the promises should be implemented in a separate patch that blocks this patch.

&gt; Source/JavaScriptCore/runtime/Completion.cpp:136
&gt; +    // FIXME: Now, we don&apos;t implement the linking phase yet.

I think a bug for this would be good because we really want to execute the &quot;Ready&quot; state of the module here in our final implementation of this function.

&gt; Source/JavaScriptCore/runtime/ModuleLoaderObject.cpp:234
&gt; +    return JSValue::encode(moduleAnalyzer.analyze(*moduleProgramNode));

Nit: Maybe this is silly, but can we add a line here so we see that moduleAnalyze.analyze returns a JSModuleRecord and that&apos;s what the JSValue really is.

&gt; Source/JavaScriptCore/runtime/ModuleLoaderObject.cpp:240
&gt; +    if (!moduleRecord)

Is this the right thing to do here? Or should we throw an error?
Same question with checks in other hooks.

&gt; Source/JavaScriptCore/runtime/ModuleLoaderObject.h:40
&gt; +    enum Status {

Since the actual int value here is important, maybe it&apos;s good to say something regarding the order of these.
Or list their state numbers so that it&apos;s implied you go from 1=&gt;2=&gt;3, etc.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1118397</commentid>
    <comment_count>20</comment_count>
      <attachid>259101</attachid>
    <who name="Yusuke Suzuki">ysuzuki</who>
    <bug_when>2015-08-17 20:54:40 -0700</bug_when>
    <thetext>Comment on attachment 259101
Patch

View in context: https://bugs.webkit.org/attachment.cgi?id=259101&amp;action=review

Thank you for your review! I&apos;ve spawned the Promise related one here https://bugs.webkit.org/show_bug.cgi?id=148118
And I&apos;ll reflect your comments :D

&gt;&gt; Source/JavaScriptCore/ChangeLog:27
&gt;&gt; +        To test the current module progress easily, we add the `-m` option to the JSC shell.
&gt; 
&gt; I think we should use `-module` instead of `-m`.

I&apos;ll change it!

&gt;&gt; Source/JavaScriptCore/builtins/ModuleLoaderObject.js:32
&gt;&gt; +    if (entry.state &lt; newState)
&gt; 
&gt; Will this ever be false?

Some Reflect.Loader APIs can make the situation where `entry.state &lt; newState` becomes false.
Currently they are not implemented in this patch, it will be done.

&gt;&gt; Source/JavaScriptCore/builtins/ModuleLoaderObject.js:54
&gt;&gt; +    // 3. Instantiate
&gt; 
&gt; I think it would be good for us to propose to the spec better names for these phases.
&gt; Right now, we should follow the names that the spec uses, but with the hope of improving them.
&gt; I think this phase would be better named &quot;Analyze&quot; or &quot;AnalayzeModule&quot;.

Agreed. `AnalyzeModule` seems preferable.

&gt;&gt; Source/JavaScriptCore/builtins/ModuleLoaderObject.js:62
&gt;&gt; +    // 4. Collect (not in the draft) https://github.com/whatwg/loader/issues/68
&gt; 
&gt; This phase might also have a better name, but I&apos;m not quite sure what a proper name would be.
&gt; This phase sort of does recursive graph resolution.

I&apos;ll change it to `ResolveDependencies` in the mean time.

&gt;&gt; Source/JavaScriptCore/builtins/ModuleLoaderObject.js:71
&gt;&gt; +    //     Linking means the importing and exporting the bindings with each other.
&gt; 
&gt; This sentence confuses me. I&apos;m not sure what you&apos;re trying to say.

Ah, I&apos;ll recast it,
`&quot;Linking means that the module imports and exports the bindings from/to the other modules&quot;`

&gt;&gt; Source/JavaScriptCore/builtins/ModuleLoaderObject.js:98
&gt;&gt; +        module: undefined,
&gt; 
&gt; I think a comment saying this is a JSModuleRecord would be helpful. Maybe just &quot;// JSModuleRecord&quot;

Looks nice! I&apos;ll add this comment.

&gt;&gt; Source/JavaScriptCore/builtins/ModuleLoaderObject.js:175
&gt;&gt; +    var instance = this.instantiation(optionalInstance, source);
&gt; 
&gt; maybe we can call this var moduleRecord?

Yes. `moduleRecord` name looks better than `instance`. I&apos;ll change it.

&gt;&gt; Source/JavaScriptCore/builtins/ModuleLoaderObject.js:184
&gt;&gt; +    var deps = [];
&gt; 
&gt; I think this and all other uses of &quot;deps&quot; or other abbreviations for &quot;dependencies&quot;/&quot;dependency&quot; should spell out the full word.
&gt; So here, I think this should be &quot;var dependencies&quot; and the next line should be &quot;dependenciesMap&quot;.

Looks nice. I&apos;ll use the full names. Actually, the spec uses &quot;deps&quot; etc. but, &quot;dependencies&quot; looks clearer.

&gt;&gt; Source/JavaScriptCore/builtins/ModuleLoaderObject.js:206
&gt;&gt; +    // FIXME: Current implementation does not support optionalInstance.
&gt; 
&gt; I think we should have bugs for some of these FIXMEs.
&gt; Or maybe a few bugs that different FIXMEs refer to.

I&apos;ll add the bugs for each FIXME except for the spec issue.

&gt;&gt; Source/JavaScriptCore/builtins/ModuleLoaderObject.js:232
&gt;&gt; +    var fetchPromise = this.fetch(key).@then(function (payload) {
&gt; 
&gt; Nit: This and some other function expressions don&apos;t need a space between &quot;function&quot; and &quot;(&quot;.

Ah, is it better to drop this space? I&apos;ll follow it.

&gt;&gt; Source/JavaScriptCore/builtins/ModuleLoaderObject.js:285
&gt;&gt; +        return loader.instantiate(key, source).@then(function (optionalInstance) {
&gt; 
&gt; Maybe it would be nice to document all hook points? I know this is one.
&gt; I know you have them listed in the module loader object, but having them in this builtin would be helpful.

Sounds nice. I&apos;ll summarize the hook points in the builtins&apos; side.

&gt;&gt; Source/JavaScriptCore/builtins/Operations.Promise.js:222
&gt;&gt; +function promiseThen(promise, capability, onFulfilled, onRejected)
&gt; 
&gt; I think all the changes to the promises should be implemented in a separate patch that blocks this patch.

Yeah! I&apos;ve spawned it to https://bugs.webkit.org/show_bug.cgi?id=148118.

&gt;&gt; Source/JavaScriptCore/runtime/Completion.cpp:136
&gt;&gt; +    // FIXME: Now, we don&apos;t implement the linking phase yet.
&gt; 
&gt; I think a bug for this would be good because we really want to execute the &quot;Ready&quot; state of the module here in our final implementation of this function.

Yup. I&apos;ll file it and add the comment here.

&gt;&gt; Source/JavaScriptCore/runtime/ModuleLoaderObject.cpp:234
&gt;&gt; +    return JSValue::encode(moduleAnalyzer.analyze(*moduleProgramNode));
&gt; 
&gt; Nit: Maybe this is silly, but can we add a line here so we see that moduleAnalyze.analyze returns a JSModuleRecord and that&apos;s what the JSValue really is.

Looks nice. Fixed.

&gt;&gt; Source/JavaScriptCore/runtime/ModuleLoaderObject.cpp:240
&gt;&gt; +    if (!moduleRecord)
&gt; 
&gt; Is this the right thing to do here? Or should we throw an error?
&gt; Same question with checks in other hooks.

This is a little bit conservative guard. Since these methods only called from the builtin internal ModuleLoader object.
So I can replace them with the assertion. I&apos;ll do so.

&gt;&gt; Source/JavaScriptCore/runtime/ModuleLoaderObject.h:40
&gt;&gt; +    enum Status {
&gt; 
&gt; Since the actual int value here is important, maybe it&apos;s good to say something regarding the order of these.
&gt; Or list their state numbers so that it&apos;s implied you go from 1=&gt;2=&gt;3, etc.

Make sense, I&apos;ll add the actual values.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1118441</commentid>
    <comment_count>21</comment_count>
      <attachid>259101</attachid>
    <who name="Saam Barati">saam</who>
    <bug_when>2015-08-17 22:35:26 -0700</bug_when>
    <thetext>Comment on attachment 259101
Patch

View in context: https://bugs.webkit.org/attachment.cgi?id=259101&amp;action=review

&gt;&gt;&gt; Source/JavaScriptCore/ChangeLog:27
&gt;&gt;&gt; +        To test the current module progress easily, we add the `-m` option to the JSC shell.
&gt;&gt; 
&gt;&gt; I think we should use `-module` instead of `-m`.
&gt; 
&gt; I&apos;ll change it!

I might be wrong about this. It looks like there is precedent for the single letter options. 
Up to you.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1118452</commentid>
    <comment_count>22</comment_count>
      <attachid>259101</attachid>
    <who name="Yusuke Suzuki">ysuzuki</who>
    <bug_when>2015-08-17 22:56:28 -0700</bug_when>
    <thetext>Comment on attachment 259101
Patch

View in context: https://bugs.webkit.org/attachment.cgi?id=259101&amp;action=review

&gt;&gt;&gt;&gt; Source/JavaScriptCore/ChangeLog:27
&gt;&gt;&gt;&gt; +        To test the current module progress easily, we add the `-m` option to the JSC shell.
&gt;&gt;&gt; 
&gt;&gt;&gt; I think we should use `-module` instead of `-m`.
&gt;&gt; 
&gt;&gt; I&apos;ll change it!
&gt; 
&gt; I might be wrong about this. It looks like there is precedent for the single letter options. 
&gt; Up to you.

oh, ok, so, just use `-m`, because the other options also use the single letter.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1118453</commentid>
    <comment_count>23</comment_count>
      <attachid>259101</attachid>
    <who name="Saam Barati">saam</who>
    <bug_when>2015-08-17 22:58:43 -0700</bug_when>
    <thetext>Comment on attachment 259101
Patch

View in context: https://bugs.webkit.org/attachment.cgi?id=259101&amp;action=review

&gt;&gt;&gt; Source/JavaScriptCore/builtins/ModuleLoaderObject.js:232
&gt;&gt;&gt; +    var fetchPromise = this.fetch(key).@then(function (payload) {
&gt;&gt; 
&gt;&gt; Nit: This and some other function expressions don&apos;t need a space between &quot;function&quot; and &quot;(&quot;.
&gt; 
&gt; Ah, is it better to drop this space? I&apos;ll follow it.

Actually, I&apos;m not 100% sure about this. I know this is Web Inspector style,
but maybe JSC uses another style for built ins. It&apos;s probably best to follow
JSC&apos;s style.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1118454</commentid>
    <comment_count>24</comment_count>
      <attachid>259101</attachid>
    <who name="Yusuke Suzuki">ysuzuki</who>
    <bug_when>2015-08-17 23:00:39 -0700</bug_when>
    <thetext>Comment on attachment 259101
Patch

View in context: https://bugs.webkit.org/attachment.cgi?id=259101&amp;action=review

&gt;&gt;&gt;&gt; Source/JavaScriptCore/builtins/ModuleLoaderObject.js:232
&gt;&gt;&gt;&gt; +    var fetchPromise = this.fetch(key).@then(function (payload) {
&gt;&gt;&gt; 
&gt;&gt;&gt; Nit: This and some other function expressions don&apos;t need a space between &quot;function&quot; and &quot;(&quot;.
&gt;&gt; 
&gt;&gt; Ah, is it better to drop this space? I&apos;ll follow it.
&gt; 
&gt; Actually, I&apos;m not 100% sure about this. I know this is Web Inspector style,
&gt; but maybe JSC uses another style for built ins. It&apos;s probably best to follow
&gt; JSC&apos;s style.

I see. So, I&apos;ll align to the builtin&apos;s code.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1118455</commentid>
    <comment_count>25</comment_count>
      <attachid>259101</attachid>
    <who name="Yusuke Suzuki">ysuzuki</who>
    <bug_when>2015-08-17 23:02:10 -0700</bug_when>
    <thetext>Comment on attachment 259101
Patch

View in context: https://bugs.webkit.org/attachment.cgi?id=259101&amp;action=review

&gt;&gt;&gt;&gt;&gt; Source/JavaScriptCore/builtins/ModuleLoaderObject.js:232
&gt;&gt;&gt;&gt;&gt; +    var fetchPromise = this.fetch(key).@then(function (payload) {
&gt;&gt;&gt;&gt; 
&gt;&gt;&gt;&gt; Nit: This and some other function expressions don&apos;t need a space between &quot;function&quot; and &quot;(&quot;.
&gt;&gt;&gt; 
&gt;&gt;&gt; Ah, is it better to drop this space? I&apos;ll follow it.
&gt;&gt; 
&gt;&gt; Actually, I&apos;m not 100% sure about this. I know this is Web Inspector style,
&gt;&gt; but maybe JSC uses another style for built ins. It&apos;s probably best to follow
&gt;&gt; JSC&apos;s style.
&gt; 
&gt; I see. So, I&apos;ll align to the builtin&apos;s code.

Ah, one question. Can I use the arrow function here? (I saw the lexical binding |this| patch is landed today).
Or it&apos;s not good for now because it has the flag?</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1118861</commentid>
    <comment_count>26</comment_count>
    <who name="Saam Barati">saam</who>
    <bug_when>2015-08-18 23:56:12 -0700</bug_when>
    <thetext>(In reply to comment #25)
&gt; Comment on attachment 259101 [details]
&gt; Patch
&gt; 
&gt; View in context:
&gt; https://bugs.webkit.org/attachment.cgi?id=259101&amp;action=review
&gt; 
&gt; &gt;&gt;&gt;&gt;&gt; Source/JavaScriptCore/builtins/ModuleLoaderObject.js:232
&gt; &gt;&gt;&gt;&gt;&gt; +    var fetchPromise = this.fetch(key).@then(function (payload) {
&gt; &gt;&gt;&gt;&gt; 
&gt; &gt;&gt;&gt;&gt; Nit: This and some other function expressions don&apos;t need a space between &quot;function&quot; and &quot;(&quot;.
&gt; &gt;&gt;&gt; 
&gt; &gt;&gt;&gt; Ah, is it better to drop this space? I&apos;ll follow it.
&gt; &gt;&gt; 
&gt; &gt;&gt; Actually, I&apos;m not 100% sure about this. I know this is Web Inspector style,
&gt; &gt;&gt; but maybe JSC uses another style for built ins. It&apos;s probably best to follow
&gt; &gt;&gt; JSC&apos;s style.
&gt; &gt; 
&gt; &gt; I see. So, I&apos;ll align to the builtin&apos;s code.
&gt; 
&gt; Ah, one question. Can I use the arrow function here? (I saw the lexical
&gt; binding |this| patch is landed today).
&gt; Or it&apos;s not good for now because it has the flag?

I think we should wait till arrow functions are fully completed before using
them inside JSC&apos;s builtins. That said, I like the style where arrow functions
are used only for very short functions. I think this function is better as a &quot;function ...&quot; function.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1118870</commentid>
    <comment_count>27</comment_count>
      <attachid>259101</attachid>
    <who name="Yusuke Suzuki">ysuzuki</who>
    <bug_when>2015-08-19 00:26:50 -0700</bug_when>
    <thetext>Comment on attachment 259101
Patch

View in context: https://bugs.webkit.org/attachment.cgi?id=259101&amp;action=review

&gt;&gt;&gt;&gt;&gt;&gt;&gt; Source/JavaScriptCore/builtins/ModuleLoaderObject.js:232
&gt;&gt;&gt;&gt;&gt;&gt;&gt; +    var fetchPromise = this.fetch(key).@then(function (payload) {
&gt;&gt;&gt;&gt;&gt;&gt; 
&gt;&gt;&gt;&gt;&gt;&gt; Nit: This and some other function expressions don&apos;t need a space between &quot;function&quot; and &quot;(&quot;.
&gt;&gt;&gt;&gt;&gt; 
&gt;&gt;&gt;&gt;&gt; Ah, is it better to drop this space? I&apos;ll follow it.
&gt;&gt;&gt;&gt; 
&gt;&gt;&gt;&gt; Actually, I&apos;m not 100% sure about this. I know this is Web Inspector style,
&gt;&gt;&gt;&gt; but maybe JSC uses another style for built ins. It&apos;s probably best to follow
&gt;&gt;&gt;&gt; JSC&apos;s style.
&gt;&gt;&gt; 
&gt;&gt;&gt; I see. So, I&apos;ll align to the builtin&apos;s code.
&gt;&gt; 
&gt;&gt; Ah, one question. Can I use the arrow function here? (I saw the lexical binding |this| patch is landed today).
&gt;&gt; Or it&apos;s not good for now because it has the flag?
&gt; 
&gt; I think we should wait till arrow functions are fully completed before using
&gt; them inside JSC&apos;s builtins. That said, I like the style where arrow functions
&gt; are used only for very short functions. I think this function is better as a &quot;function ...&quot; function.

Make sense. So I continue to use &quot;function&quot; :)</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1118876</commentid>
    <comment_count>28</comment_count>
      <attachid>259101</attachid>
    <who name="Yusuke Suzuki">ysuzuki</who>
    <bug_when>2015-08-19 00:49:11 -0700</bug_when>
    <thetext>Comment on attachment 259101
Patch

View in context: https://bugs.webkit.org/attachment.cgi?id=259101&amp;action=review

&gt;&gt;&gt; Source/JavaScriptCore/runtime/ModuleLoaderObject.cpp:240
&gt;&gt;&gt; +    if (!moduleRecord)
&gt;&gt; 
&gt;&gt; Is this the right thing to do here? Or should we throw an error?
&gt;&gt; Same question with checks in other hooks.
&gt; 
&gt; This is a little bit conservative guard. Since these methods only called from the builtin internal ModuleLoader object.
&gt; So I can replace them with the assertion. I&apos;ll do so.

After considering about here, I think it&apos;s OK because it may take the optionalInstance in the future (this is not supported by the current implementation yet).
The existing spec seems that it does not integrate the optionalInstance well yet. So in the meantime, returning the empty array is the best solution I think.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1118877</commentid>
    <comment_count>29</comment_count>
      <attachid>259367</attachid>
    <who name="Yusuke Suzuki">ysuzuki</who>
    <bug_when>2015-08-19 00:53:45 -0700</bug_when>
    <thetext>Created attachment 259367
Patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1118879</commentid>
    <comment_count>30</comment_count>
    <who name="WebKit Commit Bot">commit-queue</who>
    <bug_when>2015-08-19 00:55:45 -0700</bug_when>
    <thetext>Attachment 259367 did not pass style-queue:


ERROR: Source/JavaScriptCore/parser/NodesAnalyzeModule.cpp:30:  Alphabetical sorting problem.  [build/include_order] [4]
ERROR: Source/JavaScriptCore/runtime/JSModuleRecord.h:151:  This { should be at the end of the previous line  [whitespace/braces] [4]
Total errors found: 2 in 30 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>1118880</commentid>
    <comment_count>31</comment_count>
      <attachid>259367</attachid>
    <who name="Yusuke Suzuki">ysuzuki</who>
    <bug_when>2015-08-19 00:55:52 -0700</bug_when>
    <thetext>Comment on attachment 259367
Patch

The review comments are reflected. But the current patch is based on the InternalPromise patch[1].
So after the InternalPromise is landed, I&apos;ll check this patch and request the formal review.
But we can informally pre-review the patch.

[1]: Review comment is reflected. But the current patch is based on the r</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1118881</commentid>
    <comment_count>32</comment_count>
    <who name="Yusuke Suzuki">ysuzuki</who>
    <bug_when>2015-08-19 00:56:38 -0700</bug_when>
    <thetext>(In reply to comment #31)
&gt; Comment on attachment 259367 [details]
&gt; Patch
&gt; 
&gt; The review comments are reflected. But the current patch is based on the
&gt; InternalPromise patch[1].
&gt; So after the InternalPromise is landed, I&apos;ll check this patch and request
&gt; the formal review.
&gt; But we can informally pre-review the patch.
&gt; 
&gt; [1]: Review comment is reflected. But the current patch is based on the r

https://bugs.webkit.org/show_bug.cgi?id=148136</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1118953</commentid>
    <comment_count>33</comment_count>
      <attachid>259386</attachid>
    <who name="Yusuke Suzuki">ysuzuki</who>
    <bug_when>2015-08-19 11:54:29 -0700</bug_when>
    <thetext>Created attachment 259386
Patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1118954</commentid>
    <comment_count>34</comment_count>
    <who name="WebKit Commit Bot">commit-queue</who>
    <bug_when>2015-08-19 11:57:05 -0700</bug_when>
    <thetext>Attachment 259386 did not pass style-queue:


ERROR: Source/JavaScriptCore/parser/NodesAnalyzeModule.cpp:30:  Alphabetical sorting problem.  [build/include_order] [4]
ERROR: Source/JavaScriptCore/runtime/JSModuleRecord.h:151:  This { should be at the end of the previous line  [whitespace/braces] [4]
Total errors found: 2 in 30 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>1118955</commentid>
    <comment_count>35</comment_count>
    <who name="Yusuke Suzuki">ysuzuki</who>
    <bug_when>2015-08-19 11:58:03 -0700</bug_when>
    <thetext>The current submitted patch is based on the https://bugs.webkit.org/show_bug.cgi?id=148136.
All review comments are reflected I think :)
It can be built with https://bugs.webkit.org/show_bug.cgi?id=148136 and https://bugs.webkit.org/show_bug.cgi?id=148136#c7 tweaks. And I&apos;ve ensured it works with the circular dependencies correctly.



==== tmp/main.js ====

import &quot;tmp/test001.js&quot;

==== tmp/test001.js ====

import &apos;tmp/arith.js&apos;
import &apos;tmp/test001.js&apos;

==== tmp/arith.js ====

import &quot;tmp/test001.js&quot;

export function add(a, b)
{
    return a + b;
}

$ Tools/Scripts/run-jsc --debug -m tmp/main.js
Running 1 time(s): DYLD_FRAMEWORK_PATH=/Users/yusukesuzuki/development/Modules/WebKitBuild/module-loader7-merge-promise/Debug /Users/yusukesuzuki/development/Modules/WebKitBuild/module-loader7-merge-promise/Debug/jsc -m tmp/main.js
Loader [translate] 
Loader [instantiate] 

Analyzing ModuleRecord
    Dependencies: 1 modules
      module(&apos;tmp/test001.js&apos;)
    Import: 0 entries
    Export: 0 entries
Loader [resolve] tmp/test001.js
Loader [fetch] tmp/test001.js
Loader [translate] tmp/test001.js
Loader [instantiate] tmp/test001.js

Analyzing ModuleRecord
    Dependencies: 2 modules
      module(&apos;tmp/arith.js&apos;)
      module(&apos;tmp/test001.js&apos;)
    Import: 0 entries
    Export: 0 entries
Loader [resolve] tmp/arith.js
Loader [resolve] tmp/test001.js
Loader [fetch] tmp/arith.js
Loader [translate] tmp/arith.js
Loader [instantiate] tmp/arith.js

Analyzing ModuleRecord
    Dependencies: 1 modules
      module(&apos;tmp/test001.js&apos;)
    Import: 0 entries
    Export: 1 entries
      [Local] export(&apos;add&apos;), local(&apos;add&apos;)
Loader [resolve] tmp/test001.js</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1118958</commentid>
    <comment_count>36</comment_count>
      <attachid>259388</attachid>
    <who name="Yusuke Suzuki">ysuzuki</who>
    <bug_when>2015-08-19 12:02:52 -0700</bug_when>
    <thetext>Created attachment 259388
Patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1118960</commentid>
    <comment_count>37</comment_count>
    <who name="WebKit Commit Bot">commit-queue</who>
    <bug_when>2015-08-19 12:04:57 -0700</bug_when>
    <thetext>Attachment 259388 did not pass style-queue:


ERROR: Source/JavaScriptCore/parser/NodesAnalyzeModule.cpp:30:  Alphabetical sorting problem.  [build/include_order] [4]
ERROR: Source/JavaScriptCore/runtime/JSModuleRecord.h:151:  This { should be at the end of the previous line  [whitespace/braces] [4]
Total errors found: 2 in 30 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>1119181</commentid>
    <comment_count>38</comment_count>
      <attachid>259447</attachid>
    <who name="Yusuke Suzuki">ysuzuki</who>
    <bug_when>2015-08-19 21:52:43 -0700</bug_when>
    <thetext>Created attachment 259447
Patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1119182</commentid>
    <comment_count>39</comment_count>
    <who name="WebKit Commit Bot">commit-queue</who>
    <bug_when>2015-08-19 21:54:59 -0700</bug_when>
    <thetext>Attachment 259447 did not pass style-queue:


ERROR: Source/JavaScriptCore/parser/NodesAnalyzeModule.cpp:30:  Alphabetical sorting problem.  [build/include_order] [4]
ERROR: Source/JavaScriptCore/runtime/JSModuleRecord.h:151:  This { should be at the end of the previous line  [whitespace/braces] [4]
Total errors found: 2 in 30 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>1119183</commentid>
    <comment_count>40</comment_count>
    <who name="Yusuke Suzuki">ysuzuki</who>
    <bug_when>2015-08-19 21:57:58 -0700</bug_when>
    <thetext>Now InternalPromise is landed http://trac.webkit.org/changeset/188681
So I&apos;ve updated the patch to submit it to the EWS.
The patch becomes ready :D

Detailed changes

+ InternalPromise is separated from the original patch. Now it just contains the change related to the ModuleLoader
+ Revised patch includes the fixes for the review comments.
+ Now we set the moduleKey as the origin (e.g. URL) of the source code, that&apos;s natural I think.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1119201</commentid>
    <comment_count>41</comment_count>
    <who name="Saam Barati">saam</who>
    <bug_when>2015-08-19 23:52:18 -0700</bug_when>
    <thetext>(In reply to comment #35)
&gt; The current submitted patch is based on the
&gt; https://bugs.webkit.org/show_bug.cgi?id=148136.
&gt; All review comments are reflected I think :)
&gt; It can be built with https://bugs.webkit.org/show_bug.cgi?id=148136 and
&gt; https://bugs.webkit.org/show_bug.cgi?id=148136#c7 tweaks. And I&apos;ve ensured
&gt; it works with the circular dependencies correctly.
&gt; 
&gt; 
&gt; 
&gt; ==== tmp/main.js ====
&gt; 
&gt; import &quot;tmp/test001.js&quot;
&gt; 
&gt; ==== tmp/test001.js ====
&gt; 
&gt; import &apos;tmp/arith.js&apos;
&gt; import &apos;tmp/test001.js&apos;
&gt; 
&gt; ==== tmp/arith.js ====
&gt; 
&gt; import &quot;tmp/test001.js&quot;
&gt; 
&gt; export function add(a, b)
&gt; {
&gt;     return a + b;
&gt; }
&gt; 
&gt; $ Tools/Scripts/run-jsc --debug -m tmp/main.js
&gt; Running 1 time(s):
&gt; DYLD_FRAMEWORK_PATH=/Users/yusukesuzuki/development/Modules/WebKitBuild/
&gt; module-loader7-merge-promise/Debug
&gt; /Users/yusukesuzuki/development/Modules/WebKitBuild/module-loader7-merge-
&gt; promise/Debug/jsc -m tmp/main.js
&gt; Loader [translate] 
&gt; Loader [instantiate] 
&gt; 
&gt; Analyzing ModuleRecord
Can this dump name the module it&apos;s analyzing after &quot;Analayzing ModuleRecord&quot; like &quot;Analyzing ModuleRecord &lt;moduleName&gt;&quot;?
&gt;     Dependencies: 1 modules
&gt;       module(&apos;tmp/test001.js&apos;)
&gt;     Import: 0 entries
&gt;     Export: 0 entries
&gt; Loader [resolve] tmp/test001.js
&gt; Loader [fetch] tmp/test001.js
&gt; Loader [translate] tmp/test001.js
&gt; Loader [instantiate] tmp/test001.js
&gt; 
&gt; Analyzing ModuleRecord
&gt;     Dependencies: 2 modules
&gt;       module(&apos;tmp/arith.js&apos;)
&gt;       module(&apos;tmp/test001.js&apos;)
&gt;     Import: 0 entries
&gt;     Export: 0 entries
&gt; Loader [resolve] tmp/arith.js
&gt; Loader [resolve] tmp/test001.js
&gt; Loader [fetch] tmp/arith.js
&gt; Loader [translate] tmp/arith.js
&gt; Loader [instantiate] tmp/arith.js
&gt; 
&gt; Analyzing ModuleRecord
&gt;     Dependencies: 1 modules
&gt;       module(&apos;tmp/test001.js&apos;)
&gt;     Import: 0 entries
&gt;     Export: 1 entries
&gt;       [Local] export(&apos;add&apos;), local(&apos;add&apos;)
&gt; Loader [resolve] tmp/test001.js</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1119208</commentid>
    <comment_count>42</comment_count>
    <who name="Yusuke Suzuki">ysuzuki</who>
    <bug_when>2015-08-20 00:18:39 -0700</bug_when>
    <thetext>(In reply to comment #41)
&gt; Can this dump name the module it&apos;s analyzing after &quot;Analayzing ModuleRecord&quot;
&gt; like &quot;Analyzing ModuleRecord &lt;moduleName&gt;&quot;?

Sure!</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1119209</commentid>
    <comment_count>43</comment_count>
      <attachid>259455</attachid>
    <who name="Yusuke Suzuki">ysuzuki</who>
    <bug_when>2015-08-20 00:32:40 -0700</bug_when>
    <thetext>Created attachment 259455
Patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1119210</commentid>
    <comment_count>44</comment_count>
    <who name="Yusuke Suzuki">ysuzuki</who>
    <bug_when>2015-08-20 00:33:35 -0700</bug_when>
    <thetext>Updated the patch with the moduleKey.
And the result of the dump.

Tools/Scripts/run-jsc --debug -m tmp/main.js  
Running 1 time(s): DYLD_FRAMEWORK_PATH=/Users/yusukesuzuki/development/Modules/WebKitBuild/module-loader8/Debug /Users/yusukesuzuki/development/Modules/WebKitBuild/module-loader8/Debug/jsc -m tmp/main.js
Loader [translate] EntryPointModule
Loader [instantiate] EntryPointModule

Analyzing ModuleRecord key(EntryPointModule)
    Dependencies: 1 modules
      module(&apos;tmp/test001.js&apos;)
    Import: 0 entries
    Export: 0 entries
Loader [resolve] tmp/test001.js
Loader [fetch] tmp/test001.js
Loader [translate] tmp/test001.js
Loader [instantiate] tmp/test001.js

Analyzing ModuleRecord key(&apos;tmp/test001.js&apos;)
    Dependencies: 2 modules
      module(&apos;tmp/arith.js&apos;)
      module(&apos;tmp/test001.js&apos;)
    Import: 0 entries
    Export: 0 entries
Loader [resolve] tmp/arith.js
Loader [resolve] tmp/test001.js
Loader [fetch] tmp/arith.js
Loader [translate] tmp/arith.js
Loader [instantiate] tmp/arith.js

Analyzing ModuleRecord key(&apos;tmp/arith.js&apos;)
    Dependencies: 1 modules
      module(&apos;tmp/test001.js&apos;)
    Import: 0 entries
    Export: 1 entries
      [Local] export(&apos;add&apos;), local(&apos;add&apos;)
Loader [resolve] tmp/test001.js</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1119211</commentid>
    <comment_count>45</comment_count>
    <who name="WebKit Commit Bot">commit-queue</who>
    <bug_when>2015-08-20 00:34:42 -0700</bug_when>
    <thetext>Attachment 259455 did not pass style-queue:


ERROR: Source/JavaScriptCore/parser/NodesAnalyzeModule.cpp:30:  Alphabetical sorting problem.  [build/include_order] [4]
ERROR: Source/JavaScriptCore/runtime/JSModuleRecord.h:155:  This { should be at the end of the previous line  [whitespace/braces] [4]
Total errors found: 2 in 30 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>1119340</commentid>
    <comment_count>46</comment_count>
      <attachid>259490</attachid>
    <who name="Yusuke Suzuki">ysuzuki</who>
    <bug_when>2015-08-20 14:04:55 -0700</bug_when>
    <thetext>Created attachment 259490
Patch

Fix the rebase miss in project.pbxproj, the patch is ready.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1119345</commentid>
    <comment_count>47</comment_count>
    <who name="WebKit Commit Bot">commit-queue</who>
    <bug_when>2015-08-20 14:06:57 -0700</bug_when>
    <thetext>Attachment 259490 did not pass style-queue:


ERROR: Source/JavaScriptCore/parser/NodesAnalyzeModule.cpp:30:  Alphabetical sorting problem.  [build/include_order] [4]
ERROR: Source/JavaScriptCore/runtime/JSModuleRecord.h:155:  This { should be at the end of the previous line  [whitespace/braces] [4]
Total errors found: 2 in 30 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>1119526</commentid>
    <comment_count>48</comment_count>
      <attachid>259490</attachid>
    <who name="Saam Barati">saam</who>
    <bug_when>2015-08-20 18:15:21 -0700</bug_when>
    <thetext>Comment on attachment 259490
Patch

View in context: https://bugs.webkit.org/attachment.cgi?id=259490&amp;action=review

r=me

&gt; Source/JavaScriptCore/builtins/ModuleLoaderObject.js:32
&gt; +// 1. Loader.resolve.

I think these would be more helpful at their call site. i.e, have this comment around or at where you call into the &quot;resolve&quot; hook.

&gt; Source/JavaScriptCore/jsc.cpp:1386
&gt; +            evaluateModule(globalObject-&gt;globalExec(), jscSource(script, fileName), evaluationException);

Can we also pass in the fileName to evaluateModule so we can make that the module name instead of ModuleEntryPoint?

&gt; Source/JavaScriptCore/jsc.cpp:1390
&gt; +#endif

maybe we should have an #else that prints an error message here.

&gt; Source/JavaScriptCore/runtime/JSGlobalObject.h:159
&gt; +    typedef JSInternalPromise* (*LoaderResolvePtr)(JSGlobalObject*, ExecState*, JSValue, JSValue);

Can we prefix these with Module? So, ModuleLoaderResolvePtr in this case.

&gt; Source/JavaScriptCore/runtime/ModuleLoaderObject.cpp:210
&gt; +// ------------------------------ Hook Functions ---------------------------

Should this comment be lower down?</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1119630</commentid>
    <comment_count>49</comment_count>
      <attachid>259490</attachid>
    <who name="Yusuke Suzuki">ysuzuki</who>
    <bug_when>2015-08-20 20:33:12 -0700</bug_when>
    <thetext>Comment on attachment 259490
Patch

View in context: https://bugs.webkit.org/attachment.cgi?id=259490&amp;action=review

Thank you for your review, Saam :D

&gt;&gt; Source/JavaScriptCore/builtins/ModuleLoaderObject.js:32
&gt;&gt; +// 1. Loader.resolve.
&gt; 
&gt; I think these would be more helpful at their call site. i.e, have this comment around or at where you call into the &quot;resolve&quot; hook.

Make sense. I&apos;ll move these comments to the call site.

&gt;&gt; Source/JavaScriptCore/jsc.cpp:1386
&gt;&gt; +            evaluateModule(globalObject-&gt;globalExec(), jscSource(script, fileName), evaluationException);
&gt; 
&gt; Can we also pass in the fileName to evaluateModule so we can make that the module name instead of ModuleEntryPoint?

Yup! I&apos;m now working on it with the asynchronous error report, so I&apos;ll submit it in the subsequent patch.

&gt;&gt; Source/JavaScriptCore/jsc.cpp:1390
&gt;&gt; +#endif
&gt; 
&gt; maybe we should have an #else that prints an error message here.

We can pass the `-m` that makes `bool module = true` only when compiling JSC with ENABLE_ES6_MODULES.
So when the `module` is true, `ENABLE(ES6_MODULES)` is always true.

Because of the above reason, I&apos;ll insert the following here.
#else
RELEASE_ASSERT_NOT_REACHED()
#endif

&gt;&gt; Source/JavaScriptCore/runtime/JSGlobalObject.h:159
&gt;&gt; +    typedef JSInternalPromise* (*LoaderResolvePtr)(JSGlobalObject*, ExecState*, JSValue, JSValue);
&gt; 
&gt; Can we prefix these with Module? So, ModuleLoaderResolvePtr in this case.

Sure! I&apos;ll fix them.

&gt;&gt; Source/JavaScriptCore/runtime/ModuleLoaderObject.cpp:210
&gt;&gt; +// ------------------------------ Hook Functions ---------------------------
&gt; 
&gt; Should this comment be lower down?

Nice catch. Oops. I&apos;ll fix this.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1119657</commentid>
    <comment_count>50</comment_count>
    <who name="Yusuke Suzuki">ysuzuki</who>
    <bug_when>2015-08-20 22:00:08 -0700</bug_when>
    <thetext>Committed r188752: &lt;http://trac.webkit.org/changeset/188752&gt;</thetext>
  </long_desc>
      
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>259060</attachid>
            <date>2015-08-14 17:49:23 -0700</date>
            <delta_ts>2015-08-15 01:05:43 -0700</delta_ts>
            <desc>Patch</desc>
            <filename>bug-147876-20150814174904.patch</filename>
            <type>text/plain</type>
            <size>114207</size>
            <attacher name="Yusuke Suzuki">ysuzuki</attacher>
            
              <data encoding="base64">U3VidmVyc2lvbiBSZXZpc2lvbjogMTg4NDk4CmRpZmYgLS1naXQgYS9Tb3VyY2UvSmF2YVNjcmlw
dENvcmUvQ2hhbmdlTG9nIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL0NoYW5nZUxvZwppbmRleCBm
YmY4YzE0NzE5ODkxZmYzMTliMzA1MGQwZDUxY2FhNzNjNDBlYjU5Li5hZTY3MGNmMGRjMTYwMGFl
ZTI0MzYyMmQ2NTE4ZjA1MTUyYjZhYzAxIDEwMDY0NAotLS0gYS9Tb3VyY2UvSmF2YVNjcmlwdENv
cmUvQ2hhbmdlTG9nCisrKyBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9DaGFuZ2VMb2cKQEAgLTEs
MyArMSwxMzggQEAKKzIwMTUtMDgtMTQgIFl1c3VrZSBTdXp1a2kgIDx1dGF0YW5lLnRlYUBnbWFp
bC5jb20+CisKKyAgICAgICAgW0VTNl0gcHJvdG90eXBpbmcgbW9kdWxlIGxvYWRlciBpbiBKU0Mg
c2hlbGwKKyAgICAgICAgaHR0cHM6Ly9idWdzLndlYmtpdC5vcmcvc2hvd19idWcuY2dpP2lkPTE0
Nzg3NgorCisgICAgICAgIFJldmlld2VkIGJ5IE5PQk9EWSAoT09QUyEpLgorCisgICAgICAgICog
RGVyaXZlZFNvdXJjZXMubWFrZToKKyAgICAgICAgKiBKYXZhU2NyaXB0Q29yZS54Y29kZXByb2ov
cHJvamVjdC5wYnhwcm9qOgorICAgICAgICAqIGJ1aWx0aW5zL0J1aWx0aW5OYW1lcy5oOgorICAg
ICAgICAoSlNDOjpCdWlsdGluTmFtZXM6Omxvb2tVcFByaXZhdGVOYW1lKToKKyAgICAgICAgKEpT
Qzo6QnVpbHRpbk5hbWVzOjpsb29rVXBQdWJsaWNOYW1lKToKKyAgICAgICAgKEpTQzo6QnVpbHRp
bk5hbWVzOjpnZXRQcml2YXRlTmFtZSk6IERlbGV0ZWQuCisgICAgICAgIChKU0M6OkJ1aWx0aW5O
YW1lczo6Z2V0UHVibGljTmFtZSk6IERlbGV0ZWQuCisgICAgICAgICogYnVpbHRpbnMvTW9kdWxl
TG9hZGVyT2JqZWN0LmpzOiBBZGRlZC4KKyAgICAgICAgKHNldFN0YXRlVG9NYXgpOgorICAgICAg
ICAobmV3UmVnaXN0cnlFbnRyeSk6CisgICAgICAgIChmb3JjZUZ1bGZpbGxQcm9taXNlKToKKyAg
ICAgICAgKGZ1bGZpbGxGZXRjaCk6CisgICAgICAgIChmdWxmaWxsVHJhbnNsYXRlKToKKyAgICAg
ICAgKGZ1bGZpbGxJbnN0YW50aWF0ZSk6CisgICAgICAgIChpbnN0YW50aWF0aW9uKToKKyAgICAg
ICAgKHJlcXVlc3RGZXRjaCk6CisgICAgICAgIChyZXF1ZXN0VHJhbnNsYXRlKToKKyAgICAgICAg
KHJlcXVlc3RJbnN0YW50aWF0ZSk6CisgICAgICAgIChyZXF1ZXN0SW5zdGFudGlhdGVBbGwucmV0
dXJuLnRoaXMucmVxdWVzdEluc3RhbnRpYXRlLnRoZW4uKToKKyAgICAgICAgKHJlcXVlc3RJbnN0
YW50aWF0ZUFsbC5yZXR1cm4udGhpcy5yZXF1ZXN0SW5zdGFudGlhdGUudGhlbik6CisgICAgICAg
IChyZXF1ZXN0SW5zdGFudGlhdGVBbGwpOgorICAgICAgICAqIGJ1aWx0aW5zL09wZXJhdGlvbnMu
UHJvbWlzZS5qczoKKyAgICAgICAgKC5vbkZ1bGZpbGxlZCk6CisgICAgICAgICgub25SZWplY3Rl
ZCk6CisgICAgICAgIChwcm9taXNlVGhlbik6CisgICAgICAgICogYnVpbHRpbnMvUHJvbWlzZS5w
cm90b3R5cGUuanM6CisgICAgICAgICh0aGVuKToKKyAgICAgICAgKHByaXZhdGVUaGVuKToKKyAg
ICAgICAgKC5vbkZ1bGZpbGxlZCk6IERlbGV0ZWQuCisgICAgICAgICgub25SZWplY3RlZCk6IERl
bGV0ZWQuCisgICAgICAgICogYnVpbHRpbnMvUHJvbWlzZUNvbnN0cnVjdG9yLmpzOgorICAgICAg
ICAocHJpdmF0ZUFsbC5uZXdSZXNvbHZlRWxlbWVudCk6CisgICAgICAgIChwcml2YXRlQWxsKToK
KyAgICAgICAgKiBqc2MuY3BwOgorICAgICAgICAoc3RyaW5nRnJvbVVURik6CisgICAgICAgIChq
c2NTb3VyY2UpOgorICAgICAgICAoR2xvYmFsT2JqZWN0Ojpsb2FkZXJGZXRjaCk6CisgICAgICAg
IChmdW5jdGlvbkNoZWNrTW9kdWxlU3ludGF4KToKKyAgICAgICAgKiBwYXJzZXIvTGV4ZXIuY3Bw
OgorICAgICAgICAoSlNDOjpMZXhlcjxMQ2hhcj46OnBhcnNlSWRlbnRpZmllcik6CisgICAgICAg
IChKU0M6OkxleGVyPFVDaGFyPjo6cGFyc2VJZGVudGlmaWVyKToKKyAgICAgICAgKiBwYXJzZXIv
TW9kdWxlQW5hbHl6ZXIuY3BwOgorICAgICAgICAoSlNDOjpNb2R1bGVBbmFseXplcjo6TW9kdWxl
QW5hbHl6ZXIpOgorICAgICAgICAoSlNDOjpNb2R1bGVBbmFseXplcjo6ZXhwb3J0VmFyaWFibGUp
OgorICAgICAgICAoSlNDOjpNb2R1bGVBbmFseXplcjo6YW5hbHl6ZSk6CisgICAgICAgICogcGFy
c2VyL01vZHVsZUFuYWx5emVyLmg6CisgICAgICAgIChKU0M6Ok1vZHVsZUFuYWx5emVyOjptb2R1
bGVSZWNvcmQpOgorICAgICAgICAqIHBhcnNlci9Nb2R1bGVSZWNvcmQuY3BwOgorICAgICAgICAo
SlNDOjpwcmludGFibGVOYW1lKTogRGVsZXRlZC4KKyAgICAgICAgKEpTQzo6TW9kdWxlUmVjb3Jk
OjpkdW1wKTogRGVsZXRlZC4KKyAgICAgICAgKiBwYXJzZXIvTW9kdWxlUmVjb3JkLmg6CisgICAg
ICAgIChKU0M6Ok1vZHVsZVJlY29yZDo6SW1wb3J0RW50cnk6OmlzTmFtZXNwYWNlKTogRGVsZXRl
ZC4KKyAgICAgICAgKEpTQzo6TW9kdWxlUmVjb3JkOjpjcmVhdGUpOiBEZWxldGVkLgorICAgICAg
ICAoSlNDOjpNb2R1bGVSZWNvcmQ6OmFwcGVuZFJlcXVlc3RlZE1vZHVsZSk6IERlbGV0ZWQuCisg
ICAgICAgIChKU0M6Ok1vZHVsZVJlY29yZDo6YWRkSW1wb3J0RW50cnkpOiBEZWxldGVkLgorICAg
ICAgICAoSlNDOjpNb2R1bGVSZWNvcmQ6OmFkZEV4cG9ydEVudHJ5KTogRGVsZXRlZC4KKyAgICAg
ICAgKEpTQzo6TW9kdWxlUmVjb3JkOjphZGRTdGFyRXhwb3J0RW50cnkpOiBEZWxldGVkLgorICAg
ICAgICAqIHBhcnNlci9Ob2Rlcy5oOgorICAgICAgICAqIHBhcnNlci9Ob2Rlc0FuYWx5emVNb2R1
bGUuY3BwOgorICAgICAgICAoSlNDOjpJbXBvcnREZWNsYXJhdGlvbk5vZGU6OmFuYWx5emVNb2R1
bGUpOgorICAgICAgICAoSlNDOjpFeHBvcnRBbGxEZWNsYXJhdGlvbk5vZGU6OmFuYWx5emVNb2R1
bGUpOgorICAgICAgICAoSlNDOjpFeHBvcnROYW1lZERlY2xhcmF0aW9uTm9kZTo6YW5hbHl6ZU1v
ZHVsZSk6CisgICAgICAgICogcnVudGltZS9Db21tb25JZGVudGlmaWVycy5jcHA6CisgICAgICAg
IChKU0M6OkNvbW1vbklkZW50aWZpZXJzOjpsb29rVXBQcml2YXRlTmFtZSk6CisgICAgICAgIChK
U0M6OkNvbW1vbklkZW50aWZpZXJzOjpsb29rVXBQdWJsaWNOYW1lKToKKyAgICAgICAgKEpTQzo6
Q29tbW9uSWRlbnRpZmllcnM6OmdldFByaXZhdGVOYW1lKTogRGVsZXRlZC4KKyAgICAgICAgKEpT
Qzo6Q29tbW9uSWRlbnRpZmllcnM6OmdldFB1YmxpY05hbWUpOiBEZWxldGVkLgorICAgICAgICAq
IHJ1bnRpbWUvQ29tbW9uSWRlbnRpZmllcnMuaDoKKyAgICAgICAgKiBydW50aW1lL0NvbXBsZXRp
b24uY3BwOgorICAgICAgICAoSlNDOjpjaGVja01vZHVsZVN5bnRheCk6CisgICAgICAgICogcnVu
dGltZS9Db21wbGV0aW9uLmg6CisgICAgICAgICogcnVudGltZS9FeGNlcHRpb25IZWxwZXJzLmNw
cDoKKyAgICAgICAgKEpTQzo6Y3JlYXRlVW5kZWZpbmVkVmFyaWFibGVFcnJvcik6CisgICAgICAg
ICogcnVudGltZS9JZGVudGlmaWVyLmg6CisgICAgICAgICogcnVudGltZS9KU0dsb2JhbE9iamVj
dC5jcHA6CisgICAgICAgIChKU0M6OkpTR2xvYmFsT2JqZWN0Ojppbml0KToKKyAgICAgICAgKEpT
Qzo6SlNHbG9iYWxPYmplY3Q6OnZpc2l0Q2hpbGRyZW4pOgorICAgICAgICAqIHJ1bnRpbWUvSlNH
bG9iYWxPYmplY3QuaDoKKyAgICAgICAgKEpTQzo6SlNHbG9iYWxPYmplY3Q6Om1vZHVsZVJlY29y
ZFN0cnVjdHVyZSk6CisgICAgICAgIChKU0M6OkpTR2xvYmFsT2JqZWN0Ojpwcm9taXNlQ29uc3Ry
dWN0b3IpOiBEZWxldGVkLgorICAgICAgICAoSlNDOjpKU0dsb2JhbE9iamVjdDo6cHJvbWlzZVBy
b3RvdHlwZSk6IERlbGV0ZWQuCisgICAgICAgIChKU0M6OkpTR2xvYmFsT2JqZWN0Ojpwcm9taXNl
U3RydWN0dXJlKTogRGVsZXRlZC4KKyAgICAgICAgKiBydW50aW1lL0pTTW9kdWxlUmVjb3JkLmNw
cDogUmVuYW1lZCBmcm9tIFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9wYXJzZXIvTW9kdWxlUmVjb3Jk
LmNwcC4KKyAgICAgICAgKEpTQzo6SlNNb2R1bGVSZWNvcmQ6OmRlc3Ryb3kpOgorICAgICAgICAo
SlNDOjpwcmludGFibGVOYW1lKToKKyAgICAgICAgKEpTQzo6SlNNb2R1bGVSZWNvcmQ6OmR1bXAp
OgorICAgICAgICAqIHJ1bnRpbWUvSlNNb2R1bGVSZWNvcmQuaDogUmVuYW1lZCBmcm9tIFNvdXJj
ZS9KYXZhU2NyaXB0Q29yZS9wYXJzZXIvTW9kdWxlUmVjb3JkLmguCisgICAgICAgIChKU0M6OkpT
TW9kdWxlUmVjb3JkOjpJbXBvcnRFbnRyeTo6aXNOYW1lc3BhY2UpOgorICAgICAgICAoSlNDOjpK
U01vZHVsZVJlY29yZDo6Y3JlYXRlU3RydWN0dXJlKToKKyAgICAgICAgKEpTQzo6SlNNb2R1bGVS
ZWNvcmQ6OmNyZWF0ZSk6CisgICAgICAgIChKU0M6OkpTTW9kdWxlUmVjb3JkOjpyZXF1ZXN0ZWRN
b2R1bGVzKToKKyAgICAgICAgKEpTQzo6SlNNb2R1bGVSZWNvcmQ6OkpTTW9kdWxlUmVjb3JkKToK
KyAgICAgICAgKEpTQzo6SlNNb2R1bGVSZWNvcmQ6OmFwcGVuZFJlcXVlc3RlZE1vZHVsZSk6Cisg
ICAgICAgIChKU0M6OkpTTW9kdWxlUmVjb3JkOjphZGRJbXBvcnRFbnRyeSk6CisgICAgICAgIChK
U0M6OkpTTW9kdWxlUmVjb3JkOjphZGRFeHBvcnRFbnRyeSk6CisgICAgICAgIChKU0M6OkpTTW9k
dWxlUmVjb3JkOjphZGRTdGFyRXhwb3J0RW50cnkpOgorICAgICAgICAqIHJ1bnRpbWUvSlNQcm9t
aXNlQ29uc3RydWN0b3IuY3BwOgorICAgICAgICAoSlNDOjpKU1Byb21pc2VDb25zdHJ1Y3Rvcjo6
ZmluaXNoQ3JlYXRpb24pOgorICAgICAgICAqIHJ1bnRpbWUvSlNQcm9taXNlRGVmZXJyZWQuY3Bw
OgorICAgICAgICAoSlNDOjpjYWxsRnVuY3Rpb24pOgorICAgICAgICAoSlNDOjpKU1Byb21pc2VE
ZWZlcnJlZDo6cmVzb2x2ZSk6CisgICAgICAgIChKU0M6OkpTUHJvbWlzZURlZmVycmVkOjpyZWpl
Y3QpOgorICAgICAgICAqIHJ1bnRpbWUvSlNQcm9taXNlRGVmZXJyZWQuaDoKKyAgICAgICAgKiBy
dW50aW1lL0pTUHJvbWlzZVByb3RvdHlwZS5jcHA6CisgICAgICAgIChKU0M6OkpTUHJvbWlzZVBy
b3RvdHlwZTo6Y3JlYXRlKToKKyAgICAgICAgKEpTQzo6SlNQcm9taXNlUHJvdG90eXBlOjpKU1By
b21pc2VQcm90b3R5cGUpOgorICAgICAgICAoSlNDOjpKU1Byb21pc2VQcm90b3R5cGU6OmZpbmlz
aENyZWF0aW9uKToKKyAgICAgICAgKiBydW50aW1lL0pTUHJvbWlzZVByb3RvdHlwZS5oOgorICAg
ICAgICAqIHJ1bnRpbWUvTWFwUHJvdG90eXBlLmNwcDoKKyAgICAgICAgKEpTQzo6TWFwUHJvdG90
eXBlOjpmaW5pc2hDcmVhdGlvbik6CisgICAgICAgICogcnVudGltZS9Nb2R1bGVMb2FkZXJPYmpl
Y3QuY3BwOiBBZGRlZC4KKyAgICAgICAgKEpTQzo6TW9kdWxlTG9hZGVyT2JqZWN0OjpNb2R1bGVM
b2FkZXJPYmplY3QpOgorICAgICAgICAoSlNDOjpNb2R1bGVMb2FkZXJPYmplY3Q6OmZpbmlzaENy
ZWF0aW9uKToKKyAgICAgICAgKEpTQzo6TW9kdWxlTG9hZGVyT2JqZWN0OjpnZXRPd25Qcm9wZXJ0
eVNsb3QpOgorICAgICAgICAoSlNDOjpNb2R1bGVMb2FkZXJPYmplY3Q6OnJlc29sdmUpOgorICAg
ICAgICAoSlNDOjpNb2R1bGVMb2FkZXJPYmplY3Q6OmZldGNoKToKKyAgICAgICAgKEpTQzo6TW9k
dWxlTG9hZGVyT2JqZWN0Ojp0cmFuc2xhdGUpOgorICAgICAgICAoSlNDOjpNb2R1bGVMb2FkZXJP
YmplY3Q6Omluc3RhbnRpYXRlKToKKyAgICAgICAgKEpTQzo6bW9kdWxlTG9hZGVyT2JqZWN0UGFy
c2VNb2R1bGUpOgorICAgICAgICAoSlNDOjptb2R1bGVMb2FkZXJPYmplY3RSZXF1ZXN0ZWRNb2R1
bGVzKToKKyAgICAgICAgKEpTQzo6bW9kdWxlTG9hZGVyT2JqZWN0UmVzb2x2ZSk6CisgICAgICAg
IChKU0M6Om1vZHVsZUxvYWRlck9iamVjdEZldGNoKToKKyAgICAgICAgKEpTQzo6bW9kdWxlTG9h
ZGVyT2JqZWN0VHJhbnNsYXRlKToKKyAgICAgICAgKEpTQzo6bW9kdWxlTG9hZGVyT2JqZWN0SW5z
dGFudGlhdGUpOgorICAgICAgICAqIHJ1bnRpbWUvTW9kdWxlTG9hZGVyT2JqZWN0Lmg6IENvcGll
ZCBmcm9tIFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9wYXJzZXIvTW9kdWxlQW5hbHl6ZXIuaC4KKyAg
ICAgICAgKEpTQzo6TW9kdWxlTG9hZGVyT2JqZWN0OjpjcmVhdGUpOgorICAgICAgICAoSlNDOjpN
b2R1bGVMb2FkZXJPYmplY3Q6OmNyZWF0ZVN0cnVjdHVyZSk6CisKIDIwMTUtMDgtMTQgIFJ5b3N1
a2UgTml3YSAgPHJuaXdhQHdlYmtpdC5vcmc+CiAKICAgICAgICAgRVM2IGNsYXNzIHN5bnRheCBz
aG91bGQgYWxsb3cgY29tcHV0ZWQgbmFtZSBtZXRob2QKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJD
b3JlL0NoYW5nZUxvZyBiL1NvdXJjZS9XZWJDb3JlL0NoYW5nZUxvZwppbmRleCBiZjdmNzNhMmQ4
MGQyN2FiOGI2NDNiMzgwYjY5NTdjNTQxZDkwZDk5Li5hYjVlMDUxMGY5MTQxMjBmYWU3YTZhOWQ5
OGQ3NGM0ZGU2MjQ1ODdlIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9DaGFuZ2VMb2cKKysr
IGIvU291cmNlL1dlYkNvcmUvQ2hhbmdlTG9nCkBAIC0xLDMgKzEsMTUgQEAKKzIwMTUtMDgtMTQg
IFl1c3VrZSBTdXp1a2kgIDx1dGF0YW5lLnRlYUBnbWFpbC5jb20+CisKKyAgICAgICAgW0VTNl0g
cHJvdG90eXBpbmcgbW9kdWxlIGxvYWRlciBpbiBKU0Mgc2hlbGwKKyAgICAgICAgaHR0cHM6Ly9i
dWdzLndlYmtpdC5vcmcvc2hvd19idWcuY2dpP2lkPTE0Nzg3NgorCisgICAgICAgIFJldmlld2Vk
IGJ5IE5PQk9EWSAoT09QUyEpLgorCisgICAgICAgIE5vIG5ldyB0ZXN0cyAoT09QUyEpLgorCisg
ICAgICAgICogYmluZGluZ3MvanMvSlNET01XaW5kb3dCYXNlLmNwcDoKKyAgICAgICAgKiBiaW5k
aW5ncy9qcy9KU1dvcmtlckdsb2JhbFNjb3BlQmFzZS5jcHA6CisKIDIwMTUtMDgtMTQgIE1hdHRo
ZXcgRGFpdGVyICA8bWRhaXRlckBhcHBsZS5jb20+CiAKICAgICAgICAgSW1wbGVtZW50aW5nIGVu
dW1lcmF0ZURldmljZXMKZGlmZiAtLWdpdCBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9EZXJpdmVk
U291cmNlcy5tYWtlIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL0Rlcml2ZWRTb3VyY2VzLm1ha2UK
aW5kZXggMWNiMmQ1Y2JhM2JkMzVlMjA5ZjlkMmM3YmI0NjdiMmI5NmY3ZmE1ZC4uNTNhYmRiNmFk
Y2I3MTA4ZTdlZjE5M2I5Njk5NTY0OTU5NWYyYzE1MSAxMDA2NDQKLS0tIGEvU291cmNlL0phdmFT
Y3JpcHRDb3JlL0Rlcml2ZWRTb3VyY2VzLm1ha2UKKysrIGIvU291cmNlL0phdmFTY3JpcHRDb3Jl
L0Rlcml2ZWRTb3VyY2VzLm1ha2UKQEAgLTU1LDYgKzU1LDcgQEAgYWxsIDogXAogICAgIEpTUHJv
bWlzZUNvbnN0cnVjdG9yLmx1dC5oIFwKICAgICBLZXl3b3JkTG9va3VwLmggXAogICAgIExleGVy
Lmx1dC5oIFwKKyAgICBNb2R1bGVMb2FkZXJPYmplY3QubHV0LmggXAogICAgIE51bWJlckNvbnN0
cnVjdG9yLmx1dC5oIFwKICAgICBOdW1iZXJQcm90b3R5cGUubHV0LmggXAogICAgIE9iamVjdENv
bnN0cnVjdG9yLmx1dC5oIFwKZGlmZiAtLWdpdCBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9KYXZh
U2NyaXB0Q29yZS54Y29kZXByb2ovcHJvamVjdC5wYnhwcm9qIGIvU291cmNlL0phdmFTY3JpcHRD
b3JlL0phdmFTY3JpcHRDb3JlLnhjb2RlcHJvai9wcm9qZWN0LnBieHByb2oKaW5kZXggZmRjNjgz
NzFkZGIyYmU1NTM0OTQxZjgzMmM4YzcyMDFiNDA2ZGFhZi4uOTY5MjU3NDA5OTJjN2UzMjlmMGFi
YjVmN2I5MjcxZjcwZjc2M2FkOSAxMDA2NDQKLS0tIGEvU291cmNlL0phdmFTY3JpcHRDb3JlL0ph
dmFTY3JpcHRDb3JlLnhjb2RlcHJvai9wcm9qZWN0LnBieHByb2oKKysrIGIvU291cmNlL0phdmFT
Y3JpcHRDb3JlL0phdmFTY3JpcHRDb3JlLnhjb2RlcHJvai9wcm9qZWN0LnBieHByb2oKQEAgLTE2
OTQsMTMgKzE2OTQsMTUgQEAKIAkJRTMzNjM3QTYxQjYzMjIwMjAwRUUwODQwIC8qIFJlZmxlY3RP
YmplY3QuaCBpbiBIZWFkZXJzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IEUz
MzYzN0E0MUI2MzIyMDIwMEVFMDg0MCAvKiBSZWZsZWN0T2JqZWN0LmggKi87IHNldHRpbmdzID0g
e0FUVFJJQlVURVMgPSAoUHJpdmF0ZSwgKTsgfTsgfTsKIAkJRTMzQjNFMjYxQjdBQkQ3NTAwNDhE
QjJFIC8qIEluc3BlY3Rvckluc3RydW1lbnRhdGlvbk9iamVjdC5sdXQuaCBpbiBIZWFkZXJzICov
ID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IEUzM0IzRTI1MUI3QUJENzUwMDQ4REIy
RSAvKiBJbnNwZWN0b3JJbnN0cnVtZW50YXRpb25PYmplY3QubHV0LmggKi87IH07CiAJCUUzNTQ2
MjJCMUI2MDY1RDEwMDU0NTM4NiAvKiBDb25zdHJ1Y3RBYmlsaXR5LmggaW4gSGVhZGVycyAqLyA9
IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSBFMzU0NjIyQTFCNjA2NUQxMDA1NDUzODYg
LyogQ29uc3RydWN0QWJpbGl0eS5oICovOyBzZXR0aW5ncyA9IHtBVFRSSUJVVEVTID0gKFByaXZh
dGUsICk7IH07IH07CisJCUUzNTVGMzUyMUI3REM4NTMwMEM1MERDNSAvKiBNb2R1bGVMb2FkZXJP
YmplY3QuY3BwIGluIFNvdXJjZXMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0g
RTM1NUYzNTAxQjdEQzg1MzAwQzUwREM1IC8qIE1vZHVsZUxvYWRlck9iamVjdC5jcHAgKi87IH07
CisJCUUzNTVGMzUzMUI3REM4NTMwMEM1MERDNSAvKiBNb2R1bGVMb2FkZXJPYmplY3QuaCBpbiBI
ZWFkZXJzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IEUzNTVGMzUxMUI3REM4
NTMwMEM1MERDNSAvKiBNb2R1bGVMb2FkZXJPYmplY3QuaCAqLzsgfTsKIAkJRTM3OTRFNzUxQjc3
RUI5NzAwNTU0M0FFIC8qIE1vZHVsZUFuYWx5emVyLmNwcCBpbiBTb3VyY2VzICovID0ge2lzYSA9
IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IEUzNzk0RTczMUI3N0VCOTcwMDU1NDNBRSAvKiBNb2R1
bGVBbmFseXplci5jcHAgKi87IH07CiAJCUUzNzk0RTc2MUI3N0VCOTcwMDU1NDNBRSAvKiBNb2R1
bGVBbmFseXplci5oIGluIEhlYWRlcnMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVm
ID0gRTM3OTRFNzQxQjc3RUI5NzAwNTU0M0FFIC8qIE1vZHVsZUFuYWx5emVyLmggKi87IHNldHRp
bmdzID0ge0FUVFJJQlVURVMgPSAoUHJpdmF0ZSwgKTsgfTsgfTsKLQkJRTM5NjNDRUQxQjczRjc1
MDAwRUI0Q0U1IC8qIE1vZHVsZVJlY29yZC5oIGluIEhlYWRlcnMgKi8gPSB7aXNhID0gUEJYQnVp
bGRGaWxlOyBmaWxlUmVmID0gRTM5NjNDRUIxQjczRjc1MDAwRUI0Q0U1IC8qIE1vZHVsZVJlY29y
ZC5oICovOyBzZXR0aW5ncyA9IHtBVFRSSUJVVEVTID0gKFByaXZhdGUsICk7IH07IH07CiAJCUUz
OTYzQ0VFMUI3M0Y3NTAwMEVCNENFNSAvKiBOb2Rlc0FuYWx5emVNb2R1bGUuY3BwIGluIFNvdXJj
ZXMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gRTM5NjNDRUMxQjczRjc1MDAw
RUI0Q0U1IC8qIE5vZGVzQW5hbHl6ZU1vZHVsZS5jcHAgKi87IH07Ci0JCUUzQzA5RjU1MUI3OTY5
MkEwMEVFMzZBMiAvKiBNb2R1bGVSZWNvcmQuY3BwIGluIFNvdXJjZXMgKi8gPSB7aXNhID0gUEJY
QnVpbGRGaWxlOyBmaWxlUmVmID0gRTNDMDlGNTQxQjc5NjkyQTAwRUUzNkEyIC8qIE1vZHVsZVJl
Y29yZC5jcHAgKi87IH07CiAJCUUzNUUwMzVGMUI3QUI0M0UwMDczQUQyQSAvKiBJbnNwZWN0b3JJ
bnN0cnVtZW50YXRpb25PYmplY3QuY3BwIGluIFNvdXJjZXMgKi8gPSB7aXNhID0gUEJYQnVpbGRG
aWxlOyBmaWxlUmVmID0gRTM1RTAzNUQxQjdBQjQzRTAwNzNBRDJBIC8qIEluc3BlY3Rvckluc3Ry
dW1lbnRhdGlvbk9iamVjdC5jcHAgKi87IH07CiAJCUUzNUUwMzYwMUI3QUI0M0UwMDczQUQyQSAv
KiBJbnNwZWN0b3JJbnN0cnVtZW50YXRpb25PYmplY3QuaCBpbiBIZWFkZXJzICovID0ge2lzYSA9
IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IEUzNUUwMzVFMUI3QUI0M0UwMDczQUQyQSAvKiBJbnNw
ZWN0b3JJbnN0cnVtZW50YXRpb25PYmplY3QuaCAqLzsgc2V0dGluZ3MgPSB7QVRUUklCVVRFUyA9
IChQcml2YXRlLCApOyB9OyB9OworCQlFMzlEQTRBNjFCN0U4QjdDMDA4NEYzM0EgLyogSlNNb2R1
bGVSZWNvcmQuY3BwIGluIFNvdXJjZXMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVm
ID0gRTM5REE0QTQxQjdFOEI3QzAwODRGMzNBIC8qIEpTTW9kdWxlUmVjb3JkLmNwcCAqLzsgfTsK
KwkJRTM5REE0QTcxQjdFOEI3QzAwODRGMzNBIC8qIEpTTW9kdWxlUmVjb3JkLmggaW4gSGVhZGVy
cyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSBFMzlEQTRBNTFCN0U4QjdDMDA4
NEYzM0EgLyogSlNNb2R1bGVSZWNvcmQuaCAqLzsgc2V0dGluZ3MgPSB7QVRUUklCVVRFUyA9IChQ
cml2YXRlLCApOyB9OyB9OwogCQlFM0VGODg3NDFCNjZERjIzMDAzRjI2Q0IgLyogSlNQcm9wZXJ0
eU5hbWVJdGVyYXRvci5jcHAgaW4gU291cmNlcyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZp
bGVSZWYgPSBFM0VGODg3MjFCNjZERjIzMDAzRjI2Q0IgLyogSlNQcm9wZXJ0eU5hbWVJdGVyYXRv
ci5jcHAgKi87IH07CiAJCUUzRUY4ODc1MUI2NkRGMjMwMDNGMjZDQiAvKiBKU1Byb3BlcnR5TmFt
ZUl0ZXJhdG9yLmggaW4gSGVhZGVycyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYg
PSBFM0VGODg3MzFCNjZERjIzMDAzRjI2Q0IgLyogSlNQcm9wZXJ0eU5hbWVJdGVyYXRvci5oICov
OyBzZXR0aW5ncyA9IHtBVFRSSUJVVEVTID0gKFByaXZhdGUsICk7IH07IH07CiAJCUU0OURDMTZC
MTJFRjI5M0UwMDE4NEExRiAvKiBTb3VyY2VQcm92aWRlckNhY2hlLmNwcCBpbiBTb3VyY2VzICov
ID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IEU0OURDMTU1MTJFRjI3NzIwMDE4NEEx
RiAvKiBTb3VyY2VQcm92aWRlckNhY2hlLmNwcCAqLzsgfTsKQEAgLTM1MjYsMTQgKzM1MjgsMTYg
QEAKIAkJRTMzNjM3QTQxQjYzMjIwMjAwRUUwODQwIC8qIFJlZmxlY3RPYmplY3QuaCAqLyA9IHtp
c2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlw
ZSA9IHNvdXJjZWNvZGUuYy5oOyBwYXRoID0gUmVmbGVjdE9iamVjdC5oOyBzb3VyY2VUcmVlID0g
Ijxncm91cD4iOyB9OwogCQlFMzNCM0UyNTFCN0FCRDc1MDA0OERCMkUgLyogSW5zcGVjdG9ySW5z
dHJ1bWVudGF0aW9uT2JqZWN0Lmx1dC5oICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZp
bGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jLmg7IG5hbWUg
PSBJbnNwZWN0b3JJbnN0cnVtZW50YXRpb25PYmplY3QubHV0Lmg7IHBhdGggPSBJbnNwZWN0b3JJ
bnN0cnVtZW50YXRpb25PYmplY3QubHV0Lmg7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CiAJ
CUUzNTQ2MjJBMUI2MDY1RDEwMDU0NTM4NiAvKiBDb25zdHJ1Y3RBYmlsaXR5LmggKi8gPSB7aXNh
ID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUg
PSBzb3VyY2Vjb2RlLmMuaDsgcGF0aCA9IENvbnN0cnVjdEFiaWxpdHkuaDsgc291cmNlVHJlZSA9
ICI8Z3JvdXA+IjsgfTsKKwkJRTM1NUYzNTAxQjdEQzg1MzAwQzUwREM1IC8qIE1vZHVsZUxvYWRl
ck9iamVjdC5jcHAgKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0g
NDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmNwcC5jcHA7IHBhdGggPSBNb2R1bGVM
b2FkZXJPYmplY3QuY3BwOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OworCQlFMzU1RjM1MTFC
N0RDODUzMDBDNTBEQzUgLyogTW9kdWxlTG9hZGVyT2JqZWN0LmggKi8gPSB7aXNhID0gUEJYRmls
ZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vj
b2RlLmMuaDsgcGF0aCA9IE1vZHVsZUxvYWRlck9iamVjdC5oOyBzb3VyY2VUcmVlID0gIjxncm91
cD4iOyB9OwogCQlFMzc5NEU3MzFCNzdFQjk3MDA1NTQzQUUgLyogTW9kdWxlQW5hbHl6ZXIuY3Bw
ICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93
bkZpbGVUeXBlID0gc291cmNlY29kZS5jcHAuY3BwOyBwYXRoID0gTW9kdWxlQW5hbHl6ZXIuY3Bw
OyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OwogCQlFMzc5NEU3NDFCNzdFQjk3MDA1NTQzQUUg
LyogTW9kdWxlQW5hbHl6ZXIuaCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5j
b2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuYy5oOyBwYXRoID0gTW9k
dWxlQW5hbHl6ZXIuaDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKLQkJRTM5NjNDRUIxQjcz
Rjc1MDAwRUI0Q0U1IC8qIE1vZHVsZVJlY29yZC5oICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVu
Y2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jLmg7
IHBhdGggPSBNb2R1bGVSZWNvcmQuaDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKIAkJRTM5
NjNDRUMxQjczRjc1MDAwRUI0Q0U1IC8qIE5vZGVzQW5hbHl6ZU1vZHVsZS5jcHAgKi8gPSB7aXNh
ID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUg
PSBzb3VyY2Vjb2RlLmNwcC5jcHA7IHBhdGggPSBOb2Rlc0FuYWx5emVNb2R1bGUuY3BwOyBzb3Vy
Y2VUcmVlID0gIjxncm91cD4iOyB9OwotCQlFM0MwOUY1NDFCNzk2OTJBMDBFRTM2QTIgLyogTW9k
dWxlUmVjb3JkLmNwcCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2Rpbmcg
PSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuY3BwLmNwcDsgcGF0aCA9IE1vZHVs
ZVJlY29yZC5jcHA7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CiAJCUUzNUUwMzVEMUI3QUI0
M0UwMDczQUQyQSAvKiBJbnNwZWN0b3JJbnN0cnVtZW50YXRpb25PYmplY3QuY3BwICovID0ge2lz
YSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBl
ID0gc291cmNlY29kZS5jcHAuY3BwOyBwYXRoID0gSW5zcGVjdG9ySW5zdHJ1bWVudGF0aW9uT2Jq
ZWN0LmNwcDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKIAkJRTM1RTAzNUUxQjdBQjQzRTAw
NzNBRDJBIC8qIEluc3BlY3Rvckluc3RydW1lbnRhdGlvbk9iamVjdC5oICovID0ge2lzYSA9IFBC
WEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gc291
cmNlY29kZS5jLmg7IHBhdGggPSBJbnNwZWN0b3JJbnN0cnVtZW50YXRpb25PYmplY3QuaDsgc291
cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKIAkJRTM1RTAzNjExQjdBQjQ4NTAwNzNBRDJBIC8qIElu
c3BlY3Rvckluc3RydW1lbnRhdGlvbk9iamVjdC5qcyAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJl
bmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuamF2
YXNjcmlwdDsgcGF0aCA9IEluc3BlY3Rvckluc3RydW1lbnRhdGlvbk9iamVjdC5qczsgc291cmNl
VHJlZSA9ICI8Z3JvdXA+IjsgfTsKKwkJRTM5REE0QTQxQjdFOEI3QzAwODRGMzNBIC8qIEpTTW9k
dWxlUmVjb3JkLmNwcCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2Rpbmcg
PSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuY3BwLmNwcDsgcGF0aCA9IEpTTW9k
dWxlUmVjb3JkLmNwcDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKKwkJRTM5REE0QTUxQjdF
OEI3QzAwODRGMzNBIC8qIEpTTW9kdWxlUmVjb3JkLmggKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVy
ZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmMu
aDsgcGF0aCA9IEpTTW9kdWxlUmVjb3JkLmg7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CiAJ
CUUzRUY4ODcyMUI2NkRGMjMwMDNGMjZDQiAvKiBKU1Byb3BlcnR5TmFtZUl0ZXJhdG9yLmNwcCAq
LyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25G
aWxlVHlwZSA9IHNvdXJjZWNvZGUuY3BwLmNwcDsgcGF0aCA9IEpTUHJvcGVydHlOYW1lSXRlcmF0
b3IuY3BwOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OwogCQlFM0VGODg3MzFCNjZERjIzMDAz
RjI2Q0IgLyogSlNQcm9wZXJ0eU5hbWVJdGVyYXRvci5oICovID0ge2lzYSA9IFBCWEZpbGVSZWZl
cmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5j
Lmg7IHBhdGggPSBKU1Byb3BlcnR5TmFtZUl0ZXJhdG9yLmg7IHNvdXJjZVRyZWUgPSAiPGdyb3Vw
PiI7IH07CiAJCUU0OURDMTQ5MTJFRjI2MUEwMDE4NEExRiAvKiBTb3VyY2VQcm92aWRlckNhY2hl
SXRlbS5oICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxh
c3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jLmg7IHBhdGggPSBTb3VyY2VQcm92aWRlckNh
Y2hlSXRlbS5oOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OwpAQCAtNDQ0Niw4ICs0NDUwLDYg
QEAKIAkJCQlGNjkyQTg2NjAyNTU1OTdEMDFGRjYwRjcgLyogTGV4ZXIuaCAqLywKIAkJCQlFMzc5
NEU3MzFCNzdFQjk3MDA1NTQzQUUgLyogTW9kdWxlQW5hbHl6ZXIuY3BwICovLAogCQkJCUUzNzk0
RTc0MUI3N0VCOTcwMDU1NDNBRSAvKiBNb2R1bGVBbmFseXplci5oICovLAotCQkJCUUzQzA5RjU0
MUI3OTY5MkEwMEVFMzZBMiAvKiBNb2R1bGVSZWNvcmQuY3BwICovLAotCQkJCUUzOTYzQ0VCMUI3
M0Y3NTAwMEVCNENFNSAvKiBNb2R1bGVSZWNvcmQuaCAqLywKIAkJCQk5MzBEQUQwMzBGQjFFQjFB
MDA4MkQyMDUgLyogTm9kZUNvbnN0cnVjdG9ycy5oICovLAogCQkJCUY2OTJBODZEMDI1NTU5N0Qw
MUZGNjBGNyAvKiBOb2Rlcy5jcHAgKi8sCiAJCQkJRjY5MkE4NkUwMjU1NTk3RDAxRkY2MEY3IC8q
IE5vZGVzLmggKi8sCkBAIC00NzA5LDYgKzQ3MTEsOCBAQAogCQkJCUE3MDA4NzQwMTdDQkU4RUIw
MEMzRTY0MyAvKiBKU01hcC5oICovLAogCQkJCUE3NERFRjhGMTgyRDk5MTQwMDUyMkMyMiAvKiBK
U01hcEl0ZXJhdG9yLmNwcCAqLywKIAkJCQlBNzRERUY5MDE4MkQ5OTE0MDA1MjJDMjIgLyogSlNN
YXBJdGVyYXRvci5oICovLAorCQkJCUUzOURBNEE0MUI3RThCN0MwMDg0RjMzQSAvKiBKU01vZHVs
ZVJlY29yZC5jcHAgKi8sCisJCQkJRTM5REE0QTUxQjdFOEI3QzAwODRGMzNBIC8qIEpTTW9kdWxl
UmVjb3JkLmggKi8sCiAJCQkJQTcyNzAwNzgwREFDNjA1NjAwRTU0OEQ3IC8qIEpTTm90QW5PYmpl
Y3QuY3BwICovLAogCQkJCUE3MjcwMDc3MERBQzYwNTYwMEU1NDhENyAvKiBKU05vdEFuT2JqZWN0
LmggKi8sCiAJCQkJQkMyMkEzOTgwRTE2RTE0ODAwQUYyMUM4IC8qIEpTT2JqZWN0LmNwcCAqLywK
QEAgLTQ3ODgsNiArNDc5Miw4IEBACiAJCQkJOTAyMTNFM0IxMjNBNDBDMjAwRDQyMkYzIC8qIE1l
bW9yeVN0YXRpc3RpY3MuY3BwICovLAogCQkJCTkwMjEzRTNDMTIzQTQwQzIwMEQ0MjJGMyAvKiBN
ZW1vcnlTdGF0aXN0aWNzLmggKi8sCiAJCQkJN0MwMDhDRTUxODc2MzFCNjAwOTU1QzI0IC8qIE1p
Y3JvdGFzay5oICovLAorCQkJCUUzNTVGMzUwMUI3REM4NTMwMEM1MERDNSAvKiBNb2R1bGVMb2Fk
ZXJPYmplY3QuY3BwICovLAorCQkJCUUzNTVGMzUxMUI3REM4NTMwMEM1MERDNSAvKiBNb2R1bGVM
b2FkZXJPYmplY3QuaCAqLywKIAkJCQlCQzAyRTkwODBFMTgzOURCMDAwRjkyOTcgLyogTmF0aXZl
RXJyb3JDb25zdHJ1Y3Rvci5jcHAgKi8sCiAJCQkJQkMwMkU5MDkwRTE4MzlEQjAwMEY5Mjk3IC8q
IE5hdGl2ZUVycm9yQ29uc3RydWN0b3IuaCAqLywKIAkJCQlCQzAyRTkwQTBFMTgzOURCMDAwRjky
OTcgLyogTmF0aXZlRXJyb3JQcm90b3R5cGUuY3BwICovLApAQCAtNTc5NSw2ICs1ODAxLDcgQEAK
IAkJCWZpbGVzID0gKAogCQkJCTBGRkE1NDk4MTZCODgzNTMwMEIzQTk4MiAvKiBBNjRET3Bjb2Rl
LmggaW4gSGVhZGVycyAqLywKIAkJCQk4NjAxNjFFMzBGM0E4M0MxMDBGODQ3MTAgLyogQWJzdHJh
Y3RNYWNyb0Fzc2VtYmxlci5oIGluIEhlYWRlcnMgKi8sCisJCQkJRTM1NUYzNTMxQjdEQzg1MzAw
QzUwREM1IC8qIE1vZHVsZUxvYWRlck9iamVjdC5oIGluIEhlYWRlcnMgKi8sCiAJCQkJMEZFMDUw
MjkxQUE5MDk1NjAwRDMzQjMzIC8qIFNjb3BlZEFyZ3VtZW50c1RhYmxlLmggaW4gSGVhZGVycyAq
LywKIAkJCQkwRjU1RjBGNTE0RDEwNjNDMDBBQzc2NDkgLyogQWJzdHJhY3RQQy5oIGluIEhlYWRl
cnMgKi8sCiAJCQkJMkE0OEQxOTExNzcyMzY1QjAwQzY1QTVGIC8qIEFQSUNhbGxiYWNrRnVuY3Rp
b24uaCBpbiBIZWFkZXJzICovLApAQCAtNjE5Myw3ICs2MjAwLDYgQEAKIAkJCQkwRkNFRkFBQzE4
MDRDMTNFMDA0NzJDRTQgLyogRlRMU2F2ZVJlc3RvcmUuaCBpbiBIZWFkZXJzICovLAogCQkJCTBG
MjVGMUIyMTgxNjM1RjMwMDUyMkYzOSAvKiBGVExTbG93UGF0aENhbGwuaCBpbiBIZWFkZXJzICov
LAogCQkJCUUzNTQ2MjJCMUI2MDY1RDEwMDU0NTM4NiAvKiBDb25zdHJ1Y3RBYmlsaXR5LmggaW4g
SGVhZGVycyAqLywKLQkJCQlFMzk2M0NFRDFCNzNGNzUwMDBFQjRDRTUgLyogTW9kdWxlUmVjb3Jk
LmggaW4gSGVhZGVycyAqLywKIAkJCQkwRjI1RjFCNDE4MTYzNUYzMDA1MjJGMzkgLyogRlRMU2xv
d1BhdGhDYWxsS2V5LmggaW4gSGVhZGVycyAqLywKIAkJCQkwRjlEMzM5QjE4MDNBREI3MDA3M0My
QkMgLyogRlRMU3RhY2tNYXBzLmggaW4gSGVhZGVycyAqLywKIAkJCQkwRkVBMEExMjE3MDUxM0RC
MDBCQjcyMkMgLyogRlRMU3RhdGUuaCBpbiBIZWFkZXJzICovLApAQCAtNjIxNCw2ICs2MjIwLDcg
QEAKIAkJCQlCQ0JFMkNBRTE0RTk4NUFBMDAwNTkzQUQgLyogR0NBc3NlcnRpb25zLmggaW4gSGVh
ZGVycyAqLywKIAkJCQkwRjc2NkQzMDE1QThEQ0UyMDA4RjM2M0UgLyogR0NBd2FyZUpJVFN0dWJS
b3V0aW5lLmggaW4gSGVhZGVycyAqLywKIAkJCQk3MEVDMEVDNzFBQTBEN0RBMDBCNkFBRkEgLyog
U3RyaW5nSXRlcmF0b3JQcm90b3R5cGUuaCBpbiBIZWFkZXJzICovLAorCQkJCUUzOURBNEE3MUI3
RThCN0MwMDg0RjMzQSAvKiBKU01vZHVsZVJlY29yZC5oIGluIEhlYWRlcnMgKi8sCiAJCQkJMEYy
QjY2QUMxN0I2QjUzRjAwQTdBRTNGIC8qIEdDSW5jb21pbmdSZWZDb3VudGVkLmggaW4gSGVhZGVy
cyAqLywKIAkJCQkwRjJCNjZBRDE3QjZCNTQ1MDBBN0FFM0YgLyogR0NJbmNvbWluZ1JlZkNvdW50
ZWRJbmxpbmVzLmggaW4gSGVhZGVycyAqLywKIAkJCQkwRjJCNjZBRTE3QjZCNTQ1MDBBN0FFM0Yg
LyogR0NJbmNvbWluZ1JlZkNvdW50ZWRTZXQuaCBpbiBIZWFkZXJzICovLApAQCAtNzMyOSw2ICs3
MzM2LDcgQEAKIAkJCQkyQTg4MDY3ODE5MTA3RDU1MDBDQjBCQkIgLyogREZHRnVuY3Rpb25XaGl0
ZWxpc3QuY3BwIGluIFNvdXJjZXMgKi8sCiAJCQkJMEYyREQ4MTMxQUIzRDhCRTAwQkJCOEU4IC8q
IERGR0FyZ3VtZW50c1V0aWxpdGllcy5jcHAgaW4gU291cmNlcyAqLywKIAkJCQlBN0Q4OUNGMzE3
QTBCOENDMDA3NzNBRDggLyogREZHQmxvY2tJbnNlcnRpb25TZXQuY3BwIGluIFNvdXJjZXMgKi8s
CisJCQkJRTM1NUYzNTIxQjdEQzg1MzAwQzUwREM1IC8qIE1vZHVsZUxvYWRlck9iamVjdC5jcHAg
aW4gU291cmNlcyAqLywKIAkJCQk4NkVDOURDNDEzMjhERjgyMDAyQjJBRDcgLyogREZHQnl0ZUNv
ZGVQYXJzZXIuY3BwIGluIFNvdXJjZXMgKi8sCiAJCQkJMEZEODJFMjExNDE3MkNFMzAwMTc5Qzk0
IC8qIERGR0NhcGFiaWxpdGllcy5jcHAgaW4gU291cmNlcyAqLywKIAkJCQkwRjJCOUNFNjE5RDBC
QTdEMDBCMUQxQjUgLyogREZHT2JqZWN0QWxsb2NhdGlvblNpbmtpbmdQaGFzZS5jcHAgaW4gU291
cmNlcyAqLywKQEAgLTc2MTYsNyArNzYyNCw2IEBACiAJCQkJMEYyQjY2RUQxN0I2QjVBQjAwQTdB
RTNGIC8qIEpTRGF0YVZpZXdQcm90b3R5cGUuY3BwIGluIFNvdXJjZXMgKi8sCiAJCQkJMEYyRDRE
RTgxOTgzMkRBQzAwN0Q0QjE5IC8qIFRvVGhpc1N0YXR1cy5jcHAgaW4gU291cmNlcyAqLywKIAkJ
CQlGRTM4NEVFNTFBRERCN0FEMDA1NURFMkMgLyogSlNEb2xsYXJWTS5jcHAgaW4gU291cmNlcyAq
LywKLQkJCQlFM0MwOUY1NTFCNzk2OTJBMDBFRTM2QTIgLyogTW9kdWxlUmVjb3JkLmNwcCBpbiBT
b3VyY2VzICovLAogCQkJCTk3ODgwMTQwMTQ3MUFEOTIwMDQxQjAxNiAvKiBKU0RhdGVNYXRoLmNw
cCBpbiBTb3VyY2VzICovLAogCQkJCTBGRTA1MDE3MUFBOTA5MTEwMEQzM0IzMyAvKiBEaXJlY3RB
cmd1bWVudHMuY3BwIGluIFNvdXJjZXMgKi8sCiAJCQkJMTQwNTY2RDYxMDdFQzI3MTAwNURCQzhE
IC8qIEpTRnVuY3Rpb24uY3BwIGluIFNvdXJjZXMgKi8sCkBAIC03ODU4LDYgKzc4NjUsNyBAQAog
CQkJCTBGRjQyNzMyMTU4RUJENTgwMDRDQjlGRiAvKiBVRGlzODZEaXNhc3NlbWJsZXIuY3BwIGlu
IFNvdXJjZXMgKi8sCiAJCQkJQTc2RjI3OTQxNUYxM0M5NjAwNTE3RDY3IC8qIFVubGlua2VkQ29k
ZUJsb2NrLmNwcCBpbiBTb3VyY2VzICovLAogCQkJCUI1OUY4OTM5MTg5MUYyOUYwMEQ1Q0NEQyAv
KiBVbmxpbmtlZEluc3RydWN0aW9uU3RyZWFtLmNwcCBpbiBTb3VyY2VzICovLAorCQkJCUUzOURB
NEE2MUI3RThCN0MwMDg0RjMzQSAvKiBKU01vZHVsZVJlY29yZC5jcHAgaW4gU291cmNlcyAqLywK
IAkJCQkwRjc1NzZEMjE4RTFGRUU5MDAyRUY0Q0QgLyogQWNjZXNzb3JDYWxsSklUU3R1YlJvdXRp
bmUuY3BwIGluIFNvdXJjZXMgKi8sCiAJCQkJMEYyNEU1NTgxN0Y3NEVEQjAwQUJCMjE3IC8qIFZh
bHVlUmVjb3ZlcnkuY3BwIGluIFNvdXJjZXMgKi8sCiAJCQkJRTE4RTNBNTkwREY5Mjc4QzAwRDkw
QjM0IC8qIFZNLmNwcCBpbiBTb3VyY2VzICovLApkaWZmIC0tZ2l0IGEvU291cmNlL0phdmFTY3Jp
cHRDb3JlL2J1aWx0aW5zL0J1aWx0aW5OYW1lcy5oIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL2J1
aWx0aW5zL0J1aWx0aW5OYW1lcy5oCmluZGV4IGNlMDQ0NDc5ZjczMDJmMTliMWQ4MTE2OGY5OWVj
NDgzNWI0MDIyMGEuLjdlNTQzNDJlNzUyZjlmMmQ0ZTgzNWVkMDM0ZjQ2MDljZjM2NWQzOWYgMTAw
NjQ0Ci0tLSBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9idWlsdGlucy9CdWlsdGluTmFtZXMuaAor
KysgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvYnVpbHRpbnMvQnVpbHRpbk5hbWVzLmgKQEAgLTY3
LDggKzY3LDggQEAgY2xhc3MgQnVpbHRpbk5hbWVzIHsKICAgICBib29sIGlzUHJpdmF0ZU5hbWUo
U3ltYm9sSW1wbCYgdWlkKSBjb25zdDsKICAgICBib29sIGlzUHJpdmF0ZU5hbWUoVW5pcXVlZFN0
cmluZ0ltcGwmIHVpZCkgY29uc3Q7CiAgICAgYm9vbCBpc1ByaXZhdGVOYW1lKGNvbnN0IElkZW50
aWZpZXImKSBjb25zdDsKLSAgICBjb25zdCBJZGVudGlmaWVyKiBnZXRQcml2YXRlTmFtZShjb25z
dCBJZGVudGlmaWVyJikgY29uc3Q7Ci0gICAgY29uc3QgSWRlbnRpZmllciYgZ2V0UHVibGljTmFt
ZShjb25zdCBJZGVudGlmaWVyJikgY29uc3Q7CisgICAgY29uc3QgSWRlbnRpZmllciogbG9va1Vw
UHJpdmF0ZU5hbWUoY29uc3QgSWRlbnRpZmllciYpIGNvbnN0OworICAgIGNvbnN0IElkZW50aWZp
ZXImIGxvb2tVcFB1YmxpY05hbWUoY29uc3QgSWRlbnRpZmllciYpIGNvbnN0OwogICAgIAogICAg
IEpTQ19GT1JFQUNIX0JVSUxUSU5fRlVOQ1RJT05fTkFNRShERUNMQVJFX0JVSUxUSU5fSURFTlRJ
RklFUl9BQ0NFU1NPUikKICAgICBKU0NfQ09NTU9OX1BSSVZBVEVfSURFTlRJRklFUlNfRUFDSF9Q
Uk9QRVJUWV9OQU1FKERFQ0xBUkVfQlVJTFRJTl9JREVOVElGSUVSX0FDQ0VTU09SKQpAQCAtMTEw
LDcgKzExMCw3IEBAIGlubGluZSBib29sIEJ1aWx0aW5OYW1lczo6aXNQcml2YXRlTmFtZShjb25z
dCBJZGVudGlmaWVyJiBpZGVudCkgY29uc3QKICAgICByZXR1cm4gaXNQcml2YXRlTmFtZSgqaWRl
bnQuaW1wbCgpKTsKIH0KIAotaW5saW5lIGNvbnN0IElkZW50aWZpZXIqIEJ1aWx0aW5OYW1lczo6
Z2V0UHJpdmF0ZU5hbWUoY29uc3QgSWRlbnRpZmllciYgaWRlbnQpIGNvbnN0CitpbmxpbmUgY29u
c3QgSWRlbnRpZmllciogQnVpbHRpbk5hbWVzOjpsb29rVXBQcml2YXRlTmFtZShjb25zdCBJZGVu
dGlmaWVyJiBpZGVudCkgY29uc3QKIHsKICAgICBhdXRvIGl0ZXIgPSBtX3B1YmxpY1RvUHJpdmF0
ZU1hcC5maW5kKGlkZW50LmltcGwoKSk7CiAgICAgaWYgKGl0ZXIgIT0gbV9wdWJsaWNUb1ByaXZh
dGVNYXAuZW5kKCkpCkBAIC0xMTgsNyArMTE4LDcgQEAgaW5saW5lIGNvbnN0IElkZW50aWZpZXIq
IEJ1aWx0aW5OYW1lczo6Z2V0UHJpdmF0ZU5hbWUoY29uc3QgSWRlbnRpZmllciYgaWRlbnQpIGMK
ICAgICByZXR1cm4gMDsKIH0KIAotaW5saW5lIGNvbnN0IElkZW50aWZpZXImIEJ1aWx0aW5OYW1l
czo6Z2V0UHVibGljTmFtZShjb25zdCBJZGVudGlmaWVyJiBpZGVudCkgY29uc3QKK2lubGluZSBj
b25zdCBJZGVudGlmaWVyJiBCdWlsdGluTmFtZXM6Omxvb2tVcFB1YmxpY05hbWUoY29uc3QgSWRl
bnRpZmllciYgaWRlbnQpIGNvbnN0CiB7CiAgICAgYXV0byBpdGVyID0gbV9wcml2YXRlVG9QdWJs
aWNNYXAuZmluZChpZGVudC5pbXBsKCkpOwogICAgIGlmIChpdGVyICE9IG1fcHJpdmF0ZVRvUHVi
bGljTWFwLmVuZCgpKQpkaWZmIC0tZ2l0IGEvU291cmNlL0phdmFTY3JpcHRDb3JlL2J1aWx0aW5z
L01vZHVsZUxvYWRlck9iamVjdC5qcyBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9idWlsdGlucy9N
b2R1bGVMb2FkZXJPYmplY3QuanMKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMC4uOGExY2I4MGFhYzkyNDUzMzA4MjhkNDhl
NzBkYmMwODZlNGE1ZjU3NgotLS0gL2Rldi9udWxsCisrKyBiL1NvdXJjZS9KYXZhU2NyaXB0Q29y
ZS9idWlsdGlucy9Nb2R1bGVMb2FkZXJPYmplY3QuanMKQEAgLTAsMCArMSwyNDEgQEAKKy8qCisg
KiBDb3B5cmlnaHQgKEMpIDIwMTUgQXBwbGUgSW5jLiBBbGwgcmlnaHRzIHJlc2VydmVkLgorICoK
KyAqIFJlZGlzdHJpYnV0aW9uIGFuZCB1c2UgaW4gc291cmNlIGFuZCBiaW5hcnkgZm9ybXMsIHdp
dGggb3Igd2l0aG91dAorICogbW9kaWZpY2F0aW9uLCBhcmUgcGVybWl0dGVkIHByb3ZpZGVkIHRo
YXQgdGhlIGZvbGxvd2luZyBjb25kaXRpb25zCisgKiBhcmUgbWV0OgorICogMS4gUmVkaXN0cmli
dXRpb25zIG9mIHNvdXJjZSBjb2RlIG11c3QgcmV0YWluIHRoZSBhYm92ZSBjb3B5cmlnaHQKKyAq
ICAgIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlz
Y2xhaW1lci4KKyAqIDIuIFJlZGlzdHJpYnV0aW9ucyBpbiBiaW5hcnkgZm9ybSBtdXN0IHJlcHJv
ZHVjZSB0aGUgYWJvdmUgY29weXJpZ2h0CisgKiAgICBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25k
aXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIgaW4gdGhlCisgKiAgICBkb2N1bWVu
dGF0aW9uIGFuZC9vciBvdGhlciBtYXRlcmlhbHMgcHJvdmlkZWQgd2l0aCB0aGUgZGlzdHJpYnV0
aW9uLgorICoKKyAqIFRISVMgU09GVFdBUkUgSVMgUFJPVklERUQgQlkgQVBQTEUgSU5DLiBgYEFT
IElTJycgQU5EIEFOWQorICogRVhQUkVTUyBPUiBJTVBMSUVEIFdBUlJBTlRJRVMsIElOQ0xVRElO
RywgQlVUIE5PVCBMSU1JVEVEIFRPLCBUSEUKKyAqIElNUExJRUQgV0FSUkFOVElFUyBPRiBNRVJD
SEFOVEFCSUxJVFkgQU5EIEZJVE5FU1MgRk9SIEEgUEFSVElDVUxBUgorICogUFVSUE9TRSBBUkUg
RElTQ0xBSU1FRC4gIElOIE5PIEVWRU5UIFNIQUxMIEFQUExFIElOQy4gT1IKKyAqIENPTlRSSUJV
VE9SUyBCRSBMSUFCTEUgRk9SIEFOWSBESVJFQ1QsIElORElSRUNULCBJTkNJREVOVEFMLCBTUEVD
SUFMLAorICogRVhFTVBMQVJZLCBPUiBDT05TRVFVRU5USUFMIERBTUFHRVMgKElOQ0xVRElORywg
QlVUIE5PVCBMSU1JVEVEIFRPLAorICogUFJPQ1VSRU1FTlQgT0YgU1VCU1RJVFVURSBHT09EUyBP
UiBTRVJWSUNFUzsgTE9TUyBPRiBVU0UsIERBVEEsIE9SCisgKiBQUk9GSVRTOyBPUiBCVVNJTkVT
UyBJTlRFUlJVUFRJT04pIEhPV0VWRVIgQ0FVU0VEIEFORCBPTiBBTlkgVEhFT1JZCisgKiBPRiBM
SUFCSUxJVFksIFdIRVRIRVIgSU4gQ09OVFJBQ1QsIFNUUklDVCBMSUFCSUxJVFksIE9SIFRPUlQK
KyAqIChJTkNMVURJTkcgTkVHTElHRU5DRSBPUiBPVEhFUldJU0UpIEFSSVNJTkcgSU4gQU5ZIFdB
WSBPVVQgT0YgVEhFIFVTRQorICogT0YgVEhJUyBTT0ZUV0FSRSwgRVZFTiBJRiBBRFZJU0VEIE9G
IFRIRSBQT1NTSUJJTElUWSBPRiBTVUNIIERBTUFHRS4KKyAqLworCitmdW5jdGlvbiBzZXRTdGF0
ZVRvTWF4KGVudHJ5LCBuZXdTdGF0ZSkKK3sKKyAgICAidXNlIHN0cmljdCI7CisKKyAgICBpZiAo
ZW50cnkuc3RhdGUgPCBuZXdTdGF0ZSkKKyAgICAgICAgZW50cnkuc3RhdGUgPSBuZXdTdGF0ZTsK
K30KKworZnVuY3Rpb24gbmV3UmVnaXN0cnlFbnRyeShrZXkpCit7CisgICAgInVzZSBzdHJpY3Qi
OworCisgICAgcmV0dXJuIHsKKyAgICAgICAga2V5OiBrZXksCisgICAgICAgIHN0YXRlOiB0aGlz
LkZldGNoLAorICAgICAgICBtZXRhZGF0YTogdW5kZWZpbmVkLAorICAgICAgICBmZXRjaDogdW5k
ZWZpbmVkLAorICAgICAgICB0cmFuc2xhdGU6IHVuZGVmaW5lZCwKKyAgICAgICAgaW5zdGFudGlh
dGU6IHVuZGVmaW5lZCwKKyAgICAgICAgZGVwZW5kZW5jaWVzOiBbXSwgIC8vIEtlZXAgdGhlIG9y
ZGVyLgorICAgICAgICBkZXBlbmRlbmNpZXNNYXA6IHVuZGVmaW5lZCwKKyAgICAgICAgbW9kdWxl
OiB1bmRlZmluZWQsCisgICAgICAgIGVycm9yOiB1bmRlZmluZWQsCisgICAgfTsKK30KKworZnVu
Y3Rpb24gZW5zdXJlUmVnaXN0ZXJlZChrZXkpCit7CisgICAgInVzZSBzdHJpY3QiOworCisgICAg
dmFyIGVudHJ5ID0gdGhpcy5yZWdpc3RyeS5AZ2V0KGtleSk7CisgICAgaWYgKGVudHJ5KQorICAg
ICAgICByZXR1cm4gZW50cnk7CisKKyAgICBlbnRyeSA9IHRoaXMubmV3UmVnaXN0cnlFbnRyeShr
ZXkpOworICAgIHRoaXMucmVnaXN0cnkuQHNldChrZXksIGVudHJ5KTsKKworICAgIHJldHVybiBl
bnRyeTsKK30KKworZnVuY3Rpb24gZm9yY2VGdWxmaWxsUHJvbWlzZShwcm9taXNlLCB2YWx1ZSkK
K3sKKyAgICAidXNlIHN0cmljdCI7CisKKyAgICBpZiAocHJvbWlzZS5AcHJvbWlzZVN0YXRlID09
PSBAcHJvbWlzZVBlbmRpbmcpCisgICAgICAgIEBmdWxmaWxsUHJvbWlzZShwcm9taXNlLCB2YWx1
ZSk7Cit9CisKK2Z1bmN0aW9uIGZ1bGZpbGxGZXRjaChlbnRyeSwgcGF5bG9hZCkKK3sKKyAgICAi
dXNlIHN0cmljdCI7CisKKyAgICBpZiAoIWVudHJ5LmZldGNoKQorICAgICAgICBlbnRyeS5mZXRj
aCA9IEBuZXdQcm9taXNlRGVmZXJyZWQoKS5AcHJvbWlzZTsKKyAgICB0aGlzLmZvcmNlRnVsZmls
bFByb21pc2UoZW50cnkuZmV0Y2gsIHBheWxvYWQpOworICAgIHRoaXMuc2V0U3RhdGVUb01heChl
bnRyeSwgdGhpcy5UcmFuc2xhdGUpOworfQorCitmdW5jdGlvbiBmdWxmaWxsVHJhbnNsYXRlKGVu
dHJ5LCBzb3VyY2UpCit7CisgICAgInVzZSBzdHJpY3QiOworCisgICAgaWYgKCFlbnRyeS50cmFu
c2xhdGUpCisgICAgICAgIGVudHJ5LnRyYW5zbGF0ZSA9IEBuZXdQcm9taXNlRGVmZXJyZWQoKS5A
cHJvbWlzZTsKKyAgICB0aGlzLmZvcmNlRnVsZmlsbFByb21pc2UoZW50cnkudHJhbnNsYXRlLCBz
b3VyY2UpOworICAgIHRoaXMuc2V0U3RhdGVUb01heChlbnRyeSwgdGhpcy5JbnN0YW50aWF0ZSk7
Cit9CisKK2Z1bmN0aW9uIGZ1bGZpbGxJbnN0YW50aWF0ZShlbnRyeSwgb3B0aW9uYWxJbnN0YW5j
ZSwgc291cmNlKQoreworICAgICJ1c2Ugc3RyaWN0IjsKKworICAgIGlmICghZW50cnkuaW5zdGFu
dGlhdGUpCisgICAgICAgIGVudHJ5Lmluc3RhbnRpYXRlID0gQG5ld1Byb21pc2VEZWZlcnJlZCgp
LkBwcm9taXNlOworICAgIHRoaXMuY29tbWl0SW5zdGFudGlhdGVkKGVudHJ5LCBvcHRpb25hbElu
c3RhbmNlLCBzb3VyY2UpOworfQorCitmdW5jdGlvbiBjb21taXRJbnN0YW50aWF0ZWQoZW50cnks
IG9wdGlvbmFsSW5zdGFuY2UsIHNvdXJjZSkKK3sKKyAgICAidXNlIHN0cmljdCI7CisKKyAgICB2
YXIgaW5zdGFuY2UgPSB0aGlzLmluc3RhbnRpYXRpb24ob3B0aW9uYWxJbnN0YW5jZSwgc291cmNl
KTsKKyAgICB0aGlzLmZvcmNlRnVsZmlsbFByb21pc2UoZW50cnkuaW5zdGFudGlhdGUsIGluc3Rh
bmNlKTsKKworICAgIHZhciBkZXBzID0gW107CisgICAgdmFyIGRlcHNNYXAgPSBuZXcgQE1hcCgp
OworICAgIGluc3RhbmNlLnJlZ2lzdHJ5RW50cnkgPSBlbnRyeTsKKyAgICB2YXIgcmVxdWVzdGVk
TW9kdWxlcyA9IHRoaXMucmVxdWVzdGVkTW9kdWxlcyhpbnN0YW5jZSkKKyAgICBmb3IgKHZhciBp
ID0gMCwgbGVuZ3RoID0gcmVxdWVzdGVkTW9kdWxlcy5sZW5ndGg7IGkgPCBsZW5ndGg7ICsraSkg
eworICAgICAgICB2YXIgZGVwS2V5ID0gcmVxdWVzdGVkTW9kdWxlc1tpXTsKKyAgICAgICAgdmFy
IHBhaXIgPSB7CisgICAgICAgICAgICBrZXk6IGRlcEtleSwKKyAgICAgICAgICAgIHZhbHVlOiB1
bmRlZmluZWQKKyAgICAgICAgfTsKKyAgICAgICAgQHB1dEJ5VmFsRGlyZWN0KGRlcHMsIGksIHBh
aXIpOworICAgICAgICBkZXBzTWFwLkBzZXQoZGVwS2V5LCBwYWlyKTsKKyAgICB9CisgICAgZW50
cnkuZGVwZW5kZW5jaWVzID0gZGVwczsKKyAgICBlbnRyeS5kZXBlbmRlbmNpZXNNYXAgPSBkZXBz
TWFwOworICAgIGVudHJ5Lm1vZHVsZSA9IGluc3RhbmNlOworICAgIHRoaXMuc2V0U3RhdGVUb01h
eChlbnRyeSwgdGhpcy5MaW5rKTsKK30KKworZnVuY3Rpb24gaW5zdGFudGlhdGlvbihyZXN1bHQs
IHNvdXJjZSkKK3sKKyAgICAidXNlIHN0cmljdCI7CisKKyAgICAvLyBGSVhNRTogQ3VycmVudCBp
bXBsZW1lbnRhdGlvbiBkb2VzIG5vdCBzdXBwb3J0IG9wdGlvbmFsSW5zdGFuY2UuCisKKyAgICBy
ZXR1cm4gdGhpcy5wYXJzZU1vZHVsZShzb3VyY2UpOworfQorCisvLyBMb2FkZXIuCisKK2Z1bmN0
aW9uIHJlcXVlc3RGZXRjaChrZXkpCit7CisgICAgInVzZSBzdHJpY3QiOworCisgICAgdmFyIGVu
dHJ5ID0gdGhpcy5lbnN1cmVSZWdpc3RlcmVkKGtleSk7CisgICAgaWYgKGVudHJ5LnN0YXRlID4g
dGhpcy5MaW5rKSB7CisgICAgICAgIHZhciBkZWZlcnJlZCA9IEBuZXdQcm9taXNlRGVmZXJyZWQo
KTsKKyAgICAgICAgZGVmZXJyZWQuQHJlamVjdC5AY2FsbCh1bmRlZmluZWQsIG5ldyBAVHlwZUVy
cm9yKCIiKSk7CisgICAgICAgIHJldHVybiBkZWZlcnJlZC5AcHJvbWlzZTsKKyAgICB9CisKKyAg
ICBpZiAoZW50cnkuZmV0Y2gpCisgICAgICAgIHJldHVybiBlbnRyeS5mZXRjaDsKKworICAgIHZh
ciBsb2FkZXIgPSB0aGlzOworICAgIHZhciBmZXRjaFByb21pc2UgPSB0aGlzLmZldGNoKGtleSku
dGhlbihmdW5jdGlvbiAocGF5bG9hZCkgeworICAgICAgICBsb2FkZXIuc2V0U3RhdGVUb01heChl
bnRyeSwgbG9hZGVyLlRyYW5zbGF0ZSk7CisgICAgICAgIHJldHVybiBwYXlsb2FkOworICAgIH0p
OworICAgIGVudHJ5LmZldGNoID0gZmV0Y2hQcm9taXNlOworICAgIHJldHVybiBmZXRjaFByb21p
c2U7Cit9CisKK2Z1bmN0aW9uIHJlcXVlc3RUcmFuc2xhdGUoa2V5KQoreworICAgICJ1c2Ugc3Ry
aWN0IjsKKworICAgIHZhciBlbnRyeSA9IHRoaXMuZW5zdXJlUmVnaXN0ZXJlZChrZXkpOworICAg
IGlmIChlbnRyeS5zdGF0ZSA+IHRoaXMuTGluaykgeworICAgICAgICB2YXIgZGVmZXJyZWQgPSBA
bmV3UHJvbWlzZURlZmVycmVkKCk7CisgICAgICAgIGRlZmVycmVkLkByZWplY3QuQGNhbGwodW5k
ZWZpbmVkLCBuZXcgQFR5cGVFcnJvcigiIikpOworICAgICAgICByZXR1cm4gZGVmZXJyZWQuQHBy
b21pc2U7CisgICAgfQorCisgICAgaWYgKGVudHJ5LnRyYW5zbGF0ZSkKKyAgICAgICAgcmV0dXJu
IGVudHJ5LnRyYW5zbGF0ZTsKKworICAgIHZhciBsb2FkZXIgPSB0aGlzOworICAgIHZhciB0cmFu
c2xhdGVQcm9taXNlID0gdGhpcy5yZXF1ZXN0RmV0Y2goa2V5KS50aGVuKGZ1bmN0aW9uIChwYXls
b2FkKSB7CisgICAgICAgIHJldHVybiBsb2FkZXIudHJhbnNsYXRlKGtleSwgcGF5bG9hZCkudGhl
bihmdW5jdGlvbiAoc291cmNlKSB7CisgICAgICAgICAgICBsb2FkZXIuc2V0U3RhdGVUb01heChl
bnRyeSwgbG9hZGVyLkluc3RhbnRpYXRlKTsKKyAgICAgICAgICAgIHJldHVybiBzb3VyY2U7Cisg
ICAgICAgIH0pOworICAgIH0pOworICAgIGVudHJ5LnRyYW5zbGF0ZSA9IHRyYW5zbGF0ZVByb21p
c2U7CisgICAgcmV0dXJuIHRyYW5zbGF0ZVByb21pc2U7Cit9CisKK2Z1bmN0aW9uIHJlcXVlc3RJ
bnN0YW50aWF0ZShrZXkpCit7CisgICAgInVzZSBzdHJpY3QiOworCisgICAgdmFyIGVudHJ5ID0g
dGhpcy5lbnN1cmVSZWdpc3RlcmVkKGtleSk7CisgICAgaWYgKGVudHJ5LnN0YXRlID09IHRoaXMu
UmVhZHkpIHsKKyAgICAgICAgdmFyIGRlZmVycmVkID0gQG5ld1Byb21pc2VEZWZlcnJlZCgpOwor
ICAgICAgICBkZWZlcnJlZC5AcmVqZWN0LkBjYWxsKHVuZGVmaW5lZCwgbmV3IEBUeXBlRXJyb3Io
IiIpKTsKKyAgICAgICAgcmV0dXJuIGRlZmVycmVkLkBwcm9taXNlOworICAgIH0KKworICAgIGlm
IChlbnRyeS5pbnN0YW50aWF0ZSkKKyAgICAgICAgcmV0dXJuIGVudHJ5Lmluc3RhbnRpYXRlOwor
CisgICAgdmFyIGxvYWRlciA9IHRoaXM7CisgICAgdmFyIGluc3RhbnRpYXRlUHJvbWlzZSA9IHRo
aXMucmVxdWVzdFRyYW5zbGF0ZShrZXkpLnRoZW4oZnVuY3Rpb24gKHNvdXJjZSkgeworICAgICAg
ICByZXR1cm4gbG9hZGVyLmluc3RhbnRpYXRlKGtleSwgc291cmNlKS50aGVuKGZ1bmN0aW9uIChv
cHRpb25hbEluc3RhbmNlKSB7CisgICAgICAgICAgICBsb2FkZXIuY29tbWl0SW5zdGFudGlhdGVk
KGVudHJ5LCBvcHRpb25hbEluc3RhbmNlLCBzb3VyY2UpOworICAgICAgICAgICAgcmV0dXJuIGVu
dHJ5OworICAgICAgICB9KTsKKyAgICB9KTsKKyAgICBlbnRyeS5pbnN0YW50aWF0ZSA9IGluc3Rh
bnRpYXRlUHJvbWlzZTsKKyAgICByZXR1cm4gaW5zdGFudGlhdGVQcm9taXNlOworfQorCitmdW5j
dGlvbiByZXF1ZXN0SW5zdGFudGlhdGVBbGwoa2V5KQoreworICAgICJ1c2Ugc3RyaWN0IjsKKwor
ICAgIHZhciBsb2FkZXIgPSB0aGlzOworCisgICAgcmV0dXJuIHRoaXMucmVxdWVzdEluc3RhbnRp
YXRlKGtleSkudGhlbihmdW5jdGlvbiAoZW50cnkpIHsKKyAgICAgICAgdmFyIGRlcExvYWRzID0g
W107CisgICAgICAgIGZvciAodmFyIGkgPSAwLCBsZW5ndGggPSBlbnRyeS5kZXBlbmRlbmNpZXMu
bGVuZ3RoOyBpIDwgbGVuZ3RoOyArK2kpIHsKKyAgICAgICAgICAgIHZhciBwYWlyID0gZW50cnku
ZGVwZW5kZW5jaWVzW2ldOworICAgICAgICAgICAgdmFyIHByb21pc2UgPSBsb2FkZXIucmVzb2x2
ZShwYWlyLmtleSwga2V5KS50aGVuKGZ1bmN0aW9uIChkZXBLZXkpIHsKKyAgICAgICAgICAgICAg
ICB2YXIgZGVwRW50cnkgPSBsb2FkZXIuZW5zdXJlUmVnaXN0ZXJlZChkZXBLZXkpOworICAgICAg
ICAgICAgICAgIGlmIChkZXBFbnRyeS5zdGF0ZSA9PT0gbG9hZGVyLlJlYWR5KSB7CisgICAgICAg
ICAgICAgICAgICAgIHZhciBkZXAgPSBkZXBFbnRyeS5tb2R1bGU7CisgICAgICAgICAgICAgICAg
ICAgIHBhaXIudmFsdWUgPSBkZXA7CisgICAgICAgICAgICAgICAgICAgIHJldHVybiBkZXA7Cisg
ICAgICAgICAgICAgICAgfQorCisgICAgICAgICAgICAgICAgcmV0dXJuIGxvYWRlci5yZXF1ZXN0
SW5zdGFudGlhdGVBbGwoZGVwS2V5KS50aGVuKGZ1bmN0aW9uIChkZXApIHsKKyAgICAgICAgICAg
ICAgICAgICAgcGFpci52YWx1ZSA9IGRlcDsKKyAgICAgICAgICAgICAgICAgICAgcmV0dXJuIGRl
cDsKKyAgICAgICAgICAgICAgICB9KTsKKyAgICAgICAgICAgIH0pOworICAgICAgICAgICAgQHB1
dEJ5VmFsRGlyZWN0KGRlcExvYWRzLCBpLCBwcm9taXNlKTsKKyAgICAgICAgfQorCisgICAgICAg
IHJldHVybiBAUHJvbWlzZS5AYWxsKGRlcExvYWRzKS50aGVuKGZ1bmN0aW9uIChtb2R1bGVzKSB7
IHJldHVybiBlbnRyeTsgfSk7CisgICAgfSk7Cit9CmRpZmYgLS1naXQgYS9Tb3VyY2UvSmF2YVNj
cmlwdENvcmUvYnVpbHRpbnMvT3BlcmF0aW9ucy5Qcm9taXNlLmpzIGIvU291cmNlL0phdmFTY3Jp
cHRDb3JlL2J1aWx0aW5zL09wZXJhdGlvbnMuUHJvbWlzZS5qcwppbmRleCA2NmY5YzI1MTUzNTlj
N2E1MTI1NGY5MzdmYzdmNTFjY2QxMzEyNDFkLi5kMGQ0MWQ0ZmIyYjllYzdmNzhkMWQ2MzdhMThh
MWRhYWNiYWZiYjM5IDEwMDY0NAotLS0gYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvYnVpbHRpbnMv
T3BlcmF0aW9ucy5Qcm9taXNlLmpzCisrKyBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9idWlsdGlu
cy9PcGVyYXRpb25zLlByb21pc2UuanMKQEAgLTIxOCwzICsyMTgsMjkgQEAgZnVuY3Rpb24gaW5p
dGlhbGl6ZVByb21pc2UoZXhlY3V0b3IpCiAKICAgICByZXR1cm4gdGhpczsKIH0KKworZnVuY3Rp
b24gcHJvbWlzZVRoZW4ocHJvbWlzZSwgY2FwYWJpbGl0eSwgb25GdWxmaWxsZWQsIG9uUmVqZWN0
ZWQpCit7CisgICAgInVzZSBzdHJpY3QiOworCisgICAgaWYgKHR5cGVvZiBvbkZ1bGZpbGxlZCAh
PT0gImZ1bmN0aW9uIikKKyAgICAgICAgb25GdWxmaWxsZWQgPSBmdW5jdGlvbiAoYXJndW1lbnQp
IHsgcmV0dXJuIGFyZ3VtZW50OyB9OworCisgICAgaWYgKHR5cGVvZiBvblJlamVjdGVkICE9PSAi
ZnVuY3Rpb24iKQorICAgICAgICBvblJlamVjdGVkID0gZnVuY3Rpb24gKGFyZ3VtZW50KSB7IHRo
cm93IGFyZ3VtZW50OyB9OworCisgICAgdmFyIGZ1bGZpbGxSZWFjdGlvbiA9IEBuZXdQcm9taXNl
UmVhY3Rpb24oY2FwYWJpbGl0eSwgb25GdWxmaWxsZWQpOworICAgIHZhciByZWplY3RSZWFjdGlv
biA9IEBuZXdQcm9taXNlUmVhY3Rpb24oY2FwYWJpbGl0eSwgb25SZWplY3RlZCk7CisKKyAgICB2
YXIgc3RhdGUgPSBwcm9taXNlLkBwcm9taXNlU3RhdGU7CisKKyAgICBpZiAoc3RhdGUgPT09IEBw
cm9taXNlUGVuZGluZykgeworICAgICAgICBAcHV0QnlWYWxEaXJlY3QocHJvbWlzZS5AcHJvbWlz
ZUZ1bGZpbGxSZWFjdGlvbnMsIHByb21pc2UuQHByb21pc2VGdWxmaWxsUmVhY3Rpb25zLmxlbmd0
aCwgZnVsZmlsbFJlYWN0aW9uKQorICAgICAgICBAcHV0QnlWYWxEaXJlY3QocHJvbWlzZS5AcHJv
bWlzZVJlamVjdFJlYWN0aW9ucywgcHJvbWlzZS5AcHJvbWlzZVJlamVjdFJlYWN0aW9ucy5sZW5n
dGgsIHJlamVjdFJlYWN0aW9uKQorICAgIH0gZWxzZSBpZiAoc3RhdGUgPT09IEBwcm9taXNlRnVs
ZmlsbGVkKQorICAgICAgICBAZW5xdWV1ZUpvYihAcHJvbWlzZVJlYWN0aW9uSm9iLCBbZnVsZmls
bFJlYWN0aW9uLCBwcm9taXNlLkBwcm9taXNlUmVzdWx0XSk7CisgICAgZWxzZSBpZiAoc3RhdGUg
PT09IEBwcm9taXNlUmVqZWN0ZWQpCisgICAgICAgIEBlbnF1ZXVlSm9iKEBwcm9taXNlUmVhY3Rp
b25Kb2IsIFtyZWplY3RSZWFjdGlvbiwgcHJvbWlzZS5AcHJvbWlzZVJlc3VsdF0pOworCisgICAg
cmV0dXJuIGNhcGFiaWxpdHkuQHByb21pc2U7Cit9CmRpZmYgLS1naXQgYS9Tb3VyY2UvSmF2YVNj
cmlwdENvcmUvYnVpbHRpbnMvUHJvbWlzZS5wcm90b3R5cGUuanMgYi9Tb3VyY2UvSmF2YVNjcmlw
dENvcmUvYnVpbHRpbnMvUHJvbWlzZS5wcm90b3R5cGUuanMKaW5kZXggODU2M2RmMGQ5MjdmYjIz
Mzk2ODkzOWUxNDk0MjM5NmVjODVlNjVhYS4uYmEwMjJhYmE1YTBkNThkODVlZmVlMDc5YjM5YWNi
YjExMzYyYmY4ZCAxMDA2NDQKLS0tIGEvU291cmNlL0phdmFTY3JpcHRDb3JlL2J1aWx0aW5zL1By
b21pc2UucHJvdG90eXBlLmpzCisrKyBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9idWlsdGlucy9Q
cm9taXNlLnByb3RvdHlwZS5qcwpAQCAtNDEsMjYgKzQxLDE5IEBAIGZ1bmN0aW9uIHRoZW4ob25G
dWxmaWxsZWQsIG9uUmVqZWN0ZWQpCiAgICAgLy8gaHR0cHM6Ly9idWdzLndlYmtpdC5vcmcvc2hv
d19idWcuY2dpP2lkPTE0NjYyNAogICAgIHZhciBjb25zdHJ1Y3RvciA9IHRoaXMuY29uc3RydWN0
b3I7CiAKLSAgICB2YXIgcmVzdWx0Q2FwYWJpbGl0eSA9IEBuZXdQcm9taXNlQ2FwYWJpbGl0eShj
b25zdHJ1Y3Rvcik7Ci0KLSAgICBpZiAodHlwZW9mIG9uRnVsZmlsbGVkICE9PSAiZnVuY3Rpb24i
KQotICAgICAgICBvbkZ1bGZpbGxlZCA9IGZ1bmN0aW9uIChhcmd1bWVudCkgeyByZXR1cm4gYXJn
dW1lbnQ7IH07Ci0KLSAgICBpZiAodHlwZW9mIG9uUmVqZWN0ZWQgIT09ICJmdW5jdGlvbiIpCi0g
ICAgICAgIG9uUmVqZWN0ZWQgPSBmdW5jdGlvbiAoYXJndW1lbnQpIHsgdGhyb3cgYXJndW1lbnQ7
IH07Ci0KLSAgICB2YXIgZnVsZmlsbFJlYWN0aW9uID0gQG5ld1Byb21pc2VSZWFjdGlvbihyZXN1
bHRDYXBhYmlsaXR5LCBvbkZ1bGZpbGxlZCk7Ci0gICAgdmFyIHJlamVjdFJlYWN0aW9uID0gQG5l
d1Byb21pc2VSZWFjdGlvbihyZXN1bHRDYXBhYmlsaXR5LCBvblJlamVjdGVkKTsKKyAgICByZXR1
cm4gQHByb21pc2VUaGVuKHRoaXMsIEBuZXdQcm9taXNlQ2FwYWJpbGl0eShjb25zdHJ1Y3Rvciks
IG9uRnVsZmlsbGVkLCBvblJlamVjdGVkKTsKK30KIAotICAgIHZhciBzdGF0ZSA9IHRoaXMuQHBy
b21pc2VTdGF0ZTsKK2Z1bmN0aW9uIHByaXZhdGVUaGVuKG9uRnVsZmlsbGVkLCBvblJlamVjdGVk
KQoreworICAgIC8vIFRoaXMgZnVuY3Rpb24gaXMgaW50ZW5kZWQgdG8gYmUgdXNlZCBpbiB0aGUg
SlNDIGludGVybmFscy4KKyAgICAvLyBUaGUgaW1wbGVtZW50YXRpb24gc2hvdWxkIHRha2UgY2Fy
ZSBub3QgdG8gcGVyZm9ybSB0aGUgdXNlcgorICAgIC8vIG9ic2VydmFibGUgLyB0cmFwcGFibGUg
b3BlcmF0aW9ucy4KKyAgICAvLworICAgIC8vIDEuIERvbid0IGxvb2sgdXAgdGhpcy5jb25zdHJ1
Y3RvciAvIEBAc3BlY2llcy4gQWx3YXlzIGNvbnN0cnVjdAorICAgIC8vICAgIHRoZSBwbGFpbiBQ
cm9taXNlIG9iamVjdC4KIAotICAgIGlmIChzdGF0ZSA9PT0gQHByb21pc2VQZW5kaW5nKSB7Ci0g
ICAgICAgIEBwdXRCeVZhbERpcmVjdCh0aGlzLkBwcm9taXNlRnVsZmlsbFJlYWN0aW9ucywgdGhp
cy5AcHJvbWlzZUZ1bGZpbGxSZWFjdGlvbnMubGVuZ3RoLCBmdWxmaWxsUmVhY3Rpb24pCi0gICAg
ICAgIEBwdXRCeVZhbERpcmVjdCh0aGlzLkBwcm9taXNlUmVqZWN0UmVhY3Rpb25zLCB0aGlzLkBw
cm9taXNlUmVqZWN0UmVhY3Rpb25zLmxlbmd0aCwgcmVqZWN0UmVhY3Rpb24pCi0gICAgfSBlbHNl
IGlmIChzdGF0ZSA9PT0gQHByb21pc2VGdWxmaWxsZWQpCi0gICAgICAgIEBlbnF1ZXVlSm9iKEBw
cm9taXNlUmVhY3Rpb25Kb2IsIFtmdWxmaWxsUmVhY3Rpb24sIHRoaXMuQHByb21pc2VSZXN1bHRd
KTsKLSAgICBlbHNlIGlmIChzdGF0ZSA9PT0gQHByb21pc2VSZWplY3RlZCkKLSAgICAgICAgQGVu
cXVldWVKb2IoQHByb21pc2VSZWFjdGlvbkpvYiwgW3JlamVjdFJlYWN0aW9uLCB0aGlzLkBwcm9t
aXNlUmVzdWx0XSk7CisgICAgInVzZSBzdHJpY3QiOwogCi0gICAgcmV0dXJuIHJlc3VsdENhcGFi
aWxpdHkuQHByb21pc2U7CisgICAgcmV0dXJuIEBwcm9taXNlVGhlbih0aGlzLCBAbmV3UHJvbWlz
ZURlZmVycmVkKCksIG9uRnVsZmlsbGVkLCBvblJlamVjdGVkKTsKIH0KZGlmZiAtLWdpdCBhL1Nv
dXJjZS9KYXZhU2NyaXB0Q29yZS9idWlsdGlucy9Qcm9taXNlQ29uc3RydWN0b3IuanMgYi9Tb3Vy
Y2UvSmF2YVNjcmlwdENvcmUvYnVpbHRpbnMvUHJvbWlzZUNvbnN0cnVjdG9yLmpzCmluZGV4IDFm
ODNiNDdmNzkwYTc1ZTViZjhjOTNkNWU2NjQ5NjE4Y2IxYWVjNjcuLmQ0NzA0NGNiNzUyMjg2YjA5
ODhlNTliZGNhODg0NWNkM2IyMTI0NzEgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9KYXZhU2NyaXB0Q29y
ZS9idWlsdGlucy9Qcm9taXNlQ29uc3RydWN0b3IuanMKKysrIGIvU291cmNlL0phdmFTY3JpcHRD
b3JlL2J1aWx0aW5zL1Byb21pc2VDb25zdHJ1Y3Rvci5qcwpAQCAtMTM3LDMgKzEzNyw2NSBAQCBm
dW5jdGlvbiByZXNvbHZlKHZhbHVlKQogCiAgICAgcmV0dXJuIHByb21pc2VDYXBhYmlsaXR5LkBw
cm9taXNlOwogfQorCitmdW5jdGlvbiBwcml2YXRlQWxsKGFycmF5KQoreworICAgIC8vIFRoaXMg
ZnVuY3Rpb24gaXMgaW50ZW5kZWQgdG8gYmUgdXNlZCBpbiB0aGUgSlNDIGludGVybmFscy4KKyAg
ICAvLyBUaGUgaW1wbGVtZW50YXRpb24gc2hvdWxkIHRha2UgY2FyZSBub3QgdG8gcGVyZm9ybSB0
aGUgdXNlcgorICAgIC8vIG9ic2VydmFibGUgLyB0cmFwcGFibGUgb3BlcmF0aW9ucy4KKyAgICAv
LworICAgIC8vIDEuIERvbid0IHVzZSBmb3Itb2YgYW5kIGl0ZXJhYmxlcy4gVGhpcyBmdW5jdGlv
biBvbmx5IGFjY2VwdHMKKyAgICAvLyAgICB0aGUgZGVuc2UgYXJyYXkgb2YgdGhlIHByb21pc2Vz
LgorICAgIC8vIDIuIERvbid0IGxvb2sgdXAgdGhpcy5jb25zdHJ1Y3RvciAvIEBAc3BlY2llcy4g
QWx3YXlzIGNvbnN0cnVjdAorICAgIC8vICAgIHRoZSBwbGFpbiBQcm9taXNlIG9iamVjdC4KKwor
ICAgICJ1c2Ugc3RyaWN0IjsKKworICAgIHZhciBwcm9taXNlQ2FwYWJpbGl0eSA9IEBuZXdQcm9t
aXNlRGVmZXJyZWQoKTsKKworICAgIHZhciB2YWx1ZXMgPSBbXTsKKyAgICB2YXIgaW5kZXggPSAw
OworICAgIHZhciByZW1haW5pbmdFbGVtZW50c0NvdW50ID0gMTsKKworICAgIGZ1bmN0aW9uIG5l
d1Jlc29sdmVFbGVtZW50KGluZGV4KQorICAgIHsKKyAgICAgICAgdmFyIGFscmVhZHlDYWxsZWQg
PSBmYWxzZTsKKyAgICAgICAgcmV0dXJuIGZ1bmN0aW9uIChhcmd1bWVudCkKKyAgICAgICAgewor
ICAgICAgICAgICAgaWYgKGFscmVhZHlDYWxsZWQpCisgICAgICAgICAgICAgICAgcmV0dXJuIHVu
ZGVmaW5lZDsKKyAgICAgICAgICAgIGFscmVhZHlDYWxsZWQgPSB0cnVlOworCisgICAgICAgICAg
ICBAcHV0QnlWYWxEaXJlY3QodmFsdWVzLCBpbmRleCwgYXJndW1lbnQpOworCisgICAgICAgICAg
ICAtLXJlbWFpbmluZ0VsZW1lbnRzQ291bnQ7CisgICAgICAgICAgICBpZiAocmVtYWluaW5nRWxl
bWVudHNDb3VudCA9PT0gMCkKKyAgICAgICAgICAgICAgICByZXR1cm4gcHJvbWlzZUNhcGFiaWxp
dHkuQHJlc29sdmUuQGNhbGwodW5kZWZpbmVkLCB2YWx1ZXMpOworCisgICAgICAgICAgICByZXR1
cm4gdW5kZWZpbmVkOworICAgICAgICB9CisgICAgfQorCisgICAgdHJ5IHsKKyAgICAgICAgZm9y
ICh2YXIgaSA9IDAsIGxlbmd0aCA9IGFycmF5Lmxlbmd0aDsgaSA8IGxlbmd0aDsgKytpKSB7Cisg
ICAgICAgICAgICBAcHV0QnlWYWxEaXJlY3QodmFsdWVzLCBpbmRleCwgdW5kZWZpbmVkKTsKKwor
ICAgICAgICAgICAgdmFyIG5leHRQcm9taXNlQ2FwYWJpbGl0eSA9IEBuZXdQcm9taXNlRGVmZXJy
ZWQoKTsKKyAgICAgICAgICAgIG5leHRQcm9taXNlQ2FwYWJpbGl0eS5AcmVzb2x2ZS5AY2FsbCh1
bmRlZmluZWQsIHZhbHVlKTsKKyAgICAgICAgICAgIHZhciBuZXh0UHJvbWlzZSA9IG5leHRQcm9t
aXNlQ2FwYWJpbGl0eS5AcHJvbWlzZTsKKworICAgICAgICAgICAgdmFyIHJlc29sdmVFbGVtZW50
ID0gbmV3UmVzb2x2ZUVsZW1lbnQoaW5kZXgpOworICAgICAgICAgICAgKytyZW1haW5pbmdFbGVt
ZW50c0NvdW50OworICAgICAgICAgICAgbmV4dFByb21pc2UuQHRoZW4ocmVzb2x2ZUVsZW1lbnQs
IHByb21pc2VDYXBhYmlsaXR5LkByZWplY3QpOworICAgICAgICAgICAgKytpbmRleDsKKyAgICAg
ICAgfQorCisgICAgICAgIC0tcmVtYWluaW5nRWxlbWVudHNDb3VudDsKKyAgICAgICAgaWYgKHJl
bWFpbmluZ0VsZW1lbnRzQ291bnQgPT09IDApCisgICAgICAgICAgICBwcm9taXNlQ2FwYWJpbGl0
eS5AcmVzb2x2ZS5AY2FsbCh1bmRlZmluZWQsIHZhbHVlcyk7CisgICAgfSBjYXRjaCAoZXJyb3Ip
IHsKKyAgICAgICAgcHJvbWlzZUNhcGFiaWxpdHkuQHJlamVjdC5AY2FsbCh1bmRlZmluZWQsIGVy
cm9yKTsKKyAgICB9CisKKyAgICByZXR1cm4gcHJvbWlzZUNhcGFiaWxpdHkuQHByb21pc2U7Cit9
CmRpZmYgLS1naXQgYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvanNjLmNwcCBiL1NvdXJjZS9KYXZh
U2NyaXB0Q29yZS9qc2MuY3BwCmluZGV4IDViMTk1MzNjNDBhYTUxNDQyY2M0MWMxNjk4YWJiZWMy
MTJmYWYzNzguLjVhNjBkMTNhYzM5ZDYyMjUxMDJiMjg5YTFhMjU1NTA2OTRlMjI0ODcgMTAwNjQ0
Ci0tLSBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9qc2MuY3BwCisrKyBiL1NvdXJjZS9KYXZhU2Ny
aXB0Q29yZS9qc2MuY3BwCkBAIC00MSw2ICs0MSw3IEBACiAjaW5jbHVkZSAiSlNGdW5jdGlvbi5o
IgogI2luY2x1ZGUgIkpTTG9jay5oIgogI2luY2x1ZGUgIkpTT05PYmplY3QuaCIKKyNpbmNsdWRl
ICJKU1Byb21pc2VEZWZlcnJlZC5oIgogI2luY2x1ZGUgIkpTUHJveHkuaCIKICNpbmNsdWRlICJK
U1N0cmluZy5oIgogI2luY2x1ZGUgIkpTV0FTTU1vZHVsZS5oIgpAQCAtNTY2LDYgKzU2NywxNyBA
QCBsb25nIFN0b3BXYXRjaDo6Z2V0RWxhcHNlZE1TKCkKICAgICByZXR1cm4gc3RhdGljX2Nhc3Q8
bG9uZz4oKG1fc3RvcFRpbWUgLSBtX3N0YXJ0VGltZSkgKiAxMDAwKTsKIH0KIAorc3RhdGljIGlu
bGluZSBTdHJpbmcgc3RyaW5nRnJvbVVURihjb25zdCBjaGFyKiB1dGY4KQoreworICAgIHJldHVy
biBTdHJpbmc6OmZyb21VVEY4V2l0aExhdGluMUZhbGxiYWNrKHV0ZjgsIHN0cmxlbih1dGY4KSk7
Cit9CisKK3N0YXRpYyBpbmxpbmUgU291cmNlQ29kZSBqc2NTb3VyY2UoY29uc3QgY2hhciogdXRm
OCwgY29uc3QgU3RyaW5nJiBmaWxlbmFtZSkKK3sKKyAgICBTdHJpbmcgc3RyID0gc3RyaW5nRnJv
bVVURih1dGY4KTsKKyAgICByZXR1cm4gbWFrZVNvdXJjZShzdHIsIGZpbGVuYW1lKTsKK30KKwog
Y2xhc3MgR2xvYmFsT2JqZWN0IDogcHVibGljIEpTR2xvYmFsT2JqZWN0IHsKIHByaXZhdGU6CiAg
ICAgR2xvYmFsT2JqZWN0KFZNJiwgU3RydWN0dXJlKik7CkBAIC02ODcsMTAgKzY5OSwzMSBAQCBj
bGFzcyBHbG9iYWxPYmplY3QgOiBwdWJsaWMgSlNHbG9iYWxPYmplY3QgewogICAgICAgICBJZGVu
dGlmaWVyIGlkZW50aWZpZXIgPSBJZGVudGlmaWVyOjpmcm9tU3RyaW5nKCZ2bSwgbmFtZSk7CiAg
ICAgICAgIHB1dERpcmVjdCh2bSwgaWRlbnRpZmllciwgSlNGdW5jdGlvbjo6Y3JlYXRlKHZtLCB0
aGlzLCBhcmd1bWVudHMsIGlkZW50aWZpZXIuc3RyaW5nKCksIGZ1bmN0aW9uLCBOb0ludHJpbnNp
YywgZnVuY3Rpb24pKTsKICAgICB9CisKKyAgICBzdGF0aWMgSlNWYWx1ZSBsb2FkZXJGZXRjaChK
U0dsb2JhbE9iamVjdCogZ2xvYmFsT2JqZWN0LCBFeGVjU3RhdGUqIGV4ZWMsIEpTVmFsdWUga2V5
KQorICAgIHsKKyAgICAgICAgSlNQcm9taXNlRGVmZXJyZWQqIGRlZmVycmVkID0gSlNQcm9taXNl
RGVmZXJyZWQ6OmNyZWF0ZShleGVjLCBnbG9iYWxPYmplY3QpOworICAgICAgICBTdHJpbmcgbW9k
dWxlS2V5ID0ga2V5LnRvU3RyaW5nKGV4ZWMpLT52YWx1ZShleGVjKTsKKyAgICAgICAgaWYgKGV4
ZWMtPmhhZEV4Y2VwdGlvbigpKSB7CisgICAgICAgICAgICBKU1ZhbHVlIGV4Y2VwdGlvbiA9IGV4
ZWMtPmV4Y2VwdGlvbigpOworICAgICAgICAgICAgZXhlYy0+Y2xlYXJFeGNlcHRpb24oKTsKKyAg
ICAgICAgICAgIGRlZmVycmVkLT5yZWplY3QoZXhlYywgZXhjZXB0aW9uKTsKKyAgICAgICAgICAg
IHJldHVybiBkZWZlcnJlZC0+cHJvbWlzZSgpOworICAgICAgICB9CisKKyAgICAgICAgLy8gSGVy
ZSwgbm93IHdlIGNvbnNpZGVyIG1vZHVsZUtleSBhcyB0aGUgZmlsZU5hbWUuCisgICAgICAgIFZl
Y3RvcjxjaGFyPiB1dGY4OworICAgICAgICBpZiAoIWZpbGxCdWZmZXJXaXRoQ29udGVudHNPZkZp
bGUobW9kdWxlS2V5LCB1dGY4KSkgeworICAgICAgICAgICAgZGVmZXJyZWQtPnJlamVjdChleGVj
LCBjcmVhdGVFcnJvcihleGVjLCBtYWtlU3RyaW5nKCJDb3VsZCBub3Qgb3BlbiBmaWxlICciLCBt
b2R1bGVLZXksICInLiIpKSk7CisgICAgICAgICAgICByZXR1cm4gZGVmZXJyZWQtPnByb21pc2Uo
KTsKKyAgICAgICAgfQorICAgICAgICBkZWZlcnJlZC0+cmVzb2x2ZShleGVjLCBqc1N0cmluZyhl
eGVjLCBzdHJpbmdGcm9tVVRGKHV0ZjguZGF0YSgpKSkpOworICAgICAgICByZXR1cm4gZGVmZXJy
ZWQtPnByb21pc2UoKTsKKyAgICB9CiB9OwogCiBjb25zdCBDbGFzc0luZm8gR2xvYmFsT2JqZWN0
OjpzX2luZm8gPSB7ICJnbG9iYWwiLCAmSlNHbG9iYWxPYmplY3Q6OnNfaW5mbywgJmdsb2JhbE9i
amVjdFRhYmxlLCBDUkVBVEVfTUVUSE9EX1RBQkxFKEdsb2JhbE9iamVjdCkgfTsKLWNvbnN0IEds
b2JhbE9iamVjdE1ldGhvZFRhYmxlIEdsb2JhbE9iamVjdDo6c19nbG9iYWxPYmplY3RNZXRob2RU
YWJsZSA9IHsgJmFsbG93c0FjY2Vzc0Zyb20sICZzdXBwb3J0c1Byb2ZpbGluZywgJnN1cHBvcnRz
UmljaFNvdXJjZUluZm8sICZzaG91bGRJbnRlcnJ1cHRTY3JpcHQsICZqYXZhU2NyaXB0UnVudGlt
ZUZsYWdzLCAwLCAmc2hvdWxkSW50ZXJydXB0U2NyaXB0QmVmb3JlVGltZW91dCB9OworY29uc3Qg
R2xvYmFsT2JqZWN0TWV0aG9kVGFibGUgR2xvYmFsT2JqZWN0OjpzX2dsb2JhbE9iamVjdE1ldGhv
ZFRhYmxlID0geyAmYWxsb3dzQWNjZXNzRnJvbSwgJnN1cHBvcnRzUHJvZmlsaW5nLCAmc3VwcG9y
dHNSaWNoU291cmNlSW5mbywgJnNob3VsZEludGVycnVwdFNjcmlwdCwgJmphdmFTY3JpcHRSdW50
aW1lRmxhZ3MsIDAsICZzaG91bGRJbnRlcnJ1cHRTY3JpcHRCZWZvcmVUaW1lb3V0LCBudWxscHRy
LCAmbG9hZGVyRmV0Y2gsIG51bGxwdHIsIG51bGxwdHIgfTsKIAogCiBHbG9iYWxPYmplY3Q6Okds
b2JhbE9iamVjdChWTSYgdm0sIFN0cnVjdHVyZSogc3RydWN0dXJlKQpAQCAtNjk4LDE3ICs3MzEs
NiBAQCBHbG9iYWxPYmplY3Q6Okdsb2JhbE9iamVjdChWTSYgdm0sIFN0cnVjdHVyZSogc3RydWN0
dXJlKQogewogfQogCi1zdGF0aWMgaW5saW5lIFN0cmluZyBzdHJpbmdGcm9tVVRGKGNvbnN0IGNo
YXIqIHV0ZjgpCi17Ci0gICAgcmV0dXJuIFN0cmluZzo6ZnJvbVVURjhXaXRoTGF0aW4xRmFsbGJh
Y2sodXRmOCwgc3RybGVuKHV0ZjgpKTsKLX0KLQotc3RhdGljIGlubGluZSBTb3VyY2VDb2RlIGpz
Y1NvdXJjZShjb25zdCBjaGFyKiB1dGY4LCBjb25zdCBTdHJpbmcmIGZpbGVuYW1lKQotewotICAg
IFN0cmluZyBzdHIgPSBzdHJpbmdGcm9tVVRGKHV0ZjgpOwotICAgIHJldHVybiBtYWtlU291cmNl
KHN0ciwgZmlsZW5hbWUpOwotfQotCiBFbmNvZGVkSlNWYWx1ZSBKU0NfSE9TVF9DQUxMIGZ1bmN0
aW9uUHJpbnQoRXhlY1N0YXRlKiBleGVjKQogewogICAgIGZvciAodW5zaWduZWQgaSA9IDA7IGkg
PCBleGVjLT5hcmd1bWVudENvdW50KCk7ICsraSkgewpAQCAtMTIxMiw3ICsxMjM0LDcgQEAgRW5j
b2RlZEpTVmFsdWUgSlNDX0hPU1RfQ0FMTCBmdW5jdGlvbkNoZWNrTW9kdWxlU3ludGF4KEV4ZWNT
dGF0ZSogZXhlYykKICAgICBzdG9wV2F0Y2guc3RhcnQoKTsKIAogICAgIFBhcnNlckVycm9yIGVy
cm9yOwotICAgIGJvb2wgdmFsaWRTeW50YXggPSBjaGVja01vZHVsZVN5bnRheChleGVjLT52bSgp
LCBtYWtlU291cmNlKHNvdXJjZSksIGVycm9yKTsKKyAgICBib29sIHZhbGlkU3ludGF4ID0gY2hl
Y2tNb2R1bGVTeW50YXgoZXhlYywgbWFrZVNvdXJjZShzb3VyY2UpLCBlcnJvcik7CiAgICAgc3Rv
cFdhdGNoLnN0b3AoKTsKIAogICAgIGlmICghdmFsaWRTeW50YXgpCmRpZmYgLS1naXQgYS9Tb3Vy
Y2UvSmF2YVNjcmlwdENvcmUvcGFyc2VyL0xleGVyLmNwcCBiL1NvdXJjZS9KYXZhU2NyaXB0Q29y
ZS9wYXJzZXIvTGV4ZXIuY3BwCmluZGV4IDI1OWQyNTRlMzk3NTE4YzdiY2NmZmM5ZWRlYzE1NmJh
NWYwMGRiN2EuLjQ3NjA0M2ZmNmUyNTVmOWViNjMxNDVjYjg2Y2RhOWVlZjBhNDE1NjYgMTAwNjQ0
Ci0tLSBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9wYXJzZXIvTGV4ZXIuY3BwCisrKyBiL1NvdXJj
ZS9KYXZhU2NyaXB0Q29yZS9wYXJzZXIvTGV4ZXIuY3BwCkBAIC05MzUsNyArOTM1LDcgQEAgdGVt
cGxhdGUgPGJvb2wgc2hvdWxkQ3JlYXRlSWRlbnRpZmllcj4gQUxXQVlTX0lOTElORSBKU1Rva2Vu
VHlwZSBMZXhlcjxMQ2hhcj46OnAKICAgICAgICAgICAgICAgICByZXR1cm4gRVJST1JUT0s7CiAg
ICAgICAgICAgICB9CiAgICAgICAgICAgICBpZiAoaXNQcml2YXRlTmFtZSkKLSAgICAgICAgICAg
ICAgICBpZGVudCA9IG1fdm0tPnByb3BlcnR5TmFtZXMtPmdldFByaXZhdGVOYW1lKCppZGVudCk7
CisgICAgICAgICAgICAgICAgaWRlbnQgPSBtX3ZtLT5wcm9wZXJ0eU5hbWVzLT5sb29rVXBQcml2
YXRlTmFtZSgqaWRlbnQpOwogICAgICAgICAgICAgZWxzZSBpZiAoKmlkZW50ID09IG1fdm0tPnBy
b3BlcnR5TmFtZXMtPnVuZGVmaW5lZEtleXdvcmQpCiAgICAgICAgICAgICAgICAgdG9rZW5EYXRh
LT5pZGVudCA9ICZtX3ZtLT5wcm9wZXJ0eU5hbWVzLT51bmRlZmluZWRQcml2YXRlTmFtZTsKICAg
ICAgICAgICAgIGlmICghaWRlbnQpCkBAIC0xMDEyLDcgKzEwMTIsNyBAQCB0ZW1wbGF0ZSA8Ym9v
bCBzaG91bGRDcmVhdGVJZGVudGlmaWVyPiBBTFdBWVNfSU5MSU5FIEpTVG9rZW5UeXBlIExleGVy
PFVDaGFyPjo6cAogICAgICAgICAgICAgICAgIHJldHVybiBFUlJPUlRPSzsKICAgICAgICAgICAg
IH0KICAgICAgICAgICAgIGlmIChpc1ByaXZhdGVOYW1lKQotICAgICAgICAgICAgICAgIGlkZW50
ID0gbV92bS0+cHJvcGVydHlOYW1lcy0+Z2V0UHJpdmF0ZU5hbWUoKmlkZW50KTsKKyAgICAgICAg
ICAgICAgICBpZGVudCA9IG1fdm0tPnByb3BlcnR5TmFtZXMtPmxvb2tVcFByaXZhdGVOYW1lKCpp
ZGVudCk7CiAgICAgICAgICAgICBlbHNlIGlmICgqaWRlbnQgPT0gbV92bS0+cHJvcGVydHlOYW1l
cy0+dW5kZWZpbmVkS2V5d29yZCkKICAgICAgICAgICAgICAgICB0b2tlbkRhdGEtPmlkZW50ID0g
Jm1fdm0tPnByb3BlcnR5TmFtZXMtPnVuZGVmaW5lZFByaXZhdGVOYW1lOwogICAgICAgICAgICAg
aWYgKCFpZGVudCkKZGlmZiAtLWdpdCBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9wYXJzZXIvTW9k
dWxlQW5hbHl6ZXIuY3BwIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL3BhcnNlci9Nb2R1bGVBbmFs
eXplci5jcHAKaW5kZXggYjJkZTk2MGIzOTMyNTg0MWNkOWY4NWM2NzE2MjJjM2RmN2JhOWQ3Ny4u
MjdjYWZmMjk1MDIyNjAxM2QyNzJkY2YzNzA5Yzc4ZTdlZGU0MDMzYSAxMDA2NDQKLS0tIGEvU291
cmNlL0phdmFTY3JpcHRDb3JlL3BhcnNlci9Nb2R1bGVBbmFseXplci5jcHAKKysrIGIvU291cmNl
L0phdmFTY3JpcHRDb3JlL3BhcnNlci9Nb2R1bGVBbmFseXplci5jcHAKQEAgLTI3LDE0ICsyNywx
NyBAQAogI2luY2x1ZGUgIk1vZHVsZUFuYWx5emVyLmgiCiAKICNpbmNsdWRlICJJZGVudGlmaWVy
SW5saW5lcy5oIgotI2luY2x1ZGUgIk1vZHVsZVJlY29yZC5oIgorI2luY2x1ZGUgIkpTQ2VsbElu
bGluZXMuaCIKKyNpbmNsdWRlICJKU0dsb2JhbE9iamVjdC5oIgorI2luY2x1ZGUgIkpTTW9kdWxl
UmVjb3JkLmgiCisjaW5jbHVkZSAiU3Ryb25nSW5saW5lcy5oIgogCiBuYW1lc3BhY2UgSlNDIHsK
IAogCi1Nb2R1bGVBbmFseXplcjo6TW9kdWxlQW5hbHl6ZXIoVk0mIHZtLCBjb25zdCBWYXJpYWJs
ZUVudmlyb25tZW50JiBkZWNsYXJlZFZhcmlhYmxlcywgY29uc3QgVmFyaWFibGVFbnZpcm9ubWVu
dCYgbGV4aWNhbFZhcmlhYmxlcykKLSAgICA6IG1fdm0oJnZtKQotICAgICwgbV9tb2R1bGVSZWNv
cmQoTW9kdWxlUmVjb3JkOjpjcmVhdGUoKSkKK01vZHVsZUFuYWx5emVyOjpNb2R1bGVBbmFseXpl
cihFeGVjU3RhdGUqIGV4ZWMsIGNvbnN0IFZhcmlhYmxlRW52aXJvbm1lbnQmIGRlY2xhcmVkVmFy
aWFibGVzLCBjb25zdCBWYXJpYWJsZUVudmlyb25tZW50JiBsZXhpY2FsVmFyaWFibGVzKQorICAg
IDogbV92bSgmZXhlYy0+dm0oKSkKKyAgICAsIG1fbW9kdWxlUmVjb3JkKGV4ZWMtPnZtKCksIEpT
TW9kdWxlUmVjb3JkOjpjcmVhdGUoZXhlYy0+dm0oKSwgZXhlYy0+bGV4aWNhbEdsb2JhbE9iamVj
dCgpLT5tb2R1bGVSZWNvcmRTdHJ1Y3R1cmUoKSkpCiAgICAgLCBtX2RlY2xhcmVkVmFyaWFibGVz
KGRlY2xhcmVkVmFyaWFibGVzKQogICAgICwgbV9sZXhpY2FsVmFyaWFibGVzKGxleGljYWxWYXJp
YWJsZXMpCiB7CkBAIC03NiwyOCArNzksMjggQEAgdm9pZCBNb2R1bGVBbmFseXplcjo6ZXhwb3J0
VmFyaWFibGUoY29uc3QgUmVmUHRyPFVuaXF1ZWRTdHJpbmdJbXBsPiYgbG9jYWxOYW1lLAogCiAg
ICAgLy8gRXhwb3J0ZWQgbW9kdWxlIGxvY2FsIHZhcmlhYmxlLgogICAgIGlmICghdmFyaWFibGUu
aXNJbXBvcnRlZCgpKSB7Ci0gICAgICAgIG1vZHVsZVJlY29yZCgpLmFkZEV4cG9ydEVudHJ5KE1v
ZHVsZVJlY29yZDo6RXhwb3J0RW50cnk6OmNyZWF0ZUxvY2FsKGV4cG9ydE5hbWUsIElkZW50aWZp
ZXI6OmZyb21VaWQobV92bSwgbG9jYWxOYW1lLmdldCgpKSwgdmFyaWFibGUpKTsKKyAgICAgICAg
bW9kdWxlUmVjb3JkKCktPmFkZEV4cG9ydEVudHJ5KEpTTW9kdWxlUmVjb3JkOjpFeHBvcnRFbnRy
eTo6Y3JlYXRlTG9jYWwoZXhwb3J0TmFtZSwgSWRlbnRpZmllcjo6ZnJvbVVpZChtX3ZtLCBsb2Nh
bE5hbWUuZ2V0KCkpLCB2YXJpYWJsZSkpOwogICAgICAgICByZXR1cm47CiAgICAgfQogCi0gICAg
Y29uc3QgYXV0byYgaW1wb3J0RW50cnkgPSBtb2R1bGVSZWNvcmQoKS5sb29rVXBJbXBvcnRFbnRy
eShsb2NhbE5hbWUpOworICAgIGNvbnN0IGF1dG8mIGltcG9ydEVudHJ5ID0gbW9kdWxlUmVjb3Jk
KCktPmxvb2tVcEltcG9ydEVudHJ5KGxvY2FsTmFtZSk7CiAgICAgaWYgKGltcG9ydEVudHJ5Lmlz
TmFtZXNwYWNlKHZtKCkpKSB7CiAgICAgICAgIC8vIEV4cG9ydGVkIG5hbWVzcGFjZSBiaW5kaW5n
LgogICAgICAgICAvLyBpbXBvcnQgKiBhcyBuYW1lc3BhY2UgZnJvbSAibW9kIgogICAgICAgICAv
LyBleHBvcnQgeyBuYW1lc3BhY2UgfQotICAgICAgICBtb2R1bGVSZWNvcmQoKS5hZGRFeHBvcnRF
bnRyeShNb2R1bGVSZWNvcmQ6OkV4cG9ydEVudHJ5OjpjcmVhdGVOYW1lc3BhY2UoZXhwb3J0TmFt
ZSwgaW1wb3J0RW50cnkubW9kdWxlUmVxdWVzdCkpOworICAgICAgICBtb2R1bGVSZWNvcmQoKS0+
YWRkRXhwb3J0RW50cnkoSlNNb2R1bGVSZWNvcmQ6OkV4cG9ydEVudHJ5OjpjcmVhdGVOYW1lc3Bh
Y2UoZXhwb3J0TmFtZSwgaW1wb3J0RW50cnkubW9kdWxlUmVxdWVzdCkpOwogICAgICAgICByZXR1
cm47CiAgICAgfQogCiAgICAgLy8gSW5kaXJlY3RseSBleHBvcnRlZCBiaW5kaW5nLgogICAgIC8v
IGltcG9ydCBhIGZyb20gIm1vZCIKICAgICAvLyBleHBvcnQgeyBhIH0KLSAgICBtb2R1bGVSZWNv
cmQoKS5hZGRFeHBvcnRFbnRyeShNb2R1bGVSZWNvcmQ6OkV4cG9ydEVudHJ5OjpjcmVhdGVJbmRp
cmVjdChleHBvcnROYW1lLCBpbXBvcnRFbnRyeS5pbXBvcnROYW1lLCBpbXBvcnRFbnRyeS5tb2R1
bGVSZXF1ZXN0KSk7CisgICAgbW9kdWxlUmVjb3JkKCktPmFkZEV4cG9ydEVudHJ5KEpTTW9kdWxl
UmVjb3JkOjpFeHBvcnRFbnRyeTo6Y3JlYXRlSW5kaXJlY3QoZXhwb3J0TmFtZSwgaW1wb3J0RW50
cnkuaW1wb3J0TmFtZSwgaW1wb3J0RW50cnkubW9kdWxlUmVxdWVzdCkpOwogfQogCiAKIAotUmVm
PE1vZHVsZVJlY29yZD4gTW9kdWxlQW5hbHl6ZXI6OmFuYWx5emUoTW9kdWxlUHJvZ3JhbU5vZGUm
IG1vZHVsZVByb2dyYW1Ob2RlKQorSlNNb2R1bGVSZWNvcmQqIE1vZHVsZUFuYWx5emVyOjphbmFs
eXplKE1vZHVsZVByb2dyYW1Ob2RlJiBtb2R1bGVQcm9ncmFtTm9kZSkKIHsKICAgICAvLyBUcmF2
ZXJzZSB0aGUgbW9kdWxlIEFTVCBhbmQgY29sbGVjdAogICAgIC8vICogSW1wb3J0IGVudHJpZXMK
QEAgLTE0OSw3ICsxNTIsNyBAQCBSZWY8TW9kdWxlUmVjb3JkPiBNb2R1bGVBbmFseXplcjo6YW5h
bHl6ZShNb2R1bGVQcm9ncmFtTm9kZSYgbW9kdWxlUHJvZ3JhbU5vZGUpCiAgICAgaWYgKE9wdGlv
bnM6OmR1bXBNb2R1bGVSZWNvcmQoKSkKICAgICAgICAgbV9tb2R1bGVSZWNvcmQtPmR1bXAoKTsK
IAotICAgIHJldHVybiAqbV9tb2R1bGVSZWNvcmQ7CisgICAgcmV0dXJuIG1fbW9kdWxlUmVjb3Jk
LmdldCgpOwogfQogCiB9IC8vIG5hbWVzcGFjZSBKU0MKZGlmZiAtLWdpdCBhL1NvdXJjZS9KYXZh
U2NyaXB0Q29yZS9wYXJzZXIvTW9kdWxlQW5hbHl6ZXIuaCBiL1NvdXJjZS9KYXZhU2NyaXB0Q29y
ZS9wYXJzZXIvTW9kdWxlQW5hbHl6ZXIuaAppbmRleCAwMjc2NDg0NzY1MGIzMDI0ZmQyYThjMzcy
MmU3M2E3NDdiOTYzY2I2Li4zMzkwYjdiYWYxZjY1ZTgxMGMxMTM5YjZkZWM0NjU5NDZiODlkNDky
IDEwMDY0NAotLS0gYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvcGFyc2VyL01vZHVsZUFuYWx5emVy
LmgKKysrIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL3BhcnNlci9Nb2R1bGVBbmFseXplci5oCkBA
IC0yNiwyMCArMjYsMjIgQEAKICNpZm5kZWYgTW9kdWxlQW5hbHl6ZXJfaAogI2RlZmluZSBNb2R1
bGVBbmFseXplcl9oCiAKLSNpbmNsdWRlICJNb2R1bGVSZWNvcmQuaCIKICNpbmNsdWRlICJOb2Rl
cy5oIgogCiBuYW1lc3BhY2UgSlNDIHsKIAorY2xhc3MgSlNNb2R1bGVSZWNvcmQ7CisKIGNsYXNz
IE1vZHVsZUFuYWx5emVyIHsKKyAgICBXVEZfTUFLRV9OT05DT1BZQUJMRShNb2R1bGVBbmFseXpl
cik7CiBwdWJsaWM6Ci0gICAgTW9kdWxlQW5hbHl6ZXIoVk0mLCBjb25zdCBWYXJpYWJsZUVudmly
b25tZW50JiBkZWNsYXJlZFZhcmlhYmxlcywgY29uc3QgVmFyaWFibGVFbnZpcm9ubWVudCYgbGV4
aWNhbFZhcmlhYmxlcyk7CisgICAgTW9kdWxlQW5hbHl6ZXIoRXhlY1N0YXRlKiwgY29uc3QgVmFy
aWFibGVFbnZpcm9ubWVudCYgZGVjbGFyZWRWYXJpYWJsZXMsIGNvbnN0IFZhcmlhYmxlRW52aXJv
bm1lbnQmIGxleGljYWxWYXJpYWJsZXMpOwogCi0gICAgUmVmPE1vZHVsZVJlY29yZD4gYW5hbHl6
ZShNb2R1bGVQcm9ncmFtTm9kZSYpOworICAgIEpTTW9kdWxlUmVjb3JkKiBhbmFseXplKE1vZHVs
ZVByb2dyYW1Ob2RlJik7CiAKICAgICBWTSYgdm0oKSB7IHJldHVybiAqbV92bTsgfQogCi0gICAg
TW9kdWxlUmVjb3JkJiBtb2R1bGVSZWNvcmQoKSB7IHJldHVybiAqbV9tb2R1bGVSZWNvcmQ7IH0K
KyAgICBKU01vZHVsZVJlY29yZCogbW9kdWxlUmVjb3JkKCkgeyByZXR1cm4gbV9tb2R1bGVSZWNv
cmQuZ2V0KCk7IH0KIAogICAgIHZvaWQgZGVjbGFyZUV4cG9ydEFsaWFzKGNvbnN0IElkZW50aWZp
ZXImIGxvY2FsTmFtZSwgY29uc3QgSWRlbnRpZmllciYgZXhwb3J0TmFtZSk7CiAKQEAgLTUxLDcg
KzUzLDcgQEAgY2xhc3MgTW9kdWxlQW5hbHl6ZXIgewogICAgIElkZW50aWZpZXIgZXhwb3J0ZWRC
aW5kaW5nKGNvbnN0IFJlZlB0cjxVbmlxdWVkU3RyaW5nSW1wbD4mIGlkZW50KTsKIAogICAgIFZN
KiBtX3ZtOwotICAgIFJlZlB0cjxNb2R1bGVSZWNvcmQ+IG1fbW9kdWxlUmVjb3JkOworICAgIFN0
cm9uZzxKU01vZHVsZVJlY29yZD4gbV9tb2R1bGVSZWNvcmQ7CiAgICAgVmFyaWFibGVFbnZpcm9u
bWVudCBtX2RlY2xhcmVkVmFyaWFibGVzOwogICAgIFZhcmlhYmxlRW52aXJvbm1lbnQgbV9sZXhp
Y2FsVmFyaWFibGVzOwogICAgIElkZW50aWZpZXJBbGlhc01hcCBtX2FsaWFzTWFwOwpkaWZmIC0t
Z2l0IGEvU291cmNlL0phdmFTY3JpcHRDb3JlL3BhcnNlci9Nb2R1bGVSZWNvcmQuY3BwIGIvU291
cmNlL0phdmFTY3JpcHRDb3JlL3BhcnNlci9Nb2R1bGVSZWNvcmQuY3BwCmRlbGV0ZWQgZmlsZSBt
b2RlIDEwMDY0NAppbmRleCBlYzk3MzU2OGJlYzhhMGIxNTMzMzJmNDg3NWY5ZWZlMTM3ODJlYzhh
Li4wMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwCi0tLSBhL1NvdXJjZS9K
YXZhU2NyaXB0Q29yZS9wYXJzZXIvTW9kdWxlUmVjb3JkLmNwcAorKysgL2Rldi9udWxsCkBAIC0x
LDk1ICswLDAgQEAKLS8qCi0gKiBDb3B5cmlnaHQgKEMpIDIwMTUgQXBwbGUgSW5jLiBBbGwgcmln
aHRzIHJlc2VydmVkLgotICoKLSAqIFJlZGlzdHJpYnV0aW9uIGFuZCB1c2UgaW4gc291cmNlIGFu
ZCBiaW5hcnkgZm9ybXMsIHdpdGggb3Igd2l0aG91dAotICogbW9kaWZpY2F0aW9uLCBhcmUgcGVy
bWl0dGVkIHByb3ZpZGVkIHRoYXQgdGhlIGZvbGxvd2luZyBjb25kaXRpb25zCi0gKiBhcmUgbWV0
OgotICogMS4gUmVkaXN0cmlidXRpb25zIG9mIHNvdXJjZSBjb2RlIG11c3QgcmV0YWluIHRoZSBh
Ym92ZSBjb3B5cmlnaHQKLSAqICAgIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5k
IHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lci4KLSAqIDIuIFJlZGlzdHJpYnV0aW9ucyBpbiBiaW5h
cnkgZm9ybSBtdXN0IHJlcHJvZHVjZSB0aGUgYWJvdmUgY29weXJpZ2h0Ci0gKiAgICBub3RpY2Us
IHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIgaW4g
dGhlCi0gKiAgICBkb2N1bWVudGF0aW9uIGFuZC9vciBvdGhlciBtYXRlcmlhbHMgcHJvdmlkZWQg
d2l0aCB0aGUgZGlzdHJpYnV0aW9uLgotICoKLSAqIFRISVMgU09GVFdBUkUgSVMgUFJPVklERUQg
QlkgQVBQTEUgSU5DLiBgYEFTIElTJycgQU5EIEFOWQotICogRVhQUkVTUyBPUiBJTVBMSUVEIFdB
UlJBTlRJRVMsIElOQ0xVRElORywgQlVUIE5PVCBMSU1JVEVEIFRPLCBUSEUKLSAqIElNUExJRUQg
V0FSUkFOVElFUyBPRiBNRVJDSEFOVEFCSUxJVFkgQU5EIEZJVE5FU1MgRk9SIEEgUEFSVElDVUxB
UgotICogUFVSUE9TRSBBUkUgRElTQ0xBSU1FRC4gIElOIE5PIEVWRU5UIFNIQUxMIEFQUExFIElO
Qy4gT1IKLSAqIENPTlRSSUJVVE9SUyBCRSBMSUFCTEUgRk9SIEFOWSBESVJFQ1QsIElORElSRUNU
LCBJTkNJREVOVEFMLCBTUEVDSUFMLAotICogRVhFTVBMQVJZLCBPUiBDT05TRVFVRU5USUFMIERB
TUFHRVMgKElOQ0xVRElORywgQlVUIE5PVCBMSU1JVEVEIFRPLAotICogUFJPQ1VSRU1FTlQgT0Yg
U1VCU1RJVFVURSBHT09EUyBPUiBTRVJWSUNFUzsgTE9TUyBPRiBVU0UsIERBVEEsIE9SCi0gKiBQ
Uk9GSVRTOyBPUiBCVVNJTkVTUyBJTlRFUlJVUFRJT04pIEhPV0VWRVIgQ0FVU0VEIEFORCBPTiBB
TlkgVEhFT1JZCi0gKiBPRiBMSUFCSUxJVFksIFdIRVRIRVIgSU4gQ09OVFJBQ1QsIFNUUklDVCBM
SUFCSUxJVFksIE9SIFRPUlQKLSAqIChJTkNMVURJTkcgTkVHTElHRU5DRSBPUiBPVEhFUldJU0Up
IEFSSVNJTkcgSU4gQU5ZIFdBWSBPVVQgT0YgVEhFIFVTRQotICogT0YgVEhJUyBTT0ZUV0FSRSwg
RVZFTiBJRiBBRFZJU0VEIE9GIFRIRSBQT1NTSUJJTElUWSBPRiBTVUNIIERBTUFHRS4gCi0gKi8K
LQotI2luY2x1ZGUgImNvbmZpZy5oIgotI2luY2x1ZGUgIk1vZHVsZVJlY29yZC5oIgotCi0jaW5j
bHVkZSAiSWRlbnRpZmllcklubGluZXMuaCIKLQotbmFtZXNwYWNlIEpTQyB7Ci0KLQotYXV0byBN
b2R1bGVSZWNvcmQ6OkV4cG9ydEVudHJ5OjpjcmVhdGVMb2NhbChjb25zdCBJZGVudGlmaWVyJiBl
eHBvcnROYW1lLCBjb25zdCBJZGVudGlmaWVyJiBsb2NhbE5hbWUsIGNvbnN0IFZhcmlhYmxlRW52
aXJvbm1lbnRFbnRyeSYgdmFyaWFibGUpIC0+IEV4cG9ydEVudHJ5Ci17Ci0gICAgcmV0dXJuIEV4
cG9ydEVudHJ5IHsgVHlwZTo6TG9jYWwsIGV4cG9ydE5hbWUsIElkZW50aWZpZXIoKSwgSWRlbnRp
ZmllcigpLCBsb2NhbE5hbWUsIHZhcmlhYmxlIH07Ci19Ci0KLWF1dG8gTW9kdWxlUmVjb3JkOjpF
eHBvcnRFbnRyeTo6Y3JlYXRlTmFtZXNwYWNlKGNvbnN0IElkZW50aWZpZXImIGV4cG9ydE5hbWUs
IGNvbnN0IElkZW50aWZpZXImIG1vZHVsZU5hbWUpIC0+IEV4cG9ydEVudHJ5Ci17Ci0gICAgcmV0
dXJuIEV4cG9ydEVudHJ5IHsgVHlwZTo6TmFtZXNwYWNlLCBleHBvcnROYW1lLCBtb2R1bGVOYW1l
LCBJZGVudGlmaWVyKCksIElkZW50aWZpZXIoKSwgVmFyaWFibGVFbnZpcm9ubWVudEVudHJ5KCkg
fTsKLX0KLQotYXV0byBNb2R1bGVSZWNvcmQ6OkV4cG9ydEVudHJ5OjpjcmVhdGVJbmRpcmVjdChj
b25zdCBJZGVudGlmaWVyJiBleHBvcnROYW1lLCBjb25zdCBJZGVudGlmaWVyJiBpbXBvcnROYW1l
LCBjb25zdCBJZGVudGlmaWVyJiBtb2R1bGVOYW1lKSAtPiBFeHBvcnRFbnRyeQotewotICAgIHJl
dHVybiBFeHBvcnRFbnRyeSB7IFR5cGU6OkluZGlyZWN0LCBleHBvcnROYW1lLCBtb2R1bGVOYW1l
LCBpbXBvcnROYW1lLCBJZGVudGlmaWVyKCksIFZhcmlhYmxlRW52aXJvbm1lbnRFbnRyeSgpIH07
Ci19Ci0KLXN0YXRpYyBTdHJpbmcgcHJpbnRhYmxlTmFtZShjb25zdCBSZWZQdHI8VW5pcXVlZFN0
cmluZ0ltcGw+JiB1aWQpCi17Ci0gICAgaWYgKHVpZC0+aXNTeW1ib2woKSkKLSAgICAgICAgcmV0
dXJuIHVpZC5nZXQoKTsKLSAgICByZXR1cm4gV1RGOjptYWtlU3RyaW5nKCInIiwgU3RyaW5nKHVp
ZC5nZXQoKSksICInIik7Ci19Ci0KLXN0YXRpYyBTdHJpbmcgcHJpbnRhYmxlTmFtZShjb25zdCBJ
ZGVudGlmaWVyJiBpZGVudCkKLXsKLSAgICByZXR1cm4gcHJpbnRhYmxlTmFtZShpZGVudC5pbXBs
KCkpOwotfQotCi0KLXZvaWQgTW9kdWxlUmVjb3JkOjpkdW1wKCkKLXsKLSAgICBkYXRhTG9nKCJc
bkFuYWx5emluZyBNb2R1bGVSZWNvcmRcbiIpOwotCi0gICAgZGF0YUxvZygiICAgIERlcGVuZGVu
Y2llczogIiwgbV9yZXF1ZXN0ZWRNb2R1bGVzLnNpemUoKSwgIiBtb2R1bGVzXG4iKTsKLSAgICBm
b3IgKGNvbnN0IGF1dG8mIG1vZHVsZU5hbWUgOiBtX3JlcXVlc3RlZE1vZHVsZXMpCi0gICAgICAg
IGRhdGFMb2coIiAgICAgIG1vZHVsZSgiLCBwcmludGFibGVOYW1lKG1vZHVsZU5hbWUpLCAiKVxu
Iik7Ci0KLSAgICBkYXRhTG9nKCIgICAgSW1wb3J0OiAiLCBtX2ltcG9ydEVudHJpZXMuc2l6ZSgp
LCAiIGVudHJpZXNcbiIpOwotICAgIGZvciAoY29uc3QgYXV0byYgcGFpciA6IG1faW1wb3J0RW50
cmllcykKLSAgICAgICAgZGF0YUxvZygiICAgICAgaW1wb3J0KCIsIHByaW50YWJsZU5hbWUocGFp
ci52YWx1ZS5pbXBvcnROYW1lKSwgIiksIGxvY2FsKCIsIHByaW50YWJsZU5hbWUocGFpci52YWx1
ZS5sb2NhbE5hbWUpLCAiKSwgbW9kdWxlKCIsIHByaW50YWJsZU5hbWUocGFpci52YWx1ZS5tb2R1
bGVSZXF1ZXN0KSwgIilcbiIpOwotCi0gICAgZGF0YUxvZygiICAgIEV4cG9ydDogIiwgbV9leHBv
cnRFbnRyaWVzLnNpemUoKSwgIiBlbnRyaWVzXG4iKTsKLSAgICBmb3IgKGNvbnN0IGF1dG8mIHBh
aXIgOiBtX2V4cG9ydEVudHJpZXMpIHsKLSAgICAgICAgY29uc3QgRXhwb3J0RW50cnkmIGVudHJ5
ID0gcGFpci52YWx1ZTsKLSAgICAgICAgc3dpdGNoIChlbnRyeS50eXBlKSB7Ci0gICAgICAgIGNh
c2UgRXhwb3J0RW50cnk6OlR5cGU6OkxvY2FsOgotICAgICAgICAgICAgZGF0YUxvZygiICAgICAg
W0xvY2FsXSAiLCAiZXhwb3J0KCIsIHByaW50YWJsZU5hbWUoZW50cnkuZXhwb3J0TmFtZSksICIp
LCBsb2NhbCgiLCBwcmludGFibGVOYW1lKGVudHJ5LmxvY2FsTmFtZSksICIpXG4iKTsKLSAgICAg
ICAgICAgIGJyZWFrOwotCi0gICAgICAgIGNhc2UgRXhwb3J0RW50cnk6OlR5cGU6Ok5hbWVzcGFj
ZToKLSAgICAgICAgICAgIGRhdGFMb2coIiAgICAgIFtOYW1lc3BhY2VdICIsICJleHBvcnQoIiwg
cHJpbnRhYmxlTmFtZShlbnRyeS5leHBvcnROYW1lKSwgIiksIG1vZHVsZSgiLCBwcmludGFibGVO
YW1lKGVudHJ5Lm1vZHVsZU5hbWUpLCAiKVxuIik7Ci0gICAgICAgICAgICBicmVhazsKLQotICAg
ICAgICBjYXNlIEV4cG9ydEVudHJ5OjpUeXBlOjpJbmRpcmVjdDoKLSAgICAgICAgICAgIGRhdGFM
b2coIiAgICAgIFtJbmRpcmVjdF0gIiwgImV4cG9ydCgiLCBwcmludGFibGVOYW1lKGVudHJ5LmV4
cG9ydE5hbWUpLCAiKSwgaW1wb3J0KCIsIHByaW50YWJsZU5hbWUoZW50cnkuaW1wb3J0TmFtZSks
ICIpLCBtb2R1bGUoIiwgcHJpbnRhYmxlTmFtZShlbnRyeS5tb2R1bGVOYW1lKSwgIilcbiIpOwot
ICAgICAgICAgICAgYnJlYWs7Ci0gICAgICAgIH0KLSAgICB9Ci0gICAgZm9yIChjb25zdCBhdXRv
JiBtb2R1bGVOYW1lIDogbV9zdGFyRXhwb3J0RW50cmllcykKLSAgICAgICAgZGF0YUxvZygiICAg
ICAgW1N0YXJdIG1vZHVsZSgiLCBwcmludGFibGVOYW1lKG1vZHVsZU5hbWUuZ2V0KCkpLCAiKVxu
Iik7Ci19Ci0KLX0gLy8gbmFtZXNwYWNlIEpTQwpkaWZmIC0tZ2l0IGEvU291cmNlL0phdmFTY3Jp
cHRDb3JlL3BhcnNlci9Nb2R1bGVSZWNvcmQuaCBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9wYXJz
ZXIvTW9kdWxlUmVjb3JkLmgKZGVsZXRlZCBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IGVmMDgxYzAz
YjBhNWJkZTZmMTU1NjI5ZGYzZjUwNmNhZjNjYjE3MTQuLjAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAKLS0tIGEvU291cmNlL0phdmFTY3JpcHRDb3JlL3BhcnNlci9Nb2R1
bGVSZWNvcmQuaAorKysgL2Rldi9udWxsCkBAIC0xLDEyOCArMCwwIEBACi0vKgotICogQ29weXJp
Z2h0IChDKSAyMDE1IEFwcGxlIEluYy4gQWxsIHJpZ2h0cyByZXNlcnZlZC4KLSAqCi0gKiBSZWRp
c3RyaWJ1dGlvbiBhbmQgdXNlIGluIHNvdXJjZSBhbmQgYmluYXJ5IGZvcm1zLCB3aXRoIG9yIHdp
dGhvdXQKLSAqIG1vZGlmaWNhdGlvbiwgYXJlIHBlcm1pdHRlZCBwcm92aWRlZCB0aGF0IHRoZSBm
b2xsb3dpbmcgY29uZGl0aW9ucwotICogYXJlIG1ldDoKLSAqIDEuIFJlZGlzdHJpYnV0aW9ucyBv
ZiBzb3VyY2UgY29kZSBtdXN0IHJldGFpbiB0aGUgYWJvdmUgY29weXJpZ2h0Ci0gKiAgICBub3Rp
Y2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIu
Ci0gKiAyLiBSZWRpc3RyaWJ1dGlvbnMgaW4gYmluYXJ5IGZvcm0gbXVzdCByZXByb2R1Y2UgdGhl
IGFib3ZlIGNvcHlyaWdodAotICogICAgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBh
bmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyIGluIHRoZQotICogICAgZG9jdW1lbnRhdGlvbiBh
bmQvb3Igb3RoZXIgbWF0ZXJpYWxzIHByb3ZpZGVkIHdpdGggdGhlIGRpc3RyaWJ1dGlvbi4KLSAq
Ci0gKiBUSElTIFNPRlRXQVJFIElTIFBST1ZJREVEIEJZIEFQUExFIElOQy4gYGBBUyBJUycnIEFO
RCBBTlkKLSAqIEVYUFJFU1MgT1IgSU1QTElFRCBXQVJSQU5USUVTLCBJTkNMVURJTkcsIEJVVCBO
T1QgTElNSVRFRCBUTywgVEhFCi0gKiBJTVBMSUVEIFdBUlJBTlRJRVMgT0YgTUVSQ0hBTlRBQklM
SVRZIEFORCBGSVRORVNTIEZPUiBBIFBBUlRJQ1VMQVIKLSAqIFBVUlBPU0UgQVJFIERJU0NMQUlN
RUQuICBJTiBOTyBFVkVOVCBTSEFMTCBBUFBMRSBJTkMuIE9SCi0gKiBDT05UUklCVVRPUlMgQkUg
TElBQkxFIEZPUiBBTlkgRElSRUNULCBJTkRJUkVDVCwgSU5DSURFTlRBTCwgU1BFQ0lBTCwKLSAq
IEVYRU1QTEFSWSwgT1IgQ09OU0VRVUVOVElBTCBEQU1BR0VTIChJTkNMVURJTkcsIEJVVCBOT1Qg
TElNSVRFRCBUTywKLSAqIFBST0NVUkVNRU5UIE9GIFNVQlNUSVRVVEUgR09PRFMgT1IgU0VSVklD
RVM7IExPU1MgT0YgVVNFLCBEQVRBLCBPUgotICogUFJPRklUUzsgT1IgQlVTSU5FU1MgSU5URVJS
VVBUSU9OKSBIT1dFVkVSIENBVVNFRCBBTkQgT04gQU5ZIFRIRU9SWQotICogT0YgTElBQklMSVRZ
LCBXSEVUSEVSIElOIENPTlRSQUNULCBTVFJJQ1QgTElBQklMSVRZLCBPUiBUT1JUCi0gKiAoSU5D
TFVESU5HIE5FR0xJR0VOQ0UgT1IgT1RIRVJXSVNFKSBBUklTSU5HIElOIEFOWSBXQVkgT1VUIE9G
IFRIRSBVU0UKLSAqIE9GIFRISVMgU09GVFdBUkUsIEVWRU4gSUYgQURWSVNFRCBPRiBUSEUgUE9T
U0lCSUxJVFkgT0YgU1VDSCBEQU1BR0UuCi0gKi8KLQotI2lmbmRlZiBNb2R1bGVSZWNvcmRfaAot
I2RlZmluZSBNb2R1bGVSZWNvcmRfaAotCi0jaW5jbHVkZSAiTm9kZXMuaCIKLSNpbmNsdWRlIDx3
dGYvSGFzaE1hcC5oPgotI2luY2x1ZGUgPHd0Zi9MaXN0SGFzaFNldC5oPgotCi1uYW1lc3BhY2Ug
SlNDIHsKLQotLy8gQmFzZWQgb24gdGhlIFNvdXJjZSBUZXh0IE1vZHVsZSBSZWNvcmQKLS8vIGh0
dHA6Ly93d3cuZWNtYS1pbnRlcm5hdGlvbmFsLm9yZy9lY21hLTI2Mi82LjAvI3NlYy1zb3VyY2Ut
dGV4dC1tb2R1bGUtcmVjb3JkcwotY2xhc3MgTW9kdWxlUmVjb3JkIDogcHVibGljIFJlZkNvdW50
ZWQ8TW9kdWxlUmVjb3JkPiB7Ci1wdWJsaWM6Ci0gICAgc3RydWN0IEV4cG9ydEVudHJ5IHsKLSAg
ICAgICAgZW51bSBjbGFzcyBUeXBlIHsKLSAgICAgICAgICAgIExvY2FsLAotICAgICAgICAgICAg
TmFtZXNwYWNlLAotICAgICAgICAgICAgSW5kaXJlY3QKLSAgICAgICAgfTsKLQotICAgICAgICBz
dGF0aWMgRXhwb3J0RW50cnkgY3JlYXRlTG9jYWwoY29uc3QgSWRlbnRpZmllciYgZXhwb3J0TmFt
ZSwgY29uc3QgSWRlbnRpZmllciYgbG9jYWxOYW1lLCBjb25zdCBWYXJpYWJsZUVudmlyb25tZW50
RW50cnkmKTsKLSAgICAgICAgc3RhdGljIEV4cG9ydEVudHJ5IGNyZWF0ZU5hbWVzcGFjZShjb25z
dCBJZGVudGlmaWVyJiBleHBvcnROYW1lLCBjb25zdCBJZGVudGlmaWVyJiBtb2R1bGVOYW1lKTsK
LSAgICAgICAgc3RhdGljIEV4cG9ydEVudHJ5IGNyZWF0ZUluZGlyZWN0KGNvbnN0IElkZW50aWZp
ZXImIGV4cG9ydE5hbWUsIGNvbnN0IElkZW50aWZpZXImIGltcG9ydE5hbWUsIGNvbnN0IElkZW50
aWZpZXImIG1vZHVsZU5hbWUpOwotCi0gICAgICAgIFR5cGUgdHlwZTsKLSAgICAgICAgSWRlbnRp
ZmllciBleHBvcnROYW1lOwotICAgICAgICBJZGVudGlmaWVyIG1vZHVsZU5hbWU7Ci0gICAgICAg
IElkZW50aWZpZXIgaW1wb3J0TmFtZTsKLSAgICAgICAgSWRlbnRpZmllciBsb2NhbE5hbWU7Ci0g
ICAgICAgIFZhcmlhYmxlRW52aXJvbm1lbnRFbnRyeSB2YXJpYWJsZTsKLSAgICB9OwotCi0gICAg
c3RydWN0IEltcG9ydEVudHJ5IHsKLSAgICAgICAgSWRlbnRpZmllciBtb2R1bGVSZXF1ZXN0Owot
ICAgICAgICBJZGVudGlmaWVyIGltcG9ydE5hbWU7Ci0gICAgICAgIElkZW50aWZpZXIgbG9jYWxO
YW1lOwotCi0gICAgICAgIGJvb2wgaXNOYW1lc3BhY2UoVk0mIHZtKSBjb25zdAotICAgICAgICB7
Ci0gICAgICAgICAgICByZXR1cm4gaW1wb3J0TmFtZSA9PSB2bS5wcm9wZXJ0eU5hbWVzLT50aW1l
c0lkZW50aWZpZXI7Ci0gICAgICAgIH0KLSAgICB9OwotCi0gICAgdHlwZWRlZiBXVEY6Okxpc3RI
YXNoU2V0PFJlZlB0cjxVbmlxdWVkU3RyaW5nSW1wbD4sIElkZW50aWZpZXJSZXBIYXNoPiBPcmRl
cmVkSWRlbnRpZmllclNldDsKLSAgICB0eXBlZGVmIEhhc2hNYXA8UmVmUHRyPFVuaXF1ZWRTdHJp
bmdJbXBsPiwgSW1wb3J0RW50cnksIElkZW50aWZpZXJSZXBIYXNoLCBIYXNoVHJhaXRzPFJlZlB0
cjxVbmlxdWVkU3RyaW5nSW1wbD4+PiBJbXBvcnRNYXA7Ci0gICAgdHlwZWRlZiBIYXNoTWFwPFJl
ZlB0cjxVbmlxdWVkU3RyaW5nSW1wbD4sIEV4cG9ydEVudHJ5LCBJZGVudGlmaWVyUmVwSGFzaCwg
SGFzaFRyYWl0czxSZWZQdHI8VW5pcXVlZFN0cmluZ0ltcGw+Pj4gRXhwb3J0TWFwOwotCi0gICAg
c3RhdGljIFJlZjxNb2R1bGVSZWNvcmQ+IGNyZWF0ZSgpCi0gICAgewotICAgICAgICByZXR1cm4g
YWRvcHRSZWYoKm5ldyBNb2R1bGVSZWNvcmQpOwotICAgIH0KLQotICAgIHZvaWQgYXBwZW5kUmVx
dWVzdGVkTW9kdWxlKGNvbnN0IElkZW50aWZpZXImKTsKLSAgICB2b2lkIGFkZFN0YXJFeHBvcnRF
bnRyeShjb25zdCBJZGVudGlmaWVyJik7Ci0gICAgdm9pZCBhZGRJbXBvcnRFbnRyeShjb25zdCBJ
bXBvcnRFbnRyeSYpOwotICAgIHZvaWQgYWRkRXhwb3J0RW50cnkoY29uc3QgRXhwb3J0RW50cnkm
KTsKLQotICAgIGNvbnN0IEltcG9ydEVudHJ5JiBsb29rVXBJbXBvcnRFbnRyeShjb25zdCBSZWZQ
dHI8VW5pcXVlZFN0cmluZ0ltcGw+JiBsb2NhbE5hbWUpOwotCi0gICAgdm9pZCBkdW1wKCk7Ci0K
LXByaXZhdGU6Ci0gICAgLy8gTWFwIGxvY2FsTmFtZSAtPiBJbXBvcnRFbnRyeS4KLSAgICBJbXBv
cnRNYXAgbV9pbXBvcnRFbnRyaWVzOwotCi0gICAgLy8gTWFwIGV4cG9ydE5hbWUgLT4gRXhwb3J0
RW50cnkuCi0gICAgRXhwb3J0TWFwIG1fZXhwb3J0RW50cmllczsKLQotICAgIElkZW50aWZpZXJT
ZXQgbV9zdGFyRXhwb3J0RW50cmllczsKLQotICAgIC8vIFNhdmUgdGhlIG9jY3VycmVuY2Ugb3Jk
ZXIgc2luY2UgdGhlIG1vZHVsZSBsb2FkZXIgbG9hZHMgYW5kIHJ1bnMgdGhlIG1vZHVsZXMgaW4g
dGhpcyBvcmRlci4KLSAgICAvLyBodHRwOi8vd3d3LmVjbWEtaW50ZXJuYXRpb25hbC5vcmcvZWNt
YS0yNjIvNi4wLyNzZWMtbW9kdWxlZXZhbHVhdGlvbgotICAgIE9yZGVyZWRJZGVudGlmaWVyU2V0
IG1fcmVxdWVzdGVkTW9kdWxlczsKLX07Ci0KLWlubGluZSB2b2lkIE1vZHVsZVJlY29yZDo6YXBw
ZW5kUmVxdWVzdGVkTW9kdWxlKGNvbnN0IElkZW50aWZpZXImIG1vZHVsZU5hbWUpCi17Ci0gICAg
bV9yZXF1ZXN0ZWRNb2R1bGVzLmFkZChtb2R1bGVOYW1lLmltcGwoKSk7Ci19Ci0KLWlubGluZSB2
b2lkIE1vZHVsZVJlY29yZDo6YWRkSW1wb3J0RW50cnkoY29uc3QgSW1wb3J0RW50cnkmIGVudHJ5
KQotewotICAgIG1faW1wb3J0RW50cmllcy5hZGQoZW50cnkubG9jYWxOYW1lLmltcGwoKSwgZW50
cnkpOwotfQotCi1pbmxpbmUgdm9pZCBNb2R1bGVSZWNvcmQ6OmFkZEV4cG9ydEVudHJ5KGNvbnN0
IEV4cG9ydEVudHJ5JiBlbnRyeSkKLXsKLSAgICBtX2V4cG9ydEVudHJpZXMuYWRkKGVudHJ5LmV4
cG9ydE5hbWUuaW1wbCgpLCBlbnRyeSk7Ci19Ci0KLWlubGluZSB2b2lkIE1vZHVsZVJlY29yZDo6
YWRkU3RhckV4cG9ydEVudHJ5KGNvbnN0IElkZW50aWZpZXImIG1vZHVsZU5hbWUpCi17Ci0gICAg
bV9zdGFyRXhwb3J0RW50cmllcy5hZGQobW9kdWxlTmFtZS5pbXBsKCkpOwotfQotCi1pbmxpbmUg
YXV0byBNb2R1bGVSZWNvcmQ6Omxvb2tVcEltcG9ydEVudHJ5KGNvbnN0IFJlZlB0cjxVbmlxdWVk
U3RyaW5nSW1wbD4mIGxvY2FsTmFtZSkgLT4gY29uc3QgSW1wb3J0RW50cnkmCi17Ci0gICAgcmV0
dXJuICgqbV9pbXBvcnRFbnRyaWVzLmZpbmQobG9jYWxOYW1lKSkudmFsdWU7Ci19Ci0KLX0gLy8g
bmFtZXNwYWNlIEpTQwotCi0jZW5kaWYgLy8gTW9kdWxlUmVjb3JkX2gKZGlmZiAtLWdpdCBhL1Nv
dXJjZS9KYXZhU2NyaXB0Q29yZS9wYXJzZXIvTm9kZXMuaCBiL1NvdXJjZS9KYXZhU2NyaXB0Q29y
ZS9wYXJzZXIvTm9kZXMuaAppbmRleCBjMDJiNDJjZWNiYWRhMTZlZTliZGUzMzRmNTJkOTBhYTg4
NWNjY2ZhLi45MTkxMzRjMWI1YTcyZTdmYmI3NDgxNDg2YWUzZGViYzVkZDA0ZjQxIDEwMDY0NAot
LS0gYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvcGFyc2VyL05vZGVzLmgKKysrIGIvU291cmNlL0ph
dmFTY3JpcHRDb3JlL3BhcnNlci9Ob2Rlcy5oCkBAIC03OSw4ICs3OSw2IEBAIG5hbWVzcGFjZSBK
U0MgewogICAgIH07CiAgICAgaW5saW5lIEZhbGxUaHJvdWdoTW9kZSBpbnZlcnQoRmFsbFRocm91
Z2hNb2RlIGZhbGxUaHJvdWdoTW9kZSkgeyByZXR1cm4gc3RhdGljX2Nhc3Q8RmFsbFRocm91Z2hN
b2RlPighZmFsbFRocm91Z2hNb2RlKTsgfQogCi0gICAgdHlwZWRlZiBIYXNoU2V0PFJlZlB0cjxV
bmlxdWVkU3RyaW5nSW1wbD4sIElkZW50aWZpZXJSZXBIYXNoPiBJZGVudGlmaWVyU2V0OwotCiAg
ICAgbmFtZXNwYWNlIERlY2xhcmF0aW9uU3RhY2tzIHsKICAgICAgICAgdHlwZWRlZiBWZWN0b3I8
RnVuY3Rpb25NZXRhZGF0YU5vZGUqPiBGdW5jdGlvblN0YWNrOwogICAgIH0KZGlmZiAtLWdpdCBh
L1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9wYXJzZXIvTm9kZXNBbmFseXplTW9kdWxlLmNwcCBiL1Nv
dXJjZS9KYXZhU2NyaXB0Q29yZS9wYXJzZXIvTm9kZXNBbmFseXplTW9kdWxlLmNwcAppbmRleCA2
MzNkZWFlY2U2YWY2NjY1OWQwZTc2YWMxYWE0MTYxNTlhYjc1YTM1Li4wN2Q5MzBmZmM2MDkxODkx
ZjlmYjc0ZTZhZmE3YjhlZTZiNzliMDJmIDEwMDY0NAotLS0gYS9Tb3VyY2UvSmF2YVNjcmlwdENv
cmUvcGFyc2VyL05vZGVzQW5hbHl6ZU1vZHVsZS5jcHAKKysrIGIvU291cmNlL0phdmFTY3JpcHRD
b3JlL3BhcnNlci9Ob2Rlc0FuYWx5emVNb2R1bGUuY3BwCkBAIC0yNyw4ICsyNyw4IEBACiAjaW5j
bHVkZSAiTm9kZXMuaCIKICNpbmNsdWRlICJOb2RlQ29uc3RydWN0b3JzLmgiCiAKKyNpbmNsdWRl
ICJKU01vZHVsZVJlY29yZC5oIgogI2luY2x1ZGUgIk1vZHVsZUFuYWx5emVyLmgiCi0jaW5jbHVk
ZSAiTW9kdWxlUmVjb3JkLmgiCiAKIG5hbWVzcGFjZSBKU0MgewogCkBAIC00OCw5ICs0OCw5IEBA
IHZvaWQgU291cmNlRWxlbWVudHM6OmFuYWx5emVNb2R1bGUoTW9kdWxlQW5hbHl6ZXImIGFuYWx5
emVyKQogCiB2b2lkIEltcG9ydERlY2xhcmF0aW9uTm9kZTo6YW5hbHl6ZU1vZHVsZShNb2R1bGVB
bmFseXplciYgYW5hbHl6ZXIpCiB7Ci0gICAgYW5hbHl6ZXIubW9kdWxlUmVjb3JkKCkuYXBwZW5k
UmVxdWVzdGVkTW9kdWxlKG1fbW9kdWxlTmFtZS0+bW9kdWxlTmFtZSgpKTsKKyAgICBhbmFseXpl
ci5tb2R1bGVSZWNvcmQoKS0+YXBwZW5kUmVxdWVzdGVkTW9kdWxlKG1fbW9kdWxlTmFtZS0+bW9k
dWxlTmFtZSgpKTsKICAgICBmb3IgKGF1dG8qIHNwZWNpZmllciA6IG1fc3BlY2lmaWVyTGlzdC0+
c3BlY2lmaWVycygpKSB7Ci0gICAgICAgIGFuYWx5emVyLm1vZHVsZVJlY29yZCgpLmFkZEltcG9y
dEVudHJ5KE1vZHVsZVJlY29yZDo6SW1wb3J0RW50cnkgeworICAgICAgICBhbmFseXplci5tb2R1
bGVSZWNvcmQoKS0+YWRkSW1wb3J0RW50cnkoSlNNb2R1bGVSZWNvcmQ6OkltcG9ydEVudHJ5IHsK
ICAgICAgICAgICAgIG1fbW9kdWxlTmFtZS0+bW9kdWxlTmFtZSgpLAogICAgICAgICAgICAgc3Bl
Y2lmaWVyLT5pbXBvcnRlZE5hbWUoKSwKICAgICAgICAgICAgIHNwZWNpZmllci0+bG9jYWxOYW1l
KCkKQEAgLTYwLDggKzYwLDggQEAgdm9pZCBJbXBvcnREZWNsYXJhdGlvbk5vZGU6OmFuYWx5emVN
b2R1bGUoTW9kdWxlQW5hbHl6ZXImIGFuYWx5emVyKQogCiB2b2lkIEV4cG9ydEFsbERlY2xhcmF0
aW9uTm9kZTo6YW5hbHl6ZU1vZHVsZShNb2R1bGVBbmFseXplciYgYW5hbHl6ZXIpCiB7Ci0gICAg
YW5hbHl6ZXIubW9kdWxlUmVjb3JkKCkuYXBwZW5kUmVxdWVzdGVkTW9kdWxlKG1fbW9kdWxlTmFt
ZS0+bW9kdWxlTmFtZSgpKTsKLSAgICBhbmFseXplci5tb2R1bGVSZWNvcmQoKS5hZGRTdGFyRXhw
b3J0RW50cnkobV9tb2R1bGVOYW1lLT5tb2R1bGVOYW1lKCkpOworICAgIGFuYWx5emVyLm1vZHVs
ZVJlY29yZCgpLT5hcHBlbmRSZXF1ZXN0ZWRNb2R1bGUobV9tb2R1bGVOYW1lLT5tb2R1bGVOYW1l
KCkpOworICAgIGFuYWx5emVyLm1vZHVsZVJlY29yZCgpLT5hZGRTdGFyRXhwb3J0RW50cnkobV9t
b2R1bGVOYW1lLT5tb2R1bGVOYW1lKCkpOwogfQogCiB2b2lkIEV4cG9ydERlZmF1bHREZWNsYXJh
dGlvbk5vZGU6OmFuYWx5emVNb2R1bGUoTW9kdWxlQW5hbHl6ZXImIGFuYWx5emVyKQpAQCAtNzYs
NyArNzYsNyBAQCB2b2lkIEV4cG9ydExvY2FsRGVjbGFyYXRpb25Ob2RlOjphbmFseXplTW9kdWxl
KE1vZHVsZUFuYWx5emVyJikKIHZvaWQgRXhwb3J0TmFtZWREZWNsYXJhdGlvbk5vZGU6OmFuYWx5
emVNb2R1bGUoTW9kdWxlQW5hbHl6ZXImIGFuYWx5emVyKQogewogICAgIGlmIChtX21vZHVsZU5h
bWUpCi0gICAgICAgIGFuYWx5emVyLm1vZHVsZVJlY29yZCgpLmFwcGVuZFJlcXVlc3RlZE1vZHVs
ZShtX21vZHVsZU5hbWUtPm1vZHVsZU5hbWUoKSk7CisgICAgICAgIGFuYWx5emVyLm1vZHVsZVJl
Y29yZCgpLT5hcHBlbmRSZXF1ZXN0ZWRNb2R1bGUobV9tb2R1bGVOYW1lLT5tb2R1bGVOYW1lKCkp
OwogCiAgICAgZm9yIChhdXRvKiBzcGVjaWZpZXIgOiBtX3NwZWNpZmllckxpc3QtPnNwZWNpZmll
cnMoKSkgewogICAgICAgICBpZiAobV9tb2R1bGVOYW1lKSB7CkBAIC04NCw3ICs4NCw3IEBAIHZv
aWQgRXhwb3J0TmFtZWREZWNsYXJhdGlvbk5vZGU6OmFuYWx5emVNb2R1bGUoTW9kdWxlQW5hbHl6
ZXImIGFuYWx5emVyKQogICAgICAgICAgICAgLy8KICAgICAgICAgICAgIC8vIEluIHRoaXMgY2Fz
ZSwgbm8gbG9jYWwgdmFyaWFibGUgbmFtZXMgYXJlIGltcG9ydGVkIGludG8gdGhlIGN1cnJlbnQg
bW9kdWxlLgogICAgICAgICAgICAgLy8gInYiIGluZGlyZWN0bHkgcG9pbnRzIHRoZSBiaW5kaW5n
IGluICJtb2QiLgotICAgICAgICAgICAgYW5hbHl6ZXIubW9kdWxlUmVjb3JkKCkuYWRkRXhwb3J0
RW50cnkoTW9kdWxlUmVjb3JkOjpFeHBvcnRFbnRyeTo6Y3JlYXRlSW5kaXJlY3Qoc3BlY2lmaWVy
LT5leHBvcnRlZE5hbWUoKSwgc3BlY2lmaWVyLT5sb2NhbE5hbWUoKSwgbV9tb2R1bGVOYW1lLT5t
b2R1bGVOYW1lKCkpKTsKKyAgICAgICAgICAgIGFuYWx5emVyLm1vZHVsZVJlY29yZCgpLT5hZGRF
eHBvcnRFbnRyeShKU01vZHVsZVJlY29yZDo6RXhwb3J0RW50cnk6OmNyZWF0ZUluZGlyZWN0KHNw
ZWNpZmllci0+ZXhwb3J0ZWROYW1lKCksIHNwZWNpZmllci0+bG9jYWxOYW1lKCksIG1fbW9kdWxl
TmFtZS0+bW9kdWxlTmFtZSgpKSk7CiAgICAgICAgICAgICBjb250aW51ZTsKICAgICAgICAgfQog
CmRpZmYgLS1naXQgYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9Db21tb25JZGVudGlm
aWVycy5jcHAgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9Db21tb25JZGVudGlmaWVy
cy5jcHAKaW5kZXggZmM2ZTYyY2EwNDVlMzYyOWNmMmFkM2I2YmZjYjczZDVkZGZmMGNlMS4uYWEz
OTJjZWI4ZDFhMDY1YTkyNTJhYTc3NDRkYWI4ZDliMTYwNTRlOSAxMDA2NDQKLS0tIGEvU291cmNl
L0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvQ29tbW9uSWRlbnRpZmllcnMuY3BwCisrKyBiL1NvdXJj
ZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL0NvbW1vbklkZW50aWZpZXJzLmNwcApAQCAtNjgsMTQg
KzY4LDE0IEBAIGJvb2wgQ29tbW9uSWRlbnRpZmllcnM6OmlzUHJpdmF0ZU5hbWUoY29uc3QgSWRl
bnRpZmllciYgaWRlbnQpIGNvbnN0CiAgICAgcmV0dXJuIG1fYnVpbHRpbk5hbWVzLT5pc1ByaXZh
dGVOYW1lKGlkZW50KTsKIH0KIAotY29uc3QgSWRlbnRpZmllciogQ29tbW9uSWRlbnRpZmllcnM6
OmdldFByaXZhdGVOYW1lKGNvbnN0IElkZW50aWZpZXImIGlkZW50KSBjb25zdAorY29uc3QgSWRl
bnRpZmllciogQ29tbW9uSWRlbnRpZmllcnM6Omxvb2tVcFByaXZhdGVOYW1lKGNvbnN0IElkZW50
aWZpZXImIGlkZW50KSBjb25zdAogewotICAgIHJldHVybiBtX2J1aWx0aW5OYW1lcy0+Z2V0UHJp
dmF0ZU5hbWUoaWRlbnQpOworICAgIHJldHVybiBtX2J1aWx0aW5OYW1lcy0+bG9va1VwUHJpdmF0
ZU5hbWUoaWRlbnQpOwogfQogICAgIAotSWRlbnRpZmllciBDb21tb25JZGVudGlmaWVyczo6Z2V0
UHVibGljTmFtZShjb25zdCBJZGVudGlmaWVyJiBpZGVudCkgY29uc3QKK0lkZW50aWZpZXIgQ29t
bW9uSWRlbnRpZmllcnM6Omxvb2tVcFB1YmxpY05hbWUoY29uc3QgSWRlbnRpZmllciYgaWRlbnQp
IGNvbnN0CiB7Ci0gICAgcmV0dXJuIG1fYnVpbHRpbk5hbWVzLT5nZXRQdWJsaWNOYW1lKGlkZW50
KTsKKyAgICByZXR1cm4gbV9idWlsdGluTmFtZXMtPmxvb2tVcFB1YmxpY05hbWUoaWRlbnQpOwog
fQogCiAKZGlmZiAtLWdpdCBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL0NvbW1vbklk
ZW50aWZpZXJzLmggYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9Db21tb25JZGVudGlm
aWVycy5oCmluZGV4IDM0NDdiMzk4ZmQwNjE4MDU5MDllNmYwMjJlM2Q2NjUyM2JhYzQ2OTguLmQ1
OWQ0NDQ4ZDI5M2ExNDc1YzAxYjdjN2U2NmFlZjc5NjJlYjEyNmQgMTAwNjQ0Ci0tLSBhL1NvdXJj
ZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL0NvbW1vbklkZW50aWZpZXJzLmgKKysrIGIvU291cmNl
L0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvQ29tbW9uSWRlbnRpZmllcnMuaApAQCAtNDIsNiArNDIs
NyBAQAogICAgIG1hY3JvKEluZmluaXR5KSBcCiAgICAgbWFjcm8oSW50bCkgXAogICAgIG1hY3Jv
KEpTT04pIFwKKyAgICBtYWNybyhMb2FkZXIpIFwKICAgICBtYWNybyhNYXApXAogICAgIG1hY3Jv
KE1hcEl0ZXJhdG9yKVwKICAgICBtYWNybyhNYXRoKSBcCkBAIC0yODEsNiArMjgyLDcgQEAKICAg
ICBtYWNybyhOdW1iZXIpIFwKICAgICBtYWNybyhBcnJheSkgXAogICAgIG1hY3JvKFN0cmluZykg
XAorICAgIG1hY3JvKE1hcCkgXAogICAgIG1hY3JvKFByb21pc2UpIFwKICAgICBtYWNybyhhYnMp
IFwKICAgICBtYWNybyhmbG9vcikgXApAQCAtMzAyLDYgKzMwNCw4IEBACiAgICAgbWFjcm8oY2Fw
YWJpbGl0aWVzKSBcCiAgICAgbWFjcm8oc3RhckRlZmF1bHQpIFwKICAgICBtYWNybyhJbnNwZWN0
b3JJbnN0cnVtZW50YXRpb24pIFwKKyAgICBtYWNybyhnZXQpIFwKKyAgICBtYWNybyhzZXQpIFwK
IAogCiBuYW1lc3BhY2UgSlNDIHsKQEAgLTM0OCw4ICszNTIsOCBAQCBuYW1lc3BhY2UgSlNDIHsK
ICAgICAgICAgYm9vbCBpc1ByaXZhdGVOYW1lKFVuaXF1ZWRTdHJpbmdJbXBsJiB1aWQpIGNvbnN0
OwogICAgICAgICBib29sIGlzUHJpdmF0ZU5hbWUoY29uc3QgSWRlbnRpZmllciYpIGNvbnN0Owog
Ci0gICAgICAgIGNvbnN0IElkZW50aWZpZXIqIGdldFByaXZhdGVOYW1lKGNvbnN0IElkZW50aWZp
ZXImKSBjb25zdDsKLSAgICAgICAgSWRlbnRpZmllciBnZXRQdWJsaWNOYW1lKGNvbnN0IElkZW50
aWZpZXImKSBjb25zdDsKKyAgICAgICAgY29uc3QgSWRlbnRpZmllciogbG9va1VwUHJpdmF0ZU5h
bWUoY29uc3QgSWRlbnRpZmllciYpIGNvbnN0OworICAgICAgICBJZGVudGlmaWVyIGxvb2tVcFB1
YmxpY05hbWUoY29uc3QgSWRlbnRpZmllciYpIGNvbnN0OwogCiAgICAgICAgIGNvbnN0IEJ5dGVj
b2RlSW50cmluc2ljUmVnaXN0cnkmIGJ5dGVjb2RlSW50cmluc2ljUmVnaXN0cnkoKSBjb25zdCB7
IHJldHVybiBtX2J5dGVjb2RlSW50cmluc2ljUmVnaXN0cnk7IH0KIApkaWZmIC0tZ2l0IGEvU291
cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvQ29tcGxldGlvbi5jcHAgYi9Tb3VyY2UvSmF2YVNj
cmlwdENvcmUvcnVudGltZS9Db21wbGV0aW9uLmNwcAppbmRleCBhM2RhZWU2MDM0M2FjMTRiMTRh
ZDAzMDRlYmRjOWEyNWFhYjE1NzIzLi4xZDU3ZGRkZmMxMzc2YTYwMzdkMTNiNjY2YTc3YWVmN2I0
ODAzNDZkIDEwMDY0NAotLS0gYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9Db21wbGV0
aW9uLmNwcAorKysgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9Db21wbGV0aW9uLmNw
cApAQCAtMjgsMTEgKzI4LDExIEBACiAjaW5jbHVkZSAiRGVidWdnZXIuaCIKICNpbmNsdWRlICJF
eGNlcHRpb24uaCIKICNpbmNsdWRlICJJbnRlcnByZXRlci5oIgorI2luY2x1ZGUgIkpTQ0lubGlu
ZXMuaCIKICNpbmNsdWRlICJKU0dsb2JhbE9iamVjdC5oIgogI2luY2x1ZGUgIkpTTG9jay5oIgot
I2luY2x1ZGUgIkpTQ0lubGluZXMuaCIKKyNpbmNsdWRlICJKU01vZHVsZVJlY29yZC5oIgogI2lu
Y2x1ZGUgIk1vZHVsZUFuYWx5emVyLmgiCi0jaW5jbHVkZSAiTW9kdWxlUmVjb3JkLmgiCiAjaW5j
bHVkZSAiUGFyc2VyLmgiCiAjaW5jbHVkZSA8d3RmL1dURlRocmVhZERhdGEuaD4KIApAQCAtNjMs
OCArNjMsOSBAQCBib29sIGNoZWNrU3ludGF4KFZNJiB2bSwgY29uc3QgU291cmNlQ29kZSYgc291
cmNlLCBQYXJzZXJFcnJvciYgZXJyb3IpCiAgICAgICAgIEpTUGFyc2VyU3RyaWN0TW9kZTo6Tm90
U3RyaWN0LCBTb3VyY2VQYXJzZU1vZGU6OlByb2dyYW1Nb2RlLCBlcnJvcik7CiB9CiAKLWJvb2wg
Y2hlY2tNb2R1bGVTeW50YXgoVk0mIHZtLCBjb25zdCBTb3VyY2VDb2RlJiBzb3VyY2UsIFBhcnNl
ckVycm9yJiBlcnJvcikKK2Jvb2wgY2hlY2tNb2R1bGVTeW50YXgoRXhlY1N0YXRlKiBleGVjLCBj
b25zdCBTb3VyY2VDb2RlJiBzb3VyY2UsIFBhcnNlckVycm9yJiBlcnJvcikKIHsKKyAgICBWTSYg
dm0gPSBleGVjLT52bSgpOwogICAgIEpTTG9ja0hvbGRlciBsb2NrKHZtKTsKICAgICBSRUxFQVNF
X0FTU0VSVCh2bS5hdG9taWNTdHJpbmdUYWJsZSgpID09IHd0ZlRocmVhZERhdGEoKS5hdG9taWNT
dHJpbmdUYWJsZSgpKTsKICAgICBzdGQ6OnVuaXF1ZV9wdHI8TW9kdWxlUHJvZ3JhbU5vZGU+IG1v
ZHVsZVByb2dyYW1Ob2RlID0gcGFyc2U8TW9kdWxlUHJvZ3JhbU5vZGU+KApAQCAtNzMsNyArNzQs
NyBAQCBib29sIGNoZWNrTW9kdWxlU3ludGF4KFZNJiB2bSwgY29uc3QgU291cmNlQ29kZSYgc291
cmNlLCBQYXJzZXJFcnJvciYgZXJyb3IpCiAgICAgaWYgKCFtb2R1bGVQcm9ncmFtTm9kZSkKICAg
ICAgICAgcmV0dXJuIGZhbHNlOwogCi0gICAgTW9kdWxlQW5hbHl6ZXIgbW9kdWxlQW5hbHl6ZXIo
dm0sIG1vZHVsZVByb2dyYW1Ob2RlLT52YXJEZWNsYXJhdGlvbnMoKSwgbW9kdWxlUHJvZ3JhbU5v
ZGUtPmxleGljYWxWYXJpYWJsZXMoKSk7CisgICAgTW9kdWxlQW5hbHl6ZXIgbW9kdWxlQW5hbHl6
ZXIoZXhlYywgbW9kdWxlUHJvZ3JhbU5vZGUtPnZhckRlY2xhcmF0aW9ucygpLCBtb2R1bGVQcm9n
cmFtTm9kZS0+bGV4aWNhbFZhcmlhYmxlcygpKTsKICAgICBtb2R1bGVBbmFseXplci5hbmFseXpl
KCptb2R1bGVQcm9ncmFtTm9kZSk7CiAgICAgcmV0dXJuIHRydWU7CiB9CmRpZmYgLS1naXQgYS9T
b3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9Db21wbGV0aW9uLmggYi9Tb3VyY2UvSmF2YVNj
cmlwdENvcmUvcnVudGltZS9Db21wbGV0aW9uLmgKaW5kZXggNzAyZWQ5ZmFiMGM3OTFmYWUxNTUw
NTYyN2JjNzMxYWRiYWUzYTVmZC4uMDFhZTI4MjNlMWZhZDU0NzA1Y2MyYjU0N2UwYzEwOWI0MjI2
YTRjMiAxMDA2NDQKLS0tIGEvU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvQ29tcGxldGlv
bi5oCisrKyBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL0NvbXBsZXRpb24uaApAQCAt
MzcsNyArMzcsNyBAQCBjbGFzcyBWTTsKIAogSlNfRVhQT1JUX1BSSVZBVEUgYm9vbCBjaGVja1N5
bnRheChWTSYsIGNvbnN0IFNvdXJjZUNvZGUmLCBQYXJzZXJFcnJvciYpOwogSlNfRVhQT1JUX1BS
SVZBVEUgYm9vbCBjaGVja1N5bnRheChFeGVjU3RhdGUqLCBjb25zdCBTb3VyY2VDb2RlJiwgSlNW
YWx1ZSogZXhjZXB0aW9uID0gMCk7Ci1KU19FWFBPUlRfUFJJVkFURSBib29sIGNoZWNrTW9kdWxl
U3ludGF4KFZNJiwgY29uc3QgU291cmNlQ29kZSYsIFBhcnNlckVycm9yJik7CitKU19FWFBPUlRf
UFJJVkFURSBib29sIGNoZWNrTW9kdWxlU3ludGF4KEV4ZWNTdGF0ZSosIGNvbnN0IFNvdXJjZUNv
ZGUmLCBQYXJzZXJFcnJvciYpOwogSlNfRVhQT1JUX1BSSVZBVEUgSlNWYWx1ZSBldmFsdWF0ZShF
eGVjU3RhdGUqLCBjb25zdCBTb3VyY2VDb2RlJiwgSlNWYWx1ZSB0aGlzVmFsdWUsIE5ha2VkUHRy
PEV4Y2VwdGlvbj4mIHJldHVybmVkRXhjZXB0aW9uKTsKIGlubGluZSBKU1ZhbHVlIGV2YWx1YXRl
KEV4ZWNTdGF0ZSogZXhlYywgY29uc3QgU291cmNlQ29kZSYgc291cmNlQ29kZSwgSlNWYWx1ZSB0
aGlzVmFsdWUgPSBKU1ZhbHVlKCkpCiB7CmRpZmYgLS1naXQgYS9Tb3VyY2UvSmF2YVNjcmlwdENv
cmUvcnVudGltZS9FeGNlcHRpb25IZWxwZXJzLmNwcCBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9y
dW50aW1lL0V4Y2VwdGlvbkhlbHBlcnMuY3BwCmluZGV4IDQ2YzBjZWY5MzkyYTRhZDdjMGIwMGE5
YTA4NDdlMGI5YWVmYzVmYWUuLmI3ODU5YmZlM2U4ZWFmZDFlYzY0YWI1ZmJmZWFmMjU3MmFkMjdj
MTcgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL0V4Y2VwdGlvbkhl
bHBlcnMuY3BwCisrKyBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL0V4Y2VwdGlvbkhl
bHBlcnMuY3BwCkBAIC03Myw3ICs3Myw3IEBAIEpTT2JqZWN0KiBjcmVhdGVTdGFja092ZXJmbG93
RXJyb3IoRXhlY1N0YXRlKiBleGVjKQogSlNPYmplY3QqIGNyZWF0ZVVuZGVmaW5lZFZhcmlhYmxl
RXJyb3IoRXhlY1N0YXRlKiBleGVjLCBjb25zdCBJZGVudGlmaWVyJiBpZGVudCkKIHsKICAgICBp
ZiAoZXhlYy0+cHJvcGVydHlOYW1lcygpLmlzUHJpdmF0ZU5hbWUoaWRlbnQpKSB7Ci0gICAgICAg
IFN0cmluZyBtZXNzYWdlKG1ha2VTdHJpbmcoIkNhbid0IGZpbmQgcHJpdmF0ZSB2YXJpYWJsZTog
QCIsIGV4ZWMtPnByb3BlcnR5TmFtZXMoKS5nZXRQdWJsaWNOYW1lKGlkZW50KS5zdHJpbmcoKSkp
OworICAgICAgICBTdHJpbmcgbWVzc2FnZShtYWtlU3RyaW5nKCJDYW4ndCBmaW5kIHByaXZhdGUg
dmFyaWFibGU6IEAiLCBleGVjLT5wcm9wZXJ0eU5hbWVzKCkubG9va1VwUHVibGljTmFtZShpZGVu
dCkuc3RyaW5nKCkpKTsKICAgICAgICAgcmV0dXJuIGNyZWF0ZVJlZmVyZW5jZUVycm9yKGV4ZWMs
IG1lc3NhZ2UpOwogICAgIH0KICAgICBTdHJpbmcgbWVzc2FnZShtYWtlU3RyaW5nKCJDYW4ndCBm
aW5kIHZhcmlhYmxlOiAiLCBpZGVudC5zdHJpbmcoKSkpOwpkaWZmIC0tZ2l0IGEvU291cmNlL0ph
dmFTY3JpcHRDb3JlL3J1bnRpbWUvSWRlbnRpZmllci5oIGIvU291cmNlL0phdmFTY3JpcHRDb3Jl
L3J1bnRpbWUvSWRlbnRpZmllci5oCmluZGV4IDYxZGU2NTM2YTZmYTRjMjlhY2E0ZGYxNGI3ZDZm
ZWM0ZDJhNTAzZTYuLjg4OWNhNmIyMmU0Mzc5MzYyZjI1ODA1ZmQwNWU2Zjg0YWE2N2JiYTYgMTAw
NjQ0Ci0tLSBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL0lkZW50aWZpZXIuaAorKysg
Yi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9JZGVudGlmaWVyLmgKQEAgLTI5Miw2ICsy
OTIsNyBAQCBzdHJ1Y3QgSWRlbnRpZmllck1hcEluZGV4SGFzaFRyYWl0cyA6IEhhc2hUcmFpdHM8
aW50PiB7CiAgICAgc3RhdGljIGNvbnN0IGJvb2wgZW1wdHlWYWx1ZUlzWmVybyA9IGZhbHNlOwog
fTsKIAordHlwZWRlZiBIYXNoU2V0PFJlZlB0cjxVbmlxdWVkU3RyaW5nSW1wbD4sIElkZW50aWZp
ZXJSZXBIYXNoPiBJZGVudGlmaWVyU2V0OwogdHlwZWRlZiBIYXNoTWFwPFJlZlB0cjxVbmlxdWVk
U3RyaW5nSW1wbD4sIGludCwgSWRlbnRpZmllclJlcEhhc2gsIEhhc2hUcmFpdHM8UmVmUHRyPFVu
aXF1ZWRTdHJpbmdJbXBsPj4sIElkZW50aWZpZXJNYXBJbmRleEhhc2hUcmFpdHM+IElkZW50aWZp
ZXJNYXA7CiB0eXBlZGVmIEhhc2hNYXA8VW5pcXVlZFN0cmluZ0ltcGwqLCBpbnQsIElkZW50aWZp
ZXJSZXBIYXNoLCBIYXNoVHJhaXRzPFVuaXF1ZWRTdHJpbmdJbXBsKj4sIElkZW50aWZpZXJNYXBJ
bmRleEhhc2hUcmFpdHM+IEJvcnJvd2VkSWRlbnRpZmllck1hcDsKIApkaWZmIC0tZ2l0IGEvU291
cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvSlNHbG9iYWxPYmplY3QuY3BwIGIvU291cmNlL0ph
dmFTY3JpcHRDb3JlL3J1bnRpbWUvSlNHbG9iYWxPYmplY3QuY3BwCmluZGV4IDI1YWNlOTI2OTE4
MGFkZDczYzRlYWU5OGQzODk1NzhlNDZhZWI1NDQuLjFmOGE4ZTY0MDU2ZTk3YjViMTgwYzhlZTE2
OGVkY2Q1YTYwMDUyZGQgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1l
L0pTR2xvYmFsT2JqZWN0LmNwcAorKysgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9K
U0dsb2JhbE9iamVjdC5jcHAKQEAgLTgwLDYgKzgwLDcgQEAKICNpbmNsdWRlICJKU0xvY2suaCIK
ICNpbmNsdWRlICJKU01hcC5oIgogI2luY2x1ZGUgIkpTTWFwSXRlcmF0b3IuaCIKKyNpbmNsdWRl
ICJKU01vZHVsZVJlY29yZC5oIgogI2luY2x1ZGUgIkpTT05PYmplY3QuaCIKICNpbmNsdWRlICJK
U1Byb21pc2UuaCIKICNpbmNsdWRlICJKU1Byb21pc2VDb25zdHJ1Y3Rvci5oIgpAQCAtMTAzLDYg
KzEwNCw3IEBACiAjaW5jbHVkZSAiTWFwUHJvdG90eXBlLmgiCiAjaW5jbHVkZSAiTWF0aE9iamVj
dC5oIgogI2luY2x1ZGUgIk1pY3JvdGFzay5oIgorI2luY2x1ZGUgIk1vZHVsZUxvYWRlck9iamVj
dC5oIgogI2luY2x1ZGUgIk5hdGl2ZUVycm9yQ29uc3RydWN0b3IuaCIKICNpbmNsdWRlICJOYXRp
dmVFcnJvclByb3RvdHlwZS5oIgogI2luY2x1ZGUgIk51bGxHZXR0ZXJGdW5jdGlvbi5oIgpAQCAt
MTU2LDcgKzE1OCw3IEBAIG5hbWVzcGFjZSBKU0MgewogCiBjb25zdCBDbGFzc0luZm8gSlNHbG9i
YWxPYmplY3Q6OnNfaW5mbyA9IHsgIkdsb2JhbE9iamVjdCIsICZCYXNlOjpzX2luZm8sICZnbG9i
YWxPYmplY3RUYWJsZSwgQ1JFQVRFX01FVEhPRF9UQUJMRShKU0dsb2JhbE9iamVjdCkgfTsKIAot
Y29uc3QgR2xvYmFsT2JqZWN0TWV0aG9kVGFibGUgSlNHbG9iYWxPYmplY3Q6OnNfZ2xvYmFsT2Jq
ZWN0TWV0aG9kVGFibGUgPSB7ICZhbGxvd3NBY2Nlc3NGcm9tLCAmc3VwcG9ydHNQcm9maWxpbmcs
ICZzdXBwb3J0c1JpY2hTb3VyY2VJbmZvLCAmc2hvdWxkSW50ZXJydXB0U2NyaXB0LCAmamF2YVNj
cmlwdFJ1bnRpbWVGbGFncywgbnVsbHB0ciwgJnNob3VsZEludGVycnVwdFNjcmlwdEJlZm9yZVRp
bWVvdXQgfTsKK2NvbnN0IEdsb2JhbE9iamVjdE1ldGhvZFRhYmxlIEpTR2xvYmFsT2JqZWN0Ojpz
X2dsb2JhbE9iamVjdE1ldGhvZFRhYmxlID0geyAmYWxsb3dzQWNjZXNzRnJvbSwgJnN1cHBvcnRz
UHJvZmlsaW5nLCAmc3VwcG9ydHNSaWNoU291cmNlSW5mbywgJnNob3VsZEludGVycnVwdFNjcmlw
dCwgJmphdmFTY3JpcHRSdW50aW1lRmxhZ3MsIG51bGxwdHIsICZzaG91bGRJbnRlcnJ1cHRTY3Jp
cHRCZWZvcmVUaW1lb3V0LCBudWxscHRyLCBudWxscHRyLCBudWxscHRyLCBudWxscHRyIH07CiAK
IC8qIFNvdXJjZSBmb3IgSlNHbG9iYWxPYmplY3QubHV0LmgKIEBiZWdpbiBnbG9iYWxPYmplY3RU
YWJsZQpAQCAtMzM2LDEwICszMzgsOSBAQCB2b2lkIEpTR2xvYmFsT2JqZWN0Ojppbml0KFZNJiB2
bSkKICAgICBtX3JlZ0V4cFByb3RvdHlwZS5zZXQodm0sIHRoaXMsIFJlZ0V4cFByb3RvdHlwZTo6
Y3JlYXRlKHZtLCBSZWdFeHBQcm90b3R5cGU6OmNyZWF0ZVN0cnVjdHVyZSh2bSwgdGhpcywgbV9v
YmplY3RQcm90b3R5cGUuZ2V0KCkpLCBlbXB0eVJlZ2V4KSk7CiAgICAgbV9yZWdFeHBTdHJ1Y3R1
cmUuc2V0KHZtLCB0aGlzLCBSZWdFeHBPYmplY3Q6OmNyZWF0ZVN0cnVjdHVyZSh2bSwgdGhpcywg
bV9yZWdFeHBQcm90b3R5cGUuZ2V0KCkpKTsKICAgICBtX3JlZ0V4cE1hdGNoZXNBcnJheVN0cnVj
dHVyZS5zZXQodm0sIHRoaXMsIGNyZWF0ZVJlZ0V4cE1hdGNoZXNBcnJheVN0cnVjdHVyZSh2bSwg
KnRoaXMpKTsKLSAgICAKLSAgICBtX3Byb21pc2VQcm90b3R5cGUuc2V0KHZtLCB0aGlzLCBKU1By
b21pc2VQcm90b3R5cGU6OmNyZWF0ZShleGVjLCB0aGlzLCBKU1Byb21pc2VQcm90b3R5cGU6OmNy
ZWF0ZVN0cnVjdHVyZSh2bSwgdGhpcywgbV9vYmplY3RQcm90b3R5cGUuZ2V0KCkpKSk7Ci0gICAg
bV9wcm9taXNlU3RydWN0dXJlLnNldCh2bSwgdGhpcywgSlNQcm9taXNlOjpjcmVhdGVTdHJ1Y3R1
cmUodm0sIHRoaXMsIG1fcHJvbWlzZVByb3RvdHlwZS5nZXQoKSkpOwogCisgICAgbV9tb2R1bGVS
ZWNvcmRTdHJ1Y3R1cmUuc2V0KHZtLCB0aGlzLCBKU01vZHVsZVJlY29yZDo6Y3JlYXRlU3RydWN0
dXJlKHZtLCB0aGlzLCBtX29iamVjdFByb3RvdHlwZS5nZXQoKSkpOworICAgIAogI2lmIEVOQUJM
RShXRUJBU1NFTUJMWSkKICAgICBtX3dhc21Nb2R1bGVTdHJ1Y3R1cmUuc2V0KHZtLCB0aGlzLCBK
U1dBU01Nb2R1bGU6OmNyZWF0ZVN0cnVjdHVyZSh2bSwgdGhpcykpOwogI2VuZGlmCkBAIC0zOTcs
MTMgKzM5OCwxMSBAQCBtXyAjIyBsb3dlck5hbWUgIyMgUHJvdG90eXBlLT5wdXREaXJlY3RXaXRo
b3V0VHJhbnNpdGlvbih2bSwgdm0ucHJvcGVydHlOYW1lcy0+YwogICAgIG1fc3ludGF4RXJyb3JD
b25zdHJ1Y3Rvci5zZXQodm0sIHRoaXMsIE5hdGl2ZUVycm9yQ29uc3RydWN0b3I6OmNyZWF0ZSh2
bSwgdGhpcywgbmF0aXZlRXJyb3JTdHJ1Y3R1cmUsIG5hdGl2ZUVycm9yUHJvdG90eXBlU3RydWN0
dXJlLCBBU0NJSUxpdGVyYWwoIlN5bnRheEVycm9yIikpKTsKICAgICBtX3R5cGVFcnJvckNvbnN0
cnVjdG9yLnNldCh2bSwgdGhpcywgTmF0aXZlRXJyb3JDb25zdHJ1Y3Rvcjo6Y3JlYXRlKHZtLCB0
aGlzLCBuYXRpdmVFcnJvclN0cnVjdHVyZSwgbmF0aXZlRXJyb3JQcm90b3R5cGVTdHJ1Y3R1cmUs
IEFTQ0lJTGl0ZXJhbCgiVHlwZUVycm9yIikpKTsKICAgICBtX1VSSUVycm9yQ29uc3RydWN0b3Iu
c2V0KHZtLCB0aGlzLCBOYXRpdmVFcnJvckNvbnN0cnVjdG9yOjpjcmVhdGUodm0sIHRoaXMsIG5h
dGl2ZUVycm9yU3RydWN0dXJlLCBuYXRpdmVFcnJvclByb3RvdHlwZVN0cnVjdHVyZSwgQVNDSUlM
aXRlcmFsKCJVUklFcnJvciIpKSk7Ci0gICAgbV9wcm9taXNlQ29uc3RydWN0b3Iuc2V0KHZtLCB0
aGlzLCBKU1Byb21pc2VDb25zdHJ1Y3Rvcjo6Y3JlYXRlKHZtLCBKU1Byb21pc2VDb25zdHJ1Y3Rv
cjo6Y3JlYXRlU3RydWN0dXJlKHZtLCB0aGlzLCBtX2Z1bmN0aW9uUHJvdG90eXBlLmdldCgpKSwg
bV9wcm9taXNlUHJvdG90eXBlLmdldCgpKSk7CiAgICAgCiAgICAgbV9vYmplY3RQcm90b3R5cGUt
PnB1dERpcmVjdFdpdGhvdXRUcmFuc2l0aW9uKHZtLCB2bS5wcm9wZXJ0eU5hbWVzLT5jb25zdHJ1
Y3Rvciwgb2JqZWN0Q29uc3RydWN0b3IsIERvbnRFbnVtKTsKICAgICBtX2Z1bmN0aW9uUHJvdG90
eXBlLT5wdXREaXJlY3RXaXRob3V0VHJhbnNpdGlvbih2bSwgdm0ucHJvcGVydHlOYW1lcy0+Y29u
c3RydWN0b3IsIGZ1bmN0aW9uQ29uc3RydWN0b3IsIERvbnRFbnVtKTsKICAgICBtX2FycmF5UHJv
dG90eXBlLT5wdXREaXJlY3RXaXRob3V0VHJhbnNpdGlvbih2bSwgdm0ucHJvcGVydHlOYW1lcy0+
Y29uc3RydWN0b3IsIGFycmF5Q29uc3RydWN0b3IsIERvbnRFbnVtKTsKICAgICBtX3JlZ0V4cFBy
b3RvdHlwZS0+cHV0RGlyZWN0V2l0aG91dFRyYW5zaXRpb24odm0sIHZtLnByb3BlcnR5TmFtZXMt
PmNvbnN0cnVjdG9yLCBtX3JlZ0V4cENvbnN0cnVjdG9yLmdldCgpLCBEb250RW51bSk7Ci0gICAg
bV9wcm9taXNlUHJvdG90eXBlLT5wdXREaXJlY3RXaXRob3V0VHJhbnNpdGlvbih2bSwgdm0ucHJv
cGVydHlOYW1lcy0+Y29uc3RydWN0b3IsIG1fcHJvbWlzZUNvbnN0cnVjdG9yLmdldCgpLCBEb250
RW51bSk7CiAgICAgCiAgICAgcHV0RGlyZWN0V2l0aG91dFRyYW5zaXRpb24odm0sIHZtLnByb3Bl
cnR5TmFtZXMtPk9iamVjdCwgb2JqZWN0Q29uc3RydWN0b3IsIERvbnRFbnVtKTsKICAgICBwdXRE
aXJlY3RXaXRob3V0VHJhbnNpdGlvbih2bSwgdm0ucHJvcGVydHlOYW1lcy0+RnVuY3Rpb24sIGZ1
bmN0aW9uQ29uc3RydWN0b3IsIERvbnRFbnVtKTsKQEAgLTQxNSw3ICs0MTQsNiBAQCBtXyAjIyBs
b3dlck5hbWUgIyMgUHJvdG90eXBlLT5wdXREaXJlY3RXaXRob3V0VHJhbnNpdGlvbih2bSwgdm0u
cHJvcGVydHlOYW1lcy0+YwogICAgIHB1dERpcmVjdFdpdGhvdXRUcmFuc2l0aW9uKHZtLCB2bS5w
cm9wZXJ0eU5hbWVzLT5TeW50YXhFcnJvciwgbV9zeW50YXhFcnJvckNvbnN0cnVjdG9yLmdldCgp
LCBEb250RW51bSk7CiAgICAgcHV0RGlyZWN0V2l0aG91dFRyYW5zaXRpb24odm0sIHZtLnByb3Bl
cnR5TmFtZXMtPlR5cGVFcnJvciwgbV90eXBlRXJyb3JDb25zdHJ1Y3Rvci5nZXQoKSwgRG9udEVu
dW0pOwogICAgIHB1dERpcmVjdFdpdGhvdXRUcmFuc2l0aW9uKHZtLCB2bS5wcm9wZXJ0eU5hbWVz
LT5VUklFcnJvciwgbV9VUklFcnJvckNvbnN0cnVjdG9yLmdldCgpLCBEb250RW51bSk7Ci0gICAg
cHV0RGlyZWN0V2l0aG91dFRyYW5zaXRpb24odm0sIHZtLnByb3BlcnR5TmFtZXMtPlByb21pc2Us
IG1fcHJvbWlzZUNvbnN0cnVjdG9yLmdldCgpLCBEb250RW51bSk7CiAgICAgCiAgICAgCiAjZGVm
aW5lIFBVVF9DT05TVFJVQ1RPUl9GT1JfU0lNUExFX1RZUEUoY2FwaXRhbE5hbWUsIGxvd2VyTmFt
ZSwgcHJvcGVyTmFtZSwgaW5zdGFuY2VUeXBlLCBqc05hbWUpIFwKQEAgLTQ0MCw3ICs0MzgsOCBA
QCBwdXREaXJlY3RXaXRob3V0VHJhbnNpdGlvbih2bSwgdm0ucHJvcGVydHlOYW1lcy0+IGpzTmFt
ZSwgbG93ZXJOYW1lICMjIENvbnN0cnVjdAogICAgIHB1dERpcmVjdFdpdGhvdXRUcmFuc2l0aW9u
KHZtLCB2bS5wcm9wZXJ0eU5hbWVzLT5KU09OLCBKU09OT2JqZWN0OjpjcmVhdGUodm0sIEpTT05P
YmplY3Q6OmNyZWF0ZVN0cnVjdHVyZSh2bSwgdGhpcywgbV9vYmplY3RQcm90b3R5cGUuZ2V0KCkp
KSwgRG9udEVudW0pOwogICAgIHB1dERpcmVjdFdpdGhvdXRUcmFuc2l0aW9uKHZtLCB2bS5wcm9w
ZXJ0eU5hbWVzLT5NYXRoLCBNYXRoT2JqZWN0OjpjcmVhdGUodm0sIHRoaXMsIE1hdGhPYmplY3Q6
OmNyZWF0ZVN0cnVjdHVyZSh2bSwgdGhpcywgbV9vYmplY3RQcm90b3R5cGUuZ2V0KCkpKSwgRG9u
dEVudW0pOwogICAgIHB1dERpcmVjdFdpdGhvdXRUcmFuc2l0aW9uKHZtLCB2bS5wcm9wZXJ0eU5h
bWVzLT5SZWZsZWN0LCBSZWZsZWN0T2JqZWN0OjpjcmVhdGUodm0sIHRoaXMsIFJlZmxlY3RPYmpl
Y3Q6OmNyZWF0ZVN0cnVjdHVyZSh2bSwgdGhpcywgbV9vYmplY3RQcm90b3R5cGUuZ2V0KCkpKSwg
RG9udEVudW0pOwotICAgIAorICAgIHB1dERpcmVjdFdpdGhvdXRUcmFuc2l0aW9uKHZtLCB2bS5w
cm9wZXJ0eU5hbWVzLT5Mb2FkZXIsIE1vZHVsZUxvYWRlck9iamVjdDo6Y3JlYXRlKHZtLCB0aGlz
LCBNb2R1bGVMb2FkZXJPYmplY3Q6OmNyZWF0ZVN0cnVjdHVyZSh2bSwgdGhpcywgbV9vYmplY3RQ
cm90b3R5cGUuZ2V0KCkpKSwgRG9udEVudW0pOworCiAgICAgc3RkOjphcnJheTxJbnRlcm5hbEZ1
bmN0aW9uKiwgTlVNQkVSX09GX1RZUEVEX0FSUkFZX1RZUEVTPiB0eXBlZEFycmF5Q29uc3RydWN0
b3JzOwogICAgIHR5cGVkQXJyYXlDb25zdHJ1Y3RvcnNbdG9JbmRleChUeXBlSW50OCldID0gSlNJ
bnQ4QXJyYXlDb25zdHJ1Y3Rvcjo6Y3JlYXRlKHZtLCBKU0ludDhBcnJheUNvbnN0cnVjdG9yOjpj
cmVhdGVTdHJ1Y3R1cmUodm0sIHRoaXMsIG1fZnVuY3Rpb25Qcm90b3R5cGUuZ2V0KCkpLCBtX3R5
cGVkQXJyYXlzW3RvSW5kZXgoVHlwZUludDgpXS5wcm90b3R5cGUuZ2V0KCksIEFTQ0lJTGl0ZXJh
bCgiSW50OEFycmF5IikpOwogICAgIHR5cGVkQXJyYXlDb25zdHJ1Y3RvcnNbdG9JbmRleChUeXBl
SW50MTYpXSA9IEpTSW50MTZBcnJheUNvbnN0cnVjdG9yOjpjcmVhdGUodm0sIEpTSW50MTZBcnJh
eUNvbnN0cnVjdG9yOjpjcmVhdGVTdHJ1Y3R1cmUodm0sIHRoaXMsIG1fZnVuY3Rpb25Qcm90b3R5
cGUuZ2V0KCkpLCBtX3R5cGVkQXJyYXlzW3RvSW5kZXgoVHlwZUludDE2KV0ucHJvdG90eXBlLmdl
dCgpLCBBU0NJSUxpdGVyYWwoIkludDE2QXJyYXkiKSk7CkBAIC00OTEsNyArNDkwLDcgQEAgcHV0
RGlyZWN0V2l0aG91dFRyYW5zaXRpb24odm0sIHZtLnByb3BlcnR5TmFtZXMtPiBqc05hbWUsIGxv
d2VyTmFtZSAjIyBDb25zdHJ1Y3QKICAgICAgICAgR2xvYmFsUHJvcGVydHlJbmZvKHZtLnByb3Bl
cnR5TmFtZXMtPmFycmF5SXRlcmF0aW9uS2luZFZhbHVlUHJpdmF0ZU5hbWUsIGpzTnVtYmVyKEFy
cmF5SXRlcmF0ZVZhbHVlKSwgRG9udEVudW0gfCBEb250RGVsZXRlIHwgUmVhZE9ubHkpLAogICAg
ICAgICBHbG9iYWxQcm9wZXJ0eUluZm8odm0ucHJvcGVydHlOYW1lcy0+YXJyYXlJdGVyYXRpb25L
aW5kS2V5VmFsdWVQcml2YXRlTmFtZSwganNOdW1iZXIoQXJyYXlJdGVyYXRlS2V5VmFsdWUpLCBE
b250RW51bSB8IERvbnREZWxldGUgfCBSZWFkT25seSksCiAgICAgICAgIEdsb2JhbFByb3BlcnR5
SW5mbyh2bS5wcm9wZXJ0eU5hbWVzLT5idWlsdGluTmFtZXMoKS5zeW1ib2xJdGVyYXRvclByaXZh
dGVOYW1lKCksIFN5bWJvbDo6Y3JlYXRlKHZtLCBzdGF0aWNfY2FzdDxTeW1ib2xJbXBsJj4oKnZt
LnByb3BlcnR5TmFtZXMtPml0ZXJhdG9yU3ltYm9sLmltcGwoKSkpLCBEb250RW51bSB8IERvbnRE
ZWxldGUgfCBSZWFkT25seSksCi0gICAgICAgIEdsb2JhbFByb3BlcnR5SW5mbyh2bS5wcm9wZXJ0
eU5hbWVzLT5Qcm9taXNlUHJpdmF0ZU5hbWUsIG1fcHJvbWlzZUNvbnN0cnVjdG9yLmdldCgpLCBE
b250RW51bSB8IERvbnREZWxldGUgfCBSZWFkT25seSksCisgICAgICAgIEdsb2JhbFByb3BlcnR5
SW5mbyh2bS5wcm9wZXJ0eU5hbWVzLT5Qcm9taXNlUHJpdmF0ZU5hbWUsIHByb21pc2VDb25zdHJ1
Y3RvciwgRG9udEVudW0gfCBEb250RGVsZXRlIHwgUmVhZE9ubHkpLAogICAgICAgICBHbG9iYWxQ
cm9wZXJ0eUluZm8odm0ucHJvcGVydHlOYW1lcy0+cHJvbWlzZVBlbmRpbmdQcml2YXRlTmFtZSwg
anNOdW1iZXIoc3RhdGljX2Nhc3Q8dW5zaWduZWQ+KEpTUHJvbWlzZTo6U3RhdHVzOjpQZW5kaW5n
KSksIERvbnRFbnVtIHwgRG9udERlbGV0ZSB8IFJlYWRPbmx5KSwKICAgICAgICAgR2xvYmFsUHJv
cGVydHlJbmZvKHZtLnByb3BlcnR5TmFtZXMtPmJ1aWx0aW5OYW1lcygpLnByb21pc2VGdWxmaWxs
ZWRQcml2YXRlTmFtZSgpLCBqc051bWJlcihzdGF0aWNfY2FzdDx1bnNpZ25lZD4oSlNQcm9taXNl
OjpTdGF0dXM6OkZ1bGZpbGxlZCkpLCBEb250RW51bSB8IERvbnREZWxldGUgfCBSZWFkT25seSks
CiAgICAgICAgIEdsb2JhbFByb3BlcnR5SW5mbyh2bS5wcm9wZXJ0eU5hbWVzLT5idWlsdGluTmFt
ZXMoKS5wcm9taXNlUmVqZWN0ZWRQcml2YXRlTmFtZSgpLCBqc051bWJlcihzdGF0aWNfY2FzdDx1
bnNpZ25lZD4oSlNQcm9taXNlOjpTdGF0dXM6OlJlamVjdGVkKSksIERvbnRFbnVtIHwgRG9udERl
bGV0ZSB8IFJlYWRPbmx5KSwKQEAgLTUwNyw3ICs1MDYsMTAgQEAgcHV0RGlyZWN0V2l0aG91dFRy
YW5zaXRpb24odm0sIHZtLnByb3BlcnR5TmFtZXMtPiBqc05hbWUsIGxvd2VyTmFtZSAjIyBDb25z
dHJ1Y3QKICAgICAgICAgR2xvYmFsUHJvcGVydHlJbmZvKHZtLnByb3BlcnR5TmFtZXMtPmJ1aWx0
aW5OYW1lcygpLmNyZWF0ZVJlc29sdmluZ0Z1bmN0aW9uc1ByaXZhdGVOYW1lKCksIEpTRnVuY3Rp
b246OmNyZWF0ZUJ1aWx0aW5GdW5jdGlvbih2bSwgb3BlcmF0aW9uc1Byb21pc2VDcmVhdGVSZXNv
bHZpbmdGdW5jdGlvbnNDb2RlR2VuZXJhdG9yKHZtKSwgdGhpcyksIERvbnRFbnVtIHwgRG9udERl
bGV0ZSB8IFJlYWRPbmx5KSwKICAgICAgICAgR2xvYmFsUHJvcGVydHlJbmZvKHZtLnByb3BlcnR5
TmFtZXMtPmJ1aWx0aW5OYW1lcygpLnByb21pc2VSZWFjdGlvbkpvYlByaXZhdGVOYW1lKCksIEpT
RnVuY3Rpb246OmNyZWF0ZUJ1aWx0aW5GdW5jdGlvbih2bSwgb3BlcmF0aW9uc1Byb21pc2VQcm9t
aXNlUmVhY3Rpb25Kb2JDb2RlR2VuZXJhdG9yKHZtKSwgdGhpcyksIERvbnRFbnVtIHwgRG9udERl
bGV0ZSB8IFJlYWRPbmx5KSwKICAgICAgICAgR2xvYmFsUHJvcGVydHlJbmZvKHZtLnByb3BlcnR5
TmFtZXMtPmJ1aWx0aW5OYW1lcygpLnByb21pc2VSZXNvbHZlVGhlbmFibGVKb2JQcml2YXRlTmFt
ZSgpLCBKU0Z1bmN0aW9uOjpjcmVhdGVCdWlsdGluRnVuY3Rpb24odm0sIG9wZXJhdGlvbnNQcm9t
aXNlUHJvbWlzZVJlc29sdmVUaGVuYWJsZUpvYkNvZGVHZW5lcmF0b3Iodm0pLCB0aGlzKSwgRG9u
dEVudW0gfCBEb250RGVsZXRlIHwgUmVhZE9ubHkpLAorICAgICAgICBHbG9iYWxQcm9wZXJ0eUlu
Zm8odm0ucHJvcGVydHlOYW1lcy0+YnVpbHRpbk5hbWVzKCkubmV3UHJvbWlzZURlZmVycmVkUHJp
dmF0ZU5hbWUoKSwgbV9uZXdQcm9taXNlRGVmZXJyZWRGdW5jdGlvbi5nZXQoKSwgRG9udEVudW0g
fCBEb250RGVsZXRlIHwgUmVhZE9ubHkpLAorICAgICAgICBHbG9iYWxQcm9wZXJ0eUluZm8odm0u
cHJvcGVydHlOYW1lcy0+YnVpbHRpbk5hbWVzKCkucHJvbWlzZVRoZW5Qcml2YXRlTmFtZSgpLCBK
U0Z1bmN0aW9uOjpjcmVhdGVCdWlsdGluRnVuY3Rpb24odm0sIG9wZXJhdGlvbnNQcm9taXNlUHJv
bWlzZVRoZW5Db2RlR2VuZXJhdG9yKHZtKSwgdGhpcyksIERvbnRFbnVtIHwgRG9udERlbGV0ZSB8
IFJlYWRPbmx5KSwKICAgICAgICAgR2xvYmFsUHJvcGVydHlJbmZvKHZtLnByb3BlcnR5TmFtZXMt
PmJ1aWx0aW5OYW1lcygpLkluc3BlY3Rvckluc3RydW1lbnRhdGlvblByaXZhdGVOYW1lKCksIElu
c3BlY3Rvckluc3RydW1lbnRhdGlvbk9iamVjdDo6Y3JlYXRlKHZtLCB0aGlzLCBJbnNwZWN0b3JJ
bnN0cnVtZW50YXRpb25PYmplY3Q6OmNyZWF0ZVN0cnVjdHVyZSh2bSwgdGhpcywgbV9vYmplY3RQ
cm90b3R5cGUuZ2V0KCkpKSwgRG9udEVudW0gfCBEb250RGVsZXRlIHwgUmVhZE9ubHkpLAorICAg
ICAgICBHbG9iYWxQcm9wZXJ0eUluZm8odm0ucHJvcGVydHlOYW1lcy0+TWFwUHJpdmF0ZU5hbWUs
IG1hcENvbnN0cnVjdG9yLCBEb250RW51bSB8IERvbnREZWxldGUgfCBSZWFkT25seSksCiAgICAg
fTsKICAgICBhZGRTdGF0aWNHbG9iYWxzKHN0YXRpY0dsb2JhbHMsIFdURl9BUlJBWV9MRU5HVEgo
c3RhdGljR2xvYmFscykpOwogICAgIApAQCAtNzUwLDcgKzc1Miw2IEBAIHZvaWQgSlNHbG9iYWxP
YmplY3Q6OnZpc2l0Q2hpbGRyZW4oSlNDZWxsKiBjZWxsLCBTbG90VmlzaXRvciYgdmlzaXRvcikK
ICAgICB2aXNpdG9yLmFwcGVuZCgmdGhpc09iamVjdC0+bV90eXBlRXJyb3JDb25zdHJ1Y3Rvcik7
CiAgICAgdmlzaXRvci5hcHBlbmQoJnRoaXNPYmplY3QtPm1fVVJJRXJyb3JDb25zdHJ1Y3Rvcik7
CiAgICAgdmlzaXRvci5hcHBlbmQoJnRoaXNPYmplY3QtPm1fb2JqZWN0Q29uc3RydWN0b3IpOwot
ICAgIHZpc2l0b3IuYXBwZW5kKCZ0aGlzT2JqZWN0LT5tX3Byb21pc2VDb25zdHJ1Y3Rvcik7CiAK
ICAgICB2aXNpdG9yLmFwcGVuZCgmdGhpc09iamVjdC0+bV9udWxsR2V0dGVyRnVuY3Rpb24pOwog
ICAgIHZpc2l0b3IuYXBwZW5kKCZ0aGlzT2JqZWN0LT5tX251bGxTZXR0ZXJGdW5jdGlvbik7CkBA
IC03NzAsNyArNzcxLDYgQEAgdm9pZCBKU0dsb2JhbE9iamVjdDo6dmlzaXRDaGlsZHJlbihKU0Nl
bGwqIGNlbGwsIFNsb3RWaXNpdG9yJiB2aXNpdG9yKQogICAgIHZpc2l0b3IuYXBwZW5kKCZ0aGlz
T2JqZWN0LT5tX2FycmF5UHJvdG90eXBlKTsKICAgICB2aXNpdG9yLmFwcGVuZCgmdGhpc09iamVj
dC0+bV9lcnJvclByb3RvdHlwZSk7CiAgICAgdmlzaXRvci5hcHBlbmQoJnRoaXNPYmplY3QtPm1f
aXRlcmF0b3JQcm90b3R5cGUpOwotICAgIHZpc2l0b3IuYXBwZW5kKCZ0aGlzT2JqZWN0LT5tX3By
b21pc2VQcm90b3R5cGUpOwogCiAgICAgdmlzaXRvci5hcHBlbmQoJnRoaXNPYmplY3QtPm1fZGVi
dWdnZXJTY29wZVN0cnVjdHVyZSk7CiAgICAgdmlzaXRvci5hcHBlbmQoJnRoaXNPYmplY3QtPm1f
d2l0aFNjb3BlU3RydWN0dXJlKTsKQEAgLTgwMSwxMCArODAxLDEwIEBAIHZvaWQgSlNHbG9iYWxP
YmplY3Q6OnZpc2l0Q2hpbGRyZW4oSlNDZWxsKiBjZWxsLCBTbG90VmlzaXRvciYgdmlzaXRvcikK
ICAgICB2aXNpdG9yLmFwcGVuZCgmdGhpc09iamVjdC0+bV9zeW1ib2xPYmplY3RTdHJ1Y3R1cmUp
OwogICAgIHZpc2l0b3IuYXBwZW5kKCZ0aGlzT2JqZWN0LT5tX3JlZ0V4cFN0cnVjdHVyZSk7CiAg
ICAgdmlzaXRvci5hcHBlbmQoJnRoaXNPYmplY3QtPm1fcmVnRXhwTWF0Y2hlc0FycmF5U3RydWN0
dXJlKTsKKyAgICB2aXNpdG9yLmFwcGVuZCgmdGhpc09iamVjdC0+bV9tb2R1bGVSZWNvcmRTdHJ1
Y3R1cmUpOwogICAgIHZpc2l0b3IuYXBwZW5kKCZ0aGlzT2JqZWN0LT5tX2NvbnNvbGVTdHJ1Y3R1
cmUpOwogICAgIHZpc2l0b3IuYXBwZW5kKCZ0aGlzT2JqZWN0LT5tX2RvbGxhclZNU3RydWN0dXJl
KTsKICAgICB2aXNpdG9yLmFwcGVuZCgmdGhpc09iamVjdC0+bV9pbnRlcm5hbEZ1bmN0aW9uU3Ry
dWN0dXJlKTsKLSAgICB2aXNpdG9yLmFwcGVuZCgmdGhpc09iamVjdC0+bV9wcm9taXNlU3RydWN0
dXJlKTsKICNpZiBFTkFCTEUoV0VCQVNTRU1CTFkpCiAgICAgdmlzaXRvci5hcHBlbmQoJnRoaXNP
YmplY3QtPm1fd2FzbU1vZHVsZVN0cnVjdHVyZSk7CiAjZW5kaWYKZGlmZiAtLWdpdCBhL1NvdXJj
ZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL0pTR2xvYmFsT2JqZWN0LmggYi9Tb3VyY2UvSmF2YVNj
cmlwdENvcmUvcnVudGltZS9KU0dsb2JhbE9iamVjdC5oCmluZGV4IDk5ODZiY2Y2MjQ1ZTJjYzQ2
ODIwYjEzMTAyYjIzNDI5MDBlYzNkN2IuLmFmMTRhZDA1MDgzZTg4ODkwODFiYmRjMDRlMDEzNDBl
Y2M5YmMzOGQgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL0pTR2xv
YmFsT2JqZWN0LmgKKysrIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvSlNHbG9iYWxP
YmplY3QuaApAQCAtNzAsNiArNzAsNyBAQCBjbGFzcyBHZXR0ZXJTZXR0ZXI7CiBjbGFzcyBHbG9i
YWxDb2RlQmxvY2s7CiBjbGFzcyBJbnB1dEN1cnNvcjsKIGNsYXNzIEpTR2xvYmFsT2JqZWN0RGVi
dWdnYWJsZTsKK2NsYXNzIEpTUHJvbWlzZTsKIGNsYXNzIEpTUHJvbWlzZUNvbnN0cnVjdG9yOwog
Y2xhc3MgSlNQcm9taXNlUHJvdG90eXBlOwogY2xhc3MgSlNTdGFjazsKQEAgLTk5LDYgKzEwMCw3
IEBAIHN0cnVjdCBIYXNoVGFibGU7CiAgICAgbWFjcm8oQm9vbGVhbiwgYm9vbGVhbiwgYm9vbGVh
bk9iamVjdCwgQm9vbGVhbk9iamVjdCwgQm9vbGVhbikgXAogICAgIG1hY3JvKE51bWJlciwgbnVt
YmVyLCBudW1iZXJPYmplY3QsIE51bWJlck9iamVjdCwgTnVtYmVyKSBcCiAgICAgbWFjcm8oRXJy
b3IsIGVycm9yLCBlcnJvciwgRXJyb3JJbnN0YW5jZSwgRXJyb3IpIFwKKyAgICBtYWNybyhKU1By
b21pc2UsIHByb21pc2UsIHByb21pc2UsIEpTUHJvbWlzZSwgUHJvbWlzZSkgXAogICAgIG1hY3Jv
KEpTQXJyYXlCdWZmZXIsIGFycmF5QnVmZmVyLCBhcnJheUJ1ZmZlciwgSlNBcnJheUJ1ZmZlciwg
QXJyYXlCdWZmZXIpIFwKICAgICBERUZJTkVfU1RBTkRBUkRfQlVJTFRJTihtYWNybywgV2Vha01h
cCwgd2Vha01hcCkgXAogICAgIERFRklORV9TVEFOREFSRF9CVUlMVElOKG1hY3JvLCBXZWFrU2V0
LCB3ZWFrU2V0KSBcCkBAIC0xNTAsNiArMTUyLDE4IEBAIHN0cnVjdCBHbG9iYWxPYmplY3RNZXRo
b2RUYWJsZSB7CiAKICAgICB0eXBlZGVmIGJvb2wgKCpTaG91bGRJbnRlcnJ1cHRTY3JpcHRCZWZv
cmVUaW1lb3V0UHRyKShjb25zdCBKU0dsb2JhbE9iamVjdCopOwogICAgIFNob3VsZEludGVycnVw
dFNjcmlwdEJlZm9yZVRpbWVvdXRQdHIgc2hvdWxkSW50ZXJydXB0U2NyaXB0QmVmb3JlVGltZW91
dDsKKworICAgIHR5cGVkZWYgSlNWYWx1ZSAoKkxvYWRlclJlc29sdmVQdHIpKEpTR2xvYmFsT2Jq
ZWN0KiwgRXhlY1N0YXRlKiwgSlNWYWx1ZSwgSlNWYWx1ZSk7CisgICAgTG9hZGVyUmVzb2x2ZVB0
ciBsb2FkZXJSZXNvbHZlOworCisgICAgdHlwZWRlZiBKU1ZhbHVlICgqTG9hZGVyRmV0Y2hQdHIp
KEpTR2xvYmFsT2JqZWN0KiwgRXhlY1N0YXRlKiwgSlNWYWx1ZSk7CisgICAgTG9hZGVyRmV0Y2hQ
dHIgbG9hZGVyRmV0Y2g7CisKKyAgICB0eXBlZGVmIEpTVmFsdWUgKCpMb2FkZXJUcmFuc2xhdGVQ
dHIpKEpTR2xvYmFsT2JqZWN0KiwgRXhlY1N0YXRlKiwgSlNWYWx1ZSwgSlNWYWx1ZSk7CisgICAg
TG9hZGVyVHJhbnNsYXRlUHRyIGxvYWRlclRyYW5zbGF0ZTsKKworICAgIHR5cGVkZWYgSlNWYWx1
ZSAoKkxvYWRlckluc3RhbnRpYXRlUHRyKShKU0dsb2JhbE9iamVjdCosIEV4ZWNTdGF0ZSosIEpT
VmFsdWUsIEpTVmFsdWUpOworICAgIExvYWRlckluc3RhbnRpYXRlUHRyIGxvYWRlckluc3RhbnRp
YXRlOwogfTsKIAogY2xhc3MgSlNHbG9iYWxPYmplY3QgOiBwdWJsaWMgSlNTZWdtZW50ZWRWYXJp
YWJsZU9iamVjdCB7CkBAIC0xODMsNyArMTk3LDYgQEAgY2xhc3MgSlNHbG9iYWxPYmplY3QgOiBw
dWJsaWMgSlNTZWdtZW50ZWRWYXJpYWJsZU9iamVjdCB7CiAgICAgV3JpdGVCYXJyaWVyPE5hdGl2
ZUVycm9yQ29uc3RydWN0b3I+IG1fc3ludGF4RXJyb3JDb25zdHJ1Y3RvcjsKICAgICBXcml0ZUJh
cnJpZXI8TmF0aXZlRXJyb3JDb25zdHJ1Y3Rvcj4gbV90eXBlRXJyb3JDb25zdHJ1Y3RvcjsKICAg
ICBXcml0ZUJhcnJpZXI8TmF0aXZlRXJyb3JDb25zdHJ1Y3Rvcj4gbV9VUklFcnJvckNvbnN0cnVj
dG9yOwotICAgIFdyaXRlQmFycmllcjxKU1Byb21pc2VDb25zdHJ1Y3Rvcj4gbV9wcm9taXNlQ29u
c3RydWN0b3I7CiAgICAgV3JpdGVCYXJyaWVyPE9iamVjdENvbnN0cnVjdG9yPiBtX29iamVjdENv
bnN0cnVjdG9yOwogCiAgICAgV3JpdGVCYXJyaWVyPE51bGxHZXR0ZXJGdW5jdGlvbj4gbV9udWxs
R2V0dGVyRnVuY3Rpb247CkBAIC0yMDUsNyArMjE4LDYgQEAgY2xhc3MgSlNHbG9iYWxPYmplY3Qg
OiBwdWJsaWMgSlNTZWdtZW50ZWRWYXJpYWJsZU9iamVjdCB7CiAgICAgV3JpdGVCYXJyaWVyPEFy
cmF5UHJvdG90eXBlPiBtX2FycmF5UHJvdG90eXBlOwogICAgIFdyaXRlQmFycmllcjxSZWdFeHBQ
cm90b3R5cGU+IG1fcmVnRXhwUHJvdG90eXBlOwogICAgIFdyaXRlQmFycmllcjxJdGVyYXRvclBy
b3RvdHlwZT4gbV9pdGVyYXRvclByb3RvdHlwZTsKLSAgICBXcml0ZUJhcnJpZXI8SlNQcm9taXNl
UHJvdG90eXBlPiBtX3Byb21pc2VQcm90b3R5cGU7CiAKICAgICBXcml0ZUJhcnJpZXI8U3RydWN0
dXJlPiBtX2RlYnVnZ2VyU2NvcGVTdHJ1Y3R1cmU7CiAgICAgV3JpdGVCYXJyaWVyPFN0cnVjdHVy
ZT4gbV93aXRoU2NvcGVTdHJ1Y3R1cmU7CkBAIC0yNDEsNyArMjUzLDcgQEAgY2xhc3MgSlNHbG9i
YWxPYmplY3QgOiBwdWJsaWMgSlNTZWdtZW50ZWRWYXJpYWJsZU9iamVjdCB7CiAgICAgV3JpdGVC
YXJyaWVyPFN0cnVjdHVyZT4gbV9pbnRlcm5hbEZ1bmN0aW9uU3RydWN0dXJlOwogICAgIFdyaXRl
QmFycmllcjxTdHJ1Y3R1cmU+IG1faXRlcmF0b3JSZXN1bHRTdHJ1Y3R1cmU7CiAgICAgV3JpdGVC
YXJyaWVyPFN0cnVjdHVyZT4gbV9yZWdFeHBNYXRjaGVzQXJyYXlTdHJ1Y3R1cmU7Ci0gICAgV3Jp
dGVCYXJyaWVyPFN0cnVjdHVyZT4gbV9wcm9taXNlU3RydWN0dXJlOworICAgIFdyaXRlQmFycmll
cjxTdHJ1Y3R1cmU+IG1fbW9kdWxlUmVjb3JkU3RydWN0dXJlOwogI2lmIEVOQUJMRShXRUJBU1NF
TUJMWSkKICAgICBXcml0ZUJhcnJpZXI8U3RydWN0dXJlPiBtX3dhc21Nb2R1bGVTdHJ1Y3R1cmU7
CiAjZW5kaWYKQEAgLTM4Niw3ICszOTgsNiBAQCBjbGFzcyBKU0dsb2JhbE9iamVjdCA6IHB1Ymxp
YyBKU1NlZ21lbnRlZFZhcmlhYmxlT2JqZWN0IHsKICAgICBOYXRpdmVFcnJvckNvbnN0cnVjdG9y
KiBzeW50YXhFcnJvckNvbnN0cnVjdG9yKCkgY29uc3QgeyByZXR1cm4gbV9zeW50YXhFcnJvckNv
bnN0cnVjdG9yLmdldCgpOyB9CiAgICAgTmF0aXZlRXJyb3JDb25zdHJ1Y3RvciogdHlwZUVycm9y
Q29uc3RydWN0b3IoKSBjb25zdCB7IHJldHVybiBtX3R5cGVFcnJvckNvbnN0cnVjdG9yLmdldCgp
OyB9CiAgICAgTmF0aXZlRXJyb3JDb25zdHJ1Y3RvciogVVJJRXJyb3JDb25zdHJ1Y3RvcigpIGNv
bnN0IHsgcmV0dXJuIG1fVVJJRXJyb3JDb25zdHJ1Y3Rvci5nZXQoKTsgfQotICAgIEpTUHJvbWlz
ZUNvbnN0cnVjdG9yKiBwcm9taXNlQ29uc3RydWN0b3IoKSBjb25zdCB7IHJldHVybiBtX3Byb21p
c2VDb25zdHJ1Y3Rvci5nZXQoKTsgfQogCiAgICAgTnVsbEdldHRlckZ1bmN0aW9uKiBudWxsR2V0
dGVyRnVuY3Rpb24oKSBjb25zdCB7IHJldHVybiBtX251bGxHZXR0ZXJGdW5jdGlvbi5nZXQoKTsg
fQogICAgIE51bGxTZXR0ZXJGdW5jdGlvbiogbnVsbFNldHRlckZ1bmN0aW9uKCkgY29uc3QgeyBy
ZXR1cm4gbV9udWxsU2V0dGVyRnVuY3Rpb24uZ2V0KCk7IH0KQEAgLTQxOCw3ICs0MjksNiBAQCBj
bGFzcyBKU0dsb2JhbE9iamVjdCA6IHB1YmxpYyBKU1NlZ21lbnRlZFZhcmlhYmxlT2JqZWN0IHsK
ICAgICBSZWdFeHBQcm90b3R5cGUqIHJlZ0V4cFByb3RvdHlwZSgpIGNvbnN0IHsgcmV0dXJuIG1f
cmVnRXhwUHJvdG90eXBlLmdldCgpOyB9CiAgICAgRXJyb3JQcm90b3R5cGUqIGVycm9yUHJvdG90
eXBlKCkgY29uc3QgeyByZXR1cm4gbV9lcnJvclByb3RvdHlwZS5nZXQoKTsgfQogICAgIEl0ZXJh
dG9yUHJvdG90eXBlKiBpdGVyYXRvclByb3RvdHlwZSgpIGNvbnN0IHsgcmV0dXJuIG1faXRlcmF0
b3JQcm90b3R5cGUuZ2V0KCk7IH0KLSAgICBKU1Byb21pc2VQcm90b3R5cGUqIHByb21pc2VQcm90
b3R5cGUoKSBjb25zdCB7IHJldHVybiBtX3Byb21pc2VQcm90b3R5cGUuZ2V0KCk7IH0KIAogICAg
IFN0cnVjdHVyZSogZGVidWdnZXJTY29wZVN0cnVjdHVyZSgpIGNvbnN0IHsgcmV0dXJuIG1fZGVi
dWdnZXJTY29wZVN0cnVjdHVyZS5nZXQoKTsgfQogICAgIFN0cnVjdHVyZSogd2l0aFNjb3BlU3Ry
dWN0dXJlKCkgY29uc3QgeyByZXR1cm4gbV93aXRoU2NvcGVTdHJ1Y3R1cmUuZ2V0KCk7IH0KQEAg
LTQ3NSw3ICs0ODUsNyBAQCBjbGFzcyBKU0dsb2JhbE9iamVjdCA6IHB1YmxpYyBKU1NlZ21lbnRl
ZFZhcmlhYmxlT2JqZWN0IHsKICAgICBTdHJ1Y3R1cmUqIGl0ZXJhdG9yUmVzdWx0U3RydWN0dXJl
KCkgY29uc3QgeyByZXR1cm4gbV9pdGVyYXRvclJlc3VsdFN0cnVjdHVyZS5nZXQoKTsgfQogICAg
IHN0YXRpYyBwdHJkaWZmX3QgaXRlcmF0b3JSZXN1bHRTdHJ1Y3R1cmVPZmZzZXQoKSB7IHJldHVy
biBPQkpFQ1RfT0ZGU0VUT0YoSlNHbG9iYWxPYmplY3QsIG1faXRlcmF0b3JSZXN1bHRTdHJ1Y3R1
cmUpOyB9CiAgICAgU3RydWN0dXJlKiByZWdFeHBNYXRjaGVzQXJyYXlTdHJ1Y3R1cmUoKSBjb25z
dCB7IHJldHVybiBtX3JlZ0V4cE1hdGNoZXNBcnJheVN0cnVjdHVyZS5nZXQoKTsgfQotICAgIFN0
cnVjdHVyZSogcHJvbWlzZVN0cnVjdHVyZSgpIGNvbnN0IHsgcmV0dXJuIG1fcHJvbWlzZVN0cnVj
dHVyZS5nZXQoKTsgfQorICAgIFN0cnVjdHVyZSogbW9kdWxlUmVjb3JkU3RydWN0dXJlKCkgY29u
c3QgeyByZXR1cm4gbV9tb2R1bGVSZWNvcmRTdHJ1Y3R1cmUuZ2V0KCk7IH0KICNpZiBFTkFCTEUo
V0VCQVNTRU1CTFkpCiAgICAgU3RydWN0dXJlKiB3YXNtTW9kdWxlU3RydWN0dXJlKCkgY29uc3Qg
eyByZXR1cm4gbV93YXNtTW9kdWxlU3RydWN0dXJlLmdldCgpOyB9CiAjZW5kaWYKZGlmZiAtLWdp
dCBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL0pTTW9kdWxlUmVjb3JkLmNwcCBiL1Nv
dXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL0pTTW9kdWxlUmVjb3JkLmNwcApuZXcgZmlsZSBt
b2RlIDEwMDY0NAppbmRleCAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
Li4zYWI4OTMzNWY3NWYyY2FiMTJjODk4NzFmYmU3OWUwZGVlNzg2NGViCi0tLSAvZGV2L251bGwK
KysrIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvSlNNb2R1bGVSZWNvcmQuY3BwCkBA
IC0wLDAgKzEsMTA1IEBACisvKgorICogQ29weXJpZ2h0IChDKSAyMDE1IEFwcGxlIEluYy4gQWxs
IHJpZ2h0cyByZXNlcnZlZC4KKyAqCisgKiBSZWRpc3RyaWJ1dGlvbiBhbmQgdXNlIGluIHNvdXJj
ZSBhbmQgYmluYXJ5IGZvcm1zLCB3aXRoIG9yIHdpdGhvdXQKKyAqIG1vZGlmaWNhdGlvbiwgYXJl
IHBlcm1pdHRlZCBwcm92aWRlZCB0aGF0IHRoZSBmb2xsb3dpbmcgY29uZGl0aW9ucworICogYXJl
IG1ldDoKKyAqIDEuIFJlZGlzdHJpYnV0aW9ucyBvZiBzb3VyY2UgY29kZSBtdXN0IHJldGFpbiB0
aGUgYWJvdmUgY29weXJpZ2h0CisgKiAgICBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25z
IGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIuCisgKiAyLiBSZWRpc3RyaWJ1dGlvbnMgaW4g
YmluYXJ5IGZvcm0gbXVzdCByZXByb2R1Y2UgdGhlIGFib3ZlIGNvcHlyaWdodAorICogICAgbm90
aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVy
IGluIHRoZQorICogICAgZG9jdW1lbnRhdGlvbiBhbmQvb3Igb3RoZXIgbWF0ZXJpYWxzIHByb3Zp
ZGVkIHdpdGggdGhlIGRpc3RyaWJ1dGlvbi4KKyAqCisgKiBUSElTIFNPRlRXQVJFIElTIFBST1ZJ
REVEIEJZIEFQUExFIElOQy4gYGBBUyBJUycnIEFORCBBTlkKKyAqIEVYUFJFU1MgT1IgSU1QTElF
RCBXQVJSQU5USUVTLCBJTkNMVURJTkcsIEJVVCBOT1QgTElNSVRFRCBUTywgVEhFCisgKiBJTVBM
SUVEIFdBUlJBTlRJRVMgT0YgTUVSQ0hBTlRBQklMSVRZIEFORCBGSVRORVNTIEZPUiBBIFBBUlRJ
Q1VMQVIKKyAqIFBVUlBPU0UgQVJFIERJU0NMQUlNRUQuICBJTiBOTyBFVkVOVCBTSEFMTCBBUFBM
RSBJTkMuIE9SCisgKiBDT05UUklCVVRPUlMgQkUgTElBQkxFIEZPUiBBTlkgRElSRUNULCBJTkRJ
UkVDVCwgSU5DSURFTlRBTCwgU1BFQ0lBTCwKKyAqIEVYRU1QTEFSWSwgT1IgQ09OU0VRVUVOVElB
TCBEQU1BR0VTIChJTkNMVURJTkcsIEJVVCBOT1QgTElNSVRFRCBUTywKKyAqIFBST0NVUkVNRU5U
IE9GIFNVQlNUSVRVVEUgR09PRFMgT1IgU0VSVklDRVM7IExPU1MgT0YgVVNFLCBEQVRBLCBPUgor
ICogUFJPRklUUzsgT1IgQlVTSU5FU1MgSU5URVJSVVBUSU9OKSBIT1dFVkVSIENBVVNFRCBBTkQg
T04gQU5ZIFRIRU9SWQorICogT0YgTElBQklMSVRZLCBXSEVUSEVSIElOIENPTlRSQUNULCBTVFJJ
Q1QgTElBQklMSVRZLCBPUiBUT1JUCisgKiAoSU5DTFVESU5HIE5FR0xJR0VOQ0UgT1IgT1RIRVJX
SVNFKSBBUklTSU5HIElOIEFOWSBXQVkgT1VUIE9GIFRIRSBVU0UKKyAqIE9GIFRISVMgU09GVFdB
UkUsIEVWRU4gSUYgQURWSVNFRCBPRiBUSEUgUE9TU0lCSUxJVFkgT0YgU1VDSCBEQU1BR0UuIAor
ICovCisKKyNpbmNsdWRlICJjb25maWcuaCIKKyNpbmNsdWRlICJKU01vZHVsZVJlY29yZC5oIgor
CisjaW5jbHVkZSAiSWRlbnRpZmllcklubGluZXMuaCIKKyNpbmNsdWRlICJKU0NKU1ZhbHVlSW5s
aW5lcy5oIgorI2luY2x1ZGUgIkpTQ2VsbElubGluZXMuaCIKKyNpbmNsdWRlICJTdHJ1Y3R1cmVJ
bmxpbmVzLmgiCisKK25hbWVzcGFjZSBKU0MgeworCitjb25zdCBDbGFzc0luZm8gSlNNb2R1bGVS
ZWNvcmQ6OnNfaW5mbyA9IHsgIk1vZHVsZVJlY29yZCIsICZCYXNlOjpzX2luZm8sIDAsIENSRUFU
RV9NRVRIT0RfVEFCTEUoSlNNb2R1bGVSZWNvcmQpIH07CisKK3ZvaWQgSlNNb2R1bGVSZWNvcmQ6
OmRlc3Ryb3koSlNDZWxsKiBjZWxsKQoreworICAgIEpTTW9kdWxlUmVjb3JkKiB0aGlzT2JqZWN0
ID0ganNDYXN0PEpTTW9kdWxlUmVjb3JkKj4oY2VsbCk7CisgICAgdGhpc09iamVjdC0+SlNNb2R1
bGVSZWNvcmQ6On5KU01vZHVsZVJlY29yZCgpOworfQorCithdXRvIEpTTW9kdWxlUmVjb3JkOjpF
eHBvcnRFbnRyeTo6Y3JlYXRlTG9jYWwoY29uc3QgSWRlbnRpZmllciYgZXhwb3J0TmFtZSwgY29u
c3QgSWRlbnRpZmllciYgbG9jYWxOYW1lLCBjb25zdCBWYXJpYWJsZUVudmlyb25tZW50RW50cnkm
IHZhcmlhYmxlKSAtPiBFeHBvcnRFbnRyeQoreworICAgIHJldHVybiBFeHBvcnRFbnRyeSB7IFR5
cGU6OkxvY2FsLCBleHBvcnROYW1lLCBJZGVudGlmaWVyKCksIElkZW50aWZpZXIoKSwgbG9jYWxO
YW1lLCB2YXJpYWJsZSB9OworfQorCithdXRvIEpTTW9kdWxlUmVjb3JkOjpFeHBvcnRFbnRyeTo6
Y3JlYXRlTmFtZXNwYWNlKGNvbnN0IElkZW50aWZpZXImIGV4cG9ydE5hbWUsIGNvbnN0IElkZW50
aWZpZXImIG1vZHVsZU5hbWUpIC0+IEV4cG9ydEVudHJ5Cit7CisgICAgcmV0dXJuIEV4cG9ydEVu
dHJ5IHsgVHlwZTo6TmFtZXNwYWNlLCBleHBvcnROYW1lLCBtb2R1bGVOYW1lLCBJZGVudGlmaWVy
KCksIElkZW50aWZpZXIoKSwgVmFyaWFibGVFbnZpcm9ubWVudEVudHJ5KCkgfTsKK30KKworYXV0
byBKU01vZHVsZVJlY29yZDo6RXhwb3J0RW50cnk6OmNyZWF0ZUluZGlyZWN0KGNvbnN0IElkZW50
aWZpZXImIGV4cG9ydE5hbWUsIGNvbnN0IElkZW50aWZpZXImIGltcG9ydE5hbWUsIGNvbnN0IElk
ZW50aWZpZXImIG1vZHVsZU5hbWUpIC0+IEV4cG9ydEVudHJ5Cit7CisgICAgcmV0dXJuIEV4cG9y
dEVudHJ5IHsgVHlwZTo6SW5kaXJlY3QsIGV4cG9ydE5hbWUsIG1vZHVsZU5hbWUsIGltcG9ydE5h
bWUsIElkZW50aWZpZXIoKSwgVmFyaWFibGVFbnZpcm9ubWVudEVudHJ5KCkgfTsKK30KKworc3Rh
dGljIFN0cmluZyBwcmludGFibGVOYW1lKGNvbnN0IFJlZlB0cjxVbmlxdWVkU3RyaW5nSW1wbD4m
IHVpZCkKK3sKKyAgICBpZiAodWlkLT5pc1N5bWJvbCgpKQorICAgICAgICByZXR1cm4gdWlkLmdl
dCgpOworICAgIHJldHVybiBXVEY6Om1ha2VTdHJpbmcoIiciLCBTdHJpbmcodWlkLmdldCgpKSwg
IiciKTsKK30KKworc3RhdGljIFN0cmluZyBwcmludGFibGVOYW1lKGNvbnN0IElkZW50aWZpZXIm
IGlkZW50KQoreworICAgIHJldHVybiBwcmludGFibGVOYW1lKGlkZW50LmltcGwoKSk7Cit9CisK
Kwordm9pZCBKU01vZHVsZVJlY29yZDo6ZHVtcCgpCit7CisgICAgZGF0YUxvZygiXG5BbmFseXpp
bmcgTW9kdWxlUmVjb3JkXG4iKTsKKworICAgIGRhdGFMb2coIiAgICBEZXBlbmRlbmNpZXM6ICIs
IG1fcmVxdWVzdGVkTW9kdWxlcy5zaXplKCksICIgbW9kdWxlc1xuIik7CisgICAgZm9yIChjb25z
dCBhdXRvJiBtb2R1bGVOYW1lIDogbV9yZXF1ZXN0ZWRNb2R1bGVzKQorICAgICAgICBkYXRhTG9n
KCIgICAgICBtb2R1bGUoIiwgcHJpbnRhYmxlTmFtZShtb2R1bGVOYW1lKSwgIilcbiIpOworCisg
ICAgZGF0YUxvZygiICAgIEltcG9ydDogIiwgbV9pbXBvcnRFbnRyaWVzLnNpemUoKSwgIiBlbnRy
aWVzXG4iKTsKKyAgICBmb3IgKGNvbnN0IGF1dG8mIHBhaXIgOiBtX2ltcG9ydEVudHJpZXMpCisg
ICAgICAgIGRhdGFMb2coIiAgICAgIGltcG9ydCgiLCBwcmludGFibGVOYW1lKHBhaXIudmFsdWUu
aW1wb3J0TmFtZSksICIpLCBsb2NhbCgiLCBwcmludGFibGVOYW1lKHBhaXIudmFsdWUubG9jYWxO
YW1lKSwgIiksIG1vZHVsZSgiLCBwcmludGFibGVOYW1lKHBhaXIudmFsdWUubW9kdWxlUmVxdWVz
dCksICIpXG4iKTsKKworICAgIGRhdGFMb2coIiAgICBFeHBvcnQ6ICIsIG1fZXhwb3J0RW50cmll
cy5zaXplKCksICIgZW50cmllc1xuIik7CisgICAgZm9yIChjb25zdCBhdXRvJiBwYWlyIDogbV9l
eHBvcnRFbnRyaWVzKSB7CisgICAgICAgIGNvbnN0IEV4cG9ydEVudHJ5JiBlbnRyeSA9IHBhaXIu
dmFsdWU7CisgICAgICAgIHN3aXRjaCAoZW50cnkudHlwZSkgeworICAgICAgICBjYXNlIEV4cG9y
dEVudHJ5OjpUeXBlOjpMb2NhbDoKKyAgICAgICAgICAgIGRhdGFMb2coIiAgICAgIFtMb2NhbF0g
IiwgImV4cG9ydCgiLCBwcmludGFibGVOYW1lKGVudHJ5LmV4cG9ydE5hbWUpLCAiKSwgbG9jYWwo
IiwgcHJpbnRhYmxlTmFtZShlbnRyeS5sb2NhbE5hbWUpLCAiKVxuIik7CisgICAgICAgICAgICBi
cmVhazsKKworICAgICAgICBjYXNlIEV4cG9ydEVudHJ5OjpUeXBlOjpOYW1lc3BhY2U6CisgICAg
ICAgICAgICBkYXRhTG9nKCIgICAgICBbTmFtZXNwYWNlXSAiLCAiZXhwb3J0KCIsIHByaW50YWJs
ZU5hbWUoZW50cnkuZXhwb3J0TmFtZSksICIpLCBtb2R1bGUoIiwgcHJpbnRhYmxlTmFtZShlbnRy
eS5tb2R1bGVOYW1lKSwgIilcbiIpOworICAgICAgICAgICAgYnJlYWs7CisKKyAgICAgICAgY2Fz
ZSBFeHBvcnRFbnRyeTo6VHlwZTo6SW5kaXJlY3Q6CisgICAgICAgICAgICBkYXRhTG9nKCIgICAg
ICBbSW5kaXJlY3RdICIsICJleHBvcnQoIiwgcHJpbnRhYmxlTmFtZShlbnRyeS5leHBvcnROYW1l
KSwgIiksIGltcG9ydCgiLCBwcmludGFibGVOYW1lKGVudHJ5LmltcG9ydE5hbWUpLCAiKSwgbW9k
dWxlKCIsIHByaW50YWJsZU5hbWUoZW50cnkubW9kdWxlTmFtZSksICIpXG4iKTsKKyAgICAgICAg
ICAgIGJyZWFrOworICAgICAgICB9CisgICAgfQorICAgIGZvciAoY29uc3QgYXV0byYgbW9kdWxl
TmFtZSA6IG1fc3RhckV4cG9ydEVudHJpZXMpCisgICAgICAgIGRhdGFMb2coIiAgICAgIFtTdGFy
XSBtb2R1bGUoIiwgcHJpbnRhYmxlTmFtZShtb2R1bGVOYW1lLmdldCgpKSwgIilcbiIpOworfQor
Cit9IC8vIG5hbWVzcGFjZSBKU0MKZGlmZiAtLWdpdCBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9y
dW50aW1lL0pTTW9kdWxlUmVjb3JkLmggYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9K
U01vZHVsZVJlY29yZC5oCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAuLmRjMzU4NzgxZTZjN2Y5N2Y3MGQzODY3NjgwMzM4
ZGYzMWVlNmQwZTIKLS0tIC9kZXYvbnVsbAorKysgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVu
dGltZS9KU01vZHVsZVJlY29yZC5oCkBAIC0wLDAgKzEsMTU1IEBACisvKgorICogQ29weXJpZ2h0
IChDKSAyMDE1IEFwcGxlIEluYy4gQWxsIHJpZ2h0cyByZXNlcnZlZC4KKyAqCisgKiBSZWRpc3Ry
aWJ1dGlvbiBhbmQgdXNlIGluIHNvdXJjZSBhbmQgYmluYXJ5IGZvcm1zLCB3aXRoIG9yIHdpdGhv
dXQKKyAqIG1vZGlmaWNhdGlvbiwgYXJlIHBlcm1pdHRlZCBwcm92aWRlZCB0aGF0IHRoZSBmb2xs
b3dpbmcgY29uZGl0aW9ucworICogYXJlIG1ldDoKKyAqIDEuIFJlZGlzdHJpYnV0aW9ucyBvZiBz
b3VyY2UgY29kZSBtdXN0IHJldGFpbiB0aGUgYWJvdmUgY29weXJpZ2h0CisgKiAgICBub3RpY2Us
IHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIuCisg
KiAyLiBSZWRpc3RyaWJ1dGlvbnMgaW4gYmluYXJ5IGZvcm0gbXVzdCByZXByb2R1Y2UgdGhlIGFi
b3ZlIGNvcHlyaWdodAorICogICAgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQg
dGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyIGluIHRoZQorICogICAgZG9jdW1lbnRhdGlvbiBhbmQv
b3Igb3RoZXIgbWF0ZXJpYWxzIHByb3ZpZGVkIHdpdGggdGhlIGRpc3RyaWJ1dGlvbi4KKyAqCisg
KiBUSElTIFNPRlRXQVJFIElTIFBST1ZJREVEIEJZIEFQUExFIElOQy4gYGBBUyBJUycnIEFORCBB
TlkKKyAqIEVYUFJFU1MgT1IgSU1QTElFRCBXQVJSQU5USUVTLCBJTkNMVURJTkcsIEJVVCBOT1Qg
TElNSVRFRCBUTywgVEhFCisgKiBJTVBMSUVEIFdBUlJBTlRJRVMgT0YgTUVSQ0hBTlRBQklMSVRZ
IEFORCBGSVRORVNTIEZPUiBBIFBBUlRJQ1VMQVIKKyAqIFBVUlBPU0UgQVJFIERJU0NMQUlNRUQu
ICBJTiBOTyBFVkVOVCBTSEFMTCBBUFBMRSBJTkMuIE9SCisgKiBDT05UUklCVVRPUlMgQkUgTElB
QkxFIEZPUiBBTlkgRElSRUNULCBJTkRJUkVDVCwgSU5DSURFTlRBTCwgU1BFQ0lBTCwKKyAqIEVY
RU1QTEFSWSwgT1IgQ09OU0VRVUVOVElBTCBEQU1BR0VTIChJTkNMVURJTkcsIEJVVCBOT1QgTElN
SVRFRCBUTywKKyAqIFBST0NVUkVNRU5UIE9GIFNVQlNUSVRVVEUgR09PRFMgT1IgU0VSVklDRVM7
IExPU1MgT0YgVVNFLCBEQVRBLCBPUgorICogUFJPRklUUzsgT1IgQlVTSU5FU1MgSU5URVJSVVBU
SU9OKSBIT1dFVkVSIENBVVNFRCBBTkQgT04gQU5ZIFRIRU9SWQorICogT0YgTElBQklMSVRZLCBX
SEVUSEVSIElOIENPTlRSQUNULCBTVFJJQ1QgTElBQklMSVRZLCBPUiBUT1JUCisgKiAoSU5DTFVE
SU5HIE5FR0xJR0VOQ0UgT1IgT1RIRVJXSVNFKSBBUklTSU5HIElOIEFOWSBXQVkgT1VUIE9GIFRI
RSBVU0UKKyAqIE9GIFRISVMgU09GVFdBUkUsIEVWRU4gSUYgQURWSVNFRCBPRiBUSEUgUE9TU0lC
SUxJVFkgT0YgU1VDSCBEQU1BR0UuCisgKi8KKworI2lmbmRlZiBKU01vZHVsZVJlY29yZF9oCisj
ZGVmaW5lIEpTTW9kdWxlUmVjb3JkX2gKKworI2luY2x1ZGUgIklkZW50aWZpZXIuaCIKKyNpbmNs
dWRlICJKU0Rlc3RydWN0aWJsZU9iamVjdC5oIgorI2luY2x1ZGUgIlZhcmlhYmxlRW52aXJvbm1l
bnQuaCIKKyNpbmNsdWRlIDx3dGYvSGFzaE1hcC5oPgorI2luY2x1ZGUgPHd0Zi9MaXN0SGFzaFNl
dC5oPgorCituYW1lc3BhY2UgSlNDIHsKKworLy8gQmFzZWQgb24gdGhlIFNvdXJjZSBUZXh0IE1v
ZHVsZSBSZWNvcmQKKy8vIGh0dHA6Ly93d3cuZWNtYS1pbnRlcm5hdGlvbmFsLm9yZy9lY21hLTI2
Mi82LjAvI3NlYy1zb3VyY2UtdGV4dC1tb2R1bGUtcmVjb3JkcworY2xhc3MgSlNNb2R1bGVSZWNv
cmQgOiBwdWJsaWMgSlNEZXN0cnVjdGlibGVPYmplY3QgeworcHVibGljOgorICAgIHR5cGVkZWYg
SlNEZXN0cnVjdGlibGVPYmplY3QgQmFzZTsKKworICAgIHN0cnVjdCBFeHBvcnRFbnRyeSB7Cisg
ICAgICAgIGVudW0gY2xhc3MgVHlwZSB7CisgICAgICAgICAgICBMb2NhbCwKKyAgICAgICAgICAg
IE5hbWVzcGFjZSwKKyAgICAgICAgICAgIEluZGlyZWN0CisgICAgICAgIH07CisKKyAgICAgICAg
c3RhdGljIEV4cG9ydEVudHJ5IGNyZWF0ZUxvY2FsKGNvbnN0IElkZW50aWZpZXImIGV4cG9ydE5h
bWUsIGNvbnN0IElkZW50aWZpZXImIGxvY2FsTmFtZSwgY29uc3QgVmFyaWFibGVFbnZpcm9ubWVu
dEVudHJ5Jik7CisgICAgICAgIHN0YXRpYyBFeHBvcnRFbnRyeSBjcmVhdGVOYW1lc3BhY2UoY29u
c3QgSWRlbnRpZmllciYgZXhwb3J0TmFtZSwgY29uc3QgSWRlbnRpZmllciYgbW9kdWxlTmFtZSk7
CisgICAgICAgIHN0YXRpYyBFeHBvcnRFbnRyeSBjcmVhdGVJbmRpcmVjdChjb25zdCBJZGVudGlm
aWVyJiBleHBvcnROYW1lLCBjb25zdCBJZGVudGlmaWVyJiBpbXBvcnROYW1lLCBjb25zdCBJZGVu
dGlmaWVyJiBtb2R1bGVOYW1lKTsKKworICAgICAgICBUeXBlIHR5cGU7CisgICAgICAgIElkZW50
aWZpZXIgZXhwb3J0TmFtZTsKKyAgICAgICAgSWRlbnRpZmllciBtb2R1bGVOYW1lOworICAgICAg
ICBJZGVudGlmaWVyIGltcG9ydE5hbWU7CisgICAgICAgIElkZW50aWZpZXIgbG9jYWxOYW1lOwor
ICAgICAgICBWYXJpYWJsZUVudmlyb25tZW50RW50cnkgdmFyaWFibGU7CisgICAgfTsKKworICAg
IHN0cnVjdCBJbXBvcnRFbnRyeSB7CisgICAgICAgIElkZW50aWZpZXIgbW9kdWxlUmVxdWVzdDsK
KyAgICAgICAgSWRlbnRpZmllciBpbXBvcnROYW1lOworICAgICAgICBJZGVudGlmaWVyIGxvY2Fs
TmFtZTsKKworICAgICAgICBib29sIGlzTmFtZXNwYWNlKFZNJiB2bSkgY29uc3QKKyAgICAgICAg
eworICAgICAgICAgICAgcmV0dXJuIGltcG9ydE5hbWUgPT0gdm0ucHJvcGVydHlOYW1lcy0+dGlt
ZXNJZGVudGlmaWVyOworICAgICAgICB9CisgICAgfTsKKworICAgIHR5cGVkZWYgV1RGOjpMaXN0
SGFzaFNldDxSZWZQdHI8VW5pcXVlZFN0cmluZ0ltcGw+LCBJZGVudGlmaWVyUmVwSGFzaD4gT3Jk
ZXJlZElkZW50aWZpZXJTZXQ7CisgICAgdHlwZWRlZiBIYXNoTWFwPFJlZlB0cjxVbmlxdWVkU3Ry
aW5nSW1wbD4sIEltcG9ydEVudHJ5LCBJZGVudGlmaWVyUmVwSGFzaCwgSGFzaFRyYWl0czxSZWZQ
dHI8VW5pcXVlZFN0cmluZ0ltcGw+Pj4gSW1wb3J0TWFwOworICAgIHR5cGVkZWYgSGFzaE1hcDxS
ZWZQdHI8VW5pcXVlZFN0cmluZ0ltcGw+LCBFeHBvcnRFbnRyeSwgSWRlbnRpZmllclJlcEhhc2gs
IEhhc2hUcmFpdHM8UmVmUHRyPFVuaXF1ZWRTdHJpbmdJbXBsPj4+IEV4cG9ydE1hcDsKKworICAg
IERFQ0xBUkVfRVhQT1JUX0lORk87CisKKyAgICBzdGF0aWMgU3RydWN0dXJlKiBjcmVhdGVTdHJ1
Y3R1cmUoVk0mIHZtLCBKU0dsb2JhbE9iamVjdCogZ2xvYmFsT2JqZWN0LCBKU1ZhbHVlIHByb3Rv
dHlwZSkKKyAgICB7CisgICAgICAgIHJldHVybiBTdHJ1Y3R1cmU6OmNyZWF0ZSh2bSwgZ2xvYmFs
T2JqZWN0LCBwcm90b3R5cGUsIFR5cGVJbmZvKE9iamVjdFR5cGUsIFN0cnVjdHVyZUZsYWdzKSwg
aW5mbygpKTsKKyAgICB9CisKKyAgICBzdGF0aWMgSlNNb2R1bGVSZWNvcmQqIGNyZWF0ZShWTSYg
dm0sIFN0cnVjdHVyZSogc3RydWN0dXJlKQorICAgIHsKKyAgICAgICAgSlNNb2R1bGVSZWNvcmQq
IGluc3RhbmNlID0gbmV3IChOb3ROdWxsLCBhbGxvY2F0ZUNlbGw8SlNNb2R1bGVSZWNvcmQ+KHZt
LmhlYXApKSBKU01vZHVsZVJlY29yZCh2bSwgc3RydWN0dXJlKTsKKyAgICAgICAgaW5zdGFuY2Ut
PmZpbmlzaENyZWF0aW9uKHZtKTsKKyAgICAgICAgcmV0dXJuIGluc3RhbmNlOworICAgIH0KKwor
ICAgIHN0YXRpYyBKU01vZHVsZVJlY29yZCogY3JlYXRlKEV4ZWNTdGF0ZSogZXhlYywgU3RydWN0
dXJlKiBzdHJ1Y3R1cmUpCisgICAgeworICAgICAgICByZXR1cm4gY3JlYXRlKGV4ZWMtPnZtKCks
IHN0cnVjdHVyZSk7CisgICAgfQorCisgICAgdm9pZCBhcHBlbmRSZXF1ZXN0ZWRNb2R1bGUoY29u
c3QgSWRlbnRpZmllciYpOworICAgIHZvaWQgYWRkU3RhckV4cG9ydEVudHJ5KGNvbnN0IElkZW50
aWZpZXImKTsKKyAgICB2b2lkIGFkZEltcG9ydEVudHJ5KGNvbnN0IEltcG9ydEVudHJ5Jik7Cisg
ICAgdm9pZCBhZGRFeHBvcnRFbnRyeShjb25zdCBFeHBvcnRFbnRyeSYpOworCisgICAgY29uc3Qg
SW1wb3J0RW50cnkmIGxvb2tVcEltcG9ydEVudHJ5KGNvbnN0IFJlZlB0cjxVbmlxdWVkU3RyaW5n
SW1wbD4mIGxvY2FsTmFtZSk7CisKKyAgICBjb25zdCBPcmRlcmVkSWRlbnRpZmllclNldCYgcmVx
dWVzdGVkTW9kdWxlcygpIGNvbnN0IHsgcmV0dXJuIG1fcmVxdWVzdGVkTW9kdWxlczsgfQorCisg
ICAgdm9pZCBkdW1wKCk7CisKK3ByaXZhdGU6CisgICAgSlNNb2R1bGVSZWNvcmQoVk0mIHZtLCBT
dHJ1Y3R1cmUqIHN0cnVjdHVyZSkKKyAgICAgICAgOiBCYXNlKHZtLCBzdHJ1Y3R1cmUpCisgICAg
eworICAgIH0KKworICAgIHN0YXRpYyB2b2lkIGRlc3Ryb3koSlNDZWxsKik7CisKKyAgICAvLyBN
YXAgbG9jYWxOYW1lIC0+IEltcG9ydEVudHJ5LgorICAgIEltcG9ydE1hcCBtX2ltcG9ydEVudHJp
ZXM7CisKKyAgICAvLyBNYXAgZXhwb3J0TmFtZSAtPiBFeHBvcnRFbnRyeS4KKyAgICBFeHBvcnRN
YXAgbV9leHBvcnRFbnRyaWVzOworCisgICAgSWRlbnRpZmllclNldCBtX3N0YXJFeHBvcnRFbnRy
aWVzOworCisgICAgLy8gU2F2ZSB0aGUgb2NjdXJyZW5jZSBvcmRlciBzaW5jZSB0aGUgbW9kdWxl
IGxvYWRlciBsb2FkcyBhbmQgcnVucyB0aGUgbW9kdWxlcyBpbiB0aGlzIG9yZGVyLgorICAgIC8v
IGh0dHA6Ly93d3cuZWNtYS1pbnRlcm5hdGlvbmFsLm9yZy9lY21hLTI2Mi82LjAvI3NlYy1tb2R1
bGVldmFsdWF0aW9uCisgICAgT3JkZXJlZElkZW50aWZpZXJTZXQgbV9yZXF1ZXN0ZWRNb2R1bGVz
OworfTsKKworaW5saW5lIHZvaWQgSlNNb2R1bGVSZWNvcmQ6OmFwcGVuZFJlcXVlc3RlZE1vZHVs
ZShjb25zdCBJZGVudGlmaWVyJiBtb2R1bGVOYW1lKQoreworICAgIG1fcmVxdWVzdGVkTW9kdWxl
cy5hZGQobW9kdWxlTmFtZS5pbXBsKCkpOworfQorCitpbmxpbmUgdm9pZCBKU01vZHVsZVJlY29y
ZDo6YWRkSW1wb3J0RW50cnkoY29uc3QgSW1wb3J0RW50cnkmIGVudHJ5KQoreworICAgIG1faW1w
b3J0RW50cmllcy5hZGQoZW50cnkubG9jYWxOYW1lLmltcGwoKSwgZW50cnkpOworfQorCitpbmxp
bmUgdm9pZCBKU01vZHVsZVJlY29yZDo6YWRkRXhwb3J0RW50cnkoY29uc3QgRXhwb3J0RW50cnkm
IGVudHJ5KQoreworICAgIG1fZXhwb3J0RW50cmllcy5hZGQoZW50cnkuZXhwb3J0TmFtZS5pbXBs
KCksIGVudHJ5KTsKK30KKworaW5saW5lIHZvaWQgSlNNb2R1bGVSZWNvcmQ6OmFkZFN0YXJFeHBv
cnRFbnRyeShjb25zdCBJZGVudGlmaWVyJiBtb2R1bGVOYW1lKQoreworICAgIG1fc3RhckV4cG9y
dEVudHJpZXMuYWRkKG1vZHVsZU5hbWUuaW1wbCgpKTsKK30KKworaW5saW5lIGF1dG8gSlNNb2R1
bGVSZWNvcmQ6Omxvb2tVcEltcG9ydEVudHJ5KGNvbnN0IFJlZlB0cjxVbmlxdWVkU3RyaW5nSW1w
bD4mIGxvY2FsTmFtZSkgLT4gY29uc3QgSW1wb3J0RW50cnkmCit7CisgICAgcmV0dXJuICgqbV9p
bXBvcnRFbnRyaWVzLmZpbmQobG9jYWxOYW1lKSkudmFsdWU7Cit9CisKK30gLy8gbmFtZXNwYWNl
IEpTQworCisjZW5kaWYgLy8gSlNNb2R1bGVSZWNvcmRfaApkaWZmIC0tZ2l0IGEvU291cmNlL0ph
dmFTY3JpcHRDb3JlL3J1bnRpbWUvSlNQcm9taXNlQ29uc3RydWN0b3IuY3BwIGIvU291cmNlL0ph
dmFTY3JpcHRDb3JlL3J1bnRpbWUvSlNQcm9taXNlQ29uc3RydWN0b3IuY3BwCmluZGV4IDQ0ZTFl
NzNjYWJhNTViMGJmNTQwOTJlYzU4NGZlNjU3ZTU0NjFhZTUuLjI0M2JjNTI3YzQ2ZmZkNWVkYWQz
NjRkNTIwMGZmOGVmOTQ2YzJkODUgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9y
dW50aW1lL0pTUHJvbWlzZUNvbnN0cnVjdG9yLmNwcAorKysgYi9Tb3VyY2UvSmF2YVNjcmlwdENv
cmUvcnVudGltZS9KU1Byb21pc2VDb25zdHJ1Y3Rvci5jcHAKQEAgLTI2LDYgKzI2LDcgQEAKICNp
bmNsdWRlICJjb25maWcuaCIKICNpbmNsdWRlICJKU1Byb21pc2VDb25zdHJ1Y3Rvci5oIgogCisj
aW5jbHVkZSAiQnVpbHRpbk5hbWVzLmgiCiAjaW5jbHVkZSAiRXJyb3IuaCIKICNpbmNsdWRlICJF
eGNlcHRpb24uaCIKICNpbmNsdWRlICJJdGVyYXRvck9wZXJhdGlvbnMuaCIKQEAgLTgxLDYgKzgy
LDcgQEAgdm9pZCBKU1Byb21pc2VDb25zdHJ1Y3Rvcjo6ZmluaXNoQ3JlYXRpb24oVk0mIHZtLCBK
U1Byb21pc2VQcm90b3R5cGUqIHByb21pc2VQcm8KICAgICBCYXNlOjpmaW5pc2hDcmVhdGlvbih2
bSwgQVNDSUlMaXRlcmFsKCJQcm9taXNlIikpOwogICAgIHB1dERpcmVjdFdpdGhvdXRUcmFuc2l0
aW9uKHZtLCB2bS5wcm9wZXJ0eU5hbWVzLT5wcm90b3R5cGUsIHByb21pc2VQcm90b3R5cGUsIERv
bnRFbnVtIHwgRG9udERlbGV0ZSB8IFJlYWRPbmx5KTsKICAgICBwdXREaXJlY3RXaXRob3V0VHJh
bnNpdGlvbih2bSwgdm0ucHJvcGVydHlOYW1lcy0+bGVuZ3RoLCBqc051bWJlcigxKSwgUmVhZE9u
bHkgfCBEb250RW51bSB8IERvbnREZWxldGUpOworICAgIHB1dERpcmVjdEJ1aWx0aW5GdW5jdGlv
bldpdGhvdXRUcmFuc2l0aW9uKHZtLCBnbG9iYWxPYmplY3QoKSwgdm0ucHJvcGVydHlOYW1lcy0+
YnVpbHRpbk5hbWVzKCkuYWxsUHJpdmF0ZU5hbWUoKSwgcHJvbWlzZUNvbnN0cnVjdG9yUHJpdmF0
ZUFsbENvZGVHZW5lcmF0b3Iodm0pLCBSZWFkT25seSB8IERvbnRFbnVtIHwgRG9udERlbGV0ZSk7
CiB9CiAKIHN0YXRpYyBFbmNvZGVkSlNWYWx1ZSBKU0NfSE9TVF9DQUxMIGNvbnN0cnVjdFByb21p
c2UoRXhlY1N0YXRlKiBleGVjKQpkaWZmIC0tZ2l0IGEvU291cmNlL0phdmFTY3JpcHRDb3JlL3J1
bnRpbWUvSlNQcm9taXNlRGVmZXJyZWQuY3BwIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRp
bWUvSlNQcm9taXNlRGVmZXJyZWQuY3BwCmluZGV4IDZmMzU0MzIzNWJkOGEwOTM4NDE4ZmY3YWZm
Y2RkMDJiMTM1ODQ3NDcuLjAwMGI2NDYyZGZjN2FhZDQyMDg0ZTJjOTZmZTMyZTc4MDdjNzAyZGUg
MTAwNjQ0Ci0tLSBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL0pTUHJvbWlzZURlZmVy
cmVkLmNwcAorKysgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9KU1Byb21pc2VEZWZl
cnJlZC5jcHAKQEAgLTcyLDYgKzcyLDI4IEBAIEpTUHJvbWlzZURlZmVycmVkOjpKU1Byb21pc2VE
ZWZlcnJlZChWTSYgdm0pCiB7CiB9CiAKK3N0YXRpYyB2b2lkIGNhbGxGdW5jdGlvbihFeGVjU3Rh
dGUqIGV4ZWMsIEpTVmFsdWUgZnVuY3Rpb24sIEpTVmFsdWUgdmFsdWUpCit7CisgICAgQ2FsbERh
dGEgY2FsbERhdGE7CisgICAgQ2FsbFR5cGUgY2FsbFR5cGUgPSBnZXRDYWxsRGF0YShmdW5jdGlv
biwgY2FsbERhdGEpOworICAgIEFTU0VSVChjYWxsVHlwZSAhPSBDYWxsVHlwZU5vbmUpOworCisg
ICAgTWFya2VkQXJndW1lbnRCdWZmZXIgYXJndW1lbnRzOworICAgIGFyZ3VtZW50cy5hcHBlbmQo
dmFsdWUpOworCisgICAgY2FsbChleGVjLCBmdW5jdGlvbiwgY2FsbFR5cGUsIGNhbGxEYXRhLCBq
c1VuZGVmaW5lZCgpLCBhcmd1bWVudHMpOworfQorCit2b2lkIEpTUHJvbWlzZURlZmVycmVkOjpy
ZXNvbHZlKEV4ZWNTdGF0ZSogZXhlYywgSlNWYWx1ZSB2YWx1ZSkKK3sKKyAgICBjYWxsRnVuY3Rp
b24oZXhlYywgbV9yZXNvbHZlLmdldCgpLCB2YWx1ZSk7Cit9CisKK3ZvaWQgSlNQcm9taXNlRGVm
ZXJyZWQ6OnJlamVjdChFeGVjU3RhdGUqIGV4ZWMsIEpTVmFsdWUgcmVhc29uKQoreworICAgIGNh
bGxGdW5jdGlvbihleGVjLCBtX3JlamVjdC5nZXQoKSwgcmVhc29uKTsKK30KKwogdm9pZCBKU1By
b21pc2VEZWZlcnJlZDo6ZmluaXNoQ3JlYXRpb24oVk0mIHZtLCBKU09iamVjdCogcHJvbWlzZSwg
SlNWYWx1ZSByZXNvbHZlLCBKU1ZhbHVlIHJlamVjdCkKIHsKICAgICBCYXNlOjpmaW5pc2hDcmVh
dGlvbih2bSk7CmRpZmYgLS1naXQgYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9KU1By
b21pc2VEZWZlcnJlZC5oIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvSlNQcm9taXNl
RGVmZXJyZWQuaAppbmRleCBkZWEwZDE3ZjliNDJjZWM2N2FjYzgyMzU1MDY1OTVkYjUxZTk0MTA3
Li40YTBiNGI4NTY4YTQ3YmRkOWZlMmMzOGY4NTA0NzZmMmRiOTFkYTI3IDEwMDY0NAotLS0gYS9T
b3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9KU1Byb21pc2VEZWZlcnJlZC5oCisrKyBiL1Nv
dXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL0pTUHJvbWlzZURlZmVycmVkLmgKQEAgLTUwLDYg
KzUwLDkgQEAgY2xhc3MgSlNQcm9taXNlRGVmZXJyZWQgZmluYWwgOiBwdWJsaWMgSlNDZWxsIHsK
ICAgICBKU1ZhbHVlIHJlc29sdmUoKSBjb25zdCB7IHJldHVybiBtX3Jlc29sdmUuZ2V0KCk7IH0K
ICAgICBKU1ZhbHVlIHJlamVjdCgpIGNvbnN0IHsgcmV0dXJuIG1fcmVqZWN0LmdldCgpOyB9CiAK
KyAgICBKU19FWFBPUlRfUFJJVkFURSB2b2lkIHJlc29sdmUoRXhlY1N0YXRlKiwgSlNWYWx1ZSk7
CisgICAgSlNfRVhQT1JUX1BSSVZBVEUgdm9pZCByZWplY3QoRXhlY1N0YXRlKiwgSlNWYWx1ZSk7
CisKIHByaXZhdGU6CiAgICAgSlNQcm9taXNlRGVmZXJyZWQoVk0mKTsKICAgICB2b2lkIGZpbmlz
aENyZWF0aW9uKFZNJiwgSlNPYmplY3QqLCBKU1ZhbHVlLCBKU1ZhbHVlKTsKZGlmZiAtLWdpdCBh
L1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL0pTUHJvbWlzZVByb3RvdHlwZS5jcHAgYi9T
b3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9KU1Byb21pc2VQcm90b3R5cGUuY3BwCmluZGV4
IGEwZjEwMjQzMjBjMTRiYjM2NGU4MTAzNDM5MzVhZDc5M2E3ZGE0ODYuLjAyNjgzNzM0ODA3NWRh
M2U0Nzg3YjRhMmRmNGNlZWVjNTFjYTYxOWQgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9KYXZhU2NyaXB0
Q29yZS9ydW50aW1lL0pTUHJvbWlzZVByb3RvdHlwZS5jcHAKKysrIGIvU291cmNlL0phdmFTY3Jp
cHRDb3JlL3J1bnRpbWUvSlNQcm9taXNlUHJvdG90eXBlLmNwcApAQCAtMjYsNiArMjYsNyBAQAog
I2luY2x1ZGUgImNvbmZpZy5oIgogI2luY2x1ZGUgIkpTUHJvbWlzZVByb3RvdHlwZS5oIgogCisj
aW5jbHVkZSAiQnVpbHRpbk5hbWVzLmgiCiAjaW5jbHVkZSAiRXJyb3IuaCIKICNpbmNsdWRlICJK
U0NCdWlsdGlucy5oIgogI2luY2x1ZGUgIkpTQ0pTVmFsdWVJbmxpbmVzLmgiCkBAIC01NCwxMCAr
NTUsOSBAQCBjb25zdCBDbGFzc0luZm8gSlNQcm9taXNlUHJvdG90eXBlOjpzX2luZm8gPSB7ICJQ
cm9taXNlUHJvdG90eXBlIiwgJkpTTm9uRmluYWxPYgogQGVuZAogKi8KIAotSlNQcm9taXNlUHJv
dG90eXBlKiBKU1Byb21pc2VQcm90b3R5cGU6OmNyZWF0ZShFeGVjU3RhdGUqIGV4ZWMsIEpTR2xv
YmFsT2JqZWN0KiwgU3RydWN0dXJlKiBzdHJ1Y3R1cmUpCitKU1Byb21pc2VQcm90b3R5cGUqIEpT
UHJvbWlzZVByb3RvdHlwZTo6Y3JlYXRlKFZNJiB2bSwgSlNHbG9iYWxPYmplY3QqLCBTdHJ1Y3R1
cmUqIHN0cnVjdHVyZSkKIHsKLSAgICBWTSYgdm0gPSBleGVjLT52bSgpOwotICAgIEpTUHJvbWlz
ZVByb3RvdHlwZSogb2JqZWN0ID0gbmV3IChOb3ROdWxsLCBhbGxvY2F0ZUNlbGw8SlNQcm9taXNl
UHJvdG90eXBlPih2bS5oZWFwKSkgSlNQcm9taXNlUHJvdG90eXBlKGV4ZWMsIHN0cnVjdHVyZSk7
CisgICAgSlNQcm9taXNlUHJvdG90eXBlKiBvYmplY3QgPSBuZXcgKE5vdE51bGwsIGFsbG9jYXRl
Q2VsbDxKU1Byb21pc2VQcm90b3R5cGU+KHZtLmhlYXApKSBKU1Byb21pc2VQcm90b3R5cGUodm0s
IHN0cnVjdHVyZSk7CiAgICAgb2JqZWN0LT5maW5pc2hDcmVhdGlvbih2bSwgc3RydWN0dXJlKTsK
ICAgICByZXR1cm4gb2JqZWN0OwogfQpAQCAtNjcsMTQgKzY3LDE1IEBAIFN0cnVjdHVyZSogSlNQ
cm9taXNlUHJvdG90eXBlOjpjcmVhdGVTdHJ1Y3R1cmUoVk0mIHZtLCBKU0dsb2JhbE9iamVjdCog
Z2xvYmFsT2JqCiAgICAgcmV0dXJuIFN0cnVjdHVyZTo6Y3JlYXRlKHZtLCBnbG9iYWxPYmplY3Qs
IHByb3RvdHlwZSwgVHlwZUluZm8oT2JqZWN0VHlwZSwgU3RydWN0dXJlRmxhZ3MpLCBpbmZvKCkp
OwogfQogCi1KU1Byb21pc2VQcm90b3R5cGU6OkpTUHJvbWlzZVByb3RvdHlwZShFeGVjU3RhdGUq
IGV4ZWMsIFN0cnVjdHVyZSogc3RydWN0dXJlKQotICAgIDogSlNOb25GaW5hbE9iamVjdChleGVj
LT52bSgpLCBzdHJ1Y3R1cmUpCitKU1Byb21pc2VQcm90b3R5cGU6OkpTUHJvbWlzZVByb3RvdHlw
ZShWTSYgdm0sIFN0cnVjdHVyZSogc3RydWN0dXJlKQorICAgIDogSlNOb25GaW5hbE9iamVjdCh2
bSwgc3RydWN0dXJlKQogewogfQogCiB2b2lkIEpTUHJvbWlzZVByb3RvdHlwZTo6ZmluaXNoQ3Jl
YXRpb24oVk0mIHZtLCBTdHJ1Y3R1cmUqKQogewogICAgIEJhc2U6OmZpbmlzaENyZWF0aW9uKHZt
KTsKKyAgICBwdXREaXJlY3RCdWlsdGluRnVuY3Rpb25XaXRob3V0VHJhbnNpdGlvbih2bSwgZ2xv
YmFsT2JqZWN0KCksIHZtLnByb3BlcnR5TmFtZXMtPmJ1aWx0aW5OYW1lcygpLnRoZW5Qcml2YXRl
TmFtZSgpLCBwcm9taXNlUHJvdG90eXBlUHJpdmF0ZVRoZW5Db2RlR2VuZXJhdG9yKHZtKSwgUmVh
ZE9ubHkgfCBEb250RW51bSB8IERvbnREZWxldGUpOwogfQogCiBib29sIEpTUHJvbWlzZVByb3Rv
dHlwZTo6Z2V0T3duUHJvcGVydHlTbG90KEpTT2JqZWN0KiBvYmplY3QsIEV4ZWNTdGF0ZSogZXhl
YywgUHJvcGVydHlOYW1lIHByb3BlcnR5TmFtZSwgUHJvcGVydHlTbG90JiBzbG90KQpkaWZmIC0t
Z2l0IGEvU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvSlNQcm9taXNlUHJvdG90eXBlLmgg
Yi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9KU1Byb21pc2VQcm90b3R5cGUuaAppbmRl
eCA0NThkMTQxMTlkZGY5YWJlMDc2M2I3NzczOWI0ZWE5Yjg1YzIxOTA2Li40ZTg3MWM3NTZjYzhl
NzU3N2EwNzA0MTE1NjAzZjkzZTg1NTNlMWY3IDEwMDY0NAotLS0gYS9Tb3VyY2UvSmF2YVNjcmlw
dENvcmUvcnVudGltZS9KU1Byb21pc2VQcm90b3R5cGUuaAorKysgYi9Tb3VyY2UvSmF2YVNjcmlw
dENvcmUvcnVudGltZS9KU1Byb21pc2VQcm90b3R5cGUuaApAQCAtMzUsNyArMzUsNyBAQCBjbGFz
cyBKU1Byb21pc2VQcm90b3R5cGUgOiBwdWJsaWMgSlNOb25GaW5hbE9iamVjdCB7CiAgICAgdHlw
ZWRlZiBKU05vbkZpbmFsT2JqZWN0IEJhc2U7CiAgICAgc3RhdGljIGNvbnN0IHVuc2lnbmVkIFN0
cnVjdHVyZUZsYWdzID0gQmFzZTo6U3RydWN0dXJlRmxhZ3MgfCBPdmVycmlkZXNHZXRPd25Qcm9w
ZXJ0eVNsb3Q7CiAKLSAgICBzdGF0aWMgSlNQcm9taXNlUHJvdG90eXBlKiBjcmVhdGUoRXhlY1N0
YXRlKiwgSlNHbG9iYWxPYmplY3QqLCBTdHJ1Y3R1cmUqKTsKKyAgICBzdGF0aWMgSlNQcm9taXNl
UHJvdG90eXBlKiBjcmVhdGUoVk0mLCBKU0dsb2JhbE9iamVjdCosIFN0cnVjdHVyZSopOwogICAg
IHN0YXRpYyBTdHJ1Y3R1cmUqIGNyZWF0ZVN0cnVjdHVyZShWTSYsIEpTR2xvYmFsT2JqZWN0Kiwg
SlNWYWx1ZSk7CiAKICAgICBERUNMQVJFX0lORk87CkBAIC00NCw3ICs0NCw3IEBAIGNsYXNzIEpT
UHJvbWlzZVByb3RvdHlwZSA6IHB1YmxpYyBKU05vbkZpbmFsT2JqZWN0IHsKICAgICB2b2lkIGZp
bmlzaENyZWF0aW9uKFZNJiwgU3RydWN0dXJlKik7CiAKIHByaXZhdGU6Ci0gICAgSlNQcm9taXNl
UHJvdG90eXBlKEV4ZWNTdGF0ZSosIFN0cnVjdHVyZSopOworICAgIEpTUHJvbWlzZVByb3RvdHlw
ZShWTSYsIFN0cnVjdHVyZSopOwogICAgIHN0YXRpYyBib29sIGdldE93blByb3BlcnR5U2xvdChK
U09iamVjdCosIEV4ZWNTdGF0ZSosIFByb3BlcnR5TmFtZSwgUHJvcGVydHlTbG90Jik7CiB9Owog
CmRpZmYgLS1naXQgYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9NYXBQcm90b3R5cGUu
Y3BwIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvTWFwUHJvdG90eXBlLmNwcAppbmRl
eCA5NmRlYWU3MTRjYTUxYTY3ZmQxNjQwOGU1YzM5ZDNjNjU2NzM4OTRkLi5lOTcyZjU0MGVmYjJm
MWU2YTQ4ZDEyNTAzZjAzMTg5NzFmNDJkZjgyIDEwMDY0NAotLS0gYS9Tb3VyY2UvSmF2YVNjcmlw
dENvcmUvcnVudGltZS9NYXBQcm90b3R5cGUuY3BwCisrKyBiL1NvdXJjZS9KYXZhU2NyaXB0Q29y
ZS9ydW50aW1lL01hcFByb3RvdHlwZS5jcHAKQEAgLTY4LDYgKzY4LDEwIEBAIHZvaWQgTWFwUHJv
dG90eXBlOjpmaW5pc2hDcmVhdGlvbihWTSYgdm0sIEpTR2xvYmFsT2JqZWN0KiBnbG9iYWxPYmpl
Y3QpCiAgICAgSlNDX05BVElWRV9GVU5DVElPTih2bS5wcm9wZXJ0eU5hbWVzLT5rZXlzLCBtYXBQ
cm90b0Z1bmNLZXlzLCBEb250RW51bSwgMCk7CiAgICAgSlNDX05BVElWRV9GVU5DVElPTih2bS5w
cm9wZXJ0eU5hbWVzLT52YWx1ZXMsIG1hcFByb3RvRnVuY1ZhbHVlcywgRG9udEVudW0sIDApOwog
CisgICAgLy8gUHJpdmF0ZSBnZXQgLyBzZXQgb3BlcmF0aW9ucy4KKyAgICBKU0NfTkFUSVZFX0ZV
TkNUSU9OKHZtLnByb3BlcnR5TmFtZXMtPmdldFByaXZhdGVOYW1lLCBtYXBQcm90b0Z1bmNHZXQs
IERvbnRFbnVtLCAxKTsKKyAgICBKU0NfTkFUSVZFX0ZVTkNUSU9OKHZtLnByb3BlcnR5TmFtZXMt
PnNldFByaXZhdGVOYW1lLCBtYXBQcm90b0Z1bmNTZXQsIERvbnRFbnVtLCAyKTsKKwogICAgIEpT
RnVuY3Rpb24qIGVudHJpZXMgPSBKU0Z1bmN0aW9uOjpjcmVhdGUodm0sIGdsb2JhbE9iamVjdCwg
MCwgdm0ucHJvcGVydHlOYW1lcy0+ZW50cmllcy5zdHJpbmcoKSwgbWFwUHJvdG9GdW5jRW50cmll
cyk7CiAgICAgcHV0RGlyZWN0V2l0aG91dFRyYW5zaXRpb24odm0sIHZtLnByb3BlcnR5TmFtZXMt
PmVudHJpZXMsIGVudHJpZXMsIERvbnRFbnVtKTsKICAgICBwdXREaXJlY3RXaXRob3V0VHJhbnNp
dGlvbih2bSwgdm0ucHJvcGVydHlOYW1lcy0+aXRlcmF0b3JTeW1ib2wsIGVudHJpZXMsIERvbnRF
bnVtKTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL01vZHVsZUxv
YWRlck9iamVjdC5jcHAgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9Nb2R1bGVMb2Fk
ZXJPYmplY3QuY3BwCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAuLjc4ZGU3YjhlZjg3YjlkNThmMjY4ZDI4ODA4YjkzOWQw
ZDgxNjEyMTcKLS0tIC9kZXYvbnVsbAorKysgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGlt
ZS9Nb2R1bGVMb2FkZXJPYmplY3QuY3BwCkBAIC0wLDAgKzEsMjQ4IEBACisvKgorICogQ29weXJp
Z2h0IChDKSAyMDE1IEFwcGxlIEluYy4gQWxsIFJpZ2h0cyBSZXNlcnZlZC4KKyAqCisgKiBSZWRp
c3RyaWJ1dGlvbiBhbmQgdXNlIGluIHNvdXJjZSBhbmQgYmluYXJ5IGZvcm1zLCB3aXRoIG9yIHdp
dGhvdXQKKyAqIG1vZGlmaWNhdGlvbiwgYXJlIHBlcm1pdHRlZCBwcm92aWRlZCB0aGF0IHRoZSBm
b2xsb3dpbmcgY29uZGl0aW9ucworICogYXJlIG1ldDoKKyAqIDEuIFJlZGlzdHJpYnV0aW9ucyBv
ZiBzb3VyY2UgY29kZSBtdXN0IHJldGFpbiB0aGUgYWJvdmUgY29weXJpZ2h0CisgKiAgICBub3Rp
Y2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIu
CisgKiAyLiBSZWRpc3RyaWJ1dGlvbnMgaW4gYmluYXJ5IGZvcm0gbXVzdCByZXByb2R1Y2UgdGhl
IGFib3ZlIGNvcHlyaWdodAorICogICAgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBh
bmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyIGluIHRoZQorICogICAgZG9jdW1lbnRhdGlvbiBh
bmQvb3Igb3RoZXIgbWF0ZXJpYWxzIHByb3ZpZGVkIHdpdGggdGhlIGRpc3RyaWJ1dGlvbi4KKyAq
CisgKiBUSElTIFNPRlRXQVJFIElTIFBST1ZJREVEIEJZIEFQUExFIElOQy4gYGBBUyBJUycnIEFO
RCBBTlkKKyAqIEVYUFJFU1MgT1IgSU1QTElFRCBXQVJSQU5USUVTLCBJTkNMVURJTkcsIEJVVCBO
T1QgTElNSVRFRCBUTywgVEhFCisgKiBJTVBMSUVEIFdBUlJBTlRJRVMgT0YgTUVSQ0hBTlRBQklM
SVRZIEFORCBGSVRORVNTIEZPUiBBIFBBUlRJQ1VMQVIKKyAqIFBVUlBPU0UgQVJFIERJU0NMQUlN
RUQuICBJTiBOTyBFVkVOVCBTSEFMTCBBUFBMRSBJTkMuIE9SCisgKiBDT05UUklCVVRPUlMgQkUg
TElBQkxFIEZPUiBBTlkgRElSRUNULCBJTkRJUkVDVCwgSU5DSURFTlRBTCwgU1BFQ0lBTCwKKyAq
IEVYRU1QTEFSWSwgT1IgQ09OU0VRVUVOVElBTCBEQU1BR0VTIChJTkNMVURJTkcsIEJVVCBOT1Qg
TElNSVRFRCBUTywKKyAqIFBST0NVUkVNRU5UIE9GIFNVQlNUSVRVVEUgR09PRFMgT1IgU0VSVklD
RVM7IExPU1MgT0YgVVNFLCBEQVRBLCBPUgorICogUFJPRklUUzsgT1IgQlVTSU5FU1MgSU5URVJS
VVBUSU9OKSBIT1dFVkVSIENBVVNFRCBBTkQgT04gQU5ZIFRIRU9SWQorICogT0YgTElBQklMSVRZ
LCBXSEVUSEVSIElOIENPTlRSQUNULCBTVFJJQ1QgTElBQklMSVRZLCBPUiBUT1JUCisgKiAoSU5D
TFVESU5HIE5FR0xJR0VOQ0UgT1IgT1RIRVJXSVNFKSBBUklTSU5HIElOIEFOWSBXQVkgT1VUIE9G
IFRIRSBVU0UKKyAqIE9GIFRISVMgU09GVFdBUkUsIEVWRU4gSUYgQURWSVNFRCBPRiBUSEUgUE9T
U0lCSUxJVFkgT0YgU1VDSCBEQU1BR0UuCisgKi8KKworI2luY2x1ZGUgImNvbmZpZy5oIgorI2lu
Y2x1ZGUgIk1vZHVsZUxvYWRlck9iamVjdC5oIgorCisjaW5jbHVkZSAiRXJyb3IuaCIKKyNpbmNs
dWRlICJFeGNlcHRpb24uaCIKKyNpbmNsdWRlICJKU0NJbmxpbmVzLmgiCisjaW5jbHVkZSAiSlNH
bG9iYWxPYmplY3RGdW5jdGlvbnMuaCIKKyNpbmNsdWRlICJKU01hcC5oIgorI2luY2x1ZGUgIkpT
TW9kdWxlUmVjb3JkLmgiCisjaW5jbHVkZSAiSlNQcm9taXNlLmgiCisjaW5jbHVkZSAiSlNQcm9t
aXNlRGVmZXJyZWQuaCIKKyNpbmNsdWRlICJNb2R1bGVBbmFseXplci5oIgorI2luY2x1ZGUgIk5v
ZGVzLmgiCisjaW5jbHVkZSAiUGFyc2VyLmgiCisjaW5jbHVkZSAiUGFyc2VyRXJyb3IuaCIKKwor
bmFtZXNwYWNlIEpTQyB7CisKK3N0YXRpYyBFbmNvZGVkSlNWYWx1ZSBKU0NfSE9TVF9DQUxMIG1v
ZHVsZUxvYWRlck9iamVjdFBhcnNlTW9kdWxlKEV4ZWNTdGF0ZSopOworc3RhdGljIEVuY29kZWRK
U1ZhbHVlIEpTQ19IT1NUX0NBTEwgbW9kdWxlTG9hZGVyT2JqZWN0UmVxdWVzdGVkTW9kdWxlcyhF
eGVjU3RhdGUqKTsKK3N0YXRpYyBFbmNvZGVkSlNWYWx1ZSBKU0NfSE9TVF9DQUxMIG1vZHVsZUxv
YWRlck9iamVjdFJlc29sdmUoRXhlY1N0YXRlKik7CitzdGF0aWMgRW5jb2RlZEpTVmFsdWUgSlND
X0hPU1RfQ0FMTCBtb2R1bGVMb2FkZXJPYmplY3RGZXRjaChFeGVjU3RhdGUqKTsKK3N0YXRpYyBF
bmNvZGVkSlNWYWx1ZSBKU0NfSE9TVF9DQUxMIG1vZHVsZUxvYWRlck9iamVjdFRyYW5zbGF0ZShF
eGVjU3RhdGUqKTsKK3N0YXRpYyBFbmNvZGVkSlNWYWx1ZSBKU0NfSE9TVF9DQUxMIG1vZHVsZUxv
YWRlck9iamVjdEluc3RhbnRpYXRlKEV4ZWNTdGF0ZSopOworCit9CisKKyNpbmNsdWRlICJNb2R1
bGVMb2FkZXJPYmplY3QubHV0LmgiCisKK25hbWVzcGFjZSBKU0MgeworCitTVEFUSUNfQVNTRVJU
X0lTX1RSSVZJQUxMWV9ERVNUUlVDVElCTEUoTW9kdWxlTG9hZGVyT2JqZWN0KTsKKworY29uc3Qg
Q2xhc3NJbmZvIE1vZHVsZUxvYWRlck9iamVjdDo6c19pbmZvID0geyAiTW9kdWxlTG9hZGVyIiwg
JkJhc2U6OnNfaW5mbywgJm1vZHVsZUxvYWRlck9iamVjdFRhYmxlLCBDUkVBVEVfTUVUSE9EX1RB
QkxFKE1vZHVsZUxvYWRlck9iamVjdCkgfTsKKworLyogU291cmNlIGZvciBNb2R1bGVMb2FkZXJP
YmplY3QubHV0LmgKK0BiZWdpbiBtb2R1bGVMb2FkZXJPYmplY3RUYWJsZQorICAgIHNldFN0YXRl
VG9NYXggICAgICAgICAgICAgbW9kdWxlTG9hZGVyT2JqZWN0U2V0U3RhdGVUb01heCAgICAgICAg
ICAgICBEb250RW51bXxGdW5jdGlvbiAyCisgICAgbmV3UmVnaXN0cnlFbnRyeSAgICAgICAgICBt
b2R1bGVMb2FkZXJPYmplY3ROZXdSZWdpc3RyeUVudHJ5ICAgICAgICAgIERvbnRFbnVtfEZ1bmN0
aW9uIDEKKyAgICBlbnN1cmVSZWdpc3RlcmVkICAgICAgICAgIG1vZHVsZUxvYWRlck9iamVjdEVu
c3VyZVJlZ2lzdGVyZWQgICAgICAgICAgRG9udEVudW18RnVuY3Rpb24gMQorICAgIGZvcmNlRnVs
ZmlsbFByb21pc2UgICAgICAgbW9kdWxlTG9hZGVyT2JqZWN0Rm9yY2VGdWxmaWxsUHJvbWlzZSAg
ICAgICBEb250RW51bXxGdW5jdGlvbiAyCisgICAgZnVsZmlsbEZldGNoICAgICAgICAgICAgICBt
b2R1bGVMb2FkZXJPYmplY3RGdWxmaWxsRmV0Y2ggICAgICAgICAgICAgIERvbnRFbnVtfEZ1bmN0
aW9uIDIKKyAgICBmdWxmaWxsVHJhbnNsYXRlICAgICAgICAgIG1vZHVsZUxvYWRlck9iamVjdEZ1
bGZpbGxUcmFuc2xhdGUgICAgICAgICAgRG9udEVudW18RnVuY3Rpb24gMgorICAgIGZ1bGZpbGxJ
bnN0YW50aWF0ZSAgICAgICAgbW9kdWxlTG9hZGVyT2JqZWN0RnVsZmlsbEluc3RhbnRpYXRlICAg
ICAgICBEb250RW51bXxGdW5jdGlvbiAyCisgICAgY29tbWl0SW5zdGFudGlhdGVkICAgICAgICBt
b2R1bGVMb2FkZXJPYmplY3RDb21taXRJbnN0YW50aWF0ZWQgICAgICAgIERvbnRFbnVtfEZ1bmN0
aW9uIDMKKyAgICBpbnN0YW50aWF0aW9uICAgICAgICAgICAgIG1vZHVsZUxvYWRlck9iamVjdElu
c3RhbnRpYXRpb24gICAgICAgICAgICAgRG9udEVudW18RnVuY3Rpb24gMgorICAgIHJlcXVlc3RG
ZXRjaCAgICAgICAgICAgICAgbW9kdWxlTG9hZGVyT2JqZWN0UmVxdWVzdEZldGNoICAgICAgICAg
ICAgICBEb250RW51bXxGdW5jdGlvbiAxCisgICAgcmVxdWVzdFRyYW5zbGF0ZSAgICAgICAgICBt
b2R1bGVMb2FkZXJPYmplY3RSZXF1ZXN0VHJhbnNsYXRlICAgICAgICAgIERvbnRFbnVtfEZ1bmN0
aW9uIDEKKyAgICByZXF1ZXN0SW5zdGFudGlhdGUgICAgICAgIG1vZHVsZUxvYWRlck9iamVjdFJl
cXVlc3RJbnN0YW50aWF0ZSAgICAgICAgRG9udEVudW18RnVuY3Rpb24gMQorICAgIHJlcXVlc3RJ
bnN0YW50aWF0ZUFsbCAgICAgbW9kdWxlTG9hZGVyT2JqZWN0UmVxdWVzdEluc3RhbnRpYXRlQWxs
ICAgICBEb250RW51bXxGdW5jdGlvbiAxCisgICAgcGFyc2VNb2R1bGUgICAgICAgICAgICAgICBt
b2R1bGVMb2FkZXJPYmplY3RQYXJzZU1vZHVsZSAgICAgICAgICAgICAgIERvbnRFbnVtfEZ1bmN0
aW9uIDEKKyAgICByZXF1ZXN0ZWRNb2R1bGVzICAgICAgICAgIG1vZHVsZUxvYWRlck9iamVjdFJl
cXVlc3RlZE1vZHVsZXMgICAgICAgICAgRG9udEVudW18RnVuY3Rpb24gMQorICAgIHJlc29sdmUg
ICAgICAgICAgICAgICAgICAgbW9kdWxlTG9hZGVyT2JqZWN0UmVzb2x2ZSAgICAgICAgICAgICAg
ICAgICBEb250RW51bXxGdW5jdGlvbiAxCisgICAgZmV0Y2ggICAgICAgICAgICAgICAgICAgICBt
b2R1bGVMb2FkZXJPYmplY3RGZXRjaCAgICAgICAgICAgICAgICAgICAgIERvbnRFbnVtfEZ1bmN0
aW9uIDEKKyAgICB0cmFuc2xhdGUgICAgICAgICAgICAgICAgIG1vZHVsZUxvYWRlck9iamVjdFRy
YW5zbGF0ZSAgICAgICAgICAgICAgICAgRG9udEVudW18RnVuY3Rpb24gMgorICAgIGluc3RhbnRp
YXRlICAgICAgICAgICAgICAgbW9kdWxlTG9hZGVyT2JqZWN0SW5zdGFudGlhdGUgICAgICAgICAg
ICAgICBEb250RW51bXxGdW5jdGlvbiAyCitAZW5kCisqLworCitNb2R1bGVMb2FkZXJPYmplY3Q6
Ok1vZHVsZUxvYWRlck9iamVjdChWTSYgdm0sIFN0cnVjdHVyZSogc3RydWN0dXJlKQorICAgIDog
SlNOb25GaW5hbE9iamVjdCh2bSwgc3RydWN0dXJlKQoreworfQorCit2b2lkIE1vZHVsZUxvYWRl
ck9iamVjdDo6ZmluaXNoQ3JlYXRpb24oVk0mIHZtLCBKU0dsb2JhbE9iamVjdCogZ2xvYmFsT2Jq
ZWN0KQoreworICAgIEJhc2U6OmZpbmlzaENyZWF0aW9uKHZtKTsKKyAgICBBU1NFUlQoaW5oZXJp
dHMoaW5mbygpKSk7CisKKyAgICAvLyBDb25zdGFudCB2YWx1ZXMgZm9yIHRoZSBzdGF0ZS4KKyAg
ICBwdXREaXJlY3RXaXRob3V0VHJhbnNpdGlvbih2bSwgSWRlbnRpZmllcjo6ZnJvbVN0cmluZygm
dm0sICJGZXRjaCIpLCBqc051bWJlcihleHAoMCkpKTsKKyAgICBwdXREaXJlY3RXaXRob3V0VHJh
bnNpdGlvbih2bSwgSWRlbnRpZmllcjo6ZnJvbVN0cmluZygmdm0sICJUcmFuc2xhdGUiKSwganNO
dW1iZXIoMSkpOworICAgIHB1dERpcmVjdFdpdGhvdXRUcmFuc2l0aW9uKHZtLCBJZGVudGlmaWVy
Ojpmcm9tU3RyaW5nKCZ2bSwgIkluc3RhbnRpYXRlIiksIGpzTnVtYmVyKDIpKTsKKyAgICBwdXRE
aXJlY3RXaXRob3V0VHJhbnNpdGlvbih2bSwgSWRlbnRpZmllcjo6ZnJvbVN0cmluZygmdm0sICJM
aW5rIiksIGpzTnVtYmVyKDMpKTsKKyAgICBwdXREaXJlY3RXaXRob3V0VHJhbnNpdGlvbih2bSwg
SWRlbnRpZmllcjo6ZnJvbVN0cmluZygmdm0sICJSZWFkeSIpLCBqc051bWJlcig0KSk7CisKKyAg
ICBwdXREaXJlY3RXaXRob3V0VHJhbnNpdGlvbih2bSwgSWRlbnRpZmllcjo6ZnJvbVN0cmluZygm
dm0sICJyZWdpc3RyeSIpLCBKU01hcDo6Y3JlYXRlKHZtLCBnbG9iYWxPYmplY3QtPm1hcFN0cnVj
dHVyZSgpKSk7Cit9CisKK2Jvb2wgTW9kdWxlTG9hZGVyT2JqZWN0OjpnZXRPd25Qcm9wZXJ0eVNs
b3QoSlNPYmplY3QqIG9iamVjdCwgRXhlY1N0YXRlKiBleGVjLCBQcm9wZXJ0eU5hbWUgcHJvcGVy
dHlOYW1lLCBQcm9wZXJ0eVNsb3QgJnNsb3QpCit7CisgICAgcmV0dXJuIGdldFN0YXRpY0Z1bmN0
aW9uU2xvdDxCYXNlPihleGVjLCBtb2R1bGVMb2FkZXJPYmplY3RUYWJsZSwganNDYXN0PE1vZHVs
ZUxvYWRlck9iamVjdCo+KG9iamVjdCksIHByb3BlcnR5TmFtZSwgc2xvdCk7Cit9CisKKy8vIC0t
LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLSBGdW5jdGlvbnMgLS0tLS0tLS0tLS0tLS0tLS0t
LS0tLS0tLS0tLS0tLS0KKworSlNWYWx1ZSBNb2R1bGVMb2FkZXJPYmplY3Q6OnJlc29sdmUoRXhl
Y1N0YXRlKiBleGVjLCBKU1ZhbHVlIG5hbWUsIEpTVmFsdWUgcmVmZXJyZXIpCit7CisgICAgSlNH
bG9iYWxPYmplY3QqIGdsb2JhbE9iamVjdCA9IGV4ZWMtPmxleGljYWxHbG9iYWxPYmplY3QoKTsK
KyAgICBpZiAoZ2xvYmFsT2JqZWN0LT5nbG9iYWxPYmplY3RNZXRob2RUYWJsZSgpLT5sb2FkZXJS
ZXNvbHZlKQorICAgICAgICByZXR1cm4gZ2xvYmFsT2JqZWN0LT5nbG9iYWxPYmplY3RNZXRob2RU
YWJsZSgpLT5sb2FkZXJSZXNvbHZlKGdsb2JhbE9iamVjdCwgZXhlYywgbmFtZSwgcmVmZXJyZXIp
OworICAgIEpTUHJvbWlzZURlZmVycmVkKiBkZWZlcnJlZCA9IEpTUHJvbWlzZURlZmVycmVkOjpj
cmVhdGUoZXhlYywgZ2xvYmFsT2JqZWN0KTsKKyAgICBkZWZlcnJlZC0+cmVzb2x2ZShleGVjLCBu
YW1lKTsKKyAgICByZXR1cm4gZGVmZXJyZWQtPnByb21pc2UoKTsKK30KKworSlNWYWx1ZSBNb2R1
bGVMb2FkZXJPYmplY3Q6OmZldGNoKEV4ZWNTdGF0ZSogZXhlYywgSlNWYWx1ZSBrZXkpCit7Cisg
ICAgSlNHbG9iYWxPYmplY3QqIGdsb2JhbE9iamVjdCA9IGV4ZWMtPmxleGljYWxHbG9iYWxPYmpl
Y3QoKTsKKyAgICBpZiAoZ2xvYmFsT2JqZWN0LT5nbG9iYWxPYmplY3RNZXRob2RUYWJsZSgpLT5s
b2FkZXJGZXRjaCkKKyAgICAgICAgcmV0dXJuIGdsb2JhbE9iamVjdC0+Z2xvYmFsT2JqZWN0TWV0
aG9kVGFibGUoKS0+bG9hZGVyRmV0Y2goZ2xvYmFsT2JqZWN0LCBleGVjLCBrZXkpOworICAgIEpT
UHJvbWlzZURlZmVycmVkKiBkZWZlcnJlZCA9IEpTUHJvbWlzZURlZmVycmVkOjpjcmVhdGUoZXhl
YywgZ2xvYmFsT2JqZWN0KTsKKyAgICBTdHJpbmcgbW9kdWxlS2V5ID0ga2V5LnRvU3RyaW5nKGV4
ZWMpLT52YWx1ZShleGVjKTsKKyAgICBpZiAoZXhlYy0+aGFkRXhjZXB0aW9uKCkpIHsKKyAgICAg
ICAgSlNWYWx1ZSBleGNlcHRpb24gPSBleGVjLT5leGNlcHRpb24oKS0+dmFsdWUoKTsKKyAgICAg
ICAgZXhlYy0+Y2xlYXJFeGNlcHRpb24oKTsKKyAgICAgICAgZGVmZXJyZWQtPnJlamVjdChleGVj
LCBleGNlcHRpb24pOworICAgICAgICByZXR1cm4gZGVmZXJyZWQtPnByb21pc2UoKTsKKyAgICB9
CisgICAgZGVmZXJyZWQtPnJlamVjdChleGVjLCBjcmVhdGVFcnJvcihleGVjLCBtYWtlU3RyaW5n
KCJDb3VsZCBub3Qgb3BlbiB0aGUgbW9kdWxlICciLCBtb2R1bGVLZXksICInLiIpKSk7CisgICAg
cmV0dXJuIGRlZmVycmVkLT5wcm9taXNlKCk7Cit9CisKK0pTVmFsdWUgTW9kdWxlTG9hZGVyT2Jq
ZWN0Ojp0cmFuc2xhdGUoRXhlY1N0YXRlKiBleGVjLCBKU1ZhbHVlIGtleSwgSlNWYWx1ZSBwYXls
b2FkKQoreworICAgIEpTR2xvYmFsT2JqZWN0KiBnbG9iYWxPYmplY3QgPSBleGVjLT5sZXhpY2Fs
R2xvYmFsT2JqZWN0KCk7CisgICAgaWYgKGdsb2JhbE9iamVjdC0+Z2xvYmFsT2JqZWN0TWV0aG9k
VGFibGUoKS0+bG9hZGVyVHJhbnNsYXRlKQorICAgICAgICByZXR1cm4gZ2xvYmFsT2JqZWN0LT5n
bG9iYWxPYmplY3RNZXRob2RUYWJsZSgpLT5sb2FkZXJUcmFuc2xhdGUoZ2xvYmFsT2JqZWN0LCBl
eGVjLCBrZXksIHBheWxvYWQpOworICAgIEpTUHJvbWlzZURlZmVycmVkKiBkZWZlcnJlZCA9IEpT
UHJvbWlzZURlZmVycmVkOjpjcmVhdGUoZXhlYywgZ2xvYmFsT2JqZWN0KTsKKyAgICBkZWZlcnJl
ZC0+cmVzb2x2ZShleGVjLCBwYXlsb2FkKTsKKyAgICByZXR1cm4gZGVmZXJyZWQtPnByb21pc2Uo
KTsKK30KKworSlNWYWx1ZSBNb2R1bGVMb2FkZXJPYmplY3Q6Omluc3RhbnRpYXRlKEV4ZWNTdGF0
ZSogZXhlYywgSlNWYWx1ZSBrZXksIEpTVmFsdWUgc291cmNlKQoreworICAgIEpTR2xvYmFsT2Jq
ZWN0KiBnbG9iYWxPYmplY3QgPSBleGVjLT5sZXhpY2FsR2xvYmFsT2JqZWN0KCk7CisgICAgaWYg
KGdsb2JhbE9iamVjdC0+Z2xvYmFsT2JqZWN0TWV0aG9kVGFibGUoKS0+bG9hZGVySW5zdGFudGlh
dGUpCisgICAgICAgIHJldHVybiBnbG9iYWxPYmplY3QtPmdsb2JhbE9iamVjdE1ldGhvZFRhYmxl
KCktPmxvYWRlckluc3RhbnRpYXRlKGdsb2JhbE9iamVjdCwgZXhlYywga2V5LCBzb3VyY2UpOwor
ICAgIEpTUHJvbWlzZURlZmVycmVkKiBkZWZlcnJlZCA9IEpTUHJvbWlzZURlZmVycmVkOjpjcmVh
dGUoZXhlYywgZ2xvYmFsT2JqZWN0KTsKKyAgICBkZWZlcnJlZC0+cmVzb2x2ZShleGVjLCBqc1Vu
ZGVmaW5lZCgpKTsKKyAgICByZXR1cm4gZGVmZXJyZWQtPnByb21pc2UoKTsKK30KKworLy8gLS0t
LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tIEhvb2sgRnVuY3Rpb25zIC0tLS0tLS0tLS0tLS0t
LS0tLS0tLS0tLS0tLQorCitFbmNvZGVkSlNWYWx1ZSBKU0NfSE9TVF9DQUxMIG1vZHVsZUxvYWRl
ck9iamVjdFBhcnNlTW9kdWxlKEV4ZWNTdGF0ZSogZXhlYykKK3sKKyAgICBWTSYgdm0gPSBleGVj
LT52bSgpOworICAgIFN0cmluZyBzb3VyY2UgPSBleGVjLT5hcmd1bWVudCgwKS50b1N0cmluZyhl
eGVjKS0+dmFsdWUoZXhlYyk7CisgICAgaWYgKGV4ZWMtPmhhZEV4Y2VwdGlvbigpKQorICAgICAg
ICByZXR1cm4gSlNWYWx1ZTo6ZW5jb2RlKGpzVW5kZWZpbmVkKCkpOworCisgICAgLy8gRklYTUU6
IENvbnN0cnVjdCBTb3VyY2VDb2RlIHdpdGggdGhlIGxvY2F0aW9uIGlkZW50aWZpZXIuCisgICAg
U291cmNlQ29kZSBzb3VyY2VDb2RlID0gbWFrZVNvdXJjZShzb3VyY2UpOworCisgICAgUGFyc2Vy
RXJyb3IgZXJyb3I7CisgICAgc3RkOjp1bmlxdWVfcHRyPE1vZHVsZVByb2dyYW1Ob2RlPiBtb2R1
bGVQcm9ncmFtTm9kZSA9IHBhcnNlPE1vZHVsZVByb2dyYW1Ob2RlPigKKyAgICAgICAgJnZtLCBz
b3VyY2VDb2RlLCBJZGVudGlmaWVyKCksIEpTUGFyc2VyQnVpbHRpbk1vZGU6Ok5vdEJ1aWx0aW4s
CisgICAgICAgIEpTUGFyc2VyU3RyaWN0TW9kZTo6U3RyaWN0LCBTb3VyY2VQYXJzZU1vZGU6Ok1v
ZHVsZUFuYWx5emVNb2RlLCBlcnJvcik7CisKKyAgICBpZiAoZXJyb3IuaXNWYWxpZCgpKSB7Cisg
ICAgICAgIHRocm93Vk1FcnJvcihleGVjLCBlcnJvci50b0Vycm9yT2JqZWN0KGV4ZWMtPmxleGlj
YWxHbG9iYWxPYmplY3QoKSwgc291cmNlQ29kZSkpOworICAgICAgICByZXR1cm4gSlNWYWx1ZTo6
ZW5jb2RlKGpzVW5kZWZpbmVkKCkpOworICAgIH0KKyAgICBBU1NFUlQobW9kdWxlUHJvZ3JhbU5v
ZGUpOworCisgICAgTW9kdWxlQW5hbHl6ZXIgbW9kdWxlQW5hbHl6ZXIoZXhlYywgbW9kdWxlUHJv
Z3JhbU5vZGUtPnZhckRlY2xhcmF0aW9ucygpLCBtb2R1bGVQcm9ncmFtTm9kZS0+bGV4aWNhbFZh
cmlhYmxlcygpKTsKKyAgICByZXR1cm4gSlNWYWx1ZTo6ZW5jb2RlKG1vZHVsZUFuYWx5emVyLmFu
YWx5emUoKm1vZHVsZVByb2dyYW1Ob2RlKSk7Cit9CisKK0VuY29kZWRKU1ZhbHVlIEpTQ19IT1NU
X0NBTEwgbW9kdWxlTG9hZGVyT2JqZWN0UmVxdWVzdGVkTW9kdWxlcyhFeGVjU3RhdGUqIGV4ZWMp
Cit7CisgICAgSlNNb2R1bGVSZWNvcmQqIG1vZHVsZVJlY29yZCA9IGpzRHluYW1pY0Nhc3Q8SlNN
b2R1bGVSZWNvcmQqPihleGVjLT5hcmd1bWVudCgwKSk7CisgICAgaWYgKCFtb2R1bGVSZWNvcmQp
CisgICAgICAgIHJldHVybiBKU1ZhbHVlOjplbmNvZGUoY29uc3RydWN0RW1wdHlBcnJheShleGVj
LCBudWxscHRyKSk7CisKKyAgICBKU0FycmF5KiByZXN1bHQgPSBjb25zdHJ1Y3RFbXB0eUFycmF5
KGV4ZWMsIG51bGxwdHIsIG1vZHVsZVJlY29yZC0+cmVxdWVzdGVkTW9kdWxlcygpLnNpemUoKSk7
CisgICAgc2l6ZV90IGkgPSAwOworICAgIGZvciAoYXV0byYga2V5IDogbW9kdWxlUmVjb3JkLT5y
ZXF1ZXN0ZWRNb2R1bGVzKCkpCisgICAgICAgIHJlc3VsdC0+cHV0RGlyZWN0SW5kZXgoZXhlYywg
aSsrLCBqc1N0cmluZyhleGVjLCBrZXkuZ2V0KCkpKTsKKworICAgIHJldHVybiBKU1ZhbHVlOjpl
bmNvZGUocmVzdWx0KTsKK30KKworRW5jb2RlZEpTVmFsdWUgSlNDX0hPU1RfQ0FMTCBtb2R1bGVM
b2FkZXJPYmplY3RSZXNvbHZlKEV4ZWNTdGF0ZSogZXhlYykKK3sKKyAgICAvLyBIb29rIHBvaW50
LCBMb2FkZXIucmVzb2x2ZS4KKyAgICAvLyBodHRwczovL3doYXR3Zy5naXRodWIuaW8vbG9hZGVy
LyNicm93c2VyLXJlc29sdmUKKyAgICAvLyBUYWtlIHRoZSBuYW1lIGFuZCByZXNvbHZlIGl0IHRv
IHRoZSB1bmlxdWUgaWRlbnRpZmllciBmb3IgdGhlIHJlc291cmNlIGxvY2F0aW9uLgorICAgIC8v
IEZvciBleGFtcGxlLCB0YWtlIHRoZSAianF1ZXJ5IiBhbmQgcmV0dXJuIHRoZSBVUkwgZm9yIHRo
ZSByZXNvdXJjZS4KKyAgICBNb2R1bGVMb2FkZXJPYmplY3QqIGxvYWRlciA9IGpzRHluYW1pY0Nh
c3Q8TW9kdWxlTG9hZGVyT2JqZWN0Kj4oZXhlYy0+dGhpc1ZhbHVlKCkpOworICAgIGlmICghbG9h
ZGVyKQorICAgICAgICByZXR1cm4gSlNWYWx1ZTo6ZW5jb2RlKGpzVW5kZWZpbmVkKCkpOworICAg
IHJldHVybiBKU1ZhbHVlOjplbmNvZGUobG9hZGVyLT5yZXNvbHZlKGV4ZWMsIGV4ZWMtPmFyZ3Vt
ZW50KDApLCBleGVjLT5hcmd1bWVudCgxKSkpOworfQorCitFbmNvZGVkSlNWYWx1ZSBKU0NfSE9T
VF9DQUxMIG1vZHVsZUxvYWRlck9iamVjdEZldGNoKEV4ZWNTdGF0ZSogZXhlYykKK3sKKyAgICAv
LyBIb29rIHBvaW50LCBMb2FkZXIuZmV0Y2gKKyAgICAvLyBodHRwczovL3doYXR3Zy5naXRodWIu
aW8vbG9hZGVyLyNicm93c2VyLWZldGNoCisgICAgLy8gVGFrZSB0aGUga2V5IGFuZCBmZXRjaCB0
aGUgcmVzb3VyY2UgYWN0dWFsbHkuCisgICAgTW9kdWxlTG9hZGVyT2JqZWN0KiBsb2FkZXIgPSBq
c0R5bmFtaWNDYXN0PE1vZHVsZUxvYWRlck9iamVjdCo+KGV4ZWMtPnRoaXNWYWx1ZSgpKTsKKyAg
ICBpZiAoIWxvYWRlcikKKyAgICAgICAgcmV0dXJuIEpTVmFsdWU6OmVuY29kZShqc1VuZGVmaW5l
ZCgpKTsKKyAgICByZXR1cm4gSlNWYWx1ZTo6ZW5jb2RlKGxvYWRlci0+ZmV0Y2goZXhlYywgZXhl
Yy0+YXJndW1lbnQoMCkpKTsKK30KKworRW5jb2RlZEpTVmFsdWUgSlNDX0hPU1RfQ0FMTCBtb2R1
bGVMb2FkZXJPYmplY3RUcmFuc2xhdGUoRXhlY1N0YXRlKiBleGVjKQoreworICAgIC8vIEhvb2sg
cG9pbnQsIExvYWRlci50cmFuc2xhdGUKKyAgICAvLyBodHRwczovL3doYXR3Zy5naXRodWIuaW8v
bG9hZGVyLyNicm93c2VyLXRyYW5zbGF0ZQorICAgIC8vIFRha2UgdGhlIGtleSBhbmQgdGhlIGZl
dGNoZWQgc291cmNlIGNvZGUgYW5kIHRyYW5zbGF0ZSBpdCB0byB0aGUgRVM2IHNvdXJjZSBjb2Rl
LgorICAgIC8vIEl0IG1heSBiZSB1c2VkIGZvciB0aGUgdHJhbnNwaWxlcnMgaW4gdGhlIGZ1dHVy
ZS4KKyAgICBNb2R1bGVMb2FkZXJPYmplY3QqIGxvYWRlciA9IGpzRHluYW1pY0Nhc3Q8TW9kdWxl
TG9hZGVyT2JqZWN0Kj4oZXhlYy0+dGhpc1ZhbHVlKCkpOworICAgIGlmICghbG9hZGVyKQorICAg
ICAgICByZXR1cm4gSlNWYWx1ZTo6ZW5jb2RlKGpzVW5kZWZpbmVkKCkpOworICAgIHJldHVybiBK
U1ZhbHVlOjplbmNvZGUobG9hZGVyLT50cmFuc2xhdGUoZXhlYywgZXhlYy0+YXJndW1lbnQoMCks
IGV4ZWMtPmFyZ3VtZW50KDEpKSk7Cit9CisKK0VuY29kZWRKU1ZhbHVlIEpTQ19IT1NUX0NBTEwg
bW9kdWxlTG9hZGVyT2JqZWN0SW5zdGFudGlhdGUoRXhlY1N0YXRlKiBleGVjKQoreworICAgIC8v
IEhvb2sgcG9pbnQsIExvYWRlci5pbnN0YW50aWF0ZQorICAgIC8vIGh0dHBzOi8vd2hhdHdnLmdp
dGh1Yi5pby9sb2FkZXIvI2Jyb3dzZXItaW5zdGFudGlhdGUKKyAgICAvLyBUYWtlIHRoZSBrZXkg
YW5kIHRoZSB0cmFuc2xhdGVkIHNvdXJjZSBjb2RlLgorICAgIC8vIEl0IGhhcyB0aGUgY2hhbmNl
IHRvIHByb3ZpZGUgdGhlIG9wdGlvbmFsIG1vZHVsZSBpbnN0YW5jZSB0aGF0IGlzIGRpZmZlcmVu
dCBmcm9tCisgICAgLy8gdGhlIG9yZGluYXJ5IG9uZS4KKyAgICBNb2R1bGVMb2FkZXJPYmplY3Qq
IGxvYWRlciA9IGpzRHluYW1pY0Nhc3Q8TW9kdWxlTG9hZGVyT2JqZWN0Kj4oZXhlYy0+dGhpc1Zh
bHVlKCkpOworICAgIGlmICghbG9hZGVyKQorICAgICAgICByZXR1cm4gSlNWYWx1ZTo6ZW5jb2Rl
KGpzVW5kZWZpbmVkKCkpOworICAgIHJldHVybiBKU1ZhbHVlOjplbmNvZGUobG9hZGVyLT5pbnN0
YW50aWF0ZShleGVjLCBleGVjLT5hcmd1bWVudCgwKSwgZXhlYy0+YXJndW1lbnQoMSkpKTsKK30K
KworfSAvLyBuYW1lc3BhY2UgSlNDCmRpZmYgLS1naXQgYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUv
cnVudGltZS9Nb2R1bGVMb2FkZXJPYmplY3QuaCBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50
aW1lL01vZHVsZUxvYWRlck9iamVjdC5oCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAuLjc1NGU0NDFmNDBjZDZmNTZhM2E2
YTJiY2ZkNGE0Mzk5OWI5YzA0NzgKLS0tIC9kZXYvbnVsbAorKysgYi9Tb3VyY2UvSmF2YVNjcmlw
dENvcmUvcnVudGltZS9Nb2R1bGVMb2FkZXJPYmplY3QuaApAQCAtMCwwICsxLDY4IEBACisvKgor
ICogQ29weXJpZ2h0IChDKSAyMDE1IEFwcGxlIEluYy4gQWxsIFJpZ2h0cyBSZXNlcnZlZC4KKyAq
CisgKiBSZWRpc3RyaWJ1dGlvbiBhbmQgdXNlIGluIHNvdXJjZSBhbmQgYmluYXJ5IGZvcm1zLCB3
aXRoIG9yIHdpdGhvdXQKKyAqIG1vZGlmaWNhdGlvbiwgYXJlIHBlcm1pdHRlZCBwcm92aWRlZCB0
aGF0IHRoZSBmb2xsb3dpbmcgY29uZGl0aW9ucworICogYXJlIG1ldDoKKyAqIDEuIFJlZGlzdHJp
YnV0aW9ucyBvZiBzb3VyY2UgY29kZSBtdXN0IHJldGFpbiB0aGUgYWJvdmUgY29weXJpZ2h0Cisg
KiAgICBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRp
c2NsYWltZXIuCisgKiAyLiBSZWRpc3RyaWJ1dGlvbnMgaW4gYmluYXJ5IGZvcm0gbXVzdCByZXBy
b2R1Y2UgdGhlIGFib3ZlIGNvcHlyaWdodAorICogICAgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29u
ZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyIGluIHRoZQorICogICAgZG9jdW1l
bnRhdGlvbiBhbmQvb3Igb3RoZXIgbWF0ZXJpYWxzIHByb3ZpZGVkIHdpdGggdGhlIGRpc3RyaWJ1
dGlvbi4KKyAqCisgKiBUSElTIFNPRlRXQVJFIElTIFBST1ZJREVEIEJZIEFQUExFIElOQy4gYGBB
UyBJUycnIEFORCBBTlkKKyAqIEVYUFJFU1MgT1IgSU1QTElFRCBXQVJSQU5USUVTLCBJTkNMVURJ
TkcsIEJVVCBOT1QgTElNSVRFRCBUTywgVEhFCisgKiBJTVBMSUVEIFdBUlJBTlRJRVMgT0YgTUVS
Q0hBTlRBQklMSVRZIEFORCBGSVRORVNTIEZPUiBBIFBBUlRJQ1VMQVIKKyAqIFBVUlBPU0UgQVJF
IERJU0NMQUlNRUQuICBJTiBOTyBFVkVOVCBTSEFMTCBBUFBMRSBJTkMuIE9SCisgKiBDT05UUklC
VVRPUlMgQkUgTElBQkxFIEZPUiBBTlkgRElSRUNULCBJTkRJUkVDVCwgSU5DSURFTlRBTCwgU1BF
Q0lBTCwKKyAqIEVYRU1QTEFSWSwgT1IgQ09OU0VRVUVOVElBTCBEQU1BR0VTIChJTkNMVURJTkcs
IEJVVCBOT1QgTElNSVRFRCBUTywKKyAqIFBST0NVUkVNRU5UIE9GIFNVQlNUSVRVVEUgR09PRFMg
T1IgU0VSVklDRVM7IExPU1MgT0YgVVNFLCBEQVRBLCBPUgorICogUFJPRklUUzsgT1IgQlVTSU5F
U1MgSU5URVJSVVBUSU9OKSBIT1dFVkVSIENBVVNFRCBBTkQgT04gQU5ZIFRIRU9SWQorICogT0Yg
TElBQklMSVRZLCBXSEVUSEVSIElOIENPTlRSQUNULCBTVFJJQ1QgTElBQklMSVRZLCBPUiBUT1JU
CisgKiAoSU5DTFVESU5HIE5FR0xJR0VOQ0UgT1IgT1RIRVJXSVNFKSBBUklTSU5HIElOIEFOWSBX
QVkgT1VUIE9GIFRIRSBVU0UKKyAqIE9GIFRISVMgU09GVFdBUkUsIEVWRU4gSUYgQURWSVNFRCBP
RiBUSEUgUE9TU0lCSUxJVFkgT0YgU1VDSCBEQU1BR0UuCisgKi8KKworI2lmbmRlZiBNb2R1bGVM
b2FkZXJPYmplY3RfaAorI2RlZmluZSBNb2R1bGVMb2FkZXJPYmplY3RfaAorCisjaW5jbHVkZSAi
SlNPYmplY3QuaCIKKworbmFtZXNwYWNlIEpTQyB7CisKK2NsYXNzIE1vZHVsZUxvYWRlck9iamVj
dCA6IHB1YmxpYyBKU05vbkZpbmFsT2JqZWN0IHsKK3ByaXZhdGU6CisgICAgTW9kdWxlTG9hZGVy
T2JqZWN0KFZNJiwgU3RydWN0dXJlKik7CisKK3B1YmxpYzoKKyAgICB0eXBlZGVmIEpTTm9uRmlu
YWxPYmplY3QgQmFzZTsKKyAgICBzdGF0aWMgY29uc3QgdW5zaWduZWQgU3RydWN0dXJlRmxhZ3Mg
PSBCYXNlOjpTdHJ1Y3R1cmVGbGFncyB8IE92ZXJyaWRlc0dldE93blByb3BlcnR5U2xvdDsKKwor
ICAgIHN0YXRpYyBNb2R1bGVMb2FkZXJPYmplY3QqIGNyZWF0ZShWTSYgdm0sIEpTR2xvYmFsT2Jq
ZWN0KiBnbG9iYWxPYmplY3QsIFN0cnVjdHVyZSogc3RydWN0dXJlKQorICAgIHsKKyAgICAgICAg
TW9kdWxlTG9hZGVyT2JqZWN0KiBvYmplY3QgPSBuZXcgKE5vdE51bGwsIGFsbG9jYXRlQ2VsbDxN
b2R1bGVMb2FkZXJPYmplY3Q+KHZtLmhlYXApKSBNb2R1bGVMb2FkZXJPYmplY3Qodm0sIHN0cnVj
dHVyZSk7CisgICAgICAgIG9iamVjdC0+ZmluaXNoQ3JlYXRpb24odm0sIGdsb2JhbE9iamVjdCk7
CisgICAgICAgIHJldHVybiBvYmplY3Q7CisgICAgfQorCisgICAgREVDTEFSRV9JTkZPOworCisg
ICAgc3RhdGljIFN0cnVjdHVyZSogY3JlYXRlU3RydWN0dXJlKFZNJiB2bSwgSlNHbG9iYWxPYmpl
Y3QqIGdsb2JhbE9iamVjdCwgSlNWYWx1ZSBwcm90b3R5cGUpCisgICAgeworICAgICAgICByZXR1
cm4gU3RydWN0dXJlOjpjcmVhdGUodm0sIGdsb2JhbE9iamVjdCwgcHJvdG90eXBlLCBUeXBlSW5m
byhPYmplY3RUeXBlLCBTdHJ1Y3R1cmVGbGFncyksIGluZm8oKSk7CisgICAgfQorCisgICAgSlNW
YWx1ZSByZXNvbHZlKEV4ZWNTdGF0ZSosIEpTVmFsdWUgbmFtZSwgSlNWYWx1ZSByZWZlcnJlcik7
CisgICAgSlNWYWx1ZSBmZXRjaChFeGVjU3RhdGUqLCBKU1ZhbHVlIGtleSk7CisgICAgSlNWYWx1
ZSB0cmFuc2xhdGUoRXhlY1N0YXRlKiwgSlNWYWx1ZSBrZXksIEpTVmFsdWUgcGF5bG9hZCk7Cisg
ICAgSlNWYWx1ZSBpbnN0YW50aWF0ZShFeGVjU3RhdGUqLCBKU1ZhbHVlIGtleSwgSlNWYWx1ZSBz
b3VyY2UpOworCisgICAgc3RhdGljIGJvb2wgZ2V0T3duUHJvcGVydHlTbG90KEpTT2JqZWN0Kiwg
RXhlY1N0YXRlKiwgUHJvcGVydHlOYW1lLCBQcm9wZXJ0eVNsb3QmKTsKKworcHJvdGVjdGVkOgor
ICAgIHZvaWQgZmluaXNoQ3JlYXRpb24oVk0mLCBKU0dsb2JhbE9iamVjdCopOworfTsKKworfSAv
LyBuYW1lc3BhY2UgSlNDCisKKyNlbmRpZiAvLyBNb2R1bGVMb2FkZXJPYmplY3RfaApkaWZmIC0t
Z2l0IGEvU291cmNlL1dlYkNvcmUvYmluZGluZ3MvanMvSlNET01XaW5kb3dCYXNlLmNwcCBiL1Nv
dXJjZS9XZWJDb3JlL2JpbmRpbmdzL2pzL0pTRE9NV2luZG93QmFzZS5jcHAKaW5kZXggOWFiMGE4
ZjBkMGZiZDc4ZTVlNTdkNTgwNDc3ZTY1NWNiODk1OTVkMS4uYTI5MGRkYzllNTgxYWNkNjM0MzAx
NzAwYmFmODI3Y2ExYTRlZmQwMiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvYmluZGluZ3Mv
anMvSlNET01XaW5kb3dCYXNlLmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9iaW5kaW5ncy9qcy9K
U0RPTVdpbmRvd0Jhc2UuY3BwCkBAIC01Niw3ICs1Niw3IEBAIHN0YXRpYyBib29sIHNob3VsZEFs
bG93QWNjZXNzRnJvbShjb25zdCBKU0dsb2JhbE9iamVjdCogdGhpc09iamVjdCwgRXhlY1N0YXRl
KiBlCiAKIGNvbnN0IENsYXNzSW5mbyBKU0RPTVdpbmRvd0Jhc2U6OnNfaW5mbyA9IHsgIldpbmRv
dyIsICZKU0RPTUdsb2JhbE9iamVjdDo6c19pbmZvLCAwLCBDUkVBVEVfTUVUSE9EX1RBQkxFKEpT
RE9NV2luZG93QmFzZSkgfTsKIAotY29uc3QgR2xvYmFsT2JqZWN0TWV0aG9kVGFibGUgSlNET01X
aW5kb3dCYXNlOjpzX2dsb2JhbE9iamVjdE1ldGhvZFRhYmxlID0geyAmc2hvdWxkQWxsb3dBY2Nl
c3NGcm9tLCAmc3VwcG9ydHNQcm9maWxpbmcsICZzdXBwb3J0c1JpY2hTb3VyY2VJbmZvLCAmc2hv
dWxkSW50ZXJydXB0U2NyaXB0LCAmamF2YVNjcmlwdFJ1bnRpbWVGbGFncywgJnF1ZXVlVGFza1Rv
RXZlbnRMb29wLCAmc2hvdWxkSW50ZXJydXB0U2NyaXB0QmVmb3JlVGltZW91dCB9OworY29uc3Qg
R2xvYmFsT2JqZWN0TWV0aG9kVGFibGUgSlNET01XaW5kb3dCYXNlOjpzX2dsb2JhbE9iamVjdE1l
dGhvZFRhYmxlID0geyAmc2hvdWxkQWxsb3dBY2Nlc3NGcm9tLCAmc3VwcG9ydHNQcm9maWxpbmcs
ICZzdXBwb3J0c1JpY2hTb3VyY2VJbmZvLCAmc2hvdWxkSW50ZXJydXB0U2NyaXB0LCAmamF2YVNj
cmlwdFJ1bnRpbWVGbGFncywgJnF1ZXVlVGFza1RvRXZlbnRMb29wLCAmc2hvdWxkSW50ZXJydXB0
U2NyaXB0QmVmb3JlVGltZW91dCwgbnVsbHB0ciwgbnVsbHB0ciwgbnVsbHB0ciwgbnVsbHB0ciB9
OwogCiBKU0RPTVdpbmRvd0Jhc2U6OkpTRE9NV2luZG93QmFzZShWTSYgdm0sIFN0cnVjdHVyZSog
c3RydWN0dXJlLCBQYXNzUmVmUHRyPERPTVdpbmRvdz4gd2luZG93LCBKU0RPTVdpbmRvd1NoZWxs
KiBzaGVsbCkKICAgICA6IEpTRE9NR2xvYmFsT2JqZWN0KHZtLCBzdHJ1Y3R1cmUsICZzaGVsbC0+
d29ybGQoKSwgJnNfZ2xvYmFsT2JqZWN0TWV0aG9kVGFibGUpCmRpZmYgLS1naXQgYS9Tb3VyY2Uv
V2ViQ29yZS9iaW5kaW5ncy9qcy9KU1dvcmtlckdsb2JhbFNjb3BlQmFzZS5jcHAgYi9Tb3VyY2Uv
V2ViQ29yZS9iaW5kaW5ncy9qcy9KU1dvcmtlckdsb2JhbFNjb3BlQmFzZS5jcHAKaW5kZXggYWFh
NWRiYTU1MTcxY2I5NTQxYmE2NWUxZDI0N2FiMjljOWQ5YzdjMy4uNTA0NGJjMTc4MzUxM2I5YjFh
MjZiZDNiZDFjYjVjMDBiNzBhMTBkMCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvYmluZGlu
Z3MvanMvSlNXb3JrZXJHbG9iYWxTY29wZUJhc2UuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL2Jp
bmRpbmdzL2pzL0pTV29ya2VyR2xvYmFsU2NvcGVCYXNlLmNwcApAQCAtNDMsNyArNDMsNyBAQCBu
YW1lc3BhY2UgV2ViQ29yZSB7CiAKIGNvbnN0IENsYXNzSW5mbyBKU1dvcmtlckdsb2JhbFNjb3Bl
QmFzZTo6c19pbmZvID0geyAiV29ya2VyR2xvYmFsU2NvcGUiLCAmSlNET01HbG9iYWxPYmplY3Q6
OnNfaW5mbywgMCwgQ1JFQVRFX01FVEhPRF9UQUJMRShKU1dvcmtlckdsb2JhbFNjb3BlQmFzZSkg
fTsKIAotY29uc3QgR2xvYmFsT2JqZWN0TWV0aG9kVGFibGUgSlNXb3JrZXJHbG9iYWxTY29wZUJh
c2U6OnNfZ2xvYmFsT2JqZWN0TWV0aG9kVGFibGUgPSB7ICZhbGxvd3NBY2Nlc3NGcm9tLCAmc3Vw
cG9ydHNQcm9maWxpbmcsICZzdXBwb3J0c1JpY2hTb3VyY2VJbmZvLCAmc2hvdWxkSW50ZXJydXB0
U2NyaXB0LCAmamF2YVNjcmlwdFJ1bnRpbWVGbGFncywgJnF1ZXVlVGFza1RvRXZlbnRMb29wLCAm
c2hvdWxkSW50ZXJydXB0U2NyaXB0QmVmb3JlVGltZW91dCB9OworY29uc3QgR2xvYmFsT2JqZWN0
TWV0aG9kVGFibGUgSlNXb3JrZXJHbG9iYWxTY29wZUJhc2U6OnNfZ2xvYmFsT2JqZWN0TWV0aG9k
VGFibGUgPSB7ICZhbGxvd3NBY2Nlc3NGcm9tLCAmc3VwcG9ydHNQcm9maWxpbmcsICZzdXBwb3J0
c1JpY2hTb3VyY2VJbmZvLCAmc2hvdWxkSW50ZXJydXB0U2NyaXB0LCAmamF2YVNjcmlwdFJ1bnRp
bWVGbGFncywgJnF1ZXVlVGFza1RvRXZlbnRMb29wLCAmc2hvdWxkSW50ZXJydXB0U2NyaXB0QmVm
b3JlVGltZW91dCwgbnVsbHB0ciwgbnVsbHB0ciwgbnVsbHB0ciwgbnVsbHB0ciB9OwogCiBKU1dv
cmtlckdsb2JhbFNjb3BlQmFzZTo6SlNXb3JrZXJHbG9iYWxTY29wZUJhc2UoSlNDOjpWTSYgdm0s
IEpTQzo6U3RydWN0dXJlKiBzdHJ1Y3R1cmUsIFBhc3NSZWZQdHI8V29ya2VyR2xvYmFsU2NvcGU+
IGltcGwpCiAgICAgOiBKU0RPTUdsb2JhbE9iamVjdCh2bSwgc3RydWN0dXJlLCAmbm9ybWFsV29y
bGQodm0pLCAmc19nbG9iYWxPYmplY3RNZXRob2RUYWJsZSkK
</data>

          </attachment>
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>259085</attachid>
            <date>2015-08-15 01:05:47 -0700</date>
            <delta_ts>2015-08-15 02:28:49 -0700</delta_ts>
            <desc>Patch</desc>
            <filename>bug-147876-20150815010527.patch</filename>
            <type>text/plain</type>
            <size>133405</size>
            <attacher name="Yusuke Suzuki">ysuzuki</attacher>
            
              <data encoding="base64">U3VidmVyc2lvbiBSZXZpc2lvbjogMTg4NDk4CmRpZmYgLS1naXQgYS9Tb3VyY2UvSmF2YVNjcmlw
dENvcmUvQ2hhbmdlTG9nIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL0NoYW5nZUxvZwppbmRleCBm
YmY4YzE0NzE5ODkxZmYzMTliMzA1MGQwZDUxY2FhNzNjNDBlYjU5Li40MDVlZjY4M2UzYzA5NGY4
YjdjZjA0OGM4ZGVjNzdjZGYzMDEzNzU1IDEwMDY0NAotLS0gYS9Tb3VyY2UvSmF2YVNjcmlwdENv
cmUvQ2hhbmdlTG9nCisrKyBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9DaGFuZ2VMb2cKQEAgLTEs
MyArMSwxNTMgQEAKKzIwMTUtMDgtMTUgIFl1c3VrZSBTdXp1a2kgIDx1dGF0YW5lLnRlYUBnbWFp
bC5jb20+CisKKyAgICAgICAgW0VTNl0gcHJvdG90eXBpbmcgbW9kdWxlIGxvYWRlciBpbiBKU0Mg
c2hlbGwKKyAgICAgICAgaHR0cHM6Ly9idWdzLndlYmtpdC5vcmcvc2hvd19idWcuY2dpP2lkPTE0
Nzg3NgorCisgICAgICAgIFJldmlld2VkIGJ5IE5PQk9EWSAoT09QUyEpLgorCisgICAgICAgICog
RGVyaXZlZFNvdXJjZXMubWFrZToKKyAgICAgICAgKiBKYXZhU2NyaXB0Q29yZS54Y29kZXByb2ov
cHJvamVjdC5wYnhwcm9qOgorICAgICAgICAqIGJ1aWx0aW5zL0J1aWx0aW5OYW1lcy5oOgorICAg
ICAgICAoSlNDOjpCdWlsdGluTmFtZXM6Omxvb2tVcFByaXZhdGVOYW1lKToKKyAgICAgICAgKEpT
Qzo6QnVpbHRpbk5hbWVzOjpsb29rVXBQdWJsaWNOYW1lKToKKyAgICAgICAgKEpTQzo6QnVpbHRp
bk5hbWVzOjpnZXRQcml2YXRlTmFtZSk6IERlbGV0ZWQuCisgICAgICAgIChKU0M6OkJ1aWx0aW5O
YW1lczo6Z2V0UHVibGljTmFtZSk6IERlbGV0ZWQuCisgICAgICAgICogYnVpbHRpbnMvTW9kdWxl
TG9hZGVyT2JqZWN0LmpzOiBBZGRlZC4KKyAgICAgICAgKHNldFN0YXRlVG9NYXgpOgorICAgICAg
ICAobmV3UmVnaXN0cnlFbnRyeSk6CisgICAgICAgIChmb3JjZUZ1bGZpbGxQcm9taXNlKToKKyAg
ICAgICAgKGZ1bGZpbGxGZXRjaCk6CisgICAgICAgIChmdWxmaWxsVHJhbnNsYXRlKToKKyAgICAg
ICAgKGZ1bGZpbGxJbnN0YW50aWF0ZSk6CisgICAgICAgIChpbnN0YW50aWF0aW9uKToKKyAgICAg
ICAgKHJlcXVlc3RGZXRjaCk6CisgICAgICAgIChyZXF1ZXN0VHJhbnNsYXRlKToKKyAgICAgICAg
KHJlcXVlc3RJbnN0YW50aWF0ZSk6CisgICAgICAgIChyZXF1ZXN0Q29sbGVjdC5jb2xsZWN0UHJv
bWlzZS50aGlzLnJlcXVlc3RJbnN0YW50aWF0ZS50aGVuLik6CisgICAgICAgIChyZXF1ZXN0Q29s
bGVjdC5jb2xsZWN0UHJvbWlzZS50aGlzLnJlcXVlc3RJbnN0YW50aWF0ZS50aGVuKToKKyAgICAg
ICAgKHJlcXVlc3RDb2xsZWN0KToKKyAgICAgICAgKHJlcXVlc3RJbnN0YW50aWF0ZUFsbCk6Cisg
ICAgICAgIChwcm92aWRlKToKKyAgICAgICAgKiBidWlsdGlucy9PcGVyYXRpb25zLlByb21pc2Uu
anM6CisgICAgICAgICgub25GdWxmaWxsZWQpOgorICAgICAgICAoLm9uUmVqZWN0ZWQpOgorICAg
ICAgICAocHJvbWlzZVRoZW4pOgorICAgICAgICAqIGJ1aWx0aW5zL1Byb21pc2UucHJvdG90eXBl
LmpzOgorICAgICAgICAodGhlbik6CisgICAgICAgIChwcml2YXRlVGhlbik6CisgICAgICAgICgu
b25GdWxmaWxsZWQpOiBEZWxldGVkLgorICAgICAgICAoLm9uUmVqZWN0ZWQpOiBEZWxldGVkLgor
ICAgICAgICAqIGJ1aWx0aW5zL1Byb21pc2VDb25zdHJ1Y3Rvci5qczoKKyAgICAgICAgKHByaXZh
dGVBbGwubmV3UmVzb2x2ZUVsZW1lbnQpOgorICAgICAgICAocHJpdmF0ZUFsbCk6CisgICAgICAg
ICoganNjLmNwcDoKKyAgICAgICAgKHN0cmluZ0Zyb21VVEYpOgorICAgICAgICAoanNjU291cmNl
KToKKyAgICAgICAgKEdsb2JhbE9iamVjdDo6bG9hZGVyRmV0Y2gpOgorICAgICAgICAoZnVuY3Rp
b25DaGVja01vZHVsZVN5bnRheCk6CisgICAgICAgIChkdW1wRXhjZXB0aW9uKToKKyAgICAgICAg
KHJ1bldpdGhTY3JpcHRzKToKKyAgICAgICAgKHByaW50VXNhZ2VTdGF0ZW1lbnQpOgorICAgICAg
ICAoQ29tbWFuZExpbmU6OnBhcnNlQXJndW1lbnRzKToKKyAgICAgICAgKGpzY21haW4pOgorICAg
ICAgICAoQ29tbWFuZExpbmU6OkNvbW1hbmRMaW5lKTogRGVsZXRlZC4KKyAgICAgICAgKiBwYXJz
ZXIvTGV4ZXIuY3BwOgorICAgICAgICAoSlNDOjpMZXhlcjxMQ2hhcj46OnBhcnNlSWRlbnRpZmll
cik6CisgICAgICAgIChKU0M6OkxleGVyPFVDaGFyPjo6cGFyc2VJZGVudGlmaWVyKToKKyAgICAg
ICAgKiBwYXJzZXIvTW9kdWxlQW5hbHl6ZXIuY3BwOgorICAgICAgICAoSlNDOjpNb2R1bGVBbmFs
eXplcjo6TW9kdWxlQW5hbHl6ZXIpOgorICAgICAgICAoSlNDOjpNb2R1bGVBbmFseXplcjo6ZXhw
b3J0VmFyaWFibGUpOgorICAgICAgICAoSlNDOjpNb2R1bGVBbmFseXplcjo6YW5hbHl6ZSk6Cisg
ICAgICAgICogcGFyc2VyL01vZHVsZUFuYWx5emVyLmg6CisgICAgICAgIChKU0M6Ok1vZHVsZUFu
YWx5emVyOjptb2R1bGVSZWNvcmQpOgorICAgICAgICAqIHBhcnNlci9Nb2R1bGVSZWNvcmQuY3Bw
OgorICAgICAgICAoSlNDOjpwcmludGFibGVOYW1lKTogRGVsZXRlZC4KKyAgICAgICAgKEpTQzo6
TW9kdWxlUmVjb3JkOjpkdW1wKTogRGVsZXRlZC4KKyAgICAgICAgKiBwYXJzZXIvTW9kdWxlUmVj
b3JkLmg6CisgICAgICAgIChKU0M6Ok1vZHVsZVJlY29yZDo6SW1wb3J0RW50cnk6OmlzTmFtZXNw
YWNlKTogRGVsZXRlZC4KKyAgICAgICAgKEpTQzo6TW9kdWxlUmVjb3JkOjpjcmVhdGUpOiBEZWxl
dGVkLgorICAgICAgICAoSlNDOjpNb2R1bGVSZWNvcmQ6OmFwcGVuZFJlcXVlc3RlZE1vZHVsZSk6
IERlbGV0ZWQuCisgICAgICAgIChKU0M6Ok1vZHVsZVJlY29yZDo6YWRkSW1wb3J0RW50cnkpOiBE
ZWxldGVkLgorICAgICAgICAoSlNDOjpNb2R1bGVSZWNvcmQ6OmFkZEV4cG9ydEVudHJ5KTogRGVs
ZXRlZC4KKyAgICAgICAgKEpTQzo6TW9kdWxlUmVjb3JkOjphZGRTdGFyRXhwb3J0RW50cnkpOiBE
ZWxldGVkLgorICAgICAgICAqIHBhcnNlci9Ob2Rlcy5oOgorICAgICAgICAqIHBhcnNlci9Ob2Rl
c0FuYWx5emVNb2R1bGUuY3BwOgorICAgICAgICAoSlNDOjpJbXBvcnREZWNsYXJhdGlvbk5vZGU6
OmFuYWx5emVNb2R1bGUpOgorICAgICAgICAoSlNDOjpFeHBvcnRBbGxEZWNsYXJhdGlvbk5vZGU6
OmFuYWx5emVNb2R1bGUpOgorICAgICAgICAoSlNDOjpFeHBvcnROYW1lZERlY2xhcmF0aW9uTm9k
ZTo6YW5hbHl6ZU1vZHVsZSk6CisgICAgICAgICogcnVudGltZS9Db21tb25JZGVudGlmaWVycy5j
cHA6CisgICAgICAgIChKU0M6OkNvbW1vbklkZW50aWZpZXJzOjpsb29rVXBQcml2YXRlTmFtZSk6
CisgICAgICAgIChKU0M6OkNvbW1vbklkZW50aWZpZXJzOjpsb29rVXBQdWJsaWNOYW1lKToKKyAg
ICAgICAgKEpTQzo6Q29tbW9uSWRlbnRpZmllcnM6OmdldFByaXZhdGVOYW1lKTogRGVsZXRlZC4K
KyAgICAgICAgKEpTQzo6Q29tbW9uSWRlbnRpZmllcnM6OmdldFB1YmxpY05hbWUpOiBEZWxldGVk
LgorICAgICAgICAqIHJ1bnRpbWUvQ29tbW9uSWRlbnRpZmllcnMuaDoKKyAgICAgICAgKiBydW50
aW1lL0NvbXBsZXRpb24uY3BwOgorICAgICAgICAoSlNDOjpjaGVja01vZHVsZVN5bnRheCk6Cisg
ICAgICAgIChKU0M6OmV2YWx1YXRlTW9kdWxlKToKKyAgICAgICAgKiBydW50aW1lL0NvbXBsZXRp
b24uaDoKKyAgICAgICAgKiBydW50aW1lL0V4Y2VwdGlvbkhlbHBlcnMuY3BwOgorICAgICAgICAo
SlNDOjpjcmVhdGVVbmRlZmluZWRWYXJpYWJsZUVycm9yKToKKyAgICAgICAgKiBydW50aW1lL0lk
ZW50aWZpZXIuaDoKKyAgICAgICAgKiBydW50aW1lL0pTR2xvYmFsT2JqZWN0LmNwcDoKKyAgICAg
ICAgKEpTQzo6SlNHbG9iYWxPYmplY3Q6OmluaXQpOgorICAgICAgICAoSlNDOjpKU0dsb2JhbE9i
amVjdDo6dmlzaXRDaGlsZHJlbik6CisgICAgICAgICogcnVudGltZS9KU0dsb2JhbE9iamVjdC5o
OgorICAgICAgICAoSlNDOjpKU0dsb2JhbE9iamVjdDo6bW9kdWxlTG9hZGVyKToKKyAgICAgICAg
KEpTQzo6SlNHbG9iYWxPYmplY3Q6Om1vZHVsZVJlY29yZFN0cnVjdHVyZSk6CisgICAgICAgIChK
U0M6OkpTR2xvYmFsT2JqZWN0Ojpwcm9taXNlQ29uc3RydWN0b3IpOiBEZWxldGVkLgorICAgICAg
ICAoSlNDOjpKU0dsb2JhbE9iamVjdDo6cHJvbWlzZVByb3RvdHlwZSk6IERlbGV0ZWQuCisgICAg
ICAgIChKU0M6OkpTR2xvYmFsT2JqZWN0Ojpwcm9taXNlU3RydWN0dXJlKTogRGVsZXRlZC4KKyAg
ICAgICAgKiBydW50aW1lL0pTTW9kdWxlUmVjb3JkLmNwcDogUmVuYW1lZCBmcm9tIFNvdXJjZS9K
YXZhU2NyaXB0Q29yZS9wYXJzZXIvTW9kdWxlUmVjb3JkLmNwcC4KKyAgICAgICAgKEpTQzo6SlNN
b2R1bGVSZWNvcmQ6OmRlc3Ryb3kpOgorICAgICAgICAoSlNDOjpKU01vZHVsZVJlY29yZDo6Zmlu
aXNoQ3JlYXRpb24pOgorICAgICAgICAoSlNDOjpwcmludGFibGVOYW1lKToKKyAgICAgICAgKEpT
Qzo6SlNNb2R1bGVSZWNvcmQ6OmR1bXApOgorICAgICAgICAqIHJ1bnRpbWUvSlNNb2R1bGVSZWNv
cmQuaDogUmVuYW1lZCBmcm9tIFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9wYXJzZXIvTW9kdWxlUmVj
b3JkLmguCisgICAgICAgIChKU0M6OkpTTW9kdWxlUmVjb3JkOjpJbXBvcnRFbnRyeTo6aXNOYW1l
c3BhY2UpOgorICAgICAgICAoSlNDOjpKU01vZHVsZVJlY29yZDo6Y3JlYXRlU3RydWN0dXJlKToK
KyAgICAgICAgKEpTQzo6SlNNb2R1bGVSZWNvcmQ6OmNyZWF0ZSk6CisgICAgICAgIChKU0M6OkpT
TW9kdWxlUmVjb3JkOjpyZXF1ZXN0ZWRNb2R1bGVzKToKKyAgICAgICAgKEpTQzo6SlNNb2R1bGVS
ZWNvcmQ6OkpTTW9kdWxlUmVjb3JkKToKKyAgICAgICAgKEpTQzo6SlNNb2R1bGVSZWNvcmQ6OmFw
cGVuZFJlcXVlc3RlZE1vZHVsZSk6CisgICAgICAgIChKU0M6OkpTTW9kdWxlUmVjb3JkOjphZGRJ
bXBvcnRFbnRyeSk6CisgICAgICAgIChKU0M6OkpTTW9kdWxlUmVjb3JkOjphZGRFeHBvcnRFbnRy
eSk6CisgICAgICAgIChKU0M6OkpTTW9kdWxlUmVjb3JkOjphZGRTdGFyRXhwb3J0RW50cnkpOgor
ICAgICAgICAqIHJ1bnRpbWUvSlNQcm9taXNlQ29uc3RydWN0b3IuY3BwOgorICAgICAgICAoSlND
OjpKU1Byb21pc2VDb25zdHJ1Y3Rvcjo6ZmluaXNoQ3JlYXRpb24pOgorICAgICAgICAqIHJ1bnRp
bWUvSlNQcm9taXNlRGVmZXJyZWQuY3BwOgorICAgICAgICAoSlNDOjpjYWxsRnVuY3Rpb24pOgor
ICAgICAgICAoSlNDOjpKU1Byb21pc2VEZWZlcnJlZDo6cmVzb2x2ZSk6CisgICAgICAgIChKU0M6
OkpTUHJvbWlzZURlZmVycmVkOjpyZWplY3QpOgorICAgICAgICAqIHJ1bnRpbWUvSlNQcm9taXNl
RGVmZXJyZWQuaDoKKyAgICAgICAgKiBydW50aW1lL0pTUHJvbWlzZVByb3RvdHlwZS5jcHA6Cisg
ICAgICAgIChKU0M6OkpTUHJvbWlzZVByb3RvdHlwZTo6Y3JlYXRlKToKKyAgICAgICAgKEpTQzo6
SlNQcm9taXNlUHJvdG90eXBlOjpKU1Byb21pc2VQcm90b3R5cGUpOgorICAgICAgICAoSlNDOjpK
U1Byb21pc2VQcm90b3R5cGU6OmZpbmlzaENyZWF0aW9uKToKKyAgICAgICAgKiBydW50aW1lL0pT
UHJvbWlzZVByb3RvdHlwZS5oOgorICAgICAgICAqIHJ1bnRpbWUvTWFwUHJvdG90eXBlLmNwcDoK
KyAgICAgICAgKEpTQzo6TWFwUHJvdG90eXBlOjpmaW5pc2hDcmVhdGlvbik6CisgICAgICAgICog
cnVudGltZS9Nb2R1bGVMb2FkZXJPYmplY3QuY3BwOiBBZGRlZC4KKyAgICAgICAgKEpTQzo6TW9k
dWxlTG9hZGVyT2JqZWN0OjpNb2R1bGVMb2FkZXJPYmplY3QpOgorICAgICAgICAoSlNDOjpNb2R1
bGVMb2FkZXJPYmplY3Q6OmZpbmlzaENyZWF0aW9uKToKKyAgICAgICAgKEpTQzo6TW9kdWxlTG9h
ZGVyT2JqZWN0OjpnZXRPd25Qcm9wZXJ0eVNsb3QpOgorICAgICAgICAoSlNDOjpwcmludGFibGVN
b2R1bGVLZXkpOgorICAgICAgICAoSlNDOjpNb2R1bGVMb2FkZXJPYmplY3Q6OnByb3ZpZGUpOgor
ICAgICAgICAoSlNDOjpNb2R1bGVMb2FkZXJPYmplY3Q6OnJlcXVlc3RJbnN0YW50aWF0ZUFsbCk6
CisgICAgICAgIChKU0M6Ok1vZHVsZUxvYWRlck9iamVjdDo6cmVzb2x2ZSk6CisgICAgICAgIChK
U0M6Ok1vZHVsZUxvYWRlck9iamVjdDo6ZmV0Y2gpOgorICAgICAgICAoSlNDOjpNb2R1bGVMb2Fk
ZXJPYmplY3Q6OnRyYW5zbGF0ZSk6CisgICAgICAgIChKU0M6Ok1vZHVsZUxvYWRlck9iamVjdDo6
aW5zdGFudGlhdGUpOgorICAgICAgICAoSlNDOjptb2R1bGVMb2FkZXJPYmplY3RQYXJzZU1vZHVs
ZSk6CisgICAgICAgIChKU0M6Om1vZHVsZUxvYWRlck9iamVjdFJlcXVlc3RlZE1vZHVsZXMpOgor
ICAgICAgICAoSlNDOjptb2R1bGVMb2FkZXJPYmplY3RSZXNvbHZlKToKKyAgICAgICAgKEpTQzo6
bW9kdWxlTG9hZGVyT2JqZWN0RmV0Y2gpOgorICAgICAgICAoSlNDOjptb2R1bGVMb2FkZXJPYmpl
Y3RUcmFuc2xhdGUpOgorICAgICAgICAoSlNDOjptb2R1bGVMb2FkZXJPYmplY3RJbnN0YW50aWF0
ZSk6CisgICAgICAgICogcnVudGltZS9Nb2R1bGVMb2FkZXJPYmplY3QuaDogQWRkZWQuCisgICAg
ICAgIChKU0M6Ok1vZHVsZUxvYWRlck9iamVjdDo6Y3JlYXRlKToKKyAgICAgICAgKEpTQzo6TW9k
dWxlTG9hZGVyT2JqZWN0OjpjcmVhdGVTdHJ1Y3R1cmUpOgorICAgICAgICAqIHJ1bnRpbWUvT3B0
aW9ucy5oOgorCiAyMDE1LTA4LTE0ICBSeW9zdWtlIE5pd2EgIDxybml3YUB3ZWJraXQub3JnPgog
CiAgICAgICAgIEVTNiBjbGFzcyBzeW50YXggc2hvdWxkIGFsbG93IGNvbXB1dGVkIG5hbWUgbWV0
aG9kCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9DaGFuZ2VMb2cgYi9Tb3VyY2UvV2ViQ29y
ZS9DaGFuZ2VMb2cKaW5kZXggYmY3ZjczYTJkODBkMjdhYjhiNjQzYjM4MGI2OTU3YzU0MWQ5MGQ5
OS4uYzI4M2Y1MTE2YjYwOTIxOTcxMzAwN2NiMzE4NzZlODg2OTE5ODczZiAxMDA2NDQKLS0tIGEv
U291cmNlL1dlYkNvcmUvQ2hhbmdlTG9nCisrKyBiL1NvdXJjZS9XZWJDb3JlL0NoYW5nZUxvZwpA
QCAtMSwzICsxLDE1IEBACisyMDE1LTA4LTE1ICBZdXN1a2UgU3V6dWtpICA8dXRhdGFuZS50ZWFA
Z21haWwuY29tPgorCisgICAgICAgIFtFUzZdIHByb3RvdHlwaW5nIG1vZHVsZSBsb2FkZXIgaW4g
SlNDIHNoZWxsCisgICAgICAgIGh0dHBzOi8vYnVncy53ZWJraXQub3JnL3Nob3dfYnVnLmNnaT9p
ZD0xNDc4NzYKKworICAgICAgICBSZXZpZXdlZCBieSBOT0JPRFkgKE9PUFMhKS4KKworICAgICAg
ICBObyBuZXcgdGVzdHMgKE9PUFMhKS4KKworICAgICAgICAqIGJpbmRpbmdzL2pzL0pTRE9NV2lu
ZG93QmFzZS5jcHA6CisgICAgICAgICogYmluZGluZ3MvanMvSlNXb3JrZXJHbG9iYWxTY29wZUJh
c2UuY3BwOgorCiAyMDE1LTA4LTE0ICBNYXR0aGV3IERhaXRlciAgPG1kYWl0ZXJAYXBwbGUuY29t
PgogCiAgICAgICAgIEltcGxlbWVudGluZyBlbnVtZXJhdGVEZXZpY2VzCmRpZmYgLS1naXQgYS9T
b3VyY2UvSmF2YVNjcmlwdENvcmUvRGVyaXZlZFNvdXJjZXMubWFrZSBiL1NvdXJjZS9KYXZhU2Ny
aXB0Q29yZS9EZXJpdmVkU291cmNlcy5tYWtlCmluZGV4IDFjYjJkNWNiYTNiZDM1ZTIwOWY5ZDJj
N2JiNDY3YjJiOTZmN2ZhNWQuLjUzYWJkYjZhZGNiNzEwOGU3ZWYxOTNiOTY5OTU2NDk1OTVmMmMx
NTEgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9EZXJpdmVkU291cmNlcy5tYWtl
CisrKyBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9EZXJpdmVkU291cmNlcy5tYWtlCkBAIC01NSw2
ICs1NSw3IEBAIGFsbCA6IFwKICAgICBKU1Byb21pc2VDb25zdHJ1Y3Rvci5sdXQuaCBcCiAgICAg
S2V5d29yZExvb2t1cC5oIFwKICAgICBMZXhlci5sdXQuaCBcCisgICAgTW9kdWxlTG9hZGVyT2Jq
ZWN0Lmx1dC5oIFwKICAgICBOdW1iZXJDb25zdHJ1Y3Rvci5sdXQuaCBcCiAgICAgTnVtYmVyUHJv
dG90eXBlLmx1dC5oIFwKICAgICBPYmplY3RDb25zdHJ1Y3Rvci5sdXQuaCBcCmRpZmYgLS1naXQg
YS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvSmF2YVNjcmlwdENvcmUueGNvZGVwcm9qL3Byb2plY3Qu
cGJ4cHJvaiBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9KYXZhU2NyaXB0Q29yZS54Y29kZXByb2ov
cHJvamVjdC5wYnhwcm9qCmluZGV4IGZkYzY4MzcxZGRiMmJlNTUzNDk0MWY4MzJjOGM3MjAxYjQw
NmRhYWYuLjk2OTI1NzQwOTkyYzdlMzI5ZjBhYmI1ZjdiOTI3MWY3MGY3NjNhZDkgMTAwNjQ0Ci0t
LSBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9KYXZhU2NyaXB0Q29yZS54Y29kZXByb2ovcHJvamVj
dC5wYnhwcm9qCisrKyBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9KYXZhU2NyaXB0Q29yZS54Y29k
ZXByb2ovcHJvamVjdC5wYnhwcm9qCkBAIC0xNjk0LDEzICsxNjk0LDE1IEBACiAJCUUzMzYzN0E2
MUI2MzIyMDIwMEVFMDg0MCAvKiBSZWZsZWN0T2JqZWN0LmggaW4gSGVhZGVycyAqLyA9IHtpc2Eg
PSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSBFMzM2MzdBNDFCNjMyMjAyMDBFRTA4NDAgLyogUmVm
bGVjdE9iamVjdC5oICovOyBzZXR0aW5ncyA9IHtBVFRSSUJVVEVTID0gKFByaXZhdGUsICk7IH07
IH07CiAJCUUzM0IzRTI2MUI3QUJENzUwMDQ4REIyRSAvKiBJbnNwZWN0b3JJbnN0cnVtZW50YXRp
b25PYmplY3QubHV0LmggaW4gSGVhZGVycyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVS
ZWYgPSBFMzNCM0UyNTFCN0FCRDc1MDA0OERCMkUgLyogSW5zcGVjdG9ySW5zdHJ1bWVudGF0aW9u
T2JqZWN0Lmx1dC5oICovOyB9OwogCQlFMzU0NjIyQjFCNjA2NUQxMDA1NDUzODYgLyogQ29uc3Ry
dWN0QWJpbGl0eS5oIGluIEhlYWRlcnMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVm
ID0gRTM1NDYyMkExQjYwNjVEMTAwNTQ1Mzg2IC8qIENvbnN0cnVjdEFiaWxpdHkuaCAqLzsgc2V0
dGluZ3MgPSB7QVRUUklCVVRFUyA9IChQcml2YXRlLCApOyB9OyB9OworCQlFMzU1RjM1MjFCN0RD
ODUzMDBDNTBEQzUgLyogTW9kdWxlTG9hZGVyT2JqZWN0LmNwcCBpbiBTb3VyY2VzICovID0ge2lz
YSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IEUzNTVGMzUwMUI3REM4NTMwMEM1MERDNSAvKiBN
b2R1bGVMb2FkZXJPYmplY3QuY3BwICovOyB9OworCQlFMzU1RjM1MzFCN0RDODUzMDBDNTBEQzUg
LyogTW9kdWxlTG9hZGVyT2JqZWN0LmggaW4gSGVhZGVycyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZp
bGU7IGZpbGVSZWYgPSBFMzU1RjM1MTFCN0RDODUzMDBDNTBEQzUgLyogTW9kdWxlTG9hZGVyT2Jq
ZWN0LmggKi87IH07CiAJCUUzNzk0RTc1MUI3N0VCOTcwMDU1NDNBRSAvKiBNb2R1bGVBbmFseXpl
ci5jcHAgaW4gU291cmNlcyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSBFMzc5
NEU3MzFCNzdFQjk3MDA1NTQzQUUgLyogTW9kdWxlQW5hbHl6ZXIuY3BwICovOyB9OwogCQlFMzc5
NEU3NjFCNzdFQjk3MDA1NTQzQUUgLyogTW9kdWxlQW5hbHl6ZXIuaCBpbiBIZWFkZXJzICovID0g
e2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IEUzNzk0RTc0MUI3N0VCOTcwMDU1NDNBRSAv
KiBNb2R1bGVBbmFseXplci5oICovOyBzZXR0aW5ncyA9IHtBVFRSSUJVVEVTID0gKFByaXZhdGUs
ICk7IH07IH07Ci0JCUUzOTYzQ0VEMUI3M0Y3NTAwMEVCNENFNSAvKiBNb2R1bGVSZWNvcmQuaCBp
biBIZWFkZXJzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IEUzOTYzQ0VCMUI3
M0Y3NTAwMEVCNENFNSAvKiBNb2R1bGVSZWNvcmQuaCAqLzsgc2V0dGluZ3MgPSB7QVRUUklCVVRF
UyA9IChQcml2YXRlLCApOyB9OyB9OwogCQlFMzk2M0NFRTFCNzNGNzUwMDBFQjRDRTUgLyogTm9k
ZXNBbmFseXplTW9kdWxlLmNwcCBpbiBTb3VyY2VzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsg
ZmlsZVJlZiA9IEUzOTYzQ0VDMUI3M0Y3NTAwMEVCNENFNSAvKiBOb2Rlc0FuYWx5emVNb2R1bGUu
Y3BwICovOyB9OwotCQlFM0MwOUY1NTFCNzk2OTJBMDBFRTM2QTIgLyogTW9kdWxlUmVjb3JkLmNw
cCBpbiBTb3VyY2VzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IEUzQzA5RjU0
MUI3OTY5MkEwMEVFMzZBMiAvKiBNb2R1bGVSZWNvcmQuY3BwICovOyB9OwogCQlFMzVFMDM1RjFC
N0FCNDNFMDA3M0FEMkEgLyogSW5zcGVjdG9ySW5zdHJ1bWVudGF0aW9uT2JqZWN0LmNwcCBpbiBT
b3VyY2VzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IEUzNUUwMzVEMUI3QUI0
M0UwMDczQUQyQSAvKiBJbnNwZWN0b3JJbnN0cnVtZW50YXRpb25PYmplY3QuY3BwICovOyB9Owog
CQlFMzVFMDM2MDFCN0FCNDNFMDA3M0FEMkEgLyogSW5zcGVjdG9ySW5zdHJ1bWVudGF0aW9uT2Jq
ZWN0LmggaW4gSGVhZGVycyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSBFMzVF
MDM1RTFCN0FCNDNFMDA3M0FEMkEgLyogSW5zcGVjdG9ySW5zdHJ1bWVudGF0aW9uT2JqZWN0Lmgg
Ki87IHNldHRpbmdzID0ge0FUVFJJQlVURVMgPSAoUHJpdmF0ZSwgKTsgfTsgfTsKKwkJRTM5REE0
QTYxQjdFOEI3QzAwODRGMzNBIC8qIEpTTW9kdWxlUmVjb3JkLmNwcCBpbiBTb3VyY2VzICovID0g
e2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IEUzOURBNEE0MUI3RThCN0MwMDg0RjMzQSAv
KiBKU01vZHVsZVJlY29yZC5jcHAgKi87IH07CisJCUUzOURBNEE3MUI3RThCN0MwMDg0RjMzQSAv
KiBKU01vZHVsZVJlY29yZC5oIGluIEhlYWRlcnMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBm
aWxlUmVmID0gRTM5REE0QTUxQjdFOEI3QzAwODRGMzNBIC8qIEpTTW9kdWxlUmVjb3JkLmggKi87
IHNldHRpbmdzID0ge0FUVFJJQlVURVMgPSAoUHJpdmF0ZSwgKTsgfTsgfTsKIAkJRTNFRjg4NzQx
QjY2REYyMzAwM0YyNkNCIC8qIEpTUHJvcGVydHlOYW1lSXRlcmF0b3IuY3BwIGluIFNvdXJjZXMg
Ki8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gRTNFRjg4NzIxQjY2REYyMzAwM0Yy
NkNCIC8qIEpTUHJvcGVydHlOYW1lSXRlcmF0b3IuY3BwICovOyB9OwogCQlFM0VGODg3NTFCNjZE
RjIzMDAzRjI2Q0IgLyogSlNQcm9wZXJ0eU5hbWVJdGVyYXRvci5oIGluIEhlYWRlcnMgKi8gPSB7
aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gRTNFRjg4NzMxQjY2REYyMzAwM0YyNkNCIC8q
IEpTUHJvcGVydHlOYW1lSXRlcmF0b3IuaCAqLzsgc2V0dGluZ3MgPSB7QVRUUklCVVRFUyA9IChQ
cml2YXRlLCApOyB9OyB9OwogCQlFNDlEQzE2QjEyRUYyOTNFMDAxODRBMUYgLyogU291cmNlUHJv
dmlkZXJDYWNoZS5jcHAgaW4gU291cmNlcyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVS
ZWYgPSBFNDlEQzE1NTEyRUYyNzcyMDAxODRBMUYgLyogU291cmNlUHJvdmlkZXJDYWNoZS5jcHAg
Ki87IH07CkBAIC0zNTI2LDE0ICszNTI4LDE2IEBACiAJCUUzMzYzN0E0MUI2MzIyMDIwMEVFMDg0
MCAvKiBSZWZsZWN0T2JqZWN0LmggKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVu
Y29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmMuaDsgcGF0aCA9IFJl
ZmxlY3RPYmplY3QuaDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKIAkJRTMzQjNFMjUxQjdB
QkQ3NTAwNDhEQjJFIC8qIEluc3BlY3Rvckluc3RydW1lbnRhdGlvbk9iamVjdC5sdXQuaCAqLyA9
IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxl
VHlwZSA9IHNvdXJjZWNvZGUuYy5oOyBuYW1lID0gSW5zcGVjdG9ySW5zdHJ1bWVudGF0aW9uT2Jq
ZWN0Lmx1dC5oOyBwYXRoID0gSW5zcGVjdG9ySW5zdHJ1bWVudGF0aW9uT2JqZWN0Lmx1dC5oOyBz
b3VyY2VUcmVlID0gIjxncm91cD4iOyB9OwogCQlFMzU0NjIyQTFCNjA2NUQxMDA1NDUzODYgLyog
Q29uc3RydWN0QWJpbGl0eS5oICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNv
ZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jLmg7IHBhdGggPSBDb25z
dHJ1Y3RBYmlsaXR5Lmg7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CisJCUUzNTVGMzUwMUI3
REM4NTMwMEM1MERDNSAvKiBNb2R1bGVMb2FkZXJPYmplY3QuY3BwICovID0ge2lzYSA9IFBCWEZp
bGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNl
Y29kZS5jcHAuY3BwOyBwYXRoID0gTW9kdWxlTG9hZGVyT2JqZWN0LmNwcDsgc291cmNlVHJlZSA9
ICI8Z3JvdXA+IjsgfTsKKwkJRTM1NUYzNTExQjdEQzg1MzAwQzUwREM1IC8qIE1vZHVsZUxvYWRl
ck9iamVjdC5oICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7
IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jLmg7IHBhdGggPSBNb2R1bGVMb2FkZXJP
YmplY3QuaDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKIAkJRTM3OTRFNzMxQjc3RUI5NzAw
NTU0M0FFIC8qIE1vZHVsZUFuYWx5emVyLmNwcCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNl
OyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuY3BwLmNw
cDsgcGF0aCA9IE1vZHVsZUFuYWx5emVyLmNwcDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsK
IAkJRTM3OTRFNzQxQjc3RUI5NzAwNTU0M0FFIC8qIE1vZHVsZUFuYWx5emVyLmggKi8gPSB7aXNh
ID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUg
PSBzb3VyY2Vjb2RlLmMuaDsgcGF0aCA9IE1vZHVsZUFuYWx5emVyLmg7IHNvdXJjZVRyZWUgPSAi
PGdyb3VwPiI7IH07Ci0JCUUzOTYzQ0VCMUI3M0Y3NTAwMEVCNENFNSAvKiBNb2R1bGVSZWNvcmQu
aCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25v
d25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuYy5oOyBwYXRoID0gTW9kdWxlUmVjb3JkLmg7IHNvdXJj
ZVRyZWUgPSAiPGdyb3VwPiI7IH07CiAJCUUzOTYzQ0VDMUI3M0Y3NTAwMEVCNENFNSAvKiBOb2Rl
c0FuYWx5emVNb2R1bGUuY3BwICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNv
ZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jcHAuY3BwOyBwYXRoID0g
Tm9kZXNBbmFseXplTW9kdWxlLmNwcDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKLQkJRTND
MDlGNTQxQjc5NjkyQTAwRUUzNkEyIC8qIE1vZHVsZVJlY29yZC5jcHAgKi8gPSB7aXNhID0gUEJY
RmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3Vy
Y2Vjb2RlLmNwcC5jcHA7IHBhdGggPSBNb2R1bGVSZWNvcmQuY3BwOyBzb3VyY2VUcmVlID0gIjxn
cm91cD4iOyB9OwogCQlFMzVFMDM1RDFCN0FCNDNFMDA3M0FEMkEgLyogSW5zcGVjdG9ySW5zdHJ1
bWVudGF0aW9uT2JqZWN0LmNwcCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5j
b2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuY3BwLmNwcDsgcGF0aCA9
IEluc3BlY3Rvckluc3RydW1lbnRhdGlvbk9iamVjdC5jcHA7IHNvdXJjZVRyZWUgPSAiPGdyb3Vw
PiI7IH07CiAJCUUzNUUwMzVFMUI3QUI0M0UwMDczQUQyQSAvKiBJbnNwZWN0b3JJbnN0cnVtZW50
YXRpb25PYmplY3QuaCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2Rpbmcg
PSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuYy5oOyBwYXRoID0gSW5zcGVjdG9y
SW5zdHJ1bWVudGF0aW9uT2JqZWN0Lmg7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CiAJCUUz
NUUwMzYxMUI3QUI0ODUwMDczQUQyQSAvKiBJbnNwZWN0b3JJbnN0cnVtZW50YXRpb25PYmplY3Qu
anMgKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtu
b3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmphdmFzY3JpcHQ7IHBhdGggPSBJbnNwZWN0b3JJbnN0
cnVtZW50YXRpb25PYmplY3QuanM7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CisJCUUzOURB
NEE0MUI3RThCN0MwMDg0RjMzQSAvKiBKU01vZHVsZVJlY29yZC5jcHAgKi8gPSB7aXNhID0gUEJY
RmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3Vy
Y2Vjb2RlLmNwcC5jcHA7IHBhdGggPSBKU01vZHVsZVJlY29yZC5jcHA7IHNvdXJjZVRyZWUgPSAi
PGdyb3VwPiI7IH07CisJCUUzOURBNEE1MUI3RThCN0MwMDg0RjMzQSAvKiBKU01vZHVsZVJlY29y
ZC5oICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RL
bm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jLmg7IHBhdGggPSBKU01vZHVsZVJlY29yZC5oOyBz
b3VyY2VUcmVlID0gIjxncm91cD4iOyB9OwogCQlFM0VGODg3MjFCNjZERjIzMDAzRjI2Q0IgLyog
SlNQcm9wZXJ0eU5hbWVJdGVyYXRvci5jcHAgKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsg
ZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmNwcC5jcHA7
IHBhdGggPSBKU1Byb3BlcnR5TmFtZUl0ZXJhdG9yLmNwcDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+
IjsgfTsKIAkJRTNFRjg4NzMxQjY2REYyMzAwM0YyNkNCIC8qIEpTUHJvcGVydHlOYW1lSXRlcmF0
b3IuaCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0
S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuYy5oOyBwYXRoID0gSlNQcm9wZXJ0eU5hbWVJdGVy
YXRvci5oOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OwogCQlFNDlEQzE0OTEyRUYyNjFBMDAx
ODRBMUYgLyogU291cmNlUHJvdmlkZXJDYWNoZUl0ZW0uaCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVm
ZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUu
Yy5oOyBwYXRoID0gU291cmNlUHJvdmlkZXJDYWNoZUl0ZW0uaDsgc291cmNlVHJlZSA9ICI8Z3Jv
dXA+IjsgfTsKQEAgLTQ0NDYsOCArNDQ1MCw2IEBACiAJCQkJRjY5MkE4NjYwMjU1NTk3RDAxRkY2
MEY3IC8qIExleGVyLmggKi8sCiAJCQkJRTM3OTRFNzMxQjc3RUI5NzAwNTU0M0FFIC8qIE1vZHVs
ZUFuYWx5emVyLmNwcCAqLywKIAkJCQlFMzc5NEU3NDFCNzdFQjk3MDA1NTQzQUUgLyogTW9kdWxl
QW5hbHl6ZXIuaCAqLywKLQkJCQlFM0MwOUY1NDFCNzk2OTJBMDBFRTM2QTIgLyogTW9kdWxlUmVj
b3JkLmNwcCAqLywKLQkJCQlFMzk2M0NFQjFCNzNGNzUwMDBFQjRDRTUgLyogTW9kdWxlUmVjb3Jk
LmggKi8sCiAJCQkJOTMwREFEMDMwRkIxRUIxQTAwODJEMjA1IC8qIE5vZGVDb25zdHJ1Y3RvcnMu
aCAqLywKIAkJCQlGNjkyQTg2RDAyNTU1OTdEMDFGRjYwRjcgLyogTm9kZXMuY3BwICovLAogCQkJ
CUY2OTJBODZFMDI1NTU5N0QwMUZGNjBGNyAvKiBOb2Rlcy5oICovLApAQCAtNDcwOSw2ICs0NzEx
LDggQEAKIAkJCQlBNzAwODc0MDE3Q0JFOEVCMDBDM0U2NDMgLyogSlNNYXAuaCAqLywKIAkJCQlB
NzRERUY4RjE4MkQ5OTE0MDA1MjJDMjIgLyogSlNNYXBJdGVyYXRvci5jcHAgKi8sCiAJCQkJQTc0
REVGOTAxODJEOTkxNDAwNTIyQzIyIC8qIEpTTWFwSXRlcmF0b3IuaCAqLywKKwkJCQlFMzlEQTRB
NDFCN0U4QjdDMDA4NEYzM0EgLyogSlNNb2R1bGVSZWNvcmQuY3BwICovLAorCQkJCUUzOURBNEE1
MUI3RThCN0MwMDg0RjMzQSAvKiBKU01vZHVsZVJlY29yZC5oICovLAogCQkJCUE3MjcwMDc4MERB
QzYwNTYwMEU1NDhENyAvKiBKU05vdEFuT2JqZWN0LmNwcCAqLywKIAkJCQlBNzI3MDA3NzBEQUM2
MDU2MDBFNTQ4RDcgLyogSlNOb3RBbk9iamVjdC5oICovLAogCQkJCUJDMjJBMzk4MEUxNkUxNDgw
MEFGMjFDOCAvKiBKU09iamVjdC5jcHAgKi8sCkBAIC00Nzg4LDYgKzQ3OTIsOCBAQAogCQkJCTkw
MjEzRTNCMTIzQTQwQzIwMEQ0MjJGMyAvKiBNZW1vcnlTdGF0aXN0aWNzLmNwcCAqLywKIAkJCQk5
MDIxM0UzQzEyM0E0MEMyMDBENDIyRjMgLyogTWVtb3J5U3RhdGlzdGljcy5oICovLAogCQkJCTdD
MDA4Q0U1MTg3NjMxQjYwMDk1NUMyNCAvKiBNaWNyb3Rhc2suaCAqLywKKwkJCQlFMzU1RjM1MDFC
N0RDODUzMDBDNTBEQzUgLyogTW9kdWxlTG9hZGVyT2JqZWN0LmNwcCAqLywKKwkJCQlFMzU1RjM1
MTFCN0RDODUzMDBDNTBEQzUgLyogTW9kdWxlTG9hZGVyT2JqZWN0LmggKi8sCiAJCQkJQkMwMkU5
MDgwRTE4MzlEQjAwMEY5Mjk3IC8qIE5hdGl2ZUVycm9yQ29uc3RydWN0b3IuY3BwICovLAogCQkJ
CUJDMDJFOTA5MEUxODM5REIwMDBGOTI5NyAvKiBOYXRpdmVFcnJvckNvbnN0cnVjdG9yLmggKi8s
CiAJCQkJQkMwMkU5MEEwRTE4MzlEQjAwMEY5Mjk3IC8qIE5hdGl2ZUVycm9yUHJvdG90eXBlLmNw
cCAqLywKQEAgLTU3OTUsNiArNTgwMSw3IEBACiAJCQlmaWxlcyA9ICgKIAkJCQkwRkZBNTQ5ODE2
Qjg4MzUzMDBCM0E5ODIgLyogQTY0RE9wY29kZS5oIGluIEhlYWRlcnMgKi8sCiAJCQkJODYwMTYx
RTMwRjNBODNDMTAwRjg0NzEwIC8qIEFic3RyYWN0TWFjcm9Bc3NlbWJsZXIuaCBpbiBIZWFkZXJz
ICovLAorCQkJCUUzNTVGMzUzMUI3REM4NTMwMEM1MERDNSAvKiBNb2R1bGVMb2FkZXJPYmplY3Qu
aCBpbiBIZWFkZXJzICovLAogCQkJCTBGRTA1MDI5MUFBOTA5NTYwMEQzM0IzMyAvKiBTY29wZWRB
cmd1bWVudHNUYWJsZS5oIGluIEhlYWRlcnMgKi8sCiAJCQkJMEY1NUYwRjUxNEQxMDYzQzAwQUM3
NjQ5IC8qIEFic3RyYWN0UEMuaCBpbiBIZWFkZXJzICovLAogCQkJCTJBNDhEMTkxMTc3MjM2NUIw
MEM2NUE1RiAvKiBBUElDYWxsYmFja0Z1bmN0aW9uLmggaW4gSGVhZGVycyAqLywKQEAgLTYxOTMs
NyArNjIwMCw2IEBACiAJCQkJMEZDRUZBQUMxODA0QzEzRTAwNDcyQ0U0IC8qIEZUTFNhdmVSZXN0
b3JlLmggaW4gSGVhZGVycyAqLywKIAkJCQkwRjI1RjFCMjE4MTYzNUYzMDA1MjJGMzkgLyogRlRM
U2xvd1BhdGhDYWxsLmggaW4gSGVhZGVycyAqLywKIAkJCQlFMzU0NjIyQjFCNjA2NUQxMDA1NDUz
ODYgLyogQ29uc3RydWN0QWJpbGl0eS5oIGluIEhlYWRlcnMgKi8sCi0JCQkJRTM5NjNDRUQxQjcz
Rjc1MDAwRUI0Q0U1IC8qIE1vZHVsZVJlY29yZC5oIGluIEhlYWRlcnMgKi8sCiAJCQkJMEYyNUYx
QjQxODE2MzVGMzAwNTIyRjM5IC8qIEZUTFNsb3dQYXRoQ2FsbEtleS5oIGluIEhlYWRlcnMgKi8s
CiAJCQkJMEY5RDMzOUIxODAzQURCNzAwNzNDMkJDIC8qIEZUTFN0YWNrTWFwcy5oIGluIEhlYWRl
cnMgKi8sCiAJCQkJMEZFQTBBMTIxNzA1MTNEQjAwQkI3MjJDIC8qIEZUTFN0YXRlLmggaW4gSGVh
ZGVycyAqLywKQEAgLTYyMTQsNiArNjIyMCw3IEBACiAJCQkJQkNCRTJDQUUxNEU5ODVBQTAwMDU5
M0FEIC8qIEdDQXNzZXJ0aW9ucy5oIGluIEhlYWRlcnMgKi8sCiAJCQkJMEY3NjZEMzAxNUE4RENF
MjAwOEYzNjNFIC8qIEdDQXdhcmVKSVRTdHViUm91dGluZS5oIGluIEhlYWRlcnMgKi8sCiAJCQkJ
NzBFQzBFQzcxQUEwRDdEQTAwQjZBQUZBIC8qIFN0cmluZ0l0ZXJhdG9yUHJvdG90eXBlLmggaW4g
SGVhZGVycyAqLywKKwkJCQlFMzlEQTRBNzFCN0U4QjdDMDA4NEYzM0EgLyogSlNNb2R1bGVSZWNv
cmQuaCBpbiBIZWFkZXJzICovLAogCQkJCTBGMkI2NkFDMTdCNkI1M0YwMEE3QUUzRiAvKiBHQ0lu
Y29taW5nUmVmQ291bnRlZC5oIGluIEhlYWRlcnMgKi8sCiAJCQkJMEYyQjY2QUQxN0I2QjU0NTAw
QTdBRTNGIC8qIEdDSW5jb21pbmdSZWZDb3VudGVkSW5saW5lcy5oIGluIEhlYWRlcnMgKi8sCiAJ
CQkJMEYyQjY2QUUxN0I2QjU0NTAwQTdBRTNGIC8qIEdDSW5jb21pbmdSZWZDb3VudGVkU2V0Lmgg
aW4gSGVhZGVycyAqLywKQEAgLTczMjksNiArNzMzNiw3IEBACiAJCQkJMkE4ODA2NzgxOTEwN0Q1
NTAwQ0IwQkJCIC8qIERGR0Z1bmN0aW9uV2hpdGVsaXN0LmNwcCBpbiBTb3VyY2VzICovLAogCQkJ
CTBGMkREODEzMUFCM0Q4QkUwMEJCQjhFOCAvKiBERkdBcmd1bWVudHNVdGlsaXRpZXMuY3BwIGlu
IFNvdXJjZXMgKi8sCiAJCQkJQTdEODlDRjMxN0EwQjhDQzAwNzczQUQ4IC8qIERGR0Jsb2NrSW5z
ZXJ0aW9uU2V0LmNwcCBpbiBTb3VyY2VzICovLAorCQkJCUUzNTVGMzUyMUI3REM4NTMwMEM1MERD
NSAvKiBNb2R1bGVMb2FkZXJPYmplY3QuY3BwIGluIFNvdXJjZXMgKi8sCiAJCQkJODZFQzlEQzQx
MzI4REY4MjAwMkIyQUQ3IC8qIERGR0J5dGVDb2RlUGFyc2VyLmNwcCBpbiBTb3VyY2VzICovLAog
CQkJCTBGRDgyRTIxMTQxNzJDRTMwMDE3OUM5NCAvKiBERkdDYXBhYmlsaXRpZXMuY3BwIGluIFNv
dXJjZXMgKi8sCiAJCQkJMEYyQjlDRTYxOUQwQkE3RDAwQjFEMUI1IC8qIERGR09iamVjdEFsbG9j
YXRpb25TaW5raW5nUGhhc2UuY3BwIGluIFNvdXJjZXMgKi8sCkBAIC03NjE2LDcgKzc2MjQsNiBA
QAogCQkJCTBGMkI2NkVEMTdCNkI1QUIwMEE3QUUzRiAvKiBKU0RhdGFWaWV3UHJvdG90eXBlLmNw
cCBpbiBTb3VyY2VzICovLAogCQkJCTBGMkQ0REU4MTk4MzJEQUMwMDdENEIxOSAvKiBUb1RoaXNT
dGF0dXMuY3BwIGluIFNvdXJjZXMgKi8sCiAJCQkJRkUzODRFRTUxQUREQjdBRDAwNTVERTJDIC8q
IEpTRG9sbGFyVk0uY3BwIGluIFNvdXJjZXMgKi8sCi0JCQkJRTNDMDlGNTUxQjc5NjkyQTAwRUUz
NkEyIC8qIE1vZHVsZVJlY29yZC5jcHAgaW4gU291cmNlcyAqLywKIAkJCQk5Nzg4MDE0MDE0NzFB
RDkyMDA0MUIwMTYgLyogSlNEYXRlTWF0aC5jcHAgaW4gU291cmNlcyAqLywKIAkJCQkwRkUwNTAx
NzFBQTkwOTExMDBEMzNCMzMgLyogRGlyZWN0QXJndW1lbnRzLmNwcCBpbiBTb3VyY2VzICovLAog
CQkJCTE0MDU2NkQ2MTA3RUMyNzEwMDVEQkM4RCAvKiBKU0Z1bmN0aW9uLmNwcCBpbiBTb3VyY2Vz
ICovLApAQCAtNzg1OCw2ICs3ODY1LDcgQEAKIAkJCQkwRkY0MjczMjE1OEVCRDU4MDA0Q0I5RkYg
LyogVURpczg2RGlzYXNzZW1ibGVyLmNwcCBpbiBTb3VyY2VzICovLAogCQkJCUE3NkYyNzk0MTVG
MTNDOTYwMDUxN0Q2NyAvKiBVbmxpbmtlZENvZGVCbG9jay5jcHAgaW4gU291cmNlcyAqLywKIAkJ
CQlCNTlGODkzOTE4OTFGMjlGMDBENUNDREMgLyogVW5saW5rZWRJbnN0cnVjdGlvblN0cmVhbS5j
cHAgaW4gU291cmNlcyAqLywKKwkJCQlFMzlEQTRBNjFCN0U4QjdDMDA4NEYzM0EgLyogSlNNb2R1
bGVSZWNvcmQuY3BwIGluIFNvdXJjZXMgKi8sCiAJCQkJMEY3NTc2RDIxOEUxRkVFOTAwMkVGNENE
IC8qIEFjY2Vzc29yQ2FsbEpJVFN0dWJSb3V0aW5lLmNwcCBpbiBTb3VyY2VzICovLAogCQkJCTBG
MjRFNTU4MTdGNzRFREIwMEFCQjIxNyAvKiBWYWx1ZVJlY292ZXJ5LmNwcCBpbiBTb3VyY2VzICov
LAogCQkJCUUxOEUzQTU5MERGOTI3OEMwMEQ5MEIzNCAvKiBWTS5jcHAgaW4gU291cmNlcyAqLywK
ZGlmZiAtLWdpdCBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9idWlsdGlucy9CdWlsdGluTmFtZXMu
aCBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9idWlsdGlucy9CdWlsdGluTmFtZXMuaAppbmRleCBj
ZTA0NDQ3OWY3MzAyZjE5YjFkODExNjhmOTllYzQ4MzViNDAyMjBhLi43ZTU0MzQyZTc1MmY5ZjJk
NGU4MzVlZDAzNGY0NjA5Y2YzNjVkMzlmIDEwMDY0NAotLS0gYS9Tb3VyY2UvSmF2YVNjcmlwdENv
cmUvYnVpbHRpbnMvQnVpbHRpbk5hbWVzLmgKKysrIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL2J1
aWx0aW5zL0J1aWx0aW5OYW1lcy5oCkBAIC02Nyw4ICs2Nyw4IEBAIGNsYXNzIEJ1aWx0aW5OYW1l
cyB7CiAgICAgYm9vbCBpc1ByaXZhdGVOYW1lKFN5bWJvbEltcGwmIHVpZCkgY29uc3Q7CiAgICAg
Ym9vbCBpc1ByaXZhdGVOYW1lKFVuaXF1ZWRTdHJpbmdJbXBsJiB1aWQpIGNvbnN0OwogICAgIGJv
b2wgaXNQcml2YXRlTmFtZShjb25zdCBJZGVudGlmaWVyJikgY29uc3Q7Ci0gICAgY29uc3QgSWRl
bnRpZmllciogZ2V0UHJpdmF0ZU5hbWUoY29uc3QgSWRlbnRpZmllciYpIGNvbnN0OwotICAgIGNv
bnN0IElkZW50aWZpZXImIGdldFB1YmxpY05hbWUoY29uc3QgSWRlbnRpZmllciYpIGNvbnN0Owor
ICAgIGNvbnN0IElkZW50aWZpZXIqIGxvb2tVcFByaXZhdGVOYW1lKGNvbnN0IElkZW50aWZpZXIm
KSBjb25zdDsKKyAgICBjb25zdCBJZGVudGlmaWVyJiBsb29rVXBQdWJsaWNOYW1lKGNvbnN0IElk
ZW50aWZpZXImKSBjb25zdDsKICAgICAKICAgICBKU0NfRk9SRUFDSF9CVUlMVElOX0ZVTkNUSU9O
X05BTUUoREVDTEFSRV9CVUlMVElOX0lERU5USUZJRVJfQUNDRVNTT1IpCiAgICAgSlNDX0NPTU1P
Tl9QUklWQVRFX0lERU5USUZJRVJTX0VBQ0hfUFJPUEVSVFlfTkFNRShERUNMQVJFX0JVSUxUSU5f
SURFTlRJRklFUl9BQ0NFU1NPUikKQEAgLTExMCw3ICsxMTAsNyBAQCBpbmxpbmUgYm9vbCBCdWls
dGluTmFtZXM6OmlzUHJpdmF0ZU5hbWUoY29uc3QgSWRlbnRpZmllciYgaWRlbnQpIGNvbnN0CiAg
ICAgcmV0dXJuIGlzUHJpdmF0ZU5hbWUoKmlkZW50LmltcGwoKSk7CiB9CiAKLWlubGluZSBjb25z
dCBJZGVudGlmaWVyKiBCdWlsdGluTmFtZXM6OmdldFByaXZhdGVOYW1lKGNvbnN0IElkZW50aWZp
ZXImIGlkZW50KSBjb25zdAoraW5saW5lIGNvbnN0IElkZW50aWZpZXIqIEJ1aWx0aW5OYW1lczo6
bG9va1VwUHJpdmF0ZU5hbWUoY29uc3QgSWRlbnRpZmllciYgaWRlbnQpIGNvbnN0CiB7CiAgICAg
YXV0byBpdGVyID0gbV9wdWJsaWNUb1ByaXZhdGVNYXAuZmluZChpZGVudC5pbXBsKCkpOwogICAg
IGlmIChpdGVyICE9IG1fcHVibGljVG9Qcml2YXRlTWFwLmVuZCgpKQpAQCAtMTE4LDcgKzExOCw3
IEBAIGlubGluZSBjb25zdCBJZGVudGlmaWVyKiBCdWlsdGluTmFtZXM6OmdldFByaXZhdGVOYW1l
KGNvbnN0IElkZW50aWZpZXImIGlkZW50KSBjCiAgICAgcmV0dXJuIDA7CiB9CiAKLWlubGluZSBj
b25zdCBJZGVudGlmaWVyJiBCdWlsdGluTmFtZXM6OmdldFB1YmxpY05hbWUoY29uc3QgSWRlbnRp
ZmllciYgaWRlbnQpIGNvbnN0CitpbmxpbmUgY29uc3QgSWRlbnRpZmllciYgQnVpbHRpbk5hbWVz
Ojpsb29rVXBQdWJsaWNOYW1lKGNvbnN0IElkZW50aWZpZXImIGlkZW50KSBjb25zdAogewogICAg
IGF1dG8gaXRlciA9IG1fcHJpdmF0ZVRvUHVibGljTWFwLmZpbmQoaWRlbnQuaW1wbCgpKTsKICAg
ICBpZiAoaXRlciAhPSBtX3ByaXZhdGVUb1B1YmxpY01hcC5lbmQoKSkKZGlmZiAtLWdpdCBhL1Nv
dXJjZS9KYXZhU2NyaXB0Q29yZS9idWlsdGlucy9Nb2R1bGVMb2FkZXJPYmplY3QuanMgYi9Tb3Vy
Y2UvSmF2YVNjcmlwdENvcmUvYnVpbHRpbnMvTW9kdWxlTG9hZGVyT2JqZWN0LmpzCm5ldyBmaWxl
IG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAuLjczZGQ5ZTcyYjQxM2RiNTA4ZTRhMGZjMDlkZWU2MjE0ZDlhNzEwYTMKLS0tIC9kZXYvbnVs
bAorKysgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvYnVpbHRpbnMvTW9kdWxlTG9hZGVyT2JqZWN0
LmpzCkBAIC0wLDAgKzEsMzg1IEBACisvKgorICogQ29weXJpZ2h0IChDKSAyMDE1IEFwcGxlIElu
Yy4gQWxsIHJpZ2h0cyByZXNlcnZlZC4KKyAqCisgKiBSZWRpc3RyaWJ1dGlvbiBhbmQgdXNlIGlu
IHNvdXJjZSBhbmQgYmluYXJ5IGZvcm1zLCB3aXRoIG9yIHdpdGhvdXQKKyAqIG1vZGlmaWNhdGlv
biwgYXJlIHBlcm1pdHRlZCBwcm92aWRlZCB0aGF0IHRoZSBmb2xsb3dpbmcgY29uZGl0aW9ucwor
ICogYXJlIG1ldDoKKyAqIDEuIFJlZGlzdHJpYnV0aW9ucyBvZiBzb3VyY2UgY29kZSBtdXN0IHJl
dGFpbiB0aGUgYWJvdmUgY29weXJpZ2h0CisgKiAgICBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25k
aXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIuCisgKiAyLiBSZWRpc3RyaWJ1dGlv
bnMgaW4gYmluYXJ5IGZvcm0gbXVzdCByZXByb2R1Y2UgdGhlIGFib3ZlIGNvcHlyaWdodAorICog
ICAgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNj
bGFpbWVyIGluIHRoZQorICogICAgZG9jdW1lbnRhdGlvbiBhbmQvb3Igb3RoZXIgbWF0ZXJpYWxz
IHByb3ZpZGVkIHdpdGggdGhlIGRpc3RyaWJ1dGlvbi4KKyAqCisgKiBUSElTIFNPRlRXQVJFIElT
IFBST1ZJREVEIEJZIEFQUExFIElOQy4gYGBBUyBJUycnIEFORCBBTlkKKyAqIEVYUFJFU1MgT1Ig
SU1QTElFRCBXQVJSQU5USUVTLCBJTkNMVURJTkcsIEJVVCBOT1QgTElNSVRFRCBUTywgVEhFCisg
KiBJTVBMSUVEIFdBUlJBTlRJRVMgT0YgTUVSQ0hBTlRBQklMSVRZIEFORCBGSVRORVNTIEZPUiBB
IFBBUlRJQ1VMQVIKKyAqIFBVUlBPU0UgQVJFIERJU0NMQUlNRUQuICBJTiBOTyBFVkVOVCBTSEFM
TCBBUFBMRSBJTkMuIE9SCisgKiBDT05UUklCVVRPUlMgQkUgTElBQkxFIEZPUiBBTlkgRElSRUNU
LCBJTkRJUkVDVCwgSU5DSURFTlRBTCwgU1BFQ0lBTCwKKyAqIEVYRU1QTEFSWSwgT1IgQ09OU0VR
VUVOVElBTCBEQU1BR0VTIChJTkNMVURJTkcsIEJVVCBOT1QgTElNSVRFRCBUTywKKyAqIFBST0NV
UkVNRU5UIE9GIFNVQlNUSVRVVEUgR09PRFMgT1IgU0VSVklDRVM7IExPU1MgT0YgVVNFLCBEQVRB
LCBPUgorICogUFJPRklUUzsgT1IgQlVTSU5FU1MgSU5URVJSVVBUSU9OKSBIT1dFVkVSIENBVVNF
RCBBTkQgT04gQU5ZIFRIRU9SWQorICogT0YgTElBQklMSVRZLCBXSEVUSEVSIElOIENPTlRSQUNU
LCBTVFJJQ1QgTElBQklMSVRZLCBPUiBUT1JUCisgKiAoSU5DTFVESU5HIE5FR0xJR0VOQ0UgT1Ig
T1RIRVJXSVNFKSBBUklTSU5HIElOIEFOWSBXQVkgT1VUIE9GIFRIRSBVU0UKKyAqIE9GIFRISVMg
U09GVFdBUkUsIEVWRU4gSUYgQURWSVNFRCBPRiBUSEUgUE9TU0lCSUxJVFkgT0YgU1VDSCBEQU1B
R0UuCisgKi8KKworZnVuY3Rpb24gc2V0U3RhdGVUb01heChlbnRyeSwgbmV3U3RhdGUpCit7Cisg
ICAgLy8gaHR0cHM6Ly93aGF0d2cuZ2l0aHViLmlvL2xvYWRlci8jc2V0LXN0YXRlLXRvLW1heAor
CisgICAgInVzZSBzdHJpY3QiOworCisgICAgaWYgKGVudHJ5LnN0YXRlIDwgbmV3U3RhdGUpCisg
ICAgICAgIGVudHJ5LnN0YXRlID0gbmV3U3RhdGU7Cit9CisKK2Z1bmN0aW9uIG5ld1JlZ2lzdHJ5
RW50cnkoa2V5KQoreworICAgIC8vIGh0dHBzOi8vd2hhdHdnLmdpdGh1Yi5pby9sb2FkZXIvI3Jl
Z2lzdHJ5CisgICAgLy8KKyAgICAvLyBFYWNoIHJlZ2lzdHJ5IGVudHJ5IGJlY29tZXMgb25lIG9m
IHRoZSA1IHN0YXRlcy4KKyAgICAvLyAxLiBGZXRjaAorICAgIC8vICAgICBSZWFkeSB0byBmZXRj
aCAob3Igbm93IGZldGNoaW5nKSB0aGUgcmVzb3VyY2Ugb2YgdGhpcyBtb2R1bGUuCisgICAgLy8g
ICAgIFR5cGljYWxseSwgd2UgZmV0Y2ggdGhlIHNvdXJjZSBjb2RlIG92ZXIgdGhlIG5ldHdvcmsg
b3IgZnJvbSB0aGUgZmlsZSBzeXN0ZW0uCisgICAgLy8KKyAgICAvLyAyLiBUcmFuc2xhdGUKKyAg
ICAvLyAgICAgUmVhZHkgdG8gdHJhbnNsYXRlIChvciBub3cgdHJhbnNsYXRpbmcpIHRoZSByYXcg
ZmV0Y2hlZCByZXNvdXJjZSB0byB0aGUgRUNNQVNjcmlwdCBzb3VyY2UgY29kZS4KKyAgICAvLyAg
ICAgV2UgY2FuIGluc2VydCB0aGUgaG9vayB0aGF0IHRyYW5zbGF0ZXMgdGhlIHJlc291cmNlcyBl
LmcuIHRyYW5zcGlsZXJzLgorICAgIC8vCisgICAgLy8gMy4gSW5zdGFudGlhdGUKKyAgICAvLyAg
ICAgUmVhZHkgdG8gaW5zdGFudGlhdGUgKG9yIG5vdyBpbnN0YW50aWF0aW5nKSB0aGUgbW9kdWxl
IHJlY29yZCBmcm9tdGhlIGZldGNoZWQgKGFuZCB0cmFuc2xhdGVkKQorICAgIC8vICAgICBzb3Vy
Y2UgY29kZS4KKyAgICAvLyAgICAgVHlwaWNhbGx5LCB3ZSBwYXJzZSB0aGUgbW9kdWxlIGNvZGUs
IGV4dHJhY3QgdGhlIGRlcGVuZGVuY2llcyBhbmQgYmluZGluZyBpbmZvcm1hdGlvbi4KKyAgICAv
LworICAgIC8vIDQuIENvbGxlY3QgKG5vdCBpbiB0aGUgZHJhZnQpCisgICAgLy8gICAgIFJlYWR5
IHRvIHJlcXVlc3QgdGhlIGRlcGVuZGVudCBtb2R1bGVzIChvciBub3cgcmVxdWVzdGluZyAmIHJl
c29sdmluZykuCisgICAgLy8gICAgIFdpdGhvdXQgdGhpcyBzdGF0ZSwgdGhlIGN1cnJlbnQgZHJh
ZnQgY2F1c2VzIGluZmluaXRlIHJlY3Vyc2lvbiB3aGVuIHRoZXJlIGlzIGNpcmN1bGFyIGRlcGVu
ZGVuY3kuCisgICAgLy8KKyAgICAvLyA1LiBMaW5rCisgICAgLy8gICAgIFJlYWR5IHRvIGxpbmsg
dGhlIG1vZHVsZSB3aXRoIHRoZSBvdGhlciBtb2R1bGVzLgorICAgIC8vICAgICBMaW5raW5nIG1l
YW5zIHRoZSBpbXBvcnRpbmcgYW5kIGV4cG9ydGluZyB0aGUgYmluZGluZ3Mgd2l0aCBlYWNoIG90
aGVyLgorICAgIC8vCisgICAgLy8gNi4gUmVhZHkKKyAgICAvLyAgICAgVGhlIG1vZHVsZSBpcyBs
aW5rZWQsIHNvIHRoZSBtb2R1bGUgaXMgcmVhZHkgdG8gYmUgZXhlY3V0ZWQuCisgICAgLy8KKyAg
ICAvLyBFYWNoIHJlZ2lzdHJ5IGVudHJ5IGhhcyB0aGUgMyBwcm9taXNlczsgImZldGNoIiwgInRy
YW5zbGF0ZSIsICJpbnN0YW50aWF0ZSIuCisgICAgLy8gVGhleSBhcmUgYXNzaWduZWQgd2hlbiBz
dGFydGluZyB0aGUgZWFjaCBwaGFzZS4gQW5kIHRoZXkgYXJlIGZ1bGZpbGxlZCB3aGVuIHRoZSBl
YWNoIHBoYXNlIGlzIGNvbXBsZXRlZC4KKyAgICAvLworICAgIC8vIEluIHRoZSBjdXJyZW50IG1v
ZHVsZSBkcmFmdCwgbGlua2luZyB3aWxsIGJlIHBlcmZvcm1lZCBhZnRlciB0aGUgd2hvbGUgbW9k
dWxlcyBhcmUgaW5zdGFudGlhdGVkLgorICAgIC8vIEFuZCBleGVjdXRpb24gaXMgYWxzbyBkb25l
IGFmdGVyIHRoZSBhbGwgbW9kdWxlcyBhcmUgbGlua2VkLgorICAgIC8vCisgICAgLy8gVE9ETzog
V2UgbmVlZCB0byBleHBsb2l0IHRoZSB3YXkgdG8gZXhlY3V0ZSB0aGUgbW9kdWxlIHdoaWxlIGZl
dGNoaW5nIG5vbi1yZWxhdGVkIG1vZHVsZXMuCisgICAgLy8gT25lIHNvbHV0aW9uOyBpbnRyb2R1
Y2luZyB0aGUgcmVhZHkgcHJvbWlzZSBjaGFpbiB0byBleGVjdXRlIHRoZSBtb2R1bGVzIGNvbmN1
cnJlbnRseSB3aGlsZSBrZWVwaW5nCisgICAgLy8gdGhlIGV4ZWN1dGlvbiBvcmRlci4KKworICAg
ICJ1c2Ugc3RyaWN0IjsKKworICAgIHJldHVybiB7CisgICAgICAgIGtleToga2V5LAorICAgICAg
ICBzdGF0ZTogdGhpcy5GZXRjaCwKKyAgICAgICAgbWV0YWRhdGE6IHVuZGVmaW5lZCwKKyAgICAg
ICAgZmV0Y2g6IHVuZGVmaW5lZCwKKyAgICAgICAgdHJhbnNsYXRlOiB1bmRlZmluZWQsCisgICAg
ICAgIGluc3RhbnRpYXRlOiB1bmRlZmluZWQsCisgICAgICAgIGNvbGxlY3Q6IHVuZGVmaW5lZCwK
KyAgICAgICAgZGVwZW5kZW5jaWVzOiBbXSwgLy8gVG8ga2VlcCB0aGUgbW9kdWxlIG9yZGVyLCB3
ZSBzdG9yZSB0aGUgbW9kdWxlIGtleXMgaW4gdGhlIGFycmF5LgorICAgICAgICBkZXBlbmRlbmNp
ZXNNYXA6IHVuZGVmaW5lZCwKKyAgICAgICAgbW9kdWxlOiB1bmRlZmluZWQsCisgICAgICAgIGVy
cm9yOiB1bmRlZmluZWQsCisgICAgfTsKK30KKworZnVuY3Rpb24gZW5zdXJlUmVnaXN0ZXJlZChr
ZXkpCit7CisgICAgLy8gaHR0cHM6Ly93aGF0d2cuZ2l0aHViLmlvL2xvYWRlci8jZW5zdXJlLXJl
Z2lzdGVyZWQKKworICAgICJ1c2Ugc3RyaWN0IjsKKworICAgIHZhciBlbnRyeSA9IHRoaXMucmVn
aXN0cnkuQGdldChrZXkpOworICAgIGlmIChlbnRyeSkKKyAgICAgICAgcmV0dXJuIGVudHJ5Owor
CisgICAgZW50cnkgPSB0aGlzLm5ld1JlZ2lzdHJ5RW50cnkoa2V5KTsKKyAgICB0aGlzLnJlZ2lz
dHJ5LkBzZXQoa2V5LCBlbnRyeSk7CisKKyAgICByZXR1cm4gZW50cnk7Cit9CisKK2Z1bmN0aW9u
IGZvcmNlRnVsZmlsbFByb21pc2UocHJvbWlzZSwgdmFsdWUpCit7CisgICAgInVzZSBzdHJpY3Qi
OworCisgICAgaWYgKHByb21pc2UuQHByb21pc2VTdGF0ZSA9PT0gQHByb21pc2VQZW5kaW5nKQor
ICAgICAgICBAZnVsZmlsbFByb21pc2UocHJvbWlzZSwgdmFsdWUpOworfQorCitmdW5jdGlvbiBm
dWxmaWxsRmV0Y2goZW50cnksIHBheWxvYWQpCit7CisgICAgLy8gaHR0cHM6Ly93aGF0d2cuZ2l0
aHViLmlvL2xvYWRlci8jZnVsZmlsbC1mZXRjaAorCisgICAgInVzZSBzdHJpY3QiOworCisgICAg
aWYgKCFlbnRyeS5mZXRjaCkKKyAgICAgICAgZW50cnkuZmV0Y2ggPSBAbmV3UHJvbWlzZURlZmVy
cmVkKCkuQHByb21pc2U7CisgICAgdGhpcy5mb3JjZUZ1bGZpbGxQcm9taXNlKGVudHJ5LmZldGNo
LCBwYXlsb2FkKTsKKyAgICB0aGlzLnNldFN0YXRlVG9NYXgoZW50cnksIHRoaXMuVHJhbnNsYXRl
KTsKK30KKworZnVuY3Rpb24gZnVsZmlsbFRyYW5zbGF0ZShlbnRyeSwgc291cmNlKQoreworICAg
IC8vIGh0dHBzOi8vd2hhdHdnLmdpdGh1Yi5pby9sb2FkZXIvI2Z1bGZpbGwtdHJhbnNsYXRlCisK
KyAgICAidXNlIHN0cmljdCI7CisKKyAgICBpZiAoIWVudHJ5LnRyYW5zbGF0ZSkKKyAgICAgICAg
ZW50cnkudHJhbnNsYXRlID0gQG5ld1Byb21pc2VEZWZlcnJlZCgpLkBwcm9taXNlOworICAgIHRo
aXMuZm9yY2VGdWxmaWxsUHJvbWlzZShlbnRyeS50cmFuc2xhdGUsIHNvdXJjZSk7CisgICAgdGhp
cy5zZXRTdGF0ZVRvTWF4KGVudHJ5LCB0aGlzLkluc3RhbnRpYXRlKTsKK30KKworZnVuY3Rpb24g
ZnVsZmlsbEluc3RhbnRpYXRlKGVudHJ5LCBvcHRpb25hbEluc3RhbmNlLCBzb3VyY2UpCit7Cisg
ICAgLy8gaHR0cHM6Ly93aGF0d2cuZ2l0aHViLmlvL2xvYWRlci8jZnVsZmlsbC1pbnN0YW50aWF0
ZQorCisgICAgInVzZSBzdHJpY3QiOworCisgICAgaWYgKCFlbnRyeS5pbnN0YW50aWF0ZSkKKyAg
ICAgICAgZW50cnkuaW5zdGFudGlhdGUgPSBAbmV3UHJvbWlzZURlZmVycmVkKCkuQHByb21pc2U7
CisgICAgdGhpcy5jb21taXRJbnN0YW50aWF0ZWQoZW50cnksIG9wdGlvbmFsSW5zdGFuY2UsIHNv
dXJjZSk7CisKKyAgICAvLyBGSVhNRTogVGhlIGRyYWZ0IGZ1bGZpbGxzIHRoZSBwcm9taXNlIGlu
IHRoZSBDb21taXRJbnN0YW50aWF0ZWQgb3BlcmF0aW9uLgorICAgIC8vIEJ1dCBpdCBDb21taXRJ
bnN0YW50aWF0ZWQgaXMgYWxzbyB1c2VkIGluIHRoZSByZXF1ZXN0SW5zdGFudGlhdGUgYW5kCisg
ICAgLy8gd2Ugc2hvdWxkIG5vdCAiZm9yY2UgZnVsZmlsbCIgdGhlcmUuCisgICAgLy8gU28gd2Ug
c2VwYXJhdGUgImZvcmNlIGZ1bGZpbGwiIG9wZXJhdGlvbiBmcm9tIHRoZSBDb21taXRJbnN0YW50
aWF0ZWQgb3BlcmF0aW9uLgorICAgIC8vIGh0dHBzOi8vZ2l0aHViLmNvbS93aGF0d2cvbG9hZGVy
L3B1bGwvNjcKKyAgICB0aGlzLmZvcmNlRnVsZmlsbFByb21pc2UoZW50cnkuaW5zdGFudGlhdGUs
IGVudHJ5KTsKK30KKworZnVuY3Rpb24gY29tbWl0SW5zdGFudGlhdGVkKGVudHJ5LCBvcHRpb25h
bEluc3RhbmNlLCBzb3VyY2UpCit7CisgICAgLy8gaHR0cHM6Ly93aGF0d2cuZ2l0aHViLmlvL2xv
YWRlci8jY29tbWl0LWluc3RhbnRpYXRlZAorCisgICAgInVzZSBzdHJpY3QiOworCisgICAgdmFy
IGluc3RhbmNlID0gdGhpcy5pbnN0YW50aWF0aW9uKG9wdGlvbmFsSW5zdGFuY2UsIHNvdXJjZSk7
CisKKyAgICAvLyBGSVhNRTogRGVzY3JpYmVkIGluIHRoZSBkcmFmdCwKKyAgICAvLyAgIDQuIEZ1
bGZpbGwgZW50cnkuW1tJbnN0YW50aWF0ZV1dIHdpdGggaW5zdGFuY2UuCisgICAgLy8gQnV0LCBp
bnN0YW50aWF0ZSBwcm9taXNlIHNob3VsZCBiZSBmdWxmaWxsZWQgd2l0aCB0aGUgZW50cnkuCisg
ICAgLy8gV2UgcmVtb3ZlIHRoaXMgc3RhdGVtZW50IGJlY2F1c2UgaW5zdGFudGlhdGUgcHJvbWlz
ZSB3aWxsIGJlCisgICAgLy8gZnVsZmlsbGVkIHdpdGhvdXQgdGhpcyAiZm9yY2UgZnVsZmlsbCIg
b3BlcmF0aW9uLgorICAgIC8vIGh0dHBzOi8vZ2l0aHViLmNvbS93aGF0d2cvbG9hZGVyL3B1bGwv
NjcKKworICAgIHZhciBkZXBzID0gW107CisgICAgdmFyIGRlcHNNYXAgPSBuZXcgQE1hcCgpOwor
ICAgIGluc3RhbmNlLnJlZ2lzdHJ5RW50cnkgPSBlbnRyeTsKKyAgICB2YXIgcmVxdWVzdGVkTW9k
dWxlcyA9IHRoaXMucmVxdWVzdGVkTW9kdWxlcyhpbnN0YW5jZSk7CisgICAgZm9yICh2YXIgaSA9
IDAsIGxlbmd0aCA9IHJlcXVlc3RlZE1vZHVsZXMubGVuZ3RoOyBpIDwgbGVuZ3RoOyArK2kpIHsK
KyAgICAgICAgdmFyIGRlcEtleSA9IHJlcXVlc3RlZE1vZHVsZXNbaV07CisgICAgICAgIHZhciBw
YWlyID0geworICAgICAgICAgICAga2V5OiBkZXBLZXksCisgICAgICAgICAgICB2YWx1ZTogdW5k
ZWZpbmVkCisgICAgICAgIH07CisgICAgICAgIEBwdXRCeVZhbERpcmVjdChkZXBzLCBpLCBwYWly
KTsKKyAgICAgICAgZGVwc01hcC5Ac2V0KGRlcEtleSwgcGFpcik7CisgICAgfQorICAgIGVudHJ5
LmRlcGVuZGVuY2llcyA9IGRlcHM7CisgICAgZW50cnkuZGVwZW5kZW5jaWVzTWFwID0gZGVwc01h
cDsKKyAgICBlbnRyeS5tb2R1bGUgPSBpbnN0YW5jZTsKKyAgICB0aGlzLnNldFN0YXRlVG9NYXgo
ZW50cnksIHRoaXMuQ29sbGVjdCk7Cit9CisKK2Z1bmN0aW9uIGluc3RhbnRpYXRpb24ocmVzdWx0
LCBzb3VyY2UpCit7CisgICAgLy8gaHR0cHM6Ly93aGF0d2cuZ2l0aHViLmlvL2xvYWRlci8jaW5z
dGFudGlhdGlvbgorICAgIC8vIEZJWE1FOiBDdXJyZW50IGltcGxlbWVudGF0aW9uIGRvZXMgbm90
IHN1cHBvcnQgb3B0aW9uYWxJbnN0YW5jZS4KKworICAgICJ1c2Ugc3RyaWN0IjsKKworICAgIHJl
dHVybiB0aGlzLnBhcnNlTW9kdWxlKHNvdXJjZSk7Cit9CisKKy8vIExvYWRlci4KKworZnVuY3Rp
b24gcmVxdWVzdEZldGNoKGtleSkKK3sKKyAgICAvLyBodHRwczovL3doYXR3Zy5naXRodWIuaW8v
bG9hZGVyLyNyZXF1ZXN0LWZldGNoCisKKyAgICAidXNlIHN0cmljdCI7CisKKyAgICB2YXIgZW50
cnkgPSB0aGlzLmVuc3VyZVJlZ2lzdGVyZWQoa2V5KTsKKyAgICBpZiAoZW50cnkuc3RhdGUgPiB0
aGlzLkxpbmspIHsKKyAgICAgICAgdmFyIGRlZmVycmVkID0gQG5ld1Byb21pc2VEZWZlcnJlZCgp
OworICAgICAgICBkZWZlcnJlZC5AcmVqZWN0LkBjYWxsKHVuZGVmaW5lZCwgbmV3IEBUeXBlRXJy
b3IoIlJlcXVlc3RlZCBtb2R1bGUgaXMgYWxyZWFkeSByZWFkeSB0byBiZSBleGVjdXRlZC4iKSk7
CisgICAgICAgIHJldHVybiBkZWZlcnJlZC5AcHJvbWlzZTsKKyAgICB9CisKKyAgICBpZiAoZW50
cnkuZmV0Y2gpCisgICAgICAgIHJldHVybiBlbnRyeS5mZXRjaDsKKworICAgIHZhciBsb2FkZXIg
PSB0aGlzOworICAgIHZhciBmZXRjaFByb21pc2UgPSB0aGlzLmZldGNoKGtleSkuQHRoZW4oZnVu
Y3Rpb24gKHBheWxvYWQpIHsKKyAgICAgICAgbG9hZGVyLnNldFN0YXRlVG9NYXgoZW50cnksIGxv
YWRlci5UcmFuc2xhdGUpOworICAgICAgICByZXR1cm4gcGF5bG9hZDsKKyAgICB9KTsKKyAgICBl
bnRyeS5mZXRjaCA9IGZldGNoUHJvbWlzZTsKKyAgICByZXR1cm4gZmV0Y2hQcm9taXNlOworfQor
CitmdW5jdGlvbiByZXF1ZXN0VHJhbnNsYXRlKGtleSkKK3sKKyAgICAvLyBodHRwczovL3doYXR3
Zy5naXRodWIuaW8vbG9hZGVyLyNyZXF1ZXN0LXRyYW5zbGF0ZQorCisgICAgInVzZSBzdHJpY3Qi
OworCisgICAgdmFyIGVudHJ5ID0gdGhpcy5lbnN1cmVSZWdpc3RlcmVkKGtleSk7CisgICAgaWYg
KGVudHJ5LnN0YXRlID4gdGhpcy5MaW5rKSB7CisgICAgICAgIHZhciBkZWZlcnJlZCA9IEBuZXdQ
cm9taXNlRGVmZXJyZWQoKTsKKyAgICAgICAgZGVmZXJyZWQuQHJlamVjdC5AY2FsbCh1bmRlZmlu
ZWQsIG5ldyBAVHlwZUVycm9yKCJSZXF1ZXN0ZWQgbW9kdWxlIGlzIGFscmVhZHkgcmVhZHkgdG8g
YmUgZXhlY3V0ZWQuIikpOworICAgICAgICByZXR1cm4gZGVmZXJyZWQuQHByb21pc2U7CisgICAg
fQorCisgICAgaWYgKGVudHJ5LnRyYW5zbGF0ZSkKKyAgICAgICAgcmV0dXJuIGVudHJ5LnRyYW5z
bGF0ZTsKKworICAgIHZhciBsb2FkZXIgPSB0aGlzOworICAgIHZhciB0cmFuc2xhdGVQcm9taXNl
ID0gdGhpcy5yZXF1ZXN0RmV0Y2goa2V5KS5AdGhlbihmdW5jdGlvbiAocGF5bG9hZCkgeworICAg
ICAgICByZXR1cm4gbG9hZGVyLnRyYW5zbGF0ZShrZXksIHBheWxvYWQpLkB0aGVuKGZ1bmN0aW9u
IChzb3VyY2UpIHsKKyAgICAgICAgICAgIGxvYWRlci5zZXRTdGF0ZVRvTWF4KGVudHJ5LCBsb2Fk
ZXIuSW5zdGFudGlhdGUpOworICAgICAgICAgICAgcmV0dXJuIHNvdXJjZTsKKyAgICAgICAgfSk7
CisgICAgfSk7CisgICAgZW50cnkudHJhbnNsYXRlID0gdHJhbnNsYXRlUHJvbWlzZTsKKyAgICBy
ZXR1cm4gdHJhbnNsYXRlUHJvbWlzZTsKK30KKworZnVuY3Rpb24gcmVxdWVzdEluc3RhbnRpYXRl
KGtleSkKK3sKKyAgICAvLyBodHRwczovL3doYXR3Zy5naXRodWIuaW8vbG9hZGVyLyNyZXF1ZXN0
LWluc3RhbnRpYXRlCisKKyAgICAidXNlIHN0cmljdCI7CisKKyAgICB2YXIgZW50cnkgPSB0aGlz
LmVuc3VyZVJlZ2lzdGVyZWQoa2V5KTsKKyAgICBpZiAoZW50cnkuc3RhdGUgPiB0aGlzLkxpbmsp
IHsKKyAgICAgICAgdmFyIGRlZmVycmVkID0gQG5ld1Byb21pc2VEZWZlcnJlZCgpOworICAgICAg
ICBkZWZlcnJlZC5AcmVqZWN0LkBjYWxsKHVuZGVmaW5lZCwgbmV3IEBUeXBlRXJyb3IoIlJlcXVl
c3RlZCBtb2R1bGUgaXMgYWxyZWFkeSByZWFkeSB0byBiZSBleGVjdXRlZC4iKSk7CisgICAgICAg
IHJldHVybiBkZWZlcnJlZC5AcHJvbWlzZTsKKyAgICB9CisKKyAgICBpZiAoZW50cnkuaW5zdGFu
dGlhdGUpCisgICAgICAgIHJldHVybiBlbnRyeS5pbnN0YW50aWF0ZTsKKworICAgIHZhciBsb2Fk
ZXIgPSB0aGlzOworICAgIHZhciBpbnN0YW50aWF0ZVByb21pc2UgPSB0aGlzLnJlcXVlc3RUcmFu
c2xhdGUoa2V5KS5AdGhlbihmdW5jdGlvbiAoc291cmNlKSB7CisgICAgICAgIHJldHVybiBsb2Fk
ZXIuaW5zdGFudGlhdGUoa2V5LCBzb3VyY2UpLkB0aGVuKGZ1bmN0aW9uIChvcHRpb25hbEluc3Rh
bmNlKSB7CisgICAgICAgICAgICBsb2FkZXIuY29tbWl0SW5zdGFudGlhdGVkKGVudHJ5LCBvcHRp
b25hbEluc3RhbmNlLCBzb3VyY2UpOworICAgICAgICAgICAgcmV0dXJuIGVudHJ5OworICAgICAg
ICB9KTsKKyAgICB9KTsKKyAgICBlbnRyeS5pbnN0YW50aWF0ZSA9IGluc3RhbnRpYXRlUHJvbWlz
ZTsKKyAgICByZXR1cm4gaW5zdGFudGlhdGVQcm9taXNlOworfQorCitmdW5jdGlvbiByZXF1ZXN0
Q29sbGVjdChrZXkpCit7CisgICAgLy8gRklYTUU6IEluIHRoZSBzcGVjLCBhZnRlciByZXF1ZXN0
aW5nIGluc3RhbnRpYXRpb24sIHdlIHdpbGwgcmVzb2x2ZQorICAgIC8vIHRoZSBkZXBlbmRlbmNp
ZXMgd2l0aG91dCBhbnkgc3RhdHVzIGNoYW5nZS4gQXMgYSByZXN1bHQsIHdoZW4gdGhlcmUKKyAg
ICAvLyBpcyBjaXJjdWxhciBkZXBlbmRlbmNpZXMsIGluc3RhbnRpYXRpb24gaXMgZG9uZSBvbmx5
IG9uY2UsIGJ1dAorICAgIC8vIHJlcGVhdGVkbHkgcmVzb2x2aW5nIHRoZSBkZXBlbmRlbmNpZXMu
IFRoaXMgbWVhbnMgdGhhdCBpbmZpbml0ZQorICAgIC8vIHJlY3Vyc2lvbiBvY2N1ciB3aGVuIHRo
ZSBnaXZlbiBtb2R1bGVzIGhhdmUgY2lyY3VsYXIgZGVwZW5kZW5jeS4gVG8KKyAgICAvLyBhdm9p
ZCB0aGlzIHNpdHVhdGlvbiwgd2UgaW50cm9kdWNlIG5ldyBzdGF0ZSwgIkNvbGxlY3QiLiBUaGlz
IG1lYW5zCisgICAgLy8gIk5vdyB0aGUgbW9kdWxlIGlzIGluc3RhbnRpYXRlZCwgc28gcmVhZHkg
dG8gY29sbGVjdCB0aGUgZGVwZW5kZW5jaWVzCisgICAgLy8gb3Igbm93IHJlc29sdmluZyB0aGVt
Ii4KKworICAgICJ1c2Ugc3RyaWN0IjsKKworICAgIHZhciBlbnRyeSA9IHRoaXMuZW5zdXJlUmVn
aXN0ZXJlZChrZXkpOworICAgIGlmIChlbnRyeS5zdGF0ZSA+IHRoaXMuTGluaykgeworICAgICAg
ICB2YXIgZGVmZXJyZWQgPSBAbmV3UHJvbWlzZURlZmVycmVkKCk7CisgICAgICAgIGRlZmVycmVk
LkByZWplY3QuQGNhbGwodW5kZWZpbmVkLCBuZXcgQFR5cGVFcnJvcigiUmVxdWVzdGVkIG1vZHVs
ZSBpcyBhbHJlYWR5IHJlYWR5IHRvIGJlIGV4ZWN1dGVkLiIpKTsKKyAgICAgICAgcmV0dXJuIGRl
ZmVycmVkLkBwcm9taXNlOworICAgIH0KKworICAgIGlmIChlbnRyeS5jb2xsZWN0KQorICAgICAg
ICByZXR1cm4gZW50cnkuY29sbGVjdDsKKworICAgIHZhciBsb2FkZXIgPSB0aGlzOworICAgIHZh
ciBjb2xsZWN0UHJvbWlzZSA9IHRoaXMucmVxdWVzdEluc3RhbnRpYXRlKGtleSkuQHRoZW4oZnVu
Y3Rpb24gKGVudHJ5KSB7CisgICAgICAgIHZhciBkZXBMb2FkcyA9IFtdOworICAgICAgICBmb3Ig
KHZhciBpID0gMCwgbGVuZ3RoID0gZW50cnkuZGVwZW5kZW5jaWVzLmxlbmd0aDsgaSA8IGxlbmd0
aDsgKytpKSB7CisgICAgICAgICAgICB2YXIgcGFpciA9IGVudHJ5LmRlcGVuZGVuY2llc1tpXTsK
KyAgICAgICAgICAgIHZhciBwcm9taXNlID0gbG9hZGVyLnJlc29sdmUocGFpci5rZXksIGtleSku
QHRoZW4oZnVuY3Rpb24gKGRlcEtleSkgeworICAgICAgICAgICAgICAgIHZhciBkZXBFbnRyeSA9
IGxvYWRlci5lbnN1cmVSZWdpc3RlcmVkKGRlcEtleSk7CisKKyAgICAgICAgICAgICAgICAvLyBS
ZWN1cnNpdmUgY29sbGVjdGluZy4gVGhpcyBlbnRyeSBpcyBiZWluZyBjb2xsZWN0ZWQgb3IgYWxy
ZWFkeSBjb2xsZWN0ZWQuCisgICAgICAgICAgICAgICAgLy8gU3RvcCB0cmFjaW5nIHRoZSBjaXJj
dWxhciBkZXBlbmRlbmNpZXMuCisgICAgICAgICAgICAgICAgaWYgKGRlcEVudHJ5LmNvbGxlY3Qp
IHsKKyAgICAgICAgICAgICAgICAgICAgcGFpci52YWx1ZSA9IGRlcEVudHJ5Lm1vZHVsZTsKKyAg
ICAgICAgICAgICAgICAgICAgcmV0dXJuIGRlcEVudHJ5OworICAgICAgICAgICAgICAgIH0KKwor
ICAgICAgICAgICAgICAgIHJldHVybiBsb2FkZXIucmVxdWVzdENvbGxlY3QoZGVwS2V5KS5AdGhl
bihmdW5jdGlvbiAoZW50cnkpIHsKKyAgICAgICAgICAgICAgICAgICAgLy8gRklYTUU6IFRoZSBy
ZXN1bHQgcHJvbWlzZSBvZiB0aGUgcmVxdWVzdEluc3RhbnRpYXRlQWxsIHNob3VsZCBiZSBmdWxm
aWxsZWQgd2l0aAorICAgICAgICAgICAgICAgICAgICAvLyB0aGUgcmVnaXN0cnkgZW50cnkuCisg
ICAgICAgICAgICAgICAgICAgIC8vIGh0dHBzOi8vZ2l0aHViLmNvbS93aGF0d2cvbG9hZGVyL3B1
bGwvNjYKKyAgICAgICAgICAgICAgICAgICAgcGFpci52YWx1ZSA9IGVudHJ5Lm1vZHVsZTsKKyAg
ICAgICAgICAgICAgICAgICAgcmV0dXJuIGVudHJ5OworICAgICAgICAgICAgICAgIH0pOworICAg
ICAgICAgICAgfSk7CisgICAgICAgICAgICBAcHV0QnlWYWxEaXJlY3QoZGVwTG9hZHMsIGksIHBy
b21pc2UpOworICAgICAgICB9CisKKyAgICAgICAgcmV0dXJuIEBQcm9taXNlLkBhbGwoZGVwTG9h
ZHMpLkB0aGVuKGZ1bmN0aW9uIChtb2R1bGVzKSB7CisgICAgICAgICAgICBsb2FkZXIuc2V0U3Rh
dGVUb01heChlbnRyeSwgbG9hZGVyLkxpbmspOworICAgICAgICAgICAgcmV0dXJuIGVudHJ5Owor
ICAgICAgICB9KTsKKyAgICB9KTsKKworICAgIGVudHJ5LmNvbGxlY3QgPSBjb2xsZWN0UHJvbWlz
ZTsKKyAgICByZXR1cm4gY29sbGVjdFByb21pc2U7Cit9CisKK2Z1bmN0aW9uIHJlcXVlc3RJbnN0
YW50aWF0ZUFsbChrZXkpCit7CisgICAgLy8gaHR0cHM6Ly93aGF0d2cuZ2l0aHViLmlvL2xvYWRl
ci8jcmVxdWVzdC1pbnN0YW50aWF0ZS1hbGwKKworICAgICJ1c2Ugc3RyaWN0IjsKKworICAgIHJl
dHVybiB0aGlzLnJlcXVlc3RDb2xsZWN0KGtleSk7Cit9CisKK2Z1bmN0aW9uIHByb3ZpZGUoa2V5
LCBzdGFnZSwgdmFsdWUpCit7CisgICAgInVzZSBzdHJpY3QiOworCisgICAgdmFyIGVudHJ5ID0g
dGhpcy5lbnN1cmVSZWdpc3RlcmVkKGtleSk7CisKKyAgICBpZiAoc3RhZ2UgPT09IHRoaXMuRmV0
Y2gpIHsKKyAgICAgICAgaWYgKGVudHJ5LnN0YXR1cyA+IHRoaXMuRmV0Y2gpCisgICAgICAgICAg
ICB0aHJvdyBuZXcgQFR5cGVFcnJvcigiUmVxdWVzdGVkIG1vZHVsZSBpcyBhbHJlYWR5IGZldGNo
ZWQuIik7CisgICAgICAgIHRoaXMuZnVsZmlsbEZldGNoKGVudHJ5LCB2YWx1ZSk7CisgICAgICAg
IHJldHVybjsKKyAgICB9CisKKyAgICBpZiAoc3RhZ2UgPT09IHRoaXMuVHJhbnNsYXRlKSB7Cisg
ICAgICAgIGlmIChlbnRyeS5zdGF0dXMgPiB0aGlzLlRyYW5zbGF0ZSkKKyAgICAgICAgICAgIHRo
cm93IG5ldyBAVHlwZUVycm9yKCJSZXF1ZXN0ZWQgbW9kdWxlIGlzIGFscmVhZHkgdHJhbnNsYXRl
ZC4iKTsKKyAgICAgICAgdGhpcy5mdWxmaWxsRmV0Y2goZW50cnksIHVuZGVmaW5lZCk7CisgICAg
ICAgIHRoaXMuZnVsZmlsbFRyYW5zbGF0ZShlbnRyeSwgdmFsdWUpOworICAgICAgICByZXR1cm47
CisgICAgfQorCisgICAgaWYgKHN0YWdlID09PSB0aGlzLkluc3RhbnRpYXRlKSB7CisgICAgICAg
IGlmIChlbnRyeS5zdGF0dXMgPiB0aGlzLkluc3RhbnRpYXRlKQorICAgICAgICAgICAgdGhyb3cg
bmV3IEBUeXBlRXJyb3IoIlJlcXVlc3RlZCBtb2R1bGUgaXMgYWxyZWFkeSBpbnN0YW50aWF0ZWQu
Iik7CisgICAgICAgIHRoaXMuZnVsZmlsbEZldGNoKGVudHJ5LCB1bmRlZmluZWQpOworICAgICAg
ICB0aGlzLmZ1bGZpbGxUcmFuc2xhdGUoZW50cnksIHZhbHVlKTsKKyAgICAgICAgdmFyIGxvYWRl
ciA9IHRoaXM7CisgICAgICAgIGVudHJ5LnRyYW5zbGF0ZS5AdGhlbihmdW5jdGlvbiAoc291cmNl
KSB7CisgICAgICAgICAgICBsb2FkZXIuZnVsZmlsbEluc3RhbnRpYXRlKGVudHJ5LCB2YWx1ZSwg
c291cmNlKTsKKyAgICAgICAgfSk7CisgICAgICAgIHJldHVybjsKKyAgICB9CisKKyAgICB0aHJv
dyBuZXcgQFR5cGVFcnJvcigiUmVxdWVzdGVkIG1vZHVsZSBpcyBhbHJlYWR5IHJlYWR5IHRvIGJl
IGV4ZWN1dGVkLiIpOworfQpkaWZmIC0tZ2l0IGEvU291cmNlL0phdmFTY3JpcHRDb3JlL2J1aWx0
aW5zL09wZXJhdGlvbnMuUHJvbWlzZS5qcyBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9idWlsdGlu
cy9PcGVyYXRpb25zLlByb21pc2UuanMKaW5kZXggNjZmOWMyNTE1MzU5YzdhNTEyNTRmOTM3ZmM3
ZjUxY2NkMTMxMjQxZC4uZDBkNDFkNGZiMmI5ZWM3Zjc4ZDFkNjM3YTE4YTFkYWFjYmFmYmIzOSAx
MDA2NDQKLS0tIGEvU291cmNlL0phdmFTY3JpcHRDb3JlL2J1aWx0aW5zL09wZXJhdGlvbnMuUHJv
bWlzZS5qcworKysgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvYnVpbHRpbnMvT3BlcmF0aW9ucy5Q
cm9taXNlLmpzCkBAIC0yMTgsMyArMjE4LDI5IEBAIGZ1bmN0aW9uIGluaXRpYWxpemVQcm9taXNl
KGV4ZWN1dG9yKQogCiAgICAgcmV0dXJuIHRoaXM7CiB9CisKK2Z1bmN0aW9uIHByb21pc2VUaGVu
KHByb21pc2UsIGNhcGFiaWxpdHksIG9uRnVsZmlsbGVkLCBvblJlamVjdGVkKQoreworICAgICJ1
c2Ugc3RyaWN0IjsKKworICAgIGlmICh0eXBlb2Ygb25GdWxmaWxsZWQgIT09ICJmdW5jdGlvbiIp
CisgICAgICAgIG9uRnVsZmlsbGVkID0gZnVuY3Rpb24gKGFyZ3VtZW50KSB7IHJldHVybiBhcmd1
bWVudDsgfTsKKworICAgIGlmICh0eXBlb2Ygb25SZWplY3RlZCAhPT0gImZ1bmN0aW9uIikKKyAg
ICAgICAgb25SZWplY3RlZCA9IGZ1bmN0aW9uIChhcmd1bWVudCkgeyB0aHJvdyBhcmd1bWVudDsg
fTsKKworICAgIHZhciBmdWxmaWxsUmVhY3Rpb24gPSBAbmV3UHJvbWlzZVJlYWN0aW9uKGNhcGFi
aWxpdHksIG9uRnVsZmlsbGVkKTsKKyAgICB2YXIgcmVqZWN0UmVhY3Rpb24gPSBAbmV3UHJvbWlz
ZVJlYWN0aW9uKGNhcGFiaWxpdHksIG9uUmVqZWN0ZWQpOworCisgICAgdmFyIHN0YXRlID0gcHJv
bWlzZS5AcHJvbWlzZVN0YXRlOworCisgICAgaWYgKHN0YXRlID09PSBAcHJvbWlzZVBlbmRpbmcp
IHsKKyAgICAgICAgQHB1dEJ5VmFsRGlyZWN0KHByb21pc2UuQHByb21pc2VGdWxmaWxsUmVhY3Rp
b25zLCBwcm9taXNlLkBwcm9taXNlRnVsZmlsbFJlYWN0aW9ucy5sZW5ndGgsIGZ1bGZpbGxSZWFj
dGlvbikKKyAgICAgICAgQHB1dEJ5VmFsRGlyZWN0KHByb21pc2UuQHByb21pc2VSZWplY3RSZWFj
dGlvbnMsIHByb21pc2UuQHByb21pc2VSZWplY3RSZWFjdGlvbnMubGVuZ3RoLCByZWplY3RSZWFj
dGlvbikKKyAgICB9IGVsc2UgaWYgKHN0YXRlID09PSBAcHJvbWlzZUZ1bGZpbGxlZCkKKyAgICAg
ICAgQGVucXVldWVKb2IoQHByb21pc2VSZWFjdGlvbkpvYiwgW2Z1bGZpbGxSZWFjdGlvbiwgcHJv
bWlzZS5AcHJvbWlzZVJlc3VsdF0pOworICAgIGVsc2UgaWYgKHN0YXRlID09PSBAcHJvbWlzZVJl
amVjdGVkKQorICAgICAgICBAZW5xdWV1ZUpvYihAcHJvbWlzZVJlYWN0aW9uSm9iLCBbcmVqZWN0
UmVhY3Rpb24sIHByb21pc2UuQHByb21pc2VSZXN1bHRdKTsKKworICAgIHJldHVybiBjYXBhYmls
aXR5LkBwcm9taXNlOworfQpkaWZmIC0tZ2l0IGEvU291cmNlL0phdmFTY3JpcHRDb3JlL2J1aWx0
aW5zL1Byb21pc2UucHJvdG90eXBlLmpzIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL2J1aWx0aW5z
L1Byb21pc2UucHJvdG90eXBlLmpzCmluZGV4IDg1NjNkZjBkOTI3ZmIyMzM5Njg5MzllMTQ5NDIz
OTZlYzg1ZTY1YWEuLmJhMDIyYWJhNWEwZDU4ZDg1ZWZlZTA3OWIzOWFjYmIxMTM2MmJmOGQgMTAw
NjQ0Ci0tLSBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9idWlsdGlucy9Qcm9taXNlLnByb3RvdHlw
ZS5qcworKysgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvYnVpbHRpbnMvUHJvbWlzZS5wcm90b3R5
cGUuanMKQEAgLTQxLDI2ICs0MSwxOSBAQCBmdW5jdGlvbiB0aGVuKG9uRnVsZmlsbGVkLCBvblJl
amVjdGVkKQogICAgIC8vIGh0dHBzOi8vYnVncy53ZWJraXQub3JnL3Nob3dfYnVnLmNnaT9pZD0x
NDY2MjQKICAgICB2YXIgY29uc3RydWN0b3IgPSB0aGlzLmNvbnN0cnVjdG9yOwogCi0gICAgdmFy
IHJlc3VsdENhcGFiaWxpdHkgPSBAbmV3UHJvbWlzZUNhcGFiaWxpdHkoY29uc3RydWN0b3IpOwot
Ci0gICAgaWYgKHR5cGVvZiBvbkZ1bGZpbGxlZCAhPT0gImZ1bmN0aW9uIikKLSAgICAgICAgb25G
dWxmaWxsZWQgPSBmdW5jdGlvbiAoYXJndW1lbnQpIHsgcmV0dXJuIGFyZ3VtZW50OyB9OwotCi0g
ICAgaWYgKHR5cGVvZiBvblJlamVjdGVkICE9PSAiZnVuY3Rpb24iKQotICAgICAgICBvblJlamVj
dGVkID0gZnVuY3Rpb24gKGFyZ3VtZW50KSB7IHRocm93IGFyZ3VtZW50OyB9OwotCi0gICAgdmFy
IGZ1bGZpbGxSZWFjdGlvbiA9IEBuZXdQcm9taXNlUmVhY3Rpb24ocmVzdWx0Q2FwYWJpbGl0eSwg
b25GdWxmaWxsZWQpOwotICAgIHZhciByZWplY3RSZWFjdGlvbiA9IEBuZXdQcm9taXNlUmVhY3Rp
b24ocmVzdWx0Q2FwYWJpbGl0eSwgb25SZWplY3RlZCk7CisgICAgcmV0dXJuIEBwcm9taXNlVGhl
bih0aGlzLCBAbmV3UHJvbWlzZUNhcGFiaWxpdHkoY29uc3RydWN0b3IpLCBvbkZ1bGZpbGxlZCwg
b25SZWplY3RlZCk7Cit9CiAKLSAgICB2YXIgc3RhdGUgPSB0aGlzLkBwcm9taXNlU3RhdGU7Citm
dW5jdGlvbiBwcml2YXRlVGhlbihvbkZ1bGZpbGxlZCwgb25SZWplY3RlZCkKK3sKKyAgICAvLyBU
aGlzIGZ1bmN0aW9uIGlzIGludGVuZGVkIHRvIGJlIHVzZWQgaW4gdGhlIEpTQyBpbnRlcm5hbHMu
CisgICAgLy8gVGhlIGltcGxlbWVudGF0aW9uIHNob3VsZCB0YWtlIGNhcmUgbm90IHRvIHBlcmZv
cm0gdGhlIHVzZXIKKyAgICAvLyBvYnNlcnZhYmxlIC8gdHJhcHBhYmxlIG9wZXJhdGlvbnMuCisg
ICAgLy8KKyAgICAvLyAxLiBEb24ndCBsb29rIHVwIHRoaXMuY29uc3RydWN0b3IgLyBAQHNwZWNp
ZXMuIEFsd2F5cyBjb25zdHJ1Y3QKKyAgICAvLyAgICB0aGUgcGxhaW4gUHJvbWlzZSBvYmplY3Qu
CiAKLSAgICBpZiAoc3RhdGUgPT09IEBwcm9taXNlUGVuZGluZykgewotICAgICAgICBAcHV0QnlW
YWxEaXJlY3QodGhpcy5AcHJvbWlzZUZ1bGZpbGxSZWFjdGlvbnMsIHRoaXMuQHByb21pc2VGdWxm
aWxsUmVhY3Rpb25zLmxlbmd0aCwgZnVsZmlsbFJlYWN0aW9uKQotICAgICAgICBAcHV0QnlWYWxE
aXJlY3QodGhpcy5AcHJvbWlzZVJlamVjdFJlYWN0aW9ucywgdGhpcy5AcHJvbWlzZVJlamVjdFJl
YWN0aW9ucy5sZW5ndGgsIHJlamVjdFJlYWN0aW9uKQotICAgIH0gZWxzZSBpZiAoc3RhdGUgPT09
IEBwcm9taXNlRnVsZmlsbGVkKQotICAgICAgICBAZW5xdWV1ZUpvYihAcHJvbWlzZVJlYWN0aW9u
Sm9iLCBbZnVsZmlsbFJlYWN0aW9uLCB0aGlzLkBwcm9taXNlUmVzdWx0XSk7Ci0gICAgZWxzZSBp
ZiAoc3RhdGUgPT09IEBwcm9taXNlUmVqZWN0ZWQpCi0gICAgICAgIEBlbnF1ZXVlSm9iKEBwcm9t
aXNlUmVhY3Rpb25Kb2IsIFtyZWplY3RSZWFjdGlvbiwgdGhpcy5AcHJvbWlzZVJlc3VsdF0pOwor
ICAgICJ1c2Ugc3RyaWN0IjsKIAotICAgIHJldHVybiByZXN1bHRDYXBhYmlsaXR5LkBwcm9taXNl
OworICAgIHJldHVybiBAcHJvbWlzZVRoZW4odGhpcywgQG5ld1Byb21pc2VEZWZlcnJlZCgpLCBv
bkZ1bGZpbGxlZCwgb25SZWplY3RlZCk7CiB9CmRpZmYgLS1naXQgYS9Tb3VyY2UvSmF2YVNjcmlw
dENvcmUvYnVpbHRpbnMvUHJvbWlzZUNvbnN0cnVjdG9yLmpzIGIvU291cmNlL0phdmFTY3JpcHRD
b3JlL2J1aWx0aW5zL1Byb21pc2VDb25zdHJ1Y3Rvci5qcwppbmRleCAxZjgzYjQ3Zjc5MGE3NWU1
YmY4YzkzZDVlNjY0OTYxOGNiMWFlYzY3Li5mNjYxMDc3NGQwMWYyMTYyMDYyNjBjNzA0ZGZjM2Ex
MGU1MzQ1ZTQxIDEwMDY0NAotLS0gYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvYnVpbHRpbnMvUHJv
bWlzZUNvbnN0cnVjdG9yLmpzCisrKyBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9idWlsdGlucy9Q
cm9taXNlQ29uc3RydWN0b3IuanMKQEAgLTEzNywzICsxMzcsNjUgQEAgZnVuY3Rpb24gcmVzb2x2
ZSh2YWx1ZSkKIAogICAgIHJldHVybiBwcm9taXNlQ2FwYWJpbGl0eS5AcHJvbWlzZTsKIH0KKwor
ZnVuY3Rpb24gcHJpdmF0ZUFsbChhcnJheSkKK3sKKyAgICAvLyBUaGlzIGZ1bmN0aW9uIGlzIGlu
dGVuZGVkIHRvIGJlIHVzZWQgaW4gdGhlIEpTQyBpbnRlcm5hbHMuCisgICAgLy8gVGhlIGltcGxl
bWVudGF0aW9uIHNob3VsZCB0YWtlIGNhcmUgbm90IHRvIHBlcmZvcm0gdGhlIHVzZXIKKyAgICAv
LyBvYnNlcnZhYmxlIC8gdHJhcHBhYmxlIG9wZXJhdGlvbnMuCisgICAgLy8KKyAgICAvLyAxLiBE
b24ndCB1c2UgZm9yLW9mIGFuZCBpdGVyYWJsZXMuIFRoaXMgZnVuY3Rpb24gb25seSBhY2NlcHRz
CisgICAgLy8gICAgdGhlIGRlbnNlIGFycmF5IG9mIHRoZSBwcm9taXNlcy4KKyAgICAvLyAyLiBE
b24ndCBsb29rIHVwIHRoaXMuY29uc3RydWN0b3IgLyBAQHNwZWNpZXMuIEFsd2F5cyBjb25zdHJ1
Y3QKKyAgICAvLyAgICB0aGUgcGxhaW4gUHJvbWlzZSBvYmplY3QuCisKKyAgICAidXNlIHN0cmlj
dCI7CisKKyAgICB2YXIgcHJvbWlzZUNhcGFiaWxpdHkgPSBAbmV3UHJvbWlzZURlZmVycmVkKCk7
CisKKyAgICB2YXIgdmFsdWVzID0gW107CisgICAgdmFyIGluZGV4ID0gMDsKKyAgICB2YXIgcmVt
YWluaW5nRWxlbWVudHNDb3VudCA9IDE7CisKKyAgICBmdW5jdGlvbiBuZXdSZXNvbHZlRWxlbWVu
dChpbmRleCkKKyAgICB7CisgICAgICAgIHZhciBhbHJlYWR5Q2FsbGVkID0gZmFsc2U7CisgICAg
ICAgIHJldHVybiBmdW5jdGlvbiAoYXJndW1lbnQpCisgICAgICAgIHsKKyAgICAgICAgICAgIGlm
IChhbHJlYWR5Q2FsbGVkKQorICAgICAgICAgICAgICAgIHJldHVybiB1bmRlZmluZWQ7CisgICAg
ICAgICAgICBhbHJlYWR5Q2FsbGVkID0gdHJ1ZTsKKworICAgICAgICAgICAgQHB1dEJ5VmFsRGly
ZWN0KHZhbHVlcywgaW5kZXgsIGFyZ3VtZW50KTsKKworICAgICAgICAgICAgLS1yZW1haW5pbmdF
bGVtZW50c0NvdW50OworICAgICAgICAgICAgaWYgKHJlbWFpbmluZ0VsZW1lbnRzQ291bnQgPT09
IDApCisgICAgICAgICAgICAgICAgcmV0dXJuIHByb21pc2VDYXBhYmlsaXR5LkByZXNvbHZlLkBj
YWxsKHVuZGVmaW5lZCwgdmFsdWVzKTsKKworICAgICAgICAgICAgcmV0dXJuIHVuZGVmaW5lZDsK
KyAgICAgICAgfQorICAgIH0KKworICAgIHRyeSB7CisgICAgICAgIGZvciAodmFyIGluZGV4ID0g
MCwgbGVuZ3RoID0gYXJyYXkubGVuZ3RoOyBpbmRleCA8IGxlbmd0aDsgKytpbmRleCkgeworICAg
ICAgICAgICAgdmFyIHZhbHVlID0gYXJyYXlbaW5kZXhdOworICAgICAgICAgICAgQHB1dEJ5VmFs
RGlyZWN0KHZhbHVlcywgaW5kZXgsIHVuZGVmaW5lZCk7CisKKyAgICAgICAgICAgIHZhciBuZXh0
UHJvbWlzZUNhcGFiaWxpdHkgPSBAbmV3UHJvbWlzZURlZmVycmVkKCk7CisgICAgICAgICAgICBu
ZXh0UHJvbWlzZUNhcGFiaWxpdHkuQHJlc29sdmUuQGNhbGwodW5kZWZpbmVkLCB2YWx1ZSk7Cisg
ICAgICAgICAgICB2YXIgbmV4dFByb21pc2UgPSBuZXh0UHJvbWlzZUNhcGFiaWxpdHkuQHByb21p
c2U7CisKKyAgICAgICAgICAgIHZhciByZXNvbHZlRWxlbWVudCA9IG5ld1Jlc29sdmVFbGVtZW50
KGluZGV4KTsKKyAgICAgICAgICAgICsrcmVtYWluaW5nRWxlbWVudHNDb3VudDsKKyAgICAgICAg
ICAgIG5leHRQcm9taXNlLkB0aGVuKHJlc29sdmVFbGVtZW50LCBwcm9taXNlQ2FwYWJpbGl0eS5A
cmVqZWN0KTsKKyAgICAgICAgfQorCisgICAgICAgIC0tcmVtYWluaW5nRWxlbWVudHNDb3VudDsK
KyAgICAgICAgaWYgKHJlbWFpbmluZ0VsZW1lbnRzQ291bnQgPT09IDApCisgICAgICAgICAgICBw
cm9taXNlQ2FwYWJpbGl0eS5AcmVzb2x2ZS5AY2FsbCh1bmRlZmluZWQsIHZhbHVlcyk7CisgICAg
fSBjYXRjaCAoZXJyb3IpIHsKKyAgICAgICAgcHJvbWlzZUNhcGFiaWxpdHkuQHJlamVjdC5AY2Fs
bCh1bmRlZmluZWQsIGVycm9yKTsKKyAgICB9CisKKyAgICByZXR1cm4gcHJvbWlzZUNhcGFiaWxp
dHkuQHByb21pc2U7Cit9CmRpZmYgLS1naXQgYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvanNjLmNw
cCBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9qc2MuY3BwCmluZGV4IDViMTk1MzNjNDBhYTUxNDQy
Y2M0MWMxNjk4YWJiZWMyMTJmYWYzNzguLmE0Yzk3M2ExMDAyZDQxYjNhMWZjMzgyNzJhOWUwMWFl
YzNiMzM3MjkgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9qc2MuY3BwCisrKyBi
L1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9qc2MuY3BwCkBAIC00MSw2ICs0MSw3IEBACiAjaW5jbHVk
ZSAiSlNGdW5jdGlvbi5oIgogI2luY2x1ZGUgIkpTTG9jay5oIgogI2luY2x1ZGUgIkpTT05PYmpl
Y3QuaCIKKyNpbmNsdWRlICJKU1Byb21pc2VEZWZlcnJlZC5oIgogI2luY2x1ZGUgIkpTUHJveHku
aCIKICNpbmNsdWRlICJKU1N0cmluZy5oIgogI2luY2x1ZGUgIkpTV0FTTU1vZHVsZS5oIgpAQCAt
NTE5LDIwICs1MjAsMTcgQEAgc3RydWN0IFNjcmlwdCB7CiBjbGFzcyBDb21tYW5kTGluZSB7CiBw
dWJsaWM6CiAgICAgQ29tbWFuZExpbmUoaW50IGFyZ2MsIGNoYXIqKiBhcmd2KQotICAgICAgICA6
IG1faW50ZXJhY3RpdmUoZmFsc2UpCi0gICAgICAgICwgbV9kdW1wKGZhbHNlKQotICAgICAgICAs
IG1fZXhpdENvZGUoZmFsc2UpCi0gICAgICAgICwgbV9wcm9maWxlKGZhbHNlKQogICAgIHsKICAg
ICAgICAgcGFyc2VBcmd1bWVudHMoYXJnYywgYXJndik7CiAgICAgfQogCi0gICAgYm9vbCBtX2lu
dGVyYWN0aXZlOwotICAgIGJvb2wgbV9kdW1wOwotICAgIGJvb2wgbV9leGl0Q29kZTsKKyAgICBi
b29sIG1faW50ZXJhY3RpdmUgeyBmYWxzZSB9OworICAgIGJvb2wgbV9kdW1wIHsgZmFsc2UgfTsK
KyAgICBib29sIG1fbW9kdWxlIHsgZmFsc2UgfTsKKyAgICBib29sIG1fZXhpdENvZGUgeyBmYWxz
ZSB9OwogICAgIFZlY3RvcjxTY3JpcHQ+IG1fc2NyaXB0czsKICAgICBWZWN0b3I8U3RyaW5nPiBt
X2FyZ3VtZW50czsKLSAgICBib29sIG1fcHJvZmlsZTsKKyAgICBib29sIG1fcHJvZmlsZSB7IGZh
bHNlIH07CiAgICAgU3RyaW5nIG1fcHJvZmlsZXJPdXRwdXQ7CiAKICAgICB2b2lkIHBhcnNlQXJn
dW1lbnRzKGludCwgY2hhcioqKTsKQEAgLTU2Niw2ICs1NjQsMTcgQEAgbG9uZyBTdG9wV2F0Y2g6
OmdldEVsYXBzZWRNUygpCiAgICAgcmV0dXJuIHN0YXRpY19jYXN0PGxvbmc+KChtX3N0b3BUaW1l
IC0gbV9zdGFydFRpbWUpICogMTAwMCk7CiB9CiAKK3N0YXRpYyBpbmxpbmUgU3RyaW5nIHN0cmlu
Z0Zyb21VVEYoY29uc3QgY2hhciogdXRmOCkKK3sKKyAgICByZXR1cm4gU3RyaW5nOjpmcm9tVVRG
OFdpdGhMYXRpbjFGYWxsYmFjayh1dGY4LCBzdHJsZW4odXRmOCkpOworfQorCitzdGF0aWMgaW5s
aW5lIFNvdXJjZUNvZGUganNjU291cmNlKGNvbnN0IGNoYXIqIHV0ZjgsIGNvbnN0IFN0cmluZyYg
ZmlsZW5hbWUpCit7CisgICAgU3RyaW5nIHN0ciA9IHN0cmluZ0Zyb21VVEYodXRmOCk7CisgICAg
cmV0dXJuIG1ha2VTb3VyY2Uoc3RyLCBmaWxlbmFtZSk7Cit9CisKIGNsYXNzIEdsb2JhbE9iamVj
dCA6IHB1YmxpYyBKU0dsb2JhbE9iamVjdCB7CiBwcml2YXRlOgogICAgIEdsb2JhbE9iamVjdChW
TSYsIFN0cnVjdHVyZSopOwpAQCAtNjg3LDEwICs2OTYsMzEgQEAgY2xhc3MgR2xvYmFsT2JqZWN0
IDogcHVibGljIEpTR2xvYmFsT2JqZWN0IHsKICAgICAgICAgSWRlbnRpZmllciBpZGVudGlmaWVy
ID0gSWRlbnRpZmllcjo6ZnJvbVN0cmluZygmdm0sIG5hbWUpOwogICAgICAgICBwdXREaXJlY3Qo
dm0sIGlkZW50aWZpZXIsIEpTRnVuY3Rpb246OmNyZWF0ZSh2bSwgdGhpcywgYXJndW1lbnRzLCBp
ZGVudGlmaWVyLnN0cmluZygpLCBmdW5jdGlvbiwgTm9JbnRyaW5zaWMsIGZ1bmN0aW9uKSk7CiAg
ICAgfQorCisgICAgc3RhdGljIEpTVmFsdWUgbG9hZGVyRmV0Y2goSlNHbG9iYWxPYmplY3QqIGds
b2JhbE9iamVjdCwgRXhlY1N0YXRlKiBleGVjLCBKU1ZhbHVlIGtleSkKKyAgICB7CisgICAgICAg
IEpTUHJvbWlzZURlZmVycmVkKiBkZWZlcnJlZCA9IEpTUHJvbWlzZURlZmVycmVkOjpjcmVhdGUo
ZXhlYywgZ2xvYmFsT2JqZWN0KTsKKyAgICAgICAgU3RyaW5nIG1vZHVsZUtleSA9IGtleS50b1N0
cmluZyhleGVjKS0+dmFsdWUoZXhlYyk7CisgICAgICAgIGlmIChleGVjLT5oYWRFeGNlcHRpb24o
KSkgeworICAgICAgICAgICAgSlNWYWx1ZSBleGNlcHRpb24gPSBleGVjLT5leGNlcHRpb24oKTsK
KyAgICAgICAgICAgIGV4ZWMtPmNsZWFyRXhjZXB0aW9uKCk7CisgICAgICAgICAgICBkZWZlcnJl
ZC0+cmVqZWN0KGV4ZWMsIGV4Y2VwdGlvbik7CisgICAgICAgICAgICByZXR1cm4gZGVmZXJyZWQt
PnByb21pc2UoKTsKKyAgICAgICAgfQorCisgICAgICAgIC8vIEhlcmUsIG5vdyB3ZSBjb25zaWRl
ciBtb2R1bGVLZXkgYXMgdGhlIGZpbGVOYW1lLgorICAgICAgICBWZWN0b3I8Y2hhcj4gdXRmODsK
KyAgICAgICAgaWYgKCFmaWxsQnVmZmVyV2l0aENvbnRlbnRzT2ZGaWxlKG1vZHVsZUtleSwgdXRm
OCkpIHsKKyAgICAgICAgICAgIGRlZmVycmVkLT5yZWplY3QoZXhlYywgY3JlYXRlRXJyb3IoZXhl
YywgbWFrZVN0cmluZygiQ291bGQgbm90IG9wZW4gZmlsZSAnIiwgbW9kdWxlS2V5LCAiJy4iKSkp
OworICAgICAgICAgICAgcmV0dXJuIGRlZmVycmVkLT5wcm9taXNlKCk7CisgICAgICAgIH0KKyAg
ICAgICAgZGVmZXJyZWQtPnJlc29sdmUoZXhlYywganNTdHJpbmcoZXhlYywgc3RyaW5nRnJvbVVU
Rih1dGY4LmRhdGEoKSkpKTsKKyAgICAgICAgcmV0dXJuIGRlZmVycmVkLT5wcm9taXNlKCk7Cisg
ICAgfQogfTsKIAogY29uc3QgQ2xhc3NJbmZvIEdsb2JhbE9iamVjdDo6c19pbmZvID0geyAiZ2xv
YmFsIiwgJkpTR2xvYmFsT2JqZWN0OjpzX2luZm8sICZnbG9iYWxPYmplY3RUYWJsZSwgQ1JFQVRF
X01FVEhPRF9UQUJMRShHbG9iYWxPYmplY3QpIH07Ci1jb25zdCBHbG9iYWxPYmplY3RNZXRob2RU
YWJsZSBHbG9iYWxPYmplY3Q6OnNfZ2xvYmFsT2JqZWN0TWV0aG9kVGFibGUgPSB7ICZhbGxvd3NB
Y2Nlc3NGcm9tLCAmc3VwcG9ydHNQcm9maWxpbmcsICZzdXBwb3J0c1JpY2hTb3VyY2VJbmZvLCAm
c2hvdWxkSW50ZXJydXB0U2NyaXB0LCAmamF2YVNjcmlwdFJ1bnRpbWVGbGFncywgMCwgJnNob3Vs
ZEludGVycnVwdFNjcmlwdEJlZm9yZVRpbWVvdXQgfTsKK2NvbnN0IEdsb2JhbE9iamVjdE1ldGhv
ZFRhYmxlIEdsb2JhbE9iamVjdDo6c19nbG9iYWxPYmplY3RNZXRob2RUYWJsZSA9IHsgJmFsbG93
c0FjY2Vzc0Zyb20sICZzdXBwb3J0c1Byb2ZpbGluZywgJnN1cHBvcnRzUmljaFNvdXJjZUluZm8s
ICZzaG91bGRJbnRlcnJ1cHRTY3JpcHQsICZqYXZhU2NyaXB0UnVudGltZUZsYWdzLCAwLCAmc2hv
dWxkSW50ZXJydXB0U2NyaXB0QmVmb3JlVGltZW91dCwgbnVsbHB0ciwgJmxvYWRlckZldGNoLCBu
dWxscHRyLCBudWxscHRyIH07CiAKIAogR2xvYmFsT2JqZWN0OjpHbG9iYWxPYmplY3QoVk0mIHZt
LCBTdHJ1Y3R1cmUqIHN0cnVjdHVyZSkKQEAgLTY5OCwxNyArNzI4LDYgQEAgR2xvYmFsT2JqZWN0
OjpHbG9iYWxPYmplY3QoVk0mIHZtLCBTdHJ1Y3R1cmUqIHN0cnVjdHVyZSkKIHsKIH0KIAotc3Rh
dGljIGlubGluZSBTdHJpbmcgc3RyaW5nRnJvbVVURihjb25zdCBjaGFyKiB1dGY4KQotewotICAg
IHJldHVybiBTdHJpbmc6OmZyb21VVEY4V2l0aExhdGluMUZhbGxiYWNrKHV0ZjgsIHN0cmxlbih1
dGY4KSk7Ci19Ci0KLXN0YXRpYyBpbmxpbmUgU291cmNlQ29kZSBqc2NTb3VyY2UoY29uc3QgY2hh
ciogdXRmOCwgY29uc3QgU3RyaW5nJiBmaWxlbmFtZSkKLXsKLSAgICBTdHJpbmcgc3RyID0gc3Ry
aW5nRnJvbVVURih1dGY4KTsKLSAgICByZXR1cm4gbWFrZVNvdXJjZShzdHIsIGZpbGVuYW1lKTsK
LX0KLQogRW5jb2RlZEpTVmFsdWUgSlNDX0hPU1RfQ0FMTCBmdW5jdGlvblByaW50KEV4ZWNTdGF0
ZSogZXhlYykKIHsKICAgICBmb3IgKHVuc2lnbmVkIGkgPSAwOyBpIDwgZXhlYy0+YXJndW1lbnRD
b3VudCgpOyArK2kpIHsKQEAgLTEyMTIsNyArMTIzMSw3IEBAIEVuY29kZWRKU1ZhbHVlIEpTQ19I
T1NUX0NBTEwgZnVuY3Rpb25DaGVja01vZHVsZVN5bnRheChFeGVjU3RhdGUqIGV4ZWMpCiAgICAg
c3RvcFdhdGNoLnN0YXJ0KCk7CiAKICAgICBQYXJzZXJFcnJvciBlcnJvcjsKLSAgICBib29sIHZh
bGlkU3ludGF4ID0gY2hlY2tNb2R1bGVTeW50YXgoZXhlYy0+dm0oKSwgbWFrZVNvdXJjZShzb3Vy
Y2UpLCBlcnJvcik7CisgICAgYm9vbCB2YWxpZFN5bnRheCA9IGNoZWNrTW9kdWxlU3ludGF4KGV4
ZWMsIG1ha2VTb3VyY2Uoc291cmNlKSwgZXJyb3IpOwogICAgIHN0b3BXYXRjaC5zdG9wKCk7CiAK
ICAgICBpZiAoIXZhbGlkU3ludGF4KQpAQCAtMTMyMCw3ICsxMzM5LDE4IEBAIGludCBtYWluKGlu
dCBhcmdjLCBjaGFyKiogYXJndikKICAgICBqc2NFeGl0KHJlcyk7CiB9CiAKLXN0YXRpYyBib29s
IHJ1bldpdGhTY3JpcHRzKEdsb2JhbE9iamVjdCogZ2xvYmFsT2JqZWN0LCBjb25zdCBWZWN0b3I8
U2NyaXB0PiYgc2NyaXB0cywgYm9vbCBkdW1wKQorc3RhdGljIHZvaWQgZHVtcEV4Y2VwdGlvbihH
bG9iYWxPYmplY3QqIGdsb2JhbE9iamVjdCwgTmFrZWRQdHI8RXhjZXB0aW9uPiBldmFsdWF0aW9u
RXhjZXB0aW9uKQoreworICAgIGlmIChldmFsdWF0aW9uRXhjZXB0aW9uKSB7CisgICAgICAgIHBy
aW50ZigiRXhjZXB0aW9uOiAlc1xuIiwgZXZhbHVhdGlvbkV4Y2VwdGlvbi0+dmFsdWUoKS50b1N0
cmluZyhnbG9iYWxPYmplY3QtPmdsb2JhbEV4ZWMoKSktPnZhbHVlKGdsb2JhbE9iamVjdC0+Z2xv
YmFsRXhlYygpKS51dGY4KCkuZGF0YSgpKTsKKyAgICAgICAgSWRlbnRpZmllciBzdGFja0lEID0g
SWRlbnRpZmllcjo6ZnJvbVN0cmluZyhnbG9iYWxPYmplY3QtPmdsb2JhbEV4ZWMoKSwgInN0YWNr
Iik7CisgICAgICAgIEpTVmFsdWUgc3RhY2tWYWx1ZSA9IGV2YWx1YXRpb25FeGNlcHRpb24tPnZh
bHVlKCkuZ2V0KGdsb2JhbE9iamVjdC0+Z2xvYmFsRXhlYygpLCBzdGFja0lEKTsKKyAgICAgICAg
aWYgKCFzdGFja1ZhbHVlLmlzVW5kZWZpbmVkT3JOdWxsKCkpCisgICAgICAgICAgICBwcmludGYo
IiVzXG4iLCBzdGFja1ZhbHVlLnRvU3RyaW5nKGdsb2JhbE9iamVjdC0+Z2xvYmFsRXhlYygpKS0+
dmFsdWUoZ2xvYmFsT2JqZWN0LT5nbG9iYWxFeGVjKCkpLnV0ZjgoKS5kYXRhKCkpOworICAgIH0K
K30KKworc3RhdGljIGJvb2wgcnVuV2l0aFNjcmlwdHMoR2xvYmFsT2JqZWN0KiBnbG9iYWxPYmpl
Y3QsIGNvbnN0IFZlY3RvcjxTY3JpcHQ+JiBzY3JpcHRzLCBib29sIGR1bXAsIGJvb2wgbW9kdWxl
KQogewogICAgIGNvbnN0IGNoYXIqIHNjcmlwdDsKICAgICBTdHJpbmcgZmlsZU5hbWU7CkBAIC0x
MzQ5LDE3ICsxMzc5LDIxIEBAIHN0YXRpYyBib29sIHJ1bldpdGhTY3JpcHRzKEdsb2JhbE9iamVj
dCogZ2xvYmFsT2JqZWN0LCBjb25zdCBWZWN0b3I8U2NyaXB0PiYgc2NyCiAKICAgICAgICAgdm0u
c3RhcnRTYW1wbGluZygpOwogCi0gICAgICAgIE5ha2VkUHRyPEV4Y2VwdGlvbj4gZXZhbHVhdGlv
bkV4Y2VwdGlvbjsKLSAgICAgICAgSlNWYWx1ZSByZXR1cm5WYWx1ZSA9IGV2YWx1YXRlKGdsb2Jh
bE9iamVjdC0+Z2xvYmFsRXhlYygpLCBqc2NTb3VyY2Uoc2NyaXB0LCBmaWxlTmFtZSksIEpTVmFs
dWUoKSwgZXZhbHVhdGlvbkV4Y2VwdGlvbik7Ci0gICAgICAgIHN1Y2Nlc3MgPSBzdWNjZXNzICYm
ICFldmFsdWF0aW9uRXhjZXB0aW9uOwotICAgICAgICBpZiAoZHVtcCAmJiAhZXZhbHVhdGlvbkV4
Y2VwdGlvbikKLSAgICAgICAgICAgIHByaW50ZigiRW5kOiAlc1xuIiwgcmV0dXJuVmFsdWUudG9T
dHJpbmcoZ2xvYmFsT2JqZWN0LT5nbG9iYWxFeGVjKCkpLT52YWx1ZShnbG9iYWxPYmplY3QtPmds
b2JhbEV4ZWMoKSkudXRmOCgpLmRhdGEoKSk7Ci0gICAgICAgIGlmIChldmFsdWF0aW9uRXhjZXB0
aW9uKSB7Ci0gICAgICAgICAgICBwcmludGYoIkV4Y2VwdGlvbjogJXNcbiIsIGV2YWx1YXRpb25F
eGNlcHRpb24tPnZhbHVlKCkudG9TdHJpbmcoZ2xvYmFsT2JqZWN0LT5nbG9iYWxFeGVjKCkpLT52
YWx1ZShnbG9iYWxPYmplY3QtPmdsb2JhbEV4ZWMoKSkudXRmOCgpLmRhdGEoKSk7Ci0gICAgICAg
ICAgICBJZGVudGlmaWVyIHN0YWNrSUQgPSBJZGVudGlmaWVyOjpmcm9tU3RyaW5nKGdsb2JhbE9i
amVjdC0+Z2xvYmFsRXhlYygpLCAic3RhY2siKTsKLSAgICAgICAgICAgIEpTVmFsdWUgc3RhY2tW
YWx1ZSA9IGV2YWx1YXRpb25FeGNlcHRpb24tPnZhbHVlKCkuZ2V0KGdsb2JhbE9iamVjdC0+Z2xv
YmFsRXhlYygpLCBzdGFja0lEKTsKLSAgICAgICAgICAgIGlmICghc3RhY2tWYWx1ZS5pc1VuZGVm
aW5lZE9yTnVsbCgpKQotICAgICAgICAgICAgICAgIHByaW50ZigiJXNcbiIsIHN0YWNrVmFsdWUu
dG9TdHJpbmcoZ2xvYmFsT2JqZWN0LT5nbG9iYWxFeGVjKCkpLT52YWx1ZShnbG9iYWxPYmplY3Qt
Pmdsb2JhbEV4ZWMoKSkudXRmOCgpLmRhdGEoKSk7CisgICAgICAgIGlmIChtb2R1bGUpIHsKKyNp
ZiBFTkFCTEUoRVM2X01PRFVMRVMpCisgICAgICAgICAgICBOYWtlZFB0cjxFeGNlcHRpb24+IGV2
YWx1YXRpb25FeGNlcHRpb247CisgICAgICAgICAgICBldmFsdWF0ZU1vZHVsZShnbG9iYWxPYmpl
Y3QtPmdsb2JhbEV4ZWMoKSwganNjU291cmNlKHNjcmlwdCwgZmlsZU5hbWUpLCBldmFsdWF0aW9u
RXhjZXB0aW9uKTsKKyAgICAgICAgICAgIGR1bXBFeGNlcHRpb24oZ2xvYmFsT2JqZWN0LCBldmFs
dWF0aW9uRXhjZXB0aW9uKTsKKyAgICAgICAgICAgIGdsb2JhbE9iamVjdC0+Z2xvYmFsRXhlYygp
LT5jbGVhckV4Y2VwdGlvbigpOworICAgICAgICAgICAgZ2xvYmFsT2JqZWN0LT52bSgpLmRyYWlu
TWljcm90YXNrcygpOworI2VuZGlmCisgICAgICAgIH0gZWxzZSB7CisgICAgICAgICAgICBOYWtl
ZFB0cjxFeGNlcHRpb24+IGV2YWx1YXRpb25FeGNlcHRpb247CisgICAgICAgICAgICBKU1ZhbHVl
IHJldHVyblZhbHVlID0gZXZhbHVhdGUoZ2xvYmFsT2JqZWN0LT5nbG9iYWxFeGVjKCksIGpzY1Nv
dXJjZShzY3JpcHQsIGZpbGVOYW1lKSwgSlNWYWx1ZSgpLCBldmFsdWF0aW9uRXhjZXB0aW9uKTsK
KyAgICAgICAgICAgIHN1Y2Nlc3MgPSBzdWNjZXNzICYmICFldmFsdWF0aW9uRXhjZXB0aW9uOwor
ICAgICAgICAgICAgaWYgKGR1bXAgJiYgIWV2YWx1YXRpb25FeGNlcHRpb24pCisgICAgICAgICAg
ICAgICAgcHJpbnRmKCJFbmQ6ICVzXG4iLCByZXR1cm5WYWx1ZS50b1N0cmluZyhnbG9iYWxPYmpl
Y3QtPmdsb2JhbEV4ZWMoKSktPnZhbHVlKGdsb2JhbE9iamVjdC0+Z2xvYmFsRXhlYygpKS51dGY4
KCkuZGF0YSgpKTsKKyAgICAgICAgICAgIGR1bXBFeGNlcHRpb24oZ2xvYmFsT2JqZWN0LCBldmFs
dWF0aW9uRXhjZXB0aW9uKTsKICAgICAgICAgfQogCiAgICAgICAgIHZtLnN0b3BTYW1wbGluZygp
OwpAQCAtMTQ1MSw2ICsxNDg1LDkgQEAgc3RhdGljIE5PX1JFVFVSTiB2b2lkIHByaW50VXNhZ2VT
dGF0ZW1lbnQoYm9vbCBoZWxwID0gZmFsc2UpCiAgICAgZnByaW50ZihzdGRlcnIsICIgIC1mICAg
ICAgICAgU3BlY2lmaWVzIGEgc291cmNlIGZpbGUgKGRlcHJlY2F0ZWQpXG4iKTsKICAgICBmcHJp
bnRmKHN0ZGVyciwgIiAgLWh8LS1oZWxwICBQcmludHMgdGhpcyBoZWxwIG1lc3NhZ2VcbiIpOwog
ICAgIGZwcmludGYoc3RkZXJyLCAiICAtaSAgICAgICAgIEVuYWJsZXMgaW50ZXJhY3RpdmUgbW9k
ZSAoZGVmYXVsdCBpZiBubyBmaWxlcyBhcmUgc3BlY2lmaWVkKVxuIik7CisjaWYgRU5BQkxFKEVT
Nl9NT0RVTEVTKQorICAgIGZwcmludGYoc3RkZXJyLCAiICAtbSAgICAgICAgIEV4ZWN1dGUgYXMg
YSBtb2R1bGVcbiIpOworI2VuZGlmCiAjaWYgSEFWRShTSUdOQUxfSCkKICAgICBmcHJpbnRmKHN0
ZGVyciwgIiAgLXMgICAgICAgICBJbnN0YWxscyBzaWduYWwgaGFuZGxlcnMgdGhhdCBleGl0IG9u
IGEgY3Jhc2ggKFVuaXggcGxhdGZvcm1zIG9ubHkpXG4iKTsKICNlbmRpZgpAQCAtMTUwMiw2ICsx
NTM5LDEyIEBAIHZvaWQgQ29tbWFuZExpbmU6OnBhcnNlQXJndW1lbnRzKGludCBhcmdjLCBjaGFy
KiogYXJndikKICAgICAgICAgICAgIG1fcHJvZmlsZXJPdXRwdXQgPSBhcmd2W2ldOwogICAgICAg
ICAgICAgY29udGludWU7CiAgICAgICAgIH0KKyNpZiBFTkFCTEUoRVM2X01PRFVMRVMpCisgICAg
ICAgIGlmICghc3RyY21wKGFyZywgIi1tIikpIHsKKyAgICAgICAgICAgIG1fbW9kdWxlID0gdHJ1
ZTsKKyAgICAgICAgICAgIGNvbnRpbnVlOworICAgICAgICB9CisjZW5kaWYKICAgICAgICAgaWYg
KCFzdHJjbXAoYXJnLCAiLXMiKSkgewogI2lmIEhBVkUoU0lHTkFMX0gpCiAgICAgICAgICAgICBz
aWduYWwoU0lHSUxMLCBfZXhpdCk7CkBAIC0xNTc3LDcgKzE2MjAsNyBAQCBpbnQganNjbWFpbihp
bnQgYXJnYywgY2hhcioqIGFyZ3YpCiAgICAgICAgICAgICB2bS0+bV9wZXJCeXRlY29kZVByb2Zp
bGVyID0gc3RkOjptYWtlX3VuaXF1ZTxQcm9maWxlcjo6RGF0YWJhc2U+KCp2bSk7CiAgICAgCiAg
ICAgICAgIEdsb2JhbE9iamVjdCogZ2xvYmFsT2JqZWN0ID0gR2xvYmFsT2JqZWN0OjpjcmVhdGUo
KnZtLCBHbG9iYWxPYmplY3Q6OmNyZWF0ZVN0cnVjdHVyZSgqdm0sIGpzTnVsbCgpKSwgb3B0aW9u
cy5tX2FyZ3VtZW50cyk7Ci0gICAgICAgIGJvb2wgc3VjY2VzcyA9IHJ1bldpdGhTY3JpcHRzKGds
b2JhbE9iamVjdCwgb3B0aW9ucy5tX3NjcmlwdHMsIG9wdGlvbnMubV9kdW1wKTsKKyAgICAgICAg
Ym9vbCBzdWNjZXNzID0gcnVuV2l0aFNjcmlwdHMoZ2xvYmFsT2JqZWN0LCBvcHRpb25zLm1fc2Ny
aXB0cywgb3B0aW9ucy5tX2R1bXAsIG9wdGlvbnMubV9tb2R1bGUpOwogICAgICAgICBpZiAob3B0
aW9ucy5tX2ludGVyYWN0aXZlICYmIHN1Y2Nlc3MpCiAgICAgICAgICAgICBydW5JbnRlcmFjdGl2
ZShnbG9iYWxPYmplY3QpOwogCmRpZmYgLS1naXQgYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvcGFy
c2VyL0xleGVyLmNwcCBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9wYXJzZXIvTGV4ZXIuY3BwCmlu
ZGV4IDI1OWQyNTRlMzk3NTE4YzdiY2NmZmM5ZWRlYzE1NmJhNWYwMGRiN2EuLjQ3NjA0M2ZmNmUy
NTVmOWViNjMxNDVjYjg2Y2RhOWVlZjBhNDE1NjYgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9KYXZhU2Ny
aXB0Q29yZS9wYXJzZXIvTGV4ZXIuY3BwCisrKyBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9wYXJz
ZXIvTGV4ZXIuY3BwCkBAIC05MzUsNyArOTM1LDcgQEAgdGVtcGxhdGUgPGJvb2wgc2hvdWxkQ3Jl
YXRlSWRlbnRpZmllcj4gQUxXQVlTX0lOTElORSBKU1Rva2VuVHlwZSBMZXhlcjxMQ2hhcj46OnAK
ICAgICAgICAgICAgICAgICByZXR1cm4gRVJST1JUT0s7CiAgICAgICAgICAgICB9CiAgICAgICAg
ICAgICBpZiAoaXNQcml2YXRlTmFtZSkKLSAgICAgICAgICAgICAgICBpZGVudCA9IG1fdm0tPnBy
b3BlcnR5TmFtZXMtPmdldFByaXZhdGVOYW1lKCppZGVudCk7CisgICAgICAgICAgICAgICAgaWRl
bnQgPSBtX3ZtLT5wcm9wZXJ0eU5hbWVzLT5sb29rVXBQcml2YXRlTmFtZSgqaWRlbnQpOwogICAg
ICAgICAgICAgZWxzZSBpZiAoKmlkZW50ID09IG1fdm0tPnByb3BlcnR5TmFtZXMtPnVuZGVmaW5l
ZEtleXdvcmQpCiAgICAgICAgICAgICAgICAgdG9rZW5EYXRhLT5pZGVudCA9ICZtX3ZtLT5wcm9w
ZXJ0eU5hbWVzLT51bmRlZmluZWRQcml2YXRlTmFtZTsKICAgICAgICAgICAgIGlmICghaWRlbnQp
CkBAIC0xMDEyLDcgKzEwMTIsNyBAQCB0ZW1wbGF0ZSA8Ym9vbCBzaG91bGRDcmVhdGVJZGVudGlm
aWVyPiBBTFdBWVNfSU5MSU5FIEpTVG9rZW5UeXBlIExleGVyPFVDaGFyPjo6cAogICAgICAgICAg
ICAgICAgIHJldHVybiBFUlJPUlRPSzsKICAgICAgICAgICAgIH0KICAgICAgICAgICAgIGlmIChp
c1ByaXZhdGVOYW1lKQotICAgICAgICAgICAgICAgIGlkZW50ID0gbV92bS0+cHJvcGVydHlOYW1l
cy0+Z2V0UHJpdmF0ZU5hbWUoKmlkZW50KTsKKyAgICAgICAgICAgICAgICBpZGVudCA9IG1fdm0t
PnByb3BlcnR5TmFtZXMtPmxvb2tVcFByaXZhdGVOYW1lKCppZGVudCk7CiAgICAgICAgICAgICBl
bHNlIGlmICgqaWRlbnQgPT0gbV92bS0+cHJvcGVydHlOYW1lcy0+dW5kZWZpbmVkS2V5d29yZCkK
ICAgICAgICAgICAgICAgICB0b2tlbkRhdGEtPmlkZW50ID0gJm1fdm0tPnByb3BlcnR5TmFtZXMt
PnVuZGVmaW5lZFByaXZhdGVOYW1lOwogICAgICAgICAgICAgaWYgKCFpZGVudCkKZGlmZiAtLWdp
dCBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9wYXJzZXIvTW9kdWxlQW5hbHl6ZXIuY3BwIGIvU291
cmNlL0phdmFTY3JpcHRDb3JlL3BhcnNlci9Nb2R1bGVBbmFseXplci5jcHAKaW5kZXggYjJkZTk2
MGIzOTMyNTg0MWNkOWY4NWM2NzE2MjJjM2RmN2JhOWQ3Ny4uMjdjYWZmMjk1MDIyNjAxM2QyNzJk
Y2YzNzA5Yzc4ZTdlZGU0MDMzYSAxMDA2NDQKLS0tIGEvU291cmNlL0phdmFTY3JpcHRDb3JlL3Bh
cnNlci9Nb2R1bGVBbmFseXplci5jcHAKKysrIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL3BhcnNl
ci9Nb2R1bGVBbmFseXplci5jcHAKQEAgLTI3LDE0ICsyNywxNyBAQAogI2luY2x1ZGUgIk1vZHVs
ZUFuYWx5emVyLmgiCiAKICNpbmNsdWRlICJJZGVudGlmaWVySW5saW5lcy5oIgotI2luY2x1ZGUg
Ik1vZHVsZVJlY29yZC5oIgorI2luY2x1ZGUgIkpTQ2VsbElubGluZXMuaCIKKyNpbmNsdWRlICJK
U0dsb2JhbE9iamVjdC5oIgorI2luY2x1ZGUgIkpTTW9kdWxlUmVjb3JkLmgiCisjaW5jbHVkZSAi
U3Ryb25nSW5saW5lcy5oIgogCiBuYW1lc3BhY2UgSlNDIHsKIAogCi1Nb2R1bGVBbmFseXplcjo6
TW9kdWxlQW5hbHl6ZXIoVk0mIHZtLCBjb25zdCBWYXJpYWJsZUVudmlyb25tZW50JiBkZWNsYXJl
ZFZhcmlhYmxlcywgY29uc3QgVmFyaWFibGVFbnZpcm9ubWVudCYgbGV4aWNhbFZhcmlhYmxlcykK
LSAgICA6IG1fdm0oJnZtKQotICAgICwgbV9tb2R1bGVSZWNvcmQoTW9kdWxlUmVjb3JkOjpjcmVh
dGUoKSkKK01vZHVsZUFuYWx5emVyOjpNb2R1bGVBbmFseXplcihFeGVjU3RhdGUqIGV4ZWMsIGNv
bnN0IFZhcmlhYmxlRW52aXJvbm1lbnQmIGRlY2xhcmVkVmFyaWFibGVzLCBjb25zdCBWYXJpYWJs
ZUVudmlyb25tZW50JiBsZXhpY2FsVmFyaWFibGVzKQorICAgIDogbV92bSgmZXhlYy0+dm0oKSkK
KyAgICAsIG1fbW9kdWxlUmVjb3JkKGV4ZWMtPnZtKCksIEpTTW9kdWxlUmVjb3JkOjpjcmVhdGUo
ZXhlYy0+dm0oKSwgZXhlYy0+bGV4aWNhbEdsb2JhbE9iamVjdCgpLT5tb2R1bGVSZWNvcmRTdHJ1
Y3R1cmUoKSkpCiAgICAgLCBtX2RlY2xhcmVkVmFyaWFibGVzKGRlY2xhcmVkVmFyaWFibGVzKQog
ICAgICwgbV9sZXhpY2FsVmFyaWFibGVzKGxleGljYWxWYXJpYWJsZXMpCiB7CkBAIC03NiwyOCAr
NzksMjggQEAgdm9pZCBNb2R1bGVBbmFseXplcjo6ZXhwb3J0VmFyaWFibGUoY29uc3QgUmVmUHRy
PFVuaXF1ZWRTdHJpbmdJbXBsPiYgbG9jYWxOYW1lLAogCiAgICAgLy8gRXhwb3J0ZWQgbW9kdWxl
IGxvY2FsIHZhcmlhYmxlLgogICAgIGlmICghdmFyaWFibGUuaXNJbXBvcnRlZCgpKSB7Ci0gICAg
ICAgIG1vZHVsZVJlY29yZCgpLmFkZEV4cG9ydEVudHJ5KE1vZHVsZVJlY29yZDo6RXhwb3J0RW50
cnk6OmNyZWF0ZUxvY2FsKGV4cG9ydE5hbWUsIElkZW50aWZpZXI6OmZyb21VaWQobV92bSwgbG9j
YWxOYW1lLmdldCgpKSwgdmFyaWFibGUpKTsKKyAgICAgICAgbW9kdWxlUmVjb3JkKCktPmFkZEV4
cG9ydEVudHJ5KEpTTW9kdWxlUmVjb3JkOjpFeHBvcnRFbnRyeTo6Y3JlYXRlTG9jYWwoZXhwb3J0
TmFtZSwgSWRlbnRpZmllcjo6ZnJvbVVpZChtX3ZtLCBsb2NhbE5hbWUuZ2V0KCkpLCB2YXJpYWJs
ZSkpOwogICAgICAgICByZXR1cm47CiAgICAgfQogCi0gICAgY29uc3QgYXV0byYgaW1wb3J0RW50
cnkgPSBtb2R1bGVSZWNvcmQoKS5sb29rVXBJbXBvcnRFbnRyeShsb2NhbE5hbWUpOworICAgIGNv
bnN0IGF1dG8mIGltcG9ydEVudHJ5ID0gbW9kdWxlUmVjb3JkKCktPmxvb2tVcEltcG9ydEVudHJ5
KGxvY2FsTmFtZSk7CiAgICAgaWYgKGltcG9ydEVudHJ5LmlzTmFtZXNwYWNlKHZtKCkpKSB7CiAg
ICAgICAgIC8vIEV4cG9ydGVkIG5hbWVzcGFjZSBiaW5kaW5nLgogICAgICAgICAvLyBpbXBvcnQg
KiBhcyBuYW1lc3BhY2UgZnJvbSAibW9kIgogICAgICAgICAvLyBleHBvcnQgeyBuYW1lc3BhY2Ug
fQotICAgICAgICBtb2R1bGVSZWNvcmQoKS5hZGRFeHBvcnRFbnRyeShNb2R1bGVSZWNvcmQ6OkV4
cG9ydEVudHJ5OjpjcmVhdGVOYW1lc3BhY2UoZXhwb3J0TmFtZSwgaW1wb3J0RW50cnkubW9kdWxl
UmVxdWVzdCkpOworICAgICAgICBtb2R1bGVSZWNvcmQoKS0+YWRkRXhwb3J0RW50cnkoSlNNb2R1
bGVSZWNvcmQ6OkV4cG9ydEVudHJ5OjpjcmVhdGVOYW1lc3BhY2UoZXhwb3J0TmFtZSwgaW1wb3J0
RW50cnkubW9kdWxlUmVxdWVzdCkpOwogICAgICAgICByZXR1cm47CiAgICAgfQogCiAgICAgLy8g
SW5kaXJlY3RseSBleHBvcnRlZCBiaW5kaW5nLgogICAgIC8vIGltcG9ydCBhIGZyb20gIm1vZCIK
ICAgICAvLyBleHBvcnQgeyBhIH0KLSAgICBtb2R1bGVSZWNvcmQoKS5hZGRFeHBvcnRFbnRyeShN
b2R1bGVSZWNvcmQ6OkV4cG9ydEVudHJ5OjpjcmVhdGVJbmRpcmVjdChleHBvcnROYW1lLCBpbXBv
cnRFbnRyeS5pbXBvcnROYW1lLCBpbXBvcnRFbnRyeS5tb2R1bGVSZXF1ZXN0KSk7CisgICAgbW9k
dWxlUmVjb3JkKCktPmFkZEV4cG9ydEVudHJ5KEpTTW9kdWxlUmVjb3JkOjpFeHBvcnRFbnRyeTo6
Y3JlYXRlSW5kaXJlY3QoZXhwb3J0TmFtZSwgaW1wb3J0RW50cnkuaW1wb3J0TmFtZSwgaW1wb3J0
RW50cnkubW9kdWxlUmVxdWVzdCkpOwogfQogCiAKIAotUmVmPE1vZHVsZVJlY29yZD4gTW9kdWxl
QW5hbHl6ZXI6OmFuYWx5emUoTW9kdWxlUHJvZ3JhbU5vZGUmIG1vZHVsZVByb2dyYW1Ob2RlKQor
SlNNb2R1bGVSZWNvcmQqIE1vZHVsZUFuYWx5emVyOjphbmFseXplKE1vZHVsZVByb2dyYW1Ob2Rl
JiBtb2R1bGVQcm9ncmFtTm9kZSkKIHsKICAgICAvLyBUcmF2ZXJzZSB0aGUgbW9kdWxlIEFTVCBh
bmQgY29sbGVjdAogICAgIC8vICogSW1wb3J0IGVudHJpZXMKQEAgLTE0OSw3ICsxNTIsNyBAQCBS
ZWY8TW9kdWxlUmVjb3JkPiBNb2R1bGVBbmFseXplcjo6YW5hbHl6ZShNb2R1bGVQcm9ncmFtTm9k
ZSYgbW9kdWxlUHJvZ3JhbU5vZGUpCiAgICAgaWYgKE9wdGlvbnM6OmR1bXBNb2R1bGVSZWNvcmQo
KSkKICAgICAgICAgbV9tb2R1bGVSZWNvcmQtPmR1bXAoKTsKIAotICAgIHJldHVybiAqbV9tb2R1
bGVSZWNvcmQ7CisgICAgcmV0dXJuIG1fbW9kdWxlUmVjb3JkLmdldCgpOwogfQogCiB9IC8vIG5h
bWVzcGFjZSBKU0MKZGlmZiAtLWdpdCBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9wYXJzZXIvTW9k
dWxlQW5hbHl6ZXIuaCBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9wYXJzZXIvTW9kdWxlQW5hbHl6
ZXIuaAppbmRleCAwMjc2NDg0NzY1MGIzMDI0ZmQyYThjMzcyMmU3M2E3NDdiOTYzY2I2Li4zMzkw
YjdiYWYxZjY1ZTgxMGMxMTM5YjZkZWM0NjU5NDZiODlkNDkyIDEwMDY0NAotLS0gYS9Tb3VyY2Uv
SmF2YVNjcmlwdENvcmUvcGFyc2VyL01vZHVsZUFuYWx5emVyLmgKKysrIGIvU291cmNlL0phdmFT
Y3JpcHRDb3JlL3BhcnNlci9Nb2R1bGVBbmFseXplci5oCkBAIC0yNiwyMCArMjYsMjIgQEAKICNp
Zm5kZWYgTW9kdWxlQW5hbHl6ZXJfaAogI2RlZmluZSBNb2R1bGVBbmFseXplcl9oCiAKLSNpbmNs
dWRlICJNb2R1bGVSZWNvcmQuaCIKICNpbmNsdWRlICJOb2Rlcy5oIgogCiBuYW1lc3BhY2UgSlND
IHsKIAorY2xhc3MgSlNNb2R1bGVSZWNvcmQ7CisKIGNsYXNzIE1vZHVsZUFuYWx5emVyIHsKKyAg
ICBXVEZfTUFLRV9OT05DT1BZQUJMRShNb2R1bGVBbmFseXplcik7CiBwdWJsaWM6Ci0gICAgTW9k
dWxlQW5hbHl6ZXIoVk0mLCBjb25zdCBWYXJpYWJsZUVudmlyb25tZW50JiBkZWNsYXJlZFZhcmlh
YmxlcywgY29uc3QgVmFyaWFibGVFbnZpcm9ubWVudCYgbGV4aWNhbFZhcmlhYmxlcyk7CisgICAg
TW9kdWxlQW5hbHl6ZXIoRXhlY1N0YXRlKiwgY29uc3QgVmFyaWFibGVFbnZpcm9ubWVudCYgZGVj
bGFyZWRWYXJpYWJsZXMsIGNvbnN0IFZhcmlhYmxlRW52aXJvbm1lbnQmIGxleGljYWxWYXJpYWJs
ZXMpOwogCi0gICAgUmVmPE1vZHVsZVJlY29yZD4gYW5hbHl6ZShNb2R1bGVQcm9ncmFtTm9kZSYp
OworICAgIEpTTW9kdWxlUmVjb3JkKiBhbmFseXplKE1vZHVsZVByb2dyYW1Ob2RlJik7CiAKICAg
ICBWTSYgdm0oKSB7IHJldHVybiAqbV92bTsgfQogCi0gICAgTW9kdWxlUmVjb3JkJiBtb2R1bGVS
ZWNvcmQoKSB7IHJldHVybiAqbV9tb2R1bGVSZWNvcmQ7IH0KKyAgICBKU01vZHVsZVJlY29yZCog
bW9kdWxlUmVjb3JkKCkgeyByZXR1cm4gbV9tb2R1bGVSZWNvcmQuZ2V0KCk7IH0KIAogICAgIHZv
aWQgZGVjbGFyZUV4cG9ydEFsaWFzKGNvbnN0IElkZW50aWZpZXImIGxvY2FsTmFtZSwgY29uc3Qg
SWRlbnRpZmllciYgZXhwb3J0TmFtZSk7CiAKQEAgLTUxLDcgKzUzLDcgQEAgY2xhc3MgTW9kdWxl
QW5hbHl6ZXIgewogICAgIElkZW50aWZpZXIgZXhwb3J0ZWRCaW5kaW5nKGNvbnN0IFJlZlB0cjxV
bmlxdWVkU3RyaW5nSW1wbD4mIGlkZW50KTsKIAogICAgIFZNKiBtX3ZtOwotICAgIFJlZlB0cjxN
b2R1bGVSZWNvcmQ+IG1fbW9kdWxlUmVjb3JkOworICAgIFN0cm9uZzxKU01vZHVsZVJlY29yZD4g
bV9tb2R1bGVSZWNvcmQ7CiAgICAgVmFyaWFibGVFbnZpcm9ubWVudCBtX2RlY2xhcmVkVmFyaWFi
bGVzOwogICAgIFZhcmlhYmxlRW52aXJvbm1lbnQgbV9sZXhpY2FsVmFyaWFibGVzOwogICAgIElk
ZW50aWZpZXJBbGlhc01hcCBtX2FsaWFzTWFwOwpkaWZmIC0tZ2l0IGEvU291cmNlL0phdmFTY3Jp
cHRDb3JlL3BhcnNlci9Nb2R1bGVSZWNvcmQuY3BwIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL3Bh
cnNlci9Nb2R1bGVSZWNvcmQuY3BwCmRlbGV0ZWQgZmlsZSBtb2RlIDEwMDY0NAppbmRleCBlYzk3
MzU2OGJlYzhhMGIxNTMzMzJmNDg3NWY5ZWZlMTM3ODJlYzhhLi4wMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwCi0tLSBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9wYXJzZXIv
TW9kdWxlUmVjb3JkLmNwcAorKysgL2Rldi9udWxsCkBAIC0xLDk1ICswLDAgQEAKLS8qCi0gKiBD
b3B5cmlnaHQgKEMpIDIwMTUgQXBwbGUgSW5jLiBBbGwgcmlnaHRzIHJlc2VydmVkLgotICoKLSAq
IFJlZGlzdHJpYnV0aW9uIGFuZCB1c2UgaW4gc291cmNlIGFuZCBiaW5hcnkgZm9ybXMsIHdpdGgg
b3Igd2l0aG91dAotICogbW9kaWZpY2F0aW9uLCBhcmUgcGVybWl0dGVkIHByb3ZpZGVkIHRoYXQg
dGhlIGZvbGxvd2luZyBjb25kaXRpb25zCi0gKiBhcmUgbWV0OgotICogMS4gUmVkaXN0cmlidXRp
b25zIG9mIHNvdXJjZSBjb2RlIG11c3QgcmV0YWluIHRoZSBhYm92ZSBjb3B5cmlnaHQKLSAqICAg
IG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xh
aW1lci4KLSAqIDIuIFJlZGlzdHJpYnV0aW9ucyBpbiBiaW5hcnkgZm9ybSBtdXN0IHJlcHJvZHVj
ZSB0aGUgYWJvdmUgY29weXJpZ2h0Ci0gKiAgICBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRp
b25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIgaW4gdGhlCi0gKiAgICBkb2N1bWVudGF0
aW9uIGFuZC9vciBvdGhlciBtYXRlcmlhbHMgcHJvdmlkZWQgd2l0aCB0aGUgZGlzdHJpYnV0aW9u
LgotICoKLSAqIFRISVMgU09GVFdBUkUgSVMgUFJPVklERUQgQlkgQVBQTEUgSU5DLiBgYEFTIElT
JycgQU5EIEFOWQotICogRVhQUkVTUyBPUiBJTVBMSUVEIFdBUlJBTlRJRVMsIElOQ0xVRElORywg
QlVUIE5PVCBMSU1JVEVEIFRPLCBUSEUKLSAqIElNUExJRUQgV0FSUkFOVElFUyBPRiBNRVJDSEFO
VEFCSUxJVFkgQU5EIEZJVE5FU1MgRk9SIEEgUEFSVElDVUxBUgotICogUFVSUE9TRSBBUkUgRElT
Q0xBSU1FRC4gIElOIE5PIEVWRU5UIFNIQUxMIEFQUExFIElOQy4gT1IKLSAqIENPTlRSSUJVVE9S
UyBCRSBMSUFCTEUgRk9SIEFOWSBESVJFQ1QsIElORElSRUNULCBJTkNJREVOVEFMLCBTUEVDSUFM
LAotICogRVhFTVBMQVJZLCBPUiBDT05TRVFVRU5USUFMIERBTUFHRVMgKElOQ0xVRElORywgQlVU
IE5PVCBMSU1JVEVEIFRPLAotICogUFJPQ1VSRU1FTlQgT0YgU1VCU1RJVFVURSBHT09EUyBPUiBT
RVJWSUNFUzsgTE9TUyBPRiBVU0UsIERBVEEsIE9SCi0gKiBQUk9GSVRTOyBPUiBCVVNJTkVTUyBJ
TlRFUlJVUFRJT04pIEhPV0VWRVIgQ0FVU0VEIEFORCBPTiBBTlkgVEhFT1JZCi0gKiBPRiBMSUFC
SUxJVFksIFdIRVRIRVIgSU4gQ09OVFJBQ1QsIFNUUklDVCBMSUFCSUxJVFksIE9SIFRPUlQKLSAq
IChJTkNMVURJTkcgTkVHTElHRU5DRSBPUiBPVEhFUldJU0UpIEFSSVNJTkcgSU4gQU5ZIFdBWSBP
VVQgT0YgVEhFIFVTRQotICogT0YgVEhJUyBTT0ZUV0FSRSwgRVZFTiBJRiBBRFZJU0VEIE9GIFRI
RSBQT1NTSUJJTElUWSBPRiBTVUNIIERBTUFHRS4gCi0gKi8KLQotI2luY2x1ZGUgImNvbmZpZy5o
IgotI2luY2x1ZGUgIk1vZHVsZVJlY29yZC5oIgotCi0jaW5jbHVkZSAiSWRlbnRpZmllcklubGlu
ZXMuaCIKLQotbmFtZXNwYWNlIEpTQyB7Ci0KLQotYXV0byBNb2R1bGVSZWNvcmQ6OkV4cG9ydEVu
dHJ5OjpjcmVhdGVMb2NhbChjb25zdCBJZGVudGlmaWVyJiBleHBvcnROYW1lLCBjb25zdCBJZGVu
dGlmaWVyJiBsb2NhbE5hbWUsIGNvbnN0IFZhcmlhYmxlRW52aXJvbm1lbnRFbnRyeSYgdmFyaWFi
bGUpIC0+IEV4cG9ydEVudHJ5Ci17Ci0gICAgcmV0dXJuIEV4cG9ydEVudHJ5IHsgVHlwZTo6TG9j
YWwsIGV4cG9ydE5hbWUsIElkZW50aWZpZXIoKSwgSWRlbnRpZmllcigpLCBsb2NhbE5hbWUsIHZh
cmlhYmxlIH07Ci19Ci0KLWF1dG8gTW9kdWxlUmVjb3JkOjpFeHBvcnRFbnRyeTo6Y3JlYXRlTmFt
ZXNwYWNlKGNvbnN0IElkZW50aWZpZXImIGV4cG9ydE5hbWUsIGNvbnN0IElkZW50aWZpZXImIG1v
ZHVsZU5hbWUpIC0+IEV4cG9ydEVudHJ5Ci17Ci0gICAgcmV0dXJuIEV4cG9ydEVudHJ5IHsgVHlw
ZTo6TmFtZXNwYWNlLCBleHBvcnROYW1lLCBtb2R1bGVOYW1lLCBJZGVudGlmaWVyKCksIElkZW50
aWZpZXIoKSwgVmFyaWFibGVFbnZpcm9ubWVudEVudHJ5KCkgfTsKLX0KLQotYXV0byBNb2R1bGVS
ZWNvcmQ6OkV4cG9ydEVudHJ5OjpjcmVhdGVJbmRpcmVjdChjb25zdCBJZGVudGlmaWVyJiBleHBv
cnROYW1lLCBjb25zdCBJZGVudGlmaWVyJiBpbXBvcnROYW1lLCBjb25zdCBJZGVudGlmaWVyJiBt
b2R1bGVOYW1lKSAtPiBFeHBvcnRFbnRyeQotewotICAgIHJldHVybiBFeHBvcnRFbnRyeSB7IFR5
cGU6OkluZGlyZWN0LCBleHBvcnROYW1lLCBtb2R1bGVOYW1lLCBpbXBvcnROYW1lLCBJZGVudGlm
aWVyKCksIFZhcmlhYmxlRW52aXJvbm1lbnRFbnRyeSgpIH07Ci19Ci0KLXN0YXRpYyBTdHJpbmcg
cHJpbnRhYmxlTmFtZShjb25zdCBSZWZQdHI8VW5pcXVlZFN0cmluZ0ltcGw+JiB1aWQpCi17Ci0g
ICAgaWYgKHVpZC0+aXNTeW1ib2woKSkKLSAgICAgICAgcmV0dXJuIHVpZC5nZXQoKTsKLSAgICBy
ZXR1cm4gV1RGOjptYWtlU3RyaW5nKCInIiwgU3RyaW5nKHVpZC5nZXQoKSksICInIik7Ci19Ci0K
LXN0YXRpYyBTdHJpbmcgcHJpbnRhYmxlTmFtZShjb25zdCBJZGVudGlmaWVyJiBpZGVudCkKLXsK
LSAgICByZXR1cm4gcHJpbnRhYmxlTmFtZShpZGVudC5pbXBsKCkpOwotfQotCi0KLXZvaWQgTW9k
dWxlUmVjb3JkOjpkdW1wKCkKLXsKLSAgICBkYXRhTG9nKCJcbkFuYWx5emluZyBNb2R1bGVSZWNv
cmRcbiIpOwotCi0gICAgZGF0YUxvZygiICAgIERlcGVuZGVuY2llczogIiwgbV9yZXF1ZXN0ZWRN
b2R1bGVzLnNpemUoKSwgIiBtb2R1bGVzXG4iKTsKLSAgICBmb3IgKGNvbnN0IGF1dG8mIG1vZHVs
ZU5hbWUgOiBtX3JlcXVlc3RlZE1vZHVsZXMpCi0gICAgICAgIGRhdGFMb2coIiAgICAgIG1vZHVs
ZSgiLCBwcmludGFibGVOYW1lKG1vZHVsZU5hbWUpLCAiKVxuIik7Ci0KLSAgICBkYXRhTG9nKCIg
ICAgSW1wb3J0OiAiLCBtX2ltcG9ydEVudHJpZXMuc2l6ZSgpLCAiIGVudHJpZXNcbiIpOwotICAg
IGZvciAoY29uc3QgYXV0byYgcGFpciA6IG1faW1wb3J0RW50cmllcykKLSAgICAgICAgZGF0YUxv
ZygiICAgICAgaW1wb3J0KCIsIHByaW50YWJsZU5hbWUocGFpci52YWx1ZS5pbXBvcnROYW1lKSwg
IiksIGxvY2FsKCIsIHByaW50YWJsZU5hbWUocGFpci52YWx1ZS5sb2NhbE5hbWUpLCAiKSwgbW9k
dWxlKCIsIHByaW50YWJsZU5hbWUocGFpci52YWx1ZS5tb2R1bGVSZXF1ZXN0KSwgIilcbiIpOwot
Ci0gICAgZGF0YUxvZygiICAgIEV4cG9ydDogIiwgbV9leHBvcnRFbnRyaWVzLnNpemUoKSwgIiBl
bnRyaWVzXG4iKTsKLSAgICBmb3IgKGNvbnN0IGF1dG8mIHBhaXIgOiBtX2V4cG9ydEVudHJpZXMp
IHsKLSAgICAgICAgY29uc3QgRXhwb3J0RW50cnkmIGVudHJ5ID0gcGFpci52YWx1ZTsKLSAgICAg
ICAgc3dpdGNoIChlbnRyeS50eXBlKSB7Ci0gICAgICAgIGNhc2UgRXhwb3J0RW50cnk6OlR5cGU6
OkxvY2FsOgotICAgICAgICAgICAgZGF0YUxvZygiICAgICAgW0xvY2FsXSAiLCAiZXhwb3J0KCIs
IHByaW50YWJsZU5hbWUoZW50cnkuZXhwb3J0TmFtZSksICIpLCBsb2NhbCgiLCBwcmludGFibGVO
YW1lKGVudHJ5LmxvY2FsTmFtZSksICIpXG4iKTsKLSAgICAgICAgICAgIGJyZWFrOwotCi0gICAg
ICAgIGNhc2UgRXhwb3J0RW50cnk6OlR5cGU6Ok5hbWVzcGFjZToKLSAgICAgICAgICAgIGRhdGFM
b2coIiAgICAgIFtOYW1lc3BhY2VdICIsICJleHBvcnQoIiwgcHJpbnRhYmxlTmFtZShlbnRyeS5l
eHBvcnROYW1lKSwgIiksIG1vZHVsZSgiLCBwcmludGFibGVOYW1lKGVudHJ5Lm1vZHVsZU5hbWUp
LCAiKVxuIik7Ci0gICAgICAgICAgICBicmVhazsKLQotICAgICAgICBjYXNlIEV4cG9ydEVudHJ5
OjpUeXBlOjpJbmRpcmVjdDoKLSAgICAgICAgICAgIGRhdGFMb2coIiAgICAgIFtJbmRpcmVjdF0g
IiwgImV4cG9ydCgiLCBwcmludGFibGVOYW1lKGVudHJ5LmV4cG9ydE5hbWUpLCAiKSwgaW1wb3J0
KCIsIHByaW50YWJsZU5hbWUoZW50cnkuaW1wb3J0TmFtZSksICIpLCBtb2R1bGUoIiwgcHJpbnRh
YmxlTmFtZShlbnRyeS5tb2R1bGVOYW1lKSwgIilcbiIpOwotICAgICAgICAgICAgYnJlYWs7Ci0g
ICAgICAgIH0KLSAgICB9Ci0gICAgZm9yIChjb25zdCBhdXRvJiBtb2R1bGVOYW1lIDogbV9zdGFy
RXhwb3J0RW50cmllcykKLSAgICAgICAgZGF0YUxvZygiICAgICAgW1N0YXJdIG1vZHVsZSgiLCBw
cmludGFibGVOYW1lKG1vZHVsZU5hbWUuZ2V0KCkpLCAiKVxuIik7Ci19Ci0KLX0gLy8gbmFtZXNw
YWNlIEpTQwpkaWZmIC0tZ2l0IGEvU291cmNlL0phdmFTY3JpcHRDb3JlL3BhcnNlci9Nb2R1bGVS
ZWNvcmQuaCBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9wYXJzZXIvTW9kdWxlUmVjb3JkLmgKZGVs
ZXRlZCBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IGVmMDgxYzAzYjBhNWJkZTZmMTU1NjI5ZGYzZjUw
NmNhZjNjYjE3MTQuLjAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAKLS0t
IGEvU291cmNlL0phdmFTY3JpcHRDb3JlL3BhcnNlci9Nb2R1bGVSZWNvcmQuaAorKysgL2Rldi9u
dWxsCkBAIC0xLDEyOCArMCwwIEBACi0vKgotICogQ29weXJpZ2h0IChDKSAyMDE1IEFwcGxlIElu
Yy4gQWxsIHJpZ2h0cyByZXNlcnZlZC4KLSAqCi0gKiBSZWRpc3RyaWJ1dGlvbiBhbmQgdXNlIGlu
IHNvdXJjZSBhbmQgYmluYXJ5IGZvcm1zLCB3aXRoIG9yIHdpdGhvdXQKLSAqIG1vZGlmaWNhdGlv
biwgYXJlIHBlcm1pdHRlZCBwcm92aWRlZCB0aGF0IHRoZSBmb2xsb3dpbmcgY29uZGl0aW9ucwot
ICogYXJlIG1ldDoKLSAqIDEuIFJlZGlzdHJpYnV0aW9ucyBvZiBzb3VyY2UgY29kZSBtdXN0IHJl
dGFpbiB0aGUgYWJvdmUgY29weXJpZ2h0Ci0gKiAgICBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25k
aXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIuCi0gKiAyLiBSZWRpc3RyaWJ1dGlv
bnMgaW4gYmluYXJ5IGZvcm0gbXVzdCByZXByb2R1Y2UgdGhlIGFib3ZlIGNvcHlyaWdodAotICog
ICAgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNj
bGFpbWVyIGluIHRoZQotICogICAgZG9jdW1lbnRhdGlvbiBhbmQvb3Igb3RoZXIgbWF0ZXJpYWxz
IHByb3ZpZGVkIHdpdGggdGhlIGRpc3RyaWJ1dGlvbi4KLSAqCi0gKiBUSElTIFNPRlRXQVJFIElT
IFBST1ZJREVEIEJZIEFQUExFIElOQy4gYGBBUyBJUycnIEFORCBBTlkKLSAqIEVYUFJFU1MgT1Ig
SU1QTElFRCBXQVJSQU5USUVTLCBJTkNMVURJTkcsIEJVVCBOT1QgTElNSVRFRCBUTywgVEhFCi0g
KiBJTVBMSUVEIFdBUlJBTlRJRVMgT0YgTUVSQ0hBTlRBQklMSVRZIEFORCBGSVRORVNTIEZPUiBB
IFBBUlRJQ1VMQVIKLSAqIFBVUlBPU0UgQVJFIERJU0NMQUlNRUQuICBJTiBOTyBFVkVOVCBTSEFM
TCBBUFBMRSBJTkMuIE9SCi0gKiBDT05UUklCVVRPUlMgQkUgTElBQkxFIEZPUiBBTlkgRElSRUNU
LCBJTkRJUkVDVCwgSU5DSURFTlRBTCwgU1BFQ0lBTCwKLSAqIEVYRU1QTEFSWSwgT1IgQ09OU0VR
VUVOVElBTCBEQU1BR0VTIChJTkNMVURJTkcsIEJVVCBOT1QgTElNSVRFRCBUTywKLSAqIFBST0NV
UkVNRU5UIE9GIFNVQlNUSVRVVEUgR09PRFMgT1IgU0VSVklDRVM7IExPU1MgT0YgVVNFLCBEQVRB
LCBPUgotICogUFJPRklUUzsgT1IgQlVTSU5FU1MgSU5URVJSVVBUSU9OKSBIT1dFVkVSIENBVVNF
RCBBTkQgT04gQU5ZIFRIRU9SWQotICogT0YgTElBQklMSVRZLCBXSEVUSEVSIElOIENPTlRSQUNU
LCBTVFJJQ1QgTElBQklMSVRZLCBPUiBUT1JUCi0gKiAoSU5DTFVESU5HIE5FR0xJR0VOQ0UgT1Ig
T1RIRVJXSVNFKSBBUklTSU5HIElOIEFOWSBXQVkgT1VUIE9GIFRIRSBVU0UKLSAqIE9GIFRISVMg
U09GVFdBUkUsIEVWRU4gSUYgQURWSVNFRCBPRiBUSEUgUE9TU0lCSUxJVFkgT0YgU1VDSCBEQU1B
R0UuCi0gKi8KLQotI2lmbmRlZiBNb2R1bGVSZWNvcmRfaAotI2RlZmluZSBNb2R1bGVSZWNvcmRf
aAotCi0jaW5jbHVkZSAiTm9kZXMuaCIKLSNpbmNsdWRlIDx3dGYvSGFzaE1hcC5oPgotI2luY2x1
ZGUgPHd0Zi9MaXN0SGFzaFNldC5oPgotCi1uYW1lc3BhY2UgSlNDIHsKLQotLy8gQmFzZWQgb24g
dGhlIFNvdXJjZSBUZXh0IE1vZHVsZSBSZWNvcmQKLS8vIGh0dHA6Ly93d3cuZWNtYS1pbnRlcm5h
dGlvbmFsLm9yZy9lY21hLTI2Mi82LjAvI3NlYy1zb3VyY2UtdGV4dC1tb2R1bGUtcmVjb3Jkcwot
Y2xhc3MgTW9kdWxlUmVjb3JkIDogcHVibGljIFJlZkNvdW50ZWQ8TW9kdWxlUmVjb3JkPiB7Ci1w
dWJsaWM6Ci0gICAgc3RydWN0IEV4cG9ydEVudHJ5IHsKLSAgICAgICAgZW51bSBjbGFzcyBUeXBl
IHsKLSAgICAgICAgICAgIExvY2FsLAotICAgICAgICAgICAgTmFtZXNwYWNlLAotICAgICAgICAg
ICAgSW5kaXJlY3QKLSAgICAgICAgfTsKLQotICAgICAgICBzdGF0aWMgRXhwb3J0RW50cnkgY3Jl
YXRlTG9jYWwoY29uc3QgSWRlbnRpZmllciYgZXhwb3J0TmFtZSwgY29uc3QgSWRlbnRpZmllciYg
bG9jYWxOYW1lLCBjb25zdCBWYXJpYWJsZUVudmlyb25tZW50RW50cnkmKTsKLSAgICAgICAgc3Rh
dGljIEV4cG9ydEVudHJ5IGNyZWF0ZU5hbWVzcGFjZShjb25zdCBJZGVudGlmaWVyJiBleHBvcnRO
YW1lLCBjb25zdCBJZGVudGlmaWVyJiBtb2R1bGVOYW1lKTsKLSAgICAgICAgc3RhdGljIEV4cG9y
dEVudHJ5IGNyZWF0ZUluZGlyZWN0KGNvbnN0IElkZW50aWZpZXImIGV4cG9ydE5hbWUsIGNvbnN0
IElkZW50aWZpZXImIGltcG9ydE5hbWUsIGNvbnN0IElkZW50aWZpZXImIG1vZHVsZU5hbWUpOwot
Ci0gICAgICAgIFR5cGUgdHlwZTsKLSAgICAgICAgSWRlbnRpZmllciBleHBvcnROYW1lOwotICAg
ICAgICBJZGVudGlmaWVyIG1vZHVsZU5hbWU7Ci0gICAgICAgIElkZW50aWZpZXIgaW1wb3J0TmFt
ZTsKLSAgICAgICAgSWRlbnRpZmllciBsb2NhbE5hbWU7Ci0gICAgICAgIFZhcmlhYmxlRW52aXJv
bm1lbnRFbnRyeSB2YXJpYWJsZTsKLSAgICB9OwotCi0gICAgc3RydWN0IEltcG9ydEVudHJ5IHsK
LSAgICAgICAgSWRlbnRpZmllciBtb2R1bGVSZXF1ZXN0OwotICAgICAgICBJZGVudGlmaWVyIGlt
cG9ydE5hbWU7Ci0gICAgICAgIElkZW50aWZpZXIgbG9jYWxOYW1lOwotCi0gICAgICAgIGJvb2wg
aXNOYW1lc3BhY2UoVk0mIHZtKSBjb25zdAotICAgICAgICB7Ci0gICAgICAgICAgICByZXR1cm4g
aW1wb3J0TmFtZSA9PSB2bS5wcm9wZXJ0eU5hbWVzLT50aW1lc0lkZW50aWZpZXI7Ci0gICAgICAg
IH0KLSAgICB9OwotCi0gICAgdHlwZWRlZiBXVEY6Okxpc3RIYXNoU2V0PFJlZlB0cjxVbmlxdWVk
U3RyaW5nSW1wbD4sIElkZW50aWZpZXJSZXBIYXNoPiBPcmRlcmVkSWRlbnRpZmllclNldDsKLSAg
ICB0eXBlZGVmIEhhc2hNYXA8UmVmUHRyPFVuaXF1ZWRTdHJpbmdJbXBsPiwgSW1wb3J0RW50cnks
IElkZW50aWZpZXJSZXBIYXNoLCBIYXNoVHJhaXRzPFJlZlB0cjxVbmlxdWVkU3RyaW5nSW1wbD4+
PiBJbXBvcnRNYXA7Ci0gICAgdHlwZWRlZiBIYXNoTWFwPFJlZlB0cjxVbmlxdWVkU3RyaW5nSW1w
bD4sIEV4cG9ydEVudHJ5LCBJZGVudGlmaWVyUmVwSGFzaCwgSGFzaFRyYWl0czxSZWZQdHI8VW5p
cXVlZFN0cmluZ0ltcGw+Pj4gRXhwb3J0TWFwOwotCi0gICAgc3RhdGljIFJlZjxNb2R1bGVSZWNv
cmQ+IGNyZWF0ZSgpCi0gICAgewotICAgICAgICByZXR1cm4gYWRvcHRSZWYoKm5ldyBNb2R1bGVS
ZWNvcmQpOwotICAgIH0KLQotICAgIHZvaWQgYXBwZW5kUmVxdWVzdGVkTW9kdWxlKGNvbnN0IElk
ZW50aWZpZXImKTsKLSAgICB2b2lkIGFkZFN0YXJFeHBvcnRFbnRyeShjb25zdCBJZGVudGlmaWVy
Jik7Ci0gICAgdm9pZCBhZGRJbXBvcnRFbnRyeShjb25zdCBJbXBvcnRFbnRyeSYpOwotICAgIHZv
aWQgYWRkRXhwb3J0RW50cnkoY29uc3QgRXhwb3J0RW50cnkmKTsKLQotICAgIGNvbnN0IEltcG9y
dEVudHJ5JiBsb29rVXBJbXBvcnRFbnRyeShjb25zdCBSZWZQdHI8VW5pcXVlZFN0cmluZ0ltcGw+
JiBsb2NhbE5hbWUpOwotCi0gICAgdm9pZCBkdW1wKCk7Ci0KLXByaXZhdGU6Ci0gICAgLy8gTWFw
IGxvY2FsTmFtZSAtPiBJbXBvcnRFbnRyeS4KLSAgICBJbXBvcnRNYXAgbV9pbXBvcnRFbnRyaWVz
OwotCi0gICAgLy8gTWFwIGV4cG9ydE5hbWUgLT4gRXhwb3J0RW50cnkuCi0gICAgRXhwb3J0TWFw
IG1fZXhwb3J0RW50cmllczsKLQotICAgIElkZW50aWZpZXJTZXQgbV9zdGFyRXhwb3J0RW50cmll
czsKLQotICAgIC8vIFNhdmUgdGhlIG9jY3VycmVuY2Ugb3JkZXIgc2luY2UgdGhlIG1vZHVsZSBs
b2FkZXIgbG9hZHMgYW5kIHJ1bnMgdGhlIG1vZHVsZXMgaW4gdGhpcyBvcmRlci4KLSAgICAvLyBo
dHRwOi8vd3d3LmVjbWEtaW50ZXJuYXRpb25hbC5vcmcvZWNtYS0yNjIvNi4wLyNzZWMtbW9kdWxl
ZXZhbHVhdGlvbgotICAgIE9yZGVyZWRJZGVudGlmaWVyU2V0IG1fcmVxdWVzdGVkTW9kdWxlczsK
LX07Ci0KLWlubGluZSB2b2lkIE1vZHVsZVJlY29yZDo6YXBwZW5kUmVxdWVzdGVkTW9kdWxlKGNv
bnN0IElkZW50aWZpZXImIG1vZHVsZU5hbWUpCi17Ci0gICAgbV9yZXF1ZXN0ZWRNb2R1bGVzLmFk
ZChtb2R1bGVOYW1lLmltcGwoKSk7Ci19Ci0KLWlubGluZSB2b2lkIE1vZHVsZVJlY29yZDo6YWRk
SW1wb3J0RW50cnkoY29uc3QgSW1wb3J0RW50cnkmIGVudHJ5KQotewotICAgIG1faW1wb3J0RW50
cmllcy5hZGQoZW50cnkubG9jYWxOYW1lLmltcGwoKSwgZW50cnkpOwotfQotCi1pbmxpbmUgdm9p
ZCBNb2R1bGVSZWNvcmQ6OmFkZEV4cG9ydEVudHJ5KGNvbnN0IEV4cG9ydEVudHJ5JiBlbnRyeSkK
LXsKLSAgICBtX2V4cG9ydEVudHJpZXMuYWRkKGVudHJ5LmV4cG9ydE5hbWUuaW1wbCgpLCBlbnRy
eSk7Ci19Ci0KLWlubGluZSB2b2lkIE1vZHVsZVJlY29yZDo6YWRkU3RhckV4cG9ydEVudHJ5KGNv
bnN0IElkZW50aWZpZXImIG1vZHVsZU5hbWUpCi17Ci0gICAgbV9zdGFyRXhwb3J0RW50cmllcy5h
ZGQobW9kdWxlTmFtZS5pbXBsKCkpOwotfQotCi1pbmxpbmUgYXV0byBNb2R1bGVSZWNvcmQ6Omxv
b2tVcEltcG9ydEVudHJ5KGNvbnN0IFJlZlB0cjxVbmlxdWVkU3RyaW5nSW1wbD4mIGxvY2FsTmFt
ZSkgLT4gY29uc3QgSW1wb3J0RW50cnkmCi17Ci0gICAgcmV0dXJuICgqbV9pbXBvcnRFbnRyaWVz
LmZpbmQobG9jYWxOYW1lKSkudmFsdWU7Ci19Ci0KLX0gLy8gbmFtZXNwYWNlIEpTQwotCi0jZW5k
aWYgLy8gTW9kdWxlUmVjb3JkX2gKZGlmZiAtLWdpdCBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9w
YXJzZXIvTm9kZXMuaCBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9wYXJzZXIvTm9kZXMuaAppbmRl
eCBjMDJiNDJjZWNiYWRhMTZlZTliZGUzMzRmNTJkOTBhYTg4NWNjY2ZhLi45MTkxMzRjMWI1YTcy
ZTdmYmI3NDgxNDg2YWUzZGViYzVkZDA0ZjQxIDEwMDY0NAotLS0gYS9Tb3VyY2UvSmF2YVNjcmlw
dENvcmUvcGFyc2VyL05vZGVzLmgKKysrIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL3BhcnNlci9O
b2Rlcy5oCkBAIC03OSw4ICs3OSw2IEBAIG5hbWVzcGFjZSBKU0MgewogICAgIH07CiAgICAgaW5s
aW5lIEZhbGxUaHJvdWdoTW9kZSBpbnZlcnQoRmFsbFRocm91Z2hNb2RlIGZhbGxUaHJvdWdoTW9k
ZSkgeyByZXR1cm4gc3RhdGljX2Nhc3Q8RmFsbFRocm91Z2hNb2RlPighZmFsbFRocm91Z2hNb2Rl
KTsgfQogCi0gICAgdHlwZWRlZiBIYXNoU2V0PFJlZlB0cjxVbmlxdWVkU3RyaW5nSW1wbD4sIElk
ZW50aWZpZXJSZXBIYXNoPiBJZGVudGlmaWVyU2V0OwotCiAgICAgbmFtZXNwYWNlIERlY2xhcmF0
aW9uU3RhY2tzIHsKICAgICAgICAgdHlwZWRlZiBWZWN0b3I8RnVuY3Rpb25NZXRhZGF0YU5vZGUq
PiBGdW5jdGlvblN0YWNrOwogICAgIH0KZGlmZiAtLWdpdCBhL1NvdXJjZS9KYXZhU2NyaXB0Q29y
ZS9wYXJzZXIvTm9kZXNBbmFseXplTW9kdWxlLmNwcCBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9w
YXJzZXIvTm9kZXNBbmFseXplTW9kdWxlLmNwcAppbmRleCA2MzNkZWFlY2U2YWY2NjY1OWQwZTc2
YWMxYWE0MTYxNTlhYjc1YTM1Li4wN2Q5MzBmZmM2MDkxODkxZjlmYjc0ZTZhZmE3YjhlZTZiNzli
MDJmIDEwMDY0NAotLS0gYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvcGFyc2VyL05vZGVzQW5hbHl6
ZU1vZHVsZS5jcHAKKysrIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL3BhcnNlci9Ob2Rlc0FuYWx5
emVNb2R1bGUuY3BwCkBAIC0yNyw4ICsyNyw4IEBACiAjaW5jbHVkZSAiTm9kZXMuaCIKICNpbmNs
dWRlICJOb2RlQ29uc3RydWN0b3JzLmgiCiAKKyNpbmNsdWRlICJKU01vZHVsZVJlY29yZC5oIgog
I2luY2x1ZGUgIk1vZHVsZUFuYWx5emVyLmgiCi0jaW5jbHVkZSAiTW9kdWxlUmVjb3JkLmgiCiAK
IG5hbWVzcGFjZSBKU0MgewogCkBAIC00OCw5ICs0OCw5IEBAIHZvaWQgU291cmNlRWxlbWVudHM6
OmFuYWx5emVNb2R1bGUoTW9kdWxlQW5hbHl6ZXImIGFuYWx5emVyKQogCiB2b2lkIEltcG9ydERl
Y2xhcmF0aW9uTm9kZTo6YW5hbHl6ZU1vZHVsZShNb2R1bGVBbmFseXplciYgYW5hbHl6ZXIpCiB7
Ci0gICAgYW5hbHl6ZXIubW9kdWxlUmVjb3JkKCkuYXBwZW5kUmVxdWVzdGVkTW9kdWxlKG1fbW9k
dWxlTmFtZS0+bW9kdWxlTmFtZSgpKTsKKyAgICBhbmFseXplci5tb2R1bGVSZWNvcmQoKS0+YXBw
ZW5kUmVxdWVzdGVkTW9kdWxlKG1fbW9kdWxlTmFtZS0+bW9kdWxlTmFtZSgpKTsKICAgICBmb3Ig
KGF1dG8qIHNwZWNpZmllciA6IG1fc3BlY2lmaWVyTGlzdC0+c3BlY2lmaWVycygpKSB7Ci0gICAg
ICAgIGFuYWx5emVyLm1vZHVsZVJlY29yZCgpLmFkZEltcG9ydEVudHJ5KE1vZHVsZVJlY29yZDo6
SW1wb3J0RW50cnkgeworICAgICAgICBhbmFseXplci5tb2R1bGVSZWNvcmQoKS0+YWRkSW1wb3J0
RW50cnkoSlNNb2R1bGVSZWNvcmQ6OkltcG9ydEVudHJ5IHsKICAgICAgICAgICAgIG1fbW9kdWxl
TmFtZS0+bW9kdWxlTmFtZSgpLAogICAgICAgICAgICAgc3BlY2lmaWVyLT5pbXBvcnRlZE5hbWUo
KSwKICAgICAgICAgICAgIHNwZWNpZmllci0+bG9jYWxOYW1lKCkKQEAgLTYwLDggKzYwLDggQEAg
dm9pZCBJbXBvcnREZWNsYXJhdGlvbk5vZGU6OmFuYWx5emVNb2R1bGUoTW9kdWxlQW5hbHl6ZXIm
IGFuYWx5emVyKQogCiB2b2lkIEV4cG9ydEFsbERlY2xhcmF0aW9uTm9kZTo6YW5hbHl6ZU1vZHVs
ZShNb2R1bGVBbmFseXplciYgYW5hbHl6ZXIpCiB7Ci0gICAgYW5hbHl6ZXIubW9kdWxlUmVjb3Jk
KCkuYXBwZW5kUmVxdWVzdGVkTW9kdWxlKG1fbW9kdWxlTmFtZS0+bW9kdWxlTmFtZSgpKTsKLSAg
ICBhbmFseXplci5tb2R1bGVSZWNvcmQoKS5hZGRTdGFyRXhwb3J0RW50cnkobV9tb2R1bGVOYW1l
LT5tb2R1bGVOYW1lKCkpOworICAgIGFuYWx5emVyLm1vZHVsZVJlY29yZCgpLT5hcHBlbmRSZXF1
ZXN0ZWRNb2R1bGUobV9tb2R1bGVOYW1lLT5tb2R1bGVOYW1lKCkpOworICAgIGFuYWx5emVyLm1v
ZHVsZVJlY29yZCgpLT5hZGRTdGFyRXhwb3J0RW50cnkobV9tb2R1bGVOYW1lLT5tb2R1bGVOYW1l
KCkpOwogfQogCiB2b2lkIEV4cG9ydERlZmF1bHREZWNsYXJhdGlvbk5vZGU6OmFuYWx5emVNb2R1
bGUoTW9kdWxlQW5hbHl6ZXImIGFuYWx5emVyKQpAQCAtNzYsNyArNzYsNyBAQCB2b2lkIEV4cG9y
dExvY2FsRGVjbGFyYXRpb25Ob2RlOjphbmFseXplTW9kdWxlKE1vZHVsZUFuYWx5emVyJikKIHZv
aWQgRXhwb3J0TmFtZWREZWNsYXJhdGlvbk5vZGU6OmFuYWx5emVNb2R1bGUoTW9kdWxlQW5hbHl6
ZXImIGFuYWx5emVyKQogewogICAgIGlmIChtX21vZHVsZU5hbWUpCi0gICAgICAgIGFuYWx5emVy
Lm1vZHVsZVJlY29yZCgpLmFwcGVuZFJlcXVlc3RlZE1vZHVsZShtX21vZHVsZU5hbWUtPm1vZHVs
ZU5hbWUoKSk7CisgICAgICAgIGFuYWx5emVyLm1vZHVsZVJlY29yZCgpLT5hcHBlbmRSZXF1ZXN0
ZWRNb2R1bGUobV9tb2R1bGVOYW1lLT5tb2R1bGVOYW1lKCkpOwogCiAgICAgZm9yIChhdXRvKiBz
cGVjaWZpZXIgOiBtX3NwZWNpZmllckxpc3QtPnNwZWNpZmllcnMoKSkgewogICAgICAgICBpZiAo
bV9tb2R1bGVOYW1lKSB7CkBAIC04NCw3ICs4NCw3IEBAIHZvaWQgRXhwb3J0TmFtZWREZWNsYXJh
dGlvbk5vZGU6OmFuYWx5emVNb2R1bGUoTW9kdWxlQW5hbHl6ZXImIGFuYWx5emVyKQogICAgICAg
ICAgICAgLy8KICAgICAgICAgICAgIC8vIEluIHRoaXMgY2FzZSwgbm8gbG9jYWwgdmFyaWFibGUg
bmFtZXMgYXJlIGltcG9ydGVkIGludG8gdGhlIGN1cnJlbnQgbW9kdWxlLgogICAgICAgICAgICAg
Ly8gInYiIGluZGlyZWN0bHkgcG9pbnRzIHRoZSBiaW5kaW5nIGluICJtb2QiLgotICAgICAgICAg
ICAgYW5hbHl6ZXIubW9kdWxlUmVjb3JkKCkuYWRkRXhwb3J0RW50cnkoTW9kdWxlUmVjb3JkOjpF
eHBvcnRFbnRyeTo6Y3JlYXRlSW5kaXJlY3Qoc3BlY2lmaWVyLT5leHBvcnRlZE5hbWUoKSwgc3Bl
Y2lmaWVyLT5sb2NhbE5hbWUoKSwgbV9tb2R1bGVOYW1lLT5tb2R1bGVOYW1lKCkpKTsKKyAgICAg
ICAgICAgIGFuYWx5emVyLm1vZHVsZVJlY29yZCgpLT5hZGRFeHBvcnRFbnRyeShKU01vZHVsZVJl
Y29yZDo6RXhwb3J0RW50cnk6OmNyZWF0ZUluZGlyZWN0KHNwZWNpZmllci0+ZXhwb3J0ZWROYW1l
KCksIHNwZWNpZmllci0+bG9jYWxOYW1lKCksIG1fbW9kdWxlTmFtZS0+bW9kdWxlTmFtZSgpKSk7
CiAgICAgICAgICAgICBjb250aW51ZTsKICAgICAgICAgfQogCmRpZmYgLS1naXQgYS9Tb3VyY2Uv
SmF2YVNjcmlwdENvcmUvcnVudGltZS9Db21tb25JZGVudGlmaWVycy5jcHAgYi9Tb3VyY2UvSmF2
YVNjcmlwdENvcmUvcnVudGltZS9Db21tb25JZGVudGlmaWVycy5jcHAKaW5kZXggZmM2ZTYyY2Ew
NDVlMzYyOWNmMmFkM2I2YmZjYjczZDVkZGZmMGNlMS4uYWEzOTJjZWI4ZDFhMDY1YTkyNTJhYTc3
NDRkYWI4ZDliMTYwNTRlOSAxMDA2NDQKLS0tIGEvU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRp
bWUvQ29tbW9uSWRlbnRpZmllcnMuY3BwCisrKyBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50
aW1lL0NvbW1vbklkZW50aWZpZXJzLmNwcApAQCAtNjgsMTQgKzY4LDE0IEBAIGJvb2wgQ29tbW9u
SWRlbnRpZmllcnM6OmlzUHJpdmF0ZU5hbWUoY29uc3QgSWRlbnRpZmllciYgaWRlbnQpIGNvbnN0
CiAgICAgcmV0dXJuIG1fYnVpbHRpbk5hbWVzLT5pc1ByaXZhdGVOYW1lKGlkZW50KTsKIH0KIAot
Y29uc3QgSWRlbnRpZmllciogQ29tbW9uSWRlbnRpZmllcnM6OmdldFByaXZhdGVOYW1lKGNvbnN0
IElkZW50aWZpZXImIGlkZW50KSBjb25zdAorY29uc3QgSWRlbnRpZmllciogQ29tbW9uSWRlbnRp
ZmllcnM6Omxvb2tVcFByaXZhdGVOYW1lKGNvbnN0IElkZW50aWZpZXImIGlkZW50KSBjb25zdAog
ewotICAgIHJldHVybiBtX2J1aWx0aW5OYW1lcy0+Z2V0UHJpdmF0ZU5hbWUoaWRlbnQpOworICAg
IHJldHVybiBtX2J1aWx0aW5OYW1lcy0+bG9va1VwUHJpdmF0ZU5hbWUoaWRlbnQpOwogfQogICAg
IAotSWRlbnRpZmllciBDb21tb25JZGVudGlmaWVyczo6Z2V0UHVibGljTmFtZShjb25zdCBJZGVu
dGlmaWVyJiBpZGVudCkgY29uc3QKK0lkZW50aWZpZXIgQ29tbW9uSWRlbnRpZmllcnM6Omxvb2tV
cFB1YmxpY05hbWUoY29uc3QgSWRlbnRpZmllciYgaWRlbnQpIGNvbnN0CiB7Ci0gICAgcmV0dXJu
IG1fYnVpbHRpbk5hbWVzLT5nZXRQdWJsaWNOYW1lKGlkZW50KTsKKyAgICByZXR1cm4gbV9idWls
dGluTmFtZXMtPmxvb2tVcFB1YmxpY05hbWUoaWRlbnQpOwogfQogCiAKZGlmZiAtLWdpdCBhL1Nv
dXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL0NvbW1vbklkZW50aWZpZXJzLmggYi9Tb3VyY2Uv
SmF2YVNjcmlwdENvcmUvcnVudGltZS9Db21tb25JZGVudGlmaWVycy5oCmluZGV4IDM0NDdiMzk4
ZmQwNjE4MDU5MDllNmYwMjJlM2Q2NjUyM2JhYzQ2OTguLmQ1OWQ0NDQ4ZDI5M2ExNDc1YzAxYjdj
N2U2NmFlZjc5NjJlYjEyNmQgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50
aW1lL0NvbW1vbklkZW50aWZpZXJzLmgKKysrIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRp
bWUvQ29tbW9uSWRlbnRpZmllcnMuaApAQCAtNDIsNiArNDIsNyBAQAogICAgIG1hY3JvKEluZmlu
aXR5KSBcCiAgICAgbWFjcm8oSW50bCkgXAogICAgIG1hY3JvKEpTT04pIFwKKyAgICBtYWNybyhM
b2FkZXIpIFwKICAgICBtYWNybyhNYXApXAogICAgIG1hY3JvKE1hcEl0ZXJhdG9yKVwKICAgICBt
YWNybyhNYXRoKSBcCkBAIC0yODEsNiArMjgyLDcgQEAKICAgICBtYWNybyhOdW1iZXIpIFwKICAg
ICBtYWNybyhBcnJheSkgXAogICAgIG1hY3JvKFN0cmluZykgXAorICAgIG1hY3JvKE1hcCkgXAog
ICAgIG1hY3JvKFByb21pc2UpIFwKICAgICBtYWNybyhhYnMpIFwKICAgICBtYWNybyhmbG9vcikg
XApAQCAtMzAyLDYgKzMwNCw4IEBACiAgICAgbWFjcm8oY2FwYWJpbGl0aWVzKSBcCiAgICAgbWFj
cm8oc3RhckRlZmF1bHQpIFwKICAgICBtYWNybyhJbnNwZWN0b3JJbnN0cnVtZW50YXRpb24pIFwK
KyAgICBtYWNybyhnZXQpIFwKKyAgICBtYWNybyhzZXQpIFwKIAogCiBuYW1lc3BhY2UgSlNDIHsK
QEAgLTM0OCw4ICszNTIsOCBAQCBuYW1lc3BhY2UgSlNDIHsKICAgICAgICAgYm9vbCBpc1ByaXZh
dGVOYW1lKFVuaXF1ZWRTdHJpbmdJbXBsJiB1aWQpIGNvbnN0OwogICAgICAgICBib29sIGlzUHJp
dmF0ZU5hbWUoY29uc3QgSWRlbnRpZmllciYpIGNvbnN0OwogCi0gICAgICAgIGNvbnN0IElkZW50
aWZpZXIqIGdldFByaXZhdGVOYW1lKGNvbnN0IElkZW50aWZpZXImKSBjb25zdDsKLSAgICAgICAg
SWRlbnRpZmllciBnZXRQdWJsaWNOYW1lKGNvbnN0IElkZW50aWZpZXImKSBjb25zdDsKKyAgICAg
ICAgY29uc3QgSWRlbnRpZmllciogbG9va1VwUHJpdmF0ZU5hbWUoY29uc3QgSWRlbnRpZmllciYp
IGNvbnN0OworICAgICAgICBJZGVudGlmaWVyIGxvb2tVcFB1YmxpY05hbWUoY29uc3QgSWRlbnRp
ZmllciYpIGNvbnN0OwogCiAgICAgICAgIGNvbnN0IEJ5dGVjb2RlSW50cmluc2ljUmVnaXN0cnkm
IGJ5dGVjb2RlSW50cmluc2ljUmVnaXN0cnkoKSBjb25zdCB7IHJldHVybiBtX2J5dGVjb2RlSW50
cmluc2ljUmVnaXN0cnk7IH0KIApkaWZmIC0tZ2l0IGEvU291cmNlL0phdmFTY3JpcHRDb3JlL3J1
bnRpbWUvQ29tcGxldGlvbi5jcHAgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9Db21w
bGV0aW9uLmNwcAppbmRleCBhM2RhZWU2MDM0M2FjMTRiMTRhZDAzMDRlYmRjOWEyNWFhYjE1NzIz
Li43NDE0YjE3OWRmNjZmMmNjNzBiNzk0YTJlYjA5OTU5ZTA4NTc1ZDg2IDEwMDY0NAotLS0gYS9T
b3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9Db21wbGV0aW9uLmNwcAorKysgYi9Tb3VyY2Uv
SmF2YVNjcmlwdENvcmUvcnVudGltZS9Db21wbGV0aW9uLmNwcApAQCAtMzAsOSArMzAsMTAgQEAK
ICNpbmNsdWRlICJJbnRlcnByZXRlci5oIgogI2luY2x1ZGUgIkpTR2xvYmFsT2JqZWN0LmgiCiAj
aW5jbHVkZSAiSlNMb2NrLmgiCisjaW5jbHVkZSAiSlNNb2R1bGVSZWNvcmQuaCIKICNpbmNsdWRl
ICJKU0NJbmxpbmVzLmgiCiAjaW5jbHVkZSAiTW9kdWxlQW5hbHl6ZXIuaCIKLSNpbmNsdWRlICJN
b2R1bGVSZWNvcmQuaCIKKyNpbmNsdWRlICJNb2R1bGVMb2FkZXJPYmplY3QuaCIKICNpbmNsdWRl
ICJQYXJzZXIuaCIKICNpbmNsdWRlIDx3dGYvV1RGVGhyZWFkRGF0YS5oPgogCkBAIC02Myw4ICs2
NCw5IEBAIGJvb2wgY2hlY2tTeW50YXgoVk0mIHZtLCBjb25zdCBTb3VyY2VDb2RlJiBzb3VyY2Us
IFBhcnNlckVycm9yJiBlcnJvcikKICAgICAgICAgSlNQYXJzZXJTdHJpY3RNb2RlOjpOb3RTdHJp
Y3QsIFNvdXJjZVBhcnNlTW9kZTo6UHJvZ3JhbU1vZGUsIGVycm9yKTsKIH0KIAotYm9vbCBjaGVj
a01vZHVsZVN5bnRheChWTSYgdm0sIGNvbnN0IFNvdXJjZUNvZGUmIHNvdXJjZSwgUGFyc2VyRXJy
b3ImIGVycm9yKQorYm9vbCBjaGVja01vZHVsZVN5bnRheChFeGVjU3RhdGUqIGV4ZWMsIGNvbnN0
IFNvdXJjZUNvZGUmIHNvdXJjZSwgUGFyc2VyRXJyb3ImIGVycm9yKQogeworICAgIFZNJiB2bSA9
IGV4ZWMtPnZtKCk7CiAgICAgSlNMb2NrSG9sZGVyIGxvY2sodm0pOwogICAgIFJFTEVBU0VfQVNT
RVJUKHZtLmF0b21pY1N0cmluZ1RhYmxlKCkgPT0gd3RmVGhyZWFkRGF0YSgpLmF0b21pY1N0cmlu
Z1RhYmxlKCkpOwogICAgIHN0ZDo6dW5pcXVlX3B0cjxNb2R1bGVQcm9ncmFtTm9kZT4gbW9kdWxl
UHJvZ3JhbU5vZGUgPSBwYXJzZTxNb2R1bGVQcm9ncmFtTm9kZT4oCkBAIC03Myw3ICs3NSw3IEBA
IGJvb2wgY2hlY2tNb2R1bGVTeW50YXgoVk0mIHZtLCBjb25zdCBTb3VyY2VDb2RlJiBzb3VyY2Us
IFBhcnNlckVycm9yJiBlcnJvcikKICAgICBpZiAoIW1vZHVsZVByb2dyYW1Ob2RlKQogICAgICAg
ICByZXR1cm4gZmFsc2U7CiAKLSAgICBNb2R1bGVBbmFseXplciBtb2R1bGVBbmFseXplcih2bSwg
bW9kdWxlUHJvZ3JhbU5vZGUtPnZhckRlY2xhcmF0aW9ucygpLCBtb2R1bGVQcm9ncmFtTm9kZS0+
bGV4aWNhbFZhcmlhYmxlcygpKTsKKyAgICBNb2R1bGVBbmFseXplciBtb2R1bGVBbmFseXplcihl
eGVjLCBtb2R1bGVQcm9ncmFtTm9kZS0+dmFyRGVjbGFyYXRpb25zKCksIG1vZHVsZVByb2dyYW1O
b2RlLT5sZXhpY2FsVmFyaWFibGVzKCkpOwogICAgIG1vZHVsZUFuYWx5emVyLmFuYWx5emUoKm1v
ZHVsZVByb2dyYW1Ob2RlKTsKICAgICByZXR1cm4gdHJ1ZTsKIH0KQEAgLTEwOCw0ICsxMTAsMzMg
QEAgSlNWYWx1ZSBldmFsdWF0ZShFeGVjU3RhdGUqIGV4ZWMsIGNvbnN0IFNvdXJjZUNvZGUmIHNv
dXJjZSwgSlNWYWx1ZSB0aGlzVmFsdWUsIE4KICAgICByZXR1cm4gcmVzdWx0OwogfQogCit2b2lk
IGV2YWx1YXRlTW9kdWxlKEV4ZWNTdGF0ZSogZXhlYywgY29uc3QgU291cmNlQ29kZSYgc291cmNl
LCBOYWtlZFB0cjxFeGNlcHRpb24+JiByZXR1cm5lZEV4Y2VwdGlvbikKK3sKKyAgICBKU0xvY2tI
b2xkZXIgbG9jayhleGVjKTsKKyAgICBSRUxFQVNFX0FTU0VSVChleGVjLT52bSgpLmF0b21pY1N0
cmluZ1RhYmxlKCkgPT0gd3RmVGhyZWFkRGF0YSgpLmF0b21pY1N0cmluZ1RhYmxlKCkpOworICAg
IFJFTEVBU0VfQVNTRVJUKCFleGVjLT52bSgpLmlzQ29sbGVjdG9yQnVzeSgpKTsKKworICAgIENv
ZGVQcm9maWxpbmcgcHJvZmlsZShzb3VyY2UpOworCisgICAgLy8gRklYTUU6IEV4ZWN1dGUgdGhl
IG1vZHVsZS4KKyAgICBKU0dsb2JhbE9iamVjdCogZ2xvYmFsT2JqZWN0ID0gZXhlYy0+dm1FbnRy
eUdsb2JhbE9iamVjdCgpOworCisgICAgLy8gR2VuZXJhdGUgdGhlIHVuaXF1ZSBrZXkgZm9yIHRo
ZSBzb3VyY2UtcHJvdmlkZWQgbW9kdWxlLgorICAgIFN5bWJvbCoga2V5ID0gU3ltYm9sOjpjcmVh
dGUoZXhlYy0+dm0oKSk7CisKKyAgICBNb2R1bGVMb2FkZXJPYmplY3QqIG1vZHVsZUxvYWRlciA9
IGdsb2JhbE9iamVjdC0+bW9kdWxlTG9hZGVyKCk7CisgICAgbW9kdWxlTG9hZGVyLT5wcm92aWRl
KGV4ZWMsIGtleSwgTW9kdWxlTG9hZGVyT2JqZWN0OjpTdGF0dXM6OkZldGNoLCBzb3VyY2UudG9T
dHJpbmcoKSk7CisgICAgaWYgKGV4ZWMtPmhhZEV4Y2VwdGlvbigpKSB7CisgICAgICAgIHJldHVy
bmVkRXhjZXB0aW9uID0gZXhlYy0+ZXhjZXB0aW9uKCk7CisgICAgICAgIGV4ZWMtPmNsZWFyRXhj
ZXB0aW9uKCk7CisgICAgICAgIHJldHVybjsKKyAgICB9CisgICAgbW9kdWxlTG9hZGVyLT5yZXF1
ZXN0SW5zdGFudGlhdGVBbGwoZXhlYywga2V5KTsKKyAgICBpZiAoZXhlYy0+aGFkRXhjZXB0aW9u
KCkpIHsKKyAgICAgICAgcmV0dXJuZWRFeGNlcHRpb24gPSBleGVjLT5leGNlcHRpb24oKTsKKyAg
ICAgICAgZXhlYy0+Y2xlYXJFeGNlcHRpb24oKTsKKyAgICAgICAgcmV0dXJuOworICAgIH0KK30K
KwogfSAvLyBuYW1lc3BhY2UgSlNDCmRpZmYgLS1naXQgYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUv
cnVudGltZS9Db21wbGV0aW9uLmggYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9Db21w
bGV0aW9uLmgKaW5kZXggNzAyZWQ5ZmFiMGM3OTFmYWUxNTUwNTYyN2JjNzMxYWRiYWUzYTVmZC4u
ZGUzMmQ2M2U2M2FjN2NlZDQ5ZDgxN2UyM2MwYjg3ODg2N2EwNWE2OSAxMDA2NDQKLS0tIGEvU291
cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvQ29tcGxldGlvbi5oCisrKyBiL1NvdXJjZS9KYXZh
U2NyaXB0Q29yZS9ydW50aW1lL0NvbXBsZXRpb24uaApAQCAtMzcsMTMgKzM3LDE0IEBAIGNsYXNz
IFZNOwogCiBKU19FWFBPUlRfUFJJVkFURSBib29sIGNoZWNrU3ludGF4KFZNJiwgY29uc3QgU291
cmNlQ29kZSYsIFBhcnNlckVycm9yJik7CiBKU19FWFBPUlRfUFJJVkFURSBib29sIGNoZWNrU3lu
dGF4KEV4ZWNTdGF0ZSosIGNvbnN0IFNvdXJjZUNvZGUmLCBKU1ZhbHVlKiBleGNlcHRpb24gPSAw
KTsKLUpTX0VYUE9SVF9QUklWQVRFIGJvb2wgY2hlY2tNb2R1bGVTeW50YXgoVk0mLCBjb25zdCBT
b3VyY2VDb2RlJiwgUGFyc2VyRXJyb3ImKTsKK0pTX0VYUE9SVF9QUklWQVRFIGJvb2wgY2hlY2tN
b2R1bGVTeW50YXgoRXhlY1N0YXRlKiwgY29uc3QgU291cmNlQ29kZSYsIFBhcnNlckVycm9yJik7
CiBKU19FWFBPUlRfUFJJVkFURSBKU1ZhbHVlIGV2YWx1YXRlKEV4ZWNTdGF0ZSosIGNvbnN0IFNv
dXJjZUNvZGUmLCBKU1ZhbHVlIHRoaXNWYWx1ZSwgTmFrZWRQdHI8RXhjZXB0aW9uPiYgcmV0dXJu
ZWRFeGNlcHRpb24pOwogaW5saW5lIEpTVmFsdWUgZXZhbHVhdGUoRXhlY1N0YXRlKiBleGVjLCBj
b25zdCBTb3VyY2VDb2RlJiBzb3VyY2VDb2RlLCBKU1ZhbHVlIHRoaXNWYWx1ZSA9IEpTVmFsdWUo
KSkKIHsKICAgICBOYWtlZFB0cjxFeGNlcHRpb24+IHVudXNlZDsKICAgICByZXR1cm4gZXZhbHVh
dGUoZXhlYywgc291cmNlQ29kZSwgdGhpc1ZhbHVlLCB1bnVzZWQpOwogfQorSlNfRVhQT1JUX1BS
SVZBVEUgdm9pZCBldmFsdWF0ZU1vZHVsZShFeGVjU3RhdGUqLCBjb25zdCBTb3VyY2VDb2RlJiwg
TmFrZWRQdHI8RXhjZXB0aW9uPiYgcmV0dXJuZWRFeGNlcHRpb24pOwogCiB9IC8vIG5hbWVzcGFj
ZSBKU0MKIApkaWZmIC0tZ2l0IGEvU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvRXhjZXB0
aW9uSGVscGVycy5jcHAgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9FeGNlcHRpb25I
ZWxwZXJzLmNwcAppbmRleCA0NmMwY2VmOTM5MmE0YWQ3YzBiMDBhOWEwODQ3ZTBiOWFlZmM1ZmFl
Li5iNzg1OWJmZTNlOGVhZmQxZWM2NGFiNWZiZmVhZjI1NzJhZDI3YzE3IDEwMDY0NAotLS0gYS9T
b3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9FeGNlcHRpb25IZWxwZXJzLmNwcAorKysgYi9T
b3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9FeGNlcHRpb25IZWxwZXJzLmNwcApAQCAtNzMs
NyArNzMsNyBAQCBKU09iamVjdCogY3JlYXRlU3RhY2tPdmVyZmxvd0Vycm9yKEV4ZWNTdGF0ZSog
ZXhlYykKIEpTT2JqZWN0KiBjcmVhdGVVbmRlZmluZWRWYXJpYWJsZUVycm9yKEV4ZWNTdGF0ZSog
ZXhlYywgY29uc3QgSWRlbnRpZmllciYgaWRlbnQpCiB7CiAgICAgaWYgKGV4ZWMtPnByb3BlcnR5
TmFtZXMoKS5pc1ByaXZhdGVOYW1lKGlkZW50KSkgewotICAgICAgICBTdHJpbmcgbWVzc2FnZSht
YWtlU3RyaW5nKCJDYW4ndCBmaW5kIHByaXZhdGUgdmFyaWFibGU6IEAiLCBleGVjLT5wcm9wZXJ0
eU5hbWVzKCkuZ2V0UHVibGljTmFtZShpZGVudCkuc3RyaW5nKCkpKTsKKyAgICAgICAgU3RyaW5n
IG1lc3NhZ2UobWFrZVN0cmluZygiQ2FuJ3QgZmluZCBwcml2YXRlIHZhcmlhYmxlOiBAIiwgZXhl
Yy0+cHJvcGVydHlOYW1lcygpLmxvb2tVcFB1YmxpY05hbWUoaWRlbnQpLnN0cmluZygpKSk7CiAg
ICAgICAgIHJldHVybiBjcmVhdGVSZWZlcmVuY2VFcnJvcihleGVjLCBtZXNzYWdlKTsKICAgICB9
CiAgICAgU3RyaW5nIG1lc3NhZ2UobWFrZVN0cmluZygiQ2FuJ3QgZmluZCB2YXJpYWJsZTogIiwg
aWRlbnQuc3RyaW5nKCkpKTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50
aW1lL0lkZW50aWZpZXIuaCBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL0lkZW50aWZp
ZXIuaAppbmRleCA2MWRlNjUzNmE2ZmE0YzI5YWNhNGRmMTRiN2Q2ZmVjNGQyYTUwM2U2Li44ODlj
YTZiMjJlNDM3OTM2MmYyNTgwNWZkMDVlNmY4NGFhNjdiYmE2IDEwMDY0NAotLS0gYS9Tb3VyY2Uv
SmF2YVNjcmlwdENvcmUvcnVudGltZS9JZGVudGlmaWVyLmgKKysrIGIvU291cmNlL0phdmFTY3Jp
cHRDb3JlL3J1bnRpbWUvSWRlbnRpZmllci5oCkBAIC0yOTIsNiArMjkyLDcgQEAgc3RydWN0IElk
ZW50aWZpZXJNYXBJbmRleEhhc2hUcmFpdHMgOiBIYXNoVHJhaXRzPGludD4gewogICAgIHN0YXRp
YyBjb25zdCBib29sIGVtcHR5VmFsdWVJc1plcm8gPSBmYWxzZTsKIH07CiAKK3R5cGVkZWYgSGFz
aFNldDxSZWZQdHI8VW5pcXVlZFN0cmluZ0ltcGw+LCBJZGVudGlmaWVyUmVwSGFzaD4gSWRlbnRp
ZmllclNldDsKIHR5cGVkZWYgSGFzaE1hcDxSZWZQdHI8VW5pcXVlZFN0cmluZ0ltcGw+LCBpbnQs
IElkZW50aWZpZXJSZXBIYXNoLCBIYXNoVHJhaXRzPFJlZlB0cjxVbmlxdWVkU3RyaW5nSW1wbD4+
LCBJZGVudGlmaWVyTWFwSW5kZXhIYXNoVHJhaXRzPiBJZGVudGlmaWVyTWFwOwogdHlwZWRlZiBI
YXNoTWFwPFVuaXF1ZWRTdHJpbmdJbXBsKiwgaW50LCBJZGVudGlmaWVyUmVwSGFzaCwgSGFzaFRy
YWl0czxVbmlxdWVkU3RyaW5nSW1wbCo+LCBJZGVudGlmaWVyTWFwSW5kZXhIYXNoVHJhaXRzPiBC
b3Jyb3dlZElkZW50aWZpZXJNYXA7CiAKZGlmZiAtLWdpdCBhL1NvdXJjZS9KYXZhU2NyaXB0Q29y
ZS9ydW50aW1lL0pTR2xvYmFsT2JqZWN0LmNwcCBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50
aW1lL0pTR2xvYmFsT2JqZWN0LmNwcAppbmRleCAyNWFjZTkyNjkxODBhZGQ3M2M0ZWFlOThkMzg5
NTc4ZTQ2YWViNTQ0Li43Y2E3N2NhMjc2NDllMDIxYmRiOGI0NzQ1Mzg4MGZmOTZlNDZmMjNhIDEw
MDY0NAotLS0gYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9KU0dsb2JhbE9iamVjdC5j
cHAKKysrIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvSlNHbG9iYWxPYmplY3QuY3Bw
CkBAIC04MCw2ICs4MCw3IEBACiAjaW5jbHVkZSAiSlNMb2NrLmgiCiAjaW5jbHVkZSAiSlNNYXAu
aCIKICNpbmNsdWRlICJKU01hcEl0ZXJhdG9yLmgiCisjaW5jbHVkZSAiSlNNb2R1bGVSZWNvcmQu
aCIKICNpbmNsdWRlICJKU09OT2JqZWN0LmgiCiAjaW5jbHVkZSAiSlNQcm9taXNlLmgiCiAjaW5j
bHVkZSAiSlNQcm9taXNlQ29uc3RydWN0b3IuaCIKQEAgLTEwMyw2ICsxMDQsNyBAQAogI2luY2x1
ZGUgIk1hcFByb3RvdHlwZS5oIgogI2luY2x1ZGUgIk1hdGhPYmplY3QuaCIKICNpbmNsdWRlICJN
aWNyb3Rhc2suaCIKKyNpbmNsdWRlICJNb2R1bGVMb2FkZXJPYmplY3QuaCIKICNpbmNsdWRlICJO
YXRpdmVFcnJvckNvbnN0cnVjdG9yLmgiCiAjaW5jbHVkZSAiTmF0aXZlRXJyb3JQcm90b3R5cGUu
aCIKICNpbmNsdWRlICJOdWxsR2V0dGVyRnVuY3Rpb24uaCIKQEAgLTE1Niw3ICsxNTgsNyBAQCBu
YW1lc3BhY2UgSlNDIHsKIAogY29uc3QgQ2xhc3NJbmZvIEpTR2xvYmFsT2JqZWN0OjpzX2luZm8g
PSB7ICJHbG9iYWxPYmplY3QiLCAmQmFzZTo6c19pbmZvLCAmZ2xvYmFsT2JqZWN0VGFibGUsIENS
RUFURV9NRVRIT0RfVEFCTEUoSlNHbG9iYWxPYmplY3QpIH07CiAKLWNvbnN0IEdsb2JhbE9iamVj
dE1ldGhvZFRhYmxlIEpTR2xvYmFsT2JqZWN0OjpzX2dsb2JhbE9iamVjdE1ldGhvZFRhYmxlID0g
eyAmYWxsb3dzQWNjZXNzRnJvbSwgJnN1cHBvcnRzUHJvZmlsaW5nLCAmc3VwcG9ydHNSaWNoU291
cmNlSW5mbywgJnNob3VsZEludGVycnVwdFNjcmlwdCwgJmphdmFTY3JpcHRSdW50aW1lRmxhZ3Ms
IG51bGxwdHIsICZzaG91bGRJbnRlcnJ1cHRTY3JpcHRCZWZvcmVUaW1lb3V0IH07Citjb25zdCBH
bG9iYWxPYmplY3RNZXRob2RUYWJsZSBKU0dsb2JhbE9iamVjdDo6c19nbG9iYWxPYmplY3RNZXRo
b2RUYWJsZSA9IHsgJmFsbG93c0FjY2Vzc0Zyb20sICZzdXBwb3J0c1Byb2ZpbGluZywgJnN1cHBv
cnRzUmljaFNvdXJjZUluZm8sICZzaG91bGRJbnRlcnJ1cHRTY3JpcHQsICZqYXZhU2NyaXB0UnVu
dGltZUZsYWdzLCBudWxscHRyLCAmc2hvdWxkSW50ZXJydXB0U2NyaXB0QmVmb3JlVGltZW91dCwg
bnVsbHB0ciwgbnVsbHB0ciwgbnVsbHB0ciwgbnVsbHB0ciB9OwogCiAvKiBTb3VyY2UgZm9yIEpT
R2xvYmFsT2JqZWN0Lmx1dC5oCiBAYmVnaW4gZ2xvYmFsT2JqZWN0VGFibGUKQEAgLTMxNSw2ICsz
MTcsNyBAQCB2b2lkIEpTR2xvYmFsT2JqZWN0Ojppbml0KFZNJiB2bSkKICAgICBtX291dE9mQmFu
ZEFyZ3VtZW50c1N0cnVjdHVyZS5zZXQodm0sIHRoaXMsIENsb25lZEFyZ3VtZW50czo6Y3JlYXRl
U3RydWN0dXJlKHZtLCB0aGlzLCBtX29iamVjdFByb3RvdHlwZS5nZXQoKSkpOwogICAgIG1fY2Fs
bGJhY2tDb25zdHJ1Y3RvclN0cnVjdHVyZS5zZXQodm0sIHRoaXMsIEpTQ2FsbGJhY2tDb25zdHJ1
Y3Rvcjo6Y3JlYXRlU3RydWN0dXJlKHZtLCB0aGlzLCBtX29iamVjdFByb3RvdHlwZS5nZXQoKSkp
OwogICAgIG1fY2FsbGJhY2tPYmplY3RTdHJ1Y3R1cmUuc2V0KHZtLCB0aGlzLCBKU0NhbGxiYWNr
T2JqZWN0PEpTRGVzdHJ1Y3RpYmxlT2JqZWN0Pjo6Y3JlYXRlU3RydWN0dXJlKHZtLCB0aGlzLCBt
X29iamVjdFByb3RvdHlwZS5nZXQoKSkpOworCiAjaWYgSlNDX09CSkNfQVBJX0VOQUJMRUQKICAg
ICBtX29iamNDYWxsYmFja0Z1bmN0aW9uU3RydWN0dXJlLnNldCh2bSwgdGhpcywgT2JqQ0NhbGxi
YWNrRnVuY3Rpb246OmNyZWF0ZVN0cnVjdHVyZSh2bSwgdGhpcywgbV9mdW5jdGlvblByb3RvdHlw
ZS5nZXQoKSkpOwogICAgIG1fb2JqY1dyYXBwZXJPYmplY3RTdHJ1Y3R1cmUuc2V0KHZtLCB0aGlz
LCBKU0NhbGxiYWNrT2JqZWN0PEpTQVBJV3JhcHBlck9iamVjdD46OmNyZWF0ZVN0cnVjdHVyZSh2
bSwgdGhpcywgbV9vYmplY3RQcm90b3R5cGUuZ2V0KCkpKTsKQEAgLTMzNiwxMCArMzM5LDkgQEAg
dm9pZCBKU0dsb2JhbE9iamVjdDo6aW5pdChWTSYgdm0pCiAgICAgbV9yZWdFeHBQcm90b3R5cGUu
c2V0KHZtLCB0aGlzLCBSZWdFeHBQcm90b3R5cGU6OmNyZWF0ZSh2bSwgUmVnRXhwUHJvdG90eXBl
OjpjcmVhdGVTdHJ1Y3R1cmUodm0sIHRoaXMsIG1fb2JqZWN0UHJvdG90eXBlLmdldCgpKSwgZW1w
dHlSZWdleCkpOwogICAgIG1fcmVnRXhwU3RydWN0dXJlLnNldCh2bSwgdGhpcywgUmVnRXhwT2Jq
ZWN0OjpjcmVhdGVTdHJ1Y3R1cmUodm0sIHRoaXMsIG1fcmVnRXhwUHJvdG90eXBlLmdldCgpKSk7
CiAgICAgbV9yZWdFeHBNYXRjaGVzQXJyYXlTdHJ1Y3R1cmUuc2V0KHZtLCB0aGlzLCBjcmVhdGVS
ZWdFeHBNYXRjaGVzQXJyYXlTdHJ1Y3R1cmUodm0sICp0aGlzKSk7Ci0gICAgCi0gICAgbV9wcm9t
aXNlUHJvdG90eXBlLnNldCh2bSwgdGhpcywgSlNQcm9taXNlUHJvdG90eXBlOjpjcmVhdGUoZXhl
YywgdGhpcywgSlNQcm9taXNlUHJvdG90eXBlOjpjcmVhdGVTdHJ1Y3R1cmUodm0sIHRoaXMsIG1f
b2JqZWN0UHJvdG90eXBlLmdldCgpKSkpOwotICAgIG1fcHJvbWlzZVN0cnVjdHVyZS5zZXQodm0s
IHRoaXMsIEpTUHJvbWlzZTo6Y3JlYXRlU3RydWN0dXJlKHZtLCB0aGlzLCBtX3Byb21pc2VQcm90
b3R5cGUuZ2V0KCkpKTsKIAorICAgIG1fbW9kdWxlUmVjb3JkU3RydWN0dXJlLnNldCh2bSwgdGhp
cywgSlNNb2R1bGVSZWNvcmQ6OmNyZWF0ZVN0cnVjdHVyZSh2bSwgdGhpcywgbV9vYmplY3RQcm90
b3R5cGUuZ2V0KCkpKTsKKyAgICAKICNpZiBFTkFCTEUoV0VCQVNTRU1CTFkpCiAgICAgbV93YXNt
TW9kdWxlU3RydWN0dXJlLnNldCh2bSwgdGhpcywgSlNXQVNNTW9kdWxlOjpjcmVhdGVTdHJ1Y3R1
cmUodm0sIHRoaXMpKTsKICNlbmRpZgpAQCAtMzk3LDEzICszOTksMTEgQEAgbV8gIyMgbG93ZXJO
YW1lICMjIFByb3RvdHlwZS0+cHV0RGlyZWN0V2l0aG91dFRyYW5zaXRpb24odm0sIHZtLnByb3Bl
cnR5TmFtZXMtPmMKICAgICBtX3N5bnRheEVycm9yQ29uc3RydWN0b3Iuc2V0KHZtLCB0aGlzLCBO
YXRpdmVFcnJvckNvbnN0cnVjdG9yOjpjcmVhdGUodm0sIHRoaXMsIG5hdGl2ZUVycm9yU3RydWN0
dXJlLCBuYXRpdmVFcnJvclByb3RvdHlwZVN0cnVjdHVyZSwgQVNDSUlMaXRlcmFsKCJTeW50YXhF
cnJvciIpKSk7CiAgICAgbV90eXBlRXJyb3JDb25zdHJ1Y3Rvci5zZXQodm0sIHRoaXMsIE5hdGl2
ZUVycm9yQ29uc3RydWN0b3I6OmNyZWF0ZSh2bSwgdGhpcywgbmF0aXZlRXJyb3JTdHJ1Y3R1cmUs
IG5hdGl2ZUVycm9yUHJvdG90eXBlU3RydWN0dXJlLCBBU0NJSUxpdGVyYWwoIlR5cGVFcnJvciIp
KSk7CiAgICAgbV9VUklFcnJvckNvbnN0cnVjdG9yLnNldCh2bSwgdGhpcywgTmF0aXZlRXJyb3JD
b25zdHJ1Y3Rvcjo6Y3JlYXRlKHZtLCB0aGlzLCBuYXRpdmVFcnJvclN0cnVjdHVyZSwgbmF0aXZl
RXJyb3JQcm90b3R5cGVTdHJ1Y3R1cmUsIEFTQ0lJTGl0ZXJhbCgiVVJJRXJyb3IiKSkpOwotICAg
IG1fcHJvbWlzZUNvbnN0cnVjdG9yLnNldCh2bSwgdGhpcywgSlNQcm9taXNlQ29uc3RydWN0b3I6
OmNyZWF0ZSh2bSwgSlNQcm9taXNlQ29uc3RydWN0b3I6OmNyZWF0ZVN0cnVjdHVyZSh2bSwgdGhp
cywgbV9mdW5jdGlvblByb3RvdHlwZS5nZXQoKSksIG1fcHJvbWlzZVByb3RvdHlwZS5nZXQoKSkp
OwogICAgIAogICAgIG1fb2JqZWN0UHJvdG90eXBlLT5wdXREaXJlY3RXaXRob3V0VHJhbnNpdGlv
bih2bSwgdm0ucHJvcGVydHlOYW1lcy0+Y29uc3RydWN0b3IsIG9iamVjdENvbnN0cnVjdG9yLCBE
b250RW51bSk7CiAgICAgbV9mdW5jdGlvblByb3RvdHlwZS0+cHV0RGlyZWN0V2l0aG91dFRyYW5z
aXRpb24odm0sIHZtLnByb3BlcnR5TmFtZXMtPmNvbnN0cnVjdG9yLCBmdW5jdGlvbkNvbnN0cnVj
dG9yLCBEb250RW51bSk7CiAgICAgbV9hcnJheVByb3RvdHlwZS0+cHV0RGlyZWN0V2l0aG91dFRy
YW5zaXRpb24odm0sIHZtLnByb3BlcnR5TmFtZXMtPmNvbnN0cnVjdG9yLCBhcnJheUNvbnN0cnVj
dG9yLCBEb250RW51bSk7CiAgICAgbV9yZWdFeHBQcm90b3R5cGUtPnB1dERpcmVjdFdpdGhvdXRU
cmFuc2l0aW9uKHZtLCB2bS5wcm9wZXJ0eU5hbWVzLT5jb25zdHJ1Y3RvciwgbV9yZWdFeHBDb25z
dHJ1Y3Rvci5nZXQoKSwgRG9udEVudW0pOwotICAgIG1fcHJvbWlzZVByb3RvdHlwZS0+cHV0RGly
ZWN0V2l0aG91dFRyYW5zaXRpb24odm0sIHZtLnByb3BlcnR5TmFtZXMtPmNvbnN0cnVjdG9yLCBt
X3Byb21pc2VDb25zdHJ1Y3Rvci5nZXQoKSwgRG9udEVudW0pOwogICAgIAogICAgIHB1dERpcmVj
dFdpdGhvdXRUcmFuc2l0aW9uKHZtLCB2bS5wcm9wZXJ0eU5hbWVzLT5PYmplY3QsIG9iamVjdENv
bnN0cnVjdG9yLCBEb250RW51bSk7CiAgICAgcHV0RGlyZWN0V2l0aG91dFRyYW5zaXRpb24odm0s
IHZtLnByb3BlcnR5TmFtZXMtPkZ1bmN0aW9uLCBmdW5jdGlvbkNvbnN0cnVjdG9yLCBEb250RW51
bSk7CkBAIC00MTUsNyArNDE1LDYgQEAgbV8gIyMgbG93ZXJOYW1lICMjIFByb3RvdHlwZS0+cHV0
RGlyZWN0V2l0aG91dFRyYW5zaXRpb24odm0sIHZtLnByb3BlcnR5TmFtZXMtPmMKICAgICBwdXRE
aXJlY3RXaXRob3V0VHJhbnNpdGlvbih2bSwgdm0ucHJvcGVydHlOYW1lcy0+U3ludGF4RXJyb3Is
IG1fc3ludGF4RXJyb3JDb25zdHJ1Y3Rvci5nZXQoKSwgRG9udEVudW0pOwogICAgIHB1dERpcmVj
dFdpdGhvdXRUcmFuc2l0aW9uKHZtLCB2bS5wcm9wZXJ0eU5hbWVzLT5UeXBlRXJyb3IsIG1fdHlw
ZUVycm9yQ29uc3RydWN0b3IuZ2V0KCksIERvbnRFbnVtKTsKICAgICBwdXREaXJlY3RXaXRob3V0
VHJhbnNpdGlvbih2bSwgdm0ucHJvcGVydHlOYW1lcy0+VVJJRXJyb3IsIG1fVVJJRXJyb3JDb25z
dHJ1Y3Rvci5nZXQoKSwgRG9udEVudW0pOwotICAgIHB1dERpcmVjdFdpdGhvdXRUcmFuc2l0aW9u
KHZtLCB2bS5wcm9wZXJ0eU5hbWVzLT5Qcm9taXNlLCBtX3Byb21pc2VDb25zdHJ1Y3Rvci5nZXQo
KSwgRG9udEVudW0pOwogICAgIAogICAgIAogI2RlZmluZSBQVVRfQ09OU1RSVUNUT1JfRk9SX1NJ
TVBMRV9UWVBFKGNhcGl0YWxOYW1lLCBsb3dlck5hbWUsIHByb3Blck5hbWUsIGluc3RhbmNlVHlw
ZSwganNOYW1lKSBcCkBAIC00NDAsNyArNDM5LDcgQEAgcHV0RGlyZWN0V2l0aG91dFRyYW5zaXRp
b24odm0sIHZtLnByb3BlcnR5TmFtZXMtPiBqc05hbWUsIGxvd2VyTmFtZSAjIyBDb25zdHJ1Y3QK
ICAgICBwdXREaXJlY3RXaXRob3V0VHJhbnNpdGlvbih2bSwgdm0ucHJvcGVydHlOYW1lcy0+SlNP
TiwgSlNPTk9iamVjdDo6Y3JlYXRlKHZtLCBKU09OT2JqZWN0OjpjcmVhdGVTdHJ1Y3R1cmUodm0s
IHRoaXMsIG1fb2JqZWN0UHJvdG90eXBlLmdldCgpKSksIERvbnRFbnVtKTsKICAgICBwdXREaXJl
Y3RXaXRob3V0VHJhbnNpdGlvbih2bSwgdm0ucHJvcGVydHlOYW1lcy0+TWF0aCwgTWF0aE9iamVj
dDo6Y3JlYXRlKHZtLCB0aGlzLCBNYXRoT2JqZWN0OjpjcmVhdGVTdHJ1Y3R1cmUodm0sIHRoaXMs
IG1fb2JqZWN0UHJvdG90eXBlLmdldCgpKSksIERvbnRFbnVtKTsKICAgICBwdXREaXJlY3RXaXRo
b3V0VHJhbnNpdGlvbih2bSwgdm0ucHJvcGVydHlOYW1lcy0+UmVmbGVjdCwgUmVmbGVjdE9iamVj
dDo6Y3JlYXRlKHZtLCB0aGlzLCBSZWZsZWN0T2JqZWN0OjpjcmVhdGVTdHJ1Y3R1cmUodm0sIHRo
aXMsIG1fb2JqZWN0UHJvdG90eXBlLmdldCgpKSksIERvbnRFbnVtKTsKLSAgICAKKwogICAgIHN0
ZDo6YXJyYXk8SW50ZXJuYWxGdW5jdGlvbiosIE5VTUJFUl9PRl9UWVBFRF9BUlJBWV9UWVBFUz4g
dHlwZWRBcnJheUNvbnN0cnVjdG9yczsKICAgICB0eXBlZEFycmF5Q29uc3RydWN0b3JzW3RvSW5k
ZXgoVHlwZUludDgpXSA9IEpTSW50OEFycmF5Q29uc3RydWN0b3I6OmNyZWF0ZSh2bSwgSlNJbnQ4
QXJyYXlDb25zdHJ1Y3Rvcjo6Y3JlYXRlU3RydWN0dXJlKHZtLCB0aGlzLCBtX2Z1bmN0aW9uUHJv
dG90eXBlLmdldCgpKSwgbV90eXBlZEFycmF5c1t0b0luZGV4KFR5cGVJbnQ4KV0ucHJvdG90eXBl
LmdldCgpLCBBU0NJSUxpdGVyYWwoIkludDhBcnJheSIpKTsKICAgICB0eXBlZEFycmF5Q29uc3Ry
dWN0b3JzW3RvSW5kZXgoVHlwZUludDE2KV0gPSBKU0ludDE2QXJyYXlDb25zdHJ1Y3Rvcjo6Y3Jl
YXRlKHZtLCBKU0ludDE2QXJyYXlDb25zdHJ1Y3Rvcjo6Y3JlYXRlU3RydWN0dXJlKHZtLCB0aGlz
LCBtX2Z1bmN0aW9uUHJvdG90eXBlLmdldCgpKSwgbV90eXBlZEFycmF5c1t0b0luZGV4KFR5cGVJ
bnQxNildLnByb3RvdHlwZS5nZXQoKSwgQVNDSUlMaXRlcmFsKCJJbnQxNkFycmF5IikpOwpAQCAt
NDU3LDYgKzQ1Niw5IEBAIHB1dERpcmVjdFdpdGhvdXRUcmFuc2l0aW9uKHZtLCB2bS5wcm9wZXJ0
eU5hbWVzLT4ganNOYW1lLCBsb3dlck5hbWUgIyMgQ29uc3RydWN0CiAgICAgICAgIG1fdHlwZWRB
cnJheXNbdHlwZWRBcnJheUluZGV4XS5wcm90b3R5cGUtPnB1dERpcmVjdFdpdGhvdXRUcmFuc2l0
aW9uKHZtLCB2bS5wcm9wZXJ0eU5hbWVzLT5jb25zdHJ1Y3RvciwgdHlwZWRBcnJheUNvbnN0cnVj
dG9yc1t0eXBlZEFycmF5SW5kZXhdLCBEb250RW51bSk7CiAgICAgICAgIHB1dERpcmVjdFdpdGhv
dXRUcmFuc2l0aW9uKHZtLCBJZGVudGlmaWVyOjpmcm9tU3RyaW5nKGV4ZWMsIHR5cGVkQXJyYXlD
b25zdHJ1Y3RvcnNbdHlwZWRBcnJheUluZGV4XS0+bmFtZShleGVjKSksIHR5cGVkQXJyYXlDb25z
dHJ1Y3RvcnNbdHlwZWRBcnJheUluZGV4XSwgRG9udEVudW0pOwogICAgIH0KKworICAgIG1fbW9k
dWxlTG9hZGVyLnNldCh2bSwgdGhpcywgTW9kdWxlTG9hZGVyT2JqZWN0OjpjcmVhdGUodm0sIHRo
aXMsIE1vZHVsZUxvYWRlck9iamVjdDo6Y3JlYXRlU3RydWN0dXJlKHZtLCB0aGlzLCBtX29iamVj
dFByb3RvdHlwZS5nZXQoKSkpKTsKKyAgICBwdXREaXJlY3RXaXRob3V0VHJhbnNpdGlvbih2bSwg
dm0ucHJvcGVydHlOYW1lcy0+TG9hZGVyLCBtX21vZHVsZUxvYWRlci5nZXQoKSwgRG9udEVudW0p
OwogICAgIAogICAgIEpTRnVuY3Rpb24qIGJ1aWx0aW5Mb2cgPSBKU0Z1bmN0aW9uOjpjcmVhdGUo
dm0sIHRoaXMsIDEsIHZtLnByb3BlcnR5TmFtZXMtPmVtcHR5SWRlbnRpZmllci5zdHJpbmcoKSwg
Z2xvYmFsRnVuY0J1aWx0aW5Mb2cpOwogCkBAIC00OTEsNyArNDkzLDcgQEAgcHV0RGlyZWN0V2l0
aG91dFRyYW5zaXRpb24odm0sIHZtLnByb3BlcnR5TmFtZXMtPiBqc05hbWUsIGxvd2VyTmFtZSAj
IyBDb25zdHJ1Y3QKICAgICAgICAgR2xvYmFsUHJvcGVydHlJbmZvKHZtLnByb3BlcnR5TmFtZXMt
PmFycmF5SXRlcmF0aW9uS2luZFZhbHVlUHJpdmF0ZU5hbWUsIGpzTnVtYmVyKEFycmF5SXRlcmF0
ZVZhbHVlKSwgRG9udEVudW0gfCBEb250RGVsZXRlIHwgUmVhZE9ubHkpLAogICAgICAgICBHbG9i
YWxQcm9wZXJ0eUluZm8odm0ucHJvcGVydHlOYW1lcy0+YXJyYXlJdGVyYXRpb25LaW5kS2V5VmFs
dWVQcml2YXRlTmFtZSwganNOdW1iZXIoQXJyYXlJdGVyYXRlS2V5VmFsdWUpLCBEb250RW51bSB8
IERvbnREZWxldGUgfCBSZWFkT25seSksCiAgICAgICAgIEdsb2JhbFByb3BlcnR5SW5mbyh2bS5w
cm9wZXJ0eU5hbWVzLT5idWlsdGluTmFtZXMoKS5zeW1ib2xJdGVyYXRvclByaXZhdGVOYW1lKCks
IFN5bWJvbDo6Y3JlYXRlKHZtLCBzdGF0aWNfY2FzdDxTeW1ib2xJbXBsJj4oKnZtLnByb3BlcnR5
TmFtZXMtPml0ZXJhdG9yU3ltYm9sLmltcGwoKSkpLCBEb250RW51bSB8IERvbnREZWxldGUgfCBS
ZWFkT25seSksCi0gICAgICAgIEdsb2JhbFByb3BlcnR5SW5mbyh2bS5wcm9wZXJ0eU5hbWVzLT5Q
cm9taXNlUHJpdmF0ZU5hbWUsIG1fcHJvbWlzZUNvbnN0cnVjdG9yLmdldCgpLCBEb250RW51bSB8
IERvbnREZWxldGUgfCBSZWFkT25seSksCisgICAgICAgIEdsb2JhbFByb3BlcnR5SW5mbyh2bS5w
cm9wZXJ0eU5hbWVzLT5Qcm9taXNlUHJpdmF0ZU5hbWUsIHByb21pc2VDb25zdHJ1Y3RvciwgRG9u
dEVudW0gfCBEb250RGVsZXRlIHwgUmVhZE9ubHkpLAogICAgICAgICBHbG9iYWxQcm9wZXJ0eUlu
Zm8odm0ucHJvcGVydHlOYW1lcy0+cHJvbWlzZVBlbmRpbmdQcml2YXRlTmFtZSwganNOdW1iZXIo
c3RhdGljX2Nhc3Q8dW5zaWduZWQ+KEpTUHJvbWlzZTo6U3RhdHVzOjpQZW5kaW5nKSksIERvbnRF
bnVtIHwgRG9udERlbGV0ZSB8IFJlYWRPbmx5KSwKICAgICAgICAgR2xvYmFsUHJvcGVydHlJbmZv
KHZtLnByb3BlcnR5TmFtZXMtPmJ1aWx0aW5OYW1lcygpLnByb21pc2VGdWxmaWxsZWRQcml2YXRl
TmFtZSgpLCBqc051bWJlcihzdGF0aWNfY2FzdDx1bnNpZ25lZD4oSlNQcm9taXNlOjpTdGF0dXM6
OkZ1bGZpbGxlZCkpLCBEb250RW51bSB8IERvbnREZWxldGUgfCBSZWFkT25seSksCiAgICAgICAg
IEdsb2JhbFByb3BlcnR5SW5mbyh2bS5wcm9wZXJ0eU5hbWVzLT5idWlsdGluTmFtZXMoKS5wcm9t
aXNlUmVqZWN0ZWRQcml2YXRlTmFtZSgpLCBqc051bWJlcihzdGF0aWNfY2FzdDx1bnNpZ25lZD4o
SlNQcm9taXNlOjpTdGF0dXM6OlJlamVjdGVkKSksIERvbnRFbnVtIHwgRG9udERlbGV0ZSB8IFJl
YWRPbmx5KSwKQEAgLTUwNyw3ICs1MDksMTAgQEAgcHV0RGlyZWN0V2l0aG91dFRyYW5zaXRpb24o
dm0sIHZtLnByb3BlcnR5TmFtZXMtPiBqc05hbWUsIGxvd2VyTmFtZSAjIyBDb25zdHJ1Y3QKICAg
ICAgICAgR2xvYmFsUHJvcGVydHlJbmZvKHZtLnByb3BlcnR5TmFtZXMtPmJ1aWx0aW5OYW1lcygp
LmNyZWF0ZVJlc29sdmluZ0Z1bmN0aW9uc1ByaXZhdGVOYW1lKCksIEpTRnVuY3Rpb246OmNyZWF0
ZUJ1aWx0aW5GdW5jdGlvbih2bSwgb3BlcmF0aW9uc1Byb21pc2VDcmVhdGVSZXNvbHZpbmdGdW5j
dGlvbnNDb2RlR2VuZXJhdG9yKHZtKSwgdGhpcyksIERvbnRFbnVtIHwgRG9udERlbGV0ZSB8IFJl
YWRPbmx5KSwKICAgICAgICAgR2xvYmFsUHJvcGVydHlJbmZvKHZtLnByb3BlcnR5TmFtZXMtPmJ1
aWx0aW5OYW1lcygpLnByb21pc2VSZWFjdGlvbkpvYlByaXZhdGVOYW1lKCksIEpTRnVuY3Rpb246
OmNyZWF0ZUJ1aWx0aW5GdW5jdGlvbih2bSwgb3BlcmF0aW9uc1Byb21pc2VQcm9taXNlUmVhY3Rp
b25Kb2JDb2RlR2VuZXJhdG9yKHZtKSwgdGhpcyksIERvbnRFbnVtIHwgRG9udERlbGV0ZSB8IFJl
YWRPbmx5KSwKICAgICAgICAgR2xvYmFsUHJvcGVydHlJbmZvKHZtLnByb3BlcnR5TmFtZXMtPmJ1
aWx0aW5OYW1lcygpLnByb21pc2VSZXNvbHZlVGhlbmFibGVKb2JQcml2YXRlTmFtZSgpLCBKU0Z1
bmN0aW9uOjpjcmVhdGVCdWlsdGluRnVuY3Rpb24odm0sIG9wZXJhdGlvbnNQcm9taXNlUHJvbWlz
ZVJlc29sdmVUaGVuYWJsZUpvYkNvZGVHZW5lcmF0b3Iodm0pLCB0aGlzKSwgRG9udEVudW0gfCBE
b250RGVsZXRlIHwgUmVhZE9ubHkpLAorICAgICAgICBHbG9iYWxQcm9wZXJ0eUluZm8odm0ucHJv
cGVydHlOYW1lcy0+YnVpbHRpbk5hbWVzKCkubmV3UHJvbWlzZURlZmVycmVkUHJpdmF0ZU5hbWUo
KSwgbV9uZXdQcm9taXNlRGVmZXJyZWRGdW5jdGlvbi5nZXQoKSwgRG9udEVudW0gfCBEb250RGVs
ZXRlIHwgUmVhZE9ubHkpLAorICAgICAgICBHbG9iYWxQcm9wZXJ0eUluZm8odm0ucHJvcGVydHlO
YW1lcy0+YnVpbHRpbk5hbWVzKCkucHJvbWlzZVRoZW5Qcml2YXRlTmFtZSgpLCBKU0Z1bmN0aW9u
OjpjcmVhdGVCdWlsdGluRnVuY3Rpb24odm0sIG9wZXJhdGlvbnNQcm9taXNlUHJvbWlzZVRoZW5D
b2RlR2VuZXJhdG9yKHZtKSwgdGhpcyksIERvbnRFbnVtIHwgRG9udERlbGV0ZSB8IFJlYWRPbmx5
KSwKICAgICAgICAgR2xvYmFsUHJvcGVydHlJbmZvKHZtLnByb3BlcnR5TmFtZXMtPmJ1aWx0aW5O
YW1lcygpLkluc3BlY3Rvckluc3RydW1lbnRhdGlvblByaXZhdGVOYW1lKCksIEluc3BlY3Rvcklu
c3RydW1lbnRhdGlvbk9iamVjdDo6Y3JlYXRlKHZtLCB0aGlzLCBJbnNwZWN0b3JJbnN0cnVtZW50
YXRpb25PYmplY3Q6OmNyZWF0ZVN0cnVjdHVyZSh2bSwgdGhpcywgbV9vYmplY3RQcm90b3R5cGUu
Z2V0KCkpKSwgRG9udEVudW0gfCBEb250RGVsZXRlIHwgUmVhZE9ubHkpLAorICAgICAgICBHbG9i
YWxQcm9wZXJ0eUluZm8odm0ucHJvcGVydHlOYW1lcy0+TWFwUHJpdmF0ZU5hbWUsIG1hcENvbnN0
cnVjdG9yLCBEb250RW51bSB8IERvbnREZWxldGUgfCBSZWFkT25seSksCiAgICAgfTsKICAgICBh
ZGRTdGF0aWNHbG9iYWxzKHN0YXRpY0dsb2JhbHMsIFdURl9BUlJBWV9MRU5HVEgoc3RhdGljR2xv
YmFscykpOwogICAgIApAQCAtNzUwLDcgKzc1NSw2IEBAIHZvaWQgSlNHbG9iYWxPYmplY3Q6OnZp
c2l0Q2hpbGRyZW4oSlNDZWxsKiBjZWxsLCBTbG90VmlzaXRvciYgdmlzaXRvcikKICAgICB2aXNp
dG9yLmFwcGVuZCgmdGhpc09iamVjdC0+bV90eXBlRXJyb3JDb25zdHJ1Y3Rvcik7CiAgICAgdmlz
aXRvci5hcHBlbmQoJnRoaXNPYmplY3QtPm1fVVJJRXJyb3JDb25zdHJ1Y3Rvcik7CiAgICAgdmlz
aXRvci5hcHBlbmQoJnRoaXNPYmplY3QtPm1fb2JqZWN0Q29uc3RydWN0b3IpOwotICAgIHZpc2l0
b3IuYXBwZW5kKCZ0aGlzT2JqZWN0LT5tX3Byb21pc2VDb25zdHJ1Y3Rvcik7CiAKICAgICB2aXNp
dG9yLmFwcGVuZCgmdGhpc09iamVjdC0+bV9udWxsR2V0dGVyRnVuY3Rpb24pOwogICAgIHZpc2l0
b3IuYXBwZW5kKCZ0aGlzT2JqZWN0LT5tX251bGxTZXR0ZXJGdW5jdGlvbik7CkBAIC03NjQsMTMg
Kzc2OCwxMyBAQCB2b2lkIEpTR2xvYmFsT2JqZWN0Ojp2aXNpdENoaWxkcmVuKEpTQ2VsbCogY2Vs
bCwgU2xvdFZpc2l0b3ImIHZpc2l0b3IpCiAgICAgdmlzaXRvci5hcHBlbmQoJnRoaXNPYmplY3Qt
Pm1faW5pdGlhbGl6ZVByb21pc2VGdW5jdGlvbik7CiAgICAgdmlzaXRvci5hcHBlbmQoJnRoaXNP
YmplY3QtPm1fbmV3UHJvbWlzZURlZmVycmVkRnVuY3Rpb24pOwogICAgIHZpc2l0b3IuYXBwZW5k
KCZ0aGlzT2JqZWN0LT5tX3Rocm93VHlwZUVycm9yR2V0dGVyU2V0dGVyKTsKKyAgICB2aXNpdG9y
LmFwcGVuZCgmdGhpc09iamVjdC0+bV9tb2R1bGVMb2FkZXIpOwogCiAgICAgdmlzaXRvci5hcHBl
bmQoJnRoaXNPYmplY3QtPm1fb2JqZWN0UHJvdG90eXBlKTsKICAgICB2aXNpdG9yLmFwcGVuZCgm
dGhpc09iamVjdC0+bV9mdW5jdGlvblByb3RvdHlwZSk7CiAgICAgdmlzaXRvci5hcHBlbmQoJnRo
aXNPYmplY3QtPm1fYXJyYXlQcm90b3R5cGUpOwogICAgIHZpc2l0b3IuYXBwZW5kKCZ0aGlzT2Jq
ZWN0LT5tX2Vycm9yUHJvdG90eXBlKTsKICAgICB2aXNpdG9yLmFwcGVuZCgmdGhpc09iamVjdC0+
bV9pdGVyYXRvclByb3RvdHlwZSk7Ci0gICAgdmlzaXRvci5hcHBlbmQoJnRoaXNPYmplY3QtPm1f
cHJvbWlzZVByb3RvdHlwZSk7CiAKICAgICB2aXNpdG9yLmFwcGVuZCgmdGhpc09iamVjdC0+bV9k
ZWJ1Z2dlclNjb3BlU3RydWN0dXJlKTsKICAgICB2aXNpdG9yLmFwcGVuZCgmdGhpc09iamVjdC0+
bV93aXRoU2NvcGVTdHJ1Y3R1cmUpOwpAQCAtODAxLDEwICs4MDUsMTAgQEAgdm9pZCBKU0dsb2Jh
bE9iamVjdDo6dmlzaXRDaGlsZHJlbihKU0NlbGwqIGNlbGwsIFNsb3RWaXNpdG9yJiB2aXNpdG9y
KQogICAgIHZpc2l0b3IuYXBwZW5kKCZ0aGlzT2JqZWN0LT5tX3N5bWJvbE9iamVjdFN0cnVjdHVy
ZSk7CiAgICAgdmlzaXRvci5hcHBlbmQoJnRoaXNPYmplY3QtPm1fcmVnRXhwU3RydWN0dXJlKTsK
ICAgICB2aXNpdG9yLmFwcGVuZCgmdGhpc09iamVjdC0+bV9yZWdFeHBNYXRjaGVzQXJyYXlTdHJ1
Y3R1cmUpOworICAgIHZpc2l0b3IuYXBwZW5kKCZ0aGlzT2JqZWN0LT5tX21vZHVsZVJlY29yZFN0
cnVjdHVyZSk7CiAgICAgdmlzaXRvci5hcHBlbmQoJnRoaXNPYmplY3QtPm1fY29uc29sZVN0cnVj
dHVyZSk7CiAgICAgdmlzaXRvci5hcHBlbmQoJnRoaXNPYmplY3QtPm1fZG9sbGFyVk1TdHJ1Y3R1
cmUpOwogICAgIHZpc2l0b3IuYXBwZW5kKCZ0aGlzT2JqZWN0LT5tX2ludGVybmFsRnVuY3Rpb25T
dHJ1Y3R1cmUpOwotICAgIHZpc2l0b3IuYXBwZW5kKCZ0aGlzT2JqZWN0LT5tX3Byb21pc2VTdHJ1
Y3R1cmUpOwogI2lmIEVOQUJMRShXRUJBU1NFTUJMWSkKICAgICB2aXNpdG9yLmFwcGVuZCgmdGhp
c09iamVjdC0+bV93YXNtTW9kdWxlU3RydWN0dXJlKTsKICNlbmRpZgpkaWZmIC0tZ2l0IGEvU291
cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvSlNHbG9iYWxPYmplY3QuaCBiL1NvdXJjZS9KYXZh
U2NyaXB0Q29yZS9ydW50aW1lL0pTR2xvYmFsT2JqZWN0LmgKaW5kZXggOTk4NmJjZjYyNDVlMmNj
NDY4MjBiMTMxMDJiMjM0MjkwMGVjM2Q3Yi4uZjBhNjVkMjdlOWRkYWQyMWFlZGUyNmJmOWNkNWE2
YWVkZWMwNzBkOCAxMDA2NDQKLS0tIGEvU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvSlNH
bG9iYWxPYmplY3QuaAorKysgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9KU0dsb2Jh
bE9iamVjdC5oCkBAIC03MCwxMSArNzAsMTMgQEAgY2xhc3MgR2V0dGVyU2V0dGVyOwogY2xhc3Mg
R2xvYmFsQ29kZUJsb2NrOwogY2xhc3MgSW5wdXRDdXJzb3I7CiBjbGFzcyBKU0dsb2JhbE9iamVj
dERlYnVnZ2FibGU7CitjbGFzcyBKU1Byb21pc2U7CiBjbGFzcyBKU1Byb21pc2VDb25zdHJ1Y3Rv
cjsKIGNsYXNzIEpTUHJvbWlzZVByb3RvdHlwZTsKIGNsYXNzIEpTU3RhY2s7CiBjbGFzcyBMTElu
dE9mZnNldHNFeHRyYWN0b3I7CiBjbGFzcyBNaWNyb3Rhc2s7CitjbGFzcyBNb2R1bGVMb2FkZXJP
YmplY3Q7CiBjbGFzcyBOYXRpdmVFcnJvckNvbnN0cnVjdG9yOwogY2xhc3MgT2JqZWN0Q29uc3Ry
dWN0b3I7CiBjbGFzcyBQcm9ncmFtQ29kZUJsb2NrOwpAQCAtOTksNiArMTAxLDcgQEAgc3RydWN0
IEhhc2hUYWJsZTsKICAgICBtYWNybyhCb29sZWFuLCBib29sZWFuLCBib29sZWFuT2JqZWN0LCBC
b29sZWFuT2JqZWN0LCBCb29sZWFuKSBcCiAgICAgbWFjcm8oTnVtYmVyLCBudW1iZXIsIG51bWJl
ck9iamVjdCwgTnVtYmVyT2JqZWN0LCBOdW1iZXIpIFwKICAgICBtYWNybyhFcnJvciwgZXJyb3Is
IGVycm9yLCBFcnJvckluc3RhbmNlLCBFcnJvcikgXAorICAgIG1hY3JvKEpTUHJvbWlzZSwgcHJv
bWlzZSwgcHJvbWlzZSwgSlNQcm9taXNlLCBQcm9taXNlKSBcCiAgICAgbWFjcm8oSlNBcnJheUJ1
ZmZlciwgYXJyYXlCdWZmZXIsIGFycmF5QnVmZmVyLCBKU0FycmF5QnVmZmVyLCBBcnJheUJ1ZmZl
cikgXAogICAgIERFRklORV9TVEFOREFSRF9CVUlMVElOKG1hY3JvLCBXZWFrTWFwLCB3ZWFrTWFw
KSBcCiAgICAgREVGSU5FX1NUQU5EQVJEX0JVSUxUSU4obWFjcm8sIFdlYWtTZXQsIHdlYWtTZXQp
IFwKQEAgLTE1MCw2ICsxNTMsMTggQEAgc3RydWN0IEdsb2JhbE9iamVjdE1ldGhvZFRhYmxlIHsK
IAogICAgIHR5cGVkZWYgYm9vbCAoKlNob3VsZEludGVycnVwdFNjcmlwdEJlZm9yZVRpbWVvdXRQ
dHIpKGNvbnN0IEpTR2xvYmFsT2JqZWN0Kik7CiAgICAgU2hvdWxkSW50ZXJydXB0U2NyaXB0QmVm
b3JlVGltZW91dFB0ciBzaG91bGRJbnRlcnJ1cHRTY3JpcHRCZWZvcmVUaW1lb3V0OworCisgICAg
dHlwZWRlZiBKU1ZhbHVlICgqTG9hZGVyUmVzb2x2ZVB0cikoSlNHbG9iYWxPYmplY3QqLCBFeGVj
U3RhdGUqLCBKU1ZhbHVlLCBKU1ZhbHVlKTsKKyAgICBMb2FkZXJSZXNvbHZlUHRyIGxvYWRlclJl
c29sdmU7CisKKyAgICB0eXBlZGVmIEpTVmFsdWUgKCpMb2FkZXJGZXRjaFB0cikoSlNHbG9iYWxP
YmplY3QqLCBFeGVjU3RhdGUqLCBKU1ZhbHVlKTsKKyAgICBMb2FkZXJGZXRjaFB0ciBsb2FkZXJG
ZXRjaDsKKworICAgIHR5cGVkZWYgSlNWYWx1ZSAoKkxvYWRlclRyYW5zbGF0ZVB0cikoSlNHbG9i
YWxPYmplY3QqLCBFeGVjU3RhdGUqLCBKU1ZhbHVlLCBKU1ZhbHVlKTsKKyAgICBMb2FkZXJUcmFu
c2xhdGVQdHIgbG9hZGVyVHJhbnNsYXRlOworCisgICAgdHlwZWRlZiBKU1ZhbHVlICgqTG9hZGVy
SW5zdGFudGlhdGVQdHIpKEpTR2xvYmFsT2JqZWN0KiwgRXhlY1N0YXRlKiwgSlNWYWx1ZSwgSlNW
YWx1ZSk7CisgICAgTG9hZGVySW5zdGFudGlhdGVQdHIgbG9hZGVySW5zdGFudGlhdGU7CiB9Owog
CiBjbGFzcyBKU0dsb2JhbE9iamVjdCA6IHB1YmxpYyBKU1NlZ21lbnRlZFZhcmlhYmxlT2JqZWN0
IHsKQEAgLTE4Myw3ICsxOTgsNiBAQCBjbGFzcyBKU0dsb2JhbE9iamVjdCA6IHB1YmxpYyBKU1Nl
Z21lbnRlZFZhcmlhYmxlT2JqZWN0IHsKICAgICBXcml0ZUJhcnJpZXI8TmF0aXZlRXJyb3JDb25z
dHJ1Y3Rvcj4gbV9zeW50YXhFcnJvckNvbnN0cnVjdG9yOwogICAgIFdyaXRlQmFycmllcjxOYXRp
dmVFcnJvckNvbnN0cnVjdG9yPiBtX3R5cGVFcnJvckNvbnN0cnVjdG9yOwogICAgIFdyaXRlQmFy
cmllcjxOYXRpdmVFcnJvckNvbnN0cnVjdG9yPiBtX1VSSUVycm9yQ29uc3RydWN0b3I7Ci0gICAg
V3JpdGVCYXJyaWVyPEpTUHJvbWlzZUNvbnN0cnVjdG9yPiBtX3Byb21pc2VDb25zdHJ1Y3RvcjsK
ICAgICBXcml0ZUJhcnJpZXI8T2JqZWN0Q29uc3RydWN0b3I+IG1fb2JqZWN0Q29uc3RydWN0b3I7
CiAKICAgICBXcml0ZUJhcnJpZXI8TnVsbEdldHRlckZ1bmN0aW9uPiBtX251bGxHZXR0ZXJGdW5j
dGlvbjsKQEAgLTIwMCwxMiArMjE0LDEzIEBAIGNsYXNzIEpTR2xvYmFsT2JqZWN0IDogcHVibGlj
IEpTU2VnbWVudGVkVmFyaWFibGVPYmplY3QgewogICAgIFdyaXRlQmFycmllcjxKU0Z1bmN0aW9u
PiBtX25ld1Byb21pc2VEZWZlcnJlZEZ1bmN0aW9uOwogICAgIFdyaXRlQmFycmllcjxHZXR0ZXJT
ZXR0ZXI+IG1fdGhyb3dUeXBlRXJyb3JHZXR0ZXJTZXR0ZXI7CiAKKyAgICBXcml0ZUJhcnJpZXI8
TW9kdWxlTG9hZGVyT2JqZWN0PiBtX21vZHVsZUxvYWRlcjsKKwogICAgIFdyaXRlQmFycmllcjxP
YmplY3RQcm90b3R5cGU+IG1fb2JqZWN0UHJvdG90eXBlOwogICAgIFdyaXRlQmFycmllcjxGdW5j
dGlvblByb3RvdHlwZT4gbV9mdW5jdGlvblByb3RvdHlwZTsKICAgICBXcml0ZUJhcnJpZXI8QXJy
YXlQcm90b3R5cGU+IG1fYXJyYXlQcm90b3R5cGU7CiAgICAgV3JpdGVCYXJyaWVyPFJlZ0V4cFBy
b3RvdHlwZT4gbV9yZWdFeHBQcm90b3R5cGU7CiAgICAgV3JpdGVCYXJyaWVyPEl0ZXJhdG9yUHJv
dG90eXBlPiBtX2l0ZXJhdG9yUHJvdG90eXBlOwotICAgIFdyaXRlQmFycmllcjxKU1Byb21pc2VQ
cm90b3R5cGU+IG1fcHJvbWlzZVByb3RvdHlwZTsKIAogICAgIFdyaXRlQmFycmllcjxTdHJ1Y3R1
cmU+IG1fZGVidWdnZXJTY29wZVN0cnVjdHVyZTsKICAgICBXcml0ZUJhcnJpZXI8U3RydWN0dXJl
PiBtX3dpdGhTY29wZVN0cnVjdHVyZTsKQEAgLTI0MSw3ICsyNTYsNyBAQCBjbGFzcyBKU0dsb2Jh
bE9iamVjdCA6IHB1YmxpYyBKU1NlZ21lbnRlZFZhcmlhYmxlT2JqZWN0IHsKICAgICBXcml0ZUJh
cnJpZXI8U3RydWN0dXJlPiBtX2ludGVybmFsRnVuY3Rpb25TdHJ1Y3R1cmU7CiAgICAgV3JpdGVC
YXJyaWVyPFN0cnVjdHVyZT4gbV9pdGVyYXRvclJlc3VsdFN0cnVjdHVyZTsKICAgICBXcml0ZUJh
cnJpZXI8U3RydWN0dXJlPiBtX3JlZ0V4cE1hdGNoZXNBcnJheVN0cnVjdHVyZTsKLSAgICBXcml0
ZUJhcnJpZXI8U3RydWN0dXJlPiBtX3Byb21pc2VTdHJ1Y3R1cmU7CisgICAgV3JpdGVCYXJyaWVy
PFN0cnVjdHVyZT4gbV9tb2R1bGVSZWNvcmRTdHJ1Y3R1cmU7CiAjaWYgRU5BQkxFKFdFQkFTU0VN
QkxZKQogICAgIFdyaXRlQmFycmllcjxTdHJ1Y3R1cmU+IG1fd2FzbU1vZHVsZVN0cnVjdHVyZTsK
ICNlbmRpZgpAQCAtMzg2LDcgKzQwMSw2IEBAIGNsYXNzIEpTR2xvYmFsT2JqZWN0IDogcHVibGlj
IEpTU2VnbWVudGVkVmFyaWFibGVPYmplY3QgewogICAgIE5hdGl2ZUVycm9yQ29uc3RydWN0b3Iq
IHN5bnRheEVycm9yQ29uc3RydWN0b3IoKSBjb25zdCB7IHJldHVybiBtX3N5bnRheEVycm9yQ29u
c3RydWN0b3IuZ2V0KCk7IH0KICAgICBOYXRpdmVFcnJvckNvbnN0cnVjdG9yKiB0eXBlRXJyb3JD
b25zdHJ1Y3RvcigpIGNvbnN0IHsgcmV0dXJuIG1fdHlwZUVycm9yQ29uc3RydWN0b3IuZ2V0KCk7
IH0KICAgICBOYXRpdmVFcnJvckNvbnN0cnVjdG9yKiBVUklFcnJvckNvbnN0cnVjdG9yKCkgY29u
c3QgeyByZXR1cm4gbV9VUklFcnJvckNvbnN0cnVjdG9yLmdldCgpOyB9Ci0gICAgSlNQcm9taXNl
Q29uc3RydWN0b3IqIHByb21pc2VDb25zdHJ1Y3RvcigpIGNvbnN0IHsgcmV0dXJuIG1fcHJvbWlz
ZUNvbnN0cnVjdG9yLmdldCgpOyB9CiAKICAgICBOdWxsR2V0dGVyRnVuY3Rpb24qIG51bGxHZXR0
ZXJGdW5jdGlvbigpIGNvbnN0IHsgcmV0dXJuIG1fbnVsbEdldHRlckZ1bmN0aW9uLmdldCgpOyB9
CiAgICAgTnVsbFNldHRlckZ1bmN0aW9uKiBudWxsU2V0dGVyRnVuY3Rpb24oKSBjb25zdCB7IHJl
dHVybiBtX251bGxTZXR0ZXJGdW5jdGlvbi5nZXQoKTsgfQpAQCAtNDA3LDYgKzQyMSw4IEBAIGNs
YXNzIEpTR2xvYmFsT2JqZWN0IDogcHVibGljIEpTU2VnbWVudGVkVmFyaWFibGVPYmplY3Qgewog
ICAgICAgICByZXR1cm4gbV90aHJvd1R5cGVFcnJvckdldHRlclNldHRlci5nZXQoKTsKICAgICB9
CiAKKyAgICBNb2R1bGVMb2FkZXJPYmplY3QqIG1vZHVsZUxvYWRlcigpIGNvbnN0IHsgcmV0dXJu
IG1fbW9kdWxlTG9hZGVyLmdldCgpOyB9CisKICAgICBPYmplY3RQcm90b3R5cGUqIG9iamVjdFBy
b3RvdHlwZSgpIGNvbnN0IHsgcmV0dXJuIG1fb2JqZWN0UHJvdG90eXBlLmdldCgpOyB9CiAgICAg
RnVuY3Rpb25Qcm90b3R5cGUqIGZ1bmN0aW9uUHJvdG90eXBlKCkgY29uc3QgeyByZXR1cm4gbV9m
dW5jdGlvblByb3RvdHlwZS5nZXQoKTsgfQogICAgIEFycmF5UHJvdG90eXBlKiBhcnJheVByb3Rv
dHlwZSgpIGNvbnN0IHsgcmV0dXJuIG1fYXJyYXlQcm90b3R5cGUuZ2V0KCk7IH0KQEAgLTQxOCw3
ICs0MzQsNiBAQCBjbGFzcyBKU0dsb2JhbE9iamVjdCA6IHB1YmxpYyBKU1NlZ21lbnRlZFZhcmlh
YmxlT2JqZWN0IHsKICAgICBSZWdFeHBQcm90b3R5cGUqIHJlZ0V4cFByb3RvdHlwZSgpIGNvbnN0
IHsgcmV0dXJuIG1fcmVnRXhwUHJvdG90eXBlLmdldCgpOyB9CiAgICAgRXJyb3JQcm90b3R5cGUq
IGVycm9yUHJvdG90eXBlKCkgY29uc3QgeyByZXR1cm4gbV9lcnJvclByb3RvdHlwZS5nZXQoKTsg
fQogICAgIEl0ZXJhdG9yUHJvdG90eXBlKiBpdGVyYXRvclByb3RvdHlwZSgpIGNvbnN0IHsgcmV0
dXJuIG1faXRlcmF0b3JQcm90b3R5cGUuZ2V0KCk7IH0KLSAgICBKU1Byb21pc2VQcm90b3R5cGUq
IHByb21pc2VQcm90b3R5cGUoKSBjb25zdCB7IHJldHVybiBtX3Byb21pc2VQcm90b3R5cGUuZ2V0
KCk7IH0KIAogICAgIFN0cnVjdHVyZSogZGVidWdnZXJTY29wZVN0cnVjdHVyZSgpIGNvbnN0IHsg
cmV0dXJuIG1fZGVidWdnZXJTY29wZVN0cnVjdHVyZS5nZXQoKTsgfQogICAgIFN0cnVjdHVyZSog
d2l0aFNjb3BlU3RydWN0dXJlKCkgY29uc3QgeyByZXR1cm4gbV93aXRoU2NvcGVTdHJ1Y3R1cmUu
Z2V0KCk7IH0KQEAgLTQ3NSw3ICs0OTAsNyBAQCBjbGFzcyBKU0dsb2JhbE9iamVjdCA6IHB1Ymxp
YyBKU1NlZ21lbnRlZFZhcmlhYmxlT2JqZWN0IHsKICAgICBTdHJ1Y3R1cmUqIGl0ZXJhdG9yUmVz
dWx0U3RydWN0dXJlKCkgY29uc3QgeyByZXR1cm4gbV9pdGVyYXRvclJlc3VsdFN0cnVjdHVyZS5n
ZXQoKTsgfQogICAgIHN0YXRpYyBwdHJkaWZmX3QgaXRlcmF0b3JSZXN1bHRTdHJ1Y3R1cmVPZmZz
ZXQoKSB7IHJldHVybiBPQkpFQ1RfT0ZGU0VUT0YoSlNHbG9iYWxPYmplY3QsIG1faXRlcmF0b3JS
ZXN1bHRTdHJ1Y3R1cmUpOyB9CiAgICAgU3RydWN0dXJlKiByZWdFeHBNYXRjaGVzQXJyYXlTdHJ1
Y3R1cmUoKSBjb25zdCB7IHJldHVybiBtX3JlZ0V4cE1hdGNoZXNBcnJheVN0cnVjdHVyZS5nZXQo
KTsgfQotICAgIFN0cnVjdHVyZSogcHJvbWlzZVN0cnVjdHVyZSgpIGNvbnN0IHsgcmV0dXJuIG1f
cHJvbWlzZVN0cnVjdHVyZS5nZXQoKTsgfQorICAgIFN0cnVjdHVyZSogbW9kdWxlUmVjb3JkU3Ry
dWN0dXJlKCkgY29uc3QgeyByZXR1cm4gbV9tb2R1bGVSZWNvcmRTdHJ1Y3R1cmUuZ2V0KCk7IH0K
ICNpZiBFTkFCTEUoV0VCQVNTRU1CTFkpCiAgICAgU3RydWN0dXJlKiB3YXNtTW9kdWxlU3RydWN0
dXJlKCkgY29uc3QgeyByZXR1cm4gbV93YXNtTW9kdWxlU3RydWN0dXJlLmdldCgpOyB9CiAjZW5k
aWYKZGlmZiAtLWdpdCBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL0pTTW9kdWxlUmVj
b3JkLmNwcCBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL0pTTW9kdWxlUmVjb3JkLmNw
cApuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwLi43ZGUxODYwOTQwY2UxOWNlNTA4YzEyMDI4MmU5NDRmM2NhNDIwNWQ5Ci0t
LSAvZGV2L251bGwKKysrIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvSlNNb2R1bGVS
ZWNvcmQuY3BwCkBAIC0wLDAgKzEsMTEzIEBACisvKgorICogQ29weXJpZ2h0IChDKSAyMDE1IEFw
cGxlIEluYy4gQWxsIHJpZ2h0cyByZXNlcnZlZC4KKyAqCisgKiBSZWRpc3RyaWJ1dGlvbiBhbmQg
dXNlIGluIHNvdXJjZSBhbmQgYmluYXJ5IGZvcm1zLCB3aXRoIG9yIHdpdGhvdXQKKyAqIG1vZGlm
aWNhdGlvbiwgYXJlIHBlcm1pdHRlZCBwcm92aWRlZCB0aGF0IHRoZSBmb2xsb3dpbmcgY29uZGl0
aW9ucworICogYXJlIG1ldDoKKyAqIDEuIFJlZGlzdHJpYnV0aW9ucyBvZiBzb3VyY2UgY29kZSBt
dXN0IHJldGFpbiB0aGUgYWJvdmUgY29weXJpZ2h0CisgKiAgICBub3RpY2UsIHRoaXMgbGlzdCBv
ZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIuCisgKiAyLiBSZWRpc3Ry
aWJ1dGlvbnMgaW4gYmluYXJ5IGZvcm0gbXVzdCByZXByb2R1Y2UgdGhlIGFib3ZlIGNvcHlyaWdo
dAorICogICAgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2lu
ZyBkaXNjbGFpbWVyIGluIHRoZQorICogICAgZG9jdW1lbnRhdGlvbiBhbmQvb3Igb3RoZXIgbWF0
ZXJpYWxzIHByb3ZpZGVkIHdpdGggdGhlIGRpc3RyaWJ1dGlvbi4KKyAqCisgKiBUSElTIFNPRlRX
QVJFIElTIFBST1ZJREVEIEJZIEFQUExFIElOQy4gYGBBUyBJUycnIEFORCBBTlkKKyAqIEVYUFJF
U1MgT1IgSU1QTElFRCBXQVJSQU5USUVTLCBJTkNMVURJTkcsIEJVVCBOT1QgTElNSVRFRCBUTywg
VEhFCisgKiBJTVBMSUVEIFdBUlJBTlRJRVMgT0YgTUVSQ0hBTlRBQklMSVRZIEFORCBGSVRORVNT
IEZPUiBBIFBBUlRJQ1VMQVIKKyAqIFBVUlBPU0UgQVJFIERJU0NMQUlNRUQuICBJTiBOTyBFVkVO
VCBTSEFMTCBBUFBMRSBJTkMuIE9SCisgKiBDT05UUklCVVRPUlMgQkUgTElBQkxFIEZPUiBBTlkg
RElSRUNULCBJTkRJUkVDVCwgSU5DSURFTlRBTCwgU1BFQ0lBTCwKKyAqIEVYRU1QTEFSWSwgT1Ig
Q09OU0VRVUVOVElBTCBEQU1BR0VTIChJTkNMVURJTkcsIEJVVCBOT1QgTElNSVRFRCBUTywKKyAq
IFBST0NVUkVNRU5UIE9GIFNVQlNUSVRVVEUgR09PRFMgT1IgU0VSVklDRVM7IExPU1MgT0YgVVNF
LCBEQVRBLCBPUgorICogUFJPRklUUzsgT1IgQlVTSU5FU1MgSU5URVJSVVBUSU9OKSBIT1dFVkVS
IENBVVNFRCBBTkQgT04gQU5ZIFRIRU9SWQorICogT0YgTElBQklMSVRZLCBXSEVUSEVSIElOIENP
TlRSQUNULCBTVFJJQ1QgTElBQklMSVRZLCBPUiBUT1JUCisgKiAoSU5DTFVESU5HIE5FR0xJR0VO
Q0UgT1IgT1RIRVJXSVNFKSBBUklTSU5HIElOIEFOWSBXQVkgT1VUIE9GIFRIRSBVU0UKKyAqIE9G
IFRISVMgU09GVFdBUkUsIEVWRU4gSUYgQURWSVNFRCBPRiBUSEUgUE9TU0lCSUxJVFkgT0YgU1VD
SCBEQU1BR0UuIAorICovCisKKyNpbmNsdWRlICJjb25maWcuaCIKKyNpbmNsdWRlICJKU01vZHVs
ZVJlY29yZC5oIgorCisjaW5jbHVkZSAiSWRlbnRpZmllcklubGluZXMuaCIKKyNpbmNsdWRlICJK
U0NKU1ZhbHVlSW5saW5lcy5oIgorI2luY2x1ZGUgIkpTQ2VsbElubGluZXMuaCIKKyNpbmNsdWRl
ICJTdHJ1Y3R1cmVJbmxpbmVzLmgiCisKK25hbWVzcGFjZSBKU0MgeworCitjb25zdCBDbGFzc0lu
Zm8gSlNNb2R1bGVSZWNvcmQ6OnNfaW5mbyA9IHsgIk1vZHVsZVJlY29yZCIsICZCYXNlOjpzX2lu
Zm8sIDAsIENSRUFURV9NRVRIT0RfVEFCTEUoSlNNb2R1bGVSZWNvcmQpIH07CisKK3ZvaWQgSlNN
b2R1bGVSZWNvcmQ6OmRlc3Ryb3koSlNDZWxsKiBjZWxsKQoreworICAgIEpTTW9kdWxlUmVjb3Jk
KiB0aGlzT2JqZWN0ID0ganNDYXN0PEpTTW9kdWxlUmVjb3JkKj4oY2VsbCk7CisgICAgdGhpc09i
amVjdC0+SlNNb2R1bGVSZWNvcmQ6On5KU01vZHVsZVJlY29yZCgpOworfQorCisKK3ZvaWQgSlNN
b2R1bGVSZWNvcmQ6OmZpbmlzaENyZWF0aW9uKFZNJiB2bSkKK3sKKyAgICBCYXNlOjpmaW5pc2hD
cmVhdGlvbih2bSk7CisgICAgQVNTRVJUKGluaGVyaXRzKGluZm8oKSkpOworICAgIHB1dERpcmVj
dCh2bSwgSWRlbnRpZmllcjo6ZnJvbVN0cmluZygmdm0sIEFTQ0lJTGl0ZXJhbCgicmVnaXN0cnlF
bnRyeSIpKSwganNVbmRlZmluZWQoKSk7Cit9CisKK2F1dG8gSlNNb2R1bGVSZWNvcmQ6OkV4cG9y
dEVudHJ5OjpjcmVhdGVMb2NhbChjb25zdCBJZGVudGlmaWVyJiBleHBvcnROYW1lLCBjb25zdCBJ
ZGVudGlmaWVyJiBsb2NhbE5hbWUsIGNvbnN0IFZhcmlhYmxlRW52aXJvbm1lbnRFbnRyeSYgdmFy
aWFibGUpIC0+IEV4cG9ydEVudHJ5Cit7CisgICAgcmV0dXJuIEV4cG9ydEVudHJ5IHsgVHlwZTo6
TG9jYWwsIGV4cG9ydE5hbWUsIElkZW50aWZpZXIoKSwgSWRlbnRpZmllcigpLCBsb2NhbE5hbWUs
IHZhcmlhYmxlIH07Cit9CisKK2F1dG8gSlNNb2R1bGVSZWNvcmQ6OkV4cG9ydEVudHJ5OjpjcmVh
dGVOYW1lc3BhY2UoY29uc3QgSWRlbnRpZmllciYgZXhwb3J0TmFtZSwgY29uc3QgSWRlbnRpZmll
ciYgbW9kdWxlTmFtZSkgLT4gRXhwb3J0RW50cnkKK3sKKyAgICByZXR1cm4gRXhwb3J0RW50cnkg
eyBUeXBlOjpOYW1lc3BhY2UsIGV4cG9ydE5hbWUsIG1vZHVsZU5hbWUsIElkZW50aWZpZXIoKSwg
SWRlbnRpZmllcigpLCBWYXJpYWJsZUVudmlyb25tZW50RW50cnkoKSB9OworfQorCithdXRvIEpT
TW9kdWxlUmVjb3JkOjpFeHBvcnRFbnRyeTo6Y3JlYXRlSW5kaXJlY3QoY29uc3QgSWRlbnRpZmll
ciYgZXhwb3J0TmFtZSwgY29uc3QgSWRlbnRpZmllciYgaW1wb3J0TmFtZSwgY29uc3QgSWRlbnRp
ZmllciYgbW9kdWxlTmFtZSkgLT4gRXhwb3J0RW50cnkKK3sKKyAgICByZXR1cm4gRXhwb3J0RW50
cnkgeyBUeXBlOjpJbmRpcmVjdCwgZXhwb3J0TmFtZSwgbW9kdWxlTmFtZSwgaW1wb3J0TmFtZSwg
SWRlbnRpZmllcigpLCBWYXJpYWJsZUVudmlyb25tZW50RW50cnkoKSB9OworfQorCitzdGF0aWMg
U3RyaW5nIHByaW50YWJsZU5hbWUoY29uc3QgUmVmUHRyPFVuaXF1ZWRTdHJpbmdJbXBsPiYgdWlk
KQoreworICAgIGlmICh1aWQtPmlzU3ltYm9sKCkpCisgICAgICAgIHJldHVybiB1aWQuZ2V0KCk7
CisgICAgcmV0dXJuIFdURjo6bWFrZVN0cmluZygiJyIsIFN0cmluZyh1aWQuZ2V0KCkpLCAiJyIp
OworfQorCitzdGF0aWMgU3RyaW5nIHByaW50YWJsZU5hbWUoY29uc3QgSWRlbnRpZmllciYgaWRl
bnQpCit7CisgICAgcmV0dXJuIHByaW50YWJsZU5hbWUoaWRlbnQuaW1wbCgpKTsKK30KKworCit2
b2lkIEpTTW9kdWxlUmVjb3JkOjpkdW1wKCkKK3sKKyAgICBkYXRhTG9nKCJcbkFuYWx5emluZyBN
b2R1bGVSZWNvcmRcbiIpOworCisgICAgZGF0YUxvZygiICAgIERlcGVuZGVuY2llczogIiwgbV9y
ZXF1ZXN0ZWRNb2R1bGVzLnNpemUoKSwgIiBtb2R1bGVzXG4iKTsKKyAgICBmb3IgKGNvbnN0IGF1
dG8mIG1vZHVsZU5hbWUgOiBtX3JlcXVlc3RlZE1vZHVsZXMpCisgICAgICAgIGRhdGFMb2coIiAg
ICAgIG1vZHVsZSgiLCBwcmludGFibGVOYW1lKG1vZHVsZU5hbWUpLCAiKVxuIik7CisKKyAgICBk
YXRhTG9nKCIgICAgSW1wb3J0OiAiLCBtX2ltcG9ydEVudHJpZXMuc2l6ZSgpLCAiIGVudHJpZXNc
biIpOworICAgIGZvciAoY29uc3QgYXV0byYgcGFpciA6IG1faW1wb3J0RW50cmllcykKKyAgICAg
ICAgZGF0YUxvZygiICAgICAgaW1wb3J0KCIsIHByaW50YWJsZU5hbWUocGFpci52YWx1ZS5pbXBv
cnROYW1lKSwgIiksIGxvY2FsKCIsIHByaW50YWJsZU5hbWUocGFpci52YWx1ZS5sb2NhbE5hbWUp
LCAiKSwgbW9kdWxlKCIsIHByaW50YWJsZU5hbWUocGFpci52YWx1ZS5tb2R1bGVSZXF1ZXN0KSwg
IilcbiIpOworCisgICAgZGF0YUxvZygiICAgIEV4cG9ydDogIiwgbV9leHBvcnRFbnRyaWVzLnNp
emUoKSwgIiBlbnRyaWVzXG4iKTsKKyAgICBmb3IgKGNvbnN0IGF1dG8mIHBhaXIgOiBtX2V4cG9y
dEVudHJpZXMpIHsKKyAgICAgICAgY29uc3QgRXhwb3J0RW50cnkmIGVudHJ5ID0gcGFpci52YWx1
ZTsKKyAgICAgICAgc3dpdGNoIChlbnRyeS50eXBlKSB7CisgICAgICAgIGNhc2UgRXhwb3J0RW50
cnk6OlR5cGU6OkxvY2FsOgorICAgICAgICAgICAgZGF0YUxvZygiICAgICAgW0xvY2FsXSAiLCAi
ZXhwb3J0KCIsIHByaW50YWJsZU5hbWUoZW50cnkuZXhwb3J0TmFtZSksICIpLCBsb2NhbCgiLCBw
cmludGFibGVOYW1lKGVudHJ5LmxvY2FsTmFtZSksICIpXG4iKTsKKyAgICAgICAgICAgIGJyZWFr
OworCisgICAgICAgIGNhc2UgRXhwb3J0RW50cnk6OlR5cGU6Ok5hbWVzcGFjZToKKyAgICAgICAg
ICAgIGRhdGFMb2coIiAgICAgIFtOYW1lc3BhY2VdICIsICJleHBvcnQoIiwgcHJpbnRhYmxlTmFt
ZShlbnRyeS5leHBvcnROYW1lKSwgIiksIG1vZHVsZSgiLCBwcmludGFibGVOYW1lKGVudHJ5Lm1v
ZHVsZU5hbWUpLCAiKVxuIik7CisgICAgICAgICAgICBicmVhazsKKworICAgICAgICBjYXNlIEV4
cG9ydEVudHJ5OjpUeXBlOjpJbmRpcmVjdDoKKyAgICAgICAgICAgIGRhdGFMb2coIiAgICAgIFtJ
bmRpcmVjdF0gIiwgImV4cG9ydCgiLCBwcmludGFibGVOYW1lKGVudHJ5LmV4cG9ydE5hbWUpLCAi
KSwgaW1wb3J0KCIsIHByaW50YWJsZU5hbWUoZW50cnkuaW1wb3J0TmFtZSksICIpLCBtb2R1bGUo
IiwgcHJpbnRhYmxlTmFtZShlbnRyeS5tb2R1bGVOYW1lKSwgIilcbiIpOworICAgICAgICAgICAg
YnJlYWs7CisgICAgICAgIH0KKyAgICB9CisgICAgZm9yIChjb25zdCBhdXRvJiBtb2R1bGVOYW1l
IDogbV9zdGFyRXhwb3J0RW50cmllcykKKyAgICAgICAgZGF0YUxvZygiICAgICAgW1N0YXJdIG1v
ZHVsZSgiLCBwcmludGFibGVOYW1lKG1vZHVsZU5hbWUuZ2V0KCkpLCAiKVxuIik7Cit9CisKK30g
Ly8gbmFtZXNwYWNlIEpTQwpkaWZmIC0tZ2l0IGEvU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRp
bWUvSlNNb2R1bGVSZWNvcmQuaCBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL0pTTW9k
dWxlUmVjb3JkLmgKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMC4uOTZlMmZkZjQ1MGU1ZGI4NzI5YzVmY2M1NWZiNzhkMmM0
ZjZjOTc4MQotLS0gL2Rldi9udWxsCisrKyBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1l
L0pTTW9kdWxlUmVjb3JkLmgKQEAgLTAsMCArMSwxNTcgQEAKKy8qCisgKiBDb3B5cmlnaHQgKEMp
IDIwMTUgQXBwbGUgSW5jLiBBbGwgcmlnaHRzIHJlc2VydmVkLgorICoKKyAqIFJlZGlzdHJpYnV0
aW9uIGFuZCB1c2UgaW4gc291cmNlIGFuZCBiaW5hcnkgZm9ybXMsIHdpdGggb3Igd2l0aG91dAor
ICogbW9kaWZpY2F0aW9uLCBhcmUgcGVybWl0dGVkIHByb3ZpZGVkIHRoYXQgdGhlIGZvbGxvd2lu
ZyBjb25kaXRpb25zCisgKiBhcmUgbWV0OgorICogMS4gUmVkaXN0cmlidXRpb25zIG9mIHNvdXJj
ZSBjb2RlIG11c3QgcmV0YWluIHRoZSBhYm92ZSBjb3B5cmlnaHQKKyAqICAgIG5vdGljZSwgdGhp
cyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lci4KKyAqIDIu
IFJlZGlzdHJpYnV0aW9ucyBpbiBiaW5hcnkgZm9ybSBtdXN0IHJlcHJvZHVjZSB0aGUgYWJvdmUg
Y29weXJpZ2h0CisgKiAgICBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUg
Zm9sbG93aW5nIGRpc2NsYWltZXIgaW4gdGhlCisgKiAgICBkb2N1bWVudGF0aW9uIGFuZC9vciBv
dGhlciBtYXRlcmlhbHMgcHJvdmlkZWQgd2l0aCB0aGUgZGlzdHJpYnV0aW9uLgorICoKKyAqIFRI
SVMgU09GVFdBUkUgSVMgUFJPVklERUQgQlkgQVBQTEUgSU5DLiBgYEFTIElTJycgQU5EIEFOWQor
ICogRVhQUkVTUyBPUiBJTVBMSUVEIFdBUlJBTlRJRVMsIElOQ0xVRElORywgQlVUIE5PVCBMSU1J
VEVEIFRPLCBUSEUKKyAqIElNUExJRUQgV0FSUkFOVElFUyBPRiBNRVJDSEFOVEFCSUxJVFkgQU5E
IEZJVE5FU1MgRk9SIEEgUEFSVElDVUxBUgorICogUFVSUE9TRSBBUkUgRElTQ0xBSU1FRC4gIElO
IE5PIEVWRU5UIFNIQUxMIEFQUExFIElOQy4gT1IKKyAqIENPTlRSSUJVVE9SUyBCRSBMSUFCTEUg
Rk9SIEFOWSBESVJFQ1QsIElORElSRUNULCBJTkNJREVOVEFMLCBTUEVDSUFMLAorICogRVhFTVBM
QVJZLCBPUiBDT05TRVFVRU5USUFMIERBTUFHRVMgKElOQ0xVRElORywgQlVUIE5PVCBMSU1JVEVE
IFRPLAorICogUFJPQ1VSRU1FTlQgT0YgU1VCU1RJVFVURSBHT09EUyBPUiBTRVJWSUNFUzsgTE9T
UyBPRiBVU0UsIERBVEEsIE9SCisgKiBQUk9GSVRTOyBPUiBCVVNJTkVTUyBJTlRFUlJVUFRJT04p
IEhPV0VWRVIgQ0FVU0VEIEFORCBPTiBBTlkgVEhFT1JZCisgKiBPRiBMSUFCSUxJVFksIFdIRVRI
RVIgSU4gQ09OVFJBQ1QsIFNUUklDVCBMSUFCSUxJVFksIE9SIFRPUlQKKyAqIChJTkNMVURJTkcg
TkVHTElHRU5DRSBPUiBPVEhFUldJU0UpIEFSSVNJTkcgSU4gQU5ZIFdBWSBPVVQgT0YgVEhFIFVT
RQorICogT0YgVEhJUyBTT0ZUV0FSRSwgRVZFTiBJRiBBRFZJU0VEIE9GIFRIRSBQT1NTSUJJTElU
WSBPRiBTVUNIIERBTUFHRS4KKyAqLworCisjaWZuZGVmIEpTTW9kdWxlUmVjb3JkX2gKKyNkZWZp
bmUgSlNNb2R1bGVSZWNvcmRfaAorCisjaW5jbHVkZSAiSWRlbnRpZmllci5oIgorI2luY2x1ZGUg
IkpTRGVzdHJ1Y3RpYmxlT2JqZWN0LmgiCisjaW5jbHVkZSAiVmFyaWFibGVFbnZpcm9ubWVudC5o
IgorI2luY2x1ZGUgPHd0Zi9IYXNoTWFwLmg+CisjaW5jbHVkZSA8d3RmL0xpc3RIYXNoU2V0Lmg+
CisKK25hbWVzcGFjZSBKU0MgeworCisvLyBCYXNlZCBvbiB0aGUgU291cmNlIFRleHQgTW9kdWxl
IFJlY29yZAorLy8gaHR0cDovL3d3dy5lY21hLWludGVybmF0aW9uYWwub3JnL2VjbWEtMjYyLzYu
MC8jc2VjLXNvdXJjZS10ZXh0LW1vZHVsZS1yZWNvcmRzCitjbGFzcyBKU01vZHVsZVJlY29yZCA6
IHB1YmxpYyBKU0Rlc3RydWN0aWJsZU9iamVjdCB7CitwdWJsaWM6CisgICAgdHlwZWRlZiBKU0Rl
c3RydWN0aWJsZU9iamVjdCBCYXNlOworCisgICAgc3RydWN0IEV4cG9ydEVudHJ5IHsKKyAgICAg
ICAgZW51bSBjbGFzcyBUeXBlIHsKKyAgICAgICAgICAgIExvY2FsLAorICAgICAgICAgICAgTmFt
ZXNwYWNlLAorICAgICAgICAgICAgSW5kaXJlY3QKKyAgICAgICAgfTsKKworICAgICAgICBzdGF0
aWMgRXhwb3J0RW50cnkgY3JlYXRlTG9jYWwoY29uc3QgSWRlbnRpZmllciYgZXhwb3J0TmFtZSwg
Y29uc3QgSWRlbnRpZmllciYgbG9jYWxOYW1lLCBjb25zdCBWYXJpYWJsZUVudmlyb25tZW50RW50
cnkmKTsKKyAgICAgICAgc3RhdGljIEV4cG9ydEVudHJ5IGNyZWF0ZU5hbWVzcGFjZShjb25zdCBJ
ZGVudGlmaWVyJiBleHBvcnROYW1lLCBjb25zdCBJZGVudGlmaWVyJiBtb2R1bGVOYW1lKTsKKyAg
ICAgICAgc3RhdGljIEV4cG9ydEVudHJ5IGNyZWF0ZUluZGlyZWN0KGNvbnN0IElkZW50aWZpZXIm
IGV4cG9ydE5hbWUsIGNvbnN0IElkZW50aWZpZXImIGltcG9ydE5hbWUsIGNvbnN0IElkZW50aWZp
ZXImIG1vZHVsZU5hbWUpOworCisgICAgICAgIFR5cGUgdHlwZTsKKyAgICAgICAgSWRlbnRpZmll
ciBleHBvcnROYW1lOworICAgICAgICBJZGVudGlmaWVyIG1vZHVsZU5hbWU7CisgICAgICAgIElk
ZW50aWZpZXIgaW1wb3J0TmFtZTsKKyAgICAgICAgSWRlbnRpZmllciBsb2NhbE5hbWU7CisgICAg
ICAgIFZhcmlhYmxlRW52aXJvbm1lbnRFbnRyeSB2YXJpYWJsZTsKKyAgICB9OworCisgICAgc3Ry
dWN0IEltcG9ydEVudHJ5IHsKKyAgICAgICAgSWRlbnRpZmllciBtb2R1bGVSZXF1ZXN0OworICAg
ICAgICBJZGVudGlmaWVyIGltcG9ydE5hbWU7CisgICAgICAgIElkZW50aWZpZXIgbG9jYWxOYW1l
OworCisgICAgICAgIGJvb2wgaXNOYW1lc3BhY2UoVk0mIHZtKSBjb25zdAorICAgICAgICB7Cisg
ICAgICAgICAgICByZXR1cm4gaW1wb3J0TmFtZSA9PSB2bS5wcm9wZXJ0eU5hbWVzLT50aW1lc0lk
ZW50aWZpZXI7CisgICAgICAgIH0KKyAgICB9OworCisgICAgdHlwZWRlZiBXVEY6Okxpc3RIYXNo
U2V0PFJlZlB0cjxVbmlxdWVkU3RyaW5nSW1wbD4sIElkZW50aWZpZXJSZXBIYXNoPiBPcmRlcmVk
SWRlbnRpZmllclNldDsKKyAgICB0eXBlZGVmIEhhc2hNYXA8UmVmUHRyPFVuaXF1ZWRTdHJpbmdJ
bXBsPiwgSW1wb3J0RW50cnksIElkZW50aWZpZXJSZXBIYXNoLCBIYXNoVHJhaXRzPFJlZlB0cjxV
bmlxdWVkU3RyaW5nSW1wbD4+PiBJbXBvcnRNYXA7CisgICAgdHlwZWRlZiBIYXNoTWFwPFJlZlB0
cjxVbmlxdWVkU3RyaW5nSW1wbD4sIEV4cG9ydEVudHJ5LCBJZGVudGlmaWVyUmVwSGFzaCwgSGFz
aFRyYWl0czxSZWZQdHI8VW5pcXVlZFN0cmluZ0ltcGw+Pj4gRXhwb3J0TWFwOworCisgICAgREVD
TEFSRV9FWFBPUlRfSU5GTzsKKworICAgIHN0YXRpYyBTdHJ1Y3R1cmUqIGNyZWF0ZVN0cnVjdHVy
ZShWTSYgdm0sIEpTR2xvYmFsT2JqZWN0KiBnbG9iYWxPYmplY3QsIEpTVmFsdWUgcHJvdG90eXBl
KQorICAgIHsKKyAgICAgICAgcmV0dXJuIFN0cnVjdHVyZTo6Y3JlYXRlKHZtLCBnbG9iYWxPYmpl
Y3QsIHByb3RvdHlwZSwgVHlwZUluZm8oT2JqZWN0VHlwZSwgU3RydWN0dXJlRmxhZ3MpLCBpbmZv
KCkpOworICAgIH0KKworICAgIHN0YXRpYyBKU01vZHVsZVJlY29yZCogY3JlYXRlKFZNJiB2bSwg
U3RydWN0dXJlKiBzdHJ1Y3R1cmUpCisgICAgeworICAgICAgICBKU01vZHVsZVJlY29yZCogaW5z
dGFuY2UgPSBuZXcgKE5vdE51bGwsIGFsbG9jYXRlQ2VsbDxKU01vZHVsZVJlY29yZD4odm0uaGVh
cCkpIEpTTW9kdWxlUmVjb3JkKHZtLCBzdHJ1Y3R1cmUpOworICAgICAgICBpbnN0YW5jZS0+Zmlu
aXNoQ3JlYXRpb24odm0pOworICAgICAgICByZXR1cm4gaW5zdGFuY2U7CisgICAgfQorCisgICAg
c3RhdGljIEpTTW9kdWxlUmVjb3JkKiBjcmVhdGUoRXhlY1N0YXRlKiBleGVjLCBTdHJ1Y3R1cmUq
IHN0cnVjdHVyZSkKKyAgICB7CisgICAgICAgIHJldHVybiBjcmVhdGUoZXhlYy0+dm0oKSwgc3Ry
dWN0dXJlKTsKKyAgICB9CisKKyAgICB2b2lkIGFwcGVuZFJlcXVlc3RlZE1vZHVsZShjb25zdCBJ
ZGVudGlmaWVyJik7CisgICAgdm9pZCBhZGRTdGFyRXhwb3J0RW50cnkoY29uc3QgSWRlbnRpZmll
ciYpOworICAgIHZvaWQgYWRkSW1wb3J0RW50cnkoY29uc3QgSW1wb3J0RW50cnkmKTsKKyAgICB2
b2lkIGFkZEV4cG9ydEVudHJ5KGNvbnN0IEV4cG9ydEVudHJ5Jik7CisKKyAgICBjb25zdCBJbXBv
cnRFbnRyeSYgbG9va1VwSW1wb3J0RW50cnkoY29uc3QgUmVmUHRyPFVuaXF1ZWRTdHJpbmdJbXBs
PiYgbG9jYWxOYW1lKTsKKworICAgIGNvbnN0IE9yZGVyZWRJZGVudGlmaWVyU2V0JiByZXF1ZXN0
ZWRNb2R1bGVzKCkgY29uc3QgeyByZXR1cm4gbV9yZXF1ZXN0ZWRNb2R1bGVzOyB9CisKKyAgICB2
b2lkIGR1bXAoKTsKKworcHJpdmF0ZToKKyAgICBKU01vZHVsZVJlY29yZChWTSYgdm0sIFN0cnVj
dHVyZSogc3RydWN0dXJlKQorICAgICAgICA6IEJhc2Uodm0sIHN0cnVjdHVyZSkKKyAgICB7Cisg
ICAgfQorCisgICAgdm9pZCBmaW5pc2hDcmVhdGlvbihWTSYpOworCisgICAgc3RhdGljIHZvaWQg
ZGVzdHJveShKU0NlbGwqKTsKKworICAgIC8vIE1hcCBsb2NhbE5hbWUgLT4gSW1wb3J0RW50cnku
CisgICAgSW1wb3J0TWFwIG1faW1wb3J0RW50cmllczsKKworICAgIC8vIE1hcCBleHBvcnROYW1l
IC0+IEV4cG9ydEVudHJ5LgorICAgIEV4cG9ydE1hcCBtX2V4cG9ydEVudHJpZXM7CisKKyAgICBJ
ZGVudGlmaWVyU2V0IG1fc3RhckV4cG9ydEVudHJpZXM7CisKKyAgICAvLyBTYXZlIHRoZSBvY2N1
cnJlbmNlIG9yZGVyIHNpbmNlIHRoZSBtb2R1bGUgbG9hZGVyIGxvYWRzIGFuZCBydW5zIHRoZSBt
b2R1bGVzIGluIHRoaXMgb3JkZXIuCisgICAgLy8gaHR0cDovL3d3dy5lY21hLWludGVybmF0aW9u
YWwub3JnL2VjbWEtMjYyLzYuMC8jc2VjLW1vZHVsZWV2YWx1YXRpb24KKyAgICBPcmRlcmVkSWRl
bnRpZmllclNldCBtX3JlcXVlc3RlZE1vZHVsZXM7Cit9OworCitpbmxpbmUgdm9pZCBKU01vZHVs
ZVJlY29yZDo6YXBwZW5kUmVxdWVzdGVkTW9kdWxlKGNvbnN0IElkZW50aWZpZXImIG1vZHVsZU5h
bWUpCit7CisgICAgbV9yZXF1ZXN0ZWRNb2R1bGVzLmFkZChtb2R1bGVOYW1lLmltcGwoKSk7Cit9
CisKK2lubGluZSB2b2lkIEpTTW9kdWxlUmVjb3JkOjphZGRJbXBvcnRFbnRyeShjb25zdCBJbXBv
cnRFbnRyeSYgZW50cnkpCit7CisgICAgbV9pbXBvcnRFbnRyaWVzLmFkZChlbnRyeS5sb2NhbE5h
bWUuaW1wbCgpLCBlbnRyeSk7Cit9CisKK2lubGluZSB2b2lkIEpTTW9kdWxlUmVjb3JkOjphZGRF
eHBvcnRFbnRyeShjb25zdCBFeHBvcnRFbnRyeSYgZW50cnkpCit7CisgICAgbV9leHBvcnRFbnRy
aWVzLmFkZChlbnRyeS5leHBvcnROYW1lLmltcGwoKSwgZW50cnkpOworfQorCitpbmxpbmUgdm9p
ZCBKU01vZHVsZVJlY29yZDo6YWRkU3RhckV4cG9ydEVudHJ5KGNvbnN0IElkZW50aWZpZXImIG1v
ZHVsZU5hbWUpCit7CisgICAgbV9zdGFyRXhwb3J0RW50cmllcy5hZGQobW9kdWxlTmFtZS5pbXBs
KCkpOworfQorCitpbmxpbmUgYXV0byBKU01vZHVsZVJlY29yZDo6bG9va1VwSW1wb3J0RW50cnko
Y29uc3QgUmVmUHRyPFVuaXF1ZWRTdHJpbmdJbXBsPiYgbG9jYWxOYW1lKSAtPiBjb25zdCBJbXBv
cnRFbnRyeSYKK3sKKyAgICByZXR1cm4gKCptX2ltcG9ydEVudHJpZXMuZmluZChsb2NhbE5hbWUp
KS52YWx1ZTsKK30KKworfSAvLyBuYW1lc3BhY2UgSlNDCisKKyNlbmRpZiAvLyBKU01vZHVsZVJl
Y29yZF9oCmRpZmYgLS1naXQgYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9KU1Byb21p
c2VDb25zdHJ1Y3Rvci5jcHAgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9KU1Byb21p
c2VDb25zdHJ1Y3Rvci5jcHAKaW5kZXggNDRlMWU3M2NhYmE1NWIwYmY1NDA5MmVjNTg0ZmU2NTdl
NTQ2MWFlNS4uMjQzYmM1MjdjNDZmZmQ1ZWRhZDM2NGQ1MjAwZmY4ZWY5NDZjMmQ4NSAxMDA2NDQK
LS0tIGEvU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvSlNQcm9taXNlQ29uc3RydWN0b3Iu
Y3BwCisrKyBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL0pTUHJvbWlzZUNvbnN0cnVj
dG9yLmNwcApAQCAtMjYsNiArMjYsNyBAQAogI2luY2x1ZGUgImNvbmZpZy5oIgogI2luY2x1ZGUg
IkpTUHJvbWlzZUNvbnN0cnVjdG9yLmgiCiAKKyNpbmNsdWRlICJCdWlsdGluTmFtZXMuaCIKICNp
bmNsdWRlICJFcnJvci5oIgogI2luY2x1ZGUgIkV4Y2VwdGlvbi5oIgogI2luY2x1ZGUgIkl0ZXJh
dG9yT3BlcmF0aW9ucy5oIgpAQCAtODEsNiArODIsNyBAQCB2b2lkIEpTUHJvbWlzZUNvbnN0cnVj
dG9yOjpmaW5pc2hDcmVhdGlvbihWTSYgdm0sIEpTUHJvbWlzZVByb3RvdHlwZSogcHJvbWlzZVBy
bwogICAgIEJhc2U6OmZpbmlzaENyZWF0aW9uKHZtLCBBU0NJSUxpdGVyYWwoIlByb21pc2UiKSk7
CiAgICAgcHV0RGlyZWN0V2l0aG91dFRyYW5zaXRpb24odm0sIHZtLnByb3BlcnR5TmFtZXMtPnBy
b3RvdHlwZSwgcHJvbWlzZVByb3RvdHlwZSwgRG9udEVudW0gfCBEb250RGVsZXRlIHwgUmVhZE9u
bHkpOwogICAgIHB1dERpcmVjdFdpdGhvdXRUcmFuc2l0aW9uKHZtLCB2bS5wcm9wZXJ0eU5hbWVz
LT5sZW5ndGgsIGpzTnVtYmVyKDEpLCBSZWFkT25seSB8IERvbnRFbnVtIHwgRG9udERlbGV0ZSk7
CisgICAgcHV0RGlyZWN0QnVpbHRpbkZ1bmN0aW9uV2l0aG91dFRyYW5zaXRpb24odm0sIGdsb2Jh
bE9iamVjdCgpLCB2bS5wcm9wZXJ0eU5hbWVzLT5idWlsdGluTmFtZXMoKS5hbGxQcml2YXRlTmFt
ZSgpLCBwcm9taXNlQ29uc3RydWN0b3JQcml2YXRlQWxsQ29kZUdlbmVyYXRvcih2bSksIFJlYWRP
bmx5IHwgRG9udEVudW0gfCBEb250RGVsZXRlKTsKIH0KIAogc3RhdGljIEVuY29kZWRKU1ZhbHVl
IEpTQ19IT1NUX0NBTEwgY29uc3RydWN0UHJvbWlzZShFeGVjU3RhdGUqIGV4ZWMpCmRpZmYgLS1n
aXQgYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9KU1Byb21pc2VEZWZlcnJlZC5jcHAg
Yi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9KU1Byb21pc2VEZWZlcnJlZC5jcHAKaW5k
ZXggNmYzNTQzMjM1YmQ4YTA5Mzg0MThmZjdhZmZjZGQwMmIxMzU4NDc0Ny4uMDAwYjY0NjJkZmM3
YWFkNDIwODRlMmM5NmZlMzJlNzgwN2M3MDJkZSAxMDA2NDQKLS0tIGEvU291cmNlL0phdmFTY3Jp
cHRDb3JlL3J1bnRpbWUvSlNQcm9taXNlRGVmZXJyZWQuY3BwCisrKyBiL1NvdXJjZS9KYXZhU2Ny
aXB0Q29yZS9ydW50aW1lL0pTUHJvbWlzZURlZmVycmVkLmNwcApAQCAtNzIsNiArNzIsMjggQEAg
SlNQcm9taXNlRGVmZXJyZWQ6OkpTUHJvbWlzZURlZmVycmVkKFZNJiB2bSkKIHsKIH0KIAorc3Rh
dGljIHZvaWQgY2FsbEZ1bmN0aW9uKEV4ZWNTdGF0ZSogZXhlYywgSlNWYWx1ZSBmdW5jdGlvbiwg
SlNWYWx1ZSB2YWx1ZSkKK3sKKyAgICBDYWxsRGF0YSBjYWxsRGF0YTsKKyAgICBDYWxsVHlwZSBj
YWxsVHlwZSA9IGdldENhbGxEYXRhKGZ1bmN0aW9uLCBjYWxsRGF0YSk7CisgICAgQVNTRVJUKGNh
bGxUeXBlICE9IENhbGxUeXBlTm9uZSk7CisKKyAgICBNYXJrZWRBcmd1bWVudEJ1ZmZlciBhcmd1
bWVudHM7CisgICAgYXJndW1lbnRzLmFwcGVuZCh2YWx1ZSk7CisKKyAgICBjYWxsKGV4ZWMsIGZ1
bmN0aW9uLCBjYWxsVHlwZSwgY2FsbERhdGEsIGpzVW5kZWZpbmVkKCksIGFyZ3VtZW50cyk7Cit9
CisKK3ZvaWQgSlNQcm9taXNlRGVmZXJyZWQ6OnJlc29sdmUoRXhlY1N0YXRlKiBleGVjLCBKU1Zh
bHVlIHZhbHVlKQoreworICAgIGNhbGxGdW5jdGlvbihleGVjLCBtX3Jlc29sdmUuZ2V0KCksIHZh
bHVlKTsKK30KKwordm9pZCBKU1Byb21pc2VEZWZlcnJlZDo6cmVqZWN0KEV4ZWNTdGF0ZSogZXhl
YywgSlNWYWx1ZSByZWFzb24pCit7CisgICAgY2FsbEZ1bmN0aW9uKGV4ZWMsIG1fcmVqZWN0Lmdl
dCgpLCByZWFzb24pOworfQorCiB2b2lkIEpTUHJvbWlzZURlZmVycmVkOjpmaW5pc2hDcmVhdGlv
bihWTSYgdm0sIEpTT2JqZWN0KiBwcm9taXNlLCBKU1ZhbHVlIHJlc29sdmUsIEpTVmFsdWUgcmVq
ZWN0KQogewogICAgIEJhc2U6OmZpbmlzaENyZWF0aW9uKHZtKTsKZGlmZiAtLWdpdCBhL1NvdXJj
ZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL0pTUHJvbWlzZURlZmVycmVkLmggYi9Tb3VyY2UvSmF2
YVNjcmlwdENvcmUvcnVudGltZS9KU1Byb21pc2VEZWZlcnJlZC5oCmluZGV4IGRlYTBkMTdmOWI0
MmNlYzY3YWNjODIzNTUwNjU5NWRiNTFlOTQxMDcuLjRhMGI0Yjg1NjhhNDdiZGQ5ZmUyYzM4Zjg1
MDQ3NmYyZGI5MWRhMjcgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1l
L0pTUHJvbWlzZURlZmVycmVkLmgKKysrIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUv
SlNQcm9taXNlRGVmZXJyZWQuaApAQCAtNTAsNiArNTAsOSBAQCBjbGFzcyBKU1Byb21pc2VEZWZl
cnJlZCBmaW5hbCA6IHB1YmxpYyBKU0NlbGwgewogICAgIEpTVmFsdWUgcmVzb2x2ZSgpIGNvbnN0
IHsgcmV0dXJuIG1fcmVzb2x2ZS5nZXQoKTsgfQogICAgIEpTVmFsdWUgcmVqZWN0KCkgY29uc3Qg
eyByZXR1cm4gbV9yZWplY3QuZ2V0KCk7IH0KIAorICAgIEpTX0VYUE9SVF9QUklWQVRFIHZvaWQg
cmVzb2x2ZShFeGVjU3RhdGUqLCBKU1ZhbHVlKTsKKyAgICBKU19FWFBPUlRfUFJJVkFURSB2b2lk
IHJlamVjdChFeGVjU3RhdGUqLCBKU1ZhbHVlKTsKKwogcHJpdmF0ZToKICAgICBKU1Byb21pc2VE
ZWZlcnJlZChWTSYpOwogICAgIHZvaWQgZmluaXNoQ3JlYXRpb24oVk0mLCBKU09iamVjdCosIEpT
VmFsdWUsIEpTVmFsdWUpOwpkaWZmIC0tZ2l0IGEvU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRp
bWUvSlNQcm9taXNlUHJvdG90eXBlLmNwcCBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1l
L0pTUHJvbWlzZVByb3RvdHlwZS5jcHAKaW5kZXggYTBmMTAyNDMyMGMxNGJiMzY0ZTgxMDM0Mzkz
NWFkNzkzYTdkYTQ4Ni4uMDI2ODM3MzQ4MDc1ZGEzZTQ3ODdiNGEyZGY0Y2VlZWM1MWNhNjE5ZCAx
MDA2NDQKLS0tIGEvU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvSlNQcm9taXNlUHJvdG90
eXBlLmNwcAorKysgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9KU1Byb21pc2VQcm90
b3R5cGUuY3BwCkBAIC0yNiw2ICsyNiw3IEBACiAjaW5jbHVkZSAiY29uZmlnLmgiCiAjaW5jbHVk
ZSAiSlNQcm9taXNlUHJvdG90eXBlLmgiCiAKKyNpbmNsdWRlICJCdWlsdGluTmFtZXMuaCIKICNp
bmNsdWRlICJFcnJvci5oIgogI2luY2x1ZGUgIkpTQ0J1aWx0aW5zLmgiCiAjaW5jbHVkZSAiSlND
SlNWYWx1ZUlubGluZXMuaCIKQEAgLTU0LDEwICs1NSw5IEBAIGNvbnN0IENsYXNzSW5mbyBKU1By
b21pc2VQcm90b3R5cGU6OnNfaW5mbyA9IHsgIlByb21pc2VQcm90b3R5cGUiLCAmSlNOb25GaW5h
bE9iCiBAZW5kCiAqLwogCi1KU1Byb21pc2VQcm90b3R5cGUqIEpTUHJvbWlzZVByb3RvdHlwZTo6
Y3JlYXRlKEV4ZWNTdGF0ZSogZXhlYywgSlNHbG9iYWxPYmplY3QqLCBTdHJ1Y3R1cmUqIHN0cnVj
dHVyZSkKK0pTUHJvbWlzZVByb3RvdHlwZSogSlNQcm9taXNlUHJvdG90eXBlOjpjcmVhdGUoVk0m
IHZtLCBKU0dsb2JhbE9iamVjdCosIFN0cnVjdHVyZSogc3RydWN0dXJlKQogewotICAgIFZNJiB2
bSA9IGV4ZWMtPnZtKCk7Ci0gICAgSlNQcm9taXNlUHJvdG90eXBlKiBvYmplY3QgPSBuZXcgKE5v
dE51bGwsIGFsbG9jYXRlQ2VsbDxKU1Byb21pc2VQcm90b3R5cGU+KHZtLmhlYXApKSBKU1Byb21p
c2VQcm90b3R5cGUoZXhlYywgc3RydWN0dXJlKTsKKyAgICBKU1Byb21pc2VQcm90b3R5cGUqIG9i
amVjdCA9IG5ldyAoTm90TnVsbCwgYWxsb2NhdGVDZWxsPEpTUHJvbWlzZVByb3RvdHlwZT4odm0u
aGVhcCkpIEpTUHJvbWlzZVByb3RvdHlwZSh2bSwgc3RydWN0dXJlKTsKICAgICBvYmplY3QtPmZp
bmlzaENyZWF0aW9uKHZtLCBzdHJ1Y3R1cmUpOwogICAgIHJldHVybiBvYmplY3Q7CiB9CkBAIC02
NywxNCArNjcsMTUgQEAgU3RydWN0dXJlKiBKU1Byb21pc2VQcm90b3R5cGU6OmNyZWF0ZVN0cnVj
dHVyZShWTSYgdm0sIEpTR2xvYmFsT2JqZWN0KiBnbG9iYWxPYmoKICAgICByZXR1cm4gU3RydWN0
dXJlOjpjcmVhdGUodm0sIGdsb2JhbE9iamVjdCwgcHJvdG90eXBlLCBUeXBlSW5mbyhPYmplY3RU
eXBlLCBTdHJ1Y3R1cmVGbGFncyksIGluZm8oKSk7CiB9CiAKLUpTUHJvbWlzZVByb3RvdHlwZTo6
SlNQcm9taXNlUHJvdG90eXBlKEV4ZWNTdGF0ZSogZXhlYywgU3RydWN0dXJlKiBzdHJ1Y3R1cmUp
Ci0gICAgOiBKU05vbkZpbmFsT2JqZWN0KGV4ZWMtPnZtKCksIHN0cnVjdHVyZSkKK0pTUHJvbWlz
ZVByb3RvdHlwZTo6SlNQcm9taXNlUHJvdG90eXBlKFZNJiB2bSwgU3RydWN0dXJlKiBzdHJ1Y3R1
cmUpCisgICAgOiBKU05vbkZpbmFsT2JqZWN0KHZtLCBzdHJ1Y3R1cmUpCiB7CiB9CiAKIHZvaWQg
SlNQcm9taXNlUHJvdG90eXBlOjpmaW5pc2hDcmVhdGlvbihWTSYgdm0sIFN0cnVjdHVyZSopCiB7
CiAgICAgQmFzZTo6ZmluaXNoQ3JlYXRpb24odm0pOworICAgIHB1dERpcmVjdEJ1aWx0aW5GdW5j
dGlvbldpdGhvdXRUcmFuc2l0aW9uKHZtLCBnbG9iYWxPYmplY3QoKSwgdm0ucHJvcGVydHlOYW1l
cy0+YnVpbHRpbk5hbWVzKCkudGhlblByaXZhdGVOYW1lKCksIHByb21pc2VQcm90b3R5cGVQcml2
YXRlVGhlbkNvZGVHZW5lcmF0b3Iodm0pLCBSZWFkT25seSB8IERvbnRFbnVtIHwgRG9udERlbGV0
ZSk7CiB9CiAKIGJvb2wgSlNQcm9taXNlUHJvdG90eXBlOjpnZXRPd25Qcm9wZXJ0eVNsb3QoSlNP
YmplY3QqIG9iamVjdCwgRXhlY1N0YXRlKiBleGVjLCBQcm9wZXJ0eU5hbWUgcHJvcGVydHlOYW1l
LCBQcm9wZXJ0eVNsb3QmIHNsb3QpCmRpZmYgLS1naXQgYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUv
cnVudGltZS9KU1Byb21pc2VQcm90b3R5cGUuaCBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50
aW1lL0pTUHJvbWlzZVByb3RvdHlwZS5oCmluZGV4IDQ1OGQxNDExOWRkZjlhYmUwNzYzYjc3NzM5
YjRlYTliODVjMjE5MDYuLjRlODcxYzc1NmNjOGU3NTc3YTA3MDQxMTU2MDNmOTNlODU1M2UxZjcg
MTAwNjQ0Ci0tLSBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL0pTUHJvbWlzZVByb3Rv
dHlwZS5oCisrKyBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL0pTUHJvbWlzZVByb3Rv
dHlwZS5oCkBAIC0zNSw3ICszNSw3IEBAIGNsYXNzIEpTUHJvbWlzZVByb3RvdHlwZSA6IHB1Ymxp
YyBKU05vbkZpbmFsT2JqZWN0IHsKICAgICB0eXBlZGVmIEpTTm9uRmluYWxPYmplY3QgQmFzZTsK
ICAgICBzdGF0aWMgY29uc3QgdW5zaWduZWQgU3RydWN0dXJlRmxhZ3MgPSBCYXNlOjpTdHJ1Y3R1
cmVGbGFncyB8IE92ZXJyaWRlc0dldE93blByb3BlcnR5U2xvdDsKIAotICAgIHN0YXRpYyBKU1By
b21pc2VQcm90b3R5cGUqIGNyZWF0ZShFeGVjU3RhdGUqLCBKU0dsb2JhbE9iamVjdCosIFN0cnVj
dHVyZSopOworICAgIHN0YXRpYyBKU1Byb21pc2VQcm90b3R5cGUqIGNyZWF0ZShWTSYsIEpTR2xv
YmFsT2JqZWN0KiwgU3RydWN0dXJlKik7CiAgICAgc3RhdGljIFN0cnVjdHVyZSogY3JlYXRlU3Ry
dWN0dXJlKFZNJiwgSlNHbG9iYWxPYmplY3QqLCBKU1ZhbHVlKTsKIAogICAgIERFQ0xBUkVfSU5G
TzsKQEAgLTQ0LDcgKzQ0LDcgQEAgY2xhc3MgSlNQcm9taXNlUHJvdG90eXBlIDogcHVibGljIEpT
Tm9uRmluYWxPYmplY3QgewogICAgIHZvaWQgZmluaXNoQ3JlYXRpb24oVk0mLCBTdHJ1Y3R1cmUq
KTsKIAogcHJpdmF0ZToKLSAgICBKU1Byb21pc2VQcm90b3R5cGUoRXhlY1N0YXRlKiwgU3RydWN0
dXJlKik7CisgICAgSlNQcm9taXNlUHJvdG90eXBlKFZNJiwgU3RydWN0dXJlKik7CiAgICAgc3Rh
dGljIGJvb2wgZ2V0T3duUHJvcGVydHlTbG90KEpTT2JqZWN0KiwgRXhlY1N0YXRlKiwgUHJvcGVy
dHlOYW1lLCBQcm9wZXJ0eVNsb3QmKTsKIH07CiAKZGlmZiAtLWdpdCBhL1NvdXJjZS9KYXZhU2Ny
aXB0Q29yZS9ydW50aW1lL01hcFByb3RvdHlwZS5jcHAgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUv
cnVudGltZS9NYXBQcm90b3R5cGUuY3BwCmluZGV4IDk2ZGVhZTcxNGNhNTFhNjdmZDE2NDA4ZTVj
MzlkM2M2NTY3Mzg5NGQuLmU5NzJmNTQwZWZiMmYxZTZhNDhkMTI1MDNmMDMxODk3MWY0MmRmODIg
MTAwNjQ0Ci0tLSBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL01hcFByb3RvdHlwZS5j
cHAKKysrIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvTWFwUHJvdG90eXBlLmNwcApA
QCAtNjgsNiArNjgsMTAgQEAgdm9pZCBNYXBQcm90b3R5cGU6OmZpbmlzaENyZWF0aW9uKFZNJiB2
bSwgSlNHbG9iYWxPYmplY3QqIGdsb2JhbE9iamVjdCkKICAgICBKU0NfTkFUSVZFX0ZVTkNUSU9O
KHZtLnByb3BlcnR5TmFtZXMtPmtleXMsIG1hcFByb3RvRnVuY0tleXMsIERvbnRFbnVtLCAwKTsK
ICAgICBKU0NfTkFUSVZFX0ZVTkNUSU9OKHZtLnByb3BlcnR5TmFtZXMtPnZhbHVlcywgbWFwUHJv
dG9GdW5jVmFsdWVzLCBEb250RW51bSwgMCk7CiAKKyAgICAvLyBQcml2YXRlIGdldCAvIHNldCBv
cGVyYXRpb25zLgorICAgIEpTQ19OQVRJVkVfRlVOQ1RJT04odm0ucHJvcGVydHlOYW1lcy0+Z2V0
UHJpdmF0ZU5hbWUsIG1hcFByb3RvRnVuY0dldCwgRG9udEVudW0sIDEpOworICAgIEpTQ19OQVRJ
VkVfRlVOQ1RJT04odm0ucHJvcGVydHlOYW1lcy0+c2V0UHJpdmF0ZU5hbWUsIG1hcFByb3RvRnVu
Y1NldCwgRG9udEVudW0sIDIpOworCiAgICAgSlNGdW5jdGlvbiogZW50cmllcyA9IEpTRnVuY3Rp
b246OmNyZWF0ZSh2bSwgZ2xvYmFsT2JqZWN0LCAwLCB2bS5wcm9wZXJ0eU5hbWVzLT5lbnRyaWVz
LnN0cmluZygpLCBtYXBQcm90b0Z1bmNFbnRyaWVzKTsKICAgICBwdXREaXJlY3RXaXRob3V0VHJh
bnNpdGlvbih2bSwgdm0ucHJvcGVydHlOYW1lcy0+ZW50cmllcywgZW50cmllcywgRG9udEVudW0p
OwogICAgIHB1dERpcmVjdFdpdGhvdXRUcmFuc2l0aW9uKHZtLCB2bS5wcm9wZXJ0eU5hbWVzLT5p
dGVyYXRvclN5bWJvbCwgZW50cmllcywgRG9udEVudW0pOwpkaWZmIC0tZ2l0IGEvU291cmNlL0ph
dmFTY3JpcHRDb3JlL3J1bnRpbWUvTW9kdWxlTG9hZGVyT2JqZWN0LmNwcCBiL1NvdXJjZS9KYXZh
U2NyaXB0Q29yZS9ydW50aW1lL01vZHVsZUxvYWRlck9iamVjdC5jcHAKbmV3IGZpbGUgbW9kZSAx
MDA2NDQKaW5kZXggMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMC4uNWFl
YTgzNjZlYjFjZDA3YjI5NTZhNzQ4ODAzNDg1YzJhMDIwYmEwZgotLS0gL2Rldi9udWxsCisrKyBi
L1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL01vZHVsZUxvYWRlck9iamVjdC5jcHAKQEAg
LTAsMCArMSwyOTkgQEAKKy8qCisgKiBDb3B5cmlnaHQgKEMpIDIwMTUgQXBwbGUgSW5jLiBBbGwg
UmlnaHRzIFJlc2VydmVkLgorICoKKyAqIFJlZGlzdHJpYnV0aW9uIGFuZCB1c2UgaW4gc291cmNl
IGFuZCBiaW5hcnkgZm9ybXMsIHdpdGggb3Igd2l0aG91dAorICogbW9kaWZpY2F0aW9uLCBhcmUg
cGVybWl0dGVkIHByb3ZpZGVkIHRoYXQgdGhlIGZvbGxvd2luZyBjb25kaXRpb25zCisgKiBhcmUg
bWV0OgorICogMS4gUmVkaXN0cmlidXRpb25zIG9mIHNvdXJjZSBjb2RlIG11c3QgcmV0YWluIHRo
ZSBhYm92ZSBjb3B5cmlnaHQKKyAqICAgIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMg
YW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lci4KKyAqIDIuIFJlZGlzdHJpYnV0aW9ucyBpbiBi
aW5hcnkgZm9ybSBtdXN0IHJlcHJvZHVjZSB0aGUgYWJvdmUgY29weXJpZ2h0CisgKiAgICBub3Rp
Y2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIg
aW4gdGhlCisgKiAgICBkb2N1bWVudGF0aW9uIGFuZC9vciBvdGhlciBtYXRlcmlhbHMgcHJvdmlk
ZWQgd2l0aCB0aGUgZGlzdHJpYnV0aW9uLgorICoKKyAqIFRISVMgU09GVFdBUkUgSVMgUFJPVklE
RUQgQlkgQVBQTEUgSU5DLiBgYEFTIElTJycgQU5EIEFOWQorICogRVhQUkVTUyBPUiBJTVBMSUVE
IFdBUlJBTlRJRVMsIElOQ0xVRElORywgQlVUIE5PVCBMSU1JVEVEIFRPLCBUSEUKKyAqIElNUExJ
RUQgV0FSUkFOVElFUyBPRiBNRVJDSEFOVEFCSUxJVFkgQU5EIEZJVE5FU1MgRk9SIEEgUEFSVElD
VUxBUgorICogUFVSUE9TRSBBUkUgRElTQ0xBSU1FRC4gIElOIE5PIEVWRU5UIFNIQUxMIEFQUExF
IElOQy4gT1IKKyAqIENPTlRSSUJVVE9SUyBCRSBMSUFCTEUgRk9SIEFOWSBESVJFQ1QsIElORElS
RUNULCBJTkNJREVOVEFMLCBTUEVDSUFMLAorICogRVhFTVBMQVJZLCBPUiBDT05TRVFVRU5USUFM
IERBTUFHRVMgKElOQ0xVRElORywgQlVUIE5PVCBMSU1JVEVEIFRPLAorICogUFJPQ1VSRU1FTlQg
T0YgU1VCU1RJVFVURSBHT09EUyBPUiBTRVJWSUNFUzsgTE9TUyBPRiBVU0UsIERBVEEsIE9SCisg
KiBQUk9GSVRTOyBPUiBCVVNJTkVTUyBJTlRFUlJVUFRJT04pIEhPV0VWRVIgQ0FVU0VEIEFORCBP
TiBBTlkgVEhFT1JZCisgKiBPRiBMSUFCSUxJVFksIFdIRVRIRVIgSU4gQ09OVFJBQ1QsIFNUUklD
VCBMSUFCSUxJVFksIE9SIFRPUlQKKyAqIChJTkNMVURJTkcgTkVHTElHRU5DRSBPUiBPVEhFUldJ
U0UpIEFSSVNJTkcgSU4gQU5ZIFdBWSBPVVQgT0YgVEhFIFVTRQorICogT0YgVEhJUyBTT0ZUV0FS
RSwgRVZFTiBJRiBBRFZJU0VEIE9GIFRIRSBQT1NTSUJJTElUWSBPRiBTVUNIIERBTUFHRS4KKyAq
LworCisjaW5jbHVkZSAiY29uZmlnLmgiCisjaW5jbHVkZSAiTW9kdWxlTG9hZGVyT2JqZWN0Lmgi
CisKKyNpbmNsdWRlICJCdWlsdGluTmFtZXMuaCIKKyNpbmNsdWRlICJFcnJvci5oIgorI2luY2x1
ZGUgIkV4Y2VwdGlvbi5oIgorI2luY2x1ZGUgIkpTQ0lubGluZXMuaCIKKyNpbmNsdWRlICJKU0ds
b2JhbE9iamVjdEZ1bmN0aW9ucy5oIgorI2luY2x1ZGUgIkpTTWFwLmgiCisjaW5jbHVkZSAiSlNN
b2R1bGVSZWNvcmQuaCIKKyNpbmNsdWRlICJKU1Byb21pc2UuaCIKKyNpbmNsdWRlICJKU1Byb21p
c2VEZWZlcnJlZC5oIgorI2luY2x1ZGUgIk1vZHVsZUFuYWx5emVyLmgiCisjaW5jbHVkZSAiTm9k
ZXMuaCIKKyNpbmNsdWRlICJQYXJzZXIuaCIKKyNpbmNsdWRlICJQYXJzZXJFcnJvci5oIgorCitu
YW1lc3BhY2UgSlNDIHsKKworc3RhdGljIEVuY29kZWRKU1ZhbHVlIEpTQ19IT1NUX0NBTEwgbW9k
dWxlTG9hZGVyT2JqZWN0UGFyc2VNb2R1bGUoRXhlY1N0YXRlKik7CitzdGF0aWMgRW5jb2RlZEpT
VmFsdWUgSlNDX0hPU1RfQ0FMTCBtb2R1bGVMb2FkZXJPYmplY3RSZXF1ZXN0ZWRNb2R1bGVzKEV4
ZWNTdGF0ZSopOworc3RhdGljIEVuY29kZWRKU1ZhbHVlIEpTQ19IT1NUX0NBTEwgbW9kdWxlTG9h
ZGVyT2JqZWN0UmVzb2x2ZShFeGVjU3RhdGUqKTsKK3N0YXRpYyBFbmNvZGVkSlNWYWx1ZSBKU0Nf
SE9TVF9DQUxMIG1vZHVsZUxvYWRlck9iamVjdEZldGNoKEV4ZWNTdGF0ZSopOworc3RhdGljIEVu
Y29kZWRKU1ZhbHVlIEpTQ19IT1NUX0NBTEwgbW9kdWxlTG9hZGVyT2JqZWN0VHJhbnNsYXRlKEV4
ZWNTdGF0ZSopOworc3RhdGljIEVuY29kZWRKU1ZhbHVlIEpTQ19IT1NUX0NBTEwgbW9kdWxlTG9h
ZGVyT2JqZWN0SW5zdGFudGlhdGUoRXhlY1N0YXRlKik7CisKK30KKworI2luY2x1ZGUgIk1vZHVs
ZUxvYWRlck9iamVjdC5sdXQuaCIKKworbmFtZXNwYWNlIEpTQyB7CisKK1NUQVRJQ19BU1NFUlRf
SVNfVFJJVklBTExZX0RFU1RSVUNUSUJMRShNb2R1bGVMb2FkZXJPYmplY3QpOworCitjb25zdCBD
bGFzc0luZm8gTW9kdWxlTG9hZGVyT2JqZWN0OjpzX2luZm8gPSB7ICJNb2R1bGVMb2FkZXIiLCAm
QmFzZTo6c19pbmZvLCAmbW9kdWxlTG9hZGVyT2JqZWN0VGFibGUsIENSRUFURV9NRVRIT0RfVEFC
TEUoTW9kdWxlTG9hZGVyT2JqZWN0KSB9OworCisvKiBTb3VyY2UgZm9yIE1vZHVsZUxvYWRlck9i
amVjdC5sdXQuaAorQGJlZ2luIG1vZHVsZUxvYWRlck9iamVjdFRhYmxlCisgICAgc2V0U3RhdGVU
b01heCAgICAgICAgICAgICBtb2R1bGVMb2FkZXJPYmplY3RTZXRTdGF0ZVRvTWF4ICAgICAgICAg
ICAgIERvbnRFbnVtfEZ1bmN0aW9uIDIKKyAgICBuZXdSZWdpc3RyeUVudHJ5ICAgICAgICAgIG1v
ZHVsZUxvYWRlck9iamVjdE5ld1JlZ2lzdHJ5RW50cnkgICAgICAgICAgRG9udEVudW18RnVuY3Rp
b24gMQorICAgIGVuc3VyZVJlZ2lzdGVyZWQgICAgICAgICAgbW9kdWxlTG9hZGVyT2JqZWN0RW5z
dXJlUmVnaXN0ZXJlZCAgICAgICAgICBEb250RW51bXxGdW5jdGlvbiAxCisgICAgZm9yY2VGdWxm
aWxsUHJvbWlzZSAgICAgICBtb2R1bGVMb2FkZXJPYmplY3RGb3JjZUZ1bGZpbGxQcm9taXNlICAg
ICAgIERvbnRFbnVtfEZ1bmN0aW9uIDIKKyAgICBmdWxmaWxsRmV0Y2ggICAgICAgICAgICAgIG1v
ZHVsZUxvYWRlck9iamVjdEZ1bGZpbGxGZXRjaCAgICAgICAgICAgICAgRG9udEVudW18RnVuY3Rp
b24gMgorICAgIGZ1bGZpbGxUcmFuc2xhdGUgICAgICAgICAgbW9kdWxlTG9hZGVyT2JqZWN0RnVs
ZmlsbFRyYW5zbGF0ZSAgICAgICAgICBEb250RW51bXxGdW5jdGlvbiAyCisgICAgZnVsZmlsbElu
c3RhbnRpYXRlICAgICAgICBtb2R1bGVMb2FkZXJPYmplY3RGdWxmaWxsSW5zdGFudGlhdGUgICAg
ICAgIERvbnRFbnVtfEZ1bmN0aW9uIDIKKyAgICBjb21taXRJbnN0YW50aWF0ZWQgICAgICAgIG1v
ZHVsZUxvYWRlck9iamVjdENvbW1pdEluc3RhbnRpYXRlZCAgICAgICAgRG9udEVudW18RnVuY3Rp
b24gMworICAgIGluc3RhbnRpYXRpb24gICAgICAgICAgICAgbW9kdWxlTG9hZGVyT2JqZWN0SW5z
dGFudGlhdGlvbiAgICAgICAgICAgICBEb250RW51bXxGdW5jdGlvbiAyCisgICAgcmVxdWVzdEZl
dGNoICAgICAgICAgICAgICBtb2R1bGVMb2FkZXJPYmplY3RSZXF1ZXN0RmV0Y2ggICAgICAgICAg
ICAgIERvbnRFbnVtfEZ1bmN0aW9uIDEKKyAgICByZXF1ZXN0VHJhbnNsYXRlICAgICAgICAgIG1v
ZHVsZUxvYWRlck9iamVjdFJlcXVlc3RUcmFuc2xhdGUgICAgICAgICAgRG9udEVudW18RnVuY3Rp
b24gMQorICAgIHJlcXVlc3RJbnN0YW50aWF0ZSAgICAgICAgbW9kdWxlTG9hZGVyT2JqZWN0UmVx
dWVzdEluc3RhbnRpYXRlICAgICAgICBEb250RW51bXxGdW5jdGlvbiAxCisgICAgcmVxdWVzdENv
bGxlY3QgICAgICAgICAgICBtb2R1bGVMb2FkZXJPYmplY3RSZXF1ZXN0Q29sbGVjdCAgICAgICAg
ICAgIERvbnRFbnVtfEZ1bmN0aW9uIDEKKyAgICByZXF1ZXN0SW5zdGFudGlhdGVBbGwgICAgIG1v
ZHVsZUxvYWRlck9iamVjdFJlcXVlc3RJbnN0YW50aWF0ZUFsbCAgICAgRG9udEVudW18RnVuY3Rp
b24gMQorICAgIHByb3ZpZGUgICAgICAgICAgICAgICAgICAgbW9kdWxlTG9hZGVyT2JqZWN0UHJv
dmlkZSAgICAgICAgICAgICAgICAgICBEb250RW51bXxGdW5jdGlvbiAzCisgICAgcGFyc2VNb2R1
bGUgICAgICAgICAgICAgICBtb2R1bGVMb2FkZXJPYmplY3RQYXJzZU1vZHVsZSAgICAgICAgICAg
ICAgIERvbnRFbnVtfEZ1bmN0aW9uIDEKKyAgICByZXF1ZXN0ZWRNb2R1bGVzICAgICAgICAgIG1v
ZHVsZUxvYWRlck9iamVjdFJlcXVlc3RlZE1vZHVsZXMgICAgICAgICAgRG9udEVudW18RnVuY3Rp
b24gMQorICAgIHJlc29sdmUgICAgICAgICAgICAgICAgICAgbW9kdWxlTG9hZGVyT2JqZWN0UmVz
b2x2ZSAgICAgICAgICAgICAgICAgICBEb250RW51bXxGdW5jdGlvbiAxCisgICAgZmV0Y2ggICAg
ICAgICAgICAgICAgICAgICBtb2R1bGVMb2FkZXJPYmplY3RGZXRjaCAgICAgICAgICAgICAgICAg
ICAgIERvbnRFbnVtfEZ1bmN0aW9uIDEKKyAgICB0cmFuc2xhdGUgICAgICAgICAgICAgICAgIG1v
ZHVsZUxvYWRlck9iamVjdFRyYW5zbGF0ZSAgICAgICAgICAgICAgICAgRG9udEVudW18RnVuY3Rp
b24gMgorICAgIGluc3RhbnRpYXRlICAgICAgICAgICAgICAgbW9kdWxlTG9hZGVyT2JqZWN0SW5z
dGFudGlhdGUgICAgICAgICAgICAgICBEb250RW51bXxGdW5jdGlvbiAyCitAZW5kCisqLworCitN
b2R1bGVMb2FkZXJPYmplY3Q6Ok1vZHVsZUxvYWRlck9iamVjdChWTSYgdm0sIFN0cnVjdHVyZSog
c3RydWN0dXJlKQorICAgIDogSlNOb25GaW5hbE9iamVjdCh2bSwgc3RydWN0dXJlKQoreworfQor
Cit2b2lkIE1vZHVsZUxvYWRlck9iamVjdDo6ZmluaXNoQ3JlYXRpb24oVk0mIHZtLCBKU0dsb2Jh
bE9iamVjdCogZ2xvYmFsT2JqZWN0KQoreworICAgIEJhc2U6OmZpbmlzaENyZWF0aW9uKHZtKTsK
KyAgICBBU1NFUlQoaW5oZXJpdHMoaW5mbygpKSk7CisKKyAgICAvLyBDb25zdGFudCB2YWx1ZXMg
Zm9yIHRoZSBzdGF0ZS4KKyAgICBwdXREaXJlY3RXaXRob3V0VHJhbnNpdGlvbih2bSwgSWRlbnRp
Zmllcjo6ZnJvbVN0cmluZygmdm0sICJGZXRjaCIpLCBqc051bWJlcihTdGF0dXM6OkZldGNoKSk7
CisgICAgcHV0RGlyZWN0V2l0aG91dFRyYW5zaXRpb24odm0sIElkZW50aWZpZXI6OmZyb21TdHJp
bmcoJnZtLCAiVHJhbnNsYXRlIiksIGpzTnVtYmVyKFN0YXR1czo6VHJhbnNsYXRlKSk7CisgICAg
cHV0RGlyZWN0V2l0aG91dFRyYW5zaXRpb24odm0sIElkZW50aWZpZXI6OmZyb21TdHJpbmcoJnZt
LCAiSW5zdGFudGlhdGUiKSwganNOdW1iZXIoU3RhdHVzOjpJbnN0YW50aWF0ZSkpOworICAgIHB1
dERpcmVjdFdpdGhvdXRUcmFuc2l0aW9uKHZtLCBJZGVudGlmaWVyOjpmcm9tU3RyaW5nKCZ2bSwg
IkNvbGxlY3QiKSwganNOdW1iZXIoU3RhdHVzOjpDb2xsZWN0KSk7CisgICAgcHV0RGlyZWN0V2l0
aG91dFRyYW5zaXRpb24odm0sIElkZW50aWZpZXI6OmZyb21TdHJpbmcoJnZtLCAiTGluayIpLCBq
c051bWJlcihTdGF0dXM6OkxpbmspKTsKKyAgICBwdXREaXJlY3RXaXRob3V0VHJhbnNpdGlvbih2
bSwgSWRlbnRpZmllcjo6ZnJvbVN0cmluZygmdm0sICJSZWFkeSIpLCBqc051bWJlcihTdGF0dXM6
OlJlYWR5KSk7CisKKyAgICBwdXREaXJlY3RXaXRob3V0VHJhbnNpdGlvbih2bSwgSWRlbnRpZmll
cjo6ZnJvbVN0cmluZygmdm0sICJyZWdpc3RyeSIpLCBKU01hcDo6Y3JlYXRlKHZtLCBnbG9iYWxP
YmplY3QtPm1hcFN0cnVjdHVyZSgpKSk7Cit9CisKK2Jvb2wgTW9kdWxlTG9hZGVyT2JqZWN0Ojpn
ZXRPd25Qcm9wZXJ0eVNsb3QoSlNPYmplY3QqIG9iamVjdCwgRXhlY1N0YXRlKiBleGVjLCBQcm9w
ZXJ0eU5hbWUgcHJvcGVydHlOYW1lLCBQcm9wZXJ0eVNsb3QgJnNsb3QpCit7CisgICAgcmV0dXJu
IGdldFN0YXRpY0Z1bmN0aW9uU2xvdDxCYXNlPihleGVjLCBtb2R1bGVMb2FkZXJPYmplY3RUYWJs
ZSwganNDYXN0PE1vZHVsZUxvYWRlck9iamVjdCo+KG9iamVjdCksIHByb3BlcnR5TmFtZSwgc2xv
dCk7Cit9CisKKy8vIC0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLSBGdW5jdGlvbnMgLS0t
LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0KKworc3RhdGljIFN0cmluZyBwcmludGFibGVN
b2R1bGVLZXkoRXhlY1N0YXRlKiBleGVjLCBKU1ZhbHVlIGtleSkKK3sKKyAgICBpZiAoa2V5Lmlz
U3RyaW5nKCkgfHwga2V5LmlzU3ltYm9sKCkpCisgICAgICAgIHJldHVybiBrZXkudG9Qcm9wZXJ0
eUtleShleGVjKS5pbXBsKCk7CisgICAgcmV0dXJuIGV4ZWMtPnByb3BlcnR5TmFtZXMoKS5lbXB0
eUlkZW50aWZpZXIuaW1wbCgpOworfQorCitKU1ZhbHVlIE1vZHVsZUxvYWRlck9iamVjdDo6cHJv
dmlkZShFeGVjU3RhdGUqIGV4ZWMsIEpTVmFsdWUga2V5LCBTdGF0dXMgc3RhdHVzLCBjb25zdCBT
dHJpbmcmIHNvdXJjZSkKK3sKKyAgICBKU09iamVjdCogZnVuY3Rpb24gPSBqc0Nhc3Q8SlNPYmpl
Y3QqPihnZXQoZXhlYywgZXhlYy0+cHJvcGVydHlOYW1lcygpLmJ1aWx0aW5OYW1lcygpLnByb3Zp
ZGVQdWJsaWNOYW1lKCkpKTsKKyAgICBDYWxsRGF0YSBjYWxsRGF0YTsKKyAgICBDYWxsVHlwZSBj
YWxsVHlwZSA9IEpTQzo6Z2V0Q2FsbERhdGEoZnVuY3Rpb24sIGNhbGxEYXRhKTsKKyAgICBBU1NF
UlQoY2FsbFR5cGUgIT0gQ2FsbFR5cGVOb25lKTsKKworICAgIE1hcmtlZEFyZ3VtZW50QnVmZmVy
IGFyZ3VtZW50czsKKyAgICBhcmd1bWVudHMuYXBwZW5kKGtleSk7CisgICAgYXJndW1lbnRzLmFw
cGVuZChqc051bWJlcihzdGF0dXMpKTsKKyAgICBhcmd1bWVudHMuYXBwZW5kKGpzU3RyaW5nKGV4
ZWMsIHNvdXJjZSkpOworCisgICAgcmV0dXJuIGNhbGwoZXhlYywgZnVuY3Rpb24sIGNhbGxUeXBl
LCBjYWxsRGF0YSwgdGhpcywgYXJndW1lbnRzKTsKK30KKworSlNWYWx1ZSBNb2R1bGVMb2FkZXJP
YmplY3Q6OnJlcXVlc3RJbnN0YW50aWF0ZUFsbChFeGVjU3RhdGUqIGV4ZWMsIEpTVmFsdWUga2V5
KQoreworICAgIEpTT2JqZWN0KiBmdW5jdGlvbiA9IGpzQ2FzdDxKU09iamVjdCo+KGdldChleGVj
LCBleGVjLT5wcm9wZXJ0eU5hbWVzKCkuYnVpbHRpbk5hbWVzKCkucmVxdWVzdEluc3RhbnRpYXRl
QWxsUHVibGljTmFtZSgpKSk7CisgICAgQ2FsbERhdGEgY2FsbERhdGE7CisgICAgQ2FsbFR5cGUg
Y2FsbFR5cGUgPSBKU0M6OmdldENhbGxEYXRhKGZ1bmN0aW9uLCBjYWxsRGF0YSk7CisgICAgQVNT
RVJUKGNhbGxUeXBlICE9IENhbGxUeXBlTm9uZSk7CisKKyAgICBNYXJrZWRBcmd1bWVudEJ1ZmZl
ciBhcmd1bWVudHM7CisgICAgYXJndW1lbnRzLmFwcGVuZChrZXkpOworCisgICAgcmV0dXJuIGNh
bGwoZXhlYywgZnVuY3Rpb24sIGNhbGxUeXBlLCBjYWxsRGF0YSwgdGhpcywgYXJndW1lbnRzKTsK
K30KKworSlNWYWx1ZSBNb2R1bGVMb2FkZXJPYmplY3Q6OnJlc29sdmUoRXhlY1N0YXRlKiBleGVj
LCBKU1ZhbHVlIG5hbWUsIEpTVmFsdWUgcmVmZXJyZXIpCit7CisgICAgaWYgKE9wdGlvbnM6OmR1
bXBNb2R1bGVMb2FkaW5nU3RhdGUoKSkKKyAgICAgICAgZGF0YUxvZygiTG9hZGVyIFtyZXNvbHZl
XSAiLCBwcmludGFibGVNb2R1bGVLZXkoZXhlYywgbmFtZSksICJcbiIpOworCisgICAgSlNHbG9i
YWxPYmplY3QqIGdsb2JhbE9iamVjdCA9IGV4ZWMtPmxleGljYWxHbG9iYWxPYmplY3QoKTsKKyAg
ICBpZiAoZ2xvYmFsT2JqZWN0LT5nbG9iYWxPYmplY3RNZXRob2RUYWJsZSgpLT5sb2FkZXJSZXNv
bHZlKQorICAgICAgICByZXR1cm4gZ2xvYmFsT2JqZWN0LT5nbG9iYWxPYmplY3RNZXRob2RUYWJs
ZSgpLT5sb2FkZXJSZXNvbHZlKGdsb2JhbE9iamVjdCwgZXhlYywgbmFtZSwgcmVmZXJyZXIpOwor
ICAgIEpTUHJvbWlzZURlZmVycmVkKiBkZWZlcnJlZCA9IEpTUHJvbWlzZURlZmVycmVkOjpjcmVh
dGUoZXhlYywgZ2xvYmFsT2JqZWN0KTsKKyAgICBkZWZlcnJlZC0+cmVzb2x2ZShleGVjLCBuYW1l
KTsKKyAgICByZXR1cm4gZGVmZXJyZWQtPnByb21pc2UoKTsKK30KKworSlNWYWx1ZSBNb2R1bGVM
b2FkZXJPYmplY3Q6OmZldGNoKEV4ZWNTdGF0ZSogZXhlYywgSlNWYWx1ZSBrZXkpCit7CisgICAg
aWYgKE9wdGlvbnM6OmR1bXBNb2R1bGVMb2FkaW5nU3RhdGUoKSkKKyAgICAgICAgZGF0YUxvZygi
TG9hZGVyIFtmZXRjaF0gIiwgcHJpbnRhYmxlTW9kdWxlS2V5KGV4ZWMsIGtleSksICJcbiIpOwor
CisgICAgSlNHbG9iYWxPYmplY3QqIGdsb2JhbE9iamVjdCA9IGV4ZWMtPmxleGljYWxHbG9iYWxP
YmplY3QoKTsKKyAgICBpZiAoZ2xvYmFsT2JqZWN0LT5nbG9iYWxPYmplY3RNZXRob2RUYWJsZSgp
LT5sb2FkZXJGZXRjaCkKKyAgICAgICAgcmV0dXJuIGdsb2JhbE9iamVjdC0+Z2xvYmFsT2JqZWN0
TWV0aG9kVGFibGUoKS0+bG9hZGVyRmV0Y2goZ2xvYmFsT2JqZWN0LCBleGVjLCBrZXkpOworICAg
IEpTUHJvbWlzZURlZmVycmVkKiBkZWZlcnJlZCA9IEpTUHJvbWlzZURlZmVycmVkOjpjcmVhdGUo
ZXhlYywgZ2xvYmFsT2JqZWN0KTsKKyAgICBTdHJpbmcgbW9kdWxlS2V5ID0ga2V5LnRvU3RyaW5n
KGV4ZWMpLT52YWx1ZShleGVjKTsKKyAgICBpZiAoZXhlYy0+aGFkRXhjZXB0aW9uKCkpIHsKKyAg
ICAgICAgSlNWYWx1ZSBleGNlcHRpb24gPSBleGVjLT5leGNlcHRpb24oKS0+dmFsdWUoKTsKKyAg
ICAgICAgZXhlYy0+Y2xlYXJFeGNlcHRpb24oKTsKKyAgICAgICAgZGVmZXJyZWQtPnJlamVjdChl
eGVjLCBleGNlcHRpb24pOworICAgICAgICByZXR1cm4gZGVmZXJyZWQtPnByb21pc2UoKTsKKyAg
ICB9CisgICAgZGVmZXJyZWQtPnJlamVjdChleGVjLCBjcmVhdGVFcnJvcihleGVjLCBtYWtlU3Ry
aW5nKCJDb3VsZCBub3Qgb3BlbiB0aGUgbW9kdWxlICciLCBtb2R1bGVLZXksICInLiIpKSk7Cisg
ICAgcmV0dXJuIGRlZmVycmVkLT5wcm9taXNlKCk7Cit9CisKK0pTVmFsdWUgTW9kdWxlTG9hZGVy
T2JqZWN0Ojp0cmFuc2xhdGUoRXhlY1N0YXRlKiBleGVjLCBKU1ZhbHVlIGtleSwgSlNWYWx1ZSBw
YXlsb2FkKQoreworICAgIGlmIChPcHRpb25zOjpkdW1wTW9kdWxlTG9hZGluZ1N0YXRlKCkpCisg
ICAgICAgIGRhdGFMb2coIkxvYWRlciBbdHJhbnNsYXRlXSAiLCBwcmludGFibGVNb2R1bGVLZXko
ZXhlYywga2V5KSwgIlxuIik7CisKKyAgICBKU0dsb2JhbE9iamVjdCogZ2xvYmFsT2JqZWN0ID0g
ZXhlYy0+bGV4aWNhbEdsb2JhbE9iamVjdCgpOworICAgIGlmIChnbG9iYWxPYmplY3QtPmdsb2Jh
bE9iamVjdE1ldGhvZFRhYmxlKCktPmxvYWRlclRyYW5zbGF0ZSkKKyAgICAgICAgcmV0dXJuIGds
b2JhbE9iamVjdC0+Z2xvYmFsT2JqZWN0TWV0aG9kVGFibGUoKS0+bG9hZGVyVHJhbnNsYXRlKGds
b2JhbE9iamVjdCwgZXhlYywga2V5LCBwYXlsb2FkKTsKKyAgICBKU1Byb21pc2VEZWZlcnJlZCog
ZGVmZXJyZWQgPSBKU1Byb21pc2VEZWZlcnJlZDo6Y3JlYXRlKGV4ZWMsIGdsb2JhbE9iamVjdCk7
CisgICAgZGVmZXJyZWQtPnJlc29sdmUoZXhlYywgcGF5bG9hZCk7CisgICAgcmV0dXJuIGRlZmVy
cmVkLT5wcm9taXNlKCk7Cit9CisKK0pTVmFsdWUgTW9kdWxlTG9hZGVyT2JqZWN0OjppbnN0YW50
aWF0ZShFeGVjU3RhdGUqIGV4ZWMsIEpTVmFsdWUga2V5LCBKU1ZhbHVlIHNvdXJjZSkKK3sKKyAg
ICBpZiAoT3B0aW9uczo6ZHVtcE1vZHVsZUxvYWRpbmdTdGF0ZSgpKQorICAgICAgICBkYXRhTG9n
KCJMb2FkZXIgW2luc3RhbnRpYXRlXSAiLCBwcmludGFibGVNb2R1bGVLZXkoZXhlYywga2V5KSwg
IlxuIik7CisKKyAgICBKU0dsb2JhbE9iamVjdCogZ2xvYmFsT2JqZWN0ID0gZXhlYy0+bGV4aWNh
bEdsb2JhbE9iamVjdCgpOworICAgIGlmIChnbG9iYWxPYmplY3QtPmdsb2JhbE9iamVjdE1ldGhv
ZFRhYmxlKCktPmxvYWRlckluc3RhbnRpYXRlKQorICAgICAgICByZXR1cm4gZ2xvYmFsT2JqZWN0
LT5nbG9iYWxPYmplY3RNZXRob2RUYWJsZSgpLT5sb2FkZXJJbnN0YW50aWF0ZShnbG9iYWxPYmpl
Y3QsIGV4ZWMsIGtleSwgc291cmNlKTsKKyAgICBKU1Byb21pc2VEZWZlcnJlZCogZGVmZXJyZWQg
PSBKU1Byb21pc2VEZWZlcnJlZDo6Y3JlYXRlKGV4ZWMsIGdsb2JhbE9iamVjdCk7CisgICAgZGVm
ZXJyZWQtPnJlc29sdmUoZXhlYywganNVbmRlZmluZWQoKSk7CisgICAgcmV0dXJuIGRlZmVycmVk
LT5wcm9taXNlKCk7Cit9CisKKy8vIC0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLSBIb29r
IEZ1bmN0aW9ucyAtLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0KKworRW5jb2RlZEpTVmFsdWUg
SlNDX0hPU1RfQ0FMTCBtb2R1bGVMb2FkZXJPYmplY3RQYXJzZU1vZHVsZShFeGVjU3RhdGUqIGV4
ZWMpCit7CisgICAgVk0mIHZtID0gZXhlYy0+dm0oKTsKKyAgICBTdHJpbmcgc291cmNlID0gZXhl
Yy0+YXJndW1lbnQoMCkudG9TdHJpbmcoZXhlYyktPnZhbHVlKGV4ZWMpOworICAgIGlmIChleGVj
LT5oYWRFeGNlcHRpb24oKSkKKyAgICAgICAgcmV0dXJuIEpTVmFsdWU6OmVuY29kZShqc1VuZGVm
aW5lZCgpKTsKKworICAgIC8vIEZJWE1FOiBDb25zdHJ1Y3QgU291cmNlQ29kZSB3aXRoIHRoZSBs
b2NhdGlvbiBpZGVudGlmaWVyLgorICAgIFNvdXJjZUNvZGUgc291cmNlQ29kZSA9IG1ha2VTb3Vy
Y2Uoc291cmNlKTsKKworICAgIFBhcnNlckVycm9yIGVycm9yOworICAgIHN0ZDo6dW5pcXVlX3B0
cjxNb2R1bGVQcm9ncmFtTm9kZT4gbW9kdWxlUHJvZ3JhbU5vZGUgPSBwYXJzZTxNb2R1bGVQcm9n
cmFtTm9kZT4oCisgICAgICAgICZ2bSwgc291cmNlQ29kZSwgSWRlbnRpZmllcigpLCBKU1BhcnNl
ckJ1aWx0aW5Nb2RlOjpOb3RCdWlsdGluLAorICAgICAgICBKU1BhcnNlclN0cmljdE1vZGU6OlN0
cmljdCwgU291cmNlUGFyc2VNb2RlOjpNb2R1bGVBbmFseXplTW9kZSwgZXJyb3IpOworCisgICAg
aWYgKGVycm9yLmlzVmFsaWQoKSkgeworICAgICAgICB0aHJvd1ZNRXJyb3IoZXhlYywgZXJyb3Iu
dG9FcnJvck9iamVjdChleGVjLT5sZXhpY2FsR2xvYmFsT2JqZWN0KCksIHNvdXJjZUNvZGUpKTsK
KyAgICAgICAgcmV0dXJuIEpTVmFsdWU6OmVuY29kZShqc1VuZGVmaW5lZCgpKTsKKyAgICB9Cisg
ICAgQVNTRVJUKG1vZHVsZVByb2dyYW1Ob2RlKTsKKworICAgIE1vZHVsZUFuYWx5emVyIG1vZHVs
ZUFuYWx5emVyKGV4ZWMsIG1vZHVsZVByb2dyYW1Ob2RlLT52YXJEZWNsYXJhdGlvbnMoKSwgbW9k
dWxlUHJvZ3JhbU5vZGUtPmxleGljYWxWYXJpYWJsZXMoKSk7CisgICAgcmV0dXJuIEpTVmFsdWU6
OmVuY29kZShtb2R1bGVBbmFseXplci5hbmFseXplKCptb2R1bGVQcm9ncmFtTm9kZSkpOworfQor
CitFbmNvZGVkSlNWYWx1ZSBKU0NfSE9TVF9DQUxMIG1vZHVsZUxvYWRlck9iamVjdFJlcXVlc3Rl
ZE1vZHVsZXMoRXhlY1N0YXRlKiBleGVjKQoreworICAgIEpTTW9kdWxlUmVjb3JkKiBtb2R1bGVS
ZWNvcmQgPSBqc0R5bmFtaWNDYXN0PEpTTW9kdWxlUmVjb3JkKj4oZXhlYy0+YXJndW1lbnQoMCkp
OworICAgIGlmICghbW9kdWxlUmVjb3JkKQorICAgICAgICByZXR1cm4gSlNWYWx1ZTo6ZW5jb2Rl
KGNvbnN0cnVjdEVtcHR5QXJyYXkoZXhlYywgbnVsbHB0cikpOworCisgICAgSlNBcnJheSogcmVz
dWx0ID0gY29uc3RydWN0RW1wdHlBcnJheShleGVjLCBudWxscHRyLCBtb2R1bGVSZWNvcmQtPnJl
cXVlc3RlZE1vZHVsZXMoKS5zaXplKCkpOworICAgIHNpemVfdCBpID0gMDsKKyAgICBmb3IgKGF1
dG8mIGtleSA6IG1vZHVsZVJlY29yZC0+cmVxdWVzdGVkTW9kdWxlcygpKQorICAgICAgICByZXN1
bHQtPnB1dERpcmVjdEluZGV4KGV4ZWMsIGkrKywganNTdHJpbmcoZXhlYywga2V5LmdldCgpKSk7
CisKKyAgICByZXR1cm4gSlNWYWx1ZTo6ZW5jb2RlKHJlc3VsdCk7Cit9CisKK0VuY29kZWRKU1Zh
bHVlIEpTQ19IT1NUX0NBTEwgbW9kdWxlTG9hZGVyT2JqZWN0UmVzb2x2ZShFeGVjU3RhdGUqIGV4
ZWMpCit7CisgICAgLy8gSG9vayBwb2ludCwgTG9hZGVyLnJlc29sdmUuCisgICAgLy8gaHR0cHM6
Ly93aGF0d2cuZ2l0aHViLmlvL2xvYWRlci8jYnJvd3Nlci1yZXNvbHZlCisgICAgLy8gVGFrZSB0
aGUgbmFtZSBhbmQgcmVzb2x2ZSBpdCB0byB0aGUgdW5pcXVlIGlkZW50aWZpZXIgZm9yIHRoZSBy
ZXNvdXJjZSBsb2NhdGlvbi4KKyAgICAvLyBGb3IgZXhhbXBsZSwgdGFrZSB0aGUgImpxdWVyeSIg
YW5kIHJldHVybiB0aGUgVVJMIGZvciB0aGUgcmVzb3VyY2UuCisgICAgTW9kdWxlTG9hZGVyT2Jq
ZWN0KiBsb2FkZXIgPSBqc0R5bmFtaWNDYXN0PE1vZHVsZUxvYWRlck9iamVjdCo+KGV4ZWMtPnRo
aXNWYWx1ZSgpKTsKKyAgICBpZiAoIWxvYWRlcikKKyAgICAgICAgcmV0dXJuIEpTVmFsdWU6OmVu
Y29kZShqc1VuZGVmaW5lZCgpKTsKKyAgICByZXR1cm4gSlNWYWx1ZTo6ZW5jb2RlKGxvYWRlci0+
cmVzb2x2ZShleGVjLCBleGVjLT5hcmd1bWVudCgwKSwgZXhlYy0+YXJndW1lbnQoMSkpKTsKK30K
KworRW5jb2RlZEpTVmFsdWUgSlNDX0hPU1RfQ0FMTCBtb2R1bGVMb2FkZXJPYmplY3RGZXRjaChF
eGVjU3RhdGUqIGV4ZWMpCit7CisgICAgLy8gSG9vayBwb2ludCwgTG9hZGVyLmZldGNoCisgICAg
Ly8gaHR0cHM6Ly93aGF0d2cuZ2l0aHViLmlvL2xvYWRlci8jYnJvd3Nlci1mZXRjaAorICAgIC8v
IFRha2UgdGhlIGtleSBhbmQgZmV0Y2ggdGhlIHJlc291cmNlIGFjdHVhbGx5LgorICAgIE1vZHVs
ZUxvYWRlck9iamVjdCogbG9hZGVyID0ganNEeW5hbWljQ2FzdDxNb2R1bGVMb2FkZXJPYmplY3Qq
PihleGVjLT50aGlzVmFsdWUoKSk7CisgICAgaWYgKCFsb2FkZXIpCisgICAgICAgIHJldHVybiBK
U1ZhbHVlOjplbmNvZGUoanNVbmRlZmluZWQoKSk7CisgICAgcmV0dXJuIEpTVmFsdWU6OmVuY29k
ZShsb2FkZXItPmZldGNoKGV4ZWMsIGV4ZWMtPmFyZ3VtZW50KDApKSk7Cit9CisKK0VuY29kZWRK
U1ZhbHVlIEpTQ19IT1NUX0NBTEwgbW9kdWxlTG9hZGVyT2JqZWN0VHJhbnNsYXRlKEV4ZWNTdGF0
ZSogZXhlYykKK3sKKyAgICAvLyBIb29rIHBvaW50LCBMb2FkZXIudHJhbnNsYXRlCisgICAgLy8g
aHR0cHM6Ly93aGF0d2cuZ2l0aHViLmlvL2xvYWRlci8jYnJvd3Nlci10cmFuc2xhdGUKKyAgICAv
LyBUYWtlIHRoZSBrZXkgYW5kIHRoZSBmZXRjaGVkIHNvdXJjZSBjb2RlIGFuZCB0cmFuc2xhdGUg
aXQgdG8gdGhlIEVTNiBzb3VyY2UgY29kZS4KKyAgICAvLyBJdCBtYXkgYmUgdXNlZCBmb3IgdGhl
IHRyYW5zcGlsZXJzIGluIHRoZSBmdXR1cmUuCisgICAgTW9kdWxlTG9hZGVyT2JqZWN0KiBsb2Fk
ZXIgPSBqc0R5bmFtaWNDYXN0PE1vZHVsZUxvYWRlck9iamVjdCo+KGV4ZWMtPnRoaXNWYWx1ZSgp
KTsKKyAgICBpZiAoIWxvYWRlcikKKyAgICAgICAgcmV0dXJuIEpTVmFsdWU6OmVuY29kZShqc1Vu
ZGVmaW5lZCgpKTsKKyAgICByZXR1cm4gSlNWYWx1ZTo6ZW5jb2RlKGxvYWRlci0+dHJhbnNsYXRl
KGV4ZWMsIGV4ZWMtPmFyZ3VtZW50KDApLCBleGVjLT5hcmd1bWVudCgxKSkpOworfQorCitFbmNv
ZGVkSlNWYWx1ZSBKU0NfSE9TVF9DQUxMIG1vZHVsZUxvYWRlck9iamVjdEluc3RhbnRpYXRlKEV4
ZWNTdGF0ZSogZXhlYykKK3sKKyAgICAvLyBIb29rIHBvaW50LCBMb2FkZXIuaW5zdGFudGlhdGUK
KyAgICAvLyBodHRwczovL3doYXR3Zy5naXRodWIuaW8vbG9hZGVyLyNicm93c2VyLWluc3RhbnRp
YXRlCisgICAgLy8gVGFrZSB0aGUga2V5IGFuZCB0aGUgdHJhbnNsYXRlZCBzb3VyY2UgY29kZS4K
KyAgICAvLyBJdCBoYXMgdGhlIGNoYW5jZSB0byBwcm92aWRlIHRoZSBvcHRpb25hbCBtb2R1bGUg
aW5zdGFuY2UgdGhhdCBpcyBkaWZmZXJlbnQgZnJvbQorICAgIC8vIHRoZSBvcmRpbmFyeSBvbmUu
CisgICAgTW9kdWxlTG9hZGVyT2JqZWN0KiBsb2FkZXIgPSBqc0R5bmFtaWNDYXN0PE1vZHVsZUxv
YWRlck9iamVjdCo+KGV4ZWMtPnRoaXNWYWx1ZSgpKTsKKyAgICBpZiAoIWxvYWRlcikKKyAgICAg
ICAgcmV0dXJuIEpTVmFsdWU6OmVuY29kZShqc1VuZGVmaW5lZCgpKTsKKyAgICByZXR1cm4gSlNW
YWx1ZTo6ZW5jb2RlKGxvYWRlci0+aW5zdGFudGlhdGUoZXhlYywgZXhlYy0+YXJndW1lbnQoMCks
IGV4ZWMtPmFyZ3VtZW50KDEpKSk7Cit9CisKK30gLy8gbmFtZXNwYWNlIEpTQwpkaWZmIC0tZ2l0
IGEvU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvTW9kdWxlTG9hZGVyT2JqZWN0LmggYi9T
b3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9Nb2R1bGVMb2FkZXJPYmplY3QuaApuZXcgZmls
ZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwLi5mMjhlNjMyOWJmMzNjZGMxZWFmYWVhMDJmY2EzNjdhNGFjODczMGM2Ci0tLSAvZGV2L251
bGwKKysrIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvTW9kdWxlTG9hZGVyT2JqZWN0
LmgKQEAgLTAsMCArMSw4MSBAQAorLyoKKyAqIENvcHlyaWdodCAoQykgMjAxNSBBcHBsZSBJbmMu
IEFsbCBSaWdodHMgUmVzZXJ2ZWQuCisgKgorICogUmVkaXN0cmlidXRpb24gYW5kIHVzZSBpbiBz
b3VyY2UgYW5kIGJpbmFyeSBmb3Jtcywgd2l0aCBvciB3aXRob3V0CisgKiBtb2RpZmljYXRpb24s
IGFyZSBwZXJtaXR0ZWQgcHJvdmlkZWQgdGhhdCB0aGUgZm9sbG93aW5nIGNvbmRpdGlvbnMKKyAq
IGFyZSBtZXQ6CisgKiAxLiBSZWRpc3RyaWJ1dGlvbnMgb2Ygc291cmNlIGNvZGUgbXVzdCByZXRh
aW4gdGhlIGFib3ZlIGNvcHlyaWdodAorICogICAgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0
aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyLgorICogMi4gUmVkaXN0cmlidXRpb25z
IGluIGJpbmFyeSBmb3JtIG11c3QgcmVwcm9kdWNlIHRoZSBhYm92ZSBjb3B5cmlnaHQKKyAqICAg
IG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xh
aW1lciBpbiB0aGUKKyAqICAgIGRvY3VtZW50YXRpb24gYW5kL29yIG90aGVyIG1hdGVyaWFscyBw
cm92aWRlZCB3aXRoIHRoZSBkaXN0cmlidXRpb24uCisgKgorICogVEhJUyBTT0ZUV0FSRSBJUyBQ
Uk9WSURFRCBCWSBBUFBMRSBJTkMuIGBgQVMgSVMnJyBBTkQgQU5ZCisgKiBFWFBSRVNTIE9SIElN
UExJRUQgV0FSUkFOVElFUywgSU5DTFVESU5HLCBCVVQgTk9UIExJTUlURUQgVE8sIFRIRQorICog
SU1QTElFRCBXQVJSQU5USUVTIE9GIE1FUkNIQU5UQUJJTElUWSBBTkQgRklUTkVTUyBGT1IgQSBQ
QVJUSUNVTEFSCisgKiBQVVJQT1NFIEFSRSBESVNDTEFJTUVELiAgSU4gTk8gRVZFTlQgU0hBTEwg
QVBQTEUgSU5DLiBPUgorICogQ09OVFJJQlVUT1JTIEJFIExJQUJMRSBGT1IgQU5ZIERJUkVDVCwg
SU5ESVJFQ1QsIElOQ0lERU5UQUwsIFNQRUNJQUwsCisgKiBFWEVNUExBUlksIE9SIENPTlNFUVVF
TlRJQUwgREFNQUdFUyAoSU5DTFVESU5HLCBCVVQgTk9UIExJTUlURUQgVE8sCisgKiBQUk9DVVJF
TUVOVCBPRiBTVUJTVElUVVRFIEdPT0RTIE9SIFNFUlZJQ0VTOyBMT1NTIE9GIFVTRSwgREFUQSwg
T1IKKyAqIFBST0ZJVFM7IE9SIEJVU0lORVNTIElOVEVSUlVQVElPTikgSE9XRVZFUiBDQVVTRUQg
QU5EIE9OIEFOWSBUSEVPUlkKKyAqIE9GIExJQUJJTElUWSwgV0hFVEhFUiBJTiBDT05UUkFDVCwg
U1RSSUNUIExJQUJJTElUWSwgT1IgVE9SVAorICogKElOQ0xVRElORyBORUdMSUdFTkNFIE9SIE9U
SEVSV0lTRSkgQVJJU0lORyBJTiBBTlkgV0FZIE9VVCBPRiBUSEUgVVNFCisgKiBPRiBUSElTIFNP
RlRXQVJFLCBFVkVOIElGIEFEVklTRUQgT0YgVEhFIFBPU1NJQklMSVRZIE9GIFNVQ0ggREFNQUdF
LgorICovCisKKyNpZm5kZWYgTW9kdWxlTG9hZGVyT2JqZWN0X2gKKyNkZWZpbmUgTW9kdWxlTG9h
ZGVyT2JqZWN0X2gKKworI2luY2x1ZGUgIkpTT2JqZWN0LmgiCisKK25hbWVzcGFjZSBKU0Mgewor
CitjbGFzcyBNb2R1bGVMb2FkZXJPYmplY3QgOiBwdWJsaWMgSlNOb25GaW5hbE9iamVjdCB7Citw
cml2YXRlOgorICAgIE1vZHVsZUxvYWRlck9iamVjdChWTSYsIFN0cnVjdHVyZSopOworcHVibGlj
OgorICAgIHR5cGVkZWYgSlNOb25GaW5hbE9iamVjdCBCYXNlOworICAgIHN0YXRpYyBjb25zdCB1
bnNpZ25lZCBTdHJ1Y3R1cmVGbGFncyA9IEJhc2U6OlN0cnVjdHVyZUZsYWdzIHwgT3ZlcnJpZGVz
R2V0T3duUHJvcGVydHlTbG90OworCisgICAgZW51bSBTdGF0dXMgeworICAgICAgICBGZXRjaCwK
KyAgICAgICAgVHJhbnNsYXRlLAorICAgICAgICBJbnN0YW50aWF0ZSwKKyAgICAgICAgQ29sbGVj
dCwKKyAgICAgICAgTGluaywKKyAgICAgICAgUmVhZHksCisgICAgfTsKKworICAgIHN0YXRpYyBN
b2R1bGVMb2FkZXJPYmplY3QqIGNyZWF0ZShWTSYgdm0sIEpTR2xvYmFsT2JqZWN0KiBnbG9iYWxP
YmplY3QsIFN0cnVjdHVyZSogc3RydWN0dXJlKQorICAgIHsKKyAgICAgICAgTW9kdWxlTG9hZGVy
T2JqZWN0KiBvYmplY3QgPSBuZXcgKE5vdE51bGwsIGFsbG9jYXRlQ2VsbDxNb2R1bGVMb2FkZXJP
YmplY3Q+KHZtLmhlYXApKSBNb2R1bGVMb2FkZXJPYmplY3Qodm0sIHN0cnVjdHVyZSk7CisgICAg
ICAgIG9iamVjdC0+ZmluaXNoQ3JlYXRpb24odm0sIGdsb2JhbE9iamVjdCk7CisgICAgICAgIHJl
dHVybiBvYmplY3Q7CisgICAgfQorCisgICAgREVDTEFSRV9JTkZPOworCisgICAgc3RhdGljIFN0
cnVjdHVyZSogY3JlYXRlU3RydWN0dXJlKFZNJiB2bSwgSlNHbG9iYWxPYmplY3QqIGdsb2JhbE9i
amVjdCwgSlNWYWx1ZSBwcm90b3R5cGUpCisgICAgeworICAgICAgICByZXR1cm4gU3RydWN0dXJl
OjpjcmVhdGUodm0sIGdsb2JhbE9iamVjdCwgcHJvdG90eXBlLCBUeXBlSW5mbyhPYmplY3RUeXBl
LCBTdHJ1Y3R1cmVGbGFncyksIGluZm8oKSk7CisgICAgfQorCisgICAgLy8gQVBJcyB0byBjb250
cm9sIHRoZSBtb2R1bGUgbG9hZGVyLgorICAgIEpTVmFsdWUgcHJvdmlkZShFeGVjU3RhdGUqLCBK
U1ZhbHVlIGtleSwgU3RhdHVzLCBjb25zdCBTdHJpbmcmKTsKKyAgICBKU1ZhbHVlIHJlcXVlc3RJ
bnN0YW50aWF0ZUFsbChFeGVjU3RhdGUqLCBKU1ZhbHVlIGtleSk7CisKKyAgICAvLyBQbGF0Zm9y
bSBkZXBlbmRlbnQgaG9va2VkIEFQSXMuCisgICAgSlNWYWx1ZSByZXNvbHZlKEV4ZWNTdGF0ZSos
IEpTVmFsdWUgbmFtZSwgSlNWYWx1ZSByZWZlcnJlcik7CisgICAgSlNWYWx1ZSBmZXRjaChFeGVj
U3RhdGUqLCBKU1ZhbHVlIGtleSk7CisgICAgSlNWYWx1ZSB0cmFuc2xhdGUoRXhlY1N0YXRlKiwg
SlNWYWx1ZSBrZXksIEpTVmFsdWUgcGF5bG9hZCk7CisgICAgSlNWYWx1ZSBpbnN0YW50aWF0ZShF
eGVjU3RhdGUqLCBKU1ZhbHVlIGtleSwgSlNWYWx1ZSBzb3VyY2UpOworCisgICAgc3RhdGljIGJv
b2wgZ2V0T3duUHJvcGVydHlTbG90KEpTT2JqZWN0KiwgRXhlY1N0YXRlKiwgUHJvcGVydHlOYW1l
LCBQcm9wZXJ0eVNsb3QmKTsKKworcHJvdGVjdGVkOgorICAgIHZvaWQgZmluaXNoQ3JlYXRpb24o
Vk0mLCBKU0dsb2JhbE9iamVjdCopOworfTsKKworfSAvLyBuYW1lc3BhY2UgSlNDCisKKyNlbmRp
ZiAvLyBNb2R1bGVMb2FkZXJPYmplY3RfaApkaWZmIC0tZ2l0IGEvU291cmNlL0phdmFTY3JpcHRD
b3JlL3J1bnRpbWUvT3B0aW9ucy5oIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvT3B0
aW9ucy5oCmluZGV4IDI1OTYwNzg3MWM2NWYyN2Y0YzY2Mjg5ZTk5MjZlYWQyNWQ1MTMwY2IuLjI2
NTdhZWZlNjBiOWFjNDg3M2YwMWYxZjQzMDMwZDdiYzI4OGUyMDQgMTAwNjQ0Ci0tLSBhL1NvdXJj
ZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL09wdGlvbnMuaAorKysgYi9Tb3VyY2UvSmF2YVNjcmlw
dENvcmUvcnVudGltZS9PcHRpb25zLmgKQEAgLTMyNCw2ICszMjQsNyBAQCB0eXBlZGVmIGNvbnN0
IGNoYXIqIG9wdGlvblN0cmluZzsKICAgICB2KHVuc2lnbmVkLCB3YXRjaGRvZywgMCwgIndhdGNo
ZG9nIHRpbWVvdXQgKDAgPSBEaXNhYmxlZCwgTiA9IGEgdGltZW91dCBwZXJpb2Qgb2YgTiBtaWxs
aXNlY29uZHMpIikgXAogICAgIFwKICAgICB2KGJvb2wsIGR1bXBNb2R1bGVSZWNvcmQsIGZhbHNl
LCBudWxscHRyKSBcCisgICAgdihib29sLCBkdW1wTW9kdWxlTG9hZGluZ1N0YXRlLCBmYWxzZSwg
bnVsbHB0cikgXAogCiBjbGFzcyBPcHRpb25zIHsKIHB1YmxpYzoKZGlmZiAtLWdpdCBhL1NvdXJj
ZS9XZWJDb3JlL2JpbmRpbmdzL2pzL0pTRE9NV2luZG93QmFzZS5jcHAgYi9Tb3VyY2UvV2ViQ29y
ZS9iaW5kaW5ncy9qcy9KU0RPTVdpbmRvd0Jhc2UuY3BwCmluZGV4IDlhYjBhOGYwZDBmYmQ3OGU1
ZTU3ZDU4MDQ3N2U2NTVjYjg5NTk1ZDEuLmEyOTBkZGM5ZTU4MWFjZDYzNDMwMTcwMGJhZjgyN2Nh
MWE0ZWZkMDIgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2JpbmRpbmdzL2pzL0pTRE9NV2lu
ZG93QmFzZS5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvYmluZGluZ3MvanMvSlNET01XaW5kb3dC
YXNlLmNwcApAQCAtNTYsNyArNTYsNyBAQCBzdGF0aWMgYm9vbCBzaG91bGRBbGxvd0FjY2Vzc0Zy
b20oY29uc3QgSlNHbG9iYWxPYmplY3QqIHRoaXNPYmplY3QsIEV4ZWNTdGF0ZSogZQogCiBjb25z
dCBDbGFzc0luZm8gSlNET01XaW5kb3dCYXNlOjpzX2luZm8gPSB7ICJXaW5kb3ciLCAmSlNET01H
bG9iYWxPYmplY3Q6OnNfaW5mbywgMCwgQ1JFQVRFX01FVEhPRF9UQUJMRShKU0RPTVdpbmRvd0Jh
c2UpIH07CiAKLWNvbnN0IEdsb2JhbE9iamVjdE1ldGhvZFRhYmxlIEpTRE9NV2luZG93QmFzZTo6
c19nbG9iYWxPYmplY3RNZXRob2RUYWJsZSA9IHsgJnNob3VsZEFsbG93QWNjZXNzRnJvbSwgJnN1
cHBvcnRzUHJvZmlsaW5nLCAmc3VwcG9ydHNSaWNoU291cmNlSW5mbywgJnNob3VsZEludGVycnVw
dFNjcmlwdCwgJmphdmFTY3JpcHRSdW50aW1lRmxhZ3MsICZxdWV1ZVRhc2tUb0V2ZW50TG9vcCwg
JnNob3VsZEludGVycnVwdFNjcmlwdEJlZm9yZVRpbWVvdXQgfTsKK2NvbnN0IEdsb2JhbE9iamVj
dE1ldGhvZFRhYmxlIEpTRE9NV2luZG93QmFzZTo6c19nbG9iYWxPYmplY3RNZXRob2RUYWJsZSA9
IHsgJnNob3VsZEFsbG93QWNjZXNzRnJvbSwgJnN1cHBvcnRzUHJvZmlsaW5nLCAmc3VwcG9ydHNS
aWNoU291cmNlSW5mbywgJnNob3VsZEludGVycnVwdFNjcmlwdCwgJmphdmFTY3JpcHRSdW50aW1l
RmxhZ3MsICZxdWV1ZVRhc2tUb0V2ZW50TG9vcCwgJnNob3VsZEludGVycnVwdFNjcmlwdEJlZm9y
ZVRpbWVvdXQsIG51bGxwdHIsIG51bGxwdHIsIG51bGxwdHIsIG51bGxwdHIgfTsKIAogSlNET01X
aW5kb3dCYXNlOjpKU0RPTVdpbmRvd0Jhc2UoVk0mIHZtLCBTdHJ1Y3R1cmUqIHN0cnVjdHVyZSwg
UGFzc1JlZlB0cjxET01XaW5kb3c+IHdpbmRvdywgSlNET01XaW5kb3dTaGVsbCogc2hlbGwpCiAg
ICAgOiBKU0RPTUdsb2JhbE9iamVjdCh2bSwgc3RydWN0dXJlLCAmc2hlbGwtPndvcmxkKCksICZz
X2dsb2JhbE9iamVjdE1ldGhvZFRhYmxlKQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvYmlu
ZGluZ3MvanMvSlNXb3JrZXJHbG9iYWxTY29wZUJhc2UuY3BwIGIvU291cmNlL1dlYkNvcmUvYmlu
ZGluZ3MvanMvSlNXb3JrZXJHbG9iYWxTY29wZUJhc2UuY3BwCmluZGV4IGFhYTVkYmE1NTE3MWNi
OTU0MWJhNjVlMWQyNDdhYjI5YzlkOWM3YzMuLjUwNDRiYzE3ODM1MTNiOWIxYTI2YmQzYmQxY2I1
YzAwYjcwYTEwZDAgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2JpbmRpbmdzL2pzL0pTV29y
a2VyR2xvYmFsU2NvcGVCYXNlLmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9iaW5kaW5ncy9qcy9K
U1dvcmtlckdsb2JhbFNjb3BlQmFzZS5jcHAKQEAgLTQzLDcgKzQzLDcgQEAgbmFtZXNwYWNlIFdl
YkNvcmUgewogCiBjb25zdCBDbGFzc0luZm8gSlNXb3JrZXJHbG9iYWxTY29wZUJhc2U6OnNfaW5m
byA9IHsgIldvcmtlckdsb2JhbFNjb3BlIiwgJkpTRE9NR2xvYmFsT2JqZWN0OjpzX2luZm8sIDAs
IENSRUFURV9NRVRIT0RfVEFCTEUoSlNXb3JrZXJHbG9iYWxTY29wZUJhc2UpIH07CiAKLWNvbnN0
IEdsb2JhbE9iamVjdE1ldGhvZFRhYmxlIEpTV29ya2VyR2xvYmFsU2NvcGVCYXNlOjpzX2dsb2Jh
bE9iamVjdE1ldGhvZFRhYmxlID0geyAmYWxsb3dzQWNjZXNzRnJvbSwgJnN1cHBvcnRzUHJvZmls
aW5nLCAmc3VwcG9ydHNSaWNoU291cmNlSW5mbywgJnNob3VsZEludGVycnVwdFNjcmlwdCwgJmph
dmFTY3JpcHRSdW50aW1lRmxhZ3MsICZxdWV1ZVRhc2tUb0V2ZW50TG9vcCwgJnNob3VsZEludGVy
cnVwdFNjcmlwdEJlZm9yZVRpbWVvdXQgfTsKK2NvbnN0IEdsb2JhbE9iamVjdE1ldGhvZFRhYmxl
IEpTV29ya2VyR2xvYmFsU2NvcGVCYXNlOjpzX2dsb2JhbE9iamVjdE1ldGhvZFRhYmxlID0geyAm
YWxsb3dzQWNjZXNzRnJvbSwgJnN1cHBvcnRzUHJvZmlsaW5nLCAmc3VwcG9ydHNSaWNoU291cmNl
SW5mbywgJnNob3VsZEludGVycnVwdFNjcmlwdCwgJmphdmFTY3JpcHRSdW50aW1lRmxhZ3MsICZx
dWV1ZVRhc2tUb0V2ZW50TG9vcCwgJnNob3VsZEludGVycnVwdFNjcmlwdEJlZm9yZVRpbWVvdXQs
IG51bGxwdHIsIG51bGxwdHIsIG51bGxwdHIsIG51bGxwdHIgfTsKIAogSlNXb3JrZXJHbG9iYWxT
Y29wZUJhc2U6OkpTV29ya2VyR2xvYmFsU2NvcGVCYXNlKEpTQzo6Vk0mIHZtLCBKU0M6OlN0cnVj
dHVyZSogc3RydWN0dXJlLCBQYXNzUmVmUHRyPFdvcmtlckdsb2JhbFNjb3BlPiBpbXBsKQogICAg
IDogSlNET01HbG9iYWxPYmplY3Qodm0sIHN0cnVjdHVyZSwgJm5vcm1hbFdvcmxkKHZtKSwgJnNf
Z2xvYmFsT2JqZWN0TWV0aG9kVGFibGUpCg==
</data>

          </attachment>
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>259087</attachid>
            <date>2015-08-15 02:28:55 -0700</date>
            <delta_ts>2015-08-15 12:48:31 -0700</delta_ts>
            <desc>Patch</desc>
            <filename>bug-147876-20150815022834.patch</filename>
            <type>text/plain</type>
            <size>145979</size>
            <attacher name="Yusuke Suzuki">ysuzuki</attacher>
            
              <data encoding="base64">U3VidmVyc2lvbiBSZXZpc2lvbjogMTg4NDk4CmRpZmYgLS1naXQgYS9Tb3VyY2UvSmF2YVNjcmlw
dENvcmUvQ2hhbmdlTG9nIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL0NoYW5nZUxvZwppbmRleCBm
YmY4YzE0NzE5ODkxZmYzMTliMzA1MGQwZDUxY2FhNzNjNDBlYjU5Li5iNzljNjBkNThkMjI1MTg4
MDYxN2Q1Y2ViMzgyMWQzODA2YTVkNmI5IDEwMDY0NAotLS0gYS9Tb3VyY2UvSmF2YVNjcmlwdENv
cmUvQ2hhbmdlTG9nCisrKyBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9DaGFuZ2VMb2cKQEAgLTEs
MyArMSwxOTMgQEAKKzIwMTUtMDgtMTUgIFl1c3VrZSBTdXp1a2kgIDx1dGF0YW5lLnRlYUBnbWFp
bC5jb20+CisKKyAgICAgICAgW0VTNl0gcHJvdG90eXBpbmcgbW9kdWxlIGxvYWRlciBpbiBKU0Mg
c2hlbGwKKyAgICAgICAgaHR0cHM6Ly9idWdzLndlYmtpdC5vcmcvc2hvd19idWcuY2dpP2lkPTE0
Nzg3NgorCisgICAgICAgIFJldmlld2VkIGJ5IE5PQk9EWSAoT09QUyEpLgorCisgICAgICAgIFRo
aXMgcGF0Y2ggaW1wbGVtZW50cyBFUzYgTW9kdWxlIExvYWRlciBwYXJ0LiBUaGUgaW1wbGVtZW50
YXRpb24gaXMgYmFzZWQgb24KKyAgICAgICAgdGhlIGxhdGVzdCBkcmFmdFsxLCAyXS4gVGhlIG5h
aXZlIGltcGxlbWVudGF0aW9uIHBvc2VzIHNldmVyYWwgcHJvYmxlbXMuCisgICAgICAgIFRoaXMg
cGF0Y2ggYXR0ZW1wdHMgdG8gc29sdmUgdGhlIHNwZWMgaXNzdWVzIGFuZCBwcm9wb3NlcyB0aGUg
Zml4WzMsIDQsIDVdLgorCisgICAgICAgIFdlIGNvbnN0cnVjdCB0aGUgSlNDIGludGVybmFsIG1v
ZHVsZSBsb2FkZXIgYmFzZWQgb24gdGhlIEVTNiBQcm9taXNlcy4KKyAgICAgICAgVGhlIGNoYWlu
IG9mIHRoZSBwcm9taXNlcyByZXByZXNlbnRzIHRoZSBkZXBlbmRlbmN5IGdyYXBoIG9mIHRoZSBt
b2R1bGVzIGFuZAorICAgICAgICBpdCBhdXRvbWF0aWNhbGx5IGVuYWJsZXMgYXN5bmNocm9ub3Vz
IG1vZHVsZSBmZXRjaGluZy4KKyAgICAgICAgVG8gbGV2ZXJhZ2UgdGhlIFByb21pc2VzIGludGVy
bmFsbHksIHdlIGFkZCB0aGUgc2V2ZXJhbCBub24tdXNlci1vYnNlcnZhYmxlCisgICAgICAgIHBy
aXZhdGUgbWV0aG9kcywgbGlrZSBAdGhlbiwgQGFsbC4gQW5kIHJlZmFjdG9yIHRoZSBleGlzdGlu
ZyBQcm9taXNlcworICAgICAgICBpbXBsZW1lbnRhdGlvbiB0byBtYWtlIGl0IGVhc3kgdG8gdXNl
IGludGVybmFsbHkuCisKKyAgICAgICAgVGhlIGxvYWRlciBoYXMgc2V2ZXJhbCBwbGF0Zm9ybS1k
ZXBlbmRlbnQgaG9va3MuIFRoZSBwbGF0Zm9ybSBjYW4gaW1wbGVtZW50CisgICAgICAgIHRoZXNl
IGhvb2tzIHRvIHByb3ZpZGUgdGhlIGZ1bmN0aW9hbGl0eSBtaXNzaW5nIGluIHRoZSBtb2R1bGUg
bG9hZGVycywgbGlrZQorICAgICAgICAiaG93IHRvIGZldGNoIHRoZSByZXNvdXJjZXMiLiBUaGUg
bWV0aG9kIHRhYmxlIG9mIHRoZSBKU0dsb2JhbE9iamVjdCBpcyBleHRlbmRlZAorICAgICAgICB0
byBhY2NlcHQgdGhlc2UgaG9va3MgZnJvbSB0aGUgcGxhdGZvcm0uCisKKyAgICAgICAgVGhpcyBw
YXRjaCBmb2N1cyBvbiB0aGUgbG9hZGluZyBwYXJ0LiBTbyB3ZSBkb24ndCBjcmVhdGUgdGhlIG1v
ZHVsZSBlbnZpcm9ubWVudAorICAgICAgICBhbmQgZG9uJ3QgbGluayB0aGUgbW9kdWxlcyB5ZXQu
CisKKyAgICAgICAgVG8gdGVzdCB0aGUgY3VycmVudCBtb2R1bGUgcHJvZ3Jlc3MgZWFzaWx5LCB3
ZSBhZGQgdGhlIGAtbWAgb3B0aW9uIHRvIHRoZSBKU0Mgc2hlbGwuCisgICAgICAgIFdoZW4gdGhp
cyBvcHRpb24gaXMgc3BlY2lmaWVkLCB3ZSBsb2FkIHRoZSBnaXZlbiBzY3JpcHQgYXMgdGhlIG1v
ZHVsZS4gQW5kIHRvIHVzZQorICAgICAgICB0aGUgbW9kdWxlIGxvYWRpbmcgaW5zaWRlIHRoZSBK
U0Mgc2hlbGwsIHdlIGFkZGVkIHRoZSBzaW1wbGUgbG9hZGVyIGhvb2sgZm9yIGZldGNoaW5nLgor
ICAgICAgICBJdCBmZXRjaGVzIHRoZSBtb2R1bGUgY29udGVudCBmcm9tIHRoZSBmaWxlIHN5c3Rl
bS4KKworICAgICAgICBbMV06IGh0dHBzOi8vd2hhdHdnLmdpdGh1Yi5pby9sb2FkZXIvCisgICAg
ICAgIFsyXTogaHR0cHM6Ly9naXRodWIuY29tL3doYXR3Zy9sb2FkZXIvY29tbWl0LzIxNGM3YTY2
MjViNDQ1YmRmNDExYzM5OTg0ZjM2ZjAxMTM5YTI0YmUKKyAgICAgICAgWzNdOiBodHRwczovL2dp
dGh1Yi5jb20vd2hhdHdnL2xvYWRlci9wdWxsLzY2CisgICAgICAgIFs0XTogaHR0cHM6Ly9naXRo
dWIuY29tL3doYXR3Zy9sb2FkZXIvcHVsbC82NworICAgICAgICBbNV06IGh0dHBzOi8vZ2l0aHVi
LmNvbS93aGF0d2cvbG9hZGVyL2lzc3Vlcy82OAorCisgICAgICAgICogQ01ha2VMaXN0cy50eHQ6
CisgICAgICAgICogRGVyaXZlZFNvdXJjZXMubWFrZToKKyAgICAgICAgKiBKYXZhU2NyaXB0Q29y
ZS52Y3hwcm9qL0phdmFTY3JpcHRDb3JlLnZjeHByb2o6CisgICAgICAgICogSmF2YVNjcmlwdENv
cmUudmN4cHJvai9KYXZhU2NyaXB0Q29yZS52Y3hwcm9qLmZpbHRlcnM6CisgICAgICAgICogSmF2
YVNjcmlwdENvcmUueGNvZGVwcm9qL3Byb2plY3QucGJ4cHJvajoKKyAgICAgICAgKiBidWlsdGlu
cy9CdWlsdGluTmFtZXMuaDoKKyAgICAgICAgKEpTQzo6QnVpbHRpbk5hbWVzOjpsb29rVXBQcml2
YXRlTmFtZSk6CisgICAgICAgIChKU0M6OkJ1aWx0aW5OYW1lczo6bG9va1VwUHVibGljTmFtZSk6
CisgICAgICAgIChKU0M6OkJ1aWx0aW5OYW1lczo6Z2V0UHJpdmF0ZU5hbWUpOiBEZWxldGVkLgor
ICAgICAgICAoSlNDOjpCdWlsdGluTmFtZXM6OmdldFB1YmxpY05hbWUpOiBEZWxldGVkLgorICAg
ICAgICBUbyB1c2UgdGhlIEVTNiBNYXAgaW4gdGhlIExvYWRlciBpbXBsZW1lbnRhdGlvbiwgd2Ug
YWRkZWQgQGdldCBhbmQgQHNldCBtZXRob2RzIHRvIHRoZSBNYXAuCisgICAgICAgIEJ1dCBpdCBj
b25mbGljdHMgd2l0aCB0aGUgZXhpc3RpbmcgYGdldFByaXZhdGVOYW1lYCBtZXRob2QuIFJlbmFt
ZSBpdCB0byBgbG9va1VwUHJpdmF0ZU5hbWVgLgorICAgICAgICAqIGJ1aWx0aW5zL01vZHVsZUxv
YWRlck9iamVjdC5qczogQWRkZWQuCisgICAgICAgIChzZXRTdGF0ZVRvTWF4KToKKyAgICAgICAg
KG5ld1JlZ2lzdHJ5RW50cnkpOgorICAgICAgICAoZm9yY2VGdWxmaWxsUHJvbWlzZSk6CisgICAg
ICAgIChmdWxmaWxsRmV0Y2gpOgorICAgICAgICAoZnVsZmlsbFRyYW5zbGF0ZSk6CisgICAgICAg
IChmdWxmaWxsSW5zdGFudGlhdGUpOgorICAgICAgICAoaW5zdGFudGlhdGlvbik6CisgICAgICAg
IChyZXF1ZXN0RmV0Y2gpOgorICAgICAgICAocmVxdWVzdFRyYW5zbGF0ZSk6CisgICAgICAgIChy
ZXF1ZXN0SW5zdGFudGlhdGUpOgorICAgICAgICAocmVxdWVzdENvbGxlY3QuY29sbGVjdFByb21p
c2UudGhpcy5yZXF1ZXN0SW5zdGFudGlhdGUudGhlbi4pOgorICAgICAgICAocmVxdWVzdENvbGxl
Y3QuY29sbGVjdFByb21pc2UudGhpcy5yZXF1ZXN0SW5zdGFudGlhdGUudGhlbik6CisgICAgICAg
IChyZXF1ZXN0Q29sbGVjdCk6CisgICAgICAgIChyZXF1ZXN0SW5zdGFudGlhdGVBbGwpOgorICAg
ICAgICAocHJvdmlkZSk6CisgICAgICAgICogYnVpbHRpbnMvT3BlcmF0aW9ucy5Qcm9taXNlLmpz
OgorICAgICAgICAoLm9uRnVsZmlsbGVkKToKKyAgICAgICAgKC5vblJlamVjdGVkKToKKyAgICAg
ICAgKHByb21pc2VUaGVuKToKKyAgICAgICAgKiBidWlsdGlucy9Qcm9taXNlLnByb3RvdHlwZS5q
czoKKyAgICAgICAgKHRoZW4pOgorICAgICAgICAocHJpdmF0ZVRoZW4pOgorICAgICAgICAoLm9u
RnVsZmlsbGVkKTogRGVsZXRlZC4KKyAgICAgICAgKC5vblJlamVjdGVkKTogRGVsZXRlZC4KKyAg
ICAgICAgKiBidWlsdGlucy9Qcm9taXNlQ29uc3RydWN0b3IuanM6CisgICAgICAgIChwcml2YXRl
QWxsLm5ld1Jlc29sdmVFbGVtZW50KToKKyAgICAgICAgKHByaXZhdGVBbGwpOgorICAgICAgICAq
IGpzYy5jcHA6CisgICAgICAgIChzdHJpbmdGcm9tVVRGKToKKyAgICAgICAgKGpzY1NvdXJjZSk6
CisgICAgICAgIChHbG9iYWxPYmplY3Q6OmxvYWRlckZldGNoKToKKyAgICAgICAgKGZ1bmN0aW9u
Q2hlY2tNb2R1bGVTeW50YXgpOgorICAgICAgICAoZHVtcEV4Y2VwdGlvbik6CisgICAgICAgIChy
dW5XaXRoU2NyaXB0cyk6CisgICAgICAgIChwcmludFVzYWdlU3RhdGVtZW50KToKKyAgICAgICAg
KENvbW1hbmRMaW5lOjpwYXJzZUFyZ3VtZW50cyk6CisgICAgICAgIChqc2NtYWluKToKKyAgICAg
ICAgKENvbW1hbmRMaW5lOjpDb21tYW5kTGluZSk6IERlbGV0ZWQuCisgICAgICAgICogcGFyc2Vy
L0xleGVyLmNwcDoKKyAgICAgICAgKEpTQzo6TGV4ZXI8TENoYXI+OjpwYXJzZUlkZW50aWZpZXIp
OgorICAgICAgICAoSlNDOjpMZXhlcjxVQ2hhcj46OnBhcnNlSWRlbnRpZmllcik6CisgICAgICAg
ICogcGFyc2VyL01vZHVsZUFuYWx5emVyLmNwcDoKKyAgICAgICAgKEpTQzo6TW9kdWxlQW5hbHl6
ZXI6Ok1vZHVsZUFuYWx5emVyKToKKyAgICAgICAgKEpTQzo6TW9kdWxlQW5hbHl6ZXI6OmV4cG9y
dFZhcmlhYmxlKToKKyAgICAgICAgKEpTQzo6TW9kdWxlQW5hbHl6ZXI6OmFuYWx5emUpOgorICAg
ICAgICAqIHBhcnNlci9Nb2R1bGVBbmFseXplci5oOgorICAgICAgICAoSlNDOjpNb2R1bGVBbmFs
eXplcjo6bW9kdWxlUmVjb3JkKToKKyAgICAgICAgKiBwYXJzZXIvTW9kdWxlUmVjb3JkLmNwcDoK
KyAgICAgICAgKEpTQzo6cHJpbnRhYmxlTmFtZSk6IERlbGV0ZWQuCisgICAgICAgIChKU0M6Ok1v
ZHVsZVJlY29yZDo6ZHVtcCk6IERlbGV0ZWQuCisgICAgICAgIE1vZHVsZVJlY29yZCBpcyBjb252
ZXJ0ZWQgdG8gSlNNb2R1bGVSZWNvcmQgdGhhdCBpcyBhbGxvY2F0ZWQgYXMgYSBKUyBvYmplY3Qu
CisgICAgICAgICogcGFyc2VyL01vZHVsZVJlY29yZC5oOgorICAgICAgICAoSlNDOjpNb2R1bGVS
ZWNvcmQ6OkltcG9ydEVudHJ5Ojppc05hbWVzcGFjZSk6IERlbGV0ZWQuCisgICAgICAgIChKU0M6
Ok1vZHVsZVJlY29yZDo6Y3JlYXRlKTogRGVsZXRlZC4KKyAgICAgICAgKEpTQzo6TW9kdWxlUmVj
b3JkOjphcHBlbmRSZXF1ZXN0ZWRNb2R1bGUpOiBEZWxldGVkLgorICAgICAgICAoSlNDOjpNb2R1
bGVSZWNvcmQ6OmFkZEltcG9ydEVudHJ5KTogRGVsZXRlZC4KKyAgICAgICAgKEpTQzo6TW9kdWxl
UmVjb3JkOjphZGRFeHBvcnRFbnRyeSk6IERlbGV0ZWQuCisgICAgICAgIChKU0M6Ok1vZHVsZVJl
Y29yZDo6YWRkU3RhckV4cG9ydEVudHJ5KTogRGVsZXRlZC4KKyAgICAgICAgKiBwYXJzZXIvTm9k
ZXMuaDoKKyAgICAgICAgKiBwYXJzZXIvTm9kZXNBbmFseXplTW9kdWxlLmNwcDoKKyAgICAgICAg
KEpTQzo6SW1wb3J0RGVjbGFyYXRpb25Ob2RlOjphbmFseXplTW9kdWxlKToKKyAgICAgICAgKEpT
Qzo6RXhwb3J0QWxsRGVjbGFyYXRpb25Ob2RlOjphbmFseXplTW9kdWxlKToKKyAgICAgICAgKEpT
Qzo6RXhwb3J0TmFtZWREZWNsYXJhdGlvbk5vZGU6OmFuYWx5emVNb2R1bGUpOgorICAgICAgICAq
IHJ1bnRpbWUvQ29tbW9uSWRlbnRpZmllcnMuY3BwOgorICAgICAgICAoSlNDOjpDb21tb25JZGVu
dGlmaWVyczo6bG9va1VwUHJpdmF0ZU5hbWUpOgorICAgICAgICAoSlNDOjpDb21tb25JZGVudGlm
aWVyczo6bG9va1VwUHVibGljTmFtZSk6CisgICAgICAgIChKU0M6OkNvbW1vbklkZW50aWZpZXJz
OjpnZXRQcml2YXRlTmFtZSk6IERlbGV0ZWQuCisgICAgICAgIChKU0M6OkNvbW1vbklkZW50aWZp
ZXJzOjpnZXRQdWJsaWNOYW1lKTogRGVsZXRlZC4KKyAgICAgICAgKiBydW50aW1lL0NvbW1vbklk
ZW50aWZpZXJzLmg6CisgICAgICAgICogcnVudGltZS9Db21wbGV0aW9uLmNwcDoKKyAgICAgICAg
KEpTQzo6Y2hlY2tNb2R1bGVTeW50YXgpOgorICAgICAgICAoSlNDOjpldmFsdWF0ZU1vZHVsZSk6
CisgICAgICAgIEFkZCBldmFsdWF0ZU1vZHVsZS4gVGhhdCB3aWxsIGJlIHVzZWQgdG8gZXZhbHVh
dGUgdGhlIG1vZHVsZSBvbmNlIHRoZSBpbXBsZW1lbnRhdGlvbiBpcyBjb21wbGV0ZWQuCisgICAg
ICAgIEJ1dCBub3csIGl0IGp1c3QgbG9hZHMgdGhlIG1vZHVsZXMuCisgICAgICAgICogcnVudGlt
ZS9Db21wbGV0aW9uLmg6CisgICAgICAgICogcnVudGltZS9FeGNlcHRpb25IZWxwZXJzLmNwcDoK
KyAgICAgICAgKEpTQzo6Y3JlYXRlVW5kZWZpbmVkVmFyaWFibGVFcnJvcik6CisgICAgICAgICog
cnVudGltZS9JZGVudGlmaWVyLmg6CisgICAgICAgICogcnVudGltZS9KU0dsb2JhbE9iamVjdC5j
cHA6CisgICAgICAgIChKU0M6OkpTR2xvYmFsT2JqZWN0Ojppbml0KToKKyAgICAgICAgKEpTQzo6
SlNHbG9iYWxPYmplY3Q6OnZpc2l0Q2hpbGRyZW4pOgorICAgICAgICAqIHJ1bnRpbWUvSlNHbG9i
YWxPYmplY3QuaDoKKyAgICAgICAgKEpTQzo6SlNHbG9iYWxPYmplY3Q6Om1vZHVsZUxvYWRlcik6
CisgICAgICAgIChKU0M6OkpTR2xvYmFsT2JqZWN0Ojptb2R1bGVSZWNvcmRTdHJ1Y3R1cmUpOgor
ICAgICAgICAoSlNDOjpKU0dsb2JhbE9iamVjdDo6cHJvbWlzZUNvbnN0cnVjdG9yKTogRGVsZXRl
ZC4KKyAgICAgICAgKEpTQzo6SlNHbG9iYWxPYmplY3Q6OnByb21pc2VQcm90b3R5cGUpOiBEZWxl
dGVkLgorICAgICAgICAoSlNDOjpKU0dsb2JhbE9iamVjdDo6cHJvbWlzZVN0cnVjdHVyZSk6IERl
bGV0ZWQuCisgICAgICAgIEluY2x1ZGVzIFByb21pc2UgcmVmYWN0b3JpbmcuCisgICAgICAgICog
cnVudGltZS9KU01vZHVsZVJlY29yZC5jcHA6IFJlbmFtZWQgZnJvbSBTb3VyY2UvSmF2YVNjcmlw
dENvcmUvcGFyc2VyL01vZHVsZVJlY29yZC5jcHAuCisgICAgICAgIChKU0M6OkpTTW9kdWxlUmVj
b3JkOjpkZXN0cm95KToKKyAgICAgICAgKEpTQzo6SlNNb2R1bGVSZWNvcmQ6OmZpbmlzaENyZWF0
aW9uKToKKyAgICAgICAgKEpTQzo6cHJpbnRhYmxlTmFtZSk6CisgICAgICAgIChKU0M6OkpTTW9k
dWxlUmVjb3JkOjpkdW1wKToKKyAgICAgICAgKiBydW50aW1lL0pTTW9kdWxlUmVjb3JkLmg6IFJl
bmFtZWQgZnJvbSBTb3VyY2UvSmF2YVNjcmlwdENvcmUvcGFyc2VyL01vZHVsZVJlY29yZC5oLgor
ICAgICAgICAoSlNDOjpKU01vZHVsZVJlY29yZDo6SW1wb3J0RW50cnk6OmlzTmFtZXNwYWNlKToK
KyAgICAgICAgKEpTQzo6SlNNb2R1bGVSZWNvcmQ6OmNyZWF0ZVN0cnVjdHVyZSk6CisgICAgICAg
IChKU0M6OkpTTW9kdWxlUmVjb3JkOjpjcmVhdGUpOgorICAgICAgICAoSlNDOjpKU01vZHVsZVJl
Y29yZDo6cmVxdWVzdGVkTW9kdWxlcyk6CisgICAgICAgIChKU0M6OkpTTW9kdWxlUmVjb3JkOjpK
U01vZHVsZVJlY29yZCk6CisgICAgICAgIChKU0M6OkpTTW9kdWxlUmVjb3JkOjphcHBlbmRSZXF1
ZXN0ZWRNb2R1bGUpOgorICAgICAgICAoSlNDOjpKU01vZHVsZVJlY29yZDo6YWRkSW1wb3J0RW50
cnkpOgorICAgICAgICAoSlNDOjpKU01vZHVsZVJlY29yZDo6YWRkRXhwb3J0RW50cnkpOgorICAg
ICAgICAoSlNDOjpKU01vZHVsZVJlY29yZDo6YWRkU3RhckV4cG9ydEVudHJ5KToKKyAgICAgICAg
KiBydW50aW1lL0pTUHJvbWlzZUNvbnN0cnVjdG9yLmNwcDoKKyAgICAgICAgKEpTQzo6SlNQcm9t
aXNlQ29uc3RydWN0b3I6OmZpbmlzaENyZWF0aW9uKToKKyAgICAgICAgKiBydW50aW1lL0pTUHJv
bWlzZURlZmVycmVkLmNwcDoKKyAgICAgICAgKEpTQzo6Y2FsbEZ1bmN0aW9uKToKKyAgICAgICAg
KEpTQzo6SlNQcm9taXNlRGVmZXJyZWQ6OnJlc29sdmUpOgorICAgICAgICAoSlNDOjpKU1Byb21p
c2VEZWZlcnJlZDo6cmVqZWN0KToKKyAgICAgICAgQWRkIGhlbHBlciBtZXRob2RzIHRvIHVzZSBK
U1Byb21pc2VEZWZlcnJlZCBlYXNpbHkgZnJvbSB0aGUgQysrIHdvcmxkLgorICAgICAgICAqIHJ1
bnRpbWUvSlNQcm9taXNlRGVmZXJyZWQuaDoKKyAgICAgICAgKiBydW50aW1lL0pTUHJvbWlzZVBy
b3RvdHlwZS5jcHA6CisgICAgICAgIChKU0M6OkpTUHJvbWlzZVByb3RvdHlwZTo6Y3JlYXRlKToK
KyAgICAgICAgKEpTQzo6SlNQcm9taXNlUHJvdG90eXBlOjpKU1Byb21pc2VQcm90b3R5cGUpOgor
ICAgICAgICAoSlNDOjpKU1Byb21pc2VQcm90b3R5cGU6OmZpbmlzaENyZWF0aW9uKToKKyAgICAg
ICAgKiBydW50aW1lL0pTUHJvbWlzZVByb3RvdHlwZS5oOgorICAgICAgICAqIHJ1bnRpbWUvTWFw
UHJvdG90eXBlLmNwcDoKKyAgICAgICAgKEpTQzo6TWFwUHJvdG90eXBlOjpmaW5pc2hDcmVhdGlv
bik6CisgICAgICAgICogcnVudGltZS9Nb2R1bGVMb2FkZXJPYmplY3QuY3BwOiBBZGRlZC4KKyAg
ICAgICAgKEpTQzo6TW9kdWxlTG9hZGVyT2JqZWN0OjpNb2R1bGVMb2FkZXJPYmplY3QpOgorICAg
ICAgICAoSlNDOjpNb2R1bGVMb2FkZXJPYmplY3Q6OmZpbmlzaENyZWF0aW9uKToKKyAgICAgICAg
KEpTQzo6TW9kdWxlTG9hZGVyT2JqZWN0OjpnZXRPd25Qcm9wZXJ0eVNsb3QpOgorICAgICAgICAo
SlNDOjpwcmludGFibGVNb2R1bGVLZXkpOgorICAgICAgICAoSlNDOjpNb2R1bGVMb2FkZXJPYmpl
Y3Q6OnByb3ZpZGUpOgorICAgICAgICAoSlNDOjpNb2R1bGVMb2FkZXJPYmplY3Q6OnJlcXVlc3RJ
bnN0YW50aWF0ZUFsbCk6CisgICAgICAgIChKU0M6Ok1vZHVsZUxvYWRlck9iamVjdDo6cmVzb2x2
ZSk6CisgICAgICAgIChKU0M6Ok1vZHVsZUxvYWRlck9iamVjdDo6ZmV0Y2gpOgorICAgICAgICAo
SlNDOjpNb2R1bGVMb2FkZXJPYmplY3Q6OnRyYW5zbGF0ZSk6CisgICAgICAgIChKU0M6Ok1vZHVs
ZUxvYWRlck9iamVjdDo6aW5zdGFudGlhdGUpOgorICAgICAgICAoSlNDOjptb2R1bGVMb2FkZXJP
YmplY3RQYXJzZU1vZHVsZSk6CisgICAgICAgIChKU0M6Om1vZHVsZUxvYWRlck9iamVjdFJlcXVl
c3RlZE1vZHVsZXMpOgorICAgICAgICAoSlNDOjptb2R1bGVMb2FkZXJPYmplY3RSZXNvbHZlKToK
KyAgICAgICAgKEpTQzo6bW9kdWxlTG9hZGVyT2JqZWN0RmV0Y2gpOgorICAgICAgICAoSlNDOjpt
b2R1bGVMb2FkZXJPYmplY3RUcmFuc2xhdGUpOgorICAgICAgICAoSlNDOjptb2R1bGVMb2FkZXJP
YmplY3RJbnN0YW50aWF0ZSk6CisgICAgICAgICogcnVudGltZS9Nb2R1bGVMb2FkZXJPYmplY3Qu
aDogQWRkZWQuCisgICAgICAgIChKU0M6Ok1vZHVsZUxvYWRlck9iamVjdDo6Y3JlYXRlKToKKyAg
ICAgICAgKEpTQzo6TW9kdWxlTG9hZGVyT2JqZWN0OjpjcmVhdGVTdHJ1Y3R1cmUpOgorICAgICAg
ICAqIHJ1bnRpbWUvT3B0aW9ucy5oOgorCiAyMDE1LTA4LTE0ICBSeW9zdWtlIE5pd2EgIDxybml3
YUB3ZWJraXQub3JnPgogCiAgICAgICAgIEVTNiBjbGFzcyBzeW50YXggc2hvdWxkIGFsbG93IGNv
bXB1dGVkIG5hbWUgbWV0aG9kCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9DaGFuZ2VMb2cg
Yi9Tb3VyY2UvV2ViQ29yZS9DaGFuZ2VMb2cKaW5kZXggYmY3ZjczYTJkODBkMjdhYjhiNjQzYjM4
MGI2OTU3YzU0MWQ5MGQ5OS4uODQzYjA5ZWNhNDk1YzM1ZWRmNzcwYWFmN2ZiMDAzNjM0NzZhNDUw
NSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvQ2hhbmdlTG9nCisrKyBiL1NvdXJjZS9XZWJD
b3JlL0NoYW5nZUxvZwpAQCAtMSwzICsxLDE1IEBACisyMDE1LTA4LTE1ICBZdXN1a2UgU3V6dWtp
ICA8dXRhdGFuZS50ZWFAZ21haWwuY29tPgorCisgICAgICAgIFtFUzZdIHByb3RvdHlwaW5nIG1v
ZHVsZSBsb2FkZXIgaW4gSlNDIHNoZWxsCisgICAgICAgIGh0dHBzOi8vYnVncy53ZWJraXQub3Jn
L3Nob3dfYnVnLmNnaT9pZD0xNDc4NzYKKworICAgICAgICBSZXZpZXdlZCBieSBOT0JPRFkgKE9P
UFMhKS4KKworICAgICAgICBKdXN0IGZpbGwgTG9hZGVyIGhvb2tzIHdpdGggbnVsbHB0ci4KKwor
ICAgICAgICAqIGJpbmRpbmdzL2pzL0pTRE9NV2luZG93QmFzZS5jcHA6CisgICAgICAgICogYmlu
ZGluZ3MvanMvSlNXb3JrZXJHbG9iYWxTY29wZUJhc2UuY3BwOgorCiAyMDE1LTA4LTE0ICBNYXR0
aGV3IERhaXRlciAgPG1kYWl0ZXJAYXBwbGUuY29tPgogCiAgICAgICAgIEltcGxlbWVudGluZyBl
bnVtZXJhdGVEZXZpY2VzCmRpZmYgLS1naXQgYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvQ01ha2VM
aXN0cy50eHQgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvQ01ha2VMaXN0cy50eHQKaW5kZXggODY1
NTJhOTZmNzk0MzMxMTllNDc4OGRmOTYwNDdkNmFhMmVkZGZkOS4uNWM5ODE4YTA1NDAzYzQ4YjE1
MWI0MTAzZGZmMDg2OTMzNjU0Y2FjYSAxMDA2NDQKLS0tIGEvU291cmNlL0phdmFTY3JpcHRDb3Jl
L0NNYWtlTGlzdHMudHh0CisrKyBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9DTWFrZUxpc3RzLnR4
dApAQCAtMzg2LDcgKzM4Niw2IEBAIHNldChKYXZhU2NyaXB0Q29yZV9TT1VSQ0VTCiAKICAgICBw
YXJzZXIvTGV4ZXIuY3BwCiAgICAgcGFyc2VyL01vZHVsZUFuYWx5emVyLmNwcAotICAgIHBhcnNl
ci9Nb2R1bGVSZWNvcmQuY3BwCiAgICAgcGFyc2VyL05vZGVzLmNwcAogICAgIHBhcnNlci9Ob2Rl
c0FuYWx5emVNb2R1bGUuY3BwCiAgICAgcGFyc2VyL1BhcnNlci5jcHAKQEAgLTUyNSw2ICs1MjQs
NyBAQCBzZXQoSmF2YVNjcmlwdENvcmVfUlVOVElNRV9TT1VSQ0VTCiAgICAgcnVudGltZS9KU0xv
Y2suY3BwCiAgICAgcnVudGltZS9KU01hcC5jcHAKICAgICBydW50aW1lL0pTTWFwSXRlcmF0b3Iu
Y3BwCisgICAgcnVudGltZS9KU01vZHVsZVJlY29yZC5jcHAKICAgICBydW50aW1lL0pTTm90QW5P
YmplY3QuY3BwCiAgICAgcnVudGltZS9KU09OT2JqZWN0LmNwcAogICAgIHJ1bnRpbWUvSlNPYmpl
Y3QuY3BwCkBAIC01NTksNiArNTU5LDcgQEAgc2V0KEphdmFTY3JpcHRDb3JlX1JVTlRJTUVfU09V
UkNFUwogICAgIHJ1bnRpbWUvTWF0aENvbW1vbi5jcHAKICAgICBydW50aW1lL01hdGhPYmplY3Qu
Y3BwCiAgICAgcnVudGltZS9NZW1vcnlTdGF0aXN0aWNzLmNwcAorICAgIHJ1bnRpbWUvTW9kdWxl
TG9hZGVyT2JqZWN0LmNwcAogICAgIHJ1bnRpbWUvTmF0aXZlRXJyb3JDb25zdHJ1Y3Rvci5jcHAK
ICAgICBydW50aW1lL05hdGl2ZUVycm9yUHJvdG90eXBlLmNwcAogICAgIHJ1bnRpbWUvTnVsbEdl
dHRlckZ1bmN0aW9uLmNwcApAQCAtNjUxLDYgKzY1Miw3IEBAIHNldChKYXZhU2NyaXB0Q29yZV9M
VVRfRklMRVMKICAgICBydW50aW1lL0pTT05PYmplY3QuY3BwCiAgICAgcnVudGltZS9KU1Byb21p
c2VDb25zdHJ1Y3Rvci5jcHAKICAgICBydW50aW1lL0pTUHJvbWlzZVByb3RvdHlwZS5jcHAKKyAg
ICBydW50aW1lL01vZHVsZUxvYWRlck9iamVjdC5jcHAKICAgICBydW50aW1lL051bWJlckNvbnN0
cnVjdG9yLmNwcAogICAgIHJ1bnRpbWUvTnVtYmVyUHJvdG90eXBlLmNwcAogICAgIHJ1bnRpbWUv
T2JqZWN0Q29uc3RydWN0b3IuY3BwCmRpZmYgLS1naXQgYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUv
RGVyaXZlZFNvdXJjZXMubWFrZSBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9EZXJpdmVkU291cmNl
cy5tYWtlCmluZGV4IDFjYjJkNWNiYTNiZDM1ZTIwOWY5ZDJjN2JiNDY3YjJiOTZmN2ZhNWQuLjUz
YWJkYjZhZGNiNzEwOGU3ZWYxOTNiOTY5OTU2NDk1OTVmMmMxNTEgMTAwNjQ0Ci0tLSBhL1NvdXJj
ZS9KYXZhU2NyaXB0Q29yZS9EZXJpdmVkU291cmNlcy5tYWtlCisrKyBiL1NvdXJjZS9KYXZhU2Ny
aXB0Q29yZS9EZXJpdmVkU291cmNlcy5tYWtlCkBAIC01NSw2ICs1NSw3IEBAIGFsbCA6IFwKICAg
ICBKU1Byb21pc2VDb25zdHJ1Y3Rvci5sdXQuaCBcCiAgICAgS2V5d29yZExvb2t1cC5oIFwKICAg
ICBMZXhlci5sdXQuaCBcCisgICAgTW9kdWxlTG9hZGVyT2JqZWN0Lmx1dC5oIFwKICAgICBOdW1i
ZXJDb25zdHJ1Y3Rvci5sdXQuaCBcCiAgICAgTnVtYmVyUHJvdG90eXBlLmx1dC5oIFwKICAgICBP
YmplY3RDb25zdHJ1Y3Rvci5sdXQuaCBcCmRpZmYgLS1naXQgYS9Tb3VyY2UvSmF2YVNjcmlwdENv
cmUvSmF2YVNjcmlwdENvcmUudmN4cHJvai9KYXZhU2NyaXB0Q29yZS52Y3hwcm9qIGIvU291cmNl
L0phdmFTY3JpcHRDb3JlL0phdmFTY3JpcHRDb3JlLnZjeHByb2ovSmF2YVNjcmlwdENvcmUudmN4
cHJvagppbmRleCAwMWQ4MzdmMjk2Y2U0MmY3NjU2MTc5MDI3MGNiMzY4MDM0MmRjYjllLi5mZmRj
MTA2NzUwODNjN2I3MTQ2OWQwZjI0NTIyMDJiZGE3NWQ2YWI2IDEwMDY0NAotLS0gYS9Tb3VyY2Uv
SmF2YVNjcmlwdENvcmUvSmF2YVNjcmlwdENvcmUudmN4cHJvai9KYXZhU2NyaXB0Q29yZS52Y3hw
cm9qCisrKyBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9KYXZhU2NyaXB0Q29yZS52Y3hwcm9qL0ph
dmFTY3JpcHRDb3JlLnZjeHByb2oKQEAgLTY2MSw3ICs2NjEsNiBAQAogICAgIDxDbENvbXBpbGUg
SW5jbHVkZT0iLi5cbGx2bVxMTFZNQVBJLmNwcCIgLz4KICAgICA8Q2xDb21waWxlIEluY2x1ZGU9
Ii4uXHBhcnNlclxMZXhlci5jcHAiIC8+CiAgICAgPENsQ29tcGlsZSBJbmNsdWRlPSIuLlxwYXJz
ZXJcTW9kdWxlQW5hbHl6ZXIuY3BwIiAvPgotICAgIDxDbENvbXBpbGUgSW5jbHVkZT0iLi5ccGFy
c2VyXE1vZHVsZVJlY29yZC5jcHAiIC8+CiAgICAgPENsQ29tcGlsZSBJbmNsdWRlPSIuLlxwYXJz
ZXJcTm9kZXMuY3BwIiAvPgogICAgIDxDbENvbXBpbGUgSW5jbHVkZT0iLi5ccGFyc2VyXE5vZGVz
QW5hbHl6ZU1vZHVsZS5jcHAiIC8+CiAgICAgPENsQ29tcGlsZSBJbmNsdWRlPSIuLlxwYXJzZXJc
UGFyc2VyLmNwcCIgLz4KQEAgLTc3Nyw2ICs3NzYsNyBAQAogICAgIDxDbENvbXBpbGUgSW5jbHVk
ZT0iLi5ccnVudGltZVxKU0xvY2suY3BwIiAvPgogICAgIDxDbENvbXBpbGUgSW5jbHVkZT0iLi5c
cnVudGltZVxKU01hcC5jcHAiIC8+CiAgICAgPENsQ29tcGlsZSBJbmNsdWRlPSIuLlxydW50aW1l
XEpTTWFwSXRlcmF0b3IuY3BwIiAvPgorICAgIDxDbENvbXBpbGUgSW5jbHVkZT0iLi5ccnVudGlt
ZVxKU01vZHVsZVJlY29yZC5jcHAiIC8+CiAgICAgPENsQ29tcGlsZSBJbmNsdWRlPSIuLlxydW50
aW1lXEpTTm90QW5PYmplY3QuY3BwIiAvPgogICAgIDxDbENvbXBpbGUgSW5jbHVkZT0iLi5ccnVu
dGltZVxKU09OT2JqZWN0LmNwcCIgLz4KICAgICA8Q2xDb21waWxlIEluY2x1ZGU9Ii4uXHJ1bnRp
bWVcSlNPYmplY3QuY3BwIiAvPgpAQCAtODEyLDYgKzgxMiw3IEBACiAgICAgPENsQ29tcGlsZSBJ
bmNsdWRlPSIuLlxydW50aW1lXE1hdGhDb21tb24uY3BwIiAvPgogICAgIDxDbENvbXBpbGUgSW5j
bHVkZT0iLi5ccnVudGltZVxNYXRoT2JqZWN0LmNwcCIgLz4KICAgICA8Q2xDb21waWxlIEluY2x1
ZGU9Ii4uXHJ1bnRpbWVcTWVtb3J5U3RhdGlzdGljcy5jcHAiIC8+CisgICAgPENsQ29tcGlsZSBJ
bmNsdWRlPSIuLlxydW50aW1lXE1vZHVsZUxvYWRlck9iamVjdC5jcHAiIC8+CiAgICAgPENsQ29t
cGlsZSBJbmNsdWRlPSIuLlxydW50aW1lXE5hdGl2ZUVycm9yQ29uc3RydWN0b3IuY3BwIiAvPgog
ICAgIDxDbENvbXBpbGUgSW5jbHVkZT0iLi5ccnVudGltZVxOYXRpdmVFcnJvclByb3RvdHlwZS5j
cHAiIC8+CiAgICAgPENsQ29tcGlsZSBJbmNsdWRlPSIuLlxydW50aW1lXE51bGxHZXR0ZXJGdW5j
dGlvbi5jcHAiIC8+CkBAIC05MjMsNiArOTI0LDcgQEAKICAgICA8Q2xJbmNsdWRlIEluY2x1ZGU9
IiQoQ29uZmlndXJhdGlvbkJ1aWxkRGlyKVxvYmokKFBsYXRmb3JtQXJjaGl0ZWN0dXJlKVwkKFBy
b2plY3ROYW1lKVxEZXJpdmVkU291cmNlc1xOdW1iZXJDb25zdHJ1Y3Rvci5sdXQuaCIgLz4KICAg
ICA8Q2xJbmNsdWRlIEluY2x1ZGU9IiQoQ29uZmlndXJhdGlvbkJ1aWxkRGlyKVxvYmokKFBsYXRm
b3JtQXJjaGl0ZWN0dXJlKVwkKFByb2plY3ROYW1lKVxEZXJpdmVkU291cmNlc1xOdW1iZXJQcm90
b3R5cGUubHV0LmgiIC8+CiAgICAgPENsSW5jbHVkZSBJbmNsdWRlPSIkKENvbmZpZ3VyYXRpb25C
dWlsZERpcilcb2JqJChQbGF0Zm9ybUFyY2hpdGVjdHVyZSlcJChQcm9qZWN0TmFtZSlcRGVyaXZl
ZFNvdXJjZXNcT2JqZWN0Q29uc3RydWN0b3IubHV0LmgiIC8+CisgICAgPENsSW5jbHVkZSBJbmNs
dWRlPSIkKENvbmZpZ3VyYXRpb25CdWlsZERpcilcb2JqJChQbGF0Zm9ybUFyY2hpdGVjdHVyZSlc
JChQcm9qZWN0TmFtZSlcRGVyaXZlZFNvdXJjZXNcTW9kdWxlTG9hZGVyT2JqZWN0Lmx1dC5oIiAv
PgogICAgIDxDbEluY2x1ZGUgSW5jbHVkZT0iJChDb25maWd1cmF0aW9uQnVpbGREaXIpXG9iaiQo
UGxhdGZvcm1BcmNoaXRlY3R1cmUpXCQoUHJvamVjdE5hbWUpXERlcml2ZWRTb3VyY2VzXFJlZmxl
Y3RPYmplY3QubHV0LmgiIC8+CiAgICAgPENsSW5jbHVkZSBJbmNsdWRlPSIkKENvbmZpZ3VyYXRp
b25CdWlsZERpcilcb2JqJChQbGF0Zm9ybUFyY2hpdGVjdHVyZSlcJChQcm9qZWN0TmFtZSlcRGVy
aXZlZFNvdXJjZXNcUmVnRXhwQ29uc3RydWN0b3IubHV0LmgiIC8+CiAgICAgPENsSW5jbHVkZSBJ
bmNsdWRlPSIkKENvbmZpZ3VyYXRpb25CdWlsZERpcilcb2JqJChQbGF0Zm9ybUFyY2hpdGVjdHVy
ZSlcJChQcm9qZWN0TmFtZSlcRGVyaXZlZFNvdXJjZXNcUmVnRXhwSml0VGFibGVzLmgiIC8+CkBA
IC0xNDU0LDcgKzE0NTYsNiBAQAogICAgIDxDbEluY2x1ZGUgSW5jbHVkZT0iLi5ccGFyc2VyXEFT
VEJ1aWxkZXIuaCIgLz4KICAgICA8Q2xJbmNsdWRlIEluY2x1ZGU9Ii4uXHBhcnNlclxMZXhlci5o
IiAvPgogICAgIDxDbEluY2x1ZGUgSW5jbHVkZT0iLi5ccGFyc2VyXE1vZHVsZUFuYWx5emVyLmgi
IC8+Ci0gICAgPENsSW5jbHVkZSBJbmNsdWRlPSIuLlxwYXJzZXJcTW9kdWxlUmVjb3JkLmgiIC8+
CiAgICAgPENsSW5jbHVkZSBJbmNsdWRlPSIuLlxwYXJzZXJcTm9kZUNvbnN0cnVjdG9ycy5oIiAv
PgogICAgIDxDbEluY2x1ZGUgSW5jbHVkZT0iLi5ccGFyc2VyXE5vZGVzLmgiIC8+CiAgICAgPENs
SW5jbHVkZSBJbmNsdWRlPSIuLlxwYXJzZXJcUGFyc2VyLmgiIC8+CkBAIC0xNjE5LDYgKzE2MjAs
NyBAQAogICAgIDxDbEluY2x1ZGUgSW5jbHVkZT0iLi5ccnVudGltZVxKU0xvY2suaCIgLz4KICAg
ICA8Q2xJbmNsdWRlIEluY2x1ZGU9Ii4uXHJ1bnRpbWVcSlNNYXAuaCIgLz4KICAgICA8Q2xJbmNs
dWRlIEluY2x1ZGU9Ii4uXHJ1bnRpbWVcSlNNYXBJdGVyYXRvci5oIiAvPgorICAgIDxDbEluY2x1
ZGUgSW5jbHVkZT0iLi5ccnVudGltZVxKU01vZHVsZVJlY29yZC5oIiAvPgogICAgIDxDbEluY2x1
ZGUgSW5jbHVkZT0iLi5ccnVudGltZVxKU05vdEFuT2JqZWN0LmgiIC8+CiAgICAgPENsSW5jbHVk
ZSBJbmNsdWRlPSIuLlxydW50aW1lXEpTT05PYmplY3QuaCIgLz4KICAgICA8Q2xJbmNsdWRlIElu
Y2x1ZGU9Ii4uXHJ1bnRpbWVcSlNPYmplY3QuaCIgLz4KQEAgLTE2NjQsNiArMTY2Niw3IEBACiAg
ICAgPENsSW5jbHVkZSBJbmNsdWRlPSIuLlxydW50aW1lXE1hdGhDb21tb24uaCIgLz4KICAgICA8
Q2xJbmNsdWRlIEluY2x1ZGU9Ii4uXHJ1bnRpbWVcTWF0aE9iamVjdC5oIiAvPgogICAgIDxDbElu
Y2x1ZGUgSW5jbHVkZT0iLi5ccnVudGltZVxNZW1vcnlTdGF0aXN0aWNzLmgiIC8+CisgICAgPENs
SW5jbHVkZSBJbmNsdWRlPSIuLlxydW50aW1lXE1vZHVsZUxvYWRlck9iamVjdC5oIiAvPgogICAg
IDxDbEluY2x1ZGUgSW5jbHVkZT0iLi5ccnVudGltZVxNaWNyb3Rhc2suaCIgLz4KICAgICA8Q2xJ
bmNsdWRlIEluY2x1ZGU9Ii4uXHJ1bnRpbWVcTmF0aXZlRXJyb3JDb25zdHJ1Y3Rvci5oIiAvPgog
ICAgIDxDbEluY2x1ZGUgSW5jbHVkZT0iLi5ccnVudGltZVxOYXRpdmVFcnJvclByb3RvdHlwZS5o
IiAvPgpkaWZmIC0tZ2l0IGEvU291cmNlL0phdmFTY3JpcHRDb3JlL0phdmFTY3JpcHRDb3JlLnZj
eHByb2ovSmF2YVNjcmlwdENvcmUudmN4cHJvai5maWx0ZXJzIGIvU291cmNlL0phdmFTY3JpcHRD
b3JlL0phdmFTY3JpcHRDb3JlLnZjeHByb2ovSmF2YVNjcmlwdENvcmUudmN4cHJvai5maWx0ZXJz
CmluZGV4IGNlMWFiMjQ4MDgxYWVmZGI4ZWE1ZmVkZjM0YWEzZDI5ZmM0ODk5MTguLmI1ZDM3MjQw
Mjg5ZDA1Mzk5YmQ0NGE3ZmQ3OWYwNDIwMWIwNjAzMTggMTAwNjQ0Ci0tLSBhL1NvdXJjZS9KYXZh
U2NyaXB0Q29yZS9KYXZhU2NyaXB0Q29yZS52Y3hwcm9qL0phdmFTY3JpcHRDb3JlLnZjeHByb2ou
ZmlsdGVycworKysgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvSmF2YVNjcmlwdENvcmUudmN4cHJv
ai9KYXZhU2NyaXB0Q29yZS52Y3hwcm9qLmZpbHRlcnMKQEAgLTQ1OSw5ICs0NTksNiBAQAogICAg
IDxDbENvbXBpbGUgSW5jbHVkZT0iLi5ccGFyc2VyXE1vZHVsZUFuYWx5emVyLmNwcCI+CiAgICAg
ICA8RmlsdGVyPnBhcnNlcjwvRmlsdGVyPgogICAgIDwvQ2xDb21waWxlPgotICAgIDxDbENvbXBp
bGUgSW5jbHVkZT0iLi5ccGFyc2VyXE1vZHVsZVJlY29yZC5jcHAiPgotICAgICAgPEZpbHRlcj5w
YXJzZXI8L0ZpbHRlcj4KLSAgICA8L0NsQ29tcGlsZT4KICAgICA8Q2xDb21waWxlIEluY2x1ZGU9
Ii4uXHBhcnNlclxOb2Rlcy5jcHAiPgogICAgICAgPEZpbHRlcj5wYXJzZXI8L0ZpbHRlcj4KICAg
ICA8L0NsQ29tcGlsZT4KQEAgLTcyNiw2ICs3MjMsOSBAQAogICAgIDxDbENvbXBpbGUgSW5jbHVk
ZT0iLi5ccnVudGltZVxKU01hcC5jcHAiPgogICAgICAgPEZpbHRlcj5ydW50aW1lPC9GaWx0ZXI+
CiAgICAgPC9DbENvbXBpbGU+CisgICAgPENsQ29tcGlsZSBJbmNsdWRlPSIuLlxydW50aW1lXEpT
TW9kdWxlUmVjb3JkLmNwcCI+CisgICAgICA8RmlsdGVyPnJ1bnRpbWU8L0ZpbHRlcj4KKyAgICA8
L0NsQ29tcGlsZT4KICAgICA8Q2xDb21waWxlIEluY2x1ZGU9Ii4uXHJ1bnRpbWVcSlNOb3RBbk9i
amVjdC5jcHAiPgogICAgICAgPEZpbHRlcj5ydW50aW1lPC9GaWx0ZXI+CiAgICAgPC9DbENvbXBp
bGU+CkBAIC0xNjk1LDYgKzE2OTUsOSBAQAogICAgIDxDbENvbXBpbGUgSW5jbHVkZT0iLi5ccnVu
dGltZVxNZW1vcnlTdGF0aXN0aWNzLmNwcCI+CiAgICAgICA8RmlsdGVyPnJ1bnRpbWU8L0ZpbHRl
cj4KICAgICA8L0NsQ29tcGlsZT4KKyAgICA8Q2xDb21waWxlIEluY2x1ZGU9Ii4uXHJ1bnRpbWVc
TW9kdWxlTG9hZGVyT2JqZWN0LmNwcCI+CisgICAgICA8RmlsdGVyPnJ1bnRpbWU8L0ZpbHRlcj4K
KyAgICA8L0NsQ29tcGlsZT4KICAgICA8Q2xDb21waWxlIEluY2x1ZGU9Ii4uXGJ5dGVjb2RlXENv
bXBsZXhHZXRTdGF0dXMuY3BwIj4KICAgICAgIDxGaWx0ZXI+Ynl0ZWNvZGU8L0ZpbHRlcj4KICAg
ICA8L0NsQ29tcGlsZT4KQEAgLTI0OTUsOSArMjQ5OCw2IEBACiAgICAgPENsSW5jbHVkZSBJbmNs
dWRlPSIuLlxwYXJzZXJcTW9kdWxlQW5hbHl6ZXIuaCI+CiAgICAgICA8RmlsdGVyPnBhcnNlcjwv
RmlsdGVyPgogICAgIDwvQ2xJbmNsdWRlPgotICAgIDxDbEluY2x1ZGUgSW5jbHVkZT0iLi5ccGFy
c2VyXE1vZHVsZVJlY29yZC5oIj4KLSAgICAgIDxGaWx0ZXI+cGFyc2VyPC9GaWx0ZXI+Ci0gICAg
PC9DbEluY2x1ZGU+CiAgICAgPENsSW5jbHVkZSBJbmNsdWRlPSIuLlxwYXJzZXJcTm9kZUNvbnN0
cnVjdG9ycy5oIj4KICAgICAgIDxGaWx0ZXI+cGFyc2VyPC9GaWx0ZXI+CiAgICAgPC9DbEluY2x1
ZGU+CkBAIC0zMjA3LDYgKzMyMDcsOSBAQAogICAgIDxDbEluY2x1ZGUgSW5jbHVkZT0iJChDb25m
aWd1cmF0aW9uQnVpbGREaXIpXG9iaiQoUGxhdGZvcm1BcmNoaXRlY3R1cmUpXCQoUHJvamVjdE5h
bWUpXERlcml2ZWRTb3VyY2VzXExleGVyLmx1dC5oIj4KICAgICAgIDxGaWx0ZXI+RGVyaXZlZCBT
b3VyY2VzPC9GaWx0ZXI+CiAgICAgPC9DbEluY2x1ZGU+CisgICAgPENsSW5jbHVkZSBJbmNsdWRl
PSIkKENvbmZpZ3VyYXRpb25CdWlsZERpcilcb2JqJChQbGF0Zm9ybUFyY2hpdGVjdHVyZSlcJChQ
cm9qZWN0TmFtZSlcRGVyaXZlZFNvdXJjZXNcTW9kdWxlTG9hZGVyT2JqZWN0Lmx1dC5oIj4KKyAg
ICAgIDxGaWx0ZXI+RGVyaXZlZCBTb3VyY2VzPC9GaWx0ZXI+CisgICAgPC9DbEluY2x1ZGU+CiAg
ICAgPENsSW5jbHVkZSBJbmNsdWRlPSIkKENvbmZpZ3VyYXRpb25CdWlsZERpcilcb2JqJChQbGF0
Zm9ybUFyY2hpdGVjdHVyZSlcJChQcm9qZWN0TmFtZSlcRGVyaXZlZFNvdXJjZXNcTnVtYmVyQ29u
c3RydWN0b3IubHV0LmgiPgogICAgICAgPEZpbHRlcj5EZXJpdmVkIFNvdXJjZXM8L0ZpbHRlcj4K
ICAgICA8L0NsSW5jbHVkZT4KQEAgLTM0NDQsNiArMzQ0Nyw5IEBACiAgICAgPENsSW5jbHVkZSBJ
bmNsdWRlPSIuLlxydW50aW1lXEpTTWFwLmgiPgogICAgICAgPEZpbHRlcj5ydW50aW1lPC9GaWx0
ZXI+CiAgICAgPC9DbEluY2x1ZGU+CisgICAgPENsSW5jbHVkZSBJbmNsdWRlPSIuLlxydW50aW1l
XEpTTW9kdWxlUmVjb3JkLmgiPgorICAgICAgPEZpbHRlcj5ydW50aW1lPC9GaWx0ZXI+CisgICAg
PC9DbEluY2x1ZGU+CiAgICAgPENsSW5jbHVkZSBJbmNsdWRlPSIuLlxydW50aW1lXEpTU2V0Lmgi
PgogICAgICAgPEZpbHRlcj5ydW50aW1lPC9GaWx0ZXI+CiAgICAgPC9DbEluY2x1ZGU+CkBAIC00
MjM3LDYgKzQyNDMsOSBAQAogICAgIDxDbEluY2x1ZGUgSW5jbHVkZT0iLi5ccnVudGltZVxNZW1v
cnlTdGF0aXN0aWNzLmgiPgogICAgICAgPEZpbHRlcj5ydW50aW1lPC9GaWx0ZXI+CiAgICAgPC9D
bEluY2x1ZGU+CisgICAgPENsSW5jbHVkZSBJbmNsdWRlPSIuLlxydW50aW1lXE1vZHVsZUxvYWRl
ck9iamVjdC5oIj4KKyAgICAgIDxGaWx0ZXI+cnVudGltZTwvRmlsdGVyPgorICAgIDwvQ2xJbmNs
dWRlPgogICAgIDxDbEluY2x1ZGUgSW5jbHVkZT0iLi5cYnl0ZWNvZGVcQ29tcGxleEdldFN0YXR1
cy5oIj4KICAgICAgIDxGaWx0ZXI+Ynl0ZWNvZGU8L0ZpbHRlcj4KICAgICA8L0NsSW5jbHVkZT4K
ZGlmZiAtLWdpdCBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9KYXZhU2NyaXB0Q29yZS54Y29kZXBy
b2ovcHJvamVjdC5wYnhwcm9qIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL0phdmFTY3JpcHRDb3Jl
Lnhjb2RlcHJvai9wcm9qZWN0LnBieHByb2oKaW5kZXggZmRjNjgzNzFkZGIyYmU1NTM0OTQxZjgz
MmM4YzcyMDFiNDA2ZGFhZi4uOTY5MjU3NDA5OTJjN2UzMjlmMGFiYjVmN2I5MjcxZjcwZjc2M2Fk
OSAxMDA2NDQKLS0tIGEvU291cmNlL0phdmFTY3JpcHRDb3JlL0phdmFTY3JpcHRDb3JlLnhjb2Rl
cHJvai9wcm9qZWN0LnBieHByb2oKKysrIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL0phdmFTY3Jp
cHRDb3JlLnhjb2RlcHJvai9wcm9qZWN0LnBieHByb2oKQEAgLTE2OTQsMTMgKzE2OTQsMTUgQEAK
IAkJRTMzNjM3QTYxQjYzMjIwMjAwRUUwODQwIC8qIFJlZmxlY3RPYmplY3QuaCBpbiBIZWFkZXJz
ICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IEUzMzYzN0E0MUI2MzIyMDIwMEVF
MDg0MCAvKiBSZWZsZWN0T2JqZWN0LmggKi87IHNldHRpbmdzID0ge0FUVFJJQlVURVMgPSAoUHJp
dmF0ZSwgKTsgfTsgfTsKIAkJRTMzQjNFMjYxQjdBQkQ3NTAwNDhEQjJFIC8qIEluc3BlY3Rvcklu
c3RydW1lbnRhdGlvbk9iamVjdC5sdXQuaCBpbiBIZWFkZXJzICovID0ge2lzYSA9IFBCWEJ1aWxk
RmlsZTsgZmlsZVJlZiA9IEUzM0IzRTI1MUI3QUJENzUwMDQ4REIyRSAvKiBJbnNwZWN0b3JJbnN0
cnVtZW50YXRpb25PYmplY3QubHV0LmggKi87IH07CiAJCUUzNTQ2MjJCMUI2MDY1RDEwMDU0NTM4
NiAvKiBDb25zdHJ1Y3RBYmlsaXR5LmggaW4gSGVhZGVycyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZp
bGU7IGZpbGVSZWYgPSBFMzU0NjIyQTFCNjA2NUQxMDA1NDUzODYgLyogQ29uc3RydWN0QWJpbGl0
eS5oICovOyBzZXR0aW5ncyA9IHtBVFRSSUJVVEVTID0gKFByaXZhdGUsICk7IH07IH07CisJCUUz
NTVGMzUyMUI3REM4NTMwMEM1MERDNSAvKiBNb2R1bGVMb2FkZXJPYmplY3QuY3BwIGluIFNvdXJj
ZXMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gRTM1NUYzNTAxQjdEQzg1MzAw
QzUwREM1IC8qIE1vZHVsZUxvYWRlck9iamVjdC5jcHAgKi87IH07CisJCUUzNTVGMzUzMUI3REM4
NTMwMEM1MERDNSAvKiBNb2R1bGVMb2FkZXJPYmplY3QuaCBpbiBIZWFkZXJzICovID0ge2lzYSA9
IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IEUzNTVGMzUxMUI3REM4NTMwMEM1MERDNSAvKiBNb2R1
bGVMb2FkZXJPYmplY3QuaCAqLzsgfTsKIAkJRTM3OTRFNzUxQjc3RUI5NzAwNTU0M0FFIC8qIE1v
ZHVsZUFuYWx5emVyLmNwcCBpbiBTb3VyY2VzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmls
ZVJlZiA9IEUzNzk0RTczMUI3N0VCOTcwMDU1NDNBRSAvKiBNb2R1bGVBbmFseXplci5jcHAgKi87
IH07CiAJCUUzNzk0RTc2MUI3N0VCOTcwMDU1NDNBRSAvKiBNb2R1bGVBbmFseXplci5oIGluIEhl
YWRlcnMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gRTM3OTRFNzQxQjc3RUI5
NzAwNTU0M0FFIC8qIE1vZHVsZUFuYWx5emVyLmggKi87IHNldHRpbmdzID0ge0FUVFJJQlVURVMg
PSAoUHJpdmF0ZSwgKTsgfTsgfTsKLQkJRTM5NjNDRUQxQjczRjc1MDAwRUI0Q0U1IC8qIE1vZHVs
ZVJlY29yZC5oIGluIEhlYWRlcnMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0g
RTM5NjNDRUIxQjczRjc1MDAwRUI0Q0U1IC8qIE1vZHVsZVJlY29yZC5oICovOyBzZXR0aW5ncyA9
IHtBVFRSSUJVVEVTID0gKFByaXZhdGUsICk7IH07IH07CiAJCUUzOTYzQ0VFMUI3M0Y3NTAwMEVC
NENFNSAvKiBOb2Rlc0FuYWx5emVNb2R1bGUuY3BwIGluIFNvdXJjZXMgKi8gPSB7aXNhID0gUEJY
QnVpbGRGaWxlOyBmaWxlUmVmID0gRTM5NjNDRUMxQjczRjc1MDAwRUI0Q0U1IC8qIE5vZGVzQW5h
bHl6ZU1vZHVsZS5jcHAgKi87IH07Ci0JCUUzQzA5RjU1MUI3OTY5MkEwMEVFMzZBMiAvKiBNb2R1
bGVSZWNvcmQuY3BwIGluIFNvdXJjZXMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVm
ID0gRTNDMDlGNTQxQjc5NjkyQTAwRUUzNkEyIC8qIE1vZHVsZVJlY29yZC5jcHAgKi87IH07CiAJ
CUUzNUUwMzVGMUI3QUI0M0UwMDczQUQyQSAvKiBJbnNwZWN0b3JJbnN0cnVtZW50YXRpb25PYmpl
Y3QuY3BwIGluIFNvdXJjZXMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gRTM1
RTAzNUQxQjdBQjQzRTAwNzNBRDJBIC8qIEluc3BlY3Rvckluc3RydW1lbnRhdGlvbk9iamVjdC5j
cHAgKi87IH07CiAJCUUzNUUwMzYwMUI3QUI0M0UwMDczQUQyQSAvKiBJbnNwZWN0b3JJbnN0cnVt
ZW50YXRpb25PYmplY3QuaCBpbiBIZWFkZXJzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmls
ZVJlZiA9IEUzNUUwMzVFMUI3QUI0M0UwMDczQUQyQSAvKiBJbnNwZWN0b3JJbnN0cnVtZW50YXRp
b25PYmplY3QuaCAqLzsgc2V0dGluZ3MgPSB7QVRUUklCVVRFUyA9IChQcml2YXRlLCApOyB9OyB9
OworCQlFMzlEQTRBNjFCN0U4QjdDMDA4NEYzM0EgLyogSlNNb2R1bGVSZWNvcmQuY3BwIGluIFNv
dXJjZXMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gRTM5REE0QTQxQjdFOEI3
QzAwODRGMzNBIC8qIEpTTW9kdWxlUmVjb3JkLmNwcCAqLzsgfTsKKwkJRTM5REE0QTcxQjdFOEI3
QzAwODRGMzNBIC8qIEpTTW9kdWxlUmVjb3JkLmggaW4gSGVhZGVycyAqLyA9IHtpc2EgPSBQQlhC
dWlsZEZpbGU7IGZpbGVSZWYgPSBFMzlEQTRBNTFCN0U4QjdDMDA4NEYzM0EgLyogSlNNb2R1bGVS
ZWNvcmQuaCAqLzsgc2V0dGluZ3MgPSB7QVRUUklCVVRFUyA9IChQcml2YXRlLCApOyB9OyB9Owog
CQlFM0VGODg3NDFCNjZERjIzMDAzRjI2Q0IgLyogSlNQcm9wZXJ0eU5hbWVJdGVyYXRvci5jcHAg
aW4gU291cmNlcyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSBFM0VGODg3MjFC
NjZERjIzMDAzRjI2Q0IgLyogSlNQcm9wZXJ0eU5hbWVJdGVyYXRvci5jcHAgKi87IH07CiAJCUUz
RUY4ODc1MUI2NkRGMjMwMDNGMjZDQiAvKiBKU1Byb3BlcnR5TmFtZUl0ZXJhdG9yLmggaW4gSGVh
ZGVycyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSBFM0VGODg3MzFCNjZERjIz
MDAzRjI2Q0IgLyogSlNQcm9wZXJ0eU5hbWVJdGVyYXRvci5oICovOyBzZXR0aW5ncyA9IHtBVFRS
SUJVVEVTID0gKFByaXZhdGUsICk7IH07IH07CiAJCUU0OURDMTZCMTJFRjI5M0UwMDE4NEExRiAv
KiBTb3VyY2VQcm92aWRlckNhY2hlLmNwcCBpbiBTb3VyY2VzICovID0ge2lzYSA9IFBCWEJ1aWxk
RmlsZTsgZmlsZVJlZiA9IEU0OURDMTU1MTJFRjI3NzIwMDE4NEExRiAvKiBTb3VyY2VQcm92aWRl
ckNhY2hlLmNwcCAqLzsgfTsKQEAgLTM1MjYsMTQgKzM1MjgsMTYgQEAKIAkJRTMzNjM3QTQxQjYz
MjIwMjAwRUUwODQwIC8qIFJlZmxlY3RPYmplY3QuaCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJl
bmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuYy5o
OyBwYXRoID0gUmVmbGVjdE9iamVjdC5oOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OwogCQlF
MzNCM0UyNTFCN0FCRDc1MDA0OERCMkUgLyogSW5zcGVjdG9ySW5zdHJ1bWVudGF0aW9uT2JqZWN0
Lmx1dC5oICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxh
c3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jLmg7IG5hbWUgPSBJbnNwZWN0b3JJbnN0cnVt
ZW50YXRpb25PYmplY3QubHV0Lmg7IHBhdGggPSBJbnNwZWN0b3JJbnN0cnVtZW50YXRpb25PYmpl
Y3QubHV0Lmg7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CiAJCUUzNTQ2MjJBMUI2MDY1RDEw
MDU0NTM4NiAvKiBDb25zdHJ1Y3RBYmlsaXR5LmggKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5j
ZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmMuaDsg
cGF0aCA9IENvbnN0cnVjdEFiaWxpdHkuaDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKKwkJ
RTM1NUYzNTAxQjdEQzg1MzAwQzUwREM1IC8qIE1vZHVsZUxvYWRlck9iamVjdC5jcHAgKi8gPSB7
aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5
cGUgPSBzb3VyY2Vjb2RlLmNwcC5jcHA7IHBhdGggPSBNb2R1bGVMb2FkZXJPYmplY3QuY3BwOyBz
b3VyY2VUcmVlID0gIjxncm91cD4iOyB9OworCQlFMzU1RjM1MTFCN0RDODUzMDBDNTBEQzUgLyog
TW9kdWxlTG9hZGVyT2JqZWN0LmggKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVu
Y29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmMuaDsgcGF0aCA9IE1v
ZHVsZUxvYWRlck9iamVjdC5oOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OwogCQlFMzc5NEU3
MzFCNzdFQjk3MDA1NTQzQUUgLyogTW9kdWxlQW5hbHl6ZXIuY3BwICovID0ge2lzYSA9IFBCWEZp
bGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNl
Y29kZS5jcHAuY3BwOyBwYXRoID0gTW9kdWxlQW5hbHl6ZXIuY3BwOyBzb3VyY2VUcmVlID0gIjxn
cm91cD4iOyB9OwogCQlFMzc5NEU3NDFCNzdFQjk3MDA1NTQzQUUgLyogTW9kdWxlQW5hbHl6ZXIu
aCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25v
d25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuYy5oOyBwYXRoID0gTW9kdWxlQW5hbHl6ZXIuaDsgc291
cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKLQkJRTM5NjNDRUIxQjczRjc1MDAwRUI0Q0U1IC8qIE1v
ZHVsZVJlY29yZC5oICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9
IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jLmg7IHBhdGggPSBNb2R1bGVSZWNv
cmQuaDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKIAkJRTM5NjNDRUMxQjczRjc1MDAwRUI0
Q0U1IC8qIE5vZGVzQW5hbHl6ZU1vZHVsZS5jcHAgKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5j
ZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmNwcC5j
cHA7IHBhdGggPSBOb2Rlc0FuYWx5emVNb2R1bGUuY3BwOyBzb3VyY2VUcmVlID0gIjxncm91cD4i
OyB9OwotCQlFM0MwOUY1NDFCNzk2OTJBMDBFRTM2QTIgLyogTW9kdWxlUmVjb3JkLmNwcCAqLyA9
IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxl
VHlwZSA9IHNvdXJjZWNvZGUuY3BwLmNwcDsgcGF0aCA9IE1vZHVsZVJlY29yZC5jcHA7IHNvdXJj
ZVRyZWUgPSAiPGdyb3VwPiI7IH07CiAJCUUzNUUwMzVEMUI3QUI0M0UwMDczQUQyQSAvKiBJbnNw
ZWN0b3JJbnN0cnVtZW50YXRpb25PYmplY3QuY3BwICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVu
Y2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jcHAu
Y3BwOyBwYXRoID0gSW5zcGVjdG9ySW5zdHJ1bWVudGF0aW9uT2JqZWN0LmNwcDsgc291cmNlVHJl
ZSA9ICI8Z3JvdXA+IjsgfTsKIAkJRTM1RTAzNUUxQjdBQjQzRTAwNzNBRDJBIC8qIEluc3BlY3Rv
ckluc3RydW1lbnRhdGlvbk9iamVjdC5oICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZp
bGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jLmg7IHBhdGgg
PSBJbnNwZWN0b3JJbnN0cnVtZW50YXRpb25PYmplY3QuaDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+
IjsgfTsKIAkJRTM1RTAzNjExQjdBQjQ4NTAwNzNBRDJBIC8qIEluc3BlY3Rvckluc3RydW1lbnRh
dGlvbk9iamVjdC5qcyAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2Rpbmcg
PSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuamF2YXNjcmlwdDsgcGF0aCA9IElu
c3BlY3Rvckluc3RydW1lbnRhdGlvbk9iamVjdC5qczsgc291cmNlVHJlZSA9ICI8Z3JvdXA+Ijsg
fTsKKwkJRTM5REE0QTQxQjdFOEI3QzAwODRGMzNBIC8qIEpTTW9kdWxlUmVjb3JkLmNwcCAqLyA9
IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxl
VHlwZSA9IHNvdXJjZWNvZGUuY3BwLmNwcDsgcGF0aCA9IEpTTW9kdWxlUmVjb3JkLmNwcDsgc291
cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKKwkJRTM5REE0QTUxQjdFOEI3QzAwODRGMzNBIC8qIEpT
TW9kdWxlUmVjb3JkLmggKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5n
ID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmMuaDsgcGF0aCA9IEpTTW9kdWxl
UmVjb3JkLmg7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CiAJCUUzRUY4ODcyMUI2NkRGMjMw
MDNGMjZDQiAvKiBKU1Byb3BlcnR5TmFtZUl0ZXJhdG9yLmNwcCAqLyA9IHtpc2EgPSBQQlhGaWxl
UmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNv
ZGUuY3BwLmNwcDsgcGF0aCA9IEpTUHJvcGVydHlOYW1lSXRlcmF0b3IuY3BwOyBzb3VyY2VUcmVl
ID0gIjxncm91cD4iOyB9OwogCQlFM0VGODg3MzFCNjZERjIzMDAzRjI2Q0IgLyogSlNQcm9wZXJ0
eU5hbWVJdGVyYXRvci5oICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGlu
ZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jLmg7IHBhdGggPSBKU1Byb3Bl
cnR5TmFtZUl0ZXJhdG9yLmg7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CiAJCUU0OURDMTQ5
MTJFRjI2MUEwMDE4NEExRiAvKiBTb3VyY2VQcm92aWRlckNhY2hlSXRlbS5oICovID0ge2lzYSA9
IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0g
c291cmNlY29kZS5jLmg7IHBhdGggPSBTb3VyY2VQcm92aWRlckNhY2hlSXRlbS5oOyBzb3VyY2VU
cmVlID0gIjxncm91cD4iOyB9OwpAQCAtNDQ0Niw4ICs0NDUwLDYgQEAKIAkJCQlGNjkyQTg2NjAy
NTU1OTdEMDFGRjYwRjcgLyogTGV4ZXIuaCAqLywKIAkJCQlFMzc5NEU3MzFCNzdFQjk3MDA1NTQz
QUUgLyogTW9kdWxlQW5hbHl6ZXIuY3BwICovLAogCQkJCUUzNzk0RTc0MUI3N0VCOTcwMDU1NDNB
RSAvKiBNb2R1bGVBbmFseXplci5oICovLAotCQkJCUUzQzA5RjU0MUI3OTY5MkEwMEVFMzZBMiAv
KiBNb2R1bGVSZWNvcmQuY3BwICovLAotCQkJCUUzOTYzQ0VCMUI3M0Y3NTAwMEVCNENFNSAvKiBN
b2R1bGVSZWNvcmQuaCAqLywKIAkJCQk5MzBEQUQwMzBGQjFFQjFBMDA4MkQyMDUgLyogTm9kZUNv
bnN0cnVjdG9ycy5oICovLAogCQkJCUY2OTJBODZEMDI1NTU5N0QwMUZGNjBGNyAvKiBOb2Rlcy5j
cHAgKi8sCiAJCQkJRjY5MkE4NkUwMjU1NTk3RDAxRkY2MEY3IC8qIE5vZGVzLmggKi8sCkBAIC00
NzA5LDYgKzQ3MTEsOCBAQAogCQkJCUE3MDA4NzQwMTdDQkU4RUIwMEMzRTY0MyAvKiBKU01hcC5o
ICovLAogCQkJCUE3NERFRjhGMTgyRDk5MTQwMDUyMkMyMiAvKiBKU01hcEl0ZXJhdG9yLmNwcCAq
LywKIAkJCQlBNzRERUY5MDE4MkQ5OTE0MDA1MjJDMjIgLyogSlNNYXBJdGVyYXRvci5oICovLAor
CQkJCUUzOURBNEE0MUI3RThCN0MwMDg0RjMzQSAvKiBKU01vZHVsZVJlY29yZC5jcHAgKi8sCisJ
CQkJRTM5REE0QTUxQjdFOEI3QzAwODRGMzNBIC8qIEpTTW9kdWxlUmVjb3JkLmggKi8sCiAJCQkJ
QTcyNzAwNzgwREFDNjA1NjAwRTU0OEQ3IC8qIEpTTm90QW5PYmplY3QuY3BwICovLAogCQkJCUE3
MjcwMDc3MERBQzYwNTYwMEU1NDhENyAvKiBKU05vdEFuT2JqZWN0LmggKi8sCiAJCQkJQkMyMkEz
OTgwRTE2RTE0ODAwQUYyMUM4IC8qIEpTT2JqZWN0LmNwcCAqLywKQEAgLTQ3ODgsNiArNDc5Miw4
IEBACiAJCQkJOTAyMTNFM0IxMjNBNDBDMjAwRDQyMkYzIC8qIE1lbW9yeVN0YXRpc3RpY3MuY3Bw
ICovLAogCQkJCTkwMjEzRTNDMTIzQTQwQzIwMEQ0MjJGMyAvKiBNZW1vcnlTdGF0aXN0aWNzLmgg
Ki8sCiAJCQkJN0MwMDhDRTUxODc2MzFCNjAwOTU1QzI0IC8qIE1pY3JvdGFzay5oICovLAorCQkJ
CUUzNTVGMzUwMUI3REM4NTMwMEM1MERDNSAvKiBNb2R1bGVMb2FkZXJPYmplY3QuY3BwICovLAor
CQkJCUUzNTVGMzUxMUI3REM4NTMwMEM1MERDNSAvKiBNb2R1bGVMb2FkZXJPYmplY3QuaCAqLywK
IAkJCQlCQzAyRTkwODBFMTgzOURCMDAwRjkyOTcgLyogTmF0aXZlRXJyb3JDb25zdHJ1Y3Rvci5j
cHAgKi8sCiAJCQkJQkMwMkU5MDkwRTE4MzlEQjAwMEY5Mjk3IC8qIE5hdGl2ZUVycm9yQ29uc3Ry
dWN0b3IuaCAqLywKIAkJCQlCQzAyRTkwQTBFMTgzOURCMDAwRjkyOTcgLyogTmF0aXZlRXJyb3JQ
cm90b3R5cGUuY3BwICovLApAQCAtNTc5NSw2ICs1ODAxLDcgQEAKIAkJCWZpbGVzID0gKAogCQkJ
CTBGRkE1NDk4MTZCODgzNTMwMEIzQTk4MiAvKiBBNjRET3Bjb2RlLmggaW4gSGVhZGVycyAqLywK
IAkJCQk4NjAxNjFFMzBGM0E4M0MxMDBGODQ3MTAgLyogQWJzdHJhY3RNYWNyb0Fzc2VtYmxlci5o
IGluIEhlYWRlcnMgKi8sCisJCQkJRTM1NUYzNTMxQjdEQzg1MzAwQzUwREM1IC8qIE1vZHVsZUxv
YWRlck9iamVjdC5oIGluIEhlYWRlcnMgKi8sCiAJCQkJMEZFMDUwMjkxQUE5MDk1NjAwRDMzQjMz
IC8qIFNjb3BlZEFyZ3VtZW50c1RhYmxlLmggaW4gSGVhZGVycyAqLywKIAkJCQkwRjU1RjBGNTE0
RDEwNjNDMDBBQzc2NDkgLyogQWJzdHJhY3RQQy5oIGluIEhlYWRlcnMgKi8sCiAJCQkJMkE0OEQx
OTExNzcyMzY1QjAwQzY1QTVGIC8qIEFQSUNhbGxiYWNrRnVuY3Rpb24uaCBpbiBIZWFkZXJzICov
LApAQCAtNjE5Myw3ICs2MjAwLDYgQEAKIAkJCQkwRkNFRkFBQzE4MDRDMTNFMDA0NzJDRTQgLyog
RlRMU2F2ZVJlc3RvcmUuaCBpbiBIZWFkZXJzICovLAogCQkJCTBGMjVGMUIyMTgxNjM1RjMwMDUy
MkYzOSAvKiBGVExTbG93UGF0aENhbGwuaCBpbiBIZWFkZXJzICovLAogCQkJCUUzNTQ2MjJCMUI2
MDY1RDEwMDU0NTM4NiAvKiBDb25zdHJ1Y3RBYmlsaXR5LmggaW4gSGVhZGVycyAqLywKLQkJCQlF
Mzk2M0NFRDFCNzNGNzUwMDBFQjRDRTUgLyogTW9kdWxlUmVjb3JkLmggaW4gSGVhZGVycyAqLywK
IAkJCQkwRjI1RjFCNDE4MTYzNUYzMDA1MjJGMzkgLyogRlRMU2xvd1BhdGhDYWxsS2V5LmggaW4g
SGVhZGVycyAqLywKIAkJCQkwRjlEMzM5QjE4MDNBREI3MDA3M0MyQkMgLyogRlRMU3RhY2tNYXBz
LmggaW4gSGVhZGVycyAqLywKIAkJCQkwRkVBMEExMjE3MDUxM0RCMDBCQjcyMkMgLyogRlRMU3Rh
dGUuaCBpbiBIZWFkZXJzICovLApAQCAtNjIxNCw2ICs2MjIwLDcgQEAKIAkJCQlCQ0JFMkNBRTE0
RTk4NUFBMDAwNTkzQUQgLyogR0NBc3NlcnRpb25zLmggaW4gSGVhZGVycyAqLywKIAkJCQkwRjc2
NkQzMDE1QThEQ0UyMDA4RjM2M0UgLyogR0NBd2FyZUpJVFN0dWJSb3V0aW5lLmggaW4gSGVhZGVy
cyAqLywKIAkJCQk3MEVDMEVDNzFBQTBEN0RBMDBCNkFBRkEgLyogU3RyaW5nSXRlcmF0b3JQcm90
b3R5cGUuaCBpbiBIZWFkZXJzICovLAorCQkJCUUzOURBNEE3MUI3RThCN0MwMDg0RjMzQSAvKiBK
U01vZHVsZVJlY29yZC5oIGluIEhlYWRlcnMgKi8sCiAJCQkJMEYyQjY2QUMxN0I2QjUzRjAwQTdB
RTNGIC8qIEdDSW5jb21pbmdSZWZDb3VudGVkLmggaW4gSGVhZGVycyAqLywKIAkJCQkwRjJCNjZB
RDE3QjZCNTQ1MDBBN0FFM0YgLyogR0NJbmNvbWluZ1JlZkNvdW50ZWRJbmxpbmVzLmggaW4gSGVh
ZGVycyAqLywKIAkJCQkwRjJCNjZBRTE3QjZCNTQ1MDBBN0FFM0YgLyogR0NJbmNvbWluZ1JlZkNv
dW50ZWRTZXQuaCBpbiBIZWFkZXJzICovLApAQCAtNzMyOSw2ICs3MzM2LDcgQEAKIAkJCQkyQTg4
MDY3ODE5MTA3RDU1MDBDQjBCQkIgLyogREZHRnVuY3Rpb25XaGl0ZWxpc3QuY3BwIGluIFNvdXJj
ZXMgKi8sCiAJCQkJMEYyREQ4MTMxQUIzRDhCRTAwQkJCOEU4IC8qIERGR0FyZ3VtZW50c1V0aWxp
dGllcy5jcHAgaW4gU291cmNlcyAqLywKIAkJCQlBN0Q4OUNGMzE3QTBCOENDMDA3NzNBRDggLyog
REZHQmxvY2tJbnNlcnRpb25TZXQuY3BwIGluIFNvdXJjZXMgKi8sCisJCQkJRTM1NUYzNTIxQjdE
Qzg1MzAwQzUwREM1IC8qIE1vZHVsZUxvYWRlck9iamVjdC5jcHAgaW4gU291cmNlcyAqLywKIAkJ
CQk4NkVDOURDNDEzMjhERjgyMDAyQjJBRDcgLyogREZHQnl0ZUNvZGVQYXJzZXIuY3BwIGluIFNv
dXJjZXMgKi8sCiAJCQkJMEZEODJFMjExNDE3MkNFMzAwMTc5Qzk0IC8qIERGR0NhcGFiaWxpdGll
cy5jcHAgaW4gU291cmNlcyAqLywKIAkJCQkwRjJCOUNFNjE5RDBCQTdEMDBCMUQxQjUgLyogREZH
T2JqZWN0QWxsb2NhdGlvblNpbmtpbmdQaGFzZS5jcHAgaW4gU291cmNlcyAqLywKQEAgLTc2MTYs
NyArNzYyNCw2IEBACiAJCQkJMEYyQjY2RUQxN0I2QjVBQjAwQTdBRTNGIC8qIEpTRGF0YVZpZXdQ
cm90b3R5cGUuY3BwIGluIFNvdXJjZXMgKi8sCiAJCQkJMEYyRDRERTgxOTgzMkRBQzAwN0Q0QjE5
IC8qIFRvVGhpc1N0YXR1cy5jcHAgaW4gU291cmNlcyAqLywKIAkJCQlGRTM4NEVFNTFBRERCN0FE
MDA1NURFMkMgLyogSlNEb2xsYXJWTS5jcHAgaW4gU291cmNlcyAqLywKLQkJCQlFM0MwOUY1NTFC
Nzk2OTJBMDBFRTM2QTIgLyogTW9kdWxlUmVjb3JkLmNwcCBpbiBTb3VyY2VzICovLAogCQkJCTk3
ODgwMTQwMTQ3MUFEOTIwMDQxQjAxNiAvKiBKU0RhdGVNYXRoLmNwcCBpbiBTb3VyY2VzICovLAog
CQkJCTBGRTA1MDE3MUFBOTA5MTEwMEQzM0IzMyAvKiBEaXJlY3RBcmd1bWVudHMuY3BwIGluIFNv
dXJjZXMgKi8sCiAJCQkJMTQwNTY2RDYxMDdFQzI3MTAwNURCQzhEIC8qIEpTRnVuY3Rpb24uY3Bw
IGluIFNvdXJjZXMgKi8sCkBAIC03ODU4LDYgKzc4NjUsNyBAQAogCQkJCTBGRjQyNzMyMTU4RUJE
NTgwMDRDQjlGRiAvKiBVRGlzODZEaXNhc3NlbWJsZXIuY3BwIGluIFNvdXJjZXMgKi8sCiAJCQkJ
QTc2RjI3OTQxNUYxM0M5NjAwNTE3RDY3IC8qIFVubGlua2VkQ29kZUJsb2NrLmNwcCBpbiBTb3Vy
Y2VzICovLAogCQkJCUI1OUY4OTM5MTg5MUYyOUYwMEQ1Q0NEQyAvKiBVbmxpbmtlZEluc3RydWN0
aW9uU3RyZWFtLmNwcCBpbiBTb3VyY2VzICovLAorCQkJCUUzOURBNEE2MUI3RThCN0MwMDg0RjMz
QSAvKiBKU01vZHVsZVJlY29yZC5jcHAgaW4gU291cmNlcyAqLywKIAkJCQkwRjc1NzZEMjE4RTFG
RUU5MDAyRUY0Q0QgLyogQWNjZXNzb3JDYWxsSklUU3R1YlJvdXRpbmUuY3BwIGluIFNvdXJjZXMg
Ki8sCiAJCQkJMEYyNEU1NTgxN0Y3NEVEQjAwQUJCMjE3IC8qIFZhbHVlUmVjb3ZlcnkuY3BwIGlu
IFNvdXJjZXMgKi8sCiAJCQkJRTE4RTNBNTkwREY5Mjc4QzAwRDkwQjM0IC8qIFZNLmNwcCBpbiBT
b3VyY2VzICovLApkaWZmIC0tZ2l0IGEvU291cmNlL0phdmFTY3JpcHRDb3JlL2J1aWx0aW5zL0J1
aWx0aW5OYW1lcy5oIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL2J1aWx0aW5zL0J1aWx0aW5OYW1l
cy5oCmluZGV4IGNlMDQ0NDc5ZjczMDJmMTliMWQ4MTE2OGY5OWVjNDgzNWI0MDIyMGEuLjdlNTQz
NDJlNzUyZjlmMmQ0ZTgzNWVkMDM0ZjQ2MDljZjM2NWQzOWYgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9K
YXZhU2NyaXB0Q29yZS9idWlsdGlucy9CdWlsdGluTmFtZXMuaAorKysgYi9Tb3VyY2UvSmF2YVNj
cmlwdENvcmUvYnVpbHRpbnMvQnVpbHRpbk5hbWVzLmgKQEAgLTY3LDggKzY3LDggQEAgY2xhc3Mg
QnVpbHRpbk5hbWVzIHsKICAgICBib29sIGlzUHJpdmF0ZU5hbWUoU3ltYm9sSW1wbCYgdWlkKSBj
b25zdDsKICAgICBib29sIGlzUHJpdmF0ZU5hbWUoVW5pcXVlZFN0cmluZ0ltcGwmIHVpZCkgY29u
c3Q7CiAgICAgYm9vbCBpc1ByaXZhdGVOYW1lKGNvbnN0IElkZW50aWZpZXImKSBjb25zdDsKLSAg
ICBjb25zdCBJZGVudGlmaWVyKiBnZXRQcml2YXRlTmFtZShjb25zdCBJZGVudGlmaWVyJikgY29u
c3Q7Ci0gICAgY29uc3QgSWRlbnRpZmllciYgZ2V0UHVibGljTmFtZShjb25zdCBJZGVudGlmaWVy
JikgY29uc3Q7CisgICAgY29uc3QgSWRlbnRpZmllciogbG9va1VwUHJpdmF0ZU5hbWUoY29uc3Qg
SWRlbnRpZmllciYpIGNvbnN0OworICAgIGNvbnN0IElkZW50aWZpZXImIGxvb2tVcFB1YmxpY05h
bWUoY29uc3QgSWRlbnRpZmllciYpIGNvbnN0OwogICAgIAogICAgIEpTQ19GT1JFQUNIX0JVSUxU
SU5fRlVOQ1RJT05fTkFNRShERUNMQVJFX0JVSUxUSU5fSURFTlRJRklFUl9BQ0NFU1NPUikKICAg
ICBKU0NfQ09NTU9OX1BSSVZBVEVfSURFTlRJRklFUlNfRUFDSF9QUk9QRVJUWV9OQU1FKERFQ0xB
UkVfQlVJTFRJTl9JREVOVElGSUVSX0FDQ0VTU09SKQpAQCAtMTEwLDcgKzExMCw3IEBAIGlubGlu
ZSBib29sIEJ1aWx0aW5OYW1lczo6aXNQcml2YXRlTmFtZShjb25zdCBJZGVudGlmaWVyJiBpZGVu
dCkgY29uc3QKICAgICByZXR1cm4gaXNQcml2YXRlTmFtZSgqaWRlbnQuaW1wbCgpKTsKIH0KIAot
aW5saW5lIGNvbnN0IElkZW50aWZpZXIqIEJ1aWx0aW5OYW1lczo6Z2V0UHJpdmF0ZU5hbWUoY29u
c3QgSWRlbnRpZmllciYgaWRlbnQpIGNvbnN0CitpbmxpbmUgY29uc3QgSWRlbnRpZmllciogQnVp
bHRpbk5hbWVzOjpsb29rVXBQcml2YXRlTmFtZShjb25zdCBJZGVudGlmaWVyJiBpZGVudCkgY29u
c3QKIHsKICAgICBhdXRvIGl0ZXIgPSBtX3B1YmxpY1RvUHJpdmF0ZU1hcC5maW5kKGlkZW50Lmlt
cGwoKSk7CiAgICAgaWYgKGl0ZXIgIT0gbV9wdWJsaWNUb1ByaXZhdGVNYXAuZW5kKCkpCkBAIC0x
MTgsNyArMTE4LDcgQEAgaW5saW5lIGNvbnN0IElkZW50aWZpZXIqIEJ1aWx0aW5OYW1lczo6Z2V0
UHJpdmF0ZU5hbWUoY29uc3QgSWRlbnRpZmllciYgaWRlbnQpIGMKICAgICByZXR1cm4gMDsKIH0K
IAotaW5saW5lIGNvbnN0IElkZW50aWZpZXImIEJ1aWx0aW5OYW1lczo6Z2V0UHVibGljTmFtZShj
b25zdCBJZGVudGlmaWVyJiBpZGVudCkgY29uc3QKK2lubGluZSBjb25zdCBJZGVudGlmaWVyJiBC
dWlsdGluTmFtZXM6Omxvb2tVcFB1YmxpY05hbWUoY29uc3QgSWRlbnRpZmllciYgaWRlbnQpIGNv
bnN0CiB7CiAgICAgYXV0byBpdGVyID0gbV9wcml2YXRlVG9QdWJsaWNNYXAuZmluZChpZGVudC5p
bXBsKCkpOwogICAgIGlmIChpdGVyICE9IG1fcHJpdmF0ZVRvUHVibGljTWFwLmVuZCgpKQpkaWZm
IC0tZ2l0IGEvU291cmNlL0phdmFTY3JpcHRDb3JlL2J1aWx0aW5zL01vZHVsZUxvYWRlck9iamVj
dC5qcyBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9idWlsdGlucy9Nb2R1bGVMb2FkZXJPYmplY3Qu
anMKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMC4uNmU2ZmQ3ODZjODIzZGU2MDc3Y2FmZDM2NWQ4M2IwNjU1OWUxZjNlZAot
LS0gL2Rldi9udWxsCisrKyBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9idWlsdGlucy9Nb2R1bGVM
b2FkZXJPYmplY3QuanMKQEAgLTAsMCArMSwzOTcgQEAKKy8qCisgKiBDb3B5cmlnaHQgKEMpIDIw
MTUgQXBwbGUgSW5jLiBBbGwgcmlnaHRzIHJlc2VydmVkLgorICoKKyAqIFJlZGlzdHJpYnV0aW9u
IGFuZCB1c2UgaW4gc291cmNlIGFuZCBiaW5hcnkgZm9ybXMsIHdpdGggb3Igd2l0aG91dAorICog
bW9kaWZpY2F0aW9uLCBhcmUgcGVybWl0dGVkIHByb3ZpZGVkIHRoYXQgdGhlIGZvbGxvd2luZyBj
b25kaXRpb25zCisgKiBhcmUgbWV0OgorICogMS4gUmVkaXN0cmlidXRpb25zIG9mIHNvdXJjZSBj
b2RlIG11c3QgcmV0YWluIHRoZSBhYm92ZSBjb3B5cmlnaHQKKyAqICAgIG5vdGljZSwgdGhpcyBs
aXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lci4KKyAqIDIuIFJl
ZGlzdHJpYnV0aW9ucyBpbiBiaW5hcnkgZm9ybSBtdXN0IHJlcHJvZHVjZSB0aGUgYWJvdmUgY29w
eXJpZ2h0CisgKiAgICBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9s
bG93aW5nIGRpc2NsYWltZXIgaW4gdGhlCisgKiAgICBkb2N1bWVudGF0aW9uIGFuZC9vciBvdGhl
ciBtYXRlcmlhbHMgcHJvdmlkZWQgd2l0aCB0aGUgZGlzdHJpYnV0aW9uLgorICoKKyAqIFRISVMg
U09GVFdBUkUgSVMgUFJPVklERUQgQlkgQVBQTEUgSU5DLiBgYEFTIElTJycgQU5EIEFOWQorICog
RVhQUkVTUyBPUiBJTVBMSUVEIFdBUlJBTlRJRVMsIElOQ0xVRElORywgQlVUIE5PVCBMSU1JVEVE
IFRPLCBUSEUKKyAqIElNUExJRUQgV0FSUkFOVElFUyBPRiBNRVJDSEFOVEFCSUxJVFkgQU5EIEZJ
VE5FU1MgRk9SIEEgUEFSVElDVUxBUgorICogUFVSUE9TRSBBUkUgRElTQ0xBSU1FRC4gIElOIE5P
IEVWRU5UIFNIQUxMIEFQUExFIElOQy4gT1IKKyAqIENPTlRSSUJVVE9SUyBCRSBMSUFCTEUgRk9S
IEFOWSBESVJFQ1QsIElORElSRUNULCBJTkNJREVOVEFMLCBTUEVDSUFMLAorICogRVhFTVBMQVJZ
LCBPUiBDT05TRVFVRU5USUFMIERBTUFHRVMgKElOQ0xVRElORywgQlVUIE5PVCBMSU1JVEVEIFRP
LAorICogUFJPQ1VSRU1FTlQgT0YgU1VCU1RJVFVURSBHT09EUyBPUiBTRVJWSUNFUzsgTE9TUyBP
RiBVU0UsIERBVEEsIE9SCisgKiBQUk9GSVRTOyBPUiBCVVNJTkVTUyBJTlRFUlJVUFRJT04pIEhP
V0VWRVIgQ0FVU0VEIEFORCBPTiBBTlkgVEhFT1JZCisgKiBPRiBMSUFCSUxJVFksIFdIRVRIRVIg
SU4gQ09OVFJBQ1QsIFNUUklDVCBMSUFCSUxJVFksIE9SIFRPUlQKKyAqIChJTkNMVURJTkcgTkVH
TElHRU5DRSBPUiBPVEhFUldJU0UpIEFSSVNJTkcgSU4gQU5ZIFdBWSBPVVQgT0YgVEhFIFVTRQor
ICogT0YgVEhJUyBTT0ZUV0FSRSwgRVZFTiBJRiBBRFZJU0VEIE9GIFRIRSBQT1NTSUJJTElUWSBP
RiBTVUNIIERBTUFHRS4KKyAqLworCitmdW5jdGlvbiBzZXRTdGF0ZVRvTWF4KGVudHJ5LCBuZXdT
dGF0ZSkKK3sKKyAgICAvLyBodHRwczovL3doYXR3Zy5naXRodWIuaW8vbG9hZGVyLyNzZXQtc3Rh
dGUtdG8tbWF4CisKKyAgICAidXNlIHN0cmljdCI7CisKKyAgICBpZiAoZW50cnkuc3RhdGUgPCBu
ZXdTdGF0ZSkKKyAgICAgICAgZW50cnkuc3RhdGUgPSBuZXdTdGF0ZTsKK30KKworZnVuY3Rpb24g
bmV3UmVnaXN0cnlFbnRyeShrZXkpCit7CisgICAgLy8gaHR0cHM6Ly93aGF0d2cuZ2l0aHViLmlv
L2xvYWRlci8jcmVnaXN0cnkKKyAgICAvLworICAgIC8vIEVhY2ggcmVnaXN0cnkgZW50cnkgYmVj
b21lcyBvbmUgb2YgdGhlIDUgc3RhdGVzLgorICAgIC8vIDEuIEZldGNoCisgICAgLy8gICAgIFJl
YWR5IHRvIGZldGNoIChvciBub3cgZmV0Y2hpbmcpIHRoZSByZXNvdXJjZSBvZiB0aGlzIG1vZHVs
ZS4KKyAgICAvLyAgICAgVHlwaWNhbGx5LCB3ZSBmZXRjaCB0aGUgc291cmNlIGNvZGUgb3ZlciB0
aGUgbmV0d29yayBvciBmcm9tIHRoZSBmaWxlIHN5c3RlbS4KKyAgICAvLyAgICAgYS4gSWYgdGhl
IHN0YXR1cyBpcyBGZXRjaCBhbmQgdGhlcmUgaXMgbm8gZW50cnkuZmV0Y2ggcHJvbWlzZSwgdGhl
IGVudHJ5IGlzIHJlYWR5IHRvIGZldGNoLgorICAgIC8vICAgICBiLiBJZiB0aGUgc3RhdHVzIGlz
IEZldGNoIGFuZCB0aGVyZSBpcyB0aGUgZW50cnkuZmV0Y2ggcHJvbWlzZSwgdGhlIGVudHJ5IGlz
IGp1c3QgZmV0Y2hpbmcgdGhlIHJlc291cmNlLgorICAgIC8vCisgICAgLy8gMi4gVHJhbnNsYXRl
CisgICAgLy8gICAgIFJlYWR5IHRvIHRyYW5zbGF0ZSAob3Igbm93IHRyYW5zbGF0aW5nKSB0aGUg
cmF3IGZldGNoZWQgcmVzb3VyY2UgdG8gdGhlIEVDTUFTY3JpcHQgc291cmNlIGNvZGUuCisgICAg
Ly8gICAgIFdlIGNhbiBpbnNlcnQgdGhlIGhvb2sgdGhhdCB0cmFuc2xhdGVzIHRoZSByZXNvdXJj
ZXMgZS5nLiB0cmFuc3BpbGVycy4KKyAgICAvLyAgICAgYS4gSWYgdGhlIHN0YXR1cyBpcyBUcmFu
c2xhdGUgYW5kIHRoZXJlIGlzIG5vIGVudHJ5LnRyYW5zbGF0ZSBwcm9taXNlLCB0aGUgZW50cnkg
aXMgcmVhZHkgdG8gdHJhbnNsYXRlLgorICAgIC8vICAgICBiLiBJZiB0aGUgc3RhdHVzIGlzIFRy
YW5zbGF0ZSBhbmQgdGhlcmUgaXMgdGhlIGVudHJ5LnRyYW5zbGF0ZSBwcm9taXNlLCB0aGUgZW50
cnkgaXMganVzdCB0cmFuc2xhdGluZworICAgIC8vICAgICAgICB0aGUgcGF5bG9hZCB0byB0aGUg
c291cmNlIGNvZGUuCisgICAgLy8KKyAgICAvLyAzLiBJbnN0YW50aWF0ZQorICAgIC8vICAgICBS
ZWFkeSB0byBpbnN0YW50aWF0ZSAob3Igbm93IGluc3RhbnRpYXRpbmcpIHRoZSBtb2R1bGUgcmVj
b3JkIGZyb20gdGhlIGZldGNoZWQgKGFuZCB0cmFuc2xhdGVkKQorICAgIC8vICAgICBzb3VyY2Ug
Y29kZS4KKyAgICAvLyAgICAgVHlwaWNhbGx5LCB3ZSBwYXJzZSB0aGUgbW9kdWxlIGNvZGUsIGV4
dHJhY3QgdGhlIGRlcGVuZGVuY2llcyBhbmQgYmluZGluZyBpbmZvcm1hdGlvbi4KKyAgICAvLyAg
ICAgYS4gSWYgdGhlIHN0YXR1cyBpcyBJbnN0YW50aWF0ZSBhbmQgdGhlcmUgaXMgbm8gZW50cnku
aW5zdGFudGlhdGUgcHJvbWlzZSwgdGhlIGVudHJ5IGlzIHJlYWR5IHRvIGluc3RhbnRpYXRlLgor
ICAgIC8vICAgICBiLiBJZiB0aGUgc3RhdHVzIGlzIEluc3RhbnRpYXRlIGFuZCB0aGVyZSBpcyB0
aGUgZW50cnkudHJhbnNsYXRlIHByb21pc2UsIHRoZSBlbnRyeSBpcyBqdXN0IGluc3RhbnRpYXRp
bmcKKyAgICAvLyAgICAgICAgdGhlIG1vZHVsZSByZWNvcmQuCisgICAgLy8KKyAgICAvLyA0LiBD
b2xsZWN0IChub3QgaW4gdGhlIGRyYWZ0KSBodHRwczovL2dpdGh1Yi5jb20vd2hhdHdnL2xvYWRl
ci9pc3N1ZXMvNjgKKyAgICAvLyAgICAgUmVhZHkgdG8gcmVxdWVzdCB0aGUgZGVwZW5kZW50IG1v
ZHVsZXMgKG9yIG5vdyByZXF1ZXN0aW5nICYgcmVzb2x2aW5nKS4KKyAgICAvLyAgICAgV2l0aG91
dCB0aGlzIHN0YXRlLCB0aGUgY3VycmVudCBkcmFmdCBjYXVzZXMgaW5maW5pdGUgcmVjdXJzaW9u
IHdoZW4gdGhlcmUgaXMgY2lyY3VsYXIgZGVwZW5kZW5jeS4KKyAgICAvLyAgICAgYS4gSWYgdGhl
IHN0YXR1cyBpcyBDb2xsZWN0IGFuZCB0aGVyZSBpcyBubyBlbnRyeS5jb2xsZWN0IHByb21pc2Us
IHRoZSBlbnRyeSBpcyByZWFkeSB0byBjb2xsZWN0LgorICAgIC8vICAgICBiLiBJZiB0aGUgc3Rh
dHVzIGlzIENvbGxlY3QgYW5kIHRoZXJlIGlzIHRoZSBlbnRyeS5jb2xsZWN0IHByb21pc2UsIHRo
ZSBlbnRyeSBpcyBqdXN0IGNvbGxlY3RpbmcKKyAgICAvLyAgICAgICAgdGhlIGRlcGVuZGVuY2ll
cy4KKyAgICAvLworICAgIC8vIDUuIExpbmsKKyAgICAvLyAgICAgUmVhZHkgdG8gbGluayB0aGUg
bW9kdWxlIHdpdGggdGhlIG90aGVyIG1vZHVsZXMuCisgICAgLy8gICAgIExpbmtpbmcgbWVhbnMg
dGhlIGltcG9ydGluZyBhbmQgZXhwb3J0aW5nIHRoZSBiaW5kaW5ncyB3aXRoIGVhY2ggb3RoZXIu
CisgICAgLy8KKyAgICAvLyA2LiBSZWFkeQorICAgIC8vICAgICBUaGUgbW9kdWxlIGlzIGxpbmtl
ZCwgc28gdGhlIG1vZHVsZSBpcyByZWFkeSB0byBiZSBleGVjdXRlZC4KKyAgICAvLworICAgIC8v
IEVhY2ggcmVnaXN0cnkgZW50cnkgaGFzIHRoZSA0IHByb21pc2VzOyAiZmV0Y2giLCAidHJhbnNs
YXRlIiwgImluc3RhbnRpYXRlIiBhbmQgImNvbGxlY3QiLgorICAgIC8vIFRoZXkgYXJlIGFzc2ln
bmVkIHdoZW4gc3RhcnRpbmcgdGhlIGVhY2ggcGhhc2UuIEFuZCB0aGV5IGFyZSBmdWxmaWxsZWQg
d2hlbiB0aGUgZWFjaCBwaGFzZSBpcyBjb21wbGV0ZWQuCisgICAgLy8KKyAgICAvLyBJbiB0aGUg
Y3VycmVudCBtb2R1bGUgZHJhZnQsIGxpbmtpbmcgd2lsbCBiZSBwZXJmb3JtZWQgYWZ0ZXIgdGhl
IHdob2xlIG1vZHVsZXMgYXJlIGluc3RhbnRpYXRlZCBhbmQgY29sbGVjdGVkLgorICAgIC8vIEFu
ZCBleGVjdXRpb24gaXMgYWxzbyBkb25lIGFmdGVyIHRoZSBhbGwgbW9kdWxlcyBhcmUgbGlua2Vk
LgorICAgIC8vCisgICAgLy8gVE9ETzogV2UgbmVlZCB0byBleHBsb2l0IHRoZSB3YXkgdG8gZXhl
Y3V0ZSB0aGUgbW9kdWxlIHdoaWxlIGZldGNoaW5nIG5vbi1yZWxhdGVkIG1vZHVsZXMuCisgICAg
Ly8gT25lIHNvbHV0aW9uOyBpbnRyb2R1Y2luZyB0aGUgcmVhZHkgcHJvbWlzZSBjaGFpbiB0byBl
eGVjdXRlIHRoZSBtb2R1bGVzIGNvbmN1cnJlbnRseSB3aGlsZSBrZWVwaW5nCisgICAgLy8gdGhl
IGV4ZWN1dGlvbiBvcmRlci4KKworICAgICJ1c2Ugc3RyaWN0IjsKKworICAgIHJldHVybiB7Cisg
ICAgICAgIGtleToga2V5LAorICAgICAgICBzdGF0ZTogdGhpcy5GZXRjaCwKKyAgICAgICAgbWV0
YWRhdGE6IHVuZGVmaW5lZCwKKyAgICAgICAgZmV0Y2g6IHVuZGVmaW5lZCwKKyAgICAgICAgdHJh
bnNsYXRlOiB1bmRlZmluZWQsCisgICAgICAgIGluc3RhbnRpYXRlOiB1bmRlZmluZWQsCisgICAg
ICAgIGNvbGxlY3Q6IHVuZGVmaW5lZCwKKyAgICAgICAgZGVwZW5kZW5jaWVzOiBbXSwgLy8gVG8g
a2VlcCB0aGUgbW9kdWxlIG9yZGVyLCB3ZSBzdG9yZSB0aGUgbW9kdWxlIGtleXMgaW4gdGhlIGFy
cmF5LgorICAgICAgICBkZXBlbmRlbmNpZXNNYXA6IHVuZGVmaW5lZCwKKyAgICAgICAgbW9kdWxl
OiB1bmRlZmluZWQsCisgICAgICAgIGVycm9yOiB1bmRlZmluZWQsCisgICAgfTsKK30KKworZnVu
Y3Rpb24gZW5zdXJlUmVnaXN0ZXJlZChrZXkpCit7CisgICAgLy8gaHR0cHM6Ly93aGF0d2cuZ2l0
aHViLmlvL2xvYWRlci8jZW5zdXJlLXJlZ2lzdGVyZWQKKworICAgICJ1c2Ugc3RyaWN0IjsKKwor
ICAgIHZhciBlbnRyeSA9IHRoaXMucmVnaXN0cnkuQGdldChrZXkpOworICAgIGlmIChlbnRyeSkK
KyAgICAgICAgcmV0dXJuIGVudHJ5OworCisgICAgZW50cnkgPSB0aGlzLm5ld1JlZ2lzdHJ5RW50
cnkoa2V5KTsKKyAgICB0aGlzLnJlZ2lzdHJ5LkBzZXQoa2V5LCBlbnRyeSk7CisKKyAgICByZXR1
cm4gZW50cnk7Cit9CisKK2Z1bmN0aW9uIGZvcmNlRnVsZmlsbFByb21pc2UocHJvbWlzZSwgdmFs
dWUpCit7CisgICAgInVzZSBzdHJpY3QiOworCisgICAgaWYgKHByb21pc2UuQHByb21pc2VTdGF0
ZSA9PT0gQHByb21pc2VQZW5kaW5nKQorICAgICAgICBAZnVsZmlsbFByb21pc2UocHJvbWlzZSwg
dmFsdWUpOworfQorCitmdW5jdGlvbiBmdWxmaWxsRmV0Y2goZW50cnksIHBheWxvYWQpCit7Cisg
ICAgLy8gaHR0cHM6Ly93aGF0d2cuZ2l0aHViLmlvL2xvYWRlci8jZnVsZmlsbC1mZXRjaAorCisg
ICAgInVzZSBzdHJpY3QiOworCisgICAgaWYgKCFlbnRyeS5mZXRjaCkKKyAgICAgICAgZW50cnku
ZmV0Y2ggPSBAbmV3UHJvbWlzZURlZmVycmVkKCkuQHByb21pc2U7CisgICAgdGhpcy5mb3JjZUZ1
bGZpbGxQcm9taXNlKGVudHJ5LmZldGNoLCBwYXlsb2FkKTsKKyAgICB0aGlzLnNldFN0YXRlVG9N
YXgoZW50cnksIHRoaXMuVHJhbnNsYXRlKTsKK30KKworZnVuY3Rpb24gZnVsZmlsbFRyYW5zbGF0
ZShlbnRyeSwgc291cmNlKQoreworICAgIC8vIGh0dHBzOi8vd2hhdHdnLmdpdGh1Yi5pby9sb2Fk
ZXIvI2Z1bGZpbGwtdHJhbnNsYXRlCisKKyAgICAidXNlIHN0cmljdCI7CisKKyAgICBpZiAoIWVu
dHJ5LnRyYW5zbGF0ZSkKKyAgICAgICAgZW50cnkudHJhbnNsYXRlID0gQG5ld1Byb21pc2VEZWZl
cnJlZCgpLkBwcm9taXNlOworICAgIHRoaXMuZm9yY2VGdWxmaWxsUHJvbWlzZShlbnRyeS50cmFu
c2xhdGUsIHNvdXJjZSk7CisgICAgdGhpcy5zZXRTdGF0ZVRvTWF4KGVudHJ5LCB0aGlzLkluc3Rh
bnRpYXRlKTsKK30KKworZnVuY3Rpb24gZnVsZmlsbEluc3RhbnRpYXRlKGVudHJ5LCBvcHRpb25h
bEluc3RhbmNlLCBzb3VyY2UpCit7CisgICAgLy8gaHR0cHM6Ly93aGF0d2cuZ2l0aHViLmlvL2xv
YWRlci8jZnVsZmlsbC1pbnN0YW50aWF0ZQorCisgICAgInVzZSBzdHJpY3QiOworCisgICAgaWYg
KCFlbnRyeS5pbnN0YW50aWF0ZSkKKyAgICAgICAgZW50cnkuaW5zdGFudGlhdGUgPSBAbmV3UHJv
bWlzZURlZmVycmVkKCkuQHByb21pc2U7CisgICAgdGhpcy5jb21taXRJbnN0YW50aWF0ZWQoZW50
cnksIG9wdGlvbmFsSW5zdGFuY2UsIHNvdXJjZSk7CisKKyAgICAvLyBGSVhNRTogVGhlIGRyYWZ0
IGZ1bGZpbGxzIHRoZSBwcm9taXNlIGluIHRoZSBDb21taXRJbnN0YW50aWF0ZWQgb3BlcmF0aW9u
LgorICAgIC8vIEJ1dCBpdCBDb21taXRJbnN0YW50aWF0ZWQgaXMgYWxzbyB1c2VkIGluIHRoZSBy
ZXF1ZXN0SW5zdGFudGlhdGUgYW5kCisgICAgLy8gd2Ugc2hvdWxkIG5vdCAiZm9yY2UgZnVsZmls
bCIgdGhlcmUuCisgICAgLy8gU28gd2Ugc2VwYXJhdGUgImZvcmNlIGZ1bGZpbGwiIG9wZXJhdGlv
biBmcm9tIHRoZSBDb21taXRJbnN0YW50aWF0ZWQgb3BlcmF0aW9uLgorICAgIC8vIGh0dHBzOi8v
Z2l0aHViLmNvbS93aGF0d2cvbG9hZGVyL3B1bGwvNjcKKyAgICB0aGlzLmZvcmNlRnVsZmlsbFBy
b21pc2UoZW50cnkuaW5zdGFudGlhdGUsIGVudHJ5KTsKK30KKworZnVuY3Rpb24gY29tbWl0SW5z
dGFudGlhdGVkKGVudHJ5LCBvcHRpb25hbEluc3RhbmNlLCBzb3VyY2UpCit7CisgICAgLy8gaHR0
cHM6Ly93aGF0d2cuZ2l0aHViLmlvL2xvYWRlci8jY29tbWl0LWluc3RhbnRpYXRlZAorCisgICAg
InVzZSBzdHJpY3QiOworCisgICAgdmFyIGluc3RhbmNlID0gdGhpcy5pbnN0YW50aWF0aW9uKG9w
dGlvbmFsSW5zdGFuY2UsIHNvdXJjZSk7CisKKyAgICAvLyBGSVhNRTogRGVzY3JpYmVkIGluIHRo
ZSBkcmFmdCwKKyAgICAvLyAgIDQuIEZ1bGZpbGwgZW50cnkuW1tJbnN0YW50aWF0ZV1dIHdpdGgg
aW5zdGFuY2UuCisgICAgLy8gQnV0LCBpbnN0YW50aWF0ZSBwcm9taXNlIHNob3VsZCBiZSBmdWxm
aWxsZWQgd2l0aCB0aGUgZW50cnkuCisgICAgLy8gV2UgcmVtb3ZlIHRoaXMgc3RhdGVtZW50IGJl
Y2F1c2UgaW5zdGFudGlhdGUgcHJvbWlzZSB3aWxsIGJlCisgICAgLy8gZnVsZmlsbGVkIHdpdGhv
dXQgdGhpcyAiZm9yY2UgZnVsZmlsbCIgb3BlcmF0aW9uLgorICAgIC8vIGh0dHBzOi8vZ2l0aHVi
LmNvbS93aGF0d2cvbG9hZGVyL3B1bGwvNjcKKworICAgIHZhciBkZXBzID0gW107CisgICAgdmFy
IGRlcHNNYXAgPSBuZXcgQE1hcCgpOworICAgIGluc3RhbmNlLnJlZ2lzdHJ5RW50cnkgPSBlbnRy
eTsKKyAgICB2YXIgcmVxdWVzdGVkTW9kdWxlcyA9IHRoaXMucmVxdWVzdGVkTW9kdWxlcyhpbnN0
YW5jZSk7CisgICAgZm9yICh2YXIgaSA9IDAsIGxlbmd0aCA9IHJlcXVlc3RlZE1vZHVsZXMubGVu
Z3RoOyBpIDwgbGVuZ3RoOyArK2kpIHsKKyAgICAgICAgdmFyIGRlcEtleSA9IHJlcXVlc3RlZE1v
ZHVsZXNbaV07CisgICAgICAgIHZhciBwYWlyID0geworICAgICAgICAgICAga2V5OiBkZXBLZXks
CisgICAgICAgICAgICB2YWx1ZTogdW5kZWZpbmVkCisgICAgICAgIH07CisgICAgICAgIEBwdXRC
eVZhbERpcmVjdChkZXBzLCBpLCBwYWlyKTsKKyAgICAgICAgZGVwc01hcC5Ac2V0KGRlcEtleSwg
cGFpcik7CisgICAgfQorICAgIGVudHJ5LmRlcGVuZGVuY2llcyA9IGRlcHM7CisgICAgZW50cnku
ZGVwZW5kZW5jaWVzTWFwID0gZGVwc01hcDsKKyAgICBlbnRyeS5tb2R1bGUgPSBpbnN0YW5jZTsK
KyAgICB0aGlzLnNldFN0YXRlVG9NYXgoZW50cnksIHRoaXMuQ29sbGVjdCk7Cit9CisKK2Z1bmN0
aW9uIGluc3RhbnRpYXRpb24ocmVzdWx0LCBzb3VyY2UpCit7CisgICAgLy8gaHR0cHM6Ly93aGF0
d2cuZ2l0aHViLmlvL2xvYWRlci8jaW5zdGFudGlhdGlvbgorICAgIC8vIEZJWE1FOiBDdXJyZW50
IGltcGxlbWVudGF0aW9uIGRvZXMgbm90IHN1cHBvcnQgb3B0aW9uYWxJbnN0YW5jZS4KKworICAg
ICJ1c2Ugc3RyaWN0IjsKKworICAgIHJldHVybiB0aGlzLnBhcnNlTW9kdWxlKHNvdXJjZSk7Cit9
CisKKy8vIExvYWRlci4KKworZnVuY3Rpb24gcmVxdWVzdEZldGNoKGtleSkKK3sKKyAgICAvLyBo
dHRwczovL3doYXR3Zy5naXRodWIuaW8vbG9hZGVyLyNyZXF1ZXN0LWZldGNoCisKKyAgICAidXNl
IHN0cmljdCI7CisKKyAgICB2YXIgZW50cnkgPSB0aGlzLmVuc3VyZVJlZ2lzdGVyZWQoa2V5KTsK
KyAgICBpZiAoZW50cnkuc3RhdGUgPiB0aGlzLkxpbmspIHsKKyAgICAgICAgdmFyIGRlZmVycmVk
ID0gQG5ld1Byb21pc2VEZWZlcnJlZCgpOworICAgICAgICBkZWZlcnJlZC5AcmVqZWN0LkBjYWxs
KHVuZGVmaW5lZCwgbmV3IEBUeXBlRXJyb3IoIlJlcXVlc3RlZCBtb2R1bGUgaXMgYWxyZWFkeSBy
ZWFkeSB0byBiZSBleGVjdXRlZC4iKSk7CisgICAgICAgIHJldHVybiBkZWZlcnJlZC5AcHJvbWlz
ZTsKKyAgICB9CisKKyAgICBpZiAoZW50cnkuZmV0Y2gpCisgICAgICAgIHJldHVybiBlbnRyeS5m
ZXRjaDsKKworICAgIHZhciBsb2FkZXIgPSB0aGlzOworICAgIHZhciBmZXRjaFByb21pc2UgPSB0
aGlzLmZldGNoKGtleSkuQHRoZW4oZnVuY3Rpb24gKHBheWxvYWQpIHsKKyAgICAgICAgbG9hZGVy
LnNldFN0YXRlVG9NYXgoZW50cnksIGxvYWRlci5UcmFuc2xhdGUpOworICAgICAgICByZXR1cm4g
cGF5bG9hZDsKKyAgICB9KTsKKyAgICBlbnRyeS5mZXRjaCA9IGZldGNoUHJvbWlzZTsKKyAgICBy
ZXR1cm4gZmV0Y2hQcm9taXNlOworfQorCitmdW5jdGlvbiByZXF1ZXN0VHJhbnNsYXRlKGtleSkK
K3sKKyAgICAvLyBodHRwczovL3doYXR3Zy5naXRodWIuaW8vbG9hZGVyLyNyZXF1ZXN0LXRyYW5z
bGF0ZQorCisgICAgInVzZSBzdHJpY3QiOworCisgICAgdmFyIGVudHJ5ID0gdGhpcy5lbnN1cmVS
ZWdpc3RlcmVkKGtleSk7CisgICAgaWYgKGVudHJ5LnN0YXRlID4gdGhpcy5MaW5rKSB7CisgICAg
ICAgIHZhciBkZWZlcnJlZCA9IEBuZXdQcm9taXNlRGVmZXJyZWQoKTsKKyAgICAgICAgZGVmZXJy
ZWQuQHJlamVjdC5AY2FsbCh1bmRlZmluZWQsIG5ldyBAVHlwZUVycm9yKCJSZXF1ZXN0ZWQgbW9k
dWxlIGlzIGFscmVhZHkgcmVhZHkgdG8gYmUgZXhlY3V0ZWQuIikpOworICAgICAgICByZXR1cm4g
ZGVmZXJyZWQuQHByb21pc2U7CisgICAgfQorCisgICAgaWYgKGVudHJ5LnRyYW5zbGF0ZSkKKyAg
ICAgICAgcmV0dXJuIGVudHJ5LnRyYW5zbGF0ZTsKKworICAgIHZhciBsb2FkZXIgPSB0aGlzOwor
ICAgIHZhciB0cmFuc2xhdGVQcm9taXNlID0gdGhpcy5yZXF1ZXN0RmV0Y2goa2V5KS5AdGhlbihm
dW5jdGlvbiAocGF5bG9hZCkgeworICAgICAgICByZXR1cm4gbG9hZGVyLnRyYW5zbGF0ZShrZXks
IHBheWxvYWQpLkB0aGVuKGZ1bmN0aW9uIChzb3VyY2UpIHsKKyAgICAgICAgICAgIGxvYWRlci5z
ZXRTdGF0ZVRvTWF4KGVudHJ5LCBsb2FkZXIuSW5zdGFudGlhdGUpOworICAgICAgICAgICAgcmV0
dXJuIHNvdXJjZTsKKyAgICAgICAgfSk7CisgICAgfSk7CisgICAgZW50cnkudHJhbnNsYXRlID0g
dHJhbnNsYXRlUHJvbWlzZTsKKyAgICByZXR1cm4gdHJhbnNsYXRlUHJvbWlzZTsKK30KKworZnVu
Y3Rpb24gcmVxdWVzdEluc3RhbnRpYXRlKGtleSkKK3sKKyAgICAvLyBodHRwczovL3doYXR3Zy5n
aXRodWIuaW8vbG9hZGVyLyNyZXF1ZXN0LWluc3RhbnRpYXRlCisKKyAgICAidXNlIHN0cmljdCI7
CisKKyAgICB2YXIgZW50cnkgPSB0aGlzLmVuc3VyZVJlZ2lzdGVyZWQoa2V5KTsKKyAgICBpZiAo
ZW50cnkuc3RhdGUgPiB0aGlzLkxpbmspIHsKKyAgICAgICAgdmFyIGRlZmVycmVkID0gQG5ld1By
b21pc2VEZWZlcnJlZCgpOworICAgICAgICBkZWZlcnJlZC5AcmVqZWN0LkBjYWxsKHVuZGVmaW5l
ZCwgbmV3IEBUeXBlRXJyb3IoIlJlcXVlc3RlZCBtb2R1bGUgaXMgYWxyZWFkeSByZWFkeSB0byBi
ZSBleGVjdXRlZC4iKSk7CisgICAgICAgIHJldHVybiBkZWZlcnJlZC5AcHJvbWlzZTsKKyAgICB9
CisKKyAgICBpZiAoZW50cnkuaW5zdGFudGlhdGUpCisgICAgICAgIHJldHVybiBlbnRyeS5pbnN0
YW50aWF0ZTsKKworICAgIHZhciBsb2FkZXIgPSB0aGlzOworICAgIHZhciBpbnN0YW50aWF0ZVBy
b21pc2UgPSB0aGlzLnJlcXVlc3RUcmFuc2xhdGUoa2V5KS5AdGhlbihmdW5jdGlvbiAoc291cmNl
KSB7CisgICAgICAgIHJldHVybiBsb2FkZXIuaW5zdGFudGlhdGUoa2V5LCBzb3VyY2UpLkB0aGVu
KGZ1bmN0aW9uIChvcHRpb25hbEluc3RhbmNlKSB7CisgICAgICAgICAgICBsb2FkZXIuY29tbWl0
SW5zdGFudGlhdGVkKGVudHJ5LCBvcHRpb25hbEluc3RhbmNlLCBzb3VyY2UpOworICAgICAgICAg
ICAgcmV0dXJuIGVudHJ5OworICAgICAgICB9KTsKKyAgICB9KTsKKyAgICBlbnRyeS5pbnN0YW50
aWF0ZSA9IGluc3RhbnRpYXRlUHJvbWlzZTsKKyAgICByZXR1cm4gaW5zdGFudGlhdGVQcm9taXNl
OworfQorCitmdW5jdGlvbiByZXF1ZXN0Q29sbGVjdChrZXkpCit7CisgICAgLy8gRklYTUU6IElu
IHRoZSBzcGVjLCBhZnRlciByZXF1ZXN0aW5nIGluc3RhbnRpYXRpb24sIHdlIHdpbGwgcmVzb2x2
ZQorICAgIC8vIHRoZSBkZXBlbmRlbmNpZXMgd2l0aG91dCBhbnkgc3RhdHVzIGNoYW5nZS4gQXMg
YSByZXN1bHQsIHdoZW4gdGhlcmUKKyAgICAvLyBpcyBjaXJjdWxhciBkZXBlbmRlbmNpZXMsIGlu
c3RhbnRpYXRpb24gaXMgZG9uZSBvbmx5IG9uY2UsIGJ1dAorICAgIC8vIHJlcGVhdGVkbHkgcmVz
b2x2aW5nIHRoZSBkZXBlbmRlbmNpZXMuIFRoaXMgbWVhbnMgdGhhdCBpbmZpbml0ZQorICAgIC8v
IHJlY3Vyc2lvbiBvY2N1ciB3aGVuIHRoZSBnaXZlbiBtb2R1bGVzIGhhdmUgY2lyY3VsYXIgZGVw
ZW5kZW5jeS4gVG8KKyAgICAvLyBhdm9pZCB0aGlzIHNpdHVhdGlvbiwgd2UgaW50cm9kdWNlIG5l
dyBzdGF0ZSwgIkNvbGxlY3QiLiBUaGlzIG1lYW5zCisgICAgLy8gIk5vdyB0aGUgbW9kdWxlIGlz
IGluc3RhbnRpYXRlZCwgc28gcmVhZHkgdG8gY29sbGVjdCB0aGUgZGVwZW5kZW5jaWVzCisgICAg
Ly8gb3Igbm93IHJlc29sdmluZyB0aGVtIi4KKyAgICAvLyBodHRwczovL2dpdGh1Yi5jb20vd2hh
dHdnL2xvYWRlci9pc3N1ZXMvNjgKKworICAgICJ1c2Ugc3RyaWN0IjsKKworICAgIHZhciBlbnRy
eSA9IHRoaXMuZW5zdXJlUmVnaXN0ZXJlZChrZXkpOworICAgIGlmIChlbnRyeS5zdGF0ZSA+IHRo
aXMuTGluaykgeworICAgICAgICB2YXIgZGVmZXJyZWQgPSBAbmV3UHJvbWlzZURlZmVycmVkKCk7
CisgICAgICAgIGRlZmVycmVkLkByZWplY3QuQGNhbGwodW5kZWZpbmVkLCBuZXcgQFR5cGVFcnJv
cigiUmVxdWVzdGVkIG1vZHVsZSBpcyBhbHJlYWR5IHJlYWR5IHRvIGJlIGV4ZWN1dGVkLiIpKTsK
KyAgICAgICAgcmV0dXJuIGRlZmVycmVkLkBwcm9taXNlOworICAgIH0KKworICAgIGlmIChlbnRy
eS5jb2xsZWN0KQorICAgICAgICByZXR1cm4gZW50cnkuY29sbGVjdDsKKworICAgIHZhciBsb2Fk
ZXIgPSB0aGlzOworICAgIHZhciBjb2xsZWN0UHJvbWlzZSA9IHRoaXMucmVxdWVzdEluc3RhbnRp
YXRlKGtleSkuQHRoZW4oZnVuY3Rpb24gKGVudHJ5KSB7CisgICAgICAgIHZhciBkZXBMb2FkcyA9
IFtdOworICAgICAgICBmb3IgKHZhciBpID0gMCwgbGVuZ3RoID0gZW50cnkuZGVwZW5kZW5jaWVz
Lmxlbmd0aDsgaSA8IGxlbmd0aDsgKytpKSB7CisgICAgICAgICAgICB2YXIgcGFpciA9IGVudHJ5
LmRlcGVuZGVuY2llc1tpXTsKKyAgICAgICAgICAgIHZhciBwcm9taXNlID0gbG9hZGVyLnJlc29s
dmUocGFpci5rZXksIGtleSkuQHRoZW4oZnVuY3Rpb24gKGRlcEtleSkgeworICAgICAgICAgICAg
ICAgIHZhciBkZXBFbnRyeSA9IGxvYWRlci5lbnN1cmVSZWdpc3RlcmVkKGRlcEtleSk7CisKKyAg
ICAgICAgICAgICAgICAvLyBSZWN1cnNpdmUgY29sbGVjdGluZy4gVGhpcyBlbnRyeSBpcyBiZWlu
ZyBjb2xsZWN0ZWQgb3IgYWxyZWFkeSBjb2xsZWN0ZWQuCisgICAgICAgICAgICAgICAgLy8gU3Rv
cCB0cmFjaW5nIHRoZSBjaXJjdWxhciBkZXBlbmRlbmNpZXMuCisgICAgICAgICAgICAgICAgaWYg
KGRlcEVudHJ5LmNvbGxlY3QpIHsKKyAgICAgICAgICAgICAgICAgICAgcGFpci52YWx1ZSA9IGRl
cEVudHJ5Lm1vZHVsZTsKKyAgICAgICAgICAgICAgICAgICAgcmV0dXJuIGRlcEVudHJ5OworICAg
ICAgICAgICAgICAgIH0KKworICAgICAgICAgICAgICAgIHJldHVybiBsb2FkZXIucmVxdWVzdENv
bGxlY3QoZGVwS2V5KS5AdGhlbihmdW5jdGlvbiAoZW50cnkpIHsKKyAgICAgICAgICAgICAgICAg
ICAgLy8gRklYTUU6IFRoZSByZXN1bHQgcHJvbWlzZSBvZiB0aGUgcmVxdWVzdEluc3RhbnRpYXRl
QWxsIHNob3VsZCBiZSBmdWxmaWxsZWQgd2l0aAorICAgICAgICAgICAgICAgICAgICAvLyB0aGUg
cmVnaXN0cnkgZW50cnkuCisgICAgICAgICAgICAgICAgICAgIC8vIGh0dHBzOi8vZ2l0aHViLmNv
bS93aGF0d2cvbG9hZGVyL3B1bGwvNjYKKyAgICAgICAgICAgICAgICAgICAgcGFpci52YWx1ZSA9
IGVudHJ5Lm1vZHVsZTsKKyAgICAgICAgICAgICAgICAgICAgcmV0dXJuIGVudHJ5OworICAgICAg
ICAgICAgICAgIH0pOworICAgICAgICAgICAgfSk7CisgICAgICAgICAgICBAcHV0QnlWYWxEaXJl
Y3QoZGVwTG9hZHMsIGksIHByb21pc2UpOworICAgICAgICB9CisKKyAgICAgICAgcmV0dXJuIEBQ
cm9taXNlLkBhbGwoZGVwTG9hZHMpLkB0aGVuKGZ1bmN0aW9uIChtb2R1bGVzKSB7CisgICAgICAg
ICAgICBsb2FkZXIuc2V0U3RhdGVUb01heChlbnRyeSwgbG9hZGVyLkxpbmspOworICAgICAgICAg
ICAgcmV0dXJuIGVudHJ5OworICAgICAgICB9KTsKKyAgICB9KTsKKworICAgIGVudHJ5LmNvbGxl
Y3QgPSBjb2xsZWN0UHJvbWlzZTsKKyAgICByZXR1cm4gY29sbGVjdFByb21pc2U7Cit9CisKK2Z1
bmN0aW9uIHJlcXVlc3RJbnN0YW50aWF0ZUFsbChrZXkpCit7CisgICAgLy8gaHR0cHM6Ly93aGF0
d2cuZ2l0aHViLmlvL2xvYWRlci8jcmVxdWVzdC1pbnN0YW50aWF0ZS1hbGwKKworICAgICJ1c2Ug
c3RyaWN0IjsKKworICAgIHJldHVybiB0aGlzLnJlcXVlc3RDb2xsZWN0KGtleSk7Cit9CisKK2Z1
bmN0aW9uIHByb3ZpZGUoa2V5LCBzdGFnZSwgdmFsdWUpCit7CisgICAgInVzZSBzdHJpY3QiOwor
CisgICAgdmFyIGVudHJ5ID0gdGhpcy5lbnN1cmVSZWdpc3RlcmVkKGtleSk7CisKKyAgICBpZiAo
c3RhZ2UgPT09IHRoaXMuRmV0Y2gpIHsKKyAgICAgICAgaWYgKGVudHJ5LnN0YXR1cyA+IHRoaXMu
RmV0Y2gpCisgICAgICAgICAgICB0aHJvdyBuZXcgQFR5cGVFcnJvcigiUmVxdWVzdGVkIG1vZHVs
ZSBpcyBhbHJlYWR5IGZldGNoZWQuIik7CisgICAgICAgIHRoaXMuZnVsZmlsbEZldGNoKGVudHJ5
LCB2YWx1ZSk7CisgICAgICAgIHJldHVybjsKKyAgICB9CisKKyAgICBpZiAoc3RhZ2UgPT09IHRo
aXMuVHJhbnNsYXRlKSB7CisgICAgICAgIGlmIChlbnRyeS5zdGF0dXMgPiB0aGlzLlRyYW5zbGF0
ZSkKKyAgICAgICAgICAgIHRocm93IG5ldyBAVHlwZUVycm9yKCJSZXF1ZXN0ZWQgbW9kdWxlIGlz
IGFscmVhZHkgdHJhbnNsYXRlZC4iKTsKKyAgICAgICAgdGhpcy5mdWxmaWxsRmV0Y2goZW50cnks
IHVuZGVmaW5lZCk7CisgICAgICAgIHRoaXMuZnVsZmlsbFRyYW5zbGF0ZShlbnRyeSwgdmFsdWUp
OworICAgICAgICByZXR1cm47CisgICAgfQorCisgICAgaWYgKHN0YWdlID09PSB0aGlzLkluc3Rh
bnRpYXRlKSB7CisgICAgICAgIGlmIChlbnRyeS5zdGF0dXMgPiB0aGlzLkluc3RhbnRpYXRlKQor
ICAgICAgICAgICAgdGhyb3cgbmV3IEBUeXBlRXJyb3IoIlJlcXVlc3RlZCBtb2R1bGUgaXMgYWxy
ZWFkeSBpbnN0YW50aWF0ZWQuIik7CisgICAgICAgIHRoaXMuZnVsZmlsbEZldGNoKGVudHJ5LCB1
bmRlZmluZWQpOworICAgICAgICB0aGlzLmZ1bGZpbGxUcmFuc2xhdGUoZW50cnksIHZhbHVlKTsK
KyAgICAgICAgdmFyIGxvYWRlciA9IHRoaXM7CisgICAgICAgIGVudHJ5LnRyYW5zbGF0ZS5AdGhl
bihmdW5jdGlvbiAoc291cmNlKSB7CisgICAgICAgICAgICBsb2FkZXIuZnVsZmlsbEluc3RhbnRp
YXRlKGVudHJ5LCB2YWx1ZSwgc291cmNlKTsKKyAgICAgICAgfSk7CisgICAgICAgIHJldHVybjsK
KyAgICB9CisKKyAgICB0aHJvdyBuZXcgQFR5cGVFcnJvcigiUmVxdWVzdGVkIG1vZHVsZSBpcyBh
bHJlYWR5IHJlYWR5IHRvIGJlIGV4ZWN1dGVkLiIpOworfQpkaWZmIC0tZ2l0IGEvU291cmNlL0ph
dmFTY3JpcHRDb3JlL2J1aWx0aW5zL09wZXJhdGlvbnMuUHJvbWlzZS5qcyBiL1NvdXJjZS9KYXZh
U2NyaXB0Q29yZS9idWlsdGlucy9PcGVyYXRpb25zLlByb21pc2UuanMKaW5kZXggNjZmOWMyNTE1
MzU5YzdhNTEyNTRmOTM3ZmM3ZjUxY2NkMTMxMjQxZC4uZDBkNDFkNGZiMmI5ZWM3Zjc4ZDFkNjM3
YTE4YTFkYWFjYmFmYmIzOSAxMDA2NDQKLS0tIGEvU291cmNlL0phdmFTY3JpcHRDb3JlL2J1aWx0
aW5zL09wZXJhdGlvbnMuUHJvbWlzZS5qcworKysgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvYnVp
bHRpbnMvT3BlcmF0aW9ucy5Qcm9taXNlLmpzCkBAIC0yMTgsMyArMjE4LDI5IEBAIGZ1bmN0aW9u
IGluaXRpYWxpemVQcm9taXNlKGV4ZWN1dG9yKQogCiAgICAgcmV0dXJuIHRoaXM7CiB9CisKK2Z1
bmN0aW9uIHByb21pc2VUaGVuKHByb21pc2UsIGNhcGFiaWxpdHksIG9uRnVsZmlsbGVkLCBvblJl
amVjdGVkKQoreworICAgICJ1c2Ugc3RyaWN0IjsKKworICAgIGlmICh0eXBlb2Ygb25GdWxmaWxs
ZWQgIT09ICJmdW5jdGlvbiIpCisgICAgICAgIG9uRnVsZmlsbGVkID0gZnVuY3Rpb24gKGFyZ3Vt
ZW50KSB7IHJldHVybiBhcmd1bWVudDsgfTsKKworICAgIGlmICh0eXBlb2Ygb25SZWplY3RlZCAh
PT0gImZ1bmN0aW9uIikKKyAgICAgICAgb25SZWplY3RlZCA9IGZ1bmN0aW9uIChhcmd1bWVudCkg
eyB0aHJvdyBhcmd1bWVudDsgfTsKKworICAgIHZhciBmdWxmaWxsUmVhY3Rpb24gPSBAbmV3UHJv
bWlzZVJlYWN0aW9uKGNhcGFiaWxpdHksIG9uRnVsZmlsbGVkKTsKKyAgICB2YXIgcmVqZWN0UmVh
Y3Rpb24gPSBAbmV3UHJvbWlzZVJlYWN0aW9uKGNhcGFiaWxpdHksIG9uUmVqZWN0ZWQpOworCisg
ICAgdmFyIHN0YXRlID0gcHJvbWlzZS5AcHJvbWlzZVN0YXRlOworCisgICAgaWYgKHN0YXRlID09
PSBAcHJvbWlzZVBlbmRpbmcpIHsKKyAgICAgICAgQHB1dEJ5VmFsRGlyZWN0KHByb21pc2UuQHBy
b21pc2VGdWxmaWxsUmVhY3Rpb25zLCBwcm9taXNlLkBwcm9taXNlRnVsZmlsbFJlYWN0aW9ucy5s
ZW5ndGgsIGZ1bGZpbGxSZWFjdGlvbikKKyAgICAgICAgQHB1dEJ5VmFsRGlyZWN0KHByb21pc2Uu
QHByb21pc2VSZWplY3RSZWFjdGlvbnMsIHByb21pc2UuQHByb21pc2VSZWplY3RSZWFjdGlvbnMu
bGVuZ3RoLCByZWplY3RSZWFjdGlvbikKKyAgICB9IGVsc2UgaWYgKHN0YXRlID09PSBAcHJvbWlz
ZUZ1bGZpbGxlZCkKKyAgICAgICAgQGVucXVldWVKb2IoQHByb21pc2VSZWFjdGlvbkpvYiwgW2Z1
bGZpbGxSZWFjdGlvbiwgcHJvbWlzZS5AcHJvbWlzZVJlc3VsdF0pOworICAgIGVsc2UgaWYgKHN0
YXRlID09PSBAcHJvbWlzZVJlamVjdGVkKQorICAgICAgICBAZW5xdWV1ZUpvYihAcHJvbWlzZVJl
YWN0aW9uSm9iLCBbcmVqZWN0UmVhY3Rpb24sIHByb21pc2UuQHByb21pc2VSZXN1bHRdKTsKKwor
ICAgIHJldHVybiBjYXBhYmlsaXR5LkBwcm9taXNlOworfQpkaWZmIC0tZ2l0IGEvU291cmNlL0ph
dmFTY3JpcHRDb3JlL2J1aWx0aW5zL1Byb21pc2UucHJvdG90eXBlLmpzIGIvU291cmNlL0phdmFT
Y3JpcHRDb3JlL2J1aWx0aW5zL1Byb21pc2UucHJvdG90eXBlLmpzCmluZGV4IDg1NjNkZjBkOTI3
ZmIyMzM5Njg5MzllMTQ5NDIzOTZlYzg1ZTY1YWEuLmJhMDIyYWJhNWEwZDU4ZDg1ZWZlZTA3OWIz
OWFjYmIxMTM2MmJmOGQgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9idWlsdGlu
cy9Qcm9taXNlLnByb3RvdHlwZS5qcworKysgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvYnVpbHRp
bnMvUHJvbWlzZS5wcm90b3R5cGUuanMKQEAgLTQxLDI2ICs0MSwxOSBAQCBmdW5jdGlvbiB0aGVu
KG9uRnVsZmlsbGVkLCBvblJlamVjdGVkKQogICAgIC8vIGh0dHBzOi8vYnVncy53ZWJraXQub3Jn
L3Nob3dfYnVnLmNnaT9pZD0xNDY2MjQKICAgICB2YXIgY29uc3RydWN0b3IgPSB0aGlzLmNvbnN0
cnVjdG9yOwogCi0gICAgdmFyIHJlc3VsdENhcGFiaWxpdHkgPSBAbmV3UHJvbWlzZUNhcGFiaWxp
dHkoY29uc3RydWN0b3IpOwotCi0gICAgaWYgKHR5cGVvZiBvbkZ1bGZpbGxlZCAhPT0gImZ1bmN0
aW9uIikKLSAgICAgICAgb25GdWxmaWxsZWQgPSBmdW5jdGlvbiAoYXJndW1lbnQpIHsgcmV0dXJu
IGFyZ3VtZW50OyB9OwotCi0gICAgaWYgKHR5cGVvZiBvblJlamVjdGVkICE9PSAiZnVuY3Rpb24i
KQotICAgICAgICBvblJlamVjdGVkID0gZnVuY3Rpb24gKGFyZ3VtZW50KSB7IHRocm93IGFyZ3Vt
ZW50OyB9OwotCi0gICAgdmFyIGZ1bGZpbGxSZWFjdGlvbiA9IEBuZXdQcm9taXNlUmVhY3Rpb24o
cmVzdWx0Q2FwYWJpbGl0eSwgb25GdWxmaWxsZWQpOwotICAgIHZhciByZWplY3RSZWFjdGlvbiA9
IEBuZXdQcm9taXNlUmVhY3Rpb24ocmVzdWx0Q2FwYWJpbGl0eSwgb25SZWplY3RlZCk7CisgICAg
cmV0dXJuIEBwcm9taXNlVGhlbih0aGlzLCBAbmV3UHJvbWlzZUNhcGFiaWxpdHkoY29uc3RydWN0
b3IpLCBvbkZ1bGZpbGxlZCwgb25SZWplY3RlZCk7Cit9CiAKLSAgICB2YXIgc3RhdGUgPSB0aGlz
LkBwcm9taXNlU3RhdGU7CitmdW5jdGlvbiBwcml2YXRlVGhlbihvbkZ1bGZpbGxlZCwgb25SZWpl
Y3RlZCkKK3sKKyAgICAvLyBUaGlzIGZ1bmN0aW9uIGlzIGludGVuZGVkIHRvIGJlIHVzZWQgaW4g
dGhlIEpTQyBpbnRlcm5hbHMuCisgICAgLy8gVGhlIGltcGxlbWVudGF0aW9uIHNob3VsZCB0YWtl
IGNhcmUgbm90IHRvIHBlcmZvcm0gdGhlIHVzZXIKKyAgICAvLyBvYnNlcnZhYmxlIC8gdHJhcHBh
YmxlIG9wZXJhdGlvbnMuCisgICAgLy8KKyAgICAvLyAxLiBEb24ndCBsb29rIHVwIHRoaXMuY29u
c3RydWN0b3IgLyBAQHNwZWNpZXMuIEFsd2F5cyBjb25zdHJ1Y3QKKyAgICAvLyAgICB0aGUgcGxh
aW4gUHJvbWlzZSBvYmplY3QuCiAKLSAgICBpZiAoc3RhdGUgPT09IEBwcm9taXNlUGVuZGluZykg
ewotICAgICAgICBAcHV0QnlWYWxEaXJlY3QodGhpcy5AcHJvbWlzZUZ1bGZpbGxSZWFjdGlvbnMs
IHRoaXMuQHByb21pc2VGdWxmaWxsUmVhY3Rpb25zLmxlbmd0aCwgZnVsZmlsbFJlYWN0aW9uKQot
ICAgICAgICBAcHV0QnlWYWxEaXJlY3QodGhpcy5AcHJvbWlzZVJlamVjdFJlYWN0aW9ucywgdGhp
cy5AcHJvbWlzZVJlamVjdFJlYWN0aW9ucy5sZW5ndGgsIHJlamVjdFJlYWN0aW9uKQotICAgIH0g
ZWxzZSBpZiAoc3RhdGUgPT09IEBwcm9taXNlRnVsZmlsbGVkKQotICAgICAgICBAZW5xdWV1ZUpv
YihAcHJvbWlzZVJlYWN0aW9uSm9iLCBbZnVsZmlsbFJlYWN0aW9uLCB0aGlzLkBwcm9taXNlUmVz
dWx0XSk7Ci0gICAgZWxzZSBpZiAoc3RhdGUgPT09IEBwcm9taXNlUmVqZWN0ZWQpCi0gICAgICAg
IEBlbnF1ZXVlSm9iKEBwcm9taXNlUmVhY3Rpb25Kb2IsIFtyZWplY3RSZWFjdGlvbiwgdGhpcy5A
cHJvbWlzZVJlc3VsdF0pOworICAgICJ1c2Ugc3RyaWN0IjsKIAotICAgIHJldHVybiByZXN1bHRD
YXBhYmlsaXR5LkBwcm9taXNlOworICAgIHJldHVybiBAcHJvbWlzZVRoZW4odGhpcywgQG5ld1By
b21pc2VEZWZlcnJlZCgpLCBvbkZ1bGZpbGxlZCwgb25SZWplY3RlZCk7CiB9CmRpZmYgLS1naXQg
YS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvYnVpbHRpbnMvUHJvbWlzZUNvbnN0cnVjdG9yLmpzIGIv
U291cmNlL0phdmFTY3JpcHRDb3JlL2J1aWx0aW5zL1Byb21pc2VDb25zdHJ1Y3Rvci5qcwppbmRl
eCAxZjgzYjQ3Zjc5MGE3NWU1YmY4YzkzZDVlNjY0OTYxOGNiMWFlYzY3Li5mNjYxMDc3NGQwMWYy
MTYyMDYyNjBjNzA0ZGZjM2ExMGU1MzQ1ZTQxIDEwMDY0NAotLS0gYS9Tb3VyY2UvSmF2YVNjcmlw
dENvcmUvYnVpbHRpbnMvUHJvbWlzZUNvbnN0cnVjdG9yLmpzCisrKyBiL1NvdXJjZS9KYXZhU2Ny
aXB0Q29yZS9idWlsdGlucy9Qcm9taXNlQ29uc3RydWN0b3IuanMKQEAgLTEzNywzICsxMzcsNjUg
QEAgZnVuY3Rpb24gcmVzb2x2ZSh2YWx1ZSkKIAogICAgIHJldHVybiBwcm9taXNlQ2FwYWJpbGl0
eS5AcHJvbWlzZTsKIH0KKworZnVuY3Rpb24gcHJpdmF0ZUFsbChhcnJheSkKK3sKKyAgICAvLyBU
aGlzIGZ1bmN0aW9uIGlzIGludGVuZGVkIHRvIGJlIHVzZWQgaW4gdGhlIEpTQyBpbnRlcm5hbHMu
CisgICAgLy8gVGhlIGltcGxlbWVudGF0aW9uIHNob3VsZCB0YWtlIGNhcmUgbm90IHRvIHBlcmZv
cm0gdGhlIHVzZXIKKyAgICAvLyBvYnNlcnZhYmxlIC8gdHJhcHBhYmxlIG9wZXJhdGlvbnMuCisg
ICAgLy8KKyAgICAvLyAxLiBEb24ndCB1c2UgZm9yLW9mIGFuZCBpdGVyYWJsZXMuIFRoaXMgZnVu
Y3Rpb24gb25seSBhY2NlcHRzCisgICAgLy8gICAgdGhlIGRlbnNlIGFycmF5IG9mIHRoZSBwcm9t
aXNlcy4KKyAgICAvLyAyLiBEb24ndCBsb29rIHVwIHRoaXMuY29uc3RydWN0b3IgLyBAQHNwZWNp
ZXMuIEFsd2F5cyBjb25zdHJ1Y3QKKyAgICAvLyAgICB0aGUgcGxhaW4gUHJvbWlzZSBvYmplY3Qu
CisKKyAgICAidXNlIHN0cmljdCI7CisKKyAgICB2YXIgcHJvbWlzZUNhcGFiaWxpdHkgPSBAbmV3
UHJvbWlzZURlZmVycmVkKCk7CisKKyAgICB2YXIgdmFsdWVzID0gW107CisgICAgdmFyIGluZGV4
ID0gMDsKKyAgICB2YXIgcmVtYWluaW5nRWxlbWVudHNDb3VudCA9IDE7CisKKyAgICBmdW5jdGlv
biBuZXdSZXNvbHZlRWxlbWVudChpbmRleCkKKyAgICB7CisgICAgICAgIHZhciBhbHJlYWR5Q2Fs
bGVkID0gZmFsc2U7CisgICAgICAgIHJldHVybiBmdW5jdGlvbiAoYXJndW1lbnQpCisgICAgICAg
IHsKKyAgICAgICAgICAgIGlmIChhbHJlYWR5Q2FsbGVkKQorICAgICAgICAgICAgICAgIHJldHVy
biB1bmRlZmluZWQ7CisgICAgICAgICAgICBhbHJlYWR5Q2FsbGVkID0gdHJ1ZTsKKworICAgICAg
ICAgICAgQHB1dEJ5VmFsRGlyZWN0KHZhbHVlcywgaW5kZXgsIGFyZ3VtZW50KTsKKworICAgICAg
ICAgICAgLS1yZW1haW5pbmdFbGVtZW50c0NvdW50OworICAgICAgICAgICAgaWYgKHJlbWFpbmlu
Z0VsZW1lbnRzQ291bnQgPT09IDApCisgICAgICAgICAgICAgICAgcmV0dXJuIHByb21pc2VDYXBh
YmlsaXR5LkByZXNvbHZlLkBjYWxsKHVuZGVmaW5lZCwgdmFsdWVzKTsKKworICAgICAgICAgICAg
cmV0dXJuIHVuZGVmaW5lZDsKKyAgICAgICAgfQorICAgIH0KKworICAgIHRyeSB7CisgICAgICAg
IGZvciAodmFyIGluZGV4ID0gMCwgbGVuZ3RoID0gYXJyYXkubGVuZ3RoOyBpbmRleCA8IGxlbmd0
aDsgKytpbmRleCkgeworICAgICAgICAgICAgdmFyIHZhbHVlID0gYXJyYXlbaW5kZXhdOworICAg
ICAgICAgICAgQHB1dEJ5VmFsRGlyZWN0KHZhbHVlcywgaW5kZXgsIHVuZGVmaW5lZCk7CisKKyAg
ICAgICAgICAgIHZhciBuZXh0UHJvbWlzZUNhcGFiaWxpdHkgPSBAbmV3UHJvbWlzZURlZmVycmVk
KCk7CisgICAgICAgICAgICBuZXh0UHJvbWlzZUNhcGFiaWxpdHkuQHJlc29sdmUuQGNhbGwodW5k
ZWZpbmVkLCB2YWx1ZSk7CisgICAgICAgICAgICB2YXIgbmV4dFByb21pc2UgPSBuZXh0UHJvbWlz
ZUNhcGFiaWxpdHkuQHByb21pc2U7CisKKyAgICAgICAgICAgIHZhciByZXNvbHZlRWxlbWVudCA9
IG5ld1Jlc29sdmVFbGVtZW50KGluZGV4KTsKKyAgICAgICAgICAgICsrcmVtYWluaW5nRWxlbWVu
dHNDb3VudDsKKyAgICAgICAgICAgIG5leHRQcm9taXNlLkB0aGVuKHJlc29sdmVFbGVtZW50LCBw
cm9taXNlQ2FwYWJpbGl0eS5AcmVqZWN0KTsKKyAgICAgICAgfQorCisgICAgICAgIC0tcmVtYWlu
aW5nRWxlbWVudHNDb3VudDsKKyAgICAgICAgaWYgKHJlbWFpbmluZ0VsZW1lbnRzQ291bnQgPT09
IDApCisgICAgICAgICAgICBwcm9taXNlQ2FwYWJpbGl0eS5AcmVzb2x2ZS5AY2FsbCh1bmRlZmlu
ZWQsIHZhbHVlcyk7CisgICAgfSBjYXRjaCAoZXJyb3IpIHsKKyAgICAgICAgcHJvbWlzZUNhcGFi
aWxpdHkuQHJlamVjdC5AY2FsbCh1bmRlZmluZWQsIGVycm9yKTsKKyAgICB9CisKKyAgICByZXR1
cm4gcHJvbWlzZUNhcGFiaWxpdHkuQHByb21pc2U7Cit9CmRpZmYgLS1naXQgYS9Tb3VyY2UvSmF2
YVNjcmlwdENvcmUvanNjLmNwcCBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9qc2MuY3BwCmluZGV4
IDViMTk1MzNjNDBhYTUxNDQyY2M0MWMxNjk4YWJiZWMyMTJmYWYzNzguLmE0Yzk3M2ExMDAyZDQx
YjNhMWZjMzgyNzJhOWUwMWFlYzNiMzM3MjkgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9KYXZhU2NyaXB0
Q29yZS9qc2MuY3BwCisrKyBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9qc2MuY3BwCkBAIC00MSw2
ICs0MSw3IEBACiAjaW5jbHVkZSAiSlNGdW5jdGlvbi5oIgogI2luY2x1ZGUgIkpTTG9jay5oIgog
I2luY2x1ZGUgIkpTT05PYmplY3QuaCIKKyNpbmNsdWRlICJKU1Byb21pc2VEZWZlcnJlZC5oIgog
I2luY2x1ZGUgIkpTUHJveHkuaCIKICNpbmNsdWRlICJKU1N0cmluZy5oIgogI2luY2x1ZGUgIkpT
V0FTTU1vZHVsZS5oIgpAQCAtNTE5LDIwICs1MjAsMTcgQEAgc3RydWN0IFNjcmlwdCB7CiBjbGFz
cyBDb21tYW5kTGluZSB7CiBwdWJsaWM6CiAgICAgQ29tbWFuZExpbmUoaW50IGFyZ2MsIGNoYXIq
KiBhcmd2KQotICAgICAgICA6IG1faW50ZXJhY3RpdmUoZmFsc2UpCi0gICAgICAgICwgbV9kdW1w
KGZhbHNlKQotICAgICAgICAsIG1fZXhpdENvZGUoZmFsc2UpCi0gICAgICAgICwgbV9wcm9maWxl
KGZhbHNlKQogICAgIHsKICAgICAgICAgcGFyc2VBcmd1bWVudHMoYXJnYywgYXJndik7CiAgICAg
fQogCi0gICAgYm9vbCBtX2ludGVyYWN0aXZlOwotICAgIGJvb2wgbV9kdW1wOwotICAgIGJvb2wg
bV9leGl0Q29kZTsKKyAgICBib29sIG1faW50ZXJhY3RpdmUgeyBmYWxzZSB9OworICAgIGJvb2wg
bV9kdW1wIHsgZmFsc2UgfTsKKyAgICBib29sIG1fbW9kdWxlIHsgZmFsc2UgfTsKKyAgICBib29s
IG1fZXhpdENvZGUgeyBmYWxzZSB9OwogICAgIFZlY3RvcjxTY3JpcHQ+IG1fc2NyaXB0czsKICAg
ICBWZWN0b3I8U3RyaW5nPiBtX2FyZ3VtZW50czsKLSAgICBib29sIG1fcHJvZmlsZTsKKyAgICBi
b29sIG1fcHJvZmlsZSB7IGZhbHNlIH07CiAgICAgU3RyaW5nIG1fcHJvZmlsZXJPdXRwdXQ7CiAK
ICAgICB2b2lkIHBhcnNlQXJndW1lbnRzKGludCwgY2hhcioqKTsKQEAgLTU2Niw2ICs1NjQsMTcg
QEAgbG9uZyBTdG9wV2F0Y2g6OmdldEVsYXBzZWRNUygpCiAgICAgcmV0dXJuIHN0YXRpY19jYXN0
PGxvbmc+KChtX3N0b3BUaW1lIC0gbV9zdGFydFRpbWUpICogMTAwMCk7CiB9CiAKK3N0YXRpYyBp
bmxpbmUgU3RyaW5nIHN0cmluZ0Zyb21VVEYoY29uc3QgY2hhciogdXRmOCkKK3sKKyAgICByZXR1
cm4gU3RyaW5nOjpmcm9tVVRGOFdpdGhMYXRpbjFGYWxsYmFjayh1dGY4LCBzdHJsZW4odXRmOCkp
OworfQorCitzdGF0aWMgaW5saW5lIFNvdXJjZUNvZGUganNjU291cmNlKGNvbnN0IGNoYXIqIHV0
ZjgsIGNvbnN0IFN0cmluZyYgZmlsZW5hbWUpCit7CisgICAgU3RyaW5nIHN0ciA9IHN0cmluZ0Zy
b21VVEYodXRmOCk7CisgICAgcmV0dXJuIG1ha2VTb3VyY2Uoc3RyLCBmaWxlbmFtZSk7Cit9CisK
IGNsYXNzIEdsb2JhbE9iamVjdCA6IHB1YmxpYyBKU0dsb2JhbE9iamVjdCB7CiBwcml2YXRlOgog
ICAgIEdsb2JhbE9iamVjdChWTSYsIFN0cnVjdHVyZSopOwpAQCAtNjg3LDEwICs2OTYsMzEgQEAg
Y2xhc3MgR2xvYmFsT2JqZWN0IDogcHVibGljIEpTR2xvYmFsT2JqZWN0IHsKICAgICAgICAgSWRl
bnRpZmllciBpZGVudGlmaWVyID0gSWRlbnRpZmllcjo6ZnJvbVN0cmluZygmdm0sIG5hbWUpOwog
ICAgICAgICBwdXREaXJlY3Qodm0sIGlkZW50aWZpZXIsIEpTRnVuY3Rpb246OmNyZWF0ZSh2bSwg
dGhpcywgYXJndW1lbnRzLCBpZGVudGlmaWVyLnN0cmluZygpLCBmdW5jdGlvbiwgTm9JbnRyaW5z
aWMsIGZ1bmN0aW9uKSk7CiAgICAgfQorCisgICAgc3RhdGljIEpTVmFsdWUgbG9hZGVyRmV0Y2go
SlNHbG9iYWxPYmplY3QqIGdsb2JhbE9iamVjdCwgRXhlY1N0YXRlKiBleGVjLCBKU1ZhbHVlIGtl
eSkKKyAgICB7CisgICAgICAgIEpTUHJvbWlzZURlZmVycmVkKiBkZWZlcnJlZCA9IEpTUHJvbWlz
ZURlZmVycmVkOjpjcmVhdGUoZXhlYywgZ2xvYmFsT2JqZWN0KTsKKyAgICAgICAgU3RyaW5nIG1v
ZHVsZUtleSA9IGtleS50b1N0cmluZyhleGVjKS0+dmFsdWUoZXhlYyk7CisgICAgICAgIGlmIChl
eGVjLT5oYWRFeGNlcHRpb24oKSkgeworICAgICAgICAgICAgSlNWYWx1ZSBleGNlcHRpb24gPSBl
eGVjLT5leGNlcHRpb24oKTsKKyAgICAgICAgICAgIGV4ZWMtPmNsZWFyRXhjZXB0aW9uKCk7Cisg
ICAgICAgICAgICBkZWZlcnJlZC0+cmVqZWN0KGV4ZWMsIGV4Y2VwdGlvbik7CisgICAgICAgICAg
ICByZXR1cm4gZGVmZXJyZWQtPnByb21pc2UoKTsKKyAgICAgICAgfQorCisgICAgICAgIC8vIEhl
cmUsIG5vdyB3ZSBjb25zaWRlciBtb2R1bGVLZXkgYXMgdGhlIGZpbGVOYW1lLgorICAgICAgICBW
ZWN0b3I8Y2hhcj4gdXRmODsKKyAgICAgICAgaWYgKCFmaWxsQnVmZmVyV2l0aENvbnRlbnRzT2ZG
aWxlKG1vZHVsZUtleSwgdXRmOCkpIHsKKyAgICAgICAgICAgIGRlZmVycmVkLT5yZWplY3QoZXhl
YywgY3JlYXRlRXJyb3IoZXhlYywgbWFrZVN0cmluZygiQ291bGQgbm90IG9wZW4gZmlsZSAnIiwg
bW9kdWxlS2V5LCAiJy4iKSkpOworICAgICAgICAgICAgcmV0dXJuIGRlZmVycmVkLT5wcm9taXNl
KCk7CisgICAgICAgIH0KKyAgICAgICAgZGVmZXJyZWQtPnJlc29sdmUoZXhlYywganNTdHJpbmco
ZXhlYywgc3RyaW5nRnJvbVVURih1dGY4LmRhdGEoKSkpKTsKKyAgICAgICAgcmV0dXJuIGRlZmVy
cmVkLT5wcm9taXNlKCk7CisgICAgfQogfTsKIAogY29uc3QgQ2xhc3NJbmZvIEdsb2JhbE9iamVj
dDo6c19pbmZvID0geyAiZ2xvYmFsIiwgJkpTR2xvYmFsT2JqZWN0OjpzX2luZm8sICZnbG9iYWxP
YmplY3RUYWJsZSwgQ1JFQVRFX01FVEhPRF9UQUJMRShHbG9iYWxPYmplY3QpIH07Ci1jb25zdCBH
bG9iYWxPYmplY3RNZXRob2RUYWJsZSBHbG9iYWxPYmplY3Q6OnNfZ2xvYmFsT2JqZWN0TWV0aG9k
VGFibGUgPSB7ICZhbGxvd3NBY2Nlc3NGcm9tLCAmc3VwcG9ydHNQcm9maWxpbmcsICZzdXBwb3J0
c1JpY2hTb3VyY2VJbmZvLCAmc2hvdWxkSW50ZXJydXB0U2NyaXB0LCAmamF2YVNjcmlwdFJ1bnRp
bWVGbGFncywgMCwgJnNob3VsZEludGVycnVwdFNjcmlwdEJlZm9yZVRpbWVvdXQgfTsKK2NvbnN0
IEdsb2JhbE9iamVjdE1ldGhvZFRhYmxlIEdsb2JhbE9iamVjdDo6c19nbG9iYWxPYmplY3RNZXRo
b2RUYWJsZSA9IHsgJmFsbG93c0FjY2Vzc0Zyb20sICZzdXBwb3J0c1Byb2ZpbGluZywgJnN1cHBv
cnRzUmljaFNvdXJjZUluZm8sICZzaG91bGRJbnRlcnJ1cHRTY3JpcHQsICZqYXZhU2NyaXB0UnVu
dGltZUZsYWdzLCAwLCAmc2hvdWxkSW50ZXJydXB0U2NyaXB0QmVmb3JlVGltZW91dCwgbnVsbHB0
ciwgJmxvYWRlckZldGNoLCBudWxscHRyLCBudWxscHRyIH07CiAKIAogR2xvYmFsT2JqZWN0OjpH
bG9iYWxPYmplY3QoVk0mIHZtLCBTdHJ1Y3R1cmUqIHN0cnVjdHVyZSkKQEAgLTY5OCwxNyArNzI4
LDYgQEAgR2xvYmFsT2JqZWN0OjpHbG9iYWxPYmplY3QoVk0mIHZtLCBTdHJ1Y3R1cmUqIHN0cnVj
dHVyZSkKIHsKIH0KIAotc3RhdGljIGlubGluZSBTdHJpbmcgc3RyaW5nRnJvbVVURihjb25zdCBj
aGFyKiB1dGY4KQotewotICAgIHJldHVybiBTdHJpbmc6OmZyb21VVEY4V2l0aExhdGluMUZhbGxi
YWNrKHV0ZjgsIHN0cmxlbih1dGY4KSk7Ci19Ci0KLXN0YXRpYyBpbmxpbmUgU291cmNlQ29kZSBq
c2NTb3VyY2UoY29uc3QgY2hhciogdXRmOCwgY29uc3QgU3RyaW5nJiBmaWxlbmFtZSkKLXsKLSAg
ICBTdHJpbmcgc3RyID0gc3RyaW5nRnJvbVVURih1dGY4KTsKLSAgICByZXR1cm4gbWFrZVNvdXJj
ZShzdHIsIGZpbGVuYW1lKTsKLX0KLQogRW5jb2RlZEpTVmFsdWUgSlNDX0hPU1RfQ0FMTCBmdW5j
dGlvblByaW50KEV4ZWNTdGF0ZSogZXhlYykKIHsKICAgICBmb3IgKHVuc2lnbmVkIGkgPSAwOyBp
IDwgZXhlYy0+YXJndW1lbnRDb3VudCgpOyArK2kpIHsKQEAgLTEyMTIsNyArMTIzMSw3IEBAIEVu
Y29kZWRKU1ZhbHVlIEpTQ19IT1NUX0NBTEwgZnVuY3Rpb25DaGVja01vZHVsZVN5bnRheChFeGVj
U3RhdGUqIGV4ZWMpCiAgICAgc3RvcFdhdGNoLnN0YXJ0KCk7CiAKICAgICBQYXJzZXJFcnJvciBl
cnJvcjsKLSAgICBib29sIHZhbGlkU3ludGF4ID0gY2hlY2tNb2R1bGVTeW50YXgoZXhlYy0+dm0o
KSwgbWFrZVNvdXJjZShzb3VyY2UpLCBlcnJvcik7CisgICAgYm9vbCB2YWxpZFN5bnRheCA9IGNo
ZWNrTW9kdWxlU3ludGF4KGV4ZWMsIG1ha2VTb3VyY2Uoc291cmNlKSwgZXJyb3IpOwogICAgIHN0
b3BXYXRjaC5zdG9wKCk7CiAKICAgICBpZiAoIXZhbGlkU3ludGF4KQpAQCAtMTMyMCw3ICsxMzM5
LDE4IEBAIGludCBtYWluKGludCBhcmdjLCBjaGFyKiogYXJndikKICAgICBqc2NFeGl0KHJlcyk7
CiB9CiAKLXN0YXRpYyBib29sIHJ1bldpdGhTY3JpcHRzKEdsb2JhbE9iamVjdCogZ2xvYmFsT2Jq
ZWN0LCBjb25zdCBWZWN0b3I8U2NyaXB0PiYgc2NyaXB0cywgYm9vbCBkdW1wKQorc3RhdGljIHZv
aWQgZHVtcEV4Y2VwdGlvbihHbG9iYWxPYmplY3QqIGdsb2JhbE9iamVjdCwgTmFrZWRQdHI8RXhj
ZXB0aW9uPiBldmFsdWF0aW9uRXhjZXB0aW9uKQoreworICAgIGlmIChldmFsdWF0aW9uRXhjZXB0
aW9uKSB7CisgICAgICAgIHByaW50ZigiRXhjZXB0aW9uOiAlc1xuIiwgZXZhbHVhdGlvbkV4Y2Vw
dGlvbi0+dmFsdWUoKS50b1N0cmluZyhnbG9iYWxPYmplY3QtPmdsb2JhbEV4ZWMoKSktPnZhbHVl
KGdsb2JhbE9iamVjdC0+Z2xvYmFsRXhlYygpKS51dGY4KCkuZGF0YSgpKTsKKyAgICAgICAgSWRl
bnRpZmllciBzdGFja0lEID0gSWRlbnRpZmllcjo6ZnJvbVN0cmluZyhnbG9iYWxPYmplY3QtPmds
b2JhbEV4ZWMoKSwgInN0YWNrIik7CisgICAgICAgIEpTVmFsdWUgc3RhY2tWYWx1ZSA9IGV2YWx1
YXRpb25FeGNlcHRpb24tPnZhbHVlKCkuZ2V0KGdsb2JhbE9iamVjdC0+Z2xvYmFsRXhlYygpLCBz
dGFja0lEKTsKKyAgICAgICAgaWYgKCFzdGFja1ZhbHVlLmlzVW5kZWZpbmVkT3JOdWxsKCkpCisg
ICAgICAgICAgICBwcmludGYoIiVzXG4iLCBzdGFja1ZhbHVlLnRvU3RyaW5nKGdsb2JhbE9iamVj
dC0+Z2xvYmFsRXhlYygpKS0+dmFsdWUoZ2xvYmFsT2JqZWN0LT5nbG9iYWxFeGVjKCkpLnV0Zjgo
KS5kYXRhKCkpOworICAgIH0KK30KKworc3RhdGljIGJvb2wgcnVuV2l0aFNjcmlwdHMoR2xvYmFs
T2JqZWN0KiBnbG9iYWxPYmplY3QsIGNvbnN0IFZlY3RvcjxTY3JpcHQ+JiBzY3JpcHRzLCBib29s
IGR1bXAsIGJvb2wgbW9kdWxlKQogewogICAgIGNvbnN0IGNoYXIqIHNjcmlwdDsKICAgICBTdHJp
bmcgZmlsZU5hbWU7CkBAIC0xMzQ5LDE3ICsxMzc5LDIxIEBAIHN0YXRpYyBib29sIHJ1bldpdGhT
Y3JpcHRzKEdsb2JhbE9iamVjdCogZ2xvYmFsT2JqZWN0LCBjb25zdCBWZWN0b3I8U2NyaXB0PiYg
c2NyCiAKICAgICAgICAgdm0uc3RhcnRTYW1wbGluZygpOwogCi0gICAgICAgIE5ha2VkUHRyPEV4
Y2VwdGlvbj4gZXZhbHVhdGlvbkV4Y2VwdGlvbjsKLSAgICAgICAgSlNWYWx1ZSByZXR1cm5WYWx1
ZSA9IGV2YWx1YXRlKGdsb2JhbE9iamVjdC0+Z2xvYmFsRXhlYygpLCBqc2NTb3VyY2Uoc2NyaXB0
LCBmaWxlTmFtZSksIEpTVmFsdWUoKSwgZXZhbHVhdGlvbkV4Y2VwdGlvbik7Ci0gICAgICAgIHN1
Y2Nlc3MgPSBzdWNjZXNzICYmICFldmFsdWF0aW9uRXhjZXB0aW9uOwotICAgICAgICBpZiAoZHVt
cCAmJiAhZXZhbHVhdGlvbkV4Y2VwdGlvbikKLSAgICAgICAgICAgIHByaW50ZigiRW5kOiAlc1xu
IiwgcmV0dXJuVmFsdWUudG9TdHJpbmcoZ2xvYmFsT2JqZWN0LT5nbG9iYWxFeGVjKCkpLT52YWx1
ZShnbG9iYWxPYmplY3QtPmdsb2JhbEV4ZWMoKSkudXRmOCgpLmRhdGEoKSk7Ci0gICAgICAgIGlm
IChldmFsdWF0aW9uRXhjZXB0aW9uKSB7Ci0gICAgICAgICAgICBwcmludGYoIkV4Y2VwdGlvbjog
JXNcbiIsIGV2YWx1YXRpb25FeGNlcHRpb24tPnZhbHVlKCkudG9TdHJpbmcoZ2xvYmFsT2JqZWN0
LT5nbG9iYWxFeGVjKCkpLT52YWx1ZShnbG9iYWxPYmplY3QtPmdsb2JhbEV4ZWMoKSkudXRmOCgp
LmRhdGEoKSk7Ci0gICAgICAgICAgICBJZGVudGlmaWVyIHN0YWNrSUQgPSBJZGVudGlmaWVyOjpm
cm9tU3RyaW5nKGdsb2JhbE9iamVjdC0+Z2xvYmFsRXhlYygpLCAic3RhY2siKTsKLSAgICAgICAg
ICAgIEpTVmFsdWUgc3RhY2tWYWx1ZSA9IGV2YWx1YXRpb25FeGNlcHRpb24tPnZhbHVlKCkuZ2V0
KGdsb2JhbE9iamVjdC0+Z2xvYmFsRXhlYygpLCBzdGFja0lEKTsKLSAgICAgICAgICAgIGlmICgh
c3RhY2tWYWx1ZS5pc1VuZGVmaW5lZE9yTnVsbCgpKQotICAgICAgICAgICAgICAgIHByaW50Zigi
JXNcbiIsIHN0YWNrVmFsdWUudG9TdHJpbmcoZ2xvYmFsT2JqZWN0LT5nbG9iYWxFeGVjKCkpLT52
YWx1ZShnbG9iYWxPYmplY3QtPmdsb2JhbEV4ZWMoKSkudXRmOCgpLmRhdGEoKSk7CisgICAgICAg
IGlmIChtb2R1bGUpIHsKKyNpZiBFTkFCTEUoRVM2X01PRFVMRVMpCisgICAgICAgICAgICBOYWtl
ZFB0cjxFeGNlcHRpb24+IGV2YWx1YXRpb25FeGNlcHRpb247CisgICAgICAgICAgICBldmFsdWF0
ZU1vZHVsZShnbG9iYWxPYmplY3QtPmdsb2JhbEV4ZWMoKSwganNjU291cmNlKHNjcmlwdCwgZmls
ZU5hbWUpLCBldmFsdWF0aW9uRXhjZXB0aW9uKTsKKyAgICAgICAgICAgIGR1bXBFeGNlcHRpb24o
Z2xvYmFsT2JqZWN0LCBldmFsdWF0aW9uRXhjZXB0aW9uKTsKKyAgICAgICAgICAgIGdsb2JhbE9i
amVjdC0+Z2xvYmFsRXhlYygpLT5jbGVhckV4Y2VwdGlvbigpOworICAgICAgICAgICAgZ2xvYmFs
T2JqZWN0LT52bSgpLmRyYWluTWljcm90YXNrcygpOworI2VuZGlmCisgICAgICAgIH0gZWxzZSB7
CisgICAgICAgICAgICBOYWtlZFB0cjxFeGNlcHRpb24+IGV2YWx1YXRpb25FeGNlcHRpb247Cisg
ICAgICAgICAgICBKU1ZhbHVlIHJldHVyblZhbHVlID0gZXZhbHVhdGUoZ2xvYmFsT2JqZWN0LT5n
bG9iYWxFeGVjKCksIGpzY1NvdXJjZShzY3JpcHQsIGZpbGVOYW1lKSwgSlNWYWx1ZSgpLCBldmFs
dWF0aW9uRXhjZXB0aW9uKTsKKyAgICAgICAgICAgIHN1Y2Nlc3MgPSBzdWNjZXNzICYmICFldmFs
dWF0aW9uRXhjZXB0aW9uOworICAgICAgICAgICAgaWYgKGR1bXAgJiYgIWV2YWx1YXRpb25FeGNl
cHRpb24pCisgICAgICAgICAgICAgICAgcHJpbnRmKCJFbmQ6ICVzXG4iLCByZXR1cm5WYWx1ZS50
b1N0cmluZyhnbG9iYWxPYmplY3QtPmdsb2JhbEV4ZWMoKSktPnZhbHVlKGdsb2JhbE9iamVjdC0+
Z2xvYmFsRXhlYygpKS51dGY4KCkuZGF0YSgpKTsKKyAgICAgICAgICAgIGR1bXBFeGNlcHRpb24o
Z2xvYmFsT2JqZWN0LCBldmFsdWF0aW9uRXhjZXB0aW9uKTsKICAgICAgICAgfQogCiAgICAgICAg
IHZtLnN0b3BTYW1wbGluZygpOwpAQCAtMTQ1MSw2ICsxNDg1LDkgQEAgc3RhdGljIE5PX1JFVFVS
TiB2b2lkIHByaW50VXNhZ2VTdGF0ZW1lbnQoYm9vbCBoZWxwID0gZmFsc2UpCiAgICAgZnByaW50
ZihzdGRlcnIsICIgIC1mICAgICAgICAgU3BlY2lmaWVzIGEgc291cmNlIGZpbGUgKGRlcHJlY2F0
ZWQpXG4iKTsKICAgICBmcHJpbnRmKHN0ZGVyciwgIiAgLWh8LS1oZWxwICBQcmludHMgdGhpcyBo
ZWxwIG1lc3NhZ2VcbiIpOwogICAgIGZwcmludGYoc3RkZXJyLCAiICAtaSAgICAgICAgIEVuYWJs
ZXMgaW50ZXJhY3RpdmUgbW9kZSAoZGVmYXVsdCBpZiBubyBmaWxlcyBhcmUgc3BlY2lmaWVkKVxu
Iik7CisjaWYgRU5BQkxFKEVTNl9NT0RVTEVTKQorICAgIGZwcmludGYoc3RkZXJyLCAiICAtbSAg
ICAgICAgIEV4ZWN1dGUgYXMgYSBtb2R1bGVcbiIpOworI2VuZGlmCiAjaWYgSEFWRShTSUdOQUxf
SCkKICAgICBmcHJpbnRmKHN0ZGVyciwgIiAgLXMgICAgICAgICBJbnN0YWxscyBzaWduYWwgaGFu
ZGxlcnMgdGhhdCBleGl0IG9uIGEgY3Jhc2ggKFVuaXggcGxhdGZvcm1zIG9ubHkpXG4iKTsKICNl
bmRpZgpAQCAtMTUwMiw2ICsxNTM5LDEyIEBAIHZvaWQgQ29tbWFuZExpbmU6OnBhcnNlQXJndW1l
bnRzKGludCBhcmdjLCBjaGFyKiogYXJndikKICAgICAgICAgICAgIG1fcHJvZmlsZXJPdXRwdXQg
PSBhcmd2W2ldOwogICAgICAgICAgICAgY29udGludWU7CiAgICAgICAgIH0KKyNpZiBFTkFCTEUo
RVM2X01PRFVMRVMpCisgICAgICAgIGlmICghc3RyY21wKGFyZywgIi1tIikpIHsKKyAgICAgICAg
ICAgIG1fbW9kdWxlID0gdHJ1ZTsKKyAgICAgICAgICAgIGNvbnRpbnVlOworICAgICAgICB9Cisj
ZW5kaWYKICAgICAgICAgaWYgKCFzdHJjbXAoYXJnLCAiLXMiKSkgewogI2lmIEhBVkUoU0lHTkFM
X0gpCiAgICAgICAgICAgICBzaWduYWwoU0lHSUxMLCBfZXhpdCk7CkBAIC0xNTc3LDcgKzE2MjAs
NyBAQCBpbnQganNjbWFpbihpbnQgYXJnYywgY2hhcioqIGFyZ3YpCiAgICAgICAgICAgICB2bS0+
bV9wZXJCeXRlY29kZVByb2ZpbGVyID0gc3RkOjptYWtlX3VuaXF1ZTxQcm9maWxlcjo6RGF0YWJh
c2U+KCp2bSk7CiAgICAgCiAgICAgICAgIEdsb2JhbE9iamVjdCogZ2xvYmFsT2JqZWN0ID0gR2xv
YmFsT2JqZWN0OjpjcmVhdGUoKnZtLCBHbG9iYWxPYmplY3Q6OmNyZWF0ZVN0cnVjdHVyZSgqdm0s
IGpzTnVsbCgpKSwgb3B0aW9ucy5tX2FyZ3VtZW50cyk7Ci0gICAgICAgIGJvb2wgc3VjY2VzcyA9
IHJ1bldpdGhTY3JpcHRzKGdsb2JhbE9iamVjdCwgb3B0aW9ucy5tX3NjcmlwdHMsIG9wdGlvbnMu
bV9kdW1wKTsKKyAgICAgICAgYm9vbCBzdWNjZXNzID0gcnVuV2l0aFNjcmlwdHMoZ2xvYmFsT2Jq
ZWN0LCBvcHRpb25zLm1fc2NyaXB0cywgb3B0aW9ucy5tX2R1bXAsIG9wdGlvbnMubV9tb2R1bGUp
OwogICAgICAgICBpZiAob3B0aW9ucy5tX2ludGVyYWN0aXZlICYmIHN1Y2Nlc3MpCiAgICAgICAg
ICAgICBydW5JbnRlcmFjdGl2ZShnbG9iYWxPYmplY3QpOwogCmRpZmYgLS1naXQgYS9Tb3VyY2Uv
SmF2YVNjcmlwdENvcmUvcGFyc2VyL0xleGVyLmNwcCBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9w
YXJzZXIvTGV4ZXIuY3BwCmluZGV4IDI1OWQyNTRlMzk3NTE4YzdiY2NmZmM5ZWRlYzE1NmJhNWYw
MGRiN2EuLjQ3NjA0M2ZmNmUyNTVmOWViNjMxNDVjYjg2Y2RhOWVlZjBhNDE1NjYgMTAwNjQ0Ci0t
LSBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9wYXJzZXIvTGV4ZXIuY3BwCisrKyBiL1NvdXJjZS9K
YXZhU2NyaXB0Q29yZS9wYXJzZXIvTGV4ZXIuY3BwCkBAIC05MzUsNyArOTM1LDcgQEAgdGVtcGxh
dGUgPGJvb2wgc2hvdWxkQ3JlYXRlSWRlbnRpZmllcj4gQUxXQVlTX0lOTElORSBKU1Rva2VuVHlw
ZSBMZXhlcjxMQ2hhcj46OnAKICAgICAgICAgICAgICAgICByZXR1cm4gRVJST1JUT0s7CiAgICAg
ICAgICAgICB9CiAgICAgICAgICAgICBpZiAoaXNQcml2YXRlTmFtZSkKLSAgICAgICAgICAgICAg
ICBpZGVudCA9IG1fdm0tPnByb3BlcnR5TmFtZXMtPmdldFByaXZhdGVOYW1lKCppZGVudCk7Cisg
ICAgICAgICAgICAgICAgaWRlbnQgPSBtX3ZtLT5wcm9wZXJ0eU5hbWVzLT5sb29rVXBQcml2YXRl
TmFtZSgqaWRlbnQpOwogICAgICAgICAgICAgZWxzZSBpZiAoKmlkZW50ID09IG1fdm0tPnByb3Bl
cnR5TmFtZXMtPnVuZGVmaW5lZEtleXdvcmQpCiAgICAgICAgICAgICAgICAgdG9rZW5EYXRhLT5p
ZGVudCA9ICZtX3ZtLT5wcm9wZXJ0eU5hbWVzLT51bmRlZmluZWRQcml2YXRlTmFtZTsKICAgICAg
ICAgICAgIGlmICghaWRlbnQpCkBAIC0xMDEyLDcgKzEwMTIsNyBAQCB0ZW1wbGF0ZSA8Ym9vbCBz
aG91bGRDcmVhdGVJZGVudGlmaWVyPiBBTFdBWVNfSU5MSU5FIEpTVG9rZW5UeXBlIExleGVyPFVD
aGFyPjo6cAogICAgICAgICAgICAgICAgIHJldHVybiBFUlJPUlRPSzsKICAgICAgICAgICAgIH0K
ICAgICAgICAgICAgIGlmIChpc1ByaXZhdGVOYW1lKQotICAgICAgICAgICAgICAgIGlkZW50ID0g
bV92bS0+cHJvcGVydHlOYW1lcy0+Z2V0UHJpdmF0ZU5hbWUoKmlkZW50KTsKKyAgICAgICAgICAg
ICAgICBpZGVudCA9IG1fdm0tPnByb3BlcnR5TmFtZXMtPmxvb2tVcFByaXZhdGVOYW1lKCppZGVu
dCk7CiAgICAgICAgICAgICBlbHNlIGlmICgqaWRlbnQgPT0gbV92bS0+cHJvcGVydHlOYW1lcy0+
dW5kZWZpbmVkS2V5d29yZCkKICAgICAgICAgICAgICAgICB0b2tlbkRhdGEtPmlkZW50ID0gJm1f
dm0tPnByb3BlcnR5TmFtZXMtPnVuZGVmaW5lZFByaXZhdGVOYW1lOwogICAgICAgICAgICAgaWYg
KCFpZGVudCkKZGlmZiAtLWdpdCBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9wYXJzZXIvTW9kdWxl
QW5hbHl6ZXIuY3BwIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL3BhcnNlci9Nb2R1bGVBbmFseXpl
ci5jcHAKaW5kZXggYjJkZTk2MGIzOTMyNTg0MWNkOWY4NWM2NzE2MjJjM2RmN2JhOWQ3Ny4uMjdj
YWZmMjk1MDIyNjAxM2QyNzJkY2YzNzA5Yzc4ZTdlZGU0MDMzYSAxMDA2NDQKLS0tIGEvU291cmNl
L0phdmFTY3JpcHRDb3JlL3BhcnNlci9Nb2R1bGVBbmFseXplci5jcHAKKysrIGIvU291cmNlL0ph
dmFTY3JpcHRDb3JlL3BhcnNlci9Nb2R1bGVBbmFseXplci5jcHAKQEAgLTI3LDE0ICsyNywxNyBA
QAogI2luY2x1ZGUgIk1vZHVsZUFuYWx5emVyLmgiCiAKICNpbmNsdWRlICJJZGVudGlmaWVySW5s
aW5lcy5oIgotI2luY2x1ZGUgIk1vZHVsZVJlY29yZC5oIgorI2luY2x1ZGUgIkpTQ2VsbElubGlu
ZXMuaCIKKyNpbmNsdWRlICJKU0dsb2JhbE9iamVjdC5oIgorI2luY2x1ZGUgIkpTTW9kdWxlUmVj
b3JkLmgiCisjaW5jbHVkZSAiU3Ryb25nSW5saW5lcy5oIgogCiBuYW1lc3BhY2UgSlNDIHsKIAog
Ci1Nb2R1bGVBbmFseXplcjo6TW9kdWxlQW5hbHl6ZXIoVk0mIHZtLCBjb25zdCBWYXJpYWJsZUVu
dmlyb25tZW50JiBkZWNsYXJlZFZhcmlhYmxlcywgY29uc3QgVmFyaWFibGVFbnZpcm9ubWVudCYg
bGV4aWNhbFZhcmlhYmxlcykKLSAgICA6IG1fdm0oJnZtKQotICAgICwgbV9tb2R1bGVSZWNvcmQo
TW9kdWxlUmVjb3JkOjpjcmVhdGUoKSkKK01vZHVsZUFuYWx5emVyOjpNb2R1bGVBbmFseXplcihF
eGVjU3RhdGUqIGV4ZWMsIGNvbnN0IFZhcmlhYmxlRW52aXJvbm1lbnQmIGRlY2xhcmVkVmFyaWFi
bGVzLCBjb25zdCBWYXJpYWJsZUVudmlyb25tZW50JiBsZXhpY2FsVmFyaWFibGVzKQorICAgIDog
bV92bSgmZXhlYy0+dm0oKSkKKyAgICAsIG1fbW9kdWxlUmVjb3JkKGV4ZWMtPnZtKCksIEpTTW9k
dWxlUmVjb3JkOjpjcmVhdGUoZXhlYy0+dm0oKSwgZXhlYy0+bGV4aWNhbEdsb2JhbE9iamVjdCgp
LT5tb2R1bGVSZWNvcmRTdHJ1Y3R1cmUoKSkpCiAgICAgLCBtX2RlY2xhcmVkVmFyaWFibGVzKGRl
Y2xhcmVkVmFyaWFibGVzKQogICAgICwgbV9sZXhpY2FsVmFyaWFibGVzKGxleGljYWxWYXJpYWJs
ZXMpCiB7CkBAIC03NiwyOCArNzksMjggQEAgdm9pZCBNb2R1bGVBbmFseXplcjo6ZXhwb3J0VmFy
aWFibGUoY29uc3QgUmVmUHRyPFVuaXF1ZWRTdHJpbmdJbXBsPiYgbG9jYWxOYW1lLAogCiAgICAg
Ly8gRXhwb3J0ZWQgbW9kdWxlIGxvY2FsIHZhcmlhYmxlLgogICAgIGlmICghdmFyaWFibGUuaXNJ
bXBvcnRlZCgpKSB7Ci0gICAgICAgIG1vZHVsZVJlY29yZCgpLmFkZEV4cG9ydEVudHJ5KE1vZHVs
ZVJlY29yZDo6RXhwb3J0RW50cnk6OmNyZWF0ZUxvY2FsKGV4cG9ydE5hbWUsIElkZW50aWZpZXI6
OmZyb21VaWQobV92bSwgbG9jYWxOYW1lLmdldCgpKSwgdmFyaWFibGUpKTsKKyAgICAgICAgbW9k
dWxlUmVjb3JkKCktPmFkZEV4cG9ydEVudHJ5KEpTTW9kdWxlUmVjb3JkOjpFeHBvcnRFbnRyeTo6
Y3JlYXRlTG9jYWwoZXhwb3J0TmFtZSwgSWRlbnRpZmllcjo6ZnJvbVVpZChtX3ZtLCBsb2NhbE5h
bWUuZ2V0KCkpLCB2YXJpYWJsZSkpOwogICAgICAgICByZXR1cm47CiAgICAgfQogCi0gICAgY29u
c3QgYXV0byYgaW1wb3J0RW50cnkgPSBtb2R1bGVSZWNvcmQoKS5sb29rVXBJbXBvcnRFbnRyeShs
b2NhbE5hbWUpOworICAgIGNvbnN0IGF1dG8mIGltcG9ydEVudHJ5ID0gbW9kdWxlUmVjb3JkKCkt
Pmxvb2tVcEltcG9ydEVudHJ5KGxvY2FsTmFtZSk7CiAgICAgaWYgKGltcG9ydEVudHJ5LmlzTmFt
ZXNwYWNlKHZtKCkpKSB7CiAgICAgICAgIC8vIEV4cG9ydGVkIG5hbWVzcGFjZSBiaW5kaW5nLgog
ICAgICAgICAvLyBpbXBvcnQgKiBhcyBuYW1lc3BhY2UgZnJvbSAibW9kIgogICAgICAgICAvLyBl
eHBvcnQgeyBuYW1lc3BhY2UgfQotICAgICAgICBtb2R1bGVSZWNvcmQoKS5hZGRFeHBvcnRFbnRy
eShNb2R1bGVSZWNvcmQ6OkV4cG9ydEVudHJ5OjpjcmVhdGVOYW1lc3BhY2UoZXhwb3J0TmFtZSwg
aW1wb3J0RW50cnkubW9kdWxlUmVxdWVzdCkpOworICAgICAgICBtb2R1bGVSZWNvcmQoKS0+YWRk
RXhwb3J0RW50cnkoSlNNb2R1bGVSZWNvcmQ6OkV4cG9ydEVudHJ5OjpjcmVhdGVOYW1lc3BhY2Uo
ZXhwb3J0TmFtZSwgaW1wb3J0RW50cnkubW9kdWxlUmVxdWVzdCkpOwogICAgICAgICByZXR1cm47
CiAgICAgfQogCiAgICAgLy8gSW5kaXJlY3RseSBleHBvcnRlZCBiaW5kaW5nLgogICAgIC8vIGlt
cG9ydCBhIGZyb20gIm1vZCIKICAgICAvLyBleHBvcnQgeyBhIH0KLSAgICBtb2R1bGVSZWNvcmQo
KS5hZGRFeHBvcnRFbnRyeShNb2R1bGVSZWNvcmQ6OkV4cG9ydEVudHJ5OjpjcmVhdGVJbmRpcmVj
dChleHBvcnROYW1lLCBpbXBvcnRFbnRyeS5pbXBvcnROYW1lLCBpbXBvcnRFbnRyeS5tb2R1bGVS
ZXF1ZXN0KSk7CisgICAgbW9kdWxlUmVjb3JkKCktPmFkZEV4cG9ydEVudHJ5KEpTTW9kdWxlUmVj
b3JkOjpFeHBvcnRFbnRyeTo6Y3JlYXRlSW5kaXJlY3QoZXhwb3J0TmFtZSwgaW1wb3J0RW50cnku
aW1wb3J0TmFtZSwgaW1wb3J0RW50cnkubW9kdWxlUmVxdWVzdCkpOwogfQogCiAKIAotUmVmPE1v
ZHVsZVJlY29yZD4gTW9kdWxlQW5hbHl6ZXI6OmFuYWx5emUoTW9kdWxlUHJvZ3JhbU5vZGUmIG1v
ZHVsZVByb2dyYW1Ob2RlKQorSlNNb2R1bGVSZWNvcmQqIE1vZHVsZUFuYWx5emVyOjphbmFseXpl
KE1vZHVsZVByb2dyYW1Ob2RlJiBtb2R1bGVQcm9ncmFtTm9kZSkKIHsKICAgICAvLyBUcmF2ZXJz
ZSB0aGUgbW9kdWxlIEFTVCBhbmQgY29sbGVjdAogICAgIC8vICogSW1wb3J0IGVudHJpZXMKQEAg
LTE0OSw3ICsxNTIsNyBAQCBSZWY8TW9kdWxlUmVjb3JkPiBNb2R1bGVBbmFseXplcjo6YW5hbHl6
ZShNb2R1bGVQcm9ncmFtTm9kZSYgbW9kdWxlUHJvZ3JhbU5vZGUpCiAgICAgaWYgKE9wdGlvbnM6
OmR1bXBNb2R1bGVSZWNvcmQoKSkKICAgICAgICAgbV9tb2R1bGVSZWNvcmQtPmR1bXAoKTsKIAot
ICAgIHJldHVybiAqbV9tb2R1bGVSZWNvcmQ7CisgICAgcmV0dXJuIG1fbW9kdWxlUmVjb3JkLmdl
dCgpOwogfQogCiB9IC8vIG5hbWVzcGFjZSBKU0MKZGlmZiAtLWdpdCBhL1NvdXJjZS9KYXZhU2Ny
aXB0Q29yZS9wYXJzZXIvTW9kdWxlQW5hbHl6ZXIuaCBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9w
YXJzZXIvTW9kdWxlQW5hbHl6ZXIuaAppbmRleCAwMjc2NDg0NzY1MGIzMDI0ZmQyYThjMzcyMmU3
M2E3NDdiOTYzY2I2Li4zMzkwYjdiYWYxZjY1ZTgxMGMxMTM5YjZkZWM0NjU5NDZiODlkNDkyIDEw
MDY0NAotLS0gYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvcGFyc2VyL01vZHVsZUFuYWx5emVyLmgK
KysrIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL3BhcnNlci9Nb2R1bGVBbmFseXplci5oCkBAIC0y
NiwyMCArMjYsMjIgQEAKICNpZm5kZWYgTW9kdWxlQW5hbHl6ZXJfaAogI2RlZmluZSBNb2R1bGVB
bmFseXplcl9oCiAKLSNpbmNsdWRlICJNb2R1bGVSZWNvcmQuaCIKICNpbmNsdWRlICJOb2Rlcy5o
IgogCiBuYW1lc3BhY2UgSlNDIHsKIAorY2xhc3MgSlNNb2R1bGVSZWNvcmQ7CisKIGNsYXNzIE1v
ZHVsZUFuYWx5emVyIHsKKyAgICBXVEZfTUFLRV9OT05DT1BZQUJMRShNb2R1bGVBbmFseXplcik7
CiBwdWJsaWM6Ci0gICAgTW9kdWxlQW5hbHl6ZXIoVk0mLCBjb25zdCBWYXJpYWJsZUVudmlyb25t
ZW50JiBkZWNsYXJlZFZhcmlhYmxlcywgY29uc3QgVmFyaWFibGVFbnZpcm9ubWVudCYgbGV4aWNh
bFZhcmlhYmxlcyk7CisgICAgTW9kdWxlQW5hbHl6ZXIoRXhlY1N0YXRlKiwgY29uc3QgVmFyaWFi
bGVFbnZpcm9ubWVudCYgZGVjbGFyZWRWYXJpYWJsZXMsIGNvbnN0IFZhcmlhYmxlRW52aXJvbm1l
bnQmIGxleGljYWxWYXJpYWJsZXMpOwogCi0gICAgUmVmPE1vZHVsZVJlY29yZD4gYW5hbHl6ZShN
b2R1bGVQcm9ncmFtTm9kZSYpOworICAgIEpTTW9kdWxlUmVjb3JkKiBhbmFseXplKE1vZHVsZVBy
b2dyYW1Ob2RlJik7CiAKICAgICBWTSYgdm0oKSB7IHJldHVybiAqbV92bTsgfQogCi0gICAgTW9k
dWxlUmVjb3JkJiBtb2R1bGVSZWNvcmQoKSB7IHJldHVybiAqbV9tb2R1bGVSZWNvcmQ7IH0KKyAg
ICBKU01vZHVsZVJlY29yZCogbW9kdWxlUmVjb3JkKCkgeyByZXR1cm4gbV9tb2R1bGVSZWNvcmQu
Z2V0KCk7IH0KIAogICAgIHZvaWQgZGVjbGFyZUV4cG9ydEFsaWFzKGNvbnN0IElkZW50aWZpZXIm
IGxvY2FsTmFtZSwgY29uc3QgSWRlbnRpZmllciYgZXhwb3J0TmFtZSk7CiAKQEAgLTUxLDcgKzUz
LDcgQEAgY2xhc3MgTW9kdWxlQW5hbHl6ZXIgewogICAgIElkZW50aWZpZXIgZXhwb3J0ZWRCaW5k
aW5nKGNvbnN0IFJlZlB0cjxVbmlxdWVkU3RyaW5nSW1wbD4mIGlkZW50KTsKIAogICAgIFZNKiBt
X3ZtOwotICAgIFJlZlB0cjxNb2R1bGVSZWNvcmQ+IG1fbW9kdWxlUmVjb3JkOworICAgIFN0cm9u
ZzxKU01vZHVsZVJlY29yZD4gbV9tb2R1bGVSZWNvcmQ7CiAgICAgVmFyaWFibGVFbnZpcm9ubWVu
dCBtX2RlY2xhcmVkVmFyaWFibGVzOwogICAgIFZhcmlhYmxlRW52aXJvbm1lbnQgbV9sZXhpY2Fs
VmFyaWFibGVzOwogICAgIElkZW50aWZpZXJBbGlhc01hcCBtX2FsaWFzTWFwOwpkaWZmIC0tZ2l0
IGEvU291cmNlL0phdmFTY3JpcHRDb3JlL3BhcnNlci9Nb2R1bGVSZWNvcmQuY3BwIGIvU291cmNl
L0phdmFTY3JpcHRDb3JlL3BhcnNlci9Nb2R1bGVSZWNvcmQuY3BwCmRlbGV0ZWQgZmlsZSBtb2Rl
IDEwMDY0NAppbmRleCBlYzk3MzU2OGJlYzhhMGIxNTMzMzJmNDg3NWY5ZWZlMTM3ODJlYzhhLi4w
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwCi0tLSBhL1NvdXJjZS9KYXZh
U2NyaXB0Q29yZS9wYXJzZXIvTW9kdWxlUmVjb3JkLmNwcAorKysgL2Rldi9udWxsCkBAIC0xLDk1
ICswLDAgQEAKLS8qCi0gKiBDb3B5cmlnaHQgKEMpIDIwMTUgQXBwbGUgSW5jLiBBbGwgcmlnaHRz
IHJlc2VydmVkLgotICoKLSAqIFJlZGlzdHJpYnV0aW9uIGFuZCB1c2UgaW4gc291cmNlIGFuZCBi
aW5hcnkgZm9ybXMsIHdpdGggb3Igd2l0aG91dAotICogbW9kaWZpY2F0aW9uLCBhcmUgcGVybWl0
dGVkIHByb3ZpZGVkIHRoYXQgdGhlIGZvbGxvd2luZyBjb25kaXRpb25zCi0gKiBhcmUgbWV0Ogot
ICogMS4gUmVkaXN0cmlidXRpb25zIG9mIHNvdXJjZSBjb2RlIG11c3QgcmV0YWluIHRoZSBhYm92
ZSBjb3B5cmlnaHQKLSAqICAgIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRo
ZSBmb2xsb3dpbmcgZGlzY2xhaW1lci4KLSAqIDIuIFJlZGlzdHJpYnV0aW9ucyBpbiBiaW5hcnkg
Zm9ybSBtdXN0IHJlcHJvZHVjZSB0aGUgYWJvdmUgY29weXJpZ2h0Ci0gKiAgICBub3RpY2UsIHRo
aXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIgaW4gdGhl
Ci0gKiAgICBkb2N1bWVudGF0aW9uIGFuZC9vciBvdGhlciBtYXRlcmlhbHMgcHJvdmlkZWQgd2l0
aCB0aGUgZGlzdHJpYnV0aW9uLgotICoKLSAqIFRISVMgU09GVFdBUkUgSVMgUFJPVklERUQgQlkg
QVBQTEUgSU5DLiBgYEFTIElTJycgQU5EIEFOWQotICogRVhQUkVTUyBPUiBJTVBMSUVEIFdBUlJB
TlRJRVMsIElOQ0xVRElORywgQlVUIE5PVCBMSU1JVEVEIFRPLCBUSEUKLSAqIElNUExJRUQgV0FS
UkFOVElFUyBPRiBNRVJDSEFOVEFCSUxJVFkgQU5EIEZJVE5FU1MgRk9SIEEgUEFSVElDVUxBUgot
ICogUFVSUE9TRSBBUkUgRElTQ0xBSU1FRC4gIElOIE5PIEVWRU5UIFNIQUxMIEFQUExFIElOQy4g
T1IKLSAqIENPTlRSSUJVVE9SUyBCRSBMSUFCTEUgRk9SIEFOWSBESVJFQ1QsIElORElSRUNULCBJ
TkNJREVOVEFMLCBTUEVDSUFMLAotICogRVhFTVBMQVJZLCBPUiBDT05TRVFVRU5USUFMIERBTUFH
RVMgKElOQ0xVRElORywgQlVUIE5PVCBMSU1JVEVEIFRPLAotICogUFJPQ1VSRU1FTlQgT0YgU1VC
U1RJVFVURSBHT09EUyBPUiBTRVJWSUNFUzsgTE9TUyBPRiBVU0UsIERBVEEsIE9SCi0gKiBQUk9G
SVRTOyBPUiBCVVNJTkVTUyBJTlRFUlJVUFRJT04pIEhPV0VWRVIgQ0FVU0VEIEFORCBPTiBBTlkg
VEhFT1JZCi0gKiBPRiBMSUFCSUxJVFksIFdIRVRIRVIgSU4gQ09OVFJBQ1QsIFNUUklDVCBMSUFC
SUxJVFksIE9SIFRPUlQKLSAqIChJTkNMVURJTkcgTkVHTElHRU5DRSBPUiBPVEhFUldJU0UpIEFS
SVNJTkcgSU4gQU5ZIFdBWSBPVVQgT0YgVEhFIFVTRQotICogT0YgVEhJUyBTT0ZUV0FSRSwgRVZF
TiBJRiBBRFZJU0VEIE9GIFRIRSBQT1NTSUJJTElUWSBPRiBTVUNIIERBTUFHRS4gCi0gKi8KLQot
I2luY2x1ZGUgImNvbmZpZy5oIgotI2luY2x1ZGUgIk1vZHVsZVJlY29yZC5oIgotCi0jaW5jbHVk
ZSAiSWRlbnRpZmllcklubGluZXMuaCIKLQotbmFtZXNwYWNlIEpTQyB7Ci0KLQotYXV0byBNb2R1
bGVSZWNvcmQ6OkV4cG9ydEVudHJ5OjpjcmVhdGVMb2NhbChjb25zdCBJZGVudGlmaWVyJiBleHBv
cnROYW1lLCBjb25zdCBJZGVudGlmaWVyJiBsb2NhbE5hbWUsIGNvbnN0IFZhcmlhYmxlRW52aXJv
bm1lbnRFbnRyeSYgdmFyaWFibGUpIC0+IEV4cG9ydEVudHJ5Ci17Ci0gICAgcmV0dXJuIEV4cG9y
dEVudHJ5IHsgVHlwZTo6TG9jYWwsIGV4cG9ydE5hbWUsIElkZW50aWZpZXIoKSwgSWRlbnRpZmll
cigpLCBsb2NhbE5hbWUsIHZhcmlhYmxlIH07Ci19Ci0KLWF1dG8gTW9kdWxlUmVjb3JkOjpFeHBv
cnRFbnRyeTo6Y3JlYXRlTmFtZXNwYWNlKGNvbnN0IElkZW50aWZpZXImIGV4cG9ydE5hbWUsIGNv
bnN0IElkZW50aWZpZXImIG1vZHVsZU5hbWUpIC0+IEV4cG9ydEVudHJ5Ci17Ci0gICAgcmV0dXJu
IEV4cG9ydEVudHJ5IHsgVHlwZTo6TmFtZXNwYWNlLCBleHBvcnROYW1lLCBtb2R1bGVOYW1lLCBJ
ZGVudGlmaWVyKCksIElkZW50aWZpZXIoKSwgVmFyaWFibGVFbnZpcm9ubWVudEVudHJ5KCkgfTsK
LX0KLQotYXV0byBNb2R1bGVSZWNvcmQ6OkV4cG9ydEVudHJ5OjpjcmVhdGVJbmRpcmVjdChjb25z
dCBJZGVudGlmaWVyJiBleHBvcnROYW1lLCBjb25zdCBJZGVudGlmaWVyJiBpbXBvcnROYW1lLCBj
b25zdCBJZGVudGlmaWVyJiBtb2R1bGVOYW1lKSAtPiBFeHBvcnRFbnRyeQotewotICAgIHJldHVy
biBFeHBvcnRFbnRyeSB7IFR5cGU6OkluZGlyZWN0LCBleHBvcnROYW1lLCBtb2R1bGVOYW1lLCBp
bXBvcnROYW1lLCBJZGVudGlmaWVyKCksIFZhcmlhYmxlRW52aXJvbm1lbnRFbnRyeSgpIH07Ci19
Ci0KLXN0YXRpYyBTdHJpbmcgcHJpbnRhYmxlTmFtZShjb25zdCBSZWZQdHI8VW5pcXVlZFN0cmlu
Z0ltcGw+JiB1aWQpCi17Ci0gICAgaWYgKHVpZC0+aXNTeW1ib2woKSkKLSAgICAgICAgcmV0dXJu
IHVpZC5nZXQoKTsKLSAgICByZXR1cm4gV1RGOjptYWtlU3RyaW5nKCInIiwgU3RyaW5nKHVpZC5n
ZXQoKSksICInIik7Ci19Ci0KLXN0YXRpYyBTdHJpbmcgcHJpbnRhYmxlTmFtZShjb25zdCBJZGVu
dGlmaWVyJiBpZGVudCkKLXsKLSAgICByZXR1cm4gcHJpbnRhYmxlTmFtZShpZGVudC5pbXBsKCkp
OwotfQotCi0KLXZvaWQgTW9kdWxlUmVjb3JkOjpkdW1wKCkKLXsKLSAgICBkYXRhTG9nKCJcbkFu
YWx5emluZyBNb2R1bGVSZWNvcmRcbiIpOwotCi0gICAgZGF0YUxvZygiICAgIERlcGVuZGVuY2ll
czogIiwgbV9yZXF1ZXN0ZWRNb2R1bGVzLnNpemUoKSwgIiBtb2R1bGVzXG4iKTsKLSAgICBmb3Ig
KGNvbnN0IGF1dG8mIG1vZHVsZU5hbWUgOiBtX3JlcXVlc3RlZE1vZHVsZXMpCi0gICAgICAgIGRh
dGFMb2coIiAgICAgIG1vZHVsZSgiLCBwcmludGFibGVOYW1lKG1vZHVsZU5hbWUpLCAiKVxuIik7
Ci0KLSAgICBkYXRhTG9nKCIgICAgSW1wb3J0OiAiLCBtX2ltcG9ydEVudHJpZXMuc2l6ZSgpLCAi
IGVudHJpZXNcbiIpOwotICAgIGZvciAoY29uc3QgYXV0byYgcGFpciA6IG1faW1wb3J0RW50cmll
cykKLSAgICAgICAgZGF0YUxvZygiICAgICAgaW1wb3J0KCIsIHByaW50YWJsZU5hbWUocGFpci52
YWx1ZS5pbXBvcnROYW1lKSwgIiksIGxvY2FsKCIsIHByaW50YWJsZU5hbWUocGFpci52YWx1ZS5s
b2NhbE5hbWUpLCAiKSwgbW9kdWxlKCIsIHByaW50YWJsZU5hbWUocGFpci52YWx1ZS5tb2R1bGVS
ZXF1ZXN0KSwgIilcbiIpOwotCi0gICAgZGF0YUxvZygiICAgIEV4cG9ydDogIiwgbV9leHBvcnRF
bnRyaWVzLnNpemUoKSwgIiBlbnRyaWVzXG4iKTsKLSAgICBmb3IgKGNvbnN0IGF1dG8mIHBhaXIg
OiBtX2V4cG9ydEVudHJpZXMpIHsKLSAgICAgICAgY29uc3QgRXhwb3J0RW50cnkmIGVudHJ5ID0g
cGFpci52YWx1ZTsKLSAgICAgICAgc3dpdGNoIChlbnRyeS50eXBlKSB7Ci0gICAgICAgIGNhc2Ug
RXhwb3J0RW50cnk6OlR5cGU6OkxvY2FsOgotICAgICAgICAgICAgZGF0YUxvZygiICAgICAgW0xv
Y2FsXSAiLCAiZXhwb3J0KCIsIHByaW50YWJsZU5hbWUoZW50cnkuZXhwb3J0TmFtZSksICIpLCBs
b2NhbCgiLCBwcmludGFibGVOYW1lKGVudHJ5LmxvY2FsTmFtZSksICIpXG4iKTsKLSAgICAgICAg
ICAgIGJyZWFrOwotCi0gICAgICAgIGNhc2UgRXhwb3J0RW50cnk6OlR5cGU6Ok5hbWVzcGFjZToK
LSAgICAgICAgICAgIGRhdGFMb2coIiAgICAgIFtOYW1lc3BhY2VdICIsICJleHBvcnQoIiwgcHJp
bnRhYmxlTmFtZShlbnRyeS5leHBvcnROYW1lKSwgIiksIG1vZHVsZSgiLCBwcmludGFibGVOYW1l
KGVudHJ5Lm1vZHVsZU5hbWUpLCAiKVxuIik7Ci0gICAgICAgICAgICBicmVhazsKLQotICAgICAg
ICBjYXNlIEV4cG9ydEVudHJ5OjpUeXBlOjpJbmRpcmVjdDoKLSAgICAgICAgICAgIGRhdGFMb2co
IiAgICAgIFtJbmRpcmVjdF0gIiwgImV4cG9ydCgiLCBwcmludGFibGVOYW1lKGVudHJ5LmV4cG9y
dE5hbWUpLCAiKSwgaW1wb3J0KCIsIHByaW50YWJsZU5hbWUoZW50cnkuaW1wb3J0TmFtZSksICIp
LCBtb2R1bGUoIiwgcHJpbnRhYmxlTmFtZShlbnRyeS5tb2R1bGVOYW1lKSwgIilcbiIpOwotICAg
ICAgICAgICAgYnJlYWs7Ci0gICAgICAgIH0KLSAgICB9Ci0gICAgZm9yIChjb25zdCBhdXRvJiBt
b2R1bGVOYW1lIDogbV9zdGFyRXhwb3J0RW50cmllcykKLSAgICAgICAgZGF0YUxvZygiICAgICAg
W1N0YXJdIG1vZHVsZSgiLCBwcmludGFibGVOYW1lKG1vZHVsZU5hbWUuZ2V0KCkpLCAiKVxuIik7
Ci19Ci0KLX0gLy8gbmFtZXNwYWNlIEpTQwpkaWZmIC0tZ2l0IGEvU291cmNlL0phdmFTY3JpcHRD
b3JlL3BhcnNlci9Nb2R1bGVSZWNvcmQuaCBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9wYXJzZXIv
TW9kdWxlUmVjb3JkLmgKZGVsZXRlZCBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IGVmMDgxYzAzYjBh
NWJkZTZmMTU1NjI5ZGYzZjUwNmNhZjNjYjE3MTQuLjAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAKLS0tIGEvU291cmNlL0phdmFTY3JpcHRDb3JlL3BhcnNlci9Nb2R1bGVS
ZWNvcmQuaAorKysgL2Rldi9udWxsCkBAIC0xLDEyOCArMCwwIEBACi0vKgotICogQ29weXJpZ2h0
IChDKSAyMDE1IEFwcGxlIEluYy4gQWxsIHJpZ2h0cyByZXNlcnZlZC4KLSAqCi0gKiBSZWRpc3Ry
aWJ1dGlvbiBhbmQgdXNlIGluIHNvdXJjZSBhbmQgYmluYXJ5IGZvcm1zLCB3aXRoIG9yIHdpdGhv
dXQKLSAqIG1vZGlmaWNhdGlvbiwgYXJlIHBlcm1pdHRlZCBwcm92aWRlZCB0aGF0IHRoZSBmb2xs
b3dpbmcgY29uZGl0aW9ucwotICogYXJlIG1ldDoKLSAqIDEuIFJlZGlzdHJpYnV0aW9ucyBvZiBz
b3VyY2UgY29kZSBtdXN0IHJldGFpbiB0aGUgYWJvdmUgY29weXJpZ2h0Ci0gKiAgICBub3RpY2Us
IHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIuCi0g
KiAyLiBSZWRpc3RyaWJ1dGlvbnMgaW4gYmluYXJ5IGZvcm0gbXVzdCByZXByb2R1Y2UgdGhlIGFi
b3ZlIGNvcHlyaWdodAotICogICAgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQg
dGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyIGluIHRoZQotICogICAgZG9jdW1lbnRhdGlvbiBhbmQv
b3Igb3RoZXIgbWF0ZXJpYWxzIHByb3ZpZGVkIHdpdGggdGhlIGRpc3RyaWJ1dGlvbi4KLSAqCi0g
KiBUSElTIFNPRlRXQVJFIElTIFBST1ZJREVEIEJZIEFQUExFIElOQy4gYGBBUyBJUycnIEFORCBB
TlkKLSAqIEVYUFJFU1MgT1IgSU1QTElFRCBXQVJSQU5USUVTLCBJTkNMVURJTkcsIEJVVCBOT1Qg
TElNSVRFRCBUTywgVEhFCi0gKiBJTVBMSUVEIFdBUlJBTlRJRVMgT0YgTUVSQ0hBTlRBQklMSVRZ
IEFORCBGSVRORVNTIEZPUiBBIFBBUlRJQ1VMQVIKLSAqIFBVUlBPU0UgQVJFIERJU0NMQUlNRUQu
ICBJTiBOTyBFVkVOVCBTSEFMTCBBUFBMRSBJTkMuIE9SCi0gKiBDT05UUklCVVRPUlMgQkUgTElB
QkxFIEZPUiBBTlkgRElSRUNULCBJTkRJUkVDVCwgSU5DSURFTlRBTCwgU1BFQ0lBTCwKLSAqIEVY
RU1QTEFSWSwgT1IgQ09OU0VRVUVOVElBTCBEQU1BR0VTIChJTkNMVURJTkcsIEJVVCBOT1QgTElN
SVRFRCBUTywKLSAqIFBST0NVUkVNRU5UIE9GIFNVQlNUSVRVVEUgR09PRFMgT1IgU0VSVklDRVM7
IExPU1MgT0YgVVNFLCBEQVRBLCBPUgotICogUFJPRklUUzsgT1IgQlVTSU5FU1MgSU5URVJSVVBU
SU9OKSBIT1dFVkVSIENBVVNFRCBBTkQgT04gQU5ZIFRIRU9SWQotICogT0YgTElBQklMSVRZLCBX
SEVUSEVSIElOIENPTlRSQUNULCBTVFJJQ1QgTElBQklMSVRZLCBPUiBUT1JUCi0gKiAoSU5DTFVE
SU5HIE5FR0xJR0VOQ0UgT1IgT1RIRVJXSVNFKSBBUklTSU5HIElOIEFOWSBXQVkgT1VUIE9GIFRI
RSBVU0UKLSAqIE9GIFRISVMgU09GVFdBUkUsIEVWRU4gSUYgQURWSVNFRCBPRiBUSEUgUE9TU0lC
SUxJVFkgT0YgU1VDSCBEQU1BR0UuCi0gKi8KLQotI2lmbmRlZiBNb2R1bGVSZWNvcmRfaAotI2Rl
ZmluZSBNb2R1bGVSZWNvcmRfaAotCi0jaW5jbHVkZSAiTm9kZXMuaCIKLSNpbmNsdWRlIDx3dGYv
SGFzaE1hcC5oPgotI2luY2x1ZGUgPHd0Zi9MaXN0SGFzaFNldC5oPgotCi1uYW1lc3BhY2UgSlND
IHsKLQotLy8gQmFzZWQgb24gdGhlIFNvdXJjZSBUZXh0IE1vZHVsZSBSZWNvcmQKLS8vIGh0dHA6
Ly93d3cuZWNtYS1pbnRlcm5hdGlvbmFsLm9yZy9lY21hLTI2Mi82LjAvI3NlYy1zb3VyY2UtdGV4
dC1tb2R1bGUtcmVjb3JkcwotY2xhc3MgTW9kdWxlUmVjb3JkIDogcHVibGljIFJlZkNvdW50ZWQ8
TW9kdWxlUmVjb3JkPiB7Ci1wdWJsaWM6Ci0gICAgc3RydWN0IEV4cG9ydEVudHJ5IHsKLSAgICAg
ICAgZW51bSBjbGFzcyBUeXBlIHsKLSAgICAgICAgICAgIExvY2FsLAotICAgICAgICAgICAgTmFt
ZXNwYWNlLAotICAgICAgICAgICAgSW5kaXJlY3QKLSAgICAgICAgfTsKLQotICAgICAgICBzdGF0
aWMgRXhwb3J0RW50cnkgY3JlYXRlTG9jYWwoY29uc3QgSWRlbnRpZmllciYgZXhwb3J0TmFtZSwg
Y29uc3QgSWRlbnRpZmllciYgbG9jYWxOYW1lLCBjb25zdCBWYXJpYWJsZUVudmlyb25tZW50RW50
cnkmKTsKLSAgICAgICAgc3RhdGljIEV4cG9ydEVudHJ5IGNyZWF0ZU5hbWVzcGFjZShjb25zdCBJ
ZGVudGlmaWVyJiBleHBvcnROYW1lLCBjb25zdCBJZGVudGlmaWVyJiBtb2R1bGVOYW1lKTsKLSAg
ICAgICAgc3RhdGljIEV4cG9ydEVudHJ5IGNyZWF0ZUluZGlyZWN0KGNvbnN0IElkZW50aWZpZXIm
IGV4cG9ydE5hbWUsIGNvbnN0IElkZW50aWZpZXImIGltcG9ydE5hbWUsIGNvbnN0IElkZW50aWZp
ZXImIG1vZHVsZU5hbWUpOwotCi0gICAgICAgIFR5cGUgdHlwZTsKLSAgICAgICAgSWRlbnRpZmll
ciBleHBvcnROYW1lOwotICAgICAgICBJZGVudGlmaWVyIG1vZHVsZU5hbWU7Ci0gICAgICAgIElk
ZW50aWZpZXIgaW1wb3J0TmFtZTsKLSAgICAgICAgSWRlbnRpZmllciBsb2NhbE5hbWU7Ci0gICAg
ICAgIFZhcmlhYmxlRW52aXJvbm1lbnRFbnRyeSB2YXJpYWJsZTsKLSAgICB9OwotCi0gICAgc3Ry
dWN0IEltcG9ydEVudHJ5IHsKLSAgICAgICAgSWRlbnRpZmllciBtb2R1bGVSZXF1ZXN0OwotICAg
ICAgICBJZGVudGlmaWVyIGltcG9ydE5hbWU7Ci0gICAgICAgIElkZW50aWZpZXIgbG9jYWxOYW1l
OwotCi0gICAgICAgIGJvb2wgaXNOYW1lc3BhY2UoVk0mIHZtKSBjb25zdAotICAgICAgICB7Ci0g
ICAgICAgICAgICByZXR1cm4gaW1wb3J0TmFtZSA9PSB2bS5wcm9wZXJ0eU5hbWVzLT50aW1lc0lk
ZW50aWZpZXI7Ci0gICAgICAgIH0KLSAgICB9OwotCi0gICAgdHlwZWRlZiBXVEY6Okxpc3RIYXNo
U2V0PFJlZlB0cjxVbmlxdWVkU3RyaW5nSW1wbD4sIElkZW50aWZpZXJSZXBIYXNoPiBPcmRlcmVk
SWRlbnRpZmllclNldDsKLSAgICB0eXBlZGVmIEhhc2hNYXA8UmVmUHRyPFVuaXF1ZWRTdHJpbmdJ
bXBsPiwgSW1wb3J0RW50cnksIElkZW50aWZpZXJSZXBIYXNoLCBIYXNoVHJhaXRzPFJlZlB0cjxV
bmlxdWVkU3RyaW5nSW1wbD4+PiBJbXBvcnRNYXA7Ci0gICAgdHlwZWRlZiBIYXNoTWFwPFJlZlB0
cjxVbmlxdWVkU3RyaW5nSW1wbD4sIEV4cG9ydEVudHJ5LCBJZGVudGlmaWVyUmVwSGFzaCwgSGFz
aFRyYWl0czxSZWZQdHI8VW5pcXVlZFN0cmluZ0ltcGw+Pj4gRXhwb3J0TWFwOwotCi0gICAgc3Rh
dGljIFJlZjxNb2R1bGVSZWNvcmQ+IGNyZWF0ZSgpCi0gICAgewotICAgICAgICByZXR1cm4gYWRv
cHRSZWYoKm5ldyBNb2R1bGVSZWNvcmQpOwotICAgIH0KLQotICAgIHZvaWQgYXBwZW5kUmVxdWVz
dGVkTW9kdWxlKGNvbnN0IElkZW50aWZpZXImKTsKLSAgICB2b2lkIGFkZFN0YXJFeHBvcnRFbnRy
eShjb25zdCBJZGVudGlmaWVyJik7Ci0gICAgdm9pZCBhZGRJbXBvcnRFbnRyeShjb25zdCBJbXBv
cnRFbnRyeSYpOwotICAgIHZvaWQgYWRkRXhwb3J0RW50cnkoY29uc3QgRXhwb3J0RW50cnkmKTsK
LQotICAgIGNvbnN0IEltcG9ydEVudHJ5JiBsb29rVXBJbXBvcnRFbnRyeShjb25zdCBSZWZQdHI8
VW5pcXVlZFN0cmluZ0ltcGw+JiBsb2NhbE5hbWUpOwotCi0gICAgdm9pZCBkdW1wKCk7Ci0KLXBy
aXZhdGU6Ci0gICAgLy8gTWFwIGxvY2FsTmFtZSAtPiBJbXBvcnRFbnRyeS4KLSAgICBJbXBvcnRN
YXAgbV9pbXBvcnRFbnRyaWVzOwotCi0gICAgLy8gTWFwIGV4cG9ydE5hbWUgLT4gRXhwb3J0RW50
cnkuCi0gICAgRXhwb3J0TWFwIG1fZXhwb3J0RW50cmllczsKLQotICAgIElkZW50aWZpZXJTZXQg
bV9zdGFyRXhwb3J0RW50cmllczsKLQotICAgIC8vIFNhdmUgdGhlIG9jY3VycmVuY2Ugb3JkZXIg
c2luY2UgdGhlIG1vZHVsZSBsb2FkZXIgbG9hZHMgYW5kIHJ1bnMgdGhlIG1vZHVsZXMgaW4gdGhp
cyBvcmRlci4KLSAgICAvLyBodHRwOi8vd3d3LmVjbWEtaW50ZXJuYXRpb25hbC5vcmcvZWNtYS0y
NjIvNi4wLyNzZWMtbW9kdWxlZXZhbHVhdGlvbgotICAgIE9yZGVyZWRJZGVudGlmaWVyU2V0IG1f
cmVxdWVzdGVkTW9kdWxlczsKLX07Ci0KLWlubGluZSB2b2lkIE1vZHVsZVJlY29yZDo6YXBwZW5k
UmVxdWVzdGVkTW9kdWxlKGNvbnN0IElkZW50aWZpZXImIG1vZHVsZU5hbWUpCi17Ci0gICAgbV9y
ZXF1ZXN0ZWRNb2R1bGVzLmFkZChtb2R1bGVOYW1lLmltcGwoKSk7Ci19Ci0KLWlubGluZSB2b2lk
IE1vZHVsZVJlY29yZDo6YWRkSW1wb3J0RW50cnkoY29uc3QgSW1wb3J0RW50cnkmIGVudHJ5KQot
ewotICAgIG1faW1wb3J0RW50cmllcy5hZGQoZW50cnkubG9jYWxOYW1lLmltcGwoKSwgZW50cnkp
OwotfQotCi1pbmxpbmUgdm9pZCBNb2R1bGVSZWNvcmQ6OmFkZEV4cG9ydEVudHJ5KGNvbnN0IEV4
cG9ydEVudHJ5JiBlbnRyeSkKLXsKLSAgICBtX2V4cG9ydEVudHJpZXMuYWRkKGVudHJ5LmV4cG9y
dE5hbWUuaW1wbCgpLCBlbnRyeSk7Ci19Ci0KLWlubGluZSB2b2lkIE1vZHVsZVJlY29yZDo6YWRk
U3RhckV4cG9ydEVudHJ5KGNvbnN0IElkZW50aWZpZXImIG1vZHVsZU5hbWUpCi17Ci0gICAgbV9z
dGFyRXhwb3J0RW50cmllcy5hZGQobW9kdWxlTmFtZS5pbXBsKCkpOwotfQotCi1pbmxpbmUgYXV0
byBNb2R1bGVSZWNvcmQ6Omxvb2tVcEltcG9ydEVudHJ5KGNvbnN0IFJlZlB0cjxVbmlxdWVkU3Ry
aW5nSW1wbD4mIGxvY2FsTmFtZSkgLT4gY29uc3QgSW1wb3J0RW50cnkmCi17Ci0gICAgcmV0dXJu
ICgqbV9pbXBvcnRFbnRyaWVzLmZpbmQobG9jYWxOYW1lKSkudmFsdWU7Ci19Ci0KLX0gLy8gbmFt
ZXNwYWNlIEpTQwotCi0jZW5kaWYgLy8gTW9kdWxlUmVjb3JkX2gKZGlmZiAtLWdpdCBhL1NvdXJj
ZS9KYXZhU2NyaXB0Q29yZS9wYXJzZXIvTm9kZXMuaCBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9w
YXJzZXIvTm9kZXMuaAppbmRleCBjMDJiNDJjZWNiYWRhMTZlZTliZGUzMzRmNTJkOTBhYTg4NWNj
Y2ZhLi45MTkxMzRjMWI1YTcyZTdmYmI3NDgxNDg2YWUzZGViYzVkZDA0ZjQxIDEwMDY0NAotLS0g
YS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvcGFyc2VyL05vZGVzLmgKKysrIGIvU291cmNlL0phdmFT
Y3JpcHRDb3JlL3BhcnNlci9Ob2Rlcy5oCkBAIC03OSw4ICs3OSw2IEBAIG5hbWVzcGFjZSBKU0Mg
ewogICAgIH07CiAgICAgaW5saW5lIEZhbGxUaHJvdWdoTW9kZSBpbnZlcnQoRmFsbFRocm91Z2hN
b2RlIGZhbGxUaHJvdWdoTW9kZSkgeyByZXR1cm4gc3RhdGljX2Nhc3Q8RmFsbFRocm91Z2hNb2Rl
PighZmFsbFRocm91Z2hNb2RlKTsgfQogCi0gICAgdHlwZWRlZiBIYXNoU2V0PFJlZlB0cjxVbmlx
dWVkU3RyaW5nSW1wbD4sIElkZW50aWZpZXJSZXBIYXNoPiBJZGVudGlmaWVyU2V0OwotCiAgICAg
bmFtZXNwYWNlIERlY2xhcmF0aW9uU3RhY2tzIHsKICAgICAgICAgdHlwZWRlZiBWZWN0b3I8RnVu
Y3Rpb25NZXRhZGF0YU5vZGUqPiBGdW5jdGlvblN0YWNrOwogICAgIH0KZGlmZiAtLWdpdCBhL1Nv
dXJjZS9KYXZhU2NyaXB0Q29yZS9wYXJzZXIvTm9kZXNBbmFseXplTW9kdWxlLmNwcCBiL1NvdXJj
ZS9KYXZhU2NyaXB0Q29yZS9wYXJzZXIvTm9kZXNBbmFseXplTW9kdWxlLmNwcAppbmRleCA2MzNk
ZWFlY2U2YWY2NjY1OWQwZTc2YWMxYWE0MTYxNTlhYjc1YTM1Li4wN2Q5MzBmZmM2MDkxODkxZjlm
Yjc0ZTZhZmE3YjhlZTZiNzliMDJmIDEwMDY0NAotLS0gYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUv
cGFyc2VyL05vZGVzQW5hbHl6ZU1vZHVsZS5jcHAKKysrIGIvU291cmNlL0phdmFTY3JpcHRDb3Jl
L3BhcnNlci9Ob2Rlc0FuYWx5emVNb2R1bGUuY3BwCkBAIC0yNyw4ICsyNyw4IEBACiAjaW5jbHVk
ZSAiTm9kZXMuaCIKICNpbmNsdWRlICJOb2RlQ29uc3RydWN0b3JzLmgiCiAKKyNpbmNsdWRlICJK
U01vZHVsZVJlY29yZC5oIgogI2luY2x1ZGUgIk1vZHVsZUFuYWx5emVyLmgiCi0jaW5jbHVkZSAi
TW9kdWxlUmVjb3JkLmgiCiAKIG5hbWVzcGFjZSBKU0MgewogCkBAIC00OCw5ICs0OCw5IEBAIHZv
aWQgU291cmNlRWxlbWVudHM6OmFuYWx5emVNb2R1bGUoTW9kdWxlQW5hbHl6ZXImIGFuYWx5emVy
KQogCiB2b2lkIEltcG9ydERlY2xhcmF0aW9uTm9kZTo6YW5hbHl6ZU1vZHVsZShNb2R1bGVBbmFs
eXplciYgYW5hbHl6ZXIpCiB7Ci0gICAgYW5hbHl6ZXIubW9kdWxlUmVjb3JkKCkuYXBwZW5kUmVx
dWVzdGVkTW9kdWxlKG1fbW9kdWxlTmFtZS0+bW9kdWxlTmFtZSgpKTsKKyAgICBhbmFseXplci5t
b2R1bGVSZWNvcmQoKS0+YXBwZW5kUmVxdWVzdGVkTW9kdWxlKG1fbW9kdWxlTmFtZS0+bW9kdWxl
TmFtZSgpKTsKICAgICBmb3IgKGF1dG8qIHNwZWNpZmllciA6IG1fc3BlY2lmaWVyTGlzdC0+c3Bl
Y2lmaWVycygpKSB7Ci0gICAgICAgIGFuYWx5emVyLm1vZHVsZVJlY29yZCgpLmFkZEltcG9ydEVu
dHJ5KE1vZHVsZVJlY29yZDo6SW1wb3J0RW50cnkgeworICAgICAgICBhbmFseXplci5tb2R1bGVS
ZWNvcmQoKS0+YWRkSW1wb3J0RW50cnkoSlNNb2R1bGVSZWNvcmQ6OkltcG9ydEVudHJ5IHsKICAg
ICAgICAgICAgIG1fbW9kdWxlTmFtZS0+bW9kdWxlTmFtZSgpLAogICAgICAgICAgICAgc3BlY2lm
aWVyLT5pbXBvcnRlZE5hbWUoKSwKICAgICAgICAgICAgIHNwZWNpZmllci0+bG9jYWxOYW1lKCkK
QEAgLTYwLDggKzYwLDggQEAgdm9pZCBJbXBvcnREZWNsYXJhdGlvbk5vZGU6OmFuYWx5emVNb2R1
bGUoTW9kdWxlQW5hbHl6ZXImIGFuYWx5emVyKQogCiB2b2lkIEV4cG9ydEFsbERlY2xhcmF0aW9u
Tm9kZTo6YW5hbHl6ZU1vZHVsZShNb2R1bGVBbmFseXplciYgYW5hbHl6ZXIpCiB7Ci0gICAgYW5h
bHl6ZXIubW9kdWxlUmVjb3JkKCkuYXBwZW5kUmVxdWVzdGVkTW9kdWxlKG1fbW9kdWxlTmFtZS0+
bW9kdWxlTmFtZSgpKTsKLSAgICBhbmFseXplci5tb2R1bGVSZWNvcmQoKS5hZGRTdGFyRXhwb3J0
RW50cnkobV9tb2R1bGVOYW1lLT5tb2R1bGVOYW1lKCkpOworICAgIGFuYWx5emVyLm1vZHVsZVJl
Y29yZCgpLT5hcHBlbmRSZXF1ZXN0ZWRNb2R1bGUobV9tb2R1bGVOYW1lLT5tb2R1bGVOYW1lKCkp
OworICAgIGFuYWx5emVyLm1vZHVsZVJlY29yZCgpLT5hZGRTdGFyRXhwb3J0RW50cnkobV9tb2R1
bGVOYW1lLT5tb2R1bGVOYW1lKCkpOwogfQogCiB2b2lkIEV4cG9ydERlZmF1bHREZWNsYXJhdGlv
bk5vZGU6OmFuYWx5emVNb2R1bGUoTW9kdWxlQW5hbHl6ZXImIGFuYWx5emVyKQpAQCAtNzYsNyAr
NzYsNyBAQCB2b2lkIEV4cG9ydExvY2FsRGVjbGFyYXRpb25Ob2RlOjphbmFseXplTW9kdWxlKE1v
ZHVsZUFuYWx5emVyJikKIHZvaWQgRXhwb3J0TmFtZWREZWNsYXJhdGlvbk5vZGU6OmFuYWx5emVN
b2R1bGUoTW9kdWxlQW5hbHl6ZXImIGFuYWx5emVyKQogewogICAgIGlmIChtX21vZHVsZU5hbWUp
Ci0gICAgICAgIGFuYWx5emVyLm1vZHVsZVJlY29yZCgpLmFwcGVuZFJlcXVlc3RlZE1vZHVsZSht
X21vZHVsZU5hbWUtPm1vZHVsZU5hbWUoKSk7CisgICAgICAgIGFuYWx5emVyLm1vZHVsZVJlY29y
ZCgpLT5hcHBlbmRSZXF1ZXN0ZWRNb2R1bGUobV9tb2R1bGVOYW1lLT5tb2R1bGVOYW1lKCkpOwog
CiAgICAgZm9yIChhdXRvKiBzcGVjaWZpZXIgOiBtX3NwZWNpZmllckxpc3QtPnNwZWNpZmllcnMo
KSkgewogICAgICAgICBpZiAobV9tb2R1bGVOYW1lKSB7CkBAIC04NCw3ICs4NCw3IEBAIHZvaWQg
RXhwb3J0TmFtZWREZWNsYXJhdGlvbk5vZGU6OmFuYWx5emVNb2R1bGUoTW9kdWxlQW5hbHl6ZXIm
IGFuYWx5emVyKQogICAgICAgICAgICAgLy8KICAgICAgICAgICAgIC8vIEluIHRoaXMgY2FzZSwg
bm8gbG9jYWwgdmFyaWFibGUgbmFtZXMgYXJlIGltcG9ydGVkIGludG8gdGhlIGN1cnJlbnQgbW9k
dWxlLgogICAgICAgICAgICAgLy8gInYiIGluZGlyZWN0bHkgcG9pbnRzIHRoZSBiaW5kaW5nIGlu
ICJtb2QiLgotICAgICAgICAgICAgYW5hbHl6ZXIubW9kdWxlUmVjb3JkKCkuYWRkRXhwb3J0RW50
cnkoTW9kdWxlUmVjb3JkOjpFeHBvcnRFbnRyeTo6Y3JlYXRlSW5kaXJlY3Qoc3BlY2lmaWVyLT5l
eHBvcnRlZE5hbWUoKSwgc3BlY2lmaWVyLT5sb2NhbE5hbWUoKSwgbV9tb2R1bGVOYW1lLT5tb2R1
bGVOYW1lKCkpKTsKKyAgICAgICAgICAgIGFuYWx5emVyLm1vZHVsZVJlY29yZCgpLT5hZGRFeHBv
cnRFbnRyeShKU01vZHVsZVJlY29yZDo6RXhwb3J0RW50cnk6OmNyZWF0ZUluZGlyZWN0KHNwZWNp
Zmllci0+ZXhwb3J0ZWROYW1lKCksIHNwZWNpZmllci0+bG9jYWxOYW1lKCksIG1fbW9kdWxlTmFt
ZS0+bW9kdWxlTmFtZSgpKSk7CiAgICAgICAgICAgICBjb250aW51ZTsKICAgICAgICAgfQogCmRp
ZmYgLS1naXQgYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9Db21tb25JZGVudGlmaWVy
cy5jcHAgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9Db21tb25JZGVudGlmaWVycy5j
cHAKaW5kZXggZmM2ZTYyY2EwNDVlMzYyOWNmMmFkM2I2YmZjYjczZDVkZGZmMGNlMS4uYWEzOTJj
ZWI4ZDFhMDY1YTkyNTJhYTc3NDRkYWI4ZDliMTYwNTRlOSAxMDA2NDQKLS0tIGEvU291cmNlL0ph
dmFTY3JpcHRDb3JlL3J1bnRpbWUvQ29tbW9uSWRlbnRpZmllcnMuY3BwCisrKyBiL1NvdXJjZS9K
YXZhU2NyaXB0Q29yZS9ydW50aW1lL0NvbW1vbklkZW50aWZpZXJzLmNwcApAQCAtNjgsMTQgKzY4
LDE0IEBAIGJvb2wgQ29tbW9uSWRlbnRpZmllcnM6OmlzUHJpdmF0ZU5hbWUoY29uc3QgSWRlbnRp
ZmllciYgaWRlbnQpIGNvbnN0CiAgICAgcmV0dXJuIG1fYnVpbHRpbk5hbWVzLT5pc1ByaXZhdGVO
YW1lKGlkZW50KTsKIH0KIAotY29uc3QgSWRlbnRpZmllciogQ29tbW9uSWRlbnRpZmllcnM6Omdl
dFByaXZhdGVOYW1lKGNvbnN0IElkZW50aWZpZXImIGlkZW50KSBjb25zdAorY29uc3QgSWRlbnRp
ZmllciogQ29tbW9uSWRlbnRpZmllcnM6Omxvb2tVcFByaXZhdGVOYW1lKGNvbnN0IElkZW50aWZp
ZXImIGlkZW50KSBjb25zdAogewotICAgIHJldHVybiBtX2J1aWx0aW5OYW1lcy0+Z2V0UHJpdmF0
ZU5hbWUoaWRlbnQpOworICAgIHJldHVybiBtX2J1aWx0aW5OYW1lcy0+bG9va1VwUHJpdmF0ZU5h
bWUoaWRlbnQpOwogfQogICAgIAotSWRlbnRpZmllciBDb21tb25JZGVudGlmaWVyczo6Z2V0UHVi
bGljTmFtZShjb25zdCBJZGVudGlmaWVyJiBpZGVudCkgY29uc3QKK0lkZW50aWZpZXIgQ29tbW9u
SWRlbnRpZmllcnM6Omxvb2tVcFB1YmxpY05hbWUoY29uc3QgSWRlbnRpZmllciYgaWRlbnQpIGNv
bnN0CiB7Ci0gICAgcmV0dXJuIG1fYnVpbHRpbk5hbWVzLT5nZXRQdWJsaWNOYW1lKGlkZW50KTsK
KyAgICByZXR1cm4gbV9idWlsdGluTmFtZXMtPmxvb2tVcFB1YmxpY05hbWUoaWRlbnQpOwogfQog
CiAKZGlmZiAtLWdpdCBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL0NvbW1vbklkZW50
aWZpZXJzLmggYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9Db21tb25JZGVudGlmaWVy
cy5oCmluZGV4IDM0NDdiMzk4ZmQwNjE4MDU5MDllNmYwMjJlM2Q2NjUyM2JhYzQ2OTguLmQ1OWQ0
NDQ4ZDI5M2ExNDc1YzAxYjdjN2U2NmFlZjc5NjJlYjEyNmQgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9K
YXZhU2NyaXB0Q29yZS9ydW50aW1lL0NvbW1vbklkZW50aWZpZXJzLmgKKysrIGIvU291cmNlL0ph
dmFTY3JpcHRDb3JlL3J1bnRpbWUvQ29tbW9uSWRlbnRpZmllcnMuaApAQCAtNDIsNiArNDIsNyBA
QAogICAgIG1hY3JvKEluZmluaXR5KSBcCiAgICAgbWFjcm8oSW50bCkgXAogICAgIG1hY3JvKEpT
T04pIFwKKyAgICBtYWNybyhMb2FkZXIpIFwKICAgICBtYWNybyhNYXApXAogICAgIG1hY3JvKE1h
cEl0ZXJhdG9yKVwKICAgICBtYWNybyhNYXRoKSBcCkBAIC0yODEsNiArMjgyLDcgQEAKICAgICBt
YWNybyhOdW1iZXIpIFwKICAgICBtYWNybyhBcnJheSkgXAogICAgIG1hY3JvKFN0cmluZykgXAor
ICAgIG1hY3JvKE1hcCkgXAogICAgIG1hY3JvKFByb21pc2UpIFwKICAgICBtYWNybyhhYnMpIFwK
ICAgICBtYWNybyhmbG9vcikgXApAQCAtMzAyLDYgKzMwNCw4IEBACiAgICAgbWFjcm8oY2FwYWJp
bGl0aWVzKSBcCiAgICAgbWFjcm8oc3RhckRlZmF1bHQpIFwKICAgICBtYWNybyhJbnNwZWN0b3JJ
bnN0cnVtZW50YXRpb24pIFwKKyAgICBtYWNybyhnZXQpIFwKKyAgICBtYWNybyhzZXQpIFwKIAog
CiBuYW1lc3BhY2UgSlNDIHsKQEAgLTM0OCw4ICszNTIsOCBAQCBuYW1lc3BhY2UgSlNDIHsKICAg
ICAgICAgYm9vbCBpc1ByaXZhdGVOYW1lKFVuaXF1ZWRTdHJpbmdJbXBsJiB1aWQpIGNvbnN0Owog
ICAgICAgICBib29sIGlzUHJpdmF0ZU5hbWUoY29uc3QgSWRlbnRpZmllciYpIGNvbnN0OwogCi0g
ICAgICAgIGNvbnN0IElkZW50aWZpZXIqIGdldFByaXZhdGVOYW1lKGNvbnN0IElkZW50aWZpZXIm
KSBjb25zdDsKLSAgICAgICAgSWRlbnRpZmllciBnZXRQdWJsaWNOYW1lKGNvbnN0IElkZW50aWZp
ZXImKSBjb25zdDsKKyAgICAgICAgY29uc3QgSWRlbnRpZmllciogbG9va1VwUHJpdmF0ZU5hbWUo
Y29uc3QgSWRlbnRpZmllciYpIGNvbnN0OworICAgICAgICBJZGVudGlmaWVyIGxvb2tVcFB1Ymxp
Y05hbWUoY29uc3QgSWRlbnRpZmllciYpIGNvbnN0OwogCiAgICAgICAgIGNvbnN0IEJ5dGVjb2Rl
SW50cmluc2ljUmVnaXN0cnkmIGJ5dGVjb2RlSW50cmluc2ljUmVnaXN0cnkoKSBjb25zdCB7IHJl
dHVybiBtX2J5dGVjb2RlSW50cmluc2ljUmVnaXN0cnk7IH0KIApkaWZmIC0tZ2l0IGEvU291cmNl
L0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvQ29tcGxldGlvbi5jcHAgYi9Tb3VyY2UvSmF2YVNjcmlw
dENvcmUvcnVudGltZS9Db21wbGV0aW9uLmNwcAppbmRleCBhM2RhZWU2MDM0M2FjMTRiMTRhZDAz
MDRlYmRjOWEyNWFhYjE1NzIzLi4yZjI5N2ExOTA0YjRkMTk3YzdiNzAwZmE1Yjk1NGIxMjZlNzM2
ZDU0IDEwMDY0NAotLS0gYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9Db21wbGV0aW9u
LmNwcAorKysgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9Db21wbGV0aW9uLmNwcApA
QCAtMjgsMTEgKzI4LDEyIEBACiAjaW5jbHVkZSAiRGVidWdnZXIuaCIKICNpbmNsdWRlICJFeGNl
cHRpb24uaCIKICNpbmNsdWRlICJJbnRlcnByZXRlci5oIgorI2luY2x1ZGUgIkpTQ0lubGluZXMu
aCIKICNpbmNsdWRlICJKU0dsb2JhbE9iamVjdC5oIgogI2luY2x1ZGUgIkpTTG9jay5oIgotI2lu
Y2x1ZGUgIkpTQ0lubGluZXMuaCIKKyNpbmNsdWRlICJKU01vZHVsZVJlY29yZC5oIgogI2luY2x1
ZGUgIk1vZHVsZUFuYWx5emVyLmgiCi0jaW5jbHVkZSAiTW9kdWxlUmVjb3JkLmgiCisjaW5jbHVk
ZSAiTW9kdWxlTG9hZGVyT2JqZWN0LmgiCiAjaW5jbHVkZSAiUGFyc2VyLmgiCiAjaW5jbHVkZSA8
d3RmL1dURlRocmVhZERhdGEuaD4KIApAQCAtNjMsOCArNjQsOSBAQCBib29sIGNoZWNrU3ludGF4
KFZNJiB2bSwgY29uc3QgU291cmNlQ29kZSYgc291cmNlLCBQYXJzZXJFcnJvciYgZXJyb3IpCiAg
ICAgICAgIEpTUGFyc2VyU3RyaWN0TW9kZTo6Tm90U3RyaWN0LCBTb3VyY2VQYXJzZU1vZGU6OlBy
b2dyYW1Nb2RlLCBlcnJvcik7CiB9CiAKLWJvb2wgY2hlY2tNb2R1bGVTeW50YXgoVk0mIHZtLCBj
b25zdCBTb3VyY2VDb2RlJiBzb3VyY2UsIFBhcnNlckVycm9yJiBlcnJvcikKK2Jvb2wgY2hlY2tN
b2R1bGVTeW50YXgoRXhlY1N0YXRlKiBleGVjLCBjb25zdCBTb3VyY2VDb2RlJiBzb3VyY2UsIFBh
cnNlckVycm9yJiBlcnJvcikKIHsKKyAgICBWTSYgdm0gPSBleGVjLT52bSgpOwogICAgIEpTTG9j
a0hvbGRlciBsb2NrKHZtKTsKICAgICBSRUxFQVNFX0FTU0VSVCh2bS5hdG9taWNTdHJpbmdUYWJs
ZSgpID09IHd0ZlRocmVhZERhdGEoKS5hdG9taWNTdHJpbmdUYWJsZSgpKTsKICAgICBzdGQ6OnVu
aXF1ZV9wdHI8TW9kdWxlUHJvZ3JhbU5vZGU+IG1vZHVsZVByb2dyYW1Ob2RlID0gcGFyc2U8TW9k
dWxlUHJvZ3JhbU5vZGU+KApAQCAtNzMsNyArNzUsNyBAQCBib29sIGNoZWNrTW9kdWxlU3ludGF4
KFZNJiB2bSwgY29uc3QgU291cmNlQ29kZSYgc291cmNlLCBQYXJzZXJFcnJvciYgZXJyb3IpCiAg
ICAgaWYgKCFtb2R1bGVQcm9ncmFtTm9kZSkKICAgICAgICAgcmV0dXJuIGZhbHNlOwogCi0gICAg
TW9kdWxlQW5hbHl6ZXIgbW9kdWxlQW5hbHl6ZXIodm0sIG1vZHVsZVByb2dyYW1Ob2RlLT52YXJE
ZWNsYXJhdGlvbnMoKSwgbW9kdWxlUHJvZ3JhbU5vZGUtPmxleGljYWxWYXJpYWJsZXMoKSk7Cisg
ICAgTW9kdWxlQW5hbHl6ZXIgbW9kdWxlQW5hbHl6ZXIoZXhlYywgbW9kdWxlUHJvZ3JhbU5vZGUt
PnZhckRlY2xhcmF0aW9ucygpLCBtb2R1bGVQcm9ncmFtTm9kZS0+bGV4aWNhbFZhcmlhYmxlcygp
KTsKICAgICBtb2R1bGVBbmFseXplci5hbmFseXplKCptb2R1bGVQcm9ncmFtTm9kZSk7CiAgICAg
cmV0dXJuIHRydWU7CiB9CkBAIC0xMDgsNCArMTEwLDQwIEBAIEpTVmFsdWUgZXZhbHVhdGUoRXhl
Y1N0YXRlKiBleGVjLCBjb25zdCBTb3VyY2VDb2RlJiBzb3VyY2UsIEpTVmFsdWUgdGhpc1ZhbHVl
LCBOCiAgICAgcmV0dXJuIHJlc3VsdDsKIH0KIAordm9pZCBldmFsdWF0ZU1vZHVsZShFeGVjU3Rh
dGUqIGV4ZWMsIGNvbnN0IFNvdXJjZUNvZGUmIHNvdXJjZSwgTmFrZWRQdHI8RXhjZXB0aW9uPiYg
cmV0dXJuZWRFeGNlcHRpb24pCit7CisgICAgSlNMb2NrSG9sZGVyIGxvY2soZXhlYyk7CisgICAg
UkVMRUFTRV9BU1NFUlQoZXhlYy0+dm0oKS5hdG9taWNTdHJpbmdUYWJsZSgpID09IHd0ZlRocmVh
ZERhdGEoKS5hdG9taWNTdHJpbmdUYWJsZSgpKTsKKyAgICBSRUxFQVNFX0FTU0VSVCghZXhlYy0+
dm0oKS5pc0NvbGxlY3RvckJ1c3koKSk7CisKKyAgICBDb2RlUHJvZmlsaW5nIHByb2ZpbGUoc291
cmNlKTsKKworICAgIEpTR2xvYmFsT2JqZWN0KiBnbG9iYWxPYmplY3QgPSBleGVjLT52bUVudHJ5
R2xvYmFsT2JqZWN0KCk7CisKKyAgICAvLyBHZW5lcmF0ZSB0aGUgdW5pcXVlIGtleSBmb3IgdGhl
IHNvdXJjZS1wcm92aWRlZCBtb2R1bGUuCisgICAgU3ltYm9sKiBrZXkgPSBTeW1ib2w6OmNyZWF0
ZShleGVjLT52bSgpKTsKKworICAgIE1vZHVsZUxvYWRlck9iamVjdCogbW9kdWxlTG9hZGVyID0g
Z2xvYmFsT2JqZWN0LT5tb2R1bGVMb2FkZXIoKTsKKworICAgIC8vIEluc2VydCB0aGUgZ2l2ZW4g
c291cmNlIGNvZGUgdG8gdGhlIE1vZHVsZUxvYWRlciByZWdpc3RyeSBhcyB0aGUgZmV0Y2hlZCBy
ZWdpc3RyeSBlbnRyeS4KKyAgICBtb2R1bGVMb2FkZXItPnByb3ZpZGUoZXhlYywga2V5LCBNb2R1
bGVMb2FkZXJPYmplY3Q6OlN0YXR1czo6RmV0Y2gsIHNvdXJjZS50b1N0cmluZygpKTsKKyAgICBp
ZiAoZXhlYy0+aGFkRXhjZXB0aW9uKCkpIHsKKyAgICAgICAgcmV0dXJuZWRFeGNlcHRpb24gPSBl
eGVjLT5leGNlcHRpb24oKTsKKyAgICAgICAgZXhlYy0+Y2xlYXJFeGNlcHRpb24oKTsKKyAgICAg
ICAgcmV0dXJuOworICAgIH0KKworICAgIC8vIEZJWE1FOiBOb3csIHdlIGRvbid0IGltcGxlbWVu
dCB0aGUgbGlua2luZyBwaGFzZSB5ZXQuCisgICAgLy8gU28gaGVyZSwgd2UganVzdCBjYWxsIHJl
cXVlc3RJbnN0YW50aWF0ZUFsbCB0byBvbmx5IHBlcmZvcm0gdGhlIG1vZHVsZSBsb2FkaW5nLgor
ICAgIC8vIEF0IGxhc3QsIGl0IHNob3VsZCBiZSByZXBsYWNlZCB3aXRoIHJlcXVlc3RSZWFkeS4K
KyAgICBtb2R1bGVMb2FkZXItPnJlcXVlc3RJbnN0YW50aWF0ZUFsbChleGVjLCBrZXkpOworCisg
ICAgLy8gRklYTUU6IFdlIHNob3VsZCBhbHNvIGhhbmRsZSB0aGUgYXN5bmNocm9ub3VzIFN5bnRh
eCBFcnJvcnMgdGhhdCB3aWxsIGJlIGRlbGl2ZXJlZCBieSB0aGUgcmVqZWN0ZWQgcHJvbWlzZS4K
KyAgICBpZiAoZXhlYy0+aGFkRXhjZXB0aW9uKCkpIHsKKyAgICAgICAgcmV0dXJuZWRFeGNlcHRp
b24gPSBleGVjLT5leGNlcHRpb24oKTsKKyAgICAgICAgZXhlYy0+Y2xlYXJFeGNlcHRpb24oKTsK
KyAgICAgICAgcmV0dXJuOworICAgIH0KK30KKwogfSAvLyBuYW1lc3BhY2UgSlNDCmRpZmYgLS1n
aXQgYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9Db21wbGV0aW9uLmggYi9Tb3VyY2Uv
SmF2YVNjcmlwdENvcmUvcnVudGltZS9Db21wbGV0aW9uLmgKaW5kZXggNzAyZWQ5ZmFiMGM3OTFm
YWUxNTUwNTYyN2JjNzMxYWRiYWUzYTVmZC4uZGUzMmQ2M2U2M2FjN2NlZDQ5ZDgxN2UyM2MwYjg3
ODg2N2EwNWE2OSAxMDA2NDQKLS0tIGEvU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvQ29t
cGxldGlvbi5oCisrKyBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL0NvbXBsZXRpb24u
aApAQCAtMzcsMTMgKzM3LDE0IEBAIGNsYXNzIFZNOwogCiBKU19FWFBPUlRfUFJJVkFURSBib29s
IGNoZWNrU3ludGF4KFZNJiwgY29uc3QgU291cmNlQ29kZSYsIFBhcnNlckVycm9yJik7CiBKU19F
WFBPUlRfUFJJVkFURSBib29sIGNoZWNrU3ludGF4KEV4ZWNTdGF0ZSosIGNvbnN0IFNvdXJjZUNv
ZGUmLCBKU1ZhbHVlKiBleGNlcHRpb24gPSAwKTsKLUpTX0VYUE9SVF9QUklWQVRFIGJvb2wgY2hl
Y2tNb2R1bGVTeW50YXgoVk0mLCBjb25zdCBTb3VyY2VDb2RlJiwgUGFyc2VyRXJyb3ImKTsKK0pT
X0VYUE9SVF9QUklWQVRFIGJvb2wgY2hlY2tNb2R1bGVTeW50YXgoRXhlY1N0YXRlKiwgY29uc3Qg
U291cmNlQ29kZSYsIFBhcnNlckVycm9yJik7CiBKU19FWFBPUlRfUFJJVkFURSBKU1ZhbHVlIGV2
YWx1YXRlKEV4ZWNTdGF0ZSosIGNvbnN0IFNvdXJjZUNvZGUmLCBKU1ZhbHVlIHRoaXNWYWx1ZSwg
TmFrZWRQdHI8RXhjZXB0aW9uPiYgcmV0dXJuZWRFeGNlcHRpb24pOwogaW5saW5lIEpTVmFsdWUg
ZXZhbHVhdGUoRXhlY1N0YXRlKiBleGVjLCBjb25zdCBTb3VyY2VDb2RlJiBzb3VyY2VDb2RlLCBK
U1ZhbHVlIHRoaXNWYWx1ZSA9IEpTVmFsdWUoKSkKIHsKICAgICBOYWtlZFB0cjxFeGNlcHRpb24+
IHVudXNlZDsKICAgICByZXR1cm4gZXZhbHVhdGUoZXhlYywgc291cmNlQ29kZSwgdGhpc1ZhbHVl
LCB1bnVzZWQpOwogfQorSlNfRVhQT1JUX1BSSVZBVEUgdm9pZCBldmFsdWF0ZU1vZHVsZShFeGVj
U3RhdGUqLCBjb25zdCBTb3VyY2VDb2RlJiwgTmFrZWRQdHI8RXhjZXB0aW9uPiYgcmV0dXJuZWRF
eGNlcHRpb24pOwogCiB9IC8vIG5hbWVzcGFjZSBKU0MKIApkaWZmIC0tZ2l0IGEvU291cmNlL0ph
dmFTY3JpcHRDb3JlL3J1bnRpbWUvRXhjZXB0aW9uSGVscGVycy5jcHAgYi9Tb3VyY2UvSmF2YVNj
cmlwdENvcmUvcnVudGltZS9FeGNlcHRpb25IZWxwZXJzLmNwcAppbmRleCA0NmMwY2VmOTM5MmE0
YWQ3YzBiMDBhOWEwODQ3ZTBiOWFlZmM1ZmFlLi5iNzg1OWJmZTNlOGVhZmQxZWM2NGFiNWZiZmVh
ZjI1NzJhZDI3YzE3IDEwMDY0NAotLS0gYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9F
eGNlcHRpb25IZWxwZXJzLmNwcAorKysgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9F
eGNlcHRpb25IZWxwZXJzLmNwcApAQCAtNzMsNyArNzMsNyBAQCBKU09iamVjdCogY3JlYXRlU3Rh
Y2tPdmVyZmxvd0Vycm9yKEV4ZWNTdGF0ZSogZXhlYykKIEpTT2JqZWN0KiBjcmVhdGVVbmRlZmlu
ZWRWYXJpYWJsZUVycm9yKEV4ZWNTdGF0ZSogZXhlYywgY29uc3QgSWRlbnRpZmllciYgaWRlbnQp
CiB7CiAgICAgaWYgKGV4ZWMtPnByb3BlcnR5TmFtZXMoKS5pc1ByaXZhdGVOYW1lKGlkZW50KSkg
ewotICAgICAgICBTdHJpbmcgbWVzc2FnZShtYWtlU3RyaW5nKCJDYW4ndCBmaW5kIHByaXZhdGUg
dmFyaWFibGU6IEAiLCBleGVjLT5wcm9wZXJ0eU5hbWVzKCkuZ2V0UHVibGljTmFtZShpZGVudCku
c3RyaW5nKCkpKTsKKyAgICAgICAgU3RyaW5nIG1lc3NhZ2UobWFrZVN0cmluZygiQ2FuJ3QgZmlu
ZCBwcml2YXRlIHZhcmlhYmxlOiBAIiwgZXhlYy0+cHJvcGVydHlOYW1lcygpLmxvb2tVcFB1Ymxp
Y05hbWUoaWRlbnQpLnN0cmluZygpKSk7CiAgICAgICAgIHJldHVybiBjcmVhdGVSZWZlcmVuY2VF
cnJvcihleGVjLCBtZXNzYWdlKTsKICAgICB9CiAgICAgU3RyaW5nIG1lc3NhZ2UobWFrZVN0cmlu
ZygiQ2FuJ3QgZmluZCB2YXJpYWJsZTogIiwgaWRlbnQuc3RyaW5nKCkpKTsKZGlmZiAtLWdpdCBh
L1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL0lkZW50aWZpZXIuaCBiL1NvdXJjZS9KYXZh
U2NyaXB0Q29yZS9ydW50aW1lL0lkZW50aWZpZXIuaAppbmRleCA2MWRlNjUzNmE2ZmE0YzI5YWNh
NGRmMTRiN2Q2ZmVjNGQyYTUwM2U2Li44ODljYTZiMjJlNDM3OTM2MmYyNTgwNWZkMDVlNmY4NGFh
NjdiYmE2IDEwMDY0NAotLS0gYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9JZGVudGlm
aWVyLmgKKysrIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvSWRlbnRpZmllci5oCkBA
IC0yOTIsNiArMjkyLDcgQEAgc3RydWN0IElkZW50aWZpZXJNYXBJbmRleEhhc2hUcmFpdHMgOiBI
YXNoVHJhaXRzPGludD4gewogICAgIHN0YXRpYyBjb25zdCBib29sIGVtcHR5VmFsdWVJc1plcm8g
PSBmYWxzZTsKIH07CiAKK3R5cGVkZWYgSGFzaFNldDxSZWZQdHI8VW5pcXVlZFN0cmluZ0ltcGw+
LCBJZGVudGlmaWVyUmVwSGFzaD4gSWRlbnRpZmllclNldDsKIHR5cGVkZWYgSGFzaE1hcDxSZWZQ
dHI8VW5pcXVlZFN0cmluZ0ltcGw+LCBpbnQsIElkZW50aWZpZXJSZXBIYXNoLCBIYXNoVHJhaXRz
PFJlZlB0cjxVbmlxdWVkU3RyaW5nSW1wbD4+LCBJZGVudGlmaWVyTWFwSW5kZXhIYXNoVHJhaXRz
PiBJZGVudGlmaWVyTWFwOwogdHlwZWRlZiBIYXNoTWFwPFVuaXF1ZWRTdHJpbmdJbXBsKiwgaW50
LCBJZGVudGlmaWVyUmVwSGFzaCwgSGFzaFRyYWl0czxVbmlxdWVkU3RyaW5nSW1wbCo+LCBJZGVu
dGlmaWVyTWFwSW5kZXhIYXNoVHJhaXRzPiBCb3Jyb3dlZElkZW50aWZpZXJNYXA7CiAKZGlmZiAt
LWdpdCBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL0pTR2xvYmFsT2JqZWN0LmNwcCBi
L1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL0pTR2xvYmFsT2JqZWN0LmNwcAppbmRleCAy
NWFjZTkyNjkxODBhZGQ3M2M0ZWFlOThkMzg5NTc4ZTQ2YWViNTQ0Li5mNTdjMDdiYjRjN2FiYzlm
ZDM1MzMxZjk2ZjI5ODZhMjlmMTZlZDhhIDEwMDY0NAotLS0gYS9Tb3VyY2UvSmF2YVNjcmlwdENv
cmUvcnVudGltZS9KU0dsb2JhbE9iamVjdC5jcHAKKysrIGIvU291cmNlL0phdmFTY3JpcHRDb3Jl
L3J1bnRpbWUvSlNHbG9iYWxPYmplY3QuY3BwCkBAIC04MCw2ICs4MCw3IEBACiAjaW5jbHVkZSAi
SlNMb2NrLmgiCiAjaW5jbHVkZSAiSlNNYXAuaCIKICNpbmNsdWRlICJKU01hcEl0ZXJhdG9yLmgi
CisjaW5jbHVkZSAiSlNNb2R1bGVSZWNvcmQuaCIKICNpbmNsdWRlICJKU09OT2JqZWN0LmgiCiAj
aW5jbHVkZSAiSlNQcm9taXNlLmgiCiAjaW5jbHVkZSAiSlNQcm9taXNlQ29uc3RydWN0b3IuaCIK
QEAgLTEwMyw2ICsxMDQsNyBAQAogI2luY2x1ZGUgIk1hcFByb3RvdHlwZS5oIgogI2luY2x1ZGUg
Ik1hdGhPYmplY3QuaCIKICNpbmNsdWRlICJNaWNyb3Rhc2suaCIKKyNpbmNsdWRlICJNb2R1bGVM
b2FkZXJPYmplY3QuaCIKICNpbmNsdWRlICJOYXRpdmVFcnJvckNvbnN0cnVjdG9yLmgiCiAjaW5j
bHVkZSAiTmF0aXZlRXJyb3JQcm90b3R5cGUuaCIKICNpbmNsdWRlICJOdWxsR2V0dGVyRnVuY3Rp
b24uaCIKQEAgLTE1Niw3ICsxNTgsNyBAQCBuYW1lc3BhY2UgSlNDIHsKIAogY29uc3QgQ2xhc3NJ
bmZvIEpTR2xvYmFsT2JqZWN0OjpzX2luZm8gPSB7ICJHbG9iYWxPYmplY3QiLCAmQmFzZTo6c19p
bmZvLCAmZ2xvYmFsT2JqZWN0VGFibGUsIENSRUFURV9NRVRIT0RfVEFCTEUoSlNHbG9iYWxPYmpl
Y3QpIH07CiAKLWNvbnN0IEdsb2JhbE9iamVjdE1ldGhvZFRhYmxlIEpTR2xvYmFsT2JqZWN0Ojpz
X2dsb2JhbE9iamVjdE1ldGhvZFRhYmxlID0geyAmYWxsb3dzQWNjZXNzRnJvbSwgJnN1cHBvcnRz
UHJvZmlsaW5nLCAmc3VwcG9ydHNSaWNoU291cmNlSW5mbywgJnNob3VsZEludGVycnVwdFNjcmlw
dCwgJmphdmFTY3JpcHRSdW50aW1lRmxhZ3MsIG51bGxwdHIsICZzaG91bGRJbnRlcnJ1cHRTY3Jp
cHRCZWZvcmVUaW1lb3V0IH07Citjb25zdCBHbG9iYWxPYmplY3RNZXRob2RUYWJsZSBKU0dsb2Jh
bE9iamVjdDo6c19nbG9iYWxPYmplY3RNZXRob2RUYWJsZSA9IHsgJmFsbG93c0FjY2Vzc0Zyb20s
ICZzdXBwb3J0c1Byb2ZpbGluZywgJnN1cHBvcnRzUmljaFNvdXJjZUluZm8sICZzaG91bGRJbnRl
cnJ1cHRTY3JpcHQsICZqYXZhU2NyaXB0UnVudGltZUZsYWdzLCBudWxscHRyLCAmc2hvdWxkSW50
ZXJydXB0U2NyaXB0QmVmb3JlVGltZW91dCwgbnVsbHB0ciwgbnVsbHB0ciwgbnVsbHB0ciwgbnVs
bHB0ciB9OwogCiAvKiBTb3VyY2UgZm9yIEpTR2xvYmFsT2JqZWN0Lmx1dC5oCiBAYmVnaW4gZ2xv
YmFsT2JqZWN0VGFibGUKQEAgLTMxNSw2ICszMTcsNyBAQCB2b2lkIEpTR2xvYmFsT2JqZWN0Ojpp
bml0KFZNJiB2bSkKICAgICBtX291dE9mQmFuZEFyZ3VtZW50c1N0cnVjdHVyZS5zZXQodm0sIHRo
aXMsIENsb25lZEFyZ3VtZW50czo6Y3JlYXRlU3RydWN0dXJlKHZtLCB0aGlzLCBtX29iamVjdFBy
b3RvdHlwZS5nZXQoKSkpOwogICAgIG1fY2FsbGJhY2tDb25zdHJ1Y3RvclN0cnVjdHVyZS5zZXQo
dm0sIHRoaXMsIEpTQ2FsbGJhY2tDb25zdHJ1Y3Rvcjo6Y3JlYXRlU3RydWN0dXJlKHZtLCB0aGlz
LCBtX29iamVjdFByb3RvdHlwZS5nZXQoKSkpOwogICAgIG1fY2FsbGJhY2tPYmplY3RTdHJ1Y3R1
cmUuc2V0KHZtLCB0aGlzLCBKU0NhbGxiYWNrT2JqZWN0PEpTRGVzdHJ1Y3RpYmxlT2JqZWN0Pjo6
Y3JlYXRlU3RydWN0dXJlKHZtLCB0aGlzLCBtX29iamVjdFByb3RvdHlwZS5nZXQoKSkpOworCiAj
aWYgSlNDX09CSkNfQVBJX0VOQUJMRUQKICAgICBtX29iamNDYWxsYmFja0Z1bmN0aW9uU3RydWN0
dXJlLnNldCh2bSwgdGhpcywgT2JqQ0NhbGxiYWNrRnVuY3Rpb246OmNyZWF0ZVN0cnVjdHVyZSh2
bSwgdGhpcywgbV9mdW5jdGlvblByb3RvdHlwZS5nZXQoKSkpOwogICAgIG1fb2JqY1dyYXBwZXJP
YmplY3RTdHJ1Y3R1cmUuc2V0KHZtLCB0aGlzLCBKU0NhbGxiYWNrT2JqZWN0PEpTQVBJV3JhcHBl
ck9iamVjdD46OmNyZWF0ZVN0cnVjdHVyZSh2bSwgdGhpcywgbV9vYmplY3RQcm90b3R5cGUuZ2V0
KCkpKTsKQEAgLTMzNiwxMCArMzM5LDkgQEAgdm9pZCBKU0dsb2JhbE9iamVjdDo6aW5pdChWTSYg
dm0pCiAgICAgbV9yZWdFeHBQcm90b3R5cGUuc2V0KHZtLCB0aGlzLCBSZWdFeHBQcm90b3R5cGU6
OmNyZWF0ZSh2bSwgUmVnRXhwUHJvdG90eXBlOjpjcmVhdGVTdHJ1Y3R1cmUodm0sIHRoaXMsIG1f
b2JqZWN0UHJvdG90eXBlLmdldCgpKSwgZW1wdHlSZWdleCkpOwogICAgIG1fcmVnRXhwU3RydWN0
dXJlLnNldCh2bSwgdGhpcywgUmVnRXhwT2JqZWN0OjpjcmVhdGVTdHJ1Y3R1cmUodm0sIHRoaXMs
IG1fcmVnRXhwUHJvdG90eXBlLmdldCgpKSk7CiAgICAgbV9yZWdFeHBNYXRjaGVzQXJyYXlTdHJ1
Y3R1cmUuc2V0KHZtLCB0aGlzLCBjcmVhdGVSZWdFeHBNYXRjaGVzQXJyYXlTdHJ1Y3R1cmUodm0s
ICp0aGlzKSk7Ci0gICAgCi0gICAgbV9wcm9taXNlUHJvdG90eXBlLnNldCh2bSwgdGhpcywgSlNQ
cm9taXNlUHJvdG90eXBlOjpjcmVhdGUoZXhlYywgdGhpcywgSlNQcm9taXNlUHJvdG90eXBlOjpj
cmVhdGVTdHJ1Y3R1cmUodm0sIHRoaXMsIG1fb2JqZWN0UHJvdG90eXBlLmdldCgpKSkpOwotICAg
IG1fcHJvbWlzZVN0cnVjdHVyZS5zZXQodm0sIHRoaXMsIEpTUHJvbWlzZTo6Y3JlYXRlU3RydWN0
dXJlKHZtLCB0aGlzLCBtX3Byb21pc2VQcm90b3R5cGUuZ2V0KCkpKTsKIAorICAgIG1fbW9kdWxl
UmVjb3JkU3RydWN0dXJlLnNldCh2bSwgdGhpcywgSlNNb2R1bGVSZWNvcmQ6OmNyZWF0ZVN0cnVj
dHVyZSh2bSwgdGhpcywgbV9vYmplY3RQcm90b3R5cGUuZ2V0KCkpKTsKKyAgICAKICNpZiBFTkFC
TEUoV0VCQVNTRU1CTFkpCiAgICAgbV93YXNtTW9kdWxlU3RydWN0dXJlLnNldCh2bSwgdGhpcywg
SlNXQVNNTW9kdWxlOjpjcmVhdGVTdHJ1Y3R1cmUodm0sIHRoaXMpKTsKICNlbmRpZgpAQCAtMzk3
LDEzICszOTksMTEgQEAgbV8gIyMgbG93ZXJOYW1lICMjIFByb3RvdHlwZS0+cHV0RGlyZWN0V2l0
aG91dFRyYW5zaXRpb24odm0sIHZtLnByb3BlcnR5TmFtZXMtPmMKICAgICBtX3N5bnRheEVycm9y
Q29uc3RydWN0b3Iuc2V0KHZtLCB0aGlzLCBOYXRpdmVFcnJvckNvbnN0cnVjdG9yOjpjcmVhdGUo
dm0sIHRoaXMsIG5hdGl2ZUVycm9yU3RydWN0dXJlLCBuYXRpdmVFcnJvclByb3RvdHlwZVN0cnVj
dHVyZSwgQVNDSUlMaXRlcmFsKCJTeW50YXhFcnJvciIpKSk7CiAgICAgbV90eXBlRXJyb3JDb25z
dHJ1Y3Rvci5zZXQodm0sIHRoaXMsIE5hdGl2ZUVycm9yQ29uc3RydWN0b3I6OmNyZWF0ZSh2bSwg
dGhpcywgbmF0aXZlRXJyb3JTdHJ1Y3R1cmUsIG5hdGl2ZUVycm9yUHJvdG90eXBlU3RydWN0dXJl
LCBBU0NJSUxpdGVyYWwoIlR5cGVFcnJvciIpKSk7CiAgICAgbV9VUklFcnJvckNvbnN0cnVjdG9y
LnNldCh2bSwgdGhpcywgTmF0aXZlRXJyb3JDb25zdHJ1Y3Rvcjo6Y3JlYXRlKHZtLCB0aGlzLCBu
YXRpdmVFcnJvclN0cnVjdHVyZSwgbmF0aXZlRXJyb3JQcm90b3R5cGVTdHJ1Y3R1cmUsIEFTQ0lJ
TGl0ZXJhbCgiVVJJRXJyb3IiKSkpOwotICAgIG1fcHJvbWlzZUNvbnN0cnVjdG9yLnNldCh2bSwg
dGhpcywgSlNQcm9taXNlQ29uc3RydWN0b3I6OmNyZWF0ZSh2bSwgSlNQcm9taXNlQ29uc3RydWN0
b3I6OmNyZWF0ZVN0cnVjdHVyZSh2bSwgdGhpcywgbV9mdW5jdGlvblByb3RvdHlwZS5nZXQoKSks
IG1fcHJvbWlzZVByb3RvdHlwZS5nZXQoKSkpOwogICAgIAogICAgIG1fb2JqZWN0UHJvdG90eXBl
LT5wdXREaXJlY3RXaXRob3V0VHJhbnNpdGlvbih2bSwgdm0ucHJvcGVydHlOYW1lcy0+Y29uc3Ry
dWN0b3IsIG9iamVjdENvbnN0cnVjdG9yLCBEb250RW51bSk7CiAgICAgbV9mdW5jdGlvblByb3Rv
dHlwZS0+cHV0RGlyZWN0V2l0aG91dFRyYW5zaXRpb24odm0sIHZtLnByb3BlcnR5TmFtZXMtPmNv
bnN0cnVjdG9yLCBmdW5jdGlvbkNvbnN0cnVjdG9yLCBEb250RW51bSk7CiAgICAgbV9hcnJheVBy
b3RvdHlwZS0+cHV0RGlyZWN0V2l0aG91dFRyYW5zaXRpb24odm0sIHZtLnByb3BlcnR5TmFtZXMt
PmNvbnN0cnVjdG9yLCBhcnJheUNvbnN0cnVjdG9yLCBEb250RW51bSk7CiAgICAgbV9yZWdFeHBQ
cm90b3R5cGUtPnB1dERpcmVjdFdpdGhvdXRUcmFuc2l0aW9uKHZtLCB2bS5wcm9wZXJ0eU5hbWVz
LT5jb25zdHJ1Y3RvciwgbV9yZWdFeHBDb25zdHJ1Y3Rvci5nZXQoKSwgRG9udEVudW0pOwotICAg
IG1fcHJvbWlzZVByb3RvdHlwZS0+cHV0RGlyZWN0V2l0aG91dFRyYW5zaXRpb24odm0sIHZtLnBy
b3BlcnR5TmFtZXMtPmNvbnN0cnVjdG9yLCBtX3Byb21pc2VDb25zdHJ1Y3Rvci5nZXQoKSwgRG9u
dEVudW0pOwogICAgIAogICAgIHB1dERpcmVjdFdpdGhvdXRUcmFuc2l0aW9uKHZtLCB2bS5wcm9w
ZXJ0eU5hbWVzLT5PYmplY3QsIG9iamVjdENvbnN0cnVjdG9yLCBEb250RW51bSk7CiAgICAgcHV0
RGlyZWN0V2l0aG91dFRyYW5zaXRpb24odm0sIHZtLnByb3BlcnR5TmFtZXMtPkZ1bmN0aW9uLCBm
dW5jdGlvbkNvbnN0cnVjdG9yLCBEb250RW51bSk7CkBAIC00MTUsNyArNDE1LDYgQEAgbV8gIyMg
bG93ZXJOYW1lICMjIFByb3RvdHlwZS0+cHV0RGlyZWN0V2l0aG91dFRyYW5zaXRpb24odm0sIHZt
LnByb3BlcnR5TmFtZXMtPmMKICAgICBwdXREaXJlY3RXaXRob3V0VHJhbnNpdGlvbih2bSwgdm0u
cHJvcGVydHlOYW1lcy0+U3ludGF4RXJyb3IsIG1fc3ludGF4RXJyb3JDb25zdHJ1Y3Rvci5nZXQo
KSwgRG9udEVudW0pOwogICAgIHB1dERpcmVjdFdpdGhvdXRUcmFuc2l0aW9uKHZtLCB2bS5wcm9w
ZXJ0eU5hbWVzLT5UeXBlRXJyb3IsIG1fdHlwZUVycm9yQ29uc3RydWN0b3IuZ2V0KCksIERvbnRF
bnVtKTsKICAgICBwdXREaXJlY3RXaXRob3V0VHJhbnNpdGlvbih2bSwgdm0ucHJvcGVydHlOYW1l
cy0+VVJJRXJyb3IsIG1fVVJJRXJyb3JDb25zdHJ1Y3Rvci5nZXQoKSwgRG9udEVudW0pOwotICAg
IHB1dERpcmVjdFdpdGhvdXRUcmFuc2l0aW9uKHZtLCB2bS5wcm9wZXJ0eU5hbWVzLT5Qcm9taXNl
LCBtX3Byb21pc2VDb25zdHJ1Y3Rvci5nZXQoKSwgRG9udEVudW0pOwogICAgIAogICAgIAogI2Rl
ZmluZSBQVVRfQ09OU1RSVUNUT1JfRk9SX1NJTVBMRV9UWVBFKGNhcGl0YWxOYW1lLCBsb3dlck5h
bWUsIHByb3Blck5hbWUsIGluc3RhbmNlVHlwZSwganNOYW1lKSBcCkBAIC00NDAsNyArNDM5LDcg
QEAgcHV0RGlyZWN0V2l0aG91dFRyYW5zaXRpb24odm0sIHZtLnByb3BlcnR5TmFtZXMtPiBqc05h
bWUsIGxvd2VyTmFtZSAjIyBDb25zdHJ1Y3QKICAgICBwdXREaXJlY3RXaXRob3V0VHJhbnNpdGlv
bih2bSwgdm0ucHJvcGVydHlOYW1lcy0+SlNPTiwgSlNPTk9iamVjdDo6Y3JlYXRlKHZtLCBKU09O
T2JqZWN0OjpjcmVhdGVTdHJ1Y3R1cmUodm0sIHRoaXMsIG1fb2JqZWN0UHJvdG90eXBlLmdldCgp
KSksIERvbnRFbnVtKTsKICAgICBwdXREaXJlY3RXaXRob3V0VHJhbnNpdGlvbih2bSwgdm0ucHJv
cGVydHlOYW1lcy0+TWF0aCwgTWF0aE9iamVjdDo6Y3JlYXRlKHZtLCB0aGlzLCBNYXRoT2JqZWN0
OjpjcmVhdGVTdHJ1Y3R1cmUodm0sIHRoaXMsIG1fb2JqZWN0UHJvdG90eXBlLmdldCgpKSksIERv
bnRFbnVtKTsKICAgICBwdXREaXJlY3RXaXRob3V0VHJhbnNpdGlvbih2bSwgdm0ucHJvcGVydHlO
YW1lcy0+UmVmbGVjdCwgUmVmbGVjdE9iamVjdDo6Y3JlYXRlKHZtLCB0aGlzLCBSZWZsZWN0T2Jq
ZWN0OjpjcmVhdGVTdHJ1Y3R1cmUodm0sIHRoaXMsIG1fb2JqZWN0UHJvdG90eXBlLmdldCgpKSks
IERvbnRFbnVtKTsKLSAgICAKKwogICAgIHN0ZDo6YXJyYXk8SW50ZXJuYWxGdW5jdGlvbiosIE5V
TUJFUl9PRl9UWVBFRF9BUlJBWV9UWVBFUz4gdHlwZWRBcnJheUNvbnN0cnVjdG9yczsKICAgICB0
eXBlZEFycmF5Q29uc3RydWN0b3JzW3RvSW5kZXgoVHlwZUludDgpXSA9IEpTSW50OEFycmF5Q29u
c3RydWN0b3I6OmNyZWF0ZSh2bSwgSlNJbnQ4QXJyYXlDb25zdHJ1Y3Rvcjo6Y3JlYXRlU3RydWN0
dXJlKHZtLCB0aGlzLCBtX2Z1bmN0aW9uUHJvdG90eXBlLmdldCgpKSwgbV90eXBlZEFycmF5c1t0
b0luZGV4KFR5cGVJbnQ4KV0ucHJvdG90eXBlLmdldCgpLCBBU0NJSUxpdGVyYWwoIkludDhBcnJh
eSIpKTsKICAgICB0eXBlZEFycmF5Q29uc3RydWN0b3JzW3RvSW5kZXgoVHlwZUludDE2KV0gPSBK
U0ludDE2QXJyYXlDb25zdHJ1Y3Rvcjo6Y3JlYXRlKHZtLCBKU0ludDE2QXJyYXlDb25zdHJ1Y3Rv
cjo6Y3JlYXRlU3RydWN0dXJlKHZtLCB0aGlzLCBtX2Z1bmN0aW9uUHJvdG90eXBlLmdldCgpKSwg
bV90eXBlZEFycmF5c1t0b0luZGV4KFR5cGVJbnQxNildLnByb3RvdHlwZS5nZXQoKSwgQVNDSUlM
aXRlcmFsKCJJbnQxNkFycmF5IikpOwpAQCAtNDU3LDcgKzQ1NiwxMSBAQCBwdXREaXJlY3RXaXRo
b3V0VHJhbnNpdGlvbih2bSwgdm0ucHJvcGVydHlOYW1lcy0+IGpzTmFtZSwgbG93ZXJOYW1lICMj
IENvbnN0cnVjdAogICAgICAgICBtX3R5cGVkQXJyYXlzW3R5cGVkQXJyYXlJbmRleF0ucHJvdG90
eXBlLT5wdXREaXJlY3RXaXRob3V0VHJhbnNpdGlvbih2bSwgdm0ucHJvcGVydHlOYW1lcy0+Y29u
c3RydWN0b3IsIHR5cGVkQXJyYXlDb25zdHJ1Y3RvcnNbdHlwZWRBcnJheUluZGV4XSwgRG9udEVu
dW0pOwogICAgICAgICBwdXREaXJlY3RXaXRob3V0VHJhbnNpdGlvbih2bSwgSWRlbnRpZmllcjo6
ZnJvbVN0cmluZyhleGVjLCB0eXBlZEFycmF5Q29uc3RydWN0b3JzW3R5cGVkQXJyYXlJbmRleF0t
Pm5hbWUoZXhlYykpLCB0eXBlZEFycmF5Q29uc3RydWN0b3JzW3R5cGVkQXJyYXlJbmRleF0sIERv
bnRFbnVtKTsKICAgICB9Ci0gICAgCisKKyAgICBtX21vZHVsZUxvYWRlci5zZXQodm0sIHRoaXMs
IE1vZHVsZUxvYWRlck9iamVjdDo6Y3JlYXRlKHZtLCB0aGlzLCBNb2R1bGVMb2FkZXJPYmplY3Q6
OmNyZWF0ZVN0cnVjdHVyZSh2bSwgdGhpcywgbV9vYmplY3RQcm90b3R5cGUuZ2V0KCkpKSk7Cisg
ICAgaWYgKE9wdGlvbnM6OmV4cG9zZUludGVybmFsTW9kdWxlTG9hZGVyKCkpCisgICAgICAgIHB1
dERpcmVjdFdpdGhvdXRUcmFuc2l0aW9uKHZtLCB2bS5wcm9wZXJ0eU5hbWVzLT5Mb2FkZXIsIG1f
bW9kdWxlTG9hZGVyLmdldCgpLCBEb250RW51bSk7CisKICAgICBKU0Z1bmN0aW9uKiBidWlsdGlu
TG9nID0gSlNGdW5jdGlvbjo6Y3JlYXRlKHZtLCB0aGlzLCAxLCB2bS5wcm9wZXJ0eU5hbWVzLT5l
bXB0eUlkZW50aWZpZXIuc3RyaW5nKCksIGdsb2JhbEZ1bmNCdWlsdGluTG9nKTsKIAogICAgIEpT
RnVuY3Rpb24qIHByaXZhdGVGdW5jQWJzID0gSlNGdW5jdGlvbjo6Y3JlYXRlKHZtLCB0aGlzLCAw
LCBTdHJpbmcoKSwgbWF0aFByb3RvRnVuY0FicywgQWJzSW50cmluc2ljKTsKQEAgLTQ5MSw3ICs0
OTQsNyBAQCBwdXREaXJlY3RXaXRob3V0VHJhbnNpdGlvbih2bSwgdm0ucHJvcGVydHlOYW1lcy0+
IGpzTmFtZSwgbG93ZXJOYW1lICMjIENvbnN0cnVjdAogICAgICAgICBHbG9iYWxQcm9wZXJ0eUlu
Zm8odm0ucHJvcGVydHlOYW1lcy0+YXJyYXlJdGVyYXRpb25LaW5kVmFsdWVQcml2YXRlTmFtZSwg
anNOdW1iZXIoQXJyYXlJdGVyYXRlVmFsdWUpLCBEb250RW51bSB8IERvbnREZWxldGUgfCBSZWFk
T25seSksCiAgICAgICAgIEdsb2JhbFByb3BlcnR5SW5mbyh2bS5wcm9wZXJ0eU5hbWVzLT5hcnJh
eUl0ZXJhdGlvbktpbmRLZXlWYWx1ZVByaXZhdGVOYW1lLCBqc051bWJlcihBcnJheUl0ZXJhdGVL
ZXlWYWx1ZSksIERvbnRFbnVtIHwgRG9udERlbGV0ZSB8IFJlYWRPbmx5KSwKICAgICAgICAgR2xv
YmFsUHJvcGVydHlJbmZvKHZtLnByb3BlcnR5TmFtZXMtPmJ1aWx0aW5OYW1lcygpLnN5bWJvbEl0
ZXJhdG9yUHJpdmF0ZU5hbWUoKSwgU3ltYm9sOjpjcmVhdGUodm0sIHN0YXRpY19jYXN0PFN5bWJv
bEltcGwmPigqdm0ucHJvcGVydHlOYW1lcy0+aXRlcmF0b3JTeW1ib2wuaW1wbCgpKSksIERvbnRF
bnVtIHwgRG9udERlbGV0ZSB8IFJlYWRPbmx5KSwKLSAgICAgICAgR2xvYmFsUHJvcGVydHlJbmZv
KHZtLnByb3BlcnR5TmFtZXMtPlByb21pc2VQcml2YXRlTmFtZSwgbV9wcm9taXNlQ29uc3RydWN0
b3IuZ2V0KCksIERvbnRFbnVtIHwgRG9udERlbGV0ZSB8IFJlYWRPbmx5KSwKKyAgICAgICAgR2xv
YmFsUHJvcGVydHlJbmZvKHZtLnByb3BlcnR5TmFtZXMtPlByb21pc2VQcml2YXRlTmFtZSwgcHJv
bWlzZUNvbnN0cnVjdG9yLCBEb250RW51bSB8IERvbnREZWxldGUgfCBSZWFkT25seSksCiAgICAg
ICAgIEdsb2JhbFByb3BlcnR5SW5mbyh2bS5wcm9wZXJ0eU5hbWVzLT5wcm9taXNlUGVuZGluZ1By
aXZhdGVOYW1lLCBqc051bWJlcihzdGF0aWNfY2FzdDx1bnNpZ25lZD4oSlNQcm9taXNlOjpTdGF0
dXM6OlBlbmRpbmcpKSwgRG9udEVudW0gfCBEb250RGVsZXRlIHwgUmVhZE9ubHkpLAogICAgICAg
ICBHbG9iYWxQcm9wZXJ0eUluZm8odm0ucHJvcGVydHlOYW1lcy0+YnVpbHRpbk5hbWVzKCkucHJv
bWlzZUZ1bGZpbGxlZFByaXZhdGVOYW1lKCksIGpzTnVtYmVyKHN0YXRpY19jYXN0PHVuc2lnbmVk
PihKU1Byb21pc2U6OlN0YXR1czo6RnVsZmlsbGVkKSksIERvbnRFbnVtIHwgRG9udERlbGV0ZSB8
IFJlYWRPbmx5KSwKICAgICAgICAgR2xvYmFsUHJvcGVydHlJbmZvKHZtLnByb3BlcnR5TmFtZXMt
PmJ1aWx0aW5OYW1lcygpLnByb21pc2VSZWplY3RlZFByaXZhdGVOYW1lKCksIGpzTnVtYmVyKHN0
YXRpY19jYXN0PHVuc2lnbmVkPihKU1Byb21pc2U6OlN0YXR1czo6UmVqZWN0ZWQpKSwgRG9udEVu
dW0gfCBEb250RGVsZXRlIHwgUmVhZE9ubHkpLApAQCAtNTA3LDcgKzUxMCwxMCBAQCBwdXREaXJl
Y3RXaXRob3V0VHJhbnNpdGlvbih2bSwgdm0ucHJvcGVydHlOYW1lcy0+IGpzTmFtZSwgbG93ZXJO
YW1lICMjIENvbnN0cnVjdAogICAgICAgICBHbG9iYWxQcm9wZXJ0eUluZm8odm0ucHJvcGVydHlO
YW1lcy0+YnVpbHRpbk5hbWVzKCkuY3JlYXRlUmVzb2x2aW5nRnVuY3Rpb25zUHJpdmF0ZU5hbWUo
KSwgSlNGdW5jdGlvbjo6Y3JlYXRlQnVpbHRpbkZ1bmN0aW9uKHZtLCBvcGVyYXRpb25zUHJvbWlz
ZUNyZWF0ZVJlc29sdmluZ0Z1bmN0aW9uc0NvZGVHZW5lcmF0b3Iodm0pLCB0aGlzKSwgRG9udEVu
dW0gfCBEb250RGVsZXRlIHwgUmVhZE9ubHkpLAogICAgICAgICBHbG9iYWxQcm9wZXJ0eUluZm8o
dm0ucHJvcGVydHlOYW1lcy0+YnVpbHRpbk5hbWVzKCkucHJvbWlzZVJlYWN0aW9uSm9iUHJpdmF0
ZU5hbWUoKSwgSlNGdW5jdGlvbjo6Y3JlYXRlQnVpbHRpbkZ1bmN0aW9uKHZtLCBvcGVyYXRpb25z
UHJvbWlzZVByb21pc2VSZWFjdGlvbkpvYkNvZGVHZW5lcmF0b3Iodm0pLCB0aGlzKSwgRG9udEVu
dW0gfCBEb250RGVsZXRlIHwgUmVhZE9ubHkpLAogICAgICAgICBHbG9iYWxQcm9wZXJ0eUluZm8o
dm0ucHJvcGVydHlOYW1lcy0+YnVpbHRpbk5hbWVzKCkucHJvbWlzZVJlc29sdmVUaGVuYWJsZUpv
YlByaXZhdGVOYW1lKCksIEpTRnVuY3Rpb246OmNyZWF0ZUJ1aWx0aW5GdW5jdGlvbih2bSwgb3Bl
cmF0aW9uc1Byb21pc2VQcm9taXNlUmVzb2x2ZVRoZW5hYmxlSm9iQ29kZUdlbmVyYXRvcih2bSks
IHRoaXMpLCBEb250RW51bSB8IERvbnREZWxldGUgfCBSZWFkT25seSksCisgICAgICAgIEdsb2Jh
bFByb3BlcnR5SW5mbyh2bS5wcm9wZXJ0eU5hbWVzLT5idWlsdGluTmFtZXMoKS5uZXdQcm9taXNl
RGVmZXJyZWRQcml2YXRlTmFtZSgpLCBtX25ld1Byb21pc2VEZWZlcnJlZEZ1bmN0aW9uLmdldCgp
LCBEb250RW51bSB8IERvbnREZWxldGUgfCBSZWFkT25seSksCisgICAgICAgIEdsb2JhbFByb3Bl
cnR5SW5mbyh2bS5wcm9wZXJ0eU5hbWVzLT5idWlsdGluTmFtZXMoKS5wcm9taXNlVGhlblByaXZh
dGVOYW1lKCksIEpTRnVuY3Rpb246OmNyZWF0ZUJ1aWx0aW5GdW5jdGlvbih2bSwgb3BlcmF0aW9u
c1Byb21pc2VQcm9taXNlVGhlbkNvZGVHZW5lcmF0b3Iodm0pLCB0aGlzKSwgRG9udEVudW0gfCBE
b250RGVsZXRlIHwgUmVhZE9ubHkpLAogICAgICAgICBHbG9iYWxQcm9wZXJ0eUluZm8odm0ucHJv
cGVydHlOYW1lcy0+YnVpbHRpbk5hbWVzKCkuSW5zcGVjdG9ySW5zdHJ1bWVudGF0aW9uUHJpdmF0
ZU5hbWUoKSwgSW5zcGVjdG9ySW5zdHJ1bWVudGF0aW9uT2JqZWN0OjpjcmVhdGUodm0sIHRoaXMs
IEluc3BlY3Rvckluc3RydW1lbnRhdGlvbk9iamVjdDo6Y3JlYXRlU3RydWN0dXJlKHZtLCB0aGlz
LCBtX29iamVjdFByb3RvdHlwZS5nZXQoKSkpLCBEb250RW51bSB8IERvbnREZWxldGUgfCBSZWFk
T25seSksCisgICAgICAgIEdsb2JhbFByb3BlcnR5SW5mbyh2bS5wcm9wZXJ0eU5hbWVzLT5NYXBQ
cml2YXRlTmFtZSwgbWFwQ29uc3RydWN0b3IsIERvbnRFbnVtIHwgRG9udERlbGV0ZSB8IFJlYWRP
bmx5KSwKICAgICB9OwogICAgIGFkZFN0YXRpY0dsb2JhbHMoc3RhdGljR2xvYmFscywgV1RGX0FS
UkFZX0xFTkdUSChzdGF0aWNHbG9iYWxzKSk7CiAgICAgCkBAIC03NTAsNyArNzU2LDYgQEAgdm9p
ZCBKU0dsb2JhbE9iamVjdDo6dmlzaXRDaGlsZHJlbihKU0NlbGwqIGNlbGwsIFNsb3RWaXNpdG9y
JiB2aXNpdG9yKQogICAgIHZpc2l0b3IuYXBwZW5kKCZ0aGlzT2JqZWN0LT5tX3R5cGVFcnJvckNv
bnN0cnVjdG9yKTsKICAgICB2aXNpdG9yLmFwcGVuZCgmdGhpc09iamVjdC0+bV9VUklFcnJvckNv
bnN0cnVjdG9yKTsKICAgICB2aXNpdG9yLmFwcGVuZCgmdGhpc09iamVjdC0+bV9vYmplY3RDb25z
dHJ1Y3Rvcik7Ci0gICAgdmlzaXRvci5hcHBlbmQoJnRoaXNPYmplY3QtPm1fcHJvbWlzZUNvbnN0
cnVjdG9yKTsKIAogICAgIHZpc2l0b3IuYXBwZW5kKCZ0aGlzT2JqZWN0LT5tX251bGxHZXR0ZXJG
dW5jdGlvbik7CiAgICAgdmlzaXRvci5hcHBlbmQoJnRoaXNPYmplY3QtPm1fbnVsbFNldHRlckZ1
bmN0aW9uKTsKQEAgLTc2NCwxMyArNzY5LDEzIEBAIHZvaWQgSlNHbG9iYWxPYmplY3Q6OnZpc2l0
Q2hpbGRyZW4oSlNDZWxsKiBjZWxsLCBTbG90VmlzaXRvciYgdmlzaXRvcikKICAgICB2aXNpdG9y
LmFwcGVuZCgmdGhpc09iamVjdC0+bV9pbml0aWFsaXplUHJvbWlzZUZ1bmN0aW9uKTsKICAgICB2
aXNpdG9yLmFwcGVuZCgmdGhpc09iamVjdC0+bV9uZXdQcm9taXNlRGVmZXJyZWRGdW5jdGlvbik7
CiAgICAgdmlzaXRvci5hcHBlbmQoJnRoaXNPYmplY3QtPm1fdGhyb3dUeXBlRXJyb3JHZXR0ZXJT
ZXR0ZXIpOworICAgIHZpc2l0b3IuYXBwZW5kKCZ0aGlzT2JqZWN0LT5tX21vZHVsZUxvYWRlcik7
CiAKICAgICB2aXNpdG9yLmFwcGVuZCgmdGhpc09iamVjdC0+bV9vYmplY3RQcm90b3R5cGUpOwog
ICAgIHZpc2l0b3IuYXBwZW5kKCZ0aGlzT2JqZWN0LT5tX2Z1bmN0aW9uUHJvdG90eXBlKTsKICAg
ICB2aXNpdG9yLmFwcGVuZCgmdGhpc09iamVjdC0+bV9hcnJheVByb3RvdHlwZSk7CiAgICAgdmlz
aXRvci5hcHBlbmQoJnRoaXNPYmplY3QtPm1fZXJyb3JQcm90b3R5cGUpOwogICAgIHZpc2l0b3Iu
YXBwZW5kKCZ0aGlzT2JqZWN0LT5tX2l0ZXJhdG9yUHJvdG90eXBlKTsKLSAgICB2aXNpdG9yLmFw
cGVuZCgmdGhpc09iamVjdC0+bV9wcm9taXNlUHJvdG90eXBlKTsKIAogICAgIHZpc2l0b3IuYXBw
ZW5kKCZ0aGlzT2JqZWN0LT5tX2RlYnVnZ2VyU2NvcGVTdHJ1Y3R1cmUpOwogICAgIHZpc2l0b3Iu
YXBwZW5kKCZ0aGlzT2JqZWN0LT5tX3dpdGhTY29wZVN0cnVjdHVyZSk7CkBAIC04MDEsMTAgKzgw
NiwxMCBAQCB2b2lkIEpTR2xvYmFsT2JqZWN0Ojp2aXNpdENoaWxkcmVuKEpTQ2VsbCogY2VsbCwg
U2xvdFZpc2l0b3ImIHZpc2l0b3IpCiAgICAgdmlzaXRvci5hcHBlbmQoJnRoaXNPYmplY3QtPm1f
c3ltYm9sT2JqZWN0U3RydWN0dXJlKTsKICAgICB2aXNpdG9yLmFwcGVuZCgmdGhpc09iamVjdC0+
bV9yZWdFeHBTdHJ1Y3R1cmUpOwogICAgIHZpc2l0b3IuYXBwZW5kKCZ0aGlzT2JqZWN0LT5tX3Jl
Z0V4cE1hdGNoZXNBcnJheVN0cnVjdHVyZSk7CisgICAgdmlzaXRvci5hcHBlbmQoJnRoaXNPYmpl
Y3QtPm1fbW9kdWxlUmVjb3JkU3RydWN0dXJlKTsKICAgICB2aXNpdG9yLmFwcGVuZCgmdGhpc09i
amVjdC0+bV9jb25zb2xlU3RydWN0dXJlKTsKICAgICB2aXNpdG9yLmFwcGVuZCgmdGhpc09iamVj
dC0+bV9kb2xsYXJWTVN0cnVjdHVyZSk7CiAgICAgdmlzaXRvci5hcHBlbmQoJnRoaXNPYmplY3Qt
Pm1faW50ZXJuYWxGdW5jdGlvblN0cnVjdHVyZSk7Ci0gICAgdmlzaXRvci5hcHBlbmQoJnRoaXNP
YmplY3QtPm1fcHJvbWlzZVN0cnVjdHVyZSk7CiAjaWYgRU5BQkxFKFdFQkFTU0VNQkxZKQogICAg
IHZpc2l0b3IuYXBwZW5kKCZ0aGlzT2JqZWN0LT5tX3dhc21Nb2R1bGVTdHJ1Y3R1cmUpOwogI2Vu
ZGlmCmRpZmYgLS1naXQgYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9KU0dsb2JhbE9i
amVjdC5oIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvSlNHbG9iYWxPYmplY3QuaApp
bmRleCA5OTg2YmNmNjI0NWUyY2M0NjgyMGIxMzEwMmIyMzQyOTAwZWMzZDdiLi5mMGE2NWQyN2U5
ZGRhZDIxYWVkZTI2YmY5Y2Q1YTZhZWRlYzA3MGQ4IDEwMDY0NAotLS0gYS9Tb3VyY2UvSmF2YVNj
cmlwdENvcmUvcnVudGltZS9KU0dsb2JhbE9iamVjdC5oCisrKyBiL1NvdXJjZS9KYXZhU2NyaXB0
Q29yZS9ydW50aW1lL0pTR2xvYmFsT2JqZWN0LmgKQEAgLTcwLDExICs3MCwxMyBAQCBjbGFzcyBH
ZXR0ZXJTZXR0ZXI7CiBjbGFzcyBHbG9iYWxDb2RlQmxvY2s7CiBjbGFzcyBJbnB1dEN1cnNvcjsK
IGNsYXNzIEpTR2xvYmFsT2JqZWN0RGVidWdnYWJsZTsKK2NsYXNzIEpTUHJvbWlzZTsKIGNsYXNz
IEpTUHJvbWlzZUNvbnN0cnVjdG9yOwogY2xhc3MgSlNQcm9taXNlUHJvdG90eXBlOwogY2xhc3Mg
SlNTdGFjazsKIGNsYXNzIExMSW50T2Zmc2V0c0V4dHJhY3RvcjsKIGNsYXNzIE1pY3JvdGFzazsK
K2NsYXNzIE1vZHVsZUxvYWRlck9iamVjdDsKIGNsYXNzIE5hdGl2ZUVycm9yQ29uc3RydWN0b3I7
CiBjbGFzcyBPYmplY3RDb25zdHJ1Y3RvcjsKIGNsYXNzIFByb2dyYW1Db2RlQmxvY2s7CkBAIC05
OSw2ICsxMDEsNyBAQCBzdHJ1Y3QgSGFzaFRhYmxlOwogICAgIG1hY3JvKEJvb2xlYW4sIGJvb2xl
YW4sIGJvb2xlYW5PYmplY3QsIEJvb2xlYW5PYmplY3QsIEJvb2xlYW4pIFwKICAgICBtYWNybyhO
dW1iZXIsIG51bWJlciwgbnVtYmVyT2JqZWN0LCBOdW1iZXJPYmplY3QsIE51bWJlcikgXAogICAg
IG1hY3JvKEVycm9yLCBlcnJvciwgZXJyb3IsIEVycm9ySW5zdGFuY2UsIEVycm9yKSBcCisgICAg
bWFjcm8oSlNQcm9taXNlLCBwcm9taXNlLCBwcm9taXNlLCBKU1Byb21pc2UsIFByb21pc2UpIFwK
ICAgICBtYWNybyhKU0FycmF5QnVmZmVyLCBhcnJheUJ1ZmZlciwgYXJyYXlCdWZmZXIsIEpTQXJy
YXlCdWZmZXIsIEFycmF5QnVmZmVyKSBcCiAgICAgREVGSU5FX1NUQU5EQVJEX0JVSUxUSU4obWFj
cm8sIFdlYWtNYXAsIHdlYWtNYXApIFwKICAgICBERUZJTkVfU1RBTkRBUkRfQlVJTFRJTihtYWNy
bywgV2Vha1NldCwgd2Vha1NldCkgXApAQCAtMTUwLDYgKzE1MywxOCBAQCBzdHJ1Y3QgR2xvYmFs
T2JqZWN0TWV0aG9kVGFibGUgewogCiAgICAgdHlwZWRlZiBib29sICgqU2hvdWxkSW50ZXJydXB0
U2NyaXB0QmVmb3JlVGltZW91dFB0cikoY29uc3QgSlNHbG9iYWxPYmplY3QqKTsKICAgICBTaG91
bGRJbnRlcnJ1cHRTY3JpcHRCZWZvcmVUaW1lb3V0UHRyIHNob3VsZEludGVycnVwdFNjcmlwdEJl
Zm9yZVRpbWVvdXQ7CisKKyAgICB0eXBlZGVmIEpTVmFsdWUgKCpMb2FkZXJSZXNvbHZlUHRyKShK
U0dsb2JhbE9iamVjdCosIEV4ZWNTdGF0ZSosIEpTVmFsdWUsIEpTVmFsdWUpOworICAgIExvYWRl
clJlc29sdmVQdHIgbG9hZGVyUmVzb2x2ZTsKKworICAgIHR5cGVkZWYgSlNWYWx1ZSAoKkxvYWRl
ckZldGNoUHRyKShKU0dsb2JhbE9iamVjdCosIEV4ZWNTdGF0ZSosIEpTVmFsdWUpOworICAgIExv
YWRlckZldGNoUHRyIGxvYWRlckZldGNoOworCisgICAgdHlwZWRlZiBKU1ZhbHVlICgqTG9hZGVy
VHJhbnNsYXRlUHRyKShKU0dsb2JhbE9iamVjdCosIEV4ZWNTdGF0ZSosIEpTVmFsdWUsIEpTVmFs
dWUpOworICAgIExvYWRlclRyYW5zbGF0ZVB0ciBsb2FkZXJUcmFuc2xhdGU7CisKKyAgICB0eXBl
ZGVmIEpTVmFsdWUgKCpMb2FkZXJJbnN0YW50aWF0ZVB0cikoSlNHbG9iYWxPYmplY3QqLCBFeGVj
U3RhdGUqLCBKU1ZhbHVlLCBKU1ZhbHVlKTsKKyAgICBMb2FkZXJJbnN0YW50aWF0ZVB0ciBsb2Fk
ZXJJbnN0YW50aWF0ZTsKIH07CiAKIGNsYXNzIEpTR2xvYmFsT2JqZWN0IDogcHVibGljIEpTU2Vn
bWVudGVkVmFyaWFibGVPYmplY3QgewpAQCAtMTgzLDcgKzE5OCw2IEBAIGNsYXNzIEpTR2xvYmFs
T2JqZWN0IDogcHVibGljIEpTU2VnbWVudGVkVmFyaWFibGVPYmplY3QgewogICAgIFdyaXRlQmFy
cmllcjxOYXRpdmVFcnJvckNvbnN0cnVjdG9yPiBtX3N5bnRheEVycm9yQ29uc3RydWN0b3I7CiAg
ICAgV3JpdGVCYXJyaWVyPE5hdGl2ZUVycm9yQ29uc3RydWN0b3I+IG1fdHlwZUVycm9yQ29uc3Ry
dWN0b3I7CiAgICAgV3JpdGVCYXJyaWVyPE5hdGl2ZUVycm9yQ29uc3RydWN0b3I+IG1fVVJJRXJy
b3JDb25zdHJ1Y3RvcjsKLSAgICBXcml0ZUJhcnJpZXI8SlNQcm9taXNlQ29uc3RydWN0b3I+IG1f
cHJvbWlzZUNvbnN0cnVjdG9yOwogICAgIFdyaXRlQmFycmllcjxPYmplY3RDb25zdHJ1Y3Rvcj4g
bV9vYmplY3RDb25zdHJ1Y3RvcjsKIAogICAgIFdyaXRlQmFycmllcjxOdWxsR2V0dGVyRnVuY3Rp
b24+IG1fbnVsbEdldHRlckZ1bmN0aW9uOwpAQCAtMjAwLDEyICsyMTQsMTMgQEAgY2xhc3MgSlNH
bG9iYWxPYmplY3QgOiBwdWJsaWMgSlNTZWdtZW50ZWRWYXJpYWJsZU9iamVjdCB7CiAgICAgV3Jp
dGVCYXJyaWVyPEpTRnVuY3Rpb24+IG1fbmV3UHJvbWlzZURlZmVycmVkRnVuY3Rpb247CiAgICAg
V3JpdGVCYXJyaWVyPEdldHRlclNldHRlcj4gbV90aHJvd1R5cGVFcnJvckdldHRlclNldHRlcjsK
IAorICAgIFdyaXRlQmFycmllcjxNb2R1bGVMb2FkZXJPYmplY3Q+IG1fbW9kdWxlTG9hZGVyOwor
CiAgICAgV3JpdGVCYXJyaWVyPE9iamVjdFByb3RvdHlwZT4gbV9vYmplY3RQcm90b3R5cGU7CiAg
ICAgV3JpdGVCYXJyaWVyPEZ1bmN0aW9uUHJvdG90eXBlPiBtX2Z1bmN0aW9uUHJvdG90eXBlOwog
ICAgIFdyaXRlQmFycmllcjxBcnJheVByb3RvdHlwZT4gbV9hcnJheVByb3RvdHlwZTsKICAgICBX
cml0ZUJhcnJpZXI8UmVnRXhwUHJvdG90eXBlPiBtX3JlZ0V4cFByb3RvdHlwZTsKICAgICBXcml0
ZUJhcnJpZXI8SXRlcmF0b3JQcm90b3R5cGU+IG1faXRlcmF0b3JQcm90b3R5cGU7Ci0gICAgV3Jp
dGVCYXJyaWVyPEpTUHJvbWlzZVByb3RvdHlwZT4gbV9wcm9taXNlUHJvdG90eXBlOwogCiAgICAg
V3JpdGVCYXJyaWVyPFN0cnVjdHVyZT4gbV9kZWJ1Z2dlclNjb3BlU3RydWN0dXJlOwogICAgIFdy
aXRlQmFycmllcjxTdHJ1Y3R1cmU+IG1fd2l0aFNjb3BlU3RydWN0dXJlOwpAQCAtMjQxLDcgKzI1
Niw3IEBAIGNsYXNzIEpTR2xvYmFsT2JqZWN0IDogcHVibGljIEpTU2VnbWVudGVkVmFyaWFibGVP
YmplY3QgewogICAgIFdyaXRlQmFycmllcjxTdHJ1Y3R1cmU+IG1faW50ZXJuYWxGdW5jdGlvblN0
cnVjdHVyZTsKICAgICBXcml0ZUJhcnJpZXI8U3RydWN0dXJlPiBtX2l0ZXJhdG9yUmVzdWx0U3Ry
dWN0dXJlOwogICAgIFdyaXRlQmFycmllcjxTdHJ1Y3R1cmU+IG1fcmVnRXhwTWF0Y2hlc0FycmF5
U3RydWN0dXJlOwotICAgIFdyaXRlQmFycmllcjxTdHJ1Y3R1cmU+IG1fcHJvbWlzZVN0cnVjdHVy
ZTsKKyAgICBXcml0ZUJhcnJpZXI8U3RydWN0dXJlPiBtX21vZHVsZVJlY29yZFN0cnVjdHVyZTsK
ICNpZiBFTkFCTEUoV0VCQVNTRU1CTFkpCiAgICAgV3JpdGVCYXJyaWVyPFN0cnVjdHVyZT4gbV93
YXNtTW9kdWxlU3RydWN0dXJlOwogI2VuZGlmCkBAIC0zODYsNyArNDAxLDYgQEAgY2xhc3MgSlNH
bG9iYWxPYmplY3QgOiBwdWJsaWMgSlNTZWdtZW50ZWRWYXJpYWJsZU9iamVjdCB7CiAgICAgTmF0
aXZlRXJyb3JDb25zdHJ1Y3Rvciogc3ludGF4RXJyb3JDb25zdHJ1Y3RvcigpIGNvbnN0IHsgcmV0
dXJuIG1fc3ludGF4RXJyb3JDb25zdHJ1Y3Rvci5nZXQoKTsgfQogICAgIE5hdGl2ZUVycm9yQ29u
c3RydWN0b3IqIHR5cGVFcnJvckNvbnN0cnVjdG9yKCkgY29uc3QgeyByZXR1cm4gbV90eXBlRXJy
b3JDb25zdHJ1Y3Rvci5nZXQoKTsgfQogICAgIE5hdGl2ZUVycm9yQ29uc3RydWN0b3IqIFVSSUVy
cm9yQ29uc3RydWN0b3IoKSBjb25zdCB7IHJldHVybiBtX1VSSUVycm9yQ29uc3RydWN0b3IuZ2V0
KCk7IH0KLSAgICBKU1Byb21pc2VDb25zdHJ1Y3RvciogcHJvbWlzZUNvbnN0cnVjdG9yKCkgY29u
c3QgeyByZXR1cm4gbV9wcm9taXNlQ29uc3RydWN0b3IuZ2V0KCk7IH0KIAogICAgIE51bGxHZXR0
ZXJGdW5jdGlvbiogbnVsbEdldHRlckZ1bmN0aW9uKCkgY29uc3QgeyByZXR1cm4gbV9udWxsR2V0
dGVyRnVuY3Rpb24uZ2V0KCk7IH0KICAgICBOdWxsU2V0dGVyRnVuY3Rpb24qIG51bGxTZXR0ZXJG
dW5jdGlvbigpIGNvbnN0IHsgcmV0dXJuIG1fbnVsbFNldHRlckZ1bmN0aW9uLmdldCgpOyB9CkBA
IC00MDcsNiArNDIxLDggQEAgY2xhc3MgSlNHbG9iYWxPYmplY3QgOiBwdWJsaWMgSlNTZWdtZW50
ZWRWYXJpYWJsZU9iamVjdCB7CiAgICAgICAgIHJldHVybiBtX3Rocm93VHlwZUVycm9yR2V0dGVy
U2V0dGVyLmdldCgpOwogICAgIH0KIAorICAgIE1vZHVsZUxvYWRlck9iamVjdCogbW9kdWxlTG9h
ZGVyKCkgY29uc3QgeyByZXR1cm4gbV9tb2R1bGVMb2FkZXIuZ2V0KCk7IH0KKwogICAgIE9iamVj
dFByb3RvdHlwZSogb2JqZWN0UHJvdG90eXBlKCkgY29uc3QgeyByZXR1cm4gbV9vYmplY3RQcm90
b3R5cGUuZ2V0KCk7IH0KICAgICBGdW5jdGlvblByb3RvdHlwZSogZnVuY3Rpb25Qcm90b3R5cGUo
KSBjb25zdCB7IHJldHVybiBtX2Z1bmN0aW9uUHJvdG90eXBlLmdldCgpOyB9CiAgICAgQXJyYXlQ
cm90b3R5cGUqIGFycmF5UHJvdG90eXBlKCkgY29uc3QgeyByZXR1cm4gbV9hcnJheVByb3RvdHlw
ZS5nZXQoKTsgfQpAQCAtNDE4LDcgKzQzNCw2IEBAIGNsYXNzIEpTR2xvYmFsT2JqZWN0IDogcHVi
bGljIEpTU2VnbWVudGVkVmFyaWFibGVPYmplY3QgewogICAgIFJlZ0V4cFByb3RvdHlwZSogcmVn
RXhwUHJvdG90eXBlKCkgY29uc3QgeyByZXR1cm4gbV9yZWdFeHBQcm90b3R5cGUuZ2V0KCk7IH0K
ICAgICBFcnJvclByb3RvdHlwZSogZXJyb3JQcm90b3R5cGUoKSBjb25zdCB7IHJldHVybiBtX2Vy
cm9yUHJvdG90eXBlLmdldCgpOyB9CiAgICAgSXRlcmF0b3JQcm90b3R5cGUqIGl0ZXJhdG9yUHJv
dG90eXBlKCkgY29uc3QgeyByZXR1cm4gbV9pdGVyYXRvclByb3RvdHlwZS5nZXQoKTsgfQotICAg
IEpTUHJvbWlzZVByb3RvdHlwZSogcHJvbWlzZVByb3RvdHlwZSgpIGNvbnN0IHsgcmV0dXJuIG1f
cHJvbWlzZVByb3RvdHlwZS5nZXQoKTsgfQogCiAgICAgU3RydWN0dXJlKiBkZWJ1Z2dlclNjb3Bl
U3RydWN0dXJlKCkgY29uc3QgeyByZXR1cm4gbV9kZWJ1Z2dlclNjb3BlU3RydWN0dXJlLmdldCgp
OyB9CiAgICAgU3RydWN0dXJlKiB3aXRoU2NvcGVTdHJ1Y3R1cmUoKSBjb25zdCB7IHJldHVybiBt
X3dpdGhTY29wZVN0cnVjdHVyZS5nZXQoKTsgfQpAQCAtNDc1LDcgKzQ5MCw3IEBAIGNsYXNzIEpT
R2xvYmFsT2JqZWN0IDogcHVibGljIEpTU2VnbWVudGVkVmFyaWFibGVPYmplY3QgewogICAgIFN0
cnVjdHVyZSogaXRlcmF0b3JSZXN1bHRTdHJ1Y3R1cmUoKSBjb25zdCB7IHJldHVybiBtX2l0ZXJh
dG9yUmVzdWx0U3RydWN0dXJlLmdldCgpOyB9CiAgICAgc3RhdGljIHB0cmRpZmZfdCBpdGVyYXRv
clJlc3VsdFN0cnVjdHVyZU9mZnNldCgpIHsgcmV0dXJuIE9CSkVDVF9PRkZTRVRPRihKU0dsb2Jh
bE9iamVjdCwgbV9pdGVyYXRvclJlc3VsdFN0cnVjdHVyZSk7IH0KICAgICBTdHJ1Y3R1cmUqIHJl
Z0V4cE1hdGNoZXNBcnJheVN0cnVjdHVyZSgpIGNvbnN0IHsgcmV0dXJuIG1fcmVnRXhwTWF0Y2hl
c0FycmF5U3RydWN0dXJlLmdldCgpOyB9Ci0gICAgU3RydWN0dXJlKiBwcm9taXNlU3RydWN0dXJl
KCkgY29uc3QgeyByZXR1cm4gbV9wcm9taXNlU3RydWN0dXJlLmdldCgpOyB9CisgICAgU3RydWN0
dXJlKiBtb2R1bGVSZWNvcmRTdHJ1Y3R1cmUoKSBjb25zdCB7IHJldHVybiBtX21vZHVsZVJlY29y
ZFN0cnVjdHVyZS5nZXQoKTsgfQogI2lmIEVOQUJMRShXRUJBU1NFTUJMWSkKICAgICBTdHJ1Y3R1
cmUqIHdhc21Nb2R1bGVTdHJ1Y3R1cmUoKSBjb25zdCB7IHJldHVybiBtX3dhc21Nb2R1bGVTdHJ1
Y3R1cmUuZ2V0KCk7IH0KICNlbmRpZgpkaWZmIC0tZ2l0IGEvU291cmNlL0phdmFTY3JpcHRDb3Jl
L3J1bnRpbWUvSlNNb2R1bGVSZWNvcmQuY3BwIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRp
bWUvSlNNb2R1bGVSZWNvcmQuY3BwCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAuLjdkZTE4NjA5NDBjZTE5Y2U1MDhjMTIw
MjgyZTk0NGYzY2E0MjA1ZDkKLS0tIC9kZXYvbnVsbAorKysgYi9Tb3VyY2UvSmF2YVNjcmlwdENv
cmUvcnVudGltZS9KU01vZHVsZVJlY29yZC5jcHAKQEAgLTAsMCArMSwxMTMgQEAKKy8qCisgKiBD
b3B5cmlnaHQgKEMpIDIwMTUgQXBwbGUgSW5jLiBBbGwgcmlnaHRzIHJlc2VydmVkLgorICoKKyAq
IFJlZGlzdHJpYnV0aW9uIGFuZCB1c2UgaW4gc291cmNlIGFuZCBiaW5hcnkgZm9ybXMsIHdpdGgg
b3Igd2l0aG91dAorICogbW9kaWZpY2F0aW9uLCBhcmUgcGVybWl0dGVkIHByb3ZpZGVkIHRoYXQg
dGhlIGZvbGxvd2luZyBjb25kaXRpb25zCisgKiBhcmUgbWV0OgorICogMS4gUmVkaXN0cmlidXRp
b25zIG9mIHNvdXJjZSBjb2RlIG11c3QgcmV0YWluIHRoZSBhYm92ZSBjb3B5cmlnaHQKKyAqICAg
IG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xh
aW1lci4KKyAqIDIuIFJlZGlzdHJpYnV0aW9ucyBpbiBiaW5hcnkgZm9ybSBtdXN0IHJlcHJvZHVj
ZSB0aGUgYWJvdmUgY29weXJpZ2h0CisgKiAgICBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRp
b25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIgaW4gdGhlCisgKiAgICBkb2N1bWVudGF0
aW9uIGFuZC9vciBvdGhlciBtYXRlcmlhbHMgcHJvdmlkZWQgd2l0aCB0aGUgZGlzdHJpYnV0aW9u
LgorICoKKyAqIFRISVMgU09GVFdBUkUgSVMgUFJPVklERUQgQlkgQVBQTEUgSU5DLiBgYEFTIElT
JycgQU5EIEFOWQorICogRVhQUkVTUyBPUiBJTVBMSUVEIFdBUlJBTlRJRVMsIElOQ0xVRElORywg
QlVUIE5PVCBMSU1JVEVEIFRPLCBUSEUKKyAqIElNUExJRUQgV0FSUkFOVElFUyBPRiBNRVJDSEFO
VEFCSUxJVFkgQU5EIEZJVE5FU1MgRk9SIEEgUEFSVElDVUxBUgorICogUFVSUE9TRSBBUkUgRElT
Q0xBSU1FRC4gIElOIE5PIEVWRU5UIFNIQUxMIEFQUExFIElOQy4gT1IKKyAqIENPTlRSSUJVVE9S
UyBCRSBMSUFCTEUgRk9SIEFOWSBESVJFQ1QsIElORElSRUNULCBJTkNJREVOVEFMLCBTUEVDSUFM
LAorICogRVhFTVBMQVJZLCBPUiBDT05TRVFVRU5USUFMIERBTUFHRVMgKElOQ0xVRElORywgQlVU
IE5PVCBMSU1JVEVEIFRPLAorICogUFJPQ1VSRU1FTlQgT0YgU1VCU1RJVFVURSBHT09EUyBPUiBT
RVJWSUNFUzsgTE9TUyBPRiBVU0UsIERBVEEsIE9SCisgKiBQUk9GSVRTOyBPUiBCVVNJTkVTUyBJ
TlRFUlJVUFRJT04pIEhPV0VWRVIgQ0FVU0VEIEFORCBPTiBBTlkgVEhFT1JZCisgKiBPRiBMSUFC
SUxJVFksIFdIRVRIRVIgSU4gQ09OVFJBQ1QsIFNUUklDVCBMSUFCSUxJVFksIE9SIFRPUlQKKyAq
IChJTkNMVURJTkcgTkVHTElHRU5DRSBPUiBPVEhFUldJU0UpIEFSSVNJTkcgSU4gQU5ZIFdBWSBP
VVQgT0YgVEhFIFVTRQorICogT0YgVEhJUyBTT0ZUV0FSRSwgRVZFTiBJRiBBRFZJU0VEIE9GIFRI
RSBQT1NTSUJJTElUWSBPRiBTVUNIIERBTUFHRS4gCisgKi8KKworI2luY2x1ZGUgImNvbmZpZy5o
IgorI2luY2x1ZGUgIkpTTW9kdWxlUmVjb3JkLmgiCisKKyNpbmNsdWRlICJJZGVudGlmaWVySW5s
aW5lcy5oIgorI2luY2x1ZGUgIkpTQ0pTVmFsdWVJbmxpbmVzLmgiCisjaW5jbHVkZSAiSlNDZWxs
SW5saW5lcy5oIgorI2luY2x1ZGUgIlN0cnVjdHVyZUlubGluZXMuaCIKKworbmFtZXNwYWNlIEpT
QyB7CisKK2NvbnN0IENsYXNzSW5mbyBKU01vZHVsZVJlY29yZDo6c19pbmZvID0geyAiTW9kdWxl
UmVjb3JkIiwgJkJhc2U6OnNfaW5mbywgMCwgQ1JFQVRFX01FVEhPRF9UQUJMRShKU01vZHVsZVJl
Y29yZCkgfTsKKwordm9pZCBKU01vZHVsZVJlY29yZDo6ZGVzdHJveShKU0NlbGwqIGNlbGwpCit7
CisgICAgSlNNb2R1bGVSZWNvcmQqIHRoaXNPYmplY3QgPSBqc0Nhc3Q8SlNNb2R1bGVSZWNvcmQq
PihjZWxsKTsKKyAgICB0aGlzT2JqZWN0LT5KU01vZHVsZVJlY29yZDo6fkpTTW9kdWxlUmVjb3Jk
KCk7Cit9CisKKwordm9pZCBKU01vZHVsZVJlY29yZDo6ZmluaXNoQ3JlYXRpb24oVk0mIHZtKQor
eworICAgIEJhc2U6OmZpbmlzaENyZWF0aW9uKHZtKTsKKyAgICBBU1NFUlQoaW5oZXJpdHMoaW5m
bygpKSk7CisgICAgcHV0RGlyZWN0KHZtLCBJZGVudGlmaWVyOjpmcm9tU3RyaW5nKCZ2bSwgQVND
SUlMaXRlcmFsKCJyZWdpc3RyeUVudHJ5IikpLCBqc1VuZGVmaW5lZCgpKTsKK30KKworYXV0byBK
U01vZHVsZVJlY29yZDo6RXhwb3J0RW50cnk6OmNyZWF0ZUxvY2FsKGNvbnN0IElkZW50aWZpZXIm
IGV4cG9ydE5hbWUsIGNvbnN0IElkZW50aWZpZXImIGxvY2FsTmFtZSwgY29uc3QgVmFyaWFibGVF
bnZpcm9ubWVudEVudHJ5JiB2YXJpYWJsZSkgLT4gRXhwb3J0RW50cnkKK3sKKyAgICByZXR1cm4g
RXhwb3J0RW50cnkgeyBUeXBlOjpMb2NhbCwgZXhwb3J0TmFtZSwgSWRlbnRpZmllcigpLCBJZGVu
dGlmaWVyKCksIGxvY2FsTmFtZSwgdmFyaWFibGUgfTsKK30KKworYXV0byBKU01vZHVsZVJlY29y
ZDo6RXhwb3J0RW50cnk6OmNyZWF0ZU5hbWVzcGFjZShjb25zdCBJZGVudGlmaWVyJiBleHBvcnRO
YW1lLCBjb25zdCBJZGVudGlmaWVyJiBtb2R1bGVOYW1lKSAtPiBFeHBvcnRFbnRyeQoreworICAg
IHJldHVybiBFeHBvcnRFbnRyeSB7IFR5cGU6Ok5hbWVzcGFjZSwgZXhwb3J0TmFtZSwgbW9kdWxl
TmFtZSwgSWRlbnRpZmllcigpLCBJZGVudGlmaWVyKCksIFZhcmlhYmxlRW52aXJvbm1lbnRFbnRy
eSgpIH07Cit9CisKK2F1dG8gSlNNb2R1bGVSZWNvcmQ6OkV4cG9ydEVudHJ5OjpjcmVhdGVJbmRp
cmVjdChjb25zdCBJZGVudGlmaWVyJiBleHBvcnROYW1lLCBjb25zdCBJZGVudGlmaWVyJiBpbXBv
cnROYW1lLCBjb25zdCBJZGVudGlmaWVyJiBtb2R1bGVOYW1lKSAtPiBFeHBvcnRFbnRyeQorewor
ICAgIHJldHVybiBFeHBvcnRFbnRyeSB7IFR5cGU6OkluZGlyZWN0LCBleHBvcnROYW1lLCBtb2R1
bGVOYW1lLCBpbXBvcnROYW1lLCBJZGVudGlmaWVyKCksIFZhcmlhYmxlRW52aXJvbm1lbnRFbnRy
eSgpIH07Cit9CisKK3N0YXRpYyBTdHJpbmcgcHJpbnRhYmxlTmFtZShjb25zdCBSZWZQdHI8VW5p
cXVlZFN0cmluZ0ltcGw+JiB1aWQpCit7CisgICAgaWYgKHVpZC0+aXNTeW1ib2woKSkKKyAgICAg
ICAgcmV0dXJuIHVpZC5nZXQoKTsKKyAgICByZXR1cm4gV1RGOjptYWtlU3RyaW5nKCInIiwgU3Ry
aW5nKHVpZC5nZXQoKSksICInIik7Cit9CisKK3N0YXRpYyBTdHJpbmcgcHJpbnRhYmxlTmFtZShj
b25zdCBJZGVudGlmaWVyJiBpZGVudCkKK3sKKyAgICByZXR1cm4gcHJpbnRhYmxlTmFtZShpZGVu
dC5pbXBsKCkpOworfQorCisKK3ZvaWQgSlNNb2R1bGVSZWNvcmQ6OmR1bXAoKQoreworICAgIGRh
dGFMb2coIlxuQW5hbHl6aW5nIE1vZHVsZVJlY29yZFxuIik7CisKKyAgICBkYXRhTG9nKCIgICAg
RGVwZW5kZW5jaWVzOiAiLCBtX3JlcXVlc3RlZE1vZHVsZXMuc2l6ZSgpLCAiIG1vZHVsZXNcbiIp
OworICAgIGZvciAoY29uc3QgYXV0byYgbW9kdWxlTmFtZSA6IG1fcmVxdWVzdGVkTW9kdWxlcykK
KyAgICAgICAgZGF0YUxvZygiICAgICAgbW9kdWxlKCIsIHByaW50YWJsZU5hbWUobW9kdWxlTmFt
ZSksICIpXG4iKTsKKworICAgIGRhdGFMb2coIiAgICBJbXBvcnQ6ICIsIG1faW1wb3J0RW50cmll
cy5zaXplKCksICIgZW50cmllc1xuIik7CisgICAgZm9yIChjb25zdCBhdXRvJiBwYWlyIDogbV9p
bXBvcnRFbnRyaWVzKQorICAgICAgICBkYXRhTG9nKCIgICAgICBpbXBvcnQoIiwgcHJpbnRhYmxl
TmFtZShwYWlyLnZhbHVlLmltcG9ydE5hbWUpLCAiKSwgbG9jYWwoIiwgcHJpbnRhYmxlTmFtZShw
YWlyLnZhbHVlLmxvY2FsTmFtZSksICIpLCBtb2R1bGUoIiwgcHJpbnRhYmxlTmFtZShwYWlyLnZh
bHVlLm1vZHVsZVJlcXVlc3QpLCAiKVxuIik7CisKKyAgICBkYXRhTG9nKCIgICAgRXhwb3J0OiAi
LCBtX2V4cG9ydEVudHJpZXMuc2l6ZSgpLCAiIGVudHJpZXNcbiIpOworICAgIGZvciAoY29uc3Qg
YXV0byYgcGFpciA6IG1fZXhwb3J0RW50cmllcykgeworICAgICAgICBjb25zdCBFeHBvcnRFbnRy
eSYgZW50cnkgPSBwYWlyLnZhbHVlOworICAgICAgICBzd2l0Y2ggKGVudHJ5LnR5cGUpIHsKKyAg
ICAgICAgY2FzZSBFeHBvcnRFbnRyeTo6VHlwZTo6TG9jYWw6CisgICAgICAgICAgICBkYXRhTG9n
KCIgICAgICBbTG9jYWxdICIsICJleHBvcnQoIiwgcHJpbnRhYmxlTmFtZShlbnRyeS5leHBvcnRO
YW1lKSwgIiksIGxvY2FsKCIsIHByaW50YWJsZU5hbWUoZW50cnkubG9jYWxOYW1lKSwgIilcbiIp
OworICAgICAgICAgICAgYnJlYWs7CisKKyAgICAgICAgY2FzZSBFeHBvcnRFbnRyeTo6VHlwZTo6
TmFtZXNwYWNlOgorICAgICAgICAgICAgZGF0YUxvZygiICAgICAgW05hbWVzcGFjZV0gIiwgImV4
cG9ydCgiLCBwcmludGFibGVOYW1lKGVudHJ5LmV4cG9ydE5hbWUpLCAiKSwgbW9kdWxlKCIsIHBy
aW50YWJsZU5hbWUoZW50cnkubW9kdWxlTmFtZSksICIpXG4iKTsKKyAgICAgICAgICAgIGJyZWFr
OworCisgICAgICAgIGNhc2UgRXhwb3J0RW50cnk6OlR5cGU6OkluZGlyZWN0OgorICAgICAgICAg
ICAgZGF0YUxvZygiICAgICAgW0luZGlyZWN0XSAiLCAiZXhwb3J0KCIsIHByaW50YWJsZU5hbWUo
ZW50cnkuZXhwb3J0TmFtZSksICIpLCBpbXBvcnQoIiwgcHJpbnRhYmxlTmFtZShlbnRyeS5pbXBv
cnROYW1lKSwgIiksIG1vZHVsZSgiLCBwcmludGFibGVOYW1lKGVudHJ5Lm1vZHVsZU5hbWUpLCAi
KVxuIik7CisgICAgICAgICAgICBicmVhazsKKyAgICAgICAgfQorICAgIH0KKyAgICBmb3IgKGNv
bnN0IGF1dG8mIG1vZHVsZU5hbWUgOiBtX3N0YXJFeHBvcnRFbnRyaWVzKQorICAgICAgICBkYXRh
TG9nKCIgICAgICBbU3Rhcl0gbW9kdWxlKCIsIHByaW50YWJsZU5hbWUobW9kdWxlTmFtZS5nZXQo
KSksICIpXG4iKTsKK30KKworfSAvLyBuYW1lc3BhY2UgSlNDCmRpZmYgLS1naXQgYS9Tb3VyY2Uv
SmF2YVNjcmlwdENvcmUvcnVudGltZS9KU01vZHVsZVJlY29yZC5oIGIvU291cmNlL0phdmFTY3Jp
cHRDb3JlL3J1bnRpbWUvSlNNb2R1bGVSZWNvcmQuaApuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRl
eCAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwLi45NmUyZmRmNDUwZTVk
Yjg3MjljNWZjYzU1ZmI3OGQyYzRmNmM5NzgxCi0tLSAvZGV2L251bGwKKysrIGIvU291cmNlL0ph
dmFTY3JpcHRDb3JlL3J1bnRpbWUvSlNNb2R1bGVSZWNvcmQuaApAQCAtMCwwICsxLDE1NyBAQAor
LyoKKyAqIENvcHlyaWdodCAoQykgMjAxNSBBcHBsZSBJbmMuIEFsbCByaWdodHMgcmVzZXJ2ZWQu
CisgKgorICogUmVkaXN0cmlidXRpb24gYW5kIHVzZSBpbiBzb3VyY2UgYW5kIGJpbmFyeSBmb3Jt
cywgd2l0aCBvciB3aXRob3V0CisgKiBtb2RpZmljYXRpb24sIGFyZSBwZXJtaXR0ZWQgcHJvdmlk
ZWQgdGhhdCB0aGUgZm9sbG93aW5nIGNvbmRpdGlvbnMKKyAqIGFyZSBtZXQ6CisgKiAxLiBSZWRp
c3RyaWJ1dGlvbnMgb2Ygc291cmNlIGNvZGUgbXVzdCByZXRhaW4gdGhlIGFib3ZlIGNvcHlyaWdo
dAorICogICAgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2lu
ZyBkaXNjbGFpbWVyLgorICogMi4gUmVkaXN0cmlidXRpb25zIGluIGJpbmFyeSBmb3JtIG11c3Qg
cmVwcm9kdWNlIHRoZSBhYm92ZSBjb3B5cmlnaHQKKyAqICAgIG5vdGljZSwgdGhpcyBsaXN0IG9m
IGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lciBpbiB0aGUKKyAqICAgIGRv
Y3VtZW50YXRpb24gYW5kL29yIG90aGVyIG1hdGVyaWFscyBwcm92aWRlZCB3aXRoIHRoZSBkaXN0
cmlidXRpb24uCisgKgorICogVEhJUyBTT0ZUV0FSRSBJUyBQUk9WSURFRCBCWSBBUFBMRSBJTkMu
IGBgQVMgSVMnJyBBTkQgQU5ZCisgKiBFWFBSRVNTIE9SIElNUExJRUQgV0FSUkFOVElFUywgSU5D
TFVESU5HLCBCVVQgTk9UIExJTUlURUQgVE8sIFRIRQorICogSU1QTElFRCBXQVJSQU5USUVTIE9G
IE1FUkNIQU5UQUJJTElUWSBBTkQgRklUTkVTUyBGT1IgQSBQQVJUSUNVTEFSCisgKiBQVVJQT1NF
IEFSRSBESVNDTEFJTUVELiAgSU4gTk8gRVZFTlQgU0hBTEwgQVBQTEUgSU5DLiBPUgorICogQ09O
VFJJQlVUT1JTIEJFIExJQUJMRSBGT1IgQU5ZIERJUkVDVCwgSU5ESVJFQ1QsIElOQ0lERU5UQUws
IFNQRUNJQUwsCisgKiBFWEVNUExBUlksIE9SIENPTlNFUVVFTlRJQUwgREFNQUdFUyAoSU5DTFVE
SU5HLCBCVVQgTk9UIExJTUlURUQgVE8sCisgKiBQUk9DVVJFTUVOVCBPRiBTVUJTVElUVVRFIEdP
T0RTIE9SIFNFUlZJQ0VTOyBMT1NTIE9GIFVTRSwgREFUQSwgT1IKKyAqIFBST0ZJVFM7IE9SIEJV
U0lORVNTIElOVEVSUlVQVElPTikgSE9XRVZFUiBDQVVTRUQgQU5EIE9OIEFOWSBUSEVPUlkKKyAq
IE9GIExJQUJJTElUWSwgV0hFVEhFUiBJTiBDT05UUkFDVCwgU1RSSUNUIExJQUJJTElUWSwgT1Ig
VE9SVAorICogKElOQ0xVRElORyBORUdMSUdFTkNFIE9SIE9USEVSV0lTRSkgQVJJU0lORyBJTiBB
TlkgV0FZIE9VVCBPRiBUSEUgVVNFCisgKiBPRiBUSElTIFNPRlRXQVJFLCBFVkVOIElGIEFEVklT
RUQgT0YgVEhFIFBPU1NJQklMSVRZIE9GIFNVQ0ggREFNQUdFLgorICovCisKKyNpZm5kZWYgSlNN
b2R1bGVSZWNvcmRfaAorI2RlZmluZSBKU01vZHVsZVJlY29yZF9oCisKKyNpbmNsdWRlICJJZGVu
dGlmaWVyLmgiCisjaW5jbHVkZSAiSlNEZXN0cnVjdGlibGVPYmplY3QuaCIKKyNpbmNsdWRlICJW
YXJpYWJsZUVudmlyb25tZW50LmgiCisjaW5jbHVkZSA8d3RmL0hhc2hNYXAuaD4KKyNpbmNsdWRl
IDx3dGYvTGlzdEhhc2hTZXQuaD4KKworbmFtZXNwYWNlIEpTQyB7CisKKy8vIEJhc2VkIG9uIHRo
ZSBTb3VyY2UgVGV4dCBNb2R1bGUgUmVjb3JkCisvLyBodHRwOi8vd3d3LmVjbWEtaW50ZXJuYXRp
b25hbC5vcmcvZWNtYS0yNjIvNi4wLyNzZWMtc291cmNlLXRleHQtbW9kdWxlLXJlY29yZHMKK2Ns
YXNzIEpTTW9kdWxlUmVjb3JkIDogcHVibGljIEpTRGVzdHJ1Y3RpYmxlT2JqZWN0IHsKK3B1Ymxp
YzoKKyAgICB0eXBlZGVmIEpTRGVzdHJ1Y3RpYmxlT2JqZWN0IEJhc2U7CisKKyAgICBzdHJ1Y3Qg
RXhwb3J0RW50cnkgeworICAgICAgICBlbnVtIGNsYXNzIFR5cGUgeworICAgICAgICAgICAgTG9j
YWwsCisgICAgICAgICAgICBOYW1lc3BhY2UsCisgICAgICAgICAgICBJbmRpcmVjdAorICAgICAg
ICB9OworCisgICAgICAgIHN0YXRpYyBFeHBvcnRFbnRyeSBjcmVhdGVMb2NhbChjb25zdCBJZGVu
dGlmaWVyJiBleHBvcnROYW1lLCBjb25zdCBJZGVudGlmaWVyJiBsb2NhbE5hbWUsIGNvbnN0IFZh
cmlhYmxlRW52aXJvbm1lbnRFbnRyeSYpOworICAgICAgICBzdGF0aWMgRXhwb3J0RW50cnkgY3Jl
YXRlTmFtZXNwYWNlKGNvbnN0IElkZW50aWZpZXImIGV4cG9ydE5hbWUsIGNvbnN0IElkZW50aWZp
ZXImIG1vZHVsZU5hbWUpOworICAgICAgICBzdGF0aWMgRXhwb3J0RW50cnkgY3JlYXRlSW5kaXJl
Y3QoY29uc3QgSWRlbnRpZmllciYgZXhwb3J0TmFtZSwgY29uc3QgSWRlbnRpZmllciYgaW1wb3J0
TmFtZSwgY29uc3QgSWRlbnRpZmllciYgbW9kdWxlTmFtZSk7CisKKyAgICAgICAgVHlwZSB0eXBl
OworICAgICAgICBJZGVudGlmaWVyIGV4cG9ydE5hbWU7CisgICAgICAgIElkZW50aWZpZXIgbW9k
dWxlTmFtZTsKKyAgICAgICAgSWRlbnRpZmllciBpbXBvcnROYW1lOworICAgICAgICBJZGVudGlm
aWVyIGxvY2FsTmFtZTsKKyAgICAgICAgVmFyaWFibGVFbnZpcm9ubWVudEVudHJ5IHZhcmlhYmxl
OworICAgIH07CisKKyAgICBzdHJ1Y3QgSW1wb3J0RW50cnkgeworICAgICAgICBJZGVudGlmaWVy
IG1vZHVsZVJlcXVlc3Q7CisgICAgICAgIElkZW50aWZpZXIgaW1wb3J0TmFtZTsKKyAgICAgICAg
SWRlbnRpZmllciBsb2NhbE5hbWU7CisKKyAgICAgICAgYm9vbCBpc05hbWVzcGFjZShWTSYgdm0p
IGNvbnN0CisgICAgICAgIHsKKyAgICAgICAgICAgIHJldHVybiBpbXBvcnROYW1lID09IHZtLnBy
b3BlcnR5TmFtZXMtPnRpbWVzSWRlbnRpZmllcjsKKyAgICAgICAgfQorICAgIH07CisKKyAgICB0
eXBlZGVmIFdURjo6TGlzdEhhc2hTZXQ8UmVmUHRyPFVuaXF1ZWRTdHJpbmdJbXBsPiwgSWRlbnRp
ZmllclJlcEhhc2g+IE9yZGVyZWRJZGVudGlmaWVyU2V0OworICAgIHR5cGVkZWYgSGFzaE1hcDxS
ZWZQdHI8VW5pcXVlZFN0cmluZ0ltcGw+LCBJbXBvcnRFbnRyeSwgSWRlbnRpZmllclJlcEhhc2gs
IEhhc2hUcmFpdHM8UmVmUHRyPFVuaXF1ZWRTdHJpbmdJbXBsPj4+IEltcG9ydE1hcDsKKyAgICB0
eXBlZGVmIEhhc2hNYXA8UmVmUHRyPFVuaXF1ZWRTdHJpbmdJbXBsPiwgRXhwb3J0RW50cnksIElk
ZW50aWZpZXJSZXBIYXNoLCBIYXNoVHJhaXRzPFJlZlB0cjxVbmlxdWVkU3RyaW5nSW1wbD4+PiBF
eHBvcnRNYXA7CisKKyAgICBERUNMQVJFX0VYUE9SVF9JTkZPOworCisgICAgc3RhdGljIFN0cnVj
dHVyZSogY3JlYXRlU3RydWN0dXJlKFZNJiB2bSwgSlNHbG9iYWxPYmplY3QqIGdsb2JhbE9iamVj
dCwgSlNWYWx1ZSBwcm90b3R5cGUpCisgICAgeworICAgICAgICByZXR1cm4gU3RydWN0dXJlOjpj
cmVhdGUodm0sIGdsb2JhbE9iamVjdCwgcHJvdG90eXBlLCBUeXBlSW5mbyhPYmplY3RUeXBlLCBT
dHJ1Y3R1cmVGbGFncyksIGluZm8oKSk7CisgICAgfQorCisgICAgc3RhdGljIEpTTW9kdWxlUmVj
b3JkKiBjcmVhdGUoVk0mIHZtLCBTdHJ1Y3R1cmUqIHN0cnVjdHVyZSkKKyAgICB7CisgICAgICAg
IEpTTW9kdWxlUmVjb3JkKiBpbnN0YW5jZSA9IG5ldyAoTm90TnVsbCwgYWxsb2NhdGVDZWxsPEpT
TW9kdWxlUmVjb3JkPih2bS5oZWFwKSkgSlNNb2R1bGVSZWNvcmQodm0sIHN0cnVjdHVyZSk7Cisg
ICAgICAgIGluc3RhbmNlLT5maW5pc2hDcmVhdGlvbih2bSk7CisgICAgICAgIHJldHVybiBpbnN0
YW5jZTsKKyAgICB9CisKKyAgICBzdGF0aWMgSlNNb2R1bGVSZWNvcmQqIGNyZWF0ZShFeGVjU3Rh
dGUqIGV4ZWMsIFN0cnVjdHVyZSogc3RydWN0dXJlKQorICAgIHsKKyAgICAgICAgcmV0dXJuIGNy
ZWF0ZShleGVjLT52bSgpLCBzdHJ1Y3R1cmUpOworICAgIH0KKworICAgIHZvaWQgYXBwZW5kUmVx
dWVzdGVkTW9kdWxlKGNvbnN0IElkZW50aWZpZXImKTsKKyAgICB2b2lkIGFkZFN0YXJFeHBvcnRF
bnRyeShjb25zdCBJZGVudGlmaWVyJik7CisgICAgdm9pZCBhZGRJbXBvcnRFbnRyeShjb25zdCBJ
bXBvcnRFbnRyeSYpOworICAgIHZvaWQgYWRkRXhwb3J0RW50cnkoY29uc3QgRXhwb3J0RW50cnkm
KTsKKworICAgIGNvbnN0IEltcG9ydEVudHJ5JiBsb29rVXBJbXBvcnRFbnRyeShjb25zdCBSZWZQ
dHI8VW5pcXVlZFN0cmluZ0ltcGw+JiBsb2NhbE5hbWUpOworCisgICAgY29uc3QgT3JkZXJlZElk
ZW50aWZpZXJTZXQmIHJlcXVlc3RlZE1vZHVsZXMoKSBjb25zdCB7IHJldHVybiBtX3JlcXVlc3Rl
ZE1vZHVsZXM7IH0KKworICAgIHZvaWQgZHVtcCgpOworCitwcml2YXRlOgorICAgIEpTTW9kdWxl
UmVjb3JkKFZNJiB2bSwgU3RydWN0dXJlKiBzdHJ1Y3R1cmUpCisgICAgICAgIDogQmFzZSh2bSwg
c3RydWN0dXJlKQorICAgIHsKKyAgICB9CisKKyAgICB2b2lkIGZpbmlzaENyZWF0aW9uKFZNJik7
CisKKyAgICBzdGF0aWMgdm9pZCBkZXN0cm95KEpTQ2VsbCopOworCisgICAgLy8gTWFwIGxvY2Fs
TmFtZSAtPiBJbXBvcnRFbnRyeS4KKyAgICBJbXBvcnRNYXAgbV9pbXBvcnRFbnRyaWVzOworCisg
ICAgLy8gTWFwIGV4cG9ydE5hbWUgLT4gRXhwb3J0RW50cnkuCisgICAgRXhwb3J0TWFwIG1fZXhw
b3J0RW50cmllczsKKworICAgIElkZW50aWZpZXJTZXQgbV9zdGFyRXhwb3J0RW50cmllczsKKwor
ICAgIC8vIFNhdmUgdGhlIG9jY3VycmVuY2Ugb3JkZXIgc2luY2UgdGhlIG1vZHVsZSBsb2FkZXIg
bG9hZHMgYW5kIHJ1bnMgdGhlIG1vZHVsZXMgaW4gdGhpcyBvcmRlci4KKyAgICAvLyBodHRwOi8v
d3d3LmVjbWEtaW50ZXJuYXRpb25hbC5vcmcvZWNtYS0yNjIvNi4wLyNzZWMtbW9kdWxlZXZhbHVh
dGlvbgorICAgIE9yZGVyZWRJZGVudGlmaWVyU2V0IG1fcmVxdWVzdGVkTW9kdWxlczsKK307CisK
K2lubGluZSB2b2lkIEpTTW9kdWxlUmVjb3JkOjphcHBlbmRSZXF1ZXN0ZWRNb2R1bGUoY29uc3Qg
SWRlbnRpZmllciYgbW9kdWxlTmFtZSkKK3sKKyAgICBtX3JlcXVlc3RlZE1vZHVsZXMuYWRkKG1v
ZHVsZU5hbWUuaW1wbCgpKTsKK30KKworaW5saW5lIHZvaWQgSlNNb2R1bGVSZWNvcmQ6OmFkZElt
cG9ydEVudHJ5KGNvbnN0IEltcG9ydEVudHJ5JiBlbnRyeSkKK3sKKyAgICBtX2ltcG9ydEVudHJp
ZXMuYWRkKGVudHJ5LmxvY2FsTmFtZS5pbXBsKCksIGVudHJ5KTsKK30KKworaW5saW5lIHZvaWQg
SlNNb2R1bGVSZWNvcmQ6OmFkZEV4cG9ydEVudHJ5KGNvbnN0IEV4cG9ydEVudHJ5JiBlbnRyeSkK
K3sKKyAgICBtX2V4cG9ydEVudHJpZXMuYWRkKGVudHJ5LmV4cG9ydE5hbWUuaW1wbCgpLCBlbnRy
eSk7Cit9CisKK2lubGluZSB2b2lkIEpTTW9kdWxlUmVjb3JkOjphZGRTdGFyRXhwb3J0RW50cnko
Y29uc3QgSWRlbnRpZmllciYgbW9kdWxlTmFtZSkKK3sKKyAgICBtX3N0YXJFeHBvcnRFbnRyaWVz
LmFkZChtb2R1bGVOYW1lLmltcGwoKSk7Cit9CisKK2lubGluZSBhdXRvIEpTTW9kdWxlUmVjb3Jk
Ojpsb29rVXBJbXBvcnRFbnRyeShjb25zdCBSZWZQdHI8VW5pcXVlZFN0cmluZ0ltcGw+JiBsb2Nh
bE5hbWUpIC0+IGNvbnN0IEltcG9ydEVudHJ5JgoreworICAgIHJldHVybiAoKm1faW1wb3J0RW50
cmllcy5maW5kKGxvY2FsTmFtZSkpLnZhbHVlOworfQorCit9IC8vIG5hbWVzcGFjZSBKU0MKKwor
I2VuZGlmIC8vIEpTTW9kdWxlUmVjb3JkX2gKZGlmZiAtLWdpdCBhL1NvdXJjZS9KYXZhU2NyaXB0
Q29yZS9ydW50aW1lL0pTUHJvbWlzZUNvbnN0cnVjdG9yLmNwcCBiL1NvdXJjZS9KYXZhU2NyaXB0
Q29yZS9ydW50aW1lL0pTUHJvbWlzZUNvbnN0cnVjdG9yLmNwcAppbmRleCA0NGUxZTczY2FiYTU1
YjBiZjU0MDkyZWM1ODRmZTY1N2U1NDYxYWU1Li4yNDNiYzUyN2M0NmZmZDVlZGFkMzY0ZDUyMDBm
ZjhlZjk0NmMyZDg1IDEwMDY0NAotLS0gYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9K
U1Byb21pc2VDb25zdHJ1Y3Rvci5jcHAKKysrIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRp
bWUvSlNQcm9taXNlQ29uc3RydWN0b3IuY3BwCkBAIC0yNiw2ICsyNiw3IEBACiAjaW5jbHVkZSAi
Y29uZmlnLmgiCiAjaW5jbHVkZSAiSlNQcm9taXNlQ29uc3RydWN0b3IuaCIKIAorI2luY2x1ZGUg
IkJ1aWx0aW5OYW1lcy5oIgogI2luY2x1ZGUgIkVycm9yLmgiCiAjaW5jbHVkZSAiRXhjZXB0aW9u
LmgiCiAjaW5jbHVkZSAiSXRlcmF0b3JPcGVyYXRpb25zLmgiCkBAIC04MSw2ICs4Miw3IEBAIHZv
aWQgSlNQcm9taXNlQ29uc3RydWN0b3I6OmZpbmlzaENyZWF0aW9uKFZNJiB2bSwgSlNQcm9taXNl
UHJvdG90eXBlKiBwcm9taXNlUHJvCiAgICAgQmFzZTo6ZmluaXNoQ3JlYXRpb24odm0sIEFTQ0lJ
TGl0ZXJhbCgiUHJvbWlzZSIpKTsKICAgICBwdXREaXJlY3RXaXRob3V0VHJhbnNpdGlvbih2bSwg
dm0ucHJvcGVydHlOYW1lcy0+cHJvdG90eXBlLCBwcm9taXNlUHJvdG90eXBlLCBEb250RW51bSB8
IERvbnREZWxldGUgfCBSZWFkT25seSk7CiAgICAgcHV0RGlyZWN0V2l0aG91dFRyYW5zaXRpb24o
dm0sIHZtLnByb3BlcnR5TmFtZXMtPmxlbmd0aCwganNOdW1iZXIoMSksIFJlYWRPbmx5IHwgRG9u
dEVudW0gfCBEb250RGVsZXRlKTsKKyAgICBwdXREaXJlY3RCdWlsdGluRnVuY3Rpb25XaXRob3V0
VHJhbnNpdGlvbih2bSwgZ2xvYmFsT2JqZWN0KCksIHZtLnByb3BlcnR5TmFtZXMtPmJ1aWx0aW5O
YW1lcygpLmFsbFByaXZhdGVOYW1lKCksIHByb21pc2VDb25zdHJ1Y3RvclByaXZhdGVBbGxDb2Rl
R2VuZXJhdG9yKHZtKSwgUmVhZE9ubHkgfCBEb250RW51bSB8IERvbnREZWxldGUpOwogfQogCiBz
dGF0aWMgRW5jb2RlZEpTVmFsdWUgSlNDX0hPU1RfQ0FMTCBjb25zdHJ1Y3RQcm9taXNlKEV4ZWNT
dGF0ZSogZXhlYykKZGlmZiAtLWdpdCBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL0pT
UHJvbWlzZURlZmVycmVkLmNwcCBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL0pTUHJv
bWlzZURlZmVycmVkLmNwcAppbmRleCA2ZjM1NDMyMzViZDhhMDkzODQxOGZmN2FmZmNkZDAyYjEz
NTg0NzQ3Li4wMDBiNjQ2MmRmYzdhYWQ0MjA4NGUyYzk2ZmUzMmU3ODA3YzcwMmRlIDEwMDY0NAot
LS0gYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9KU1Byb21pc2VEZWZlcnJlZC5jcHAK
KysrIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvSlNQcm9taXNlRGVmZXJyZWQuY3Bw
CkBAIC03Miw2ICs3MiwyOCBAQCBKU1Byb21pc2VEZWZlcnJlZDo6SlNQcm9taXNlRGVmZXJyZWQo
Vk0mIHZtKQogewogfQogCitzdGF0aWMgdm9pZCBjYWxsRnVuY3Rpb24oRXhlY1N0YXRlKiBleGVj
LCBKU1ZhbHVlIGZ1bmN0aW9uLCBKU1ZhbHVlIHZhbHVlKQoreworICAgIENhbGxEYXRhIGNhbGxE
YXRhOworICAgIENhbGxUeXBlIGNhbGxUeXBlID0gZ2V0Q2FsbERhdGEoZnVuY3Rpb24sIGNhbGxE
YXRhKTsKKyAgICBBU1NFUlQoY2FsbFR5cGUgIT0gQ2FsbFR5cGVOb25lKTsKKworICAgIE1hcmtl
ZEFyZ3VtZW50QnVmZmVyIGFyZ3VtZW50czsKKyAgICBhcmd1bWVudHMuYXBwZW5kKHZhbHVlKTsK
KworICAgIGNhbGwoZXhlYywgZnVuY3Rpb24sIGNhbGxUeXBlLCBjYWxsRGF0YSwganNVbmRlZmlu
ZWQoKSwgYXJndW1lbnRzKTsKK30KKwordm9pZCBKU1Byb21pc2VEZWZlcnJlZDo6cmVzb2x2ZShF
eGVjU3RhdGUqIGV4ZWMsIEpTVmFsdWUgdmFsdWUpCit7CisgICAgY2FsbEZ1bmN0aW9uKGV4ZWMs
IG1fcmVzb2x2ZS5nZXQoKSwgdmFsdWUpOworfQorCit2b2lkIEpTUHJvbWlzZURlZmVycmVkOjpy
ZWplY3QoRXhlY1N0YXRlKiBleGVjLCBKU1ZhbHVlIHJlYXNvbikKK3sKKyAgICBjYWxsRnVuY3Rp
b24oZXhlYywgbV9yZWplY3QuZ2V0KCksIHJlYXNvbik7Cit9CisKIHZvaWQgSlNQcm9taXNlRGVm
ZXJyZWQ6OmZpbmlzaENyZWF0aW9uKFZNJiB2bSwgSlNPYmplY3QqIHByb21pc2UsIEpTVmFsdWUg
cmVzb2x2ZSwgSlNWYWx1ZSByZWplY3QpCiB7CiAgICAgQmFzZTo6ZmluaXNoQ3JlYXRpb24odm0p
OwpkaWZmIC0tZ2l0IGEvU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvSlNQcm9taXNlRGVm
ZXJyZWQuaCBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL0pTUHJvbWlzZURlZmVycmVk
LmgKaW5kZXggZGVhMGQxN2Y5YjQyY2VjNjdhY2M4MjM1NTA2NTk1ZGI1MWU5NDEwNy4uNGEwYjRi
ODU2OGE0N2JkZDlmZTJjMzhmODUwNDc2ZjJkYjkxZGEyNyAxMDA2NDQKLS0tIGEvU291cmNlL0ph
dmFTY3JpcHRDb3JlL3J1bnRpbWUvSlNQcm9taXNlRGVmZXJyZWQuaAorKysgYi9Tb3VyY2UvSmF2
YVNjcmlwdENvcmUvcnVudGltZS9KU1Byb21pc2VEZWZlcnJlZC5oCkBAIC01MCw2ICs1MCw5IEBA
IGNsYXNzIEpTUHJvbWlzZURlZmVycmVkIGZpbmFsIDogcHVibGljIEpTQ2VsbCB7CiAgICAgSlNW
YWx1ZSByZXNvbHZlKCkgY29uc3QgeyByZXR1cm4gbV9yZXNvbHZlLmdldCgpOyB9CiAgICAgSlNW
YWx1ZSByZWplY3QoKSBjb25zdCB7IHJldHVybiBtX3JlamVjdC5nZXQoKTsgfQogCisgICAgSlNf
RVhQT1JUX1BSSVZBVEUgdm9pZCByZXNvbHZlKEV4ZWNTdGF0ZSosIEpTVmFsdWUpOworICAgIEpT
X0VYUE9SVF9QUklWQVRFIHZvaWQgcmVqZWN0KEV4ZWNTdGF0ZSosIEpTVmFsdWUpOworCiBwcml2
YXRlOgogICAgIEpTUHJvbWlzZURlZmVycmVkKFZNJik7CiAgICAgdm9pZCBmaW5pc2hDcmVhdGlv
bihWTSYsIEpTT2JqZWN0KiwgSlNWYWx1ZSwgSlNWYWx1ZSk7CmRpZmYgLS1naXQgYS9Tb3VyY2Uv
SmF2YVNjcmlwdENvcmUvcnVudGltZS9KU1Byb21pc2VQcm90b3R5cGUuY3BwIGIvU291cmNlL0ph
dmFTY3JpcHRDb3JlL3J1bnRpbWUvSlNQcm9taXNlUHJvdG90eXBlLmNwcAppbmRleCBhMGYxMDI0
MzIwYzE0YmIzNjRlODEwMzQzOTM1YWQ3OTNhN2RhNDg2Li4wMjY4MzczNDgwNzVkYTNlNDc4N2I0
YTJkZjRjZWVlYzUxY2E2MTlkIDEwMDY0NAotLS0gYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVu
dGltZS9KU1Byb21pc2VQcm90b3R5cGUuY3BwCisrKyBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9y
dW50aW1lL0pTUHJvbWlzZVByb3RvdHlwZS5jcHAKQEAgLTI2LDYgKzI2LDcgQEAKICNpbmNsdWRl
ICJjb25maWcuaCIKICNpbmNsdWRlICJKU1Byb21pc2VQcm90b3R5cGUuaCIKIAorI2luY2x1ZGUg
IkJ1aWx0aW5OYW1lcy5oIgogI2luY2x1ZGUgIkVycm9yLmgiCiAjaW5jbHVkZSAiSlNDQnVpbHRp
bnMuaCIKICNpbmNsdWRlICJKU0NKU1ZhbHVlSW5saW5lcy5oIgpAQCAtNTQsMTAgKzU1LDkgQEAg
Y29uc3QgQ2xhc3NJbmZvIEpTUHJvbWlzZVByb3RvdHlwZTo6c19pbmZvID0geyAiUHJvbWlzZVBy
b3RvdHlwZSIsICZKU05vbkZpbmFsT2IKIEBlbmQKICovCiAKLUpTUHJvbWlzZVByb3RvdHlwZSog
SlNQcm9taXNlUHJvdG90eXBlOjpjcmVhdGUoRXhlY1N0YXRlKiBleGVjLCBKU0dsb2JhbE9iamVj
dCosIFN0cnVjdHVyZSogc3RydWN0dXJlKQorSlNQcm9taXNlUHJvdG90eXBlKiBKU1Byb21pc2VQ
cm90b3R5cGU6OmNyZWF0ZShWTSYgdm0sIEpTR2xvYmFsT2JqZWN0KiwgU3RydWN0dXJlKiBzdHJ1
Y3R1cmUpCiB7Ci0gICAgVk0mIHZtID0gZXhlYy0+dm0oKTsKLSAgICBKU1Byb21pc2VQcm90b3R5
cGUqIG9iamVjdCA9IG5ldyAoTm90TnVsbCwgYWxsb2NhdGVDZWxsPEpTUHJvbWlzZVByb3RvdHlw
ZT4odm0uaGVhcCkpIEpTUHJvbWlzZVByb3RvdHlwZShleGVjLCBzdHJ1Y3R1cmUpOworICAgIEpT
UHJvbWlzZVByb3RvdHlwZSogb2JqZWN0ID0gbmV3IChOb3ROdWxsLCBhbGxvY2F0ZUNlbGw8SlNQ
cm9taXNlUHJvdG90eXBlPih2bS5oZWFwKSkgSlNQcm9taXNlUHJvdG90eXBlKHZtLCBzdHJ1Y3R1
cmUpOwogICAgIG9iamVjdC0+ZmluaXNoQ3JlYXRpb24odm0sIHN0cnVjdHVyZSk7CiAgICAgcmV0
dXJuIG9iamVjdDsKIH0KQEAgLTY3LDE0ICs2NywxNSBAQCBTdHJ1Y3R1cmUqIEpTUHJvbWlzZVBy
b3RvdHlwZTo6Y3JlYXRlU3RydWN0dXJlKFZNJiB2bSwgSlNHbG9iYWxPYmplY3QqIGdsb2JhbE9i
agogICAgIHJldHVybiBTdHJ1Y3R1cmU6OmNyZWF0ZSh2bSwgZ2xvYmFsT2JqZWN0LCBwcm90b3R5
cGUsIFR5cGVJbmZvKE9iamVjdFR5cGUsIFN0cnVjdHVyZUZsYWdzKSwgaW5mbygpKTsKIH0KIAot
SlNQcm9taXNlUHJvdG90eXBlOjpKU1Byb21pc2VQcm90b3R5cGUoRXhlY1N0YXRlKiBleGVjLCBT
dHJ1Y3R1cmUqIHN0cnVjdHVyZSkKLSAgICA6IEpTTm9uRmluYWxPYmplY3QoZXhlYy0+dm0oKSwg
c3RydWN0dXJlKQorSlNQcm9taXNlUHJvdG90eXBlOjpKU1Byb21pc2VQcm90b3R5cGUoVk0mIHZt
LCBTdHJ1Y3R1cmUqIHN0cnVjdHVyZSkKKyAgICA6IEpTTm9uRmluYWxPYmplY3Qodm0sIHN0cnVj
dHVyZSkKIHsKIH0KIAogdm9pZCBKU1Byb21pc2VQcm90b3R5cGU6OmZpbmlzaENyZWF0aW9uKFZN
JiB2bSwgU3RydWN0dXJlKikKIHsKICAgICBCYXNlOjpmaW5pc2hDcmVhdGlvbih2bSk7CisgICAg
cHV0RGlyZWN0QnVpbHRpbkZ1bmN0aW9uV2l0aG91dFRyYW5zaXRpb24odm0sIGdsb2JhbE9iamVj
dCgpLCB2bS5wcm9wZXJ0eU5hbWVzLT5idWlsdGluTmFtZXMoKS50aGVuUHJpdmF0ZU5hbWUoKSwg
cHJvbWlzZVByb3RvdHlwZVByaXZhdGVUaGVuQ29kZUdlbmVyYXRvcih2bSksIFJlYWRPbmx5IHwg
RG9udEVudW0gfCBEb250RGVsZXRlKTsKIH0KIAogYm9vbCBKU1Byb21pc2VQcm90b3R5cGU6Omdl
dE93blByb3BlcnR5U2xvdChKU09iamVjdCogb2JqZWN0LCBFeGVjU3RhdGUqIGV4ZWMsIFByb3Bl
cnR5TmFtZSBwcm9wZXJ0eU5hbWUsIFByb3BlcnR5U2xvdCYgc2xvdCkKZGlmZiAtLWdpdCBhL1Nv
dXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL0pTUHJvbWlzZVByb3RvdHlwZS5oIGIvU291cmNl
L0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvSlNQcm9taXNlUHJvdG90eXBlLmgKaW5kZXggNDU4ZDE0
MTE5ZGRmOWFiZTA3NjNiNzc3MzliNGVhOWI4NWMyMTkwNi4uNGU4NzFjNzU2Y2M4ZTc1NzdhMDcw
NDExNTYwM2Y5M2U4NTUzZTFmNyAxMDA2NDQKLS0tIGEvU291cmNlL0phdmFTY3JpcHRDb3JlL3J1
bnRpbWUvSlNQcm9taXNlUHJvdG90eXBlLmgKKysrIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL3J1
bnRpbWUvSlNQcm9taXNlUHJvdG90eXBlLmgKQEAgLTM1LDcgKzM1LDcgQEAgY2xhc3MgSlNQcm9t
aXNlUHJvdG90eXBlIDogcHVibGljIEpTTm9uRmluYWxPYmplY3QgewogICAgIHR5cGVkZWYgSlNO
b25GaW5hbE9iamVjdCBCYXNlOwogICAgIHN0YXRpYyBjb25zdCB1bnNpZ25lZCBTdHJ1Y3R1cmVG
bGFncyA9IEJhc2U6OlN0cnVjdHVyZUZsYWdzIHwgT3ZlcnJpZGVzR2V0T3duUHJvcGVydHlTbG90
OwogCi0gICAgc3RhdGljIEpTUHJvbWlzZVByb3RvdHlwZSogY3JlYXRlKEV4ZWNTdGF0ZSosIEpT
R2xvYmFsT2JqZWN0KiwgU3RydWN0dXJlKik7CisgICAgc3RhdGljIEpTUHJvbWlzZVByb3RvdHlw
ZSogY3JlYXRlKFZNJiwgSlNHbG9iYWxPYmplY3QqLCBTdHJ1Y3R1cmUqKTsKICAgICBzdGF0aWMg
U3RydWN0dXJlKiBjcmVhdGVTdHJ1Y3R1cmUoVk0mLCBKU0dsb2JhbE9iamVjdCosIEpTVmFsdWUp
OwogCiAgICAgREVDTEFSRV9JTkZPOwpAQCAtNDQsNyArNDQsNyBAQCBjbGFzcyBKU1Byb21pc2VQ
cm90b3R5cGUgOiBwdWJsaWMgSlNOb25GaW5hbE9iamVjdCB7CiAgICAgdm9pZCBmaW5pc2hDcmVh
dGlvbihWTSYsIFN0cnVjdHVyZSopOwogCiBwcml2YXRlOgotICAgIEpTUHJvbWlzZVByb3RvdHlw
ZShFeGVjU3RhdGUqLCBTdHJ1Y3R1cmUqKTsKKyAgICBKU1Byb21pc2VQcm90b3R5cGUoVk0mLCBT
dHJ1Y3R1cmUqKTsKICAgICBzdGF0aWMgYm9vbCBnZXRPd25Qcm9wZXJ0eVNsb3QoSlNPYmplY3Qq
LCBFeGVjU3RhdGUqLCBQcm9wZXJ0eU5hbWUsIFByb3BlcnR5U2xvdCYpOwogfTsKIApkaWZmIC0t
Z2l0IGEvU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvTWFwUHJvdG90eXBlLmNwcCBiL1Nv
dXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL01hcFByb3RvdHlwZS5jcHAKaW5kZXggOTZkZWFl
NzE0Y2E1MWE2N2ZkMTY0MDhlNWMzOWQzYzY1NjczODk0ZC4uZTk3MmY1NDBlZmIyZjFlNmE0OGQx
MjUwM2YwMzE4OTcxZjQyZGY4MiAxMDA2NDQKLS0tIGEvU291cmNlL0phdmFTY3JpcHRDb3JlL3J1
bnRpbWUvTWFwUHJvdG90eXBlLmNwcAorKysgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGlt
ZS9NYXBQcm90b3R5cGUuY3BwCkBAIC02OCw2ICs2OCwxMCBAQCB2b2lkIE1hcFByb3RvdHlwZTo6
ZmluaXNoQ3JlYXRpb24oVk0mIHZtLCBKU0dsb2JhbE9iamVjdCogZ2xvYmFsT2JqZWN0KQogICAg
IEpTQ19OQVRJVkVfRlVOQ1RJT04odm0ucHJvcGVydHlOYW1lcy0+a2V5cywgbWFwUHJvdG9GdW5j
S2V5cywgRG9udEVudW0sIDApOwogICAgIEpTQ19OQVRJVkVfRlVOQ1RJT04odm0ucHJvcGVydHlO
YW1lcy0+dmFsdWVzLCBtYXBQcm90b0Z1bmNWYWx1ZXMsIERvbnRFbnVtLCAwKTsKIAorICAgIC8v
IFByaXZhdGUgZ2V0IC8gc2V0IG9wZXJhdGlvbnMuCisgICAgSlNDX05BVElWRV9GVU5DVElPTih2
bS5wcm9wZXJ0eU5hbWVzLT5nZXRQcml2YXRlTmFtZSwgbWFwUHJvdG9GdW5jR2V0LCBEb250RW51
bSwgMSk7CisgICAgSlNDX05BVElWRV9GVU5DVElPTih2bS5wcm9wZXJ0eU5hbWVzLT5zZXRQcml2
YXRlTmFtZSwgbWFwUHJvdG9GdW5jU2V0LCBEb250RW51bSwgMik7CisKICAgICBKU0Z1bmN0aW9u
KiBlbnRyaWVzID0gSlNGdW5jdGlvbjo6Y3JlYXRlKHZtLCBnbG9iYWxPYmplY3QsIDAsIHZtLnBy
b3BlcnR5TmFtZXMtPmVudHJpZXMuc3RyaW5nKCksIG1hcFByb3RvRnVuY0VudHJpZXMpOwogICAg
IHB1dERpcmVjdFdpdGhvdXRUcmFuc2l0aW9uKHZtLCB2bS5wcm9wZXJ0eU5hbWVzLT5lbnRyaWVz
LCBlbnRyaWVzLCBEb250RW51bSk7CiAgICAgcHV0RGlyZWN0V2l0aG91dFRyYW5zaXRpb24odm0s
IHZtLnByb3BlcnR5TmFtZXMtPml0ZXJhdG9yU3ltYm9sLCBlbnRyaWVzLCBEb250RW51bSk7CmRp
ZmYgLS1naXQgYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9Nb2R1bGVMb2FkZXJPYmpl
Y3QuY3BwIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvTW9kdWxlTG9hZGVyT2JqZWN0
LmNwcApuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwLi41YWVhODM2NmViMWNkMDdiMjk1NmE3NDg4MDM0ODVjMmEwMjBiYTBm
Ci0tLSAvZGV2L251bGwKKysrIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvTW9kdWxl
TG9hZGVyT2JqZWN0LmNwcApAQCAtMCwwICsxLDI5OSBAQAorLyoKKyAqIENvcHlyaWdodCAoQykg
MjAxNSBBcHBsZSBJbmMuIEFsbCBSaWdodHMgUmVzZXJ2ZWQuCisgKgorICogUmVkaXN0cmlidXRp
b24gYW5kIHVzZSBpbiBzb3VyY2UgYW5kIGJpbmFyeSBmb3Jtcywgd2l0aCBvciB3aXRob3V0Cisg
KiBtb2RpZmljYXRpb24sIGFyZSBwZXJtaXR0ZWQgcHJvdmlkZWQgdGhhdCB0aGUgZm9sbG93aW5n
IGNvbmRpdGlvbnMKKyAqIGFyZSBtZXQ6CisgKiAxLiBSZWRpc3RyaWJ1dGlvbnMgb2Ygc291cmNl
IGNvZGUgbXVzdCByZXRhaW4gdGhlIGFib3ZlIGNvcHlyaWdodAorICogICAgbm90aWNlLCB0aGlz
IGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyLgorICogMi4g
UmVkaXN0cmlidXRpb25zIGluIGJpbmFyeSBmb3JtIG11c3QgcmVwcm9kdWNlIHRoZSBhYm92ZSBj
b3B5cmlnaHQKKyAqICAgIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBm
b2xsb3dpbmcgZGlzY2xhaW1lciBpbiB0aGUKKyAqICAgIGRvY3VtZW50YXRpb24gYW5kL29yIG90
aGVyIG1hdGVyaWFscyBwcm92aWRlZCB3aXRoIHRoZSBkaXN0cmlidXRpb24uCisgKgorICogVEhJ
UyBTT0ZUV0FSRSBJUyBQUk9WSURFRCBCWSBBUFBMRSBJTkMuIGBgQVMgSVMnJyBBTkQgQU5ZCisg
KiBFWFBSRVNTIE9SIElNUExJRUQgV0FSUkFOVElFUywgSU5DTFVESU5HLCBCVVQgTk9UIExJTUlU
RUQgVE8sIFRIRQorICogSU1QTElFRCBXQVJSQU5USUVTIE9GIE1FUkNIQU5UQUJJTElUWSBBTkQg
RklUTkVTUyBGT1IgQSBQQVJUSUNVTEFSCisgKiBQVVJQT1NFIEFSRSBESVNDTEFJTUVELiAgSU4g
Tk8gRVZFTlQgU0hBTEwgQVBQTEUgSU5DLiBPUgorICogQ09OVFJJQlVUT1JTIEJFIExJQUJMRSBG
T1IgQU5ZIERJUkVDVCwgSU5ESVJFQ1QsIElOQ0lERU5UQUwsIFNQRUNJQUwsCisgKiBFWEVNUExB
UlksIE9SIENPTlNFUVVFTlRJQUwgREFNQUdFUyAoSU5DTFVESU5HLCBCVVQgTk9UIExJTUlURUQg
VE8sCisgKiBQUk9DVVJFTUVOVCBPRiBTVUJTVElUVVRFIEdPT0RTIE9SIFNFUlZJQ0VTOyBMT1NT
IE9GIFVTRSwgREFUQSwgT1IKKyAqIFBST0ZJVFM7IE9SIEJVU0lORVNTIElOVEVSUlVQVElPTikg
SE9XRVZFUiBDQVVTRUQgQU5EIE9OIEFOWSBUSEVPUlkKKyAqIE9GIExJQUJJTElUWSwgV0hFVEhF
UiBJTiBDT05UUkFDVCwgU1RSSUNUIExJQUJJTElUWSwgT1IgVE9SVAorICogKElOQ0xVRElORyBO
RUdMSUdFTkNFIE9SIE9USEVSV0lTRSkgQVJJU0lORyBJTiBBTlkgV0FZIE9VVCBPRiBUSEUgVVNF
CisgKiBPRiBUSElTIFNPRlRXQVJFLCBFVkVOIElGIEFEVklTRUQgT0YgVEhFIFBPU1NJQklMSVRZ
IE9GIFNVQ0ggREFNQUdFLgorICovCisKKyNpbmNsdWRlICJjb25maWcuaCIKKyNpbmNsdWRlICJN
b2R1bGVMb2FkZXJPYmplY3QuaCIKKworI2luY2x1ZGUgIkJ1aWx0aW5OYW1lcy5oIgorI2luY2x1
ZGUgIkVycm9yLmgiCisjaW5jbHVkZSAiRXhjZXB0aW9uLmgiCisjaW5jbHVkZSAiSlNDSW5saW5l
cy5oIgorI2luY2x1ZGUgIkpTR2xvYmFsT2JqZWN0RnVuY3Rpb25zLmgiCisjaW5jbHVkZSAiSlNN
YXAuaCIKKyNpbmNsdWRlICJKU01vZHVsZVJlY29yZC5oIgorI2luY2x1ZGUgIkpTUHJvbWlzZS5o
IgorI2luY2x1ZGUgIkpTUHJvbWlzZURlZmVycmVkLmgiCisjaW5jbHVkZSAiTW9kdWxlQW5hbHl6
ZXIuaCIKKyNpbmNsdWRlICJOb2Rlcy5oIgorI2luY2x1ZGUgIlBhcnNlci5oIgorI2luY2x1ZGUg
IlBhcnNlckVycm9yLmgiCisKK25hbWVzcGFjZSBKU0MgeworCitzdGF0aWMgRW5jb2RlZEpTVmFs
dWUgSlNDX0hPU1RfQ0FMTCBtb2R1bGVMb2FkZXJPYmplY3RQYXJzZU1vZHVsZShFeGVjU3RhdGUq
KTsKK3N0YXRpYyBFbmNvZGVkSlNWYWx1ZSBKU0NfSE9TVF9DQUxMIG1vZHVsZUxvYWRlck9iamVj
dFJlcXVlc3RlZE1vZHVsZXMoRXhlY1N0YXRlKik7CitzdGF0aWMgRW5jb2RlZEpTVmFsdWUgSlND
X0hPU1RfQ0FMTCBtb2R1bGVMb2FkZXJPYmplY3RSZXNvbHZlKEV4ZWNTdGF0ZSopOworc3RhdGlj
IEVuY29kZWRKU1ZhbHVlIEpTQ19IT1NUX0NBTEwgbW9kdWxlTG9hZGVyT2JqZWN0RmV0Y2goRXhl
Y1N0YXRlKik7CitzdGF0aWMgRW5jb2RlZEpTVmFsdWUgSlNDX0hPU1RfQ0FMTCBtb2R1bGVMb2Fk
ZXJPYmplY3RUcmFuc2xhdGUoRXhlY1N0YXRlKik7CitzdGF0aWMgRW5jb2RlZEpTVmFsdWUgSlND
X0hPU1RfQ0FMTCBtb2R1bGVMb2FkZXJPYmplY3RJbnN0YW50aWF0ZShFeGVjU3RhdGUqKTsKKwor
fQorCisjaW5jbHVkZSAiTW9kdWxlTG9hZGVyT2JqZWN0Lmx1dC5oIgorCituYW1lc3BhY2UgSlND
IHsKKworU1RBVElDX0FTU0VSVF9JU19UUklWSUFMTFlfREVTVFJVQ1RJQkxFKE1vZHVsZUxvYWRl
ck9iamVjdCk7CisKK2NvbnN0IENsYXNzSW5mbyBNb2R1bGVMb2FkZXJPYmplY3Q6OnNfaW5mbyA9
IHsgIk1vZHVsZUxvYWRlciIsICZCYXNlOjpzX2luZm8sICZtb2R1bGVMb2FkZXJPYmplY3RUYWJs
ZSwgQ1JFQVRFX01FVEhPRF9UQUJMRShNb2R1bGVMb2FkZXJPYmplY3QpIH07CisKKy8qIFNvdXJj
ZSBmb3IgTW9kdWxlTG9hZGVyT2JqZWN0Lmx1dC5oCitAYmVnaW4gbW9kdWxlTG9hZGVyT2JqZWN0
VGFibGUKKyAgICBzZXRTdGF0ZVRvTWF4ICAgICAgICAgICAgIG1vZHVsZUxvYWRlck9iamVjdFNl
dFN0YXRlVG9NYXggICAgICAgICAgICAgRG9udEVudW18RnVuY3Rpb24gMgorICAgIG5ld1JlZ2lz
dHJ5RW50cnkgICAgICAgICAgbW9kdWxlTG9hZGVyT2JqZWN0TmV3UmVnaXN0cnlFbnRyeSAgICAg
ICAgICBEb250RW51bXxGdW5jdGlvbiAxCisgICAgZW5zdXJlUmVnaXN0ZXJlZCAgICAgICAgICBt
b2R1bGVMb2FkZXJPYmplY3RFbnN1cmVSZWdpc3RlcmVkICAgICAgICAgIERvbnRFbnVtfEZ1bmN0
aW9uIDEKKyAgICBmb3JjZUZ1bGZpbGxQcm9taXNlICAgICAgIG1vZHVsZUxvYWRlck9iamVjdEZv
cmNlRnVsZmlsbFByb21pc2UgICAgICAgRG9udEVudW18RnVuY3Rpb24gMgorICAgIGZ1bGZpbGxG
ZXRjaCAgICAgICAgICAgICAgbW9kdWxlTG9hZGVyT2JqZWN0RnVsZmlsbEZldGNoICAgICAgICAg
ICAgICBEb250RW51bXxGdW5jdGlvbiAyCisgICAgZnVsZmlsbFRyYW5zbGF0ZSAgICAgICAgICBt
b2R1bGVMb2FkZXJPYmplY3RGdWxmaWxsVHJhbnNsYXRlICAgICAgICAgIERvbnRFbnVtfEZ1bmN0
aW9uIDIKKyAgICBmdWxmaWxsSW5zdGFudGlhdGUgICAgICAgIG1vZHVsZUxvYWRlck9iamVjdEZ1
bGZpbGxJbnN0YW50aWF0ZSAgICAgICAgRG9udEVudW18RnVuY3Rpb24gMgorICAgIGNvbW1pdElu
c3RhbnRpYXRlZCAgICAgICAgbW9kdWxlTG9hZGVyT2JqZWN0Q29tbWl0SW5zdGFudGlhdGVkICAg
ICAgICBEb250RW51bXxGdW5jdGlvbiAzCisgICAgaW5zdGFudGlhdGlvbiAgICAgICAgICAgICBt
b2R1bGVMb2FkZXJPYmplY3RJbnN0YW50aWF0aW9uICAgICAgICAgICAgIERvbnRFbnVtfEZ1bmN0
aW9uIDIKKyAgICByZXF1ZXN0RmV0Y2ggICAgICAgICAgICAgIG1vZHVsZUxvYWRlck9iamVjdFJl
cXVlc3RGZXRjaCAgICAgICAgICAgICAgRG9udEVudW18RnVuY3Rpb24gMQorICAgIHJlcXVlc3RU
cmFuc2xhdGUgICAgICAgICAgbW9kdWxlTG9hZGVyT2JqZWN0UmVxdWVzdFRyYW5zbGF0ZSAgICAg
ICAgICBEb250RW51bXxGdW5jdGlvbiAxCisgICAgcmVxdWVzdEluc3RhbnRpYXRlICAgICAgICBt
b2R1bGVMb2FkZXJPYmplY3RSZXF1ZXN0SW5zdGFudGlhdGUgICAgICAgIERvbnRFbnVtfEZ1bmN0
aW9uIDEKKyAgICByZXF1ZXN0Q29sbGVjdCAgICAgICAgICAgIG1vZHVsZUxvYWRlck9iamVjdFJl
cXVlc3RDb2xsZWN0ICAgICAgICAgICAgRG9udEVudW18RnVuY3Rpb24gMQorICAgIHJlcXVlc3RJ
bnN0YW50aWF0ZUFsbCAgICAgbW9kdWxlTG9hZGVyT2JqZWN0UmVxdWVzdEluc3RhbnRpYXRlQWxs
ICAgICBEb250RW51bXxGdW5jdGlvbiAxCisgICAgcHJvdmlkZSAgICAgICAgICAgICAgICAgICBt
b2R1bGVMb2FkZXJPYmplY3RQcm92aWRlICAgICAgICAgICAgICAgICAgIERvbnRFbnVtfEZ1bmN0
aW9uIDMKKyAgICBwYXJzZU1vZHVsZSAgICAgICAgICAgICAgIG1vZHVsZUxvYWRlck9iamVjdFBh
cnNlTW9kdWxlICAgICAgICAgICAgICAgRG9udEVudW18RnVuY3Rpb24gMQorICAgIHJlcXVlc3Rl
ZE1vZHVsZXMgICAgICAgICAgbW9kdWxlTG9hZGVyT2JqZWN0UmVxdWVzdGVkTW9kdWxlcyAgICAg
ICAgICBEb250RW51bXxGdW5jdGlvbiAxCisgICAgcmVzb2x2ZSAgICAgICAgICAgICAgICAgICBt
b2R1bGVMb2FkZXJPYmplY3RSZXNvbHZlICAgICAgICAgICAgICAgICAgIERvbnRFbnVtfEZ1bmN0
aW9uIDEKKyAgICBmZXRjaCAgICAgICAgICAgICAgICAgICAgIG1vZHVsZUxvYWRlck9iamVjdEZl
dGNoICAgICAgICAgICAgICAgICAgICAgRG9udEVudW18RnVuY3Rpb24gMQorICAgIHRyYW5zbGF0
ZSAgICAgICAgICAgICAgICAgbW9kdWxlTG9hZGVyT2JqZWN0VHJhbnNsYXRlICAgICAgICAgICAg
ICAgICBEb250RW51bXxGdW5jdGlvbiAyCisgICAgaW5zdGFudGlhdGUgICAgICAgICAgICAgICBt
b2R1bGVMb2FkZXJPYmplY3RJbnN0YW50aWF0ZSAgICAgICAgICAgICAgIERvbnRFbnVtfEZ1bmN0
aW9uIDIKK0BlbmQKKyovCisKK01vZHVsZUxvYWRlck9iamVjdDo6TW9kdWxlTG9hZGVyT2JqZWN0
KFZNJiB2bSwgU3RydWN0dXJlKiBzdHJ1Y3R1cmUpCisgICAgOiBKU05vbkZpbmFsT2JqZWN0KHZt
LCBzdHJ1Y3R1cmUpCit7Cit9CisKK3ZvaWQgTW9kdWxlTG9hZGVyT2JqZWN0OjpmaW5pc2hDcmVh
dGlvbihWTSYgdm0sIEpTR2xvYmFsT2JqZWN0KiBnbG9iYWxPYmplY3QpCit7CisgICAgQmFzZTo6
ZmluaXNoQ3JlYXRpb24odm0pOworICAgIEFTU0VSVChpbmhlcml0cyhpbmZvKCkpKTsKKworICAg
IC8vIENvbnN0YW50IHZhbHVlcyBmb3IgdGhlIHN0YXRlLgorICAgIHB1dERpcmVjdFdpdGhvdXRU
cmFuc2l0aW9uKHZtLCBJZGVudGlmaWVyOjpmcm9tU3RyaW5nKCZ2bSwgIkZldGNoIiksIGpzTnVt
YmVyKFN0YXR1czo6RmV0Y2gpKTsKKyAgICBwdXREaXJlY3RXaXRob3V0VHJhbnNpdGlvbih2bSwg
SWRlbnRpZmllcjo6ZnJvbVN0cmluZygmdm0sICJUcmFuc2xhdGUiKSwganNOdW1iZXIoU3RhdHVz
OjpUcmFuc2xhdGUpKTsKKyAgICBwdXREaXJlY3RXaXRob3V0VHJhbnNpdGlvbih2bSwgSWRlbnRp
Zmllcjo6ZnJvbVN0cmluZygmdm0sICJJbnN0YW50aWF0ZSIpLCBqc051bWJlcihTdGF0dXM6Oklu
c3RhbnRpYXRlKSk7CisgICAgcHV0RGlyZWN0V2l0aG91dFRyYW5zaXRpb24odm0sIElkZW50aWZp
ZXI6OmZyb21TdHJpbmcoJnZtLCAiQ29sbGVjdCIpLCBqc051bWJlcihTdGF0dXM6OkNvbGxlY3Qp
KTsKKyAgICBwdXREaXJlY3RXaXRob3V0VHJhbnNpdGlvbih2bSwgSWRlbnRpZmllcjo6ZnJvbVN0
cmluZygmdm0sICJMaW5rIiksIGpzTnVtYmVyKFN0YXR1czo6TGluaykpOworICAgIHB1dERpcmVj
dFdpdGhvdXRUcmFuc2l0aW9uKHZtLCBJZGVudGlmaWVyOjpmcm9tU3RyaW5nKCZ2bSwgIlJlYWR5
IiksIGpzTnVtYmVyKFN0YXR1czo6UmVhZHkpKTsKKworICAgIHB1dERpcmVjdFdpdGhvdXRUcmFu
c2l0aW9uKHZtLCBJZGVudGlmaWVyOjpmcm9tU3RyaW5nKCZ2bSwgInJlZ2lzdHJ5IiksIEpTTWFw
OjpjcmVhdGUodm0sIGdsb2JhbE9iamVjdC0+bWFwU3RydWN0dXJlKCkpKTsKK30KKworYm9vbCBN
b2R1bGVMb2FkZXJPYmplY3Q6OmdldE93blByb3BlcnR5U2xvdChKU09iamVjdCogb2JqZWN0LCBF
eGVjU3RhdGUqIGV4ZWMsIFByb3BlcnR5TmFtZSBwcm9wZXJ0eU5hbWUsIFByb3BlcnR5U2xvdCAm
c2xvdCkKK3sKKyAgICByZXR1cm4gZ2V0U3RhdGljRnVuY3Rpb25TbG90PEJhc2U+KGV4ZWMsIG1v
ZHVsZUxvYWRlck9iamVjdFRhYmxlLCBqc0Nhc3Q8TW9kdWxlTG9hZGVyT2JqZWN0Kj4ob2JqZWN0
KSwgcHJvcGVydHlOYW1lLCBzbG90KTsKK30KKworLy8gLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t
LS0tLS0tIEZ1bmN0aW9ucyAtLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLQorCitzdGF0
aWMgU3RyaW5nIHByaW50YWJsZU1vZHVsZUtleShFeGVjU3RhdGUqIGV4ZWMsIEpTVmFsdWUga2V5
KQoreworICAgIGlmIChrZXkuaXNTdHJpbmcoKSB8fCBrZXkuaXNTeW1ib2woKSkKKyAgICAgICAg
cmV0dXJuIGtleS50b1Byb3BlcnR5S2V5KGV4ZWMpLmltcGwoKTsKKyAgICByZXR1cm4gZXhlYy0+
cHJvcGVydHlOYW1lcygpLmVtcHR5SWRlbnRpZmllci5pbXBsKCk7Cit9CisKK0pTVmFsdWUgTW9k
dWxlTG9hZGVyT2JqZWN0Ojpwcm92aWRlKEV4ZWNTdGF0ZSogZXhlYywgSlNWYWx1ZSBrZXksIFN0
YXR1cyBzdGF0dXMsIGNvbnN0IFN0cmluZyYgc291cmNlKQoreworICAgIEpTT2JqZWN0KiBmdW5j
dGlvbiA9IGpzQ2FzdDxKU09iamVjdCo+KGdldChleGVjLCBleGVjLT5wcm9wZXJ0eU5hbWVzKCku
YnVpbHRpbk5hbWVzKCkucHJvdmlkZVB1YmxpY05hbWUoKSkpOworICAgIENhbGxEYXRhIGNhbGxE
YXRhOworICAgIENhbGxUeXBlIGNhbGxUeXBlID0gSlNDOjpnZXRDYWxsRGF0YShmdW5jdGlvbiwg
Y2FsbERhdGEpOworICAgIEFTU0VSVChjYWxsVHlwZSAhPSBDYWxsVHlwZU5vbmUpOworCisgICAg
TWFya2VkQXJndW1lbnRCdWZmZXIgYXJndW1lbnRzOworICAgIGFyZ3VtZW50cy5hcHBlbmQoa2V5
KTsKKyAgICBhcmd1bWVudHMuYXBwZW5kKGpzTnVtYmVyKHN0YXR1cykpOworICAgIGFyZ3VtZW50
cy5hcHBlbmQoanNTdHJpbmcoZXhlYywgc291cmNlKSk7CisKKyAgICByZXR1cm4gY2FsbChleGVj
LCBmdW5jdGlvbiwgY2FsbFR5cGUsIGNhbGxEYXRhLCB0aGlzLCBhcmd1bWVudHMpOworfQorCitK
U1ZhbHVlIE1vZHVsZUxvYWRlck9iamVjdDo6cmVxdWVzdEluc3RhbnRpYXRlQWxsKEV4ZWNTdGF0
ZSogZXhlYywgSlNWYWx1ZSBrZXkpCit7CisgICAgSlNPYmplY3QqIGZ1bmN0aW9uID0ganNDYXN0
PEpTT2JqZWN0Kj4oZ2V0KGV4ZWMsIGV4ZWMtPnByb3BlcnR5TmFtZXMoKS5idWlsdGluTmFtZXMo
KS5yZXF1ZXN0SW5zdGFudGlhdGVBbGxQdWJsaWNOYW1lKCkpKTsKKyAgICBDYWxsRGF0YSBjYWxs
RGF0YTsKKyAgICBDYWxsVHlwZSBjYWxsVHlwZSA9IEpTQzo6Z2V0Q2FsbERhdGEoZnVuY3Rpb24s
IGNhbGxEYXRhKTsKKyAgICBBU1NFUlQoY2FsbFR5cGUgIT0gQ2FsbFR5cGVOb25lKTsKKworICAg
IE1hcmtlZEFyZ3VtZW50QnVmZmVyIGFyZ3VtZW50czsKKyAgICBhcmd1bWVudHMuYXBwZW5kKGtl
eSk7CisKKyAgICByZXR1cm4gY2FsbChleGVjLCBmdW5jdGlvbiwgY2FsbFR5cGUsIGNhbGxEYXRh
LCB0aGlzLCBhcmd1bWVudHMpOworfQorCitKU1ZhbHVlIE1vZHVsZUxvYWRlck9iamVjdDo6cmVz
b2x2ZShFeGVjU3RhdGUqIGV4ZWMsIEpTVmFsdWUgbmFtZSwgSlNWYWx1ZSByZWZlcnJlcikKK3sK
KyAgICBpZiAoT3B0aW9uczo6ZHVtcE1vZHVsZUxvYWRpbmdTdGF0ZSgpKQorICAgICAgICBkYXRh
TG9nKCJMb2FkZXIgW3Jlc29sdmVdICIsIHByaW50YWJsZU1vZHVsZUtleShleGVjLCBuYW1lKSwg
IlxuIik7CisKKyAgICBKU0dsb2JhbE9iamVjdCogZ2xvYmFsT2JqZWN0ID0gZXhlYy0+bGV4aWNh
bEdsb2JhbE9iamVjdCgpOworICAgIGlmIChnbG9iYWxPYmplY3QtPmdsb2JhbE9iamVjdE1ldGhv
ZFRhYmxlKCktPmxvYWRlclJlc29sdmUpCisgICAgICAgIHJldHVybiBnbG9iYWxPYmplY3QtPmds
b2JhbE9iamVjdE1ldGhvZFRhYmxlKCktPmxvYWRlclJlc29sdmUoZ2xvYmFsT2JqZWN0LCBleGVj
LCBuYW1lLCByZWZlcnJlcik7CisgICAgSlNQcm9taXNlRGVmZXJyZWQqIGRlZmVycmVkID0gSlNQ
cm9taXNlRGVmZXJyZWQ6OmNyZWF0ZShleGVjLCBnbG9iYWxPYmplY3QpOworICAgIGRlZmVycmVk
LT5yZXNvbHZlKGV4ZWMsIG5hbWUpOworICAgIHJldHVybiBkZWZlcnJlZC0+cHJvbWlzZSgpOwor
fQorCitKU1ZhbHVlIE1vZHVsZUxvYWRlck9iamVjdDo6ZmV0Y2goRXhlY1N0YXRlKiBleGVjLCBK
U1ZhbHVlIGtleSkKK3sKKyAgICBpZiAoT3B0aW9uczo6ZHVtcE1vZHVsZUxvYWRpbmdTdGF0ZSgp
KQorICAgICAgICBkYXRhTG9nKCJMb2FkZXIgW2ZldGNoXSAiLCBwcmludGFibGVNb2R1bGVLZXko
ZXhlYywga2V5KSwgIlxuIik7CisKKyAgICBKU0dsb2JhbE9iamVjdCogZ2xvYmFsT2JqZWN0ID0g
ZXhlYy0+bGV4aWNhbEdsb2JhbE9iamVjdCgpOworICAgIGlmIChnbG9iYWxPYmplY3QtPmdsb2Jh
bE9iamVjdE1ldGhvZFRhYmxlKCktPmxvYWRlckZldGNoKQorICAgICAgICByZXR1cm4gZ2xvYmFs
T2JqZWN0LT5nbG9iYWxPYmplY3RNZXRob2RUYWJsZSgpLT5sb2FkZXJGZXRjaChnbG9iYWxPYmpl
Y3QsIGV4ZWMsIGtleSk7CisgICAgSlNQcm9taXNlRGVmZXJyZWQqIGRlZmVycmVkID0gSlNQcm9t
aXNlRGVmZXJyZWQ6OmNyZWF0ZShleGVjLCBnbG9iYWxPYmplY3QpOworICAgIFN0cmluZyBtb2R1
bGVLZXkgPSBrZXkudG9TdHJpbmcoZXhlYyktPnZhbHVlKGV4ZWMpOworICAgIGlmIChleGVjLT5o
YWRFeGNlcHRpb24oKSkgeworICAgICAgICBKU1ZhbHVlIGV4Y2VwdGlvbiA9IGV4ZWMtPmV4Y2Vw
dGlvbigpLT52YWx1ZSgpOworICAgICAgICBleGVjLT5jbGVhckV4Y2VwdGlvbigpOworICAgICAg
ICBkZWZlcnJlZC0+cmVqZWN0KGV4ZWMsIGV4Y2VwdGlvbik7CisgICAgICAgIHJldHVybiBkZWZl
cnJlZC0+cHJvbWlzZSgpOworICAgIH0KKyAgICBkZWZlcnJlZC0+cmVqZWN0KGV4ZWMsIGNyZWF0
ZUVycm9yKGV4ZWMsIG1ha2VTdHJpbmcoIkNvdWxkIG5vdCBvcGVuIHRoZSBtb2R1bGUgJyIsIG1v
ZHVsZUtleSwgIicuIikpKTsKKyAgICByZXR1cm4gZGVmZXJyZWQtPnByb21pc2UoKTsKK30KKwor
SlNWYWx1ZSBNb2R1bGVMb2FkZXJPYmplY3Q6OnRyYW5zbGF0ZShFeGVjU3RhdGUqIGV4ZWMsIEpT
VmFsdWUga2V5LCBKU1ZhbHVlIHBheWxvYWQpCit7CisgICAgaWYgKE9wdGlvbnM6OmR1bXBNb2R1
bGVMb2FkaW5nU3RhdGUoKSkKKyAgICAgICAgZGF0YUxvZygiTG9hZGVyIFt0cmFuc2xhdGVdICIs
IHByaW50YWJsZU1vZHVsZUtleShleGVjLCBrZXkpLCAiXG4iKTsKKworICAgIEpTR2xvYmFsT2Jq
ZWN0KiBnbG9iYWxPYmplY3QgPSBleGVjLT5sZXhpY2FsR2xvYmFsT2JqZWN0KCk7CisgICAgaWYg
KGdsb2JhbE9iamVjdC0+Z2xvYmFsT2JqZWN0TWV0aG9kVGFibGUoKS0+bG9hZGVyVHJhbnNsYXRl
KQorICAgICAgICByZXR1cm4gZ2xvYmFsT2JqZWN0LT5nbG9iYWxPYmplY3RNZXRob2RUYWJsZSgp
LT5sb2FkZXJUcmFuc2xhdGUoZ2xvYmFsT2JqZWN0LCBleGVjLCBrZXksIHBheWxvYWQpOworICAg
IEpTUHJvbWlzZURlZmVycmVkKiBkZWZlcnJlZCA9IEpTUHJvbWlzZURlZmVycmVkOjpjcmVhdGUo
ZXhlYywgZ2xvYmFsT2JqZWN0KTsKKyAgICBkZWZlcnJlZC0+cmVzb2x2ZShleGVjLCBwYXlsb2Fk
KTsKKyAgICByZXR1cm4gZGVmZXJyZWQtPnByb21pc2UoKTsKK30KKworSlNWYWx1ZSBNb2R1bGVM
b2FkZXJPYmplY3Q6Omluc3RhbnRpYXRlKEV4ZWNTdGF0ZSogZXhlYywgSlNWYWx1ZSBrZXksIEpT
VmFsdWUgc291cmNlKQoreworICAgIGlmIChPcHRpb25zOjpkdW1wTW9kdWxlTG9hZGluZ1N0YXRl
KCkpCisgICAgICAgIGRhdGFMb2coIkxvYWRlciBbaW5zdGFudGlhdGVdICIsIHByaW50YWJsZU1v
ZHVsZUtleShleGVjLCBrZXkpLCAiXG4iKTsKKworICAgIEpTR2xvYmFsT2JqZWN0KiBnbG9iYWxP
YmplY3QgPSBleGVjLT5sZXhpY2FsR2xvYmFsT2JqZWN0KCk7CisgICAgaWYgKGdsb2JhbE9iamVj
dC0+Z2xvYmFsT2JqZWN0TWV0aG9kVGFibGUoKS0+bG9hZGVySW5zdGFudGlhdGUpCisgICAgICAg
IHJldHVybiBnbG9iYWxPYmplY3QtPmdsb2JhbE9iamVjdE1ldGhvZFRhYmxlKCktPmxvYWRlcklu
c3RhbnRpYXRlKGdsb2JhbE9iamVjdCwgZXhlYywga2V5LCBzb3VyY2UpOworICAgIEpTUHJvbWlz
ZURlZmVycmVkKiBkZWZlcnJlZCA9IEpTUHJvbWlzZURlZmVycmVkOjpjcmVhdGUoZXhlYywgZ2xv
YmFsT2JqZWN0KTsKKyAgICBkZWZlcnJlZC0+cmVzb2x2ZShleGVjLCBqc1VuZGVmaW5lZCgpKTsK
KyAgICByZXR1cm4gZGVmZXJyZWQtPnByb21pc2UoKTsKK30KKworLy8gLS0tLS0tLS0tLS0tLS0t
LS0tLS0tLS0tLS0tLS0tIEhvb2sgRnVuY3Rpb25zIC0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t
LQorCitFbmNvZGVkSlNWYWx1ZSBKU0NfSE9TVF9DQUxMIG1vZHVsZUxvYWRlck9iamVjdFBhcnNl
TW9kdWxlKEV4ZWNTdGF0ZSogZXhlYykKK3sKKyAgICBWTSYgdm0gPSBleGVjLT52bSgpOworICAg
IFN0cmluZyBzb3VyY2UgPSBleGVjLT5hcmd1bWVudCgwKS50b1N0cmluZyhleGVjKS0+dmFsdWUo
ZXhlYyk7CisgICAgaWYgKGV4ZWMtPmhhZEV4Y2VwdGlvbigpKQorICAgICAgICByZXR1cm4gSlNW
YWx1ZTo6ZW5jb2RlKGpzVW5kZWZpbmVkKCkpOworCisgICAgLy8gRklYTUU6IENvbnN0cnVjdCBT
b3VyY2VDb2RlIHdpdGggdGhlIGxvY2F0aW9uIGlkZW50aWZpZXIuCisgICAgU291cmNlQ29kZSBz
b3VyY2VDb2RlID0gbWFrZVNvdXJjZShzb3VyY2UpOworCisgICAgUGFyc2VyRXJyb3IgZXJyb3I7
CisgICAgc3RkOjp1bmlxdWVfcHRyPE1vZHVsZVByb2dyYW1Ob2RlPiBtb2R1bGVQcm9ncmFtTm9k
ZSA9IHBhcnNlPE1vZHVsZVByb2dyYW1Ob2RlPigKKyAgICAgICAgJnZtLCBzb3VyY2VDb2RlLCBJ
ZGVudGlmaWVyKCksIEpTUGFyc2VyQnVpbHRpbk1vZGU6Ok5vdEJ1aWx0aW4sCisgICAgICAgIEpT
UGFyc2VyU3RyaWN0TW9kZTo6U3RyaWN0LCBTb3VyY2VQYXJzZU1vZGU6Ok1vZHVsZUFuYWx5emVN
b2RlLCBlcnJvcik7CisKKyAgICBpZiAoZXJyb3IuaXNWYWxpZCgpKSB7CisgICAgICAgIHRocm93
Vk1FcnJvcihleGVjLCBlcnJvci50b0Vycm9yT2JqZWN0KGV4ZWMtPmxleGljYWxHbG9iYWxPYmpl
Y3QoKSwgc291cmNlQ29kZSkpOworICAgICAgICByZXR1cm4gSlNWYWx1ZTo6ZW5jb2RlKGpzVW5k
ZWZpbmVkKCkpOworICAgIH0KKyAgICBBU1NFUlQobW9kdWxlUHJvZ3JhbU5vZGUpOworCisgICAg
TW9kdWxlQW5hbHl6ZXIgbW9kdWxlQW5hbHl6ZXIoZXhlYywgbW9kdWxlUHJvZ3JhbU5vZGUtPnZh
ckRlY2xhcmF0aW9ucygpLCBtb2R1bGVQcm9ncmFtTm9kZS0+bGV4aWNhbFZhcmlhYmxlcygpKTsK
KyAgICByZXR1cm4gSlNWYWx1ZTo6ZW5jb2RlKG1vZHVsZUFuYWx5emVyLmFuYWx5emUoKm1vZHVs
ZVByb2dyYW1Ob2RlKSk7Cit9CisKK0VuY29kZWRKU1ZhbHVlIEpTQ19IT1NUX0NBTEwgbW9kdWxl
TG9hZGVyT2JqZWN0UmVxdWVzdGVkTW9kdWxlcyhFeGVjU3RhdGUqIGV4ZWMpCit7CisgICAgSlNN
b2R1bGVSZWNvcmQqIG1vZHVsZVJlY29yZCA9IGpzRHluYW1pY0Nhc3Q8SlNNb2R1bGVSZWNvcmQq
PihleGVjLT5hcmd1bWVudCgwKSk7CisgICAgaWYgKCFtb2R1bGVSZWNvcmQpCisgICAgICAgIHJl
dHVybiBKU1ZhbHVlOjplbmNvZGUoY29uc3RydWN0RW1wdHlBcnJheShleGVjLCBudWxscHRyKSk7
CisKKyAgICBKU0FycmF5KiByZXN1bHQgPSBjb25zdHJ1Y3RFbXB0eUFycmF5KGV4ZWMsIG51bGxw
dHIsIG1vZHVsZVJlY29yZC0+cmVxdWVzdGVkTW9kdWxlcygpLnNpemUoKSk7CisgICAgc2l6ZV90
IGkgPSAwOworICAgIGZvciAoYXV0byYga2V5IDogbW9kdWxlUmVjb3JkLT5yZXF1ZXN0ZWRNb2R1
bGVzKCkpCisgICAgICAgIHJlc3VsdC0+cHV0RGlyZWN0SW5kZXgoZXhlYywgaSsrLCBqc1N0cmlu
ZyhleGVjLCBrZXkuZ2V0KCkpKTsKKworICAgIHJldHVybiBKU1ZhbHVlOjplbmNvZGUocmVzdWx0
KTsKK30KKworRW5jb2RlZEpTVmFsdWUgSlNDX0hPU1RfQ0FMTCBtb2R1bGVMb2FkZXJPYmplY3RS
ZXNvbHZlKEV4ZWNTdGF0ZSogZXhlYykKK3sKKyAgICAvLyBIb29rIHBvaW50LCBMb2FkZXIucmVz
b2x2ZS4KKyAgICAvLyBodHRwczovL3doYXR3Zy5naXRodWIuaW8vbG9hZGVyLyNicm93c2VyLXJl
c29sdmUKKyAgICAvLyBUYWtlIHRoZSBuYW1lIGFuZCByZXNvbHZlIGl0IHRvIHRoZSB1bmlxdWUg
aWRlbnRpZmllciBmb3IgdGhlIHJlc291cmNlIGxvY2F0aW9uLgorICAgIC8vIEZvciBleGFtcGxl
LCB0YWtlIHRoZSAianF1ZXJ5IiBhbmQgcmV0dXJuIHRoZSBVUkwgZm9yIHRoZSByZXNvdXJjZS4K
KyAgICBNb2R1bGVMb2FkZXJPYmplY3QqIGxvYWRlciA9IGpzRHluYW1pY0Nhc3Q8TW9kdWxlTG9h
ZGVyT2JqZWN0Kj4oZXhlYy0+dGhpc1ZhbHVlKCkpOworICAgIGlmICghbG9hZGVyKQorICAgICAg
ICByZXR1cm4gSlNWYWx1ZTo6ZW5jb2RlKGpzVW5kZWZpbmVkKCkpOworICAgIHJldHVybiBKU1Zh
bHVlOjplbmNvZGUobG9hZGVyLT5yZXNvbHZlKGV4ZWMsIGV4ZWMtPmFyZ3VtZW50KDApLCBleGVj
LT5hcmd1bWVudCgxKSkpOworfQorCitFbmNvZGVkSlNWYWx1ZSBKU0NfSE9TVF9DQUxMIG1vZHVs
ZUxvYWRlck9iamVjdEZldGNoKEV4ZWNTdGF0ZSogZXhlYykKK3sKKyAgICAvLyBIb29rIHBvaW50
LCBMb2FkZXIuZmV0Y2gKKyAgICAvLyBodHRwczovL3doYXR3Zy5naXRodWIuaW8vbG9hZGVyLyNi
cm93c2VyLWZldGNoCisgICAgLy8gVGFrZSB0aGUga2V5IGFuZCBmZXRjaCB0aGUgcmVzb3VyY2Ug
YWN0dWFsbHkuCisgICAgTW9kdWxlTG9hZGVyT2JqZWN0KiBsb2FkZXIgPSBqc0R5bmFtaWNDYXN0
PE1vZHVsZUxvYWRlck9iamVjdCo+KGV4ZWMtPnRoaXNWYWx1ZSgpKTsKKyAgICBpZiAoIWxvYWRl
cikKKyAgICAgICAgcmV0dXJuIEpTVmFsdWU6OmVuY29kZShqc1VuZGVmaW5lZCgpKTsKKyAgICBy
ZXR1cm4gSlNWYWx1ZTo6ZW5jb2RlKGxvYWRlci0+ZmV0Y2goZXhlYywgZXhlYy0+YXJndW1lbnQo
MCkpKTsKK30KKworRW5jb2RlZEpTVmFsdWUgSlNDX0hPU1RfQ0FMTCBtb2R1bGVMb2FkZXJPYmpl
Y3RUcmFuc2xhdGUoRXhlY1N0YXRlKiBleGVjKQoreworICAgIC8vIEhvb2sgcG9pbnQsIExvYWRl
ci50cmFuc2xhdGUKKyAgICAvLyBodHRwczovL3doYXR3Zy5naXRodWIuaW8vbG9hZGVyLyNicm93
c2VyLXRyYW5zbGF0ZQorICAgIC8vIFRha2UgdGhlIGtleSBhbmQgdGhlIGZldGNoZWQgc291cmNl
IGNvZGUgYW5kIHRyYW5zbGF0ZSBpdCB0byB0aGUgRVM2IHNvdXJjZSBjb2RlLgorICAgIC8vIEl0
IG1heSBiZSB1c2VkIGZvciB0aGUgdHJhbnNwaWxlcnMgaW4gdGhlIGZ1dHVyZS4KKyAgICBNb2R1
bGVMb2FkZXJPYmplY3QqIGxvYWRlciA9IGpzRHluYW1pY0Nhc3Q8TW9kdWxlTG9hZGVyT2JqZWN0
Kj4oZXhlYy0+dGhpc1ZhbHVlKCkpOworICAgIGlmICghbG9hZGVyKQorICAgICAgICByZXR1cm4g
SlNWYWx1ZTo6ZW5jb2RlKGpzVW5kZWZpbmVkKCkpOworICAgIHJldHVybiBKU1ZhbHVlOjplbmNv
ZGUobG9hZGVyLT50cmFuc2xhdGUoZXhlYywgZXhlYy0+YXJndW1lbnQoMCksIGV4ZWMtPmFyZ3Vt
ZW50KDEpKSk7Cit9CisKK0VuY29kZWRKU1ZhbHVlIEpTQ19IT1NUX0NBTEwgbW9kdWxlTG9hZGVy
T2JqZWN0SW5zdGFudGlhdGUoRXhlY1N0YXRlKiBleGVjKQoreworICAgIC8vIEhvb2sgcG9pbnQs
IExvYWRlci5pbnN0YW50aWF0ZQorICAgIC8vIGh0dHBzOi8vd2hhdHdnLmdpdGh1Yi5pby9sb2Fk
ZXIvI2Jyb3dzZXItaW5zdGFudGlhdGUKKyAgICAvLyBUYWtlIHRoZSBrZXkgYW5kIHRoZSB0cmFu
c2xhdGVkIHNvdXJjZSBjb2RlLgorICAgIC8vIEl0IGhhcyB0aGUgY2hhbmNlIHRvIHByb3ZpZGUg
dGhlIG9wdGlvbmFsIG1vZHVsZSBpbnN0YW5jZSB0aGF0IGlzIGRpZmZlcmVudCBmcm9tCisgICAg
Ly8gdGhlIG9yZGluYXJ5IG9uZS4KKyAgICBNb2R1bGVMb2FkZXJPYmplY3QqIGxvYWRlciA9IGpz
RHluYW1pY0Nhc3Q8TW9kdWxlTG9hZGVyT2JqZWN0Kj4oZXhlYy0+dGhpc1ZhbHVlKCkpOworICAg
IGlmICghbG9hZGVyKQorICAgICAgICByZXR1cm4gSlNWYWx1ZTo6ZW5jb2RlKGpzVW5kZWZpbmVk
KCkpOworICAgIHJldHVybiBKU1ZhbHVlOjplbmNvZGUobG9hZGVyLT5pbnN0YW50aWF0ZShleGVj
LCBleGVjLT5hcmd1bWVudCgwKSwgZXhlYy0+YXJndW1lbnQoMSkpKTsKK30KKworfSAvLyBuYW1l
c3BhY2UgSlNDCmRpZmYgLS1naXQgYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9Nb2R1
bGVMb2FkZXJPYmplY3QuaCBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL01vZHVsZUxv
YWRlck9iamVjdC5oCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAuLmYyOGU2MzI5YmYzM2NkYzFlYWZhZWEwMmZjYTM2N2E0
YWM4NzMwYzYKLS0tIC9kZXYvbnVsbAorKysgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGlt
ZS9Nb2R1bGVMb2FkZXJPYmplY3QuaApAQCAtMCwwICsxLDgxIEBACisvKgorICogQ29weXJpZ2h0
IChDKSAyMDE1IEFwcGxlIEluYy4gQWxsIFJpZ2h0cyBSZXNlcnZlZC4KKyAqCisgKiBSZWRpc3Ry
aWJ1dGlvbiBhbmQgdXNlIGluIHNvdXJjZSBhbmQgYmluYXJ5IGZvcm1zLCB3aXRoIG9yIHdpdGhv
dXQKKyAqIG1vZGlmaWNhdGlvbiwgYXJlIHBlcm1pdHRlZCBwcm92aWRlZCB0aGF0IHRoZSBmb2xs
b3dpbmcgY29uZGl0aW9ucworICogYXJlIG1ldDoKKyAqIDEuIFJlZGlzdHJpYnV0aW9ucyBvZiBz
b3VyY2UgY29kZSBtdXN0IHJldGFpbiB0aGUgYWJvdmUgY29weXJpZ2h0CisgKiAgICBub3RpY2Us
IHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIuCisg
KiAyLiBSZWRpc3RyaWJ1dGlvbnMgaW4gYmluYXJ5IGZvcm0gbXVzdCByZXByb2R1Y2UgdGhlIGFi
b3ZlIGNvcHlyaWdodAorICogICAgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQg
dGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyIGluIHRoZQorICogICAgZG9jdW1lbnRhdGlvbiBhbmQv
b3Igb3RoZXIgbWF0ZXJpYWxzIHByb3ZpZGVkIHdpdGggdGhlIGRpc3RyaWJ1dGlvbi4KKyAqCisg
KiBUSElTIFNPRlRXQVJFIElTIFBST1ZJREVEIEJZIEFQUExFIElOQy4gYGBBUyBJUycnIEFORCBB
TlkKKyAqIEVYUFJFU1MgT1IgSU1QTElFRCBXQVJSQU5USUVTLCBJTkNMVURJTkcsIEJVVCBOT1Qg
TElNSVRFRCBUTywgVEhFCisgKiBJTVBMSUVEIFdBUlJBTlRJRVMgT0YgTUVSQ0hBTlRBQklMSVRZ
IEFORCBGSVRORVNTIEZPUiBBIFBBUlRJQ1VMQVIKKyAqIFBVUlBPU0UgQVJFIERJU0NMQUlNRUQu
ICBJTiBOTyBFVkVOVCBTSEFMTCBBUFBMRSBJTkMuIE9SCisgKiBDT05UUklCVVRPUlMgQkUgTElB
QkxFIEZPUiBBTlkgRElSRUNULCBJTkRJUkVDVCwgSU5DSURFTlRBTCwgU1BFQ0lBTCwKKyAqIEVY
RU1QTEFSWSwgT1IgQ09OU0VRVUVOVElBTCBEQU1BR0VTIChJTkNMVURJTkcsIEJVVCBOT1QgTElN
SVRFRCBUTywKKyAqIFBST0NVUkVNRU5UIE9GIFNVQlNUSVRVVEUgR09PRFMgT1IgU0VSVklDRVM7
IExPU1MgT0YgVVNFLCBEQVRBLCBPUgorICogUFJPRklUUzsgT1IgQlVTSU5FU1MgSU5URVJSVVBU
SU9OKSBIT1dFVkVSIENBVVNFRCBBTkQgT04gQU5ZIFRIRU9SWQorICogT0YgTElBQklMSVRZLCBX
SEVUSEVSIElOIENPTlRSQUNULCBTVFJJQ1QgTElBQklMSVRZLCBPUiBUT1JUCisgKiAoSU5DTFVE
SU5HIE5FR0xJR0VOQ0UgT1IgT1RIRVJXSVNFKSBBUklTSU5HIElOIEFOWSBXQVkgT1VUIE9GIFRI
RSBVU0UKKyAqIE9GIFRISVMgU09GVFdBUkUsIEVWRU4gSUYgQURWSVNFRCBPRiBUSEUgUE9TU0lC
SUxJVFkgT0YgU1VDSCBEQU1BR0UuCisgKi8KKworI2lmbmRlZiBNb2R1bGVMb2FkZXJPYmplY3Rf
aAorI2RlZmluZSBNb2R1bGVMb2FkZXJPYmplY3RfaAorCisjaW5jbHVkZSAiSlNPYmplY3QuaCIK
KworbmFtZXNwYWNlIEpTQyB7CisKK2NsYXNzIE1vZHVsZUxvYWRlck9iamVjdCA6IHB1YmxpYyBK
U05vbkZpbmFsT2JqZWN0IHsKK3ByaXZhdGU6CisgICAgTW9kdWxlTG9hZGVyT2JqZWN0KFZNJiwg
U3RydWN0dXJlKik7CitwdWJsaWM6CisgICAgdHlwZWRlZiBKU05vbkZpbmFsT2JqZWN0IEJhc2U7
CisgICAgc3RhdGljIGNvbnN0IHVuc2lnbmVkIFN0cnVjdHVyZUZsYWdzID0gQmFzZTo6U3RydWN0
dXJlRmxhZ3MgfCBPdmVycmlkZXNHZXRPd25Qcm9wZXJ0eVNsb3Q7CisKKyAgICBlbnVtIFN0YXR1
cyB7CisgICAgICAgIEZldGNoLAorICAgICAgICBUcmFuc2xhdGUsCisgICAgICAgIEluc3RhbnRp
YXRlLAorICAgICAgICBDb2xsZWN0LAorICAgICAgICBMaW5rLAorICAgICAgICBSZWFkeSwKKyAg
ICB9OworCisgICAgc3RhdGljIE1vZHVsZUxvYWRlck9iamVjdCogY3JlYXRlKFZNJiB2bSwgSlNH
bG9iYWxPYmplY3QqIGdsb2JhbE9iamVjdCwgU3RydWN0dXJlKiBzdHJ1Y3R1cmUpCisgICAgewor
ICAgICAgICBNb2R1bGVMb2FkZXJPYmplY3QqIG9iamVjdCA9IG5ldyAoTm90TnVsbCwgYWxsb2Nh
dGVDZWxsPE1vZHVsZUxvYWRlck9iamVjdD4odm0uaGVhcCkpIE1vZHVsZUxvYWRlck9iamVjdCh2
bSwgc3RydWN0dXJlKTsKKyAgICAgICAgb2JqZWN0LT5maW5pc2hDcmVhdGlvbih2bSwgZ2xvYmFs
T2JqZWN0KTsKKyAgICAgICAgcmV0dXJuIG9iamVjdDsKKyAgICB9CisKKyAgICBERUNMQVJFX0lO
Rk87CisKKyAgICBzdGF0aWMgU3RydWN0dXJlKiBjcmVhdGVTdHJ1Y3R1cmUoVk0mIHZtLCBKU0ds
b2JhbE9iamVjdCogZ2xvYmFsT2JqZWN0LCBKU1ZhbHVlIHByb3RvdHlwZSkKKyAgICB7CisgICAg
ICAgIHJldHVybiBTdHJ1Y3R1cmU6OmNyZWF0ZSh2bSwgZ2xvYmFsT2JqZWN0LCBwcm90b3R5cGUs
IFR5cGVJbmZvKE9iamVjdFR5cGUsIFN0cnVjdHVyZUZsYWdzKSwgaW5mbygpKTsKKyAgICB9CisK
KyAgICAvLyBBUElzIHRvIGNvbnRyb2wgdGhlIG1vZHVsZSBsb2FkZXIuCisgICAgSlNWYWx1ZSBw
cm92aWRlKEV4ZWNTdGF0ZSosIEpTVmFsdWUga2V5LCBTdGF0dXMsIGNvbnN0IFN0cmluZyYpOwor
ICAgIEpTVmFsdWUgcmVxdWVzdEluc3RhbnRpYXRlQWxsKEV4ZWNTdGF0ZSosIEpTVmFsdWUga2V5
KTsKKworICAgIC8vIFBsYXRmb3JtIGRlcGVuZGVudCBob29rZWQgQVBJcy4KKyAgICBKU1ZhbHVl
IHJlc29sdmUoRXhlY1N0YXRlKiwgSlNWYWx1ZSBuYW1lLCBKU1ZhbHVlIHJlZmVycmVyKTsKKyAg
ICBKU1ZhbHVlIGZldGNoKEV4ZWNTdGF0ZSosIEpTVmFsdWUga2V5KTsKKyAgICBKU1ZhbHVlIHRy
YW5zbGF0ZShFeGVjU3RhdGUqLCBKU1ZhbHVlIGtleSwgSlNWYWx1ZSBwYXlsb2FkKTsKKyAgICBK
U1ZhbHVlIGluc3RhbnRpYXRlKEV4ZWNTdGF0ZSosIEpTVmFsdWUga2V5LCBKU1ZhbHVlIHNvdXJj
ZSk7CisKKyAgICBzdGF0aWMgYm9vbCBnZXRPd25Qcm9wZXJ0eVNsb3QoSlNPYmplY3QqLCBFeGVj
U3RhdGUqLCBQcm9wZXJ0eU5hbWUsIFByb3BlcnR5U2xvdCYpOworCitwcm90ZWN0ZWQ6CisgICAg
dm9pZCBmaW5pc2hDcmVhdGlvbihWTSYsIEpTR2xvYmFsT2JqZWN0Kik7Cit9OworCit9IC8vIG5h
bWVzcGFjZSBKU0MKKworI2VuZGlmIC8vIE1vZHVsZUxvYWRlck9iamVjdF9oCmRpZmYgLS1naXQg
YS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9PcHRpb25zLmggYi9Tb3VyY2UvSmF2YVNj
cmlwdENvcmUvcnVudGltZS9PcHRpb25zLmgKaW5kZXggMjU5NjA3ODcxYzY1ZjI3ZjRjNjYyODll
OTkyNmVhZDI1ZDUxMzBjYi4uZTM3Yjk5YmYwOTRhYzRhNDVjNTQ1MjMwNjFjMzZiZGZiZGM2ODBk
MyAxMDA2NDQKLS0tIGEvU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvT3B0aW9ucy5oCisr
KyBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL09wdGlvbnMuaApAQCAtMzI0LDYgKzMy
NCw4IEBAIHR5cGVkZWYgY29uc3QgY2hhciogb3B0aW9uU3RyaW5nOwogICAgIHYodW5zaWduZWQs
IHdhdGNoZG9nLCAwLCAid2F0Y2hkb2cgdGltZW91dCAoMCA9IERpc2FibGVkLCBOID0gYSB0aW1l
b3V0IHBlcmlvZCBvZiBOIG1pbGxpc2Vjb25kcykiKSBcCiAgICAgXAogICAgIHYoYm9vbCwgZHVt
cE1vZHVsZVJlY29yZCwgZmFsc2UsIG51bGxwdHIpIFwKKyAgICB2KGJvb2wsIGR1bXBNb2R1bGVM
b2FkaW5nU3RhdGUsIGZhbHNlLCBudWxscHRyKSBcCisgICAgdihib29sLCBleHBvc2VJbnRlcm5h
bE1vZHVsZUxvYWRlciwgZmFsc2UsICJleHBvc2UgdGhlIGludGVybmFsIG1vZHVsZSBsb2FkZXIg
b2JqZWN0IHRvIHRoZSBnbG9iYWwgc3BhY2UgZm9yIGRlYnVnZ2luZyIpIFwKIAogY2xhc3MgT3B0
aW9ucyB7CiBwdWJsaWM6CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9iaW5kaW5ncy9qcy9K
U0RPTVdpbmRvd0Jhc2UuY3BwIGIvU291cmNlL1dlYkNvcmUvYmluZGluZ3MvanMvSlNET01XaW5k
b3dCYXNlLmNwcAppbmRleCA5YWIwYThmMGQwZmJkNzhlNWU1N2Q1ODA0NzdlNjU1Y2I4OTU5NWQx
Li5hMjkwZGRjOWU1ODFhY2Q2MzQzMDE3MDBiYWY4MjdjYTFhNGVmZDAyIDEwMDY0NAotLS0gYS9T
b3VyY2UvV2ViQ29yZS9iaW5kaW5ncy9qcy9KU0RPTVdpbmRvd0Jhc2UuY3BwCisrKyBiL1NvdXJj
ZS9XZWJDb3JlL2JpbmRpbmdzL2pzL0pTRE9NV2luZG93QmFzZS5jcHAKQEAgLTU2LDcgKzU2LDcg
QEAgc3RhdGljIGJvb2wgc2hvdWxkQWxsb3dBY2Nlc3NGcm9tKGNvbnN0IEpTR2xvYmFsT2JqZWN0
KiB0aGlzT2JqZWN0LCBFeGVjU3RhdGUqIGUKIAogY29uc3QgQ2xhc3NJbmZvIEpTRE9NV2luZG93
QmFzZTo6c19pbmZvID0geyAiV2luZG93IiwgJkpTRE9NR2xvYmFsT2JqZWN0OjpzX2luZm8sIDAs
IENSRUFURV9NRVRIT0RfVEFCTEUoSlNET01XaW5kb3dCYXNlKSB9OwogCi1jb25zdCBHbG9iYWxP
YmplY3RNZXRob2RUYWJsZSBKU0RPTVdpbmRvd0Jhc2U6OnNfZ2xvYmFsT2JqZWN0TWV0aG9kVGFi
bGUgPSB7ICZzaG91bGRBbGxvd0FjY2Vzc0Zyb20sICZzdXBwb3J0c1Byb2ZpbGluZywgJnN1cHBv
cnRzUmljaFNvdXJjZUluZm8sICZzaG91bGRJbnRlcnJ1cHRTY3JpcHQsICZqYXZhU2NyaXB0UnVu
dGltZUZsYWdzLCAmcXVldWVUYXNrVG9FdmVudExvb3AsICZzaG91bGRJbnRlcnJ1cHRTY3JpcHRC
ZWZvcmVUaW1lb3V0IH07Citjb25zdCBHbG9iYWxPYmplY3RNZXRob2RUYWJsZSBKU0RPTVdpbmRv
d0Jhc2U6OnNfZ2xvYmFsT2JqZWN0TWV0aG9kVGFibGUgPSB7ICZzaG91bGRBbGxvd0FjY2Vzc0Zy
b20sICZzdXBwb3J0c1Byb2ZpbGluZywgJnN1cHBvcnRzUmljaFNvdXJjZUluZm8sICZzaG91bGRJ
bnRlcnJ1cHRTY3JpcHQsICZqYXZhU2NyaXB0UnVudGltZUZsYWdzLCAmcXVldWVUYXNrVG9FdmVu
dExvb3AsICZzaG91bGRJbnRlcnJ1cHRTY3JpcHRCZWZvcmVUaW1lb3V0LCBudWxscHRyLCBudWxs
cHRyLCBudWxscHRyLCBudWxscHRyIH07CiAKIEpTRE9NV2luZG93QmFzZTo6SlNET01XaW5kb3dC
YXNlKFZNJiB2bSwgU3RydWN0dXJlKiBzdHJ1Y3R1cmUsIFBhc3NSZWZQdHI8RE9NV2luZG93PiB3
aW5kb3csIEpTRE9NV2luZG93U2hlbGwqIHNoZWxsKQogICAgIDogSlNET01HbG9iYWxPYmplY3Qo
dm0sIHN0cnVjdHVyZSwgJnNoZWxsLT53b3JsZCgpLCAmc19nbG9iYWxPYmplY3RNZXRob2RUYWJs
ZSkKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2JpbmRpbmdzL2pzL0pTV29ya2VyR2xvYmFs
U2NvcGVCYXNlLmNwcCBiL1NvdXJjZS9XZWJDb3JlL2JpbmRpbmdzL2pzL0pTV29ya2VyR2xvYmFs
U2NvcGVCYXNlLmNwcAppbmRleCBhYWE1ZGJhNTUxNzFjYjk1NDFiYTY1ZTFkMjQ3YWIyOWM5ZDlj
N2MzLi41MDQ0YmMxNzgzNTEzYjliMWEyNmJkM2JkMWNiNWMwMGI3MGExMGQwIDEwMDY0NAotLS0g
YS9Tb3VyY2UvV2ViQ29yZS9iaW5kaW5ncy9qcy9KU1dvcmtlckdsb2JhbFNjb3BlQmFzZS5jcHAK
KysrIGIvU291cmNlL1dlYkNvcmUvYmluZGluZ3MvanMvSlNXb3JrZXJHbG9iYWxTY29wZUJhc2Uu
Y3BwCkBAIC00Myw3ICs0Myw3IEBAIG5hbWVzcGFjZSBXZWJDb3JlIHsKIAogY29uc3QgQ2xhc3NJ
bmZvIEpTV29ya2VyR2xvYmFsU2NvcGVCYXNlOjpzX2luZm8gPSB7ICJXb3JrZXJHbG9iYWxTY29w
ZSIsICZKU0RPTUdsb2JhbE9iamVjdDo6c19pbmZvLCAwLCBDUkVBVEVfTUVUSE9EX1RBQkxFKEpT
V29ya2VyR2xvYmFsU2NvcGVCYXNlKSB9OwogCi1jb25zdCBHbG9iYWxPYmplY3RNZXRob2RUYWJs
ZSBKU1dvcmtlckdsb2JhbFNjb3BlQmFzZTo6c19nbG9iYWxPYmplY3RNZXRob2RUYWJsZSA9IHsg
JmFsbG93c0FjY2Vzc0Zyb20sICZzdXBwb3J0c1Byb2ZpbGluZywgJnN1cHBvcnRzUmljaFNvdXJj
ZUluZm8sICZzaG91bGRJbnRlcnJ1cHRTY3JpcHQsICZqYXZhU2NyaXB0UnVudGltZUZsYWdzLCAm
cXVldWVUYXNrVG9FdmVudExvb3AsICZzaG91bGRJbnRlcnJ1cHRTY3JpcHRCZWZvcmVUaW1lb3V0
IH07Citjb25zdCBHbG9iYWxPYmplY3RNZXRob2RUYWJsZSBKU1dvcmtlckdsb2JhbFNjb3BlQmFz
ZTo6c19nbG9iYWxPYmplY3RNZXRob2RUYWJsZSA9IHsgJmFsbG93c0FjY2Vzc0Zyb20sICZzdXBw
b3J0c1Byb2ZpbGluZywgJnN1cHBvcnRzUmljaFNvdXJjZUluZm8sICZzaG91bGRJbnRlcnJ1cHRT
Y3JpcHQsICZqYXZhU2NyaXB0UnVudGltZUZsYWdzLCAmcXVldWVUYXNrVG9FdmVudExvb3AsICZz
aG91bGRJbnRlcnJ1cHRTY3JpcHRCZWZvcmVUaW1lb3V0LCBudWxscHRyLCBudWxscHRyLCBudWxs
cHRyLCBudWxscHRyIH07CiAKIEpTV29ya2VyR2xvYmFsU2NvcGVCYXNlOjpKU1dvcmtlckdsb2Jh
bFNjb3BlQmFzZShKU0M6OlZNJiB2bSwgSlNDOjpTdHJ1Y3R1cmUqIHN0cnVjdHVyZSwgUGFzc1Jl
ZlB0cjxXb3JrZXJHbG9iYWxTY29wZT4gaW1wbCkKICAgICA6IEpTRE9NR2xvYmFsT2JqZWN0KHZt
LCBzdHJ1Y3R1cmUsICZub3JtYWxXb3JsZCh2bSksICZzX2dsb2JhbE9iamVjdE1ldGhvZFRhYmxl
KQo=
</data>

          </attachment>
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>259100</attachid>
            <date>2015-08-15 12:48:36 -0700</date>
            <delta_ts>2015-08-15 13:07:56 -0700</delta_ts>
            <desc>Patch</desc>
            <filename>bug-147876-20150815124816.patch</filename>
            <type>text/plain</type>
            <size>146011</size>
            <attacher name="Yusuke Suzuki">ysuzuki</attacher>
            
              <data encoding="base64">U3VidmVyc2lvbiBSZXZpc2lvbjogMTg4NDk4CmRpZmYgLS1naXQgYS9Tb3VyY2UvSmF2YVNjcmlw
dENvcmUvQ2hhbmdlTG9nIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL0NoYW5nZUxvZwppbmRleCBm
YmY4YzE0NzE5ODkxZmYzMTliMzA1MGQwZDUxY2FhNzNjNDBlYjU5Li5iNzljNjBkNThkMjI1MTg4
MDYxN2Q1Y2ViMzgyMWQzODA2YTVkNmI5IDEwMDY0NAotLS0gYS9Tb3VyY2UvSmF2YVNjcmlwdENv
cmUvQ2hhbmdlTG9nCisrKyBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9DaGFuZ2VMb2cKQEAgLTEs
MyArMSwxOTMgQEAKKzIwMTUtMDgtMTUgIFl1c3VrZSBTdXp1a2kgIDx1dGF0YW5lLnRlYUBnbWFp
bC5jb20+CisKKyAgICAgICAgW0VTNl0gcHJvdG90eXBpbmcgbW9kdWxlIGxvYWRlciBpbiBKU0Mg
c2hlbGwKKyAgICAgICAgaHR0cHM6Ly9idWdzLndlYmtpdC5vcmcvc2hvd19idWcuY2dpP2lkPTE0
Nzg3NgorCisgICAgICAgIFJldmlld2VkIGJ5IE5PQk9EWSAoT09QUyEpLgorCisgICAgICAgIFRo
aXMgcGF0Y2ggaW1wbGVtZW50cyBFUzYgTW9kdWxlIExvYWRlciBwYXJ0LiBUaGUgaW1wbGVtZW50
YXRpb24gaXMgYmFzZWQgb24KKyAgICAgICAgdGhlIGxhdGVzdCBkcmFmdFsxLCAyXS4gVGhlIG5h
aXZlIGltcGxlbWVudGF0aW9uIHBvc2VzIHNldmVyYWwgcHJvYmxlbXMuCisgICAgICAgIFRoaXMg
cGF0Y2ggYXR0ZW1wdHMgdG8gc29sdmUgdGhlIHNwZWMgaXNzdWVzIGFuZCBwcm9wb3NlcyB0aGUg
Zml4WzMsIDQsIDVdLgorCisgICAgICAgIFdlIGNvbnN0cnVjdCB0aGUgSlNDIGludGVybmFsIG1v
ZHVsZSBsb2FkZXIgYmFzZWQgb24gdGhlIEVTNiBQcm9taXNlcy4KKyAgICAgICAgVGhlIGNoYWlu
IG9mIHRoZSBwcm9taXNlcyByZXByZXNlbnRzIHRoZSBkZXBlbmRlbmN5IGdyYXBoIG9mIHRoZSBt
b2R1bGVzIGFuZAorICAgICAgICBpdCBhdXRvbWF0aWNhbGx5IGVuYWJsZXMgYXN5bmNocm9ub3Vz
IG1vZHVsZSBmZXRjaGluZy4KKyAgICAgICAgVG8gbGV2ZXJhZ2UgdGhlIFByb21pc2VzIGludGVy
bmFsbHksIHdlIGFkZCB0aGUgc2V2ZXJhbCBub24tdXNlci1vYnNlcnZhYmxlCisgICAgICAgIHBy
aXZhdGUgbWV0aG9kcywgbGlrZSBAdGhlbiwgQGFsbC4gQW5kIHJlZmFjdG9yIHRoZSBleGlzdGlu
ZyBQcm9taXNlcworICAgICAgICBpbXBsZW1lbnRhdGlvbiB0byBtYWtlIGl0IGVhc3kgdG8gdXNl
IGludGVybmFsbHkuCisKKyAgICAgICAgVGhlIGxvYWRlciBoYXMgc2V2ZXJhbCBwbGF0Zm9ybS1k
ZXBlbmRlbnQgaG9va3MuIFRoZSBwbGF0Zm9ybSBjYW4gaW1wbGVtZW50CisgICAgICAgIHRoZXNl
IGhvb2tzIHRvIHByb3ZpZGUgdGhlIGZ1bmN0aW9hbGl0eSBtaXNzaW5nIGluIHRoZSBtb2R1bGUg
bG9hZGVycywgbGlrZQorICAgICAgICAiaG93IHRvIGZldGNoIHRoZSByZXNvdXJjZXMiLiBUaGUg
bWV0aG9kIHRhYmxlIG9mIHRoZSBKU0dsb2JhbE9iamVjdCBpcyBleHRlbmRlZAorICAgICAgICB0
byBhY2NlcHQgdGhlc2UgaG9va3MgZnJvbSB0aGUgcGxhdGZvcm0uCisKKyAgICAgICAgVGhpcyBw
YXRjaCBmb2N1cyBvbiB0aGUgbG9hZGluZyBwYXJ0LiBTbyB3ZSBkb24ndCBjcmVhdGUgdGhlIG1v
ZHVsZSBlbnZpcm9ubWVudAorICAgICAgICBhbmQgZG9uJ3QgbGluayB0aGUgbW9kdWxlcyB5ZXQu
CisKKyAgICAgICAgVG8gdGVzdCB0aGUgY3VycmVudCBtb2R1bGUgcHJvZ3Jlc3MgZWFzaWx5LCB3
ZSBhZGQgdGhlIGAtbWAgb3B0aW9uIHRvIHRoZSBKU0Mgc2hlbGwuCisgICAgICAgIFdoZW4gdGhp
cyBvcHRpb24gaXMgc3BlY2lmaWVkLCB3ZSBsb2FkIHRoZSBnaXZlbiBzY3JpcHQgYXMgdGhlIG1v
ZHVsZS4gQW5kIHRvIHVzZQorICAgICAgICB0aGUgbW9kdWxlIGxvYWRpbmcgaW5zaWRlIHRoZSBK
U0Mgc2hlbGwsIHdlIGFkZGVkIHRoZSBzaW1wbGUgbG9hZGVyIGhvb2sgZm9yIGZldGNoaW5nLgor
ICAgICAgICBJdCBmZXRjaGVzIHRoZSBtb2R1bGUgY29udGVudCBmcm9tIHRoZSBmaWxlIHN5c3Rl
bS4KKworICAgICAgICBbMV06IGh0dHBzOi8vd2hhdHdnLmdpdGh1Yi5pby9sb2FkZXIvCisgICAg
ICAgIFsyXTogaHR0cHM6Ly9naXRodWIuY29tL3doYXR3Zy9sb2FkZXIvY29tbWl0LzIxNGM3YTY2
MjViNDQ1YmRmNDExYzM5OTg0ZjM2ZjAxMTM5YTI0YmUKKyAgICAgICAgWzNdOiBodHRwczovL2dp
dGh1Yi5jb20vd2hhdHdnL2xvYWRlci9wdWxsLzY2CisgICAgICAgIFs0XTogaHR0cHM6Ly9naXRo
dWIuY29tL3doYXR3Zy9sb2FkZXIvcHVsbC82NworICAgICAgICBbNV06IGh0dHBzOi8vZ2l0aHVi
LmNvbS93aGF0d2cvbG9hZGVyL2lzc3Vlcy82OAorCisgICAgICAgICogQ01ha2VMaXN0cy50eHQ6
CisgICAgICAgICogRGVyaXZlZFNvdXJjZXMubWFrZToKKyAgICAgICAgKiBKYXZhU2NyaXB0Q29y
ZS52Y3hwcm9qL0phdmFTY3JpcHRDb3JlLnZjeHByb2o6CisgICAgICAgICogSmF2YVNjcmlwdENv
cmUudmN4cHJvai9KYXZhU2NyaXB0Q29yZS52Y3hwcm9qLmZpbHRlcnM6CisgICAgICAgICogSmF2
YVNjcmlwdENvcmUueGNvZGVwcm9qL3Byb2plY3QucGJ4cHJvajoKKyAgICAgICAgKiBidWlsdGlu
cy9CdWlsdGluTmFtZXMuaDoKKyAgICAgICAgKEpTQzo6QnVpbHRpbk5hbWVzOjpsb29rVXBQcml2
YXRlTmFtZSk6CisgICAgICAgIChKU0M6OkJ1aWx0aW5OYW1lczo6bG9va1VwUHVibGljTmFtZSk6
CisgICAgICAgIChKU0M6OkJ1aWx0aW5OYW1lczo6Z2V0UHJpdmF0ZU5hbWUpOiBEZWxldGVkLgor
ICAgICAgICAoSlNDOjpCdWlsdGluTmFtZXM6OmdldFB1YmxpY05hbWUpOiBEZWxldGVkLgorICAg
ICAgICBUbyB1c2UgdGhlIEVTNiBNYXAgaW4gdGhlIExvYWRlciBpbXBsZW1lbnRhdGlvbiwgd2Ug
YWRkZWQgQGdldCBhbmQgQHNldCBtZXRob2RzIHRvIHRoZSBNYXAuCisgICAgICAgIEJ1dCBpdCBj
b25mbGljdHMgd2l0aCB0aGUgZXhpc3RpbmcgYGdldFByaXZhdGVOYW1lYCBtZXRob2QuIFJlbmFt
ZSBpdCB0byBgbG9va1VwUHJpdmF0ZU5hbWVgLgorICAgICAgICAqIGJ1aWx0aW5zL01vZHVsZUxv
YWRlck9iamVjdC5qczogQWRkZWQuCisgICAgICAgIChzZXRTdGF0ZVRvTWF4KToKKyAgICAgICAg
KG5ld1JlZ2lzdHJ5RW50cnkpOgorICAgICAgICAoZm9yY2VGdWxmaWxsUHJvbWlzZSk6CisgICAg
ICAgIChmdWxmaWxsRmV0Y2gpOgorICAgICAgICAoZnVsZmlsbFRyYW5zbGF0ZSk6CisgICAgICAg
IChmdWxmaWxsSW5zdGFudGlhdGUpOgorICAgICAgICAoaW5zdGFudGlhdGlvbik6CisgICAgICAg
IChyZXF1ZXN0RmV0Y2gpOgorICAgICAgICAocmVxdWVzdFRyYW5zbGF0ZSk6CisgICAgICAgIChy
ZXF1ZXN0SW5zdGFudGlhdGUpOgorICAgICAgICAocmVxdWVzdENvbGxlY3QuY29sbGVjdFByb21p
c2UudGhpcy5yZXF1ZXN0SW5zdGFudGlhdGUudGhlbi4pOgorICAgICAgICAocmVxdWVzdENvbGxl
Y3QuY29sbGVjdFByb21pc2UudGhpcy5yZXF1ZXN0SW5zdGFudGlhdGUudGhlbik6CisgICAgICAg
IChyZXF1ZXN0Q29sbGVjdCk6CisgICAgICAgIChyZXF1ZXN0SW5zdGFudGlhdGVBbGwpOgorICAg
ICAgICAocHJvdmlkZSk6CisgICAgICAgICogYnVpbHRpbnMvT3BlcmF0aW9ucy5Qcm9taXNlLmpz
OgorICAgICAgICAoLm9uRnVsZmlsbGVkKToKKyAgICAgICAgKC5vblJlamVjdGVkKToKKyAgICAg
ICAgKHByb21pc2VUaGVuKToKKyAgICAgICAgKiBidWlsdGlucy9Qcm9taXNlLnByb3RvdHlwZS5q
czoKKyAgICAgICAgKHRoZW4pOgorICAgICAgICAocHJpdmF0ZVRoZW4pOgorICAgICAgICAoLm9u
RnVsZmlsbGVkKTogRGVsZXRlZC4KKyAgICAgICAgKC5vblJlamVjdGVkKTogRGVsZXRlZC4KKyAg
ICAgICAgKiBidWlsdGlucy9Qcm9taXNlQ29uc3RydWN0b3IuanM6CisgICAgICAgIChwcml2YXRl
QWxsLm5ld1Jlc29sdmVFbGVtZW50KToKKyAgICAgICAgKHByaXZhdGVBbGwpOgorICAgICAgICAq
IGpzYy5jcHA6CisgICAgICAgIChzdHJpbmdGcm9tVVRGKToKKyAgICAgICAgKGpzY1NvdXJjZSk6
CisgICAgICAgIChHbG9iYWxPYmplY3Q6OmxvYWRlckZldGNoKToKKyAgICAgICAgKGZ1bmN0aW9u
Q2hlY2tNb2R1bGVTeW50YXgpOgorICAgICAgICAoZHVtcEV4Y2VwdGlvbik6CisgICAgICAgIChy
dW5XaXRoU2NyaXB0cyk6CisgICAgICAgIChwcmludFVzYWdlU3RhdGVtZW50KToKKyAgICAgICAg
KENvbW1hbmRMaW5lOjpwYXJzZUFyZ3VtZW50cyk6CisgICAgICAgIChqc2NtYWluKToKKyAgICAg
ICAgKENvbW1hbmRMaW5lOjpDb21tYW5kTGluZSk6IERlbGV0ZWQuCisgICAgICAgICogcGFyc2Vy
L0xleGVyLmNwcDoKKyAgICAgICAgKEpTQzo6TGV4ZXI8TENoYXI+OjpwYXJzZUlkZW50aWZpZXIp
OgorICAgICAgICAoSlNDOjpMZXhlcjxVQ2hhcj46OnBhcnNlSWRlbnRpZmllcik6CisgICAgICAg
ICogcGFyc2VyL01vZHVsZUFuYWx5emVyLmNwcDoKKyAgICAgICAgKEpTQzo6TW9kdWxlQW5hbHl6
ZXI6Ok1vZHVsZUFuYWx5emVyKToKKyAgICAgICAgKEpTQzo6TW9kdWxlQW5hbHl6ZXI6OmV4cG9y
dFZhcmlhYmxlKToKKyAgICAgICAgKEpTQzo6TW9kdWxlQW5hbHl6ZXI6OmFuYWx5emUpOgorICAg
ICAgICAqIHBhcnNlci9Nb2R1bGVBbmFseXplci5oOgorICAgICAgICAoSlNDOjpNb2R1bGVBbmFs
eXplcjo6bW9kdWxlUmVjb3JkKToKKyAgICAgICAgKiBwYXJzZXIvTW9kdWxlUmVjb3JkLmNwcDoK
KyAgICAgICAgKEpTQzo6cHJpbnRhYmxlTmFtZSk6IERlbGV0ZWQuCisgICAgICAgIChKU0M6Ok1v
ZHVsZVJlY29yZDo6ZHVtcCk6IERlbGV0ZWQuCisgICAgICAgIE1vZHVsZVJlY29yZCBpcyBjb252
ZXJ0ZWQgdG8gSlNNb2R1bGVSZWNvcmQgdGhhdCBpcyBhbGxvY2F0ZWQgYXMgYSBKUyBvYmplY3Qu
CisgICAgICAgICogcGFyc2VyL01vZHVsZVJlY29yZC5oOgorICAgICAgICAoSlNDOjpNb2R1bGVS
ZWNvcmQ6OkltcG9ydEVudHJ5Ojppc05hbWVzcGFjZSk6IERlbGV0ZWQuCisgICAgICAgIChKU0M6
Ok1vZHVsZVJlY29yZDo6Y3JlYXRlKTogRGVsZXRlZC4KKyAgICAgICAgKEpTQzo6TW9kdWxlUmVj
b3JkOjphcHBlbmRSZXF1ZXN0ZWRNb2R1bGUpOiBEZWxldGVkLgorICAgICAgICAoSlNDOjpNb2R1
bGVSZWNvcmQ6OmFkZEltcG9ydEVudHJ5KTogRGVsZXRlZC4KKyAgICAgICAgKEpTQzo6TW9kdWxl
UmVjb3JkOjphZGRFeHBvcnRFbnRyeSk6IERlbGV0ZWQuCisgICAgICAgIChKU0M6Ok1vZHVsZVJl
Y29yZDo6YWRkU3RhckV4cG9ydEVudHJ5KTogRGVsZXRlZC4KKyAgICAgICAgKiBwYXJzZXIvTm9k
ZXMuaDoKKyAgICAgICAgKiBwYXJzZXIvTm9kZXNBbmFseXplTW9kdWxlLmNwcDoKKyAgICAgICAg
KEpTQzo6SW1wb3J0RGVjbGFyYXRpb25Ob2RlOjphbmFseXplTW9kdWxlKToKKyAgICAgICAgKEpT
Qzo6RXhwb3J0QWxsRGVjbGFyYXRpb25Ob2RlOjphbmFseXplTW9kdWxlKToKKyAgICAgICAgKEpT
Qzo6RXhwb3J0TmFtZWREZWNsYXJhdGlvbk5vZGU6OmFuYWx5emVNb2R1bGUpOgorICAgICAgICAq
IHJ1bnRpbWUvQ29tbW9uSWRlbnRpZmllcnMuY3BwOgorICAgICAgICAoSlNDOjpDb21tb25JZGVu
dGlmaWVyczo6bG9va1VwUHJpdmF0ZU5hbWUpOgorICAgICAgICAoSlNDOjpDb21tb25JZGVudGlm
aWVyczo6bG9va1VwUHVibGljTmFtZSk6CisgICAgICAgIChKU0M6OkNvbW1vbklkZW50aWZpZXJz
OjpnZXRQcml2YXRlTmFtZSk6IERlbGV0ZWQuCisgICAgICAgIChKU0M6OkNvbW1vbklkZW50aWZp
ZXJzOjpnZXRQdWJsaWNOYW1lKTogRGVsZXRlZC4KKyAgICAgICAgKiBydW50aW1lL0NvbW1vbklk
ZW50aWZpZXJzLmg6CisgICAgICAgICogcnVudGltZS9Db21wbGV0aW9uLmNwcDoKKyAgICAgICAg
KEpTQzo6Y2hlY2tNb2R1bGVTeW50YXgpOgorICAgICAgICAoSlNDOjpldmFsdWF0ZU1vZHVsZSk6
CisgICAgICAgIEFkZCBldmFsdWF0ZU1vZHVsZS4gVGhhdCB3aWxsIGJlIHVzZWQgdG8gZXZhbHVh
dGUgdGhlIG1vZHVsZSBvbmNlIHRoZSBpbXBsZW1lbnRhdGlvbiBpcyBjb21wbGV0ZWQuCisgICAg
ICAgIEJ1dCBub3csIGl0IGp1c3QgbG9hZHMgdGhlIG1vZHVsZXMuCisgICAgICAgICogcnVudGlt
ZS9Db21wbGV0aW9uLmg6CisgICAgICAgICogcnVudGltZS9FeGNlcHRpb25IZWxwZXJzLmNwcDoK
KyAgICAgICAgKEpTQzo6Y3JlYXRlVW5kZWZpbmVkVmFyaWFibGVFcnJvcik6CisgICAgICAgICog
cnVudGltZS9JZGVudGlmaWVyLmg6CisgICAgICAgICogcnVudGltZS9KU0dsb2JhbE9iamVjdC5j
cHA6CisgICAgICAgIChKU0M6OkpTR2xvYmFsT2JqZWN0Ojppbml0KToKKyAgICAgICAgKEpTQzo6
SlNHbG9iYWxPYmplY3Q6OnZpc2l0Q2hpbGRyZW4pOgorICAgICAgICAqIHJ1bnRpbWUvSlNHbG9i
YWxPYmplY3QuaDoKKyAgICAgICAgKEpTQzo6SlNHbG9iYWxPYmplY3Q6Om1vZHVsZUxvYWRlcik6
CisgICAgICAgIChKU0M6OkpTR2xvYmFsT2JqZWN0Ojptb2R1bGVSZWNvcmRTdHJ1Y3R1cmUpOgor
ICAgICAgICAoSlNDOjpKU0dsb2JhbE9iamVjdDo6cHJvbWlzZUNvbnN0cnVjdG9yKTogRGVsZXRl
ZC4KKyAgICAgICAgKEpTQzo6SlNHbG9iYWxPYmplY3Q6OnByb21pc2VQcm90b3R5cGUpOiBEZWxl
dGVkLgorICAgICAgICAoSlNDOjpKU0dsb2JhbE9iamVjdDo6cHJvbWlzZVN0cnVjdHVyZSk6IERl
bGV0ZWQuCisgICAgICAgIEluY2x1ZGVzIFByb21pc2UgcmVmYWN0b3JpbmcuCisgICAgICAgICog
cnVudGltZS9KU01vZHVsZVJlY29yZC5jcHA6IFJlbmFtZWQgZnJvbSBTb3VyY2UvSmF2YVNjcmlw
dENvcmUvcGFyc2VyL01vZHVsZVJlY29yZC5jcHAuCisgICAgICAgIChKU0M6OkpTTW9kdWxlUmVj
b3JkOjpkZXN0cm95KToKKyAgICAgICAgKEpTQzo6SlNNb2R1bGVSZWNvcmQ6OmZpbmlzaENyZWF0
aW9uKToKKyAgICAgICAgKEpTQzo6cHJpbnRhYmxlTmFtZSk6CisgICAgICAgIChKU0M6OkpTTW9k
dWxlUmVjb3JkOjpkdW1wKToKKyAgICAgICAgKiBydW50aW1lL0pTTW9kdWxlUmVjb3JkLmg6IFJl
bmFtZWQgZnJvbSBTb3VyY2UvSmF2YVNjcmlwdENvcmUvcGFyc2VyL01vZHVsZVJlY29yZC5oLgor
ICAgICAgICAoSlNDOjpKU01vZHVsZVJlY29yZDo6SW1wb3J0RW50cnk6OmlzTmFtZXNwYWNlKToK
KyAgICAgICAgKEpTQzo6SlNNb2R1bGVSZWNvcmQ6OmNyZWF0ZVN0cnVjdHVyZSk6CisgICAgICAg
IChKU0M6OkpTTW9kdWxlUmVjb3JkOjpjcmVhdGUpOgorICAgICAgICAoSlNDOjpKU01vZHVsZVJl
Y29yZDo6cmVxdWVzdGVkTW9kdWxlcyk6CisgICAgICAgIChKU0M6OkpTTW9kdWxlUmVjb3JkOjpK
U01vZHVsZVJlY29yZCk6CisgICAgICAgIChKU0M6OkpTTW9kdWxlUmVjb3JkOjphcHBlbmRSZXF1
ZXN0ZWRNb2R1bGUpOgorICAgICAgICAoSlNDOjpKU01vZHVsZVJlY29yZDo6YWRkSW1wb3J0RW50
cnkpOgorICAgICAgICAoSlNDOjpKU01vZHVsZVJlY29yZDo6YWRkRXhwb3J0RW50cnkpOgorICAg
ICAgICAoSlNDOjpKU01vZHVsZVJlY29yZDo6YWRkU3RhckV4cG9ydEVudHJ5KToKKyAgICAgICAg
KiBydW50aW1lL0pTUHJvbWlzZUNvbnN0cnVjdG9yLmNwcDoKKyAgICAgICAgKEpTQzo6SlNQcm9t
aXNlQ29uc3RydWN0b3I6OmZpbmlzaENyZWF0aW9uKToKKyAgICAgICAgKiBydW50aW1lL0pTUHJv
bWlzZURlZmVycmVkLmNwcDoKKyAgICAgICAgKEpTQzo6Y2FsbEZ1bmN0aW9uKToKKyAgICAgICAg
KEpTQzo6SlNQcm9taXNlRGVmZXJyZWQ6OnJlc29sdmUpOgorICAgICAgICAoSlNDOjpKU1Byb21p
c2VEZWZlcnJlZDo6cmVqZWN0KToKKyAgICAgICAgQWRkIGhlbHBlciBtZXRob2RzIHRvIHVzZSBK
U1Byb21pc2VEZWZlcnJlZCBlYXNpbHkgZnJvbSB0aGUgQysrIHdvcmxkLgorICAgICAgICAqIHJ1
bnRpbWUvSlNQcm9taXNlRGVmZXJyZWQuaDoKKyAgICAgICAgKiBydW50aW1lL0pTUHJvbWlzZVBy
b3RvdHlwZS5jcHA6CisgICAgICAgIChKU0M6OkpTUHJvbWlzZVByb3RvdHlwZTo6Y3JlYXRlKToK
KyAgICAgICAgKEpTQzo6SlNQcm9taXNlUHJvdG90eXBlOjpKU1Byb21pc2VQcm90b3R5cGUpOgor
ICAgICAgICAoSlNDOjpKU1Byb21pc2VQcm90b3R5cGU6OmZpbmlzaENyZWF0aW9uKToKKyAgICAg
ICAgKiBydW50aW1lL0pTUHJvbWlzZVByb3RvdHlwZS5oOgorICAgICAgICAqIHJ1bnRpbWUvTWFw
UHJvdG90eXBlLmNwcDoKKyAgICAgICAgKEpTQzo6TWFwUHJvdG90eXBlOjpmaW5pc2hDcmVhdGlv
bik6CisgICAgICAgICogcnVudGltZS9Nb2R1bGVMb2FkZXJPYmplY3QuY3BwOiBBZGRlZC4KKyAg
ICAgICAgKEpTQzo6TW9kdWxlTG9hZGVyT2JqZWN0OjpNb2R1bGVMb2FkZXJPYmplY3QpOgorICAg
ICAgICAoSlNDOjpNb2R1bGVMb2FkZXJPYmplY3Q6OmZpbmlzaENyZWF0aW9uKToKKyAgICAgICAg
KEpTQzo6TW9kdWxlTG9hZGVyT2JqZWN0OjpnZXRPd25Qcm9wZXJ0eVNsb3QpOgorICAgICAgICAo
SlNDOjpwcmludGFibGVNb2R1bGVLZXkpOgorICAgICAgICAoSlNDOjpNb2R1bGVMb2FkZXJPYmpl
Y3Q6OnByb3ZpZGUpOgorICAgICAgICAoSlNDOjpNb2R1bGVMb2FkZXJPYmplY3Q6OnJlcXVlc3RJ
bnN0YW50aWF0ZUFsbCk6CisgICAgICAgIChKU0M6Ok1vZHVsZUxvYWRlck9iamVjdDo6cmVzb2x2
ZSk6CisgICAgICAgIChKU0M6Ok1vZHVsZUxvYWRlck9iamVjdDo6ZmV0Y2gpOgorICAgICAgICAo
SlNDOjpNb2R1bGVMb2FkZXJPYmplY3Q6OnRyYW5zbGF0ZSk6CisgICAgICAgIChKU0M6Ok1vZHVs
ZUxvYWRlck9iamVjdDo6aW5zdGFudGlhdGUpOgorICAgICAgICAoSlNDOjptb2R1bGVMb2FkZXJP
YmplY3RQYXJzZU1vZHVsZSk6CisgICAgICAgIChKU0M6Om1vZHVsZUxvYWRlck9iamVjdFJlcXVl
c3RlZE1vZHVsZXMpOgorICAgICAgICAoSlNDOjptb2R1bGVMb2FkZXJPYmplY3RSZXNvbHZlKToK
KyAgICAgICAgKEpTQzo6bW9kdWxlTG9hZGVyT2JqZWN0RmV0Y2gpOgorICAgICAgICAoSlNDOjpt
b2R1bGVMb2FkZXJPYmplY3RUcmFuc2xhdGUpOgorICAgICAgICAoSlNDOjptb2R1bGVMb2FkZXJP
YmplY3RJbnN0YW50aWF0ZSk6CisgICAgICAgICogcnVudGltZS9Nb2R1bGVMb2FkZXJPYmplY3Qu
aDogQWRkZWQuCisgICAgICAgIChKU0M6Ok1vZHVsZUxvYWRlck9iamVjdDo6Y3JlYXRlKToKKyAg
ICAgICAgKEpTQzo6TW9kdWxlTG9hZGVyT2JqZWN0OjpjcmVhdGVTdHJ1Y3R1cmUpOgorICAgICAg
ICAqIHJ1bnRpbWUvT3B0aW9ucy5oOgorCiAyMDE1LTA4LTE0ICBSeW9zdWtlIE5pd2EgIDxybml3
YUB3ZWJraXQub3JnPgogCiAgICAgICAgIEVTNiBjbGFzcyBzeW50YXggc2hvdWxkIGFsbG93IGNv
bXB1dGVkIG5hbWUgbWV0aG9kCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9DaGFuZ2VMb2cg
Yi9Tb3VyY2UvV2ViQ29yZS9DaGFuZ2VMb2cKaW5kZXggYmY3ZjczYTJkODBkMjdhYjhiNjQzYjM4
MGI2OTU3YzU0MWQ5MGQ5OS4uODQzYjA5ZWNhNDk1YzM1ZWRmNzcwYWFmN2ZiMDAzNjM0NzZhNDUw
NSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvQ2hhbmdlTG9nCisrKyBiL1NvdXJjZS9XZWJD
b3JlL0NoYW5nZUxvZwpAQCAtMSwzICsxLDE1IEBACisyMDE1LTA4LTE1ICBZdXN1a2UgU3V6dWtp
ICA8dXRhdGFuZS50ZWFAZ21haWwuY29tPgorCisgICAgICAgIFtFUzZdIHByb3RvdHlwaW5nIG1v
ZHVsZSBsb2FkZXIgaW4gSlNDIHNoZWxsCisgICAgICAgIGh0dHBzOi8vYnVncy53ZWJraXQub3Jn
L3Nob3dfYnVnLmNnaT9pZD0xNDc4NzYKKworICAgICAgICBSZXZpZXdlZCBieSBOT0JPRFkgKE9P
UFMhKS4KKworICAgICAgICBKdXN0IGZpbGwgTG9hZGVyIGhvb2tzIHdpdGggbnVsbHB0ci4KKwor
ICAgICAgICAqIGJpbmRpbmdzL2pzL0pTRE9NV2luZG93QmFzZS5jcHA6CisgICAgICAgICogYmlu
ZGluZ3MvanMvSlNXb3JrZXJHbG9iYWxTY29wZUJhc2UuY3BwOgorCiAyMDE1LTA4LTE0ICBNYXR0
aGV3IERhaXRlciAgPG1kYWl0ZXJAYXBwbGUuY29tPgogCiAgICAgICAgIEltcGxlbWVudGluZyBl
bnVtZXJhdGVEZXZpY2VzCmRpZmYgLS1naXQgYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvQ01ha2VM
aXN0cy50eHQgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvQ01ha2VMaXN0cy50eHQKaW5kZXggODY1
NTJhOTZmNzk0MzMxMTllNDc4OGRmOTYwNDdkNmFhMmVkZGZkOS4uNWM5ODE4YTA1NDAzYzQ4YjE1
MWI0MTAzZGZmMDg2OTMzNjU0Y2FjYSAxMDA2NDQKLS0tIGEvU291cmNlL0phdmFTY3JpcHRDb3Jl
L0NNYWtlTGlzdHMudHh0CisrKyBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9DTWFrZUxpc3RzLnR4
dApAQCAtMzg2LDcgKzM4Niw2IEBAIHNldChKYXZhU2NyaXB0Q29yZV9TT1VSQ0VTCiAKICAgICBw
YXJzZXIvTGV4ZXIuY3BwCiAgICAgcGFyc2VyL01vZHVsZUFuYWx5emVyLmNwcAotICAgIHBhcnNl
ci9Nb2R1bGVSZWNvcmQuY3BwCiAgICAgcGFyc2VyL05vZGVzLmNwcAogICAgIHBhcnNlci9Ob2Rl
c0FuYWx5emVNb2R1bGUuY3BwCiAgICAgcGFyc2VyL1BhcnNlci5jcHAKQEAgLTUyNSw2ICs1MjQs
NyBAQCBzZXQoSmF2YVNjcmlwdENvcmVfUlVOVElNRV9TT1VSQ0VTCiAgICAgcnVudGltZS9KU0xv
Y2suY3BwCiAgICAgcnVudGltZS9KU01hcC5jcHAKICAgICBydW50aW1lL0pTTWFwSXRlcmF0b3Iu
Y3BwCisgICAgcnVudGltZS9KU01vZHVsZVJlY29yZC5jcHAKICAgICBydW50aW1lL0pTTm90QW5P
YmplY3QuY3BwCiAgICAgcnVudGltZS9KU09OT2JqZWN0LmNwcAogICAgIHJ1bnRpbWUvSlNPYmpl
Y3QuY3BwCkBAIC01NTksNiArNTU5LDcgQEAgc2V0KEphdmFTY3JpcHRDb3JlX1JVTlRJTUVfU09V
UkNFUwogICAgIHJ1bnRpbWUvTWF0aENvbW1vbi5jcHAKICAgICBydW50aW1lL01hdGhPYmplY3Qu
Y3BwCiAgICAgcnVudGltZS9NZW1vcnlTdGF0aXN0aWNzLmNwcAorICAgIHJ1bnRpbWUvTW9kdWxl
TG9hZGVyT2JqZWN0LmNwcAogICAgIHJ1bnRpbWUvTmF0aXZlRXJyb3JDb25zdHJ1Y3Rvci5jcHAK
ICAgICBydW50aW1lL05hdGl2ZUVycm9yUHJvdG90eXBlLmNwcAogICAgIHJ1bnRpbWUvTnVsbEdl
dHRlckZ1bmN0aW9uLmNwcApAQCAtNjUxLDYgKzY1Miw3IEBAIHNldChKYXZhU2NyaXB0Q29yZV9M
VVRfRklMRVMKICAgICBydW50aW1lL0pTT05PYmplY3QuY3BwCiAgICAgcnVudGltZS9KU1Byb21p
c2VDb25zdHJ1Y3Rvci5jcHAKICAgICBydW50aW1lL0pTUHJvbWlzZVByb3RvdHlwZS5jcHAKKyAg
ICBydW50aW1lL01vZHVsZUxvYWRlck9iamVjdC5jcHAKICAgICBydW50aW1lL051bWJlckNvbnN0
cnVjdG9yLmNwcAogICAgIHJ1bnRpbWUvTnVtYmVyUHJvdG90eXBlLmNwcAogICAgIHJ1bnRpbWUv
T2JqZWN0Q29uc3RydWN0b3IuY3BwCmRpZmYgLS1naXQgYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUv
RGVyaXZlZFNvdXJjZXMubWFrZSBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9EZXJpdmVkU291cmNl
cy5tYWtlCmluZGV4IDFjYjJkNWNiYTNiZDM1ZTIwOWY5ZDJjN2JiNDY3YjJiOTZmN2ZhNWQuLjUz
YWJkYjZhZGNiNzEwOGU3ZWYxOTNiOTY5OTU2NDk1OTVmMmMxNTEgMTAwNjQ0Ci0tLSBhL1NvdXJj
ZS9KYXZhU2NyaXB0Q29yZS9EZXJpdmVkU291cmNlcy5tYWtlCisrKyBiL1NvdXJjZS9KYXZhU2Ny
aXB0Q29yZS9EZXJpdmVkU291cmNlcy5tYWtlCkBAIC01NSw2ICs1NSw3IEBAIGFsbCA6IFwKICAg
ICBKU1Byb21pc2VDb25zdHJ1Y3Rvci5sdXQuaCBcCiAgICAgS2V5d29yZExvb2t1cC5oIFwKICAg
ICBMZXhlci5sdXQuaCBcCisgICAgTW9kdWxlTG9hZGVyT2JqZWN0Lmx1dC5oIFwKICAgICBOdW1i
ZXJDb25zdHJ1Y3Rvci5sdXQuaCBcCiAgICAgTnVtYmVyUHJvdG90eXBlLmx1dC5oIFwKICAgICBP
YmplY3RDb25zdHJ1Y3Rvci5sdXQuaCBcCmRpZmYgLS1naXQgYS9Tb3VyY2UvSmF2YVNjcmlwdENv
cmUvSmF2YVNjcmlwdENvcmUudmN4cHJvai9KYXZhU2NyaXB0Q29yZS52Y3hwcm9qIGIvU291cmNl
L0phdmFTY3JpcHRDb3JlL0phdmFTY3JpcHRDb3JlLnZjeHByb2ovSmF2YVNjcmlwdENvcmUudmN4
cHJvagppbmRleCAwMWQ4MzdmMjk2Y2U0MmY3NjU2MTc5MDI3MGNiMzY4MDM0MmRjYjllLi5mZmRj
MTA2NzUwODNjN2I3MTQ2OWQwZjI0NTIyMDJiZGE3NWQ2YWI2IDEwMDY0NAotLS0gYS9Tb3VyY2Uv
SmF2YVNjcmlwdENvcmUvSmF2YVNjcmlwdENvcmUudmN4cHJvai9KYXZhU2NyaXB0Q29yZS52Y3hw
cm9qCisrKyBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9KYXZhU2NyaXB0Q29yZS52Y3hwcm9qL0ph
dmFTY3JpcHRDb3JlLnZjeHByb2oKQEAgLTY2MSw3ICs2NjEsNiBAQAogICAgIDxDbENvbXBpbGUg
SW5jbHVkZT0iLi5cbGx2bVxMTFZNQVBJLmNwcCIgLz4KICAgICA8Q2xDb21waWxlIEluY2x1ZGU9
Ii4uXHBhcnNlclxMZXhlci5jcHAiIC8+CiAgICAgPENsQ29tcGlsZSBJbmNsdWRlPSIuLlxwYXJz
ZXJcTW9kdWxlQW5hbHl6ZXIuY3BwIiAvPgotICAgIDxDbENvbXBpbGUgSW5jbHVkZT0iLi5ccGFy
c2VyXE1vZHVsZVJlY29yZC5jcHAiIC8+CiAgICAgPENsQ29tcGlsZSBJbmNsdWRlPSIuLlxwYXJz
ZXJcTm9kZXMuY3BwIiAvPgogICAgIDxDbENvbXBpbGUgSW5jbHVkZT0iLi5ccGFyc2VyXE5vZGVz
QW5hbHl6ZU1vZHVsZS5jcHAiIC8+CiAgICAgPENsQ29tcGlsZSBJbmNsdWRlPSIuLlxwYXJzZXJc
UGFyc2VyLmNwcCIgLz4KQEAgLTc3Nyw2ICs3NzYsNyBAQAogICAgIDxDbENvbXBpbGUgSW5jbHVk
ZT0iLi5ccnVudGltZVxKU0xvY2suY3BwIiAvPgogICAgIDxDbENvbXBpbGUgSW5jbHVkZT0iLi5c
cnVudGltZVxKU01hcC5jcHAiIC8+CiAgICAgPENsQ29tcGlsZSBJbmNsdWRlPSIuLlxydW50aW1l
XEpTTWFwSXRlcmF0b3IuY3BwIiAvPgorICAgIDxDbENvbXBpbGUgSW5jbHVkZT0iLi5ccnVudGlt
ZVxKU01vZHVsZVJlY29yZC5jcHAiIC8+CiAgICAgPENsQ29tcGlsZSBJbmNsdWRlPSIuLlxydW50
aW1lXEpTTm90QW5PYmplY3QuY3BwIiAvPgogICAgIDxDbENvbXBpbGUgSW5jbHVkZT0iLi5ccnVu
dGltZVxKU09OT2JqZWN0LmNwcCIgLz4KICAgICA8Q2xDb21waWxlIEluY2x1ZGU9Ii4uXHJ1bnRp
bWVcSlNPYmplY3QuY3BwIiAvPgpAQCAtODEyLDYgKzgxMiw3IEBACiAgICAgPENsQ29tcGlsZSBJ
bmNsdWRlPSIuLlxydW50aW1lXE1hdGhDb21tb24uY3BwIiAvPgogICAgIDxDbENvbXBpbGUgSW5j
bHVkZT0iLi5ccnVudGltZVxNYXRoT2JqZWN0LmNwcCIgLz4KICAgICA8Q2xDb21waWxlIEluY2x1
ZGU9Ii4uXHJ1bnRpbWVcTWVtb3J5U3RhdGlzdGljcy5jcHAiIC8+CisgICAgPENsQ29tcGlsZSBJ
bmNsdWRlPSIuLlxydW50aW1lXE1vZHVsZUxvYWRlck9iamVjdC5jcHAiIC8+CiAgICAgPENsQ29t
cGlsZSBJbmNsdWRlPSIuLlxydW50aW1lXE5hdGl2ZUVycm9yQ29uc3RydWN0b3IuY3BwIiAvPgog
ICAgIDxDbENvbXBpbGUgSW5jbHVkZT0iLi5ccnVudGltZVxOYXRpdmVFcnJvclByb3RvdHlwZS5j
cHAiIC8+CiAgICAgPENsQ29tcGlsZSBJbmNsdWRlPSIuLlxydW50aW1lXE51bGxHZXR0ZXJGdW5j
dGlvbi5jcHAiIC8+CkBAIC05MjMsNiArOTI0LDcgQEAKICAgICA8Q2xJbmNsdWRlIEluY2x1ZGU9
IiQoQ29uZmlndXJhdGlvbkJ1aWxkRGlyKVxvYmokKFBsYXRmb3JtQXJjaGl0ZWN0dXJlKVwkKFBy
b2plY3ROYW1lKVxEZXJpdmVkU291cmNlc1xOdW1iZXJDb25zdHJ1Y3Rvci5sdXQuaCIgLz4KICAg
ICA8Q2xJbmNsdWRlIEluY2x1ZGU9IiQoQ29uZmlndXJhdGlvbkJ1aWxkRGlyKVxvYmokKFBsYXRm
b3JtQXJjaGl0ZWN0dXJlKVwkKFByb2plY3ROYW1lKVxEZXJpdmVkU291cmNlc1xOdW1iZXJQcm90
b3R5cGUubHV0LmgiIC8+CiAgICAgPENsSW5jbHVkZSBJbmNsdWRlPSIkKENvbmZpZ3VyYXRpb25C
dWlsZERpcilcb2JqJChQbGF0Zm9ybUFyY2hpdGVjdHVyZSlcJChQcm9qZWN0TmFtZSlcRGVyaXZl
ZFNvdXJjZXNcT2JqZWN0Q29uc3RydWN0b3IubHV0LmgiIC8+CisgICAgPENsSW5jbHVkZSBJbmNs
dWRlPSIkKENvbmZpZ3VyYXRpb25CdWlsZERpcilcb2JqJChQbGF0Zm9ybUFyY2hpdGVjdHVyZSlc
JChQcm9qZWN0TmFtZSlcRGVyaXZlZFNvdXJjZXNcTW9kdWxlTG9hZGVyT2JqZWN0Lmx1dC5oIiAv
PgogICAgIDxDbEluY2x1ZGUgSW5jbHVkZT0iJChDb25maWd1cmF0aW9uQnVpbGREaXIpXG9iaiQo
UGxhdGZvcm1BcmNoaXRlY3R1cmUpXCQoUHJvamVjdE5hbWUpXERlcml2ZWRTb3VyY2VzXFJlZmxl
Y3RPYmplY3QubHV0LmgiIC8+CiAgICAgPENsSW5jbHVkZSBJbmNsdWRlPSIkKENvbmZpZ3VyYXRp
b25CdWlsZERpcilcb2JqJChQbGF0Zm9ybUFyY2hpdGVjdHVyZSlcJChQcm9qZWN0TmFtZSlcRGVy
aXZlZFNvdXJjZXNcUmVnRXhwQ29uc3RydWN0b3IubHV0LmgiIC8+CiAgICAgPENsSW5jbHVkZSBJ
bmNsdWRlPSIkKENvbmZpZ3VyYXRpb25CdWlsZERpcilcb2JqJChQbGF0Zm9ybUFyY2hpdGVjdHVy
ZSlcJChQcm9qZWN0TmFtZSlcRGVyaXZlZFNvdXJjZXNcUmVnRXhwSml0VGFibGVzLmgiIC8+CkBA
IC0xNDU0LDcgKzE0NTYsNiBAQAogICAgIDxDbEluY2x1ZGUgSW5jbHVkZT0iLi5ccGFyc2VyXEFT
VEJ1aWxkZXIuaCIgLz4KICAgICA8Q2xJbmNsdWRlIEluY2x1ZGU9Ii4uXHBhcnNlclxMZXhlci5o
IiAvPgogICAgIDxDbEluY2x1ZGUgSW5jbHVkZT0iLi5ccGFyc2VyXE1vZHVsZUFuYWx5emVyLmgi
IC8+Ci0gICAgPENsSW5jbHVkZSBJbmNsdWRlPSIuLlxwYXJzZXJcTW9kdWxlUmVjb3JkLmgiIC8+
CiAgICAgPENsSW5jbHVkZSBJbmNsdWRlPSIuLlxwYXJzZXJcTm9kZUNvbnN0cnVjdG9ycy5oIiAv
PgogICAgIDxDbEluY2x1ZGUgSW5jbHVkZT0iLi5ccGFyc2VyXE5vZGVzLmgiIC8+CiAgICAgPENs
SW5jbHVkZSBJbmNsdWRlPSIuLlxwYXJzZXJcUGFyc2VyLmgiIC8+CkBAIC0xNjE5LDYgKzE2MjAs
NyBAQAogICAgIDxDbEluY2x1ZGUgSW5jbHVkZT0iLi5ccnVudGltZVxKU0xvY2suaCIgLz4KICAg
ICA8Q2xJbmNsdWRlIEluY2x1ZGU9Ii4uXHJ1bnRpbWVcSlNNYXAuaCIgLz4KICAgICA8Q2xJbmNs
dWRlIEluY2x1ZGU9Ii4uXHJ1bnRpbWVcSlNNYXBJdGVyYXRvci5oIiAvPgorICAgIDxDbEluY2x1
ZGUgSW5jbHVkZT0iLi5ccnVudGltZVxKU01vZHVsZVJlY29yZC5oIiAvPgogICAgIDxDbEluY2x1
ZGUgSW5jbHVkZT0iLi5ccnVudGltZVxKU05vdEFuT2JqZWN0LmgiIC8+CiAgICAgPENsSW5jbHVk
ZSBJbmNsdWRlPSIuLlxydW50aW1lXEpTT05PYmplY3QuaCIgLz4KICAgICA8Q2xJbmNsdWRlIElu
Y2x1ZGU9Ii4uXHJ1bnRpbWVcSlNPYmplY3QuaCIgLz4KQEAgLTE2NjQsNiArMTY2Niw3IEBACiAg
ICAgPENsSW5jbHVkZSBJbmNsdWRlPSIuLlxydW50aW1lXE1hdGhDb21tb24uaCIgLz4KICAgICA8
Q2xJbmNsdWRlIEluY2x1ZGU9Ii4uXHJ1bnRpbWVcTWF0aE9iamVjdC5oIiAvPgogICAgIDxDbElu
Y2x1ZGUgSW5jbHVkZT0iLi5ccnVudGltZVxNZW1vcnlTdGF0aXN0aWNzLmgiIC8+CisgICAgPENs
SW5jbHVkZSBJbmNsdWRlPSIuLlxydW50aW1lXE1vZHVsZUxvYWRlck9iamVjdC5oIiAvPgogICAg
IDxDbEluY2x1ZGUgSW5jbHVkZT0iLi5ccnVudGltZVxNaWNyb3Rhc2suaCIgLz4KICAgICA8Q2xJ
bmNsdWRlIEluY2x1ZGU9Ii4uXHJ1bnRpbWVcTmF0aXZlRXJyb3JDb25zdHJ1Y3Rvci5oIiAvPgog
ICAgIDxDbEluY2x1ZGUgSW5jbHVkZT0iLi5ccnVudGltZVxOYXRpdmVFcnJvclByb3RvdHlwZS5o
IiAvPgpkaWZmIC0tZ2l0IGEvU291cmNlL0phdmFTY3JpcHRDb3JlL0phdmFTY3JpcHRDb3JlLnZj
eHByb2ovSmF2YVNjcmlwdENvcmUudmN4cHJvai5maWx0ZXJzIGIvU291cmNlL0phdmFTY3JpcHRD
b3JlL0phdmFTY3JpcHRDb3JlLnZjeHByb2ovSmF2YVNjcmlwdENvcmUudmN4cHJvai5maWx0ZXJz
CmluZGV4IGNlMWFiMjQ4MDgxYWVmZGI4ZWE1ZmVkZjM0YWEzZDI5ZmM0ODk5MTguLmI1ZDM3MjQw
Mjg5ZDA1Mzk5YmQ0NGE3ZmQ3OWYwNDIwMWIwNjAzMTggMTAwNjQ0Ci0tLSBhL1NvdXJjZS9KYXZh
U2NyaXB0Q29yZS9KYXZhU2NyaXB0Q29yZS52Y3hwcm9qL0phdmFTY3JpcHRDb3JlLnZjeHByb2ou
ZmlsdGVycworKysgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvSmF2YVNjcmlwdENvcmUudmN4cHJv
ai9KYXZhU2NyaXB0Q29yZS52Y3hwcm9qLmZpbHRlcnMKQEAgLTQ1OSw5ICs0NTksNiBAQAogICAg
IDxDbENvbXBpbGUgSW5jbHVkZT0iLi5ccGFyc2VyXE1vZHVsZUFuYWx5emVyLmNwcCI+CiAgICAg
ICA8RmlsdGVyPnBhcnNlcjwvRmlsdGVyPgogICAgIDwvQ2xDb21waWxlPgotICAgIDxDbENvbXBp
bGUgSW5jbHVkZT0iLi5ccGFyc2VyXE1vZHVsZVJlY29yZC5jcHAiPgotICAgICAgPEZpbHRlcj5w
YXJzZXI8L0ZpbHRlcj4KLSAgICA8L0NsQ29tcGlsZT4KICAgICA8Q2xDb21waWxlIEluY2x1ZGU9
Ii4uXHBhcnNlclxOb2Rlcy5jcHAiPgogICAgICAgPEZpbHRlcj5wYXJzZXI8L0ZpbHRlcj4KICAg
ICA8L0NsQ29tcGlsZT4KQEAgLTcyNiw2ICs3MjMsOSBAQAogICAgIDxDbENvbXBpbGUgSW5jbHVk
ZT0iLi5ccnVudGltZVxKU01hcC5jcHAiPgogICAgICAgPEZpbHRlcj5ydW50aW1lPC9GaWx0ZXI+
CiAgICAgPC9DbENvbXBpbGU+CisgICAgPENsQ29tcGlsZSBJbmNsdWRlPSIuLlxydW50aW1lXEpT
TW9kdWxlUmVjb3JkLmNwcCI+CisgICAgICA8RmlsdGVyPnJ1bnRpbWU8L0ZpbHRlcj4KKyAgICA8
L0NsQ29tcGlsZT4KICAgICA8Q2xDb21waWxlIEluY2x1ZGU9Ii4uXHJ1bnRpbWVcSlNOb3RBbk9i
amVjdC5jcHAiPgogICAgICAgPEZpbHRlcj5ydW50aW1lPC9GaWx0ZXI+CiAgICAgPC9DbENvbXBp
bGU+CkBAIC0xNjk1LDYgKzE2OTUsOSBAQAogICAgIDxDbENvbXBpbGUgSW5jbHVkZT0iLi5ccnVu
dGltZVxNZW1vcnlTdGF0aXN0aWNzLmNwcCI+CiAgICAgICA8RmlsdGVyPnJ1bnRpbWU8L0ZpbHRl
cj4KICAgICA8L0NsQ29tcGlsZT4KKyAgICA8Q2xDb21waWxlIEluY2x1ZGU9Ii4uXHJ1bnRpbWVc
TW9kdWxlTG9hZGVyT2JqZWN0LmNwcCI+CisgICAgICA8RmlsdGVyPnJ1bnRpbWU8L0ZpbHRlcj4K
KyAgICA8L0NsQ29tcGlsZT4KICAgICA8Q2xDb21waWxlIEluY2x1ZGU9Ii4uXGJ5dGVjb2RlXENv
bXBsZXhHZXRTdGF0dXMuY3BwIj4KICAgICAgIDxGaWx0ZXI+Ynl0ZWNvZGU8L0ZpbHRlcj4KICAg
ICA8L0NsQ29tcGlsZT4KQEAgLTI0OTUsOSArMjQ5OCw2IEBACiAgICAgPENsSW5jbHVkZSBJbmNs
dWRlPSIuLlxwYXJzZXJcTW9kdWxlQW5hbHl6ZXIuaCI+CiAgICAgICA8RmlsdGVyPnBhcnNlcjwv
RmlsdGVyPgogICAgIDwvQ2xJbmNsdWRlPgotICAgIDxDbEluY2x1ZGUgSW5jbHVkZT0iLi5ccGFy
c2VyXE1vZHVsZVJlY29yZC5oIj4KLSAgICAgIDxGaWx0ZXI+cGFyc2VyPC9GaWx0ZXI+Ci0gICAg
PC9DbEluY2x1ZGU+CiAgICAgPENsSW5jbHVkZSBJbmNsdWRlPSIuLlxwYXJzZXJcTm9kZUNvbnN0
cnVjdG9ycy5oIj4KICAgICAgIDxGaWx0ZXI+cGFyc2VyPC9GaWx0ZXI+CiAgICAgPC9DbEluY2x1
ZGU+CkBAIC0zMjA3LDYgKzMyMDcsOSBAQAogICAgIDxDbEluY2x1ZGUgSW5jbHVkZT0iJChDb25m
aWd1cmF0aW9uQnVpbGREaXIpXG9iaiQoUGxhdGZvcm1BcmNoaXRlY3R1cmUpXCQoUHJvamVjdE5h
bWUpXERlcml2ZWRTb3VyY2VzXExleGVyLmx1dC5oIj4KICAgICAgIDxGaWx0ZXI+RGVyaXZlZCBT
b3VyY2VzPC9GaWx0ZXI+CiAgICAgPC9DbEluY2x1ZGU+CisgICAgPENsSW5jbHVkZSBJbmNsdWRl
PSIkKENvbmZpZ3VyYXRpb25CdWlsZERpcilcb2JqJChQbGF0Zm9ybUFyY2hpdGVjdHVyZSlcJChQ
cm9qZWN0TmFtZSlcRGVyaXZlZFNvdXJjZXNcTW9kdWxlTG9hZGVyT2JqZWN0Lmx1dC5oIj4KKyAg
ICAgIDxGaWx0ZXI+RGVyaXZlZCBTb3VyY2VzPC9GaWx0ZXI+CisgICAgPC9DbEluY2x1ZGU+CiAg
ICAgPENsSW5jbHVkZSBJbmNsdWRlPSIkKENvbmZpZ3VyYXRpb25CdWlsZERpcilcb2JqJChQbGF0
Zm9ybUFyY2hpdGVjdHVyZSlcJChQcm9qZWN0TmFtZSlcRGVyaXZlZFNvdXJjZXNcTnVtYmVyQ29u
c3RydWN0b3IubHV0LmgiPgogICAgICAgPEZpbHRlcj5EZXJpdmVkIFNvdXJjZXM8L0ZpbHRlcj4K
ICAgICA8L0NsSW5jbHVkZT4KQEAgLTM0NDQsNiArMzQ0Nyw5IEBACiAgICAgPENsSW5jbHVkZSBJ
bmNsdWRlPSIuLlxydW50aW1lXEpTTWFwLmgiPgogICAgICAgPEZpbHRlcj5ydW50aW1lPC9GaWx0
ZXI+CiAgICAgPC9DbEluY2x1ZGU+CisgICAgPENsSW5jbHVkZSBJbmNsdWRlPSIuLlxydW50aW1l
XEpTTW9kdWxlUmVjb3JkLmgiPgorICAgICAgPEZpbHRlcj5ydW50aW1lPC9GaWx0ZXI+CisgICAg
PC9DbEluY2x1ZGU+CiAgICAgPENsSW5jbHVkZSBJbmNsdWRlPSIuLlxydW50aW1lXEpTU2V0Lmgi
PgogICAgICAgPEZpbHRlcj5ydW50aW1lPC9GaWx0ZXI+CiAgICAgPC9DbEluY2x1ZGU+CkBAIC00
MjM3LDYgKzQyNDMsOSBAQAogICAgIDxDbEluY2x1ZGUgSW5jbHVkZT0iLi5ccnVudGltZVxNZW1v
cnlTdGF0aXN0aWNzLmgiPgogICAgICAgPEZpbHRlcj5ydW50aW1lPC9GaWx0ZXI+CiAgICAgPC9D
bEluY2x1ZGU+CisgICAgPENsSW5jbHVkZSBJbmNsdWRlPSIuLlxydW50aW1lXE1vZHVsZUxvYWRl
ck9iamVjdC5oIj4KKyAgICAgIDxGaWx0ZXI+cnVudGltZTwvRmlsdGVyPgorICAgIDwvQ2xJbmNs
dWRlPgogICAgIDxDbEluY2x1ZGUgSW5jbHVkZT0iLi5cYnl0ZWNvZGVcQ29tcGxleEdldFN0YXR1
cy5oIj4KICAgICAgIDxGaWx0ZXI+Ynl0ZWNvZGU8L0ZpbHRlcj4KICAgICA8L0NsSW5jbHVkZT4K
ZGlmZiAtLWdpdCBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9KYXZhU2NyaXB0Q29yZS54Y29kZXBy
b2ovcHJvamVjdC5wYnhwcm9qIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL0phdmFTY3JpcHRDb3Jl
Lnhjb2RlcHJvai9wcm9qZWN0LnBieHByb2oKaW5kZXggZmRjNjgzNzFkZGIyYmU1NTM0OTQxZjgz
MmM4YzcyMDFiNDA2ZGFhZi4uOTY5MjU3NDA5OTJjN2UzMjlmMGFiYjVmN2I5MjcxZjcwZjc2M2Fk
OSAxMDA2NDQKLS0tIGEvU291cmNlL0phdmFTY3JpcHRDb3JlL0phdmFTY3JpcHRDb3JlLnhjb2Rl
cHJvai9wcm9qZWN0LnBieHByb2oKKysrIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL0phdmFTY3Jp
cHRDb3JlLnhjb2RlcHJvai9wcm9qZWN0LnBieHByb2oKQEAgLTE2OTQsMTMgKzE2OTQsMTUgQEAK
IAkJRTMzNjM3QTYxQjYzMjIwMjAwRUUwODQwIC8qIFJlZmxlY3RPYmplY3QuaCBpbiBIZWFkZXJz
ICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IEUzMzYzN0E0MUI2MzIyMDIwMEVF
MDg0MCAvKiBSZWZsZWN0T2JqZWN0LmggKi87IHNldHRpbmdzID0ge0FUVFJJQlVURVMgPSAoUHJp
dmF0ZSwgKTsgfTsgfTsKIAkJRTMzQjNFMjYxQjdBQkQ3NTAwNDhEQjJFIC8qIEluc3BlY3Rvcklu
c3RydW1lbnRhdGlvbk9iamVjdC5sdXQuaCBpbiBIZWFkZXJzICovID0ge2lzYSA9IFBCWEJ1aWxk
RmlsZTsgZmlsZVJlZiA9IEUzM0IzRTI1MUI3QUJENzUwMDQ4REIyRSAvKiBJbnNwZWN0b3JJbnN0
cnVtZW50YXRpb25PYmplY3QubHV0LmggKi87IH07CiAJCUUzNTQ2MjJCMUI2MDY1RDEwMDU0NTM4
NiAvKiBDb25zdHJ1Y3RBYmlsaXR5LmggaW4gSGVhZGVycyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZp
bGU7IGZpbGVSZWYgPSBFMzU0NjIyQTFCNjA2NUQxMDA1NDUzODYgLyogQ29uc3RydWN0QWJpbGl0
eS5oICovOyBzZXR0aW5ncyA9IHtBVFRSSUJVVEVTID0gKFByaXZhdGUsICk7IH07IH07CisJCUUz
NTVGMzUyMUI3REM4NTMwMEM1MERDNSAvKiBNb2R1bGVMb2FkZXJPYmplY3QuY3BwIGluIFNvdXJj
ZXMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gRTM1NUYzNTAxQjdEQzg1MzAw
QzUwREM1IC8qIE1vZHVsZUxvYWRlck9iamVjdC5jcHAgKi87IH07CisJCUUzNTVGMzUzMUI3REM4
NTMwMEM1MERDNSAvKiBNb2R1bGVMb2FkZXJPYmplY3QuaCBpbiBIZWFkZXJzICovID0ge2lzYSA9
IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IEUzNTVGMzUxMUI3REM4NTMwMEM1MERDNSAvKiBNb2R1
bGVMb2FkZXJPYmplY3QuaCAqLzsgfTsKIAkJRTM3OTRFNzUxQjc3RUI5NzAwNTU0M0FFIC8qIE1v
ZHVsZUFuYWx5emVyLmNwcCBpbiBTb3VyY2VzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmls
ZVJlZiA9IEUzNzk0RTczMUI3N0VCOTcwMDU1NDNBRSAvKiBNb2R1bGVBbmFseXplci5jcHAgKi87
IH07CiAJCUUzNzk0RTc2MUI3N0VCOTcwMDU1NDNBRSAvKiBNb2R1bGVBbmFseXplci5oIGluIEhl
YWRlcnMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gRTM3OTRFNzQxQjc3RUI5
NzAwNTU0M0FFIC8qIE1vZHVsZUFuYWx5emVyLmggKi87IHNldHRpbmdzID0ge0FUVFJJQlVURVMg
PSAoUHJpdmF0ZSwgKTsgfTsgfTsKLQkJRTM5NjNDRUQxQjczRjc1MDAwRUI0Q0U1IC8qIE1vZHVs
ZVJlY29yZC5oIGluIEhlYWRlcnMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0g
RTM5NjNDRUIxQjczRjc1MDAwRUI0Q0U1IC8qIE1vZHVsZVJlY29yZC5oICovOyBzZXR0aW5ncyA9
IHtBVFRSSUJVVEVTID0gKFByaXZhdGUsICk7IH07IH07CiAJCUUzOTYzQ0VFMUI3M0Y3NTAwMEVC
NENFNSAvKiBOb2Rlc0FuYWx5emVNb2R1bGUuY3BwIGluIFNvdXJjZXMgKi8gPSB7aXNhID0gUEJY
QnVpbGRGaWxlOyBmaWxlUmVmID0gRTM5NjNDRUMxQjczRjc1MDAwRUI0Q0U1IC8qIE5vZGVzQW5h
bHl6ZU1vZHVsZS5jcHAgKi87IH07Ci0JCUUzQzA5RjU1MUI3OTY5MkEwMEVFMzZBMiAvKiBNb2R1
bGVSZWNvcmQuY3BwIGluIFNvdXJjZXMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVm
ID0gRTNDMDlGNTQxQjc5NjkyQTAwRUUzNkEyIC8qIE1vZHVsZVJlY29yZC5jcHAgKi87IH07CiAJ
CUUzNUUwMzVGMUI3QUI0M0UwMDczQUQyQSAvKiBJbnNwZWN0b3JJbnN0cnVtZW50YXRpb25PYmpl
Y3QuY3BwIGluIFNvdXJjZXMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gRTM1
RTAzNUQxQjdBQjQzRTAwNzNBRDJBIC8qIEluc3BlY3Rvckluc3RydW1lbnRhdGlvbk9iamVjdC5j
cHAgKi87IH07CiAJCUUzNUUwMzYwMUI3QUI0M0UwMDczQUQyQSAvKiBJbnNwZWN0b3JJbnN0cnVt
ZW50YXRpb25PYmplY3QuaCBpbiBIZWFkZXJzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmls
ZVJlZiA9IEUzNUUwMzVFMUI3QUI0M0UwMDczQUQyQSAvKiBJbnNwZWN0b3JJbnN0cnVtZW50YXRp
b25PYmplY3QuaCAqLzsgc2V0dGluZ3MgPSB7QVRUUklCVVRFUyA9IChQcml2YXRlLCApOyB9OyB9
OworCQlFMzlEQTRBNjFCN0U4QjdDMDA4NEYzM0EgLyogSlNNb2R1bGVSZWNvcmQuY3BwIGluIFNv
dXJjZXMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gRTM5REE0QTQxQjdFOEI3
QzAwODRGMzNBIC8qIEpTTW9kdWxlUmVjb3JkLmNwcCAqLzsgfTsKKwkJRTM5REE0QTcxQjdFOEI3
QzAwODRGMzNBIC8qIEpTTW9kdWxlUmVjb3JkLmggaW4gSGVhZGVycyAqLyA9IHtpc2EgPSBQQlhC
dWlsZEZpbGU7IGZpbGVSZWYgPSBFMzlEQTRBNTFCN0U4QjdDMDA4NEYzM0EgLyogSlNNb2R1bGVS
ZWNvcmQuaCAqLzsgc2V0dGluZ3MgPSB7QVRUUklCVVRFUyA9IChQcml2YXRlLCApOyB9OyB9Owog
CQlFM0VGODg3NDFCNjZERjIzMDAzRjI2Q0IgLyogSlNQcm9wZXJ0eU5hbWVJdGVyYXRvci5jcHAg
aW4gU291cmNlcyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSBFM0VGODg3MjFC
NjZERjIzMDAzRjI2Q0IgLyogSlNQcm9wZXJ0eU5hbWVJdGVyYXRvci5jcHAgKi87IH07CiAJCUUz
RUY4ODc1MUI2NkRGMjMwMDNGMjZDQiAvKiBKU1Byb3BlcnR5TmFtZUl0ZXJhdG9yLmggaW4gSGVh
ZGVycyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSBFM0VGODg3MzFCNjZERjIz
MDAzRjI2Q0IgLyogSlNQcm9wZXJ0eU5hbWVJdGVyYXRvci5oICovOyBzZXR0aW5ncyA9IHtBVFRS
SUJVVEVTID0gKFByaXZhdGUsICk7IH07IH07CiAJCUU0OURDMTZCMTJFRjI5M0UwMDE4NEExRiAv
KiBTb3VyY2VQcm92aWRlckNhY2hlLmNwcCBpbiBTb3VyY2VzICovID0ge2lzYSA9IFBCWEJ1aWxk
RmlsZTsgZmlsZVJlZiA9IEU0OURDMTU1MTJFRjI3NzIwMDE4NEExRiAvKiBTb3VyY2VQcm92aWRl
ckNhY2hlLmNwcCAqLzsgfTsKQEAgLTM1MjYsMTQgKzM1MjgsMTYgQEAKIAkJRTMzNjM3QTQxQjYz
MjIwMjAwRUUwODQwIC8qIFJlZmxlY3RPYmplY3QuaCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJl
bmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuYy5o
OyBwYXRoID0gUmVmbGVjdE9iamVjdC5oOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OwogCQlF
MzNCM0UyNTFCN0FCRDc1MDA0OERCMkUgLyogSW5zcGVjdG9ySW5zdHJ1bWVudGF0aW9uT2JqZWN0
Lmx1dC5oICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxh
c3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jLmg7IG5hbWUgPSBJbnNwZWN0b3JJbnN0cnVt
ZW50YXRpb25PYmplY3QubHV0Lmg7IHBhdGggPSBJbnNwZWN0b3JJbnN0cnVtZW50YXRpb25PYmpl
Y3QubHV0Lmg7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CiAJCUUzNTQ2MjJBMUI2MDY1RDEw
MDU0NTM4NiAvKiBDb25zdHJ1Y3RBYmlsaXR5LmggKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5j
ZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmMuaDsg
cGF0aCA9IENvbnN0cnVjdEFiaWxpdHkuaDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKKwkJ
RTM1NUYzNTAxQjdEQzg1MzAwQzUwREM1IC8qIE1vZHVsZUxvYWRlck9iamVjdC5jcHAgKi8gPSB7
aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5
cGUgPSBzb3VyY2Vjb2RlLmNwcC5jcHA7IHBhdGggPSBNb2R1bGVMb2FkZXJPYmplY3QuY3BwOyBz
b3VyY2VUcmVlID0gIjxncm91cD4iOyB9OworCQlFMzU1RjM1MTFCN0RDODUzMDBDNTBEQzUgLyog
TW9kdWxlTG9hZGVyT2JqZWN0LmggKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVu
Y29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmMuaDsgcGF0aCA9IE1v
ZHVsZUxvYWRlck9iamVjdC5oOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OwogCQlFMzc5NEU3
MzFCNzdFQjk3MDA1NTQzQUUgLyogTW9kdWxlQW5hbHl6ZXIuY3BwICovID0ge2lzYSA9IFBCWEZp
bGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNl
Y29kZS5jcHAuY3BwOyBwYXRoID0gTW9kdWxlQW5hbHl6ZXIuY3BwOyBzb3VyY2VUcmVlID0gIjxn
cm91cD4iOyB9OwogCQlFMzc5NEU3NDFCNzdFQjk3MDA1NTQzQUUgLyogTW9kdWxlQW5hbHl6ZXIu
aCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25v
d25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuYy5oOyBwYXRoID0gTW9kdWxlQW5hbHl6ZXIuaDsgc291
cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKLQkJRTM5NjNDRUIxQjczRjc1MDAwRUI0Q0U1IC8qIE1v
ZHVsZVJlY29yZC5oICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9
IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jLmg7IHBhdGggPSBNb2R1bGVSZWNv
cmQuaDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKIAkJRTM5NjNDRUMxQjczRjc1MDAwRUI0
Q0U1IC8qIE5vZGVzQW5hbHl6ZU1vZHVsZS5jcHAgKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5j
ZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmNwcC5j
cHA7IHBhdGggPSBOb2Rlc0FuYWx5emVNb2R1bGUuY3BwOyBzb3VyY2VUcmVlID0gIjxncm91cD4i
OyB9OwotCQlFM0MwOUY1NDFCNzk2OTJBMDBFRTM2QTIgLyogTW9kdWxlUmVjb3JkLmNwcCAqLyA9
IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxl
VHlwZSA9IHNvdXJjZWNvZGUuY3BwLmNwcDsgcGF0aCA9IE1vZHVsZVJlY29yZC5jcHA7IHNvdXJj
ZVRyZWUgPSAiPGdyb3VwPiI7IH07CiAJCUUzNUUwMzVEMUI3QUI0M0UwMDczQUQyQSAvKiBJbnNw
ZWN0b3JJbnN0cnVtZW50YXRpb25PYmplY3QuY3BwICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVu
Y2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jcHAu
Y3BwOyBwYXRoID0gSW5zcGVjdG9ySW5zdHJ1bWVudGF0aW9uT2JqZWN0LmNwcDsgc291cmNlVHJl
ZSA9ICI8Z3JvdXA+IjsgfTsKIAkJRTM1RTAzNUUxQjdBQjQzRTAwNzNBRDJBIC8qIEluc3BlY3Rv
ckluc3RydW1lbnRhdGlvbk9iamVjdC5oICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZp
bGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jLmg7IHBhdGgg
PSBJbnNwZWN0b3JJbnN0cnVtZW50YXRpb25PYmplY3QuaDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+
IjsgfTsKIAkJRTM1RTAzNjExQjdBQjQ4NTAwNzNBRDJBIC8qIEluc3BlY3Rvckluc3RydW1lbnRh
dGlvbk9iamVjdC5qcyAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2Rpbmcg
PSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuamF2YXNjcmlwdDsgcGF0aCA9IElu
c3BlY3Rvckluc3RydW1lbnRhdGlvbk9iamVjdC5qczsgc291cmNlVHJlZSA9ICI8Z3JvdXA+Ijsg
fTsKKwkJRTM5REE0QTQxQjdFOEI3QzAwODRGMzNBIC8qIEpTTW9kdWxlUmVjb3JkLmNwcCAqLyA9
IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxl
VHlwZSA9IHNvdXJjZWNvZGUuY3BwLmNwcDsgcGF0aCA9IEpTTW9kdWxlUmVjb3JkLmNwcDsgc291
cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKKwkJRTM5REE0QTUxQjdFOEI3QzAwODRGMzNBIC8qIEpT
TW9kdWxlUmVjb3JkLmggKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5n
ID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmMuaDsgcGF0aCA9IEpTTW9kdWxl
UmVjb3JkLmg7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CiAJCUUzRUY4ODcyMUI2NkRGMjMw
MDNGMjZDQiAvKiBKU1Byb3BlcnR5TmFtZUl0ZXJhdG9yLmNwcCAqLyA9IHtpc2EgPSBQQlhGaWxl
UmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNv
ZGUuY3BwLmNwcDsgcGF0aCA9IEpTUHJvcGVydHlOYW1lSXRlcmF0b3IuY3BwOyBzb3VyY2VUcmVl
ID0gIjxncm91cD4iOyB9OwogCQlFM0VGODg3MzFCNjZERjIzMDAzRjI2Q0IgLyogSlNQcm9wZXJ0
eU5hbWVJdGVyYXRvci5oICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGlu
ZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jLmg7IHBhdGggPSBKU1Byb3Bl
cnR5TmFtZUl0ZXJhdG9yLmg7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CiAJCUU0OURDMTQ5
MTJFRjI2MUEwMDE4NEExRiAvKiBTb3VyY2VQcm92aWRlckNhY2hlSXRlbS5oICovID0ge2lzYSA9
IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0g
c291cmNlY29kZS5jLmg7IHBhdGggPSBTb3VyY2VQcm92aWRlckNhY2hlSXRlbS5oOyBzb3VyY2VU
cmVlID0gIjxncm91cD4iOyB9OwpAQCAtNDQ0Niw4ICs0NDUwLDYgQEAKIAkJCQlGNjkyQTg2NjAy
NTU1OTdEMDFGRjYwRjcgLyogTGV4ZXIuaCAqLywKIAkJCQlFMzc5NEU3MzFCNzdFQjk3MDA1NTQz
QUUgLyogTW9kdWxlQW5hbHl6ZXIuY3BwICovLAogCQkJCUUzNzk0RTc0MUI3N0VCOTcwMDU1NDNB
RSAvKiBNb2R1bGVBbmFseXplci5oICovLAotCQkJCUUzQzA5RjU0MUI3OTY5MkEwMEVFMzZBMiAv
KiBNb2R1bGVSZWNvcmQuY3BwICovLAotCQkJCUUzOTYzQ0VCMUI3M0Y3NTAwMEVCNENFNSAvKiBN
b2R1bGVSZWNvcmQuaCAqLywKIAkJCQk5MzBEQUQwMzBGQjFFQjFBMDA4MkQyMDUgLyogTm9kZUNv
bnN0cnVjdG9ycy5oICovLAogCQkJCUY2OTJBODZEMDI1NTU5N0QwMUZGNjBGNyAvKiBOb2Rlcy5j
cHAgKi8sCiAJCQkJRjY5MkE4NkUwMjU1NTk3RDAxRkY2MEY3IC8qIE5vZGVzLmggKi8sCkBAIC00
NzA5LDYgKzQ3MTEsOCBAQAogCQkJCUE3MDA4NzQwMTdDQkU4RUIwMEMzRTY0MyAvKiBKU01hcC5o
ICovLAogCQkJCUE3NERFRjhGMTgyRDk5MTQwMDUyMkMyMiAvKiBKU01hcEl0ZXJhdG9yLmNwcCAq
LywKIAkJCQlBNzRERUY5MDE4MkQ5OTE0MDA1MjJDMjIgLyogSlNNYXBJdGVyYXRvci5oICovLAor
CQkJCUUzOURBNEE0MUI3RThCN0MwMDg0RjMzQSAvKiBKU01vZHVsZVJlY29yZC5jcHAgKi8sCisJ
CQkJRTM5REE0QTUxQjdFOEI3QzAwODRGMzNBIC8qIEpTTW9kdWxlUmVjb3JkLmggKi8sCiAJCQkJ
QTcyNzAwNzgwREFDNjA1NjAwRTU0OEQ3IC8qIEpTTm90QW5PYmplY3QuY3BwICovLAogCQkJCUE3
MjcwMDc3MERBQzYwNTYwMEU1NDhENyAvKiBKU05vdEFuT2JqZWN0LmggKi8sCiAJCQkJQkMyMkEz
OTgwRTE2RTE0ODAwQUYyMUM4IC8qIEpTT2JqZWN0LmNwcCAqLywKQEAgLTQ3ODgsNiArNDc5Miw4
IEBACiAJCQkJOTAyMTNFM0IxMjNBNDBDMjAwRDQyMkYzIC8qIE1lbW9yeVN0YXRpc3RpY3MuY3Bw
ICovLAogCQkJCTkwMjEzRTNDMTIzQTQwQzIwMEQ0MjJGMyAvKiBNZW1vcnlTdGF0aXN0aWNzLmgg
Ki8sCiAJCQkJN0MwMDhDRTUxODc2MzFCNjAwOTU1QzI0IC8qIE1pY3JvdGFzay5oICovLAorCQkJ
CUUzNTVGMzUwMUI3REM4NTMwMEM1MERDNSAvKiBNb2R1bGVMb2FkZXJPYmplY3QuY3BwICovLAor
CQkJCUUzNTVGMzUxMUI3REM4NTMwMEM1MERDNSAvKiBNb2R1bGVMb2FkZXJPYmplY3QuaCAqLywK
IAkJCQlCQzAyRTkwODBFMTgzOURCMDAwRjkyOTcgLyogTmF0aXZlRXJyb3JDb25zdHJ1Y3Rvci5j
cHAgKi8sCiAJCQkJQkMwMkU5MDkwRTE4MzlEQjAwMEY5Mjk3IC8qIE5hdGl2ZUVycm9yQ29uc3Ry
dWN0b3IuaCAqLywKIAkJCQlCQzAyRTkwQTBFMTgzOURCMDAwRjkyOTcgLyogTmF0aXZlRXJyb3JQ
cm90b3R5cGUuY3BwICovLApAQCAtNTc5NSw2ICs1ODAxLDcgQEAKIAkJCWZpbGVzID0gKAogCQkJ
CTBGRkE1NDk4MTZCODgzNTMwMEIzQTk4MiAvKiBBNjRET3Bjb2RlLmggaW4gSGVhZGVycyAqLywK
IAkJCQk4NjAxNjFFMzBGM0E4M0MxMDBGODQ3MTAgLyogQWJzdHJhY3RNYWNyb0Fzc2VtYmxlci5o
IGluIEhlYWRlcnMgKi8sCisJCQkJRTM1NUYzNTMxQjdEQzg1MzAwQzUwREM1IC8qIE1vZHVsZUxv
YWRlck9iamVjdC5oIGluIEhlYWRlcnMgKi8sCiAJCQkJMEZFMDUwMjkxQUE5MDk1NjAwRDMzQjMz
IC8qIFNjb3BlZEFyZ3VtZW50c1RhYmxlLmggaW4gSGVhZGVycyAqLywKIAkJCQkwRjU1RjBGNTE0
RDEwNjNDMDBBQzc2NDkgLyogQWJzdHJhY3RQQy5oIGluIEhlYWRlcnMgKi8sCiAJCQkJMkE0OEQx
OTExNzcyMzY1QjAwQzY1QTVGIC8qIEFQSUNhbGxiYWNrRnVuY3Rpb24uaCBpbiBIZWFkZXJzICov
LApAQCAtNjE5Myw3ICs2MjAwLDYgQEAKIAkJCQkwRkNFRkFBQzE4MDRDMTNFMDA0NzJDRTQgLyog
RlRMU2F2ZVJlc3RvcmUuaCBpbiBIZWFkZXJzICovLAogCQkJCTBGMjVGMUIyMTgxNjM1RjMwMDUy
MkYzOSAvKiBGVExTbG93UGF0aENhbGwuaCBpbiBIZWFkZXJzICovLAogCQkJCUUzNTQ2MjJCMUI2
MDY1RDEwMDU0NTM4NiAvKiBDb25zdHJ1Y3RBYmlsaXR5LmggaW4gSGVhZGVycyAqLywKLQkJCQlF
Mzk2M0NFRDFCNzNGNzUwMDBFQjRDRTUgLyogTW9kdWxlUmVjb3JkLmggaW4gSGVhZGVycyAqLywK
IAkJCQkwRjI1RjFCNDE4MTYzNUYzMDA1MjJGMzkgLyogRlRMU2xvd1BhdGhDYWxsS2V5LmggaW4g
SGVhZGVycyAqLywKIAkJCQkwRjlEMzM5QjE4MDNBREI3MDA3M0MyQkMgLyogRlRMU3RhY2tNYXBz
LmggaW4gSGVhZGVycyAqLywKIAkJCQkwRkVBMEExMjE3MDUxM0RCMDBCQjcyMkMgLyogRlRMU3Rh
dGUuaCBpbiBIZWFkZXJzICovLApAQCAtNjIxNCw2ICs2MjIwLDcgQEAKIAkJCQlCQ0JFMkNBRTE0
RTk4NUFBMDAwNTkzQUQgLyogR0NBc3NlcnRpb25zLmggaW4gSGVhZGVycyAqLywKIAkJCQkwRjc2
NkQzMDE1QThEQ0UyMDA4RjM2M0UgLyogR0NBd2FyZUpJVFN0dWJSb3V0aW5lLmggaW4gSGVhZGVy
cyAqLywKIAkJCQk3MEVDMEVDNzFBQTBEN0RBMDBCNkFBRkEgLyogU3RyaW5nSXRlcmF0b3JQcm90
b3R5cGUuaCBpbiBIZWFkZXJzICovLAorCQkJCUUzOURBNEE3MUI3RThCN0MwMDg0RjMzQSAvKiBK
U01vZHVsZVJlY29yZC5oIGluIEhlYWRlcnMgKi8sCiAJCQkJMEYyQjY2QUMxN0I2QjUzRjAwQTdB
RTNGIC8qIEdDSW5jb21pbmdSZWZDb3VudGVkLmggaW4gSGVhZGVycyAqLywKIAkJCQkwRjJCNjZB
RDE3QjZCNTQ1MDBBN0FFM0YgLyogR0NJbmNvbWluZ1JlZkNvdW50ZWRJbmxpbmVzLmggaW4gSGVh
ZGVycyAqLywKIAkJCQkwRjJCNjZBRTE3QjZCNTQ1MDBBN0FFM0YgLyogR0NJbmNvbWluZ1JlZkNv
dW50ZWRTZXQuaCBpbiBIZWFkZXJzICovLApAQCAtNzMyOSw2ICs3MzM2LDcgQEAKIAkJCQkyQTg4
MDY3ODE5MTA3RDU1MDBDQjBCQkIgLyogREZHRnVuY3Rpb25XaGl0ZWxpc3QuY3BwIGluIFNvdXJj
ZXMgKi8sCiAJCQkJMEYyREQ4MTMxQUIzRDhCRTAwQkJCOEU4IC8qIERGR0FyZ3VtZW50c1V0aWxp
dGllcy5jcHAgaW4gU291cmNlcyAqLywKIAkJCQlBN0Q4OUNGMzE3QTBCOENDMDA3NzNBRDggLyog
REZHQmxvY2tJbnNlcnRpb25TZXQuY3BwIGluIFNvdXJjZXMgKi8sCisJCQkJRTM1NUYzNTIxQjdE
Qzg1MzAwQzUwREM1IC8qIE1vZHVsZUxvYWRlck9iamVjdC5jcHAgaW4gU291cmNlcyAqLywKIAkJ
CQk4NkVDOURDNDEzMjhERjgyMDAyQjJBRDcgLyogREZHQnl0ZUNvZGVQYXJzZXIuY3BwIGluIFNv
dXJjZXMgKi8sCiAJCQkJMEZEODJFMjExNDE3MkNFMzAwMTc5Qzk0IC8qIERGR0NhcGFiaWxpdGll
cy5jcHAgaW4gU291cmNlcyAqLywKIAkJCQkwRjJCOUNFNjE5RDBCQTdEMDBCMUQxQjUgLyogREZH
T2JqZWN0QWxsb2NhdGlvblNpbmtpbmdQaGFzZS5jcHAgaW4gU291cmNlcyAqLywKQEAgLTc2MTYs
NyArNzYyNCw2IEBACiAJCQkJMEYyQjY2RUQxN0I2QjVBQjAwQTdBRTNGIC8qIEpTRGF0YVZpZXdQ
cm90b3R5cGUuY3BwIGluIFNvdXJjZXMgKi8sCiAJCQkJMEYyRDRERTgxOTgzMkRBQzAwN0Q0QjE5
IC8qIFRvVGhpc1N0YXR1cy5jcHAgaW4gU291cmNlcyAqLywKIAkJCQlGRTM4NEVFNTFBRERCN0FE
MDA1NURFMkMgLyogSlNEb2xsYXJWTS5jcHAgaW4gU291cmNlcyAqLywKLQkJCQlFM0MwOUY1NTFC
Nzk2OTJBMDBFRTM2QTIgLyogTW9kdWxlUmVjb3JkLmNwcCBpbiBTb3VyY2VzICovLAogCQkJCTk3
ODgwMTQwMTQ3MUFEOTIwMDQxQjAxNiAvKiBKU0RhdGVNYXRoLmNwcCBpbiBTb3VyY2VzICovLAog
CQkJCTBGRTA1MDE3MUFBOTA5MTEwMEQzM0IzMyAvKiBEaXJlY3RBcmd1bWVudHMuY3BwIGluIFNv
dXJjZXMgKi8sCiAJCQkJMTQwNTY2RDYxMDdFQzI3MTAwNURCQzhEIC8qIEpTRnVuY3Rpb24uY3Bw
IGluIFNvdXJjZXMgKi8sCkBAIC03ODU4LDYgKzc4NjUsNyBAQAogCQkJCTBGRjQyNzMyMTU4RUJE
NTgwMDRDQjlGRiAvKiBVRGlzODZEaXNhc3NlbWJsZXIuY3BwIGluIFNvdXJjZXMgKi8sCiAJCQkJ
QTc2RjI3OTQxNUYxM0M5NjAwNTE3RDY3IC8qIFVubGlua2VkQ29kZUJsb2NrLmNwcCBpbiBTb3Vy
Y2VzICovLAogCQkJCUI1OUY4OTM5MTg5MUYyOUYwMEQ1Q0NEQyAvKiBVbmxpbmtlZEluc3RydWN0
aW9uU3RyZWFtLmNwcCBpbiBTb3VyY2VzICovLAorCQkJCUUzOURBNEE2MUI3RThCN0MwMDg0RjMz
QSAvKiBKU01vZHVsZVJlY29yZC5jcHAgaW4gU291cmNlcyAqLywKIAkJCQkwRjc1NzZEMjE4RTFG
RUU5MDAyRUY0Q0QgLyogQWNjZXNzb3JDYWxsSklUU3R1YlJvdXRpbmUuY3BwIGluIFNvdXJjZXMg
Ki8sCiAJCQkJMEYyNEU1NTgxN0Y3NEVEQjAwQUJCMjE3IC8qIFZhbHVlUmVjb3ZlcnkuY3BwIGlu
IFNvdXJjZXMgKi8sCiAJCQkJRTE4RTNBNTkwREY5Mjc4QzAwRDkwQjM0IC8qIFZNLmNwcCBpbiBT
b3VyY2VzICovLApkaWZmIC0tZ2l0IGEvU291cmNlL0phdmFTY3JpcHRDb3JlL2J1aWx0aW5zL0J1
aWx0aW5OYW1lcy5oIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL2J1aWx0aW5zL0J1aWx0aW5OYW1l
cy5oCmluZGV4IGNlMDQ0NDc5ZjczMDJmMTliMWQ4MTE2OGY5OWVjNDgzNWI0MDIyMGEuLjdlNTQz
NDJlNzUyZjlmMmQ0ZTgzNWVkMDM0ZjQ2MDljZjM2NWQzOWYgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9K
YXZhU2NyaXB0Q29yZS9idWlsdGlucy9CdWlsdGluTmFtZXMuaAorKysgYi9Tb3VyY2UvSmF2YVNj
cmlwdENvcmUvYnVpbHRpbnMvQnVpbHRpbk5hbWVzLmgKQEAgLTY3LDggKzY3LDggQEAgY2xhc3Mg
QnVpbHRpbk5hbWVzIHsKICAgICBib29sIGlzUHJpdmF0ZU5hbWUoU3ltYm9sSW1wbCYgdWlkKSBj
b25zdDsKICAgICBib29sIGlzUHJpdmF0ZU5hbWUoVW5pcXVlZFN0cmluZ0ltcGwmIHVpZCkgY29u
c3Q7CiAgICAgYm9vbCBpc1ByaXZhdGVOYW1lKGNvbnN0IElkZW50aWZpZXImKSBjb25zdDsKLSAg
ICBjb25zdCBJZGVudGlmaWVyKiBnZXRQcml2YXRlTmFtZShjb25zdCBJZGVudGlmaWVyJikgY29u
c3Q7Ci0gICAgY29uc3QgSWRlbnRpZmllciYgZ2V0UHVibGljTmFtZShjb25zdCBJZGVudGlmaWVy
JikgY29uc3Q7CisgICAgY29uc3QgSWRlbnRpZmllciogbG9va1VwUHJpdmF0ZU5hbWUoY29uc3Qg
SWRlbnRpZmllciYpIGNvbnN0OworICAgIGNvbnN0IElkZW50aWZpZXImIGxvb2tVcFB1YmxpY05h
bWUoY29uc3QgSWRlbnRpZmllciYpIGNvbnN0OwogICAgIAogICAgIEpTQ19GT1JFQUNIX0JVSUxU
SU5fRlVOQ1RJT05fTkFNRShERUNMQVJFX0JVSUxUSU5fSURFTlRJRklFUl9BQ0NFU1NPUikKICAg
ICBKU0NfQ09NTU9OX1BSSVZBVEVfSURFTlRJRklFUlNfRUFDSF9QUk9QRVJUWV9OQU1FKERFQ0xB
UkVfQlVJTFRJTl9JREVOVElGSUVSX0FDQ0VTU09SKQpAQCAtMTEwLDcgKzExMCw3IEBAIGlubGlu
ZSBib29sIEJ1aWx0aW5OYW1lczo6aXNQcml2YXRlTmFtZShjb25zdCBJZGVudGlmaWVyJiBpZGVu
dCkgY29uc3QKICAgICByZXR1cm4gaXNQcml2YXRlTmFtZSgqaWRlbnQuaW1wbCgpKTsKIH0KIAot
aW5saW5lIGNvbnN0IElkZW50aWZpZXIqIEJ1aWx0aW5OYW1lczo6Z2V0UHJpdmF0ZU5hbWUoY29u
c3QgSWRlbnRpZmllciYgaWRlbnQpIGNvbnN0CitpbmxpbmUgY29uc3QgSWRlbnRpZmllciogQnVp
bHRpbk5hbWVzOjpsb29rVXBQcml2YXRlTmFtZShjb25zdCBJZGVudGlmaWVyJiBpZGVudCkgY29u
c3QKIHsKICAgICBhdXRvIGl0ZXIgPSBtX3B1YmxpY1RvUHJpdmF0ZU1hcC5maW5kKGlkZW50Lmlt
cGwoKSk7CiAgICAgaWYgKGl0ZXIgIT0gbV9wdWJsaWNUb1ByaXZhdGVNYXAuZW5kKCkpCkBAIC0x
MTgsNyArMTE4LDcgQEAgaW5saW5lIGNvbnN0IElkZW50aWZpZXIqIEJ1aWx0aW5OYW1lczo6Z2V0
UHJpdmF0ZU5hbWUoY29uc3QgSWRlbnRpZmllciYgaWRlbnQpIGMKICAgICByZXR1cm4gMDsKIH0K
IAotaW5saW5lIGNvbnN0IElkZW50aWZpZXImIEJ1aWx0aW5OYW1lczo6Z2V0UHVibGljTmFtZShj
b25zdCBJZGVudGlmaWVyJiBpZGVudCkgY29uc3QKK2lubGluZSBjb25zdCBJZGVudGlmaWVyJiBC
dWlsdGluTmFtZXM6Omxvb2tVcFB1YmxpY05hbWUoY29uc3QgSWRlbnRpZmllciYgaWRlbnQpIGNv
bnN0CiB7CiAgICAgYXV0byBpdGVyID0gbV9wcml2YXRlVG9QdWJsaWNNYXAuZmluZChpZGVudC5p
bXBsKCkpOwogICAgIGlmIChpdGVyICE9IG1fcHJpdmF0ZVRvUHVibGljTWFwLmVuZCgpKQpkaWZm
IC0tZ2l0IGEvU291cmNlL0phdmFTY3JpcHRDb3JlL2J1aWx0aW5zL01vZHVsZUxvYWRlck9iamVj
dC5qcyBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9idWlsdGlucy9Nb2R1bGVMb2FkZXJPYmplY3Qu
anMKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMC4uNmU2ZmQ3ODZjODIzZGU2MDc3Y2FmZDM2NWQ4M2IwNjU1OWUxZjNlZAot
LS0gL2Rldi9udWxsCisrKyBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9idWlsdGlucy9Nb2R1bGVM
b2FkZXJPYmplY3QuanMKQEAgLTAsMCArMSwzOTcgQEAKKy8qCisgKiBDb3B5cmlnaHQgKEMpIDIw
MTUgQXBwbGUgSW5jLiBBbGwgcmlnaHRzIHJlc2VydmVkLgorICoKKyAqIFJlZGlzdHJpYnV0aW9u
IGFuZCB1c2UgaW4gc291cmNlIGFuZCBiaW5hcnkgZm9ybXMsIHdpdGggb3Igd2l0aG91dAorICog
bW9kaWZpY2F0aW9uLCBhcmUgcGVybWl0dGVkIHByb3ZpZGVkIHRoYXQgdGhlIGZvbGxvd2luZyBj
b25kaXRpb25zCisgKiBhcmUgbWV0OgorICogMS4gUmVkaXN0cmlidXRpb25zIG9mIHNvdXJjZSBj
b2RlIG11c3QgcmV0YWluIHRoZSBhYm92ZSBjb3B5cmlnaHQKKyAqICAgIG5vdGljZSwgdGhpcyBs
aXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lci4KKyAqIDIuIFJl
ZGlzdHJpYnV0aW9ucyBpbiBiaW5hcnkgZm9ybSBtdXN0IHJlcHJvZHVjZSB0aGUgYWJvdmUgY29w
eXJpZ2h0CisgKiAgICBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9s
bG93aW5nIGRpc2NsYWltZXIgaW4gdGhlCisgKiAgICBkb2N1bWVudGF0aW9uIGFuZC9vciBvdGhl
ciBtYXRlcmlhbHMgcHJvdmlkZWQgd2l0aCB0aGUgZGlzdHJpYnV0aW9uLgorICoKKyAqIFRISVMg
U09GVFdBUkUgSVMgUFJPVklERUQgQlkgQVBQTEUgSU5DLiBgYEFTIElTJycgQU5EIEFOWQorICog
RVhQUkVTUyBPUiBJTVBMSUVEIFdBUlJBTlRJRVMsIElOQ0xVRElORywgQlVUIE5PVCBMSU1JVEVE
IFRPLCBUSEUKKyAqIElNUExJRUQgV0FSUkFOVElFUyBPRiBNRVJDSEFOVEFCSUxJVFkgQU5EIEZJ
VE5FU1MgRk9SIEEgUEFSVElDVUxBUgorICogUFVSUE9TRSBBUkUgRElTQ0xBSU1FRC4gIElOIE5P
IEVWRU5UIFNIQUxMIEFQUExFIElOQy4gT1IKKyAqIENPTlRSSUJVVE9SUyBCRSBMSUFCTEUgRk9S
IEFOWSBESVJFQ1QsIElORElSRUNULCBJTkNJREVOVEFMLCBTUEVDSUFMLAorICogRVhFTVBMQVJZ
LCBPUiBDT05TRVFVRU5USUFMIERBTUFHRVMgKElOQ0xVRElORywgQlVUIE5PVCBMSU1JVEVEIFRP
LAorICogUFJPQ1VSRU1FTlQgT0YgU1VCU1RJVFVURSBHT09EUyBPUiBTRVJWSUNFUzsgTE9TUyBP
RiBVU0UsIERBVEEsIE9SCisgKiBQUk9GSVRTOyBPUiBCVVNJTkVTUyBJTlRFUlJVUFRJT04pIEhP
V0VWRVIgQ0FVU0VEIEFORCBPTiBBTlkgVEhFT1JZCisgKiBPRiBMSUFCSUxJVFksIFdIRVRIRVIg
SU4gQ09OVFJBQ1QsIFNUUklDVCBMSUFCSUxJVFksIE9SIFRPUlQKKyAqIChJTkNMVURJTkcgTkVH
TElHRU5DRSBPUiBPVEhFUldJU0UpIEFSSVNJTkcgSU4gQU5ZIFdBWSBPVVQgT0YgVEhFIFVTRQor
ICogT0YgVEhJUyBTT0ZUV0FSRSwgRVZFTiBJRiBBRFZJU0VEIE9GIFRIRSBQT1NTSUJJTElUWSBP
RiBTVUNIIERBTUFHRS4KKyAqLworCitmdW5jdGlvbiBzZXRTdGF0ZVRvTWF4KGVudHJ5LCBuZXdT
dGF0ZSkKK3sKKyAgICAvLyBodHRwczovL3doYXR3Zy5naXRodWIuaW8vbG9hZGVyLyNzZXQtc3Rh
dGUtdG8tbWF4CisKKyAgICAidXNlIHN0cmljdCI7CisKKyAgICBpZiAoZW50cnkuc3RhdGUgPCBu
ZXdTdGF0ZSkKKyAgICAgICAgZW50cnkuc3RhdGUgPSBuZXdTdGF0ZTsKK30KKworZnVuY3Rpb24g
bmV3UmVnaXN0cnlFbnRyeShrZXkpCit7CisgICAgLy8gaHR0cHM6Ly93aGF0d2cuZ2l0aHViLmlv
L2xvYWRlci8jcmVnaXN0cnkKKyAgICAvLworICAgIC8vIEVhY2ggcmVnaXN0cnkgZW50cnkgYmVj
b21lcyBvbmUgb2YgdGhlIDUgc3RhdGVzLgorICAgIC8vIDEuIEZldGNoCisgICAgLy8gICAgIFJl
YWR5IHRvIGZldGNoIChvciBub3cgZmV0Y2hpbmcpIHRoZSByZXNvdXJjZSBvZiB0aGlzIG1vZHVs
ZS4KKyAgICAvLyAgICAgVHlwaWNhbGx5LCB3ZSBmZXRjaCB0aGUgc291cmNlIGNvZGUgb3ZlciB0
aGUgbmV0d29yayBvciBmcm9tIHRoZSBmaWxlIHN5c3RlbS4KKyAgICAvLyAgICAgYS4gSWYgdGhl
IHN0YXR1cyBpcyBGZXRjaCBhbmQgdGhlcmUgaXMgbm8gZW50cnkuZmV0Y2ggcHJvbWlzZSwgdGhl
IGVudHJ5IGlzIHJlYWR5IHRvIGZldGNoLgorICAgIC8vICAgICBiLiBJZiB0aGUgc3RhdHVzIGlz
IEZldGNoIGFuZCB0aGVyZSBpcyB0aGUgZW50cnkuZmV0Y2ggcHJvbWlzZSwgdGhlIGVudHJ5IGlz
IGp1c3QgZmV0Y2hpbmcgdGhlIHJlc291cmNlLgorICAgIC8vCisgICAgLy8gMi4gVHJhbnNsYXRl
CisgICAgLy8gICAgIFJlYWR5IHRvIHRyYW5zbGF0ZSAob3Igbm93IHRyYW5zbGF0aW5nKSB0aGUg
cmF3IGZldGNoZWQgcmVzb3VyY2UgdG8gdGhlIEVDTUFTY3JpcHQgc291cmNlIGNvZGUuCisgICAg
Ly8gICAgIFdlIGNhbiBpbnNlcnQgdGhlIGhvb2sgdGhhdCB0cmFuc2xhdGVzIHRoZSByZXNvdXJj
ZXMgZS5nLiB0cmFuc3BpbGVycy4KKyAgICAvLyAgICAgYS4gSWYgdGhlIHN0YXR1cyBpcyBUcmFu
c2xhdGUgYW5kIHRoZXJlIGlzIG5vIGVudHJ5LnRyYW5zbGF0ZSBwcm9taXNlLCB0aGUgZW50cnkg
aXMgcmVhZHkgdG8gdHJhbnNsYXRlLgorICAgIC8vICAgICBiLiBJZiB0aGUgc3RhdHVzIGlzIFRy
YW5zbGF0ZSBhbmQgdGhlcmUgaXMgdGhlIGVudHJ5LnRyYW5zbGF0ZSBwcm9taXNlLCB0aGUgZW50
cnkgaXMganVzdCB0cmFuc2xhdGluZworICAgIC8vICAgICAgICB0aGUgcGF5bG9hZCB0byB0aGUg
c291cmNlIGNvZGUuCisgICAgLy8KKyAgICAvLyAzLiBJbnN0YW50aWF0ZQorICAgIC8vICAgICBS
ZWFkeSB0byBpbnN0YW50aWF0ZSAob3Igbm93IGluc3RhbnRpYXRpbmcpIHRoZSBtb2R1bGUgcmVj
b3JkIGZyb20gdGhlIGZldGNoZWQgKGFuZCB0cmFuc2xhdGVkKQorICAgIC8vICAgICBzb3VyY2Ug
Y29kZS4KKyAgICAvLyAgICAgVHlwaWNhbGx5LCB3ZSBwYXJzZSB0aGUgbW9kdWxlIGNvZGUsIGV4
dHJhY3QgdGhlIGRlcGVuZGVuY2llcyBhbmQgYmluZGluZyBpbmZvcm1hdGlvbi4KKyAgICAvLyAg
ICAgYS4gSWYgdGhlIHN0YXR1cyBpcyBJbnN0YW50aWF0ZSBhbmQgdGhlcmUgaXMgbm8gZW50cnku
aW5zdGFudGlhdGUgcHJvbWlzZSwgdGhlIGVudHJ5IGlzIHJlYWR5IHRvIGluc3RhbnRpYXRlLgor
ICAgIC8vICAgICBiLiBJZiB0aGUgc3RhdHVzIGlzIEluc3RhbnRpYXRlIGFuZCB0aGVyZSBpcyB0
aGUgZW50cnkudHJhbnNsYXRlIHByb21pc2UsIHRoZSBlbnRyeSBpcyBqdXN0IGluc3RhbnRpYXRp
bmcKKyAgICAvLyAgICAgICAgdGhlIG1vZHVsZSByZWNvcmQuCisgICAgLy8KKyAgICAvLyA0LiBD
b2xsZWN0IChub3QgaW4gdGhlIGRyYWZ0KSBodHRwczovL2dpdGh1Yi5jb20vd2hhdHdnL2xvYWRl
ci9pc3N1ZXMvNjgKKyAgICAvLyAgICAgUmVhZHkgdG8gcmVxdWVzdCB0aGUgZGVwZW5kZW50IG1v
ZHVsZXMgKG9yIG5vdyByZXF1ZXN0aW5nICYgcmVzb2x2aW5nKS4KKyAgICAvLyAgICAgV2l0aG91
dCB0aGlzIHN0YXRlLCB0aGUgY3VycmVudCBkcmFmdCBjYXVzZXMgaW5maW5pdGUgcmVjdXJzaW9u
IHdoZW4gdGhlcmUgaXMgY2lyY3VsYXIgZGVwZW5kZW5jeS4KKyAgICAvLyAgICAgYS4gSWYgdGhl
IHN0YXR1cyBpcyBDb2xsZWN0IGFuZCB0aGVyZSBpcyBubyBlbnRyeS5jb2xsZWN0IHByb21pc2Us
IHRoZSBlbnRyeSBpcyByZWFkeSB0byBjb2xsZWN0LgorICAgIC8vICAgICBiLiBJZiB0aGUgc3Rh
dHVzIGlzIENvbGxlY3QgYW5kIHRoZXJlIGlzIHRoZSBlbnRyeS5jb2xsZWN0IHByb21pc2UsIHRo
ZSBlbnRyeSBpcyBqdXN0IGNvbGxlY3RpbmcKKyAgICAvLyAgICAgICAgdGhlIGRlcGVuZGVuY2ll
cy4KKyAgICAvLworICAgIC8vIDUuIExpbmsKKyAgICAvLyAgICAgUmVhZHkgdG8gbGluayB0aGUg
bW9kdWxlIHdpdGggdGhlIG90aGVyIG1vZHVsZXMuCisgICAgLy8gICAgIExpbmtpbmcgbWVhbnMg
dGhlIGltcG9ydGluZyBhbmQgZXhwb3J0aW5nIHRoZSBiaW5kaW5ncyB3aXRoIGVhY2ggb3RoZXIu
CisgICAgLy8KKyAgICAvLyA2LiBSZWFkeQorICAgIC8vICAgICBUaGUgbW9kdWxlIGlzIGxpbmtl
ZCwgc28gdGhlIG1vZHVsZSBpcyByZWFkeSB0byBiZSBleGVjdXRlZC4KKyAgICAvLworICAgIC8v
IEVhY2ggcmVnaXN0cnkgZW50cnkgaGFzIHRoZSA0IHByb21pc2VzOyAiZmV0Y2giLCAidHJhbnNs
YXRlIiwgImluc3RhbnRpYXRlIiBhbmQgImNvbGxlY3QiLgorICAgIC8vIFRoZXkgYXJlIGFzc2ln
bmVkIHdoZW4gc3RhcnRpbmcgdGhlIGVhY2ggcGhhc2UuIEFuZCB0aGV5IGFyZSBmdWxmaWxsZWQg
d2hlbiB0aGUgZWFjaCBwaGFzZSBpcyBjb21wbGV0ZWQuCisgICAgLy8KKyAgICAvLyBJbiB0aGUg
Y3VycmVudCBtb2R1bGUgZHJhZnQsIGxpbmtpbmcgd2lsbCBiZSBwZXJmb3JtZWQgYWZ0ZXIgdGhl
IHdob2xlIG1vZHVsZXMgYXJlIGluc3RhbnRpYXRlZCBhbmQgY29sbGVjdGVkLgorICAgIC8vIEFu
ZCBleGVjdXRpb24gaXMgYWxzbyBkb25lIGFmdGVyIHRoZSBhbGwgbW9kdWxlcyBhcmUgbGlua2Vk
LgorICAgIC8vCisgICAgLy8gVE9ETzogV2UgbmVlZCB0byBleHBsb2l0IHRoZSB3YXkgdG8gZXhl
Y3V0ZSB0aGUgbW9kdWxlIHdoaWxlIGZldGNoaW5nIG5vbi1yZWxhdGVkIG1vZHVsZXMuCisgICAg
Ly8gT25lIHNvbHV0aW9uOyBpbnRyb2R1Y2luZyB0aGUgcmVhZHkgcHJvbWlzZSBjaGFpbiB0byBl
eGVjdXRlIHRoZSBtb2R1bGVzIGNvbmN1cnJlbnRseSB3aGlsZSBrZWVwaW5nCisgICAgLy8gdGhl
IGV4ZWN1dGlvbiBvcmRlci4KKworICAgICJ1c2Ugc3RyaWN0IjsKKworICAgIHJldHVybiB7Cisg
ICAgICAgIGtleToga2V5LAorICAgICAgICBzdGF0ZTogdGhpcy5GZXRjaCwKKyAgICAgICAgbWV0
YWRhdGE6IHVuZGVmaW5lZCwKKyAgICAgICAgZmV0Y2g6IHVuZGVmaW5lZCwKKyAgICAgICAgdHJh
bnNsYXRlOiB1bmRlZmluZWQsCisgICAgICAgIGluc3RhbnRpYXRlOiB1bmRlZmluZWQsCisgICAg
ICAgIGNvbGxlY3Q6IHVuZGVmaW5lZCwKKyAgICAgICAgZGVwZW5kZW5jaWVzOiBbXSwgLy8gVG8g
a2VlcCB0aGUgbW9kdWxlIG9yZGVyLCB3ZSBzdG9yZSB0aGUgbW9kdWxlIGtleXMgaW4gdGhlIGFy
cmF5LgorICAgICAgICBkZXBlbmRlbmNpZXNNYXA6IHVuZGVmaW5lZCwKKyAgICAgICAgbW9kdWxl
OiB1bmRlZmluZWQsCisgICAgICAgIGVycm9yOiB1bmRlZmluZWQsCisgICAgfTsKK30KKworZnVu
Y3Rpb24gZW5zdXJlUmVnaXN0ZXJlZChrZXkpCit7CisgICAgLy8gaHR0cHM6Ly93aGF0d2cuZ2l0
aHViLmlvL2xvYWRlci8jZW5zdXJlLXJlZ2lzdGVyZWQKKworICAgICJ1c2Ugc3RyaWN0IjsKKwor
ICAgIHZhciBlbnRyeSA9IHRoaXMucmVnaXN0cnkuQGdldChrZXkpOworICAgIGlmIChlbnRyeSkK
KyAgICAgICAgcmV0dXJuIGVudHJ5OworCisgICAgZW50cnkgPSB0aGlzLm5ld1JlZ2lzdHJ5RW50
cnkoa2V5KTsKKyAgICB0aGlzLnJlZ2lzdHJ5LkBzZXQoa2V5LCBlbnRyeSk7CisKKyAgICByZXR1
cm4gZW50cnk7Cit9CisKK2Z1bmN0aW9uIGZvcmNlRnVsZmlsbFByb21pc2UocHJvbWlzZSwgdmFs
dWUpCit7CisgICAgInVzZSBzdHJpY3QiOworCisgICAgaWYgKHByb21pc2UuQHByb21pc2VTdGF0
ZSA9PT0gQHByb21pc2VQZW5kaW5nKQorICAgICAgICBAZnVsZmlsbFByb21pc2UocHJvbWlzZSwg
dmFsdWUpOworfQorCitmdW5jdGlvbiBmdWxmaWxsRmV0Y2goZW50cnksIHBheWxvYWQpCit7Cisg
ICAgLy8gaHR0cHM6Ly93aGF0d2cuZ2l0aHViLmlvL2xvYWRlci8jZnVsZmlsbC1mZXRjaAorCisg
ICAgInVzZSBzdHJpY3QiOworCisgICAgaWYgKCFlbnRyeS5mZXRjaCkKKyAgICAgICAgZW50cnku
ZmV0Y2ggPSBAbmV3UHJvbWlzZURlZmVycmVkKCkuQHByb21pc2U7CisgICAgdGhpcy5mb3JjZUZ1
bGZpbGxQcm9taXNlKGVudHJ5LmZldGNoLCBwYXlsb2FkKTsKKyAgICB0aGlzLnNldFN0YXRlVG9N
YXgoZW50cnksIHRoaXMuVHJhbnNsYXRlKTsKK30KKworZnVuY3Rpb24gZnVsZmlsbFRyYW5zbGF0
ZShlbnRyeSwgc291cmNlKQoreworICAgIC8vIGh0dHBzOi8vd2hhdHdnLmdpdGh1Yi5pby9sb2Fk
ZXIvI2Z1bGZpbGwtdHJhbnNsYXRlCisKKyAgICAidXNlIHN0cmljdCI7CisKKyAgICBpZiAoIWVu
dHJ5LnRyYW5zbGF0ZSkKKyAgICAgICAgZW50cnkudHJhbnNsYXRlID0gQG5ld1Byb21pc2VEZWZl
cnJlZCgpLkBwcm9taXNlOworICAgIHRoaXMuZm9yY2VGdWxmaWxsUHJvbWlzZShlbnRyeS50cmFu
c2xhdGUsIHNvdXJjZSk7CisgICAgdGhpcy5zZXRTdGF0ZVRvTWF4KGVudHJ5LCB0aGlzLkluc3Rh
bnRpYXRlKTsKK30KKworZnVuY3Rpb24gZnVsZmlsbEluc3RhbnRpYXRlKGVudHJ5LCBvcHRpb25h
bEluc3RhbmNlLCBzb3VyY2UpCit7CisgICAgLy8gaHR0cHM6Ly93aGF0d2cuZ2l0aHViLmlvL2xv
YWRlci8jZnVsZmlsbC1pbnN0YW50aWF0ZQorCisgICAgInVzZSBzdHJpY3QiOworCisgICAgaWYg
KCFlbnRyeS5pbnN0YW50aWF0ZSkKKyAgICAgICAgZW50cnkuaW5zdGFudGlhdGUgPSBAbmV3UHJv
bWlzZURlZmVycmVkKCkuQHByb21pc2U7CisgICAgdGhpcy5jb21taXRJbnN0YW50aWF0ZWQoZW50
cnksIG9wdGlvbmFsSW5zdGFuY2UsIHNvdXJjZSk7CisKKyAgICAvLyBGSVhNRTogVGhlIGRyYWZ0
IGZ1bGZpbGxzIHRoZSBwcm9taXNlIGluIHRoZSBDb21taXRJbnN0YW50aWF0ZWQgb3BlcmF0aW9u
LgorICAgIC8vIEJ1dCBpdCBDb21taXRJbnN0YW50aWF0ZWQgaXMgYWxzbyB1c2VkIGluIHRoZSBy
ZXF1ZXN0SW5zdGFudGlhdGUgYW5kCisgICAgLy8gd2Ugc2hvdWxkIG5vdCAiZm9yY2UgZnVsZmls
bCIgdGhlcmUuCisgICAgLy8gU28gd2Ugc2VwYXJhdGUgImZvcmNlIGZ1bGZpbGwiIG9wZXJhdGlv
biBmcm9tIHRoZSBDb21taXRJbnN0YW50aWF0ZWQgb3BlcmF0aW9uLgorICAgIC8vIGh0dHBzOi8v
Z2l0aHViLmNvbS93aGF0d2cvbG9hZGVyL3B1bGwvNjcKKyAgICB0aGlzLmZvcmNlRnVsZmlsbFBy
b21pc2UoZW50cnkuaW5zdGFudGlhdGUsIGVudHJ5KTsKK30KKworZnVuY3Rpb24gY29tbWl0SW5z
dGFudGlhdGVkKGVudHJ5LCBvcHRpb25hbEluc3RhbmNlLCBzb3VyY2UpCit7CisgICAgLy8gaHR0
cHM6Ly93aGF0d2cuZ2l0aHViLmlvL2xvYWRlci8jY29tbWl0LWluc3RhbnRpYXRlZAorCisgICAg
InVzZSBzdHJpY3QiOworCisgICAgdmFyIGluc3RhbmNlID0gdGhpcy5pbnN0YW50aWF0aW9uKG9w
dGlvbmFsSW5zdGFuY2UsIHNvdXJjZSk7CisKKyAgICAvLyBGSVhNRTogRGVzY3JpYmVkIGluIHRo
ZSBkcmFmdCwKKyAgICAvLyAgIDQuIEZ1bGZpbGwgZW50cnkuW1tJbnN0YW50aWF0ZV1dIHdpdGgg
aW5zdGFuY2UuCisgICAgLy8gQnV0LCBpbnN0YW50aWF0ZSBwcm9taXNlIHNob3VsZCBiZSBmdWxm
aWxsZWQgd2l0aCB0aGUgZW50cnkuCisgICAgLy8gV2UgcmVtb3ZlIHRoaXMgc3RhdGVtZW50IGJl
Y2F1c2UgaW5zdGFudGlhdGUgcHJvbWlzZSB3aWxsIGJlCisgICAgLy8gZnVsZmlsbGVkIHdpdGhv
dXQgdGhpcyAiZm9yY2UgZnVsZmlsbCIgb3BlcmF0aW9uLgorICAgIC8vIGh0dHBzOi8vZ2l0aHVi
LmNvbS93aGF0d2cvbG9hZGVyL3B1bGwvNjcKKworICAgIHZhciBkZXBzID0gW107CisgICAgdmFy
IGRlcHNNYXAgPSBuZXcgQE1hcCgpOworICAgIGluc3RhbmNlLnJlZ2lzdHJ5RW50cnkgPSBlbnRy
eTsKKyAgICB2YXIgcmVxdWVzdGVkTW9kdWxlcyA9IHRoaXMucmVxdWVzdGVkTW9kdWxlcyhpbnN0
YW5jZSk7CisgICAgZm9yICh2YXIgaSA9IDAsIGxlbmd0aCA9IHJlcXVlc3RlZE1vZHVsZXMubGVu
Z3RoOyBpIDwgbGVuZ3RoOyArK2kpIHsKKyAgICAgICAgdmFyIGRlcEtleSA9IHJlcXVlc3RlZE1v
ZHVsZXNbaV07CisgICAgICAgIHZhciBwYWlyID0geworICAgICAgICAgICAga2V5OiBkZXBLZXks
CisgICAgICAgICAgICB2YWx1ZTogdW5kZWZpbmVkCisgICAgICAgIH07CisgICAgICAgIEBwdXRC
eVZhbERpcmVjdChkZXBzLCBpLCBwYWlyKTsKKyAgICAgICAgZGVwc01hcC5Ac2V0KGRlcEtleSwg
cGFpcik7CisgICAgfQorICAgIGVudHJ5LmRlcGVuZGVuY2llcyA9IGRlcHM7CisgICAgZW50cnku
ZGVwZW5kZW5jaWVzTWFwID0gZGVwc01hcDsKKyAgICBlbnRyeS5tb2R1bGUgPSBpbnN0YW5jZTsK
KyAgICB0aGlzLnNldFN0YXRlVG9NYXgoZW50cnksIHRoaXMuQ29sbGVjdCk7Cit9CisKK2Z1bmN0
aW9uIGluc3RhbnRpYXRpb24ocmVzdWx0LCBzb3VyY2UpCit7CisgICAgLy8gaHR0cHM6Ly93aGF0
d2cuZ2l0aHViLmlvL2xvYWRlci8jaW5zdGFudGlhdGlvbgorICAgIC8vIEZJWE1FOiBDdXJyZW50
IGltcGxlbWVudGF0aW9uIGRvZXMgbm90IHN1cHBvcnQgb3B0aW9uYWxJbnN0YW5jZS4KKworICAg
ICJ1c2Ugc3RyaWN0IjsKKworICAgIHJldHVybiB0aGlzLnBhcnNlTW9kdWxlKHNvdXJjZSk7Cit9
CisKKy8vIExvYWRlci4KKworZnVuY3Rpb24gcmVxdWVzdEZldGNoKGtleSkKK3sKKyAgICAvLyBo
dHRwczovL3doYXR3Zy5naXRodWIuaW8vbG9hZGVyLyNyZXF1ZXN0LWZldGNoCisKKyAgICAidXNl
IHN0cmljdCI7CisKKyAgICB2YXIgZW50cnkgPSB0aGlzLmVuc3VyZVJlZ2lzdGVyZWQoa2V5KTsK
KyAgICBpZiAoZW50cnkuc3RhdGUgPiB0aGlzLkxpbmspIHsKKyAgICAgICAgdmFyIGRlZmVycmVk
ID0gQG5ld1Byb21pc2VEZWZlcnJlZCgpOworICAgICAgICBkZWZlcnJlZC5AcmVqZWN0LkBjYWxs
KHVuZGVmaW5lZCwgbmV3IEBUeXBlRXJyb3IoIlJlcXVlc3RlZCBtb2R1bGUgaXMgYWxyZWFkeSBy
ZWFkeSB0byBiZSBleGVjdXRlZC4iKSk7CisgICAgICAgIHJldHVybiBkZWZlcnJlZC5AcHJvbWlz
ZTsKKyAgICB9CisKKyAgICBpZiAoZW50cnkuZmV0Y2gpCisgICAgICAgIHJldHVybiBlbnRyeS5m
ZXRjaDsKKworICAgIHZhciBsb2FkZXIgPSB0aGlzOworICAgIHZhciBmZXRjaFByb21pc2UgPSB0
aGlzLmZldGNoKGtleSkuQHRoZW4oZnVuY3Rpb24gKHBheWxvYWQpIHsKKyAgICAgICAgbG9hZGVy
LnNldFN0YXRlVG9NYXgoZW50cnksIGxvYWRlci5UcmFuc2xhdGUpOworICAgICAgICByZXR1cm4g
cGF5bG9hZDsKKyAgICB9KTsKKyAgICBlbnRyeS5mZXRjaCA9IGZldGNoUHJvbWlzZTsKKyAgICBy
ZXR1cm4gZmV0Y2hQcm9taXNlOworfQorCitmdW5jdGlvbiByZXF1ZXN0VHJhbnNsYXRlKGtleSkK
K3sKKyAgICAvLyBodHRwczovL3doYXR3Zy5naXRodWIuaW8vbG9hZGVyLyNyZXF1ZXN0LXRyYW5z
bGF0ZQorCisgICAgInVzZSBzdHJpY3QiOworCisgICAgdmFyIGVudHJ5ID0gdGhpcy5lbnN1cmVS
ZWdpc3RlcmVkKGtleSk7CisgICAgaWYgKGVudHJ5LnN0YXRlID4gdGhpcy5MaW5rKSB7CisgICAg
ICAgIHZhciBkZWZlcnJlZCA9IEBuZXdQcm9taXNlRGVmZXJyZWQoKTsKKyAgICAgICAgZGVmZXJy
ZWQuQHJlamVjdC5AY2FsbCh1bmRlZmluZWQsIG5ldyBAVHlwZUVycm9yKCJSZXF1ZXN0ZWQgbW9k
dWxlIGlzIGFscmVhZHkgcmVhZHkgdG8gYmUgZXhlY3V0ZWQuIikpOworICAgICAgICByZXR1cm4g
ZGVmZXJyZWQuQHByb21pc2U7CisgICAgfQorCisgICAgaWYgKGVudHJ5LnRyYW5zbGF0ZSkKKyAg
ICAgICAgcmV0dXJuIGVudHJ5LnRyYW5zbGF0ZTsKKworICAgIHZhciBsb2FkZXIgPSB0aGlzOwor
ICAgIHZhciB0cmFuc2xhdGVQcm9taXNlID0gdGhpcy5yZXF1ZXN0RmV0Y2goa2V5KS5AdGhlbihm
dW5jdGlvbiAocGF5bG9hZCkgeworICAgICAgICByZXR1cm4gbG9hZGVyLnRyYW5zbGF0ZShrZXks
IHBheWxvYWQpLkB0aGVuKGZ1bmN0aW9uIChzb3VyY2UpIHsKKyAgICAgICAgICAgIGxvYWRlci5z
ZXRTdGF0ZVRvTWF4KGVudHJ5LCBsb2FkZXIuSW5zdGFudGlhdGUpOworICAgICAgICAgICAgcmV0
dXJuIHNvdXJjZTsKKyAgICAgICAgfSk7CisgICAgfSk7CisgICAgZW50cnkudHJhbnNsYXRlID0g
dHJhbnNsYXRlUHJvbWlzZTsKKyAgICByZXR1cm4gdHJhbnNsYXRlUHJvbWlzZTsKK30KKworZnVu
Y3Rpb24gcmVxdWVzdEluc3RhbnRpYXRlKGtleSkKK3sKKyAgICAvLyBodHRwczovL3doYXR3Zy5n
aXRodWIuaW8vbG9hZGVyLyNyZXF1ZXN0LWluc3RhbnRpYXRlCisKKyAgICAidXNlIHN0cmljdCI7
CisKKyAgICB2YXIgZW50cnkgPSB0aGlzLmVuc3VyZVJlZ2lzdGVyZWQoa2V5KTsKKyAgICBpZiAo
ZW50cnkuc3RhdGUgPiB0aGlzLkxpbmspIHsKKyAgICAgICAgdmFyIGRlZmVycmVkID0gQG5ld1By
b21pc2VEZWZlcnJlZCgpOworICAgICAgICBkZWZlcnJlZC5AcmVqZWN0LkBjYWxsKHVuZGVmaW5l
ZCwgbmV3IEBUeXBlRXJyb3IoIlJlcXVlc3RlZCBtb2R1bGUgaXMgYWxyZWFkeSByZWFkeSB0byBi
ZSBleGVjdXRlZC4iKSk7CisgICAgICAgIHJldHVybiBkZWZlcnJlZC5AcHJvbWlzZTsKKyAgICB9
CisKKyAgICBpZiAoZW50cnkuaW5zdGFudGlhdGUpCisgICAgICAgIHJldHVybiBlbnRyeS5pbnN0
YW50aWF0ZTsKKworICAgIHZhciBsb2FkZXIgPSB0aGlzOworICAgIHZhciBpbnN0YW50aWF0ZVBy
b21pc2UgPSB0aGlzLnJlcXVlc3RUcmFuc2xhdGUoa2V5KS5AdGhlbihmdW5jdGlvbiAoc291cmNl
KSB7CisgICAgICAgIHJldHVybiBsb2FkZXIuaW5zdGFudGlhdGUoa2V5LCBzb3VyY2UpLkB0aGVu
KGZ1bmN0aW9uIChvcHRpb25hbEluc3RhbmNlKSB7CisgICAgICAgICAgICBsb2FkZXIuY29tbWl0
SW5zdGFudGlhdGVkKGVudHJ5LCBvcHRpb25hbEluc3RhbmNlLCBzb3VyY2UpOworICAgICAgICAg
ICAgcmV0dXJuIGVudHJ5OworICAgICAgICB9KTsKKyAgICB9KTsKKyAgICBlbnRyeS5pbnN0YW50
aWF0ZSA9IGluc3RhbnRpYXRlUHJvbWlzZTsKKyAgICByZXR1cm4gaW5zdGFudGlhdGVQcm9taXNl
OworfQorCitmdW5jdGlvbiByZXF1ZXN0Q29sbGVjdChrZXkpCit7CisgICAgLy8gRklYTUU6IElu
IHRoZSBzcGVjLCBhZnRlciByZXF1ZXN0aW5nIGluc3RhbnRpYXRpb24sIHdlIHdpbGwgcmVzb2x2
ZQorICAgIC8vIHRoZSBkZXBlbmRlbmNpZXMgd2l0aG91dCBhbnkgc3RhdHVzIGNoYW5nZS4gQXMg
YSByZXN1bHQsIHdoZW4gdGhlcmUKKyAgICAvLyBpcyBjaXJjdWxhciBkZXBlbmRlbmNpZXMsIGlu
c3RhbnRpYXRpb24gaXMgZG9uZSBvbmx5IG9uY2UsIGJ1dAorICAgIC8vIHJlcGVhdGVkbHkgcmVz
b2x2aW5nIHRoZSBkZXBlbmRlbmNpZXMuIFRoaXMgbWVhbnMgdGhhdCBpbmZpbml0ZQorICAgIC8v
IHJlY3Vyc2lvbiBvY2N1ciB3aGVuIHRoZSBnaXZlbiBtb2R1bGVzIGhhdmUgY2lyY3VsYXIgZGVw
ZW5kZW5jeS4gVG8KKyAgICAvLyBhdm9pZCB0aGlzIHNpdHVhdGlvbiwgd2UgaW50cm9kdWNlIG5l
dyBzdGF0ZSwgIkNvbGxlY3QiLiBUaGlzIG1lYW5zCisgICAgLy8gIk5vdyB0aGUgbW9kdWxlIGlz
IGluc3RhbnRpYXRlZCwgc28gcmVhZHkgdG8gY29sbGVjdCB0aGUgZGVwZW5kZW5jaWVzCisgICAg
Ly8gb3Igbm93IHJlc29sdmluZyB0aGVtIi4KKyAgICAvLyBodHRwczovL2dpdGh1Yi5jb20vd2hh
dHdnL2xvYWRlci9pc3N1ZXMvNjgKKworICAgICJ1c2Ugc3RyaWN0IjsKKworICAgIHZhciBlbnRy
eSA9IHRoaXMuZW5zdXJlUmVnaXN0ZXJlZChrZXkpOworICAgIGlmIChlbnRyeS5zdGF0ZSA+IHRo
aXMuTGluaykgeworICAgICAgICB2YXIgZGVmZXJyZWQgPSBAbmV3UHJvbWlzZURlZmVycmVkKCk7
CisgICAgICAgIGRlZmVycmVkLkByZWplY3QuQGNhbGwodW5kZWZpbmVkLCBuZXcgQFR5cGVFcnJv
cigiUmVxdWVzdGVkIG1vZHVsZSBpcyBhbHJlYWR5IHJlYWR5IHRvIGJlIGV4ZWN1dGVkLiIpKTsK
KyAgICAgICAgcmV0dXJuIGRlZmVycmVkLkBwcm9taXNlOworICAgIH0KKworICAgIGlmIChlbnRy
eS5jb2xsZWN0KQorICAgICAgICByZXR1cm4gZW50cnkuY29sbGVjdDsKKworICAgIHZhciBsb2Fk
ZXIgPSB0aGlzOworICAgIHZhciBjb2xsZWN0UHJvbWlzZSA9IHRoaXMucmVxdWVzdEluc3RhbnRp
YXRlKGtleSkuQHRoZW4oZnVuY3Rpb24gKGVudHJ5KSB7CisgICAgICAgIHZhciBkZXBMb2FkcyA9
IFtdOworICAgICAgICBmb3IgKHZhciBpID0gMCwgbGVuZ3RoID0gZW50cnkuZGVwZW5kZW5jaWVz
Lmxlbmd0aDsgaSA8IGxlbmd0aDsgKytpKSB7CisgICAgICAgICAgICB2YXIgcGFpciA9IGVudHJ5
LmRlcGVuZGVuY2llc1tpXTsKKyAgICAgICAgICAgIHZhciBwcm9taXNlID0gbG9hZGVyLnJlc29s
dmUocGFpci5rZXksIGtleSkuQHRoZW4oZnVuY3Rpb24gKGRlcEtleSkgeworICAgICAgICAgICAg
ICAgIHZhciBkZXBFbnRyeSA9IGxvYWRlci5lbnN1cmVSZWdpc3RlcmVkKGRlcEtleSk7CisKKyAg
ICAgICAgICAgICAgICAvLyBSZWN1cnNpdmUgY29sbGVjdGluZy4gVGhpcyBlbnRyeSBpcyBiZWlu
ZyBjb2xsZWN0ZWQgb3IgYWxyZWFkeSBjb2xsZWN0ZWQuCisgICAgICAgICAgICAgICAgLy8gU3Rv
cCB0cmFjaW5nIHRoZSBjaXJjdWxhciBkZXBlbmRlbmNpZXMuCisgICAgICAgICAgICAgICAgaWYg
KGRlcEVudHJ5LmNvbGxlY3QpIHsKKyAgICAgICAgICAgICAgICAgICAgcGFpci52YWx1ZSA9IGRl
cEVudHJ5Lm1vZHVsZTsKKyAgICAgICAgICAgICAgICAgICAgcmV0dXJuIGRlcEVudHJ5OworICAg
ICAgICAgICAgICAgIH0KKworICAgICAgICAgICAgICAgIHJldHVybiBsb2FkZXIucmVxdWVzdENv
bGxlY3QoZGVwS2V5KS5AdGhlbihmdW5jdGlvbiAoZW50cnkpIHsKKyAgICAgICAgICAgICAgICAg
ICAgLy8gRklYTUU6IFRoZSByZXN1bHQgcHJvbWlzZSBvZiB0aGUgcmVxdWVzdEluc3RhbnRpYXRl
QWxsIHNob3VsZCBiZSBmdWxmaWxsZWQgd2l0aAorICAgICAgICAgICAgICAgICAgICAvLyB0aGUg
cmVnaXN0cnkgZW50cnkuCisgICAgICAgICAgICAgICAgICAgIC8vIGh0dHBzOi8vZ2l0aHViLmNv
bS93aGF0d2cvbG9hZGVyL3B1bGwvNjYKKyAgICAgICAgICAgICAgICAgICAgcGFpci52YWx1ZSA9
IGVudHJ5Lm1vZHVsZTsKKyAgICAgICAgICAgICAgICAgICAgcmV0dXJuIGVudHJ5OworICAgICAg
ICAgICAgICAgIH0pOworICAgICAgICAgICAgfSk7CisgICAgICAgICAgICBAcHV0QnlWYWxEaXJl
Y3QoZGVwTG9hZHMsIGksIHByb21pc2UpOworICAgICAgICB9CisKKyAgICAgICAgcmV0dXJuIEBQ
cm9taXNlLkBhbGwoZGVwTG9hZHMpLkB0aGVuKGZ1bmN0aW9uIChtb2R1bGVzKSB7CisgICAgICAg
ICAgICBsb2FkZXIuc2V0U3RhdGVUb01heChlbnRyeSwgbG9hZGVyLkxpbmspOworICAgICAgICAg
ICAgcmV0dXJuIGVudHJ5OworICAgICAgICB9KTsKKyAgICB9KTsKKworICAgIGVudHJ5LmNvbGxl
Y3QgPSBjb2xsZWN0UHJvbWlzZTsKKyAgICByZXR1cm4gY29sbGVjdFByb21pc2U7Cit9CisKK2Z1
bmN0aW9uIHJlcXVlc3RJbnN0YW50aWF0ZUFsbChrZXkpCit7CisgICAgLy8gaHR0cHM6Ly93aGF0
d2cuZ2l0aHViLmlvL2xvYWRlci8jcmVxdWVzdC1pbnN0YW50aWF0ZS1hbGwKKworICAgICJ1c2Ug
c3RyaWN0IjsKKworICAgIHJldHVybiB0aGlzLnJlcXVlc3RDb2xsZWN0KGtleSk7Cit9CisKK2Z1
bmN0aW9uIHByb3ZpZGUoa2V5LCBzdGFnZSwgdmFsdWUpCit7CisgICAgInVzZSBzdHJpY3QiOwor
CisgICAgdmFyIGVudHJ5ID0gdGhpcy5lbnN1cmVSZWdpc3RlcmVkKGtleSk7CisKKyAgICBpZiAo
c3RhZ2UgPT09IHRoaXMuRmV0Y2gpIHsKKyAgICAgICAgaWYgKGVudHJ5LnN0YXR1cyA+IHRoaXMu
RmV0Y2gpCisgICAgICAgICAgICB0aHJvdyBuZXcgQFR5cGVFcnJvcigiUmVxdWVzdGVkIG1vZHVs
ZSBpcyBhbHJlYWR5IGZldGNoZWQuIik7CisgICAgICAgIHRoaXMuZnVsZmlsbEZldGNoKGVudHJ5
LCB2YWx1ZSk7CisgICAgICAgIHJldHVybjsKKyAgICB9CisKKyAgICBpZiAoc3RhZ2UgPT09IHRo
aXMuVHJhbnNsYXRlKSB7CisgICAgICAgIGlmIChlbnRyeS5zdGF0dXMgPiB0aGlzLlRyYW5zbGF0
ZSkKKyAgICAgICAgICAgIHRocm93IG5ldyBAVHlwZUVycm9yKCJSZXF1ZXN0ZWQgbW9kdWxlIGlz
IGFscmVhZHkgdHJhbnNsYXRlZC4iKTsKKyAgICAgICAgdGhpcy5mdWxmaWxsRmV0Y2goZW50cnks
IHVuZGVmaW5lZCk7CisgICAgICAgIHRoaXMuZnVsZmlsbFRyYW5zbGF0ZShlbnRyeSwgdmFsdWUp
OworICAgICAgICByZXR1cm47CisgICAgfQorCisgICAgaWYgKHN0YWdlID09PSB0aGlzLkluc3Rh
bnRpYXRlKSB7CisgICAgICAgIGlmIChlbnRyeS5zdGF0dXMgPiB0aGlzLkluc3RhbnRpYXRlKQor
ICAgICAgICAgICAgdGhyb3cgbmV3IEBUeXBlRXJyb3IoIlJlcXVlc3RlZCBtb2R1bGUgaXMgYWxy
ZWFkeSBpbnN0YW50aWF0ZWQuIik7CisgICAgICAgIHRoaXMuZnVsZmlsbEZldGNoKGVudHJ5LCB1
bmRlZmluZWQpOworICAgICAgICB0aGlzLmZ1bGZpbGxUcmFuc2xhdGUoZW50cnksIHZhbHVlKTsK
KyAgICAgICAgdmFyIGxvYWRlciA9IHRoaXM7CisgICAgICAgIGVudHJ5LnRyYW5zbGF0ZS5AdGhl
bihmdW5jdGlvbiAoc291cmNlKSB7CisgICAgICAgICAgICBsb2FkZXIuZnVsZmlsbEluc3RhbnRp
YXRlKGVudHJ5LCB2YWx1ZSwgc291cmNlKTsKKyAgICAgICAgfSk7CisgICAgICAgIHJldHVybjsK
KyAgICB9CisKKyAgICB0aHJvdyBuZXcgQFR5cGVFcnJvcigiUmVxdWVzdGVkIG1vZHVsZSBpcyBh
bHJlYWR5IHJlYWR5IHRvIGJlIGV4ZWN1dGVkLiIpOworfQpkaWZmIC0tZ2l0IGEvU291cmNlL0ph
dmFTY3JpcHRDb3JlL2J1aWx0aW5zL09wZXJhdGlvbnMuUHJvbWlzZS5qcyBiL1NvdXJjZS9KYXZh
U2NyaXB0Q29yZS9idWlsdGlucy9PcGVyYXRpb25zLlByb21pc2UuanMKaW5kZXggNjZmOWMyNTE1
MzU5YzdhNTEyNTRmOTM3ZmM3ZjUxY2NkMTMxMjQxZC4uZDBkNDFkNGZiMmI5ZWM3Zjc4ZDFkNjM3
YTE4YTFkYWFjYmFmYmIzOSAxMDA2NDQKLS0tIGEvU291cmNlL0phdmFTY3JpcHRDb3JlL2J1aWx0
aW5zL09wZXJhdGlvbnMuUHJvbWlzZS5qcworKysgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvYnVp
bHRpbnMvT3BlcmF0aW9ucy5Qcm9taXNlLmpzCkBAIC0yMTgsMyArMjE4LDI5IEBAIGZ1bmN0aW9u
IGluaXRpYWxpemVQcm9taXNlKGV4ZWN1dG9yKQogCiAgICAgcmV0dXJuIHRoaXM7CiB9CisKK2Z1
bmN0aW9uIHByb21pc2VUaGVuKHByb21pc2UsIGNhcGFiaWxpdHksIG9uRnVsZmlsbGVkLCBvblJl
amVjdGVkKQoreworICAgICJ1c2Ugc3RyaWN0IjsKKworICAgIGlmICh0eXBlb2Ygb25GdWxmaWxs
ZWQgIT09ICJmdW5jdGlvbiIpCisgICAgICAgIG9uRnVsZmlsbGVkID0gZnVuY3Rpb24gKGFyZ3Vt
ZW50KSB7IHJldHVybiBhcmd1bWVudDsgfTsKKworICAgIGlmICh0eXBlb2Ygb25SZWplY3RlZCAh
PT0gImZ1bmN0aW9uIikKKyAgICAgICAgb25SZWplY3RlZCA9IGZ1bmN0aW9uIChhcmd1bWVudCkg
eyB0aHJvdyBhcmd1bWVudDsgfTsKKworICAgIHZhciBmdWxmaWxsUmVhY3Rpb24gPSBAbmV3UHJv
bWlzZVJlYWN0aW9uKGNhcGFiaWxpdHksIG9uRnVsZmlsbGVkKTsKKyAgICB2YXIgcmVqZWN0UmVh
Y3Rpb24gPSBAbmV3UHJvbWlzZVJlYWN0aW9uKGNhcGFiaWxpdHksIG9uUmVqZWN0ZWQpOworCisg
ICAgdmFyIHN0YXRlID0gcHJvbWlzZS5AcHJvbWlzZVN0YXRlOworCisgICAgaWYgKHN0YXRlID09
PSBAcHJvbWlzZVBlbmRpbmcpIHsKKyAgICAgICAgQHB1dEJ5VmFsRGlyZWN0KHByb21pc2UuQHBy
b21pc2VGdWxmaWxsUmVhY3Rpb25zLCBwcm9taXNlLkBwcm9taXNlRnVsZmlsbFJlYWN0aW9ucy5s
ZW5ndGgsIGZ1bGZpbGxSZWFjdGlvbikKKyAgICAgICAgQHB1dEJ5VmFsRGlyZWN0KHByb21pc2Uu
QHByb21pc2VSZWplY3RSZWFjdGlvbnMsIHByb21pc2UuQHByb21pc2VSZWplY3RSZWFjdGlvbnMu
bGVuZ3RoLCByZWplY3RSZWFjdGlvbikKKyAgICB9IGVsc2UgaWYgKHN0YXRlID09PSBAcHJvbWlz
ZUZ1bGZpbGxlZCkKKyAgICAgICAgQGVucXVldWVKb2IoQHByb21pc2VSZWFjdGlvbkpvYiwgW2Z1
bGZpbGxSZWFjdGlvbiwgcHJvbWlzZS5AcHJvbWlzZVJlc3VsdF0pOworICAgIGVsc2UgaWYgKHN0
YXRlID09PSBAcHJvbWlzZVJlamVjdGVkKQorICAgICAgICBAZW5xdWV1ZUpvYihAcHJvbWlzZVJl
YWN0aW9uSm9iLCBbcmVqZWN0UmVhY3Rpb24sIHByb21pc2UuQHByb21pc2VSZXN1bHRdKTsKKwor
ICAgIHJldHVybiBjYXBhYmlsaXR5LkBwcm9taXNlOworfQpkaWZmIC0tZ2l0IGEvU291cmNlL0ph
dmFTY3JpcHRDb3JlL2J1aWx0aW5zL1Byb21pc2UucHJvdG90eXBlLmpzIGIvU291cmNlL0phdmFT
Y3JpcHRDb3JlL2J1aWx0aW5zL1Byb21pc2UucHJvdG90eXBlLmpzCmluZGV4IDg1NjNkZjBkOTI3
ZmIyMzM5Njg5MzllMTQ5NDIzOTZlYzg1ZTY1YWEuLmJhMDIyYWJhNWEwZDU4ZDg1ZWZlZTA3OWIz
OWFjYmIxMTM2MmJmOGQgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9idWlsdGlu
cy9Qcm9taXNlLnByb3RvdHlwZS5qcworKysgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvYnVpbHRp
bnMvUHJvbWlzZS5wcm90b3R5cGUuanMKQEAgLTQxLDI2ICs0MSwxOSBAQCBmdW5jdGlvbiB0aGVu
KG9uRnVsZmlsbGVkLCBvblJlamVjdGVkKQogICAgIC8vIGh0dHBzOi8vYnVncy53ZWJraXQub3Jn
L3Nob3dfYnVnLmNnaT9pZD0xNDY2MjQKICAgICB2YXIgY29uc3RydWN0b3IgPSB0aGlzLmNvbnN0
cnVjdG9yOwogCi0gICAgdmFyIHJlc3VsdENhcGFiaWxpdHkgPSBAbmV3UHJvbWlzZUNhcGFiaWxp
dHkoY29uc3RydWN0b3IpOwotCi0gICAgaWYgKHR5cGVvZiBvbkZ1bGZpbGxlZCAhPT0gImZ1bmN0
aW9uIikKLSAgICAgICAgb25GdWxmaWxsZWQgPSBmdW5jdGlvbiAoYXJndW1lbnQpIHsgcmV0dXJu
IGFyZ3VtZW50OyB9OwotCi0gICAgaWYgKHR5cGVvZiBvblJlamVjdGVkICE9PSAiZnVuY3Rpb24i
KQotICAgICAgICBvblJlamVjdGVkID0gZnVuY3Rpb24gKGFyZ3VtZW50KSB7IHRocm93IGFyZ3Vt
ZW50OyB9OwotCi0gICAgdmFyIGZ1bGZpbGxSZWFjdGlvbiA9IEBuZXdQcm9taXNlUmVhY3Rpb24o
cmVzdWx0Q2FwYWJpbGl0eSwgb25GdWxmaWxsZWQpOwotICAgIHZhciByZWplY3RSZWFjdGlvbiA9
IEBuZXdQcm9taXNlUmVhY3Rpb24ocmVzdWx0Q2FwYWJpbGl0eSwgb25SZWplY3RlZCk7CisgICAg
cmV0dXJuIEBwcm9taXNlVGhlbih0aGlzLCBAbmV3UHJvbWlzZUNhcGFiaWxpdHkoY29uc3RydWN0
b3IpLCBvbkZ1bGZpbGxlZCwgb25SZWplY3RlZCk7Cit9CiAKLSAgICB2YXIgc3RhdGUgPSB0aGlz
LkBwcm9taXNlU3RhdGU7CitmdW5jdGlvbiBwcml2YXRlVGhlbihvbkZ1bGZpbGxlZCwgb25SZWpl
Y3RlZCkKK3sKKyAgICAvLyBUaGlzIGZ1bmN0aW9uIGlzIGludGVuZGVkIHRvIGJlIHVzZWQgaW4g
dGhlIEpTQyBpbnRlcm5hbHMuCisgICAgLy8gVGhlIGltcGxlbWVudGF0aW9uIHNob3VsZCB0YWtl
IGNhcmUgbm90IHRvIHBlcmZvcm0gdGhlIHVzZXIKKyAgICAvLyBvYnNlcnZhYmxlIC8gdHJhcHBh
YmxlIG9wZXJhdGlvbnMuCisgICAgLy8KKyAgICAvLyAxLiBEb24ndCBsb29rIHVwIHRoaXMuY29u
c3RydWN0b3IgLyBAQHNwZWNpZXMuIEFsd2F5cyBjb25zdHJ1Y3QKKyAgICAvLyAgICB0aGUgcGxh
aW4gUHJvbWlzZSBvYmplY3QuCiAKLSAgICBpZiAoc3RhdGUgPT09IEBwcm9taXNlUGVuZGluZykg
ewotICAgICAgICBAcHV0QnlWYWxEaXJlY3QodGhpcy5AcHJvbWlzZUZ1bGZpbGxSZWFjdGlvbnMs
IHRoaXMuQHByb21pc2VGdWxmaWxsUmVhY3Rpb25zLmxlbmd0aCwgZnVsZmlsbFJlYWN0aW9uKQot
ICAgICAgICBAcHV0QnlWYWxEaXJlY3QodGhpcy5AcHJvbWlzZVJlamVjdFJlYWN0aW9ucywgdGhp
cy5AcHJvbWlzZVJlamVjdFJlYWN0aW9ucy5sZW5ndGgsIHJlamVjdFJlYWN0aW9uKQotICAgIH0g
ZWxzZSBpZiAoc3RhdGUgPT09IEBwcm9taXNlRnVsZmlsbGVkKQotICAgICAgICBAZW5xdWV1ZUpv
YihAcHJvbWlzZVJlYWN0aW9uSm9iLCBbZnVsZmlsbFJlYWN0aW9uLCB0aGlzLkBwcm9taXNlUmVz
dWx0XSk7Ci0gICAgZWxzZSBpZiAoc3RhdGUgPT09IEBwcm9taXNlUmVqZWN0ZWQpCi0gICAgICAg
IEBlbnF1ZXVlSm9iKEBwcm9taXNlUmVhY3Rpb25Kb2IsIFtyZWplY3RSZWFjdGlvbiwgdGhpcy5A
cHJvbWlzZVJlc3VsdF0pOworICAgICJ1c2Ugc3RyaWN0IjsKIAotICAgIHJldHVybiByZXN1bHRD
YXBhYmlsaXR5LkBwcm9taXNlOworICAgIHJldHVybiBAcHJvbWlzZVRoZW4odGhpcywgQG5ld1By
b21pc2VEZWZlcnJlZCgpLCBvbkZ1bGZpbGxlZCwgb25SZWplY3RlZCk7CiB9CmRpZmYgLS1naXQg
YS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvYnVpbHRpbnMvUHJvbWlzZUNvbnN0cnVjdG9yLmpzIGIv
U291cmNlL0phdmFTY3JpcHRDb3JlL2J1aWx0aW5zL1Byb21pc2VDb25zdHJ1Y3Rvci5qcwppbmRl
eCAxZjgzYjQ3Zjc5MGE3NWU1YmY4YzkzZDVlNjY0OTYxOGNiMWFlYzY3Li5mNjYxMDc3NGQwMWYy
MTYyMDYyNjBjNzA0ZGZjM2ExMGU1MzQ1ZTQxIDEwMDY0NAotLS0gYS9Tb3VyY2UvSmF2YVNjcmlw
dENvcmUvYnVpbHRpbnMvUHJvbWlzZUNvbnN0cnVjdG9yLmpzCisrKyBiL1NvdXJjZS9KYXZhU2Ny
aXB0Q29yZS9idWlsdGlucy9Qcm9taXNlQ29uc3RydWN0b3IuanMKQEAgLTEzNywzICsxMzcsNjUg
QEAgZnVuY3Rpb24gcmVzb2x2ZSh2YWx1ZSkKIAogICAgIHJldHVybiBwcm9taXNlQ2FwYWJpbGl0
eS5AcHJvbWlzZTsKIH0KKworZnVuY3Rpb24gcHJpdmF0ZUFsbChhcnJheSkKK3sKKyAgICAvLyBU
aGlzIGZ1bmN0aW9uIGlzIGludGVuZGVkIHRvIGJlIHVzZWQgaW4gdGhlIEpTQyBpbnRlcm5hbHMu
CisgICAgLy8gVGhlIGltcGxlbWVudGF0aW9uIHNob3VsZCB0YWtlIGNhcmUgbm90IHRvIHBlcmZv
cm0gdGhlIHVzZXIKKyAgICAvLyBvYnNlcnZhYmxlIC8gdHJhcHBhYmxlIG9wZXJhdGlvbnMuCisg
ICAgLy8KKyAgICAvLyAxLiBEb24ndCB1c2UgZm9yLW9mIGFuZCBpdGVyYWJsZXMuIFRoaXMgZnVu
Y3Rpb24gb25seSBhY2NlcHRzCisgICAgLy8gICAgdGhlIGRlbnNlIGFycmF5IG9mIHRoZSBwcm9t
aXNlcy4KKyAgICAvLyAyLiBEb24ndCBsb29rIHVwIHRoaXMuY29uc3RydWN0b3IgLyBAQHNwZWNp
ZXMuIEFsd2F5cyBjb25zdHJ1Y3QKKyAgICAvLyAgICB0aGUgcGxhaW4gUHJvbWlzZSBvYmplY3Qu
CisKKyAgICAidXNlIHN0cmljdCI7CisKKyAgICB2YXIgcHJvbWlzZUNhcGFiaWxpdHkgPSBAbmV3
UHJvbWlzZURlZmVycmVkKCk7CisKKyAgICB2YXIgdmFsdWVzID0gW107CisgICAgdmFyIGluZGV4
ID0gMDsKKyAgICB2YXIgcmVtYWluaW5nRWxlbWVudHNDb3VudCA9IDE7CisKKyAgICBmdW5jdGlv
biBuZXdSZXNvbHZlRWxlbWVudChpbmRleCkKKyAgICB7CisgICAgICAgIHZhciBhbHJlYWR5Q2Fs
bGVkID0gZmFsc2U7CisgICAgICAgIHJldHVybiBmdW5jdGlvbiAoYXJndW1lbnQpCisgICAgICAg
IHsKKyAgICAgICAgICAgIGlmIChhbHJlYWR5Q2FsbGVkKQorICAgICAgICAgICAgICAgIHJldHVy
biB1bmRlZmluZWQ7CisgICAgICAgICAgICBhbHJlYWR5Q2FsbGVkID0gdHJ1ZTsKKworICAgICAg
ICAgICAgQHB1dEJ5VmFsRGlyZWN0KHZhbHVlcywgaW5kZXgsIGFyZ3VtZW50KTsKKworICAgICAg
ICAgICAgLS1yZW1haW5pbmdFbGVtZW50c0NvdW50OworICAgICAgICAgICAgaWYgKHJlbWFpbmlu
Z0VsZW1lbnRzQ291bnQgPT09IDApCisgICAgICAgICAgICAgICAgcmV0dXJuIHByb21pc2VDYXBh
YmlsaXR5LkByZXNvbHZlLkBjYWxsKHVuZGVmaW5lZCwgdmFsdWVzKTsKKworICAgICAgICAgICAg
cmV0dXJuIHVuZGVmaW5lZDsKKyAgICAgICAgfQorICAgIH0KKworICAgIHRyeSB7CisgICAgICAg
IGZvciAodmFyIGluZGV4ID0gMCwgbGVuZ3RoID0gYXJyYXkubGVuZ3RoOyBpbmRleCA8IGxlbmd0
aDsgKytpbmRleCkgeworICAgICAgICAgICAgdmFyIHZhbHVlID0gYXJyYXlbaW5kZXhdOworICAg
ICAgICAgICAgQHB1dEJ5VmFsRGlyZWN0KHZhbHVlcywgaW5kZXgsIHVuZGVmaW5lZCk7CisKKyAg
ICAgICAgICAgIHZhciBuZXh0UHJvbWlzZUNhcGFiaWxpdHkgPSBAbmV3UHJvbWlzZURlZmVycmVk
KCk7CisgICAgICAgICAgICBuZXh0UHJvbWlzZUNhcGFiaWxpdHkuQHJlc29sdmUuQGNhbGwodW5k
ZWZpbmVkLCB2YWx1ZSk7CisgICAgICAgICAgICB2YXIgbmV4dFByb21pc2UgPSBuZXh0UHJvbWlz
ZUNhcGFiaWxpdHkuQHByb21pc2U7CisKKyAgICAgICAgICAgIHZhciByZXNvbHZlRWxlbWVudCA9
IG5ld1Jlc29sdmVFbGVtZW50KGluZGV4KTsKKyAgICAgICAgICAgICsrcmVtYWluaW5nRWxlbWVu
dHNDb3VudDsKKyAgICAgICAgICAgIG5leHRQcm9taXNlLkB0aGVuKHJlc29sdmVFbGVtZW50LCBw
cm9taXNlQ2FwYWJpbGl0eS5AcmVqZWN0KTsKKyAgICAgICAgfQorCisgICAgICAgIC0tcmVtYWlu
aW5nRWxlbWVudHNDb3VudDsKKyAgICAgICAgaWYgKHJlbWFpbmluZ0VsZW1lbnRzQ291bnQgPT09
IDApCisgICAgICAgICAgICBwcm9taXNlQ2FwYWJpbGl0eS5AcmVzb2x2ZS5AY2FsbCh1bmRlZmlu
ZWQsIHZhbHVlcyk7CisgICAgfSBjYXRjaCAoZXJyb3IpIHsKKyAgICAgICAgcHJvbWlzZUNhcGFi
aWxpdHkuQHJlamVjdC5AY2FsbCh1bmRlZmluZWQsIGVycm9yKTsKKyAgICB9CisKKyAgICByZXR1
cm4gcHJvbWlzZUNhcGFiaWxpdHkuQHByb21pc2U7Cit9CmRpZmYgLS1naXQgYS9Tb3VyY2UvSmF2
YVNjcmlwdENvcmUvanNjLmNwcCBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9qc2MuY3BwCmluZGV4
IDViMTk1MzNjNDBhYTUxNDQyY2M0MWMxNjk4YWJiZWMyMTJmYWYzNzguLmE0Yzk3M2ExMDAyZDQx
YjNhMWZjMzgyNzJhOWUwMWFlYzNiMzM3MjkgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9KYXZhU2NyaXB0
Q29yZS9qc2MuY3BwCisrKyBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9qc2MuY3BwCkBAIC00MSw2
ICs0MSw3IEBACiAjaW5jbHVkZSAiSlNGdW5jdGlvbi5oIgogI2luY2x1ZGUgIkpTTG9jay5oIgog
I2luY2x1ZGUgIkpTT05PYmplY3QuaCIKKyNpbmNsdWRlICJKU1Byb21pc2VEZWZlcnJlZC5oIgog
I2luY2x1ZGUgIkpTUHJveHkuaCIKICNpbmNsdWRlICJKU1N0cmluZy5oIgogI2luY2x1ZGUgIkpT
V0FTTU1vZHVsZS5oIgpAQCAtNTE5LDIwICs1MjAsMTcgQEAgc3RydWN0IFNjcmlwdCB7CiBjbGFz
cyBDb21tYW5kTGluZSB7CiBwdWJsaWM6CiAgICAgQ29tbWFuZExpbmUoaW50IGFyZ2MsIGNoYXIq
KiBhcmd2KQotICAgICAgICA6IG1faW50ZXJhY3RpdmUoZmFsc2UpCi0gICAgICAgICwgbV9kdW1w
KGZhbHNlKQotICAgICAgICAsIG1fZXhpdENvZGUoZmFsc2UpCi0gICAgICAgICwgbV9wcm9maWxl
KGZhbHNlKQogICAgIHsKICAgICAgICAgcGFyc2VBcmd1bWVudHMoYXJnYywgYXJndik7CiAgICAg
fQogCi0gICAgYm9vbCBtX2ludGVyYWN0aXZlOwotICAgIGJvb2wgbV9kdW1wOwotICAgIGJvb2wg
bV9leGl0Q29kZTsKKyAgICBib29sIG1faW50ZXJhY3RpdmUgeyBmYWxzZSB9OworICAgIGJvb2wg
bV9kdW1wIHsgZmFsc2UgfTsKKyAgICBib29sIG1fbW9kdWxlIHsgZmFsc2UgfTsKKyAgICBib29s
IG1fZXhpdENvZGUgeyBmYWxzZSB9OwogICAgIFZlY3RvcjxTY3JpcHQ+IG1fc2NyaXB0czsKICAg
ICBWZWN0b3I8U3RyaW5nPiBtX2FyZ3VtZW50czsKLSAgICBib29sIG1fcHJvZmlsZTsKKyAgICBi
b29sIG1fcHJvZmlsZSB7IGZhbHNlIH07CiAgICAgU3RyaW5nIG1fcHJvZmlsZXJPdXRwdXQ7CiAK
ICAgICB2b2lkIHBhcnNlQXJndW1lbnRzKGludCwgY2hhcioqKTsKQEAgLTU2Niw2ICs1NjQsMTcg
QEAgbG9uZyBTdG9wV2F0Y2g6OmdldEVsYXBzZWRNUygpCiAgICAgcmV0dXJuIHN0YXRpY19jYXN0
PGxvbmc+KChtX3N0b3BUaW1lIC0gbV9zdGFydFRpbWUpICogMTAwMCk7CiB9CiAKK3N0YXRpYyBp
bmxpbmUgU3RyaW5nIHN0cmluZ0Zyb21VVEYoY29uc3QgY2hhciogdXRmOCkKK3sKKyAgICByZXR1
cm4gU3RyaW5nOjpmcm9tVVRGOFdpdGhMYXRpbjFGYWxsYmFjayh1dGY4LCBzdHJsZW4odXRmOCkp
OworfQorCitzdGF0aWMgaW5saW5lIFNvdXJjZUNvZGUganNjU291cmNlKGNvbnN0IGNoYXIqIHV0
ZjgsIGNvbnN0IFN0cmluZyYgZmlsZW5hbWUpCit7CisgICAgU3RyaW5nIHN0ciA9IHN0cmluZ0Zy
b21VVEYodXRmOCk7CisgICAgcmV0dXJuIG1ha2VTb3VyY2Uoc3RyLCBmaWxlbmFtZSk7Cit9CisK
IGNsYXNzIEdsb2JhbE9iamVjdCA6IHB1YmxpYyBKU0dsb2JhbE9iamVjdCB7CiBwcml2YXRlOgog
ICAgIEdsb2JhbE9iamVjdChWTSYsIFN0cnVjdHVyZSopOwpAQCAtNjg3LDEwICs2OTYsMzEgQEAg
Y2xhc3MgR2xvYmFsT2JqZWN0IDogcHVibGljIEpTR2xvYmFsT2JqZWN0IHsKICAgICAgICAgSWRl
bnRpZmllciBpZGVudGlmaWVyID0gSWRlbnRpZmllcjo6ZnJvbVN0cmluZygmdm0sIG5hbWUpOwog
ICAgICAgICBwdXREaXJlY3Qodm0sIGlkZW50aWZpZXIsIEpTRnVuY3Rpb246OmNyZWF0ZSh2bSwg
dGhpcywgYXJndW1lbnRzLCBpZGVudGlmaWVyLnN0cmluZygpLCBmdW5jdGlvbiwgTm9JbnRyaW5z
aWMsIGZ1bmN0aW9uKSk7CiAgICAgfQorCisgICAgc3RhdGljIEpTVmFsdWUgbG9hZGVyRmV0Y2go
SlNHbG9iYWxPYmplY3QqIGdsb2JhbE9iamVjdCwgRXhlY1N0YXRlKiBleGVjLCBKU1ZhbHVlIGtl
eSkKKyAgICB7CisgICAgICAgIEpTUHJvbWlzZURlZmVycmVkKiBkZWZlcnJlZCA9IEpTUHJvbWlz
ZURlZmVycmVkOjpjcmVhdGUoZXhlYywgZ2xvYmFsT2JqZWN0KTsKKyAgICAgICAgU3RyaW5nIG1v
ZHVsZUtleSA9IGtleS50b1N0cmluZyhleGVjKS0+dmFsdWUoZXhlYyk7CisgICAgICAgIGlmIChl
eGVjLT5oYWRFeGNlcHRpb24oKSkgeworICAgICAgICAgICAgSlNWYWx1ZSBleGNlcHRpb24gPSBl
eGVjLT5leGNlcHRpb24oKTsKKyAgICAgICAgICAgIGV4ZWMtPmNsZWFyRXhjZXB0aW9uKCk7Cisg
ICAgICAgICAgICBkZWZlcnJlZC0+cmVqZWN0KGV4ZWMsIGV4Y2VwdGlvbik7CisgICAgICAgICAg
ICByZXR1cm4gZGVmZXJyZWQtPnByb21pc2UoKTsKKyAgICAgICAgfQorCisgICAgICAgIC8vIEhl
cmUsIG5vdyB3ZSBjb25zaWRlciBtb2R1bGVLZXkgYXMgdGhlIGZpbGVOYW1lLgorICAgICAgICBW
ZWN0b3I8Y2hhcj4gdXRmODsKKyAgICAgICAgaWYgKCFmaWxsQnVmZmVyV2l0aENvbnRlbnRzT2ZG
aWxlKG1vZHVsZUtleSwgdXRmOCkpIHsKKyAgICAgICAgICAgIGRlZmVycmVkLT5yZWplY3QoZXhl
YywgY3JlYXRlRXJyb3IoZXhlYywgbWFrZVN0cmluZygiQ291bGQgbm90IG9wZW4gZmlsZSAnIiwg
bW9kdWxlS2V5LCAiJy4iKSkpOworICAgICAgICAgICAgcmV0dXJuIGRlZmVycmVkLT5wcm9taXNl
KCk7CisgICAgICAgIH0KKyAgICAgICAgZGVmZXJyZWQtPnJlc29sdmUoZXhlYywganNTdHJpbmco
ZXhlYywgc3RyaW5nRnJvbVVURih1dGY4LmRhdGEoKSkpKTsKKyAgICAgICAgcmV0dXJuIGRlZmVy
cmVkLT5wcm9taXNlKCk7CisgICAgfQogfTsKIAogY29uc3QgQ2xhc3NJbmZvIEdsb2JhbE9iamVj
dDo6c19pbmZvID0geyAiZ2xvYmFsIiwgJkpTR2xvYmFsT2JqZWN0OjpzX2luZm8sICZnbG9iYWxP
YmplY3RUYWJsZSwgQ1JFQVRFX01FVEhPRF9UQUJMRShHbG9iYWxPYmplY3QpIH07Ci1jb25zdCBH
bG9iYWxPYmplY3RNZXRob2RUYWJsZSBHbG9iYWxPYmplY3Q6OnNfZ2xvYmFsT2JqZWN0TWV0aG9k
VGFibGUgPSB7ICZhbGxvd3NBY2Nlc3NGcm9tLCAmc3VwcG9ydHNQcm9maWxpbmcsICZzdXBwb3J0
c1JpY2hTb3VyY2VJbmZvLCAmc2hvdWxkSW50ZXJydXB0U2NyaXB0LCAmamF2YVNjcmlwdFJ1bnRp
bWVGbGFncywgMCwgJnNob3VsZEludGVycnVwdFNjcmlwdEJlZm9yZVRpbWVvdXQgfTsKK2NvbnN0
IEdsb2JhbE9iamVjdE1ldGhvZFRhYmxlIEdsb2JhbE9iamVjdDo6c19nbG9iYWxPYmplY3RNZXRo
b2RUYWJsZSA9IHsgJmFsbG93c0FjY2Vzc0Zyb20sICZzdXBwb3J0c1Byb2ZpbGluZywgJnN1cHBv
cnRzUmljaFNvdXJjZUluZm8sICZzaG91bGRJbnRlcnJ1cHRTY3JpcHQsICZqYXZhU2NyaXB0UnVu
dGltZUZsYWdzLCAwLCAmc2hvdWxkSW50ZXJydXB0U2NyaXB0QmVmb3JlVGltZW91dCwgbnVsbHB0
ciwgJmxvYWRlckZldGNoLCBudWxscHRyLCBudWxscHRyIH07CiAKIAogR2xvYmFsT2JqZWN0OjpH
bG9iYWxPYmplY3QoVk0mIHZtLCBTdHJ1Y3R1cmUqIHN0cnVjdHVyZSkKQEAgLTY5OCwxNyArNzI4
LDYgQEAgR2xvYmFsT2JqZWN0OjpHbG9iYWxPYmplY3QoVk0mIHZtLCBTdHJ1Y3R1cmUqIHN0cnVj
dHVyZSkKIHsKIH0KIAotc3RhdGljIGlubGluZSBTdHJpbmcgc3RyaW5nRnJvbVVURihjb25zdCBj
aGFyKiB1dGY4KQotewotICAgIHJldHVybiBTdHJpbmc6OmZyb21VVEY4V2l0aExhdGluMUZhbGxi
YWNrKHV0ZjgsIHN0cmxlbih1dGY4KSk7Ci19Ci0KLXN0YXRpYyBpbmxpbmUgU291cmNlQ29kZSBq
c2NTb3VyY2UoY29uc3QgY2hhciogdXRmOCwgY29uc3QgU3RyaW5nJiBmaWxlbmFtZSkKLXsKLSAg
ICBTdHJpbmcgc3RyID0gc3RyaW5nRnJvbVVURih1dGY4KTsKLSAgICByZXR1cm4gbWFrZVNvdXJj
ZShzdHIsIGZpbGVuYW1lKTsKLX0KLQogRW5jb2RlZEpTVmFsdWUgSlNDX0hPU1RfQ0FMTCBmdW5j
dGlvblByaW50KEV4ZWNTdGF0ZSogZXhlYykKIHsKICAgICBmb3IgKHVuc2lnbmVkIGkgPSAwOyBp
IDwgZXhlYy0+YXJndW1lbnRDb3VudCgpOyArK2kpIHsKQEAgLTEyMTIsNyArMTIzMSw3IEBAIEVu
Y29kZWRKU1ZhbHVlIEpTQ19IT1NUX0NBTEwgZnVuY3Rpb25DaGVja01vZHVsZVN5bnRheChFeGVj
U3RhdGUqIGV4ZWMpCiAgICAgc3RvcFdhdGNoLnN0YXJ0KCk7CiAKICAgICBQYXJzZXJFcnJvciBl
cnJvcjsKLSAgICBib29sIHZhbGlkU3ludGF4ID0gY2hlY2tNb2R1bGVTeW50YXgoZXhlYy0+dm0o
KSwgbWFrZVNvdXJjZShzb3VyY2UpLCBlcnJvcik7CisgICAgYm9vbCB2YWxpZFN5bnRheCA9IGNo
ZWNrTW9kdWxlU3ludGF4KGV4ZWMsIG1ha2VTb3VyY2Uoc291cmNlKSwgZXJyb3IpOwogICAgIHN0
b3BXYXRjaC5zdG9wKCk7CiAKICAgICBpZiAoIXZhbGlkU3ludGF4KQpAQCAtMTMyMCw3ICsxMzM5
LDE4IEBAIGludCBtYWluKGludCBhcmdjLCBjaGFyKiogYXJndikKICAgICBqc2NFeGl0KHJlcyk7
CiB9CiAKLXN0YXRpYyBib29sIHJ1bldpdGhTY3JpcHRzKEdsb2JhbE9iamVjdCogZ2xvYmFsT2Jq
ZWN0LCBjb25zdCBWZWN0b3I8U2NyaXB0PiYgc2NyaXB0cywgYm9vbCBkdW1wKQorc3RhdGljIHZv
aWQgZHVtcEV4Y2VwdGlvbihHbG9iYWxPYmplY3QqIGdsb2JhbE9iamVjdCwgTmFrZWRQdHI8RXhj
ZXB0aW9uPiBldmFsdWF0aW9uRXhjZXB0aW9uKQoreworICAgIGlmIChldmFsdWF0aW9uRXhjZXB0
aW9uKSB7CisgICAgICAgIHByaW50ZigiRXhjZXB0aW9uOiAlc1xuIiwgZXZhbHVhdGlvbkV4Y2Vw
dGlvbi0+dmFsdWUoKS50b1N0cmluZyhnbG9iYWxPYmplY3QtPmdsb2JhbEV4ZWMoKSktPnZhbHVl
KGdsb2JhbE9iamVjdC0+Z2xvYmFsRXhlYygpKS51dGY4KCkuZGF0YSgpKTsKKyAgICAgICAgSWRl
bnRpZmllciBzdGFja0lEID0gSWRlbnRpZmllcjo6ZnJvbVN0cmluZyhnbG9iYWxPYmplY3QtPmds
b2JhbEV4ZWMoKSwgInN0YWNrIik7CisgICAgICAgIEpTVmFsdWUgc3RhY2tWYWx1ZSA9IGV2YWx1
YXRpb25FeGNlcHRpb24tPnZhbHVlKCkuZ2V0KGdsb2JhbE9iamVjdC0+Z2xvYmFsRXhlYygpLCBz
dGFja0lEKTsKKyAgICAgICAgaWYgKCFzdGFja1ZhbHVlLmlzVW5kZWZpbmVkT3JOdWxsKCkpCisg
ICAgICAgICAgICBwcmludGYoIiVzXG4iLCBzdGFja1ZhbHVlLnRvU3RyaW5nKGdsb2JhbE9iamVj
dC0+Z2xvYmFsRXhlYygpKS0+dmFsdWUoZ2xvYmFsT2JqZWN0LT5nbG9iYWxFeGVjKCkpLnV0Zjgo
KS5kYXRhKCkpOworICAgIH0KK30KKworc3RhdGljIGJvb2wgcnVuV2l0aFNjcmlwdHMoR2xvYmFs
T2JqZWN0KiBnbG9iYWxPYmplY3QsIGNvbnN0IFZlY3RvcjxTY3JpcHQ+JiBzY3JpcHRzLCBib29s
IGR1bXAsIGJvb2wgbW9kdWxlKQogewogICAgIGNvbnN0IGNoYXIqIHNjcmlwdDsKICAgICBTdHJp
bmcgZmlsZU5hbWU7CkBAIC0xMzQ5LDE3ICsxMzc5LDIxIEBAIHN0YXRpYyBib29sIHJ1bldpdGhT
Y3JpcHRzKEdsb2JhbE9iamVjdCogZ2xvYmFsT2JqZWN0LCBjb25zdCBWZWN0b3I8U2NyaXB0PiYg
c2NyCiAKICAgICAgICAgdm0uc3RhcnRTYW1wbGluZygpOwogCi0gICAgICAgIE5ha2VkUHRyPEV4
Y2VwdGlvbj4gZXZhbHVhdGlvbkV4Y2VwdGlvbjsKLSAgICAgICAgSlNWYWx1ZSByZXR1cm5WYWx1
ZSA9IGV2YWx1YXRlKGdsb2JhbE9iamVjdC0+Z2xvYmFsRXhlYygpLCBqc2NTb3VyY2Uoc2NyaXB0
LCBmaWxlTmFtZSksIEpTVmFsdWUoKSwgZXZhbHVhdGlvbkV4Y2VwdGlvbik7Ci0gICAgICAgIHN1
Y2Nlc3MgPSBzdWNjZXNzICYmICFldmFsdWF0aW9uRXhjZXB0aW9uOwotICAgICAgICBpZiAoZHVt
cCAmJiAhZXZhbHVhdGlvbkV4Y2VwdGlvbikKLSAgICAgICAgICAgIHByaW50ZigiRW5kOiAlc1xu
IiwgcmV0dXJuVmFsdWUudG9TdHJpbmcoZ2xvYmFsT2JqZWN0LT5nbG9iYWxFeGVjKCkpLT52YWx1
ZShnbG9iYWxPYmplY3QtPmdsb2JhbEV4ZWMoKSkudXRmOCgpLmRhdGEoKSk7Ci0gICAgICAgIGlm
IChldmFsdWF0aW9uRXhjZXB0aW9uKSB7Ci0gICAgICAgICAgICBwcmludGYoIkV4Y2VwdGlvbjog
JXNcbiIsIGV2YWx1YXRpb25FeGNlcHRpb24tPnZhbHVlKCkudG9TdHJpbmcoZ2xvYmFsT2JqZWN0
LT5nbG9iYWxFeGVjKCkpLT52YWx1ZShnbG9iYWxPYmplY3QtPmdsb2JhbEV4ZWMoKSkudXRmOCgp
LmRhdGEoKSk7Ci0gICAgICAgICAgICBJZGVudGlmaWVyIHN0YWNrSUQgPSBJZGVudGlmaWVyOjpm
cm9tU3RyaW5nKGdsb2JhbE9iamVjdC0+Z2xvYmFsRXhlYygpLCAic3RhY2siKTsKLSAgICAgICAg
ICAgIEpTVmFsdWUgc3RhY2tWYWx1ZSA9IGV2YWx1YXRpb25FeGNlcHRpb24tPnZhbHVlKCkuZ2V0
KGdsb2JhbE9iamVjdC0+Z2xvYmFsRXhlYygpLCBzdGFja0lEKTsKLSAgICAgICAgICAgIGlmICgh
c3RhY2tWYWx1ZS5pc1VuZGVmaW5lZE9yTnVsbCgpKQotICAgICAgICAgICAgICAgIHByaW50Zigi
JXNcbiIsIHN0YWNrVmFsdWUudG9TdHJpbmcoZ2xvYmFsT2JqZWN0LT5nbG9iYWxFeGVjKCkpLT52
YWx1ZShnbG9iYWxPYmplY3QtPmdsb2JhbEV4ZWMoKSkudXRmOCgpLmRhdGEoKSk7CisgICAgICAg
IGlmIChtb2R1bGUpIHsKKyNpZiBFTkFCTEUoRVM2X01PRFVMRVMpCisgICAgICAgICAgICBOYWtl
ZFB0cjxFeGNlcHRpb24+IGV2YWx1YXRpb25FeGNlcHRpb247CisgICAgICAgICAgICBldmFsdWF0
ZU1vZHVsZShnbG9iYWxPYmplY3QtPmdsb2JhbEV4ZWMoKSwganNjU291cmNlKHNjcmlwdCwgZmls
ZU5hbWUpLCBldmFsdWF0aW9uRXhjZXB0aW9uKTsKKyAgICAgICAgICAgIGR1bXBFeGNlcHRpb24o
Z2xvYmFsT2JqZWN0LCBldmFsdWF0aW9uRXhjZXB0aW9uKTsKKyAgICAgICAgICAgIGdsb2JhbE9i
amVjdC0+Z2xvYmFsRXhlYygpLT5jbGVhckV4Y2VwdGlvbigpOworICAgICAgICAgICAgZ2xvYmFs
T2JqZWN0LT52bSgpLmRyYWluTWljcm90YXNrcygpOworI2VuZGlmCisgICAgICAgIH0gZWxzZSB7
CisgICAgICAgICAgICBOYWtlZFB0cjxFeGNlcHRpb24+IGV2YWx1YXRpb25FeGNlcHRpb247Cisg
ICAgICAgICAgICBKU1ZhbHVlIHJldHVyblZhbHVlID0gZXZhbHVhdGUoZ2xvYmFsT2JqZWN0LT5n
bG9iYWxFeGVjKCksIGpzY1NvdXJjZShzY3JpcHQsIGZpbGVOYW1lKSwgSlNWYWx1ZSgpLCBldmFs
dWF0aW9uRXhjZXB0aW9uKTsKKyAgICAgICAgICAgIHN1Y2Nlc3MgPSBzdWNjZXNzICYmICFldmFs
dWF0aW9uRXhjZXB0aW9uOworICAgICAgICAgICAgaWYgKGR1bXAgJiYgIWV2YWx1YXRpb25FeGNl
cHRpb24pCisgICAgICAgICAgICAgICAgcHJpbnRmKCJFbmQ6ICVzXG4iLCByZXR1cm5WYWx1ZS50
b1N0cmluZyhnbG9iYWxPYmplY3QtPmdsb2JhbEV4ZWMoKSktPnZhbHVlKGdsb2JhbE9iamVjdC0+
Z2xvYmFsRXhlYygpKS51dGY4KCkuZGF0YSgpKTsKKyAgICAgICAgICAgIGR1bXBFeGNlcHRpb24o
Z2xvYmFsT2JqZWN0LCBldmFsdWF0aW9uRXhjZXB0aW9uKTsKICAgICAgICAgfQogCiAgICAgICAg
IHZtLnN0b3BTYW1wbGluZygpOwpAQCAtMTQ1MSw2ICsxNDg1LDkgQEAgc3RhdGljIE5PX1JFVFVS
TiB2b2lkIHByaW50VXNhZ2VTdGF0ZW1lbnQoYm9vbCBoZWxwID0gZmFsc2UpCiAgICAgZnByaW50
ZihzdGRlcnIsICIgIC1mICAgICAgICAgU3BlY2lmaWVzIGEgc291cmNlIGZpbGUgKGRlcHJlY2F0
ZWQpXG4iKTsKICAgICBmcHJpbnRmKHN0ZGVyciwgIiAgLWh8LS1oZWxwICBQcmludHMgdGhpcyBo
ZWxwIG1lc3NhZ2VcbiIpOwogICAgIGZwcmludGYoc3RkZXJyLCAiICAtaSAgICAgICAgIEVuYWJs
ZXMgaW50ZXJhY3RpdmUgbW9kZSAoZGVmYXVsdCBpZiBubyBmaWxlcyBhcmUgc3BlY2lmaWVkKVxu
Iik7CisjaWYgRU5BQkxFKEVTNl9NT0RVTEVTKQorICAgIGZwcmludGYoc3RkZXJyLCAiICAtbSAg
ICAgICAgIEV4ZWN1dGUgYXMgYSBtb2R1bGVcbiIpOworI2VuZGlmCiAjaWYgSEFWRShTSUdOQUxf
SCkKICAgICBmcHJpbnRmKHN0ZGVyciwgIiAgLXMgICAgICAgICBJbnN0YWxscyBzaWduYWwgaGFu
ZGxlcnMgdGhhdCBleGl0IG9uIGEgY3Jhc2ggKFVuaXggcGxhdGZvcm1zIG9ubHkpXG4iKTsKICNl
bmRpZgpAQCAtMTUwMiw2ICsxNTM5LDEyIEBAIHZvaWQgQ29tbWFuZExpbmU6OnBhcnNlQXJndW1l
bnRzKGludCBhcmdjLCBjaGFyKiogYXJndikKICAgICAgICAgICAgIG1fcHJvZmlsZXJPdXRwdXQg
PSBhcmd2W2ldOwogICAgICAgICAgICAgY29udGludWU7CiAgICAgICAgIH0KKyNpZiBFTkFCTEUo
RVM2X01PRFVMRVMpCisgICAgICAgIGlmICghc3RyY21wKGFyZywgIi1tIikpIHsKKyAgICAgICAg
ICAgIG1fbW9kdWxlID0gdHJ1ZTsKKyAgICAgICAgICAgIGNvbnRpbnVlOworICAgICAgICB9Cisj
ZW5kaWYKICAgICAgICAgaWYgKCFzdHJjbXAoYXJnLCAiLXMiKSkgewogI2lmIEhBVkUoU0lHTkFM
X0gpCiAgICAgICAgICAgICBzaWduYWwoU0lHSUxMLCBfZXhpdCk7CkBAIC0xNTc3LDcgKzE2MjAs
NyBAQCBpbnQganNjbWFpbihpbnQgYXJnYywgY2hhcioqIGFyZ3YpCiAgICAgICAgICAgICB2bS0+
bV9wZXJCeXRlY29kZVByb2ZpbGVyID0gc3RkOjptYWtlX3VuaXF1ZTxQcm9maWxlcjo6RGF0YWJh
c2U+KCp2bSk7CiAgICAgCiAgICAgICAgIEdsb2JhbE9iamVjdCogZ2xvYmFsT2JqZWN0ID0gR2xv
YmFsT2JqZWN0OjpjcmVhdGUoKnZtLCBHbG9iYWxPYmplY3Q6OmNyZWF0ZVN0cnVjdHVyZSgqdm0s
IGpzTnVsbCgpKSwgb3B0aW9ucy5tX2FyZ3VtZW50cyk7Ci0gICAgICAgIGJvb2wgc3VjY2VzcyA9
IHJ1bldpdGhTY3JpcHRzKGdsb2JhbE9iamVjdCwgb3B0aW9ucy5tX3NjcmlwdHMsIG9wdGlvbnMu
bV9kdW1wKTsKKyAgICAgICAgYm9vbCBzdWNjZXNzID0gcnVuV2l0aFNjcmlwdHMoZ2xvYmFsT2Jq
ZWN0LCBvcHRpb25zLm1fc2NyaXB0cywgb3B0aW9ucy5tX2R1bXAsIG9wdGlvbnMubV9tb2R1bGUp
OwogICAgICAgICBpZiAob3B0aW9ucy5tX2ludGVyYWN0aXZlICYmIHN1Y2Nlc3MpCiAgICAgICAg
ICAgICBydW5JbnRlcmFjdGl2ZShnbG9iYWxPYmplY3QpOwogCmRpZmYgLS1naXQgYS9Tb3VyY2Uv
SmF2YVNjcmlwdENvcmUvcGFyc2VyL0xleGVyLmNwcCBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9w
YXJzZXIvTGV4ZXIuY3BwCmluZGV4IDI1OWQyNTRlMzk3NTE4YzdiY2NmZmM5ZWRlYzE1NmJhNWYw
MGRiN2EuLjQ3NjA0M2ZmNmUyNTVmOWViNjMxNDVjYjg2Y2RhOWVlZjBhNDE1NjYgMTAwNjQ0Ci0t
LSBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9wYXJzZXIvTGV4ZXIuY3BwCisrKyBiL1NvdXJjZS9K
YXZhU2NyaXB0Q29yZS9wYXJzZXIvTGV4ZXIuY3BwCkBAIC05MzUsNyArOTM1LDcgQEAgdGVtcGxh
dGUgPGJvb2wgc2hvdWxkQ3JlYXRlSWRlbnRpZmllcj4gQUxXQVlTX0lOTElORSBKU1Rva2VuVHlw
ZSBMZXhlcjxMQ2hhcj46OnAKICAgICAgICAgICAgICAgICByZXR1cm4gRVJST1JUT0s7CiAgICAg
ICAgICAgICB9CiAgICAgICAgICAgICBpZiAoaXNQcml2YXRlTmFtZSkKLSAgICAgICAgICAgICAg
ICBpZGVudCA9IG1fdm0tPnByb3BlcnR5TmFtZXMtPmdldFByaXZhdGVOYW1lKCppZGVudCk7Cisg
ICAgICAgICAgICAgICAgaWRlbnQgPSBtX3ZtLT5wcm9wZXJ0eU5hbWVzLT5sb29rVXBQcml2YXRl
TmFtZSgqaWRlbnQpOwogICAgICAgICAgICAgZWxzZSBpZiAoKmlkZW50ID09IG1fdm0tPnByb3Bl
cnR5TmFtZXMtPnVuZGVmaW5lZEtleXdvcmQpCiAgICAgICAgICAgICAgICAgdG9rZW5EYXRhLT5p
ZGVudCA9ICZtX3ZtLT5wcm9wZXJ0eU5hbWVzLT51bmRlZmluZWRQcml2YXRlTmFtZTsKICAgICAg
ICAgICAgIGlmICghaWRlbnQpCkBAIC0xMDEyLDcgKzEwMTIsNyBAQCB0ZW1wbGF0ZSA8Ym9vbCBz
aG91bGRDcmVhdGVJZGVudGlmaWVyPiBBTFdBWVNfSU5MSU5FIEpTVG9rZW5UeXBlIExleGVyPFVD
aGFyPjo6cAogICAgICAgICAgICAgICAgIHJldHVybiBFUlJPUlRPSzsKICAgICAgICAgICAgIH0K
ICAgICAgICAgICAgIGlmIChpc1ByaXZhdGVOYW1lKQotICAgICAgICAgICAgICAgIGlkZW50ID0g
bV92bS0+cHJvcGVydHlOYW1lcy0+Z2V0UHJpdmF0ZU5hbWUoKmlkZW50KTsKKyAgICAgICAgICAg
ICAgICBpZGVudCA9IG1fdm0tPnByb3BlcnR5TmFtZXMtPmxvb2tVcFByaXZhdGVOYW1lKCppZGVu
dCk7CiAgICAgICAgICAgICBlbHNlIGlmICgqaWRlbnQgPT0gbV92bS0+cHJvcGVydHlOYW1lcy0+
dW5kZWZpbmVkS2V5d29yZCkKICAgICAgICAgICAgICAgICB0b2tlbkRhdGEtPmlkZW50ID0gJm1f
dm0tPnByb3BlcnR5TmFtZXMtPnVuZGVmaW5lZFByaXZhdGVOYW1lOwogICAgICAgICAgICAgaWYg
KCFpZGVudCkKZGlmZiAtLWdpdCBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9wYXJzZXIvTW9kdWxl
QW5hbHl6ZXIuY3BwIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL3BhcnNlci9Nb2R1bGVBbmFseXpl
ci5jcHAKaW5kZXggYjJkZTk2MGIzOTMyNTg0MWNkOWY4NWM2NzE2MjJjM2RmN2JhOWQ3Ny4uNmRh
MmNkMDhkNDhmMjA1ODlmNGRlZTJlYzQ1NGU5ZDE1Y2UzZjhiYiAxMDA2NDQKLS0tIGEvU291cmNl
L0phdmFTY3JpcHRDb3JlL3BhcnNlci9Nb2R1bGVBbmFseXplci5jcHAKKysrIGIvU291cmNlL0ph
dmFTY3JpcHRDb3JlL3BhcnNlci9Nb2R1bGVBbmFseXplci5jcHAKQEAgLTI3LDE0ICsyNywxOCBA
QAogI2luY2x1ZGUgIk1vZHVsZUFuYWx5emVyLmgiCiAKICNpbmNsdWRlICJJZGVudGlmaWVySW5s
aW5lcy5oIgotI2luY2x1ZGUgIk1vZHVsZVJlY29yZC5oIgorI2luY2x1ZGUgIkpTQ0pTVmFsdWVJ
bmxpbmVzLmgiCisjaW5jbHVkZSAiSlNDZWxsSW5saW5lcy5oIgorI2luY2x1ZGUgIkpTR2xvYmFs
T2JqZWN0LmgiCisjaW5jbHVkZSAiSlNNb2R1bGVSZWNvcmQuaCIKKyNpbmNsdWRlICJTdHJvbmdJ
bmxpbmVzLmgiCiAKIG5hbWVzcGFjZSBKU0MgewogCiAKLU1vZHVsZUFuYWx5emVyOjpNb2R1bGVB
bmFseXplcihWTSYgdm0sIGNvbnN0IFZhcmlhYmxlRW52aXJvbm1lbnQmIGRlY2xhcmVkVmFyaWFi
bGVzLCBjb25zdCBWYXJpYWJsZUVudmlyb25tZW50JiBsZXhpY2FsVmFyaWFibGVzKQotICAgIDog
bV92bSgmdm0pCi0gICAgLCBtX21vZHVsZVJlY29yZChNb2R1bGVSZWNvcmQ6OmNyZWF0ZSgpKQor
TW9kdWxlQW5hbHl6ZXI6Ok1vZHVsZUFuYWx5emVyKEV4ZWNTdGF0ZSogZXhlYywgY29uc3QgVmFy
aWFibGVFbnZpcm9ubWVudCYgZGVjbGFyZWRWYXJpYWJsZXMsIGNvbnN0IFZhcmlhYmxlRW52aXJv
bm1lbnQmIGxleGljYWxWYXJpYWJsZXMpCisgICAgOiBtX3ZtKCZleGVjLT52bSgpKQorICAgICwg
bV9tb2R1bGVSZWNvcmQoZXhlYy0+dm0oKSwgSlNNb2R1bGVSZWNvcmQ6OmNyZWF0ZShleGVjLT52
bSgpLCBleGVjLT5sZXhpY2FsR2xvYmFsT2JqZWN0KCktPm1vZHVsZVJlY29yZFN0cnVjdHVyZSgp
KSkKICAgICAsIG1fZGVjbGFyZWRWYXJpYWJsZXMoZGVjbGFyZWRWYXJpYWJsZXMpCiAgICAgLCBt
X2xleGljYWxWYXJpYWJsZXMobGV4aWNhbFZhcmlhYmxlcykKIHsKQEAgLTc2LDI4ICs4MCwyOCBA
QCB2b2lkIE1vZHVsZUFuYWx5emVyOjpleHBvcnRWYXJpYWJsZShjb25zdCBSZWZQdHI8VW5pcXVl
ZFN0cmluZ0ltcGw+JiBsb2NhbE5hbWUsCiAKICAgICAvLyBFeHBvcnRlZCBtb2R1bGUgbG9jYWwg
dmFyaWFibGUuCiAgICAgaWYgKCF2YXJpYWJsZS5pc0ltcG9ydGVkKCkpIHsKLSAgICAgICAgbW9k
dWxlUmVjb3JkKCkuYWRkRXhwb3J0RW50cnkoTW9kdWxlUmVjb3JkOjpFeHBvcnRFbnRyeTo6Y3Jl
YXRlTG9jYWwoZXhwb3J0TmFtZSwgSWRlbnRpZmllcjo6ZnJvbVVpZChtX3ZtLCBsb2NhbE5hbWUu
Z2V0KCkpLCB2YXJpYWJsZSkpOworICAgICAgICBtb2R1bGVSZWNvcmQoKS0+YWRkRXhwb3J0RW50
cnkoSlNNb2R1bGVSZWNvcmQ6OkV4cG9ydEVudHJ5OjpjcmVhdGVMb2NhbChleHBvcnROYW1lLCBJ
ZGVudGlmaWVyOjpmcm9tVWlkKG1fdm0sIGxvY2FsTmFtZS5nZXQoKSksIHZhcmlhYmxlKSk7CiAg
ICAgICAgIHJldHVybjsKICAgICB9CiAKLSAgICBjb25zdCBhdXRvJiBpbXBvcnRFbnRyeSA9IG1v
ZHVsZVJlY29yZCgpLmxvb2tVcEltcG9ydEVudHJ5KGxvY2FsTmFtZSk7CisgICAgY29uc3QgYXV0
byYgaW1wb3J0RW50cnkgPSBtb2R1bGVSZWNvcmQoKS0+bG9va1VwSW1wb3J0RW50cnkobG9jYWxO
YW1lKTsKICAgICBpZiAoaW1wb3J0RW50cnkuaXNOYW1lc3BhY2Uodm0oKSkpIHsKICAgICAgICAg
Ly8gRXhwb3J0ZWQgbmFtZXNwYWNlIGJpbmRpbmcuCiAgICAgICAgIC8vIGltcG9ydCAqIGFzIG5h
bWVzcGFjZSBmcm9tICJtb2QiCiAgICAgICAgIC8vIGV4cG9ydCB7IG5hbWVzcGFjZSB9Ci0gICAg
ICAgIG1vZHVsZVJlY29yZCgpLmFkZEV4cG9ydEVudHJ5KE1vZHVsZVJlY29yZDo6RXhwb3J0RW50
cnk6OmNyZWF0ZU5hbWVzcGFjZShleHBvcnROYW1lLCBpbXBvcnRFbnRyeS5tb2R1bGVSZXF1ZXN0
KSk7CisgICAgICAgIG1vZHVsZVJlY29yZCgpLT5hZGRFeHBvcnRFbnRyeShKU01vZHVsZVJlY29y
ZDo6RXhwb3J0RW50cnk6OmNyZWF0ZU5hbWVzcGFjZShleHBvcnROYW1lLCBpbXBvcnRFbnRyeS5t
b2R1bGVSZXF1ZXN0KSk7CiAgICAgICAgIHJldHVybjsKICAgICB9CiAKICAgICAvLyBJbmRpcmVj
dGx5IGV4cG9ydGVkIGJpbmRpbmcuCiAgICAgLy8gaW1wb3J0IGEgZnJvbSAibW9kIgogICAgIC8v
IGV4cG9ydCB7IGEgfQotICAgIG1vZHVsZVJlY29yZCgpLmFkZEV4cG9ydEVudHJ5KE1vZHVsZVJl
Y29yZDo6RXhwb3J0RW50cnk6OmNyZWF0ZUluZGlyZWN0KGV4cG9ydE5hbWUsIGltcG9ydEVudHJ5
LmltcG9ydE5hbWUsIGltcG9ydEVudHJ5Lm1vZHVsZVJlcXVlc3QpKTsKKyAgICBtb2R1bGVSZWNv
cmQoKS0+YWRkRXhwb3J0RW50cnkoSlNNb2R1bGVSZWNvcmQ6OkV4cG9ydEVudHJ5OjpjcmVhdGVJ
bmRpcmVjdChleHBvcnROYW1lLCBpbXBvcnRFbnRyeS5pbXBvcnROYW1lLCBpbXBvcnRFbnRyeS5t
b2R1bGVSZXF1ZXN0KSk7CiB9CiAKIAogCi1SZWY8TW9kdWxlUmVjb3JkPiBNb2R1bGVBbmFseXpl
cjo6YW5hbHl6ZShNb2R1bGVQcm9ncmFtTm9kZSYgbW9kdWxlUHJvZ3JhbU5vZGUpCitKU01vZHVs
ZVJlY29yZCogTW9kdWxlQW5hbHl6ZXI6OmFuYWx5emUoTW9kdWxlUHJvZ3JhbU5vZGUmIG1vZHVs
ZVByb2dyYW1Ob2RlKQogewogICAgIC8vIFRyYXZlcnNlIHRoZSBtb2R1bGUgQVNUIGFuZCBjb2xs
ZWN0CiAgICAgLy8gKiBJbXBvcnQgZW50cmllcwpAQCAtMTQ5LDcgKzE1Myw3IEBAIFJlZjxNb2R1
bGVSZWNvcmQ+IE1vZHVsZUFuYWx5emVyOjphbmFseXplKE1vZHVsZVByb2dyYW1Ob2RlJiBtb2R1
bGVQcm9ncmFtTm9kZSkKICAgICBpZiAoT3B0aW9uczo6ZHVtcE1vZHVsZVJlY29yZCgpKQogICAg
ICAgICBtX21vZHVsZVJlY29yZC0+ZHVtcCgpOwogCi0gICAgcmV0dXJuICptX21vZHVsZVJlY29y
ZDsKKyAgICByZXR1cm4gbV9tb2R1bGVSZWNvcmQuZ2V0KCk7CiB9CiAKIH0gLy8gbmFtZXNwYWNl
IEpTQwpkaWZmIC0tZ2l0IGEvU291cmNlL0phdmFTY3JpcHRDb3JlL3BhcnNlci9Nb2R1bGVBbmFs
eXplci5oIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL3BhcnNlci9Nb2R1bGVBbmFseXplci5oCmlu
ZGV4IDAyNzY0ODQ3NjUwYjMwMjRmZDJhOGMzNzIyZTczYTc0N2I5NjNjYjYuLjMzOTBiN2JhZjFm
NjVlODEwYzExMzliNmRlYzQ2NTk0NmI4OWQ0OTIgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9KYXZhU2Ny
aXB0Q29yZS9wYXJzZXIvTW9kdWxlQW5hbHl6ZXIuaAorKysgYi9Tb3VyY2UvSmF2YVNjcmlwdENv
cmUvcGFyc2VyL01vZHVsZUFuYWx5emVyLmgKQEAgLTI2LDIwICsyNiwyMiBAQAogI2lmbmRlZiBN
b2R1bGVBbmFseXplcl9oCiAjZGVmaW5lIE1vZHVsZUFuYWx5emVyX2gKIAotI2luY2x1ZGUgIk1v
ZHVsZVJlY29yZC5oIgogI2luY2x1ZGUgIk5vZGVzLmgiCiAKIG5hbWVzcGFjZSBKU0MgewogCitj
bGFzcyBKU01vZHVsZVJlY29yZDsKKwogY2xhc3MgTW9kdWxlQW5hbHl6ZXIgeworICAgIFdURl9N
QUtFX05PTkNPUFlBQkxFKE1vZHVsZUFuYWx5emVyKTsKIHB1YmxpYzoKLSAgICBNb2R1bGVBbmFs
eXplcihWTSYsIGNvbnN0IFZhcmlhYmxlRW52aXJvbm1lbnQmIGRlY2xhcmVkVmFyaWFibGVzLCBj
b25zdCBWYXJpYWJsZUVudmlyb25tZW50JiBsZXhpY2FsVmFyaWFibGVzKTsKKyAgICBNb2R1bGVB
bmFseXplcihFeGVjU3RhdGUqLCBjb25zdCBWYXJpYWJsZUVudmlyb25tZW50JiBkZWNsYXJlZFZh
cmlhYmxlcywgY29uc3QgVmFyaWFibGVFbnZpcm9ubWVudCYgbGV4aWNhbFZhcmlhYmxlcyk7CiAK
LSAgICBSZWY8TW9kdWxlUmVjb3JkPiBhbmFseXplKE1vZHVsZVByb2dyYW1Ob2RlJik7CisgICAg
SlNNb2R1bGVSZWNvcmQqIGFuYWx5emUoTW9kdWxlUHJvZ3JhbU5vZGUmKTsKIAogICAgIFZNJiB2
bSgpIHsgcmV0dXJuICptX3ZtOyB9CiAKLSAgICBNb2R1bGVSZWNvcmQmIG1vZHVsZVJlY29yZCgp
IHsgcmV0dXJuICptX21vZHVsZVJlY29yZDsgfQorICAgIEpTTW9kdWxlUmVjb3JkKiBtb2R1bGVS
ZWNvcmQoKSB7IHJldHVybiBtX21vZHVsZVJlY29yZC5nZXQoKTsgfQogCiAgICAgdm9pZCBkZWNs
YXJlRXhwb3J0QWxpYXMoY29uc3QgSWRlbnRpZmllciYgbG9jYWxOYW1lLCBjb25zdCBJZGVudGlm
aWVyJiBleHBvcnROYW1lKTsKIApAQCAtNTEsNyArNTMsNyBAQCBjbGFzcyBNb2R1bGVBbmFseXpl
ciB7CiAgICAgSWRlbnRpZmllciBleHBvcnRlZEJpbmRpbmcoY29uc3QgUmVmUHRyPFVuaXF1ZWRT
dHJpbmdJbXBsPiYgaWRlbnQpOwogCiAgICAgVk0qIG1fdm07Ci0gICAgUmVmUHRyPE1vZHVsZVJl
Y29yZD4gbV9tb2R1bGVSZWNvcmQ7CisgICAgU3Ryb25nPEpTTW9kdWxlUmVjb3JkPiBtX21vZHVs
ZVJlY29yZDsKICAgICBWYXJpYWJsZUVudmlyb25tZW50IG1fZGVjbGFyZWRWYXJpYWJsZXM7CiAg
ICAgVmFyaWFibGVFbnZpcm9ubWVudCBtX2xleGljYWxWYXJpYWJsZXM7CiAgICAgSWRlbnRpZmll
ckFsaWFzTWFwIG1fYWxpYXNNYXA7CmRpZmYgLS1naXQgYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUv
cGFyc2VyL01vZHVsZVJlY29yZC5jcHAgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvcGFyc2VyL01v
ZHVsZVJlY29yZC5jcHAKZGVsZXRlZCBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IGVjOTczNTY4YmVj
OGEwYjE1MzMzMmY0ODc1ZjllZmUxMzc4MmVjOGEuLjAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAKLS0tIGEvU291cmNlL0phdmFTY3JpcHRDb3JlL3BhcnNlci9Nb2R1bGVS
ZWNvcmQuY3BwCisrKyAvZGV2L251bGwKQEAgLTEsOTUgKzAsMCBAQAotLyoKLSAqIENvcHlyaWdo
dCAoQykgMjAxNSBBcHBsZSBJbmMuIEFsbCByaWdodHMgcmVzZXJ2ZWQuCi0gKgotICogUmVkaXN0
cmlidXRpb24gYW5kIHVzZSBpbiBzb3VyY2UgYW5kIGJpbmFyeSBmb3Jtcywgd2l0aCBvciB3aXRo
b3V0Ci0gKiBtb2RpZmljYXRpb24sIGFyZSBwZXJtaXR0ZWQgcHJvdmlkZWQgdGhhdCB0aGUgZm9s
bG93aW5nIGNvbmRpdGlvbnMKLSAqIGFyZSBtZXQ6Ci0gKiAxLiBSZWRpc3RyaWJ1dGlvbnMgb2Yg
c291cmNlIGNvZGUgbXVzdCByZXRhaW4gdGhlIGFib3ZlIGNvcHlyaWdodAotICogICAgbm90aWNl
LCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyLgot
ICogMi4gUmVkaXN0cmlidXRpb25zIGluIGJpbmFyeSBmb3JtIG11c3QgcmVwcm9kdWNlIHRoZSBh
Ym92ZSBjb3B5cmlnaHQKLSAqICAgIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5k
IHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lciBpbiB0aGUKLSAqICAgIGRvY3VtZW50YXRpb24gYW5k
L29yIG90aGVyIG1hdGVyaWFscyBwcm92aWRlZCB3aXRoIHRoZSBkaXN0cmlidXRpb24uCi0gKgot
ICogVEhJUyBTT0ZUV0FSRSBJUyBQUk9WSURFRCBCWSBBUFBMRSBJTkMuIGBgQVMgSVMnJyBBTkQg
QU5ZCi0gKiBFWFBSRVNTIE9SIElNUExJRUQgV0FSUkFOVElFUywgSU5DTFVESU5HLCBCVVQgTk9U
IExJTUlURUQgVE8sIFRIRQotICogSU1QTElFRCBXQVJSQU5USUVTIE9GIE1FUkNIQU5UQUJJTElU
WSBBTkQgRklUTkVTUyBGT1IgQSBQQVJUSUNVTEFSCi0gKiBQVVJQT1NFIEFSRSBESVNDTEFJTUVE
LiAgSU4gTk8gRVZFTlQgU0hBTEwgQVBQTEUgSU5DLiBPUgotICogQ09OVFJJQlVUT1JTIEJFIExJ
QUJMRSBGT1IgQU5ZIERJUkVDVCwgSU5ESVJFQ1QsIElOQ0lERU5UQUwsIFNQRUNJQUwsCi0gKiBF
WEVNUExBUlksIE9SIENPTlNFUVVFTlRJQUwgREFNQUdFUyAoSU5DTFVESU5HLCBCVVQgTk9UIExJ
TUlURUQgVE8sCi0gKiBQUk9DVVJFTUVOVCBPRiBTVUJTVElUVVRFIEdPT0RTIE9SIFNFUlZJQ0VT
OyBMT1NTIE9GIFVTRSwgREFUQSwgT1IKLSAqIFBST0ZJVFM7IE9SIEJVU0lORVNTIElOVEVSUlVQ
VElPTikgSE9XRVZFUiBDQVVTRUQgQU5EIE9OIEFOWSBUSEVPUlkKLSAqIE9GIExJQUJJTElUWSwg
V0hFVEhFUiBJTiBDT05UUkFDVCwgU1RSSUNUIExJQUJJTElUWSwgT1IgVE9SVAotICogKElOQ0xV
RElORyBORUdMSUdFTkNFIE9SIE9USEVSV0lTRSkgQVJJU0lORyBJTiBBTlkgV0FZIE9VVCBPRiBU
SEUgVVNFCi0gKiBPRiBUSElTIFNPRlRXQVJFLCBFVkVOIElGIEFEVklTRUQgT0YgVEhFIFBPU1NJ
QklMSVRZIE9GIFNVQ0ggREFNQUdFLiAKLSAqLwotCi0jaW5jbHVkZSAiY29uZmlnLmgiCi0jaW5j
bHVkZSAiTW9kdWxlUmVjb3JkLmgiCi0KLSNpbmNsdWRlICJJZGVudGlmaWVySW5saW5lcy5oIgot
Ci1uYW1lc3BhY2UgSlNDIHsKLQotCi1hdXRvIE1vZHVsZVJlY29yZDo6RXhwb3J0RW50cnk6OmNy
ZWF0ZUxvY2FsKGNvbnN0IElkZW50aWZpZXImIGV4cG9ydE5hbWUsIGNvbnN0IElkZW50aWZpZXIm
IGxvY2FsTmFtZSwgY29uc3QgVmFyaWFibGVFbnZpcm9ubWVudEVudHJ5JiB2YXJpYWJsZSkgLT4g
RXhwb3J0RW50cnkKLXsKLSAgICByZXR1cm4gRXhwb3J0RW50cnkgeyBUeXBlOjpMb2NhbCwgZXhw
b3J0TmFtZSwgSWRlbnRpZmllcigpLCBJZGVudGlmaWVyKCksIGxvY2FsTmFtZSwgdmFyaWFibGUg
fTsKLX0KLQotYXV0byBNb2R1bGVSZWNvcmQ6OkV4cG9ydEVudHJ5OjpjcmVhdGVOYW1lc3BhY2Uo
Y29uc3QgSWRlbnRpZmllciYgZXhwb3J0TmFtZSwgY29uc3QgSWRlbnRpZmllciYgbW9kdWxlTmFt
ZSkgLT4gRXhwb3J0RW50cnkKLXsKLSAgICByZXR1cm4gRXhwb3J0RW50cnkgeyBUeXBlOjpOYW1l
c3BhY2UsIGV4cG9ydE5hbWUsIG1vZHVsZU5hbWUsIElkZW50aWZpZXIoKSwgSWRlbnRpZmllcigp
LCBWYXJpYWJsZUVudmlyb25tZW50RW50cnkoKSB9OwotfQotCi1hdXRvIE1vZHVsZVJlY29yZDo6
RXhwb3J0RW50cnk6OmNyZWF0ZUluZGlyZWN0KGNvbnN0IElkZW50aWZpZXImIGV4cG9ydE5hbWUs
IGNvbnN0IElkZW50aWZpZXImIGltcG9ydE5hbWUsIGNvbnN0IElkZW50aWZpZXImIG1vZHVsZU5h
bWUpIC0+IEV4cG9ydEVudHJ5Ci17Ci0gICAgcmV0dXJuIEV4cG9ydEVudHJ5IHsgVHlwZTo6SW5k
aXJlY3QsIGV4cG9ydE5hbWUsIG1vZHVsZU5hbWUsIGltcG9ydE5hbWUsIElkZW50aWZpZXIoKSwg
VmFyaWFibGVFbnZpcm9ubWVudEVudHJ5KCkgfTsKLX0KLQotc3RhdGljIFN0cmluZyBwcmludGFi
bGVOYW1lKGNvbnN0IFJlZlB0cjxVbmlxdWVkU3RyaW5nSW1wbD4mIHVpZCkKLXsKLSAgICBpZiAo
dWlkLT5pc1N5bWJvbCgpKQotICAgICAgICByZXR1cm4gdWlkLmdldCgpOwotICAgIHJldHVybiBX
VEY6Om1ha2VTdHJpbmcoIiciLCBTdHJpbmcodWlkLmdldCgpKSwgIiciKTsKLX0KLQotc3RhdGlj
IFN0cmluZyBwcmludGFibGVOYW1lKGNvbnN0IElkZW50aWZpZXImIGlkZW50KQotewotICAgIHJl
dHVybiBwcmludGFibGVOYW1lKGlkZW50LmltcGwoKSk7Ci19Ci0KLQotdm9pZCBNb2R1bGVSZWNv
cmQ6OmR1bXAoKQotewotICAgIGRhdGFMb2coIlxuQW5hbHl6aW5nIE1vZHVsZVJlY29yZFxuIik7
Ci0KLSAgICBkYXRhTG9nKCIgICAgRGVwZW5kZW5jaWVzOiAiLCBtX3JlcXVlc3RlZE1vZHVsZXMu
c2l6ZSgpLCAiIG1vZHVsZXNcbiIpOwotICAgIGZvciAoY29uc3QgYXV0byYgbW9kdWxlTmFtZSA6
IG1fcmVxdWVzdGVkTW9kdWxlcykKLSAgICAgICAgZGF0YUxvZygiICAgICAgbW9kdWxlKCIsIHBy
aW50YWJsZU5hbWUobW9kdWxlTmFtZSksICIpXG4iKTsKLQotICAgIGRhdGFMb2coIiAgICBJbXBv
cnQ6ICIsIG1faW1wb3J0RW50cmllcy5zaXplKCksICIgZW50cmllc1xuIik7Ci0gICAgZm9yIChj
b25zdCBhdXRvJiBwYWlyIDogbV9pbXBvcnRFbnRyaWVzKQotICAgICAgICBkYXRhTG9nKCIgICAg
ICBpbXBvcnQoIiwgcHJpbnRhYmxlTmFtZShwYWlyLnZhbHVlLmltcG9ydE5hbWUpLCAiKSwgbG9j
YWwoIiwgcHJpbnRhYmxlTmFtZShwYWlyLnZhbHVlLmxvY2FsTmFtZSksICIpLCBtb2R1bGUoIiwg
cHJpbnRhYmxlTmFtZShwYWlyLnZhbHVlLm1vZHVsZVJlcXVlc3QpLCAiKVxuIik7Ci0KLSAgICBk
YXRhTG9nKCIgICAgRXhwb3J0OiAiLCBtX2V4cG9ydEVudHJpZXMuc2l6ZSgpLCAiIGVudHJpZXNc
biIpOwotICAgIGZvciAoY29uc3QgYXV0byYgcGFpciA6IG1fZXhwb3J0RW50cmllcykgewotICAg
ICAgICBjb25zdCBFeHBvcnRFbnRyeSYgZW50cnkgPSBwYWlyLnZhbHVlOwotICAgICAgICBzd2l0
Y2ggKGVudHJ5LnR5cGUpIHsKLSAgICAgICAgY2FzZSBFeHBvcnRFbnRyeTo6VHlwZTo6TG9jYWw6
Ci0gICAgICAgICAgICBkYXRhTG9nKCIgICAgICBbTG9jYWxdICIsICJleHBvcnQoIiwgcHJpbnRh
YmxlTmFtZShlbnRyeS5leHBvcnROYW1lKSwgIiksIGxvY2FsKCIsIHByaW50YWJsZU5hbWUoZW50
cnkubG9jYWxOYW1lKSwgIilcbiIpOwotICAgICAgICAgICAgYnJlYWs7Ci0KLSAgICAgICAgY2Fz
ZSBFeHBvcnRFbnRyeTo6VHlwZTo6TmFtZXNwYWNlOgotICAgICAgICAgICAgZGF0YUxvZygiICAg
ICAgW05hbWVzcGFjZV0gIiwgImV4cG9ydCgiLCBwcmludGFibGVOYW1lKGVudHJ5LmV4cG9ydE5h
bWUpLCAiKSwgbW9kdWxlKCIsIHByaW50YWJsZU5hbWUoZW50cnkubW9kdWxlTmFtZSksICIpXG4i
KTsKLSAgICAgICAgICAgIGJyZWFrOwotCi0gICAgICAgIGNhc2UgRXhwb3J0RW50cnk6OlR5cGU6
OkluZGlyZWN0OgotICAgICAgICAgICAgZGF0YUxvZygiICAgICAgW0luZGlyZWN0XSAiLCAiZXhw
b3J0KCIsIHByaW50YWJsZU5hbWUoZW50cnkuZXhwb3J0TmFtZSksICIpLCBpbXBvcnQoIiwgcHJp
bnRhYmxlTmFtZShlbnRyeS5pbXBvcnROYW1lKSwgIiksIG1vZHVsZSgiLCBwcmludGFibGVOYW1l
KGVudHJ5Lm1vZHVsZU5hbWUpLCAiKVxuIik7Ci0gICAgICAgICAgICBicmVhazsKLSAgICAgICAg
fQotICAgIH0KLSAgICBmb3IgKGNvbnN0IGF1dG8mIG1vZHVsZU5hbWUgOiBtX3N0YXJFeHBvcnRF
bnRyaWVzKQotICAgICAgICBkYXRhTG9nKCIgICAgICBbU3Rhcl0gbW9kdWxlKCIsIHByaW50YWJs
ZU5hbWUobW9kdWxlTmFtZS5nZXQoKSksICIpXG4iKTsKLX0KLQotfSAvLyBuYW1lc3BhY2UgSlND
CmRpZmYgLS1naXQgYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvcGFyc2VyL01vZHVsZVJlY29yZC5o
IGIvU291cmNlL0phdmFTY3JpcHRDb3JlL3BhcnNlci9Nb2R1bGVSZWNvcmQuaApkZWxldGVkIGZp
bGUgbW9kZSAxMDA2NDQKaW5kZXggZWYwODFjMDNiMGE1YmRlNmYxNTU2MjlkZjNmNTA2Y2FmM2Ni
MTcxNC4uMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMAotLS0gYS9Tb3Vy
Y2UvSmF2YVNjcmlwdENvcmUvcGFyc2VyL01vZHVsZVJlY29yZC5oCisrKyAvZGV2L251bGwKQEAg
LTEsMTI4ICswLDAgQEAKLS8qCi0gKiBDb3B5cmlnaHQgKEMpIDIwMTUgQXBwbGUgSW5jLiBBbGwg
cmlnaHRzIHJlc2VydmVkLgotICoKLSAqIFJlZGlzdHJpYnV0aW9uIGFuZCB1c2UgaW4gc291cmNl
IGFuZCBiaW5hcnkgZm9ybXMsIHdpdGggb3Igd2l0aG91dAotICogbW9kaWZpY2F0aW9uLCBhcmUg
cGVybWl0dGVkIHByb3ZpZGVkIHRoYXQgdGhlIGZvbGxvd2luZyBjb25kaXRpb25zCi0gKiBhcmUg
bWV0OgotICogMS4gUmVkaXN0cmlidXRpb25zIG9mIHNvdXJjZSBjb2RlIG11c3QgcmV0YWluIHRo
ZSBhYm92ZSBjb3B5cmlnaHQKLSAqICAgIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMg
YW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lci4KLSAqIDIuIFJlZGlzdHJpYnV0aW9ucyBpbiBi
aW5hcnkgZm9ybSBtdXN0IHJlcHJvZHVjZSB0aGUgYWJvdmUgY29weXJpZ2h0Ci0gKiAgICBub3Rp
Y2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIg
aW4gdGhlCi0gKiAgICBkb2N1bWVudGF0aW9uIGFuZC9vciBvdGhlciBtYXRlcmlhbHMgcHJvdmlk
ZWQgd2l0aCB0aGUgZGlzdHJpYnV0aW9uLgotICoKLSAqIFRISVMgU09GVFdBUkUgSVMgUFJPVklE
RUQgQlkgQVBQTEUgSU5DLiBgYEFTIElTJycgQU5EIEFOWQotICogRVhQUkVTUyBPUiBJTVBMSUVE
IFdBUlJBTlRJRVMsIElOQ0xVRElORywgQlVUIE5PVCBMSU1JVEVEIFRPLCBUSEUKLSAqIElNUExJ
RUQgV0FSUkFOVElFUyBPRiBNRVJDSEFOVEFCSUxJVFkgQU5EIEZJVE5FU1MgRk9SIEEgUEFSVElD
VUxBUgotICogUFVSUE9TRSBBUkUgRElTQ0xBSU1FRC4gIElOIE5PIEVWRU5UIFNIQUxMIEFQUExF
IElOQy4gT1IKLSAqIENPTlRSSUJVVE9SUyBCRSBMSUFCTEUgRk9SIEFOWSBESVJFQ1QsIElORElS
RUNULCBJTkNJREVOVEFMLCBTUEVDSUFMLAotICogRVhFTVBMQVJZLCBPUiBDT05TRVFVRU5USUFM
IERBTUFHRVMgKElOQ0xVRElORywgQlVUIE5PVCBMSU1JVEVEIFRPLAotICogUFJPQ1VSRU1FTlQg
T0YgU1VCU1RJVFVURSBHT09EUyBPUiBTRVJWSUNFUzsgTE9TUyBPRiBVU0UsIERBVEEsIE9SCi0g
KiBQUk9GSVRTOyBPUiBCVVNJTkVTUyBJTlRFUlJVUFRJT04pIEhPV0VWRVIgQ0FVU0VEIEFORCBP
TiBBTlkgVEhFT1JZCi0gKiBPRiBMSUFCSUxJVFksIFdIRVRIRVIgSU4gQ09OVFJBQ1QsIFNUUklD
VCBMSUFCSUxJVFksIE9SIFRPUlQKLSAqIChJTkNMVURJTkcgTkVHTElHRU5DRSBPUiBPVEhFUldJ
U0UpIEFSSVNJTkcgSU4gQU5ZIFdBWSBPVVQgT0YgVEhFIFVTRQotICogT0YgVEhJUyBTT0ZUV0FS
RSwgRVZFTiBJRiBBRFZJU0VEIE9GIFRIRSBQT1NTSUJJTElUWSBPRiBTVUNIIERBTUFHRS4KLSAq
LwotCi0jaWZuZGVmIE1vZHVsZVJlY29yZF9oCi0jZGVmaW5lIE1vZHVsZVJlY29yZF9oCi0KLSNp
bmNsdWRlICJOb2Rlcy5oIgotI2luY2x1ZGUgPHd0Zi9IYXNoTWFwLmg+Ci0jaW5jbHVkZSA8d3Rm
L0xpc3RIYXNoU2V0Lmg+Ci0KLW5hbWVzcGFjZSBKU0MgewotCi0vLyBCYXNlZCBvbiB0aGUgU291
cmNlIFRleHQgTW9kdWxlIFJlY29yZAotLy8gaHR0cDovL3d3dy5lY21hLWludGVybmF0aW9uYWwu
b3JnL2VjbWEtMjYyLzYuMC8jc2VjLXNvdXJjZS10ZXh0LW1vZHVsZS1yZWNvcmRzCi1jbGFzcyBN
b2R1bGVSZWNvcmQgOiBwdWJsaWMgUmVmQ291bnRlZDxNb2R1bGVSZWNvcmQ+IHsKLXB1YmxpYzoK
LSAgICBzdHJ1Y3QgRXhwb3J0RW50cnkgewotICAgICAgICBlbnVtIGNsYXNzIFR5cGUgewotICAg
ICAgICAgICAgTG9jYWwsCi0gICAgICAgICAgICBOYW1lc3BhY2UsCi0gICAgICAgICAgICBJbmRp
cmVjdAotICAgICAgICB9OwotCi0gICAgICAgIHN0YXRpYyBFeHBvcnRFbnRyeSBjcmVhdGVMb2Nh
bChjb25zdCBJZGVudGlmaWVyJiBleHBvcnROYW1lLCBjb25zdCBJZGVudGlmaWVyJiBsb2NhbE5h
bWUsIGNvbnN0IFZhcmlhYmxlRW52aXJvbm1lbnRFbnRyeSYpOwotICAgICAgICBzdGF0aWMgRXhw
b3J0RW50cnkgY3JlYXRlTmFtZXNwYWNlKGNvbnN0IElkZW50aWZpZXImIGV4cG9ydE5hbWUsIGNv
bnN0IElkZW50aWZpZXImIG1vZHVsZU5hbWUpOwotICAgICAgICBzdGF0aWMgRXhwb3J0RW50cnkg
Y3JlYXRlSW5kaXJlY3QoY29uc3QgSWRlbnRpZmllciYgZXhwb3J0TmFtZSwgY29uc3QgSWRlbnRp
ZmllciYgaW1wb3J0TmFtZSwgY29uc3QgSWRlbnRpZmllciYgbW9kdWxlTmFtZSk7Ci0KLSAgICAg
ICAgVHlwZSB0eXBlOwotICAgICAgICBJZGVudGlmaWVyIGV4cG9ydE5hbWU7Ci0gICAgICAgIElk
ZW50aWZpZXIgbW9kdWxlTmFtZTsKLSAgICAgICAgSWRlbnRpZmllciBpbXBvcnROYW1lOwotICAg
ICAgICBJZGVudGlmaWVyIGxvY2FsTmFtZTsKLSAgICAgICAgVmFyaWFibGVFbnZpcm9ubWVudEVu
dHJ5IHZhcmlhYmxlOwotICAgIH07Ci0KLSAgICBzdHJ1Y3QgSW1wb3J0RW50cnkgewotICAgICAg
ICBJZGVudGlmaWVyIG1vZHVsZVJlcXVlc3Q7Ci0gICAgICAgIElkZW50aWZpZXIgaW1wb3J0TmFt
ZTsKLSAgICAgICAgSWRlbnRpZmllciBsb2NhbE5hbWU7Ci0KLSAgICAgICAgYm9vbCBpc05hbWVz
cGFjZShWTSYgdm0pIGNvbnN0Ci0gICAgICAgIHsKLSAgICAgICAgICAgIHJldHVybiBpbXBvcnRO
YW1lID09IHZtLnByb3BlcnR5TmFtZXMtPnRpbWVzSWRlbnRpZmllcjsKLSAgICAgICAgfQotICAg
IH07Ci0KLSAgICB0eXBlZGVmIFdURjo6TGlzdEhhc2hTZXQ8UmVmUHRyPFVuaXF1ZWRTdHJpbmdJ
bXBsPiwgSWRlbnRpZmllclJlcEhhc2g+IE9yZGVyZWRJZGVudGlmaWVyU2V0OwotICAgIHR5cGVk
ZWYgSGFzaE1hcDxSZWZQdHI8VW5pcXVlZFN0cmluZ0ltcGw+LCBJbXBvcnRFbnRyeSwgSWRlbnRp
ZmllclJlcEhhc2gsIEhhc2hUcmFpdHM8UmVmUHRyPFVuaXF1ZWRTdHJpbmdJbXBsPj4+IEltcG9y
dE1hcDsKLSAgICB0eXBlZGVmIEhhc2hNYXA8UmVmUHRyPFVuaXF1ZWRTdHJpbmdJbXBsPiwgRXhw
b3J0RW50cnksIElkZW50aWZpZXJSZXBIYXNoLCBIYXNoVHJhaXRzPFJlZlB0cjxVbmlxdWVkU3Ry
aW5nSW1wbD4+PiBFeHBvcnRNYXA7Ci0KLSAgICBzdGF0aWMgUmVmPE1vZHVsZVJlY29yZD4gY3Jl
YXRlKCkKLSAgICB7Ci0gICAgICAgIHJldHVybiBhZG9wdFJlZigqbmV3IE1vZHVsZVJlY29yZCk7
Ci0gICAgfQotCi0gICAgdm9pZCBhcHBlbmRSZXF1ZXN0ZWRNb2R1bGUoY29uc3QgSWRlbnRpZmll
ciYpOwotICAgIHZvaWQgYWRkU3RhckV4cG9ydEVudHJ5KGNvbnN0IElkZW50aWZpZXImKTsKLSAg
ICB2b2lkIGFkZEltcG9ydEVudHJ5KGNvbnN0IEltcG9ydEVudHJ5Jik7Ci0gICAgdm9pZCBhZGRF
eHBvcnRFbnRyeShjb25zdCBFeHBvcnRFbnRyeSYpOwotCi0gICAgY29uc3QgSW1wb3J0RW50cnkm
IGxvb2tVcEltcG9ydEVudHJ5KGNvbnN0IFJlZlB0cjxVbmlxdWVkU3RyaW5nSW1wbD4mIGxvY2Fs
TmFtZSk7Ci0KLSAgICB2b2lkIGR1bXAoKTsKLQotcHJpdmF0ZToKLSAgICAvLyBNYXAgbG9jYWxO
YW1lIC0+IEltcG9ydEVudHJ5LgotICAgIEltcG9ydE1hcCBtX2ltcG9ydEVudHJpZXM7Ci0KLSAg
ICAvLyBNYXAgZXhwb3J0TmFtZSAtPiBFeHBvcnRFbnRyeS4KLSAgICBFeHBvcnRNYXAgbV9leHBv
cnRFbnRyaWVzOwotCi0gICAgSWRlbnRpZmllclNldCBtX3N0YXJFeHBvcnRFbnRyaWVzOwotCi0g
ICAgLy8gU2F2ZSB0aGUgb2NjdXJyZW5jZSBvcmRlciBzaW5jZSB0aGUgbW9kdWxlIGxvYWRlciBs
b2FkcyBhbmQgcnVucyB0aGUgbW9kdWxlcyBpbiB0aGlzIG9yZGVyLgotICAgIC8vIGh0dHA6Ly93
d3cuZWNtYS1pbnRlcm5hdGlvbmFsLm9yZy9lY21hLTI2Mi82LjAvI3NlYy1tb2R1bGVldmFsdWF0
aW9uCi0gICAgT3JkZXJlZElkZW50aWZpZXJTZXQgbV9yZXF1ZXN0ZWRNb2R1bGVzOwotfTsKLQot
aW5saW5lIHZvaWQgTW9kdWxlUmVjb3JkOjphcHBlbmRSZXF1ZXN0ZWRNb2R1bGUoY29uc3QgSWRl
bnRpZmllciYgbW9kdWxlTmFtZSkKLXsKLSAgICBtX3JlcXVlc3RlZE1vZHVsZXMuYWRkKG1vZHVs
ZU5hbWUuaW1wbCgpKTsKLX0KLQotaW5saW5lIHZvaWQgTW9kdWxlUmVjb3JkOjphZGRJbXBvcnRF
bnRyeShjb25zdCBJbXBvcnRFbnRyeSYgZW50cnkpCi17Ci0gICAgbV9pbXBvcnRFbnRyaWVzLmFk
ZChlbnRyeS5sb2NhbE5hbWUuaW1wbCgpLCBlbnRyeSk7Ci19Ci0KLWlubGluZSB2b2lkIE1vZHVs
ZVJlY29yZDo6YWRkRXhwb3J0RW50cnkoY29uc3QgRXhwb3J0RW50cnkmIGVudHJ5KQotewotICAg
IG1fZXhwb3J0RW50cmllcy5hZGQoZW50cnkuZXhwb3J0TmFtZS5pbXBsKCksIGVudHJ5KTsKLX0K
LQotaW5saW5lIHZvaWQgTW9kdWxlUmVjb3JkOjphZGRTdGFyRXhwb3J0RW50cnkoY29uc3QgSWRl
bnRpZmllciYgbW9kdWxlTmFtZSkKLXsKLSAgICBtX3N0YXJFeHBvcnRFbnRyaWVzLmFkZChtb2R1
bGVOYW1lLmltcGwoKSk7Ci19Ci0KLWlubGluZSBhdXRvIE1vZHVsZVJlY29yZDo6bG9va1VwSW1w
b3J0RW50cnkoY29uc3QgUmVmUHRyPFVuaXF1ZWRTdHJpbmdJbXBsPiYgbG9jYWxOYW1lKSAtPiBj
b25zdCBJbXBvcnRFbnRyeSYKLXsKLSAgICByZXR1cm4gKCptX2ltcG9ydEVudHJpZXMuZmluZChs
b2NhbE5hbWUpKS52YWx1ZTsKLX0KLQotfSAvLyBuYW1lc3BhY2UgSlNDCi0KLSNlbmRpZiAvLyBN
b2R1bGVSZWNvcmRfaApkaWZmIC0tZ2l0IGEvU291cmNlL0phdmFTY3JpcHRDb3JlL3BhcnNlci9O
b2Rlcy5oIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL3BhcnNlci9Ob2Rlcy5oCmluZGV4IGMwMmI0
MmNlY2JhZGExNmVlOWJkZTMzNGY1MmQ5MGFhODg1Y2NjZmEuLjkxOTEzNGMxYjVhNzJlN2ZiYjc0
ODE0ODZhZTNkZWJjNWRkMDRmNDEgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9w
YXJzZXIvTm9kZXMuaAorKysgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvcGFyc2VyL05vZGVzLmgK
QEAgLTc5LDggKzc5LDYgQEAgbmFtZXNwYWNlIEpTQyB7CiAgICAgfTsKICAgICBpbmxpbmUgRmFs
bFRocm91Z2hNb2RlIGludmVydChGYWxsVGhyb3VnaE1vZGUgZmFsbFRocm91Z2hNb2RlKSB7IHJl
dHVybiBzdGF0aWNfY2FzdDxGYWxsVGhyb3VnaE1vZGU+KCFmYWxsVGhyb3VnaE1vZGUpOyB9CiAK
LSAgICB0eXBlZGVmIEhhc2hTZXQ8UmVmUHRyPFVuaXF1ZWRTdHJpbmdJbXBsPiwgSWRlbnRpZmll
clJlcEhhc2g+IElkZW50aWZpZXJTZXQ7Ci0KICAgICBuYW1lc3BhY2UgRGVjbGFyYXRpb25TdGFj
a3MgewogICAgICAgICB0eXBlZGVmIFZlY3RvcjxGdW5jdGlvbk1ldGFkYXRhTm9kZSo+IEZ1bmN0
aW9uU3RhY2s7CiAgICAgfQpkaWZmIC0tZ2l0IGEvU291cmNlL0phdmFTY3JpcHRDb3JlL3BhcnNl
ci9Ob2Rlc0FuYWx5emVNb2R1bGUuY3BwIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL3BhcnNlci9O
b2Rlc0FuYWx5emVNb2R1bGUuY3BwCmluZGV4IDYzM2RlYWVjZTZhZjY2NjU5ZDBlNzZhYzFhYTQx
NjE1OWFiNzVhMzUuLjA3ZDkzMGZmYzYwOTE4OTFmOWZiNzRlNmFmYTdiOGVlNmI3OWIwMmYgMTAw
NjQ0Ci0tLSBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9wYXJzZXIvTm9kZXNBbmFseXplTW9kdWxl
LmNwcAorKysgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvcGFyc2VyL05vZGVzQW5hbHl6ZU1vZHVs
ZS5jcHAKQEAgLTI3LDggKzI3LDggQEAKICNpbmNsdWRlICJOb2Rlcy5oIgogI2luY2x1ZGUgIk5v
ZGVDb25zdHJ1Y3RvcnMuaCIKIAorI2luY2x1ZGUgIkpTTW9kdWxlUmVjb3JkLmgiCiAjaW5jbHVk
ZSAiTW9kdWxlQW5hbHl6ZXIuaCIKLSNpbmNsdWRlICJNb2R1bGVSZWNvcmQuaCIKIAogbmFtZXNw
YWNlIEpTQyB7CiAKQEAgLTQ4LDkgKzQ4LDkgQEAgdm9pZCBTb3VyY2VFbGVtZW50czo6YW5hbHl6
ZU1vZHVsZShNb2R1bGVBbmFseXplciYgYW5hbHl6ZXIpCiAKIHZvaWQgSW1wb3J0RGVjbGFyYXRp
b25Ob2RlOjphbmFseXplTW9kdWxlKE1vZHVsZUFuYWx5emVyJiBhbmFseXplcikKIHsKLSAgICBh
bmFseXplci5tb2R1bGVSZWNvcmQoKS5hcHBlbmRSZXF1ZXN0ZWRNb2R1bGUobV9tb2R1bGVOYW1l
LT5tb2R1bGVOYW1lKCkpOworICAgIGFuYWx5emVyLm1vZHVsZVJlY29yZCgpLT5hcHBlbmRSZXF1
ZXN0ZWRNb2R1bGUobV9tb2R1bGVOYW1lLT5tb2R1bGVOYW1lKCkpOwogICAgIGZvciAoYXV0byog
c3BlY2lmaWVyIDogbV9zcGVjaWZpZXJMaXN0LT5zcGVjaWZpZXJzKCkpIHsKLSAgICAgICAgYW5h
bHl6ZXIubW9kdWxlUmVjb3JkKCkuYWRkSW1wb3J0RW50cnkoTW9kdWxlUmVjb3JkOjpJbXBvcnRF
bnRyeSB7CisgICAgICAgIGFuYWx5emVyLm1vZHVsZVJlY29yZCgpLT5hZGRJbXBvcnRFbnRyeShK
U01vZHVsZVJlY29yZDo6SW1wb3J0RW50cnkgewogICAgICAgICAgICAgbV9tb2R1bGVOYW1lLT5t
b2R1bGVOYW1lKCksCiAgICAgICAgICAgICBzcGVjaWZpZXItPmltcG9ydGVkTmFtZSgpLAogICAg
ICAgICAgICAgc3BlY2lmaWVyLT5sb2NhbE5hbWUoKQpAQCAtNjAsOCArNjAsOCBAQCB2b2lkIElt
cG9ydERlY2xhcmF0aW9uTm9kZTo6YW5hbHl6ZU1vZHVsZShNb2R1bGVBbmFseXplciYgYW5hbHl6
ZXIpCiAKIHZvaWQgRXhwb3J0QWxsRGVjbGFyYXRpb25Ob2RlOjphbmFseXplTW9kdWxlKE1vZHVs
ZUFuYWx5emVyJiBhbmFseXplcikKIHsKLSAgICBhbmFseXplci5tb2R1bGVSZWNvcmQoKS5hcHBl
bmRSZXF1ZXN0ZWRNb2R1bGUobV9tb2R1bGVOYW1lLT5tb2R1bGVOYW1lKCkpOwotICAgIGFuYWx5
emVyLm1vZHVsZVJlY29yZCgpLmFkZFN0YXJFeHBvcnRFbnRyeShtX21vZHVsZU5hbWUtPm1vZHVs
ZU5hbWUoKSk7CisgICAgYW5hbHl6ZXIubW9kdWxlUmVjb3JkKCktPmFwcGVuZFJlcXVlc3RlZE1v
ZHVsZShtX21vZHVsZU5hbWUtPm1vZHVsZU5hbWUoKSk7CisgICAgYW5hbHl6ZXIubW9kdWxlUmVj
b3JkKCktPmFkZFN0YXJFeHBvcnRFbnRyeShtX21vZHVsZU5hbWUtPm1vZHVsZU5hbWUoKSk7CiB9
CiAKIHZvaWQgRXhwb3J0RGVmYXVsdERlY2xhcmF0aW9uTm9kZTo6YW5hbHl6ZU1vZHVsZShNb2R1
bGVBbmFseXplciYgYW5hbHl6ZXIpCkBAIC03Niw3ICs3Niw3IEBAIHZvaWQgRXhwb3J0TG9jYWxE
ZWNsYXJhdGlvbk5vZGU6OmFuYWx5emVNb2R1bGUoTW9kdWxlQW5hbHl6ZXImKQogdm9pZCBFeHBv
cnROYW1lZERlY2xhcmF0aW9uTm9kZTo6YW5hbHl6ZU1vZHVsZShNb2R1bGVBbmFseXplciYgYW5h
bHl6ZXIpCiB7CiAgICAgaWYgKG1fbW9kdWxlTmFtZSkKLSAgICAgICAgYW5hbHl6ZXIubW9kdWxl
UmVjb3JkKCkuYXBwZW5kUmVxdWVzdGVkTW9kdWxlKG1fbW9kdWxlTmFtZS0+bW9kdWxlTmFtZSgp
KTsKKyAgICAgICAgYW5hbHl6ZXIubW9kdWxlUmVjb3JkKCktPmFwcGVuZFJlcXVlc3RlZE1vZHVs
ZShtX21vZHVsZU5hbWUtPm1vZHVsZU5hbWUoKSk7CiAKICAgICBmb3IgKGF1dG8qIHNwZWNpZmll
ciA6IG1fc3BlY2lmaWVyTGlzdC0+c3BlY2lmaWVycygpKSB7CiAgICAgICAgIGlmIChtX21vZHVs
ZU5hbWUpIHsKQEAgLTg0LDcgKzg0LDcgQEAgdm9pZCBFeHBvcnROYW1lZERlY2xhcmF0aW9uTm9k
ZTo6YW5hbHl6ZU1vZHVsZShNb2R1bGVBbmFseXplciYgYW5hbHl6ZXIpCiAgICAgICAgICAgICAv
LwogICAgICAgICAgICAgLy8gSW4gdGhpcyBjYXNlLCBubyBsb2NhbCB2YXJpYWJsZSBuYW1lcyBh
cmUgaW1wb3J0ZWQgaW50byB0aGUgY3VycmVudCBtb2R1bGUuCiAgICAgICAgICAgICAvLyAidiIg
aW5kaXJlY3RseSBwb2ludHMgdGhlIGJpbmRpbmcgaW4gIm1vZCIuCi0gICAgICAgICAgICBhbmFs
eXplci5tb2R1bGVSZWNvcmQoKS5hZGRFeHBvcnRFbnRyeShNb2R1bGVSZWNvcmQ6OkV4cG9ydEVu
dHJ5OjpjcmVhdGVJbmRpcmVjdChzcGVjaWZpZXItPmV4cG9ydGVkTmFtZSgpLCBzcGVjaWZpZXIt
PmxvY2FsTmFtZSgpLCBtX21vZHVsZU5hbWUtPm1vZHVsZU5hbWUoKSkpOworICAgICAgICAgICAg
YW5hbHl6ZXIubW9kdWxlUmVjb3JkKCktPmFkZEV4cG9ydEVudHJ5KEpTTW9kdWxlUmVjb3JkOjpF
eHBvcnRFbnRyeTo6Y3JlYXRlSW5kaXJlY3Qoc3BlY2lmaWVyLT5leHBvcnRlZE5hbWUoKSwgc3Bl
Y2lmaWVyLT5sb2NhbE5hbWUoKSwgbV9tb2R1bGVOYW1lLT5tb2R1bGVOYW1lKCkpKTsKICAgICAg
ICAgICAgIGNvbnRpbnVlOwogICAgICAgICB9CiAKZGlmZiAtLWdpdCBhL1NvdXJjZS9KYXZhU2Ny
aXB0Q29yZS9ydW50aW1lL0NvbW1vbklkZW50aWZpZXJzLmNwcCBiL1NvdXJjZS9KYXZhU2NyaXB0
Q29yZS9ydW50aW1lL0NvbW1vbklkZW50aWZpZXJzLmNwcAppbmRleCBmYzZlNjJjYTA0NWUzNjI5
Y2YyYWQzYjZiZmNiNzNkNWRkZmYwY2UxLi5hYTM5MmNlYjhkMWEwNjVhOTI1MmFhNzc0NGRhYjhk
OWIxNjA1NGU5IDEwMDY0NAotLS0gYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9Db21t
b25JZGVudGlmaWVycy5jcHAKKysrIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvQ29t
bW9uSWRlbnRpZmllcnMuY3BwCkBAIC02OCwxNCArNjgsMTQgQEAgYm9vbCBDb21tb25JZGVudGlm
aWVyczo6aXNQcml2YXRlTmFtZShjb25zdCBJZGVudGlmaWVyJiBpZGVudCkgY29uc3QKICAgICBy
ZXR1cm4gbV9idWlsdGluTmFtZXMtPmlzUHJpdmF0ZU5hbWUoaWRlbnQpOwogfQogCi1jb25zdCBJ
ZGVudGlmaWVyKiBDb21tb25JZGVudGlmaWVyczo6Z2V0UHJpdmF0ZU5hbWUoY29uc3QgSWRlbnRp
ZmllciYgaWRlbnQpIGNvbnN0Citjb25zdCBJZGVudGlmaWVyKiBDb21tb25JZGVudGlmaWVyczo6
bG9va1VwUHJpdmF0ZU5hbWUoY29uc3QgSWRlbnRpZmllciYgaWRlbnQpIGNvbnN0CiB7Ci0gICAg
cmV0dXJuIG1fYnVpbHRpbk5hbWVzLT5nZXRQcml2YXRlTmFtZShpZGVudCk7CisgICAgcmV0dXJu
IG1fYnVpbHRpbk5hbWVzLT5sb29rVXBQcml2YXRlTmFtZShpZGVudCk7CiB9CiAgICAgCi1JZGVu
dGlmaWVyIENvbW1vbklkZW50aWZpZXJzOjpnZXRQdWJsaWNOYW1lKGNvbnN0IElkZW50aWZpZXIm
IGlkZW50KSBjb25zdAorSWRlbnRpZmllciBDb21tb25JZGVudGlmaWVyczo6bG9va1VwUHVibGlj
TmFtZShjb25zdCBJZGVudGlmaWVyJiBpZGVudCkgY29uc3QKIHsKLSAgICByZXR1cm4gbV9idWls
dGluTmFtZXMtPmdldFB1YmxpY05hbWUoaWRlbnQpOworICAgIHJldHVybiBtX2J1aWx0aW5OYW1l
cy0+bG9va1VwUHVibGljTmFtZShpZGVudCk7CiB9CiAKIApkaWZmIC0tZ2l0IGEvU291cmNlL0ph
dmFTY3JpcHRDb3JlL3J1bnRpbWUvQ29tbW9uSWRlbnRpZmllcnMuaCBiL1NvdXJjZS9KYXZhU2Ny
aXB0Q29yZS9ydW50aW1lL0NvbW1vbklkZW50aWZpZXJzLmgKaW5kZXggMzQ0N2IzOThmZDA2MTgw
NTkwOWU2ZjAyMmUzZDY2NTIzYmFjNDY5OC4uZDU5ZDQ0NDhkMjkzYTE0NzVjMDFiN2M3ZTY2YWVm
Nzk2MmViMTI2ZCAxMDA2NDQKLS0tIGEvU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvQ29t
bW9uSWRlbnRpZmllcnMuaAorKysgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9Db21t
b25JZGVudGlmaWVycy5oCkBAIC00Miw2ICs0Miw3IEBACiAgICAgbWFjcm8oSW5maW5pdHkpIFwK
ICAgICBtYWNybyhJbnRsKSBcCiAgICAgbWFjcm8oSlNPTikgXAorICAgIG1hY3JvKExvYWRlcikg
XAogICAgIG1hY3JvKE1hcClcCiAgICAgbWFjcm8oTWFwSXRlcmF0b3IpXAogICAgIG1hY3JvKE1h
dGgpIFwKQEAgLTI4MSw2ICsyODIsNyBAQAogICAgIG1hY3JvKE51bWJlcikgXAogICAgIG1hY3Jv
KEFycmF5KSBcCiAgICAgbWFjcm8oU3RyaW5nKSBcCisgICAgbWFjcm8oTWFwKSBcCiAgICAgbWFj
cm8oUHJvbWlzZSkgXAogICAgIG1hY3JvKGFicykgXAogICAgIG1hY3JvKGZsb29yKSBcCkBAIC0z
MDIsNiArMzA0LDggQEAKICAgICBtYWNybyhjYXBhYmlsaXRpZXMpIFwKICAgICBtYWNybyhzdGFy
RGVmYXVsdCkgXAogICAgIG1hY3JvKEluc3BlY3Rvckluc3RydW1lbnRhdGlvbikgXAorICAgIG1h
Y3JvKGdldCkgXAorICAgIG1hY3JvKHNldCkgXAogCiAKIG5hbWVzcGFjZSBKU0MgewpAQCAtMzQ4
LDggKzM1Miw4IEBAIG5hbWVzcGFjZSBKU0MgewogICAgICAgICBib29sIGlzUHJpdmF0ZU5hbWUo
VW5pcXVlZFN0cmluZ0ltcGwmIHVpZCkgY29uc3Q7CiAgICAgICAgIGJvb2wgaXNQcml2YXRlTmFt
ZShjb25zdCBJZGVudGlmaWVyJikgY29uc3Q7CiAKLSAgICAgICAgY29uc3QgSWRlbnRpZmllciog
Z2V0UHJpdmF0ZU5hbWUoY29uc3QgSWRlbnRpZmllciYpIGNvbnN0OwotICAgICAgICBJZGVudGlm
aWVyIGdldFB1YmxpY05hbWUoY29uc3QgSWRlbnRpZmllciYpIGNvbnN0OworICAgICAgICBjb25z
dCBJZGVudGlmaWVyKiBsb29rVXBQcml2YXRlTmFtZShjb25zdCBJZGVudGlmaWVyJikgY29uc3Q7
CisgICAgICAgIElkZW50aWZpZXIgbG9va1VwUHVibGljTmFtZShjb25zdCBJZGVudGlmaWVyJikg
Y29uc3Q7CiAKICAgICAgICAgY29uc3QgQnl0ZWNvZGVJbnRyaW5zaWNSZWdpc3RyeSYgYnl0ZWNv
ZGVJbnRyaW5zaWNSZWdpc3RyeSgpIGNvbnN0IHsgcmV0dXJuIG1fYnl0ZWNvZGVJbnRyaW5zaWNS
ZWdpc3RyeTsgfQogCmRpZmYgLS1naXQgYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9D
b21wbGV0aW9uLmNwcCBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL0NvbXBsZXRpb24u
Y3BwCmluZGV4IGEzZGFlZTYwMzQzYWMxNGIxNGFkMDMwNGViZGM5YTI1YWFiMTU3MjMuLjJmMjk3
YTE5MDRiNGQxOTdjN2I3MDBmYTViOTU0YjEyNmU3MzZkNTQgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9K
YXZhU2NyaXB0Q29yZS9ydW50aW1lL0NvbXBsZXRpb24uY3BwCisrKyBiL1NvdXJjZS9KYXZhU2Ny
aXB0Q29yZS9ydW50aW1lL0NvbXBsZXRpb24uY3BwCkBAIC0yOCwxMSArMjgsMTIgQEAKICNpbmNs
dWRlICJEZWJ1Z2dlci5oIgogI2luY2x1ZGUgIkV4Y2VwdGlvbi5oIgogI2luY2x1ZGUgIkludGVy
cHJldGVyLmgiCisjaW5jbHVkZSAiSlNDSW5saW5lcy5oIgogI2luY2x1ZGUgIkpTR2xvYmFsT2Jq
ZWN0LmgiCiAjaW5jbHVkZSAiSlNMb2NrLmgiCi0jaW5jbHVkZSAiSlNDSW5saW5lcy5oIgorI2lu
Y2x1ZGUgIkpTTW9kdWxlUmVjb3JkLmgiCiAjaW5jbHVkZSAiTW9kdWxlQW5hbHl6ZXIuaCIKLSNp
bmNsdWRlICJNb2R1bGVSZWNvcmQuaCIKKyNpbmNsdWRlICJNb2R1bGVMb2FkZXJPYmplY3QuaCIK
ICNpbmNsdWRlICJQYXJzZXIuaCIKICNpbmNsdWRlIDx3dGYvV1RGVGhyZWFkRGF0YS5oPgogCkBA
IC02Myw4ICs2NCw5IEBAIGJvb2wgY2hlY2tTeW50YXgoVk0mIHZtLCBjb25zdCBTb3VyY2VDb2Rl
JiBzb3VyY2UsIFBhcnNlckVycm9yJiBlcnJvcikKICAgICAgICAgSlNQYXJzZXJTdHJpY3RNb2Rl
OjpOb3RTdHJpY3QsIFNvdXJjZVBhcnNlTW9kZTo6UHJvZ3JhbU1vZGUsIGVycm9yKTsKIH0KIAot
Ym9vbCBjaGVja01vZHVsZVN5bnRheChWTSYgdm0sIGNvbnN0IFNvdXJjZUNvZGUmIHNvdXJjZSwg
UGFyc2VyRXJyb3ImIGVycm9yKQorYm9vbCBjaGVja01vZHVsZVN5bnRheChFeGVjU3RhdGUqIGV4
ZWMsIGNvbnN0IFNvdXJjZUNvZGUmIHNvdXJjZSwgUGFyc2VyRXJyb3ImIGVycm9yKQogeworICAg
IFZNJiB2bSA9IGV4ZWMtPnZtKCk7CiAgICAgSlNMb2NrSG9sZGVyIGxvY2sodm0pOwogICAgIFJF
TEVBU0VfQVNTRVJUKHZtLmF0b21pY1N0cmluZ1RhYmxlKCkgPT0gd3RmVGhyZWFkRGF0YSgpLmF0
b21pY1N0cmluZ1RhYmxlKCkpOwogICAgIHN0ZDo6dW5pcXVlX3B0cjxNb2R1bGVQcm9ncmFtTm9k
ZT4gbW9kdWxlUHJvZ3JhbU5vZGUgPSBwYXJzZTxNb2R1bGVQcm9ncmFtTm9kZT4oCkBAIC03Myw3
ICs3NSw3IEBAIGJvb2wgY2hlY2tNb2R1bGVTeW50YXgoVk0mIHZtLCBjb25zdCBTb3VyY2VDb2Rl
JiBzb3VyY2UsIFBhcnNlckVycm9yJiBlcnJvcikKICAgICBpZiAoIW1vZHVsZVByb2dyYW1Ob2Rl
KQogICAgICAgICByZXR1cm4gZmFsc2U7CiAKLSAgICBNb2R1bGVBbmFseXplciBtb2R1bGVBbmFs
eXplcih2bSwgbW9kdWxlUHJvZ3JhbU5vZGUtPnZhckRlY2xhcmF0aW9ucygpLCBtb2R1bGVQcm9n
cmFtTm9kZS0+bGV4aWNhbFZhcmlhYmxlcygpKTsKKyAgICBNb2R1bGVBbmFseXplciBtb2R1bGVB
bmFseXplcihleGVjLCBtb2R1bGVQcm9ncmFtTm9kZS0+dmFyRGVjbGFyYXRpb25zKCksIG1vZHVs
ZVByb2dyYW1Ob2RlLT5sZXhpY2FsVmFyaWFibGVzKCkpOwogICAgIG1vZHVsZUFuYWx5emVyLmFu
YWx5emUoKm1vZHVsZVByb2dyYW1Ob2RlKTsKICAgICByZXR1cm4gdHJ1ZTsKIH0KQEAgLTEwOCw0
ICsxMTAsNDAgQEAgSlNWYWx1ZSBldmFsdWF0ZShFeGVjU3RhdGUqIGV4ZWMsIGNvbnN0IFNvdXJj
ZUNvZGUmIHNvdXJjZSwgSlNWYWx1ZSB0aGlzVmFsdWUsIE4KICAgICByZXR1cm4gcmVzdWx0Owog
fQogCit2b2lkIGV2YWx1YXRlTW9kdWxlKEV4ZWNTdGF0ZSogZXhlYywgY29uc3QgU291cmNlQ29k
ZSYgc291cmNlLCBOYWtlZFB0cjxFeGNlcHRpb24+JiByZXR1cm5lZEV4Y2VwdGlvbikKK3sKKyAg
ICBKU0xvY2tIb2xkZXIgbG9jayhleGVjKTsKKyAgICBSRUxFQVNFX0FTU0VSVChleGVjLT52bSgp
LmF0b21pY1N0cmluZ1RhYmxlKCkgPT0gd3RmVGhyZWFkRGF0YSgpLmF0b21pY1N0cmluZ1RhYmxl
KCkpOworICAgIFJFTEVBU0VfQVNTRVJUKCFleGVjLT52bSgpLmlzQ29sbGVjdG9yQnVzeSgpKTsK
KworICAgIENvZGVQcm9maWxpbmcgcHJvZmlsZShzb3VyY2UpOworCisgICAgSlNHbG9iYWxPYmpl
Y3QqIGdsb2JhbE9iamVjdCA9IGV4ZWMtPnZtRW50cnlHbG9iYWxPYmplY3QoKTsKKworICAgIC8v
IEdlbmVyYXRlIHRoZSB1bmlxdWUga2V5IGZvciB0aGUgc291cmNlLXByb3ZpZGVkIG1vZHVsZS4K
KyAgICBTeW1ib2wqIGtleSA9IFN5bWJvbDo6Y3JlYXRlKGV4ZWMtPnZtKCkpOworCisgICAgTW9k
dWxlTG9hZGVyT2JqZWN0KiBtb2R1bGVMb2FkZXIgPSBnbG9iYWxPYmplY3QtPm1vZHVsZUxvYWRl
cigpOworCisgICAgLy8gSW5zZXJ0IHRoZSBnaXZlbiBzb3VyY2UgY29kZSB0byB0aGUgTW9kdWxl
TG9hZGVyIHJlZ2lzdHJ5IGFzIHRoZSBmZXRjaGVkIHJlZ2lzdHJ5IGVudHJ5LgorICAgIG1vZHVs
ZUxvYWRlci0+cHJvdmlkZShleGVjLCBrZXksIE1vZHVsZUxvYWRlck9iamVjdDo6U3RhdHVzOjpG
ZXRjaCwgc291cmNlLnRvU3RyaW5nKCkpOworICAgIGlmIChleGVjLT5oYWRFeGNlcHRpb24oKSkg
eworICAgICAgICByZXR1cm5lZEV4Y2VwdGlvbiA9IGV4ZWMtPmV4Y2VwdGlvbigpOworICAgICAg
ICBleGVjLT5jbGVhckV4Y2VwdGlvbigpOworICAgICAgICByZXR1cm47CisgICAgfQorCisgICAg
Ly8gRklYTUU6IE5vdywgd2UgZG9uJ3QgaW1wbGVtZW50IHRoZSBsaW5raW5nIHBoYXNlIHlldC4K
KyAgICAvLyBTbyBoZXJlLCB3ZSBqdXN0IGNhbGwgcmVxdWVzdEluc3RhbnRpYXRlQWxsIHRvIG9u
bHkgcGVyZm9ybSB0aGUgbW9kdWxlIGxvYWRpbmcuCisgICAgLy8gQXQgbGFzdCwgaXQgc2hvdWxk
IGJlIHJlcGxhY2VkIHdpdGggcmVxdWVzdFJlYWR5LgorICAgIG1vZHVsZUxvYWRlci0+cmVxdWVz
dEluc3RhbnRpYXRlQWxsKGV4ZWMsIGtleSk7CisKKyAgICAvLyBGSVhNRTogV2Ugc2hvdWxkIGFs
c28gaGFuZGxlIHRoZSBhc3luY2hyb25vdXMgU3ludGF4IEVycm9ycyB0aGF0IHdpbGwgYmUgZGVs
aXZlcmVkIGJ5IHRoZSByZWplY3RlZCBwcm9taXNlLgorICAgIGlmIChleGVjLT5oYWRFeGNlcHRp
b24oKSkgeworICAgICAgICByZXR1cm5lZEV4Y2VwdGlvbiA9IGV4ZWMtPmV4Y2VwdGlvbigpOwor
ICAgICAgICBleGVjLT5jbGVhckV4Y2VwdGlvbigpOworICAgICAgICByZXR1cm47CisgICAgfQor
fQorCiB9IC8vIG5hbWVzcGFjZSBKU0MKZGlmZiAtLWdpdCBhL1NvdXJjZS9KYXZhU2NyaXB0Q29y
ZS9ydW50aW1lL0NvbXBsZXRpb24uaCBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL0Nv
bXBsZXRpb24uaAppbmRleCA3MDJlZDlmYWIwYzc5MWZhZTE1NTA1NjI3YmM3MzFhZGJhZTNhNWZk
Li5kZTMyZDYzZTYzYWM3Y2VkNDlkODE3ZTIzYzBiODc4ODY3YTA1YTY5IDEwMDY0NAotLS0gYS9T
b3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9Db21wbGV0aW9uLmgKKysrIGIvU291cmNlL0ph
dmFTY3JpcHRDb3JlL3J1bnRpbWUvQ29tcGxldGlvbi5oCkBAIC0zNywxMyArMzcsMTQgQEAgY2xh
c3MgVk07CiAKIEpTX0VYUE9SVF9QUklWQVRFIGJvb2wgY2hlY2tTeW50YXgoVk0mLCBjb25zdCBT
b3VyY2VDb2RlJiwgUGFyc2VyRXJyb3ImKTsKIEpTX0VYUE9SVF9QUklWQVRFIGJvb2wgY2hlY2tT
eW50YXgoRXhlY1N0YXRlKiwgY29uc3QgU291cmNlQ29kZSYsIEpTVmFsdWUqIGV4Y2VwdGlvbiA9
IDApOwotSlNfRVhQT1JUX1BSSVZBVEUgYm9vbCBjaGVja01vZHVsZVN5bnRheChWTSYsIGNvbnN0
IFNvdXJjZUNvZGUmLCBQYXJzZXJFcnJvciYpOworSlNfRVhQT1JUX1BSSVZBVEUgYm9vbCBjaGVj
a01vZHVsZVN5bnRheChFeGVjU3RhdGUqLCBjb25zdCBTb3VyY2VDb2RlJiwgUGFyc2VyRXJyb3Im
KTsKIEpTX0VYUE9SVF9QUklWQVRFIEpTVmFsdWUgZXZhbHVhdGUoRXhlY1N0YXRlKiwgY29uc3Qg
U291cmNlQ29kZSYsIEpTVmFsdWUgdGhpc1ZhbHVlLCBOYWtlZFB0cjxFeGNlcHRpb24+JiByZXR1
cm5lZEV4Y2VwdGlvbik7CiBpbmxpbmUgSlNWYWx1ZSBldmFsdWF0ZShFeGVjU3RhdGUqIGV4ZWMs
IGNvbnN0IFNvdXJjZUNvZGUmIHNvdXJjZUNvZGUsIEpTVmFsdWUgdGhpc1ZhbHVlID0gSlNWYWx1
ZSgpKQogewogICAgIE5ha2VkUHRyPEV4Y2VwdGlvbj4gdW51c2VkOwogICAgIHJldHVybiBldmFs
dWF0ZShleGVjLCBzb3VyY2VDb2RlLCB0aGlzVmFsdWUsIHVudXNlZCk7CiB9CitKU19FWFBPUlRf
UFJJVkFURSB2b2lkIGV2YWx1YXRlTW9kdWxlKEV4ZWNTdGF0ZSosIGNvbnN0IFNvdXJjZUNvZGUm
LCBOYWtlZFB0cjxFeGNlcHRpb24+JiByZXR1cm5lZEV4Y2VwdGlvbik7CiAKIH0gLy8gbmFtZXNw
YWNlIEpTQwogCmRpZmYgLS1naXQgYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9FeGNl
cHRpb25IZWxwZXJzLmNwcCBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL0V4Y2VwdGlv
bkhlbHBlcnMuY3BwCmluZGV4IDQ2YzBjZWY5MzkyYTRhZDdjMGIwMGE5YTA4NDdlMGI5YWVmYzVm
YWUuLmI3ODU5YmZlM2U4ZWFmZDFlYzY0YWI1ZmJmZWFmMjU3MmFkMjdjMTcgMTAwNjQ0Ci0tLSBh
L1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL0V4Y2VwdGlvbkhlbHBlcnMuY3BwCisrKyBi
L1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL0V4Y2VwdGlvbkhlbHBlcnMuY3BwCkBAIC03
Myw3ICs3Myw3IEBAIEpTT2JqZWN0KiBjcmVhdGVTdGFja092ZXJmbG93RXJyb3IoRXhlY1N0YXRl
KiBleGVjKQogSlNPYmplY3QqIGNyZWF0ZVVuZGVmaW5lZFZhcmlhYmxlRXJyb3IoRXhlY1N0YXRl
KiBleGVjLCBjb25zdCBJZGVudGlmaWVyJiBpZGVudCkKIHsKICAgICBpZiAoZXhlYy0+cHJvcGVy
dHlOYW1lcygpLmlzUHJpdmF0ZU5hbWUoaWRlbnQpKSB7Ci0gICAgICAgIFN0cmluZyBtZXNzYWdl
KG1ha2VTdHJpbmcoIkNhbid0IGZpbmQgcHJpdmF0ZSB2YXJpYWJsZTogQCIsIGV4ZWMtPnByb3Bl
cnR5TmFtZXMoKS5nZXRQdWJsaWNOYW1lKGlkZW50KS5zdHJpbmcoKSkpOworICAgICAgICBTdHJp
bmcgbWVzc2FnZShtYWtlU3RyaW5nKCJDYW4ndCBmaW5kIHByaXZhdGUgdmFyaWFibGU6IEAiLCBl
eGVjLT5wcm9wZXJ0eU5hbWVzKCkubG9va1VwUHVibGljTmFtZShpZGVudCkuc3RyaW5nKCkpKTsK
ICAgICAgICAgcmV0dXJuIGNyZWF0ZVJlZmVyZW5jZUVycm9yKGV4ZWMsIG1lc3NhZ2UpOwogICAg
IH0KICAgICBTdHJpbmcgbWVzc2FnZShtYWtlU3RyaW5nKCJDYW4ndCBmaW5kIHZhcmlhYmxlOiAi
LCBpZGVudC5zdHJpbmcoKSkpOwpkaWZmIC0tZ2l0IGEvU291cmNlL0phdmFTY3JpcHRDb3JlL3J1
bnRpbWUvSWRlbnRpZmllci5oIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvSWRlbnRp
Zmllci5oCmluZGV4IDYxZGU2NTM2YTZmYTRjMjlhY2E0ZGYxNGI3ZDZmZWM0ZDJhNTAzZTYuLjg4
OWNhNmIyMmU0Mzc5MzYyZjI1ODA1ZmQwNWU2Zjg0YWE2N2JiYTYgMTAwNjQ0Ci0tLSBhL1NvdXJj
ZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL0lkZW50aWZpZXIuaAorKysgYi9Tb3VyY2UvSmF2YVNj
cmlwdENvcmUvcnVudGltZS9JZGVudGlmaWVyLmgKQEAgLTI5Miw2ICsyOTIsNyBAQCBzdHJ1Y3Qg
SWRlbnRpZmllck1hcEluZGV4SGFzaFRyYWl0cyA6IEhhc2hUcmFpdHM8aW50PiB7CiAgICAgc3Rh
dGljIGNvbnN0IGJvb2wgZW1wdHlWYWx1ZUlzWmVybyA9IGZhbHNlOwogfTsKIAordHlwZWRlZiBI
YXNoU2V0PFJlZlB0cjxVbmlxdWVkU3RyaW5nSW1wbD4sIElkZW50aWZpZXJSZXBIYXNoPiBJZGVu
dGlmaWVyU2V0OwogdHlwZWRlZiBIYXNoTWFwPFJlZlB0cjxVbmlxdWVkU3RyaW5nSW1wbD4sIGlu
dCwgSWRlbnRpZmllclJlcEhhc2gsIEhhc2hUcmFpdHM8UmVmUHRyPFVuaXF1ZWRTdHJpbmdJbXBs
Pj4sIElkZW50aWZpZXJNYXBJbmRleEhhc2hUcmFpdHM+IElkZW50aWZpZXJNYXA7CiB0eXBlZGVm
IEhhc2hNYXA8VW5pcXVlZFN0cmluZ0ltcGwqLCBpbnQsIElkZW50aWZpZXJSZXBIYXNoLCBIYXNo
VHJhaXRzPFVuaXF1ZWRTdHJpbmdJbXBsKj4sIElkZW50aWZpZXJNYXBJbmRleEhhc2hUcmFpdHM+
IEJvcnJvd2VkSWRlbnRpZmllck1hcDsKIApkaWZmIC0tZ2l0IGEvU291cmNlL0phdmFTY3JpcHRD
b3JlL3J1bnRpbWUvSlNHbG9iYWxPYmplY3QuY3BwIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL3J1
bnRpbWUvSlNHbG9iYWxPYmplY3QuY3BwCmluZGV4IDI1YWNlOTI2OTE4MGFkZDczYzRlYWU5OGQz
ODk1NzhlNDZhZWI1NDQuLmY1N2MwN2JiNGM3YWJjOWZkMzUzMzFmOTZmMjk4NmEyOWYxNmVkOGEg
MTAwNjQ0Ci0tLSBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL0pTR2xvYmFsT2JqZWN0
LmNwcAorKysgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9KU0dsb2JhbE9iamVjdC5j
cHAKQEAgLTgwLDYgKzgwLDcgQEAKICNpbmNsdWRlICJKU0xvY2suaCIKICNpbmNsdWRlICJKU01h
cC5oIgogI2luY2x1ZGUgIkpTTWFwSXRlcmF0b3IuaCIKKyNpbmNsdWRlICJKU01vZHVsZVJlY29y
ZC5oIgogI2luY2x1ZGUgIkpTT05PYmplY3QuaCIKICNpbmNsdWRlICJKU1Byb21pc2UuaCIKICNp
bmNsdWRlICJKU1Byb21pc2VDb25zdHJ1Y3Rvci5oIgpAQCAtMTAzLDYgKzEwNCw3IEBACiAjaW5j
bHVkZSAiTWFwUHJvdG90eXBlLmgiCiAjaW5jbHVkZSAiTWF0aE9iamVjdC5oIgogI2luY2x1ZGUg
Ik1pY3JvdGFzay5oIgorI2luY2x1ZGUgIk1vZHVsZUxvYWRlck9iamVjdC5oIgogI2luY2x1ZGUg
Ik5hdGl2ZUVycm9yQ29uc3RydWN0b3IuaCIKICNpbmNsdWRlICJOYXRpdmVFcnJvclByb3RvdHlw
ZS5oIgogI2luY2x1ZGUgIk51bGxHZXR0ZXJGdW5jdGlvbi5oIgpAQCAtMTU2LDcgKzE1OCw3IEBA
IG5hbWVzcGFjZSBKU0MgewogCiBjb25zdCBDbGFzc0luZm8gSlNHbG9iYWxPYmplY3Q6OnNfaW5m
byA9IHsgIkdsb2JhbE9iamVjdCIsICZCYXNlOjpzX2luZm8sICZnbG9iYWxPYmplY3RUYWJsZSwg
Q1JFQVRFX01FVEhPRF9UQUJMRShKU0dsb2JhbE9iamVjdCkgfTsKIAotY29uc3QgR2xvYmFsT2Jq
ZWN0TWV0aG9kVGFibGUgSlNHbG9iYWxPYmplY3Q6OnNfZ2xvYmFsT2JqZWN0TWV0aG9kVGFibGUg
PSB7ICZhbGxvd3NBY2Nlc3NGcm9tLCAmc3VwcG9ydHNQcm9maWxpbmcsICZzdXBwb3J0c1JpY2hT
b3VyY2VJbmZvLCAmc2hvdWxkSW50ZXJydXB0U2NyaXB0LCAmamF2YVNjcmlwdFJ1bnRpbWVGbGFn
cywgbnVsbHB0ciwgJnNob3VsZEludGVycnVwdFNjcmlwdEJlZm9yZVRpbWVvdXQgfTsKK2NvbnN0
IEdsb2JhbE9iamVjdE1ldGhvZFRhYmxlIEpTR2xvYmFsT2JqZWN0OjpzX2dsb2JhbE9iamVjdE1l
dGhvZFRhYmxlID0geyAmYWxsb3dzQWNjZXNzRnJvbSwgJnN1cHBvcnRzUHJvZmlsaW5nLCAmc3Vw
cG9ydHNSaWNoU291cmNlSW5mbywgJnNob3VsZEludGVycnVwdFNjcmlwdCwgJmphdmFTY3JpcHRS
dW50aW1lRmxhZ3MsIG51bGxwdHIsICZzaG91bGRJbnRlcnJ1cHRTY3JpcHRCZWZvcmVUaW1lb3V0
LCBudWxscHRyLCBudWxscHRyLCBudWxscHRyLCBudWxscHRyIH07CiAKIC8qIFNvdXJjZSBmb3Ig
SlNHbG9iYWxPYmplY3QubHV0LmgKIEBiZWdpbiBnbG9iYWxPYmplY3RUYWJsZQpAQCAtMzE1LDYg
KzMxNyw3IEBAIHZvaWQgSlNHbG9iYWxPYmplY3Q6OmluaXQoVk0mIHZtKQogICAgIG1fb3V0T2ZC
YW5kQXJndW1lbnRzU3RydWN0dXJlLnNldCh2bSwgdGhpcywgQ2xvbmVkQXJndW1lbnRzOjpjcmVh
dGVTdHJ1Y3R1cmUodm0sIHRoaXMsIG1fb2JqZWN0UHJvdG90eXBlLmdldCgpKSk7CiAgICAgbV9j
YWxsYmFja0NvbnN0cnVjdG9yU3RydWN0dXJlLnNldCh2bSwgdGhpcywgSlNDYWxsYmFja0NvbnN0
cnVjdG9yOjpjcmVhdGVTdHJ1Y3R1cmUodm0sIHRoaXMsIG1fb2JqZWN0UHJvdG90eXBlLmdldCgp
KSk7CiAgICAgbV9jYWxsYmFja09iamVjdFN0cnVjdHVyZS5zZXQodm0sIHRoaXMsIEpTQ2FsbGJh
Y2tPYmplY3Q8SlNEZXN0cnVjdGlibGVPYmplY3Q+OjpjcmVhdGVTdHJ1Y3R1cmUodm0sIHRoaXMs
IG1fb2JqZWN0UHJvdG90eXBlLmdldCgpKSk7CisKICNpZiBKU0NfT0JKQ19BUElfRU5BQkxFRAog
ICAgIG1fb2JqY0NhbGxiYWNrRnVuY3Rpb25TdHJ1Y3R1cmUuc2V0KHZtLCB0aGlzLCBPYmpDQ2Fs
bGJhY2tGdW5jdGlvbjo6Y3JlYXRlU3RydWN0dXJlKHZtLCB0aGlzLCBtX2Z1bmN0aW9uUHJvdG90
eXBlLmdldCgpKSk7CiAgICAgbV9vYmpjV3JhcHBlck9iamVjdFN0cnVjdHVyZS5zZXQodm0sIHRo
aXMsIEpTQ2FsbGJhY2tPYmplY3Q8SlNBUElXcmFwcGVyT2JqZWN0Pjo6Y3JlYXRlU3RydWN0dXJl
KHZtLCB0aGlzLCBtX29iamVjdFByb3RvdHlwZS5nZXQoKSkpOwpAQCAtMzM2LDEwICszMzksOSBA
QCB2b2lkIEpTR2xvYmFsT2JqZWN0Ojppbml0KFZNJiB2bSkKICAgICBtX3JlZ0V4cFByb3RvdHlw
ZS5zZXQodm0sIHRoaXMsIFJlZ0V4cFByb3RvdHlwZTo6Y3JlYXRlKHZtLCBSZWdFeHBQcm90b3R5
cGU6OmNyZWF0ZVN0cnVjdHVyZSh2bSwgdGhpcywgbV9vYmplY3RQcm90b3R5cGUuZ2V0KCkpLCBl
bXB0eVJlZ2V4KSk7CiAgICAgbV9yZWdFeHBTdHJ1Y3R1cmUuc2V0KHZtLCB0aGlzLCBSZWdFeHBP
YmplY3Q6OmNyZWF0ZVN0cnVjdHVyZSh2bSwgdGhpcywgbV9yZWdFeHBQcm90b3R5cGUuZ2V0KCkp
KTsKICAgICBtX3JlZ0V4cE1hdGNoZXNBcnJheVN0cnVjdHVyZS5zZXQodm0sIHRoaXMsIGNyZWF0
ZVJlZ0V4cE1hdGNoZXNBcnJheVN0cnVjdHVyZSh2bSwgKnRoaXMpKTsKLSAgICAKLSAgICBtX3By
b21pc2VQcm90b3R5cGUuc2V0KHZtLCB0aGlzLCBKU1Byb21pc2VQcm90b3R5cGU6OmNyZWF0ZShl
eGVjLCB0aGlzLCBKU1Byb21pc2VQcm90b3R5cGU6OmNyZWF0ZVN0cnVjdHVyZSh2bSwgdGhpcywg
bV9vYmplY3RQcm90b3R5cGUuZ2V0KCkpKSk7Ci0gICAgbV9wcm9taXNlU3RydWN0dXJlLnNldCh2
bSwgdGhpcywgSlNQcm9taXNlOjpjcmVhdGVTdHJ1Y3R1cmUodm0sIHRoaXMsIG1fcHJvbWlzZVBy
b3RvdHlwZS5nZXQoKSkpOwogCisgICAgbV9tb2R1bGVSZWNvcmRTdHJ1Y3R1cmUuc2V0KHZtLCB0
aGlzLCBKU01vZHVsZVJlY29yZDo6Y3JlYXRlU3RydWN0dXJlKHZtLCB0aGlzLCBtX29iamVjdFBy
b3RvdHlwZS5nZXQoKSkpOworICAgIAogI2lmIEVOQUJMRShXRUJBU1NFTUJMWSkKICAgICBtX3dh
c21Nb2R1bGVTdHJ1Y3R1cmUuc2V0KHZtLCB0aGlzLCBKU1dBU01Nb2R1bGU6OmNyZWF0ZVN0cnVj
dHVyZSh2bSwgdGhpcykpOwogI2VuZGlmCkBAIC0zOTcsMTMgKzM5OSwxMSBAQCBtXyAjIyBsb3dl
ck5hbWUgIyMgUHJvdG90eXBlLT5wdXREaXJlY3RXaXRob3V0VHJhbnNpdGlvbih2bSwgdm0ucHJv
cGVydHlOYW1lcy0+YwogICAgIG1fc3ludGF4RXJyb3JDb25zdHJ1Y3Rvci5zZXQodm0sIHRoaXMs
IE5hdGl2ZUVycm9yQ29uc3RydWN0b3I6OmNyZWF0ZSh2bSwgdGhpcywgbmF0aXZlRXJyb3JTdHJ1
Y3R1cmUsIG5hdGl2ZUVycm9yUHJvdG90eXBlU3RydWN0dXJlLCBBU0NJSUxpdGVyYWwoIlN5bnRh
eEVycm9yIikpKTsKICAgICBtX3R5cGVFcnJvckNvbnN0cnVjdG9yLnNldCh2bSwgdGhpcywgTmF0
aXZlRXJyb3JDb25zdHJ1Y3Rvcjo6Y3JlYXRlKHZtLCB0aGlzLCBuYXRpdmVFcnJvclN0cnVjdHVy
ZSwgbmF0aXZlRXJyb3JQcm90b3R5cGVTdHJ1Y3R1cmUsIEFTQ0lJTGl0ZXJhbCgiVHlwZUVycm9y
IikpKTsKICAgICBtX1VSSUVycm9yQ29uc3RydWN0b3Iuc2V0KHZtLCB0aGlzLCBOYXRpdmVFcnJv
ckNvbnN0cnVjdG9yOjpjcmVhdGUodm0sIHRoaXMsIG5hdGl2ZUVycm9yU3RydWN0dXJlLCBuYXRp
dmVFcnJvclByb3RvdHlwZVN0cnVjdHVyZSwgQVNDSUlMaXRlcmFsKCJVUklFcnJvciIpKSk7Ci0g
ICAgbV9wcm9taXNlQ29uc3RydWN0b3Iuc2V0KHZtLCB0aGlzLCBKU1Byb21pc2VDb25zdHJ1Y3Rv
cjo6Y3JlYXRlKHZtLCBKU1Byb21pc2VDb25zdHJ1Y3Rvcjo6Y3JlYXRlU3RydWN0dXJlKHZtLCB0
aGlzLCBtX2Z1bmN0aW9uUHJvdG90eXBlLmdldCgpKSwgbV9wcm9taXNlUHJvdG90eXBlLmdldCgp
KSk7CiAgICAgCiAgICAgbV9vYmplY3RQcm90b3R5cGUtPnB1dERpcmVjdFdpdGhvdXRUcmFuc2l0
aW9uKHZtLCB2bS5wcm9wZXJ0eU5hbWVzLT5jb25zdHJ1Y3Rvciwgb2JqZWN0Q29uc3RydWN0b3Is
IERvbnRFbnVtKTsKICAgICBtX2Z1bmN0aW9uUHJvdG90eXBlLT5wdXREaXJlY3RXaXRob3V0VHJh
bnNpdGlvbih2bSwgdm0ucHJvcGVydHlOYW1lcy0+Y29uc3RydWN0b3IsIGZ1bmN0aW9uQ29uc3Ry
dWN0b3IsIERvbnRFbnVtKTsKICAgICBtX2FycmF5UHJvdG90eXBlLT5wdXREaXJlY3RXaXRob3V0
VHJhbnNpdGlvbih2bSwgdm0ucHJvcGVydHlOYW1lcy0+Y29uc3RydWN0b3IsIGFycmF5Q29uc3Ry
dWN0b3IsIERvbnRFbnVtKTsKICAgICBtX3JlZ0V4cFByb3RvdHlwZS0+cHV0RGlyZWN0V2l0aG91
dFRyYW5zaXRpb24odm0sIHZtLnByb3BlcnR5TmFtZXMtPmNvbnN0cnVjdG9yLCBtX3JlZ0V4cENv
bnN0cnVjdG9yLmdldCgpLCBEb250RW51bSk7Ci0gICAgbV9wcm9taXNlUHJvdG90eXBlLT5wdXRE
aXJlY3RXaXRob3V0VHJhbnNpdGlvbih2bSwgdm0ucHJvcGVydHlOYW1lcy0+Y29uc3RydWN0b3Is
IG1fcHJvbWlzZUNvbnN0cnVjdG9yLmdldCgpLCBEb250RW51bSk7CiAgICAgCiAgICAgcHV0RGly
ZWN0V2l0aG91dFRyYW5zaXRpb24odm0sIHZtLnByb3BlcnR5TmFtZXMtPk9iamVjdCwgb2JqZWN0
Q29uc3RydWN0b3IsIERvbnRFbnVtKTsKICAgICBwdXREaXJlY3RXaXRob3V0VHJhbnNpdGlvbih2
bSwgdm0ucHJvcGVydHlOYW1lcy0+RnVuY3Rpb24sIGZ1bmN0aW9uQ29uc3RydWN0b3IsIERvbnRF
bnVtKTsKQEAgLTQxNSw3ICs0MTUsNiBAQCBtXyAjIyBsb3dlck5hbWUgIyMgUHJvdG90eXBlLT5w
dXREaXJlY3RXaXRob3V0VHJhbnNpdGlvbih2bSwgdm0ucHJvcGVydHlOYW1lcy0+YwogICAgIHB1
dERpcmVjdFdpdGhvdXRUcmFuc2l0aW9uKHZtLCB2bS5wcm9wZXJ0eU5hbWVzLT5TeW50YXhFcnJv
ciwgbV9zeW50YXhFcnJvckNvbnN0cnVjdG9yLmdldCgpLCBEb250RW51bSk7CiAgICAgcHV0RGly
ZWN0V2l0aG91dFRyYW5zaXRpb24odm0sIHZtLnByb3BlcnR5TmFtZXMtPlR5cGVFcnJvciwgbV90
eXBlRXJyb3JDb25zdHJ1Y3Rvci5nZXQoKSwgRG9udEVudW0pOwogICAgIHB1dERpcmVjdFdpdGhv
dXRUcmFuc2l0aW9uKHZtLCB2bS5wcm9wZXJ0eU5hbWVzLT5VUklFcnJvciwgbV9VUklFcnJvckNv
bnN0cnVjdG9yLmdldCgpLCBEb250RW51bSk7Ci0gICAgcHV0RGlyZWN0V2l0aG91dFRyYW5zaXRp
b24odm0sIHZtLnByb3BlcnR5TmFtZXMtPlByb21pc2UsIG1fcHJvbWlzZUNvbnN0cnVjdG9yLmdl
dCgpLCBEb250RW51bSk7CiAgICAgCiAgICAgCiAjZGVmaW5lIFBVVF9DT05TVFJVQ1RPUl9GT1Jf
U0lNUExFX1RZUEUoY2FwaXRhbE5hbWUsIGxvd2VyTmFtZSwgcHJvcGVyTmFtZSwgaW5zdGFuY2VU
eXBlLCBqc05hbWUpIFwKQEAgLTQ0MCw3ICs0MzksNyBAQCBwdXREaXJlY3RXaXRob3V0VHJhbnNp
dGlvbih2bSwgdm0ucHJvcGVydHlOYW1lcy0+IGpzTmFtZSwgbG93ZXJOYW1lICMjIENvbnN0cnVj
dAogICAgIHB1dERpcmVjdFdpdGhvdXRUcmFuc2l0aW9uKHZtLCB2bS5wcm9wZXJ0eU5hbWVzLT5K
U09OLCBKU09OT2JqZWN0OjpjcmVhdGUodm0sIEpTT05PYmplY3Q6OmNyZWF0ZVN0cnVjdHVyZSh2
bSwgdGhpcywgbV9vYmplY3RQcm90b3R5cGUuZ2V0KCkpKSwgRG9udEVudW0pOwogICAgIHB1dERp
cmVjdFdpdGhvdXRUcmFuc2l0aW9uKHZtLCB2bS5wcm9wZXJ0eU5hbWVzLT5NYXRoLCBNYXRoT2Jq
ZWN0OjpjcmVhdGUodm0sIHRoaXMsIE1hdGhPYmplY3Q6OmNyZWF0ZVN0cnVjdHVyZSh2bSwgdGhp
cywgbV9vYmplY3RQcm90b3R5cGUuZ2V0KCkpKSwgRG9udEVudW0pOwogICAgIHB1dERpcmVjdFdp
dGhvdXRUcmFuc2l0aW9uKHZtLCB2bS5wcm9wZXJ0eU5hbWVzLT5SZWZsZWN0LCBSZWZsZWN0T2Jq
ZWN0OjpjcmVhdGUodm0sIHRoaXMsIFJlZmxlY3RPYmplY3Q6OmNyZWF0ZVN0cnVjdHVyZSh2bSwg
dGhpcywgbV9vYmplY3RQcm90b3R5cGUuZ2V0KCkpKSwgRG9udEVudW0pOwotICAgIAorCiAgICAg
c3RkOjphcnJheTxJbnRlcm5hbEZ1bmN0aW9uKiwgTlVNQkVSX09GX1RZUEVEX0FSUkFZX1RZUEVT
PiB0eXBlZEFycmF5Q29uc3RydWN0b3JzOwogICAgIHR5cGVkQXJyYXlDb25zdHJ1Y3RvcnNbdG9J
bmRleChUeXBlSW50OCldID0gSlNJbnQ4QXJyYXlDb25zdHJ1Y3Rvcjo6Y3JlYXRlKHZtLCBKU0lu
dDhBcnJheUNvbnN0cnVjdG9yOjpjcmVhdGVTdHJ1Y3R1cmUodm0sIHRoaXMsIG1fZnVuY3Rpb25Q
cm90b3R5cGUuZ2V0KCkpLCBtX3R5cGVkQXJyYXlzW3RvSW5kZXgoVHlwZUludDgpXS5wcm90b3R5
cGUuZ2V0KCksIEFTQ0lJTGl0ZXJhbCgiSW50OEFycmF5IikpOwogICAgIHR5cGVkQXJyYXlDb25z
dHJ1Y3RvcnNbdG9JbmRleChUeXBlSW50MTYpXSA9IEpTSW50MTZBcnJheUNvbnN0cnVjdG9yOjpj
cmVhdGUodm0sIEpTSW50MTZBcnJheUNvbnN0cnVjdG9yOjpjcmVhdGVTdHJ1Y3R1cmUodm0sIHRo
aXMsIG1fZnVuY3Rpb25Qcm90b3R5cGUuZ2V0KCkpLCBtX3R5cGVkQXJyYXlzW3RvSW5kZXgoVHlw
ZUludDE2KV0ucHJvdG90eXBlLmdldCgpLCBBU0NJSUxpdGVyYWwoIkludDE2QXJyYXkiKSk7CkBA
IC00NTcsNyArNDU2LDExIEBAIHB1dERpcmVjdFdpdGhvdXRUcmFuc2l0aW9uKHZtLCB2bS5wcm9w
ZXJ0eU5hbWVzLT4ganNOYW1lLCBsb3dlck5hbWUgIyMgQ29uc3RydWN0CiAgICAgICAgIG1fdHlw
ZWRBcnJheXNbdHlwZWRBcnJheUluZGV4XS5wcm90b3R5cGUtPnB1dERpcmVjdFdpdGhvdXRUcmFu
c2l0aW9uKHZtLCB2bS5wcm9wZXJ0eU5hbWVzLT5jb25zdHJ1Y3RvciwgdHlwZWRBcnJheUNvbnN0
cnVjdG9yc1t0eXBlZEFycmF5SW5kZXhdLCBEb250RW51bSk7CiAgICAgICAgIHB1dERpcmVjdFdp
dGhvdXRUcmFuc2l0aW9uKHZtLCBJZGVudGlmaWVyOjpmcm9tU3RyaW5nKGV4ZWMsIHR5cGVkQXJy
YXlDb25zdHJ1Y3RvcnNbdHlwZWRBcnJheUluZGV4XS0+bmFtZShleGVjKSksIHR5cGVkQXJyYXlD
b25zdHJ1Y3RvcnNbdHlwZWRBcnJheUluZGV4XSwgRG9udEVudW0pOwogICAgIH0KLSAgICAKKwor
ICAgIG1fbW9kdWxlTG9hZGVyLnNldCh2bSwgdGhpcywgTW9kdWxlTG9hZGVyT2JqZWN0OjpjcmVh
dGUodm0sIHRoaXMsIE1vZHVsZUxvYWRlck9iamVjdDo6Y3JlYXRlU3RydWN0dXJlKHZtLCB0aGlz
LCBtX29iamVjdFByb3RvdHlwZS5nZXQoKSkpKTsKKyAgICBpZiAoT3B0aW9uczo6ZXhwb3NlSW50
ZXJuYWxNb2R1bGVMb2FkZXIoKSkKKyAgICAgICAgcHV0RGlyZWN0V2l0aG91dFRyYW5zaXRpb24o
dm0sIHZtLnByb3BlcnR5TmFtZXMtPkxvYWRlciwgbV9tb2R1bGVMb2FkZXIuZ2V0KCksIERvbnRF
bnVtKTsKKwogICAgIEpTRnVuY3Rpb24qIGJ1aWx0aW5Mb2cgPSBKU0Z1bmN0aW9uOjpjcmVhdGUo
dm0sIHRoaXMsIDEsIHZtLnByb3BlcnR5TmFtZXMtPmVtcHR5SWRlbnRpZmllci5zdHJpbmcoKSwg
Z2xvYmFsRnVuY0J1aWx0aW5Mb2cpOwogCiAgICAgSlNGdW5jdGlvbiogcHJpdmF0ZUZ1bmNBYnMg
PSBKU0Z1bmN0aW9uOjpjcmVhdGUodm0sIHRoaXMsIDAsIFN0cmluZygpLCBtYXRoUHJvdG9GdW5j
QWJzLCBBYnNJbnRyaW5zaWMpOwpAQCAtNDkxLDcgKzQ5NCw3IEBAIHB1dERpcmVjdFdpdGhvdXRU
cmFuc2l0aW9uKHZtLCB2bS5wcm9wZXJ0eU5hbWVzLT4ganNOYW1lLCBsb3dlck5hbWUgIyMgQ29u
c3RydWN0CiAgICAgICAgIEdsb2JhbFByb3BlcnR5SW5mbyh2bS5wcm9wZXJ0eU5hbWVzLT5hcnJh
eUl0ZXJhdGlvbktpbmRWYWx1ZVByaXZhdGVOYW1lLCBqc051bWJlcihBcnJheUl0ZXJhdGVWYWx1
ZSksIERvbnRFbnVtIHwgRG9udERlbGV0ZSB8IFJlYWRPbmx5KSwKICAgICAgICAgR2xvYmFsUHJv
cGVydHlJbmZvKHZtLnByb3BlcnR5TmFtZXMtPmFycmF5SXRlcmF0aW9uS2luZEtleVZhbHVlUHJp
dmF0ZU5hbWUsIGpzTnVtYmVyKEFycmF5SXRlcmF0ZUtleVZhbHVlKSwgRG9udEVudW0gfCBEb250
RGVsZXRlIHwgUmVhZE9ubHkpLAogICAgICAgICBHbG9iYWxQcm9wZXJ0eUluZm8odm0ucHJvcGVy
dHlOYW1lcy0+YnVpbHRpbk5hbWVzKCkuc3ltYm9sSXRlcmF0b3JQcml2YXRlTmFtZSgpLCBTeW1i
b2w6OmNyZWF0ZSh2bSwgc3RhdGljX2Nhc3Q8U3ltYm9sSW1wbCY+KCp2bS5wcm9wZXJ0eU5hbWVz
LT5pdGVyYXRvclN5bWJvbC5pbXBsKCkpKSwgRG9udEVudW0gfCBEb250RGVsZXRlIHwgUmVhZE9u
bHkpLAotICAgICAgICBHbG9iYWxQcm9wZXJ0eUluZm8odm0ucHJvcGVydHlOYW1lcy0+UHJvbWlz
ZVByaXZhdGVOYW1lLCBtX3Byb21pc2VDb25zdHJ1Y3Rvci5nZXQoKSwgRG9udEVudW0gfCBEb250
RGVsZXRlIHwgUmVhZE9ubHkpLAorICAgICAgICBHbG9iYWxQcm9wZXJ0eUluZm8odm0ucHJvcGVy
dHlOYW1lcy0+UHJvbWlzZVByaXZhdGVOYW1lLCBwcm9taXNlQ29uc3RydWN0b3IsIERvbnRFbnVt
IHwgRG9udERlbGV0ZSB8IFJlYWRPbmx5KSwKICAgICAgICAgR2xvYmFsUHJvcGVydHlJbmZvKHZt
LnByb3BlcnR5TmFtZXMtPnByb21pc2VQZW5kaW5nUHJpdmF0ZU5hbWUsIGpzTnVtYmVyKHN0YXRp
Y19jYXN0PHVuc2lnbmVkPihKU1Byb21pc2U6OlN0YXR1czo6UGVuZGluZykpLCBEb250RW51bSB8
IERvbnREZWxldGUgfCBSZWFkT25seSksCiAgICAgICAgIEdsb2JhbFByb3BlcnR5SW5mbyh2bS5w
cm9wZXJ0eU5hbWVzLT5idWlsdGluTmFtZXMoKS5wcm9taXNlRnVsZmlsbGVkUHJpdmF0ZU5hbWUo
KSwganNOdW1iZXIoc3RhdGljX2Nhc3Q8dW5zaWduZWQ+KEpTUHJvbWlzZTo6U3RhdHVzOjpGdWxm
aWxsZWQpKSwgRG9udEVudW0gfCBEb250RGVsZXRlIHwgUmVhZE9ubHkpLAogICAgICAgICBHbG9i
YWxQcm9wZXJ0eUluZm8odm0ucHJvcGVydHlOYW1lcy0+YnVpbHRpbk5hbWVzKCkucHJvbWlzZVJl
amVjdGVkUHJpdmF0ZU5hbWUoKSwganNOdW1iZXIoc3RhdGljX2Nhc3Q8dW5zaWduZWQ+KEpTUHJv
bWlzZTo6U3RhdHVzOjpSZWplY3RlZCkpLCBEb250RW51bSB8IERvbnREZWxldGUgfCBSZWFkT25s
eSksCkBAIC01MDcsNyArNTEwLDEwIEBAIHB1dERpcmVjdFdpdGhvdXRUcmFuc2l0aW9uKHZtLCB2
bS5wcm9wZXJ0eU5hbWVzLT4ganNOYW1lLCBsb3dlck5hbWUgIyMgQ29uc3RydWN0CiAgICAgICAg
IEdsb2JhbFByb3BlcnR5SW5mbyh2bS5wcm9wZXJ0eU5hbWVzLT5idWlsdGluTmFtZXMoKS5jcmVh
dGVSZXNvbHZpbmdGdW5jdGlvbnNQcml2YXRlTmFtZSgpLCBKU0Z1bmN0aW9uOjpjcmVhdGVCdWls
dGluRnVuY3Rpb24odm0sIG9wZXJhdGlvbnNQcm9taXNlQ3JlYXRlUmVzb2x2aW5nRnVuY3Rpb25z
Q29kZUdlbmVyYXRvcih2bSksIHRoaXMpLCBEb250RW51bSB8IERvbnREZWxldGUgfCBSZWFkT25s
eSksCiAgICAgICAgIEdsb2JhbFByb3BlcnR5SW5mbyh2bS5wcm9wZXJ0eU5hbWVzLT5idWlsdGlu
TmFtZXMoKS5wcm9taXNlUmVhY3Rpb25Kb2JQcml2YXRlTmFtZSgpLCBKU0Z1bmN0aW9uOjpjcmVh
dGVCdWlsdGluRnVuY3Rpb24odm0sIG9wZXJhdGlvbnNQcm9taXNlUHJvbWlzZVJlYWN0aW9uSm9i
Q29kZUdlbmVyYXRvcih2bSksIHRoaXMpLCBEb250RW51bSB8IERvbnREZWxldGUgfCBSZWFkT25s
eSksCiAgICAgICAgIEdsb2JhbFByb3BlcnR5SW5mbyh2bS5wcm9wZXJ0eU5hbWVzLT5idWlsdGlu
TmFtZXMoKS5wcm9taXNlUmVzb2x2ZVRoZW5hYmxlSm9iUHJpdmF0ZU5hbWUoKSwgSlNGdW5jdGlv
bjo6Y3JlYXRlQnVpbHRpbkZ1bmN0aW9uKHZtLCBvcGVyYXRpb25zUHJvbWlzZVByb21pc2VSZXNv
bHZlVGhlbmFibGVKb2JDb2RlR2VuZXJhdG9yKHZtKSwgdGhpcyksIERvbnRFbnVtIHwgRG9udERl
bGV0ZSB8IFJlYWRPbmx5KSwKKyAgICAgICAgR2xvYmFsUHJvcGVydHlJbmZvKHZtLnByb3BlcnR5
TmFtZXMtPmJ1aWx0aW5OYW1lcygpLm5ld1Byb21pc2VEZWZlcnJlZFByaXZhdGVOYW1lKCksIG1f
bmV3UHJvbWlzZURlZmVycmVkRnVuY3Rpb24uZ2V0KCksIERvbnRFbnVtIHwgRG9udERlbGV0ZSB8
IFJlYWRPbmx5KSwKKyAgICAgICAgR2xvYmFsUHJvcGVydHlJbmZvKHZtLnByb3BlcnR5TmFtZXMt
PmJ1aWx0aW5OYW1lcygpLnByb21pc2VUaGVuUHJpdmF0ZU5hbWUoKSwgSlNGdW5jdGlvbjo6Y3Jl
YXRlQnVpbHRpbkZ1bmN0aW9uKHZtLCBvcGVyYXRpb25zUHJvbWlzZVByb21pc2VUaGVuQ29kZUdl
bmVyYXRvcih2bSksIHRoaXMpLCBEb250RW51bSB8IERvbnREZWxldGUgfCBSZWFkT25seSksCiAg
ICAgICAgIEdsb2JhbFByb3BlcnR5SW5mbyh2bS5wcm9wZXJ0eU5hbWVzLT5idWlsdGluTmFtZXMo
KS5JbnNwZWN0b3JJbnN0cnVtZW50YXRpb25Qcml2YXRlTmFtZSgpLCBJbnNwZWN0b3JJbnN0cnVt
ZW50YXRpb25PYmplY3Q6OmNyZWF0ZSh2bSwgdGhpcywgSW5zcGVjdG9ySW5zdHJ1bWVudGF0aW9u
T2JqZWN0OjpjcmVhdGVTdHJ1Y3R1cmUodm0sIHRoaXMsIG1fb2JqZWN0UHJvdG90eXBlLmdldCgp
KSksIERvbnRFbnVtIHwgRG9udERlbGV0ZSB8IFJlYWRPbmx5KSwKKyAgICAgICAgR2xvYmFsUHJv
cGVydHlJbmZvKHZtLnByb3BlcnR5TmFtZXMtPk1hcFByaXZhdGVOYW1lLCBtYXBDb25zdHJ1Y3Rv
ciwgRG9udEVudW0gfCBEb250RGVsZXRlIHwgUmVhZE9ubHkpLAogICAgIH07CiAgICAgYWRkU3Rh
dGljR2xvYmFscyhzdGF0aWNHbG9iYWxzLCBXVEZfQVJSQVlfTEVOR1RIKHN0YXRpY0dsb2JhbHMp
KTsKICAgICAKQEAgLTc1MCw3ICs3NTYsNiBAQCB2b2lkIEpTR2xvYmFsT2JqZWN0Ojp2aXNpdENo
aWxkcmVuKEpTQ2VsbCogY2VsbCwgU2xvdFZpc2l0b3ImIHZpc2l0b3IpCiAgICAgdmlzaXRvci5h
cHBlbmQoJnRoaXNPYmplY3QtPm1fdHlwZUVycm9yQ29uc3RydWN0b3IpOwogICAgIHZpc2l0b3Iu
YXBwZW5kKCZ0aGlzT2JqZWN0LT5tX1VSSUVycm9yQ29uc3RydWN0b3IpOwogICAgIHZpc2l0b3Iu
YXBwZW5kKCZ0aGlzT2JqZWN0LT5tX29iamVjdENvbnN0cnVjdG9yKTsKLSAgICB2aXNpdG9yLmFw
cGVuZCgmdGhpc09iamVjdC0+bV9wcm9taXNlQ29uc3RydWN0b3IpOwogCiAgICAgdmlzaXRvci5h
cHBlbmQoJnRoaXNPYmplY3QtPm1fbnVsbEdldHRlckZ1bmN0aW9uKTsKICAgICB2aXNpdG9yLmFw
cGVuZCgmdGhpc09iamVjdC0+bV9udWxsU2V0dGVyRnVuY3Rpb24pOwpAQCAtNzY0LDEzICs3Njks
MTMgQEAgdm9pZCBKU0dsb2JhbE9iamVjdDo6dmlzaXRDaGlsZHJlbihKU0NlbGwqIGNlbGwsIFNs
b3RWaXNpdG9yJiB2aXNpdG9yKQogICAgIHZpc2l0b3IuYXBwZW5kKCZ0aGlzT2JqZWN0LT5tX2lu
aXRpYWxpemVQcm9taXNlRnVuY3Rpb24pOwogICAgIHZpc2l0b3IuYXBwZW5kKCZ0aGlzT2JqZWN0
LT5tX25ld1Byb21pc2VEZWZlcnJlZEZ1bmN0aW9uKTsKICAgICB2aXNpdG9yLmFwcGVuZCgmdGhp
c09iamVjdC0+bV90aHJvd1R5cGVFcnJvckdldHRlclNldHRlcik7CisgICAgdmlzaXRvci5hcHBl
bmQoJnRoaXNPYmplY3QtPm1fbW9kdWxlTG9hZGVyKTsKIAogICAgIHZpc2l0b3IuYXBwZW5kKCZ0
aGlzT2JqZWN0LT5tX29iamVjdFByb3RvdHlwZSk7CiAgICAgdmlzaXRvci5hcHBlbmQoJnRoaXNP
YmplY3QtPm1fZnVuY3Rpb25Qcm90b3R5cGUpOwogICAgIHZpc2l0b3IuYXBwZW5kKCZ0aGlzT2Jq
ZWN0LT5tX2FycmF5UHJvdG90eXBlKTsKICAgICB2aXNpdG9yLmFwcGVuZCgmdGhpc09iamVjdC0+
bV9lcnJvclByb3RvdHlwZSk7CiAgICAgdmlzaXRvci5hcHBlbmQoJnRoaXNPYmplY3QtPm1faXRl
cmF0b3JQcm90b3R5cGUpOwotICAgIHZpc2l0b3IuYXBwZW5kKCZ0aGlzT2JqZWN0LT5tX3Byb21p
c2VQcm90b3R5cGUpOwogCiAgICAgdmlzaXRvci5hcHBlbmQoJnRoaXNPYmplY3QtPm1fZGVidWdn
ZXJTY29wZVN0cnVjdHVyZSk7CiAgICAgdmlzaXRvci5hcHBlbmQoJnRoaXNPYmplY3QtPm1fd2l0
aFNjb3BlU3RydWN0dXJlKTsKQEAgLTgwMSwxMCArODA2LDEwIEBAIHZvaWQgSlNHbG9iYWxPYmpl
Y3Q6OnZpc2l0Q2hpbGRyZW4oSlNDZWxsKiBjZWxsLCBTbG90VmlzaXRvciYgdmlzaXRvcikKICAg
ICB2aXNpdG9yLmFwcGVuZCgmdGhpc09iamVjdC0+bV9zeW1ib2xPYmplY3RTdHJ1Y3R1cmUpOwog
ICAgIHZpc2l0b3IuYXBwZW5kKCZ0aGlzT2JqZWN0LT5tX3JlZ0V4cFN0cnVjdHVyZSk7CiAgICAg
dmlzaXRvci5hcHBlbmQoJnRoaXNPYmplY3QtPm1fcmVnRXhwTWF0Y2hlc0FycmF5U3RydWN0dXJl
KTsKKyAgICB2aXNpdG9yLmFwcGVuZCgmdGhpc09iamVjdC0+bV9tb2R1bGVSZWNvcmRTdHJ1Y3R1
cmUpOwogICAgIHZpc2l0b3IuYXBwZW5kKCZ0aGlzT2JqZWN0LT5tX2NvbnNvbGVTdHJ1Y3R1cmUp
OwogICAgIHZpc2l0b3IuYXBwZW5kKCZ0aGlzT2JqZWN0LT5tX2RvbGxhclZNU3RydWN0dXJlKTsK
ICAgICB2aXNpdG9yLmFwcGVuZCgmdGhpc09iamVjdC0+bV9pbnRlcm5hbEZ1bmN0aW9uU3RydWN0
dXJlKTsKLSAgICB2aXNpdG9yLmFwcGVuZCgmdGhpc09iamVjdC0+bV9wcm9taXNlU3RydWN0dXJl
KTsKICNpZiBFTkFCTEUoV0VCQVNTRU1CTFkpCiAgICAgdmlzaXRvci5hcHBlbmQoJnRoaXNPYmpl
Y3QtPm1fd2FzbU1vZHVsZVN0cnVjdHVyZSk7CiAjZW5kaWYKZGlmZiAtLWdpdCBhL1NvdXJjZS9K
YXZhU2NyaXB0Q29yZS9ydW50aW1lL0pTR2xvYmFsT2JqZWN0LmggYi9Tb3VyY2UvSmF2YVNjcmlw
dENvcmUvcnVudGltZS9KU0dsb2JhbE9iamVjdC5oCmluZGV4IDk5ODZiY2Y2MjQ1ZTJjYzQ2ODIw
YjEzMTAyYjIzNDI5MDBlYzNkN2IuLmYwYTY1ZDI3ZTlkZGFkMjFhZWRlMjZiZjljZDVhNmFlZGVj
MDcwZDggMTAwNjQ0Ci0tLSBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL0pTR2xvYmFs
T2JqZWN0LmgKKysrIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvSlNHbG9iYWxPYmpl
Y3QuaApAQCAtNzAsMTEgKzcwLDEzIEBAIGNsYXNzIEdldHRlclNldHRlcjsKIGNsYXNzIEdsb2Jh
bENvZGVCbG9jazsKIGNsYXNzIElucHV0Q3Vyc29yOwogY2xhc3MgSlNHbG9iYWxPYmplY3REZWJ1
Z2dhYmxlOworY2xhc3MgSlNQcm9taXNlOwogY2xhc3MgSlNQcm9taXNlQ29uc3RydWN0b3I7CiBj
bGFzcyBKU1Byb21pc2VQcm90b3R5cGU7CiBjbGFzcyBKU1N0YWNrOwogY2xhc3MgTExJbnRPZmZz
ZXRzRXh0cmFjdG9yOwogY2xhc3MgTWljcm90YXNrOworY2xhc3MgTW9kdWxlTG9hZGVyT2JqZWN0
OwogY2xhc3MgTmF0aXZlRXJyb3JDb25zdHJ1Y3RvcjsKIGNsYXNzIE9iamVjdENvbnN0cnVjdG9y
OwogY2xhc3MgUHJvZ3JhbUNvZGVCbG9jazsKQEAgLTk5LDYgKzEwMSw3IEBAIHN0cnVjdCBIYXNo
VGFibGU7CiAgICAgbWFjcm8oQm9vbGVhbiwgYm9vbGVhbiwgYm9vbGVhbk9iamVjdCwgQm9vbGVh
bk9iamVjdCwgQm9vbGVhbikgXAogICAgIG1hY3JvKE51bWJlciwgbnVtYmVyLCBudW1iZXJPYmpl
Y3QsIE51bWJlck9iamVjdCwgTnVtYmVyKSBcCiAgICAgbWFjcm8oRXJyb3IsIGVycm9yLCBlcnJv
ciwgRXJyb3JJbnN0YW5jZSwgRXJyb3IpIFwKKyAgICBtYWNybyhKU1Byb21pc2UsIHByb21pc2Us
IHByb21pc2UsIEpTUHJvbWlzZSwgUHJvbWlzZSkgXAogICAgIG1hY3JvKEpTQXJyYXlCdWZmZXIs
IGFycmF5QnVmZmVyLCBhcnJheUJ1ZmZlciwgSlNBcnJheUJ1ZmZlciwgQXJyYXlCdWZmZXIpIFwK
ICAgICBERUZJTkVfU1RBTkRBUkRfQlVJTFRJTihtYWNybywgV2Vha01hcCwgd2Vha01hcCkgXAog
ICAgIERFRklORV9TVEFOREFSRF9CVUlMVElOKG1hY3JvLCBXZWFrU2V0LCB3ZWFrU2V0KSBcCkBA
IC0xNTAsNiArMTUzLDE4IEBAIHN0cnVjdCBHbG9iYWxPYmplY3RNZXRob2RUYWJsZSB7CiAKICAg
ICB0eXBlZGVmIGJvb2wgKCpTaG91bGRJbnRlcnJ1cHRTY3JpcHRCZWZvcmVUaW1lb3V0UHRyKShj
b25zdCBKU0dsb2JhbE9iamVjdCopOwogICAgIFNob3VsZEludGVycnVwdFNjcmlwdEJlZm9yZVRp
bWVvdXRQdHIgc2hvdWxkSW50ZXJydXB0U2NyaXB0QmVmb3JlVGltZW91dDsKKworICAgIHR5cGVk
ZWYgSlNWYWx1ZSAoKkxvYWRlclJlc29sdmVQdHIpKEpTR2xvYmFsT2JqZWN0KiwgRXhlY1N0YXRl
KiwgSlNWYWx1ZSwgSlNWYWx1ZSk7CisgICAgTG9hZGVyUmVzb2x2ZVB0ciBsb2FkZXJSZXNvbHZl
OworCisgICAgdHlwZWRlZiBKU1ZhbHVlICgqTG9hZGVyRmV0Y2hQdHIpKEpTR2xvYmFsT2JqZWN0
KiwgRXhlY1N0YXRlKiwgSlNWYWx1ZSk7CisgICAgTG9hZGVyRmV0Y2hQdHIgbG9hZGVyRmV0Y2g7
CisKKyAgICB0eXBlZGVmIEpTVmFsdWUgKCpMb2FkZXJUcmFuc2xhdGVQdHIpKEpTR2xvYmFsT2Jq
ZWN0KiwgRXhlY1N0YXRlKiwgSlNWYWx1ZSwgSlNWYWx1ZSk7CisgICAgTG9hZGVyVHJhbnNsYXRl
UHRyIGxvYWRlclRyYW5zbGF0ZTsKKworICAgIHR5cGVkZWYgSlNWYWx1ZSAoKkxvYWRlckluc3Rh
bnRpYXRlUHRyKShKU0dsb2JhbE9iamVjdCosIEV4ZWNTdGF0ZSosIEpTVmFsdWUsIEpTVmFsdWUp
OworICAgIExvYWRlckluc3RhbnRpYXRlUHRyIGxvYWRlckluc3RhbnRpYXRlOwogfTsKIAogY2xh
c3MgSlNHbG9iYWxPYmplY3QgOiBwdWJsaWMgSlNTZWdtZW50ZWRWYXJpYWJsZU9iamVjdCB7CkBA
IC0xODMsNyArMTk4LDYgQEAgY2xhc3MgSlNHbG9iYWxPYmplY3QgOiBwdWJsaWMgSlNTZWdtZW50
ZWRWYXJpYWJsZU9iamVjdCB7CiAgICAgV3JpdGVCYXJyaWVyPE5hdGl2ZUVycm9yQ29uc3RydWN0
b3I+IG1fc3ludGF4RXJyb3JDb25zdHJ1Y3RvcjsKICAgICBXcml0ZUJhcnJpZXI8TmF0aXZlRXJy
b3JDb25zdHJ1Y3Rvcj4gbV90eXBlRXJyb3JDb25zdHJ1Y3RvcjsKICAgICBXcml0ZUJhcnJpZXI8
TmF0aXZlRXJyb3JDb25zdHJ1Y3Rvcj4gbV9VUklFcnJvckNvbnN0cnVjdG9yOwotICAgIFdyaXRl
QmFycmllcjxKU1Byb21pc2VDb25zdHJ1Y3Rvcj4gbV9wcm9taXNlQ29uc3RydWN0b3I7CiAgICAg
V3JpdGVCYXJyaWVyPE9iamVjdENvbnN0cnVjdG9yPiBtX29iamVjdENvbnN0cnVjdG9yOwogCiAg
ICAgV3JpdGVCYXJyaWVyPE51bGxHZXR0ZXJGdW5jdGlvbj4gbV9udWxsR2V0dGVyRnVuY3Rpb247
CkBAIC0yMDAsMTIgKzIxNCwxMyBAQCBjbGFzcyBKU0dsb2JhbE9iamVjdCA6IHB1YmxpYyBKU1Nl
Z21lbnRlZFZhcmlhYmxlT2JqZWN0IHsKICAgICBXcml0ZUJhcnJpZXI8SlNGdW5jdGlvbj4gbV9u
ZXdQcm9taXNlRGVmZXJyZWRGdW5jdGlvbjsKICAgICBXcml0ZUJhcnJpZXI8R2V0dGVyU2V0dGVy
PiBtX3Rocm93VHlwZUVycm9yR2V0dGVyU2V0dGVyOwogCisgICAgV3JpdGVCYXJyaWVyPE1vZHVs
ZUxvYWRlck9iamVjdD4gbV9tb2R1bGVMb2FkZXI7CisKICAgICBXcml0ZUJhcnJpZXI8T2JqZWN0
UHJvdG90eXBlPiBtX29iamVjdFByb3RvdHlwZTsKICAgICBXcml0ZUJhcnJpZXI8RnVuY3Rpb25Q
cm90b3R5cGU+IG1fZnVuY3Rpb25Qcm90b3R5cGU7CiAgICAgV3JpdGVCYXJyaWVyPEFycmF5UHJv
dG90eXBlPiBtX2FycmF5UHJvdG90eXBlOwogICAgIFdyaXRlQmFycmllcjxSZWdFeHBQcm90b3R5
cGU+IG1fcmVnRXhwUHJvdG90eXBlOwogICAgIFdyaXRlQmFycmllcjxJdGVyYXRvclByb3RvdHlw
ZT4gbV9pdGVyYXRvclByb3RvdHlwZTsKLSAgICBXcml0ZUJhcnJpZXI8SlNQcm9taXNlUHJvdG90
eXBlPiBtX3Byb21pc2VQcm90b3R5cGU7CiAKICAgICBXcml0ZUJhcnJpZXI8U3RydWN0dXJlPiBt
X2RlYnVnZ2VyU2NvcGVTdHJ1Y3R1cmU7CiAgICAgV3JpdGVCYXJyaWVyPFN0cnVjdHVyZT4gbV93
aXRoU2NvcGVTdHJ1Y3R1cmU7CkBAIC0yNDEsNyArMjU2LDcgQEAgY2xhc3MgSlNHbG9iYWxPYmpl
Y3QgOiBwdWJsaWMgSlNTZWdtZW50ZWRWYXJpYWJsZU9iamVjdCB7CiAgICAgV3JpdGVCYXJyaWVy
PFN0cnVjdHVyZT4gbV9pbnRlcm5hbEZ1bmN0aW9uU3RydWN0dXJlOwogICAgIFdyaXRlQmFycmll
cjxTdHJ1Y3R1cmU+IG1faXRlcmF0b3JSZXN1bHRTdHJ1Y3R1cmU7CiAgICAgV3JpdGVCYXJyaWVy
PFN0cnVjdHVyZT4gbV9yZWdFeHBNYXRjaGVzQXJyYXlTdHJ1Y3R1cmU7Ci0gICAgV3JpdGVCYXJy
aWVyPFN0cnVjdHVyZT4gbV9wcm9taXNlU3RydWN0dXJlOworICAgIFdyaXRlQmFycmllcjxTdHJ1
Y3R1cmU+IG1fbW9kdWxlUmVjb3JkU3RydWN0dXJlOwogI2lmIEVOQUJMRShXRUJBU1NFTUJMWSkK
ICAgICBXcml0ZUJhcnJpZXI8U3RydWN0dXJlPiBtX3dhc21Nb2R1bGVTdHJ1Y3R1cmU7CiAjZW5k
aWYKQEAgLTM4Niw3ICs0MDEsNiBAQCBjbGFzcyBKU0dsb2JhbE9iamVjdCA6IHB1YmxpYyBKU1Nl
Z21lbnRlZFZhcmlhYmxlT2JqZWN0IHsKICAgICBOYXRpdmVFcnJvckNvbnN0cnVjdG9yKiBzeW50
YXhFcnJvckNvbnN0cnVjdG9yKCkgY29uc3QgeyByZXR1cm4gbV9zeW50YXhFcnJvckNvbnN0cnVj
dG9yLmdldCgpOyB9CiAgICAgTmF0aXZlRXJyb3JDb25zdHJ1Y3RvciogdHlwZUVycm9yQ29uc3Ry
dWN0b3IoKSBjb25zdCB7IHJldHVybiBtX3R5cGVFcnJvckNvbnN0cnVjdG9yLmdldCgpOyB9CiAg
ICAgTmF0aXZlRXJyb3JDb25zdHJ1Y3RvciogVVJJRXJyb3JDb25zdHJ1Y3RvcigpIGNvbnN0IHsg
cmV0dXJuIG1fVVJJRXJyb3JDb25zdHJ1Y3Rvci5nZXQoKTsgfQotICAgIEpTUHJvbWlzZUNvbnN0
cnVjdG9yKiBwcm9taXNlQ29uc3RydWN0b3IoKSBjb25zdCB7IHJldHVybiBtX3Byb21pc2VDb25z
dHJ1Y3Rvci5nZXQoKTsgfQogCiAgICAgTnVsbEdldHRlckZ1bmN0aW9uKiBudWxsR2V0dGVyRnVu
Y3Rpb24oKSBjb25zdCB7IHJldHVybiBtX251bGxHZXR0ZXJGdW5jdGlvbi5nZXQoKTsgfQogICAg
IE51bGxTZXR0ZXJGdW5jdGlvbiogbnVsbFNldHRlckZ1bmN0aW9uKCkgY29uc3QgeyByZXR1cm4g
bV9udWxsU2V0dGVyRnVuY3Rpb24uZ2V0KCk7IH0KQEAgLTQwNyw2ICs0MjEsOCBAQCBjbGFzcyBK
U0dsb2JhbE9iamVjdCA6IHB1YmxpYyBKU1NlZ21lbnRlZFZhcmlhYmxlT2JqZWN0IHsKICAgICAg
ICAgcmV0dXJuIG1fdGhyb3dUeXBlRXJyb3JHZXR0ZXJTZXR0ZXIuZ2V0KCk7CiAgICAgfQogCisg
ICAgTW9kdWxlTG9hZGVyT2JqZWN0KiBtb2R1bGVMb2FkZXIoKSBjb25zdCB7IHJldHVybiBtX21v
ZHVsZUxvYWRlci5nZXQoKTsgfQorCiAgICAgT2JqZWN0UHJvdG90eXBlKiBvYmplY3RQcm90b3R5
cGUoKSBjb25zdCB7IHJldHVybiBtX29iamVjdFByb3RvdHlwZS5nZXQoKTsgfQogICAgIEZ1bmN0
aW9uUHJvdG90eXBlKiBmdW5jdGlvblByb3RvdHlwZSgpIGNvbnN0IHsgcmV0dXJuIG1fZnVuY3Rp
b25Qcm90b3R5cGUuZ2V0KCk7IH0KICAgICBBcnJheVByb3RvdHlwZSogYXJyYXlQcm90b3R5cGUo
KSBjb25zdCB7IHJldHVybiBtX2FycmF5UHJvdG90eXBlLmdldCgpOyB9CkBAIC00MTgsNyArNDM0
LDYgQEAgY2xhc3MgSlNHbG9iYWxPYmplY3QgOiBwdWJsaWMgSlNTZWdtZW50ZWRWYXJpYWJsZU9i
amVjdCB7CiAgICAgUmVnRXhwUHJvdG90eXBlKiByZWdFeHBQcm90b3R5cGUoKSBjb25zdCB7IHJl
dHVybiBtX3JlZ0V4cFByb3RvdHlwZS5nZXQoKTsgfQogICAgIEVycm9yUHJvdG90eXBlKiBlcnJv
clByb3RvdHlwZSgpIGNvbnN0IHsgcmV0dXJuIG1fZXJyb3JQcm90b3R5cGUuZ2V0KCk7IH0KICAg
ICBJdGVyYXRvclByb3RvdHlwZSogaXRlcmF0b3JQcm90b3R5cGUoKSBjb25zdCB7IHJldHVybiBt
X2l0ZXJhdG9yUHJvdG90eXBlLmdldCgpOyB9Ci0gICAgSlNQcm9taXNlUHJvdG90eXBlKiBwcm9t
aXNlUHJvdG90eXBlKCkgY29uc3QgeyByZXR1cm4gbV9wcm9taXNlUHJvdG90eXBlLmdldCgpOyB9
CiAKICAgICBTdHJ1Y3R1cmUqIGRlYnVnZ2VyU2NvcGVTdHJ1Y3R1cmUoKSBjb25zdCB7IHJldHVy
biBtX2RlYnVnZ2VyU2NvcGVTdHJ1Y3R1cmUuZ2V0KCk7IH0KICAgICBTdHJ1Y3R1cmUqIHdpdGhT
Y29wZVN0cnVjdHVyZSgpIGNvbnN0IHsgcmV0dXJuIG1fd2l0aFNjb3BlU3RydWN0dXJlLmdldCgp
OyB9CkBAIC00NzUsNyArNDkwLDcgQEAgY2xhc3MgSlNHbG9iYWxPYmplY3QgOiBwdWJsaWMgSlNT
ZWdtZW50ZWRWYXJpYWJsZU9iamVjdCB7CiAgICAgU3RydWN0dXJlKiBpdGVyYXRvclJlc3VsdFN0
cnVjdHVyZSgpIGNvbnN0IHsgcmV0dXJuIG1faXRlcmF0b3JSZXN1bHRTdHJ1Y3R1cmUuZ2V0KCk7
IH0KICAgICBzdGF0aWMgcHRyZGlmZl90IGl0ZXJhdG9yUmVzdWx0U3RydWN0dXJlT2Zmc2V0KCkg
eyByZXR1cm4gT0JKRUNUX09GRlNFVE9GKEpTR2xvYmFsT2JqZWN0LCBtX2l0ZXJhdG9yUmVzdWx0
U3RydWN0dXJlKTsgfQogICAgIFN0cnVjdHVyZSogcmVnRXhwTWF0Y2hlc0FycmF5U3RydWN0dXJl
KCkgY29uc3QgeyByZXR1cm4gbV9yZWdFeHBNYXRjaGVzQXJyYXlTdHJ1Y3R1cmUuZ2V0KCk7IH0K
LSAgICBTdHJ1Y3R1cmUqIHByb21pc2VTdHJ1Y3R1cmUoKSBjb25zdCB7IHJldHVybiBtX3Byb21p
c2VTdHJ1Y3R1cmUuZ2V0KCk7IH0KKyAgICBTdHJ1Y3R1cmUqIG1vZHVsZVJlY29yZFN0cnVjdHVy
ZSgpIGNvbnN0IHsgcmV0dXJuIG1fbW9kdWxlUmVjb3JkU3RydWN0dXJlLmdldCgpOyB9CiAjaWYg
RU5BQkxFKFdFQkFTU0VNQkxZKQogICAgIFN0cnVjdHVyZSogd2FzbU1vZHVsZVN0cnVjdHVyZSgp
IGNvbnN0IHsgcmV0dXJuIG1fd2FzbU1vZHVsZVN0cnVjdHVyZS5nZXQoKTsgfQogI2VuZGlmCmRp
ZmYgLS1naXQgYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9KU01vZHVsZVJlY29yZC5j
cHAgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9KU01vZHVsZVJlY29yZC5jcHAKbmV3
IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMC4uN2RlMTg2MDk0MGNlMTljZTUwOGMxMjAyODJlOTQ0ZjNjYTQyMDVkOQotLS0gL2Rl
di9udWxsCisrKyBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL0pTTW9kdWxlUmVjb3Jk
LmNwcApAQCAtMCwwICsxLDExMyBAQAorLyoKKyAqIENvcHlyaWdodCAoQykgMjAxNSBBcHBsZSBJ
bmMuIEFsbCByaWdodHMgcmVzZXJ2ZWQuCisgKgorICogUmVkaXN0cmlidXRpb24gYW5kIHVzZSBp
biBzb3VyY2UgYW5kIGJpbmFyeSBmb3Jtcywgd2l0aCBvciB3aXRob3V0CisgKiBtb2RpZmljYXRp
b24sIGFyZSBwZXJtaXR0ZWQgcHJvdmlkZWQgdGhhdCB0aGUgZm9sbG93aW5nIGNvbmRpdGlvbnMK
KyAqIGFyZSBtZXQ6CisgKiAxLiBSZWRpc3RyaWJ1dGlvbnMgb2Ygc291cmNlIGNvZGUgbXVzdCBy
ZXRhaW4gdGhlIGFib3ZlIGNvcHlyaWdodAorICogICAgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29u
ZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyLgorICogMi4gUmVkaXN0cmlidXRp
b25zIGluIGJpbmFyeSBmb3JtIG11c3QgcmVwcm9kdWNlIHRoZSBhYm92ZSBjb3B5cmlnaHQKKyAq
ICAgIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlz
Y2xhaW1lciBpbiB0aGUKKyAqICAgIGRvY3VtZW50YXRpb24gYW5kL29yIG90aGVyIG1hdGVyaWFs
cyBwcm92aWRlZCB3aXRoIHRoZSBkaXN0cmlidXRpb24uCisgKgorICogVEhJUyBTT0ZUV0FSRSBJ
UyBQUk9WSURFRCBCWSBBUFBMRSBJTkMuIGBgQVMgSVMnJyBBTkQgQU5ZCisgKiBFWFBSRVNTIE9S
IElNUExJRUQgV0FSUkFOVElFUywgSU5DTFVESU5HLCBCVVQgTk9UIExJTUlURUQgVE8sIFRIRQor
ICogSU1QTElFRCBXQVJSQU5USUVTIE9GIE1FUkNIQU5UQUJJTElUWSBBTkQgRklUTkVTUyBGT1Ig
QSBQQVJUSUNVTEFSCisgKiBQVVJQT1NFIEFSRSBESVNDTEFJTUVELiAgSU4gTk8gRVZFTlQgU0hB
TEwgQVBQTEUgSU5DLiBPUgorICogQ09OVFJJQlVUT1JTIEJFIExJQUJMRSBGT1IgQU5ZIERJUkVD
VCwgSU5ESVJFQ1QsIElOQ0lERU5UQUwsIFNQRUNJQUwsCisgKiBFWEVNUExBUlksIE9SIENPTlNF
UVVFTlRJQUwgREFNQUdFUyAoSU5DTFVESU5HLCBCVVQgTk9UIExJTUlURUQgVE8sCisgKiBQUk9D
VVJFTUVOVCBPRiBTVUJTVElUVVRFIEdPT0RTIE9SIFNFUlZJQ0VTOyBMT1NTIE9GIFVTRSwgREFU
QSwgT1IKKyAqIFBST0ZJVFM7IE9SIEJVU0lORVNTIElOVEVSUlVQVElPTikgSE9XRVZFUiBDQVVT
RUQgQU5EIE9OIEFOWSBUSEVPUlkKKyAqIE9GIExJQUJJTElUWSwgV0hFVEhFUiBJTiBDT05UUkFD
VCwgU1RSSUNUIExJQUJJTElUWSwgT1IgVE9SVAorICogKElOQ0xVRElORyBORUdMSUdFTkNFIE9S
IE9USEVSV0lTRSkgQVJJU0lORyBJTiBBTlkgV0FZIE9VVCBPRiBUSEUgVVNFCisgKiBPRiBUSElT
IFNPRlRXQVJFLCBFVkVOIElGIEFEVklTRUQgT0YgVEhFIFBPU1NJQklMSVRZIE9GIFNVQ0ggREFN
QUdFLiAKKyAqLworCisjaW5jbHVkZSAiY29uZmlnLmgiCisjaW5jbHVkZSAiSlNNb2R1bGVSZWNv
cmQuaCIKKworI2luY2x1ZGUgIklkZW50aWZpZXJJbmxpbmVzLmgiCisjaW5jbHVkZSAiSlNDSlNW
YWx1ZUlubGluZXMuaCIKKyNpbmNsdWRlICJKU0NlbGxJbmxpbmVzLmgiCisjaW5jbHVkZSAiU3Ry
dWN0dXJlSW5saW5lcy5oIgorCituYW1lc3BhY2UgSlNDIHsKKworY29uc3QgQ2xhc3NJbmZvIEpT
TW9kdWxlUmVjb3JkOjpzX2luZm8gPSB7ICJNb2R1bGVSZWNvcmQiLCAmQmFzZTo6c19pbmZvLCAw
LCBDUkVBVEVfTUVUSE9EX1RBQkxFKEpTTW9kdWxlUmVjb3JkKSB9OworCit2b2lkIEpTTW9kdWxl
UmVjb3JkOjpkZXN0cm95KEpTQ2VsbCogY2VsbCkKK3sKKyAgICBKU01vZHVsZVJlY29yZCogdGhp
c09iamVjdCA9IGpzQ2FzdDxKU01vZHVsZVJlY29yZCo+KGNlbGwpOworICAgIHRoaXNPYmplY3Qt
PkpTTW9kdWxlUmVjb3JkOjp+SlNNb2R1bGVSZWNvcmQoKTsKK30KKworCit2b2lkIEpTTW9kdWxl
UmVjb3JkOjpmaW5pc2hDcmVhdGlvbihWTSYgdm0pCit7CisgICAgQmFzZTo6ZmluaXNoQ3JlYXRp
b24odm0pOworICAgIEFTU0VSVChpbmhlcml0cyhpbmZvKCkpKTsKKyAgICBwdXREaXJlY3Qodm0s
IElkZW50aWZpZXI6OmZyb21TdHJpbmcoJnZtLCBBU0NJSUxpdGVyYWwoInJlZ2lzdHJ5RW50cnki
KSksIGpzVW5kZWZpbmVkKCkpOworfQorCithdXRvIEpTTW9kdWxlUmVjb3JkOjpFeHBvcnRFbnRy
eTo6Y3JlYXRlTG9jYWwoY29uc3QgSWRlbnRpZmllciYgZXhwb3J0TmFtZSwgY29uc3QgSWRlbnRp
ZmllciYgbG9jYWxOYW1lLCBjb25zdCBWYXJpYWJsZUVudmlyb25tZW50RW50cnkmIHZhcmlhYmxl
KSAtPiBFeHBvcnRFbnRyeQoreworICAgIHJldHVybiBFeHBvcnRFbnRyeSB7IFR5cGU6OkxvY2Fs
LCBleHBvcnROYW1lLCBJZGVudGlmaWVyKCksIElkZW50aWZpZXIoKSwgbG9jYWxOYW1lLCB2YXJp
YWJsZSB9OworfQorCithdXRvIEpTTW9kdWxlUmVjb3JkOjpFeHBvcnRFbnRyeTo6Y3JlYXRlTmFt
ZXNwYWNlKGNvbnN0IElkZW50aWZpZXImIGV4cG9ydE5hbWUsIGNvbnN0IElkZW50aWZpZXImIG1v
ZHVsZU5hbWUpIC0+IEV4cG9ydEVudHJ5Cit7CisgICAgcmV0dXJuIEV4cG9ydEVudHJ5IHsgVHlw
ZTo6TmFtZXNwYWNlLCBleHBvcnROYW1lLCBtb2R1bGVOYW1lLCBJZGVudGlmaWVyKCksIElkZW50
aWZpZXIoKSwgVmFyaWFibGVFbnZpcm9ubWVudEVudHJ5KCkgfTsKK30KKworYXV0byBKU01vZHVs
ZVJlY29yZDo6RXhwb3J0RW50cnk6OmNyZWF0ZUluZGlyZWN0KGNvbnN0IElkZW50aWZpZXImIGV4
cG9ydE5hbWUsIGNvbnN0IElkZW50aWZpZXImIGltcG9ydE5hbWUsIGNvbnN0IElkZW50aWZpZXIm
IG1vZHVsZU5hbWUpIC0+IEV4cG9ydEVudHJ5Cit7CisgICAgcmV0dXJuIEV4cG9ydEVudHJ5IHsg
VHlwZTo6SW5kaXJlY3QsIGV4cG9ydE5hbWUsIG1vZHVsZU5hbWUsIGltcG9ydE5hbWUsIElkZW50
aWZpZXIoKSwgVmFyaWFibGVFbnZpcm9ubWVudEVudHJ5KCkgfTsKK30KKworc3RhdGljIFN0cmlu
ZyBwcmludGFibGVOYW1lKGNvbnN0IFJlZlB0cjxVbmlxdWVkU3RyaW5nSW1wbD4mIHVpZCkKK3sK
KyAgICBpZiAodWlkLT5pc1N5bWJvbCgpKQorICAgICAgICByZXR1cm4gdWlkLmdldCgpOworICAg
IHJldHVybiBXVEY6Om1ha2VTdHJpbmcoIiciLCBTdHJpbmcodWlkLmdldCgpKSwgIiciKTsKK30K
Kworc3RhdGljIFN0cmluZyBwcmludGFibGVOYW1lKGNvbnN0IElkZW50aWZpZXImIGlkZW50KQor
eworICAgIHJldHVybiBwcmludGFibGVOYW1lKGlkZW50LmltcGwoKSk7Cit9CisKKwordm9pZCBK
U01vZHVsZVJlY29yZDo6ZHVtcCgpCit7CisgICAgZGF0YUxvZygiXG5BbmFseXppbmcgTW9kdWxl
UmVjb3JkXG4iKTsKKworICAgIGRhdGFMb2coIiAgICBEZXBlbmRlbmNpZXM6ICIsIG1fcmVxdWVz
dGVkTW9kdWxlcy5zaXplKCksICIgbW9kdWxlc1xuIik7CisgICAgZm9yIChjb25zdCBhdXRvJiBt
b2R1bGVOYW1lIDogbV9yZXF1ZXN0ZWRNb2R1bGVzKQorICAgICAgICBkYXRhTG9nKCIgICAgICBt
b2R1bGUoIiwgcHJpbnRhYmxlTmFtZShtb2R1bGVOYW1lKSwgIilcbiIpOworCisgICAgZGF0YUxv
ZygiICAgIEltcG9ydDogIiwgbV9pbXBvcnRFbnRyaWVzLnNpemUoKSwgIiBlbnRyaWVzXG4iKTsK
KyAgICBmb3IgKGNvbnN0IGF1dG8mIHBhaXIgOiBtX2ltcG9ydEVudHJpZXMpCisgICAgICAgIGRh
dGFMb2coIiAgICAgIGltcG9ydCgiLCBwcmludGFibGVOYW1lKHBhaXIudmFsdWUuaW1wb3J0TmFt
ZSksICIpLCBsb2NhbCgiLCBwcmludGFibGVOYW1lKHBhaXIudmFsdWUubG9jYWxOYW1lKSwgIiks
IG1vZHVsZSgiLCBwcmludGFibGVOYW1lKHBhaXIudmFsdWUubW9kdWxlUmVxdWVzdCksICIpXG4i
KTsKKworICAgIGRhdGFMb2coIiAgICBFeHBvcnQ6ICIsIG1fZXhwb3J0RW50cmllcy5zaXplKCks
ICIgZW50cmllc1xuIik7CisgICAgZm9yIChjb25zdCBhdXRvJiBwYWlyIDogbV9leHBvcnRFbnRy
aWVzKSB7CisgICAgICAgIGNvbnN0IEV4cG9ydEVudHJ5JiBlbnRyeSA9IHBhaXIudmFsdWU7Cisg
ICAgICAgIHN3aXRjaCAoZW50cnkudHlwZSkgeworICAgICAgICBjYXNlIEV4cG9ydEVudHJ5OjpU
eXBlOjpMb2NhbDoKKyAgICAgICAgICAgIGRhdGFMb2coIiAgICAgIFtMb2NhbF0gIiwgImV4cG9y
dCgiLCBwcmludGFibGVOYW1lKGVudHJ5LmV4cG9ydE5hbWUpLCAiKSwgbG9jYWwoIiwgcHJpbnRh
YmxlTmFtZShlbnRyeS5sb2NhbE5hbWUpLCAiKVxuIik7CisgICAgICAgICAgICBicmVhazsKKwor
ICAgICAgICBjYXNlIEV4cG9ydEVudHJ5OjpUeXBlOjpOYW1lc3BhY2U6CisgICAgICAgICAgICBk
YXRhTG9nKCIgICAgICBbTmFtZXNwYWNlXSAiLCAiZXhwb3J0KCIsIHByaW50YWJsZU5hbWUoZW50
cnkuZXhwb3J0TmFtZSksICIpLCBtb2R1bGUoIiwgcHJpbnRhYmxlTmFtZShlbnRyeS5tb2R1bGVO
YW1lKSwgIilcbiIpOworICAgICAgICAgICAgYnJlYWs7CisKKyAgICAgICAgY2FzZSBFeHBvcnRF
bnRyeTo6VHlwZTo6SW5kaXJlY3Q6CisgICAgICAgICAgICBkYXRhTG9nKCIgICAgICBbSW5kaXJl
Y3RdICIsICJleHBvcnQoIiwgcHJpbnRhYmxlTmFtZShlbnRyeS5leHBvcnROYW1lKSwgIiksIGlt
cG9ydCgiLCBwcmludGFibGVOYW1lKGVudHJ5LmltcG9ydE5hbWUpLCAiKSwgbW9kdWxlKCIsIHBy
aW50YWJsZU5hbWUoZW50cnkubW9kdWxlTmFtZSksICIpXG4iKTsKKyAgICAgICAgICAgIGJyZWFr
OworICAgICAgICB9CisgICAgfQorICAgIGZvciAoY29uc3QgYXV0byYgbW9kdWxlTmFtZSA6IG1f
c3RhckV4cG9ydEVudHJpZXMpCisgICAgICAgIGRhdGFMb2coIiAgICAgIFtTdGFyXSBtb2R1bGUo
IiwgcHJpbnRhYmxlTmFtZShtb2R1bGVOYW1lLmdldCgpKSwgIilcbiIpOworfQorCit9IC8vIG5h
bWVzcGFjZSBKU0MKZGlmZiAtLWdpdCBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL0pT
TW9kdWxlUmVjb3JkLmggYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9KU01vZHVsZVJl
Y29yZC5oCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAuLjk2ZTJmZGY0NTBlNWRiODcyOWM1ZmNjNTVmYjc4ZDJjNGY2Yzk3
ODEKLS0tIC9kZXYvbnVsbAorKysgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9KU01v
ZHVsZVJlY29yZC5oCkBAIC0wLDAgKzEsMTU3IEBACisvKgorICogQ29weXJpZ2h0IChDKSAyMDE1
IEFwcGxlIEluYy4gQWxsIHJpZ2h0cyByZXNlcnZlZC4KKyAqCisgKiBSZWRpc3RyaWJ1dGlvbiBh
bmQgdXNlIGluIHNvdXJjZSBhbmQgYmluYXJ5IGZvcm1zLCB3aXRoIG9yIHdpdGhvdXQKKyAqIG1v
ZGlmaWNhdGlvbiwgYXJlIHBlcm1pdHRlZCBwcm92aWRlZCB0aGF0IHRoZSBmb2xsb3dpbmcgY29u
ZGl0aW9ucworICogYXJlIG1ldDoKKyAqIDEuIFJlZGlzdHJpYnV0aW9ucyBvZiBzb3VyY2UgY29k
ZSBtdXN0IHJldGFpbiB0aGUgYWJvdmUgY29weXJpZ2h0CisgKiAgICBub3RpY2UsIHRoaXMgbGlz
dCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIuCisgKiAyLiBSZWRp
c3RyaWJ1dGlvbnMgaW4gYmluYXJ5IGZvcm0gbXVzdCByZXByb2R1Y2UgdGhlIGFib3ZlIGNvcHly
aWdodAorICogICAgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxv
d2luZyBkaXNjbGFpbWVyIGluIHRoZQorICogICAgZG9jdW1lbnRhdGlvbiBhbmQvb3Igb3RoZXIg
bWF0ZXJpYWxzIHByb3ZpZGVkIHdpdGggdGhlIGRpc3RyaWJ1dGlvbi4KKyAqCisgKiBUSElTIFNP
RlRXQVJFIElTIFBST1ZJREVEIEJZIEFQUExFIElOQy4gYGBBUyBJUycnIEFORCBBTlkKKyAqIEVY
UFJFU1MgT1IgSU1QTElFRCBXQVJSQU5USUVTLCBJTkNMVURJTkcsIEJVVCBOT1QgTElNSVRFRCBU
TywgVEhFCisgKiBJTVBMSUVEIFdBUlJBTlRJRVMgT0YgTUVSQ0hBTlRBQklMSVRZIEFORCBGSVRO
RVNTIEZPUiBBIFBBUlRJQ1VMQVIKKyAqIFBVUlBPU0UgQVJFIERJU0NMQUlNRUQuICBJTiBOTyBF
VkVOVCBTSEFMTCBBUFBMRSBJTkMuIE9SCisgKiBDT05UUklCVVRPUlMgQkUgTElBQkxFIEZPUiBB
TlkgRElSRUNULCBJTkRJUkVDVCwgSU5DSURFTlRBTCwgU1BFQ0lBTCwKKyAqIEVYRU1QTEFSWSwg
T1IgQ09OU0VRVUVOVElBTCBEQU1BR0VTIChJTkNMVURJTkcsIEJVVCBOT1QgTElNSVRFRCBUTywK
KyAqIFBST0NVUkVNRU5UIE9GIFNVQlNUSVRVVEUgR09PRFMgT1IgU0VSVklDRVM7IExPU1MgT0Yg
VVNFLCBEQVRBLCBPUgorICogUFJPRklUUzsgT1IgQlVTSU5FU1MgSU5URVJSVVBUSU9OKSBIT1dF
VkVSIENBVVNFRCBBTkQgT04gQU5ZIFRIRU9SWQorICogT0YgTElBQklMSVRZLCBXSEVUSEVSIElO
IENPTlRSQUNULCBTVFJJQ1QgTElBQklMSVRZLCBPUiBUT1JUCisgKiAoSU5DTFVESU5HIE5FR0xJ
R0VOQ0UgT1IgT1RIRVJXSVNFKSBBUklTSU5HIElOIEFOWSBXQVkgT1VUIE9GIFRIRSBVU0UKKyAq
IE9GIFRISVMgU09GVFdBUkUsIEVWRU4gSUYgQURWSVNFRCBPRiBUSEUgUE9TU0lCSUxJVFkgT0Yg
U1VDSCBEQU1BR0UuCisgKi8KKworI2lmbmRlZiBKU01vZHVsZVJlY29yZF9oCisjZGVmaW5lIEpT
TW9kdWxlUmVjb3JkX2gKKworI2luY2x1ZGUgIklkZW50aWZpZXIuaCIKKyNpbmNsdWRlICJKU0Rl
c3RydWN0aWJsZU9iamVjdC5oIgorI2luY2x1ZGUgIlZhcmlhYmxlRW52aXJvbm1lbnQuaCIKKyNp
bmNsdWRlIDx3dGYvSGFzaE1hcC5oPgorI2luY2x1ZGUgPHd0Zi9MaXN0SGFzaFNldC5oPgorCitu
YW1lc3BhY2UgSlNDIHsKKworLy8gQmFzZWQgb24gdGhlIFNvdXJjZSBUZXh0IE1vZHVsZSBSZWNv
cmQKKy8vIGh0dHA6Ly93d3cuZWNtYS1pbnRlcm5hdGlvbmFsLm9yZy9lY21hLTI2Mi82LjAvI3Nl
Yy1zb3VyY2UtdGV4dC1tb2R1bGUtcmVjb3JkcworY2xhc3MgSlNNb2R1bGVSZWNvcmQgOiBwdWJs
aWMgSlNEZXN0cnVjdGlibGVPYmplY3QgeworcHVibGljOgorICAgIHR5cGVkZWYgSlNEZXN0cnVj
dGlibGVPYmplY3QgQmFzZTsKKworICAgIHN0cnVjdCBFeHBvcnRFbnRyeSB7CisgICAgICAgIGVu
dW0gY2xhc3MgVHlwZSB7CisgICAgICAgICAgICBMb2NhbCwKKyAgICAgICAgICAgIE5hbWVzcGFj
ZSwKKyAgICAgICAgICAgIEluZGlyZWN0CisgICAgICAgIH07CisKKyAgICAgICAgc3RhdGljIEV4
cG9ydEVudHJ5IGNyZWF0ZUxvY2FsKGNvbnN0IElkZW50aWZpZXImIGV4cG9ydE5hbWUsIGNvbnN0
IElkZW50aWZpZXImIGxvY2FsTmFtZSwgY29uc3QgVmFyaWFibGVFbnZpcm9ubWVudEVudHJ5Jik7
CisgICAgICAgIHN0YXRpYyBFeHBvcnRFbnRyeSBjcmVhdGVOYW1lc3BhY2UoY29uc3QgSWRlbnRp
ZmllciYgZXhwb3J0TmFtZSwgY29uc3QgSWRlbnRpZmllciYgbW9kdWxlTmFtZSk7CisgICAgICAg
IHN0YXRpYyBFeHBvcnRFbnRyeSBjcmVhdGVJbmRpcmVjdChjb25zdCBJZGVudGlmaWVyJiBleHBv
cnROYW1lLCBjb25zdCBJZGVudGlmaWVyJiBpbXBvcnROYW1lLCBjb25zdCBJZGVudGlmaWVyJiBt
b2R1bGVOYW1lKTsKKworICAgICAgICBUeXBlIHR5cGU7CisgICAgICAgIElkZW50aWZpZXIgZXhw
b3J0TmFtZTsKKyAgICAgICAgSWRlbnRpZmllciBtb2R1bGVOYW1lOworICAgICAgICBJZGVudGlm
aWVyIGltcG9ydE5hbWU7CisgICAgICAgIElkZW50aWZpZXIgbG9jYWxOYW1lOworICAgICAgICBW
YXJpYWJsZUVudmlyb25tZW50RW50cnkgdmFyaWFibGU7CisgICAgfTsKKworICAgIHN0cnVjdCBJ
bXBvcnRFbnRyeSB7CisgICAgICAgIElkZW50aWZpZXIgbW9kdWxlUmVxdWVzdDsKKyAgICAgICAg
SWRlbnRpZmllciBpbXBvcnROYW1lOworICAgICAgICBJZGVudGlmaWVyIGxvY2FsTmFtZTsKKwor
ICAgICAgICBib29sIGlzTmFtZXNwYWNlKFZNJiB2bSkgY29uc3QKKyAgICAgICAgeworICAgICAg
ICAgICAgcmV0dXJuIGltcG9ydE5hbWUgPT0gdm0ucHJvcGVydHlOYW1lcy0+dGltZXNJZGVudGlm
aWVyOworICAgICAgICB9CisgICAgfTsKKworICAgIHR5cGVkZWYgV1RGOjpMaXN0SGFzaFNldDxS
ZWZQdHI8VW5pcXVlZFN0cmluZ0ltcGw+LCBJZGVudGlmaWVyUmVwSGFzaD4gT3JkZXJlZElkZW50
aWZpZXJTZXQ7CisgICAgdHlwZWRlZiBIYXNoTWFwPFJlZlB0cjxVbmlxdWVkU3RyaW5nSW1wbD4s
IEltcG9ydEVudHJ5LCBJZGVudGlmaWVyUmVwSGFzaCwgSGFzaFRyYWl0czxSZWZQdHI8VW5pcXVl
ZFN0cmluZ0ltcGw+Pj4gSW1wb3J0TWFwOworICAgIHR5cGVkZWYgSGFzaE1hcDxSZWZQdHI8VW5p
cXVlZFN0cmluZ0ltcGw+LCBFeHBvcnRFbnRyeSwgSWRlbnRpZmllclJlcEhhc2gsIEhhc2hUcmFp
dHM8UmVmUHRyPFVuaXF1ZWRTdHJpbmdJbXBsPj4+IEV4cG9ydE1hcDsKKworICAgIERFQ0xBUkVf
RVhQT1JUX0lORk87CisKKyAgICBzdGF0aWMgU3RydWN0dXJlKiBjcmVhdGVTdHJ1Y3R1cmUoVk0m
IHZtLCBKU0dsb2JhbE9iamVjdCogZ2xvYmFsT2JqZWN0LCBKU1ZhbHVlIHByb3RvdHlwZSkKKyAg
ICB7CisgICAgICAgIHJldHVybiBTdHJ1Y3R1cmU6OmNyZWF0ZSh2bSwgZ2xvYmFsT2JqZWN0LCBw
cm90b3R5cGUsIFR5cGVJbmZvKE9iamVjdFR5cGUsIFN0cnVjdHVyZUZsYWdzKSwgaW5mbygpKTsK
KyAgICB9CisKKyAgICBzdGF0aWMgSlNNb2R1bGVSZWNvcmQqIGNyZWF0ZShWTSYgdm0sIFN0cnVj
dHVyZSogc3RydWN0dXJlKQorICAgIHsKKyAgICAgICAgSlNNb2R1bGVSZWNvcmQqIGluc3RhbmNl
ID0gbmV3IChOb3ROdWxsLCBhbGxvY2F0ZUNlbGw8SlNNb2R1bGVSZWNvcmQ+KHZtLmhlYXApKSBK
U01vZHVsZVJlY29yZCh2bSwgc3RydWN0dXJlKTsKKyAgICAgICAgaW5zdGFuY2UtPmZpbmlzaENy
ZWF0aW9uKHZtKTsKKyAgICAgICAgcmV0dXJuIGluc3RhbmNlOworICAgIH0KKworICAgIHN0YXRp
YyBKU01vZHVsZVJlY29yZCogY3JlYXRlKEV4ZWNTdGF0ZSogZXhlYywgU3RydWN0dXJlKiBzdHJ1
Y3R1cmUpCisgICAgeworICAgICAgICByZXR1cm4gY3JlYXRlKGV4ZWMtPnZtKCksIHN0cnVjdHVy
ZSk7CisgICAgfQorCisgICAgdm9pZCBhcHBlbmRSZXF1ZXN0ZWRNb2R1bGUoY29uc3QgSWRlbnRp
ZmllciYpOworICAgIHZvaWQgYWRkU3RhckV4cG9ydEVudHJ5KGNvbnN0IElkZW50aWZpZXImKTsK
KyAgICB2b2lkIGFkZEltcG9ydEVudHJ5KGNvbnN0IEltcG9ydEVudHJ5Jik7CisgICAgdm9pZCBh
ZGRFeHBvcnRFbnRyeShjb25zdCBFeHBvcnRFbnRyeSYpOworCisgICAgY29uc3QgSW1wb3J0RW50
cnkmIGxvb2tVcEltcG9ydEVudHJ5KGNvbnN0IFJlZlB0cjxVbmlxdWVkU3RyaW5nSW1wbD4mIGxv
Y2FsTmFtZSk7CisKKyAgICBjb25zdCBPcmRlcmVkSWRlbnRpZmllclNldCYgcmVxdWVzdGVkTW9k
dWxlcygpIGNvbnN0IHsgcmV0dXJuIG1fcmVxdWVzdGVkTW9kdWxlczsgfQorCisgICAgdm9pZCBk
dW1wKCk7CisKK3ByaXZhdGU6CisgICAgSlNNb2R1bGVSZWNvcmQoVk0mIHZtLCBTdHJ1Y3R1cmUq
IHN0cnVjdHVyZSkKKyAgICAgICAgOiBCYXNlKHZtLCBzdHJ1Y3R1cmUpCisgICAgeworICAgIH0K
KworICAgIHZvaWQgZmluaXNoQ3JlYXRpb24oVk0mKTsKKworICAgIHN0YXRpYyB2b2lkIGRlc3Ry
b3koSlNDZWxsKik7CisKKyAgICAvLyBNYXAgbG9jYWxOYW1lIC0+IEltcG9ydEVudHJ5LgorICAg
IEltcG9ydE1hcCBtX2ltcG9ydEVudHJpZXM7CisKKyAgICAvLyBNYXAgZXhwb3J0TmFtZSAtPiBF
eHBvcnRFbnRyeS4KKyAgICBFeHBvcnRNYXAgbV9leHBvcnRFbnRyaWVzOworCisgICAgSWRlbnRp
ZmllclNldCBtX3N0YXJFeHBvcnRFbnRyaWVzOworCisgICAgLy8gU2F2ZSB0aGUgb2NjdXJyZW5j
ZSBvcmRlciBzaW5jZSB0aGUgbW9kdWxlIGxvYWRlciBsb2FkcyBhbmQgcnVucyB0aGUgbW9kdWxl
cyBpbiB0aGlzIG9yZGVyLgorICAgIC8vIGh0dHA6Ly93d3cuZWNtYS1pbnRlcm5hdGlvbmFsLm9y
Zy9lY21hLTI2Mi82LjAvI3NlYy1tb2R1bGVldmFsdWF0aW9uCisgICAgT3JkZXJlZElkZW50aWZp
ZXJTZXQgbV9yZXF1ZXN0ZWRNb2R1bGVzOworfTsKKworaW5saW5lIHZvaWQgSlNNb2R1bGVSZWNv
cmQ6OmFwcGVuZFJlcXVlc3RlZE1vZHVsZShjb25zdCBJZGVudGlmaWVyJiBtb2R1bGVOYW1lKQor
eworICAgIG1fcmVxdWVzdGVkTW9kdWxlcy5hZGQobW9kdWxlTmFtZS5pbXBsKCkpOworfQorCitp
bmxpbmUgdm9pZCBKU01vZHVsZVJlY29yZDo6YWRkSW1wb3J0RW50cnkoY29uc3QgSW1wb3J0RW50
cnkmIGVudHJ5KQoreworICAgIG1faW1wb3J0RW50cmllcy5hZGQoZW50cnkubG9jYWxOYW1lLmlt
cGwoKSwgZW50cnkpOworfQorCitpbmxpbmUgdm9pZCBKU01vZHVsZVJlY29yZDo6YWRkRXhwb3J0
RW50cnkoY29uc3QgRXhwb3J0RW50cnkmIGVudHJ5KQoreworICAgIG1fZXhwb3J0RW50cmllcy5h
ZGQoZW50cnkuZXhwb3J0TmFtZS5pbXBsKCksIGVudHJ5KTsKK30KKworaW5saW5lIHZvaWQgSlNN
b2R1bGVSZWNvcmQ6OmFkZFN0YXJFeHBvcnRFbnRyeShjb25zdCBJZGVudGlmaWVyJiBtb2R1bGVO
YW1lKQoreworICAgIG1fc3RhckV4cG9ydEVudHJpZXMuYWRkKG1vZHVsZU5hbWUuaW1wbCgpKTsK
K30KKworaW5saW5lIGF1dG8gSlNNb2R1bGVSZWNvcmQ6Omxvb2tVcEltcG9ydEVudHJ5KGNvbnN0
IFJlZlB0cjxVbmlxdWVkU3RyaW5nSW1wbD4mIGxvY2FsTmFtZSkgLT4gY29uc3QgSW1wb3J0RW50
cnkmCit7CisgICAgcmV0dXJuICgqbV9pbXBvcnRFbnRyaWVzLmZpbmQobG9jYWxOYW1lKSkudmFs
dWU7Cit9CisKK30gLy8gbmFtZXNwYWNlIEpTQworCisjZW5kaWYgLy8gSlNNb2R1bGVSZWNvcmRf
aApkaWZmIC0tZ2l0IGEvU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvSlNQcm9taXNlQ29u
c3RydWN0b3IuY3BwIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvSlNQcm9taXNlQ29u
c3RydWN0b3IuY3BwCmluZGV4IDQ0ZTFlNzNjYWJhNTViMGJmNTQwOTJlYzU4NGZlNjU3ZTU0NjFh
ZTUuLjI0M2JjNTI3YzQ2ZmZkNWVkYWQzNjRkNTIwMGZmOGVmOTQ2YzJkODUgMTAwNjQ0Ci0tLSBh
L1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL0pTUHJvbWlzZUNvbnN0cnVjdG9yLmNwcAor
KysgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9KU1Byb21pc2VDb25zdHJ1Y3Rvci5j
cHAKQEAgLTI2LDYgKzI2LDcgQEAKICNpbmNsdWRlICJjb25maWcuaCIKICNpbmNsdWRlICJKU1By
b21pc2VDb25zdHJ1Y3Rvci5oIgogCisjaW5jbHVkZSAiQnVpbHRpbk5hbWVzLmgiCiAjaW5jbHVk
ZSAiRXJyb3IuaCIKICNpbmNsdWRlICJFeGNlcHRpb24uaCIKICNpbmNsdWRlICJJdGVyYXRvck9w
ZXJhdGlvbnMuaCIKQEAgLTgxLDYgKzgyLDcgQEAgdm9pZCBKU1Byb21pc2VDb25zdHJ1Y3Rvcjo6
ZmluaXNoQ3JlYXRpb24oVk0mIHZtLCBKU1Byb21pc2VQcm90b3R5cGUqIHByb21pc2VQcm8KICAg
ICBCYXNlOjpmaW5pc2hDcmVhdGlvbih2bSwgQVNDSUlMaXRlcmFsKCJQcm9taXNlIikpOwogICAg
IHB1dERpcmVjdFdpdGhvdXRUcmFuc2l0aW9uKHZtLCB2bS5wcm9wZXJ0eU5hbWVzLT5wcm90b3R5
cGUsIHByb21pc2VQcm90b3R5cGUsIERvbnRFbnVtIHwgRG9udERlbGV0ZSB8IFJlYWRPbmx5KTsK
ICAgICBwdXREaXJlY3RXaXRob3V0VHJhbnNpdGlvbih2bSwgdm0ucHJvcGVydHlOYW1lcy0+bGVu
Z3RoLCBqc051bWJlcigxKSwgUmVhZE9ubHkgfCBEb250RW51bSB8IERvbnREZWxldGUpOworICAg
IHB1dERpcmVjdEJ1aWx0aW5GdW5jdGlvbldpdGhvdXRUcmFuc2l0aW9uKHZtLCBnbG9iYWxPYmpl
Y3QoKSwgdm0ucHJvcGVydHlOYW1lcy0+YnVpbHRpbk5hbWVzKCkuYWxsUHJpdmF0ZU5hbWUoKSwg
cHJvbWlzZUNvbnN0cnVjdG9yUHJpdmF0ZUFsbENvZGVHZW5lcmF0b3Iodm0pLCBSZWFkT25seSB8
IERvbnRFbnVtIHwgRG9udERlbGV0ZSk7CiB9CiAKIHN0YXRpYyBFbmNvZGVkSlNWYWx1ZSBKU0Nf
SE9TVF9DQUxMIGNvbnN0cnVjdFByb21pc2UoRXhlY1N0YXRlKiBleGVjKQpkaWZmIC0tZ2l0IGEv
U291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvSlNQcm9taXNlRGVmZXJyZWQuY3BwIGIvU291
cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvSlNQcm9taXNlRGVmZXJyZWQuY3BwCmluZGV4IDZm
MzU0MzIzNWJkOGEwOTM4NDE4ZmY3YWZmY2RkMDJiMTM1ODQ3NDcuLjAwMGI2NDYyZGZjN2FhZDQy
MDg0ZTJjOTZmZTMyZTc4MDdjNzAyZGUgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9KYXZhU2NyaXB0Q29y
ZS9ydW50aW1lL0pTUHJvbWlzZURlZmVycmVkLmNwcAorKysgYi9Tb3VyY2UvSmF2YVNjcmlwdENv
cmUvcnVudGltZS9KU1Byb21pc2VEZWZlcnJlZC5jcHAKQEAgLTcyLDYgKzcyLDI4IEBAIEpTUHJv
bWlzZURlZmVycmVkOjpKU1Byb21pc2VEZWZlcnJlZChWTSYgdm0pCiB7CiB9CiAKK3N0YXRpYyB2
b2lkIGNhbGxGdW5jdGlvbihFeGVjU3RhdGUqIGV4ZWMsIEpTVmFsdWUgZnVuY3Rpb24sIEpTVmFs
dWUgdmFsdWUpCit7CisgICAgQ2FsbERhdGEgY2FsbERhdGE7CisgICAgQ2FsbFR5cGUgY2FsbFR5
cGUgPSBnZXRDYWxsRGF0YShmdW5jdGlvbiwgY2FsbERhdGEpOworICAgIEFTU0VSVChjYWxsVHlw
ZSAhPSBDYWxsVHlwZU5vbmUpOworCisgICAgTWFya2VkQXJndW1lbnRCdWZmZXIgYXJndW1lbnRz
OworICAgIGFyZ3VtZW50cy5hcHBlbmQodmFsdWUpOworCisgICAgY2FsbChleGVjLCBmdW5jdGlv
biwgY2FsbFR5cGUsIGNhbGxEYXRhLCBqc1VuZGVmaW5lZCgpLCBhcmd1bWVudHMpOworfQorCit2
b2lkIEpTUHJvbWlzZURlZmVycmVkOjpyZXNvbHZlKEV4ZWNTdGF0ZSogZXhlYywgSlNWYWx1ZSB2
YWx1ZSkKK3sKKyAgICBjYWxsRnVuY3Rpb24oZXhlYywgbV9yZXNvbHZlLmdldCgpLCB2YWx1ZSk7
Cit9CisKK3ZvaWQgSlNQcm9taXNlRGVmZXJyZWQ6OnJlamVjdChFeGVjU3RhdGUqIGV4ZWMsIEpT
VmFsdWUgcmVhc29uKQoreworICAgIGNhbGxGdW5jdGlvbihleGVjLCBtX3JlamVjdC5nZXQoKSwg
cmVhc29uKTsKK30KKwogdm9pZCBKU1Byb21pc2VEZWZlcnJlZDo6ZmluaXNoQ3JlYXRpb24oVk0m
IHZtLCBKU09iamVjdCogcHJvbWlzZSwgSlNWYWx1ZSByZXNvbHZlLCBKU1ZhbHVlIHJlamVjdCkK
IHsKICAgICBCYXNlOjpmaW5pc2hDcmVhdGlvbih2bSk7CmRpZmYgLS1naXQgYS9Tb3VyY2UvSmF2
YVNjcmlwdENvcmUvcnVudGltZS9KU1Byb21pc2VEZWZlcnJlZC5oIGIvU291cmNlL0phdmFTY3Jp
cHRDb3JlL3J1bnRpbWUvSlNQcm9taXNlRGVmZXJyZWQuaAppbmRleCBkZWEwZDE3ZjliNDJjZWM2
N2FjYzgyMzU1MDY1OTVkYjUxZTk0MTA3Li40YTBiNGI4NTY4YTQ3YmRkOWZlMmMzOGY4NTA0NzZm
MmRiOTFkYTI3IDEwMDY0NAotLS0gYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9KU1By
b21pc2VEZWZlcnJlZC5oCisrKyBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL0pTUHJv
bWlzZURlZmVycmVkLmgKQEAgLTUwLDYgKzUwLDkgQEAgY2xhc3MgSlNQcm9taXNlRGVmZXJyZWQg
ZmluYWwgOiBwdWJsaWMgSlNDZWxsIHsKICAgICBKU1ZhbHVlIHJlc29sdmUoKSBjb25zdCB7IHJl
dHVybiBtX3Jlc29sdmUuZ2V0KCk7IH0KICAgICBKU1ZhbHVlIHJlamVjdCgpIGNvbnN0IHsgcmV0
dXJuIG1fcmVqZWN0LmdldCgpOyB9CiAKKyAgICBKU19FWFBPUlRfUFJJVkFURSB2b2lkIHJlc29s
dmUoRXhlY1N0YXRlKiwgSlNWYWx1ZSk7CisgICAgSlNfRVhQT1JUX1BSSVZBVEUgdm9pZCByZWpl
Y3QoRXhlY1N0YXRlKiwgSlNWYWx1ZSk7CisKIHByaXZhdGU6CiAgICAgSlNQcm9taXNlRGVmZXJy
ZWQoVk0mKTsKICAgICB2b2lkIGZpbmlzaENyZWF0aW9uKFZNJiwgSlNPYmplY3QqLCBKU1ZhbHVl
LCBKU1ZhbHVlKTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL0pT
UHJvbWlzZVByb3RvdHlwZS5jcHAgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9KU1By
b21pc2VQcm90b3R5cGUuY3BwCmluZGV4IGEwZjEwMjQzMjBjMTRiYjM2NGU4MTAzNDM5MzVhZDc5
M2E3ZGE0ODYuLjAyNjgzNzM0ODA3NWRhM2U0Nzg3YjRhMmRmNGNlZWVjNTFjYTYxOWQgMTAwNjQ0
Ci0tLSBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL0pTUHJvbWlzZVByb3RvdHlwZS5j
cHAKKysrIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvSlNQcm9taXNlUHJvdG90eXBl
LmNwcApAQCAtMjYsNiArMjYsNyBAQAogI2luY2x1ZGUgImNvbmZpZy5oIgogI2luY2x1ZGUgIkpT
UHJvbWlzZVByb3RvdHlwZS5oIgogCisjaW5jbHVkZSAiQnVpbHRpbk5hbWVzLmgiCiAjaW5jbHVk
ZSAiRXJyb3IuaCIKICNpbmNsdWRlICJKU0NCdWlsdGlucy5oIgogI2luY2x1ZGUgIkpTQ0pTVmFs
dWVJbmxpbmVzLmgiCkBAIC01NCwxMCArNTUsOSBAQCBjb25zdCBDbGFzc0luZm8gSlNQcm9taXNl
UHJvdG90eXBlOjpzX2luZm8gPSB7ICJQcm9taXNlUHJvdG90eXBlIiwgJkpTTm9uRmluYWxPYgog
QGVuZAogKi8KIAotSlNQcm9taXNlUHJvdG90eXBlKiBKU1Byb21pc2VQcm90b3R5cGU6OmNyZWF0
ZShFeGVjU3RhdGUqIGV4ZWMsIEpTR2xvYmFsT2JqZWN0KiwgU3RydWN0dXJlKiBzdHJ1Y3R1cmUp
CitKU1Byb21pc2VQcm90b3R5cGUqIEpTUHJvbWlzZVByb3RvdHlwZTo6Y3JlYXRlKFZNJiB2bSwg
SlNHbG9iYWxPYmplY3QqLCBTdHJ1Y3R1cmUqIHN0cnVjdHVyZSkKIHsKLSAgICBWTSYgdm0gPSBl
eGVjLT52bSgpOwotICAgIEpTUHJvbWlzZVByb3RvdHlwZSogb2JqZWN0ID0gbmV3IChOb3ROdWxs
LCBhbGxvY2F0ZUNlbGw8SlNQcm9taXNlUHJvdG90eXBlPih2bS5oZWFwKSkgSlNQcm9taXNlUHJv
dG90eXBlKGV4ZWMsIHN0cnVjdHVyZSk7CisgICAgSlNQcm9taXNlUHJvdG90eXBlKiBvYmplY3Qg
PSBuZXcgKE5vdE51bGwsIGFsbG9jYXRlQ2VsbDxKU1Byb21pc2VQcm90b3R5cGU+KHZtLmhlYXAp
KSBKU1Byb21pc2VQcm90b3R5cGUodm0sIHN0cnVjdHVyZSk7CiAgICAgb2JqZWN0LT5maW5pc2hD
cmVhdGlvbih2bSwgc3RydWN0dXJlKTsKICAgICByZXR1cm4gb2JqZWN0OwogfQpAQCAtNjcsMTQg
KzY3LDE1IEBAIFN0cnVjdHVyZSogSlNQcm9taXNlUHJvdG90eXBlOjpjcmVhdGVTdHJ1Y3R1cmUo
Vk0mIHZtLCBKU0dsb2JhbE9iamVjdCogZ2xvYmFsT2JqCiAgICAgcmV0dXJuIFN0cnVjdHVyZTo6
Y3JlYXRlKHZtLCBnbG9iYWxPYmplY3QsIHByb3RvdHlwZSwgVHlwZUluZm8oT2JqZWN0VHlwZSwg
U3RydWN0dXJlRmxhZ3MpLCBpbmZvKCkpOwogfQogCi1KU1Byb21pc2VQcm90b3R5cGU6OkpTUHJv
bWlzZVByb3RvdHlwZShFeGVjU3RhdGUqIGV4ZWMsIFN0cnVjdHVyZSogc3RydWN0dXJlKQotICAg
IDogSlNOb25GaW5hbE9iamVjdChleGVjLT52bSgpLCBzdHJ1Y3R1cmUpCitKU1Byb21pc2VQcm90
b3R5cGU6OkpTUHJvbWlzZVByb3RvdHlwZShWTSYgdm0sIFN0cnVjdHVyZSogc3RydWN0dXJlKQor
ICAgIDogSlNOb25GaW5hbE9iamVjdCh2bSwgc3RydWN0dXJlKQogewogfQogCiB2b2lkIEpTUHJv
bWlzZVByb3RvdHlwZTo6ZmluaXNoQ3JlYXRpb24oVk0mIHZtLCBTdHJ1Y3R1cmUqKQogewogICAg
IEJhc2U6OmZpbmlzaENyZWF0aW9uKHZtKTsKKyAgICBwdXREaXJlY3RCdWlsdGluRnVuY3Rpb25X
aXRob3V0VHJhbnNpdGlvbih2bSwgZ2xvYmFsT2JqZWN0KCksIHZtLnByb3BlcnR5TmFtZXMtPmJ1
aWx0aW5OYW1lcygpLnRoZW5Qcml2YXRlTmFtZSgpLCBwcm9taXNlUHJvdG90eXBlUHJpdmF0ZVRo
ZW5Db2RlR2VuZXJhdG9yKHZtKSwgUmVhZE9ubHkgfCBEb250RW51bSB8IERvbnREZWxldGUpOwog
fQogCiBib29sIEpTUHJvbWlzZVByb3RvdHlwZTo6Z2V0T3duUHJvcGVydHlTbG90KEpTT2JqZWN0
KiBvYmplY3QsIEV4ZWNTdGF0ZSogZXhlYywgUHJvcGVydHlOYW1lIHByb3BlcnR5TmFtZSwgUHJv
cGVydHlTbG90JiBzbG90KQpkaWZmIC0tZ2l0IGEvU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRp
bWUvSlNQcm9taXNlUHJvdG90eXBlLmggYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9K
U1Byb21pc2VQcm90b3R5cGUuaAppbmRleCA0NThkMTQxMTlkZGY5YWJlMDc2M2I3NzczOWI0ZWE5
Yjg1YzIxOTA2Li40ZTg3MWM3NTZjYzhlNzU3N2EwNzA0MTE1NjAzZjkzZTg1NTNlMWY3IDEwMDY0
NAotLS0gYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9KU1Byb21pc2VQcm90b3R5cGUu
aAorKysgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9KU1Byb21pc2VQcm90b3R5cGUu
aApAQCAtMzUsNyArMzUsNyBAQCBjbGFzcyBKU1Byb21pc2VQcm90b3R5cGUgOiBwdWJsaWMgSlNO
b25GaW5hbE9iamVjdCB7CiAgICAgdHlwZWRlZiBKU05vbkZpbmFsT2JqZWN0IEJhc2U7CiAgICAg
c3RhdGljIGNvbnN0IHVuc2lnbmVkIFN0cnVjdHVyZUZsYWdzID0gQmFzZTo6U3RydWN0dXJlRmxh
Z3MgfCBPdmVycmlkZXNHZXRPd25Qcm9wZXJ0eVNsb3Q7CiAKLSAgICBzdGF0aWMgSlNQcm9taXNl
UHJvdG90eXBlKiBjcmVhdGUoRXhlY1N0YXRlKiwgSlNHbG9iYWxPYmplY3QqLCBTdHJ1Y3R1cmUq
KTsKKyAgICBzdGF0aWMgSlNQcm9taXNlUHJvdG90eXBlKiBjcmVhdGUoVk0mLCBKU0dsb2JhbE9i
amVjdCosIFN0cnVjdHVyZSopOwogICAgIHN0YXRpYyBTdHJ1Y3R1cmUqIGNyZWF0ZVN0cnVjdHVy
ZShWTSYsIEpTR2xvYmFsT2JqZWN0KiwgSlNWYWx1ZSk7CiAKICAgICBERUNMQVJFX0lORk87CkBA
IC00NCw3ICs0NCw3IEBAIGNsYXNzIEpTUHJvbWlzZVByb3RvdHlwZSA6IHB1YmxpYyBKU05vbkZp
bmFsT2JqZWN0IHsKICAgICB2b2lkIGZpbmlzaENyZWF0aW9uKFZNJiwgU3RydWN0dXJlKik7CiAK
IHByaXZhdGU6Ci0gICAgSlNQcm9taXNlUHJvdG90eXBlKEV4ZWNTdGF0ZSosIFN0cnVjdHVyZSop
OworICAgIEpTUHJvbWlzZVByb3RvdHlwZShWTSYsIFN0cnVjdHVyZSopOwogICAgIHN0YXRpYyBi
b29sIGdldE93blByb3BlcnR5U2xvdChKU09iamVjdCosIEV4ZWNTdGF0ZSosIFByb3BlcnR5TmFt
ZSwgUHJvcGVydHlTbG90Jik7CiB9OwogCmRpZmYgLS1naXQgYS9Tb3VyY2UvSmF2YVNjcmlwdENv
cmUvcnVudGltZS9NYXBQcm90b3R5cGUuY3BwIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRp
bWUvTWFwUHJvdG90eXBlLmNwcAppbmRleCA5NmRlYWU3MTRjYTUxYTY3ZmQxNjQwOGU1YzM5ZDNj
NjU2NzM4OTRkLi5lOTcyZjU0MGVmYjJmMWU2YTQ4ZDEyNTAzZjAzMTg5NzFmNDJkZjgyIDEwMDY0
NAotLS0gYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9NYXBQcm90b3R5cGUuY3BwCisr
KyBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL01hcFByb3RvdHlwZS5jcHAKQEAgLTY4
LDYgKzY4LDEwIEBAIHZvaWQgTWFwUHJvdG90eXBlOjpmaW5pc2hDcmVhdGlvbihWTSYgdm0sIEpT
R2xvYmFsT2JqZWN0KiBnbG9iYWxPYmplY3QpCiAgICAgSlNDX05BVElWRV9GVU5DVElPTih2bS5w
cm9wZXJ0eU5hbWVzLT5rZXlzLCBtYXBQcm90b0Z1bmNLZXlzLCBEb250RW51bSwgMCk7CiAgICAg
SlNDX05BVElWRV9GVU5DVElPTih2bS5wcm9wZXJ0eU5hbWVzLT52YWx1ZXMsIG1hcFByb3RvRnVu
Y1ZhbHVlcywgRG9udEVudW0sIDApOwogCisgICAgLy8gUHJpdmF0ZSBnZXQgLyBzZXQgb3BlcmF0
aW9ucy4KKyAgICBKU0NfTkFUSVZFX0ZVTkNUSU9OKHZtLnByb3BlcnR5TmFtZXMtPmdldFByaXZh
dGVOYW1lLCBtYXBQcm90b0Z1bmNHZXQsIERvbnRFbnVtLCAxKTsKKyAgICBKU0NfTkFUSVZFX0ZV
TkNUSU9OKHZtLnByb3BlcnR5TmFtZXMtPnNldFByaXZhdGVOYW1lLCBtYXBQcm90b0Z1bmNTZXQs
IERvbnRFbnVtLCAyKTsKKwogICAgIEpTRnVuY3Rpb24qIGVudHJpZXMgPSBKU0Z1bmN0aW9uOjpj
cmVhdGUodm0sIGdsb2JhbE9iamVjdCwgMCwgdm0ucHJvcGVydHlOYW1lcy0+ZW50cmllcy5zdHJp
bmcoKSwgbWFwUHJvdG9GdW5jRW50cmllcyk7CiAgICAgcHV0RGlyZWN0V2l0aG91dFRyYW5zaXRp
b24odm0sIHZtLnByb3BlcnR5TmFtZXMtPmVudHJpZXMsIGVudHJpZXMsIERvbnRFbnVtKTsKICAg
ICBwdXREaXJlY3RXaXRob3V0VHJhbnNpdGlvbih2bSwgdm0ucHJvcGVydHlOYW1lcy0+aXRlcmF0
b3JTeW1ib2wsIGVudHJpZXMsIERvbnRFbnVtKTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9KYXZhU2Ny
aXB0Q29yZS9ydW50aW1lL01vZHVsZUxvYWRlck9iamVjdC5jcHAgYi9Tb3VyY2UvSmF2YVNjcmlw
dENvcmUvcnVudGltZS9Nb2R1bGVMb2FkZXJPYmplY3QuY3BwCm5ldyBmaWxlIG1vZGUgMTAwNjQ0
CmluZGV4IDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAuLjVhZWE4MzY2
ZWIxY2QwN2IyOTU2YTc0ODgwMzQ4NWMyYTAyMGJhMGYKLS0tIC9kZXYvbnVsbAorKysgYi9Tb3Vy
Y2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9Nb2R1bGVMb2FkZXJPYmplY3QuY3BwCkBAIC0wLDAg
KzEsMjk5IEBACisvKgorICogQ29weXJpZ2h0IChDKSAyMDE1IEFwcGxlIEluYy4gQWxsIFJpZ2h0
cyBSZXNlcnZlZC4KKyAqCisgKiBSZWRpc3RyaWJ1dGlvbiBhbmQgdXNlIGluIHNvdXJjZSBhbmQg
YmluYXJ5IGZvcm1zLCB3aXRoIG9yIHdpdGhvdXQKKyAqIG1vZGlmaWNhdGlvbiwgYXJlIHBlcm1p
dHRlZCBwcm92aWRlZCB0aGF0IHRoZSBmb2xsb3dpbmcgY29uZGl0aW9ucworICogYXJlIG1ldDoK
KyAqIDEuIFJlZGlzdHJpYnV0aW9ucyBvZiBzb3VyY2UgY29kZSBtdXN0IHJldGFpbiB0aGUgYWJv
dmUgY29weXJpZ2h0CisgKiAgICBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0
aGUgZm9sbG93aW5nIGRpc2NsYWltZXIuCisgKiAyLiBSZWRpc3RyaWJ1dGlvbnMgaW4gYmluYXJ5
IGZvcm0gbXVzdCByZXByb2R1Y2UgdGhlIGFib3ZlIGNvcHlyaWdodAorICogICAgbm90aWNlLCB0
aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyIGluIHRo
ZQorICogICAgZG9jdW1lbnRhdGlvbiBhbmQvb3Igb3RoZXIgbWF0ZXJpYWxzIHByb3ZpZGVkIHdp
dGggdGhlIGRpc3RyaWJ1dGlvbi4KKyAqCisgKiBUSElTIFNPRlRXQVJFIElTIFBST1ZJREVEIEJZ
IEFQUExFIElOQy4gYGBBUyBJUycnIEFORCBBTlkKKyAqIEVYUFJFU1MgT1IgSU1QTElFRCBXQVJS
QU5USUVTLCBJTkNMVURJTkcsIEJVVCBOT1QgTElNSVRFRCBUTywgVEhFCisgKiBJTVBMSUVEIFdB
UlJBTlRJRVMgT0YgTUVSQ0hBTlRBQklMSVRZIEFORCBGSVRORVNTIEZPUiBBIFBBUlRJQ1VMQVIK
KyAqIFBVUlBPU0UgQVJFIERJU0NMQUlNRUQuICBJTiBOTyBFVkVOVCBTSEFMTCBBUFBMRSBJTkMu
IE9SCisgKiBDT05UUklCVVRPUlMgQkUgTElBQkxFIEZPUiBBTlkgRElSRUNULCBJTkRJUkVDVCwg
SU5DSURFTlRBTCwgU1BFQ0lBTCwKKyAqIEVYRU1QTEFSWSwgT1IgQ09OU0VRVUVOVElBTCBEQU1B
R0VTIChJTkNMVURJTkcsIEJVVCBOT1QgTElNSVRFRCBUTywKKyAqIFBST0NVUkVNRU5UIE9GIFNV
QlNUSVRVVEUgR09PRFMgT1IgU0VSVklDRVM7IExPU1MgT0YgVVNFLCBEQVRBLCBPUgorICogUFJP
RklUUzsgT1IgQlVTSU5FU1MgSU5URVJSVVBUSU9OKSBIT1dFVkVSIENBVVNFRCBBTkQgT04gQU5Z
IFRIRU9SWQorICogT0YgTElBQklMSVRZLCBXSEVUSEVSIElOIENPTlRSQUNULCBTVFJJQ1QgTElB
QklMSVRZLCBPUiBUT1JUCisgKiAoSU5DTFVESU5HIE5FR0xJR0VOQ0UgT1IgT1RIRVJXSVNFKSBB
UklTSU5HIElOIEFOWSBXQVkgT1VUIE9GIFRIRSBVU0UKKyAqIE9GIFRISVMgU09GVFdBUkUsIEVW
RU4gSUYgQURWSVNFRCBPRiBUSEUgUE9TU0lCSUxJVFkgT0YgU1VDSCBEQU1BR0UuCisgKi8KKwor
I2luY2x1ZGUgImNvbmZpZy5oIgorI2luY2x1ZGUgIk1vZHVsZUxvYWRlck9iamVjdC5oIgorCisj
aW5jbHVkZSAiQnVpbHRpbk5hbWVzLmgiCisjaW5jbHVkZSAiRXJyb3IuaCIKKyNpbmNsdWRlICJF
eGNlcHRpb24uaCIKKyNpbmNsdWRlICJKU0NJbmxpbmVzLmgiCisjaW5jbHVkZSAiSlNHbG9iYWxP
YmplY3RGdW5jdGlvbnMuaCIKKyNpbmNsdWRlICJKU01hcC5oIgorI2luY2x1ZGUgIkpTTW9kdWxl
UmVjb3JkLmgiCisjaW5jbHVkZSAiSlNQcm9taXNlLmgiCisjaW5jbHVkZSAiSlNQcm9taXNlRGVm
ZXJyZWQuaCIKKyNpbmNsdWRlICJNb2R1bGVBbmFseXplci5oIgorI2luY2x1ZGUgIk5vZGVzLmgi
CisjaW5jbHVkZSAiUGFyc2VyLmgiCisjaW5jbHVkZSAiUGFyc2VyRXJyb3IuaCIKKworbmFtZXNw
YWNlIEpTQyB7CisKK3N0YXRpYyBFbmNvZGVkSlNWYWx1ZSBKU0NfSE9TVF9DQUxMIG1vZHVsZUxv
YWRlck9iamVjdFBhcnNlTW9kdWxlKEV4ZWNTdGF0ZSopOworc3RhdGljIEVuY29kZWRKU1ZhbHVl
IEpTQ19IT1NUX0NBTEwgbW9kdWxlTG9hZGVyT2JqZWN0UmVxdWVzdGVkTW9kdWxlcyhFeGVjU3Rh
dGUqKTsKK3N0YXRpYyBFbmNvZGVkSlNWYWx1ZSBKU0NfSE9TVF9DQUxMIG1vZHVsZUxvYWRlck9i
amVjdFJlc29sdmUoRXhlY1N0YXRlKik7CitzdGF0aWMgRW5jb2RlZEpTVmFsdWUgSlNDX0hPU1Rf
Q0FMTCBtb2R1bGVMb2FkZXJPYmplY3RGZXRjaChFeGVjU3RhdGUqKTsKK3N0YXRpYyBFbmNvZGVk
SlNWYWx1ZSBKU0NfSE9TVF9DQUxMIG1vZHVsZUxvYWRlck9iamVjdFRyYW5zbGF0ZShFeGVjU3Rh
dGUqKTsKK3N0YXRpYyBFbmNvZGVkSlNWYWx1ZSBKU0NfSE9TVF9DQUxMIG1vZHVsZUxvYWRlck9i
amVjdEluc3RhbnRpYXRlKEV4ZWNTdGF0ZSopOworCit9CisKKyNpbmNsdWRlICJNb2R1bGVMb2Fk
ZXJPYmplY3QubHV0LmgiCisKK25hbWVzcGFjZSBKU0MgeworCitTVEFUSUNfQVNTRVJUX0lTX1RS
SVZJQUxMWV9ERVNUUlVDVElCTEUoTW9kdWxlTG9hZGVyT2JqZWN0KTsKKworY29uc3QgQ2xhc3NJ
bmZvIE1vZHVsZUxvYWRlck9iamVjdDo6c19pbmZvID0geyAiTW9kdWxlTG9hZGVyIiwgJkJhc2U6
OnNfaW5mbywgJm1vZHVsZUxvYWRlck9iamVjdFRhYmxlLCBDUkVBVEVfTUVUSE9EX1RBQkxFKE1v
ZHVsZUxvYWRlck9iamVjdCkgfTsKKworLyogU291cmNlIGZvciBNb2R1bGVMb2FkZXJPYmplY3Qu
bHV0LmgKK0BiZWdpbiBtb2R1bGVMb2FkZXJPYmplY3RUYWJsZQorICAgIHNldFN0YXRlVG9NYXgg
ICAgICAgICAgICAgbW9kdWxlTG9hZGVyT2JqZWN0U2V0U3RhdGVUb01heCAgICAgICAgICAgICBE
b250RW51bXxGdW5jdGlvbiAyCisgICAgbmV3UmVnaXN0cnlFbnRyeSAgICAgICAgICBtb2R1bGVM
b2FkZXJPYmplY3ROZXdSZWdpc3RyeUVudHJ5ICAgICAgICAgIERvbnRFbnVtfEZ1bmN0aW9uIDEK
KyAgICBlbnN1cmVSZWdpc3RlcmVkICAgICAgICAgIG1vZHVsZUxvYWRlck9iamVjdEVuc3VyZVJl
Z2lzdGVyZWQgICAgICAgICAgRG9udEVudW18RnVuY3Rpb24gMQorICAgIGZvcmNlRnVsZmlsbFBy
b21pc2UgICAgICAgbW9kdWxlTG9hZGVyT2JqZWN0Rm9yY2VGdWxmaWxsUHJvbWlzZSAgICAgICBE
b250RW51bXxGdW5jdGlvbiAyCisgICAgZnVsZmlsbEZldGNoICAgICAgICAgICAgICBtb2R1bGVM
b2FkZXJPYmplY3RGdWxmaWxsRmV0Y2ggICAgICAgICAgICAgIERvbnRFbnVtfEZ1bmN0aW9uIDIK
KyAgICBmdWxmaWxsVHJhbnNsYXRlICAgICAgICAgIG1vZHVsZUxvYWRlck9iamVjdEZ1bGZpbGxU
cmFuc2xhdGUgICAgICAgICAgRG9udEVudW18RnVuY3Rpb24gMgorICAgIGZ1bGZpbGxJbnN0YW50
aWF0ZSAgICAgICAgbW9kdWxlTG9hZGVyT2JqZWN0RnVsZmlsbEluc3RhbnRpYXRlICAgICAgICBE
b250RW51bXxGdW5jdGlvbiAyCisgICAgY29tbWl0SW5zdGFudGlhdGVkICAgICAgICBtb2R1bGVM
b2FkZXJPYmplY3RDb21taXRJbnN0YW50aWF0ZWQgICAgICAgIERvbnRFbnVtfEZ1bmN0aW9uIDMK
KyAgICBpbnN0YW50aWF0aW9uICAgICAgICAgICAgIG1vZHVsZUxvYWRlck9iamVjdEluc3RhbnRp
YXRpb24gICAgICAgICAgICAgRG9udEVudW18RnVuY3Rpb24gMgorICAgIHJlcXVlc3RGZXRjaCAg
ICAgICAgICAgICAgbW9kdWxlTG9hZGVyT2JqZWN0UmVxdWVzdEZldGNoICAgICAgICAgICAgICBE
b250RW51bXxGdW5jdGlvbiAxCisgICAgcmVxdWVzdFRyYW5zbGF0ZSAgICAgICAgICBtb2R1bGVM
b2FkZXJPYmplY3RSZXF1ZXN0VHJhbnNsYXRlICAgICAgICAgIERvbnRFbnVtfEZ1bmN0aW9uIDEK
KyAgICByZXF1ZXN0SW5zdGFudGlhdGUgICAgICAgIG1vZHVsZUxvYWRlck9iamVjdFJlcXVlc3RJ
bnN0YW50aWF0ZSAgICAgICAgRG9udEVudW18RnVuY3Rpb24gMQorICAgIHJlcXVlc3RDb2xsZWN0
ICAgICAgICAgICAgbW9kdWxlTG9hZGVyT2JqZWN0UmVxdWVzdENvbGxlY3QgICAgICAgICAgICBE
b250RW51bXxGdW5jdGlvbiAxCisgICAgcmVxdWVzdEluc3RhbnRpYXRlQWxsICAgICBtb2R1bGVM
b2FkZXJPYmplY3RSZXF1ZXN0SW5zdGFudGlhdGVBbGwgICAgIERvbnRFbnVtfEZ1bmN0aW9uIDEK
KyAgICBwcm92aWRlICAgICAgICAgICAgICAgICAgIG1vZHVsZUxvYWRlck9iamVjdFByb3ZpZGUg
ICAgICAgICAgICAgICAgICAgRG9udEVudW18RnVuY3Rpb24gMworICAgIHBhcnNlTW9kdWxlICAg
ICAgICAgICAgICAgbW9kdWxlTG9hZGVyT2JqZWN0UGFyc2VNb2R1bGUgICAgICAgICAgICAgICBE
b250RW51bXxGdW5jdGlvbiAxCisgICAgcmVxdWVzdGVkTW9kdWxlcyAgICAgICAgICBtb2R1bGVM
b2FkZXJPYmplY3RSZXF1ZXN0ZWRNb2R1bGVzICAgICAgICAgIERvbnRFbnVtfEZ1bmN0aW9uIDEK
KyAgICByZXNvbHZlICAgICAgICAgICAgICAgICAgIG1vZHVsZUxvYWRlck9iamVjdFJlc29sdmUg
ICAgICAgICAgICAgICAgICAgRG9udEVudW18RnVuY3Rpb24gMQorICAgIGZldGNoICAgICAgICAg
ICAgICAgICAgICAgbW9kdWxlTG9hZGVyT2JqZWN0RmV0Y2ggICAgICAgICAgICAgICAgICAgICBE
b250RW51bXxGdW5jdGlvbiAxCisgICAgdHJhbnNsYXRlICAgICAgICAgICAgICAgICBtb2R1bGVM
b2FkZXJPYmplY3RUcmFuc2xhdGUgICAgICAgICAgICAgICAgIERvbnRFbnVtfEZ1bmN0aW9uIDIK
KyAgICBpbnN0YW50aWF0ZSAgICAgICAgICAgICAgIG1vZHVsZUxvYWRlck9iamVjdEluc3RhbnRp
YXRlICAgICAgICAgICAgICAgRG9udEVudW18RnVuY3Rpb24gMgorQGVuZAorKi8KKworTW9kdWxl
TG9hZGVyT2JqZWN0OjpNb2R1bGVMb2FkZXJPYmplY3QoVk0mIHZtLCBTdHJ1Y3R1cmUqIHN0cnVj
dHVyZSkKKyAgICA6IEpTTm9uRmluYWxPYmplY3Qodm0sIHN0cnVjdHVyZSkKK3sKK30KKwordm9p
ZCBNb2R1bGVMb2FkZXJPYmplY3Q6OmZpbmlzaENyZWF0aW9uKFZNJiB2bSwgSlNHbG9iYWxPYmpl
Y3QqIGdsb2JhbE9iamVjdCkKK3sKKyAgICBCYXNlOjpmaW5pc2hDcmVhdGlvbih2bSk7CisgICAg
QVNTRVJUKGluaGVyaXRzKGluZm8oKSkpOworCisgICAgLy8gQ29uc3RhbnQgdmFsdWVzIGZvciB0
aGUgc3RhdGUuCisgICAgcHV0RGlyZWN0V2l0aG91dFRyYW5zaXRpb24odm0sIElkZW50aWZpZXI6
OmZyb21TdHJpbmcoJnZtLCAiRmV0Y2giKSwganNOdW1iZXIoU3RhdHVzOjpGZXRjaCkpOworICAg
IHB1dERpcmVjdFdpdGhvdXRUcmFuc2l0aW9uKHZtLCBJZGVudGlmaWVyOjpmcm9tU3RyaW5nKCZ2
bSwgIlRyYW5zbGF0ZSIpLCBqc051bWJlcihTdGF0dXM6OlRyYW5zbGF0ZSkpOworICAgIHB1dERp
cmVjdFdpdGhvdXRUcmFuc2l0aW9uKHZtLCBJZGVudGlmaWVyOjpmcm9tU3RyaW5nKCZ2bSwgIklu
c3RhbnRpYXRlIiksIGpzTnVtYmVyKFN0YXR1czo6SW5zdGFudGlhdGUpKTsKKyAgICBwdXREaXJl
Y3RXaXRob3V0VHJhbnNpdGlvbih2bSwgSWRlbnRpZmllcjo6ZnJvbVN0cmluZygmdm0sICJDb2xs
ZWN0IiksIGpzTnVtYmVyKFN0YXR1czo6Q29sbGVjdCkpOworICAgIHB1dERpcmVjdFdpdGhvdXRU
cmFuc2l0aW9uKHZtLCBJZGVudGlmaWVyOjpmcm9tU3RyaW5nKCZ2bSwgIkxpbmsiKSwganNOdW1i
ZXIoU3RhdHVzOjpMaW5rKSk7CisgICAgcHV0RGlyZWN0V2l0aG91dFRyYW5zaXRpb24odm0sIElk
ZW50aWZpZXI6OmZyb21TdHJpbmcoJnZtLCAiUmVhZHkiKSwganNOdW1iZXIoU3RhdHVzOjpSZWFk
eSkpOworCisgICAgcHV0RGlyZWN0V2l0aG91dFRyYW5zaXRpb24odm0sIElkZW50aWZpZXI6OmZy
b21TdHJpbmcoJnZtLCAicmVnaXN0cnkiKSwgSlNNYXA6OmNyZWF0ZSh2bSwgZ2xvYmFsT2JqZWN0
LT5tYXBTdHJ1Y3R1cmUoKSkpOworfQorCitib29sIE1vZHVsZUxvYWRlck9iamVjdDo6Z2V0T3du
UHJvcGVydHlTbG90KEpTT2JqZWN0KiBvYmplY3QsIEV4ZWNTdGF0ZSogZXhlYywgUHJvcGVydHlO
YW1lIHByb3BlcnR5TmFtZSwgUHJvcGVydHlTbG90ICZzbG90KQoreworICAgIHJldHVybiBnZXRT
dGF0aWNGdW5jdGlvblNsb3Q8QmFzZT4oZXhlYywgbW9kdWxlTG9hZGVyT2JqZWN0VGFibGUsIGpz
Q2FzdDxNb2R1bGVMb2FkZXJPYmplY3QqPihvYmplY3QpLCBwcm9wZXJ0eU5hbWUsIHNsb3QpOwor
fQorCisvLyAtLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0gRnVuY3Rpb25zIC0tLS0tLS0t
LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tCisKK3N0YXRpYyBTdHJpbmcgcHJpbnRhYmxlTW9kdWxl
S2V5KEV4ZWNTdGF0ZSogZXhlYywgSlNWYWx1ZSBrZXkpCit7CisgICAgaWYgKGtleS5pc1N0cmlu
ZygpIHx8IGtleS5pc1N5bWJvbCgpKQorICAgICAgICByZXR1cm4ga2V5LnRvUHJvcGVydHlLZXko
ZXhlYykuaW1wbCgpOworICAgIHJldHVybiBleGVjLT5wcm9wZXJ0eU5hbWVzKCkuZW1wdHlJZGVu
dGlmaWVyLmltcGwoKTsKK30KKworSlNWYWx1ZSBNb2R1bGVMb2FkZXJPYmplY3Q6OnByb3ZpZGUo
RXhlY1N0YXRlKiBleGVjLCBKU1ZhbHVlIGtleSwgU3RhdHVzIHN0YXR1cywgY29uc3QgU3RyaW5n
JiBzb3VyY2UpCit7CisgICAgSlNPYmplY3QqIGZ1bmN0aW9uID0ganNDYXN0PEpTT2JqZWN0Kj4o
Z2V0KGV4ZWMsIGV4ZWMtPnByb3BlcnR5TmFtZXMoKS5idWlsdGluTmFtZXMoKS5wcm92aWRlUHVi
bGljTmFtZSgpKSk7CisgICAgQ2FsbERhdGEgY2FsbERhdGE7CisgICAgQ2FsbFR5cGUgY2FsbFR5
cGUgPSBKU0M6OmdldENhbGxEYXRhKGZ1bmN0aW9uLCBjYWxsRGF0YSk7CisgICAgQVNTRVJUKGNh
bGxUeXBlICE9IENhbGxUeXBlTm9uZSk7CisKKyAgICBNYXJrZWRBcmd1bWVudEJ1ZmZlciBhcmd1
bWVudHM7CisgICAgYXJndW1lbnRzLmFwcGVuZChrZXkpOworICAgIGFyZ3VtZW50cy5hcHBlbmQo
anNOdW1iZXIoc3RhdHVzKSk7CisgICAgYXJndW1lbnRzLmFwcGVuZChqc1N0cmluZyhleGVjLCBz
b3VyY2UpKTsKKworICAgIHJldHVybiBjYWxsKGV4ZWMsIGZ1bmN0aW9uLCBjYWxsVHlwZSwgY2Fs
bERhdGEsIHRoaXMsIGFyZ3VtZW50cyk7Cit9CisKK0pTVmFsdWUgTW9kdWxlTG9hZGVyT2JqZWN0
OjpyZXF1ZXN0SW5zdGFudGlhdGVBbGwoRXhlY1N0YXRlKiBleGVjLCBKU1ZhbHVlIGtleSkKK3sK
KyAgICBKU09iamVjdCogZnVuY3Rpb24gPSBqc0Nhc3Q8SlNPYmplY3QqPihnZXQoZXhlYywgZXhl
Yy0+cHJvcGVydHlOYW1lcygpLmJ1aWx0aW5OYW1lcygpLnJlcXVlc3RJbnN0YW50aWF0ZUFsbFB1
YmxpY05hbWUoKSkpOworICAgIENhbGxEYXRhIGNhbGxEYXRhOworICAgIENhbGxUeXBlIGNhbGxU
eXBlID0gSlNDOjpnZXRDYWxsRGF0YShmdW5jdGlvbiwgY2FsbERhdGEpOworICAgIEFTU0VSVChj
YWxsVHlwZSAhPSBDYWxsVHlwZU5vbmUpOworCisgICAgTWFya2VkQXJndW1lbnRCdWZmZXIgYXJn
dW1lbnRzOworICAgIGFyZ3VtZW50cy5hcHBlbmQoa2V5KTsKKworICAgIHJldHVybiBjYWxsKGV4
ZWMsIGZ1bmN0aW9uLCBjYWxsVHlwZSwgY2FsbERhdGEsIHRoaXMsIGFyZ3VtZW50cyk7Cit9CisK
K0pTVmFsdWUgTW9kdWxlTG9hZGVyT2JqZWN0OjpyZXNvbHZlKEV4ZWNTdGF0ZSogZXhlYywgSlNW
YWx1ZSBuYW1lLCBKU1ZhbHVlIHJlZmVycmVyKQoreworICAgIGlmIChPcHRpb25zOjpkdW1wTW9k
dWxlTG9hZGluZ1N0YXRlKCkpCisgICAgICAgIGRhdGFMb2coIkxvYWRlciBbcmVzb2x2ZV0gIiwg
cHJpbnRhYmxlTW9kdWxlS2V5KGV4ZWMsIG5hbWUpLCAiXG4iKTsKKworICAgIEpTR2xvYmFsT2Jq
ZWN0KiBnbG9iYWxPYmplY3QgPSBleGVjLT5sZXhpY2FsR2xvYmFsT2JqZWN0KCk7CisgICAgaWYg
KGdsb2JhbE9iamVjdC0+Z2xvYmFsT2JqZWN0TWV0aG9kVGFibGUoKS0+bG9hZGVyUmVzb2x2ZSkK
KyAgICAgICAgcmV0dXJuIGdsb2JhbE9iamVjdC0+Z2xvYmFsT2JqZWN0TWV0aG9kVGFibGUoKS0+
bG9hZGVyUmVzb2x2ZShnbG9iYWxPYmplY3QsIGV4ZWMsIG5hbWUsIHJlZmVycmVyKTsKKyAgICBK
U1Byb21pc2VEZWZlcnJlZCogZGVmZXJyZWQgPSBKU1Byb21pc2VEZWZlcnJlZDo6Y3JlYXRlKGV4
ZWMsIGdsb2JhbE9iamVjdCk7CisgICAgZGVmZXJyZWQtPnJlc29sdmUoZXhlYywgbmFtZSk7Cisg
ICAgcmV0dXJuIGRlZmVycmVkLT5wcm9taXNlKCk7Cit9CisKK0pTVmFsdWUgTW9kdWxlTG9hZGVy
T2JqZWN0OjpmZXRjaChFeGVjU3RhdGUqIGV4ZWMsIEpTVmFsdWUga2V5KQoreworICAgIGlmIChP
cHRpb25zOjpkdW1wTW9kdWxlTG9hZGluZ1N0YXRlKCkpCisgICAgICAgIGRhdGFMb2coIkxvYWRl
ciBbZmV0Y2hdICIsIHByaW50YWJsZU1vZHVsZUtleShleGVjLCBrZXkpLCAiXG4iKTsKKworICAg
IEpTR2xvYmFsT2JqZWN0KiBnbG9iYWxPYmplY3QgPSBleGVjLT5sZXhpY2FsR2xvYmFsT2JqZWN0
KCk7CisgICAgaWYgKGdsb2JhbE9iamVjdC0+Z2xvYmFsT2JqZWN0TWV0aG9kVGFibGUoKS0+bG9h
ZGVyRmV0Y2gpCisgICAgICAgIHJldHVybiBnbG9iYWxPYmplY3QtPmdsb2JhbE9iamVjdE1ldGhv
ZFRhYmxlKCktPmxvYWRlckZldGNoKGdsb2JhbE9iamVjdCwgZXhlYywga2V5KTsKKyAgICBKU1By
b21pc2VEZWZlcnJlZCogZGVmZXJyZWQgPSBKU1Byb21pc2VEZWZlcnJlZDo6Y3JlYXRlKGV4ZWMs
IGdsb2JhbE9iamVjdCk7CisgICAgU3RyaW5nIG1vZHVsZUtleSA9IGtleS50b1N0cmluZyhleGVj
KS0+dmFsdWUoZXhlYyk7CisgICAgaWYgKGV4ZWMtPmhhZEV4Y2VwdGlvbigpKSB7CisgICAgICAg
IEpTVmFsdWUgZXhjZXB0aW9uID0gZXhlYy0+ZXhjZXB0aW9uKCktPnZhbHVlKCk7CisgICAgICAg
IGV4ZWMtPmNsZWFyRXhjZXB0aW9uKCk7CisgICAgICAgIGRlZmVycmVkLT5yZWplY3QoZXhlYywg
ZXhjZXB0aW9uKTsKKyAgICAgICAgcmV0dXJuIGRlZmVycmVkLT5wcm9taXNlKCk7CisgICAgfQor
ICAgIGRlZmVycmVkLT5yZWplY3QoZXhlYywgY3JlYXRlRXJyb3IoZXhlYywgbWFrZVN0cmluZygi
Q291bGQgbm90IG9wZW4gdGhlIG1vZHVsZSAnIiwgbW9kdWxlS2V5LCAiJy4iKSkpOworICAgIHJl
dHVybiBkZWZlcnJlZC0+cHJvbWlzZSgpOworfQorCitKU1ZhbHVlIE1vZHVsZUxvYWRlck9iamVj
dDo6dHJhbnNsYXRlKEV4ZWNTdGF0ZSogZXhlYywgSlNWYWx1ZSBrZXksIEpTVmFsdWUgcGF5bG9h
ZCkKK3sKKyAgICBpZiAoT3B0aW9uczo6ZHVtcE1vZHVsZUxvYWRpbmdTdGF0ZSgpKQorICAgICAg
ICBkYXRhTG9nKCJMb2FkZXIgW3RyYW5zbGF0ZV0gIiwgcHJpbnRhYmxlTW9kdWxlS2V5KGV4ZWMs
IGtleSksICJcbiIpOworCisgICAgSlNHbG9iYWxPYmplY3QqIGdsb2JhbE9iamVjdCA9IGV4ZWMt
PmxleGljYWxHbG9iYWxPYmplY3QoKTsKKyAgICBpZiAoZ2xvYmFsT2JqZWN0LT5nbG9iYWxPYmpl
Y3RNZXRob2RUYWJsZSgpLT5sb2FkZXJUcmFuc2xhdGUpCisgICAgICAgIHJldHVybiBnbG9iYWxP
YmplY3QtPmdsb2JhbE9iamVjdE1ldGhvZFRhYmxlKCktPmxvYWRlclRyYW5zbGF0ZShnbG9iYWxP
YmplY3QsIGV4ZWMsIGtleSwgcGF5bG9hZCk7CisgICAgSlNQcm9taXNlRGVmZXJyZWQqIGRlZmVy
cmVkID0gSlNQcm9taXNlRGVmZXJyZWQ6OmNyZWF0ZShleGVjLCBnbG9iYWxPYmplY3QpOworICAg
IGRlZmVycmVkLT5yZXNvbHZlKGV4ZWMsIHBheWxvYWQpOworICAgIHJldHVybiBkZWZlcnJlZC0+
cHJvbWlzZSgpOworfQorCitKU1ZhbHVlIE1vZHVsZUxvYWRlck9iamVjdDo6aW5zdGFudGlhdGUo
RXhlY1N0YXRlKiBleGVjLCBKU1ZhbHVlIGtleSwgSlNWYWx1ZSBzb3VyY2UpCit7CisgICAgaWYg
KE9wdGlvbnM6OmR1bXBNb2R1bGVMb2FkaW5nU3RhdGUoKSkKKyAgICAgICAgZGF0YUxvZygiTG9h
ZGVyIFtpbnN0YW50aWF0ZV0gIiwgcHJpbnRhYmxlTW9kdWxlS2V5KGV4ZWMsIGtleSksICJcbiIp
OworCisgICAgSlNHbG9iYWxPYmplY3QqIGdsb2JhbE9iamVjdCA9IGV4ZWMtPmxleGljYWxHbG9i
YWxPYmplY3QoKTsKKyAgICBpZiAoZ2xvYmFsT2JqZWN0LT5nbG9iYWxPYmplY3RNZXRob2RUYWJs
ZSgpLT5sb2FkZXJJbnN0YW50aWF0ZSkKKyAgICAgICAgcmV0dXJuIGdsb2JhbE9iamVjdC0+Z2xv
YmFsT2JqZWN0TWV0aG9kVGFibGUoKS0+bG9hZGVySW5zdGFudGlhdGUoZ2xvYmFsT2JqZWN0LCBl
eGVjLCBrZXksIHNvdXJjZSk7CisgICAgSlNQcm9taXNlRGVmZXJyZWQqIGRlZmVycmVkID0gSlNQ
cm9taXNlRGVmZXJyZWQ6OmNyZWF0ZShleGVjLCBnbG9iYWxPYmplY3QpOworICAgIGRlZmVycmVk
LT5yZXNvbHZlKGV4ZWMsIGpzVW5kZWZpbmVkKCkpOworICAgIHJldHVybiBkZWZlcnJlZC0+cHJv
bWlzZSgpOworfQorCisvLyAtLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0gSG9vayBGdW5j
dGlvbnMgLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tCisKK0VuY29kZWRKU1ZhbHVlIEpTQ19I
T1NUX0NBTEwgbW9kdWxlTG9hZGVyT2JqZWN0UGFyc2VNb2R1bGUoRXhlY1N0YXRlKiBleGVjKQor
eworICAgIFZNJiB2bSA9IGV4ZWMtPnZtKCk7CisgICAgU3RyaW5nIHNvdXJjZSA9IGV4ZWMtPmFy
Z3VtZW50KDApLnRvU3RyaW5nKGV4ZWMpLT52YWx1ZShleGVjKTsKKyAgICBpZiAoZXhlYy0+aGFk
RXhjZXB0aW9uKCkpCisgICAgICAgIHJldHVybiBKU1ZhbHVlOjplbmNvZGUoanNVbmRlZmluZWQo
KSk7CisKKyAgICAvLyBGSVhNRTogQ29uc3RydWN0IFNvdXJjZUNvZGUgd2l0aCB0aGUgbG9jYXRp
b24gaWRlbnRpZmllci4KKyAgICBTb3VyY2VDb2RlIHNvdXJjZUNvZGUgPSBtYWtlU291cmNlKHNv
dXJjZSk7CisKKyAgICBQYXJzZXJFcnJvciBlcnJvcjsKKyAgICBzdGQ6OnVuaXF1ZV9wdHI8TW9k
dWxlUHJvZ3JhbU5vZGU+IG1vZHVsZVByb2dyYW1Ob2RlID0gcGFyc2U8TW9kdWxlUHJvZ3JhbU5v
ZGU+KAorICAgICAgICAmdm0sIHNvdXJjZUNvZGUsIElkZW50aWZpZXIoKSwgSlNQYXJzZXJCdWls
dGluTW9kZTo6Tm90QnVpbHRpbiwKKyAgICAgICAgSlNQYXJzZXJTdHJpY3RNb2RlOjpTdHJpY3Qs
IFNvdXJjZVBhcnNlTW9kZTo6TW9kdWxlQW5hbHl6ZU1vZGUsIGVycm9yKTsKKworICAgIGlmIChl
cnJvci5pc1ZhbGlkKCkpIHsKKyAgICAgICAgdGhyb3dWTUVycm9yKGV4ZWMsIGVycm9yLnRvRXJy
b3JPYmplY3QoZXhlYy0+bGV4aWNhbEdsb2JhbE9iamVjdCgpLCBzb3VyY2VDb2RlKSk7CisgICAg
ICAgIHJldHVybiBKU1ZhbHVlOjplbmNvZGUoanNVbmRlZmluZWQoKSk7CisgICAgfQorICAgIEFT
U0VSVChtb2R1bGVQcm9ncmFtTm9kZSk7CisKKyAgICBNb2R1bGVBbmFseXplciBtb2R1bGVBbmFs
eXplcihleGVjLCBtb2R1bGVQcm9ncmFtTm9kZS0+dmFyRGVjbGFyYXRpb25zKCksIG1vZHVsZVBy
b2dyYW1Ob2RlLT5sZXhpY2FsVmFyaWFibGVzKCkpOworICAgIHJldHVybiBKU1ZhbHVlOjplbmNv
ZGUobW9kdWxlQW5hbHl6ZXIuYW5hbHl6ZSgqbW9kdWxlUHJvZ3JhbU5vZGUpKTsKK30KKworRW5j
b2RlZEpTVmFsdWUgSlNDX0hPU1RfQ0FMTCBtb2R1bGVMb2FkZXJPYmplY3RSZXF1ZXN0ZWRNb2R1
bGVzKEV4ZWNTdGF0ZSogZXhlYykKK3sKKyAgICBKU01vZHVsZVJlY29yZCogbW9kdWxlUmVjb3Jk
ID0ganNEeW5hbWljQ2FzdDxKU01vZHVsZVJlY29yZCo+KGV4ZWMtPmFyZ3VtZW50KDApKTsKKyAg
ICBpZiAoIW1vZHVsZVJlY29yZCkKKyAgICAgICAgcmV0dXJuIEpTVmFsdWU6OmVuY29kZShjb25z
dHJ1Y3RFbXB0eUFycmF5KGV4ZWMsIG51bGxwdHIpKTsKKworICAgIEpTQXJyYXkqIHJlc3VsdCA9
IGNvbnN0cnVjdEVtcHR5QXJyYXkoZXhlYywgbnVsbHB0ciwgbW9kdWxlUmVjb3JkLT5yZXF1ZXN0
ZWRNb2R1bGVzKCkuc2l6ZSgpKTsKKyAgICBzaXplX3QgaSA9IDA7CisgICAgZm9yIChhdXRvJiBr
ZXkgOiBtb2R1bGVSZWNvcmQtPnJlcXVlc3RlZE1vZHVsZXMoKSkKKyAgICAgICAgcmVzdWx0LT5w
dXREaXJlY3RJbmRleChleGVjLCBpKyssIGpzU3RyaW5nKGV4ZWMsIGtleS5nZXQoKSkpOworCisg
ICAgcmV0dXJuIEpTVmFsdWU6OmVuY29kZShyZXN1bHQpOworfQorCitFbmNvZGVkSlNWYWx1ZSBK
U0NfSE9TVF9DQUxMIG1vZHVsZUxvYWRlck9iamVjdFJlc29sdmUoRXhlY1N0YXRlKiBleGVjKQor
eworICAgIC8vIEhvb2sgcG9pbnQsIExvYWRlci5yZXNvbHZlLgorICAgIC8vIGh0dHBzOi8vd2hh
dHdnLmdpdGh1Yi5pby9sb2FkZXIvI2Jyb3dzZXItcmVzb2x2ZQorICAgIC8vIFRha2UgdGhlIG5h
bWUgYW5kIHJlc29sdmUgaXQgdG8gdGhlIHVuaXF1ZSBpZGVudGlmaWVyIGZvciB0aGUgcmVzb3Vy
Y2UgbG9jYXRpb24uCisgICAgLy8gRm9yIGV4YW1wbGUsIHRha2UgdGhlICJqcXVlcnkiIGFuZCBy
ZXR1cm4gdGhlIFVSTCBmb3IgdGhlIHJlc291cmNlLgorICAgIE1vZHVsZUxvYWRlck9iamVjdCog
bG9hZGVyID0ganNEeW5hbWljQ2FzdDxNb2R1bGVMb2FkZXJPYmplY3QqPihleGVjLT50aGlzVmFs
dWUoKSk7CisgICAgaWYgKCFsb2FkZXIpCisgICAgICAgIHJldHVybiBKU1ZhbHVlOjplbmNvZGUo
anNVbmRlZmluZWQoKSk7CisgICAgcmV0dXJuIEpTVmFsdWU6OmVuY29kZShsb2FkZXItPnJlc29s
dmUoZXhlYywgZXhlYy0+YXJndW1lbnQoMCksIGV4ZWMtPmFyZ3VtZW50KDEpKSk7Cit9CisKK0Vu
Y29kZWRKU1ZhbHVlIEpTQ19IT1NUX0NBTEwgbW9kdWxlTG9hZGVyT2JqZWN0RmV0Y2goRXhlY1N0
YXRlKiBleGVjKQoreworICAgIC8vIEhvb2sgcG9pbnQsIExvYWRlci5mZXRjaAorICAgIC8vIGh0
dHBzOi8vd2hhdHdnLmdpdGh1Yi5pby9sb2FkZXIvI2Jyb3dzZXItZmV0Y2gKKyAgICAvLyBUYWtl
IHRoZSBrZXkgYW5kIGZldGNoIHRoZSByZXNvdXJjZSBhY3R1YWxseS4KKyAgICBNb2R1bGVMb2Fk
ZXJPYmplY3QqIGxvYWRlciA9IGpzRHluYW1pY0Nhc3Q8TW9kdWxlTG9hZGVyT2JqZWN0Kj4oZXhl
Yy0+dGhpc1ZhbHVlKCkpOworICAgIGlmICghbG9hZGVyKQorICAgICAgICByZXR1cm4gSlNWYWx1
ZTo6ZW5jb2RlKGpzVW5kZWZpbmVkKCkpOworICAgIHJldHVybiBKU1ZhbHVlOjplbmNvZGUobG9h
ZGVyLT5mZXRjaChleGVjLCBleGVjLT5hcmd1bWVudCgwKSkpOworfQorCitFbmNvZGVkSlNWYWx1
ZSBKU0NfSE9TVF9DQUxMIG1vZHVsZUxvYWRlck9iamVjdFRyYW5zbGF0ZShFeGVjU3RhdGUqIGV4
ZWMpCit7CisgICAgLy8gSG9vayBwb2ludCwgTG9hZGVyLnRyYW5zbGF0ZQorICAgIC8vIGh0dHBz
Oi8vd2hhdHdnLmdpdGh1Yi5pby9sb2FkZXIvI2Jyb3dzZXItdHJhbnNsYXRlCisgICAgLy8gVGFr
ZSB0aGUga2V5IGFuZCB0aGUgZmV0Y2hlZCBzb3VyY2UgY29kZSBhbmQgdHJhbnNsYXRlIGl0IHRv
IHRoZSBFUzYgc291cmNlIGNvZGUuCisgICAgLy8gSXQgbWF5IGJlIHVzZWQgZm9yIHRoZSB0cmFu
c3BpbGVycyBpbiB0aGUgZnV0dXJlLgorICAgIE1vZHVsZUxvYWRlck9iamVjdCogbG9hZGVyID0g
anNEeW5hbWljQ2FzdDxNb2R1bGVMb2FkZXJPYmplY3QqPihleGVjLT50aGlzVmFsdWUoKSk7Cisg
ICAgaWYgKCFsb2FkZXIpCisgICAgICAgIHJldHVybiBKU1ZhbHVlOjplbmNvZGUoanNVbmRlZmlu
ZWQoKSk7CisgICAgcmV0dXJuIEpTVmFsdWU6OmVuY29kZShsb2FkZXItPnRyYW5zbGF0ZShleGVj
LCBleGVjLT5hcmd1bWVudCgwKSwgZXhlYy0+YXJndW1lbnQoMSkpKTsKK30KKworRW5jb2RlZEpT
VmFsdWUgSlNDX0hPU1RfQ0FMTCBtb2R1bGVMb2FkZXJPYmplY3RJbnN0YW50aWF0ZShFeGVjU3Rh
dGUqIGV4ZWMpCit7CisgICAgLy8gSG9vayBwb2ludCwgTG9hZGVyLmluc3RhbnRpYXRlCisgICAg
Ly8gaHR0cHM6Ly93aGF0d2cuZ2l0aHViLmlvL2xvYWRlci8jYnJvd3Nlci1pbnN0YW50aWF0ZQor
ICAgIC8vIFRha2UgdGhlIGtleSBhbmQgdGhlIHRyYW5zbGF0ZWQgc291cmNlIGNvZGUuCisgICAg
Ly8gSXQgaGFzIHRoZSBjaGFuY2UgdG8gcHJvdmlkZSB0aGUgb3B0aW9uYWwgbW9kdWxlIGluc3Rh
bmNlIHRoYXQgaXMgZGlmZmVyZW50IGZyb20KKyAgICAvLyB0aGUgb3JkaW5hcnkgb25lLgorICAg
IE1vZHVsZUxvYWRlck9iamVjdCogbG9hZGVyID0ganNEeW5hbWljQ2FzdDxNb2R1bGVMb2FkZXJP
YmplY3QqPihleGVjLT50aGlzVmFsdWUoKSk7CisgICAgaWYgKCFsb2FkZXIpCisgICAgICAgIHJl
dHVybiBKU1ZhbHVlOjplbmNvZGUoanNVbmRlZmluZWQoKSk7CisgICAgcmV0dXJuIEpTVmFsdWU6
OmVuY29kZShsb2FkZXItPmluc3RhbnRpYXRlKGV4ZWMsIGV4ZWMtPmFyZ3VtZW50KDApLCBleGVj
LT5hcmd1bWVudCgxKSkpOworfQorCit9IC8vIG5hbWVzcGFjZSBKU0MKZGlmZiAtLWdpdCBhL1Nv
dXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL01vZHVsZUxvYWRlck9iamVjdC5oIGIvU291cmNl
L0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvTW9kdWxlTG9hZGVyT2JqZWN0LmgKbmV3IGZpbGUgbW9k
ZSAxMDA2NDQKaW5kZXggMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMC4u
ZjI4ZTYzMjliZjMzY2RjMWVhZmFlYTAyZmNhMzY3YTRhYzg3MzBjNgotLS0gL2Rldi9udWxsCisr
KyBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL01vZHVsZUxvYWRlck9iamVjdC5oCkBA
IC0wLDAgKzEsODEgQEAKKy8qCisgKiBDb3B5cmlnaHQgKEMpIDIwMTUgQXBwbGUgSW5jLiBBbGwg
UmlnaHRzIFJlc2VydmVkLgorICoKKyAqIFJlZGlzdHJpYnV0aW9uIGFuZCB1c2UgaW4gc291cmNl
IGFuZCBiaW5hcnkgZm9ybXMsIHdpdGggb3Igd2l0aG91dAorICogbW9kaWZpY2F0aW9uLCBhcmUg
cGVybWl0dGVkIHByb3ZpZGVkIHRoYXQgdGhlIGZvbGxvd2luZyBjb25kaXRpb25zCisgKiBhcmUg
bWV0OgorICogMS4gUmVkaXN0cmlidXRpb25zIG9mIHNvdXJjZSBjb2RlIG11c3QgcmV0YWluIHRo
ZSBhYm92ZSBjb3B5cmlnaHQKKyAqICAgIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMg
YW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lci4KKyAqIDIuIFJlZGlzdHJpYnV0aW9ucyBpbiBi
aW5hcnkgZm9ybSBtdXN0IHJlcHJvZHVjZSB0aGUgYWJvdmUgY29weXJpZ2h0CisgKiAgICBub3Rp
Y2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIg
aW4gdGhlCisgKiAgICBkb2N1bWVudGF0aW9uIGFuZC9vciBvdGhlciBtYXRlcmlhbHMgcHJvdmlk
ZWQgd2l0aCB0aGUgZGlzdHJpYnV0aW9uLgorICoKKyAqIFRISVMgU09GVFdBUkUgSVMgUFJPVklE
RUQgQlkgQVBQTEUgSU5DLiBgYEFTIElTJycgQU5EIEFOWQorICogRVhQUkVTUyBPUiBJTVBMSUVE
IFdBUlJBTlRJRVMsIElOQ0xVRElORywgQlVUIE5PVCBMSU1JVEVEIFRPLCBUSEUKKyAqIElNUExJ
RUQgV0FSUkFOVElFUyBPRiBNRVJDSEFOVEFCSUxJVFkgQU5EIEZJVE5FU1MgRk9SIEEgUEFSVElD
VUxBUgorICogUFVSUE9TRSBBUkUgRElTQ0xBSU1FRC4gIElOIE5PIEVWRU5UIFNIQUxMIEFQUExF
IElOQy4gT1IKKyAqIENPTlRSSUJVVE9SUyBCRSBMSUFCTEUgRk9SIEFOWSBESVJFQ1QsIElORElS
RUNULCBJTkNJREVOVEFMLCBTUEVDSUFMLAorICogRVhFTVBMQVJZLCBPUiBDT05TRVFVRU5USUFM
IERBTUFHRVMgKElOQ0xVRElORywgQlVUIE5PVCBMSU1JVEVEIFRPLAorICogUFJPQ1VSRU1FTlQg
T0YgU1VCU1RJVFVURSBHT09EUyBPUiBTRVJWSUNFUzsgTE9TUyBPRiBVU0UsIERBVEEsIE9SCisg
KiBQUk9GSVRTOyBPUiBCVVNJTkVTUyBJTlRFUlJVUFRJT04pIEhPV0VWRVIgQ0FVU0VEIEFORCBP
TiBBTlkgVEhFT1JZCisgKiBPRiBMSUFCSUxJVFksIFdIRVRIRVIgSU4gQ09OVFJBQ1QsIFNUUklD
VCBMSUFCSUxJVFksIE9SIFRPUlQKKyAqIChJTkNMVURJTkcgTkVHTElHRU5DRSBPUiBPVEhFUldJ
U0UpIEFSSVNJTkcgSU4gQU5ZIFdBWSBPVVQgT0YgVEhFIFVTRQorICogT0YgVEhJUyBTT0ZUV0FS
RSwgRVZFTiBJRiBBRFZJU0VEIE9GIFRIRSBQT1NTSUJJTElUWSBPRiBTVUNIIERBTUFHRS4KKyAq
LworCisjaWZuZGVmIE1vZHVsZUxvYWRlck9iamVjdF9oCisjZGVmaW5lIE1vZHVsZUxvYWRlck9i
amVjdF9oCisKKyNpbmNsdWRlICJKU09iamVjdC5oIgorCituYW1lc3BhY2UgSlNDIHsKKworY2xh
c3MgTW9kdWxlTG9hZGVyT2JqZWN0IDogcHVibGljIEpTTm9uRmluYWxPYmplY3QgeworcHJpdmF0
ZToKKyAgICBNb2R1bGVMb2FkZXJPYmplY3QoVk0mLCBTdHJ1Y3R1cmUqKTsKK3B1YmxpYzoKKyAg
ICB0eXBlZGVmIEpTTm9uRmluYWxPYmplY3QgQmFzZTsKKyAgICBzdGF0aWMgY29uc3QgdW5zaWdu
ZWQgU3RydWN0dXJlRmxhZ3MgPSBCYXNlOjpTdHJ1Y3R1cmVGbGFncyB8IE92ZXJyaWRlc0dldE93
blByb3BlcnR5U2xvdDsKKworICAgIGVudW0gU3RhdHVzIHsKKyAgICAgICAgRmV0Y2gsCisgICAg
ICAgIFRyYW5zbGF0ZSwKKyAgICAgICAgSW5zdGFudGlhdGUsCisgICAgICAgIENvbGxlY3QsCisg
ICAgICAgIExpbmssCisgICAgICAgIFJlYWR5LAorICAgIH07CisKKyAgICBzdGF0aWMgTW9kdWxl
TG9hZGVyT2JqZWN0KiBjcmVhdGUoVk0mIHZtLCBKU0dsb2JhbE9iamVjdCogZ2xvYmFsT2JqZWN0
LCBTdHJ1Y3R1cmUqIHN0cnVjdHVyZSkKKyAgICB7CisgICAgICAgIE1vZHVsZUxvYWRlck9iamVj
dCogb2JqZWN0ID0gbmV3IChOb3ROdWxsLCBhbGxvY2F0ZUNlbGw8TW9kdWxlTG9hZGVyT2JqZWN0
Pih2bS5oZWFwKSkgTW9kdWxlTG9hZGVyT2JqZWN0KHZtLCBzdHJ1Y3R1cmUpOworICAgICAgICBv
YmplY3QtPmZpbmlzaENyZWF0aW9uKHZtLCBnbG9iYWxPYmplY3QpOworICAgICAgICByZXR1cm4g
b2JqZWN0OworICAgIH0KKworICAgIERFQ0xBUkVfSU5GTzsKKworICAgIHN0YXRpYyBTdHJ1Y3R1
cmUqIGNyZWF0ZVN0cnVjdHVyZShWTSYgdm0sIEpTR2xvYmFsT2JqZWN0KiBnbG9iYWxPYmplY3Qs
IEpTVmFsdWUgcHJvdG90eXBlKQorICAgIHsKKyAgICAgICAgcmV0dXJuIFN0cnVjdHVyZTo6Y3Jl
YXRlKHZtLCBnbG9iYWxPYmplY3QsIHByb3RvdHlwZSwgVHlwZUluZm8oT2JqZWN0VHlwZSwgU3Ry
dWN0dXJlRmxhZ3MpLCBpbmZvKCkpOworICAgIH0KKworICAgIC8vIEFQSXMgdG8gY29udHJvbCB0
aGUgbW9kdWxlIGxvYWRlci4KKyAgICBKU1ZhbHVlIHByb3ZpZGUoRXhlY1N0YXRlKiwgSlNWYWx1
ZSBrZXksIFN0YXR1cywgY29uc3QgU3RyaW5nJik7CisgICAgSlNWYWx1ZSByZXF1ZXN0SW5zdGFu
dGlhdGVBbGwoRXhlY1N0YXRlKiwgSlNWYWx1ZSBrZXkpOworCisgICAgLy8gUGxhdGZvcm0gZGVw
ZW5kZW50IGhvb2tlZCBBUElzLgorICAgIEpTVmFsdWUgcmVzb2x2ZShFeGVjU3RhdGUqLCBKU1Zh
bHVlIG5hbWUsIEpTVmFsdWUgcmVmZXJyZXIpOworICAgIEpTVmFsdWUgZmV0Y2goRXhlY1N0YXRl
KiwgSlNWYWx1ZSBrZXkpOworICAgIEpTVmFsdWUgdHJhbnNsYXRlKEV4ZWNTdGF0ZSosIEpTVmFs
dWUga2V5LCBKU1ZhbHVlIHBheWxvYWQpOworICAgIEpTVmFsdWUgaW5zdGFudGlhdGUoRXhlY1N0
YXRlKiwgSlNWYWx1ZSBrZXksIEpTVmFsdWUgc291cmNlKTsKKworICAgIHN0YXRpYyBib29sIGdl
dE93blByb3BlcnR5U2xvdChKU09iamVjdCosIEV4ZWNTdGF0ZSosIFByb3BlcnR5TmFtZSwgUHJv
cGVydHlTbG90Jik7CisKK3Byb3RlY3RlZDoKKyAgICB2b2lkIGZpbmlzaENyZWF0aW9uKFZNJiwg
SlNHbG9iYWxPYmplY3QqKTsKK307CisKK30gLy8gbmFtZXNwYWNlIEpTQworCisjZW5kaWYgLy8g
TW9kdWxlTG9hZGVyT2JqZWN0X2gKZGlmZiAtLWdpdCBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9y
dW50aW1lL09wdGlvbnMuaCBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL09wdGlvbnMu
aAppbmRleCAyNTk2MDc4NzFjNjVmMjdmNGM2NjI4OWU5OTI2ZWFkMjVkNTEzMGNiLi5lMzdiOTli
ZjA5NGFjNGE0NWM1NDUyMzA2MWMzNmJkZmJkYzY4MGQzIDEwMDY0NAotLS0gYS9Tb3VyY2UvSmF2
YVNjcmlwdENvcmUvcnVudGltZS9PcHRpb25zLmgKKysrIGIvU291cmNlL0phdmFTY3JpcHRDb3Jl
L3J1bnRpbWUvT3B0aW9ucy5oCkBAIC0zMjQsNiArMzI0LDggQEAgdHlwZWRlZiBjb25zdCBjaGFy
KiBvcHRpb25TdHJpbmc7CiAgICAgdih1bnNpZ25lZCwgd2F0Y2hkb2csIDAsICJ3YXRjaGRvZyB0
aW1lb3V0ICgwID0gRGlzYWJsZWQsIE4gPSBhIHRpbWVvdXQgcGVyaW9kIG9mIE4gbWlsbGlzZWNv
bmRzKSIpIFwKICAgICBcCiAgICAgdihib29sLCBkdW1wTW9kdWxlUmVjb3JkLCBmYWxzZSwgbnVs
bHB0cikgXAorICAgIHYoYm9vbCwgZHVtcE1vZHVsZUxvYWRpbmdTdGF0ZSwgZmFsc2UsIG51bGxw
dHIpIFwKKyAgICB2KGJvb2wsIGV4cG9zZUludGVybmFsTW9kdWxlTG9hZGVyLCBmYWxzZSwgImV4
cG9zZSB0aGUgaW50ZXJuYWwgbW9kdWxlIGxvYWRlciBvYmplY3QgdG8gdGhlIGdsb2JhbCBzcGFj
ZSBmb3IgZGVidWdnaW5nIikgXAogCiBjbGFzcyBPcHRpb25zIHsKIHB1YmxpYzoKZGlmZiAtLWdp
dCBhL1NvdXJjZS9XZWJDb3JlL2JpbmRpbmdzL2pzL0pTRE9NV2luZG93QmFzZS5jcHAgYi9Tb3Vy
Y2UvV2ViQ29yZS9iaW5kaW5ncy9qcy9KU0RPTVdpbmRvd0Jhc2UuY3BwCmluZGV4IDlhYjBhOGYw
ZDBmYmQ3OGU1ZTU3ZDU4MDQ3N2U2NTVjYjg5NTk1ZDEuLmEyOTBkZGM5ZTU4MWFjZDYzNDMwMTcw
MGJhZjgyN2NhMWE0ZWZkMDIgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2JpbmRpbmdzL2pz
L0pTRE9NV2luZG93QmFzZS5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvYmluZGluZ3MvanMvSlNE
T01XaW5kb3dCYXNlLmNwcApAQCAtNTYsNyArNTYsNyBAQCBzdGF0aWMgYm9vbCBzaG91bGRBbGxv
d0FjY2Vzc0Zyb20oY29uc3QgSlNHbG9iYWxPYmplY3QqIHRoaXNPYmplY3QsIEV4ZWNTdGF0ZSog
ZQogCiBjb25zdCBDbGFzc0luZm8gSlNET01XaW5kb3dCYXNlOjpzX2luZm8gPSB7ICJXaW5kb3ci
LCAmSlNET01HbG9iYWxPYmplY3Q6OnNfaW5mbywgMCwgQ1JFQVRFX01FVEhPRF9UQUJMRShKU0RP
TVdpbmRvd0Jhc2UpIH07CiAKLWNvbnN0IEdsb2JhbE9iamVjdE1ldGhvZFRhYmxlIEpTRE9NV2lu
ZG93QmFzZTo6c19nbG9iYWxPYmplY3RNZXRob2RUYWJsZSA9IHsgJnNob3VsZEFsbG93QWNjZXNz
RnJvbSwgJnN1cHBvcnRzUHJvZmlsaW5nLCAmc3VwcG9ydHNSaWNoU291cmNlSW5mbywgJnNob3Vs
ZEludGVycnVwdFNjcmlwdCwgJmphdmFTY3JpcHRSdW50aW1lRmxhZ3MsICZxdWV1ZVRhc2tUb0V2
ZW50TG9vcCwgJnNob3VsZEludGVycnVwdFNjcmlwdEJlZm9yZVRpbWVvdXQgfTsKK2NvbnN0IEds
b2JhbE9iamVjdE1ldGhvZFRhYmxlIEpTRE9NV2luZG93QmFzZTo6c19nbG9iYWxPYmplY3RNZXRo
b2RUYWJsZSA9IHsgJnNob3VsZEFsbG93QWNjZXNzRnJvbSwgJnN1cHBvcnRzUHJvZmlsaW5nLCAm
c3VwcG9ydHNSaWNoU291cmNlSW5mbywgJnNob3VsZEludGVycnVwdFNjcmlwdCwgJmphdmFTY3Jp
cHRSdW50aW1lRmxhZ3MsICZxdWV1ZVRhc2tUb0V2ZW50TG9vcCwgJnNob3VsZEludGVycnVwdFNj
cmlwdEJlZm9yZVRpbWVvdXQsIG51bGxwdHIsIG51bGxwdHIsIG51bGxwdHIsIG51bGxwdHIgfTsK
IAogSlNET01XaW5kb3dCYXNlOjpKU0RPTVdpbmRvd0Jhc2UoVk0mIHZtLCBTdHJ1Y3R1cmUqIHN0
cnVjdHVyZSwgUGFzc1JlZlB0cjxET01XaW5kb3c+IHdpbmRvdywgSlNET01XaW5kb3dTaGVsbCog
c2hlbGwpCiAgICAgOiBKU0RPTUdsb2JhbE9iamVjdCh2bSwgc3RydWN0dXJlLCAmc2hlbGwtPndv
cmxkKCksICZzX2dsb2JhbE9iamVjdE1ldGhvZFRhYmxlKQpkaWZmIC0tZ2l0IGEvU291cmNlL1dl
YkNvcmUvYmluZGluZ3MvanMvSlNXb3JrZXJHbG9iYWxTY29wZUJhc2UuY3BwIGIvU291cmNlL1dl
YkNvcmUvYmluZGluZ3MvanMvSlNXb3JrZXJHbG9iYWxTY29wZUJhc2UuY3BwCmluZGV4IGFhYTVk
YmE1NTE3MWNiOTU0MWJhNjVlMWQyNDdhYjI5YzlkOWM3YzMuLjUwNDRiYzE3ODM1MTNiOWIxYTI2
YmQzYmQxY2I1YzAwYjcwYTEwZDAgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2JpbmRpbmdz
L2pzL0pTV29ya2VyR2xvYmFsU2NvcGVCYXNlLmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9iaW5k
aW5ncy9qcy9KU1dvcmtlckdsb2JhbFNjb3BlQmFzZS5jcHAKQEAgLTQzLDcgKzQzLDcgQEAgbmFt
ZXNwYWNlIFdlYkNvcmUgewogCiBjb25zdCBDbGFzc0luZm8gSlNXb3JrZXJHbG9iYWxTY29wZUJh
c2U6OnNfaW5mbyA9IHsgIldvcmtlckdsb2JhbFNjb3BlIiwgJkpTRE9NR2xvYmFsT2JqZWN0Ojpz
X2luZm8sIDAsIENSRUFURV9NRVRIT0RfVEFCTEUoSlNXb3JrZXJHbG9iYWxTY29wZUJhc2UpIH07
CiAKLWNvbnN0IEdsb2JhbE9iamVjdE1ldGhvZFRhYmxlIEpTV29ya2VyR2xvYmFsU2NvcGVCYXNl
OjpzX2dsb2JhbE9iamVjdE1ldGhvZFRhYmxlID0geyAmYWxsb3dzQWNjZXNzRnJvbSwgJnN1cHBv
cnRzUHJvZmlsaW5nLCAmc3VwcG9ydHNSaWNoU291cmNlSW5mbywgJnNob3VsZEludGVycnVwdFNj
cmlwdCwgJmphdmFTY3JpcHRSdW50aW1lRmxhZ3MsICZxdWV1ZVRhc2tUb0V2ZW50TG9vcCwgJnNo
b3VsZEludGVycnVwdFNjcmlwdEJlZm9yZVRpbWVvdXQgfTsKK2NvbnN0IEdsb2JhbE9iamVjdE1l
dGhvZFRhYmxlIEpTV29ya2VyR2xvYmFsU2NvcGVCYXNlOjpzX2dsb2JhbE9iamVjdE1ldGhvZFRh
YmxlID0geyAmYWxsb3dzQWNjZXNzRnJvbSwgJnN1cHBvcnRzUHJvZmlsaW5nLCAmc3VwcG9ydHNS
aWNoU291cmNlSW5mbywgJnNob3VsZEludGVycnVwdFNjcmlwdCwgJmphdmFTY3JpcHRSdW50aW1l
RmxhZ3MsICZxdWV1ZVRhc2tUb0V2ZW50TG9vcCwgJnNob3VsZEludGVycnVwdFNjcmlwdEJlZm9y
ZVRpbWVvdXQsIG51bGxwdHIsIG51bGxwdHIsIG51bGxwdHIsIG51bGxwdHIgfTsKIAogSlNXb3Jr
ZXJHbG9iYWxTY29wZUJhc2U6OkpTV29ya2VyR2xvYmFsU2NvcGVCYXNlKEpTQzo6Vk0mIHZtLCBK
U0M6OlN0cnVjdHVyZSogc3RydWN0dXJlLCBQYXNzUmVmUHRyPFdvcmtlckdsb2JhbFNjb3BlPiBp
bXBsKQogICAgIDogSlNET01HbG9iYWxPYmplY3Qodm0sIHN0cnVjdHVyZSwgJm5vcm1hbFdvcmxk
KHZtKSwgJnNfZ2xvYmFsT2JqZWN0TWV0aG9kVGFibGUpCg==
</data>

          </attachment>
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>259101</attachid>
            <date>2015-08-15 13:08:07 -0700</date>
            <delta_ts>2015-08-19 00:53:38 -0700</delta_ts>
            <desc>Patch</desc>
            <filename>bug-147876-20150815130743.patch</filename>
            <type>text/plain</type>
            <size>146043</size>
            <attacher name="Yusuke Suzuki">ysuzuki</attacher>
            
              <data encoding="base64">U3VidmVyc2lvbiBSZXZpc2lvbjogMTg4NDk4CmRpZmYgLS1naXQgYS9Tb3VyY2UvSmF2YVNjcmlw
dENvcmUvQ2hhbmdlTG9nIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL0NoYW5nZUxvZwppbmRleCBm
YmY4YzE0NzE5ODkxZmYzMTliMzA1MGQwZDUxY2FhNzNjNDBlYjU5Li5iNzljNjBkNThkMjI1MTg4
MDYxN2Q1Y2ViMzgyMWQzODA2YTVkNmI5IDEwMDY0NAotLS0gYS9Tb3VyY2UvSmF2YVNjcmlwdENv
cmUvQ2hhbmdlTG9nCisrKyBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9DaGFuZ2VMb2cKQEAgLTEs
MyArMSwxOTMgQEAKKzIwMTUtMDgtMTUgIFl1c3VrZSBTdXp1a2kgIDx1dGF0YW5lLnRlYUBnbWFp
bC5jb20+CisKKyAgICAgICAgW0VTNl0gcHJvdG90eXBpbmcgbW9kdWxlIGxvYWRlciBpbiBKU0Mg
c2hlbGwKKyAgICAgICAgaHR0cHM6Ly9idWdzLndlYmtpdC5vcmcvc2hvd19idWcuY2dpP2lkPTE0
Nzg3NgorCisgICAgICAgIFJldmlld2VkIGJ5IE5PQk9EWSAoT09QUyEpLgorCisgICAgICAgIFRo
aXMgcGF0Y2ggaW1wbGVtZW50cyBFUzYgTW9kdWxlIExvYWRlciBwYXJ0LiBUaGUgaW1wbGVtZW50
YXRpb24gaXMgYmFzZWQgb24KKyAgICAgICAgdGhlIGxhdGVzdCBkcmFmdFsxLCAyXS4gVGhlIG5h
aXZlIGltcGxlbWVudGF0aW9uIHBvc2VzIHNldmVyYWwgcHJvYmxlbXMuCisgICAgICAgIFRoaXMg
cGF0Y2ggYXR0ZW1wdHMgdG8gc29sdmUgdGhlIHNwZWMgaXNzdWVzIGFuZCBwcm9wb3NlcyB0aGUg
Zml4WzMsIDQsIDVdLgorCisgICAgICAgIFdlIGNvbnN0cnVjdCB0aGUgSlNDIGludGVybmFsIG1v
ZHVsZSBsb2FkZXIgYmFzZWQgb24gdGhlIEVTNiBQcm9taXNlcy4KKyAgICAgICAgVGhlIGNoYWlu
IG9mIHRoZSBwcm9taXNlcyByZXByZXNlbnRzIHRoZSBkZXBlbmRlbmN5IGdyYXBoIG9mIHRoZSBt
b2R1bGVzIGFuZAorICAgICAgICBpdCBhdXRvbWF0aWNhbGx5IGVuYWJsZXMgYXN5bmNocm9ub3Vz
IG1vZHVsZSBmZXRjaGluZy4KKyAgICAgICAgVG8gbGV2ZXJhZ2UgdGhlIFByb21pc2VzIGludGVy
bmFsbHksIHdlIGFkZCB0aGUgc2V2ZXJhbCBub24tdXNlci1vYnNlcnZhYmxlCisgICAgICAgIHBy
aXZhdGUgbWV0aG9kcywgbGlrZSBAdGhlbiwgQGFsbC4gQW5kIHJlZmFjdG9yIHRoZSBleGlzdGlu
ZyBQcm9taXNlcworICAgICAgICBpbXBsZW1lbnRhdGlvbiB0byBtYWtlIGl0IGVhc3kgdG8gdXNl
IGludGVybmFsbHkuCisKKyAgICAgICAgVGhlIGxvYWRlciBoYXMgc2V2ZXJhbCBwbGF0Zm9ybS1k
ZXBlbmRlbnQgaG9va3MuIFRoZSBwbGF0Zm9ybSBjYW4gaW1wbGVtZW50CisgICAgICAgIHRoZXNl
IGhvb2tzIHRvIHByb3ZpZGUgdGhlIGZ1bmN0aW9hbGl0eSBtaXNzaW5nIGluIHRoZSBtb2R1bGUg
bG9hZGVycywgbGlrZQorICAgICAgICAiaG93IHRvIGZldGNoIHRoZSByZXNvdXJjZXMiLiBUaGUg
bWV0aG9kIHRhYmxlIG9mIHRoZSBKU0dsb2JhbE9iamVjdCBpcyBleHRlbmRlZAorICAgICAgICB0
byBhY2NlcHQgdGhlc2UgaG9va3MgZnJvbSB0aGUgcGxhdGZvcm0uCisKKyAgICAgICAgVGhpcyBw
YXRjaCBmb2N1cyBvbiB0aGUgbG9hZGluZyBwYXJ0LiBTbyB3ZSBkb24ndCBjcmVhdGUgdGhlIG1v
ZHVsZSBlbnZpcm9ubWVudAorICAgICAgICBhbmQgZG9uJ3QgbGluayB0aGUgbW9kdWxlcyB5ZXQu
CisKKyAgICAgICAgVG8gdGVzdCB0aGUgY3VycmVudCBtb2R1bGUgcHJvZ3Jlc3MgZWFzaWx5LCB3
ZSBhZGQgdGhlIGAtbWAgb3B0aW9uIHRvIHRoZSBKU0Mgc2hlbGwuCisgICAgICAgIFdoZW4gdGhp
cyBvcHRpb24gaXMgc3BlY2lmaWVkLCB3ZSBsb2FkIHRoZSBnaXZlbiBzY3JpcHQgYXMgdGhlIG1v
ZHVsZS4gQW5kIHRvIHVzZQorICAgICAgICB0aGUgbW9kdWxlIGxvYWRpbmcgaW5zaWRlIHRoZSBK
U0Mgc2hlbGwsIHdlIGFkZGVkIHRoZSBzaW1wbGUgbG9hZGVyIGhvb2sgZm9yIGZldGNoaW5nLgor
ICAgICAgICBJdCBmZXRjaGVzIHRoZSBtb2R1bGUgY29udGVudCBmcm9tIHRoZSBmaWxlIHN5c3Rl
bS4KKworICAgICAgICBbMV06IGh0dHBzOi8vd2hhdHdnLmdpdGh1Yi5pby9sb2FkZXIvCisgICAg
ICAgIFsyXTogaHR0cHM6Ly9naXRodWIuY29tL3doYXR3Zy9sb2FkZXIvY29tbWl0LzIxNGM3YTY2
MjViNDQ1YmRmNDExYzM5OTg0ZjM2ZjAxMTM5YTI0YmUKKyAgICAgICAgWzNdOiBodHRwczovL2dp
dGh1Yi5jb20vd2hhdHdnL2xvYWRlci9wdWxsLzY2CisgICAgICAgIFs0XTogaHR0cHM6Ly9naXRo
dWIuY29tL3doYXR3Zy9sb2FkZXIvcHVsbC82NworICAgICAgICBbNV06IGh0dHBzOi8vZ2l0aHVi
LmNvbS93aGF0d2cvbG9hZGVyL2lzc3Vlcy82OAorCisgICAgICAgICogQ01ha2VMaXN0cy50eHQ6
CisgICAgICAgICogRGVyaXZlZFNvdXJjZXMubWFrZToKKyAgICAgICAgKiBKYXZhU2NyaXB0Q29y
ZS52Y3hwcm9qL0phdmFTY3JpcHRDb3JlLnZjeHByb2o6CisgICAgICAgICogSmF2YVNjcmlwdENv
cmUudmN4cHJvai9KYXZhU2NyaXB0Q29yZS52Y3hwcm9qLmZpbHRlcnM6CisgICAgICAgICogSmF2
YVNjcmlwdENvcmUueGNvZGVwcm9qL3Byb2plY3QucGJ4cHJvajoKKyAgICAgICAgKiBidWlsdGlu
cy9CdWlsdGluTmFtZXMuaDoKKyAgICAgICAgKEpTQzo6QnVpbHRpbk5hbWVzOjpsb29rVXBQcml2
YXRlTmFtZSk6CisgICAgICAgIChKU0M6OkJ1aWx0aW5OYW1lczo6bG9va1VwUHVibGljTmFtZSk6
CisgICAgICAgIChKU0M6OkJ1aWx0aW5OYW1lczo6Z2V0UHJpdmF0ZU5hbWUpOiBEZWxldGVkLgor
ICAgICAgICAoSlNDOjpCdWlsdGluTmFtZXM6OmdldFB1YmxpY05hbWUpOiBEZWxldGVkLgorICAg
ICAgICBUbyB1c2UgdGhlIEVTNiBNYXAgaW4gdGhlIExvYWRlciBpbXBsZW1lbnRhdGlvbiwgd2Ug
YWRkZWQgQGdldCBhbmQgQHNldCBtZXRob2RzIHRvIHRoZSBNYXAuCisgICAgICAgIEJ1dCBpdCBj
b25mbGljdHMgd2l0aCB0aGUgZXhpc3RpbmcgYGdldFByaXZhdGVOYW1lYCBtZXRob2QuIFJlbmFt
ZSBpdCB0byBgbG9va1VwUHJpdmF0ZU5hbWVgLgorICAgICAgICAqIGJ1aWx0aW5zL01vZHVsZUxv
YWRlck9iamVjdC5qczogQWRkZWQuCisgICAgICAgIChzZXRTdGF0ZVRvTWF4KToKKyAgICAgICAg
KG5ld1JlZ2lzdHJ5RW50cnkpOgorICAgICAgICAoZm9yY2VGdWxmaWxsUHJvbWlzZSk6CisgICAg
ICAgIChmdWxmaWxsRmV0Y2gpOgorICAgICAgICAoZnVsZmlsbFRyYW5zbGF0ZSk6CisgICAgICAg
IChmdWxmaWxsSW5zdGFudGlhdGUpOgorICAgICAgICAoaW5zdGFudGlhdGlvbik6CisgICAgICAg
IChyZXF1ZXN0RmV0Y2gpOgorICAgICAgICAocmVxdWVzdFRyYW5zbGF0ZSk6CisgICAgICAgIChy
ZXF1ZXN0SW5zdGFudGlhdGUpOgorICAgICAgICAocmVxdWVzdENvbGxlY3QuY29sbGVjdFByb21p
c2UudGhpcy5yZXF1ZXN0SW5zdGFudGlhdGUudGhlbi4pOgorICAgICAgICAocmVxdWVzdENvbGxl
Y3QuY29sbGVjdFByb21pc2UudGhpcy5yZXF1ZXN0SW5zdGFudGlhdGUudGhlbik6CisgICAgICAg
IChyZXF1ZXN0Q29sbGVjdCk6CisgICAgICAgIChyZXF1ZXN0SW5zdGFudGlhdGVBbGwpOgorICAg
ICAgICAocHJvdmlkZSk6CisgICAgICAgICogYnVpbHRpbnMvT3BlcmF0aW9ucy5Qcm9taXNlLmpz
OgorICAgICAgICAoLm9uRnVsZmlsbGVkKToKKyAgICAgICAgKC5vblJlamVjdGVkKToKKyAgICAg
ICAgKHByb21pc2VUaGVuKToKKyAgICAgICAgKiBidWlsdGlucy9Qcm9taXNlLnByb3RvdHlwZS5q
czoKKyAgICAgICAgKHRoZW4pOgorICAgICAgICAocHJpdmF0ZVRoZW4pOgorICAgICAgICAoLm9u
RnVsZmlsbGVkKTogRGVsZXRlZC4KKyAgICAgICAgKC5vblJlamVjdGVkKTogRGVsZXRlZC4KKyAg
ICAgICAgKiBidWlsdGlucy9Qcm9taXNlQ29uc3RydWN0b3IuanM6CisgICAgICAgIChwcml2YXRl
QWxsLm5ld1Jlc29sdmVFbGVtZW50KToKKyAgICAgICAgKHByaXZhdGVBbGwpOgorICAgICAgICAq
IGpzYy5jcHA6CisgICAgICAgIChzdHJpbmdGcm9tVVRGKToKKyAgICAgICAgKGpzY1NvdXJjZSk6
CisgICAgICAgIChHbG9iYWxPYmplY3Q6OmxvYWRlckZldGNoKToKKyAgICAgICAgKGZ1bmN0aW9u
Q2hlY2tNb2R1bGVTeW50YXgpOgorICAgICAgICAoZHVtcEV4Y2VwdGlvbik6CisgICAgICAgIChy
dW5XaXRoU2NyaXB0cyk6CisgICAgICAgIChwcmludFVzYWdlU3RhdGVtZW50KToKKyAgICAgICAg
KENvbW1hbmRMaW5lOjpwYXJzZUFyZ3VtZW50cyk6CisgICAgICAgIChqc2NtYWluKToKKyAgICAg
ICAgKENvbW1hbmRMaW5lOjpDb21tYW5kTGluZSk6IERlbGV0ZWQuCisgICAgICAgICogcGFyc2Vy
L0xleGVyLmNwcDoKKyAgICAgICAgKEpTQzo6TGV4ZXI8TENoYXI+OjpwYXJzZUlkZW50aWZpZXIp
OgorICAgICAgICAoSlNDOjpMZXhlcjxVQ2hhcj46OnBhcnNlSWRlbnRpZmllcik6CisgICAgICAg
ICogcGFyc2VyL01vZHVsZUFuYWx5emVyLmNwcDoKKyAgICAgICAgKEpTQzo6TW9kdWxlQW5hbHl6
ZXI6Ok1vZHVsZUFuYWx5emVyKToKKyAgICAgICAgKEpTQzo6TW9kdWxlQW5hbHl6ZXI6OmV4cG9y
dFZhcmlhYmxlKToKKyAgICAgICAgKEpTQzo6TW9kdWxlQW5hbHl6ZXI6OmFuYWx5emUpOgorICAg
ICAgICAqIHBhcnNlci9Nb2R1bGVBbmFseXplci5oOgorICAgICAgICAoSlNDOjpNb2R1bGVBbmFs
eXplcjo6bW9kdWxlUmVjb3JkKToKKyAgICAgICAgKiBwYXJzZXIvTW9kdWxlUmVjb3JkLmNwcDoK
KyAgICAgICAgKEpTQzo6cHJpbnRhYmxlTmFtZSk6IERlbGV0ZWQuCisgICAgICAgIChKU0M6Ok1v
ZHVsZVJlY29yZDo6ZHVtcCk6IERlbGV0ZWQuCisgICAgICAgIE1vZHVsZVJlY29yZCBpcyBjb252
ZXJ0ZWQgdG8gSlNNb2R1bGVSZWNvcmQgdGhhdCBpcyBhbGxvY2F0ZWQgYXMgYSBKUyBvYmplY3Qu
CisgICAgICAgICogcGFyc2VyL01vZHVsZVJlY29yZC5oOgorICAgICAgICAoSlNDOjpNb2R1bGVS
ZWNvcmQ6OkltcG9ydEVudHJ5Ojppc05hbWVzcGFjZSk6IERlbGV0ZWQuCisgICAgICAgIChKU0M6
Ok1vZHVsZVJlY29yZDo6Y3JlYXRlKTogRGVsZXRlZC4KKyAgICAgICAgKEpTQzo6TW9kdWxlUmVj
b3JkOjphcHBlbmRSZXF1ZXN0ZWRNb2R1bGUpOiBEZWxldGVkLgorICAgICAgICAoSlNDOjpNb2R1
bGVSZWNvcmQ6OmFkZEltcG9ydEVudHJ5KTogRGVsZXRlZC4KKyAgICAgICAgKEpTQzo6TW9kdWxl
UmVjb3JkOjphZGRFeHBvcnRFbnRyeSk6IERlbGV0ZWQuCisgICAgICAgIChKU0M6Ok1vZHVsZVJl
Y29yZDo6YWRkU3RhckV4cG9ydEVudHJ5KTogRGVsZXRlZC4KKyAgICAgICAgKiBwYXJzZXIvTm9k
ZXMuaDoKKyAgICAgICAgKiBwYXJzZXIvTm9kZXNBbmFseXplTW9kdWxlLmNwcDoKKyAgICAgICAg
KEpTQzo6SW1wb3J0RGVjbGFyYXRpb25Ob2RlOjphbmFseXplTW9kdWxlKToKKyAgICAgICAgKEpT
Qzo6RXhwb3J0QWxsRGVjbGFyYXRpb25Ob2RlOjphbmFseXplTW9kdWxlKToKKyAgICAgICAgKEpT
Qzo6RXhwb3J0TmFtZWREZWNsYXJhdGlvbk5vZGU6OmFuYWx5emVNb2R1bGUpOgorICAgICAgICAq
IHJ1bnRpbWUvQ29tbW9uSWRlbnRpZmllcnMuY3BwOgorICAgICAgICAoSlNDOjpDb21tb25JZGVu
dGlmaWVyczo6bG9va1VwUHJpdmF0ZU5hbWUpOgorICAgICAgICAoSlNDOjpDb21tb25JZGVudGlm
aWVyczo6bG9va1VwUHVibGljTmFtZSk6CisgICAgICAgIChKU0M6OkNvbW1vbklkZW50aWZpZXJz
OjpnZXRQcml2YXRlTmFtZSk6IERlbGV0ZWQuCisgICAgICAgIChKU0M6OkNvbW1vbklkZW50aWZp
ZXJzOjpnZXRQdWJsaWNOYW1lKTogRGVsZXRlZC4KKyAgICAgICAgKiBydW50aW1lL0NvbW1vbklk
ZW50aWZpZXJzLmg6CisgICAgICAgICogcnVudGltZS9Db21wbGV0aW9uLmNwcDoKKyAgICAgICAg
KEpTQzo6Y2hlY2tNb2R1bGVTeW50YXgpOgorICAgICAgICAoSlNDOjpldmFsdWF0ZU1vZHVsZSk6
CisgICAgICAgIEFkZCBldmFsdWF0ZU1vZHVsZS4gVGhhdCB3aWxsIGJlIHVzZWQgdG8gZXZhbHVh
dGUgdGhlIG1vZHVsZSBvbmNlIHRoZSBpbXBsZW1lbnRhdGlvbiBpcyBjb21wbGV0ZWQuCisgICAg
ICAgIEJ1dCBub3csIGl0IGp1c3QgbG9hZHMgdGhlIG1vZHVsZXMuCisgICAgICAgICogcnVudGlt
ZS9Db21wbGV0aW9uLmg6CisgICAgICAgICogcnVudGltZS9FeGNlcHRpb25IZWxwZXJzLmNwcDoK
KyAgICAgICAgKEpTQzo6Y3JlYXRlVW5kZWZpbmVkVmFyaWFibGVFcnJvcik6CisgICAgICAgICog
cnVudGltZS9JZGVudGlmaWVyLmg6CisgICAgICAgICogcnVudGltZS9KU0dsb2JhbE9iamVjdC5j
cHA6CisgICAgICAgIChKU0M6OkpTR2xvYmFsT2JqZWN0Ojppbml0KToKKyAgICAgICAgKEpTQzo6
SlNHbG9iYWxPYmplY3Q6OnZpc2l0Q2hpbGRyZW4pOgorICAgICAgICAqIHJ1bnRpbWUvSlNHbG9i
YWxPYmplY3QuaDoKKyAgICAgICAgKEpTQzo6SlNHbG9iYWxPYmplY3Q6Om1vZHVsZUxvYWRlcik6
CisgICAgICAgIChKU0M6OkpTR2xvYmFsT2JqZWN0Ojptb2R1bGVSZWNvcmRTdHJ1Y3R1cmUpOgor
ICAgICAgICAoSlNDOjpKU0dsb2JhbE9iamVjdDo6cHJvbWlzZUNvbnN0cnVjdG9yKTogRGVsZXRl
ZC4KKyAgICAgICAgKEpTQzo6SlNHbG9iYWxPYmplY3Q6OnByb21pc2VQcm90b3R5cGUpOiBEZWxl
dGVkLgorICAgICAgICAoSlNDOjpKU0dsb2JhbE9iamVjdDo6cHJvbWlzZVN0cnVjdHVyZSk6IERl
bGV0ZWQuCisgICAgICAgIEluY2x1ZGVzIFByb21pc2UgcmVmYWN0b3JpbmcuCisgICAgICAgICog
cnVudGltZS9KU01vZHVsZVJlY29yZC5jcHA6IFJlbmFtZWQgZnJvbSBTb3VyY2UvSmF2YVNjcmlw
dENvcmUvcGFyc2VyL01vZHVsZVJlY29yZC5jcHAuCisgICAgICAgIChKU0M6OkpTTW9kdWxlUmVj
b3JkOjpkZXN0cm95KToKKyAgICAgICAgKEpTQzo6SlNNb2R1bGVSZWNvcmQ6OmZpbmlzaENyZWF0
aW9uKToKKyAgICAgICAgKEpTQzo6cHJpbnRhYmxlTmFtZSk6CisgICAgICAgIChKU0M6OkpTTW9k
dWxlUmVjb3JkOjpkdW1wKToKKyAgICAgICAgKiBydW50aW1lL0pTTW9kdWxlUmVjb3JkLmg6IFJl
bmFtZWQgZnJvbSBTb3VyY2UvSmF2YVNjcmlwdENvcmUvcGFyc2VyL01vZHVsZVJlY29yZC5oLgor
ICAgICAgICAoSlNDOjpKU01vZHVsZVJlY29yZDo6SW1wb3J0RW50cnk6OmlzTmFtZXNwYWNlKToK
KyAgICAgICAgKEpTQzo6SlNNb2R1bGVSZWNvcmQ6OmNyZWF0ZVN0cnVjdHVyZSk6CisgICAgICAg
IChKU0M6OkpTTW9kdWxlUmVjb3JkOjpjcmVhdGUpOgorICAgICAgICAoSlNDOjpKU01vZHVsZVJl
Y29yZDo6cmVxdWVzdGVkTW9kdWxlcyk6CisgICAgICAgIChKU0M6OkpTTW9kdWxlUmVjb3JkOjpK
U01vZHVsZVJlY29yZCk6CisgICAgICAgIChKU0M6OkpTTW9kdWxlUmVjb3JkOjphcHBlbmRSZXF1
ZXN0ZWRNb2R1bGUpOgorICAgICAgICAoSlNDOjpKU01vZHVsZVJlY29yZDo6YWRkSW1wb3J0RW50
cnkpOgorICAgICAgICAoSlNDOjpKU01vZHVsZVJlY29yZDo6YWRkRXhwb3J0RW50cnkpOgorICAg
ICAgICAoSlNDOjpKU01vZHVsZVJlY29yZDo6YWRkU3RhckV4cG9ydEVudHJ5KToKKyAgICAgICAg
KiBydW50aW1lL0pTUHJvbWlzZUNvbnN0cnVjdG9yLmNwcDoKKyAgICAgICAgKEpTQzo6SlNQcm9t
aXNlQ29uc3RydWN0b3I6OmZpbmlzaENyZWF0aW9uKToKKyAgICAgICAgKiBydW50aW1lL0pTUHJv
bWlzZURlZmVycmVkLmNwcDoKKyAgICAgICAgKEpTQzo6Y2FsbEZ1bmN0aW9uKToKKyAgICAgICAg
KEpTQzo6SlNQcm9taXNlRGVmZXJyZWQ6OnJlc29sdmUpOgorICAgICAgICAoSlNDOjpKU1Byb21p
c2VEZWZlcnJlZDo6cmVqZWN0KToKKyAgICAgICAgQWRkIGhlbHBlciBtZXRob2RzIHRvIHVzZSBK
U1Byb21pc2VEZWZlcnJlZCBlYXNpbHkgZnJvbSB0aGUgQysrIHdvcmxkLgorICAgICAgICAqIHJ1
bnRpbWUvSlNQcm9taXNlRGVmZXJyZWQuaDoKKyAgICAgICAgKiBydW50aW1lL0pTUHJvbWlzZVBy
b3RvdHlwZS5jcHA6CisgICAgICAgIChKU0M6OkpTUHJvbWlzZVByb3RvdHlwZTo6Y3JlYXRlKToK
KyAgICAgICAgKEpTQzo6SlNQcm9taXNlUHJvdG90eXBlOjpKU1Byb21pc2VQcm90b3R5cGUpOgor
ICAgICAgICAoSlNDOjpKU1Byb21pc2VQcm90b3R5cGU6OmZpbmlzaENyZWF0aW9uKToKKyAgICAg
ICAgKiBydW50aW1lL0pTUHJvbWlzZVByb3RvdHlwZS5oOgorICAgICAgICAqIHJ1bnRpbWUvTWFw
UHJvdG90eXBlLmNwcDoKKyAgICAgICAgKEpTQzo6TWFwUHJvdG90eXBlOjpmaW5pc2hDcmVhdGlv
bik6CisgICAgICAgICogcnVudGltZS9Nb2R1bGVMb2FkZXJPYmplY3QuY3BwOiBBZGRlZC4KKyAg
ICAgICAgKEpTQzo6TW9kdWxlTG9hZGVyT2JqZWN0OjpNb2R1bGVMb2FkZXJPYmplY3QpOgorICAg
ICAgICAoSlNDOjpNb2R1bGVMb2FkZXJPYmplY3Q6OmZpbmlzaENyZWF0aW9uKToKKyAgICAgICAg
KEpTQzo6TW9kdWxlTG9hZGVyT2JqZWN0OjpnZXRPd25Qcm9wZXJ0eVNsb3QpOgorICAgICAgICAo
SlNDOjpwcmludGFibGVNb2R1bGVLZXkpOgorICAgICAgICAoSlNDOjpNb2R1bGVMb2FkZXJPYmpl
Y3Q6OnByb3ZpZGUpOgorICAgICAgICAoSlNDOjpNb2R1bGVMb2FkZXJPYmplY3Q6OnJlcXVlc3RJ
bnN0YW50aWF0ZUFsbCk6CisgICAgICAgIChKU0M6Ok1vZHVsZUxvYWRlck9iamVjdDo6cmVzb2x2
ZSk6CisgICAgICAgIChKU0M6Ok1vZHVsZUxvYWRlck9iamVjdDo6ZmV0Y2gpOgorICAgICAgICAo
SlNDOjpNb2R1bGVMb2FkZXJPYmplY3Q6OnRyYW5zbGF0ZSk6CisgICAgICAgIChKU0M6Ok1vZHVs
ZUxvYWRlck9iamVjdDo6aW5zdGFudGlhdGUpOgorICAgICAgICAoSlNDOjptb2R1bGVMb2FkZXJP
YmplY3RQYXJzZU1vZHVsZSk6CisgICAgICAgIChKU0M6Om1vZHVsZUxvYWRlck9iamVjdFJlcXVl
c3RlZE1vZHVsZXMpOgorICAgICAgICAoSlNDOjptb2R1bGVMb2FkZXJPYmplY3RSZXNvbHZlKToK
KyAgICAgICAgKEpTQzo6bW9kdWxlTG9hZGVyT2JqZWN0RmV0Y2gpOgorICAgICAgICAoSlNDOjpt
b2R1bGVMb2FkZXJPYmplY3RUcmFuc2xhdGUpOgorICAgICAgICAoSlNDOjptb2R1bGVMb2FkZXJP
YmplY3RJbnN0YW50aWF0ZSk6CisgICAgICAgICogcnVudGltZS9Nb2R1bGVMb2FkZXJPYmplY3Qu
aDogQWRkZWQuCisgICAgICAgIChKU0M6Ok1vZHVsZUxvYWRlck9iamVjdDo6Y3JlYXRlKToKKyAg
ICAgICAgKEpTQzo6TW9kdWxlTG9hZGVyT2JqZWN0OjpjcmVhdGVTdHJ1Y3R1cmUpOgorICAgICAg
ICAqIHJ1bnRpbWUvT3B0aW9ucy5oOgorCiAyMDE1LTA4LTE0ICBSeW9zdWtlIE5pd2EgIDxybml3
YUB3ZWJraXQub3JnPgogCiAgICAgICAgIEVTNiBjbGFzcyBzeW50YXggc2hvdWxkIGFsbG93IGNv
bXB1dGVkIG5hbWUgbWV0aG9kCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9DaGFuZ2VMb2cg
Yi9Tb3VyY2UvV2ViQ29yZS9DaGFuZ2VMb2cKaW5kZXggYmY3ZjczYTJkODBkMjdhYjhiNjQzYjM4
MGI2OTU3YzU0MWQ5MGQ5OS4uODQzYjA5ZWNhNDk1YzM1ZWRmNzcwYWFmN2ZiMDAzNjM0NzZhNDUw
NSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvQ2hhbmdlTG9nCisrKyBiL1NvdXJjZS9XZWJD
b3JlL0NoYW5nZUxvZwpAQCAtMSwzICsxLDE1IEBACisyMDE1LTA4LTE1ICBZdXN1a2UgU3V6dWtp
ICA8dXRhdGFuZS50ZWFAZ21haWwuY29tPgorCisgICAgICAgIFtFUzZdIHByb3RvdHlwaW5nIG1v
ZHVsZSBsb2FkZXIgaW4gSlNDIHNoZWxsCisgICAgICAgIGh0dHBzOi8vYnVncy53ZWJraXQub3Jn
L3Nob3dfYnVnLmNnaT9pZD0xNDc4NzYKKworICAgICAgICBSZXZpZXdlZCBieSBOT0JPRFkgKE9P
UFMhKS4KKworICAgICAgICBKdXN0IGZpbGwgTG9hZGVyIGhvb2tzIHdpdGggbnVsbHB0ci4KKwor
ICAgICAgICAqIGJpbmRpbmdzL2pzL0pTRE9NV2luZG93QmFzZS5jcHA6CisgICAgICAgICogYmlu
ZGluZ3MvanMvSlNXb3JrZXJHbG9iYWxTY29wZUJhc2UuY3BwOgorCiAyMDE1LTA4LTE0ICBNYXR0
aGV3IERhaXRlciAgPG1kYWl0ZXJAYXBwbGUuY29tPgogCiAgICAgICAgIEltcGxlbWVudGluZyBl
bnVtZXJhdGVEZXZpY2VzCmRpZmYgLS1naXQgYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvQ01ha2VM
aXN0cy50eHQgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvQ01ha2VMaXN0cy50eHQKaW5kZXggODY1
NTJhOTZmNzk0MzMxMTllNDc4OGRmOTYwNDdkNmFhMmVkZGZkOS4uNWM5ODE4YTA1NDAzYzQ4YjE1
MWI0MTAzZGZmMDg2OTMzNjU0Y2FjYSAxMDA2NDQKLS0tIGEvU291cmNlL0phdmFTY3JpcHRDb3Jl
L0NNYWtlTGlzdHMudHh0CisrKyBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9DTWFrZUxpc3RzLnR4
dApAQCAtMzg2LDcgKzM4Niw2IEBAIHNldChKYXZhU2NyaXB0Q29yZV9TT1VSQ0VTCiAKICAgICBw
YXJzZXIvTGV4ZXIuY3BwCiAgICAgcGFyc2VyL01vZHVsZUFuYWx5emVyLmNwcAotICAgIHBhcnNl
ci9Nb2R1bGVSZWNvcmQuY3BwCiAgICAgcGFyc2VyL05vZGVzLmNwcAogICAgIHBhcnNlci9Ob2Rl
c0FuYWx5emVNb2R1bGUuY3BwCiAgICAgcGFyc2VyL1BhcnNlci5jcHAKQEAgLTUyNSw2ICs1MjQs
NyBAQCBzZXQoSmF2YVNjcmlwdENvcmVfUlVOVElNRV9TT1VSQ0VTCiAgICAgcnVudGltZS9KU0xv
Y2suY3BwCiAgICAgcnVudGltZS9KU01hcC5jcHAKICAgICBydW50aW1lL0pTTWFwSXRlcmF0b3Iu
Y3BwCisgICAgcnVudGltZS9KU01vZHVsZVJlY29yZC5jcHAKICAgICBydW50aW1lL0pTTm90QW5P
YmplY3QuY3BwCiAgICAgcnVudGltZS9KU09OT2JqZWN0LmNwcAogICAgIHJ1bnRpbWUvSlNPYmpl
Y3QuY3BwCkBAIC01NTksNiArNTU5LDcgQEAgc2V0KEphdmFTY3JpcHRDb3JlX1JVTlRJTUVfU09V
UkNFUwogICAgIHJ1bnRpbWUvTWF0aENvbW1vbi5jcHAKICAgICBydW50aW1lL01hdGhPYmplY3Qu
Y3BwCiAgICAgcnVudGltZS9NZW1vcnlTdGF0aXN0aWNzLmNwcAorICAgIHJ1bnRpbWUvTW9kdWxl
TG9hZGVyT2JqZWN0LmNwcAogICAgIHJ1bnRpbWUvTmF0aXZlRXJyb3JDb25zdHJ1Y3Rvci5jcHAK
ICAgICBydW50aW1lL05hdGl2ZUVycm9yUHJvdG90eXBlLmNwcAogICAgIHJ1bnRpbWUvTnVsbEdl
dHRlckZ1bmN0aW9uLmNwcApAQCAtNjUxLDYgKzY1Miw3IEBAIHNldChKYXZhU2NyaXB0Q29yZV9M
VVRfRklMRVMKICAgICBydW50aW1lL0pTT05PYmplY3QuY3BwCiAgICAgcnVudGltZS9KU1Byb21p
c2VDb25zdHJ1Y3Rvci5jcHAKICAgICBydW50aW1lL0pTUHJvbWlzZVByb3RvdHlwZS5jcHAKKyAg
ICBydW50aW1lL01vZHVsZUxvYWRlck9iamVjdC5jcHAKICAgICBydW50aW1lL051bWJlckNvbnN0
cnVjdG9yLmNwcAogICAgIHJ1bnRpbWUvTnVtYmVyUHJvdG90eXBlLmNwcAogICAgIHJ1bnRpbWUv
T2JqZWN0Q29uc3RydWN0b3IuY3BwCmRpZmYgLS1naXQgYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUv
RGVyaXZlZFNvdXJjZXMubWFrZSBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9EZXJpdmVkU291cmNl
cy5tYWtlCmluZGV4IDFjYjJkNWNiYTNiZDM1ZTIwOWY5ZDJjN2JiNDY3YjJiOTZmN2ZhNWQuLjUz
YWJkYjZhZGNiNzEwOGU3ZWYxOTNiOTY5OTU2NDk1OTVmMmMxNTEgMTAwNjQ0Ci0tLSBhL1NvdXJj
ZS9KYXZhU2NyaXB0Q29yZS9EZXJpdmVkU291cmNlcy5tYWtlCisrKyBiL1NvdXJjZS9KYXZhU2Ny
aXB0Q29yZS9EZXJpdmVkU291cmNlcy5tYWtlCkBAIC01NSw2ICs1NSw3IEBAIGFsbCA6IFwKICAg
ICBKU1Byb21pc2VDb25zdHJ1Y3Rvci5sdXQuaCBcCiAgICAgS2V5d29yZExvb2t1cC5oIFwKICAg
ICBMZXhlci5sdXQuaCBcCisgICAgTW9kdWxlTG9hZGVyT2JqZWN0Lmx1dC5oIFwKICAgICBOdW1i
ZXJDb25zdHJ1Y3Rvci5sdXQuaCBcCiAgICAgTnVtYmVyUHJvdG90eXBlLmx1dC5oIFwKICAgICBP
YmplY3RDb25zdHJ1Y3Rvci5sdXQuaCBcCmRpZmYgLS1naXQgYS9Tb3VyY2UvSmF2YVNjcmlwdENv
cmUvSmF2YVNjcmlwdENvcmUudmN4cHJvai9KYXZhU2NyaXB0Q29yZS52Y3hwcm9qIGIvU291cmNl
L0phdmFTY3JpcHRDb3JlL0phdmFTY3JpcHRDb3JlLnZjeHByb2ovSmF2YVNjcmlwdENvcmUudmN4
cHJvagppbmRleCAwMWQ4MzdmMjk2Y2U0MmY3NjU2MTc5MDI3MGNiMzY4MDM0MmRjYjllLi5mZmRj
MTA2NzUwODNjN2I3MTQ2OWQwZjI0NTIyMDJiZGE3NWQ2YWI2IDEwMDY0NAotLS0gYS9Tb3VyY2Uv
SmF2YVNjcmlwdENvcmUvSmF2YVNjcmlwdENvcmUudmN4cHJvai9KYXZhU2NyaXB0Q29yZS52Y3hw
cm9qCisrKyBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9KYXZhU2NyaXB0Q29yZS52Y3hwcm9qL0ph
dmFTY3JpcHRDb3JlLnZjeHByb2oKQEAgLTY2MSw3ICs2NjEsNiBAQAogICAgIDxDbENvbXBpbGUg
SW5jbHVkZT0iLi5cbGx2bVxMTFZNQVBJLmNwcCIgLz4KICAgICA8Q2xDb21waWxlIEluY2x1ZGU9
Ii4uXHBhcnNlclxMZXhlci5jcHAiIC8+CiAgICAgPENsQ29tcGlsZSBJbmNsdWRlPSIuLlxwYXJz
ZXJcTW9kdWxlQW5hbHl6ZXIuY3BwIiAvPgotICAgIDxDbENvbXBpbGUgSW5jbHVkZT0iLi5ccGFy
c2VyXE1vZHVsZVJlY29yZC5jcHAiIC8+CiAgICAgPENsQ29tcGlsZSBJbmNsdWRlPSIuLlxwYXJz
ZXJcTm9kZXMuY3BwIiAvPgogICAgIDxDbENvbXBpbGUgSW5jbHVkZT0iLi5ccGFyc2VyXE5vZGVz
QW5hbHl6ZU1vZHVsZS5jcHAiIC8+CiAgICAgPENsQ29tcGlsZSBJbmNsdWRlPSIuLlxwYXJzZXJc
UGFyc2VyLmNwcCIgLz4KQEAgLTc3Nyw2ICs3NzYsNyBAQAogICAgIDxDbENvbXBpbGUgSW5jbHVk
ZT0iLi5ccnVudGltZVxKU0xvY2suY3BwIiAvPgogICAgIDxDbENvbXBpbGUgSW5jbHVkZT0iLi5c
cnVudGltZVxKU01hcC5jcHAiIC8+CiAgICAgPENsQ29tcGlsZSBJbmNsdWRlPSIuLlxydW50aW1l
XEpTTWFwSXRlcmF0b3IuY3BwIiAvPgorICAgIDxDbENvbXBpbGUgSW5jbHVkZT0iLi5ccnVudGlt
ZVxKU01vZHVsZVJlY29yZC5jcHAiIC8+CiAgICAgPENsQ29tcGlsZSBJbmNsdWRlPSIuLlxydW50
aW1lXEpTTm90QW5PYmplY3QuY3BwIiAvPgogICAgIDxDbENvbXBpbGUgSW5jbHVkZT0iLi5ccnVu
dGltZVxKU09OT2JqZWN0LmNwcCIgLz4KICAgICA8Q2xDb21waWxlIEluY2x1ZGU9Ii4uXHJ1bnRp
bWVcSlNPYmplY3QuY3BwIiAvPgpAQCAtODEyLDYgKzgxMiw3IEBACiAgICAgPENsQ29tcGlsZSBJ
bmNsdWRlPSIuLlxydW50aW1lXE1hdGhDb21tb24uY3BwIiAvPgogICAgIDxDbENvbXBpbGUgSW5j
bHVkZT0iLi5ccnVudGltZVxNYXRoT2JqZWN0LmNwcCIgLz4KICAgICA8Q2xDb21waWxlIEluY2x1
ZGU9Ii4uXHJ1bnRpbWVcTWVtb3J5U3RhdGlzdGljcy5jcHAiIC8+CisgICAgPENsQ29tcGlsZSBJ
bmNsdWRlPSIuLlxydW50aW1lXE1vZHVsZUxvYWRlck9iamVjdC5jcHAiIC8+CiAgICAgPENsQ29t
cGlsZSBJbmNsdWRlPSIuLlxydW50aW1lXE5hdGl2ZUVycm9yQ29uc3RydWN0b3IuY3BwIiAvPgog
ICAgIDxDbENvbXBpbGUgSW5jbHVkZT0iLi5ccnVudGltZVxOYXRpdmVFcnJvclByb3RvdHlwZS5j
cHAiIC8+CiAgICAgPENsQ29tcGlsZSBJbmNsdWRlPSIuLlxydW50aW1lXE51bGxHZXR0ZXJGdW5j
dGlvbi5jcHAiIC8+CkBAIC05MjMsNiArOTI0LDcgQEAKICAgICA8Q2xJbmNsdWRlIEluY2x1ZGU9
IiQoQ29uZmlndXJhdGlvbkJ1aWxkRGlyKVxvYmokKFBsYXRmb3JtQXJjaGl0ZWN0dXJlKVwkKFBy
b2plY3ROYW1lKVxEZXJpdmVkU291cmNlc1xOdW1iZXJDb25zdHJ1Y3Rvci5sdXQuaCIgLz4KICAg
ICA8Q2xJbmNsdWRlIEluY2x1ZGU9IiQoQ29uZmlndXJhdGlvbkJ1aWxkRGlyKVxvYmokKFBsYXRm
b3JtQXJjaGl0ZWN0dXJlKVwkKFByb2plY3ROYW1lKVxEZXJpdmVkU291cmNlc1xOdW1iZXJQcm90
b3R5cGUubHV0LmgiIC8+CiAgICAgPENsSW5jbHVkZSBJbmNsdWRlPSIkKENvbmZpZ3VyYXRpb25C
dWlsZERpcilcb2JqJChQbGF0Zm9ybUFyY2hpdGVjdHVyZSlcJChQcm9qZWN0TmFtZSlcRGVyaXZl
ZFNvdXJjZXNcT2JqZWN0Q29uc3RydWN0b3IubHV0LmgiIC8+CisgICAgPENsSW5jbHVkZSBJbmNs
dWRlPSIkKENvbmZpZ3VyYXRpb25CdWlsZERpcilcb2JqJChQbGF0Zm9ybUFyY2hpdGVjdHVyZSlc
JChQcm9qZWN0TmFtZSlcRGVyaXZlZFNvdXJjZXNcTW9kdWxlTG9hZGVyT2JqZWN0Lmx1dC5oIiAv
PgogICAgIDxDbEluY2x1ZGUgSW5jbHVkZT0iJChDb25maWd1cmF0aW9uQnVpbGREaXIpXG9iaiQo
UGxhdGZvcm1BcmNoaXRlY3R1cmUpXCQoUHJvamVjdE5hbWUpXERlcml2ZWRTb3VyY2VzXFJlZmxl
Y3RPYmplY3QubHV0LmgiIC8+CiAgICAgPENsSW5jbHVkZSBJbmNsdWRlPSIkKENvbmZpZ3VyYXRp
b25CdWlsZERpcilcb2JqJChQbGF0Zm9ybUFyY2hpdGVjdHVyZSlcJChQcm9qZWN0TmFtZSlcRGVy
aXZlZFNvdXJjZXNcUmVnRXhwQ29uc3RydWN0b3IubHV0LmgiIC8+CiAgICAgPENsSW5jbHVkZSBJ
bmNsdWRlPSIkKENvbmZpZ3VyYXRpb25CdWlsZERpcilcb2JqJChQbGF0Zm9ybUFyY2hpdGVjdHVy
ZSlcJChQcm9qZWN0TmFtZSlcRGVyaXZlZFNvdXJjZXNcUmVnRXhwSml0VGFibGVzLmgiIC8+CkBA
IC0xNDU0LDcgKzE0NTYsNiBAQAogICAgIDxDbEluY2x1ZGUgSW5jbHVkZT0iLi5ccGFyc2VyXEFT
VEJ1aWxkZXIuaCIgLz4KICAgICA8Q2xJbmNsdWRlIEluY2x1ZGU9Ii4uXHBhcnNlclxMZXhlci5o
IiAvPgogICAgIDxDbEluY2x1ZGUgSW5jbHVkZT0iLi5ccGFyc2VyXE1vZHVsZUFuYWx5emVyLmgi
IC8+Ci0gICAgPENsSW5jbHVkZSBJbmNsdWRlPSIuLlxwYXJzZXJcTW9kdWxlUmVjb3JkLmgiIC8+
CiAgICAgPENsSW5jbHVkZSBJbmNsdWRlPSIuLlxwYXJzZXJcTm9kZUNvbnN0cnVjdG9ycy5oIiAv
PgogICAgIDxDbEluY2x1ZGUgSW5jbHVkZT0iLi5ccGFyc2VyXE5vZGVzLmgiIC8+CiAgICAgPENs
SW5jbHVkZSBJbmNsdWRlPSIuLlxwYXJzZXJcUGFyc2VyLmgiIC8+CkBAIC0xNjE5LDYgKzE2MjAs
NyBAQAogICAgIDxDbEluY2x1ZGUgSW5jbHVkZT0iLi5ccnVudGltZVxKU0xvY2suaCIgLz4KICAg
ICA8Q2xJbmNsdWRlIEluY2x1ZGU9Ii4uXHJ1bnRpbWVcSlNNYXAuaCIgLz4KICAgICA8Q2xJbmNs
dWRlIEluY2x1ZGU9Ii4uXHJ1bnRpbWVcSlNNYXBJdGVyYXRvci5oIiAvPgorICAgIDxDbEluY2x1
ZGUgSW5jbHVkZT0iLi5ccnVudGltZVxKU01vZHVsZVJlY29yZC5oIiAvPgogICAgIDxDbEluY2x1
ZGUgSW5jbHVkZT0iLi5ccnVudGltZVxKU05vdEFuT2JqZWN0LmgiIC8+CiAgICAgPENsSW5jbHVk
ZSBJbmNsdWRlPSIuLlxydW50aW1lXEpTT05PYmplY3QuaCIgLz4KICAgICA8Q2xJbmNsdWRlIElu
Y2x1ZGU9Ii4uXHJ1bnRpbWVcSlNPYmplY3QuaCIgLz4KQEAgLTE2NjQsNiArMTY2Niw3IEBACiAg
ICAgPENsSW5jbHVkZSBJbmNsdWRlPSIuLlxydW50aW1lXE1hdGhDb21tb24uaCIgLz4KICAgICA8
Q2xJbmNsdWRlIEluY2x1ZGU9Ii4uXHJ1bnRpbWVcTWF0aE9iamVjdC5oIiAvPgogICAgIDxDbElu
Y2x1ZGUgSW5jbHVkZT0iLi5ccnVudGltZVxNZW1vcnlTdGF0aXN0aWNzLmgiIC8+CisgICAgPENs
SW5jbHVkZSBJbmNsdWRlPSIuLlxydW50aW1lXE1vZHVsZUxvYWRlck9iamVjdC5oIiAvPgogICAg
IDxDbEluY2x1ZGUgSW5jbHVkZT0iLi5ccnVudGltZVxNaWNyb3Rhc2suaCIgLz4KICAgICA8Q2xJ
bmNsdWRlIEluY2x1ZGU9Ii4uXHJ1bnRpbWVcTmF0aXZlRXJyb3JDb25zdHJ1Y3Rvci5oIiAvPgog
ICAgIDxDbEluY2x1ZGUgSW5jbHVkZT0iLi5ccnVudGltZVxOYXRpdmVFcnJvclByb3RvdHlwZS5o
IiAvPgpkaWZmIC0tZ2l0IGEvU291cmNlL0phdmFTY3JpcHRDb3JlL0phdmFTY3JpcHRDb3JlLnZj
eHByb2ovSmF2YVNjcmlwdENvcmUudmN4cHJvai5maWx0ZXJzIGIvU291cmNlL0phdmFTY3JpcHRD
b3JlL0phdmFTY3JpcHRDb3JlLnZjeHByb2ovSmF2YVNjcmlwdENvcmUudmN4cHJvai5maWx0ZXJz
CmluZGV4IGNlMWFiMjQ4MDgxYWVmZGI4ZWE1ZmVkZjM0YWEzZDI5ZmM0ODk5MTguLmI1ZDM3MjQw
Mjg5ZDA1Mzk5YmQ0NGE3ZmQ3OWYwNDIwMWIwNjAzMTggMTAwNjQ0Ci0tLSBhL1NvdXJjZS9KYXZh
U2NyaXB0Q29yZS9KYXZhU2NyaXB0Q29yZS52Y3hwcm9qL0phdmFTY3JpcHRDb3JlLnZjeHByb2ou
ZmlsdGVycworKysgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvSmF2YVNjcmlwdENvcmUudmN4cHJv
ai9KYXZhU2NyaXB0Q29yZS52Y3hwcm9qLmZpbHRlcnMKQEAgLTQ1OSw5ICs0NTksNiBAQAogICAg
IDxDbENvbXBpbGUgSW5jbHVkZT0iLi5ccGFyc2VyXE1vZHVsZUFuYWx5emVyLmNwcCI+CiAgICAg
ICA8RmlsdGVyPnBhcnNlcjwvRmlsdGVyPgogICAgIDwvQ2xDb21waWxlPgotICAgIDxDbENvbXBp
bGUgSW5jbHVkZT0iLi5ccGFyc2VyXE1vZHVsZVJlY29yZC5jcHAiPgotICAgICAgPEZpbHRlcj5w
YXJzZXI8L0ZpbHRlcj4KLSAgICA8L0NsQ29tcGlsZT4KICAgICA8Q2xDb21waWxlIEluY2x1ZGU9
Ii4uXHBhcnNlclxOb2Rlcy5jcHAiPgogICAgICAgPEZpbHRlcj5wYXJzZXI8L0ZpbHRlcj4KICAg
ICA8L0NsQ29tcGlsZT4KQEAgLTcyNiw2ICs3MjMsOSBAQAogICAgIDxDbENvbXBpbGUgSW5jbHVk
ZT0iLi5ccnVudGltZVxKU01hcC5jcHAiPgogICAgICAgPEZpbHRlcj5ydW50aW1lPC9GaWx0ZXI+
CiAgICAgPC9DbENvbXBpbGU+CisgICAgPENsQ29tcGlsZSBJbmNsdWRlPSIuLlxydW50aW1lXEpT
TW9kdWxlUmVjb3JkLmNwcCI+CisgICAgICA8RmlsdGVyPnJ1bnRpbWU8L0ZpbHRlcj4KKyAgICA8
L0NsQ29tcGlsZT4KICAgICA8Q2xDb21waWxlIEluY2x1ZGU9Ii4uXHJ1bnRpbWVcSlNOb3RBbk9i
amVjdC5jcHAiPgogICAgICAgPEZpbHRlcj5ydW50aW1lPC9GaWx0ZXI+CiAgICAgPC9DbENvbXBp
bGU+CkBAIC0xNjk1LDYgKzE2OTUsOSBAQAogICAgIDxDbENvbXBpbGUgSW5jbHVkZT0iLi5ccnVu
dGltZVxNZW1vcnlTdGF0aXN0aWNzLmNwcCI+CiAgICAgICA8RmlsdGVyPnJ1bnRpbWU8L0ZpbHRl
cj4KICAgICA8L0NsQ29tcGlsZT4KKyAgICA8Q2xDb21waWxlIEluY2x1ZGU9Ii4uXHJ1bnRpbWVc
TW9kdWxlTG9hZGVyT2JqZWN0LmNwcCI+CisgICAgICA8RmlsdGVyPnJ1bnRpbWU8L0ZpbHRlcj4K
KyAgICA8L0NsQ29tcGlsZT4KICAgICA8Q2xDb21waWxlIEluY2x1ZGU9Ii4uXGJ5dGVjb2RlXENv
bXBsZXhHZXRTdGF0dXMuY3BwIj4KICAgICAgIDxGaWx0ZXI+Ynl0ZWNvZGU8L0ZpbHRlcj4KICAg
ICA8L0NsQ29tcGlsZT4KQEAgLTI0OTUsOSArMjQ5OCw2IEBACiAgICAgPENsSW5jbHVkZSBJbmNs
dWRlPSIuLlxwYXJzZXJcTW9kdWxlQW5hbHl6ZXIuaCI+CiAgICAgICA8RmlsdGVyPnBhcnNlcjwv
RmlsdGVyPgogICAgIDwvQ2xJbmNsdWRlPgotICAgIDxDbEluY2x1ZGUgSW5jbHVkZT0iLi5ccGFy
c2VyXE1vZHVsZVJlY29yZC5oIj4KLSAgICAgIDxGaWx0ZXI+cGFyc2VyPC9GaWx0ZXI+Ci0gICAg
PC9DbEluY2x1ZGU+CiAgICAgPENsSW5jbHVkZSBJbmNsdWRlPSIuLlxwYXJzZXJcTm9kZUNvbnN0
cnVjdG9ycy5oIj4KICAgICAgIDxGaWx0ZXI+cGFyc2VyPC9GaWx0ZXI+CiAgICAgPC9DbEluY2x1
ZGU+CkBAIC0zMjA3LDYgKzMyMDcsOSBAQAogICAgIDxDbEluY2x1ZGUgSW5jbHVkZT0iJChDb25m
aWd1cmF0aW9uQnVpbGREaXIpXG9iaiQoUGxhdGZvcm1BcmNoaXRlY3R1cmUpXCQoUHJvamVjdE5h
bWUpXERlcml2ZWRTb3VyY2VzXExleGVyLmx1dC5oIj4KICAgICAgIDxGaWx0ZXI+RGVyaXZlZCBT
b3VyY2VzPC9GaWx0ZXI+CiAgICAgPC9DbEluY2x1ZGU+CisgICAgPENsSW5jbHVkZSBJbmNsdWRl
PSIkKENvbmZpZ3VyYXRpb25CdWlsZERpcilcb2JqJChQbGF0Zm9ybUFyY2hpdGVjdHVyZSlcJChQ
cm9qZWN0TmFtZSlcRGVyaXZlZFNvdXJjZXNcTW9kdWxlTG9hZGVyT2JqZWN0Lmx1dC5oIj4KKyAg
ICAgIDxGaWx0ZXI+RGVyaXZlZCBTb3VyY2VzPC9GaWx0ZXI+CisgICAgPC9DbEluY2x1ZGU+CiAg
ICAgPENsSW5jbHVkZSBJbmNsdWRlPSIkKENvbmZpZ3VyYXRpb25CdWlsZERpcilcb2JqJChQbGF0
Zm9ybUFyY2hpdGVjdHVyZSlcJChQcm9qZWN0TmFtZSlcRGVyaXZlZFNvdXJjZXNcTnVtYmVyQ29u
c3RydWN0b3IubHV0LmgiPgogICAgICAgPEZpbHRlcj5EZXJpdmVkIFNvdXJjZXM8L0ZpbHRlcj4K
ICAgICA8L0NsSW5jbHVkZT4KQEAgLTM0NDQsNiArMzQ0Nyw5IEBACiAgICAgPENsSW5jbHVkZSBJ
bmNsdWRlPSIuLlxydW50aW1lXEpTTWFwLmgiPgogICAgICAgPEZpbHRlcj5ydW50aW1lPC9GaWx0
ZXI+CiAgICAgPC9DbEluY2x1ZGU+CisgICAgPENsSW5jbHVkZSBJbmNsdWRlPSIuLlxydW50aW1l
XEpTTW9kdWxlUmVjb3JkLmgiPgorICAgICAgPEZpbHRlcj5ydW50aW1lPC9GaWx0ZXI+CisgICAg
PC9DbEluY2x1ZGU+CiAgICAgPENsSW5jbHVkZSBJbmNsdWRlPSIuLlxydW50aW1lXEpTU2V0Lmgi
PgogICAgICAgPEZpbHRlcj5ydW50aW1lPC9GaWx0ZXI+CiAgICAgPC9DbEluY2x1ZGU+CkBAIC00
MjM3LDYgKzQyNDMsOSBAQAogICAgIDxDbEluY2x1ZGUgSW5jbHVkZT0iLi5ccnVudGltZVxNZW1v
cnlTdGF0aXN0aWNzLmgiPgogICAgICAgPEZpbHRlcj5ydW50aW1lPC9GaWx0ZXI+CiAgICAgPC9D
bEluY2x1ZGU+CisgICAgPENsSW5jbHVkZSBJbmNsdWRlPSIuLlxydW50aW1lXE1vZHVsZUxvYWRl
ck9iamVjdC5oIj4KKyAgICAgIDxGaWx0ZXI+cnVudGltZTwvRmlsdGVyPgorICAgIDwvQ2xJbmNs
dWRlPgogICAgIDxDbEluY2x1ZGUgSW5jbHVkZT0iLi5cYnl0ZWNvZGVcQ29tcGxleEdldFN0YXR1
cy5oIj4KICAgICAgIDxGaWx0ZXI+Ynl0ZWNvZGU8L0ZpbHRlcj4KICAgICA8L0NsSW5jbHVkZT4K
ZGlmZiAtLWdpdCBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9KYXZhU2NyaXB0Q29yZS54Y29kZXBy
b2ovcHJvamVjdC5wYnhwcm9qIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL0phdmFTY3JpcHRDb3Jl
Lnhjb2RlcHJvai9wcm9qZWN0LnBieHByb2oKaW5kZXggZmRjNjgzNzFkZGIyYmU1NTM0OTQxZjgz
MmM4YzcyMDFiNDA2ZGFhZi4uOTY5MjU3NDA5OTJjN2UzMjlmMGFiYjVmN2I5MjcxZjcwZjc2M2Fk
OSAxMDA2NDQKLS0tIGEvU291cmNlL0phdmFTY3JpcHRDb3JlL0phdmFTY3JpcHRDb3JlLnhjb2Rl
cHJvai9wcm9qZWN0LnBieHByb2oKKysrIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL0phdmFTY3Jp
cHRDb3JlLnhjb2RlcHJvai9wcm9qZWN0LnBieHByb2oKQEAgLTE2OTQsMTMgKzE2OTQsMTUgQEAK
IAkJRTMzNjM3QTYxQjYzMjIwMjAwRUUwODQwIC8qIFJlZmxlY3RPYmplY3QuaCBpbiBIZWFkZXJz
ICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IEUzMzYzN0E0MUI2MzIyMDIwMEVF
MDg0MCAvKiBSZWZsZWN0T2JqZWN0LmggKi87IHNldHRpbmdzID0ge0FUVFJJQlVURVMgPSAoUHJp
dmF0ZSwgKTsgfTsgfTsKIAkJRTMzQjNFMjYxQjdBQkQ3NTAwNDhEQjJFIC8qIEluc3BlY3Rvcklu
c3RydW1lbnRhdGlvbk9iamVjdC5sdXQuaCBpbiBIZWFkZXJzICovID0ge2lzYSA9IFBCWEJ1aWxk
RmlsZTsgZmlsZVJlZiA9IEUzM0IzRTI1MUI3QUJENzUwMDQ4REIyRSAvKiBJbnNwZWN0b3JJbnN0
cnVtZW50YXRpb25PYmplY3QubHV0LmggKi87IH07CiAJCUUzNTQ2MjJCMUI2MDY1RDEwMDU0NTM4
NiAvKiBDb25zdHJ1Y3RBYmlsaXR5LmggaW4gSGVhZGVycyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZp
bGU7IGZpbGVSZWYgPSBFMzU0NjIyQTFCNjA2NUQxMDA1NDUzODYgLyogQ29uc3RydWN0QWJpbGl0
eS5oICovOyBzZXR0aW5ncyA9IHtBVFRSSUJVVEVTID0gKFByaXZhdGUsICk7IH07IH07CisJCUUz
NTVGMzUyMUI3REM4NTMwMEM1MERDNSAvKiBNb2R1bGVMb2FkZXJPYmplY3QuY3BwIGluIFNvdXJj
ZXMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gRTM1NUYzNTAxQjdEQzg1MzAw
QzUwREM1IC8qIE1vZHVsZUxvYWRlck9iamVjdC5jcHAgKi87IH07CisJCUUzNTVGMzUzMUI3REM4
NTMwMEM1MERDNSAvKiBNb2R1bGVMb2FkZXJPYmplY3QuaCBpbiBIZWFkZXJzICovID0ge2lzYSA9
IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IEUzNTVGMzUxMUI3REM4NTMwMEM1MERDNSAvKiBNb2R1
bGVMb2FkZXJPYmplY3QuaCAqLzsgfTsKIAkJRTM3OTRFNzUxQjc3RUI5NzAwNTU0M0FFIC8qIE1v
ZHVsZUFuYWx5emVyLmNwcCBpbiBTb3VyY2VzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmls
ZVJlZiA9IEUzNzk0RTczMUI3N0VCOTcwMDU1NDNBRSAvKiBNb2R1bGVBbmFseXplci5jcHAgKi87
IH07CiAJCUUzNzk0RTc2MUI3N0VCOTcwMDU1NDNBRSAvKiBNb2R1bGVBbmFseXplci5oIGluIEhl
YWRlcnMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gRTM3OTRFNzQxQjc3RUI5
NzAwNTU0M0FFIC8qIE1vZHVsZUFuYWx5emVyLmggKi87IHNldHRpbmdzID0ge0FUVFJJQlVURVMg
PSAoUHJpdmF0ZSwgKTsgfTsgfTsKLQkJRTM5NjNDRUQxQjczRjc1MDAwRUI0Q0U1IC8qIE1vZHVs
ZVJlY29yZC5oIGluIEhlYWRlcnMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0g
RTM5NjNDRUIxQjczRjc1MDAwRUI0Q0U1IC8qIE1vZHVsZVJlY29yZC5oICovOyBzZXR0aW5ncyA9
IHtBVFRSSUJVVEVTID0gKFByaXZhdGUsICk7IH07IH07CiAJCUUzOTYzQ0VFMUI3M0Y3NTAwMEVC
NENFNSAvKiBOb2Rlc0FuYWx5emVNb2R1bGUuY3BwIGluIFNvdXJjZXMgKi8gPSB7aXNhID0gUEJY
QnVpbGRGaWxlOyBmaWxlUmVmID0gRTM5NjNDRUMxQjczRjc1MDAwRUI0Q0U1IC8qIE5vZGVzQW5h
bHl6ZU1vZHVsZS5jcHAgKi87IH07Ci0JCUUzQzA5RjU1MUI3OTY5MkEwMEVFMzZBMiAvKiBNb2R1
bGVSZWNvcmQuY3BwIGluIFNvdXJjZXMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVm
ID0gRTNDMDlGNTQxQjc5NjkyQTAwRUUzNkEyIC8qIE1vZHVsZVJlY29yZC5jcHAgKi87IH07CiAJ
CUUzNUUwMzVGMUI3QUI0M0UwMDczQUQyQSAvKiBJbnNwZWN0b3JJbnN0cnVtZW50YXRpb25PYmpl
Y3QuY3BwIGluIFNvdXJjZXMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gRTM1
RTAzNUQxQjdBQjQzRTAwNzNBRDJBIC8qIEluc3BlY3Rvckluc3RydW1lbnRhdGlvbk9iamVjdC5j
cHAgKi87IH07CiAJCUUzNUUwMzYwMUI3QUI0M0UwMDczQUQyQSAvKiBJbnNwZWN0b3JJbnN0cnVt
ZW50YXRpb25PYmplY3QuaCBpbiBIZWFkZXJzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmls
ZVJlZiA9IEUzNUUwMzVFMUI3QUI0M0UwMDczQUQyQSAvKiBJbnNwZWN0b3JJbnN0cnVtZW50YXRp
b25PYmplY3QuaCAqLzsgc2V0dGluZ3MgPSB7QVRUUklCVVRFUyA9IChQcml2YXRlLCApOyB9OyB9
OworCQlFMzlEQTRBNjFCN0U4QjdDMDA4NEYzM0EgLyogSlNNb2R1bGVSZWNvcmQuY3BwIGluIFNv
dXJjZXMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gRTM5REE0QTQxQjdFOEI3
QzAwODRGMzNBIC8qIEpTTW9kdWxlUmVjb3JkLmNwcCAqLzsgfTsKKwkJRTM5REE0QTcxQjdFOEI3
QzAwODRGMzNBIC8qIEpTTW9kdWxlUmVjb3JkLmggaW4gSGVhZGVycyAqLyA9IHtpc2EgPSBQQlhC
dWlsZEZpbGU7IGZpbGVSZWYgPSBFMzlEQTRBNTFCN0U4QjdDMDA4NEYzM0EgLyogSlNNb2R1bGVS
ZWNvcmQuaCAqLzsgc2V0dGluZ3MgPSB7QVRUUklCVVRFUyA9IChQcml2YXRlLCApOyB9OyB9Owog
CQlFM0VGODg3NDFCNjZERjIzMDAzRjI2Q0IgLyogSlNQcm9wZXJ0eU5hbWVJdGVyYXRvci5jcHAg
aW4gU291cmNlcyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSBFM0VGODg3MjFC
NjZERjIzMDAzRjI2Q0IgLyogSlNQcm9wZXJ0eU5hbWVJdGVyYXRvci5jcHAgKi87IH07CiAJCUUz
RUY4ODc1MUI2NkRGMjMwMDNGMjZDQiAvKiBKU1Byb3BlcnR5TmFtZUl0ZXJhdG9yLmggaW4gSGVh
ZGVycyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSBFM0VGODg3MzFCNjZERjIz
MDAzRjI2Q0IgLyogSlNQcm9wZXJ0eU5hbWVJdGVyYXRvci5oICovOyBzZXR0aW5ncyA9IHtBVFRS
SUJVVEVTID0gKFByaXZhdGUsICk7IH07IH07CiAJCUU0OURDMTZCMTJFRjI5M0UwMDE4NEExRiAv
KiBTb3VyY2VQcm92aWRlckNhY2hlLmNwcCBpbiBTb3VyY2VzICovID0ge2lzYSA9IFBCWEJ1aWxk
RmlsZTsgZmlsZVJlZiA9IEU0OURDMTU1MTJFRjI3NzIwMDE4NEExRiAvKiBTb3VyY2VQcm92aWRl
ckNhY2hlLmNwcCAqLzsgfTsKQEAgLTM1MjYsMTQgKzM1MjgsMTYgQEAKIAkJRTMzNjM3QTQxQjYz
MjIwMjAwRUUwODQwIC8qIFJlZmxlY3RPYmplY3QuaCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJl
bmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuYy5o
OyBwYXRoID0gUmVmbGVjdE9iamVjdC5oOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OwogCQlF
MzNCM0UyNTFCN0FCRDc1MDA0OERCMkUgLyogSW5zcGVjdG9ySW5zdHJ1bWVudGF0aW9uT2JqZWN0
Lmx1dC5oICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxh
c3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jLmg7IG5hbWUgPSBJbnNwZWN0b3JJbnN0cnVt
ZW50YXRpb25PYmplY3QubHV0Lmg7IHBhdGggPSBJbnNwZWN0b3JJbnN0cnVtZW50YXRpb25PYmpl
Y3QubHV0Lmg7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CiAJCUUzNTQ2MjJBMUI2MDY1RDEw
MDU0NTM4NiAvKiBDb25zdHJ1Y3RBYmlsaXR5LmggKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5j
ZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmMuaDsg
cGF0aCA9IENvbnN0cnVjdEFiaWxpdHkuaDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKKwkJ
RTM1NUYzNTAxQjdEQzg1MzAwQzUwREM1IC8qIE1vZHVsZUxvYWRlck9iamVjdC5jcHAgKi8gPSB7
aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5
cGUgPSBzb3VyY2Vjb2RlLmNwcC5jcHA7IHBhdGggPSBNb2R1bGVMb2FkZXJPYmplY3QuY3BwOyBz
b3VyY2VUcmVlID0gIjxncm91cD4iOyB9OworCQlFMzU1RjM1MTFCN0RDODUzMDBDNTBEQzUgLyog
TW9kdWxlTG9hZGVyT2JqZWN0LmggKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVu
Y29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmMuaDsgcGF0aCA9IE1v
ZHVsZUxvYWRlck9iamVjdC5oOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OwogCQlFMzc5NEU3
MzFCNzdFQjk3MDA1NTQzQUUgLyogTW9kdWxlQW5hbHl6ZXIuY3BwICovID0ge2lzYSA9IFBCWEZp
bGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNl
Y29kZS5jcHAuY3BwOyBwYXRoID0gTW9kdWxlQW5hbHl6ZXIuY3BwOyBzb3VyY2VUcmVlID0gIjxn
cm91cD4iOyB9OwogCQlFMzc5NEU3NDFCNzdFQjk3MDA1NTQzQUUgLyogTW9kdWxlQW5hbHl6ZXIu
aCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25v
d25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuYy5oOyBwYXRoID0gTW9kdWxlQW5hbHl6ZXIuaDsgc291
cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKLQkJRTM5NjNDRUIxQjczRjc1MDAwRUI0Q0U1IC8qIE1v
ZHVsZVJlY29yZC5oICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9
IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jLmg7IHBhdGggPSBNb2R1bGVSZWNv
cmQuaDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKIAkJRTM5NjNDRUMxQjczRjc1MDAwRUI0
Q0U1IC8qIE5vZGVzQW5hbHl6ZU1vZHVsZS5jcHAgKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5j
ZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmNwcC5j
cHA7IHBhdGggPSBOb2Rlc0FuYWx5emVNb2R1bGUuY3BwOyBzb3VyY2VUcmVlID0gIjxncm91cD4i
OyB9OwotCQlFM0MwOUY1NDFCNzk2OTJBMDBFRTM2QTIgLyogTW9kdWxlUmVjb3JkLmNwcCAqLyA9
IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxl
VHlwZSA9IHNvdXJjZWNvZGUuY3BwLmNwcDsgcGF0aCA9IE1vZHVsZVJlY29yZC5jcHA7IHNvdXJj
ZVRyZWUgPSAiPGdyb3VwPiI7IH07CiAJCUUzNUUwMzVEMUI3QUI0M0UwMDczQUQyQSAvKiBJbnNw
ZWN0b3JJbnN0cnVtZW50YXRpb25PYmplY3QuY3BwICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVu
Y2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jcHAu
Y3BwOyBwYXRoID0gSW5zcGVjdG9ySW5zdHJ1bWVudGF0aW9uT2JqZWN0LmNwcDsgc291cmNlVHJl
ZSA9ICI8Z3JvdXA+IjsgfTsKIAkJRTM1RTAzNUUxQjdBQjQzRTAwNzNBRDJBIC8qIEluc3BlY3Rv
ckluc3RydW1lbnRhdGlvbk9iamVjdC5oICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZp
bGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jLmg7IHBhdGgg
PSBJbnNwZWN0b3JJbnN0cnVtZW50YXRpb25PYmplY3QuaDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+
IjsgfTsKIAkJRTM1RTAzNjExQjdBQjQ4NTAwNzNBRDJBIC8qIEluc3BlY3Rvckluc3RydW1lbnRh
dGlvbk9iamVjdC5qcyAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2Rpbmcg
PSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuamF2YXNjcmlwdDsgcGF0aCA9IElu
c3BlY3Rvckluc3RydW1lbnRhdGlvbk9iamVjdC5qczsgc291cmNlVHJlZSA9ICI8Z3JvdXA+Ijsg
fTsKKwkJRTM5REE0QTQxQjdFOEI3QzAwODRGMzNBIC8qIEpTTW9kdWxlUmVjb3JkLmNwcCAqLyA9
IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxl
VHlwZSA9IHNvdXJjZWNvZGUuY3BwLmNwcDsgcGF0aCA9IEpTTW9kdWxlUmVjb3JkLmNwcDsgc291
cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKKwkJRTM5REE0QTUxQjdFOEI3QzAwODRGMzNBIC8qIEpT
TW9kdWxlUmVjb3JkLmggKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5n
ID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmMuaDsgcGF0aCA9IEpTTW9kdWxl
UmVjb3JkLmg7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CiAJCUUzRUY4ODcyMUI2NkRGMjMw
MDNGMjZDQiAvKiBKU1Byb3BlcnR5TmFtZUl0ZXJhdG9yLmNwcCAqLyA9IHtpc2EgPSBQQlhGaWxl
UmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNv
ZGUuY3BwLmNwcDsgcGF0aCA9IEpTUHJvcGVydHlOYW1lSXRlcmF0b3IuY3BwOyBzb3VyY2VUcmVl
ID0gIjxncm91cD4iOyB9OwogCQlFM0VGODg3MzFCNjZERjIzMDAzRjI2Q0IgLyogSlNQcm9wZXJ0
eU5hbWVJdGVyYXRvci5oICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGlu
ZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jLmg7IHBhdGggPSBKU1Byb3Bl
cnR5TmFtZUl0ZXJhdG9yLmg7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CiAJCUU0OURDMTQ5
MTJFRjI2MUEwMDE4NEExRiAvKiBTb3VyY2VQcm92aWRlckNhY2hlSXRlbS5oICovID0ge2lzYSA9
IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0g
c291cmNlY29kZS5jLmg7IHBhdGggPSBTb3VyY2VQcm92aWRlckNhY2hlSXRlbS5oOyBzb3VyY2VU
cmVlID0gIjxncm91cD4iOyB9OwpAQCAtNDQ0Niw4ICs0NDUwLDYgQEAKIAkJCQlGNjkyQTg2NjAy
NTU1OTdEMDFGRjYwRjcgLyogTGV4ZXIuaCAqLywKIAkJCQlFMzc5NEU3MzFCNzdFQjk3MDA1NTQz
QUUgLyogTW9kdWxlQW5hbHl6ZXIuY3BwICovLAogCQkJCUUzNzk0RTc0MUI3N0VCOTcwMDU1NDNB
RSAvKiBNb2R1bGVBbmFseXplci5oICovLAotCQkJCUUzQzA5RjU0MUI3OTY5MkEwMEVFMzZBMiAv
KiBNb2R1bGVSZWNvcmQuY3BwICovLAotCQkJCUUzOTYzQ0VCMUI3M0Y3NTAwMEVCNENFNSAvKiBN
b2R1bGVSZWNvcmQuaCAqLywKIAkJCQk5MzBEQUQwMzBGQjFFQjFBMDA4MkQyMDUgLyogTm9kZUNv
bnN0cnVjdG9ycy5oICovLAogCQkJCUY2OTJBODZEMDI1NTU5N0QwMUZGNjBGNyAvKiBOb2Rlcy5j
cHAgKi8sCiAJCQkJRjY5MkE4NkUwMjU1NTk3RDAxRkY2MEY3IC8qIE5vZGVzLmggKi8sCkBAIC00
NzA5LDYgKzQ3MTEsOCBAQAogCQkJCUE3MDA4NzQwMTdDQkU4RUIwMEMzRTY0MyAvKiBKU01hcC5o
ICovLAogCQkJCUE3NERFRjhGMTgyRDk5MTQwMDUyMkMyMiAvKiBKU01hcEl0ZXJhdG9yLmNwcCAq
LywKIAkJCQlBNzRERUY5MDE4MkQ5OTE0MDA1MjJDMjIgLyogSlNNYXBJdGVyYXRvci5oICovLAor
CQkJCUUzOURBNEE0MUI3RThCN0MwMDg0RjMzQSAvKiBKU01vZHVsZVJlY29yZC5jcHAgKi8sCisJ
CQkJRTM5REE0QTUxQjdFOEI3QzAwODRGMzNBIC8qIEpTTW9kdWxlUmVjb3JkLmggKi8sCiAJCQkJ
QTcyNzAwNzgwREFDNjA1NjAwRTU0OEQ3IC8qIEpTTm90QW5PYmplY3QuY3BwICovLAogCQkJCUE3
MjcwMDc3MERBQzYwNTYwMEU1NDhENyAvKiBKU05vdEFuT2JqZWN0LmggKi8sCiAJCQkJQkMyMkEz
OTgwRTE2RTE0ODAwQUYyMUM4IC8qIEpTT2JqZWN0LmNwcCAqLywKQEAgLTQ3ODgsNiArNDc5Miw4
IEBACiAJCQkJOTAyMTNFM0IxMjNBNDBDMjAwRDQyMkYzIC8qIE1lbW9yeVN0YXRpc3RpY3MuY3Bw
ICovLAogCQkJCTkwMjEzRTNDMTIzQTQwQzIwMEQ0MjJGMyAvKiBNZW1vcnlTdGF0aXN0aWNzLmgg
Ki8sCiAJCQkJN0MwMDhDRTUxODc2MzFCNjAwOTU1QzI0IC8qIE1pY3JvdGFzay5oICovLAorCQkJ
CUUzNTVGMzUwMUI3REM4NTMwMEM1MERDNSAvKiBNb2R1bGVMb2FkZXJPYmplY3QuY3BwICovLAor
CQkJCUUzNTVGMzUxMUI3REM4NTMwMEM1MERDNSAvKiBNb2R1bGVMb2FkZXJPYmplY3QuaCAqLywK
IAkJCQlCQzAyRTkwODBFMTgzOURCMDAwRjkyOTcgLyogTmF0aXZlRXJyb3JDb25zdHJ1Y3Rvci5j
cHAgKi8sCiAJCQkJQkMwMkU5MDkwRTE4MzlEQjAwMEY5Mjk3IC8qIE5hdGl2ZUVycm9yQ29uc3Ry
dWN0b3IuaCAqLywKIAkJCQlCQzAyRTkwQTBFMTgzOURCMDAwRjkyOTcgLyogTmF0aXZlRXJyb3JQ
cm90b3R5cGUuY3BwICovLApAQCAtNTc5NSw2ICs1ODAxLDcgQEAKIAkJCWZpbGVzID0gKAogCQkJ
CTBGRkE1NDk4MTZCODgzNTMwMEIzQTk4MiAvKiBBNjRET3Bjb2RlLmggaW4gSGVhZGVycyAqLywK
IAkJCQk4NjAxNjFFMzBGM0E4M0MxMDBGODQ3MTAgLyogQWJzdHJhY3RNYWNyb0Fzc2VtYmxlci5o
IGluIEhlYWRlcnMgKi8sCisJCQkJRTM1NUYzNTMxQjdEQzg1MzAwQzUwREM1IC8qIE1vZHVsZUxv
YWRlck9iamVjdC5oIGluIEhlYWRlcnMgKi8sCiAJCQkJMEZFMDUwMjkxQUE5MDk1NjAwRDMzQjMz
IC8qIFNjb3BlZEFyZ3VtZW50c1RhYmxlLmggaW4gSGVhZGVycyAqLywKIAkJCQkwRjU1RjBGNTE0
RDEwNjNDMDBBQzc2NDkgLyogQWJzdHJhY3RQQy5oIGluIEhlYWRlcnMgKi8sCiAJCQkJMkE0OEQx
OTExNzcyMzY1QjAwQzY1QTVGIC8qIEFQSUNhbGxiYWNrRnVuY3Rpb24uaCBpbiBIZWFkZXJzICov
LApAQCAtNjE5Myw3ICs2MjAwLDYgQEAKIAkJCQkwRkNFRkFBQzE4MDRDMTNFMDA0NzJDRTQgLyog
RlRMU2F2ZVJlc3RvcmUuaCBpbiBIZWFkZXJzICovLAogCQkJCTBGMjVGMUIyMTgxNjM1RjMwMDUy
MkYzOSAvKiBGVExTbG93UGF0aENhbGwuaCBpbiBIZWFkZXJzICovLAogCQkJCUUzNTQ2MjJCMUI2
MDY1RDEwMDU0NTM4NiAvKiBDb25zdHJ1Y3RBYmlsaXR5LmggaW4gSGVhZGVycyAqLywKLQkJCQlF
Mzk2M0NFRDFCNzNGNzUwMDBFQjRDRTUgLyogTW9kdWxlUmVjb3JkLmggaW4gSGVhZGVycyAqLywK
IAkJCQkwRjI1RjFCNDE4MTYzNUYzMDA1MjJGMzkgLyogRlRMU2xvd1BhdGhDYWxsS2V5LmggaW4g
SGVhZGVycyAqLywKIAkJCQkwRjlEMzM5QjE4MDNBREI3MDA3M0MyQkMgLyogRlRMU3RhY2tNYXBz
LmggaW4gSGVhZGVycyAqLywKIAkJCQkwRkVBMEExMjE3MDUxM0RCMDBCQjcyMkMgLyogRlRMU3Rh
dGUuaCBpbiBIZWFkZXJzICovLApAQCAtNjIxNCw2ICs2MjIwLDcgQEAKIAkJCQlCQ0JFMkNBRTE0
RTk4NUFBMDAwNTkzQUQgLyogR0NBc3NlcnRpb25zLmggaW4gSGVhZGVycyAqLywKIAkJCQkwRjc2
NkQzMDE1QThEQ0UyMDA4RjM2M0UgLyogR0NBd2FyZUpJVFN0dWJSb3V0aW5lLmggaW4gSGVhZGVy
cyAqLywKIAkJCQk3MEVDMEVDNzFBQTBEN0RBMDBCNkFBRkEgLyogU3RyaW5nSXRlcmF0b3JQcm90
b3R5cGUuaCBpbiBIZWFkZXJzICovLAorCQkJCUUzOURBNEE3MUI3RThCN0MwMDg0RjMzQSAvKiBK
U01vZHVsZVJlY29yZC5oIGluIEhlYWRlcnMgKi8sCiAJCQkJMEYyQjY2QUMxN0I2QjUzRjAwQTdB
RTNGIC8qIEdDSW5jb21pbmdSZWZDb3VudGVkLmggaW4gSGVhZGVycyAqLywKIAkJCQkwRjJCNjZB
RDE3QjZCNTQ1MDBBN0FFM0YgLyogR0NJbmNvbWluZ1JlZkNvdW50ZWRJbmxpbmVzLmggaW4gSGVh
ZGVycyAqLywKIAkJCQkwRjJCNjZBRTE3QjZCNTQ1MDBBN0FFM0YgLyogR0NJbmNvbWluZ1JlZkNv
dW50ZWRTZXQuaCBpbiBIZWFkZXJzICovLApAQCAtNzMyOSw2ICs3MzM2LDcgQEAKIAkJCQkyQTg4
MDY3ODE5MTA3RDU1MDBDQjBCQkIgLyogREZHRnVuY3Rpb25XaGl0ZWxpc3QuY3BwIGluIFNvdXJj
ZXMgKi8sCiAJCQkJMEYyREQ4MTMxQUIzRDhCRTAwQkJCOEU4IC8qIERGR0FyZ3VtZW50c1V0aWxp
dGllcy5jcHAgaW4gU291cmNlcyAqLywKIAkJCQlBN0Q4OUNGMzE3QTBCOENDMDA3NzNBRDggLyog
REZHQmxvY2tJbnNlcnRpb25TZXQuY3BwIGluIFNvdXJjZXMgKi8sCisJCQkJRTM1NUYzNTIxQjdE
Qzg1MzAwQzUwREM1IC8qIE1vZHVsZUxvYWRlck9iamVjdC5jcHAgaW4gU291cmNlcyAqLywKIAkJ
CQk4NkVDOURDNDEzMjhERjgyMDAyQjJBRDcgLyogREZHQnl0ZUNvZGVQYXJzZXIuY3BwIGluIFNv
dXJjZXMgKi8sCiAJCQkJMEZEODJFMjExNDE3MkNFMzAwMTc5Qzk0IC8qIERGR0NhcGFiaWxpdGll
cy5jcHAgaW4gU291cmNlcyAqLywKIAkJCQkwRjJCOUNFNjE5RDBCQTdEMDBCMUQxQjUgLyogREZH
T2JqZWN0QWxsb2NhdGlvblNpbmtpbmdQaGFzZS5jcHAgaW4gU291cmNlcyAqLywKQEAgLTc2MTYs
NyArNzYyNCw2IEBACiAJCQkJMEYyQjY2RUQxN0I2QjVBQjAwQTdBRTNGIC8qIEpTRGF0YVZpZXdQ
cm90b3R5cGUuY3BwIGluIFNvdXJjZXMgKi8sCiAJCQkJMEYyRDRERTgxOTgzMkRBQzAwN0Q0QjE5
IC8qIFRvVGhpc1N0YXR1cy5jcHAgaW4gU291cmNlcyAqLywKIAkJCQlGRTM4NEVFNTFBRERCN0FE
MDA1NURFMkMgLyogSlNEb2xsYXJWTS5jcHAgaW4gU291cmNlcyAqLywKLQkJCQlFM0MwOUY1NTFC
Nzk2OTJBMDBFRTM2QTIgLyogTW9kdWxlUmVjb3JkLmNwcCBpbiBTb3VyY2VzICovLAogCQkJCTk3
ODgwMTQwMTQ3MUFEOTIwMDQxQjAxNiAvKiBKU0RhdGVNYXRoLmNwcCBpbiBTb3VyY2VzICovLAog
CQkJCTBGRTA1MDE3MUFBOTA5MTEwMEQzM0IzMyAvKiBEaXJlY3RBcmd1bWVudHMuY3BwIGluIFNv
dXJjZXMgKi8sCiAJCQkJMTQwNTY2RDYxMDdFQzI3MTAwNURCQzhEIC8qIEpTRnVuY3Rpb24uY3Bw
IGluIFNvdXJjZXMgKi8sCkBAIC03ODU4LDYgKzc4NjUsNyBAQAogCQkJCTBGRjQyNzMyMTU4RUJE
NTgwMDRDQjlGRiAvKiBVRGlzODZEaXNhc3NlbWJsZXIuY3BwIGluIFNvdXJjZXMgKi8sCiAJCQkJ
QTc2RjI3OTQxNUYxM0M5NjAwNTE3RDY3IC8qIFVubGlua2VkQ29kZUJsb2NrLmNwcCBpbiBTb3Vy
Y2VzICovLAogCQkJCUI1OUY4OTM5MTg5MUYyOUYwMEQ1Q0NEQyAvKiBVbmxpbmtlZEluc3RydWN0
aW9uU3RyZWFtLmNwcCBpbiBTb3VyY2VzICovLAorCQkJCUUzOURBNEE2MUI3RThCN0MwMDg0RjMz
QSAvKiBKU01vZHVsZVJlY29yZC5jcHAgaW4gU291cmNlcyAqLywKIAkJCQkwRjc1NzZEMjE4RTFG
RUU5MDAyRUY0Q0QgLyogQWNjZXNzb3JDYWxsSklUU3R1YlJvdXRpbmUuY3BwIGluIFNvdXJjZXMg
Ki8sCiAJCQkJMEYyNEU1NTgxN0Y3NEVEQjAwQUJCMjE3IC8qIFZhbHVlUmVjb3ZlcnkuY3BwIGlu
IFNvdXJjZXMgKi8sCiAJCQkJRTE4RTNBNTkwREY5Mjc4QzAwRDkwQjM0IC8qIFZNLmNwcCBpbiBT
b3VyY2VzICovLApkaWZmIC0tZ2l0IGEvU291cmNlL0phdmFTY3JpcHRDb3JlL2J1aWx0aW5zL0J1
aWx0aW5OYW1lcy5oIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL2J1aWx0aW5zL0J1aWx0aW5OYW1l
cy5oCmluZGV4IGNlMDQ0NDc5ZjczMDJmMTliMWQ4MTE2OGY5OWVjNDgzNWI0MDIyMGEuLjdlNTQz
NDJlNzUyZjlmMmQ0ZTgzNWVkMDM0ZjQ2MDljZjM2NWQzOWYgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9K
YXZhU2NyaXB0Q29yZS9idWlsdGlucy9CdWlsdGluTmFtZXMuaAorKysgYi9Tb3VyY2UvSmF2YVNj
cmlwdENvcmUvYnVpbHRpbnMvQnVpbHRpbk5hbWVzLmgKQEAgLTY3LDggKzY3LDggQEAgY2xhc3Mg
QnVpbHRpbk5hbWVzIHsKICAgICBib29sIGlzUHJpdmF0ZU5hbWUoU3ltYm9sSW1wbCYgdWlkKSBj
b25zdDsKICAgICBib29sIGlzUHJpdmF0ZU5hbWUoVW5pcXVlZFN0cmluZ0ltcGwmIHVpZCkgY29u
c3Q7CiAgICAgYm9vbCBpc1ByaXZhdGVOYW1lKGNvbnN0IElkZW50aWZpZXImKSBjb25zdDsKLSAg
ICBjb25zdCBJZGVudGlmaWVyKiBnZXRQcml2YXRlTmFtZShjb25zdCBJZGVudGlmaWVyJikgY29u
c3Q7Ci0gICAgY29uc3QgSWRlbnRpZmllciYgZ2V0UHVibGljTmFtZShjb25zdCBJZGVudGlmaWVy
JikgY29uc3Q7CisgICAgY29uc3QgSWRlbnRpZmllciogbG9va1VwUHJpdmF0ZU5hbWUoY29uc3Qg
SWRlbnRpZmllciYpIGNvbnN0OworICAgIGNvbnN0IElkZW50aWZpZXImIGxvb2tVcFB1YmxpY05h
bWUoY29uc3QgSWRlbnRpZmllciYpIGNvbnN0OwogICAgIAogICAgIEpTQ19GT1JFQUNIX0JVSUxU
SU5fRlVOQ1RJT05fTkFNRShERUNMQVJFX0JVSUxUSU5fSURFTlRJRklFUl9BQ0NFU1NPUikKICAg
ICBKU0NfQ09NTU9OX1BSSVZBVEVfSURFTlRJRklFUlNfRUFDSF9QUk9QRVJUWV9OQU1FKERFQ0xB
UkVfQlVJTFRJTl9JREVOVElGSUVSX0FDQ0VTU09SKQpAQCAtMTEwLDcgKzExMCw3IEBAIGlubGlu
ZSBib29sIEJ1aWx0aW5OYW1lczo6aXNQcml2YXRlTmFtZShjb25zdCBJZGVudGlmaWVyJiBpZGVu
dCkgY29uc3QKICAgICByZXR1cm4gaXNQcml2YXRlTmFtZSgqaWRlbnQuaW1wbCgpKTsKIH0KIAot
aW5saW5lIGNvbnN0IElkZW50aWZpZXIqIEJ1aWx0aW5OYW1lczo6Z2V0UHJpdmF0ZU5hbWUoY29u
c3QgSWRlbnRpZmllciYgaWRlbnQpIGNvbnN0CitpbmxpbmUgY29uc3QgSWRlbnRpZmllciogQnVp
bHRpbk5hbWVzOjpsb29rVXBQcml2YXRlTmFtZShjb25zdCBJZGVudGlmaWVyJiBpZGVudCkgY29u
c3QKIHsKICAgICBhdXRvIGl0ZXIgPSBtX3B1YmxpY1RvUHJpdmF0ZU1hcC5maW5kKGlkZW50Lmlt
cGwoKSk7CiAgICAgaWYgKGl0ZXIgIT0gbV9wdWJsaWNUb1ByaXZhdGVNYXAuZW5kKCkpCkBAIC0x
MTgsNyArMTE4LDcgQEAgaW5saW5lIGNvbnN0IElkZW50aWZpZXIqIEJ1aWx0aW5OYW1lczo6Z2V0
UHJpdmF0ZU5hbWUoY29uc3QgSWRlbnRpZmllciYgaWRlbnQpIGMKICAgICByZXR1cm4gMDsKIH0K
IAotaW5saW5lIGNvbnN0IElkZW50aWZpZXImIEJ1aWx0aW5OYW1lczo6Z2V0UHVibGljTmFtZShj
b25zdCBJZGVudGlmaWVyJiBpZGVudCkgY29uc3QKK2lubGluZSBjb25zdCBJZGVudGlmaWVyJiBC
dWlsdGluTmFtZXM6Omxvb2tVcFB1YmxpY05hbWUoY29uc3QgSWRlbnRpZmllciYgaWRlbnQpIGNv
bnN0CiB7CiAgICAgYXV0byBpdGVyID0gbV9wcml2YXRlVG9QdWJsaWNNYXAuZmluZChpZGVudC5p
bXBsKCkpOwogICAgIGlmIChpdGVyICE9IG1fcHJpdmF0ZVRvUHVibGljTWFwLmVuZCgpKQpkaWZm
IC0tZ2l0IGEvU291cmNlL0phdmFTY3JpcHRDb3JlL2J1aWx0aW5zL01vZHVsZUxvYWRlck9iamVj
dC5qcyBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9idWlsdGlucy9Nb2R1bGVMb2FkZXJPYmplY3Qu
anMKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMC4uNmU2ZmQ3ODZjODIzZGU2MDc3Y2FmZDM2NWQ4M2IwNjU1OWUxZjNlZAot
LS0gL2Rldi9udWxsCisrKyBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9idWlsdGlucy9Nb2R1bGVM
b2FkZXJPYmplY3QuanMKQEAgLTAsMCArMSwzOTcgQEAKKy8qCisgKiBDb3B5cmlnaHQgKEMpIDIw
MTUgQXBwbGUgSW5jLiBBbGwgcmlnaHRzIHJlc2VydmVkLgorICoKKyAqIFJlZGlzdHJpYnV0aW9u
IGFuZCB1c2UgaW4gc291cmNlIGFuZCBiaW5hcnkgZm9ybXMsIHdpdGggb3Igd2l0aG91dAorICog
bW9kaWZpY2F0aW9uLCBhcmUgcGVybWl0dGVkIHByb3ZpZGVkIHRoYXQgdGhlIGZvbGxvd2luZyBj
b25kaXRpb25zCisgKiBhcmUgbWV0OgorICogMS4gUmVkaXN0cmlidXRpb25zIG9mIHNvdXJjZSBj
b2RlIG11c3QgcmV0YWluIHRoZSBhYm92ZSBjb3B5cmlnaHQKKyAqICAgIG5vdGljZSwgdGhpcyBs
aXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lci4KKyAqIDIuIFJl
ZGlzdHJpYnV0aW9ucyBpbiBiaW5hcnkgZm9ybSBtdXN0IHJlcHJvZHVjZSB0aGUgYWJvdmUgY29w
eXJpZ2h0CisgKiAgICBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9s
bG93aW5nIGRpc2NsYWltZXIgaW4gdGhlCisgKiAgICBkb2N1bWVudGF0aW9uIGFuZC9vciBvdGhl
ciBtYXRlcmlhbHMgcHJvdmlkZWQgd2l0aCB0aGUgZGlzdHJpYnV0aW9uLgorICoKKyAqIFRISVMg
U09GVFdBUkUgSVMgUFJPVklERUQgQlkgQVBQTEUgSU5DLiBgYEFTIElTJycgQU5EIEFOWQorICog
RVhQUkVTUyBPUiBJTVBMSUVEIFdBUlJBTlRJRVMsIElOQ0xVRElORywgQlVUIE5PVCBMSU1JVEVE
IFRPLCBUSEUKKyAqIElNUExJRUQgV0FSUkFOVElFUyBPRiBNRVJDSEFOVEFCSUxJVFkgQU5EIEZJ
VE5FU1MgRk9SIEEgUEFSVElDVUxBUgorICogUFVSUE9TRSBBUkUgRElTQ0xBSU1FRC4gIElOIE5P
IEVWRU5UIFNIQUxMIEFQUExFIElOQy4gT1IKKyAqIENPTlRSSUJVVE9SUyBCRSBMSUFCTEUgRk9S
IEFOWSBESVJFQ1QsIElORElSRUNULCBJTkNJREVOVEFMLCBTUEVDSUFMLAorICogRVhFTVBMQVJZ
LCBPUiBDT05TRVFVRU5USUFMIERBTUFHRVMgKElOQ0xVRElORywgQlVUIE5PVCBMSU1JVEVEIFRP
LAorICogUFJPQ1VSRU1FTlQgT0YgU1VCU1RJVFVURSBHT09EUyBPUiBTRVJWSUNFUzsgTE9TUyBP
RiBVU0UsIERBVEEsIE9SCisgKiBQUk9GSVRTOyBPUiBCVVNJTkVTUyBJTlRFUlJVUFRJT04pIEhP
V0VWRVIgQ0FVU0VEIEFORCBPTiBBTlkgVEhFT1JZCisgKiBPRiBMSUFCSUxJVFksIFdIRVRIRVIg
SU4gQ09OVFJBQ1QsIFNUUklDVCBMSUFCSUxJVFksIE9SIFRPUlQKKyAqIChJTkNMVURJTkcgTkVH
TElHRU5DRSBPUiBPVEhFUldJU0UpIEFSSVNJTkcgSU4gQU5ZIFdBWSBPVVQgT0YgVEhFIFVTRQor
ICogT0YgVEhJUyBTT0ZUV0FSRSwgRVZFTiBJRiBBRFZJU0VEIE9GIFRIRSBQT1NTSUJJTElUWSBP
RiBTVUNIIERBTUFHRS4KKyAqLworCitmdW5jdGlvbiBzZXRTdGF0ZVRvTWF4KGVudHJ5LCBuZXdT
dGF0ZSkKK3sKKyAgICAvLyBodHRwczovL3doYXR3Zy5naXRodWIuaW8vbG9hZGVyLyNzZXQtc3Rh
dGUtdG8tbWF4CisKKyAgICAidXNlIHN0cmljdCI7CisKKyAgICBpZiAoZW50cnkuc3RhdGUgPCBu
ZXdTdGF0ZSkKKyAgICAgICAgZW50cnkuc3RhdGUgPSBuZXdTdGF0ZTsKK30KKworZnVuY3Rpb24g
bmV3UmVnaXN0cnlFbnRyeShrZXkpCit7CisgICAgLy8gaHR0cHM6Ly93aGF0d2cuZ2l0aHViLmlv
L2xvYWRlci8jcmVnaXN0cnkKKyAgICAvLworICAgIC8vIEVhY2ggcmVnaXN0cnkgZW50cnkgYmVj
b21lcyBvbmUgb2YgdGhlIDUgc3RhdGVzLgorICAgIC8vIDEuIEZldGNoCisgICAgLy8gICAgIFJl
YWR5IHRvIGZldGNoIChvciBub3cgZmV0Y2hpbmcpIHRoZSByZXNvdXJjZSBvZiB0aGlzIG1vZHVs
ZS4KKyAgICAvLyAgICAgVHlwaWNhbGx5LCB3ZSBmZXRjaCB0aGUgc291cmNlIGNvZGUgb3ZlciB0
aGUgbmV0d29yayBvciBmcm9tIHRoZSBmaWxlIHN5c3RlbS4KKyAgICAvLyAgICAgYS4gSWYgdGhl
IHN0YXR1cyBpcyBGZXRjaCBhbmQgdGhlcmUgaXMgbm8gZW50cnkuZmV0Y2ggcHJvbWlzZSwgdGhl
IGVudHJ5IGlzIHJlYWR5IHRvIGZldGNoLgorICAgIC8vICAgICBiLiBJZiB0aGUgc3RhdHVzIGlz
IEZldGNoIGFuZCB0aGVyZSBpcyB0aGUgZW50cnkuZmV0Y2ggcHJvbWlzZSwgdGhlIGVudHJ5IGlz
IGp1c3QgZmV0Y2hpbmcgdGhlIHJlc291cmNlLgorICAgIC8vCisgICAgLy8gMi4gVHJhbnNsYXRl
CisgICAgLy8gICAgIFJlYWR5IHRvIHRyYW5zbGF0ZSAob3Igbm93IHRyYW5zbGF0aW5nKSB0aGUg
cmF3IGZldGNoZWQgcmVzb3VyY2UgdG8gdGhlIEVDTUFTY3JpcHQgc291cmNlIGNvZGUuCisgICAg
Ly8gICAgIFdlIGNhbiBpbnNlcnQgdGhlIGhvb2sgdGhhdCB0cmFuc2xhdGVzIHRoZSByZXNvdXJj
ZXMgZS5nLiB0cmFuc3BpbGVycy4KKyAgICAvLyAgICAgYS4gSWYgdGhlIHN0YXR1cyBpcyBUcmFu
c2xhdGUgYW5kIHRoZXJlIGlzIG5vIGVudHJ5LnRyYW5zbGF0ZSBwcm9taXNlLCB0aGUgZW50cnkg
aXMgcmVhZHkgdG8gdHJhbnNsYXRlLgorICAgIC8vICAgICBiLiBJZiB0aGUgc3RhdHVzIGlzIFRy
YW5zbGF0ZSBhbmQgdGhlcmUgaXMgdGhlIGVudHJ5LnRyYW5zbGF0ZSBwcm9taXNlLCB0aGUgZW50
cnkgaXMganVzdCB0cmFuc2xhdGluZworICAgIC8vICAgICAgICB0aGUgcGF5bG9hZCB0byB0aGUg
c291cmNlIGNvZGUuCisgICAgLy8KKyAgICAvLyAzLiBJbnN0YW50aWF0ZQorICAgIC8vICAgICBS
ZWFkeSB0byBpbnN0YW50aWF0ZSAob3Igbm93IGluc3RhbnRpYXRpbmcpIHRoZSBtb2R1bGUgcmVj
b3JkIGZyb20gdGhlIGZldGNoZWQgKGFuZCB0cmFuc2xhdGVkKQorICAgIC8vICAgICBzb3VyY2Ug
Y29kZS4KKyAgICAvLyAgICAgVHlwaWNhbGx5LCB3ZSBwYXJzZSB0aGUgbW9kdWxlIGNvZGUsIGV4
dHJhY3QgdGhlIGRlcGVuZGVuY2llcyBhbmQgYmluZGluZyBpbmZvcm1hdGlvbi4KKyAgICAvLyAg
ICAgYS4gSWYgdGhlIHN0YXR1cyBpcyBJbnN0YW50aWF0ZSBhbmQgdGhlcmUgaXMgbm8gZW50cnku
aW5zdGFudGlhdGUgcHJvbWlzZSwgdGhlIGVudHJ5IGlzIHJlYWR5IHRvIGluc3RhbnRpYXRlLgor
ICAgIC8vICAgICBiLiBJZiB0aGUgc3RhdHVzIGlzIEluc3RhbnRpYXRlIGFuZCB0aGVyZSBpcyB0
aGUgZW50cnkudHJhbnNsYXRlIHByb21pc2UsIHRoZSBlbnRyeSBpcyBqdXN0IGluc3RhbnRpYXRp
bmcKKyAgICAvLyAgICAgICAgdGhlIG1vZHVsZSByZWNvcmQuCisgICAgLy8KKyAgICAvLyA0LiBD
b2xsZWN0IChub3QgaW4gdGhlIGRyYWZ0KSBodHRwczovL2dpdGh1Yi5jb20vd2hhdHdnL2xvYWRl
ci9pc3N1ZXMvNjgKKyAgICAvLyAgICAgUmVhZHkgdG8gcmVxdWVzdCB0aGUgZGVwZW5kZW50IG1v
ZHVsZXMgKG9yIG5vdyByZXF1ZXN0aW5nICYgcmVzb2x2aW5nKS4KKyAgICAvLyAgICAgV2l0aG91
dCB0aGlzIHN0YXRlLCB0aGUgY3VycmVudCBkcmFmdCBjYXVzZXMgaW5maW5pdGUgcmVjdXJzaW9u
IHdoZW4gdGhlcmUgaXMgY2lyY3VsYXIgZGVwZW5kZW5jeS4KKyAgICAvLyAgICAgYS4gSWYgdGhl
IHN0YXR1cyBpcyBDb2xsZWN0IGFuZCB0aGVyZSBpcyBubyBlbnRyeS5jb2xsZWN0IHByb21pc2Us
IHRoZSBlbnRyeSBpcyByZWFkeSB0byBjb2xsZWN0LgorICAgIC8vICAgICBiLiBJZiB0aGUgc3Rh
dHVzIGlzIENvbGxlY3QgYW5kIHRoZXJlIGlzIHRoZSBlbnRyeS5jb2xsZWN0IHByb21pc2UsIHRo
ZSBlbnRyeSBpcyBqdXN0IGNvbGxlY3RpbmcKKyAgICAvLyAgICAgICAgdGhlIGRlcGVuZGVuY2ll
cy4KKyAgICAvLworICAgIC8vIDUuIExpbmsKKyAgICAvLyAgICAgUmVhZHkgdG8gbGluayB0aGUg
bW9kdWxlIHdpdGggdGhlIG90aGVyIG1vZHVsZXMuCisgICAgLy8gICAgIExpbmtpbmcgbWVhbnMg
dGhlIGltcG9ydGluZyBhbmQgZXhwb3J0aW5nIHRoZSBiaW5kaW5ncyB3aXRoIGVhY2ggb3RoZXIu
CisgICAgLy8KKyAgICAvLyA2LiBSZWFkeQorICAgIC8vICAgICBUaGUgbW9kdWxlIGlzIGxpbmtl
ZCwgc28gdGhlIG1vZHVsZSBpcyByZWFkeSB0byBiZSBleGVjdXRlZC4KKyAgICAvLworICAgIC8v
IEVhY2ggcmVnaXN0cnkgZW50cnkgaGFzIHRoZSA0IHByb21pc2VzOyAiZmV0Y2giLCAidHJhbnNs
YXRlIiwgImluc3RhbnRpYXRlIiBhbmQgImNvbGxlY3QiLgorICAgIC8vIFRoZXkgYXJlIGFzc2ln
bmVkIHdoZW4gc3RhcnRpbmcgdGhlIGVhY2ggcGhhc2UuIEFuZCB0aGV5IGFyZSBmdWxmaWxsZWQg
d2hlbiB0aGUgZWFjaCBwaGFzZSBpcyBjb21wbGV0ZWQuCisgICAgLy8KKyAgICAvLyBJbiB0aGUg
Y3VycmVudCBtb2R1bGUgZHJhZnQsIGxpbmtpbmcgd2lsbCBiZSBwZXJmb3JtZWQgYWZ0ZXIgdGhl
IHdob2xlIG1vZHVsZXMgYXJlIGluc3RhbnRpYXRlZCBhbmQgY29sbGVjdGVkLgorICAgIC8vIEFu
ZCBleGVjdXRpb24gaXMgYWxzbyBkb25lIGFmdGVyIHRoZSBhbGwgbW9kdWxlcyBhcmUgbGlua2Vk
LgorICAgIC8vCisgICAgLy8gVE9ETzogV2UgbmVlZCB0byBleHBsb2l0IHRoZSB3YXkgdG8gZXhl
Y3V0ZSB0aGUgbW9kdWxlIHdoaWxlIGZldGNoaW5nIG5vbi1yZWxhdGVkIG1vZHVsZXMuCisgICAg
Ly8gT25lIHNvbHV0aW9uOyBpbnRyb2R1Y2luZyB0aGUgcmVhZHkgcHJvbWlzZSBjaGFpbiB0byBl
eGVjdXRlIHRoZSBtb2R1bGVzIGNvbmN1cnJlbnRseSB3aGlsZSBrZWVwaW5nCisgICAgLy8gdGhl
IGV4ZWN1dGlvbiBvcmRlci4KKworICAgICJ1c2Ugc3RyaWN0IjsKKworICAgIHJldHVybiB7Cisg
ICAgICAgIGtleToga2V5LAorICAgICAgICBzdGF0ZTogdGhpcy5GZXRjaCwKKyAgICAgICAgbWV0
YWRhdGE6IHVuZGVmaW5lZCwKKyAgICAgICAgZmV0Y2g6IHVuZGVmaW5lZCwKKyAgICAgICAgdHJh
bnNsYXRlOiB1bmRlZmluZWQsCisgICAgICAgIGluc3RhbnRpYXRlOiB1bmRlZmluZWQsCisgICAg
ICAgIGNvbGxlY3Q6IHVuZGVmaW5lZCwKKyAgICAgICAgZGVwZW5kZW5jaWVzOiBbXSwgLy8gVG8g
a2VlcCB0aGUgbW9kdWxlIG9yZGVyLCB3ZSBzdG9yZSB0aGUgbW9kdWxlIGtleXMgaW4gdGhlIGFy
cmF5LgorICAgICAgICBkZXBlbmRlbmNpZXNNYXA6IHVuZGVmaW5lZCwKKyAgICAgICAgbW9kdWxl
OiB1bmRlZmluZWQsCisgICAgICAgIGVycm9yOiB1bmRlZmluZWQsCisgICAgfTsKK30KKworZnVu
Y3Rpb24gZW5zdXJlUmVnaXN0ZXJlZChrZXkpCit7CisgICAgLy8gaHR0cHM6Ly93aGF0d2cuZ2l0
aHViLmlvL2xvYWRlci8jZW5zdXJlLXJlZ2lzdGVyZWQKKworICAgICJ1c2Ugc3RyaWN0IjsKKwor
ICAgIHZhciBlbnRyeSA9IHRoaXMucmVnaXN0cnkuQGdldChrZXkpOworICAgIGlmIChlbnRyeSkK
KyAgICAgICAgcmV0dXJuIGVudHJ5OworCisgICAgZW50cnkgPSB0aGlzLm5ld1JlZ2lzdHJ5RW50
cnkoa2V5KTsKKyAgICB0aGlzLnJlZ2lzdHJ5LkBzZXQoa2V5LCBlbnRyeSk7CisKKyAgICByZXR1
cm4gZW50cnk7Cit9CisKK2Z1bmN0aW9uIGZvcmNlRnVsZmlsbFByb21pc2UocHJvbWlzZSwgdmFs
dWUpCit7CisgICAgInVzZSBzdHJpY3QiOworCisgICAgaWYgKHByb21pc2UuQHByb21pc2VTdGF0
ZSA9PT0gQHByb21pc2VQZW5kaW5nKQorICAgICAgICBAZnVsZmlsbFByb21pc2UocHJvbWlzZSwg
dmFsdWUpOworfQorCitmdW5jdGlvbiBmdWxmaWxsRmV0Y2goZW50cnksIHBheWxvYWQpCit7Cisg
ICAgLy8gaHR0cHM6Ly93aGF0d2cuZ2l0aHViLmlvL2xvYWRlci8jZnVsZmlsbC1mZXRjaAorCisg
ICAgInVzZSBzdHJpY3QiOworCisgICAgaWYgKCFlbnRyeS5mZXRjaCkKKyAgICAgICAgZW50cnku
ZmV0Y2ggPSBAbmV3UHJvbWlzZURlZmVycmVkKCkuQHByb21pc2U7CisgICAgdGhpcy5mb3JjZUZ1
bGZpbGxQcm9taXNlKGVudHJ5LmZldGNoLCBwYXlsb2FkKTsKKyAgICB0aGlzLnNldFN0YXRlVG9N
YXgoZW50cnksIHRoaXMuVHJhbnNsYXRlKTsKK30KKworZnVuY3Rpb24gZnVsZmlsbFRyYW5zbGF0
ZShlbnRyeSwgc291cmNlKQoreworICAgIC8vIGh0dHBzOi8vd2hhdHdnLmdpdGh1Yi5pby9sb2Fk
ZXIvI2Z1bGZpbGwtdHJhbnNsYXRlCisKKyAgICAidXNlIHN0cmljdCI7CisKKyAgICBpZiAoIWVu
dHJ5LnRyYW5zbGF0ZSkKKyAgICAgICAgZW50cnkudHJhbnNsYXRlID0gQG5ld1Byb21pc2VEZWZl
cnJlZCgpLkBwcm9taXNlOworICAgIHRoaXMuZm9yY2VGdWxmaWxsUHJvbWlzZShlbnRyeS50cmFu
c2xhdGUsIHNvdXJjZSk7CisgICAgdGhpcy5zZXRTdGF0ZVRvTWF4KGVudHJ5LCB0aGlzLkluc3Rh
bnRpYXRlKTsKK30KKworZnVuY3Rpb24gZnVsZmlsbEluc3RhbnRpYXRlKGVudHJ5LCBvcHRpb25h
bEluc3RhbmNlLCBzb3VyY2UpCit7CisgICAgLy8gaHR0cHM6Ly93aGF0d2cuZ2l0aHViLmlvL2xv
YWRlci8jZnVsZmlsbC1pbnN0YW50aWF0ZQorCisgICAgInVzZSBzdHJpY3QiOworCisgICAgaWYg
KCFlbnRyeS5pbnN0YW50aWF0ZSkKKyAgICAgICAgZW50cnkuaW5zdGFudGlhdGUgPSBAbmV3UHJv
bWlzZURlZmVycmVkKCkuQHByb21pc2U7CisgICAgdGhpcy5jb21taXRJbnN0YW50aWF0ZWQoZW50
cnksIG9wdGlvbmFsSW5zdGFuY2UsIHNvdXJjZSk7CisKKyAgICAvLyBGSVhNRTogVGhlIGRyYWZ0
IGZ1bGZpbGxzIHRoZSBwcm9taXNlIGluIHRoZSBDb21taXRJbnN0YW50aWF0ZWQgb3BlcmF0aW9u
LgorICAgIC8vIEJ1dCBpdCBDb21taXRJbnN0YW50aWF0ZWQgaXMgYWxzbyB1c2VkIGluIHRoZSBy
ZXF1ZXN0SW5zdGFudGlhdGUgYW5kCisgICAgLy8gd2Ugc2hvdWxkIG5vdCAiZm9yY2UgZnVsZmls
bCIgdGhlcmUuCisgICAgLy8gU28gd2Ugc2VwYXJhdGUgImZvcmNlIGZ1bGZpbGwiIG9wZXJhdGlv
biBmcm9tIHRoZSBDb21taXRJbnN0YW50aWF0ZWQgb3BlcmF0aW9uLgorICAgIC8vIGh0dHBzOi8v
Z2l0aHViLmNvbS93aGF0d2cvbG9hZGVyL3B1bGwvNjcKKyAgICB0aGlzLmZvcmNlRnVsZmlsbFBy
b21pc2UoZW50cnkuaW5zdGFudGlhdGUsIGVudHJ5KTsKK30KKworZnVuY3Rpb24gY29tbWl0SW5z
dGFudGlhdGVkKGVudHJ5LCBvcHRpb25hbEluc3RhbmNlLCBzb3VyY2UpCit7CisgICAgLy8gaHR0
cHM6Ly93aGF0d2cuZ2l0aHViLmlvL2xvYWRlci8jY29tbWl0LWluc3RhbnRpYXRlZAorCisgICAg
InVzZSBzdHJpY3QiOworCisgICAgdmFyIGluc3RhbmNlID0gdGhpcy5pbnN0YW50aWF0aW9uKG9w
dGlvbmFsSW5zdGFuY2UsIHNvdXJjZSk7CisKKyAgICAvLyBGSVhNRTogRGVzY3JpYmVkIGluIHRo
ZSBkcmFmdCwKKyAgICAvLyAgIDQuIEZ1bGZpbGwgZW50cnkuW1tJbnN0YW50aWF0ZV1dIHdpdGgg
aW5zdGFuY2UuCisgICAgLy8gQnV0LCBpbnN0YW50aWF0ZSBwcm9taXNlIHNob3VsZCBiZSBmdWxm
aWxsZWQgd2l0aCB0aGUgZW50cnkuCisgICAgLy8gV2UgcmVtb3ZlIHRoaXMgc3RhdGVtZW50IGJl
Y2F1c2UgaW5zdGFudGlhdGUgcHJvbWlzZSB3aWxsIGJlCisgICAgLy8gZnVsZmlsbGVkIHdpdGhv
dXQgdGhpcyAiZm9yY2UgZnVsZmlsbCIgb3BlcmF0aW9uLgorICAgIC8vIGh0dHBzOi8vZ2l0aHVi
LmNvbS93aGF0d2cvbG9hZGVyL3B1bGwvNjcKKworICAgIHZhciBkZXBzID0gW107CisgICAgdmFy
IGRlcHNNYXAgPSBuZXcgQE1hcCgpOworICAgIGluc3RhbmNlLnJlZ2lzdHJ5RW50cnkgPSBlbnRy
eTsKKyAgICB2YXIgcmVxdWVzdGVkTW9kdWxlcyA9IHRoaXMucmVxdWVzdGVkTW9kdWxlcyhpbnN0
YW5jZSk7CisgICAgZm9yICh2YXIgaSA9IDAsIGxlbmd0aCA9IHJlcXVlc3RlZE1vZHVsZXMubGVu
Z3RoOyBpIDwgbGVuZ3RoOyArK2kpIHsKKyAgICAgICAgdmFyIGRlcEtleSA9IHJlcXVlc3RlZE1v
ZHVsZXNbaV07CisgICAgICAgIHZhciBwYWlyID0geworICAgICAgICAgICAga2V5OiBkZXBLZXks
CisgICAgICAgICAgICB2YWx1ZTogdW5kZWZpbmVkCisgICAgICAgIH07CisgICAgICAgIEBwdXRC
eVZhbERpcmVjdChkZXBzLCBpLCBwYWlyKTsKKyAgICAgICAgZGVwc01hcC5Ac2V0KGRlcEtleSwg
cGFpcik7CisgICAgfQorICAgIGVudHJ5LmRlcGVuZGVuY2llcyA9IGRlcHM7CisgICAgZW50cnku
ZGVwZW5kZW5jaWVzTWFwID0gZGVwc01hcDsKKyAgICBlbnRyeS5tb2R1bGUgPSBpbnN0YW5jZTsK
KyAgICB0aGlzLnNldFN0YXRlVG9NYXgoZW50cnksIHRoaXMuQ29sbGVjdCk7Cit9CisKK2Z1bmN0
aW9uIGluc3RhbnRpYXRpb24ocmVzdWx0LCBzb3VyY2UpCit7CisgICAgLy8gaHR0cHM6Ly93aGF0
d2cuZ2l0aHViLmlvL2xvYWRlci8jaW5zdGFudGlhdGlvbgorICAgIC8vIEZJWE1FOiBDdXJyZW50
IGltcGxlbWVudGF0aW9uIGRvZXMgbm90IHN1cHBvcnQgb3B0aW9uYWxJbnN0YW5jZS4KKworICAg
ICJ1c2Ugc3RyaWN0IjsKKworICAgIHJldHVybiB0aGlzLnBhcnNlTW9kdWxlKHNvdXJjZSk7Cit9
CisKKy8vIExvYWRlci4KKworZnVuY3Rpb24gcmVxdWVzdEZldGNoKGtleSkKK3sKKyAgICAvLyBo
dHRwczovL3doYXR3Zy5naXRodWIuaW8vbG9hZGVyLyNyZXF1ZXN0LWZldGNoCisKKyAgICAidXNl
IHN0cmljdCI7CisKKyAgICB2YXIgZW50cnkgPSB0aGlzLmVuc3VyZVJlZ2lzdGVyZWQoa2V5KTsK
KyAgICBpZiAoZW50cnkuc3RhdGUgPiB0aGlzLkxpbmspIHsKKyAgICAgICAgdmFyIGRlZmVycmVk
ID0gQG5ld1Byb21pc2VEZWZlcnJlZCgpOworICAgICAgICBkZWZlcnJlZC5AcmVqZWN0LkBjYWxs
KHVuZGVmaW5lZCwgbmV3IEBUeXBlRXJyb3IoIlJlcXVlc3RlZCBtb2R1bGUgaXMgYWxyZWFkeSBy
ZWFkeSB0byBiZSBleGVjdXRlZC4iKSk7CisgICAgICAgIHJldHVybiBkZWZlcnJlZC5AcHJvbWlz
ZTsKKyAgICB9CisKKyAgICBpZiAoZW50cnkuZmV0Y2gpCisgICAgICAgIHJldHVybiBlbnRyeS5m
ZXRjaDsKKworICAgIHZhciBsb2FkZXIgPSB0aGlzOworICAgIHZhciBmZXRjaFByb21pc2UgPSB0
aGlzLmZldGNoKGtleSkuQHRoZW4oZnVuY3Rpb24gKHBheWxvYWQpIHsKKyAgICAgICAgbG9hZGVy
LnNldFN0YXRlVG9NYXgoZW50cnksIGxvYWRlci5UcmFuc2xhdGUpOworICAgICAgICByZXR1cm4g
cGF5bG9hZDsKKyAgICB9KTsKKyAgICBlbnRyeS5mZXRjaCA9IGZldGNoUHJvbWlzZTsKKyAgICBy
ZXR1cm4gZmV0Y2hQcm9taXNlOworfQorCitmdW5jdGlvbiByZXF1ZXN0VHJhbnNsYXRlKGtleSkK
K3sKKyAgICAvLyBodHRwczovL3doYXR3Zy5naXRodWIuaW8vbG9hZGVyLyNyZXF1ZXN0LXRyYW5z
bGF0ZQorCisgICAgInVzZSBzdHJpY3QiOworCisgICAgdmFyIGVudHJ5ID0gdGhpcy5lbnN1cmVS
ZWdpc3RlcmVkKGtleSk7CisgICAgaWYgKGVudHJ5LnN0YXRlID4gdGhpcy5MaW5rKSB7CisgICAg
ICAgIHZhciBkZWZlcnJlZCA9IEBuZXdQcm9taXNlRGVmZXJyZWQoKTsKKyAgICAgICAgZGVmZXJy
ZWQuQHJlamVjdC5AY2FsbCh1bmRlZmluZWQsIG5ldyBAVHlwZUVycm9yKCJSZXF1ZXN0ZWQgbW9k
dWxlIGlzIGFscmVhZHkgcmVhZHkgdG8gYmUgZXhlY3V0ZWQuIikpOworICAgICAgICByZXR1cm4g
ZGVmZXJyZWQuQHByb21pc2U7CisgICAgfQorCisgICAgaWYgKGVudHJ5LnRyYW5zbGF0ZSkKKyAg
ICAgICAgcmV0dXJuIGVudHJ5LnRyYW5zbGF0ZTsKKworICAgIHZhciBsb2FkZXIgPSB0aGlzOwor
ICAgIHZhciB0cmFuc2xhdGVQcm9taXNlID0gdGhpcy5yZXF1ZXN0RmV0Y2goa2V5KS5AdGhlbihm
dW5jdGlvbiAocGF5bG9hZCkgeworICAgICAgICByZXR1cm4gbG9hZGVyLnRyYW5zbGF0ZShrZXks
IHBheWxvYWQpLkB0aGVuKGZ1bmN0aW9uIChzb3VyY2UpIHsKKyAgICAgICAgICAgIGxvYWRlci5z
ZXRTdGF0ZVRvTWF4KGVudHJ5LCBsb2FkZXIuSW5zdGFudGlhdGUpOworICAgICAgICAgICAgcmV0
dXJuIHNvdXJjZTsKKyAgICAgICAgfSk7CisgICAgfSk7CisgICAgZW50cnkudHJhbnNsYXRlID0g
dHJhbnNsYXRlUHJvbWlzZTsKKyAgICByZXR1cm4gdHJhbnNsYXRlUHJvbWlzZTsKK30KKworZnVu
Y3Rpb24gcmVxdWVzdEluc3RhbnRpYXRlKGtleSkKK3sKKyAgICAvLyBodHRwczovL3doYXR3Zy5n
aXRodWIuaW8vbG9hZGVyLyNyZXF1ZXN0LWluc3RhbnRpYXRlCisKKyAgICAidXNlIHN0cmljdCI7
CisKKyAgICB2YXIgZW50cnkgPSB0aGlzLmVuc3VyZVJlZ2lzdGVyZWQoa2V5KTsKKyAgICBpZiAo
ZW50cnkuc3RhdGUgPiB0aGlzLkxpbmspIHsKKyAgICAgICAgdmFyIGRlZmVycmVkID0gQG5ld1By
b21pc2VEZWZlcnJlZCgpOworICAgICAgICBkZWZlcnJlZC5AcmVqZWN0LkBjYWxsKHVuZGVmaW5l
ZCwgbmV3IEBUeXBlRXJyb3IoIlJlcXVlc3RlZCBtb2R1bGUgaXMgYWxyZWFkeSByZWFkeSB0byBi
ZSBleGVjdXRlZC4iKSk7CisgICAgICAgIHJldHVybiBkZWZlcnJlZC5AcHJvbWlzZTsKKyAgICB9
CisKKyAgICBpZiAoZW50cnkuaW5zdGFudGlhdGUpCisgICAgICAgIHJldHVybiBlbnRyeS5pbnN0
YW50aWF0ZTsKKworICAgIHZhciBsb2FkZXIgPSB0aGlzOworICAgIHZhciBpbnN0YW50aWF0ZVBy
b21pc2UgPSB0aGlzLnJlcXVlc3RUcmFuc2xhdGUoa2V5KS5AdGhlbihmdW5jdGlvbiAoc291cmNl
KSB7CisgICAgICAgIHJldHVybiBsb2FkZXIuaW5zdGFudGlhdGUoa2V5LCBzb3VyY2UpLkB0aGVu
KGZ1bmN0aW9uIChvcHRpb25hbEluc3RhbmNlKSB7CisgICAgICAgICAgICBsb2FkZXIuY29tbWl0
SW5zdGFudGlhdGVkKGVudHJ5LCBvcHRpb25hbEluc3RhbmNlLCBzb3VyY2UpOworICAgICAgICAg
ICAgcmV0dXJuIGVudHJ5OworICAgICAgICB9KTsKKyAgICB9KTsKKyAgICBlbnRyeS5pbnN0YW50
aWF0ZSA9IGluc3RhbnRpYXRlUHJvbWlzZTsKKyAgICByZXR1cm4gaW5zdGFudGlhdGVQcm9taXNl
OworfQorCitmdW5jdGlvbiByZXF1ZXN0Q29sbGVjdChrZXkpCit7CisgICAgLy8gRklYTUU6IElu
IHRoZSBzcGVjLCBhZnRlciByZXF1ZXN0aW5nIGluc3RhbnRpYXRpb24sIHdlIHdpbGwgcmVzb2x2
ZQorICAgIC8vIHRoZSBkZXBlbmRlbmNpZXMgd2l0aG91dCBhbnkgc3RhdHVzIGNoYW5nZS4gQXMg
YSByZXN1bHQsIHdoZW4gdGhlcmUKKyAgICAvLyBpcyBjaXJjdWxhciBkZXBlbmRlbmNpZXMsIGlu
c3RhbnRpYXRpb24gaXMgZG9uZSBvbmx5IG9uY2UsIGJ1dAorICAgIC8vIHJlcGVhdGVkbHkgcmVz
b2x2aW5nIHRoZSBkZXBlbmRlbmNpZXMuIFRoaXMgbWVhbnMgdGhhdCBpbmZpbml0ZQorICAgIC8v
IHJlY3Vyc2lvbiBvY2N1ciB3aGVuIHRoZSBnaXZlbiBtb2R1bGVzIGhhdmUgY2lyY3VsYXIgZGVw
ZW5kZW5jeS4gVG8KKyAgICAvLyBhdm9pZCB0aGlzIHNpdHVhdGlvbiwgd2UgaW50cm9kdWNlIG5l
dyBzdGF0ZSwgIkNvbGxlY3QiLiBUaGlzIG1lYW5zCisgICAgLy8gIk5vdyB0aGUgbW9kdWxlIGlz
IGluc3RhbnRpYXRlZCwgc28gcmVhZHkgdG8gY29sbGVjdCB0aGUgZGVwZW5kZW5jaWVzCisgICAg
Ly8gb3Igbm93IHJlc29sdmluZyB0aGVtIi4KKyAgICAvLyBodHRwczovL2dpdGh1Yi5jb20vd2hh
dHdnL2xvYWRlci9pc3N1ZXMvNjgKKworICAgICJ1c2Ugc3RyaWN0IjsKKworICAgIHZhciBlbnRy
eSA9IHRoaXMuZW5zdXJlUmVnaXN0ZXJlZChrZXkpOworICAgIGlmIChlbnRyeS5zdGF0ZSA+IHRo
aXMuTGluaykgeworICAgICAgICB2YXIgZGVmZXJyZWQgPSBAbmV3UHJvbWlzZURlZmVycmVkKCk7
CisgICAgICAgIGRlZmVycmVkLkByZWplY3QuQGNhbGwodW5kZWZpbmVkLCBuZXcgQFR5cGVFcnJv
cigiUmVxdWVzdGVkIG1vZHVsZSBpcyBhbHJlYWR5IHJlYWR5IHRvIGJlIGV4ZWN1dGVkLiIpKTsK
KyAgICAgICAgcmV0dXJuIGRlZmVycmVkLkBwcm9taXNlOworICAgIH0KKworICAgIGlmIChlbnRy
eS5jb2xsZWN0KQorICAgICAgICByZXR1cm4gZW50cnkuY29sbGVjdDsKKworICAgIHZhciBsb2Fk
ZXIgPSB0aGlzOworICAgIHZhciBjb2xsZWN0UHJvbWlzZSA9IHRoaXMucmVxdWVzdEluc3RhbnRp
YXRlKGtleSkuQHRoZW4oZnVuY3Rpb24gKGVudHJ5KSB7CisgICAgICAgIHZhciBkZXBMb2FkcyA9
IFtdOworICAgICAgICBmb3IgKHZhciBpID0gMCwgbGVuZ3RoID0gZW50cnkuZGVwZW5kZW5jaWVz
Lmxlbmd0aDsgaSA8IGxlbmd0aDsgKytpKSB7CisgICAgICAgICAgICB2YXIgcGFpciA9IGVudHJ5
LmRlcGVuZGVuY2llc1tpXTsKKyAgICAgICAgICAgIHZhciBwcm9taXNlID0gbG9hZGVyLnJlc29s
dmUocGFpci5rZXksIGtleSkuQHRoZW4oZnVuY3Rpb24gKGRlcEtleSkgeworICAgICAgICAgICAg
ICAgIHZhciBkZXBFbnRyeSA9IGxvYWRlci5lbnN1cmVSZWdpc3RlcmVkKGRlcEtleSk7CisKKyAg
ICAgICAgICAgICAgICAvLyBSZWN1cnNpdmUgY29sbGVjdGluZy4gVGhpcyBlbnRyeSBpcyBiZWlu
ZyBjb2xsZWN0ZWQgb3IgYWxyZWFkeSBjb2xsZWN0ZWQuCisgICAgICAgICAgICAgICAgLy8gU3Rv
cCB0cmFjaW5nIHRoZSBjaXJjdWxhciBkZXBlbmRlbmNpZXMuCisgICAgICAgICAgICAgICAgaWYg
KGRlcEVudHJ5LmNvbGxlY3QpIHsKKyAgICAgICAgICAgICAgICAgICAgcGFpci52YWx1ZSA9IGRl
cEVudHJ5Lm1vZHVsZTsKKyAgICAgICAgICAgICAgICAgICAgcmV0dXJuIGRlcEVudHJ5OworICAg
ICAgICAgICAgICAgIH0KKworICAgICAgICAgICAgICAgIHJldHVybiBsb2FkZXIucmVxdWVzdENv
bGxlY3QoZGVwS2V5KS5AdGhlbihmdW5jdGlvbiAoZW50cnkpIHsKKyAgICAgICAgICAgICAgICAg
ICAgLy8gRklYTUU6IFRoZSByZXN1bHQgcHJvbWlzZSBvZiB0aGUgcmVxdWVzdEluc3RhbnRpYXRl
QWxsIHNob3VsZCBiZSBmdWxmaWxsZWQgd2l0aAorICAgICAgICAgICAgICAgICAgICAvLyB0aGUg
cmVnaXN0cnkgZW50cnkuCisgICAgICAgICAgICAgICAgICAgIC8vIGh0dHBzOi8vZ2l0aHViLmNv
bS93aGF0d2cvbG9hZGVyL3B1bGwvNjYKKyAgICAgICAgICAgICAgICAgICAgcGFpci52YWx1ZSA9
IGVudHJ5Lm1vZHVsZTsKKyAgICAgICAgICAgICAgICAgICAgcmV0dXJuIGVudHJ5OworICAgICAg
ICAgICAgICAgIH0pOworICAgICAgICAgICAgfSk7CisgICAgICAgICAgICBAcHV0QnlWYWxEaXJl
Y3QoZGVwTG9hZHMsIGksIHByb21pc2UpOworICAgICAgICB9CisKKyAgICAgICAgcmV0dXJuIEBQ
cm9taXNlLkBhbGwoZGVwTG9hZHMpLkB0aGVuKGZ1bmN0aW9uIChtb2R1bGVzKSB7CisgICAgICAg
ICAgICBsb2FkZXIuc2V0U3RhdGVUb01heChlbnRyeSwgbG9hZGVyLkxpbmspOworICAgICAgICAg
ICAgcmV0dXJuIGVudHJ5OworICAgICAgICB9KTsKKyAgICB9KTsKKworICAgIGVudHJ5LmNvbGxl
Y3QgPSBjb2xsZWN0UHJvbWlzZTsKKyAgICByZXR1cm4gY29sbGVjdFByb21pc2U7Cit9CisKK2Z1
bmN0aW9uIHJlcXVlc3RJbnN0YW50aWF0ZUFsbChrZXkpCit7CisgICAgLy8gaHR0cHM6Ly93aGF0
d2cuZ2l0aHViLmlvL2xvYWRlci8jcmVxdWVzdC1pbnN0YW50aWF0ZS1hbGwKKworICAgICJ1c2Ug
c3RyaWN0IjsKKworICAgIHJldHVybiB0aGlzLnJlcXVlc3RDb2xsZWN0KGtleSk7Cit9CisKK2Z1
bmN0aW9uIHByb3ZpZGUoa2V5LCBzdGFnZSwgdmFsdWUpCit7CisgICAgInVzZSBzdHJpY3QiOwor
CisgICAgdmFyIGVudHJ5ID0gdGhpcy5lbnN1cmVSZWdpc3RlcmVkKGtleSk7CisKKyAgICBpZiAo
c3RhZ2UgPT09IHRoaXMuRmV0Y2gpIHsKKyAgICAgICAgaWYgKGVudHJ5LnN0YXR1cyA+IHRoaXMu
RmV0Y2gpCisgICAgICAgICAgICB0aHJvdyBuZXcgQFR5cGVFcnJvcigiUmVxdWVzdGVkIG1vZHVs
ZSBpcyBhbHJlYWR5IGZldGNoZWQuIik7CisgICAgICAgIHRoaXMuZnVsZmlsbEZldGNoKGVudHJ5
LCB2YWx1ZSk7CisgICAgICAgIHJldHVybjsKKyAgICB9CisKKyAgICBpZiAoc3RhZ2UgPT09IHRo
aXMuVHJhbnNsYXRlKSB7CisgICAgICAgIGlmIChlbnRyeS5zdGF0dXMgPiB0aGlzLlRyYW5zbGF0
ZSkKKyAgICAgICAgICAgIHRocm93IG5ldyBAVHlwZUVycm9yKCJSZXF1ZXN0ZWQgbW9kdWxlIGlz
IGFscmVhZHkgdHJhbnNsYXRlZC4iKTsKKyAgICAgICAgdGhpcy5mdWxmaWxsRmV0Y2goZW50cnks
IHVuZGVmaW5lZCk7CisgICAgICAgIHRoaXMuZnVsZmlsbFRyYW5zbGF0ZShlbnRyeSwgdmFsdWUp
OworICAgICAgICByZXR1cm47CisgICAgfQorCisgICAgaWYgKHN0YWdlID09PSB0aGlzLkluc3Rh
bnRpYXRlKSB7CisgICAgICAgIGlmIChlbnRyeS5zdGF0dXMgPiB0aGlzLkluc3RhbnRpYXRlKQor
ICAgICAgICAgICAgdGhyb3cgbmV3IEBUeXBlRXJyb3IoIlJlcXVlc3RlZCBtb2R1bGUgaXMgYWxy
ZWFkeSBpbnN0YW50aWF0ZWQuIik7CisgICAgICAgIHRoaXMuZnVsZmlsbEZldGNoKGVudHJ5LCB1
bmRlZmluZWQpOworICAgICAgICB0aGlzLmZ1bGZpbGxUcmFuc2xhdGUoZW50cnksIHZhbHVlKTsK
KyAgICAgICAgdmFyIGxvYWRlciA9IHRoaXM7CisgICAgICAgIGVudHJ5LnRyYW5zbGF0ZS5AdGhl
bihmdW5jdGlvbiAoc291cmNlKSB7CisgICAgICAgICAgICBsb2FkZXIuZnVsZmlsbEluc3RhbnRp
YXRlKGVudHJ5LCB2YWx1ZSwgc291cmNlKTsKKyAgICAgICAgfSk7CisgICAgICAgIHJldHVybjsK
KyAgICB9CisKKyAgICB0aHJvdyBuZXcgQFR5cGVFcnJvcigiUmVxdWVzdGVkIG1vZHVsZSBpcyBh
bHJlYWR5IHJlYWR5IHRvIGJlIGV4ZWN1dGVkLiIpOworfQpkaWZmIC0tZ2l0IGEvU291cmNlL0ph
dmFTY3JpcHRDb3JlL2J1aWx0aW5zL09wZXJhdGlvbnMuUHJvbWlzZS5qcyBiL1NvdXJjZS9KYXZh
U2NyaXB0Q29yZS9idWlsdGlucy9PcGVyYXRpb25zLlByb21pc2UuanMKaW5kZXggNjZmOWMyNTE1
MzU5YzdhNTEyNTRmOTM3ZmM3ZjUxY2NkMTMxMjQxZC4uZDBkNDFkNGZiMmI5ZWM3Zjc4ZDFkNjM3
YTE4YTFkYWFjYmFmYmIzOSAxMDA2NDQKLS0tIGEvU291cmNlL0phdmFTY3JpcHRDb3JlL2J1aWx0
aW5zL09wZXJhdGlvbnMuUHJvbWlzZS5qcworKysgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvYnVp
bHRpbnMvT3BlcmF0aW9ucy5Qcm9taXNlLmpzCkBAIC0yMTgsMyArMjE4LDI5IEBAIGZ1bmN0aW9u
IGluaXRpYWxpemVQcm9taXNlKGV4ZWN1dG9yKQogCiAgICAgcmV0dXJuIHRoaXM7CiB9CisKK2Z1
bmN0aW9uIHByb21pc2VUaGVuKHByb21pc2UsIGNhcGFiaWxpdHksIG9uRnVsZmlsbGVkLCBvblJl
amVjdGVkKQoreworICAgICJ1c2Ugc3RyaWN0IjsKKworICAgIGlmICh0eXBlb2Ygb25GdWxmaWxs
ZWQgIT09ICJmdW5jdGlvbiIpCisgICAgICAgIG9uRnVsZmlsbGVkID0gZnVuY3Rpb24gKGFyZ3Vt
ZW50KSB7IHJldHVybiBhcmd1bWVudDsgfTsKKworICAgIGlmICh0eXBlb2Ygb25SZWplY3RlZCAh
PT0gImZ1bmN0aW9uIikKKyAgICAgICAgb25SZWplY3RlZCA9IGZ1bmN0aW9uIChhcmd1bWVudCkg
eyB0aHJvdyBhcmd1bWVudDsgfTsKKworICAgIHZhciBmdWxmaWxsUmVhY3Rpb24gPSBAbmV3UHJv
bWlzZVJlYWN0aW9uKGNhcGFiaWxpdHksIG9uRnVsZmlsbGVkKTsKKyAgICB2YXIgcmVqZWN0UmVh
Y3Rpb24gPSBAbmV3UHJvbWlzZVJlYWN0aW9uKGNhcGFiaWxpdHksIG9uUmVqZWN0ZWQpOworCisg
ICAgdmFyIHN0YXRlID0gcHJvbWlzZS5AcHJvbWlzZVN0YXRlOworCisgICAgaWYgKHN0YXRlID09
PSBAcHJvbWlzZVBlbmRpbmcpIHsKKyAgICAgICAgQHB1dEJ5VmFsRGlyZWN0KHByb21pc2UuQHBy
b21pc2VGdWxmaWxsUmVhY3Rpb25zLCBwcm9taXNlLkBwcm9taXNlRnVsZmlsbFJlYWN0aW9ucy5s
ZW5ndGgsIGZ1bGZpbGxSZWFjdGlvbikKKyAgICAgICAgQHB1dEJ5VmFsRGlyZWN0KHByb21pc2Uu
QHByb21pc2VSZWplY3RSZWFjdGlvbnMsIHByb21pc2UuQHByb21pc2VSZWplY3RSZWFjdGlvbnMu
bGVuZ3RoLCByZWplY3RSZWFjdGlvbikKKyAgICB9IGVsc2UgaWYgKHN0YXRlID09PSBAcHJvbWlz
ZUZ1bGZpbGxlZCkKKyAgICAgICAgQGVucXVldWVKb2IoQHByb21pc2VSZWFjdGlvbkpvYiwgW2Z1
bGZpbGxSZWFjdGlvbiwgcHJvbWlzZS5AcHJvbWlzZVJlc3VsdF0pOworICAgIGVsc2UgaWYgKHN0
YXRlID09PSBAcHJvbWlzZVJlamVjdGVkKQorICAgICAgICBAZW5xdWV1ZUpvYihAcHJvbWlzZVJl
YWN0aW9uSm9iLCBbcmVqZWN0UmVhY3Rpb24sIHByb21pc2UuQHByb21pc2VSZXN1bHRdKTsKKwor
ICAgIHJldHVybiBjYXBhYmlsaXR5LkBwcm9taXNlOworfQpkaWZmIC0tZ2l0IGEvU291cmNlL0ph
dmFTY3JpcHRDb3JlL2J1aWx0aW5zL1Byb21pc2UucHJvdG90eXBlLmpzIGIvU291cmNlL0phdmFT
Y3JpcHRDb3JlL2J1aWx0aW5zL1Byb21pc2UucHJvdG90eXBlLmpzCmluZGV4IDg1NjNkZjBkOTI3
ZmIyMzM5Njg5MzllMTQ5NDIzOTZlYzg1ZTY1YWEuLmJhMDIyYWJhNWEwZDU4ZDg1ZWZlZTA3OWIz
OWFjYmIxMTM2MmJmOGQgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9idWlsdGlu
cy9Qcm9taXNlLnByb3RvdHlwZS5qcworKysgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvYnVpbHRp
bnMvUHJvbWlzZS5wcm90b3R5cGUuanMKQEAgLTQxLDI2ICs0MSwxOSBAQCBmdW5jdGlvbiB0aGVu
KG9uRnVsZmlsbGVkLCBvblJlamVjdGVkKQogICAgIC8vIGh0dHBzOi8vYnVncy53ZWJraXQub3Jn
L3Nob3dfYnVnLmNnaT9pZD0xNDY2MjQKICAgICB2YXIgY29uc3RydWN0b3IgPSB0aGlzLmNvbnN0
cnVjdG9yOwogCi0gICAgdmFyIHJlc3VsdENhcGFiaWxpdHkgPSBAbmV3UHJvbWlzZUNhcGFiaWxp
dHkoY29uc3RydWN0b3IpOwotCi0gICAgaWYgKHR5cGVvZiBvbkZ1bGZpbGxlZCAhPT0gImZ1bmN0
aW9uIikKLSAgICAgICAgb25GdWxmaWxsZWQgPSBmdW5jdGlvbiAoYXJndW1lbnQpIHsgcmV0dXJu
IGFyZ3VtZW50OyB9OwotCi0gICAgaWYgKHR5cGVvZiBvblJlamVjdGVkICE9PSAiZnVuY3Rpb24i
KQotICAgICAgICBvblJlamVjdGVkID0gZnVuY3Rpb24gKGFyZ3VtZW50KSB7IHRocm93IGFyZ3Vt
ZW50OyB9OwotCi0gICAgdmFyIGZ1bGZpbGxSZWFjdGlvbiA9IEBuZXdQcm9taXNlUmVhY3Rpb24o
cmVzdWx0Q2FwYWJpbGl0eSwgb25GdWxmaWxsZWQpOwotICAgIHZhciByZWplY3RSZWFjdGlvbiA9
IEBuZXdQcm9taXNlUmVhY3Rpb24ocmVzdWx0Q2FwYWJpbGl0eSwgb25SZWplY3RlZCk7CisgICAg
cmV0dXJuIEBwcm9taXNlVGhlbih0aGlzLCBAbmV3UHJvbWlzZUNhcGFiaWxpdHkoY29uc3RydWN0
b3IpLCBvbkZ1bGZpbGxlZCwgb25SZWplY3RlZCk7Cit9CiAKLSAgICB2YXIgc3RhdGUgPSB0aGlz
LkBwcm9taXNlU3RhdGU7CitmdW5jdGlvbiBwcml2YXRlVGhlbihvbkZ1bGZpbGxlZCwgb25SZWpl
Y3RlZCkKK3sKKyAgICAvLyBUaGlzIGZ1bmN0aW9uIGlzIGludGVuZGVkIHRvIGJlIHVzZWQgaW4g
dGhlIEpTQyBpbnRlcm5hbHMuCisgICAgLy8gVGhlIGltcGxlbWVudGF0aW9uIHNob3VsZCB0YWtl
IGNhcmUgbm90IHRvIHBlcmZvcm0gdGhlIHVzZXIKKyAgICAvLyBvYnNlcnZhYmxlIC8gdHJhcHBh
YmxlIG9wZXJhdGlvbnMuCisgICAgLy8KKyAgICAvLyAxLiBEb24ndCBsb29rIHVwIHRoaXMuY29u
c3RydWN0b3IgLyBAQHNwZWNpZXMuIEFsd2F5cyBjb25zdHJ1Y3QKKyAgICAvLyAgICB0aGUgcGxh
aW4gUHJvbWlzZSBvYmplY3QuCiAKLSAgICBpZiAoc3RhdGUgPT09IEBwcm9taXNlUGVuZGluZykg
ewotICAgICAgICBAcHV0QnlWYWxEaXJlY3QodGhpcy5AcHJvbWlzZUZ1bGZpbGxSZWFjdGlvbnMs
IHRoaXMuQHByb21pc2VGdWxmaWxsUmVhY3Rpb25zLmxlbmd0aCwgZnVsZmlsbFJlYWN0aW9uKQot
ICAgICAgICBAcHV0QnlWYWxEaXJlY3QodGhpcy5AcHJvbWlzZVJlamVjdFJlYWN0aW9ucywgdGhp
cy5AcHJvbWlzZVJlamVjdFJlYWN0aW9ucy5sZW5ndGgsIHJlamVjdFJlYWN0aW9uKQotICAgIH0g
ZWxzZSBpZiAoc3RhdGUgPT09IEBwcm9taXNlRnVsZmlsbGVkKQotICAgICAgICBAZW5xdWV1ZUpv
YihAcHJvbWlzZVJlYWN0aW9uSm9iLCBbZnVsZmlsbFJlYWN0aW9uLCB0aGlzLkBwcm9taXNlUmVz
dWx0XSk7Ci0gICAgZWxzZSBpZiAoc3RhdGUgPT09IEBwcm9taXNlUmVqZWN0ZWQpCi0gICAgICAg
IEBlbnF1ZXVlSm9iKEBwcm9taXNlUmVhY3Rpb25Kb2IsIFtyZWplY3RSZWFjdGlvbiwgdGhpcy5A
cHJvbWlzZVJlc3VsdF0pOworICAgICJ1c2Ugc3RyaWN0IjsKIAotICAgIHJldHVybiByZXN1bHRD
YXBhYmlsaXR5LkBwcm9taXNlOworICAgIHJldHVybiBAcHJvbWlzZVRoZW4odGhpcywgQG5ld1By
b21pc2VEZWZlcnJlZCgpLCBvbkZ1bGZpbGxlZCwgb25SZWplY3RlZCk7CiB9CmRpZmYgLS1naXQg
YS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvYnVpbHRpbnMvUHJvbWlzZUNvbnN0cnVjdG9yLmpzIGIv
U291cmNlL0phdmFTY3JpcHRDb3JlL2J1aWx0aW5zL1Byb21pc2VDb25zdHJ1Y3Rvci5qcwppbmRl
eCAxZjgzYjQ3Zjc5MGE3NWU1YmY4YzkzZDVlNjY0OTYxOGNiMWFlYzY3Li5mNjYxMDc3NGQwMWYy
MTYyMDYyNjBjNzA0ZGZjM2ExMGU1MzQ1ZTQxIDEwMDY0NAotLS0gYS9Tb3VyY2UvSmF2YVNjcmlw
dENvcmUvYnVpbHRpbnMvUHJvbWlzZUNvbnN0cnVjdG9yLmpzCisrKyBiL1NvdXJjZS9KYXZhU2Ny
aXB0Q29yZS9idWlsdGlucy9Qcm9taXNlQ29uc3RydWN0b3IuanMKQEAgLTEzNywzICsxMzcsNjUg
QEAgZnVuY3Rpb24gcmVzb2x2ZSh2YWx1ZSkKIAogICAgIHJldHVybiBwcm9taXNlQ2FwYWJpbGl0
eS5AcHJvbWlzZTsKIH0KKworZnVuY3Rpb24gcHJpdmF0ZUFsbChhcnJheSkKK3sKKyAgICAvLyBU
aGlzIGZ1bmN0aW9uIGlzIGludGVuZGVkIHRvIGJlIHVzZWQgaW4gdGhlIEpTQyBpbnRlcm5hbHMu
CisgICAgLy8gVGhlIGltcGxlbWVudGF0aW9uIHNob3VsZCB0YWtlIGNhcmUgbm90IHRvIHBlcmZv
cm0gdGhlIHVzZXIKKyAgICAvLyBvYnNlcnZhYmxlIC8gdHJhcHBhYmxlIG9wZXJhdGlvbnMuCisg
ICAgLy8KKyAgICAvLyAxLiBEb24ndCB1c2UgZm9yLW9mIGFuZCBpdGVyYWJsZXMuIFRoaXMgZnVu
Y3Rpb24gb25seSBhY2NlcHRzCisgICAgLy8gICAgdGhlIGRlbnNlIGFycmF5IG9mIHRoZSBwcm9t
aXNlcy4KKyAgICAvLyAyLiBEb24ndCBsb29rIHVwIHRoaXMuY29uc3RydWN0b3IgLyBAQHNwZWNp
ZXMuIEFsd2F5cyBjb25zdHJ1Y3QKKyAgICAvLyAgICB0aGUgcGxhaW4gUHJvbWlzZSBvYmplY3Qu
CisKKyAgICAidXNlIHN0cmljdCI7CisKKyAgICB2YXIgcHJvbWlzZUNhcGFiaWxpdHkgPSBAbmV3
UHJvbWlzZURlZmVycmVkKCk7CisKKyAgICB2YXIgdmFsdWVzID0gW107CisgICAgdmFyIGluZGV4
ID0gMDsKKyAgICB2YXIgcmVtYWluaW5nRWxlbWVudHNDb3VudCA9IDE7CisKKyAgICBmdW5jdGlv
biBuZXdSZXNvbHZlRWxlbWVudChpbmRleCkKKyAgICB7CisgICAgICAgIHZhciBhbHJlYWR5Q2Fs
bGVkID0gZmFsc2U7CisgICAgICAgIHJldHVybiBmdW5jdGlvbiAoYXJndW1lbnQpCisgICAgICAg
IHsKKyAgICAgICAgICAgIGlmIChhbHJlYWR5Q2FsbGVkKQorICAgICAgICAgICAgICAgIHJldHVy
biB1bmRlZmluZWQ7CisgICAgICAgICAgICBhbHJlYWR5Q2FsbGVkID0gdHJ1ZTsKKworICAgICAg
ICAgICAgQHB1dEJ5VmFsRGlyZWN0KHZhbHVlcywgaW5kZXgsIGFyZ3VtZW50KTsKKworICAgICAg
ICAgICAgLS1yZW1haW5pbmdFbGVtZW50c0NvdW50OworICAgICAgICAgICAgaWYgKHJlbWFpbmlu
Z0VsZW1lbnRzQ291bnQgPT09IDApCisgICAgICAgICAgICAgICAgcmV0dXJuIHByb21pc2VDYXBh
YmlsaXR5LkByZXNvbHZlLkBjYWxsKHVuZGVmaW5lZCwgdmFsdWVzKTsKKworICAgICAgICAgICAg
cmV0dXJuIHVuZGVmaW5lZDsKKyAgICAgICAgfQorICAgIH0KKworICAgIHRyeSB7CisgICAgICAg
IGZvciAodmFyIGluZGV4ID0gMCwgbGVuZ3RoID0gYXJyYXkubGVuZ3RoOyBpbmRleCA8IGxlbmd0
aDsgKytpbmRleCkgeworICAgICAgICAgICAgdmFyIHZhbHVlID0gYXJyYXlbaW5kZXhdOworICAg
ICAgICAgICAgQHB1dEJ5VmFsRGlyZWN0KHZhbHVlcywgaW5kZXgsIHVuZGVmaW5lZCk7CisKKyAg
ICAgICAgICAgIHZhciBuZXh0UHJvbWlzZUNhcGFiaWxpdHkgPSBAbmV3UHJvbWlzZURlZmVycmVk
KCk7CisgICAgICAgICAgICBuZXh0UHJvbWlzZUNhcGFiaWxpdHkuQHJlc29sdmUuQGNhbGwodW5k
ZWZpbmVkLCB2YWx1ZSk7CisgICAgICAgICAgICB2YXIgbmV4dFByb21pc2UgPSBuZXh0UHJvbWlz
ZUNhcGFiaWxpdHkuQHByb21pc2U7CisKKyAgICAgICAgICAgIHZhciByZXNvbHZlRWxlbWVudCA9
IG5ld1Jlc29sdmVFbGVtZW50KGluZGV4KTsKKyAgICAgICAgICAgICsrcmVtYWluaW5nRWxlbWVu
dHNDb3VudDsKKyAgICAgICAgICAgIG5leHRQcm9taXNlLkB0aGVuKHJlc29sdmVFbGVtZW50LCBw
cm9taXNlQ2FwYWJpbGl0eS5AcmVqZWN0KTsKKyAgICAgICAgfQorCisgICAgICAgIC0tcmVtYWlu
aW5nRWxlbWVudHNDb3VudDsKKyAgICAgICAgaWYgKHJlbWFpbmluZ0VsZW1lbnRzQ291bnQgPT09
IDApCisgICAgICAgICAgICBwcm9taXNlQ2FwYWJpbGl0eS5AcmVzb2x2ZS5AY2FsbCh1bmRlZmlu
ZWQsIHZhbHVlcyk7CisgICAgfSBjYXRjaCAoZXJyb3IpIHsKKyAgICAgICAgcHJvbWlzZUNhcGFi
aWxpdHkuQHJlamVjdC5AY2FsbCh1bmRlZmluZWQsIGVycm9yKTsKKyAgICB9CisKKyAgICByZXR1
cm4gcHJvbWlzZUNhcGFiaWxpdHkuQHByb21pc2U7Cit9CmRpZmYgLS1naXQgYS9Tb3VyY2UvSmF2
YVNjcmlwdENvcmUvanNjLmNwcCBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9qc2MuY3BwCmluZGV4
IDViMTk1MzNjNDBhYTUxNDQyY2M0MWMxNjk4YWJiZWMyMTJmYWYzNzguLmE0Yzk3M2ExMDAyZDQx
YjNhMWZjMzgyNzJhOWUwMWFlYzNiMzM3MjkgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9KYXZhU2NyaXB0
Q29yZS9qc2MuY3BwCisrKyBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9qc2MuY3BwCkBAIC00MSw2
ICs0MSw3IEBACiAjaW5jbHVkZSAiSlNGdW5jdGlvbi5oIgogI2luY2x1ZGUgIkpTTG9jay5oIgog
I2luY2x1ZGUgIkpTT05PYmplY3QuaCIKKyNpbmNsdWRlICJKU1Byb21pc2VEZWZlcnJlZC5oIgog
I2luY2x1ZGUgIkpTUHJveHkuaCIKICNpbmNsdWRlICJKU1N0cmluZy5oIgogI2luY2x1ZGUgIkpT
V0FTTU1vZHVsZS5oIgpAQCAtNTE5LDIwICs1MjAsMTcgQEAgc3RydWN0IFNjcmlwdCB7CiBjbGFz
cyBDb21tYW5kTGluZSB7CiBwdWJsaWM6CiAgICAgQ29tbWFuZExpbmUoaW50IGFyZ2MsIGNoYXIq
KiBhcmd2KQotICAgICAgICA6IG1faW50ZXJhY3RpdmUoZmFsc2UpCi0gICAgICAgICwgbV9kdW1w
KGZhbHNlKQotICAgICAgICAsIG1fZXhpdENvZGUoZmFsc2UpCi0gICAgICAgICwgbV9wcm9maWxl
KGZhbHNlKQogICAgIHsKICAgICAgICAgcGFyc2VBcmd1bWVudHMoYXJnYywgYXJndik7CiAgICAg
fQogCi0gICAgYm9vbCBtX2ludGVyYWN0aXZlOwotICAgIGJvb2wgbV9kdW1wOwotICAgIGJvb2wg
bV9leGl0Q29kZTsKKyAgICBib29sIG1faW50ZXJhY3RpdmUgeyBmYWxzZSB9OworICAgIGJvb2wg
bV9kdW1wIHsgZmFsc2UgfTsKKyAgICBib29sIG1fbW9kdWxlIHsgZmFsc2UgfTsKKyAgICBib29s
IG1fZXhpdENvZGUgeyBmYWxzZSB9OwogICAgIFZlY3RvcjxTY3JpcHQ+IG1fc2NyaXB0czsKICAg
ICBWZWN0b3I8U3RyaW5nPiBtX2FyZ3VtZW50czsKLSAgICBib29sIG1fcHJvZmlsZTsKKyAgICBi
b29sIG1fcHJvZmlsZSB7IGZhbHNlIH07CiAgICAgU3RyaW5nIG1fcHJvZmlsZXJPdXRwdXQ7CiAK
ICAgICB2b2lkIHBhcnNlQXJndW1lbnRzKGludCwgY2hhcioqKTsKQEAgLTU2Niw2ICs1NjQsMTcg
QEAgbG9uZyBTdG9wV2F0Y2g6OmdldEVsYXBzZWRNUygpCiAgICAgcmV0dXJuIHN0YXRpY19jYXN0
PGxvbmc+KChtX3N0b3BUaW1lIC0gbV9zdGFydFRpbWUpICogMTAwMCk7CiB9CiAKK3N0YXRpYyBp
bmxpbmUgU3RyaW5nIHN0cmluZ0Zyb21VVEYoY29uc3QgY2hhciogdXRmOCkKK3sKKyAgICByZXR1
cm4gU3RyaW5nOjpmcm9tVVRGOFdpdGhMYXRpbjFGYWxsYmFjayh1dGY4LCBzdHJsZW4odXRmOCkp
OworfQorCitzdGF0aWMgaW5saW5lIFNvdXJjZUNvZGUganNjU291cmNlKGNvbnN0IGNoYXIqIHV0
ZjgsIGNvbnN0IFN0cmluZyYgZmlsZW5hbWUpCit7CisgICAgU3RyaW5nIHN0ciA9IHN0cmluZ0Zy
b21VVEYodXRmOCk7CisgICAgcmV0dXJuIG1ha2VTb3VyY2Uoc3RyLCBmaWxlbmFtZSk7Cit9CisK
IGNsYXNzIEdsb2JhbE9iamVjdCA6IHB1YmxpYyBKU0dsb2JhbE9iamVjdCB7CiBwcml2YXRlOgog
ICAgIEdsb2JhbE9iamVjdChWTSYsIFN0cnVjdHVyZSopOwpAQCAtNjg3LDEwICs2OTYsMzEgQEAg
Y2xhc3MgR2xvYmFsT2JqZWN0IDogcHVibGljIEpTR2xvYmFsT2JqZWN0IHsKICAgICAgICAgSWRl
bnRpZmllciBpZGVudGlmaWVyID0gSWRlbnRpZmllcjo6ZnJvbVN0cmluZygmdm0sIG5hbWUpOwog
ICAgICAgICBwdXREaXJlY3Qodm0sIGlkZW50aWZpZXIsIEpTRnVuY3Rpb246OmNyZWF0ZSh2bSwg
dGhpcywgYXJndW1lbnRzLCBpZGVudGlmaWVyLnN0cmluZygpLCBmdW5jdGlvbiwgTm9JbnRyaW5z
aWMsIGZ1bmN0aW9uKSk7CiAgICAgfQorCisgICAgc3RhdGljIEpTVmFsdWUgbG9hZGVyRmV0Y2go
SlNHbG9iYWxPYmplY3QqIGdsb2JhbE9iamVjdCwgRXhlY1N0YXRlKiBleGVjLCBKU1ZhbHVlIGtl
eSkKKyAgICB7CisgICAgICAgIEpTUHJvbWlzZURlZmVycmVkKiBkZWZlcnJlZCA9IEpTUHJvbWlz
ZURlZmVycmVkOjpjcmVhdGUoZXhlYywgZ2xvYmFsT2JqZWN0KTsKKyAgICAgICAgU3RyaW5nIG1v
ZHVsZUtleSA9IGtleS50b1N0cmluZyhleGVjKS0+dmFsdWUoZXhlYyk7CisgICAgICAgIGlmIChl
eGVjLT5oYWRFeGNlcHRpb24oKSkgeworICAgICAgICAgICAgSlNWYWx1ZSBleGNlcHRpb24gPSBl
eGVjLT5leGNlcHRpb24oKTsKKyAgICAgICAgICAgIGV4ZWMtPmNsZWFyRXhjZXB0aW9uKCk7Cisg
ICAgICAgICAgICBkZWZlcnJlZC0+cmVqZWN0KGV4ZWMsIGV4Y2VwdGlvbik7CisgICAgICAgICAg
ICByZXR1cm4gZGVmZXJyZWQtPnByb21pc2UoKTsKKyAgICAgICAgfQorCisgICAgICAgIC8vIEhl
cmUsIG5vdyB3ZSBjb25zaWRlciBtb2R1bGVLZXkgYXMgdGhlIGZpbGVOYW1lLgorICAgICAgICBW
ZWN0b3I8Y2hhcj4gdXRmODsKKyAgICAgICAgaWYgKCFmaWxsQnVmZmVyV2l0aENvbnRlbnRzT2ZG
aWxlKG1vZHVsZUtleSwgdXRmOCkpIHsKKyAgICAgICAgICAgIGRlZmVycmVkLT5yZWplY3QoZXhl
YywgY3JlYXRlRXJyb3IoZXhlYywgbWFrZVN0cmluZygiQ291bGQgbm90IG9wZW4gZmlsZSAnIiwg
bW9kdWxlS2V5LCAiJy4iKSkpOworICAgICAgICAgICAgcmV0dXJuIGRlZmVycmVkLT5wcm9taXNl
KCk7CisgICAgICAgIH0KKyAgICAgICAgZGVmZXJyZWQtPnJlc29sdmUoZXhlYywganNTdHJpbmco
ZXhlYywgc3RyaW5nRnJvbVVURih1dGY4LmRhdGEoKSkpKTsKKyAgICAgICAgcmV0dXJuIGRlZmVy
cmVkLT5wcm9taXNlKCk7CisgICAgfQogfTsKIAogY29uc3QgQ2xhc3NJbmZvIEdsb2JhbE9iamVj
dDo6c19pbmZvID0geyAiZ2xvYmFsIiwgJkpTR2xvYmFsT2JqZWN0OjpzX2luZm8sICZnbG9iYWxP
YmplY3RUYWJsZSwgQ1JFQVRFX01FVEhPRF9UQUJMRShHbG9iYWxPYmplY3QpIH07Ci1jb25zdCBH
bG9iYWxPYmplY3RNZXRob2RUYWJsZSBHbG9iYWxPYmplY3Q6OnNfZ2xvYmFsT2JqZWN0TWV0aG9k
VGFibGUgPSB7ICZhbGxvd3NBY2Nlc3NGcm9tLCAmc3VwcG9ydHNQcm9maWxpbmcsICZzdXBwb3J0
c1JpY2hTb3VyY2VJbmZvLCAmc2hvdWxkSW50ZXJydXB0U2NyaXB0LCAmamF2YVNjcmlwdFJ1bnRp
bWVGbGFncywgMCwgJnNob3VsZEludGVycnVwdFNjcmlwdEJlZm9yZVRpbWVvdXQgfTsKK2NvbnN0
IEdsb2JhbE9iamVjdE1ldGhvZFRhYmxlIEdsb2JhbE9iamVjdDo6c19nbG9iYWxPYmplY3RNZXRo
b2RUYWJsZSA9IHsgJmFsbG93c0FjY2Vzc0Zyb20sICZzdXBwb3J0c1Byb2ZpbGluZywgJnN1cHBv
cnRzUmljaFNvdXJjZUluZm8sICZzaG91bGRJbnRlcnJ1cHRTY3JpcHQsICZqYXZhU2NyaXB0UnVu
dGltZUZsYWdzLCAwLCAmc2hvdWxkSW50ZXJydXB0U2NyaXB0QmVmb3JlVGltZW91dCwgbnVsbHB0
ciwgJmxvYWRlckZldGNoLCBudWxscHRyLCBudWxscHRyIH07CiAKIAogR2xvYmFsT2JqZWN0OjpH
bG9iYWxPYmplY3QoVk0mIHZtLCBTdHJ1Y3R1cmUqIHN0cnVjdHVyZSkKQEAgLTY5OCwxNyArNzI4
LDYgQEAgR2xvYmFsT2JqZWN0OjpHbG9iYWxPYmplY3QoVk0mIHZtLCBTdHJ1Y3R1cmUqIHN0cnVj
dHVyZSkKIHsKIH0KIAotc3RhdGljIGlubGluZSBTdHJpbmcgc3RyaW5nRnJvbVVURihjb25zdCBj
aGFyKiB1dGY4KQotewotICAgIHJldHVybiBTdHJpbmc6OmZyb21VVEY4V2l0aExhdGluMUZhbGxi
YWNrKHV0ZjgsIHN0cmxlbih1dGY4KSk7Ci19Ci0KLXN0YXRpYyBpbmxpbmUgU291cmNlQ29kZSBq
c2NTb3VyY2UoY29uc3QgY2hhciogdXRmOCwgY29uc3QgU3RyaW5nJiBmaWxlbmFtZSkKLXsKLSAg
ICBTdHJpbmcgc3RyID0gc3RyaW5nRnJvbVVURih1dGY4KTsKLSAgICByZXR1cm4gbWFrZVNvdXJj
ZShzdHIsIGZpbGVuYW1lKTsKLX0KLQogRW5jb2RlZEpTVmFsdWUgSlNDX0hPU1RfQ0FMTCBmdW5j
dGlvblByaW50KEV4ZWNTdGF0ZSogZXhlYykKIHsKICAgICBmb3IgKHVuc2lnbmVkIGkgPSAwOyBp
IDwgZXhlYy0+YXJndW1lbnRDb3VudCgpOyArK2kpIHsKQEAgLTEyMTIsNyArMTIzMSw3IEBAIEVu
Y29kZWRKU1ZhbHVlIEpTQ19IT1NUX0NBTEwgZnVuY3Rpb25DaGVja01vZHVsZVN5bnRheChFeGVj
U3RhdGUqIGV4ZWMpCiAgICAgc3RvcFdhdGNoLnN0YXJ0KCk7CiAKICAgICBQYXJzZXJFcnJvciBl
cnJvcjsKLSAgICBib29sIHZhbGlkU3ludGF4ID0gY2hlY2tNb2R1bGVTeW50YXgoZXhlYy0+dm0o
KSwgbWFrZVNvdXJjZShzb3VyY2UpLCBlcnJvcik7CisgICAgYm9vbCB2YWxpZFN5bnRheCA9IGNo
ZWNrTW9kdWxlU3ludGF4KGV4ZWMsIG1ha2VTb3VyY2Uoc291cmNlKSwgZXJyb3IpOwogICAgIHN0
b3BXYXRjaC5zdG9wKCk7CiAKICAgICBpZiAoIXZhbGlkU3ludGF4KQpAQCAtMTMyMCw3ICsxMzM5
LDE4IEBAIGludCBtYWluKGludCBhcmdjLCBjaGFyKiogYXJndikKICAgICBqc2NFeGl0KHJlcyk7
CiB9CiAKLXN0YXRpYyBib29sIHJ1bldpdGhTY3JpcHRzKEdsb2JhbE9iamVjdCogZ2xvYmFsT2Jq
ZWN0LCBjb25zdCBWZWN0b3I8U2NyaXB0PiYgc2NyaXB0cywgYm9vbCBkdW1wKQorc3RhdGljIHZv
aWQgZHVtcEV4Y2VwdGlvbihHbG9iYWxPYmplY3QqIGdsb2JhbE9iamVjdCwgTmFrZWRQdHI8RXhj
ZXB0aW9uPiBldmFsdWF0aW9uRXhjZXB0aW9uKQoreworICAgIGlmIChldmFsdWF0aW9uRXhjZXB0
aW9uKSB7CisgICAgICAgIHByaW50ZigiRXhjZXB0aW9uOiAlc1xuIiwgZXZhbHVhdGlvbkV4Y2Vw
dGlvbi0+dmFsdWUoKS50b1N0cmluZyhnbG9iYWxPYmplY3QtPmdsb2JhbEV4ZWMoKSktPnZhbHVl
KGdsb2JhbE9iamVjdC0+Z2xvYmFsRXhlYygpKS51dGY4KCkuZGF0YSgpKTsKKyAgICAgICAgSWRl
bnRpZmllciBzdGFja0lEID0gSWRlbnRpZmllcjo6ZnJvbVN0cmluZyhnbG9iYWxPYmplY3QtPmds
b2JhbEV4ZWMoKSwgInN0YWNrIik7CisgICAgICAgIEpTVmFsdWUgc3RhY2tWYWx1ZSA9IGV2YWx1
YXRpb25FeGNlcHRpb24tPnZhbHVlKCkuZ2V0KGdsb2JhbE9iamVjdC0+Z2xvYmFsRXhlYygpLCBz
dGFja0lEKTsKKyAgICAgICAgaWYgKCFzdGFja1ZhbHVlLmlzVW5kZWZpbmVkT3JOdWxsKCkpCisg
ICAgICAgICAgICBwcmludGYoIiVzXG4iLCBzdGFja1ZhbHVlLnRvU3RyaW5nKGdsb2JhbE9iamVj
dC0+Z2xvYmFsRXhlYygpKS0+dmFsdWUoZ2xvYmFsT2JqZWN0LT5nbG9iYWxFeGVjKCkpLnV0Zjgo
KS5kYXRhKCkpOworICAgIH0KK30KKworc3RhdGljIGJvb2wgcnVuV2l0aFNjcmlwdHMoR2xvYmFs
T2JqZWN0KiBnbG9iYWxPYmplY3QsIGNvbnN0IFZlY3RvcjxTY3JpcHQ+JiBzY3JpcHRzLCBib29s
IGR1bXAsIGJvb2wgbW9kdWxlKQogewogICAgIGNvbnN0IGNoYXIqIHNjcmlwdDsKICAgICBTdHJp
bmcgZmlsZU5hbWU7CkBAIC0xMzQ5LDE3ICsxMzc5LDIxIEBAIHN0YXRpYyBib29sIHJ1bldpdGhT
Y3JpcHRzKEdsb2JhbE9iamVjdCogZ2xvYmFsT2JqZWN0LCBjb25zdCBWZWN0b3I8U2NyaXB0PiYg
c2NyCiAKICAgICAgICAgdm0uc3RhcnRTYW1wbGluZygpOwogCi0gICAgICAgIE5ha2VkUHRyPEV4
Y2VwdGlvbj4gZXZhbHVhdGlvbkV4Y2VwdGlvbjsKLSAgICAgICAgSlNWYWx1ZSByZXR1cm5WYWx1
ZSA9IGV2YWx1YXRlKGdsb2JhbE9iamVjdC0+Z2xvYmFsRXhlYygpLCBqc2NTb3VyY2Uoc2NyaXB0
LCBmaWxlTmFtZSksIEpTVmFsdWUoKSwgZXZhbHVhdGlvbkV4Y2VwdGlvbik7Ci0gICAgICAgIHN1
Y2Nlc3MgPSBzdWNjZXNzICYmICFldmFsdWF0aW9uRXhjZXB0aW9uOwotICAgICAgICBpZiAoZHVt
cCAmJiAhZXZhbHVhdGlvbkV4Y2VwdGlvbikKLSAgICAgICAgICAgIHByaW50ZigiRW5kOiAlc1xu
IiwgcmV0dXJuVmFsdWUudG9TdHJpbmcoZ2xvYmFsT2JqZWN0LT5nbG9iYWxFeGVjKCkpLT52YWx1
ZShnbG9iYWxPYmplY3QtPmdsb2JhbEV4ZWMoKSkudXRmOCgpLmRhdGEoKSk7Ci0gICAgICAgIGlm
IChldmFsdWF0aW9uRXhjZXB0aW9uKSB7Ci0gICAgICAgICAgICBwcmludGYoIkV4Y2VwdGlvbjog
JXNcbiIsIGV2YWx1YXRpb25FeGNlcHRpb24tPnZhbHVlKCkudG9TdHJpbmcoZ2xvYmFsT2JqZWN0
LT5nbG9iYWxFeGVjKCkpLT52YWx1ZShnbG9iYWxPYmplY3QtPmdsb2JhbEV4ZWMoKSkudXRmOCgp
LmRhdGEoKSk7Ci0gICAgICAgICAgICBJZGVudGlmaWVyIHN0YWNrSUQgPSBJZGVudGlmaWVyOjpm
cm9tU3RyaW5nKGdsb2JhbE9iamVjdC0+Z2xvYmFsRXhlYygpLCAic3RhY2siKTsKLSAgICAgICAg
ICAgIEpTVmFsdWUgc3RhY2tWYWx1ZSA9IGV2YWx1YXRpb25FeGNlcHRpb24tPnZhbHVlKCkuZ2V0
KGdsb2JhbE9iamVjdC0+Z2xvYmFsRXhlYygpLCBzdGFja0lEKTsKLSAgICAgICAgICAgIGlmICgh
c3RhY2tWYWx1ZS5pc1VuZGVmaW5lZE9yTnVsbCgpKQotICAgICAgICAgICAgICAgIHByaW50Zigi
JXNcbiIsIHN0YWNrVmFsdWUudG9TdHJpbmcoZ2xvYmFsT2JqZWN0LT5nbG9iYWxFeGVjKCkpLT52
YWx1ZShnbG9iYWxPYmplY3QtPmdsb2JhbEV4ZWMoKSkudXRmOCgpLmRhdGEoKSk7CisgICAgICAg
IGlmIChtb2R1bGUpIHsKKyNpZiBFTkFCTEUoRVM2X01PRFVMRVMpCisgICAgICAgICAgICBOYWtl
ZFB0cjxFeGNlcHRpb24+IGV2YWx1YXRpb25FeGNlcHRpb247CisgICAgICAgICAgICBldmFsdWF0
ZU1vZHVsZShnbG9iYWxPYmplY3QtPmdsb2JhbEV4ZWMoKSwganNjU291cmNlKHNjcmlwdCwgZmls
ZU5hbWUpLCBldmFsdWF0aW9uRXhjZXB0aW9uKTsKKyAgICAgICAgICAgIGR1bXBFeGNlcHRpb24o
Z2xvYmFsT2JqZWN0LCBldmFsdWF0aW9uRXhjZXB0aW9uKTsKKyAgICAgICAgICAgIGdsb2JhbE9i
amVjdC0+Z2xvYmFsRXhlYygpLT5jbGVhckV4Y2VwdGlvbigpOworICAgICAgICAgICAgZ2xvYmFs
T2JqZWN0LT52bSgpLmRyYWluTWljcm90YXNrcygpOworI2VuZGlmCisgICAgICAgIH0gZWxzZSB7
CisgICAgICAgICAgICBOYWtlZFB0cjxFeGNlcHRpb24+IGV2YWx1YXRpb25FeGNlcHRpb247Cisg
ICAgICAgICAgICBKU1ZhbHVlIHJldHVyblZhbHVlID0gZXZhbHVhdGUoZ2xvYmFsT2JqZWN0LT5n
bG9iYWxFeGVjKCksIGpzY1NvdXJjZShzY3JpcHQsIGZpbGVOYW1lKSwgSlNWYWx1ZSgpLCBldmFs
dWF0aW9uRXhjZXB0aW9uKTsKKyAgICAgICAgICAgIHN1Y2Nlc3MgPSBzdWNjZXNzICYmICFldmFs
dWF0aW9uRXhjZXB0aW9uOworICAgICAgICAgICAgaWYgKGR1bXAgJiYgIWV2YWx1YXRpb25FeGNl
cHRpb24pCisgICAgICAgICAgICAgICAgcHJpbnRmKCJFbmQ6ICVzXG4iLCByZXR1cm5WYWx1ZS50
b1N0cmluZyhnbG9iYWxPYmplY3QtPmdsb2JhbEV4ZWMoKSktPnZhbHVlKGdsb2JhbE9iamVjdC0+
Z2xvYmFsRXhlYygpKS51dGY4KCkuZGF0YSgpKTsKKyAgICAgICAgICAgIGR1bXBFeGNlcHRpb24o
Z2xvYmFsT2JqZWN0LCBldmFsdWF0aW9uRXhjZXB0aW9uKTsKICAgICAgICAgfQogCiAgICAgICAg
IHZtLnN0b3BTYW1wbGluZygpOwpAQCAtMTQ1MSw2ICsxNDg1LDkgQEAgc3RhdGljIE5PX1JFVFVS
TiB2b2lkIHByaW50VXNhZ2VTdGF0ZW1lbnQoYm9vbCBoZWxwID0gZmFsc2UpCiAgICAgZnByaW50
ZihzdGRlcnIsICIgIC1mICAgICAgICAgU3BlY2lmaWVzIGEgc291cmNlIGZpbGUgKGRlcHJlY2F0
ZWQpXG4iKTsKICAgICBmcHJpbnRmKHN0ZGVyciwgIiAgLWh8LS1oZWxwICBQcmludHMgdGhpcyBo
ZWxwIG1lc3NhZ2VcbiIpOwogICAgIGZwcmludGYoc3RkZXJyLCAiICAtaSAgICAgICAgIEVuYWJs
ZXMgaW50ZXJhY3RpdmUgbW9kZSAoZGVmYXVsdCBpZiBubyBmaWxlcyBhcmUgc3BlY2lmaWVkKVxu
Iik7CisjaWYgRU5BQkxFKEVTNl9NT0RVTEVTKQorICAgIGZwcmludGYoc3RkZXJyLCAiICAtbSAg
ICAgICAgIEV4ZWN1dGUgYXMgYSBtb2R1bGVcbiIpOworI2VuZGlmCiAjaWYgSEFWRShTSUdOQUxf
SCkKICAgICBmcHJpbnRmKHN0ZGVyciwgIiAgLXMgICAgICAgICBJbnN0YWxscyBzaWduYWwgaGFu
ZGxlcnMgdGhhdCBleGl0IG9uIGEgY3Jhc2ggKFVuaXggcGxhdGZvcm1zIG9ubHkpXG4iKTsKICNl
bmRpZgpAQCAtMTUwMiw2ICsxNTM5LDEyIEBAIHZvaWQgQ29tbWFuZExpbmU6OnBhcnNlQXJndW1l
bnRzKGludCBhcmdjLCBjaGFyKiogYXJndikKICAgICAgICAgICAgIG1fcHJvZmlsZXJPdXRwdXQg
PSBhcmd2W2ldOwogICAgICAgICAgICAgY29udGludWU7CiAgICAgICAgIH0KKyNpZiBFTkFCTEUo
RVM2X01PRFVMRVMpCisgICAgICAgIGlmICghc3RyY21wKGFyZywgIi1tIikpIHsKKyAgICAgICAg
ICAgIG1fbW9kdWxlID0gdHJ1ZTsKKyAgICAgICAgICAgIGNvbnRpbnVlOworICAgICAgICB9Cisj
ZW5kaWYKICAgICAgICAgaWYgKCFzdHJjbXAoYXJnLCAiLXMiKSkgewogI2lmIEhBVkUoU0lHTkFM
X0gpCiAgICAgICAgICAgICBzaWduYWwoU0lHSUxMLCBfZXhpdCk7CkBAIC0xNTc3LDcgKzE2MjAs
NyBAQCBpbnQganNjbWFpbihpbnQgYXJnYywgY2hhcioqIGFyZ3YpCiAgICAgICAgICAgICB2bS0+
bV9wZXJCeXRlY29kZVByb2ZpbGVyID0gc3RkOjptYWtlX3VuaXF1ZTxQcm9maWxlcjo6RGF0YWJh
c2U+KCp2bSk7CiAgICAgCiAgICAgICAgIEdsb2JhbE9iamVjdCogZ2xvYmFsT2JqZWN0ID0gR2xv
YmFsT2JqZWN0OjpjcmVhdGUoKnZtLCBHbG9iYWxPYmplY3Q6OmNyZWF0ZVN0cnVjdHVyZSgqdm0s
IGpzTnVsbCgpKSwgb3B0aW9ucy5tX2FyZ3VtZW50cyk7Ci0gICAgICAgIGJvb2wgc3VjY2VzcyA9
IHJ1bldpdGhTY3JpcHRzKGdsb2JhbE9iamVjdCwgb3B0aW9ucy5tX3NjcmlwdHMsIG9wdGlvbnMu
bV9kdW1wKTsKKyAgICAgICAgYm9vbCBzdWNjZXNzID0gcnVuV2l0aFNjcmlwdHMoZ2xvYmFsT2Jq
ZWN0LCBvcHRpb25zLm1fc2NyaXB0cywgb3B0aW9ucy5tX2R1bXAsIG9wdGlvbnMubV9tb2R1bGUp
OwogICAgICAgICBpZiAob3B0aW9ucy5tX2ludGVyYWN0aXZlICYmIHN1Y2Nlc3MpCiAgICAgICAg
ICAgICBydW5JbnRlcmFjdGl2ZShnbG9iYWxPYmplY3QpOwogCmRpZmYgLS1naXQgYS9Tb3VyY2Uv
SmF2YVNjcmlwdENvcmUvcGFyc2VyL0xleGVyLmNwcCBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9w
YXJzZXIvTGV4ZXIuY3BwCmluZGV4IDI1OWQyNTRlMzk3NTE4YzdiY2NmZmM5ZWRlYzE1NmJhNWYw
MGRiN2EuLjQ3NjA0M2ZmNmUyNTVmOWViNjMxNDVjYjg2Y2RhOWVlZjBhNDE1NjYgMTAwNjQ0Ci0t
LSBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9wYXJzZXIvTGV4ZXIuY3BwCisrKyBiL1NvdXJjZS9K
YXZhU2NyaXB0Q29yZS9wYXJzZXIvTGV4ZXIuY3BwCkBAIC05MzUsNyArOTM1LDcgQEAgdGVtcGxh
dGUgPGJvb2wgc2hvdWxkQ3JlYXRlSWRlbnRpZmllcj4gQUxXQVlTX0lOTElORSBKU1Rva2VuVHlw
ZSBMZXhlcjxMQ2hhcj46OnAKICAgICAgICAgICAgICAgICByZXR1cm4gRVJST1JUT0s7CiAgICAg
ICAgICAgICB9CiAgICAgICAgICAgICBpZiAoaXNQcml2YXRlTmFtZSkKLSAgICAgICAgICAgICAg
ICBpZGVudCA9IG1fdm0tPnByb3BlcnR5TmFtZXMtPmdldFByaXZhdGVOYW1lKCppZGVudCk7Cisg
ICAgICAgICAgICAgICAgaWRlbnQgPSBtX3ZtLT5wcm9wZXJ0eU5hbWVzLT5sb29rVXBQcml2YXRl
TmFtZSgqaWRlbnQpOwogICAgICAgICAgICAgZWxzZSBpZiAoKmlkZW50ID09IG1fdm0tPnByb3Bl
cnR5TmFtZXMtPnVuZGVmaW5lZEtleXdvcmQpCiAgICAgICAgICAgICAgICAgdG9rZW5EYXRhLT5p
ZGVudCA9ICZtX3ZtLT5wcm9wZXJ0eU5hbWVzLT51bmRlZmluZWRQcml2YXRlTmFtZTsKICAgICAg
ICAgICAgIGlmICghaWRlbnQpCkBAIC0xMDEyLDcgKzEwMTIsNyBAQCB0ZW1wbGF0ZSA8Ym9vbCBz
aG91bGRDcmVhdGVJZGVudGlmaWVyPiBBTFdBWVNfSU5MSU5FIEpTVG9rZW5UeXBlIExleGVyPFVD
aGFyPjo6cAogICAgICAgICAgICAgICAgIHJldHVybiBFUlJPUlRPSzsKICAgICAgICAgICAgIH0K
ICAgICAgICAgICAgIGlmIChpc1ByaXZhdGVOYW1lKQotICAgICAgICAgICAgICAgIGlkZW50ID0g
bV92bS0+cHJvcGVydHlOYW1lcy0+Z2V0UHJpdmF0ZU5hbWUoKmlkZW50KTsKKyAgICAgICAgICAg
ICAgICBpZGVudCA9IG1fdm0tPnByb3BlcnR5TmFtZXMtPmxvb2tVcFByaXZhdGVOYW1lKCppZGVu
dCk7CiAgICAgICAgICAgICBlbHNlIGlmICgqaWRlbnQgPT0gbV92bS0+cHJvcGVydHlOYW1lcy0+
dW5kZWZpbmVkS2V5d29yZCkKICAgICAgICAgICAgICAgICB0b2tlbkRhdGEtPmlkZW50ID0gJm1f
dm0tPnByb3BlcnR5TmFtZXMtPnVuZGVmaW5lZFByaXZhdGVOYW1lOwogICAgICAgICAgICAgaWYg
KCFpZGVudCkKZGlmZiAtLWdpdCBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9wYXJzZXIvTW9kdWxl
QW5hbHl6ZXIuY3BwIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL3BhcnNlci9Nb2R1bGVBbmFseXpl
ci5jcHAKaW5kZXggYjJkZTk2MGIzOTMyNTg0MWNkOWY4NWM2NzE2MjJjM2RmN2JhOWQ3Ny4uNmRh
MmNkMDhkNDhmMjA1ODlmNGRlZTJlYzQ1NGU5ZDE1Y2UzZjhiYiAxMDA2NDQKLS0tIGEvU291cmNl
L0phdmFTY3JpcHRDb3JlL3BhcnNlci9Nb2R1bGVBbmFseXplci5jcHAKKysrIGIvU291cmNlL0ph
dmFTY3JpcHRDb3JlL3BhcnNlci9Nb2R1bGVBbmFseXplci5jcHAKQEAgLTI3LDE0ICsyNywxOCBA
QAogI2luY2x1ZGUgIk1vZHVsZUFuYWx5emVyLmgiCiAKICNpbmNsdWRlICJJZGVudGlmaWVySW5s
aW5lcy5oIgotI2luY2x1ZGUgIk1vZHVsZVJlY29yZC5oIgorI2luY2x1ZGUgIkpTQ0pTVmFsdWVJ
bmxpbmVzLmgiCisjaW5jbHVkZSAiSlNDZWxsSW5saW5lcy5oIgorI2luY2x1ZGUgIkpTR2xvYmFs
T2JqZWN0LmgiCisjaW5jbHVkZSAiSlNNb2R1bGVSZWNvcmQuaCIKKyNpbmNsdWRlICJTdHJvbmdJ
bmxpbmVzLmgiCiAKIG5hbWVzcGFjZSBKU0MgewogCiAKLU1vZHVsZUFuYWx5emVyOjpNb2R1bGVB
bmFseXplcihWTSYgdm0sIGNvbnN0IFZhcmlhYmxlRW52aXJvbm1lbnQmIGRlY2xhcmVkVmFyaWFi
bGVzLCBjb25zdCBWYXJpYWJsZUVudmlyb25tZW50JiBsZXhpY2FsVmFyaWFibGVzKQotICAgIDog
bV92bSgmdm0pCi0gICAgLCBtX21vZHVsZVJlY29yZChNb2R1bGVSZWNvcmQ6OmNyZWF0ZSgpKQor
TW9kdWxlQW5hbHl6ZXI6Ok1vZHVsZUFuYWx5emVyKEV4ZWNTdGF0ZSogZXhlYywgY29uc3QgVmFy
aWFibGVFbnZpcm9ubWVudCYgZGVjbGFyZWRWYXJpYWJsZXMsIGNvbnN0IFZhcmlhYmxlRW52aXJv
bm1lbnQmIGxleGljYWxWYXJpYWJsZXMpCisgICAgOiBtX3ZtKCZleGVjLT52bSgpKQorICAgICwg
bV9tb2R1bGVSZWNvcmQoZXhlYy0+dm0oKSwgSlNNb2R1bGVSZWNvcmQ6OmNyZWF0ZShleGVjLT52
bSgpLCBleGVjLT5sZXhpY2FsR2xvYmFsT2JqZWN0KCktPm1vZHVsZVJlY29yZFN0cnVjdHVyZSgp
KSkKICAgICAsIG1fZGVjbGFyZWRWYXJpYWJsZXMoZGVjbGFyZWRWYXJpYWJsZXMpCiAgICAgLCBt
X2xleGljYWxWYXJpYWJsZXMobGV4aWNhbFZhcmlhYmxlcykKIHsKQEAgLTc2LDI4ICs4MCwyOCBA
QCB2b2lkIE1vZHVsZUFuYWx5emVyOjpleHBvcnRWYXJpYWJsZShjb25zdCBSZWZQdHI8VW5pcXVl
ZFN0cmluZ0ltcGw+JiBsb2NhbE5hbWUsCiAKICAgICAvLyBFeHBvcnRlZCBtb2R1bGUgbG9jYWwg
dmFyaWFibGUuCiAgICAgaWYgKCF2YXJpYWJsZS5pc0ltcG9ydGVkKCkpIHsKLSAgICAgICAgbW9k
dWxlUmVjb3JkKCkuYWRkRXhwb3J0RW50cnkoTW9kdWxlUmVjb3JkOjpFeHBvcnRFbnRyeTo6Y3Jl
YXRlTG9jYWwoZXhwb3J0TmFtZSwgSWRlbnRpZmllcjo6ZnJvbVVpZChtX3ZtLCBsb2NhbE5hbWUu
Z2V0KCkpLCB2YXJpYWJsZSkpOworICAgICAgICBtb2R1bGVSZWNvcmQoKS0+YWRkRXhwb3J0RW50
cnkoSlNNb2R1bGVSZWNvcmQ6OkV4cG9ydEVudHJ5OjpjcmVhdGVMb2NhbChleHBvcnROYW1lLCBJ
ZGVudGlmaWVyOjpmcm9tVWlkKG1fdm0sIGxvY2FsTmFtZS5nZXQoKSksIHZhcmlhYmxlKSk7CiAg
ICAgICAgIHJldHVybjsKICAgICB9CiAKLSAgICBjb25zdCBhdXRvJiBpbXBvcnRFbnRyeSA9IG1v
ZHVsZVJlY29yZCgpLmxvb2tVcEltcG9ydEVudHJ5KGxvY2FsTmFtZSk7CisgICAgY29uc3QgYXV0
byYgaW1wb3J0RW50cnkgPSBtb2R1bGVSZWNvcmQoKS0+bG9va1VwSW1wb3J0RW50cnkobG9jYWxO
YW1lKTsKICAgICBpZiAoaW1wb3J0RW50cnkuaXNOYW1lc3BhY2Uodm0oKSkpIHsKICAgICAgICAg
Ly8gRXhwb3J0ZWQgbmFtZXNwYWNlIGJpbmRpbmcuCiAgICAgICAgIC8vIGltcG9ydCAqIGFzIG5h
bWVzcGFjZSBmcm9tICJtb2QiCiAgICAgICAgIC8vIGV4cG9ydCB7IG5hbWVzcGFjZSB9Ci0gICAg
ICAgIG1vZHVsZVJlY29yZCgpLmFkZEV4cG9ydEVudHJ5KE1vZHVsZVJlY29yZDo6RXhwb3J0RW50
cnk6OmNyZWF0ZU5hbWVzcGFjZShleHBvcnROYW1lLCBpbXBvcnRFbnRyeS5tb2R1bGVSZXF1ZXN0
KSk7CisgICAgICAgIG1vZHVsZVJlY29yZCgpLT5hZGRFeHBvcnRFbnRyeShKU01vZHVsZVJlY29y
ZDo6RXhwb3J0RW50cnk6OmNyZWF0ZU5hbWVzcGFjZShleHBvcnROYW1lLCBpbXBvcnRFbnRyeS5t
b2R1bGVSZXF1ZXN0KSk7CiAgICAgICAgIHJldHVybjsKICAgICB9CiAKICAgICAvLyBJbmRpcmVj
dGx5IGV4cG9ydGVkIGJpbmRpbmcuCiAgICAgLy8gaW1wb3J0IGEgZnJvbSAibW9kIgogICAgIC8v
IGV4cG9ydCB7IGEgfQotICAgIG1vZHVsZVJlY29yZCgpLmFkZEV4cG9ydEVudHJ5KE1vZHVsZVJl
Y29yZDo6RXhwb3J0RW50cnk6OmNyZWF0ZUluZGlyZWN0KGV4cG9ydE5hbWUsIGltcG9ydEVudHJ5
LmltcG9ydE5hbWUsIGltcG9ydEVudHJ5Lm1vZHVsZVJlcXVlc3QpKTsKKyAgICBtb2R1bGVSZWNv
cmQoKS0+YWRkRXhwb3J0RW50cnkoSlNNb2R1bGVSZWNvcmQ6OkV4cG9ydEVudHJ5OjpjcmVhdGVJ
bmRpcmVjdChleHBvcnROYW1lLCBpbXBvcnRFbnRyeS5pbXBvcnROYW1lLCBpbXBvcnRFbnRyeS5t
b2R1bGVSZXF1ZXN0KSk7CiB9CiAKIAogCi1SZWY8TW9kdWxlUmVjb3JkPiBNb2R1bGVBbmFseXpl
cjo6YW5hbHl6ZShNb2R1bGVQcm9ncmFtTm9kZSYgbW9kdWxlUHJvZ3JhbU5vZGUpCitKU01vZHVs
ZVJlY29yZCogTW9kdWxlQW5hbHl6ZXI6OmFuYWx5emUoTW9kdWxlUHJvZ3JhbU5vZGUmIG1vZHVs
ZVByb2dyYW1Ob2RlKQogewogICAgIC8vIFRyYXZlcnNlIHRoZSBtb2R1bGUgQVNUIGFuZCBjb2xs
ZWN0CiAgICAgLy8gKiBJbXBvcnQgZW50cmllcwpAQCAtMTQ5LDcgKzE1Myw3IEBAIFJlZjxNb2R1
bGVSZWNvcmQ+IE1vZHVsZUFuYWx5emVyOjphbmFseXplKE1vZHVsZVByb2dyYW1Ob2RlJiBtb2R1
bGVQcm9ncmFtTm9kZSkKICAgICBpZiAoT3B0aW9uczo6ZHVtcE1vZHVsZVJlY29yZCgpKQogICAg
ICAgICBtX21vZHVsZVJlY29yZC0+ZHVtcCgpOwogCi0gICAgcmV0dXJuICptX21vZHVsZVJlY29y
ZDsKKyAgICByZXR1cm4gbV9tb2R1bGVSZWNvcmQuZ2V0KCk7CiB9CiAKIH0gLy8gbmFtZXNwYWNl
IEpTQwpkaWZmIC0tZ2l0IGEvU291cmNlL0phdmFTY3JpcHRDb3JlL3BhcnNlci9Nb2R1bGVBbmFs
eXplci5oIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL3BhcnNlci9Nb2R1bGVBbmFseXplci5oCmlu
ZGV4IDAyNzY0ODQ3NjUwYjMwMjRmZDJhOGMzNzIyZTczYTc0N2I5NjNjYjYuLjMzOTBiN2JhZjFm
NjVlODEwYzExMzliNmRlYzQ2NTk0NmI4OWQ0OTIgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9KYXZhU2Ny
aXB0Q29yZS9wYXJzZXIvTW9kdWxlQW5hbHl6ZXIuaAorKysgYi9Tb3VyY2UvSmF2YVNjcmlwdENv
cmUvcGFyc2VyL01vZHVsZUFuYWx5emVyLmgKQEAgLTI2LDIwICsyNiwyMiBAQAogI2lmbmRlZiBN
b2R1bGVBbmFseXplcl9oCiAjZGVmaW5lIE1vZHVsZUFuYWx5emVyX2gKIAotI2luY2x1ZGUgIk1v
ZHVsZVJlY29yZC5oIgogI2luY2x1ZGUgIk5vZGVzLmgiCiAKIG5hbWVzcGFjZSBKU0MgewogCitj
bGFzcyBKU01vZHVsZVJlY29yZDsKKwogY2xhc3MgTW9kdWxlQW5hbHl6ZXIgeworICAgIFdURl9N
QUtFX05PTkNPUFlBQkxFKE1vZHVsZUFuYWx5emVyKTsKIHB1YmxpYzoKLSAgICBNb2R1bGVBbmFs
eXplcihWTSYsIGNvbnN0IFZhcmlhYmxlRW52aXJvbm1lbnQmIGRlY2xhcmVkVmFyaWFibGVzLCBj
b25zdCBWYXJpYWJsZUVudmlyb25tZW50JiBsZXhpY2FsVmFyaWFibGVzKTsKKyAgICBNb2R1bGVB
bmFseXplcihFeGVjU3RhdGUqLCBjb25zdCBWYXJpYWJsZUVudmlyb25tZW50JiBkZWNsYXJlZFZh
cmlhYmxlcywgY29uc3QgVmFyaWFibGVFbnZpcm9ubWVudCYgbGV4aWNhbFZhcmlhYmxlcyk7CiAK
LSAgICBSZWY8TW9kdWxlUmVjb3JkPiBhbmFseXplKE1vZHVsZVByb2dyYW1Ob2RlJik7CisgICAg
SlNNb2R1bGVSZWNvcmQqIGFuYWx5emUoTW9kdWxlUHJvZ3JhbU5vZGUmKTsKIAogICAgIFZNJiB2
bSgpIHsgcmV0dXJuICptX3ZtOyB9CiAKLSAgICBNb2R1bGVSZWNvcmQmIG1vZHVsZVJlY29yZCgp
IHsgcmV0dXJuICptX21vZHVsZVJlY29yZDsgfQorICAgIEpTTW9kdWxlUmVjb3JkKiBtb2R1bGVS
ZWNvcmQoKSB7IHJldHVybiBtX21vZHVsZVJlY29yZC5nZXQoKTsgfQogCiAgICAgdm9pZCBkZWNs
YXJlRXhwb3J0QWxpYXMoY29uc3QgSWRlbnRpZmllciYgbG9jYWxOYW1lLCBjb25zdCBJZGVudGlm
aWVyJiBleHBvcnROYW1lKTsKIApAQCAtNTEsNyArNTMsNyBAQCBjbGFzcyBNb2R1bGVBbmFseXpl
ciB7CiAgICAgSWRlbnRpZmllciBleHBvcnRlZEJpbmRpbmcoY29uc3QgUmVmUHRyPFVuaXF1ZWRT
dHJpbmdJbXBsPiYgaWRlbnQpOwogCiAgICAgVk0qIG1fdm07Ci0gICAgUmVmUHRyPE1vZHVsZVJl
Y29yZD4gbV9tb2R1bGVSZWNvcmQ7CisgICAgU3Ryb25nPEpTTW9kdWxlUmVjb3JkPiBtX21vZHVs
ZVJlY29yZDsKICAgICBWYXJpYWJsZUVudmlyb25tZW50IG1fZGVjbGFyZWRWYXJpYWJsZXM7CiAg
ICAgVmFyaWFibGVFbnZpcm9ubWVudCBtX2xleGljYWxWYXJpYWJsZXM7CiAgICAgSWRlbnRpZmll
ckFsaWFzTWFwIG1fYWxpYXNNYXA7CmRpZmYgLS1naXQgYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUv
cGFyc2VyL01vZHVsZVJlY29yZC5jcHAgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvcGFyc2VyL01v
ZHVsZVJlY29yZC5jcHAKZGVsZXRlZCBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IGVjOTczNTY4YmVj
OGEwYjE1MzMzMmY0ODc1ZjllZmUxMzc4MmVjOGEuLjAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAKLS0tIGEvU291cmNlL0phdmFTY3JpcHRDb3JlL3BhcnNlci9Nb2R1bGVS
ZWNvcmQuY3BwCisrKyAvZGV2L251bGwKQEAgLTEsOTUgKzAsMCBAQAotLyoKLSAqIENvcHlyaWdo
dCAoQykgMjAxNSBBcHBsZSBJbmMuIEFsbCByaWdodHMgcmVzZXJ2ZWQuCi0gKgotICogUmVkaXN0
cmlidXRpb24gYW5kIHVzZSBpbiBzb3VyY2UgYW5kIGJpbmFyeSBmb3Jtcywgd2l0aCBvciB3aXRo
b3V0Ci0gKiBtb2RpZmljYXRpb24sIGFyZSBwZXJtaXR0ZWQgcHJvdmlkZWQgdGhhdCB0aGUgZm9s
bG93aW5nIGNvbmRpdGlvbnMKLSAqIGFyZSBtZXQ6Ci0gKiAxLiBSZWRpc3RyaWJ1dGlvbnMgb2Yg
c291cmNlIGNvZGUgbXVzdCByZXRhaW4gdGhlIGFib3ZlIGNvcHlyaWdodAotICogICAgbm90aWNl
LCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyLgot
ICogMi4gUmVkaXN0cmlidXRpb25zIGluIGJpbmFyeSBmb3JtIG11c3QgcmVwcm9kdWNlIHRoZSBh
Ym92ZSBjb3B5cmlnaHQKLSAqICAgIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5k
IHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lciBpbiB0aGUKLSAqICAgIGRvY3VtZW50YXRpb24gYW5k
L29yIG90aGVyIG1hdGVyaWFscyBwcm92aWRlZCB3aXRoIHRoZSBkaXN0cmlidXRpb24uCi0gKgot
ICogVEhJUyBTT0ZUV0FSRSBJUyBQUk9WSURFRCBCWSBBUFBMRSBJTkMuIGBgQVMgSVMnJyBBTkQg
QU5ZCi0gKiBFWFBSRVNTIE9SIElNUExJRUQgV0FSUkFOVElFUywgSU5DTFVESU5HLCBCVVQgTk9U
IExJTUlURUQgVE8sIFRIRQotICogSU1QTElFRCBXQVJSQU5USUVTIE9GIE1FUkNIQU5UQUJJTElU
WSBBTkQgRklUTkVTUyBGT1IgQSBQQVJUSUNVTEFSCi0gKiBQVVJQT1NFIEFSRSBESVNDTEFJTUVE
LiAgSU4gTk8gRVZFTlQgU0hBTEwgQVBQTEUgSU5DLiBPUgotICogQ09OVFJJQlVUT1JTIEJFIExJ
QUJMRSBGT1IgQU5ZIERJUkVDVCwgSU5ESVJFQ1QsIElOQ0lERU5UQUwsIFNQRUNJQUwsCi0gKiBF
WEVNUExBUlksIE9SIENPTlNFUVVFTlRJQUwgREFNQUdFUyAoSU5DTFVESU5HLCBCVVQgTk9UIExJ
TUlURUQgVE8sCi0gKiBQUk9DVVJFTUVOVCBPRiBTVUJTVElUVVRFIEdPT0RTIE9SIFNFUlZJQ0VT
OyBMT1NTIE9GIFVTRSwgREFUQSwgT1IKLSAqIFBST0ZJVFM7IE9SIEJVU0lORVNTIElOVEVSUlVQ
VElPTikgSE9XRVZFUiBDQVVTRUQgQU5EIE9OIEFOWSBUSEVPUlkKLSAqIE9GIExJQUJJTElUWSwg
V0hFVEhFUiBJTiBDT05UUkFDVCwgU1RSSUNUIExJQUJJTElUWSwgT1IgVE9SVAotICogKElOQ0xV
RElORyBORUdMSUdFTkNFIE9SIE9USEVSV0lTRSkgQVJJU0lORyBJTiBBTlkgV0FZIE9VVCBPRiBU
SEUgVVNFCi0gKiBPRiBUSElTIFNPRlRXQVJFLCBFVkVOIElGIEFEVklTRUQgT0YgVEhFIFBPU1NJ
QklMSVRZIE9GIFNVQ0ggREFNQUdFLiAKLSAqLwotCi0jaW5jbHVkZSAiY29uZmlnLmgiCi0jaW5j
bHVkZSAiTW9kdWxlUmVjb3JkLmgiCi0KLSNpbmNsdWRlICJJZGVudGlmaWVySW5saW5lcy5oIgot
Ci1uYW1lc3BhY2UgSlNDIHsKLQotCi1hdXRvIE1vZHVsZVJlY29yZDo6RXhwb3J0RW50cnk6OmNy
ZWF0ZUxvY2FsKGNvbnN0IElkZW50aWZpZXImIGV4cG9ydE5hbWUsIGNvbnN0IElkZW50aWZpZXIm
IGxvY2FsTmFtZSwgY29uc3QgVmFyaWFibGVFbnZpcm9ubWVudEVudHJ5JiB2YXJpYWJsZSkgLT4g
RXhwb3J0RW50cnkKLXsKLSAgICByZXR1cm4gRXhwb3J0RW50cnkgeyBUeXBlOjpMb2NhbCwgZXhw
b3J0TmFtZSwgSWRlbnRpZmllcigpLCBJZGVudGlmaWVyKCksIGxvY2FsTmFtZSwgdmFyaWFibGUg
fTsKLX0KLQotYXV0byBNb2R1bGVSZWNvcmQ6OkV4cG9ydEVudHJ5OjpjcmVhdGVOYW1lc3BhY2Uo
Y29uc3QgSWRlbnRpZmllciYgZXhwb3J0TmFtZSwgY29uc3QgSWRlbnRpZmllciYgbW9kdWxlTmFt
ZSkgLT4gRXhwb3J0RW50cnkKLXsKLSAgICByZXR1cm4gRXhwb3J0RW50cnkgeyBUeXBlOjpOYW1l
c3BhY2UsIGV4cG9ydE5hbWUsIG1vZHVsZU5hbWUsIElkZW50aWZpZXIoKSwgSWRlbnRpZmllcigp
LCBWYXJpYWJsZUVudmlyb25tZW50RW50cnkoKSB9OwotfQotCi1hdXRvIE1vZHVsZVJlY29yZDo6
RXhwb3J0RW50cnk6OmNyZWF0ZUluZGlyZWN0KGNvbnN0IElkZW50aWZpZXImIGV4cG9ydE5hbWUs
IGNvbnN0IElkZW50aWZpZXImIGltcG9ydE5hbWUsIGNvbnN0IElkZW50aWZpZXImIG1vZHVsZU5h
bWUpIC0+IEV4cG9ydEVudHJ5Ci17Ci0gICAgcmV0dXJuIEV4cG9ydEVudHJ5IHsgVHlwZTo6SW5k
aXJlY3QsIGV4cG9ydE5hbWUsIG1vZHVsZU5hbWUsIGltcG9ydE5hbWUsIElkZW50aWZpZXIoKSwg
VmFyaWFibGVFbnZpcm9ubWVudEVudHJ5KCkgfTsKLX0KLQotc3RhdGljIFN0cmluZyBwcmludGFi
bGVOYW1lKGNvbnN0IFJlZlB0cjxVbmlxdWVkU3RyaW5nSW1wbD4mIHVpZCkKLXsKLSAgICBpZiAo
dWlkLT5pc1N5bWJvbCgpKQotICAgICAgICByZXR1cm4gdWlkLmdldCgpOwotICAgIHJldHVybiBX
VEY6Om1ha2VTdHJpbmcoIiciLCBTdHJpbmcodWlkLmdldCgpKSwgIiciKTsKLX0KLQotc3RhdGlj
IFN0cmluZyBwcmludGFibGVOYW1lKGNvbnN0IElkZW50aWZpZXImIGlkZW50KQotewotICAgIHJl
dHVybiBwcmludGFibGVOYW1lKGlkZW50LmltcGwoKSk7Ci19Ci0KLQotdm9pZCBNb2R1bGVSZWNv
cmQ6OmR1bXAoKQotewotICAgIGRhdGFMb2coIlxuQW5hbHl6aW5nIE1vZHVsZVJlY29yZFxuIik7
Ci0KLSAgICBkYXRhTG9nKCIgICAgRGVwZW5kZW5jaWVzOiAiLCBtX3JlcXVlc3RlZE1vZHVsZXMu
c2l6ZSgpLCAiIG1vZHVsZXNcbiIpOwotICAgIGZvciAoY29uc3QgYXV0byYgbW9kdWxlTmFtZSA6
IG1fcmVxdWVzdGVkTW9kdWxlcykKLSAgICAgICAgZGF0YUxvZygiICAgICAgbW9kdWxlKCIsIHBy
aW50YWJsZU5hbWUobW9kdWxlTmFtZSksICIpXG4iKTsKLQotICAgIGRhdGFMb2coIiAgICBJbXBv
cnQ6ICIsIG1faW1wb3J0RW50cmllcy5zaXplKCksICIgZW50cmllc1xuIik7Ci0gICAgZm9yIChj
b25zdCBhdXRvJiBwYWlyIDogbV9pbXBvcnRFbnRyaWVzKQotICAgICAgICBkYXRhTG9nKCIgICAg
ICBpbXBvcnQoIiwgcHJpbnRhYmxlTmFtZShwYWlyLnZhbHVlLmltcG9ydE5hbWUpLCAiKSwgbG9j
YWwoIiwgcHJpbnRhYmxlTmFtZShwYWlyLnZhbHVlLmxvY2FsTmFtZSksICIpLCBtb2R1bGUoIiwg
cHJpbnRhYmxlTmFtZShwYWlyLnZhbHVlLm1vZHVsZVJlcXVlc3QpLCAiKVxuIik7Ci0KLSAgICBk
YXRhTG9nKCIgICAgRXhwb3J0OiAiLCBtX2V4cG9ydEVudHJpZXMuc2l6ZSgpLCAiIGVudHJpZXNc
biIpOwotICAgIGZvciAoY29uc3QgYXV0byYgcGFpciA6IG1fZXhwb3J0RW50cmllcykgewotICAg
ICAgICBjb25zdCBFeHBvcnRFbnRyeSYgZW50cnkgPSBwYWlyLnZhbHVlOwotICAgICAgICBzd2l0
Y2ggKGVudHJ5LnR5cGUpIHsKLSAgICAgICAgY2FzZSBFeHBvcnRFbnRyeTo6VHlwZTo6TG9jYWw6
Ci0gICAgICAgICAgICBkYXRhTG9nKCIgICAgICBbTG9jYWxdICIsICJleHBvcnQoIiwgcHJpbnRh
YmxlTmFtZShlbnRyeS5leHBvcnROYW1lKSwgIiksIGxvY2FsKCIsIHByaW50YWJsZU5hbWUoZW50
cnkubG9jYWxOYW1lKSwgIilcbiIpOwotICAgICAgICAgICAgYnJlYWs7Ci0KLSAgICAgICAgY2Fz
ZSBFeHBvcnRFbnRyeTo6VHlwZTo6TmFtZXNwYWNlOgotICAgICAgICAgICAgZGF0YUxvZygiICAg
ICAgW05hbWVzcGFjZV0gIiwgImV4cG9ydCgiLCBwcmludGFibGVOYW1lKGVudHJ5LmV4cG9ydE5h
bWUpLCAiKSwgbW9kdWxlKCIsIHByaW50YWJsZU5hbWUoZW50cnkubW9kdWxlTmFtZSksICIpXG4i
KTsKLSAgICAgICAgICAgIGJyZWFrOwotCi0gICAgICAgIGNhc2UgRXhwb3J0RW50cnk6OlR5cGU6
OkluZGlyZWN0OgotICAgICAgICAgICAgZGF0YUxvZygiICAgICAgW0luZGlyZWN0XSAiLCAiZXhw
b3J0KCIsIHByaW50YWJsZU5hbWUoZW50cnkuZXhwb3J0TmFtZSksICIpLCBpbXBvcnQoIiwgcHJp
bnRhYmxlTmFtZShlbnRyeS5pbXBvcnROYW1lKSwgIiksIG1vZHVsZSgiLCBwcmludGFibGVOYW1l
KGVudHJ5Lm1vZHVsZU5hbWUpLCAiKVxuIik7Ci0gICAgICAgICAgICBicmVhazsKLSAgICAgICAg
fQotICAgIH0KLSAgICBmb3IgKGNvbnN0IGF1dG8mIG1vZHVsZU5hbWUgOiBtX3N0YXJFeHBvcnRF
bnRyaWVzKQotICAgICAgICBkYXRhTG9nKCIgICAgICBbU3Rhcl0gbW9kdWxlKCIsIHByaW50YWJs
ZU5hbWUobW9kdWxlTmFtZS5nZXQoKSksICIpXG4iKTsKLX0KLQotfSAvLyBuYW1lc3BhY2UgSlND
CmRpZmYgLS1naXQgYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvcGFyc2VyL01vZHVsZVJlY29yZC5o
IGIvU291cmNlL0phdmFTY3JpcHRDb3JlL3BhcnNlci9Nb2R1bGVSZWNvcmQuaApkZWxldGVkIGZp
bGUgbW9kZSAxMDA2NDQKaW5kZXggZWYwODFjMDNiMGE1YmRlNmYxNTU2MjlkZjNmNTA2Y2FmM2Ni
MTcxNC4uMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMAotLS0gYS9Tb3Vy
Y2UvSmF2YVNjcmlwdENvcmUvcGFyc2VyL01vZHVsZVJlY29yZC5oCisrKyAvZGV2L251bGwKQEAg
LTEsMTI4ICswLDAgQEAKLS8qCi0gKiBDb3B5cmlnaHQgKEMpIDIwMTUgQXBwbGUgSW5jLiBBbGwg
cmlnaHRzIHJlc2VydmVkLgotICoKLSAqIFJlZGlzdHJpYnV0aW9uIGFuZCB1c2UgaW4gc291cmNl
IGFuZCBiaW5hcnkgZm9ybXMsIHdpdGggb3Igd2l0aG91dAotICogbW9kaWZpY2F0aW9uLCBhcmUg
cGVybWl0dGVkIHByb3ZpZGVkIHRoYXQgdGhlIGZvbGxvd2luZyBjb25kaXRpb25zCi0gKiBhcmUg
bWV0OgotICogMS4gUmVkaXN0cmlidXRpb25zIG9mIHNvdXJjZSBjb2RlIG11c3QgcmV0YWluIHRo
ZSBhYm92ZSBjb3B5cmlnaHQKLSAqICAgIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMg
YW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lci4KLSAqIDIuIFJlZGlzdHJpYnV0aW9ucyBpbiBi
aW5hcnkgZm9ybSBtdXN0IHJlcHJvZHVjZSB0aGUgYWJvdmUgY29weXJpZ2h0Ci0gKiAgICBub3Rp
Y2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIg
aW4gdGhlCi0gKiAgICBkb2N1bWVudGF0aW9uIGFuZC9vciBvdGhlciBtYXRlcmlhbHMgcHJvdmlk
ZWQgd2l0aCB0aGUgZGlzdHJpYnV0aW9uLgotICoKLSAqIFRISVMgU09GVFdBUkUgSVMgUFJPVklE
RUQgQlkgQVBQTEUgSU5DLiBgYEFTIElTJycgQU5EIEFOWQotICogRVhQUkVTUyBPUiBJTVBMSUVE
IFdBUlJBTlRJRVMsIElOQ0xVRElORywgQlVUIE5PVCBMSU1JVEVEIFRPLCBUSEUKLSAqIElNUExJ
RUQgV0FSUkFOVElFUyBPRiBNRVJDSEFOVEFCSUxJVFkgQU5EIEZJVE5FU1MgRk9SIEEgUEFSVElD
VUxBUgotICogUFVSUE9TRSBBUkUgRElTQ0xBSU1FRC4gIElOIE5PIEVWRU5UIFNIQUxMIEFQUExF
IElOQy4gT1IKLSAqIENPTlRSSUJVVE9SUyBCRSBMSUFCTEUgRk9SIEFOWSBESVJFQ1QsIElORElS
RUNULCBJTkNJREVOVEFMLCBTUEVDSUFMLAotICogRVhFTVBMQVJZLCBPUiBDT05TRVFVRU5USUFM
IERBTUFHRVMgKElOQ0xVRElORywgQlVUIE5PVCBMSU1JVEVEIFRPLAotICogUFJPQ1VSRU1FTlQg
T0YgU1VCU1RJVFVURSBHT09EUyBPUiBTRVJWSUNFUzsgTE9TUyBPRiBVU0UsIERBVEEsIE9SCi0g
KiBQUk9GSVRTOyBPUiBCVVNJTkVTUyBJTlRFUlJVUFRJT04pIEhPV0VWRVIgQ0FVU0VEIEFORCBP
TiBBTlkgVEhFT1JZCi0gKiBPRiBMSUFCSUxJVFksIFdIRVRIRVIgSU4gQ09OVFJBQ1QsIFNUUklD
VCBMSUFCSUxJVFksIE9SIFRPUlQKLSAqIChJTkNMVURJTkcgTkVHTElHRU5DRSBPUiBPVEhFUldJ
U0UpIEFSSVNJTkcgSU4gQU5ZIFdBWSBPVVQgT0YgVEhFIFVTRQotICogT0YgVEhJUyBTT0ZUV0FS
RSwgRVZFTiBJRiBBRFZJU0VEIE9GIFRIRSBQT1NTSUJJTElUWSBPRiBTVUNIIERBTUFHRS4KLSAq
LwotCi0jaWZuZGVmIE1vZHVsZVJlY29yZF9oCi0jZGVmaW5lIE1vZHVsZVJlY29yZF9oCi0KLSNp
bmNsdWRlICJOb2Rlcy5oIgotI2luY2x1ZGUgPHd0Zi9IYXNoTWFwLmg+Ci0jaW5jbHVkZSA8d3Rm
L0xpc3RIYXNoU2V0Lmg+Ci0KLW5hbWVzcGFjZSBKU0MgewotCi0vLyBCYXNlZCBvbiB0aGUgU291
cmNlIFRleHQgTW9kdWxlIFJlY29yZAotLy8gaHR0cDovL3d3dy5lY21hLWludGVybmF0aW9uYWwu
b3JnL2VjbWEtMjYyLzYuMC8jc2VjLXNvdXJjZS10ZXh0LW1vZHVsZS1yZWNvcmRzCi1jbGFzcyBN
b2R1bGVSZWNvcmQgOiBwdWJsaWMgUmVmQ291bnRlZDxNb2R1bGVSZWNvcmQ+IHsKLXB1YmxpYzoK
LSAgICBzdHJ1Y3QgRXhwb3J0RW50cnkgewotICAgICAgICBlbnVtIGNsYXNzIFR5cGUgewotICAg
ICAgICAgICAgTG9jYWwsCi0gICAgICAgICAgICBOYW1lc3BhY2UsCi0gICAgICAgICAgICBJbmRp
cmVjdAotICAgICAgICB9OwotCi0gICAgICAgIHN0YXRpYyBFeHBvcnRFbnRyeSBjcmVhdGVMb2Nh
bChjb25zdCBJZGVudGlmaWVyJiBleHBvcnROYW1lLCBjb25zdCBJZGVudGlmaWVyJiBsb2NhbE5h
bWUsIGNvbnN0IFZhcmlhYmxlRW52aXJvbm1lbnRFbnRyeSYpOwotICAgICAgICBzdGF0aWMgRXhw
b3J0RW50cnkgY3JlYXRlTmFtZXNwYWNlKGNvbnN0IElkZW50aWZpZXImIGV4cG9ydE5hbWUsIGNv
bnN0IElkZW50aWZpZXImIG1vZHVsZU5hbWUpOwotICAgICAgICBzdGF0aWMgRXhwb3J0RW50cnkg
Y3JlYXRlSW5kaXJlY3QoY29uc3QgSWRlbnRpZmllciYgZXhwb3J0TmFtZSwgY29uc3QgSWRlbnRp
ZmllciYgaW1wb3J0TmFtZSwgY29uc3QgSWRlbnRpZmllciYgbW9kdWxlTmFtZSk7Ci0KLSAgICAg
ICAgVHlwZSB0eXBlOwotICAgICAgICBJZGVudGlmaWVyIGV4cG9ydE5hbWU7Ci0gICAgICAgIElk
ZW50aWZpZXIgbW9kdWxlTmFtZTsKLSAgICAgICAgSWRlbnRpZmllciBpbXBvcnROYW1lOwotICAg
ICAgICBJZGVudGlmaWVyIGxvY2FsTmFtZTsKLSAgICAgICAgVmFyaWFibGVFbnZpcm9ubWVudEVu
dHJ5IHZhcmlhYmxlOwotICAgIH07Ci0KLSAgICBzdHJ1Y3QgSW1wb3J0RW50cnkgewotICAgICAg
ICBJZGVudGlmaWVyIG1vZHVsZVJlcXVlc3Q7Ci0gICAgICAgIElkZW50aWZpZXIgaW1wb3J0TmFt
ZTsKLSAgICAgICAgSWRlbnRpZmllciBsb2NhbE5hbWU7Ci0KLSAgICAgICAgYm9vbCBpc05hbWVz
cGFjZShWTSYgdm0pIGNvbnN0Ci0gICAgICAgIHsKLSAgICAgICAgICAgIHJldHVybiBpbXBvcnRO
YW1lID09IHZtLnByb3BlcnR5TmFtZXMtPnRpbWVzSWRlbnRpZmllcjsKLSAgICAgICAgfQotICAg
IH07Ci0KLSAgICB0eXBlZGVmIFdURjo6TGlzdEhhc2hTZXQ8UmVmUHRyPFVuaXF1ZWRTdHJpbmdJ
bXBsPiwgSWRlbnRpZmllclJlcEhhc2g+IE9yZGVyZWRJZGVudGlmaWVyU2V0OwotICAgIHR5cGVk
ZWYgSGFzaE1hcDxSZWZQdHI8VW5pcXVlZFN0cmluZ0ltcGw+LCBJbXBvcnRFbnRyeSwgSWRlbnRp
ZmllclJlcEhhc2gsIEhhc2hUcmFpdHM8UmVmUHRyPFVuaXF1ZWRTdHJpbmdJbXBsPj4+IEltcG9y
dE1hcDsKLSAgICB0eXBlZGVmIEhhc2hNYXA8UmVmUHRyPFVuaXF1ZWRTdHJpbmdJbXBsPiwgRXhw
b3J0RW50cnksIElkZW50aWZpZXJSZXBIYXNoLCBIYXNoVHJhaXRzPFJlZlB0cjxVbmlxdWVkU3Ry
aW5nSW1wbD4+PiBFeHBvcnRNYXA7Ci0KLSAgICBzdGF0aWMgUmVmPE1vZHVsZVJlY29yZD4gY3Jl
YXRlKCkKLSAgICB7Ci0gICAgICAgIHJldHVybiBhZG9wdFJlZigqbmV3IE1vZHVsZVJlY29yZCk7
Ci0gICAgfQotCi0gICAgdm9pZCBhcHBlbmRSZXF1ZXN0ZWRNb2R1bGUoY29uc3QgSWRlbnRpZmll
ciYpOwotICAgIHZvaWQgYWRkU3RhckV4cG9ydEVudHJ5KGNvbnN0IElkZW50aWZpZXImKTsKLSAg
ICB2b2lkIGFkZEltcG9ydEVudHJ5KGNvbnN0IEltcG9ydEVudHJ5Jik7Ci0gICAgdm9pZCBhZGRF
eHBvcnRFbnRyeShjb25zdCBFeHBvcnRFbnRyeSYpOwotCi0gICAgY29uc3QgSW1wb3J0RW50cnkm
IGxvb2tVcEltcG9ydEVudHJ5KGNvbnN0IFJlZlB0cjxVbmlxdWVkU3RyaW5nSW1wbD4mIGxvY2Fs
TmFtZSk7Ci0KLSAgICB2b2lkIGR1bXAoKTsKLQotcHJpdmF0ZToKLSAgICAvLyBNYXAgbG9jYWxO
YW1lIC0+IEltcG9ydEVudHJ5LgotICAgIEltcG9ydE1hcCBtX2ltcG9ydEVudHJpZXM7Ci0KLSAg
ICAvLyBNYXAgZXhwb3J0TmFtZSAtPiBFeHBvcnRFbnRyeS4KLSAgICBFeHBvcnRNYXAgbV9leHBv
cnRFbnRyaWVzOwotCi0gICAgSWRlbnRpZmllclNldCBtX3N0YXJFeHBvcnRFbnRyaWVzOwotCi0g
ICAgLy8gU2F2ZSB0aGUgb2NjdXJyZW5jZSBvcmRlciBzaW5jZSB0aGUgbW9kdWxlIGxvYWRlciBs
b2FkcyBhbmQgcnVucyB0aGUgbW9kdWxlcyBpbiB0aGlzIG9yZGVyLgotICAgIC8vIGh0dHA6Ly93
d3cuZWNtYS1pbnRlcm5hdGlvbmFsLm9yZy9lY21hLTI2Mi82LjAvI3NlYy1tb2R1bGVldmFsdWF0
aW9uCi0gICAgT3JkZXJlZElkZW50aWZpZXJTZXQgbV9yZXF1ZXN0ZWRNb2R1bGVzOwotfTsKLQot
aW5saW5lIHZvaWQgTW9kdWxlUmVjb3JkOjphcHBlbmRSZXF1ZXN0ZWRNb2R1bGUoY29uc3QgSWRl
bnRpZmllciYgbW9kdWxlTmFtZSkKLXsKLSAgICBtX3JlcXVlc3RlZE1vZHVsZXMuYWRkKG1vZHVs
ZU5hbWUuaW1wbCgpKTsKLX0KLQotaW5saW5lIHZvaWQgTW9kdWxlUmVjb3JkOjphZGRJbXBvcnRF
bnRyeShjb25zdCBJbXBvcnRFbnRyeSYgZW50cnkpCi17Ci0gICAgbV9pbXBvcnRFbnRyaWVzLmFk
ZChlbnRyeS5sb2NhbE5hbWUuaW1wbCgpLCBlbnRyeSk7Ci19Ci0KLWlubGluZSB2b2lkIE1vZHVs
ZVJlY29yZDo6YWRkRXhwb3J0RW50cnkoY29uc3QgRXhwb3J0RW50cnkmIGVudHJ5KQotewotICAg
IG1fZXhwb3J0RW50cmllcy5hZGQoZW50cnkuZXhwb3J0TmFtZS5pbXBsKCksIGVudHJ5KTsKLX0K
LQotaW5saW5lIHZvaWQgTW9kdWxlUmVjb3JkOjphZGRTdGFyRXhwb3J0RW50cnkoY29uc3QgSWRl
bnRpZmllciYgbW9kdWxlTmFtZSkKLXsKLSAgICBtX3N0YXJFeHBvcnRFbnRyaWVzLmFkZChtb2R1
bGVOYW1lLmltcGwoKSk7Ci19Ci0KLWlubGluZSBhdXRvIE1vZHVsZVJlY29yZDo6bG9va1VwSW1w
b3J0RW50cnkoY29uc3QgUmVmUHRyPFVuaXF1ZWRTdHJpbmdJbXBsPiYgbG9jYWxOYW1lKSAtPiBj
b25zdCBJbXBvcnRFbnRyeSYKLXsKLSAgICByZXR1cm4gKCptX2ltcG9ydEVudHJpZXMuZmluZChs
b2NhbE5hbWUpKS52YWx1ZTsKLX0KLQotfSAvLyBuYW1lc3BhY2UgSlNDCi0KLSNlbmRpZiAvLyBN
b2R1bGVSZWNvcmRfaApkaWZmIC0tZ2l0IGEvU291cmNlL0phdmFTY3JpcHRDb3JlL3BhcnNlci9O
b2Rlcy5oIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL3BhcnNlci9Ob2Rlcy5oCmluZGV4IGMwMmI0
MmNlY2JhZGExNmVlOWJkZTMzNGY1MmQ5MGFhODg1Y2NjZmEuLjkxOTEzNGMxYjVhNzJlN2ZiYjc0
ODE0ODZhZTNkZWJjNWRkMDRmNDEgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9w
YXJzZXIvTm9kZXMuaAorKysgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvcGFyc2VyL05vZGVzLmgK
QEAgLTc5LDggKzc5LDYgQEAgbmFtZXNwYWNlIEpTQyB7CiAgICAgfTsKICAgICBpbmxpbmUgRmFs
bFRocm91Z2hNb2RlIGludmVydChGYWxsVGhyb3VnaE1vZGUgZmFsbFRocm91Z2hNb2RlKSB7IHJl
dHVybiBzdGF0aWNfY2FzdDxGYWxsVGhyb3VnaE1vZGU+KCFmYWxsVGhyb3VnaE1vZGUpOyB9CiAK
LSAgICB0eXBlZGVmIEhhc2hTZXQ8UmVmUHRyPFVuaXF1ZWRTdHJpbmdJbXBsPiwgSWRlbnRpZmll
clJlcEhhc2g+IElkZW50aWZpZXJTZXQ7Ci0KICAgICBuYW1lc3BhY2UgRGVjbGFyYXRpb25TdGFj
a3MgewogICAgICAgICB0eXBlZGVmIFZlY3RvcjxGdW5jdGlvbk1ldGFkYXRhTm9kZSo+IEZ1bmN0
aW9uU3RhY2s7CiAgICAgfQpkaWZmIC0tZ2l0IGEvU291cmNlL0phdmFTY3JpcHRDb3JlL3BhcnNl
ci9Ob2Rlc0FuYWx5emVNb2R1bGUuY3BwIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL3BhcnNlci9O
b2Rlc0FuYWx5emVNb2R1bGUuY3BwCmluZGV4IDYzM2RlYWVjZTZhZjY2NjU5ZDBlNzZhYzFhYTQx
NjE1OWFiNzVhMzUuLmVkNDYxZGEyNjgzNGZiMzNjOTQ0MDIxNGE5OTVlNDVjOGE4MTk0NTUgMTAw
NjQ0Ci0tLSBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9wYXJzZXIvTm9kZXNBbmFseXplTW9kdWxl
LmNwcAorKysgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvcGFyc2VyL05vZGVzQW5hbHl6ZU1vZHVs
ZS5jcHAKQEAgLTI3LDggKzI3LDkgQEAKICNpbmNsdWRlICJOb2Rlcy5oIgogI2luY2x1ZGUgIk5v
ZGVDb25zdHJ1Y3RvcnMuaCIKIAorI2luY2x1ZGUgIkpTQ0pTVmFsdWVJbmxpbmVzLmgiCisjaW5j
bHVkZSAiSlNNb2R1bGVSZWNvcmQuaCIKICNpbmNsdWRlICJNb2R1bGVBbmFseXplci5oIgotI2lu
Y2x1ZGUgIk1vZHVsZVJlY29yZC5oIgogCiBuYW1lc3BhY2UgSlNDIHsKIApAQCAtNDgsOSArNDks
OSBAQCB2b2lkIFNvdXJjZUVsZW1lbnRzOjphbmFseXplTW9kdWxlKE1vZHVsZUFuYWx5emVyJiBh
bmFseXplcikKIAogdm9pZCBJbXBvcnREZWNsYXJhdGlvbk5vZGU6OmFuYWx5emVNb2R1bGUoTW9k
dWxlQW5hbHl6ZXImIGFuYWx5emVyKQogewotICAgIGFuYWx5emVyLm1vZHVsZVJlY29yZCgpLmFw
cGVuZFJlcXVlc3RlZE1vZHVsZShtX21vZHVsZU5hbWUtPm1vZHVsZU5hbWUoKSk7CisgICAgYW5h
bHl6ZXIubW9kdWxlUmVjb3JkKCktPmFwcGVuZFJlcXVlc3RlZE1vZHVsZShtX21vZHVsZU5hbWUt
Pm1vZHVsZU5hbWUoKSk7CiAgICAgZm9yIChhdXRvKiBzcGVjaWZpZXIgOiBtX3NwZWNpZmllckxp
c3QtPnNwZWNpZmllcnMoKSkgewotICAgICAgICBhbmFseXplci5tb2R1bGVSZWNvcmQoKS5hZGRJ
bXBvcnRFbnRyeShNb2R1bGVSZWNvcmQ6OkltcG9ydEVudHJ5IHsKKyAgICAgICAgYW5hbHl6ZXIu
bW9kdWxlUmVjb3JkKCktPmFkZEltcG9ydEVudHJ5KEpTTW9kdWxlUmVjb3JkOjpJbXBvcnRFbnRy
eSB7CiAgICAgICAgICAgICBtX21vZHVsZU5hbWUtPm1vZHVsZU5hbWUoKSwKICAgICAgICAgICAg
IHNwZWNpZmllci0+aW1wb3J0ZWROYW1lKCksCiAgICAgICAgICAgICBzcGVjaWZpZXItPmxvY2Fs
TmFtZSgpCkBAIC02MCw4ICs2MSw4IEBAIHZvaWQgSW1wb3J0RGVjbGFyYXRpb25Ob2RlOjphbmFs
eXplTW9kdWxlKE1vZHVsZUFuYWx5emVyJiBhbmFseXplcikKIAogdm9pZCBFeHBvcnRBbGxEZWNs
YXJhdGlvbk5vZGU6OmFuYWx5emVNb2R1bGUoTW9kdWxlQW5hbHl6ZXImIGFuYWx5emVyKQogewot
ICAgIGFuYWx5emVyLm1vZHVsZVJlY29yZCgpLmFwcGVuZFJlcXVlc3RlZE1vZHVsZShtX21vZHVs
ZU5hbWUtPm1vZHVsZU5hbWUoKSk7Ci0gICAgYW5hbHl6ZXIubW9kdWxlUmVjb3JkKCkuYWRkU3Rh
ckV4cG9ydEVudHJ5KG1fbW9kdWxlTmFtZS0+bW9kdWxlTmFtZSgpKTsKKyAgICBhbmFseXplci5t
b2R1bGVSZWNvcmQoKS0+YXBwZW5kUmVxdWVzdGVkTW9kdWxlKG1fbW9kdWxlTmFtZS0+bW9kdWxl
TmFtZSgpKTsKKyAgICBhbmFseXplci5tb2R1bGVSZWNvcmQoKS0+YWRkU3RhckV4cG9ydEVudHJ5
KG1fbW9kdWxlTmFtZS0+bW9kdWxlTmFtZSgpKTsKIH0KIAogdm9pZCBFeHBvcnREZWZhdWx0RGVj
bGFyYXRpb25Ob2RlOjphbmFseXplTW9kdWxlKE1vZHVsZUFuYWx5emVyJiBhbmFseXplcikKQEAg
LTc2LDcgKzc3LDcgQEAgdm9pZCBFeHBvcnRMb2NhbERlY2xhcmF0aW9uTm9kZTo6YW5hbHl6ZU1v
ZHVsZShNb2R1bGVBbmFseXplciYpCiB2b2lkIEV4cG9ydE5hbWVkRGVjbGFyYXRpb25Ob2RlOjph
bmFseXplTW9kdWxlKE1vZHVsZUFuYWx5emVyJiBhbmFseXplcikKIHsKICAgICBpZiAobV9tb2R1
bGVOYW1lKQotICAgICAgICBhbmFseXplci5tb2R1bGVSZWNvcmQoKS5hcHBlbmRSZXF1ZXN0ZWRN
b2R1bGUobV9tb2R1bGVOYW1lLT5tb2R1bGVOYW1lKCkpOworICAgICAgICBhbmFseXplci5tb2R1
bGVSZWNvcmQoKS0+YXBwZW5kUmVxdWVzdGVkTW9kdWxlKG1fbW9kdWxlTmFtZS0+bW9kdWxlTmFt
ZSgpKTsKIAogICAgIGZvciAoYXV0byogc3BlY2lmaWVyIDogbV9zcGVjaWZpZXJMaXN0LT5zcGVj
aWZpZXJzKCkpIHsKICAgICAgICAgaWYgKG1fbW9kdWxlTmFtZSkgewpAQCAtODQsNyArODUsNyBA
QCB2b2lkIEV4cG9ydE5hbWVkRGVjbGFyYXRpb25Ob2RlOjphbmFseXplTW9kdWxlKE1vZHVsZUFu
YWx5emVyJiBhbmFseXplcikKICAgICAgICAgICAgIC8vCiAgICAgICAgICAgICAvLyBJbiB0aGlz
IGNhc2UsIG5vIGxvY2FsIHZhcmlhYmxlIG5hbWVzIGFyZSBpbXBvcnRlZCBpbnRvIHRoZSBjdXJy
ZW50IG1vZHVsZS4KICAgICAgICAgICAgIC8vICJ2IiBpbmRpcmVjdGx5IHBvaW50cyB0aGUgYmlu
ZGluZyBpbiAibW9kIi4KLSAgICAgICAgICAgIGFuYWx5emVyLm1vZHVsZVJlY29yZCgpLmFkZEV4
cG9ydEVudHJ5KE1vZHVsZVJlY29yZDo6RXhwb3J0RW50cnk6OmNyZWF0ZUluZGlyZWN0KHNwZWNp
Zmllci0+ZXhwb3J0ZWROYW1lKCksIHNwZWNpZmllci0+bG9jYWxOYW1lKCksIG1fbW9kdWxlTmFt
ZS0+bW9kdWxlTmFtZSgpKSk7CisgICAgICAgICAgICBhbmFseXplci5tb2R1bGVSZWNvcmQoKS0+
YWRkRXhwb3J0RW50cnkoSlNNb2R1bGVSZWNvcmQ6OkV4cG9ydEVudHJ5OjpjcmVhdGVJbmRpcmVj
dChzcGVjaWZpZXItPmV4cG9ydGVkTmFtZSgpLCBzcGVjaWZpZXItPmxvY2FsTmFtZSgpLCBtX21v
ZHVsZU5hbWUtPm1vZHVsZU5hbWUoKSkpOwogICAgICAgICAgICAgY29udGludWU7CiAgICAgICAg
IH0KIApkaWZmIC0tZ2l0IGEvU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvQ29tbW9uSWRl
bnRpZmllcnMuY3BwIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvQ29tbW9uSWRlbnRp
ZmllcnMuY3BwCmluZGV4IGZjNmU2MmNhMDQ1ZTM2MjljZjJhZDNiNmJmY2I3M2Q1ZGRmZjBjZTEu
LmFhMzkyY2ViOGQxYTA2NWE5MjUyYWE3NzQ0ZGFiOGQ5YjE2MDU0ZTkgMTAwNjQ0Ci0tLSBhL1Nv
dXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL0NvbW1vbklkZW50aWZpZXJzLmNwcAorKysgYi9T
b3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9Db21tb25JZGVudGlmaWVycy5jcHAKQEAgLTY4
LDE0ICs2OCwxNCBAQCBib29sIENvbW1vbklkZW50aWZpZXJzOjppc1ByaXZhdGVOYW1lKGNvbnN0
IElkZW50aWZpZXImIGlkZW50KSBjb25zdAogICAgIHJldHVybiBtX2J1aWx0aW5OYW1lcy0+aXNQ
cml2YXRlTmFtZShpZGVudCk7CiB9CiAKLWNvbnN0IElkZW50aWZpZXIqIENvbW1vbklkZW50aWZp
ZXJzOjpnZXRQcml2YXRlTmFtZShjb25zdCBJZGVudGlmaWVyJiBpZGVudCkgY29uc3QKK2NvbnN0
IElkZW50aWZpZXIqIENvbW1vbklkZW50aWZpZXJzOjpsb29rVXBQcml2YXRlTmFtZShjb25zdCBJ
ZGVudGlmaWVyJiBpZGVudCkgY29uc3QKIHsKLSAgICByZXR1cm4gbV9idWlsdGluTmFtZXMtPmdl
dFByaXZhdGVOYW1lKGlkZW50KTsKKyAgICByZXR1cm4gbV9idWlsdGluTmFtZXMtPmxvb2tVcFBy
aXZhdGVOYW1lKGlkZW50KTsKIH0KICAgICAKLUlkZW50aWZpZXIgQ29tbW9uSWRlbnRpZmllcnM6
OmdldFB1YmxpY05hbWUoY29uc3QgSWRlbnRpZmllciYgaWRlbnQpIGNvbnN0CitJZGVudGlmaWVy
IENvbW1vbklkZW50aWZpZXJzOjpsb29rVXBQdWJsaWNOYW1lKGNvbnN0IElkZW50aWZpZXImIGlk
ZW50KSBjb25zdAogewotICAgIHJldHVybiBtX2J1aWx0aW5OYW1lcy0+Z2V0UHVibGljTmFtZShp
ZGVudCk7CisgICAgcmV0dXJuIG1fYnVpbHRpbk5hbWVzLT5sb29rVXBQdWJsaWNOYW1lKGlkZW50
KTsKIH0KIAogCmRpZmYgLS1naXQgYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9Db21t
b25JZGVudGlmaWVycy5oIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvQ29tbW9uSWRl
bnRpZmllcnMuaAppbmRleCAzNDQ3YjM5OGZkMDYxODA1OTA5ZTZmMDIyZTNkNjY1MjNiYWM0Njk4
Li5kNTlkNDQ0OGQyOTNhMTQ3NWMwMWI3YzdlNjZhZWY3OTYyZWIxMjZkIDEwMDY0NAotLS0gYS9T
b3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9Db21tb25JZGVudGlmaWVycy5oCisrKyBiL1Nv
dXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL0NvbW1vbklkZW50aWZpZXJzLmgKQEAgLTQyLDYg
KzQyLDcgQEAKICAgICBtYWNybyhJbmZpbml0eSkgXAogICAgIG1hY3JvKEludGwpIFwKICAgICBt
YWNybyhKU09OKSBcCisgICAgbWFjcm8oTG9hZGVyKSBcCiAgICAgbWFjcm8oTWFwKVwKICAgICBt
YWNybyhNYXBJdGVyYXRvcilcCiAgICAgbWFjcm8oTWF0aCkgXApAQCAtMjgxLDYgKzI4Miw3IEBA
CiAgICAgbWFjcm8oTnVtYmVyKSBcCiAgICAgbWFjcm8oQXJyYXkpIFwKICAgICBtYWNybyhTdHJp
bmcpIFwKKyAgICBtYWNybyhNYXApIFwKICAgICBtYWNybyhQcm9taXNlKSBcCiAgICAgbWFjcm8o
YWJzKSBcCiAgICAgbWFjcm8oZmxvb3IpIFwKQEAgLTMwMiw2ICszMDQsOCBAQAogICAgIG1hY3Jv
KGNhcGFiaWxpdGllcykgXAogICAgIG1hY3JvKHN0YXJEZWZhdWx0KSBcCiAgICAgbWFjcm8oSW5z
cGVjdG9ySW5zdHJ1bWVudGF0aW9uKSBcCisgICAgbWFjcm8oZ2V0KSBcCisgICAgbWFjcm8oc2V0
KSBcCiAKIAogbmFtZXNwYWNlIEpTQyB7CkBAIC0zNDgsOCArMzUyLDggQEAgbmFtZXNwYWNlIEpT
QyB7CiAgICAgICAgIGJvb2wgaXNQcml2YXRlTmFtZShVbmlxdWVkU3RyaW5nSW1wbCYgdWlkKSBj
b25zdDsKICAgICAgICAgYm9vbCBpc1ByaXZhdGVOYW1lKGNvbnN0IElkZW50aWZpZXImKSBjb25z
dDsKIAotICAgICAgICBjb25zdCBJZGVudGlmaWVyKiBnZXRQcml2YXRlTmFtZShjb25zdCBJZGVu
dGlmaWVyJikgY29uc3Q7Ci0gICAgICAgIElkZW50aWZpZXIgZ2V0UHVibGljTmFtZShjb25zdCBJ
ZGVudGlmaWVyJikgY29uc3Q7CisgICAgICAgIGNvbnN0IElkZW50aWZpZXIqIGxvb2tVcFByaXZh
dGVOYW1lKGNvbnN0IElkZW50aWZpZXImKSBjb25zdDsKKyAgICAgICAgSWRlbnRpZmllciBsb29r
VXBQdWJsaWNOYW1lKGNvbnN0IElkZW50aWZpZXImKSBjb25zdDsKIAogICAgICAgICBjb25zdCBC
eXRlY29kZUludHJpbnNpY1JlZ2lzdHJ5JiBieXRlY29kZUludHJpbnNpY1JlZ2lzdHJ5KCkgY29u
c3QgeyByZXR1cm4gbV9ieXRlY29kZUludHJpbnNpY1JlZ2lzdHJ5OyB9CiAKZGlmZiAtLWdpdCBh
L1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL0NvbXBsZXRpb24uY3BwIGIvU291cmNlL0ph
dmFTY3JpcHRDb3JlL3J1bnRpbWUvQ29tcGxldGlvbi5jcHAKaW5kZXggYTNkYWVlNjAzNDNhYzE0
YjE0YWQwMzA0ZWJkYzlhMjVhYWIxNTcyMy4uMmYyOTdhMTkwNGI0ZDE5N2M3YjcwMGZhNWI5NTRi
MTI2ZTczNmQ1NCAxMDA2NDQKLS0tIGEvU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvQ29t
cGxldGlvbi5jcHAKKysrIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvQ29tcGxldGlv
bi5jcHAKQEAgLTI4LDExICsyOCwxMiBAQAogI2luY2x1ZGUgIkRlYnVnZ2VyLmgiCiAjaW5jbHVk
ZSAiRXhjZXB0aW9uLmgiCiAjaW5jbHVkZSAiSW50ZXJwcmV0ZXIuaCIKKyNpbmNsdWRlICJKU0NJ
bmxpbmVzLmgiCiAjaW5jbHVkZSAiSlNHbG9iYWxPYmplY3QuaCIKICNpbmNsdWRlICJKU0xvY2su
aCIKLSNpbmNsdWRlICJKU0NJbmxpbmVzLmgiCisjaW5jbHVkZSAiSlNNb2R1bGVSZWNvcmQuaCIK
ICNpbmNsdWRlICJNb2R1bGVBbmFseXplci5oIgotI2luY2x1ZGUgIk1vZHVsZVJlY29yZC5oIgor
I2luY2x1ZGUgIk1vZHVsZUxvYWRlck9iamVjdC5oIgogI2luY2x1ZGUgIlBhcnNlci5oIgogI2lu
Y2x1ZGUgPHd0Zi9XVEZUaHJlYWREYXRhLmg+CiAKQEAgLTYzLDggKzY0LDkgQEAgYm9vbCBjaGVj
a1N5bnRheChWTSYgdm0sIGNvbnN0IFNvdXJjZUNvZGUmIHNvdXJjZSwgUGFyc2VyRXJyb3ImIGVy
cm9yKQogICAgICAgICBKU1BhcnNlclN0cmljdE1vZGU6Ok5vdFN0cmljdCwgU291cmNlUGFyc2VN
b2RlOjpQcm9ncmFtTW9kZSwgZXJyb3IpOwogfQogCi1ib29sIGNoZWNrTW9kdWxlU3ludGF4KFZN
JiB2bSwgY29uc3QgU291cmNlQ29kZSYgc291cmNlLCBQYXJzZXJFcnJvciYgZXJyb3IpCitib29s
IGNoZWNrTW9kdWxlU3ludGF4KEV4ZWNTdGF0ZSogZXhlYywgY29uc3QgU291cmNlQ29kZSYgc291
cmNlLCBQYXJzZXJFcnJvciYgZXJyb3IpCiB7CisgICAgVk0mIHZtID0gZXhlYy0+dm0oKTsKICAg
ICBKU0xvY2tIb2xkZXIgbG9jayh2bSk7CiAgICAgUkVMRUFTRV9BU1NFUlQodm0uYXRvbWljU3Ry
aW5nVGFibGUoKSA9PSB3dGZUaHJlYWREYXRhKCkuYXRvbWljU3RyaW5nVGFibGUoKSk7CiAgICAg
c3RkOjp1bmlxdWVfcHRyPE1vZHVsZVByb2dyYW1Ob2RlPiBtb2R1bGVQcm9ncmFtTm9kZSA9IHBh
cnNlPE1vZHVsZVByb2dyYW1Ob2RlPigKQEAgLTczLDcgKzc1LDcgQEAgYm9vbCBjaGVja01vZHVs
ZVN5bnRheChWTSYgdm0sIGNvbnN0IFNvdXJjZUNvZGUmIHNvdXJjZSwgUGFyc2VyRXJyb3ImIGVy
cm9yKQogICAgIGlmICghbW9kdWxlUHJvZ3JhbU5vZGUpCiAgICAgICAgIHJldHVybiBmYWxzZTsK
IAotICAgIE1vZHVsZUFuYWx5emVyIG1vZHVsZUFuYWx5emVyKHZtLCBtb2R1bGVQcm9ncmFtTm9k
ZS0+dmFyRGVjbGFyYXRpb25zKCksIG1vZHVsZVByb2dyYW1Ob2RlLT5sZXhpY2FsVmFyaWFibGVz
KCkpOworICAgIE1vZHVsZUFuYWx5emVyIG1vZHVsZUFuYWx5emVyKGV4ZWMsIG1vZHVsZVByb2dy
YW1Ob2RlLT52YXJEZWNsYXJhdGlvbnMoKSwgbW9kdWxlUHJvZ3JhbU5vZGUtPmxleGljYWxWYXJp
YWJsZXMoKSk7CiAgICAgbW9kdWxlQW5hbHl6ZXIuYW5hbHl6ZSgqbW9kdWxlUHJvZ3JhbU5vZGUp
OwogICAgIHJldHVybiB0cnVlOwogfQpAQCAtMTA4LDQgKzExMCw0MCBAQCBKU1ZhbHVlIGV2YWx1
YXRlKEV4ZWNTdGF0ZSogZXhlYywgY29uc3QgU291cmNlQ29kZSYgc291cmNlLCBKU1ZhbHVlIHRo
aXNWYWx1ZSwgTgogICAgIHJldHVybiByZXN1bHQ7CiB9CiAKK3ZvaWQgZXZhbHVhdGVNb2R1bGUo
RXhlY1N0YXRlKiBleGVjLCBjb25zdCBTb3VyY2VDb2RlJiBzb3VyY2UsIE5ha2VkUHRyPEV4Y2Vw
dGlvbj4mIHJldHVybmVkRXhjZXB0aW9uKQoreworICAgIEpTTG9ja0hvbGRlciBsb2NrKGV4ZWMp
OworICAgIFJFTEVBU0VfQVNTRVJUKGV4ZWMtPnZtKCkuYXRvbWljU3RyaW5nVGFibGUoKSA9PSB3
dGZUaHJlYWREYXRhKCkuYXRvbWljU3RyaW5nVGFibGUoKSk7CisgICAgUkVMRUFTRV9BU1NFUlQo
IWV4ZWMtPnZtKCkuaXNDb2xsZWN0b3JCdXN5KCkpOworCisgICAgQ29kZVByb2ZpbGluZyBwcm9m
aWxlKHNvdXJjZSk7CisKKyAgICBKU0dsb2JhbE9iamVjdCogZ2xvYmFsT2JqZWN0ID0gZXhlYy0+
dm1FbnRyeUdsb2JhbE9iamVjdCgpOworCisgICAgLy8gR2VuZXJhdGUgdGhlIHVuaXF1ZSBrZXkg
Zm9yIHRoZSBzb3VyY2UtcHJvdmlkZWQgbW9kdWxlLgorICAgIFN5bWJvbCoga2V5ID0gU3ltYm9s
OjpjcmVhdGUoZXhlYy0+dm0oKSk7CisKKyAgICBNb2R1bGVMb2FkZXJPYmplY3QqIG1vZHVsZUxv
YWRlciA9IGdsb2JhbE9iamVjdC0+bW9kdWxlTG9hZGVyKCk7CisKKyAgICAvLyBJbnNlcnQgdGhl
IGdpdmVuIHNvdXJjZSBjb2RlIHRvIHRoZSBNb2R1bGVMb2FkZXIgcmVnaXN0cnkgYXMgdGhlIGZl
dGNoZWQgcmVnaXN0cnkgZW50cnkuCisgICAgbW9kdWxlTG9hZGVyLT5wcm92aWRlKGV4ZWMsIGtl
eSwgTW9kdWxlTG9hZGVyT2JqZWN0OjpTdGF0dXM6OkZldGNoLCBzb3VyY2UudG9TdHJpbmcoKSk7
CisgICAgaWYgKGV4ZWMtPmhhZEV4Y2VwdGlvbigpKSB7CisgICAgICAgIHJldHVybmVkRXhjZXB0
aW9uID0gZXhlYy0+ZXhjZXB0aW9uKCk7CisgICAgICAgIGV4ZWMtPmNsZWFyRXhjZXB0aW9uKCk7
CisgICAgICAgIHJldHVybjsKKyAgICB9CisKKyAgICAvLyBGSVhNRTogTm93LCB3ZSBkb24ndCBp
bXBsZW1lbnQgdGhlIGxpbmtpbmcgcGhhc2UgeWV0LgorICAgIC8vIFNvIGhlcmUsIHdlIGp1c3Qg
Y2FsbCByZXF1ZXN0SW5zdGFudGlhdGVBbGwgdG8gb25seSBwZXJmb3JtIHRoZSBtb2R1bGUgbG9h
ZGluZy4KKyAgICAvLyBBdCBsYXN0LCBpdCBzaG91bGQgYmUgcmVwbGFjZWQgd2l0aCByZXF1ZXN0
UmVhZHkuCisgICAgbW9kdWxlTG9hZGVyLT5yZXF1ZXN0SW5zdGFudGlhdGVBbGwoZXhlYywga2V5
KTsKKworICAgIC8vIEZJWE1FOiBXZSBzaG91bGQgYWxzbyBoYW5kbGUgdGhlIGFzeW5jaHJvbm91
cyBTeW50YXggRXJyb3JzIHRoYXQgd2lsbCBiZSBkZWxpdmVyZWQgYnkgdGhlIHJlamVjdGVkIHBy
b21pc2UuCisgICAgaWYgKGV4ZWMtPmhhZEV4Y2VwdGlvbigpKSB7CisgICAgICAgIHJldHVybmVk
RXhjZXB0aW9uID0gZXhlYy0+ZXhjZXB0aW9uKCk7CisgICAgICAgIGV4ZWMtPmNsZWFyRXhjZXB0
aW9uKCk7CisgICAgICAgIHJldHVybjsKKyAgICB9Cit9CisKIH0gLy8gbmFtZXNwYWNlIEpTQwpk
aWZmIC0tZ2l0IGEvU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvQ29tcGxldGlvbi5oIGIv
U291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvQ29tcGxldGlvbi5oCmluZGV4IDcwMmVkOWZh
YjBjNzkxZmFlMTU1MDU2MjdiYzczMWFkYmFlM2E1ZmQuLmRlMzJkNjNlNjNhYzdjZWQ0OWQ4MTdl
MjNjMGI4Nzg4NjdhMDVhNjkgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50
aW1lL0NvbXBsZXRpb24uaAorKysgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9Db21w
bGV0aW9uLmgKQEAgLTM3LDEzICszNywxNCBAQCBjbGFzcyBWTTsKIAogSlNfRVhQT1JUX1BSSVZB
VEUgYm9vbCBjaGVja1N5bnRheChWTSYsIGNvbnN0IFNvdXJjZUNvZGUmLCBQYXJzZXJFcnJvciYp
OwogSlNfRVhQT1JUX1BSSVZBVEUgYm9vbCBjaGVja1N5bnRheChFeGVjU3RhdGUqLCBjb25zdCBT
b3VyY2VDb2RlJiwgSlNWYWx1ZSogZXhjZXB0aW9uID0gMCk7Ci1KU19FWFBPUlRfUFJJVkFURSBi
b29sIGNoZWNrTW9kdWxlU3ludGF4KFZNJiwgY29uc3QgU291cmNlQ29kZSYsIFBhcnNlckVycm9y
Jik7CitKU19FWFBPUlRfUFJJVkFURSBib29sIGNoZWNrTW9kdWxlU3ludGF4KEV4ZWNTdGF0ZSos
IGNvbnN0IFNvdXJjZUNvZGUmLCBQYXJzZXJFcnJvciYpOwogSlNfRVhQT1JUX1BSSVZBVEUgSlNW
YWx1ZSBldmFsdWF0ZShFeGVjU3RhdGUqLCBjb25zdCBTb3VyY2VDb2RlJiwgSlNWYWx1ZSB0aGlz
VmFsdWUsIE5ha2VkUHRyPEV4Y2VwdGlvbj4mIHJldHVybmVkRXhjZXB0aW9uKTsKIGlubGluZSBK
U1ZhbHVlIGV2YWx1YXRlKEV4ZWNTdGF0ZSogZXhlYywgY29uc3QgU291cmNlQ29kZSYgc291cmNl
Q29kZSwgSlNWYWx1ZSB0aGlzVmFsdWUgPSBKU1ZhbHVlKCkpCiB7CiAgICAgTmFrZWRQdHI8RXhj
ZXB0aW9uPiB1bnVzZWQ7CiAgICAgcmV0dXJuIGV2YWx1YXRlKGV4ZWMsIHNvdXJjZUNvZGUsIHRo
aXNWYWx1ZSwgdW51c2VkKTsKIH0KK0pTX0VYUE9SVF9QUklWQVRFIHZvaWQgZXZhbHVhdGVNb2R1
bGUoRXhlY1N0YXRlKiwgY29uc3QgU291cmNlQ29kZSYsIE5ha2VkUHRyPEV4Y2VwdGlvbj4mIHJl
dHVybmVkRXhjZXB0aW9uKTsKIAogfSAvLyBuYW1lc3BhY2UgSlNDCiAKZGlmZiAtLWdpdCBhL1Nv
dXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL0V4Y2VwdGlvbkhlbHBlcnMuY3BwIGIvU291cmNl
L0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvRXhjZXB0aW9uSGVscGVycy5jcHAKaW5kZXggNDZjMGNl
ZjkzOTJhNGFkN2MwYjAwYTlhMDg0N2UwYjlhZWZjNWZhZS4uYjc4NTliZmUzZThlYWZkMWVjNjRh
YjVmYmZlYWYyNTcyYWQyN2MxNyAxMDA2NDQKLS0tIGEvU291cmNlL0phdmFTY3JpcHRDb3JlL3J1
bnRpbWUvRXhjZXB0aW9uSGVscGVycy5jcHAKKysrIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL3J1
bnRpbWUvRXhjZXB0aW9uSGVscGVycy5jcHAKQEAgLTczLDcgKzczLDcgQEAgSlNPYmplY3QqIGNy
ZWF0ZVN0YWNrT3ZlcmZsb3dFcnJvcihFeGVjU3RhdGUqIGV4ZWMpCiBKU09iamVjdCogY3JlYXRl
VW5kZWZpbmVkVmFyaWFibGVFcnJvcihFeGVjU3RhdGUqIGV4ZWMsIGNvbnN0IElkZW50aWZpZXIm
IGlkZW50KQogewogICAgIGlmIChleGVjLT5wcm9wZXJ0eU5hbWVzKCkuaXNQcml2YXRlTmFtZShp
ZGVudCkpIHsKLSAgICAgICAgU3RyaW5nIG1lc3NhZ2UobWFrZVN0cmluZygiQ2FuJ3QgZmluZCBw
cml2YXRlIHZhcmlhYmxlOiBAIiwgZXhlYy0+cHJvcGVydHlOYW1lcygpLmdldFB1YmxpY05hbWUo
aWRlbnQpLnN0cmluZygpKSk7CisgICAgICAgIFN0cmluZyBtZXNzYWdlKG1ha2VTdHJpbmcoIkNh
bid0IGZpbmQgcHJpdmF0ZSB2YXJpYWJsZTogQCIsIGV4ZWMtPnByb3BlcnR5TmFtZXMoKS5sb29r
VXBQdWJsaWNOYW1lKGlkZW50KS5zdHJpbmcoKSkpOwogICAgICAgICByZXR1cm4gY3JlYXRlUmVm
ZXJlbmNlRXJyb3IoZXhlYywgbWVzc2FnZSk7CiAgICAgfQogICAgIFN0cmluZyBtZXNzYWdlKG1h
a2VTdHJpbmcoIkNhbid0IGZpbmQgdmFyaWFibGU6ICIsIGlkZW50LnN0cmluZygpKSk7CmRpZmYg
LS1naXQgYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9JZGVudGlmaWVyLmggYi9Tb3Vy
Y2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9JZGVudGlmaWVyLmgKaW5kZXggNjFkZTY1MzZhNmZh
NGMyOWFjYTRkZjE0YjdkNmZlYzRkMmE1MDNlNi4uODg5Y2E2YjIyZTQzNzkzNjJmMjU4MDVmZDA1
ZTZmODRhYTY3YmJhNiAxMDA2NDQKLS0tIGEvU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUv
SWRlbnRpZmllci5oCisrKyBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL0lkZW50aWZp
ZXIuaApAQCAtMjkyLDYgKzI5Miw3IEBAIHN0cnVjdCBJZGVudGlmaWVyTWFwSW5kZXhIYXNoVHJh
aXRzIDogSGFzaFRyYWl0czxpbnQ+IHsKICAgICBzdGF0aWMgY29uc3QgYm9vbCBlbXB0eVZhbHVl
SXNaZXJvID0gZmFsc2U7CiB9OwogCit0eXBlZGVmIEhhc2hTZXQ8UmVmUHRyPFVuaXF1ZWRTdHJp
bmdJbXBsPiwgSWRlbnRpZmllclJlcEhhc2g+IElkZW50aWZpZXJTZXQ7CiB0eXBlZGVmIEhhc2hN
YXA8UmVmUHRyPFVuaXF1ZWRTdHJpbmdJbXBsPiwgaW50LCBJZGVudGlmaWVyUmVwSGFzaCwgSGFz
aFRyYWl0czxSZWZQdHI8VW5pcXVlZFN0cmluZ0ltcGw+PiwgSWRlbnRpZmllck1hcEluZGV4SGFz
aFRyYWl0cz4gSWRlbnRpZmllck1hcDsKIHR5cGVkZWYgSGFzaE1hcDxVbmlxdWVkU3RyaW5nSW1w
bCosIGludCwgSWRlbnRpZmllclJlcEhhc2gsIEhhc2hUcmFpdHM8VW5pcXVlZFN0cmluZ0ltcGwq
PiwgSWRlbnRpZmllck1hcEluZGV4SGFzaFRyYWl0cz4gQm9ycm93ZWRJZGVudGlmaWVyTWFwOwog
CmRpZmYgLS1naXQgYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9KU0dsb2JhbE9iamVj
dC5jcHAgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9KU0dsb2JhbE9iamVjdC5jcHAK
aW5kZXggMjVhY2U5MjY5MTgwYWRkNzNjNGVhZTk4ZDM4OTU3OGU0NmFlYjU0NC4uZjU3YzA3YmI0
YzdhYmM5ZmQzNTMzMWY5NmYyOTg2YTI5ZjE2ZWQ4YSAxMDA2NDQKLS0tIGEvU291cmNlL0phdmFT
Y3JpcHRDb3JlL3J1bnRpbWUvSlNHbG9iYWxPYmplY3QuY3BwCisrKyBiL1NvdXJjZS9KYXZhU2Ny
aXB0Q29yZS9ydW50aW1lL0pTR2xvYmFsT2JqZWN0LmNwcApAQCAtODAsNiArODAsNyBAQAogI2lu
Y2x1ZGUgIkpTTG9jay5oIgogI2luY2x1ZGUgIkpTTWFwLmgiCiAjaW5jbHVkZSAiSlNNYXBJdGVy
YXRvci5oIgorI2luY2x1ZGUgIkpTTW9kdWxlUmVjb3JkLmgiCiAjaW5jbHVkZSAiSlNPTk9iamVj
dC5oIgogI2luY2x1ZGUgIkpTUHJvbWlzZS5oIgogI2luY2x1ZGUgIkpTUHJvbWlzZUNvbnN0cnVj
dG9yLmgiCkBAIC0xMDMsNiArMTA0LDcgQEAKICNpbmNsdWRlICJNYXBQcm90b3R5cGUuaCIKICNp
bmNsdWRlICJNYXRoT2JqZWN0LmgiCiAjaW5jbHVkZSAiTWljcm90YXNrLmgiCisjaW5jbHVkZSAi
TW9kdWxlTG9hZGVyT2JqZWN0LmgiCiAjaW5jbHVkZSAiTmF0aXZlRXJyb3JDb25zdHJ1Y3Rvci5o
IgogI2luY2x1ZGUgIk5hdGl2ZUVycm9yUHJvdG90eXBlLmgiCiAjaW5jbHVkZSAiTnVsbEdldHRl
ckZ1bmN0aW9uLmgiCkBAIC0xNTYsNyArMTU4LDcgQEAgbmFtZXNwYWNlIEpTQyB7CiAKIGNvbnN0
IENsYXNzSW5mbyBKU0dsb2JhbE9iamVjdDo6c19pbmZvID0geyAiR2xvYmFsT2JqZWN0IiwgJkJh
c2U6OnNfaW5mbywgJmdsb2JhbE9iamVjdFRhYmxlLCBDUkVBVEVfTUVUSE9EX1RBQkxFKEpTR2xv
YmFsT2JqZWN0KSB9OwogCi1jb25zdCBHbG9iYWxPYmplY3RNZXRob2RUYWJsZSBKU0dsb2JhbE9i
amVjdDo6c19nbG9iYWxPYmplY3RNZXRob2RUYWJsZSA9IHsgJmFsbG93c0FjY2Vzc0Zyb20sICZz
dXBwb3J0c1Byb2ZpbGluZywgJnN1cHBvcnRzUmljaFNvdXJjZUluZm8sICZzaG91bGRJbnRlcnJ1
cHRTY3JpcHQsICZqYXZhU2NyaXB0UnVudGltZUZsYWdzLCBudWxscHRyLCAmc2hvdWxkSW50ZXJy
dXB0U2NyaXB0QmVmb3JlVGltZW91dCB9OworY29uc3QgR2xvYmFsT2JqZWN0TWV0aG9kVGFibGUg
SlNHbG9iYWxPYmplY3Q6OnNfZ2xvYmFsT2JqZWN0TWV0aG9kVGFibGUgPSB7ICZhbGxvd3NBY2Nl
c3NGcm9tLCAmc3VwcG9ydHNQcm9maWxpbmcsICZzdXBwb3J0c1JpY2hTb3VyY2VJbmZvLCAmc2hv
dWxkSW50ZXJydXB0U2NyaXB0LCAmamF2YVNjcmlwdFJ1bnRpbWVGbGFncywgbnVsbHB0ciwgJnNo
b3VsZEludGVycnVwdFNjcmlwdEJlZm9yZVRpbWVvdXQsIG51bGxwdHIsIG51bGxwdHIsIG51bGxw
dHIsIG51bGxwdHIgfTsKIAogLyogU291cmNlIGZvciBKU0dsb2JhbE9iamVjdC5sdXQuaAogQGJl
Z2luIGdsb2JhbE9iamVjdFRhYmxlCkBAIC0zMTUsNiArMzE3LDcgQEAgdm9pZCBKU0dsb2JhbE9i
amVjdDo6aW5pdChWTSYgdm0pCiAgICAgbV9vdXRPZkJhbmRBcmd1bWVudHNTdHJ1Y3R1cmUuc2V0
KHZtLCB0aGlzLCBDbG9uZWRBcmd1bWVudHM6OmNyZWF0ZVN0cnVjdHVyZSh2bSwgdGhpcywgbV9v
YmplY3RQcm90b3R5cGUuZ2V0KCkpKTsKICAgICBtX2NhbGxiYWNrQ29uc3RydWN0b3JTdHJ1Y3R1
cmUuc2V0KHZtLCB0aGlzLCBKU0NhbGxiYWNrQ29uc3RydWN0b3I6OmNyZWF0ZVN0cnVjdHVyZSh2
bSwgdGhpcywgbV9vYmplY3RQcm90b3R5cGUuZ2V0KCkpKTsKICAgICBtX2NhbGxiYWNrT2JqZWN0
U3RydWN0dXJlLnNldCh2bSwgdGhpcywgSlNDYWxsYmFja09iamVjdDxKU0Rlc3RydWN0aWJsZU9i
amVjdD46OmNyZWF0ZVN0cnVjdHVyZSh2bSwgdGhpcywgbV9vYmplY3RQcm90b3R5cGUuZ2V0KCkp
KTsKKwogI2lmIEpTQ19PQkpDX0FQSV9FTkFCTEVECiAgICAgbV9vYmpjQ2FsbGJhY2tGdW5jdGlv
blN0cnVjdHVyZS5zZXQodm0sIHRoaXMsIE9iakNDYWxsYmFja0Z1bmN0aW9uOjpjcmVhdGVTdHJ1
Y3R1cmUodm0sIHRoaXMsIG1fZnVuY3Rpb25Qcm90b3R5cGUuZ2V0KCkpKTsKICAgICBtX29iamNX
cmFwcGVyT2JqZWN0U3RydWN0dXJlLnNldCh2bSwgdGhpcywgSlNDYWxsYmFja09iamVjdDxKU0FQ
SVdyYXBwZXJPYmplY3Q+OjpjcmVhdGVTdHJ1Y3R1cmUodm0sIHRoaXMsIG1fb2JqZWN0UHJvdG90
eXBlLmdldCgpKSk7CkBAIC0zMzYsMTAgKzMzOSw5IEBAIHZvaWQgSlNHbG9iYWxPYmplY3Q6Omlu
aXQoVk0mIHZtKQogICAgIG1fcmVnRXhwUHJvdG90eXBlLnNldCh2bSwgdGhpcywgUmVnRXhwUHJv
dG90eXBlOjpjcmVhdGUodm0sIFJlZ0V4cFByb3RvdHlwZTo6Y3JlYXRlU3RydWN0dXJlKHZtLCB0
aGlzLCBtX29iamVjdFByb3RvdHlwZS5nZXQoKSksIGVtcHR5UmVnZXgpKTsKICAgICBtX3JlZ0V4
cFN0cnVjdHVyZS5zZXQodm0sIHRoaXMsIFJlZ0V4cE9iamVjdDo6Y3JlYXRlU3RydWN0dXJlKHZt
LCB0aGlzLCBtX3JlZ0V4cFByb3RvdHlwZS5nZXQoKSkpOwogICAgIG1fcmVnRXhwTWF0Y2hlc0Fy
cmF5U3RydWN0dXJlLnNldCh2bSwgdGhpcywgY3JlYXRlUmVnRXhwTWF0Y2hlc0FycmF5U3RydWN0
dXJlKHZtLCAqdGhpcykpOwotICAgIAotICAgIG1fcHJvbWlzZVByb3RvdHlwZS5zZXQodm0sIHRo
aXMsIEpTUHJvbWlzZVByb3RvdHlwZTo6Y3JlYXRlKGV4ZWMsIHRoaXMsIEpTUHJvbWlzZVByb3Rv
dHlwZTo6Y3JlYXRlU3RydWN0dXJlKHZtLCB0aGlzLCBtX29iamVjdFByb3RvdHlwZS5nZXQoKSkp
KTsKLSAgICBtX3Byb21pc2VTdHJ1Y3R1cmUuc2V0KHZtLCB0aGlzLCBKU1Byb21pc2U6OmNyZWF0
ZVN0cnVjdHVyZSh2bSwgdGhpcywgbV9wcm9taXNlUHJvdG90eXBlLmdldCgpKSk7CiAKKyAgICBt
X21vZHVsZVJlY29yZFN0cnVjdHVyZS5zZXQodm0sIHRoaXMsIEpTTW9kdWxlUmVjb3JkOjpjcmVh
dGVTdHJ1Y3R1cmUodm0sIHRoaXMsIG1fb2JqZWN0UHJvdG90eXBlLmdldCgpKSk7CisgICAgCiAj
aWYgRU5BQkxFKFdFQkFTU0VNQkxZKQogICAgIG1fd2FzbU1vZHVsZVN0cnVjdHVyZS5zZXQodm0s
IHRoaXMsIEpTV0FTTU1vZHVsZTo6Y3JlYXRlU3RydWN0dXJlKHZtLCB0aGlzKSk7CiAjZW5kaWYK
QEAgLTM5NywxMyArMzk5LDExIEBAIG1fICMjIGxvd2VyTmFtZSAjIyBQcm90b3R5cGUtPnB1dERp
cmVjdFdpdGhvdXRUcmFuc2l0aW9uKHZtLCB2bS5wcm9wZXJ0eU5hbWVzLT5jCiAgICAgbV9zeW50
YXhFcnJvckNvbnN0cnVjdG9yLnNldCh2bSwgdGhpcywgTmF0aXZlRXJyb3JDb25zdHJ1Y3Rvcjo6
Y3JlYXRlKHZtLCB0aGlzLCBuYXRpdmVFcnJvclN0cnVjdHVyZSwgbmF0aXZlRXJyb3JQcm90b3R5
cGVTdHJ1Y3R1cmUsIEFTQ0lJTGl0ZXJhbCgiU3ludGF4RXJyb3IiKSkpOwogICAgIG1fdHlwZUVy
cm9yQ29uc3RydWN0b3Iuc2V0KHZtLCB0aGlzLCBOYXRpdmVFcnJvckNvbnN0cnVjdG9yOjpjcmVh
dGUodm0sIHRoaXMsIG5hdGl2ZUVycm9yU3RydWN0dXJlLCBuYXRpdmVFcnJvclByb3RvdHlwZVN0
cnVjdHVyZSwgQVNDSUlMaXRlcmFsKCJUeXBlRXJyb3IiKSkpOwogICAgIG1fVVJJRXJyb3JDb25z
dHJ1Y3Rvci5zZXQodm0sIHRoaXMsIE5hdGl2ZUVycm9yQ29uc3RydWN0b3I6OmNyZWF0ZSh2bSwg
dGhpcywgbmF0aXZlRXJyb3JTdHJ1Y3R1cmUsIG5hdGl2ZUVycm9yUHJvdG90eXBlU3RydWN0dXJl
LCBBU0NJSUxpdGVyYWwoIlVSSUVycm9yIikpKTsKLSAgICBtX3Byb21pc2VDb25zdHJ1Y3Rvci5z
ZXQodm0sIHRoaXMsIEpTUHJvbWlzZUNvbnN0cnVjdG9yOjpjcmVhdGUodm0sIEpTUHJvbWlzZUNv
bnN0cnVjdG9yOjpjcmVhdGVTdHJ1Y3R1cmUodm0sIHRoaXMsIG1fZnVuY3Rpb25Qcm90b3R5cGUu
Z2V0KCkpLCBtX3Byb21pc2VQcm90b3R5cGUuZ2V0KCkpKTsKICAgICAKICAgICBtX29iamVjdFBy
b3RvdHlwZS0+cHV0RGlyZWN0V2l0aG91dFRyYW5zaXRpb24odm0sIHZtLnByb3BlcnR5TmFtZXMt
PmNvbnN0cnVjdG9yLCBvYmplY3RDb25zdHJ1Y3RvciwgRG9udEVudW0pOwogICAgIG1fZnVuY3Rp
b25Qcm90b3R5cGUtPnB1dERpcmVjdFdpdGhvdXRUcmFuc2l0aW9uKHZtLCB2bS5wcm9wZXJ0eU5h
bWVzLT5jb25zdHJ1Y3RvciwgZnVuY3Rpb25Db25zdHJ1Y3RvciwgRG9udEVudW0pOwogICAgIG1f
YXJyYXlQcm90b3R5cGUtPnB1dERpcmVjdFdpdGhvdXRUcmFuc2l0aW9uKHZtLCB2bS5wcm9wZXJ0
eU5hbWVzLT5jb25zdHJ1Y3RvciwgYXJyYXlDb25zdHJ1Y3RvciwgRG9udEVudW0pOwogICAgIG1f
cmVnRXhwUHJvdG90eXBlLT5wdXREaXJlY3RXaXRob3V0VHJhbnNpdGlvbih2bSwgdm0ucHJvcGVy
dHlOYW1lcy0+Y29uc3RydWN0b3IsIG1fcmVnRXhwQ29uc3RydWN0b3IuZ2V0KCksIERvbnRFbnVt
KTsKLSAgICBtX3Byb21pc2VQcm90b3R5cGUtPnB1dERpcmVjdFdpdGhvdXRUcmFuc2l0aW9uKHZt
LCB2bS5wcm9wZXJ0eU5hbWVzLT5jb25zdHJ1Y3RvciwgbV9wcm9taXNlQ29uc3RydWN0b3IuZ2V0
KCksIERvbnRFbnVtKTsKICAgICAKICAgICBwdXREaXJlY3RXaXRob3V0VHJhbnNpdGlvbih2bSwg
dm0ucHJvcGVydHlOYW1lcy0+T2JqZWN0LCBvYmplY3RDb25zdHJ1Y3RvciwgRG9udEVudW0pOwog
ICAgIHB1dERpcmVjdFdpdGhvdXRUcmFuc2l0aW9uKHZtLCB2bS5wcm9wZXJ0eU5hbWVzLT5GdW5j
dGlvbiwgZnVuY3Rpb25Db25zdHJ1Y3RvciwgRG9udEVudW0pOwpAQCAtNDE1LDcgKzQxNSw2IEBA
IG1fICMjIGxvd2VyTmFtZSAjIyBQcm90b3R5cGUtPnB1dERpcmVjdFdpdGhvdXRUcmFuc2l0aW9u
KHZtLCB2bS5wcm9wZXJ0eU5hbWVzLT5jCiAgICAgcHV0RGlyZWN0V2l0aG91dFRyYW5zaXRpb24o
dm0sIHZtLnByb3BlcnR5TmFtZXMtPlN5bnRheEVycm9yLCBtX3N5bnRheEVycm9yQ29uc3RydWN0
b3IuZ2V0KCksIERvbnRFbnVtKTsKICAgICBwdXREaXJlY3RXaXRob3V0VHJhbnNpdGlvbih2bSwg
dm0ucHJvcGVydHlOYW1lcy0+VHlwZUVycm9yLCBtX3R5cGVFcnJvckNvbnN0cnVjdG9yLmdldCgp
LCBEb250RW51bSk7CiAgICAgcHV0RGlyZWN0V2l0aG91dFRyYW5zaXRpb24odm0sIHZtLnByb3Bl
cnR5TmFtZXMtPlVSSUVycm9yLCBtX1VSSUVycm9yQ29uc3RydWN0b3IuZ2V0KCksIERvbnRFbnVt
KTsKLSAgICBwdXREaXJlY3RXaXRob3V0VHJhbnNpdGlvbih2bSwgdm0ucHJvcGVydHlOYW1lcy0+
UHJvbWlzZSwgbV9wcm9taXNlQ29uc3RydWN0b3IuZ2V0KCksIERvbnRFbnVtKTsKICAgICAKICAg
ICAKICNkZWZpbmUgUFVUX0NPTlNUUlVDVE9SX0ZPUl9TSU1QTEVfVFlQRShjYXBpdGFsTmFtZSwg
bG93ZXJOYW1lLCBwcm9wZXJOYW1lLCBpbnN0YW5jZVR5cGUsIGpzTmFtZSkgXApAQCAtNDQwLDcg
KzQzOSw3IEBAIHB1dERpcmVjdFdpdGhvdXRUcmFuc2l0aW9uKHZtLCB2bS5wcm9wZXJ0eU5hbWVz
LT4ganNOYW1lLCBsb3dlck5hbWUgIyMgQ29uc3RydWN0CiAgICAgcHV0RGlyZWN0V2l0aG91dFRy
YW5zaXRpb24odm0sIHZtLnByb3BlcnR5TmFtZXMtPkpTT04sIEpTT05PYmplY3Q6OmNyZWF0ZSh2
bSwgSlNPTk9iamVjdDo6Y3JlYXRlU3RydWN0dXJlKHZtLCB0aGlzLCBtX29iamVjdFByb3RvdHlw
ZS5nZXQoKSkpLCBEb250RW51bSk7CiAgICAgcHV0RGlyZWN0V2l0aG91dFRyYW5zaXRpb24odm0s
IHZtLnByb3BlcnR5TmFtZXMtPk1hdGgsIE1hdGhPYmplY3Q6OmNyZWF0ZSh2bSwgdGhpcywgTWF0
aE9iamVjdDo6Y3JlYXRlU3RydWN0dXJlKHZtLCB0aGlzLCBtX29iamVjdFByb3RvdHlwZS5nZXQo
KSkpLCBEb250RW51bSk7CiAgICAgcHV0RGlyZWN0V2l0aG91dFRyYW5zaXRpb24odm0sIHZtLnBy
b3BlcnR5TmFtZXMtPlJlZmxlY3QsIFJlZmxlY3RPYmplY3Q6OmNyZWF0ZSh2bSwgdGhpcywgUmVm
bGVjdE9iamVjdDo6Y3JlYXRlU3RydWN0dXJlKHZtLCB0aGlzLCBtX29iamVjdFByb3RvdHlwZS5n
ZXQoKSkpLCBEb250RW51bSk7Ci0gICAgCisKICAgICBzdGQ6OmFycmF5PEludGVybmFsRnVuY3Rp
b24qLCBOVU1CRVJfT0ZfVFlQRURfQVJSQVlfVFlQRVM+IHR5cGVkQXJyYXlDb25zdHJ1Y3RvcnM7
CiAgICAgdHlwZWRBcnJheUNvbnN0cnVjdG9yc1t0b0luZGV4KFR5cGVJbnQ4KV0gPSBKU0ludDhB
cnJheUNvbnN0cnVjdG9yOjpjcmVhdGUodm0sIEpTSW50OEFycmF5Q29uc3RydWN0b3I6OmNyZWF0
ZVN0cnVjdHVyZSh2bSwgdGhpcywgbV9mdW5jdGlvblByb3RvdHlwZS5nZXQoKSksIG1fdHlwZWRB
cnJheXNbdG9JbmRleChUeXBlSW50OCldLnByb3RvdHlwZS5nZXQoKSwgQVNDSUlMaXRlcmFsKCJJ
bnQ4QXJyYXkiKSk7CiAgICAgdHlwZWRBcnJheUNvbnN0cnVjdG9yc1t0b0luZGV4KFR5cGVJbnQx
NildID0gSlNJbnQxNkFycmF5Q29uc3RydWN0b3I6OmNyZWF0ZSh2bSwgSlNJbnQxNkFycmF5Q29u
c3RydWN0b3I6OmNyZWF0ZVN0cnVjdHVyZSh2bSwgdGhpcywgbV9mdW5jdGlvblByb3RvdHlwZS5n
ZXQoKSksIG1fdHlwZWRBcnJheXNbdG9JbmRleChUeXBlSW50MTYpXS5wcm90b3R5cGUuZ2V0KCks
IEFTQ0lJTGl0ZXJhbCgiSW50MTZBcnJheSIpKTsKQEAgLTQ1Nyw3ICs0NTYsMTEgQEAgcHV0RGly
ZWN0V2l0aG91dFRyYW5zaXRpb24odm0sIHZtLnByb3BlcnR5TmFtZXMtPiBqc05hbWUsIGxvd2Vy
TmFtZSAjIyBDb25zdHJ1Y3QKICAgICAgICAgbV90eXBlZEFycmF5c1t0eXBlZEFycmF5SW5kZXhd
LnByb3RvdHlwZS0+cHV0RGlyZWN0V2l0aG91dFRyYW5zaXRpb24odm0sIHZtLnByb3BlcnR5TmFt
ZXMtPmNvbnN0cnVjdG9yLCB0eXBlZEFycmF5Q29uc3RydWN0b3JzW3R5cGVkQXJyYXlJbmRleF0s
IERvbnRFbnVtKTsKICAgICAgICAgcHV0RGlyZWN0V2l0aG91dFRyYW5zaXRpb24odm0sIElkZW50
aWZpZXI6OmZyb21TdHJpbmcoZXhlYywgdHlwZWRBcnJheUNvbnN0cnVjdG9yc1t0eXBlZEFycmF5
SW5kZXhdLT5uYW1lKGV4ZWMpKSwgdHlwZWRBcnJheUNvbnN0cnVjdG9yc1t0eXBlZEFycmF5SW5k
ZXhdLCBEb250RW51bSk7CiAgICAgfQotICAgIAorCisgICAgbV9tb2R1bGVMb2FkZXIuc2V0KHZt
LCB0aGlzLCBNb2R1bGVMb2FkZXJPYmplY3Q6OmNyZWF0ZSh2bSwgdGhpcywgTW9kdWxlTG9hZGVy
T2JqZWN0OjpjcmVhdGVTdHJ1Y3R1cmUodm0sIHRoaXMsIG1fb2JqZWN0UHJvdG90eXBlLmdldCgp
KSkpOworICAgIGlmIChPcHRpb25zOjpleHBvc2VJbnRlcm5hbE1vZHVsZUxvYWRlcigpKQorICAg
ICAgICBwdXREaXJlY3RXaXRob3V0VHJhbnNpdGlvbih2bSwgdm0ucHJvcGVydHlOYW1lcy0+TG9h
ZGVyLCBtX21vZHVsZUxvYWRlci5nZXQoKSwgRG9udEVudW0pOworCiAgICAgSlNGdW5jdGlvbiog
YnVpbHRpbkxvZyA9IEpTRnVuY3Rpb246OmNyZWF0ZSh2bSwgdGhpcywgMSwgdm0ucHJvcGVydHlO
YW1lcy0+ZW1wdHlJZGVudGlmaWVyLnN0cmluZygpLCBnbG9iYWxGdW5jQnVpbHRpbkxvZyk7CiAK
ICAgICBKU0Z1bmN0aW9uKiBwcml2YXRlRnVuY0FicyA9IEpTRnVuY3Rpb246OmNyZWF0ZSh2bSwg
dGhpcywgMCwgU3RyaW5nKCksIG1hdGhQcm90b0Z1bmNBYnMsIEFic0ludHJpbnNpYyk7CkBAIC00
OTEsNyArNDk0LDcgQEAgcHV0RGlyZWN0V2l0aG91dFRyYW5zaXRpb24odm0sIHZtLnByb3BlcnR5
TmFtZXMtPiBqc05hbWUsIGxvd2VyTmFtZSAjIyBDb25zdHJ1Y3QKICAgICAgICAgR2xvYmFsUHJv
cGVydHlJbmZvKHZtLnByb3BlcnR5TmFtZXMtPmFycmF5SXRlcmF0aW9uS2luZFZhbHVlUHJpdmF0
ZU5hbWUsIGpzTnVtYmVyKEFycmF5SXRlcmF0ZVZhbHVlKSwgRG9udEVudW0gfCBEb250RGVsZXRl
IHwgUmVhZE9ubHkpLAogICAgICAgICBHbG9iYWxQcm9wZXJ0eUluZm8odm0ucHJvcGVydHlOYW1l
cy0+YXJyYXlJdGVyYXRpb25LaW5kS2V5VmFsdWVQcml2YXRlTmFtZSwganNOdW1iZXIoQXJyYXlJ
dGVyYXRlS2V5VmFsdWUpLCBEb250RW51bSB8IERvbnREZWxldGUgfCBSZWFkT25seSksCiAgICAg
ICAgIEdsb2JhbFByb3BlcnR5SW5mbyh2bS5wcm9wZXJ0eU5hbWVzLT5idWlsdGluTmFtZXMoKS5z
eW1ib2xJdGVyYXRvclByaXZhdGVOYW1lKCksIFN5bWJvbDo6Y3JlYXRlKHZtLCBzdGF0aWNfY2Fz
dDxTeW1ib2xJbXBsJj4oKnZtLnByb3BlcnR5TmFtZXMtPml0ZXJhdG9yU3ltYm9sLmltcGwoKSkp
LCBEb250RW51bSB8IERvbnREZWxldGUgfCBSZWFkT25seSksCi0gICAgICAgIEdsb2JhbFByb3Bl
cnR5SW5mbyh2bS5wcm9wZXJ0eU5hbWVzLT5Qcm9taXNlUHJpdmF0ZU5hbWUsIG1fcHJvbWlzZUNv
bnN0cnVjdG9yLmdldCgpLCBEb250RW51bSB8IERvbnREZWxldGUgfCBSZWFkT25seSksCisgICAg
ICAgIEdsb2JhbFByb3BlcnR5SW5mbyh2bS5wcm9wZXJ0eU5hbWVzLT5Qcm9taXNlUHJpdmF0ZU5h
bWUsIHByb21pc2VDb25zdHJ1Y3RvciwgRG9udEVudW0gfCBEb250RGVsZXRlIHwgUmVhZE9ubHkp
LAogICAgICAgICBHbG9iYWxQcm9wZXJ0eUluZm8odm0ucHJvcGVydHlOYW1lcy0+cHJvbWlzZVBl
bmRpbmdQcml2YXRlTmFtZSwganNOdW1iZXIoc3RhdGljX2Nhc3Q8dW5zaWduZWQ+KEpTUHJvbWlz
ZTo6U3RhdHVzOjpQZW5kaW5nKSksIERvbnRFbnVtIHwgRG9udERlbGV0ZSB8IFJlYWRPbmx5KSwK
ICAgICAgICAgR2xvYmFsUHJvcGVydHlJbmZvKHZtLnByb3BlcnR5TmFtZXMtPmJ1aWx0aW5OYW1l
cygpLnByb21pc2VGdWxmaWxsZWRQcml2YXRlTmFtZSgpLCBqc051bWJlcihzdGF0aWNfY2FzdDx1
bnNpZ25lZD4oSlNQcm9taXNlOjpTdGF0dXM6OkZ1bGZpbGxlZCkpLCBEb250RW51bSB8IERvbnRE
ZWxldGUgfCBSZWFkT25seSksCiAgICAgICAgIEdsb2JhbFByb3BlcnR5SW5mbyh2bS5wcm9wZXJ0
eU5hbWVzLT5idWlsdGluTmFtZXMoKS5wcm9taXNlUmVqZWN0ZWRQcml2YXRlTmFtZSgpLCBqc051
bWJlcihzdGF0aWNfY2FzdDx1bnNpZ25lZD4oSlNQcm9taXNlOjpTdGF0dXM6OlJlamVjdGVkKSks
IERvbnRFbnVtIHwgRG9udERlbGV0ZSB8IFJlYWRPbmx5KSwKQEAgLTUwNyw3ICs1MTAsMTAgQEAg
cHV0RGlyZWN0V2l0aG91dFRyYW5zaXRpb24odm0sIHZtLnByb3BlcnR5TmFtZXMtPiBqc05hbWUs
IGxvd2VyTmFtZSAjIyBDb25zdHJ1Y3QKICAgICAgICAgR2xvYmFsUHJvcGVydHlJbmZvKHZtLnBy
b3BlcnR5TmFtZXMtPmJ1aWx0aW5OYW1lcygpLmNyZWF0ZVJlc29sdmluZ0Z1bmN0aW9uc1ByaXZh
dGVOYW1lKCksIEpTRnVuY3Rpb246OmNyZWF0ZUJ1aWx0aW5GdW5jdGlvbih2bSwgb3BlcmF0aW9u
c1Byb21pc2VDcmVhdGVSZXNvbHZpbmdGdW5jdGlvbnNDb2RlR2VuZXJhdG9yKHZtKSwgdGhpcyks
IERvbnRFbnVtIHwgRG9udERlbGV0ZSB8IFJlYWRPbmx5KSwKICAgICAgICAgR2xvYmFsUHJvcGVy
dHlJbmZvKHZtLnByb3BlcnR5TmFtZXMtPmJ1aWx0aW5OYW1lcygpLnByb21pc2VSZWFjdGlvbkpv
YlByaXZhdGVOYW1lKCksIEpTRnVuY3Rpb246OmNyZWF0ZUJ1aWx0aW5GdW5jdGlvbih2bSwgb3Bl
cmF0aW9uc1Byb21pc2VQcm9taXNlUmVhY3Rpb25Kb2JDb2RlR2VuZXJhdG9yKHZtKSwgdGhpcyks
IERvbnRFbnVtIHwgRG9udERlbGV0ZSB8IFJlYWRPbmx5KSwKICAgICAgICAgR2xvYmFsUHJvcGVy
dHlJbmZvKHZtLnByb3BlcnR5TmFtZXMtPmJ1aWx0aW5OYW1lcygpLnByb21pc2VSZXNvbHZlVGhl
bmFibGVKb2JQcml2YXRlTmFtZSgpLCBKU0Z1bmN0aW9uOjpjcmVhdGVCdWlsdGluRnVuY3Rpb24o
dm0sIG9wZXJhdGlvbnNQcm9taXNlUHJvbWlzZVJlc29sdmVUaGVuYWJsZUpvYkNvZGVHZW5lcmF0
b3Iodm0pLCB0aGlzKSwgRG9udEVudW0gfCBEb250RGVsZXRlIHwgUmVhZE9ubHkpLAorICAgICAg
ICBHbG9iYWxQcm9wZXJ0eUluZm8odm0ucHJvcGVydHlOYW1lcy0+YnVpbHRpbk5hbWVzKCkubmV3
UHJvbWlzZURlZmVycmVkUHJpdmF0ZU5hbWUoKSwgbV9uZXdQcm9taXNlRGVmZXJyZWRGdW5jdGlv
bi5nZXQoKSwgRG9udEVudW0gfCBEb250RGVsZXRlIHwgUmVhZE9ubHkpLAorICAgICAgICBHbG9i
YWxQcm9wZXJ0eUluZm8odm0ucHJvcGVydHlOYW1lcy0+YnVpbHRpbk5hbWVzKCkucHJvbWlzZVRo
ZW5Qcml2YXRlTmFtZSgpLCBKU0Z1bmN0aW9uOjpjcmVhdGVCdWlsdGluRnVuY3Rpb24odm0sIG9w
ZXJhdGlvbnNQcm9taXNlUHJvbWlzZVRoZW5Db2RlR2VuZXJhdG9yKHZtKSwgdGhpcyksIERvbnRF
bnVtIHwgRG9udERlbGV0ZSB8IFJlYWRPbmx5KSwKICAgICAgICAgR2xvYmFsUHJvcGVydHlJbmZv
KHZtLnByb3BlcnR5TmFtZXMtPmJ1aWx0aW5OYW1lcygpLkluc3BlY3Rvckluc3RydW1lbnRhdGlv
blByaXZhdGVOYW1lKCksIEluc3BlY3Rvckluc3RydW1lbnRhdGlvbk9iamVjdDo6Y3JlYXRlKHZt
LCB0aGlzLCBJbnNwZWN0b3JJbnN0cnVtZW50YXRpb25PYmplY3Q6OmNyZWF0ZVN0cnVjdHVyZSh2
bSwgdGhpcywgbV9vYmplY3RQcm90b3R5cGUuZ2V0KCkpKSwgRG9udEVudW0gfCBEb250RGVsZXRl
IHwgUmVhZE9ubHkpLAorICAgICAgICBHbG9iYWxQcm9wZXJ0eUluZm8odm0ucHJvcGVydHlOYW1l
cy0+TWFwUHJpdmF0ZU5hbWUsIG1hcENvbnN0cnVjdG9yLCBEb250RW51bSB8IERvbnREZWxldGUg
fCBSZWFkT25seSksCiAgICAgfTsKICAgICBhZGRTdGF0aWNHbG9iYWxzKHN0YXRpY0dsb2JhbHMs
IFdURl9BUlJBWV9MRU5HVEgoc3RhdGljR2xvYmFscykpOwogICAgIApAQCAtNzUwLDcgKzc1Niw2
IEBAIHZvaWQgSlNHbG9iYWxPYmplY3Q6OnZpc2l0Q2hpbGRyZW4oSlNDZWxsKiBjZWxsLCBTbG90
VmlzaXRvciYgdmlzaXRvcikKICAgICB2aXNpdG9yLmFwcGVuZCgmdGhpc09iamVjdC0+bV90eXBl
RXJyb3JDb25zdHJ1Y3Rvcik7CiAgICAgdmlzaXRvci5hcHBlbmQoJnRoaXNPYmplY3QtPm1fVVJJ
RXJyb3JDb25zdHJ1Y3Rvcik7CiAgICAgdmlzaXRvci5hcHBlbmQoJnRoaXNPYmplY3QtPm1fb2Jq
ZWN0Q29uc3RydWN0b3IpOwotICAgIHZpc2l0b3IuYXBwZW5kKCZ0aGlzT2JqZWN0LT5tX3Byb21p
c2VDb25zdHJ1Y3Rvcik7CiAKICAgICB2aXNpdG9yLmFwcGVuZCgmdGhpc09iamVjdC0+bV9udWxs
R2V0dGVyRnVuY3Rpb24pOwogICAgIHZpc2l0b3IuYXBwZW5kKCZ0aGlzT2JqZWN0LT5tX251bGxT
ZXR0ZXJGdW5jdGlvbik7CkBAIC03NjQsMTMgKzc2OSwxMyBAQCB2b2lkIEpTR2xvYmFsT2JqZWN0
Ojp2aXNpdENoaWxkcmVuKEpTQ2VsbCogY2VsbCwgU2xvdFZpc2l0b3ImIHZpc2l0b3IpCiAgICAg
dmlzaXRvci5hcHBlbmQoJnRoaXNPYmplY3QtPm1faW5pdGlhbGl6ZVByb21pc2VGdW5jdGlvbik7
CiAgICAgdmlzaXRvci5hcHBlbmQoJnRoaXNPYmplY3QtPm1fbmV3UHJvbWlzZURlZmVycmVkRnVu
Y3Rpb24pOwogICAgIHZpc2l0b3IuYXBwZW5kKCZ0aGlzT2JqZWN0LT5tX3Rocm93VHlwZUVycm9y
R2V0dGVyU2V0dGVyKTsKKyAgICB2aXNpdG9yLmFwcGVuZCgmdGhpc09iamVjdC0+bV9tb2R1bGVM
b2FkZXIpOwogCiAgICAgdmlzaXRvci5hcHBlbmQoJnRoaXNPYmplY3QtPm1fb2JqZWN0UHJvdG90
eXBlKTsKICAgICB2aXNpdG9yLmFwcGVuZCgmdGhpc09iamVjdC0+bV9mdW5jdGlvblByb3RvdHlw
ZSk7CiAgICAgdmlzaXRvci5hcHBlbmQoJnRoaXNPYmplY3QtPm1fYXJyYXlQcm90b3R5cGUpOwog
ICAgIHZpc2l0b3IuYXBwZW5kKCZ0aGlzT2JqZWN0LT5tX2Vycm9yUHJvdG90eXBlKTsKICAgICB2
aXNpdG9yLmFwcGVuZCgmdGhpc09iamVjdC0+bV9pdGVyYXRvclByb3RvdHlwZSk7Ci0gICAgdmlz
aXRvci5hcHBlbmQoJnRoaXNPYmplY3QtPm1fcHJvbWlzZVByb3RvdHlwZSk7CiAKICAgICB2aXNp
dG9yLmFwcGVuZCgmdGhpc09iamVjdC0+bV9kZWJ1Z2dlclNjb3BlU3RydWN0dXJlKTsKICAgICB2
aXNpdG9yLmFwcGVuZCgmdGhpc09iamVjdC0+bV93aXRoU2NvcGVTdHJ1Y3R1cmUpOwpAQCAtODAx
LDEwICs4MDYsMTAgQEAgdm9pZCBKU0dsb2JhbE9iamVjdDo6dmlzaXRDaGlsZHJlbihKU0NlbGwq
IGNlbGwsIFNsb3RWaXNpdG9yJiB2aXNpdG9yKQogICAgIHZpc2l0b3IuYXBwZW5kKCZ0aGlzT2Jq
ZWN0LT5tX3N5bWJvbE9iamVjdFN0cnVjdHVyZSk7CiAgICAgdmlzaXRvci5hcHBlbmQoJnRoaXNP
YmplY3QtPm1fcmVnRXhwU3RydWN0dXJlKTsKICAgICB2aXNpdG9yLmFwcGVuZCgmdGhpc09iamVj
dC0+bV9yZWdFeHBNYXRjaGVzQXJyYXlTdHJ1Y3R1cmUpOworICAgIHZpc2l0b3IuYXBwZW5kKCZ0
aGlzT2JqZWN0LT5tX21vZHVsZVJlY29yZFN0cnVjdHVyZSk7CiAgICAgdmlzaXRvci5hcHBlbmQo
JnRoaXNPYmplY3QtPm1fY29uc29sZVN0cnVjdHVyZSk7CiAgICAgdmlzaXRvci5hcHBlbmQoJnRo
aXNPYmplY3QtPm1fZG9sbGFyVk1TdHJ1Y3R1cmUpOwogICAgIHZpc2l0b3IuYXBwZW5kKCZ0aGlz
T2JqZWN0LT5tX2ludGVybmFsRnVuY3Rpb25TdHJ1Y3R1cmUpOwotICAgIHZpc2l0b3IuYXBwZW5k
KCZ0aGlzT2JqZWN0LT5tX3Byb21pc2VTdHJ1Y3R1cmUpOwogI2lmIEVOQUJMRShXRUJBU1NFTUJM
WSkKICAgICB2aXNpdG9yLmFwcGVuZCgmdGhpc09iamVjdC0+bV93YXNtTW9kdWxlU3RydWN0dXJl
KTsKICNlbmRpZgpkaWZmIC0tZ2l0IGEvU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvSlNH
bG9iYWxPYmplY3QuaCBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL0pTR2xvYmFsT2Jq
ZWN0LmgKaW5kZXggOTk4NmJjZjYyNDVlMmNjNDY4MjBiMTMxMDJiMjM0MjkwMGVjM2Q3Yi4uZjBh
NjVkMjdlOWRkYWQyMWFlZGUyNmJmOWNkNWE2YWVkZWMwNzBkOCAxMDA2NDQKLS0tIGEvU291cmNl
L0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvSlNHbG9iYWxPYmplY3QuaAorKysgYi9Tb3VyY2UvSmF2
YVNjcmlwdENvcmUvcnVudGltZS9KU0dsb2JhbE9iamVjdC5oCkBAIC03MCwxMSArNzAsMTMgQEAg
Y2xhc3MgR2V0dGVyU2V0dGVyOwogY2xhc3MgR2xvYmFsQ29kZUJsb2NrOwogY2xhc3MgSW5wdXRD
dXJzb3I7CiBjbGFzcyBKU0dsb2JhbE9iamVjdERlYnVnZ2FibGU7CitjbGFzcyBKU1Byb21pc2U7
CiBjbGFzcyBKU1Byb21pc2VDb25zdHJ1Y3RvcjsKIGNsYXNzIEpTUHJvbWlzZVByb3RvdHlwZTsK
IGNsYXNzIEpTU3RhY2s7CiBjbGFzcyBMTEludE9mZnNldHNFeHRyYWN0b3I7CiBjbGFzcyBNaWNy
b3Rhc2s7CitjbGFzcyBNb2R1bGVMb2FkZXJPYmplY3Q7CiBjbGFzcyBOYXRpdmVFcnJvckNvbnN0
cnVjdG9yOwogY2xhc3MgT2JqZWN0Q29uc3RydWN0b3I7CiBjbGFzcyBQcm9ncmFtQ29kZUJsb2Nr
OwpAQCAtOTksNiArMTAxLDcgQEAgc3RydWN0IEhhc2hUYWJsZTsKICAgICBtYWNybyhCb29sZWFu
LCBib29sZWFuLCBib29sZWFuT2JqZWN0LCBCb29sZWFuT2JqZWN0LCBCb29sZWFuKSBcCiAgICAg
bWFjcm8oTnVtYmVyLCBudW1iZXIsIG51bWJlck9iamVjdCwgTnVtYmVyT2JqZWN0LCBOdW1iZXIp
IFwKICAgICBtYWNybyhFcnJvciwgZXJyb3IsIGVycm9yLCBFcnJvckluc3RhbmNlLCBFcnJvcikg
XAorICAgIG1hY3JvKEpTUHJvbWlzZSwgcHJvbWlzZSwgcHJvbWlzZSwgSlNQcm9taXNlLCBQcm9t
aXNlKSBcCiAgICAgbWFjcm8oSlNBcnJheUJ1ZmZlciwgYXJyYXlCdWZmZXIsIGFycmF5QnVmZmVy
LCBKU0FycmF5QnVmZmVyLCBBcnJheUJ1ZmZlcikgXAogICAgIERFRklORV9TVEFOREFSRF9CVUlM
VElOKG1hY3JvLCBXZWFrTWFwLCB3ZWFrTWFwKSBcCiAgICAgREVGSU5FX1NUQU5EQVJEX0JVSUxU
SU4obWFjcm8sIFdlYWtTZXQsIHdlYWtTZXQpIFwKQEAgLTE1MCw2ICsxNTMsMTggQEAgc3RydWN0
IEdsb2JhbE9iamVjdE1ldGhvZFRhYmxlIHsKIAogICAgIHR5cGVkZWYgYm9vbCAoKlNob3VsZElu
dGVycnVwdFNjcmlwdEJlZm9yZVRpbWVvdXRQdHIpKGNvbnN0IEpTR2xvYmFsT2JqZWN0Kik7CiAg
ICAgU2hvdWxkSW50ZXJydXB0U2NyaXB0QmVmb3JlVGltZW91dFB0ciBzaG91bGRJbnRlcnJ1cHRT
Y3JpcHRCZWZvcmVUaW1lb3V0OworCisgICAgdHlwZWRlZiBKU1ZhbHVlICgqTG9hZGVyUmVzb2x2
ZVB0cikoSlNHbG9iYWxPYmplY3QqLCBFeGVjU3RhdGUqLCBKU1ZhbHVlLCBKU1ZhbHVlKTsKKyAg
ICBMb2FkZXJSZXNvbHZlUHRyIGxvYWRlclJlc29sdmU7CisKKyAgICB0eXBlZGVmIEpTVmFsdWUg
KCpMb2FkZXJGZXRjaFB0cikoSlNHbG9iYWxPYmplY3QqLCBFeGVjU3RhdGUqLCBKU1ZhbHVlKTsK
KyAgICBMb2FkZXJGZXRjaFB0ciBsb2FkZXJGZXRjaDsKKworICAgIHR5cGVkZWYgSlNWYWx1ZSAo
KkxvYWRlclRyYW5zbGF0ZVB0cikoSlNHbG9iYWxPYmplY3QqLCBFeGVjU3RhdGUqLCBKU1ZhbHVl
LCBKU1ZhbHVlKTsKKyAgICBMb2FkZXJUcmFuc2xhdGVQdHIgbG9hZGVyVHJhbnNsYXRlOworCisg
ICAgdHlwZWRlZiBKU1ZhbHVlICgqTG9hZGVySW5zdGFudGlhdGVQdHIpKEpTR2xvYmFsT2JqZWN0
KiwgRXhlY1N0YXRlKiwgSlNWYWx1ZSwgSlNWYWx1ZSk7CisgICAgTG9hZGVySW5zdGFudGlhdGVQ
dHIgbG9hZGVySW5zdGFudGlhdGU7CiB9OwogCiBjbGFzcyBKU0dsb2JhbE9iamVjdCA6IHB1Ymxp
YyBKU1NlZ21lbnRlZFZhcmlhYmxlT2JqZWN0IHsKQEAgLTE4Myw3ICsxOTgsNiBAQCBjbGFzcyBK
U0dsb2JhbE9iamVjdCA6IHB1YmxpYyBKU1NlZ21lbnRlZFZhcmlhYmxlT2JqZWN0IHsKICAgICBX
cml0ZUJhcnJpZXI8TmF0aXZlRXJyb3JDb25zdHJ1Y3Rvcj4gbV9zeW50YXhFcnJvckNvbnN0cnVj
dG9yOwogICAgIFdyaXRlQmFycmllcjxOYXRpdmVFcnJvckNvbnN0cnVjdG9yPiBtX3R5cGVFcnJv
ckNvbnN0cnVjdG9yOwogICAgIFdyaXRlQmFycmllcjxOYXRpdmVFcnJvckNvbnN0cnVjdG9yPiBt
X1VSSUVycm9yQ29uc3RydWN0b3I7Ci0gICAgV3JpdGVCYXJyaWVyPEpTUHJvbWlzZUNvbnN0cnVj
dG9yPiBtX3Byb21pc2VDb25zdHJ1Y3RvcjsKICAgICBXcml0ZUJhcnJpZXI8T2JqZWN0Q29uc3Ry
dWN0b3I+IG1fb2JqZWN0Q29uc3RydWN0b3I7CiAKICAgICBXcml0ZUJhcnJpZXI8TnVsbEdldHRl
ckZ1bmN0aW9uPiBtX251bGxHZXR0ZXJGdW5jdGlvbjsKQEAgLTIwMCwxMiArMjE0LDEzIEBAIGNs
YXNzIEpTR2xvYmFsT2JqZWN0IDogcHVibGljIEpTU2VnbWVudGVkVmFyaWFibGVPYmplY3Qgewog
ICAgIFdyaXRlQmFycmllcjxKU0Z1bmN0aW9uPiBtX25ld1Byb21pc2VEZWZlcnJlZEZ1bmN0aW9u
OwogICAgIFdyaXRlQmFycmllcjxHZXR0ZXJTZXR0ZXI+IG1fdGhyb3dUeXBlRXJyb3JHZXR0ZXJT
ZXR0ZXI7CiAKKyAgICBXcml0ZUJhcnJpZXI8TW9kdWxlTG9hZGVyT2JqZWN0PiBtX21vZHVsZUxv
YWRlcjsKKwogICAgIFdyaXRlQmFycmllcjxPYmplY3RQcm90b3R5cGU+IG1fb2JqZWN0UHJvdG90
eXBlOwogICAgIFdyaXRlQmFycmllcjxGdW5jdGlvblByb3RvdHlwZT4gbV9mdW5jdGlvblByb3Rv
dHlwZTsKICAgICBXcml0ZUJhcnJpZXI8QXJyYXlQcm90b3R5cGU+IG1fYXJyYXlQcm90b3R5cGU7
CiAgICAgV3JpdGVCYXJyaWVyPFJlZ0V4cFByb3RvdHlwZT4gbV9yZWdFeHBQcm90b3R5cGU7CiAg
ICAgV3JpdGVCYXJyaWVyPEl0ZXJhdG9yUHJvdG90eXBlPiBtX2l0ZXJhdG9yUHJvdG90eXBlOwot
ICAgIFdyaXRlQmFycmllcjxKU1Byb21pc2VQcm90b3R5cGU+IG1fcHJvbWlzZVByb3RvdHlwZTsK
IAogICAgIFdyaXRlQmFycmllcjxTdHJ1Y3R1cmU+IG1fZGVidWdnZXJTY29wZVN0cnVjdHVyZTsK
ICAgICBXcml0ZUJhcnJpZXI8U3RydWN0dXJlPiBtX3dpdGhTY29wZVN0cnVjdHVyZTsKQEAgLTI0
MSw3ICsyNTYsNyBAQCBjbGFzcyBKU0dsb2JhbE9iamVjdCA6IHB1YmxpYyBKU1NlZ21lbnRlZFZh
cmlhYmxlT2JqZWN0IHsKICAgICBXcml0ZUJhcnJpZXI8U3RydWN0dXJlPiBtX2ludGVybmFsRnVu
Y3Rpb25TdHJ1Y3R1cmU7CiAgICAgV3JpdGVCYXJyaWVyPFN0cnVjdHVyZT4gbV9pdGVyYXRvclJl
c3VsdFN0cnVjdHVyZTsKICAgICBXcml0ZUJhcnJpZXI8U3RydWN0dXJlPiBtX3JlZ0V4cE1hdGNo
ZXNBcnJheVN0cnVjdHVyZTsKLSAgICBXcml0ZUJhcnJpZXI8U3RydWN0dXJlPiBtX3Byb21pc2VT
dHJ1Y3R1cmU7CisgICAgV3JpdGVCYXJyaWVyPFN0cnVjdHVyZT4gbV9tb2R1bGVSZWNvcmRTdHJ1
Y3R1cmU7CiAjaWYgRU5BQkxFKFdFQkFTU0VNQkxZKQogICAgIFdyaXRlQmFycmllcjxTdHJ1Y3R1
cmU+IG1fd2FzbU1vZHVsZVN0cnVjdHVyZTsKICNlbmRpZgpAQCAtMzg2LDcgKzQwMSw2IEBAIGNs
YXNzIEpTR2xvYmFsT2JqZWN0IDogcHVibGljIEpTU2VnbWVudGVkVmFyaWFibGVPYmplY3Qgewog
ICAgIE5hdGl2ZUVycm9yQ29uc3RydWN0b3IqIHN5bnRheEVycm9yQ29uc3RydWN0b3IoKSBjb25z
dCB7IHJldHVybiBtX3N5bnRheEVycm9yQ29uc3RydWN0b3IuZ2V0KCk7IH0KICAgICBOYXRpdmVF
cnJvckNvbnN0cnVjdG9yKiB0eXBlRXJyb3JDb25zdHJ1Y3RvcigpIGNvbnN0IHsgcmV0dXJuIG1f
dHlwZUVycm9yQ29uc3RydWN0b3IuZ2V0KCk7IH0KICAgICBOYXRpdmVFcnJvckNvbnN0cnVjdG9y
KiBVUklFcnJvckNvbnN0cnVjdG9yKCkgY29uc3QgeyByZXR1cm4gbV9VUklFcnJvckNvbnN0cnVj
dG9yLmdldCgpOyB9Ci0gICAgSlNQcm9taXNlQ29uc3RydWN0b3IqIHByb21pc2VDb25zdHJ1Y3Rv
cigpIGNvbnN0IHsgcmV0dXJuIG1fcHJvbWlzZUNvbnN0cnVjdG9yLmdldCgpOyB9CiAKICAgICBO
dWxsR2V0dGVyRnVuY3Rpb24qIG51bGxHZXR0ZXJGdW5jdGlvbigpIGNvbnN0IHsgcmV0dXJuIG1f
bnVsbEdldHRlckZ1bmN0aW9uLmdldCgpOyB9CiAgICAgTnVsbFNldHRlckZ1bmN0aW9uKiBudWxs
U2V0dGVyRnVuY3Rpb24oKSBjb25zdCB7IHJldHVybiBtX251bGxTZXR0ZXJGdW5jdGlvbi5nZXQo
KTsgfQpAQCAtNDA3LDYgKzQyMSw4IEBAIGNsYXNzIEpTR2xvYmFsT2JqZWN0IDogcHVibGljIEpT
U2VnbWVudGVkVmFyaWFibGVPYmplY3QgewogICAgICAgICByZXR1cm4gbV90aHJvd1R5cGVFcnJv
ckdldHRlclNldHRlci5nZXQoKTsKICAgICB9CiAKKyAgICBNb2R1bGVMb2FkZXJPYmplY3QqIG1v
ZHVsZUxvYWRlcigpIGNvbnN0IHsgcmV0dXJuIG1fbW9kdWxlTG9hZGVyLmdldCgpOyB9CisKICAg
ICBPYmplY3RQcm90b3R5cGUqIG9iamVjdFByb3RvdHlwZSgpIGNvbnN0IHsgcmV0dXJuIG1fb2Jq
ZWN0UHJvdG90eXBlLmdldCgpOyB9CiAgICAgRnVuY3Rpb25Qcm90b3R5cGUqIGZ1bmN0aW9uUHJv
dG90eXBlKCkgY29uc3QgeyByZXR1cm4gbV9mdW5jdGlvblByb3RvdHlwZS5nZXQoKTsgfQogICAg
IEFycmF5UHJvdG90eXBlKiBhcnJheVByb3RvdHlwZSgpIGNvbnN0IHsgcmV0dXJuIG1fYXJyYXlQ
cm90b3R5cGUuZ2V0KCk7IH0KQEAgLTQxOCw3ICs0MzQsNiBAQCBjbGFzcyBKU0dsb2JhbE9iamVj
dCA6IHB1YmxpYyBKU1NlZ21lbnRlZFZhcmlhYmxlT2JqZWN0IHsKICAgICBSZWdFeHBQcm90b3R5
cGUqIHJlZ0V4cFByb3RvdHlwZSgpIGNvbnN0IHsgcmV0dXJuIG1fcmVnRXhwUHJvdG90eXBlLmdl
dCgpOyB9CiAgICAgRXJyb3JQcm90b3R5cGUqIGVycm9yUHJvdG90eXBlKCkgY29uc3QgeyByZXR1
cm4gbV9lcnJvclByb3RvdHlwZS5nZXQoKTsgfQogICAgIEl0ZXJhdG9yUHJvdG90eXBlKiBpdGVy
YXRvclByb3RvdHlwZSgpIGNvbnN0IHsgcmV0dXJuIG1faXRlcmF0b3JQcm90b3R5cGUuZ2V0KCk7
IH0KLSAgICBKU1Byb21pc2VQcm90b3R5cGUqIHByb21pc2VQcm90b3R5cGUoKSBjb25zdCB7IHJl
dHVybiBtX3Byb21pc2VQcm90b3R5cGUuZ2V0KCk7IH0KIAogICAgIFN0cnVjdHVyZSogZGVidWdn
ZXJTY29wZVN0cnVjdHVyZSgpIGNvbnN0IHsgcmV0dXJuIG1fZGVidWdnZXJTY29wZVN0cnVjdHVy
ZS5nZXQoKTsgfQogICAgIFN0cnVjdHVyZSogd2l0aFNjb3BlU3RydWN0dXJlKCkgY29uc3QgeyBy
ZXR1cm4gbV93aXRoU2NvcGVTdHJ1Y3R1cmUuZ2V0KCk7IH0KQEAgLTQ3NSw3ICs0OTAsNyBAQCBj
bGFzcyBKU0dsb2JhbE9iamVjdCA6IHB1YmxpYyBKU1NlZ21lbnRlZFZhcmlhYmxlT2JqZWN0IHsK
ICAgICBTdHJ1Y3R1cmUqIGl0ZXJhdG9yUmVzdWx0U3RydWN0dXJlKCkgY29uc3QgeyByZXR1cm4g
bV9pdGVyYXRvclJlc3VsdFN0cnVjdHVyZS5nZXQoKTsgfQogICAgIHN0YXRpYyBwdHJkaWZmX3Qg
aXRlcmF0b3JSZXN1bHRTdHJ1Y3R1cmVPZmZzZXQoKSB7IHJldHVybiBPQkpFQ1RfT0ZGU0VUT0Yo
SlNHbG9iYWxPYmplY3QsIG1faXRlcmF0b3JSZXN1bHRTdHJ1Y3R1cmUpOyB9CiAgICAgU3RydWN0
dXJlKiByZWdFeHBNYXRjaGVzQXJyYXlTdHJ1Y3R1cmUoKSBjb25zdCB7IHJldHVybiBtX3JlZ0V4
cE1hdGNoZXNBcnJheVN0cnVjdHVyZS5nZXQoKTsgfQotICAgIFN0cnVjdHVyZSogcHJvbWlzZVN0
cnVjdHVyZSgpIGNvbnN0IHsgcmV0dXJuIG1fcHJvbWlzZVN0cnVjdHVyZS5nZXQoKTsgfQorICAg
IFN0cnVjdHVyZSogbW9kdWxlUmVjb3JkU3RydWN0dXJlKCkgY29uc3QgeyByZXR1cm4gbV9tb2R1
bGVSZWNvcmRTdHJ1Y3R1cmUuZ2V0KCk7IH0KICNpZiBFTkFCTEUoV0VCQVNTRU1CTFkpCiAgICAg
U3RydWN0dXJlKiB3YXNtTW9kdWxlU3RydWN0dXJlKCkgY29uc3QgeyByZXR1cm4gbV93YXNtTW9k
dWxlU3RydWN0dXJlLmdldCgpOyB9CiAjZW5kaWYKZGlmZiAtLWdpdCBhL1NvdXJjZS9KYXZhU2Ny
aXB0Q29yZS9ydW50aW1lL0pTTW9kdWxlUmVjb3JkLmNwcCBiL1NvdXJjZS9KYXZhU2NyaXB0Q29y
ZS9ydW50aW1lL0pTTW9kdWxlUmVjb3JkLmNwcApuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwLi43ZGUxODYwOTQwY2UxOWNl
NTA4YzEyMDI4MmU5NDRmM2NhNDIwNWQ5Ci0tLSAvZGV2L251bGwKKysrIGIvU291cmNlL0phdmFT
Y3JpcHRDb3JlL3J1bnRpbWUvSlNNb2R1bGVSZWNvcmQuY3BwCkBAIC0wLDAgKzEsMTEzIEBACisv
KgorICogQ29weXJpZ2h0IChDKSAyMDE1IEFwcGxlIEluYy4gQWxsIHJpZ2h0cyByZXNlcnZlZC4K
KyAqCisgKiBSZWRpc3RyaWJ1dGlvbiBhbmQgdXNlIGluIHNvdXJjZSBhbmQgYmluYXJ5IGZvcm1z
LCB3aXRoIG9yIHdpdGhvdXQKKyAqIG1vZGlmaWNhdGlvbiwgYXJlIHBlcm1pdHRlZCBwcm92aWRl
ZCB0aGF0IHRoZSBmb2xsb3dpbmcgY29uZGl0aW9ucworICogYXJlIG1ldDoKKyAqIDEuIFJlZGlz
dHJpYnV0aW9ucyBvZiBzb3VyY2UgY29kZSBtdXN0IHJldGFpbiB0aGUgYWJvdmUgY29weXJpZ2h0
CisgKiAgICBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5n
IGRpc2NsYWltZXIuCisgKiAyLiBSZWRpc3RyaWJ1dGlvbnMgaW4gYmluYXJ5IGZvcm0gbXVzdCBy
ZXByb2R1Y2UgdGhlIGFib3ZlIGNvcHlyaWdodAorICogICAgbm90aWNlLCB0aGlzIGxpc3Qgb2Yg
Y29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyIGluIHRoZQorICogICAgZG9j
dW1lbnRhdGlvbiBhbmQvb3Igb3RoZXIgbWF0ZXJpYWxzIHByb3ZpZGVkIHdpdGggdGhlIGRpc3Ry
aWJ1dGlvbi4KKyAqCisgKiBUSElTIFNPRlRXQVJFIElTIFBST1ZJREVEIEJZIEFQUExFIElOQy4g
YGBBUyBJUycnIEFORCBBTlkKKyAqIEVYUFJFU1MgT1IgSU1QTElFRCBXQVJSQU5USUVTLCBJTkNM
VURJTkcsIEJVVCBOT1QgTElNSVRFRCBUTywgVEhFCisgKiBJTVBMSUVEIFdBUlJBTlRJRVMgT0Yg
TUVSQ0hBTlRBQklMSVRZIEFORCBGSVRORVNTIEZPUiBBIFBBUlRJQ1VMQVIKKyAqIFBVUlBPU0Ug
QVJFIERJU0NMQUlNRUQuICBJTiBOTyBFVkVOVCBTSEFMTCBBUFBMRSBJTkMuIE9SCisgKiBDT05U
UklCVVRPUlMgQkUgTElBQkxFIEZPUiBBTlkgRElSRUNULCBJTkRJUkVDVCwgSU5DSURFTlRBTCwg
U1BFQ0lBTCwKKyAqIEVYRU1QTEFSWSwgT1IgQ09OU0VRVUVOVElBTCBEQU1BR0VTIChJTkNMVURJ
TkcsIEJVVCBOT1QgTElNSVRFRCBUTywKKyAqIFBST0NVUkVNRU5UIE9GIFNVQlNUSVRVVEUgR09P
RFMgT1IgU0VSVklDRVM7IExPU1MgT0YgVVNFLCBEQVRBLCBPUgorICogUFJPRklUUzsgT1IgQlVT
SU5FU1MgSU5URVJSVVBUSU9OKSBIT1dFVkVSIENBVVNFRCBBTkQgT04gQU5ZIFRIRU9SWQorICog
T0YgTElBQklMSVRZLCBXSEVUSEVSIElOIENPTlRSQUNULCBTVFJJQ1QgTElBQklMSVRZLCBPUiBU
T1JUCisgKiAoSU5DTFVESU5HIE5FR0xJR0VOQ0UgT1IgT1RIRVJXSVNFKSBBUklTSU5HIElOIEFO
WSBXQVkgT1VUIE9GIFRIRSBVU0UKKyAqIE9GIFRISVMgU09GVFdBUkUsIEVWRU4gSUYgQURWSVNF
RCBPRiBUSEUgUE9TU0lCSUxJVFkgT0YgU1VDSCBEQU1BR0UuIAorICovCisKKyNpbmNsdWRlICJj
b25maWcuaCIKKyNpbmNsdWRlICJKU01vZHVsZVJlY29yZC5oIgorCisjaW5jbHVkZSAiSWRlbnRp
ZmllcklubGluZXMuaCIKKyNpbmNsdWRlICJKU0NKU1ZhbHVlSW5saW5lcy5oIgorI2luY2x1ZGUg
IkpTQ2VsbElubGluZXMuaCIKKyNpbmNsdWRlICJTdHJ1Y3R1cmVJbmxpbmVzLmgiCisKK25hbWVz
cGFjZSBKU0MgeworCitjb25zdCBDbGFzc0luZm8gSlNNb2R1bGVSZWNvcmQ6OnNfaW5mbyA9IHsg
Ik1vZHVsZVJlY29yZCIsICZCYXNlOjpzX2luZm8sIDAsIENSRUFURV9NRVRIT0RfVEFCTEUoSlNN
b2R1bGVSZWNvcmQpIH07CisKK3ZvaWQgSlNNb2R1bGVSZWNvcmQ6OmRlc3Ryb3koSlNDZWxsKiBj
ZWxsKQoreworICAgIEpTTW9kdWxlUmVjb3JkKiB0aGlzT2JqZWN0ID0ganNDYXN0PEpTTW9kdWxl
UmVjb3JkKj4oY2VsbCk7CisgICAgdGhpc09iamVjdC0+SlNNb2R1bGVSZWNvcmQ6On5KU01vZHVs
ZVJlY29yZCgpOworfQorCisKK3ZvaWQgSlNNb2R1bGVSZWNvcmQ6OmZpbmlzaENyZWF0aW9uKFZN
JiB2bSkKK3sKKyAgICBCYXNlOjpmaW5pc2hDcmVhdGlvbih2bSk7CisgICAgQVNTRVJUKGluaGVy
aXRzKGluZm8oKSkpOworICAgIHB1dERpcmVjdCh2bSwgSWRlbnRpZmllcjo6ZnJvbVN0cmluZygm
dm0sIEFTQ0lJTGl0ZXJhbCgicmVnaXN0cnlFbnRyeSIpKSwganNVbmRlZmluZWQoKSk7Cit9CisK
K2F1dG8gSlNNb2R1bGVSZWNvcmQ6OkV4cG9ydEVudHJ5OjpjcmVhdGVMb2NhbChjb25zdCBJZGVu
dGlmaWVyJiBleHBvcnROYW1lLCBjb25zdCBJZGVudGlmaWVyJiBsb2NhbE5hbWUsIGNvbnN0IFZh
cmlhYmxlRW52aXJvbm1lbnRFbnRyeSYgdmFyaWFibGUpIC0+IEV4cG9ydEVudHJ5Cit7CisgICAg
cmV0dXJuIEV4cG9ydEVudHJ5IHsgVHlwZTo6TG9jYWwsIGV4cG9ydE5hbWUsIElkZW50aWZpZXIo
KSwgSWRlbnRpZmllcigpLCBsb2NhbE5hbWUsIHZhcmlhYmxlIH07Cit9CisKK2F1dG8gSlNNb2R1
bGVSZWNvcmQ6OkV4cG9ydEVudHJ5OjpjcmVhdGVOYW1lc3BhY2UoY29uc3QgSWRlbnRpZmllciYg
ZXhwb3J0TmFtZSwgY29uc3QgSWRlbnRpZmllciYgbW9kdWxlTmFtZSkgLT4gRXhwb3J0RW50cnkK
K3sKKyAgICByZXR1cm4gRXhwb3J0RW50cnkgeyBUeXBlOjpOYW1lc3BhY2UsIGV4cG9ydE5hbWUs
IG1vZHVsZU5hbWUsIElkZW50aWZpZXIoKSwgSWRlbnRpZmllcigpLCBWYXJpYWJsZUVudmlyb25t
ZW50RW50cnkoKSB9OworfQorCithdXRvIEpTTW9kdWxlUmVjb3JkOjpFeHBvcnRFbnRyeTo6Y3Jl
YXRlSW5kaXJlY3QoY29uc3QgSWRlbnRpZmllciYgZXhwb3J0TmFtZSwgY29uc3QgSWRlbnRpZmll
ciYgaW1wb3J0TmFtZSwgY29uc3QgSWRlbnRpZmllciYgbW9kdWxlTmFtZSkgLT4gRXhwb3J0RW50
cnkKK3sKKyAgICByZXR1cm4gRXhwb3J0RW50cnkgeyBUeXBlOjpJbmRpcmVjdCwgZXhwb3J0TmFt
ZSwgbW9kdWxlTmFtZSwgaW1wb3J0TmFtZSwgSWRlbnRpZmllcigpLCBWYXJpYWJsZUVudmlyb25t
ZW50RW50cnkoKSB9OworfQorCitzdGF0aWMgU3RyaW5nIHByaW50YWJsZU5hbWUoY29uc3QgUmVm
UHRyPFVuaXF1ZWRTdHJpbmdJbXBsPiYgdWlkKQoreworICAgIGlmICh1aWQtPmlzU3ltYm9sKCkp
CisgICAgICAgIHJldHVybiB1aWQuZ2V0KCk7CisgICAgcmV0dXJuIFdURjo6bWFrZVN0cmluZygi
JyIsIFN0cmluZyh1aWQuZ2V0KCkpLCAiJyIpOworfQorCitzdGF0aWMgU3RyaW5nIHByaW50YWJs
ZU5hbWUoY29uc3QgSWRlbnRpZmllciYgaWRlbnQpCit7CisgICAgcmV0dXJuIHByaW50YWJsZU5h
bWUoaWRlbnQuaW1wbCgpKTsKK30KKworCit2b2lkIEpTTW9kdWxlUmVjb3JkOjpkdW1wKCkKK3sK
KyAgICBkYXRhTG9nKCJcbkFuYWx5emluZyBNb2R1bGVSZWNvcmRcbiIpOworCisgICAgZGF0YUxv
ZygiICAgIERlcGVuZGVuY2llczogIiwgbV9yZXF1ZXN0ZWRNb2R1bGVzLnNpemUoKSwgIiBtb2R1
bGVzXG4iKTsKKyAgICBmb3IgKGNvbnN0IGF1dG8mIG1vZHVsZU5hbWUgOiBtX3JlcXVlc3RlZE1v
ZHVsZXMpCisgICAgICAgIGRhdGFMb2coIiAgICAgIG1vZHVsZSgiLCBwcmludGFibGVOYW1lKG1v
ZHVsZU5hbWUpLCAiKVxuIik7CisKKyAgICBkYXRhTG9nKCIgICAgSW1wb3J0OiAiLCBtX2ltcG9y
dEVudHJpZXMuc2l6ZSgpLCAiIGVudHJpZXNcbiIpOworICAgIGZvciAoY29uc3QgYXV0byYgcGFp
ciA6IG1faW1wb3J0RW50cmllcykKKyAgICAgICAgZGF0YUxvZygiICAgICAgaW1wb3J0KCIsIHBy
aW50YWJsZU5hbWUocGFpci52YWx1ZS5pbXBvcnROYW1lKSwgIiksIGxvY2FsKCIsIHByaW50YWJs
ZU5hbWUocGFpci52YWx1ZS5sb2NhbE5hbWUpLCAiKSwgbW9kdWxlKCIsIHByaW50YWJsZU5hbWUo
cGFpci52YWx1ZS5tb2R1bGVSZXF1ZXN0KSwgIilcbiIpOworCisgICAgZGF0YUxvZygiICAgIEV4
cG9ydDogIiwgbV9leHBvcnRFbnRyaWVzLnNpemUoKSwgIiBlbnRyaWVzXG4iKTsKKyAgICBmb3Ig
KGNvbnN0IGF1dG8mIHBhaXIgOiBtX2V4cG9ydEVudHJpZXMpIHsKKyAgICAgICAgY29uc3QgRXhw
b3J0RW50cnkmIGVudHJ5ID0gcGFpci52YWx1ZTsKKyAgICAgICAgc3dpdGNoIChlbnRyeS50eXBl
KSB7CisgICAgICAgIGNhc2UgRXhwb3J0RW50cnk6OlR5cGU6OkxvY2FsOgorICAgICAgICAgICAg
ZGF0YUxvZygiICAgICAgW0xvY2FsXSAiLCAiZXhwb3J0KCIsIHByaW50YWJsZU5hbWUoZW50cnku
ZXhwb3J0TmFtZSksICIpLCBsb2NhbCgiLCBwcmludGFibGVOYW1lKGVudHJ5LmxvY2FsTmFtZSks
ICIpXG4iKTsKKyAgICAgICAgICAgIGJyZWFrOworCisgICAgICAgIGNhc2UgRXhwb3J0RW50cnk6
OlR5cGU6Ok5hbWVzcGFjZToKKyAgICAgICAgICAgIGRhdGFMb2coIiAgICAgIFtOYW1lc3BhY2Vd
ICIsICJleHBvcnQoIiwgcHJpbnRhYmxlTmFtZShlbnRyeS5leHBvcnROYW1lKSwgIiksIG1vZHVs
ZSgiLCBwcmludGFibGVOYW1lKGVudHJ5Lm1vZHVsZU5hbWUpLCAiKVxuIik7CisgICAgICAgICAg
ICBicmVhazsKKworICAgICAgICBjYXNlIEV4cG9ydEVudHJ5OjpUeXBlOjpJbmRpcmVjdDoKKyAg
ICAgICAgICAgIGRhdGFMb2coIiAgICAgIFtJbmRpcmVjdF0gIiwgImV4cG9ydCgiLCBwcmludGFi
bGVOYW1lKGVudHJ5LmV4cG9ydE5hbWUpLCAiKSwgaW1wb3J0KCIsIHByaW50YWJsZU5hbWUoZW50
cnkuaW1wb3J0TmFtZSksICIpLCBtb2R1bGUoIiwgcHJpbnRhYmxlTmFtZShlbnRyeS5tb2R1bGVO
YW1lKSwgIilcbiIpOworICAgICAgICAgICAgYnJlYWs7CisgICAgICAgIH0KKyAgICB9CisgICAg
Zm9yIChjb25zdCBhdXRvJiBtb2R1bGVOYW1lIDogbV9zdGFyRXhwb3J0RW50cmllcykKKyAgICAg
ICAgZGF0YUxvZygiICAgICAgW1N0YXJdIG1vZHVsZSgiLCBwcmludGFibGVOYW1lKG1vZHVsZU5h
bWUuZ2V0KCkpLCAiKVxuIik7Cit9CisKK30gLy8gbmFtZXNwYWNlIEpTQwpkaWZmIC0tZ2l0IGEv
U291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvSlNNb2R1bGVSZWNvcmQuaCBiL1NvdXJjZS9K
YXZhU2NyaXB0Q29yZS9ydW50aW1lL0pTTW9kdWxlUmVjb3JkLmgKbmV3IGZpbGUgbW9kZSAxMDA2
NDQKaW5kZXggMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMC4uOTZlMmZk
ZjQ1MGU1ZGI4NzI5YzVmY2M1NWZiNzhkMmM0ZjZjOTc4MQotLS0gL2Rldi9udWxsCisrKyBiL1Nv
dXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL0pTTW9kdWxlUmVjb3JkLmgKQEAgLTAsMCArMSwx
NTcgQEAKKy8qCisgKiBDb3B5cmlnaHQgKEMpIDIwMTUgQXBwbGUgSW5jLiBBbGwgcmlnaHRzIHJl
c2VydmVkLgorICoKKyAqIFJlZGlzdHJpYnV0aW9uIGFuZCB1c2UgaW4gc291cmNlIGFuZCBiaW5h
cnkgZm9ybXMsIHdpdGggb3Igd2l0aG91dAorICogbW9kaWZpY2F0aW9uLCBhcmUgcGVybWl0dGVk
IHByb3ZpZGVkIHRoYXQgdGhlIGZvbGxvd2luZyBjb25kaXRpb25zCisgKiBhcmUgbWV0OgorICog
MS4gUmVkaXN0cmlidXRpb25zIG9mIHNvdXJjZSBjb2RlIG11c3QgcmV0YWluIHRoZSBhYm92ZSBj
b3B5cmlnaHQKKyAqICAgIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBm
b2xsb3dpbmcgZGlzY2xhaW1lci4KKyAqIDIuIFJlZGlzdHJpYnV0aW9ucyBpbiBiaW5hcnkgZm9y
bSBtdXN0IHJlcHJvZHVjZSB0aGUgYWJvdmUgY29weXJpZ2h0CisgKiAgICBub3RpY2UsIHRoaXMg
bGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIgaW4gdGhlCisg
KiAgICBkb2N1bWVudGF0aW9uIGFuZC9vciBvdGhlciBtYXRlcmlhbHMgcHJvdmlkZWQgd2l0aCB0
aGUgZGlzdHJpYnV0aW9uLgorICoKKyAqIFRISVMgU09GVFdBUkUgSVMgUFJPVklERUQgQlkgQVBQ
TEUgSU5DLiBgYEFTIElTJycgQU5EIEFOWQorICogRVhQUkVTUyBPUiBJTVBMSUVEIFdBUlJBTlRJ
RVMsIElOQ0xVRElORywgQlVUIE5PVCBMSU1JVEVEIFRPLCBUSEUKKyAqIElNUExJRUQgV0FSUkFO
VElFUyBPRiBNRVJDSEFOVEFCSUxJVFkgQU5EIEZJVE5FU1MgRk9SIEEgUEFSVElDVUxBUgorICog
UFVSUE9TRSBBUkUgRElTQ0xBSU1FRC4gIElOIE5PIEVWRU5UIFNIQUxMIEFQUExFIElOQy4gT1IK
KyAqIENPTlRSSUJVVE9SUyBCRSBMSUFCTEUgRk9SIEFOWSBESVJFQ1QsIElORElSRUNULCBJTkNJ
REVOVEFMLCBTUEVDSUFMLAorICogRVhFTVBMQVJZLCBPUiBDT05TRVFVRU5USUFMIERBTUFHRVMg
KElOQ0xVRElORywgQlVUIE5PVCBMSU1JVEVEIFRPLAorICogUFJPQ1VSRU1FTlQgT0YgU1VCU1RJ
VFVURSBHT09EUyBPUiBTRVJWSUNFUzsgTE9TUyBPRiBVU0UsIERBVEEsIE9SCisgKiBQUk9GSVRT
OyBPUiBCVVNJTkVTUyBJTlRFUlJVUFRJT04pIEhPV0VWRVIgQ0FVU0VEIEFORCBPTiBBTlkgVEhF
T1JZCisgKiBPRiBMSUFCSUxJVFksIFdIRVRIRVIgSU4gQ09OVFJBQ1QsIFNUUklDVCBMSUFCSUxJ
VFksIE9SIFRPUlQKKyAqIChJTkNMVURJTkcgTkVHTElHRU5DRSBPUiBPVEhFUldJU0UpIEFSSVNJ
TkcgSU4gQU5ZIFdBWSBPVVQgT0YgVEhFIFVTRQorICogT0YgVEhJUyBTT0ZUV0FSRSwgRVZFTiBJ
RiBBRFZJU0VEIE9GIFRIRSBQT1NTSUJJTElUWSBPRiBTVUNIIERBTUFHRS4KKyAqLworCisjaWZu
ZGVmIEpTTW9kdWxlUmVjb3JkX2gKKyNkZWZpbmUgSlNNb2R1bGVSZWNvcmRfaAorCisjaW5jbHVk
ZSAiSWRlbnRpZmllci5oIgorI2luY2x1ZGUgIkpTRGVzdHJ1Y3RpYmxlT2JqZWN0LmgiCisjaW5j
bHVkZSAiVmFyaWFibGVFbnZpcm9ubWVudC5oIgorI2luY2x1ZGUgPHd0Zi9IYXNoTWFwLmg+Cisj
aW5jbHVkZSA8d3RmL0xpc3RIYXNoU2V0Lmg+CisKK25hbWVzcGFjZSBKU0MgeworCisvLyBCYXNl
ZCBvbiB0aGUgU291cmNlIFRleHQgTW9kdWxlIFJlY29yZAorLy8gaHR0cDovL3d3dy5lY21hLWlu
dGVybmF0aW9uYWwub3JnL2VjbWEtMjYyLzYuMC8jc2VjLXNvdXJjZS10ZXh0LW1vZHVsZS1yZWNv
cmRzCitjbGFzcyBKU01vZHVsZVJlY29yZCA6IHB1YmxpYyBKU0Rlc3RydWN0aWJsZU9iamVjdCB7
CitwdWJsaWM6CisgICAgdHlwZWRlZiBKU0Rlc3RydWN0aWJsZU9iamVjdCBCYXNlOworCisgICAg
c3RydWN0IEV4cG9ydEVudHJ5IHsKKyAgICAgICAgZW51bSBjbGFzcyBUeXBlIHsKKyAgICAgICAg
ICAgIExvY2FsLAorICAgICAgICAgICAgTmFtZXNwYWNlLAorICAgICAgICAgICAgSW5kaXJlY3QK
KyAgICAgICAgfTsKKworICAgICAgICBzdGF0aWMgRXhwb3J0RW50cnkgY3JlYXRlTG9jYWwoY29u
c3QgSWRlbnRpZmllciYgZXhwb3J0TmFtZSwgY29uc3QgSWRlbnRpZmllciYgbG9jYWxOYW1lLCBj
b25zdCBWYXJpYWJsZUVudmlyb25tZW50RW50cnkmKTsKKyAgICAgICAgc3RhdGljIEV4cG9ydEVu
dHJ5IGNyZWF0ZU5hbWVzcGFjZShjb25zdCBJZGVudGlmaWVyJiBleHBvcnROYW1lLCBjb25zdCBJ
ZGVudGlmaWVyJiBtb2R1bGVOYW1lKTsKKyAgICAgICAgc3RhdGljIEV4cG9ydEVudHJ5IGNyZWF0
ZUluZGlyZWN0KGNvbnN0IElkZW50aWZpZXImIGV4cG9ydE5hbWUsIGNvbnN0IElkZW50aWZpZXIm
IGltcG9ydE5hbWUsIGNvbnN0IElkZW50aWZpZXImIG1vZHVsZU5hbWUpOworCisgICAgICAgIFR5
cGUgdHlwZTsKKyAgICAgICAgSWRlbnRpZmllciBleHBvcnROYW1lOworICAgICAgICBJZGVudGlm
aWVyIG1vZHVsZU5hbWU7CisgICAgICAgIElkZW50aWZpZXIgaW1wb3J0TmFtZTsKKyAgICAgICAg
SWRlbnRpZmllciBsb2NhbE5hbWU7CisgICAgICAgIFZhcmlhYmxlRW52aXJvbm1lbnRFbnRyeSB2
YXJpYWJsZTsKKyAgICB9OworCisgICAgc3RydWN0IEltcG9ydEVudHJ5IHsKKyAgICAgICAgSWRl
bnRpZmllciBtb2R1bGVSZXF1ZXN0OworICAgICAgICBJZGVudGlmaWVyIGltcG9ydE5hbWU7Cisg
ICAgICAgIElkZW50aWZpZXIgbG9jYWxOYW1lOworCisgICAgICAgIGJvb2wgaXNOYW1lc3BhY2Uo
Vk0mIHZtKSBjb25zdAorICAgICAgICB7CisgICAgICAgICAgICByZXR1cm4gaW1wb3J0TmFtZSA9
PSB2bS5wcm9wZXJ0eU5hbWVzLT50aW1lc0lkZW50aWZpZXI7CisgICAgICAgIH0KKyAgICB9Owor
CisgICAgdHlwZWRlZiBXVEY6Okxpc3RIYXNoU2V0PFJlZlB0cjxVbmlxdWVkU3RyaW5nSW1wbD4s
IElkZW50aWZpZXJSZXBIYXNoPiBPcmRlcmVkSWRlbnRpZmllclNldDsKKyAgICB0eXBlZGVmIEhh
c2hNYXA8UmVmUHRyPFVuaXF1ZWRTdHJpbmdJbXBsPiwgSW1wb3J0RW50cnksIElkZW50aWZpZXJS
ZXBIYXNoLCBIYXNoVHJhaXRzPFJlZlB0cjxVbmlxdWVkU3RyaW5nSW1wbD4+PiBJbXBvcnRNYXA7
CisgICAgdHlwZWRlZiBIYXNoTWFwPFJlZlB0cjxVbmlxdWVkU3RyaW5nSW1wbD4sIEV4cG9ydEVu
dHJ5LCBJZGVudGlmaWVyUmVwSGFzaCwgSGFzaFRyYWl0czxSZWZQdHI8VW5pcXVlZFN0cmluZ0lt
cGw+Pj4gRXhwb3J0TWFwOworCisgICAgREVDTEFSRV9FWFBPUlRfSU5GTzsKKworICAgIHN0YXRp
YyBTdHJ1Y3R1cmUqIGNyZWF0ZVN0cnVjdHVyZShWTSYgdm0sIEpTR2xvYmFsT2JqZWN0KiBnbG9i
YWxPYmplY3QsIEpTVmFsdWUgcHJvdG90eXBlKQorICAgIHsKKyAgICAgICAgcmV0dXJuIFN0cnVj
dHVyZTo6Y3JlYXRlKHZtLCBnbG9iYWxPYmplY3QsIHByb3RvdHlwZSwgVHlwZUluZm8oT2JqZWN0
VHlwZSwgU3RydWN0dXJlRmxhZ3MpLCBpbmZvKCkpOworICAgIH0KKworICAgIHN0YXRpYyBKU01v
ZHVsZVJlY29yZCogY3JlYXRlKFZNJiB2bSwgU3RydWN0dXJlKiBzdHJ1Y3R1cmUpCisgICAgewor
ICAgICAgICBKU01vZHVsZVJlY29yZCogaW5zdGFuY2UgPSBuZXcgKE5vdE51bGwsIGFsbG9jYXRl
Q2VsbDxKU01vZHVsZVJlY29yZD4odm0uaGVhcCkpIEpTTW9kdWxlUmVjb3JkKHZtLCBzdHJ1Y3R1
cmUpOworICAgICAgICBpbnN0YW5jZS0+ZmluaXNoQ3JlYXRpb24odm0pOworICAgICAgICByZXR1
cm4gaW5zdGFuY2U7CisgICAgfQorCisgICAgc3RhdGljIEpTTW9kdWxlUmVjb3JkKiBjcmVhdGUo
RXhlY1N0YXRlKiBleGVjLCBTdHJ1Y3R1cmUqIHN0cnVjdHVyZSkKKyAgICB7CisgICAgICAgIHJl
dHVybiBjcmVhdGUoZXhlYy0+dm0oKSwgc3RydWN0dXJlKTsKKyAgICB9CisKKyAgICB2b2lkIGFw
cGVuZFJlcXVlc3RlZE1vZHVsZShjb25zdCBJZGVudGlmaWVyJik7CisgICAgdm9pZCBhZGRTdGFy
RXhwb3J0RW50cnkoY29uc3QgSWRlbnRpZmllciYpOworICAgIHZvaWQgYWRkSW1wb3J0RW50cnko
Y29uc3QgSW1wb3J0RW50cnkmKTsKKyAgICB2b2lkIGFkZEV4cG9ydEVudHJ5KGNvbnN0IEV4cG9y
dEVudHJ5Jik7CisKKyAgICBjb25zdCBJbXBvcnRFbnRyeSYgbG9va1VwSW1wb3J0RW50cnkoY29u
c3QgUmVmUHRyPFVuaXF1ZWRTdHJpbmdJbXBsPiYgbG9jYWxOYW1lKTsKKworICAgIGNvbnN0IE9y
ZGVyZWRJZGVudGlmaWVyU2V0JiByZXF1ZXN0ZWRNb2R1bGVzKCkgY29uc3QgeyByZXR1cm4gbV9y
ZXF1ZXN0ZWRNb2R1bGVzOyB9CisKKyAgICB2b2lkIGR1bXAoKTsKKworcHJpdmF0ZToKKyAgICBK
U01vZHVsZVJlY29yZChWTSYgdm0sIFN0cnVjdHVyZSogc3RydWN0dXJlKQorICAgICAgICA6IEJh
c2Uodm0sIHN0cnVjdHVyZSkKKyAgICB7CisgICAgfQorCisgICAgdm9pZCBmaW5pc2hDcmVhdGlv
bihWTSYpOworCisgICAgc3RhdGljIHZvaWQgZGVzdHJveShKU0NlbGwqKTsKKworICAgIC8vIE1h
cCBsb2NhbE5hbWUgLT4gSW1wb3J0RW50cnkuCisgICAgSW1wb3J0TWFwIG1faW1wb3J0RW50cmll
czsKKworICAgIC8vIE1hcCBleHBvcnROYW1lIC0+IEV4cG9ydEVudHJ5LgorICAgIEV4cG9ydE1h
cCBtX2V4cG9ydEVudHJpZXM7CisKKyAgICBJZGVudGlmaWVyU2V0IG1fc3RhckV4cG9ydEVudHJp
ZXM7CisKKyAgICAvLyBTYXZlIHRoZSBvY2N1cnJlbmNlIG9yZGVyIHNpbmNlIHRoZSBtb2R1bGUg
bG9hZGVyIGxvYWRzIGFuZCBydW5zIHRoZSBtb2R1bGVzIGluIHRoaXMgb3JkZXIuCisgICAgLy8g
aHR0cDovL3d3dy5lY21hLWludGVybmF0aW9uYWwub3JnL2VjbWEtMjYyLzYuMC8jc2VjLW1vZHVs
ZWV2YWx1YXRpb24KKyAgICBPcmRlcmVkSWRlbnRpZmllclNldCBtX3JlcXVlc3RlZE1vZHVsZXM7
Cit9OworCitpbmxpbmUgdm9pZCBKU01vZHVsZVJlY29yZDo6YXBwZW5kUmVxdWVzdGVkTW9kdWxl
KGNvbnN0IElkZW50aWZpZXImIG1vZHVsZU5hbWUpCit7CisgICAgbV9yZXF1ZXN0ZWRNb2R1bGVz
LmFkZChtb2R1bGVOYW1lLmltcGwoKSk7Cit9CisKK2lubGluZSB2b2lkIEpTTW9kdWxlUmVjb3Jk
OjphZGRJbXBvcnRFbnRyeShjb25zdCBJbXBvcnRFbnRyeSYgZW50cnkpCit7CisgICAgbV9pbXBv
cnRFbnRyaWVzLmFkZChlbnRyeS5sb2NhbE5hbWUuaW1wbCgpLCBlbnRyeSk7Cit9CisKK2lubGlu
ZSB2b2lkIEpTTW9kdWxlUmVjb3JkOjphZGRFeHBvcnRFbnRyeShjb25zdCBFeHBvcnRFbnRyeSYg
ZW50cnkpCit7CisgICAgbV9leHBvcnRFbnRyaWVzLmFkZChlbnRyeS5leHBvcnROYW1lLmltcGwo
KSwgZW50cnkpOworfQorCitpbmxpbmUgdm9pZCBKU01vZHVsZVJlY29yZDo6YWRkU3RhckV4cG9y
dEVudHJ5KGNvbnN0IElkZW50aWZpZXImIG1vZHVsZU5hbWUpCit7CisgICAgbV9zdGFyRXhwb3J0
RW50cmllcy5hZGQobW9kdWxlTmFtZS5pbXBsKCkpOworfQorCitpbmxpbmUgYXV0byBKU01vZHVs
ZVJlY29yZDo6bG9va1VwSW1wb3J0RW50cnkoY29uc3QgUmVmUHRyPFVuaXF1ZWRTdHJpbmdJbXBs
PiYgbG9jYWxOYW1lKSAtPiBjb25zdCBJbXBvcnRFbnRyeSYKK3sKKyAgICByZXR1cm4gKCptX2lt
cG9ydEVudHJpZXMuZmluZChsb2NhbE5hbWUpKS52YWx1ZTsKK30KKworfSAvLyBuYW1lc3BhY2Ug
SlNDCisKKyNlbmRpZiAvLyBKU01vZHVsZVJlY29yZF9oCmRpZmYgLS1naXQgYS9Tb3VyY2UvSmF2
YVNjcmlwdENvcmUvcnVudGltZS9KU1Byb21pc2VDb25zdHJ1Y3Rvci5jcHAgYi9Tb3VyY2UvSmF2
YVNjcmlwdENvcmUvcnVudGltZS9KU1Byb21pc2VDb25zdHJ1Y3Rvci5jcHAKaW5kZXggNDRlMWU3
M2NhYmE1NWIwYmY1NDA5MmVjNTg0ZmU2NTdlNTQ2MWFlNS4uMjQzYmM1MjdjNDZmZmQ1ZWRhZDM2
NGQ1MjAwZmY4ZWY5NDZjMmQ4NSAxMDA2NDQKLS0tIGEvU291cmNlL0phdmFTY3JpcHRDb3JlL3J1
bnRpbWUvSlNQcm9taXNlQ29uc3RydWN0b3IuY3BwCisrKyBiL1NvdXJjZS9KYXZhU2NyaXB0Q29y
ZS9ydW50aW1lL0pTUHJvbWlzZUNvbnN0cnVjdG9yLmNwcApAQCAtMjYsNiArMjYsNyBAQAogI2lu
Y2x1ZGUgImNvbmZpZy5oIgogI2luY2x1ZGUgIkpTUHJvbWlzZUNvbnN0cnVjdG9yLmgiCiAKKyNp
bmNsdWRlICJCdWlsdGluTmFtZXMuaCIKICNpbmNsdWRlICJFcnJvci5oIgogI2luY2x1ZGUgIkV4
Y2VwdGlvbi5oIgogI2luY2x1ZGUgIkl0ZXJhdG9yT3BlcmF0aW9ucy5oIgpAQCAtODEsNiArODIs
NyBAQCB2b2lkIEpTUHJvbWlzZUNvbnN0cnVjdG9yOjpmaW5pc2hDcmVhdGlvbihWTSYgdm0sIEpT
UHJvbWlzZVByb3RvdHlwZSogcHJvbWlzZVBybwogICAgIEJhc2U6OmZpbmlzaENyZWF0aW9uKHZt
LCBBU0NJSUxpdGVyYWwoIlByb21pc2UiKSk7CiAgICAgcHV0RGlyZWN0V2l0aG91dFRyYW5zaXRp
b24odm0sIHZtLnByb3BlcnR5TmFtZXMtPnByb3RvdHlwZSwgcHJvbWlzZVByb3RvdHlwZSwgRG9u
dEVudW0gfCBEb250RGVsZXRlIHwgUmVhZE9ubHkpOwogICAgIHB1dERpcmVjdFdpdGhvdXRUcmFu
c2l0aW9uKHZtLCB2bS5wcm9wZXJ0eU5hbWVzLT5sZW5ndGgsIGpzTnVtYmVyKDEpLCBSZWFkT25s
eSB8IERvbnRFbnVtIHwgRG9udERlbGV0ZSk7CisgICAgcHV0RGlyZWN0QnVpbHRpbkZ1bmN0aW9u
V2l0aG91dFRyYW5zaXRpb24odm0sIGdsb2JhbE9iamVjdCgpLCB2bS5wcm9wZXJ0eU5hbWVzLT5i
dWlsdGluTmFtZXMoKS5hbGxQcml2YXRlTmFtZSgpLCBwcm9taXNlQ29uc3RydWN0b3JQcml2YXRl
QWxsQ29kZUdlbmVyYXRvcih2bSksIFJlYWRPbmx5IHwgRG9udEVudW0gfCBEb250RGVsZXRlKTsK
IH0KIAogc3RhdGljIEVuY29kZWRKU1ZhbHVlIEpTQ19IT1NUX0NBTEwgY29uc3RydWN0UHJvbWlz
ZShFeGVjU3RhdGUqIGV4ZWMpCmRpZmYgLS1naXQgYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVu
dGltZS9KU1Byb21pc2VEZWZlcnJlZC5jcHAgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGlt
ZS9KU1Byb21pc2VEZWZlcnJlZC5jcHAKaW5kZXggNmYzNTQzMjM1YmQ4YTA5Mzg0MThmZjdhZmZj
ZGQwMmIxMzU4NDc0Ny4uMDAwYjY0NjJkZmM3YWFkNDIwODRlMmM5NmZlMzJlNzgwN2M3MDJkZSAx
MDA2NDQKLS0tIGEvU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvSlNQcm9taXNlRGVmZXJy
ZWQuY3BwCisrKyBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL0pTUHJvbWlzZURlZmVy
cmVkLmNwcApAQCAtNzIsNiArNzIsMjggQEAgSlNQcm9taXNlRGVmZXJyZWQ6OkpTUHJvbWlzZURl
ZmVycmVkKFZNJiB2bSkKIHsKIH0KIAorc3RhdGljIHZvaWQgY2FsbEZ1bmN0aW9uKEV4ZWNTdGF0
ZSogZXhlYywgSlNWYWx1ZSBmdW5jdGlvbiwgSlNWYWx1ZSB2YWx1ZSkKK3sKKyAgICBDYWxsRGF0
YSBjYWxsRGF0YTsKKyAgICBDYWxsVHlwZSBjYWxsVHlwZSA9IGdldENhbGxEYXRhKGZ1bmN0aW9u
LCBjYWxsRGF0YSk7CisgICAgQVNTRVJUKGNhbGxUeXBlICE9IENhbGxUeXBlTm9uZSk7CisKKyAg
ICBNYXJrZWRBcmd1bWVudEJ1ZmZlciBhcmd1bWVudHM7CisgICAgYXJndW1lbnRzLmFwcGVuZCh2
YWx1ZSk7CisKKyAgICBjYWxsKGV4ZWMsIGZ1bmN0aW9uLCBjYWxsVHlwZSwgY2FsbERhdGEsIGpz
VW5kZWZpbmVkKCksIGFyZ3VtZW50cyk7Cit9CisKK3ZvaWQgSlNQcm9taXNlRGVmZXJyZWQ6OnJl
c29sdmUoRXhlY1N0YXRlKiBleGVjLCBKU1ZhbHVlIHZhbHVlKQoreworICAgIGNhbGxGdW5jdGlv
bihleGVjLCBtX3Jlc29sdmUuZ2V0KCksIHZhbHVlKTsKK30KKwordm9pZCBKU1Byb21pc2VEZWZl
cnJlZDo6cmVqZWN0KEV4ZWNTdGF0ZSogZXhlYywgSlNWYWx1ZSByZWFzb24pCit7CisgICAgY2Fs
bEZ1bmN0aW9uKGV4ZWMsIG1fcmVqZWN0LmdldCgpLCByZWFzb24pOworfQorCiB2b2lkIEpTUHJv
bWlzZURlZmVycmVkOjpmaW5pc2hDcmVhdGlvbihWTSYgdm0sIEpTT2JqZWN0KiBwcm9taXNlLCBK
U1ZhbHVlIHJlc29sdmUsIEpTVmFsdWUgcmVqZWN0KQogewogICAgIEJhc2U6OmZpbmlzaENyZWF0
aW9uKHZtKTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL0pTUHJv
bWlzZURlZmVycmVkLmggYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9KU1Byb21pc2VE
ZWZlcnJlZC5oCmluZGV4IGRlYTBkMTdmOWI0MmNlYzY3YWNjODIzNTUwNjU5NWRiNTFlOTQxMDcu
LjRhMGI0Yjg1NjhhNDdiZGQ5ZmUyYzM4Zjg1MDQ3NmYyZGI5MWRhMjcgMTAwNjQ0Ci0tLSBhL1Nv
dXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL0pTUHJvbWlzZURlZmVycmVkLmgKKysrIGIvU291
cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvSlNQcm9taXNlRGVmZXJyZWQuaApAQCAtNTAsNiAr
NTAsOSBAQCBjbGFzcyBKU1Byb21pc2VEZWZlcnJlZCBmaW5hbCA6IHB1YmxpYyBKU0NlbGwgewog
ICAgIEpTVmFsdWUgcmVzb2x2ZSgpIGNvbnN0IHsgcmV0dXJuIG1fcmVzb2x2ZS5nZXQoKTsgfQog
ICAgIEpTVmFsdWUgcmVqZWN0KCkgY29uc3QgeyByZXR1cm4gbV9yZWplY3QuZ2V0KCk7IH0KIAor
ICAgIEpTX0VYUE9SVF9QUklWQVRFIHZvaWQgcmVzb2x2ZShFeGVjU3RhdGUqLCBKU1ZhbHVlKTsK
KyAgICBKU19FWFBPUlRfUFJJVkFURSB2b2lkIHJlamVjdChFeGVjU3RhdGUqLCBKU1ZhbHVlKTsK
KwogcHJpdmF0ZToKICAgICBKU1Byb21pc2VEZWZlcnJlZChWTSYpOwogICAgIHZvaWQgZmluaXNo
Q3JlYXRpb24oVk0mLCBKU09iamVjdCosIEpTVmFsdWUsIEpTVmFsdWUpOwpkaWZmIC0tZ2l0IGEv
U291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvSlNQcm9taXNlUHJvdG90eXBlLmNwcCBiL1Nv
dXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL0pTUHJvbWlzZVByb3RvdHlwZS5jcHAKaW5kZXgg
YTBmMTAyNDMyMGMxNGJiMzY0ZTgxMDM0MzkzNWFkNzkzYTdkYTQ4Ni4uMDI2ODM3MzQ4MDc1ZGEz
ZTQ3ODdiNGEyZGY0Y2VlZWM1MWNhNjE5ZCAxMDA2NDQKLS0tIGEvU291cmNlL0phdmFTY3JpcHRD
b3JlL3J1bnRpbWUvSlNQcm9taXNlUHJvdG90eXBlLmNwcAorKysgYi9Tb3VyY2UvSmF2YVNjcmlw
dENvcmUvcnVudGltZS9KU1Byb21pc2VQcm90b3R5cGUuY3BwCkBAIC0yNiw2ICsyNiw3IEBACiAj
aW5jbHVkZSAiY29uZmlnLmgiCiAjaW5jbHVkZSAiSlNQcm9taXNlUHJvdG90eXBlLmgiCiAKKyNp
bmNsdWRlICJCdWlsdGluTmFtZXMuaCIKICNpbmNsdWRlICJFcnJvci5oIgogI2luY2x1ZGUgIkpT
Q0J1aWx0aW5zLmgiCiAjaW5jbHVkZSAiSlNDSlNWYWx1ZUlubGluZXMuaCIKQEAgLTU0LDEwICs1
NSw5IEBAIGNvbnN0IENsYXNzSW5mbyBKU1Byb21pc2VQcm90b3R5cGU6OnNfaW5mbyA9IHsgIlBy
b21pc2VQcm90b3R5cGUiLCAmSlNOb25GaW5hbE9iCiBAZW5kCiAqLwogCi1KU1Byb21pc2VQcm90
b3R5cGUqIEpTUHJvbWlzZVByb3RvdHlwZTo6Y3JlYXRlKEV4ZWNTdGF0ZSogZXhlYywgSlNHbG9i
YWxPYmplY3QqLCBTdHJ1Y3R1cmUqIHN0cnVjdHVyZSkKK0pTUHJvbWlzZVByb3RvdHlwZSogSlNQ
cm9taXNlUHJvdG90eXBlOjpjcmVhdGUoVk0mIHZtLCBKU0dsb2JhbE9iamVjdCosIFN0cnVjdHVy
ZSogc3RydWN0dXJlKQogewotICAgIFZNJiB2bSA9IGV4ZWMtPnZtKCk7Ci0gICAgSlNQcm9taXNl
UHJvdG90eXBlKiBvYmplY3QgPSBuZXcgKE5vdE51bGwsIGFsbG9jYXRlQ2VsbDxKU1Byb21pc2VQ
cm90b3R5cGU+KHZtLmhlYXApKSBKU1Byb21pc2VQcm90b3R5cGUoZXhlYywgc3RydWN0dXJlKTsK
KyAgICBKU1Byb21pc2VQcm90b3R5cGUqIG9iamVjdCA9IG5ldyAoTm90TnVsbCwgYWxsb2NhdGVD
ZWxsPEpTUHJvbWlzZVByb3RvdHlwZT4odm0uaGVhcCkpIEpTUHJvbWlzZVByb3RvdHlwZSh2bSwg
c3RydWN0dXJlKTsKICAgICBvYmplY3QtPmZpbmlzaENyZWF0aW9uKHZtLCBzdHJ1Y3R1cmUpOwog
ICAgIHJldHVybiBvYmplY3Q7CiB9CkBAIC02NywxNCArNjcsMTUgQEAgU3RydWN0dXJlKiBKU1By
b21pc2VQcm90b3R5cGU6OmNyZWF0ZVN0cnVjdHVyZShWTSYgdm0sIEpTR2xvYmFsT2JqZWN0KiBn
bG9iYWxPYmoKICAgICByZXR1cm4gU3RydWN0dXJlOjpjcmVhdGUodm0sIGdsb2JhbE9iamVjdCwg
cHJvdG90eXBlLCBUeXBlSW5mbyhPYmplY3RUeXBlLCBTdHJ1Y3R1cmVGbGFncyksIGluZm8oKSk7
CiB9CiAKLUpTUHJvbWlzZVByb3RvdHlwZTo6SlNQcm9taXNlUHJvdG90eXBlKEV4ZWNTdGF0ZSog
ZXhlYywgU3RydWN0dXJlKiBzdHJ1Y3R1cmUpCi0gICAgOiBKU05vbkZpbmFsT2JqZWN0KGV4ZWMt
PnZtKCksIHN0cnVjdHVyZSkKK0pTUHJvbWlzZVByb3RvdHlwZTo6SlNQcm9taXNlUHJvdG90eXBl
KFZNJiB2bSwgU3RydWN0dXJlKiBzdHJ1Y3R1cmUpCisgICAgOiBKU05vbkZpbmFsT2JqZWN0KHZt
LCBzdHJ1Y3R1cmUpCiB7CiB9CiAKIHZvaWQgSlNQcm9taXNlUHJvdG90eXBlOjpmaW5pc2hDcmVh
dGlvbihWTSYgdm0sIFN0cnVjdHVyZSopCiB7CiAgICAgQmFzZTo6ZmluaXNoQ3JlYXRpb24odm0p
OworICAgIHB1dERpcmVjdEJ1aWx0aW5GdW5jdGlvbldpdGhvdXRUcmFuc2l0aW9uKHZtLCBnbG9i
YWxPYmplY3QoKSwgdm0ucHJvcGVydHlOYW1lcy0+YnVpbHRpbk5hbWVzKCkudGhlblByaXZhdGVO
YW1lKCksIHByb21pc2VQcm90b3R5cGVQcml2YXRlVGhlbkNvZGVHZW5lcmF0b3Iodm0pLCBSZWFk
T25seSB8IERvbnRFbnVtIHwgRG9udERlbGV0ZSk7CiB9CiAKIGJvb2wgSlNQcm9taXNlUHJvdG90
eXBlOjpnZXRPd25Qcm9wZXJ0eVNsb3QoSlNPYmplY3QqIG9iamVjdCwgRXhlY1N0YXRlKiBleGVj
LCBQcm9wZXJ0eU5hbWUgcHJvcGVydHlOYW1lLCBQcm9wZXJ0eVNsb3QmIHNsb3QpCmRpZmYgLS1n
aXQgYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9KU1Byb21pc2VQcm90b3R5cGUuaCBi
L1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL0pTUHJvbWlzZVByb3RvdHlwZS5oCmluZGV4
IDQ1OGQxNDExOWRkZjlhYmUwNzYzYjc3NzM5YjRlYTliODVjMjE5MDYuLjRlODcxYzc1NmNjOGU3
NTc3YTA3MDQxMTU2MDNmOTNlODU1M2UxZjcgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9KYXZhU2NyaXB0
Q29yZS9ydW50aW1lL0pTUHJvbWlzZVByb3RvdHlwZS5oCisrKyBiL1NvdXJjZS9KYXZhU2NyaXB0
Q29yZS9ydW50aW1lL0pTUHJvbWlzZVByb3RvdHlwZS5oCkBAIC0zNSw3ICszNSw3IEBAIGNsYXNz
IEpTUHJvbWlzZVByb3RvdHlwZSA6IHB1YmxpYyBKU05vbkZpbmFsT2JqZWN0IHsKICAgICB0eXBl
ZGVmIEpTTm9uRmluYWxPYmplY3QgQmFzZTsKICAgICBzdGF0aWMgY29uc3QgdW5zaWduZWQgU3Ry
dWN0dXJlRmxhZ3MgPSBCYXNlOjpTdHJ1Y3R1cmVGbGFncyB8IE92ZXJyaWRlc0dldE93blByb3Bl
cnR5U2xvdDsKIAotICAgIHN0YXRpYyBKU1Byb21pc2VQcm90b3R5cGUqIGNyZWF0ZShFeGVjU3Rh
dGUqLCBKU0dsb2JhbE9iamVjdCosIFN0cnVjdHVyZSopOworICAgIHN0YXRpYyBKU1Byb21pc2VQ
cm90b3R5cGUqIGNyZWF0ZShWTSYsIEpTR2xvYmFsT2JqZWN0KiwgU3RydWN0dXJlKik7CiAgICAg
c3RhdGljIFN0cnVjdHVyZSogY3JlYXRlU3RydWN0dXJlKFZNJiwgSlNHbG9iYWxPYmplY3QqLCBK
U1ZhbHVlKTsKIAogICAgIERFQ0xBUkVfSU5GTzsKQEAgLTQ0LDcgKzQ0LDcgQEAgY2xhc3MgSlNQ
cm9taXNlUHJvdG90eXBlIDogcHVibGljIEpTTm9uRmluYWxPYmplY3QgewogICAgIHZvaWQgZmlu
aXNoQ3JlYXRpb24oVk0mLCBTdHJ1Y3R1cmUqKTsKIAogcHJpdmF0ZToKLSAgICBKU1Byb21pc2VQ
cm90b3R5cGUoRXhlY1N0YXRlKiwgU3RydWN0dXJlKik7CisgICAgSlNQcm9taXNlUHJvdG90eXBl
KFZNJiwgU3RydWN0dXJlKik7CiAgICAgc3RhdGljIGJvb2wgZ2V0T3duUHJvcGVydHlTbG90KEpT
T2JqZWN0KiwgRXhlY1N0YXRlKiwgUHJvcGVydHlOYW1lLCBQcm9wZXJ0eVNsb3QmKTsKIH07CiAK
ZGlmZiAtLWdpdCBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL01hcFByb3RvdHlwZS5j
cHAgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9NYXBQcm90b3R5cGUuY3BwCmluZGV4
IDk2ZGVhZTcxNGNhNTFhNjdmZDE2NDA4ZTVjMzlkM2M2NTY3Mzg5NGQuLmU5NzJmNTQwZWZiMmYx
ZTZhNDhkMTI1MDNmMDMxODk3MWY0MmRmODIgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9KYXZhU2NyaXB0
Q29yZS9ydW50aW1lL01hcFByb3RvdHlwZS5jcHAKKysrIGIvU291cmNlL0phdmFTY3JpcHRDb3Jl
L3J1bnRpbWUvTWFwUHJvdG90eXBlLmNwcApAQCAtNjgsNiArNjgsMTAgQEAgdm9pZCBNYXBQcm90
b3R5cGU6OmZpbmlzaENyZWF0aW9uKFZNJiB2bSwgSlNHbG9iYWxPYmplY3QqIGdsb2JhbE9iamVj
dCkKICAgICBKU0NfTkFUSVZFX0ZVTkNUSU9OKHZtLnByb3BlcnR5TmFtZXMtPmtleXMsIG1hcFBy
b3RvRnVuY0tleXMsIERvbnRFbnVtLCAwKTsKICAgICBKU0NfTkFUSVZFX0ZVTkNUSU9OKHZtLnBy
b3BlcnR5TmFtZXMtPnZhbHVlcywgbWFwUHJvdG9GdW5jVmFsdWVzLCBEb250RW51bSwgMCk7CiAK
KyAgICAvLyBQcml2YXRlIGdldCAvIHNldCBvcGVyYXRpb25zLgorICAgIEpTQ19OQVRJVkVfRlVO
Q1RJT04odm0ucHJvcGVydHlOYW1lcy0+Z2V0UHJpdmF0ZU5hbWUsIG1hcFByb3RvRnVuY0dldCwg
RG9udEVudW0sIDEpOworICAgIEpTQ19OQVRJVkVfRlVOQ1RJT04odm0ucHJvcGVydHlOYW1lcy0+
c2V0UHJpdmF0ZU5hbWUsIG1hcFByb3RvRnVuY1NldCwgRG9udEVudW0sIDIpOworCiAgICAgSlNG
dW5jdGlvbiogZW50cmllcyA9IEpTRnVuY3Rpb246OmNyZWF0ZSh2bSwgZ2xvYmFsT2JqZWN0LCAw
LCB2bS5wcm9wZXJ0eU5hbWVzLT5lbnRyaWVzLnN0cmluZygpLCBtYXBQcm90b0Z1bmNFbnRyaWVz
KTsKICAgICBwdXREaXJlY3RXaXRob3V0VHJhbnNpdGlvbih2bSwgdm0ucHJvcGVydHlOYW1lcy0+
ZW50cmllcywgZW50cmllcywgRG9udEVudW0pOwogICAgIHB1dERpcmVjdFdpdGhvdXRUcmFuc2l0
aW9uKHZtLCB2bS5wcm9wZXJ0eU5hbWVzLT5pdGVyYXRvclN5bWJvbCwgZW50cmllcywgRG9udEVu
dW0pOwpkaWZmIC0tZ2l0IGEvU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvTW9kdWxlTG9h
ZGVyT2JqZWN0LmNwcCBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL01vZHVsZUxvYWRl
ck9iamVjdC5jcHAKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMC4uNWFlYTgzNjZlYjFjZDA3YjI5NTZhNzQ4ODAzNDg1YzJh
MDIwYmEwZgotLS0gL2Rldi9udWxsCisrKyBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1l
L01vZHVsZUxvYWRlck9iamVjdC5jcHAKQEAgLTAsMCArMSwyOTkgQEAKKy8qCisgKiBDb3B5cmln
aHQgKEMpIDIwMTUgQXBwbGUgSW5jLiBBbGwgUmlnaHRzIFJlc2VydmVkLgorICoKKyAqIFJlZGlz
dHJpYnV0aW9uIGFuZCB1c2UgaW4gc291cmNlIGFuZCBiaW5hcnkgZm9ybXMsIHdpdGggb3Igd2l0
aG91dAorICogbW9kaWZpY2F0aW9uLCBhcmUgcGVybWl0dGVkIHByb3ZpZGVkIHRoYXQgdGhlIGZv
bGxvd2luZyBjb25kaXRpb25zCisgKiBhcmUgbWV0OgorICogMS4gUmVkaXN0cmlidXRpb25zIG9m
IHNvdXJjZSBjb2RlIG11c3QgcmV0YWluIHRoZSBhYm92ZSBjb3B5cmlnaHQKKyAqICAgIG5vdGlj
ZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lci4K
KyAqIDIuIFJlZGlzdHJpYnV0aW9ucyBpbiBiaW5hcnkgZm9ybSBtdXN0IHJlcHJvZHVjZSB0aGUg
YWJvdmUgY29weXJpZ2h0CisgKiAgICBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFu
ZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIgaW4gdGhlCisgKiAgICBkb2N1bWVudGF0aW9uIGFu
ZC9vciBvdGhlciBtYXRlcmlhbHMgcHJvdmlkZWQgd2l0aCB0aGUgZGlzdHJpYnV0aW9uLgorICoK
KyAqIFRISVMgU09GVFdBUkUgSVMgUFJPVklERUQgQlkgQVBQTEUgSU5DLiBgYEFTIElTJycgQU5E
IEFOWQorICogRVhQUkVTUyBPUiBJTVBMSUVEIFdBUlJBTlRJRVMsIElOQ0xVRElORywgQlVUIE5P
VCBMSU1JVEVEIFRPLCBUSEUKKyAqIElNUExJRUQgV0FSUkFOVElFUyBPRiBNRVJDSEFOVEFCSUxJ
VFkgQU5EIEZJVE5FU1MgRk9SIEEgUEFSVElDVUxBUgorICogUFVSUE9TRSBBUkUgRElTQ0xBSU1F
RC4gIElOIE5PIEVWRU5UIFNIQUxMIEFQUExFIElOQy4gT1IKKyAqIENPTlRSSUJVVE9SUyBCRSBM
SUFCTEUgRk9SIEFOWSBESVJFQ1QsIElORElSRUNULCBJTkNJREVOVEFMLCBTUEVDSUFMLAorICog
RVhFTVBMQVJZLCBPUiBDT05TRVFVRU5USUFMIERBTUFHRVMgKElOQ0xVRElORywgQlVUIE5PVCBM
SU1JVEVEIFRPLAorICogUFJPQ1VSRU1FTlQgT0YgU1VCU1RJVFVURSBHT09EUyBPUiBTRVJWSUNF
UzsgTE9TUyBPRiBVU0UsIERBVEEsIE9SCisgKiBQUk9GSVRTOyBPUiBCVVNJTkVTUyBJTlRFUlJV
UFRJT04pIEhPV0VWRVIgQ0FVU0VEIEFORCBPTiBBTlkgVEhFT1JZCisgKiBPRiBMSUFCSUxJVFks
IFdIRVRIRVIgSU4gQ09OVFJBQ1QsIFNUUklDVCBMSUFCSUxJVFksIE9SIFRPUlQKKyAqIChJTkNM
VURJTkcgTkVHTElHRU5DRSBPUiBPVEhFUldJU0UpIEFSSVNJTkcgSU4gQU5ZIFdBWSBPVVQgT0Yg
VEhFIFVTRQorICogT0YgVEhJUyBTT0ZUV0FSRSwgRVZFTiBJRiBBRFZJU0VEIE9GIFRIRSBQT1NT
SUJJTElUWSBPRiBTVUNIIERBTUFHRS4KKyAqLworCisjaW5jbHVkZSAiY29uZmlnLmgiCisjaW5j
bHVkZSAiTW9kdWxlTG9hZGVyT2JqZWN0LmgiCisKKyNpbmNsdWRlICJCdWlsdGluTmFtZXMuaCIK
KyNpbmNsdWRlICJFcnJvci5oIgorI2luY2x1ZGUgIkV4Y2VwdGlvbi5oIgorI2luY2x1ZGUgIkpT
Q0lubGluZXMuaCIKKyNpbmNsdWRlICJKU0dsb2JhbE9iamVjdEZ1bmN0aW9ucy5oIgorI2luY2x1
ZGUgIkpTTWFwLmgiCisjaW5jbHVkZSAiSlNNb2R1bGVSZWNvcmQuaCIKKyNpbmNsdWRlICJKU1By
b21pc2UuaCIKKyNpbmNsdWRlICJKU1Byb21pc2VEZWZlcnJlZC5oIgorI2luY2x1ZGUgIk1vZHVs
ZUFuYWx5emVyLmgiCisjaW5jbHVkZSAiTm9kZXMuaCIKKyNpbmNsdWRlICJQYXJzZXIuaCIKKyNp
bmNsdWRlICJQYXJzZXJFcnJvci5oIgorCituYW1lc3BhY2UgSlNDIHsKKworc3RhdGljIEVuY29k
ZWRKU1ZhbHVlIEpTQ19IT1NUX0NBTEwgbW9kdWxlTG9hZGVyT2JqZWN0UGFyc2VNb2R1bGUoRXhl
Y1N0YXRlKik7CitzdGF0aWMgRW5jb2RlZEpTVmFsdWUgSlNDX0hPU1RfQ0FMTCBtb2R1bGVMb2Fk
ZXJPYmplY3RSZXF1ZXN0ZWRNb2R1bGVzKEV4ZWNTdGF0ZSopOworc3RhdGljIEVuY29kZWRKU1Zh
bHVlIEpTQ19IT1NUX0NBTEwgbW9kdWxlTG9hZGVyT2JqZWN0UmVzb2x2ZShFeGVjU3RhdGUqKTsK
K3N0YXRpYyBFbmNvZGVkSlNWYWx1ZSBKU0NfSE9TVF9DQUxMIG1vZHVsZUxvYWRlck9iamVjdEZl
dGNoKEV4ZWNTdGF0ZSopOworc3RhdGljIEVuY29kZWRKU1ZhbHVlIEpTQ19IT1NUX0NBTEwgbW9k
dWxlTG9hZGVyT2JqZWN0VHJhbnNsYXRlKEV4ZWNTdGF0ZSopOworc3RhdGljIEVuY29kZWRKU1Zh
bHVlIEpTQ19IT1NUX0NBTEwgbW9kdWxlTG9hZGVyT2JqZWN0SW5zdGFudGlhdGUoRXhlY1N0YXRl
Kik7CisKK30KKworI2luY2x1ZGUgIk1vZHVsZUxvYWRlck9iamVjdC5sdXQuaCIKKworbmFtZXNw
YWNlIEpTQyB7CisKK1NUQVRJQ19BU1NFUlRfSVNfVFJJVklBTExZX0RFU1RSVUNUSUJMRShNb2R1
bGVMb2FkZXJPYmplY3QpOworCitjb25zdCBDbGFzc0luZm8gTW9kdWxlTG9hZGVyT2JqZWN0Ojpz
X2luZm8gPSB7ICJNb2R1bGVMb2FkZXIiLCAmQmFzZTo6c19pbmZvLCAmbW9kdWxlTG9hZGVyT2Jq
ZWN0VGFibGUsIENSRUFURV9NRVRIT0RfVEFCTEUoTW9kdWxlTG9hZGVyT2JqZWN0KSB9OworCisv
KiBTb3VyY2UgZm9yIE1vZHVsZUxvYWRlck9iamVjdC5sdXQuaAorQGJlZ2luIG1vZHVsZUxvYWRl
ck9iamVjdFRhYmxlCisgICAgc2V0U3RhdGVUb01heCAgICAgICAgICAgICBtb2R1bGVMb2FkZXJP
YmplY3RTZXRTdGF0ZVRvTWF4ICAgICAgICAgICAgIERvbnRFbnVtfEZ1bmN0aW9uIDIKKyAgICBu
ZXdSZWdpc3RyeUVudHJ5ICAgICAgICAgIG1vZHVsZUxvYWRlck9iamVjdE5ld1JlZ2lzdHJ5RW50
cnkgICAgICAgICAgRG9udEVudW18RnVuY3Rpb24gMQorICAgIGVuc3VyZVJlZ2lzdGVyZWQgICAg
ICAgICAgbW9kdWxlTG9hZGVyT2JqZWN0RW5zdXJlUmVnaXN0ZXJlZCAgICAgICAgICBEb250RW51
bXxGdW5jdGlvbiAxCisgICAgZm9yY2VGdWxmaWxsUHJvbWlzZSAgICAgICBtb2R1bGVMb2FkZXJP
YmplY3RGb3JjZUZ1bGZpbGxQcm9taXNlICAgICAgIERvbnRFbnVtfEZ1bmN0aW9uIDIKKyAgICBm
dWxmaWxsRmV0Y2ggICAgICAgICAgICAgIG1vZHVsZUxvYWRlck9iamVjdEZ1bGZpbGxGZXRjaCAg
ICAgICAgICAgICAgRG9udEVudW18RnVuY3Rpb24gMgorICAgIGZ1bGZpbGxUcmFuc2xhdGUgICAg
ICAgICAgbW9kdWxlTG9hZGVyT2JqZWN0RnVsZmlsbFRyYW5zbGF0ZSAgICAgICAgICBEb250RW51
bXxGdW5jdGlvbiAyCisgICAgZnVsZmlsbEluc3RhbnRpYXRlICAgICAgICBtb2R1bGVMb2FkZXJP
YmplY3RGdWxmaWxsSW5zdGFudGlhdGUgICAgICAgIERvbnRFbnVtfEZ1bmN0aW9uIDIKKyAgICBj
b21taXRJbnN0YW50aWF0ZWQgICAgICAgIG1vZHVsZUxvYWRlck9iamVjdENvbW1pdEluc3RhbnRp
YXRlZCAgICAgICAgRG9udEVudW18RnVuY3Rpb24gMworICAgIGluc3RhbnRpYXRpb24gICAgICAg
ICAgICAgbW9kdWxlTG9hZGVyT2JqZWN0SW5zdGFudGlhdGlvbiAgICAgICAgICAgICBEb250RW51
bXxGdW5jdGlvbiAyCisgICAgcmVxdWVzdEZldGNoICAgICAgICAgICAgICBtb2R1bGVMb2FkZXJP
YmplY3RSZXF1ZXN0RmV0Y2ggICAgICAgICAgICAgIERvbnRFbnVtfEZ1bmN0aW9uIDEKKyAgICBy
ZXF1ZXN0VHJhbnNsYXRlICAgICAgICAgIG1vZHVsZUxvYWRlck9iamVjdFJlcXVlc3RUcmFuc2xh
dGUgICAgICAgICAgRG9udEVudW18RnVuY3Rpb24gMQorICAgIHJlcXVlc3RJbnN0YW50aWF0ZSAg
ICAgICAgbW9kdWxlTG9hZGVyT2JqZWN0UmVxdWVzdEluc3RhbnRpYXRlICAgICAgICBEb250RW51
bXxGdW5jdGlvbiAxCisgICAgcmVxdWVzdENvbGxlY3QgICAgICAgICAgICBtb2R1bGVMb2FkZXJP
YmplY3RSZXF1ZXN0Q29sbGVjdCAgICAgICAgICAgIERvbnRFbnVtfEZ1bmN0aW9uIDEKKyAgICBy
ZXF1ZXN0SW5zdGFudGlhdGVBbGwgICAgIG1vZHVsZUxvYWRlck9iamVjdFJlcXVlc3RJbnN0YW50
aWF0ZUFsbCAgICAgRG9udEVudW18RnVuY3Rpb24gMQorICAgIHByb3ZpZGUgICAgICAgICAgICAg
ICAgICAgbW9kdWxlTG9hZGVyT2JqZWN0UHJvdmlkZSAgICAgICAgICAgICAgICAgICBEb250RW51
bXxGdW5jdGlvbiAzCisgICAgcGFyc2VNb2R1bGUgICAgICAgICAgICAgICBtb2R1bGVMb2FkZXJP
YmplY3RQYXJzZU1vZHVsZSAgICAgICAgICAgICAgIERvbnRFbnVtfEZ1bmN0aW9uIDEKKyAgICBy
ZXF1ZXN0ZWRNb2R1bGVzICAgICAgICAgIG1vZHVsZUxvYWRlck9iamVjdFJlcXVlc3RlZE1vZHVs
ZXMgICAgICAgICAgRG9udEVudW18RnVuY3Rpb24gMQorICAgIHJlc29sdmUgICAgICAgICAgICAg
ICAgICAgbW9kdWxlTG9hZGVyT2JqZWN0UmVzb2x2ZSAgICAgICAgICAgICAgICAgICBEb250RW51
bXxGdW5jdGlvbiAxCisgICAgZmV0Y2ggICAgICAgICAgICAgICAgICAgICBtb2R1bGVMb2FkZXJP
YmplY3RGZXRjaCAgICAgICAgICAgICAgICAgICAgIERvbnRFbnVtfEZ1bmN0aW9uIDEKKyAgICB0
cmFuc2xhdGUgICAgICAgICAgICAgICAgIG1vZHVsZUxvYWRlck9iamVjdFRyYW5zbGF0ZSAgICAg
ICAgICAgICAgICAgRG9udEVudW18RnVuY3Rpb24gMgorICAgIGluc3RhbnRpYXRlICAgICAgICAg
ICAgICAgbW9kdWxlTG9hZGVyT2JqZWN0SW5zdGFudGlhdGUgICAgICAgICAgICAgICBEb250RW51
bXxGdW5jdGlvbiAyCitAZW5kCisqLworCitNb2R1bGVMb2FkZXJPYmplY3Q6Ok1vZHVsZUxvYWRl
ck9iamVjdChWTSYgdm0sIFN0cnVjdHVyZSogc3RydWN0dXJlKQorICAgIDogSlNOb25GaW5hbE9i
amVjdCh2bSwgc3RydWN0dXJlKQoreworfQorCit2b2lkIE1vZHVsZUxvYWRlck9iamVjdDo6Zmlu
aXNoQ3JlYXRpb24oVk0mIHZtLCBKU0dsb2JhbE9iamVjdCogZ2xvYmFsT2JqZWN0KQoreworICAg
IEJhc2U6OmZpbmlzaENyZWF0aW9uKHZtKTsKKyAgICBBU1NFUlQoaW5oZXJpdHMoaW5mbygpKSk7
CisKKyAgICAvLyBDb25zdGFudCB2YWx1ZXMgZm9yIHRoZSBzdGF0ZS4KKyAgICBwdXREaXJlY3RX
aXRob3V0VHJhbnNpdGlvbih2bSwgSWRlbnRpZmllcjo6ZnJvbVN0cmluZygmdm0sICJGZXRjaCIp
LCBqc051bWJlcihTdGF0dXM6OkZldGNoKSk7CisgICAgcHV0RGlyZWN0V2l0aG91dFRyYW5zaXRp
b24odm0sIElkZW50aWZpZXI6OmZyb21TdHJpbmcoJnZtLCAiVHJhbnNsYXRlIiksIGpzTnVtYmVy
KFN0YXR1czo6VHJhbnNsYXRlKSk7CisgICAgcHV0RGlyZWN0V2l0aG91dFRyYW5zaXRpb24odm0s
IElkZW50aWZpZXI6OmZyb21TdHJpbmcoJnZtLCAiSW5zdGFudGlhdGUiKSwganNOdW1iZXIoU3Rh
dHVzOjpJbnN0YW50aWF0ZSkpOworICAgIHB1dERpcmVjdFdpdGhvdXRUcmFuc2l0aW9uKHZtLCBJ
ZGVudGlmaWVyOjpmcm9tU3RyaW5nKCZ2bSwgIkNvbGxlY3QiKSwganNOdW1iZXIoU3RhdHVzOjpD
b2xsZWN0KSk7CisgICAgcHV0RGlyZWN0V2l0aG91dFRyYW5zaXRpb24odm0sIElkZW50aWZpZXI6
OmZyb21TdHJpbmcoJnZtLCAiTGluayIpLCBqc051bWJlcihTdGF0dXM6OkxpbmspKTsKKyAgICBw
dXREaXJlY3RXaXRob3V0VHJhbnNpdGlvbih2bSwgSWRlbnRpZmllcjo6ZnJvbVN0cmluZygmdm0s
ICJSZWFkeSIpLCBqc051bWJlcihTdGF0dXM6OlJlYWR5KSk7CisKKyAgICBwdXREaXJlY3RXaXRo
b3V0VHJhbnNpdGlvbih2bSwgSWRlbnRpZmllcjo6ZnJvbVN0cmluZygmdm0sICJyZWdpc3RyeSIp
LCBKU01hcDo6Y3JlYXRlKHZtLCBnbG9iYWxPYmplY3QtPm1hcFN0cnVjdHVyZSgpKSk7Cit9CisK
K2Jvb2wgTW9kdWxlTG9hZGVyT2JqZWN0OjpnZXRPd25Qcm9wZXJ0eVNsb3QoSlNPYmplY3QqIG9i
amVjdCwgRXhlY1N0YXRlKiBleGVjLCBQcm9wZXJ0eU5hbWUgcHJvcGVydHlOYW1lLCBQcm9wZXJ0
eVNsb3QgJnNsb3QpCit7CisgICAgcmV0dXJuIGdldFN0YXRpY0Z1bmN0aW9uU2xvdDxCYXNlPihl
eGVjLCBtb2R1bGVMb2FkZXJPYmplY3RUYWJsZSwganNDYXN0PE1vZHVsZUxvYWRlck9iamVjdCo+
KG9iamVjdCksIHByb3BlcnR5TmFtZSwgc2xvdCk7Cit9CisKKy8vIC0tLS0tLS0tLS0tLS0tLS0t
LS0tLS0tLS0tLS0tLSBGdW5jdGlvbnMgLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0K
Kworc3RhdGljIFN0cmluZyBwcmludGFibGVNb2R1bGVLZXkoRXhlY1N0YXRlKiBleGVjLCBKU1Zh
bHVlIGtleSkKK3sKKyAgICBpZiAoa2V5LmlzU3RyaW5nKCkgfHwga2V5LmlzU3ltYm9sKCkpCisg
ICAgICAgIHJldHVybiBrZXkudG9Qcm9wZXJ0eUtleShleGVjKS5pbXBsKCk7CisgICAgcmV0dXJu
IGV4ZWMtPnByb3BlcnR5TmFtZXMoKS5lbXB0eUlkZW50aWZpZXIuaW1wbCgpOworfQorCitKU1Zh
bHVlIE1vZHVsZUxvYWRlck9iamVjdDo6cHJvdmlkZShFeGVjU3RhdGUqIGV4ZWMsIEpTVmFsdWUg
a2V5LCBTdGF0dXMgc3RhdHVzLCBjb25zdCBTdHJpbmcmIHNvdXJjZSkKK3sKKyAgICBKU09iamVj
dCogZnVuY3Rpb24gPSBqc0Nhc3Q8SlNPYmplY3QqPihnZXQoZXhlYywgZXhlYy0+cHJvcGVydHlO
YW1lcygpLmJ1aWx0aW5OYW1lcygpLnByb3ZpZGVQdWJsaWNOYW1lKCkpKTsKKyAgICBDYWxsRGF0
YSBjYWxsRGF0YTsKKyAgICBDYWxsVHlwZSBjYWxsVHlwZSA9IEpTQzo6Z2V0Q2FsbERhdGEoZnVu
Y3Rpb24sIGNhbGxEYXRhKTsKKyAgICBBU1NFUlQoY2FsbFR5cGUgIT0gQ2FsbFR5cGVOb25lKTsK
KworICAgIE1hcmtlZEFyZ3VtZW50QnVmZmVyIGFyZ3VtZW50czsKKyAgICBhcmd1bWVudHMuYXBw
ZW5kKGtleSk7CisgICAgYXJndW1lbnRzLmFwcGVuZChqc051bWJlcihzdGF0dXMpKTsKKyAgICBh
cmd1bWVudHMuYXBwZW5kKGpzU3RyaW5nKGV4ZWMsIHNvdXJjZSkpOworCisgICAgcmV0dXJuIGNh
bGwoZXhlYywgZnVuY3Rpb24sIGNhbGxUeXBlLCBjYWxsRGF0YSwgdGhpcywgYXJndW1lbnRzKTsK
K30KKworSlNWYWx1ZSBNb2R1bGVMb2FkZXJPYmplY3Q6OnJlcXVlc3RJbnN0YW50aWF0ZUFsbChF
eGVjU3RhdGUqIGV4ZWMsIEpTVmFsdWUga2V5KQoreworICAgIEpTT2JqZWN0KiBmdW5jdGlvbiA9
IGpzQ2FzdDxKU09iamVjdCo+KGdldChleGVjLCBleGVjLT5wcm9wZXJ0eU5hbWVzKCkuYnVpbHRp
bk5hbWVzKCkucmVxdWVzdEluc3RhbnRpYXRlQWxsUHVibGljTmFtZSgpKSk7CisgICAgQ2FsbERh
dGEgY2FsbERhdGE7CisgICAgQ2FsbFR5cGUgY2FsbFR5cGUgPSBKU0M6OmdldENhbGxEYXRhKGZ1
bmN0aW9uLCBjYWxsRGF0YSk7CisgICAgQVNTRVJUKGNhbGxUeXBlICE9IENhbGxUeXBlTm9uZSk7
CisKKyAgICBNYXJrZWRBcmd1bWVudEJ1ZmZlciBhcmd1bWVudHM7CisgICAgYXJndW1lbnRzLmFw
cGVuZChrZXkpOworCisgICAgcmV0dXJuIGNhbGwoZXhlYywgZnVuY3Rpb24sIGNhbGxUeXBlLCBj
YWxsRGF0YSwgdGhpcywgYXJndW1lbnRzKTsKK30KKworSlNWYWx1ZSBNb2R1bGVMb2FkZXJPYmpl
Y3Q6OnJlc29sdmUoRXhlY1N0YXRlKiBleGVjLCBKU1ZhbHVlIG5hbWUsIEpTVmFsdWUgcmVmZXJy
ZXIpCit7CisgICAgaWYgKE9wdGlvbnM6OmR1bXBNb2R1bGVMb2FkaW5nU3RhdGUoKSkKKyAgICAg
ICAgZGF0YUxvZygiTG9hZGVyIFtyZXNvbHZlXSAiLCBwcmludGFibGVNb2R1bGVLZXkoZXhlYywg
bmFtZSksICJcbiIpOworCisgICAgSlNHbG9iYWxPYmplY3QqIGdsb2JhbE9iamVjdCA9IGV4ZWMt
PmxleGljYWxHbG9iYWxPYmplY3QoKTsKKyAgICBpZiAoZ2xvYmFsT2JqZWN0LT5nbG9iYWxPYmpl
Y3RNZXRob2RUYWJsZSgpLT5sb2FkZXJSZXNvbHZlKQorICAgICAgICByZXR1cm4gZ2xvYmFsT2Jq
ZWN0LT5nbG9iYWxPYmplY3RNZXRob2RUYWJsZSgpLT5sb2FkZXJSZXNvbHZlKGdsb2JhbE9iamVj
dCwgZXhlYywgbmFtZSwgcmVmZXJyZXIpOworICAgIEpTUHJvbWlzZURlZmVycmVkKiBkZWZlcnJl
ZCA9IEpTUHJvbWlzZURlZmVycmVkOjpjcmVhdGUoZXhlYywgZ2xvYmFsT2JqZWN0KTsKKyAgICBk
ZWZlcnJlZC0+cmVzb2x2ZShleGVjLCBuYW1lKTsKKyAgICByZXR1cm4gZGVmZXJyZWQtPnByb21p
c2UoKTsKK30KKworSlNWYWx1ZSBNb2R1bGVMb2FkZXJPYmplY3Q6OmZldGNoKEV4ZWNTdGF0ZSog
ZXhlYywgSlNWYWx1ZSBrZXkpCit7CisgICAgaWYgKE9wdGlvbnM6OmR1bXBNb2R1bGVMb2FkaW5n
U3RhdGUoKSkKKyAgICAgICAgZGF0YUxvZygiTG9hZGVyIFtmZXRjaF0gIiwgcHJpbnRhYmxlTW9k
dWxlS2V5KGV4ZWMsIGtleSksICJcbiIpOworCisgICAgSlNHbG9iYWxPYmplY3QqIGdsb2JhbE9i
amVjdCA9IGV4ZWMtPmxleGljYWxHbG9iYWxPYmplY3QoKTsKKyAgICBpZiAoZ2xvYmFsT2JqZWN0
LT5nbG9iYWxPYmplY3RNZXRob2RUYWJsZSgpLT5sb2FkZXJGZXRjaCkKKyAgICAgICAgcmV0dXJu
IGdsb2JhbE9iamVjdC0+Z2xvYmFsT2JqZWN0TWV0aG9kVGFibGUoKS0+bG9hZGVyRmV0Y2goZ2xv
YmFsT2JqZWN0LCBleGVjLCBrZXkpOworICAgIEpTUHJvbWlzZURlZmVycmVkKiBkZWZlcnJlZCA9
IEpTUHJvbWlzZURlZmVycmVkOjpjcmVhdGUoZXhlYywgZ2xvYmFsT2JqZWN0KTsKKyAgICBTdHJp
bmcgbW9kdWxlS2V5ID0ga2V5LnRvU3RyaW5nKGV4ZWMpLT52YWx1ZShleGVjKTsKKyAgICBpZiAo
ZXhlYy0+aGFkRXhjZXB0aW9uKCkpIHsKKyAgICAgICAgSlNWYWx1ZSBleGNlcHRpb24gPSBleGVj
LT5leGNlcHRpb24oKS0+dmFsdWUoKTsKKyAgICAgICAgZXhlYy0+Y2xlYXJFeGNlcHRpb24oKTsK
KyAgICAgICAgZGVmZXJyZWQtPnJlamVjdChleGVjLCBleGNlcHRpb24pOworICAgICAgICByZXR1
cm4gZGVmZXJyZWQtPnByb21pc2UoKTsKKyAgICB9CisgICAgZGVmZXJyZWQtPnJlamVjdChleGVj
LCBjcmVhdGVFcnJvcihleGVjLCBtYWtlU3RyaW5nKCJDb3VsZCBub3Qgb3BlbiB0aGUgbW9kdWxl
ICciLCBtb2R1bGVLZXksICInLiIpKSk7CisgICAgcmV0dXJuIGRlZmVycmVkLT5wcm9taXNlKCk7
Cit9CisKK0pTVmFsdWUgTW9kdWxlTG9hZGVyT2JqZWN0Ojp0cmFuc2xhdGUoRXhlY1N0YXRlKiBl
eGVjLCBKU1ZhbHVlIGtleSwgSlNWYWx1ZSBwYXlsb2FkKQoreworICAgIGlmIChPcHRpb25zOjpk
dW1wTW9kdWxlTG9hZGluZ1N0YXRlKCkpCisgICAgICAgIGRhdGFMb2coIkxvYWRlciBbdHJhbnNs
YXRlXSAiLCBwcmludGFibGVNb2R1bGVLZXkoZXhlYywga2V5KSwgIlxuIik7CisKKyAgICBKU0ds
b2JhbE9iamVjdCogZ2xvYmFsT2JqZWN0ID0gZXhlYy0+bGV4aWNhbEdsb2JhbE9iamVjdCgpOwor
ICAgIGlmIChnbG9iYWxPYmplY3QtPmdsb2JhbE9iamVjdE1ldGhvZFRhYmxlKCktPmxvYWRlclRy
YW5zbGF0ZSkKKyAgICAgICAgcmV0dXJuIGdsb2JhbE9iamVjdC0+Z2xvYmFsT2JqZWN0TWV0aG9k
VGFibGUoKS0+bG9hZGVyVHJhbnNsYXRlKGdsb2JhbE9iamVjdCwgZXhlYywga2V5LCBwYXlsb2Fk
KTsKKyAgICBKU1Byb21pc2VEZWZlcnJlZCogZGVmZXJyZWQgPSBKU1Byb21pc2VEZWZlcnJlZDo6
Y3JlYXRlKGV4ZWMsIGdsb2JhbE9iamVjdCk7CisgICAgZGVmZXJyZWQtPnJlc29sdmUoZXhlYywg
cGF5bG9hZCk7CisgICAgcmV0dXJuIGRlZmVycmVkLT5wcm9taXNlKCk7Cit9CisKK0pTVmFsdWUg
TW9kdWxlTG9hZGVyT2JqZWN0OjppbnN0YW50aWF0ZShFeGVjU3RhdGUqIGV4ZWMsIEpTVmFsdWUg
a2V5LCBKU1ZhbHVlIHNvdXJjZSkKK3sKKyAgICBpZiAoT3B0aW9uczo6ZHVtcE1vZHVsZUxvYWRp
bmdTdGF0ZSgpKQorICAgICAgICBkYXRhTG9nKCJMb2FkZXIgW2luc3RhbnRpYXRlXSAiLCBwcmlu
dGFibGVNb2R1bGVLZXkoZXhlYywga2V5KSwgIlxuIik7CisKKyAgICBKU0dsb2JhbE9iamVjdCog
Z2xvYmFsT2JqZWN0ID0gZXhlYy0+bGV4aWNhbEdsb2JhbE9iamVjdCgpOworICAgIGlmIChnbG9i
YWxPYmplY3QtPmdsb2JhbE9iamVjdE1ldGhvZFRhYmxlKCktPmxvYWRlckluc3RhbnRpYXRlKQor
ICAgICAgICByZXR1cm4gZ2xvYmFsT2JqZWN0LT5nbG9iYWxPYmplY3RNZXRob2RUYWJsZSgpLT5s
b2FkZXJJbnN0YW50aWF0ZShnbG9iYWxPYmplY3QsIGV4ZWMsIGtleSwgc291cmNlKTsKKyAgICBK
U1Byb21pc2VEZWZlcnJlZCogZGVmZXJyZWQgPSBKU1Byb21pc2VEZWZlcnJlZDo6Y3JlYXRlKGV4
ZWMsIGdsb2JhbE9iamVjdCk7CisgICAgZGVmZXJyZWQtPnJlc29sdmUoZXhlYywganNVbmRlZmlu
ZWQoKSk7CisgICAgcmV0dXJuIGRlZmVycmVkLT5wcm9taXNlKCk7Cit9CisKKy8vIC0tLS0tLS0t
LS0tLS0tLS0tLS0tLS0tLS0tLS0tLSBIb29rIEZ1bmN0aW9ucyAtLS0tLS0tLS0tLS0tLS0tLS0t
LS0tLS0tLS0KKworRW5jb2RlZEpTVmFsdWUgSlNDX0hPU1RfQ0FMTCBtb2R1bGVMb2FkZXJPYmpl
Y3RQYXJzZU1vZHVsZShFeGVjU3RhdGUqIGV4ZWMpCit7CisgICAgVk0mIHZtID0gZXhlYy0+dm0o
KTsKKyAgICBTdHJpbmcgc291cmNlID0gZXhlYy0+YXJndW1lbnQoMCkudG9TdHJpbmcoZXhlYykt
PnZhbHVlKGV4ZWMpOworICAgIGlmIChleGVjLT5oYWRFeGNlcHRpb24oKSkKKyAgICAgICAgcmV0
dXJuIEpTVmFsdWU6OmVuY29kZShqc1VuZGVmaW5lZCgpKTsKKworICAgIC8vIEZJWE1FOiBDb25z
dHJ1Y3QgU291cmNlQ29kZSB3aXRoIHRoZSBsb2NhdGlvbiBpZGVudGlmaWVyLgorICAgIFNvdXJj
ZUNvZGUgc291cmNlQ29kZSA9IG1ha2VTb3VyY2Uoc291cmNlKTsKKworICAgIFBhcnNlckVycm9y
IGVycm9yOworICAgIHN0ZDo6dW5pcXVlX3B0cjxNb2R1bGVQcm9ncmFtTm9kZT4gbW9kdWxlUHJv
Z3JhbU5vZGUgPSBwYXJzZTxNb2R1bGVQcm9ncmFtTm9kZT4oCisgICAgICAgICZ2bSwgc291cmNl
Q29kZSwgSWRlbnRpZmllcigpLCBKU1BhcnNlckJ1aWx0aW5Nb2RlOjpOb3RCdWlsdGluLAorICAg
ICAgICBKU1BhcnNlclN0cmljdE1vZGU6OlN0cmljdCwgU291cmNlUGFyc2VNb2RlOjpNb2R1bGVB
bmFseXplTW9kZSwgZXJyb3IpOworCisgICAgaWYgKGVycm9yLmlzVmFsaWQoKSkgeworICAgICAg
ICB0aHJvd1ZNRXJyb3IoZXhlYywgZXJyb3IudG9FcnJvck9iamVjdChleGVjLT5sZXhpY2FsR2xv
YmFsT2JqZWN0KCksIHNvdXJjZUNvZGUpKTsKKyAgICAgICAgcmV0dXJuIEpTVmFsdWU6OmVuY29k
ZShqc1VuZGVmaW5lZCgpKTsKKyAgICB9CisgICAgQVNTRVJUKG1vZHVsZVByb2dyYW1Ob2RlKTsK
KworICAgIE1vZHVsZUFuYWx5emVyIG1vZHVsZUFuYWx5emVyKGV4ZWMsIG1vZHVsZVByb2dyYW1O
b2RlLT52YXJEZWNsYXJhdGlvbnMoKSwgbW9kdWxlUHJvZ3JhbU5vZGUtPmxleGljYWxWYXJpYWJs
ZXMoKSk7CisgICAgcmV0dXJuIEpTVmFsdWU6OmVuY29kZShtb2R1bGVBbmFseXplci5hbmFseXpl
KCptb2R1bGVQcm9ncmFtTm9kZSkpOworfQorCitFbmNvZGVkSlNWYWx1ZSBKU0NfSE9TVF9DQUxM
IG1vZHVsZUxvYWRlck9iamVjdFJlcXVlc3RlZE1vZHVsZXMoRXhlY1N0YXRlKiBleGVjKQorewor
ICAgIEpTTW9kdWxlUmVjb3JkKiBtb2R1bGVSZWNvcmQgPSBqc0R5bmFtaWNDYXN0PEpTTW9kdWxl
UmVjb3JkKj4oZXhlYy0+YXJndW1lbnQoMCkpOworICAgIGlmICghbW9kdWxlUmVjb3JkKQorICAg
ICAgICByZXR1cm4gSlNWYWx1ZTo6ZW5jb2RlKGNvbnN0cnVjdEVtcHR5QXJyYXkoZXhlYywgbnVs
bHB0cikpOworCisgICAgSlNBcnJheSogcmVzdWx0ID0gY29uc3RydWN0RW1wdHlBcnJheShleGVj
LCBudWxscHRyLCBtb2R1bGVSZWNvcmQtPnJlcXVlc3RlZE1vZHVsZXMoKS5zaXplKCkpOworICAg
IHNpemVfdCBpID0gMDsKKyAgICBmb3IgKGF1dG8mIGtleSA6IG1vZHVsZVJlY29yZC0+cmVxdWVz
dGVkTW9kdWxlcygpKQorICAgICAgICByZXN1bHQtPnB1dERpcmVjdEluZGV4KGV4ZWMsIGkrKywg
anNTdHJpbmcoZXhlYywga2V5LmdldCgpKSk7CisKKyAgICByZXR1cm4gSlNWYWx1ZTo6ZW5jb2Rl
KHJlc3VsdCk7Cit9CisKK0VuY29kZWRKU1ZhbHVlIEpTQ19IT1NUX0NBTEwgbW9kdWxlTG9hZGVy
T2JqZWN0UmVzb2x2ZShFeGVjU3RhdGUqIGV4ZWMpCit7CisgICAgLy8gSG9vayBwb2ludCwgTG9h
ZGVyLnJlc29sdmUuCisgICAgLy8gaHR0cHM6Ly93aGF0d2cuZ2l0aHViLmlvL2xvYWRlci8jYnJv
d3Nlci1yZXNvbHZlCisgICAgLy8gVGFrZSB0aGUgbmFtZSBhbmQgcmVzb2x2ZSBpdCB0byB0aGUg
dW5pcXVlIGlkZW50aWZpZXIgZm9yIHRoZSByZXNvdXJjZSBsb2NhdGlvbi4KKyAgICAvLyBGb3Ig
ZXhhbXBsZSwgdGFrZSB0aGUgImpxdWVyeSIgYW5kIHJldHVybiB0aGUgVVJMIGZvciB0aGUgcmVz
b3VyY2UuCisgICAgTW9kdWxlTG9hZGVyT2JqZWN0KiBsb2FkZXIgPSBqc0R5bmFtaWNDYXN0PE1v
ZHVsZUxvYWRlck9iamVjdCo+KGV4ZWMtPnRoaXNWYWx1ZSgpKTsKKyAgICBpZiAoIWxvYWRlcikK
KyAgICAgICAgcmV0dXJuIEpTVmFsdWU6OmVuY29kZShqc1VuZGVmaW5lZCgpKTsKKyAgICByZXR1
cm4gSlNWYWx1ZTo6ZW5jb2RlKGxvYWRlci0+cmVzb2x2ZShleGVjLCBleGVjLT5hcmd1bWVudCgw
KSwgZXhlYy0+YXJndW1lbnQoMSkpKTsKK30KKworRW5jb2RlZEpTVmFsdWUgSlNDX0hPU1RfQ0FM
TCBtb2R1bGVMb2FkZXJPYmplY3RGZXRjaChFeGVjU3RhdGUqIGV4ZWMpCit7CisgICAgLy8gSG9v
ayBwb2ludCwgTG9hZGVyLmZldGNoCisgICAgLy8gaHR0cHM6Ly93aGF0d2cuZ2l0aHViLmlvL2xv
YWRlci8jYnJvd3Nlci1mZXRjaAorICAgIC8vIFRha2UgdGhlIGtleSBhbmQgZmV0Y2ggdGhlIHJl
c291cmNlIGFjdHVhbGx5LgorICAgIE1vZHVsZUxvYWRlck9iamVjdCogbG9hZGVyID0ganNEeW5h
bWljQ2FzdDxNb2R1bGVMb2FkZXJPYmplY3QqPihleGVjLT50aGlzVmFsdWUoKSk7CisgICAgaWYg
KCFsb2FkZXIpCisgICAgICAgIHJldHVybiBKU1ZhbHVlOjplbmNvZGUoanNVbmRlZmluZWQoKSk7
CisgICAgcmV0dXJuIEpTVmFsdWU6OmVuY29kZShsb2FkZXItPmZldGNoKGV4ZWMsIGV4ZWMtPmFy
Z3VtZW50KDApKSk7Cit9CisKK0VuY29kZWRKU1ZhbHVlIEpTQ19IT1NUX0NBTEwgbW9kdWxlTG9h
ZGVyT2JqZWN0VHJhbnNsYXRlKEV4ZWNTdGF0ZSogZXhlYykKK3sKKyAgICAvLyBIb29rIHBvaW50
LCBMb2FkZXIudHJhbnNsYXRlCisgICAgLy8gaHR0cHM6Ly93aGF0d2cuZ2l0aHViLmlvL2xvYWRl
ci8jYnJvd3Nlci10cmFuc2xhdGUKKyAgICAvLyBUYWtlIHRoZSBrZXkgYW5kIHRoZSBmZXRjaGVk
IHNvdXJjZSBjb2RlIGFuZCB0cmFuc2xhdGUgaXQgdG8gdGhlIEVTNiBzb3VyY2UgY29kZS4KKyAg
ICAvLyBJdCBtYXkgYmUgdXNlZCBmb3IgdGhlIHRyYW5zcGlsZXJzIGluIHRoZSBmdXR1cmUuCisg
ICAgTW9kdWxlTG9hZGVyT2JqZWN0KiBsb2FkZXIgPSBqc0R5bmFtaWNDYXN0PE1vZHVsZUxvYWRl
ck9iamVjdCo+KGV4ZWMtPnRoaXNWYWx1ZSgpKTsKKyAgICBpZiAoIWxvYWRlcikKKyAgICAgICAg
cmV0dXJuIEpTVmFsdWU6OmVuY29kZShqc1VuZGVmaW5lZCgpKTsKKyAgICByZXR1cm4gSlNWYWx1
ZTo6ZW5jb2RlKGxvYWRlci0+dHJhbnNsYXRlKGV4ZWMsIGV4ZWMtPmFyZ3VtZW50KDApLCBleGVj
LT5hcmd1bWVudCgxKSkpOworfQorCitFbmNvZGVkSlNWYWx1ZSBKU0NfSE9TVF9DQUxMIG1vZHVs
ZUxvYWRlck9iamVjdEluc3RhbnRpYXRlKEV4ZWNTdGF0ZSogZXhlYykKK3sKKyAgICAvLyBIb29r
IHBvaW50LCBMb2FkZXIuaW5zdGFudGlhdGUKKyAgICAvLyBodHRwczovL3doYXR3Zy5naXRodWIu
aW8vbG9hZGVyLyNicm93c2VyLWluc3RhbnRpYXRlCisgICAgLy8gVGFrZSB0aGUga2V5IGFuZCB0
aGUgdHJhbnNsYXRlZCBzb3VyY2UgY29kZS4KKyAgICAvLyBJdCBoYXMgdGhlIGNoYW5jZSB0byBw
cm92aWRlIHRoZSBvcHRpb25hbCBtb2R1bGUgaW5zdGFuY2UgdGhhdCBpcyBkaWZmZXJlbnQgZnJv
bQorICAgIC8vIHRoZSBvcmRpbmFyeSBvbmUuCisgICAgTW9kdWxlTG9hZGVyT2JqZWN0KiBsb2Fk
ZXIgPSBqc0R5bmFtaWNDYXN0PE1vZHVsZUxvYWRlck9iamVjdCo+KGV4ZWMtPnRoaXNWYWx1ZSgp
KTsKKyAgICBpZiAoIWxvYWRlcikKKyAgICAgICAgcmV0dXJuIEpTVmFsdWU6OmVuY29kZShqc1Vu
ZGVmaW5lZCgpKTsKKyAgICByZXR1cm4gSlNWYWx1ZTo6ZW5jb2RlKGxvYWRlci0+aW5zdGFudGlh
dGUoZXhlYywgZXhlYy0+YXJndW1lbnQoMCksIGV4ZWMtPmFyZ3VtZW50KDEpKSk7Cit9CisKK30g
Ly8gbmFtZXNwYWNlIEpTQwpkaWZmIC0tZ2l0IGEvU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRp
bWUvTW9kdWxlTG9hZGVyT2JqZWN0LmggYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9N
b2R1bGVMb2FkZXJPYmplY3QuaApuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwLi5mMjhlNjMyOWJmMzNjZGMxZWFmYWVhMDJm
Y2EzNjdhNGFjODczMGM2Ci0tLSAvZGV2L251bGwKKysrIGIvU291cmNlL0phdmFTY3JpcHRDb3Jl
L3J1bnRpbWUvTW9kdWxlTG9hZGVyT2JqZWN0LmgKQEAgLTAsMCArMSw4MSBAQAorLyoKKyAqIENv
cHlyaWdodCAoQykgMjAxNSBBcHBsZSBJbmMuIEFsbCBSaWdodHMgUmVzZXJ2ZWQuCisgKgorICog
UmVkaXN0cmlidXRpb24gYW5kIHVzZSBpbiBzb3VyY2UgYW5kIGJpbmFyeSBmb3Jtcywgd2l0aCBv
ciB3aXRob3V0CisgKiBtb2RpZmljYXRpb24sIGFyZSBwZXJtaXR0ZWQgcHJvdmlkZWQgdGhhdCB0
aGUgZm9sbG93aW5nIGNvbmRpdGlvbnMKKyAqIGFyZSBtZXQ6CisgKiAxLiBSZWRpc3RyaWJ1dGlv
bnMgb2Ygc291cmNlIGNvZGUgbXVzdCByZXRhaW4gdGhlIGFib3ZlIGNvcHlyaWdodAorICogICAg
bm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFp
bWVyLgorICogMi4gUmVkaXN0cmlidXRpb25zIGluIGJpbmFyeSBmb3JtIG11c3QgcmVwcm9kdWNl
IHRoZSBhYm92ZSBjb3B5cmlnaHQKKyAqICAgIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlv
bnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lciBpbiB0aGUKKyAqICAgIGRvY3VtZW50YXRp
b24gYW5kL29yIG90aGVyIG1hdGVyaWFscyBwcm92aWRlZCB3aXRoIHRoZSBkaXN0cmlidXRpb24u
CisgKgorICogVEhJUyBTT0ZUV0FSRSBJUyBQUk9WSURFRCBCWSBBUFBMRSBJTkMuIGBgQVMgSVMn
JyBBTkQgQU5ZCisgKiBFWFBSRVNTIE9SIElNUExJRUQgV0FSUkFOVElFUywgSU5DTFVESU5HLCBC
VVQgTk9UIExJTUlURUQgVE8sIFRIRQorICogSU1QTElFRCBXQVJSQU5USUVTIE9GIE1FUkNIQU5U
QUJJTElUWSBBTkQgRklUTkVTUyBGT1IgQSBQQVJUSUNVTEFSCisgKiBQVVJQT1NFIEFSRSBESVND
TEFJTUVELiAgSU4gTk8gRVZFTlQgU0hBTEwgQVBQTEUgSU5DLiBPUgorICogQ09OVFJJQlVUT1JT
IEJFIExJQUJMRSBGT1IgQU5ZIERJUkVDVCwgSU5ESVJFQ1QsIElOQ0lERU5UQUwsIFNQRUNJQUws
CisgKiBFWEVNUExBUlksIE9SIENPTlNFUVVFTlRJQUwgREFNQUdFUyAoSU5DTFVESU5HLCBCVVQg
Tk9UIExJTUlURUQgVE8sCisgKiBQUk9DVVJFTUVOVCBPRiBTVUJTVElUVVRFIEdPT0RTIE9SIFNF
UlZJQ0VTOyBMT1NTIE9GIFVTRSwgREFUQSwgT1IKKyAqIFBST0ZJVFM7IE9SIEJVU0lORVNTIElO
VEVSUlVQVElPTikgSE9XRVZFUiBDQVVTRUQgQU5EIE9OIEFOWSBUSEVPUlkKKyAqIE9GIExJQUJJ
TElUWSwgV0hFVEhFUiBJTiBDT05UUkFDVCwgU1RSSUNUIExJQUJJTElUWSwgT1IgVE9SVAorICog
KElOQ0xVRElORyBORUdMSUdFTkNFIE9SIE9USEVSV0lTRSkgQVJJU0lORyBJTiBBTlkgV0FZIE9V
VCBPRiBUSEUgVVNFCisgKiBPRiBUSElTIFNPRlRXQVJFLCBFVkVOIElGIEFEVklTRUQgT0YgVEhF
IFBPU1NJQklMSVRZIE9GIFNVQ0ggREFNQUdFLgorICovCisKKyNpZm5kZWYgTW9kdWxlTG9hZGVy
T2JqZWN0X2gKKyNkZWZpbmUgTW9kdWxlTG9hZGVyT2JqZWN0X2gKKworI2luY2x1ZGUgIkpTT2Jq
ZWN0LmgiCisKK25hbWVzcGFjZSBKU0MgeworCitjbGFzcyBNb2R1bGVMb2FkZXJPYmplY3QgOiBw
dWJsaWMgSlNOb25GaW5hbE9iamVjdCB7Citwcml2YXRlOgorICAgIE1vZHVsZUxvYWRlck9iamVj
dChWTSYsIFN0cnVjdHVyZSopOworcHVibGljOgorICAgIHR5cGVkZWYgSlNOb25GaW5hbE9iamVj
dCBCYXNlOworICAgIHN0YXRpYyBjb25zdCB1bnNpZ25lZCBTdHJ1Y3R1cmVGbGFncyA9IEJhc2U6
OlN0cnVjdHVyZUZsYWdzIHwgT3ZlcnJpZGVzR2V0T3duUHJvcGVydHlTbG90OworCisgICAgZW51
bSBTdGF0dXMgeworICAgICAgICBGZXRjaCwKKyAgICAgICAgVHJhbnNsYXRlLAorICAgICAgICBJ
bnN0YW50aWF0ZSwKKyAgICAgICAgQ29sbGVjdCwKKyAgICAgICAgTGluaywKKyAgICAgICAgUmVh
ZHksCisgICAgfTsKKworICAgIHN0YXRpYyBNb2R1bGVMb2FkZXJPYmplY3QqIGNyZWF0ZShWTSYg
dm0sIEpTR2xvYmFsT2JqZWN0KiBnbG9iYWxPYmplY3QsIFN0cnVjdHVyZSogc3RydWN0dXJlKQor
ICAgIHsKKyAgICAgICAgTW9kdWxlTG9hZGVyT2JqZWN0KiBvYmplY3QgPSBuZXcgKE5vdE51bGws
IGFsbG9jYXRlQ2VsbDxNb2R1bGVMb2FkZXJPYmplY3Q+KHZtLmhlYXApKSBNb2R1bGVMb2FkZXJP
YmplY3Qodm0sIHN0cnVjdHVyZSk7CisgICAgICAgIG9iamVjdC0+ZmluaXNoQ3JlYXRpb24odm0s
IGdsb2JhbE9iamVjdCk7CisgICAgICAgIHJldHVybiBvYmplY3Q7CisgICAgfQorCisgICAgREVD
TEFSRV9JTkZPOworCisgICAgc3RhdGljIFN0cnVjdHVyZSogY3JlYXRlU3RydWN0dXJlKFZNJiB2
bSwgSlNHbG9iYWxPYmplY3QqIGdsb2JhbE9iamVjdCwgSlNWYWx1ZSBwcm90b3R5cGUpCisgICAg
eworICAgICAgICByZXR1cm4gU3RydWN0dXJlOjpjcmVhdGUodm0sIGdsb2JhbE9iamVjdCwgcHJv
dG90eXBlLCBUeXBlSW5mbyhPYmplY3RUeXBlLCBTdHJ1Y3R1cmVGbGFncyksIGluZm8oKSk7Cisg
ICAgfQorCisgICAgLy8gQVBJcyB0byBjb250cm9sIHRoZSBtb2R1bGUgbG9hZGVyLgorICAgIEpT
VmFsdWUgcHJvdmlkZShFeGVjU3RhdGUqLCBKU1ZhbHVlIGtleSwgU3RhdHVzLCBjb25zdCBTdHJp
bmcmKTsKKyAgICBKU1ZhbHVlIHJlcXVlc3RJbnN0YW50aWF0ZUFsbChFeGVjU3RhdGUqLCBKU1Zh
bHVlIGtleSk7CisKKyAgICAvLyBQbGF0Zm9ybSBkZXBlbmRlbnQgaG9va2VkIEFQSXMuCisgICAg
SlNWYWx1ZSByZXNvbHZlKEV4ZWNTdGF0ZSosIEpTVmFsdWUgbmFtZSwgSlNWYWx1ZSByZWZlcnJl
cik7CisgICAgSlNWYWx1ZSBmZXRjaChFeGVjU3RhdGUqLCBKU1ZhbHVlIGtleSk7CisgICAgSlNW
YWx1ZSB0cmFuc2xhdGUoRXhlY1N0YXRlKiwgSlNWYWx1ZSBrZXksIEpTVmFsdWUgcGF5bG9hZCk7
CisgICAgSlNWYWx1ZSBpbnN0YW50aWF0ZShFeGVjU3RhdGUqLCBKU1ZhbHVlIGtleSwgSlNWYWx1
ZSBzb3VyY2UpOworCisgICAgc3RhdGljIGJvb2wgZ2V0T3duUHJvcGVydHlTbG90KEpTT2JqZWN0
KiwgRXhlY1N0YXRlKiwgUHJvcGVydHlOYW1lLCBQcm9wZXJ0eVNsb3QmKTsKKworcHJvdGVjdGVk
OgorICAgIHZvaWQgZmluaXNoQ3JlYXRpb24oVk0mLCBKU0dsb2JhbE9iamVjdCopOworfTsKKwor
fSAvLyBuYW1lc3BhY2UgSlNDCisKKyNlbmRpZiAvLyBNb2R1bGVMb2FkZXJPYmplY3RfaApkaWZm
IC0tZ2l0IGEvU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvT3B0aW9ucy5oIGIvU291cmNl
L0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvT3B0aW9ucy5oCmluZGV4IDI1OTYwNzg3MWM2NWYyN2Y0
YzY2Mjg5ZTk5MjZlYWQyNWQ1MTMwY2IuLmUzN2I5OWJmMDk0YWM0YTQ1YzU0NTIzMDYxYzM2YmRm
YmRjNjgwZDMgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL09wdGlv
bnMuaAorKysgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9PcHRpb25zLmgKQEAgLTMy
NCw2ICszMjQsOCBAQCB0eXBlZGVmIGNvbnN0IGNoYXIqIG9wdGlvblN0cmluZzsKICAgICB2KHVu
c2lnbmVkLCB3YXRjaGRvZywgMCwgIndhdGNoZG9nIHRpbWVvdXQgKDAgPSBEaXNhYmxlZCwgTiA9
IGEgdGltZW91dCBwZXJpb2Qgb2YgTiBtaWxsaXNlY29uZHMpIikgXAogICAgIFwKICAgICB2KGJv
b2wsIGR1bXBNb2R1bGVSZWNvcmQsIGZhbHNlLCBudWxscHRyKSBcCisgICAgdihib29sLCBkdW1w
TW9kdWxlTG9hZGluZ1N0YXRlLCBmYWxzZSwgbnVsbHB0cikgXAorICAgIHYoYm9vbCwgZXhwb3Nl
SW50ZXJuYWxNb2R1bGVMb2FkZXIsIGZhbHNlLCAiZXhwb3NlIHRoZSBpbnRlcm5hbCBtb2R1bGUg
bG9hZGVyIG9iamVjdCB0byB0aGUgZ2xvYmFsIHNwYWNlIGZvciBkZWJ1Z2dpbmciKSBcCiAKIGNs
YXNzIE9wdGlvbnMgewogcHVibGljOgpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvYmluZGlu
Z3MvanMvSlNET01XaW5kb3dCYXNlLmNwcCBiL1NvdXJjZS9XZWJDb3JlL2JpbmRpbmdzL2pzL0pT
RE9NV2luZG93QmFzZS5jcHAKaW5kZXggOWFiMGE4ZjBkMGZiZDc4ZTVlNTdkNTgwNDc3ZTY1NWNi
ODk1OTVkMS4uYTI5MGRkYzllNTgxYWNkNjM0MzAxNzAwYmFmODI3Y2ExYTRlZmQwMiAxMDA2NDQK
LS0tIGEvU291cmNlL1dlYkNvcmUvYmluZGluZ3MvanMvSlNET01XaW5kb3dCYXNlLmNwcAorKysg
Yi9Tb3VyY2UvV2ViQ29yZS9iaW5kaW5ncy9qcy9KU0RPTVdpbmRvd0Jhc2UuY3BwCkBAIC01Niw3
ICs1Niw3IEBAIHN0YXRpYyBib29sIHNob3VsZEFsbG93QWNjZXNzRnJvbShjb25zdCBKU0dsb2Jh
bE9iamVjdCogdGhpc09iamVjdCwgRXhlY1N0YXRlKiBlCiAKIGNvbnN0IENsYXNzSW5mbyBKU0RP
TVdpbmRvd0Jhc2U6OnNfaW5mbyA9IHsgIldpbmRvdyIsICZKU0RPTUdsb2JhbE9iamVjdDo6c19p
bmZvLCAwLCBDUkVBVEVfTUVUSE9EX1RBQkxFKEpTRE9NV2luZG93QmFzZSkgfTsKIAotY29uc3Qg
R2xvYmFsT2JqZWN0TWV0aG9kVGFibGUgSlNET01XaW5kb3dCYXNlOjpzX2dsb2JhbE9iamVjdE1l
dGhvZFRhYmxlID0geyAmc2hvdWxkQWxsb3dBY2Nlc3NGcm9tLCAmc3VwcG9ydHNQcm9maWxpbmcs
ICZzdXBwb3J0c1JpY2hTb3VyY2VJbmZvLCAmc2hvdWxkSW50ZXJydXB0U2NyaXB0LCAmamF2YVNj
cmlwdFJ1bnRpbWVGbGFncywgJnF1ZXVlVGFza1RvRXZlbnRMb29wLCAmc2hvdWxkSW50ZXJydXB0
U2NyaXB0QmVmb3JlVGltZW91dCB9OworY29uc3QgR2xvYmFsT2JqZWN0TWV0aG9kVGFibGUgSlNE
T01XaW5kb3dCYXNlOjpzX2dsb2JhbE9iamVjdE1ldGhvZFRhYmxlID0geyAmc2hvdWxkQWxsb3dB
Y2Nlc3NGcm9tLCAmc3VwcG9ydHNQcm9maWxpbmcsICZzdXBwb3J0c1JpY2hTb3VyY2VJbmZvLCAm
c2hvdWxkSW50ZXJydXB0U2NyaXB0LCAmamF2YVNjcmlwdFJ1bnRpbWVGbGFncywgJnF1ZXVlVGFz
a1RvRXZlbnRMb29wLCAmc2hvdWxkSW50ZXJydXB0U2NyaXB0QmVmb3JlVGltZW91dCwgbnVsbHB0
ciwgbnVsbHB0ciwgbnVsbHB0ciwgbnVsbHB0ciB9OwogCiBKU0RPTVdpbmRvd0Jhc2U6OkpTRE9N
V2luZG93QmFzZShWTSYgdm0sIFN0cnVjdHVyZSogc3RydWN0dXJlLCBQYXNzUmVmUHRyPERPTVdp
bmRvdz4gd2luZG93LCBKU0RPTVdpbmRvd1NoZWxsKiBzaGVsbCkKICAgICA6IEpTRE9NR2xvYmFs
T2JqZWN0KHZtLCBzdHJ1Y3R1cmUsICZzaGVsbC0+d29ybGQoKSwgJnNfZ2xvYmFsT2JqZWN0TWV0
aG9kVGFibGUpCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9iaW5kaW5ncy9qcy9KU1dvcmtl
ckdsb2JhbFNjb3BlQmFzZS5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9iaW5kaW5ncy9qcy9KU1dvcmtl
ckdsb2JhbFNjb3BlQmFzZS5jcHAKaW5kZXggYWFhNWRiYTU1MTcxY2I5NTQxYmE2NWUxZDI0N2Fi
MjljOWQ5YzdjMy4uNTA0NGJjMTc4MzUxM2I5YjFhMjZiZDNiZDFjYjVjMDBiNzBhMTBkMCAxMDA2
NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvYmluZGluZ3MvanMvSlNXb3JrZXJHbG9iYWxTY29wZUJh
c2UuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL2JpbmRpbmdzL2pzL0pTV29ya2VyR2xvYmFsU2Nv
cGVCYXNlLmNwcApAQCAtNDMsNyArNDMsNyBAQCBuYW1lc3BhY2UgV2ViQ29yZSB7CiAKIGNvbnN0
IENsYXNzSW5mbyBKU1dvcmtlckdsb2JhbFNjb3BlQmFzZTo6c19pbmZvID0geyAiV29ya2VyR2xv
YmFsU2NvcGUiLCAmSlNET01HbG9iYWxPYmplY3Q6OnNfaW5mbywgMCwgQ1JFQVRFX01FVEhPRF9U
QUJMRShKU1dvcmtlckdsb2JhbFNjb3BlQmFzZSkgfTsKIAotY29uc3QgR2xvYmFsT2JqZWN0TWV0
aG9kVGFibGUgSlNXb3JrZXJHbG9iYWxTY29wZUJhc2U6OnNfZ2xvYmFsT2JqZWN0TWV0aG9kVGFi
bGUgPSB7ICZhbGxvd3NBY2Nlc3NGcm9tLCAmc3VwcG9ydHNQcm9maWxpbmcsICZzdXBwb3J0c1Jp
Y2hTb3VyY2VJbmZvLCAmc2hvdWxkSW50ZXJydXB0U2NyaXB0LCAmamF2YVNjcmlwdFJ1bnRpbWVG
bGFncywgJnF1ZXVlVGFza1RvRXZlbnRMb29wLCAmc2hvdWxkSW50ZXJydXB0U2NyaXB0QmVmb3Jl
VGltZW91dCB9OworY29uc3QgR2xvYmFsT2JqZWN0TWV0aG9kVGFibGUgSlNXb3JrZXJHbG9iYWxT
Y29wZUJhc2U6OnNfZ2xvYmFsT2JqZWN0TWV0aG9kVGFibGUgPSB7ICZhbGxvd3NBY2Nlc3NGcm9t
LCAmc3VwcG9ydHNQcm9maWxpbmcsICZzdXBwb3J0c1JpY2hTb3VyY2VJbmZvLCAmc2hvdWxkSW50
ZXJydXB0U2NyaXB0LCAmamF2YVNjcmlwdFJ1bnRpbWVGbGFncywgJnF1ZXVlVGFza1RvRXZlbnRM
b29wLCAmc2hvdWxkSW50ZXJydXB0U2NyaXB0QmVmb3JlVGltZW91dCwgbnVsbHB0ciwgbnVsbHB0
ciwgbnVsbHB0ciwgbnVsbHB0ciB9OwogCiBKU1dvcmtlckdsb2JhbFNjb3BlQmFzZTo6SlNXb3Jr
ZXJHbG9iYWxTY29wZUJhc2UoSlNDOjpWTSYgdm0sIEpTQzo6U3RydWN0dXJlKiBzdHJ1Y3R1cmUs
IFBhc3NSZWZQdHI8V29ya2VyR2xvYmFsU2NvcGU+IGltcGwpCiAgICAgOiBKU0RPTUdsb2JhbE9i
amVjdCh2bSwgc3RydWN0dXJlLCAmbm9ybWFsV29ybGQodm0pLCAmc19nbG9iYWxPYmplY3RNZXRo
b2RUYWJsZSkK
</data>

          </attachment>
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>259367</attachid>
            <date>2015-08-19 00:53:45 -0700</date>
            <delta_ts>2015-08-19 11:54:27 -0700</delta_ts>
            <desc>Patch</desc>
            <filename>bug-147876-20150819005342.patch</filename>
            <type>text/plain</type>
            <size>127155</size>
            <attacher name="Yusuke Suzuki">ysuzuki</attacher>
            
              <data encoding="base64">U3VidmVyc2lvbiBSZXZpc2lvbjogMTg4NjM0CmRpZmYgLS1naXQgYS9Tb3VyY2UvSmF2YVNjcmlw
dENvcmUvQ2hhbmdlTG9nIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL0NoYW5nZUxvZwppbmRleCBj
ZTc2MTQ5MWYyMjA4NWQ0NDI1ZjIwMDFhODFiZmYzYTgzODUyYjBjLi43NThiNWQ2ZjhlZjA3ZjQ2
MGEwYmE5MjU3NmIyZTY0MTc3YzZkZWU1IDEwMDY0NAotLS0gYS9Tb3VyY2UvSmF2YVNjcmlwdENv
cmUvQ2hhbmdlTG9nCisrKyBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9DaGFuZ2VMb2cKQEAgLTEs
MyArMSwxNjQgQEAKKzIwMTUtMDgtMTkgIFl1c3VrZSBTdXp1a2kgIDx1dGF0YW5lLnRlYUBnbWFp
bC5jb20+CisKKyAgICAgICAgW0VTNl0gcHJvdG90eXBpbmcgbW9kdWxlIGxvYWRlciBpbiBKU0Mg
c2hlbGwKKyAgICAgICAgaHR0cHM6Ly9idWdzLndlYmtpdC5vcmcvc2hvd19idWcuY2dpP2lkPTE0
Nzg3NgorCisgICAgICAgIFJldmlld2VkIGJ5IE5PQk9EWSAoT09QUyEpLgorCisgICAgICAgIFRo
aXMgcGF0Y2ggaW1wbGVtZW50cyBFUzYgTW9kdWxlIExvYWRlciBwYXJ0LiBUaGUgaW1wbGVtZW50
YXRpb24gaXMgYmFzZWQgb24KKyAgICAgICAgdGhlIGxhdGVzdCBkcmFmdFsxLCAyXS4gVGhlIG5h
aXZlIGltcGxlbWVudGF0aW9uIHBvc2VzIHNldmVyYWwgcHJvYmxlbXMuCisgICAgICAgIFRoaXMg
cGF0Y2ggYXR0ZW1wdHMgdG8gc29sdmUgdGhlIHNwZWMgaXNzdWVzIGFuZCBwcm9wb3NlcyB0aGUg
Zml4WzMsIDQsIDVdLgorCisgICAgICAgIFdlIGNvbnN0cnVjdCB0aGUgSlNDIGludGVybmFsIG1v
ZHVsZSBsb2FkZXIgYmFzZWQgb24gdGhlIEVTNiBQcm9taXNlcy4KKyAgICAgICAgVGhlIGNoYWlu
IG9mIHRoZSBwcm9taXNlcyByZXByZXNlbnRzIHRoZSBkZXBlbmRlbmN5IGdyYXBoIG9mIHRoZSBt
b2R1bGVzIGFuZAorICAgICAgICBpdCBhdXRvbWF0aWNhbGx5IGVuYWJsZXMgYXN5bmNocm9ub3Vz
IG1vZHVsZSBmZXRjaGluZy4KKyAgICAgICAgVG8gbGV2ZXJhZ2UgdGhlIFByb21pc2VzIGludGVy
bmFsbHksIHdlIHVzZSB0aGUgSW50ZXJuYWxQcm9taXNlWzZdLgorCisgICAgICAgIFRoZSBsb2Fk
ZXIgaGFzIHNldmVyYWwgcGxhdGZvcm0tZGVwZW5kZW50IGhvb2tzLiBUaGUgcGxhdGZvcm0gY2Fu
IGltcGxlbWVudAorICAgICAgICB0aGVzZSBob29rcyB0byBwcm92aWRlIHRoZSBmdW5jdGlvYWxp
dHkgbWlzc2luZyBpbiB0aGUgbW9kdWxlIGxvYWRlcnMsIGxpa2UKKyAgICAgICAgImhvdyB0byBm
ZXRjaCB0aGUgcmVzb3VyY2VzIi4gVGhlIG1ldGhvZCB0YWJsZSBvZiB0aGUgSlNHbG9iYWxPYmpl
Y3QgaXMgZXh0ZW5kZWQKKyAgICAgICAgdG8gYWNjZXB0IHRoZXNlIGhvb2tzIGZyb20gdGhlIHBs
YXRmb3JtLgorCisgICAgICAgIFRoaXMgcGF0Y2ggZm9jdXMgb24gdGhlIGxvYWRpbmcgcGFydC4g
U28gd2UgZG9uJ3QgY3JlYXRlIHRoZSBtb2R1bGUgZW52aXJvbm1lbnQKKyAgICAgICAgYW5kIGRv
bid0IGxpbmsgdGhlIG1vZHVsZXMgeWV0LgorCisgICAgICAgIFRvIHRlc3QgdGhlIGN1cnJlbnQg
bW9kdWxlIHByb2dyZXNzIGVhc2lseSwgd2UgYWRkIHRoZSBgLW1gIG9wdGlvbiB0byB0aGUgSlND
IHNoZWxsLgorICAgICAgICBXaGVuIHRoaXMgb3B0aW9uIGlzIHNwZWNpZmllZCwgd2UgbG9hZCB0
aGUgZ2l2ZW4gc2NyaXB0IGFzIHRoZSBtb2R1bGUuIEFuZCB0byB1c2UKKyAgICAgICAgdGhlIG1v
ZHVsZSBsb2FkaW5nIGluc2lkZSB0aGUgSlNDIHNoZWxsLCB3ZSBhZGRlZCB0aGUgc2ltcGxlIGxv
YWRlciBob29rIGZvciBmZXRjaGluZy4KKyAgICAgICAgSXQgZmV0Y2hlcyB0aGUgbW9kdWxlIGNv
bnRlbnQgZnJvbSB0aGUgZmlsZSBzeXN0ZW0uCisKKyAgICAgICAgQW5kIHRvIHVzZSB0aGUgRVM2
IE1hcCBpbiB0aGUgTG9hZGVyIGltcGxlbWVudGF0aW9uLCB3ZSBhZGRlZCBAZ2V0IGFuZCBAc2V0
IG1ldGhvZHMgdG8gdGhlIE1hcC4KKyAgICAgICAgQnV0IGl0IGNvbmZsaWN0cyB3aXRoIHRoZSBl
eGlzdGluZyBgZ2V0UHJpdmF0ZU5hbWVgIG1ldGhvZC4gUmVuYW1lIGl0IHRvIGBsb29rVXBQcml2
YXRlTmFtZWAuCisKKyAgICAgICAgWzFdOiBodHRwczovL3doYXR3Zy5naXRodWIuaW8vbG9hZGVy
LworICAgICAgICBbMl06IGh0dHBzOi8vZ2l0aHViLmNvbS93aGF0d2cvbG9hZGVyL2NvbW1pdC8y
MTRjN2E2NjI1YjQ0NWJkZjQxMWMzOTk4NGYzNmYwMTEzOWEyNGJlCisgICAgICAgIFszXTogaHR0
cHM6Ly9naXRodWIuY29tL3doYXR3Zy9sb2FkZXIvcHVsbC82NgorICAgICAgICBbNF06IGh0dHBz
Oi8vZ2l0aHViLmNvbS93aGF0d2cvbG9hZGVyL3B1bGwvNjcKKyAgICAgICAgWzVdOiBodHRwczov
L2dpdGh1Yi5jb20vd2hhdHdnL2xvYWRlci9pc3N1ZXMvNjgKKyAgICAgICAgWzZdOiBodHRwczov
L2J1Z3Mud2Via2l0Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9MTQ4MTM2CisKKyAgICAgICAgKiBDTWFr
ZUxpc3RzLnR4dDoKKyAgICAgICAgKiBEZXJpdmVkU291cmNlcy5tYWtlOgorICAgICAgICAqIEph
dmFTY3JpcHRDb3JlLnZjeHByb2ovSmF2YVNjcmlwdENvcmUudmN4cHJvajoKKyAgICAgICAgKiBK
YXZhU2NyaXB0Q29yZS52Y3hwcm9qL0phdmFTY3JpcHRDb3JlLnZjeHByb2ouZmlsdGVyczoKKyAg
ICAgICAgKiBKYXZhU2NyaXB0Q29yZS54Y29kZXByb2ovcHJvamVjdC5wYnhwcm9qOgorICAgICAg
ICAqIGJ1aWx0aW5zL0J1aWx0aW5OYW1lcy5oOgorICAgICAgICAoSlNDOjpCdWlsdGluTmFtZXM6
Omxvb2tVcFByaXZhdGVOYW1lKToKKyAgICAgICAgKEpTQzo6QnVpbHRpbk5hbWVzOjpsb29rVXBQ
dWJsaWNOYW1lKToKKyAgICAgICAgKEpTQzo6QnVpbHRpbk5hbWVzOjpnZXRQcml2YXRlTmFtZSk6
IERlbGV0ZWQuCisgICAgICAgIChKU0M6OkJ1aWx0aW5OYW1lczo6Z2V0UHVibGljTmFtZSk6IERl
bGV0ZWQuCisgICAgICAgICogYnVpbHRpbnMvTW9kdWxlTG9hZGVyT2JqZWN0LmpzOiBBZGRlZC4K
KyAgICAgICAgKHNldFN0YXRlVG9NYXgpOgorICAgICAgICAobmV3UmVnaXN0cnlFbnRyeSk6Cisg
ICAgICAgIChmb3JjZUZ1bGZpbGxQcm9taXNlKToKKyAgICAgICAgKGZ1bGZpbGxGZXRjaCk6Cisg
ICAgICAgIChmdWxmaWxsVHJhbnNsYXRlKToKKyAgICAgICAgKGZ1bGZpbGxJbnN0YW50aWF0ZSk6
CisgICAgICAgIChpbnN0YW50aWF0aW9uKToKKyAgICAgICAgKHJlcXVlc3RGZXRjaCk6CisgICAg
ICAgIChyZXF1ZXN0VHJhbnNsYXRlKToKKyAgICAgICAgKHJlcXVlc3RJbnN0YW50aWF0ZSk6Cisg
ICAgICAgIChyZXF1ZXN0UmVzb2x2ZURlcGVuZGVuY2llcy5jb2xsZWN0UHJvbWlzZS50aGlzLnJl
cXVlc3RJbnN0YW50aWF0ZS50aGVuLik6CisgICAgICAgIChyZXF1ZXN0UmVzb2x2ZURlcGVuZGVu
Y2llcy5jb2xsZWN0UHJvbWlzZS50aGlzLnJlcXVlc3RJbnN0YW50aWF0ZS50aGVuKToKKyAgICAg
ICAgKHJlcXVlc3RSZXNvbHZlRGVwZW5kZW5jaWVzKToKKyAgICAgICAgKHJlcXVlc3RJbnN0YW50
aWF0ZUFsbCk6CisgICAgICAgIChwcm92aWRlKToKKyAgICAgICAgKiBqc2MuY3BwOgorICAgICAg
ICAoc3RyaW5nRnJvbVVURik6CisgICAgICAgIChqc2NTb3VyY2UpOgorICAgICAgICAoR2xvYmFs
T2JqZWN0Ojpsb2FkZXJGZXRjaCk6CisgICAgICAgIChmdW5jdGlvbkNoZWNrTW9kdWxlU3ludGF4
KToKKyAgICAgICAgKGR1bXBFeGNlcHRpb24pOgorICAgICAgICAocnVuV2l0aFNjcmlwdHMpOgor
ICAgICAgICAocHJpbnRVc2FnZVN0YXRlbWVudCk6CisgICAgICAgIChDb21tYW5kTGluZTo6cGFy
c2VBcmd1bWVudHMpOgorICAgICAgICAoanNjbWFpbik6CisgICAgICAgIChDb21tYW5kTGluZTo6
Q29tbWFuZExpbmUpOiBEZWxldGVkLgorICAgICAgICAqIHBhcnNlci9MZXhlci5jcHA6CisgICAg
ICAgIChKU0M6OkxleGVyPExDaGFyPjo6cGFyc2VJZGVudGlmaWVyKToKKyAgICAgICAgKEpTQzo6
TGV4ZXI8VUNoYXI+OjpwYXJzZUlkZW50aWZpZXIpOgorICAgICAgICAqIHBhcnNlci9Nb2R1bGVB
bmFseXplci5jcHA6CisgICAgICAgIChKU0M6Ok1vZHVsZUFuYWx5emVyOjpNb2R1bGVBbmFseXpl
cik6CisgICAgICAgIChKU0M6Ok1vZHVsZUFuYWx5emVyOjpleHBvcnRWYXJpYWJsZSk6CisgICAg
ICAgIChKU0M6Ok1vZHVsZUFuYWx5emVyOjphbmFseXplKToKKyAgICAgICAgKiBwYXJzZXIvTW9k
dWxlQW5hbHl6ZXIuaDoKKyAgICAgICAgKEpTQzo6TW9kdWxlQW5hbHl6ZXI6Om1vZHVsZVJlY29y
ZCk6CisgICAgICAgICogcGFyc2VyL01vZHVsZVJlY29yZC5jcHA6CisgICAgICAgIChKU0M6OnBy
aW50YWJsZU5hbWUpOiBEZWxldGVkLgorICAgICAgICAoSlNDOjpNb2R1bGVSZWNvcmQ6OmR1bXAp
OiBEZWxldGVkLgorICAgICAgICAqIHBhcnNlci9Nb2R1bGVSZWNvcmQuaDoKKyAgICAgICAgKEpT
Qzo6TW9kdWxlUmVjb3JkOjpJbXBvcnRFbnRyeTo6aXNOYW1lc3BhY2UpOiBEZWxldGVkLgorICAg
ICAgICAoSlNDOjpNb2R1bGVSZWNvcmQ6OmNyZWF0ZSk6IERlbGV0ZWQuCisgICAgICAgIChKU0M6
Ok1vZHVsZVJlY29yZDo6YXBwZW5kUmVxdWVzdGVkTW9kdWxlKTogRGVsZXRlZC4KKyAgICAgICAg
KEpTQzo6TW9kdWxlUmVjb3JkOjphZGRJbXBvcnRFbnRyeSk6IERlbGV0ZWQuCisgICAgICAgIChK
U0M6Ok1vZHVsZVJlY29yZDo6YWRkRXhwb3J0RW50cnkpOiBEZWxldGVkLgorICAgICAgICAoSlND
OjpNb2R1bGVSZWNvcmQ6OmFkZFN0YXJFeHBvcnRFbnRyeSk6IERlbGV0ZWQuCisgICAgICAgICog
cGFyc2VyL05vZGVzLmg6CisgICAgICAgICogcGFyc2VyL05vZGVzQW5hbHl6ZU1vZHVsZS5jcHA6
CisgICAgICAgIChKU0M6OkltcG9ydERlY2xhcmF0aW9uTm9kZTo6YW5hbHl6ZU1vZHVsZSk6Cisg
ICAgICAgIChKU0M6OkV4cG9ydEFsbERlY2xhcmF0aW9uTm9kZTo6YW5hbHl6ZU1vZHVsZSk6Cisg
ICAgICAgIChKU0M6OkV4cG9ydE5hbWVkRGVjbGFyYXRpb25Ob2RlOjphbmFseXplTW9kdWxlKToK
KyAgICAgICAgKiBydW50aW1lL0NvbW1vbklkZW50aWZpZXJzLmNwcDoKKyAgICAgICAgKEpTQzo6
Q29tbW9uSWRlbnRpZmllcnM6Omxvb2tVcFByaXZhdGVOYW1lKToKKyAgICAgICAgKEpTQzo6Q29t
bW9uSWRlbnRpZmllcnM6Omxvb2tVcFB1YmxpY05hbWUpOgorICAgICAgICAoSlNDOjpDb21tb25J
ZGVudGlmaWVyczo6Z2V0UHJpdmF0ZU5hbWUpOiBEZWxldGVkLgorICAgICAgICAoSlNDOjpDb21t
b25JZGVudGlmaWVyczo6Z2V0UHVibGljTmFtZSk6IERlbGV0ZWQuCisgICAgICAgICogcnVudGlt
ZS9Db21tb25JZGVudGlmaWVycy5oOgorICAgICAgICAqIHJ1bnRpbWUvQ29tcGxldGlvbi5jcHA6
CisgICAgICAgIChKU0M6OmNoZWNrTW9kdWxlU3ludGF4KToKKyAgICAgICAgKEpTQzo6ZXZhbHVh
dGVNb2R1bGUpOgorICAgICAgICBBZGQgZXZhbHVhdGVNb2R1bGUuIFRoYXQgd2lsbCBiZSB1c2Vk
IHRvIGV2YWx1YXRlIHRoZSBtb2R1bGUgb25jZSB0aGUgaW1wbGVtZW50YXRpb24gaXMgY29tcGxl
dGVkLgorICAgICAgICBCdXQgbm93LCBpdCBqdXN0IGxvYWRzIHRoZSBtb2R1bGVzLgorICAgICAg
ICAqIHJ1bnRpbWUvQ29tcGxldGlvbi5oOgorICAgICAgICAqIHJ1bnRpbWUvRXhjZXB0aW9uSGVs
cGVycy5jcHA6CisgICAgICAgIChKU0M6OmNyZWF0ZVVuZGVmaW5lZFZhcmlhYmxlRXJyb3IpOgor
ICAgICAgICAqIHJ1bnRpbWUvSWRlbnRpZmllci5oOgorICAgICAgICAqIHJ1bnRpbWUvSlNHbG9i
YWxPYmplY3QuY3BwOgorICAgICAgICAoSlNDOjpKU0dsb2JhbE9iamVjdDo6aW5pdCk6CisgICAg
ICAgIChKU0M6OkpTR2xvYmFsT2JqZWN0Ojp2aXNpdENoaWxkcmVuKToKKyAgICAgICAgKiBydW50
aW1lL0pTR2xvYmFsT2JqZWN0Lmg6CisgICAgICAgIChKU0M6OkpTR2xvYmFsT2JqZWN0Ojptb2R1
bGVMb2FkZXIpOgorICAgICAgICAoSlNDOjpKU0dsb2JhbE9iamVjdDo6cHJvbWlzZVN0cnVjdHVy
ZSk6CisgICAgICAgIChKU0M6OkpTR2xvYmFsT2JqZWN0Ojptb2R1bGVSZWNvcmRTdHJ1Y3R1cmUp
OgorICAgICAgICAqIHJ1bnRpbWUvSlNNb2R1bGVSZWNvcmQuY3BwOiBSZW5hbWVkIGZyb20gU291
cmNlL0phdmFTY3JpcHRDb3JlL3BhcnNlci9Nb2R1bGVSZWNvcmQuY3BwLgorICAgICAgICAoSlND
OjpKU01vZHVsZVJlY29yZDo6ZGVzdHJveSk6CisgICAgICAgIChKU0M6OkpTTW9kdWxlUmVjb3Jk
OjpmaW5pc2hDcmVhdGlvbik6CisgICAgICAgIChKU0M6OnByaW50YWJsZU5hbWUpOgorICAgICAg
ICAoSlNDOjpKU01vZHVsZVJlY29yZDo6ZHVtcCk6CisgICAgICAgICogcnVudGltZS9KU01vZHVs
ZVJlY29yZC5oOiBSZW5hbWVkIGZyb20gU291cmNlL0phdmFTY3JpcHRDb3JlL3BhcnNlci9Nb2R1
bGVSZWNvcmQuaC4KKyAgICAgICAgKEpTQzo6SlNNb2R1bGVSZWNvcmQ6OkltcG9ydEVudHJ5Ojpp
c05hbWVzcGFjZSk6CisgICAgICAgIChKU0M6OkpTTW9kdWxlUmVjb3JkOjpjcmVhdGVTdHJ1Y3R1
cmUpOgorICAgICAgICAoSlNDOjpKU01vZHVsZVJlY29yZDo6Y3JlYXRlKToKKyAgICAgICAgKEpT
Qzo6SlNNb2R1bGVSZWNvcmQ6OnJlcXVlc3RlZE1vZHVsZXMpOgorICAgICAgICAoSlNDOjpKU01v
ZHVsZVJlY29yZDo6SlNNb2R1bGVSZWNvcmQpOgorICAgICAgICAoSlNDOjpKU01vZHVsZVJlY29y
ZDo6YXBwZW5kUmVxdWVzdGVkTW9kdWxlKToKKyAgICAgICAgKEpTQzo6SlNNb2R1bGVSZWNvcmQ6
OmFkZEltcG9ydEVudHJ5KToKKyAgICAgICAgKEpTQzo6SlNNb2R1bGVSZWNvcmQ6OmFkZEV4cG9y
dEVudHJ5KToKKyAgICAgICAgKEpTQzo6SlNNb2R1bGVSZWNvcmQ6OmFkZFN0YXJFeHBvcnRFbnRy
eSk6CisgICAgICAgICogcnVudGltZS9NYXBQcm90b3R5cGUuY3BwOgorICAgICAgICAoSlNDOjpN
YXBQcm90b3R5cGU6OmZpbmlzaENyZWF0aW9uKToKKyAgICAgICAgKiBydW50aW1lL01vZHVsZUxv
YWRlck9iamVjdC5jcHA6IEFkZGVkLgorICAgICAgICAoSlNDOjpNb2R1bGVMb2FkZXJPYmplY3Q6
Ok1vZHVsZUxvYWRlck9iamVjdCk6CisgICAgICAgIChKU0M6Ok1vZHVsZUxvYWRlck9iamVjdDo6
ZmluaXNoQ3JlYXRpb24pOgorICAgICAgICAoSlNDOjpNb2R1bGVMb2FkZXJPYmplY3Q6OmdldE93
blByb3BlcnR5U2xvdCk6CisgICAgICAgIChKU0M6OnByaW50YWJsZU1vZHVsZUtleSk6CisgICAg
ICAgIChKU0M6Ok1vZHVsZUxvYWRlck9iamVjdDo6cHJvdmlkZSk6CisgICAgICAgIChKU0M6Ok1v
ZHVsZUxvYWRlck9iamVjdDo6cmVxdWVzdEluc3RhbnRpYXRlQWxsKToKKyAgICAgICAgKEpTQzo6
TW9kdWxlTG9hZGVyT2JqZWN0OjpyZXNvbHZlKToKKyAgICAgICAgKEpTQzo6TW9kdWxlTG9hZGVy
T2JqZWN0OjpmZXRjaCk6CisgICAgICAgIChKU0M6Ok1vZHVsZUxvYWRlck9iamVjdDo6dHJhbnNs
YXRlKToKKyAgICAgICAgKEpTQzo6TW9kdWxlTG9hZGVyT2JqZWN0OjppbnN0YW50aWF0ZSk6Cisg
ICAgICAgIChKU0M6Om1vZHVsZUxvYWRlck9iamVjdFBhcnNlTW9kdWxlKToKKyAgICAgICAgKEpT
Qzo6bW9kdWxlTG9hZGVyT2JqZWN0UmVxdWVzdGVkTW9kdWxlcyk6CisgICAgICAgIChKU0M6Om1v
ZHVsZUxvYWRlck9iamVjdFJlc29sdmUpOgorICAgICAgICAoSlNDOjptb2R1bGVMb2FkZXJPYmpl
Y3RGZXRjaCk6CisgICAgICAgIChKU0M6Om1vZHVsZUxvYWRlck9iamVjdFRyYW5zbGF0ZSk6Cisg
ICAgICAgIChKU0M6Om1vZHVsZUxvYWRlck9iamVjdEluc3RhbnRpYXRlKToKKyAgICAgICAgKiBy
dW50aW1lL01vZHVsZUxvYWRlck9iamVjdC5oOiBBZGRlZC4KKyAgICAgICAgKEpTQzo6TW9kdWxl
TG9hZGVyT2JqZWN0OjpjcmVhdGUpOgorICAgICAgICAoSlNDOjpNb2R1bGVMb2FkZXJPYmplY3Q6
OmNyZWF0ZVN0cnVjdHVyZSk6CisgICAgICAgICogcnVudGltZS9PcHRpb25zLmg6CisKIDIwMTUt
MDgtMTggIEpvc2VwaCBQZWNvcmFybyAgPHBlY29yYXJvQGFwcGxlLmNvbT4KIAogICAgICAgICBX
ZWIgSW5zcGVjdG9yOiBMaW5rcyBmb3IgcnVsZXMgaW4gPHN0eWxlPiBhcmUgaW5jb3JyZWN0LCBk
byBub3QgYWNjb3VudCBmb3IgPHN0eWxlPiBvZmZzZXQgaW4gdGhlIGRvY3VtZW50CmRpZmYgLS1n
aXQgYS9Tb3VyY2UvV2ViQ29yZS9DaGFuZ2VMb2cgYi9Tb3VyY2UvV2ViQ29yZS9DaGFuZ2VMb2cK
aW5kZXggNTU3MDFkYWRmMWI1MWMwMmY2ZGE4MWM1ZmY2YTI1MDUwODkwZDZhYy4uZjdhZmNmMGQ4
YjZmMmMxYWM5YTk3ZTVjODlmZjM4YzFhNmYyM2QzMCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNv
cmUvQ2hhbmdlTG9nCisrKyBiL1NvdXJjZS9XZWJDb3JlL0NoYW5nZUxvZwpAQCAtMSwzICsxLDE1
IEBACisyMDE1LTA4LTE5ICBZdXN1a2UgU3V6dWtpICA8dXRhdGFuZS50ZWFAZ21haWwuY29tPgor
CisgICAgICAgIFtFUzZdIHByb3RvdHlwaW5nIG1vZHVsZSBsb2FkZXIgaW4gSlNDIHNoZWxsCisg
ICAgICAgIGh0dHBzOi8vYnVncy53ZWJraXQub3JnL3Nob3dfYnVnLmNnaT9pZD0xNDc4NzYKKwor
ICAgICAgICBSZXZpZXdlZCBieSBOT0JPRFkgKE9PUFMhKS4KKworICAgICAgICBKdXN0IGZpbGwg
TG9hZGVyIGhvb2tzIHdpdGggbnVsbHB0ci4KKworICAgICAgICAqIGJpbmRpbmdzL2pzL0pTRE9N
V2luZG93QmFzZS5jcHA6CisgICAgICAgICogYmluZGluZ3MvanMvSlNXb3JrZXJHbG9iYWxTY29w
ZUJhc2UuY3BwOgorCiAyMDE1LTA4LTE4ICBNeWxlcyBDLiBNYXhmaWVsZCAgPG1tYXhmaWVsZEBh
cHBsZS5jb20+CiAKICAgICAgICAgW0NvY29hXSBQdW5jdHVhdGlvbiBuZWFyIEhpbmRpIHRleHQg
aXMgZ2FyYmxlZCB3aGVuIHN0eWxlZCB3aXRoIHRoZSBzeXN0ZW0gZm9udApkaWZmIC0tZ2l0IGEv
U291cmNlL0phdmFTY3JpcHRDb3JlL0NNYWtlTGlzdHMudHh0IGIvU291cmNlL0phdmFTY3JpcHRD
b3JlL0NNYWtlTGlzdHMudHh0CmluZGV4IGQyMjUyMzgxNjMzYjQyYWJlYzIzYmEwNTg2MGQ0ODRk
ZjA4YTVkY2MuLmY4MzM0OWRkZDBiNjVkMWE2YzVmNGU5MmY0YTFhODM2MzQ2MjUzZmMgMTAwNjQ0
Ci0tLSBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9DTWFrZUxpc3RzLnR4dAorKysgYi9Tb3VyY2Uv
SmF2YVNjcmlwdENvcmUvQ01ha2VMaXN0cy50eHQKQEAgLTM5MCw3ICszOTAsNiBAQCBzZXQoSmF2
YVNjcmlwdENvcmVfU09VUkNFUwogCiAgICAgcGFyc2VyL0xleGVyLmNwcAogICAgIHBhcnNlci9N
b2R1bGVBbmFseXplci5jcHAKLSAgICBwYXJzZXIvTW9kdWxlUmVjb3JkLmNwcAogICAgIHBhcnNl
ci9Ob2Rlcy5jcHAKICAgICBwYXJzZXIvTm9kZXNBbmFseXplTW9kdWxlLmNwcAogICAgIHBhcnNl
ci9QYXJzZXIuY3BwCkBAIC01MzAsNiArNTI5LDcgQEAgc2V0KEphdmFTY3JpcHRDb3JlX1JVTlRJ
TUVfU09VUkNFUwogICAgIHJ1bnRpbWUvSlNMb2NrLmNwcAogICAgIHJ1bnRpbWUvSlNNYXAuY3Bw
CiAgICAgcnVudGltZS9KU01hcEl0ZXJhdG9yLmNwcAorICAgIHJ1bnRpbWUvSlNNb2R1bGVSZWNv
cmQuY3BwCiAgICAgcnVudGltZS9KU05vdEFuT2JqZWN0LmNwcAogICAgIHJ1bnRpbWUvSlNPTk9i
amVjdC5jcHAKICAgICBydW50aW1lL0pTT2JqZWN0LmNwcApAQCAtNTY0LDYgKzU2NCw3IEBAIHNl
dChKYXZhU2NyaXB0Q29yZV9SVU5USU1FX1NPVVJDRVMKICAgICBydW50aW1lL01hdGhDb21tb24u
Y3BwCiAgICAgcnVudGltZS9NYXRoT2JqZWN0LmNwcAogICAgIHJ1bnRpbWUvTWVtb3J5U3RhdGlz
dGljcy5jcHAKKyAgICBydW50aW1lL01vZHVsZUxvYWRlck9iamVjdC5jcHAKICAgICBydW50aW1l
L05hdGl2ZUVycm9yQ29uc3RydWN0b3IuY3BwCiAgICAgcnVudGltZS9OYXRpdmVFcnJvclByb3Rv
dHlwZS5jcHAKICAgICBydW50aW1lL051bGxHZXR0ZXJGdW5jdGlvbi5jcHAKQEAgLTY1Niw2ICs2
NTcsNyBAQCBzZXQoSmF2YVNjcmlwdENvcmVfTFVUX0ZJTEVTCiAgICAgcnVudGltZS9KU09OT2Jq
ZWN0LmNwcAogICAgIHJ1bnRpbWUvSlNQcm9taXNlQ29uc3RydWN0b3IuY3BwCiAgICAgcnVudGlt
ZS9KU1Byb21pc2VQcm90b3R5cGUuY3BwCisgICAgcnVudGltZS9Nb2R1bGVMb2FkZXJPYmplY3Qu
Y3BwCiAgICAgcnVudGltZS9OdW1iZXJDb25zdHJ1Y3Rvci5jcHAKICAgICBydW50aW1lL051bWJl
clByb3RvdHlwZS5jcHAKICAgICBydW50aW1lL09iamVjdENvbnN0cnVjdG9yLmNwcApkaWZmIC0t
Z2l0IGEvU291cmNlL0phdmFTY3JpcHRDb3JlL0Rlcml2ZWRTb3VyY2VzLm1ha2UgYi9Tb3VyY2Uv
SmF2YVNjcmlwdENvcmUvRGVyaXZlZFNvdXJjZXMubWFrZQppbmRleCAxY2IyZDVjYmEzYmQzNWUy
MDlmOWQyYzdiYjQ2N2IyYjk2ZjdmYTVkLi41M2FiZGI2YWRjYjcxMDhlN2VmMTkzYjk2OTk1NjQ5
NTk1ZjJjMTUxIDEwMDY0NAotLS0gYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvRGVyaXZlZFNvdXJj
ZXMubWFrZQorKysgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvRGVyaXZlZFNvdXJjZXMubWFrZQpA
QCAtNTUsNiArNTUsNyBAQCBhbGwgOiBcCiAgICAgSlNQcm9taXNlQ29uc3RydWN0b3IubHV0Lmgg
XAogICAgIEtleXdvcmRMb29rdXAuaCBcCiAgICAgTGV4ZXIubHV0LmggXAorICAgIE1vZHVsZUxv
YWRlck9iamVjdC5sdXQuaCBcCiAgICAgTnVtYmVyQ29uc3RydWN0b3IubHV0LmggXAogICAgIE51
bWJlclByb3RvdHlwZS5sdXQuaCBcCiAgICAgT2JqZWN0Q29uc3RydWN0b3IubHV0LmggXApkaWZm
IC0tZ2l0IGEvU291cmNlL0phdmFTY3JpcHRDb3JlL0phdmFTY3JpcHRDb3JlLnZjeHByb2ovSmF2
YVNjcmlwdENvcmUudmN4cHJvaiBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9KYXZhU2NyaXB0Q29y
ZS52Y3hwcm9qL0phdmFTY3JpcHRDb3JlLnZjeHByb2oKaW5kZXggNTA2MjQ3ZGEwOTM2ODBlZTMx
MWJiOWY0MDI0ZjI1Njk2NjEzZmUyNC4uMjA1N2YxZGYxYTJkMDQ2NzA0M2NlYTdiY2Q1YTRiZTE3
MTMwNzk5NiAxMDA2NDQKLS0tIGEvU291cmNlL0phdmFTY3JpcHRDb3JlL0phdmFTY3JpcHRDb3Jl
LnZjeHByb2ovSmF2YVNjcmlwdENvcmUudmN4cHJvagorKysgYi9Tb3VyY2UvSmF2YVNjcmlwdENv
cmUvSmF2YVNjcmlwdENvcmUudmN4cHJvai9KYXZhU2NyaXB0Q29yZS52Y3hwcm9qCkBAIC02NjIs
NyArNjYyLDYgQEAKICAgICA8Q2xDb21waWxlIEluY2x1ZGU9Ii4uXGxsdm1cTExWTUFQSS5jcHAi
IC8+CiAgICAgPENsQ29tcGlsZSBJbmNsdWRlPSIuLlxwYXJzZXJcTGV4ZXIuY3BwIiAvPgogICAg
IDxDbENvbXBpbGUgSW5jbHVkZT0iLi5ccGFyc2VyXE1vZHVsZUFuYWx5emVyLmNwcCIgLz4KLSAg
ICA8Q2xDb21waWxlIEluY2x1ZGU9Ii4uXHBhcnNlclxNb2R1bGVSZWNvcmQuY3BwIiAvPgogICAg
IDxDbENvbXBpbGUgSW5jbHVkZT0iLi5ccGFyc2VyXE5vZGVzLmNwcCIgLz4KICAgICA8Q2xDb21w
aWxlIEluY2x1ZGU9Ii4uXHBhcnNlclxOb2Rlc0FuYWx5emVNb2R1bGUuY3BwIiAvPgogICAgIDxD
bENvbXBpbGUgSW5jbHVkZT0iLi5ccGFyc2VyXFBhcnNlci5jcHAiIC8+CkBAIC03NzksNiArNzc4
LDcgQEAKICAgICA8Q2xDb21waWxlIEluY2x1ZGU9Ii4uXHJ1bnRpbWVcSlNMb2NrLmNwcCIgLz4K
ICAgICA8Q2xDb21waWxlIEluY2x1ZGU9Ii4uXHJ1bnRpbWVcSlNNYXAuY3BwIiAvPgogICAgIDxD
bENvbXBpbGUgSW5jbHVkZT0iLi5ccnVudGltZVxKU01hcEl0ZXJhdG9yLmNwcCIgLz4KKyAgICA8
Q2xDb21waWxlIEluY2x1ZGU9Ii4uXHJ1bnRpbWVcSlNNb2R1bGVSZWNvcmQuY3BwIiAvPgogICAg
IDxDbENvbXBpbGUgSW5jbHVkZT0iLi5ccnVudGltZVxKU05vdEFuT2JqZWN0LmNwcCIgLz4KICAg
ICA8Q2xDb21waWxlIEluY2x1ZGU9Ii4uXHJ1bnRpbWVcSlNPTk9iamVjdC5jcHAiIC8+CiAgICAg
PENsQ29tcGlsZSBJbmNsdWRlPSIuLlxydW50aW1lXEpTT2JqZWN0LmNwcCIgLz4KQEAgLTgxNCw2
ICs4MTQsNyBAQAogICAgIDxDbENvbXBpbGUgSW5jbHVkZT0iLi5ccnVudGltZVxNYXRoQ29tbW9u
LmNwcCIgLz4KICAgICA8Q2xDb21waWxlIEluY2x1ZGU9Ii4uXHJ1bnRpbWVcTWF0aE9iamVjdC5j
cHAiIC8+CiAgICAgPENsQ29tcGlsZSBJbmNsdWRlPSIuLlxydW50aW1lXE1lbW9yeVN0YXRpc3Rp
Y3MuY3BwIiAvPgorICAgIDxDbENvbXBpbGUgSW5jbHVkZT0iLi5ccnVudGltZVxNb2R1bGVMb2Fk
ZXJPYmplY3QuY3BwIiAvPgogICAgIDxDbENvbXBpbGUgSW5jbHVkZT0iLi5ccnVudGltZVxOYXRp
dmVFcnJvckNvbnN0cnVjdG9yLmNwcCIgLz4KICAgICA8Q2xDb21waWxlIEluY2x1ZGU9Ii4uXHJ1
bnRpbWVcTmF0aXZlRXJyb3JQcm90b3R5cGUuY3BwIiAvPgogICAgIDxDbENvbXBpbGUgSW5jbHVk
ZT0iLi5ccnVudGltZVxOdWxsR2V0dGVyRnVuY3Rpb24uY3BwIiAvPgpAQCAtOTI1LDYgKzkyNiw3
IEBACiAgICAgPENsSW5jbHVkZSBJbmNsdWRlPSIkKENvbmZpZ3VyYXRpb25CdWlsZERpcilcb2Jq
JChQbGF0Zm9ybUFyY2hpdGVjdHVyZSlcJChQcm9qZWN0TmFtZSlcRGVyaXZlZFNvdXJjZXNcTnVt
YmVyQ29uc3RydWN0b3IubHV0LmgiIC8+CiAgICAgPENsSW5jbHVkZSBJbmNsdWRlPSIkKENvbmZp
Z3VyYXRpb25CdWlsZERpcilcb2JqJChQbGF0Zm9ybUFyY2hpdGVjdHVyZSlcJChQcm9qZWN0TmFt
ZSlcRGVyaXZlZFNvdXJjZXNcTnVtYmVyUHJvdG90eXBlLmx1dC5oIiAvPgogICAgIDxDbEluY2x1
ZGUgSW5jbHVkZT0iJChDb25maWd1cmF0aW9uQnVpbGREaXIpXG9iaiQoUGxhdGZvcm1BcmNoaXRl
Y3R1cmUpXCQoUHJvamVjdE5hbWUpXERlcml2ZWRTb3VyY2VzXE9iamVjdENvbnN0cnVjdG9yLmx1
dC5oIiAvPgorICAgIDxDbEluY2x1ZGUgSW5jbHVkZT0iJChDb25maWd1cmF0aW9uQnVpbGREaXIp
XG9iaiQoUGxhdGZvcm1BcmNoaXRlY3R1cmUpXCQoUHJvamVjdE5hbWUpXERlcml2ZWRTb3VyY2Vz
XE1vZHVsZUxvYWRlck9iamVjdC5sdXQuaCIgLz4KICAgICA8Q2xJbmNsdWRlIEluY2x1ZGU9IiQo
Q29uZmlndXJhdGlvbkJ1aWxkRGlyKVxvYmokKFBsYXRmb3JtQXJjaGl0ZWN0dXJlKVwkKFByb2pl
Y3ROYW1lKVxEZXJpdmVkU291cmNlc1xSZWZsZWN0T2JqZWN0Lmx1dC5oIiAvPgogICAgIDxDbElu
Y2x1ZGUgSW5jbHVkZT0iJChDb25maWd1cmF0aW9uQnVpbGREaXIpXG9iaiQoUGxhdGZvcm1BcmNo
aXRlY3R1cmUpXCQoUHJvamVjdE5hbWUpXERlcml2ZWRTb3VyY2VzXFJlZ0V4cENvbnN0cnVjdG9y
Lmx1dC5oIiAvPgogICAgIDxDbEluY2x1ZGUgSW5jbHVkZT0iJChDb25maWd1cmF0aW9uQnVpbGRE
aXIpXG9iaiQoUGxhdGZvcm1BcmNoaXRlY3R1cmUpXCQoUHJvamVjdE5hbWUpXERlcml2ZWRTb3Vy
Y2VzXFJlZ0V4cEppdFRhYmxlcy5oIiAvPgpAQCAtMTQ1Nyw3ICsxNDU5LDYgQEAKICAgICA8Q2xJ
bmNsdWRlIEluY2x1ZGU9Ii4uXHBhcnNlclxBU1RCdWlsZGVyLmgiIC8+CiAgICAgPENsSW5jbHVk
ZSBJbmNsdWRlPSIuLlxwYXJzZXJcTGV4ZXIuaCIgLz4KICAgICA8Q2xJbmNsdWRlIEluY2x1ZGU9
Ii4uXHBhcnNlclxNb2R1bGVBbmFseXplci5oIiAvPgotICAgIDxDbEluY2x1ZGUgSW5jbHVkZT0i
Li5ccGFyc2VyXE1vZHVsZVJlY29yZC5oIiAvPgogICAgIDxDbEluY2x1ZGUgSW5jbHVkZT0iLi5c
cGFyc2VyXE5vZGVDb25zdHJ1Y3RvcnMuaCIgLz4KICAgICA8Q2xJbmNsdWRlIEluY2x1ZGU9Ii4u
XHBhcnNlclxOb2Rlcy5oIiAvPgogICAgIDxDbEluY2x1ZGUgSW5jbHVkZT0iLi5ccGFyc2VyXFBh
cnNlci5oIiAvPgpAQCAtMTYyMyw2ICsxNjI0LDcgQEAKICAgICA8Q2xJbmNsdWRlIEluY2x1ZGU9
Ii4uXHJ1bnRpbWVcSlNMb2NrLmgiIC8+CiAgICAgPENsSW5jbHVkZSBJbmNsdWRlPSIuLlxydW50
aW1lXEpTTWFwLmgiIC8+CiAgICAgPENsSW5jbHVkZSBJbmNsdWRlPSIuLlxydW50aW1lXEpTTWFw
SXRlcmF0b3IuaCIgLz4KKyAgICA8Q2xJbmNsdWRlIEluY2x1ZGU9Ii4uXHJ1bnRpbWVcSlNNb2R1
bGVSZWNvcmQuaCIgLz4KICAgICA8Q2xJbmNsdWRlIEluY2x1ZGU9Ii4uXHJ1bnRpbWVcSlNOb3RB
bk9iamVjdC5oIiAvPgogICAgIDxDbEluY2x1ZGUgSW5jbHVkZT0iLi5ccnVudGltZVxKU09OT2Jq
ZWN0LmgiIC8+CiAgICAgPENsSW5jbHVkZSBJbmNsdWRlPSIuLlxydW50aW1lXEpTT2JqZWN0Lmgi
IC8+CkBAIC0xNjY4LDYgKzE2NzAsNyBAQAogICAgIDxDbEluY2x1ZGUgSW5jbHVkZT0iLi5ccnVu
dGltZVxNYXRoQ29tbW9uLmgiIC8+CiAgICAgPENsSW5jbHVkZSBJbmNsdWRlPSIuLlxydW50aW1l
XE1hdGhPYmplY3QuaCIgLz4KICAgICA8Q2xJbmNsdWRlIEluY2x1ZGU9Ii4uXHJ1bnRpbWVcTWVt
b3J5U3RhdGlzdGljcy5oIiAvPgorICAgIDxDbEluY2x1ZGUgSW5jbHVkZT0iLi5ccnVudGltZVxN
b2R1bGVMb2FkZXJPYmplY3QuaCIgLz4KICAgICA8Q2xJbmNsdWRlIEluY2x1ZGU9Ii4uXHJ1bnRp
bWVcTWljcm90YXNrLmgiIC8+CiAgICAgPENsSW5jbHVkZSBJbmNsdWRlPSIuLlxydW50aW1lXE5h
dGl2ZUVycm9yQ29uc3RydWN0b3IuaCIgLz4KICAgICA8Q2xJbmNsdWRlIEluY2x1ZGU9Ii4uXHJ1
bnRpbWVcTmF0aXZlRXJyb3JQcm90b3R5cGUuaCIgLz4KZGlmZiAtLWdpdCBhL1NvdXJjZS9KYXZh
U2NyaXB0Q29yZS9KYXZhU2NyaXB0Q29yZS52Y3hwcm9qL0phdmFTY3JpcHRDb3JlLnZjeHByb2ou
ZmlsdGVycyBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9KYXZhU2NyaXB0Q29yZS52Y3hwcm9qL0ph
dmFTY3JpcHRDb3JlLnZjeHByb2ouZmlsdGVycwppbmRleCAwNjYwZjI5N2UyY2M3YTczZjRiM2Mx
YmY5NDVkNTZmMWE1ZGY2NmVjLi41YTE0Y2NlMWVjNDFmYmIxNjQ2NDA3NDU3YTI4ZmE5MTI1Mzc1
ZjdhIDEwMDY0NAotLS0gYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvSmF2YVNjcmlwdENvcmUudmN4
cHJvai9KYXZhU2NyaXB0Q29yZS52Y3hwcm9qLmZpbHRlcnMKKysrIGIvU291cmNlL0phdmFTY3Jp
cHRDb3JlL0phdmFTY3JpcHRDb3JlLnZjeHByb2ovSmF2YVNjcmlwdENvcmUudmN4cHJvai5maWx0
ZXJzCkBAIC00NTksOSArNDU5LDYgQEAKICAgICA8Q2xDb21waWxlIEluY2x1ZGU9Ii4uXHBhcnNl
clxNb2R1bGVBbmFseXplci5jcHAiPgogICAgICAgPEZpbHRlcj5wYXJzZXI8L0ZpbHRlcj4KICAg
ICA8L0NsQ29tcGlsZT4KLSAgICA8Q2xDb21waWxlIEluY2x1ZGU9Ii4uXHBhcnNlclxNb2R1bGVS
ZWNvcmQuY3BwIj4KLSAgICAgIDxGaWx0ZXI+cGFyc2VyPC9GaWx0ZXI+Ci0gICAgPC9DbENvbXBp
bGU+CiAgICAgPENsQ29tcGlsZSBJbmNsdWRlPSIuLlxwYXJzZXJcTm9kZXMuY3BwIj4KICAgICAg
IDxGaWx0ZXI+cGFyc2VyPC9GaWx0ZXI+CiAgICAgPC9DbENvbXBpbGU+CkBAIC03MjYsNiArNzIz
LDkgQEAKICAgICA8Q2xDb21waWxlIEluY2x1ZGU9Ii4uXHJ1bnRpbWVcSlNNYXAuY3BwIj4KICAg
ICAgIDxGaWx0ZXI+cnVudGltZTwvRmlsdGVyPgogICAgIDwvQ2xDb21waWxlPgorICAgIDxDbENv
bXBpbGUgSW5jbHVkZT0iLi5ccnVudGltZVxKU01vZHVsZVJlY29yZC5jcHAiPgorICAgICAgPEZp
bHRlcj5ydW50aW1lPC9GaWx0ZXI+CisgICAgPC9DbENvbXBpbGU+CiAgICAgPENsQ29tcGlsZSBJ
bmNsdWRlPSIuLlxydW50aW1lXEpTTm90QW5PYmplY3QuY3BwIj4KICAgICAgIDxGaWx0ZXI+cnVu
dGltZTwvRmlsdGVyPgogICAgIDwvQ2xDb21waWxlPgpAQCAtMTY5OCw2ICsxNjk4LDkgQEAKICAg
ICA8Q2xDb21waWxlIEluY2x1ZGU9Ii4uXHJ1bnRpbWVcTWVtb3J5U3RhdGlzdGljcy5jcHAiPgog
ICAgICAgPEZpbHRlcj5ydW50aW1lPC9GaWx0ZXI+CiAgICAgPC9DbENvbXBpbGU+CisgICAgPENs
Q29tcGlsZSBJbmNsdWRlPSIuLlxydW50aW1lXE1vZHVsZUxvYWRlck9iamVjdC5jcHAiPgorICAg
ICAgPEZpbHRlcj5ydW50aW1lPC9GaWx0ZXI+CisgICAgPC9DbENvbXBpbGU+CiAgICAgPENsQ29t
cGlsZSBJbmNsdWRlPSIuLlxieXRlY29kZVxDb21wbGV4R2V0U3RhdHVzLmNwcCI+CiAgICAgICA8
RmlsdGVyPmJ5dGVjb2RlPC9GaWx0ZXI+CiAgICAgPC9DbENvbXBpbGU+CkBAIC0yNDk4LDkgKzI1
MDEsNiBAQAogICAgIDxDbEluY2x1ZGUgSW5jbHVkZT0iLi5ccGFyc2VyXE1vZHVsZUFuYWx5emVy
LmgiPgogICAgICAgPEZpbHRlcj5wYXJzZXI8L0ZpbHRlcj4KICAgICA8L0NsSW5jbHVkZT4KLSAg
ICA8Q2xJbmNsdWRlIEluY2x1ZGU9Ii4uXHBhcnNlclxNb2R1bGVSZWNvcmQuaCI+Ci0gICAgICA8
RmlsdGVyPnBhcnNlcjwvRmlsdGVyPgotICAgIDwvQ2xJbmNsdWRlPgogICAgIDxDbEluY2x1ZGUg
SW5jbHVkZT0iLi5ccGFyc2VyXE5vZGVDb25zdHJ1Y3RvcnMuaCI+CiAgICAgICA8RmlsdGVyPnBh
cnNlcjwvRmlsdGVyPgogICAgIDwvQ2xJbmNsdWRlPgpAQCAtMzIxMyw2ICszMjEzLDkgQEAKICAg
ICA8Q2xJbmNsdWRlIEluY2x1ZGU9IiQoQ29uZmlndXJhdGlvbkJ1aWxkRGlyKVxvYmokKFBsYXRm
b3JtQXJjaGl0ZWN0dXJlKVwkKFByb2plY3ROYW1lKVxEZXJpdmVkU291cmNlc1xMZXhlci5sdXQu
aCI+CiAgICAgICA8RmlsdGVyPkRlcml2ZWQgU291cmNlczwvRmlsdGVyPgogICAgIDwvQ2xJbmNs
dWRlPgorICAgIDxDbEluY2x1ZGUgSW5jbHVkZT0iJChDb25maWd1cmF0aW9uQnVpbGREaXIpXG9i
aiQoUGxhdGZvcm1BcmNoaXRlY3R1cmUpXCQoUHJvamVjdE5hbWUpXERlcml2ZWRTb3VyY2VzXE1v
ZHVsZUxvYWRlck9iamVjdC5sdXQuaCI+CisgICAgICA8RmlsdGVyPkRlcml2ZWQgU291cmNlczwv
RmlsdGVyPgorICAgIDwvQ2xJbmNsdWRlPgogICAgIDxDbEluY2x1ZGUgSW5jbHVkZT0iJChDb25m
aWd1cmF0aW9uQnVpbGREaXIpXG9iaiQoUGxhdGZvcm1BcmNoaXRlY3R1cmUpXCQoUHJvamVjdE5h
bWUpXERlcml2ZWRTb3VyY2VzXE51bWJlckNvbnN0cnVjdG9yLmx1dC5oIj4KICAgICAgIDxGaWx0
ZXI+RGVyaXZlZCBTb3VyY2VzPC9GaWx0ZXI+CiAgICAgPC9DbEluY2x1ZGU+CkBAIC0zNDUwLDYg
KzM0NTMsOSBAQAogICAgIDxDbEluY2x1ZGUgSW5jbHVkZT0iLi5ccnVudGltZVxKU01hcC5oIj4K
ICAgICAgIDxGaWx0ZXI+cnVudGltZTwvRmlsdGVyPgogICAgIDwvQ2xJbmNsdWRlPgorICAgIDxD
bEluY2x1ZGUgSW5jbHVkZT0iLi5ccnVudGltZVxKU01vZHVsZVJlY29yZC5oIj4KKyAgICAgIDxG
aWx0ZXI+cnVudGltZTwvRmlsdGVyPgorICAgIDwvQ2xJbmNsdWRlPgogICAgIDxDbEluY2x1ZGUg
SW5jbHVkZT0iLi5ccnVudGltZVxKU1NldC5oIj4KICAgICAgIDxGaWx0ZXI+cnVudGltZTwvRmls
dGVyPgogICAgIDwvQ2xJbmNsdWRlPgpAQCAtNDI0Niw2ICs0MjUyLDkgQEAKICAgICA8Q2xJbmNs
dWRlIEluY2x1ZGU9Ii4uXHJ1bnRpbWVcTWVtb3J5U3RhdGlzdGljcy5oIj4KICAgICAgIDxGaWx0
ZXI+cnVudGltZTwvRmlsdGVyPgogICAgIDwvQ2xJbmNsdWRlPgorICAgIDxDbEluY2x1ZGUgSW5j
bHVkZT0iLi5ccnVudGltZVxNb2R1bGVMb2FkZXJPYmplY3QuaCI+CisgICAgICA8RmlsdGVyPnJ1
bnRpbWU8L0ZpbHRlcj4KKyAgICA8L0NsSW5jbHVkZT4KICAgICA8Q2xJbmNsdWRlIEluY2x1ZGU9
Ii4uXGJ5dGVjb2RlXENvbXBsZXhHZXRTdGF0dXMuaCI+CiAgICAgICA8RmlsdGVyPmJ5dGVjb2Rl
PC9GaWx0ZXI+CiAgICAgPC9DbEluY2x1ZGU+CmRpZmYgLS1naXQgYS9Tb3VyY2UvSmF2YVNjcmlw
dENvcmUvSmF2YVNjcmlwdENvcmUueGNvZGVwcm9qL3Byb2plY3QucGJ4cHJvaiBiL1NvdXJjZS9K
YXZhU2NyaXB0Q29yZS9KYXZhU2NyaXB0Q29yZS54Y29kZXByb2ovcHJvamVjdC5wYnhwcm9qCmlu
ZGV4IDQ4ZmZjYzY5NjM4ZWZmOWE3NGExZDBhYTQwZTEwY2MwN2YxYWE5MDMuLmEwZDQ3MGI2MjY4
N2QzYTU4Y2Q3NWQxZWZjODQ1ZDgwYWZiYWRjMjcgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9KYXZhU2Ny
aXB0Q29yZS9KYXZhU2NyaXB0Q29yZS54Y29kZXByb2ovcHJvamVjdC5wYnhwcm9qCisrKyBiL1Nv
dXJjZS9KYXZhU2NyaXB0Q29yZS9KYXZhU2NyaXB0Q29yZS54Y29kZXByb2ovcHJvamVjdC5wYnhw
cm9qCkBAIC0xNzAwLDExICsxNzAwLDE2IEBACiAJCUUzNTQ2MjJCMUI2MDY1RDEwMDU0NTM4NiAv
KiBDb25zdHJ1Y3RBYmlsaXR5LmggaW4gSGVhZGVycyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7
IGZpbGVSZWYgPSBFMzU0NjIyQTFCNjA2NUQxMDA1NDUzODYgLyogQ29uc3RydWN0QWJpbGl0eS5o
ICovOyBzZXR0aW5ncyA9IHtBVFRSSUJVVEVTID0gKFByaXZhdGUsICk7IH07IH07CiAJCUUzNUUw
MzVGMUI3QUI0M0UwMDczQUQyQSAvKiBJbnNwZWN0b3JJbnN0cnVtZW50YXRpb25PYmplY3QuY3Bw
IGluIFNvdXJjZXMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gRTM1RTAzNUQx
QjdBQjQzRTAwNzNBRDJBIC8qIEluc3BlY3Rvckluc3RydW1lbnRhdGlvbk9iamVjdC5jcHAgKi87
IH07CiAJCUUzNUUwMzYwMUI3QUI0M0UwMDczQUQyQSAvKiBJbnNwZWN0b3JJbnN0cnVtZW50YXRp
b25PYmplY3QuaCBpbiBIZWFkZXJzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9
IEUzNUUwMzVFMUI3QUI0M0UwMDczQUQyQSAvKiBJbnNwZWN0b3JJbnN0cnVtZW50YXRpb25PYmpl
Y3QuaCAqLzsgc2V0dGluZ3MgPSB7QVRUUklCVVRFUyA9IChQcml2YXRlLCApOyB9OyB9OworCQlF
MzU1RjM1MjFCN0RDODUzMDBDNTBEQzUgLyogTW9kdWxlTG9hZGVyT2JqZWN0LmNwcCBpbiBTb3Vy
Y2VzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IEUzNTVGMzUwMUI3REM4NTMw
MEM1MERDNSAvKiBNb2R1bGVMb2FkZXJPYmplY3QuY3BwICovOyB9OworCQlFMzU1RjM1MzFCN0RD
ODUzMDBDNTBEQzUgLyogTW9kdWxlTG9hZGVyT2JqZWN0LmggaW4gSGVhZGVycyAqLyA9IHtpc2Eg
PSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSBFMzU1RjM1MTFCN0RDODUzMDBDNTBEQzUgLyogTW9k
dWxlTG9hZGVyT2JqZWN0LmggKi87IH07CiAJCUUzNzk0RTc1MUI3N0VCOTcwMDU1NDNBRSAvKiBN
b2R1bGVBbmFseXplci5jcHAgaW4gU291cmNlcyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZp
bGVSZWYgPSBFMzc5NEU3MzFCNzdFQjk3MDA1NTQzQUUgLyogTW9kdWxlQW5hbHl6ZXIuY3BwICov
OyB9OwogCQlFMzc5NEU3NjFCNzdFQjk3MDA1NTQzQUUgLyogTW9kdWxlQW5hbHl6ZXIuaCBpbiBI
ZWFkZXJzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IEUzNzk0RTc0MUI3N0VC
OTcwMDU1NDNBRSAvKiBNb2R1bGVBbmFseXplci5oICovOyBzZXR0aW5ncyA9IHtBVFRSSUJVVEVT
ID0gKFByaXZhdGUsICk7IH07IH07Ci0JCUUzOTYzQ0VEMUI3M0Y3NTAwMEVCNENFNSAvKiBNb2R1
bGVSZWNvcmQuaCBpbiBIZWFkZXJzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9
IEUzOTYzQ0VCMUI3M0Y3NTAwMEVCNENFNSAvKiBNb2R1bGVSZWNvcmQuaCAqLzsgc2V0dGluZ3Mg
PSB7QVRUUklCVVRFUyA9IChQcml2YXRlLCApOyB9OyB9OwogCQlFMzk2M0NFRTFCNzNGNzUwMDBF
QjRDRTUgLyogTm9kZXNBbmFseXplTW9kdWxlLmNwcCBpbiBTb3VyY2VzICovID0ge2lzYSA9IFBC
WEJ1aWxkRmlsZTsgZmlsZVJlZiA9IEUzOTYzQ0VDMUI3M0Y3NTAwMEVCNENFNSAvKiBOb2Rlc0Fu
YWx5emVNb2R1bGUuY3BwICovOyB9OwogCQlFM0MwOUY1NTFCNzk2OTJBMDBFRTM2QTIgLyogTW9k
dWxlUmVjb3JkLmNwcCBpbiBTb3VyY2VzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJl
ZiA9IEUzQzA5RjU0MUI3OTY5MkEwMEVFMzZBMiAvKiBNb2R1bGVSZWNvcmQuY3BwICovOyB9Owor
CQlFMzVFMDM1RjFCN0FCNDNFMDA3M0FEMkEgLyogSW5zcGVjdG9ySW5zdHJ1bWVudGF0aW9uT2Jq
ZWN0LmNwcCBpbiBTb3VyY2VzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IEUz
NUUwMzVEMUI3QUI0M0UwMDczQUQyQSAvKiBJbnNwZWN0b3JJbnN0cnVtZW50YXRpb25PYmplY3Qu
Y3BwICovOyB9OworCQlFMzVFMDM2MDFCN0FCNDNFMDA3M0FEMkEgLyogSW5zcGVjdG9ySW5zdHJ1
bWVudGF0aW9uT2JqZWN0LmggaW4gSGVhZGVycyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZp
bGVSZWYgPSBFMzVFMDM1RTFCN0FCNDNFMDA3M0FEMkEgLyogSW5zcGVjdG9ySW5zdHJ1bWVudGF0
aW9uT2JqZWN0LmggKi87IHNldHRpbmdzID0ge0FUVFJJQlVURVMgPSAoUHJpdmF0ZSwgKTsgfTsg
fTsKKwkJRTM5REE0QTYxQjdFOEI3QzAwODRGMzNBIC8qIEpTTW9kdWxlUmVjb3JkLmNwcCBpbiBT
b3VyY2VzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IEUzOURBNEE0MUI3RThC
N0MwMDg0RjMzQSAvKiBKU01vZHVsZVJlY29yZC5jcHAgKi87IH07CisJCUUzOURBNEE3MUI3RThC
N0MwMDg0RjMzQSAvKiBKU01vZHVsZVJlY29yZC5oIGluIEhlYWRlcnMgKi8gPSB7aXNhID0gUEJY
QnVpbGRGaWxlOyBmaWxlUmVmID0gRTM5REE0QTUxQjdFOEI3QzAwODRGMzNBIC8qIEpTTW9kdWxl
UmVjb3JkLmggKi87IHNldHRpbmdzID0ge0FUVFJJQlVURVMgPSAoUHJpdmF0ZSwgKTsgfTsgfTsK
IAkJRTNFRjg4NzQxQjY2REYyMzAwM0YyNkNCIC8qIEpTUHJvcGVydHlOYW1lSXRlcmF0b3IuY3Bw
IGluIFNvdXJjZXMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gRTNFRjg4NzIx
QjY2REYyMzAwM0YyNkNCIC8qIEpTUHJvcGVydHlOYW1lSXRlcmF0b3IuY3BwICovOyB9OwogCQlF
M0VGODg3NTFCNjZERjIzMDAzRjI2Q0IgLyogSlNQcm9wZXJ0eU5hbWVJdGVyYXRvci5oIGluIEhl
YWRlcnMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gRTNFRjg4NzMxQjY2REYy
MzAwM0YyNkNCIC8qIEpTUHJvcGVydHlOYW1lSXRlcmF0b3IuaCAqLzsgc2V0dGluZ3MgPSB7QVRU
UklCVVRFUyA9IChQcml2YXRlLCApOyB9OyB9OwogCQlFNDlEQzE2QjEyRUYyOTNFMDAxODRBMUYg
LyogU291cmNlUHJvdmlkZXJDYWNoZS5jcHAgaW4gU291cmNlcyAqLyA9IHtpc2EgPSBQQlhCdWls
ZEZpbGU7IGZpbGVSZWYgPSBFNDlEQzE1NTEyRUYyNzcyMDAxODRBMUYgLyogU291cmNlUHJvdmlk
ZXJDYWNoZS5jcHAgKi87IH07CkBAIC0zNTM3LDExICszNTQyLDE3IEBACiAJCUUzNUUwMzVEMUI3
QUI0M0UwMDczQUQyQSAvKiBJbnNwZWN0b3JJbnN0cnVtZW50YXRpb25PYmplY3QuY3BwICovID0g
e2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVU
eXBlID0gc291cmNlY29kZS5jcHAuY3BwOyBwYXRoID0gSW5zcGVjdG9ySW5zdHJ1bWVudGF0aW9u
T2JqZWN0LmNwcDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKIAkJRTM1RTAzNUUxQjdBQjQz
RTAwNzNBRDJBIC8qIEluc3BlY3Rvckluc3RydW1lbnRhdGlvbk9iamVjdC5oICovID0ge2lzYSA9
IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0g
c291cmNlY29kZS5jLmg7IHBhdGggPSBJbnNwZWN0b3JJbnN0cnVtZW50YXRpb25PYmplY3QuaDsg
c291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKIAkJRTM1RTAzNjExQjdBQjQ4NTAwNzNBRDJBIC8q
IEluc3BlY3Rvckluc3RydW1lbnRhdGlvbk9iamVjdC5qcyAqLyA9IHtpc2EgPSBQQlhGaWxlUmVm
ZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUu
amF2YXNjcmlwdDsgcGF0aCA9IEluc3BlY3Rvckluc3RydW1lbnRhdGlvbk9iamVjdC5qczsgc291
cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKKwkJRTM1NUYzNTAxQjdEQzg1MzAwQzUwREM1IC8qIE1v
ZHVsZUxvYWRlck9iamVjdC5jcHAgKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVu
Y29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmNwcC5jcHA7IHBhdGgg
PSBNb2R1bGVMb2FkZXJPYmplY3QuY3BwOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OworCQlF
MzU1RjM1MTFCN0RDODUzMDBDNTBEQzUgLyogTW9kdWxlTG9hZGVyT2JqZWN0LmggKi8gPSB7aXNh
ID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUg
PSBzb3VyY2Vjb2RlLmMuaDsgcGF0aCA9IE1vZHVsZUxvYWRlck9iamVjdC5oOyBzb3VyY2VUcmVl
ID0gIjxncm91cD4iOyB9OwogCQlFMzc5NEU3MzFCNzdFQjk3MDA1NTQzQUUgLyogTW9kdWxlQW5h
bHl6ZXIuY3BwICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7
IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jcHAuY3BwOyBwYXRoID0gTW9kdWxlQW5h
bHl6ZXIuY3BwOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OwogCQlFMzc5NEU3NDFCNzdFQjk3
MDA1NTQzQUUgLyogTW9kdWxlQW5hbHl6ZXIuaCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNl
OyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuYy5oOyBw
YXRoID0gTW9kdWxlQW5hbHl6ZXIuaDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKLQkJRTM5
NjNDRUIxQjczRjc1MDAwRUI0Q0U1IC8qIE1vZHVsZVJlY29yZC5oICovID0ge2lzYSA9IFBCWEZp
bGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNl
Y29kZS5jLmg7IHBhdGggPSBNb2R1bGVSZWNvcmQuaDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+Ijsg
fTsKIAkJRTM5NjNDRUMxQjczRjc1MDAwRUI0Q0U1IC8qIE5vZGVzQW5hbHl6ZU1vZHVsZS5jcHAg
Ki8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3du
RmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmNwcC5jcHA7IHBhdGggPSBOb2Rlc0FuYWx5emVNb2R1bGUu
Y3BwOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OwogCQlFM0MwOUY1NDFCNzk2OTJBMDBFRTM2
QTIgLyogTW9kdWxlUmVjb3JkLmNwcCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxl
RW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuY3BwLmNwcDsgcGF0
aCA9IE1vZHVsZVJlY29yZC5jcHA7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CisJCUUzNUUw
MzVEMUI3QUI0M0UwMDczQUQyQSAvKiBJbnNwZWN0b3JJbnN0cnVtZW50YXRpb25PYmplY3QuY3Bw
ICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93
bkZpbGVUeXBlID0gc291cmNlY29kZS5jcHAuY3BwOyBwYXRoID0gSW5zcGVjdG9ySW5zdHJ1bWVu
dGF0aW9uT2JqZWN0LmNwcDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKKwkJRTM1RTAzNUUx
QjdBQjQzRTAwNzNBRDJBIC8qIEluc3BlY3Rvckluc3RydW1lbnRhdGlvbk9iamVjdC5oICovID0g
e2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVU
eXBlID0gc291cmNlY29kZS5jLmg7IHBhdGggPSBJbnNwZWN0b3JJbnN0cnVtZW50YXRpb25PYmpl
Y3QuaDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKKwkJRTM1RTAzNjExQjdBQjQ4NTAwNzNB
RDJBIC8qIEluc3BlY3Rvckluc3RydW1lbnRhdGlvbk9iamVjdC5qcyAqLyA9IHtpc2EgPSBQQlhG
aWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJj
ZWNvZGUuamF2YXNjcmlwdDsgcGF0aCA9IEluc3BlY3Rvckluc3RydW1lbnRhdGlvbk9iamVjdC5q
czsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKKwkJRTM5REE0QTQxQjdFOEI3QzAwODRGMzNB
IC8qIEpTTW9kdWxlUmVjb3JkLmNwcCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxl
RW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuY3BwLmNwcDsgcGF0
aCA9IEpTTW9kdWxlUmVjb3JkLmNwcDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKKwkJRTM5
REE0QTUxQjdFOEI3QzAwODRGMzNBIC8qIEpTTW9kdWxlUmVjb3JkLmggKi8gPSB7aXNhID0gUEJY
RmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3Vy
Y2Vjb2RlLmMuaDsgcGF0aCA9IEpTTW9kdWxlUmVjb3JkLmg7IHNvdXJjZVRyZWUgPSAiPGdyb3Vw
PiI7IH07CiAJCUUzRUY4ODcyMUI2NkRGMjMwMDNGMjZDQiAvKiBKU1Byb3BlcnR5TmFtZUl0ZXJh
dG9yLmNwcCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBs
YXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuY3BwLmNwcDsgcGF0aCA9IEpTUHJvcGVydHlO
YW1lSXRlcmF0b3IuY3BwOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OwogCQlFM0VGODg3MzFC
NjZERjIzMDAzRjI2Q0IgLyogSlNQcm9wZXJ0eU5hbWVJdGVyYXRvci5oICovID0ge2lzYSA9IFBC
WEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gc291
cmNlY29kZS5jLmg7IHBhdGggPSBKU1Byb3BlcnR5TmFtZUl0ZXJhdG9yLmg7IHNvdXJjZVRyZWUg
PSAiPGdyb3VwPiI7IH07CiAJCUU0OURDMTQ5MTJFRjI2MUEwMDE4NEExRiAvKiBTb3VyY2VQcm92
aWRlckNhY2hlSXRlbS5oICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGlu
ZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jLmg7IHBhdGggPSBTb3VyY2VQ
cm92aWRlckNhY2hlSXRlbS5oOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OwpAQCAtNDQ1NCw4
ICs0NDY1LDYgQEAKIAkJCQlGNjkyQTg2NjAyNTU1OTdEMDFGRjYwRjcgLyogTGV4ZXIuaCAqLywK
IAkJCQlFMzc5NEU3MzFCNzdFQjk3MDA1NTQzQUUgLyogTW9kdWxlQW5hbHl6ZXIuY3BwICovLAog
CQkJCUUzNzk0RTc0MUI3N0VCOTcwMDU1NDNBRSAvKiBNb2R1bGVBbmFseXplci5oICovLAotCQkJ
CUUzQzA5RjU0MUI3OTY5MkEwMEVFMzZBMiAvKiBNb2R1bGVSZWNvcmQuY3BwICovLAotCQkJCUUz
OTYzQ0VCMUI3M0Y3NTAwMEVCNENFNSAvKiBNb2R1bGVSZWNvcmQuaCAqLywKIAkJCQk5MzBEQUQw
MzBGQjFFQjFBMDA4MkQyMDUgLyogTm9kZUNvbnN0cnVjdG9ycy5oICovLAogCQkJCUY2OTJBODZE
MDI1NTU5N0QwMUZGNjBGNyAvKiBOb2Rlcy5jcHAgKi8sCiAJCQkJRjY5MkE4NkUwMjU1NTk3RDAx
RkY2MEY3IC8qIE5vZGVzLmggKi8sCkBAIC00NzE5LDYgKzQ3MjgsOCBAQAogCQkJCUE3MDA4NzQw
MTdDQkU4RUIwMEMzRTY0MyAvKiBKU01hcC5oICovLAogCQkJCUE3NERFRjhGMTgyRDk5MTQwMDUy
MkMyMiAvKiBKU01hcEl0ZXJhdG9yLmNwcCAqLywKIAkJCQlBNzRERUY5MDE4MkQ5OTE0MDA1MjJD
MjIgLyogSlNNYXBJdGVyYXRvci5oICovLAorCQkJCUUzOURBNEE0MUI3RThCN0MwMDg0RjMzQSAv
KiBKU01vZHVsZVJlY29yZC5jcHAgKi8sCisJCQkJRTM5REE0QTUxQjdFOEI3QzAwODRGMzNBIC8q
IEpTTW9kdWxlUmVjb3JkLmggKi8sCiAJCQkJQTcyNzAwNzgwREFDNjA1NjAwRTU0OEQ3IC8qIEpT
Tm90QW5PYmplY3QuY3BwICovLAogCQkJCUE3MjcwMDc3MERBQzYwNTYwMEU1NDhENyAvKiBKU05v
dEFuT2JqZWN0LmggKi8sCiAJCQkJQkMyMkEzOTgwRTE2RTE0ODAwQUYyMUM4IC8qIEpTT2JqZWN0
LmNwcCAqLywKQEAgLTQ3OTgsNiArNDgwOSw4IEBACiAJCQkJOTAyMTNFM0IxMjNBNDBDMjAwRDQy
MkYzIC8qIE1lbW9yeVN0YXRpc3RpY3MuY3BwICovLAogCQkJCTkwMjEzRTNDMTIzQTQwQzIwMEQ0
MjJGMyAvKiBNZW1vcnlTdGF0aXN0aWNzLmggKi8sCiAJCQkJN0MwMDhDRTUxODc2MzFCNjAwOTU1
QzI0IC8qIE1pY3JvdGFzay5oICovLAorCQkJCUUzNTVGMzUwMUI3REM4NTMwMEM1MERDNSAvKiBN
b2R1bGVMb2FkZXJPYmplY3QuY3BwICovLAorCQkJCUUzNTVGMzUxMUI3REM4NTMwMEM1MERDNSAv
KiBNb2R1bGVMb2FkZXJPYmplY3QuaCAqLywKIAkJCQlCQzAyRTkwODBFMTgzOURCMDAwRjkyOTcg
LyogTmF0aXZlRXJyb3JDb25zdHJ1Y3Rvci5jcHAgKi8sCiAJCQkJQkMwMkU5MDkwRTE4MzlEQjAw
MEY5Mjk3IC8qIE5hdGl2ZUVycm9yQ29uc3RydWN0b3IuaCAqLywKIAkJCQlCQzAyRTkwQTBFMTgz
OURCMDAwRjkyOTcgLyogTmF0aXZlRXJyb3JQcm90b3R5cGUuY3BwICovLApAQCAtNTgwNyw2ICs1
ODIwLDcgQEAKIAkJCWZpbGVzID0gKAogCQkJCTBGRkE1NDk4MTZCODgzNTMwMEIzQTk4MiAvKiBB
NjRET3Bjb2RlLmggaW4gSGVhZGVycyAqLywKIAkJCQk4NjAxNjFFMzBGM0E4M0MxMDBGODQ3MTAg
LyogQWJzdHJhY3RNYWNyb0Fzc2VtYmxlci5oIGluIEhlYWRlcnMgKi8sCisJCQkJRTM1NUYzNTMx
QjdEQzg1MzAwQzUwREM1IC8qIE1vZHVsZUxvYWRlck9iamVjdC5oIGluIEhlYWRlcnMgKi8sCiAJ
CQkJMEZFMDUwMjkxQUE5MDk1NjAwRDMzQjMzIC8qIFNjb3BlZEFyZ3VtZW50c1RhYmxlLmggaW4g
SGVhZGVycyAqLywKIAkJCQkwRjU1RjBGNTE0RDEwNjNDMDBBQzc2NDkgLyogQWJzdHJhY3RQQy5o
IGluIEhlYWRlcnMgKi8sCiAJCQkJMkE0OEQxOTExNzcyMzY1QjAwQzY1QTVGIC8qIEFQSUNhbGxi
YWNrRnVuY3Rpb24uaCBpbiBIZWFkZXJzICovLApAQCAtNjIwNiw3ICs2MjIwLDYgQEAKIAkJCQkw
RkNFRkFBQzE4MDRDMTNFMDA0NzJDRTQgLyogRlRMU2F2ZVJlc3RvcmUuaCBpbiBIZWFkZXJzICov
LAogCQkJCTBGMjVGMUIyMTgxNjM1RjMwMDUyMkYzOSAvKiBGVExTbG93UGF0aENhbGwuaCBpbiBI
ZWFkZXJzICovLAogCQkJCUUzNTQ2MjJCMUI2MDY1RDEwMDU0NTM4NiAvKiBDb25zdHJ1Y3RBYmls
aXR5LmggaW4gSGVhZGVycyAqLywKLQkJCQlFMzk2M0NFRDFCNzNGNzUwMDBFQjRDRTUgLyogTW9k
dWxlUmVjb3JkLmggaW4gSGVhZGVycyAqLywKIAkJCQkwRjI1RjFCNDE4MTYzNUYzMDA1MjJGMzkg
LyogRlRMU2xvd1BhdGhDYWxsS2V5LmggaW4gSGVhZGVycyAqLywKIAkJCQkwRjlEMzM5QjE4MDNB
REI3MDA3M0MyQkMgLyogRlRMU3RhY2tNYXBzLmggaW4gSGVhZGVycyAqLywKIAkJCQkwRkVBMEEx
MjE3MDUxM0RCMDBCQjcyMkMgLyogRlRMU3RhdGUuaCBpbiBIZWFkZXJzICovLApAQCAtNjIyNyw2
ICs2MjQwLDcgQEAKIAkJCQlCQ0JFMkNBRTE0RTk4NUFBMDAwNTkzQUQgLyogR0NBc3NlcnRpb25z
LmggaW4gSGVhZGVycyAqLywKIAkJCQkwRjc2NkQzMDE1QThEQ0UyMDA4RjM2M0UgLyogR0NBd2Fy
ZUpJVFN0dWJSb3V0aW5lLmggaW4gSGVhZGVycyAqLywKIAkJCQk3MEVDMEVDNzFBQTBEN0RBMDBC
NkFBRkEgLyogU3RyaW5nSXRlcmF0b3JQcm90b3R5cGUuaCBpbiBIZWFkZXJzICovLAorCQkJCUUz
OURBNEE3MUI3RThCN0MwMDg0RjMzQSAvKiBKU01vZHVsZVJlY29yZC5oIGluIEhlYWRlcnMgKi8s
CiAJCQkJMEYyQjY2QUMxN0I2QjUzRjAwQTdBRTNGIC8qIEdDSW5jb21pbmdSZWZDb3VudGVkLmgg
aW4gSGVhZGVycyAqLywKIAkJCQkwRjJCNjZBRDE3QjZCNTQ1MDBBN0FFM0YgLyogR0NJbmNvbWlu
Z1JlZkNvdW50ZWRJbmxpbmVzLmggaW4gSGVhZGVycyAqLywKIAkJCQkwRjJCNjZBRTE3QjZCNTQ1
MDBBN0FFM0YgLyogR0NJbmNvbWluZ1JlZkNvdW50ZWRTZXQuaCBpbiBIZWFkZXJzICovLApAQCAt
NzM0Myw2ICs3MzU3LDcgQEAKIAkJCQkyQTg4MDY3ODE5MTA3RDU1MDBDQjBCQkIgLyogREZHRnVu
Y3Rpb25XaGl0ZWxpc3QuY3BwIGluIFNvdXJjZXMgKi8sCiAJCQkJMEYyREQ4MTMxQUIzRDhCRTAw
QkJCOEU4IC8qIERGR0FyZ3VtZW50c1V0aWxpdGllcy5jcHAgaW4gU291cmNlcyAqLywKIAkJCQlB
N0Q4OUNGMzE3QTBCOENDMDA3NzNBRDggLyogREZHQmxvY2tJbnNlcnRpb25TZXQuY3BwIGluIFNv
dXJjZXMgKi8sCisJCQkJRTM1NUYzNTIxQjdEQzg1MzAwQzUwREM1IC8qIE1vZHVsZUxvYWRlck9i
amVjdC5jcHAgaW4gU291cmNlcyAqLywKIAkJCQk4NkVDOURDNDEzMjhERjgyMDAyQjJBRDcgLyog
REZHQnl0ZUNvZGVQYXJzZXIuY3BwIGluIFNvdXJjZXMgKi8sCiAJCQkJMEZEODJFMjExNDE3MkNF
MzAwMTc5Qzk0IC8qIERGR0NhcGFiaWxpdGllcy5jcHAgaW4gU291cmNlcyAqLywKIAkJCQkwRjJC
OUNFNjE5RDBCQTdEMDBCMUQxQjUgLyogREZHT2JqZWN0QWxsb2NhdGlvblNpbmtpbmdQaGFzZS5j
cHAgaW4gU291cmNlcyAqLywKQEAgLTc2MzIsNyArNzY0Nyw2IEBACiAJCQkJMEYyQjY2RUQxN0I2
QjVBQjAwQTdBRTNGIC8qIEpTRGF0YVZpZXdQcm90b3R5cGUuY3BwIGluIFNvdXJjZXMgKi8sCiAJ
CQkJMEYyRDRERTgxOTgzMkRBQzAwN0Q0QjE5IC8qIFRvVGhpc1N0YXR1cy5jcHAgaW4gU291cmNl
cyAqLywKIAkJCQlGRTM4NEVFNTFBRERCN0FEMDA1NURFMkMgLyogSlNEb2xsYXJWTS5jcHAgaW4g
U291cmNlcyAqLywKLQkJCQlFM0MwOUY1NTFCNzk2OTJBMDBFRTM2QTIgLyogTW9kdWxlUmVjb3Jk
LmNwcCBpbiBTb3VyY2VzICovLAogCQkJCTk3ODgwMTQwMTQ3MUFEOTIwMDQxQjAxNiAvKiBKU0Rh
dGVNYXRoLmNwcCBpbiBTb3VyY2VzICovLAogCQkJCTBGRTA1MDE3MUFBOTA5MTEwMEQzM0IzMyAv
KiBEaXJlY3RBcmd1bWVudHMuY3BwIGluIFNvdXJjZXMgKi8sCiAJCQkJMTQwNTY2RDYxMDdFQzI3
MTAwNURCQzhEIC8qIEpTRnVuY3Rpb24uY3BwIGluIFNvdXJjZXMgKi8sCkBAIC03ODc0LDYgKzc4
ODgsNyBAQAogCQkJCTBGRjQyNzMyMTU4RUJENTgwMDRDQjlGRiAvKiBVRGlzODZEaXNhc3NlbWJs
ZXIuY3BwIGluIFNvdXJjZXMgKi8sCiAJCQkJQTc2RjI3OTQxNUYxM0M5NjAwNTE3RDY3IC8qIFVu
bGlua2VkQ29kZUJsb2NrLmNwcCBpbiBTb3VyY2VzICovLAogCQkJCUI1OUY4OTM5MTg5MUYyOUYw
MEQ1Q0NEQyAvKiBVbmxpbmtlZEluc3RydWN0aW9uU3RyZWFtLmNwcCBpbiBTb3VyY2VzICovLAor
CQkJCUUzOURBNEE2MUI3RThCN0MwMDg0RjMzQSAvKiBKU01vZHVsZVJlY29yZC5jcHAgaW4gU291
cmNlcyAqLywKIAkJCQkwRjc1NzZEMjE4RTFGRUU5MDAyRUY0Q0QgLyogQWNjZXNzb3JDYWxsSklU
U3R1YlJvdXRpbmUuY3BwIGluIFNvdXJjZXMgKi8sCiAJCQkJMEYyNEU1NTgxN0Y3NEVEQjAwQUJC
MjE3IC8qIFZhbHVlUmVjb3ZlcnkuY3BwIGluIFNvdXJjZXMgKi8sCiAJCQkJRTE4RTNBNTkwREY5
Mjc4QzAwRDkwQjM0IC8qIFZNLmNwcCBpbiBTb3VyY2VzICovLApkaWZmIC0tZ2l0IGEvU291cmNl
L0phdmFTY3JpcHRDb3JlL2J1aWx0aW5zL0J1aWx0aW5OYW1lcy5oIGIvU291cmNlL0phdmFTY3Jp
cHRDb3JlL2J1aWx0aW5zL0J1aWx0aW5OYW1lcy5oCmluZGV4IGNlMDQ0NDc5ZjczMDJmMTliMWQ4
MTE2OGY5OWVjNDgzNWI0MDIyMGEuLjdlNTQzNDJlNzUyZjlmMmQ0ZTgzNWVkMDM0ZjQ2MDljZjM2
NWQzOWYgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9idWlsdGlucy9CdWlsdGlu
TmFtZXMuaAorKysgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvYnVpbHRpbnMvQnVpbHRpbk5hbWVz
LmgKQEAgLTY3LDggKzY3LDggQEAgY2xhc3MgQnVpbHRpbk5hbWVzIHsKICAgICBib29sIGlzUHJp
dmF0ZU5hbWUoU3ltYm9sSW1wbCYgdWlkKSBjb25zdDsKICAgICBib29sIGlzUHJpdmF0ZU5hbWUo
VW5pcXVlZFN0cmluZ0ltcGwmIHVpZCkgY29uc3Q7CiAgICAgYm9vbCBpc1ByaXZhdGVOYW1lKGNv
bnN0IElkZW50aWZpZXImKSBjb25zdDsKLSAgICBjb25zdCBJZGVudGlmaWVyKiBnZXRQcml2YXRl
TmFtZShjb25zdCBJZGVudGlmaWVyJikgY29uc3Q7Ci0gICAgY29uc3QgSWRlbnRpZmllciYgZ2V0
UHVibGljTmFtZShjb25zdCBJZGVudGlmaWVyJikgY29uc3Q7CisgICAgY29uc3QgSWRlbnRpZmll
ciogbG9va1VwUHJpdmF0ZU5hbWUoY29uc3QgSWRlbnRpZmllciYpIGNvbnN0OworICAgIGNvbnN0
IElkZW50aWZpZXImIGxvb2tVcFB1YmxpY05hbWUoY29uc3QgSWRlbnRpZmllciYpIGNvbnN0Owog
ICAgIAogICAgIEpTQ19GT1JFQUNIX0JVSUxUSU5fRlVOQ1RJT05fTkFNRShERUNMQVJFX0JVSUxU
SU5fSURFTlRJRklFUl9BQ0NFU1NPUikKICAgICBKU0NfQ09NTU9OX1BSSVZBVEVfSURFTlRJRklF
UlNfRUFDSF9QUk9QRVJUWV9OQU1FKERFQ0xBUkVfQlVJTFRJTl9JREVOVElGSUVSX0FDQ0VTU09S
KQpAQCAtMTEwLDcgKzExMCw3IEBAIGlubGluZSBib29sIEJ1aWx0aW5OYW1lczo6aXNQcml2YXRl
TmFtZShjb25zdCBJZGVudGlmaWVyJiBpZGVudCkgY29uc3QKICAgICByZXR1cm4gaXNQcml2YXRl
TmFtZSgqaWRlbnQuaW1wbCgpKTsKIH0KIAotaW5saW5lIGNvbnN0IElkZW50aWZpZXIqIEJ1aWx0
aW5OYW1lczo6Z2V0UHJpdmF0ZU5hbWUoY29uc3QgSWRlbnRpZmllciYgaWRlbnQpIGNvbnN0Citp
bmxpbmUgY29uc3QgSWRlbnRpZmllciogQnVpbHRpbk5hbWVzOjpsb29rVXBQcml2YXRlTmFtZShj
b25zdCBJZGVudGlmaWVyJiBpZGVudCkgY29uc3QKIHsKICAgICBhdXRvIGl0ZXIgPSBtX3B1Ymxp
Y1RvUHJpdmF0ZU1hcC5maW5kKGlkZW50LmltcGwoKSk7CiAgICAgaWYgKGl0ZXIgIT0gbV9wdWJs
aWNUb1ByaXZhdGVNYXAuZW5kKCkpCkBAIC0xMTgsNyArMTE4LDcgQEAgaW5saW5lIGNvbnN0IElk
ZW50aWZpZXIqIEJ1aWx0aW5OYW1lczo6Z2V0UHJpdmF0ZU5hbWUoY29uc3QgSWRlbnRpZmllciYg
aWRlbnQpIGMKICAgICByZXR1cm4gMDsKIH0KIAotaW5saW5lIGNvbnN0IElkZW50aWZpZXImIEJ1
aWx0aW5OYW1lczo6Z2V0UHVibGljTmFtZShjb25zdCBJZGVudGlmaWVyJiBpZGVudCkgY29uc3QK
K2lubGluZSBjb25zdCBJZGVudGlmaWVyJiBCdWlsdGluTmFtZXM6Omxvb2tVcFB1YmxpY05hbWUo
Y29uc3QgSWRlbnRpZmllciYgaWRlbnQpIGNvbnN0CiB7CiAgICAgYXV0byBpdGVyID0gbV9wcml2
YXRlVG9QdWJsaWNNYXAuZmluZChpZGVudC5pbXBsKCkpOwogICAgIGlmIChpdGVyICE9IG1fcHJp
dmF0ZVRvUHVibGljTWFwLmVuZCgpKQpkaWZmIC0tZ2l0IGEvU291cmNlL0phdmFTY3JpcHRDb3Jl
L2J1aWx0aW5zL01vZHVsZUxvYWRlck9iamVjdC5qcyBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9i
dWlsdGlucy9Nb2R1bGVMb2FkZXJPYmplY3QuanMKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXgg
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMC4uODgyOGJkYWRlMDFjYzM5
ZjlkMDcyYmM2OTViMTIzMmUwMTFmODgzMwotLS0gL2Rldi9udWxsCisrKyBiL1NvdXJjZS9KYXZh
U2NyaXB0Q29yZS9idWlsdGlucy9Nb2R1bGVMb2FkZXJPYmplY3QuanMKQEAgLTAsMCArMSw0Mjcg
QEAKKy8qCisgKiBDb3B5cmlnaHQgKEMpIDIwMTUgQXBwbGUgSW5jLiBBbGwgcmlnaHRzIHJlc2Vy
dmVkLgorICoKKyAqIFJlZGlzdHJpYnV0aW9uIGFuZCB1c2UgaW4gc291cmNlIGFuZCBiaW5hcnkg
Zm9ybXMsIHdpdGggb3Igd2l0aG91dAorICogbW9kaWZpY2F0aW9uLCBhcmUgcGVybWl0dGVkIHBy
b3ZpZGVkIHRoYXQgdGhlIGZvbGxvd2luZyBjb25kaXRpb25zCisgKiBhcmUgbWV0OgorICogMS4g
UmVkaXN0cmlidXRpb25zIG9mIHNvdXJjZSBjb2RlIG11c3QgcmV0YWluIHRoZSBhYm92ZSBjb3B5
cmlnaHQKKyAqICAgIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xs
b3dpbmcgZGlzY2xhaW1lci4KKyAqIDIuIFJlZGlzdHJpYnV0aW9ucyBpbiBiaW5hcnkgZm9ybSBt
dXN0IHJlcHJvZHVjZSB0aGUgYWJvdmUgY29weXJpZ2h0CisgKiAgICBub3RpY2UsIHRoaXMgbGlz
dCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIgaW4gdGhlCisgKiAg
ICBkb2N1bWVudGF0aW9uIGFuZC9vciBvdGhlciBtYXRlcmlhbHMgcHJvdmlkZWQgd2l0aCB0aGUg
ZGlzdHJpYnV0aW9uLgorICoKKyAqIFRISVMgU09GVFdBUkUgSVMgUFJPVklERUQgQlkgQVBQTEUg
SU5DLiBgYEFTIElTJycgQU5EIEFOWQorICogRVhQUkVTUyBPUiBJTVBMSUVEIFdBUlJBTlRJRVMs
IElOQ0xVRElORywgQlVUIE5PVCBMSU1JVEVEIFRPLCBUSEUKKyAqIElNUExJRUQgV0FSUkFOVElF
UyBPRiBNRVJDSEFOVEFCSUxJVFkgQU5EIEZJVE5FU1MgRk9SIEEgUEFSVElDVUxBUgorICogUFVS
UE9TRSBBUkUgRElTQ0xBSU1FRC4gIElOIE5PIEVWRU5UIFNIQUxMIEFQUExFIElOQy4gT1IKKyAq
IENPTlRSSUJVVE9SUyBCRSBMSUFCTEUgRk9SIEFOWSBESVJFQ1QsIElORElSRUNULCBJTkNJREVO
VEFMLCBTUEVDSUFMLAorICogRVhFTVBMQVJZLCBPUiBDT05TRVFVRU5USUFMIERBTUFHRVMgKElO
Q0xVRElORywgQlVUIE5PVCBMSU1JVEVEIFRPLAorICogUFJPQ1VSRU1FTlQgT0YgU1VCU1RJVFVU
RSBHT09EUyBPUiBTRVJWSUNFUzsgTE9TUyBPRiBVU0UsIERBVEEsIE9SCisgKiBQUk9GSVRTOyBP
UiBCVVNJTkVTUyBJTlRFUlJVUFRJT04pIEhPV0VWRVIgQ0FVU0VEIEFORCBPTiBBTlkgVEhFT1JZ
CisgKiBPRiBMSUFCSUxJVFksIFdIRVRIRVIgSU4gQ09OVFJBQ1QsIFNUUklDVCBMSUFCSUxJVFks
IE9SIFRPUlQKKyAqIChJTkNMVURJTkcgTkVHTElHRU5DRSBPUiBPVEhFUldJU0UpIEFSSVNJTkcg
SU4gQU5ZIFdBWSBPVVQgT0YgVEhFIFVTRQorICogT0YgVEhJUyBTT0ZUV0FSRSwgRVZFTiBJRiBB
RFZJU0VEIE9GIFRIRSBQT1NTSUJJTElUWSBPRiBTVUNIIERBTUFHRS4KKyAqLworCisvLyBodHRw
czovL3doYXR3Zy5naXRodWIuaW8vbG9hZGVyLyNsb2FkZXItb2JqZWN0CisvLyBNb2R1bGUgTG9h
ZGVyIGhhcyBzZXZlcmFsIGhvb2tzIHRoYXQgY2FuIGJlIGN1c3RvbWl6ZWQgYnkgdGhlIHBsYXRm
b3JtLgorLy8gRm9yIGV4YW1wbGUsIHRoZSBbW0ZldGNoXV0gaG9vayBjYW4gYmUgcHJvdmlkZWQg
YnkgdGhlIEphdmFTY3JpcHRDb3JlIHNoZWxsCisvLyBhcyBmZXRjaGluZyB0aGUgcGF5bG9hZCBm
cm9tIHRoZSBsb2NhbCBmaWxlIHN5c3RlbS4KKy8vIFdlIHN1bW1hcml6ZSB0aGUgaG9va3MuCisv
LworLy8gMS4gTG9hZGVyLnJlc29sdmUuCisvLyAgICAgaHR0cHM6Ly93aGF0d2cuZ2l0aHViLmlv
L2xvYWRlci8jYnJvd3Nlci1yZXNvbHZlCisvLyAgICAgVGFrZSB0aGUgbmFtZSBhbmQgcmVzb2x2
ZSBpdCB0byB0aGUgdW5pcXVlIGlkZW50aWZpZXIgZm9yIHRoZSByZXNvdXJjZSBsb2NhdGlvbi4K
Ky8vICAgICBGb3IgZXhhbXBsZSwgdGFrZSB0aGUgImpxdWVyeSIgYW5kIHJldHVybiB0aGUgVVJM
IGZvciB0aGUgcmVzb3VyY2UuCisvLworLy8gMi4gTG9hZGVyLmZldGNoCisvLyAgICAgaHR0cHM6
Ly93aGF0d2cuZ2l0aHViLmlvL2xvYWRlci8jYnJvd3Nlci1mZXRjaAorLy8gICAgIFRha2UgdGhl
IGtleSBhbmQgZmV0Y2ggdGhlIHJlc291cmNlIGFjdHVhbGx5LgorLy8gICAgIEZvciBleGFtcGxl
LCBKYXZhU2NyaXB0Q29yZSBzaGVsbCBjYW4gcHJvdmlkZSB0aGUgaG9vayBmZXRjaGluZyB0aGUg
cmVzb3VyY2UKKy8vICAgICBmcm9tIHRoZSBsb2NhbCBmaWxlIHN5c3RlbS4KKy8vCisvLyAzLiBM
b2FkZXIudHJhbnNsYXRlCisvLyAgICAgaHR0cHM6Ly93aGF0d2cuZ2l0aHViLmlvL2xvYWRlci8j
YnJvd3Nlci10cmFuc2xhdGUKKy8vICAgICBUYWtlIHRoZSBrZXkgYW5kIHRoZSBmZXRjaGVkIHNv
dXJjZSBjb2RlIGFuZCB0cmFuc2xhdGUgaXQgdG8gdGhlIEVTNiBzb3VyY2UgY29kZS4KKy8vICAg
ICBUeXBpY2FsbHkgaXQgaXMgdXNlZCBieSB0aGUgdHJhbnNwaWxlcnMuCisvLworLy8gNC4gTG9h
ZGVyLmluc3RhbnRpYXRlCisvLyAgICAgaHR0cHM6Ly93aGF0d2cuZ2l0aHViLmlvL2xvYWRlci8j
YnJvd3Nlci1pbnN0YW50aWF0ZQorLy8gICAgIFRha2UgdGhlIGtleSBhbmQgdGhlIHRyYW5zbGF0
ZWQgc291cmNlIGNvZGUsIGFuZCBpbnN0YW50aWF0ZSB0aGUgbW9kdWxlIHJlY29yZAorLy8gICAg
IGJ5IHBhcnNpbmcgdGhlIG1vZHVsZSBzb3VyY2UgY29kZS4KKy8vICAgICBJdCBoYXMgdGhlIGNo
YW5jZSB0byBwcm92aWRlIHRoZSBvcHRpb25hbCBtb2R1bGUgaW5zdGFuY2UgdGhhdCBpcyBkaWZm
ZXJlbnQgZnJvbQorLy8gICAgIHRoZSBvcmRpbmFyeSBvbmUuCisKK2Z1bmN0aW9uIHNldFN0YXRl
VG9NYXgoZW50cnksIG5ld1N0YXRlKQoreworICAgIC8vIGh0dHBzOi8vd2hhdHdnLmdpdGh1Yi5p
by9sb2FkZXIvI3NldC1zdGF0ZS10by1tYXgKKworICAgICJ1c2Ugc3RyaWN0IjsKKworICAgIGlm
IChlbnRyeS5zdGF0ZSA8IG5ld1N0YXRlKQorICAgICAgICBlbnRyeS5zdGF0ZSA9IG5ld1N0YXRl
OworfQorCitmdW5jdGlvbiBuZXdSZWdpc3RyeUVudHJ5KGtleSkKK3sKKyAgICAvLyBodHRwczov
L3doYXR3Zy5naXRodWIuaW8vbG9hZGVyLyNyZWdpc3RyeQorICAgIC8vCisgICAgLy8gRWFjaCBy
ZWdpc3RyeSBlbnRyeSBiZWNvbWVzIG9uZSBvZiB0aGUgNSBzdGF0ZXMuCisgICAgLy8gMS4gRmV0
Y2gKKyAgICAvLyAgICAgUmVhZHkgdG8gZmV0Y2ggKG9yIG5vdyBmZXRjaGluZykgdGhlIHJlc291
cmNlIG9mIHRoaXMgbW9kdWxlLgorICAgIC8vICAgICBUeXBpY2FsbHksIHdlIGZldGNoIHRoZSBz
b3VyY2UgY29kZSBvdmVyIHRoZSBuZXR3b3JrIG9yIGZyb20gdGhlIGZpbGUgc3lzdGVtLgorICAg
IC8vICAgICBhLiBJZiB0aGUgc3RhdHVzIGlzIEZldGNoIGFuZCB0aGVyZSBpcyBubyBlbnRyeS5m
ZXRjaCBwcm9taXNlLCB0aGUgZW50cnkgaXMgcmVhZHkgdG8gZmV0Y2guCisgICAgLy8gICAgIGIu
IElmIHRoZSBzdGF0dXMgaXMgRmV0Y2ggYW5kIHRoZXJlIGlzIHRoZSBlbnRyeS5mZXRjaCBwcm9t
aXNlLCB0aGUgZW50cnkgaXMganVzdCBmZXRjaGluZyB0aGUgcmVzb3VyY2UuCisgICAgLy8KKyAg
ICAvLyAyLiBUcmFuc2xhdGUKKyAgICAvLyAgICAgUmVhZHkgdG8gdHJhbnNsYXRlIChvciBub3cg
dHJhbnNsYXRpbmcpIHRoZSByYXcgZmV0Y2hlZCByZXNvdXJjZSB0byB0aGUgRUNNQVNjcmlwdCBz
b3VyY2UgY29kZS4KKyAgICAvLyAgICAgV2UgY2FuIGluc2VydCB0aGUgaG9vayB0aGF0IHRyYW5z
bGF0ZXMgdGhlIHJlc291cmNlcyBlLmcuIHRyYW5zcGlsZXJzLgorICAgIC8vICAgICBhLiBJZiB0
aGUgc3RhdHVzIGlzIFRyYW5zbGF0ZSBhbmQgdGhlcmUgaXMgbm8gZW50cnkudHJhbnNsYXRlIHBy
b21pc2UsIHRoZSBlbnRyeSBpcyByZWFkeSB0byB0cmFuc2xhdGUuCisgICAgLy8gICAgIGIuIElm
IHRoZSBzdGF0dXMgaXMgVHJhbnNsYXRlIGFuZCB0aGVyZSBpcyB0aGUgZW50cnkudHJhbnNsYXRl
IHByb21pc2UsIHRoZSBlbnRyeSBpcyBqdXN0IHRyYW5zbGF0aW5nCisgICAgLy8gICAgICAgIHRo
ZSBwYXlsb2FkIHRvIHRoZSBzb3VyY2UgY29kZS4KKyAgICAvLworICAgIC8vIDMuIEluc3RhbnRp
YXRlIChBbmFseXplTW9kdWxlKQorICAgIC8vICAgICBSZWFkeSB0byBpbnN0YW50aWF0ZSAob3Ig
bm93IGluc3RhbnRpYXRpbmcpIHRoZSBtb2R1bGUgcmVjb3JkIGZyb20gdGhlIGZldGNoZWQgKGFu
ZCB0cmFuc2xhdGVkKQorICAgIC8vICAgICBzb3VyY2UgY29kZS4KKyAgICAvLyAgICAgVHlwaWNh
bGx5LCB3ZSBwYXJzZSB0aGUgbW9kdWxlIGNvZGUsIGV4dHJhY3QgdGhlIGRlcGVuZGVuY2llcyBh
bmQgYmluZGluZyBpbmZvcm1hdGlvbi4KKyAgICAvLyAgICAgYS4gSWYgdGhlIHN0YXR1cyBpcyBJ
bnN0YW50aWF0ZSBhbmQgdGhlcmUgaXMgbm8gZW50cnkuaW5zdGFudGlhdGUgcHJvbWlzZSwgdGhl
IGVudHJ5IGlzIHJlYWR5IHRvIGluc3RhbnRpYXRlLgorICAgIC8vICAgICBiLiBJZiB0aGUgc3Rh
dHVzIGlzIEluc3RhbnRpYXRlIGFuZCB0aGVyZSBpcyB0aGUgZW50cnkudHJhbnNsYXRlIHByb21p
c2UsIHRoZSBlbnRyeSBpcyBqdXN0IGluc3RhbnRpYXRpbmcKKyAgICAvLyAgICAgICAgdGhlIG1v
ZHVsZSByZWNvcmQuCisgICAgLy8KKyAgICAvLyA0LiBSZXNvbHZlRGVwZW5kZW5jaWVzIChub3Qg
aW4gdGhlIGRyYWZ0KSBodHRwczovL2dpdGh1Yi5jb20vd2hhdHdnL2xvYWRlci9pc3N1ZXMvNjgK
KyAgICAvLyAgICAgUmVhZHkgdG8gcmVxdWVzdCB0aGUgZGVwZW5kZW50IG1vZHVsZXMgKG9yIG5v
dyByZXF1ZXN0aW5nICYgcmVzb2x2aW5nKS4KKyAgICAvLyAgICAgV2l0aG91dCB0aGlzIHN0YXRl
LCB0aGUgY3VycmVudCBkcmFmdCBjYXVzZXMgaW5maW5pdGUgcmVjdXJzaW9uIHdoZW4gdGhlcmUg
aXMgY2lyY3VsYXIgZGVwZW5kZW5jeS4KKyAgICAvLyAgICAgYS4gSWYgdGhlIHN0YXR1cyBpcyBS
ZXNvbHZlRGVwZW5kZW5jaWVzIGFuZCB0aGVyZSBpcyBubyBlbnRyeS5jb2xsZWN0IHByb21pc2Us
IHRoZSBlbnRyeSBpcyByZWFkeSB0byBjb2xsZWN0LgorICAgIC8vICAgICBiLiBJZiB0aGUgc3Rh
dHVzIGlzIFJlc29sdmVEZXBlbmRlbmNpZXMgYW5kIHRoZXJlIGlzIHRoZSBlbnRyeS5jb2xsZWN0
IHByb21pc2UsIHRoZSBlbnRyeSBpcyBqdXN0IGNvbGxlY3RpbmcKKyAgICAvLyAgICAgICAgdGhl
IGRlcGVuZGVuY2llcy4KKyAgICAvLworICAgIC8vIDUuIExpbmsKKyAgICAvLyAgICAgUmVhZHkg
dG8gbGluayB0aGUgbW9kdWxlIHdpdGggdGhlIG90aGVyIG1vZHVsZXMuCisgICAgLy8gICAgIExp
bmtpbmcgbWVhbnMgdGhhdCB0aGUgbW9kdWxlIGltcG9ydHMgYW5kIGV4cG9ydHMgdGhlIGJpbmRp
bmdzIGZyb20vdG8gdGhlIG90aGVyIG1vZHVsZXMuCisgICAgLy8KKyAgICAvLyA2LiBSZWFkeQor
ICAgIC8vICAgICBUaGUgbW9kdWxlIGlzIGxpbmtlZCwgc28gdGhlIG1vZHVsZSBpcyByZWFkeSB0
byBiZSBleGVjdXRlZC4KKyAgICAvLworICAgIC8vIEVhY2ggcmVnaXN0cnkgZW50cnkgaGFzIHRo
ZSA0IHByb21pc2VzOyAiZmV0Y2giLCAidHJhbnNsYXRlIiwgImluc3RhbnRpYXRlIiBhbmQgImNv
bGxlY3QiLgorICAgIC8vIFRoZXkgYXJlIGFzc2lnbmVkIHdoZW4gc3RhcnRpbmcgdGhlIGVhY2gg
cGhhc2UuIEFuZCB0aGV5IGFyZSBmdWxmaWxsZWQgd2hlbiB0aGUgZWFjaCBwaGFzZSBpcyBjb21w
bGV0ZWQuCisgICAgLy8KKyAgICAvLyBJbiB0aGUgY3VycmVudCBtb2R1bGUgZHJhZnQsIGxpbmtp
bmcgd2lsbCBiZSBwZXJmb3JtZWQgYWZ0ZXIgdGhlIHdob2xlIG1vZHVsZXMgYXJlIGluc3RhbnRp
YXRlZCBhbmQgY29sbGVjdGVkLgorICAgIC8vIEFuZCBleGVjdXRpb24gaXMgYWxzbyBkb25lIGFm
dGVyIHRoZSBhbGwgbW9kdWxlcyBhcmUgbGlua2VkLgorICAgIC8vCisgICAgLy8gVE9ETzogV2Ug
bmVlZCB0byBleHBsb2l0IHRoZSB3YXkgdG8gZXhlY3V0ZSB0aGUgbW9kdWxlIHdoaWxlIGZldGNo
aW5nIG5vbi1yZWxhdGVkIG1vZHVsZXMuCisgICAgLy8gT25lIHNvbHV0aW9uOyBpbnRyb2R1Y2lu
ZyB0aGUgcmVhZHkgcHJvbWlzZSBjaGFpbiB0byBleGVjdXRlIHRoZSBtb2R1bGVzIGNvbmN1cnJl
bnRseSB3aGlsZSBrZWVwaW5nCisgICAgLy8gdGhlIGV4ZWN1dGlvbiBvcmRlci4KKworICAgICJ1
c2Ugc3RyaWN0IjsKKworICAgIHJldHVybiB7CisgICAgICAgIGtleToga2V5LAorICAgICAgICBz
dGF0ZTogdGhpcy5GZXRjaCwKKyAgICAgICAgbWV0YWRhdGE6IHVuZGVmaW5lZCwKKyAgICAgICAg
ZmV0Y2g6IHVuZGVmaW5lZCwKKyAgICAgICAgdHJhbnNsYXRlOiB1bmRlZmluZWQsCisgICAgICAg
IGluc3RhbnRpYXRlOiB1bmRlZmluZWQsCisgICAgICAgIGNvbGxlY3Q6IHVuZGVmaW5lZCwKKyAg
ICAgICAgZGVwZW5kZW5jaWVzOiBbXSwgLy8gVG8ga2VlcCB0aGUgbW9kdWxlIG9yZGVyLCB3ZSBz
dG9yZSB0aGUgbW9kdWxlIGtleXMgaW4gdGhlIGFycmF5LgorICAgICAgICBkZXBlbmRlbmNpZXNN
YXA6IHVuZGVmaW5lZCwKKyAgICAgICAgbW9kdWxlOiB1bmRlZmluZWQsIC8vIEpTTW9kdWxlUmVj
b3JkCisgICAgICAgIGVycm9yOiB1bmRlZmluZWQsCisgICAgfTsKK30KKworZnVuY3Rpb24gZW5z
dXJlUmVnaXN0ZXJlZChrZXkpCit7CisgICAgLy8gaHR0cHM6Ly93aGF0d2cuZ2l0aHViLmlvL2xv
YWRlci8jZW5zdXJlLXJlZ2lzdGVyZWQKKworICAgICJ1c2Ugc3RyaWN0IjsKKworICAgIHZhciBl
bnRyeSA9IHRoaXMucmVnaXN0cnkuQGdldChrZXkpOworICAgIGlmIChlbnRyeSkKKyAgICAgICAg
cmV0dXJuIGVudHJ5OworCisgICAgZW50cnkgPSB0aGlzLm5ld1JlZ2lzdHJ5RW50cnkoa2V5KTsK
KyAgICB0aGlzLnJlZ2lzdHJ5LkBzZXQoa2V5LCBlbnRyeSk7CisKKyAgICByZXR1cm4gZW50cnk7
Cit9CisKK2Z1bmN0aW9uIGZvcmNlRnVsZmlsbFByb21pc2UocHJvbWlzZSwgdmFsdWUpCit7Cisg
ICAgInVzZSBzdHJpY3QiOworCisgICAgaWYgKHByb21pc2UuQHByb21pc2VTdGF0ZSA9PT0gQHBy
b21pc2VQZW5kaW5nKQorICAgICAgICBAZnVsZmlsbFByb21pc2UocHJvbWlzZSwgdmFsdWUpOwor
fQorCitmdW5jdGlvbiBmdWxmaWxsRmV0Y2goZW50cnksIHBheWxvYWQpCit7CisgICAgLy8gaHR0
cHM6Ly93aGF0d2cuZ2l0aHViLmlvL2xvYWRlci8jZnVsZmlsbC1mZXRjaAorCisgICAgInVzZSBz
dHJpY3QiOworCisgICAgaWYgKCFlbnRyeS5mZXRjaCkKKyAgICAgICAgZW50cnkuZmV0Y2ggPSBA
bmV3UHJvbWlzZUNhcGFiaWxpdHkoQEludGVybmFsUHJvbWlzZSkuQHByb21pc2U7CisgICAgdGhp
cy5mb3JjZUZ1bGZpbGxQcm9taXNlKGVudHJ5LmZldGNoLCBwYXlsb2FkKTsKKyAgICB0aGlzLnNl
dFN0YXRlVG9NYXgoZW50cnksIHRoaXMuVHJhbnNsYXRlKTsKK30KKworZnVuY3Rpb24gZnVsZmls
bFRyYW5zbGF0ZShlbnRyeSwgc291cmNlKQoreworICAgIC8vIGh0dHBzOi8vd2hhdHdnLmdpdGh1
Yi5pby9sb2FkZXIvI2Z1bGZpbGwtdHJhbnNsYXRlCisKKyAgICAidXNlIHN0cmljdCI7CisKKyAg
ICBpZiAoIWVudHJ5LnRyYW5zbGF0ZSkKKyAgICAgICAgZW50cnkudHJhbnNsYXRlID0gQG5ld1By
b21pc2VDYXBhYmlsaXR5KEBJbnRlcm5hbFByb21pc2UpLkBwcm9taXNlOworICAgIHRoaXMuZm9y
Y2VGdWxmaWxsUHJvbWlzZShlbnRyeS50cmFuc2xhdGUsIHNvdXJjZSk7CisgICAgdGhpcy5zZXRT
dGF0ZVRvTWF4KGVudHJ5LCB0aGlzLkluc3RhbnRpYXRlKTsKK30KKworZnVuY3Rpb24gZnVsZmls
bEluc3RhbnRpYXRlKGVudHJ5LCBvcHRpb25hbEluc3RhbmNlLCBzb3VyY2UpCit7CisgICAgLy8g
aHR0cHM6Ly93aGF0d2cuZ2l0aHViLmlvL2xvYWRlci8jZnVsZmlsbC1pbnN0YW50aWF0ZQorCisg
ICAgInVzZSBzdHJpY3QiOworCisgICAgaWYgKCFlbnRyeS5pbnN0YW50aWF0ZSkKKyAgICAgICAg
ZW50cnkuaW5zdGFudGlhdGUgPSBAbmV3UHJvbWlzZUNhcGFiaWxpdHkoQEludGVybmFsUHJvbWlz
ZSkuQHByb21pc2U7CisgICAgdGhpcy5jb21taXRJbnN0YW50aWF0ZWQoZW50cnksIG9wdGlvbmFs
SW5zdGFuY2UsIHNvdXJjZSk7CisKKyAgICAvLyBGSVhNRTogVGhlIGRyYWZ0IGZ1bGZpbGxzIHRo
ZSBwcm9taXNlIGluIHRoZSBDb21taXRJbnN0YW50aWF0ZWQgb3BlcmF0aW9uLgorICAgIC8vIEJ1
dCBpdCBDb21taXRJbnN0YW50aWF0ZWQgaXMgYWxzbyB1c2VkIGluIHRoZSByZXF1ZXN0SW5zdGFu
dGlhdGUgYW5kCisgICAgLy8gd2Ugc2hvdWxkIG5vdCAiZm9yY2UgZnVsZmlsbCIgdGhlcmUuCisg
ICAgLy8gU28gd2Ugc2VwYXJhdGUgImZvcmNlIGZ1bGZpbGwiIG9wZXJhdGlvbiBmcm9tIHRoZSBD
b21taXRJbnN0YW50aWF0ZWQgb3BlcmF0aW9uLgorICAgIC8vIGh0dHBzOi8vZ2l0aHViLmNvbS93
aGF0d2cvbG9hZGVyL3B1bGwvNjcKKyAgICB0aGlzLmZvcmNlRnVsZmlsbFByb21pc2UoZW50cnku
aW5zdGFudGlhdGUsIGVudHJ5KTsKK30KKworZnVuY3Rpb24gY29tbWl0SW5zdGFudGlhdGVkKGVu
dHJ5LCBvcHRpb25hbEluc3RhbmNlLCBzb3VyY2UpCit7CisgICAgLy8gaHR0cHM6Ly93aGF0d2cu
Z2l0aHViLmlvL2xvYWRlci8jY29tbWl0LWluc3RhbnRpYXRlZAorCisgICAgInVzZSBzdHJpY3Qi
OworCisgICAgdmFyIG1vZHVsZVJlY29yZCA9IHRoaXMuaW5zdGFudGlhdGlvbihvcHRpb25hbElu
c3RhbmNlLCBzb3VyY2UpOworCisgICAgLy8gRklYTUU6IERlc2NyaWJlZCBpbiB0aGUgZHJhZnQs
CisgICAgLy8gICA0LiBGdWxmaWxsIGVudHJ5LltbSW5zdGFudGlhdGVdXSB3aXRoIGluc3RhbmNl
LgorICAgIC8vIEJ1dCwgaW5zdGFudGlhdGUgcHJvbWlzZSBzaG91bGQgYmUgZnVsZmlsbGVkIHdp
dGggdGhlIGVudHJ5LgorICAgIC8vIFdlIHJlbW92ZSB0aGlzIHN0YXRlbWVudCBiZWNhdXNlIGlu
c3RhbnRpYXRlIHByb21pc2Ugd2lsbCBiZQorICAgIC8vIGZ1bGZpbGxlZCB3aXRob3V0IHRoaXMg
ImZvcmNlIGZ1bGZpbGwiIG9wZXJhdGlvbi4KKyAgICAvLyBodHRwczovL2dpdGh1Yi5jb20vd2hh
dHdnL2xvYWRlci9wdWxsLzY3CisKKyAgICB2YXIgZGVwZW5kZW5jaWVzID0gW107CisgICAgdmFy
IGRlcGVuZGVuY2llc01hcCA9IG5ldyBATWFwKCk7CisgICAgbW9kdWxlUmVjb3JkLnJlZ2lzdHJ5
RW50cnkgPSBlbnRyeTsKKyAgICB2YXIgcmVxdWVzdGVkTW9kdWxlcyA9IHRoaXMucmVxdWVzdGVk
TW9kdWxlcyhtb2R1bGVSZWNvcmQpOworICAgIGZvciAodmFyIGkgPSAwLCBsZW5ndGggPSByZXF1
ZXN0ZWRNb2R1bGVzLmxlbmd0aDsgaSA8IGxlbmd0aDsgKytpKSB7CisgICAgICAgIHZhciBkZXBL
ZXkgPSByZXF1ZXN0ZWRNb2R1bGVzW2ldOworICAgICAgICB2YXIgcGFpciA9IHsKKyAgICAgICAg
ICAgIGtleTogZGVwS2V5LAorICAgICAgICAgICAgdmFsdWU6IHVuZGVmaW5lZAorICAgICAgICB9
OworICAgICAgICBAcHV0QnlWYWxEaXJlY3QoZGVwZW5kZW5jaWVzLCBpLCBwYWlyKTsKKyAgICAg
ICAgZGVwZW5kZW5jaWVzTWFwLkBzZXQoZGVwS2V5LCBwYWlyKTsKKyAgICB9CisgICAgZW50cnku
ZGVwZW5kZW5jaWVzID0gZGVwZW5kZW5jaWVzOworICAgIGVudHJ5LmRlcGVuZGVuY2llc01hcCA9
IGRlcGVuZGVuY2llc01hcDsKKyAgICBlbnRyeS5tb2R1bGUgPSBtb2R1bGVSZWNvcmQ7CisgICAg
dGhpcy5zZXRTdGF0ZVRvTWF4KGVudHJ5LCB0aGlzLlJlc29sdmVEZXBlbmRlbmNpZXMpOworfQor
CitmdW5jdGlvbiBpbnN0YW50aWF0aW9uKHJlc3VsdCwgc291cmNlKQoreworICAgIC8vIGh0dHBz
Oi8vd2hhdHdnLmdpdGh1Yi5pby9sb2FkZXIvI2luc3RhbnRpYXRpb24KKyAgICAvLyBGSVhNRTog
Q3VycmVudCBpbXBsZW1lbnRhdGlvbiBkb2VzIG5vdCBzdXBwb3J0IG9wdGlvbmFsSW5zdGFuY2Uu
CisgICAgLy8gaHR0cHM6Ly9idWdzLndlYmtpdC5vcmcvc2hvd19idWcuY2dpP2lkPTE0ODE3MQor
CisgICAgInVzZSBzdHJpY3QiOworCisgICAgcmV0dXJuIHRoaXMucGFyc2VNb2R1bGUoc291cmNl
KTsKK30KKworLy8gTG9hZGVyLgorCitmdW5jdGlvbiByZXF1ZXN0RmV0Y2goa2V5KQoreworICAg
IC8vIGh0dHBzOi8vd2hhdHdnLmdpdGh1Yi5pby9sb2FkZXIvI3JlcXVlc3QtZmV0Y2gKKworICAg
ICJ1c2Ugc3RyaWN0IjsKKworICAgIHZhciBlbnRyeSA9IHRoaXMuZW5zdXJlUmVnaXN0ZXJlZChr
ZXkpOworICAgIGlmIChlbnRyeS5zdGF0ZSA+IHRoaXMuTGluaykgeworICAgICAgICB2YXIgZGVm
ZXJyZWQgPSBAbmV3UHJvbWlzZUNhcGFiaWxpdHkoQEludGVybmFsUHJvbWlzZSk7CisgICAgICAg
IGRlZmVycmVkLkByZWplY3QuQGNhbGwodW5kZWZpbmVkLCBuZXcgQFR5cGVFcnJvcigiUmVxdWVz
dGVkIG1vZHVsZSBpcyBhbHJlYWR5IHJlYWR5IHRvIGJlIGV4ZWN1dGVkLiIpKTsKKyAgICAgICAg
cmV0dXJuIGRlZmVycmVkLkBwcm9taXNlOworICAgIH0KKworICAgIGlmIChlbnRyeS5mZXRjaCkK
KyAgICAgICAgcmV0dXJuIGVudHJ5LmZldGNoOworCisgICAgdmFyIGxvYWRlciA9IHRoaXM7Cisg
ICAgdmFyIGZldGNoUHJvbWlzZSA9IHRoaXMuZmV0Y2goa2V5KS50aGVuKGZ1bmN0aW9uIChwYXls
b2FkKSB7CisgICAgICAgIGxvYWRlci5zZXRTdGF0ZVRvTWF4KGVudHJ5LCBsb2FkZXIuVHJhbnNs
YXRlKTsKKyAgICAgICAgcmV0dXJuIHBheWxvYWQ7CisgICAgfSk7CisgICAgZW50cnkuZmV0Y2gg
PSBmZXRjaFByb21pc2U7CisgICAgcmV0dXJuIGZldGNoUHJvbWlzZTsKK30KKworZnVuY3Rpb24g
cmVxdWVzdFRyYW5zbGF0ZShrZXkpCit7CisgICAgLy8gaHR0cHM6Ly93aGF0d2cuZ2l0aHViLmlv
L2xvYWRlci8jcmVxdWVzdC10cmFuc2xhdGUKKworICAgICJ1c2Ugc3RyaWN0IjsKKworICAgIHZh
ciBlbnRyeSA9IHRoaXMuZW5zdXJlUmVnaXN0ZXJlZChrZXkpOworICAgIGlmIChlbnRyeS5zdGF0
ZSA+IHRoaXMuTGluaykgeworICAgICAgICB2YXIgZGVmZXJyZWQgPSBAbmV3UHJvbWlzZUNhcGFi
aWxpdHkoQEludGVybmFsUHJvbWlzZSk7CisgICAgICAgIGRlZmVycmVkLkByZWplY3QuQGNhbGwo
dW5kZWZpbmVkLCBuZXcgQFR5cGVFcnJvcigiUmVxdWVzdGVkIG1vZHVsZSBpcyBhbHJlYWR5IHJl
YWR5IHRvIGJlIGV4ZWN1dGVkLiIpKTsKKyAgICAgICAgcmV0dXJuIGRlZmVycmVkLkBwcm9taXNl
OworICAgIH0KKworICAgIGlmIChlbnRyeS50cmFuc2xhdGUpCisgICAgICAgIHJldHVybiBlbnRy
eS50cmFuc2xhdGU7CisKKyAgICB2YXIgbG9hZGVyID0gdGhpczsKKyAgICB2YXIgdHJhbnNsYXRl
UHJvbWlzZSA9IHRoaXMucmVxdWVzdEZldGNoKGtleSkudGhlbihmdW5jdGlvbiAocGF5bG9hZCkg
eworICAgICAgICByZXR1cm4gbG9hZGVyLnRyYW5zbGF0ZShrZXksIHBheWxvYWQpLnRoZW4oZnVu
Y3Rpb24gKHNvdXJjZSkgeworICAgICAgICAgICAgbG9hZGVyLnNldFN0YXRlVG9NYXgoZW50cnks
IGxvYWRlci5JbnN0YW50aWF0ZSk7CisgICAgICAgICAgICByZXR1cm4gc291cmNlOworICAgICAg
ICB9KTsKKyAgICB9KTsKKyAgICBlbnRyeS50cmFuc2xhdGUgPSB0cmFuc2xhdGVQcm9taXNlOwor
ICAgIHJldHVybiB0cmFuc2xhdGVQcm9taXNlOworfQorCitmdW5jdGlvbiByZXF1ZXN0SW5zdGFu
dGlhdGUoa2V5KQoreworICAgIC8vIGh0dHBzOi8vd2hhdHdnLmdpdGh1Yi5pby9sb2FkZXIvI3Jl
cXVlc3QtaW5zdGFudGlhdGUKKworICAgICJ1c2Ugc3RyaWN0IjsKKworICAgIHZhciBlbnRyeSA9
IHRoaXMuZW5zdXJlUmVnaXN0ZXJlZChrZXkpOworICAgIGlmIChlbnRyeS5zdGF0ZSA+IHRoaXMu
TGluaykgeworICAgICAgICB2YXIgZGVmZXJyZWQgPSBAbmV3UHJvbWlzZUNhcGFiaWxpdHkoQElu
dGVybmFsUHJvbWlzZSk7CisgICAgICAgIGRlZmVycmVkLkByZWplY3QuQGNhbGwodW5kZWZpbmVk
LCBuZXcgQFR5cGVFcnJvcigiUmVxdWVzdGVkIG1vZHVsZSBpcyBhbHJlYWR5IHJlYWR5IHRvIGJl
IGV4ZWN1dGVkLiIpKTsKKyAgICAgICAgcmV0dXJuIGRlZmVycmVkLkBwcm9taXNlOworICAgIH0K
KworICAgIGlmIChlbnRyeS5pbnN0YW50aWF0ZSkKKyAgICAgICAgcmV0dXJuIGVudHJ5Lmluc3Rh
bnRpYXRlOworCisgICAgdmFyIGxvYWRlciA9IHRoaXM7CisgICAgdmFyIGluc3RhbnRpYXRlUHJv
bWlzZSA9IHRoaXMucmVxdWVzdFRyYW5zbGF0ZShrZXkpLnRoZW4oZnVuY3Rpb24gKHNvdXJjZSkg
eworICAgICAgICByZXR1cm4gbG9hZGVyLmluc3RhbnRpYXRlKGtleSwgc291cmNlKS50aGVuKGZ1
bmN0aW9uIChvcHRpb25hbEluc3RhbmNlKSB7CisgICAgICAgICAgICBsb2FkZXIuY29tbWl0SW5z
dGFudGlhdGVkKGVudHJ5LCBvcHRpb25hbEluc3RhbmNlLCBzb3VyY2UpOworICAgICAgICAgICAg
cmV0dXJuIGVudHJ5OworICAgICAgICB9KTsKKyAgICB9KTsKKyAgICBlbnRyeS5pbnN0YW50aWF0
ZSA9IGluc3RhbnRpYXRlUHJvbWlzZTsKKyAgICByZXR1cm4gaW5zdGFudGlhdGVQcm9taXNlOwor
fQorCitmdW5jdGlvbiByZXF1ZXN0UmVzb2x2ZURlcGVuZGVuY2llcyhrZXkpCit7CisgICAgLy8g
RklYTUU6IEluIHRoZSBzcGVjLCBhZnRlciByZXF1ZXN0aW5nIGluc3RhbnRpYXRpb24sIHdlIHdp
bGwgcmVzb2x2ZQorICAgIC8vIHRoZSBkZXBlbmRlbmNpZXMgd2l0aG91dCBhbnkgc3RhdHVzIGNo
YW5nZS4gQXMgYSByZXN1bHQsIHdoZW4gdGhlcmUKKyAgICAvLyBpcyBjaXJjdWxhciBkZXBlbmRl
bmNpZXMsIGluc3RhbnRpYXRpb24gaXMgZG9uZSBvbmx5IG9uY2UsIGJ1dAorICAgIC8vIHJlcGVh
dGVkbHkgcmVzb2x2aW5nIHRoZSBkZXBlbmRlbmNpZXMuIFRoaXMgbWVhbnMgdGhhdCBpbmZpbml0
ZQorICAgIC8vIHJlY3Vyc2lvbiBvY2N1ciB3aGVuIHRoZSBnaXZlbiBtb2R1bGVzIGhhdmUgY2ly
Y3VsYXIgZGVwZW5kZW5jeS4gVG8KKyAgICAvLyBhdm9pZCB0aGlzIHNpdHVhdGlvbiwgd2UgaW50
cm9kdWNlIG5ldyBzdGF0ZSwgIlJlc29sdmVEZXBlbmRlbmNpZXMiLiBUaGlzIG1lYW5zCisgICAg
Ly8gIk5vdyB0aGUgbW9kdWxlIGlzIGluc3RhbnRpYXRlZCwgc28gcmVhZHkgdG8gY29sbGVjdCB0
aGUgZGVwZW5kZW5jaWVzCisgICAgLy8gb3Igbm93IHJlc29sdmluZyB0aGVtIi4KKyAgICAvLyBo
dHRwczovL2dpdGh1Yi5jb20vd2hhdHdnL2xvYWRlci9pc3N1ZXMvNjgKKworICAgICJ1c2Ugc3Ry
aWN0IjsKKworICAgIHZhciBlbnRyeSA9IHRoaXMuZW5zdXJlUmVnaXN0ZXJlZChrZXkpOworICAg
IGlmIChlbnRyeS5zdGF0ZSA+IHRoaXMuTGluaykgeworICAgICAgICB2YXIgZGVmZXJyZWQgPSBA
bmV3UHJvbWlzZUNhcGFiaWxpdHkoQEludGVybmFsUHJvbWlzZSk7CisgICAgICAgIGRlZmVycmVk
LkByZWplY3QuQGNhbGwodW5kZWZpbmVkLCBuZXcgQFR5cGVFcnJvcigiUmVxdWVzdGVkIG1vZHVs
ZSBpcyBhbHJlYWR5IHJlYWR5IHRvIGJlIGV4ZWN1dGVkLiIpKTsKKyAgICAgICAgcmV0dXJuIGRl
ZmVycmVkLkBwcm9taXNlOworICAgIH0KKworICAgIGlmIChlbnRyeS5jb2xsZWN0KQorICAgICAg
ICByZXR1cm4gZW50cnkuY29sbGVjdDsKKworICAgIHZhciBsb2FkZXIgPSB0aGlzOworICAgIHZh
ciBjb2xsZWN0UHJvbWlzZSA9IHRoaXMucmVxdWVzdEluc3RhbnRpYXRlKGtleSkudGhlbihmdW5j
dGlvbiAoZW50cnkpIHsKKyAgICAgICAgdmFyIGRlcExvYWRzID0gW107CisgICAgICAgIGZvciAo
dmFyIGkgPSAwLCBsZW5ndGggPSBlbnRyeS5kZXBlbmRlbmNpZXMubGVuZ3RoOyBpIDwgbGVuZ3Ro
OyArK2kpIHsKKyAgICAgICAgICAgIHZhciBwYWlyID0gZW50cnkuZGVwZW5kZW5jaWVzW2ldOwor
ICAgICAgICAgICAgdmFyIHByb21pc2UgPSBsb2FkZXIucmVzb2x2ZShwYWlyLmtleSwga2V5KS50
aGVuKGZ1bmN0aW9uIChkZXBLZXkpIHsKKyAgICAgICAgICAgICAgICB2YXIgZGVwRW50cnkgPSBs
b2FkZXIuZW5zdXJlUmVnaXN0ZXJlZChkZXBLZXkpOworCisgICAgICAgICAgICAgICAgLy8gUmVj
dXJzaXZlIGNvbGxlY3RpbmcuIFRoaXMgZW50cnkgaXMgYmVpbmcgY29sbGVjdGVkIG9yIGFscmVh
ZHkgY29sbGVjdGVkLgorICAgICAgICAgICAgICAgIC8vIFN0b3AgdHJhY2luZyB0aGUgY2lyY3Vs
YXIgZGVwZW5kZW5jaWVzLgorICAgICAgICAgICAgICAgIGlmIChkZXBFbnRyeS5jb2xsZWN0KSB7
CisgICAgICAgICAgICAgICAgICAgIHBhaXIudmFsdWUgPSBkZXBFbnRyeS5tb2R1bGU7CisgICAg
ICAgICAgICAgICAgICAgIHJldHVybiBkZXBFbnRyeTsKKyAgICAgICAgICAgICAgICB9CisKKyAg
ICAgICAgICAgICAgICByZXR1cm4gbG9hZGVyLnJlcXVlc3RSZXNvbHZlRGVwZW5kZW5jaWVzKGRl
cEtleSkudGhlbihmdW5jdGlvbiAoZW50cnkpIHsKKyAgICAgICAgICAgICAgICAgICAgLy8gRklY
TUU6IFRoZSByZXN1bHQgcHJvbWlzZSBvZiB0aGUgcmVxdWVzdEluc3RhbnRpYXRlQWxsIHNob3Vs
ZCBiZSBmdWxmaWxsZWQgd2l0aAorICAgICAgICAgICAgICAgICAgICAvLyB0aGUgcmVnaXN0cnkg
ZW50cnkuCisgICAgICAgICAgICAgICAgICAgIC8vIGh0dHBzOi8vZ2l0aHViLmNvbS93aGF0d2cv
bG9hZGVyL3B1bGwvNjYKKyAgICAgICAgICAgICAgICAgICAgcGFpci52YWx1ZSA9IGVudHJ5Lm1v
ZHVsZTsKKyAgICAgICAgICAgICAgICAgICAgcmV0dXJuIGVudHJ5OworICAgICAgICAgICAgICAg
IH0pOworICAgICAgICAgICAgfSk7CisgICAgICAgICAgICBAcHV0QnlWYWxEaXJlY3QoZGVwTG9h
ZHMsIGksIHByb21pc2UpOworICAgICAgICB9CisKKyAgICAgICAgcmV0dXJuIEBJbnRlcm5hbFBy
b21pc2UuaW50ZXJuYWxBbGwoZGVwTG9hZHMpLnRoZW4oZnVuY3Rpb24gKG1vZHVsZXMpIHsKKyAg
ICAgICAgICAgIGxvYWRlci5zZXRTdGF0ZVRvTWF4KGVudHJ5LCBsb2FkZXIuTGluayk7CisgICAg
ICAgICAgICByZXR1cm4gZW50cnk7CisgICAgICAgIH0pOworICAgIH0pOworCisgICAgZW50cnku
Y29sbGVjdCA9IGNvbGxlY3RQcm9taXNlOworICAgIHJldHVybiBjb2xsZWN0UHJvbWlzZTsKK30K
KworZnVuY3Rpb24gcmVxdWVzdEluc3RhbnRpYXRlQWxsKGtleSkKK3sKKyAgICAvLyBodHRwczov
L3doYXR3Zy5naXRodWIuaW8vbG9hZGVyLyNyZXF1ZXN0LWluc3RhbnRpYXRlLWFsbAorCisgICAg
InVzZSBzdHJpY3QiOworCisgICAgcmV0dXJuIHRoaXMucmVxdWVzdFJlc29sdmVEZXBlbmRlbmNp
ZXMoa2V5KTsKK30KKworZnVuY3Rpb24gcHJvdmlkZShrZXksIHN0YWdlLCB2YWx1ZSkKK3sKKyAg
ICAidXNlIHN0cmljdCI7CisKKyAgICB2YXIgZW50cnkgPSB0aGlzLmVuc3VyZVJlZ2lzdGVyZWQo
a2V5KTsKKworICAgIGlmIChzdGFnZSA9PT0gdGhpcy5GZXRjaCkgeworICAgICAgICBpZiAoZW50
cnkuc3RhdHVzID4gdGhpcy5GZXRjaCkKKyAgICAgICAgICAgIHRocm93IG5ldyBAVHlwZUVycm9y
KCJSZXF1ZXN0ZWQgbW9kdWxlIGlzIGFscmVhZHkgZmV0Y2hlZC4iKTsKKyAgICAgICAgdGhpcy5m
dWxmaWxsRmV0Y2goZW50cnksIHZhbHVlKTsKKyAgICAgICAgcmV0dXJuOworICAgIH0KKworICAg
IGlmIChzdGFnZSA9PT0gdGhpcy5UcmFuc2xhdGUpIHsKKyAgICAgICAgaWYgKGVudHJ5LnN0YXR1
cyA+IHRoaXMuVHJhbnNsYXRlKQorICAgICAgICAgICAgdGhyb3cgbmV3IEBUeXBlRXJyb3IoIlJl
cXVlc3RlZCBtb2R1bGUgaXMgYWxyZWFkeSB0cmFuc2xhdGVkLiIpOworICAgICAgICB0aGlzLmZ1
bGZpbGxGZXRjaChlbnRyeSwgdW5kZWZpbmVkKTsKKyAgICAgICAgdGhpcy5mdWxmaWxsVHJhbnNs
YXRlKGVudHJ5LCB2YWx1ZSk7CisgICAgICAgIHJldHVybjsKKyAgICB9CisKKyAgICBpZiAoc3Rh
Z2UgPT09IHRoaXMuSW5zdGFudGlhdGUpIHsKKyAgICAgICAgaWYgKGVudHJ5LnN0YXR1cyA+IHRo
aXMuSW5zdGFudGlhdGUpCisgICAgICAgICAgICB0aHJvdyBuZXcgQFR5cGVFcnJvcigiUmVxdWVz
dGVkIG1vZHVsZSBpcyBhbHJlYWR5IGluc3RhbnRpYXRlZC4iKTsKKyAgICAgICAgdGhpcy5mdWxm
aWxsRmV0Y2goZW50cnksIHVuZGVmaW5lZCk7CisgICAgICAgIHRoaXMuZnVsZmlsbFRyYW5zbGF0
ZShlbnRyeSwgdmFsdWUpOworICAgICAgICB2YXIgbG9hZGVyID0gdGhpczsKKyAgICAgICAgZW50
cnkudHJhbnNsYXRlLnRoZW4oZnVuY3Rpb24gKHNvdXJjZSkgeworICAgICAgICAgICAgbG9hZGVy
LmZ1bGZpbGxJbnN0YW50aWF0ZShlbnRyeSwgdmFsdWUsIHNvdXJjZSk7CisgICAgICAgIH0pOwor
ICAgICAgICByZXR1cm47CisgICAgfQorCisgICAgdGhyb3cgbmV3IEBUeXBlRXJyb3IoIlJlcXVl
c3RlZCBtb2R1bGUgaXMgYWxyZWFkeSByZWFkeSB0byBiZSBleGVjdXRlZC4iKTsKK30KZGlmZiAt
LWdpdCBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9qc2MuY3BwIGIvU291cmNlL0phdmFTY3JpcHRD
b3JlL2pzYy5jcHAKaW5kZXggNjgxMWQ5NDBlNjVhOWQwMTU4Njc3YTEwOTFmOGUxN2E1ZTNiOWQ2
OS4uNWU1MjFmMGE1MWFiZWEwMWYzZjVjMWM5NDBkMWI1NDE1MTgzNGFjNSAxMDA2NDQKLS0tIGEv
U291cmNlL0phdmFTY3JpcHRDb3JlL2pzYy5jcHAKKysrIGIvU291cmNlL0phdmFTY3JpcHRDb3Jl
L2pzYy5jcHAKQEAgLTM5LDYgKzM5LDggQEAKICNpbmNsdWRlICJKU0FycmF5QnVmZmVyLmgiCiAj
aW5jbHVkZSAiSlNDSW5saW5lcy5oIgogI2luY2x1ZGUgIkpTRnVuY3Rpb24uaCIKKyNpbmNsdWRl
ICJKU0ludGVybmFsUHJvbWlzZS5oIgorI2luY2x1ZGUgIkpTSW50ZXJuYWxQcm9taXNlRGVmZXJy
ZWQuaCIKICNpbmNsdWRlICJKU0xvY2suaCIKICNpbmNsdWRlICJKU09OT2JqZWN0LmgiCiAjaW5j
bHVkZSAiSlNQcm94eS5oIgpAQCAtNTE5LDIwICs1MjEsMTcgQEAgc3RydWN0IFNjcmlwdCB7CiBj
bGFzcyBDb21tYW5kTGluZSB7CiBwdWJsaWM6CiAgICAgQ29tbWFuZExpbmUoaW50IGFyZ2MsIGNo
YXIqKiBhcmd2KQotICAgICAgICA6IG1faW50ZXJhY3RpdmUoZmFsc2UpCi0gICAgICAgICwgbV9k
dW1wKGZhbHNlKQotICAgICAgICAsIG1fZXhpdENvZGUoZmFsc2UpCi0gICAgICAgICwgbV9wcm9m
aWxlKGZhbHNlKQogICAgIHsKICAgICAgICAgcGFyc2VBcmd1bWVudHMoYXJnYywgYXJndik7CiAg
ICAgfQogCi0gICAgYm9vbCBtX2ludGVyYWN0aXZlOwotICAgIGJvb2wgbV9kdW1wOwotICAgIGJv
b2wgbV9leGl0Q29kZTsKKyAgICBib29sIG1faW50ZXJhY3RpdmUgeyBmYWxzZSB9OworICAgIGJv
b2wgbV9kdW1wIHsgZmFsc2UgfTsKKyAgICBib29sIG1fbW9kdWxlIHsgZmFsc2UgfTsKKyAgICBi
b29sIG1fZXhpdENvZGUgeyBmYWxzZSB9OwogICAgIFZlY3RvcjxTY3JpcHQ+IG1fc2NyaXB0czsK
ICAgICBWZWN0b3I8U3RyaW5nPiBtX2FyZ3VtZW50czsKLSAgICBib29sIG1fcHJvZmlsZTsKKyAg
ICBib29sIG1fcHJvZmlsZSB7IGZhbHNlIH07CiAgICAgU3RyaW5nIG1fcHJvZmlsZXJPdXRwdXQ7
CiAKICAgICB2b2lkIHBhcnNlQXJndW1lbnRzKGludCwgY2hhcioqKTsKQEAgLTU2Niw2ICs1NjUs
MTcgQEAgbG9uZyBTdG9wV2F0Y2g6OmdldEVsYXBzZWRNUygpCiAgICAgcmV0dXJuIHN0YXRpY19j
YXN0PGxvbmc+KChtX3N0b3BUaW1lIC0gbV9zdGFydFRpbWUpICogMTAwMCk7CiB9CiAKK3N0YXRp
YyBpbmxpbmUgU3RyaW5nIHN0cmluZ0Zyb21VVEYoY29uc3QgY2hhciogdXRmOCkKK3sKKyAgICBy
ZXR1cm4gU3RyaW5nOjpmcm9tVVRGOFdpdGhMYXRpbjFGYWxsYmFjayh1dGY4LCBzdHJsZW4odXRm
OCkpOworfQorCitzdGF0aWMgaW5saW5lIFNvdXJjZUNvZGUganNjU291cmNlKGNvbnN0IGNoYXIq
IHV0ZjgsIGNvbnN0IFN0cmluZyYgZmlsZW5hbWUpCit7CisgICAgU3RyaW5nIHN0ciA9IHN0cmlu
Z0Zyb21VVEYodXRmOCk7CisgICAgcmV0dXJuIG1ha2VTb3VyY2Uoc3RyLCBmaWxlbmFtZSk7Cit9
CisKIGNsYXNzIEdsb2JhbE9iamVjdCA6IHB1YmxpYyBKU0dsb2JhbE9iamVjdCB7CiBwcml2YXRl
OgogICAgIEdsb2JhbE9iamVjdChWTSYsIFN0cnVjdHVyZSopOwpAQCAtNjg3LDEwICs2OTcsMzEg
QEAgY2xhc3MgR2xvYmFsT2JqZWN0IDogcHVibGljIEpTR2xvYmFsT2JqZWN0IHsKICAgICAgICAg
SWRlbnRpZmllciBpZGVudGlmaWVyID0gSWRlbnRpZmllcjo6ZnJvbVN0cmluZygmdm0sIG5hbWUp
OwogICAgICAgICBwdXREaXJlY3Qodm0sIGlkZW50aWZpZXIsIEpTRnVuY3Rpb246OmNyZWF0ZSh2
bSwgdGhpcywgYXJndW1lbnRzLCBpZGVudGlmaWVyLnN0cmluZygpLCBmdW5jdGlvbiwgTm9JbnRy
aW5zaWMsIGZ1bmN0aW9uKSk7CiAgICAgfQorCisgICAgc3RhdGljIEpTSW50ZXJuYWxQcm9taXNl
KiBsb2FkZXJGZXRjaChKU0dsb2JhbE9iamVjdCogZ2xvYmFsT2JqZWN0LCBFeGVjU3RhdGUqIGV4
ZWMsIEpTVmFsdWUga2V5KQorICAgIHsKKyAgICAgICAgSlNJbnRlcm5hbFByb21pc2VEZWZlcnJl
ZCogZGVmZXJyZWQgPSBKU0ludGVybmFsUHJvbWlzZURlZmVycmVkOjpjcmVhdGUoZXhlYywgZ2xv
YmFsT2JqZWN0KTsKKyAgICAgICAgU3RyaW5nIG1vZHVsZUtleSA9IGtleS50b1N0cmluZyhleGVj
KS0+dmFsdWUoZXhlYyk7CisgICAgICAgIGlmIChleGVjLT5oYWRFeGNlcHRpb24oKSkgeworICAg
ICAgICAgICAgSlNWYWx1ZSBleGNlcHRpb24gPSBleGVjLT5leGNlcHRpb24oKTsKKyAgICAgICAg
ICAgIGV4ZWMtPmNsZWFyRXhjZXB0aW9uKCk7CisgICAgICAgICAgICBkZWZlcnJlZC0+cmVqZWN0
KGV4ZWMsIGV4Y2VwdGlvbik7CisgICAgICAgICAgICByZXR1cm4gZGVmZXJyZWQtPnByb21pc2Uo
KTsKKyAgICAgICAgfQorCisgICAgICAgIC8vIEhlcmUsIG5vdyB3ZSBjb25zaWRlciBtb2R1bGVL
ZXkgYXMgdGhlIGZpbGVOYW1lLgorICAgICAgICBWZWN0b3I8Y2hhcj4gdXRmODsKKyAgICAgICAg
aWYgKCFmaWxsQnVmZmVyV2l0aENvbnRlbnRzT2ZGaWxlKG1vZHVsZUtleSwgdXRmOCkpIHsKKyAg
ICAgICAgICAgIGRlZmVycmVkLT5yZWplY3QoZXhlYywgY3JlYXRlRXJyb3IoZXhlYywgbWFrZVN0
cmluZygiQ291bGQgbm90IG9wZW4gZmlsZSAnIiwgbW9kdWxlS2V5LCAiJy4iKSkpOworICAgICAg
ICAgICAgcmV0dXJuIGRlZmVycmVkLT5wcm9taXNlKCk7CisgICAgICAgIH0KKyAgICAgICAgZGVm
ZXJyZWQtPnJlc29sdmUoZXhlYywganNTdHJpbmcoZXhlYywgc3RyaW5nRnJvbVVURih1dGY4LmRh
dGEoKSkpKTsKKyAgICAgICAgcmV0dXJuIGRlZmVycmVkLT5wcm9taXNlKCk7CisgICAgfQogfTsK
IAogY29uc3QgQ2xhc3NJbmZvIEdsb2JhbE9iamVjdDo6c19pbmZvID0geyAiZ2xvYmFsIiwgJkpT
R2xvYmFsT2JqZWN0OjpzX2luZm8sICZnbG9iYWxPYmplY3RUYWJsZSwgQ1JFQVRFX01FVEhPRF9U
QUJMRShHbG9iYWxPYmplY3QpIH07Ci1jb25zdCBHbG9iYWxPYmplY3RNZXRob2RUYWJsZSBHbG9i
YWxPYmplY3Q6OnNfZ2xvYmFsT2JqZWN0TWV0aG9kVGFibGUgPSB7ICZhbGxvd3NBY2Nlc3NGcm9t
LCAmc3VwcG9ydHNQcm9maWxpbmcsICZzdXBwb3J0c1JpY2hTb3VyY2VJbmZvLCAmc2hvdWxkSW50
ZXJydXB0U2NyaXB0LCAmamF2YVNjcmlwdFJ1bnRpbWVGbGFncywgMCwgJnNob3VsZEludGVycnVw
dFNjcmlwdEJlZm9yZVRpbWVvdXQgfTsKK2NvbnN0IEdsb2JhbE9iamVjdE1ldGhvZFRhYmxlIEds
b2JhbE9iamVjdDo6c19nbG9iYWxPYmplY3RNZXRob2RUYWJsZSA9IHsgJmFsbG93c0FjY2Vzc0Zy
b20sICZzdXBwb3J0c1Byb2ZpbGluZywgJnN1cHBvcnRzUmljaFNvdXJjZUluZm8sICZzaG91bGRJ
bnRlcnJ1cHRTY3JpcHQsICZqYXZhU2NyaXB0UnVudGltZUZsYWdzLCAwLCAmc2hvdWxkSW50ZXJy
dXB0U2NyaXB0QmVmb3JlVGltZW91dCwgbnVsbHB0ciwgJmxvYWRlckZldGNoLCBudWxscHRyLCBu
dWxscHRyIH07CiAKIAogR2xvYmFsT2JqZWN0OjpHbG9iYWxPYmplY3QoVk0mIHZtLCBTdHJ1Y3R1
cmUqIHN0cnVjdHVyZSkKQEAgLTY5OCwxNyArNzI5LDYgQEAgR2xvYmFsT2JqZWN0OjpHbG9iYWxP
YmplY3QoVk0mIHZtLCBTdHJ1Y3R1cmUqIHN0cnVjdHVyZSkKIHsKIH0KIAotc3RhdGljIGlubGlu
ZSBTdHJpbmcgc3RyaW5nRnJvbVVURihjb25zdCBjaGFyKiB1dGY4KQotewotICAgIHJldHVybiBT
dHJpbmc6OmZyb21VVEY4V2l0aExhdGluMUZhbGxiYWNrKHV0ZjgsIHN0cmxlbih1dGY4KSk7Ci19
Ci0KLXN0YXRpYyBpbmxpbmUgU291cmNlQ29kZSBqc2NTb3VyY2UoY29uc3QgY2hhciogdXRmOCwg
Y29uc3QgU3RyaW5nJiBmaWxlbmFtZSkKLXsKLSAgICBTdHJpbmcgc3RyID0gc3RyaW5nRnJvbVVU
Rih1dGY4KTsKLSAgICByZXR1cm4gbWFrZVNvdXJjZShzdHIsIGZpbGVuYW1lKTsKLX0KLQogRW5j
b2RlZEpTVmFsdWUgSlNDX0hPU1RfQ0FMTCBmdW5jdGlvblByaW50KEV4ZWNTdGF0ZSogZXhlYykK
IHsKICAgICBmb3IgKHVuc2lnbmVkIGkgPSAwOyBpIDwgZXhlYy0+YXJndW1lbnRDb3VudCgpOyAr
K2kpIHsKQEAgLTEyMTIsNyArMTIzMiw3IEBAIEVuY29kZWRKU1ZhbHVlIEpTQ19IT1NUX0NBTEwg
ZnVuY3Rpb25DaGVja01vZHVsZVN5bnRheChFeGVjU3RhdGUqIGV4ZWMpCiAgICAgc3RvcFdhdGNo
LnN0YXJ0KCk7CiAKICAgICBQYXJzZXJFcnJvciBlcnJvcjsKLSAgICBib29sIHZhbGlkU3ludGF4
ID0gY2hlY2tNb2R1bGVTeW50YXgoZXhlYy0+dm0oKSwgbWFrZVNvdXJjZShzb3VyY2UpLCBlcnJv
cik7CisgICAgYm9vbCB2YWxpZFN5bnRheCA9IGNoZWNrTW9kdWxlU3ludGF4KGV4ZWMsIG1ha2VT
b3VyY2Uoc291cmNlKSwgZXJyb3IpOwogICAgIHN0b3BXYXRjaC5zdG9wKCk7CiAKICAgICBpZiAo
IXZhbGlkU3ludGF4KQpAQCAtMTMyMCw3ICsxMzQwLDE4IEBAIGludCBtYWluKGludCBhcmdjLCBj
aGFyKiogYXJndikKICAgICBqc2NFeGl0KHJlcyk7CiB9CiAKLXN0YXRpYyBib29sIHJ1bldpdGhT
Y3JpcHRzKEdsb2JhbE9iamVjdCogZ2xvYmFsT2JqZWN0LCBjb25zdCBWZWN0b3I8U2NyaXB0PiYg
c2NyaXB0cywgYm9vbCBkdW1wKQorc3RhdGljIHZvaWQgZHVtcEV4Y2VwdGlvbihHbG9iYWxPYmpl
Y3QqIGdsb2JhbE9iamVjdCwgTmFrZWRQdHI8RXhjZXB0aW9uPiBldmFsdWF0aW9uRXhjZXB0aW9u
KQoreworICAgIGlmIChldmFsdWF0aW9uRXhjZXB0aW9uKSB7CisgICAgICAgIHByaW50ZigiRXhj
ZXB0aW9uOiAlc1xuIiwgZXZhbHVhdGlvbkV4Y2VwdGlvbi0+dmFsdWUoKS50b1N0cmluZyhnbG9i
YWxPYmplY3QtPmdsb2JhbEV4ZWMoKSktPnZhbHVlKGdsb2JhbE9iamVjdC0+Z2xvYmFsRXhlYygp
KS51dGY4KCkuZGF0YSgpKTsKKyAgICAgICAgSWRlbnRpZmllciBzdGFja0lEID0gSWRlbnRpZmll
cjo6ZnJvbVN0cmluZyhnbG9iYWxPYmplY3QtPmdsb2JhbEV4ZWMoKSwgInN0YWNrIik7CisgICAg
ICAgIEpTVmFsdWUgc3RhY2tWYWx1ZSA9IGV2YWx1YXRpb25FeGNlcHRpb24tPnZhbHVlKCkuZ2V0
KGdsb2JhbE9iamVjdC0+Z2xvYmFsRXhlYygpLCBzdGFja0lEKTsKKyAgICAgICAgaWYgKCFzdGFj
a1ZhbHVlLmlzVW5kZWZpbmVkT3JOdWxsKCkpCisgICAgICAgICAgICBwcmludGYoIiVzXG4iLCBz
dGFja1ZhbHVlLnRvU3RyaW5nKGdsb2JhbE9iamVjdC0+Z2xvYmFsRXhlYygpKS0+dmFsdWUoZ2xv
YmFsT2JqZWN0LT5nbG9iYWxFeGVjKCkpLnV0ZjgoKS5kYXRhKCkpOworICAgIH0KK30KKworc3Rh
dGljIGJvb2wgcnVuV2l0aFNjcmlwdHMoR2xvYmFsT2JqZWN0KiBnbG9iYWxPYmplY3QsIGNvbnN0
IFZlY3RvcjxTY3JpcHQ+JiBzY3JpcHRzLCBib29sIGR1bXAsIGJvb2wgbW9kdWxlKQogewogICAg
IGNvbnN0IGNoYXIqIHNjcmlwdDsKICAgICBTdHJpbmcgZmlsZU5hbWU7CkBAIC0xMzQ5LDE3ICsx
MzgwLDIxIEBAIHN0YXRpYyBib29sIHJ1bldpdGhTY3JpcHRzKEdsb2JhbE9iamVjdCogZ2xvYmFs
T2JqZWN0LCBjb25zdCBWZWN0b3I8U2NyaXB0PiYgc2NyCiAKICAgICAgICAgdm0uc3RhcnRTYW1w
bGluZygpOwogCi0gICAgICAgIE5ha2VkUHRyPEV4Y2VwdGlvbj4gZXZhbHVhdGlvbkV4Y2VwdGlv
bjsKLSAgICAgICAgSlNWYWx1ZSByZXR1cm5WYWx1ZSA9IGV2YWx1YXRlKGdsb2JhbE9iamVjdC0+
Z2xvYmFsRXhlYygpLCBqc2NTb3VyY2Uoc2NyaXB0LCBmaWxlTmFtZSksIEpTVmFsdWUoKSwgZXZh
bHVhdGlvbkV4Y2VwdGlvbik7Ci0gICAgICAgIHN1Y2Nlc3MgPSBzdWNjZXNzICYmICFldmFsdWF0
aW9uRXhjZXB0aW9uOwotICAgICAgICBpZiAoZHVtcCAmJiAhZXZhbHVhdGlvbkV4Y2VwdGlvbikK
LSAgICAgICAgICAgIHByaW50ZigiRW5kOiAlc1xuIiwgcmV0dXJuVmFsdWUudG9TdHJpbmcoZ2xv
YmFsT2JqZWN0LT5nbG9iYWxFeGVjKCkpLT52YWx1ZShnbG9iYWxPYmplY3QtPmdsb2JhbEV4ZWMo
KSkudXRmOCgpLmRhdGEoKSk7Ci0gICAgICAgIGlmIChldmFsdWF0aW9uRXhjZXB0aW9uKSB7Ci0g
ICAgICAgICAgICBwcmludGYoIkV4Y2VwdGlvbjogJXNcbiIsIGV2YWx1YXRpb25FeGNlcHRpb24t
PnZhbHVlKCkudG9TdHJpbmcoZ2xvYmFsT2JqZWN0LT5nbG9iYWxFeGVjKCkpLT52YWx1ZShnbG9i
YWxPYmplY3QtPmdsb2JhbEV4ZWMoKSkudXRmOCgpLmRhdGEoKSk7Ci0gICAgICAgICAgICBJZGVu
dGlmaWVyIHN0YWNrSUQgPSBJZGVudGlmaWVyOjpmcm9tU3RyaW5nKGdsb2JhbE9iamVjdC0+Z2xv
YmFsRXhlYygpLCAic3RhY2siKTsKLSAgICAgICAgICAgIEpTVmFsdWUgc3RhY2tWYWx1ZSA9IGV2
YWx1YXRpb25FeGNlcHRpb24tPnZhbHVlKCkuZ2V0KGdsb2JhbE9iamVjdC0+Z2xvYmFsRXhlYygp
LCBzdGFja0lEKTsKLSAgICAgICAgICAgIGlmICghc3RhY2tWYWx1ZS5pc1VuZGVmaW5lZE9yTnVs
bCgpKQotICAgICAgICAgICAgICAgIHByaW50ZigiJXNcbiIsIHN0YWNrVmFsdWUudG9TdHJpbmco
Z2xvYmFsT2JqZWN0LT5nbG9iYWxFeGVjKCkpLT52YWx1ZShnbG9iYWxPYmplY3QtPmdsb2JhbEV4
ZWMoKSkudXRmOCgpLmRhdGEoKSk7CisgICAgICAgIGlmIChtb2R1bGUpIHsKKyNpZiBFTkFCTEUo
RVM2X01PRFVMRVMpCisgICAgICAgICAgICBOYWtlZFB0cjxFeGNlcHRpb24+IGV2YWx1YXRpb25F
eGNlcHRpb247CisgICAgICAgICAgICBldmFsdWF0ZU1vZHVsZShnbG9iYWxPYmplY3QtPmdsb2Jh
bEV4ZWMoKSwganNjU291cmNlKHNjcmlwdCwgZmlsZU5hbWUpLCBldmFsdWF0aW9uRXhjZXB0aW9u
KTsKKyAgICAgICAgICAgIGR1bXBFeGNlcHRpb24oZ2xvYmFsT2JqZWN0LCBldmFsdWF0aW9uRXhj
ZXB0aW9uKTsKKyAgICAgICAgICAgIGdsb2JhbE9iamVjdC0+Z2xvYmFsRXhlYygpLT5jbGVhckV4
Y2VwdGlvbigpOworICAgICAgICAgICAgZ2xvYmFsT2JqZWN0LT52bSgpLmRyYWluTWljcm90YXNr
cygpOworI2VuZGlmCisgICAgICAgIH0gZWxzZSB7CisgICAgICAgICAgICBOYWtlZFB0cjxFeGNl
cHRpb24+IGV2YWx1YXRpb25FeGNlcHRpb247CisgICAgICAgICAgICBKU1ZhbHVlIHJldHVyblZh
bHVlID0gZXZhbHVhdGUoZ2xvYmFsT2JqZWN0LT5nbG9iYWxFeGVjKCksIGpzY1NvdXJjZShzY3Jp
cHQsIGZpbGVOYW1lKSwgSlNWYWx1ZSgpLCBldmFsdWF0aW9uRXhjZXB0aW9uKTsKKyAgICAgICAg
ICAgIHN1Y2Nlc3MgPSBzdWNjZXNzICYmICFldmFsdWF0aW9uRXhjZXB0aW9uOworICAgICAgICAg
ICAgaWYgKGR1bXAgJiYgIWV2YWx1YXRpb25FeGNlcHRpb24pCisgICAgICAgICAgICAgICAgcHJp
bnRmKCJFbmQ6ICVzXG4iLCByZXR1cm5WYWx1ZS50b1N0cmluZyhnbG9iYWxPYmplY3QtPmdsb2Jh
bEV4ZWMoKSktPnZhbHVlKGdsb2JhbE9iamVjdC0+Z2xvYmFsRXhlYygpKS51dGY4KCkuZGF0YSgp
KTsKKyAgICAgICAgICAgIGR1bXBFeGNlcHRpb24oZ2xvYmFsT2JqZWN0LCBldmFsdWF0aW9uRXhj
ZXB0aW9uKTsKICAgICAgICAgfQogCiAgICAgICAgIHZtLnN0b3BTYW1wbGluZygpOwpAQCAtMTQ1
MSw2ICsxNDg2LDkgQEAgc3RhdGljIE5PX1JFVFVSTiB2b2lkIHByaW50VXNhZ2VTdGF0ZW1lbnQo
Ym9vbCBoZWxwID0gZmFsc2UpCiAgICAgZnByaW50ZihzdGRlcnIsICIgIC1mICAgICAgICAgU3Bl
Y2lmaWVzIGEgc291cmNlIGZpbGUgKGRlcHJlY2F0ZWQpXG4iKTsKICAgICBmcHJpbnRmKHN0ZGVy
ciwgIiAgLWh8LS1oZWxwICBQcmludHMgdGhpcyBoZWxwIG1lc3NhZ2VcbiIpOwogICAgIGZwcmlu
dGYoc3RkZXJyLCAiICAtaSAgICAgICAgIEVuYWJsZXMgaW50ZXJhY3RpdmUgbW9kZSAoZGVmYXVs
dCBpZiBubyBmaWxlcyBhcmUgc3BlY2lmaWVkKVxuIik7CisjaWYgRU5BQkxFKEVTNl9NT0RVTEVT
KQorICAgIGZwcmludGYoc3RkZXJyLCAiICAtbSAgICAgICAgIEV4ZWN1dGUgYXMgYSBtb2R1bGVc
biIpOworI2VuZGlmCiAjaWYgSEFWRShTSUdOQUxfSCkKICAgICBmcHJpbnRmKHN0ZGVyciwgIiAg
LXMgICAgICAgICBJbnN0YWxscyBzaWduYWwgaGFuZGxlcnMgdGhhdCBleGl0IG9uIGEgY3Jhc2gg
KFVuaXggcGxhdGZvcm1zIG9ubHkpXG4iKTsKICNlbmRpZgpAQCAtMTUwMiw2ICsxNTQwLDEyIEBA
IHZvaWQgQ29tbWFuZExpbmU6OnBhcnNlQXJndW1lbnRzKGludCBhcmdjLCBjaGFyKiogYXJndikK
ICAgICAgICAgICAgIG1fcHJvZmlsZXJPdXRwdXQgPSBhcmd2W2ldOwogICAgICAgICAgICAgY29u
dGludWU7CiAgICAgICAgIH0KKyNpZiBFTkFCTEUoRVM2X01PRFVMRVMpCisgICAgICAgIGlmICgh
c3RyY21wKGFyZywgIi1tIikpIHsKKyAgICAgICAgICAgIG1fbW9kdWxlID0gdHJ1ZTsKKyAgICAg
ICAgICAgIGNvbnRpbnVlOworICAgICAgICB9CisjZW5kaWYKICAgICAgICAgaWYgKCFzdHJjbXAo
YXJnLCAiLXMiKSkgewogI2lmIEhBVkUoU0lHTkFMX0gpCiAgICAgICAgICAgICBzaWduYWwoU0lH
SUxMLCBfZXhpdCk7CkBAIC0xNTc3LDcgKzE2MjEsNyBAQCBpbnQganNjbWFpbihpbnQgYXJnYywg
Y2hhcioqIGFyZ3YpCiAgICAgICAgICAgICB2bS0+bV9wZXJCeXRlY29kZVByb2ZpbGVyID0gc3Rk
OjptYWtlX3VuaXF1ZTxQcm9maWxlcjo6RGF0YWJhc2U+KCp2bSk7CiAgICAgCiAgICAgICAgIEds
b2JhbE9iamVjdCogZ2xvYmFsT2JqZWN0ID0gR2xvYmFsT2JqZWN0OjpjcmVhdGUoKnZtLCBHbG9i
YWxPYmplY3Q6OmNyZWF0ZVN0cnVjdHVyZSgqdm0sIGpzTnVsbCgpKSwgb3B0aW9ucy5tX2FyZ3Vt
ZW50cyk7Ci0gICAgICAgIGJvb2wgc3VjY2VzcyA9IHJ1bldpdGhTY3JpcHRzKGdsb2JhbE9iamVj
dCwgb3B0aW9ucy5tX3NjcmlwdHMsIG9wdGlvbnMubV9kdW1wKTsKKyAgICAgICAgYm9vbCBzdWNj
ZXNzID0gcnVuV2l0aFNjcmlwdHMoZ2xvYmFsT2JqZWN0LCBvcHRpb25zLm1fc2NyaXB0cywgb3B0
aW9ucy5tX2R1bXAsIG9wdGlvbnMubV9tb2R1bGUpOwogICAgICAgICBpZiAob3B0aW9ucy5tX2lu
dGVyYWN0aXZlICYmIHN1Y2Nlc3MpCiAgICAgICAgICAgICBydW5JbnRlcmFjdGl2ZShnbG9iYWxP
YmplY3QpOwogCmRpZmYgLS1naXQgYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvcGFyc2VyL0xleGVy
LmNwcCBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9wYXJzZXIvTGV4ZXIuY3BwCmluZGV4IDI1OWQy
NTRlMzk3NTE4YzdiY2NmZmM5ZWRlYzE1NmJhNWYwMGRiN2EuLjQ3NjA0M2ZmNmUyNTVmOWViNjMx
NDVjYjg2Y2RhOWVlZjBhNDE1NjYgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9w
YXJzZXIvTGV4ZXIuY3BwCisrKyBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9wYXJzZXIvTGV4ZXIu
Y3BwCkBAIC05MzUsNyArOTM1LDcgQEAgdGVtcGxhdGUgPGJvb2wgc2hvdWxkQ3JlYXRlSWRlbnRp
Zmllcj4gQUxXQVlTX0lOTElORSBKU1Rva2VuVHlwZSBMZXhlcjxMQ2hhcj46OnAKICAgICAgICAg
ICAgICAgICByZXR1cm4gRVJST1JUT0s7CiAgICAgICAgICAgICB9CiAgICAgICAgICAgICBpZiAo
aXNQcml2YXRlTmFtZSkKLSAgICAgICAgICAgICAgICBpZGVudCA9IG1fdm0tPnByb3BlcnR5TmFt
ZXMtPmdldFByaXZhdGVOYW1lKCppZGVudCk7CisgICAgICAgICAgICAgICAgaWRlbnQgPSBtX3Zt
LT5wcm9wZXJ0eU5hbWVzLT5sb29rVXBQcml2YXRlTmFtZSgqaWRlbnQpOwogICAgICAgICAgICAg
ZWxzZSBpZiAoKmlkZW50ID09IG1fdm0tPnByb3BlcnR5TmFtZXMtPnVuZGVmaW5lZEtleXdvcmQp
CiAgICAgICAgICAgICAgICAgdG9rZW5EYXRhLT5pZGVudCA9ICZtX3ZtLT5wcm9wZXJ0eU5hbWVz
LT51bmRlZmluZWRQcml2YXRlTmFtZTsKICAgICAgICAgICAgIGlmICghaWRlbnQpCkBAIC0xMDEy
LDcgKzEwMTIsNyBAQCB0ZW1wbGF0ZSA8Ym9vbCBzaG91bGRDcmVhdGVJZGVudGlmaWVyPiBBTFdB
WVNfSU5MSU5FIEpTVG9rZW5UeXBlIExleGVyPFVDaGFyPjo6cAogICAgICAgICAgICAgICAgIHJl
dHVybiBFUlJPUlRPSzsKICAgICAgICAgICAgIH0KICAgICAgICAgICAgIGlmIChpc1ByaXZhdGVO
YW1lKQotICAgICAgICAgICAgICAgIGlkZW50ID0gbV92bS0+cHJvcGVydHlOYW1lcy0+Z2V0UHJp
dmF0ZU5hbWUoKmlkZW50KTsKKyAgICAgICAgICAgICAgICBpZGVudCA9IG1fdm0tPnByb3BlcnR5
TmFtZXMtPmxvb2tVcFByaXZhdGVOYW1lKCppZGVudCk7CiAgICAgICAgICAgICBlbHNlIGlmICgq
aWRlbnQgPT0gbV92bS0+cHJvcGVydHlOYW1lcy0+dW5kZWZpbmVkS2V5d29yZCkKICAgICAgICAg
ICAgICAgICB0b2tlbkRhdGEtPmlkZW50ID0gJm1fdm0tPnByb3BlcnR5TmFtZXMtPnVuZGVmaW5l
ZFByaXZhdGVOYW1lOwogICAgICAgICAgICAgaWYgKCFpZGVudCkKZGlmZiAtLWdpdCBhL1NvdXJj
ZS9KYXZhU2NyaXB0Q29yZS9wYXJzZXIvTW9kdWxlQW5hbHl6ZXIuY3BwIGIvU291cmNlL0phdmFT
Y3JpcHRDb3JlL3BhcnNlci9Nb2R1bGVBbmFseXplci5jcHAKaW5kZXggYjJkZTk2MGIzOTMyNTg0
MWNkOWY4NWM2NzE2MjJjM2RmN2JhOWQ3Ny4uNmRhMmNkMDhkNDhmMjA1ODlmNGRlZTJlYzQ1NGU5
ZDE1Y2UzZjhiYiAxMDA2NDQKLS0tIGEvU291cmNlL0phdmFTY3JpcHRDb3JlL3BhcnNlci9Nb2R1
bGVBbmFseXplci5jcHAKKysrIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL3BhcnNlci9Nb2R1bGVB
bmFseXplci5jcHAKQEAgLTI3LDE0ICsyNywxOCBAQAogI2luY2x1ZGUgIk1vZHVsZUFuYWx5emVy
LmgiCiAKICNpbmNsdWRlICJJZGVudGlmaWVySW5saW5lcy5oIgotI2luY2x1ZGUgIk1vZHVsZVJl
Y29yZC5oIgorI2luY2x1ZGUgIkpTQ0pTVmFsdWVJbmxpbmVzLmgiCisjaW5jbHVkZSAiSlNDZWxs
SW5saW5lcy5oIgorI2luY2x1ZGUgIkpTR2xvYmFsT2JqZWN0LmgiCisjaW5jbHVkZSAiSlNNb2R1
bGVSZWNvcmQuaCIKKyNpbmNsdWRlICJTdHJvbmdJbmxpbmVzLmgiCiAKIG5hbWVzcGFjZSBKU0Mg
ewogCiAKLU1vZHVsZUFuYWx5emVyOjpNb2R1bGVBbmFseXplcihWTSYgdm0sIGNvbnN0IFZhcmlh
YmxlRW52aXJvbm1lbnQmIGRlY2xhcmVkVmFyaWFibGVzLCBjb25zdCBWYXJpYWJsZUVudmlyb25t
ZW50JiBsZXhpY2FsVmFyaWFibGVzKQotICAgIDogbV92bSgmdm0pCi0gICAgLCBtX21vZHVsZVJl
Y29yZChNb2R1bGVSZWNvcmQ6OmNyZWF0ZSgpKQorTW9kdWxlQW5hbHl6ZXI6Ok1vZHVsZUFuYWx5
emVyKEV4ZWNTdGF0ZSogZXhlYywgY29uc3QgVmFyaWFibGVFbnZpcm9ubWVudCYgZGVjbGFyZWRW
YXJpYWJsZXMsIGNvbnN0IFZhcmlhYmxlRW52aXJvbm1lbnQmIGxleGljYWxWYXJpYWJsZXMpCisg
ICAgOiBtX3ZtKCZleGVjLT52bSgpKQorICAgICwgbV9tb2R1bGVSZWNvcmQoZXhlYy0+dm0oKSwg
SlNNb2R1bGVSZWNvcmQ6OmNyZWF0ZShleGVjLT52bSgpLCBleGVjLT5sZXhpY2FsR2xvYmFsT2Jq
ZWN0KCktPm1vZHVsZVJlY29yZFN0cnVjdHVyZSgpKSkKICAgICAsIG1fZGVjbGFyZWRWYXJpYWJs
ZXMoZGVjbGFyZWRWYXJpYWJsZXMpCiAgICAgLCBtX2xleGljYWxWYXJpYWJsZXMobGV4aWNhbFZh
cmlhYmxlcykKIHsKQEAgLTc2LDI4ICs4MCwyOCBAQCB2b2lkIE1vZHVsZUFuYWx5emVyOjpleHBv
cnRWYXJpYWJsZShjb25zdCBSZWZQdHI8VW5pcXVlZFN0cmluZ0ltcGw+JiBsb2NhbE5hbWUsCiAK
ICAgICAvLyBFeHBvcnRlZCBtb2R1bGUgbG9jYWwgdmFyaWFibGUuCiAgICAgaWYgKCF2YXJpYWJs
ZS5pc0ltcG9ydGVkKCkpIHsKLSAgICAgICAgbW9kdWxlUmVjb3JkKCkuYWRkRXhwb3J0RW50cnko
TW9kdWxlUmVjb3JkOjpFeHBvcnRFbnRyeTo6Y3JlYXRlTG9jYWwoZXhwb3J0TmFtZSwgSWRlbnRp
Zmllcjo6ZnJvbVVpZChtX3ZtLCBsb2NhbE5hbWUuZ2V0KCkpLCB2YXJpYWJsZSkpOworICAgICAg
ICBtb2R1bGVSZWNvcmQoKS0+YWRkRXhwb3J0RW50cnkoSlNNb2R1bGVSZWNvcmQ6OkV4cG9ydEVu
dHJ5OjpjcmVhdGVMb2NhbChleHBvcnROYW1lLCBJZGVudGlmaWVyOjpmcm9tVWlkKG1fdm0sIGxv
Y2FsTmFtZS5nZXQoKSksIHZhcmlhYmxlKSk7CiAgICAgICAgIHJldHVybjsKICAgICB9CiAKLSAg
ICBjb25zdCBhdXRvJiBpbXBvcnRFbnRyeSA9IG1vZHVsZVJlY29yZCgpLmxvb2tVcEltcG9ydEVu
dHJ5KGxvY2FsTmFtZSk7CisgICAgY29uc3QgYXV0byYgaW1wb3J0RW50cnkgPSBtb2R1bGVSZWNv
cmQoKS0+bG9va1VwSW1wb3J0RW50cnkobG9jYWxOYW1lKTsKICAgICBpZiAoaW1wb3J0RW50cnku
aXNOYW1lc3BhY2Uodm0oKSkpIHsKICAgICAgICAgLy8gRXhwb3J0ZWQgbmFtZXNwYWNlIGJpbmRp
bmcuCiAgICAgICAgIC8vIGltcG9ydCAqIGFzIG5hbWVzcGFjZSBmcm9tICJtb2QiCiAgICAgICAg
IC8vIGV4cG9ydCB7IG5hbWVzcGFjZSB9Ci0gICAgICAgIG1vZHVsZVJlY29yZCgpLmFkZEV4cG9y
dEVudHJ5KE1vZHVsZVJlY29yZDo6RXhwb3J0RW50cnk6OmNyZWF0ZU5hbWVzcGFjZShleHBvcnRO
YW1lLCBpbXBvcnRFbnRyeS5tb2R1bGVSZXF1ZXN0KSk7CisgICAgICAgIG1vZHVsZVJlY29yZCgp
LT5hZGRFeHBvcnRFbnRyeShKU01vZHVsZVJlY29yZDo6RXhwb3J0RW50cnk6OmNyZWF0ZU5hbWVz
cGFjZShleHBvcnROYW1lLCBpbXBvcnRFbnRyeS5tb2R1bGVSZXF1ZXN0KSk7CiAgICAgICAgIHJl
dHVybjsKICAgICB9CiAKICAgICAvLyBJbmRpcmVjdGx5IGV4cG9ydGVkIGJpbmRpbmcuCiAgICAg
Ly8gaW1wb3J0IGEgZnJvbSAibW9kIgogICAgIC8vIGV4cG9ydCB7IGEgfQotICAgIG1vZHVsZVJl
Y29yZCgpLmFkZEV4cG9ydEVudHJ5KE1vZHVsZVJlY29yZDo6RXhwb3J0RW50cnk6OmNyZWF0ZUlu
ZGlyZWN0KGV4cG9ydE5hbWUsIGltcG9ydEVudHJ5LmltcG9ydE5hbWUsIGltcG9ydEVudHJ5Lm1v
ZHVsZVJlcXVlc3QpKTsKKyAgICBtb2R1bGVSZWNvcmQoKS0+YWRkRXhwb3J0RW50cnkoSlNNb2R1
bGVSZWNvcmQ6OkV4cG9ydEVudHJ5OjpjcmVhdGVJbmRpcmVjdChleHBvcnROYW1lLCBpbXBvcnRF
bnRyeS5pbXBvcnROYW1lLCBpbXBvcnRFbnRyeS5tb2R1bGVSZXF1ZXN0KSk7CiB9CiAKIAogCi1S
ZWY8TW9kdWxlUmVjb3JkPiBNb2R1bGVBbmFseXplcjo6YW5hbHl6ZShNb2R1bGVQcm9ncmFtTm9k
ZSYgbW9kdWxlUHJvZ3JhbU5vZGUpCitKU01vZHVsZVJlY29yZCogTW9kdWxlQW5hbHl6ZXI6OmFu
YWx5emUoTW9kdWxlUHJvZ3JhbU5vZGUmIG1vZHVsZVByb2dyYW1Ob2RlKQogewogICAgIC8vIFRy
YXZlcnNlIHRoZSBtb2R1bGUgQVNUIGFuZCBjb2xsZWN0CiAgICAgLy8gKiBJbXBvcnQgZW50cmll
cwpAQCAtMTQ5LDcgKzE1Myw3IEBAIFJlZjxNb2R1bGVSZWNvcmQ+IE1vZHVsZUFuYWx5emVyOjph
bmFseXplKE1vZHVsZVByb2dyYW1Ob2RlJiBtb2R1bGVQcm9ncmFtTm9kZSkKICAgICBpZiAoT3B0
aW9uczo6ZHVtcE1vZHVsZVJlY29yZCgpKQogICAgICAgICBtX21vZHVsZVJlY29yZC0+ZHVtcCgp
OwogCi0gICAgcmV0dXJuICptX21vZHVsZVJlY29yZDsKKyAgICByZXR1cm4gbV9tb2R1bGVSZWNv
cmQuZ2V0KCk7CiB9CiAKIH0gLy8gbmFtZXNwYWNlIEpTQwpkaWZmIC0tZ2l0IGEvU291cmNlL0ph
dmFTY3JpcHRDb3JlL3BhcnNlci9Nb2R1bGVBbmFseXplci5oIGIvU291cmNlL0phdmFTY3JpcHRD
b3JlL3BhcnNlci9Nb2R1bGVBbmFseXplci5oCmluZGV4IDAyNzY0ODQ3NjUwYjMwMjRmZDJhOGMz
NzIyZTczYTc0N2I5NjNjYjYuLjMzOTBiN2JhZjFmNjVlODEwYzExMzliNmRlYzQ2NTk0NmI4OWQ0
OTIgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9wYXJzZXIvTW9kdWxlQW5hbHl6
ZXIuaAorKysgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvcGFyc2VyL01vZHVsZUFuYWx5emVyLmgK
QEAgLTI2LDIwICsyNiwyMiBAQAogI2lmbmRlZiBNb2R1bGVBbmFseXplcl9oCiAjZGVmaW5lIE1v
ZHVsZUFuYWx5emVyX2gKIAotI2luY2x1ZGUgIk1vZHVsZVJlY29yZC5oIgogI2luY2x1ZGUgIk5v
ZGVzLmgiCiAKIG5hbWVzcGFjZSBKU0MgewogCitjbGFzcyBKU01vZHVsZVJlY29yZDsKKwogY2xh
c3MgTW9kdWxlQW5hbHl6ZXIgeworICAgIFdURl9NQUtFX05PTkNPUFlBQkxFKE1vZHVsZUFuYWx5
emVyKTsKIHB1YmxpYzoKLSAgICBNb2R1bGVBbmFseXplcihWTSYsIGNvbnN0IFZhcmlhYmxlRW52
aXJvbm1lbnQmIGRlY2xhcmVkVmFyaWFibGVzLCBjb25zdCBWYXJpYWJsZUVudmlyb25tZW50JiBs
ZXhpY2FsVmFyaWFibGVzKTsKKyAgICBNb2R1bGVBbmFseXplcihFeGVjU3RhdGUqLCBjb25zdCBW
YXJpYWJsZUVudmlyb25tZW50JiBkZWNsYXJlZFZhcmlhYmxlcywgY29uc3QgVmFyaWFibGVFbnZp
cm9ubWVudCYgbGV4aWNhbFZhcmlhYmxlcyk7CiAKLSAgICBSZWY8TW9kdWxlUmVjb3JkPiBhbmFs
eXplKE1vZHVsZVByb2dyYW1Ob2RlJik7CisgICAgSlNNb2R1bGVSZWNvcmQqIGFuYWx5emUoTW9k
dWxlUHJvZ3JhbU5vZGUmKTsKIAogICAgIFZNJiB2bSgpIHsgcmV0dXJuICptX3ZtOyB9CiAKLSAg
ICBNb2R1bGVSZWNvcmQmIG1vZHVsZVJlY29yZCgpIHsgcmV0dXJuICptX21vZHVsZVJlY29yZDsg
fQorICAgIEpTTW9kdWxlUmVjb3JkKiBtb2R1bGVSZWNvcmQoKSB7IHJldHVybiBtX21vZHVsZVJl
Y29yZC5nZXQoKTsgfQogCiAgICAgdm9pZCBkZWNsYXJlRXhwb3J0QWxpYXMoY29uc3QgSWRlbnRp
ZmllciYgbG9jYWxOYW1lLCBjb25zdCBJZGVudGlmaWVyJiBleHBvcnROYW1lKTsKIApAQCAtNTEs
NyArNTMsNyBAQCBjbGFzcyBNb2R1bGVBbmFseXplciB7CiAgICAgSWRlbnRpZmllciBleHBvcnRl
ZEJpbmRpbmcoY29uc3QgUmVmUHRyPFVuaXF1ZWRTdHJpbmdJbXBsPiYgaWRlbnQpOwogCiAgICAg
Vk0qIG1fdm07Ci0gICAgUmVmUHRyPE1vZHVsZVJlY29yZD4gbV9tb2R1bGVSZWNvcmQ7CisgICAg
U3Ryb25nPEpTTW9kdWxlUmVjb3JkPiBtX21vZHVsZVJlY29yZDsKICAgICBWYXJpYWJsZUVudmly
b25tZW50IG1fZGVjbGFyZWRWYXJpYWJsZXM7CiAgICAgVmFyaWFibGVFbnZpcm9ubWVudCBtX2xl
eGljYWxWYXJpYWJsZXM7CiAgICAgSWRlbnRpZmllckFsaWFzTWFwIG1fYWxpYXNNYXA7CmRpZmYg
LS1naXQgYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvcGFyc2VyL01vZHVsZVJlY29yZC5jcHAgYi9T
b3VyY2UvSmF2YVNjcmlwdENvcmUvcGFyc2VyL01vZHVsZVJlY29yZC5jcHAKZGVsZXRlZCBmaWxl
IG1vZGUgMTAwNjQ0CmluZGV4IGVjOTczNTY4YmVjOGEwYjE1MzMzMmY0ODc1ZjllZmUxMzc4MmVj
OGEuLjAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAKLS0tIGEvU291cmNl
L0phdmFTY3JpcHRDb3JlL3BhcnNlci9Nb2R1bGVSZWNvcmQuY3BwCisrKyAvZGV2L251bGwKQEAg
LTEsOTUgKzAsMCBAQAotLyoKLSAqIENvcHlyaWdodCAoQykgMjAxNSBBcHBsZSBJbmMuIEFsbCBy
aWdodHMgcmVzZXJ2ZWQuCi0gKgotICogUmVkaXN0cmlidXRpb24gYW5kIHVzZSBpbiBzb3VyY2Ug
YW5kIGJpbmFyeSBmb3Jtcywgd2l0aCBvciB3aXRob3V0Ci0gKiBtb2RpZmljYXRpb24sIGFyZSBw
ZXJtaXR0ZWQgcHJvdmlkZWQgdGhhdCB0aGUgZm9sbG93aW5nIGNvbmRpdGlvbnMKLSAqIGFyZSBt
ZXQ6Ci0gKiAxLiBSZWRpc3RyaWJ1dGlvbnMgb2Ygc291cmNlIGNvZGUgbXVzdCByZXRhaW4gdGhl
IGFib3ZlIGNvcHlyaWdodAotICogICAgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBh
bmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyLgotICogMi4gUmVkaXN0cmlidXRpb25zIGluIGJp
bmFyeSBmb3JtIG11c3QgcmVwcm9kdWNlIHRoZSBhYm92ZSBjb3B5cmlnaHQKLSAqICAgIG5vdGlj
ZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lciBp
biB0aGUKLSAqICAgIGRvY3VtZW50YXRpb24gYW5kL29yIG90aGVyIG1hdGVyaWFscyBwcm92aWRl
ZCB3aXRoIHRoZSBkaXN0cmlidXRpb24uCi0gKgotICogVEhJUyBTT0ZUV0FSRSBJUyBQUk9WSURF
RCBCWSBBUFBMRSBJTkMuIGBgQVMgSVMnJyBBTkQgQU5ZCi0gKiBFWFBSRVNTIE9SIElNUExJRUQg
V0FSUkFOVElFUywgSU5DTFVESU5HLCBCVVQgTk9UIExJTUlURUQgVE8sIFRIRQotICogSU1QTElF
RCBXQVJSQU5USUVTIE9GIE1FUkNIQU5UQUJJTElUWSBBTkQgRklUTkVTUyBGT1IgQSBQQVJUSUNV
TEFSCi0gKiBQVVJQT1NFIEFSRSBESVNDTEFJTUVELiAgSU4gTk8gRVZFTlQgU0hBTEwgQVBQTEUg
SU5DLiBPUgotICogQ09OVFJJQlVUT1JTIEJFIExJQUJMRSBGT1IgQU5ZIERJUkVDVCwgSU5ESVJF
Q1QsIElOQ0lERU5UQUwsIFNQRUNJQUwsCi0gKiBFWEVNUExBUlksIE9SIENPTlNFUVVFTlRJQUwg
REFNQUdFUyAoSU5DTFVESU5HLCBCVVQgTk9UIExJTUlURUQgVE8sCi0gKiBQUk9DVVJFTUVOVCBP
RiBTVUJTVElUVVRFIEdPT0RTIE9SIFNFUlZJQ0VTOyBMT1NTIE9GIFVTRSwgREFUQSwgT1IKLSAq
IFBST0ZJVFM7IE9SIEJVU0lORVNTIElOVEVSUlVQVElPTikgSE9XRVZFUiBDQVVTRUQgQU5EIE9O
IEFOWSBUSEVPUlkKLSAqIE9GIExJQUJJTElUWSwgV0hFVEhFUiBJTiBDT05UUkFDVCwgU1RSSUNU
IExJQUJJTElUWSwgT1IgVE9SVAotICogKElOQ0xVRElORyBORUdMSUdFTkNFIE9SIE9USEVSV0lT
RSkgQVJJU0lORyBJTiBBTlkgV0FZIE9VVCBPRiBUSEUgVVNFCi0gKiBPRiBUSElTIFNPRlRXQVJF
LCBFVkVOIElGIEFEVklTRUQgT0YgVEhFIFBPU1NJQklMSVRZIE9GIFNVQ0ggREFNQUdFLiAKLSAq
LwotCi0jaW5jbHVkZSAiY29uZmlnLmgiCi0jaW5jbHVkZSAiTW9kdWxlUmVjb3JkLmgiCi0KLSNp
bmNsdWRlICJJZGVudGlmaWVySW5saW5lcy5oIgotCi1uYW1lc3BhY2UgSlNDIHsKLQotCi1hdXRv
IE1vZHVsZVJlY29yZDo6RXhwb3J0RW50cnk6OmNyZWF0ZUxvY2FsKGNvbnN0IElkZW50aWZpZXIm
IGV4cG9ydE5hbWUsIGNvbnN0IElkZW50aWZpZXImIGxvY2FsTmFtZSwgY29uc3QgVmFyaWFibGVF
bnZpcm9ubWVudEVudHJ5JiB2YXJpYWJsZSkgLT4gRXhwb3J0RW50cnkKLXsKLSAgICByZXR1cm4g
RXhwb3J0RW50cnkgeyBUeXBlOjpMb2NhbCwgZXhwb3J0TmFtZSwgSWRlbnRpZmllcigpLCBJZGVu
dGlmaWVyKCksIGxvY2FsTmFtZSwgdmFyaWFibGUgfTsKLX0KLQotYXV0byBNb2R1bGVSZWNvcmQ6
OkV4cG9ydEVudHJ5OjpjcmVhdGVOYW1lc3BhY2UoY29uc3QgSWRlbnRpZmllciYgZXhwb3J0TmFt
ZSwgY29uc3QgSWRlbnRpZmllciYgbW9kdWxlTmFtZSkgLT4gRXhwb3J0RW50cnkKLXsKLSAgICBy
ZXR1cm4gRXhwb3J0RW50cnkgeyBUeXBlOjpOYW1lc3BhY2UsIGV4cG9ydE5hbWUsIG1vZHVsZU5h
bWUsIElkZW50aWZpZXIoKSwgSWRlbnRpZmllcigpLCBWYXJpYWJsZUVudmlyb25tZW50RW50cnko
KSB9OwotfQotCi1hdXRvIE1vZHVsZVJlY29yZDo6RXhwb3J0RW50cnk6OmNyZWF0ZUluZGlyZWN0
KGNvbnN0IElkZW50aWZpZXImIGV4cG9ydE5hbWUsIGNvbnN0IElkZW50aWZpZXImIGltcG9ydE5h
bWUsIGNvbnN0IElkZW50aWZpZXImIG1vZHVsZU5hbWUpIC0+IEV4cG9ydEVudHJ5Ci17Ci0gICAg
cmV0dXJuIEV4cG9ydEVudHJ5IHsgVHlwZTo6SW5kaXJlY3QsIGV4cG9ydE5hbWUsIG1vZHVsZU5h
bWUsIGltcG9ydE5hbWUsIElkZW50aWZpZXIoKSwgVmFyaWFibGVFbnZpcm9ubWVudEVudHJ5KCkg
fTsKLX0KLQotc3RhdGljIFN0cmluZyBwcmludGFibGVOYW1lKGNvbnN0IFJlZlB0cjxVbmlxdWVk
U3RyaW5nSW1wbD4mIHVpZCkKLXsKLSAgICBpZiAodWlkLT5pc1N5bWJvbCgpKQotICAgICAgICBy
ZXR1cm4gdWlkLmdldCgpOwotICAgIHJldHVybiBXVEY6Om1ha2VTdHJpbmcoIiciLCBTdHJpbmco
dWlkLmdldCgpKSwgIiciKTsKLX0KLQotc3RhdGljIFN0cmluZyBwcmludGFibGVOYW1lKGNvbnN0
IElkZW50aWZpZXImIGlkZW50KQotewotICAgIHJldHVybiBwcmludGFibGVOYW1lKGlkZW50Lmlt
cGwoKSk7Ci19Ci0KLQotdm9pZCBNb2R1bGVSZWNvcmQ6OmR1bXAoKQotewotICAgIGRhdGFMb2co
IlxuQW5hbHl6aW5nIE1vZHVsZVJlY29yZFxuIik7Ci0KLSAgICBkYXRhTG9nKCIgICAgRGVwZW5k
ZW5jaWVzOiAiLCBtX3JlcXVlc3RlZE1vZHVsZXMuc2l6ZSgpLCAiIG1vZHVsZXNcbiIpOwotICAg
IGZvciAoY29uc3QgYXV0byYgbW9kdWxlTmFtZSA6IG1fcmVxdWVzdGVkTW9kdWxlcykKLSAgICAg
ICAgZGF0YUxvZygiICAgICAgbW9kdWxlKCIsIHByaW50YWJsZU5hbWUobW9kdWxlTmFtZSksICIp
XG4iKTsKLQotICAgIGRhdGFMb2coIiAgICBJbXBvcnQ6ICIsIG1faW1wb3J0RW50cmllcy5zaXpl
KCksICIgZW50cmllc1xuIik7Ci0gICAgZm9yIChjb25zdCBhdXRvJiBwYWlyIDogbV9pbXBvcnRF
bnRyaWVzKQotICAgICAgICBkYXRhTG9nKCIgICAgICBpbXBvcnQoIiwgcHJpbnRhYmxlTmFtZShw
YWlyLnZhbHVlLmltcG9ydE5hbWUpLCAiKSwgbG9jYWwoIiwgcHJpbnRhYmxlTmFtZShwYWlyLnZh
bHVlLmxvY2FsTmFtZSksICIpLCBtb2R1bGUoIiwgcHJpbnRhYmxlTmFtZShwYWlyLnZhbHVlLm1v
ZHVsZVJlcXVlc3QpLCAiKVxuIik7Ci0KLSAgICBkYXRhTG9nKCIgICAgRXhwb3J0OiAiLCBtX2V4
cG9ydEVudHJpZXMuc2l6ZSgpLCAiIGVudHJpZXNcbiIpOwotICAgIGZvciAoY29uc3QgYXV0byYg
cGFpciA6IG1fZXhwb3J0RW50cmllcykgewotICAgICAgICBjb25zdCBFeHBvcnRFbnRyeSYgZW50
cnkgPSBwYWlyLnZhbHVlOwotICAgICAgICBzd2l0Y2ggKGVudHJ5LnR5cGUpIHsKLSAgICAgICAg
Y2FzZSBFeHBvcnRFbnRyeTo6VHlwZTo6TG9jYWw6Ci0gICAgICAgICAgICBkYXRhTG9nKCIgICAg
ICBbTG9jYWxdICIsICJleHBvcnQoIiwgcHJpbnRhYmxlTmFtZShlbnRyeS5leHBvcnROYW1lKSwg
IiksIGxvY2FsKCIsIHByaW50YWJsZU5hbWUoZW50cnkubG9jYWxOYW1lKSwgIilcbiIpOwotICAg
ICAgICAgICAgYnJlYWs7Ci0KLSAgICAgICAgY2FzZSBFeHBvcnRFbnRyeTo6VHlwZTo6TmFtZXNw
YWNlOgotICAgICAgICAgICAgZGF0YUxvZygiICAgICAgW05hbWVzcGFjZV0gIiwgImV4cG9ydCgi
LCBwcmludGFibGVOYW1lKGVudHJ5LmV4cG9ydE5hbWUpLCAiKSwgbW9kdWxlKCIsIHByaW50YWJs
ZU5hbWUoZW50cnkubW9kdWxlTmFtZSksICIpXG4iKTsKLSAgICAgICAgICAgIGJyZWFrOwotCi0g
ICAgICAgIGNhc2UgRXhwb3J0RW50cnk6OlR5cGU6OkluZGlyZWN0OgotICAgICAgICAgICAgZGF0
YUxvZygiICAgICAgW0luZGlyZWN0XSAiLCAiZXhwb3J0KCIsIHByaW50YWJsZU5hbWUoZW50cnku
ZXhwb3J0TmFtZSksICIpLCBpbXBvcnQoIiwgcHJpbnRhYmxlTmFtZShlbnRyeS5pbXBvcnROYW1l
KSwgIiksIG1vZHVsZSgiLCBwcmludGFibGVOYW1lKGVudHJ5Lm1vZHVsZU5hbWUpLCAiKVxuIik7
Ci0gICAgICAgICAgICBicmVhazsKLSAgICAgICAgfQotICAgIH0KLSAgICBmb3IgKGNvbnN0IGF1
dG8mIG1vZHVsZU5hbWUgOiBtX3N0YXJFeHBvcnRFbnRyaWVzKQotICAgICAgICBkYXRhTG9nKCIg
ICAgICBbU3Rhcl0gbW9kdWxlKCIsIHByaW50YWJsZU5hbWUobW9kdWxlTmFtZS5nZXQoKSksICIp
XG4iKTsKLX0KLQotfSAvLyBuYW1lc3BhY2UgSlNDCmRpZmYgLS1naXQgYS9Tb3VyY2UvSmF2YVNj
cmlwdENvcmUvcGFyc2VyL01vZHVsZVJlY29yZC5oIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL3Bh
cnNlci9Nb2R1bGVSZWNvcmQuaApkZWxldGVkIGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggZWYwODFj
MDNiMGE1YmRlNmYxNTU2MjlkZjNmNTA2Y2FmM2NiMTcxNC4uMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMAotLS0gYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvcGFyc2VyL01v
ZHVsZVJlY29yZC5oCisrKyAvZGV2L251bGwKQEAgLTEsMTI4ICswLDAgQEAKLS8qCi0gKiBDb3B5
cmlnaHQgKEMpIDIwMTUgQXBwbGUgSW5jLiBBbGwgcmlnaHRzIHJlc2VydmVkLgotICoKLSAqIFJl
ZGlzdHJpYnV0aW9uIGFuZCB1c2UgaW4gc291cmNlIGFuZCBiaW5hcnkgZm9ybXMsIHdpdGggb3Ig
d2l0aG91dAotICogbW9kaWZpY2F0aW9uLCBhcmUgcGVybWl0dGVkIHByb3ZpZGVkIHRoYXQgdGhl
IGZvbGxvd2luZyBjb25kaXRpb25zCi0gKiBhcmUgbWV0OgotICogMS4gUmVkaXN0cmlidXRpb25z
IG9mIHNvdXJjZSBjb2RlIG11c3QgcmV0YWluIHRoZSBhYm92ZSBjb3B5cmlnaHQKLSAqICAgIG5v
dGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1l
ci4KLSAqIDIuIFJlZGlzdHJpYnV0aW9ucyBpbiBiaW5hcnkgZm9ybSBtdXN0IHJlcHJvZHVjZSB0
aGUgYWJvdmUgY29weXJpZ2h0Ci0gKiAgICBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25z
IGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIgaW4gdGhlCi0gKiAgICBkb2N1bWVudGF0aW9u
IGFuZC9vciBvdGhlciBtYXRlcmlhbHMgcHJvdmlkZWQgd2l0aCB0aGUgZGlzdHJpYnV0aW9uLgot
ICoKLSAqIFRISVMgU09GVFdBUkUgSVMgUFJPVklERUQgQlkgQVBQTEUgSU5DLiBgYEFTIElTJycg
QU5EIEFOWQotICogRVhQUkVTUyBPUiBJTVBMSUVEIFdBUlJBTlRJRVMsIElOQ0xVRElORywgQlVU
IE5PVCBMSU1JVEVEIFRPLCBUSEUKLSAqIElNUExJRUQgV0FSUkFOVElFUyBPRiBNRVJDSEFOVEFC
SUxJVFkgQU5EIEZJVE5FU1MgRk9SIEEgUEFSVElDVUxBUgotICogUFVSUE9TRSBBUkUgRElTQ0xB
SU1FRC4gIElOIE5PIEVWRU5UIFNIQUxMIEFQUExFIElOQy4gT1IKLSAqIENPTlRSSUJVVE9SUyBC
RSBMSUFCTEUgRk9SIEFOWSBESVJFQ1QsIElORElSRUNULCBJTkNJREVOVEFMLCBTUEVDSUFMLAot
ICogRVhFTVBMQVJZLCBPUiBDT05TRVFVRU5USUFMIERBTUFHRVMgKElOQ0xVRElORywgQlVUIE5P
VCBMSU1JVEVEIFRPLAotICogUFJPQ1VSRU1FTlQgT0YgU1VCU1RJVFVURSBHT09EUyBPUiBTRVJW
SUNFUzsgTE9TUyBPRiBVU0UsIERBVEEsIE9SCi0gKiBQUk9GSVRTOyBPUiBCVVNJTkVTUyBJTlRF
UlJVUFRJT04pIEhPV0VWRVIgQ0FVU0VEIEFORCBPTiBBTlkgVEhFT1JZCi0gKiBPRiBMSUFCSUxJ
VFksIFdIRVRIRVIgSU4gQ09OVFJBQ1QsIFNUUklDVCBMSUFCSUxJVFksIE9SIFRPUlQKLSAqIChJ
TkNMVURJTkcgTkVHTElHRU5DRSBPUiBPVEhFUldJU0UpIEFSSVNJTkcgSU4gQU5ZIFdBWSBPVVQg
T0YgVEhFIFVTRQotICogT0YgVEhJUyBTT0ZUV0FSRSwgRVZFTiBJRiBBRFZJU0VEIE9GIFRIRSBQ
T1NTSUJJTElUWSBPRiBTVUNIIERBTUFHRS4KLSAqLwotCi0jaWZuZGVmIE1vZHVsZVJlY29yZF9o
Ci0jZGVmaW5lIE1vZHVsZVJlY29yZF9oCi0KLSNpbmNsdWRlICJOb2Rlcy5oIgotI2luY2x1ZGUg
PHd0Zi9IYXNoTWFwLmg+Ci0jaW5jbHVkZSA8d3RmL0xpc3RIYXNoU2V0Lmg+Ci0KLW5hbWVzcGFj
ZSBKU0MgewotCi0vLyBCYXNlZCBvbiB0aGUgU291cmNlIFRleHQgTW9kdWxlIFJlY29yZAotLy8g
aHR0cDovL3d3dy5lY21hLWludGVybmF0aW9uYWwub3JnL2VjbWEtMjYyLzYuMC8jc2VjLXNvdXJj
ZS10ZXh0LW1vZHVsZS1yZWNvcmRzCi1jbGFzcyBNb2R1bGVSZWNvcmQgOiBwdWJsaWMgUmVmQ291
bnRlZDxNb2R1bGVSZWNvcmQ+IHsKLXB1YmxpYzoKLSAgICBzdHJ1Y3QgRXhwb3J0RW50cnkgewot
ICAgICAgICBlbnVtIGNsYXNzIFR5cGUgewotICAgICAgICAgICAgTG9jYWwsCi0gICAgICAgICAg
ICBOYW1lc3BhY2UsCi0gICAgICAgICAgICBJbmRpcmVjdAotICAgICAgICB9OwotCi0gICAgICAg
IHN0YXRpYyBFeHBvcnRFbnRyeSBjcmVhdGVMb2NhbChjb25zdCBJZGVudGlmaWVyJiBleHBvcnRO
YW1lLCBjb25zdCBJZGVudGlmaWVyJiBsb2NhbE5hbWUsIGNvbnN0IFZhcmlhYmxlRW52aXJvbm1l
bnRFbnRyeSYpOwotICAgICAgICBzdGF0aWMgRXhwb3J0RW50cnkgY3JlYXRlTmFtZXNwYWNlKGNv
bnN0IElkZW50aWZpZXImIGV4cG9ydE5hbWUsIGNvbnN0IElkZW50aWZpZXImIG1vZHVsZU5hbWUp
OwotICAgICAgICBzdGF0aWMgRXhwb3J0RW50cnkgY3JlYXRlSW5kaXJlY3QoY29uc3QgSWRlbnRp
ZmllciYgZXhwb3J0TmFtZSwgY29uc3QgSWRlbnRpZmllciYgaW1wb3J0TmFtZSwgY29uc3QgSWRl
bnRpZmllciYgbW9kdWxlTmFtZSk7Ci0KLSAgICAgICAgVHlwZSB0eXBlOwotICAgICAgICBJZGVu
dGlmaWVyIGV4cG9ydE5hbWU7Ci0gICAgICAgIElkZW50aWZpZXIgbW9kdWxlTmFtZTsKLSAgICAg
ICAgSWRlbnRpZmllciBpbXBvcnROYW1lOwotICAgICAgICBJZGVudGlmaWVyIGxvY2FsTmFtZTsK
LSAgICAgICAgVmFyaWFibGVFbnZpcm9ubWVudEVudHJ5IHZhcmlhYmxlOwotICAgIH07Ci0KLSAg
ICBzdHJ1Y3QgSW1wb3J0RW50cnkgewotICAgICAgICBJZGVudGlmaWVyIG1vZHVsZVJlcXVlc3Q7
Ci0gICAgICAgIElkZW50aWZpZXIgaW1wb3J0TmFtZTsKLSAgICAgICAgSWRlbnRpZmllciBsb2Nh
bE5hbWU7Ci0KLSAgICAgICAgYm9vbCBpc05hbWVzcGFjZShWTSYgdm0pIGNvbnN0Ci0gICAgICAg
IHsKLSAgICAgICAgICAgIHJldHVybiBpbXBvcnROYW1lID09IHZtLnByb3BlcnR5TmFtZXMtPnRp
bWVzSWRlbnRpZmllcjsKLSAgICAgICAgfQotICAgIH07Ci0KLSAgICB0eXBlZGVmIFdURjo6TGlz
dEhhc2hTZXQ8UmVmUHRyPFVuaXF1ZWRTdHJpbmdJbXBsPiwgSWRlbnRpZmllclJlcEhhc2g+IE9y
ZGVyZWRJZGVudGlmaWVyU2V0OwotICAgIHR5cGVkZWYgSGFzaE1hcDxSZWZQdHI8VW5pcXVlZFN0
cmluZ0ltcGw+LCBJbXBvcnRFbnRyeSwgSWRlbnRpZmllclJlcEhhc2gsIEhhc2hUcmFpdHM8UmVm
UHRyPFVuaXF1ZWRTdHJpbmdJbXBsPj4+IEltcG9ydE1hcDsKLSAgICB0eXBlZGVmIEhhc2hNYXA8
UmVmUHRyPFVuaXF1ZWRTdHJpbmdJbXBsPiwgRXhwb3J0RW50cnksIElkZW50aWZpZXJSZXBIYXNo
LCBIYXNoVHJhaXRzPFJlZlB0cjxVbmlxdWVkU3RyaW5nSW1wbD4+PiBFeHBvcnRNYXA7Ci0KLSAg
ICBzdGF0aWMgUmVmPE1vZHVsZVJlY29yZD4gY3JlYXRlKCkKLSAgICB7Ci0gICAgICAgIHJldHVy
biBhZG9wdFJlZigqbmV3IE1vZHVsZVJlY29yZCk7Ci0gICAgfQotCi0gICAgdm9pZCBhcHBlbmRS
ZXF1ZXN0ZWRNb2R1bGUoY29uc3QgSWRlbnRpZmllciYpOwotICAgIHZvaWQgYWRkU3RhckV4cG9y
dEVudHJ5KGNvbnN0IElkZW50aWZpZXImKTsKLSAgICB2b2lkIGFkZEltcG9ydEVudHJ5KGNvbnN0
IEltcG9ydEVudHJ5Jik7Ci0gICAgdm9pZCBhZGRFeHBvcnRFbnRyeShjb25zdCBFeHBvcnRFbnRy
eSYpOwotCi0gICAgY29uc3QgSW1wb3J0RW50cnkmIGxvb2tVcEltcG9ydEVudHJ5KGNvbnN0IFJl
ZlB0cjxVbmlxdWVkU3RyaW5nSW1wbD4mIGxvY2FsTmFtZSk7Ci0KLSAgICB2b2lkIGR1bXAoKTsK
LQotcHJpdmF0ZToKLSAgICAvLyBNYXAgbG9jYWxOYW1lIC0+IEltcG9ydEVudHJ5LgotICAgIElt
cG9ydE1hcCBtX2ltcG9ydEVudHJpZXM7Ci0KLSAgICAvLyBNYXAgZXhwb3J0TmFtZSAtPiBFeHBv
cnRFbnRyeS4KLSAgICBFeHBvcnRNYXAgbV9leHBvcnRFbnRyaWVzOwotCi0gICAgSWRlbnRpZmll
clNldCBtX3N0YXJFeHBvcnRFbnRyaWVzOwotCi0gICAgLy8gU2F2ZSB0aGUgb2NjdXJyZW5jZSBv
cmRlciBzaW5jZSB0aGUgbW9kdWxlIGxvYWRlciBsb2FkcyBhbmQgcnVucyB0aGUgbW9kdWxlcyBp
biB0aGlzIG9yZGVyLgotICAgIC8vIGh0dHA6Ly93d3cuZWNtYS1pbnRlcm5hdGlvbmFsLm9yZy9l
Y21hLTI2Mi82LjAvI3NlYy1tb2R1bGVldmFsdWF0aW9uCi0gICAgT3JkZXJlZElkZW50aWZpZXJT
ZXQgbV9yZXF1ZXN0ZWRNb2R1bGVzOwotfTsKLQotaW5saW5lIHZvaWQgTW9kdWxlUmVjb3JkOjph
cHBlbmRSZXF1ZXN0ZWRNb2R1bGUoY29uc3QgSWRlbnRpZmllciYgbW9kdWxlTmFtZSkKLXsKLSAg
ICBtX3JlcXVlc3RlZE1vZHVsZXMuYWRkKG1vZHVsZU5hbWUuaW1wbCgpKTsKLX0KLQotaW5saW5l
IHZvaWQgTW9kdWxlUmVjb3JkOjphZGRJbXBvcnRFbnRyeShjb25zdCBJbXBvcnRFbnRyeSYgZW50
cnkpCi17Ci0gICAgbV9pbXBvcnRFbnRyaWVzLmFkZChlbnRyeS5sb2NhbE5hbWUuaW1wbCgpLCBl
bnRyeSk7Ci19Ci0KLWlubGluZSB2b2lkIE1vZHVsZVJlY29yZDo6YWRkRXhwb3J0RW50cnkoY29u
c3QgRXhwb3J0RW50cnkmIGVudHJ5KQotewotICAgIG1fZXhwb3J0RW50cmllcy5hZGQoZW50cnku
ZXhwb3J0TmFtZS5pbXBsKCksIGVudHJ5KTsKLX0KLQotaW5saW5lIHZvaWQgTW9kdWxlUmVjb3Jk
OjphZGRTdGFyRXhwb3J0RW50cnkoY29uc3QgSWRlbnRpZmllciYgbW9kdWxlTmFtZSkKLXsKLSAg
ICBtX3N0YXJFeHBvcnRFbnRyaWVzLmFkZChtb2R1bGVOYW1lLmltcGwoKSk7Ci19Ci0KLWlubGlu
ZSBhdXRvIE1vZHVsZVJlY29yZDo6bG9va1VwSW1wb3J0RW50cnkoY29uc3QgUmVmUHRyPFVuaXF1
ZWRTdHJpbmdJbXBsPiYgbG9jYWxOYW1lKSAtPiBjb25zdCBJbXBvcnRFbnRyeSYKLXsKLSAgICBy
ZXR1cm4gKCptX2ltcG9ydEVudHJpZXMuZmluZChsb2NhbE5hbWUpKS52YWx1ZTsKLX0KLQotfSAv
LyBuYW1lc3BhY2UgSlNDCi0KLSNlbmRpZiAvLyBNb2R1bGVSZWNvcmRfaApkaWZmIC0tZ2l0IGEv
U291cmNlL0phdmFTY3JpcHRDb3JlL3BhcnNlci9Ob2Rlcy5oIGIvU291cmNlL0phdmFTY3JpcHRD
b3JlL3BhcnNlci9Ob2Rlcy5oCmluZGV4IGVkNWZjMjcyNTM0YTI0NjQyZmQ2MmFlYjFhMWRmOTNl
NjhjYWNjMjMuLjVkMGI3NGU1OGRkZWQ2ZWVlOTIzYTNiYzA0MjhiNzZjZWU4YzFhZjIgMTAwNjQ0
Ci0tLSBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9wYXJzZXIvTm9kZXMuaAorKysgYi9Tb3VyY2Uv
SmF2YVNjcmlwdENvcmUvcGFyc2VyL05vZGVzLmgKQEAgLTc5LDggKzc5LDYgQEAgbmFtZXNwYWNl
IEpTQyB7CiAgICAgfTsKICAgICBpbmxpbmUgRmFsbFRocm91Z2hNb2RlIGludmVydChGYWxsVGhy
b3VnaE1vZGUgZmFsbFRocm91Z2hNb2RlKSB7IHJldHVybiBzdGF0aWNfY2FzdDxGYWxsVGhyb3Vn
aE1vZGU+KCFmYWxsVGhyb3VnaE1vZGUpOyB9CiAKLSAgICB0eXBlZGVmIEhhc2hTZXQ8UmVmUHRy
PFVuaXF1ZWRTdHJpbmdJbXBsPiwgSWRlbnRpZmllclJlcEhhc2g+IElkZW50aWZpZXJTZXQ7Ci0K
ICAgICBuYW1lc3BhY2UgRGVjbGFyYXRpb25TdGFja3MgewogICAgICAgICB0eXBlZGVmIFZlY3Rv
cjxGdW5jdGlvbk1ldGFkYXRhTm9kZSo+IEZ1bmN0aW9uU3RhY2s7CiAgICAgfQpkaWZmIC0tZ2l0
IGEvU291cmNlL0phdmFTY3JpcHRDb3JlL3BhcnNlci9Ob2Rlc0FuYWx5emVNb2R1bGUuY3BwIGIv
U291cmNlL0phdmFTY3JpcHRDb3JlL3BhcnNlci9Ob2Rlc0FuYWx5emVNb2R1bGUuY3BwCmluZGV4
IDYzM2RlYWVjZTZhZjY2NjU5ZDBlNzZhYzFhYTQxNjE1OWFiNzVhMzUuLmVkNDYxZGEyNjgzNGZi
MzNjOTQ0MDIxNGE5OTVlNDVjOGE4MTk0NTUgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9KYXZhU2NyaXB0
Q29yZS9wYXJzZXIvTm9kZXNBbmFseXplTW9kdWxlLmNwcAorKysgYi9Tb3VyY2UvSmF2YVNjcmlw
dENvcmUvcGFyc2VyL05vZGVzQW5hbHl6ZU1vZHVsZS5jcHAKQEAgLTI3LDggKzI3LDkgQEAKICNp
bmNsdWRlICJOb2Rlcy5oIgogI2luY2x1ZGUgIk5vZGVDb25zdHJ1Y3RvcnMuaCIKIAorI2luY2x1
ZGUgIkpTQ0pTVmFsdWVJbmxpbmVzLmgiCisjaW5jbHVkZSAiSlNNb2R1bGVSZWNvcmQuaCIKICNp
bmNsdWRlICJNb2R1bGVBbmFseXplci5oIgotI2luY2x1ZGUgIk1vZHVsZVJlY29yZC5oIgogCiBu
YW1lc3BhY2UgSlNDIHsKIApAQCAtNDgsOSArNDksOSBAQCB2b2lkIFNvdXJjZUVsZW1lbnRzOjph
bmFseXplTW9kdWxlKE1vZHVsZUFuYWx5emVyJiBhbmFseXplcikKIAogdm9pZCBJbXBvcnREZWNs
YXJhdGlvbk5vZGU6OmFuYWx5emVNb2R1bGUoTW9kdWxlQW5hbHl6ZXImIGFuYWx5emVyKQogewot
ICAgIGFuYWx5emVyLm1vZHVsZVJlY29yZCgpLmFwcGVuZFJlcXVlc3RlZE1vZHVsZShtX21vZHVs
ZU5hbWUtPm1vZHVsZU5hbWUoKSk7CisgICAgYW5hbHl6ZXIubW9kdWxlUmVjb3JkKCktPmFwcGVu
ZFJlcXVlc3RlZE1vZHVsZShtX21vZHVsZU5hbWUtPm1vZHVsZU5hbWUoKSk7CiAgICAgZm9yIChh
dXRvKiBzcGVjaWZpZXIgOiBtX3NwZWNpZmllckxpc3QtPnNwZWNpZmllcnMoKSkgewotICAgICAg
ICBhbmFseXplci5tb2R1bGVSZWNvcmQoKS5hZGRJbXBvcnRFbnRyeShNb2R1bGVSZWNvcmQ6Oklt
cG9ydEVudHJ5IHsKKyAgICAgICAgYW5hbHl6ZXIubW9kdWxlUmVjb3JkKCktPmFkZEltcG9ydEVu
dHJ5KEpTTW9kdWxlUmVjb3JkOjpJbXBvcnRFbnRyeSB7CiAgICAgICAgICAgICBtX21vZHVsZU5h
bWUtPm1vZHVsZU5hbWUoKSwKICAgICAgICAgICAgIHNwZWNpZmllci0+aW1wb3J0ZWROYW1lKCks
CiAgICAgICAgICAgICBzcGVjaWZpZXItPmxvY2FsTmFtZSgpCkBAIC02MCw4ICs2MSw4IEBAIHZv
aWQgSW1wb3J0RGVjbGFyYXRpb25Ob2RlOjphbmFseXplTW9kdWxlKE1vZHVsZUFuYWx5emVyJiBh
bmFseXplcikKIAogdm9pZCBFeHBvcnRBbGxEZWNsYXJhdGlvbk5vZGU6OmFuYWx5emVNb2R1bGUo
TW9kdWxlQW5hbHl6ZXImIGFuYWx5emVyKQogewotICAgIGFuYWx5emVyLm1vZHVsZVJlY29yZCgp
LmFwcGVuZFJlcXVlc3RlZE1vZHVsZShtX21vZHVsZU5hbWUtPm1vZHVsZU5hbWUoKSk7Ci0gICAg
YW5hbHl6ZXIubW9kdWxlUmVjb3JkKCkuYWRkU3RhckV4cG9ydEVudHJ5KG1fbW9kdWxlTmFtZS0+
bW9kdWxlTmFtZSgpKTsKKyAgICBhbmFseXplci5tb2R1bGVSZWNvcmQoKS0+YXBwZW5kUmVxdWVz
dGVkTW9kdWxlKG1fbW9kdWxlTmFtZS0+bW9kdWxlTmFtZSgpKTsKKyAgICBhbmFseXplci5tb2R1
bGVSZWNvcmQoKS0+YWRkU3RhckV4cG9ydEVudHJ5KG1fbW9kdWxlTmFtZS0+bW9kdWxlTmFtZSgp
KTsKIH0KIAogdm9pZCBFeHBvcnREZWZhdWx0RGVjbGFyYXRpb25Ob2RlOjphbmFseXplTW9kdWxl
KE1vZHVsZUFuYWx5emVyJiBhbmFseXplcikKQEAgLTc2LDcgKzc3LDcgQEAgdm9pZCBFeHBvcnRM
b2NhbERlY2xhcmF0aW9uTm9kZTo6YW5hbHl6ZU1vZHVsZShNb2R1bGVBbmFseXplciYpCiB2b2lk
IEV4cG9ydE5hbWVkRGVjbGFyYXRpb25Ob2RlOjphbmFseXplTW9kdWxlKE1vZHVsZUFuYWx5emVy
JiBhbmFseXplcikKIHsKICAgICBpZiAobV9tb2R1bGVOYW1lKQotICAgICAgICBhbmFseXplci5t
b2R1bGVSZWNvcmQoKS5hcHBlbmRSZXF1ZXN0ZWRNb2R1bGUobV9tb2R1bGVOYW1lLT5tb2R1bGVO
YW1lKCkpOworICAgICAgICBhbmFseXplci5tb2R1bGVSZWNvcmQoKS0+YXBwZW5kUmVxdWVzdGVk
TW9kdWxlKG1fbW9kdWxlTmFtZS0+bW9kdWxlTmFtZSgpKTsKIAogICAgIGZvciAoYXV0byogc3Bl
Y2lmaWVyIDogbV9zcGVjaWZpZXJMaXN0LT5zcGVjaWZpZXJzKCkpIHsKICAgICAgICAgaWYgKG1f
bW9kdWxlTmFtZSkgewpAQCAtODQsNyArODUsNyBAQCB2b2lkIEV4cG9ydE5hbWVkRGVjbGFyYXRp
b25Ob2RlOjphbmFseXplTW9kdWxlKE1vZHVsZUFuYWx5emVyJiBhbmFseXplcikKICAgICAgICAg
ICAgIC8vCiAgICAgICAgICAgICAvLyBJbiB0aGlzIGNhc2UsIG5vIGxvY2FsIHZhcmlhYmxlIG5h
bWVzIGFyZSBpbXBvcnRlZCBpbnRvIHRoZSBjdXJyZW50IG1vZHVsZS4KICAgICAgICAgICAgIC8v
ICJ2IiBpbmRpcmVjdGx5IHBvaW50cyB0aGUgYmluZGluZyBpbiAibW9kIi4KLSAgICAgICAgICAg
IGFuYWx5emVyLm1vZHVsZVJlY29yZCgpLmFkZEV4cG9ydEVudHJ5KE1vZHVsZVJlY29yZDo6RXhw
b3J0RW50cnk6OmNyZWF0ZUluZGlyZWN0KHNwZWNpZmllci0+ZXhwb3J0ZWROYW1lKCksIHNwZWNp
Zmllci0+bG9jYWxOYW1lKCksIG1fbW9kdWxlTmFtZS0+bW9kdWxlTmFtZSgpKSk7CisgICAgICAg
ICAgICBhbmFseXplci5tb2R1bGVSZWNvcmQoKS0+YWRkRXhwb3J0RW50cnkoSlNNb2R1bGVSZWNv
cmQ6OkV4cG9ydEVudHJ5OjpjcmVhdGVJbmRpcmVjdChzcGVjaWZpZXItPmV4cG9ydGVkTmFtZSgp
LCBzcGVjaWZpZXItPmxvY2FsTmFtZSgpLCBtX21vZHVsZU5hbWUtPm1vZHVsZU5hbWUoKSkpOwog
ICAgICAgICAgICAgY29udGludWU7CiAgICAgICAgIH0KIApkaWZmIC0tZ2l0IGEvU291cmNlL0ph
dmFTY3JpcHRDb3JlL3J1bnRpbWUvQ29tbW9uSWRlbnRpZmllcnMuY3BwIGIvU291cmNlL0phdmFT
Y3JpcHRDb3JlL3J1bnRpbWUvQ29tbW9uSWRlbnRpZmllcnMuY3BwCmluZGV4IGZjNmU2MmNhMDQ1
ZTM2MjljZjJhZDNiNmJmY2I3M2Q1ZGRmZjBjZTEuLmFhMzkyY2ViOGQxYTA2NWE5MjUyYWE3NzQ0
ZGFiOGQ5YjE2MDU0ZTkgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1l
L0NvbW1vbklkZW50aWZpZXJzLmNwcAorKysgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGlt
ZS9Db21tb25JZGVudGlmaWVycy5jcHAKQEAgLTY4LDE0ICs2OCwxNCBAQCBib29sIENvbW1vbklk
ZW50aWZpZXJzOjppc1ByaXZhdGVOYW1lKGNvbnN0IElkZW50aWZpZXImIGlkZW50KSBjb25zdAog
ICAgIHJldHVybiBtX2J1aWx0aW5OYW1lcy0+aXNQcml2YXRlTmFtZShpZGVudCk7CiB9CiAKLWNv
bnN0IElkZW50aWZpZXIqIENvbW1vbklkZW50aWZpZXJzOjpnZXRQcml2YXRlTmFtZShjb25zdCBJ
ZGVudGlmaWVyJiBpZGVudCkgY29uc3QKK2NvbnN0IElkZW50aWZpZXIqIENvbW1vbklkZW50aWZp
ZXJzOjpsb29rVXBQcml2YXRlTmFtZShjb25zdCBJZGVudGlmaWVyJiBpZGVudCkgY29uc3QKIHsK
LSAgICByZXR1cm4gbV9idWlsdGluTmFtZXMtPmdldFByaXZhdGVOYW1lKGlkZW50KTsKKyAgICBy
ZXR1cm4gbV9idWlsdGluTmFtZXMtPmxvb2tVcFByaXZhdGVOYW1lKGlkZW50KTsKIH0KICAgICAK
LUlkZW50aWZpZXIgQ29tbW9uSWRlbnRpZmllcnM6OmdldFB1YmxpY05hbWUoY29uc3QgSWRlbnRp
ZmllciYgaWRlbnQpIGNvbnN0CitJZGVudGlmaWVyIENvbW1vbklkZW50aWZpZXJzOjpsb29rVXBQ
dWJsaWNOYW1lKGNvbnN0IElkZW50aWZpZXImIGlkZW50KSBjb25zdAogewotICAgIHJldHVybiBt
X2J1aWx0aW5OYW1lcy0+Z2V0UHVibGljTmFtZShpZGVudCk7CisgICAgcmV0dXJuIG1fYnVpbHRp
bk5hbWVzLT5sb29rVXBQdWJsaWNOYW1lKGlkZW50KTsKIH0KIAogCmRpZmYgLS1naXQgYS9Tb3Vy
Y2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9Db21tb25JZGVudGlmaWVycy5oIGIvU291cmNlL0ph
dmFTY3JpcHRDb3JlL3J1bnRpbWUvQ29tbW9uSWRlbnRpZmllcnMuaAppbmRleCAzNDQ3YjM5OGZk
MDYxODA1OTA5ZTZmMDIyZTNkNjY1MjNiYWM0Njk4Li5kNTlkNDQ0OGQyOTNhMTQ3NWMwMWI3Yzdl
NjZhZWY3OTYyZWIxMjZkIDEwMDY0NAotLS0gYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGlt
ZS9Db21tb25JZGVudGlmaWVycy5oCisrKyBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1l
L0NvbW1vbklkZW50aWZpZXJzLmgKQEAgLTQyLDYgKzQyLDcgQEAKICAgICBtYWNybyhJbmZpbml0
eSkgXAogICAgIG1hY3JvKEludGwpIFwKICAgICBtYWNybyhKU09OKSBcCisgICAgbWFjcm8oTG9h
ZGVyKSBcCiAgICAgbWFjcm8oTWFwKVwKICAgICBtYWNybyhNYXBJdGVyYXRvcilcCiAgICAgbWFj
cm8oTWF0aCkgXApAQCAtMjgxLDYgKzI4Miw3IEBACiAgICAgbWFjcm8oTnVtYmVyKSBcCiAgICAg
bWFjcm8oQXJyYXkpIFwKICAgICBtYWNybyhTdHJpbmcpIFwKKyAgICBtYWNybyhNYXApIFwKICAg
ICBtYWNybyhQcm9taXNlKSBcCiAgICAgbWFjcm8oYWJzKSBcCiAgICAgbWFjcm8oZmxvb3IpIFwK
QEAgLTMwMiw2ICszMDQsOCBAQAogICAgIG1hY3JvKGNhcGFiaWxpdGllcykgXAogICAgIG1hY3Jv
KHN0YXJEZWZhdWx0KSBcCiAgICAgbWFjcm8oSW5zcGVjdG9ySW5zdHJ1bWVudGF0aW9uKSBcCisg
ICAgbWFjcm8oZ2V0KSBcCisgICAgbWFjcm8oc2V0KSBcCiAKIAogbmFtZXNwYWNlIEpTQyB7CkBA
IC0zNDgsOCArMzUyLDggQEAgbmFtZXNwYWNlIEpTQyB7CiAgICAgICAgIGJvb2wgaXNQcml2YXRl
TmFtZShVbmlxdWVkU3RyaW5nSW1wbCYgdWlkKSBjb25zdDsKICAgICAgICAgYm9vbCBpc1ByaXZh
dGVOYW1lKGNvbnN0IElkZW50aWZpZXImKSBjb25zdDsKIAotICAgICAgICBjb25zdCBJZGVudGlm
aWVyKiBnZXRQcml2YXRlTmFtZShjb25zdCBJZGVudGlmaWVyJikgY29uc3Q7Ci0gICAgICAgIElk
ZW50aWZpZXIgZ2V0UHVibGljTmFtZShjb25zdCBJZGVudGlmaWVyJikgY29uc3Q7CisgICAgICAg
IGNvbnN0IElkZW50aWZpZXIqIGxvb2tVcFByaXZhdGVOYW1lKGNvbnN0IElkZW50aWZpZXImKSBj
b25zdDsKKyAgICAgICAgSWRlbnRpZmllciBsb29rVXBQdWJsaWNOYW1lKGNvbnN0IElkZW50aWZp
ZXImKSBjb25zdDsKIAogICAgICAgICBjb25zdCBCeXRlY29kZUludHJpbnNpY1JlZ2lzdHJ5JiBi
eXRlY29kZUludHJpbnNpY1JlZ2lzdHJ5KCkgY29uc3QgeyByZXR1cm4gbV9ieXRlY29kZUludHJp
bnNpY1JlZ2lzdHJ5OyB9CiAKZGlmZiAtLWdpdCBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50
aW1lL0NvbXBsZXRpb24uY3BwIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvQ29tcGxl
dGlvbi5jcHAKaW5kZXggYTNkYWVlNjAzNDNhYzE0YjE0YWQwMzA0ZWJkYzlhMjVhYWIxNTcyMy4u
YmQ1NjFjZGZhZDZhYWE2NzVhOTZjY2IwM2JiMzRhNGFlMmQ5MTM5ZSAxMDA2NDQKLS0tIGEvU291
cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvQ29tcGxldGlvbi5jcHAKKysrIGIvU291cmNlL0ph
dmFTY3JpcHRDb3JlL3J1bnRpbWUvQ29tcGxldGlvbi5jcHAKQEAgLTI4LDExICsyOCwxMiBAQAog
I2luY2x1ZGUgIkRlYnVnZ2VyLmgiCiAjaW5jbHVkZSAiRXhjZXB0aW9uLmgiCiAjaW5jbHVkZSAi
SW50ZXJwcmV0ZXIuaCIKKyNpbmNsdWRlICJKU0NJbmxpbmVzLmgiCiAjaW5jbHVkZSAiSlNHbG9i
YWxPYmplY3QuaCIKICNpbmNsdWRlICJKU0xvY2suaCIKLSNpbmNsdWRlICJKU0NJbmxpbmVzLmgi
CisjaW5jbHVkZSAiSlNNb2R1bGVSZWNvcmQuaCIKICNpbmNsdWRlICJNb2R1bGVBbmFseXplci5o
IgotI2luY2x1ZGUgIk1vZHVsZVJlY29yZC5oIgorI2luY2x1ZGUgIk1vZHVsZUxvYWRlck9iamVj
dC5oIgogI2luY2x1ZGUgIlBhcnNlci5oIgogI2luY2x1ZGUgPHd0Zi9XVEZUaHJlYWREYXRhLmg+
CiAKQEAgLTYzLDggKzY0LDkgQEAgYm9vbCBjaGVja1N5bnRheChWTSYgdm0sIGNvbnN0IFNvdXJj
ZUNvZGUmIHNvdXJjZSwgUGFyc2VyRXJyb3ImIGVycm9yKQogICAgICAgICBKU1BhcnNlclN0cmlj
dE1vZGU6Ok5vdFN0cmljdCwgU291cmNlUGFyc2VNb2RlOjpQcm9ncmFtTW9kZSwgZXJyb3IpOwog
fQogCi1ib29sIGNoZWNrTW9kdWxlU3ludGF4KFZNJiB2bSwgY29uc3QgU291cmNlQ29kZSYgc291
cmNlLCBQYXJzZXJFcnJvciYgZXJyb3IpCitib29sIGNoZWNrTW9kdWxlU3ludGF4KEV4ZWNTdGF0
ZSogZXhlYywgY29uc3QgU291cmNlQ29kZSYgc291cmNlLCBQYXJzZXJFcnJvciYgZXJyb3IpCiB7
CisgICAgVk0mIHZtID0gZXhlYy0+dm0oKTsKICAgICBKU0xvY2tIb2xkZXIgbG9jayh2bSk7CiAg
ICAgUkVMRUFTRV9BU1NFUlQodm0uYXRvbWljU3RyaW5nVGFibGUoKSA9PSB3dGZUaHJlYWREYXRh
KCkuYXRvbWljU3RyaW5nVGFibGUoKSk7CiAgICAgc3RkOjp1bmlxdWVfcHRyPE1vZHVsZVByb2dy
YW1Ob2RlPiBtb2R1bGVQcm9ncmFtTm9kZSA9IHBhcnNlPE1vZHVsZVByb2dyYW1Ob2RlPigKQEAg
LTczLDcgKzc1LDcgQEAgYm9vbCBjaGVja01vZHVsZVN5bnRheChWTSYgdm0sIGNvbnN0IFNvdXJj
ZUNvZGUmIHNvdXJjZSwgUGFyc2VyRXJyb3ImIGVycm9yKQogICAgIGlmICghbW9kdWxlUHJvZ3Jh
bU5vZGUpCiAgICAgICAgIHJldHVybiBmYWxzZTsKIAotICAgIE1vZHVsZUFuYWx5emVyIG1vZHVs
ZUFuYWx5emVyKHZtLCBtb2R1bGVQcm9ncmFtTm9kZS0+dmFyRGVjbGFyYXRpb25zKCksIG1vZHVs
ZVByb2dyYW1Ob2RlLT5sZXhpY2FsVmFyaWFibGVzKCkpOworICAgIE1vZHVsZUFuYWx5emVyIG1v
ZHVsZUFuYWx5emVyKGV4ZWMsIG1vZHVsZVByb2dyYW1Ob2RlLT52YXJEZWNsYXJhdGlvbnMoKSwg
bW9kdWxlUHJvZ3JhbU5vZGUtPmxleGljYWxWYXJpYWJsZXMoKSk7CiAgICAgbW9kdWxlQW5hbHl6
ZXIuYW5hbHl6ZSgqbW9kdWxlUHJvZ3JhbU5vZGUpOwogICAgIHJldHVybiB0cnVlOwogfQpAQCAt
MTA4LDQgKzExMCw0MiBAQCBKU1ZhbHVlIGV2YWx1YXRlKEV4ZWNTdGF0ZSogZXhlYywgY29uc3Qg
U291cmNlQ29kZSYgc291cmNlLCBKU1ZhbHVlIHRoaXNWYWx1ZSwgTgogICAgIHJldHVybiByZXN1
bHQ7CiB9CiAKK3ZvaWQgZXZhbHVhdGVNb2R1bGUoRXhlY1N0YXRlKiBleGVjLCBjb25zdCBTb3Vy
Y2VDb2RlJiBzb3VyY2UsIE5ha2VkUHRyPEV4Y2VwdGlvbj4mIHJldHVybmVkRXhjZXB0aW9uKQor
eworICAgIEpTTG9ja0hvbGRlciBsb2NrKGV4ZWMpOworICAgIFJFTEVBU0VfQVNTRVJUKGV4ZWMt
PnZtKCkuYXRvbWljU3RyaW5nVGFibGUoKSA9PSB3dGZUaHJlYWREYXRhKCkuYXRvbWljU3RyaW5n
VGFibGUoKSk7CisgICAgUkVMRUFTRV9BU1NFUlQoIWV4ZWMtPnZtKCkuaXNDb2xsZWN0b3JCdXN5
KCkpOworCisgICAgQ29kZVByb2ZpbGluZyBwcm9maWxlKHNvdXJjZSk7CisKKyAgICBKU0dsb2Jh
bE9iamVjdCogZ2xvYmFsT2JqZWN0ID0gZXhlYy0+dm1FbnRyeUdsb2JhbE9iamVjdCgpOworCisg
ICAgLy8gR2VuZXJhdGUgdGhlIHVuaXF1ZSBrZXkgZm9yIHRoZSBzb3VyY2UtcHJvdmlkZWQgbW9k
dWxlLgorICAgIFN5bWJvbCoga2V5ID0gU3ltYm9sOjpjcmVhdGUoZXhlYy0+dm0oKSk7CisKKyAg
ICBNb2R1bGVMb2FkZXJPYmplY3QqIG1vZHVsZUxvYWRlciA9IGdsb2JhbE9iamVjdC0+bW9kdWxl
TG9hZGVyKCk7CisKKyAgICAvLyBJbnNlcnQgdGhlIGdpdmVuIHNvdXJjZSBjb2RlIHRvIHRoZSBN
b2R1bGVMb2FkZXIgcmVnaXN0cnkgYXMgdGhlIGZldGNoZWQgcmVnaXN0cnkgZW50cnkuCisgICAg
bW9kdWxlTG9hZGVyLT5wcm92aWRlKGV4ZWMsIGtleSwgTW9kdWxlTG9hZGVyT2JqZWN0OjpTdGF0
dXM6OkZldGNoLCBzb3VyY2UudG9TdHJpbmcoKSk7CisgICAgaWYgKGV4ZWMtPmhhZEV4Y2VwdGlv
bigpKSB7CisgICAgICAgIHJldHVybmVkRXhjZXB0aW9uID0gZXhlYy0+ZXhjZXB0aW9uKCk7Cisg
ICAgICAgIGV4ZWMtPmNsZWFyRXhjZXB0aW9uKCk7CisgICAgICAgIHJldHVybjsKKyAgICB9CisK
KyAgICAvLyBGSVhNRTogTm93LCB3ZSBkb24ndCBpbXBsZW1lbnQgdGhlIGxpbmtpbmcgcGhhc2Ug
eWV0LgorICAgIC8vIFNvIGhlcmUsIHdlIGp1c3QgY2FsbCByZXF1ZXN0SW5zdGFudGlhdGVBbGwg
dG8gb25seSBwZXJmb3JtIHRoZSBtb2R1bGUgbG9hZGluZy4KKyAgICAvLyBBdCBsYXN0LCBpdCBz
aG91bGQgYmUgcmVwbGFjZWQgd2l0aCByZXF1ZXN0UmVhZHkuCisgICAgLy8gaHR0cHM6Ly9idWdz
LndlYmtpdC5vcmcvc2hvd19idWcuY2dpP2lkPTE0ODE3MgorICAgIG1vZHVsZUxvYWRlci0+cmVx
dWVzdEluc3RhbnRpYXRlQWxsKGV4ZWMsIGtleSk7CisKKyAgICAvLyBGSVhNRTogV2Ugc2hvdWxk
IGFsc28gaGFuZGxlIHRoZSBhc3luY2hyb25vdXMgU3ludGF4IEVycm9ycyB0aGF0IHdpbGwgYmUg
ZGVsaXZlcmVkIGJ5IHRoZSByZWplY3RlZCBwcm9taXNlLgorICAgIC8vIGh0dHBzOi8vYnVncy53
ZWJraXQub3JnL3Nob3dfYnVnLmNnaT9pZD0xNDgxNzMKKyAgICBpZiAoZXhlYy0+aGFkRXhjZXB0
aW9uKCkpIHsKKyAgICAgICAgcmV0dXJuZWRFeGNlcHRpb24gPSBleGVjLT5leGNlcHRpb24oKTsK
KyAgICAgICAgZXhlYy0+Y2xlYXJFeGNlcHRpb24oKTsKKyAgICAgICAgcmV0dXJuOworICAgIH0K
K30KKwogfSAvLyBuYW1lc3BhY2UgSlNDCmRpZmYgLS1naXQgYS9Tb3VyY2UvSmF2YVNjcmlwdENv
cmUvcnVudGltZS9Db21wbGV0aW9uLmggYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9D
b21wbGV0aW9uLmgKaW5kZXggNzAyZWQ5ZmFiMGM3OTFmYWUxNTUwNTYyN2JjNzMxYWRiYWUzYTVm
ZC4uZGUzMmQ2M2U2M2FjN2NlZDQ5ZDgxN2UyM2MwYjg3ODg2N2EwNWE2OSAxMDA2NDQKLS0tIGEv
U291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvQ29tcGxldGlvbi5oCisrKyBiL1NvdXJjZS9K
YXZhU2NyaXB0Q29yZS9ydW50aW1lL0NvbXBsZXRpb24uaApAQCAtMzcsMTMgKzM3LDE0IEBAIGNs
YXNzIFZNOwogCiBKU19FWFBPUlRfUFJJVkFURSBib29sIGNoZWNrU3ludGF4KFZNJiwgY29uc3Qg
U291cmNlQ29kZSYsIFBhcnNlckVycm9yJik7CiBKU19FWFBPUlRfUFJJVkFURSBib29sIGNoZWNr
U3ludGF4KEV4ZWNTdGF0ZSosIGNvbnN0IFNvdXJjZUNvZGUmLCBKU1ZhbHVlKiBleGNlcHRpb24g
PSAwKTsKLUpTX0VYUE9SVF9QUklWQVRFIGJvb2wgY2hlY2tNb2R1bGVTeW50YXgoVk0mLCBjb25z
dCBTb3VyY2VDb2RlJiwgUGFyc2VyRXJyb3ImKTsKK0pTX0VYUE9SVF9QUklWQVRFIGJvb2wgY2hl
Y2tNb2R1bGVTeW50YXgoRXhlY1N0YXRlKiwgY29uc3QgU291cmNlQ29kZSYsIFBhcnNlckVycm9y
Jik7CiBKU19FWFBPUlRfUFJJVkFURSBKU1ZhbHVlIGV2YWx1YXRlKEV4ZWNTdGF0ZSosIGNvbnN0
IFNvdXJjZUNvZGUmLCBKU1ZhbHVlIHRoaXNWYWx1ZSwgTmFrZWRQdHI8RXhjZXB0aW9uPiYgcmV0
dXJuZWRFeGNlcHRpb24pOwogaW5saW5lIEpTVmFsdWUgZXZhbHVhdGUoRXhlY1N0YXRlKiBleGVj
LCBjb25zdCBTb3VyY2VDb2RlJiBzb3VyY2VDb2RlLCBKU1ZhbHVlIHRoaXNWYWx1ZSA9IEpTVmFs
dWUoKSkKIHsKICAgICBOYWtlZFB0cjxFeGNlcHRpb24+IHVudXNlZDsKICAgICByZXR1cm4gZXZh
bHVhdGUoZXhlYywgc291cmNlQ29kZSwgdGhpc1ZhbHVlLCB1bnVzZWQpOwogfQorSlNfRVhQT1JU
X1BSSVZBVEUgdm9pZCBldmFsdWF0ZU1vZHVsZShFeGVjU3RhdGUqLCBjb25zdCBTb3VyY2VDb2Rl
JiwgTmFrZWRQdHI8RXhjZXB0aW9uPiYgcmV0dXJuZWRFeGNlcHRpb24pOwogCiB9IC8vIG5hbWVz
cGFjZSBKU0MKIApkaWZmIC0tZ2l0IGEvU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvRXhj
ZXB0aW9uSGVscGVycy5jcHAgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9FeGNlcHRp
b25IZWxwZXJzLmNwcAppbmRleCA0NmMwY2VmOTM5MmE0YWQ3YzBiMDBhOWEwODQ3ZTBiOWFlZmM1
ZmFlLi5iNzg1OWJmZTNlOGVhZmQxZWM2NGFiNWZiZmVhZjI1NzJhZDI3YzE3IDEwMDY0NAotLS0g
YS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9FeGNlcHRpb25IZWxwZXJzLmNwcAorKysg
Yi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9FeGNlcHRpb25IZWxwZXJzLmNwcApAQCAt
NzMsNyArNzMsNyBAQCBKU09iamVjdCogY3JlYXRlU3RhY2tPdmVyZmxvd0Vycm9yKEV4ZWNTdGF0
ZSogZXhlYykKIEpTT2JqZWN0KiBjcmVhdGVVbmRlZmluZWRWYXJpYWJsZUVycm9yKEV4ZWNTdGF0
ZSogZXhlYywgY29uc3QgSWRlbnRpZmllciYgaWRlbnQpCiB7CiAgICAgaWYgKGV4ZWMtPnByb3Bl
cnR5TmFtZXMoKS5pc1ByaXZhdGVOYW1lKGlkZW50KSkgewotICAgICAgICBTdHJpbmcgbWVzc2Fn
ZShtYWtlU3RyaW5nKCJDYW4ndCBmaW5kIHByaXZhdGUgdmFyaWFibGU6IEAiLCBleGVjLT5wcm9w
ZXJ0eU5hbWVzKCkuZ2V0UHVibGljTmFtZShpZGVudCkuc3RyaW5nKCkpKTsKKyAgICAgICAgU3Ry
aW5nIG1lc3NhZ2UobWFrZVN0cmluZygiQ2FuJ3QgZmluZCBwcml2YXRlIHZhcmlhYmxlOiBAIiwg
ZXhlYy0+cHJvcGVydHlOYW1lcygpLmxvb2tVcFB1YmxpY05hbWUoaWRlbnQpLnN0cmluZygpKSk7
CiAgICAgICAgIHJldHVybiBjcmVhdGVSZWZlcmVuY2VFcnJvcihleGVjLCBtZXNzYWdlKTsKICAg
ICB9CiAgICAgU3RyaW5nIG1lc3NhZ2UobWFrZVN0cmluZygiQ2FuJ3QgZmluZCB2YXJpYWJsZTog
IiwgaWRlbnQuc3RyaW5nKCkpKTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9y
dW50aW1lL0lkZW50aWZpZXIuaCBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL0lkZW50
aWZpZXIuaAppbmRleCA2MWRlNjUzNmE2ZmE0YzI5YWNhNGRmMTRiN2Q2ZmVjNGQyYTUwM2U2Li44
ODljYTZiMjJlNDM3OTM2MmYyNTgwNWZkMDVlNmY4NGFhNjdiYmE2IDEwMDY0NAotLS0gYS9Tb3Vy
Y2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9JZGVudGlmaWVyLmgKKysrIGIvU291cmNlL0phdmFT
Y3JpcHRDb3JlL3J1bnRpbWUvSWRlbnRpZmllci5oCkBAIC0yOTIsNiArMjkyLDcgQEAgc3RydWN0
IElkZW50aWZpZXJNYXBJbmRleEhhc2hUcmFpdHMgOiBIYXNoVHJhaXRzPGludD4gewogICAgIHN0
YXRpYyBjb25zdCBib29sIGVtcHR5VmFsdWVJc1plcm8gPSBmYWxzZTsKIH07CiAKK3R5cGVkZWYg
SGFzaFNldDxSZWZQdHI8VW5pcXVlZFN0cmluZ0ltcGw+LCBJZGVudGlmaWVyUmVwSGFzaD4gSWRl
bnRpZmllclNldDsKIHR5cGVkZWYgSGFzaE1hcDxSZWZQdHI8VW5pcXVlZFN0cmluZ0ltcGw+LCBp
bnQsIElkZW50aWZpZXJSZXBIYXNoLCBIYXNoVHJhaXRzPFJlZlB0cjxVbmlxdWVkU3RyaW5nSW1w
bD4+LCBJZGVudGlmaWVyTWFwSW5kZXhIYXNoVHJhaXRzPiBJZGVudGlmaWVyTWFwOwogdHlwZWRl
ZiBIYXNoTWFwPFVuaXF1ZWRTdHJpbmdJbXBsKiwgaW50LCBJZGVudGlmaWVyUmVwSGFzaCwgSGFz
aFRyYWl0czxVbmlxdWVkU3RyaW5nSW1wbCo+LCBJZGVudGlmaWVyTWFwSW5kZXhIYXNoVHJhaXRz
PiBCb3Jyb3dlZElkZW50aWZpZXJNYXA7CiAKZGlmZiAtLWdpdCBhL1NvdXJjZS9KYXZhU2NyaXB0
Q29yZS9ydW50aW1lL0pTR2xvYmFsT2JqZWN0LmNwcCBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9y
dW50aW1lL0pTR2xvYmFsT2JqZWN0LmNwcAppbmRleCBlMGMzZmFkZmM0ZjNiNTJkZDZiYTcxYjc4
ODZkOGVjNjA4ZDQ0MTdlLi45ZjJhNjE3NTUwZjgxMTE5MGVhNDk5NWI1NjcwOGU1MGQ0NDc5NWU0
IDEwMDY0NAotLS0gYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9KU0dsb2JhbE9iamVj
dC5jcHAKKysrIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvSlNHbG9iYWxPYmplY3Qu
Y3BwCkBAIC04MSw2ICs4MSw3IEBACiAjaW5jbHVkZSAiSlNMb2NrLmgiCiAjaW5jbHVkZSAiSlNN
YXAuaCIKICNpbmNsdWRlICJKU01hcEl0ZXJhdG9yLmgiCisjaW5jbHVkZSAiSlNNb2R1bGVSZWNv
cmQuaCIKICNpbmNsdWRlICJKU09OT2JqZWN0LmgiCiAjaW5jbHVkZSAiSlNQcm9taXNlLmgiCiAj
aW5jbHVkZSAiSlNQcm9taXNlQ29uc3RydWN0b3IuaCIKQEAgLTEwNCw2ICsxMDUsNyBAQAogI2lu
Y2x1ZGUgIk1hcFByb3RvdHlwZS5oIgogI2luY2x1ZGUgIk1hdGhPYmplY3QuaCIKICNpbmNsdWRl
ICJNaWNyb3Rhc2suaCIKKyNpbmNsdWRlICJNb2R1bGVMb2FkZXJPYmplY3QuaCIKICNpbmNsdWRl
ICJOYXRpdmVFcnJvckNvbnN0cnVjdG9yLmgiCiAjaW5jbHVkZSAiTmF0aXZlRXJyb3JQcm90b3R5
cGUuaCIKICNpbmNsdWRlICJOdWxsR2V0dGVyRnVuY3Rpb24uaCIKQEAgLTE1Nyw3ICsxNTksNyBA
QCBuYW1lc3BhY2UgSlNDIHsKIAogY29uc3QgQ2xhc3NJbmZvIEpTR2xvYmFsT2JqZWN0OjpzX2lu
Zm8gPSB7ICJHbG9iYWxPYmplY3QiLCAmQmFzZTo6c19pbmZvLCAmZ2xvYmFsT2JqZWN0VGFibGUs
IENSRUFURV9NRVRIT0RfVEFCTEUoSlNHbG9iYWxPYmplY3QpIH07CiAKLWNvbnN0IEdsb2JhbE9i
amVjdE1ldGhvZFRhYmxlIEpTR2xvYmFsT2JqZWN0OjpzX2dsb2JhbE9iamVjdE1ldGhvZFRhYmxl
ID0geyAmYWxsb3dzQWNjZXNzRnJvbSwgJnN1cHBvcnRzUHJvZmlsaW5nLCAmc3VwcG9ydHNSaWNo
U291cmNlSW5mbywgJnNob3VsZEludGVycnVwdFNjcmlwdCwgJmphdmFTY3JpcHRSdW50aW1lRmxh
Z3MsIG51bGxwdHIsICZzaG91bGRJbnRlcnJ1cHRTY3JpcHRCZWZvcmVUaW1lb3V0IH07Citjb25z
dCBHbG9iYWxPYmplY3RNZXRob2RUYWJsZSBKU0dsb2JhbE9iamVjdDo6c19nbG9iYWxPYmplY3RN
ZXRob2RUYWJsZSA9IHsgJmFsbG93c0FjY2Vzc0Zyb20sICZzdXBwb3J0c1Byb2ZpbGluZywgJnN1
cHBvcnRzUmljaFNvdXJjZUluZm8sICZzaG91bGRJbnRlcnJ1cHRTY3JpcHQsICZqYXZhU2NyaXB0
UnVudGltZUZsYWdzLCBudWxscHRyLCAmc2hvdWxkSW50ZXJydXB0U2NyaXB0QmVmb3JlVGltZW91
dCwgbnVsbHB0ciwgbnVsbHB0ciwgbnVsbHB0ciwgbnVsbHB0ciB9OwogCiAvKiBTb3VyY2UgZm9y
IEpTR2xvYmFsT2JqZWN0Lmx1dC5oCiBAYmVnaW4gZ2xvYmFsT2JqZWN0VGFibGUKQEAgLTMxNyw2
ICszMTksNyBAQCB2b2lkIEpTR2xvYmFsT2JqZWN0Ojppbml0KFZNJiB2bSkKICAgICBtX291dE9m
QmFuZEFyZ3VtZW50c1N0cnVjdHVyZS5zZXQodm0sIHRoaXMsIENsb25lZEFyZ3VtZW50czo6Y3Jl
YXRlU3RydWN0dXJlKHZtLCB0aGlzLCBtX29iamVjdFByb3RvdHlwZS5nZXQoKSkpOwogICAgIG1f
Y2FsbGJhY2tDb25zdHJ1Y3RvclN0cnVjdHVyZS5zZXQodm0sIHRoaXMsIEpTQ2FsbGJhY2tDb25z
dHJ1Y3Rvcjo6Y3JlYXRlU3RydWN0dXJlKHZtLCB0aGlzLCBtX29iamVjdFByb3RvdHlwZS5nZXQo
KSkpOwogICAgIG1fY2FsbGJhY2tPYmplY3RTdHJ1Y3R1cmUuc2V0KHZtLCB0aGlzLCBKU0NhbGxi
YWNrT2JqZWN0PEpTRGVzdHJ1Y3RpYmxlT2JqZWN0Pjo6Y3JlYXRlU3RydWN0dXJlKHZtLCB0aGlz
LCBtX29iamVjdFByb3RvdHlwZS5nZXQoKSkpOworCiAjaWYgSlNDX09CSkNfQVBJX0VOQUJMRUQK
ICAgICBtX29iamNDYWxsYmFja0Z1bmN0aW9uU3RydWN0dXJlLnNldCh2bSwgdGhpcywgT2JqQ0Nh
bGxiYWNrRnVuY3Rpb246OmNyZWF0ZVN0cnVjdHVyZSh2bSwgdGhpcywgbV9mdW5jdGlvblByb3Rv
dHlwZS5nZXQoKSkpOwogICAgIG1fb2JqY1dyYXBwZXJPYmplY3RTdHJ1Y3R1cmUuc2V0KHZtLCB0
aGlzLCBKU0NhbGxiYWNrT2JqZWN0PEpTQVBJV3JhcHBlck9iamVjdD46OmNyZWF0ZVN0cnVjdHVy
ZSh2bSwgdGhpcywgbV9vYmplY3RQcm90b3R5cGUuZ2V0KCkpKTsKQEAgLTMzOSw2ICszNDIsOCBA
QCB2b2lkIEpTR2xvYmFsT2JqZWN0Ojppbml0KFZNJiB2bSkKICAgICBtX3JlZ0V4cFN0cnVjdHVy
ZS5zZXQodm0sIHRoaXMsIFJlZ0V4cE9iamVjdDo6Y3JlYXRlU3RydWN0dXJlKHZtLCB0aGlzLCBt
X3JlZ0V4cFByb3RvdHlwZS5nZXQoKSkpOwogICAgIG1fcmVnRXhwTWF0Y2hlc0FycmF5U3RydWN0
dXJlLnNldCh2bSwgdGhpcywgY3JlYXRlUmVnRXhwTWF0Y2hlc0FycmF5U3RydWN0dXJlKHZtLCAq
dGhpcykpOwogCisgICAgbV9tb2R1bGVSZWNvcmRTdHJ1Y3R1cmUuc2V0KHZtLCB0aGlzLCBKU01v
ZHVsZVJlY29yZDo6Y3JlYXRlU3RydWN0dXJlKHZtLCB0aGlzLCBtX29iamVjdFByb3RvdHlwZS5n
ZXQoKSkpOworICAgIAogI2lmIEVOQUJMRShXRUJBU1NFTUJMWSkKICAgICBtX3dhc21Nb2R1bGVT
dHJ1Y3R1cmUuc2V0KHZtLCB0aGlzLCBKU1dBU01Nb2R1bGU6OmNyZWF0ZVN0cnVjdHVyZSh2bSwg
dGhpcykpOwogI2VuZGlmCkBAIC00MzYsNyArNDQxLDcgQEAgcHV0RGlyZWN0V2l0aG91dFRyYW5z
aXRpb24odm0sIHZtLnByb3BlcnR5TmFtZXMtPiBqc05hbWUsIGxvd2VyTmFtZSAjIyBDb25zdHJ1
Y3QKICAgICBwdXREaXJlY3RXaXRob3V0VHJhbnNpdGlvbih2bSwgdm0ucHJvcGVydHlOYW1lcy0+
SlNPTiwgSlNPTk9iamVjdDo6Y3JlYXRlKHZtLCBKU09OT2JqZWN0OjpjcmVhdGVTdHJ1Y3R1cmUo
dm0sIHRoaXMsIG1fb2JqZWN0UHJvdG90eXBlLmdldCgpKSksIERvbnRFbnVtKTsKICAgICBwdXRE
aXJlY3RXaXRob3V0VHJhbnNpdGlvbih2bSwgdm0ucHJvcGVydHlOYW1lcy0+TWF0aCwgTWF0aE9i
amVjdDo6Y3JlYXRlKHZtLCB0aGlzLCBNYXRoT2JqZWN0OjpjcmVhdGVTdHJ1Y3R1cmUodm0sIHRo
aXMsIG1fb2JqZWN0UHJvdG90eXBlLmdldCgpKSksIERvbnRFbnVtKTsKICAgICBwdXREaXJlY3RX
aXRob3V0VHJhbnNpdGlvbih2bSwgdm0ucHJvcGVydHlOYW1lcy0+UmVmbGVjdCwgUmVmbGVjdE9i
amVjdDo6Y3JlYXRlKHZtLCB0aGlzLCBSZWZsZWN0T2JqZWN0OjpjcmVhdGVTdHJ1Y3R1cmUodm0s
IHRoaXMsIG1fb2JqZWN0UHJvdG90eXBlLmdldCgpKSksIERvbnRFbnVtKTsKLSAgICAKKwogICAg
IHN0ZDo6YXJyYXk8SW50ZXJuYWxGdW5jdGlvbiosIE5VTUJFUl9PRl9UWVBFRF9BUlJBWV9UWVBF
Uz4gdHlwZWRBcnJheUNvbnN0cnVjdG9yczsKICAgICB0eXBlZEFycmF5Q29uc3RydWN0b3JzW3Rv
SW5kZXgoVHlwZUludDgpXSA9IEpTSW50OEFycmF5Q29uc3RydWN0b3I6OmNyZWF0ZSh2bSwgSlNJ
bnQ4QXJyYXlDb25zdHJ1Y3Rvcjo6Y3JlYXRlU3RydWN0dXJlKHZtLCB0aGlzLCBtX2Z1bmN0aW9u
UHJvdG90eXBlLmdldCgpKSwgbV90eXBlZEFycmF5c1t0b0luZGV4KFR5cGVJbnQ4KV0ucHJvdG90
eXBlLmdldCgpLCBBU0NJSUxpdGVyYWwoIkludDhBcnJheSIpKTsKICAgICB0eXBlZEFycmF5Q29u
c3RydWN0b3JzW3RvSW5kZXgoVHlwZUludDE2KV0gPSBKU0ludDE2QXJyYXlDb25zdHJ1Y3Rvcjo6
Y3JlYXRlKHZtLCBKU0ludDE2QXJyYXlDb25zdHJ1Y3Rvcjo6Y3JlYXRlU3RydWN0dXJlKHZtLCB0
aGlzLCBtX2Z1bmN0aW9uUHJvdG90eXBlLmdldCgpKSwgbV90eXBlZEFycmF5c1t0b0luZGV4KFR5
cGVJbnQxNildLnByb3RvdHlwZS5nZXQoKSwgQVNDSUlMaXRlcmFsKCJJbnQxNkFycmF5IikpOwpA
QCAtNDUzLDcgKzQ1OCwxMSBAQCBwdXREaXJlY3RXaXRob3V0VHJhbnNpdGlvbih2bSwgdm0ucHJv
cGVydHlOYW1lcy0+IGpzTmFtZSwgbG93ZXJOYW1lICMjIENvbnN0cnVjdAogICAgICAgICBtX3R5
cGVkQXJyYXlzW3R5cGVkQXJyYXlJbmRleF0ucHJvdG90eXBlLT5wdXREaXJlY3RXaXRob3V0VHJh
bnNpdGlvbih2bSwgdm0ucHJvcGVydHlOYW1lcy0+Y29uc3RydWN0b3IsIHR5cGVkQXJyYXlDb25z
dHJ1Y3RvcnNbdHlwZWRBcnJheUluZGV4XSwgRG9udEVudW0pOwogICAgICAgICBwdXREaXJlY3RX
aXRob3V0VHJhbnNpdGlvbih2bSwgSWRlbnRpZmllcjo6ZnJvbVN0cmluZyhleGVjLCB0eXBlZEFy
cmF5Q29uc3RydWN0b3JzW3R5cGVkQXJyYXlJbmRleF0tPm5hbWUoZXhlYykpLCB0eXBlZEFycmF5
Q29uc3RydWN0b3JzW3R5cGVkQXJyYXlJbmRleF0sIERvbnRFbnVtKTsKICAgICB9Ci0gICAgCisK
KyAgICBtX21vZHVsZUxvYWRlci5zZXQodm0sIHRoaXMsIE1vZHVsZUxvYWRlck9iamVjdDo6Y3Jl
YXRlKHZtLCB0aGlzLCBNb2R1bGVMb2FkZXJPYmplY3Q6OmNyZWF0ZVN0cnVjdHVyZSh2bSwgdGhp
cywgbV9vYmplY3RQcm90b3R5cGUuZ2V0KCkpKSk7CisgICAgaWYgKE9wdGlvbnM6OmV4cG9zZUlu
dGVybmFsTW9kdWxlTG9hZGVyKCkpCisgICAgICAgIHB1dERpcmVjdFdpdGhvdXRUcmFuc2l0aW9u
KHZtLCB2bS5wcm9wZXJ0eU5hbWVzLT5Mb2FkZXIsIG1fbW9kdWxlTG9hZGVyLmdldCgpLCBEb250
RW51bSk7CisKICAgICBKU0Z1bmN0aW9uKiBidWlsdGluTG9nID0gSlNGdW5jdGlvbjo6Y3JlYXRl
KHZtLCB0aGlzLCAxLCB2bS5wcm9wZXJ0eU5hbWVzLT5lbXB0eUlkZW50aWZpZXIuc3RyaW5nKCks
IGdsb2JhbEZ1bmNCdWlsdGluTG9nKTsKIAogICAgIEpTRnVuY3Rpb24qIHByaXZhdGVGdW5jQWJz
ID0gSlNGdW5jdGlvbjo6Y3JlYXRlKHZtLCB0aGlzLCAwLCBTdHJpbmcoKSwgbWF0aFByb3RvRnVu
Y0FicywgQWJzSW50cmluc2ljKTsKQEAgLTUwNSw2ICs1MTQsNyBAQCBwdXREaXJlY3RXaXRob3V0
VHJhbnNpdGlvbih2bSwgdm0ucHJvcGVydHlOYW1lcy0+IGpzTmFtZSwgbG93ZXJOYW1lICMjIENv
bnN0cnVjdAogICAgICAgICBHbG9iYWxQcm9wZXJ0eUluZm8odm0ucHJvcGVydHlOYW1lcy0+YnVp
bHRpbk5hbWVzKCkucHJvbWlzZVJlc29sdmVUaGVuYWJsZUpvYlByaXZhdGVOYW1lKCksIEpTRnVu
Y3Rpb246OmNyZWF0ZUJ1aWx0aW5GdW5jdGlvbih2bSwgb3BlcmF0aW9uc1Byb21pc2VQcm9taXNl
UmVzb2x2ZVRoZW5hYmxlSm9iQ29kZUdlbmVyYXRvcih2bSksIHRoaXMpLCBEb250RW51bSB8IERv
bnREZWxldGUgfCBSZWFkT25seSksCiAgICAgICAgIEdsb2JhbFByb3BlcnR5SW5mbyh2bS5wcm9w
ZXJ0eU5hbWVzLT5idWlsdGluTmFtZXMoKS5uZXdQcm9taXNlRGVmZXJyZWRQcml2YXRlTmFtZSgp
LCBtX25ld1Byb21pc2VEZWZlcnJlZEZ1bmN0aW9uLmdldCgpLCBEb250RW51bSB8IERvbnREZWxl
dGUgfCBSZWFkT25seSksCiAgICAgICAgIEdsb2JhbFByb3BlcnR5SW5mbyh2bS5wcm9wZXJ0eU5h
bWVzLT5idWlsdGluTmFtZXMoKS5JbnNwZWN0b3JJbnN0cnVtZW50YXRpb25Qcml2YXRlTmFtZSgp
LCBJbnNwZWN0b3JJbnN0cnVtZW50YXRpb25PYmplY3Q6OmNyZWF0ZSh2bSwgdGhpcywgSW5zcGVj
dG9ySW5zdHJ1bWVudGF0aW9uT2JqZWN0OjpjcmVhdGVTdHJ1Y3R1cmUodm0sIHRoaXMsIG1fb2Jq
ZWN0UHJvdG90eXBlLmdldCgpKSksIERvbnRFbnVtIHwgRG9udERlbGV0ZSB8IFJlYWRPbmx5KSwK
KyAgICAgICAgR2xvYmFsUHJvcGVydHlJbmZvKHZtLnByb3BlcnR5TmFtZXMtPk1hcFByaXZhdGVO
YW1lLCBtYXBDb25zdHJ1Y3RvciwgRG9udEVudW0gfCBEb250RGVsZXRlIHwgUmVhZE9ubHkpLAog
ICAgIH07CiAgICAgYWRkU3RhdGljR2xvYmFscyhzdGF0aWNHbG9iYWxzLCBXVEZfQVJSQVlfTEVO
R1RIKHN0YXRpY0dsb2JhbHMpKTsKICAgICAKQEAgLTc2MCw2ICs3NzAsNyBAQCB2b2lkIEpTR2xv
YmFsT2JqZWN0Ojp2aXNpdENoaWxkcmVuKEpTQ2VsbCogY2VsbCwgU2xvdFZpc2l0b3ImIHZpc2l0
b3IpCiAgICAgdmlzaXRvci5hcHBlbmQoJnRoaXNPYmplY3QtPm1faW5pdGlhbGl6ZVByb21pc2VG
dW5jdGlvbik7CiAgICAgdmlzaXRvci5hcHBlbmQoJnRoaXNPYmplY3QtPm1fbmV3UHJvbWlzZURl
ZmVycmVkRnVuY3Rpb24pOwogICAgIHZpc2l0b3IuYXBwZW5kKCZ0aGlzT2JqZWN0LT5tX3Rocm93
VHlwZUVycm9yR2V0dGVyU2V0dGVyKTsKKyAgICB2aXNpdG9yLmFwcGVuZCgmdGhpc09iamVjdC0+
bV9tb2R1bGVMb2FkZXIpOwogCiAgICAgdmlzaXRvci5hcHBlbmQoJnRoaXNPYmplY3QtPm1fb2Jq
ZWN0UHJvdG90eXBlKTsKICAgICB2aXNpdG9yLmFwcGVuZCgmdGhpc09iamVjdC0+bV9mdW5jdGlv
blByb3RvdHlwZSk7CkBAIC03OTcsNiArODA4LDcgQEAgdm9pZCBKU0dsb2JhbE9iamVjdDo6dmlz
aXRDaGlsZHJlbihKU0NlbGwqIGNlbGwsIFNsb3RWaXNpdG9yJiB2aXNpdG9yKQogICAgIHZpc2l0
b3IuYXBwZW5kKCZ0aGlzT2JqZWN0LT5tX3N5bWJvbE9iamVjdFN0cnVjdHVyZSk7CiAgICAgdmlz
aXRvci5hcHBlbmQoJnRoaXNPYmplY3QtPm1fcmVnRXhwU3RydWN0dXJlKTsKICAgICB2aXNpdG9y
LmFwcGVuZCgmdGhpc09iamVjdC0+bV9yZWdFeHBNYXRjaGVzQXJyYXlTdHJ1Y3R1cmUpOworICAg
IHZpc2l0b3IuYXBwZW5kKCZ0aGlzT2JqZWN0LT5tX21vZHVsZVJlY29yZFN0cnVjdHVyZSk7CiAg
ICAgdmlzaXRvci5hcHBlbmQoJnRoaXNPYmplY3QtPm1fY29uc29sZVN0cnVjdHVyZSk7CiAgICAg
dmlzaXRvci5hcHBlbmQoJnRoaXNPYmplY3QtPm1fZG9sbGFyVk1TdHJ1Y3R1cmUpOwogICAgIHZp
c2l0b3IuYXBwZW5kKCZ0aGlzT2JqZWN0LT5tX2ludGVybmFsRnVuY3Rpb25TdHJ1Y3R1cmUpOwpk
aWZmIC0tZ2l0IGEvU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvSlNHbG9iYWxPYmplY3Qu
aCBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL0pTR2xvYmFsT2JqZWN0LmgKaW5kZXgg
YTZjZGMzMjJkMWNjOTAyMGY5MTY4YzdkZTY4NWVkMWY1NmUxNDYzNS4uYWE1ZWQ4YmIyNGE2YTM0
NjgyMTY1OTJkNDljN2U1YjQzZmEwYTNhYiAxMDA2NDQKLS0tIGEvU291cmNlL0phdmFTY3JpcHRD
b3JlL3J1bnRpbWUvSlNHbG9iYWxPYmplY3QuaAorKysgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUv
cnVudGltZS9KU0dsb2JhbE9iamVjdC5oCkBAIC03MCwxMSArNzAsMTQgQEAgY2xhc3MgR2V0dGVy
U2V0dGVyOwogY2xhc3MgR2xvYmFsQ29kZUJsb2NrOwogY2xhc3MgSW5wdXRDdXJzb3I7CiBjbGFz
cyBKU0dsb2JhbE9iamVjdERlYnVnZ2FibGU7CitjbGFzcyBKU1Byb21pc2U7CiBjbGFzcyBKU1By
b21pc2VDb25zdHJ1Y3RvcjsKIGNsYXNzIEpTUHJvbWlzZVByb3RvdHlwZTsKK2NsYXNzIEpTSW50
ZXJuYWxQcm9taXNlOwogY2xhc3MgSlNTdGFjazsKIGNsYXNzIExMSW50T2Zmc2V0c0V4dHJhY3Rv
cjsKIGNsYXNzIE1pY3JvdGFzazsKK2NsYXNzIE1vZHVsZUxvYWRlck9iamVjdDsKIGNsYXNzIE5h
dGl2ZUVycm9yQ29uc3RydWN0b3I7CiBjbGFzcyBPYmplY3RDb25zdHJ1Y3RvcjsKIGNsYXNzIFBy
b2dyYW1Db2RlQmxvY2s7CkBAIC0xNTEsNiArMTU0LDE4IEBAIHN0cnVjdCBHbG9iYWxPYmplY3RN
ZXRob2RUYWJsZSB7CiAKICAgICB0eXBlZGVmIGJvb2wgKCpTaG91bGRJbnRlcnJ1cHRTY3JpcHRC
ZWZvcmVUaW1lb3V0UHRyKShjb25zdCBKU0dsb2JhbE9iamVjdCopOwogICAgIFNob3VsZEludGVy
cnVwdFNjcmlwdEJlZm9yZVRpbWVvdXRQdHIgc2hvdWxkSW50ZXJydXB0U2NyaXB0QmVmb3JlVGlt
ZW91dDsKKworICAgIHR5cGVkZWYgSlNJbnRlcm5hbFByb21pc2UqICgqTG9hZGVyUmVzb2x2ZVB0
cikoSlNHbG9iYWxPYmplY3QqLCBFeGVjU3RhdGUqLCBKU1ZhbHVlLCBKU1ZhbHVlKTsKKyAgICBM
b2FkZXJSZXNvbHZlUHRyIGxvYWRlclJlc29sdmU7CisKKyAgICB0eXBlZGVmIEpTSW50ZXJuYWxQ
cm9taXNlKiAoKkxvYWRlckZldGNoUHRyKShKU0dsb2JhbE9iamVjdCosIEV4ZWNTdGF0ZSosIEpT
VmFsdWUpOworICAgIExvYWRlckZldGNoUHRyIGxvYWRlckZldGNoOworCisgICAgdHlwZWRlZiBK
U0ludGVybmFsUHJvbWlzZSogKCpMb2FkZXJUcmFuc2xhdGVQdHIpKEpTR2xvYmFsT2JqZWN0Kiwg
RXhlY1N0YXRlKiwgSlNWYWx1ZSwgSlNWYWx1ZSk7CisgICAgTG9hZGVyVHJhbnNsYXRlUHRyIGxv
YWRlclRyYW5zbGF0ZTsKKworICAgIHR5cGVkZWYgSlNJbnRlcm5hbFByb21pc2UqICgqTG9hZGVy
SW5zdGFudGlhdGVQdHIpKEpTR2xvYmFsT2JqZWN0KiwgRXhlY1N0YXRlKiwgSlNWYWx1ZSwgSlNW
YWx1ZSk7CisgICAgTG9hZGVySW5zdGFudGlhdGVQdHIgbG9hZGVySW5zdGFudGlhdGU7CiB9Owog
CiBjbGFzcyBKU0dsb2JhbE9iamVjdCA6IHB1YmxpYyBKU1NlZ21lbnRlZFZhcmlhYmxlT2JqZWN0
IHsKQEAgLTIwMCw2ICsyMTUsOCBAQCBjbGFzcyBKU0dsb2JhbE9iamVjdCA6IHB1YmxpYyBKU1Nl
Z21lbnRlZFZhcmlhYmxlT2JqZWN0IHsKICAgICBXcml0ZUJhcnJpZXI8SlNGdW5jdGlvbj4gbV9u
ZXdQcm9taXNlRGVmZXJyZWRGdW5jdGlvbjsKICAgICBXcml0ZUJhcnJpZXI8R2V0dGVyU2V0dGVy
PiBtX3Rocm93VHlwZUVycm9yR2V0dGVyU2V0dGVyOwogCisgICAgV3JpdGVCYXJyaWVyPE1vZHVs
ZUxvYWRlck9iamVjdD4gbV9tb2R1bGVMb2FkZXI7CisKICAgICBXcml0ZUJhcnJpZXI8T2JqZWN0
UHJvdG90eXBlPiBtX29iamVjdFByb3RvdHlwZTsKICAgICBXcml0ZUJhcnJpZXI8RnVuY3Rpb25Q
cm90b3R5cGU+IG1fZnVuY3Rpb25Qcm90b3R5cGU7CiAgICAgV3JpdGVCYXJyaWVyPEFycmF5UHJv
dG90eXBlPiBtX2FycmF5UHJvdG90eXBlOwpAQCAtMjQxLDYgKzI1OCw4IEBAIGNsYXNzIEpTR2xv
YmFsT2JqZWN0IDogcHVibGljIEpTU2VnbWVudGVkVmFyaWFibGVPYmplY3QgewogICAgIFdyaXRl
QmFycmllcjxTdHJ1Y3R1cmU+IG1faW50ZXJuYWxGdW5jdGlvblN0cnVjdHVyZTsKICAgICBXcml0
ZUJhcnJpZXI8U3RydWN0dXJlPiBtX2l0ZXJhdG9yUmVzdWx0U3RydWN0dXJlOwogICAgIFdyaXRl
QmFycmllcjxTdHJ1Y3R1cmU+IG1fcmVnRXhwTWF0Y2hlc0FycmF5U3RydWN0dXJlOworICAgIFdy
aXRlQmFycmllcjxTdHJ1Y3R1cmU+IG1fcHJvbWlzZVN0cnVjdHVyZTsKKyAgICBXcml0ZUJhcnJp
ZXI8U3RydWN0dXJlPiBtX21vZHVsZVJlY29yZFN0cnVjdHVyZTsKICNpZiBFTkFCTEUoV0VCQVNT
RU1CTFkpCiAgICAgV3JpdGVCYXJyaWVyPFN0cnVjdHVyZT4gbV93YXNtTW9kdWxlU3RydWN0dXJl
OwogI2VuZGlmCkBAIC00MDUsNiArNDI0LDggQEAgY2xhc3MgSlNHbG9iYWxPYmplY3QgOiBwdWJs
aWMgSlNTZWdtZW50ZWRWYXJpYWJsZU9iamVjdCB7CiAgICAgICAgIHJldHVybiBtX3Rocm93VHlw
ZUVycm9yR2V0dGVyU2V0dGVyLmdldCgpOwogICAgIH0KIAorICAgIE1vZHVsZUxvYWRlck9iamVj
dCogbW9kdWxlTG9hZGVyKCkgY29uc3QgeyByZXR1cm4gbV9tb2R1bGVMb2FkZXIuZ2V0KCk7IH0K
KwogICAgIE9iamVjdFByb3RvdHlwZSogb2JqZWN0UHJvdG90eXBlKCkgY29uc3QgeyByZXR1cm4g
bV9vYmplY3RQcm90b3R5cGUuZ2V0KCk7IH0KICAgICBGdW5jdGlvblByb3RvdHlwZSogZnVuY3Rp
b25Qcm90b3R5cGUoKSBjb25zdCB7IHJldHVybiBtX2Z1bmN0aW9uUHJvdG90eXBlLmdldCgpOyB9
CiAgICAgQXJyYXlQcm90b3R5cGUqIGFycmF5UHJvdG90eXBlKCkgY29uc3QgeyByZXR1cm4gbV9h
cnJheVByb3RvdHlwZS5nZXQoKTsgfQpAQCAtNDczLDYgKzQ5NCw4IEBAIGNsYXNzIEpTR2xvYmFs
T2JqZWN0IDogcHVibGljIEpTU2VnbWVudGVkVmFyaWFibGVPYmplY3QgewogICAgIFN0cnVjdHVy
ZSogaXRlcmF0b3JSZXN1bHRTdHJ1Y3R1cmUoKSBjb25zdCB7IHJldHVybiBtX2l0ZXJhdG9yUmVz
dWx0U3RydWN0dXJlLmdldCgpOyB9CiAgICAgc3RhdGljIHB0cmRpZmZfdCBpdGVyYXRvclJlc3Vs
dFN0cnVjdHVyZU9mZnNldCgpIHsgcmV0dXJuIE9CSkVDVF9PRkZTRVRPRihKU0dsb2JhbE9iamVj
dCwgbV9pdGVyYXRvclJlc3VsdFN0cnVjdHVyZSk7IH0KICAgICBTdHJ1Y3R1cmUqIHJlZ0V4cE1h
dGNoZXNBcnJheVN0cnVjdHVyZSgpIGNvbnN0IHsgcmV0dXJuIG1fcmVnRXhwTWF0Y2hlc0FycmF5
U3RydWN0dXJlLmdldCgpOyB9CisgICAgU3RydWN0dXJlKiBwcm9taXNlU3RydWN0dXJlKCkgY29u
c3QgeyByZXR1cm4gbV9wcm9taXNlU3RydWN0dXJlLmdldCgpOyB9CisgICAgU3RydWN0dXJlKiBt
b2R1bGVSZWNvcmRTdHJ1Y3R1cmUoKSBjb25zdCB7IHJldHVybiBtX21vZHVsZVJlY29yZFN0cnVj
dHVyZS5nZXQoKTsgfQogI2lmIEVOQUJMRShXRUJBU1NFTUJMWSkKICAgICBTdHJ1Y3R1cmUqIHdh
c21Nb2R1bGVTdHJ1Y3R1cmUoKSBjb25zdCB7IHJldHVybiBtX3dhc21Nb2R1bGVTdHJ1Y3R1cmUu
Z2V0KCk7IH0KICNlbmRpZgpkaWZmIC0tZ2l0IGEvU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRp
bWUvSlNNb2R1bGVSZWNvcmQuY3BwIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvSlNN
b2R1bGVSZWNvcmQuY3BwCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAuLjdkZTE4NjA5NDBjZTE5Y2U1MDhjMTIwMjgyZTk0
NGYzY2E0MjA1ZDkKLS0tIC9kZXYvbnVsbAorKysgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVu
dGltZS9KU01vZHVsZVJlY29yZC5jcHAKQEAgLTAsMCArMSwxMTMgQEAKKy8qCisgKiBDb3B5cmln
aHQgKEMpIDIwMTUgQXBwbGUgSW5jLiBBbGwgcmlnaHRzIHJlc2VydmVkLgorICoKKyAqIFJlZGlz
dHJpYnV0aW9uIGFuZCB1c2UgaW4gc291cmNlIGFuZCBiaW5hcnkgZm9ybXMsIHdpdGggb3Igd2l0
aG91dAorICogbW9kaWZpY2F0aW9uLCBhcmUgcGVybWl0dGVkIHByb3ZpZGVkIHRoYXQgdGhlIGZv
bGxvd2luZyBjb25kaXRpb25zCisgKiBhcmUgbWV0OgorICogMS4gUmVkaXN0cmlidXRpb25zIG9m
IHNvdXJjZSBjb2RlIG11c3QgcmV0YWluIHRoZSBhYm92ZSBjb3B5cmlnaHQKKyAqICAgIG5vdGlj
ZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lci4K
KyAqIDIuIFJlZGlzdHJpYnV0aW9ucyBpbiBiaW5hcnkgZm9ybSBtdXN0IHJlcHJvZHVjZSB0aGUg
YWJvdmUgY29weXJpZ2h0CisgKiAgICBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFu
ZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIgaW4gdGhlCisgKiAgICBkb2N1bWVudGF0aW9uIGFu
ZC9vciBvdGhlciBtYXRlcmlhbHMgcHJvdmlkZWQgd2l0aCB0aGUgZGlzdHJpYnV0aW9uLgorICoK
KyAqIFRISVMgU09GVFdBUkUgSVMgUFJPVklERUQgQlkgQVBQTEUgSU5DLiBgYEFTIElTJycgQU5E
IEFOWQorICogRVhQUkVTUyBPUiBJTVBMSUVEIFdBUlJBTlRJRVMsIElOQ0xVRElORywgQlVUIE5P
VCBMSU1JVEVEIFRPLCBUSEUKKyAqIElNUExJRUQgV0FSUkFOVElFUyBPRiBNRVJDSEFOVEFCSUxJ
VFkgQU5EIEZJVE5FU1MgRk9SIEEgUEFSVElDVUxBUgorICogUFVSUE9TRSBBUkUgRElTQ0xBSU1F
RC4gIElOIE5PIEVWRU5UIFNIQUxMIEFQUExFIElOQy4gT1IKKyAqIENPTlRSSUJVVE9SUyBCRSBM
SUFCTEUgRk9SIEFOWSBESVJFQ1QsIElORElSRUNULCBJTkNJREVOVEFMLCBTUEVDSUFMLAorICog
RVhFTVBMQVJZLCBPUiBDT05TRVFVRU5USUFMIERBTUFHRVMgKElOQ0xVRElORywgQlVUIE5PVCBM
SU1JVEVEIFRPLAorICogUFJPQ1VSRU1FTlQgT0YgU1VCU1RJVFVURSBHT09EUyBPUiBTRVJWSUNF
UzsgTE9TUyBPRiBVU0UsIERBVEEsIE9SCisgKiBQUk9GSVRTOyBPUiBCVVNJTkVTUyBJTlRFUlJV
UFRJT04pIEhPV0VWRVIgQ0FVU0VEIEFORCBPTiBBTlkgVEhFT1JZCisgKiBPRiBMSUFCSUxJVFks
IFdIRVRIRVIgSU4gQ09OVFJBQ1QsIFNUUklDVCBMSUFCSUxJVFksIE9SIFRPUlQKKyAqIChJTkNM
VURJTkcgTkVHTElHRU5DRSBPUiBPVEhFUldJU0UpIEFSSVNJTkcgSU4gQU5ZIFdBWSBPVVQgT0Yg
VEhFIFVTRQorICogT0YgVEhJUyBTT0ZUV0FSRSwgRVZFTiBJRiBBRFZJU0VEIE9GIFRIRSBQT1NT
SUJJTElUWSBPRiBTVUNIIERBTUFHRS4gCisgKi8KKworI2luY2x1ZGUgImNvbmZpZy5oIgorI2lu
Y2x1ZGUgIkpTTW9kdWxlUmVjb3JkLmgiCisKKyNpbmNsdWRlICJJZGVudGlmaWVySW5saW5lcy5o
IgorI2luY2x1ZGUgIkpTQ0pTVmFsdWVJbmxpbmVzLmgiCisjaW5jbHVkZSAiSlNDZWxsSW5saW5l
cy5oIgorI2luY2x1ZGUgIlN0cnVjdHVyZUlubGluZXMuaCIKKworbmFtZXNwYWNlIEpTQyB7CisK
K2NvbnN0IENsYXNzSW5mbyBKU01vZHVsZVJlY29yZDo6c19pbmZvID0geyAiTW9kdWxlUmVjb3Jk
IiwgJkJhc2U6OnNfaW5mbywgMCwgQ1JFQVRFX01FVEhPRF9UQUJMRShKU01vZHVsZVJlY29yZCkg
fTsKKwordm9pZCBKU01vZHVsZVJlY29yZDo6ZGVzdHJveShKU0NlbGwqIGNlbGwpCit7CisgICAg
SlNNb2R1bGVSZWNvcmQqIHRoaXNPYmplY3QgPSBqc0Nhc3Q8SlNNb2R1bGVSZWNvcmQqPihjZWxs
KTsKKyAgICB0aGlzT2JqZWN0LT5KU01vZHVsZVJlY29yZDo6fkpTTW9kdWxlUmVjb3JkKCk7Cit9
CisKKwordm9pZCBKU01vZHVsZVJlY29yZDo6ZmluaXNoQ3JlYXRpb24oVk0mIHZtKQoreworICAg
IEJhc2U6OmZpbmlzaENyZWF0aW9uKHZtKTsKKyAgICBBU1NFUlQoaW5oZXJpdHMoaW5mbygpKSk7
CisgICAgcHV0RGlyZWN0KHZtLCBJZGVudGlmaWVyOjpmcm9tU3RyaW5nKCZ2bSwgQVNDSUlMaXRl
cmFsKCJyZWdpc3RyeUVudHJ5IikpLCBqc1VuZGVmaW5lZCgpKTsKK30KKworYXV0byBKU01vZHVs
ZVJlY29yZDo6RXhwb3J0RW50cnk6OmNyZWF0ZUxvY2FsKGNvbnN0IElkZW50aWZpZXImIGV4cG9y
dE5hbWUsIGNvbnN0IElkZW50aWZpZXImIGxvY2FsTmFtZSwgY29uc3QgVmFyaWFibGVFbnZpcm9u
bWVudEVudHJ5JiB2YXJpYWJsZSkgLT4gRXhwb3J0RW50cnkKK3sKKyAgICByZXR1cm4gRXhwb3J0
RW50cnkgeyBUeXBlOjpMb2NhbCwgZXhwb3J0TmFtZSwgSWRlbnRpZmllcigpLCBJZGVudGlmaWVy
KCksIGxvY2FsTmFtZSwgdmFyaWFibGUgfTsKK30KKworYXV0byBKU01vZHVsZVJlY29yZDo6RXhw
b3J0RW50cnk6OmNyZWF0ZU5hbWVzcGFjZShjb25zdCBJZGVudGlmaWVyJiBleHBvcnROYW1lLCBj
b25zdCBJZGVudGlmaWVyJiBtb2R1bGVOYW1lKSAtPiBFeHBvcnRFbnRyeQoreworICAgIHJldHVy
biBFeHBvcnRFbnRyeSB7IFR5cGU6Ok5hbWVzcGFjZSwgZXhwb3J0TmFtZSwgbW9kdWxlTmFtZSwg
SWRlbnRpZmllcigpLCBJZGVudGlmaWVyKCksIFZhcmlhYmxlRW52aXJvbm1lbnRFbnRyeSgpIH07
Cit9CisKK2F1dG8gSlNNb2R1bGVSZWNvcmQ6OkV4cG9ydEVudHJ5OjpjcmVhdGVJbmRpcmVjdChj
b25zdCBJZGVudGlmaWVyJiBleHBvcnROYW1lLCBjb25zdCBJZGVudGlmaWVyJiBpbXBvcnROYW1l
LCBjb25zdCBJZGVudGlmaWVyJiBtb2R1bGVOYW1lKSAtPiBFeHBvcnRFbnRyeQoreworICAgIHJl
dHVybiBFeHBvcnRFbnRyeSB7IFR5cGU6OkluZGlyZWN0LCBleHBvcnROYW1lLCBtb2R1bGVOYW1l
LCBpbXBvcnROYW1lLCBJZGVudGlmaWVyKCksIFZhcmlhYmxlRW52aXJvbm1lbnRFbnRyeSgpIH07
Cit9CisKK3N0YXRpYyBTdHJpbmcgcHJpbnRhYmxlTmFtZShjb25zdCBSZWZQdHI8VW5pcXVlZFN0
cmluZ0ltcGw+JiB1aWQpCit7CisgICAgaWYgKHVpZC0+aXNTeW1ib2woKSkKKyAgICAgICAgcmV0
dXJuIHVpZC5nZXQoKTsKKyAgICByZXR1cm4gV1RGOjptYWtlU3RyaW5nKCInIiwgU3RyaW5nKHVp
ZC5nZXQoKSksICInIik7Cit9CisKK3N0YXRpYyBTdHJpbmcgcHJpbnRhYmxlTmFtZShjb25zdCBJ
ZGVudGlmaWVyJiBpZGVudCkKK3sKKyAgICByZXR1cm4gcHJpbnRhYmxlTmFtZShpZGVudC5pbXBs
KCkpOworfQorCisKK3ZvaWQgSlNNb2R1bGVSZWNvcmQ6OmR1bXAoKQoreworICAgIGRhdGFMb2co
IlxuQW5hbHl6aW5nIE1vZHVsZVJlY29yZFxuIik7CisKKyAgICBkYXRhTG9nKCIgICAgRGVwZW5k
ZW5jaWVzOiAiLCBtX3JlcXVlc3RlZE1vZHVsZXMuc2l6ZSgpLCAiIG1vZHVsZXNcbiIpOworICAg
IGZvciAoY29uc3QgYXV0byYgbW9kdWxlTmFtZSA6IG1fcmVxdWVzdGVkTW9kdWxlcykKKyAgICAg
ICAgZGF0YUxvZygiICAgICAgbW9kdWxlKCIsIHByaW50YWJsZU5hbWUobW9kdWxlTmFtZSksICIp
XG4iKTsKKworICAgIGRhdGFMb2coIiAgICBJbXBvcnQ6ICIsIG1faW1wb3J0RW50cmllcy5zaXpl
KCksICIgZW50cmllc1xuIik7CisgICAgZm9yIChjb25zdCBhdXRvJiBwYWlyIDogbV9pbXBvcnRF
bnRyaWVzKQorICAgICAgICBkYXRhTG9nKCIgICAgICBpbXBvcnQoIiwgcHJpbnRhYmxlTmFtZShw
YWlyLnZhbHVlLmltcG9ydE5hbWUpLCAiKSwgbG9jYWwoIiwgcHJpbnRhYmxlTmFtZShwYWlyLnZh
bHVlLmxvY2FsTmFtZSksICIpLCBtb2R1bGUoIiwgcHJpbnRhYmxlTmFtZShwYWlyLnZhbHVlLm1v
ZHVsZVJlcXVlc3QpLCAiKVxuIik7CisKKyAgICBkYXRhTG9nKCIgICAgRXhwb3J0OiAiLCBtX2V4
cG9ydEVudHJpZXMuc2l6ZSgpLCAiIGVudHJpZXNcbiIpOworICAgIGZvciAoY29uc3QgYXV0byYg
cGFpciA6IG1fZXhwb3J0RW50cmllcykgeworICAgICAgICBjb25zdCBFeHBvcnRFbnRyeSYgZW50
cnkgPSBwYWlyLnZhbHVlOworICAgICAgICBzd2l0Y2ggKGVudHJ5LnR5cGUpIHsKKyAgICAgICAg
Y2FzZSBFeHBvcnRFbnRyeTo6VHlwZTo6TG9jYWw6CisgICAgICAgICAgICBkYXRhTG9nKCIgICAg
ICBbTG9jYWxdICIsICJleHBvcnQoIiwgcHJpbnRhYmxlTmFtZShlbnRyeS5leHBvcnROYW1lKSwg
IiksIGxvY2FsKCIsIHByaW50YWJsZU5hbWUoZW50cnkubG9jYWxOYW1lKSwgIilcbiIpOworICAg
ICAgICAgICAgYnJlYWs7CisKKyAgICAgICAgY2FzZSBFeHBvcnRFbnRyeTo6VHlwZTo6TmFtZXNw
YWNlOgorICAgICAgICAgICAgZGF0YUxvZygiICAgICAgW05hbWVzcGFjZV0gIiwgImV4cG9ydCgi
LCBwcmludGFibGVOYW1lKGVudHJ5LmV4cG9ydE5hbWUpLCAiKSwgbW9kdWxlKCIsIHByaW50YWJs
ZU5hbWUoZW50cnkubW9kdWxlTmFtZSksICIpXG4iKTsKKyAgICAgICAgICAgIGJyZWFrOworCisg
ICAgICAgIGNhc2UgRXhwb3J0RW50cnk6OlR5cGU6OkluZGlyZWN0OgorICAgICAgICAgICAgZGF0
YUxvZygiICAgICAgW0luZGlyZWN0XSAiLCAiZXhwb3J0KCIsIHByaW50YWJsZU5hbWUoZW50cnku
ZXhwb3J0TmFtZSksICIpLCBpbXBvcnQoIiwgcHJpbnRhYmxlTmFtZShlbnRyeS5pbXBvcnROYW1l
KSwgIiksIG1vZHVsZSgiLCBwcmludGFibGVOYW1lKGVudHJ5Lm1vZHVsZU5hbWUpLCAiKVxuIik7
CisgICAgICAgICAgICBicmVhazsKKyAgICAgICAgfQorICAgIH0KKyAgICBmb3IgKGNvbnN0IGF1
dG8mIG1vZHVsZU5hbWUgOiBtX3N0YXJFeHBvcnRFbnRyaWVzKQorICAgICAgICBkYXRhTG9nKCIg
ICAgICBbU3Rhcl0gbW9kdWxlKCIsIHByaW50YWJsZU5hbWUobW9kdWxlTmFtZS5nZXQoKSksICIp
XG4iKTsKK30KKworfSAvLyBuYW1lc3BhY2UgSlNDCmRpZmYgLS1naXQgYS9Tb3VyY2UvSmF2YVNj
cmlwdENvcmUvcnVudGltZS9KU01vZHVsZVJlY29yZC5oIGIvU291cmNlL0phdmFTY3JpcHRDb3Jl
L3J1bnRpbWUvSlNNb2R1bGVSZWNvcmQuaApuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwLi45NmUyZmRmNDUwZTVkYjg3Mjlj
NWZjYzU1ZmI3OGQyYzRmNmM5NzgxCi0tLSAvZGV2L251bGwKKysrIGIvU291cmNlL0phdmFTY3Jp
cHRDb3JlL3J1bnRpbWUvSlNNb2R1bGVSZWNvcmQuaApAQCAtMCwwICsxLDE1NyBAQAorLyoKKyAq
IENvcHlyaWdodCAoQykgMjAxNSBBcHBsZSBJbmMuIEFsbCByaWdodHMgcmVzZXJ2ZWQuCisgKgor
ICogUmVkaXN0cmlidXRpb24gYW5kIHVzZSBpbiBzb3VyY2UgYW5kIGJpbmFyeSBmb3Jtcywgd2l0
aCBvciB3aXRob3V0CisgKiBtb2RpZmljYXRpb24sIGFyZSBwZXJtaXR0ZWQgcHJvdmlkZWQgdGhh
dCB0aGUgZm9sbG93aW5nIGNvbmRpdGlvbnMKKyAqIGFyZSBtZXQ6CisgKiAxLiBSZWRpc3RyaWJ1
dGlvbnMgb2Ygc291cmNlIGNvZGUgbXVzdCByZXRhaW4gdGhlIGFib3ZlIGNvcHlyaWdodAorICog
ICAgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNj
bGFpbWVyLgorICogMi4gUmVkaXN0cmlidXRpb25zIGluIGJpbmFyeSBmb3JtIG11c3QgcmVwcm9k
dWNlIHRoZSBhYm92ZSBjb3B5cmlnaHQKKyAqICAgIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRp
dGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lciBpbiB0aGUKKyAqICAgIGRvY3VtZW50
YXRpb24gYW5kL29yIG90aGVyIG1hdGVyaWFscyBwcm92aWRlZCB3aXRoIHRoZSBkaXN0cmlidXRp
b24uCisgKgorICogVEhJUyBTT0ZUV0FSRSBJUyBQUk9WSURFRCBCWSBBUFBMRSBJTkMuIGBgQVMg
SVMnJyBBTkQgQU5ZCisgKiBFWFBSRVNTIE9SIElNUExJRUQgV0FSUkFOVElFUywgSU5DTFVESU5H
LCBCVVQgTk9UIExJTUlURUQgVE8sIFRIRQorICogSU1QTElFRCBXQVJSQU5USUVTIE9GIE1FUkNI
QU5UQUJJTElUWSBBTkQgRklUTkVTUyBGT1IgQSBQQVJUSUNVTEFSCisgKiBQVVJQT1NFIEFSRSBE
SVNDTEFJTUVELiAgSU4gTk8gRVZFTlQgU0hBTEwgQVBQTEUgSU5DLiBPUgorICogQ09OVFJJQlVU
T1JTIEJFIExJQUJMRSBGT1IgQU5ZIERJUkVDVCwgSU5ESVJFQ1QsIElOQ0lERU5UQUwsIFNQRUNJ
QUwsCisgKiBFWEVNUExBUlksIE9SIENPTlNFUVVFTlRJQUwgREFNQUdFUyAoSU5DTFVESU5HLCBC
VVQgTk9UIExJTUlURUQgVE8sCisgKiBQUk9DVVJFTUVOVCBPRiBTVUJTVElUVVRFIEdPT0RTIE9S
IFNFUlZJQ0VTOyBMT1NTIE9GIFVTRSwgREFUQSwgT1IKKyAqIFBST0ZJVFM7IE9SIEJVU0lORVNT
IElOVEVSUlVQVElPTikgSE9XRVZFUiBDQVVTRUQgQU5EIE9OIEFOWSBUSEVPUlkKKyAqIE9GIExJ
QUJJTElUWSwgV0hFVEhFUiBJTiBDT05UUkFDVCwgU1RSSUNUIExJQUJJTElUWSwgT1IgVE9SVAor
ICogKElOQ0xVRElORyBORUdMSUdFTkNFIE9SIE9USEVSV0lTRSkgQVJJU0lORyBJTiBBTlkgV0FZ
IE9VVCBPRiBUSEUgVVNFCisgKiBPRiBUSElTIFNPRlRXQVJFLCBFVkVOIElGIEFEVklTRUQgT0Yg
VEhFIFBPU1NJQklMSVRZIE9GIFNVQ0ggREFNQUdFLgorICovCisKKyNpZm5kZWYgSlNNb2R1bGVS
ZWNvcmRfaAorI2RlZmluZSBKU01vZHVsZVJlY29yZF9oCisKKyNpbmNsdWRlICJJZGVudGlmaWVy
LmgiCisjaW5jbHVkZSAiSlNEZXN0cnVjdGlibGVPYmplY3QuaCIKKyNpbmNsdWRlICJWYXJpYWJs
ZUVudmlyb25tZW50LmgiCisjaW5jbHVkZSA8d3RmL0hhc2hNYXAuaD4KKyNpbmNsdWRlIDx3dGYv
TGlzdEhhc2hTZXQuaD4KKworbmFtZXNwYWNlIEpTQyB7CisKKy8vIEJhc2VkIG9uIHRoZSBTb3Vy
Y2UgVGV4dCBNb2R1bGUgUmVjb3JkCisvLyBodHRwOi8vd3d3LmVjbWEtaW50ZXJuYXRpb25hbC5v
cmcvZWNtYS0yNjIvNi4wLyNzZWMtc291cmNlLXRleHQtbW9kdWxlLXJlY29yZHMKK2NsYXNzIEpT
TW9kdWxlUmVjb3JkIDogcHVibGljIEpTRGVzdHJ1Y3RpYmxlT2JqZWN0IHsKK3B1YmxpYzoKKyAg
ICB0eXBlZGVmIEpTRGVzdHJ1Y3RpYmxlT2JqZWN0IEJhc2U7CisKKyAgICBzdHJ1Y3QgRXhwb3J0
RW50cnkgeworICAgICAgICBlbnVtIGNsYXNzIFR5cGUgeworICAgICAgICAgICAgTG9jYWwsCisg
ICAgICAgICAgICBOYW1lc3BhY2UsCisgICAgICAgICAgICBJbmRpcmVjdAorICAgICAgICB9Owor
CisgICAgICAgIHN0YXRpYyBFeHBvcnRFbnRyeSBjcmVhdGVMb2NhbChjb25zdCBJZGVudGlmaWVy
JiBleHBvcnROYW1lLCBjb25zdCBJZGVudGlmaWVyJiBsb2NhbE5hbWUsIGNvbnN0IFZhcmlhYmxl
RW52aXJvbm1lbnRFbnRyeSYpOworICAgICAgICBzdGF0aWMgRXhwb3J0RW50cnkgY3JlYXRlTmFt
ZXNwYWNlKGNvbnN0IElkZW50aWZpZXImIGV4cG9ydE5hbWUsIGNvbnN0IElkZW50aWZpZXImIG1v
ZHVsZU5hbWUpOworICAgICAgICBzdGF0aWMgRXhwb3J0RW50cnkgY3JlYXRlSW5kaXJlY3QoY29u
c3QgSWRlbnRpZmllciYgZXhwb3J0TmFtZSwgY29uc3QgSWRlbnRpZmllciYgaW1wb3J0TmFtZSwg
Y29uc3QgSWRlbnRpZmllciYgbW9kdWxlTmFtZSk7CisKKyAgICAgICAgVHlwZSB0eXBlOworICAg
ICAgICBJZGVudGlmaWVyIGV4cG9ydE5hbWU7CisgICAgICAgIElkZW50aWZpZXIgbW9kdWxlTmFt
ZTsKKyAgICAgICAgSWRlbnRpZmllciBpbXBvcnROYW1lOworICAgICAgICBJZGVudGlmaWVyIGxv
Y2FsTmFtZTsKKyAgICAgICAgVmFyaWFibGVFbnZpcm9ubWVudEVudHJ5IHZhcmlhYmxlOworICAg
IH07CisKKyAgICBzdHJ1Y3QgSW1wb3J0RW50cnkgeworICAgICAgICBJZGVudGlmaWVyIG1vZHVs
ZVJlcXVlc3Q7CisgICAgICAgIElkZW50aWZpZXIgaW1wb3J0TmFtZTsKKyAgICAgICAgSWRlbnRp
ZmllciBsb2NhbE5hbWU7CisKKyAgICAgICAgYm9vbCBpc05hbWVzcGFjZShWTSYgdm0pIGNvbnN0
CisgICAgICAgIHsKKyAgICAgICAgICAgIHJldHVybiBpbXBvcnROYW1lID09IHZtLnByb3BlcnR5
TmFtZXMtPnRpbWVzSWRlbnRpZmllcjsKKyAgICAgICAgfQorICAgIH07CisKKyAgICB0eXBlZGVm
IFdURjo6TGlzdEhhc2hTZXQ8UmVmUHRyPFVuaXF1ZWRTdHJpbmdJbXBsPiwgSWRlbnRpZmllclJl
cEhhc2g+IE9yZGVyZWRJZGVudGlmaWVyU2V0OworICAgIHR5cGVkZWYgSGFzaE1hcDxSZWZQdHI8
VW5pcXVlZFN0cmluZ0ltcGw+LCBJbXBvcnRFbnRyeSwgSWRlbnRpZmllclJlcEhhc2gsIEhhc2hU
cmFpdHM8UmVmUHRyPFVuaXF1ZWRTdHJpbmdJbXBsPj4+IEltcG9ydE1hcDsKKyAgICB0eXBlZGVm
IEhhc2hNYXA8UmVmUHRyPFVuaXF1ZWRTdHJpbmdJbXBsPiwgRXhwb3J0RW50cnksIElkZW50aWZp
ZXJSZXBIYXNoLCBIYXNoVHJhaXRzPFJlZlB0cjxVbmlxdWVkU3RyaW5nSW1wbD4+PiBFeHBvcnRN
YXA7CisKKyAgICBERUNMQVJFX0VYUE9SVF9JTkZPOworCisgICAgc3RhdGljIFN0cnVjdHVyZSog
Y3JlYXRlU3RydWN0dXJlKFZNJiB2bSwgSlNHbG9iYWxPYmplY3QqIGdsb2JhbE9iamVjdCwgSlNW
YWx1ZSBwcm90b3R5cGUpCisgICAgeworICAgICAgICByZXR1cm4gU3RydWN0dXJlOjpjcmVhdGUo
dm0sIGdsb2JhbE9iamVjdCwgcHJvdG90eXBlLCBUeXBlSW5mbyhPYmplY3RUeXBlLCBTdHJ1Y3R1
cmVGbGFncyksIGluZm8oKSk7CisgICAgfQorCisgICAgc3RhdGljIEpTTW9kdWxlUmVjb3JkKiBj
cmVhdGUoVk0mIHZtLCBTdHJ1Y3R1cmUqIHN0cnVjdHVyZSkKKyAgICB7CisgICAgICAgIEpTTW9k
dWxlUmVjb3JkKiBpbnN0YW5jZSA9IG5ldyAoTm90TnVsbCwgYWxsb2NhdGVDZWxsPEpTTW9kdWxl
UmVjb3JkPih2bS5oZWFwKSkgSlNNb2R1bGVSZWNvcmQodm0sIHN0cnVjdHVyZSk7CisgICAgICAg
IGluc3RhbmNlLT5maW5pc2hDcmVhdGlvbih2bSk7CisgICAgICAgIHJldHVybiBpbnN0YW5jZTsK
KyAgICB9CisKKyAgICBzdGF0aWMgSlNNb2R1bGVSZWNvcmQqIGNyZWF0ZShFeGVjU3RhdGUqIGV4
ZWMsIFN0cnVjdHVyZSogc3RydWN0dXJlKQorICAgIHsKKyAgICAgICAgcmV0dXJuIGNyZWF0ZShl
eGVjLT52bSgpLCBzdHJ1Y3R1cmUpOworICAgIH0KKworICAgIHZvaWQgYXBwZW5kUmVxdWVzdGVk
TW9kdWxlKGNvbnN0IElkZW50aWZpZXImKTsKKyAgICB2b2lkIGFkZFN0YXJFeHBvcnRFbnRyeShj
b25zdCBJZGVudGlmaWVyJik7CisgICAgdm9pZCBhZGRJbXBvcnRFbnRyeShjb25zdCBJbXBvcnRF
bnRyeSYpOworICAgIHZvaWQgYWRkRXhwb3J0RW50cnkoY29uc3QgRXhwb3J0RW50cnkmKTsKKwor
ICAgIGNvbnN0IEltcG9ydEVudHJ5JiBsb29rVXBJbXBvcnRFbnRyeShjb25zdCBSZWZQdHI8VW5p
cXVlZFN0cmluZ0ltcGw+JiBsb2NhbE5hbWUpOworCisgICAgY29uc3QgT3JkZXJlZElkZW50aWZp
ZXJTZXQmIHJlcXVlc3RlZE1vZHVsZXMoKSBjb25zdCB7IHJldHVybiBtX3JlcXVlc3RlZE1vZHVs
ZXM7IH0KKworICAgIHZvaWQgZHVtcCgpOworCitwcml2YXRlOgorICAgIEpTTW9kdWxlUmVjb3Jk
KFZNJiB2bSwgU3RydWN0dXJlKiBzdHJ1Y3R1cmUpCisgICAgICAgIDogQmFzZSh2bSwgc3RydWN0
dXJlKQorICAgIHsKKyAgICB9CisKKyAgICB2b2lkIGZpbmlzaENyZWF0aW9uKFZNJik7CisKKyAg
ICBzdGF0aWMgdm9pZCBkZXN0cm95KEpTQ2VsbCopOworCisgICAgLy8gTWFwIGxvY2FsTmFtZSAt
PiBJbXBvcnRFbnRyeS4KKyAgICBJbXBvcnRNYXAgbV9pbXBvcnRFbnRyaWVzOworCisgICAgLy8g
TWFwIGV4cG9ydE5hbWUgLT4gRXhwb3J0RW50cnkuCisgICAgRXhwb3J0TWFwIG1fZXhwb3J0RW50
cmllczsKKworICAgIElkZW50aWZpZXJTZXQgbV9zdGFyRXhwb3J0RW50cmllczsKKworICAgIC8v
IFNhdmUgdGhlIG9jY3VycmVuY2Ugb3JkZXIgc2luY2UgdGhlIG1vZHVsZSBsb2FkZXIgbG9hZHMg
YW5kIHJ1bnMgdGhlIG1vZHVsZXMgaW4gdGhpcyBvcmRlci4KKyAgICAvLyBodHRwOi8vd3d3LmVj
bWEtaW50ZXJuYXRpb25hbC5vcmcvZWNtYS0yNjIvNi4wLyNzZWMtbW9kdWxlZXZhbHVhdGlvbgor
ICAgIE9yZGVyZWRJZGVudGlmaWVyU2V0IG1fcmVxdWVzdGVkTW9kdWxlczsKK307CisKK2lubGlu
ZSB2b2lkIEpTTW9kdWxlUmVjb3JkOjphcHBlbmRSZXF1ZXN0ZWRNb2R1bGUoY29uc3QgSWRlbnRp
ZmllciYgbW9kdWxlTmFtZSkKK3sKKyAgICBtX3JlcXVlc3RlZE1vZHVsZXMuYWRkKG1vZHVsZU5h
bWUuaW1wbCgpKTsKK30KKworaW5saW5lIHZvaWQgSlNNb2R1bGVSZWNvcmQ6OmFkZEltcG9ydEVu
dHJ5KGNvbnN0IEltcG9ydEVudHJ5JiBlbnRyeSkKK3sKKyAgICBtX2ltcG9ydEVudHJpZXMuYWRk
KGVudHJ5LmxvY2FsTmFtZS5pbXBsKCksIGVudHJ5KTsKK30KKworaW5saW5lIHZvaWQgSlNNb2R1
bGVSZWNvcmQ6OmFkZEV4cG9ydEVudHJ5KGNvbnN0IEV4cG9ydEVudHJ5JiBlbnRyeSkKK3sKKyAg
ICBtX2V4cG9ydEVudHJpZXMuYWRkKGVudHJ5LmV4cG9ydE5hbWUuaW1wbCgpLCBlbnRyeSk7Cit9
CisKK2lubGluZSB2b2lkIEpTTW9kdWxlUmVjb3JkOjphZGRTdGFyRXhwb3J0RW50cnkoY29uc3Qg
SWRlbnRpZmllciYgbW9kdWxlTmFtZSkKK3sKKyAgICBtX3N0YXJFeHBvcnRFbnRyaWVzLmFkZCht
b2R1bGVOYW1lLmltcGwoKSk7Cit9CisKK2lubGluZSBhdXRvIEpTTW9kdWxlUmVjb3JkOjpsb29r
VXBJbXBvcnRFbnRyeShjb25zdCBSZWZQdHI8VW5pcXVlZFN0cmluZ0ltcGw+JiBsb2NhbE5hbWUp
IC0+IGNvbnN0IEltcG9ydEVudHJ5JgoreworICAgIHJldHVybiAoKm1faW1wb3J0RW50cmllcy5m
aW5kKGxvY2FsTmFtZSkpLnZhbHVlOworfQorCit9IC8vIG5hbWVzcGFjZSBKU0MKKworI2VuZGlm
IC8vIEpTTW9kdWxlUmVjb3JkX2gKZGlmZiAtLWdpdCBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9y
dW50aW1lL01hcFByb3RvdHlwZS5jcHAgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9N
YXBQcm90b3R5cGUuY3BwCmluZGV4IDk2ZGVhZTcxNGNhNTFhNjdmZDE2NDA4ZTVjMzlkM2M2NTY3
Mzg5NGQuLmU5NzJmNTQwZWZiMmYxZTZhNDhkMTI1MDNmMDMxODk3MWY0MmRmODIgMTAwNjQ0Ci0t
LSBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL01hcFByb3RvdHlwZS5jcHAKKysrIGIv
U291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvTWFwUHJvdG90eXBlLmNwcApAQCAtNjgsNiAr
NjgsMTAgQEAgdm9pZCBNYXBQcm90b3R5cGU6OmZpbmlzaENyZWF0aW9uKFZNJiB2bSwgSlNHbG9i
YWxPYmplY3QqIGdsb2JhbE9iamVjdCkKICAgICBKU0NfTkFUSVZFX0ZVTkNUSU9OKHZtLnByb3Bl
cnR5TmFtZXMtPmtleXMsIG1hcFByb3RvRnVuY0tleXMsIERvbnRFbnVtLCAwKTsKICAgICBKU0Nf
TkFUSVZFX0ZVTkNUSU9OKHZtLnByb3BlcnR5TmFtZXMtPnZhbHVlcywgbWFwUHJvdG9GdW5jVmFs
dWVzLCBEb250RW51bSwgMCk7CiAKKyAgICAvLyBQcml2YXRlIGdldCAvIHNldCBvcGVyYXRpb25z
LgorICAgIEpTQ19OQVRJVkVfRlVOQ1RJT04odm0ucHJvcGVydHlOYW1lcy0+Z2V0UHJpdmF0ZU5h
bWUsIG1hcFByb3RvRnVuY0dldCwgRG9udEVudW0sIDEpOworICAgIEpTQ19OQVRJVkVfRlVOQ1RJ
T04odm0ucHJvcGVydHlOYW1lcy0+c2V0UHJpdmF0ZU5hbWUsIG1hcFByb3RvRnVuY1NldCwgRG9u
dEVudW0sIDIpOworCiAgICAgSlNGdW5jdGlvbiogZW50cmllcyA9IEpTRnVuY3Rpb246OmNyZWF0
ZSh2bSwgZ2xvYmFsT2JqZWN0LCAwLCB2bS5wcm9wZXJ0eU5hbWVzLT5lbnRyaWVzLnN0cmluZygp
LCBtYXBQcm90b0Z1bmNFbnRyaWVzKTsKICAgICBwdXREaXJlY3RXaXRob3V0VHJhbnNpdGlvbih2
bSwgdm0ucHJvcGVydHlOYW1lcy0+ZW50cmllcywgZW50cmllcywgRG9udEVudW0pOwogICAgIHB1
dERpcmVjdFdpdGhvdXRUcmFuc2l0aW9uKHZtLCB2bS5wcm9wZXJ0eU5hbWVzLT5pdGVyYXRvclN5
bWJvbCwgZW50cmllcywgRG9udEVudW0pOwpkaWZmIC0tZ2l0IGEvU291cmNlL0phdmFTY3JpcHRD
b3JlL3J1bnRpbWUvTW9kdWxlTG9hZGVyT2JqZWN0LmNwcCBiL1NvdXJjZS9KYXZhU2NyaXB0Q29y
ZS9ydW50aW1lL01vZHVsZUxvYWRlck9iamVjdC5jcHAKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5k
ZXggMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMC4uZGE5MGFlYmRhOTQ2
YWYyYTJjNzkxYjBiYTQ5NzUwMzUwYjE0ODFhYgotLS0gL2Rldi9udWxsCisrKyBiL1NvdXJjZS9K
YXZhU2NyaXB0Q29yZS9ydW50aW1lL01vZHVsZUxvYWRlck9iamVjdC5jcHAKQEAgLTAsMCArMSwz
MDMgQEAKKy8qCisgKiBDb3B5cmlnaHQgKEMpIDIwMTUgQXBwbGUgSW5jLiBBbGwgUmlnaHRzIFJl
c2VydmVkLgorICoKKyAqIFJlZGlzdHJpYnV0aW9uIGFuZCB1c2UgaW4gc291cmNlIGFuZCBiaW5h
cnkgZm9ybXMsIHdpdGggb3Igd2l0aG91dAorICogbW9kaWZpY2F0aW9uLCBhcmUgcGVybWl0dGVk
IHByb3ZpZGVkIHRoYXQgdGhlIGZvbGxvd2luZyBjb25kaXRpb25zCisgKiBhcmUgbWV0OgorICog
MS4gUmVkaXN0cmlidXRpb25zIG9mIHNvdXJjZSBjb2RlIG11c3QgcmV0YWluIHRoZSBhYm92ZSBj
b3B5cmlnaHQKKyAqICAgIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBm
b2xsb3dpbmcgZGlzY2xhaW1lci4KKyAqIDIuIFJlZGlzdHJpYnV0aW9ucyBpbiBiaW5hcnkgZm9y
bSBtdXN0IHJlcHJvZHVjZSB0aGUgYWJvdmUgY29weXJpZ2h0CisgKiAgICBub3RpY2UsIHRoaXMg
bGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIgaW4gdGhlCisg
KiAgICBkb2N1bWVudGF0aW9uIGFuZC9vciBvdGhlciBtYXRlcmlhbHMgcHJvdmlkZWQgd2l0aCB0
aGUgZGlzdHJpYnV0aW9uLgorICoKKyAqIFRISVMgU09GVFdBUkUgSVMgUFJPVklERUQgQlkgQVBQ
TEUgSU5DLiBgYEFTIElTJycgQU5EIEFOWQorICogRVhQUkVTUyBPUiBJTVBMSUVEIFdBUlJBTlRJ
RVMsIElOQ0xVRElORywgQlVUIE5PVCBMSU1JVEVEIFRPLCBUSEUKKyAqIElNUExJRUQgV0FSUkFO
VElFUyBPRiBNRVJDSEFOVEFCSUxJVFkgQU5EIEZJVE5FU1MgRk9SIEEgUEFSVElDVUxBUgorICog
UFVSUE9TRSBBUkUgRElTQ0xBSU1FRC4gIElOIE5PIEVWRU5UIFNIQUxMIEFQUExFIElOQy4gT1IK
KyAqIENPTlRSSUJVVE9SUyBCRSBMSUFCTEUgRk9SIEFOWSBESVJFQ1QsIElORElSRUNULCBJTkNJ
REVOVEFMLCBTUEVDSUFMLAorICogRVhFTVBMQVJZLCBPUiBDT05TRVFVRU5USUFMIERBTUFHRVMg
KElOQ0xVRElORywgQlVUIE5PVCBMSU1JVEVEIFRPLAorICogUFJPQ1VSRU1FTlQgT0YgU1VCU1RJ
VFVURSBHT09EUyBPUiBTRVJWSUNFUzsgTE9TUyBPRiBVU0UsIERBVEEsIE9SCisgKiBQUk9GSVRT
OyBPUiBCVVNJTkVTUyBJTlRFUlJVUFRJT04pIEhPV0VWRVIgQ0FVU0VEIEFORCBPTiBBTlkgVEhF
T1JZCisgKiBPRiBMSUFCSUxJVFksIFdIRVRIRVIgSU4gQ09OVFJBQ1QsIFNUUklDVCBMSUFCSUxJ
VFksIE9SIFRPUlQKKyAqIChJTkNMVURJTkcgTkVHTElHRU5DRSBPUiBPVEhFUldJU0UpIEFSSVNJ
TkcgSU4gQU5ZIFdBWSBPVVQgT0YgVEhFIFVTRQorICogT0YgVEhJUyBTT0ZUV0FSRSwgRVZFTiBJ
RiBBRFZJU0VEIE9GIFRIRSBQT1NTSUJJTElUWSBPRiBTVUNIIERBTUFHRS4KKyAqLworCisjaW5j
bHVkZSAiY29uZmlnLmgiCisjaW5jbHVkZSAiTW9kdWxlTG9hZGVyT2JqZWN0LmgiCisKKyNpbmNs
dWRlICJCdWlsdGluTmFtZXMuaCIKKyNpbmNsdWRlICJFcnJvci5oIgorI2luY2x1ZGUgIkV4Y2Vw
dGlvbi5oIgorI2luY2x1ZGUgIkpTQ0lubGluZXMuaCIKKyNpbmNsdWRlICJKU0dsb2JhbE9iamVj
dEZ1bmN0aW9ucy5oIgorI2luY2x1ZGUgIkpTSW50ZXJuYWxQcm9taXNlLmgiCisjaW5jbHVkZSAi
SlNJbnRlcm5hbFByb21pc2VEZWZlcnJlZC5oIgorI2luY2x1ZGUgIkpTTWFwLmgiCisjaW5jbHVk
ZSAiSlNNb2R1bGVSZWNvcmQuaCIKKyNpbmNsdWRlICJNb2R1bGVBbmFseXplci5oIgorI2luY2x1
ZGUgIk5vZGVzLmgiCisjaW5jbHVkZSAiUGFyc2VyLmgiCisjaW5jbHVkZSAiUGFyc2VyRXJyb3Iu
aCIKKworbmFtZXNwYWNlIEpTQyB7CisKK3N0YXRpYyBFbmNvZGVkSlNWYWx1ZSBKU0NfSE9TVF9D
QUxMIG1vZHVsZUxvYWRlck9iamVjdFBhcnNlTW9kdWxlKEV4ZWNTdGF0ZSopOworc3RhdGljIEVu
Y29kZWRKU1ZhbHVlIEpTQ19IT1NUX0NBTEwgbW9kdWxlTG9hZGVyT2JqZWN0UmVxdWVzdGVkTW9k
dWxlcyhFeGVjU3RhdGUqKTsKK3N0YXRpYyBFbmNvZGVkSlNWYWx1ZSBKU0NfSE9TVF9DQUxMIG1v
ZHVsZUxvYWRlck9iamVjdFJlc29sdmUoRXhlY1N0YXRlKik7CitzdGF0aWMgRW5jb2RlZEpTVmFs
dWUgSlNDX0hPU1RfQ0FMTCBtb2R1bGVMb2FkZXJPYmplY3RGZXRjaChFeGVjU3RhdGUqKTsKK3N0
YXRpYyBFbmNvZGVkSlNWYWx1ZSBKU0NfSE9TVF9DQUxMIG1vZHVsZUxvYWRlck9iamVjdFRyYW5z
bGF0ZShFeGVjU3RhdGUqKTsKK3N0YXRpYyBFbmNvZGVkSlNWYWx1ZSBKU0NfSE9TVF9DQUxMIG1v
ZHVsZUxvYWRlck9iamVjdEluc3RhbnRpYXRlKEV4ZWNTdGF0ZSopOworCit9CisKKyNpbmNsdWRl
ICJNb2R1bGVMb2FkZXJPYmplY3QubHV0LmgiCisKK25hbWVzcGFjZSBKU0MgeworCitTVEFUSUNf
QVNTRVJUX0lTX1RSSVZJQUxMWV9ERVNUUlVDVElCTEUoTW9kdWxlTG9hZGVyT2JqZWN0KTsKKwor
Y29uc3QgQ2xhc3NJbmZvIE1vZHVsZUxvYWRlck9iamVjdDo6c19pbmZvID0geyAiTW9kdWxlTG9h
ZGVyIiwgJkJhc2U6OnNfaW5mbywgJm1vZHVsZUxvYWRlck9iamVjdFRhYmxlLCBDUkVBVEVfTUVU
SE9EX1RBQkxFKE1vZHVsZUxvYWRlck9iamVjdCkgfTsKKworLyogU291cmNlIGZvciBNb2R1bGVM
b2FkZXJPYmplY3QubHV0LmgKK0BiZWdpbiBtb2R1bGVMb2FkZXJPYmplY3RUYWJsZQorICAgIHNl
dFN0YXRlVG9NYXggICAgICAgICAgICAgIG1vZHVsZUxvYWRlck9iamVjdFNldFN0YXRlVG9NYXgg
ICAgICAgICAgICAgIERvbnRFbnVtfEZ1bmN0aW9uIDIKKyAgICBuZXdSZWdpc3RyeUVudHJ5ICAg
ICAgICAgICBtb2R1bGVMb2FkZXJPYmplY3ROZXdSZWdpc3RyeUVudHJ5ICAgICAgICAgICBEb250
RW51bXxGdW5jdGlvbiAxCisgICAgZW5zdXJlUmVnaXN0ZXJlZCAgICAgICAgICAgbW9kdWxlTG9h
ZGVyT2JqZWN0RW5zdXJlUmVnaXN0ZXJlZCAgICAgICAgICAgRG9udEVudW18RnVuY3Rpb24gMQor
ICAgIGZvcmNlRnVsZmlsbFByb21pc2UgICAgICAgIG1vZHVsZUxvYWRlck9iamVjdEZvcmNlRnVs
ZmlsbFByb21pc2UgICAgICAgIERvbnRFbnVtfEZ1bmN0aW9uIDIKKyAgICBmdWxmaWxsRmV0Y2gg
ICAgICAgICAgICAgICBtb2R1bGVMb2FkZXJPYmplY3RGdWxmaWxsRmV0Y2ggICAgICAgICAgICAg
ICBEb250RW51bXxGdW5jdGlvbiAyCisgICAgZnVsZmlsbFRyYW5zbGF0ZSAgICAgICAgICAgbW9k
dWxlTG9hZGVyT2JqZWN0RnVsZmlsbFRyYW5zbGF0ZSAgICAgICAgICAgRG9udEVudW18RnVuY3Rp
b24gMgorICAgIGZ1bGZpbGxJbnN0YW50aWF0ZSAgICAgICAgIG1vZHVsZUxvYWRlck9iamVjdEZ1
bGZpbGxJbnN0YW50aWF0ZSAgICAgICAgIERvbnRFbnVtfEZ1bmN0aW9uIDIKKyAgICBjb21taXRJ
bnN0YW50aWF0ZWQgICAgICAgICBtb2R1bGVMb2FkZXJPYmplY3RDb21taXRJbnN0YW50aWF0ZWQg
ICAgICAgICBEb250RW51bXxGdW5jdGlvbiAzCisgICAgaW5zdGFudGlhdGlvbiAgICAgICAgICAg
ICAgbW9kdWxlTG9hZGVyT2JqZWN0SW5zdGFudGlhdGlvbiAgICAgICAgICAgICAgRG9udEVudW18
RnVuY3Rpb24gMgorICAgIHJlcXVlc3RGZXRjaCAgICAgICAgICAgICAgIG1vZHVsZUxvYWRlck9i
amVjdFJlcXVlc3RGZXRjaCAgICAgICAgICAgICAgIERvbnRFbnVtfEZ1bmN0aW9uIDEKKyAgICBy
ZXF1ZXN0VHJhbnNsYXRlICAgICAgICAgICBtb2R1bGVMb2FkZXJPYmplY3RSZXF1ZXN0VHJhbnNs
YXRlICAgICAgICAgICBEb250RW51bXxGdW5jdGlvbiAxCisgICAgcmVxdWVzdEluc3RhbnRpYXRl
ICAgICAgICAgbW9kdWxlTG9hZGVyT2JqZWN0UmVxdWVzdEluc3RhbnRpYXRlICAgICAgICAgRG9u
dEVudW18RnVuY3Rpb24gMQorICAgIHJlcXVlc3RSZXNvbHZlRGVwZW5kZW5jaWVzIG1vZHVsZUxv
YWRlck9iamVjdFJlcXVlc3RSZXNvbHZlRGVwZW5kZW5jaWVzIERvbnRFbnVtfEZ1bmN0aW9uIDEK
KyAgICByZXF1ZXN0SW5zdGFudGlhdGVBbGwgICAgICBtb2R1bGVMb2FkZXJPYmplY3RSZXF1ZXN0
SW5zdGFudGlhdGVBbGwgICAgICBEb250RW51bXxGdW5jdGlvbiAxCisgICAgcHJvdmlkZSAgICAg
ICAgICAgICAgICAgICAgbW9kdWxlTG9hZGVyT2JqZWN0UHJvdmlkZSAgICAgICAgICAgICAgICAg
ICAgRG9udEVudW18RnVuY3Rpb24gMworICAgIHBhcnNlTW9kdWxlICAgICAgICAgICAgICAgIG1v
ZHVsZUxvYWRlck9iamVjdFBhcnNlTW9kdWxlICAgICAgICAgICAgICAgIERvbnRFbnVtfEZ1bmN0
aW9uIDEKKyAgICByZXF1ZXN0ZWRNb2R1bGVzICAgICAgICAgICBtb2R1bGVMb2FkZXJPYmplY3RS
ZXF1ZXN0ZWRNb2R1bGVzICAgICAgICAgICBEb250RW51bXxGdW5jdGlvbiAxCisgICAgcmVzb2x2
ZSAgICAgICAgICAgICAgICAgICAgbW9kdWxlTG9hZGVyT2JqZWN0UmVzb2x2ZSAgICAgICAgICAg
ICAgICAgICAgRG9udEVudW18RnVuY3Rpb24gMQorICAgIGZldGNoICAgICAgICAgICAgICAgICAg
ICAgIG1vZHVsZUxvYWRlck9iamVjdEZldGNoICAgICAgICAgICAgICAgICAgICAgIERvbnRFbnVt
fEZ1bmN0aW9uIDEKKyAgICB0cmFuc2xhdGUgICAgICAgICAgICAgICAgICBtb2R1bGVMb2FkZXJP
YmplY3RUcmFuc2xhdGUgICAgICAgICAgICAgICAgICBEb250RW51bXxGdW5jdGlvbiAyCisgICAg
aW5zdGFudGlhdGUgICAgICAgICAgICAgICAgbW9kdWxlTG9hZGVyT2JqZWN0SW5zdGFudGlhdGUg
ICAgICAgICAgICAgICAgRG9udEVudW18RnVuY3Rpb24gMgorQGVuZAorKi8KKworTW9kdWxlTG9h
ZGVyT2JqZWN0OjpNb2R1bGVMb2FkZXJPYmplY3QoVk0mIHZtLCBTdHJ1Y3R1cmUqIHN0cnVjdHVy
ZSkKKyAgICA6IEpTTm9uRmluYWxPYmplY3Qodm0sIHN0cnVjdHVyZSkKK3sKK30KKwordm9pZCBN
b2R1bGVMb2FkZXJPYmplY3Q6OmZpbmlzaENyZWF0aW9uKFZNJiB2bSwgSlNHbG9iYWxPYmplY3Qq
IGdsb2JhbE9iamVjdCkKK3sKKyAgICBCYXNlOjpmaW5pc2hDcmVhdGlvbih2bSk7CisgICAgQVNT
RVJUKGluaGVyaXRzKGluZm8oKSkpOworCisgICAgLy8gQ29uc3RhbnQgdmFsdWVzIGZvciB0aGUg
c3RhdGUuCisgICAgcHV0RGlyZWN0V2l0aG91dFRyYW5zaXRpb24odm0sIElkZW50aWZpZXI6OmZy
b21TdHJpbmcoJnZtLCAiRmV0Y2giKSwganNOdW1iZXIoU3RhdHVzOjpGZXRjaCkpOworICAgIHB1
dERpcmVjdFdpdGhvdXRUcmFuc2l0aW9uKHZtLCBJZGVudGlmaWVyOjpmcm9tU3RyaW5nKCZ2bSwg
IlRyYW5zbGF0ZSIpLCBqc051bWJlcihTdGF0dXM6OlRyYW5zbGF0ZSkpOworICAgIHB1dERpcmVj
dFdpdGhvdXRUcmFuc2l0aW9uKHZtLCBJZGVudGlmaWVyOjpmcm9tU3RyaW5nKCZ2bSwgIkluc3Rh
bnRpYXRlIiksIGpzTnVtYmVyKFN0YXR1czo6SW5zdGFudGlhdGUpKTsKKyAgICBwdXREaXJlY3RX
aXRob3V0VHJhbnNpdGlvbih2bSwgSWRlbnRpZmllcjo6ZnJvbVN0cmluZygmdm0sICJSZXNvbHZl
RGVwZW5kZW5jaWVzIiksIGpzTnVtYmVyKFN0YXR1czo6UmVzb2x2ZURlcGVuZGVuY2llcykpOwor
ICAgIHB1dERpcmVjdFdpdGhvdXRUcmFuc2l0aW9uKHZtLCBJZGVudGlmaWVyOjpmcm9tU3RyaW5n
KCZ2bSwgIkxpbmsiKSwganNOdW1iZXIoU3RhdHVzOjpMaW5rKSk7CisgICAgcHV0RGlyZWN0V2l0
aG91dFRyYW5zaXRpb24odm0sIElkZW50aWZpZXI6OmZyb21TdHJpbmcoJnZtLCAiUmVhZHkiKSwg
anNOdW1iZXIoU3RhdHVzOjpSZWFkeSkpOworCisgICAgcHV0RGlyZWN0V2l0aG91dFRyYW5zaXRp
b24odm0sIElkZW50aWZpZXI6OmZyb21TdHJpbmcoJnZtLCAicmVnaXN0cnkiKSwgSlNNYXA6OmNy
ZWF0ZSh2bSwgZ2xvYmFsT2JqZWN0LT5tYXBTdHJ1Y3R1cmUoKSkpOworfQorCitib29sIE1vZHVs
ZUxvYWRlck9iamVjdDo6Z2V0T3duUHJvcGVydHlTbG90KEpTT2JqZWN0KiBvYmplY3QsIEV4ZWNT
dGF0ZSogZXhlYywgUHJvcGVydHlOYW1lIHByb3BlcnR5TmFtZSwgUHJvcGVydHlTbG90ICZzbG90
KQoreworICAgIHJldHVybiBnZXRTdGF0aWNGdW5jdGlvblNsb3Q8QmFzZT4oZXhlYywgbW9kdWxl
TG9hZGVyT2JqZWN0VGFibGUsIGpzQ2FzdDxNb2R1bGVMb2FkZXJPYmplY3QqPihvYmplY3QpLCBw
cm9wZXJ0eU5hbWUsIHNsb3QpOworfQorCisvLyAtLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t
LS0gRnVuY3Rpb25zIC0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tCisKK3N0YXRpYyBT
dHJpbmcgcHJpbnRhYmxlTW9kdWxlS2V5KEV4ZWNTdGF0ZSogZXhlYywgSlNWYWx1ZSBrZXkpCit7
CisgICAgaWYgKGtleS5pc1N0cmluZygpIHx8IGtleS5pc1N5bWJvbCgpKQorICAgICAgICByZXR1
cm4ga2V5LnRvUHJvcGVydHlLZXkoZXhlYykuaW1wbCgpOworICAgIHJldHVybiBleGVjLT5wcm9w
ZXJ0eU5hbWVzKCkuZW1wdHlJZGVudGlmaWVyLmltcGwoKTsKK30KKworSlNWYWx1ZSBNb2R1bGVM
b2FkZXJPYmplY3Q6OnByb3ZpZGUoRXhlY1N0YXRlKiBleGVjLCBKU1ZhbHVlIGtleSwgU3RhdHVz
IHN0YXR1cywgY29uc3QgU3RyaW5nJiBzb3VyY2UpCit7CisgICAgSlNPYmplY3QqIGZ1bmN0aW9u
ID0ganNDYXN0PEpTT2JqZWN0Kj4oZ2V0KGV4ZWMsIGV4ZWMtPnByb3BlcnR5TmFtZXMoKS5idWls
dGluTmFtZXMoKS5wcm92aWRlUHVibGljTmFtZSgpKSk7CisgICAgQ2FsbERhdGEgY2FsbERhdGE7
CisgICAgQ2FsbFR5cGUgY2FsbFR5cGUgPSBKU0M6OmdldENhbGxEYXRhKGZ1bmN0aW9uLCBjYWxs
RGF0YSk7CisgICAgQVNTRVJUKGNhbGxUeXBlICE9IENhbGxUeXBlTm9uZSk7CisKKyAgICBNYXJr
ZWRBcmd1bWVudEJ1ZmZlciBhcmd1bWVudHM7CisgICAgYXJndW1lbnRzLmFwcGVuZChrZXkpOwor
ICAgIGFyZ3VtZW50cy5hcHBlbmQoanNOdW1iZXIoc3RhdHVzKSk7CisgICAgYXJndW1lbnRzLmFw
cGVuZChqc1N0cmluZyhleGVjLCBzb3VyY2UpKTsKKworICAgIHJldHVybiBjYWxsKGV4ZWMsIGZ1
bmN0aW9uLCBjYWxsVHlwZSwgY2FsbERhdGEsIHRoaXMsIGFyZ3VtZW50cyk7Cit9CisKK0pTVmFs
dWUgTW9kdWxlTG9hZGVyT2JqZWN0OjpyZXF1ZXN0SW5zdGFudGlhdGVBbGwoRXhlY1N0YXRlKiBl
eGVjLCBKU1ZhbHVlIGtleSkKK3sKKyAgICBKU09iamVjdCogZnVuY3Rpb24gPSBqc0Nhc3Q8SlNP
YmplY3QqPihnZXQoZXhlYywgZXhlYy0+cHJvcGVydHlOYW1lcygpLmJ1aWx0aW5OYW1lcygpLnJl
cXVlc3RJbnN0YW50aWF0ZUFsbFB1YmxpY05hbWUoKSkpOworICAgIENhbGxEYXRhIGNhbGxEYXRh
OworICAgIENhbGxUeXBlIGNhbGxUeXBlID0gSlNDOjpnZXRDYWxsRGF0YShmdW5jdGlvbiwgY2Fs
bERhdGEpOworICAgIEFTU0VSVChjYWxsVHlwZSAhPSBDYWxsVHlwZU5vbmUpOworCisgICAgTWFy
a2VkQXJndW1lbnRCdWZmZXIgYXJndW1lbnRzOworICAgIGFyZ3VtZW50cy5hcHBlbmQoa2V5KTsK
KworICAgIHJldHVybiBjYWxsKGV4ZWMsIGZ1bmN0aW9uLCBjYWxsVHlwZSwgY2FsbERhdGEsIHRo
aXMsIGFyZ3VtZW50cyk7Cit9CisKK0pTVmFsdWUgTW9kdWxlTG9hZGVyT2JqZWN0OjpyZXNvbHZl
KEV4ZWNTdGF0ZSogZXhlYywgSlNWYWx1ZSBuYW1lLCBKU1ZhbHVlIHJlZmVycmVyKQoreworICAg
IGlmIChPcHRpb25zOjpkdW1wTW9kdWxlTG9hZGluZ1N0YXRlKCkpCisgICAgICAgIGRhdGFMb2co
IkxvYWRlciBbcmVzb2x2ZV0gIiwgcHJpbnRhYmxlTW9kdWxlS2V5KGV4ZWMsIG5hbWUpLCAiXG4i
KTsKKworICAgIEpTR2xvYmFsT2JqZWN0KiBnbG9iYWxPYmplY3QgPSBleGVjLT5sZXhpY2FsR2xv
YmFsT2JqZWN0KCk7CisgICAgaWYgKGdsb2JhbE9iamVjdC0+Z2xvYmFsT2JqZWN0TWV0aG9kVGFi
bGUoKS0+bG9hZGVyUmVzb2x2ZSkKKyAgICAgICAgcmV0dXJuIGdsb2JhbE9iamVjdC0+Z2xvYmFs
T2JqZWN0TWV0aG9kVGFibGUoKS0+bG9hZGVyUmVzb2x2ZShnbG9iYWxPYmplY3QsIGV4ZWMsIG5h
bWUsIHJlZmVycmVyKTsKKyAgICBKU0ludGVybmFsUHJvbWlzZURlZmVycmVkKiBkZWZlcnJlZCA9
IEpTSW50ZXJuYWxQcm9taXNlRGVmZXJyZWQ6OmNyZWF0ZShleGVjLCBnbG9iYWxPYmplY3QpOwor
ICAgIGRlZmVycmVkLT5yZXNvbHZlKGV4ZWMsIG5hbWUpOworICAgIHJldHVybiBkZWZlcnJlZC0+
cHJvbWlzZSgpOworfQorCitKU1ZhbHVlIE1vZHVsZUxvYWRlck9iamVjdDo6ZmV0Y2goRXhlY1N0
YXRlKiBleGVjLCBKU1ZhbHVlIGtleSkKK3sKKyAgICBpZiAoT3B0aW9uczo6ZHVtcE1vZHVsZUxv
YWRpbmdTdGF0ZSgpKQorICAgICAgICBkYXRhTG9nKCJMb2FkZXIgW2ZldGNoXSAiLCBwcmludGFi
bGVNb2R1bGVLZXkoZXhlYywga2V5KSwgIlxuIik7CisKKyAgICBKU0dsb2JhbE9iamVjdCogZ2xv
YmFsT2JqZWN0ID0gZXhlYy0+bGV4aWNhbEdsb2JhbE9iamVjdCgpOworICAgIGlmIChnbG9iYWxP
YmplY3QtPmdsb2JhbE9iamVjdE1ldGhvZFRhYmxlKCktPmxvYWRlckZldGNoKQorICAgICAgICBy
ZXR1cm4gZ2xvYmFsT2JqZWN0LT5nbG9iYWxPYmplY3RNZXRob2RUYWJsZSgpLT5sb2FkZXJGZXRj
aChnbG9iYWxPYmplY3QsIGV4ZWMsIGtleSk7CisgICAgSlNJbnRlcm5hbFByb21pc2VEZWZlcnJl
ZCogZGVmZXJyZWQgPSBKU0ludGVybmFsUHJvbWlzZURlZmVycmVkOjpjcmVhdGUoZXhlYywgZ2xv
YmFsT2JqZWN0KTsKKyAgICBTdHJpbmcgbW9kdWxlS2V5ID0ga2V5LnRvU3RyaW5nKGV4ZWMpLT52
YWx1ZShleGVjKTsKKyAgICBpZiAoZXhlYy0+aGFkRXhjZXB0aW9uKCkpIHsKKyAgICAgICAgSlNW
YWx1ZSBleGNlcHRpb24gPSBleGVjLT5leGNlcHRpb24oKS0+dmFsdWUoKTsKKyAgICAgICAgZXhl
Yy0+Y2xlYXJFeGNlcHRpb24oKTsKKyAgICAgICAgZGVmZXJyZWQtPnJlamVjdChleGVjLCBleGNl
cHRpb24pOworICAgICAgICByZXR1cm4gZGVmZXJyZWQtPnByb21pc2UoKTsKKyAgICB9CisgICAg
ZGVmZXJyZWQtPnJlamVjdChleGVjLCBjcmVhdGVFcnJvcihleGVjLCBtYWtlU3RyaW5nKCJDb3Vs
ZCBub3Qgb3BlbiB0aGUgbW9kdWxlICciLCBtb2R1bGVLZXksICInLiIpKSk7CisgICAgcmV0dXJu
IGRlZmVycmVkLT5wcm9taXNlKCk7Cit9CisKK0pTVmFsdWUgTW9kdWxlTG9hZGVyT2JqZWN0Ojp0
cmFuc2xhdGUoRXhlY1N0YXRlKiBleGVjLCBKU1ZhbHVlIGtleSwgSlNWYWx1ZSBwYXlsb2FkKQor
eworICAgIGlmIChPcHRpb25zOjpkdW1wTW9kdWxlTG9hZGluZ1N0YXRlKCkpCisgICAgICAgIGRh
dGFMb2coIkxvYWRlciBbdHJhbnNsYXRlXSAiLCBwcmludGFibGVNb2R1bGVLZXkoZXhlYywga2V5
KSwgIlxuIik7CisKKyAgICBKU0dsb2JhbE9iamVjdCogZ2xvYmFsT2JqZWN0ID0gZXhlYy0+bGV4
aWNhbEdsb2JhbE9iamVjdCgpOworICAgIGlmIChnbG9iYWxPYmplY3QtPmdsb2JhbE9iamVjdE1l
dGhvZFRhYmxlKCktPmxvYWRlclRyYW5zbGF0ZSkKKyAgICAgICAgcmV0dXJuIGdsb2JhbE9iamVj
dC0+Z2xvYmFsT2JqZWN0TWV0aG9kVGFibGUoKS0+bG9hZGVyVHJhbnNsYXRlKGdsb2JhbE9iamVj
dCwgZXhlYywga2V5LCBwYXlsb2FkKTsKKyAgICBKU0ludGVybmFsUHJvbWlzZURlZmVycmVkKiBk
ZWZlcnJlZCA9IEpTSW50ZXJuYWxQcm9taXNlRGVmZXJyZWQ6OmNyZWF0ZShleGVjLCBnbG9iYWxP
YmplY3QpOworICAgIGRlZmVycmVkLT5yZXNvbHZlKGV4ZWMsIHBheWxvYWQpOworICAgIHJldHVy
biBkZWZlcnJlZC0+cHJvbWlzZSgpOworfQorCitKU1ZhbHVlIE1vZHVsZUxvYWRlck9iamVjdDo6
aW5zdGFudGlhdGUoRXhlY1N0YXRlKiBleGVjLCBKU1ZhbHVlIGtleSwgSlNWYWx1ZSBzb3VyY2Up
Cit7CisgICAgaWYgKE9wdGlvbnM6OmR1bXBNb2R1bGVMb2FkaW5nU3RhdGUoKSkKKyAgICAgICAg
ZGF0YUxvZygiTG9hZGVyIFtpbnN0YW50aWF0ZV0gIiwgcHJpbnRhYmxlTW9kdWxlS2V5KGV4ZWMs
IGtleSksICJcbiIpOworCisgICAgSlNHbG9iYWxPYmplY3QqIGdsb2JhbE9iamVjdCA9IGV4ZWMt
PmxleGljYWxHbG9iYWxPYmplY3QoKTsKKyAgICBpZiAoZ2xvYmFsT2JqZWN0LT5nbG9iYWxPYmpl
Y3RNZXRob2RUYWJsZSgpLT5sb2FkZXJJbnN0YW50aWF0ZSkKKyAgICAgICAgcmV0dXJuIGdsb2Jh
bE9iamVjdC0+Z2xvYmFsT2JqZWN0TWV0aG9kVGFibGUoKS0+bG9hZGVySW5zdGFudGlhdGUoZ2xv
YmFsT2JqZWN0LCBleGVjLCBrZXksIHNvdXJjZSk7CisgICAgSlNJbnRlcm5hbFByb21pc2VEZWZl
cnJlZCogZGVmZXJyZWQgPSBKU0ludGVybmFsUHJvbWlzZURlZmVycmVkOjpjcmVhdGUoZXhlYywg
Z2xvYmFsT2JqZWN0KTsKKyAgICBkZWZlcnJlZC0+cmVzb2x2ZShleGVjLCBqc1VuZGVmaW5lZCgp
KTsKKyAgICByZXR1cm4gZGVmZXJyZWQtPnByb21pc2UoKTsKK30KKworLy8gLS0tLS0tLS0tLS0t
LS0tLS0tLS0tLS0tLS0tLS0tIEhvb2sgRnVuY3Rpb25zIC0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t
LS0tLQorCitFbmNvZGVkSlNWYWx1ZSBKU0NfSE9TVF9DQUxMIG1vZHVsZUxvYWRlck9iamVjdFBh
cnNlTW9kdWxlKEV4ZWNTdGF0ZSogZXhlYykKK3sKKyAgICBWTSYgdm0gPSBleGVjLT52bSgpOwor
ICAgIFN0cmluZyBzb3VyY2UgPSBleGVjLT5hcmd1bWVudCgwKS50b1N0cmluZyhleGVjKS0+dmFs
dWUoZXhlYyk7CisgICAgaWYgKGV4ZWMtPmhhZEV4Y2VwdGlvbigpKQorICAgICAgICByZXR1cm4g
SlNWYWx1ZTo6ZW5jb2RlKGpzVW5kZWZpbmVkKCkpOworCisgICAgLy8gRklYTUU6IENvbnN0cnVj
dCBTb3VyY2VDb2RlIHdpdGggdGhlIGxvY2F0aW9uIGlkZW50aWZpZXIuCisgICAgU291cmNlQ29k
ZSBzb3VyY2VDb2RlID0gbWFrZVNvdXJjZShzb3VyY2UpOworCisgICAgUGFyc2VyRXJyb3IgZXJy
b3I7CisgICAgc3RkOjp1bmlxdWVfcHRyPE1vZHVsZVByb2dyYW1Ob2RlPiBtb2R1bGVQcm9ncmFt
Tm9kZSA9IHBhcnNlPE1vZHVsZVByb2dyYW1Ob2RlPigKKyAgICAgICAgJnZtLCBzb3VyY2VDb2Rl
LCBJZGVudGlmaWVyKCksIEpTUGFyc2VyQnVpbHRpbk1vZGU6Ok5vdEJ1aWx0aW4sCisgICAgICAg
IEpTUGFyc2VyU3RyaWN0TW9kZTo6U3RyaWN0LCBTb3VyY2VQYXJzZU1vZGU6Ok1vZHVsZUFuYWx5
emVNb2RlLCBlcnJvcik7CisKKyAgICBpZiAoZXJyb3IuaXNWYWxpZCgpKSB7CisgICAgICAgIHRo
cm93Vk1FcnJvcihleGVjLCBlcnJvci50b0Vycm9yT2JqZWN0KGV4ZWMtPmxleGljYWxHbG9iYWxP
YmplY3QoKSwgc291cmNlQ29kZSkpOworICAgICAgICByZXR1cm4gSlNWYWx1ZTo6ZW5jb2RlKGpz
VW5kZWZpbmVkKCkpOworICAgIH0KKyAgICBBU1NFUlQobW9kdWxlUHJvZ3JhbU5vZGUpOworCisg
ICAgTW9kdWxlQW5hbHl6ZXIgbW9kdWxlQW5hbHl6ZXIoZXhlYywgbW9kdWxlUHJvZ3JhbU5vZGUt
PnZhckRlY2xhcmF0aW9ucygpLCBtb2R1bGVQcm9ncmFtTm9kZS0+bGV4aWNhbFZhcmlhYmxlcygp
KTsKKyAgICBKU01vZHVsZVJlY29yZCogbW9kdWxlUmVjb3JkID0gbW9kdWxlQW5hbHl6ZXIuYW5h
bHl6ZSgqbW9kdWxlUHJvZ3JhbU5vZGUpOworICAgIHJldHVybiBKU1ZhbHVlOjplbmNvZGUobW9k
dWxlUmVjb3JkKTsKK30KKworRW5jb2RlZEpTVmFsdWUgSlNDX0hPU1RfQ0FMTCBtb2R1bGVMb2Fk
ZXJPYmplY3RSZXF1ZXN0ZWRNb2R1bGVzKEV4ZWNTdGF0ZSogZXhlYykKK3sKKyAgICBKU01vZHVs
ZVJlY29yZCogbW9kdWxlUmVjb3JkID0ganNDYXN0PEpTTW9kdWxlUmVjb3JkKj4oZXhlYy0+YXJn
dW1lbnQoMCkpOworICAgIGlmICghbW9kdWxlUmVjb3JkKQorICAgICAgICByZXR1cm4gSlNWYWx1
ZTo6ZW5jb2RlKGNvbnN0cnVjdEVtcHR5QXJyYXkoZXhlYywgbnVsbHB0cikpOworCisgICAgSlNB
cnJheSogcmVzdWx0ID0gY29uc3RydWN0RW1wdHlBcnJheShleGVjLCBudWxscHRyLCBtb2R1bGVS
ZWNvcmQtPnJlcXVlc3RlZE1vZHVsZXMoKS5zaXplKCkpOworICAgIHNpemVfdCBpID0gMDsKKyAg
ICBmb3IgKGF1dG8mIGtleSA6IG1vZHVsZVJlY29yZC0+cmVxdWVzdGVkTW9kdWxlcygpKQorICAg
ICAgICByZXN1bHQtPnB1dERpcmVjdEluZGV4KGV4ZWMsIGkrKywganNTdHJpbmcoZXhlYywga2V5
LmdldCgpKSk7CisKKyAgICByZXR1cm4gSlNWYWx1ZTo6ZW5jb2RlKHJlc3VsdCk7Cit9CisKK0Vu
Y29kZWRKU1ZhbHVlIEpTQ19IT1NUX0NBTEwgbW9kdWxlTG9hZGVyT2JqZWN0UmVzb2x2ZShFeGVj
U3RhdGUqIGV4ZWMpCit7CisgICAgLy8gSG9vayBwb2ludCwgTG9hZGVyLnJlc29sdmUuCisgICAg
Ly8gaHR0cHM6Ly93aGF0d2cuZ2l0aHViLmlvL2xvYWRlci8jYnJvd3Nlci1yZXNvbHZlCisgICAg
Ly8gVGFrZSB0aGUgbmFtZSBhbmQgcmVzb2x2ZSBpdCB0byB0aGUgdW5pcXVlIGlkZW50aWZpZXIg
Zm9yIHRoZSByZXNvdXJjZSBsb2NhdGlvbi4KKyAgICAvLyBGb3IgZXhhbXBsZSwgdGFrZSB0aGUg
ImpxdWVyeSIgYW5kIHJldHVybiB0aGUgVVJMIGZvciB0aGUgcmVzb3VyY2UuCisgICAgTW9kdWxl
TG9hZGVyT2JqZWN0KiBsb2FkZXIgPSBqc0R5bmFtaWNDYXN0PE1vZHVsZUxvYWRlck9iamVjdCo+
KGV4ZWMtPnRoaXNWYWx1ZSgpKTsKKyAgICBpZiAoIWxvYWRlcikKKyAgICAgICAgcmV0dXJuIEpT
VmFsdWU6OmVuY29kZShqc1VuZGVmaW5lZCgpKTsKKyAgICByZXR1cm4gSlNWYWx1ZTo6ZW5jb2Rl
KGxvYWRlci0+cmVzb2x2ZShleGVjLCBleGVjLT5hcmd1bWVudCgwKSwgZXhlYy0+YXJndW1lbnQo
MSkpKTsKK30KKworRW5jb2RlZEpTVmFsdWUgSlNDX0hPU1RfQ0FMTCBtb2R1bGVMb2FkZXJPYmpl
Y3RGZXRjaChFeGVjU3RhdGUqIGV4ZWMpCit7CisgICAgLy8gSG9vayBwb2ludCwgTG9hZGVyLmZl
dGNoCisgICAgLy8gaHR0cHM6Ly93aGF0d2cuZ2l0aHViLmlvL2xvYWRlci8jYnJvd3Nlci1mZXRj
aAorICAgIC8vIFRha2UgdGhlIGtleSBhbmQgZmV0Y2ggdGhlIHJlc291cmNlIGFjdHVhbGx5Lgor
ICAgIC8vIEZvciBleGFtcGxlLCBKYXZhU2NyaXB0Q29yZSBzaGVsbCBjYW4gcHJvdmlkZSB0aGUg
aG9vayBmZXRjaGluZyB0aGUgcmVzb3VyY2UKKyAgICAvLyBmcm9tIHRoZSBsb2NhbCBmaWxlIHN5
c3RlbS4KKyAgICBNb2R1bGVMb2FkZXJPYmplY3QqIGxvYWRlciA9IGpzRHluYW1pY0Nhc3Q8TW9k
dWxlTG9hZGVyT2JqZWN0Kj4oZXhlYy0+dGhpc1ZhbHVlKCkpOworICAgIGlmICghbG9hZGVyKQor
ICAgICAgICByZXR1cm4gSlNWYWx1ZTo6ZW5jb2RlKGpzVW5kZWZpbmVkKCkpOworICAgIHJldHVy
biBKU1ZhbHVlOjplbmNvZGUobG9hZGVyLT5mZXRjaChleGVjLCBleGVjLT5hcmd1bWVudCgwKSkp
OworfQorCitFbmNvZGVkSlNWYWx1ZSBKU0NfSE9TVF9DQUxMIG1vZHVsZUxvYWRlck9iamVjdFRy
YW5zbGF0ZShFeGVjU3RhdGUqIGV4ZWMpCit7CisgICAgLy8gSG9vayBwb2ludCwgTG9hZGVyLnRy
YW5zbGF0ZQorICAgIC8vIGh0dHBzOi8vd2hhdHdnLmdpdGh1Yi5pby9sb2FkZXIvI2Jyb3dzZXIt
dHJhbnNsYXRlCisgICAgLy8gVGFrZSB0aGUga2V5IGFuZCB0aGUgZmV0Y2hlZCBzb3VyY2UgY29k
ZSBhbmQgdHJhbnNsYXRlIGl0IHRvIHRoZSBFUzYgc291cmNlIGNvZGUuCisgICAgLy8gVHlwaWNh
bGx5IGl0IGlzIHVzZWQgYnkgdGhlIHRyYW5zcGlsZXJzLgorICAgIE1vZHVsZUxvYWRlck9iamVj
dCogbG9hZGVyID0ganNEeW5hbWljQ2FzdDxNb2R1bGVMb2FkZXJPYmplY3QqPihleGVjLT50aGlz
VmFsdWUoKSk7CisgICAgaWYgKCFsb2FkZXIpCisgICAgICAgIHJldHVybiBKU1ZhbHVlOjplbmNv
ZGUoanNVbmRlZmluZWQoKSk7CisgICAgcmV0dXJuIEpTVmFsdWU6OmVuY29kZShsb2FkZXItPnRy
YW5zbGF0ZShleGVjLCBleGVjLT5hcmd1bWVudCgwKSwgZXhlYy0+YXJndW1lbnQoMSkpKTsKK30K
KworRW5jb2RlZEpTVmFsdWUgSlNDX0hPU1RfQ0FMTCBtb2R1bGVMb2FkZXJPYmplY3RJbnN0YW50
aWF0ZShFeGVjU3RhdGUqIGV4ZWMpCit7CisgICAgLy8gSG9vayBwb2ludCwgTG9hZGVyLmluc3Rh
bnRpYXRlCisgICAgLy8gaHR0cHM6Ly93aGF0d2cuZ2l0aHViLmlvL2xvYWRlci8jYnJvd3Nlci1p
bnN0YW50aWF0ZQorICAgIC8vIFRha2UgdGhlIGtleSBhbmQgdGhlIHRyYW5zbGF0ZWQgc291cmNl
IGNvZGUsIGFuZCBpbnN0YW50aWF0ZSB0aGUgbW9kdWxlIHJlY29yZAorICAgIC8vIGJ5IHBhcnNp
bmcgdGhlIG1vZHVsZSBzb3VyY2UgY29kZS4KKyAgICAvLyBJdCBoYXMgdGhlIGNoYW5jZSB0byBw
cm92aWRlIHRoZSBvcHRpb25hbCBtb2R1bGUgaW5zdGFuY2UgdGhhdCBpcyBkaWZmZXJlbnQgZnJv
bQorICAgIC8vIHRoZSBvcmRpbmFyeSBvbmUuCisgICAgTW9kdWxlTG9hZGVyT2JqZWN0KiBsb2Fk
ZXIgPSBqc0R5bmFtaWNDYXN0PE1vZHVsZUxvYWRlck9iamVjdCo+KGV4ZWMtPnRoaXNWYWx1ZSgp
KTsKKyAgICBpZiAoIWxvYWRlcikKKyAgICAgICAgcmV0dXJuIEpTVmFsdWU6OmVuY29kZShqc1Vu
ZGVmaW5lZCgpKTsKKyAgICByZXR1cm4gSlNWYWx1ZTo6ZW5jb2RlKGxvYWRlci0+aW5zdGFudGlh
dGUoZXhlYywgZXhlYy0+YXJndW1lbnQoMCksIGV4ZWMtPmFyZ3VtZW50KDEpKSk7Cit9CisKK30g
Ly8gbmFtZXNwYWNlIEpTQwpkaWZmIC0tZ2l0IGEvU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRp
bWUvTW9kdWxlTG9hZGVyT2JqZWN0LmggYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9N
b2R1bGVMb2FkZXJPYmplY3QuaApuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwLi5mZDZjNjAxMDg4NGE0ZjQzNDlmMDlmZmY3
OTNmNDJhNWNlMjA4NDA3Ci0tLSAvZGV2L251bGwKKysrIGIvU291cmNlL0phdmFTY3JpcHRDb3Jl
L3J1bnRpbWUvTW9kdWxlTG9hZGVyT2JqZWN0LmgKQEAgLTAsMCArMSw4MSBAQAorLyoKKyAqIENv
cHlyaWdodCAoQykgMjAxNSBBcHBsZSBJbmMuIEFsbCBSaWdodHMgUmVzZXJ2ZWQuCisgKgorICog
UmVkaXN0cmlidXRpb24gYW5kIHVzZSBpbiBzb3VyY2UgYW5kIGJpbmFyeSBmb3Jtcywgd2l0aCBv
ciB3aXRob3V0CisgKiBtb2RpZmljYXRpb24sIGFyZSBwZXJtaXR0ZWQgcHJvdmlkZWQgdGhhdCB0
aGUgZm9sbG93aW5nIGNvbmRpdGlvbnMKKyAqIGFyZSBtZXQ6CisgKiAxLiBSZWRpc3RyaWJ1dGlv
bnMgb2Ygc291cmNlIGNvZGUgbXVzdCByZXRhaW4gdGhlIGFib3ZlIGNvcHlyaWdodAorICogICAg
bm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFp
bWVyLgorICogMi4gUmVkaXN0cmlidXRpb25zIGluIGJpbmFyeSBmb3JtIG11c3QgcmVwcm9kdWNl
IHRoZSBhYm92ZSBjb3B5cmlnaHQKKyAqICAgIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlv
bnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lciBpbiB0aGUKKyAqICAgIGRvY3VtZW50YXRp
b24gYW5kL29yIG90aGVyIG1hdGVyaWFscyBwcm92aWRlZCB3aXRoIHRoZSBkaXN0cmlidXRpb24u
CisgKgorICogVEhJUyBTT0ZUV0FSRSBJUyBQUk9WSURFRCBCWSBBUFBMRSBJTkMuIGBgQVMgSVMn
JyBBTkQgQU5ZCisgKiBFWFBSRVNTIE9SIElNUExJRUQgV0FSUkFOVElFUywgSU5DTFVESU5HLCBC
VVQgTk9UIExJTUlURUQgVE8sIFRIRQorICogSU1QTElFRCBXQVJSQU5USUVTIE9GIE1FUkNIQU5U
QUJJTElUWSBBTkQgRklUTkVTUyBGT1IgQSBQQVJUSUNVTEFSCisgKiBQVVJQT1NFIEFSRSBESVND
TEFJTUVELiAgSU4gTk8gRVZFTlQgU0hBTEwgQVBQTEUgSU5DLiBPUgorICogQ09OVFJJQlVUT1JT
IEJFIExJQUJMRSBGT1IgQU5ZIERJUkVDVCwgSU5ESVJFQ1QsIElOQ0lERU5UQUwsIFNQRUNJQUws
CisgKiBFWEVNUExBUlksIE9SIENPTlNFUVVFTlRJQUwgREFNQUdFUyAoSU5DTFVESU5HLCBCVVQg
Tk9UIExJTUlURUQgVE8sCisgKiBQUk9DVVJFTUVOVCBPRiBTVUJTVElUVVRFIEdPT0RTIE9SIFNF
UlZJQ0VTOyBMT1NTIE9GIFVTRSwgREFUQSwgT1IKKyAqIFBST0ZJVFM7IE9SIEJVU0lORVNTIElO
VEVSUlVQVElPTikgSE9XRVZFUiBDQVVTRUQgQU5EIE9OIEFOWSBUSEVPUlkKKyAqIE9GIExJQUJJ
TElUWSwgV0hFVEhFUiBJTiBDT05UUkFDVCwgU1RSSUNUIExJQUJJTElUWSwgT1IgVE9SVAorICog
KElOQ0xVRElORyBORUdMSUdFTkNFIE9SIE9USEVSV0lTRSkgQVJJU0lORyBJTiBBTlkgV0FZIE9V
VCBPRiBUSEUgVVNFCisgKiBPRiBUSElTIFNPRlRXQVJFLCBFVkVOIElGIEFEVklTRUQgT0YgVEhF
IFBPU1NJQklMSVRZIE9GIFNVQ0ggREFNQUdFLgorICovCisKKyNpZm5kZWYgTW9kdWxlTG9hZGVy
T2JqZWN0X2gKKyNkZWZpbmUgTW9kdWxlTG9hZGVyT2JqZWN0X2gKKworI2luY2x1ZGUgIkpTT2Jq
ZWN0LmgiCisKK25hbWVzcGFjZSBKU0MgeworCitjbGFzcyBNb2R1bGVMb2FkZXJPYmplY3QgOiBw
dWJsaWMgSlNOb25GaW5hbE9iamVjdCB7Citwcml2YXRlOgorICAgIE1vZHVsZUxvYWRlck9iamVj
dChWTSYsIFN0cnVjdHVyZSopOworcHVibGljOgorICAgIHR5cGVkZWYgSlNOb25GaW5hbE9iamVj
dCBCYXNlOworICAgIHN0YXRpYyBjb25zdCB1bnNpZ25lZCBTdHJ1Y3R1cmVGbGFncyA9IEJhc2U6
OlN0cnVjdHVyZUZsYWdzIHwgT3ZlcnJpZGVzR2V0T3duUHJvcGVydHlTbG90OworCisgICAgZW51
bSBTdGF0dXMgeworICAgICAgICBGZXRjaCA9IDEsCisgICAgICAgIFRyYW5zbGF0ZSA9IDIsCisg
ICAgICAgIEluc3RhbnRpYXRlID0gMywKKyAgICAgICAgUmVzb2x2ZURlcGVuZGVuY2llcyA9IDQs
CisgICAgICAgIExpbmsgPSA1LAorICAgICAgICBSZWFkeSA9IDYsCisgICAgfTsKKworICAgIHN0
YXRpYyBNb2R1bGVMb2FkZXJPYmplY3QqIGNyZWF0ZShWTSYgdm0sIEpTR2xvYmFsT2JqZWN0KiBn
bG9iYWxPYmplY3QsIFN0cnVjdHVyZSogc3RydWN0dXJlKQorICAgIHsKKyAgICAgICAgTW9kdWxl
TG9hZGVyT2JqZWN0KiBvYmplY3QgPSBuZXcgKE5vdE51bGwsIGFsbG9jYXRlQ2VsbDxNb2R1bGVM
b2FkZXJPYmplY3Q+KHZtLmhlYXApKSBNb2R1bGVMb2FkZXJPYmplY3Qodm0sIHN0cnVjdHVyZSk7
CisgICAgICAgIG9iamVjdC0+ZmluaXNoQ3JlYXRpb24odm0sIGdsb2JhbE9iamVjdCk7CisgICAg
ICAgIHJldHVybiBvYmplY3Q7CisgICAgfQorCisgICAgREVDTEFSRV9JTkZPOworCisgICAgc3Rh
dGljIFN0cnVjdHVyZSogY3JlYXRlU3RydWN0dXJlKFZNJiB2bSwgSlNHbG9iYWxPYmplY3QqIGds
b2JhbE9iamVjdCwgSlNWYWx1ZSBwcm90b3R5cGUpCisgICAgeworICAgICAgICByZXR1cm4gU3Ry
dWN0dXJlOjpjcmVhdGUodm0sIGdsb2JhbE9iamVjdCwgcHJvdG90eXBlLCBUeXBlSW5mbyhPYmpl
Y3RUeXBlLCBTdHJ1Y3R1cmVGbGFncyksIGluZm8oKSk7CisgICAgfQorCisgICAgLy8gQVBJcyB0
byBjb250cm9sIHRoZSBtb2R1bGUgbG9hZGVyLgorICAgIEpTVmFsdWUgcHJvdmlkZShFeGVjU3Rh
dGUqLCBKU1ZhbHVlIGtleSwgU3RhdHVzLCBjb25zdCBTdHJpbmcmKTsKKyAgICBKU1ZhbHVlIHJl
cXVlc3RJbnN0YW50aWF0ZUFsbChFeGVjU3RhdGUqLCBKU1ZhbHVlIGtleSk7CisKKyAgICAvLyBQ
bGF0Zm9ybSBkZXBlbmRlbnQgaG9va2VkIEFQSXMuCisgICAgSlNWYWx1ZSByZXNvbHZlKEV4ZWNT
dGF0ZSosIEpTVmFsdWUgbmFtZSwgSlNWYWx1ZSByZWZlcnJlcik7CisgICAgSlNWYWx1ZSBmZXRj
aChFeGVjU3RhdGUqLCBKU1ZhbHVlIGtleSk7CisgICAgSlNWYWx1ZSB0cmFuc2xhdGUoRXhlY1N0
YXRlKiwgSlNWYWx1ZSBrZXksIEpTVmFsdWUgcGF5bG9hZCk7CisgICAgSlNWYWx1ZSBpbnN0YW50
aWF0ZShFeGVjU3RhdGUqLCBKU1ZhbHVlIGtleSwgSlNWYWx1ZSBzb3VyY2UpOworCisgICAgc3Rh
dGljIGJvb2wgZ2V0T3duUHJvcGVydHlTbG90KEpTT2JqZWN0KiwgRXhlY1N0YXRlKiwgUHJvcGVy
dHlOYW1lLCBQcm9wZXJ0eVNsb3QmKTsKKworcHJvdGVjdGVkOgorICAgIHZvaWQgZmluaXNoQ3Jl
YXRpb24oVk0mLCBKU0dsb2JhbE9iamVjdCopOworfTsKKworfSAvLyBuYW1lc3BhY2UgSlNDCisK
KyNlbmRpZiAvLyBNb2R1bGVMb2FkZXJPYmplY3RfaApkaWZmIC0tZ2l0IGEvU291cmNlL0phdmFT
Y3JpcHRDb3JlL3J1bnRpbWUvT3B0aW9ucy5oIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRp
bWUvT3B0aW9ucy5oCmluZGV4IDI1OTYwNzg3MWM2NWYyN2Y0YzY2Mjg5ZTk5MjZlYWQyNWQ1MTMw
Y2IuLmUzN2I5OWJmMDk0YWM0YTQ1YzU0NTIzMDYxYzM2YmRmYmRjNjgwZDMgMTAwNjQ0Ci0tLSBh
L1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL09wdGlvbnMuaAorKysgYi9Tb3VyY2UvSmF2
YVNjcmlwdENvcmUvcnVudGltZS9PcHRpb25zLmgKQEAgLTMyNCw2ICszMjQsOCBAQCB0eXBlZGVm
IGNvbnN0IGNoYXIqIG9wdGlvblN0cmluZzsKICAgICB2KHVuc2lnbmVkLCB3YXRjaGRvZywgMCwg
IndhdGNoZG9nIHRpbWVvdXQgKDAgPSBEaXNhYmxlZCwgTiA9IGEgdGltZW91dCBwZXJpb2Qgb2Yg
TiBtaWxsaXNlY29uZHMpIikgXAogICAgIFwKICAgICB2KGJvb2wsIGR1bXBNb2R1bGVSZWNvcmQs
IGZhbHNlLCBudWxscHRyKSBcCisgICAgdihib29sLCBkdW1wTW9kdWxlTG9hZGluZ1N0YXRlLCBm
YWxzZSwgbnVsbHB0cikgXAorICAgIHYoYm9vbCwgZXhwb3NlSW50ZXJuYWxNb2R1bGVMb2FkZXIs
IGZhbHNlLCAiZXhwb3NlIHRoZSBpbnRlcm5hbCBtb2R1bGUgbG9hZGVyIG9iamVjdCB0byB0aGUg
Z2xvYmFsIHNwYWNlIGZvciBkZWJ1Z2dpbmciKSBcCiAKIGNsYXNzIE9wdGlvbnMgewogcHVibGlj
OgpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvYmluZGluZ3MvanMvSlNET01XaW5kb3dCYXNl
LmNwcCBiL1NvdXJjZS9XZWJDb3JlL2JpbmRpbmdzL2pzL0pTRE9NV2luZG93QmFzZS5jcHAKaW5k
ZXggOWFiMGE4ZjBkMGZiZDc4ZTVlNTdkNTgwNDc3ZTY1NWNiODk1OTVkMS4uYTI5MGRkYzllNTgx
YWNkNjM0MzAxNzAwYmFmODI3Y2ExYTRlZmQwMiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUv
YmluZGluZ3MvanMvSlNET01XaW5kb3dCYXNlLmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9iaW5k
aW5ncy9qcy9KU0RPTVdpbmRvd0Jhc2UuY3BwCkBAIC01Niw3ICs1Niw3IEBAIHN0YXRpYyBib29s
IHNob3VsZEFsbG93QWNjZXNzRnJvbShjb25zdCBKU0dsb2JhbE9iamVjdCogdGhpc09iamVjdCwg
RXhlY1N0YXRlKiBlCiAKIGNvbnN0IENsYXNzSW5mbyBKU0RPTVdpbmRvd0Jhc2U6OnNfaW5mbyA9
IHsgIldpbmRvdyIsICZKU0RPTUdsb2JhbE9iamVjdDo6c19pbmZvLCAwLCBDUkVBVEVfTUVUSE9E
X1RBQkxFKEpTRE9NV2luZG93QmFzZSkgfTsKIAotY29uc3QgR2xvYmFsT2JqZWN0TWV0aG9kVGFi
bGUgSlNET01XaW5kb3dCYXNlOjpzX2dsb2JhbE9iamVjdE1ldGhvZFRhYmxlID0geyAmc2hvdWxk
QWxsb3dBY2Nlc3NGcm9tLCAmc3VwcG9ydHNQcm9maWxpbmcsICZzdXBwb3J0c1JpY2hTb3VyY2VJ
bmZvLCAmc2hvdWxkSW50ZXJydXB0U2NyaXB0LCAmamF2YVNjcmlwdFJ1bnRpbWVGbGFncywgJnF1
ZXVlVGFza1RvRXZlbnRMb29wLCAmc2hvdWxkSW50ZXJydXB0U2NyaXB0QmVmb3JlVGltZW91dCB9
OworY29uc3QgR2xvYmFsT2JqZWN0TWV0aG9kVGFibGUgSlNET01XaW5kb3dCYXNlOjpzX2dsb2Jh
bE9iamVjdE1ldGhvZFRhYmxlID0geyAmc2hvdWxkQWxsb3dBY2Nlc3NGcm9tLCAmc3VwcG9ydHNQ
cm9maWxpbmcsICZzdXBwb3J0c1JpY2hTb3VyY2VJbmZvLCAmc2hvdWxkSW50ZXJydXB0U2NyaXB0
LCAmamF2YVNjcmlwdFJ1bnRpbWVGbGFncywgJnF1ZXVlVGFza1RvRXZlbnRMb29wLCAmc2hvdWxk
SW50ZXJydXB0U2NyaXB0QmVmb3JlVGltZW91dCwgbnVsbHB0ciwgbnVsbHB0ciwgbnVsbHB0ciwg
bnVsbHB0ciB9OwogCiBKU0RPTVdpbmRvd0Jhc2U6OkpTRE9NV2luZG93QmFzZShWTSYgdm0sIFN0
cnVjdHVyZSogc3RydWN0dXJlLCBQYXNzUmVmUHRyPERPTVdpbmRvdz4gd2luZG93LCBKU0RPTVdp
bmRvd1NoZWxsKiBzaGVsbCkKICAgICA6IEpTRE9NR2xvYmFsT2JqZWN0KHZtLCBzdHJ1Y3R1cmUs
ICZzaGVsbC0+d29ybGQoKSwgJnNfZ2xvYmFsT2JqZWN0TWV0aG9kVGFibGUpCmRpZmYgLS1naXQg
YS9Tb3VyY2UvV2ViQ29yZS9iaW5kaW5ncy9qcy9KU1dvcmtlckdsb2JhbFNjb3BlQmFzZS5jcHAg
Yi9Tb3VyY2UvV2ViQ29yZS9iaW5kaW5ncy9qcy9KU1dvcmtlckdsb2JhbFNjb3BlQmFzZS5jcHAK
aW5kZXggYWFhNWRiYTU1MTcxY2I5NTQxYmE2NWUxZDI0N2FiMjljOWQ5YzdjMy4uNTA0NGJjMTc4
MzUxM2I5YjFhMjZiZDNiZDFjYjVjMDBiNzBhMTBkMCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNv
cmUvYmluZGluZ3MvanMvSlNXb3JrZXJHbG9iYWxTY29wZUJhc2UuY3BwCisrKyBiL1NvdXJjZS9X
ZWJDb3JlL2JpbmRpbmdzL2pzL0pTV29ya2VyR2xvYmFsU2NvcGVCYXNlLmNwcApAQCAtNDMsNyAr
NDMsNyBAQCBuYW1lc3BhY2UgV2ViQ29yZSB7CiAKIGNvbnN0IENsYXNzSW5mbyBKU1dvcmtlckds
b2JhbFNjb3BlQmFzZTo6c19pbmZvID0geyAiV29ya2VyR2xvYmFsU2NvcGUiLCAmSlNET01HbG9i
YWxPYmplY3Q6OnNfaW5mbywgMCwgQ1JFQVRFX01FVEhPRF9UQUJMRShKU1dvcmtlckdsb2JhbFNj
b3BlQmFzZSkgfTsKIAotY29uc3QgR2xvYmFsT2JqZWN0TWV0aG9kVGFibGUgSlNXb3JrZXJHbG9i
YWxTY29wZUJhc2U6OnNfZ2xvYmFsT2JqZWN0TWV0aG9kVGFibGUgPSB7ICZhbGxvd3NBY2Nlc3NG
cm9tLCAmc3VwcG9ydHNQcm9maWxpbmcsICZzdXBwb3J0c1JpY2hTb3VyY2VJbmZvLCAmc2hvdWxk
SW50ZXJydXB0U2NyaXB0LCAmamF2YVNjcmlwdFJ1bnRpbWVGbGFncywgJnF1ZXVlVGFza1RvRXZl
bnRMb29wLCAmc2hvdWxkSW50ZXJydXB0U2NyaXB0QmVmb3JlVGltZW91dCB9OworY29uc3QgR2xv
YmFsT2JqZWN0TWV0aG9kVGFibGUgSlNXb3JrZXJHbG9iYWxTY29wZUJhc2U6OnNfZ2xvYmFsT2Jq
ZWN0TWV0aG9kVGFibGUgPSB7ICZhbGxvd3NBY2Nlc3NGcm9tLCAmc3VwcG9ydHNQcm9maWxpbmcs
ICZzdXBwb3J0c1JpY2hTb3VyY2VJbmZvLCAmc2hvdWxkSW50ZXJydXB0U2NyaXB0LCAmamF2YVNj
cmlwdFJ1bnRpbWVGbGFncywgJnF1ZXVlVGFza1RvRXZlbnRMb29wLCAmc2hvdWxkSW50ZXJydXB0
U2NyaXB0QmVmb3JlVGltZW91dCwgbnVsbHB0ciwgbnVsbHB0ciwgbnVsbHB0ciwgbnVsbHB0ciB9
OwogCiBKU1dvcmtlckdsb2JhbFNjb3BlQmFzZTo6SlNXb3JrZXJHbG9iYWxTY29wZUJhc2UoSlND
OjpWTSYgdm0sIEpTQzo6U3RydWN0dXJlKiBzdHJ1Y3R1cmUsIFBhc3NSZWZQdHI8V29ya2VyR2xv
YmFsU2NvcGU+IGltcGwpCiAgICAgOiBKU0RPTUdsb2JhbE9iamVjdCh2bSwgc3RydWN0dXJlLCAm
bm9ybWFsV29ybGQodm0pLCAmc19nbG9iYWxPYmplY3RNZXRob2RUYWJsZSkK
</data>

          </attachment>
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>259386</attachid>
            <date>2015-08-19 11:54:29 -0700</date>
            <delta_ts>2015-08-19 12:02:50 -0700</delta_ts>
            <desc>Patch</desc>
            <filename>bug-147876-20150819115426.patch</filename>
            <type>text/plain</type>
            <size>126950</size>
            <attacher name="Yusuke Suzuki">ysuzuki</attacher>
            
              <data encoding="base64">U3VidmVyc2lvbiBSZXZpc2lvbjogMTg4NjQwCmRpZmYgLS1naXQgYS9Tb3VyY2UvSmF2YVNjcmlw
dENvcmUvQ2hhbmdlTG9nIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL0NoYW5nZUxvZwppbmRleCBj
ZTc2MTQ5MWYyMjA4NWQ0NDI1ZjIwMDFhODFiZmYzYTgzODUyYjBjLi45Y2U2ZDgwOTI0OTViNzY4
NGI0OWExOTkxY2IzYzk5ZjVlMTc2NzM1IDEwMDY0NAotLS0gYS9Tb3VyY2UvSmF2YVNjcmlwdENv
cmUvQ2hhbmdlTG9nCisrKyBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9DaGFuZ2VMb2cKQEAgLTEs
MyArMSwxNjEgQEAKKzIwMTUtMDgtMTkgIFl1c3VrZSBTdXp1a2kgIDx1dGF0YW5lLnRlYUBnbWFp
bC5jb20+CisKKyAgICAgICAgW0VTNl0gcHJvdG90eXBpbmcgbW9kdWxlIGxvYWRlciBpbiBKU0Mg
c2hlbGwKKyAgICAgICAgaHR0cHM6Ly9idWdzLndlYmtpdC5vcmcvc2hvd19idWcuY2dpP2lkPTE0
Nzg3NgorCisgICAgICAgIFJldmlld2VkIGJ5IE5PQk9EWSAoT09QUyEpLgorCisgICAgICAgIFRo
aXMgcGF0Y2ggaW1wbGVtZW50cyBFUzYgTW9kdWxlIExvYWRlciBwYXJ0LiBUaGUgaW1wbGVtZW50
YXRpb24gaXMgYmFzZWQgb24KKyAgICAgICAgdGhlIGxhdGVzdCBkcmFmdFsxLCAyXS4gVGhlIG5h
aXZlIGltcGxlbWVudGF0aW9uIHBvc2VzIHNldmVyYWwgcHJvYmxlbXMuCisgICAgICAgIFRoaXMg
cGF0Y2ggYXR0ZW1wdHMgdG8gc29sdmUgdGhlIHNwZWMgaXNzdWVzIGFuZCBwcm9wb3NlcyB0aGUg
Zml4WzMsIDQsIDVdLgorCisgICAgICAgIFdlIGNvbnN0cnVjdCB0aGUgSlNDIGludGVybmFsIG1v
ZHVsZSBsb2FkZXIgYmFzZWQgb24gdGhlIEVTNiBQcm9taXNlcy4KKyAgICAgICAgVGhlIGNoYWlu
IG9mIHRoZSBwcm9taXNlcyByZXByZXNlbnRzIHRoZSBkZXBlbmRlbmN5IGdyYXBoIG9mIHRoZSBt
b2R1bGVzIGFuZAorICAgICAgICBpdCBhdXRvbWF0aWNhbGx5IGVuYWJsZXMgYXN5bmNocm9ub3Vz
IG1vZHVsZSBmZXRjaGluZy4KKyAgICAgICAgVG8gbGV2ZXJhZ2UgdGhlIFByb21pc2VzIGludGVy
bmFsbHksIHdlIHVzZSB0aGUgSW50ZXJuYWxQcm9taXNlWzZdLgorCisgICAgICAgIFRoZSBsb2Fk
ZXIgaGFzIHNldmVyYWwgcGxhdGZvcm0tZGVwZW5kZW50IGhvb2tzLiBUaGUgcGxhdGZvcm0gY2Fu
IGltcGxlbWVudAorICAgICAgICB0aGVzZSBob29rcyB0byBwcm92aWRlIHRoZSBmdW5jdGlvYWxp
dHkgbWlzc2luZyBpbiB0aGUgbW9kdWxlIGxvYWRlcnMsIGxpa2UKKyAgICAgICAgImhvdyB0byBm
ZXRjaCB0aGUgcmVzb3VyY2VzIi4gVGhlIG1ldGhvZCB0YWJsZSBvZiB0aGUgSlNHbG9iYWxPYmpl
Y3QgaXMgZXh0ZW5kZWQKKyAgICAgICAgdG8gYWNjZXB0IHRoZXNlIGhvb2tzIGZyb20gdGhlIHBs
YXRmb3JtLgorCisgICAgICAgIFRoaXMgcGF0Y2ggZm9jdXMgb24gdGhlIGxvYWRpbmcgcGFydC4g
U28gd2UgZG9uJ3QgY3JlYXRlIHRoZSBtb2R1bGUgZW52aXJvbm1lbnQKKyAgICAgICAgYW5kIGRv
bid0IGxpbmsgdGhlIG1vZHVsZXMgeWV0LgorCisgICAgICAgIFRvIHRlc3QgdGhlIGN1cnJlbnQg
bW9kdWxlIHByb2dyZXNzIGVhc2lseSwgd2UgYWRkIHRoZSBgLW1gIG9wdGlvbiB0byB0aGUgSlND
IHNoZWxsLgorICAgICAgICBXaGVuIHRoaXMgb3B0aW9uIGlzIHNwZWNpZmllZCwgd2UgbG9hZCB0
aGUgZ2l2ZW4gc2NyaXB0IGFzIHRoZSBtb2R1bGUuIEFuZCB0byB1c2UKKyAgICAgICAgdGhlIG1v
ZHVsZSBsb2FkaW5nIGluc2lkZSB0aGUgSlNDIHNoZWxsLCB3ZSBhZGRlZCB0aGUgc2ltcGxlIGxv
YWRlciBob29rIGZvciBmZXRjaGluZy4KKyAgICAgICAgSXQgZmV0Y2hlcyB0aGUgbW9kdWxlIGNv
bnRlbnQgZnJvbSB0aGUgZmlsZSBzeXN0ZW0uCisKKyAgICAgICAgQW5kIHRvIHVzZSB0aGUgRVM2
IE1hcCBpbiB0aGUgTG9hZGVyIGltcGxlbWVudGF0aW9uLCB3ZSBhZGRlZCBAZ2V0IGFuZCBAc2V0
IG1ldGhvZHMgdG8gdGhlIE1hcC4KKyAgICAgICAgQnV0IGl0IGNvbmZsaWN0cyB3aXRoIHRoZSBl
eGlzdGluZyBgZ2V0UHJpdmF0ZU5hbWVgIG1ldGhvZC4gUmVuYW1lIGl0IHRvIGBsb29rVXBQcml2
YXRlTmFtZWAuCisKKyAgICAgICAgWzFdOiBodHRwczovL3doYXR3Zy5naXRodWIuaW8vbG9hZGVy
LworICAgICAgICBbMl06IGh0dHBzOi8vZ2l0aHViLmNvbS93aGF0d2cvbG9hZGVyL2NvbW1pdC8y
MTRjN2E2NjI1YjQ0NWJkZjQxMWMzOTk4NGYzNmYwMTEzOWEyNGJlCisgICAgICAgIFszXTogaHR0
cHM6Ly9naXRodWIuY29tL3doYXR3Zy9sb2FkZXIvcHVsbC82NgorICAgICAgICBbNF06IGh0dHBz
Oi8vZ2l0aHViLmNvbS93aGF0d2cvbG9hZGVyL3B1bGwvNjcKKyAgICAgICAgWzVdOiBodHRwczov
L2dpdGh1Yi5jb20vd2hhdHdnL2xvYWRlci9pc3N1ZXMvNjgKKyAgICAgICAgWzZdOiBodHRwczov
L2J1Z3Mud2Via2l0Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9MTQ4MTM2CisKKyAgICAgICAgKiBDTWFr
ZUxpc3RzLnR4dDoKKyAgICAgICAgKiBEZXJpdmVkU291cmNlcy5tYWtlOgorICAgICAgICAqIEph
dmFTY3JpcHRDb3JlLnZjeHByb2ovSmF2YVNjcmlwdENvcmUudmN4cHJvajoKKyAgICAgICAgKiBK
YXZhU2NyaXB0Q29yZS52Y3hwcm9qL0phdmFTY3JpcHRDb3JlLnZjeHByb2ouZmlsdGVyczoKKyAg
ICAgICAgKiBKYXZhU2NyaXB0Q29yZS54Y29kZXByb2ovcHJvamVjdC5wYnhwcm9qOgorICAgICAg
ICAqIGJ1aWx0aW5zL0J1aWx0aW5OYW1lcy5oOgorICAgICAgICAoSlNDOjpCdWlsdGluTmFtZXM6
Omxvb2tVcFByaXZhdGVOYW1lKToKKyAgICAgICAgKEpTQzo6QnVpbHRpbk5hbWVzOjpsb29rVXBQ
dWJsaWNOYW1lKToKKyAgICAgICAgKEpTQzo6QnVpbHRpbk5hbWVzOjpnZXRQcml2YXRlTmFtZSk6
IERlbGV0ZWQuCisgICAgICAgIChKU0M6OkJ1aWx0aW5OYW1lczo6Z2V0UHVibGljTmFtZSk6IERl
bGV0ZWQuCisgICAgICAgICogYnVpbHRpbnMvTW9kdWxlTG9hZGVyT2JqZWN0LmpzOiBBZGRlZC4K
KyAgICAgICAgKHNldFN0YXRlVG9NYXgpOgorICAgICAgICAobmV3UmVnaXN0cnlFbnRyeSk6Cisg
ICAgICAgIChmb3JjZUZ1bGZpbGxQcm9taXNlKToKKyAgICAgICAgKGZ1bGZpbGxGZXRjaCk6Cisg
ICAgICAgIChmdWxmaWxsVHJhbnNsYXRlKToKKyAgICAgICAgKGZ1bGZpbGxJbnN0YW50aWF0ZSk6
CisgICAgICAgIChpbnN0YW50aWF0aW9uKToKKyAgICAgICAgKHJlcXVlc3RGZXRjaCk6CisgICAg
ICAgIChyZXF1ZXN0VHJhbnNsYXRlKToKKyAgICAgICAgKHJlcXVlc3RJbnN0YW50aWF0ZSk6Cisg
ICAgICAgIChyZXF1ZXN0UmVzb2x2ZURlcGVuZGVuY2llcy5jb2xsZWN0UHJvbWlzZS50aGlzLnJl
cXVlc3RJbnN0YW50aWF0ZS50aGVuLik6CisgICAgICAgIChyZXF1ZXN0UmVzb2x2ZURlcGVuZGVu
Y2llcy5jb2xsZWN0UHJvbWlzZS50aGlzLnJlcXVlc3RJbnN0YW50aWF0ZS50aGVuKToKKyAgICAg
ICAgKHJlcXVlc3RSZXNvbHZlRGVwZW5kZW5jaWVzKToKKyAgICAgICAgKHJlcXVlc3RJbnN0YW50
aWF0ZUFsbCk6CisgICAgICAgIChwcm92aWRlKToKKyAgICAgICAgKiBqc2MuY3BwOgorICAgICAg
ICAoc3RyaW5nRnJvbVVURik6CisgICAgICAgIChqc2NTb3VyY2UpOgorICAgICAgICAoR2xvYmFs
T2JqZWN0Ojpsb2FkZXJGZXRjaCk6CisgICAgICAgIChmdW5jdGlvbkNoZWNrTW9kdWxlU3ludGF4
KToKKyAgICAgICAgKGR1bXBFeGNlcHRpb24pOgorICAgICAgICAocnVuV2l0aFNjcmlwdHMpOgor
ICAgICAgICAocHJpbnRVc2FnZVN0YXRlbWVudCk6CisgICAgICAgIChDb21tYW5kTGluZTo6cGFy
c2VBcmd1bWVudHMpOgorICAgICAgICAoanNjbWFpbik6CisgICAgICAgIChDb21tYW5kTGluZTo6
Q29tbWFuZExpbmUpOiBEZWxldGVkLgorICAgICAgICAqIHBhcnNlci9MZXhlci5jcHA6CisgICAg
ICAgIChKU0M6OkxleGVyPExDaGFyPjo6cGFyc2VJZGVudGlmaWVyKToKKyAgICAgICAgKEpTQzo6
TGV4ZXI8VUNoYXI+OjpwYXJzZUlkZW50aWZpZXIpOgorICAgICAgICAqIHBhcnNlci9Nb2R1bGVB
bmFseXplci5jcHA6CisgICAgICAgIChKU0M6Ok1vZHVsZUFuYWx5emVyOjpNb2R1bGVBbmFseXpl
cik6CisgICAgICAgIChKU0M6Ok1vZHVsZUFuYWx5emVyOjpleHBvcnRWYXJpYWJsZSk6CisgICAg
ICAgIChKU0M6Ok1vZHVsZUFuYWx5emVyOjphbmFseXplKToKKyAgICAgICAgKiBwYXJzZXIvTW9k
dWxlQW5hbHl6ZXIuaDoKKyAgICAgICAgKEpTQzo6TW9kdWxlQW5hbHl6ZXI6Om1vZHVsZVJlY29y
ZCk6CisgICAgICAgICogcGFyc2VyL01vZHVsZVJlY29yZC5jcHA6CisgICAgICAgIChKU0M6OnBy
aW50YWJsZU5hbWUpOiBEZWxldGVkLgorICAgICAgICAoSlNDOjpNb2R1bGVSZWNvcmQ6OmR1bXAp
OiBEZWxldGVkLgorICAgICAgICAqIHBhcnNlci9Nb2R1bGVSZWNvcmQuaDoKKyAgICAgICAgKEpT
Qzo6TW9kdWxlUmVjb3JkOjpJbXBvcnRFbnRyeTo6aXNOYW1lc3BhY2UpOiBEZWxldGVkLgorICAg
ICAgICAoSlNDOjpNb2R1bGVSZWNvcmQ6OmNyZWF0ZSk6IERlbGV0ZWQuCisgICAgICAgIChKU0M6
Ok1vZHVsZVJlY29yZDo6YXBwZW5kUmVxdWVzdGVkTW9kdWxlKTogRGVsZXRlZC4KKyAgICAgICAg
KEpTQzo6TW9kdWxlUmVjb3JkOjphZGRJbXBvcnRFbnRyeSk6IERlbGV0ZWQuCisgICAgICAgIChK
U0M6Ok1vZHVsZVJlY29yZDo6YWRkRXhwb3J0RW50cnkpOiBEZWxldGVkLgorICAgICAgICAoSlND
OjpNb2R1bGVSZWNvcmQ6OmFkZFN0YXJFeHBvcnRFbnRyeSk6IERlbGV0ZWQuCisgICAgICAgICog
cGFyc2VyL05vZGVzLmg6CisgICAgICAgICogcGFyc2VyL05vZGVzQW5hbHl6ZU1vZHVsZS5jcHA6
CisgICAgICAgIChKU0M6OkltcG9ydERlY2xhcmF0aW9uTm9kZTo6YW5hbHl6ZU1vZHVsZSk6Cisg
ICAgICAgIChKU0M6OkV4cG9ydEFsbERlY2xhcmF0aW9uTm9kZTo6YW5hbHl6ZU1vZHVsZSk6Cisg
ICAgICAgIChKU0M6OkV4cG9ydE5hbWVkRGVjbGFyYXRpb25Ob2RlOjphbmFseXplTW9kdWxlKToK
KyAgICAgICAgKiBydW50aW1lL0NvbW1vbklkZW50aWZpZXJzLmNwcDoKKyAgICAgICAgKEpTQzo6
Q29tbW9uSWRlbnRpZmllcnM6Omxvb2tVcFByaXZhdGVOYW1lKToKKyAgICAgICAgKEpTQzo6Q29t
bW9uSWRlbnRpZmllcnM6Omxvb2tVcFB1YmxpY05hbWUpOgorICAgICAgICAoSlNDOjpDb21tb25J
ZGVudGlmaWVyczo6Z2V0UHJpdmF0ZU5hbWUpOiBEZWxldGVkLgorICAgICAgICAoSlNDOjpDb21t
b25JZGVudGlmaWVyczo6Z2V0UHVibGljTmFtZSk6IERlbGV0ZWQuCisgICAgICAgICogcnVudGlt
ZS9Db21tb25JZGVudGlmaWVycy5oOgorICAgICAgICAqIHJ1bnRpbWUvQ29tcGxldGlvbi5jcHA6
CisgICAgICAgIChKU0M6OmNoZWNrTW9kdWxlU3ludGF4KToKKyAgICAgICAgKEpTQzo6ZXZhbHVh
dGVNb2R1bGUpOgorICAgICAgICAqIHJ1bnRpbWUvQ29tcGxldGlvbi5oOgorICAgICAgICAqIHJ1
bnRpbWUvRXhjZXB0aW9uSGVscGVycy5jcHA6CisgICAgICAgIChKU0M6OmNyZWF0ZVVuZGVmaW5l
ZFZhcmlhYmxlRXJyb3IpOgorICAgICAgICAqIHJ1bnRpbWUvSWRlbnRpZmllci5oOgorICAgICAg
ICAqIHJ1bnRpbWUvSlNHbG9iYWxPYmplY3QuY3BwOgorICAgICAgICAoSlNDOjpKU0dsb2JhbE9i
amVjdDo6aW5pdCk6CisgICAgICAgIChKU0M6OkpTR2xvYmFsT2JqZWN0Ojp2aXNpdENoaWxkcmVu
KToKKyAgICAgICAgKiBydW50aW1lL0pTR2xvYmFsT2JqZWN0Lmg6CisgICAgICAgIChKU0M6OkpT
R2xvYmFsT2JqZWN0Ojptb2R1bGVMb2FkZXIpOgorICAgICAgICAoSlNDOjpKU0dsb2JhbE9iamVj
dDo6bW9kdWxlUmVjb3JkU3RydWN0dXJlKToKKyAgICAgICAgKiBydW50aW1lL0pTTW9kdWxlUmVj
b3JkLmNwcDogUmVuYW1lZCBmcm9tIFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9wYXJzZXIvTW9kdWxl
UmVjb3JkLmNwcC4KKyAgICAgICAgKEpTQzo6SlNNb2R1bGVSZWNvcmQ6OmRlc3Ryb3kpOgorICAg
ICAgICAoSlNDOjpKU01vZHVsZVJlY29yZDo6ZmluaXNoQ3JlYXRpb24pOgorICAgICAgICAoSlND
OjpwcmludGFibGVOYW1lKToKKyAgICAgICAgKEpTQzo6SlNNb2R1bGVSZWNvcmQ6OmR1bXApOgor
ICAgICAgICAqIHJ1bnRpbWUvSlNNb2R1bGVSZWNvcmQuaDogUmVuYW1lZCBmcm9tIFNvdXJjZS9K
YXZhU2NyaXB0Q29yZS9wYXJzZXIvTW9kdWxlUmVjb3JkLmguCisgICAgICAgIChKU0M6OkpTTW9k
dWxlUmVjb3JkOjpJbXBvcnRFbnRyeTo6aXNOYW1lc3BhY2UpOgorICAgICAgICAoSlNDOjpKU01v
ZHVsZVJlY29yZDo6Y3JlYXRlU3RydWN0dXJlKToKKyAgICAgICAgKEpTQzo6SlNNb2R1bGVSZWNv
cmQ6OmNyZWF0ZSk6CisgICAgICAgIChKU0M6OkpTTW9kdWxlUmVjb3JkOjpyZXF1ZXN0ZWRNb2R1
bGVzKToKKyAgICAgICAgKEpTQzo6SlNNb2R1bGVSZWNvcmQ6OkpTTW9kdWxlUmVjb3JkKToKKyAg
ICAgICAgKEpTQzo6SlNNb2R1bGVSZWNvcmQ6OmFwcGVuZFJlcXVlc3RlZE1vZHVsZSk6CisgICAg
ICAgIChKU0M6OkpTTW9kdWxlUmVjb3JkOjphZGRJbXBvcnRFbnRyeSk6CisgICAgICAgIChKU0M6
OkpTTW9kdWxlUmVjb3JkOjphZGRFeHBvcnRFbnRyeSk6CisgICAgICAgIChKU0M6OkpTTW9kdWxl
UmVjb3JkOjphZGRTdGFyRXhwb3J0RW50cnkpOgorICAgICAgICAqIHJ1bnRpbWUvTWFwUHJvdG90
eXBlLmNwcDoKKyAgICAgICAgKEpTQzo6TWFwUHJvdG90eXBlOjpmaW5pc2hDcmVhdGlvbik6Cisg
ICAgICAgICogcnVudGltZS9Nb2R1bGVMb2FkZXJPYmplY3QuY3BwOiBBZGRlZC4KKyAgICAgICAg
KEpTQzo6TW9kdWxlTG9hZGVyT2JqZWN0OjpNb2R1bGVMb2FkZXJPYmplY3QpOgorICAgICAgICAo
SlNDOjpNb2R1bGVMb2FkZXJPYmplY3Q6OmZpbmlzaENyZWF0aW9uKToKKyAgICAgICAgKEpTQzo6
TW9kdWxlTG9hZGVyT2JqZWN0OjpnZXRPd25Qcm9wZXJ0eVNsb3QpOgorICAgICAgICAoSlNDOjpw
cmludGFibGVNb2R1bGVLZXkpOgorICAgICAgICAoSlNDOjpNb2R1bGVMb2FkZXJPYmplY3Q6OnBy
b3ZpZGUpOgorICAgICAgICAoSlNDOjpNb2R1bGVMb2FkZXJPYmplY3Q6OnJlcXVlc3RJbnN0YW50
aWF0ZUFsbCk6CisgICAgICAgIChKU0M6Ok1vZHVsZUxvYWRlck9iamVjdDo6cmVzb2x2ZSk6Cisg
ICAgICAgIChKU0M6Ok1vZHVsZUxvYWRlck9iamVjdDo6ZmV0Y2gpOgorICAgICAgICAoSlNDOjpN
b2R1bGVMb2FkZXJPYmplY3Q6OnRyYW5zbGF0ZSk6CisgICAgICAgIChKU0M6Ok1vZHVsZUxvYWRl
ck9iamVjdDo6aW5zdGFudGlhdGUpOgorICAgICAgICAoSlNDOjptb2R1bGVMb2FkZXJPYmplY3RQ
YXJzZU1vZHVsZSk6CisgICAgICAgIChKU0M6Om1vZHVsZUxvYWRlck9iamVjdFJlcXVlc3RlZE1v
ZHVsZXMpOgorICAgICAgICAoSlNDOjptb2R1bGVMb2FkZXJPYmplY3RSZXNvbHZlKToKKyAgICAg
ICAgKEpTQzo6bW9kdWxlTG9hZGVyT2JqZWN0RmV0Y2gpOgorICAgICAgICAoSlNDOjptb2R1bGVM
b2FkZXJPYmplY3RUcmFuc2xhdGUpOgorICAgICAgICAoSlNDOjptb2R1bGVMb2FkZXJPYmplY3RJ
bnN0YW50aWF0ZSk6CisgICAgICAgICogcnVudGltZS9Nb2R1bGVMb2FkZXJPYmplY3QuaDogQWRk
ZWQuCisgICAgICAgIChKU0M6Ok1vZHVsZUxvYWRlck9iamVjdDo6Y3JlYXRlKToKKyAgICAgICAg
KEpTQzo6TW9kdWxlTG9hZGVyT2JqZWN0OjpjcmVhdGVTdHJ1Y3R1cmUpOgorICAgICAgICAqIHJ1
bnRpbWUvT3B0aW9ucy5oOgorCiAyMDE1LTA4LTE4ICBKb3NlcGggUGVjb3Jhcm8gIDxwZWNvcmFy
b0BhcHBsZS5jb20+CiAKICAgICAgICAgV2ViIEluc3BlY3RvcjogTGlua3MgZm9yIHJ1bGVzIGlu
IDxzdHlsZT4gYXJlIGluY29ycmVjdCwgZG8gbm90IGFjY291bnQgZm9yIDxzdHlsZT4gb2Zmc2V0
IGluIHRoZSBkb2N1bWVudApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvQ2hhbmdlTG9nIGIv
U291cmNlL1dlYkNvcmUvQ2hhbmdlTG9nCmluZGV4IDU1NzAxZGFkZjFiNTFjMDJmNmRhODFjNWZm
NmEyNTA1MDg5MGQ2YWMuLmY3YWZjZjBkOGI2ZjJjMWFjOWE5N2U1Yzg5ZmYzOGMxYTZmMjNkMzAg
MTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL0NoYW5nZUxvZworKysgYi9Tb3VyY2UvV2ViQ29y
ZS9DaGFuZ2VMb2cKQEAgLTEsMyArMSwxNSBAQAorMjAxNS0wOC0xOSAgWXVzdWtlIFN1enVraSAg
PHV0YXRhbmUudGVhQGdtYWlsLmNvbT4KKworICAgICAgICBbRVM2XSBwcm90b3R5cGluZyBtb2R1
bGUgbG9hZGVyIGluIEpTQyBzaGVsbAorICAgICAgICBodHRwczovL2J1Z3Mud2Via2l0Lm9yZy9z
aG93X2J1Zy5jZ2k/aWQ9MTQ3ODc2CisKKyAgICAgICAgUmV2aWV3ZWQgYnkgTk9CT0RZIChPT1BT
ISkuCisKKyAgICAgICAgSnVzdCBmaWxsIExvYWRlciBob29rcyB3aXRoIG51bGxwdHIuCisKKyAg
ICAgICAgKiBiaW5kaW5ncy9qcy9KU0RPTVdpbmRvd0Jhc2UuY3BwOgorICAgICAgICAqIGJpbmRp
bmdzL2pzL0pTV29ya2VyR2xvYmFsU2NvcGVCYXNlLmNwcDoKKwogMjAxNS0wOC0xOCAgTXlsZXMg
Qy4gTWF4ZmllbGQgIDxtbWF4ZmllbGRAYXBwbGUuY29tPgogCiAgICAgICAgIFtDb2NvYV0gUHVu
Y3R1YXRpb24gbmVhciBIaW5kaSB0ZXh0IGlzIGdhcmJsZWQgd2hlbiBzdHlsZWQgd2l0aCB0aGUg
c3lzdGVtIGZvbnQKZGlmZiAtLWdpdCBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9DTWFrZUxpc3Rz
LnR4dCBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9DTWFrZUxpc3RzLnR4dAppbmRleCBkMjI1MjM4
MTYzM2I0MmFiZWMyM2JhMDU4NjBkNDg0ZGYwOGE1ZGNjLi5mODMzNDlkZGQwYjY1ZDFhNmM1ZjRl
OTJmNGExYTgzNjM0NjI1M2ZjIDEwMDY0NAotLS0gYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvQ01h
a2VMaXN0cy50eHQKKysrIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL0NNYWtlTGlzdHMudHh0CkBA
IC0zOTAsNyArMzkwLDYgQEAgc2V0KEphdmFTY3JpcHRDb3JlX1NPVVJDRVMKIAogICAgIHBhcnNl
ci9MZXhlci5jcHAKICAgICBwYXJzZXIvTW9kdWxlQW5hbHl6ZXIuY3BwCi0gICAgcGFyc2VyL01v
ZHVsZVJlY29yZC5jcHAKICAgICBwYXJzZXIvTm9kZXMuY3BwCiAgICAgcGFyc2VyL05vZGVzQW5h
bHl6ZU1vZHVsZS5jcHAKICAgICBwYXJzZXIvUGFyc2VyLmNwcApAQCAtNTMwLDYgKzUyOSw3IEBA
IHNldChKYXZhU2NyaXB0Q29yZV9SVU5USU1FX1NPVVJDRVMKICAgICBydW50aW1lL0pTTG9jay5j
cHAKICAgICBydW50aW1lL0pTTWFwLmNwcAogICAgIHJ1bnRpbWUvSlNNYXBJdGVyYXRvci5jcHAK
KyAgICBydW50aW1lL0pTTW9kdWxlUmVjb3JkLmNwcAogICAgIHJ1bnRpbWUvSlNOb3RBbk9iamVj
dC5jcHAKICAgICBydW50aW1lL0pTT05PYmplY3QuY3BwCiAgICAgcnVudGltZS9KU09iamVjdC5j
cHAKQEAgLTU2NCw2ICs1NjQsNyBAQCBzZXQoSmF2YVNjcmlwdENvcmVfUlVOVElNRV9TT1VSQ0VT
CiAgICAgcnVudGltZS9NYXRoQ29tbW9uLmNwcAogICAgIHJ1bnRpbWUvTWF0aE9iamVjdC5jcHAK
ICAgICBydW50aW1lL01lbW9yeVN0YXRpc3RpY3MuY3BwCisgICAgcnVudGltZS9Nb2R1bGVMb2Fk
ZXJPYmplY3QuY3BwCiAgICAgcnVudGltZS9OYXRpdmVFcnJvckNvbnN0cnVjdG9yLmNwcAogICAg
IHJ1bnRpbWUvTmF0aXZlRXJyb3JQcm90b3R5cGUuY3BwCiAgICAgcnVudGltZS9OdWxsR2V0dGVy
RnVuY3Rpb24uY3BwCkBAIC02NTYsNiArNjU3LDcgQEAgc2V0KEphdmFTY3JpcHRDb3JlX0xVVF9G
SUxFUwogICAgIHJ1bnRpbWUvSlNPTk9iamVjdC5jcHAKICAgICBydW50aW1lL0pTUHJvbWlzZUNv
bnN0cnVjdG9yLmNwcAogICAgIHJ1bnRpbWUvSlNQcm9taXNlUHJvdG90eXBlLmNwcAorICAgIHJ1
bnRpbWUvTW9kdWxlTG9hZGVyT2JqZWN0LmNwcAogICAgIHJ1bnRpbWUvTnVtYmVyQ29uc3RydWN0
b3IuY3BwCiAgICAgcnVudGltZS9OdW1iZXJQcm90b3R5cGUuY3BwCiAgICAgcnVudGltZS9PYmpl
Y3RDb25zdHJ1Y3Rvci5jcHAKZGlmZiAtLWdpdCBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9EZXJp
dmVkU291cmNlcy5tYWtlIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL0Rlcml2ZWRTb3VyY2VzLm1h
a2UKaW5kZXggMWNiMmQ1Y2JhM2JkMzVlMjA5ZjlkMmM3YmI0NjdiMmI5NmY3ZmE1ZC4uNTNhYmRi
NmFkY2I3MTA4ZTdlZjE5M2I5Njk5NTY0OTU5NWYyYzE1MSAxMDA2NDQKLS0tIGEvU291cmNlL0ph
dmFTY3JpcHRDb3JlL0Rlcml2ZWRTb3VyY2VzLm1ha2UKKysrIGIvU291cmNlL0phdmFTY3JpcHRD
b3JlL0Rlcml2ZWRTb3VyY2VzLm1ha2UKQEAgLTU1LDYgKzU1LDcgQEAgYWxsIDogXAogICAgIEpT
UHJvbWlzZUNvbnN0cnVjdG9yLmx1dC5oIFwKICAgICBLZXl3b3JkTG9va3VwLmggXAogICAgIExl
eGVyLmx1dC5oIFwKKyAgICBNb2R1bGVMb2FkZXJPYmplY3QubHV0LmggXAogICAgIE51bWJlckNv
bnN0cnVjdG9yLmx1dC5oIFwKICAgICBOdW1iZXJQcm90b3R5cGUubHV0LmggXAogICAgIE9iamVj
dENvbnN0cnVjdG9yLmx1dC5oIFwKZGlmZiAtLWdpdCBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9K
YXZhU2NyaXB0Q29yZS52Y3hwcm9qL0phdmFTY3JpcHRDb3JlLnZjeHByb2ogYi9Tb3VyY2UvSmF2
YVNjcmlwdENvcmUvSmF2YVNjcmlwdENvcmUudmN4cHJvai9KYXZhU2NyaXB0Q29yZS52Y3hwcm9q
CmluZGV4IDUwNjI0N2RhMDkzNjgwZWUzMTFiYjlmNDAyNGYyNTY5NjYxM2ZlMjQuLjIwNTdmMWRm
MWEyZDA0NjcwNDNjZWE3YmNkNWE0YmUxNzEzMDc5OTYgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9KYXZh
U2NyaXB0Q29yZS9KYXZhU2NyaXB0Q29yZS52Y3hwcm9qL0phdmFTY3JpcHRDb3JlLnZjeHByb2oK
KysrIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL0phdmFTY3JpcHRDb3JlLnZjeHByb2ovSmF2YVNj
cmlwdENvcmUudmN4cHJvagpAQCAtNjYyLDcgKzY2Miw2IEBACiAgICAgPENsQ29tcGlsZSBJbmNs
dWRlPSIuLlxsbHZtXExMVk1BUEkuY3BwIiAvPgogICAgIDxDbENvbXBpbGUgSW5jbHVkZT0iLi5c
cGFyc2VyXExleGVyLmNwcCIgLz4KICAgICA8Q2xDb21waWxlIEluY2x1ZGU9Ii4uXHBhcnNlclxN
b2R1bGVBbmFseXplci5jcHAiIC8+Ci0gICAgPENsQ29tcGlsZSBJbmNsdWRlPSIuLlxwYXJzZXJc
TW9kdWxlUmVjb3JkLmNwcCIgLz4KICAgICA8Q2xDb21waWxlIEluY2x1ZGU9Ii4uXHBhcnNlclxO
b2Rlcy5jcHAiIC8+CiAgICAgPENsQ29tcGlsZSBJbmNsdWRlPSIuLlxwYXJzZXJcTm9kZXNBbmFs
eXplTW9kdWxlLmNwcCIgLz4KICAgICA8Q2xDb21waWxlIEluY2x1ZGU9Ii4uXHBhcnNlclxQYXJz
ZXIuY3BwIiAvPgpAQCAtNzc5LDYgKzc3OCw3IEBACiAgICAgPENsQ29tcGlsZSBJbmNsdWRlPSIu
LlxydW50aW1lXEpTTG9jay5jcHAiIC8+CiAgICAgPENsQ29tcGlsZSBJbmNsdWRlPSIuLlxydW50
aW1lXEpTTWFwLmNwcCIgLz4KICAgICA8Q2xDb21waWxlIEluY2x1ZGU9Ii4uXHJ1bnRpbWVcSlNN
YXBJdGVyYXRvci5jcHAiIC8+CisgICAgPENsQ29tcGlsZSBJbmNsdWRlPSIuLlxydW50aW1lXEpT
TW9kdWxlUmVjb3JkLmNwcCIgLz4KICAgICA8Q2xDb21waWxlIEluY2x1ZGU9Ii4uXHJ1bnRpbWVc
SlNOb3RBbk9iamVjdC5jcHAiIC8+CiAgICAgPENsQ29tcGlsZSBJbmNsdWRlPSIuLlxydW50aW1l
XEpTT05PYmplY3QuY3BwIiAvPgogICAgIDxDbENvbXBpbGUgSW5jbHVkZT0iLi5ccnVudGltZVxK
U09iamVjdC5jcHAiIC8+CkBAIC04MTQsNiArODE0LDcgQEAKICAgICA8Q2xDb21waWxlIEluY2x1
ZGU9Ii4uXHJ1bnRpbWVcTWF0aENvbW1vbi5jcHAiIC8+CiAgICAgPENsQ29tcGlsZSBJbmNsdWRl
PSIuLlxydW50aW1lXE1hdGhPYmplY3QuY3BwIiAvPgogICAgIDxDbENvbXBpbGUgSW5jbHVkZT0i
Li5ccnVudGltZVxNZW1vcnlTdGF0aXN0aWNzLmNwcCIgLz4KKyAgICA8Q2xDb21waWxlIEluY2x1
ZGU9Ii4uXHJ1bnRpbWVcTW9kdWxlTG9hZGVyT2JqZWN0LmNwcCIgLz4KICAgICA8Q2xDb21waWxl
IEluY2x1ZGU9Ii4uXHJ1bnRpbWVcTmF0aXZlRXJyb3JDb25zdHJ1Y3Rvci5jcHAiIC8+CiAgICAg
PENsQ29tcGlsZSBJbmNsdWRlPSIuLlxydW50aW1lXE5hdGl2ZUVycm9yUHJvdG90eXBlLmNwcCIg
Lz4KICAgICA8Q2xDb21waWxlIEluY2x1ZGU9Ii4uXHJ1bnRpbWVcTnVsbEdldHRlckZ1bmN0aW9u
LmNwcCIgLz4KQEAgLTkyNSw2ICs5MjYsNyBAQAogICAgIDxDbEluY2x1ZGUgSW5jbHVkZT0iJChD
b25maWd1cmF0aW9uQnVpbGREaXIpXG9iaiQoUGxhdGZvcm1BcmNoaXRlY3R1cmUpXCQoUHJvamVj
dE5hbWUpXERlcml2ZWRTb3VyY2VzXE51bWJlckNvbnN0cnVjdG9yLmx1dC5oIiAvPgogICAgIDxD
bEluY2x1ZGUgSW5jbHVkZT0iJChDb25maWd1cmF0aW9uQnVpbGREaXIpXG9iaiQoUGxhdGZvcm1B
cmNoaXRlY3R1cmUpXCQoUHJvamVjdE5hbWUpXERlcml2ZWRTb3VyY2VzXE51bWJlclByb3RvdHlw
ZS5sdXQuaCIgLz4KICAgICA8Q2xJbmNsdWRlIEluY2x1ZGU9IiQoQ29uZmlndXJhdGlvbkJ1aWxk
RGlyKVxvYmokKFBsYXRmb3JtQXJjaGl0ZWN0dXJlKVwkKFByb2plY3ROYW1lKVxEZXJpdmVkU291
cmNlc1xPYmplY3RDb25zdHJ1Y3Rvci5sdXQuaCIgLz4KKyAgICA8Q2xJbmNsdWRlIEluY2x1ZGU9
IiQoQ29uZmlndXJhdGlvbkJ1aWxkRGlyKVxvYmokKFBsYXRmb3JtQXJjaGl0ZWN0dXJlKVwkKFBy
b2plY3ROYW1lKVxEZXJpdmVkU291cmNlc1xNb2R1bGVMb2FkZXJPYmplY3QubHV0LmgiIC8+CiAg
ICAgPENsSW5jbHVkZSBJbmNsdWRlPSIkKENvbmZpZ3VyYXRpb25CdWlsZERpcilcb2JqJChQbGF0
Zm9ybUFyY2hpdGVjdHVyZSlcJChQcm9qZWN0TmFtZSlcRGVyaXZlZFNvdXJjZXNcUmVmbGVjdE9i
amVjdC5sdXQuaCIgLz4KICAgICA8Q2xJbmNsdWRlIEluY2x1ZGU9IiQoQ29uZmlndXJhdGlvbkJ1
aWxkRGlyKVxvYmokKFBsYXRmb3JtQXJjaGl0ZWN0dXJlKVwkKFByb2plY3ROYW1lKVxEZXJpdmVk
U291cmNlc1xSZWdFeHBDb25zdHJ1Y3Rvci5sdXQuaCIgLz4KICAgICA8Q2xJbmNsdWRlIEluY2x1
ZGU9IiQoQ29uZmlndXJhdGlvbkJ1aWxkRGlyKVxvYmokKFBsYXRmb3JtQXJjaGl0ZWN0dXJlKVwk
KFByb2plY3ROYW1lKVxEZXJpdmVkU291cmNlc1xSZWdFeHBKaXRUYWJsZXMuaCIgLz4KQEAgLTE0
NTcsNyArMTQ1OSw2IEBACiAgICAgPENsSW5jbHVkZSBJbmNsdWRlPSIuLlxwYXJzZXJcQVNUQnVp
bGRlci5oIiAvPgogICAgIDxDbEluY2x1ZGUgSW5jbHVkZT0iLi5ccGFyc2VyXExleGVyLmgiIC8+
CiAgICAgPENsSW5jbHVkZSBJbmNsdWRlPSIuLlxwYXJzZXJcTW9kdWxlQW5hbHl6ZXIuaCIgLz4K
LSAgICA8Q2xJbmNsdWRlIEluY2x1ZGU9Ii4uXHBhcnNlclxNb2R1bGVSZWNvcmQuaCIgLz4KICAg
ICA8Q2xJbmNsdWRlIEluY2x1ZGU9Ii4uXHBhcnNlclxOb2RlQ29uc3RydWN0b3JzLmgiIC8+CiAg
ICAgPENsSW5jbHVkZSBJbmNsdWRlPSIuLlxwYXJzZXJcTm9kZXMuaCIgLz4KICAgICA8Q2xJbmNs
dWRlIEluY2x1ZGU9Ii4uXHBhcnNlclxQYXJzZXIuaCIgLz4KQEAgLTE2MjMsNiArMTYyNCw3IEBA
CiAgICAgPENsSW5jbHVkZSBJbmNsdWRlPSIuLlxydW50aW1lXEpTTG9jay5oIiAvPgogICAgIDxD
bEluY2x1ZGUgSW5jbHVkZT0iLi5ccnVudGltZVxKU01hcC5oIiAvPgogICAgIDxDbEluY2x1ZGUg
SW5jbHVkZT0iLi5ccnVudGltZVxKU01hcEl0ZXJhdG9yLmgiIC8+CisgICAgPENsSW5jbHVkZSBJ
bmNsdWRlPSIuLlxydW50aW1lXEpTTW9kdWxlUmVjb3JkLmgiIC8+CiAgICAgPENsSW5jbHVkZSBJ
bmNsdWRlPSIuLlxydW50aW1lXEpTTm90QW5PYmplY3QuaCIgLz4KICAgICA8Q2xJbmNsdWRlIElu
Y2x1ZGU9Ii4uXHJ1bnRpbWVcSlNPTk9iamVjdC5oIiAvPgogICAgIDxDbEluY2x1ZGUgSW5jbHVk
ZT0iLi5ccnVudGltZVxKU09iamVjdC5oIiAvPgpAQCAtMTY2OCw2ICsxNjcwLDcgQEAKICAgICA8
Q2xJbmNsdWRlIEluY2x1ZGU9Ii4uXHJ1bnRpbWVcTWF0aENvbW1vbi5oIiAvPgogICAgIDxDbElu
Y2x1ZGUgSW5jbHVkZT0iLi5ccnVudGltZVxNYXRoT2JqZWN0LmgiIC8+CiAgICAgPENsSW5jbHVk
ZSBJbmNsdWRlPSIuLlxydW50aW1lXE1lbW9yeVN0YXRpc3RpY3MuaCIgLz4KKyAgICA8Q2xJbmNs
dWRlIEluY2x1ZGU9Ii4uXHJ1bnRpbWVcTW9kdWxlTG9hZGVyT2JqZWN0LmgiIC8+CiAgICAgPENs
SW5jbHVkZSBJbmNsdWRlPSIuLlxydW50aW1lXE1pY3JvdGFzay5oIiAvPgogICAgIDxDbEluY2x1
ZGUgSW5jbHVkZT0iLi5ccnVudGltZVxOYXRpdmVFcnJvckNvbnN0cnVjdG9yLmgiIC8+CiAgICAg
PENsSW5jbHVkZSBJbmNsdWRlPSIuLlxydW50aW1lXE5hdGl2ZUVycm9yUHJvdG90eXBlLmgiIC8+
CmRpZmYgLS1naXQgYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvSmF2YVNjcmlwdENvcmUudmN4cHJv
ai9KYXZhU2NyaXB0Q29yZS52Y3hwcm9qLmZpbHRlcnMgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUv
SmF2YVNjcmlwdENvcmUudmN4cHJvai9KYXZhU2NyaXB0Q29yZS52Y3hwcm9qLmZpbHRlcnMKaW5k
ZXggMDY2MGYyOTdlMmNjN2E3M2Y0YjNjMWJmOTQ1ZDU2ZjFhNWRmNjZlYy4uNWExNGNjZTFlYzQx
ZmJiMTY0NjQwNzQ1N2EyOGZhOTEyNTM3NWY3YSAxMDA2NDQKLS0tIGEvU291cmNlL0phdmFTY3Jp
cHRDb3JlL0phdmFTY3JpcHRDb3JlLnZjeHByb2ovSmF2YVNjcmlwdENvcmUudmN4cHJvai5maWx0
ZXJzCisrKyBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9KYXZhU2NyaXB0Q29yZS52Y3hwcm9qL0ph
dmFTY3JpcHRDb3JlLnZjeHByb2ouZmlsdGVycwpAQCAtNDU5LDkgKzQ1OSw2IEBACiAgICAgPENs
Q29tcGlsZSBJbmNsdWRlPSIuLlxwYXJzZXJcTW9kdWxlQW5hbHl6ZXIuY3BwIj4KICAgICAgIDxG
aWx0ZXI+cGFyc2VyPC9GaWx0ZXI+CiAgICAgPC9DbENvbXBpbGU+Ci0gICAgPENsQ29tcGlsZSBJ
bmNsdWRlPSIuLlxwYXJzZXJcTW9kdWxlUmVjb3JkLmNwcCI+Ci0gICAgICA8RmlsdGVyPnBhcnNl
cjwvRmlsdGVyPgotICAgIDwvQ2xDb21waWxlPgogICAgIDxDbENvbXBpbGUgSW5jbHVkZT0iLi5c
cGFyc2VyXE5vZGVzLmNwcCI+CiAgICAgICA8RmlsdGVyPnBhcnNlcjwvRmlsdGVyPgogICAgIDwv
Q2xDb21waWxlPgpAQCAtNzI2LDYgKzcyMyw5IEBACiAgICAgPENsQ29tcGlsZSBJbmNsdWRlPSIu
LlxydW50aW1lXEpTTWFwLmNwcCI+CiAgICAgICA8RmlsdGVyPnJ1bnRpbWU8L0ZpbHRlcj4KICAg
ICA8L0NsQ29tcGlsZT4KKyAgICA8Q2xDb21waWxlIEluY2x1ZGU9Ii4uXHJ1bnRpbWVcSlNNb2R1
bGVSZWNvcmQuY3BwIj4KKyAgICAgIDxGaWx0ZXI+cnVudGltZTwvRmlsdGVyPgorICAgIDwvQ2xD
b21waWxlPgogICAgIDxDbENvbXBpbGUgSW5jbHVkZT0iLi5ccnVudGltZVxKU05vdEFuT2JqZWN0
LmNwcCI+CiAgICAgICA8RmlsdGVyPnJ1bnRpbWU8L0ZpbHRlcj4KICAgICA8L0NsQ29tcGlsZT4K
QEAgLTE2OTgsNiArMTY5OCw5IEBACiAgICAgPENsQ29tcGlsZSBJbmNsdWRlPSIuLlxydW50aW1l
XE1lbW9yeVN0YXRpc3RpY3MuY3BwIj4KICAgICAgIDxGaWx0ZXI+cnVudGltZTwvRmlsdGVyPgog
ICAgIDwvQ2xDb21waWxlPgorICAgIDxDbENvbXBpbGUgSW5jbHVkZT0iLi5ccnVudGltZVxNb2R1
bGVMb2FkZXJPYmplY3QuY3BwIj4KKyAgICAgIDxGaWx0ZXI+cnVudGltZTwvRmlsdGVyPgorICAg
IDwvQ2xDb21waWxlPgogICAgIDxDbENvbXBpbGUgSW5jbHVkZT0iLi5cYnl0ZWNvZGVcQ29tcGxl
eEdldFN0YXR1cy5jcHAiPgogICAgICAgPEZpbHRlcj5ieXRlY29kZTwvRmlsdGVyPgogICAgIDwv
Q2xDb21waWxlPgpAQCAtMjQ5OCw5ICsyNTAxLDYgQEAKICAgICA8Q2xJbmNsdWRlIEluY2x1ZGU9
Ii4uXHBhcnNlclxNb2R1bGVBbmFseXplci5oIj4KICAgICAgIDxGaWx0ZXI+cGFyc2VyPC9GaWx0
ZXI+CiAgICAgPC9DbEluY2x1ZGU+Ci0gICAgPENsSW5jbHVkZSBJbmNsdWRlPSIuLlxwYXJzZXJc
TW9kdWxlUmVjb3JkLmgiPgotICAgICAgPEZpbHRlcj5wYXJzZXI8L0ZpbHRlcj4KLSAgICA8L0Ns
SW5jbHVkZT4KICAgICA8Q2xJbmNsdWRlIEluY2x1ZGU9Ii4uXHBhcnNlclxOb2RlQ29uc3RydWN0
b3JzLmgiPgogICAgICAgPEZpbHRlcj5wYXJzZXI8L0ZpbHRlcj4KICAgICA8L0NsSW5jbHVkZT4K
QEAgLTMyMTMsNiArMzIxMyw5IEBACiAgICAgPENsSW5jbHVkZSBJbmNsdWRlPSIkKENvbmZpZ3Vy
YXRpb25CdWlsZERpcilcb2JqJChQbGF0Zm9ybUFyY2hpdGVjdHVyZSlcJChQcm9qZWN0TmFtZSlc
RGVyaXZlZFNvdXJjZXNcTGV4ZXIubHV0LmgiPgogICAgICAgPEZpbHRlcj5EZXJpdmVkIFNvdXJj
ZXM8L0ZpbHRlcj4KICAgICA8L0NsSW5jbHVkZT4KKyAgICA8Q2xJbmNsdWRlIEluY2x1ZGU9IiQo
Q29uZmlndXJhdGlvbkJ1aWxkRGlyKVxvYmokKFBsYXRmb3JtQXJjaGl0ZWN0dXJlKVwkKFByb2pl
Y3ROYW1lKVxEZXJpdmVkU291cmNlc1xNb2R1bGVMb2FkZXJPYmplY3QubHV0LmgiPgorICAgICAg
PEZpbHRlcj5EZXJpdmVkIFNvdXJjZXM8L0ZpbHRlcj4KKyAgICA8L0NsSW5jbHVkZT4KICAgICA8
Q2xJbmNsdWRlIEluY2x1ZGU9IiQoQ29uZmlndXJhdGlvbkJ1aWxkRGlyKVxvYmokKFBsYXRmb3Jt
QXJjaGl0ZWN0dXJlKVwkKFByb2plY3ROYW1lKVxEZXJpdmVkU291cmNlc1xOdW1iZXJDb25zdHJ1
Y3Rvci5sdXQuaCI+CiAgICAgICA8RmlsdGVyPkRlcml2ZWQgU291cmNlczwvRmlsdGVyPgogICAg
IDwvQ2xJbmNsdWRlPgpAQCAtMzQ1MCw2ICszNDUzLDkgQEAKICAgICA8Q2xJbmNsdWRlIEluY2x1
ZGU9Ii4uXHJ1bnRpbWVcSlNNYXAuaCI+CiAgICAgICA8RmlsdGVyPnJ1bnRpbWU8L0ZpbHRlcj4K
ICAgICA8L0NsSW5jbHVkZT4KKyAgICA8Q2xJbmNsdWRlIEluY2x1ZGU9Ii4uXHJ1bnRpbWVcSlNN
b2R1bGVSZWNvcmQuaCI+CisgICAgICA8RmlsdGVyPnJ1bnRpbWU8L0ZpbHRlcj4KKyAgICA8L0Ns
SW5jbHVkZT4KICAgICA8Q2xJbmNsdWRlIEluY2x1ZGU9Ii4uXHJ1bnRpbWVcSlNTZXQuaCI+CiAg
ICAgICA8RmlsdGVyPnJ1bnRpbWU8L0ZpbHRlcj4KICAgICA8L0NsSW5jbHVkZT4KQEAgLTQyNDYs
NiArNDI1Miw5IEBACiAgICAgPENsSW5jbHVkZSBJbmNsdWRlPSIuLlxydW50aW1lXE1lbW9yeVN0
YXRpc3RpY3MuaCI+CiAgICAgICA8RmlsdGVyPnJ1bnRpbWU8L0ZpbHRlcj4KICAgICA8L0NsSW5j
bHVkZT4KKyAgICA8Q2xJbmNsdWRlIEluY2x1ZGU9Ii4uXHJ1bnRpbWVcTW9kdWxlTG9hZGVyT2Jq
ZWN0LmgiPgorICAgICAgPEZpbHRlcj5ydW50aW1lPC9GaWx0ZXI+CisgICAgPC9DbEluY2x1ZGU+
CiAgICAgPENsSW5jbHVkZSBJbmNsdWRlPSIuLlxieXRlY29kZVxDb21wbGV4R2V0U3RhdHVzLmgi
PgogICAgICAgPEZpbHRlcj5ieXRlY29kZTwvRmlsdGVyPgogICAgIDwvQ2xJbmNsdWRlPgpkaWZm
IC0tZ2l0IGEvU291cmNlL0phdmFTY3JpcHRDb3JlL0phdmFTY3JpcHRDb3JlLnhjb2RlcHJvai9w
cm9qZWN0LnBieHByb2ogYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvSmF2YVNjcmlwdENvcmUueGNv
ZGVwcm9qL3Byb2plY3QucGJ4cHJvagppbmRleCA0OGZmY2M2OTYzOGVmZjlhNzRhMWQwYWE0MGUx
MGNjMDdmMWFhOTAzLi5hMGQ0NzBiNjI2ODdkM2E1OGNkNzVkMWVmYzg0NWQ4MGFmYmFkYzI3IDEw
MDY0NAotLS0gYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvSmF2YVNjcmlwdENvcmUueGNvZGVwcm9q
L3Byb2plY3QucGJ4cHJvagorKysgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvSmF2YVNjcmlwdENv
cmUueGNvZGVwcm9qL3Byb2plY3QucGJ4cHJvagpAQCAtMTcwMCwxMSArMTcwMCwxNiBAQAogCQlF
MzU0NjIyQjFCNjA2NUQxMDA1NDUzODYgLyogQ29uc3RydWN0QWJpbGl0eS5oIGluIEhlYWRlcnMg
Ki8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gRTM1NDYyMkExQjYwNjVEMTAwNTQ1
Mzg2IC8qIENvbnN0cnVjdEFiaWxpdHkuaCAqLzsgc2V0dGluZ3MgPSB7QVRUUklCVVRFUyA9IChQ
cml2YXRlLCApOyB9OyB9OwogCQlFMzVFMDM1RjFCN0FCNDNFMDA3M0FEMkEgLyogSW5zcGVjdG9y
SW5zdHJ1bWVudGF0aW9uT2JqZWN0LmNwcCBpbiBTb3VyY2VzICovID0ge2lzYSA9IFBCWEJ1aWxk
RmlsZTsgZmlsZVJlZiA9IEUzNUUwMzVEMUI3QUI0M0UwMDczQUQyQSAvKiBJbnNwZWN0b3JJbnN0
cnVtZW50YXRpb25PYmplY3QuY3BwICovOyB9OwogCQlFMzVFMDM2MDFCN0FCNDNFMDA3M0FEMkEg
LyogSW5zcGVjdG9ySW5zdHJ1bWVudGF0aW9uT2JqZWN0LmggaW4gSGVhZGVycyAqLyA9IHtpc2Eg
PSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSBFMzVFMDM1RTFCN0FCNDNFMDA3M0FEMkEgLyogSW5z
cGVjdG9ySW5zdHJ1bWVudGF0aW9uT2JqZWN0LmggKi87IHNldHRpbmdzID0ge0FUVFJJQlVURVMg
PSAoUHJpdmF0ZSwgKTsgfTsgfTsKKwkJRTM1NUYzNTIxQjdEQzg1MzAwQzUwREM1IC8qIE1vZHVs
ZUxvYWRlck9iamVjdC5jcHAgaW4gU291cmNlcyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZp
bGVSZWYgPSBFMzU1RjM1MDFCN0RDODUzMDBDNTBEQzUgLyogTW9kdWxlTG9hZGVyT2JqZWN0LmNw
cCAqLzsgfTsKKwkJRTM1NUYzNTMxQjdEQzg1MzAwQzUwREM1IC8qIE1vZHVsZUxvYWRlck9iamVj
dC5oIGluIEhlYWRlcnMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gRTM1NUYz
NTExQjdEQzg1MzAwQzUwREM1IC8qIE1vZHVsZUxvYWRlck9iamVjdC5oICovOyB9OwogCQlFMzc5
NEU3NTFCNzdFQjk3MDA1NTQzQUUgLyogTW9kdWxlQW5hbHl6ZXIuY3BwIGluIFNvdXJjZXMgKi8g
PSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gRTM3OTRFNzMxQjc3RUI5NzAwNTU0M0FF
IC8qIE1vZHVsZUFuYWx5emVyLmNwcCAqLzsgfTsKIAkJRTM3OTRFNzYxQjc3RUI5NzAwNTU0M0FF
IC8qIE1vZHVsZUFuYWx5emVyLmggaW4gSGVhZGVycyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7
IGZpbGVSZWYgPSBFMzc5NEU3NDFCNzdFQjk3MDA1NTQzQUUgLyogTW9kdWxlQW5hbHl6ZXIuaCAq
Lzsgc2V0dGluZ3MgPSB7QVRUUklCVVRFUyA9IChQcml2YXRlLCApOyB9OyB9OwotCQlFMzk2M0NF
RDFCNzNGNzUwMDBFQjRDRTUgLyogTW9kdWxlUmVjb3JkLmggaW4gSGVhZGVycyAqLyA9IHtpc2Eg
PSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSBFMzk2M0NFQjFCNzNGNzUwMDBFQjRDRTUgLyogTW9k
dWxlUmVjb3JkLmggKi87IHNldHRpbmdzID0ge0FUVFJJQlVURVMgPSAoUHJpdmF0ZSwgKTsgfTsg
fTsKIAkJRTM5NjNDRUUxQjczRjc1MDAwRUI0Q0U1IC8qIE5vZGVzQW5hbHl6ZU1vZHVsZS5jcHAg
aW4gU291cmNlcyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSBFMzk2M0NFQzFC
NzNGNzUwMDBFQjRDRTUgLyogTm9kZXNBbmFseXplTW9kdWxlLmNwcCAqLzsgfTsKIAkJRTNDMDlG
NTUxQjc5NjkyQTAwRUUzNkEyIC8qIE1vZHVsZVJlY29yZC5jcHAgaW4gU291cmNlcyAqLyA9IHtp
c2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSBFM0MwOUY1NDFCNzk2OTJBMDBFRTM2QTIgLyog
TW9kdWxlUmVjb3JkLmNwcCAqLzsgfTsKKwkJRTM1RTAzNUYxQjdBQjQzRTAwNzNBRDJBIC8qIElu
c3BlY3Rvckluc3RydW1lbnRhdGlvbk9iamVjdC5jcHAgaW4gU291cmNlcyAqLyA9IHtpc2EgPSBQ
QlhCdWlsZEZpbGU7IGZpbGVSZWYgPSBFMzVFMDM1RDFCN0FCNDNFMDA3M0FEMkEgLyogSW5zcGVj
dG9ySW5zdHJ1bWVudGF0aW9uT2JqZWN0LmNwcCAqLzsgfTsKKwkJRTM1RTAzNjAxQjdBQjQzRTAw
NzNBRDJBIC8qIEluc3BlY3Rvckluc3RydW1lbnRhdGlvbk9iamVjdC5oIGluIEhlYWRlcnMgKi8g
PSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gRTM1RTAzNUUxQjdBQjQzRTAwNzNBRDJB
IC8qIEluc3BlY3Rvckluc3RydW1lbnRhdGlvbk9iamVjdC5oICovOyBzZXR0aW5ncyA9IHtBVFRS
SUJVVEVTID0gKFByaXZhdGUsICk7IH07IH07CisJCUUzOURBNEE2MUI3RThCN0MwMDg0RjMzQSAv
KiBKU01vZHVsZVJlY29yZC5jcHAgaW4gU291cmNlcyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7
IGZpbGVSZWYgPSBFMzlEQTRBNDFCN0U4QjdDMDA4NEYzM0EgLyogSlNNb2R1bGVSZWNvcmQuY3Bw
ICovOyB9OworCQlFMzlEQTRBNzFCN0U4QjdDMDA4NEYzM0EgLyogSlNNb2R1bGVSZWNvcmQuaCBp
biBIZWFkZXJzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IEUzOURBNEE1MUI3
RThCN0MwMDg0RjMzQSAvKiBKU01vZHVsZVJlY29yZC5oICovOyBzZXR0aW5ncyA9IHtBVFRSSUJV
VEVTID0gKFByaXZhdGUsICk7IH07IH07CiAJCUUzRUY4ODc0MUI2NkRGMjMwMDNGMjZDQiAvKiBK
U1Byb3BlcnR5TmFtZUl0ZXJhdG9yLmNwcCBpbiBTb3VyY2VzICovID0ge2lzYSA9IFBCWEJ1aWxk
RmlsZTsgZmlsZVJlZiA9IEUzRUY4ODcyMUI2NkRGMjMwMDNGMjZDQiAvKiBKU1Byb3BlcnR5TmFt
ZUl0ZXJhdG9yLmNwcCAqLzsgfTsKIAkJRTNFRjg4NzUxQjY2REYyMzAwM0YyNkNCIC8qIEpTUHJv
cGVydHlOYW1lSXRlcmF0b3IuaCBpbiBIZWFkZXJzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsg
ZmlsZVJlZiA9IEUzRUY4ODczMUI2NkRGMjMwMDNGMjZDQiAvKiBKU1Byb3BlcnR5TmFtZUl0ZXJh
dG9yLmggKi87IHNldHRpbmdzID0ge0FUVFJJQlVURVMgPSAoUHJpdmF0ZSwgKTsgfTsgfTsKIAkJ
RTQ5REMxNkIxMkVGMjkzRTAwMTg0QTFGIC8qIFNvdXJjZVByb3ZpZGVyQ2FjaGUuY3BwIGluIFNv
dXJjZXMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gRTQ5REMxNTUxMkVGMjc3
MjAwMTg0QTFGIC8qIFNvdXJjZVByb3ZpZGVyQ2FjaGUuY3BwICovOyB9OwpAQCAtMzUzNywxMSAr
MzU0MiwxNyBAQAogCQlFMzVFMDM1RDFCN0FCNDNFMDA3M0FEMkEgLyogSW5zcGVjdG9ySW5zdHJ1
bWVudGF0aW9uT2JqZWN0LmNwcCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5j
b2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuY3BwLmNwcDsgcGF0aCA9
IEluc3BlY3Rvckluc3RydW1lbnRhdGlvbk9iamVjdC5jcHA7IHNvdXJjZVRyZWUgPSAiPGdyb3Vw
PiI7IH07CiAJCUUzNUUwMzVFMUI3QUI0M0UwMDczQUQyQSAvKiBJbnNwZWN0b3JJbnN0cnVtZW50
YXRpb25PYmplY3QuaCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2Rpbmcg
PSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuYy5oOyBwYXRoID0gSW5zcGVjdG9y
SW5zdHJ1bWVudGF0aW9uT2JqZWN0Lmg7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CiAJCUUz
NUUwMzYxMUI3QUI0ODUwMDczQUQyQSAvKiBJbnNwZWN0b3JJbnN0cnVtZW50YXRpb25PYmplY3Qu
anMgKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtu
b3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmphdmFzY3JpcHQ7IHBhdGggPSBJbnNwZWN0b3JJbnN0
cnVtZW50YXRpb25PYmplY3QuanM7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CisJCUUzNTVG
MzUwMUI3REM4NTMwMEM1MERDNSAvKiBNb2R1bGVMb2FkZXJPYmplY3QuY3BwICovID0ge2lzYSA9
IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0g
c291cmNlY29kZS5jcHAuY3BwOyBwYXRoID0gTW9kdWxlTG9hZGVyT2JqZWN0LmNwcDsgc291cmNl
VHJlZSA9ICI8Z3JvdXA+IjsgfTsKKwkJRTM1NUYzNTExQjdEQzg1MzAwQzUwREM1IC8qIE1vZHVs
ZUxvYWRlck9iamVjdC5oICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGlu
ZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jLmg7IHBhdGggPSBNb2R1bGVM
b2FkZXJPYmplY3QuaDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKIAkJRTM3OTRFNzMxQjc3
RUI5NzAwNTU0M0FFIC8qIE1vZHVsZUFuYWx5emVyLmNwcCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVm
ZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUu
Y3BwLmNwcDsgcGF0aCA9IE1vZHVsZUFuYWx5emVyLmNwcDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+
IjsgfTsKIAkJRTM3OTRFNzQxQjc3RUI5NzAwNTU0M0FFIC8qIE1vZHVsZUFuYWx5emVyLmggKi8g
PSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmls
ZVR5cGUgPSBzb3VyY2Vjb2RlLmMuaDsgcGF0aCA9IE1vZHVsZUFuYWx5emVyLmg7IHNvdXJjZVRy
ZWUgPSAiPGdyb3VwPiI7IH07Ci0JCUUzOTYzQ0VCMUI3M0Y3NTAwMEVCNENFNSAvKiBNb2R1bGVS
ZWNvcmQuaCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBs
YXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuYy5oOyBwYXRoID0gTW9kdWxlUmVjb3JkLmg7
IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CiAJCUUzOTYzQ0VDMUI3M0Y3NTAwMEVCNENFNSAv
KiBOb2Rlc0FuYWx5emVNb2R1bGUuY3BwICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZp
bGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jcHAuY3BwOyBw
YXRoID0gTm9kZXNBbmFseXplTW9kdWxlLmNwcDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsK
IAkJRTNDMDlGNTQxQjc5NjkyQTAwRUUzNkEyIC8qIE1vZHVsZVJlY29yZC5jcHAgKi8gPSB7aXNh
ID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUg
PSBzb3VyY2Vjb2RlLmNwcC5jcHA7IHBhdGggPSBNb2R1bGVSZWNvcmQuY3BwOyBzb3VyY2VUcmVl
ID0gIjxncm91cD4iOyB9OworCQlFMzVFMDM1RDFCN0FCNDNFMDA3M0FEMkEgLyogSW5zcGVjdG9y
SW5zdHJ1bWVudGF0aW9uT2JqZWN0LmNwcCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBm
aWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuY3BwLmNwcDsg
cGF0aCA9IEluc3BlY3Rvckluc3RydW1lbnRhdGlvbk9iamVjdC5jcHA7IHNvdXJjZVRyZWUgPSAi
PGdyb3VwPiI7IH07CisJCUUzNUUwMzVFMUI3QUI0M0UwMDczQUQyQSAvKiBJbnNwZWN0b3JJbnN0
cnVtZW50YXRpb25PYmplY3QuaCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5j
b2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuYy5oOyBwYXRoID0gSW5z
cGVjdG9ySW5zdHJ1bWVudGF0aW9uT2JqZWN0Lmg7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07
CisJCUUzNUUwMzYxMUI3QUI0ODUwMDczQUQyQSAvKiBJbnNwZWN0b3JJbnN0cnVtZW50YXRpb25P
YmplY3QuanMgKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsg
bGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmphdmFzY3JpcHQ7IHBhdGggPSBJbnNwZWN0
b3JJbnN0cnVtZW50YXRpb25PYmplY3QuanM7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CisJ
CUUzOURBNEE0MUI3RThCN0MwMDg0RjMzQSAvKiBKU01vZHVsZVJlY29yZC5jcHAgKi8gPSB7aXNh
ID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUg
PSBzb3VyY2Vjb2RlLmNwcC5jcHA7IHBhdGggPSBKU01vZHVsZVJlY29yZC5jcHA7IHNvdXJjZVRy
ZWUgPSAiPGdyb3VwPiI7IH07CisJCUUzOURBNEE1MUI3RThCN0MwMDg0RjMzQSAvKiBKU01vZHVs
ZVJlY29yZC5oICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7
IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jLmg7IHBhdGggPSBKU01vZHVsZVJlY29y
ZC5oOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OwogCQlFM0VGODg3MjFCNjZERjIzMDAzRjI2
Q0IgLyogSlNQcm9wZXJ0eU5hbWVJdGVyYXRvci5jcHAgKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVy
ZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmNw
cC5jcHA7IHBhdGggPSBKU1Byb3BlcnR5TmFtZUl0ZXJhdG9yLmNwcDsgc291cmNlVHJlZSA9ICI8
Z3JvdXA+IjsgfTsKIAkJRTNFRjg4NzMxQjY2REYyMzAwM0YyNkNCIC8qIEpTUHJvcGVydHlOYW1l
SXRlcmF0b3IuaCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0
OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuYy5oOyBwYXRoID0gSlNQcm9wZXJ0eU5h
bWVJdGVyYXRvci5oOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OwogCQlFNDlEQzE0OTEyRUYy
NjFBMDAxODRBMUYgLyogU291cmNlUHJvdmlkZXJDYWNoZUl0ZW0uaCAqLyA9IHtpc2EgPSBQQlhG
aWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJj
ZWNvZGUuYy5oOyBwYXRoID0gU291cmNlUHJvdmlkZXJDYWNoZUl0ZW0uaDsgc291cmNlVHJlZSA9
ICI8Z3JvdXA+IjsgfTsKQEAgLTQ0NTQsOCArNDQ2NSw2IEBACiAJCQkJRjY5MkE4NjYwMjU1NTk3
RDAxRkY2MEY3IC8qIExleGVyLmggKi8sCiAJCQkJRTM3OTRFNzMxQjc3RUI5NzAwNTU0M0FFIC8q
IE1vZHVsZUFuYWx5emVyLmNwcCAqLywKIAkJCQlFMzc5NEU3NDFCNzdFQjk3MDA1NTQzQUUgLyog
TW9kdWxlQW5hbHl6ZXIuaCAqLywKLQkJCQlFM0MwOUY1NDFCNzk2OTJBMDBFRTM2QTIgLyogTW9k
dWxlUmVjb3JkLmNwcCAqLywKLQkJCQlFMzk2M0NFQjFCNzNGNzUwMDBFQjRDRTUgLyogTW9kdWxl
UmVjb3JkLmggKi8sCiAJCQkJOTMwREFEMDMwRkIxRUIxQTAwODJEMjA1IC8qIE5vZGVDb25zdHJ1
Y3RvcnMuaCAqLywKIAkJCQlGNjkyQTg2RDAyNTU1OTdEMDFGRjYwRjcgLyogTm9kZXMuY3BwICov
LAogCQkJCUY2OTJBODZFMDI1NTU5N0QwMUZGNjBGNyAvKiBOb2Rlcy5oICovLApAQCAtNDcxOSw2
ICs0NzI4LDggQEAKIAkJCQlBNzAwODc0MDE3Q0JFOEVCMDBDM0U2NDMgLyogSlNNYXAuaCAqLywK
IAkJCQlBNzRERUY4RjE4MkQ5OTE0MDA1MjJDMjIgLyogSlNNYXBJdGVyYXRvci5jcHAgKi8sCiAJ
CQkJQTc0REVGOTAxODJEOTkxNDAwNTIyQzIyIC8qIEpTTWFwSXRlcmF0b3IuaCAqLywKKwkJCQlF
MzlEQTRBNDFCN0U4QjdDMDA4NEYzM0EgLyogSlNNb2R1bGVSZWNvcmQuY3BwICovLAorCQkJCUUz
OURBNEE1MUI3RThCN0MwMDg0RjMzQSAvKiBKU01vZHVsZVJlY29yZC5oICovLAogCQkJCUE3Mjcw
MDc4MERBQzYwNTYwMEU1NDhENyAvKiBKU05vdEFuT2JqZWN0LmNwcCAqLywKIAkJCQlBNzI3MDA3
NzBEQUM2MDU2MDBFNTQ4RDcgLyogSlNOb3RBbk9iamVjdC5oICovLAogCQkJCUJDMjJBMzk4MEUx
NkUxNDgwMEFGMjFDOCAvKiBKU09iamVjdC5jcHAgKi8sCkBAIC00Nzk4LDYgKzQ4MDksOCBAQAog
CQkJCTkwMjEzRTNCMTIzQTQwQzIwMEQ0MjJGMyAvKiBNZW1vcnlTdGF0aXN0aWNzLmNwcCAqLywK
IAkJCQk5MDIxM0UzQzEyM0E0MEMyMDBENDIyRjMgLyogTWVtb3J5U3RhdGlzdGljcy5oICovLAog
CQkJCTdDMDA4Q0U1MTg3NjMxQjYwMDk1NUMyNCAvKiBNaWNyb3Rhc2suaCAqLywKKwkJCQlFMzU1
RjM1MDFCN0RDODUzMDBDNTBEQzUgLyogTW9kdWxlTG9hZGVyT2JqZWN0LmNwcCAqLywKKwkJCQlF
MzU1RjM1MTFCN0RDODUzMDBDNTBEQzUgLyogTW9kdWxlTG9hZGVyT2JqZWN0LmggKi8sCiAJCQkJ
QkMwMkU5MDgwRTE4MzlEQjAwMEY5Mjk3IC8qIE5hdGl2ZUVycm9yQ29uc3RydWN0b3IuY3BwICov
LAogCQkJCUJDMDJFOTA5MEUxODM5REIwMDBGOTI5NyAvKiBOYXRpdmVFcnJvckNvbnN0cnVjdG9y
LmggKi8sCiAJCQkJQkMwMkU5MEEwRTE4MzlEQjAwMEY5Mjk3IC8qIE5hdGl2ZUVycm9yUHJvdG90
eXBlLmNwcCAqLywKQEAgLTU4MDcsNiArNTgyMCw3IEBACiAJCQlmaWxlcyA9ICgKIAkJCQkwRkZB
NTQ5ODE2Qjg4MzUzMDBCM0E5ODIgLyogQTY0RE9wY29kZS5oIGluIEhlYWRlcnMgKi8sCiAJCQkJ
ODYwMTYxRTMwRjNBODNDMTAwRjg0NzEwIC8qIEFic3RyYWN0TWFjcm9Bc3NlbWJsZXIuaCBpbiBI
ZWFkZXJzICovLAorCQkJCUUzNTVGMzUzMUI3REM4NTMwMEM1MERDNSAvKiBNb2R1bGVMb2FkZXJP
YmplY3QuaCBpbiBIZWFkZXJzICovLAogCQkJCTBGRTA1MDI5MUFBOTA5NTYwMEQzM0IzMyAvKiBT
Y29wZWRBcmd1bWVudHNUYWJsZS5oIGluIEhlYWRlcnMgKi8sCiAJCQkJMEY1NUYwRjUxNEQxMDYz
QzAwQUM3NjQ5IC8qIEFic3RyYWN0UEMuaCBpbiBIZWFkZXJzICovLAogCQkJCTJBNDhEMTkxMTc3
MjM2NUIwMEM2NUE1RiAvKiBBUElDYWxsYmFja0Z1bmN0aW9uLmggaW4gSGVhZGVycyAqLywKQEAg
LTYyMDYsNyArNjIyMCw2IEBACiAJCQkJMEZDRUZBQUMxODA0QzEzRTAwNDcyQ0U0IC8qIEZUTFNh
dmVSZXN0b3JlLmggaW4gSGVhZGVycyAqLywKIAkJCQkwRjI1RjFCMjE4MTYzNUYzMDA1MjJGMzkg
LyogRlRMU2xvd1BhdGhDYWxsLmggaW4gSGVhZGVycyAqLywKIAkJCQlFMzU0NjIyQjFCNjA2NUQx
MDA1NDUzODYgLyogQ29uc3RydWN0QWJpbGl0eS5oIGluIEhlYWRlcnMgKi8sCi0JCQkJRTM5NjND
RUQxQjczRjc1MDAwRUI0Q0U1IC8qIE1vZHVsZVJlY29yZC5oIGluIEhlYWRlcnMgKi8sCiAJCQkJ
MEYyNUYxQjQxODE2MzVGMzAwNTIyRjM5IC8qIEZUTFNsb3dQYXRoQ2FsbEtleS5oIGluIEhlYWRl
cnMgKi8sCiAJCQkJMEY5RDMzOUIxODAzQURCNzAwNzNDMkJDIC8qIEZUTFN0YWNrTWFwcy5oIGlu
IEhlYWRlcnMgKi8sCiAJCQkJMEZFQTBBMTIxNzA1MTNEQjAwQkI3MjJDIC8qIEZUTFN0YXRlLmgg
aW4gSGVhZGVycyAqLywKQEAgLTYyMjcsNiArNjI0MCw3IEBACiAJCQkJQkNCRTJDQUUxNEU5ODVB
QTAwMDU5M0FEIC8qIEdDQXNzZXJ0aW9ucy5oIGluIEhlYWRlcnMgKi8sCiAJCQkJMEY3NjZEMzAx
NUE4RENFMjAwOEYzNjNFIC8qIEdDQXdhcmVKSVRTdHViUm91dGluZS5oIGluIEhlYWRlcnMgKi8s
CiAJCQkJNzBFQzBFQzcxQUEwRDdEQTAwQjZBQUZBIC8qIFN0cmluZ0l0ZXJhdG9yUHJvdG90eXBl
LmggaW4gSGVhZGVycyAqLywKKwkJCQlFMzlEQTRBNzFCN0U4QjdDMDA4NEYzM0EgLyogSlNNb2R1
bGVSZWNvcmQuaCBpbiBIZWFkZXJzICovLAogCQkJCTBGMkI2NkFDMTdCNkI1M0YwMEE3QUUzRiAv
KiBHQ0luY29taW5nUmVmQ291bnRlZC5oIGluIEhlYWRlcnMgKi8sCiAJCQkJMEYyQjY2QUQxN0I2
QjU0NTAwQTdBRTNGIC8qIEdDSW5jb21pbmdSZWZDb3VudGVkSW5saW5lcy5oIGluIEhlYWRlcnMg
Ki8sCiAJCQkJMEYyQjY2QUUxN0I2QjU0NTAwQTdBRTNGIC8qIEdDSW5jb21pbmdSZWZDb3VudGVk
U2V0LmggaW4gSGVhZGVycyAqLywKQEAgLTczNDMsNiArNzM1Nyw3IEBACiAJCQkJMkE4ODA2Nzgx
OTEwN0Q1NTAwQ0IwQkJCIC8qIERGR0Z1bmN0aW9uV2hpdGVsaXN0LmNwcCBpbiBTb3VyY2VzICov
LAogCQkJCTBGMkREODEzMUFCM0Q4QkUwMEJCQjhFOCAvKiBERkdBcmd1bWVudHNVdGlsaXRpZXMu
Y3BwIGluIFNvdXJjZXMgKi8sCiAJCQkJQTdEODlDRjMxN0EwQjhDQzAwNzczQUQ4IC8qIERGR0Js
b2NrSW5zZXJ0aW9uU2V0LmNwcCBpbiBTb3VyY2VzICovLAorCQkJCUUzNTVGMzUyMUI3REM4NTMw
MEM1MERDNSAvKiBNb2R1bGVMb2FkZXJPYmplY3QuY3BwIGluIFNvdXJjZXMgKi8sCiAJCQkJODZF
QzlEQzQxMzI4REY4MjAwMkIyQUQ3IC8qIERGR0J5dGVDb2RlUGFyc2VyLmNwcCBpbiBTb3VyY2Vz
ICovLAogCQkJCTBGRDgyRTIxMTQxNzJDRTMwMDE3OUM5NCAvKiBERkdDYXBhYmlsaXRpZXMuY3Bw
IGluIFNvdXJjZXMgKi8sCiAJCQkJMEYyQjlDRTYxOUQwQkE3RDAwQjFEMUI1IC8qIERGR09iamVj
dEFsbG9jYXRpb25TaW5raW5nUGhhc2UuY3BwIGluIFNvdXJjZXMgKi8sCkBAIC03NjMyLDcgKzc2
NDcsNiBAQAogCQkJCTBGMkI2NkVEMTdCNkI1QUIwMEE3QUUzRiAvKiBKU0RhdGFWaWV3UHJvdG90
eXBlLmNwcCBpbiBTb3VyY2VzICovLAogCQkJCTBGMkQ0REU4MTk4MzJEQUMwMDdENEIxOSAvKiBU
b1RoaXNTdGF0dXMuY3BwIGluIFNvdXJjZXMgKi8sCiAJCQkJRkUzODRFRTUxQUREQjdBRDAwNTVE
RTJDIC8qIEpTRG9sbGFyVk0uY3BwIGluIFNvdXJjZXMgKi8sCi0JCQkJRTNDMDlGNTUxQjc5Njky
QTAwRUUzNkEyIC8qIE1vZHVsZVJlY29yZC5jcHAgaW4gU291cmNlcyAqLywKIAkJCQk5Nzg4MDE0
MDE0NzFBRDkyMDA0MUIwMTYgLyogSlNEYXRlTWF0aC5jcHAgaW4gU291cmNlcyAqLywKIAkJCQkw
RkUwNTAxNzFBQTkwOTExMDBEMzNCMzMgLyogRGlyZWN0QXJndW1lbnRzLmNwcCBpbiBTb3VyY2Vz
ICovLAogCQkJCTE0MDU2NkQ2MTA3RUMyNzEwMDVEQkM4RCAvKiBKU0Z1bmN0aW9uLmNwcCBpbiBT
b3VyY2VzICovLApAQCAtNzg3NCw2ICs3ODg4LDcgQEAKIAkJCQkwRkY0MjczMjE1OEVCRDU4MDA0
Q0I5RkYgLyogVURpczg2RGlzYXNzZW1ibGVyLmNwcCBpbiBTb3VyY2VzICovLAogCQkJCUE3NkYy
Nzk0MTVGMTNDOTYwMDUxN0Q2NyAvKiBVbmxpbmtlZENvZGVCbG9jay5jcHAgaW4gU291cmNlcyAq
LywKIAkJCQlCNTlGODkzOTE4OTFGMjlGMDBENUNDREMgLyogVW5saW5rZWRJbnN0cnVjdGlvblN0
cmVhbS5jcHAgaW4gU291cmNlcyAqLywKKwkJCQlFMzlEQTRBNjFCN0U4QjdDMDA4NEYzM0EgLyog
SlNNb2R1bGVSZWNvcmQuY3BwIGluIFNvdXJjZXMgKi8sCiAJCQkJMEY3NTc2RDIxOEUxRkVFOTAw
MkVGNENEIC8qIEFjY2Vzc29yQ2FsbEpJVFN0dWJSb3V0aW5lLmNwcCBpbiBTb3VyY2VzICovLAog
CQkJCTBGMjRFNTU4MTdGNzRFREIwMEFCQjIxNyAvKiBWYWx1ZVJlY292ZXJ5LmNwcCBpbiBTb3Vy
Y2VzICovLAogCQkJCUUxOEUzQTU5MERGOTI3OEMwMEQ5MEIzNCAvKiBWTS5jcHAgaW4gU291cmNl
cyAqLywKZGlmZiAtLWdpdCBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9idWlsdGlucy9CdWlsdGlu
TmFtZXMuaCBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9idWlsdGlucy9CdWlsdGluTmFtZXMuaApp
bmRleCBjZTA0NDQ3OWY3MzAyZjE5YjFkODExNjhmOTllYzQ4MzViNDAyMjBhLi43ZTU0MzQyZTc1
MmY5ZjJkNGU4MzVlZDAzNGY0NjA5Y2YzNjVkMzlmIDEwMDY0NAotLS0gYS9Tb3VyY2UvSmF2YVNj
cmlwdENvcmUvYnVpbHRpbnMvQnVpbHRpbk5hbWVzLmgKKysrIGIvU291cmNlL0phdmFTY3JpcHRD
b3JlL2J1aWx0aW5zL0J1aWx0aW5OYW1lcy5oCkBAIC02Nyw4ICs2Nyw4IEBAIGNsYXNzIEJ1aWx0
aW5OYW1lcyB7CiAgICAgYm9vbCBpc1ByaXZhdGVOYW1lKFN5bWJvbEltcGwmIHVpZCkgY29uc3Q7
CiAgICAgYm9vbCBpc1ByaXZhdGVOYW1lKFVuaXF1ZWRTdHJpbmdJbXBsJiB1aWQpIGNvbnN0Owog
ICAgIGJvb2wgaXNQcml2YXRlTmFtZShjb25zdCBJZGVudGlmaWVyJikgY29uc3Q7Ci0gICAgY29u
c3QgSWRlbnRpZmllciogZ2V0UHJpdmF0ZU5hbWUoY29uc3QgSWRlbnRpZmllciYpIGNvbnN0Owot
ICAgIGNvbnN0IElkZW50aWZpZXImIGdldFB1YmxpY05hbWUoY29uc3QgSWRlbnRpZmllciYpIGNv
bnN0OworICAgIGNvbnN0IElkZW50aWZpZXIqIGxvb2tVcFByaXZhdGVOYW1lKGNvbnN0IElkZW50
aWZpZXImKSBjb25zdDsKKyAgICBjb25zdCBJZGVudGlmaWVyJiBsb29rVXBQdWJsaWNOYW1lKGNv
bnN0IElkZW50aWZpZXImKSBjb25zdDsKICAgICAKICAgICBKU0NfRk9SRUFDSF9CVUlMVElOX0ZV
TkNUSU9OX05BTUUoREVDTEFSRV9CVUlMVElOX0lERU5USUZJRVJfQUNDRVNTT1IpCiAgICAgSlND
X0NPTU1PTl9QUklWQVRFX0lERU5USUZJRVJTX0VBQ0hfUFJPUEVSVFlfTkFNRShERUNMQVJFX0JV
SUxUSU5fSURFTlRJRklFUl9BQ0NFU1NPUikKQEAgLTExMCw3ICsxMTAsNyBAQCBpbmxpbmUgYm9v
bCBCdWlsdGluTmFtZXM6OmlzUHJpdmF0ZU5hbWUoY29uc3QgSWRlbnRpZmllciYgaWRlbnQpIGNv
bnN0CiAgICAgcmV0dXJuIGlzUHJpdmF0ZU5hbWUoKmlkZW50LmltcGwoKSk7CiB9CiAKLWlubGlu
ZSBjb25zdCBJZGVudGlmaWVyKiBCdWlsdGluTmFtZXM6OmdldFByaXZhdGVOYW1lKGNvbnN0IElk
ZW50aWZpZXImIGlkZW50KSBjb25zdAoraW5saW5lIGNvbnN0IElkZW50aWZpZXIqIEJ1aWx0aW5O
YW1lczo6bG9va1VwUHJpdmF0ZU5hbWUoY29uc3QgSWRlbnRpZmllciYgaWRlbnQpIGNvbnN0CiB7
CiAgICAgYXV0byBpdGVyID0gbV9wdWJsaWNUb1ByaXZhdGVNYXAuZmluZChpZGVudC5pbXBsKCkp
OwogICAgIGlmIChpdGVyICE9IG1fcHVibGljVG9Qcml2YXRlTWFwLmVuZCgpKQpAQCAtMTE4LDcg
KzExOCw3IEBAIGlubGluZSBjb25zdCBJZGVudGlmaWVyKiBCdWlsdGluTmFtZXM6OmdldFByaXZh
dGVOYW1lKGNvbnN0IElkZW50aWZpZXImIGlkZW50KSBjCiAgICAgcmV0dXJuIDA7CiB9CiAKLWlu
bGluZSBjb25zdCBJZGVudGlmaWVyJiBCdWlsdGluTmFtZXM6OmdldFB1YmxpY05hbWUoY29uc3Qg
SWRlbnRpZmllciYgaWRlbnQpIGNvbnN0CitpbmxpbmUgY29uc3QgSWRlbnRpZmllciYgQnVpbHRp
bk5hbWVzOjpsb29rVXBQdWJsaWNOYW1lKGNvbnN0IElkZW50aWZpZXImIGlkZW50KSBjb25zdAog
ewogICAgIGF1dG8gaXRlciA9IG1fcHJpdmF0ZVRvUHVibGljTWFwLmZpbmQoaWRlbnQuaW1wbCgp
KTsKICAgICBpZiAoaXRlciAhPSBtX3ByaXZhdGVUb1B1YmxpY01hcC5lbmQoKSkKZGlmZiAtLWdp
dCBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9idWlsdGlucy9Nb2R1bGVMb2FkZXJPYmplY3QuanMg
Yi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvYnVpbHRpbnMvTW9kdWxlTG9hZGVyT2JqZWN0LmpzCm5l
dyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAuLmJjOTE3NDRlMmE3ZmY4YWQxODE5ODE5MmQxYzdlZjJiOTI0ZWU1NzIKLS0tIC9k
ZXYvbnVsbAorKysgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvYnVpbHRpbnMvTW9kdWxlTG9hZGVy
T2JqZWN0LmpzCkBAIC0wLDAgKzEsNDI3IEBACisvKgorICogQ29weXJpZ2h0IChDKSAyMDE1IEFw
cGxlIEluYy4gQWxsIHJpZ2h0cyByZXNlcnZlZC4KKyAqCisgKiBSZWRpc3RyaWJ1dGlvbiBhbmQg
dXNlIGluIHNvdXJjZSBhbmQgYmluYXJ5IGZvcm1zLCB3aXRoIG9yIHdpdGhvdXQKKyAqIG1vZGlm
aWNhdGlvbiwgYXJlIHBlcm1pdHRlZCBwcm92aWRlZCB0aGF0IHRoZSBmb2xsb3dpbmcgY29uZGl0
aW9ucworICogYXJlIG1ldDoKKyAqIDEuIFJlZGlzdHJpYnV0aW9ucyBvZiBzb3VyY2UgY29kZSBt
dXN0IHJldGFpbiB0aGUgYWJvdmUgY29weXJpZ2h0CisgKiAgICBub3RpY2UsIHRoaXMgbGlzdCBv
ZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIuCisgKiAyLiBSZWRpc3Ry
aWJ1dGlvbnMgaW4gYmluYXJ5IGZvcm0gbXVzdCByZXByb2R1Y2UgdGhlIGFib3ZlIGNvcHlyaWdo
dAorICogICAgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2lu
ZyBkaXNjbGFpbWVyIGluIHRoZQorICogICAgZG9jdW1lbnRhdGlvbiBhbmQvb3Igb3RoZXIgbWF0
ZXJpYWxzIHByb3ZpZGVkIHdpdGggdGhlIGRpc3RyaWJ1dGlvbi4KKyAqCisgKiBUSElTIFNPRlRX
QVJFIElTIFBST1ZJREVEIEJZIEFQUExFIElOQy4gYGBBUyBJUycnIEFORCBBTlkKKyAqIEVYUFJF
U1MgT1IgSU1QTElFRCBXQVJSQU5USUVTLCBJTkNMVURJTkcsIEJVVCBOT1QgTElNSVRFRCBUTywg
VEhFCisgKiBJTVBMSUVEIFdBUlJBTlRJRVMgT0YgTUVSQ0hBTlRBQklMSVRZIEFORCBGSVRORVNT
IEZPUiBBIFBBUlRJQ1VMQVIKKyAqIFBVUlBPU0UgQVJFIERJU0NMQUlNRUQuICBJTiBOTyBFVkVO
VCBTSEFMTCBBUFBMRSBJTkMuIE9SCisgKiBDT05UUklCVVRPUlMgQkUgTElBQkxFIEZPUiBBTlkg
RElSRUNULCBJTkRJUkVDVCwgSU5DSURFTlRBTCwgU1BFQ0lBTCwKKyAqIEVYRU1QTEFSWSwgT1Ig
Q09OU0VRVUVOVElBTCBEQU1BR0VTIChJTkNMVURJTkcsIEJVVCBOT1QgTElNSVRFRCBUTywKKyAq
IFBST0NVUkVNRU5UIE9GIFNVQlNUSVRVVEUgR09PRFMgT1IgU0VSVklDRVM7IExPU1MgT0YgVVNF
LCBEQVRBLCBPUgorICogUFJPRklUUzsgT1IgQlVTSU5FU1MgSU5URVJSVVBUSU9OKSBIT1dFVkVS
IENBVVNFRCBBTkQgT04gQU5ZIFRIRU9SWQorICogT0YgTElBQklMSVRZLCBXSEVUSEVSIElOIENP
TlRSQUNULCBTVFJJQ1QgTElBQklMSVRZLCBPUiBUT1JUCisgKiAoSU5DTFVESU5HIE5FR0xJR0VO
Q0UgT1IgT1RIRVJXSVNFKSBBUklTSU5HIElOIEFOWSBXQVkgT1VUIE9GIFRIRSBVU0UKKyAqIE9G
IFRISVMgU09GVFdBUkUsIEVWRU4gSUYgQURWSVNFRCBPRiBUSEUgUE9TU0lCSUxJVFkgT0YgU1VD
SCBEQU1BR0UuCisgKi8KKworLy8gaHR0cHM6Ly93aGF0d2cuZ2l0aHViLmlvL2xvYWRlci8jbG9h
ZGVyLW9iamVjdAorLy8gTW9kdWxlIExvYWRlciBoYXMgc2V2ZXJhbCBob29rcyB0aGF0IGNhbiBi
ZSBjdXN0b21pemVkIGJ5IHRoZSBwbGF0Zm9ybS4KKy8vIEZvciBleGFtcGxlLCB0aGUgW1tGZXRj
aF1dIGhvb2sgY2FuIGJlIHByb3ZpZGVkIGJ5IHRoZSBKYXZhU2NyaXB0Q29yZSBzaGVsbAorLy8g
YXMgZmV0Y2hpbmcgdGhlIHBheWxvYWQgZnJvbSB0aGUgbG9jYWwgZmlsZSBzeXN0ZW0uCisvLyBX
ZSBzdW1tYXJpemUgdGhlIGhvb2tzLgorLy8KKy8vIDEuIExvYWRlci5yZXNvbHZlLgorLy8gICAg
IGh0dHBzOi8vd2hhdHdnLmdpdGh1Yi5pby9sb2FkZXIvI2Jyb3dzZXItcmVzb2x2ZQorLy8gICAg
IFRha2UgdGhlIG5hbWUgYW5kIHJlc29sdmUgaXQgdG8gdGhlIHVuaXF1ZSBpZGVudGlmaWVyIGZv
ciB0aGUgcmVzb3VyY2UgbG9jYXRpb24uCisvLyAgICAgRm9yIGV4YW1wbGUsIHRha2UgdGhlICJq
cXVlcnkiIGFuZCByZXR1cm4gdGhlIFVSTCBmb3IgdGhlIHJlc291cmNlLgorLy8KKy8vIDIuIExv
YWRlci5mZXRjaAorLy8gICAgIGh0dHBzOi8vd2hhdHdnLmdpdGh1Yi5pby9sb2FkZXIvI2Jyb3dz
ZXItZmV0Y2gKKy8vICAgICBUYWtlIHRoZSBrZXkgYW5kIGZldGNoIHRoZSByZXNvdXJjZSBhY3R1
YWxseS4KKy8vICAgICBGb3IgZXhhbXBsZSwgSmF2YVNjcmlwdENvcmUgc2hlbGwgY2FuIHByb3Zp
ZGUgdGhlIGhvb2sgZmV0Y2hpbmcgdGhlIHJlc291cmNlCisvLyAgICAgZnJvbSB0aGUgbG9jYWwg
ZmlsZSBzeXN0ZW0uCisvLworLy8gMy4gTG9hZGVyLnRyYW5zbGF0ZQorLy8gICAgIGh0dHBzOi8v
d2hhdHdnLmdpdGh1Yi5pby9sb2FkZXIvI2Jyb3dzZXItdHJhbnNsYXRlCisvLyAgICAgVGFrZSB0
aGUga2V5IGFuZCB0aGUgZmV0Y2hlZCBzb3VyY2UgY29kZSBhbmQgdHJhbnNsYXRlIGl0IHRvIHRo
ZSBFUzYgc291cmNlIGNvZGUuCisvLyAgICAgVHlwaWNhbGx5IGl0IGlzIHVzZWQgYnkgdGhlIHRy
YW5zcGlsZXJzLgorLy8KKy8vIDQuIExvYWRlci5pbnN0YW50aWF0ZQorLy8gICAgIGh0dHBzOi8v
d2hhdHdnLmdpdGh1Yi5pby9sb2FkZXIvI2Jyb3dzZXItaW5zdGFudGlhdGUKKy8vICAgICBUYWtl
IHRoZSBrZXkgYW5kIHRoZSB0cmFuc2xhdGVkIHNvdXJjZSBjb2RlLCBhbmQgaW5zdGFudGlhdGUg
dGhlIG1vZHVsZSByZWNvcmQKKy8vICAgICBieSBwYXJzaW5nIHRoZSBtb2R1bGUgc291cmNlIGNv
ZGUuCisvLyAgICAgSXQgaGFzIHRoZSBjaGFuY2UgdG8gcHJvdmlkZSB0aGUgb3B0aW9uYWwgbW9k
dWxlIGluc3RhbmNlIHRoYXQgaXMgZGlmZmVyZW50IGZyb20KKy8vICAgICB0aGUgb3JkaW5hcnkg
b25lLgorCitmdW5jdGlvbiBzZXRTdGF0ZVRvTWF4KGVudHJ5LCBuZXdTdGF0ZSkKK3sKKyAgICAv
LyBodHRwczovL3doYXR3Zy5naXRodWIuaW8vbG9hZGVyLyNzZXQtc3RhdGUtdG8tbWF4CisKKyAg
ICAidXNlIHN0cmljdCI7CisKKyAgICBpZiAoZW50cnkuc3RhdGUgPCBuZXdTdGF0ZSkKKyAgICAg
ICAgZW50cnkuc3RhdGUgPSBuZXdTdGF0ZTsKK30KKworZnVuY3Rpb24gbmV3UmVnaXN0cnlFbnRy
eShrZXkpCit7CisgICAgLy8gaHR0cHM6Ly93aGF0d2cuZ2l0aHViLmlvL2xvYWRlci8jcmVnaXN0
cnkKKyAgICAvLworICAgIC8vIEVhY2ggcmVnaXN0cnkgZW50cnkgYmVjb21lcyBvbmUgb2YgdGhl
IDUgc3RhdGVzLgorICAgIC8vIDEuIEZldGNoCisgICAgLy8gICAgIFJlYWR5IHRvIGZldGNoIChv
ciBub3cgZmV0Y2hpbmcpIHRoZSByZXNvdXJjZSBvZiB0aGlzIG1vZHVsZS4KKyAgICAvLyAgICAg
VHlwaWNhbGx5LCB3ZSBmZXRjaCB0aGUgc291cmNlIGNvZGUgb3ZlciB0aGUgbmV0d29yayBvciBm
cm9tIHRoZSBmaWxlIHN5c3RlbS4KKyAgICAvLyAgICAgYS4gSWYgdGhlIHN0YXR1cyBpcyBGZXRj
aCBhbmQgdGhlcmUgaXMgbm8gZW50cnkuZmV0Y2ggcHJvbWlzZSwgdGhlIGVudHJ5IGlzIHJlYWR5
IHRvIGZldGNoLgorICAgIC8vICAgICBiLiBJZiB0aGUgc3RhdHVzIGlzIEZldGNoIGFuZCB0aGVy
ZSBpcyB0aGUgZW50cnkuZmV0Y2ggcHJvbWlzZSwgdGhlIGVudHJ5IGlzIGp1c3QgZmV0Y2hpbmcg
dGhlIHJlc291cmNlLgorICAgIC8vCisgICAgLy8gMi4gVHJhbnNsYXRlCisgICAgLy8gICAgIFJl
YWR5IHRvIHRyYW5zbGF0ZSAob3Igbm93IHRyYW5zbGF0aW5nKSB0aGUgcmF3IGZldGNoZWQgcmVz
b3VyY2UgdG8gdGhlIEVDTUFTY3JpcHQgc291cmNlIGNvZGUuCisgICAgLy8gICAgIFdlIGNhbiBp
bnNlcnQgdGhlIGhvb2sgdGhhdCB0cmFuc2xhdGVzIHRoZSByZXNvdXJjZXMgZS5nLiB0cmFuc3Bp
bGVycy4KKyAgICAvLyAgICAgYS4gSWYgdGhlIHN0YXR1cyBpcyBUcmFuc2xhdGUgYW5kIHRoZXJl
IGlzIG5vIGVudHJ5LnRyYW5zbGF0ZSBwcm9taXNlLCB0aGUgZW50cnkgaXMgcmVhZHkgdG8gdHJh
bnNsYXRlLgorICAgIC8vICAgICBiLiBJZiB0aGUgc3RhdHVzIGlzIFRyYW5zbGF0ZSBhbmQgdGhl
cmUgaXMgdGhlIGVudHJ5LnRyYW5zbGF0ZSBwcm9taXNlLCB0aGUgZW50cnkgaXMganVzdCB0cmFu
c2xhdGluZworICAgIC8vICAgICAgICB0aGUgcGF5bG9hZCB0byB0aGUgc291cmNlIGNvZGUuCisg
ICAgLy8KKyAgICAvLyAzLiBJbnN0YW50aWF0ZSAoQW5hbHl6ZU1vZHVsZSkKKyAgICAvLyAgICAg
UmVhZHkgdG8gaW5zdGFudGlhdGUgKG9yIG5vdyBpbnN0YW50aWF0aW5nKSB0aGUgbW9kdWxlIHJl
Y29yZCBmcm9tIHRoZSBmZXRjaGVkIChhbmQgdHJhbnNsYXRlZCkKKyAgICAvLyAgICAgc291cmNl
IGNvZGUuCisgICAgLy8gICAgIFR5cGljYWxseSwgd2UgcGFyc2UgdGhlIG1vZHVsZSBjb2RlLCBl
eHRyYWN0IHRoZSBkZXBlbmRlbmNpZXMgYW5kIGJpbmRpbmcgaW5mb3JtYXRpb24uCisgICAgLy8g
ICAgIGEuIElmIHRoZSBzdGF0dXMgaXMgSW5zdGFudGlhdGUgYW5kIHRoZXJlIGlzIG5vIGVudHJ5
Lmluc3RhbnRpYXRlIHByb21pc2UsIHRoZSBlbnRyeSBpcyByZWFkeSB0byBpbnN0YW50aWF0ZS4K
KyAgICAvLyAgICAgYi4gSWYgdGhlIHN0YXR1cyBpcyBJbnN0YW50aWF0ZSBhbmQgdGhlcmUgaXMg
dGhlIGVudHJ5LnRyYW5zbGF0ZSBwcm9taXNlLCB0aGUgZW50cnkgaXMganVzdCBpbnN0YW50aWF0
aW5nCisgICAgLy8gICAgICAgIHRoZSBtb2R1bGUgcmVjb3JkLgorICAgIC8vCisgICAgLy8gNC4g
UmVzb2x2ZURlcGVuZGVuY2llcyAobm90IGluIHRoZSBkcmFmdCkgaHR0cHM6Ly9naXRodWIuY29t
L3doYXR3Zy9sb2FkZXIvaXNzdWVzLzY4CisgICAgLy8gICAgIFJlYWR5IHRvIHJlcXVlc3QgdGhl
IGRlcGVuZGVudCBtb2R1bGVzIChvciBub3cgcmVxdWVzdGluZyAmIHJlc29sdmluZykuCisgICAg
Ly8gICAgIFdpdGhvdXQgdGhpcyBzdGF0ZSwgdGhlIGN1cnJlbnQgZHJhZnQgY2F1c2VzIGluZmlu
aXRlIHJlY3Vyc2lvbiB3aGVuIHRoZXJlIGlzIGNpcmN1bGFyIGRlcGVuZGVuY3kuCisgICAgLy8g
ICAgIGEuIElmIHRoZSBzdGF0dXMgaXMgUmVzb2x2ZURlcGVuZGVuY2llcyBhbmQgdGhlcmUgaXMg
bm8gZW50cnkuY29sbGVjdCBwcm9taXNlLCB0aGUgZW50cnkgaXMgcmVhZHkgdG8gY29sbGVjdC4K
KyAgICAvLyAgICAgYi4gSWYgdGhlIHN0YXR1cyBpcyBSZXNvbHZlRGVwZW5kZW5jaWVzIGFuZCB0
aGVyZSBpcyB0aGUgZW50cnkuY29sbGVjdCBwcm9taXNlLCB0aGUgZW50cnkgaXMganVzdCBjb2xs
ZWN0aW5nCisgICAgLy8gICAgICAgIHRoZSBkZXBlbmRlbmNpZXMuCisgICAgLy8KKyAgICAvLyA1
LiBMaW5rCisgICAgLy8gICAgIFJlYWR5IHRvIGxpbmsgdGhlIG1vZHVsZSB3aXRoIHRoZSBvdGhl
ciBtb2R1bGVzLgorICAgIC8vICAgICBMaW5raW5nIG1lYW5zIHRoYXQgdGhlIG1vZHVsZSBpbXBv
cnRzIGFuZCBleHBvcnRzIHRoZSBiaW5kaW5ncyBmcm9tL3RvIHRoZSBvdGhlciBtb2R1bGVzLgor
ICAgIC8vCisgICAgLy8gNi4gUmVhZHkKKyAgICAvLyAgICAgVGhlIG1vZHVsZSBpcyBsaW5rZWQs
IHNvIHRoZSBtb2R1bGUgaXMgcmVhZHkgdG8gYmUgZXhlY3V0ZWQuCisgICAgLy8KKyAgICAvLyBF
YWNoIHJlZ2lzdHJ5IGVudHJ5IGhhcyB0aGUgNCBwcm9taXNlczsgImZldGNoIiwgInRyYW5zbGF0
ZSIsICJpbnN0YW50aWF0ZSIgYW5kICJjb2xsZWN0Ii4KKyAgICAvLyBUaGV5IGFyZSBhc3NpZ25l
ZCB3aGVuIHN0YXJ0aW5nIHRoZSBlYWNoIHBoYXNlLiBBbmQgdGhleSBhcmUgZnVsZmlsbGVkIHdo
ZW4gdGhlIGVhY2ggcGhhc2UgaXMgY29tcGxldGVkLgorICAgIC8vCisgICAgLy8gSW4gdGhlIGN1
cnJlbnQgbW9kdWxlIGRyYWZ0LCBsaW5raW5nIHdpbGwgYmUgcGVyZm9ybWVkIGFmdGVyIHRoZSB3
aG9sZSBtb2R1bGVzIGFyZSBpbnN0YW50aWF0ZWQgYW5kIGNvbGxlY3RlZC4KKyAgICAvLyBBbmQg
ZXhlY3V0aW9uIGlzIGFsc28gZG9uZSBhZnRlciB0aGUgYWxsIG1vZHVsZXMgYXJlIGxpbmtlZC4K
KyAgICAvLworICAgIC8vIFRPRE86IFdlIG5lZWQgdG8gZXhwbG9pdCB0aGUgd2F5IHRvIGV4ZWN1
dGUgdGhlIG1vZHVsZSB3aGlsZSBmZXRjaGluZyBub24tcmVsYXRlZCBtb2R1bGVzLgorICAgIC8v
IE9uZSBzb2x1dGlvbjsgaW50cm9kdWNpbmcgdGhlIHJlYWR5IHByb21pc2UgY2hhaW4gdG8gZXhl
Y3V0ZSB0aGUgbW9kdWxlcyBjb25jdXJyZW50bHkgd2hpbGUga2VlcGluZworICAgIC8vIHRoZSBl
eGVjdXRpb24gb3JkZXIuCisKKyAgICAidXNlIHN0cmljdCI7CisKKyAgICByZXR1cm4geworICAg
ICAgICBrZXk6IGtleSwKKyAgICAgICAgc3RhdGU6IHRoaXMuRmV0Y2gsCisgICAgICAgIG1ldGFk
YXRhOiB1bmRlZmluZWQsCisgICAgICAgIGZldGNoOiB1bmRlZmluZWQsCisgICAgICAgIHRyYW5z
bGF0ZTogdW5kZWZpbmVkLAorICAgICAgICBpbnN0YW50aWF0ZTogdW5kZWZpbmVkLAorICAgICAg
ICBjb2xsZWN0OiB1bmRlZmluZWQsCisgICAgICAgIGRlcGVuZGVuY2llczogW10sIC8vIFRvIGtl
ZXAgdGhlIG1vZHVsZSBvcmRlciwgd2Ugc3RvcmUgdGhlIG1vZHVsZSBrZXlzIGluIHRoZSBhcnJh
eS4KKyAgICAgICAgZGVwZW5kZW5jaWVzTWFwOiB1bmRlZmluZWQsCisgICAgICAgIG1vZHVsZTog
dW5kZWZpbmVkLCAvLyBKU01vZHVsZVJlY29yZAorICAgICAgICBlcnJvcjogdW5kZWZpbmVkLAor
ICAgIH07Cit9CisKK2Z1bmN0aW9uIGVuc3VyZVJlZ2lzdGVyZWQoa2V5KQoreworICAgIC8vIGh0
dHBzOi8vd2hhdHdnLmdpdGh1Yi5pby9sb2FkZXIvI2Vuc3VyZS1yZWdpc3RlcmVkCisKKyAgICAi
dXNlIHN0cmljdCI7CisKKyAgICB2YXIgZW50cnkgPSB0aGlzLnJlZ2lzdHJ5LkBnZXQoa2V5KTsK
KyAgICBpZiAoZW50cnkpCisgICAgICAgIHJldHVybiBlbnRyeTsKKworICAgIGVudHJ5ID0gdGhp
cy5uZXdSZWdpc3RyeUVudHJ5KGtleSk7CisgICAgdGhpcy5yZWdpc3RyeS5Ac2V0KGtleSwgZW50
cnkpOworCisgICAgcmV0dXJuIGVudHJ5OworfQorCitmdW5jdGlvbiBmb3JjZUZ1bGZpbGxQcm9t
aXNlKHByb21pc2UsIHZhbHVlKQoreworICAgICJ1c2Ugc3RyaWN0IjsKKworICAgIGlmIChwcm9t
aXNlLkBwcm9taXNlU3RhdGUgPT09IEBwcm9taXNlUGVuZGluZykKKyAgICAgICAgQGZ1bGZpbGxQ
cm9taXNlKHByb21pc2UsIHZhbHVlKTsKK30KKworZnVuY3Rpb24gZnVsZmlsbEZldGNoKGVudHJ5
LCBwYXlsb2FkKQoreworICAgIC8vIGh0dHBzOi8vd2hhdHdnLmdpdGh1Yi5pby9sb2FkZXIvI2Z1
bGZpbGwtZmV0Y2gKKworICAgICJ1c2Ugc3RyaWN0IjsKKworICAgIGlmICghZW50cnkuZmV0Y2gp
CisgICAgICAgIGVudHJ5LmZldGNoID0gQG5ld1Byb21pc2VDYXBhYmlsaXR5KEBJbnRlcm5hbFBy
b21pc2UpLkBwcm9taXNlOworICAgIHRoaXMuZm9yY2VGdWxmaWxsUHJvbWlzZShlbnRyeS5mZXRj
aCwgcGF5bG9hZCk7CisgICAgdGhpcy5zZXRTdGF0ZVRvTWF4KGVudHJ5LCB0aGlzLlRyYW5zbGF0
ZSk7Cit9CisKK2Z1bmN0aW9uIGZ1bGZpbGxUcmFuc2xhdGUoZW50cnksIHNvdXJjZSkKK3sKKyAg
ICAvLyBodHRwczovL3doYXR3Zy5naXRodWIuaW8vbG9hZGVyLyNmdWxmaWxsLXRyYW5zbGF0ZQor
CisgICAgInVzZSBzdHJpY3QiOworCisgICAgaWYgKCFlbnRyeS50cmFuc2xhdGUpCisgICAgICAg
IGVudHJ5LnRyYW5zbGF0ZSA9IEBuZXdQcm9taXNlQ2FwYWJpbGl0eShASW50ZXJuYWxQcm9taXNl
KS5AcHJvbWlzZTsKKyAgICB0aGlzLmZvcmNlRnVsZmlsbFByb21pc2UoZW50cnkudHJhbnNsYXRl
LCBzb3VyY2UpOworICAgIHRoaXMuc2V0U3RhdGVUb01heChlbnRyeSwgdGhpcy5JbnN0YW50aWF0
ZSk7Cit9CisKK2Z1bmN0aW9uIGZ1bGZpbGxJbnN0YW50aWF0ZShlbnRyeSwgb3B0aW9uYWxJbnN0
YW5jZSwgc291cmNlKQoreworICAgIC8vIGh0dHBzOi8vd2hhdHdnLmdpdGh1Yi5pby9sb2FkZXIv
I2Z1bGZpbGwtaW5zdGFudGlhdGUKKworICAgICJ1c2Ugc3RyaWN0IjsKKworICAgIGlmICghZW50
cnkuaW5zdGFudGlhdGUpCisgICAgICAgIGVudHJ5Lmluc3RhbnRpYXRlID0gQG5ld1Byb21pc2VD
YXBhYmlsaXR5KEBJbnRlcm5hbFByb21pc2UpLkBwcm9taXNlOworICAgIHRoaXMuY29tbWl0SW5z
dGFudGlhdGVkKGVudHJ5LCBvcHRpb25hbEluc3RhbmNlLCBzb3VyY2UpOworCisgICAgLy8gRklY
TUU6IFRoZSBkcmFmdCBmdWxmaWxscyB0aGUgcHJvbWlzZSBpbiB0aGUgQ29tbWl0SW5zdGFudGlh
dGVkIG9wZXJhdGlvbi4KKyAgICAvLyBCdXQgaXQgQ29tbWl0SW5zdGFudGlhdGVkIGlzIGFsc28g
dXNlZCBpbiB0aGUgcmVxdWVzdEluc3RhbnRpYXRlIGFuZAorICAgIC8vIHdlIHNob3VsZCBub3Qg
ImZvcmNlIGZ1bGZpbGwiIHRoZXJlLgorICAgIC8vIFNvIHdlIHNlcGFyYXRlICJmb3JjZSBmdWxm
aWxsIiBvcGVyYXRpb24gZnJvbSB0aGUgQ29tbWl0SW5zdGFudGlhdGVkIG9wZXJhdGlvbi4KKyAg
ICAvLyBodHRwczovL2dpdGh1Yi5jb20vd2hhdHdnL2xvYWRlci9wdWxsLzY3CisgICAgdGhpcy5m
b3JjZUZ1bGZpbGxQcm9taXNlKGVudHJ5Lmluc3RhbnRpYXRlLCBlbnRyeSk7Cit9CisKK2Z1bmN0
aW9uIGNvbW1pdEluc3RhbnRpYXRlZChlbnRyeSwgb3B0aW9uYWxJbnN0YW5jZSwgc291cmNlKQor
eworICAgIC8vIGh0dHBzOi8vd2hhdHdnLmdpdGh1Yi5pby9sb2FkZXIvI2NvbW1pdC1pbnN0YW50
aWF0ZWQKKworICAgICJ1c2Ugc3RyaWN0IjsKKworICAgIHZhciBtb2R1bGVSZWNvcmQgPSB0aGlz
Lmluc3RhbnRpYXRpb24ob3B0aW9uYWxJbnN0YW5jZSwgc291cmNlLCBlbnRyeSk7CisKKyAgICAv
LyBGSVhNRTogRGVzY3JpYmVkIGluIHRoZSBkcmFmdCwKKyAgICAvLyAgIDQuIEZ1bGZpbGwgZW50
cnkuW1tJbnN0YW50aWF0ZV1dIHdpdGggaW5zdGFuY2UuCisgICAgLy8gQnV0LCBpbnN0YW50aWF0
ZSBwcm9taXNlIHNob3VsZCBiZSBmdWxmaWxsZWQgd2l0aCB0aGUgZW50cnkuCisgICAgLy8gV2Ug
cmVtb3ZlIHRoaXMgc3RhdGVtZW50IGJlY2F1c2UgaW5zdGFudGlhdGUgcHJvbWlzZSB3aWxsIGJl
CisgICAgLy8gZnVsZmlsbGVkIHdpdGhvdXQgdGhpcyAiZm9yY2UgZnVsZmlsbCIgb3BlcmF0aW9u
LgorICAgIC8vIGh0dHBzOi8vZ2l0aHViLmNvbS93aGF0d2cvbG9hZGVyL3B1bGwvNjcKKworICAg
IHZhciBkZXBlbmRlbmNpZXMgPSBbXTsKKyAgICB2YXIgZGVwZW5kZW5jaWVzTWFwID0gbmV3IEBN
YXAoKTsKKyAgICBtb2R1bGVSZWNvcmQucmVnaXN0cnlFbnRyeSA9IGVudHJ5OworICAgIHZhciBy
ZXF1ZXN0ZWRNb2R1bGVzID0gdGhpcy5yZXF1ZXN0ZWRNb2R1bGVzKG1vZHVsZVJlY29yZCk7Cisg
ICAgZm9yICh2YXIgaSA9IDAsIGxlbmd0aCA9IHJlcXVlc3RlZE1vZHVsZXMubGVuZ3RoOyBpIDwg
bGVuZ3RoOyArK2kpIHsKKyAgICAgICAgdmFyIGRlcEtleSA9IHJlcXVlc3RlZE1vZHVsZXNbaV07
CisgICAgICAgIHZhciBwYWlyID0geworICAgICAgICAgICAga2V5OiBkZXBLZXksCisgICAgICAg
ICAgICB2YWx1ZTogdW5kZWZpbmVkCisgICAgICAgIH07CisgICAgICAgIEBwdXRCeVZhbERpcmVj
dChkZXBlbmRlbmNpZXMsIGksIHBhaXIpOworICAgICAgICBkZXBlbmRlbmNpZXNNYXAuQHNldChk
ZXBLZXksIHBhaXIpOworICAgIH0KKyAgICBlbnRyeS5kZXBlbmRlbmNpZXMgPSBkZXBlbmRlbmNp
ZXM7CisgICAgZW50cnkuZGVwZW5kZW5jaWVzTWFwID0gZGVwZW5kZW5jaWVzTWFwOworICAgIGVu
dHJ5Lm1vZHVsZSA9IG1vZHVsZVJlY29yZDsKKyAgICB0aGlzLnNldFN0YXRlVG9NYXgoZW50cnks
IHRoaXMuUmVzb2x2ZURlcGVuZGVuY2llcyk7Cit9CisKK2Z1bmN0aW9uIGluc3RhbnRpYXRpb24o
cmVzdWx0LCBzb3VyY2UsIGVudHJ5KQoreworICAgIC8vIGh0dHBzOi8vd2hhdHdnLmdpdGh1Yi5p
by9sb2FkZXIvI2luc3RhbnRpYXRpb24KKyAgICAvLyBGSVhNRTogQ3VycmVudCBpbXBsZW1lbnRh
dGlvbiBkb2VzIG5vdCBzdXBwb3J0IG9wdGlvbmFsSW5zdGFuY2UuCisgICAgLy8gaHR0cHM6Ly9i
dWdzLndlYmtpdC5vcmcvc2hvd19idWcuY2dpP2lkPTE0ODE3MQorCisgICAgInVzZSBzdHJpY3Qi
OworCisgICAgcmV0dXJuIHRoaXMucGFyc2VNb2R1bGUoZW50cnkua2V5LCBzb3VyY2UpOworfQor
CisvLyBMb2FkZXIuCisKK2Z1bmN0aW9uIHJlcXVlc3RGZXRjaChrZXkpCit7CisgICAgLy8gaHR0
cHM6Ly93aGF0d2cuZ2l0aHViLmlvL2xvYWRlci8jcmVxdWVzdC1mZXRjaAorCisgICAgInVzZSBz
dHJpY3QiOworCisgICAgdmFyIGVudHJ5ID0gdGhpcy5lbnN1cmVSZWdpc3RlcmVkKGtleSk7Cisg
ICAgaWYgKGVudHJ5LnN0YXRlID4gdGhpcy5MaW5rKSB7CisgICAgICAgIHZhciBkZWZlcnJlZCA9
IEBuZXdQcm9taXNlQ2FwYWJpbGl0eShASW50ZXJuYWxQcm9taXNlKTsKKyAgICAgICAgZGVmZXJy
ZWQuQHJlamVjdC5AY2FsbCh1bmRlZmluZWQsIG5ldyBAVHlwZUVycm9yKCJSZXF1ZXN0ZWQgbW9k
dWxlIGlzIGFscmVhZHkgcmVhZHkgdG8gYmUgZXhlY3V0ZWQuIikpOworICAgICAgICByZXR1cm4g
ZGVmZXJyZWQuQHByb21pc2U7CisgICAgfQorCisgICAgaWYgKGVudHJ5LmZldGNoKQorICAgICAg
ICByZXR1cm4gZW50cnkuZmV0Y2g7CisKKyAgICB2YXIgbG9hZGVyID0gdGhpczsKKyAgICB2YXIg
ZmV0Y2hQcm9taXNlID0gdGhpcy5mZXRjaChrZXkpLnRoZW4oZnVuY3Rpb24gKHBheWxvYWQpIHsK
KyAgICAgICAgbG9hZGVyLnNldFN0YXRlVG9NYXgoZW50cnksIGxvYWRlci5UcmFuc2xhdGUpOwor
ICAgICAgICByZXR1cm4gcGF5bG9hZDsKKyAgICB9KTsKKyAgICBlbnRyeS5mZXRjaCA9IGZldGNo
UHJvbWlzZTsKKyAgICByZXR1cm4gZmV0Y2hQcm9taXNlOworfQorCitmdW5jdGlvbiByZXF1ZXN0
VHJhbnNsYXRlKGtleSkKK3sKKyAgICAvLyBodHRwczovL3doYXR3Zy5naXRodWIuaW8vbG9hZGVy
LyNyZXF1ZXN0LXRyYW5zbGF0ZQorCisgICAgInVzZSBzdHJpY3QiOworCisgICAgdmFyIGVudHJ5
ID0gdGhpcy5lbnN1cmVSZWdpc3RlcmVkKGtleSk7CisgICAgaWYgKGVudHJ5LnN0YXRlID4gdGhp
cy5MaW5rKSB7CisgICAgICAgIHZhciBkZWZlcnJlZCA9IEBuZXdQcm9taXNlQ2FwYWJpbGl0eShA
SW50ZXJuYWxQcm9taXNlKTsKKyAgICAgICAgZGVmZXJyZWQuQHJlamVjdC5AY2FsbCh1bmRlZmlu
ZWQsIG5ldyBAVHlwZUVycm9yKCJSZXF1ZXN0ZWQgbW9kdWxlIGlzIGFscmVhZHkgcmVhZHkgdG8g
YmUgZXhlY3V0ZWQuIikpOworICAgICAgICByZXR1cm4gZGVmZXJyZWQuQHByb21pc2U7CisgICAg
fQorCisgICAgaWYgKGVudHJ5LnRyYW5zbGF0ZSkKKyAgICAgICAgcmV0dXJuIGVudHJ5LnRyYW5z
bGF0ZTsKKworICAgIHZhciBsb2FkZXIgPSB0aGlzOworICAgIHZhciB0cmFuc2xhdGVQcm9taXNl
ID0gdGhpcy5yZXF1ZXN0RmV0Y2goa2V5KS50aGVuKGZ1bmN0aW9uIChwYXlsb2FkKSB7CisgICAg
ICAgIHJldHVybiBsb2FkZXIudHJhbnNsYXRlKGtleSwgcGF5bG9hZCkudGhlbihmdW5jdGlvbiAo
c291cmNlKSB7CisgICAgICAgICAgICBsb2FkZXIuc2V0U3RhdGVUb01heChlbnRyeSwgbG9hZGVy
Lkluc3RhbnRpYXRlKTsKKyAgICAgICAgICAgIHJldHVybiBzb3VyY2U7CisgICAgICAgIH0pOwor
ICAgIH0pOworICAgIGVudHJ5LnRyYW5zbGF0ZSA9IHRyYW5zbGF0ZVByb21pc2U7CisgICAgcmV0
dXJuIHRyYW5zbGF0ZVByb21pc2U7Cit9CisKK2Z1bmN0aW9uIHJlcXVlc3RJbnN0YW50aWF0ZShr
ZXkpCit7CisgICAgLy8gaHR0cHM6Ly93aGF0d2cuZ2l0aHViLmlvL2xvYWRlci8jcmVxdWVzdC1p
bnN0YW50aWF0ZQorCisgICAgInVzZSBzdHJpY3QiOworCisgICAgdmFyIGVudHJ5ID0gdGhpcy5l
bnN1cmVSZWdpc3RlcmVkKGtleSk7CisgICAgaWYgKGVudHJ5LnN0YXRlID4gdGhpcy5MaW5rKSB7
CisgICAgICAgIHZhciBkZWZlcnJlZCA9IEBuZXdQcm9taXNlQ2FwYWJpbGl0eShASW50ZXJuYWxQ
cm9taXNlKTsKKyAgICAgICAgZGVmZXJyZWQuQHJlamVjdC5AY2FsbCh1bmRlZmluZWQsIG5ldyBA
VHlwZUVycm9yKCJSZXF1ZXN0ZWQgbW9kdWxlIGlzIGFscmVhZHkgcmVhZHkgdG8gYmUgZXhlY3V0
ZWQuIikpOworICAgICAgICByZXR1cm4gZGVmZXJyZWQuQHByb21pc2U7CisgICAgfQorCisgICAg
aWYgKGVudHJ5Lmluc3RhbnRpYXRlKQorICAgICAgICByZXR1cm4gZW50cnkuaW5zdGFudGlhdGU7
CisKKyAgICB2YXIgbG9hZGVyID0gdGhpczsKKyAgICB2YXIgaW5zdGFudGlhdGVQcm9taXNlID0g
dGhpcy5yZXF1ZXN0VHJhbnNsYXRlKGtleSkudGhlbihmdW5jdGlvbiAoc291cmNlKSB7CisgICAg
ICAgIHJldHVybiBsb2FkZXIuaW5zdGFudGlhdGUoa2V5LCBzb3VyY2UpLnRoZW4oZnVuY3Rpb24g
KG9wdGlvbmFsSW5zdGFuY2UpIHsKKyAgICAgICAgICAgIGxvYWRlci5jb21taXRJbnN0YW50aWF0
ZWQoZW50cnksIG9wdGlvbmFsSW5zdGFuY2UsIHNvdXJjZSk7CisgICAgICAgICAgICByZXR1cm4g
ZW50cnk7CisgICAgICAgIH0pOworICAgIH0pOworICAgIGVudHJ5Lmluc3RhbnRpYXRlID0gaW5z
dGFudGlhdGVQcm9taXNlOworICAgIHJldHVybiBpbnN0YW50aWF0ZVByb21pc2U7Cit9CisKK2Z1
bmN0aW9uIHJlcXVlc3RSZXNvbHZlRGVwZW5kZW5jaWVzKGtleSkKK3sKKyAgICAvLyBGSVhNRTog
SW4gdGhlIHNwZWMsIGFmdGVyIHJlcXVlc3RpbmcgaW5zdGFudGlhdGlvbiwgd2Ugd2lsbCByZXNv
bHZlCisgICAgLy8gdGhlIGRlcGVuZGVuY2llcyB3aXRob3V0IGFueSBzdGF0dXMgY2hhbmdlLiBB
cyBhIHJlc3VsdCwgd2hlbiB0aGVyZQorICAgIC8vIGlzIGNpcmN1bGFyIGRlcGVuZGVuY2llcywg
aW5zdGFudGlhdGlvbiBpcyBkb25lIG9ubHkgb25jZSwgYnV0CisgICAgLy8gcmVwZWF0ZWRseSBy
ZXNvbHZpbmcgdGhlIGRlcGVuZGVuY2llcy4gVGhpcyBtZWFucyB0aGF0IGluZmluaXRlCisgICAg
Ly8gcmVjdXJzaW9uIG9jY3VyIHdoZW4gdGhlIGdpdmVuIG1vZHVsZXMgaGF2ZSBjaXJjdWxhciBk
ZXBlbmRlbmN5LiBUbworICAgIC8vIGF2b2lkIHRoaXMgc2l0dWF0aW9uLCB3ZSBpbnRyb2R1Y2Ug
bmV3IHN0YXRlLCAiUmVzb2x2ZURlcGVuZGVuY2llcyIuIFRoaXMgbWVhbnMKKyAgICAvLyAiTm93
IHRoZSBtb2R1bGUgaXMgaW5zdGFudGlhdGVkLCBzbyByZWFkeSB0byBjb2xsZWN0IHRoZSBkZXBl
bmRlbmNpZXMKKyAgICAvLyBvciBub3cgcmVzb2x2aW5nIHRoZW0iLgorICAgIC8vIGh0dHBzOi8v
Z2l0aHViLmNvbS93aGF0d2cvbG9hZGVyL2lzc3Vlcy82OAorCisgICAgInVzZSBzdHJpY3QiOwor
CisgICAgdmFyIGVudHJ5ID0gdGhpcy5lbnN1cmVSZWdpc3RlcmVkKGtleSk7CisgICAgaWYgKGVu
dHJ5LnN0YXRlID4gdGhpcy5MaW5rKSB7CisgICAgICAgIHZhciBkZWZlcnJlZCA9IEBuZXdQcm9t
aXNlQ2FwYWJpbGl0eShASW50ZXJuYWxQcm9taXNlKTsKKyAgICAgICAgZGVmZXJyZWQuQHJlamVj
dC5AY2FsbCh1bmRlZmluZWQsIG5ldyBAVHlwZUVycm9yKCJSZXF1ZXN0ZWQgbW9kdWxlIGlzIGFs
cmVhZHkgcmVhZHkgdG8gYmUgZXhlY3V0ZWQuIikpOworICAgICAgICByZXR1cm4gZGVmZXJyZWQu
QHByb21pc2U7CisgICAgfQorCisgICAgaWYgKGVudHJ5LmNvbGxlY3QpCisgICAgICAgIHJldHVy
biBlbnRyeS5jb2xsZWN0OworCisgICAgdmFyIGxvYWRlciA9IHRoaXM7CisgICAgdmFyIGNvbGxl
Y3RQcm9taXNlID0gdGhpcy5yZXF1ZXN0SW5zdGFudGlhdGUoa2V5KS50aGVuKGZ1bmN0aW9uIChl
bnRyeSkgeworICAgICAgICB2YXIgZGVwTG9hZHMgPSBbXTsKKyAgICAgICAgZm9yICh2YXIgaSA9
IDAsIGxlbmd0aCA9IGVudHJ5LmRlcGVuZGVuY2llcy5sZW5ndGg7IGkgPCBsZW5ndGg7ICsraSkg
eworICAgICAgICAgICAgdmFyIHBhaXIgPSBlbnRyeS5kZXBlbmRlbmNpZXNbaV07CisgICAgICAg
ICAgICB2YXIgcHJvbWlzZSA9IGxvYWRlci5yZXNvbHZlKHBhaXIua2V5LCBrZXkpLnRoZW4oZnVu
Y3Rpb24gKGRlcEtleSkgeworICAgICAgICAgICAgICAgIHZhciBkZXBFbnRyeSA9IGxvYWRlci5l
bnN1cmVSZWdpc3RlcmVkKGRlcEtleSk7CisKKyAgICAgICAgICAgICAgICAvLyBSZWN1cnNpdmUg
Y29sbGVjdGluZy4gVGhpcyBlbnRyeSBpcyBiZWluZyBjb2xsZWN0ZWQgb3IgYWxyZWFkeSBjb2xs
ZWN0ZWQuCisgICAgICAgICAgICAgICAgLy8gU3RvcCB0cmFjaW5nIHRoZSBjaXJjdWxhciBkZXBl
bmRlbmNpZXMuCisgICAgICAgICAgICAgICAgaWYgKGRlcEVudHJ5LmNvbGxlY3QpIHsKKyAgICAg
ICAgICAgICAgICAgICAgcGFpci52YWx1ZSA9IGRlcEVudHJ5Lm1vZHVsZTsKKyAgICAgICAgICAg
ICAgICAgICAgcmV0dXJuIGRlcEVudHJ5OworICAgICAgICAgICAgICAgIH0KKworICAgICAgICAg
ICAgICAgIHJldHVybiBsb2FkZXIucmVxdWVzdFJlc29sdmVEZXBlbmRlbmNpZXMoZGVwS2V5KS50
aGVuKGZ1bmN0aW9uIChlbnRyeSkgeworICAgICAgICAgICAgICAgICAgICAvLyBGSVhNRTogVGhl
IHJlc3VsdCBwcm9taXNlIG9mIHRoZSByZXF1ZXN0SW5zdGFudGlhdGVBbGwgc2hvdWxkIGJlIGZ1
bGZpbGxlZCB3aXRoCisgICAgICAgICAgICAgICAgICAgIC8vIHRoZSByZWdpc3RyeSBlbnRyeS4K
KyAgICAgICAgICAgICAgICAgICAgLy8gaHR0cHM6Ly9naXRodWIuY29tL3doYXR3Zy9sb2FkZXIv
cHVsbC82NgorICAgICAgICAgICAgICAgICAgICBwYWlyLnZhbHVlID0gZW50cnkubW9kdWxlOwor
ICAgICAgICAgICAgICAgICAgICByZXR1cm4gZW50cnk7CisgICAgICAgICAgICAgICAgfSk7Cisg
ICAgICAgICAgICB9KTsKKyAgICAgICAgICAgIEBwdXRCeVZhbERpcmVjdChkZXBMb2FkcywgaSwg
cHJvbWlzZSk7CisgICAgICAgIH0KKworICAgICAgICByZXR1cm4gQEludGVybmFsUHJvbWlzZS5p
bnRlcm5hbEFsbChkZXBMb2FkcykudGhlbihmdW5jdGlvbiAobW9kdWxlcykgeworICAgICAgICAg
ICAgbG9hZGVyLnNldFN0YXRlVG9NYXgoZW50cnksIGxvYWRlci5MaW5rKTsKKyAgICAgICAgICAg
IHJldHVybiBlbnRyeTsKKyAgICAgICAgfSk7CisgICAgfSk7CisKKyAgICBlbnRyeS5jb2xsZWN0
ID0gY29sbGVjdFByb21pc2U7CisgICAgcmV0dXJuIGNvbGxlY3RQcm9taXNlOworfQorCitmdW5j
dGlvbiByZXF1ZXN0SW5zdGFudGlhdGVBbGwoa2V5KQoreworICAgIC8vIGh0dHBzOi8vd2hhdHdn
LmdpdGh1Yi5pby9sb2FkZXIvI3JlcXVlc3QtaW5zdGFudGlhdGUtYWxsCisKKyAgICAidXNlIHN0
cmljdCI7CisKKyAgICByZXR1cm4gdGhpcy5yZXF1ZXN0UmVzb2x2ZURlcGVuZGVuY2llcyhrZXkp
OworfQorCitmdW5jdGlvbiBwcm92aWRlKGtleSwgc3RhZ2UsIHZhbHVlKQoreworICAgICJ1c2Ug
c3RyaWN0IjsKKworICAgIHZhciBlbnRyeSA9IHRoaXMuZW5zdXJlUmVnaXN0ZXJlZChrZXkpOwor
CisgICAgaWYgKHN0YWdlID09PSB0aGlzLkZldGNoKSB7CisgICAgICAgIGlmIChlbnRyeS5zdGF0
dXMgPiB0aGlzLkZldGNoKQorICAgICAgICAgICAgdGhyb3cgbmV3IEBUeXBlRXJyb3IoIlJlcXVl
c3RlZCBtb2R1bGUgaXMgYWxyZWFkeSBmZXRjaGVkLiIpOworICAgICAgICB0aGlzLmZ1bGZpbGxG
ZXRjaChlbnRyeSwgdmFsdWUpOworICAgICAgICByZXR1cm47CisgICAgfQorCisgICAgaWYgKHN0
YWdlID09PSB0aGlzLlRyYW5zbGF0ZSkgeworICAgICAgICBpZiAoZW50cnkuc3RhdHVzID4gdGhp
cy5UcmFuc2xhdGUpCisgICAgICAgICAgICB0aHJvdyBuZXcgQFR5cGVFcnJvcigiUmVxdWVzdGVk
IG1vZHVsZSBpcyBhbHJlYWR5IHRyYW5zbGF0ZWQuIik7CisgICAgICAgIHRoaXMuZnVsZmlsbEZl
dGNoKGVudHJ5LCB1bmRlZmluZWQpOworICAgICAgICB0aGlzLmZ1bGZpbGxUcmFuc2xhdGUoZW50
cnksIHZhbHVlKTsKKyAgICAgICAgcmV0dXJuOworICAgIH0KKworICAgIGlmIChzdGFnZSA9PT0g
dGhpcy5JbnN0YW50aWF0ZSkgeworICAgICAgICBpZiAoZW50cnkuc3RhdHVzID4gdGhpcy5JbnN0
YW50aWF0ZSkKKyAgICAgICAgICAgIHRocm93IG5ldyBAVHlwZUVycm9yKCJSZXF1ZXN0ZWQgbW9k
dWxlIGlzIGFscmVhZHkgaW5zdGFudGlhdGVkLiIpOworICAgICAgICB0aGlzLmZ1bGZpbGxGZXRj
aChlbnRyeSwgdW5kZWZpbmVkKTsKKyAgICAgICAgdGhpcy5mdWxmaWxsVHJhbnNsYXRlKGVudHJ5
LCB2YWx1ZSk7CisgICAgICAgIHZhciBsb2FkZXIgPSB0aGlzOworICAgICAgICBlbnRyeS50cmFu
c2xhdGUudGhlbihmdW5jdGlvbiAoc291cmNlKSB7CisgICAgICAgICAgICBsb2FkZXIuZnVsZmls
bEluc3RhbnRpYXRlKGVudHJ5LCB2YWx1ZSwgc291cmNlKTsKKyAgICAgICAgfSk7CisgICAgICAg
IHJldHVybjsKKyAgICB9CisKKyAgICB0aHJvdyBuZXcgQFR5cGVFcnJvcigiUmVxdWVzdGVkIG1v
ZHVsZSBpcyBhbHJlYWR5IHJlYWR5IHRvIGJlIGV4ZWN1dGVkLiIpOworfQpkaWZmIC0tZ2l0IGEv
U291cmNlL0phdmFTY3JpcHRDb3JlL2pzYy5jcHAgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvanNj
LmNwcAppbmRleCA2ODExZDk0MGU2NWE5ZDAxNTg2NzdhMTA5MWY4ZTE3YTVlM2I5ZDY5Li41ZTUy
MWYwYTUxYWJlYTAxZjNmNWMxYzk0MGQxYjU0MTUxODM0YWM1IDEwMDY0NAotLS0gYS9Tb3VyY2Uv
SmF2YVNjcmlwdENvcmUvanNjLmNwcAorKysgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvanNjLmNw
cApAQCAtMzksNiArMzksOCBAQAogI2luY2x1ZGUgIkpTQXJyYXlCdWZmZXIuaCIKICNpbmNsdWRl
ICJKU0NJbmxpbmVzLmgiCiAjaW5jbHVkZSAiSlNGdW5jdGlvbi5oIgorI2luY2x1ZGUgIkpTSW50
ZXJuYWxQcm9taXNlLmgiCisjaW5jbHVkZSAiSlNJbnRlcm5hbFByb21pc2VEZWZlcnJlZC5oIgog
I2luY2x1ZGUgIkpTTG9jay5oIgogI2luY2x1ZGUgIkpTT05PYmplY3QuaCIKICNpbmNsdWRlICJK
U1Byb3h5LmgiCkBAIC01MTksMjAgKzUyMSwxNyBAQCBzdHJ1Y3QgU2NyaXB0IHsKIGNsYXNzIENv
bW1hbmRMaW5lIHsKIHB1YmxpYzoKICAgICBDb21tYW5kTGluZShpbnQgYXJnYywgY2hhcioqIGFy
Z3YpCi0gICAgICAgIDogbV9pbnRlcmFjdGl2ZShmYWxzZSkKLSAgICAgICAgLCBtX2R1bXAoZmFs
c2UpCi0gICAgICAgICwgbV9leGl0Q29kZShmYWxzZSkKLSAgICAgICAgLCBtX3Byb2ZpbGUoZmFs
c2UpCiAgICAgewogICAgICAgICBwYXJzZUFyZ3VtZW50cyhhcmdjLCBhcmd2KTsKICAgICB9CiAK
LSAgICBib29sIG1faW50ZXJhY3RpdmU7Ci0gICAgYm9vbCBtX2R1bXA7Ci0gICAgYm9vbCBtX2V4
aXRDb2RlOworICAgIGJvb2wgbV9pbnRlcmFjdGl2ZSB7IGZhbHNlIH07CisgICAgYm9vbCBtX2R1
bXAgeyBmYWxzZSB9OworICAgIGJvb2wgbV9tb2R1bGUgeyBmYWxzZSB9OworICAgIGJvb2wgbV9l
eGl0Q29kZSB7IGZhbHNlIH07CiAgICAgVmVjdG9yPFNjcmlwdD4gbV9zY3JpcHRzOwogICAgIFZl
Y3RvcjxTdHJpbmc+IG1fYXJndW1lbnRzOwotICAgIGJvb2wgbV9wcm9maWxlOworICAgIGJvb2wg
bV9wcm9maWxlIHsgZmFsc2UgfTsKICAgICBTdHJpbmcgbV9wcm9maWxlck91dHB1dDsKIAogICAg
IHZvaWQgcGFyc2VBcmd1bWVudHMoaW50LCBjaGFyKiopOwpAQCAtNTY2LDYgKzU2NSwxNyBAQCBs
b25nIFN0b3BXYXRjaDo6Z2V0RWxhcHNlZE1TKCkKICAgICByZXR1cm4gc3RhdGljX2Nhc3Q8bG9u
Zz4oKG1fc3RvcFRpbWUgLSBtX3N0YXJ0VGltZSkgKiAxMDAwKTsKIH0KIAorc3RhdGljIGlubGlu
ZSBTdHJpbmcgc3RyaW5nRnJvbVVURihjb25zdCBjaGFyKiB1dGY4KQoreworICAgIHJldHVybiBT
dHJpbmc6OmZyb21VVEY4V2l0aExhdGluMUZhbGxiYWNrKHV0ZjgsIHN0cmxlbih1dGY4KSk7Cit9
CisKK3N0YXRpYyBpbmxpbmUgU291cmNlQ29kZSBqc2NTb3VyY2UoY29uc3QgY2hhciogdXRmOCwg
Y29uc3QgU3RyaW5nJiBmaWxlbmFtZSkKK3sKKyAgICBTdHJpbmcgc3RyID0gc3RyaW5nRnJvbVVU
Rih1dGY4KTsKKyAgICByZXR1cm4gbWFrZVNvdXJjZShzdHIsIGZpbGVuYW1lKTsKK30KKwogY2xh
c3MgR2xvYmFsT2JqZWN0IDogcHVibGljIEpTR2xvYmFsT2JqZWN0IHsKIHByaXZhdGU6CiAgICAg
R2xvYmFsT2JqZWN0KFZNJiwgU3RydWN0dXJlKik7CkBAIC02ODcsMTAgKzY5NywzMSBAQCBjbGFz
cyBHbG9iYWxPYmplY3QgOiBwdWJsaWMgSlNHbG9iYWxPYmplY3QgewogICAgICAgICBJZGVudGlm
aWVyIGlkZW50aWZpZXIgPSBJZGVudGlmaWVyOjpmcm9tU3RyaW5nKCZ2bSwgbmFtZSk7CiAgICAg
ICAgIHB1dERpcmVjdCh2bSwgaWRlbnRpZmllciwgSlNGdW5jdGlvbjo6Y3JlYXRlKHZtLCB0aGlz
LCBhcmd1bWVudHMsIGlkZW50aWZpZXIuc3RyaW5nKCksIGZ1bmN0aW9uLCBOb0ludHJpbnNpYywg
ZnVuY3Rpb24pKTsKICAgICB9CisKKyAgICBzdGF0aWMgSlNJbnRlcm5hbFByb21pc2UqIGxvYWRl
ckZldGNoKEpTR2xvYmFsT2JqZWN0KiBnbG9iYWxPYmplY3QsIEV4ZWNTdGF0ZSogZXhlYywgSlNW
YWx1ZSBrZXkpCisgICAgeworICAgICAgICBKU0ludGVybmFsUHJvbWlzZURlZmVycmVkKiBkZWZl
cnJlZCA9IEpTSW50ZXJuYWxQcm9taXNlRGVmZXJyZWQ6OmNyZWF0ZShleGVjLCBnbG9iYWxPYmpl
Y3QpOworICAgICAgICBTdHJpbmcgbW9kdWxlS2V5ID0ga2V5LnRvU3RyaW5nKGV4ZWMpLT52YWx1
ZShleGVjKTsKKyAgICAgICAgaWYgKGV4ZWMtPmhhZEV4Y2VwdGlvbigpKSB7CisgICAgICAgICAg
ICBKU1ZhbHVlIGV4Y2VwdGlvbiA9IGV4ZWMtPmV4Y2VwdGlvbigpOworICAgICAgICAgICAgZXhl
Yy0+Y2xlYXJFeGNlcHRpb24oKTsKKyAgICAgICAgICAgIGRlZmVycmVkLT5yZWplY3QoZXhlYywg
ZXhjZXB0aW9uKTsKKyAgICAgICAgICAgIHJldHVybiBkZWZlcnJlZC0+cHJvbWlzZSgpOworICAg
ICAgICB9CisKKyAgICAgICAgLy8gSGVyZSwgbm93IHdlIGNvbnNpZGVyIG1vZHVsZUtleSBhcyB0
aGUgZmlsZU5hbWUuCisgICAgICAgIFZlY3RvcjxjaGFyPiB1dGY4OworICAgICAgICBpZiAoIWZp
bGxCdWZmZXJXaXRoQ29udGVudHNPZkZpbGUobW9kdWxlS2V5LCB1dGY4KSkgeworICAgICAgICAg
ICAgZGVmZXJyZWQtPnJlamVjdChleGVjLCBjcmVhdGVFcnJvcihleGVjLCBtYWtlU3RyaW5nKCJD
b3VsZCBub3Qgb3BlbiBmaWxlICciLCBtb2R1bGVLZXksICInLiIpKSk7CisgICAgICAgICAgICBy
ZXR1cm4gZGVmZXJyZWQtPnByb21pc2UoKTsKKyAgICAgICAgfQorICAgICAgICBkZWZlcnJlZC0+
cmVzb2x2ZShleGVjLCBqc1N0cmluZyhleGVjLCBzdHJpbmdGcm9tVVRGKHV0ZjguZGF0YSgpKSkp
OworICAgICAgICByZXR1cm4gZGVmZXJyZWQtPnByb21pc2UoKTsKKyAgICB9CiB9OwogCiBjb25z
dCBDbGFzc0luZm8gR2xvYmFsT2JqZWN0OjpzX2luZm8gPSB7ICJnbG9iYWwiLCAmSlNHbG9iYWxP
YmplY3Q6OnNfaW5mbywgJmdsb2JhbE9iamVjdFRhYmxlLCBDUkVBVEVfTUVUSE9EX1RBQkxFKEds
b2JhbE9iamVjdCkgfTsKLWNvbnN0IEdsb2JhbE9iamVjdE1ldGhvZFRhYmxlIEdsb2JhbE9iamVj
dDo6c19nbG9iYWxPYmplY3RNZXRob2RUYWJsZSA9IHsgJmFsbG93c0FjY2Vzc0Zyb20sICZzdXBw
b3J0c1Byb2ZpbGluZywgJnN1cHBvcnRzUmljaFNvdXJjZUluZm8sICZzaG91bGRJbnRlcnJ1cHRT
Y3JpcHQsICZqYXZhU2NyaXB0UnVudGltZUZsYWdzLCAwLCAmc2hvdWxkSW50ZXJydXB0U2NyaXB0
QmVmb3JlVGltZW91dCB9OworY29uc3QgR2xvYmFsT2JqZWN0TWV0aG9kVGFibGUgR2xvYmFsT2Jq
ZWN0OjpzX2dsb2JhbE9iamVjdE1ldGhvZFRhYmxlID0geyAmYWxsb3dzQWNjZXNzRnJvbSwgJnN1
cHBvcnRzUHJvZmlsaW5nLCAmc3VwcG9ydHNSaWNoU291cmNlSW5mbywgJnNob3VsZEludGVycnVw
dFNjcmlwdCwgJmphdmFTY3JpcHRSdW50aW1lRmxhZ3MsIDAsICZzaG91bGRJbnRlcnJ1cHRTY3Jp
cHRCZWZvcmVUaW1lb3V0LCBudWxscHRyLCAmbG9hZGVyRmV0Y2gsIG51bGxwdHIsIG51bGxwdHIg
fTsKIAogCiBHbG9iYWxPYmplY3Q6Okdsb2JhbE9iamVjdChWTSYgdm0sIFN0cnVjdHVyZSogc3Ry
dWN0dXJlKQpAQCAtNjk4LDE3ICs3MjksNiBAQCBHbG9iYWxPYmplY3Q6Okdsb2JhbE9iamVjdChW
TSYgdm0sIFN0cnVjdHVyZSogc3RydWN0dXJlKQogewogfQogCi1zdGF0aWMgaW5saW5lIFN0cmlu
ZyBzdHJpbmdGcm9tVVRGKGNvbnN0IGNoYXIqIHV0ZjgpCi17Ci0gICAgcmV0dXJuIFN0cmluZzo6
ZnJvbVVURjhXaXRoTGF0aW4xRmFsbGJhY2sodXRmOCwgc3RybGVuKHV0ZjgpKTsKLX0KLQotc3Rh
dGljIGlubGluZSBTb3VyY2VDb2RlIGpzY1NvdXJjZShjb25zdCBjaGFyKiB1dGY4LCBjb25zdCBT
dHJpbmcmIGZpbGVuYW1lKQotewotICAgIFN0cmluZyBzdHIgPSBzdHJpbmdGcm9tVVRGKHV0Zjgp
OwotICAgIHJldHVybiBtYWtlU291cmNlKHN0ciwgZmlsZW5hbWUpOwotfQotCiBFbmNvZGVkSlNW
YWx1ZSBKU0NfSE9TVF9DQUxMIGZ1bmN0aW9uUHJpbnQoRXhlY1N0YXRlKiBleGVjKQogewogICAg
IGZvciAodW5zaWduZWQgaSA9IDA7IGkgPCBleGVjLT5hcmd1bWVudENvdW50KCk7ICsraSkgewpA
QCAtMTIxMiw3ICsxMjMyLDcgQEAgRW5jb2RlZEpTVmFsdWUgSlNDX0hPU1RfQ0FMTCBmdW5jdGlv
bkNoZWNrTW9kdWxlU3ludGF4KEV4ZWNTdGF0ZSogZXhlYykKICAgICBzdG9wV2F0Y2guc3RhcnQo
KTsKIAogICAgIFBhcnNlckVycm9yIGVycm9yOwotICAgIGJvb2wgdmFsaWRTeW50YXggPSBjaGVj
a01vZHVsZVN5bnRheChleGVjLT52bSgpLCBtYWtlU291cmNlKHNvdXJjZSksIGVycm9yKTsKKyAg
ICBib29sIHZhbGlkU3ludGF4ID0gY2hlY2tNb2R1bGVTeW50YXgoZXhlYywgbWFrZVNvdXJjZShz
b3VyY2UpLCBlcnJvcik7CiAgICAgc3RvcFdhdGNoLnN0b3AoKTsKIAogICAgIGlmICghdmFsaWRT
eW50YXgpCkBAIC0xMzIwLDcgKzEzNDAsMTggQEAgaW50IG1haW4oaW50IGFyZ2MsIGNoYXIqKiBh
cmd2KQogICAgIGpzY0V4aXQocmVzKTsKIH0KIAotc3RhdGljIGJvb2wgcnVuV2l0aFNjcmlwdHMo
R2xvYmFsT2JqZWN0KiBnbG9iYWxPYmplY3QsIGNvbnN0IFZlY3RvcjxTY3JpcHQ+JiBzY3JpcHRz
LCBib29sIGR1bXApCitzdGF0aWMgdm9pZCBkdW1wRXhjZXB0aW9uKEdsb2JhbE9iamVjdCogZ2xv
YmFsT2JqZWN0LCBOYWtlZFB0cjxFeGNlcHRpb24+IGV2YWx1YXRpb25FeGNlcHRpb24pCit7Cisg
ICAgaWYgKGV2YWx1YXRpb25FeGNlcHRpb24pIHsKKyAgICAgICAgcHJpbnRmKCJFeGNlcHRpb246
ICVzXG4iLCBldmFsdWF0aW9uRXhjZXB0aW9uLT52YWx1ZSgpLnRvU3RyaW5nKGdsb2JhbE9iamVj
dC0+Z2xvYmFsRXhlYygpKS0+dmFsdWUoZ2xvYmFsT2JqZWN0LT5nbG9iYWxFeGVjKCkpLnV0Zjgo
KS5kYXRhKCkpOworICAgICAgICBJZGVudGlmaWVyIHN0YWNrSUQgPSBJZGVudGlmaWVyOjpmcm9t
U3RyaW5nKGdsb2JhbE9iamVjdC0+Z2xvYmFsRXhlYygpLCAic3RhY2siKTsKKyAgICAgICAgSlNW
YWx1ZSBzdGFja1ZhbHVlID0gZXZhbHVhdGlvbkV4Y2VwdGlvbi0+dmFsdWUoKS5nZXQoZ2xvYmFs
T2JqZWN0LT5nbG9iYWxFeGVjKCksIHN0YWNrSUQpOworICAgICAgICBpZiAoIXN0YWNrVmFsdWUu
aXNVbmRlZmluZWRPck51bGwoKSkKKyAgICAgICAgICAgIHByaW50ZigiJXNcbiIsIHN0YWNrVmFs
dWUudG9TdHJpbmcoZ2xvYmFsT2JqZWN0LT5nbG9iYWxFeGVjKCkpLT52YWx1ZShnbG9iYWxPYmpl
Y3QtPmdsb2JhbEV4ZWMoKSkudXRmOCgpLmRhdGEoKSk7CisgICAgfQorfQorCitzdGF0aWMgYm9v
bCBydW5XaXRoU2NyaXB0cyhHbG9iYWxPYmplY3QqIGdsb2JhbE9iamVjdCwgY29uc3QgVmVjdG9y
PFNjcmlwdD4mIHNjcmlwdHMsIGJvb2wgZHVtcCwgYm9vbCBtb2R1bGUpCiB7CiAgICAgY29uc3Qg
Y2hhciogc2NyaXB0OwogICAgIFN0cmluZyBmaWxlTmFtZTsKQEAgLTEzNDksMTcgKzEzODAsMjEg
QEAgc3RhdGljIGJvb2wgcnVuV2l0aFNjcmlwdHMoR2xvYmFsT2JqZWN0KiBnbG9iYWxPYmplY3Qs
IGNvbnN0IFZlY3RvcjxTY3JpcHQ+JiBzY3IKIAogICAgICAgICB2bS5zdGFydFNhbXBsaW5nKCk7
CiAKLSAgICAgICAgTmFrZWRQdHI8RXhjZXB0aW9uPiBldmFsdWF0aW9uRXhjZXB0aW9uOwotICAg
ICAgICBKU1ZhbHVlIHJldHVyblZhbHVlID0gZXZhbHVhdGUoZ2xvYmFsT2JqZWN0LT5nbG9iYWxF
eGVjKCksIGpzY1NvdXJjZShzY3JpcHQsIGZpbGVOYW1lKSwgSlNWYWx1ZSgpLCBldmFsdWF0aW9u
RXhjZXB0aW9uKTsKLSAgICAgICAgc3VjY2VzcyA9IHN1Y2Nlc3MgJiYgIWV2YWx1YXRpb25FeGNl
cHRpb247Ci0gICAgICAgIGlmIChkdW1wICYmICFldmFsdWF0aW9uRXhjZXB0aW9uKQotICAgICAg
ICAgICAgcHJpbnRmKCJFbmQ6ICVzXG4iLCByZXR1cm5WYWx1ZS50b1N0cmluZyhnbG9iYWxPYmpl
Y3QtPmdsb2JhbEV4ZWMoKSktPnZhbHVlKGdsb2JhbE9iamVjdC0+Z2xvYmFsRXhlYygpKS51dGY4
KCkuZGF0YSgpKTsKLSAgICAgICAgaWYgKGV2YWx1YXRpb25FeGNlcHRpb24pIHsKLSAgICAgICAg
ICAgIHByaW50ZigiRXhjZXB0aW9uOiAlc1xuIiwgZXZhbHVhdGlvbkV4Y2VwdGlvbi0+dmFsdWUo
KS50b1N0cmluZyhnbG9iYWxPYmplY3QtPmdsb2JhbEV4ZWMoKSktPnZhbHVlKGdsb2JhbE9iamVj
dC0+Z2xvYmFsRXhlYygpKS51dGY4KCkuZGF0YSgpKTsKLSAgICAgICAgICAgIElkZW50aWZpZXIg
c3RhY2tJRCA9IElkZW50aWZpZXI6OmZyb21TdHJpbmcoZ2xvYmFsT2JqZWN0LT5nbG9iYWxFeGVj
KCksICJzdGFjayIpOwotICAgICAgICAgICAgSlNWYWx1ZSBzdGFja1ZhbHVlID0gZXZhbHVhdGlv
bkV4Y2VwdGlvbi0+dmFsdWUoKS5nZXQoZ2xvYmFsT2JqZWN0LT5nbG9iYWxFeGVjKCksIHN0YWNr
SUQpOwotICAgICAgICAgICAgaWYgKCFzdGFja1ZhbHVlLmlzVW5kZWZpbmVkT3JOdWxsKCkpCi0g
ICAgICAgICAgICAgICAgcHJpbnRmKCIlc1xuIiwgc3RhY2tWYWx1ZS50b1N0cmluZyhnbG9iYWxP
YmplY3QtPmdsb2JhbEV4ZWMoKSktPnZhbHVlKGdsb2JhbE9iamVjdC0+Z2xvYmFsRXhlYygpKS51
dGY4KCkuZGF0YSgpKTsKKyAgICAgICAgaWYgKG1vZHVsZSkgeworI2lmIEVOQUJMRShFUzZfTU9E
VUxFUykKKyAgICAgICAgICAgIE5ha2VkUHRyPEV4Y2VwdGlvbj4gZXZhbHVhdGlvbkV4Y2VwdGlv
bjsKKyAgICAgICAgICAgIGV2YWx1YXRlTW9kdWxlKGdsb2JhbE9iamVjdC0+Z2xvYmFsRXhlYygp
LCBqc2NTb3VyY2Uoc2NyaXB0LCBmaWxlTmFtZSksIGV2YWx1YXRpb25FeGNlcHRpb24pOworICAg
ICAgICAgICAgZHVtcEV4Y2VwdGlvbihnbG9iYWxPYmplY3QsIGV2YWx1YXRpb25FeGNlcHRpb24p
OworICAgICAgICAgICAgZ2xvYmFsT2JqZWN0LT5nbG9iYWxFeGVjKCktPmNsZWFyRXhjZXB0aW9u
KCk7CisgICAgICAgICAgICBnbG9iYWxPYmplY3QtPnZtKCkuZHJhaW5NaWNyb3Rhc2tzKCk7Cisj
ZW5kaWYKKyAgICAgICAgfSBlbHNlIHsKKyAgICAgICAgICAgIE5ha2VkUHRyPEV4Y2VwdGlvbj4g
ZXZhbHVhdGlvbkV4Y2VwdGlvbjsKKyAgICAgICAgICAgIEpTVmFsdWUgcmV0dXJuVmFsdWUgPSBl
dmFsdWF0ZShnbG9iYWxPYmplY3QtPmdsb2JhbEV4ZWMoKSwganNjU291cmNlKHNjcmlwdCwgZmls
ZU5hbWUpLCBKU1ZhbHVlKCksIGV2YWx1YXRpb25FeGNlcHRpb24pOworICAgICAgICAgICAgc3Vj
Y2VzcyA9IHN1Y2Nlc3MgJiYgIWV2YWx1YXRpb25FeGNlcHRpb247CisgICAgICAgICAgICBpZiAo
ZHVtcCAmJiAhZXZhbHVhdGlvbkV4Y2VwdGlvbikKKyAgICAgICAgICAgICAgICBwcmludGYoIkVu
ZDogJXNcbiIsIHJldHVyblZhbHVlLnRvU3RyaW5nKGdsb2JhbE9iamVjdC0+Z2xvYmFsRXhlYygp
KS0+dmFsdWUoZ2xvYmFsT2JqZWN0LT5nbG9iYWxFeGVjKCkpLnV0ZjgoKS5kYXRhKCkpOworICAg
ICAgICAgICAgZHVtcEV4Y2VwdGlvbihnbG9iYWxPYmplY3QsIGV2YWx1YXRpb25FeGNlcHRpb24p
OwogICAgICAgICB9CiAKICAgICAgICAgdm0uc3RvcFNhbXBsaW5nKCk7CkBAIC0xNDUxLDYgKzE0
ODYsOSBAQCBzdGF0aWMgTk9fUkVUVVJOIHZvaWQgcHJpbnRVc2FnZVN0YXRlbWVudChib29sIGhl
bHAgPSBmYWxzZSkKICAgICBmcHJpbnRmKHN0ZGVyciwgIiAgLWYgICAgICAgICBTcGVjaWZpZXMg
YSBzb3VyY2UgZmlsZSAoZGVwcmVjYXRlZClcbiIpOwogICAgIGZwcmludGYoc3RkZXJyLCAiICAt
aHwtLWhlbHAgIFByaW50cyB0aGlzIGhlbHAgbWVzc2FnZVxuIik7CiAgICAgZnByaW50ZihzdGRl
cnIsICIgIC1pICAgICAgICAgRW5hYmxlcyBpbnRlcmFjdGl2ZSBtb2RlIChkZWZhdWx0IGlmIG5v
IGZpbGVzIGFyZSBzcGVjaWZpZWQpXG4iKTsKKyNpZiBFTkFCTEUoRVM2X01PRFVMRVMpCisgICAg
ZnByaW50ZihzdGRlcnIsICIgIC1tICAgICAgICAgRXhlY3V0ZSBhcyBhIG1vZHVsZVxuIik7Cisj
ZW5kaWYKICNpZiBIQVZFKFNJR05BTF9IKQogICAgIGZwcmludGYoc3RkZXJyLCAiICAtcyAgICAg
ICAgIEluc3RhbGxzIHNpZ25hbCBoYW5kbGVycyB0aGF0IGV4aXQgb24gYSBjcmFzaCAoVW5peCBw
bGF0Zm9ybXMgb25seSlcbiIpOwogI2VuZGlmCkBAIC0xNTAyLDYgKzE1NDAsMTIgQEAgdm9pZCBD
b21tYW5kTGluZTo6cGFyc2VBcmd1bWVudHMoaW50IGFyZ2MsIGNoYXIqKiBhcmd2KQogICAgICAg
ICAgICAgbV9wcm9maWxlck91dHB1dCA9IGFyZ3ZbaV07CiAgICAgICAgICAgICBjb250aW51ZTsK
ICAgICAgICAgfQorI2lmIEVOQUJMRShFUzZfTU9EVUxFUykKKyAgICAgICAgaWYgKCFzdHJjbXAo
YXJnLCAiLW0iKSkgeworICAgICAgICAgICAgbV9tb2R1bGUgPSB0cnVlOworICAgICAgICAgICAg
Y29udGludWU7CisgICAgICAgIH0KKyNlbmRpZgogICAgICAgICBpZiAoIXN0cmNtcChhcmcsICIt
cyIpKSB7CiAjaWYgSEFWRShTSUdOQUxfSCkKICAgICAgICAgICAgIHNpZ25hbChTSUdJTEwsIF9l
eGl0KTsKQEAgLTE1NzcsNyArMTYyMSw3IEBAIGludCBqc2NtYWluKGludCBhcmdjLCBjaGFyKiog
YXJndikKICAgICAgICAgICAgIHZtLT5tX3BlckJ5dGVjb2RlUHJvZmlsZXIgPSBzdGQ6Om1ha2Vf
dW5pcXVlPFByb2ZpbGVyOjpEYXRhYmFzZT4oKnZtKTsKICAgICAKICAgICAgICAgR2xvYmFsT2Jq
ZWN0KiBnbG9iYWxPYmplY3QgPSBHbG9iYWxPYmplY3Q6OmNyZWF0ZSgqdm0sIEdsb2JhbE9iamVj
dDo6Y3JlYXRlU3RydWN0dXJlKCp2bSwganNOdWxsKCkpLCBvcHRpb25zLm1fYXJndW1lbnRzKTsK
LSAgICAgICAgYm9vbCBzdWNjZXNzID0gcnVuV2l0aFNjcmlwdHMoZ2xvYmFsT2JqZWN0LCBvcHRp
b25zLm1fc2NyaXB0cywgb3B0aW9ucy5tX2R1bXApOworICAgICAgICBib29sIHN1Y2Nlc3MgPSBy
dW5XaXRoU2NyaXB0cyhnbG9iYWxPYmplY3QsIG9wdGlvbnMubV9zY3JpcHRzLCBvcHRpb25zLm1f
ZHVtcCwgb3B0aW9ucy5tX21vZHVsZSk7CiAgICAgICAgIGlmIChvcHRpb25zLm1faW50ZXJhY3Rp
dmUgJiYgc3VjY2VzcykKICAgICAgICAgICAgIHJ1bkludGVyYWN0aXZlKGdsb2JhbE9iamVjdCk7
CiAKZGlmZiAtLWdpdCBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9wYXJzZXIvTGV4ZXIuY3BwIGIv
U291cmNlL0phdmFTY3JpcHRDb3JlL3BhcnNlci9MZXhlci5jcHAKaW5kZXggMjU5ZDI1NGUzOTc1
MThjN2JjY2ZmYzllZGVjMTU2YmE1ZjAwZGI3YS4uNDc2MDQzZmY2ZTI1NWY5ZWI2MzE0NWNiODZj
ZGE5ZWVmMGE0MTU2NiAxMDA2NDQKLS0tIGEvU291cmNlL0phdmFTY3JpcHRDb3JlL3BhcnNlci9M
ZXhlci5jcHAKKysrIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL3BhcnNlci9MZXhlci5jcHAKQEAg
LTkzNSw3ICs5MzUsNyBAQCB0ZW1wbGF0ZSA8Ym9vbCBzaG91bGRDcmVhdGVJZGVudGlmaWVyPiBB
TFdBWVNfSU5MSU5FIEpTVG9rZW5UeXBlIExleGVyPExDaGFyPjo6cAogICAgICAgICAgICAgICAg
IHJldHVybiBFUlJPUlRPSzsKICAgICAgICAgICAgIH0KICAgICAgICAgICAgIGlmIChpc1ByaXZh
dGVOYW1lKQotICAgICAgICAgICAgICAgIGlkZW50ID0gbV92bS0+cHJvcGVydHlOYW1lcy0+Z2V0
UHJpdmF0ZU5hbWUoKmlkZW50KTsKKyAgICAgICAgICAgICAgICBpZGVudCA9IG1fdm0tPnByb3Bl
cnR5TmFtZXMtPmxvb2tVcFByaXZhdGVOYW1lKCppZGVudCk7CiAgICAgICAgICAgICBlbHNlIGlm
ICgqaWRlbnQgPT0gbV92bS0+cHJvcGVydHlOYW1lcy0+dW5kZWZpbmVkS2V5d29yZCkKICAgICAg
ICAgICAgICAgICB0b2tlbkRhdGEtPmlkZW50ID0gJm1fdm0tPnByb3BlcnR5TmFtZXMtPnVuZGVm
aW5lZFByaXZhdGVOYW1lOwogICAgICAgICAgICAgaWYgKCFpZGVudCkKQEAgLTEwMTIsNyArMTAx
Miw3IEBAIHRlbXBsYXRlIDxib29sIHNob3VsZENyZWF0ZUlkZW50aWZpZXI+IEFMV0FZU19JTkxJ
TkUgSlNUb2tlblR5cGUgTGV4ZXI8VUNoYXI+OjpwCiAgICAgICAgICAgICAgICAgcmV0dXJuIEVS
Uk9SVE9LOwogICAgICAgICAgICAgfQogICAgICAgICAgICAgaWYgKGlzUHJpdmF0ZU5hbWUpCi0g
ICAgICAgICAgICAgICAgaWRlbnQgPSBtX3ZtLT5wcm9wZXJ0eU5hbWVzLT5nZXRQcml2YXRlTmFt
ZSgqaWRlbnQpOworICAgICAgICAgICAgICAgIGlkZW50ID0gbV92bS0+cHJvcGVydHlOYW1lcy0+
bG9va1VwUHJpdmF0ZU5hbWUoKmlkZW50KTsKICAgICAgICAgICAgIGVsc2UgaWYgKCppZGVudCA9
PSBtX3ZtLT5wcm9wZXJ0eU5hbWVzLT51bmRlZmluZWRLZXl3b3JkKQogICAgICAgICAgICAgICAg
IHRva2VuRGF0YS0+aWRlbnQgPSAmbV92bS0+cHJvcGVydHlOYW1lcy0+dW5kZWZpbmVkUHJpdmF0
ZU5hbWU7CiAgICAgICAgICAgICBpZiAoIWlkZW50KQpkaWZmIC0tZ2l0IGEvU291cmNlL0phdmFT
Y3JpcHRDb3JlL3BhcnNlci9Nb2R1bGVBbmFseXplci5jcHAgYi9Tb3VyY2UvSmF2YVNjcmlwdENv
cmUvcGFyc2VyL01vZHVsZUFuYWx5emVyLmNwcAppbmRleCBiMmRlOTYwYjM5MzI1ODQxY2Q5Zjg1
YzY3MTYyMmMzZGY3YmE5ZDc3Li42ZGEyY2QwOGQ0OGYyMDU4OWY0ZGVlMmVjNDU0ZTlkMTVjZTNm
OGJiIDEwMDY0NAotLS0gYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvcGFyc2VyL01vZHVsZUFuYWx5
emVyLmNwcAorKysgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvcGFyc2VyL01vZHVsZUFuYWx5emVy
LmNwcApAQCAtMjcsMTQgKzI3LDE4IEBACiAjaW5jbHVkZSAiTW9kdWxlQW5hbHl6ZXIuaCIKIAog
I2luY2x1ZGUgIklkZW50aWZpZXJJbmxpbmVzLmgiCi0jaW5jbHVkZSAiTW9kdWxlUmVjb3JkLmgi
CisjaW5jbHVkZSAiSlNDSlNWYWx1ZUlubGluZXMuaCIKKyNpbmNsdWRlICJKU0NlbGxJbmxpbmVz
LmgiCisjaW5jbHVkZSAiSlNHbG9iYWxPYmplY3QuaCIKKyNpbmNsdWRlICJKU01vZHVsZVJlY29y
ZC5oIgorI2luY2x1ZGUgIlN0cm9uZ0lubGluZXMuaCIKIAogbmFtZXNwYWNlIEpTQyB7CiAKIAot
TW9kdWxlQW5hbHl6ZXI6Ok1vZHVsZUFuYWx5emVyKFZNJiB2bSwgY29uc3QgVmFyaWFibGVFbnZp
cm9ubWVudCYgZGVjbGFyZWRWYXJpYWJsZXMsIGNvbnN0IFZhcmlhYmxlRW52aXJvbm1lbnQmIGxl
eGljYWxWYXJpYWJsZXMpCi0gICAgOiBtX3ZtKCZ2bSkKLSAgICAsIG1fbW9kdWxlUmVjb3JkKE1v
ZHVsZVJlY29yZDo6Y3JlYXRlKCkpCitNb2R1bGVBbmFseXplcjo6TW9kdWxlQW5hbHl6ZXIoRXhl
Y1N0YXRlKiBleGVjLCBjb25zdCBWYXJpYWJsZUVudmlyb25tZW50JiBkZWNsYXJlZFZhcmlhYmxl
cywgY29uc3QgVmFyaWFibGVFbnZpcm9ubWVudCYgbGV4aWNhbFZhcmlhYmxlcykKKyAgICA6IG1f
dm0oJmV4ZWMtPnZtKCkpCisgICAgLCBtX21vZHVsZVJlY29yZChleGVjLT52bSgpLCBKU01vZHVs
ZVJlY29yZDo6Y3JlYXRlKGV4ZWMtPnZtKCksIGV4ZWMtPmxleGljYWxHbG9iYWxPYmplY3QoKS0+
bW9kdWxlUmVjb3JkU3RydWN0dXJlKCkpKQogICAgICwgbV9kZWNsYXJlZFZhcmlhYmxlcyhkZWNs
YXJlZFZhcmlhYmxlcykKICAgICAsIG1fbGV4aWNhbFZhcmlhYmxlcyhsZXhpY2FsVmFyaWFibGVz
KQogewpAQCAtNzYsMjggKzgwLDI4IEBAIHZvaWQgTW9kdWxlQW5hbHl6ZXI6OmV4cG9ydFZhcmlh
YmxlKGNvbnN0IFJlZlB0cjxVbmlxdWVkU3RyaW5nSW1wbD4mIGxvY2FsTmFtZSwKIAogICAgIC8v
IEV4cG9ydGVkIG1vZHVsZSBsb2NhbCB2YXJpYWJsZS4KICAgICBpZiAoIXZhcmlhYmxlLmlzSW1w
b3J0ZWQoKSkgewotICAgICAgICBtb2R1bGVSZWNvcmQoKS5hZGRFeHBvcnRFbnRyeShNb2R1bGVS
ZWNvcmQ6OkV4cG9ydEVudHJ5OjpjcmVhdGVMb2NhbChleHBvcnROYW1lLCBJZGVudGlmaWVyOjpm
cm9tVWlkKG1fdm0sIGxvY2FsTmFtZS5nZXQoKSksIHZhcmlhYmxlKSk7CisgICAgICAgIG1vZHVs
ZVJlY29yZCgpLT5hZGRFeHBvcnRFbnRyeShKU01vZHVsZVJlY29yZDo6RXhwb3J0RW50cnk6OmNy
ZWF0ZUxvY2FsKGV4cG9ydE5hbWUsIElkZW50aWZpZXI6OmZyb21VaWQobV92bSwgbG9jYWxOYW1l
LmdldCgpKSwgdmFyaWFibGUpKTsKICAgICAgICAgcmV0dXJuOwogICAgIH0KIAotICAgIGNvbnN0
IGF1dG8mIGltcG9ydEVudHJ5ID0gbW9kdWxlUmVjb3JkKCkubG9va1VwSW1wb3J0RW50cnkobG9j
YWxOYW1lKTsKKyAgICBjb25zdCBhdXRvJiBpbXBvcnRFbnRyeSA9IG1vZHVsZVJlY29yZCgpLT5s
b29rVXBJbXBvcnRFbnRyeShsb2NhbE5hbWUpOwogICAgIGlmIChpbXBvcnRFbnRyeS5pc05hbWVz
cGFjZSh2bSgpKSkgewogICAgICAgICAvLyBFeHBvcnRlZCBuYW1lc3BhY2UgYmluZGluZy4KICAg
ICAgICAgLy8gaW1wb3J0ICogYXMgbmFtZXNwYWNlIGZyb20gIm1vZCIKICAgICAgICAgLy8gZXhw
b3J0IHsgbmFtZXNwYWNlIH0KLSAgICAgICAgbW9kdWxlUmVjb3JkKCkuYWRkRXhwb3J0RW50cnko
TW9kdWxlUmVjb3JkOjpFeHBvcnRFbnRyeTo6Y3JlYXRlTmFtZXNwYWNlKGV4cG9ydE5hbWUsIGlt
cG9ydEVudHJ5Lm1vZHVsZVJlcXVlc3QpKTsKKyAgICAgICAgbW9kdWxlUmVjb3JkKCktPmFkZEV4
cG9ydEVudHJ5KEpTTW9kdWxlUmVjb3JkOjpFeHBvcnRFbnRyeTo6Y3JlYXRlTmFtZXNwYWNlKGV4
cG9ydE5hbWUsIGltcG9ydEVudHJ5Lm1vZHVsZVJlcXVlc3QpKTsKICAgICAgICAgcmV0dXJuOwog
ICAgIH0KIAogICAgIC8vIEluZGlyZWN0bHkgZXhwb3J0ZWQgYmluZGluZy4KICAgICAvLyBpbXBv
cnQgYSBmcm9tICJtb2QiCiAgICAgLy8gZXhwb3J0IHsgYSB9Ci0gICAgbW9kdWxlUmVjb3JkKCku
YWRkRXhwb3J0RW50cnkoTW9kdWxlUmVjb3JkOjpFeHBvcnRFbnRyeTo6Y3JlYXRlSW5kaXJlY3Qo
ZXhwb3J0TmFtZSwgaW1wb3J0RW50cnkuaW1wb3J0TmFtZSwgaW1wb3J0RW50cnkubW9kdWxlUmVx
dWVzdCkpOworICAgIG1vZHVsZVJlY29yZCgpLT5hZGRFeHBvcnRFbnRyeShKU01vZHVsZVJlY29y
ZDo6RXhwb3J0RW50cnk6OmNyZWF0ZUluZGlyZWN0KGV4cG9ydE5hbWUsIGltcG9ydEVudHJ5Lmlt
cG9ydE5hbWUsIGltcG9ydEVudHJ5Lm1vZHVsZVJlcXVlc3QpKTsKIH0KIAogCiAKLVJlZjxNb2R1
bGVSZWNvcmQ+IE1vZHVsZUFuYWx5emVyOjphbmFseXplKE1vZHVsZVByb2dyYW1Ob2RlJiBtb2R1
bGVQcm9ncmFtTm9kZSkKK0pTTW9kdWxlUmVjb3JkKiBNb2R1bGVBbmFseXplcjo6YW5hbHl6ZShN
b2R1bGVQcm9ncmFtTm9kZSYgbW9kdWxlUHJvZ3JhbU5vZGUpCiB7CiAgICAgLy8gVHJhdmVyc2Ug
dGhlIG1vZHVsZSBBU1QgYW5kIGNvbGxlY3QKICAgICAvLyAqIEltcG9ydCBlbnRyaWVzCkBAIC0x
NDksNyArMTUzLDcgQEAgUmVmPE1vZHVsZVJlY29yZD4gTW9kdWxlQW5hbHl6ZXI6OmFuYWx5emUo
TW9kdWxlUHJvZ3JhbU5vZGUmIG1vZHVsZVByb2dyYW1Ob2RlKQogICAgIGlmIChPcHRpb25zOjpk
dW1wTW9kdWxlUmVjb3JkKCkpCiAgICAgICAgIG1fbW9kdWxlUmVjb3JkLT5kdW1wKCk7CiAKLSAg
ICByZXR1cm4gKm1fbW9kdWxlUmVjb3JkOworICAgIHJldHVybiBtX21vZHVsZVJlY29yZC5nZXQo
KTsKIH0KIAogfSAvLyBuYW1lc3BhY2UgSlNDCmRpZmYgLS1naXQgYS9Tb3VyY2UvSmF2YVNjcmlw
dENvcmUvcGFyc2VyL01vZHVsZUFuYWx5emVyLmggYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvcGFy
c2VyL01vZHVsZUFuYWx5emVyLmgKaW5kZXggMDI3NjQ4NDc2NTBiMzAyNGZkMmE4YzM3MjJlNzNh
NzQ3Yjk2M2NiNi4uMzM5MGI3YmFmMWY2NWU4MTBjMTEzOWI2ZGVjNDY1OTQ2Yjg5ZDQ5MiAxMDA2
NDQKLS0tIGEvU291cmNlL0phdmFTY3JpcHRDb3JlL3BhcnNlci9Nb2R1bGVBbmFseXplci5oCisr
KyBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9wYXJzZXIvTW9kdWxlQW5hbHl6ZXIuaApAQCAtMjYs
MjAgKzI2LDIyIEBACiAjaWZuZGVmIE1vZHVsZUFuYWx5emVyX2gKICNkZWZpbmUgTW9kdWxlQW5h
bHl6ZXJfaAogCi0jaW5jbHVkZSAiTW9kdWxlUmVjb3JkLmgiCiAjaW5jbHVkZSAiTm9kZXMuaCIK
IAogbmFtZXNwYWNlIEpTQyB7CiAKK2NsYXNzIEpTTW9kdWxlUmVjb3JkOworCiBjbGFzcyBNb2R1
bGVBbmFseXplciB7CisgICAgV1RGX01BS0VfTk9OQ09QWUFCTEUoTW9kdWxlQW5hbHl6ZXIpOwog
cHVibGljOgotICAgIE1vZHVsZUFuYWx5emVyKFZNJiwgY29uc3QgVmFyaWFibGVFbnZpcm9ubWVu
dCYgZGVjbGFyZWRWYXJpYWJsZXMsIGNvbnN0IFZhcmlhYmxlRW52aXJvbm1lbnQmIGxleGljYWxW
YXJpYWJsZXMpOworICAgIE1vZHVsZUFuYWx5emVyKEV4ZWNTdGF0ZSosIGNvbnN0IFZhcmlhYmxl
RW52aXJvbm1lbnQmIGRlY2xhcmVkVmFyaWFibGVzLCBjb25zdCBWYXJpYWJsZUVudmlyb25tZW50
JiBsZXhpY2FsVmFyaWFibGVzKTsKIAotICAgIFJlZjxNb2R1bGVSZWNvcmQ+IGFuYWx5emUoTW9k
dWxlUHJvZ3JhbU5vZGUmKTsKKyAgICBKU01vZHVsZVJlY29yZCogYW5hbHl6ZShNb2R1bGVQcm9n
cmFtTm9kZSYpOwogCiAgICAgVk0mIHZtKCkgeyByZXR1cm4gKm1fdm07IH0KIAotICAgIE1vZHVs
ZVJlY29yZCYgbW9kdWxlUmVjb3JkKCkgeyByZXR1cm4gKm1fbW9kdWxlUmVjb3JkOyB9CisgICAg
SlNNb2R1bGVSZWNvcmQqIG1vZHVsZVJlY29yZCgpIHsgcmV0dXJuIG1fbW9kdWxlUmVjb3JkLmdl
dCgpOyB9CiAKICAgICB2b2lkIGRlY2xhcmVFeHBvcnRBbGlhcyhjb25zdCBJZGVudGlmaWVyJiBs
b2NhbE5hbWUsIGNvbnN0IElkZW50aWZpZXImIGV4cG9ydE5hbWUpOwogCkBAIC01MSw3ICs1Myw3
IEBAIGNsYXNzIE1vZHVsZUFuYWx5emVyIHsKICAgICBJZGVudGlmaWVyIGV4cG9ydGVkQmluZGlu
Zyhjb25zdCBSZWZQdHI8VW5pcXVlZFN0cmluZ0ltcGw+JiBpZGVudCk7CiAKICAgICBWTSogbV92
bTsKLSAgICBSZWZQdHI8TW9kdWxlUmVjb3JkPiBtX21vZHVsZVJlY29yZDsKKyAgICBTdHJvbmc8
SlNNb2R1bGVSZWNvcmQ+IG1fbW9kdWxlUmVjb3JkOwogICAgIFZhcmlhYmxlRW52aXJvbm1lbnQg
bV9kZWNsYXJlZFZhcmlhYmxlczsKICAgICBWYXJpYWJsZUVudmlyb25tZW50IG1fbGV4aWNhbFZh
cmlhYmxlczsKICAgICBJZGVudGlmaWVyQWxpYXNNYXAgbV9hbGlhc01hcDsKZGlmZiAtLWdpdCBh
L1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9wYXJzZXIvTW9kdWxlUmVjb3JkLmNwcCBiL1NvdXJjZS9K
YXZhU2NyaXB0Q29yZS9wYXJzZXIvTW9kdWxlUmVjb3JkLmNwcApkZWxldGVkIGZpbGUgbW9kZSAx
MDA2NDQKaW5kZXggZWM5NzM1NjhiZWM4YTBiMTUzMzMyZjQ4NzVmOWVmZTEzNzgyZWM4YS4uMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMAotLS0gYS9Tb3VyY2UvSmF2YVNj
cmlwdENvcmUvcGFyc2VyL01vZHVsZVJlY29yZC5jcHAKKysrIC9kZXYvbnVsbApAQCAtMSw5NSAr
MCwwIEBACi0vKgotICogQ29weXJpZ2h0IChDKSAyMDE1IEFwcGxlIEluYy4gQWxsIHJpZ2h0cyBy
ZXNlcnZlZC4KLSAqCi0gKiBSZWRpc3RyaWJ1dGlvbiBhbmQgdXNlIGluIHNvdXJjZSBhbmQgYmlu
YXJ5IGZvcm1zLCB3aXRoIG9yIHdpdGhvdXQKLSAqIG1vZGlmaWNhdGlvbiwgYXJlIHBlcm1pdHRl
ZCBwcm92aWRlZCB0aGF0IHRoZSBmb2xsb3dpbmcgY29uZGl0aW9ucwotICogYXJlIG1ldDoKLSAq
IDEuIFJlZGlzdHJpYnV0aW9ucyBvZiBzb3VyY2UgY29kZSBtdXN0IHJldGFpbiB0aGUgYWJvdmUg
Y29weXJpZ2h0Ci0gKiAgICBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUg
Zm9sbG93aW5nIGRpc2NsYWltZXIuCi0gKiAyLiBSZWRpc3RyaWJ1dGlvbnMgaW4gYmluYXJ5IGZv
cm0gbXVzdCByZXByb2R1Y2UgdGhlIGFib3ZlIGNvcHlyaWdodAotICogICAgbm90aWNlLCB0aGlz
IGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyIGluIHRoZQot
ICogICAgZG9jdW1lbnRhdGlvbiBhbmQvb3Igb3RoZXIgbWF0ZXJpYWxzIHByb3ZpZGVkIHdpdGgg
dGhlIGRpc3RyaWJ1dGlvbi4KLSAqCi0gKiBUSElTIFNPRlRXQVJFIElTIFBST1ZJREVEIEJZIEFQ
UExFIElOQy4gYGBBUyBJUycnIEFORCBBTlkKLSAqIEVYUFJFU1MgT1IgSU1QTElFRCBXQVJSQU5U
SUVTLCBJTkNMVURJTkcsIEJVVCBOT1QgTElNSVRFRCBUTywgVEhFCi0gKiBJTVBMSUVEIFdBUlJB
TlRJRVMgT0YgTUVSQ0hBTlRBQklMSVRZIEFORCBGSVRORVNTIEZPUiBBIFBBUlRJQ1VMQVIKLSAq
IFBVUlBPU0UgQVJFIERJU0NMQUlNRUQuICBJTiBOTyBFVkVOVCBTSEFMTCBBUFBMRSBJTkMuIE9S
Ci0gKiBDT05UUklCVVRPUlMgQkUgTElBQkxFIEZPUiBBTlkgRElSRUNULCBJTkRJUkVDVCwgSU5D
SURFTlRBTCwgU1BFQ0lBTCwKLSAqIEVYRU1QTEFSWSwgT1IgQ09OU0VRVUVOVElBTCBEQU1BR0VT
IChJTkNMVURJTkcsIEJVVCBOT1QgTElNSVRFRCBUTywKLSAqIFBST0NVUkVNRU5UIE9GIFNVQlNU
SVRVVEUgR09PRFMgT1IgU0VSVklDRVM7IExPU1MgT0YgVVNFLCBEQVRBLCBPUgotICogUFJPRklU
UzsgT1IgQlVTSU5FU1MgSU5URVJSVVBUSU9OKSBIT1dFVkVSIENBVVNFRCBBTkQgT04gQU5ZIFRI
RU9SWQotICogT0YgTElBQklMSVRZLCBXSEVUSEVSIElOIENPTlRSQUNULCBTVFJJQ1QgTElBQklM
SVRZLCBPUiBUT1JUCi0gKiAoSU5DTFVESU5HIE5FR0xJR0VOQ0UgT1IgT1RIRVJXSVNFKSBBUklT
SU5HIElOIEFOWSBXQVkgT1VUIE9GIFRIRSBVU0UKLSAqIE9GIFRISVMgU09GVFdBUkUsIEVWRU4g
SUYgQURWSVNFRCBPRiBUSEUgUE9TU0lCSUxJVFkgT0YgU1VDSCBEQU1BR0UuIAotICovCi0KLSNp
bmNsdWRlICJjb25maWcuaCIKLSNpbmNsdWRlICJNb2R1bGVSZWNvcmQuaCIKLQotI2luY2x1ZGUg
IklkZW50aWZpZXJJbmxpbmVzLmgiCi0KLW5hbWVzcGFjZSBKU0MgewotCi0KLWF1dG8gTW9kdWxl
UmVjb3JkOjpFeHBvcnRFbnRyeTo6Y3JlYXRlTG9jYWwoY29uc3QgSWRlbnRpZmllciYgZXhwb3J0
TmFtZSwgY29uc3QgSWRlbnRpZmllciYgbG9jYWxOYW1lLCBjb25zdCBWYXJpYWJsZUVudmlyb25t
ZW50RW50cnkmIHZhcmlhYmxlKSAtPiBFeHBvcnRFbnRyeQotewotICAgIHJldHVybiBFeHBvcnRF
bnRyeSB7IFR5cGU6OkxvY2FsLCBleHBvcnROYW1lLCBJZGVudGlmaWVyKCksIElkZW50aWZpZXIo
KSwgbG9jYWxOYW1lLCB2YXJpYWJsZSB9OwotfQotCi1hdXRvIE1vZHVsZVJlY29yZDo6RXhwb3J0
RW50cnk6OmNyZWF0ZU5hbWVzcGFjZShjb25zdCBJZGVudGlmaWVyJiBleHBvcnROYW1lLCBjb25z
dCBJZGVudGlmaWVyJiBtb2R1bGVOYW1lKSAtPiBFeHBvcnRFbnRyeQotewotICAgIHJldHVybiBF
eHBvcnRFbnRyeSB7IFR5cGU6Ok5hbWVzcGFjZSwgZXhwb3J0TmFtZSwgbW9kdWxlTmFtZSwgSWRl
bnRpZmllcigpLCBJZGVudGlmaWVyKCksIFZhcmlhYmxlRW52aXJvbm1lbnRFbnRyeSgpIH07Ci19
Ci0KLWF1dG8gTW9kdWxlUmVjb3JkOjpFeHBvcnRFbnRyeTo6Y3JlYXRlSW5kaXJlY3QoY29uc3Qg
SWRlbnRpZmllciYgZXhwb3J0TmFtZSwgY29uc3QgSWRlbnRpZmllciYgaW1wb3J0TmFtZSwgY29u
c3QgSWRlbnRpZmllciYgbW9kdWxlTmFtZSkgLT4gRXhwb3J0RW50cnkKLXsKLSAgICByZXR1cm4g
RXhwb3J0RW50cnkgeyBUeXBlOjpJbmRpcmVjdCwgZXhwb3J0TmFtZSwgbW9kdWxlTmFtZSwgaW1w
b3J0TmFtZSwgSWRlbnRpZmllcigpLCBWYXJpYWJsZUVudmlyb25tZW50RW50cnkoKSB9OwotfQot
Ci1zdGF0aWMgU3RyaW5nIHByaW50YWJsZU5hbWUoY29uc3QgUmVmUHRyPFVuaXF1ZWRTdHJpbmdJ
bXBsPiYgdWlkKQotewotICAgIGlmICh1aWQtPmlzU3ltYm9sKCkpCi0gICAgICAgIHJldHVybiB1
aWQuZ2V0KCk7Ci0gICAgcmV0dXJuIFdURjo6bWFrZVN0cmluZygiJyIsIFN0cmluZyh1aWQuZ2V0
KCkpLCAiJyIpOwotfQotCi1zdGF0aWMgU3RyaW5nIHByaW50YWJsZU5hbWUoY29uc3QgSWRlbnRp
ZmllciYgaWRlbnQpCi17Ci0gICAgcmV0dXJuIHByaW50YWJsZU5hbWUoaWRlbnQuaW1wbCgpKTsK
LX0KLQotCi12b2lkIE1vZHVsZVJlY29yZDo6ZHVtcCgpCi17Ci0gICAgZGF0YUxvZygiXG5BbmFs
eXppbmcgTW9kdWxlUmVjb3JkXG4iKTsKLQotICAgIGRhdGFMb2coIiAgICBEZXBlbmRlbmNpZXM6
ICIsIG1fcmVxdWVzdGVkTW9kdWxlcy5zaXplKCksICIgbW9kdWxlc1xuIik7Ci0gICAgZm9yIChj
b25zdCBhdXRvJiBtb2R1bGVOYW1lIDogbV9yZXF1ZXN0ZWRNb2R1bGVzKQotICAgICAgICBkYXRh
TG9nKCIgICAgICBtb2R1bGUoIiwgcHJpbnRhYmxlTmFtZShtb2R1bGVOYW1lKSwgIilcbiIpOwot
Ci0gICAgZGF0YUxvZygiICAgIEltcG9ydDogIiwgbV9pbXBvcnRFbnRyaWVzLnNpemUoKSwgIiBl
bnRyaWVzXG4iKTsKLSAgICBmb3IgKGNvbnN0IGF1dG8mIHBhaXIgOiBtX2ltcG9ydEVudHJpZXMp
Ci0gICAgICAgIGRhdGFMb2coIiAgICAgIGltcG9ydCgiLCBwcmludGFibGVOYW1lKHBhaXIudmFs
dWUuaW1wb3J0TmFtZSksICIpLCBsb2NhbCgiLCBwcmludGFibGVOYW1lKHBhaXIudmFsdWUubG9j
YWxOYW1lKSwgIiksIG1vZHVsZSgiLCBwcmludGFibGVOYW1lKHBhaXIudmFsdWUubW9kdWxlUmVx
dWVzdCksICIpXG4iKTsKLQotICAgIGRhdGFMb2coIiAgICBFeHBvcnQ6ICIsIG1fZXhwb3J0RW50
cmllcy5zaXplKCksICIgZW50cmllc1xuIik7Ci0gICAgZm9yIChjb25zdCBhdXRvJiBwYWlyIDog
bV9leHBvcnRFbnRyaWVzKSB7Ci0gICAgICAgIGNvbnN0IEV4cG9ydEVudHJ5JiBlbnRyeSA9IHBh
aXIudmFsdWU7Ci0gICAgICAgIHN3aXRjaCAoZW50cnkudHlwZSkgewotICAgICAgICBjYXNlIEV4
cG9ydEVudHJ5OjpUeXBlOjpMb2NhbDoKLSAgICAgICAgICAgIGRhdGFMb2coIiAgICAgIFtMb2Nh
bF0gIiwgImV4cG9ydCgiLCBwcmludGFibGVOYW1lKGVudHJ5LmV4cG9ydE5hbWUpLCAiKSwgbG9j
YWwoIiwgcHJpbnRhYmxlTmFtZShlbnRyeS5sb2NhbE5hbWUpLCAiKVxuIik7Ci0gICAgICAgICAg
ICBicmVhazsKLQotICAgICAgICBjYXNlIEV4cG9ydEVudHJ5OjpUeXBlOjpOYW1lc3BhY2U6Ci0g
ICAgICAgICAgICBkYXRhTG9nKCIgICAgICBbTmFtZXNwYWNlXSAiLCAiZXhwb3J0KCIsIHByaW50
YWJsZU5hbWUoZW50cnkuZXhwb3J0TmFtZSksICIpLCBtb2R1bGUoIiwgcHJpbnRhYmxlTmFtZShl
bnRyeS5tb2R1bGVOYW1lKSwgIilcbiIpOwotICAgICAgICAgICAgYnJlYWs7Ci0KLSAgICAgICAg
Y2FzZSBFeHBvcnRFbnRyeTo6VHlwZTo6SW5kaXJlY3Q6Ci0gICAgICAgICAgICBkYXRhTG9nKCIg
ICAgICBbSW5kaXJlY3RdICIsICJleHBvcnQoIiwgcHJpbnRhYmxlTmFtZShlbnRyeS5leHBvcnRO
YW1lKSwgIiksIGltcG9ydCgiLCBwcmludGFibGVOYW1lKGVudHJ5LmltcG9ydE5hbWUpLCAiKSwg
bW9kdWxlKCIsIHByaW50YWJsZU5hbWUoZW50cnkubW9kdWxlTmFtZSksICIpXG4iKTsKLSAgICAg
ICAgICAgIGJyZWFrOwotICAgICAgICB9Ci0gICAgfQotICAgIGZvciAoY29uc3QgYXV0byYgbW9k
dWxlTmFtZSA6IG1fc3RhckV4cG9ydEVudHJpZXMpCi0gICAgICAgIGRhdGFMb2coIiAgICAgIFtT
dGFyXSBtb2R1bGUoIiwgcHJpbnRhYmxlTmFtZShtb2R1bGVOYW1lLmdldCgpKSwgIilcbiIpOwot
fQotCi19IC8vIG5hbWVzcGFjZSBKU0MKZGlmZiAtLWdpdCBhL1NvdXJjZS9KYXZhU2NyaXB0Q29y
ZS9wYXJzZXIvTW9kdWxlUmVjb3JkLmggYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvcGFyc2VyL01v
ZHVsZVJlY29yZC5oCmRlbGV0ZWQgZmlsZSBtb2RlIDEwMDY0NAppbmRleCBlZjA4MWMwM2IwYTVi
ZGU2ZjE1NTYyOWRmM2Y1MDZjYWYzY2IxNzE0Li4wMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwCi0tLSBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9wYXJzZXIvTW9kdWxlUmVj
b3JkLmgKKysrIC9kZXYvbnVsbApAQCAtMSwxMjggKzAsMCBAQAotLyoKLSAqIENvcHlyaWdodCAo
QykgMjAxNSBBcHBsZSBJbmMuIEFsbCByaWdodHMgcmVzZXJ2ZWQuCi0gKgotICogUmVkaXN0cmli
dXRpb24gYW5kIHVzZSBpbiBzb3VyY2UgYW5kIGJpbmFyeSBmb3Jtcywgd2l0aCBvciB3aXRob3V0
Ci0gKiBtb2RpZmljYXRpb24sIGFyZSBwZXJtaXR0ZWQgcHJvdmlkZWQgdGhhdCB0aGUgZm9sbG93
aW5nIGNvbmRpdGlvbnMKLSAqIGFyZSBtZXQ6Ci0gKiAxLiBSZWRpc3RyaWJ1dGlvbnMgb2Ygc291
cmNlIGNvZGUgbXVzdCByZXRhaW4gdGhlIGFib3ZlIGNvcHlyaWdodAotICogICAgbm90aWNlLCB0
aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyLgotICog
Mi4gUmVkaXN0cmlidXRpb25zIGluIGJpbmFyeSBmb3JtIG11c3QgcmVwcm9kdWNlIHRoZSBhYm92
ZSBjb3B5cmlnaHQKLSAqICAgIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRo
ZSBmb2xsb3dpbmcgZGlzY2xhaW1lciBpbiB0aGUKLSAqICAgIGRvY3VtZW50YXRpb24gYW5kL29y
IG90aGVyIG1hdGVyaWFscyBwcm92aWRlZCB3aXRoIHRoZSBkaXN0cmlidXRpb24uCi0gKgotICog
VEhJUyBTT0ZUV0FSRSBJUyBQUk9WSURFRCBCWSBBUFBMRSBJTkMuIGBgQVMgSVMnJyBBTkQgQU5Z
Ci0gKiBFWFBSRVNTIE9SIElNUExJRUQgV0FSUkFOVElFUywgSU5DTFVESU5HLCBCVVQgTk9UIExJ
TUlURUQgVE8sIFRIRQotICogSU1QTElFRCBXQVJSQU5USUVTIE9GIE1FUkNIQU5UQUJJTElUWSBB
TkQgRklUTkVTUyBGT1IgQSBQQVJUSUNVTEFSCi0gKiBQVVJQT1NFIEFSRSBESVNDTEFJTUVELiAg
SU4gTk8gRVZFTlQgU0hBTEwgQVBQTEUgSU5DLiBPUgotICogQ09OVFJJQlVUT1JTIEJFIExJQUJM
RSBGT1IgQU5ZIERJUkVDVCwgSU5ESVJFQ1QsIElOQ0lERU5UQUwsIFNQRUNJQUwsCi0gKiBFWEVN
UExBUlksIE9SIENPTlNFUVVFTlRJQUwgREFNQUdFUyAoSU5DTFVESU5HLCBCVVQgTk9UIExJTUlU
RUQgVE8sCi0gKiBQUk9DVVJFTUVOVCBPRiBTVUJTVElUVVRFIEdPT0RTIE9SIFNFUlZJQ0VTOyBM
T1NTIE9GIFVTRSwgREFUQSwgT1IKLSAqIFBST0ZJVFM7IE9SIEJVU0lORVNTIElOVEVSUlVQVElP
TikgSE9XRVZFUiBDQVVTRUQgQU5EIE9OIEFOWSBUSEVPUlkKLSAqIE9GIExJQUJJTElUWSwgV0hF
VEhFUiBJTiBDT05UUkFDVCwgU1RSSUNUIExJQUJJTElUWSwgT1IgVE9SVAotICogKElOQ0xVRElO
RyBORUdMSUdFTkNFIE9SIE9USEVSV0lTRSkgQVJJU0lORyBJTiBBTlkgV0FZIE9VVCBPRiBUSEUg
VVNFCi0gKiBPRiBUSElTIFNPRlRXQVJFLCBFVkVOIElGIEFEVklTRUQgT0YgVEhFIFBPU1NJQklM
SVRZIE9GIFNVQ0ggREFNQUdFLgotICovCi0KLSNpZm5kZWYgTW9kdWxlUmVjb3JkX2gKLSNkZWZp
bmUgTW9kdWxlUmVjb3JkX2gKLQotI2luY2x1ZGUgIk5vZGVzLmgiCi0jaW5jbHVkZSA8d3RmL0hh
c2hNYXAuaD4KLSNpbmNsdWRlIDx3dGYvTGlzdEhhc2hTZXQuaD4KLQotbmFtZXNwYWNlIEpTQyB7
Ci0KLS8vIEJhc2VkIG9uIHRoZSBTb3VyY2UgVGV4dCBNb2R1bGUgUmVjb3JkCi0vLyBodHRwOi8v
d3d3LmVjbWEtaW50ZXJuYXRpb25hbC5vcmcvZWNtYS0yNjIvNi4wLyNzZWMtc291cmNlLXRleHQt
bW9kdWxlLXJlY29yZHMKLWNsYXNzIE1vZHVsZVJlY29yZCA6IHB1YmxpYyBSZWZDb3VudGVkPE1v
ZHVsZVJlY29yZD4gewotcHVibGljOgotICAgIHN0cnVjdCBFeHBvcnRFbnRyeSB7Ci0gICAgICAg
IGVudW0gY2xhc3MgVHlwZSB7Ci0gICAgICAgICAgICBMb2NhbCwKLSAgICAgICAgICAgIE5hbWVz
cGFjZSwKLSAgICAgICAgICAgIEluZGlyZWN0Ci0gICAgICAgIH07Ci0KLSAgICAgICAgc3RhdGlj
IEV4cG9ydEVudHJ5IGNyZWF0ZUxvY2FsKGNvbnN0IElkZW50aWZpZXImIGV4cG9ydE5hbWUsIGNv
bnN0IElkZW50aWZpZXImIGxvY2FsTmFtZSwgY29uc3QgVmFyaWFibGVFbnZpcm9ubWVudEVudHJ5
Jik7Ci0gICAgICAgIHN0YXRpYyBFeHBvcnRFbnRyeSBjcmVhdGVOYW1lc3BhY2UoY29uc3QgSWRl
bnRpZmllciYgZXhwb3J0TmFtZSwgY29uc3QgSWRlbnRpZmllciYgbW9kdWxlTmFtZSk7Ci0gICAg
ICAgIHN0YXRpYyBFeHBvcnRFbnRyeSBjcmVhdGVJbmRpcmVjdChjb25zdCBJZGVudGlmaWVyJiBl
eHBvcnROYW1lLCBjb25zdCBJZGVudGlmaWVyJiBpbXBvcnROYW1lLCBjb25zdCBJZGVudGlmaWVy
JiBtb2R1bGVOYW1lKTsKLQotICAgICAgICBUeXBlIHR5cGU7Ci0gICAgICAgIElkZW50aWZpZXIg
ZXhwb3J0TmFtZTsKLSAgICAgICAgSWRlbnRpZmllciBtb2R1bGVOYW1lOwotICAgICAgICBJZGVu
dGlmaWVyIGltcG9ydE5hbWU7Ci0gICAgICAgIElkZW50aWZpZXIgbG9jYWxOYW1lOwotICAgICAg
ICBWYXJpYWJsZUVudmlyb25tZW50RW50cnkgdmFyaWFibGU7Ci0gICAgfTsKLQotICAgIHN0cnVj
dCBJbXBvcnRFbnRyeSB7Ci0gICAgICAgIElkZW50aWZpZXIgbW9kdWxlUmVxdWVzdDsKLSAgICAg
ICAgSWRlbnRpZmllciBpbXBvcnROYW1lOwotICAgICAgICBJZGVudGlmaWVyIGxvY2FsTmFtZTsK
LQotICAgICAgICBib29sIGlzTmFtZXNwYWNlKFZNJiB2bSkgY29uc3QKLSAgICAgICAgewotICAg
ICAgICAgICAgcmV0dXJuIGltcG9ydE5hbWUgPT0gdm0ucHJvcGVydHlOYW1lcy0+dGltZXNJZGVu
dGlmaWVyOwotICAgICAgICB9Ci0gICAgfTsKLQotICAgIHR5cGVkZWYgV1RGOjpMaXN0SGFzaFNl
dDxSZWZQdHI8VW5pcXVlZFN0cmluZ0ltcGw+LCBJZGVudGlmaWVyUmVwSGFzaD4gT3JkZXJlZElk
ZW50aWZpZXJTZXQ7Ci0gICAgdHlwZWRlZiBIYXNoTWFwPFJlZlB0cjxVbmlxdWVkU3RyaW5nSW1w
bD4sIEltcG9ydEVudHJ5LCBJZGVudGlmaWVyUmVwSGFzaCwgSGFzaFRyYWl0czxSZWZQdHI8VW5p
cXVlZFN0cmluZ0ltcGw+Pj4gSW1wb3J0TWFwOwotICAgIHR5cGVkZWYgSGFzaE1hcDxSZWZQdHI8
VW5pcXVlZFN0cmluZ0ltcGw+LCBFeHBvcnRFbnRyeSwgSWRlbnRpZmllclJlcEhhc2gsIEhhc2hU
cmFpdHM8UmVmUHRyPFVuaXF1ZWRTdHJpbmdJbXBsPj4+IEV4cG9ydE1hcDsKLQotICAgIHN0YXRp
YyBSZWY8TW9kdWxlUmVjb3JkPiBjcmVhdGUoKQotICAgIHsKLSAgICAgICAgcmV0dXJuIGFkb3B0
UmVmKCpuZXcgTW9kdWxlUmVjb3JkKTsKLSAgICB9Ci0KLSAgICB2b2lkIGFwcGVuZFJlcXVlc3Rl
ZE1vZHVsZShjb25zdCBJZGVudGlmaWVyJik7Ci0gICAgdm9pZCBhZGRTdGFyRXhwb3J0RW50cnko
Y29uc3QgSWRlbnRpZmllciYpOwotICAgIHZvaWQgYWRkSW1wb3J0RW50cnkoY29uc3QgSW1wb3J0
RW50cnkmKTsKLSAgICB2b2lkIGFkZEV4cG9ydEVudHJ5KGNvbnN0IEV4cG9ydEVudHJ5Jik7Ci0K
LSAgICBjb25zdCBJbXBvcnRFbnRyeSYgbG9va1VwSW1wb3J0RW50cnkoY29uc3QgUmVmUHRyPFVu
aXF1ZWRTdHJpbmdJbXBsPiYgbG9jYWxOYW1lKTsKLQotICAgIHZvaWQgZHVtcCgpOwotCi1wcml2
YXRlOgotICAgIC8vIE1hcCBsb2NhbE5hbWUgLT4gSW1wb3J0RW50cnkuCi0gICAgSW1wb3J0TWFw
IG1faW1wb3J0RW50cmllczsKLQotICAgIC8vIE1hcCBleHBvcnROYW1lIC0+IEV4cG9ydEVudHJ5
LgotICAgIEV4cG9ydE1hcCBtX2V4cG9ydEVudHJpZXM7Ci0KLSAgICBJZGVudGlmaWVyU2V0IG1f
c3RhckV4cG9ydEVudHJpZXM7Ci0KLSAgICAvLyBTYXZlIHRoZSBvY2N1cnJlbmNlIG9yZGVyIHNp
bmNlIHRoZSBtb2R1bGUgbG9hZGVyIGxvYWRzIGFuZCBydW5zIHRoZSBtb2R1bGVzIGluIHRoaXMg
b3JkZXIuCi0gICAgLy8gaHR0cDovL3d3dy5lY21hLWludGVybmF0aW9uYWwub3JnL2VjbWEtMjYy
LzYuMC8jc2VjLW1vZHVsZWV2YWx1YXRpb24KLSAgICBPcmRlcmVkSWRlbnRpZmllclNldCBtX3Jl
cXVlc3RlZE1vZHVsZXM7Ci19OwotCi1pbmxpbmUgdm9pZCBNb2R1bGVSZWNvcmQ6OmFwcGVuZFJl
cXVlc3RlZE1vZHVsZShjb25zdCBJZGVudGlmaWVyJiBtb2R1bGVOYW1lKQotewotICAgIG1fcmVx
dWVzdGVkTW9kdWxlcy5hZGQobW9kdWxlTmFtZS5pbXBsKCkpOwotfQotCi1pbmxpbmUgdm9pZCBN
b2R1bGVSZWNvcmQ6OmFkZEltcG9ydEVudHJ5KGNvbnN0IEltcG9ydEVudHJ5JiBlbnRyeSkKLXsK
LSAgICBtX2ltcG9ydEVudHJpZXMuYWRkKGVudHJ5LmxvY2FsTmFtZS5pbXBsKCksIGVudHJ5KTsK
LX0KLQotaW5saW5lIHZvaWQgTW9kdWxlUmVjb3JkOjphZGRFeHBvcnRFbnRyeShjb25zdCBFeHBv
cnRFbnRyeSYgZW50cnkpCi17Ci0gICAgbV9leHBvcnRFbnRyaWVzLmFkZChlbnRyeS5leHBvcnRO
YW1lLmltcGwoKSwgZW50cnkpOwotfQotCi1pbmxpbmUgdm9pZCBNb2R1bGVSZWNvcmQ6OmFkZFN0
YXJFeHBvcnRFbnRyeShjb25zdCBJZGVudGlmaWVyJiBtb2R1bGVOYW1lKQotewotICAgIG1fc3Rh
ckV4cG9ydEVudHJpZXMuYWRkKG1vZHVsZU5hbWUuaW1wbCgpKTsKLX0KLQotaW5saW5lIGF1dG8g
TW9kdWxlUmVjb3JkOjpsb29rVXBJbXBvcnRFbnRyeShjb25zdCBSZWZQdHI8VW5pcXVlZFN0cmlu
Z0ltcGw+JiBsb2NhbE5hbWUpIC0+IGNvbnN0IEltcG9ydEVudHJ5JgotewotICAgIHJldHVybiAo
Km1faW1wb3J0RW50cmllcy5maW5kKGxvY2FsTmFtZSkpLnZhbHVlOwotfQotCi19IC8vIG5hbWVz
cGFjZSBKU0MKLQotI2VuZGlmIC8vIE1vZHVsZVJlY29yZF9oCmRpZmYgLS1naXQgYS9Tb3VyY2Uv
SmF2YVNjcmlwdENvcmUvcGFyc2VyL05vZGVzLmggYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvcGFy
c2VyL05vZGVzLmgKaW5kZXggZWQ1ZmMyNzI1MzRhMjQ2NDJmZDYyYWViMWExZGY5M2U2OGNhY2My
My4uNWQwYjc0ZTU4ZGRlZDZlZWU5MjNhM2JjMDQyOGI3NmNlZThjMWFmMiAxMDA2NDQKLS0tIGEv
U291cmNlL0phdmFTY3JpcHRDb3JlL3BhcnNlci9Ob2Rlcy5oCisrKyBiL1NvdXJjZS9KYXZhU2Ny
aXB0Q29yZS9wYXJzZXIvTm9kZXMuaApAQCAtNzksOCArNzksNiBAQCBuYW1lc3BhY2UgSlNDIHsK
ICAgICB9OwogICAgIGlubGluZSBGYWxsVGhyb3VnaE1vZGUgaW52ZXJ0KEZhbGxUaHJvdWdoTW9k
ZSBmYWxsVGhyb3VnaE1vZGUpIHsgcmV0dXJuIHN0YXRpY19jYXN0PEZhbGxUaHJvdWdoTW9kZT4o
IWZhbGxUaHJvdWdoTW9kZSk7IH0KIAotICAgIHR5cGVkZWYgSGFzaFNldDxSZWZQdHI8VW5pcXVl
ZFN0cmluZ0ltcGw+LCBJZGVudGlmaWVyUmVwSGFzaD4gSWRlbnRpZmllclNldDsKLQogICAgIG5h
bWVzcGFjZSBEZWNsYXJhdGlvblN0YWNrcyB7CiAgICAgICAgIHR5cGVkZWYgVmVjdG9yPEZ1bmN0
aW9uTWV0YWRhdGFOb2RlKj4gRnVuY3Rpb25TdGFjazsKICAgICB9CmRpZmYgLS1naXQgYS9Tb3Vy
Y2UvSmF2YVNjcmlwdENvcmUvcGFyc2VyL05vZGVzQW5hbHl6ZU1vZHVsZS5jcHAgYi9Tb3VyY2Uv
SmF2YVNjcmlwdENvcmUvcGFyc2VyL05vZGVzQW5hbHl6ZU1vZHVsZS5jcHAKaW5kZXggNjMzZGVh
ZWNlNmFmNjY2NTlkMGU3NmFjMWFhNDE2MTU5YWI3NWEzNS4uZWQ0NjFkYTI2ODM0ZmIzM2M5NDQw
MjE0YTk5NWU0NWM4YTgxOTQ1NSAxMDA2NDQKLS0tIGEvU291cmNlL0phdmFTY3JpcHRDb3JlL3Bh
cnNlci9Ob2Rlc0FuYWx5emVNb2R1bGUuY3BwCisrKyBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9w
YXJzZXIvTm9kZXNBbmFseXplTW9kdWxlLmNwcApAQCAtMjcsOCArMjcsOSBAQAogI2luY2x1ZGUg
Ik5vZGVzLmgiCiAjaW5jbHVkZSAiTm9kZUNvbnN0cnVjdG9ycy5oIgogCisjaW5jbHVkZSAiSlND
SlNWYWx1ZUlubGluZXMuaCIKKyNpbmNsdWRlICJKU01vZHVsZVJlY29yZC5oIgogI2luY2x1ZGUg
Ik1vZHVsZUFuYWx5emVyLmgiCi0jaW5jbHVkZSAiTW9kdWxlUmVjb3JkLmgiCiAKIG5hbWVzcGFj
ZSBKU0MgewogCkBAIC00OCw5ICs0OSw5IEBAIHZvaWQgU291cmNlRWxlbWVudHM6OmFuYWx5emVN
b2R1bGUoTW9kdWxlQW5hbHl6ZXImIGFuYWx5emVyKQogCiB2b2lkIEltcG9ydERlY2xhcmF0aW9u
Tm9kZTo6YW5hbHl6ZU1vZHVsZShNb2R1bGVBbmFseXplciYgYW5hbHl6ZXIpCiB7Ci0gICAgYW5h
bHl6ZXIubW9kdWxlUmVjb3JkKCkuYXBwZW5kUmVxdWVzdGVkTW9kdWxlKG1fbW9kdWxlTmFtZS0+
bW9kdWxlTmFtZSgpKTsKKyAgICBhbmFseXplci5tb2R1bGVSZWNvcmQoKS0+YXBwZW5kUmVxdWVz
dGVkTW9kdWxlKG1fbW9kdWxlTmFtZS0+bW9kdWxlTmFtZSgpKTsKICAgICBmb3IgKGF1dG8qIHNw
ZWNpZmllciA6IG1fc3BlY2lmaWVyTGlzdC0+c3BlY2lmaWVycygpKSB7Ci0gICAgICAgIGFuYWx5
emVyLm1vZHVsZVJlY29yZCgpLmFkZEltcG9ydEVudHJ5KE1vZHVsZVJlY29yZDo6SW1wb3J0RW50
cnkgeworICAgICAgICBhbmFseXplci5tb2R1bGVSZWNvcmQoKS0+YWRkSW1wb3J0RW50cnkoSlNN
b2R1bGVSZWNvcmQ6OkltcG9ydEVudHJ5IHsKICAgICAgICAgICAgIG1fbW9kdWxlTmFtZS0+bW9k
dWxlTmFtZSgpLAogICAgICAgICAgICAgc3BlY2lmaWVyLT5pbXBvcnRlZE5hbWUoKSwKICAgICAg
ICAgICAgIHNwZWNpZmllci0+bG9jYWxOYW1lKCkKQEAgLTYwLDggKzYxLDggQEAgdm9pZCBJbXBv
cnREZWNsYXJhdGlvbk5vZGU6OmFuYWx5emVNb2R1bGUoTW9kdWxlQW5hbHl6ZXImIGFuYWx5emVy
KQogCiB2b2lkIEV4cG9ydEFsbERlY2xhcmF0aW9uTm9kZTo6YW5hbHl6ZU1vZHVsZShNb2R1bGVB
bmFseXplciYgYW5hbHl6ZXIpCiB7Ci0gICAgYW5hbHl6ZXIubW9kdWxlUmVjb3JkKCkuYXBwZW5k
UmVxdWVzdGVkTW9kdWxlKG1fbW9kdWxlTmFtZS0+bW9kdWxlTmFtZSgpKTsKLSAgICBhbmFseXpl
ci5tb2R1bGVSZWNvcmQoKS5hZGRTdGFyRXhwb3J0RW50cnkobV9tb2R1bGVOYW1lLT5tb2R1bGVO
YW1lKCkpOworICAgIGFuYWx5emVyLm1vZHVsZVJlY29yZCgpLT5hcHBlbmRSZXF1ZXN0ZWRNb2R1
bGUobV9tb2R1bGVOYW1lLT5tb2R1bGVOYW1lKCkpOworICAgIGFuYWx5emVyLm1vZHVsZVJlY29y
ZCgpLT5hZGRTdGFyRXhwb3J0RW50cnkobV9tb2R1bGVOYW1lLT5tb2R1bGVOYW1lKCkpOwogfQog
CiB2b2lkIEV4cG9ydERlZmF1bHREZWNsYXJhdGlvbk5vZGU6OmFuYWx5emVNb2R1bGUoTW9kdWxl
QW5hbHl6ZXImIGFuYWx5emVyKQpAQCAtNzYsNyArNzcsNyBAQCB2b2lkIEV4cG9ydExvY2FsRGVj
bGFyYXRpb25Ob2RlOjphbmFseXplTW9kdWxlKE1vZHVsZUFuYWx5emVyJikKIHZvaWQgRXhwb3J0
TmFtZWREZWNsYXJhdGlvbk5vZGU6OmFuYWx5emVNb2R1bGUoTW9kdWxlQW5hbHl6ZXImIGFuYWx5
emVyKQogewogICAgIGlmIChtX21vZHVsZU5hbWUpCi0gICAgICAgIGFuYWx5emVyLm1vZHVsZVJl
Y29yZCgpLmFwcGVuZFJlcXVlc3RlZE1vZHVsZShtX21vZHVsZU5hbWUtPm1vZHVsZU5hbWUoKSk7
CisgICAgICAgIGFuYWx5emVyLm1vZHVsZVJlY29yZCgpLT5hcHBlbmRSZXF1ZXN0ZWRNb2R1bGUo
bV9tb2R1bGVOYW1lLT5tb2R1bGVOYW1lKCkpOwogCiAgICAgZm9yIChhdXRvKiBzcGVjaWZpZXIg
OiBtX3NwZWNpZmllckxpc3QtPnNwZWNpZmllcnMoKSkgewogICAgICAgICBpZiAobV9tb2R1bGVO
YW1lKSB7CkBAIC04NCw3ICs4NSw3IEBAIHZvaWQgRXhwb3J0TmFtZWREZWNsYXJhdGlvbk5vZGU6
OmFuYWx5emVNb2R1bGUoTW9kdWxlQW5hbHl6ZXImIGFuYWx5emVyKQogICAgICAgICAgICAgLy8K
ICAgICAgICAgICAgIC8vIEluIHRoaXMgY2FzZSwgbm8gbG9jYWwgdmFyaWFibGUgbmFtZXMgYXJl
IGltcG9ydGVkIGludG8gdGhlIGN1cnJlbnQgbW9kdWxlLgogICAgICAgICAgICAgLy8gInYiIGlu
ZGlyZWN0bHkgcG9pbnRzIHRoZSBiaW5kaW5nIGluICJtb2QiLgotICAgICAgICAgICAgYW5hbHl6
ZXIubW9kdWxlUmVjb3JkKCkuYWRkRXhwb3J0RW50cnkoTW9kdWxlUmVjb3JkOjpFeHBvcnRFbnRy
eTo6Y3JlYXRlSW5kaXJlY3Qoc3BlY2lmaWVyLT5leHBvcnRlZE5hbWUoKSwgc3BlY2lmaWVyLT5s
b2NhbE5hbWUoKSwgbV9tb2R1bGVOYW1lLT5tb2R1bGVOYW1lKCkpKTsKKyAgICAgICAgICAgIGFu
YWx5emVyLm1vZHVsZVJlY29yZCgpLT5hZGRFeHBvcnRFbnRyeShKU01vZHVsZVJlY29yZDo6RXhw
b3J0RW50cnk6OmNyZWF0ZUluZGlyZWN0KHNwZWNpZmllci0+ZXhwb3J0ZWROYW1lKCksIHNwZWNp
Zmllci0+bG9jYWxOYW1lKCksIG1fbW9kdWxlTmFtZS0+bW9kdWxlTmFtZSgpKSk7CiAgICAgICAg
ICAgICBjb250aW51ZTsKICAgICAgICAgfQogCmRpZmYgLS1naXQgYS9Tb3VyY2UvSmF2YVNjcmlw
dENvcmUvcnVudGltZS9Db21tb25JZGVudGlmaWVycy5jcHAgYi9Tb3VyY2UvSmF2YVNjcmlwdENv
cmUvcnVudGltZS9Db21tb25JZGVudGlmaWVycy5jcHAKaW5kZXggZmM2ZTYyY2EwNDVlMzYyOWNm
MmFkM2I2YmZjYjczZDVkZGZmMGNlMS4uYWEzOTJjZWI4ZDFhMDY1YTkyNTJhYTc3NDRkYWI4ZDli
MTYwNTRlOSAxMDA2NDQKLS0tIGEvU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvQ29tbW9u
SWRlbnRpZmllcnMuY3BwCisrKyBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL0NvbW1v
bklkZW50aWZpZXJzLmNwcApAQCAtNjgsMTQgKzY4LDE0IEBAIGJvb2wgQ29tbW9uSWRlbnRpZmll
cnM6OmlzUHJpdmF0ZU5hbWUoY29uc3QgSWRlbnRpZmllciYgaWRlbnQpIGNvbnN0CiAgICAgcmV0
dXJuIG1fYnVpbHRpbk5hbWVzLT5pc1ByaXZhdGVOYW1lKGlkZW50KTsKIH0KIAotY29uc3QgSWRl
bnRpZmllciogQ29tbW9uSWRlbnRpZmllcnM6OmdldFByaXZhdGVOYW1lKGNvbnN0IElkZW50aWZp
ZXImIGlkZW50KSBjb25zdAorY29uc3QgSWRlbnRpZmllciogQ29tbW9uSWRlbnRpZmllcnM6Omxv
b2tVcFByaXZhdGVOYW1lKGNvbnN0IElkZW50aWZpZXImIGlkZW50KSBjb25zdAogewotICAgIHJl
dHVybiBtX2J1aWx0aW5OYW1lcy0+Z2V0UHJpdmF0ZU5hbWUoaWRlbnQpOworICAgIHJldHVybiBt
X2J1aWx0aW5OYW1lcy0+bG9va1VwUHJpdmF0ZU5hbWUoaWRlbnQpOwogfQogICAgIAotSWRlbnRp
ZmllciBDb21tb25JZGVudGlmaWVyczo6Z2V0UHVibGljTmFtZShjb25zdCBJZGVudGlmaWVyJiBp
ZGVudCkgY29uc3QKK0lkZW50aWZpZXIgQ29tbW9uSWRlbnRpZmllcnM6Omxvb2tVcFB1YmxpY05h
bWUoY29uc3QgSWRlbnRpZmllciYgaWRlbnQpIGNvbnN0CiB7Ci0gICAgcmV0dXJuIG1fYnVpbHRp
bk5hbWVzLT5nZXRQdWJsaWNOYW1lKGlkZW50KTsKKyAgICByZXR1cm4gbV9idWlsdGluTmFtZXMt
Pmxvb2tVcFB1YmxpY05hbWUoaWRlbnQpOwogfQogCiAKZGlmZiAtLWdpdCBhL1NvdXJjZS9KYXZh
U2NyaXB0Q29yZS9ydW50aW1lL0NvbW1vbklkZW50aWZpZXJzLmggYi9Tb3VyY2UvSmF2YVNjcmlw
dENvcmUvcnVudGltZS9Db21tb25JZGVudGlmaWVycy5oCmluZGV4IDM0NDdiMzk4ZmQwNjE4MDU5
MDllNmYwMjJlM2Q2NjUyM2JhYzQ2OTguLmQ1OWQ0NDQ4ZDI5M2ExNDc1YzAxYjdjN2U2NmFlZjc5
NjJlYjEyNmQgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL0NvbW1v
bklkZW50aWZpZXJzLmgKKysrIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvQ29tbW9u
SWRlbnRpZmllcnMuaApAQCAtNDIsNiArNDIsNyBAQAogICAgIG1hY3JvKEluZmluaXR5KSBcCiAg
ICAgbWFjcm8oSW50bCkgXAogICAgIG1hY3JvKEpTT04pIFwKKyAgICBtYWNybyhMb2FkZXIpIFwK
ICAgICBtYWNybyhNYXApXAogICAgIG1hY3JvKE1hcEl0ZXJhdG9yKVwKICAgICBtYWNybyhNYXRo
KSBcCkBAIC0yODEsNiArMjgyLDcgQEAKICAgICBtYWNybyhOdW1iZXIpIFwKICAgICBtYWNybyhB
cnJheSkgXAogICAgIG1hY3JvKFN0cmluZykgXAorICAgIG1hY3JvKE1hcCkgXAogICAgIG1hY3Jv
KFByb21pc2UpIFwKICAgICBtYWNybyhhYnMpIFwKICAgICBtYWNybyhmbG9vcikgXApAQCAtMzAy
LDYgKzMwNCw4IEBACiAgICAgbWFjcm8oY2FwYWJpbGl0aWVzKSBcCiAgICAgbWFjcm8oc3RhckRl
ZmF1bHQpIFwKICAgICBtYWNybyhJbnNwZWN0b3JJbnN0cnVtZW50YXRpb24pIFwKKyAgICBtYWNy
byhnZXQpIFwKKyAgICBtYWNybyhzZXQpIFwKIAogCiBuYW1lc3BhY2UgSlNDIHsKQEAgLTM0OCw4
ICszNTIsOCBAQCBuYW1lc3BhY2UgSlNDIHsKICAgICAgICAgYm9vbCBpc1ByaXZhdGVOYW1lKFVu
aXF1ZWRTdHJpbmdJbXBsJiB1aWQpIGNvbnN0OwogICAgICAgICBib29sIGlzUHJpdmF0ZU5hbWUo
Y29uc3QgSWRlbnRpZmllciYpIGNvbnN0OwogCi0gICAgICAgIGNvbnN0IElkZW50aWZpZXIqIGdl
dFByaXZhdGVOYW1lKGNvbnN0IElkZW50aWZpZXImKSBjb25zdDsKLSAgICAgICAgSWRlbnRpZmll
ciBnZXRQdWJsaWNOYW1lKGNvbnN0IElkZW50aWZpZXImKSBjb25zdDsKKyAgICAgICAgY29uc3Qg
SWRlbnRpZmllciogbG9va1VwUHJpdmF0ZU5hbWUoY29uc3QgSWRlbnRpZmllciYpIGNvbnN0Owor
ICAgICAgICBJZGVudGlmaWVyIGxvb2tVcFB1YmxpY05hbWUoY29uc3QgSWRlbnRpZmllciYpIGNv
bnN0OwogCiAgICAgICAgIGNvbnN0IEJ5dGVjb2RlSW50cmluc2ljUmVnaXN0cnkmIGJ5dGVjb2Rl
SW50cmluc2ljUmVnaXN0cnkoKSBjb25zdCB7IHJldHVybiBtX2J5dGVjb2RlSW50cmluc2ljUmVn
aXN0cnk7IH0KIApkaWZmIC0tZ2l0IGEvU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvQ29t
cGxldGlvbi5jcHAgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9Db21wbGV0aW9uLmNw
cAppbmRleCBhM2RhZWU2MDM0M2FjMTRiMTRhZDAzMDRlYmRjOWEyNWFhYjE1NzIzLi5iZDU2MWNk
ZmFkNmFhYTY3NWE5NmNjYjAzYmIzNGE0YWUyZDkxMzllIDEwMDY0NAotLS0gYS9Tb3VyY2UvSmF2
YVNjcmlwdENvcmUvcnVudGltZS9Db21wbGV0aW9uLmNwcAorKysgYi9Tb3VyY2UvSmF2YVNjcmlw
dENvcmUvcnVudGltZS9Db21wbGV0aW9uLmNwcApAQCAtMjgsMTEgKzI4LDEyIEBACiAjaW5jbHVk
ZSAiRGVidWdnZXIuaCIKICNpbmNsdWRlICJFeGNlcHRpb24uaCIKICNpbmNsdWRlICJJbnRlcnBy
ZXRlci5oIgorI2luY2x1ZGUgIkpTQ0lubGluZXMuaCIKICNpbmNsdWRlICJKU0dsb2JhbE9iamVj
dC5oIgogI2luY2x1ZGUgIkpTTG9jay5oIgotI2luY2x1ZGUgIkpTQ0lubGluZXMuaCIKKyNpbmNs
dWRlICJKU01vZHVsZVJlY29yZC5oIgogI2luY2x1ZGUgIk1vZHVsZUFuYWx5emVyLmgiCi0jaW5j
bHVkZSAiTW9kdWxlUmVjb3JkLmgiCisjaW5jbHVkZSAiTW9kdWxlTG9hZGVyT2JqZWN0LmgiCiAj
aW5jbHVkZSAiUGFyc2VyLmgiCiAjaW5jbHVkZSA8d3RmL1dURlRocmVhZERhdGEuaD4KIApAQCAt
NjMsOCArNjQsOSBAQCBib29sIGNoZWNrU3ludGF4KFZNJiB2bSwgY29uc3QgU291cmNlQ29kZSYg
c291cmNlLCBQYXJzZXJFcnJvciYgZXJyb3IpCiAgICAgICAgIEpTUGFyc2VyU3RyaWN0TW9kZTo6
Tm90U3RyaWN0LCBTb3VyY2VQYXJzZU1vZGU6OlByb2dyYW1Nb2RlLCBlcnJvcik7CiB9CiAKLWJv
b2wgY2hlY2tNb2R1bGVTeW50YXgoVk0mIHZtLCBjb25zdCBTb3VyY2VDb2RlJiBzb3VyY2UsIFBh
cnNlckVycm9yJiBlcnJvcikKK2Jvb2wgY2hlY2tNb2R1bGVTeW50YXgoRXhlY1N0YXRlKiBleGVj
LCBjb25zdCBTb3VyY2VDb2RlJiBzb3VyY2UsIFBhcnNlckVycm9yJiBlcnJvcikKIHsKKyAgICBW
TSYgdm0gPSBleGVjLT52bSgpOwogICAgIEpTTG9ja0hvbGRlciBsb2NrKHZtKTsKICAgICBSRUxF
QVNFX0FTU0VSVCh2bS5hdG9taWNTdHJpbmdUYWJsZSgpID09IHd0ZlRocmVhZERhdGEoKS5hdG9t
aWNTdHJpbmdUYWJsZSgpKTsKICAgICBzdGQ6OnVuaXF1ZV9wdHI8TW9kdWxlUHJvZ3JhbU5vZGU+
IG1vZHVsZVByb2dyYW1Ob2RlID0gcGFyc2U8TW9kdWxlUHJvZ3JhbU5vZGU+KApAQCAtNzMsNyAr
NzUsNyBAQCBib29sIGNoZWNrTW9kdWxlU3ludGF4KFZNJiB2bSwgY29uc3QgU291cmNlQ29kZSYg
c291cmNlLCBQYXJzZXJFcnJvciYgZXJyb3IpCiAgICAgaWYgKCFtb2R1bGVQcm9ncmFtTm9kZSkK
ICAgICAgICAgcmV0dXJuIGZhbHNlOwogCi0gICAgTW9kdWxlQW5hbHl6ZXIgbW9kdWxlQW5hbHl6
ZXIodm0sIG1vZHVsZVByb2dyYW1Ob2RlLT52YXJEZWNsYXJhdGlvbnMoKSwgbW9kdWxlUHJvZ3Jh
bU5vZGUtPmxleGljYWxWYXJpYWJsZXMoKSk7CisgICAgTW9kdWxlQW5hbHl6ZXIgbW9kdWxlQW5h
bHl6ZXIoZXhlYywgbW9kdWxlUHJvZ3JhbU5vZGUtPnZhckRlY2xhcmF0aW9ucygpLCBtb2R1bGVQ
cm9ncmFtTm9kZS0+bGV4aWNhbFZhcmlhYmxlcygpKTsKICAgICBtb2R1bGVBbmFseXplci5hbmFs
eXplKCptb2R1bGVQcm9ncmFtTm9kZSk7CiAgICAgcmV0dXJuIHRydWU7CiB9CkBAIC0xMDgsNCAr
MTEwLDQyIEBAIEpTVmFsdWUgZXZhbHVhdGUoRXhlY1N0YXRlKiBleGVjLCBjb25zdCBTb3VyY2VD
b2RlJiBzb3VyY2UsIEpTVmFsdWUgdGhpc1ZhbHVlLCBOCiAgICAgcmV0dXJuIHJlc3VsdDsKIH0K
IAordm9pZCBldmFsdWF0ZU1vZHVsZShFeGVjU3RhdGUqIGV4ZWMsIGNvbnN0IFNvdXJjZUNvZGUm
IHNvdXJjZSwgTmFrZWRQdHI8RXhjZXB0aW9uPiYgcmV0dXJuZWRFeGNlcHRpb24pCit7CisgICAg
SlNMb2NrSG9sZGVyIGxvY2soZXhlYyk7CisgICAgUkVMRUFTRV9BU1NFUlQoZXhlYy0+dm0oKS5h
dG9taWNTdHJpbmdUYWJsZSgpID09IHd0ZlRocmVhZERhdGEoKS5hdG9taWNTdHJpbmdUYWJsZSgp
KTsKKyAgICBSRUxFQVNFX0FTU0VSVCghZXhlYy0+dm0oKS5pc0NvbGxlY3RvckJ1c3koKSk7CisK
KyAgICBDb2RlUHJvZmlsaW5nIHByb2ZpbGUoc291cmNlKTsKKworICAgIEpTR2xvYmFsT2JqZWN0
KiBnbG9iYWxPYmplY3QgPSBleGVjLT52bUVudHJ5R2xvYmFsT2JqZWN0KCk7CisKKyAgICAvLyBH
ZW5lcmF0ZSB0aGUgdW5pcXVlIGtleSBmb3IgdGhlIHNvdXJjZS1wcm92aWRlZCBtb2R1bGUuCisg
ICAgU3ltYm9sKiBrZXkgPSBTeW1ib2w6OmNyZWF0ZShleGVjLT52bSgpKTsKKworICAgIE1vZHVs
ZUxvYWRlck9iamVjdCogbW9kdWxlTG9hZGVyID0gZ2xvYmFsT2JqZWN0LT5tb2R1bGVMb2FkZXIo
KTsKKworICAgIC8vIEluc2VydCB0aGUgZ2l2ZW4gc291cmNlIGNvZGUgdG8gdGhlIE1vZHVsZUxv
YWRlciByZWdpc3RyeSBhcyB0aGUgZmV0Y2hlZCByZWdpc3RyeSBlbnRyeS4KKyAgICBtb2R1bGVM
b2FkZXItPnByb3ZpZGUoZXhlYywga2V5LCBNb2R1bGVMb2FkZXJPYmplY3Q6OlN0YXR1czo6RmV0
Y2gsIHNvdXJjZS50b1N0cmluZygpKTsKKyAgICBpZiAoZXhlYy0+aGFkRXhjZXB0aW9uKCkpIHsK
KyAgICAgICAgcmV0dXJuZWRFeGNlcHRpb24gPSBleGVjLT5leGNlcHRpb24oKTsKKyAgICAgICAg
ZXhlYy0+Y2xlYXJFeGNlcHRpb24oKTsKKyAgICAgICAgcmV0dXJuOworICAgIH0KKworICAgIC8v
IEZJWE1FOiBOb3csIHdlIGRvbid0IGltcGxlbWVudCB0aGUgbGlua2luZyBwaGFzZSB5ZXQuCisg
ICAgLy8gU28gaGVyZSwgd2UganVzdCBjYWxsIHJlcXVlc3RJbnN0YW50aWF0ZUFsbCB0byBvbmx5
IHBlcmZvcm0gdGhlIG1vZHVsZSBsb2FkaW5nLgorICAgIC8vIEF0IGxhc3QsIGl0IHNob3VsZCBi
ZSByZXBsYWNlZCB3aXRoIHJlcXVlc3RSZWFkeS4KKyAgICAvLyBodHRwczovL2J1Z3Mud2Via2l0
Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9MTQ4MTcyCisgICAgbW9kdWxlTG9hZGVyLT5yZXF1ZXN0SW5z
dGFudGlhdGVBbGwoZXhlYywga2V5KTsKKworICAgIC8vIEZJWE1FOiBXZSBzaG91bGQgYWxzbyBo
YW5kbGUgdGhlIGFzeW5jaHJvbm91cyBTeW50YXggRXJyb3JzIHRoYXQgd2lsbCBiZSBkZWxpdmVy
ZWQgYnkgdGhlIHJlamVjdGVkIHByb21pc2UuCisgICAgLy8gaHR0cHM6Ly9idWdzLndlYmtpdC5v
cmcvc2hvd19idWcuY2dpP2lkPTE0ODE3MworICAgIGlmIChleGVjLT5oYWRFeGNlcHRpb24oKSkg
eworICAgICAgICByZXR1cm5lZEV4Y2VwdGlvbiA9IGV4ZWMtPmV4Y2VwdGlvbigpOworICAgICAg
ICBleGVjLT5jbGVhckV4Y2VwdGlvbigpOworICAgICAgICByZXR1cm47CisgICAgfQorfQorCiB9
IC8vIG5hbWVzcGFjZSBKU0MKZGlmZiAtLWdpdCBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50
aW1lL0NvbXBsZXRpb24uaCBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL0NvbXBsZXRp
b24uaAppbmRleCA3MDJlZDlmYWIwYzc5MWZhZTE1NTA1NjI3YmM3MzFhZGJhZTNhNWZkLi5kZTMy
ZDYzZTYzYWM3Y2VkNDlkODE3ZTIzYzBiODc4ODY3YTA1YTY5IDEwMDY0NAotLS0gYS9Tb3VyY2Uv
SmF2YVNjcmlwdENvcmUvcnVudGltZS9Db21wbGV0aW9uLmgKKysrIGIvU291cmNlL0phdmFTY3Jp
cHRDb3JlL3J1bnRpbWUvQ29tcGxldGlvbi5oCkBAIC0zNywxMyArMzcsMTQgQEAgY2xhc3MgVk07
CiAKIEpTX0VYUE9SVF9QUklWQVRFIGJvb2wgY2hlY2tTeW50YXgoVk0mLCBjb25zdCBTb3VyY2VD
b2RlJiwgUGFyc2VyRXJyb3ImKTsKIEpTX0VYUE9SVF9QUklWQVRFIGJvb2wgY2hlY2tTeW50YXgo
RXhlY1N0YXRlKiwgY29uc3QgU291cmNlQ29kZSYsIEpTVmFsdWUqIGV4Y2VwdGlvbiA9IDApOwot
SlNfRVhQT1JUX1BSSVZBVEUgYm9vbCBjaGVja01vZHVsZVN5bnRheChWTSYsIGNvbnN0IFNvdXJj
ZUNvZGUmLCBQYXJzZXJFcnJvciYpOworSlNfRVhQT1JUX1BSSVZBVEUgYm9vbCBjaGVja01vZHVs
ZVN5bnRheChFeGVjU3RhdGUqLCBjb25zdCBTb3VyY2VDb2RlJiwgUGFyc2VyRXJyb3ImKTsKIEpT
X0VYUE9SVF9QUklWQVRFIEpTVmFsdWUgZXZhbHVhdGUoRXhlY1N0YXRlKiwgY29uc3QgU291cmNl
Q29kZSYsIEpTVmFsdWUgdGhpc1ZhbHVlLCBOYWtlZFB0cjxFeGNlcHRpb24+JiByZXR1cm5lZEV4
Y2VwdGlvbik7CiBpbmxpbmUgSlNWYWx1ZSBldmFsdWF0ZShFeGVjU3RhdGUqIGV4ZWMsIGNvbnN0
IFNvdXJjZUNvZGUmIHNvdXJjZUNvZGUsIEpTVmFsdWUgdGhpc1ZhbHVlID0gSlNWYWx1ZSgpKQog
ewogICAgIE5ha2VkUHRyPEV4Y2VwdGlvbj4gdW51c2VkOwogICAgIHJldHVybiBldmFsdWF0ZShl
eGVjLCBzb3VyY2VDb2RlLCB0aGlzVmFsdWUsIHVudXNlZCk7CiB9CitKU19FWFBPUlRfUFJJVkFU
RSB2b2lkIGV2YWx1YXRlTW9kdWxlKEV4ZWNTdGF0ZSosIGNvbnN0IFNvdXJjZUNvZGUmLCBOYWtl
ZFB0cjxFeGNlcHRpb24+JiByZXR1cm5lZEV4Y2VwdGlvbik7CiAKIH0gLy8gbmFtZXNwYWNlIEpT
QwogCmRpZmYgLS1naXQgYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9FeGNlcHRpb25I
ZWxwZXJzLmNwcCBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL0V4Y2VwdGlvbkhlbHBl
cnMuY3BwCmluZGV4IDQ2YzBjZWY5MzkyYTRhZDdjMGIwMGE5YTA4NDdlMGI5YWVmYzVmYWUuLmI3
ODU5YmZlM2U4ZWFmZDFlYzY0YWI1ZmJmZWFmMjU3MmFkMjdjMTcgMTAwNjQ0Ci0tLSBhL1NvdXJj
ZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL0V4Y2VwdGlvbkhlbHBlcnMuY3BwCisrKyBiL1NvdXJj
ZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL0V4Y2VwdGlvbkhlbHBlcnMuY3BwCkBAIC03Myw3ICs3
Myw3IEBAIEpTT2JqZWN0KiBjcmVhdGVTdGFja092ZXJmbG93RXJyb3IoRXhlY1N0YXRlKiBleGVj
KQogSlNPYmplY3QqIGNyZWF0ZVVuZGVmaW5lZFZhcmlhYmxlRXJyb3IoRXhlY1N0YXRlKiBleGVj
LCBjb25zdCBJZGVudGlmaWVyJiBpZGVudCkKIHsKICAgICBpZiAoZXhlYy0+cHJvcGVydHlOYW1l
cygpLmlzUHJpdmF0ZU5hbWUoaWRlbnQpKSB7Ci0gICAgICAgIFN0cmluZyBtZXNzYWdlKG1ha2VT
dHJpbmcoIkNhbid0IGZpbmQgcHJpdmF0ZSB2YXJpYWJsZTogQCIsIGV4ZWMtPnByb3BlcnR5TmFt
ZXMoKS5nZXRQdWJsaWNOYW1lKGlkZW50KS5zdHJpbmcoKSkpOworICAgICAgICBTdHJpbmcgbWVz
c2FnZShtYWtlU3RyaW5nKCJDYW4ndCBmaW5kIHByaXZhdGUgdmFyaWFibGU6IEAiLCBleGVjLT5w
cm9wZXJ0eU5hbWVzKCkubG9va1VwUHVibGljTmFtZShpZGVudCkuc3RyaW5nKCkpKTsKICAgICAg
ICAgcmV0dXJuIGNyZWF0ZVJlZmVyZW5jZUVycm9yKGV4ZWMsIG1lc3NhZ2UpOwogICAgIH0KICAg
ICBTdHJpbmcgbWVzc2FnZShtYWtlU3RyaW5nKCJDYW4ndCBmaW5kIHZhcmlhYmxlOiAiLCBpZGVu
dC5zdHJpbmcoKSkpOwpkaWZmIC0tZ2l0IGEvU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUv
SWRlbnRpZmllci5oIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvSWRlbnRpZmllci5o
CmluZGV4IDYxZGU2NTM2YTZmYTRjMjlhY2E0ZGYxNGI3ZDZmZWM0ZDJhNTAzZTYuLjg4OWNhNmIy
MmU0Mzc5MzYyZjI1ODA1ZmQwNWU2Zjg0YWE2N2JiYTYgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9KYXZh
U2NyaXB0Q29yZS9ydW50aW1lL0lkZW50aWZpZXIuaAorKysgYi9Tb3VyY2UvSmF2YVNjcmlwdENv
cmUvcnVudGltZS9JZGVudGlmaWVyLmgKQEAgLTI5Miw2ICsyOTIsNyBAQCBzdHJ1Y3QgSWRlbnRp
Zmllck1hcEluZGV4SGFzaFRyYWl0cyA6IEhhc2hUcmFpdHM8aW50PiB7CiAgICAgc3RhdGljIGNv
bnN0IGJvb2wgZW1wdHlWYWx1ZUlzWmVybyA9IGZhbHNlOwogfTsKIAordHlwZWRlZiBIYXNoU2V0
PFJlZlB0cjxVbmlxdWVkU3RyaW5nSW1wbD4sIElkZW50aWZpZXJSZXBIYXNoPiBJZGVudGlmaWVy
U2V0OwogdHlwZWRlZiBIYXNoTWFwPFJlZlB0cjxVbmlxdWVkU3RyaW5nSW1wbD4sIGludCwgSWRl
bnRpZmllclJlcEhhc2gsIEhhc2hUcmFpdHM8UmVmUHRyPFVuaXF1ZWRTdHJpbmdJbXBsPj4sIElk
ZW50aWZpZXJNYXBJbmRleEhhc2hUcmFpdHM+IElkZW50aWZpZXJNYXA7CiB0eXBlZGVmIEhhc2hN
YXA8VW5pcXVlZFN0cmluZ0ltcGwqLCBpbnQsIElkZW50aWZpZXJSZXBIYXNoLCBIYXNoVHJhaXRz
PFVuaXF1ZWRTdHJpbmdJbXBsKj4sIElkZW50aWZpZXJNYXBJbmRleEhhc2hUcmFpdHM+IEJvcnJv
d2VkSWRlbnRpZmllck1hcDsKIApkaWZmIC0tZ2l0IGEvU291cmNlL0phdmFTY3JpcHRDb3JlL3J1
bnRpbWUvSlNHbG9iYWxPYmplY3QuY3BwIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUv
SlNHbG9iYWxPYmplY3QuY3BwCmluZGV4IGUwYzNmYWRmYzRmM2I1MmRkNmJhNzFiNzg4NmQ4ZWM2
MDhkNDQxN2UuLjlmMmE2MTc1NTBmODExMTkwZWE0OTk1YjU2NzA4ZTUwZDQ0Nzk1ZTQgMTAwNjQ0
Ci0tLSBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL0pTR2xvYmFsT2JqZWN0LmNwcAor
KysgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9KU0dsb2JhbE9iamVjdC5jcHAKQEAg
LTgxLDYgKzgxLDcgQEAKICNpbmNsdWRlICJKU0xvY2suaCIKICNpbmNsdWRlICJKU01hcC5oIgog
I2luY2x1ZGUgIkpTTWFwSXRlcmF0b3IuaCIKKyNpbmNsdWRlICJKU01vZHVsZVJlY29yZC5oIgog
I2luY2x1ZGUgIkpTT05PYmplY3QuaCIKICNpbmNsdWRlICJKU1Byb21pc2UuaCIKICNpbmNsdWRl
ICJKU1Byb21pc2VDb25zdHJ1Y3Rvci5oIgpAQCAtMTA0LDYgKzEwNSw3IEBACiAjaW5jbHVkZSAi
TWFwUHJvdG90eXBlLmgiCiAjaW5jbHVkZSAiTWF0aE9iamVjdC5oIgogI2luY2x1ZGUgIk1pY3Jv
dGFzay5oIgorI2luY2x1ZGUgIk1vZHVsZUxvYWRlck9iamVjdC5oIgogI2luY2x1ZGUgIk5hdGl2
ZUVycm9yQ29uc3RydWN0b3IuaCIKICNpbmNsdWRlICJOYXRpdmVFcnJvclByb3RvdHlwZS5oIgog
I2luY2x1ZGUgIk51bGxHZXR0ZXJGdW5jdGlvbi5oIgpAQCAtMTU3LDcgKzE1OSw3IEBAIG5hbWVz
cGFjZSBKU0MgewogCiBjb25zdCBDbGFzc0luZm8gSlNHbG9iYWxPYmplY3Q6OnNfaW5mbyA9IHsg
Ikdsb2JhbE9iamVjdCIsICZCYXNlOjpzX2luZm8sICZnbG9iYWxPYmplY3RUYWJsZSwgQ1JFQVRF
X01FVEhPRF9UQUJMRShKU0dsb2JhbE9iamVjdCkgfTsKIAotY29uc3QgR2xvYmFsT2JqZWN0TWV0
aG9kVGFibGUgSlNHbG9iYWxPYmplY3Q6OnNfZ2xvYmFsT2JqZWN0TWV0aG9kVGFibGUgPSB7ICZh
bGxvd3NBY2Nlc3NGcm9tLCAmc3VwcG9ydHNQcm9maWxpbmcsICZzdXBwb3J0c1JpY2hTb3VyY2VJ
bmZvLCAmc2hvdWxkSW50ZXJydXB0U2NyaXB0LCAmamF2YVNjcmlwdFJ1bnRpbWVGbGFncywgbnVs
bHB0ciwgJnNob3VsZEludGVycnVwdFNjcmlwdEJlZm9yZVRpbWVvdXQgfTsKK2NvbnN0IEdsb2Jh
bE9iamVjdE1ldGhvZFRhYmxlIEpTR2xvYmFsT2JqZWN0OjpzX2dsb2JhbE9iamVjdE1ldGhvZFRh
YmxlID0geyAmYWxsb3dzQWNjZXNzRnJvbSwgJnN1cHBvcnRzUHJvZmlsaW5nLCAmc3VwcG9ydHNS
aWNoU291cmNlSW5mbywgJnNob3VsZEludGVycnVwdFNjcmlwdCwgJmphdmFTY3JpcHRSdW50aW1l
RmxhZ3MsIG51bGxwdHIsICZzaG91bGRJbnRlcnJ1cHRTY3JpcHRCZWZvcmVUaW1lb3V0LCBudWxs
cHRyLCBudWxscHRyLCBudWxscHRyLCBudWxscHRyIH07CiAKIC8qIFNvdXJjZSBmb3IgSlNHbG9i
YWxPYmplY3QubHV0LmgKIEBiZWdpbiBnbG9iYWxPYmplY3RUYWJsZQpAQCAtMzE3LDYgKzMxOSw3
IEBAIHZvaWQgSlNHbG9iYWxPYmplY3Q6OmluaXQoVk0mIHZtKQogICAgIG1fb3V0T2ZCYW5kQXJn
dW1lbnRzU3RydWN0dXJlLnNldCh2bSwgdGhpcywgQ2xvbmVkQXJndW1lbnRzOjpjcmVhdGVTdHJ1
Y3R1cmUodm0sIHRoaXMsIG1fb2JqZWN0UHJvdG90eXBlLmdldCgpKSk7CiAgICAgbV9jYWxsYmFj
a0NvbnN0cnVjdG9yU3RydWN0dXJlLnNldCh2bSwgdGhpcywgSlNDYWxsYmFja0NvbnN0cnVjdG9y
OjpjcmVhdGVTdHJ1Y3R1cmUodm0sIHRoaXMsIG1fb2JqZWN0UHJvdG90eXBlLmdldCgpKSk7CiAg
ICAgbV9jYWxsYmFja09iamVjdFN0cnVjdHVyZS5zZXQodm0sIHRoaXMsIEpTQ2FsbGJhY2tPYmpl
Y3Q8SlNEZXN0cnVjdGlibGVPYmplY3Q+OjpjcmVhdGVTdHJ1Y3R1cmUodm0sIHRoaXMsIG1fb2Jq
ZWN0UHJvdG90eXBlLmdldCgpKSk7CisKICNpZiBKU0NfT0JKQ19BUElfRU5BQkxFRAogICAgIG1f
b2JqY0NhbGxiYWNrRnVuY3Rpb25TdHJ1Y3R1cmUuc2V0KHZtLCB0aGlzLCBPYmpDQ2FsbGJhY2tG
dW5jdGlvbjo6Y3JlYXRlU3RydWN0dXJlKHZtLCB0aGlzLCBtX2Z1bmN0aW9uUHJvdG90eXBlLmdl
dCgpKSk7CiAgICAgbV9vYmpjV3JhcHBlck9iamVjdFN0cnVjdHVyZS5zZXQodm0sIHRoaXMsIEpT
Q2FsbGJhY2tPYmplY3Q8SlNBUElXcmFwcGVyT2JqZWN0Pjo6Y3JlYXRlU3RydWN0dXJlKHZtLCB0
aGlzLCBtX29iamVjdFByb3RvdHlwZS5nZXQoKSkpOwpAQCAtMzM5LDYgKzM0Miw4IEBAIHZvaWQg
SlNHbG9iYWxPYmplY3Q6OmluaXQoVk0mIHZtKQogICAgIG1fcmVnRXhwU3RydWN0dXJlLnNldCh2
bSwgdGhpcywgUmVnRXhwT2JqZWN0OjpjcmVhdGVTdHJ1Y3R1cmUodm0sIHRoaXMsIG1fcmVnRXhw
UHJvdG90eXBlLmdldCgpKSk7CiAgICAgbV9yZWdFeHBNYXRjaGVzQXJyYXlTdHJ1Y3R1cmUuc2V0
KHZtLCB0aGlzLCBjcmVhdGVSZWdFeHBNYXRjaGVzQXJyYXlTdHJ1Y3R1cmUodm0sICp0aGlzKSk7
CiAKKyAgICBtX21vZHVsZVJlY29yZFN0cnVjdHVyZS5zZXQodm0sIHRoaXMsIEpTTW9kdWxlUmVj
b3JkOjpjcmVhdGVTdHJ1Y3R1cmUodm0sIHRoaXMsIG1fb2JqZWN0UHJvdG90eXBlLmdldCgpKSk7
CisgICAgCiAjaWYgRU5BQkxFKFdFQkFTU0VNQkxZKQogICAgIG1fd2FzbU1vZHVsZVN0cnVjdHVy
ZS5zZXQodm0sIHRoaXMsIEpTV0FTTU1vZHVsZTo6Y3JlYXRlU3RydWN0dXJlKHZtLCB0aGlzKSk7
CiAjZW5kaWYKQEAgLTQzNiw3ICs0NDEsNyBAQCBwdXREaXJlY3RXaXRob3V0VHJhbnNpdGlvbih2
bSwgdm0ucHJvcGVydHlOYW1lcy0+IGpzTmFtZSwgbG93ZXJOYW1lICMjIENvbnN0cnVjdAogICAg
IHB1dERpcmVjdFdpdGhvdXRUcmFuc2l0aW9uKHZtLCB2bS5wcm9wZXJ0eU5hbWVzLT5KU09OLCBK
U09OT2JqZWN0OjpjcmVhdGUodm0sIEpTT05PYmplY3Q6OmNyZWF0ZVN0cnVjdHVyZSh2bSwgdGhp
cywgbV9vYmplY3RQcm90b3R5cGUuZ2V0KCkpKSwgRG9udEVudW0pOwogICAgIHB1dERpcmVjdFdp
dGhvdXRUcmFuc2l0aW9uKHZtLCB2bS5wcm9wZXJ0eU5hbWVzLT5NYXRoLCBNYXRoT2JqZWN0Ojpj
cmVhdGUodm0sIHRoaXMsIE1hdGhPYmplY3Q6OmNyZWF0ZVN0cnVjdHVyZSh2bSwgdGhpcywgbV9v
YmplY3RQcm90b3R5cGUuZ2V0KCkpKSwgRG9udEVudW0pOwogICAgIHB1dERpcmVjdFdpdGhvdXRU
cmFuc2l0aW9uKHZtLCB2bS5wcm9wZXJ0eU5hbWVzLT5SZWZsZWN0LCBSZWZsZWN0T2JqZWN0Ojpj
cmVhdGUodm0sIHRoaXMsIFJlZmxlY3RPYmplY3Q6OmNyZWF0ZVN0cnVjdHVyZSh2bSwgdGhpcywg
bV9vYmplY3RQcm90b3R5cGUuZ2V0KCkpKSwgRG9udEVudW0pOwotICAgIAorCiAgICAgc3RkOjph
cnJheTxJbnRlcm5hbEZ1bmN0aW9uKiwgTlVNQkVSX09GX1RZUEVEX0FSUkFZX1RZUEVTPiB0eXBl
ZEFycmF5Q29uc3RydWN0b3JzOwogICAgIHR5cGVkQXJyYXlDb25zdHJ1Y3RvcnNbdG9JbmRleChU
eXBlSW50OCldID0gSlNJbnQ4QXJyYXlDb25zdHJ1Y3Rvcjo6Y3JlYXRlKHZtLCBKU0ludDhBcnJh
eUNvbnN0cnVjdG9yOjpjcmVhdGVTdHJ1Y3R1cmUodm0sIHRoaXMsIG1fZnVuY3Rpb25Qcm90b3R5
cGUuZ2V0KCkpLCBtX3R5cGVkQXJyYXlzW3RvSW5kZXgoVHlwZUludDgpXS5wcm90b3R5cGUuZ2V0
KCksIEFTQ0lJTGl0ZXJhbCgiSW50OEFycmF5IikpOwogICAgIHR5cGVkQXJyYXlDb25zdHJ1Y3Rv
cnNbdG9JbmRleChUeXBlSW50MTYpXSA9IEpTSW50MTZBcnJheUNvbnN0cnVjdG9yOjpjcmVhdGUo
dm0sIEpTSW50MTZBcnJheUNvbnN0cnVjdG9yOjpjcmVhdGVTdHJ1Y3R1cmUodm0sIHRoaXMsIG1f
ZnVuY3Rpb25Qcm90b3R5cGUuZ2V0KCkpLCBtX3R5cGVkQXJyYXlzW3RvSW5kZXgoVHlwZUludDE2
KV0ucHJvdG90eXBlLmdldCgpLCBBU0NJSUxpdGVyYWwoIkludDE2QXJyYXkiKSk7CkBAIC00NTMs
NyArNDU4LDExIEBAIHB1dERpcmVjdFdpdGhvdXRUcmFuc2l0aW9uKHZtLCB2bS5wcm9wZXJ0eU5h
bWVzLT4ganNOYW1lLCBsb3dlck5hbWUgIyMgQ29uc3RydWN0CiAgICAgICAgIG1fdHlwZWRBcnJh
eXNbdHlwZWRBcnJheUluZGV4XS5wcm90b3R5cGUtPnB1dERpcmVjdFdpdGhvdXRUcmFuc2l0aW9u
KHZtLCB2bS5wcm9wZXJ0eU5hbWVzLT5jb25zdHJ1Y3RvciwgdHlwZWRBcnJheUNvbnN0cnVjdG9y
c1t0eXBlZEFycmF5SW5kZXhdLCBEb250RW51bSk7CiAgICAgICAgIHB1dERpcmVjdFdpdGhvdXRU
cmFuc2l0aW9uKHZtLCBJZGVudGlmaWVyOjpmcm9tU3RyaW5nKGV4ZWMsIHR5cGVkQXJyYXlDb25z
dHJ1Y3RvcnNbdHlwZWRBcnJheUluZGV4XS0+bmFtZShleGVjKSksIHR5cGVkQXJyYXlDb25zdHJ1
Y3RvcnNbdHlwZWRBcnJheUluZGV4XSwgRG9udEVudW0pOwogICAgIH0KLSAgICAKKworICAgIG1f
bW9kdWxlTG9hZGVyLnNldCh2bSwgdGhpcywgTW9kdWxlTG9hZGVyT2JqZWN0OjpjcmVhdGUodm0s
IHRoaXMsIE1vZHVsZUxvYWRlck9iamVjdDo6Y3JlYXRlU3RydWN0dXJlKHZtLCB0aGlzLCBtX29i
amVjdFByb3RvdHlwZS5nZXQoKSkpKTsKKyAgICBpZiAoT3B0aW9uczo6ZXhwb3NlSW50ZXJuYWxN
b2R1bGVMb2FkZXIoKSkKKyAgICAgICAgcHV0RGlyZWN0V2l0aG91dFRyYW5zaXRpb24odm0sIHZt
LnByb3BlcnR5TmFtZXMtPkxvYWRlciwgbV9tb2R1bGVMb2FkZXIuZ2V0KCksIERvbnRFbnVtKTsK
KwogICAgIEpTRnVuY3Rpb24qIGJ1aWx0aW5Mb2cgPSBKU0Z1bmN0aW9uOjpjcmVhdGUodm0sIHRo
aXMsIDEsIHZtLnByb3BlcnR5TmFtZXMtPmVtcHR5SWRlbnRpZmllci5zdHJpbmcoKSwgZ2xvYmFs
RnVuY0J1aWx0aW5Mb2cpOwogCiAgICAgSlNGdW5jdGlvbiogcHJpdmF0ZUZ1bmNBYnMgPSBKU0Z1
bmN0aW9uOjpjcmVhdGUodm0sIHRoaXMsIDAsIFN0cmluZygpLCBtYXRoUHJvdG9GdW5jQWJzLCBB
YnNJbnRyaW5zaWMpOwpAQCAtNTA1LDYgKzUxNCw3IEBAIHB1dERpcmVjdFdpdGhvdXRUcmFuc2l0
aW9uKHZtLCB2bS5wcm9wZXJ0eU5hbWVzLT4ganNOYW1lLCBsb3dlck5hbWUgIyMgQ29uc3RydWN0
CiAgICAgICAgIEdsb2JhbFByb3BlcnR5SW5mbyh2bS5wcm9wZXJ0eU5hbWVzLT5idWlsdGluTmFt
ZXMoKS5wcm9taXNlUmVzb2x2ZVRoZW5hYmxlSm9iUHJpdmF0ZU5hbWUoKSwgSlNGdW5jdGlvbjo6
Y3JlYXRlQnVpbHRpbkZ1bmN0aW9uKHZtLCBvcGVyYXRpb25zUHJvbWlzZVByb21pc2VSZXNvbHZl
VGhlbmFibGVKb2JDb2RlR2VuZXJhdG9yKHZtKSwgdGhpcyksIERvbnRFbnVtIHwgRG9udERlbGV0
ZSB8IFJlYWRPbmx5KSwKICAgICAgICAgR2xvYmFsUHJvcGVydHlJbmZvKHZtLnByb3BlcnR5TmFt
ZXMtPmJ1aWx0aW5OYW1lcygpLm5ld1Byb21pc2VEZWZlcnJlZFByaXZhdGVOYW1lKCksIG1fbmV3
UHJvbWlzZURlZmVycmVkRnVuY3Rpb24uZ2V0KCksIERvbnRFbnVtIHwgRG9udERlbGV0ZSB8IFJl
YWRPbmx5KSwKICAgICAgICAgR2xvYmFsUHJvcGVydHlJbmZvKHZtLnByb3BlcnR5TmFtZXMtPmJ1
aWx0aW5OYW1lcygpLkluc3BlY3Rvckluc3RydW1lbnRhdGlvblByaXZhdGVOYW1lKCksIEluc3Bl
Y3Rvckluc3RydW1lbnRhdGlvbk9iamVjdDo6Y3JlYXRlKHZtLCB0aGlzLCBJbnNwZWN0b3JJbnN0
cnVtZW50YXRpb25PYmplY3Q6OmNyZWF0ZVN0cnVjdHVyZSh2bSwgdGhpcywgbV9vYmplY3RQcm90
b3R5cGUuZ2V0KCkpKSwgRG9udEVudW0gfCBEb250RGVsZXRlIHwgUmVhZE9ubHkpLAorICAgICAg
ICBHbG9iYWxQcm9wZXJ0eUluZm8odm0ucHJvcGVydHlOYW1lcy0+TWFwUHJpdmF0ZU5hbWUsIG1h
cENvbnN0cnVjdG9yLCBEb250RW51bSB8IERvbnREZWxldGUgfCBSZWFkT25seSksCiAgICAgfTsK
ICAgICBhZGRTdGF0aWNHbG9iYWxzKHN0YXRpY0dsb2JhbHMsIFdURl9BUlJBWV9MRU5HVEgoc3Rh
dGljR2xvYmFscykpOwogICAgIApAQCAtNzYwLDYgKzc3MCw3IEBAIHZvaWQgSlNHbG9iYWxPYmpl
Y3Q6OnZpc2l0Q2hpbGRyZW4oSlNDZWxsKiBjZWxsLCBTbG90VmlzaXRvciYgdmlzaXRvcikKICAg
ICB2aXNpdG9yLmFwcGVuZCgmdGhpc09iamVjdC0+bV9pbml0aWFsaXplUHJvbWlzZUZ1bmN0aW9u
KTsKICAgICB2aXNpdG9yLmFwcGVuZCgmdGhpc09iamVjdC0+bV9uZXdQcm9taXNlRGVmZXJyZWRG
dW5jdGlvbik7CiAgICAgdmlzaXRvci5hcHBlbmQoJnRoaXNPYmplY3QtPm1fdGhyb3dUeXBlRXJy
b3JHZXR0ZXJTZXR0ZXIpOworICAgIHZpc2l0b3IuYXBwZW5kKCZ0aGlzT2JqZWN0LT5tX21vZHVs
ZUxvYWRlcik7CiAKICAgICB2aXNpdG9yLmFwcGVuZCgmdGhpc09iamVjdC0+bV9vYmplY3RQcm90
b3R5cGUpOwogICAgIHZpc2l0b3IuYXBwZW5kKCZ0aGlzT2JqZWN0LT5tX2Z1bmN0aW9uUHJvdG90
eXBlKTsKQEAgLTc5Nyw2ICs4MDgsNyBAQCB2b2lkIEpTR2xvYmFsT2JqZWN0Ojp2aXNpdENoaWxk
cmVuKEpTQ2VsbCogY2VsbCwgU2xvdFZpc2l0b3ImIHZpc2l0b3IpCiAgICAgdmlzaXRvci5hcHBl
bmQoJnRoaXNPYmplY3QtPm1fc3ltYm9sT2JqZWN0U3RydWN0dXJlKTsKICAgICB2aXNpdG9yLmFw
cGVuZCgmdGhpc09iamVjdC0+bV9yZWdFeHBTdHJ1Y3R1cmUpOwogICAgIHZpc2l0b3IuYXBwZW5k
KCZ0aGlzT2JqZWN0LT5tX3JlZ0V4cE1hdGNoZXNBcnJheVN0cnVjdHVyZSk7CisgICAgdmlzaXRv
ci5hcHBlbmQoJnRoaXNPYmplY3QtPm1fbW9kdWxlUmVjb3JkU3RydWN0dXJlKTsKICAgICB2aXNp
dG9yLmFwcGVuZCgmdGhpc09iamVjdC0+bV9jb25zb2xlU3RydWN0dXJlKTsKICAgICB2aXNpdG9y
LmFwcGVuZCgmdGhpc09iamVjdC0+bV9kb2xsYXJWTVN0cnVjdHVyZSk7CiAgICAgdmlzaXRvci5h
cHBlbmQoJnRoaXNPYmplY3QtPm1faW50ZXJuYWxGdW5jdGlvblN0cnVjdHVyZSk7CmRpZmYgLS1n
aXQgYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9KU0dsb2JhbE9iamVjdC5oIGIvU291
cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvSlNHbG9iYWxPYmplY3QuaAppbmRleCBhNmNkYzMy
MmQxY2M5MDIwZjkxNjhjN2RlNjg1ZWQxZjU2ZTE0NjM1Li5hZGJkMjZlNjYxNzM4N2ZkODhmMzc0
OGNkZWRlMDdiOWI3NDc3NzUyIDEwMDY0NAotLS0gYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVu
dGltZS9KU0dsb2JhbE9iamVjdC5oCisrKyBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1l
L0pTR2xvYmFsT2JqZWN0LmgKQEAgLTcwLDExICs3MCwxNCBAQCBjbGFzcyBHZXR0ZXJTZXR0ZXI7
CiBjbGFzcyBHbG9iYWxDb2RlQmxvY2s7CiBjbGFzcyBJbnB1dEN1cnNvcjsKIGNsYXNzIEpTR2xv
YmFsT2JqZWN0RGVidWdnYWJsZTsKK2NsYXNzIEpTUHJvbWlzZTsKIGNsYXNzIEpTUHJvbWlzZUNv
bnN0cnVjdG9yOwogY2xhc3MgSlNQcm9taXNlUHJvdG90eXBlOworY2xhc3MgSlNJbnRlcm5hbFBy
b21pc2U7CiBjbGFzcyBKU1N0YWNrOwogY2xhc3MgTExJbnRPZmZzZXRzRXh0cmFjdG9yOwogY2xh
c3MgTWljcm90YXNrOworY2xhc3MgTW9kdWxlTG9hZGVyT2JqZWN0OwogY2xhc3MgTmF0aXZlRXJy
b3JDb25zdHJ1Y3RvcjsKIGNsYXNzIE9iamVjdENvbnN0cnVjdG9yOwogY2xhc3MgUHJvZ3JhbUNv
ZGVCbG9jazsKQEAgLTE1MSw2ICsxNTQsMTggQEAgc3RydWN0IEdsb2JhbE9iamVjdE1ldGhvZFRh
YmxlIHsKIAogICAgIHR5cGVkZWYgYm9vbCAoKlNob3VsZEludGVycnVwdFNjcmlwdEJlZm9yZVRp
bWVvdXRQdHIpKGNvbnN0IEpTR2xvYmFsT2JqZWN0Kik7CiAgICAgU2hvdWxkSW50ZXJydXB0U2Ny
aXB0QmVmb3JlVGltZW91dFB0ciBzaG91bGRJbnRlcnJ1cHRTY3JpcHRCZWZvcmVUaW1lb3V0Owor
CisgICAgdHlwZWRlZiBKU0ludGVybmFsUHJvbWlzZSogKCpMb2FkZXJSZXNvbHZlUHRyKShKU0ds
b2JhbE9iamVjdCosIEV4ZWNTdGF0ZSosIEpTVmFsdWUsIEpTVmFsdWUpOworICAgIExvYWRlclJl
c29sdmVQdHIgbG9hZGVyUmVzb2x2ZTsKKworICAgIHR5cGVkZWYgSlNJbnRlcm5hbFByb21pc2Uq
ICgqTG9hZGVyRmV0Y2hQdHIpKEpTR2xvYmFsT2JqZWN0KiwgRXhlY1N0YXRlKiwgSlNWYWx1ZSk7
CisgICAgTG9hZGVyRmV0Y2hQdHIgbG9hZGVyRmV0Y2g7CisKKyAgICB0eXBlZGVmIEpTSW50ZXJu
YWxQcm9taXNlKiAoKkxvYWRlclRyYW5zbGF0ZVB0cikoSlNHbG9iYWxPYmplY3QqLCBFeGVjU3Rh
dGUqLCBKU1ZhbHVlLCBKU1ZhbHVlKTsKKyAgICBMb2FkZXJUcmFuc2xhdGVQdHIgbG9hZGVyVHJh
bnNsYXRlOworCisgICAgdHlwZWRlZiBKU0ludGVybmFsUHJvbWlzZSogKCpMb2FkZXJJbnN0YW50
aWF0ZVB0cikoSlNHbG9iYWxPYmplY3QqLCBFeGVjU3RhdGUqLCBKU1ZhbHVlLCBKU1ZhbHVlKTsK
KyAgICBMb2FkZXJJbnN0YW50aWF0ZVB0ciBsb2FkZXJJbnN0YW50aWF0ZTsKIH07CiAKIGNsYXNz
IEpTR2xvYmFsT2JqZWN0IDogcHVibGljIEpTU2VnbWVudGVkVmFyaWFibGVPYmplY3QgewpAQCAt
MjAwLDYgKzIxNSw4IEBAIGNsYXNzIEpTR2xvYmFsT2JqZWN0IDogcHVibGljIEpTU2VnbWVudGVk
VmFyaWFibGVPYmplY3QgewogICAgIFdyaXRlQmFycmllcjxKU0Z1bmN0aW9uPiBtX25ld1Byb21p
c2VEZWZlcnJlZEZ1bmN0aW9uOwogICAgIFdyaXRlQmFycmllcjxHZXR0ZXJTZXR0ZXI+IG1fdGhy
b3dUeXBlRXJyb3JHZXR0ZXJTZXR0ZXI7CiAKKyAgICBXcml0ZUJhcnJpZXI8TW9kdWxlTG9hZGVy
T2JqZWN0PiBtX21vZHVsZUxvYWRlcjsKKwogICAgIFdyaXRlQmFycmllcjxPYmplY3RQcm90b3R5
cGU+IG1fb2JqZWN0UHJvdG90eXBlOwogICAgIFdyaXRlQmFycmllcjxGdW5jdGlvblByb3RvdHlw
ZT4gbV9mdW5jdGlvblByb3RvdHlwZTsKICAgICBXcml0ZUJhcnJpZXI8QXJyYXlQcm90b3R5cGU+
IG1fYXJyYXlQcm90b3R5cGU7CkBAIC0yNDEsNiArMjU4LDcgQEAgY2xhc3MgSlNHbG9iYWxPYmpl
Y3QgOiBwdWJsaWMgSlNTZWdtZW50ZWRWYXJpYWJsZU9iamVjdCB7CiAgICAgV3JpdGVCYXJyaWVy
PFN0cnVjdHVyZT4gbV9pbnRlcm5hbEZ1bmN0aW9uU3RydWN0dXJlOwogICAgIFdyaXRlQmFycmll
cjxTdHJ1Y3R1cmU+IG1faXRlcmF0b3JSZXN1bHRTdHJ1Y3R1cmU7CiAgICAgV3JpdGVCYXJyaWVy
PFN0cnVjdHVyZT4gbV9yZWdFeHBNYXRjaGVzQXJyYXlTdHJ1Y3R1cmU7CisgICAgV3JpdGVCYXJy
aWVyPFN0cnVjdHVyZT4gbV9tb2R1bGVSZWNvcmRTdHJ1Y3R1cmU7CiAjaWYgRU5BQkxFKFdFQkFT
U0VNQkxZKQogICAgIFdyaXRlQmFycmllcjxTdHJ1Y3R1cmU+IG1fd2FzbU1vZHVsZVN0cnVjdHVy
ZTsKICNlbmRpZgpAQCAtNDA1LDYgKzQyMyw4IEBAIGNsYXNzIEpTR2xvYmFsT2JqZWN0IDogcHVi
bGljIEpTU2VnbWVudGVkVmFyaWFibGVPYmplY3QgewogICAgICAgICByZXR1cm4gbV90aHJvd1R5
cGVFcnJvckdldHRlclNldHRlci5nZXQoKTsKICAgICB9CiAKKyAgICBNb2R1bGVMb2FkZXJPYmpl
Y3QqIG1vZHVsZUxvYWRlcigpIGNvbnN0IHsgcmV0dXJuIG1fbW9kdWxlTG9hZGVyLmdldCgpOyB9
CisKICAgICBPYmplY3RQcm90b3R5cGUqIG9iamVjdFByb3RvdHlwZSgpIGNvbnN0IHsgcmV0dXJu
IG1fb2JqZWN0UHJvdG90eXBlLmdldCgpOyB9CiAgICAgRnVuY3Rpb25Qcm90b3R5cGUqIGZ1bmN0
aW9uUHJvdG90eXBlKCkgY29uc3QgeyByZXR1cm4gbV9mdW5jdGlvblByb3RvdHlwZS5nZXQoKTsg
fQogICAgIEFycmF5UHJvdG90eXBlKiBhcnJheVByb3RvdHlwZSgpIGNvbnN0IHsgcmV0dXJuIG1f
YXJyYXlQcm90b3R5cGUuZ2V0KCk7IH0KQEAgLTQ3Myw2ICs0OTMsNyBAQCBjbGFzcyBKU0dsb2Jh
bE9iamVjdCA6IHB1YmxpYyBKU1NlZ21lbnRlZFZhcmlhYmxlT2JqZWN0IHsKICAgICBTdHJ1Y3R1
cmUqIGl0ZXJhdG9yUmVzdWx0U3RydWN0dXJlKCkgY29uc3QgeyByZXR1cm4gbV9pdGVyYXRvclJl
c3VsdFN0cnVjdHVyZS5nZXQoKTsgfQogICAgIHN0YXRpYyBwdHJkaWZmX3QgaXRlcmF0b3JSZXN1
bHRTdHJ1Y3R1cmVPZmZzZXQoKSB7IHJldHVybiBPQkpFQ1RfT0ZGU0VUT0YoSlNHbG9iYWxPYmpl
Y3QsIG1faXRlcmF0b3JSZXN1bHRTdHJ1Y3R1cmUpOyB9CiAgICAgU3RydWN0dXJlKiByZWdFeHBN
YXRjaGVzQXJyYXlTdHJ1Y3R1cmUoKSBjb25zdCB7IHJldHVybiBtX3JlZ0V4cE1hdGNoZXNBcnJh
eVN0cnVjdHVyZS5nZXQoKTsgfQorICAgIFN0cnVjdHVyZSogbW9kdWxlUmVjb3JkU3RydWN0dXJl
KCkgY29uc3QgeyByZXR1cm4gbV9tb2R1bGVSZWNvcmRTdHJ1Y3R1cmUuZ2V0KCk7IH0KICNpZiBF
TkFCTEUoV0VCQVNTRU1CTFkpCiAgICAgU3RydWN0dXJlKiB3YXNtTW9kdWxlU3RydWN0dXJlKCkg
Y29uc3QgeyByZXR1cm4gbV93YXNtTW9kdWxlU3RydWN0dXJlLmdldCgpOyB9CiAjZW5kaWYKZGlm
ZiAtLWdpdCBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL0pTTW9kdWxlUmVjb3JkLmNw
cCBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL0pTTW9kdWxlUmVjb3JkLmNwcApuZXcg
ZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwLi43ZGUxODYwOTQwY2UxOWNlNTA4YzEyMDI4MmU5NDRmM2NhNDIwNWQ5Ci0tLSAvZGV2
L251bGwKKysrIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvSlNNb2R1bGVSZWNvcmQu
Y3BwCkBAIC0wLDAgKzEsMTEzIEBACisvKgorICogQ29weXJpZ2h0IChDKSAyMDE1IEFwcGxlIElu
Yy4gQWxsIHJpZ2h0cyByZXNlcnZlZC4KKyAqCisgKiBSZWRpc3RyaWJ1dGlvbiBhbmQgdXNlIGlu
IHNvdXJjZSBhbmQgYmluYXJ5IGZvcm1zLCB3aXRoIG9yIHdpdGhvdXQKKyAqIG1vZGlmaWNhdGlv
biwgYXJlIHBlcm1pdHRlZCBwcm92aWRlZCB0aGF0IHRoZSBmb2xsb3dpbmcgY29uZGl0aW9ucwor
ICogYXJlIG1ldDoKKyAqIDEuIFJlZGlzdHJpYnV0aW9ucyBvZiBzb3VyY2UgY29kZSBtdXN0IHJl
dGFpbiB0aGUgYWJvdmUgY29weXJpZ2h0CisgKiAgICBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25k
aXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIuCisgKiAyLiBSZWRpc3RyaWJ1dGlv
bnMgaW4gYmluYXJ5IGZvcm0gbXVzdCByZXByb2R1Y2UgdGhlIGFib3ZlIGNvcHlyaWdodAorICog
ICAgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNj
bGFpbWVyIGluIHRoZQorICogICAgZG9jdW1lbnRhdGlvbiBhbmQvb3Igb3RoZXIgbWF0ZXJpYWxz
IHByb3ZpZGVkIHdpdGggdGhlIGRpc3RyaWJ1dGlvbi4KKyAqCisgKiBUSElTIFNPRlRXQVJFIElT
IFBST1ZJREVEIEJZIEFQUExFIElOQy4gYGBBUyBJUycnIEFORCBBTlkKKyAqIEVYUFJFU1MgT1Ig
SU1QTElFRCBXQVJSQU5USUVTLCBJTkNMVURJTkcsIEJVVCBOT1QgTElNSVRFRCBUTywgVEhFCisg
KiBJTVBMSUVEIFdBUlJBTlRJRVMgT0YgTUVSQ0hBTlRBQklMSVRZIEFORCBGSVRORVNTIEZPUiBB
IFBBUlRJQ1VMQVIKKyAqIFBVUlBPU0UgQVJFIERJU0NMQUlNRUQuICBJTiBOTyBFVkVOVCBTSEFM
TCBBUFBMRSBJTkMuIE9SCisgKiBDT05UUklCVVRPUlMgQkUgTElBQkxFIEZPUiBBTlkgRElSRUNU
LCBJTkRJUkVDVCwgSU5DSURFTlRBTCwgU1BFQ0lBTCwKKyAqIEVYRU1QTEFSWSwgT1IgQ09OU0VR
VUVOVElBTCBEQU1BR0VTIChJTkNMVURJTkcsIEJVVCBOT1QgTElNSVRFRCBUTywKKyAqIFBST0NV
UkVNRU5UIE9GIFNVQlNUSVRVVEUgR09PRFMgT1IgU0VSVklDRVM7IExPU1MgT0YgVVNFLCBEQVRB
LCBPUgorICogUFJPRklUUzsgT1IgQlVTSU5FU1MgSU5URVJSVVBUSU9OKSBIT1dFVkVSIENBVVNF
RCBBTkQgT04gQU5ZIFRIRU9SWQorICogT0YgTElBQklMSVRZLCBXSEVUSEVSIElOIENPTlRSQUNU
LCBTVFJJQ1QgTElBQklMSVRZLCBPUiBUT1JUCisgKiAoSU5DTFVESU5HIE5FR0xJR0VOQ0UgT1Ig
T1RIRVJXSVNFKSBBUklTSU5HIElOIEFOWSBXQVkgT1VUIE9GIFRIRSBVU0UKKyAqIE9GIFRISVMg
U09GVFdBUkUsIEVWRU4gSUYgQURWSVNFRCBPRiBUSEUgUE9TU0lCSUxJVFkgT0YgU1VDSCBEQU1B
R0UuIAorICovCisKKyNpbmNsdWRlICJjb25maWcuaCIKKyNpbmNsdWRlICJKU01vZHVsZVJlY29y
ZC5oIgorCisjaW5jbHVkZSAiSWRlbnRpZmllcklubGluZXMuaCIKKyNpbmNsdWRlICJKU0NKU1Zh
bHVlSW5saW5lcy5oIgorI2luY2x1ZGUgIkpTQ2VsbElubGluZXMuaCIKKyNpbmNsdWRlICJTdHJ1
Y3R1cmVJbmxpbmVzLmgiCisKK25hbWVzcGFjZSBKU0MgeworCitjb25zdCBDbGFzc0luZm8gSlNN
b2R1bGVSZWNvcmQ6OnNfaW5mbyA9IHsgIk1vZHVsZVJlY29yZCIsICZCYXNlOjpzX2luZm8sIDAs
IENSRUFURV9NRVRIT0RfVEFCTEUoSlNNb2R1bGVSZWNvcmQpIH07CisKK3ZvaWQgSlNNb2R1bGVS
ZWNvcmQ6OmRlc3Ryb3koSlNDZWxsKiBjZWxsKQoreworICAgIEpTTW9kdWxlUmVjb3JkKiB0aGlz
T2JqZWN0ID0ganNDYXN0PEpTTW9kdWxlUmVjb3JkKj4oY2VsbCk7CisgICAgdGhpc09iamVjdC0+
SlNNb2R1bGVSZWNvcmQ6On5KU01vZHVsZVJlY29yZCgpOworfQorCisKK3ZvaWQgSlNNb2R1bGVS
ZWNvcmQ6OmZpbmlzaENyZWF0aW9uKFZNJiB2bSkKK3sKKyAgICBCYXNlOjpmaW5pc2hDcmVhdGlv
bih2bSk7CisgICAgQVNTRVJUKGluaGVyaXRzKGluZm8oKSkpOworICAgIHB1dERpcmVjdCh2bSwg
SWRlbnRpZmllcjo6ZnJvbVN0cmluZygmdm0sIEFTQ0lJTGl0ZXJhbCgicmVnaXN0cnlFbnRyeSIp
KSwganNVbmRlZmluZWQoKSk7Cit9CisKK2F1dG8gSlNNb2R1bGVSZWNvcmQ6OkV4cG9ydEVudHJ5
OjpjcmVhdGVMb2NhbChjb25zdCBJZGVudGlmaWVyJiBleHBvcnROYW1lLCBjb25zdCBJZGVudGlm
aWVyJiBsb2NhbE5hbWUsIGNvbnN0IFZhcmlhYmxlRW52aXJvbm1lbnRFbnRyeSYgdmFyaWFibGUp
IC0+IEV4cG9ydEVudHJ5Cit7CisgICAgcmV0dXJuIEV4cG9ydEVudHJ5IHsgVHlwZTo6TG9jYWws
IGV4cG9ydE5hbWUsIElkZW50aWZpZXIoKSwgSWRlbnRpZmllcigpLCBsb2NhbE5hbWUsIHZhcmlh
YmxlIH07Cit9CisKK2F1dG8gSlNNb2R1bGVSZWNvcmQ6OkV4cG9ydEVudHJ5OjpjcmVhdGVOYW1l
c3BhY2UoY29uc3QgSWRlbnRpZmllciYgZXhwb3J0TmFtZSwgY29uc3QgSWRlbnRpZmllciYgbW9k
dWxlTmFtZSkgLT4gRXhwb3J0RW50cnkKK3sKKyAgICByZXR1cm4gRXhwb3J0RW50cnkgeyBUeXBl
OjpOYW1lc3BhY2UsIGV4cG9ydE5hbWUsIG1vZHVsZU5hbWUsIElkZW50aWZpZXIoKSwgSWRlbnRp
ZmllcigpLCBWYXJpYWJsZUVudmlyb25tZW50RW50cnkoKSB9OworfQorCithdXRvIEpTTW9kdWxl
UmVjb3JkOjpFeHBvcnRFbnRyeTo6Y3JlYXRlSW5kaXJlY3QoY29uc3QgSWRlbnRpZmllciYgZXhw
b3J0TmFtZSwgY29uc3QgSWRlbnRpZmllciYgaW1wb3J0TmFtZSwgY29uc3QgSWRlbnRpZmllciYg
bW9kdWxlTmFtZSkgLT4gRXhwb3J0RW50cnkKK3sKKyAgICByZXR1cm4gRXhwb3J0RW50cnkgeyBU
eXBlOjpJbmRpcmVjdCwgZXhwb3J0TmFtZSwgbW9kdWxlTmFtZSwgaW1wb3J0TmFtZSwgSWRlbnRp
ZmllcigpLCBWYXJpYWJsZUVudmlyb25tZW50RW50cnkoKSB9OworfQorCitzdGF0aWMgU3RyaW5n
IHByaW50YWJsZU5hbWUoY29uc3QgUmVmUHRyPFVuaXF1ZWRTdHJpbmdJbXBsPiYgdWlkKQorewor
ICAgIGlmICh1aWQtPmlzU3ltYm9sKCkpCisgICAgICAgIHJldHVybiB1aWQuZ2V0KCk7CisgICAg
cmV0dXJuIFdURjo6bWFrZVN0cmluZygiJyIsIFN0cmluZyh1aWQuZ2V0KCkpLCAiJyIpOworfQor
CitzdGF0aWMgU3RyaW5nIHByaW50YWJsZU5hbWUoY29uc3QgSWRlbnRpZmllciYgaWRlbnQpCit7
CisgICAgcmV0dXJuIHByaW50YWJsZU5hbWUoaWRlbnQuaW1wbCgpKTsKK30KKworCit2b2lkIEpT
TW9kdWxlUmVjb3JkOjpkdW1wKCkKK3sKKyAgICBkYXRhTG9nKCJcbkFuYWx5emluZyBNb2R1bGVS
ZWNvcmRcbiIpOworCisgICAgZGF0YUxvZygiICAgIERlcGVuZGVuY2llczogIiwgbV9yZXF1ZXN0
ZWRNb2R1bGVzLnNpemUoKSwgIiBtb2R1bGVzXG4iKTsKKyAgICBmb3IgKGNvbnN0IGF1dG8mIG1v
ZHVsZU5hbWUgOiBtX3JlcXVlc3RlZE1vZHVsZXMpCisgICAgICAgIGRhdGFMb2coIiAgICAgIG1v
ZHVsZSgiLCBwcmludGFibGVOYW1lKG1vZHVsZU5hbWUpLCAiKVxuIik7CisKKyAgICBkYXRhTG9n
KCIgICAgSW1wb3J0OiAiLCBtX2ltcG9ydEVudHJpZXMuc2l6ZSgpLCAiIGVudHJpZXNcbiIpOwor
ICAgIGZvciAoY29uc3QgYXV0byYgcGFpciA6IG1faW1wb3J0RW50cmllcykKKyAgICAgICAgZGF0
YUxvZygiICAgICAgaW1wb3J0KCIsIHByaW50YWJsZU5hbWUocGFpci52YWx1ZS5pbXBvcnROYW1l
KSwgIiksIGxvY2FsKCIsIHByaW50YWJsZU5hbWUocGFpci52YWx1ZS5sb2NhbE5hbWUpLCAiKSwg
bW9kdWxlKCIsIHByaW50YWJsZU5hbWUocGFpci52YWx1ZS5tb2R1bGVSZXF1ZXN0KSwgIilcbiIp
OworCisgICAgZGF0YUxvZygiICAgIEV4cG9ydDogIiwgbV9leHBvcnRFbnRyaWVzLnNpemUoKSwg
IiBlbnRyaWVzXG4iKTsKKyAgICBmb3IgKGNvbnN0IGF1dG8mIHBhaXIgOiBtX2V4cG9ydEVudHJp
ZXMpIHsKKyAgICAgICAgY29uc3QgRXhwb3J0RW50cnkmIGVudHJ5ID0gcGFpci52YWx1ZTsKKyAg
ICAgICAgc3dpdGNoIChlbnRyeS50eXBlKSB7CisgICAgICAgIGNhc2UgRXhwb3J0RW50cnk6OlR5
cGU6OkxvY2FsOgorICAgICAgICAgICAgZGF0YUxvZygiICAgICAgW0xvY2FsXSAiLCAiZXhwb3J0
KCIsIHByaW50YWJsZU5hbWUoZW50cnkuZXhwb3J0TmFtZSksICIpLCBsb2NhbCgiLCBwcmludGFi
bGVOYW1lKGVudHJ5LmxvY2FsTmFtZSksICIpXG4iKTsKKyAgICAgICAgICAgIGJyZWFrOworCisg
ICAgICAgIGNhc2UgRXhwb3J0RW50cnk6OlR5cGU6Ok5hbWVzcGFjZToKKyAgICAgICAgICAgIGRh
dGFMb2coIiAgICAgIFtOYW1lc3BhY2VdICIsICJleHBvcnQoIiwgcHJpbnRhYmxlTmFtZShlbnRy
eS5leHBvcnROYW1lKSwgIiksIG1vZHVsZSgiLCBwcmludGFibGVOYW1lKGVudHJ5Lm1vZHVsZU5h
bWUpLCAiKVxuIik7CisgICAgICAgICAgICBicmVhazsKKworICAgICAgICBjYXNlIEV4cG9ydEVu
dHJ5OjpUeXBlOjpJbmRpcmVjdDoKKyAgICAgICAgICAgIGRhdGFMb2coIiAgICAgIFtJbmRpcmVj
dF0gIiwgImV4cG9ydCgiLCBwcmludGFibGVOYW1lKGVudHJ5LmV4cG9ydE5hbWUpLCAiKSwgaW1w
b3J0KCIsIHByaW50YWJsZU5hbWUoZW50cnkuaW1wb3J0TmFtZSksICIpLCBtb2R1bGUoIiwgcHJp
bnRhYmxlTmFtZShlbnRyeS5tb2R1bGVOYW1lKSwgIilcbiIpOworICAgICAgICAgICAgYnJlYWs7
CisgICAgICAgIH0KKyAgICB9CisgICAgZm9yIChjb25zdCBhdXRvJiBtb2R1bGVOYW1lIDogbV9z
dGFyRXhwb3J0RW50cmllcykKKyAgICAgICAgZGF0YUxvZygiICAgICAgW1N0YXJdIG1vZHVsZSgi
LCBwcmludGFibGVOYW1lKG1vZHVsZU5hbWUuZ2V0KCkpLCAiKVxuIik7Cit9CisKK30gLy8gbmFt
ZXNwYWNlIEpTQwpkaWZmIC0tZ2l0IGEvU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvSlNN
b2R1bGVSZWNvcmQuaCBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL0pTTW9kdWxlUmVj
b3JkLmgKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMC4uOTZlMmZkZjQ1MGU1ZGI4NzI5YzVmY2M1NWZiNzhkMmM0ZjZjOTc4
MQotLS0gL2Rldi9udWxsCisrKyBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL0pTTW9k
dWxlUmVjb3JkLmgKQEAgLTAsMCArMSwxNTcgQEAKKy8qCisgKiBDb3B5cmlnaHQgKEMpIDIwMTUg
QXBwbGUgSW5jLiBBbGwgcmlnaHRzIHJlc2VydmVkLgorICoKKyAqIFJlZGlzdHJpYnV0aW9uIGFu
ZCB1c2UgaW4gc291cmNlIGFuZCBiaW5hcnkgZm9ybXMsIHdpdGggb3Igd2l0aG91dAorICogbW9k
aWZpY2F0aW9uLCBhcmUgcGVybWl0dGVkIHByb3ZpZGVkIHRoYXQgdGhlIGZvbGxvd2luZyBjb25k
aXRpb25zCisgKiBhcmUgbWV0OgorICogMS4gUmVkaXN0cmlidXRpb25zIG9mIHNvdXJjZSBjb2Rl
IG11c3QgcmV0YWluIHRoZSBhYm92ZSBjb3B5cmlnaHQKKyAqICAgIG5vdGljZSwgdGhpcyBsaXN0
IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lci4KKyAqIDIuIFJlZGlz
dHJpYnV0aW9ucyBpbiBiaW5hcnkgZm9ybSBtdXN0IHJlcHJvZHVjZSB0aGUgYWJvdmUgY29weXJp
Z2h0CisgKiAgICBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93
aW5nIGRpc2NsYWltZXIgaW4gdGhlCisgKiAgICBkb2N1bWVudGF0aW9uIGFuZC9vciBvdGhlciBt
YXRlcmlhbHMgcHJvdmlkZWQgd2l0aCB0aGUgZGlzdHJpYnV0aW9uLgorICoKKyAqIFRISVMgU09G
VFdBUkUgSVMgUFJPVklERUQgQlkgQVBQTEUgSU5DLiBgYEFTIElTJycgQU5EIEFOWQorICogRVhQ
UkVTUyBPUiBJTVBMSUVEIFdBUlJBTlRJRVMsIElOQ0xVRElORywgQlVUIE5PVCBMSU1JVEVEIFRP
LCBUSEUKKyAqIElNUExJRUQgV0FSUkFOVElFUyBPRiBNRVJDSEFOVEFCSUxJVFkgQU5EIEZJVE5F
U1MgRk9SIEEgUEFSVElDVUxBUgorICogUFVSUE9TRSBBUkUgRElTQ0xBSU1FRC4gIElOIE5PIEVW
RU5UIFNIQUxMIEFQUExFIElOQy4gT1IKKyAqIENPTlRSSUJVVE9SUyBCRSBMSUFCTEUgRk9SIEFO
WSBESVJFQ1QsIElORElSRUNULCBJTkNJREVOVEFMLCBTUEVDSUFMLAorICogRVhFTVBMQVJZLCBP
UiBDT05TRVFVRU5USUFMIERBTUFHRVMgKElOQ0xVRElORywgQlVUIE5PVCBMSU1JVEVEIFRPLAor
ICogUFJPQ1VSRU1FTlQgT0YgU1VCU1RJVFVURSBHT09EUyBPUiBTRVJWSUNFUzsgTE9TUyBPRiBV
U0UsIERBVEEsIE9SCisgKiBQUk9GSVRTOyBPUiBCVVNJTkVTUyBJTlRFUlJVUFRJT04pIEhPV0VW
RVIgQ0FVU0VEIEFORCBPTiBBTlkgVEhFT1JZCisgKiBPRiBMSUFCSUxJVFksIFdIRVRIRVIgSU4g
Q09OVFJBQ1QsIFNUUklDVCBMSUFCSUxJVFksIE9SIFRPUlQKKyAqIChJTkNMVURJTkcgTkVHTElH
RU5DRSBPUiBPVEhFUldJU0UpIEFSSVNJTkcgSU4gQU5ZIFdBWSBPVVQgT0YgVEhFIFVTRQorICog
T0YgVEhJUyBTT0ZUV0FSRSwgRVZFTiBJRiBBRFZJU0VEIE9GIFRIRSBQT1NTSUJJTElUWSBPRiBT
VUNIIERBTUFHRS4KKyAqLworCisjaWZuZGVmIEpTTW9kdWxlUmVjb3JkX2gKKyNkZWZpbmUgSlNN
b2R1bGVSZWNvcmRfaAorCisjaW5jbHVkZSAiSWRlbnRpZmllci5oIgorI2luY2x1ZGUgIkpTRGVz
dHJ1Y3RpYmxlT2JqZWN0LmgiCisjaW5jbHVkZSAiVmFyaWFibGVFbnZpcm9ubWVudC5oIgorI2lu
Y2x1ZGUgPHd0Zi9IYXNoTWFwLmg+CisjaW5jbHVkZSA8d3RmL0xpc3RIYXNoU2V0Lmg+CisKK25h
bWVzcGFjZSBKU0MgeworCisvLyBCYXNlZCBvbiB0aGUgU291cmNlIFRleHQgTW9kdWxlIFJlY29y
ZAorLy8gaHR0cDovL3d3dy5lY21hLWludGVybmF0aW9uYWwub3JnL2VjbWEtMjYyLzYuMC8jc2Vj
LXNvdXJjZS10ZXh0LW1vZHVsZS1yZWNvcmRzCitjbGFzcyBKU01vZHVsZVJlY29yZCA6IHB1Ymxp
YyBKU0Rlc3RydWN0aWJsZU9iamVjdCB7CitwdWJsaWM6CisgICAgdHlwZWRlZiBKU0Rlc3RydWN0
aWJsZU9iamVjdCBCYXNlOworCisgICAgc3RydWN0IEV4cG9ydEVudHJ5IHsKKyAgICAgICAgZW51
bSBjbGFzcyBUeXBlIHsKKyAgICAgICAgICAgIExvY2FsLAorICAgICAgICAgICAgTmFtZXNwYWNl
LAorICAgICAgICAgICAgSW5kaXJlY3QKKyAgICAgICAgfTsKKworICAgICAgICBzdGF0aWMgRXhw
b3J0RW50cnkgY3JlYXRlTG9jYWwoY29uc3QgSWRlbnRpZmllciYgZXhwb3J0TmFtZSwgY29uc3Qg
SWRlbnRpZmllciYgbG9jYWxOYW1lLCBjb25zdCBWYXJpYWJsZUVudmlyb25tZW50RW50cnkmKTsK
KyAgICAgICAgc3RhdGljIEV4cG9ydEVudHJ5IGNyZWF0ZU5hbWVzcGFjZShjb25zdCBJZGVudGlm
aWVyJiBleHBvcnROYW1lLCBjb25zdCBJZGVudGlmaWVyJiBtb2R1bGVOYW1lKTsKKyAgICAgICAg
c3RhdGljIEV4cG9ydEVudHJ5IGNyZWF0ZUluZGlyZWN0KGNvbnN0IElkZW50aWZpZXImIGV4cG9y
dE5hbWUsIGNvbnN0IElkZW50aWZpZXImIGltcG9ydE5hbWUsIGNvbnN0IElkZW50aWZpZXImIG1v
ZHVsZU5hbWUpOworCisgICAgICAgIFR5cGUgdHlwZTsKKyAgICAgICAgSWRlbnRpZmllciBleHBv
cnROYW1lOworICAgICAgICBJZGVudGlmaWVyIG1vZHVsZU5hbWU7CisgICAgICAgIElkZW50aWZp
ZXIgaW1wb3J0TmFtZTsKKyAgICAgICAgSWRlbnRpZmllciBsb2NhbE5hbWU7CisgICAgICAgIFZh
cmlhYmxlRW52aXJvbm1lbnRFbnRyeSB2YXJpYWJsZTsKKyAgICB9OworCisgICAgc3RydWN0IElt
cG9ydEVudHJ5IHsKKyAgICAgICAgSWRlbnRpZmllciBtb2R1bGVSZXF1ZXN0OworICAgICAgICBJ
ZGVudGlmaWVyIGltcG9ydE5hbWU7CisgICAgICAgIElkZW50aWZpZXIgbG9jYWxOYW1lOworCisg
ICAgICAgIGJvb2wgaXNOYW1lc3BhY2UoVk0mIHZtKSBjb25zdAorICAgICAgICB7CisgICAgICAg
ICAgICByZXR1cm4gaW1wb3J0TmFtZSA9PSB2bS5wcm9wZXJ0eU5hbWVzLT50aW1lc0lkZW50aWZp
ZXI7CisgICAgICAgIH0KKyAgICB9OworCisgICAgdHlwZWRlZiBXVEY6Okxpc3RIYXNoU2V0PFJl
ZlB0cjxVbmlxdWVkU3RyaW5nSW1wbD4sIElkZW50aWZpZXJSZXBIYXNoPiBPcmRlcmVkSWRlbnRp
ZmllclNldDsKKyAgICB0eXBlZGVmIEhhc2hNYXA8UmVmUHRyPFVuaXF1ZWRTdHJpbmdJbXBsPiwg
SW1wb3J0RW50cnksIElkZW50aWZpZXJSZXBIYXNoLCBIYXNoVHJhaXRzPFJlZlB0cjxVbmlxdWVk
U3RyaW5nSW1wbD4+PiBJbXBvcnRNYXA7CisgICAgdHlwZWRlZiBIYXNoTWFwPFJlZlB0cjxVbmlx
dWVkU3RyaW5nSW1wbD4sIEV4cG9ydEVudHJ5LCBJZGVudGlmaWVyUmVwSGFzaCwgSGFzaFRyYWl0
czxSZWZQdHI8VW5pcXVlZFN0cmluZ0ltcGw+Pj4gRXhwb3J0TWFwOworCisgICAgREVDTEFSRV9F
WFBPUlRfSU5GTzsKKworICAgIHN0YXRpYyBTdHJ1Y3R1cmUqIGNyZWF0ZVN0cnVjdHVyZShWTSYg
dm0sIEpTR2xvYmFsT2JqZWN0KiBnbG9iYWxPYmplY3QsIEpTVmFsdWUgcHJvdG90eXBlKQorICAg
IHsKKyAgICAgICAgcmV0dXJuIFN0cnVjdHVyZTo6Y3JlYXRlKHZtLCBnbG9iYWxPYmplY3QsIHBy
b3RvdHlwZSwgVHlwZUluZm8oT2JqZWN0VHlwZSwgU3RydWN0dXJlRmxhZ3MpLCBpbmZvKCkpOwor
ICAgIH0KKworICAgIHN0YXRpYyBKU01vZHVsZVJlY29yZCogY3JlYXRlKFZNJiB2bSwgU3RydWN0
dXJlKiBzdHJ1Y3R1cmUpCisgICAgeworICAgICAgICBKU01vZHVsZVJlY29yZCogaW5zdGFuY2Ug
PSBuZXcgKE5vdE51bGwsIGFsbG9jYXRlQ2VsbDxKU01vZHVsZVJlY29yZD4odm0uaGVhcCkpIEpT
TW9kdWxlUmVjb3JkKHZtLCBzdHJ1Y3R1cmUpOworICAgICAgICBpbnN0YW5jZS0+ZmluaXNoQ3Jl
YXRpb24odm0pOworICAgICAgICByZXR1cm4gaW5zdGFuY2U7CisgICAgfQorCisgICAgc3RhdGlj
IEpTTW9kdWxlUmVjb3JkKiBjcmVhdGUoRXhlY1N0YXRlKiBleGVjLCBTdHJ1Y3R1cmUqIHN0cnVj
dHVyZSkKKyAgICB7CisgICAgICAgIHJldHVybiBjcmVhdGUoZXhlYy0+dm0oKSwgc3RydWN0dXJl
KTsKKyAgICB9CisKKyAgICB2b2lkIGFwcGVuZFJlcXVlc3RlZE1vZHVsZShjb25zdCBJZGVudGlm
aWVyJik7CisgICAgdm9pZCBhZGRTdGFyRXhwb3J0RW50cnkoY29uc3QgSWRlbnRpZmllciYpOwor
ICAgIHZvaWQgYWRkSW1wb3J0RW50cnkoY29uc3QgSW1wb3J0RW50cnkmKTsKKyAgICB2b2lkIGFk
ZEV4cG9ydEVudHJ5KGNvbnN0IEV4cG9ydEVudHJ5Jik7CisKKyAgICBjb25zdCBJbXBvcnRFbnRy
eSYgbG9va1VwSW1wb3J0RW50cnkoY29uc3QgUmVmUHRyPFVuaXF1ZWRTdHJpbmdJbXBsPiYgbG9j
YWxOYW1lKTsKKworICAgIGNvbnN0IE9yZGVyZWRJZGVudGlmaWVyU2V0JiByZXF1ZXN0ZWRNb2R1
bGVzKCkgY29uc3QgeyByZXR1cm4gbV9yZXF1ZXN0ZWRNb2R1bGVzOyB9CisKKyAgICB2b2lkIGR1
bXAoKTsKKworcHJpdmF0ZToKKyAgICBKU01vZHVsZVJlY29yZChWTSYgdm0sIFN0cnVjdHVyZSog
c3RydWN0dXJlKQorICAgICAgICA6IEJhc2Uodm0sIHN0cnVjdHVyZSkKKyAgICB7CisgICAgfQor
CisgICAgdm9pZCBmaW5pc2hDcmVhdGlvbihWTSYpOworCisgICAgc3RhdGljIHZvaWQgZGVzdHJv
eShKU0NlbGwqKTsKKworICAgIC8vIE1hcCBsb2NhbE5hbWUgLT4gSW1wb3J0RW50cnkuCisgICAg
SW1wb3J0TWFwIG1faW1wb3J0RW50cmllczsKKworICAgIC8vIE1hcCBleHBvcnROYW1lIC0+IEV4
cG9ydEVudHJ5LgorICAgIEV4cG9ydE1hcCBtX2V4cG9ydEVudHJpZXM7CisKKyAgICBJZGVudGlm
aWVyU2V0IG1fc3RhckV4cG9ydEVudHJpZXM7CisKKyAgICAvLyBTYXZlIHRoZSBvY2N1cnJlbmNl
IG9yZGVyIHNpbmNlIHRoZSBtb2R1bGUgbG9hZGVyIGxvYWRzIGFuZCBydW5zIHRoZSBtb2R1bGVz
IGluIHRoaXMgb3JkZXIuCisgICAgLy8gaHR0cDovL3d3dy5lY21hLWludGVybmF0aW9uYWwub3Jn
L2VjbWEtMjYyLzYuMC8jc2VjLW1vZHVsZWV2YWx1YXRpb24KKyAgICBPcmRlcmVkSWRlbnRpZmll
clNldCBtX3JlcXVlc3RlZE1vZHVsZXM7Cit9OworCitpbmxpbmUgdm9pZCBKU01vZHVsZVJlY29y
ZDo6YXBwZW5kUmVxdWVzdGVkTW9kdWxlKGNvbnN0IElkZW50aWZpZXImIG1vZHVsZU5hbWUpCit7
CisgICAgbV9yZXF1ZXN0ZWRNb2R1bGVzLmFkZChtb2R1bGVOYW1lLmltcGwoKSk7Cit9CisKK2lu
bGluZSB2b2lkIEpTTW9kdWxlUmVjb3JkOjphZGRJbXBvcnRFbnRyeShjb25zdCBJbXBvcnRFbnRy
eSYgZW50cnkpCit7CisgICAgbV9pbXBvcnRFbnRyaWVzLmFkZChlbnRyeS5sb2NhbE5hbWUuaW1w
bCgpLCBlbnRyeSk7Cit9CisKK2lubGluZSB2b2lkIEpTTW9kdWxlUmVjb3JkOjphZGRFeHBvcnRF
bnRyeShjb25zdCBFeHBvcnRFbnRyeSYgZW50cnkpCit7CisgICAgbV9leHBvcnRFbnRyaWVzLmFk
ZChlbnRyeS5leHBvcnROYW1lLmltcGwoKSwgZW50cnkpOworfQorCitpbmxpbmUgdm9pZCBKU01v
ZHVsZVJlY29yZDo6YWRkU3RhckV4cG9ydEVudHJ5KGNvbnN0IElkZW50aWZpZXImIG1vZHVsZU5h
bWUpCit7CisgICAgbV9zdGFyRXhwb3J0RW50cmllcy5hZGQobW9kdWxlTmFtZS5pbXBsKCkpOwor
fQorCitpbmxpbmUgYXV0byBKU01vZHVsZVJlY29yZDo6bG9va1VwSW1wb3J0RW50cnkoY29uc3Qg
UmVmUHRyPFVuaXF1ZWRTdHJpbmdJbXBsPiYgbG9jYWxOYW1lKSAtPiBjb25zdCBJbXBvcnRFbnRy
eSYKK3sKKyAgICByZXR1cm4gKCptX2ltcG9ydEVudHJpZXMuZmluZChsb2NhbE5hbWUpKS52YWx1
ZTsKK30KKworfSAvLyBuYW1lc3BhY2UgSlNDCisKKyNlbmRpZiAvLyBKU01vZHVsZVJlY29yZF9o
CmRpZmYgLS1naXQgYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9NYXBQcm90b3R5cGUu
Y3BwIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvTWFwUHJvdG90eXBlLmNwcAppbmRl
eCA5NmRlYWU3MTRjYTUxYTY3ZmQxNjQwOGU1YzM5ZDNjNjU2NzM4OTRkLi5lOTcyZjU0MGVmYjJm
MWU2YTQ4ZDEyNTAzZjAzMTg5NzFmNDJkZjgyIDEwMDY0NAotLS0gYS9Tb3VyY2UvSmF2YVNjcmlw
dENvcmUvcnVudGltZS9NYXBQcm90b3R5cGUuY3BwCisrKyBiL1NvdXJjZS9KYXZhU2NyaXB0Q29y
ZS9ydW50aW1lL01hcFByb3RvdHlwZS5jcHAKQEAgLTY4LDYgKzY4LDEwIEBAIHZvaWQgTWFwUHJv
dG90eXBlOjpmaW5pc2hDcmVhdGlvbihWTSYgdm0sIEpTR2xvYmFsT2JqZWN0KiBnbG9iYWxPYmpl
Y3QpCiAgICAgSlNDX05BVElWRV9GVU5DVElPTih2bS5wcm9wZXJ0eU5hbWVzLT5rZXlzLCBtYXBQ
cm90b0Z1bmNLZXlzLCBEb250RW51bSwgMCk7CiAgICAgSlNDX05BVElWRV9GVU5DVElPTih2bS5w
cm9wZXJ0eU5hbWVzLT52YWx1ZXMsIG1hcFByb3RvRnVuY1ZhbHVlcywgRG9udEVudW0sIDApOwog
CisgICAgLy8gUHJpdmF0ZSBnZXQgLyBzZXQgb3BlcmF0aW9ucy4KKyAgICBKU0NfTkFUSVZFX0ZV
TkNUSU9OKHZtLnByb3BlcnR5TmFtZXMtPmdldFByaXZhdGVOYW1lLCBtYXBQcm90b0Z1bmNHZXQs
IERvbnRFbnVtLCAxKTsKKyAgICBKU0NfTkFUSVZFX0ZVTkNUSU9OKHZtLnByb3BlcnR5TmFtZXMt
PnNldFByaXZhdGVOYW1lLCBtYXBQcm90b0Z1bmNTZXQsIERvbnRFbnVtLCAyKTsKKwogICAgIEpT
RnVuY3Rpb24qIGVudHJpZXMgPSBKU0Z1bmN0aW9uOjpjcmVhdGUodm0sIGdsb2JhbE9iamVjdCwg
MCwgdm0ucHJvcGVydHlOYW1lcy0+ZW50cmllcy5zdHJpbmcoKSwgbWFwUHJvdG9GdW5jRW50cmll
cyk7CiAgICAgcHV0RGlyZWN0V2l0aG91dFRyYW5zaXRpb24odm0sIHZtLnByb3BlcnR5TmFtZXMt
PmVudHJpZXMsIGVudHJpZXMsIERvbnRFbnVtKTsKICAgICBwdXREaXJlY3RXaXRob3V0VHJhbnNp
dGlvbih2bSwgdm0ucHJvcGVydHlOYW1lcy0+aXRlcmF0b3JTeW1ib2wsIGVudHJpZXMsIERvbnRF
bnVtKTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL01vZHVsZUxv
YWRlck9iamVjdC5jcHAgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9Nb2R1bGVMb2Fk
ZXJPYmplY3QuY3BwCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAuLmM3YzIxZjk4ZGU1MzI1MjI4NzBlNzZiZTliMjg1YmU4
NDkwOGFlN2EKLS0tIC9kZXYvbnVsbAorKysgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGlt
ZS9Nb2R1bGVMb2FkZXJPYmplY3QuY3BwCkBAIC0wLDAgKzEsMzA2IEBACisvKgorICogQ29weXJp
Z2h0IChDKSAyMDE1IEFwcGxlIEluYy4gQWxsIFJpZ2h0cyBSZXNlcnZlZC4KKyAqCisgKiBSZWRp
c3RyaWJ1dGlvbiBhbmQgdXNlIGluIHNvdXJjZSBhbmQgYmluYXJ5IGZvcm1zLCB3aXRoIG9yIHdp
dGhvdXQKKyAqIG1vZGlmaWNhdGlvbiwgYXJlIHBlcm1pdHRlZCBwcm92aWRlZCB0aGF0IHRoZSBm
b2xsb3dpbmcgY29uZGl0aW9ucworICogYXJlIG1ldDoKKyAqIDEuIFJlZGlzdHJpYnV0aW9ucyBv
ZiBzb3VyY2UgY29kZSBtdXN0IHJldGFpbiB0aGUgYWJvdmUgY29weXJpZ2h0CisgKiAgICBub3Rp
Y2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIu
CisgKiAyLiBSZWRpc3RyaWJ1dGlvbnMgaW4gYmluYXJ5IGZvcm0gbXVzdCByZXByb2R1Y2UgdGhl
IGFib3ZlIGNvcHlyaWdodAorICogICAgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBh
bmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyIGluIHRoZQorICogICAgZG9jdW1lbnRhdGlvbiBh
bmQvb3Igb3RoZXIgbWF0ZXJpYWxzIHByb3ZpZGVkIHdpdGggdGhlIGRpc3RyaWJ1dGlvbi4KKyAq
CisgKiBUSElTIFNPRlRXQVJFIElTIFBST1ZJREVEIEJZIEFQUExFIElOQy4gYGBBUyBJUycnIEFO
RCBBTlkKKyAqIEVYUFJFU1MgT1IgSU1QTElFRCBXQVJSQU5USUVTLCBJTkNMVURJTkcsIEJVVCBO
T1QgTElNSVRFRCBUTywgVEhFCisgKiBJTVBMSUVEIFdBUlJBTlRJRVMgT0YgTUVSQ0hBTlRBQklM
SVRZIEFORCBGSVRORVNTIEZPUiBBIFBBUlRJQ1VMQVIKKyAqIFBVUlBPU0UgQVJFIERJU0NMQUlN
RUQuICBJTiBOTyBFVkVOVCBTSEFMTCBBUFBMRSBJTkMuIE9SCisgKiBDT05UUklCVVRPUlMgQkUg
TElBQkxFIEZPUiBBTlkgRElSRUNULCBJTkRJUkVDVCwgSU5DSURFTlRBTCwgU1BFQ0lBTCwKKyAq
IEVYRU1QTEFSWSwgT1IgQ09OU0VRVUVOVElBTCBEQU1BR0VTIChJTkNMVURJTkcsIEJVVCBOT1Qg
TElNSVRFRCBUTywKKyAqIFBST0NVUkVNRU5UIE9GIFNVQlNUSVRVVEUgR09PRFMgT1IgU0VSVklD
RVM7IExPU1MgT0YgVVNFLCBEQVRBLCBPUgorICogUFJPRklUUzsgT1IgQlVTSU5FU1MgSU5URVJS
VVBUSU9OKSBIT1dFVkVSIENBVVNFRCBBTkQgT04gQU5ZIFRIRU9SWQorICogT0YgTElBQklMSVRZ
LCBXSEVUSEVSIElOIENPTlRSQUNULCBTVFJJQ1QgTElBQklMSVRZLCBPUiBUT1JUCisgKiAoSU5D
TFVESU5HIE5FR0xJR0VOQ0UgT1IgT1RIRVJXSVNFKSBBUklTSU5HIElOIEFOWSBXQVkgT1VUIE9G
IFRIRSBVU0UKKyAqIE9GIFRISVMgU09GVFdBUkUsIEVWRU4gSUYgQURWSVNFRCBPRiBUSEUgUE9T
U0lCSUxJVFkgT0YgU1VDSCBEQU1BR0UuCisgKi8KKworI2luY2x1ZGUgImNvbmZpZy5oIgorI2lu
Y2x1ZGUgIk1vZHVsZUxvYWRlck9iamVjdC5oIgorCisjaW5jbHVkZSAiQnVpbHRpbk5hbWVzLmgi
CisjaW5jbHVkZSAiRXJyb3IuaCIKKyNpbmNsdWRlICJFeGNlcHRpb24uaCIKKyNpbmNsdWRlICJK
U0NJbmxpbmVzLmgiCisjaW5jbHVkZSAiSlNHbG9iYWxPYmplY3RGdW5jdGlvbnMuaCIKKyNpbmNs
dWRlICJKU0ludGVybmFsUHJvbWlzZS5oIgorI2luY2x1ZGUgIkpTSW50ZXJuYWxQcm9taXNlRGVm
ZXJyZWQuaCIKKyNpbmNsdWRlICJKU01hcC5oIgorI2luY2x1ZGUgIkpTTW9kdWxlUmVjb3JkLmgi
CisjaW5jbHVkZSAiTW9kdWxlQW5hbHl6ZXIuaCIKKyNpbmNsdWRlICJOb2Rlcy5oIgorI2luY2x1
ZGUgIlBhcnNlci5oIgorI2luY2x1ZGUgIlBhcnNlckVycm9yLmgiCisKK25hbWVzcGFjZSBKU0Mg
eworCitzdGF0aWMgRW5jb2RlZEpTVmFsdWUgSlNDX0hPU1RfQ0FMTCBtb2R1bGVMb2FkZXJPYmpl
Y3RQYXJzZU1vZHVsZShFeGVjU3RhdGUqKTsKK3N0YXRpYyBFbmNvZGVkSlNWYWx1ZSBKU0NfSE9T
VF9DQUxMIG1vZHVsZUxvYWRlck9iamVjdFJlcXVlc3RlZE1vZHVsZXMoRXhlY1N0YXRlKik7Citz
dGF0aWMgRW5jb2RlZEpTVmFsdWUgSlNDX0hPU1RfQ0FMTCBtb2R1bGVMb2FkZXJPYmplY3RSZXNv
bHZlKEV4ZWNTdGF0ZSopOworc3RhdGljIEVuY29kZWRKU1ZhbHVlIEpTQ19IT1NUX0NBTEwgbW9k
dWxlTG9hZGVyT2JqZWN0RmV0Y2goRXhlY1N0YXRlKik7CitzdGF0aWMgRW5jb2RlZEpTVmFsdWUg
SlNDX0hPU1RfQ0FMTCBtb2R1bGVMb2FkZXJPYmplY3RUcmFuc2xhdGUoRXhlY1N0YXRlKik7Citz
dGF0aWMgRW5jb2RlZEpTVmFsdWUgSlNDX0hPU1RfQ0FMTCBtb2R1bGVMb2FkZXJPYmplY3RJbnN0
YW50aWF0ZShFeGVjU3RhdGUqKTsKKworfQorCisjaW5jbHVkZSAiTW9kdWxlTG9hZGVyT2JqZWN0
Lmx1dC5oIgorCituYW1lc3BhY2UgSlNDIHsKKworU1RBVElDX0FTU0VSVF9JU19UUklWSUFMTFlf
REVTVFJVQ1RJQkxFKE1vZHVsZUxvYWRlck9iamVjdCk7CisKK2NvbnN0IENsYXNzSW5mbyBNb2R1
bGVMb2FkZXJPYmplY3Q6OnNfaW5mbyA9IHsgIk1vZHVsZUxvYWRlciIsICZCYXNlOjpzX2luZm8s
ICZtb2R1bGVMb2FkZXJPYmplY3RUYWJsZSwgQ1JFQVRFX01FVEhPRF9UQUJMRShNb2R1bGVMb2Fk
ZXJPYmplY3QpIH07CisKKy8qIFNvdXJjZSBmb3IgTW9kdWxlTG9hZGVyT2JqZWN0Lmx1dC5oCitA
YmVnaW4gbW9kdWxlTG9hZGVyT2JqZWN0VGFibGUKKyAgICBzZXRTdGF0ZVRvTWF4ICAgICAgICAg
ICAgICBtb2R1bGVMb2FkZXJPYmplY3RTZXRTdGF0ZVRvTWF4ICAgICAgICAgICAgICBEb250RW51
bXxGdW5jdGlvbiAyCisgICAgbmV3UmVnaXN0cnlFbnRyeSAgICAgICAgICAgbW9kdWxlTG9hZGVy
T2JqZWN0TmV3UmVnaXN0cnlFbnRyeSAgICAgICAgICAgRG9udEVudW18RnVuY3Rpb24gMQorICAg
IGVuc3VyZVJlZ2lzdGVyZWQgICAgICAgICAgIG1vZHVsZUxvYWRlck9iamVjdEVuc3VyZVJlZ2lz
dGVyZWQgICAgICAgICAgIERvbnRFbnVtfEZ1bmN0aW9uIDEKKyAgICBmb3JjZUZ1bGZpbGxQcm9t
aXNlICAgICAgICBtb2R1bGVMb2FkZXJPYmplY3RGb3JjZUZ1bGZpbGxQcm9taXNlICAgICAgICBE
b250RW51bXxGdW5jdGlvbiAyCisgICAgZnVsZmlsbEZldGNoICAgICAgICAgICAgICAgbW9kdWxl
TG9hZGVyT2JqZWN0RnVsZmlsbEZldGNoICAgICAgICAgICAgICAgRG9udEVudW18RnVuY3Rpb24g
MgorICAgIGZ1bGZpbGxUcmFuc2xhdGUgICAgICAgICAgIG1vZHVsZUxvYWRlck9iamVjdEZ1bGZp
bGxUcmFuc2xhdGUgICAgICAgICAgIERvbnRFbnVtfEZ1bmN0aW9uIDIKKyAgICBmdWxmaWxsSW5z
dGFudGlhdGUgICAgICAgICBtb2R1bGVMb2FkZXJPYmplY3RGdWxmaWxsSW5zdGFudGlhdGUgICAg
ICAgICBEb250RW51bXxGdW5jdGlvbiAyCisgICAgY29tbWl0SW5zdGFudGlhdGVkICAgICAgICAg
bW9kdWxlTG9hZGVyT2JqZWN0Q29tbWl0SW5zdGFudGlhdGVkICAgICAgICAgRG9udEVudW18RnVu
Y3Rpb24gMworICAgIGluc3RhbnRpYXRpb24gICAgICAgICAgICAgIG1vZHVsZUxvYWRlck9iamVj
dEluc3RhbnRpYXRpb24gICAgICAgICAgICAgIERvbnRFbnVtfEZ1bmN0aW9uIDMKKyAgICByZXF1
ZXN0RmV0Y2ggICAgICAgICAgICAgICBtb2R1bGVMb2FkZXJPYmplY3RSZXF1ZXN0RmV0Y2ggICAg
ICAgICAgICAgICBEb250RW51bXxGdW5jdGlvbiAxCisgICAgcmVxdWVzdFRyYW5zbGF0ZSAgICAg
ICAgICAgbW9kdWxlTG9hZGVyT2JqZWN0UmVxdWVzdFRyYW5zbGF0ZSAgICAgICAgICAgRG9udEVu
dW18RnVuY3Rpb24gMQorICAgIHJlcXVlc3RJbnN0YW50aWF0ZSAgICAgICAgIG1vZHVsZUxvYWRl
ck9iamVjdFJlcXVlc3RJbnN0YW50aWF0ZSAgICAgICAgIERvbnRFbnVtfEZ1bmN0aW9uIDEKKyAg
ICByZXF1ZXN0UmVzb2x2ZURlcGVuZGVuY2llcyBtb2R1bGVMb2FkZXJPYmplY3RSZXF1ZXN0UmVz
b2x2ZURlcGVuZGVuY2llcyBEb250RW51bXxGdW5jdGlvbiAxCisgICAgcmVxdWVzdEluc3RhbnRp
YXRlQWxsICAgICAgbW9kdWxlTG9hZGVyT2JqZWN0UmVxdWVzdEluc3RhbnRpYXRlQWxsICAgICAg
RG9udEVudW18RnVuY3Rpb24gMQorICAgIHByb3ZpZGUgICAgICAgICAgICAgICAgICAgIG1vZHVs
ZUxvYWRlck9iamVjdFByb3ZpZGUgICAgICAgICAgICAgICAgICAgIERvbnRFbnVtfEZ1bmN0aW9u
IDMKKyAgICBwYXJzZU1vZHVsZSAgICAgICAgICAgICAgICBtb2R1bGVMb2FkZXJPYmplY3RQYXJz
ZU1vZHVsZSAgICAgICAgICAgICAgICBEb250RW51bXxGdW5jdGlvbiAyCisgICAgcmVxdWVzdGVk
TW9kdWxlcyAgICAgICAgICAgbW9kdWxlTG9hZGVyT2JqZWN0UmVxdWVzdGVkTW9kdWxlcyAgICAg
ICAgICAgRG9udEVudW18RnVuY3Rpb24gMQorICAgIHJlc29sdmUgICAgICAgICAgICAgICAgICAg
IG1vZHVsZUxvYWRlck9iamVjdFJlc29sdmUgICAgICAgICAgICAgICAgICAgIERvbnRFbnVtfEZ1
bmN0aW9uIDEKKyAgICBmZXRjaCAgICAgICAgICAgICAgICAgICAgICBtb2R1bGVMb2FkZXJPYmpl
Y3RGZXRjaCAgICAgICAgICAgICAgICAgICAgICBEb250RW51bXxGdW5jdGlvbiAxCisgICAgdHJh
bnNsYXRlICAgICAgICAgICAgICAgICAgbW9kdWxlTG9hZGVyT2JqZWN0VHJhbnNsYXRlICAgICAg
ICAgICAgICAgICAgRG9udEVudW18RnVuY3Rpb24gMgorICAgIGluc3RhbnRpYXRlICAgICAgICAg
ICAgICAgIG1vZHVsZUxvYWRlck9iamVjdEluc3RhbnRpYXRlICAgICAgICAgICAgICAgIERvbnRF
bnVtfEZ1bmN0aW9uIDIKK0BlbmQKKyovCisKK01vZHVsZUxvYWRlck9iamVjdDo6TW9kdWxlTG9h
ZGVyT2JqZWN0KFZNJiB2bSwgU3RydWN0dXJlKiBzdHJ1Y3R1cmUpCisgICAgOiBKU05vbkZpbmFs
T2JqZWN0KHZtLCBzdHJ1Y3R1cmUpCit7Cit9CisKK3ZvaWQgTW9kdWxlTG9hZGVyT2JqZWN0Ojpm
aW5pc2hDcmVhdGlvbihWTSYgdm0sIEpTR2xvYmFsT2JqZWN0KiBnbG9iYWxPYmplY3QpCit7Cisg
ICAgQmFzZTo6ZmluaXNoQ3JlYXRpb24odm0pOworICAgIEFTU0VSVChpbmhlcml0cyhpbmZvKCkp
KTsKKworICAgIC8vIENvbnN0YW50IHZhbHVlcyBmb3IgdGhlIHN0YXRlLgorICAgIHB1dERpcmVj
dFdpdGhvdXRUcmFuc2l0aW9uKHZtLCBJZGVudGlmaWVyOjpmcm9tU3RyaW5nKCZ2bSwgIkZldGNo
IiksIGpzTnVtYmVyKFN0YXR1czo6RmV0Y2gpKTsKKyAgICBwdXREaXJlY3RXaXRob3V0VHJhbnNp
dGlvbih2bSwgSWRlbnRpZmllcjo6ZnJvbVN0cmluZygmdm0sICJUcmFuc2xhdGUiKSwganNOdW1i
ZXIoU3RhdHVzOjpUcmFuc2xhdGUpKTsKKyAgICBwdXREaXJlY3RXaXRob3V0VHJhbnNpdGlvbih2
bSwgSWRlbnRpZmllcjo6ZnJvbVN0cmluZygmdm0sICJJbnN0YW50aWF0ZSIpLCBqc051bWJlcihT
dGF0dXM6Okluc3RhbnRpYXRlKSk7CisgICAgcHV0RGlyZWN0V2l0aG91dFRyYW5zaXRpb24odm0s
IElkZW50aWZpZXI6OmZyb21TdHJpbmcoJnZtLCAiUmVzb2x2ZURlcGVuZGVuY2llcyIpLCBqc051
bWJlcihTdGF0dXM6OlJlc29sdmVEZXBlbmRlbmNpZXMpKTsKKyAgICBwdXREaXJlY3RXaXRob3V0
VHJhbnNpdGlvbih2bSwgSWRlbnRpZmllcjo6ZnJvbVN0cmluZygmdm0sICJMaW5rIiksIGpzTnVt
YmVyKFN0YXR1czo6TGluaykpOworICAgIHB1dERpcmVjdFdpdGhvdXRUcmFuc2l0aW9uKHZtLCBJ
ZGVudGlmaWVyOjpmcm9tU3RyaW5nKCZ2bSwgIlJlYWR5IiksIGpzTnVtYmVyKFN0YXR1czo6UmVh
ZHkpKTsKKworICAgIHB1dERpcmVjdFdpdGhvdXRUcmFuc2l0aW9uKHZtLCBJZGVudGlmaWVyOjpm
cm9tU3RyaW5nKCZ2bSwgInJlZ2lzdHJ5IiksIEpTTWFwOjpjcmVhdGUodm0sIGdsb2JhbE9iamVj
dC0+bWFwU3RydWN0dXJlKCkpKTsKK30KKworYm9vbCBNb2R1bGVMb2FkZXJPYmplY3Q6OmdldE93
blByb3BlcnR5U2xvdChKU09iamVjdCogb2JqZWN0LCBFeGVjU3RhdGUqIGV4ZWMsIFByb3BlcnR5
TmFtZSBwcm9wZXJ0eU5hbWUsIFByb3BlcnR5U2xvdCAmc2xvdCkKK3sKKyAgICByZXR1cm4gZ2V0
U3RhdGljRnVuY3Rpb25TbG90PEJhc2U+KGV4ZWMsIG1vZHVsZUxvYWRlck9iamVjdFRhYmxlLCBq
c0Nhc3Q8TW9kdWxlTG9hZGVyT2JqZWN0Kj4ob2JqZWN0KSwgcHJvcGVydHlOYW1lLCBzbG90KTsK
K30KKworLy8gLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tIEZ1bmN0aW9ucyAtLS0tLS0t
LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLQorCitzdGF0aWMgU3RyaW5nIHByaW50YWJsZU1vZHVs
ZUtleShFeGVjU3RhdGUqIGV4ZWMsIEpTVmFsdWUga2V5KQoreworICAgIGlmIChrZXkuaXNTdHJp
bmcoKSB8fCBrZXkuaXNTeW1ib2woKSkKKyAgICAgICAgcmV0dXJuIGtleS50b1Byb3BlcnR5S2V5
KGV4ZWMpLmltcGwoKTsKKyAgICByZXR1cm4gZXhlYy0+cHJvcGVydHlOYW1lcygpLmVtcHR5SWRl
bnRpZmllci5pbXBsKCk7Cit9CisKK0pTVmFsdWUgTW9kdWxlTG9hZGVyT2JqZWN0Ojpwcm92aWRl
KEV4ZWNTdGF0ZSogZXhlYywgSlNWYWx1ZSBrZXksIFN0YXR1cyBzdGF0dXMsIGNvbnN0IFN0cmlu
ZyYgc291cmNlKQoreworICAgIEpTT2JqZWN0KiBmdW5jdGlvbiA9IGpzQ2FzdDxKU09iamVjdCo+
KGdldChleGVjLCBleGVjLT5wcm9wZXJ0eU5hbWVzKCkuYnVpbHRpbk5hbWVzKCkucHJvdmlkZVB1
YmxpY05hbWUoKSkpOworICAgIENhbGxEYXRhIGNhbGxEYXRhOworICAgIENhbGxUeXBlIGNhbGxU
eXBlID0gSlNDOjpnZXRDYWxsRGF0YShmdW5jdGlvbiwgY2FsbERhdGEpOworICAgIEFTU0VSVChj
YWxsVHlwZSAhPSBDYWxsVHlwZU5vbmUpOworCisgICAgTWFya2VkQXJndW1lbnRCdWZmZXIgYXJn
dW1lbnRzOworICAgIGFyZ3VtZW50cy5hcHBlbmQoa2V5KTsKKyAgICBhcmd1bWVudHMuYXBwZW5k
KGpzTnVtYmVyKHN0YXR1cykpOworICAgIGFyZ3VtZW50cy5hcHBlbmQoanNTdHJpbmcoZXhlYywg
c291cmNlKSk7CisKKyAgICByZXR1cm4gY2FsbChleGVjLCBmdW5jdGlvbiwgY2FsbFR5cGUsIGNh
bGxEYXRhLCB0aGlzLCBhcmd1bWVudHMpOworfQorCitKU1ZhbHVlIE1vZHVsZUxvYWRlck9iamVj
dDo6cmVxdWVzdEluc3RhbnRpYXRlQWxsKEV4ZWNTdGF0ZSogZXhlYywgSlNWYWx1ZSBrZXkpCit7
CisgICAgSlNPYmplY3QqIGZ1bmN0aW9uID0ganNDYXN0PEpTT2JqZWN0Kj4oZ2V0KGV4ZWMsIGV4
ZWMtPnByb3BlcnR5TmFtZXMoKS5idWlsdGluTmFtZXMoKS5yZXF1ZXN0SW5zdGFudGlhdGVBbGxQ
dWJsaWNOYW1lKCkpKTsKKyAgICBDYWxsRGF0YSBjYWxsRGF0YTsKKyAgICBDYWxsVHlwZSBjYWxs
VHlwZSA9IEpTQzo6Z2V0Q2FsbERhdGEoZnVuY3Rpb24sIGNhbGxEYXRhKTsKKyAgICBBU1NFUlQo
Y2FsbFR5cGUgIT0gQ2FsbFR5cGVOb25lKTsKKworICAgIE1hcmtlZEFyZ3VtZW50QnVmZmVyIGFy
Z3VtZW50czsKKyAgICBhcmd1bWVudHMuYXBwZW5kKGtleSk7CisKKyAgICByZXR1cm4gY2FsbChl
eGVjLCBmdW5jdGlvbiwgY2FsbFR5cGUsIGNhbGxEYXRhLCB0aGlzLCBhcmd1bWVudHMpOworfQor
CitKU1ZhbHVlIE1vZHVsZUxvYWRlck9iamVjdDo6cmVzb2x2ZShFeGVjU3RhdGUqIGV4ZWMsIEpT
VmFsdWUgbmFtZSwgSlNWYWx1ZSByZWZlcnJlcikKK3sKKyAgICBpZiAoT3B0aW9uczo6ZHVtcE1v
ZHVsZUxvYWRpbmdTdGF0ZSgpKQorICAgICAgICBkYXRhTG9nKCJMb2FkZXIgW3Jlc29sdmVdICIs
IHByaW50YWJsZU1vZHVsZUtleShleGVjLCBuYW1lKSwgIlxuIik7CisKKyAgICBKU0dsb2JhbE9i
amVjdCogZ2xvYmFsT2JqZWN0ID0gZXhlYy0+bGV4aWNhbEdsb2JhbE9iamVjdCgpOworICAgIGlm
IChnbG9iYWxPYmplY3QtPmdsb2JhbE9iamVjdE1ldGhvZFRhYmxlKCktPmxvYWRlclJlc29sdmUp
CisgICAgICAgIHJldHVybiBnbG9iYWxPYmplY3QtPmdsb2JhbE9iamVjdE1ldGhvZFRhYmxlKCkt
PmxvYWRlclJlc29sdmUoZ2xvYmFsT2JqZWN0LCBleGVjLCBuYW1lLCByZWZlcnJlcik7CisgICAg
SlNJbnRlcm5hbFByb21pc2VEZWZlcnJlZCogZGVmZXJyZWQgPSBKU0ludGVybmFsUHJvbWlzZURl
ZmVycmVkOjpjcmVhdGUoZXhlYywgZ2xvYmFsT2JqZWN0KTsKKyAgICBkZWZlcnJlZC0+cmVzb2x2
ZShleGVjLCBuYW1lKTsKKyAgICByZXR1cm4gZGVmZXJyZWQtPnByb21pc2UoKTsKK30KKworSlNW
YWx1ZSBNb2R1bGVMb2FkZXJPYmplY3Q6OmZldGNoKEV4ZWNTdGF0ZSogZXhlYywgSlNWYWx1ZSBr
ZXkpCit7CisgICAgaWYgKE9wdGlvbnM6OmR1bXBNb2R1bGVMb2FkaW5nU3RhdGUoKSkKKyAgICAg
ICAgZGF0YUxvZygiTG9hZGVyIFtmZXRjaF0gIiwgcHJpbnRhYmxlTW9kdWxlS2V5KGV4ZWMsIGtl
eSksICJcbiIpOworCisgICAgSlNHbG9iYWxPYmplY3QqIGdsb2JhbE9iamVjdCA9IGV4ZWMtPmxl
eGljYWxHbG9iYWxPYmplY3QoKTsKKyAgICBpZiAoZ2xvYmFsT2JqZWN0LT5nbG9iYWxPYmplY3RN
ZXRob2RUYWJsZSgpLT5sb2FkZXJGZXRjaCkKKyAgICAgICAgcmV0dXJuIGdsb2JhbE9iamVjdC0+
Z2xvYmFsT2JqZWN0TWV0aG9kVGFibGUoKS0+bG9hZGVyRmV0Y2goZ2xvYmFsT2JqZWN0LCBleGVj
LCBrZXkpOworICAgIEpTSW50ZXJuYWxQcm9taXNlRGVmZXJyZWQqIGRlZmVycmVkID0gSlNJbnRl
cm5hbFByb21pc2VEZWZlcnJlZDo6Y3JlYXRlKGV4ZWMsIGdsb2JhbE9iamVjdCk7CisgICAgU3Ry
aW5nIG1vZHVsZUtleSA9IGtleS50b1N0cmluZyhleGVjKS0+dmFsdWUoZXhlYyk7CisgICAgaWYg
KGV4ZWMtPmhhZEV4Y2VwdGlvbigpKSB7CisgICAgICAgIEpTVmFsdWUgZXhjZXB0aW9uID0gZXhl
Yy0+ZXhjZXB0aW9uKCktPnZhbHVlKCk7CisgICAgICAgIGV4ZWMtPmNsZWFyRXhjZXB0aW9uKCk7
CisgICAgICAgIGRlZmVycmVkLT5yZWplY3QoZXhlYywgZXhjZXB0aW9uKTsKKyAgICAgICAgcmV0
dXJuIGRlZmVycmVkLT5wcm9taXNlKCk7CisgICAgfQorICAgIGRlZmVycmVkLT5yZWplY3QoZXhl
YywgY3JlYXRlRXJyb3IoZXhlYywgbWFrZVN0cmluZygiQ291bGQgbm90IG9wZW4gdGhlIG1vZHVs
ZSAnIiwgbW9kdWxlS2V5LCAiJy4iKSkpOworICAgIHJldHVybiBkZWZlcnJlZC0+cHJvbWlzZSgp
OworfQorCitKU1ZhbHVlIE1vZHVsZUxvYWRlck9iamVjdDo6dHJhbnNsYXRlKEV4ZWNTdGF0ZSog
ZXhlYywgSlNWYWx1ZSBrZXksIEpTVmFsdWUgcGF5bG9hZCkKK3sKKyAgICBpZiAoT3B0aW9uczo6
ZHVtcE1vZHVsZUxvYWRpbmdTdGF0ZSgpKQorICAgICAgICBkYXRhTG9nKCJMb2FkZXIgW3RyYW5z
bGF0ZV0gIiwgcHJpbnRhYmxlTW9kdWxlS2V5KGV4ZWMsIGtleSksICJcbiIpOworCisgICAgSlNH
bG9iYWxPYmplY3QqIGdsb2JhbE9iamVjdCA9IGV4ZWMtPmxleGljYWxHbG9iYWxPYmplY3QoKTsK
KyAgICBpZiAoZ2xvYmFsT2JqZWN0LT5nbG9iYWxPYmplY3RNZXRob2RUYWJsZSgpLT5sb2FkZXJU
cmFuc2xhdGUpCisgICAgICAgIHJldHVybiBnbG9iYWxPYmplY3QtPmdsb2JhbE9iamVjdE1ldGhv
ZFRhYmxlKCktPmxvYWRlclRyYW5zbGF0ZShnbG9iYWxPYmplY3QsIGV4ZWMsIGtleSwgcGF5bG9h
ZCk7CisgICAgSlNJbnRlcm5hbFByb21pc2VEZWZlcnJlZCogZGVmZXJyZWQgPSBKU0ludGVybmFs
UHJvbWlzZURlZmVycmVkOjpjcmVhdGUoZXhlYywgZ2xvYmFsT2JqZWN0KTsKKyAgICBkZWZlcnJl
ZC0+cmVzb2x2ZShleGVjLCBwYXlsb2FkKTsKKyAgICByZXR1cm4gZGVmZXJyZWQtPnByb21pc2Uo
KTsKK30KKworSlNWYWx1ZSBNb2R1bGVMb2FkZXJPYmplY3Q6Omluc3RhbnRpYXRlKEV4ZWNTdGF0
ZSogZXhlYywgSlNWYWx1ZSBrZXksIEpTVmFsdWUgc291cmNlKQoreworICAgIGlmIChPcHRpb25z
OjpkdW1wTW9kdWxlTG9hZGluZ1N0YXRlKCkpCisgICAgICAgIGRhdGFMb2coIkxvYWRlciBbaW5z
dGFudGlhdGVdICIsIHByaW50YWJsZU1vZHVsZUtleShleGVjLCBrZXkpLCAiXG4iKTsKKworICAg
IEpTR2xvYmFsT2JqZWN0KiBnbG9iYWxPYmplY3QgPSBleGVjLT5sZXhpY2FsR2xvYmFsT2JqZWN0
KCk7CisgICAgaWYgKGdsb2JhbE9iamVjdC0+Z2xvYmFsT2JqZWN0TWV0aG9kVGFibGUoKS0+bG9h
ZGVySW5zdGFudGlhdGUpCisgICAgICAgIHJldHVybiBnbG9iYWxPYmplY3QtPmdsb2JhbE9iamVj
dE1ldGhvZFRhYmxlKCktPmxvYWRlckluc3RhbnRpYXRlKGdsb2JhbE9iamVjdCwgZXhlYywga2V5
LCBzb3VyY2UpOworICAgIEpTSW50ZXJuYWxQcm9taXNlRGVmZXJyZWQqIGRlZmVycmVkID0gSlNJ
bnRlcm5hbFByb21pc2VEZWZlcnJlZDo6Y3JlYXRlKGV4ZWMsIGdsb2JhbE9iamVjdCk7CisgICAg
ZGVmZXJyZWQtPnJlc29sdmUoZXhlYywganNVbmRlZmluZWQoKSk7CisgICAgcmV0dXJuIGRlZmVy
cmVkLT5wcm9taXNlKCk7Cit9CisKKy8vIC0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLSBI
b29rIEZ1bmN0aW9ucyAtLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0KKworRW5jb2RlZEpTVmFs
dWUgSlNDX0hPU1RfQ0FMTCBtb2R1bGVMb2FkZXJPYmplY3RQYXJzZU1vZHVsZShFeGVjU3RhdGUq
IGV4ZWMpCit7CisgICAgVk0mIHZtID0gZXhlYy0+dm0oKTsKKyAgICBJZGVudGlmaWVyIG1vZHVs
ZUtleSA9IGV4ZWMtPmFyZ3VtZW50KDApLnRvUHJvcGVydHlLZXkoZXhlYyk7CisgICAgaWYgKGV4
ZWMtPmhhZEV4Y2VwdGlvbigpKQorICAgICAgICByZXR1cm4gSlNWYWx1ZTo6ZW5jb2RlKGpzVW5k
ZWZpbmVkKCkpOworCisgICAgU3RyaW5nIHNvdXJjZSA9IGV4ZWMtPmFyZ3VtZW50KDEpLnRvU3Ry
aW5nKGV4ZWMpLT52YWx1ZShleGVjKTsKKyAgICBpZiAoZXhlYy0+aGFkRXhjZXB0aW9uKCkpCisg
ICAgICAgIHJldHVybiBKU1ZhbHVlOjplbmNvZGUoanNVbmRlZmluZWQoKSk7CisKKyAgICBTb3Vy
Y2VDb2RlIHNvdXJjZUNvZGUgPSBtYWtlU291cmNlKHNvdXJjZSwgbW9kdWxlS2V5LmltcGwoKSk7
CisKKyAgICBQYXJzZXJFcnJvciBlcnJvcjsKKyAgICBzdGQ6OnVuaXF1ZV9wdHI8TW9kdWxlUHJv
Z3JhbU5vZGU+IG1vZHVsZVByb2dyYW1Ob2RlID0gcGFyc2U8TW9kdWxlUHJvZ3JhbU5vZGU+KAor
ICAgICAgICAmdm0sIHNvdXJjZUNvZGUsIElkZW50aWZpZXIoKSwgSlNQYXJzZXJCdWlsdGluTW9k
ZTo6Tm90QnVpbHRpbiwKKyAgICAgICAgSlNQYXJzZXJTdHJpY3RNb2RlOjpTdHJpY3QsIFNvdXJj
ZVBhcnNlTW9kZTo6TW9kdWxlQW5hbHl6ZU1vZGUsIGVycm9yKTsKKworICAgIGlmIChlcnJvci5p
c1ZhbGlkKCkpIHsKKyAgICAgICAgdGhyb3dWTUVycm9yKGV4ZWMsIGVycm9yLnRvRXJyb3JPYmpl
Y3QoZXhlYy0+bGV4aWNhbEdsb2JhbE9iamVjdCgpLCBzb3VyY2VDb2RlKSk7CisgICAgICAgIHJl
dHVybiBKU1ZhbHVlOjplbmNvZGUoanNVbmRlZmluZWQoKSk7CisgICAgfQorICAgIEFTU0VSVCht
b2R1bGVQcm9ncmFtTm9kZSk7CisKKyAgICBNb2R1bGVBbmFseXplciBtb2R1bGVBbmFseXplcihl
eGVjLCBtb2R1bGVQcm9ncmFtTm9kZS0+dmFyRGVjbGFyYXRpb25zKCksIG1vZHVsZVByb2dyYW1O
b2RlLT5sZXhpY2FsVmFyaWFibGVzKCkpOworICAgIEpTTW9kdWxlUmVjb3JkKiBtb2R1bGVSZWNv
cmQgPSBtb2R1bGVBbmFseXplci5hbmFseXplKCptb2R1bGVQcm9ncmFtTm9kZSk7CisgICAgcmV0
dXJuIEpTVmFsdWU6OmVuY29kZShtb2R1bGVSZWNvcmQpOworfQorCitFbmNvZGVkSlNWYWx1ZSBK
U0NfSE9TVF9DQUxMIG1vZHVsZUxvYWRlck9iamVjdFJlcXVlc3RlZE1vZHVsZXMoRXhlY1N0YXRl
KiBleGVjKQoreworICAgIEpTTW9kdWxlUmVjb3JkKiBtb2R1bGVSZWNvcmQgPSBqc0Nhc3Q8SlNN
b2R1bGVSZWNvcmQqPihleGVjLT5hcmd1bWVudCgwKSk7CisgICAgaWYgKCFtb2R1bGVSZWNvcmQp
CisgICAgICAgIHJldHVybiBKU1ZhbHVlOjplbmNvZGUoY29uc3RydWN0RW1wdHlBcnJheShleGVj
LCBudWxscHRyKSk7CisKKyAgICBKU0FycmF5KiByZXN1bHQgPSBjb25zdHJ1Y3RFbXB0eUFycmF5
KGV4ZWMsIG51bGxwdHIsIG1vZHVsZVJlY29yZC0+cmVxdWVzdGVkTW9kdWxlcygpLnNpemUoKSk7
CisgICAgc2l6ZV90IGkgPSAwOworICAgIGZvciAoYXV0byYga2V5IDogbW9kdWxlUmVjb3JkLT5y
ZXF1ZXN0ZWRNb2R1bGVzKCkpCisgICAgICAgIHJlc3VsdC0+cHV0RGlyZWN0SW5kZXgoZXhlYywg
aSsrLCBqc1N0cmluZyhleGVjLCBrZXkuZ2V0KCkpKTsKKworICAgIHJldHVybiBKU1ZhbHVlOjpl
bmNvZGUocmVzdWx0KTsKK30KKworRW5jb2RlZEpTVmFsdWUgSlNDX0hPU1RfQ0FMTCBtb2R1bGVM
b2FkZXJPYmplY3RSZXNvbHZlKEV4ZWNTdGF0ZSogZXhlYykKK3sKKyAgICAvLyBIb29rIHBvaW50
LCBMb2FkZXIucmVzb2x2ZS4KKyAgICAvLyBodHRwczovL3doYXR3Zy5naXRodWIuaW8vbG9hZGVy
LyNicm93c2VyLXJlc29sdmUKKyAgICAvLyBUYWtlIHRoZSBuYW1lIGFuZCByZXNvbHZlIGl0IHRv
IHRoZSB1bmlxdWUgaWRlbnRpZmllciBmb3IgdGhlIHJlc291cmNlIGxvY2F0aW9uLgorICAgIC8v
IEZvciBleGFtcGxlLCB0YWtlIHRoZSAianF1ZXJ5IiBhbmQgcmV0dXJuIHRoZSBVUkwgZm9yIHRo
ZSByZXNvdXJjZS4KKyAgICBNb2R1bGVMb2FkZXJPYmplY3QqIGxvYWRlciA9IGpzRHluYW1pY0Nh
c3Q8TW9kdWxlTG9hZGVyT2JqZWN0Kj4oZXhlYy0+dGhpc1ZhbHVlKCkpOworICAgIGlmICghbG9h
ZGVyKQorICAgICAgICByZXR1cm4gSlNWYWx1ZTo6ZW5jb2RlKGpzVW5kZWZpbmVkKCkpOworICAg
IHJldHVybiBKU1ZhbHVlOjplbmNvZGUobG9hZGVyLT5yZXNvbHZlKGV4ZWMsIGV4ZWMtPmFyZ3Vt
ZW50KDApLCBleGVjLT5hcmd1bWVudCgxKSkpOworfQorCitFbmNvZGVkSlNWYWx1ZSBKU0NfSE9T
VF9DQUxMIG1vZHVsZUxvYWRlck9iamVjdEZldGNoKEV4ZWNTdGF0ZSogZXhlYykKK3sKKyAgICAv
LyBIb29rIHBvaW50LCBMb2FkZXIuZmV0Y2gKKyAgICAvLyBodHRwczovL3doYXR3Zy5naXRodWIu
aW8vbG9hZGVyLyNicm93c2VyLWZldGNoCisgICAgLy8gVGFrZSB0aGUga2V5IGFuZCBmZXRjaCB0
aGUgcmVzb3VyY2UgYWN0dWFsbHkuCisgICAgLy8gRm9yIGV4YW1wbGUsIEphdmFTY3JpcHRDb3Jl
IHNoZWxsIGNhbiBwcm92aWRlIHRoZSBob29rIGZldGNoaW5nIHRoZSByZXNvdXJjZQorICAgIC8v
IGZyb20gdGhlIGxvY2FsIGZpbGUgc3lzdGVtLgorICAgIE1vZHVsZUxvYWRlck9iamVjdCogbG9h
ZGVyID0ganNEeW5hbWljQ2FzdDxNb2R1bGVMb2FkZXJPYmplY3QqPihleGVjLT50aGlzVmFsdWUo
KSk7CisgICAgaWYgKCFsb2FkZXIpCisgICAgICAgIHJldHVybiBKU1ZhbHVlOjplbmNvZGUoanNV
bmRlZmluZWQoKSk7CisgICAgcmV0dXJuIEpTVmFsdWU6OmVuY29kZShsb2FkZXItPmZldGNoKGV4
ZWMsIGV4ZWMtPmFyZ3VtZW50KDApKSk7Cit9CisKK0VuY29kZWRKU1ZhbHVlIEpTQ19IT1NUX0NB
TEwgbW9kdWxlTG9hZGVyT2JqZWN0VHJhbnNsYXRlKEV4ZWNTdGF0ZSogZXhlYykKK3sKKyAgICAv
LyBIb29rIHBvaW50LCBMb2FkZXIudHJhbnNsYXRlCisgICAgLy8gaHR0cHM6Ly93aGF0d2cuZ2l0
aHViLmlvL2xvYWRlci8jYnJvd3Nlci10cmFuc2xhdGUKKyAgICAvLyBUYWtlIHRoZSBrZXkgYW5k
IHRoZSBmZXRjaGVkIHNvdXJjZSBjb2RlIGFuZCB0cmFuc2xhdGUgaXQgdG8gdGhlIEVTNiBzb3Vy
Y2UgY29kZS4KKyAgICAvLyBUeXBpY2FsbHkgaXQgaXMgdXNlZCBieSB0aGUgdHJhbnNwaWxlcnMu
CisgICAgTW9kdWxlTG9hZGVyT2JqZWN0KiBsb2FkZXIgPSBqc0R5bmFtaWNDYXN0PE1vZHVsZUxv
YWRlck9iamVjdCo+KGV4ZWMtPnRoaXNWYWx1ZSgpKTsKKyAgICBpZiAoIWxvYWRlcikKKyAgICAg
ICAgcmV0dXJuIEpTVmFsdWU6OmVuY29kZShqc1VuZGVmaW5lZCgpKTsKKyAgICByZXR1cm4gSlNW
YWx1ZTo6ZW5jb2RlKGxvYWRlci0+dHJhbnNsYXRlKGV4ZWMsIGV4ZWMtPmFyZ3VtZW50KDApLCBl
eGVjLT5hcmd1bWVudCgxKSkpOworfQorCitFbmNvZGVkSlNWYWx1ZSBKU0NfSE9TVF9DQUxMIG1v
ZHVsZUxvYWRlck9iamVjdEluc3RhbnRpYXRlKEV4ZWNTdGF0ZSogZXhlYykKK3sKKyAgICAvLyBI
b29rIHBvaW50LCBMb2FkZXIuaW5zdGFudGlhdGUKKyAgICAvLyBodHRwczovL3doYXR3Zy5naXRo
dWIuaW8vbG9hZGVyLyNicm93c2VyLWluc3RhbnRpYXRlCisgICAgLy8gVGFrZSB0aGUga2V5IGFu
ZCB0aGUgdHJhbnNsYXRlZCBzb3VyY2UgY29kZSwgYW5kIGluc3RhbnRpYXRlIHRoZSBtb2R1bGUg
cmVjb3JkCisgICAgLy8gYnkgcGFyc2luZyB0aGUgbW9kdWxlIHNvdXJjZSBjb2RlLgorICAgIC8v
IEl0IGhhcyB0aGUgY2hhbmNlIHRvIHByb3ZpZGUgdGhlIG9wdGlvbmFsIG1vZHVsZSBpbnN0YW5j
ZSB0aGF0IGlzIGRpZmZlcmVudCBmcm9tCisgICAgLy8gdGhlIG9yZGluYXJ5IG9uZS4KKyAgICBN
b2R1bGVMb2FkZXJPYmplY3QqIGxvYWRlciA9IGpzRHluYW1pY0Nhc3Q8TW9kdWxlTG9hZGVyT2Jq
ZWN0Kj4oZXhlYy0+dGhpc1ZhbHVlKCkpOworICAgIGlmICghbG9hZGVyKQorICAgICAgICByZXR1
cm4gSlNWYWx1ZTo6ZW5jb2RlKGpzVW5kZWZpbmVkKCkpOworICAgIHJldHVybiBKU1ZhbHVlOjpl
bmNvZGUobG9hZGVyLT5pbnN0YW50aWF0ZShleGVjLCBleGVjLT5hcmd1bWVudCgwKSwgZXhlYy0+
YXJndW1lbnQoMSkpKTsKK30KKworfSAvLyBuYW1lc3BhY2UgSlNDCmRpZmYgLS1naXQgYS9Tb3Vy
Y2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9Nb2R1bGVMb2FkZXJPYmplY3QuaCBiL1NvdXJjZS9K
YXZhU2NyaXB0Q29yZS9ydW50aW1lL01vZHVsZUxvYWRlck9iamVjdC5oCm5ldyBmaWxlIG1vZGUg
MTAwNjQ0CmluZGV4IDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAuLmZk
NmM2MDEwODg0YTRmNDM0OWYwOWZmZjc5M2Y0MmE1Y2UyMDg0MDcKLS0tIC9kZXYvbnVsbAorKysg
Yi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9Nb2R1bGVMb2FkZXJPYmplY3QuaApAQCAt
MCwwICsxLDgxIEBACisvKgorICogQ29weXJpZ2h0IChDKSAyMDE1IEFwcGxlIEluYy4gQWxsIFJp
Z2h0cyBSZXNlcnZlZC4KKyAqCisgKiBSZWRpc3RyaWJ1dGlvbiBhbmQgdXNlIGluIHNvdXJjZSBh
bmQgYmluYXJ5IGZvcm1zLCB3aXRoIG9yIHdpdGhvdXQKKyAqIG1vZGlmaWNhdGlvbiwgYXJlIHBl
cm1pdHRlZCBwcm92aWRlZCB0aGF0IHRoZSBmb2xsb3dpbmcgY29uZGl0aW9ucworICogYXJlIG1l
dDoKKyAqIDEuIFJlZGlzdHJpYnV0aW9ucyBvZiBzb3VyY2UgY29kZSBtdXN0IHJldGFpbiB0aGUg
YWJvdmUgY29weXJpZ2h0CisgKiAgICBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFu
ZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIuCisgKiAyLiBSZWRpc3RyaWJ1dGlvbnMgaW4gYmlu
YXJ5IGZvcm0gbXVzdCByZXByb2R1Y2UgdGhlIGFib3ZlIGNvcHlyaWdodAorICogICAgbm90aWNl
LCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyIGlu
IHRoZQorICogICAgZG9jdW1lbnRhdGlvbiBhbmQvb3Igb3RoZXIgbWF0ZXJpYWxzIHByb3ZpZGVk
IHdpdGggdGhlIGRpc3RyaWJ1dGlvbi4KKyAqCisgKiBUSElTIFNPRlRXQVJFIElTIFBST1ZJREVE
IEJZIEFQUExFIElOQy4gYGBBUyBJUycnIEFORCBBTlkKKyAqIEVYUFJFU1MgT1IgSU1QTElFRCBX
QVJSQU5USUVTLCBJTkNMVURJTkcsIEJVVCBOT1QgTElNSVRFRCBUTywgVEhFCisgKiBJTVBMSUVE
IFdBUlJBTlRJRVMgT0YgTUVSQ0hBTlRBQklMSVRZIEFORCBGSVRORVNTIEZPUiBBIFBBUlRJQ1VM
QVIKKyAqIFBVUlBPU0UgQVJFIERJU0NMQUlNRUQuICBJTiBOTyBFVkVOVCBTSEFMTCBBUFBMRSBJ
TkMuIE9SCisgKiBDT05UUklCVVRPUlMgQkUgTElBQkxFIEZPUiBBTlkgRElSRUNULCBJTkRJUkVD
VCwgSU5DSURFTlRBTCwgU1BFQ0lBTCwKKyAqIEVYRU1QTEFSWSwgT1IgQ09OU0VRVUVOVElBTCBE
QU1BR0VTIChJTkNMVURJTkcsIEJVVCBOT1QgTElNSVRFRCBUTywKKyAqIFBST0NVUkVNRU5UIE9G
IFNVQlNUSVRVVEUgR09PRFMgT1IgU0VSVklDRVM7IExPU1MgT0YgVVNFLCBEQVRBLCBPUgorICog
UFJPRklUUzsgT1IgQlVTSU5FU1MgSU5URVJSVVBUSU9OKSBIT1dFVkVSIENBVVNFRCBBTkQgT04g
QU5ZIFRIRU9SWQorICogT0YgTElBQklMSVRZLCBXSEVUSEVSIElOIENPTlRSQUNULCBTVFJJQ1Qg
TElBQklMSVRZLCBPUiBUT1JUCisgKiAoSU5DTFVESU5HIE5FR0xJR0VOQ0UgT1IgT1RIRVJXSVNF
KSBBUklTSU5HIElOIEFOWSBXQVkgT1VUIE9GIFRIRSBVU0UKKyAqIE9GIFRISVMgU09GVFdBUkUs
IEVWRU4gSUYgQURWSVNFRCBPRiBUSEUgUE9TU0lCSUxJVFkgT0YgU1VDSCBEQU1BR0UuCisgKi8K
KworI2lmbmRlZiBNb2R1bGVMb2FkZXJPYmplY3RfaAorI2RlZmluZSBNb2R1bGVMb2FkZXJPYmpl
Y3RfaAorCisjaW5jbHVkZSAiSlNPYmplY3QuaCIKKworbmFtZXNwYWNlIEpTQyB7CisKK2NsYXNz
IE1vZHVsZUxvYWRlck9iamVjdCA6IHB1YmxpYyBKU05vbkZpbmFsT2JqZWN0IHsKK3ByaXZhdGU6
CisgICAgTW9kdWxlTG9hZGVyT2JqZWN0KFZNJiwgU3RydWN0dXJlKik7CitwdWJsaWM6CisgICAg
dHlwZWRlZiBKU05vbkZpbmFsT2JqZWN0IEJhc2U7CisgICAgc3RhdGljIGNvbnN0IHVuc2lnbmVk
IFN0cnVjdHVyZUZsYWdzID0gQmFzZTo6U3RydWN0dXJlRmxhZ3MgfCBPdmVycmlkZXNHZXRPd25Q
cm9wZXJ0eVNsb3Q7CisKKyAgICBlbnVtIFN0YXR1cyB7CisgICAgICAgIEZldGNoID0gMSwKKyAg
ICAgICAgVHJhbnNsYXRlID0gMiwKKyAgICAgICAgSW5zdGFudGlhdGUgPSAzLAorICAgICAgICBS
ZXNvbHZlRGVwZW5kZW5jaWVzID0gNCwKKyAgICAgICAgTGluayA9IDUsCisgICAgICAgIFJlYWR5
ID0gNiwKKyAgICB9OworCisgICAgc3RhdGljIE1vZHVsZUxvYWRlck9iamVjdCogY3JlYXRlKFZN
JiB2bSwgSlNHbG9iYWxPYmplY3QqIGdsb2JhbE9iamVjdCwgU3RydWN0dXJlKiBzdHJ1Y3R1cmUp
CisgICAgeworICAgICAgICBNb2R1bGVMb2FkZXJPYmplY3QqIG9iamVjdCA9IG5ldyAoTm90TnVs
bCwgYWxsb2NhdGVDZWxsPE1vZHVsZUxvYWRlck9iamVjdD4odm0uaGVhcCkpIE1vZHVsZUxvYWRl
ck9iamVjdCh2bSwgc3RydWN0dXJlKTsKKyAgICAgICAgb2JqZWN0LT5maW5pc2hDcmVhdGlvbih2
bSwgZ2xvYmFsT2JqZWN0KTsKKyAgICAgICAgcmV0dXJuIG9iamVjdDsKKyAgICB9CisKKyAgICBE
RUNMQVJFX0lORk87CisKKyAgICBzdGF0aWMgU3RydWN0dXJlKiBjcmVhdGVTdHJ1Y3R1cmUoVk0m
IHZtLCBKU0dsb2JhbE9iamVjdCogZ2xvYmFsT2JqZWN0LCBKU1ZhbHVlIHByb3RvdHlwZSkKKyAg
ICB7CisgICAgICAgIHJldHVybiBTdHJ1Y3R1cmU6OmNyZWF0ZSh2bSwgZ2xvYmFsT2JqZWN0LCBw
cm90b3R5cGUsIFR5cGVJbmZvKE9iamVjdFR5cGUsIFN0cnVjdHVyZUZsYWdzKSwgaW5mbygpKTsK
KyAgICB9CisKKyAgICAvLyBBUElzIHRvIGNvbnRyb2wgdGhlIG1vZHVsZSBsb2FkZXIuCisgICAg
SlNWYWx1ZSBwcm92aWRlKEV4ZWNTdGF0ZSosIEpTVmFsdWUga2V5LCBTdGF0dXMsIGNvbnN0IFN0
cmluZyYpOworICAgIEpTVmFsdWUgcmVxdWVzdEluc3RhbnRpYXRlQWxsKEV4ZWNTdGF0ZSosIEpT
VmFsdWUga2V5KTsKKworICAgIC8vIFBsYXRmb3JtIGRlcGVuZGVudCBob29rZWQgQVBJcy4KKyAg
ICBKU1ZhbHVlIHJlc29sdmUoRXhlY1N0YXRlKiwgSlNWYWx1ZSBuYW1lLCBKU1ZhbHVlIHJlZmVy
cmVyKTsKKyAgICBKU1ZhbHVlIGZldGNoKEV4ZWNTdGF0ZSosIEpTVmFsdWUga2V5KTsKKyAgICBK
U1ZhbHVlIHRyYW5zbGF0ZShFeGVjU3RhdGUqLCBKU1ZhbHVlIGtleSwgSlNWYWx1ZSBwYXlsb2Fk
KTsKKyAgICBKU1ZhbHVlIGluc3RhbnRpYXRlKEV4ZWNTdGF0ZSosIEpTVmFsdWUga2V5LCBKU1Zh
bHVlIHNvdXJjZSk7CisKKyAgICBzdGF0aWMgYm9vbCBnZXRPd25Qcm9wZXJ0eVNsb3QoSlNPYmpl
Y3QqLCBFeGVjU3RhdGUqLCBQcm9wZXJ0eU5hbWUsIFByb3BlcnR5U2xvdCYpOworCitwcm90ZWN0
ZWQ6CisgICAgdm9pZCBmaW5pc2hDcmVhdGlvbihWTSYsIEpTR2xvYmFsT2JqZWN0Kik7Cit9Owor
Cit9IC8vIG5hbWVzcGFjZSBKU0MKKworI2VuZGlmIC8vIE1vZHVsZUxvYWRlck9iamVjdF9oCmRp
ZmYgLS1naXQgYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9PcHRpb25zLmggYi9Tb3Vy
Y2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9PcHRpb25zLmgKaW5kZXggMjU5NjA3ODcxYzY1ZjI3
ZjRjNjYyODllOTkyNmVhZDI1ZDUxMzBjYi4uZTM3Yjk5YmYwOTRhYzRhNDVjNTQ1MjMwNjFjMzZi
ZGZiZGM2ODBkMyAxMDA2NDQKLS0tIGEvU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvT3B0
aW9ucy5oCisrKyBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL09wdGlvbnMuaApAQCAt
MzI0LDYgKzMyNCw4IEBAIHR5cGVkZWYgY29uc3QgY2hhciogb3B0aW9uU3RyaW5nOwogICAgIHYo
dW5zaWduZWQsIHdhdGNoZG9nLCAwLCAid2F0Y2hkb2cgdGltZW91dCAoMCA9IERpc2FibGVkLCBO
ID0gYSB0aW1lb3V0IHBlcmlvZCBvZiBOIG1pbGxpc2Vjb25kcykiKSBcCiAgICAgXAogICAgIHYo
Ym9vbCwgZHVtcE1vZHVsZVJlY29yZCwgZmFsc2UsIG51bGxwdHIpIFwKKyAgICB2KGJvb2wsIGR1
bXBNb2R1bGVMb2FkaW5nU3RhdGUsIGZhbHNlLCBudWxscHRyKSBcCisgICAgdihib29sLCBleHBv
c2VJbnRlcm5hbE1vZHVsZUxvYWRlciwgZmFsc2UsICJleHBvc2UgdGhlIGludGVybmFsIG1vZHVs
ZSBsb2FkZXIgb2JqZWN0IHRvIHRoZSBnbG9iYWwgc3BhY2UgZm9yIGRlYnVnZ2luZyIpIFwKIAog
Y2xhc3MgT3B0aW9ucyB7CiBwdWJsaWM6CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9iaW5k
aW5ncy9qcy9KU0RPTVdpbmRvd0Jhc2UuY3BwIGIvU291cmNlL1dlYkNvcmUvYmluZGluZ3MvanMv
SlNET01XaW5kb3dCYXNlLmNwcAppbmRleCA5YWIwYThmMGQwZmJkNzhlNWU1N2Q1ODA0NzdlNjU1
Y2I4OTU5NWQxLi5hMjkwZGRjOWU1ODFhY2Q2MzQzMDE3MDBiYWY4MjdjYTFhNGVmZDAyIDEwMDY0
NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9iaW5kaW5ncy9qcy9KU0RPTVdpbmRvd0Jhc2UuY3BwCisr
KyBiL1NvdXJjZS9XZWJDb3JlL2JpbmRpbmdzL2pzL0pTRE9NV2luZG93QmFzZS5jcHAKQEAgLTU2
LDcgKzU2LDcgQEAgc3RhdGljIGJvb2wgc2hvdWxkQWxsb3dBY2Nlc3NGcm9tKGNvbnN0IEpTR2xv
YmFsT2JqZWN0KiB0aGlzT2JqZWN0LCBFeGVjU3RhdGUqIGUKIAogY29uc3QgQ2xhc3NJbmZvIEpT
RE9NV2luZG93QmFzZTo6c19pbmZvID0geyAiV2luZG93IiwgJkpTRE9NR2xvYmFsT2JqZWN0Ojpz
X2luZm8sIDAsIENSRUFURV9NRVRIT0RfVEFCTEUoSlNET01XaW5kb3dCYXNlKSB9OwogCi1jb25z
dCBHbG9iYWxPYmplY3RNZXRob2RUYWJsZSBKU0RPTVdpbmRvd0Jhc2U6OnNfZ2xvYmFsT2JqZWN0
TWV0aG9kVGFibGUgPSB7ICZzaG91bGRBbGxvd0FjY2Vzc0Zyb20sICZzdXBwb3J0c1Byb2ZpbGlu
ZywgJnN1cHBvcnRzUmljaFNvdXJjZUluZm8sICZzaG91bGRJbnRlcnJ1cHRTY3JpcHQsICZqYXZh
U2NyaXB0UnVudGltZUZsYWdzLCAmcXVldWVUYXNrVG9FdmVudExvb3AsICZzaG91bGRJbnRlcnJ1
cHRTY3JpcHRCZWZvcmVUaW1lb3V0IH07Citjb25zdCBHbG9iYWxPYmplY3RNZXRob2RUYWJsZSBK
U0RPTVdpbmRvd0Jhc2U6OnNfZ2xvYmFsT2JqZWN0TWV0aG9kVGFibGUgPSB7ICZzaG91bGRBbGxv
d0FjY2Vzc0Zyb20sICZzdXBwb3J0c1Byb2ZpbGluZywgJnN1cHBvcnRzUmljaFNvdXJjZUluZm8s
ICZzaG91bGRJbnRlcnJ1cHRTY3JpcHQsICZqYXZhU2NyaXB0UnVudGltZUZsYWdzLCAmcXVldWVU
YXNrVG9FdmVudExvb3AsICZzaG91bGRJbnRlcnJ1cHRTY3JpcHRCZWZvcmVUaW1lb3V0LCBudWxs
cHRyLCBudWxscHRyLCBudWxscHRyLCBudWxscHRyIH07CiAKIEpTRE9NV2luZG93QmFzZTo6SlNE
T01XaW5kb3dCYXNlKFZNJiB2bSwgU3RydWN0dXJlKiBzdHJ1Y3R1cmUsIFBhc3NSZWZQdHI8RE9N
V2luZG93PiB3aW5kb3csIEpTRE9NV2luZG93U2hlbGwqIHNoZWxsKQogICAgIDogSlNET01HbG9i
YWxPYmplY3Qodm0sIHN0cnVjdHVyZSwgJnNoZWxsLT53b3JsZCgpLCAmc19nbG9iYWxPYmplY3RN
ZXRob2RUYWJsZSkKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2JpbmRpbmdzL2pzL0pTV29y
a2VyR2xvYmFsU2NvcGVCYXNlLmNwcCBiL1NvdXJjZS9XZWJDb3JlL2JpbmRpbmdzL2pzL0pTV29y
a2VyR2xvYmFsU2NvcGVCYXNlLmNwcAppbmRleCBhYWE1ZGJhNTUxNzFjYjk1NDFiYTY1ZTFkMjQ3
YWIyOWM5ZDljN2MzLi41MDQ0YmMxNzgzNTEzYjliMWEyNmJkM2JkMWNiNWMwMGI3MGExMGQwIDEw
MDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9iaW5kaW5ncy9qcy9KU1dvcmtlckdsb2JhbFNjb3Bl
QmFzZS5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvYmluZGluZ3MvanMvSlNXb3JrZXJHbG9iYWxT
Y29wZUJhc2UuY3BwCkBAIC00Myw3ICs0Myw3IEBAIG5hbWVzcGFjZSBXZWJDb3JlIHsKIAogY29u
c3QgQ2xhc3NJbmZvIEpTV29ya2VyR2xvYmFsU2NvcGVCYXNlOjpzX2luZm8gPSB7ICJXb3JrZXJH
bG9iYWxTY29wZSIsICZKU0RPTUdsb2JhbE9iamVjdDo6c19pbmZvLCAwLCBDUkVBVEVfTUVUSE9E
X1RBQkxFKEpTV29ya2VyR2xvYmFsU2NvcGVCYXNlKSB9OwogCi1jb25zdCBHbG9iYWxPYmplY3RN
ZXRob2RUYWJsZSBKU1dvcmtlckdsb2JhbFNjb3BlQmFzZTo6c19nbG9iYWxPYmplY3RNZXRob2RU
YWJsZSA9IHsgJmFsbG93c0FjY2Vzc0Zyb20sICZzdXBwb3J0c1Byb2ZpbGluZywgJnN1cHBvcnRz
UmljaFNvdXJjZUluZm8sICZzaG91bGRJbnRlcnJ1cHRTY3JpcHQsICZqYXZhU2NyaXB0UnVudGlt
ZUZsYWdzLCAmcXVldWVUYXNrVG9FdmVudExvb3AsICZzaG91bGRJbnRlcnJ1cHRTY3JpcHRCZWZv
cmVUaW1lb3V0IH07Citjb25zdCBHbG9iYWxPYmplY3RNZXRob2RUYWJsZSBKU1dvcmtlckdsb2Jh
bFNjb3BlQmFzZTo6c19nbG9iYWxPYmplY3RNZXRob2RUYWJsZSA9IHsgJmFsbG93c0FjY2Vzc0Zy
b20sICZzdXBwb3J0c1Byb2ZpbGluZywgJnN1cHBvcnRzUmljaFNvdXJjZUluZm8sICZzaG91bGRJ
bnRlcnJ1cHRTY3JpcHQsICZqYXZhU2NyaXB0UnVudGltZUZsYWdzLCAmcXVldWVUYXNrVG9FdmVu
dExvb3AsICZzaG91bGRJbnRlcnJ1cHRTY3JpcHRCZWZvcmVUaW1lb3V0LCBudWxscHRyLCBudWxs
cHRyLCBudWxscHRyLCBudWxscHRyIH07CiAKIEpTV29ya2VyR2xvYmFsU2NvcGVCYXNlOjpKU1dv
cmtlckdsb2JhbFNjb3BlQmFzZShKU0M6OlZNJiB2bSwgSlNDOjpTdHJ1Y3R1cmUqIHN0cnVjdHVy
ZSwgUGFzc1JlZlB0cjxXb3JrZXJHbG9iYWxTY29wZT4gaW1wbCkKICAgICA6IEpTRE9NR2xvYmFs
T2JqZWN0KHZtLCBzdHJ1Y3R1cmUsICZub3JtYWxXb3JsZCh2bSksICZzX2dsb2JhbE9iamVjdE1l
dGhvZFRhYmxlKQo=
</data>

          </attachment>
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>259388</attachid>
            <date>2015-08-19 12:02:52 -0700</date>
            <delta_ts>2015-08-19 21:52:39 -0700</delta_ts>
            <desc>Patch</desc>
            <filename>bug-147876-20150819120249.patch</filename>
            <type>text/plain</type>
            <size>127159</size>
            <attacher name="Yusuke Suzuki">ysuzuki</attacher>
            
              <data encoding="base64">U3VidmVyc2lvbiBSZXZpc2lvbjogMTg4NjQwCmRpZmYgLS1naXQgYS9Tb3VyY2UvSmF2YVNjcmlw
dENvcmUvQ2hhbmdlTG9nIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL0NoYW5nZUxvZwppbmRleCBj
ZTc2MTQ5MWYyMjA4NWQ0NDI1ZjIwMDFhODFiZmYzYTgzODUyYjBjLi5lZmY5ZTNiNzI1ZjQ4YjRj
NGRmYjIyYTE0ZTQwMTEwNGMzZjU4NDllIDEwMDY0NAotLS0gYS9Tb3VyY2UvSmF2YVNjcmlwdENv
cmUvQ2hhbmdlTG9nCisrKyBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9DaGFuZ2VMb2cKQEAgLTEs
MyArMSwxNjEgQEAKKzIwMTUtMDgtMTkgIFl1c3VrZSBTdXp1a2kgIDx1dGF0YW5lLnRlYUBnbWFp
bC5jb20+CisKKyAgICAgICAgW0VTNl0gcHJvdG90eXBpbmcgbW9kdWxlIGxvYWRlciBpbiBKU0Mg
c2hlbGwKKyAgICAgICAgaHR0cHM6Ly9idWdzLndlYmtpdC5vcmcvc2hvd19idWcuY2dpP2lkPTE0
Nzg3NgorCisgICAgICAgIFJldmlld2VkIGJ5IE5PQk9EWSAoT09QUyEpLgorCisgICAgICAgIFRo
aXMgcGF0Y2ggaW1wbGVtZW50cyBFUzYgTW9kdWxlIExvYWRlciBwYXJ0LiBUaGUgaW1wbGVtZW50
YXRpb24gaXMgYmFzZWQgb24KKyAgICAgICAgdGhlIGxhdGVzdCBkcmFmdFsxLCAyXS4gVGhlIG5h
aXZlIGltcGxlbWVudGF0aW9uIHBvc2VzIHNldmVyYWwgcHJvYmxlbXMuCisgICAgICAgIFRoaXMg
cGF0Y2ggYXR0ZW1wdHMgdG8gc29sdmUgdGhlIHNwZWMgaXNzdWVzIGFuZCBwcm9wb3NlcyB0aGUg
Zml4WzMsIDQsIDVdLgorCisgICAgICAgIFdlIGNvbnN0cnVjdCB0aGUgSlNDIGludGVybmFsIG1v
ZHVsZSBsb2FkZXIgYmFzZWQgb24gdGhlIEVTNiBQcm9taXNlcy4KKyAgICAgICAgVGhlIGNoYWlu
IG9mIHRoZSBwcm9taXNlcyByZXByZXNlbnRzIHRoZSBkZXBlbmRlbmN5IGdyYXBoIG9mIHRoZSBt
b2R1bGVzIGFuZAorICAgICAgICBpdCBhdXRvbWF0aWNhbGx5IGVuYWJsZXMgYXN5bmNocm9ub3Vz
IG1vZHVsZSBmZXRjaGluZy4KKyAgICAgICAgVG8gbGV2ZXJhZ2UgdGhlIFByb21pc2VzIGludGVy
bmFsbHksIHdlIHVzZSB0aGUgSW50ZXJuYWxQcm9taXNlWzZdLgorCisgICAgICAgIFRoZSBsb2Fk
ZXIgaGFzIHNldmVyYWwgcGxhdGZvcm0tZGVwZW5kZW50IGhvb2tzLiBUaGUgcGxhdGZvcm0gY2Fu
IGltcGxlbWVudAorICAgICAgICB0aGVzZSBob29rcyB0byBwcm92aWRlIHRoZSBmdW5jdGlvYWxp
dHkgbWlzc2luZyBpbiB0aGUgbW9kdWxlIGxvYWRlcnMsIGxpa2UKKyAgICAgICAgImhvdyB0byBm
ZXRjaCB0aGUgcmVzb3VyY2VzIi4gVGhlIG1ldGhvZCB0YWJsZSBvZiB0aGUgSlNHbG9iYWxPYmpl
Y3QgaXMgZXh0ZW5kZWQKKyAgICAgICAgdG8gYWNjZXB0IHRoZXNlIGhvb2tzIGZyb20gdGhlIHBs
YXRmb3JtLgorCisgICAgICAgIFRoaXMgcGF0Y2ggZm9jdXMgb24gdGhlIGxvYWRpbmcgcGFydC4g
U28gd2UgZG9uJ3QgY3JlYXRlIHRoZSBtb2R1bGUgZW52aXJvbm1lbnQKKyAgICAgICAgYW5kIGRv
bid0IGxpbmsgdGhlIG1vZHVsZXMgeWV0LgorCisgICAgICAgIFRvIHRlc3QgdGhlIGN1cnJlbnQg
bW9kdWxlIHByb2dyZXNzIGVhc2lseSwgd2UgYWRkIHRoZSBgLW1gIG9wdGlvbiB0byB0aGUgSlND
IHNoZWxsLgorICAgICAgICBXaGVuIHRoaXMgb3B0aW9uIGlzIHNwZWNpZmllZCwgd2UgbG9hZCB0
aGUgZ2l2ZW4gc2NyaXB0IGFzIHRoZSBtb2R1bGUuIEFuZCB0byB1c2UKKyAgICAgICAgdGhlIG1v
ZHVsZSBsb2FkaW5nIGluc2lkZSB0aGUgSlNDIHNoZWxsLCB3ZSBhZGRlZCB0aGUgc2ltcGxlIGxv
YWRlciBob29rIGZvciBmZXRjaGluZy4KKyAgICAgICAgSXQgZmV0Y2hlcyB0aGUgbW9kdWxlIGNv
bnRlbnQgZnJvbSB0aGUgZmlsZSBzeXN0ZW0uCisKKyAgICAgICAgQW5kIHRvIHVzZSB0aGUgRVM2
IE1hcCBpbiB0aGUgTG9hZGVyIGltcGxlbWVudGF0aW9uLCB3ZSBhZGRlZCBAZ2V0IGFuZCBAc2V0
IG1ldGhvZHMgdG8gdGhlIE1hcC4KKyAgICAgICAgQnV0IGl0IGNvbmZsaWN0cyB3aXRoIHRoZSBl
eGlzdGluZyBgZ2V0UHJpdmF0ZU5hbWVgIG1ldGhvZC4gUmVuYW1lIGl0IHRvIGBsb29rVXBQcml2
YXRlTmFtZWAuCisKKyAgICAgICAgWzFdOiBodHRwczovL3doYXR3Zy5naXRodWIuaW8vbG9hZGVy
LworICAgICAgICBbMl06IGh0dHBzOi8vZ2l0aHViLmNvbS93aGF0d2cvbG9hZGVyL2NvbW1pdC8y
MTRjN2E2NjI1YjQ0NWJkZjQxMWMzOTk4NGYzNmYwMTEzOWEyNGJlCisgICAgICAgIFszXTogaHR0
cHM6Ly9naXRodWIuY29tL3doYXR3Zy9sb2FkZXIvcHVsbC82NgorICAgICAgICBbNF06IGh0dHBz
Oi8vZ2l0aHViLmNvbS93aGF0d2cvbG9hZGVyL3B1bGwvNjcKKyAgICAgICAgWzVdOiBodHRwczov
L2dpdGh1Yi5jb20vd2hhdHdnL2xvYWRlci9pc3N1ZXMvNjgKKyAgICAgICAgWzZdOiBodHRwczov
L2J1Z3Mud2Via2l0Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9MTQ4MTM2CisKKyAgICAgICAgKiBDTWFr
ZUxpc3RzLnR4dDoKKyAgICAgICAgKiBEZXJpdmVkU291cmNlcy5tYWtlOgorICAgICAgICAqIEph
dmFTY3JpcHRDb3JlLnZjeHByb2ovSmF2YVNjcmlwdENvcmUudmN4cHJvajoKKyAgICAgICAgKiBK
YXZhU2NyaXB0Q29yZS52Y3hwcm9qL0phdmFTY3JpcHRDb3JlLnZjeHByb2ouZmlsdGVyczoKKyAg
ICAgICAgKiBKYXZhU2NyaXB0Q29yZS54Y29kZXByb2ovcHJvamVjdC5wYnhwcm9qOgorICAgICAg
ICAqIGJ1aWx0aW5zL0J1aWx0aW5OYW1lcy5oOgorICAgICAgICAoSlNDOjpCdWlsdGluTmFtZXM6
Omxvb2tVcFByaXZhdGVOYW1lKToKKyAgICAgICAgKEpTQzo6QnVpbHRpbk5hbWVzOjpsb29rVXBQ
dWJsaWNOYW1lKToKKyAgICAgICAgKEpTQzo6QnVpbHRpbk5hbWVzOjpnZXRQcml2YXRlTmFtZSk6
IERlbGV0ZWQuCisgICAgICAgIChKU0M6OkJ1aWx0aW5OYW1lczo6Z2V0UHVibGljTmFtZSk6IERl
bGV0ZWQuCisgICAgICAgICogYnVpbHRpbnMvTW9kdWxlTG9hZGVyT2JqZWN0LmpzOiBBZGRlZC4K
KyAgICAgICAgKHNldFN0YXRlVG9NYXgpOgorICAgICAgICAobmV3UmVnaXN0cnlFbnRyeSk6Cisg
ICAgICAgIChmb3JjZUZ1bGZpbGxQcm9taXNlKToKKyAgICAgICAgKGZ1bGZpbGxGZXRjaCk6Cisg
ICAgICAgIChmdWxmaWxsVHJhbnNsYXRlKToKKyAgICAgICAgKGZ1bGZpbGxJbnN0YW50aWF0ZSk6
CisgICAgICAgIChpbnN0YW50aWF0aW9uKToKKyAgICAgICAgKHJlcXVlc3RGZXRjaCk6CisgICAg
ICAgIChyZXF1ZXN0VHJhbnNsYXRlKToKKyAgICAgICAgKHJlcXVlc3RJbnN0YW50aWF0ZSk6Cisg
ICAgICAgIChyZXF1ZXN0UmVzb2x2ZURlcGVuZGVuY2llcy5yZXNvbHZlRGVwZW5kZW5jaWVzUHJv
bWlzZS50aGlzLnJlcXVlc3RJbnN0YW50aWF0ZS50aGVuLik6CisgICAgICAgIChyZXF1ZXN0UmVz
b2x2ZURlcGVuZGVuY2llcy5yZXNvbHZlRGVwZW5kZW5jaWVzUHJvbWlzZS50aGlzLnJlcXVlc3RJ
bnN0YW50aWF0ZS50aGVuKToKKyAgICAgICAgKHJlcXVlc3RSZXNvbHZlRGVwZW5kZW5jaWVzKToK
KyAgICAgICAgKHJlcXVlc3RJbnN0YW50aWF0ZUFsbCk6CisgICAgICAgIChwcm92aWRlKToKKyAg
ICAgICAgKiBqc2MuY3BwOgorICAgICAgICAoc3RyaW5nRnJvbVVURik6CisgICAgICAgIChqc2NT
b3VyY2UpOgorICAgICAgICAoR2xvYmFsT2JqZWN0Ojpsb2FkZXJGZXRjaCk6CisgICAgICAgIChm
dW5jdGlvbkNoZWNrTW9kdWxlU3ludGF4KToKKyAgICAgICAgKGR1bXBFeGNlcHRpb24pOgorICAg
ICAgICAocnVuV2l0aFNjcmlwdHMpOgorICAgICAgICAocHJpbnRVc2FnZVN0YXRlbWVudCk6Cisg
ICAgICAgIChDb21tYW5kTGluZTo6cGFyc2VBcmd1bWVudHMpOgorICAgICAgICAoanNjbWFpbik6
CisgICAgICAgIChDb21tYW5kTGluZTo6Q29tbWFuZExpbmUpOiBEZWxldGVkLgorICAgICAgICAq
IHBhcnNlci9MZXhlci5jcHA6CisgICAgICAgIChKU0M6OkxleGVyPExDaGFyPjo6cGFyc2VJZGVu
dGlmaWVyKToKKyAgICAgICAgKEpTQzo6TGV4ZXI8VUNoYXI+OjpwYXJzZUlkZW50aWZpZXIpOgor
ICAgICAgICAqIHBhcnNlci9Nb2R1bGVBbmFseXplci5jcHA6CisgICAgICAgIChKU0M6Ok1vZHVs
ZUFuYWx5emVyOjpNb2R1bGVBbmFseXplcik6CisgICAgICAgIChKU0M6Ok1vZHVsZUFuYWx5emVy
OjpleHBvcnRWYXJpYWJsZSk6CisgICAgICAgIChKU0M6Ok1vZHVsZUFuYWx5emVyOjphbmFseXpl
KToKKyAgICAgICAgKiBwYXJzZXIvTW9kdWxlQW5hbHl6ZXIuaDoKKyAgICAgICAgKEpTQzo6TW9k
dWxlQW5hbHl6ZXI6Om1vZHVsZVJlY29yZCk6CisgICAgICAgICogcGFyc2VyL01vZHVsZVJlY29y
ZC5jcHA6CisgICAgICAgIChKU0M6OnByaW50YWJsZU5hbWUpOiBEZWxldGVkLgorICAgICAgICAo
SlNDOjpNb2R1bGVSZWNvcmQ6OmR1bXApOiBEZWxldGVkLgorICAgICAgICAqIHBhcnNlci9Nb2R1
bGVSZWNvcmQuaDoKKyAgICAgICAgKEpTQzo6TW9kdWxlUmVjb3JkOjpJbXBvcnRFbnRyeTo6aXNO
YW1lc3BhY2UpOiBEZWxldGVkLgorICAgICAgICAoSlNDOjpNb2R1bGVSZWNvcmQ6OmNyZWF0ZSk6
IERlbGV0ZWQuCisgICAgICAgIChKU0M6Ok1vZHVsZVJlY29yZDo6YXBwZW5kUmVxdWVzdGVkTW9k
dWxlKTogRGVsZXRlZC4KKyAgICAgICAgKEpTQzo6TW9kdWxlUmVjb3JkOjphZGRJbXBvcnRFbnRy
eSk6IERlbGV0ZWQuCisgICAgICAgIChKU0M6Ok1vZHVsZVJlY29yZDo6YWRkRXhwb3J0RW50cnkp
OiBEZWxldGVkLgorICAgICAgICAoSlNDOjpNb2R1bGVSZWNvcmQ6OmFkZFN0YXJFeHBvcnRFbnRy
eSk6IERlbGV0ZWQuCisgICAgICAgICogcGFyc2VyL05vZGVzLmg6CisgICAgICAgICogcGFyc2Vy
L05vZGVzQW5hbHl6ZU1vZHVsZS5jcHA6CisgICAgICAgIChKU0M6OkltcG9ydERlY2xhcmF0aW9u
Tm9kZTo6YW5hbHl6ZU1vZHVsZSk6CisgICAgICAgIChKU0M6OkV4cG9ydEFsbERlY2xhcmF0aW9u
Tm9kZTo6YW5hbHl6ZU1vZHVsZSk6CisgICAgICAgIChKU0M6OkV4cG9ydE5hbWVkRGVjbGFyYXRp
b25Ob2RlOjphbmFseXplTW9kdWxlKToKKyAgICAgICAgKiBydW50aW1lL0NvbW1vbklkZW50aWZp
ZXJzLmNwcDoKKyAgICAgICAgKEpTQzo6Q29tbW9uSWRlbnRpZmllcnM6Omxvb2tVcFByaXZhdGVO
YW1lKToKKyAgICAgICAgKEpTQzo6Q29tbW9uSWRlbnRpZmllcnM6Omxvb2tVcFB1YmxpY05hbWUp
OgorICAgICAgICAoSlNDOjpDb21tb25JZGVudGlmaWVyczo6Z2V0UHJpdmF0ZU5hbWUpOiBEZWxl
dGVkLgorICAgICAgICAoSlNDOjpDb21tb25JZGVudGlmaWVyczo6Z2V0UHVibGljTmFtZSk6IERl
bGV0ZWQuCisgICAgICAgICogcnVudGltZS9Db21tb25JZGVudGlmaWVycy5oOgorICAgICAgICAq
IHJ1bnRpbWUvQ29tcGxldGlvbi5jcHA6CisgICAgICAgIChKU0M6OmNoZWNrTW9kdWxlU3ludGF4
KToKKyAgICAgICAgKEpTQzo6ZXZhbHVhdGVNb2R1bGUpOgorICAgICAgICAqIHJ1bnRpbWUvQ29t
cGxldGlvbi5oOgorICAgICAgICAqIHJ1bnRpbWUvRXhjZXB0aW9uSGVscGVycy5jcHA6CisgICAg
ICAgIChKU0M6OmNyZWF0ZVVuZGVmaW5lZFZhcmlhYmxlRXJyb3IpOgorICAgICAgICAqIHJ1bnRp
bWUvSWRlbnRpZmllci5oOgorICAgICAgICAqIHJ1bnRpbWUvSlNHbG9iYWxPYmplY3QuY3BwOgor
ICAgICAgICAoSlNDOjpKU0dsb2JhbE9iamVjdDo6aW5pdCk6CisgICAgICAgIChKU0M6OkpTR2xv
YmFsT2JqZWN0Ojp2aXNpdENoaWxkcmVuKToKKyAgICAgICAgKiBydW50aW1lL0pTR2xvYmFsT2Jq
ZWN0Lmg6CisgICAgICAgIChKU0M6OkpTR2xvYmFsT2JqZWN0Ojptb2R1bGVMb2FkZXIpOgorICAg
ICAgICAoSlNDOjpKU0dsb2JhbE9iamVjdDo6bW9kdWxlUmVjb3JkU3RydWN0dXJlKToKKyAgICAg
ICAgKiBydW50aW1lL0pTTW9kdWxlUmVjb3JkLmNwcDogUmVuYW1lZCBmcm9tIFNvdXJjZS9KYXZh
U2NyaXB0Q29yZS9wYXJzZXIvTW9kdWxlUmVjb3JkLmNwcC4KKyAgICAgICAgKEpTQzo6SlNNb2R1
bGVSZWNvcmQ6OmRlc3Ryb3kpOgorICAgICAgICAoSlNDOjpKU01vZHVsZVJlY29yZDo6ZmluaXNo
Q3JlYXRpb24pOgorICAgICAgICAoSlNDOjpwcmludGFibGVOYW1lKToKKyAgICAgICAgKEpTQzo6
SlNNb2R1bGVSZWNvcmQ6OmR1bXApOgorICAgICAgICAqIHJ1bnRpbWUvSlNNb2R1bGVSZWNvcmQu
aDogUmVuYW1lZCBmcm9tIFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9wYXJzZXIvTW9kdWxlUmVjb3Jk
LmguCisgICAgICAgIChKU0M6OkpTTW9kdWxlUmVjb3JkOjpJbXBvcnRFbnRyeTo6aXNOYW1lc3Bh
Y2UpOgorICAgICAgICAoSlNDOjpKU01vZHVsZVJlY29yZDo6Y3JlYXRlU3RydWN0dXJlKToKKyAg
ICAgICAgKEpTQzo6SlNNb2R1bGVSZWNvcmQ6OmNyZWF0ZSk6CisgICAgICAgIChKU0M6OkpTTW9k
dWxlUmVjb3JkOjpyZXF1ZXN0ZWRNb2R1bGVzKToKKyAgICAgICAgKEpTQzo6SlNNb2R1bGVSZWNv
cmQ6OkpTTW9kdWxlUmVjb3JkKToKKyAgICAgICAgKEpTQzo6SlNNb2R1bGVSZWNvcmQ6OmFwcGVu
ZFJlcXVlc3RlZE1vZHVsZSk6CisgICAgICAgIChKU0M6OkpTTW9kdWxlUmVjb3JkOjphZGRJbXBv
cnRFbnRyeSk6CisgICAgICAgIChKU0M6OkpTTW9kdWxlUmVjb3JkOjphZGRFeHBvcnRFbnRyeSk6
CisgICAgICAgIChKU0M6OkpTTW9kdWxlUmVjb3JkOjphZGRTdGFyRXhwb3J0RW50cnkpOgorICAg
ICAgICAqIHJ1bnRpbWUvTWFwUHJvdG90eXBlLmNwcDoKKyAgICAgICAgKEpTQzo6TWFwUHJvdG90
eXBlOjpmaW5pc2hDcmVhdGlvbik6CisgICAgICAgICogcnVudGltZS9Nb2R1bGVMb2FkZXJPYmpl
Y3QuY3BwOiBBZGRlZC4KKyAgICAgICAgKEpTQzo6TW9kdWxlTG9hZGVyT2JqZWN0OjpNb2R1bGVM
b2FkZXJPYmplY3QpOgorICAgICAgICAoSlNDOjpNb2R1bGVMb2FkZXJPYmplY3Q6OmZpbmlzaENy
ZWF0aW9uKToKKyAgICAgICAgKEpTQzo6TW9kdWxlTG9hZGVyT2JqZWN0OjpnZXRPd25Qcm9wZXJ0
eVNsb3QpOgorICAgICAgICAoSlNDOjpwcmludGFibGVNb2R1bGVLZXkpOgorICAgICAgICAoSlND
OjpNb2R1bGVMb2FkZXJPYmplY3Q6OnByb3ZpZGUpOgorICAgICAgICAoSlNDOjpNb2R1bGVMb2Fk
ZXJPYmplY3Q6OnJlcXVlc3RJbnN0YW50aWF0ZUFsbCk6CisgICAgICAgIChKU0M6Ok1vZHVsZUxv
YWRlck9iamVjdDo6cmVzb2x2ZSk6CisgICAgICAgIChKU0M6Ok1vZHVsZUxvYWRlck9iamVjdDo6
ZmV0Y2gpOgorICAgICAgICAoSlNDOjpNb2R1bGVMb2FkZXJPYmplY3Q6OnRyYW5zbGF0ZSk6Cisg
ICAgICAgIChKU0M6Ok1vZHVsZUxvYWRlck9iamVjdDo6aW5zdGFudGlhdGUpOgorICAgICAgICAo
SlNDOjptb2R1bGVMb2FkZXJPYmplY3RQYXJzZU1vZHVsZSk6CisgICAgICAgIChKU0M6Om1vZHVs
ZUxvYWRlck9iamVjdFJlcXVlc3RlZE1vZHVsZXMpOgorICAgICAgICAoSlNDOjptb2R1bGVMb2Fk
ZXJPYmplY3RSZXNvbHZlKToKKyAgICAgICAgKEpTQzo6bW9kdWxlTG9hZGVyT2JqZWN0RmV0Y2gp
OgorICAgICAgICAoSlNDOjptb2R1bGVMb2FkZXJPYmplY3RUcmFuc2xhdGUpOgorICAgICAgICAo
SlNDOjptb2R1bGVMb2FkZXJPYmplY3RJbnN0YW50aWF0ZSk6CisgICAgICAgICogcnVudGltZS9N
b2R1bGVMb2FkZXJPYmplY3QuaDogQWRkZWQuCisgICAgICAgIChKU0M6Ok1vZHVsZUxvYWRlck9i
amVjdDo6Y3JlYXRlKToKKyAgICAgICAgKEpTQzo6TW9kdWxlTG9hZGVyT2JqZWN0OjpjcmVhdGVT
dHJ1Y3R1cmUpOgorICAgICAgICAqIHJ1bnRpbWUvT3B0aW9ucy5oOgorCiAyMDE1LTA4LTE4ICBK
b3NlcGggUGVjb3Jhcm8gIDxwZWNvcmFyb0BhcHBsZS5jb20+CiAKICAgICAgICAgV2ViIEluc3Bl
Y3RvcjogTGlua3MgZm9yIHJ1bGVzIGluIDxzdHlsZT4gYXJlIGluY29ycmVjdCwgZG8gbm90IGFj
Y291bnQgZm9yIDxzdHlsZT4gb2Zmc2V0IGluIHRoZSBkb2N1bWVudApkaWZmIC0tZ2l0IGEvU291
cmNlL1dlYkNvcmUvQ2hhbmdlTG9nIGIvU291cmNlL1dlYkNvcmUvQ2hhbmdlTG9nCmluZGV4IDU1
NzAxZGFkZjFiNTFjMDJmNmRhODFjNWZmNmEyNTA1MDg5MGQ2YWMuLmY3YWZjZjBkOGI2ZjJjMWFj
OWE5N2U1Yzg5ZmYzOGMxYTZmMjNkMzAgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL0NoYW5n
ZUxvZworKysgYi9Tb3VyY2UvV2ViQ29yZS9DaGFuZ2VMb2cKQEAgLTEsMyArMSwxNSBAQAorMjAx
NS0wOC0xOSAgWXVzdWtlIFN1enVraSAgPHV0YXRhbmUudGVhQGdtYWlsLmNvbT4KKworICAgICAg
ICBbRVM2XSBwcm90b3R5cGluZyBtb2R1bGUgbG9hZGVyIGluIEpTQyBzaGVsbAorICAgICAgICBo
dHRwczovL2J1Z3Mud2Via2l0Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9MTQ3ODc2CisKKyAgICAgICAg
UmV2aWV3ZWQgYnkgTk9CT0RZIChPT1BTISkuCisKKyAgICAgICAgSnVzdCBmaWxsIExvYWRlciBo
b29rcyB3aXRoIG51bGxwdHIuCisKKyAgICAgICAgKiBiaW5kaW5ncy9qcy9KU0RPTVdpbmRvd0Jh
c2UuY3BwOgorICAgICAgICAqIGJpbmRpbmdzL2pzL0pTV29ya2VyR2xvYmFsU2NvcGVCYXNlLmNw
cDoKKwogMjAxNS0wOC0xOCAgTXlsZXMgQy4gTWF4ZmllbGQgIDxtbWF4ZmllbGRAYXBwbGUuY29t
PgogCiAgICAgICAgIFtDb2NvYV0gUHVuY3R1YXRpb24gbmVhciBIaW5kaSB0ZXh0IGlzIGdhcmJs
ZWQgd2hlbiBzdHlsZWQgd2l0aCB0aGUgc3lzdGVtIGZvbnQKZGlmZiAtLWdpdCBhL1NvdXJjZS9K
YXZhU2NyaXB0Q29yZS9DTWFrZUxpc3RzLnR4dCBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9DTWFr
ZUxpc3RzLnR4dAppbmRleCBkMjI1MjM4MTYzM2I0MmFiZWMyM2JhMDU4NjBkNDg0ZGYwOGE1ZGNj
Li5mODMzNDlkZGQwYjY1ZDFhNmM1ZjRlOTJmNGExYTgzNjM0NjI1M2ZjIDEwMDY0NAotLS0gYS9T
b3VyY2UvSmF2YVNjcmlwdENvcmUvQ01ha2VMaXN0cy50eHQKKysrIGIvU291cmNlL0phdmFTY3Jp
cHRDb3JlL0NNYWtlTGlzdHMudHh0CkBAIC0zOTAsNyArMzkwLDYgQEAgc2V0KEphdmFTY3JpcHRD
b3JlX1NPVVJDRVMKIAogICAgIHBhcnNlci9MZXhlci5jcHAKICAgICBwYXJzZXIvTW9kdWxlQW5h
bHl6ZXIuY3BwCi0gICAgcGFyc2VyL01vZHVsZVJlY29yZC5jcHAKICAgICBwYXJzZXIvTm9kZXMu
Y3BwCiAgICAgcGFyc2VyL05vZGVzQW5hbHl6ZU1vZHVsZS5jcHAKICAgICBwYXJzZXIvUGFyc2Vy
LmNwcApAQCAtNTMwLDYgKzUyOSw3IEBAIHNldChKYXZhU2NyaXB0Q29yZV9SVU5USU1FX1NPVVJD
RVMKICAgICBydW50aW1lL0pTTG9jay5jcHAKICAgICBydW50aW1lL0pTTWFwLmNwcAogICAgIHJ1
bnRpbWUvSlNNYXBJdGVyYXRvci5jcHAKKyAgICBydW50aW1lL0pTTW9kdWxlUmVjb3JkLmNwcAog
ICAgIHJ1bnRpbWUvSlNOb3RBbk9iamVjdC5jcHAKICAgICBydW50aW1lL0pTT05PYmplY3QuY3Bw
CiAgICAgcnVudGltZS9KU09iamVjdC5jcHAKQEAgLTU2NCw2ICs1NjQsNyBAQCBzZXQoSmF2YVNj
cmlwdENvcmVfUlVOVElNRV9TT1VSQ0VTCiAgICAgcnVudGltZS9NYXRoQ29tbW9uLmNwcAogICAg
IHJ1bnRpbWUvTWF0aE9iamVjdC5jcHAKICAgICBydW50aW1lL01lbW9yeVN0YXRpc3RpY3MuY3Bw
CisgICAgcnVudGltZS9Nb2R1bGVMb2FkZXJPYmplY3QuY3BwCiAgICAgcnVudGltZS9OYXRpdmVF
cnJvckNvbnN0cnVjdG9yLmNwcAogICAgIHJ1bnRpbWUvTmF0aXZlRXJyb3JQcm90b3R5cGUuY3Bw
CiAgICAgcnVudGltZS9OdWxsR2V0dGVyRnVuY3Rpb24uY3BwCkBAIC02NTYsNiArNjU3LDcgQEAg
c2V0KEphdmFTY3JpcHRDb3JlX0xVVF9GSUxFUwogICAgIHJ1bnRpbWUvSlNPTk9iamVjdC5jcHAK
ICAgICBydW50aW1lL0pTUHJvbWlzZUNvbnN0cnVjdG9yLmNwcAogICAgIHJ1bnRpbWUvSlNQcm9t
aXNlUHJvdG90eXBlLmNwcAorICAgIHJ1bnRpbWUvTW9kdWxlTG9hZGVyT2JqZWN0LmNwcAogICAg
IHJ1bnRpbWUvTnVtYmVyQ29uc3RydWN0b3IuY3BwCiAgICAgcnVudGltZS9OdW1iZXJQcm90b3R5
cGUuY3BwCiAgICAgcnVudGltZS9PYmplY3RDb25zdHJ1Y3Rvci5jcHAKZGlmZiAtLWdpdCBhL1Nv
dXJjZS9KYXZhU2NyaXB0Q29yZS9EZXJpdmVkU291cmNlcy5tYWtlIGIvU291cmNlL0phdmFTY3Jp
cHRDb3JlL0Rlcml2ZWRTb3VyY2VzLm1ha2UKaW5kZXggMWNiMmQ1Y2JhM2JkMzVlMjA5ZjlkMmM3
YmI0NjdiMmI5NmY3ZmE1ZC4uNTNhYmRiNmFkY2I3MTA4ZTdlZjE5M2I5Njk5NTY0OTU5NWYyYzE1
MSAxMDA2NDQKLS0tIGEvU291cmNlL0phdmFTY3JpcHRDb3JlL0Rlcml2ZWRTb3VyY2VzLm1ha2UK
KysrIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL0Rlcml2ZWRTb3VyY2VzLm1ha2UKQEAgLTU1LDYg
KzU1LDcgQEAgYWxsIDogXAogICAgIEpTUHJvbWlzZUNvbnN0cnVjdG9yLmx1dC5oIFwKICAgICBL
ZXl3b3JkTG9va3VwLmggXAogICAgIExleGVyLmx1dC5oIFwKKyAgICBNb2R1bGVMb2FkZXJPYmpl
Y3QubHV0LmggXAogICAgIE51bWJlckNvbnN0cnVjdG9yLmx1dC5oIFwKICAgICBOdW1iZXJQcm90
b3R5cGUubHV0LmggXAogICAgIE9iamVjdENvbnN0cnVjdG9yLmx1dC5oIFwKZGlmZiAtLWdpdCBh
L1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9KYXZhU2NyaXB0Q29yZS52Y3hwcm9qL0phdmFTY3JpcHRD
b3JlLnZjeHByb2ogYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvSmF2YVNjcmlwdENvcmUudmN4cHJv
ai9KYXZhU2NyaXB0Q29yZS52Y3hwcm9qCmluZGV4IDUwNjI0N2RhMDkzNjgwZWUzMTFiYjlmNDAy
NGYyNTY5NjYxM2ZlMjQuLjIwNTdmMWRmMWEyZDA0NjcwNDNjZWE3YmNkNWE0YmUxNzEzMDc5OTYg
MTAwNjQ0Ci0tLSBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9KYXZhU2NyaXB0Q29yZS52Y3hwcm9q
L0phdmFTY3JpcHRDb3JlLnZjeHByb2oKKysrIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL0phdmFT
Y3JpcHRDb3JlLnZjeHByb2ovSmF2YVNjcmlwdENvcmUudmN4cHJvagpAQCAtNjYyLDcgKzY2Miw2
IEBACiAgICAgPENsQ29tcGlsZSBJbmNsdWRlPSIuLlxsbHZtXExMVk1BUEkuY3BwIiAvPgogICAg
IDxDbENvbXBpbGUgSW5jbHVkZT0iLi5ccGFyc2VyXExleGVyLmNwcCIgLz4KICAgICA8Q2xDb21w
aWxlIEluY2x1ZGU9Ii4uXHBhcnNlclxNb2R1bGVBbmFseXplci5jcHAiIC8+Ci0gICAgPENsQ29t
cGlsZSBJbmNsdWRlPSIuLlxwYXJzZXJcTW9kdWxlUmVjb3JkLmNwcCIgLz4KICAgICA8Q2xDb21w
aWxlIEluY2x1ZGU9Ii4uXHBhcnNlclxOb2Rlcy5jcHAiIC8+CiAgICAgPENsQ29tcGlsZSBJbmNs
dWRlPSIuLlxwYXJzZXJcTm9kZXNBbmFseXplTW9kdWxlLmNwcCIgLz4KICAgICA8Q2xDb21waWxl
IEluY2x1ZGU9Ii4uXHBhcnNlclxQYXJzZXIuY3BwIiAvPgpAQCAtNzc5LDYgKzc3OCw3IEBACiAg
ICAgPENsQ29tcGlsZSBJbmNsdWRlPSIuLlxydW50aW1lXEpTTG9jay5jcHAiIC8+CiAgICAgPENs
Q29tcGlsZSBJbmNsdWRlPSIuLlxydW50aW1lXEpTTWFwLmNwcCIgLz4KICAgICA8Q2xDb21waWxl
IEluY2x1ZGU9Ii4uXHJ1bnRpbWVcSlNNYXBJdGVyYXRvci5jcHAiIC8+CisgICAgPENsQ29tcGls
ZSBJbmNsdWRlPSIuLlxydW50aW1lXEpTTW9kdWxlUmVjb3JkLmNwcCIgLz4KICAgICA8Q2xDb21w
aWxlIEluY2x1ZGU9Ii4uXHJ1bnRpbWVcSlNOb3RBbk9iamVjdC5jcHAiIC8+CiAgICAgPENsQ29t
cGlsZSBJbmNsdWRlPSIuLlxydW50aW1lXEpTT05PYmplY3QuY3BwIiAvPgogICAgIDxDbENvbXBp
bGUgSW5jbHVkZT0iLi5ccnVudGltZVxKU09iamVjdC5jcHAiIC8+CkBAIC04MTQsNiArODE0LDcg
QEAKICAgICA8Q2xDb21waWxlIEluY2x1ZGU9Ii4uXHJ1bnRpbWVcTWF0aENvbW1vbi5jcHAiIC8+
CiAgICAgPENsQ29tcGlsZSBJbmNsdWRlPSIuLlxydW50aW1lXE1hdGhPYmplY3QuY3BwIiAvPgog
ICAgIDxDbENvbXBpbGUgSW5jbHVkZT0iLi5ccnVudGltZVxNZW1vcnlTdGF0aXN0aWNzLmNwcCIg
Lz4KKyAgICA8Q2xDb21waWxlIEluY2x1ZGU9Ii4uXHJ1bnRpbWVcTW9kdWxlTG9hZGVyT2JqZWN0
LmNwcCIgLz4KICAgICA8Q2xDb21waWxlIEluY2x1ZGU9Ii4uXHJ1bnRpbWVcTmF0aXZlRXJyb3JD
b25zdHJ1Y3Rvci5jcHAiIC8+CiAgICAgPENsQ29tcGlsZSBJbmNsdWRlPSIuLlxydW50aW1lXE5h
dGl2ZUVycm9yUHJvdG90eXBlLmNwcCIgLz4KICAgICA8Q2xDb21waWxlIEluY2x1ZGU9Ii4uXHJ1
bnRpbWVcTnVsbEdldHRlckZ1bmN0aW9uLmNwcCIgLz4KQEAgLTkyNSw2ICs5MjYsNyBAQAogICAg
IDxDbEluY2x1ZGUgSW5jbHVkZT0iJChDb25maWd1cmF0aW9uQnVpbGREaXIpXG9iaiQoUGxhdGZv
cm1BcmNoaXRlY3R1cmUpXCQoUHJvamVjdE5hbWUpXERlcml2ZWRTb3VyY2VzXE51bWJlckNvbnN0
cnVjdG9yLmx1dC5oIiAvPgogICAgIDxDbEluY2x1ZGUgSW5jbHVkZT0iJChDb25maWd1cmF0aW9u
QnVpbGREaXIpXG9iaiQoUGxhdGZvcm1BcmNoaXRlY3R1cmUpXCQoUHJvamVjdE5hbWUpXERlcml2
ZWRTb3VyY2VzXE51bWJlclByb3RvdHlwZS5sdXQuaCIgLz4KICAgICA8Q2xJbmNsdWRlIEluY2x1
ZGU9IiQoQ29uZmlndXJhdGlvbkJ1aWxkRGlyKVxvYmokKFBsYXRmb3JtQXJjaGl0ZWN0dXJlKVwk
KFByb2plY3ROYW1lKVxEZXJpdmVkU291cmNlc1xPYmplY3RDb25zdHJ1Y3Rvci5sdXQuaCIgLz4K
KyAgICA8Q2xJbmNsdWRlIEluY2x1ZGU9IiQoQ29uZmlndXJhdGlvbkJ1aWxkRGlyKVxvYmokKFBs
YXRmb3JtQXJjaGl0ZWN0dXJlKVwkKFByb2plY3ROYW1lKVxEZXJpdmVkU291cmNlc1xNb2R1bGVM
b2FkZXJPYmplY3QubHV0LmgiIC8+CiAgICAgPENsSW5jbHVkZSBJbmNsdWRlPSIkKENvbmZpZ3Vy
YXRpb25CdWlsZERpcilcb2JqJChQbGF0Zm9ybUFyY2hpdGVjdHVyZSlcJChQcm9qZWN0TmFtZSlc
RGVyaXZlZFNvdXJjZXNcUmVmbGVjdE9iamVjdC5sdXQuaCIgLz4KICAgICA8Q2xJbmNsdWRlIElu
Y2x1ZGU9IiQoQ29uZmlndXJhdGlvbkJ1aWxkRGlyKVxvYmokKFBsYXRmb3JtQXJjaGl0ZWN0dXJl
KVwkKFByb2plY3ROYW1lKVxEZXJpdmVkU291cmNlc1xSZWdFeHBDb25zdHJ1Y3Rvci5sdXQuaCIg
Lz4KICAgICA8Q2xJbmNsdWRlIEluY2x1ZGU9IiQoQ29uZmlndXJhdGlvbkJ1aWxkRGlyKVxvYmok
KFBsYXRmb3JtQXJjaGl0ZWN0dXJlKVwkKFByb2plY3ROYW1lKVxEZXJpdmVkU291cmNlc1xSZWdF
eHBKaXRUYWJsZXMuaCIgLz4KQEAgLTE0NTcsNyArMTQ1OSw2IEBACiAgICAgPENsSW5jbHVkZSBJ
bmNsdWRlPSIuLlxwYXJzZXJcQVNUQnVpbGRlci5oIiAvPgogICAgIDxDbEluY2x1ZGUgSW5jbHVk
ZT0iLi5ccGFyc2VyXExleGVyLmgiIC8+CiAgICAgPENsSW5jbHVkZSBJbmNsdWRlPSIuLlxwYXJz
ZXJcTW9kdWxlQW5hbHl6ZXIuaCIgLz4KLSAgICA8Q2xJbmNsdWRlIEluY2x1ZGU9Ii4uXHBhcnNl
clxNb2R1bGVSZWNvcmQuaCIgLz4KICAgICA8Q2xJbmNsdWRlIEluY2x1ZGU9Ii4uXHBhcnNlclxO
b2RlQ29uc3RydWN0b3JzLmgiIC8+CiAgICAgPENsSW5jbHVkZSBJbmNsdWRlPSIuLlxwYXJzZXJc
Tm9kZXMuaCIgLz4KICAgICA8Q2xJbmNsdWRlIEluY2x1ZGU9Ii4uXHBhcnNlclxQYXJzZXIuaCIg
Lz4KQEAgLTE2MjMsNiArMTYyNCw3IEBACiAgICAgPENsSW5jbHVkZSBJbmNsdWRlPSIuLlxydW50
aW1lXEpTTG9jay5oIiAvPgogICAgIDxDbEluY2x1ZGUgSW5jbHVkZT0iLi5ccnVudGltZVxKU01h
cC5oIiAvPgogICAgIDxDbEluY2x1ZGUgSW5jbHVkZT0iLi5ccnVudGltZVxKU01hcEl0ZXJhdG9y
LmgiIC8+CisgICAgPENsSW5jbHVkZSBJbmNsdWRlPSIuLlxydW50aW1lXEpTTW9kdWxlUmVjb3Jk
LmgiIC8+CiAgICAgPENsSW5jbHVkZSBJbmNsdWRlPSIuLlxydW50aW1lXEpTTm90QW5PYmplY3Qu
aCIgLz4KICAgICA8Q2xJbmNsdWRlIEluY2x1ZGU9Ii4uXHJ1bnRpbWVcSlNPTk9iamVjdC5oIiAv
PgogICAgIDxDbEluY2x1ZGUgSW5jbHVkZT0iLi5ccnVudGltZVxKU09iamVjdC5oIiAvPgpAQCAt
MTY2OCw2ICsxNjcwLDcgQEAKICAgICA8Q2xJbmNsdWRlIEluY2x1ZGU9Ii4uXHJ1bnRpbWVcTWF0
aENvbW1vbi5oIiAvPgogICAgIDxDbEluY2x1ZGUgSW5jbHVkZT0iLi5ccnVudGltZVxNYXRoT2Jq
ZWN0LmgiIC8+CiAgICAgPENsSW5jbHVkZSBJbmNsdWRlPSIuLlxydW50aW1lXE1lbW9yeVN0YXRp
c3RpY3MuaCIgLz4KKyAgICA8Q2xJbmNsdWRlIEluY2x1ZGU9Ii4uXHJ1bnRpbWVcTW9kdWxlTG9h
ZGVyT2JqZWN0LmgiIC8+CiAgICAgPENsSW5jbHVkZSBJbmNsdWRlPSIuLlxydW50aW1lXE1pY3Jv
dGFzay5oIiAvPgogICAgIDxDbEluY2x1ZGUgSW5jbHVkZT0iLi5ccnVudGltZVxOYXRpdmVFcnJv
ckNvbnN0cnVjdG9yLmgiIC8+CiAgICAgPENsSW5jbHVkZSBJbmNsdWRlPSIuLlxydW50aW1lXE5h
dGl2ZUVycm9yUHJvdG90eXBlLmgiIC8+CmRpZmYgLS1naXQgYS9Tb3VyY2UvSmF2YVNjcmlwdENv
cmUvSmF2YVNjcmlwdENvcmUudmN4cHJvai9KYXZhU2NyaXB0Q29yZS52Y3hwcm9qLmZpbHRlcnMg
Yi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvSmF2YVNjcmlwdENvcmUudmN4cHJvai9KYXZhU2NyaXB0
Q29yZS52Y3hwcm9qLmZpbHRlcnMKaW5kZXggMDY2MGYyOTdlMmNjN2E3M2Y0YjNjMWJmOTQ1ZDU2
ZjFhNWRmNjZlYy4uNWExNGNjZTFlYzQxZmJiMTY0NjQwNzQ1N2EyOGZhOTEyNTM3NWY3YSAxMDA2
NDQKLS0tIGEvU291cmNlL0phdmFTY3JpcHRDb3JlL0phdmFTY3JpcHRDb3JlLnZjeHByb2ovSmF2
YVNjcmlwdENvcmUudmN4cHJvai5maWx0ZXJzCisrKyBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9K
YXZhU2NyaXB0Q29yZS52Y3hwcm9qL0phdmFTY3JpcHRDb3JlLnZjeHByb2ouZmlsdGVycwpAQCAt
NDU5LDkgKzQ1OSw2IEBACiAgICAgPENsQ29tcGlsZSBJbmNsdWRlPSIuLlxwYXJzZXJcTW9kdWxl
QW5hbHl6ZXIuY3BwIj4KICAgICAgIDxGaWx0ZXI+cGFyc2VyPC9GaWx0ZXI+CiAgICAgPC9DbENv
bXBpbGU+Ci0gICAgPENsQ29tcGlsZSBJbmNsdWRlPSIuLlxwYXJzZXJcTW9kdWxlUmVjb3JkLmNw
cCI+Ci0gICAgICA8RmlsdGVyPnBhcnNlcjwvRmlsdGVyPgotICAgIDwvQ2xDb21waWxlPgogICAg
IDxDbENvbXBpbGUgSW5jbHVkZT0iLi5ccGFyc2VyXE5vZGVzLmNwcCI+CiAgICAgICA8RmlsdGVy
PnBhcnNlcjwvRmlsdGVyPgogICAgIDwvQ2xDb21waWxlPgpAQCAtNzI2LDYgKzcyMyw5IEBACiAg
ICAgPENsQ29tcGlsZSBJbmNsdWRlPSIuLlxydW50aW1lXEpTTWFwLmNwcCI+CiAgICAgICA8Rmls
dGVyPnJ1bnRpbWU8L0ZpbHRlcj4KICAgICA8L0NsQ29tcGlsZT4KKyAgICA8Q2xDb21waWxlIElu
Y2x1ZGU9Ii4uXHJ1bnRpbWVcSlNNb2R1bGVSZWNvcmQuY3BwIj4KKyAgICAgIDxGaWx0ZXI+cnVu
dGltZTwvRmlsdGVyPgorICAgIDwvQ2xDb21waWxlPgogICAgIDxDbENvbXBpbGUgSW5jbHVkZT0i
Li5ccnVudGltZVxKU05vdEFuT2JqZWN0LmNwcCI+CiAgICAgICA8RmlsdGVyPnJ1bnRpbWU8L0Zp
bHRlcj4KICAgICA8L0NsQ29tcGlsZT4KQEAgLTE2OTgsNiArMTY5OCw5IEBACiAgICAgPENsQ29t
cGlsZSBJbmNsdWRlPSIuLlxydW50aW1lXE1lbW9yeVN0YXRpc3RpY3MuY3BwIj4KICAgICAgIDxG
aWx0ZXI+cnVudGltZTwvRmlsdGVyPgogICAgIDwvQ2xDb21waWxlPgorICAgIDxDbENvbXBpbGUg
SW5jbHVkZT0iLi5ccnVudGltZVxNb2R1bGVMb2FkZXJPYmplY3QuY3BwIj4KKyAgICAgIDxGaWx0
ZXI+cnVudGltZTwvRmlsdGVyPgorICAgIDwvQ2xDb21waWxlPgogICAgIDxDbENvbXBpbGUgSW5j
bHVkZT0iLi5cYnl0ZWNvZGVcQ29tcGxleEdldFN0YXR1cy5jcHAiPgogICAgICAgPEZpbHRlcj5i
eXRlY29kZTwvRmlsdGVyPgogICAgIDwvQ2xDb21waWxlPgpAQCAtMjQ5OCw5ICsyNTAxLDYgQEAK
ICAgICA8Q2xJbmNsdWRlIEluY2x1ZGU9Ii4uXHBhcnNlclxNb2R1bGVBbmFseXplci5oIj4KICAg
ICAgIDxGaWx0ZXI+cGFyc2VyPC9GaWx0ZXI+CiAgICAgPC9DbEluY2x1ZGU+Ci0gICAgPENsSW5j
bHVkZSBJbmNsdWRlPSIuLlxwYXJzZXJcTW9kdWxlUmVjb3JkLmgiPgotICAgICAgPEZpbHRlcj5w
YXJzZXI8L0ZpbHRlcj4KLSAgICA8L0NsSW5jbHVkZT4KICAgICA8Q2xJbmNsdWRlIEluY2x1ZGU9
Ii4uXHBhcnNlclxOb2RlQ29uc3RydWN0b3JzLmgiPgogICAgICAgPEZpbHRlcj5wYXJzZXI8L0Zp
bHRlcj4KICAgICA8L0NsSW5jbHVkZT4KQEAgLTMyMTMsNiArMzIxMyw5IEBACiAgICAgPENsSW5j
bHVkZSBJbmNsdWRlPSIkKENvbmZpZ3VyYXRpb25CdWlsZERpcilcb2JqJChQbGF0Zm9ybUFyY2hp
dGVjdHVyZSlcJChQcm9qZWN0TmFtZSlcRGVyaXZlZFNvdXJjZXNcTGV4ZXIubHV0LmgiPgogICAg
ICAgPEZpbHRlcj5EZXJpdmVkIFNvdXJjZXM8L0ZpbHRlcj4KICAgICA8L0NsSW5jbHVkZT4KKyAg
ICA8Q2xJbmNsdWRlIEluY2x1ZGU9IiQoQ29uZmlndXJhdGlvbkJ1aWxkRGlyKVxvYmokKFBsYXRm
b3JtQXJjaGl0ZWN0dXJlKVwkKFByb2plY3ROYW1lKVxEZXJpdmVkU291cmNlc1xNb2R1bGVMb2Fk
ZXJPYmplY3QubHV0LmgiPgorICAgICAgPEZpbHRlcj5EZXJpdmVkIFNvdXJjZXM8L0ZpbHRlcj4K
KyAgICA8L0NsSW5jbHVkZT4KICAgICA8Q2xJbmNsdWRlIEluY2x1ZGU9IiQoQ29uZmlndXJhdGlv
bkJ1aWxkRGlyKVxvYmokKFBsYXRmb3JtQXJjaGl0ZWN0dXJlKVwkKFByb2plY3ROYW1lKVxEZXJp
dmVkU291cmNlc1xOdW1iZXJDb25zdHJ1Y3Rvci5sdXQuaCI+CiAgICAgICA8RmlsdGVyPkRlcml2
ZWQgU291cmNlczwvRmlsdGVyPgogICAgIDwvQ2xJbmNsdWRlPgpAQCAtMzQ1MCw2ICszNDUzLDkg
QEAKICAgICA8Q2xJbmNsdWRlIEluY2x1ZGU9Ii4uXHJ1bnRpbWVcSlNNYXAuaCI+CiAgICAgICA8
RmlsdGVyPnJ1bnRpbWU8L0ZpbHRlcj4KICAgICA8L0NsSW5jbHVkZT4KKyAgICA8Q2xJbmNsdWRl
IEluY2x1ZGU9Ii4uXHJ1bnRpbWVcSlNNb2R1bGVSZWNvcmQuaCI+CisgICAgICA8RmlsdGVyPnJ1
bnRpbWU8L0ZpbHRlcj4KKyAgICA8L0NsSW5jbHVkZT4KICAgICA8Q2xJbmNsdWRlIEluY2x1ZGU9
Ii4uXHJ1bnRpbWVcSlNTZXQuaCI+CiAgICAgICA8RmlsdGVyPnJ1bnRpbWU8L0ZpbHRlcj4KICAg
ICA8L0NsSW5jbHVkZT4KQEAgLTQyNDYsNiArNDI1Miw5IEBACiAgICAgPENsSW5jbHVkZSBJbmNs
dWRlPSIuLlxydW50aW1lXE1lbW9yeVN0YXRpc3RpY3MuaCI+CiAgICAgICA8RmlsdGVyPnJ1bnRp
bWU8L0ZpbHRlcj4KICAgICA8L0NsSW5jbHVkZT4KKyAgICA8Q2xJbmNsdWRlIEluY2x1ZGU9Ii4u
XHJ1bnRpbWVcTW9kdWxlTG9hZGVyT2JqZWN0LmgiPgorICAgICAgPEZpbHRlcj5ydW50aW1lPC9G
aWx0ZXI+CisgICAgPC9DbEluY2x1ZGU+CiAgICAgPENsSW5jbHVkZSBJbmNsdWRlPSIuLlxieXRl
Y29kZVxDb21wbGV4R2V0U3RhdHVzLmgiPgogICAgICAgPEZpbHRlcj5ieXRlY29kZTwvRmlsdGVy
PgogICAgIDwvQ2xJbmNsdWRlPgpkaWZmIC0tZ2l0IGEvU291cmNlL0phdmFTY3JpcHRDb3JlL0ph
dmFTY3JpcHRDb3JlLnhjb2RlcHJvai9wcm9qZWN0LnBieHByb2ogYi9Tb3VyY2UvSmF2YVNjcmlw
dENvcmUvSmF2YVNjcmlwdENvcmUueGNvZGVwcm9qL3Byb2plY3QucGJ4cHJvagppbmRleCA0OGZm
Y2M2OTYzOGVmZjlhNzRhMWQwYWE0MGUxMGNjMDdmMWFhOTAzLi5hMGQ0NzBiNjI2ODdkM2E1OGNk
NzVkMWVmYzg0NWQ4MGFmYmFkYzI3IDEwMDY0NAotLS0gYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUv
SmF2YVNjcmlwdENvcmUueGNvZGVwcm9qL3Byb2plY3QucGJ4cHJvagorKysgYi9Tb3VyY2UvSmF2
YVNjcmlwdENvcmUvSmF2YVNjcmlwdENvcmUueGNvZGVwcm9qL3Byb2plY3QucGJ4cHJvagpAQCAt
MTcwMCwxMSArMTcwMCwxNiBAQAogCQlFMzU0NjIyQjFCNjA2NUQxMDA1NDUzODYgLyogQ29uc3Ry
dWN0QWJpbGl0eS5oIGluIEhlYWRlcnMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVm
ID0gRTM1NDYyMkExQjYwNjVEMTAwNTQ1Mzg2IC8qIENvbnN0cnVjdEFiaWxpdHkuaCAqLzsgc2V0
dGluZ3MgPSB7QVRUUklCVVRFUyA9IChQcml2YXRlLCApOyB9OyB9OwogCQlFMzVFMDM1RjFCN0FC
NDNFMDA3M0FEMkEgLyogSW5zcGVjdG9ySW5zdHJ1bWVudGF0aW9uT2JqZWN0LmNwcCBpbiBTb3Vy
Y2VzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IEUzNUUwMzVEMUI3QUI0M0Uw
MDczQUQyQSAvKiBJbnNwZWN0b3JJbnN0cnVtZW50YXRpb25PYmplY3QuY3BwICovOyB9OwogCQlF
MzVFMDM2MDFCN0FCNDNFMDA3M0FEMkEgLyogSW5zcGVjdG9ySW5zdHJ1bWVudGF0aW9uT2JqZWN0
LmggaW4gSGVhZGVycyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSBFMzVFMDM1
RTFCN0FCNDNFMDA3M0FEMkEgLyogSW5zcGVjdG9ySW5zdHJ1bWVudGF0aW9uT2JqZWN0LmggKi87
IHNldHRpbmdzID0ge0FUVFJJQlVURVMgPSAoUHJpdmF0ZSwgKTsgfTsgfTsKKwkJRTM1NUYzNTIx
QjdEQzg1MzAwQzUwREM1IC8qIE1vZHVsZUxvYWRlck9iamVjdC5jcHAgaW4gU291cmNlcyAqLyA9
IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSBFMzU1RjM1MDFCN0RDODUzMDBDNTBEQzUg
LyogTW9kdWxlTG9hZGVyT2JqZWN0LmNwcCAqLzsgfTsKKwkJRTM1NUYzNTMxQjdEQzg1MzAwQzUw
REM1IC8qIE1vZHVsZUxvYWRlck9iamVjdC5oIGluIEhlYWRlcnMgKi8gPSB7aXNhID0gUEJYQnVp
bGRGaWxlOyBmaWxlUmVmID0gRTM1NUYzNTExQjdEQzg1MzAwQzUwREM1IC8qIE1vZHVsZUxvYWRl
ck9iamVjdC5oICovOyB9OwogCQlFMzc5NEU3NTFCNzdFQjk3MDA1NTQzQUUgLyogTW9kdWxlQW5h
bHl6ZXIuY3BwIGluIFNvdXJjZXMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0g
RTM3OTRFNzMxQjc3RUI5NzAwNTU0M0FFIC8qIE1vZHVsZUFuYWx5emVyLmNwcCAqLzsgfTsKIAkJ
RTM3OTRFNzYxQjc3RUI5NzAwNTU0M0FFIC8qIE1vZHVsZUFuYWx5emVyLmggaW4gSGVhZGVycyAq
LyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSBFMzc5NEU3NDFCNzdFQjk3MDA1NTQz
QUUgLyogTW9kdWxlQW5hbHl6ZXIuaCAqLzsgc2V0dGluZ3MgPSB7QVRUUklCVVRFUyA9IChQcml2
YXRlLCApOyB9OyB9OwotCQlFMzk2M0NFRDFCNzNGNzUwMDBFQjRDRTUgLyogTW9kdWxlUmVjb3Jk
LmggaW4gSGVhZGVycyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSBFMzk2M0NF
QjFCNzNGNzUwMDBFQjRDRTUgLyogTW9kdWxlUmVjb3JkLmggKi87IHNldHRpbmdzID0ge0FUVFJJ
QlVURVMgPSAoUHJpdmF0ZSwgKTsgfTsgfTsKIAkJRTM5NjNDRUUxQjczRjc1MDAwRUI0Q0U1IC8q
IE5vZGVzQW5hbHl6ZU1vZHVsZS5jcHAgaW4gU291cmNlcyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZp
bGU7IGZpbGVSZWYgPSBFMzk2M0NFQzFCNzNGNzUwMDBFQjRDRTUgLyogTm9kZXNBbmFseXplTW9k
dWxlLmNwcCAqLzsgfTsKIAkJRTNDMDlGNTUxQjc5NjkyQTAwRUUzNkEyIC8qIE1vZHVsZVJlY29y
ZC5jcHAgaW4gU291cmNlcyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSBFM0Mw
OUY1NDFCNzk2OTJBMDBFRTM2QTIgLyogTW9kdWxlUmVjb3JkLmNwcCAqLzsgfTsKKwkJRTM1RTAz
NUYxQjdBQjQzRTAwNzNBRDJBIC8qIEluc3BlY3Rvckluc3RydW1lbnRhdGlvbk9iamVjdC5jcHAg
aW4gU291cmNlcyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSBFMzVFMDM1RDFC
N0FCNDNFMDA3M0FEMkEgLyogSW5zcGVjdG9ySW5zdHJ1bWVudGF0aW9uT2JqZWN0LmNwcCAqLzsg
fTsKKwkJRTM1RTAzNjAxQjdBQjQzRTAwNzNBRDJBIC8qIEluc3BlY3Rvckluc3RydW1lbnRhdGlv
bk9iamVjdC5oIGluIEhlYWRlcnMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0g
RTM1RTAzNUUxQjdBQjQzRTAwNzNBRDJBIC8qIEluc3BlY3Rvckluc3RydW1lbnRhdGlvbk9iamVj
dC5oICovOyBzZXR0aW5ncyA9IHtBVFRSSUJVVEVTID0gKFByaXZhdGUsICk7IH07IH07CisJCUUz
OURBNEE2MUI3RThCN0MwMDg0RjMzQSAvKiBKU01vZHVsZVJlY29yZC5jcHAgaW4gU291cmNlcyAq
LyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSBFMzlEQTRBNDFCN0U4QjdDMDA4NEYz
M0EgLyogSlNNb2R1bGVSZWNvcmQuY3BwICovOyB9OworCQlFMzlEQTRBNzFCN0U4QjdDMDA4NEYz
M0EgLyogSlNNb2R1bGVSZWNvcmQuaCBpbiBIZWFkZXJzICovID0ge2lzYSA9IFBCWEJ1aWxkRmls
ZTsgZmlsZVJlZiA9IEUzOURBNEE1MUI3RThCN0MwMDg0RjMzQSAvKiBKU01vZHVsZVJlY29yZC5o
ICovOyBzZXR0aW5ncyA9IHtBVFRSSUJVVEVTID0gKFByaXZhdGUsICk7IH07IH07CiAJCUUzRUY4
ODc0MUI2NkRGMjMwMDNGMjZDQiAvKiBKU1Byb3BlcnR5TmFtZUl0ZXJhdG9yLmNwcCBpbiBTb3Vy
Y2VzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IEUzRUY4ODcyMUI2NkRGMjMw
MDNGMjZDQiAvKiBKU1Byb3BlcnR5TmFtZUl0ZXJhdG9yLmNwcCAqLzsgfTsKIAkJRTNFRjg4NzUx
QjY2REYyMzAwM0YyNkNCIC8qIEpTUHJvcGVydHlOYW1lSXRlcmF0b3IuaCBpbiBIZWFkZXJzICov
ID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IEUzRUY4ODczMUI2NkRGMjMwMDNGMjZD
QiAvKiBKU1Byb3BlcnR5TmFtZUl0ZXJhdG9yLmggKi87IHNldHRpbmdzID0ge0FUVFJJQlVURVMg
PSAoUHJpdmF0ZSwgKTsgfTsgfTsKIAkJRTQ5REMxNkIxMkVGMjkzRTAwMTg0QTFGIC8qIFNvdXJj
ZVByb3ZpZGVyQ2FjaGUuY3BwIGluIFNvdXJjZXMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBm
aWxlUmVmID0gRTQ5REMxNTUxMkVGMjc3MjAwMTg0QTFGIC8qIFNvdXJjZVByb3ZpZGVyQ2FjaGUu
Y3BwICovOyB9OwpAQCAtMzUzNywxMSArMzU0MiwxNyBAQAogCQlFMzVFMDM1RDFCN0FCNDNFMDA3
M0FEMkEgLyogSW5zcGVjdG9ySW5zdHJ1bWVudGF0aW9uT2JqZWN0LmNwcCAqLyA9IHtpc2EgPSBQ
QlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHNv
dXJjZWNvZGUuY3BwLmNwcDsgcGF0aCA9IEluc3BlY3Rvckluc3RydW1lbnRhdGlvbk9iamVjdC5j
cHA7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CiAJCUUzNUUwMzVFMUI3QUI0M0UwMDczQUQy
QSAvKiBJbnNwZWN0b3JJbnN0cnVtZW50YXRpb25PYmplY3QuaCAqLyA9IHtpc2EgPSBQQlhGaWxl
UmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNv
ZGUuYy5oOyBwYXRoID0gSW5zcGVjdG9ySW5zdHJ1bWVudGF0aW9uT2JqZWN0Lmg7IHNvdXJjZVRy
ZWUgPSAiPGdyb3VwPiI7IH07CiAJCUUzNUUwMzYxMUI3QUI0ODUwMDczQUQyQSAvKiBJbnNwZWN0
b3JJbnN0cnVtZW50YXRpb25PYmplY3QuanMgKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsg
ZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmphdmFzY3Jp
cHQ7IHBhdGggPSBJbnNwZWN0b3JJbnN0cnVtZW50YXRpb25PYmplY3QuanM7IHNvdXJjZVRyZWUg
PSAiPGdyb3VwPiI7IH07CisJCUUzNTVGMzUwMUI3REM4NTMwMEM1MERDNSAvKiBNb2R1bGVMb2Fk
ZXJPYmplY3QuY3BwICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9
IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jcHAuY3BwOyBwYXRoID0gTW9kdWxl
TG9hZGVyT2JqZWN0LmNwcDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKKwkJRTM1NUYzNTEx
QjdEQzg1MzAwQzUwREM1IC8qIE1vZHVsZUxvYWRlck9iamVjdC5oICovID0ge2lzYSA9IFBCWEZp
bGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNl
Y29kZS5jLmg7IHBhdGggPSBNb2R1bGVMb2FkZXJPYmplY3QuaDsgc291cmNlVHJlZSA9ICI8Z3Jv
dXA+IjsgfTsKIAkJRTM3OTRFNzMxQjc3RUI5NzAwNTU0M0FFIC8qIE1vZHVsZUFuYWx5emVyLmNw
cCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25v
d25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuY3BwLmNwcDsgcGF0aCA9IE1vZHVsZUFuYWx5emVyLmNw
cDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKIAkJRTM3OTRFNzQxQjc3RUI5NzAwNTU0M0FF
IC8qIE1vZHVsZUFuYWx5emVyLmggKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVu
Y29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmMuaDsgcGF0aCA9IE1v
ZHVsZUFuYWx5emVyLmg7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07Ci0JCUUzOTYzQ0VCMUI3
M0Y3NTAwMEVCNENFNSAvKiBNb2R1bGVSZWNvcmQuaCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJl
bmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuYy5o
OyBwYXRoID0gTW9kdWxlUmVjb3JkLmg7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CiAJCUUz
OTYzQ0VDMUI3M0Y3NTAwMEVCNENFNSAvKiBOb2Rlc0FuYWx5emVNb2R1bGUuY3BwICovID0ge2lz
YSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBl
ID0gc291cmNlY29kZS5jcHAuY3BwOyBwYXRoID0gTm9kZXNBbmFseXplTW9kdWxlLmNwcDsgc291
cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKIAkJRTNDMDlGNTQxQjc5NjkyQTAwRUUzNkEyIC8qIE1v
ZHVsZVJlY29yZC5jcHAgKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5n
ID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmNwcC5jcHA7IHBhdGggPSBNb2R1
bGVSZWNvcmQuY3BwOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OworCQlFMzVFMDM1RDFCN0FC
NDNFMDA3M0FEMkEgLyogSW5zcGVjdG9ySW5zdHJ1bWVudGF0aW9uT2JqZWN0LmNwcCAqLyA9IHtp
c2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlw
ZSA9IHNvdXJjZWNvZGUuY3BwLmNwcDsgcGF0aCA9IEluc3BlY3Rvckluc3RydW1lbnRhdGlvbk9i
amVjdC5jcHA7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CisJCUUzNUUwMzVFMUI3QUI0M0Uw
MDczQUQyQSAvKiBJbnNwZWN0b3JJbnN0cnVtZW50YXRpb25PYmplY3QuaCAqLyA9IHtpc2EgPSBQ
QlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHNv
dXJjZWNvZGUuYy5oOyBwYXRoID0gSW5zcGVjdG9ySW5zdHJ1bWVudGF0aW9uT2JqZWN0Lmg7IHNv
dXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CisJCUUzNUUwMzYxMUI3QUI0ODUwMDczQUQyQSAvKiBJ
bnNwZWN0b3JJbnN0cnVtZW50YXRpb25PYmplY3QuanMgKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVy
ZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmph
dmFzY3JpcHQ7IHBhdGggPSBJbnNwZWN0b3JJbnN0cnVtZW50YXRpb25PYmplY3QuanM7IHNvdXJj
ZVRyZWUgPSAiPGdyb3VwPiI7IH07CisJCUUzOURBNEE0MUI3RThCN0MwMDg0RjMzQSAvKiBKU01v
ZHVsZVJlY29yZC5jcHAgKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5n
ID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmNwcC5jcHA7IHBhdGggPSBKU01v
ZHVsZVJlY29yZC5jcHA7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CisJCUUzOURBNEE1MUI3
RThCN0MwMDg0RjMzQSAvKiBKU01vZHVsZVJlY29yZC5oICovID0ge2lzYSA9IFBCWEZpbGVSZWZl
cmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5j
Lmg7IHBhdGggPSBKU01vZHVsZVJlY29yZC5oOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9Owog
CQlFM0VGODg3MjFCNjZERjIzMDAzRjI2Q0IgLyogSlNQcm9wZXJ0eU5hbWVJdGVyYXRvci5jcHAg
Ki8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3du
RmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmNwcC5jcHA7IHBhdGggPSBKU1Byb3BlcnR5TmFtZUl0ZXJh
dG9yLmNwcDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKIAkJRTNFRjg4NzMxQjY2REYyMzAw
M0YyNkNCIC8qIEpTUHJvcGVydHlOYW1lSXRlcmF0b3IuaCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVm
ZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUu
Yy5oOyBwYXRoID0gSlNQcm9wZXJ0eU5hbWVJdGVyYXRvci5oOyBzb3VyY2VUcmVlID0gIjxncm91
cD4iOyB9OwogCQlFNDlEQzE0OTEyRUYyNjFBMDAxODRBMUYgLyogU291cmNlUHJvdmlkZXJDYWNo
ZUl0ZW0uaCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBs
YXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuYy5oOyBwYXRoID0gU291cmNlUHJvdmlkZXJD
YWNoZUl0ZW0uaDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKQEAgLTQ0NTQsOCArNDQ2NSw2
IEBACiAJCQkJRjY5MkE4NjYwMjU1NTk3RDAxRkY2MEY3IC8qIExleGVyLmggKi8sCiAJCQkJRTM3
OTRFNzMxQjc3RUI5NzAwNTU0M0FFIC8qIE1vZHVsZUFuYWx5emVyLmNwcCAqLywKIAkJCQlFMzc5
NEU3NDFCNzdFQjk3MDA1NTQzQUUgLyogTW9kdWxlQW5hbHl6ZXIuaCAqLywKLQkJCQlFM0MwOUY1
NDFCNzk2OTJBMDBFRTM2QTIgLyogTW9kdWxlUmVjb3JkLmNwcCAqLywKLQkJCQlFMzk2M0NFQjFC
NzNGNzUwMDBFQjRDRTUgLyogTW9kdWxlUmVjb3JkLmggKi8sCiAJCQkJOTMwREFEMDMwRkIxRUIx
QTAwODJEMjA1IC8qIE5vZGVDb25zdHJ1Y3RvcnMuaCAqLywKIAkJCQlGNjkyQTg2RDAyNTU1OTdE
MDFGRjYwRjcgLyogTm9kZXMuY3BwICovLAogCQkJCUY2OTJBODZFMDI1NTU5N0QwMUZGNjBGNyAv
KiBOb2Rlcy5oICovLApAQCAtNDcxOSw2ICs0NzI4LDggQEAKIAkJCQlBNzAwODc0MDE3Q0JFOEVC
MDBDM0U2NDMgLyogSlNNYXAuaCAqLywKIAkJCQlBNzRERUY4RjE4MkQ5OTE0MDA1MjJDMjIgLyog
SlNNYXBJdGVyYXRvci5jcHAgKi8sCiAJCQkJQTc0REVGOTAxODJEOTkxNDAwNTIyQzIyIC8qIEpT
TWFwSXRlcmF0b3IuaCAqLywKKwkJCQlFMzlEQTRBNDFCN0U4QjdDMDA4NEYzM0EgLyogSlNNb2R1
bGVSZWNvcmQuY3BwICovLAorCQkJCUUzOURBNEE1MUI3RThCN0MwMDg0RjMzQSAvKiBKU01vZHVs
ZVJlY29yZC5oICovLAogCQkJCUE3MjcwMDc4MERBQzYwNTYwMEU1NDhENyAvKiBKU05vdEFuT2Jq
ZWN0LmNwcCAqLywKIAkJCQlBNzI3MDA3NzBEQUM2MDU2MDBFNTQ4RDcgLyogSlNOb3RBbk9iamVj
dC5oICovLAogCQkJCUJDMjJBMzk4MEUxNkUxNDgwMEFGMjFDOCAvKiBKU09iamVjdC5jcHAgKi8s
CkBAIC00Nzk4LDYgKzQ4MDksOCBAQAogCQkJCTkwMjEzRTNCMTIzQTQwQzIwMEQ0MjJGMyAvKiBN
ZW1vcnlTdGF0aXN0aWNzLmNwcCAqLywKIAkJCQk5MDIxM0UzQzEyM0E0MEMyMDBENDIyRjMgLyog
TWVtb3J5U3RhdGlzdGljcy5oICovLAogCQkJCTdDMDA4Q0U1MTg3NjMxQjYwMDk1NUMyNCAvKiBN
aWNyb3Rhc2suaCAqLywKKwkJCQlFMzU1RjM1MDFCN0RDODUzMDBDNTBEQzUgLyogTW9kdWxlTG9h
ZGVyT2JqZWN0LmNwcCAqLywKKwkJCQlFMzU1RjM1MTFCN0RDODUzMDBDNTBEQzUgLyogTW9kdWxl
TG9hZGVyT2JqZWN0LmggKi8sCiAJCQkJQkMwMkU5MDgwRTE4MzlEQjAwMEY5Mjk3IC8qIE5hdGl2
ZUVycm9yQ29uc3RydWN0b3IuY3BwICovLAogCQkJCUJDMDJFOTA5MEUxODM5REIwMDBGOTI5NyAv
KiBOYXRpdmVFcnJvckNvbnN0cnVjdG9yLmggKi8sCiAJCQkJQkMwMkU5MEEwRTE4MzlEQjAwMEY5
Mjk3IC8qIE5hdGl2ZUVycm9yUHJvdG90eXBlLmNwcCAqLywKQEAgLTU4MDcsNiArNTgyMCw3IEBA
CiAJCQlmaWxlcyA9ICgKIAkJCQkwRkZBNTQ5ODE2Qjg4MzUzMDBCM0E5ODIgLyogQTY0RE9wY29k
ZS5oIGluIEhlYWRlcnMgKi8sCiAJCQkJODYwMTYxRTMwRjNBODNDMTAwRjg0NzEwIC8qIEFic3Ry
YWN0TWFjcm9Bc3NlbWJsZXIuaCBpbiBIZWFkZXJzICovLAorCQkJCUUzNTVGMzUzMUI3REM4NTMw
MEM1MERDNSAvKiBNb2R1bGVMb2FkZXJPYmplY3QuaCBpbiBIZWFkZXJzICovLAogCQkJCTBGRTA1
MDI5MUFBOTA5NTYwMEQzM0IzMyAvKiBTY29wZWRBcmd1bWVudHNUYWJsZS5oIGluIEhlYWRlcnMg
Ki8sCiAJCQkJMEY1NUYwRjUxNEQxMDYzQzAwQUM3NjQ5IC8qIEFic3RyYWN0UEMuaCBpbiBIZWFk
ZXJzICovLAogCQkJCTJBNDhEMTkxMTc3MjM2NUIwMEM2NUE1RiAvKiBBUElDYWxsYmFja0Z1bmN0
aW9uLmggaW4gSGVhZGVycyAqLywKQEAgLTYyMDYsNyArNjIyMCw2IEBACiAJCQkJMEZDRUZBQUMx
ODA0QzEzRTAwNDcyQ0U0IC8qIEZUTFNhdmVSZXN0b3JlLmggaW4gSGVhZGVycyAqLywKIAkJCQkw
RjI1RjFCMjE4MTYzNUYzMDA1MjJGMzkgLyogRlRMU2xvd1BhdGhDYWxsLmggaW4gSGVhZGVycyAq
LywKIAkJCQlFMzU0NjIyQjFCNjA2NUQxMDA1NDUzODYgLyogQ29uc3RydWN0QWJpbGl0eS5oIGlu
IEhlYWRlcnMgKi8sCi0JCQkJRTM5NjNDRUQxQjczRjc1MDAwRUI0Q0U1IC8qIE1vZHVsZVJlY29y
ZC5oIGluIEhlYWRlcnMgKi8sCiAJCQkJMEYyNUYxQjQxODE2MzVGMzAwNTIyRjM5IC8qIEZUTFNs
b3dQYXRoQ2FsbEtleS5oIGluIEhlYWRlcnMgKi8sCiAJCQkJMEY5RDMzOUIxODAzQURCNzAwNzND
MkJDIC8qIEZUTFN0YWNrTWFwcy5oIGluIEhlYWRlcnMgKi8sCiAJCQkJMEZFQTBBMTIxNzA1MTNE
QjAwQkI3MjJDIC8qIEZUTFN0YXRlLmggaW4gSGVhZGVycyAqLywKQEAgLTYyMjcsNiArNjI0MCw3
IEBACiAJCQkJQkNCRTJDQUUxNEU5ODVBQTAwMDU5M0FEIC8qIEdDQXNzZXJ0aW9ucy5oIGluIEhl
YWRlcnMgKi8sCiAJCQkJMEY3NjZEMzAxNUE4RENFMjAwOEYzNjNFIC8qIEdDQXdhcmVKSVRTdHVi
Um91dGluZS5oIGluIEhlYWRlcnMgKi8sCiAJCQkJNzBFQzBFQzcxQUEwRDdEQTAwQjZBQUZBIC8q
IFN0cmluZ0l0ZXJhdG9yUHJvdG90eXBlLmggaW4gSGVhZGVycyAqLywKKwkJCQlFMzlEQTRBNzFC
N0U4QjdDMDA4NEYzM0EgLyogSlNNb2R1bGVSZWNvcmQuaCBpbiBIZWFkZXJzICovLAogCQkJCTBG
MkI2NkFDMTdCNkI1M0YwMEE3QUUzRiAvKiBHQ0luY29taW5nUmVmQ291bnRlZC5oIGluIEhlYWRl
cnMgKi8sCiAJCQkJMEYyQjY2QUQxN0I2QjU0NTAwQTdBRTNGIC8qIEdDSW5jb21pbmdSZWZDb3Vu
dGVkSW5saW5lcy5oIGluIEhlYWRlcnMgKi8sCiAJCQkJMEYyQjY2QUUxN0I2QjU0NTAwQTdBRTNG
IC8qIEdDSW5jb21pbmdSZWZDb3VudGVkU2V0LmggaW4gSGVhZGVycyAqLywKQEAgLTczNDMsNiAr
NzM1Nyw3IEBACiAJCQkJMkE4ODA2NzgxOTEwN0Q1NTAwQ0IwQkJCIC8qIERGR0Z1bmN0aW9uV2hp
dGVsaXN0LmNwcCBpbiBTb3VyY2VzICovLAogCQkJCTBGMkREODEzMUFCM0Q4QkUwMEJCQjhFOCAv
KiBERkdBcmd1bWVudHNVdGlsaXRpZXMuY3BwIGluIFNvdXJjZXMgKi8sCiAJCQkJQTdEODlDRjMx
N0EwQjhDQzAwNzczQUQ4IC8qIERGR0Jsb2NrSW5zZXJ0aW9uU2V0LmNwcCBpbiBTb3VyY2VzICov
LAorCQkJCUUzNTVGMzUyMUI3REM4NTMwMEM1MERDNSAvKiBNb2R1bGVMb2FkZXJPYmplY3QuY3Bw
IGluIFNvdXJjZXMgKi8sCiAJCQkJODZFQzlEQzQxMzI4REY4MjAwMkIyQUQ3IC8qIERGR0J5dGVD
b2RlUGFyc2VyLmNwcCBpbiBTb3VyY2VzICovLAogCQkJCTBGRDgyRTIxMTQxNzJDRTMwMDE3OUM5
NCAvKiBERkdDYXBhYmlsaXRpZXMuY3BwIGluIFNvdXJjZXMgKi8sCiAJCQkJMEYyQjlDRTYxOUQw
QkE3RDAwQjFEMUI1IC8qIERGR09iamVjdEFsbG9jYXRpb25TaW5raW5nUGhhc2UuY3BwIGluIFNv
dXJjZXMgKi8sCkBAIC03NjMyLDcgKzc2NDcsNiBAQAogCQkJCTBGMkI2NkVEMTdCNkI1QUIwMEE3
QUUzRiAvKiBKU0RhdGFWaWV3UHJvdG90eXBlLmNwcCBpbiBTb3VyY2VzICovLAogCQkJCTBGMkQ0
REU4MTk4MzJEQUMwMDdENEIxOSAvKiBUb1RoaXNTdGF0dXMuY3BwIGluIFNvdXJjZXMgKi8sCiAJ
CQkJRkUzODRFRTUxQUREQjdBRDAwNTVERTJDIC8qIEpTRG9sbGFyVk0uY3BwIGluIFNvdXJjZXMg
Ki8sCi0JCQkJRTNDMDlGNTUxQjc5NjkyQTAwRUUzNkEyIC8qIE1vZHVsZVJlY29yZC5jcHAgaW4g
U291cmNlcyAqLywKIAkJCQk5Nzg4MDE0MDE0NzFBRDkyMDA0MUIwMTYgLyogSlNEYXRlTWF0aC5j
cHAgaW4gU291cmNlcyAqLywKIAkJCQkwRkUwNTAxNzFBQTkwOTExMDBEMzNCMzMgLyogRGlyZWN0
QXJndW1lbnRzLmNwcCBpbiBTb3VyY2VzICovLAogCQkJCTE0MDU2NkQ2MTA3RUMyNzEwMDVEQkM4
RCAvKiBKU0Z1bmN0aW9uLmNwcCBpbiBTb3VyY2VzICovLApAQCAtNzg3NCw2ICs3ODg4LDcgQEAK
IAkJCQkwRkY0MjczMjE1OEVCRDU4MDA0Q0I5RkYgLyogVURpczg2RGlzYXNzZW1ibGVyLmNwcCBp
biBTb3VyY2VzICovLAogCQkJCUE3NkYyNzk0MTVGMTNDOTYwMDUxN0Q2NyAvKiBVbmxpbmtlZENv
ZGVCbG9jay5jcHAgaW4gU291cmNlcyAqLywKIAkJCQlCNTlGODkzOTE4OTFGMjlGMDBENUNDREMg
LyogVW5saW5rZWRJbnN0cnVjdGlvblN0cmVhbS5jcHAgaW4gU291cmNlcyAqLywKKwkJCQlFMzlE
QTRBNjFCN0U4QjdDMDA4NEYzM0EgLyogSlNNb2R1bGVSZWNvcmQuY3BwIGluIFNvdXJjZXMgKi8s
CiAJCQkJMEY3NTc2RDIxOEUxRkVFOTAwMkVGNENEIC8qIEFjY2Vzc29yQ2FsbEpJVFN0dWJSb3V0
aW5lLmNwcCBpbiBTb3VyY2VzICovLAogCQkJCTBGMjRFNTU4MTdGNzRFREIwMEFCQjIxNyAvKiBW
YWx1ZVJlY292ZXJ5LmNwcCBpbiBTb3VyY2VzICovLAogCQkJCUUxOEUzQTU5MERGOTI3OEMwMEQ5
MEIzNCAvKiBWTS5jcHAgaW4gU291cmNlcyAqLywKZGlmZiAtLWdpdCBhL1NvdXJjZS9KYXZhU2Ny
aXB0Q29yZS9idWlsdGlucy9CdWlsdGluTmFtZXMuaCBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9i
dWlsdGlucy9CdWlsdGluTmFtZXMuaAppbmRleCBjZTA0NDQ3OWY3MzAyZjE5YjFkODExNjhmOTll
YzQ4MzViNDAyMjBhLi43ZTU0MzQyZTc1MmY5ZjJkNGU4MzVlZDAzNGY0NjA5Y2YzNjVkMzlmIDEw
MDY0NAotLS0gYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvYnVpbHRpbnMvQnVpbHRpbk5hbWVzLmgK
KysrIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL2J1aWx0aW5zL0J1aWx0aW5OYW1lcy5oCkBAIC02
Nyw4ICs2Nyw4IEBAIGNsYXNzIEJ1aWx0aW5OYW1lcyB7CiAgICAgYm9vbCBpc1ByaXZhdGVOYW1l
KFN5bWJvbEltcGwmIHVpZCkgY29uc3Q7CiAgICAgYm9vbCBpc1ByaXZhdGVOYW1lKFVuaXF1ZWRT
dHJpbmdJbXBsJiB1aWQpIGNvbnN0OwogICAgIGJvb2wgaXNQcml2YXRlTmFtZShjb25zdCBJZGVu
dGlmaWVyJikgY29uc3Q7Ci0gICAgY29uc3QgSWRlbnRpZmllciogZ2V0UHJpdmF0ZU5hbWUoY29u
c3QgSWRlbnRpZmllciYpIGNvbnN0OwotICAgIGNvbnN0IElkZW50aWZpZXImIGdldFB1YmxpY05h
bWUoY29uc3QgSWRlbnRpZmllciYpIGNvbnN0OworICAgIGNvbnN0IElkZW50aWZpZXIqIGxvb2tV
cFByaXZhdGVOYW1lKGNvbnN0IElkZW50aWZpZXImKSBjb25zdDsKKyAgICBjb25zdCBJZGVudGlm
aWVyJiBsb29rVXBQdWJsaWNOYW1lKGNvbnN0IElkZW50aWZpZXImKSBjb25zdDsKICAgICAKICAg
ICBKU0NfRk9SRUFDSF9CVUlMVElOX0ZVTkNUSU9OX05BTUUoREVDTEFSRV9CVUlMVElOX0lERU5U
SUZJRVJfQUNDRVNTT1IpCiAgICAgSlNDX0NPTU1PTl9QUklWQVRFX0lERU5USUZJRVJTX0VBQ0hf
UFJPUEVSVFlfTkFNRShERUNMQVJFX0JVSUxUSU5fSURFTlRJRklFUl9BQ0NFU1NPUikKQEAgLTEx
MCw3ICsxMTAsNyBAQCBpbmxpbmUgYm9vbCBCdWlsdGluTmFtZXM6OmlzUHJpdmF0ZU5hbWUoY29u
c3QgSWRlbnRpZmllciYgaWRlbnQpIGNvbnN0CiAgICAgcmV0dXJuIGlzUHJpdmF0ZU5hbWUoKmlk
ZW50LmltcGwoKSk7CiB9CiAKLWlubGluZSBjb25zdCBJZGVudGlmaWVyKiBCdWlsdGluTmFtZXM6
OmdldFByaXZhdGVOYW1lKGNvbnN0IElkZW50aWZpZXImIGlkZW50KSBjb25zdAoraW5saW5lIGNv
bnN0IElkZW50aWZpZXIqIEJ1aWx0aW5OYW1lczo6bG9va1VwUHJpdmF0ZU5hbWUoY29uc3QgSWRl
bnRpZmllciYgaWRlbnQpIGNvbnN0CiB7CiAgICAgYXV0byBpdGVyID0gbV9wdWJsaWNUb1ByaXZh
dGVNYXAuZmluZChpZGVudC5pbXBsKCkpOwogICAgIGlmIChpdGVyICE9IG1fcHVibGljVG9Qcml2
YXRlTWFwLmVuZCgpKQpAQCAtMTE4LDcgKzExOCw3IEBAIGlubGluZSBjb25zdCBJZGVudGlmaWVy
KiBCdWlsdGluTmFtZXM6OmdldFByaXZhdGVOYW1lKGNvbnN0IElkZW50aWZpZXImIGlkZW50KSBj
CiAgICAgcmV0dXJuIDA7CiB9CiAKLWlubGluZSBjb25zdCBJZGVudGlmaWVyJiBCdWlsdGluTmFt
ZXM6OmdldFB1YmxpY05hbWUoY29uc3QgSWRlbnRpZmllciYgaWRlbnQpIGNvbnN0CitpbmxpbmUg
Y29uc3QgSWRlbnRpZmllciYgQnVpbHRpbk5hbWVzOjpsb29rVXBQdWJsaWNOYW1lKGNvbnN0IElk
ZW50aWZpZXImIGlkZW50KSBjb25zdAogewogICAgIGF1dG8gaXRlciA9IG1fcHJpdmF0ZVRvUHVi
bGljTWFwLmZpbmQoaWRlbnQuaW1wbCgpKTsKICAgICBpZiAoaXRlciAhPSBtX3ByaXZhdGVUb1B1
YmxpY01hcC5lbmQoKSkKZGlmZiAtLWdpdCBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9idWlsdGlu
cy9Nb2R1bGVMb2FkZXJPYmplY3QuanMgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvYnVpbHRpbnMv
TW9kdWxlTG9hZGVyT2JqZWN0LmpzCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAuLmU4OWI4MTZkZjcyMmJhYzY4MzI4NjM3
N2ZiOWRhMTZmNzNhNjkwODYKLS0tIC9kZXYvbnVsbAorKysgYi9Tb3VyY2UvSmF2YVNjcmlwdENv
cmUvYnVpbHRpbnMvTW9kdWxlTG9hZGVyT2JqZWN0LmpzCkBAIC0wLDAgKzEsNDI3IEBACisvKgor
ICogQ29weXJpZ2h0IChDKSAyMDE1IEFwcGxlIEluYy4gQWxsIHJpZ2h0cyByZXNlcnZlZC4KKyAq
CisgKiBSZWRpc3RyaWJ1dGlvbiBhbmQgdXNlIGluIHNvdXJjZSBhbmQgYmluYXJ5IGZvcm1zLCB3
aXRoIG9yIHdpdGhvdXQKKyAqIG1vZGlmaWNhdGlvbiwgYXJlIHBlcm1pdHRlZCBwcm92aWRlZCB0
aGF0IHRoZSBmb2xsb3dpbmcgY29uZGl0aW9ucworICogYXJlIG1ldDoKKyAqIDEuIFJlZGlzdHJp
YnV0aW9ucyBvZiBzb3VyY2UgY29kZSBtdXN0IHJldGFpbiB0aGUgYWJvdmUgY29weXJpZ2h0Cisg
KiAgICBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRp
c2NsYWltZXIuCisgKiAyLiBSZWRpc3RyaWJ1dGlvbnMgaW4gYmluYXJ5IGZvcm0gbXVzdCByZXBy
b2R1Y2UgdGhlIGFib3ZlIGNvcHlyaWdodAorICogICAgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29u
ZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyIGluIHRoZQorICogICAgZG9jdW1l
bnRhdGlvbiBhbmQvb3Igb3RoZXIgbWF0ZXJpYWxzIHByb3ZpZGVkIHdpdGggdGhlIGRpc3RyaWJ1
dGlvbi4KKyAqCisgKiBUSElTIFNPRlRXQVJFIElTIFBST1ZJREVEIEJZIEFQUExFIElOQy4gYGBB
UyBJUycnIEFORCBBTlkKKyAqIEVYUFJFU1MgT1IgSU1QTElFRCBXQVJSQU5USUVTLCBJTkNMVURJ
TkcsIEJVVCBOT1QgTElNSVRFRCBUTywgVEhFCisgKiBJTVBMSUVEIFdBUlJBTlRJRVMgT0YgTUVS
Q0hBTlRBQklMSVRZIEFORCBGSVRORVNTIEZPUiBBIFBBUlRJQ1VMQVIKKyAqIFBVUlBPU0UgQVJF
IERJU0NMQUlNRUQuICBJTiBOTyBFVkVOVCBTSEFMTCBBUFBMRSBJTkMuIE9SCisgKiBDT05UUklC
VVRPUlMgQkUgTElBQkxFIEZPUiBBTlkgRElSRUNULCBJTkRJUkVDVCwgSU5DSURFTlRBTCwgU1BF
Q0lBTCwKKyAqIEVYRU1QTEFSWSwgT1IgQ09OU0VRVUVOVElBTCBEQU1BR0VTIChJTkNMVURJTkcs
IEJVVCBOT1QgTElNSVRFRCBUTywKKyAqIFBST0NVUkVNRU5UIE9GIFNVQlNUSVRVVEUgR09PRFMg
T1IgU0VSVklDRVM7IExPU1MgT0YgVVNFLCBEQVRBLCBPUgorICogUFJPRklUUzsgT1IgQlVTSU5F
U1MgSU5URVJSVVBUSU9OKSBIT1dFVkVSIENBVVNFRCBBTkQgT04gQU5ZIFRIRU9SWQorICogT0Yg
TElBQklMSVRZLCBXSEVUSEVSIElOIENPTlRSQUNULCBTVFJJQ1QgTElBQklMSVRZLCBPUiBUT1JU
CisgKiAoSU5DTFVESU5HIE5FR0xJR0VOQ0UgT1IgT1RIRVJXSVNFKSBBUklTSU5HIElOIEFOWSBX
QVkgT1VUIE9GIFRIRSBVU0UKKyAqIE9GIFRISVMgU09GVFdBUkUsIEVWRU4gSUYgQURWSVNFRCBP
RiBUSEUgUE9TU0lCSUxJVFkgT0YgU1VDSCBEQU1BR0UuCisgKi8KKworLy8gaHR0cHM6Ly93aGF0
d2cuZ2l0aHViLmlvL2xvYWRlci8jbG9hZGVyLW9iamVjdAorLy8gTW9kdWxlIExvYWRlciBoYXMg
c2V2ZXJhbCBob29rcyB0aGF0IGNhbiBiZSBjdXN0b21pemVkIGJ5IHRoZSBwbGF0Zm9ybS4KKy8v
IEZvciBleGFtcGxlLCB0aGUgW1tGZXRjaF1dIGhvb2sgY2FuIGJlIHByb3ZpZGVkIGJ5IHRoZSBK
YXZhU2NyaXB0Q29yZSBzaGVsbAorLy8gYXMgZmV0Y2hpbmcgdGhlIHBheWxvYWQgZnJvbSB0aGUg
bG9jYWwgZmlsZSBzeXN0ZW0uCisvLyBXZSBzdW1tYXJpemUgdGhlIGhvb2tzLgorLy8KKy8vIDEu
IExvYWRlci5yZXNvbHZlLgorLy8gICAgIGh0dHBzOi8vd2hhdHdnLmdpdGh1Yi5pby9sb2FkZXIv
I2Jyb3dzZXItcmVzb2x2ZQorLy8gICAgIFRha2UgdGhlIG5hbWUgYW5kIHJlc29sdmUgaXQgdG8g
dGhlIHVuaXF1ZSBpZGVudGlmaWVyIGZvciB0aGUgcmVzb3VyY2UgbG9jYXRpb24uCisvLyAgICAg
Rm9yIGV4YW1wbGUsIHRha2UgdGhlICJqcXVlcnkiIGFuZCByZXR1cm4gdGhlIFVSTCBmb3IgdGhl
IHJlc291cmNlLgorLy8KKy8vIDIuIExvYWRlci5mZXRjaAorLy8gICAgIGh0dHBzOi8vd2hhdHdn
LmdpdGh1Yi5pby9sb2FkZXIvI2Jyb3dzZXItZmV0Y2gKKy8vICAgICBUYWtlIHRoZSBrZXkgYW5k
IGZldGNoIHRoZSByZXNvdXJjZSBhY3R1YWxseS4KKy8vICAgICBGb3IgZXhhbXBsZSwgSmF2YVNj
cmlwdENvcmUgc2hlbGwgY2FuIHByb3ZpZGUgdGhlIGhvb2sgZmV0Y2hpbmcgdGhlIHJlc291cmNl
CisvLyAgICAgZnJvbSB0aGUgbG9jYWwgZmlsZSBzeXN0ZW0uCisvLworLy8gMy4gTG9hZGVyLnRy
YW5zbGF0ZQorLy8gICAgIGh0dHBzOi8vd2hhdHdnLmdpdGh1Yi5pby9sb2FkZXIvI2Jyb3dzZXIt
dHJhbnNsYXRlCisvLyAgICAgVGFrZSB0aGUga2V5IGFuZCB0aGUgZmV0Y2hlZCBzb3VyY2UgY29k
ZSBhbmQgdHJhbnNsYXRlIGl0IHRvIHRoZSBFUzYgc291cmNlIGNvZGUuCisvLyAgICAgVHlwaWNh
bGx5IGl0IGlzIHVzZWQgYnkgdGhlIHRyYW5zcGlsZXJzLgorLy8KKy8vIDQuIExvYWRlci5pbnN0
YW50aWF0ZQorLy8gICAgIGh0dHBzOi8vd2hhdHdnLmdpdGh1Yi5pby9sb2FkZXIvI2Jyb3dzZXIt
aW5zdGFudGlhdGUKKy8vICAgICBUYWtlIHRoZSBrZXkgYW5kIHRoZSB0cmFuc2xhdGVkIHNvdXJj
ZSBjb2RlLCBhbmQgaW5zdGFudGlhdGUgdGhlIG1vZHVsZSByZWNvcmQKKy8vICAgICBieSBwYXJz
aW5nIHRoZSBtb2R1bGUgc291cmNlIGNvZGUuCisvLyAgICAgSXQgaGFzIHRoZSBjaGFuY2UgdG8g
cHJvdmlkZSB0aGUgb3B0aW9uYWwgbW9kdWxlIGluc3RhbmNlIHRoYXQgaXMgZGlmZmVyZW50IGZy
b20KKy8vICAgICB0aGUgb3JkaW5hcnkgb25lLgorCitmdW5jdGlvbiBzZXRTdGF0ZVRvTWF4KGVu
dHJ5LCBuZXdTdGF0ZSkKK3sKKyAgICAvLyBodHRwczovL3doYXR3Zy5naXRodWIuaW8vbG9hZGVy
LyNzZXQtc3RhdGUtdG8tbWF4CisKKyAgICAidXNlIHN0cmljdCI7CisKKyAgICBpZiAoZW50cnku
c3RhdGUgPCBuZXdTdGF0ZSkKKyAgICAgICAgZW50cnkuc3RhdGUgPSBuZXdTdGF0ZTsKK30KKwor
ZnVuY3Rpb24gbmV3UmVnaXN0cnlFbnRyeShrZXkpCit7CisgICAgLy8gaHR0cHM6Ly93aGF0d2cu
Z2l0aHViLmlvL2xvYWRlci8jcmVnaXN0cnkKKyAgICAvLworICAgIC8vIEVhY2ggcmVnaXN0cnkg
ZW50cnkgYmVjb21lcyBvbmUgb2YgdGhlIDUgc3RhdGVzLgorICAgIC8vIDEuIEZldGNoCisgICAg
Ly8gICAgIFJlYWR5IHRvIGZldGNoIChvciBub3cgZmV0Y2hpbmcpIHRoZSByZXNvdXJjZSBvZiB0
aGlzIG1vZHVsZS4KKyAgICAvLyAgICAgVHlwaWNhbGx5LCB3ZSBmZXRjaCB0aGUgc291cmNlIGNv
ZGUgb3ZlciB0aGUgbmV0d29yayBvciBmcm9tIHRoZSBmaWxlIHN5c3RlbS4KKyAgICAvLyAgICAg
YS4gSWYgdGhlIHN0YXR1cyBpcyBGZXRjaCBhbmQgdGhlcmUgaXMgbm8gZW50cnkuZmV0Y2ggcHJv
bWlzZSwgdGhlIGVudHJ5IGlzIHJlYWR5IHRvIGZldGNoLgorICAgIC8vICAgICBiLiBJZiB0aGUg
c3RhdHVzIGlzIEZldGNoIGFuZCB0aGVyZSBpcyB0aGUgZW50cnkuZmV0Y2ggcHJvbWlzZSwgdGhl
IGVudHJ5IGlzIGp1c3QgZmV0Y2hpbmcgdGhlIHJlc291cmNlLgorICAgIC8vCisgICAgLy8gMi4g
VHJhbnNsYXRlCisgICAgLy8gICAgIFJlYWR5IHRvIHRyYW5zbGF0ZSAob3Igbm93IHRyYW5zbGF0
aW5nKSB0aGUgcmF3IGZldGNoZWQgcmVzb3VyY2UgdG8gdGhlIEVDTUFTY3JpcHQgc291cmNlIGNv
ZGUuCisgICAgLy8gICAgIFdlIGNhbiBpbnNlcnQgdGhlIGhvb2sgdGhhdCB0cmFuc2xhdGVzIHRo
ZSByZXNvdXJjZXMgZS5nLiB0cmFuc3BpbGVycy4KKyAgICAvLyAgICAgYS4gSWYgdGhlIHN0YXR1
cyBpcyBUcmFuc2xhdGUgYW5kIHRoZXJlIGlzIG5vIGVudHJ5LnRyYW5zbGF0ZSBwcm9taXNlLCB0
aGUgZW50cnkgaXMgcmVhZHkgdG8gdHJhbnNsYXRlLgorICAgIC8vICAgICBiLiBJZiB0aGUgc3Rh
dHVzIGlzIFRyYW5zbGF0ZSBhbmQgdGhlcmUgaXMgdGhlIGVudHJ5LnRyYW5zbGF0ZSBwcm9taXNl
LCB0aGUgZW50cnkgaXMganVzdCB0cmFuc2xhdGluZworICAgIC8vICAgICAgICB0aGUgcGF5bG9h
ZCB0byB0aGUgc291cmNlIGNvZGUuCisgICAgLy8KKyAgICAvLyAzLiBJbnN0YW50aWF0ZSAoQW5h
bHl6ZU1vZHVsZSkKKyAgICAvLyAgICAgUmVhZHkgdG8gaW5zdGFudGlhdGUgKG9yIG5vdyBpbnN0
YW50aWF0aW5nKSB0aGUgbW9kdWxlIHJlY29yZCBmcm9tIHRoZSBmZXRjaGVkIChhbmQgdHJhbnNs
YXRlZCkKKyAgICAvLyAgICAgc291cmNlIGNvZGUuCisgICAgLy8gICAgIFR5cGljYWxseSwgd2Ug
cGFyc2UgdGhlIG1vZHVsZSBjb2RlLCBleHRyYWN0IHRoZSBkZXBlbmRlbmNpZXMgYW5kIGJpbmRp
bmcgaW5mb3JtYXRpb24uCisgICAgLy8gICAgIGEuIElmIHRoZSBzdGF0dXMgaXMgSW5zdGFudGlh
dGUgYW5kIHRoZXJlIGlzIG5vIGVudHJ5Lmluc3RhbnRpYXRlIHByb21pc2UsIHRoZSBlbnRyeSBp
cyByZWFkeSB0byBpbnN0YW50aWF0ZS4KKyAgICAvLyAgICAgYi4gSWYgdGhlIHN0YXR1cyBpcyBJ
bnN0YW50aWF0ZSBhbmQgdGhlcmUgaXMgdGhlIGVudHJ5LnRyYW5zbGF0ZSBwcm9taXNlLCB0aGUg
ZW50cnkgaXMganVzdCBpbnN0YW50aWF0aW5nCisgICAgLy8gICAgICAgIHRoZSBtb2R1bGUgcmVj
b3JkLgorICAgIC8vCisgICAgLy8gNC4gUmVzb2x2ZURlcGVuZGVuY2llcyAobm90IGluIHRoZSBk
cmFmdCkgaHR0cHM6Ly9naXRodWIuY29tL3doYXR3Zy9sb2FkZXIvaXNzdWVzLzY4CisgICAgLy8g
ICAgIFJlYWR5IHRvIHJlcXVlc3QgdGhlIGRlcGVuZGVudCBtb2R1bGVzIChvciBub3cgcmVxdWVz
dGluZyAmIHJlc29sdmluZykuCisgICAgLy8gICAgIFdpdGhvdXQgdGhpcyBzdGF0ZSwgdGhlIGN1
cnJlbnQgZHJhZnQgY2F1c2VzIGluZmluaXRlIHJlY3Vyc2lvbiB3aGVuIHRoZXJlIGlzIGNpcmN1
bGFyIGRlcGVuZGVuY3kuCisgICAgLy8gICAgIGEuIElmIHRoZSBzdGF0dXMgaXMgUmVzb2x2ZURl
cGVuZGVuY2llcyBhbmQgdGhlcmUgaXMgbm8gZW50cnkucmVzb2x2ZURlcGVuZGVuY2llcyBwcm9t
aXNlLCB0aGUgZW50cnkgaXMgcmVhZHkgdG8gcmVzb2x2ZSB0aGUgZGVwZW5kZW5jaWVzLgorICAg
IC8vICAgICBiLiBJZiB0aGUgc3RhdHVzIGlzIFJlc29sdmVEZXBlbmRlbmNpZXMgYW5kIHRoZXJl
IGlzIHRoZSBlbnRyeS5yZXNvbHZlRGVwZW5kZW5jaWVzIHByb21pc2UsIHRoZSBlbnRyeSBpcyBq
dXN0IHJlc29sdmluZworICAgIC8vICAgICAgICB0aGUgZGVwZW5kZW5jaWVzLgorICAgIC8vCisg
ICAgLy8gNS4gTGluaworICAgIC8vICAgICBSZWFkeSB0byBsaW5rIHRoZSBtb2R1bGUgd2l0aCB0
aGUgb3RoZXIgbW9kdWxlcy4KKyAgICAvLyAgICAgTGlua2luZyBtZWFucyB0aGF0IHRoZSBtb2R1
bGUgaW1wb3J0cyBhbmQgZXhwb3J0cyB0aGUgYmluZGluZ3MgZnJvbS90byB0aGUgb3RoZXIgbW9k
dWxlcy4KKyAgICAvLworICAgIC8vIDYuIFJlYWR5CisgICAgLy8gICAgIFRoZSBtb2R1bGUgaXMg
bGlua2VkLCBzbyB0aGUgbW9kdWxlIGlzIHJlYWR5IHRvIGJlIGV4ZWN1dGVkLgorICAgIC8vCisg
ICAgLy8gRWFjaCByZWdpc3RyeSBlbnRyeSBoYXMgdGhlIDQgcHJvbWlzZXM7ICJmZXRjaCIsICJ0
cmFuc2xhdGUiLCAiaW5zdGFudGlhdGUiIGFuZCAicmVzb2x2ZURlcGVuZGVuY2llcyIuCisgICAg
Ly8gVGhleSBhcmUgYXNzaWduZWQgd2hlbiBzdGFydGluZyB0aGUgZWFjaCBwaGFzZS4gQW5kIHRo
ZXkgYXJlIGZ1bGZpbGxlZCB3aGVuIHRoZSBlYWNoIHBoYXNlIGlzIGNvbXBsZXRlZC4KKyAgICAv
LworICAgIC8vIEluIHRoZSBjdXJyZW50IG1vZHVsZSBkcmFmdCwgbGlua2luZyB3aWxsIGJlIHBl
cmZvcm1lZCBhZnRlciB0aGUgd2hvbGUgbW9kdWxlcyBhcmUgaW5zdGFudGlhdGVkIGFuZCB0aGUg
ZGVwZW5kZW5jaWVzIGFyZSByZXNvbHZlZC4KKyAgICAvLyBBbmQgZXhlY3V0aW9uIGlzIGFsc28g
ZG9uZSBhZnRlciB0aGUgYWxsIG1vZHVsZXMgYXJlIGxpbmtlZC4KKyAgICAvLworICAgIC8vIFRP
RE86IFdlIG5lZWQgdG8gZXhwbG9pdCB0aGUgd2F5IHRvIGV4ZWN1dGUgdGhlIG1vZHVsZSB3aGls
ZSBmZXRjaGluZyBub24tcmVsYXRlZCBtb2R1bGVzLgorICAgIC8vIE9uZSBzb2x1dGlvbjsgaW50
cm9kdWNpbmcgdGhlIHJlYWR5IHByb21pc2UgY2hhaW4gdG8gZXhlY3V0ZSB0aGUgbW9kdWxlcyBj
b25jdXJyZW50bHkgd2hpbGUga2VlcGluZworICAgIC8vIHRoZSBleGVjdXRpb24gb3JkZXIuCisK
KyAgICAidXNlIHN0cmljdCI7CisKKyAgICByZXR1cm4geworICAgICAgICBrZXk6IGtleSwKKyAg
ICAgICAgc3RhdGU6IHRoaXMuRmV0Y2gsCisgICAgICAgIG1ldGFkYXRhOiB1bmRlZmluZWQsCisg
ICAgICAgIGZldGNoOiB1bmRlZmluZWQsCisgICAgICAgIHRyYW5zbGF0ZTogdW5kZWZpbmVkLAor
ICAgICAgICBpbnN0YW50aWF0ZTogdW5kZWZpbmVkLAorICAgICAgICByZXNvbHZlRGVwZW5kZW5j
aWVzOiB1bmRlZmluZWQsCisgICAgICAgIGRlcGVuZGVuY2llczogW10sIC8vIFRvIGtlZXAgdGhl
IG1vZHVsZSBvcmRlciwgd2Ugc3RvcmUgdGhlIG1vZHVsZSBrZXlzIGluIHRoZSBhcnJheS4KKyAg
ICAgICAgZGVwZW5kZW5jaWVzTWFwOiB1bmRlZmluZWQsCisgICAgICAgIG1vZHVsZTogdW5kZWZp
bmVkLCAvLyBKU01vZHVsZVJlY29yZAorICAgICAgICBlcnJvcjogdW5kZWZpbmVkLAorICAgIH07
Cit9CisKK2Z1bmN0aW9uIGVuc3VyZVJlZ2lzdGVyZWQoa2V5KQoreworICAgIC8vIGh0dHBzOi8v
d2hhdHdnLmdpdGh1Yi5pby9sb2FkZXIvI2Vuc3VyZS1yZWdpc3RlcmVkCisKKyAgICAidXNlIHN0
cmljdCI7CisKKyAgICB2YXIgZW50cnkgPSB0aGlzLnJlZ2lzdHJ5LkBnZXQoa2V5KTsKKyAgICBp
ZiAoZW50cnkpCisgICAgICAgIHJldHVybiBlbnRyeTsKKworICAgIGVudHJ5ID0gdGhpcy5uZXdS
ZWdpc3RyeUVudHJ5KGtleSk7CisgICAgdGhpcy5yZWdpc3RyeS5Ac2V0KGtleSwgZW50cnkpOwor
CisgICAgcmV0dXJuIGVudHJ5OworfQorCitmdW5jdGlvbiBmb3JjZUZ1bGZpbGxQcm9taXNlKHBy
b21pc2UsIHZhbHVlKQoreworICAgICJ1c2Ugc3RyaWN0IjsKKworICAgIGlmIChwcm9taXNlLkBw
cm9taXNlU3RhdGUgPT09IEBwcm9taXNlUGVuZGluZykKKyAgICAgICAgQGZ1bGZpbGxQcm9taXNl
KHByb21pc2UsIHZhbHVlKTsKK30KKworZnVuY3Rpb24gZnVsZmlsbEZldGNoKGVudHJ5LCBwYXls
b2FkKQoreworICAgIC8vIGh0dHBzOi8vd2hhdHdnLmdpdGh1Yi5pby9sb2FkZXIvI2Z1bGZpbGwt
ZmV0Y2gKKworICAgICJ1c2Ugc3RyaWN0IjsKKworICAgIGlmICghZW50cnkuZmV0Y2gpCisgICAg
ICAgIGVudHJ5LmZldGNoID0gQG5ld1Byb21pc2VDYXBhYmlsaXR5KEBJbnRlcm5hbFByb21pc2Up
LkBwcm9taXNlOworICAgIHRoaXMuZm9yY2VGdWxmaWxsUHJvbWlzZShlbnRyeS5mZXRjaCwgcGF5
bG9hZCk7CisgICAgdGhpcy5zZXRTdGF0ZVRvTWF4KGVudHJ5LCB0aGlzLlRyYW5zbGF0ZSk7Cit9
CisKK2Z1bmN0aW9uIGZ1bGZpbGxUcmFuc2xhdGUoZW50cnksIHNvdXJjZSkKK3sKKyAgICAvLyBo
dHRwczovL3doYXR3Zy5naXRodWIuaW8vbG9hZGVyLyNmdWxmaWxsLXRyYW5zbGF0ZQorCisgICAg
InVzZSBzdHJpY3QiOworCisgICAgaWYgKCFlbnRyeS50cmFuc2xhdGUpCisgICAgICAgIGVudHJ5
LnRyYW5zbGF0ZSA9IEBuZXdQcm9taXNlQ2FwYWJpbGl0eShASW50ZXJuYWxQcm9taXNlKS5AcHJv
bWlzZTsKKyAgICB0aGlzLmZvcmNlRnVsZmlsbFByb21pc2UoZW50cnkudHJhbnNsYXRlLCBzb3Vy
Y2UpOworICAgIHRoaXMuc2V0U3RhdGVUb01heChlbnRyeSwgdGhpcy5JbnN0YW50aWF0ZSk7Cit9
CisKK2Z1bmN0aW9uIGZ1bGZpbGxJbnN0YW50aWF0ZShlbnRyeSwgb3B0aW9uYWxJbnN0YW5jZSwg
c291cmNlKQoreworICAgIC8vIGh0dHBzOi8vd2hhdHdnLmdpdGh1Yi5pby9sb2FkZXIvI2Z1bGZp
bGwtaW5zdGFudGlhdGUKKworICAgICJ1c2Ugc3RyaWN0IjsKKworICAgIGlmICghZW50cnkuaW5z
dGFudGlhdGUpCisgICAgICAgIGVudHJ5Lmluc3RhbnRpYXRlID0gQG5ld1Byb21pc2VDYXBhYmls
aXR5KEBJbnRlcm5hbFByb21pc2UpLkBwcm9taXNlOworICAgIHRoaXMuY29tbWl0SW5zdGFudGlh
dGVkKGVudHJ5LCBvcHRpb25hbEluc3RhbmNlLCBzb3VyY2UpOworCisgICAgLy8gRklYTUU6IFRo
ZSBkcmFmdCBmdWxmaWxscyB0aGUgcHJvbWlzZSBpbiB0aGUgQ29tbWl0SW5zdGFudGlhdGVkIG9w
ZXJhdGlvbi4KKyAgICAvLyBCdXQgaXQgQ29tbWl0SW5zdGFudGlhdGVkIGlzIGFsc28gdXNlZCBp
biB0aGUgcmVxdWVzdEluc3RhbnRpYXRlIGFuZAorICAgIC8vIHdlIHNob3VsZCBub3QgImZvcmNl
IGZ1bGZpbGwiIHRoZXJlLgorICAgIC8vIFNvIHdlIHNlcGFyYXRlICJmb3JjZSBmdWxmaWxsIiBv
cGVyYXRpb24gZnJvbSB0aGUgQ29tbWl0SW5zdGFudGlhdGVkIG9wZXJhdGlvbi4KKyAgICAvLyBo
dHRwczovL2dpdGh1Yi5jb20vd2hhdHdnL2xvYWRlci9wdWxsLzY3CisgICAgdGhpcy5mb3JjZUZ1
bGZpbGxQcm9taXNlKGVudHJ5Lmluc3RhbnRpYXRlLCBlbnRyeSk7Cit9CisKK2Z1bmN0aW9uIGNv
bW1pdEluc3RhbnRpYXRlZChlbnRyeSwgb3B0aW9uYWxJbnN0YW5jZSwgc291cmNlKQoreworICAg
IC8vIGh0dHBzOi8vd2hhdHdnLmdpdGh1Yi5pby9sb2FkZXIvI2NvbW1pdC1pbnN0YW50aWF0ZWQK
KworICAgICJ1c2Ugc3RyaWN0IjsKKworICAgIHZhciBtb2R1bGVSZWNvcmQgPSB0aGlzLmluc3Rh
bnRpYXRpb24ob3B0aW9uYWxJbnN0YW5jZSwgc291cmNlLCBlbnRyeSk7CisKKyAgICAvLyBGSVhN
RTogRGVzY3JpYmVkIGluIHRoZSBkcmFmdCwKKyAgICAvLyAgIDQuIEZ1bGZpbGwgZW50cnkuW1tJ
bnN0YW50aWF0ZV1dIHdpdGggaW5zdGFuY2UuCisgICAgLy8gQnV0LCBpbnN0YW50aWF0ZSBwcm9t
aXNlIHNob3VsZCBiZSBmdWxmaWxsZWQgd2l0aCB0aGUgZW50cnkuCisgICAgLy8gV2UgcmVtb3Zl
IHRoaXMgc3RhdGVtZW50IGJlY2F1c2UgaW5zdGFudGlhdGUgcHJvbWlzZSB3aWxsIGJlCisgICAg
Ly8gZnVsZmlsbGVkIHdpdGhvdXQgdGhpcyAiZm9yY2UgZnVsZmlsbCIgb3BlcmF0aW9uLgorICAg
IC8vIGh0dHBzOi8vZ2l0aHViLmNvbS93aGF0d2cvbG9hZGVyL3B1bGwvNjcKKworICAgIHZhciBk
ZXBlbmRlbmNpZXMgPSBbXTsKKyAgICB2YXIgZGVwZW5kZW5jaWVzTWFwID0gbmV3IEBNYXAoKTsK
KyAgICBtb2R1bGVSZWNvcmQucmVnaXN0cnlFbnRyeSA9IGVudHJ5OworICAgIHZhciByZXF1ZXN0
ZWRNb2R1bGVzID0gdGhpcy5yZXF1ZXN0ZWRNb2R1bGVzKG1vZHVsZVJlY29yZCk7CisgICAgZm9y
ICh2YXIgaSA9IDAsIGxlbmd0aCA9IHJlcXVlc3RlZE1vZHVsZXMubGVuZ3RoOyBpIDwgbGVuZ3Ro
OyArK2kpIHsKKyAgICAgICAgdmFyIGRlcEtleSA9IHJlcXVlc3RlZE1vZHVsZXNbaV07CisgICAg
ICAgIHZhciBwYWlyID0geworICAgICAgICAgICAga2V5OiBkZXBLZXksCisgICAgICAgICAgICB2
YWx1ZTogdW5kZWZpbmVkCisgICAgICAgIH07CisgICAgICAgIEBwdXRCeVZhbERpcmVjdChkZXBl
bmRlbmNpZXMsIGksIHBhaXIpOworICAgICAgICBkZXBlbmRlbmNpZXNNYXAuQHNldChkZXBLZXks
IHBhaXIpOworICAgIH0KKyAgICBlbnRyeS5kZXBlbmRlbmNpZXMgPSBkZXBlbmRlbmNpZXM7Cisg
ICAgZW50cnkuZGVwZW5kZW5jaWVzTWFwID0gZGVwZW5kZW5jaWVzTWFwOworICAgIGVudHJ5Lm1v
ZHVsZSA9IG1vZHVsZVJlY29yZDsKKyAgICB0aGlzLnNldFN0YXRlVG9NYXgoZW50cnksIHRoaXMu
UmVzb2x2ZURlcGVuZGVuY2llcyk7Cit9CisKK2Z1bmN0aW9uIGluc3RhbnRpYXRpb24ocmVzdWx0
LCBzb3VyY2UsIGVudHJ5KQoreworICAgIC8vIGh0dHBzOi8vd2hhdHdnLmdpdGh1Yi5pby9sb2Fk
ZXIvI2luc3RhbnRpYXRpb24KKyAgICAvLyBGSVhNRTogQ3VycmVudCBpbXBsZW1lbnRhdGlvbiBk
b2VzIG5vdCBzdXBwb3J0IG9wdGlvbmFsSW5zdGFuY2UuCisgICAgLy8gaHR0cHM6Ly9idWdzLndl
YmtpdC5vcmcvc2hvd19idWcuY2dpP2lkPTE0ODE3MQorCisgICAgInVzZSBzdHJpY3QiOworCisg
ICAgcmV0dXJuIHRoaXMucGFyc2VNb2R1bGUoZW50cnkua2V5LCBzb3VyY2UpOworfQorCisvLyBM
b2FkZXIuCisKK2Z1bmN0aW9uIHJlcXVlc3RGZXRjaChrZXkpCit7CisgICAgLy8gaHR0cHM6Ly93
aGF0d2cuZ2l0aHViLmlvL2xvYWRlci8jcmVxdWVzdC1mZXRjaAorCisgICAgInVzZSBzdHJpY3Qi
OworCisgICAgdmFyIGVudHJ5ID0gdGhpcy5lbnN1cmVSZWdpc3RlcmVkKGtleSk7CisgICAgaWYg
KGVudHJ5LnN0YXRlID4gdGhpcy5MaW5rKSB7CisgICAgICAgIHZhciBkZWZlcnJlZCA9IEBuZXdQ
cm9taXNlQ2FwYWJpbGl0eShASW50ZXJuYWxQcm9taXNlKTsKKyAgICAgICAgZGVmZXJyZWQuQHJl
amVjdC5AY2FsbCh1bmRlZmluZWQsIG5ldyBAVHlwZUVycm9yKCJSZXF1ZXN0ZWQgbW9kdWxlIGlz
IGFscmVhZHkgcmVhZHkgdG8gYmUgZXhlY3V0ZWQuIikpOworICAgICAgICByZXR1cm4gZGVmZXJy
ZWQuQHByb21pc2U7CisgICAgfQorCisgICAgaWYgKGVudHJ5LmZldGNoKQorICAgICAgICByZXR1
cm4gZW50cnkuZmV0Y2g7CisKKyAgICB2YXIgbG9hZGVyID0gdGhpczsKKyAgICB2YXIgZmV0Y2hQ
cm9taXNlID0gdGhpcy5mZXRjaChrZXkpLnRoZW4oZnVuY3Rpb24gKHBheWxvYWQpIHsKKyAgICAg
ICAgbG9hZGVyLnNldFN0YXRlVG9NYXgoZW50cnksIGxvYWRlci5UcmFuc2xhdGUpOworICAgICAg
ICByZXR1cm4gcGF5bG9hZDsKKyAgICB9KTsKKyAgICBlbnRyeS5mZXRjaCA9IGZldGNoUHJvbWlz
ZTsKKyAgICByZXR1cm4gZmV0Y2hQcm9taXNlOworfQorCitmdW5jdGlvbiByZXF1ZXN0VHJhbnNs
YXRlKGtleSkKK3sKKyAgICAvLyBodHRwczovL3doYXR3Zy5naXRodWIuaW8vbG9hZGVyLyNyZXF1
ZXN0LXRyYW5zbGF0ZQorCisgICAgInVzZSBzdHJpY3QiOworCisgICAgdmFyIGVudHJ5ID0gdGhp
cy5lbnN1cmVSZWdpc3RlcmVkKGtleSk7CisgICAgaWYgKGVudHJ5LnN0YXRlID4gdGhpcy5MaW5r
KSB7CisgICAgICAgIHZhciBkZWZlcnJlZCA9IEBuZXdQcm9taXNlQ2FwYWJpbGl0eShASW50ZXJu
YWxQcm9taXNlKTsKKyAgICAgICAgZGVmZXJyZWQuQHJlamVjdC5AY2FsbCh1bmRlZmluZWQsIG5l
dyBAVHlwZUVycm9yKCJSZXF1ZXN0ZWQgbW9kdWxlIGlzIGFscmVhZHkgcmVhZHkgdG8gYmUgZXhl
Y3V0ZWQuIikpOworICAgICAgICByZXR1cm4gZGVmZXJyZWQuQHByb21pc2U7CisgICAgfQorCisg
ICAgaWYgKGVudHJ5LnRyYW5zbGF0ZSkKKyAgICAgICAgcmV0dXJuIGVudHJ5LnRyYW5zbGF0ZTsK
KworICAgIHZhciBsb2FkZXIgPSB0aGlzOworICAgIHZhciB0cmFuc2xhdGVQcm9taXNlID0gdGhp
cy5yZXF1ZXN0RmV0Y2goa2V5KS50aGVuKGZ1bmN0aW9uIChwYXlsb2FkKSB7CisgICAgICAgIHJl
dHVybiBsb2FkZXIudHJhbnNsYXRlKGtleSwgcGF5bG9hZCkudGhlbihmdW5jdGlvbiAoc291cmNl
KSB7CisgICAgICAgICAgICBsb2FkZXIuc2V0U3RhdGVUb01heChlbnRyeSwgbG9hZGVyLkluc3Rh
bnRpYXRlKTsKKyAgICAgICAgICAgIHJldHVybiBzb3VyY2U7CisgICAgICAgIH0pOworICAgIH0p
OworICAgIGVudHJ5LnRyYW5zbGF0ZSA9IHRyYW5zbGF0ZVByb21pc2U7CisgICAgcmV0dXJuIHRy
YW5zbGF0ZVByb21pc2U7Cit9CisKK2Z1bmN0aW9uIHJlcXVlc3RJbnN0YW50aWF0ZShrZXkpCit7
CisgICAgLy8gaHR0cHM6Ly93aGF0d2cuZ2l0aHViLmlvL2xvYWRlci8jcmVxdWVzdC1pbnN0YW50
aWF0ZQorCisgICAgInVzZSBzdHJpY3QiOworCisgICAgdmFyIGVudHJ5ID0gdGhpcy5lbnN1cmVS
ZWdpc3RlcmVkKGtleSk7CisgICAgaWYgKGVudHJ5LnN0YXRlID4gdGhpcy5MaW5rKSB7CisgICAg
ICAgIHZhciBkZWZlcnJlZCA9IEBuZXdQcm9taXNlQ2FwYWJpbGl0eShASW50ZXJuYWxQcm9taXNl
KTsKKyAgICAgICAgZGVmZXJyZWQuQHJlamVjdC5AY2FsbCh1bmRlZmluZWQsIG5ldyBAVHlwZUVy
cm9yKCJSZXF1ZXN0ZWQgbW9kdWxlIGlzIGFscmVhZHkgcmVhZHkgdG8gYmUgZXhlY3V0ZWQuIikp
OworICAgICAgICByZXR1cm4gZGVmZXJyZWQuQHByb21pc2U7CisgICAgfQorCisgICAgaWYgKGVu
dHJ5Lmluc3RhbnRpYXRlKQorICAgICAgICByZXR1cm4gZW50cnkuaW5zdGFudGlhdGU7CisKKyAg
ICB2YXIgbG9hZGVyID0gdGhpczsKKyAgICB2YXIgaW5zdGFudGlhdGVQcm9taXNlID0gdGhpcy5y
ZXF1ZXN0VHJhbnNsYXRlKGtleSkudGhlbihmdW5jdGlvbiAoc291cmNlKSB7CisgICAgICAgIHJl
dHVybiBsb2FkZXIuaW5zdGFudGlhdGUoa2V5LCBzb3VyY2UpLnRoZW4oZnVuY3Rpb24gKG9wdGlv
bmFsSW5zdGFuY2UpIHsKKyAgICAgICAgICAgIGxvYWRlci5jb21taXRJbnN0YW50aWF0ZWQoZW50
cnksIG9wdGlvbmFsSW5zdGFuY2UsIHNvdXJjZSk7CisgICAgICAgICAgICByZXR1cm4gZW50cnk7
CisgICAgICAgIH0pOworICAgIH0pOworICAgIGVudHJ5Lmluc3RhbnRpYXRlID0gaW5zdGFudGlh
dGVQcm9taXNlOworICAgIHJldHVybiBpbnN0YW50aWF0ZVByb21pc2U7Cit9CisKK2Z1bmN0aW9u
IHJlcXVlc3RSZXNvbHZlRGVwZW5kZW5jaWVzKGtleSkKK3sKKyAgICAvLyBGSVhNRTogSW4gdGhl
IHNwZWMsIGFmdGVyIHJlcXVlc3RpbmcgaW5zdGFudGlhdGlvbiwgd2Ugd2lsbCByZXNvbHZlCisg
ICAgLy8gdGhlIGRlcGVuZGVuY2llcyB3aXRob3V0IGFueSBzdGF0dXMgY2hhbmdlLiBBcyBhIHJl
c3VsdCwgd2hlbiB0aGVyZQorICAgIC8vIGlzIGNpcmN1bGFyIGRlcGVuZGVuY2llcywgaW5zdGFu
dGlhdGlvbiBpcyBkb25lIG9ubHkgb25jZSwgYnV0CisgICAgLy8gcmVwZWF0ZWRseSByZXNvbHZp
bmcgdGhlIGRlcGVuZGVuY2llcy4gVGhpcyBtZWFucyB0aGF0IGluZmluaXRlCisgICAgLy8gcmVj
dXJzaW9uIG9jY3VyIHdoZW4gdGhlIGdpdmVuIG1vZHVsZXMgaGF2ZSBjaXJjdWxhciBkZXBlbmRl
bmN5LiBUbworICAgIC8vIGF2b2lkIHRoaXMgc2l0dWF0aW9uLCB3ZSBpbnRyb2R1Y2UgbmV3IHN0
YXRlLCAiUmVzb2x2ZURlcGVuZGVuY2llcyIuIFRoaXMgbWVhbnMKKyAgICAvLyAiTm93IHRoZSBt
b2R1bGUgaXMgaW5zdGFudGlhdGVkLCBzbyByZWFkeSB0byByZXNvbHZlIHRoZSBkZXBlbmRlbmNp
ZXMKKyAgICAvLyBvciBub3cgcmVzb2x2aW5nIHRoZW0iLgorICAgIC8vIGh0dHBzOi8vZ2l0aHVi
LmNvbS93aGF0d2cvbG9hZGVyL2lzc3Vlcy82OAorCisgICAgInVzZSBzdHJpY3QiOworCisgICAg
dmFyIGVudHJ5ID0gdGhpcy5lbnN1cmVSZWdpc3RlcmVkKGtleSk7CisgICAgaWYgKGVudHJ5LnN0
YXRlID4gdGhpcy5MaW5rKSB7CisgICAgICAgIHZhciBkZWZlcnJlZCA9IEBuZXdQcm9taXNlQ2Fw
YWJpbGl0eShASW50ZXJuYWxQcm9taXNlKTsKKyAgICAgICAgZGVmZXJyZWQuQHJlamVjdC5AY2Fs
bCh1bmRlZmluZWQsIG5ldyBAVHlwZUVycm9yKCJSZXF1ZXN0ZWQgbW9kdWxlIGlzIGFscmVhZHkg
cmVhZHkgdG8gYmUgZXhlY3V0ZWQuIikpOworICAgICAgICByZXR1cm4gZGVmZXJyZWQuQHByb21p
c2U7CisgICAgfQorCisgICAgaWYgKGVudHJ5LnJlc29sdmVEZXBlbmRlbmNpZXMpCisgICAgICAg
IHJldHVybiBlbnRyeS5yZXNvbHZlRGVwZW5kZW5jaWVzOworCisgICAgdmFyIGxvYWRlciA9IHRo
aXM7CisgICAgdmFyIHJlc29sdmVEZXBlbmRlbmNpZXNQcm9taXNlID0gdGhpcy5yZXF1ZXN0SW5z
dGFudGlhdGUoa2V5KS50aGVuKGZ1bmN0aW9uIChlbnRyeSkgeworICAgICAgICB2YXIgZGVwTG9h
ZHMgPSBbXTsKKyAgICAgICAgZm9yICh2YXIgaSA9IDAsIGxlbmd0aCA9IGVudHJ5LmRlcGVuZGVu
Y2llcy5sZW5ndGg7IGkgPCBsZW5ndGg7ICsraSkgeworICAgICAgICAgICAgdmFyIHBhaXIgPSBl
bnRyeS5kZXBlbmRlbmNpZXNbaV07CisgICAgICAgICAgICB2YXIgcHJvbWlzZSA9IGxvYWRlci5y
ZXNvbHZlKHBhaXIua2V5LCBrZXkpLnRoZW4oZnVuY3Rpb24gKGRlcEtleSkgeworICAgICAgICAg
ICAgICAgIHZhciBkZXBFbnRyeSA9IGxvYWRlci5lbnN1cmVSZWdpc3RlcmVkKGRlcEtleSk7CisK
KyAgICAgICAgICAgICAgICAvLyBSZWN1cnNpdmUgcmVzb2x2aW5nLiBUaGUgZGVwZW5kZW5jaWVz
IG9mIHRoaXMgZW50cnkgaXMgYmVpbmcgcmVzb2x2ZWQgb3IgYWxyZWFkeSByZXNvbHZlZC4KKyAg
ICAgICAgICAgICAgICAvLyBTdG9wIHRyYWNpbmcgdGhlIGNpcmN1bGFyIGRlcGVuZGVuY2llcy4K
KyAgICAgICAgICAgICAgICBpZiAoZGVwRW50cnkucmVzb2x2ZURlcGVuZGVuY2llcykgeworICAg
ICAgICAgICAgICAgICAgICBwYWlyLnZhbHVlID0gZGVwRW50cnkubW9kdWxlOworICAgICAgICAg
ICAgICAgICAgICByZXR1cm4gZGVwRW50cnk7CisgICAgICAgICAgICAgICAgfQorCisgICAgICAg
ICAgICAgICAgcmV0dXJuIGxvYWRlci5yZXF1ZXN0UmVzb2x2ZURlcGVuZGVuY2llcyhkZXBLZXkp
LnRoZW4oZnVuY3Rpb24gKGVudHJ5KSB7CisgICAgICAgICAgICAgICAgICAgIC8vIEZJWE1FOiBU
aGUgcmVzdWx0IHByb21pc2Ugb2YgdGhlIHJlcXVlc3RJbnN0YW50aWF0ZUFsbCBzaG91bGQgYmUg
ZnVsZmlsbGVkIHdpdGgKKyAgICAgICAgICAgICAgICAgICAgLy8gdGhlIHJlZ2lzdHJ5IGVudHJ5
LgorICAgICAgICAgICAgICAgICAgICAvLyBodHRwczovL2dpdGh1Yi5jb20vd2hhdHdnL2xvYWRl
ci9wdWxsLzY2CisgICAgICAgICAgICAgICAgICAgIHBhaXIudmFsdWUgPSBlbnRyeS5tb2R1bGU7
CisgICAgICAgICAgICAgICAgICAgIHJldHVybiBlbnRyeTsKKyAgICAgICAgICAgICAgICB9KTsK
KyAgICAgICAgICAgIH0pOworICAgICAgICAgICAgQHB1dEJ5VmFsRGlyZWN0KGRlcExvYWRzLCBp
LCBwcm9taXNlKTsKKyAgICAgICAgfQorCisgICAgICAgIHJldHVybiBASW50ZXJuYWxQcm9taXNl
LmludGVybmFsQWxsKGRlcExvYWRzKS50aGVuKGZ1bmN0aW9uIChtb2R1bGVzKSB7CisgICAgICAg
ICAgICBsb2FkZXIuc2V0U3RhdGVUb01heChlbnRyeSwgbG9hZGVyLkxpbmspOworICAgICAgICAg
ICAgcmV0dXJuIGVudHJ5OworICAgICAgICB9KTsKKyAgICB9KTsKKworICAgIGVudHJ5LnJlc29s
dmVEZXBlbmRlbmNpZXMgPSByZXNvbHZlRGVwZW5kZW5jaWVzUHJvbWlzZTsKKyAgICByZXR1cm4g
cmVzb2x2ZURlcGVuZGVuY2llc1Byb21pc2U7Cit9CisKK2Z1bmN0aW9uIHJlcXVlc3RJbnN0YW50
aWF0ZUFsbChrZXkpCit7CisgICAgLy8gaHR0cHM6Ly93aGF0d2cuZ2l0aHViLmlvL2xvYWRlci8j
cmVxdWVzdC1pbnN0YW50aWF0ZS1hbGwKKworICAgICJ1c2Ugc3RyaWN0IjsKKworICAgIHJldHVy
biB0aGlzLnJlcXVlc3RSZXNvbHZlRGVwZW5kZW5jaWVzKGtleSk7Cit9CisKK2Z1bmN0aW9uIHBy
b3ZpZGUoa2V5LCBzdGFnZSwgdmFsdWUpCit7CisgICAgInVzZSBzdHJpY3QiOworCisgICAgdmFy
IGVudHJ5ID0gdGhpcy5lbnN1cmVSZWdpc3RlcmVkKGtleSk7CisKKyAgICBpZiAoc3RhZ2UgPT09
IHRoaXMuRmV0Y2gpIHsKKyAgICAgICAgaWYgKGVudHJ5LnN0YXR1cyA+IHRoaXMuRmV0Y2gpCisg
ICAgICAgICAgICB0aHJvdyBuZXcgQFR5cGVFcnJvcigiUmVxdWVzdGVkIG1vZHVsZSBpcyBhbHJl
YWR5IGZldGNoZWQuIik7CisgICAgICAgIHRoaXMuZnVsZmlsbEZldGNoKGVudHJ5LCB2YWx1ZSk7
CisgICAgICAgIHJldHVybjsKKyAgICB9CisKKyAgICBpZiAoc3RhZ2UgPT09IHRoaXMuVHJhbnNs
YXRlKSB7CisgICAgICAgIGlmIChlbnRyeS5zdGF0dXMgPiB0aGlzLlRyYW5zbGF0ZSkKKyAgICAg
ICAgICAgIHRocm93IG5ldyBAVHlwZUVycm9yKCJSZXF1ZXN0ZWQgbW9kdWxlIGlzIGFscmVhZHkg
dHJhbnNsYXRlZC4iKTsKKyAgICAgICAgdGhpcy5mdWxmaWxsRmV0Y2goZW50cnksIHVuZGVmaW5l
ZCk7CisgICAgICAgIHRoaXMuZnVsZmlsbFRyYW5zbGF0ZShlbnRyeSwgdmFsdWUpOworICAgICAg
ICByZXR1cm47CisgICAgfQorCisgICAgaWYgKHN0YWdlID09PSB0aGlzLkluc3RhbnRpYXRlKSB7
CisgICAgICAgIGlmIChlbnRyeS5zdGF0dXMgPiB0aGlzLkluc3RhbnRpYXRlKQorICAgICAgICAg
ICAgdGhyb3cgbmV3IEBUeXBlRXJyb3IoIlJlcXVlc3RlZCBtb2R1bGUgaXMgYWxyZWFkeSBpbnN0
YW50aWF0ZWQuIik7CisgICAgICAgIHRoaXMuZnVsZmlsbEZldGNoKGVudHJ5LCB1bmRlZmluZWQp
OworICAgICAgICB0aGlzLmZ1bGZpbGxUcmFuc2xhdGUoZW50cnksIHZhbHVlKTsKKyAgICAgICAg
dmFyIGxvYWRlciA9IHRoaXM7CisgICAgICAgIGVudHJ5LnRyYW5zbGF0ZS50aGVuKGZ1bmN0aW9u
IChzb3VyY2UpIHsKKyAgICAgICAgICAgIGxvYWRlci5mdWxmaWxsSW5zdGFudGlhdGUoZW50cnks
IHZhbHVlLCBzb3VyY2UpOworICAgICAgICB9KTsKKyAgICAgICAgcmV0dXJuOworICAgIH0KKwor
ICAgIHRocm93IG5ldyBAVHlwZUVycm9yKCJSZXF1ZXN0ZWQgbW9kdWxlIGlzIGFscmVhZHkgcmVh
ZHkgdG8gYmUgZXhlY3V0ZWQuIik7Cit9CmRpZmYgLS1naXQgYS9Tb3VyY2UvSmF2YVNjcmlwdENv
cmUvanNjLmNwcCBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9qc2MuY3BwCmluZGV4IDY4MTFkOTQw
ZTY1YTlkMDE1ODY3N2ExMDkxZjhlMTdhNWUzYjlkNjkuLjVlNTIxZjBhNTFhYmVhMDFmM2Y1YzFj
OTQwZDFiNTQxNTE4MzRhYzUgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9qc2Mu
Y3BwCisrKyBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9qc2MuY3BwCkBAIC0zOSw2ICszOSw4IEBA
CiAjaW5jbHVkZSAiSlNBcnJheUJ1ZmZlci5oIgogI2luY2x1ZGUgIkpTQ0lubGluZXMuaCIKICNp
bmNsdWRlICJKU0Z1bmN0aW9uLmgiCisjaW5jbHVkZSAiSlNJbnRlcm5hbFByb21pc2UuaCIKKyNp
bmNsdWRlICJKU0ludGVybmFsUHJvbWlzZURlZmVycmVkLmgiCiAjaW5jbHVkZSAiSlNMb2NrLmgi
CiAjaW5jbHVkZSAiSlNPTk9iamVjdC5oIgogI2luY2x1ZGUgIkpTUHJveHkuaCIKQEAgLTUxOSwy
MCArNTIxLDE3IEBAIHN0cnVjdCBTY3JpcHQgewogY2xhc3MgQ29tbWFuZExpbmUgewogcHVibGlj
OgogICAgIENvbW1hbmRMaW5lKGludCBhcmdjLCBjaGFyKiogYXJndikKLSAgICAgICAgOiBtX2lu
dGVyYWN0aXZlKGZhbHNlKQotICAgICAgICAsIG1fZHVtcChmYWxzZSkKLSAgICAgICAgLCBtX2V4
aXRDb2RlKGZhbHNlKQotICAgICAgICAsIG1fcHJvZmlsZShmYWxzZSkKICAgICB7CiAgICAgICAg
IHBhcnNlQXJndW1lbnRzKGFyZ2MsIGFyZ3YpOwogICAgIH0KIAotICAgIGJvb2wgbV9pbnRlcmFj
dGl2ZTsKLSAgICBib29sIG1fZHVtcDsKLSAgICBib29sIG1fZXhpdENvZGU7CisgICAgYm9vbCBt
X2ludGVyYWN0aXZlIHsgZmFsc2UgfTsKKyAgICBib29sIG1fZHVtcCB7IGZhbHNlIH07CisgICAg
Ym9vbCBtX21vZHVsZSB7IGZhbHNlIH07CisgICAgYm9vbCBtX2V4aXRDb2RlIHsgZmFsc2UgfTsK
ICAgICBWZWN0b3I8U2NyaXB0PiBtX3NjcmlwdHM7CiAgICAgVmVjdG9yPFN0cmluZz4gbV9hcmd1
bWVudHM7Ci0gICAgYm9vbCBtX3Byb2ZpbGU7CisgICAgYm9vbCBtX3Byb2ZpbGUgeyBmYWxzZSB9
OwogICAgIFN0cmluZyBtX3Byb2ZpbGVyT3V0cHV0OwogCiAgICAgdm9pZCBwYXJzZUFyZ3VtZW50
cyhpbnQsIGNoYXIqKik7CkBAIC01NjYsNiArNTY1LDE3IEBAIGxvbmcgU3RvcFdhdGNoOjpnZXRF
bGFwc2VkTVMoKQogICAgIHJldHVybiBzdGF0aWNfY2FzdDxsb25nPigobV9zdG9wVGltZSAtIG1f
c3RhcnRUaW1lKSAqIDEwMDApOwogfQogCitzdGF0aWMgaW5saW5lIFN0cmluZyBzdHJpbmdGcm9t
VVRGKGNvbnN0IGNoYXIqIHV0ZjgpCit7CisgICAgcmV0dXJuIFN0cmluZzo6ZnJvbVVURjhXaXRo
TGF0aW4xRmFsbGJhY2sodXRmOCwgc3RybGVuKHV0ZjgpKTsKK30KKworc3RhdGljIGlubGluZSBT
b3VyY2VDb2RlIGpzY1NvdXJjZShjb25zdCBjaGFyKiB1dGY4LCBjb25zdCBTdHJpbmcmIGZpbGVu
YW1lKQoreworICAgIFN0cmluZyBzdHIgPSBzdHJpbmdGcm9tVVRGKHV0ZjgpOworICAgIHJldHVy
biBtYWtlU291cmNlKHN0ciwgZmlsZW5hbWUpOworfQorCiBjbGFzcyBHbG9iYWxPYmplY3QgOiBw
dWJsaWMgSlNHbG9iYWxPYmplY3QgewogcHJpdmF0ZToKICAgICBHbG9iYWxPYmplY3QoVk0mLCBT
dHJ1Y3R1cmUqKTsKQEAgLTY4NywxMCArNjk3LDMxIEBAIGNsYXNzIEdsb2JhbE9iamVjdCA6IHB1
YmxpYyBKU0dsb2JhbE9iamVjdCB7CiAgICAgICAgIElkZW50aWZpZXIgaWRlbnRpZmllciA9IElk
ZW50aWZpZXI6OmZyb21TdHJpbmcoJnZtLCBuYW1lKTsKICAgICAgICAgcHV0RGlyZWN0KHZtLCBp
ZGVudGlmaWVyLCBKU0Z1bmN0aW9uOjpjcmVhdGUodm0sIHRoaXMsIGFyZ3VtZW50cywgaWRlbnRp
Zmllci5zdHJpbmcoKSwgZnVuY3Rpb24sIE5vSW50cmluc2ljLCBmdW5jdGlvbikpOwogICAgIH0K
KworICAgIHN0YXRpYyBKU0ludGVybmFsUHJvbWlzZSogbG9hZGVyRmV0Y2goSlNHbG9iYWxPYmpl
Y3QqIGdsb2JhbE9iamVjdCwgRXhlY1N0YXRlKiBleGVjLCBKU1ZhbHVlIGtleSkKKyAgICB7Cisg
ICAgICAgIEpTSW50ZXJuYWxQcm9taXNlRGVmZXJyZWQqIGRlZmVycmVkID0gSlNJbnRlcm5hbFBy
b21pc2VEZWZlcnJlZDo6Y3JlYXRlKGV4ZWMsIGdsb2JhbE9iamVjdCk7CisgICAgICAgIFN0cmlu
ZyBtb2R1bGVLZXkgPSBrZXkudG9TdHJpbmcoZXhlYyktPnZhbHVlKGV4ZWMpOworICAgICAgICBp
ZiAoZXhlYy0+aGFkRXhjZXB0aW9uKCkpIHsKKyAgICAgICAgICAgIEpTVmFsdWUgZXhjZXB0aW9u
ID0gZXhlYy0+ZXhjZXB0aW9uKCk7CisgICAgICAgICAgICBleGVjLT5jbGVhckV4Y2VwdGlvbigp
OworICAgICAgICAgICAgZGVmZXJyZWQtPnJlamVjdChleGVjLCBleGNlcHRpb24pOworICAgICAg
ICAgICAgcmV0dXJuIGRlZmVycmVkLT5wcm9taXNlKCk7CisgICAgICAgIH0KKworICAgICAgICAv
LyBIZXJlLCBub3cgd2UgY29uc2lkZXIgbW9kdWxlS2V5IGFzIHRoZSBmaWxlTmFtZS4KKyAgICAg
ICAgVmVjdG9yPGNoYXI+IHV0Zjg7CisgICAgICAgIGlmICghZmlsbEJ1ZmZlcldpdGhDb250ZW50
c09mRmlsZShtb2R1bGVLZXksIHV0ZjgpKSB7CisgICAgICAgICAgICBkZWZlcnJlZC0+cmVqZWN0
KGV4ZWMsIGNyZWF0ZUVycm9yKGV4ZWMsIG1ha2VTdHJpbmcoIkNvdWxkIG5vdCBvcGVuIGZpbGUg
JyIsIG1vZHVsZUtleSwgIicuIikpKTsKKyAgICAgICAgICAgIHJldHVybiBkZWZlcnJlZC0+cHJv
bWlzZSgpOworICAgICAgICB9CisgICAgICAgIGRlZmVycmVkLT5yZXNvbHZlKGV4ZWMsIGpzU3Ry
aW5nKGV4ZWMsIHN0cmluZ0Zyb21VVEYodXRmOC5kYXRhKCkpKSk7CisgICAgICAgIHJldHVybiBk
ZWZlcnJlZC0+cHJvbWlzZSgpOworICAgIH0KIH07CiAKIGNvbnN0IENsYXNzSW5mbyBHbG9iYWxP
YmplY3Q6OnNfaW5mbyA9IHsgImdsb2JhbCIsICZKU0dsb2JhbE9iamVjdDo6c19pbmZvLCAmZ2xv
YmFsT2JqZWN0VGFibGUsIENSRUFURV9NRVRIT0RfVEFCTEUoR2xvYmFsT2JqZWN0KSB9OwotY29u
c3QgR2xvYmFsT2JqZWN0TWV0aG9kVGFibGUgR2xvYmFsT2JqZWN0OjpzX2dsb2JhbE9iamVjdE1l
dGhvZFRhYmxlID0geyAmYWxsb3dzQWNjZXNzRnJvbSwgJnN1cHBvcnRzUHJvZmlsaW5nLCAmc3Vw
cG9ydHNSaWNoU291cmNlSW5mbywgJnNob3VsZEludGVycnVwdFNjcmlwdCwgJmphdmFTY3JpcHRS
dW50aW1lRmxhZ3MsIDAsICZzaG91bGRJbnRlcnJ1cHRTY3JpcHRCZWZvcmVUaW1lb3V0IH07Citj
b25zdCBHbG9iYWxPYmplY3RNZXRob2RUYWJsZSBHbG9iYWxPYmplY3Q6OnNfZ2xvYmFsT2JqZWN0
TWV0aG9kVGFibGUgPSB7ICZhbGxvd3NBY2Nlc3NGcm9tLCAmc3VwcG9ydHNQcm9maWxpbmcsICZz
dXBwb3J0c1JpY2hTb3VyY2VJbmZvLCAmc2hvdWxkSW50ZXJydXB0U2NyaXB0LCAmamF2YVNjcmlw
dFJ1bnRpbWVGbGFncywgMCwgJnNob3VsZEludGVycnVwdFNjcmlwdEJlZm9yZVRpbWVvdXQsIG51
bGxwdHIsICZsb2FkZXJGZXRjaCwgbnVsbHB0ciwgbnVsbHB0ciB9OwogCiAKIEdsb2JhbE9iamVj
dDo6R2xvYmFsT2JqZWN0KFZNJiB2bSwgU3RydWN0dXJlKiBzdHJ1Y3R1cmUpCkBAIC02OTgsMTcg
KzcyOSw2IEBAIEdsb2JhbE9iamVjdDo6R2xvYmFsT2JqZWN0KFZNJiB2bSwgU3RydWN0dXJlKiBz
dHJ1Y3R1cmUpCiB7CiB9CiAKLXN0YXRpYyBpbmxpbmUgU3RyaW5nIHN0cmluZ0Zyb21VVEYoY29u
c3QgY2hhciogdXRmOCkKLXsKLSAgICByZXR1cm4gU3RyaW5nOjpmcm9tVVRGOFdpdGhMYXRpbjFG
YWxsYmFjayh1dGY4LCBzdHJsZW4odXRmOCkpOwotfQotCi1zdGF0aWMgaW5saW5lIFNvdXJjZUNv
ZGUganNjU291cmNlKGNvbnN0IGNoYXIqIHV0ZjgsIGNvbnN0IFN0cmluZyYgZmlsZW5hbWUpCi17
Ci0gICAgU3RyaW5nIHN0ciA9IHN0cmluZ0Zyb21VVEYodXRmOCk7Ci0gICAgcmV0dXJuIG1ha2VT
b3VyY2Uoc3RyLCBmaWxlbmFtZSk7Ci19Ci0KIEVuY29kZWRKU1ZhbHVlIEpTQ19IT1NUX0NBTEwg
ZnVuY3Rpb25QcmludChFeGVjU3RhdGUqIGV4ZWMpCiB7CiAgICAgZm9yICh1bnNpZ25lZCBpID0g
MDsgaSA8IGV4ZWMtPmFyZ3VtZW50Q291bnQoKTsgKytpKSB7CkBAIC0xMjEyLDcgKzEyMzIsNyBA
QCBFbmNvZGVkSlNWYWx1ZSBKU0NfSE9TVF9DQUxMIGZ1bmN0aW9uQ2hlY2tNb2R1bGVTeW50YXgo
RXhlY1N0YXRlKiBleGVjKQogICAgIHN0b3BXYXRjaC5zdGFydCgpOwogCiAgICAgUGFyc2VyRXJy
b3IgZXJyb3I7Ci0gICAgYm9vbCB2YWxpZFN5bnRheCA9IGNoZWNrTW9kdWxlU3ludGF4KGV4ZWMt
PnZtKCksIG1ha2VTb3VyY2Uoc291cmNlKSwgZXJyb3IpOworICAgIGJvb2wgdmFsaWRTeW50YXgg
PSBjaGVja01vZHVsZVN5bnRheChleGVjLCBtYWtlU291cmNlKHNvdXJjZSksIGVycm9yKTsKICAg
ICBzdG9wV2F0Y2guc3RvcCgpOwogCiAgICAgaWYgKCF2YWxpZFN5bnRheCkKQEAgLTEzMjAsNyAr
MTM0MCwxOCBAQCBpbnQgbWFpbihpbnQgYXJnYywgY2hhcioqIGFyZ3YpCiAgICAganNjRXhpdChy
ZXMpOwogfQogCi1zdGF0aWMgYm9vbCBydW5XaXRoU2NyaXB0cyhHbG9iYWxPYmplY3QqIGdsb2Jh
bE9iamVjdCwgY29uc3QgVmVjdG9yPFNjcmlwdD4mIHNjcmlwdHMsIGJvb2wgZHVtcCkKK3N0YXRp
YyB2b2lkIGR1bXBFeGNlcHRpb24oR2xvYmFsT2JqZWN0KiBnbG9iYWxPYmplY3QsIE5ha2VkUHRy
PEV4Y2VwdGlvbj4gZXZhbHVhdGlvbkV4Y2VwdGlvbikKK3sKKyAgICBpZiAoZXZhbHVhdGlvbkV4
Y2VwdGlvbikgeworICAgICAgICBwcmludGYoIkV4Y2VwdGlvbjogJXNcbiIsIGV2YWx1YXRpb25F
eGNlcHRpb24tPnZhbHVlKCkudG9TdHJpbmcoZ2xvYmFsT2JqZWN0LT5nbG9iYWxFeGVjKCkpLT52
YWx1ZShnbG9iYWxPYmplY3QtPmdsb2JhbEV4ZWMoKSkudXRmOCgpLmRhdGEoKSk7CisgICAgICAg
IElkZW50aWZpZXIgc3RhY2tJRCA9IElkZW50aWZpZXI6OmZyb21TdHJpbmcoZ2xvYmFsT2JqZWN0
LT5nbG9iYWxFeGVjKCksICJzdGFjayIpOworICAgICAgICBKU1ZhbHVlIHN0YWNrVmFsdWUgPSBl
dmFsdWF0aW9uRXhjZXB0aW9uLT52YWx1ZSgpLmdldChnbG9iYWxPYmplY3QtPmdsb2JhbEV4ZWMo
KSwgc3RhY2tJRCk7CisgICAgICAgIGlmICghc3RhY2tWYWx1ZS5pc1VuZGVmaW5lZE9yTnVsbCgp
KQorICAgICAgICAgICAgcHJpbnRmKCIlc1xuIiwgc3RhY2tWYWx1ZS50b1N0cmluZyhnbG9iYWxP
YmplY3QtPmdsb2JhbEV4ZWMoKSktPnZhbHVlKGdsb2JhbE9iamVjdC0+Z2xvYmFsRXhlYygpKS51
dGY4KCkuZGF0YSgpKTsKKyAgICB9Cit9CisKK3N0YXRpYyBib29sIHJ1bldpdGhTY3JpcHRzKEds
b2JhbE9iamVjdCogZ2xvYmFsT2JqZWN0LCBjb25zdCBWZWN0b3I8U2NyaXB0PiYgc2NyaXB0cywg
Ym9vbCBkdW1wLCBib29sIG1vZHVsZSkKIHsKICAgICBjb25zdCBjaGFyKiBzY3JpcHQ7CiAgICAg
U3RyaW5nIGZpbGVOYW1lOwpAQCAtMTM0OSwxNyArMTM4MCwyMSBAQCBzdGF0aWMgYm9vbCBydW5X
aXRoU2NyaXB0cyhHbG9iYWxPYmplY3QqIGdsb2JhbE9iamVjdCwgY29uc3QgVmVjdG9yPFNjcmlw
dD4mIHNjcgogCiAgICAgICAgIHZtLnN0YXJ0U2FtcGxpbmcoKTsKIAotICAgICAgICBOYWtlZFB0
cjxFeGNlcHRpb24+IGV2YWx1YXRpb25FeGNlcHRpb247Ci0gICAgICAgIEpTVmFsdWUgcmV0dXJu
VmFsdWUgPSBldmFsdWF0ZShnbG9iYWxPYmplY3QtPmdsb2JhbEV4ZWMoKSwganNjU291cmNlKHNj
cmlwdCwgZmlsZU5hbWUpLCBKU1ZhbHVlKCksIGV2YWx1YXRpb25FeGNlcHRpb24pOwotICAgICAg
ICBzdWNjZXNzID0gc3VjY2VzcyAmJiAhZXZhbHVhdGlvbkV4Y2VwdGlvbjsKLSAgICAgICAgaWYg
KGR1bXAgJiYgIWV2YWx1YXRpb25FeGNlcHRpb24pCi0gICAgICAgICAgICBwcmludGYoIkVuZDog
JXNcbiIsIHJldHVyblZhbHVlLnRvU3RyaW5nKGdsb2JhbE9iamVjdC0+Z2xvYmFsRXhlYygpKS0+
dmFsdWUoZ2xvYmFsT2JqZWN0LT5nbG9iYWxFeGVjKCkpLnV0ZjgoKS5kYXRhKCkpOwotICAgICAg
ICBpZiAoZXZhbHVhdGlvbkV4Y2VwdGlvbikgewotICAgICAgICAgICAgcHJpbnRmKCJFeGNlcHRp
b246ICVzXG4iLCBldmFsdWF0aW9uRXhjZXB0aW9uLT52YWx1ZSgpLnRvU3RyaW5nKGdsb2JhbE9i
amVjdC0+Z2xvYmFsRXhlYygpKS0+dmFsdWUoZ2xvYmFsT2JqZWN0LT5nbG9iYWxFeGVjKCkpLnV0
ZjgoKS5kYXRhKCkpOwotICAgICAgICAgICAgSWRlbnRpZmllciBzdGFja0lEID0gSWRlbnRpZmll
cjo6ZnJvbVN0cmluZyhnbG9iYWxPYmplY3QtPmdsb2JhbEV4ZWMoKSwgInN0YWNrIik7Ci0gICAg
ICAgICAgICBKU1ZhbHVlIHN0YWNrVmFsdWUgPSBldmFsdWF0aW9uRXhjZXB0aW9uLT52YWx1ZSgp
LmdldChnbG9iYWxPYmplY3QtPmdsb2JhbEV4ZWMoKSwgc3RhY2tJRCk7Ci0gICAgICAgICAgICBp
ZiAoIXN0YWNrVmFsdWUuaXNVbmRlZmluZWRPck51bGwoKSkKLSAgICAgICAgICAgICAgICBwcmlu
dGYoIiVzXG4iLCBzdGFja1ZhbHVlLnRvU3RyaW5nKGdsb2JhbE9iamVjdC0+Z2xvYmFsRXhlYygp
KS0+dmFsdWUoZ2xvYmFsT2JqZWN0LT5nbG9iYWxFeGVjKCkpLnV0ZjgoKS5kYXRhKCkpOworICAg
ICAgICBpZiAobW9kdWxlKSB7CisjaWYgRU5BQkxFKEVTNl9NT0RVTEVTKQorICAgICAgICAgICAg
TmFrZWRQdHI8RXhjZXB0aW9uPiBldmFsdWF0aW9uRXhjZXB0aW9uOworICAgICAgICAgICAgZXZh
bHVhdGVNb2R1bGUoZ2xvYmFsT2JqZWN0LT5nbG9iYWxFeGVjKCksIGpzY1NvdXJjZShzY3JpcHQs
IGZpbGVOYW1lKSwgZXZhbHVhdGlvbkV4Y2VwdGlvbik7CisgICAgICAgICAgICBkdW1wRXhjZXB0
aW9uKGdsb2JhbE9iamVjdCwgZXZhbHVhdGlvbkV4Y2VwdGlvbik7CisgICAgICAgICAgICBnbG9i
YWxPYmplY3QtPmdsb2JhbEV4ZWMoKS0+Y2xlYXJFeGNlcHRpb24oKTsKKyAgICAgICAgICAgIGds
b2JhbE9iamVjdC0+dm0oKS5kcmFpbk1pY3JvdGFza3MoKTsKKyNlbmRpZgorICAgICAgICB9IGVs
c2UgeworICAgICAgICAgICAgTmFrZWRQdHI8RXhjZXB0aW9uPiBldmFsdWF0aW9uRXhjZXB0aW9u
OworICAgICAgICAgICAgSlNWYWx1ZSByZXR1cm5WYWx1ZSA9IGV2YWx1YXRlKGdsb2JhbE9iamVj
dC0+Z2xvYmFsRXhlYygpLCBqc2NTb3VyY2Uoc2NyaXB0LCBmaWxlTmFtZSksIEpTVmFsdWUoKSwg
ZXZhbHVhdGlvbkV4Y2VwdGlvbik7CisgICAgICAgICAgICBzdWNjZXNzID0gc3VjY2VzcyAmJiAh
ZXZhbHVhdGlvbkV4Y2VwdGlvbjsKKyAgICAgICAgICAgIGlmIChkdW1wICYmICFldmFsdWF0aW9u
RXhjZXB0aW9uKQorICAgICAgICAgICAgICAgIHByaW50ZigiRW5kOiAlc1xuIiwgcmV0dXJuVmFs
dWUudG9TdHJpbmcoZ2xvYmFsT2JqZWN0LT5nbG9iYWxFeGVjKCkpLT52YWx1ZShnbG9iYWxPYmpl
Y3QtPmdsb2JhbEV4ZWMoKSkudXRmOCgpLmRhdGEoKSk7CisgICAgICAgICAgICBkdW1wRXhjZXB0
aW9uKGdsb2JhbE9iamVjdCwgZXZhbHVhdGlvbkV4Y2VwdGlvbik7CiAgICAgICAgIH0KIAogICAg
ICAgICB2bS5zdG9wU2FtcGxpbmcoKTsKQEAgLTE0NTEsNiArMTQ4Niw5IEBAIHN0YXRpYyBOT19S
RVRVUk4gdm9pZCBwcmludFVzYWdlU3RhdGVtZW50KGJvb2wgaGVscCA9IGZhbHNlKQogICAgIGZw
cmludGYoc3RkZXJyLCAiICAtZiAgICAgICAgIFNwZWNpZmllcyBhIHNvdXJjZSBmaWxlIChkZXBy
ZWNhdGVkKVxuIik7CiAgICAgZnByaW50ZihzdGRlcnIsICIgIC1ofC0taGVscCAgUHJpbnRzIHRo
aXMgaGVscCBtZXNzYWdlXG4iKTsKICAgICBmcHJpbnRmKHN0ZGVyciwgIiAgLWkgICAgICAgICBF
bmFibGVzIGludGVyYWN0aXZlIG1vZGUgKGRlZmF1bHQgaWYgbm8gZmlsZXMgYXJlIHNwZWNpZmll
ZClcbiIpOworI2lmIEVOQUJMRShFUzZfTU9EVUxFUykKKyAgICBmcHJpbnRmKHN0ZGVyciwgIiAg
LW0gICAgICAgICBFeGVjdXRlIGFzIGEgbW9kdWxlXG4iKTsKKyNlbmRpZgogI2lmIEhBVkUoU0lH
TkFMX0gpCiAgICAgZnByaW50ZihzdGRlcnIsICIgIC1zICAgICAgICAgSW5zdGFsbHMgc2lnbmFs
IGhhbmRsZXJzIHRoYXQgZXhpdCBvbiBhIGNyYXNoIChVbml4IHBsYXRmb3JtcyBvbmx5KVxuIik7
CiAjZW5kaWYKQEAgLTE1MDIsNiArMTU0MCwxMiBAQCB2b2lkIENvbW1hbmRMaW5lOjpwYXJzZUFy
Z3VtZW50cyhpbnQgYXJnYywgY2hhcioqIGFyZ3YpCiAgICAgICAgICAgICBtX3Byb2ZpbGVyT3V0
cHV0ID0gYXJndltpXTsKICAgICAgICAgICAgIGNvbnRpbnVlOwogICAgICAgICB9CisjaWYgRU5B
QkxFKEVTNl9NT0RVTEVTKQorICAgICAgICBpZiAoIXN0cmNtcChhcmcsICItbSIpKSB7CisgICAg
ICAgICAgICBtX21vZHVsZSA9IHRydWU7CisgICAgICAgICAgICBjb250aW51ZTsKKyAgICAgICAg
fQorI2VuZGlmCiAgICAgICAgIGlmICghc3RyY21wKGFyZywgIi1zIikpIHsKICNpZiBIQVZFKFNJ
R05BTF9IKQogICAgICAgICAgICAgc2lnbmFsKFNJR0lMTCwgX2V4aXQpOwpAQCAtMTU3Nyw3ICsx
NjIxLDcgQEAgaW50IGpzY21haW4oaW50IGFyZ2MsIGNoYXIqKiBhcmd2KQogICAgICAgICAgICAg
dm0tPm1fcGVyQnl0ZWNvZGVQcm9maWxlciA9IHN0ZDo6bWFrZV91bmlxdWU8UHJvZmlsZXI6OkRh
dGFiYXNlPigqdm0pOwogICAgIAogICAgICAgICBHbG9iYWxPYmplY3QqIGdsb2JhbE9iamVjdCA9
IEdsb2JhbE9iamVjdDo6Y3JlYXRlKCp2bSwgR2xvYmFsT2JqZWN0OjpjcmVhdGVTdHJ1Y3R1cmUo
KnZtLCBqc051bGwoKSksIG9wdGlvbnMubV9hcmd1bWVudHMpOwotICAgICAgICBib29sIHN1Y2Nl
c3MgPSBydW5XaXRoU2NyaXB0cyhnbG9iYWxPYmplY3QsIG9wdGlvbnMubV9zY3JpcHRzLCBvcHRp
b25zLm1fZHVtcCk7CisgICAgICAgIGJvb2wgc3VjY2VzcyA9IHJ1bldpdGhTY3JpcHRzKGdsb2Jh
bE9iamVjdCwgb3B0aW9ucy5tX3NjcmlwdHMsIG9wdGlvbnMubV9kdW1wLCBvcHRpb25zLm1fbW9k
dWxlKTsKICAgICAgICAgaWYgKG9wdGlvbnMubV9pbnRlcmFjdGl2ZSAmJiBzdWNjZXNzKQogICAg
ICAgICAgICAgcnVuSW50ZXJhY3RpdmUoZ2xvYmFsT2JqZWN0KTsKIApkaWZmIC0tZ2l0IGEvU291
cmNlL0phdmFTY3JpcHRDb3JlL3BhcnNlci9MZXhlci5jcHAgYi9Tb3VyY2UvSmF2YVNjcmlwdENv
cmUvcGFyc2VyL0xleGVyLmNwcAppbmRleCAyNTlkMjU0ZTM5NzUxOGM3YmNjZmZjOWVkZWMxNTZi
YTVmMDBkYjdhLi40NzYwNDNmZjZlMjU1ZjllYjYzMTQ1Y2I4NmNkYTllZWYwYTQxNTY2IDEwMDY0
NAotLS0gYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvcGFyc2VyL0xleGVyLmNwcAorKysgYi9Tb3Vy
Y2UvSmF2YVNjcmlwdENvcmUvcGFyc2VyL0xleGVyLmNwcApAQCAtOTM1LDcgKzkzNSw3IEBAIHRl
bXBsYXRlIDxib29sIHNob3VsZENyZWF0ZUlkZW50aWZpZXI+IEFMV0FZU19JTkxJTkUgSlNUb2tl
blR5cGUgTGV4ZXI8TENoYXI+OjpwCiAgICAgICAgICAgICAgICAgcmV0dXJuIEVSUk9SVE9LOwog
ICAgICAgICAgICAgfQogICAgICAgICAgICAgaWYgKGlzUHJpdmF0ZU5hbWUpCi0gICAgICAgICAg
ICAgICAgaWRlbnQgPSBtX3ZtLT5wcm9wZXJ0eU5hbWVzLT5nZXRQcml2YXRlTmFtZSgqaWRlbnQp
OworICAgICAgICAgICAgICAgIGlkZW50ID0gbV92bS0+cHJvcGVydHlOYW1lcy0+bG9va1VwUHJp
dmF0ZU5hbWUoKmlkZW50KTsKICAgICAgICAgICAgIGVsc2UgaWYgKCppZGVudCA9PSBtX3ZtLT5w
cm9wZXJ0eU5hbWVzLT51bmRlZmluZWRLZXl3b3JkKQogICAgICAgICAgICAgICAgIHRva2VuRGF0
YS0+aWRlbnQgPSAmbV92bS0+cHJvcGVydHlOYW1lcy0+dW5kZWZpbmVkUHJpdmF0ZU5hbWU7CiAg
ICAgICAgICAgICBpZiAoIWlkZW50KQpAQCAtMTAxMiw3ICsxMDEyLDcgQEAgdGVtcGxhdGUgPGJv
b2wgc2hvdWxkQ3JlYXRlSWRlbnRpZmllcj4gQUxXQVlTX0lOTElORSBKU1Rva2VuVHlwZSBMZXhl
cjxVQ2hhcj46OnAKICAgICAgICAgICAgICAgICByZXR1cm4gRVJST1JUT0s7CiAgICAgICAgICAg
ICB9CiAgICAgICAgICAgICBpZiAoaXNQcml2YXRlTmFtZSkKLSAgICAgICAgICAgICAgICBpZGVu
dCA9IG1fdm0tPnByb3BlcnR5TmFtZXMtPmdldFByaXZhdGVOYW1lKCppZGVudCk7CisgICAgICAg
ICAgICAgICAgaWRlbnQgPSBtX3ZtLT5wcm9wZXJ0eU5hbWVzLT5sb29rVXBQcml2YXRlTmFtZSgq
aWRlbnQpOwogICAgICAgICAgICAgZWxzZSBpZiAoKmlkZW50ID09IG1fdm0tPnByb3BlcnR5TmFt
ZXMtPnVuZGVmaW5lZEtleXdvcmQpCiAgICAgICAgICAgICAgICAgdG9rZW5EYXRhLT5pZGVudCA9
ICZtX3ZtLT5wcm9wZXJ0eU5hbWVzLT51bmRlZmluZWRQcml2YXRlTmFtZTsKICAgICAgICAgICAg
IGlmICghaWRlbnQpCmRpZmYgLS1naXQgYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvcGFyc2VyL01v
ZHVsZUFuYWx5emVyLmNwcCBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9wYXJzZXIvTW9kdWxlQW5h
bHl6ZXIuY3BwCmluZGV4IGIyZGU5NjBiMzkzMjU4NDFjZDlmODVjNjcxNjIyYzNkZjdiYTlkNzcu
LjZkYTJjZDA4ZDQ4ZjIwNTg5ZjRkZWUyZWM0NTRlOWQxNWNlM2Y4YmIgMTAwNjQ0Ci0tLSBhL1Nv
dXJjZS9KYXZhU2NyaXB0Q29yZS9wYXJzZXIvTW9kdWxlQW5hbHl6ZXIuY3BwCisrKyBiL1NvdXJj
ZS9KYXZhU2NyaXB0Q29yZS9wYXJzZXIvTW9kdWxlQW5hbHl6ZXIuY3BwCkBAIC0yNywxNCArMjcs
MTggQEAKICNpbmNsdWRlICJNb2R1bGVBbmFseXplci5oIgogCiAjaW5jbHVkZSAiSWRlbnRpZmll
cklubGluZXMuaCIKLSNpbmNsdWRlICJNb2R1bGVSZWNvcmQuaCIKKyNpbmNsdWRlICJKU0NKU1Zh
bHVlSW5saW5lcy5oIgorI2luY2x1ZGUgIkpTQ2VsbElubGluZXMuaCIKKyNpbmNsdWRlICJKU0ds
b2JhbE9iamVjdC5oIgorI2luY2x1ZGUgIkpTTW9kdWxlUmVjb3JkLmgiCisjaW5jbHVkZSAiU3Ry
b25nSW5saW5lcy5oIgogCiBuYW1lc3BhY2UgSlNDIHsKIAogCi1Nb2R1bGVBbmFseXplcjo6TW9k
dWxlQW5hbHl6ZXIoVk0mIHZtLCBjb25zdCBWYXJpYWJsZUVudmlyb25tZW50JiBkZWNsYXJlZFZh
cmlhYmxlcywgY29uc3QgVmFyaWFibGVFbnZpcm9ubWVudCYgbGV4aWNhbFZhcmlhYmxlcykKLSAg
ICA6IG1fdm0oJnZtKQotICAgICwgbV9tb2R1bGVSZWNvcmQoTW9kdWxlUmVjb3JkOjpjcmVhdGUo
KSkKK01vZHVsZUFuYWx5emVyOjpNb2R1bGVBbmFseXplcihFeGVjU3RhdGUqIGV4ZWMsIGNvbnN0
IFZhcmlhYmxlRW52aXJvbm1lbnQmIGRlY2xhcmVkVmFyaWFibGVzLCBjb25zdCBWYXJpYWJsZUVu
dmlyb25tZW50JiBsZXhpY2FsVmFyaWFibGVzKQorICAgIDogbV92bSgmZXhlYy0+dm0oKSkKKyAg
ICAsIG1fbW9kdWxlUmVjb3JkKGV4ZWMtPnZtKCksIEpTTW9kdWxlUmVjb3JkOjpjcmVhdGUoZXhl
Yy0+dm0oKSwgZXhlYy0+bGV4aWNhbEdsb2JhbE9iamVjdCgpLT5tb2R1bGVSZWNvcmRTdHJ1Y3R1
cmUoKSkpCiAgICAgLCBtX2RlY2xhcmVkVmFyaWFibGVzKGRlY2xhcmVkVmFyaWFibGVzKQogICAg
ICwgbV9sZXhpY2FsVmFyaWFibGVzKGxleGljYWxWYXJpYWJsZXMpCiB7CkBAIC03NiwyOCArODAs
MjggQEAgdm9pZCBNb2R1bGVBbmFseXplcjo6ZXhwb3J0VmFyaWFibGUoY29uc3QgUmVmUHRyPFVu
aXF1ZWRTdHJpbmdJbXBsPiYgbG9jYWxOYW1lLAogCiAgICAgLy8gRXhwb3J0ZWQgbW9kdWxlIGxv
Y2FsIHZhcmlhYmxlLgogICAgIGlmICghdmFyaWFibGUuaXNJbXBvcnRlZCgpKSB7Ci0gICAgICAg
IG1vZHVsZVJlY29yZCgpLmFkZEV4cG9ydEVudHJ5KE1vZHVsZVJlY29yZDo6RXhwb3J0RW50cnk6
OmNyZWF0ZUxvY2FsKGV4cG9ydE5hbWUsIElkZW50aWZpZXI6OmZyb21VaWQobV92bSwgbG9jYWxO
YW1lLmdldCgpKSwgdmFyaWFibGUpKTsKKyAgICAgICAgbW9kdWxlUmVjb3JkKCktPmFkZEV4cG9y
dEVudHJ5KEpTTW9kdWxlUmVjb3JkOjpFeHBvcnRFbnRyeTo6Y3JlYXRlTG9jYWwoZXhwb3J0TmFt
ZSwgSWRlbnRpZmllcjo6ZnJvbVVpZChtX3ZtLCBsb2NhbE5hbWUuZ2V0KCkpLCB2YXJpYWJsZSkp
OwogICAgICAgICByZXR1cm47CiAgICAgfQogCi0gICAgY29uc3QgYXV0byYgaW1wb3J0RW50cnkg
PSBtb2R1bGVSZWNvcmQoKS5sb29rVXBJbXBvcnRFbnRyeShsb2NhbE5hbWUpOworICAgIGNvbnN0
IGF1dG8mIGltcG9ydEVudHJ5ID0gbW9kdWxlUmVjb3JkKCktPmxvb2tVcEltcG9ydEVudHJ5KGxv
Y2FsTmFtZSk7CiAgICAgaWYgKGltcG9ydEVudHJ5LmlzTmFtZXNwYWNlKHZtKCkpKSB7CiAgICAg
ICAgIC8vIEV4cG9ydGVkIG5hbWVzcGFjZSBiaW5kaW5nLgogICAgICAgICAvLyBpbXBvcnQgKiBh
cyBuYW1lc3BhY2UgZnJvbSAibW9kIgogICAgICAgICAvLyBleHBvcnQgeyBuYW1lc3BhY2UgfQot
ICAgICAgICBtb2R1bGVSZWNvcmQoKS5hZGRFeHBvcnRFbnRyeShNb2R1bGVSZWNvcmQ6OkV4cG9y
dEVudHJ5OjpjcmVhdGVOYW1lc3BhY2UoZXhwb3J0TmFtZSwgaW1wb3J0RW50cnkubW9kdWxlUmVx
dWVzdCkpOworICAgICAgICBtb2R1bGVSZWNvcmQoKS0+YWRkRXhwb3J0RW50cnkoSlNNb2R1bGVS
ZWNvcmQ6OkV4cG9ydEVudHJ5OjpjcmVhdGVOYW1lc3BhY2UoZXhwb3J0TmFtZSwgaW1wb3J0RW50
cnkubW9kdWxlUmVxdWVzdCkpOwogICAgICAgICByZXR1cm47CiAgICAgfQogCiAgICAgLy8gSW5k
aXJlY3RseSBleHBvcnRlZCBiaW5kaW5nLgogICAgIC8vIGltcG9ydCBhIGZyb20gIm1vZCIKICAg
ICAvLyBleHBvcnQgeyBhIH0KLSAgICBtb2R1bGVSZWNvcmQoKS5hZGRFeHBvcnRFbnRyeShNb2R1
bGVSZWNvcmQ6OkV4cG9ydEVudHJ5OjpjcmVhdGVJbmRpcmVjdChleHBvcnROYW1lLCBpbXBvcnRF
bnRyeS5pbXBvcnROYW1lLCBpbXBvcnRFbnRyeS5tb2R1bGVSZXF1ZXN0KSk7CisgICAgbW9kdWxl
UmVjb3JkKCktPmFkZEV4cG9ydEVudHJ5KEpTTW9kdWxlUmVjb3JkOjpFeHBvcnRFbnRyeTo6Y3Jl
YXRlSW5kaXJlY3QoZXhwb3J0TmFtZSwgaW1wb3J0RW50cnkuaW1wb3J0TmFtZSwgaW1wb3J0RW50
cnkubW9kdWxlUmVxdWVzdCkpOwogfQogCiAKIAotUmVmPE1vZHVsZVJlY29yZD4gTW9kdWxlQW5h
bHl6ZXI6OmFuYWx5emUoTW9kdWxlUHJvZ3JhbU5vZGUmIG1vZHVsZVByb2dyYW1Ob2RlKQorSlNN
b2R1bGVSZWNvcmQqIE1vZHVsZUFuYWx5emVyOjphbmFseXplKE1vZHVsZVByb2dyYW1Ob2RlJiBt
b2R1bGVQcm9ncmFtTm9kZSkKIHsKICAgICAvLyBUcmF2ZXJzZSB0aGUgbW9kdWxlIEFTVCBhbmQg
Y29sbGVjdAogICAgIC8vICogSW1wb3J0IGVudHJpZXMKQEAgLTE0OSw3ICsxNTMsNyBAQCBSZWY8
TW9kdWxlUmVjb3JkPiBNb2R1bGVBbmFseXplcjo6YW5hbHl6ZShNb2R1bGVQcm9ncmFtTm9kZSYg
bW9kdWxlUHJvZ3JhbU5vZGUpCiAgICAgaWYgKE9wdGlvbnM6OmR1bXBNb2R1bGVSZWNvcmQoKSkK
ICAgICAgICAgbV9tb2R1bGVSZWNvcmQtPmR1bXAoKTsKIAotICAgIHJldHVybiAqbV9tb2R1bGVS
ZWNvcmQ7CisgICAgcmV0dXJuIG1fbW9kdWxlUmVjb3JkLmdldCgpOwogfQogCiB9IC8vIG5hbWVz
cGFjZSBKU0MKZGlmZiAtLWdpdCBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9wYXJzZXIvTW9kdWxl
QW5hbHl6ZXIuaCBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9wYXJzZXIvTW9kdWxlQW5hbHl6ZXIu
aAppbmRleCAwMjc2NDg0NzY1MGIzMDI0ZmQyYThjMzcyMmU3M2E3NDdiOTYzY2I2Li4zMzkwYjdi
YWYxZjY1ZTgxMGMxMTM5YjZkZWM0NjU5NDZiODlkNDkyIDEwMDY0NAotLS0gYS9Tb3VyY2UvSmF2
YVNjcmlwdENvcmUvcGFyc2VyL01vZHVsZUFuYWx5emVyLmgKKysrIGIvU291cmNlL0phdmFTY3Jp
cHRDb3JlL3BhcnNlci9Nb2R1bGVBbmFseXplci5oCkBAIC0yNiwyMCArMjYsMjIgQEAKICNpZm5k
ZWYgTW9kdWxlQW5hbHl6ZXJfaAogI2RlZmluZSBNb2R1bGVBbmFseXplcl9oCiAKLSNpbmNsdWRl
ICJNb2R1bGVSZWNvcmQuaCIKICNpbmNsdWRlICJOb2Rlcy5oIgogCiBuYW1lc3BhY2UgSlNDIHsK
IAorY2xhc3MgSlNNb2R1bGVSZWNvcmQ7CisKIGNsYXNzIE1vZHVsZUFuYWx5emVyIHsKKyAgICBX
VEZfTUFLRV9OT05DT1BZQUJMRShNb2R1bGVBbmFseXplcik7CiBwdWJsaWM6Ci0gICAgTW9kdWxl
QW5hbHl6ZXIoVk0mLCBjb25zdCBWYXJpYWJsZUVudmlyb25tZW50JiBkZWNsYXJlZFZhcmlhYmxl
cywgY29uc3QgVmFyaWFibGVFbnZpcm9ubWVudCYgbGV4aWNhbFZhcmlhYmxlcyk7CisgICAgTW9k
dWxlQW5hbHl6ZXIoRXhlY1N0YXRlKiwgY29uc3QgVmFyaWFibGVFbnZpcm9ubWVudCYgZGVjbGFy
ZWRWYXJpYWJsZXMsIGNvbnN0IFZhcmlhYmxlRW52aXJvbm1lbnQmIGxleGljYWxWYXJpYWJsZXMp
OwogCi0gICAgUmVmPE1vZHVsZVJlY29yZD4gYW5hbHl6ZShNb2R1bGVQcm9ncmFtTm9kZSYpOwor
ICAgIEpTTW9kdWxlUmVjb3JkKiBhbmFseXplKE1vZHVsZVByb2dyYW1Ob2RlJik7CiAKICAgICBW
TSYgdm0oKSB7IHJldHVybiAqbV92bTsgfQogCi0gICAgTW9kdWxlUmVjb3JkJiBtb2R1bGVSZWNv
cmQoKSB7IHJldHVybiAqbV9tb2R1bGVSZWNvcmQ7IH0KKyAgICBKU01vZHVsZVJlY29yZCogbW9k
dWxlUmVjb3JkKCkgeyByZXR1cm4gbV9tb2R1bGVSZWNvcmQuZ2V0KCk7IH0KIAogICAgIHZvaWQg
ZGVjbGFyZUV4cG9ydEFsaWFzKGNvbnN0IElkZW50aWZpZXImIGxvY2FsTmFtZSwgY29uc3QgSWRl
bnRpZmllciYgZXhwb3J0TmFtZSk7CiAKQEAgLTUxLDcgKzUzLDcgQEAgY2xhc3MgTW9kdWxlQW5h
bHl6ZXIgewogICAgIElkZW50aWZpZXIgZXhwb3J0ZWRCaW5kaW5nKGNvbnN0IFJlZlB0cjxVbmlx
dWVkU3RyaW5nSW1wbD4mIGlkZW50KTsKIAogICAgIFZNKiBtX3ZtOwotICAgIFJlZlB0cjxNb2R1
bGVSZWNvcmQ+IG1fbW9kdWxlUmVjb3JkOworICAgIFN0cm9uZzxKU01vZHVsZVJlY29yZD4gbV9t
b2R1bGVSZWNvcmQ7CiAgICAgVmFyaWFibGVFbnZpcm9ubWVudCBtX2RlY2xhcmVkVmFyaWFibGVz
OwogICAgIFZhcmlhYmxlRW52aXJvbm1lbnQgbV9sZXhpY2FsVmFyaWFibGVzOwogICAgIElkZW50
aWZpZXJBbGlhc01hcCBtX2FsaWFzTWFwOwpkaWZmIC0tZ2l0IGEvU291cmNlL0phdmFTY3JpcHRD
b3JlL3BhcnNlci9Nb2R1bGVSZWNvcmQuY3BwIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL3BhcnNl
ci9Nb2R1bGVSZWNvcmQuY3BwCmRlbGV0ZWQgZmlsZSBtb2RlIDEwMDY0NAppbmRleCBlYzk3MzU2
OGJlYzhhMGIxNTMzMzJmNDg3NWY5ZWZlMTM3ODJlYzhhLi4wMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwCi0tLSBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9wYXJzZXIvTW9k
dWxlUmVjb3JkLmNwcAorKysgL2Rldi9udWxsCkBAIC0xLDk1ICswLDAgQEAKLS8qCi0gKiBDb3B5
cmlnaHQgKEMpIDIwMTUgQXBwbGUgSW5jLiBBbGwgcmlnaHRzIHJlc2VydmVkLgotICoKLSAqIFJl
ZGlzdHJpYnV0aW9uIGFuZCB1c2UgaW4gc291cmNlIGFuZCBiaW5hcnkgZm9ybXMsIHdpdGggb3Ig
d2l0aG91dAotICogbW9kaWZpY2F0aW9uLCBhcmUgcGVybWl0dGVkIHByb3ZpZGVkIHRoYXQgdGhl
IGZvbGxvd2luZyBjb25kaXRpb25zCi0gKiBhcmUgbWV0OgotICogMS4gUmVkaXN0cmlidXRpb25z
IG9mIHNvdXJjZSBjb2RlIG11c3QgcmV0YWluIHRoZSBhYm92ZSBjb3B5cmlnaHQKLSAqICAgIG5v
dGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1l
ci4KLSAqIDIuIFJlZGlzdHJpYnV0aW9ucyBpbiBiaW5hcnkgZm9ybSBtdXN0IHJlcHJvZHVjZSB0
aGUgYWJvdmUgY29weXJpZ2h0Ci0gKiAgICBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25z
IGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIgaW4gdGhlCi0gKiAgICBkb2N1bWVudGF0aW9u
IGFuZC9vciBvdGhlciBtYXRlcmlhbHMgcHJvdmlkZWQgd2l0aCB0aGUgZGlzdHJpYnV0aW9uLgot
ICoKLSAqIFRISVMgU09GVFdBUkUgSVMgUFJPVklERUQgQlkgQVBQTEUgSU5DLiBgYEFTIElTJycg
QU5EIEFOWQotICogRVhQUkVTUyBPUiBJTVBMSUVEIFdBUlJBTlRJRVMsIElOQ0xVRElORywgQlVU
IE5PVCBMSU1JVEVEIFRPLCBUSEUKLSAqIElNUExJRUQgV0FSUkFOVElFUyBPRiBNRVJDSEFOVEFC
SUxJVFkgQU5EIEZJVE5FU1MgRk9SIEEgUEFSVElDVUxBUgotICogUFVSUE9TRSBBUkUgRElTQ0xB
SU1FRC4gIElOIE5PIEVWRU5UIFNIQUxMIEFQUExFIElOQy4gT1IKLSAqIENPTlRSSUJVVE9SUyBC
RSBMSUFCTEUgRk9SIEFOWSBESVJFQ1QsIElORElSRUNULCBJTkNJREVOVEFMLCBTUEVDSUFMLAot
ICogRVhFTVBMQVJZLCBPUiBDT05TRVFVRU5USUFMIERBTUFHRVMgKElOQ0xVRElORywgQlVUIE5P
VCBMSU1JVEVEIFRPLAotICogUFJPQ1VSRU1FTlQgT0YgU1VCU1RJVFVURSBHT09EUyBPUiBTRVJW
SUNFUzsgTE9TUyBPRiBVU0UsIERBVEEsIE9SCi0gKiBQUk9GSVRTOyBPUiBCVVNJTkVTUyBJTlRF
UlJVUFRJT04pIEhPV0VWRVIgQ0FVU0VEIEFORCBPTiBBTlkgVEhFT1JZCi0gKiBPRiBMSUFCSUxJ
VFksIFdIRVRIRVIgSU4gQ09OVFJBQ1QsIFNUUklDVCBMSUFCSUxJVFksIE9SIFRPUlQKLSAqIChJ
TkNMVURJTkcgTkVHTElHRU5DRSBPUiBPVEhFUldJU0UpIEFSSVNJTkcgSU4gQU5ZIFdBWSBPVVQg
T0YgVEhFIFVTRQotICogT0YgVEhJUyBTT0ZUV0FSRSwgRVZFTiBJRiBBRFZJU0VEIE9GIFRIRSBQ
T1NTSUJJTElUWSBPRiBTVUNIIERBTUFHRS4gCi0gKi8KLQotI2luY2x1ZGUgImNvbmZpZy5oIgot
I2luY2x1ZGUgIk1vZHVsZVJlY29yZC5oIgotCi0jaW5jbHVkZSAiSWRlbnRpZmllcklubGluZXMu
aCIKLQotbmFtZXNwYWNlIEpTQyB7Ci0KLQotYXV0byBNb2R1bGVSZWNvcmQ6OkV4cG9ydEVudHJ5
OjpjcmVhdGVMb2NhbChjb25zdCBJZGVudGlmaWVyJiBleHBvcnROYW1lLCBjb25zdCBJZGVudGlm
aWVyJiBsb2NhbE5hbWUsIGNvbnN0IFZhcmlhYmxlRW52aXJvbm1lbnRFbnRyeSYgdmFyaWFibGUp
IC0+IEV4cG9ydEVudHJ5Ci17Ci0gICAgcmV0dXJuIEV4cG9ydEVudHJ5IHsgVHlwZTo6TG9jYWws
IGV4cG9ydE5hbWUsIElkZW50aWZpZXIoKSwgSWRlbnRpZmllcigpLCBsb2NhbE5hbWUsIHZhcmlh
YmxlIH07Ci19Ci0KLWF1dG8gTW9kdWxlUmVjb3JkOjpFeHBvcnRFbnRyeTo6Y3JlYXRlTmFtZXNw
YWNlKGNvbnN0IElkZW50aWZpZXImIGV4cG9ydE5hbWUsIGNvbnN0IElkZW50aWZpZXImIG1vZHVs
ZU5hbWUpIC0+IEV4cG9ydEVudHJ5Ci17Ci0gICAgcmV0dXJuIEV4cG9ydEVudHJ5IHsgVHlwZTo6
TmFtZXNwYWNlLCBleHBvcnROYW1lLCBtb2R1bGVOYW1lLCBJZGVudGlmaWVyKCksIElkZW50aWZp
ZXIoKSwgVmFyaWFibGVFbnZpcm9ubWVudEVudHJ5KCkgfTsKLX0KLQotYXV0byBNb2R1bGVSZWNv
cmQ6OkV4cG9ydEVudHJ5OjpjcmVhdGVJbmRpcmVjdChjb25zdCBJZGVudGlmaWVyJiBleHBvcnRO
YW1lLCBjb25zdCBJZGVudGlmaWVyJiBpbXBvcnROYW1lLCBjb25zdCBJZGVudGlmaWVyJiBtb2R1
bGVOYW1lKSAtPiBFeHBvcnRFbnRyeQotewotICAgIHJldHVybiBFeHBvcnRFbnRyeSB7IFR5cGU6
OkluZGlyZWN0LCBleHBvcnROYW1lLCBtb2R1bGVOYW1lLCBpbXBvcnROYW1lLCBJZGVudGlmaWVy
KCksIFZhcmlhYmxlRW52aXJvbm1lbnRFbnRyeSgpIH07Ci19Ci0KLXN0YXRpYyBTdHJpbmcgcHJp
bnRhYmxlTmFtZShjb25zdCBSZWZQdHI8VW5pcXVlZFN0cmluZ0ltcGw+JiB1aWQpCi17Ci0gICAg
aWYgKHVpZC0+aXNTeW1ib2woKSkKLSAgICAgICAgcmV0dXJuIHVpZC5nZXQoKTsKLSAgICByZXR1
cm4gV1RGOjptYWtlU3RyaW5nKCInIiwgU3RyaW5nKHVpZC5nZXQoKSksICInIik7Ci19Ci0KLXN0
YXRpYyBTdHJpbmcgcHJpbnRhYmxlTmFtZShjb25zdCBJZGVudGlmaWVyJiBpZGVudCkKLXsKLSAg
ICByZXR1cm4gcHJpbnRhYmxlTmFtZShpZGVudC5pbXBsKCkpOwotfQotCi0KLXZvaWQgTW9kdWxl
UmVjb3JkOjpkdW1wKCkKLXsKLSAgICBkYXRhTG9nKCJcbkFuYWx5emluZyBNb2R1bGVSZWNvcmRc
biIpOwotCi0gICAgZGF0YUxvZygiICAgIERlcGVuZGVuY2llczogIiwgbV9yZXF1ZXN0ZWRNb2R1
bGVzLnNpemUoKSwgIiBtb2R1bGVzXG4iKTsKLSAgICBmb3IgKGNvbnN0IGF1dG8mIG1vZHVsZU5h
bWUgOiBtX3JlcXVlc3RlZE1vZHVsZXMpCi0gICAgICAgIGRhdGFMb2coIiAgICAgIG1vZHVsZSgi
LCBwcmludGFibGVOYW1lKG1vZHVsZU5hbWUpLCAiKVxuIik7Ci0KLSAgICBkYXRhTG9nKCIgICAg
SW1wb3J0OiAiLCBtX2ltcG9ydEVudHJpZXMuc2l6ZSgpLCAiIGVudHJpZXNcbiIpOwotICAgIGZv
ciAoY29uc3QgYXV0byYgcGFpciA6IG1faW1wb3J0RW50cmllcykKLSAgICAgICAgZGF0YUxvZygi
ICAgICAgaW1wb3J0KCIsIHByaW50YWJsZU5hbWUocGFpci52YWx1ZS5pbXBvcnROYW1lKSwgIiks
IGxvY2FsKCIsIHByaW50YWJsZU5hbWUocGFpci52YWx1ZS5sb2NhbE5hbWUpLCAiKSwgbW9kdWxl
KCIsIHByaW50YWJsZU5hbWUocGFpci52YWx1ZS5tb2R1bGVSZXF1ZXN0KSwgIilcbiIpOwotCi0g
ICAgZGF0YUxvZygiICAgIEV4cG9ydDogIiwgbV9leHBvcnRFbnRyaWVzLnNpemUoKSwgIiBlbnRy
aWVzXG4iKTsKLSAgICBmb3IgKGNvbnN0IGF1dG8mIHBhaXIgOiBtX2V4cG9ydEVudHJpZXMpIHsK
LSAgICAgICAgY29uc3QgRXhwb3J0RW50cnkmIGVudHJ5ID0gcGFpci52YWx1ZTsKLSAgICAgICAg
c3dpdGNoIChlbnRyeS50eXBlKSB7Ci0gICAgICAgIGNhc2UgRXhwb3J0RW50cnk6OlR5cGU6Okxv
Y2FsOgotICAgICAgICAgICAgZGF0YUxvZygiICAgICAgW0xvY2FsXSAiLCAiZXhwb3J0KCIsIHBy
aW50YWJsZU5hbWUoZW50cnkuZXhwb3J0TmFtZSksICIpLCBsb2NhbCgiLCBwcmludGFibGVOYW1l
KGVudHJ5LmxvY2FsTmFtZSksICIpXG4iKTsKLSAgICAgICAgICAgIGJyZWFrOwotCi0gICAgICAg
IGNhc2UgRXhwb3J0RW50cnk6OlR5cGU6Ok5hbWVzcGFjZToKLSAgICAgICAgICAgIGRhdGFMb2co
IiAgICAgIFtOYW1lc3BhY2VdICIsICJleHBvcnQoIiwgcHJpbnRhYmxlTmFtZShlbnRyeS5leHBv
cnROYW1lKSwgIiksIG1vZHVsZSgiLCBwcmludGFibGVOYW1lKGVudHJ5Lm1vZHVsZU5hbWUpLCAi
KVxuIik7Ci0gICAgICAgICAgICBicmVhazsKLQotICAgICAgICBjYXNlIEV4cG9ydEVudHJ5OjpU
eXBlOjpJbmRpcmVjdDoKLSAgICAgICAgICAgIGRhdGFMb2coIiAgICAgIFtJbmRpcmVjdF0gIiwg
ImV4cG9ydCgiLCBwcmludGFibGVOYW1lKGVudHJ5LmV4cG9ydE5hbWUpLCAiKSwgaW1wb3J0KCIs
IHByaW50YWJsZU5hbWUoZW50cnkuaW1wb3J0TmFtZSksICIpLCBtb2R1bGUoIiwgcHJpbnRhYmxl
TmFtZShlbnRyeS5tb2R1bGVOYW1lKSwgIilcbiIpOwotICAgICAgICAgICAgYnJlYWs7Ci0gICAg
ICAgIH0KLSAgICB9Ci0gICAgZm9yIChjb25zdCBhdXRvJiBtb2R1bGVOYW1lIDogbV9zdGFyRXhw
b3J0RW50cmllcykKLSAgICAgICAgZGF0YUxvZygiICAgICAgW1N0YXJdIG1vZHVsZSgiLCBwcmlu
dGFibGVOYW1lKG1vZHVsZU5hbWUuZ2V0KCkpLCAiKVxuIik7Ci19Ci0KLX0gLy8gbmFtZXNwYWNl
IEpTQwpkaWZmIC0tZ2l0IGEvU291cmNlL0phdmFTY3JpcHRDb3JlL3BhcnNlci9Nb2R1bGVSZWNv
cmQuaCBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9wYXJzZXIvTW9kdWxlUmVjb3JkLmgKZGVsZXRl
ZCBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IGVmMDgxYzAzYjBhNWJkZTZmMTU1NjI5ZGYzZjUwNmNh
ZjNjYjE3MTQuLjAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAKLS0tIGEv
U291cmNlL0phdmFTY3JpcHRDb3JlL3BhcnNlci9Nb2R1bGVSZWNvcmQuaAorKysgL2Rldi9udWxs
CkBAIC0xLDEyOCArMCwwIEBACi0vKgotICogQ29weXJpZ2h0IChDKSAyMDE1IEFwcGxlIEluYy4g
QWxsIHJpZ2h0cyByZXNlcnZlZC4KLSAqCi0gKiBSZWRpc3RyaWJ1dGlvbiBhbmQgdXNlIGluIHNv
dXJjZSBhbmQgYmluYXJ5IGZvcm1zLCB3aXRoIG9yIHdpdGhvdXQKLSAqIG1vZGlmaWNhdGlvbiwg
YXJlIHBlcm1pdHRlZCBwcm92aWRlZCB0aGF0IHRoZSBmb2xsb3dpbmcgY29uZGl0aW9ucwotICog
YXJlIG1ldDoKLSAqIDEuIFJlZGlzdHJpYnV0aW9ucyBvZiBzb3VyY2UgY29kZSBtdXN0IHJldGFp
biB0aGUgYWJvdmUgY29weXJpZ2h0Ci0gKiAgICBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRp
b25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIuCi0gKiAyLiBSZWRpc3RyaWJ1dGlvbnMg
aW4gYmluYXJ5IGZvcm0gbXVzdCByZXByb2R1Y2UgdGhlIGFib3ZlIGNvcHlyaWdodAotICogICAg
bm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFp
bWVyIGluIHRoZQotICogICAgZG9jdW1lbnRhdGlvbiBhbmQvb3Igb3RoZXIgbWF0ZXJpYWxzIHBy
b3ZpZGVkIHdpdGggdGhlIGRpc3RyaWJ1dGlvbi4KLSAqCi0gKiBUSElTIFNPRlRXQVJFIElTIFBS
T1ZJREVEIEJZIEFQUExFIElOQy4gYGBBUyBJUycnIEFORCBBTlkKLSAqIEVYUFJFU1MgT1IgSU1Q
TElFRCBXQVJSQU5USUVTLCBJTkNMVURJTkcsIEJVVCBOT1QgTElNSVRFRCBUTywgVEhFCi0gKiBJ
TVBMSUVEIFdBUlJBTlRJRVMgT0YgTUVSQ0hBTlRBQklMSVRZIEFORCBGSVRORVNTIEZPUiBBIFBB
UlRJQ1VMQVIKLSAqIFBVUlBPU0UgQVJFIERJU0NMQUlNRUQuICBJTiBOTyBFVkVOVCBTSEFMTCBB
UFBMRSBJTkMuIE9SCi0gKiBDT05UUklCVVRPUlMgQkUgTElBQkxFIEZPUiBBTlkgRElSRUNULCBJ
TkRJUkVDVCwgSU5DSURFTlRBTCwgU1BFQ0lBTCwKLSAqIEVYRU1QTEFSWSwgT1IgQ09OU0VRVUVO
VElBTCBEQU1BR0VTIChJTkNMVURJTkcsIEJVVCBOT1QgTElNSVRFRCBUTywKLSAqIFBST0NVUkVN
RU5UIE9GIFNVQlNUSVRVVEUgR09PRFMgT1IgU0VSVklDRVM7IExPU1MgT0YgVVNFLCBEQVRBLCBP
UgotICogUFJPRklUUzsgT1IgQlVTSU5FU1MgSU5URVJSVVBUSU9OKSBIT1dFVkVSIENBVVNFRCBB
TkQgT04gQU5ZIFRIRU9SWQotICogT0YgTElBQklMSVRZLCBXSEVUSEVSIElOIENPTlRSQUNULCBT
VFJJQ1QgTElBQklMSVRZLCBPUiBUT1JUCi0gKiAoSU5DTFVESU5HIE5FR0xJR0VOQ0UgT1IgT1RI
RVJXSVNFKSBBUklTSU5HIElOIEFOWSBXQVkgT1VUIE9GIFRIRSBVU0UKLSAqIE9GIFRISVMgU09G
VFdBUkUsIEVWRU4gSUYgQURWSVNFRCBPRiBUSEUgUE9TU0lCSUxJVFkgT0YgU1VDSCBEQU1BR0Uu
Ci0gKi8KLQotI2lmbmRlZiBNb2R1bGVSZWNvcmRfaAotI2RlZmluZSBNb2R1bGVSZWNvcmRfaAot
Ci0jaW5jbHVkZSAiTm9kZXMuaCIKLSNpbmNsdWRlIDx3dGYvSGFzaE1hcC5oPgotI2luY2x1ZGUg
PHd0Zi9MaXN0SGFzaFNldC5oPgotCi1uYW1lc3BhY2UgSlNDIHsKLQotLy8gQmFzZWQgb24gdGhl
IFNvdXJjZSBUZXh0IE1vZHVsZSBSZWNvcmQKLS8vIGh0dHA6Ly93d3cuZWNtYS1pbnRlcm5hdGlv
bmFsLm9yZy9lY21hLTI2Mi82LjAvI3NlYy1zb3VyY2UtdGV4dC1tb2R1bGUtcmVjb3JkcwotY2xh
c3MgTW9kdWxlUmVjb3JkIDogcHVibGljIFJlZkNvdW50ZWQ8TW9kdWxlUmVjb3JkPiB7Ci1wdWJs
aWM6Ci0gICAgc3RydWN0IEV4cG9ydEVudHJ5IHsKLSAgICAgICAgZW51bSBjbGFzcyBUeXBlIHsK
LSAgICAgICAgICAgIExvY2FsLAotICAgICAgICAgICAgTmFtZXNwYWNlLAotICAgICAgICAgICAg
SW5kaXJlY3QKLSAgICAgICAgfTsKLQotICAgICAgICBzdGF0aWMgRXhwb3J0RW50cnkgY3JlYXRl
TG9jYWwoY29uc3QgSWRlbnRpZmllciYgZXhwb3J0TmFtZSwgY29uc3QgSWRlbnRpZmllciYgbG9j
YWxOYW1lLCBjb25zdCBWYXJpYWJsZUVudmlyb25tZW50RW50cnkmKTsKLSAgICAgICAgc3RhdGlj
IEV4cG9ydEVudHJ5IGNyZWF0ZU5hbWVzcGFjZShjb25zdCBJZGVudGlmaWVyJiBleHBvcnROYW1l
LCBjb25zdCBJZGVudGlmaWVyJiBtb2R1bGVOYW1lKTsKLSAgICAgICAgc3RhdGljIEV4cG9ydEVu
dHJ5IGNyZWF0ZUluZGlyZWN0KGNvbnN0IElkZW50aWZpZXImIGV4cG9ydE5hbWUsIGNvbnN0IElk
ZW50aWZpZXImIGltcG9ydE5hbWUsIGNvbnN0IElkZW50aWZpZXImIG1vZHVsZU5hbWUpOwotCi0g
ICAgICAgIFR5cGUgdHlwZTsKLSAgICAgICAgSWRlbnRpZmllciBleHBvcnROYW1lOwotICAgICAg
ICBJZGVudGlmaWVyIG1vZHVsZU5hbWU7Ci0gICAgICAgIElkZW50aWZpZXIgaW1wb3J0TmFtZTsK
LSAgICAgICAgSWRlbnRpZmllciBsb2NhbE5hbWU7Ci0gICAgICAgIFZhcmlhYmxlRW52aXJvbm1l
bnRFbnRyeSB2YXJpYWJsZTsKLSAgICB9OwotCi0gICAgc3RydWN0IEltcG9ydEVudHJ5IHsKLSAg
ICAgICAgSWRlbnRpZmllciBtb2R1bGVSZXF1ZXN0OwotICAgICAgICBJZGVudGlmaWVyIGltcG9y
dE5hbWU7Ci0gICAgICAgIElkZW50aWZpZXIgbG9jYWxOYW1lOwotCi0gICAgICAgIGJvb2wgaXNO
YW1lc3BhY2UoVk0mIHZtKSBjb25zdAotICAgICAgICB7Ci0gICAgICAgICAgICByZXR1cm4gaW1w
b3J0TmFtZSA9PSB2bS5wcm9wZXJ0eU5hbWVzLT50aW1lc0lkZW50aWZpZXI7Ci0gICAgICAgIH0K
LSAgICB9OwotCi0gICAgdHlwZWRlZiBXVEY6Okxpc3RIYXNoU2V0PFJlZlB0cjxVbmlxdWVkU3Ry
aW5nSW1wbD4sIElkZW50aWZpZXJSZXBIYXNoPiBPcmRlcmVkSWRlbnRpZmllclNldDsKLSAgICB0
eXBlZGVmIEhhc2hNYXA8UmVmUHRyPFVuaXF1ZWRTdHJpbmdJbXBsPiwgSW1wb3J0RW50cnksIElk
ZW50aWZpZXJSZXBIYXNoLCBIYXNoVHJhaXRzPFJlZlB0cjxVbmlxdWVkU3RyaW5nSW1wbD4+PiBJ
bXBvcnRNYXA7Ci0gICAgdHlwZWRlZiBIYXNoTWFwPFJlZlB0cjxVbmlxdWVkU3RyaW5nSW1wbD4s
IEV4cG9ydEVudHJ5LCBJZGVudGlmaWVyUmVwSGFzaCwgSGFzaFRyYWl0czxSZWZQdHI8VW5pcXVl
ZFN0cmluZ0ltcGw+Pj4gRXhwb3J0TWFwOwotCi0gICAgc3RhdGljIFJlZjxNb2R1bGVSZWNvcmQ+
IGNyZWF0ZSgpCi0gICAgewotICAgICAgICByZXR1cm4gYWRvcHRSZWYoKm5ldyBNb2R1bGVSZWNv
cmQpOwotICAgIH0KLQotICAgIHZvaWQgYXBwZW5kUmVxdWVzdGVkTW9kdWxlKGNvbnN0IElkZW50
aWZpZXImKTsKLSAgICB2b2lkIGFkZFN0YXJFeHBvcnRFbnRyeShjb25zdCBJZGVudGlmaWVyJik7
Ci0gICAgdm9pZCBhZGRJbXBvcnRFbnRyeShjb25zdCBJbXBvcnRFbnRyeSYpOwotICAgIHZvaWQg
YWRkRXhwb3J0RW50cnkoY29uc3QgRXhwb3J0RW50cnkmKTsKLQotICAgIGNvbnN0IEltcG9ydEVu
dHJ5JiBsb29rVXBJbXBvcnRFbnRyeShjb25zdCBSZWZQdHI8VW5pcXVlZFN0cmluZ0ltcGw+JiBs
b2NhbE5hbWUpOwotCi0gICAgdm9pZCBkdW1wKCk7Ci0KLXByaXZhdGU6Ci0gICAgLy8gTWFwIGxv
Y2FsTmFtZSAtPiBJbXBvcnRFbnRyeS4KLSAgICBJbXBvcnRNYXAgbV9pbXBvcnRFbnRyaWVzOwot
Ci0gICAgLy8gTWFwIGV4cG9ydE5hbWUgLT4gRXhwb3J0RW50cnkuCi0gICAgRXhwb3J0TWFwIG1f
ZXhwb3J0RW50cmllczsKLQotICAgIElkZW50aWZpZXJTZXQgbV9zdGFyRXhwb3J0RW50cmllczsK
LQotICAgIC8vIFNhdmUgdGhlIG9jY3VycmVuY2Ugb3JkZXIgc2luY2UgdGhlIG1vZHVsZSBsb2Fk
ZXIgbG9hZHMgYW5kIHJ1bnMgdGhlIG1vZHVsZXMgaW4gdGhpcyBvcmRlci4KLSAgICAvLyBodHRw
Oi8vd3d3LmVjbWEtaW50ZXJuYXRpb25hbC5vcmcvZWNtYS0yNjIvNi4wLyNzZWMtbW9kdWxlZXZh
bHVhdGlvbgotICAgIE9yZGVyZWRJZGVudGlmaWVyU2V0IG1fcmVxdWVzdGVkTW9kdWxlczsKLX07
Ci0KLWlubGluZSB2b2lkIE1vZHVsZVJlY29yZDo6YXBwZW5kUmVxdWVzdGVkTW9kdWxlKGNvbnN0
IElkZW50aWZpZXImIG1vZHVsZU5hbWUpCi17Ci0gICAgbV9yZXF1ZXN0ZWRNb2R1bGVzLmFkZCht
b2R1bGVOYW1lLmltcGwoKSk7Ci19Ci0KLWlubGluZSB2b2lkIE1vZHVsZVJlY29yZDo6YWRkSW1w
b3J0RW50cnkoY29uc3QgSW1wb3J0RW50cnkmIGVudHJ5KQotewotICAgIG1faW1wb3J0RW50cmll
cy5hZGQoZW50cnkubG9jYWxOYW1lLmltcGwoKSwgZW50cnkpOwotfQotCi1pbmxpbmUgdm9pZCBN
b2R1bGVSZWNvcmQ6OmFkZEV4cG9ydEVudHJ5KGNvbnN0IEV4cG9ydEVudHJ5JiBlbnRyeSkKLXsK
LSAgICBtX2V4cG9ydEVudHJpZXMuYWRkKGVudHJ5LmV4cG9ydE5hbWUuaW1wbCgpLCBlbnRyeSk7
Ci19Ci0KLWlubGluZSB2b2lkIE1vZHVsZVJlY29yZDo6YWRkU3RhckV4cG9ydEVudHJ5KGNvbnN0
IElkZW50aWZpZXImIG1vZHVsZU5hbWUpCi17Ci0gICAgbV9zdGFyRXhwb3J0RW50cmllcy5hZGQo
bW9kdWxlTmFtZS5pbXBsKCkpOwotfQotCi1pbmxpbmUgYXV0byBNb2R1bGVSZWNvcmQ6Omxvb2tV
cEltcG9ydEVudHJ5KGNvbnN0IFJlZlB0cjxVbmlxdWVkU3RyaW5nSW1wbD4mIGxvY2FsTmFtZSkg
LT4gY29uc3QgSW1wb3J0RW50cnkmCi17Ci0gICAgcmV0dXJuICgqbV9pbXBvcnRFbnRyaWVzLmZp
bmQobG9jYWxOYW1lKSkudmFsdWU7Ci19Ci0KLX0gLy8gbmFtZXNwYWNlIEpTQwotCi0jZW5kaWYg
Ly8gTW9kdWxlUmVjb3JkX2gKZGlmZiAtLWdpdCBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9wYXJz
ZXIvTm9kZXMuaCBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9wYXJzZXIvTm9kZXMuaAppbmRleCBl
ZDVmYzI3MjUzNGEyNDY0MmZkNjJhZWIxYTFkZjkzZTY4Y2FjYzIzLi41ZDBiNzRlNThkZGVkNmVl
ZTkyM2EzYmMwNDI4Yjc2Y2VlOGMxYWYyIDEwMDY0NAotLS0gYS9Tb3VyY2UvSmF2YVNjcmlwdENv
cmUvcGFyc2VyL05vZGVzLmgKKysrIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL3BhcnNlci9Ob2Rl
cy5oCkBAIC03OSw4ICs3OSw2IEBAIG5hbWVzcGFjZSBKU0MgewogICAgIH07CiAgICAgaW5saW5l
IEZhbGxUaHJvdWdoTW9kZSBpbnZlcnQoRmFsbFRocm91Z2hNb2RlIGZhbGxUaHJvdWdoTW9kZSkg
eyByZXR1cm4gc3RhdGljX2Nhc3Q8RmFsbFRocm91Z2hNb2RlPighZmFsbFRocm91Z2hNb2RlKTsg
fQogCi0gICAgdHlwZWRlZiBIYXNoU2V0PFJlZlB0cjxVbmlxdWVkU3RyaW5nSW1wbD4sIElkZW50
aWZpZXJSZXBIYXNoPiBJZGVudGlmaWVyU2V0OwotCiAgICAgbmFtZXNwYWNlIERlY2xhcmF0aW9u
U3RhY2tzIHsKICAgICAgICAgdHlwZWRlZiBWZWN0b3I8RnVuY3Rpb25NZXRhZGF0YU5vZGUqPiBG
dW5jdGlvblN0YWNrOwogICAgIH0KZGlmZiAtLWdpdCBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9w
YXJzZXIvTm9kZXNBbmFseXplTW9kdWxlLmNwcCBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9wYXJz
ZXIvTm9kZXNBbmFseXplTW9kdWxlLmNwcAppbmRleCA2MzNkZWFlY2U2YWY2NjY1OWQwZTc2YWMx
YWE0MTYxNTlhYjc1YTM1Li5lZDQ2MWRhMjY4MzRmYjMzYzk0NDAyMTRhOTk1ZTQ1YzhhODE5NDU1
IDEwMDY0NAotLS0gYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvcGFyc2VyL05vZGVzQW5hbHl6ZU1v
ZHVsZS5jcHAKKysrIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL3BhcnNlci9Ob2Rlc0FuYWx5emVN
b2R1bGUuY3BwCkBAIC0yNyw4ICsyNyw5IEBACiAjaW5jbHVkZSAiTm9kZXMuaCIKICNpbmNsdWRl
ICJOb2RlQ29uc3RydWN0b3JzLmgiCiAKKyNpbmNsdWRlICJKU0NKU1ZhbHVlSW5saW5lcy5oIgor
I2luY2x1ZGUgIkpTTW9kdWxlUmVjb3JkLmgiCiAjaW5jbHVkZSAiTW9kdWxlQW5hbHl6ZXIuaCIK
LSNpbmNsdWRlICJNb2R1bGVSZWNvcmQuaCIKIAogbmFtZXNwYWNlIEpTQyB7CiAKQEAgLTQ4LDkg
KzQ5LDkgQEAgdm9pZCBTb3VyY2VFbGVtZW50czo6YW5hbHl6ZU1vZHVsZShNb2R1bGVBbmFseXpl
ciYgYW5hbHl6ZXIpCiAKIHZvaWQgSW1wb3J0RGVjbGFyYXRpb25Ob2RlOjphbmFseXplTW9kdWxl
KE1vZHVsZUFuYWx5emVyJiBhbmFseXplcikKIHsKLSAgICBhbmFseXplci5tb2R1bGVSZWNvcmQo
KS5hcHBlbmRSZXF1ZXN0ZWRNb2R1bGUobV9tb2R1bGVOYW1lLT5tb2R1bGVOYW1lKCkpOworICAg
IGFuYWx5emVyLm1vZHVsZVJlY29yZCgpLT5hcHBlbmRSZXF1ZXN0ZWRNb2R1bGUobV9tb2R1bGVO
YW1lLT5tb2R1bGVOYW1lKCkpOwogICAgIGZvciAoYXV0byogc3BlY2lmaWVyIDogbV9zcGVjaWZp
ZXJMaXN0LT5zcGVjaWZpZXJzKCkpIHsKLSAgICAgICAgYW5hbHl6ZXIubW9kdWxlUmVjb3JkKCku
YWRkSW1wb3J0RW50cnkoTW9kdWxlUmVjb3JkOjpJbXBvcnRFbnRyeSB7CisgICAgICAgIGFuYWx5
emVyLm1vZHVsZVJlY29yZCgpLT5hZGRJbXBvcnRFbnRyeShKU01vZHVsZVJlY29yZDo6SW1wb3J0
RW50cnkgewogICAgICAgICAgICAgbV9tb2R1bGVOYW1lLT5tb2R1bGVOYW1lKCksCiAgICAgICAg
ICAgICBzcGVjaWZpZXItPmltcG9ydGVkTmFtZSgpLAogICAgICAgICAgICAgc3BlY2lmaWVyLT5s
b2NhbE5hbWUoKQpAQCAtNjAsOCArNjEsOCBAQCB2b2lkIEltcG9ydERlY2xhcmF0aW9uTm9kZTo6
YW5hbHl6ZU1vZHVsZShNb2R1bGVBbmFseXplciYgYW5hbHl6ZXIpCiAKIHZvaWQgRXhwb3J0QWxs
RGVjbGFyYXRpb25Ob2RlOjphbmFseXplTW9kdWxlKE1vZHVsZUFuYWx5emVyJiBhbmFseXplcikK
IHsKLSAgICBhbmFseXplci5tb2R1bGVSZWNvcmQoKS5hcHBlbmRSZXF1ZXN0ZWRNb2R1bGUobV9t
b2R1bGVOYW1lLT5tb2R1bGVOYW1lKCkpOwotICAgIGFuYWx5emVyLm1vZHVsZVJlY29yZCgpLmFk
ZFN0YXJFeHBvcnRFbnRyeShtX21vZHVsZU5hbWUtPm1vZHVsZU5hbWUoKSk7CisgICAgYW5hbHl6
ZXIubW9kdWxlUmVjb3JkKCktPmFwcGVuZFJlcXVlc3RlZE1vZHVsZShtX21vZHVsZU5hbWUtPm1v
ZHVsZU5hbWUoKSk7CisgICAgYW5hbHl6ZXIubW9kdWxlUmVjb3JkKCktPmFkZFN0YXJFeHBvcnRF
bnRyeShtX21vZHVsZU5hbWUtPm1vZHVsZU5hbWUoKSk7CiB9CiAKIHZvaWQgRXhwb3J0RGVmYXVs
dERlY2xhcmF0aW9uTm9kZTo6YW5hbHl6ZU1vZHVsZShNb2R1bGVBbmFseXplciYgYW5hbHl6ZXIp
CkBAIC03Niw3ICs3Nyw3IEBAIHZvaWQgRXhwb3J0TG9jYWxEZWNsYXJhdGlvbk5vZGU6OmFuYWx5
emVNb2R1bGUoTW9kdWxlQW5hbHl6ZXImKQogdm9pZCBFeHBvcnROYW1lZERlY2xhcmF0aW9uTm9k
ZTo6YW5hbHl6ZU1vZHVsZShNb2R1bGVBbmFseXplciYgYW5hbHl6ZXIpCiB7CiAgICAgaWYgKG1f
bW9kdWxlTmFtZSkKLSAgICAgICAgYW5hbHl6ZXIubW9kdWxlUmVjb3JkKCkuYXBwZW5kUmVxdWVz
dGVkTW9kdWxlKG1fbW9kdWxlTmFtZS0+bW9kdWxlTmFtZSgpKTsKKyAgICAgICAgYW5hbHl6ZXIu
bW9kdWxlUmVjb3JkKCktPmFwcGVuZFJlcXVlc3RlZE1vZHVsZShtX21vZHVsZU5hbWUtPm1vZHVs
ZU5hbWUoKSk7CiAKICAgICBmb3IgKGF1dG8qIHNwZWNpZmllciA6IG1fc3BlY2lmaWVyTGlzdC0+
c3BlY2lmaWVycygpKSB7CiAgICAgICAgIGlmIChtX21vZHVsZU5hbWUpIHsKQEAgLTg0LDcgKzg1
LDcgQEAgdm9pZCBFeHBvcnROYW1lZERlY2xhcmF0aW9uTm9kZTo6YW5hbHl6ZU1vZHVsZShNb2R1
bGVBbmFseXplciYgYW5hbHl6ZXIpCiAgICAgICAgICAgICAvLwogICAgICAgICAgICAgLy8gSW4g
dGhpcyBjYXNlLCBubyBsb2NhbCB2YXJpYWJsZSBuYW1lcyBhcmUgaW1wb3J0ZWQgaW50byB0aGUg
Y3VycmVudCBtb2R1bGUuCiAgICAgICAgICAgICAvLyAidiIgaW5kaXJlY3RseSBwb2ludHMgdGhl
IGJpbmRpbmcgaW4gIm1vZCIuCi0gICAgICAgICAgICBhbmFseXplci5tb2R1bGVSZWNvcmQoKS5h
ZGRFeHBvcnRFbnRyeShNb2R1bGVSZWNvcmQ6OkV4cG9ydEVudHJ5OjpjcmVhdGVJbmRpcmVjdChz
cGVjaWZpZXItPmV4cG9ydGVkTmFtZSgpLCBzcGVjaWZpZXItPmxvY2FsTmFtZSgpLCBtX21vZHVs
ZU5hbWUtPm1vZHVsZU5hbWUoKSkpOworICAgICAgICAgICAgYW5hbHl6ZXIubW9kdWxlUmVjb3Jk
KCktPmFkZEV4cG9ydEVudHJ5KEpTTW9kdWxlUmVjb3JkOjpFeHBvcnRFbnRyeTo6Y3JlYXRlSW5k
aXJlY3Qoc3BlY2lmaWVyLT5leHBvcnRlZE5hbWUoKSwgc3BlY2lmaWVyLT5sb2NhbE5hbWUoKSwg
bV9tb2R1bGVOYW1lLT5tb2R1bGVOYW1lKCkpKTsKICAgICAgICAgICAgIGNvbnRpbnVlOwogICAg
ICAgICB9CiAKZGlmZiAtLWdpdCBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL0NvbW1v
bklkZW50aWZpZXJzLmNwcCBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL0NvbW1vbklk
ZW50aWZpZXJzLmNwcAppbmRleCBmYzZlNjJjYTA0NWUzNjI5Y2YyYWQzYjZiZmNiNzNkNWRkZmYw
Y2UxLi5hYTM5MmNlYjhkMWEwNjVhOTI1MmFhNzc0NGRhYjhkOWIxNjA1NGU5IDEwMDY0NAotLS0g
YS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9Db21tb25JZGVudGlmaWVycy5jcHAKKysr
IGIvU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvQ29tbW9uSWRlbnRpZmllcnMuY3BwCkBA
IC02OCwxNCArNjgsMTQgQEAgYm9vbCBDb21tb25JZGVudGlmaWVyczo6aXNQcml2YXRlTmFtZShj
b25zdCBJZGVudGlmaWVyJiBpZGVudCkgY29uc3QKICAgICByZXR1cm4gbV9idWlsdGluTmFtZXMt
PmlzUHJpdmF0ZU5hbWUoaWRlbnQpOwogfQogCi1jb25zdCBJZGVudGlmaWVyKiBDb21tb25JZGVu
dGlmaWVyczo6Z2V0UHJpdmF0ZU5hbWUoY29uc3QgSWRlbnRpZmllciYgaWRlbnQpIGNvbnN0Citj
b25zdCBJZGVudGlmaWVyKiBDb21tb25JZGVudGlmaWVyczo6bG9va1VwUHJpdmF0ZU5hbWUoY29u
c3QgSWRlbnRpZmllciYgaWRlbnQpIGNvbnN0CiB7Ci0gICAgcmV0dXJuIG1fYnVpbHRpbk5hbWVz
LT5nZXRQcml2YXRlTmFtZShpZGVudCk7CisgICAgcmV0dXJuIG1fYnVpbHRpbk5hbWVzLT5sb29r
VXBQcml2YXRlTmFtZShpZGVudCk7CiB9CiAgICAgCi1JZGVudGlmaWVyIENvbW1vbklkZW50aWZp
ZXJzOjpnZXRQdWJsaWNOYW1lKGNvbnN0IElkZW50aWZpZXImIGlkZW50KSBjb25zdAorSWRlbnRp
ZmllciBDb21tb25JZGVudGlmaWVyczo6bG9va1VwUHVibGljTmFtZShjb25zdCBJZGVudGlmaWVy
JiBpZGVudCkgY29uc3QKIHsKLSAgICByZXR1cm4gbV9idWlsdGluTmFtZXMtPmdldFB1YmxpY05h
bWUoaWRlbnQpOworICAgIHJldHVybiBtX2J1aWx0aW5OYW1lcy0+bG9va1VwUHVibGljTmFtZShp
ZGVudCk7CiB9CiAKIApkaWZmIC0tZ2l0IGEvU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUv
Q29tbW9uSWRlbnRpZmllcnMuaCBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL0NvbW1v
bklkZW50aWZpZXJzLmgKaW5kZXggMzQ0N2IzOThmZDA2MTgwNTkwOWU2ZjAyMmUzZDY2NTIzYmFj
NDY5OC4uZDU5ZDQ0NDhkMjkzYTE0NzVjMDFiN2M3ZTY2YWVmNzk2MmViMTI2ZCAxMDA2NDQKLS0t
IGEvU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvQ29tbW9uSWRlbnRpZmllcnMuaAorKysg
Yi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9Db21tb25JZGVudGlmaWVycy5oCkBAIC00
Miw2ICs0Miw3IEBACiAgICAgbWFjcm8oSW5maW5pdHkpIFwKICAgICBtYWNybyhJbnRsKSBcCiAg
ICAgbWFjcm8oSlNPTikgXAorICAgIG1hY3JvKExvYWRlcikgXAogICAgIG1hY3JvKE1hcClcCiAg
ICAgbWFjcm8oTWFwSXRlcmF0b3IpXAogICAgIG1hY3JvKE1hdGgpIFwKQEAgLTI4MSw2ICsyODIs
NyBAQAogICAgIG1hY3JvKE51bWJlcikgXAogICAgIG1hY3JvKEFycmF5KSBcCiAgICAgbWFjcm8o
U3RyaW5nKSBcCisgICAgbWFjcm8oTWFwKSBcCiAgICAgbWFjcm8oUHJvbWlzZSkgXAogICAgIG1h
Y3JvKGFicykgXAogICAgIG1hY3JvKGZsb29yKSBcCkBAIC0zMDIsNiArMzA0LDggQEAKICAgICBt
YWNybyhjYXBhYmlsaXRpZXMpIFwKICAgICBtYWNybyhzdGFyRGVmYXVsdCkgXAogICAgIG1hY3Jv
KEluc3BlY3Rvckluc3RydW1lbnRhdGlvbikgXAorICAgIG1hY3JvKGdldCkgXAorICAgIG1hY3Jv
KHNldCkgXAogCiAKIG5hbWVzcGFjZSBKU0MgewpAQCAtMzQ4LDggKzM1Miw4IEBAIG5hbWVzcGFj
ZSBKU0MgewogICAgICAgICBib29sIGlzUHJpdmF0ZU5hbWUoVW5pcXVlZFN0cmluZ0ltcGwmIHVp
ZCkgY29uc3Q7CiAgICAgICAgIGJvb2wgaXNQcml2YXRlTmFtZShjb25zdCBJZGVudGlmaWVyJikg
Y29uc3Q7CiAKLSAgICAgICAgY29uc3QgSWRlbnRpZmllciogZ2V0UHJpdmF0ZU5hbWUoY29uc3Qg
SWRlbnRpZmllciYpIGNvbnN0OwotICAgICAgICBJZGVudGlmaWVyIGdldFB1YmxpY05hbWUoY29u
c3QgSWRlbnRpZmllciYpIGNvbnN0OworICAgICAgICBjb25zdCBJZGVudGlmaWVyKiBsb29rVXBQ
cml2YXRlTmFtZShjb25zdCBJZGVudGlmaWVyJikgY29uc3Q7CisgICAgICAgIElkZW50aWZpZXIg
bG9va1VwUHVibGljTmFtZShjb25zdCBJZGVudGlmaWVyJikgY29uc3Q7CiAKICAgICAgICAgY29u
c3QgQnl0ZWNvZGVJbnRyaW5zaWNSZWdpc3RyeSYgYnl0ZWNvZGVJbnRyaW5zaWNSZWdpc3RyeSgp
IGNvbnN0IHsgcmV0dXJuIG1fYnl0ZWNvZGVJbnRyaW5zaWNSZWdpc3RyeTsgfQogCmRpZmYgLS1n
aXQgYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9Db21wbGV0aW9uLmNwcCBiL1NvdXJj
ZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL0NvbXBsZXRpb24uY3BwCmluZGV4IGEzZGFlZTYwMzQz
YWMxNGIxNGFkMDMwNGViZGM5YTI1YWFiMTU3MjMuLmJkNTYxY2RmYWQ2YWFhNjc1YTk2Y2NiMDNi
YjM0YTRhZTJkOTEzOWUgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1l
L0NvbXBsZXRpb24uY3BwCisrKyBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL0NvbXBs
ZXRpb24uY3BwCkBAIC0yOCwxMSArMjgsMTIgQEAKICNpbmNsdWRlICJEZWJ1Z2dlci5oIgogI2lu
Y2x1ZGUgIkV4Y2VwdGlvbi5oIgogI2luY2x1ZGUgIkludGVycHJldGVyLmgiCisjaW5jbHVkZSAi
SlNDSW5saW5lcy5oIgogI2luY2x1ZGUgIkpTR2xvYmFsT2JqZWN0LmgiCiAjaW5jbHVkZSAiSlNM
b2NrLmgiCi0jaW5jbHVkZSAiSlNDSW5saW5lcy5oIgorI2luY2x1ZGUgIkpTTW9kdWxlUmVjb3Jk
LmgiCiAjaW5jbHVkZSAiTW9kdWxlQW5hbHl6ZXIuaCIKLSNpbmNsdWRlICJNb2R1bGVSZWNvcmQu
aCIKKyNpbmNsdWRlICJNb2R1bGVMb2FkZXJPYmplY3QuaCIKICNpbmNsdWRlICJQYXJzZXIuaCIK
ICNpbmNsdWRlIDx3dGYvV1RGVGhyZWFkRGF0YS5oPgogCkBAIC02Myw4ICs2NCw5IEBAIGJvb2wg
Y2hlY2tTeW50YXgoVk0mIHZtLCBjb25zdCBTb3VyY2VDb2RlJiBzb3VyY2UsIFBhcnNlckVycm9y
JiBlcnJvcikKICAgICAgICAgSlNQYXJzZXJTdHJpY3RNb2RlOjpOb3RTdHJpY3QsIFNvdXJjZVBh
cnNlTW9kZTo6UHJvZ3JhbU1vZGUsIGVycm9yKTsKIH0KIAotYm9vbCBjaGVja01vZHVsZVN5bnRh
eChWTSYgdm0sIGNvbnN0IFNvdXJjZUNvZGUmIHNvdXJjZSwgUGFyc2VyRXJyb3ImIGVycm9yKQor
Ym9vbCBjaGVja01vZHVsZVN5bnRheChFeGVjU3RhdGUqIGV4ZWMsIGNvbnN0IFNvdXJjZUNvZGUm
IHNvdXJjZSwgUGFyc2VyRXJyb3ImIGVycm9yKQogeworICAgIFZNJiB2bSA9IGV4ZWMtPnZtKCk7
CiAgICAgSlNMb2NrSG9sZGVyIGxvY2sodm0pOwogICAgIFJFTEVBU0VfQVNTRVJUKHZtLmF0b21p
Y1N0cmluZ1RhYmxlKCkgPT0gd3RmVGhyZWFkRGF0YSgpLmF0b21pY1N0cmluZ1RhYmxlKCkpOwog
ICAgIHN0ZDo6dW5pcXVlX3B0cjxNb2R1bGVQcm9ncmFtTm9kZT4gbW9kdWxlUHJvZ3JhbU5vZGUg
PSBwYXJzZTxNb2R1bGVQcm9ncmFtTm9kZT4oCkBAIC03Myw3ICs3NSw3IEBAIGJvb2wgY2hlY2tN
b2R1bGVTeW50YXgoVk0mIHZtLCBjb25zdCBTb3VyY2VDb2RlJiBzb3VyY2UsIFBhcnNlckVycm9y
JiBlcnJvcikKICAgICBpZiAoIW1vZHVsZVByb2dyYW1Ob2RlKQogICAgICAgICByZXR1cm4gZmFs
c2U7CiAKLSAgICBNb2R1bGVBbmFseXplciBtb2R1bGVBbmFseXplcih2bSwgbW9kdWxlUHJvZ3Jh
bU5vZGUtPnZhckRlY2xhcmF0aW9ucygpLCBtb2R1bGVQcm9ncmFtTm9kZS0+bGV4aWNhbFZhcmlh
YmxlcygpKTsKKyAgICBNb2R1bGVBbmFseXplciBtb2R1bGVBbmFseXplcihleGVjLCBtb2R1bGVQ
cm9ncmFtTm9kZS0+dmFyRGVjbGFyYXRpb25zKCksIG1vZHVsZVByb2dyYW1Ob2RlLT5sZXhpY2Fs
VmFyaWFibGVzKCkpOwogICAgIG1vZHVsZUFuYWx5emVyLmFuYWx5emUoKm1vZHVsZVByb2dyYW1O
b2RlKTsKICAgICByZXR1cm4gdHJ1ZTsKIH0KQEAgLTEwOCw0ICsxMTAsNDIgQEAgSlNWYWx1ZSBl
dmFsdWF0ZShFeGVjU3RhdGUqIGV4ZWMsIGNvbnN0IFNvdXJjZUNvZGUmIHNvdXJjZSwgSlNWYWx1
ZSB0aGlzVmFsdWUsIE4KICAgICByZXR1cm4gcmVzdWx0OwogfQogCit2b2lkIGV2YWx1YXRlTW9k
dWxlKEV4ZWNTdGF0ZSogZXhlYywgY29uc3QgU291cmNlQ29kZSYgc291cmNlLCBOYWtlZFB0cjxF
eGNlcHRpb24+JiByZXR1cm5lZEV4Y2VwdGlvbikKK3sKKyAgICBKU0xvY2tIb2xkZXIgbG9jayhl
eGVjKTsKKyAgICBSRUxFQVNFX0FTU0VSVChleGVjLT52bSgpLmF0b21pY1N0cmluZ1RhYmxlKCkg
PT0gd3RmVGhyZWFkRGF0YSgpLmF0b21pY1N0cmluZ1RhYmxlKCkpOworICAgIFJFTEVBU0VfQVNT
RVJUKCFleGVjLT52bSgpLmlzQ29sbGVjdG9yQnVzeSgpKTsKKworICAgIENvZGVQcm9maWxpbmcg
cHJvZmlsZShzb3VyY2UpOworCisgICAgSlNHbG9iYWxPYmplY3QqIGdsb2JhbE9iamVjdCA9IGV4
ZWMtPnZtRW50cnlHbG9iYWxPYmplY3QoKTsKKworICAgIC8vIEdlbmVyYXRlIHRoZSB1bmlxdWUg
a2V5IGZvciB0aGUgc291cmNlLXByb3ZpZGVkIG1vZHVsZS4KKyAgICBTeW1ib2wqIGtleSA9IFN5
bWJvbDo6Y3JlYXRlKGV4ZWMtPnZtKCkpOworCisgICAgTW9kdWxlTG9hZGVyT2JqZWN0KiBtb2R1
bGVMb2FkZXIgPSBnbG9iYWxPYmplY3QtPm1vZHVsZUxvYWRlcigpOworCisgICAgLy8gSW5zZXJ0
IHRoZSBnaXZlbiBzb3VyY2UgY29kZSB0byB0aGUgTW9kdWxlTG9hZGVyIHJlZ2lzdHJ5IGFzIHRo
ZSBmZXRjaGVkIHJlZ2lzdHJ5IGVudHJ5LgorICAgIG1vZHVsZUxvYWRlci0+cHJvdmlkZShleGVj
LCBrZXksIE1vZHVsZUxvYWRlck9iamVjdDo6U3RhdHVzOjpGZXRjaCwgc291cmNlLnRvU3RyaW5n
KCkpOworICAgIGlmIChleGVjLT5oYWRFeGNlcHRpb24oKSkgeworICAgICAgICByZXR1cm5lZEV4
Y2VwdGlvbiA9IGV4ZWMtPmV4Y2VwdGlvbigpOworICAgICAgICBleGVjLT5jbGVhckV4Y2VwdGlv
bigpOworICAgICAgICByZXR1cm47CisgICAgfQorCisgICAgLy8gRklYTUU6IE5vdywgd2UgZG9u
J3QgaW1wbGVtZW50IHRoZSBsaW5raW5nIHBoYXNlIHlldC4KKyAgICAvLyBTbyBoZXJlLCB3ZSBq
dXN0IGNhbGwgcmVxdWVzdEluc3RhbnRpYXRlQWxsIHRvIG9ubHkgcGVyZm9ybSB0aGUgbW9kdWxl
IGxvYWRpbmcuCisgICAgLy8gQXQgbGFzdCwgaXQgc2hvdWxkIGJlIHJlcGxhY2VkIHdpdGggcmVx
dWVzdFJlYWR5LgorICAgIC8vIGh0dHBzOi8vYnVncy53ZWJraXQub3JnL3Nob3dfYnVnLmNnaT9p
ZD0xNDgxNzIKKyAgICBtb2R1bGVMb2FkZXItPnJlcXVlc3RJbnN0YW50aWF0ZUFsbChleGVjLCBr
ZXkpOworCisgICAgLy8gRklYTUU6IFdlIHNob3VsZCBhbHNvIGhhbmRsZSB0aGUgYXN5bmNocm9u
b3VzIFN5bnRheCBFcnJvcnMgdGhhdCB3aWxsIGJlIGRlbGl2ZXJlZCBieSB0aGUgcmVqZWN0ZWQg
cHJvbWlzZS4KKyAgICAvLyBodHRwczovL2J1Z3Mud2Via2l0Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9
MTQ4MTczCisgICAgaWYgKGV4ZWMtPmhhZEV4Y2VwdGlvbigpKSB7CisgICAgICAgIHJldHVybmVk
RXhjZXB0aW9uID0gZXhlYy0+ZXhjZXB0aW9uKCk7CisgICAgICAgIGV4ZWMtPmNsZWFyRXhjZXB0
aW9uKCk7CisgICAgICAgIHJldHVybjsKKyAgICB9Cit9CisKIH0gLy8gbmFtZXNwYWNlIEpTQwpk
aWZmIC0tZ2l0IGEvU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvQ29tcGxldGlvbi5oIGIv
U291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvQ29tcGxldGlvbi5oCmluZGV4IDcwMmVkOWZh
YjBjNzkxZmFlMTU1MDU2MjdiYzczMWFkYmFlM2E1ZmQuLmRlMzJkNjNlNjNhYzdjZWQ0OWQ4MTdl
MjNjMGI4Nzg4NjdhMDVhNjkgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50
aW1lL0NvbXBsZXRpb24uaAorKysgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9Db21w
bGV0aW9uLmgKQEAgLTM3LDEzICszNywxNCBAQCBjbGFzcyBWTTsKIAogSlNfRVhQT1JUX1BSSVZB
VEUgYm9vbCBjaGVja1N5bnRheChWTSYsIGNvbnN0IFNvdXJjZUNvZGUmLCBQYXJzZXJFcnJvciYp
OwogSlNfRVhQT1JUX1BSSVZBVEUgYm9vbCBjaGVja1N5bnRheChFeGVjU3RhdGUqLCBjb25zdCBT
b3VyY2VDb2RlJiwgSlNWYWx1ZSogZXhjZXB0aW9uID0gMCk7Ci1KU19FWFBPUlRfUFJJVkFURSBi
b29sIGNoZWNrTW9kdWxlU3ludGF4KFZNJiwgY29uc3QgU291cmNlQ29kZSYsIFBhcnNlckVycm9y
Jik7CitKU19FWFBPUlRfUFJJVkFURSBib29sIGNoZWNrTW9kdWxlU3ludGF4KEV4ZWNTdGF0ZSos
IGNvbnN0IFNvdXJjZUNvZGUmLCBQYXJzZXJFcnJvciYpOwogSlNfRVhQT1JUX1BSSVZBVEUgSlNW
YWx1ZSBldmFsdWF0ZShFeGVjU3RhdGUqLCBjb25zdCBTb3VyY2VDb2RlJiwgSlNWYWx1ZSB0aGlz
VmFsdWUsIE5ha2VkUHRyPEV4Y2VwdGlvbj4mIHJldHVybmVkRXhjZXB0aW9uKTsKIGlubGluZSBK
U1ZhbHVlIGV2YWx1YXRlKEV4ZWNTdGF0ZSogZXhlYywgY29uc3QgU291cmNlQ29kZSYgc291cmNl
Q29kZSwgSlNWYWx1ZSB0aGlzVmFsdWUgPSBKU1ZhbHVlKCkpCiB7CiAgICAgTmFrZWRQdHI8RXhj
ZXB0aW9uPiB1bnVzZWQ7CiAgICAgcmV0dXJuIGV2YWx1YXRlKGV4ZWMsIHNvdXJjZUNvZGUsIHRo
aXNWYWx1ZSwgdW51c2VkKTsKIH0KK0pTX0VYUE9SVF9QUklWQVRFIHZvaWQgZXZhbHVhdGVNb2R1
bGUoRXhlY1N0YXRlKiwgY29uc3QgU291cmNlQ29kZSYsIE5ha2VkUHRyPEV4Y2VwdGlvbj4mIHJl
dHVybmVkRXhjZXB0aW9uKTsKIAogfSAvLyBuYW1lc3BhY2UgSlNDCiAKZGlmZiAtLWdpdCBhL1Nv
dXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL0V4Y2VwdGlvbkhlbHBlcnMuY3BwIGIvU291cmNl
L0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvRXhjZXB0aW9uSGVscGVycy5jcHAKaW5kZXggNDZjMGNl
ZjkzOTJhNGFkN2MwYjAwYTlhMDg0N2UwYjlhZWZjNWZhZS4uYjc4NTliZmUzZThlYWZkMWVjNjRh
YjVmYmZlYWYyNTcyYWQyN2MxNyAxMDA2NDQKLS0tIGEvU291cmNlL0phdmFTY3JpcHRDb3JlL3J1
bnRpbWUvRXhjZXB0aW9uSGVscGVycy5jcHAKKysrIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL3J1
bnRpbWUvRXhjZXB0aW9uSGVscGVycy5jcHAKQEAgLTczLDcgKzczLDcgQEAgSlNPYmplY3QqIGNy
ZWF0ZVN0YWNrT3ZlcmZsb3dFcnJvcihFeGVjU3RhdGUqIGV4ZWMpCiBKU09iamVjdCogY3JlYXRl
VW5kZWZpbmVkVmFyaWFibGVFcnJvcihFeGVjU3RhdGUqIGV4ZWMsIGNvbnN0IElkZW50aWZpZXIm
IGlkZW50KQogewogICAgIGlmIChleGVjLT5wcm9wZXJ0eU5hbWVzKCkuaXNQcml2YXRlTmFtZShp
ZGVudCkpIHsKLSAgICAgICAgU3RyaW5nIG1lc3NhZ2UobWFrZVN0cmluZygiQ2FuJ3QgZmluZCBw
cml2YXRlIHZhcmlhYmxlOiBAIiwgZXhlYy0+cHJvcGVydHlOYW1lcygpLmdldFB1YmxpY05hbWUo
aWRlbnQpLnN0cmluZygpKSk7CisgICAgICAgIFN0cmluZyBtZXNzYWdlKG1ha2VTdHJpbmcoIkNh
bid0IGZpbmQgcHJpdmF0ZSB2YXJpYWJsZTogQCIsIGV4ZWMtPnByb3BlcnR5TmFtZXMoKS5sb29r
VXBQdWJsaWNOYW1lKGlkZW50KS5zdHJpbmcoKSkpOwogICAgICAgICByZXR1cm4gY3JlYXRlUmVm
ZXJlbmNlRXJyb3IoZXhlYywgbWVzc2FnZSk7CiAgICAgfQogICAgIFN0cmluZyBtZXNzYWdlKG1h
a2VTdHJpbmcoIkNhbid0IGZpbmQgdmFyaWFibGU6ICIsIGlkZW50LnN0cmluZygpKSk7CmRpZmYg
LS1naXQgYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9JZGVudGlmaWVyLmggYi9Tb3Vy
Y2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9JZGVudGlmaWVyLmgKaW5kZXggNjFkZTY1MzZhNmZh
NGMyOWFjYTRkZjE0YjdkNmZlYzRkMmE1MDNlNi4uODg5Y2E2YjIyZTQzNzkzNjJmMjU4MDVmZDA1
ZTZmODRhYTY3YmJhNiAxMDA2NDQKLS0tIGEvU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUv
SWRlbnRpZmllci5oCisrKyBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL0lkZW50aWZp
ZXIuaApAQCAtMjkyLDYgKzI5Miw3IEBAIHN0cnVjdCBJZGVudGlmaWVyTWFwSW5kZXhIYXNoVHJh
aXRzIDogSGFzaFRyYWl0czxpbnQ+IHsKICAgICBzdGF0aWMgY29uc3QgYm9vbCBlbXB0eVZhbHVl
SXNaZXJvID0gZmFsc2U7CiB9OwogCit0eXBlZGVmIEhhc2hTZXQ8UmVmUHRyPFVuaXF1ZWRTdHJp
bmdJbXBsPiwgSWRlbnRpZmllclJlcEhhc2g+IElkZW50aWZpZXJTZXQ7CiB0eXBlZGVmIEhhc2hN
YXA8UmVmUHRyPFVuaXF1ZWRTdHJpbmdJbXBsPiwgaW50LCBJZGVudGlmaWVyUmVwSGFzaCwgSGFz
aFRyYWl0czxSZWZQdHI8VW5pcXVlZFN0cmluZ0ltcGw+PiwgSWRlbnRpZmllck1hcEluZGV4SGFz
aFRyYWl0cz4gSWRlbnRpZmllck1hcDsKIHR5cGVkZWYgSGFzaE1hcDxVbmlxdWVkU3RyaW5nSW1w
bCosIGludCwgSWRlbnRpZmllclJlcEhhc2gsIEhhc2hUcmFpdHM8VW5pcXVlZFN0cmluZ0ltcGwq
PiwgSWRlbnRpZmllck1hcEluZGV4SGFzaFRyYWl0cz4gQm9ycm93ZWRJZGVudGlmaWVyTWFwOwog
CmRpZmYgLS1naXQgYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9KU0dsb2JhbE9iamVj
dC5jcHAgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9KU0dsb2JhbE9iamVjdC5jcHAK
aW5kZXggZTBjM2ZhZGZjNGYzYjUyZGQ2YmE3MWI3ODg2ZDhlYzYwOGQ0NDE3ZS4uOWYyYTYxNzU1
MGY4MTExOTBlYTQ5OTViNTY3MDhlNTBkNDQ3OTVlNCAxMDA2NDQKLS0tIGEvU291cmNlL0phdmFT
Y3JpcHRDb3JlL3J1bnRpbWUvSlNHbG9iYWxPYmplY3QuY3BwCisrKyBiL1NvdXJjZS9KYXZhU2Ny
aXB0Q29yZS9ydW50aW1lL0pTR2xvYmFsT2JqZWN0LmNwcApAQCAtODEsNiArODEsNyBAQAogI2lu
Y2x1ZGUgIkpTTG9jay5oIgogI2luY2x1ZGUgIkpTTWFwLmgiCiAjaW5jbHVkZSAiSlNNYXBJdGVy
YXRvci5oIgorI2luY2x1ZGUgIkpTTW9kdWxlUmVjb3JkLmgiCiAjaW5jbHVkZSAiSlNPTk9iamVj
dC5oIgogI2luY2x1ZGUgIkpTUHJvbWlzZS5oIgogI2luY2x1ZGUgIkpTUHJvbWlzZUNvbnN0cnVj
dG9yLmgiCkBAIC0xMDQsNiArMTA1LDcgQEAKICNpbmNsdWRlICJNYXBQcm90b3R5cGUuaCIKICNp
bmNsdWRlICJNYXRoT2JqZWN0LmgiCiAjaW5jbHVkZSAiTWljcm90YXNrLmgiCisjaW5jbHVkZSAi
TW9kdWxlTG9hZGVyT2JqZWN0LmgiCiAjaW5jbHVkZSAiTmF0aXZlRXJyb3JDb25zdHJ1Y3Rvci5o
IgogI2luY2x1ZGUgIk5hdGl2ZUVycm9yUHJvdG90eXBlLmgiCiAjaW5jbHVkZSAiTnVsbEdldHRl
ckZ1bmN0aW9uLmgiCkBAIC0xNTcsNyArMTU5LDcgQEAgbmFtZXNwYWNlIEpTQyB7CiAKIGNvbnN0
IENsYXNzSW5mbyBKU0dsb2JhbE9iamVjdDo6c19pbmZvID0geyAiR2xvYmFsT2JqZWN0IiwgJkJh
c2U6OnNfaW5mbywgJmdsb2JhbE9iamVjdFRhYmxlLCBDUkVBVEVfTUVUSE9EX1RBQkxFKEpTR2xv
YmFsT2JqZWN0KSB9OwogCi1jb25zdCBHbG9iYWxPYmplY3RNZXRob2RUYWJsZSBKU0dsb2JhbE9i
amVjdDo6c19nbG9iYWxPYmplY3RNZXRob2RUYWJsZSA9IHsgJmFsbG93c0FjY2Vzc0Zyb20sICZz
dXBwb3J0c1Byb2ZpbGluZywgJnN1cHBvcnRzUmljaFNvdXJjZUluZm8sICZzaG91bGRJbnRlcnJ1
cHRTY3JpcHQsICZqYXZhU2NyaXB0UnVudGltZUZsYWdzLCBudWxscHRyLCAmc2hvdWxkSW50ZXJy
dXB0U2NyaXB0QmVmb3JlVGltZW91dCB9OworY29uc3QgR2xvYmFsT2JqZWN0TWV0aG9kVGFibGUg
SlNHbG9iYWxPYmplY3Q6OnNfZ2xvYmFsT2JqZWN0TWV0aG9kVGFibGUgPSB7ICZhbGxvd3NBY2Nl
c3NGcm9tLCAmc3VwcG9ydHNQcm9maWxpbmcsICZzdXBwb3J0c1JpY2hTb3VyY2VJbmZvLCAmc2hv
dWxkSW50ZXJydXB0U2NyaXB0LCAmamF2YVNjcmlwdFJ1bnRpbWVGbGFncywgbnVsbHB0ciwgJnNo
b3VsZEludGVycnVwdFNjcmlwdEJlZm9yZVRpbWVvdXQsIG51bGxwdHIsIG51bGxwdHIsIG51bGxw
dHIsIG51bGxwdHIgfTsKIAogLyogU291cmNlIGZvciBKU0dsb2JhbE9iamVjdC5sdXQuaAogQGJl
Z2luIGdsb2JhbE9iamVjdFRhYmxlCkBAIC0zMTcsNiArMzE5LDcgQEAgdm9pZCBKU0dsb2JhbE9i
amVjdDo6aW5pdChWTSYgdm0pCiAgICAgbV9vdXRPZkJhbmRBcmd1bWVudHNTdHJ1Y3R1cmUuc2V0
KHZtLCB0aGlzLCBDbG9uZWRBcmd1bWVudHM6OmNyZWF0ZVN0cnVjdHVyZSh2bSwgdGhpcywgbV9v
YmplY3RQcm90b3R5cGUuZ2V0KCkpKTsKICAgICBtX2NhbGxiYWNrQ29uc3RydWN0b3JTdHJ1Y3R1
cmUuc2V0KHZtLCB0aGlzLCBKU0NhbGxiYWNrQ29uc3RydWN0b3I6OmNyZWF0ZVN0cnVjdHVyZSh2
bSwgdGhpcywgbV9vYmplY3RQcm90b3R5cGUuZ2V0KCkpKTsKICAgICBtX2NhbGxiYWNrT2JqZWN0
U3RydWN0dXJlLnNldCh2bSwgdGhpcywgSlNDYWxsYmFja09iamVjdDxKU0Rlc3RydWN0aWJsZU9i
amVjdD46OmNyZWF0ZVN0cnVjdHVyZSh2bSwgdGhpcywgbV9vYmplY3RQcm90b3R5cGUuZ2V0KCkp
KTsKKwogI2lmIEpTQ19PQkpDX0FQSV9FTkFCTEVECiAgICAgbV9vYmpjQ2FsbGJhY2tGdW5jdGlv
blN0cnVjdHVyZS5zZXQodm0sIHRoaXMsIE9iakNDYWxsYmFja0Z1bmN0aW9uOjpjcmVhdGVTdHJ1
Y3R1cmUodm0sIHRoaXMsIG1fZnVuY3Rpb25Qcm90b3R5cGUuZ2V0KCkpKTsKICAgICBtX29iamNX
cmFwcGVyT2JqZWN0U3RydWN0dXJlLnNldCh2bSwgdGhpcywgSlNDYWxsYmFja09iamVjdDxKU0FQ
SVdyYXBwZXJPYmplY3Q+OjpjcmVhdGVTdHJ1Y3R1cmUodm0sIHRoaXMsIG1fb2JqZWN0UHJvdG90
eXBlLmdldCgpKSk7CkBAIC0zMzksNiArMzQyLDggQEAgdm9pZCBKU0dsb2JhbE9iamVjdDo6aW5p
dChWTSYgdm0pCiAgICAgbV9yZWdFeHBTdHJ1Y3R1cmUuc2V0KHZtLCB0aGlzLCBSZWdFeHBPYmpl
Y3Q6OmNyZWF0ZVN0cnVjdHVyZSh2bSwgdGhpcywgbV9yZWdFeHBQcm90b3R5cGUuZ2V0KCkpKTsK
ICAgICBtX3JlZ0V4cE1hdGNoZXNBcnJheVN0cnVjdHVyZS5zZXQodm0sIHRoaXMsIGNyZWF0ZVJl
Z0V4cE1hdGNoZXNBcnJheVN0cnVjdHVyZSh2bSwgKnRoaXMpKTsKIAorICAgIG1fbW9kdWxlUmVj
b3JkU3RydWN0dXJlLnNldCh2bSwgdGhpcywgSlNNb2R1bGVSZWNvcmQ6OmNyZWF0ZVN0cnVjdHVy
ZSh2bSwgdGhpcywgbV9vYmplY3RQcm90b3R5cGUuZ2V0KCkpKTsKKyAgICAKICNpZiBFTkFCTEUo
V0VCQVNTRU1CTFkpCiAgICAgbV93YXNtTW9kdWxlU3RydWN0dXJlLnNldCh2bSwgdGhpcywgSlNX
QVNNTW9kdWxlOjpjcmVhdGVTdHJ1Y3R1cmUodm0sIHRoaXMpKTsKICNlbmRpZgpAQCAtNDM2LDcg
KzQ0MSw3IEBAIHB1dERpcmVjdFdpdGhvdXRUcmFuc2l0aW9uKHZtLCB2bS5wcm9wZXJ0eU5hbWVz
LT4ganNOYW1lLCBsb3dlck5hbWUgIyMgQ29uc3RydWN0CiAgICAgcHV0RGlyZWN0V2l0aG91dFRy
YW5zaXRpb24odm0sIHZtLnByb3BlcnR5TmFtZXMtPkpTT04sIEpTT05PYmplY3Q6OmNyZWF0ZSh2
bSwgSlNPTk9iamVjdDo6Y3JlYXRlU3RydWN0dXJlKHZtLCB0aGlzLCBtX29iamVjdFByb3RvdHlw
ZS5nZXQoKSkpLCBEb250RW51bSk7CiAgICAgcHV0RGlyZWN0V2l0aG91dFRyYW5zaXRpb24odm0s
IHZtLnByb3BlcnR5TmFtZXMtPk1hdGgsIE1hdGhPYmplY3Q6OmNyZWF0ZSh2bSwgdGhpcywgTWF0
aE9iamVjdDo6Y3JlYXRlU3RydWN0dXJlKHZtLCB0aGlzLCBtX29iamVjdFByb3RvdHlwZS5nZXQo
KSkpLCBEb250RW51bSk7CiAgICAgcHV0RGlyZWN0V2l0aG91dFRyYW5zaXRpb24odm0sIHZtLnBy
b3BlcnR5TmFtZXMtPlJlZmxlY3QsIFJlZmxlY3RPYmplY3Q6OmNyZWF0ZSh2bSwgdGhpcywgUmVm
bGVjdE9iamVjdDo6Y3JlYXRlU3RydWN0dXJlKHZtLCB0aGlzLCBtX29iamVjdFByb3RvdHlwZS5n
ZXQoKSkpLCBEb250RW51bSk7Ci0gICAgCisKICAgICBzdGQ6OmFycmF5PEludGVybmFsRnVuY3Rp
b24qLCBOVU1CRVJfT0ZfVFlQRURfQVJSQVlfVFlQRVM+IHR5cGVkQXJyYXlDb25zdHJ1Y3RvcnM7
CiAgICAgdHlwZWRBcnJheUNvbnN0cnVjdG9yc1t0b0luZGV4KFR5cGVJbnQ4KV0gPSBKU0ludDhB
cnJheUNvbnN0cnVjdG9yOjpjcmVhdGUodm0sIEpTSW50OEFycmF5Q29uc3RydWN0b3I6OmNyZWF0
ZVN0cnVjdHVyZSh2bSwgdGhpcywgbV9mdW5jdGlvblByb3RvdHlwZS5nZXQoKSksIG1fdHlwZWRB
cnJheXNbdG9JbmRleChUeXBlSW50OCldLnByb3RvdHlwZS5nZXQoKSwgQVNDSUlMaXRlcmFsKCJJ
bnQ4QXJyYXkiKSk7CiAgICAgdHlwZWRBcnJheUNvbnN0cnVjdG9yc1t0b0luZGV4KFR5cGVJbnQx
NildID0gSlNJbnQxNkFycmF5Q29uc3RydWN0b3I6OmNyZWF0ZSh2bSwgSlNJbnQxNkFycmF5Q29u
c3RydWN0b3I6OmNyZWF0ZVN0cnVjdHVyZSh2bSwgdGhpcywgbV9mdW5jdGlvblByb3RvdHlwZS5n
ZXQoKSksIG1fdHlwZWRBcnJheXNbdG9JbmRleChUeXBlSW50MTYpXS5wcm90b3R5cGUuZ2V0KCks
IEFTQ0lJTGl0ZXJhbCgiSW50MTZBcnJheSIpKTsKQEAgLTQ1Myw3ICs0NTgsMTEgQEAgcHV0RGly
ZWN0V2l0aG91dFRyYW5zaXRpb24odm0sIHZtLnByb3BlcnR5TmFtZXMtPiBqc05hbWUsIGxvd2Vy
TmFtZSAjIyBDb25zdHJ1Y3QKICAgICAgICAgbV90eXBlZEFycmF5c1t0eXBlZEFycmF5SW5kZXhd
LnByb3RvdHlwZS0+cHV0RGlyZWN0V2l0aG91dFRyYW5zaXRpb24odm0sIHZtLnByb3BlcnR5TmFt
ZXMtPmNvbnN0cnVjdG9yLCB0eXBlZEFycmF5Q29uc3RydWN0b3JzW3R5cGVkQXJyYXlJbmRleF0s
IERvbnRFbnVtKTsKICAgICAgICAgcHV0RGlyZWN0V2l0aG91dFRyYW5zaXRpb24odm0sIElkZW50
aWZpZXI6OmZyb21TdHJpbmcoZXhlYywgdHlwZWRBcnJheUNvbnN0cnVjdG9yc1t0eXBlZEFycmF5
SW5kZXhdLT5uYW1lKGV4ZWMpKSwgdHlwZWRBcnJheUNvbnN0cnVjdG9yc1t0eXBlZEFycmF5SW5k
ZXhdLCBEb250RW51bSk7CiAgICAgfQotICAgIAorCisgICAgbV9tb2R1bGVMb2FkZXIuc2V0KHZt
LCB0aGlzLCBNb2R1bGVMb2FkZXJPYmplY3Q6OmNyZWF0ZSh2bSwgdGhpcywgTW9kdWxlTG9hZGVy
T2JqZWN0OjpjcmVhdGVTdHJ1Y3R1cmUodm0sIHRoaXMsIG1fb2JqZWN0UHJvdG90eXBlLmdldCgp
KSkpOworICAgIGlmIChPcHRpb25zOjpleHBvc2VJbnRlcm5hbE1vZHVsZUxvYWRlcigpKQorICAg
ICAgICBwdXREaXJlY3RXaXRob3V0VHJhbnNpdGlvbih2bSwgdm0ucHJvcGVydHlOYW1lcy0+TG9h
ZGVyLCBtX21vZHVsZUxvYWRlci5nZXQoKSwgRG9udEVudW0pOworCiAgICAgSlNGdW5jdGlvbiog
YnVpbHRpbkxvZyA9IEpTRnVuY3Rpb246OmNyZWF0ZSh2bSwgdGhpcywgMSwgdm0ucHJvcGVydHlO
YW1lcy0+ZW1wdHlJZGVudGlmaWVyLnN0cmluZygpLCBnbG9iYWxGdW5jQnVpbHRpbkxvZyk7CiAK
ICAgICBKU0Z1bmN0aW9uKiBwcml2YXRlRnVuY0FicyA9IEpTRnVuY3Rpb246OmNyZWF0ZSh2bSwg
dGhpcywgMCwgU3RyaW5nKCksIG1hdGhQcm90b0Z1bmNBYnMsIEFic0ludHJpbnNpYyk7CkBAIC01
MDUsNiArNTE0LDcgQEAgcHV0RGlyZWN0V2l0aG91dFRyYW5zaXRpb24odm0sIHZtLnByb3BlcnR5
TmFtZXMtPiBqc05hbWUsIGxvd2VyTmFtZSAjIyBDb25zdHJ1Y3QKICAgICAgICAgR2xvYmFsUHJv
cGVydHlJbmZvKHZtLnByb3BlcnR5TmFtZXMtPmJ1aWx0aW5OYW1lcygpLnByb21pc2VSZXNvbHZl
VGhlbmFibGVKb2JQcml2YXRlTmFtZSgpLCBKU0Z1bmN0aW9uOjpjcmVhdGVCdWlsdGluRnVuY3Rp
b24odm0sIG9wZXJhdGlvbnNQcm9taXNlUHJvbWlzZVJlc29sdmVUaGVuYWJsZUpvYkNvZGVHZW5l
cmF0b3Iodm0pLCB0aGlzKSwgRG9udEVudW0gfCBEb250RGVsZXRlIHwgUmVhZE9ubHkpLAogICAg
ICAgICBHbG9iYWxQcm9wZXJ0eUluZm8odm0ucHJvcGVydHlOYW1lcy0+YnVpbHRpbk5hbWVzKCku
bmV3UHJvbWlzZURlZmVycmVkUHJpdmF0ZU5hbWUoKSwgbV9uZXdQcm9taXNlRGVmZXJyZWRGdW5j
dGlvbi5nZXQoKSwgRG9udEVudW0gfCBEb250RGVsZXRlIHwgUmVhZE9ubHkpLAogICAgICAgICBH
bG9iYWxQcm9wZXJ0eUluZm8odm0ucHJvcGVydHlOYW1lcy0+YnVpbHRpbk5hbWVzKCkuSW5zcGVj
dG9ySW5zdHJ1bWVudGF0aW9uUHJpdmF0ZU5hbWUoKSwgSW5zcGVjdG9ySW5zdHJ1bWVudGF0aW9u
T2JqZWN0OjpjcmVhdGUodm0sIHRoaXMsIEluc3BlY3Rvckluc3RydW1lbnRhdGlvbk9iamVjdDo6
Y3JlYXRlU3RydWN0dXJlKHZtLCB0aGlzLCBtX29iamVjdFByb3RvdHlwZS5nZXQoKSkpLCBEb250
RW51bSB8IERvbnREZWxldGUgfCBSZWFkT25seSksCisgICAgICAgIEdsb2JhbFByb3BlcnR5SW5m
byh2bS5wcm9wZXJ0eU5hbWVzLT5NYXBQcml2YXRlTmFtZSwgbWFwQ29uc3RydWN0b3IsIERvbnRF
bnVtIHwgRG9udERlbGV0ZSB8IFJlYWRPbmx5KSwKICAgICB9OwogICAgIGFkZFN0YXRpY0dsb2Jh
bHMoc3RhdGljR2xvYmFscywgV1RGX0FSUkFZX0xFTkdUSChzdGF0aWNHbG9iYWxzKSk7CiAgICAg
CkBAIC03NjAsNiArNzcwLDcgQEAgdm9pZCBKU0dsb2JhbE9iamVjdDo6dmlzaXRDaGlsZHJlbihK
U0NlbGwqIGNlbGwsIFNsb3RWaXNpdG9yJiB2aXNpdG9yKQogICAgIHZpc2l0b3IuYXBwZW5kKCZ0
aGlzT2JqZWN0LT5tX2luaXRpYWxpemVQcm9taXNlRnVuY3Rpb24pOwogICAgIHZpc2l0b3IuYXBw
ZW5kKCZ0aGlzT2JqZWN0LT5tX25ld1Byb21pc2VEZWZlcnJlZEZ1bmN0aW9uKTsKICAgICB2aXNp
dG9yLmFwcGVuZCgmdGhpc09iamVjdC0+bV90aHJvd1R5cGVFcnJvckdldHRlclNldHRlcik7Cisg
ICAgdmlzaXRvci5hcHBlbmQoJnRoaXNPYmplY3QtPm1fbW9kdWxlTG9hZGVyKTsKIAogICAgIHZp
c2l0b3IuYXBwZW5kKCZ0aGlzT2JqZWN0LT5tX29iamVjdFByb3RvdHlwZSk7CiAgICAgdmlzaXRv
ci5hcHBlbmQoJnRoaXNPYmplY3QtPm1fZnVuY3Rpb25Qcm90b3R5cGUpOwpAQCAtNzk3LDYgKzgw
OCw3IEBAIHZvaWQgSlNHbG9iYWxPYmplY3Q6OnZpc2l0Q2hpbGRyZW4oSlNDZWxsKiBjZWxsLCBT
bG90VmlzaXRvciYgdmlzaXRvcikKICAgICB2aXNpdG9yLmFwcGVuZCgmdGhpc09iamVjdC0+bV9z
eW1ib2xPYmplY3RTdHJ1Y3R1cmUpOwogICAgIHZpc2l0b3IuYXBwZW5kKCZ0aGlzT2JqZWN0LT5t
X3JlZ0V4cFN0cnVjdHVyZSk7CiAgICAgdmlzaXRvci5hcHBlbmQoJnRoaXNPYmplY3QtPm1fcmVn
RXhwTWF0Y2hlc0FycmF5U3RydWN0dXJlKTsKKyAgICB2aXNpdG9yLmFwcGVuZCgmdGhpc09iamVj
dC0+bV9tb2R1bGVSZWNvcmRTdHJ1Y3R1cmUpOwogICAgIHZpc2l0b3IuYXBwZW5kKCZ0aGlzT2Jq
ZWN0LT5tX2NvbnNvbGVTdHJ1Y3R1cmUpOwogICAgIHZpc2l0b3IuYXBwZW5kKCZ0aGlzT2JqZWN0
LT5tX2RvbGxhclZNU3RydWN0dXJlKTsKICAgICB2aXNpdG9yLmFwcGVuZCgmdGhpc09iamVjdC0+
bV9pbnRlcm5hbEZ1bmN0aW9uU3RydWN0dXJlKTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9KYXZhU2Ny
aXB0Q29yZS9ydW50aW1lL0pTR2xvYmFsT2JqZWN0LmggYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUv
cnVudGltZS9KU0dsb2JhbE9iamVjdC5oCmluZGV4IGE2Y2RjMzIyZDFjYzkwMjBmOTE2OGM3ZGU2
ODVlZDFmNTZlMTQ2MzUuLmFkYmQyNmU2NjE3Mzg3ZmQ4OGYzNzQ4Y2RlZGUwN2I5Yjc0Nzc3NTIg
MTAwNjQ0Ci0tLSBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL0pTR2xvYmFsT2JqZWN0
LmgKKysrIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvSlNHbG9iYWxPYmplY3QuaApA
QCAtNzAsMTEgKzcwLDE0IEBAIGNsYXNzIEdldHRlclNldHRlcjsKIGNsYXNzIEdsb2JhbENvZGVC
bG9jazsKIGNsYXNzIElucHV0Q3Vyc29yOwogY2xhc3MgSlNHbG9iYWxPYmplY3REZWJ1Z2dhYmxl
OworY2xhc3MgSlNQcm9taXNlOwogY2xhc3MgSlNQcm9taXNlQ29uc3RydWN0b3I7CiBjbGFzcyBK
U1Byb21pc2VQcm90b3R5cGU7CitjbGFzcyBKU0ludGVybmFsUHJvbWlzZTsKIGNsYXNzIEpTU3Rh
Y2s7CiBjbGFzcyBMTEludE9mZnNldHNFeHRyYWN0b3I7CiBjbGFzcyBNaWNyb3Rhc2s7CitjbGFz
cyBNb2R1bGVMb2FkZXJPYmplY3Q7CiBjbGFzcyBOYXRpdmVFcnJvckNvbnN0cnVjdG9yOwogY2xh
c3MgT2JqZWN0Q29uc3RydWN0b3I7CiBjbGFzcyBQcm9ncmFtQ29kZUJsb2NrOwpAQCAtMTUxLDYg
KzE1NCwxOCBAQCBzdHJ1Y3QgR2xvYmFsT2JqZWN0TWV0aG9kVGFibGUgewogCiAgICAgdHlwZWRl
ZiBib29sICgqU2hvdWxkSW50ZXJydXB0U2NyaXB0QmVmb3JlVGltZW91dFB0cikoY29uc3QgSlNH
bG9iYWxPYmplY3QqKTsKICAgICBTaG91bGRJbnRlcnJ1cHRTY3JpcHRCZWZvcmVUaW1lb3V0UHRy
IHNob3VsZEludGVycnVwdFNjcmlwdEJlZm9yZVRpbWVvdXQ7CisKKyAgICB0eXBlZGVmIEpTSW50
ZXJuYWxQcm9taXNlKiAoKkxvYWRlclJlc29sdmVQdHIpKEpTR2xvYmFsT2JqZWN0KiwgRXhlY1N0
YXRlKiwgSlNWYWx1ZSwgSlNWYWx1ZSk7CisgICAgTG9hZGVyUmVzb2x2ZVB0ciBsb2FkZXJSZXNv
bHZlOworCisgICAgdHlwZWRlZiBKU0ludGVybmFsUHJvbWlzZSogKCpMb2FkZXJGZXRjaFB0ciko
SlNHbG9iYWxPYmplY3QqLCBFeGVjU3RhdGUqLCBKU1ZhbHVlKTsKKyAgICBMb2FkZXJGZXRjaFB0
ciBsb2FkZXJGZXRjaDsKKworICAgIHR5cGVkZWYgSlNJbnRlcm5hbFByb21pc2UqICgqTG9hZGVy
VHJhbnNsYXRlUHRyKShKU0dsb2JhbE9iamVjdCosIEV4ZWNTdGF0ZSosIEpTVmFsdWUsIEpTVmFs
dWUpOworICAgIExvYWRlclRyYW5zbGF0ZVB0ciBsb2FkZXJUcmFuc2xhdGU7CisKKyAgICB0eXBl
ZGVmIEpTSW50ZXJuYWxQcm9taXNlKiAoKkxvYWRlckluc3RhbnRpYXRlUHRyKShKU0dsb2JhbE9i
amVjdCosIEV4ZWNTdGF0ZSosIEpTVmFsdWUsIEpTVmFsdWUpOworICAgIExvYWRlckluc3RhbnRp
YXRlUHRyIGxvYWRlckluc3RhbnRpYXRlOwogfTsKIAogY2xhc3MgSlNHbG9iYWxPYmplY3QgOiBw
dWJsaWMgSlNTZWdtZW50ZWRWYXJpYWJsZU9iamVjdCB7CkBAIC0yMDAsNiArMjE1LDggQEAgY2xh
c3MgSlNHbG9iYWxPYmplY3QgOiBwdWJsaWMgSlNTZWdtZW50ZWRWYXJpYWJsZU9iamVjdCB7CiAg
ICAgV3JpdGVCYXJyaWVyPEpTRnVuY3Rpb24+IG1fbmV3UHJvbWlzZURlZmVycmVkRnVuY3Rpb247
CiAgICAgV3JpdGVCYXJyaWVyPEdldHRlclNldHRlcj4gbV90aHJvd1R5cGVFcnJvckdldHRlclNl
dHRlcjsKIAorICAgIFdyaXRlQmFycmllcjxNb2R1bGVMb2FkZXJPYmplY3Q+IG1fbW9kdWxlTG9h
ZGVyOworCiAgICAgV3JpdGVCYXJyaWVyPE9iamVjdFByb3RvdHlwZT4gbV9vYmplY3RQcm90b3R5
cGU7CiAgICAgV3JpdGVCYXJyaWVyPEZ1bmN0aW9uUHJvdG90eXBlPiBtX2Z1bmN0aW9uUHJvdG90
eXBlOwogICAgIFdyaXRlQmFycmllcjxBcnJheVByb3RvdHlwZT4gbV9hcnJheVByb3RvdHlwZTsK
QEAgLTI0MSw2ICsyNTgsNyBAQCBjbGFzcyBKU0dsb2JhbE9iamVjdCA6IHB1YmxpYyBKU1NlZ21l
bnRlZFZhcmlhYmxlT2JqZWN0IHsKICAgICBXcml0ZUJhcnJpZXI8U3RydWN0dXJlPiBtX2ludGVy
bmFsRnVuY3Rpb25TdHJ1Y3R1cmU7CiAgICAgV3JpdGVCYXJyaWVyPFN0cnVjdHVyZT4gbV9pdGVy
YXRvclJlc3VsdFN0cnVjdHVyZTsKICAgICBXcml0ZUJhcnJpZXI8U3RydWN0dXJlPiBtX3JlZ0V4
cE1hdGNoZXNBcnJheVN0cnVjdHVyZTsKKyAgICBXcml0ZUJhcnJpZXI8U3RydWN0dXJlPiBtX21v
ZHVsZVJlY29yZFN0cnVjdHVyZTsKICNpZiBFTkFCTEUoV0VCQVNTRU1CTFkpCiAgICAgV3JpdGVC
YXJyaWVyPFN0cnVjdHVyZT4gbV93YXNtTW9kdWxlU3RydWN0dXJlOwogI2VuZGlmCkBAIC00MDUs
NiArNDIzLDggQEAgY2xhc3MgSlNHbG9iYWxPYmplY3QgOiBwdWJsaWMgSlNTZWdtZW50ZWRWYXJp
YWJsZU9iamVjdCB7CiAgICAgICAgIHJldHVybiBtX3Rocm93VHlwZUVycm9yR2V0dGVyU2V0dGVy
LmdldCgpOwogICAgIH0KIAorICAgIE1vZHVsZUxvYWRlck9iamVjdCogbW9kdWxlTG9hZGVyKCkg
Y29uc3QgeyByZXR1cm4gbV9tb2R1bGVMb2FkZXIuZ2V0KCk7IH0KKwogICAgIE9iamVjdFByb3Rv
dHlwZSogb2JqZWN0UHJvdG90eXBlKCkgY29uc3QgeyByZXR1cm4gbV9vYmplY3RQcm90b3R5cGUu
Z2V0KCk7IH0KICAgICBGdW5jdGlvblByb3RvdHlwZSogZnVuY3Rpb25Qcm90b3R5cGUoKSBjb25z
dCB7IHJldHVybiBtX2Z1bmN0aW9uUHJvdG90eXBlLmdldCgpOyB9CiAgICAgQXJyYXlQcm90b3R5
cGUqIGFycmF5UHJvdG90eXBlKCkgY29uc3QgeyByZXR1cm4gbV9hcnJheVByb3RvdHlwZS5nZXQo
KTsgfQpAQCAtNDczLDYgKzQ5Myw3IEBAIGNsYXNzIEpTR2xvYmFsT2JqZWN0IDogcHVibGljIEpT
U2VnbWVudGVkVmFyaWFibGVPYmplY3QgewogICAgIFN0cnVjdHVyZSogaXRlcmF0b3JSZXN1bHRT
dHJ1Y3R1cmUoKSBjb25zdCB7IHJldHVybiBtX2l0ZXJhdG9yUmVzdWx0U3RydWN0dXJlLmdldCgp
OyB9CiAgICAgc3RhdGljIHB0cmRpZmZfdCBpdGVyYXRvclJlc3VsdFN0cnVjdHVyZU9mZnNldCgp
IHsgcmV0dXJuIE9CSkVDVF9PRkZTRVRPRihKU0dsb2JhbE9iamVjdCwgbV9pdGVyYXRvclJlc3Vs
dFN0cnVjdHVyZSk7IH0KICAgICBTdHJ1Y3R1cmUqIHJlZ0V4cE1hdGNoZXNBcnJheVN0cnVjdHVy
ZSgpIGNvbnN0IHsgcmV0dXJuIG1fcmVnRXhwTWF0Y2hlc0FycmF5U3RydWN0dXJlLmdldCgpOyB9
CisgICAgU3RydWN0dXJlKiBtb2R1bGVSZWNvcmRTdHJ1Y3R1cmUoKSBjb25zdCB7IHJldHVybiBt
X21vZHVsZVJlY29yZFN0cnVjdHVyZS5nZXQoKTsgfQogI2lmIEVOQUJMRShXRUJBU1NFTUJMWSkK
ICAgICBTdHJ1Y3R1cmUqIHdhc21Nb2R1bGVTdHJ1Y3R1cmUoKSBjb25zdCB7IHJldHVybiBtX3dh
c21Nb2R1bGVTdHJ1Y3R1cmUuZ2V0KCk7IH0KICNlbmRpZgpkaWZmIC0tZ2l0IGEvU291cmNlL0ph
dmFTY3JpcHRDb3JlL3J1bnRpbWUvSlNNb2R1bGVSZWNvcmQuY3BwIGIvU291cmNlL0phdmFTY3Jp
cHRDb3JlL3J1bnRpbWUvSlNNb2R1bGVSZWNvcmQuY3BwCm5ldyBmaWxlIG1vZGUgMTAwNjQ0Cmlu
ZGV4IDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAuLjdkZTE4NjA5NDBj
ZTE5Y2U1MDhjMTIwMjgyZTk0NGYzY2E0MjA1ZDkKLS0tIC9kZXYvbnVsbAorKysgYi9Tb3VyY2Uv
SmF2YVNjcmlwdENvcmUvcnVudGltZS9KU01vZHVsZVJlY29yZC5jcHAKQEAgLTAsMCArMSwxMTMg
QEAKKy8qCisgKiBDb3B5cmlnaHQgKEMpIDIwMTUgQXBwbGUgSW5jLiBBbGwgcmlnaHRzIHJlc2Vy
dmVkLgorICoKKyAqIFJlZGlzdHJpYnV0aW9uIGFuZCB1c2UgaW4gc291cmNlIGFuZCBiaW5hcnkg
Zm9ybXMsIHdpdGggb3Igd2l0aG91dAorICogbW9kaWZpY2F0aW9uLCBhcmUgcGVybWl0dGVkIHBy
b3ZpZGVkIHRoYXQgdGhlIGZvbGxvd2luZyBjb25kaXRpb25zCisgKiBhcmUgbWV0OgorICogMS4g
UmVkaXN0cmlidXRpb25zIG9mIHNvdXJjZSBjb2RlIG11c3QgcmV0YWluIHRoZSBhYm92ZSBjb3B5
cmlnaHQKKyAqICAgIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xs
b3dpbmcgZGlzY2xhaW1lci4KKyAqIDIuIFJlZGlzdHJpYnV0aW9ucyBpbiBiaW5hcnkgZm9ybSBt
dXN0IHJlcHJvZHVjZSB0aGUgYWJvdmUgY29weXJpZ2h0CisgKiAgICBub3RpY2UsIHRoaXMgbGlz
dCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIgaW4gdGhlCisgKiAg
ICBkb2N1bWVudGF0aW9uIGFuZC9vciBvdGhlciBtYXRlcmlhbHMgcHJvdmlkZWQgd2l0aCB0aGUg
ZGlzdHJpYnV0aW9uLgorICoKKyAqIFRISVMgU09GVFdBUkUgSVMgUFJPVklERUQgQlkgQVBQTEUg
SU5DLiBgYEFTIElTJycgQU5EIEFOWQorICogRVhQUkVTUyBPUiBJTVBMSUVEIFdBUlJBTlRJRVMs
IElOQ0xVRElORywgQlVUIE5PVCBMSU1JVEVEIFRPLCBUSEUKKyAqIElNUExJRUQgV0FSUkFOVElF
UyBPRiBNRVJDSEFOVEFCSUxJVFkgQU5EIEZJVE5FU1MgRk9SIEEgUEFSVElDVUxBUgorICogUFVS
UE9TRSBBUkUgRElTQ0xBSU1FRC4gIElOIE5PIEVWRU5UIFNIQUxMIEFQUExFIElOQy4gT1IKKyAq
IENPTlRSSUJVVE9SUyBCRSBMSUFCTEUgRk9SIEFOWSBESVJFQ1QsIElORElSRUNULCBJTkNJREVO
VEFMLCBTUEVDSUFMLAorICogRVhFTVBMQVJZLCBPUiBDT05TRVFVRU5USUFMIERBTUFHRVMgKElO
Q0xVRElORywgQlVUIE5PVCBMSU1JVEVEIFRPLAorICogUFJPQ1VSRU1FTlQgT0YgU1VCU1RJVFVU
RSBHT09EUyBPUiBTRVJWSUNFUzsgTE9TUyBPRiBVU0UsIERBVEEsIE9SCisgKiBQUk9GSVRTOyBP
UiBCVVNJTkVTUyBJTlRFUlJVUFRJT04pIEhPV0VWRVIgQ0FVU0VEIEFORCBPTiBBTlkgVEhFT1JZ
CisgKiBPRiBMSUFCSUxJVFksIFdIRVRIRVIgSU4gQ09OVFJBQ1QsIFNUUklDVCBMSUFCSUxJVFks
IE9SIFRPUlQKKyAqIChJTkNMVURJTkcgTkVHTElHRU5DRSBPUiBPVEhFUldJU0UpIEFSSVNJTkcg
SU4gQU5ZIFdBWSBPVVQgT0YgVEhFIFVTRQorICogT0YgVEhJUyBTT0ZUV0FSRSwgRVZFTiBJRiBB
RFZJU0VEIE9GIFRIRSBQT1NTSUJJTElUWSBPRiBTVUNIIERBTUFHRS4gCisgKi8KKworI2luY2x1
ZGUgImNvbmZpZy5oIgorI2luY2x1ZGUgIkpTTW9kdWxlUmVjb3JkLmgiCisKKyNpbmNsdWRlICJJ
ZGVudGlmaWVySW5saW5lcy5oIgorI2luY2x1ZGUgIkpTQ0pTVmFsdWVJbmxpbmVzLmgiCisjaW5j
bHVkZSAiSlNDZWxsSW5saW5lcy5oIgorI2luY2x1ZGUgIlN0cnVjdHVyZUlubGluZXMuaCIKKwor
bmFtZXNwYWNlIEpTQyB7CisKK2NvbnN0IENsYXNzSW5mbyBKU01vZHVsZVJlY29yZDo6c19pbmZv
ID0geyAiTW9kdWxlUmVjb3JkIiwgJkJhc2U6OnNfaW5mbywgMCwgQ1JFQVRFX01FVEhPRF9UQUJM
RShKU01vZHVsZVJlY29yZCkgfTsKKwordm9pZCBKU01vZHVsZVJlY29yZDo6ZGVzdHJveShKU0Nl
bGwqIGNlbGwpCit7CisgICAgSlNNb2R1bGVSZWNvcmQqIHRoaXNPYmplY3QgPSBqc0Nhc3Q8SlNN
b2R1bGVSZWNvcmQqPihjZWxsKTsKKyAgICB0aGlzT2JqZWN0LT5KU01vZHVsZVJlY29yZDo6fkpT
TW9kdWxlUmVjb3JkKCk7Cit9CisKKwordm9pZCBKU01vZHVsZVJlY29yZDo6ZmluaXNoQ3JlYXRp
b24oVk0mIHZtKQoreworICAgIEJhc2U6OmZpbmlzaENyZWF0aW9uKHZtKTsKKyAgICBBU1NFUlQo
aW5oZXJpdHMoaW5mbygpKSk7CisgICAgcHV0RGlyZWN0KHZtLCBJZGVudGlmaWVyOjpmcm9tU3Ry
aW5nKCZ2bSwgQVNDSUlMaXRlcmFsKCJyZWdpc3RyeUVudHJ5IikpLCBqc1VuZGVmaW5lZCgpKTsK
K30KKworYXV0byBKU01vZHVsZVJlY29yZDo6RXhwb3J0RW50cnk6OmNyZWF0ZUxvY2FsKGNvbnN0
IElkZW50aWZpZXImIGV4cG9ydE5hbWUsIGNvbnN0IElkZW50aWZpZXImIGxvY2FsTmFtZSwgY29u
c3QgVmFyaWFibGVFbnZpcm9ubWVudEVudHJ5JiB2YXJpYWJsZSkgLT4gRXhwb3J0RW50cnkKK3sK
KyAgICByZXR1cm4gRXhwb3J0RW50cnkgeyBUeXBlOjpMb2NhbCwgZXhwb3J0TmFtZSwgSWRlbnRp
ZmllcigpLCBJZGVudGlmaWVyKCksIGxvY2FsTmFtZSwgdmFyaWFibGUgfTsKK30KKworYXV0byBK
U01vZHVsZVJlY29yZDo6RXhwb3J0RW50cnk6OmNyZWF0ZU5hbWVzcGFjZShjb25zdCBJZGVudGlm
aWVyJiBleHBvcnROYW1lLCBjb25zdCBJZGVudGlmaWVyJiBtb2R1bGVOYW1lKSAtPiBFeHBvcnRF
bnRyeQoreworICAgIHJldHVybiBFeHBvcnRFbnRyeSB7IFR5cGU6Ok5hbWVzcGFjZSwgZXhwb3J0
TmFtZSwgbW9kdWxlTmFtZSwgSWRlbnRpZmllcigpLCBJZGVudGlmaWVyKCksIFZhcmlhYmxlRW52
aXJvbm1lbnRFbnRyeSgpIH07Cit9CisKK2F1dG8gSlNNb2R1bGVSZWNvcmQ6OkV4cG9ydEVudHJ5
OjpjcmVhdGVJbmRpcmVjdChjb25zdCBJZGVudGlmaWVyJiBleHBvcnROYW1lLCBjb25zdCBJZGVu
dGlmaWVyJiBpbXBvcnROYW1lLCBjb25zdCBJZGVudGlmaWVyJiBtb2R1bGVOYW1lKSAtPiBFeHBv
cnRFbnRyeQoreworICAgIHJldHVybiBFeHBvcnRFbnRyeSB7IFR5cGU6OkluZGlyZWN0LCBleHBv
cnROYW1lLCBtb2R1bGVOYW1lLCBpbXBvcnROYW1lLCBJZGVudGlmaWVyKCksIFZhcmlhYmxlRW52
aXJvbm1lbnRFbnRyeSgpIH07Cit9CisKK3N0YXRpYyBTdHJpbmcgcHJpbnRhYmxlTmFtZShjb25z
dCBSZWZQdHI8VW5pcXVlZFN0cmluZ0ltcGw+JiB1aWQpCit7CisgICAgaWYgKHVpZC0+aXNTeW1i
b2woKSkKKyAgICAgICAgcmV0dXJuIHVpZC5nZXQoKTsKKyAgICByZXR1cm4gV1RGOjptYWtlU3Ry
aW5nKCInIiwgU3RyaW5nKHVpZC5nZXQoKSksICInIik7Cit9CisKK3N0YXRpYyBTdHJpbmcgcHJp
bnRhYmxlTmFtZShjb25zdCBJZGVudGlmaWVyJiBpZGVudCkKK3sKKyAgICByZXR1cm4gcHJpbnRh
YmxlTmFtZShpZGVudC5pbXBsKCkpOworfQorCisKK3ZvaWQgSlNNb2R1bGVSZWNvcmQ6OmR1bXAo
KQoreworICAgIGRhdGFMb2coIlxuQW5hbHl6aW5nIE1vZHVsZVJlY29yZFxuIik7CisKKyAgICBk
YXRhTG9nKCIgICAgRGVwZW5kZW5jaWVzOiAiLCBtX3JlcXVlc3RlZE1vZHVsZXMuc2l6ZSgpLCAi
IG1vZHVsZXNcbiIpOworICAgIGZvciAoY29uc3QgYXV0byYgbW9kdWxlTmFtZSA6IG1fcmVxdWVz
dGVkTW9kdWxlcykKKyAgICAgICAgZGF0YUxvZygiICAgICAgbW9kdWxlKCIsIHByaW50YWJsZU5h
bWUobW9kdWxlTmFtZSksICIpXG4iKTsKKworICAgIGRhdGFMb2coIiAgICBJbXBvcnQ6ICIsIG1f
aW1wb3J0RW50cmllcy5zaXplKCksICIgZW50cmllc1xuIik7CisgICAgZm9yIChjb25zdCBhdXRv
JiBwYWlyIDogbV9pbXBvcnRFbnRyaWVzKQorICAgICAgICBkYXRhTG9nKCIgICAgICBpbXBvcnQo
IiwgcHJpbnRhYmxlTmFtZShwYWlyLnZhbHVlLmltcG9ydE5hbWUpLCAiKSwgbG9jYWwoIiwgcHJp
bnRhYmxlTmFtZShwYWlyLnZhbHVlLmxvY2FsTmFtZSksICIpLCBtb2R1bGUoIiwgcHJpbnRhYmxl
TmFtZShwYWlyLnZhbHVlLm1vZHVsZVJlcXVlc3QpLCAiKVxuIik7CisKKyAgICBkYXRhTG9nKCIg
ICAgRXhwb3J0OiAiLCBtX2V4cG9ydEVudHJpZXMuc2l6ZSgpLCAiIGVudHJpZXNcbiIpOworICAg
IGZvciAoY29uc3QgYXV0byYgcGFpciA6IG1fZXhwb3J0RW50cmllcykgeworICAgICAgICBjb25z
dCBFeHBvcnRFbnRyeSYgZW50cnkgPSBwYWlyLnZhbHVlOworICAgICAgICBzd2l0Y2ggKGVudHJ5
LnR5cGUpIHsKKyAgICAgICAgY2FzZSBFeHBvcnRFbnRyeTo6VHlwZTo6TG9jYWw6CisgICAgICAg
ICAgICBkYXRhTG9nKCIgICAgICBbTG9jYWxdICIsICJleHBvcnQoIiwgcHJpbnRhYmxlTmFtZShl
bnRyeS5leHBvcnROYW1lKSwgIiksIGxvY2FsKCIsIHByaW50YWJsZU5hbWUoZW50cnkubG9jYWxO
YW1lKSwgIilcbiIpOworICAgICAgICAgICAgYnJlYWs7CisKKyAgICAgICAgY2FzZSBFeHBvcnRF
bnRyeTo6VHlwZTo6TmFtZXNwYWNlOgorICAgICAgICAgICAgZGF0YUxvZygiICAgICAgW05hbWVz
cGFjZV0gIiwgImV4cG9ydCgiLCBwcmludGFibGVOYW1lKGVudHJ5LmV4cG9ydE5hbWUpLCAiKSwg
bW9kdWxlKCIsIHByaW50YWJsZU5hbWUoZW50cnkubW9kdWxlTmFtZSksICIpXG4iKTsKKyAgICAg
ICAgICAgIGJyZWFrOworCisgICAgICAgIGNhc2UgRXhwb3J0RW50cnk6OlR5cGU6OkluZGlyZWN0
OgorICAgICAgICAgICAgZGF0YUxvZygiICAgICAgW0luZGlyZWN0XSAiLCAiZXhwb3J0KCIsIHBy
aW50YWJsZU5hbWUoZW50cnkuZXhwb3J0TmFtZSksICIpLCBpbXBvcnQoIiwgcHJpbnRhYmxlTmFt
ZShlbnRyeS5pbXBvcnROYW1lKSwgIiksIG1vZHVsZSgiLCBwcmludGFibGVOYW1lKGVudHJ5Lm1v
ZHVsZU5hbWUpLCAiKVxuIik7CisgICAgICAgICAgICBicmVhazsKKyAgICAgICAgfQorICAgIH0K
KyAgICBmb3IgKGNvbnN0IGF1dG8mIG1vZHVsZU5hbWUgOiBtX3N0YXJFeHBvcnRFbnRyaWVzKQor
ICAgICAgICBkYXRhTG9nKCIgICAgICBbU3Rhcl0gbW9kdWxlKCIsIHByaW50YWJsZU5hbWUobW9k
dWxlTmFtZS5nZXQoKSksICIpXG4iKTsKK30KKworfSAvLyBuYW1lc3BhY2UgSlNDCmRpZmYgLS1n
aXQgYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9KU01vZHVsZVJlY29yZC5oIGIvU291
cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvSlNNb2R1bGVSZWNvcmQuaApuZXcgZmlsZSBtb2Rl
IDEwMDY0NAppbmRleCAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwLi45
NmUyZmRmNDUwZTVkYjg3MjljNWZjYzU1ZmI3OGQyYzRmNmM5NzgxCi0tLSAvZGV2L251bGwKKysr
IGIvU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvSlNNb2R1bGVSZWNvcmQuaApAQCAtMCww
ICsxLDE1NyBAQAorLyoKKyAqIENvcHlyaWdodCAoQykgMjAxNSBBcHBsZSBJbmMuIEFsbCByaWdo
dHMgcmVzZXJ2ZWQuCisgKgorICogUmVkaXN0cmlidXRpb24gYW5kIHVzZSBpbiBzb3VyY2UgYW5k
IGJpbmFyeSBmb3Jtcywgd2l0aCBvciB3aXRob3V0CisgKiBtb2RpZmljYXRpb24sIGFyZSBwZXJt
aXR0ZWQgcHJvdmlkZWQgdGhhdCB0aGUgZm9sbG93aW5nIGNvbmRpdGlvbnMKKyAqIGFyZSBtZXQ6
CisgKiAxLiBSZWRpc3RyaWJ1dGlvbnMgb2Ygc291cmNlIGNvZGUgbXVzdCByZXRhaW4gdGhlIGFi
b3ZlIGNvcHlyaWdodAorICogICAgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQg
dGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyLgorICogMi4gUmVkaXN0cmlidXRpb25zIGluIGJpbmFy
eSBmb3JtIG11c3QgcmVwcm9kdWNlIHRoZSBhYm92ZSBjb3B5cmlnaHQKKyAqICAgIG5vdGljZSwg
dGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lciBpbiB0
aGUKKyAqICAgIGRvY3VtZW50YXRpb24gYW5kL29yIG90aGVyIG1hdGVyaWFscyBwcm92aWRlZCB3
aXRoIHRoZSBkaXN0cmlidXRpb24uCisgKgorICogVEhJUyBTT0ZUV0FSRSBJUyBQUk9WSURFRCBC
WSBBUFBMRSBJTkMuIGBgQVMgSVMnJyBBTkQgQU5ZCisgKiBFWFBSRVNTIE9SIElNUExJRUQgV0FS
UkFOVElFUywgSU5DTFVESU5HLCBCVVQgTk9UIExJTUlURUQgVE8sIFRIRQorICogSU1QTElFRCBX
QVJSQU5USUVTIE9GIE1FUkNIQU5UQUJJTElUWSBBTkQgRklUTkVTUyBGT1IgQSBQQVJUSUNVTEFS
CisgKiBQVVJQT1NFIEFSRSBESVNDTEFJTUVELiAgSU4gTk8gRVZFTlQgU0hBTEwgQVBQTEUgSU5D
LiBPUgorICogQ09OVFJJQlVUT1JTIEJFIExJQUJMRSBGT1IgQU5ZIERJUkVDVCwgSU5ESVJFQ1Qs
IElOQ0lERU5UQUwsIFNQRUNJQUwsCisgKiBFWEVNUExBUlksIE9SIENPTlNFUVVFTlRJQUwgREFN
QUdFUyAoSU5DTFVESU5HLCBCVVQgTk9UIExJTUlURUQgVE8sCisgKiBQUk9DVVJFTUVOVCBPRiBT
VUJTVElUVVRFIEdPT0RTIE9SIFNFUlZJQ0VTOyBMT1NTIE9GIFVTRSwgREFUQSwgT1IKKyAqIFBS
T0ZJVFM7IE9SIEJVU0lORVNTIElOVEVSUlVQVElPTikgSE9XRVZFUiBDQVVTRUQgQU5EIE9OIEFO
WSBUSEVPUlkKKyAqIE9GIExJQUJJTElUWSwgV0hFVEhFUiBJTiBDT05UUkFDVCwgU1RSSUNUIExJ
QUJJTElUWSwgT1IgVE9SVAorICogKElOQ0xVRElORyBORUdMSUdFTkNFIE9SIE9USEVSV0lTRSkg
QVJJU0lORyBJTiBBTlkgV0FZIE9VVCBPRiBUSEUgVVNFCisgKiBPRiBUSElTIFNPRlRXQVJFLCBF
VkVOIElGIEFEVklTRUQgT0YgVEhFIFBPU1NJQklMSVRZIE9GIFNVQ0ggREFNQUdFLgorICovCisK
KyNpZm5kZWYgSlNNb2R1bGVSZWNvcmRfaAorI2RlZmluZSBKU01vZHVsZVJlY29yZF9oCisKKyNp
bmNsdWRlICJJZGVudGlmaWVyLmgiCisjaW5jbHVkZSAiSlNEZXN0cnVjdGlibGVPYmplY3QuaCIK
KyNpbmNsdWRlICJWYXJpYWJsZUVudmlyb25tZW50LmgiCisjaW5jbHVkZSA8d3RmL0hhc2hNYXAu
aD4KKyNpbmNsdWRlIDx3dGYvTGlzdEhhc2hTZXQuaD4KKworbmFtZXNwYWNlIEpTQyB7CisKKy8v
IEJhc2VkIG9uIHRoZSBTb3VyY2UgVGV4dCBNb2R1bGUgUmVjb3JkCisvLyBodHRwOi8vd3d3LmVj
bWEtaW50ZXJuYXRpb25hbC5vcmcvZWNtYS0yNjIvNi4wLyNzZWMtc291cmNlLXRleHQtbW9kdWxl
LXJlY29yZHMKK2NsYXNzIEpTTW9kdWxlUmVjb3JkIDogcHVibGljIEpTRGVzdHJ1Y3RpYmxlT2Jq
ZWN0IHsKK3B1YmxpYzoKKyAgICB0eXBlZGVmIEpTRGVzdHJ1Y3RpYmxlT2JqZWN0IEJhc2U7CisK
KyAgICBzdHJ1Y3QgRXhwb3J0RW50cnkgeworICAgICAgICBlbnVtIGNsYXNzIFR5cGUgeworICAg
ICAgICAgICAgTG9jYWwsCisgICAgICAgICAgICBOYW1lc3BhY2UsCisgICAgICAgICAgICBJbmRp
cmVjdAorICAgICAgICB9OworCisgICAgICAgIHN0YXRpYyBFeHBvcnRFbnRyeSBjcmVhdGVMb2Nh
bChjb25zdCBJZGVudGlmaWVyJiBleHBvcnROYW1lLCBjb25zdCBJZGVudGlmaWVyJiBsb2NhbE5h
bWUsIGNvbnN0IFZhcmlhYmxlRW52aXJvbm1lbnRFbnRyeSYpOworICAgICAgICBzdGF0aWMgRXhw
b3J0RW50cnkgY3JlYXRlTmFtZXNwYWNlKGNvbnN0IElkZW50aWZpZXImIGV4cG9ydE5hbWUsIGNv
bnN0IElkZW50aWZpZXImIG1vZHVsZU5hbWUpOworICAgICAgICBzdGF0aWMgRXhwb3J0RW50cnkg
Y3JlYXRlSW5kaXJlY3QoY29uc3QgSWRlbnRpZmllciYgZXhwb3J0TmFtZSwgY29uc3QgSWRlbnRp
ZmllciYgaW1wb3J0TmFtZSwgY29uc3QgSWRlbnRpZmllciYgbW9kdWxlTmFtZSk7CisKKyAgICAg
ICAgVHlwZSB0eXBlOworICAgICAgICBJZGVudGlmaWVyIGV4cG9ydE5hbWU7CisgICAgICAgIElk
ZW50aWZpZXIgbW9kdWxlTmFtZTsKKyAgICAgICAgSWRlbnRpZmllciBpbXBvcnROYW1lOworICAg
ICAgICBJZGVudGlmaWVyIGxvY2FsTmFtZTsKKyAgICAgICAgVmFyaWFibGVFbnZpcm9ubWVudEVu
dHJ5IHZhcmlhYmxlOworICAgIH07CisKKyAgICBzdHJ1Y3QgSW1wb3J0RW50cnkgeworICAgICAg
ICBJZGVudGlmaWVyIG1vZHVsZVJlcXVlc3Q7CisgICAgICAgIElkZW50aWZpZXIgaW1wb3J0TmFt
ZTsKKyAgICAgICAgSWRlbnRpZmllciBsb2NhbE5hbWU7CisKKyAgICAgICAgYm9vbCBpc05hbWVz
cGFjZShWTSYgdm0pIGNvbnN0CisgICAgICAgIHsKKyAgICAgICAgICAgIHJldHVybiBpbXBvcnRO
YW1lID09IHZtLnByb3BlcnR5TmFtZXMtPnRpbWVzSWRlbnRpZmllcjsKKyAgICAgICAgfQorICAg
IH07CisKKyAgICB0eXBlZGVmIFdURjo6TGlzdEhhc2hTZXQ8UmVmUHRyPFVuaXF1ZWRTdHJpbmdJ
bXBsPiwgSWRlbnRpZmllclJlcEhhc2g+IE9yZGVyZWRJZGVudGlmaWVyU2V0OworICAgIHR5cGVk
ZWYgSGFzaE1hcDxSZWZQdHI8VW5pcXVlZFN0cmluZ0ltcGw+LCBJbXBvcnRFbnRyeSwgSWRlbnRp
ZmllclJlcEhhc2gsIEhhc2hUcmFpdHM8UmVmUHRyPFVuaXF1ZWRTdHJpbmdJbXBsPj4+IEltcG9y
dE1hcDsKKyAgICB0eXBlZGVmIEhhc2hNYXA8UmVmUHRyPFVuaXF1ZWRTdHJpbmdJbXBsPiwgRXhw
b3J0RW50cnksIElkZW50aWZpZXJSZXBIYXNoLCBIYXNoVHJhaXRzPFJlZlB0cjxVbmlxdWVkU3Ry
aW5nSW1wbD4+PiBFeHBvcnRNYXA7CisKKyAgICBERUNMQVJFX0VYUE9SVF9JTkZPOworCisgICAg
c3RhdGljIFN0cnVjdHVyZSogY3JlYXRlU3RydWN0dXJlKFZNJiB2bSwgSlNHbG9iYWxPYmplY3Qq
IGdsb2JhbE9iamVjdCwgSlNWYWx1ZSBwcm90b3R5cGUpCisgICAgeworICAgICAgICByZXR1cm4g
U3RydWN0dXJlOjpjcmVhdGUodm0sIGdsb2JhbE9iamVjdCwgcHJvdG90eXBlLCBUeXBlSW5mbyhP
YmplY3RUeXBlLCBTdHJ1Y3R1cmVGbGFncyksIGluZm8oKSk7CisgICAgfQorCisgICAgc3RhdGlj
IEpTTW9kdWxlUmVjb3JkKiBjcmVhdGUoVk0mIHZtLCBTdHJ1Y3R1cmUqIHN0cnVjdHVyZSkKKyAg
ICB7CisgICAgICAgIEpTTW9kdWxlUmVjb3JkKiBpbnN0YW5jZSA9IG5ldyAoTm90TnVsbCwgYWxs
b2NhdGVDZWxsPEpTTW9kdWxlUmVjb3JkPih2bS5oZWFwKSkgSlNNb2R1bGVSZWNvcmQodm0sIHN0
cnVjdHVyZSk7CisgICAgICAgIGluc3RhbmNlLT5maW5pc2hDcmVhdGlvbih2bSk7CisgICAgICAg
IHJldHVybiBpbnN0YW5jZTsKKyAgICB9CisKKyAgICBzdGF0aWMgSlNNb2R1bGVSZWNvcmQqIGNy
ZWF0ZShFeGVjU3RhdGUqIGV4ZWMsIFN0cnVjdHVyZSogc3RydWN0dXJlKQorICAgIHsKKyAgICAg
ICAgcmV0dXJuIGNyZWF0ZShleGVjLT52bSgpLCBzdHJ1Y3R1cmUpOworICAgIH0KKworICAgIHZv
aWQgYXBwZW5kUmVxdWVzdGVkTW9kdWxlKGNvbnN0IElkZW50aWZpZXImKTsKKyAgICB2b2lkIGFk
ZFN0YXJFeHBvcnRFbnRyeShjb25zdCBJZGVudGlmaWVyJik7CisgICAgdm9pZCBhZGRJbXBvcnRF
bnRyeShjb25zdCBJbXBvcnRFbnRyeSYpOworICAgIHZvaWQgYWRkRXhwb3J0RW50cnkoY29uc3Qg
RXhwb3J0RW50cnkmKTsKKworICAgIGNvbnN0IEltcG9ydEVudHJ5JiBsb29rVXBJbXBvcnRFbnRy
eShjb25zdCBSZWZQdHI8VW5pcXVlZFN0cmluZ0ltcGw+JiBsb2NhbE5hbWUpOworCisgICAgY29u
c3QgT3JkZXJlZElkZW50aWZpZXJTZXQmIHJlcXVlc3RlZE1vZHVsZXMoKSBjb25zdCB7IHJldHVy
biBtX3JlcXVlc3RlZE1vZHVsZXM7IH0KKworICAgIHZvaWQgZHVtcCgpOworCitwcml2YXRlOgor
ICAgIEpTTW9kdWxlUmVjb3JkKFZNJiB2bSwgU3RydWN0dXJlKiBzdHJ1Y3R1cmUpCisgICAgICAg
IDogQmFzZSh2bSwgc3RydWN0dXJlKQorICAgIHsKKyAgICB9CisKKyAgICB2b2lkIGZpbmlzaENy
ZWF0aW9uKFZNJik7CisKKyAgICBzdGF0aWMgdm9pZCBkZXN0cm95KEpTQ2VsbCopOworCisgICAg
Ly8gTWFwIGxvY2FsTmFtZSAtPiBJbXBvcnRFbnRyeS4KKyAgICBJbXBvcnRNYXAgbV9pbXBvcnRF
bnRyaWVzOworCisgICAgLy8gTWFwIGV4cG9ydE5hbWUgLT4gRXhwb3J0RW50cnkuCisgICAgRXhw
b3J0TWFwIG1fZXhwb3J0RW50cmllczsKKworICAgIElkZW50aWZpZXJTZXQgbV9zdGFyRXhwb3J0
RW50cmllczsKKworICAgIC8vIFNhdmUgdGhlIG9jY3VycmVuY2Ugb3JkZXIgc2luY2UgdGhlIG1v
ZHVsZSBsb2FkZXIgbG9hZHMgYW5kIHJ1bnMgdGhlIG1vZHVsZXMgaW4gdGhpcyBvcmRlci4KKyAg
ICAvLyBodHRwOi8vd3d3LmVjbWEtaW50ZXJuYXRpb25hbC5vcmcvZWNtYS0yNjIvNi4wLyNzZWMt
bW9kdWxlZXZhbHVhdGlvbgorICAgIE9yZGVyZWRJZGVudGlmaWVyU2V0IG1fcmVxdWVzdGVkTW9k
dWxlczsKK307CisKK2lubGluZSB2b2lkIEpTTW9kdWxlUmVjb3JkOjphcHBlbmRSZXF1ZXN0ZWRN
b2R1bGUoY29uc3QgSWRlbnRpZmllciYgbW9kdWxlTmFtZSkKK3sKKyAgICBtX3JlcXVlc3RlZE1v
ZHVsZXMuYWRkKG1vZHVsZU5hbWUuaW1wbCgpKTsKK30KKworaW5saW5lIHZvaWQgSlNNb2R1bGVS
ZWNvcmQ6OmFkZEltcG9ydEVudHJ5KGNvbnN0IEltcG9ydEVudHJ5JiBlbnRyeSkKK3sKKyAgICBt
X2ltcG9ydEVudHJpZXMuYWRkKGVudHJ5LmxvY2FsTmFtZS5pbXBsKCksIGVudHJ5KTsKK30KKwor
aW5saW5lIHZvaWQgSlNNb2R1bGVSZWNvcmQ6OmFkZEV4cG9ydEVudHJ5KGNvbnN0IEV4cG9ydEVu
dHJ5JiBlbnRyeSkKK3sKKyAgICBtX2V4cG9ydEVudHJpZXMuYWRkKGVudHJ5LmV4cG9ydE5hbWUu
aW1wbCgpLCBlbnRyeSk7Cit9CisKK2lubGluZSB2b2lkIEpTTW9kdWxlUmVjb3JkOjphZGRTdGFy
RXhwb3J0RW50cnkoY29uc3QgSWRlbnRpZmllciYgbW9kdWxlTmFtZSkKK3sKKyAgICBtX3N0YXJF
eHBvcnRFbnRyaWVzLmFkZChtb2R1bGVOYW1lLmltcGwoKSk7Cit9CisKK2lubGluZSBhdXRvIEpT
TW9kdWxlUmVjb3JkOjpsb29rVXBJbXBvcnRFbnRyeShjb25zdCBSZWZQdHI8VW5pcXVlZFN0cmlu
Z0ltcGw+JiBsb2NhbE5hbWUpIC0+IGNvbnN0IEltcG9ydEVudHJ5JgoreworICAgIHJldHVybiAo
Km1faW1wb3J0RW50cmllcy5maW5kKGxvY2FsTmFtZSkpLnZhbHVlOworfQorCit9IC8vIG5hbWVz
cGFjZSBKU0MKKworI2VuZGlmIC8vIEpTTW9kdWxlUmVjb3JkX2gKZGlmZiAtLWdpdCBhL1NvdXJj
ZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL01hcFByb3RvdHlwZS5jcHAgYi9Tb3VyY2UvSmF2YVNj
cmlwdENvcmUvcnVudGltZS9NYXBQcm90b3R5cGUuY3BwCmluZGV4IDk2ZGVhZTcxNGNhNTFhNjdm
ZDE2NDA4ZTVjMzlkM2M2NTY3Mzg5NGQuLmU5NzJmNTQwZWZiMmYxZTZhNDhkMTI1MDNmMDMxODk3
MWY0MmRmODIgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL01hcFBy
b3RvdHlwZS5jcHAKKysrIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvTWFwUHJvdG90
eXBlLmNwcApAQCAtNjgsNiArNjgsMTAgQEAgdm9pZCBNYXBQcm90b3R5cGU6OmZpbmlzaENyZWF0
aW9uKFZNJiB2bSwgSlNHbG9iYWxPYmplY3QqIGdsb2JhbE9iamVjdCkKICAgICBKU0NfTkFUSVZF
X0ZVTkNUSU9OKHZtLnByb3BlcnR5TmFtZXMtPmtleXMsIG1hcFByb3RvRnVuY0tleXMsIERvbnRF
bnVtLCAwKTsKICAgICBKU0NfTkFUSVZFX0ZVTkNUSU9OKHZtLnByb3BlcnR5TmFtZXMtPnZhbHVl
cywgbWFwUHJvdG9GdW5jVmFsdWVzLCBEb250RW51bSwgMCk7CiAKKyAgICAvLyBQcml2YXRlIGdl
dCAvIHNldCBvcGVyYXRpb25zLgorICAgIEpTQ19OQVRJVkVfRlVOQ1RJT04odm0ucHJvcGVydHlO
YW1lcy0+Z2V0UHJpdmF0ZU5hbWUsIG1hcFByb3RvRnVuY0dldCwgRG9udEVudW0sIDEpOworICAg
IEpTQ19OQVRJVkVfRlVOQ1RJT04odm0ucHJvcGVydHlOYW1lcy0+c2V0UHJpdmF0ZU5hbWUsIG1h
cFByb3RvRnVuY1NldCwgRG9udEVudW0sIDIpOworCiAgICAgSlNGdW5jdGlvbiogZW50cmllcyA9
IEpTRnVuY3Rpb246OmNyZWF0ZSh2bSwgZ2xvYmFsT2JqZWN0LCAwLCB2bS5wcm9wZXJ0eU5hbWVz
LT5lbnRyaWVzLnN0cmluZygpLCBtYXBQcm90b0Z1bmNFbnRyaWVzKTsKICAgICBwdXREaXJlY3RX
aXRob3V0VHJhbnNpdGlvbih2bSwgdm0ucHJvcGVydHlOYW1lcy0+ZW50cmllcywgZW50cmllcywg
RG9udEVudW0pOwogICAgIHB1dERpcmVjdFdpdGhvdXRUcmFuc2l0aW9uKHZtLCB2bS5wcm9wZXJ0
eU5hbWVzLT5pdGVyYXRvclN5bWJvbCwgZW50cmllcywgRG9udEVudW0pOwpkaWZmIC0tZ2l0IGEv
U291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvTW9kdWxlTG9hZGVyT2JqZWN0LmNwcCBiL1Nv
dXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL01vZHVsZUxvYWRlck9iamVjdC5jcHAKbmV3IGZp
bGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMC4uYzdjMjFmOThkZTUzMjUyMjg3MGU3NmJlOWIyODViZTg0OTA4YWU3YQotLS0gL2Rldi9u
dWxsCisrKyBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL01vZHVsZUxvYWRlck9iamVj
dC5jcHAKQEAgLTAsMCArMSwzMDYgQEAKKy8qCisgKiBDb3B5cmlnaHQgKEMpIDIwMTUgQXBwbGUg
SW5jLiBBbGwgUmlnaHRzIFJlc2VydmVkLgorICoKKyAqIFJlZGlzdHJpYnV0aW9uIGFuZCB1c2Ug
aW4gc291cmNlIGFuZCBiaW5hcnkgZm9ybXMsIHdpdGggb3Igd2l0aG91dAorICogbW9kaWZpY2F0
aW9uLCBhcmUgcGVybWl0dGVkIHByb3ZpZGVkIHRoYXQgdGhlIGZvbGxvd2luZyBjb25kaXRpb25z
CisgKiBhcmUgbWV0OgorICogMS4gUmVkaXN0cmlidXRpb25zIG9mIHNvdXJjZSBjb2RlIG11c3Qg
cmV0YWluIHRoZSBhYm92ZSBjb3B5cmlnaHQKKyAqICAgIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNv
bmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lci4KKyAqIDIuIFJlZGlzdHJpYnV0
aW9ucyBpbiBiaW5hcnkgZm9ybSBtdXN0IHJlcHJvZHVjZSB0aGUgYWJvdmUgY29weXJpZ2h0Cisg
KiAgICBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRp
c2NsYWltZXIgaW4gdGhlCisgKiAgICBkb2N1bWVudGF0aW9uIGFuZC9vciBvdGhlciBtYXRlcmlh
bHMgcHJvdmlkZWQgd2l0aCB0aGUgZGlzdHJpYnV0aW9uLgorICoKKyAqIFRISVMgU09GVFdBUkUg
SVMgUFJPVklERUQgQlkgQVBQTEUgSU5DLiBgYEFTIElTJycgQU5EIEFOWQorICogRVhQUkVTUyBP
UiBJTVBMSUVEIFdBUlJBTlRJRVMsIElOQ0xVRElORywgQlVUIE5PVCBMSU1JVEVEIFRPLCBUSEUK
KyAqIElNUExJRUQgV0FSUkFOVElFUyBPRiBNRVJDSEFOVEFCSUxJVFkgQU5EIEZJVE5FU1MgRk9S
IEEgUEFSVElDVUxBUgorICogUFVSUE9TRSBBUkUgRElTQ0xBSU1FRC4gIElOIE5PIEVWRU5UIFNI
QUxMIEFQUExFIElOQy4gT1IKKyAqIENPTlRSSUJVVE9SUyBCRSBMSUFCTEUgRk9SIEFOWSBESVJF
Q1QsIElORElSRUNULCBJTkNJREVOVEFMLCBTUEVDSUFMLAorICogRVhFTVBMQVJZLCBPUiBDT05T
RVFVRU5USUFMIERBTUFHRVMgKElOQ0xVRElORywgQlVUIE5PVCBMSU1JVEVEIFRPLAorICogUFJP
Q1VSRU1FTlQgT0YgU1VCU1RJVFVURSBHT09EUyBPUiBTRVJWSUNFUzsgTE9TUyBPRiBVU0UsIERB
VEEsIE9SCisgKiBQUk9GSVRTOyBPUiBCVVNJTkVTUyBJTlRFUlJVUFRJT04pIEhPV0VWRVIgQ0FV
U0VEIEFORCBPTiBBTlkgVEhFT1JZCisgKiBPRiBMSUFCSUxJVFksIFdIRVRIRVIgSU4gQ09OVFJB
Q1QsIFNUUklDVCBMSUFCSUxJVFksIE9SIFRPUlQKKyAqIChJTkNMVURJTkcgTkVHTElHRU5DRSBP
UiBPVEhFUldJU0UpIEFSSVNJTkcgSU4gQU5ZIFdBWSBPVVQgT0YgVEhFIFVTRQorICogT0YgVEhJ
UyBTT0ZUV0FSRSwgRVZFTiBJRiBBRFZJU0VEIE9GIFRIRSBQT1NTSUJJTElUWSBPRiBTVUNIIERB
TUFHRS4KKyAqLworCisjaW5jbHVkZSAiY29uZmlnLmgiCisjaW5jbHVkZSAiTW9kdWxlTG9hZGVy
T2JqZWN0LmgiCisKKyNpbmNsdWRlICJCdWlsdGluTmFtZXMuaCIKKyNpbmNsdWRlICJFcnJvci5o
IgorI2luY2x1ZGUgIkV4Y2VwdGlvbi5oIgorI2luY2x1ZGUgIkpTQ0lubGluZXMuaCIKKyNpbmNs
dWRlICJKU0dsb2JhbE9iamVjdEZ1bmN0aW9ucy5oIgorI2luY2x1ZGUgIkpTSW50ZXJuYWxQcm9t
aXNlLmgiCisjaW5jbHVkZSAiSlNJbnRlcm5hbFByb21pc2VEZWZlcnJlZC5oIgorI2luY2x1ZGUg
IkpTTWFwLmgiCisjaW5jbHVkZSAiSlNNb2R1bGVSZWNvcmQuaCIKKyNpbmNsdWRlICJNb2R1bGVB
bmFseXplci5oIgorI2luY2x1ZGUgIk5vZGVzLmgiCisjaW5jbHVkZSAiUGFyc2VyLmgiCisjaW5j
bHVkZSAiUGFyc2VyRXJyb3IuaCIKKworbmFtZXNwYWNlIEpTQyB7CisKK3N0YXRpYyBFbmNvZGVk
SlNWYWx1ZSBKU0NfSE9TVF9DQUxMIG1vZHVsZUxvYWRlck9iamVjdFBhcnNlTW9kdWxlKEV4ZWNT
dGF0ZSopOworc3RhdGljIEVuY29kZWRKU1ZhbHVlIEpTQ19IT1NUX0NBTEwgbW9kdWxlTG9hZGVy
T2JqZWN0UmVxdWVzdGVkTW9kdWxlcyhFeGVjU3RhdGUqKTsKK3N0YXRpYyBFbmNvZGVkSlNWYWx1
ZSBKU0NfSE9TVF9DQUxMIG1vZHVsZUxvYWRlck9iamVjdFJlc29sdmUoRXhlY1N0YXRlKik7Citz
dGF0aWMgRW5jb2RlZEpTVmFsdWUgSlNDX0hPU1RfQ0FMTCBtb2R1bGVMb2FkZXJPYmplY3RGZXRj
aChFeGVjU3RhdGUqKTsKK3N0YXRpYyBFbmNvZGVkSlNWYWx1ZSBKU0NfSE9TVF9DQUxMIG1vZHVs
ZUxvYWRlck9iamVjdFRyYW5zbGF0ZShFeGVjU3RhdGUqKTsKK3N0YXRpYyBFbmNvZGVkSlNWYWx1
ZSBKU0NfSE9TVF9DQUxMIG1vZHVsZUxvYWRlck9iamVjdEluc3RhbnRpYXRlKEV4ZWNTdGF0ZSop
OworCit9CisKKyNpbmNsdWRlICJNb2R1bGVMb2FkZXJPYmplY3QubHV0LmgiCisKK25hbWVzcGFj
ZSBKU0MgeworCitTVEFUSUNfQVNTRVJUX0lTX1RSSVZJQUxMWV9ERVNUUlVDVElCTEUoTW9kdWxl
TG9hZGVyT2JqZWN0KTsKKworY29uc3QgQ2xhc3NJbmZvIE1vZHVsZUxvYWRlck9iamVjdDo6c19p
bmZvID0geyAiTW9kdWxlTG9hZGVyIiwgJkJhc2U6OnNfaW5mbywgJm1vZHVsZUxvYWRlck9iamVj
dFRhYmxlLCBDUkVBVEVfTUVUSE9EX1RBQkxFKE1vZHVsZUxvYWRlck9iamVjdCkgfTsKKworLyog
U291cmNlIGZvciBNb2R1bGVMb2FkZXJPYmplY3QubHV0LmgKK0BiZWdpbiBtb2R1bGVMb2FkZXJP
YmplY3RUYWJsZQorICAgIHNldFN0YXRlVG9NYXggICAgICAgICAgICAgIG1vZHVsZUxvYWRlck9i
amVjdFNldFN0YXRlVG9NYXggICAgICAgICAgICAgIERvbnRFbnVtfEZ1bmN0aW9uIDIKKyAgICBu
ZXdSZWdpc3RyeUVudHJ5ICAgICAgICAgICBtb2R1bGVMb2FkZXJPYmplY3ROZXdSZWdpc3RyeUVu
dHJ5ICAgICAgICAgICBEb250RW51bXxGdW5jdGlvbiAxCisgICAgZW5zdXJlUmVnaXN0ZXJlZCAg
ICAgICAgICAgbW9kdWxlTG9hZGVyT2JqZWN0RW5zdXJlUmVnaXN0ZXJlZCAgICAgICAgICAgRG9u
dEVudW18RnVuY3Rpb24gMQorICAgIGZvcmNlRnVsZmlsbFByb21pc2UgICAgICAgIG1vZHVsZUxv
YWRlck9iamVjdEZvcmNlRnVsZmlsbFByb21pc2UgICAgICAgIERvbnRFbnVtfEZ1bmN0aW9uIDIK
KyAgICBmdWxmaWxsRmV0Y2ggICAgICAgICAgICAgICBtb2R1bGVMb2FkZXJPYmplY3RGdWxmaWxs
RmV0Y2ggICAgICAgICAgICAgICBEb250RW51bXxGdW5jdGlvbiAyCisgICAgZnVsZmlsbFRyYW5z
bGF0ZSAgICAgICAgICAgbW9kdWxlTG9hZGVyT2JqZWN0RnVsZmlsbFRyYW5zbGF0ZSAgICAgICAg
ICAgRG9udEVudW18RnVuY3Rpb24gMgorICAgIGZ1bGZpbGxJbnN0YW50aWF0ZSAgICAgICAgIG1v
ZHVsZUxvYWRlck9iamVjdEZ1bGZpbGxJbnN0YW50aWF0ZSAgICAgICAgIERvbnRFbnVtfEZ1bmN0
aW9uIDIKKyAgICBjb21taXRJbnN0YW50aWF0ZWQgICAgICAgICBtb2R1bGVMb2FkZXJPYmplY3RD
b21taXRJbnN0YW50aWF0ZWQgICAgICAgICBEb250RW51bXxGdW5jdGlvbiAzCisgICAgaW5zdGFu
dGlhdGlvbiAgICAgICAgICAgICAgbW9kdWxlTG9hZGVyT2JqZWN0SW5zdGFudGlhdGlvbiAgICAg
ICAgICAgICAgRG9udEVudW18RnVuY3Rpb24gMworICAgIHJlcXVlc3RGZXRjaCAgICAgICAgICAg
ICAgIG1vZHVsZUxvYWRlck9iamVjdFJlcXVlc3RGZXRjaCAgICAgICAgICAgICAgIERvbnRFbnVt
fEZ1bmN0aW9uIDEKKyAgICByZXF1ZXN0VHJhbnNsYXRlICAgICAgICAgICBtb2R1bGVMb2FkZXJP
YmplY3RSZXF1ZXN0VHJhbnNsYXRlICAgICAgICAgICBEb250RW51bXxGdW5jdGlvbiAxCisgICAg
cmVxdWVzdEluc3RhbnRpYXRlICAgICAgICAgbW9kdWxlTG9hZGVyT2JqZWN0UmVxdWVzdEluc3Rh
bnRpYXRlICAgICAgICAgRG9udEVudW18RnVuY3Rpb24gMQorICAgIHJlcXVlc3RSZXNvbHZlRGVw
ZW5kZW5jaWVzIG1vZHVsZUxvYWRlck9iamVjdFJlcXVlc3RSZXNvbHZlRGVwZW5kZW5jaWVzIERv
bnRFbnVtfEZ1bmN0aW9uIDEKKyAgICByZXF1ZXN0SW5zdGFudGlhdGVBbGwgICAgICBtb2R1bGVM
b2FkZXJPYmplY3RSZXF1ZXN0SW5zdGFudGlhdGVBbGwgICAgICBEb250RW51bXxGdW5jdGlvbiAx
CisgICAgcHJvdmlkZSAgICAgICAgICAgICAgICAgICAgbW9kdWxlTG9hZGVyT2JqZWN0UHJvdmlk
ZSAgICAgICAgICAgICAgICAgICAgRG9udEVudW18RnVuY3Rpb24gMworICAgIHBhcnNlTW9kdWxl
ICAgICAgICAgICAgICAgIG1vZHVsZUxvYWRlck9iamVjdFBhcnNlTW9kdWxlICAgICAgICAgICAg
ICAgIERvbnRFbnVtfEZ1bmN0aW9uIDIKKyAgICByZXF1ZXN0ZWRNb2R1bGVzICAgICAgICAgICBt
b2R1bGVMb2FkZXJPYmplY3RSZXF1ZXN0ZWRNb2R1bGVzICAgICAgICAgICBEb250RW51bXxGdW5j
dGlvbiAxCisgICAgcmVzb2x2ZSAgICAgICAgICAgICAgICAgICAgbW9kdWxlTG9hZGVyT2JqZWN0
UmVzb2x2ZSAgICAgICAgICAgICAgICAgICAgRG9udEVudW18RnVuY3Rpb24gMQorICAgIGZldGNo
ICAgICAgICAgICAgICAgICAgICAgIG1vZHVsZUxvYWRlck9iamVjdEZldGNoICAgICAgICAgICAg
ICAgICAgICAgIERvbnRFbnVtfEZ1bmN0aW9uIDEKKyAgICB0cmFuc2xhdGUgICAgICAgICAgICAg
ICAgICBtb2R1bGVMb2FkZXJPYmplY3RUcmFuc2xhdGUgICAgICAgICAgICAgICAgICBEb250RW51
bXxGdW5jdGlvbiAyCisgICAgaW5zdGFudGlhdGUgICAgICAgICAgICAgICAgbW9kdWxlTG9hZGVy
T2JqZWN0SW5zdGFudGlhdGUgICAgICAgICAgICAgICAgRG9udEVudW18RnVuY3Rpb24gMgorQGVu
ZAorKi8KKworTW9kdWxlTG9hZGVyT2JqZWN0OjpNb2R1bGVMb2FkZXJPYmplY3QoVk0mIHZtLCBT
dHJ1Y3R1cmUqIHN0cnVjdHVyZSkKKyAgICA6IEpTTm9uRmluYWxPYmplY3Qodm0sIHN0cnVjdHVy
ZSkKK3sKK30KKwordm9pZCBNb2R1bGVMb2FkZXJPYmplY3Q6OmZpbmlzaENyZWF0aW9uKFZNJiB2
bSwgSlNHbG9iYWxPYmplY3QqIGdsb2JhbE9iamVjdCkKK3sKKyAgICBCYXNlOjpmaW5pc2hDcmVh
dGlvbih2bSk7CisgICAgQVNTRVJUKGluaGVyaXRzKGluZm8oKSkpOworCisgICAgLy8gQ29uc3Rh
bnQgdmFsdWVzIGZvciB0aGUgc3RhdGUuCisgICAgcHV0RGlyZWN0V2l0aG91dFRyYW5zaXRpb24o
dm0sIElkZW50aWZpZXI6OmZyb21TdHJpbmcoJnZtLCAiRmV0Y2giKSwganNOdW1iZXIoU3RhdHVz
OjpGZXRjaCkpOworICAgIHB1dERpcmVjdFdpdGhvdXRUcmFuc2l0aW9uKHZtLCBJZGVudGlmaWVy
Ojpmcm9tU3RyaW5nKCZ2bSwgIlRyYW5zbGF0ZSIpLCBqc051bWJlcihTdGF0dXM6OlRyYW5zbGF0
ZSkpOworICAgIHB1dERpcmVjdFdpdGhvdXRUcmFuc2l0aW9uKHZtLCBJZGVudGlmaWVyOjpmcm9t
U3RyaW5nKCZ2bSwgIkluc3RhbnRpYXRlIiksIGpzTnVtYmVyKFN0YXR1czo6SW5zdGFudGlhdGUp
KTsKKyAgICBwdXREaXJlY3RXaXRob3V0VHJhbnNpdGlvbih2bSwgSWRlbnRpZmllcjo6ZnJvbVN0
cmluZygmdm0sICJSZXNvbHZlRGVwZW5kZW5jaWVzIiksIGpzTnVtYmVyKFN0YXR1czo6UmVzb2x2
ZURlcGVuZGVuY2llcykpOworICAgIHB1dERpcmVjdFdpdGhvdXRUcmFuc2l0aW9uKHZtLCBJZGVu
dGlmaWVyOjpmcm9tU3RyaW5nKCZ2bSwgIkxpbmsiKSwganNOdW1iZXIoU3RhdHVzOjpMaW5rKSk7
CisgICAgcHV0RGlyZWN0V2l0aG91dFRyYW5zaXRpb24odm0sIElkZW50aWZpZXI6OmZyb21TdHJp
bmcoJnZtLCAiUmVhZHkiKSwganNOdW1iZXIoU3RhdHVzOjpSZWFkeSkpOworCisgICAgcHV0RGly
ZWN0V2l0aG91dFRyYW5zaXRpb24odm0sIElkZW50aWZpZXI6OmZyb21TdHJpbmcoJnZtLCAicmVn
aXN0cnkiKSwgSlNNYXA6OmNyZWF0ZSh2bSwgZ2xvYmFsT2JqZWN0LT5tYXBTdHJ1Y3R1cmUoKSkp
OworfQorCitib29sIE1vZHVsZUxvYWRlck9iamVjdDo6Z2V0T3duUHJvcGVydHlTbG90KEpTT2Jq
ZWN0KiBvYmplY3QsIEV4ZWNTdGF0ZSogZXhlYywgUHJvcGVydHlOYW1lIHByb3BlcnR5TmFtZSwg
UHJvcGVydHlTbG90ICZzbG90KQoreworICAgIHJldHVybiBnZXRTdGF0aWNGdW5jdGlvblNsb3Q8
QmFzZT4oZXhlYywgbW9kdWxlTG9hZGVyT2JqZWN0VGFibGUsIGpzQ2FzdDxNb2R1bGVMb2FkZXJP
YmplY3QqPihvYmplY3QpLCBwcm9wZXJ0eU5hbWUsIHNsb3QpOworfQorCisvLyAtLS0tLS0tLS0t
LS0tLS0tLS0tLS0tLS0tLS0tLS0gRnVuY3Rpb25zIC0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t
LS0tLS0tCisKK3N0YXRpYyBTdHJpbmcgcHJpbnRhYmxlTW9kdWxlS2V5KEV4ZWNTdGF0ZSogZXhl
YywgSlNWYWx1ZSBrZXkpCit7CisgICAgaWYgKGtleS5pc1N0cmluZygpIHx8IGtleS5pc1N5bWJv
bCgpKQorICAgICAgICByZXR1cm4ga2V5LnRvUHJvcGVydHlLZXkoZXhlYykuaW1wbCgpOworICAg
IHJldHVybiBleGVjLT5wcm9wZXJ0eU5hbWVzKCkuZW1wdHlJZGVudGlmaWVyLmltcGwoKTsKK30K
KworSlNWYWx1ZSBNb2R1bGVMb2FkZXJPYmplY3Q6OnByb3ZpZGUoRXhlY1N0YXRlKiBleGVjLCBK
U1ZhbHVlIGtleSwgU3RhdHVzIHN0YXR1cywgY29uc3QgU3RyaW5nJiBzb3VyY2UpCit7CisgICAg
SlNPYmplY3QqIGZ1bmN0aW9uID0ganNDYXN0PEpTT2JqZWN0Kj4oZ2V0KGV4ZWMsIGV4ZWMtPnBy
b3BlcnR5TmFtZXMoKS5idWlsdGluTmFtZXMoKS5wcm92aWRlUHVibGljTmFtZSgpKSk7CisgICAg
Q2FsbERhdGEgY2FsbERhdGE7CisgICAgQ2FsbFR5cGUgY2FsbFR5cGUgPSBKU0M6OmdldENhbGxE
YXRhKGZ1bmN0aW9uLCBjYWxsRGF0YSk7CisgICAgQVNTRVJUKGNhbGxUeXBlICE9IENhbGxUeXBl
Tm9uZSk7CisKKyAgICBNYXJrZWRBcmd1bWVudEJ1ZmZlciBhcmd1bWVudHM7CisgICAgYXJndW1l
bnRzLmFwcGVuZChrZXkpOworICAgIGFyZ3VtZW50cy5hcHBlbmQoanNOdW1iZXIoc3RhdHVzKSk7
CisgICAgYXJndW1lbnRzLmFwcGVuZChqc1N0cmluZyhleGVjLCBzb3VyY2UpKTsKKworICAgIHJl
dHVybiBjYWxsKGV4ZWMsIGZ1bmN0aW9uLCBjYWxsVHlwZSwgY2FsbERhdGEsIHRoaXMsIGFyZ3Vt
ZW50cyk7Cit9CisKK0pTVmFsdWUgTW9kdWxlTG9hZGVyT2JqZWN0OjpyZXF1ZXN0SW5zdGFudGlh
dGVBbGwoRXhlY1N0YXRlKiBleGVjLCBKU1ZhbHVlIGtleSkKK3sKKyAgICBKU09iamVjdCogZnVu
Y3Rpb24gPSBqc0Nhc3Q8SlNPYmplY3QqPihnZXQoZXhlYywgZXhlYy0+cHJvcGVydHlOYW1lcygp
LmJ1aWx0aW5OYW1lcygpLnJlcXVlc3RJbnN0YW50aWF0ZUFsbFB1YmxpY05hbWUoKSkpOworICAg
IENhbGxEYXRhIGNhbGxEYXRhOworICAgIENhbGxUeXBlIGNhbGxUeXBlID0gSlNDOjpnZXRDYWxs
RGF0YShmdW5jdGlvbiwgY2FsbERhdGEpOworICAgIEFTU0VSVChjYWxsVHlwZSAhPSBDYWxsVHlw
ZU5vbmUpOworCisgICAgTWFya2VkQXJndW1lbnRCdWZmZXIgYXJndW1lbnRzOworICAgIGFyZ3Vt
ZW50cy5hcHBlbmQoa2V5KTsKKworICAgIHJldHVybiBjYWxsKGV4ZWMsIGZ1bmN0aW9uLCBjYWxs
VHlwZSwgY2FsbERhdGEsIHRoaXMsIGFyZ3VtZW50cyk7Cit9CisKK0pTVmFsdWUgTW9kdWxlTG9h
ZGVyT2JqZWN0OjpyZXNvbHZlKEV4ZWNTdGF0ZSogZXhlYywgSlNWYWx1ZSBuYW1lLCBKU1ZhbHVl
IHJlZmVycmVyKQoreworICAgIGlmIChPcHRpb25zOjpkdW1wTW9kdWxlTG9hZGluZ1N0YXRlKCkp
CisgICAgICAgIGRhdGFMb2coIkxvYWRlciBbcmVzb2x2ZV0gIiwgcHJpbnRhYmxlTW9kdWxlS2V5
KGV4ZWMsIG5hbWUpLCAiXG4iKTsKKworICAgIEpTR2xvYmFsT2JqZWN0KiBnbG9iYWxPYmplY3Qg
PSBleGVjLT5sZXhpY2FsR2xvYmFsT2JqZWN0KCk7CisgICAgaWYgKGdsb2JhbE9iamVjdC0+Z2xv
YmFsT2JqZWN0TWV0aG9kVGFibGUoKS0+bG9hZGVyUmVzb2x2ZSkKKyAgICAgICAgcmV0dXJuIGds
b2JhbE9iamVjdC0+Z2xvYmFsT2JqZWN0TWV0aG9kVGFibGUoKS0+bG9hZGVyUmVzb2x2ZShnbG9i
YWxPYmplY3QsIGV4ZWMsIG5hbWUsIHJlZmVycmVyKTsKKyAgICBKU0ludGVybmFsUHJvbWlzZURl
ZmVycmVkKiBkZWZlcnJlZCA9IEpTSW50ZXJuYWxQcm9taXNlRGVmZXJyZWQ6OmNyZWF0ZShleGVj
LCBnbG9iYWxPYmplY3QpOworICAgIGRlZmVycmVkLT5yZXNvbHZlKGV4ZWMsIG5hbWUpOworICAg
IHJldHVybiBkZWZlcnJlZC0+cHJvbWlzZSgpOworfQorCitKU1ZhbHVlIE1vZHVsZUxvYWRlck9i
amVjdDo6ZmV0Y2goRXhlY1N0YXRlKiBleGVjLCBKU1ZhbHVlIGtleSkKK3sKKyAgICBpZiAoT3B0
aW9uczo6ZHVtcE1vZHVsZUxvYWRpbmdTdGF0ZSgpKQorICAgICAgICBkYXRhTG9nKCJMb2FkZXIg
W2ZldGNoXSAiLCBwcmludGFibGVNb2R1bGVLZXkoZXhlYywga2V5KSwgIlxuIik7CisKKyAgICBK
U0dsb2JhbE9iamVjdCogZ2xvYmFsT2JqZWN0ID0gZXhlYy0+bGV4aWNhbEdsb2JhbE9iamVjdCgp
OworICAgIGlmIChnbG9iYWxPYmplY3QtPmdsb2JhbE9iamVjdE1ldGhvZFRhYmxlKCktPmxvYWRl
ckZldGNoKQorICAgICAgICByZXR1cm4gZ2xvYmFsT2JqZWN0LT5nbG9iYWxPYmplY3RNZXRob2RU
YWJsZSgpLT5sb2FkZXJGZXRjaChnbG9iYWxPYmplY3QsIGV4ZWMsIGtleSk7CisgICAgSlNJbnRl
cm5hbFByb21pc2VEZWZlcnJlZCogZGVmZXJyZWQgPSBKU0ludGVybmFsUHJvbWlzZURlZmVycmVk
OjpjcmVhdGUoZXhlYywgZ2xvYmFsT2JqZWN0KTsKKyAgICBTdHJpbmcgbW9kdWxlS2V5ID0ga2V5
LnRvU3RyaW5nKGV4ZWMpLT52YWx1ZShleGVjKTsKKyAgICBpZiAoZXhlYy0+aGFkRXhjZXB0aW9u
KCkpIHsKKyAgICAgICAgSlNWYWx1ZSBleGNlcHRpb24gPSBleGVjLT5leGNlcHRpb24oKS0+dmFs
dWUoKTsKKyAgICAgICAgZXhlYy0+Y2xlYXJFeGNlcHRpb24oKTsKKyAgICAgICAgZGVmZXJyZWQt
PnJlamVjdChleGVjLCBleGNlcHRpb24pOworICAgICAgICByZXR1cm4gZGVmZXJyZWQtPnByb21p
c2UoKTsKKyAgICB9CisgICAgZGVmZXJyZWQtPnJlamVjdChleGVjLCBjcmVhdGVFcnJvcihleGVj
LCBtYWtlU3RyaW5nKCJDb3VsZCBub3Qgb3BlbiB0aGUgbW9kdWxlICciLCBtb2R1bGVLZXksICIn
LiIpKSk7CisgICAgcmV0dXJuIGRlZmVycmVkLT5wcm9taXNlKCk7Cit9CisKK0pTVmFsdWUgTW9k
dWxlTG9hZGVyT2JqZWN0Ojp0cmFuc2xhdGUoRXhlY1N0YXRlKiBleGVjLCBKU1ZhbHVlIGtleSwg
SlNWYWx1ZSBwYXlsb2FkKQoreworICAgIGlmIChPcHRpb25zOjpkdW1wTW9kdWxlTG9hZGluZ1N0
YXRlKCkpCisgICAgICAgIGRhdGFMb2coIkxvYWRlciBbdHJhbnNsYXRlXSAiLCBwcmludGFibGVN
b2R1bGVLZXkoZXhlYywga2V5KSwgIlxuIik7CisKKyAgICBKU0dsb2JhbE9iamVjdCogZ2xvYmFs
T2JqZWN0ID0gZXhlYy0+bGV4aWNhbEdsb2JhbE9iamVjdCgpOworICAgIGlmIChnbG9iYWxPYmpl
Y3QtPmdsb2JhbE9iamVjdE1ldGhvZFRhYmxlKCktPmxvYWRlclRyYW5zbGF0ZSkKKyAgICAgICAg
cmV0dXJuIGdsb2JhbE9iamVjdC0+Z2xvYmFsT2JqZWN0TWV0aG9kVGFibGUoKS0+bG9hZGVyVHJh
bnNsYXRlKGdsb2JhbE9iamVjdCwgZXhlYywga2V5LCBwYXlsb2FkKTsKKyAgICBKU0ludGVybmFs
UHJvbWlzZURlZmVycmVkKiBkZWZlcnJlZCA9IEpTSW50ZXJuYWxQcm9taXNlRGVmZXJyZWQ6OmNy
ZWF0ZShleGVjLCBnbG9iYWxPYmplY3QpOworICAgIGRlZmVycmVkLT5yZXNvbHZlKGV4ZWMsIHBh
eWxvYWQpOworICAgIHJldHVybiBkZWZlcnJlZC0+cHJvbWlzZSgpOworfQorCitKU1ZhbHVlIE1v
ZHVsZUxvYWRlck9iamVjdDo6aW5zdGFudGlhdGUoRXhlY1N0YXRlKiBleGVjLCBKU1ZhbHVlIGtl
eSwgSlNWYWx1ZSBzb3VyY2UpCit7CisgICAgaWYgKE9wdGlvbnM6OmR1bXBNb2R1bGVMb2FkaW5n
U3RhdGUoKSkKKyAgICAgICAgZGF0YUxvZygiTG9hZGVyIFtpbnN0YW50aWF0ZV0gIiwgcHJpbnRh
YmxlTW9kdWxlS2V5KGV4ZWMsIGtleSksICJcbiIpOworCisgICAgSlNHbG9iYWxPYmplY3QqIGds
b2JhbE9iamVjdCA9IGV4ZWMtPmxleGljYWxHbG9iYWxPYmplY3QoKTsKKyAgICBpZiAoZ2xvYmFs
T2JqZWN0LT5nbG9iYWxPYmplY3RNZXRob2RUYWJsZSgpLT5sb2FkZXJJbnN0YW50aWF0ZSkKKyAg
ICAgICAgcmV0dXJuIGdsb2JhbE9iamVjdC0+Z2xvYmFsT2JqZWN0TWV0aG9kVGFibGUoKS0+bG9h
ZGVySW5zdGFudGlhdGUoZ2xvYmFsT2JqZWN0LCBleGVjLCBrZXksIHNvdXJjZSk7CisgICAgSlNJ
bnRlcm5hbFByb21pc2VEZWZlcnJlZCogZGVmZXJyZWQgPSBKU0ludGVybmFsUHJvbWlzZURlZmVy
cmVkOjpjcmVhdGUoZXhlYywgZ2xvYmFsT2JqZWN0KTsKKyAgICBkZWZlcnJlZC0+cmVzb2x2ZShl
eGVjLCBqc1VuZGVmaW5lZCgpKTsKKyAgICByZXR1cm4gZGVmZXJyZWQtPnByb21pc2UoKTsKK30K
KworLy8gLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tIEhvb2sgRnVuY3Rpb25zIC0tLS0t
LS0tLS0tLS0tLS0tLS0tLS0tLS0tLQorCitFbmNvZGVkSlNWYWx1ZSBKU0NfSE9TVF9DQUxMIG1v
ZHVsZUxvYWRlck9iamVjdFBhcnNlTW9kdWxlKEV4ZWNTdGF0ZSogZXhlYykKK3sKKyAgICBWTSYg
dm0gPSBleGVjLT52bSgpOworICAgIElkZW50aWZpZXIgbW9kdWxlS2V5ID0gZXhlYy0+YXJndW1l
bnQoMCkudG9Qcm9wZXJ0eUtleShleGVjKTsKKyAgICBpZiAoZXhlYy0+aGFkRXhjZXB0aW9uKCkp
CisgICAgICAgIHJldHVybiBKU1ZhbHVlOjplbmNvZGUoanNVbmRlZmluZWQoKSk7CisKKyAgICBT
dHJpbmcgc291cmNlID0gZXhlYy0+YXJndW1lbnQoMSkudG9TdHJpbmcoZXhlYyktPnZhbHVlKGV4
ZWMpOworICAgIGlmIChleGVjLT5oYWRFeGNlcHRpb24oKSkKKyAgICAgICAgcmV0dXJuIEpTVmFs
dWU6OmVuY29kZShqc1VuZGVmaW5lZCgpKTsKKworICAgIFNvdXJjZUNvZGUgc291cmNlQ29kZSA9
IG1ha2VTb3VyY2Uoc291cmNlLCBtb2R1bGVLZXkuaW1wbCgpKTsKKworICAgIFBhcnNlckVycm9y
IGVycm9yOworICAgIHN0ZDo6dW5pcXVlX3B0cjxNb2R1bGVQcm9ncmFtTm9kZT4gbW9kdWxlUHJv
Z3JhbU5vZGUgPSBwYXJzZTxNb2R1bGVQcm9ncmFtTm9kZT4oCisgICAgICAgICZ2bSwgc291cmNl
Q29kZSwgSWRlbnRpZmllcigpLCBKU1BhcnNlckJ1aWx0aW5Nb2RlOjpOb3RCdWlsdGluLAorICAg
ICAgICBKU1BhcnNlclN0cmljdE1vZGU6OlN0cmljdCwgU291cmNlUGFyc2VNb2RlOjpNb2R1bGVB
bmFseXplTW9kZSwgZXJyb3IpOworCisgICAgaWYgKGVycm9yLmlzVmFsaWQoKSkgeworICAgICAg
ICB0aHJvd1ZNRXJyb3IoZXhlYywgZXJyb3IudG9FcnJvck9iamVjdChleGVjLT5sZXhpY2FsR2xv
YmFsT2JqZWN0KCksIHNvdXJjZUNvZGUpKTsKKyAgICAgICAgcmV0dXJuIEpTVmFsdWU6OmVuY29k
ZShqc1VuZGVmaW5lZCgpKTsKKyAgICB9CisgICAgQVNTRVJUKG1vZHVsZVByb2dyYW1Ob2RlKTsK
KworICAgIE1vZHVsZUFuYWx5emVyIG1vZHVsZUFuYWx5emVyKGV4ZWMsIG1vZHVsZVByb2dyYW1O
b2RlLT52YXJEZWNsYXJhdGlvbnMoKSwgbW9kdWxlUHJvZ3JhbU5vZGUtPmxleGljYWxWYXJpYWJs
ZXMoKSk7CisgICAgSlNNb2R1bGVSZWNvcmQqIG1vZHVsZVJlY29yZCA9IG1vZHVsZUFuYWx5emVy
LmFuYWx5emUoKm1vZHVsZVByb2dyYW1Ob2RlKTsKKyAgICByZXR1cm4gSlNWYWx1ZTo6ZW5jb2Rl
KG1vZHVsZVJlY29yZCk7Cit9CisKK0VuY29kZWRKU1ZhbHVlIEpTQ19IT1NUX0NBTEwgbW9kdWxl
TG9hZGVyT2JqZWN0UmVxdWVzdGVkTW9kdWxlcyhFeGVjU3RhdGUqIGV4ZWMpCit7CisgICAgSlNN
b2R1bGVSZWNvcmQqIG1vZHVsZVJlY29yZCA9IGpzQ2FzdDxKU01vZHVsZVJlY29yZCo+KGV4ZWMt
PmFyZ3VtZW50KDApKTsKKyAgICBpZiAoIW1vZHVsZVJlY29yZCkKKyAgICAgICAgcmV0dXJuIEpT
VmFsdWU6OmVuY29kZShjb25zdHJ1Y3RFbXB0eUFycmF5KGV4ZWMsIG51bGxwdHIpKTsKKworICAg
IEpTQXJyYXkqIHJlc3VsdCA9IGNvbnN0cnVjdEVtcHR5QXJyYXkoZXhlYywgbnVsbHB0ciwgbW9k
dWxlUmVjb3JkLT5yZXF1ZXN0ZWRNb2R1bGVzKCkuc2l6ZSgpKTsKKyAgICBzaXplX3QgaSA9IDA7
CisgICAgZm9yIChhdXRvJiBrZXkgOiBtb2R1bGVSZWNvcmQtPnJlcXVlc3RlZE1vZHVsZXMoKSkK
KyAgICAgICAgcmVzdWx0LT5wdXREaXJlY3RJbmRleChleGVjLCBpKyssIGpzU3RyaW5nKGV4ZWMs
IGtleS5nZXQoKSkpOworCisgICAgcmV0dXJuIEpTVmFsdWU6OmVuY29kZShyZXN1bHQpOworfQor
CitFbmNvZGVkSlNWYWx1ZSBKU0NfSE9TVF9DQUxMIG1vZHVsZUxvYWRlck9iamVjdFJlc29sdmUo
RXhlY1N0YXRlKiBleGVjKQoreworICAgIC8vIEhvb2sgcG9pbnQsIExvYWRlci5yZXNvbHZlLgor
ICAgIC8vIGh0dHBzOi8vd2hhdHdnLmdpdGh1Yi5pby9sb2FkZXIvI2Jyb3dzZXItcmVzb2x2ZQor
ICAgIC8vIFRha2UgdGhlIG5hbWUgYW5kIHJlc29sdmUgaXQgdG8gdGhlIHVuaXF1ZSBpZGVudGlm
aWVyIGZvciB0aGUgcmVzb3VyY2UgbG9jYXRpb24uCisgICAgLy8gRm9yIGV4YW1wbGUsIHRha2Ug
dGhlICJqcXVlcnkiIGFuZCByZXR1cm4gdGhlIFVSTCBmb3IgdGhlIHJlc291cmNlLgorICAgIE1v
ZHVsZUxvYWRlck9iamVjdCogbG9hZGVyID0ganNEeW5hbWljQ2FzdDxNb2R1bGVMb2FkZXJPYmpl
Y3QqPihleGVjLT50aGlzVmFsdWUoKSk7CisgICAgaWYgKCFsb2FkZXIpCisgICAgICAgIHJldHVy
biBKU1ZhbHVlOjplbmNvZGUoanNVbmRlZmluZWQoKSk7CisgICAgcmV0dXJuIEpTVmFsdWU6OmVu
Y29kZShsb2FkZXItPnJlc29sdmUoZXhlYywgZXhlYy0+YXJndW1lbnQoMCksIGV4ZWMtPmFyZ3Vt
ZW50KDEpKSk7Cit9CisKK0VuY29kZWRKU1ZhbHVlIEpTQ19IT1NUX0NBTEwgbW9kdWxlTG9hZGVy
T2JqZWN0RmV0Y2goRXhlY1N0YXRlKiBleGVjKQoreworICAgIC8vIEhvb2sgcG9pbnQsIExvYWRl
ci5mZXRjaAorICAgIC8vIGh0dHBzOi8vd2hhdHdnLmdpdGh1Yi5pby9sb2FkZXIvI2Jyb3dzZXIt
ZmV0Y2gKKyAgICAvLyBUYWtlIHRoZSBrZXkgYW5kIGZldGNoIHRoZSByZXNvdXJjZSBhY3R1YWxs
eS4KKyAgICAvLyBGb3IgZXhhbXBsZSwgSmF2YVNjcmlwdENvcmUgc2hlbGwgY2FuIHByb3ZpZGUg
dGhlIGhvb2sgZmV0Y2hpbmcgdGhlIHJlc291cmNlCisgICAgLy8gZnJvbSB0aGUgbG9jYWwgZmls
ZSBzeXN0ZW0uCisgICAgTW9kdWxlTG9hZGVyT2JqZWN0KiBsb2FkZXIgPSBqc0R5bmFtaWNDYXN0
PE1vZHVsZUxvYWRlck9iamVjdCo+KGV4ZWMtPnRoaXNWYWx1ZSgpKTsKKyAgICBpZiAoIWxvYWRl
cikKKyAgICAgICAgcmV0dXJuIEpTVmFsdWU6OmVuY29kZShqc1VuZGVmaW5lZCgpKTsKKyAgICBy
ZXR1cm4gSlNWYWx1ZTo6ZW5jb2RlKGxvYWRlci0+ZmV0Y2goZXhlYywgZXhlYy0+YXJndW1lbnQo
MCkpKTsKK30KKworRW5jb2RlZEpTVmFsdWUgSlNDX0hPU1RfQ0FMTCBtb2R1bGVMb2FkZXJPYmpl
Y3RUcmFuc2xhdGUoRXhlY1N0YXRlKiBleGVjKQoreworICAgIC8vIEhvb2sgcG9pbnQsIExvYWRl
ci50cmFuc2xhdGUKKyAgICAvLyBodHRwczovL3doYXR3Zy5naXRodWIuaW8vbG9hZGVyLyNicm93
c2VyLXRyYW5zbGF0ZQorICAgIC8vIFRha2UgdGhlIGtleSBhbmQgdGhlIGZldGNoZWQgc291cmNl
IGNvZGUgYW5kIHRyYW5zbGF0ZSBpdCB0byB0aGUgRVM2IHNvdXJjZSBjb2RlLgorICAgIC8vIFR5
cGljYWxseSBpdCBpcyB1c2VkIGJ5IHRoZSB0cmFuc3BpbGVycy4KKyAgICBNb2R1bGVMb2FkZXJP
YmplY3QqIGxvYWRlciA9IGpzRHluYW1pY0Nhc3Q8TW9kdWxlTG9hZGVyT2JqZWN0Kj4oZXhlYy0+
dGhpc1ZhbHVlKCkpOworICAgIGlmICghbG9hZGVyKQorICAgICAgICByZXR1cm4gSlNWYWx1ZTo6
ZW5jb2RlKGpzVW5kZWZpbmVkKCkpOworICAgIHJldHVybiBKU1ZhbHVlOjplbmNvZGUobG9hZGVy
LT50cmFuc2xhdGUoZXhlYywgZXhlYy0+YXJndW1lbnQoMCksIGV4ZWMtPmFyZ3VtZW50KDEpKSk7
Cit9CisKK0VuY29kZWRKU1ZhbHVlIEpTQ19IT1NUX0NBTEwgbW9kdWxlTG9hZGVyT2JqZWN0SW5z
dGFudGlhdGUoRXhlY1N0YXRlKiBleGVjKQoreworICAgIC8vIEhvb2sgcG9pbnQsIExvYWRlci5p
bnN0YW50aWF0ZQorICAgIC8vIGh0dHBzOi8vd2hhdHdnLmdpdGh1Yi5pby9sb2FkZXIvI2Jyb3dz
ZXItaW5zdGFudGlhdGUKKyAgICAvLyBUYWtlIHRoZSBrZXkgYW5kIHRoZSB0cmFuc2xhdGVkIHNv
dXJjZSBjb2RlLCBhbmQgaW5zdGFudGlhdGUgdGhlIG1vZHVsZSByZWNvcmQKKyAgICAvLyBieSBw
YXJzaW5nIHRoZSBtb2R1bGUgc291cmNlIGNvZGUuCisgICAgLy8gSXQgaGFzIHRoZSBjaGFuY2Ug
dG8gcHJvdmlkZSB0aGUgb3B0aW9uYWwgbW9kdWxlIGluc3RhbmNlIHRoYXQgaXMgZGlmZmVyZW50
IGZyb20KKyAgICAvLyB0aGUgb3JkaW5hcnkgb25lLgorICAgIE1vZHVsZUxvYWRlck9iamVjdCog
bG9hZGVyID0ganNEeW5hbWljQ2FzdDxNb2R1bGVMb2FkZXJPYmplY3QqPihleGVjLT50aGlzVmFs
dWUoKSk7CisgICAgaWYgKCFsb2FkZXIpCisgICAgICAgIHJldHVybiBKU1ZhbHVlOjplbmNvZGUo
anNVbmRlZmluZWQoKSk7CisgICAgcmV0dXJuIEpTVmFsdWU6OmVuY29kZShsb2FkZXItPmluc3Rh
bnRpYXRlKGV4ZWMsIGV4ZWMtPmFyZ3VtZW50KDApLCBleGVjLT5hcmd1bWVudCgxKSkpOworfQor
Cit9IC8vIG5hbWVzcGFjZSBKU0MKZGlmZiAtLWdpdCBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9y
dW50aW1lL01vZHVsZUxvYWRlck9iamVjdC5oIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRp
bWUvTW9kdWxlTG9hZGVyT2JqZWN0LmgKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMC4uZmQ2YzYwMTA4ODRhNGY0MzQ5ZjA5
ZmZmNzkzZjQyYTVjZTIwODQwNwotLS0gL2Rldi9udWxsCisrKyBiL1NvdXJjZS9KYXZhU2NyaXB0
Q29yZS9ydW50aW1lL01vZHVsZUxvYWRlck9iamVjdC5oCkBAIC0wLDAgKzEsODEgQEAKKy8qCisg
KiBDb3B5cmlnaHQgKEMpIDIwMTUgQXBwbGUgSW5jLiBBbGwgUmlnaHRzIFJlc2VydmVkLgorICoK
KyAqIFJlZGlzdHJpYnV0aW9uIGFuZCB1c2UgaW4gc291cmNlIGFuZCBiaW5hcnkgZm9ybXMsIHdp
dGggb3Igd2l0aG91dAorICogbW9kaWZpY2F0aW9uLCBhcmUgcGVybWl0dGVkIHByb3ZpZGVkIHRo
YXQgdGhlIGZvbGxvd2luZyBjb25kaXRpb25zCisgKiBhcmUgbWV0OgorICogMS4gUmVkaXN0cmli
dXRpb25zIG9mIHNvdXJjZSBjb2RlIG11c3QgcmV0YWluIHRoZSBhYm92ZSBjb3B5cmlnaHQKKyAq
ICAgIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlz
Y2xhaW1lci4KKyAqIDIuIFJlZGlzdHJpYnV0aW9ucyBpbiBiaW5hcnkgZm9ybSBtdXN0IHJlcHJv
ZHVjZSB0aGUgYWJvdmUgY29weXJpZ2h0CisgKiAgICBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25k
aXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIgaW4gdGhlCisgKiAgICBkb2N1bWVu
dGF0aW9uIGFuZC9vciBvdGhlciBtYXRlcmlhbHMgcHJvdmlkZWQgd2l0aCB0aGUgZGlzdHJpYnV0
aW9uLgorICoKKyAqIFRISVMgU09GVFdBUkUgSVMgUFJPVklERUQgQlkgQVBQTEUgSU5DLiBgYEFT
IElTJycgQU5EIEFOWQorICogRVhQUkVTUyBPUiBJTVBMSUVEIFdBUlJBTlRJRVMsIElOQ0xVRElO
RywgQlVUIE5PVCBMSU1JVEVEIFRPLCBUSEUKKyAqIElNUExJRUQgV0FSUkFOVElFUyBPRiBNRVJD
SEFOVEFCSUxJVFkgQU5EIEZJVE5FU1MgRk9SIEEgUEFSVElDVUxBUgorICogUFVSUE9TRSBBUkUg
RElTQ0xBSU1FRC4gIElOIE5PIEVWRU5UIFNIQUxMIEFQUExFIElOQy4gT1IKKyAqIENPTlRSSUJV
VE9SUyBCRSBMSUFCTEUgRk9SIEFOWSBESVJFQ1QsIElORElSRUNULCBJTkNJREVOVEFMLCBTUEVD
SUFMLAorICogRVhFTVBMQVJZLCBPUiBDT05TRVFVRU5USUFMIERBTUFHRVMgKElOQ0xVRElORywg
QlVUIE5PVCBMSU1JVEVEIFRPLAorICogUFJPQ1VSRU1FTlQgT0YgU1VCU1RJVFVURSBHT09EUyBP
UiBTRVJWSUNFUzsgTE9TUyBPRiBVU0UsIERBVEEsIE9SCisgKiBQUk9GSVRTOyBPUiBCVVNJTkVT
UyBJTlRFUlJVUFRJT04pIEhPV0VWRVIgQ0FVU0VEIEFORCBPTiBBTlkgVEhFT1JZCisgKiBPRiBM
SUFCSUxJVFksIFdIRVRIRVIgSU4gQ09OVFJBQ1QsIFNUUklDVCBMSUFCSUxJVFksIE9SIFRPUlQK
KyAqIChJTkNMVURJTkcgTkVHTElHRU5DRSBPUiBPVEhFUldJU0UpIEFSSVNJTkcgSU4gQU5ZIFdB
WSBPVVQgT0YgVEhFIFVTRQorICogT0YgVEhJUyBTT0ZUV0FSRSwgRVZFTiBJRiBBRFZJU0VEIE9G
IFRIRSBQT1NTSUJJTElUWSBPRiBTVUNIIERBTUFHRS4KKyAqLworCisjaWZuZGVmIE1vZHVsZUxv
YWRlck9iamVjdF9oCisjZGVmaW5lIE1vZHVsZUxvYWRlck9iamVjdF9oCisKKyNpbmNsdWRlICJK
U09iamVjdC5oIgorCituYW1lc3BhY2UgSlNDIHsKKworY2xhc3MgTW9kdWxlTG9hZGVyT2JqZWN0
IDogcHVibGljIEpTTm9uRmluYWxPYmplY3QgeworcHJpdmF0ZToKKyAgICBNb2R1bGVMb2FkZXJP
YmplY3QoVk0mLCBTdHJ1Y3R1cmUqKTsKK3B1YmxpYzoKKyAgICB0eXBlZGVmIEpTTm9uRmluYWxP
YmplY3QgQmFzZTsKKyAgICBzdGF0aWMgY29uc3QgdW5zaWduZWQgU3RydWN0dXJlRmxhZ3MgPSBC
YXNlOjpTdHJ1Y3R1cmVGbGFncyB8IE92ZXJyaWRlc0dldE93blByb3BlcnR5U2xvdDsKKworICAg
IGVudW0gU3RhdHVzIHsKKyAgICAgICAgRmV0Y2ggPSAxLAorICAgICAgICBUcmFuc2xhdGUgPSAy
LAorICAgICAgICBJbnN0YW50aWF0ZSA9IDMsCisgICAgICAgIFJlc29sdmVEZXBlbmRlbmNpZXMg
PSA0LAorICAgICAgICBMaW5rID0gNSwKKyAgICAgICAgUmVhZHkgPSA2LAorICAgIH07CisKKyAg
ICBzdGF0aWMgTW9kdWxlTG9hZGVyT2JqZWN0KiBjcmVhdGUoVk0mIHZtLCBKU0dsb2JhbE9iamVj
dCogZ2xvYmFsT2JqZWN0LCBTdHJ1Y3R1cmUqIHN0cnVjdHVyZSkKKyAgICB7CisgICAgICAgIE1v
ZHVsZUxvYWRlck9iamVjdCogb2JqZWN0ID0gbmV3IChOb3ROdWxsLCBhbGxvY2F0ZUNlbGw8TW9k
dWxlTG9hZGVyT2JqZWN0Pih2bS5oZWFwKSkgTW9kdWxlTG9hZGVyT2JqZWN0KHZtLCBzdHJ1Y3R1
cmUpOworICAgICAgICBvYmplY3QtPmZpbmlzaENyZWF0aW9uKHZtLCBnbG9iYWxPYmplY3QpOwor
ICAgICAgICByZXR1cm4gb2JqZWN0OworICAgIH0KKworICAgIERFQ0xBUkVfSU5GTzsKKworICAg
IHN0YXRpYyBTdHJ1Y3R1cmUqIGNyZWF0ZVN0cnVjdHVyZShWTSYgdm0sIEpTR2xvYmFsT2JqZWN0
KiBnbG9iYWxPYmplY3QsIEpTVmFsdWUgcHJvdG90eXBlKQorICAgIHsKKyAgICAgICAgcmV0dXJu
IFN0cnVjdHVyZTo6Y3JlYXRlKHZtLCBnbG9iYWxPYmplY3QsIHByb3RvdHlwZSwgVHlwZUluZm8o
T2JqZWN0VHlwZSwgU3RydWN0dXJlRmxhZ3MpLCBpbmZvKCkpOworICAgIH0KKworICAgIC8vIEFQ
SXMgdG8gY29udHJvbCB0aGUgbW9kdWxlIGxvYWRlci4KKyAgICBKU1ZhbHVlIHByb3ZpZGUoRXhl
Y1N0YXRlKiwgSlNWYWx1ZSBrZXksIFN0YXR1cywgY29uc3QgU3RyaW5nJik7CisgICAgSlNWYWx1
ZSByZXF1ZXN0SW5zdGFudGlhdGVBbGwoRXhlY1N0YXRlKiwgSlNWYWx1ZSBrZXkpOworCisgICAg
Ly8gUGxhdGZvcm0gZGVwZW5kZW50IGhvb2tlZCBBUElzLgorICAgIEpTVmFsdWUgcmVzb2x2ZShF
eGVjU3RhdGUqLCBKU1ZhbHVlIG5hbWUsIEpTVmFsdWUgcmVmZXJyZXIpOworICAgIEpTVmFsdWUg
ZmV0Y2goRXhlY1N0YXRlKiwgSlNWYWx1ZSBrZXkpOworICAgIEpTVmFsdWUgdHJhbnNsYXRlKEV4
ZWNTdGF0ZSosIEpTVmFsdWUga2V5LCBKU1ZhbHVlIHBheWxvYWQpOworICAgIEpTVmFsdWUgaW5z
dGFudGlhdGUoRXhlY1N0YXRlKiwgSlNWYWx1ZSBrZXksIEpTVmFsdWUgc291cmNlKTsKKworICAg
IHN0YXRpYyBib29sIGdldE93blByb3BlcnR5U2xvdChKU09iamVjdCosIEV4ZWNTdGF0ZSosIFBy
b3BlcnR5TmFtZSwgUHJvcGVydHlTbG90Jik7CisKK3Byb3RlY3RlZDoKKyAgICB2b2lkIGZpbmlz
aENyZWF0aW9uKFZNJiwgSlNHbG9iYWxPYmplY3QqKTsKK307CisKK30gLy8gbmFtZXNwYWNlIEpT
QworCisjZW5kaWYgLy8gTW9kdWxlTG9hZGVyT2JqZWN0X2gKZGlmZiAtLWdpdCBhL1NvdXJjZS9K
YXZhU2NyaXB0Q29yZS9ydW50aW1lL09wdGlvbnMuaCBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9y
dW50aW1lL09wdGlvbnMuaAppbmRleCAyNTk2MDc4NzFjNjVmMjdmNGM2NjI4OWU5OTI2ZWFkMjVk
NTEzMGNiLi5lMzdiOTliZjA5NGFjNGE0NWM1NDUyMzA2MWMzNmJkZmJkYzY4MGQzIDEwMDY0NAot
LS0gYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9PcHRpb25zLmgKKysrIGIvU291cmNl
L0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvT3B0aW9ucy5oCkBAIC0zMjQsNiArMzI0LDggQEAgdHlw
ZWRlZiBjb25zdCBjaGFyKiBvcHRpb25TdHJpbmc7CiAgICAgdih1bnNpZ25lZCwgd2F0Y2hkb2cs
IDAsICJ3YXRjaGRvZyB0aW1lb3V0ICgwID0gRGlzYWJsZWQsIE4gPSBhIHRpbWVvdXQgcGVyaW9k
IG9mIE4gbWlsbGlzZWNvbmRzKSIpIFwKICAgICBcCiAgICAgdihib29sLCBkdW1wTW9kdWxlUmVj
b3JkLCBmYWxzZSwgbnVsbHB0cikgXAorICAgIHYoYm9vbCwgZHVtcE1vZHVsZUxvYWRpbmdTdGF0
ZSwgZmFsc2UsIG51bGxwdHIpIFwKKyAgICB2KGJvb2wsIGV4cG9zZUludGVybmFsTW9kdWxlTG9h
ZGVyLCBmYWxzZSwgImV4cG9zZSB0aGUgaW50ZXJuYWwgbW9kdWxlIGxvYWRlciBvYmplY3QgdG8g
dGhlIGdsb2JhbCBzcGFjZSBmb3IgZGVidWdnaW5nIikgXAogCiBjbGFzcyBPcHRpb25zIHsKIHB1
YmxpYzoKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2JpbmRpbmdzL2pzL0pTRE9NV2luZG93
QmFzZS5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9iaW5kaW5ncy9qcy9KU0RPTVdpbmRvd0Jhc2UuY3Bw
CmluZGV4IDlhYjBhOGYwZDBmYmQ3OGU1ZTU3ZDU4MDQ3N2U2NTVjYjg5NTk1ZDEuLmEyOTBkZGM5
ZTU4MWFjZDYzNDMwMTcwMGJhZjgyN2NhMWE0ZWZkMDIgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJD
b3JlL2JpbmRpbmdzL2pzL0pTRE9NV2luZG93QmFzZS5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUv
YmluZGluZ3MvanMvSlNET01XaW5kb3dCYXNlLmNwcApAQCAtNTYsNyArNTYsNyBAQCBzdGF0aWMg
Ym9vbCBzaG91bGRBbGxvd0FjY2Vzc0Zyb20oY29uc3QgSlNHbG9iYWxPYmplY3QqIHRoaXNPYmpl
Y3QsIEV4ZWNTdGF0ZSogZQogCiBjb25zdCBDbGFzc0luZm8gSlNET01XaW5kb3dCYXNlOjpzX2lu
Zm8gPSB7ICJXaW5kb3ciLCAmSlNET01HbG9iYWxPYmplY3Q6OnNfaW5mbywgMCwgQ1JFQVRFX01F
VEhPRF9UQUJMRShKU0RPTVdpbmRvd0Jhc2UpIH07CiAKLWNvbnN0IEdsb2JhbE9iamVjdE1ldGhv
ZFRhYmxlIEpTRE9NV2luZG93QmFzZTo6c19nbG9iYWxPYmplY3RNZXRob2RUYWJsZSA9IHsgJnNo
b3VsZEFsbG93QWNjZXNzRnJvbSwgJnN1cHBvcnRzUHJvZmlsaW5nLCAmc3VwcG9ydHNSaWNoU291
cmNlSW5mbywgJnNob3VsZEludGVycnVwdFNjcmlwdCwgJmphdmFTY3JpcHRSdW50aW1lRmxhZ3Ms
ICZxdWV1ZVRhc2tUb0V2ZW50TG9vcCwgJnNob3VsZEludGVycnVwdFNjcmlwdEJlZm9yZVRpbWVv
dXQgfTsKK2NvbnN0IEdsb2JhbE9iamVjdE1ldGhvZFRhYmxlIEpTRE9NV2luZG93QmFzZTo6c19n
bG9iYWxPYmplY3RNZXRob2RUYWJsZSA9IHsgJnNob3VsZEFsbG93QWNjZXNzRnJvbSwgJnN1cHBv
cnRzUHJvZmlsaW5nLCAmc3VwcG9ydHNSaWNoU291cmNlSW5mbywgJnNob3VsZEludGVycnVwdFNj
cmlwdCwgJmphdmFTY3JpcHRSdW50aW1lRmxhZ3MsICZxdWV1ZVRhc2tUb0V2ZW50TG9vcCwgJnNo
b3VsZEludGVycnVwdFNjcmlwdEJlZm9yZVRpbWVvdXQsIG51bGxwdHIsIG51bGxwdHIsIG51bGxw
dHIsIG51bGxwdHIgfTsKIAogSlNET01XaW5kb3dCYXNlOjpKU0RPTVdpbmRvd0Jhc2UoVk0mIHZt
LCBTdHJ1Y3R1cmUqIHN0cnVjdHVyZSwgUGFzc1JlZlB0cjxET01XaW5kb3c+IHdpbmRvdywgSlNE
T01XaW5kb3dTaGVsbCogc2hlbGwpCiAgICAgOiBKU0RPTUdsb2JhbE9iamVjdCh2bSwgc3RydWN0
dXJlLCAmc2hlbGwtPndvcmxkKCksICZzX2dsb2JhbE9iamVjdE1ldGhvZFRhYmxlKQpkaWZmIC0t
Z2l0IGEvU291cmNlL1dlYkNvcmUvYmluZGluZ3MvanMvSlNXb3JrZXJHbG9iYWxTY29wZUJhc2Uu
Y3BwIGIvU291cmNlL1dlYkNvcmUvYmluZGluZ3MvanMvSlNXb3JrZXJHbG9iYWxTY29wZUJhc2Uu
Y3BwCmluZGV4IGFhYTVkYmE1NTE3MWNiOTU0MWJhNjVlMWQyNDdhYjI5YzlkOWM3YzMuLjUwNDRi
YzE3ODM1MTNiOWIxYTI2YmQzYmQxY2I1YzAwYjcwYTEwZDAgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9X
ZWJDb3JlL2JpbmRpbmdzL2pzL0pTV29ya2VyR2xvYmFsU2NvcGVCYXNlLmNwcAorKysgYi9Tb3Vy
Y2UvV2ViQ29yZS9iaW5kaW5ncy9qcy9KU1dvcmtlckdsb2JhbFNjb3BlQmFzZS5jcHAKQEAgLTQz
LDcgKzQzLDcgQEAgbmFtZXNwYWNlIFdlYkNvcmUgewogCiBjb25zdCBDbGFzc0luZm8gSlNXb3Jr
ZXJHbG9iYWxTY29wZUJhc2U6OnNfaW5mbyA9IHsgIldvcmtlckdsb2JhbFNjb3BlIiwgJkpTRE9N
R2xvYmFsT2JqZWN0OjpzX2luZm8sIDAsIENSRUFURV9NRVRIT0RfVEFCTEUoSlNXb3JrZXJHbG9i
YWxTY29wZUJhc2UpIH07CiAKLWNvbnN0IEdsb2JhbE9iamVjdE1ldGhvZFRhYmxlIEpTV29ya2Vy
R2xvYmFsU2NvcGVCYXNlOjpzX2dsb2JhbE9iamVjdE1ldGhvZFRhYmxlID0geyAmYWxsb3dzQWNj
ZXNzRnJvbSwgJnN1cHBvcnRzUHJvZmlsaW5nLCAmc3VwcG9ydHNSaWNoU291cmNlSW5mbywgJnNo
b3VsZEludGVycnVwdFNjcmlwdCwgJmphdmFTY3JpcHRSdW50aW1lRmxhZ3MsICZxdWV1ZVRhc2tU
b0V2ZW50TG9vcCwgJnNob3VsZEludGVycnVwdFNjcmlwdEJlZm9yZVRpbWVvdXQgfTsKK2NvbnN0
IEdsb2JhbE9iamVjdE1ldGhvZFRhYmxlIEpTV29ya2VyR2xvYmFsU2NvcGVCYXNlOjpzX2dsb2Jh
bE9iamVjdE1ldGhvZFRhYmxlID0geyAmYWxsb3dzQWNjZXNzRnJvbSwgJnN1cHBvcnRzUHJvZmls
aW5nLCAmc3VwcG9ydHNSaWNoU291cmNlSW5mbywgJnNob3VsZEludGVycnVwdFNjcmlwdCwgJmph
dmFTY3JpcHRSdW50aW1lRmxhZ3MsICZxdWV1ZVRhc2tUb0V2ZW50TG9vcCwgJnNob3VsZEludGVy
cnVwdFNjcmlwdEJlZm9yZVRpbWVvdXQsIG51bGxwdHIsIG51bGxwdHIsIG51bGxwdHIsIG51bGxw
dHIgfTsKIAogSlNXb3JrZXJHbG9iYWxTY29wZUJhc2U6OkpTV29ya2VyR2xvYmFsU2NvcGVCYXNl
KEpTQzo6Vk0mIHZtLCBKU0M6OlN0cnVjdHVyZSogc3RydWN0dXJlLCBQYXNzUmVmUHRyPFdvcmtl
ckdsb2JhbFNjb3BlPiBpbXBsKQogICAgIDogSlNET01HbG9iYWxPYmplY3Qodm0sIHN0cnVjdHVy
ZSwgJm5vcm1hbFdvcmxkKHZtKSwgJnNfZ2xvYmFsT2JqZWN0TWV0aG9kVGFibGUpCg==
</data>

          </attachment>
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>259447</attachid>
            <date>2015-08-19 21:52:43 -0700</date>
            <delta_ts>2015-08-20 00:32:35 -0700</delta_ts>
            <desc>Patch</desc>
            <filename>bug-147876-20150819215239.patch</filename>
            <type>text/plain</type>
            <size>127221</size>
            <attacher name="Yusuke Suzuki">ysuzuki</attacher>
            
              <data encoding="base64">U3VidmVyc2lvbiBSZXZpc2lvbjogMTg4NjgxCmRpZmYgLS1naXQgYS9Tb3VyY2UvSmF2YVNjcmlw
dENvcmUvQ2hhbmdlTG9nIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL0NoYW5nZUxvZwppbmRleCA3
MWEzNDc1ZTQ1NGM5MzE5NDA3M2U1Yjc3YjMzYmEzZTE5ZGFhYzM4Li45OTExZGM0ODE3NzQ4MDE4
ZjI3MjI2Y2EzNzIyMmFkNzJhMTVjMzNjIDEwMDY0NAotLS0gYS9Tb3VyY2UvSmF2YVNjcmlwdENv
cmUvQ2hhbmdlTG9nCisrKyBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9DaGFuZ2VMb2cKQEAgLTEs
NSArMSwxNjMgQEAKIDIwMTUtMDgtMTkgIFl1c3VrZSBTdXp1a2kgIDx1dGF0YW5lLnRlYUBnbWFp
bC5jb20+CiAKKyAgICAgICAgW0VTNl0gcHJvdG90eXBpbmcgbW9kdWxlIGxvYWRlciBpbiBKU0Mg
c2hlbGwKKyAgICAgICAgaHR0cHM6Ly9idWdzLndlYmtpdC5vcmcvc2hvd19idWcuY2dpP2lkPTE0
Nzg3NgorCisgICAgICAgIFJldmlld2VkIGJ5IE5PQk9EWSAoT09QUyEpLgorCisgICAgICAgIFRo
aXMgcGF0Y2ggaW1wbGVtZW50cyBFUzYgTW9kdWxlIExvYWRlciBwYXJ0LiBUaGUgaW1wbGVtZW50
YXRpb24gaXMgYmFzZWQgb24KKyAgICAgICAgdGhlIGxhdGVzdCBkcmFmdFsxLCAyXS4gVGhlIG5h
aXZlIGltcGxlbWVudGF0aW9uIHBvc2VzIHNldmVyYWwgcHJvYmxlbXMuCisgICAgICAgIFRoaXMg
cGF0Y2ggYXR0ZW1wdHMgdG8gc29sdmUgdGhlIHNwZWMgaXNzdWVzIGFuZCBwcm9wb3NlcyB0aGUg
Zml4WzMsIDQsIDVdLgorCisgICAgICAgIFdlIGNvbnN0cnVjdCB0aGUgSlNDIGludGVybmFsIG1v
ZHVsZSBsb2FkZXIgYmFzZWQgb24gdGhlIEVTNiBQcm9taXNlcy4KKyAgICAgICAgVGhlIGNoYWlu
IG9mIHRoZSBwcm9taXNlcyByZXByZXNlbnRzIHRoZSBkZXBlbmRlbmN5IGdyYXBoIG9mIHRoZSBt
b2R1bGVzIGFuZAorICAgICAgICBpdCBhdXRvbWF0aWNhbGx5IGVuYWJsZXMgYXN5bmNocm9ub3Vz
IG1vZHVsZSBmZXRjaGluZy4KKyAgICAgICAgVG8gbGV2ZXJhZ2UgdGhlIFByb21pc2VzIGludGVy
bmFsbHksIHdlIHVzZSB0aGUgSW50ZXJuYWxQcm9taXNlIGxhbmRlZCBpbiByMTg4NjgxLgorCisg
ICAgICAgIFRoZSBsb2FkZXIgaGFzIHNldmVyYWwgcGxhdGZvcm0tZGVwZW5kZW50IGhvb2tzLiBU
aGUgcGxhdGZvcm0gY2FuIGltcGxlbWVudAorICAgICAgICB0aGVzZSBob29rcyB0byBwcm92aWRl
IHRoZSBmdW5jdGlvbmFsaXR5IG1pc3NpbmcgaW4gdGhlIG1vZHVsZSBsb2FkZXJzLCBsaWtlCisg
ICAgICAgICJob3cgdG8gZmV0Y2ggdGhlIHJlc291cmNlcyIuIFRoZSBtZXRob2QgdGFibGUgb2Yg
dGhlIEpTR2xvYmFsT2JqZWN0IGlzIGV4dGVuZGVkCisgICAgICAgIHRvIGFjY2VwdCB0aGVzZSBo
b29rcyBmcm9tIHRoZSBwbGF0Zm9ybS4KKworICAgICAgICBUaGlzIHBhdGNoIGZvY3VzIG9uIHRo
ZSBsb2FkaW5nIHBhcnQuIFNvIHdlIGRvbid0IGNyZWF0ZSB0aGUgbW9kdWxlIGVudmlyb25tZW50
CisgICAgICAgIGFuZCBkb24ndCBsaW5rIHRoZSBtb2R1bGVzIHlldC4KKworICAgICAgICBUbyB0
ZXN0IHRoZSBjdXJyZW50IG1vZHVsZSBwcm9ncmVzcyBlYXNpbHksIHdlIGFkZCB0aGUgYC1tYCBv
cHRpb24gdG8gdGhlIEpTQyBzaGVsbC4KKyAgICAgICAgV2hlbiB0aGlzIG9wdGlvbiBpcyBzcGVj
aWZpZWQsIHdlIGxvYWQgdGhlIGdpdmVuIHNjcmlwdCBhcyB0aGUgbW9kdWxlLiBBbmQgdG8gdXNl
CisgICAgICAgIHRoZSBtb2R1bGUgbG9hZGluZyBpbnNpZGUgdGhlIEpTQyBzaGVsbCwgd2UgYWRk
ZWQgdGhlIHNpbXBsZSBsb2FkZXIgaG9vayBmb3IgZmV0Y2hpbmcuCisgICAgICAgIEl0IGZldGNo
ZXMgdGhlIG1vZHVsZSBjb250ZW50IGZyb20gdGhlIGZpbGUgc3lzdGVtLgorCisgICAgICAgIEFu
ZCB0byB1c2UgdGhlIEVTNiBNYXAgaW4gdGhlIExvYWRlciBpbXBsZW1lbnRhdGlvbiwgd2UgYWRk
ZWQgQGdldCBhbmQgQHNldCBtZXRob2RzIHRvIHRoZSBNYXAuCisgICAgICAgIEJ1dCBpdCBjb25m
bGljdHMgd2l0aCB0aGUgZXhpc3RpbmcgYGdldFByaXZhdGVOYW1lYCBtZXRob2QuIFJlbmFtZSBp
dCB0byBgbG9va1VwUHJpdmF0ZU5hbWVgLgorCisgICAgICAgIFsxXTogaHR0cHM6Ly93aGF0d2cu
Z2l0aHViLmlvL2xvYWRlci8KKyAgICAgICAgWzJdOiBodHRwczovL2dpdGh1Yi5jb20vd2hhdHdn
L2xvYWRlci9jb21taXQvMjE0YzdhNjYyNWI0NDViZGY0MTFjMzk5ODRmMzZmMDExMzlhMjRiZQor
ICAgICAgICBbM106IGh0dHBzOi8vZ2l0aHViLmNvbS93aGF0d2cvbG9hZGVyL3B1bGwvNjYKKyAg
ICAgICAgWzRdOiBodHRwczovL2dpdGh1Yi5jb20vd2hhdHdnL2xvYWRlci9wdWxsLzY3CisgICAg
ICAgIFs1XTogaHR0cHM6Ly9naXRodWIuY29tL3doYXR3Zy9sb2FkZXIvaXNzdWVzLzY4CisgICAg
ICAgIFs2XTogaHR0cHM6Ly9idWdzLndlYmtpdC5vcmcvc2hvd19idWcuY2dpP2lkPTE0ODEzNgor
CisgICAgICAgICogQ01ha2VMaXN0cy50eHQ6CisgICAgICAgICogRGVyaXZlZFNvdXJjZXMubWFr
ZToKKyAgICAgICAgKiBKYXZhU2NyaXB0Q29yZS52Y3hwcm9qL0phdmFTY3JpcHRDb3JlLnZjeHBy
b2o6CisgICAgICAgICogSmF2YVNjcmlwdENvcmUudmN4cHJvai9KYXZhU2NyaXB0Q29yZS52Y3hw
cm9qLmZpbHRlcnM6CisgICAgICAgICogSmF2YVNjcmlwdENvcmUueGNvZGVwcm9qL3Byb2plY3Qu
cGJ4cHJvajoKKyAgICAgICAgKiBidWlsdGlucy9CdWlsdGluTmFtZXMuaDoKKyAgICAgICAgKEpT
Qzo6QnVpbHRpbk5hbWVzOjpsb29rVXBQcml2YXRlTmFtZSk6CisgICAgICAgIChKU0M6OkJ1aWx0
aW5OYW1lczo6bG9va1VwUHVibGljTmFtZSk6CisgICAgICAgIChKU0M6OkJ1aWx0aW5OYW1lczo6
Z2V0UHJpdmF0ZU5hbWUpOiBEZWxldGVkLgorICAgICAgICAoSlNDOjpCdWlsdGluTmFtZXM6Omdl
dFB1YmxpY05hbWUpOiBEZWxldGVkLgorICAgICAgICAqIGJ1aWx0aW5zL01vZHVsZUxvYWRlck9i
amVjdC5qczogQWRkZWQuCisgICAgICAgIChzZXRTdGF0ZVRvTWF4KToKKyAgICAgICAgKG5ld1Jl
Z2lzdHJ5RW50cnkpOgorICAgICAgICAoZm9yY2VGdWxmaWxsUHJvbWlzZSk6CisgICAgICAgIChm
dWxmaWxsRmV0Y2gpOgorICAgICAgICAoZnVsZmlsbFRyYW5zbGF0ZSk6CisgICAgICAgIChmdWxm
aWxsSW5zdGFudGlhdGUpOgorICAgICAgICAoaW5zdGFudGlhdGlvbik6CisgICAgICAgIChyZXF1
ZXN0RmV0Y2gpOgorICAgICAgICAocmVxdWVzdFRyYW5zbGF0ZSk6CisgICAgICAgIChyZXF1ZXN0
SW5zdGFudGlhdGUpOgorICAgICAgICAocmVxdWVzdFJlc29sdmVEZXBlbmRlbmNpZXMucmVzb2x2
ZURlcGVuZGVuY2llc1Byb21pc2UudGhpcy5yZXF1ZXN0SW5zdGFudGlhdGUudGhlbi4pOgorICAg
ICAgICAocmVxdWVzdFJlc29sdmVEZXBlbmRlbmNpZXMucmVzb2x2ZURlcGVuZGVuY2llc1Byb21p
c2UudGhpcy5yZXF1ZXN0SW5zdGFudGlhdGUudGhlbik6CisgICAgICAgIChyZXF1ZXN0UmVzb2x2
ZURlcGVuZGVuY2llcyk6CisgICAgICAgIChyZXF1ZXN0SW5zdGFudGlhdGVBbGwpOgorICAgICAg
ICAocHJvdmlkZSk6CisgICAgICAgICoganNjLmNwcDoKKyAgICAgICAgKHN0cmluZ0Zyb21VVEYp
OgorICAgICAgICAoanNjU291cmNlKToKKyAgICAgICAgKEdsb2JhbE9iamVjdDo6bG9hZGVyRmV0
Y2gpOgorICAgICAgICAoZnVuY3Rpb25DaGVja01vZHVsZVN5bnRheCk6CisgICAgICAgIChkdW1w
RXhjZXB0aW9uKToKKyAgICAgICAgKHJ1bldpdGhTY3JpcHRzKToKKyAgICAgICAgKHByaW50VXNh
Z2VTdGF0ZW1lbnQpOgorICAgICAgICAoQ29tbWFuZExpbmU6OnBhcnNlQXJndW1lbnRzKToKKyAg
ICAgICAgKGpzY21haW4pOgorICAgICAgICAoQ29tbWFuZExpbmU6OkNvbW1hbmRMaW5lKTogRGVs
ZXRlZC4KKyAgICAgICAgKiBwYXJzZXIvTGV4ZXIuY3BwOgorICAgICAgICAoSlNDOjpMZXhlcjxM
Q2hhcj46OnBhcnNlSWRlbnRpZmllcik6CisgICAgICAgIChKU0M6OkxleGVyPFVDaGFyPjo6cGFy
c2VJZGVudGlmaWVyKToKKyAgICAgICAgKiBwYXJzZXIvTW9kdWxlQW5hbHl6ZXIuY3BwOgorICAg
ICAgICAoSlNDOjpNb2R1bGVBbmFseXplcjo6TW9kdWxlQW5hbHl6ZXIpOgorICAgICAgICAoSlND
OjpNb2R1bGVBbmFseXplcjo6ZXhwb3J0VmFyaWFibGUpOgorICAgICAgICAoSlNDOjpNb2R1bGVB
bmFseXplcjo6YW5hbHl6ZSk6CisgICAgICAgICogcGFyc2VyL01vZHVsZUFuYWx5emVyLmg6Cisg
ICAgICAgIChKU0M6Ok1vZHVsZUFuYWx5emVyOjptb2R1bGVSZWNvcmQpOgorICAgICAgICAqIHBh
cnNlci9Nb2R1bGVSZWNvcmQuY3BwOgorICAgICAgICAoSlNDOjpwcmludGFibGVOYW1lKTogRGVs
ZXRlZC4KKyAgICAgICAgKEpTQzo6TW9kdWxlUmVjb3JkOjpkdW1wKTogRGVsZXRlZC4KKyAgICAg
ICAgKiBwYXJzZXIvTW9kdWxlUmVjb3JkLmg6CisgICAgICAgIChKU0M6Ok1vZHVsZVJlY29yZDo6
SW1wb3J0RW50cnk6OmlzTmFtZXNwYWNlKTogRGVsZXRlZC4KKyAgICAgICAgKEpTQzo6TW9kdWxl
UmVjb3JkOjpjcmVhdGUpOiBEZWxldGVkLgorICAgICAgICAoSlNDOjpNb2R1bGVSZWNvcmQ6OmFw
cGVuZFJlcXVlc3RlZE1vZHVsZSk6IERlbGV0ZWQuCisgICAgICAgIChKU0M6Ok1vZHVsZVJlY29y
ZDo6YWRkSW1wb3J0RW50cnkpOiBEZWxldGVkLgorICAgICAgICAoSlNDOjpNb2R1bGVSZWNvcmQ6
OmFkZEV4cG9ydEVudHJ5KTogRGVsZXRlZC4KKyAgICAgICAgKEpTQzo6TW9kdWxlUmVjb3JkOjph
ZGRTdGFyRXhwb3J0RW50cnkpOiBEZWxldGVkLgorICAgICAgICAqIHBhcnNlci9Ob2Rlcy5oOgor
ICAgICAgICAqIHBhcnNlci9Ob2Rlc0FuYWx5emVNb2R1bGUuY3BwOgorICAgICAgICAoSlNDOjpJ
bXBvcnREZWNsYXJhdGlvbk5vZGU6OmFuYWx5emVNb2R1bGUpOgorICAgICAgICAoSlNDOjpFeHBv
cnRBbGxEZWNsYXJhdGlvbk5vZGU6OmFuYWx5emVNb2R1bGUpOgorICAgICAgICAoSlNDOjpFeHBv
cnROYW1lZERlY2xhcmF0aW9uTm9kZTo6YW5hbHl6ZU1vZHVsZSk6CisgICAgICAgICogcnVudGlt
ZS9Db21tb25JZGVudGlmaWVycy5jcHA6CisgICAgICAgIChKU0M6OkNvbW1vbklkZW50aWZpZXJz
Ojpsb29rVXBQcml2YXRlTmFtZSk6CisgICAgICAgIChKU0M6OkNvbW1vbklkZW50aWZpZXJzOjps
b29rVXBQdWJsaWNOYW1lKToKKyAgICAgICAgKEpTQzo6Q29tbW9uSWRlbnRpZmllcnM6OmdldFBy
aXZhdGVOYW1lKTogRGVsZXRlZC4KKyAgICAgICAgKEpTQzo6Q29tbW9uSWRlbnRpZmllcnM6Omdl
dFB1YmxpY05hbWUpOiBEZWxldGVkLgorICAgICAgICAqIHJ1bnRpbWUvQ29tbW9uSWRlbnRpZmll
cnMuaDoKKyAgICAgICAgKiBydW50aW1lL0NvbXBsZXRpb24uY3BwOgorICAgICAgICAoSlNDOjpj
aGVja01vZHVsZVN5bnRheCk6CisgICAgICAgIChKU0M6OmV2YWx1YXRlTW9kdWxlKToKKyAgICAg
ICAgKiBydW50aW1lL0NvbXBsZXRpb24uaDoKKyAgICAgICAgKiBydW50aW1lL0V4Y2VwdGlvbkhl
bHBlcnMuY3BwOgorICAgICAgICAoSlNDOjpjcmVhdGVVbmRlZmluZWRWYXJpYWJsZUVycm9yKToK
KyAgICAgICAgKiBydW50aW1lL0lkZW50aWZpZXIuaDoKKyAgICAgICAgKiBydW50aW1lL0pTR2xv
YmFsT2JqZWN0LmNwcDoKKyAgICAgICAgKEpTQzo6SlNHbG9iYWxPYmplY3Q6OmluaXQpOgorICAg
ICAgICAoSlNDOjpKU0dsb2JhbE9iamVjdDo6dmlzaXRDaGlsZHJlbik6CisgICAgICAgICogcnVu
dGltZS9KU0dsb2JhbE9iamVjdC5oOgorICAgICAgICAoSlNDOjpKU0dsb2JhbE9iamVjdDo6bW9k
dWxlTG9hZGVyKToKKyAgICAgICAgKEpTQzo6SlNHbG9iYWxPYmplY3Q6Om1vZHVsZVJlY29yZFN0
cnVjdHVyZSk6CisgICAgICAgICogcnVudGltZS9KU01vZHVsZVJlY29yZC5jcHA6IFJlbmFtZWQg
ZnJvbSBTb3VyY2UvSmF2YVNjcmlwdENvcmUvcGFyc2VyL01vZHVsZVJlY29yZC5jcHAuCisgICAg
ICAgIChKU0M6OkpTTW9kdWxlUmVjb3JkOjpkZXN0cm95KToKKyAgICAgICAgKEpTQzo6SlNNb2R1
bGVSZWNvcmQ6OmZpbmlzaENyZWF0aW9uKToKKyAgICAgICAgKEpTQzo6cHJpbnRhYmxlTmFtZSk6
CisgICAgICAgIChKU0M6OkpTTW9kdWxlUmVjb3JkOjpkdW1wKToKKyAgICAgICAgKiBydW50aW1l
L0pTTW9kdWxlUmVjb3JkLmg6IFJlbmFtZWQgZnJvbSBTb3VyY2UvSmF2YVNjcmlwdENvcmUvcGFy
c2VyL01vZHVsZVJlY29yZC5oLgorICAgICAgICAoSlNDOjpKU01vZHVsZVJlY29yZDo6SW1wb3J0
RW50cnk6OmlzTmFtZXNwYWNlKToKKyAgICAgICAgKEpTQzo6SlNNb2R1bGVSZWNvcmQ6OmNyZWF0
ZVN0cnVjdHVyZSk6CisgICAgICAgIChKU0M6OkpTTW9kdWxlUmVjb3JkOjpjcmVhdGUpOgorICAg
ICAgICAoSlNDOjpKU01vZHVsZVJlY29yZDo6cmVxdWVzdGVkTW9kdWxlcyk6CisgICAgICAgIChK
U0M6OkpTTW9kdWxlUmVjb3JkOjpKU01vZHVsZVJlY29yZCk6CisgICAgICAgIChKU0M6OkpTTW9k
dWxlUmVjb3JkOjphcHBlbmRSZXF1ZXN0ZWRNb2R1bGUpOgorICAgICAgICAoSlNDOjpKU01vZHVs
ZVJlY29yZDo6YWRkSW1wb3J0RW50cnkpOgorICAgICAgICAoSlNDOjpKU01vZHVsZVJlY29yZDo6
YWRkRXhwb3J0RW50cnkpOgorICAgICAgICAoSlNDOjpKU01vZHVsZVJlY29yZDo6YWRkU3RhckV4
cG9ydEVudHJ5KToKKyAgICAgICAgKiBydW50aW1lL01hcFByb3RvdHlwZS5jcHA6CisgICAgICAg
IChKU0M6Ok1hcFByb3RvdHlwZTo6ZmluaXNoQ3JlYXRpb24pOgorICAgICAgICAqIHJ1bnRpbWUv
TW9kdWxlTG9hZGVyT2JqZWN0LmNwcDogQWRkZWQuCisgICAgICAgIChKU0M6Ok1vZHVsZUxvYWRl
ck9iamVjdDo6TW9kdWxlTG9hZGVyT2JqZWN0KToKKyAgICAgICAgKEpTQzo6TW9kdWxlTG9hZGVy
T2JqZWN0OjpmaW5pc2hDcmVhdGlvbik6CisgICAgICAgIChKU0M6Ok1vZHVsZUxvYWRlck9iamVj
dDo6Z2V0T3duUHJvcGVydHlTbG90KToKKyAgICAgICAgKEpTQzo6cHJpbnRhYmxlTW9kdWxlS2V5
KToKKyAgICAgICAgKEpTQzo6TW9kdWxlTG9hZGVyT2JqZWN0Ojpwcm92aWRlKToKKyAgICAgICAg
KEpTQzo6TW9kdWxlTG9hZGVyT2JqZWN0OjpyZXF1ZXN0SW5zdGFudGlhdGVBbGwpOgorICAgICAg
ICAoSlNDOjpNb2R1bGVMb2FkZXJPYmplY3Q6OnJlc29sdmUpOgorICAgICAgICAoSlNDOjpNb2R1
bGVMb2FkZXJPYmplY3Q6OmZldGNoKToKKyAgICAgICAgKEpTQzo6TW9kdWxlTG9hZGVyT2JqZWN0
Ojp0cmFuc2xhdGUpOgorICAgICAgICAoSlNDOjpNb2R1bGVMb2FkZXJPYmplY3Q6Omluc3RhbnRp
YXRlKToKKyAgICAgICAgKEpTQzo6bW9kdWxlTG9hZGVyT2JqZWN0UGFyc2VNb2R1bGUpOgorICAg
ICAgICAoSlNDOjptb2R1bGVMb2FkZXJPYmplY3RSZXF1ZXN0ZWRNb2R1bGVzKToKKyAgICAgICAg
KEpTQzo6bW9kdWxlTG9hZGVyT2JqZWN0UmVzb2x2ZSk6CisgICAgICAgIChKU0M6Om1vZHVsZUxv
YWRlck9iamVjdEZldGNoKToKKyAgICAgICAgKEpTQzo6bW9kdWxlTG9hZGVyT2JqZWN0VHJhbnNs
YXRlKToKKyAgICAgICAgKEpTQzo6bW9kdWxlTG9hZGVyT2JqZWN0SW5zdGFudGlhdGUpOgorICAg
ICAgICAqIHJ1bnRpbWUvTW9kdWxlTG9hZGVyT2JqZWN0Lmg6IEFkZGVkLgorICAgICAgICAoSlND
OjpNb2R1bGVMb2FkZXJPYmplY3Q6OmNyZWF0ZSk6CisgICAgICAgIChKU0M6Ok1vZHVsZUxvYWRl
ck9iamVjdDo6Y3JlYXRlU3RydWN0dXJlKToKKyAgICAgICAgKiBydW50aW1lL09wdGlvbnMuaDoK
KworMjAxNS0wOC0xOSAgWXVzdWtlIFN1enVraSAgPHV0YXRhbmUudGVhQGdtYWlsLmNvbT4KKwog
ICAgICAgICBBZGQgSW50ZXJuYWxQcm9taXNlIHRvIHVzZSBQcm9taXNlcyBzYWZlbHkgaW4gdGhl
IGludGVybmFscwogICAgICAgICBodHRwczovL2J1Z3Mud2Via2l0Lm9yZy9zaG93X2J1Zy5jZ2k/
aWQ9MTQ4MTM2CiAKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL0NoYW5nZUxvZyBiL1NvdXJj
ZS9XZWJDb3JlL0NoYW5nZUxvZwppbmRleCBkOThiNGQyNGVjOWM3YjFhODc0NjhmMjQzNmU3NGU1
NGEzZTYwNTE1Li4xMWI1NjRkZWIzM2Y3NDdiYmNhNmI1NDBiY2EyMTZjZmVjZGJhMGMxIDEwMDY0
NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9DaGFuZ2VMb2cKKysrIGIvU291cmNlL1dlYkNvcmUvQ2hh
bmdlTG9nCkBAIC0xLDMgKzEsMTUgQEAKKzIwMTUtMDgtMTkgIFl1c3VrZSBTdXp1a2kgIDx1dGF0
YW5lLnRlYUBnbWFpbC5jb20+CisKKyAgICAgICAgW0VTNl0gcHJvdG90eXBpbmcgbW9kdWxlIGxv
YWRlciBpbiBKU0Mgc2hlbGwKKyAgICAgICAgaHR0cHM6Ly9idWdzLndlYmtpdC5vcmcvc2hvd19i
dWcuY2dpP2lkPTE0Nzg3NgorCisgICAgICAgIFJldmlld2VkIGJ5IE5PQk9EWSAoT09QUyEpLgor
CisgICAgICAgIEp1c3QgZmlsbCBMb2FkZXIgaG9va3Mgd2l0aCBudWxscHRyLgorCisgICAgICAg
ICogYmluZGluZ3MvanMvSlNET01XaW5kb3dCYXNlLmNwcDoKKyAgICAgICAgKiBiaW5kaW5ncy9q
cy9KU1dvcmtlckdsb2JhbFNjb3BlQmFzZS5jcHA6CisKIDIwMTUtMDgtMTkgIEJyZW50IEZ1bGdo
YW0gIDxiZnVsZ2hhbUBhcHBsZS5jb20+CiAKICAgICAgICAgW1dpbl0gVW5yZXZpZXdlZCBidWls
ZCBmaXggYWZ0ZXIgcjE4ODY2My4KZGlmZiAtLWdpdCBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9D
TWFrZUxpc3RzLnR4dCBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9DTWFrZUxpc3RzLnR4dAppbmRl
eCAwOWQyNGJhYmIwYTQxMTI0NTc2YWVhNDFhODVkMmUyODk3NjYzOWI3Li40OGM3MjE2ZmI5Njc0
ZTRmZThjZGVmNjkxYzYwZTM1ZWE0YTkyNjhmIDEwMDY0NAotLS0gYS9Tb3VyY2UvSmF2YVNjcmlw
dENvcmUvQ01ha2VMaXN0cy50eHQKKysrIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL0NNYWtlTGlz
dHMudHh0CkBAIC0zODksNyArMzg5LDYgQEAgc2V0KEphdmFTY3JpcHRDb3JlX1NPVVJDRVMKIAog
ICAgIHBhcnNlci9MZXhlci5jcHAKICAgICBwYXJzZXIvTW9kdWxlQW5hbHl6ZXIuY3BwCi0gICAg
cGFyc2VyL01vZHVsZVJlY29yZC5jcHAKICAgICBwYXJzZXIvTm9kZXMuY3BwCiAgICAgcGFyc2Vy
L05vZGVzQW5hbHl6ZU1vZHVsZS5jcHAKICAgICBwYXJzZXIvUGFyc2VyLmNwcApAQCAtNTMzLDYg
KzUzMiw3IEBAIHNldChKYXZhU2NyaXB0Q29yZV9SVU5USU1FX1NPVVJDRVMKICAgICBydW50aW1l
L0pTTG9jay5jcHAKICAgICBydW50aW1lL0pTTWFwLmNwcAogICAgIHJ1bnRpbWUvSlNNYXBJdGVy
YXRvci5jcHAKKyAgICBydW50aW1lL0pTTW9kdWxlUmVjb3JkLmNwcAogICAgIHJ1bnRpbWUvSlNO
b3RBbk9iamVjdC5jcHAKICAgICBydW50aW1lL0pTT05PYmplY3QuY3BwCiAgICAgcnVudGltZS9K
U09iamVjdC5jcHAKQEAgLTU2Nyw2ICs1NjcsNyBAQCBzZXQoSmF2YVNjcmlwdENvcmVfUlVOVElN
RV9TT1VSQ0VTCiAgICAgcnVudGltZS9NYXRoQ29tbW9uLmNwcAogICAgIHJ1bnRpbWUvTWF0aE9i
amVjdC5jcHAKICAgICBydW50aW1lL01lbW9yeVN0YXRpc3RpY3MuY3BwCisgICAgcnVudGltZS9N
b2R1bGVMb2FkZXJPYmplY3QuY3BwCiAgICAgcnVudGltZS9OYXRpdmVFcnJvckNvbnN0cnVjdG9y
LmNwcAogICAgIHJ1bnRpbWUvTmF0aXZlRXJyb3JQcm90b3R5cGUuY3BwCiAgICAgcnVudGltZS9O
dWxsR2V0dGVyRnVuY3Rpb24uY3BwCkBAIC02NjAsNiArNjYxLDcgQEAgc2V0KEphdmFTY3JpcHRD
b3JlX0xVVF9GSUxFUwogICAgIHJ1bnRpbWUvSlNPTk9iamVjdC5jcHAKICAgICBydW50aW1lL0pT
UHJvbWlzZUNvbnN0cnVjdG9yLmNwcAogICAgIHJ1bnRpbWUvSlNQcm9taXNlUHJvdG90eXBlLmNw
cAorICAgIHJ1bnRpbWUvTW9kdWxlTG9hZGVyT2JqZWN0LmNwcAogICAgIHJ1bnRpbWUvTnVtYmVy
Q29uc3RydWN0b3IuY3BwCiAgICAgcnVudGltZS9OdW1iZXJQcm90b3R5cGUuY3BwCiAgICAgcnVu
dGltZS9PYmplY3RDb25zdHJ1Y3Rvci5jcHAKZGlmZiAtLWdpdCBhL1NvdXJjZS9KYXZhU2NyaXB0
Q29yZS9EZXJpdmVkU291cmNlcy5tYWtlIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL0Rlcml2ZWRT
b3VyY2VzLm1ha2UKaW5kZXggNWU0N2E0Y2UxNzAwZDE3YTliNTE3ZmRiZjI4MjZjZTk5YTg4NzZj
MS4uZTM2NzMwN2NkY2RmZGRlZmNmMzI2YjlmOTlkZjU5MGI5MDQwNGU0NiAxMDA2NDQKLS0tIGEv
U291cmNlL0phdmFTY3JpcHRDb3JlL0Rlcml2ZWRTb3VyY2VzLm1ha2UKKysrIGIvU291cmNlL0ph
dmFTY3JpcHRDb3JlL0Rlcml2ZWRTb3VyY2VzLm1ha2UKQEAgLTU2LDYgKzU2LDcgQEAgYWxsIDog
XAogICAgIEpTUHJvbWlzZUNvbnN0cnVjdG9yLmx1dC5oIFwKICAgICBLZXl3b3JkTG9va3VwLmgg
XAogICAgIExleGVyLmx1dC5oIFwKKyAgICBNb2R1bGVMb2FkZXJPYmplY3QubHV0LmggXAogICAg
IE51bWJlckNvbnN0cnVjdG9yLmx1dC5oIFwKICAgICBOdW1iZXJQcm90b3R5cGUubHV0LmggXAog
ICAgIE9iamVjdENvbnN0cnVjdG9yLmx1dC5oIFwKZGlmZiAtLWdpdCBhL1NvdXJjZS9KYXZhU2Ny
aXB0Q29yZS9KYXZhU2NyaXB0Q29yZS52Y3hwcm9qL0phdmFTY3JpcHRDb3JlLnZjeHByb2ogYi9T
b3VyY2UvSmF2YVNjcmlwdENvcmUvSmF2YVNjcmlwdENvcmUudmN4cHJvai9KYXZhU2NyaXB0Q29y
ZS52Y3hwcm9qCmluZGV4IDZmZGJiMWYwOWI4NzhhNDRkNDg2Y2IyMmM3NzQyOWQ1NjRkM2NhZjIu
LjcyOTVmZDAxZWZkODIwMDRmMjI1MmI3ZWI2NTAyMTIwNjhlNjc4OWEgMTAwNjQ0Ci0tLSBhL1Nv
dXJjZS9KYXZhU2NyaXB0Q29yZS9KYXZhU2NyaXB0Q29yZS52Y3hwcm9qL0phdmFTY3JpcHRDb3Jl
LnZjeHByb2oKKysrIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL0phdmFTY3JpcHRDb3JlLnZjeHBy
b2ovSmF2YVNjcmlwdENvcmUudmN4cHJvagpAQCAtNjYyLDcgKzY2Miw2IEBACiAgICAgPENsQ29t
cGlsZSBJbmNsdWRlPSIuLlxsbHZtXExMVk1BUEkuY3BwIiAvPgogICAgIDxDbENvbXBpbGUgSW5j
bHVkZT0iLi5ccGFyc2VyXExleGVyLmNwcCIgLz4KICAgICA8Q2xDb21waWxlIEluY2x1ZGU9Ii4u
XHBhcnNlclxNb2R1bGVBbmFseXplci5jcHAiIC8+Ci0gICAgPENsQ29tcGlsZSBJbmNsdWRlPSIu
LlxwYXJzZXJcTW9kdWxlUmVjb3JkLmNwcCIgLz4KICAgICA8Q2xDb21waWxlIEluY2x1ZGU9Ii4u
XHBhcnNlclxOb2Rlcy5jcHAiIC8+CiAgICAgPENsQ29tcGlsZSBJbmNsdWRlPSIuLlxwYXJzZXJc
Tm9kZXNBbmFseXplTW9kdWxlLmNwcCIgLz4KICAgICA8Q2xDb21waWxlIEluY2x1ZGU9Ii4uXHBh
cnNlclxQYXJzZXIuY3BwIiAvPgpAQCAtNzgzLDYgKzc4Miw3IEBACiAgICAgPENsQ29tcGlsZSBJ
bmNsdWRlPSIuLlxydW50aW1lXEpTTG9jay5jcHAiIC8+CiAgICAgPENsQ29tcGlsZSBJbmNsdWRl
PSIuLlxydW50aW1lXEpTTWFwLmNwcCIgLz4KICAgICA8Q2xDb21waWxlIEluY2x1ZGU9Ii4uXHJ1
bnRpbWVcSlNNYXBJdGVyYXRvci5jcHAiIC8+CisgICAgPENsQ29tcGlsZSBJbmNsdWRlPSIuLlxy
dW50aW1lXEpTTW9kdWxlUmVjb3JkLmNwcCIgLz4KICAgICA8Q2xDb21waWxlIEluY2x1ZGU9Ii4u
XHJ1bnRpbWVcSlNOb3RBbk9iamVjdC5jcHAiIC8+CiAgICAgPENsQ29tcGlsZSBJbmNsdWRlPSIu
LlxydW50aW1lXEpTT05PYmplY3QuY3BwIiAvPgogICAgIDxDbENvbXBpbGUgSW5jbHVkZT0iLi5c
cnVudGltZVxKU09iamVjdC5jcHAiIC8+CkBAIC04MTgsNiArODE4LDcgQEAKICAgICA8Q2xDb21w
aWxlIEluY2x1ZGU9Ii4uXHJ1bnRpbWVcTWF0aENvbW1vbi5jcHAiIC8+CiAgICAgPENsQ29tcGls
ZSBJbmNsdWRlPSIuLlxydW50aW1lXE1hdGhPYmplY3QuY3BwIiAvPgogICAgIDxDbENvbXBpbGUg
SW5jbHVkZT0iLi5ccnVudGltZVxNZW1vcnlTdGF0aXN0aWNzLmNwcCIgLz4KKyAgICA8Q2xDb21w
aWxlIEluY2x1ZGU9Ii4uXHJ1bnRpbWVcTW9kdWxlTG9hZGVyT2JqZWN0LmNwcCIgLz4KICAgICA8
Q2xDb21waWxlIEluY2x1ZGU9Ii4uXHJ1bnRpbWVcTmF0aXZlRXJyb3JDb25zdHJ1Y3Rvci5jcHAi
IC8+CiAgICAgPENsQ29tcGlsZSBJbmNsdWRlPSIuLlxydW50aW1lXE5hdGl2ZUVycm9yUHJvdG90
eXBlLmNwcCIgLz4KICAgICA8Q2xDb21waWxlIEluY2x1ZGU9Ii4uXHJ1bnRpbWVcTnVsbEdldHRl
ckZ1bmN0aW9uLmNwcCIgLz4KQEAgLTkzMCw2ICs5MzEsNyBAQAogICAgIDxDbEluY2x1ZGUgSW5j
bHVkZT0iJChDb25maWd1cmF0aW9uQnVpbGREaXIpXG9iaiQoUGxhdGZvcm1BcmNoaXRlY3R1cmUp
XCQoUHJvamVjdE5hbWUpXERlcml2ZWRTb3VyY2VzXE51bWJlckNvbnN0cnVjdG9yLmx1dC5oIiAv
PgogICAgIDxDbEluY2x1ZGUgSW5jbHVkZT0iJChDb25maWd1cmF0aW9uQnVpbGREaXIpXG9iaiQo
UGxhdGZvcm1BcmNoaXRlY3R1cmUpXCQoUHJvamVjdE5hbWUpXERlcml2ZWRTb3VyY2VzXE51bWJl
clByb3RvdHlwZS5sdXQuaCIgLz4KICAgICA8Q2xJbmNsdWRlIEluY2x1ZGU9IiQoQ29uZmlndXJh
dGlvbkJ1aWxkRGlyKVxvYmokKFBsYXRmb3JtQXJjaGl0ZWN0dXJlKVwkKFByb2plY3ROYW1lKVxE
ZXJpdmVkU291cmNlc1xPYmplY3RDb25zdHJ1Y3Rvci5sdXQuaCIgLz4KKyAgICA8Q2xJbmNsdWRl
IEluY2x1ZGU9IiQoQ29uZmlndXJhdGlvbkJ1aWxkRGlyKVxvYmokKFBsYXRmb3JtQXJjaGl0ZWN0
dXJlKVwkKFByb2plY3ROYW1lKVxEZXJpdmVkU291cmNlc1xNb2R1bGVMb2FkZXJPYmplY3QubHV0
LmgiIC8+CiAgICAgPENsSW5jbHVkZSBJbmNsdWRlPSIkKENvbmZpZ3VyYXRpb25CdWlsZERpcilc
b2JqJChQbGF0Zm9ybUFyY2hpdGVjdHVyZSlcJChQcm9qZWN0TmFtZSlcRGVyaXZlZFNvdXJjZXNc
UmVmbGVjdE9iamVjdC5sdXQuaCIgLz4KICAgICA8Q2xJbmNsdWRlIEluY2x1ZGU9IiQoQ29uZmln
dXJhdGlvbkJ1aWxkRGlyKVxvYmokKFBsYXRmb3JtQXJjaGl0ZWN0dXJlKVwkKFByb2plY3ROYW1l
KVxEZXJpdmVkU291cmNlc1xSZWdFeHBDb25zdHJ1Y3Rvci5sdXQuaCIgLz4KICAgICA8Q2xJbmNs
dWRlIEluY2x1ZGU9IiQoQ29uZmlndXJhdGlvbkJ1aWxkRGlyKVxvYmokKFBsYXRmb3JtQXJjaGl0
ZWN0dXJlKVwkKFByb2plY3ROYW1lKVxEZXJpdmVkU291cmNlc1xSZWdFeHBKaXRUYWJsZXMuaCIg
Lz4KQEAgLTE0NjIsNyArMTQ2NCw2IEBACiAgICAgPENsSW5jbHVkZSBJbmNsdWRlPSIuLlxwYXJz
ZXJcQVNUQnVpbGRlci5oIiAvPgogICAgIDxDbEluY2x1ZGUgSW5jbHVkZT0iLi5ccGFyc2VyXExl
eGVyLmgiIC8+CiAgICAgPENsSW5jbHVkZSBJbmNsdWRlPSIuLlxwYXJzZXJcTW9kdWxlQW5hbHl6
ZXIuaCIgLz4KLSAgICA8Q2xJbmNsdWRlIEluY2x1ZGU9Ii4uXHBhcnNlclxNb2R1bGVSZWNvcmQu
aCIgLz4KICAgICA8Q2xJbmNsdWRlIEluY2x1ZGU9Ii4uXHBhcnNlclxOb2RlQ29uc3RydWN0b3Jz
LmgiIC8+CiAgICAgPENsSW5jbHVkZSBJbmNsdWRlPSIuLlxwYXJzZXJcTm9kZXMuaCIgLz4KICAg
ICA8Q2xJbmNsdWRlIEluY2x1ZGU9Ii4uXHBhcnNlclxQYXJzZXIuaCIgLz4KQEAgLTE2MzIsNiAr
MTYzMyw3IEBACiAgICAgPENsSW5jbHVkZSBJbmNsdWRlPSIuLlxydW50aW1lXEpTTG9jay5oIiAv
PgogICAgIDxDbEluY2x1ZGUgSW5jbHVkZT0iLi5ccnVudGltZVxKU01hcC5oIiAvPgogICAgIDxD
bEluY2x1ZGUgSW5jbHVkZT0iLi5ccnVudGltZVxKU01hcEl0ZXJhdG9yLmgiIC8+CisgICAgPENs
SW5jbHVkZSBJbmNsdWRlPSIuLlxydW50aW1lXEpTTW9kdWxlUmVjb3JkLmgiIC8+CiAgICAgPENs
SW5jbHVkZSBJbmNsdWRlPSIuLlxydW50aW1lXEpTTm90QW5PYmplY3QuaCIgLz4KICAgICA8Q2xJ
bmNsdWRlIEluY2x1ZGU9Ii4uXHJ1bnRpbWVcSlNPTk9iamVjdC5oIiAvPgogICAgIDxDbEluY2x1
ZGUgSW5jbHVkZT0iLi5ccnVudGltZVxKU09iamVjdC5oIiAvPgpAQCAtMTY3Nyw2ICsxNjc5LDcg
QEAKICAgICA8Q2xJbmNsdWRlIEluY2x1ZGU9Ii4uXHJ1bnRpbWVcTWF0aENvbW1vbi5oIiAvPgog
ICAgIDxDbEluY2x1ZGUgSW5jbHVkZT0iLi5ccnVudGltZVxNYXRoT2JqZWN0LmgiIC8+CiAgICAg
PENsSW5jbHVkZSBJbmNsdWRlPSIuLlxydW50aW1lXE1lbW9yeVN0YXRpc3RpY3MuaCIgLz4KKyAg
ICA8Q2xJbmNsdWRlIEluY2x1ZGU9Ii4uXHJ1bnRpbWVcTW9kdWxlTG9hZGVyT2JqZWN0LmgiIC8+
CiAgICAgPENsSW5jbHVkZSBJbmNsdWRlPSIuLlxydW50aW1lXE1pY3JvdGFzay5oIiAvPgogICAg
IDxDbEluY2x1ZGUgSW5jbHVkZT0iLi5ccnVudGltZVxOYXRpdmVFcnJvckNvbnN0cnVjdG9yLmgi
IC8+CiAgICAgPENsSW5jbHVkZSBJbmNsdWRlPSIuLlxydW50aW1lXE5hdGl2ZUVycm9yUHJvdG90
eXBlLmgiIC8+CmRpZmYgLS1naXQgYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvSmF2YVNjcmlwdENv
cmUudmN4cHJvai9KYXZhU2NyaXB0Q29yZS52Y3hwcm9qLmZpbHRlcnMgYi9Tb3VyY2UvSmF2YVNj
cmlwdENvcmUvSmF2YVNjcmlwdENvcmUudmN4cHJvai9KYXZhU2NyaXB0Q29yZS52Y3hwcm9qLmZp
bHRlcnMKaW5kZXggNjJhMTM3YTJjYjZjYjJhOTFkMzVmMGQ1NTI1NDk3YjU0ODk2ZTdlOS4uOWJk
ZjU0OTRjZjIwNWQ5YTJkMjI3NWYzNzFhY2QxY2E2ZGUwZTYxMCAxMDA2NDQKLS0tIGEvU291cmNl
L0phdmFTY3JpcHRDb3JlL0phdmFTY3JpcHRDb3JlLnZjeHByb2ovSmF2YVNjcmlwdENvcmUudmN4
cHJvai5maWx0ZXJzCisrKyBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9KYXZhU2NyaXB0Q29yZS52
Y3hwcm9qL0phdmFTY3JpcHRDb3JlLnZjeHByb2ouZmlsdGVycwpAQCAtNDU5LDkgKzQ1OSw2IEBA
CiAgICAgPENsQ29tcGlsZSBJbmNsdWRlPSIuLlxwYXJzZXJcTW9kdWxlQW5hbHl6ZXIuY3BwIj4K
ICAgICAgIDxGaWx0ZXI+cGFyc2VyPC9GaWx0ZXI+CiAgICAgPC9DbENvbXBpbGU+Ci0gICAgPENs
Q29tcGlsZSBJbmNsdWRlPSIuLlxwYXJzZXJcTW9kdWxlUmVjb3JkLmNwcCI+Ci0gICAgICA8Rmls
dGVyPnBhcnNlcjwvRmlsdGVyPgotICAgIDwvQ2xDb21waWxlPgogICAgIDxDbENvbXBpbGUgSW5j
bHVkZT0iLi5ccGFyc2VyXE5vZGVzLmNwcCI+CiAgICAgICA8RmlsdGVyPnBhcnNlcjwvRmlsdGVy
PgogICAgIDwvQ2xDb21waWxlPgpAQCAtNzI2LDYgKzcyMyw5IEBACiAgICAgPENsQ29tcGlsZSBJ
bmNsdWRlPSIuLlxydW50aW1lXEpTTWFwLmNwcCI+CiAgICAgICA8RmlsdGVyPnJ1bnRpbWU8L0Zp
bHRlcj4KICAgICA8L0NsQ29tcGlsZT4KKyAgICA8Q2xDb21waWxlIEluY2x1ZGU9Ii4uXHJ1bnRp
bWVcSlNNb2R1bGVSZWNvcmQuY3BwIj4KKyAgICAgIDxGaWx0ZXI+cnVudGltZTwvRmlsdGVyPgor
ICAgIDwvQ2xDb21waWxlPgogICAgIDxDbENvbXBpbGUgSW5jbHVkZT0iLi5ccnVudGltZVxKU05v
dEFuT2JqZWN0LmNwcCI+CiAgICAgICA8RmlsdGVyPnJ1bnRpbWU8L0ZpbHRlcj4KICAgICA8L0Ns
Q29tcGlsZT4KQEAgLTE3MTAsNiArMTcxMCw5IEBACiAgICAgPENsQ29tcGlsZSBJbmNsdWRlPSIu
LlxydW50aW1lXE1lbW9yeVN0YXRpc3RpY3MuY3BwIj4KICAgICAgIDxGaWx0ZXI+cnVudGltZTwv
RmlsdGVyPgogICAgIDwvQ2xDb21waWxlPgorICAgIDxDbENvbXBpbGUgSW5jbHVkZT0iLi5ccnVu
dGltZVxNb2R1bGVMb2FkZXJPYmplY3QuY3BwIj4KKyAgICAgIDxGaWx0ZXI+cnVudGltZTwvRmls
dGVyPgorICAgIDwvQ2xDb21waWxlPgogICAgIDxDbENvbXBpbGUgSW5jbHVkZT0iLi5cYnl0ZWNv
ZGVcQ29tcGxleEdldFN0YXR1cy5jcHAiPgogICAgICAgPEZpbHRlcj5ieXRlY29kZTwvRmlsdGVy
PgogICAgIDwvQ2xDb21waWxlPgpAQCAtMjUxMCw5ICsyNTEzLDYgQEAKICAgICA8Q2xJbmNsdWRl
IEluY2x1ZGU9Ii4uXHBhcnNlclxNb2R1bGVBbmFseXplci5oIj4KICAgICAgIDxGaWx0ZXI+cGFy
c2VyPC9GaWx0ZXI+CiAgICAgPC9DbEluY2x1ZGU+Ci0gICAgPENsSW5jbHVkZSBJbmNsdWRlPSIu
LlxwYXJzZXJcTW9kdWxlUmVjb3JkLmgiPgotICAgICAgPEZpbHRlcj5wYXJzZXI8L0ZpbHRlcj4K
LSAgICA8L0NsSW5jbHVkZT4KICAgICA8Q2xJbmNsdWRlIEluY2x1ZGU9Ii4uXHBhcnNlclxOb2Rl
Q29uc3RydWN0b3JzLmgiPgogICAgICAgPEZpbHRlcj5wYXJzZXI8L0ZpbHRlcj4KICAgICA8L0Ns
SW5jbHVkZT4KQEAgLTMyMjUsNiArMzIyNSw5IEBACiAgICAgPENsSW5jbHVkZSBJbmNsdWRlPSIk
KENvbmZpZ3VyYXRpb25CdWlsZERpcilcb2JqJChQbGF0Zm9ybUFyY2hpdGVjdHVyZSlcJChQcm9q
ZWN0TmFtZSlcRGVyaXZlZFNvdXJjZXNcTGV4ZXIubHV0LmgiPgogICAgICAgPEZpbHRlcj5EZXJp
dmVkIFNvdXJjZXM8L0ZpbHRlcj4KICAgICA8L0NsSW5jbHVkZT4KKyAgICA8Q2xJbmNsdWRlIElu
Y2x1ZGU9IiQoQ29uZmlndXJhdGlvbkJ1aWxkRGlyKVxvYmokKFBsYXRmb3JtQXJjaGl0ZWN0dXJl
KVwkKFByb2plY3ROYW1lKVxEZXJpdmVkU291cmNlc1xNb2R1bGVMb2FkZXJPYmplY3QubHV0Lmgi
PgorICAgICAgPEZpbHRlcj5EZXJpdmVkIFNvdXJjZXM8L0ZpbHRlcj4KKyAgICA8L0NsSW5jbHVk
ZT4KICAgICA8Q2xJbmNsdWRlIEluY2x1ZGU9IiQoQ29uZmlndXJhdGlvbkJ1aWxkRGlyKVxvYmok
KFBsYXRmb3JtQXJjaGl0ZWN0dXJlKVwkKFByb2plY3ROYW1lKVxEZXJpdmVkU291cmNlc1xOdW1i
ZXJDb25zdHJ1Y3Rvci5sdXQuaCI+CiAgICAgICA8RmlsdGVyPkRlcml2ZWQgU291cmNlczwvRmls
dGVyPgogICAgIDwvQ2xJbmNsdWRlPgpAQCAtMzQ3Nyw2ICszNDgwLDkgQEAKICAgICA8Q2xJbmNs
dWRlIEluY2x1ZGU9Ii4uXHJ1bnRpbWVcSlNNYXAuaCI+CiAgICAgICA8RmlsdGVyPnJ1bnRpbWU8
L0ZpbHRlcj4KICAgICA8L0NsSW5jbHVkZT4KKyAgICA8Q2xJbmNsdWRlIEluY2x1ZGU9Ii4uXHJ1
bnRpbWVcSlNNb2R1bGVSZWNvcmQuaCI+CisgICAgICA8RmlsdGVyPnJ1bnRpbWU8L0ZpbHRlcj4K
KyAgICA8L0NsSW5jbHVkZT4KICAgICA8Q2xJbmNsdWRlIEluY2x1ZGU9Ii4uXHJ1bnRpbWVcSlNT
ZXQuaCI+CiAgICAgICA8RmlsdGVyPnJ1bnRpbWU8L0ZpbHRlcj4KICAgICA8L0NsSW5jbHVkZT4K
QEAgLTQyNzMsNiArNDI3OSw5IEBACiAgICAgPENsSW5jbHVkZSBJbmNsdWRlPSIuLlxydW50aW1l
XE1lbW9yeVN0YXRpc3RpY3MuaCI+CiAgICAgICA8RmlsdGVyPnJ1bnRpbWU8L0ZpbHRlcj4KICAg
ICA8L0NsSW5jbHVkZT4KKyAgICA8Q2xJbmNsdWRlIEluY2x1ZGU9Ii4uXHJ1bnRpbWVcTW9kdWxl
TG9hZGVyT2JqZWN0LmgiPgorICAgICAgPEZpbHRlcj5ydW50aW1lPC9GaWx0ZXI+CisgICAgPC9D
bEluY2x1ZGU+CiAgICAgPENsSW5jbHVkZSBJbmNsdWRlPSIuLlxieXRlY29kZVxDb21wbGV4R2V0
U3RhdHVzLmgiPgogICAgICAgPEZpbHRlcj5ieXRlY29kZTwvRmlsdGVyPgogICAgIDwvQ2xJbmNs
dWRlPgpkaWZmIC0tZ2l0IGEvU291cmNlL0phdmFTY3JpcHRDb3JlL0phdmFTY3JpcHRDb3JlLnhj
b2RlcHJvai9wcm9qZWN0LnBieHByb2ogYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvSmF2YVNjcmlw
dENvcmUueGNvZGVwcm9qL3Byb2plY3QucGJ4cHJvagppbmRleCBhMzQwMTcyMzgzZDQyZTYxODUy
NDllZWY4NDQxMjQ1MjM2ZWE2OGI4Li4yYWVlYTBlYmY2ZTg5ODUzZDBkMGI3MWRkOWIxN2FjM2E4
MzkwNjRkIDEwMDY0NAotLS0gYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvSmF2YVNjcmlwdENvcmUu
eGNvZGVwcm9qL3Byb2plY3QucGJ4cHJvagorKysgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvSmF2
YVNjcmlwdENvcmUueGNvZGVwcm9qL3Byb2plY3QucGJ4cHJvagpAQCAtMTcwOSwxMSArMTcwOSwx
NiBAQAogCQlFMzU0NjIyQjFCNjA2NUQxMDA1NDUzODYgLyogQ29uc3RydWN0QWJpbGl0eS5oIGlu
IEhlYWRlcnMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gRTM1NDYyMkExQjYw
NjVEMTAwNTQ1Mzg2IC8qIENvbnN0cnVjdEFiaWxpdHkuaCAqLzsgc2V0dGluZ3MgPSB7QVRUUklC
VVRFUyA9IChQcml2YXRlLCApOyB9OyB9OwogCQlFMzVFMDM1RjFCN0FCNDNFMDA3M0FEMkEgLyog
SW5zcGVjdG9ySW5zdHJ1bWVudGF0aW9uT2JqZWN0LmNwcCBpbiBTb3VyY2VzICovID0ge2lzYSA9
IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IEUzNUUwMzVEMUI3QUI0M0UwMDczQUQyQSAvKiBJbnNw
ZWN0b3JJbnN0cnVtZW50YXRpb25PYmplY3QuY3BwICovOyB9OwogCQlFMzVFMDM2MDFCN0FCNDNF
MDA3M0FEMkEgLyogSW5zcGVjdG9ySW5zdHJ1bWVudGF0aW9uT2JqZWN0LmggaW4gSGVhZGVycyAq
LyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSBFMzVFMDM1RTFCN0FCNDNFMDA3M0FE
MkEgLyogSW5zcGVjdG9ySW5zdHJ1bWVudGF0aW9uT2JqZWN0LmggKi87IHNldHRpbmdzID0ge0FU
VFJJQlVURVMgPSAoUHJpdmF0ZSwgKTsgfTsgfTsKKwkJRTM1NUYzNTIxQjdEQzg1MzAwQzUwREM1
IC8qIE1vZHVsZUxvYWRlck9iamVjdC5jcHAgaW4gU291cmNlcyAqLyA9IHtpc2EgPSBQQlhCdWls
ZEZpbGU7IGZpbGVSZWYgPSBFMzU1RjM1MDFCN0RDODUzMDBDNTBEQzUgLyogTW9kdWxlTG9hZGVy
T2JqZWN0LmNwcCAqLzsgfTsKKwkJRTM1NUYzNTMxQjdEQzg1MzAwQzUwREM1IC8qIE1vZHVsZUxv
YWRlck9iamVjdC5oIGluIEhlYWRlcnMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVm
ID0gRTM1NUYzNTExQjdEQzg1MzAwQzUwREM1IC8qIE1vZHVsZUxvYWRlck9iamVjdC5oICovOyB9
OwogCQlFMzc5NEU3NTFCNzdFQjk3MDA1NTQzQUUgLyogTW9kdWxlQW5hbHl6ZXIuY3BwIGluIFNv
dXJjZXMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gRTM3OTRFNzMxQjc3RUI5
NzAwNTU0M0FFIC8qIE1vZHVsZUFuYWx5emVyLmNwcCAqLzsgfTsKIAkJRTM3OTRFNzYxQjc3RUI5
NzAwNTU0M0FFIC8qIE1vZHVsZUFuYWx5emVyLmggaW4gSGVhZGVycyAqLyA9IHtpc2EgPSBQQlhC
dWlsZEZpbGU7IGZpbGVSZWYgPSBFMzc5NEU3NDFCNzdFQjk3MDA1NTQzQUUgLyogTW9kdWxlQW5h
bHl6ZXIuaCAqLzsgc2V0dGluZ3MgPSB7QVRUUklCVVRFUyA9IChQcml2YXRlLCApOyB9OyB9Owot
CQlFMzk2M0NFRDFCNzNGNzUwMDBFQjRDRTUgLyogTW9kdWxlUmVjb3JkLmggaW4gSGVhZGVycyAq
LyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSBFMzk2M0NFQjFCNzNGNzUwMDBFQjRD
RTUgLyogTW9kdWxlUmVjb3JkLmggKi87IHNldHRpbmdzID0ge0FUVFJJQlVURVMgPSAoUHJpdmF0
ZSwgKTsgfTsgfTsKIAkJRTM5NjNDRUUxQjczRjc1MDAwRUI0Q0U1IC8qIE5vZGVzQW5hbHl6ZU1v
ZHVsZS5jcHAgaW4gU291cmNlcyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSBF
Mzk2M0NFQzFCNzNGNzUwMDBFQjRDRTUgLyogTm9kZXNBbmFseXplTW9kdWxlLmNwcCAqLzsgfTsK
IAkJRTNDMDlGNTUxQjc5NjkyQTAwRUUzNkEyIC8qIE1vZHVsZVJlY29yZC5jcHAgaW4gU291cmNl
cyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSBFM0MwOUY1NDFCNzk2OTJBMDBF
RTM2QTIgLyogTW9kdWxlUmVjb3JkLmNwcCAqLzsgfTsKKwkJRTM1RTAzNUYxQjdBQjQzRTAwNzNB
RDJBIC8qIEluc3BlY3Rvckluc3RydW1lbnRhdGlvbk9iamVjdC5jcHAgaW4gU291cmNlcyAqLyA9
IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSBFMzVFMDM1RDFCN0FCNDNFMDA3M0FEMkEg
LyogSW5zcGVjdG9ySW5zdHJ1bWVudGF0aW9uT2JqZWN0LmNwcCAqLzsgfTsKKwkJRTM1RTAzNjAx
QjdBQjQzRTAwNzNBRDJBIC8qIEluc3BlY3Rvckluc3RydW1lbnRhdGlvbk9iamVjdC5oIGluIEhl
YWRlcnMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gRTM1RTAzNUUxQjdBQjQz
RTAwNzNBRDJBIC8qIEluc3BlY3Rvckluc3RydW1lbnRhdGlvbk9iamVjdC5oICovOyBzZXR0aW5n
cyA9IHtBVFRSSUJVVEVTID0gKFByaXZhdGUsICk7IH07IH07CisJCUUzOURBNEE2MUI3RThCN0Mw
MDg0RjMzQSAvKiBKU01vZHVsZVJlY29yZC5jcHAgaW4gU291cmNlcyAqLyA9IHtpc2EgPSBQQlhC
dWlsZEZpbGU7IGZpbGVSZWYgPSBFMzlEQTRBNDFCN0U4QjdDMDA4NEYzM0EgLyogSlNNb2R1bGVS
ZWNvcmQuY3BwICovOyB9OworCQlFMzlEQTRBNzFCN0U4QjdDMDA4NEYzM0EgLyogSlNNb2R1bGVS
ZWNvcmQuaCBpbiBIZWFkZXJzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IEUz
OURBNEE1MUI3RThCN0MwMDg0RjMzQSAvKiBKU01vZHVsZVJlY29yZC5oICovOyBzZXR0aW5ncyA9
IHtBVFRSSUJVVEVTID0gKFByaXZhdGUsICk7IH07IH07CiAJCUUzRUY4ODc0MUI2NkRGMjMwMDNG
MjZDQiAvKiBKU1Byb3BlcnR5TmFtZUl0ZXJhdG9yLmNwcCBpbiBTb3VyY2VzICovID0ge2lzYSA9
IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IEUzRUY4ODcyMUI2NkRGMjMwMDNGMjZDQiAvKiBKU1By
b3BlcnR5TmFtZUl0ZXJhdG9yLmNwcCAqLzsgfTsKIAkJRTNFRjg4NzUxQjY2REYyMzAwM0YyNkNC
IC8qIEpTUHJvcGVydHlOYW1lSXRlcmF0b3IuaCBpbiBIZWFkZXJzICovID0ge2lzYSA9IFBCWEJ1
aWxkRmlsZTsgZmlsZVJlZiA9IEUzRUY4ODczMUI2NkRGMjMwMDNGMjZDQiAvKiBKU1Byb3BlcnR5
TmFtZUl0ZXJhdG9yLmggKi87IHNldHRpbmdzID0ge0FUVFJJQlVURVMgPSAoUHJpdmF0ZSwgKTsg
fTsgfTsKIAkJRTQ5REMxNkIxMkVGMjkzRTAwMTg0QTFGIC8qIFNvdXJjZVByb3ZpZGVyQ2FjaGUu
Y3BwIGluIFNvdXJjZXMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gRTQ5REMx
NTUxMkVGMjc3MjAwMTg0QTFGIC8qIFNvdXJjZVByb3ZpZGVyQ2FjaGUuY3BwICovOyB9OwpAQCAt
MzU1NiwxMSArMzU2MSwxNyBAQAogCQlFMzVFMDM1RDFCN0FCNDNFMDA3M0FEMkEgLyogSW5zcGVj
dG9ySW5zdHJ1bWVudGF0aW9uT2JqZWN0LmNwcCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNl
OyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuY3BwLmNw
cDsgcGF0aCA9IEluc3BlY3Rvckluc3RydW1lbnRhdGlvbk9iamVjdC5jcHA7IHNvdXJjZVRyZWUg
PSAiPGdyb3VwPiI7IH07CiAJCUUzNUUwMzVFMUI3QUI0M0UwMDczQUQyQSAvKiBJbnNwZWN0b3JJ
bnN0cnVtZW50YXRpb25PYmplY3QuaCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxl
RW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuYy5oOyBwYXRoID0g
SW5zcGVjdG9ySW5zdHJ1bWVudGF0aW9uT2JqZWN0Lmg7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7
IH07CiAJCUUzNUUwMzYxMUI3QUI0ODUwMDczQUQyQSAvKiBJbnNwZWN0b3JJbnN0cnVtZW50YXRp
b25PYmplY3QuanMgKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0g
NDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmphdmFzY3JpcHQ7IHBhdGggPSBJbnNw
ZWN0b3JJbnN0cnVtZW50YXRpb25PYmplY3QuanM7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07
CisJCUUzNTVGMzUwMUI3REM4NTMwMEM1MERDNSAvKiBNb2R1bGVMb2FkZXJPYmplY3QuY3BwICov
ID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZp
bGVUeXBlID0gc291cmNlY29kZS5jcHAuY3BwOyBwYXRoID0gTW9kdWxlTG9hZGVyT2JqZWN0LmNw
cDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKKwkJRTM1NUYzNTExQjdEQzg1MzAwQzUwREM1
IC8qIE1vZHVsZUxvYWRlck9iamVjdC5oICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZp
bGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jLmg7IHBhdGgg
PSBNb2R1bGVMb2FkZXJPYmplY3QuaDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKIAkJRTM3
OTRFNzMxQjc3RUI5NzAwNTU0M0FFIC8qIE1vZHVsZUFuYWx5emVyLmNwcCAqLyA9IHtpc2EgPSBQ
QlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHNv
dXJjZWNvZGUuY3BwLmNwcDsgcGF0aCA9IE1vZHVsZUFuYWx5emVyLmNwcDsgc291cmNlVHJlZSA9
ICI8Z3JvdXA+IjsgfTsKIAkJRTM3OTRFNzQxQjc3RUI5NzAwNTU0M0FFIC8qIE1vZHVsZUFuYWx5
emVyLmggKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFz
dEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmMuaDsgcGF0aCA9IE1vZHVsZUFuYWx5emVyLmg7
IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07Ci0JCUUzOTYzQ0VCMUI3M0Y3NTAwMEVCNENFNSAv
KiBNb2R1bGVSZWNvcmQuaCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2Rp
bmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuYy5oOyBwYXRoID0gTW9kdWxl
UmVjb3JkLmg7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CiAJCUUzOTYzQ0VDMUI3M0Y3NTAw
MEVCNENFNSAvKiBOb2Rlc0FuYWx5emVNb2R1bGUuY3BwICovID0ge2lzYSA9IFBCWEZpbGVSZWZl
cmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5j
cHAuY3BwOyBwYXRoID0gTm9kZXNBbmFseXplTW9kdWxlLmNwcDsgc291cmNlVHJlZSA9ICI8Z3Jv
dXA+IjsgfTsKIAkJRTNDMDlGNTQxQjc5NjkyQTAwRUUzNkEyIC8qIE1vZHVsZVJlY29yZC5jcHAg
Ki8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3du
RmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmNwcC5jcHA7IHBhdGggPSBNb2R1bGVSZWNvcmQuY3BwOyBz
b3VyY2VUcmVlID0gIjxncm91cD4iOyB9OworCQlFMzVFMDM1RDFCN0FCNDNFMDA3M0FEMkEgLyog
SW5zcGVjdG9ySW5zdHJ1bWVudGF0aW9uT2JqZWN0LmNwcCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVm
ZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUu
Y3BwLmNwcDsgcGF0aCA9IEluc3BlY3Rvckluc3RydW1lbnRhdGlvbk9iamVjdC5jcHA7IHNvdXJj
ZVRyZWUgPSAiPGdyb3VwPiI7IH07CisJCUUzNUUwMzVFMUI3QUI0M0UwMDczQUQyQSAvKiBJbnNw
ZWN0b3JJbnN0cnVtZW50YXRpb25PYmplY3QuaCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNl
OyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuYy5oOyBw
YXRoID0gSW5zcGVjdG9ySW5zdHJ1bWVudGF0aW9uT2JqZWN0Lmg7IHNvdXJjZVRyZWUgPSAiPGdy
b3VwPiI7IH07CisJCUUzNUUwMzYxMUI3QUI0ODUwMDczQUQyQSAvKiBJbnNwZWN0b3JJbnN0cnVt
ZW50YXRpb25PYmplY3QuanMgKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29k
aW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmphdmFzY3JpcHQ7IHBhdGgg
PSBJbnNwZWN0b3JJbnN0cnVtZW50YXRpb25PYmplY3QuanM7IHNvdXJjZVRyZWUgPSAiPGdyb3Vw
PiI7IH07CisJCUUzOURBNEE0MUI3RThCN0MwMDg0RjMzQSAvKiBKU01vZHVsZVJlY29yZC5jcHAg
Ki8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3du
RmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmNwcC5jcHA7IHBhdGggPSBKU01vZHVsZVJlY29yZC5jcHA7
IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CisJCUUzOURBNEE1MUI3RThCN0MwMDg0RjMzQSAv
KiBKU01vZHVsZVJlY29yZC5oICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNv
ZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jLmg7IHBhdGggPSBKU01v
ZHVsZVJlY29yZC5oOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OwogCQlFM0VGODg3MjFCNjZE
RjIzMDAzRjI2Q0IgLyogSlNQcm9wZXJ0eU5hbWVJdGVyYXRvci5jcHAgKi8gPSB7aXNhID0gUEJY
RmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3Vy
Y2Vjb2RlLmNwcC5jcHA7IHBhdGggPSBKU1Byb3BlcnR5TmFtZUl0ZXJhdG9yLmNwcDsgc291cmNl
VHJlZSA9ICI8Z3JvdXA+IjsgfTsKIAkJRTNFRjg4NzMxQjY2REYyMzAwM0YyNkNCIC8qIEpTUHJv
cGVydHlOYW1lSXRlcmF0b3IuaCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5j
b2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuYy5oOyBwYXRoID0gSlNQ
cm9wZXJ0eU5hbWVJdGVyYXRvci5oOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OwogCQlFNDlE
QzE0OTEyRUYyNjFBMDAxODRBMUYgLyogU291cmNlUHJvdmlkZXJDYWNoZUl0ZW0uaCAqLyA9IHtp
c2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlw
ZSA9IHNvdXJjZWNvZGUuYy5oOyBwYXRoID0gU291cmNlUHJvdmlkZXJDYWNoZUl0ZW0uaDsgc291
cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKQEAgLTQ0NzQsOCArNDQ4NSw2IEBACiAJCQkJRjY5MkE4
NjYwMjU1NTk3RDAxRkY2MEY3IC8qIExleGVyLmggKi8sCiAJCQkJRTM3OTRFNzMxQjc3RUI5NzAw
NTU0M0FFIC8qIE1vZHVsZUFuYWx5emVyLmNwcCAqLywKIAkJCQlFMzc5NEU3NDFCNzdFQjk3MDA1
NTQzQUUgLyogTW9kdWxlQW5hbHl6ZXIuaCAqLywKLQkJCQlFM0MwOUY1NDFCNzk2OTJBMDBFRTM2
QTIgLyogTW9kdWxlUmVjb3JkLmNwcCAqLywKLQkJCQlFMzk2M0NFQjFCNzNGNzUwMDBFQjRDRTUg
LyogTW9kdWxlUmVjb3JkLmggKi8sCiAJCQkJOTMwREFEMDMwRkIxRUIxQTAwODJEMjA1IC8qIE5v
ZGVDb25zdHJ1Y3RvcnMuaCAqLywKIAkJCQlGNjkyQTg2RDAyNTU1OTdEMDFGRjYwRjcgLyogTm9k
ZXMuY3BwICovLAogCQkJCUY2OTJBODZFMDI1NTU5N0QwMUZGNjBGNyAvKiBOb2Rlcy5oICovLApA
QCAtNDc0Nyw2ICs0NzU2LDggQEAKIAkJCQlBNzAwODc0MDE3Q0JFOEVCMDBDM0U2NDMgLyogSlNN
YXAuaCAqLywKIAkJCQlBNzRERUY4RjE4MkQ5OTE0MDA1MjJDMjIgLyogSlNNYXBJdGVyYXRvci5j
cHAgKi8sCiAJCQkJQTc0REVGOTAxODJEOTkxNDAwNTIyQzIyIC8qIEpTTWFwSXRlcmF0b3IuaCAq
LywKKwkJCQlFMzlEQTRBNDFCN0U4QjdDMDA4NEYzM0EgLyogSlNNb2R1bGVSZWNvcmQuY3BwICov
LAorCQkJCUUzOURBNEE1MUI3RThCN0MwMDg0RjMzQSAvKiBKU01vZHVsZVJlY29yZC5oICovLAog
CQkJCUE3MjcwMDc4MERBQzYwNTYwMEU1NDhENyAvKiBKU05vdEFuT2JqZWN0LmNwcCAqLywKIAkJ
CQlBNzI3MDA3NzBEQUM2MDU2MDBFNTQ4RDcgLyogSlNOb3RBbk9iamVjdC5oICovLAogCQkJCUJD
MjJBMzk4MEUxNkUxNDgwMEFGMjFDOCAvKiBKU09iamVjdC5jcHAgKi8sCkBAIC00ODI2LDYgKzQ4
MzcsOCBAQAogCQkJCTkwMjEzRTNCMTIzQTQwQzIwMEQ0MjJGMyAvKiBNZW1vcnlTdGF0aXN0aWNz
LmNwcCAqLywKIAkJCQk5MDIxM0UzQzEyM0E0MEMyMDBENDIyRjMgLyogTWVtb3J5U3RhdGlzdGlj
cy5oICovLAogCQkJCTdDMDA4Q0U1MTg3NjMxQjYwMDk1NUMyNCAvKiBNaWNyb3Rhc2suaCAqLywK
KwkJCQlFMzU1RjM1MDFCN0RDODUzMDBDNTBEQzUgLyogTW9kdWxlTG9hZGVyT2JqZWN0LmNwcCAq
LywKKwkJCQlFMzU1RjM1MTFCN0RDODUzMDBDNTBEQzUgLyogTW9kdWxlTG9hZGVyT2JqZWN0Lmgg
Ki8sCiAJCQkJQkMwMkU5MDgwRTE4MzlEQjAwMEY5Mjk3IC8qIE5hdGl2ZUVycm9yQ29uc3RydWN0
b3IuY3BwICovLAogCQkJCUJDMDJFOTA5MEUxODM5REIwMDBGOTI5NyAvKiBOYXRpdmVFcnJvckNv
bnN0cnVjdG9yLmggKi8sCiAJCQkJQkMwMkU5MEEwRTE4MzlEQjAwMEY5Mjk3IC8qIE5hdGl2ZUVy
cm9yUHJvdG90eXBlLmNwcCAqLywKQEAgLTU4MzYsNiArNTg0OSw3IEBACiAJCQlmaWxlcyA9ICgK
IAkJCQkwRkZBNTQ5ODE2Qjg4MzUzMDBCM0E5ODIgLyogQTY0RE9wY29kZS5oIGluIEhlYWRlcnMg
Ki8sCiAJCQkJODYwMTYxRTMwRjNBODNDMTAwRjg0NzEwIC8qIEFic3RyYWN0TWFjcm9Bc3NlbWJs
ZXIuaCBpbiBIZWFkZXJzICovLAorCQkJCUUzNTVGMzUzMUI3REM4NTMwMEM1MERDNSAvKiBNb2R1
bGVMb2FkZXJPYmplY3QuaCBpbiBIZWFkZXJzICovLAogCQkJCTBGRTA1MDI5MUFBOTA5NTYwMEQz
M0IzMyAvKiBTY29wZWRBcmd1bWVudHNUYWJsZS5oIGluIEhlYWRlcnMgKi8sCiAJCQkJMEY1NUYw
RjUxNEQxMDYzQzAwQUM3NjQ5IC8qIEFic3RyYWN0UEMuaCBpbiBIZWFkZXJzICovLAogCQkJCTJB
NDhEMTkxMTc3MjM2NUIwMEM2NUE1RiAvKiBBUElDYWxsYmFja0Z1bmN0aW9uLmggaW4gSGVhZGVy
cyAqLywKQEAgLTYyMzgsNyArNjI1Miw2IEBACiAJCQkJMEZDRUZBQUMxODA0QzEzRTAwNDcyQ0U0
IC8qIEZUTFNhdmVSZXN0b3JlLmggaW4gSGVhZGVycyAqLywKIAkJCQkwRjI1RjFCMjE4MTYzNUYz
MDA1MjJGMzkgLyogRlRMU2xvd1BhdGhDYWxsLmggaW4gSGVhZGVycyAqLywKIAkJCQlFMzU0NjIy
QjFCNjA2NUQxMDA1NDUzODYgLyogQ29uc3RydWN0QWJpbGl0eS5oIGluIEhlYWRlcnMgKi8sCi0J
CQkJRTM5NjNDRUQxQjczRjc1MDAwRUI0Q0U1IC8qIE1vZHVsZVJlY29yZC5oIGluIEhlYWRlcnMg
Ki8sCiAJCQkJMEYyNUYxQjQxODE2MzVGMzAwNTIyRjM5IC8qIEZUTFNsb3dQYXRoQ2FsbEtleS5o
IGluIEhlYWRlcnMgKi8sCiAJCQkJMEY5RDMzOUIxODAzQURCNzAwNzNDMkJDIC8qIEZUTFN0YWNr
TWFwcy5oIGluIEhlYWRlcnMgKi8sCiAJCQkJMEZFQTBBMTIxNzA1MTNEQjAwQkI3MjJDIC8qIEZU
TFN0YXRlLmggaW4gSGVhZGVycyAqLywKQEAgLTYyNTksNiArNjI3Miw3IEBACiAJCQkJQkNCRTJD
QUUxNEU5ODVBQTAwMDU5M0FEIC8qIEdDQXNzZXJ0aW9ucy5oIGluIEhlYWRlcnMgKi8sCiAJCQkJ
MEY3NjZEMzAxNUE4RENFMjAwOEYzNjNFIC8qIEdDQXdhcmVKSVRTdHViUm91dGluZS5oIGluIEhl
YWRlcnMgKi8sCiAJCQkJNzBFQzBFQzcxQUEwRDdEQTAwQjZBQUZBIC8qIFN0cmluZ0l0ZXJhdG9y
UHJvdG90eXBlLmggaW4gSGVhZGVycyAqLywKKwkJCQlFMzlEQTRBNzFCN0U4QjdDMDA4NEYzM0Eg
LyogSlNNb2R1bGVSZWNvcmQuaCBpbiBIZWFkZXJzICovLAogCQkJCTBGMkI2NkFDMTdCNkI1M0Yw
MEE3QUUzRiAvKiBHQ0luY29taW5nUmVmQ291bnRlZC5oIGluIEhlYWRlcnMgKi8sCiAJCQkJMEYy
QjY2QUQxN0I2QjU0NTAwQTdBRTNGIC8qIEdDSW5jb21pbmdSZWZDb3VudGVkSW5saW5lcy5oIGlu
IEhlYWRlcnMgKi8sCiAJCQkJMEYyQjY2QUUxN0I2QjU0NTAwQTdBRTNGIC8qIEdDSW5jb21pbmdS
ZWZDb3VudGVkU2V0LmggaW4gSGVhZGVycyAqLywKQEAgLTczNzcsNiArNzM5MSw3IEBACiAJCQkJ
MkE4ODA2NzgxOTEwN0Q1NTAwQ0IwQkJCIC8qIERGR0Z1bmN0aW9uV2hpdGVsaXN0LmNwcCBpbiBT
b3VyY2VzICovLAogCQkJCTBGMkREODEzMUFCM0Q4QkUwMEJCQjhFOCAvKiBERkdBcmd1bWVudHNV
dGlsaXRpZXMuY3BwIGluIFNvdXJjZXMgKi8sCiAJCQkJQTdEODlDRjMxN0EwQjhDQzAwNzczQUQ4
IC8qIERGR0Jsb2NrSW5zZXJ0aW9uU2V0LmNwcCBpbiBTb3VyY2VzICovLAorCQkJCUUzNTVGMzUy
MUI3REM4NTMwMEM1MERDNSAvKiBNb2R1bGVMb2FkZXJPYmplY3QuY3BwIGluIFNvdXJjZXMgKi8s
CiAJCQkJODZFQzlEQzQxMzI4REY4MjAwMkIyQUQ3IC8qIERGR0J5dGVDb2RlUGFyc2VyLmNwcCBp
biBTb3VyY2VzICovLAogCQkJCTBGRDgyRTIxMTQxNzJDRTMwMDE3OUM5NCAvKiBERkdDYXBhYmls
aXRpZXMuY3BwIGluIFNvdXJjZXMgKi8sCiAJCQkJMEYyQjlDRTYxOUQwQkE3RDAwQjFEMUI1IC8q
IERGR09iamVjdEFsbG9jYXRpb25TaW5raW5nUGhhc2UuY3BwIGluIFNvdXJjZXMgKi8sCkBAIC03
NjY4LDcgKzc2ODMsNiBAQAogCQkJCTBGMkI2NkVEMTdCNkI1QUIwMEE3QUUzRiAvKiBKU0RhdGFW
aWV3UHJvdG90eXBlLmNwcCBpbiBTb3VyY2VzICovLAogCQkJCTBGMkQ0REU4MTk4MzJEQUMwMDdE
NEIxOSAvKiBUb1RoaXNTdGF0dXMuY3BwIGluIFNvdXJjZXMgKi8sCiAJCQkJRkUzODRFRTUxQURE
QjdBRDAwNTVERTJDIC8qIEpTRG9sbGFyVk0uY3BwIGluIFNvdXJjZXMgKi8sCi0JCQkJRTNDMDlG
NTUxQjc5NjkyQTAwRUUzNkEyIC8qIE1vZHVsZVJlY29yZC5jcHAgaW4gU291cmNlcyAqLywKIAkJ
CQk5Nzg4MDE0MDE0NzFBRDkyMDA0MUIwMTYgLyogSlNEYXRlTWF0aC5jcHAgaW4gU291cmNlcyAq
LywKIAkJCQkwRkUwNTAxNzFBQTkwOTExMDBEMzNCMzMgLyogRGlyZWN0QXJndW1lbnRzLmNwcCBp
biBTb3VyY2VzICovLAogCQkJCTE0MDU2NkQ2MTA3RUMyNzEwMDVEQkM4RCAvKiBKU0Z1bmN0aW9u
LmNwcCBpbiBTb3VyY2VzICovLApAQCAtNzkxMiw2ICs3OTI2LDcgQEAKIAkJCQkwRkY0MjczMjE1
OEVCRDU4MDA0Q0I5RkYgLyogVURpczg2RGlzYXNzZW1ibGVyLmNwcCBpbiBTb3VyY2VzICovLAog
CQkJCUE3NkYyNzk0MTVGMTNDOTYwMDUxN0Q2NyAvKiBVbmxpbmtlZENvZGVCbG9jay5jcHAgaW4g
U291cmNlcyAqLywKIAkJCQlCNTlGODkzOTE4OTFGMjlGMDBENUNDREMgLyogVW5saW5rZWRJbnN0
cnVjdGlvblN0cmVhbS5jcHAgaW4gU291cmNlcyAqLywKKwkJCQlFMzlEQTRBNjFCN0U4QjdDMDA4
NEYzM0EgLyogSlNNb2R1bGVSZWNvcmQuY3BwIGluIFNvdXJjZXMgKi8sCiAJCQkJMEY3NTc2RDIx
OEUxRkVFOTAwMkVGNENEIC8qIEFjY2Vzc29yQ2FsbEpJVFN0dWJSb3V0aW5lLmNwcCBpbiBTb3Vy
Y2VzICovLAogCQkJCTBGMjRFNTU4MTdGNzRFREIwMEFCQjIxNyAvKiBWYWx1ZVJlY292ZXJ5LmNw
cCBpbiBTb3VyY2VzICovLAogCQkJCUUxOEUzQTU5MERGOTI3OEMwMEQ5MEIzNCAvKiBWTS5jcHAg
aW4gU291cmNlcyAqLywKZGlmZiAtLWdpdCBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9idWlsdGlu
cy9CdWlsdGluTmFtZXMuaCBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9idWlsdGlucy9CdWlsdGlu
TmFtZXMuaAppbmRleCBjZTA0NDQ3OWY3MzAyZjE5YjFkODExNjhmOTllYzQ4MzViNDAyMjBhLi43
ZTU0MzQyZTc1MmY5ZjJkNGU4MzVlZDAzNGY0NjA5Y2YzNjVkMzlmIDEwMDY0NAotLS0gYS9Tb3Vy
Y2UvSmF2YVNjcmlwdENvcmUvYnVpbHRpbnMvQnVpbHRpbk5hbWVzLmgKKysrIGIvU291cmNlL0ph
dmFTY3JpcHRDb3JlL2J1aWx0aW5zL0J1aWx0aW5OYW1lcy5oCkBAIC02Nyw4ICs2Nyw4IEBAIGNs
YXNzIEJ1aWx0aW5OYW1lcyB7CiAgICAgYm9vbCBpc1ByaXZhdGVOYW1lKFN5bWJvbEltcGwmIHVp
ZCkgY29uc3Q7CiAgICAgYm9vbCBpc1ByaXZhdGVOYW1lKFVuaXF1ZWRTdHJpbmdJbXBsJiB1aWQp
IGNvbnN0OwogICAgIGJvb2wgaXNQcml2YXRlTmFtZShjb25zdCBJZGVudGlmaWVyJikgY29uc3Q7
Ci0gICAgY29uc3QgSWRlbnRpZmllciogZ2V0UHJpdmF0ZU5hbWUoY29uc3QgSWRlbnRpZmllciYp
IGNvbnN0OwotICAgIGNvbnN0IElkZW50aWZpZXImIGdldFB1YmxpY05hbWUoY29uc3QgSWRlbnRp
ZmllciYpIGNvbnN0OworICAgIGNvbnN0IElkZW50aWZpZXIqIGxvb2tVcFByaXZhdGVOYW1lKGNv
bnN0IElkZW50aWZpZXImKSBjb25zdDsKKyAgICBjb25zdCBJZGVudGlmaWVyJiBsb29rVXBQdWJs
aWNOYW1lKGNvbnN0IElkZW50aWZpZXImKSBjb25zdDsKICAgICAKICAgICBKU0NfRk9SRUFDSF9C
VUlMVElOX0ZVTkNUSU9OX05BTUUoREVDTEFSRV9CVUlMVElOX0lERU5USUZJRVJfQUNDRVNTT1Ip
CiAgICAgSlNDX0NPTU1PTl9QUklWQVRFX0lERU5USUZJRVJTX0VBQ0hfUFJPUEVSVFlfTkFNRShE
RUNMQVJFX0JVSUxUSU5fSURFTlRJRklFUl9BQ0NFU1NPUikKQEAgLTExMCw3ICsxMTAsNyBAQCBp
bmxpbmUgYm9vbCBCdWlsdGluTmFtZXM6OmlzUHJpdmF0ZU5hbWUoY29uc3QgSWRlbnRpZmllciYg
aWRlbnQpIGNvbnN0CiAgICAgcmV0dXJuIGlzUHJpdmF0ZU5hbWUoKmlkZW50LmltcGwoKSk7CiB9
CiAKLWlubGluZSBjb25zdCBJZGVudGlmaWVyKiBCdWlsdGluTmFtZXM6OmdldFByaXZhdGVOYW1l
KGNvbnN0IElkZW50aWZpZXImIGlkZW50KSBjb25zdAoraW5saW5lIGNvbnN0IElkZW50aWZpZXIq
IEJ1aWx0aW5OYW1lczo6bG9va1VwUHJpdmF0ZU5hbWUoY29uc3QgSWRlbnRpZmllciYgaWRlbnQp
IGNvbnN0CiB7CiAgICAgYXV0byBpdGVyID0gbV9wdWJsaWNUb1ByaXZhdGVNYXAuZmluZChpZGVu
dC5pbXBsKCkpOwogICAgIGlmIChpdGVyICE9IG1fcHVibGljVG9Qcml2YXRlTWFwLmVuZCgpKQpA
QCAtMTE4LDcgKzExOCw3IEBAIGlubGluZSBjb25zdCBJZGVudGlmaWVyKiBCdWlsdGluTmFtZXM6
OmdldFByaXZhdGVOYW1lKGNvbnN0IElkZW50aWZpZXImIGlkZW50KSBjCiAgICAgcmV0dXJuIDA7
CiB9CiAKLWlubGluZSBjb25zdCBJZGVudGlmaWVyJiBCdWlsdGluTmFtZXM6OmdldFB1YmxpY05h
bWUoY29uc3QgSWRlbnRpZmllciYgaWRlbnQpIGNvbnN0CitpbmxpbmUgY29uc3QgSWRlbnRpZmll
ciYgQnVpbHRpbk5hbWVzOjpsb29rVXBQdWJsaWNOYW1lKGNvbnN0IElkZW50aWZpZXImIGlkZW50
KSBjb25zdAogewogICAgIGF1dG8gaXRlciA9IG1fcHJpdmF0ZVRvUHVibGljTWFwLmZpbmQoaWRl
bnQuaW1wbCgpKTsKICAgICBpZiAoaXRlciAhPSBtX3ByaXZhdGVUb1B1YmxpY01hcC5lbmQoKSkK
ZGlmZiAtLWdpdCBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9idWlsdGlucy9Nb2R1bGVMb2FkZXJP
YmplY3QuanMgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvYnVpbHRpbnMvTW9kdWxlTG9hZGVyT2Jq
ZWN0LmpzCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAuLmU4OWI4MTZkZjcyMmJhYzY4MzI4NjM3N2ZiOWRhMTZmNzNhNjkw
ODYKLS0tIC9kZXYvbnVsbAorKysgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvYnVpbHRpbnMvTW9k
dWxlTG9hZGVyT2JqZWN0LmpzCkBAIC0wLDAgKzEsNDI3IEBACisvKgorICogQ29weXJpZ2h0IChD
KSAyMDE1IEFwcGxlIEluYy4gQWxsIHJpZ2h0cyByZXNlcnZlZC4KKyAqCisgKiBSZWRpc3RyaWJ1
dGlvbiBhbmQgdXNlIGluIHNvdXJjZSBhbmQgYmluYXJ5IGZvcm1zLCB3aXRoIG9yIHdpdGhvdXQK
KyAqIG1vZGlmaWNhdGlvbiwgYXJlIHBlcm1pdHRlZCBwcm92aWRlZCB0aGF0IHRoZSBmb2xsb3dp
bmcgY29uZGl0aW9ucworICogYXJlIG1ldDoKKyAqIDEuIFJlZGlzdHJpYnV0aW9ucyBvZiBzb3Vy
Y2UgY29kZSBtdXN0IHJldGFpbiB0aGUgYWJvdmUgY29weXJpZ2h0CisgKiAgICBub3RpY2UsIHRo
aXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIuCisgKiAy
LiBSZWRpc3RyaWJ1dGlvbnMgaW4gYmluYXJ5IGZvcm0gbXVzdCByZXByb2R1Y2UgdGhlIGFib3Zl
IGNvcHlyaWdodAorICogICAgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhl
IGZvbGxvd2luZyBkaXNjbGFpbWVyIGluIHRoZQorICogICAgZG9jdW1lbnRhdGlvbiBhbmQvb3Ig
b3RoZXIgbWF0ZXJpYWxzIHByb3ZpZGVkIHdpdGggdGhlIGRpc3RyaWJ1dGlvbi4KKyAqCisgKiBU
SElTIFNPRlRXQVJFIElTIFBST1ZJREVEIEJZIEFQUExFIElOQy4gYGBBUyBJUycnIEFORCBBTlkK
KyAqIEVYUFJFU1MgT1IgSU1QTElFRCBXQVJSQU5USUVTLCBJTkNMVURJTkcsIEJVVCBOT1QgTElN
SVRFRCBUTywgVEhFCisgKiBJTVBMSUVEIFdBUlJBTlRJRVMgT0YgTUVSQ0hBTlRBQklMSVRZIEFO
RCBGSVRORVNTIEZPUiBBIFBBUlRJQ1VMQVIKKyAqIFBVUlBPU0UgQVJFIERJU0NMQUlNRUQuICBJ
TiBOTyBFVkVOVCBTSEFMTCBBUFBMRSBJTkMuIE9SCisgKiBDT05UUklCVVRPUlMgQkUgTElBQkxF
IEZPUiBBTlkgRElSRUNULCBJTkRJUkVDVCwgSU5DSURFTlRBTCwgU1BFQ0lBTCwKKyAqIEVYRU1Q
TEFSWSwgT1IgQ09OU0VRVUVOVElBTCBEQU1BR0VTIChJTkNMVURJTkcsIEJVVCBOT1QgTElNSVRF
RCBUTywKKyAqIFBST0NVUkVNRU5UIE9GIFNVQlNUSVRVVEUgR09PRFMgT1IgU0VSVklDRVM7IExP
U1MgT0YgVVNFLCBEQVRBLCBPUgorICogUFJPRklUUzsgT1IgQlVTSU5FU1MgSU5URVJSVVBUSU9O
KSBIT1dFVkVSIENBVVNFRCBBTkQgT04gQU5ZIFRIRU9SWQorICogT0YgTElBQklMSVRZLCBXSEVU
SEVSIElOIENPTlRSQUNULCBTVFJJQ1QgTElBQklMSVRZLCBPUiBUT1JUCisgKiAoSU5DTFVESU5H
IE5FR0xJR0VOQ0UgT1IgT1RIRVJXSVNFKSBBUklTSU5HIElOIEFOWSBXQVkgT1VUIE9GIFRIRSBV
U0UKKyAqIE9GIFRISVMgU09GVFdBUkUsIEVWRU4gSUYgQURWSVNFRCBPRiBUSEUgUE9TU0lCSUxJ
VFkgT0YgU1VDSCBEQU1BR0UuCisgKi8KKworLy8gaHR0cHM6Ly93aGF0d2cuZ2l0aHViLmlvL2xv
YWRlci8jbG9hZGVyLW9iamVjdAorLy8gTW9kdWxlIExvYWRlciBoYXMgc2V2ZXJhbCBob29rcyB0
aGF0IGNhbiBiZSBjdXN0b21pemVkIGJ5IHRoZSBwbGF0Zm9ybS4KKy8vIEZvciBleGFtcGxlLCB0
aGUgW1tGZXRjaF1dIGhvb2sgY2FuIGJlIHByb3ZpZGVkIGJ5IHRoZSBKYXZhU2NyaXB0Q29yZSBz
aGVsbAorLy8gYXMgZmV0Y2hpbmcgdGhlIHBheWxvYWQgZnJvbSB0aGUgbG9jYWwgZmlsZSBzeXN0
ZW0uCisvLyBXZSBzdW1tYXJpemUgdGhlIGhvb2tzLgorLy8KKy8vIDEuIExvYWRlci5yZXNvbHZl
LgorLy8gICAgIGh0dHBzOi8vd2hhdHdnLmdpdGh1Yi5pby9sb2FkZXIvI2Jyb3dzZXItcmVzb2x2
ZQorLy8gICAgIFRha2UgdGhlIG5hbWUgYW5kIHJlc29sdmUgaXQgdG8gdGhlIHVuaXF1ZSBpZGVu
dGlmaWVyIGZvciB0aGUgcmVzb3VyY2UgbG9jYXRpb24uCisvLyAgICAgRm9yIGV4YW1wbGUsIHRh
a2UgdGhlICJqcXVlcnkiIGFuZCByZXR1cm4gdGhlIFVSTCBmb3IgdGhlIHJlc291cmNlLgorLy8K
Ky8vIDIuIExvYWRlci5mZXRjaAorLy8gICAgIGh0dHBzOi8vd2hhdHdnLmdpdGh1Yi5pby9sb2Fk
ZXIvI2Jyb3dzZXItZmV0Y2gKKy8vICAgICBUYWtlIHRoZSBrZXkgYW5kIGZldGNoIHRoZSByZXNv
dXJjZSBhY3R1YWxseS4KKy8vICAgICBGb3IgZXhhbXBsZSwgSmF2YVNjcmlwdENvcmUgc2hlbGwg
Y2FuIHByb3ZpZGUgdGhlIGhvb2sgZmV0Y2hpbmcgdGhlIHJlc291cmNlCisvLyAgICAgZnJvbSB0
aGUgbG9jYWwgZmlsZSBzeXN0ZW0uCisvLworLy8gMy4gTG9hZGVyLnRyYW5zbGF0ZQorLy8gICAg
IGh0dHBzOi8vd2hhdHdnLmdpdGh1Yi5pby9sb2FkZXIvI2Jyb3dzZXItdHJhbnNsYXRlCisvLyAg
ICAgVGFrZSB0aGUga2V5IGFuZCB0aGUgZmV0Y2hlZCBzb3VyY2UgY29kZSBhbmQgdHJhbnNsYXRl
IGl0IHRvIHRoZSBFUzYgc291cmNlIGNvZGUuCisvLyAgICAgVHlwaWNhbGx5IGl0IGlzIHVzZWQg
YnkgdGhlIHRyYW5zcGlsZXJzLgorLy8KKy8vIDQuIExvYWRlci5pbnN0YW50aWF0ZQorLy8gICAg
IGh0dHBzOi8vd2hhdHdnLmdpdGh1Yi5pby9sb2FkZXIvI2Jyb3dzZXItaW5zdGFudGlhdGUKKy8v
ICAgICBUYWtlIHRoZSBrZXkgYW5kIHRoZSB0cmFuc2xhdGVkIHNvdXJjZSBjb2RlLCBhbmQgaW5z
dGFudGlhdGUgdGhlIG1vZHVsZSByZWNvcmQKKy8vICAgICBieSBwYXJzaW5nIHRoZSBtb2R1bGUg
c291cmNlIGNvZGUuCisvLyAgICAgSXQgaGFzIHRoZSBjaGFuY2UgdG8gcHJvdmlkZSB0aGUgb3B0
aW9uYWwgbW9kdWxlIGluc3RhbmNlIHRoYXQgaXMgZGlmZmVyZW50IGZyb20KKy8vICAgICB0aGUg
b3JkaW5hcnkgb25lLgorCitmdW5jdGlvbiBzZXRTdGF0ZVRvTWF4KGVudHJ5LCBuZXdTdGF0ZSkK
K3sKKyAgICAvLyBodHRwczovL3doYXR3Zy5naXRodWIuaW8vbG9hZGVyLyNzZXQtc3RhdGUtdG8t
bWF4CisKKyAgICAidXNlIHN0cmljdCI7CisKKyAgICBpZiAoZW50cnkuc3RhdGUgPCBuZXdTdGF0
ZSkKKyAgICAgICAgZW50cnkuc3RhdGUgPSBuZXdTdGF0ZTsKK30KKworZnVuY3Rpb24gbmV3UmVn
aXN0cnlFbnRyeShrZXkpCit7CisgICAgLy8gaHR0cHM6Ly93aGF0d2cuZ2l0aHViLmlvL2xvYWRl
ci8jcmVnaXN0cnkKKyAgICAvLworICAgIC8vIEVhY2ggcmVnaXN0cnkgZW50cnkgYmVjb21lcyBv
bmUgb2YgdGhlIDUgc3RhdGVzLgorICAgIC8vIDEuIEZldGNoCisgICAgLy8gICAgIFJlYWR5IHRv
IGZldGNoIChvciBub3cgZmV0Y2hpbmcpIHRoZSByZXNvdXJjZSBvZiB0aGlzIG1vZHVsZS4KKyAg
ICAvLyAgICAgVHlwaWNhbGx5LCB3ZSBmZXRjaCB0aGUgc291cmNlIGNvZGUgb3ZlciB0aGUgbmV0
d29yayBvciBmcm9tIHRoZSBmaWxlIHN5c3RlbS4KKyAgICAvLyAgICAgYS4gSWYgdGhlIHN0YXR1
cyBpcyBGZXRjaCBhbmQgdGhlcmUgaXMgbm8gZW50cnkuZmV0Y2ggcHJvbWlzZSwgdGhlIGVudHJ5
IGlzIHJlYWR5IHRvIGZldGNoLgorICAgIC8vICAgICBiLiBJZiB0aGUgc3RhdHVzIGlzIEZldGNo
IGFuZCB0aGVyZSBpcyB0aGUgZW50cnkuZmV0Y2ggcHJvbWlzZSwgdGhlIGVudHJ5IGlzIGp1c3Qg
ZmV0Y2hpbmcgdGhlIHJlc291cmNlLgorICAgIC8vCisgICAgLy8gMi4gVHJhbnNsYXRlCisgICAg
Ly8gICAgIFJlYWR5IHRvIHRyYW5zbGF0ZSAob3Igbm93IHRyYW5zbGF0aW5nKSB0aGUgcmF3IGZl
dGNoZWQgcmVzb3VyY2UgdG8gdGhlIEVDTUFTY3JpcHQgc291cmNlIGNvZGUuCisgICAgLy8gICAg
IFdlIGNhbiBpbnNlcnQgdGhlIGhvb2sgdGhhdCB0cmFuc2xhdGVzIHRoZSByZXNvdXJjZXMgZS5n
LiB0cmFuc3BpbGVycy4KKyAgICAvLyAgICAgYS4gSWYgdGhlIHN0YXR1cyBpcyBUcmFuc2xhdGUg
YW5kIHRoZXJlIGlzIG5vIGVudHJ5LnRyYW5zbGF0ZSBwcm9taXNlLCB0aGUgZW50cnkgaXMgcmVh
ZHkgdG8gdHJhbnNsYXRlLgorICAgIC8vICAgICBiLiBJZiB0aGUgc3RhdHVzIGlzIFRyYW5zbGF0
ZSBhbmQgdGhlcmUgaXMgdGhlIGVudHJ5LnRyYW5zbGF0ZSBwcm9taXNlLCB0aGUgZW50cnkgaXMg
anVzdCB0cmFuc2xhdGluZworICAgIC8vICAgICAgICB0aGUgcGF5bG9hZCB0byB0aGUgc291cmNl
IGNvZGUuCisgICAgLy8KKyAgICAvLyAzLiBJbnN0YW50aWF0ZSAoQW5hbHl6ZU1vZHVsZSkKKyAg
ICAvLyAgICAgUmVhZHkgdG8gaW5zdGFudGlhdGUgKG9yIG5vdyBpbnN0YW50aWF0aW5nKSB0aGUg
bW9kdWxlIHJlY29yZCBmcm9tIHRoZSBmZXRjaGVkIChhbmQgdHJhbnNsYXRlZCkKKyAgICAvLyAg
ICAgc291cmNlIGNvZGUuCisgICAgLy8gICAgIFR5cGljYWxseSwgd2UgcGFyc2UgdGhlIG1vZHVs
ZSBjb2RlLCBleHRyYWN0IHRoZSBkZXBlbmRlbmNpZXMgYW5kIGJpbmRpbmcgaW5mb3JtYXRpb24u
CisgICAgLy8gICAgIGEuIElmIHRoZSBzdGF0dXMgaXMgSW5zdGFudGlhdGUgYW5kIHRoZXJlIGlz
IG5vIGVudHJ5Lmluc3RhbnRpYXRlIHByb21pc2UsIHRoZSBlbnRyeSBpcyByZWFkeSB0byBpbnN0
YW50aWF0ZS4KKyAgICAvLyAgICAgYi4gSWYgdGhlIHN0YXR1cyBpcyBJbnN0YW50aWF0ZSBhbmQg
dGhlcmUgaXMgdGhlIGVudHJ5LnRyYW5zbGF0ZSBwcm9taXNlLCB0aGUgZW50cnkgaXMganVzdCBp
bnN0YW50aWF0aW5nCisgICAgLy8gICAgICAgIHRoZSBtb2R1bGUgcmVjb3JkLgorICAgIC8vCisg
ICAgLy8gNC4gUmVzb2x2ZURlcGVuZGVuY2llcyAobm90IGluIHRoZSBkcmFmdCkgaHR0cHM6Ly9n
aXRodWIuY29tL3doYXR3Zy9sb2FkZXIvaXNzdWVzLzY4CisgICAgLy8gICAgIFJlYWR5IHRvIHJl
cXVlc3QgdGhlIGRlcGVuZGVudCBtb2R1bGVzIChvciBub3cgcmVxdWVzdGluZyAmIHJlc29sdmlu
ZykuCisgICAgLy8gICAgIFdpdGhvdXQgdGhpcyBzdGF0ZSwgdGhlIGN1cnJlbnQgZHJhZnQgY2F1
c2VzIGluZmluaXRlIHJlY3Vyc2lvbiB3aGVuIHRoZXJlIGlzIGNpcmN1bGFyIGRlcGVuZGVuY3ku
CisgICAgLy8gICAgIGEuIElmIHRoZSBzdGF0dXMgaXMgUmVzb2x2ZURlcGVuZGVuY2llcyBhbmQg
dGhlcmUgaXMgbm8gZW50cnkucmVzb2x2ZURlcGVuZGVuY2llcyBwcm9taXNlLCB0aGUgZW50cnkg
aXMgcmVhZHkgdG8gcmVzb2x2ZSB0aGUgZGVwZW5kZW5jaWVzLgorICAgIC8vICAgICBiLiBJZiB0
aGUgc3RhdHVzIGlzIFJlc29sdmVEZXBlbmRlbmNpZXMgYW5kIHRoZXJlIGlzIHRoZSBlbnRyeS5y
ZXNvbHZlRGVwZW5kZW5jaWVzIHByb21pc2UsIHRoZSBlbnRyeSBpcyBqdXN0IHJlc29sdmluZwor
ICAgIC8vICAgICAgICB0aGUgZGVwZW5kZW5jaWVzLgorICAgIC8vCisgICAgLy8gNS4gTGluawor
ICAgIC8vICAgICBSZWFkeSB0byBsaW5rIHRoZSBtb2R1bGUgd2l0aCB0aGUgb3RoZXIgbW9kdWxl
cy4KKyAgICAvLyAgICAgTGlua2luZyBtZWFucyB0aGF0IHRoZSBtb2R1bGUgaW1wb3J0cyBhbmQg
ZXhwb3J0cyB0aGUgYmluZGluZ3MgZnJvbS90byB0aGUgb3RoZXIgbW9kdWxlcy4KKyAgICAvLwor
ICAgIC8vIDYuIFJlYWR5CisgICAgLy8gICAgIFRoZSBtb2R1bGUgaXMgbGlua2VkLCBzbyB0aGUg
bW9kdWxlIGlzIHJlYWR5IHRvIGJlIGV4ZWN1dGVkLgorICAgIC8vCisgICAgLy8gRWFjaCByZWdp
c3RyeSBlbnRyeSBoYXMgdGhlIDQgcHJvbWlzZXM7ICJmZXRjaCIsICJ0cmFuc2xhdGUiLCAiaW5z
dGFudGlhdGUiIGFuZCAicmVzb2x2ZURlcGVuZGVuY2llcyIuCisgICAgLy8gVGhleSBhcmUgYXNz
aWduZWQgd2hlbiBzdGFydGluZyB0aGUgZWFjaCBwaGFzZS4gQW5kIHRoZXkgYXJlIGZ1bGZpbGxl
ZCB3aGVuIHRoZSBlYWNoIHBoYXNlIGlzIGNvbXBsZXRlZC4KKyAgICAvLworICAgIC8vIEluIHRo
ZSBjdXJyZW50IG1vZHVsZSBkcmFmdCwgbGlua2luZyB3aWxsIGJlIHBlcmZvcm1lZCBhZnRlciB0
aGUgd2hvbGUgbW9kdWxlcyBhcmUgaW5zdGFudGlhdGVkIGFuZCB0aGUgZGVwZW5kZW5jaWVzIGFy
ZSByZXNvbHZlZC4KKyAgICAvLyBBbmQgZXhlY3V0aW9uIGlzIGFsc28gZG9uZSBhZnRlciB0aGUg
YWxsIG1vZHVsZXMgYXJlIGxpbmtlZC4KKyAgICAvLworICAgIC8vIFRPRE86IFdlIG5lZWQgdG8g
ZXhwbG9pdCB0aGUgd2F5IHRvIGV4ZWN1dGUgdGhlIG1vZHVsZSB3aGlsZSBmZXRjaGluZyBub24t
cmVsYXRlZCBtb2R1bGVzLgorICAgIC8vIE9uZSBzb2x1dGlvbjsgaW50cm9kdWNpbmcgdGhlIHJl
YWR5IHByb21pc2UgY2hhaW4gdG8gZXhlY3V0ZSB0aGUgbW9kdWxlcyBjb25jdXJyZW50bHkgd2hp
bGUga2VlcGluZworICAgIC8vIHRoZSBleGVjdXRpb24gb3JkZXIuCisKKyAgICAidXNlIHN0cmlj
dCI7CisKKyAgICByZXR1cm4geworICAgICAgICBrZXk6IGtleSwKKyAgICAgICAgc3RhdGU6IHRo
aXMuRmV0Y2gsCisgICAgICAgIG1ldGFkYXRhOiB1bmRlZmluZWQsCisgICAgICAgIGZldGNoOiB1
bmRlZmluZWQsCisgICAgICAgIHRyYW5zbGF0ZTogdW5kZWZpbmVkLAorICAgICAgICBpbnN0YW50
aWF0ZTogdW5kZWZpbmVkLAorICAgICAgICByZXNvbHZlRGVwZW5kZW5jaWVzOiB1bmRlZmluZWQs
CisgICAgICAgIGRlcGVuZGVuY2llczogW10sIC8vIFRvIGtlZXAgdGhlIG1vZHVsZSBvcmRlciwg
d2Ugc3RvcmUgdGhlIG1vZHVsZSBrZXlzIGluIHRoZSBhcnJheS4KKyAgICAgICAgZGVwZW5kZW5j
aWVzTWFwOiB1bmRlZmluZWQsCisgICAgICAgIG1vZHVsZTogdW5kZWZpbmVkLCAvLyBKU01vZHVs
ZVJlY29yZAorICAgICAgICBlcnJvcjogdW5kZWZpbmVkLAorICAgIH07Cit9CisKK2Z1bmN0aW9u
IGVuc3VyZVJlZ2lzdGVyZWQoa2V5KQoreworICAgIC8vIGh0dHBzOi8vd2hhdHdnLmdpdGh1Yi5p
by9sb2FkZXIvI2Vuc3VyZS1yZWdpc3RlcmVkCisKKyAgICAidXNlIHN0cmljdCI7CisKKyAgICB2
YXIgZW50cnkgPSB0aGlzLnJlZ2lzdHJ5LkBnZXQoa2V5KTsKKyAgICBpZiAoZW50cnkpCisgICAg
ICAgIHJldHVybiBlbnRyeTsKKworICAgIGVudHJ5ID0gdGhpcy5uZXdSZWdpc3RyeUVudHJ5KGtl
eSk7CisgICAgdGhpcy5yZWdpc3RyeS5Ac2V0KGtleSwgZW50cnkpOworCisgICAgcmV0dXJuIGVu
dHJ5OworfQorCitmdW5jdGlvbiBmb3JjZUZ1bGZpbGxQcm9taXNlKHByb21pc2UsIHZhbHVlKQor
eworICAgICJ1c2Ugc3RyaWN0IjsKKworICAgIGlmIChwcm9taXNlLkBwcm9taXNlU3RhdGUgPT09
IEBwcm9taXNlUGVuZGluZykKKyAgICAgICAgQGZ1bGZpbGxQcm9taXNlKHByb21pc2UsIHZhbHVl
KTsKK30KKworZnVuY3Rpb24gZnVsZmlsbEZldGNoKGVudHJ5LCBwYXlsb2FkKQoreworICAgIC8v
IGh0dHBzOi8vd2hhdHdnLmdpdGh1Yi5pby9sb2FkZXIvI2Z1bGZpbGwtZmV0Y2gKKworICAgICJ1
c2Ugc3RyaWN0IjsKKworICAgIGlmICghZW50cnkuZmV0Y2gpCisgICAgICAgIGVudHJ5LmZldGNo
ID0gQG5ld1Byb21pc2VDYXBhYmlsaXR5KEBJbnRlcm5hbFByb21pc2UpLkBwcm9taXNlOworICAg
IHRoaXMuZm9yY2VGdWxmaWxsUHJvbWlzZShlbnRyeS5mZXRjaCwgcGF5bG9hZCk7CisgICAgdGhp
cy5zZXRTdGF0ZVRvTWF4KGVudHJ5LCB0aGlzLlRyYW5zbGF0ZSk7Cit9CisKK2Z1bmN0aW9uIGZ1
bGZpbGxUcmFuc2xhdGUoZW50cnksIHNvdXJjZSkKK3sKKyAgICAvLyBodHRwczovL3doYXR3Zy5n
aXRodWIuaW8vbG9hZGVyLyNmdWxmaWxsLXRyYW5zbGF0ZQorCisgICAgInVzZSBzdHJpY3QiOwor
CisgICAgaWYgKCFlbnRyeS50cmFuc2xhdGUpCisgICAgICAgIGVudHJ5LnRyYW5zbGF0ZSA9IEBu
ZXdQcm9taXNlQ2FwYWJpbGl0eShASW50ZXJuYWxQcm9taXNlKS5AcHJvbWlzZTsKKyAgICB0aGlz
LmZvcmNlRnVsZmlsbFByb21pc2UoZW50cnkudHJhbnNsYXRlLCBzb3VyY2UpOworICAgIHRoaXMu
c2V0U3RhdGVUb01heChlbnRyeSwgdGhpcy5JbnN0YW50aWF0ZSk7Cit9CisKK2Z1bmN0aW9uIGZ1
bGZpbGxJbnN0YW50aWF0ZShlbnRyeSwgb3B0aW9uYWxJbnN0YW5jZSwgc291cmNlKQoreworICAg
IC8vIGh0dHBzOi8vd2hhdHdnLmdpdGh1Yi5pby9sb2FkZXIvI2Z1bGZpbGwtaW5zdGFudGlhdGUK
KworICAgICJ1c2Ugc3RyaWN0IjsKKworICAgIGlmICghZW50cnkuaW5zdGFudGlhdGUpCisgICAg
ICAgIGVudHJ5Lmluc3RhbnRpYXRlID0gQG5ld1Byb21pc2VDYXBhYmlsaXR5KEBJbnRlcm5hbFBy
b21pc2UpLkBwcm9taXNlOworICAgIHRoaXMuY29tbWl0SW5zdGFudGlhdGVkKGVudHJ5LCBvcHRp
b25hbEluc3RhbmNlLCBzb3VyY2UpOworCisgICAgLy8gRklYTUU6IFRoZSBkcmFmdCBmdWxmaWxs
cyB0aGUgcHJvbWlzZSBpbiB0aGUgQ29tbWl0SW5zdGFudGlhdGVkIG9wZXJhdGlvbi4KKyAgICAv
LyBCdXQgaXQgQ29tbWl0SW5zdGFudGlhdGVkIGlzIGFsc28gdXNlZCBpbiB0aGUgcmVxdWVzdElu
c3RhbnRpYXRlIGFuZAorICAgIC8vIHdlIHNob3VsZCBub3QgImZvcmNlIGZ1bGZpbGwiIHRoZXJl
LgorICAgIC8vIFNvIHdlIHNlcGFyYXRlICJmb3JjZSBmdWxmaWxsIiBvcGVyYXRpb24gZnJvbSB0
aGUgQ29tbWl0SW5zdGFudGlhdGVkIG9wZXJhdGlvbi4KKyAgICAvLyBodHRwczovL2dpdGh1Yi5j
b20vd2hhdHdnL2xvYWRlci9wdWxsLzY3CisgICAgdGhpcy5mb3JjZUZ1bGZpbGxQcm9taXNlKGVu
dHJ5Lmluc3RhbnRpYXRlLCBlbnRyeSk7Cit9CisKK2Z1bmN0aW9uIGNvbW1pdEluc3RhbnRpYXRl
ZChlbnRyeSwgb3B0aW9uYWxJbnN0YW5jZSwgc291cmNlKQoreworICAgIC8vIGh0dHBzOi8vd2hh
dHdnLmdpdGh1Yi5pby9sb2FkZXIvI2NvbW1pdC1pbnN0YW50aWF0ZWQKKworICAgICJ1c2Ugc3Ry
aWN0IjsKKworICAgIHZhciBtb2R1bGVSZWNvcmQgPSB0aGlzLmluc3RhbnRpYXRpb24ob3B0aW9u
YWxJbnN0YW5jZSwgc291cmNlLCBlbnRyeSk7CisKKyAgICAvLyBGSVhNRTogRGVzY3JpYmVkIGlu
IHRoZSBkcmFmdCwKKyAgICAvLyAgIDQuIEZ1bGZpbGwgZW50cnkuW1tJbnN0YW50aWF0ZV1dIHdp
dGggaW5zdGFuY2UuCisgICAgLy8gQnV0LCBpbnN0YW50aWF0ZSBwcm9taXNlIHNob3VsZCBiZSBm
dWxmaWxsZWQgd2l0aCB0aGUgZW50cnkuCisgICAgLy8gV2UgcmVtb3ZlIHRoaXMgc3RhdGVtZW50
IGJlY2F1c2UgaW5zdGFudGlhdGUgcHJvbWlzZSB3aWxsIGJlCisgICAgLy8gZnVsZmlsbGVkIHdp
dGhvdXQgdGhpcyAiZm9yY2UgZnVsZmlsbCIgb3BlcmF0aW9uLgorICAgIC8vIGh0dHBzOi8vZ2l0
aHViLmNvbS93aGF0d2cvbG9hZGVyL3B1bGwvNjcKKworICAgIHZhciBkZXBlbmRlbmNpZXMgPSBb
XTsKKyAgICB2YXIgZGVwZW5kZW5jaWVzTWFwID0gbmV3IEBNYXAoKTsKKyAgICBtb2R1bGVSZWNv
cmQucmVnaXN0cnlFbnRyeSA9IGVudHJ5OworICAgIHZhciByZXF1ZXN0ZWRNb2R1bGVzID0gdGhp
cy5yZXF1ZXN0ZWRNb2R1bGVzKG1vZHVsZVJlY29yZCk7CisgICAgZm9yICh2YXIgaSA9IDAsIGxl
bmd0aCA9IHJlcXVlc3RlZE1vZHVsZXMubGVuZ3RoOyBpIDwgbGVuZ3RoOyArK2kpIHsKKyAgICAg
ICAgdmFyIGRlcEtleSA9IHJlcXVlc3RlZE1vZHVsZXNbaV07CisgICAgICAgIHZhciBwYWlyID0g
eworICAgICAgICAgICAga2V5OiBkZXBLZXksCisgICAgICAgICAgICB2YWx1ZTogdW5kZWZpbmVk
CisgICAgICAgIH07CisgICAgICAgIEBwdXRCeVZhbERpcmVjdChkZXBlbmRlbmNpZXMsIGksIHBh
aXIpOworICAgICAgICBkZXBlbmRlbmNpZXNNYXAuQHNldChkZXBLZXksIHBhaXIpOworICAgIH0K
KyAgICBlbnRyeS5kZXBlbmRlbmNpZXMgPSBkZXBlbmRlbmNpZXM7CisgICAgZW50cnkuZGVwZW5k
ZW5jaWVzTWFwID0gZGVwZW5kZW5jaWVzTWFwOworICAgIGVudHJ5Lm1vZHVsZSA9IG1vZHVsZVJl
Y29yZDsKKyAgICB0aGlzLnNldFN0YXRlVG9NYXgoZW50cnksIHRoaXMuUmVzb2x2ZURlcGVuZGVu
Y2llcyk7Cit9CisKK2Z1bmN0aW9uIGluc3RhbnRpYXRpb24ocmVzdWx0LCBzb3VyY2UsIGVudHJ5
KQoreworICAgIC8vIGh0dHBzOi8vd2hhdHdnLmdpdGh1Yi5pby9sb2FkZXIvI2luc3RhbnRpYXRp
b24KKyAgICAvLyBGSVhNRTogQ3VycmVudCBpbXBsZW1lbnRhdGlvbiBkb2VzIG5vdCBzdXBwb3J0
IG9wdGlvbmFsSW5zdGFuY2UuCisgICAgLy8gaHR0cHM6Ly9idWdzLndlYmtpdC5vcmcvc2hvd19i
dWcuY2dpP2lkPTE0ODE3MQorCisgICAgInVzZSBzdHJpY3QiOworCisgICAgcmV0dXJuIHRoaXMu
cGFyc2VNb2R1bGUoZW50cnkua2V5LCBzb3VyY2UpOworfQorCisvLyBMb2FkZXIuCisKK2Z1bmN0
aW9uIHJlcXVlc3RGZXRjaChrZXkpCit7CisgICAgLy8gaHR0cHM6Ly93aGF0d2cuZ2l0aHViLmlv
L2xvYWRlci8jcmVxdWVzdC1mZXRjaAorCisgICAgInVzZSBzdHJpY3QiOworCisgICAgdmFyIGVu
dHJ5ID0gdGhpcy5lbnN1cmVSZWdpc3RlcmVkKGtleSk7CisgICAgaWYgKGVudHJ5LnN0YXRlID4g
dGhpcy5MaW5rKSB7CisgICAgICAgIHZhciBkZWZlcnJlZCA9IEBuZXdQcm9taXNlQ2FwYWJpbGl0
eShASW50ZXJuYWxQcm9taXNlKTsKKyAgICAgICAgZGVmZXJyZWQuQHJlamVjdC5AY2FsbCh1bmRl
ZmluZWQsIG5ldyBAVHlwZUVycm9yKCJSZXF1ZXN0ZWQgbW9kdWxlIGlzIGFscmVhZHkgcmVhZHkg
dG8gYmUgZXhlY3V0ZWQuIikpOworICAgICAgICByZXR1cm4gZGVmZXJyZWQuQHByb21pc2U7Cisg
ICAgfQorCisgICAgaWYgKGVudHJ5LmZldGNoKQorICAgICAgICByZXR1cm4gZW50cnkuZmV0Y2g7
CisKKyAgICB2YXIgbG9hZGVyID0gdGhpczsKKyAgICB2YXIgZmV0Y2hQcm9taXNlID0gdGhpcy5m
ZXRjaChrZXkpLnRoZW4oZnVuY3Rpb24gKHBheWxvYWQpIHsKKyAgICAgICAgbG9hZGVyLnNldFN0
YXRlVG9NYXgoZW50cnksIGxvYWRlci5UcmFuc2xhdGUpOworICAgICAgICByZXR1cm4gcGF5bG9h
ZDsKKyAgICB9KTsKKyAgICBlbnRyeS5mZXRjaCA9IGZldGNoUHJvbWlzZTsKKyAgICByZXR1cm4g
ZmV0Y2hQcm9taXNlOworfQorCitmdW5jdGlvbiByZXF1ZXN0VHJhbnNsYXRlKGtleSkKK3sKKyAg
ICAvLyBodHRwczovL3doYXR3Zy5naXRodWIuaW8vbG9hZGVyLyNyZXF1ZXN0LXRyYW5zbGF0ZQor
CisgICAgInVzZSBzdHJpY3QiOworCisgICAgdmFyIGVudHJ5ID0gdGhpcy5lbnN1cmVSZWdpc3Rl
cmVkKGtleSk7CisgICAgaWYgKGVudHJ5LnN0YXRlID4gdGhpcy5MaW5rKSB7CisgICAgICAgIHZh
ciBkZWZlcnJlZCA9IEBuZXdQcm9taXNlQ2FwYWJpbGl0eShASW50ZXJuYWxQcm9taXNlKTsKKyAg
ICAgICAgZGVmZXJyZWQuQHJlamVjdC5AY2FsbCh1bmRlZmluZWQsIG5ldyBAVHlwZUVycm9yKCJS
ZXF1ZXN0ZWQgbW9kdWxlIGlzIGFscmVhZHkgcmVhZHkgdG8gYmUgZXhlY3V0ZWQuIikpOworICAg
ICAgICByZXR1cm4gZGVmZXJyZWQuQHByb21pc2U7CisgICAgfQorCisgICAgaWYgKGVudHJ5LnRy
YW5zbGF0ZSkKKyAgICAgICAgcmV0dXJuIGVudHJ5LnRyYW5zbGF0ZTsKKworICAgIHZhciBsb2Fk
ZXIgPSB0aGlzOworICAgIHZhciB0cmFuc2xhdGVQcm9taXNlID0gdGhpcy5yZXF1ZXN0RmV0Y2go
a2V5KS50aGVuKGZ1bmN0aW9uIChwYXlsb2FkKSB7CisgICAgICAgIHJldHVybiBsb2FkZXIudHJh
bnNsYXRlKGtleSwgcGF5bG9hZCkudGhlbihmdW5jdGlvbiAoc291cmNlKSB7CisgICAgICAgICAg
ICBsb2FkZXIuc2V0U3RhdGVUb01heChlbnRyeSwgbG9hZGVyLkluc3RhbnRpYXRlKTsKKyAgICAg
ICAgICAgIHJldHVybiBzb3VyY2U7CisgICAgICAgIH0pOworICAgIH0pOworICAgIGVudHJ5LnRy
YW5zbGF0ZSA9IHRyYW5zbGF0ZVByb21pc2U7CisgICAgcmV0dXJuIHRyYW5zbGF0ZVByb21pc2U7
Cit9CisKK2Z1bmN0aW9uIHJlcXVlc3RJbnN0YW50aWF0ZShrZXkpCit7CisgICAgLy8gaHR0cHM6
Ly93aGF0d2cuZ2l0aHViLmlvL2xvYWRlci8jcmVxdWVzdC1pbnN0YW50aWF0ZQorCisgICAgInVz
ZSBzdHJpY3QiOworCisgICAgdmFyIGVudHJ5ID0gdGhpcy5lbnN1cmVSZWdpc3RlcmVkKGtleSk7
CisgICAgaWYgKGVudHJ5LnN0YXRlID4gdGhpcy5MaW5rKSB7CisgICAgICAgIHZhciBkZWZlcnJl
ZCA9IEBuZXdQcm9taXNlQ2FwYWJpbGl0eShASW50ZXJuYWxQcm9taXNlKTsKKyAgICAgICAgZGVm
ZXJyZWQuQHJlamVjdC5AY2FsbCh1bmRlZmluZWQsIG5ldyBAVHlwZUVycm9yKCJSZXF1ZXN0ZWQg
bW9kdWxlIGlzIGFscmVhZHkgcmVhZHkgdG8gYmUgZXhlY3V0ZWQuIikpOworICAgICAgICByZXR1
cm4gZGVmZXJyZWQuQHByb21pc2U7CisgICAgfQorCisgICAgaWYgKGVudHJ5Lmluc3RhbnRpYXRl
KQorICAgICAgICByZXR1cm4gZW50cnkuaW5zdGFudGlhdGU7CisKKyAgICB2YXIgbG9hZGVyID0g
dGhpczsKKyAgICB2YXIgaW5zdGFudGlhdGVQcm9taXNlID0gdGhpcy5yZXF1ZXN0VHJhbnNsYXRl
KGtleSkudGhlbihmdW5jdGlvbiAoc291cmNlKSB7CisgICAgICAgIHJldHVybiBsb2FkZXIuaW5z
dGFudGlhdGUoa2V5LCBzb3VyY2UpLnRoZW4oZnVuY3Rpb24gKG9wdGlvbmFsSW5zdGFuY2UpIHsK
KyAgICAgICAgICAgIGxvYWRlci5jb21taXRJbnN0YW50aWF0ZWQoZW50cnksIG9wdGlvbmFsSW5z
dGFuY2UsIHNvdXJjZSk7CisgICAgICAgICAgICByZXR1cm4gZW50cnk7CisgICAgICAgIH0pOwor
ICAgIH0pOworICAgIGVudHJ5Lmluc3RhbnRpYXRlID0gaW5zdGFudGlhdGVQcm9taXNlOworICAg
IHJldHVybiBpbnN0YW50aWF0ZVByb21pc2U7Cit9CisKK2Z1bmN0aW9uIHJlcXVlc3RSZXNvbHZl
RGVwZW5kZW5jaWVzKGtleSkKK3sKKyAgICAvLyBGSVhNRTogSW4gdGhlIHNwZWMsIGFmdGVyIHJl
cXVlc3RpbmcgaW5zdGFudGlhdGlvbiwgd2Ugd2lsbCByZXNvbHZlCisgICAgLy8gdGhlIGRlcGVu
ZGVuY2llcyB3aXRob3V0IGFueSBzdGF0dXMgY2hhbmdlLiBBcyBhIHJlc3VsdCwgd2hlbiB0aGVy
ZQorICAgIC8vIGlzIGNpcmN1bGFyIGRlcGVuZGVuY2llcywgaW5zdGFudGlhdGlvbiBpcyBkb25l
IG9ubHkgb25jZSwgYnV0CisgICAgLy8gcmVwZWF0ZWRseSByZXNvbHZpbmcgdGhlIGRlcGVuZGVu
Y2llcy4gVGhpcyBtZWFucyB0aGF0IGluZmluaXRlCisgICAgLy8gcmVjdXJzaW9uIG9jY3VyIHdo
ZW4gdGhlIGdpdmVuIG1vZHVsZXMgaGF2ZSBjaXJjdWxhciBkZXBlbmRlbmN5LiBUbworICAgIC8v
IGF2b2lkIHRoaXMgc2l0dWF0aW9uLCB3ZSBpbnRyb2R1Y2UgbmV3IHN0YXRlLCAiUmVzb2x2ZURl
cGVuZGVuY2llcyIuIFRoaXMgbWVhbnMKKyAgICAvLyAiTm93IHRoZSBtb2R1bGUgaXMgaW5zdGFu
dGlhdGVkLCBzbyByZWFkeSB0byByZXNvbHZlIHRoZSBkZXBlbmRlbmNpZXMKKyAgICAvLyBvciBu
b3cgcmVzb2x2aW5nIHRoZW0iLgorICAgIC8vIGh0dHBzOi8vZ2l0aHViLmNvbS93aGF0d2cvbG9h
ZGVyL2lzc3Vlcy82OAorCisgICAgInVzZSBzdHJpY3QiOworCisgICAgdmFyIGVudHJ5ID0gdGhp
cy5lbnN1cmVSZWdpc3RlcmVkKGtleSk7CisgICAgaWYgKGVudHJ5LnN0YXRlID4gdGhpcy5MaW5r
KSB7CisgICAgICAgIHZhciBkZWZlcnJlZCA9IEBuZXdQcm9taXNlQ2FwYWJpbGl0eShASW50ZXJu
YWxQcm9taXNlKTsKKyAgICAgICAgZGVmZXJyZWQuQHJlamVjdC5AY2FsbCh1bmRlZmluZWQsIG5l
dyBAVHlwZUVycm9yKCJSZXF1ZXN0ZWQgbW9kdWxlIGlzIGFscmVhZHkgcmVhZHkgdG8gYmUgZXhl
Y3V0ZWQuIikpOworICAgICAgICByZXR1cm4gZGVmZXJyZWQuQHByb21pc2U7CisgICAgfQorCisg
ICAgaWYgKGVudHJ5LnJlc29sdmVEZXBlbmRlbmNpZXMpCisgICAgICAgIHJldHVybiBlbnRyeS5y
ZXNvbHZlRGVwZW5kZW5jaWVzOworCisgICAgdmFyIGxvYWRlciA9IHRoaXM7CisgICAgdmFyIHJl
c29sdmVEZXBlbmRlbmNpZXNQcm9taXNlID0gdGhpcy5yZXF1ZXN0SW5zdGFudGlhdGUoa2V5KS50
aGVuKGZ1bmN0aW9uIChlbnRyeSkgeworICAgICAgICB2YXIgZGVwTG9hZHMgPSBbXTsKKyAgICAg
ICAgZm9yICh2YXIgaSA9IDAsIGxlbmd0aCA9IGVudHJ5LmRlcGVuZGVuY2llcy5sZW5ndGg7IGkg
PCBsZW5ndGg7ICsraSkgeworICAgICAgICAgICAgdmFyIHBhaXIgPSBlbnRyeS5kZXBlbmRlbmNp
ZXNbaV07CisgICAgICAgICAgICB2YXIgcHJvbWlzZSA9IGxvYWRlci5yZXNvbHZlKHBhaXIua2V5
LCBrZXkpLnRoZW4oZnVuY3Rpb24gKGRlcEtleSkgeworICAgICAgICAgICAgICAgIHZhciBkZXBF
bnRyeSA9IGxvYWRlci5lbnN1cmVSZWdpc3RlcmVkKGRlcEtleSk7CisKKyAgICAgICAgICAgICAg
ICAvLyBSZWN1cnNpdmUgcmVzb2x2aW5nLiBUaGUgZGVwZW5kZW5jaWVzIG9mIHRoaXMgZW50cnkg
aXMgYmVpbmcgcmVzb2x2ZWQgb3IgYWxyZWFkeSByZXNvbHZlZC4KKyAgICAgICAgICAgICAgICAv
LyBTdG9wIHRyYWNpbmcgdGhlIGNpcmN1bGFyIGRlcGVuZGVuY2llcy4KKyAgICAgICAgICAgICAg
ICBpZiAoZGVwRW50cnkucmVzb2x2ZURlcGVuZGVuY2llcykgeworICAgICAgICAgICAgICAgICAg
ICBwYWlyLnZhbHVlID0gZGVwRW50cnkubW9kdWxlOworICAgICAgICAgICAgICAgICAgICByZXR1
cm4gZGVwRW50cnk7CisgICAgICAgICAgICAgICAgfQorCisgICAgICAgICAgICAgICAgcmV0dXJu
IGxvYWRlci5yZXF1ZXN0UmVzb2x2ZURlcGVuZGVuY2llcyhkZXBLZXkpLnRoZW4oZnVuY3Rpb24g
KGVudHJ5KSB7CisgICAgICAgICAgICAgICAgICAgIC8vIEZJWE1FOiBUaGUgcmVzdWx0IHByb21p
c2Ugb2YgdGhlIHJlcXVlc3RJbnN0YW50aWF0ZUFsbCBzaG91bGQgYmUgZnVsZmlsbGVkIHdpdGgK
KyAgICAgICAgICAgICAgICAgICAgLy8gdGhlIHJlZ2lzdHJ5IGVudHJ5LgorICAgICAgICAgICAg
ICAgICAgICAvLyBodHRwczovL2dpdGh1Yi5jb20vd2hhdHdnL2xvYWRlci9wdWxsLzY2CisgICAg
ICAgICAgICAgICAgICAgIHBhaXIudmFsdWUgPSBlbnRyeS5tb2R1bGU7CisgICAgICAgICAgICAg
ICAgICAgIHJldHVybiBlbnRyeTsKKyAgICAgICAgICAgICAgICB9KTsKKyAgICAgICAgICAgIH0p
OworICAgICAgICAgICAgQHB1dEJ5VmFsRGlyZWN0KGRlcExvYWRzLCBpLCBwcm9taXNlKTsKKyAg
ICAgICAgfQorCisgICAgICAgIHJldHVybiBASW50ZXJuYWxQcm9taXNlLmludGVybmFsQWxsKGRl
cExvYWRzKS50aGVuKGZ1bmN0aW9uIChtb2R1bGVzKSB7CisgICAgICAgICAgICBsb2FkZXIuc2V0
U3RhdGVUb01heChlbnRyeSwgbG9hZGVyLkxpbmspOworICAgICAgICAgICAgcmV0dXJuIGVudHJ5
OworICAgICAgICB9KTsKKyAgICB9KTsKKworICAgIGVudHJ5LnJlc29sdmVEZXBlbmRlbmNpZXMg
PSByZXNvbHZlRGVwZW5kZW5jaWVzUHJvbWlzZTsKKyAgICByZXR1cm4gcmVzb2x2ZURlcGVuZGVu
Y2llc1Byb21pc2U7Cit9CisKK2Z1bmN0aW9uIHJlcXVlc3RJbnN0YW50aWF0ZUFsbChrZXkpCit7
CisgICAgLy8gaHR0cHM6Ly93aGF0d2cuZ2l0aHViLmlvL2xvYWRlci8jcmVxdWVzdC1pbnN0YW50
aWF0ZS1hbGwKKworICAgICJ1c2Ugc3RyaWN0IjsKKworICAgIHJldHVybiB0aGlzLnJlcXVlc3RS
ZXNvbHZlRGVwZW5kZW5jaWVzKGtleSk7Cit9CisKK2Z1bmN0aW9uIHByb3ZpZGUoa2V5LCBzdGFn
ZSwgdmFsdWUpCit7CisgICAgInVzZSBzdHJpY3QiOworCisgICAgdmFyIGVudHJ5ID0gdGhpcy5l
bnN1cmVSZWdpc3RlcmVkKGtleSk7CisKKyAgICBpZiAoc3RhZ2UgPT09IHRoaXMuRmV0Y2gpIHsK
KyAgICAgICAgaWYgKGVudHJ5LnN0YXR1cyA+IHRoaXMuRmV0Y2gpCisgICAgICAgICAgICB0aHJv
dyBuZXcgQFR5cGVFcnJvcigiUmVxdWVzdGVkIG1vZHVsZSBpcyBhbHJlYWR5IGZldGNoZWQuIik7
CisgICAgICAgIHRoaXMuZnVsZmlsbEZldGNoKGVudHJ5LCB2YWx1ZSk7CisgICAgICAgIHJldHVy
bjsKKyAgICB9CisKKyAgICBpZiAoc3RhZ2UgPT09IHRoaXMuVHJhbnNsYXRlKSB7CisgICAgICAg
IGlmIChlbnRyeS5zdGF0dXMgPiB0aGlzLlRyYW5zbGF0ZSkKKyAgICAgICAgICAgIHRocm93IG5l
dyBAVHlwZUVycm9yKCJSZXF1ZXN0ZWQgbW9kdWxlIGlzIGFscmVhZHkgdHJhbnNsYXRlZC4iKTsK
KyAgICAgICAgdGhpcy5mdWxmaWxsRmV0Y2goZW50cnksIHVuZGVmaW5lZCk7CisgICAgICAgIHRo
aXMuZnVsZmlsbFRyYW5zbGF0ZShlbnRyeSwgdmFsdWUpOworICAgICAgICByZXR1cm47CisgICAg
fQorCisgICAgaWYgKHN0YWdlID09PSB0aGlzLkluc3RhbnRpYXRlKSB7CisgICAgICAgIGlmIChl
bnRyeS5zdGF0dXMgPiB0aGlzLkluc3RhbnRpYXRlKQorICAgICAgICAgICAgdGhyb3cgbmV3IEBU
eXBlRXJyb3IoIlJlcXVlc3RlZCBtb2R1bGUgaXMgYWxyZWFkeSBpbnN0YW50aWF0ZWQuIik7Cisg
ICAgICAgIHRoaXMuZnVsZmlsbEZldGNoKGVudHJ5LCB1bmRlZmluZWQpOworICAgICAgICB0aGlz
LmZ1bGZpbGxUcmFuc2xhdGUoZW50cnksIHZhbHVlKTsKKyAgICAgICAgdmFyIGxvYWRlciA9IHRo
aXM7CisgICAgICAgIGVudHJ5LnRyYW5zbGF0ZS50aGVuKGZ1bmN0aW9uIChzb3VyY2UpIHsKKyAg
ICAgICAgICAgIGxvYWRlci5mdWxmaWxsSW5zdGFudGlhdGUoZW50cnksIHZhbHVlLCBzb3VyY2Up
OworICAgICAgICB9KTsKKyAgICAgICAgcmV0dXJuOworICAgIH0KKworICAgIHRocm93IG5ldyBA
VHlwZUVycm9yKCJSZXF1ZXN0ZWQgbW9kdWxlIGlzIGFscmVhZHkgcmVhZHkgdG8gYmUgZXhlY3V0
ZWQuIik7Cit9CmRpZmYgLS1naXQgYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvanNjLmNwcCBiL1Nv
dXJjZS9KYXZhU2NyaXB0Q29yZS9qc2MuY3BwCmluZGV4IDI1MTk1NjVhNzk4NmY5MjlkMDExN2Fk
ODg5ZTRiYjFmZmI4ZmY1NDEuLjJjYjdmYmI1ZmYxYjJhOTQzMDI1NTU1NzEzNjczZDkwMmI5MDJj
M2IgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9qc2MuY3BwCisrKyBiL1NvdXJj
ZS9KYXZhU2NyaXB0Q29yZS9qc2MuY3BwCkBAIC0zOSw2ICszOSw4IEBACiAjaW5jbHVkZSAiSlNB
cnJheUJ1ZmZlci5oIgogI2luY2x1ZGUgIkpTQ0lubGluZXMuaCIKICNpbmNsdWRlICJKU0Z1bmN0
aW9uLmgiCisjaW5jbHVkZSAiSlNJbnRlcm5hbFByb21pc2UuaCIKKyNpbmNsdWRlICJKU0ludGVy
bmFsUHJvbWlzZURlZmVycmVkLmgiCiAjaW5jbHVkZSAiSlNMb2NrLmgiCiAjaW5jbHVkZSAiSlNP
Tk9iamVjdC5oIgogI2luY2x1ZGUgIkpTUHJveHkuaCIKQEAgLTUxOSwyMCArNTIxLDE3IEBAIHN0
cnVjdCBTY3JpcHQgewogY2xhc3MgQ29tbWFuZExpbmUgewogcHVibGljOgogICAgIENvbW1hbmRM
aW5lKGludCBhcmdjLCBjaGFyKiogYXJndikKLSAgICAgICAgOiBtX2ludGVyYWN0aXZlKGZhbHNl
KQotICAgICAgICAsIG1fZHVtcChmYWxzZSkKLSAgICAgICAgLCBtX2V4aXRDb2RlKGZhbHNlKQot
ICAgICAgICAsIG1fcHJvZmlsZShmYWxzZSkKICAgICB7CiAgICAgICAgIHBhcnNlQXJndW1lbnRz
KGFyZ2MsIGFyZ3YpOwogICAgIH0KIAotICAgIGJvb2wgbV9pbnRlcmFjdGl2ZTsKLSAgICBib29s
IG1fZHVtcDsKLSAgICBib29sIG1fZXhpdENvZGU7CisgICAgYm9vbCBtX2ludGVyYWN0aXZlIHsg
ZmFsc2UgfTsKKyAgICBib29sIG1fZHVtcCB7IGZhbHNlIH07CisgICAgYm9vbCBtX21vZHVsZSB7
IGZhbHNlIH07CisgICAgYm9vbCBtX2V4aXRDb2RlIHsgZmFsc2UgfTsKICAgICBWZWN0b3I8U2Ny
aXB0PiBtX3NjcmlwdHM7CiAgICAgVmVjdG9yPFN0cmluZz4gbV9hcmd1bWVudHM7Ci0gICAgYm9v
bCBtX3Byb2ZpbGU7CisgICAgYm9vbCBtX3Byb2ZpbGUgeyBmYWxzZSB9OwogICAgIFN0cmluZyBt
X3Byb2ZpbGVyT3V0cHV0OwogCiAgICAgdm9pZCBwYXJzZUFyZ3VtZW50cyhpbnQsIGNoYXIqKik7
CkBAIC01NjYsNiArNTY1LDE3IEBAIGxvbmcgU3RvcFdhdGNoOjpnZXRFbGFwc2VkTVMoKQogICAg
IHJldHVybiBzdGF0aWNfY2FzdDxsb25nPigobV9zdG9wVGltZSAtIG1fc3RhcnRUaW1lKSAqIDEw
MDApOwogfQogCitzdGF0aWMgaW5saW5lIFN0cmluZyBzdHJpbmdGcm9tVVRGKGNvbnN0IGNoYXIq
IHV0ZjgpCit7CisgICAgcmV0dXJuIFN0cmluZzo6ZnJvbVVURjhXaXRoTGF0aW4xRmFsbGJhY2so
dXRmOCwgc3RybGVuKHV0ZjgpKTsKK30KKworc3RhdGljIGlubGluZSBTb3VyY2VDb2RlIGpzY1Nv
dXJjZShjb25zdCBjaGFyKiB1dGY4LCBjb25zdCBTdHJpbmcmIGZpbGVuYW1lKQoreworICAgIFN0
cmluZyBzdHIgPSBzdHJpbmdGcm9tVVRGKHV0ZjgpOworICAgIHJldHVybiBtYWtlU291cmNlKHN0
ciwgZmlsZW5hbWUpOworfQorCiBjbGFzcyBHbG9iYWxPYmplY3QgOiBwdWJsaWMgSlNHbG9iYWxP
YmplY3QgewogcHJpdmF0ZToKICAgICBHbG9iYWxPYmplY3QoVk0mLCBTdHJ1Y3R1cmUqKTsKQEAg
LTY4NywxMCArNjk3LDMxIEBAIGNsYXNzIEdsb2JhbE9iamVjdCA6IHB1YmxpYyBKU0dsb2JhbE9i
amVjdCB7CiAgICAgICAgIElkZW50aWZpZXIgaWRlbnRpZmllciA9IElkZW50aWZpZXI6OmZyb21T
dHJpbmcoJnZtLCBuYW1lKTsKICAgICAgICAgcHV0RGlyZWN0KHZtLCBpZGVudGlmaWVyLCBKU0Z1
bmN0aW9uOjpjcmVhdGUodm0sIHRoaXMsIGFyZ3VtZW50cywgaWRlbnRpZmllci5zdHJpbmcoKSwg
ZnVuY3Rpb24sIE5vSW50cmluc2ljLCBmdW5jdGlvbikpOwogICAgIH0KKworICAgIHN0YXRpYyBK
U0ludGVybmFsUHJvbWlzZSogbG9hZGVyRmV0Y2goSlNHbG9iYWxPYmplY3QqIGdsb2JhbE9iamVj
dCwgRXhlY1N0YXRlKiBleGVjLCBKU1ZhbHVlIGtleSkKKyAgICB7CisgICAgICAgIEpTSW50ZXJu
YWxQcm9taXNlRGVmZXJyZWQqIGRlZmVycmVkID0gSlNJbnRlcm5hbFByb21pc2VEZWZlcnJlZDo6
Y3JlYXRlKGV4ZWMsIGdsb2JhbE9iamVjdCk7CisgICAgICAgIFN0cmluZyBtb2R1bGVLZXkgPSBr
ZXkudG9TdHJpbmcoZXhlYyktPnZhbHVlKGV4ZWMpOworICAgICAgICBpZiAoZXhlYy0+aGFkRXhj
ZXB0aW9uKCkpIHsKKyAgICAgICAgICAgIEpTVmFsdWUgZXhjZXB0aW9uID0gZXhlYy0+ZXhjZXB0
aW9uKCk7CisgICAgICAgICAgICBleGVjLT5jbGVhckV4Y2VwdGlvbigpOworICAgICAgICAgICAg
ZGVmZXJyZWQtPnJlamVjdChleGVjLCBleGNlcHRpb24pOworICAgICAgICAgICAgcmV0dXJuIGRl
ZmVycmVkLT5wcm9taXNlKCk7CisgICAgICAgIH0KKworICAgICAgICAvLyBIZXJlLCBub3cgd2Ug
Y29uc2lkZXIgbW9kdWxlS2V5IGFzIHRoZSBmaWxlTmFtZS4KKyAgICAgICAgVmVjdG9yPGNoYXI+
IHV0Zjg7CisgICAgICAgIGlmICghZmlsbEJ1ZmZlcldpdGhDb250ZW50c09mRmlsZShtb2R1bGVL
ZXksIHV0ZjgpKSB7CisgICAgICAgICAgICBkZWZlcnJlZC0+cmVqZWN0KGV4ZWMsIGNyZWF0ZUVy
cm9yKGV4ZWMsIG1ha2VTdHJpbmcoIkNvdWxkIG5vdCBvcGVuIGZpbGUgJyIsIG1vZHVsZUtleSwg
IicuIikpKTsKKyAgICAgICAgICAgIHJldHVybiBkZWZlcnJlZC0+cHJvbWlzZSgpOworICAgICAg
ICB9CisgICAgICAgIGRlZmVycmVkLT5yZXNvbHZlKGV4ZWMsIGpzU3RyaW5nKGV4ZWMsIHN0cmlu
Z0Zyb21VVEYodXRmOC5kYXRhKCkpKSk7CisgICAgICAgIHJldHVybiBkZWZlcnJlZC0+cHJvbWlz
ZSgpOworICAgIH0KIH07CiAKIGNvbnN0IENsYXNzSW5mbyBHbG9iYWxPYmplY3Q6OnNfaW5mbyA9
IHsgImdsb2JhbCIsICZKU0dsb2JhbE9iamVjdDo6c19pbmZvLCAmZ2xvYmFsT2JqZWN0VGFibGUs
IENSRUFURV9NRVRIT0RfVEFCTEUoR2xvYmFsT2JqZWN0KSB9OwotY29uc3QgR2xvYmFsT2JqZWN0
TWV0aG9kVGFibGUgR2xvYmFsT2JqZWN0OjpzX2dsb2JhbE9iamVjdE1ldGhvZFRhYmxlID0geyAm
YWxsb3dzQWNjZXNzRnJvbSwgJnN1cHBvcnRzUHJvZmlsaW5nLCAmc3VwcG9ydHNSaWNoU291cmNl
SW5mbywgJnNob3VsZEludGVycnVwdFNjcmlwdCwgJmphdmFTY3JpcHRSdW50aW1lRmxhZ3MsIDAs
ICZzaG91bGRJbnRlcnJ1cHRTY3JpcHRCZWZvcmVUaW1lb3V0IH07Citjb25zdCBHbG9iYWxPYmpl
Y3RNZXRob2RUYWJsZSBHbG9iYWxPYmplY3Q6OnNfZ2xvYmFsT2JqZWN0TWV0aG9kVGFibGUgPSB7
ICZhbGxvd3NBY2Nlc3NGcm9tLCAmc3VwcG9ydHNQcm9maWxpbmcsICZzdXBwb3J0c1JpY2hTb3Vy
Y2VJbmZvLCAmc2hvdWxkSW50ZXJydXB0U2NyaXB0LCAmamF2YVNjcmlwdFJ1bnRpbWVGbGFncywg
MCwgJnNob3VsZEludGVycnVwdFNjcmlwdEJlZm9yZVRpbWVvdXQsIG51bGxwdHIsICZsb2FkZXJG
ZXRjaCwgbnVsbHB0ciwgbnVsbHB0ciB9OwogCiAKIEdsb2JhbE9iamVjdDo6R2xvYmFsT2JqZWN0
KFZNJiB2bSwgU3RydWN0dXJlKiBzdHJ1Y3R1cmUpCkBAIC02OTgsMTcgKzcyOSw2IEBAIEdsb2Jh
bE9iamVjdDo6R2xvYmFsT2JqZWN0KFZNJiB2bSwgU3RydWN0dXJlKiBzdHJ1Y3R1cmUpCiB7CiB9
CiAKLXN0YXRpYyBpbmxpbmUgU3RyaW5nIHN0cmluZ0Zyb21VVEYoY29uc3QgY2hhciogdXRmOCkK
LXsKLSAgICByZXR1cm4gU3RyaW5nOjpmcm9tVVRGOFdpdGhMYXRpbjFGYWxsYmFjayh1dGY4LCBz
dHJsZW4odXRmOCkpOwotfQotCi1zdGF0aWMgaW5saW5lIFNvdXJjZUNvZGUganNjU291cmNlKGNv
bnN0IGNoYXIqIHV0ZjgsIGNvbnN0IFN0cmluZyYgZmlsZW5hbWUpCi17Ci0gICAgU3RyaW5nIHN0
ciA9IHN0cmluZ0Zyb21VVEYodXRmOCk7Ci0gICAgcmV0dXJuIG1ha2VTb3VyY2Uoc3RyLCBmaWxl
bmFtZSk7Ci19Ci0KIEVuY29kZWRKU1ZhbHVlIEpTQ19IT1NUX0NBTEwgZnVuY3Rpb25QcmludChF
eGVjU3RhdGUqIGV4ZWMpCiB7CiAgICAgZm9yICh1bnNpZ25lZCBpID0gMDsgaSA8IGV4ZWMtPmFy
Z3VtZW50Q291bnQoKTsgKytpKSB7CkBAIC0xMjEyLDcgKzEyMzIsNyBAQCBFbmNvZGVkSlNWYWx1
ZSBKU0NfSE9TVF9DQUxMIGZ1bmN0aW9uQ2hlY2tNb2R1bGVTeW50YXgoRXhlY1N0YXRlKiBleGVj
KQogICAgIHN0b3BXYXRjaC5zdGFydCgpOwogCiAgICAgUGFyc2VyRXJyb3IgZXJyb3I7Ci0gICAg
Ym9vbCB2YWxpZFN5bnRheCA9IGNoZWNrTW9kdWxlU3ludGF4KGV4ZWMtPnZtKCksIG1ha2VTb3Vy
Y2Uoc291cmNlKSwgZXJyb3IpOworICAgIGJvb2wgdmFsaWRTeW50YXggPSBjaGVja01vZHVsZVN5
bnRheChleGVjLCBtYWtlU291cmNlKHNvdXJjZSksIGVycm9yKTsKICAgICBzdG9wV2F0Y2guc3Rv
cCgpOwogCiAgICAgaWYgKCF2YWxpZFN5bnRheCkKQEAgLTEzMjAsNyArMTM0MCwxOCBAQCBpbnQg
bWFpbihpbnQgYXJnYywgY2hhcioqIGFyZ3YpCiAgICAganNjRXhpdChyZXMpOwogfQogCi1zdGF0
aWMgYm9vbCBydW5XaXRoU2NyaXB0cyhHbG9iYWxPYmplY3QqIGdsb2JhbE9iamVjdCwgY29uc3Qg
VmVjdG9yPFNjcmlwdD4mIHNjcmlwdHMsIGJvb2wgZHVtcCkKK3N0YXRpYyB2b2lkIGR1bXBFeGNl
cHRpb24oR2xvYmFsT2JqZWN0KiBnbG9iYWxPYmplY3QsIE5ha2VkUHRyPEV4Y2VwdGlvbj4gZXZh
bHVhdGlvbkV4Y2VwdGlvbikKK3sKKyAgICBpZiAoZXZhbHVhdGlvbkV4Y2VwdGlvbikgeworICAg
ICAgICBwcmludGYoIkV4Y2VwdGlvbjogJXNcbiIsIGV2YWx1YXRpb25FeGNlcHRpb24tPnZhbHVl
KCkudG9TdHJpbmcoZ2xvYmFsT2JqZWN0LT5nbG9iYWxFeGVjKCkpLT52YWx1ZShnbG9iYWxPYmpl
Y3QtPmdsb2JhbEV4ZWMoKSkudXRmOCgpLmRhdGEoKSk7CisgICAgICAgIElkZW50aWZpZXIgc3Rh
Y2tJRCA9IElkZW50aWZpZXI6OmZyb21TdHJpbmcoZ2xvYmFsT2JqZWN0LT5nbG9iYWxFeGVjKCks
ICJzdGFjayIpOworICAgICAgICBKU1ZhbHVlIHN0YWNrVmFsdWUgPSBldmFsdWF0aW9uRXhjZXB0
aW9uLT52YWx1ZSgpLmdldChnbG9iYWxPYmplY3QtPmdsb2JhbEV4ZWMoKSwgc3RhY2tJRCk7Cisg
ICAgICAgIGlmICghc3RhY2tWYWx1ZS5pc1VuZGVmaW5lZE9yTnVsbCgpKQorICAgICAgICAgICAg
cHJpbnRmKCIlc1xuIiwgc3RhY2tWYWx1ZS50b1N0cmluZyhnbG9iYWxPYmplY3QtPmdsb2JhbEV4
ZWMoKSktPnZhbHVlKGdsb2JhbE9iamVjdC0+Z2xvYmFsRXhlYygpKS51dGY4KCkuZGF0YSgpKTsK
KyAgICB9Cit9CisKK3N0YXRpYyBib29sIHJ1bldpdGhTY3JpcHRzKEdsb2JhbE9iamVjdCogZ2xv
YmFsT2JqZWN0LCBjb25zdCBWZWN0b3I8U2NyaXB0PiYgc2NyaXB0cywgYm9vbCBkdW1wLCBib29s
IG1vZHVsZSkKIHsKICAgICBjb25zdCBjaGFyKiBzY3JpcHQ7CiAgICAgU3RyaW5nIGZpbGVOYW1l
OwpAQCAtMTM0OSwxNyArMTM4MCwyMSBAQCBzdGF0aWMgYm9vbCBydW5XaXRoU2NyaXB0cyhHbG9i
YWxPYmplY3QqIGdsb2JhbE9iamVjdCwgY29uc3QgVmVjdG9yPFNjcmlwdD4mIHNjcgogCiAgICAg
ICAgIHZtLnN0YXJ0U2FtcGxpbmcoKTsKIAotICAgICAgICBOYWtlZFB0cjxFeGNlcHRpb24+IGV2
YWx1YXRpb25FeGNlcHRpb247Ci0gICAgICAgIEpTVmFsdWUgcmV0dXJuVmFsdWUgPSBldmFsdWF0
ZShnbG9iYWxPYmplY3QtPmdsb2JhbEV4ZWMoKSwganNjU291cmNlKHNjcmlwdCwgZmlsZU5hbWUp
LCBKU1ZhbHVlKCksIGV2YWx1YXRpb25FeGNlcHRpb24pOwotICAgICAgICBzdWNjZXNzID0gc3Vj
Y2VzcyAmJiAhZXZhbHVhdGlvbkV4Y2VwdGlvbjsKLSAgICAgICAgaWYgKGR1bXAgJiYgIWV2YWx1
YXRpb25FeGNlcHRpb24pCi0gICAgICAgICAgICBwcmludGYoIkVuZDogJXNcbiIsIHJldHVyblZh
bHVlLnRvU3RyaW5nKGdsb2JhbE9iamVjdC0+Z2xvYmFsRXhlYygpKS0+dmFsdWUoZ2xvYmFsT2Jq
ZWN0LT5nbG9iYWxFeGVjKCkpLnV0ZjgoKS5kYXRhKCkpOwotICAgICAgICBpZiAoZXZhbHVhdGlv
bkV4Y2VwdGlvbikgewotICAgICAgICAgICAgcHJpbnRmKCJFeGNlcHRpb246ICVzXG4iLCBldmFs
dWF0aW9uRXhjZXB0aW9uLT52YWx1ZSgpLnRvU3RyaW5nKGdsb2JhbE9iamVjdC0+Z2xvYmFsRXhl
YygpKS0+dmFsdWUoZ2xvYmFsT2JqZWN0LT5nbG9iYWxFeGVjKCkpLnV0ZjgoKS5kYXRhKCkpOwot
ICAgICAgICAgICAgSWRlbnRpZmllciBzdGFja0lEID0gSWRlbnRpZmllcjo6ZnJvbVN0cmluZyhn
bG9iYWxPYmplY3QtPmdsb2JhbEV4ZWMoKSwgInN0YWNrIik7Ci0gICAgICAgICAgICBKU1ZhbHVl
IHN0YWNrVmFsdWUgPSBldmFsdWF0aW9uRXhjZXB0aW9uLT52YWx1ZSgpLmdldChnbG9iYWxPYmpl
Y3QtPmdsb2JhbEV4ZWMoKSwgc3RhY2tJRCk7Ci0gICAgICAgICAgICBpZiAoIXN0YWNrVmFsdWUu
aXNVbmRlZmluZWRPck51bGwoKSkKLSAgICAgICAgICAgICAgICBwcmludGYoIiVzXG4iLCBzdGFj
a1ZhbHVlLnRvU3RyaW5nKGdsb2JhbE9iamVjdC0+Z2xvYmFsRXhlYygpKS0+dmFsdWUoZ2xvYmFs
T2JqZWN0LT5nbG9iYWxFeGVjKCkpLnV0ZjgoKS5kYXRhKCkpOworICAgICAgICBpZiAobW9kdWxl
KSB7CisjaWYgRU5BQkxFKEVTNl9NT0RVTEVTKQorICAgICAgICAgICAgTmFrZWRQdHI8RXhjZXB0
aW9uPiBldmFsdWF0aW9uRXhjZXB0aW9uOworICAgICAgICAgICAgZXZhbHVhdGVNb2R1bGUoZ2xv
YmFsT2JqZWN0LT5nbG9iYWxFeGVjKCksIGpzY1NvdXJjZShzY3JpcHQsIGZpbGVOYW1lKSwgZXZh
bHVhdGlvbkV4Y2VwdGlvbik7CisgICAgICAgICAgICBkdW1wRXhjZXB0aW9uKGdsb2JhbE9iamVj
dCwgZXZhbHVhdGlvbkV4Y2VwdGlvbik7CisgICAgICAgICAgICBnbG9iYWxPYmplY3QtPmdsb2Jh
bEV4ZWMoKS0+Y2xlYXJFeGNlcHRpb24oKTsKKyAgICAgICAgICAgIGdsb2JhbE9iamVjdC0+dm0o
KS5kcmFpbk1pY3JvdGFza3MoKTsKKyNlbmRpZgorICAgICAgICB9IGVsc2UgeworICAgICAgICAg
ICAgTmFrZWRQdHI8RXhjZXB0aW9uPiBldmFsdWF0aW9uRXhjZXB0aW9uOworICAgICAgICAgICAg
SlNWYWx1ZSByZXR1cm5WYWx1ZSA9IGV2YWx1YXRlKGdsb2JhbE9iamVjdC0+Z2xvYmFsRXhlYygp
LCBqc2NTb3VyY2Uoc2NyaXB0LCBmaWxlTmFtZSksIEpTVmFsdWUoKSwgZXZhbHVhdGlvbkV4Y2Vw
dGlvbik7CisgICAgICAgICAgICBzdWNjZXNzID0gc3VjY2VzcyAmJiAhZXZhbHVhdGlvbkV4Y2Vw
dGlvbjsKKyAgICAgICAgICAgIGlmIChkdW1wICYmICFldmFsdWF0aW9uRXhjZXB0aW9uKQorICAg
ICAgICAgICAgICAgIHByaW50ZigiRW5kOiAlc1xuIiwgcmV0dXJuVmFsdWUudG9TdHJpbmcoZ2xv
YmFsT2JqZWN0LT5nbG9iYWxFeGVjKCkpLT52YWx1ZShnbG9iYWxPYmplY3QtPmdsb2JhbEV4ZWMo
KSkudXRmOCgpLmRhdGEoKSk7CisgICAgICAgICAgICBkdW1wRXhjZXB0aW9uKGdsb2JhbE9iamVj
dCwgZXZhbHVhdGlvbkV4Y2VwdGlvbik7CiAgICAgICAgIH0KIAogICAgICAgICB2bS5zdG9wU2Ft
cGxpbmcoKTsKQEAgLTE0NTEsNiArMTQ4Niw5IEBAIHN0YXRpYyBOT19SRVRVUk4gdm9pZCBwcmlu
dFVzYWdlU3RhdGVtZW50KGJvb2wgaGVscCA9IGZhbHNlKQogICAgIGZwcmludGYoc3RkZXJyLCAi
ICAtZiAgICAgICAgIFNwZWNpZmllcyBhIHNvdXJjZSBmaWxlIChkZXByZWNhdGVkKVxuIik7CiAg
ICAgZnByaW50ZihzdGRlcnIsICIgIC1ofC0taGVscCAgUHJpbnRzIHRoaXMgaGVscCBtZXNzYWdl
XG4iKTsKICAgICBmcHJpbnRmKHN0ZGVyciwgIiAgLWkgICAgICAgICBFbmFibGVzIGludGVyYWN0
aXZlIG1vZGUgKGRlZmF1bHQgaWYgbm8gZmlsZXMgYXJlIHNwZWNpZmllZClcbiIpOworI2lmIEVO
QUJMRShFUzZfTU9EVUxFUykKKyAgICBmcHJpbnRmKHN0ZGVyciwgIiAgLW0gICAgICAgICBFeGVj
dXRlIGFzIGEgbW9kdWxlXG4iKTsKKyNlbmRpZgogI2lmIEhBVkUoU0lHTkFMX0gpCiAgICAgZnBy
aW50ZihzdGRlcnIsICIgIC1zICAgICAgICAgSW5zdGFsbHMgc2lnbmFsIGhhbmRsZXJzIHRoYXQg
ZXhpdCBvbiBhIGNyYXNoIChVbml4IHBsYXRmb3JtcyBvbmx5KVxuIik7CiAjZW5kaWYKQEAgLTE1
MDIsNiArMTU0MCwxMiBAQCB2b2lkIENvbW1hbmRMaW5lOjpwYXJzZUFyZ3VtZW50cyhpbnQgYXJn
YywgY2hhcioqIGFyZ3YpCiAgICAgICAgICAgICBtX3Byb2ZpbGVyT3V0cHV0ID0gYXJndltpXTsK
ICAgICAgICAgICAgIGNvbnRpbnVlOwogICAgICAgICB9CisjaWYgRU5BQkxFKEVTNl9NT0RVTEVT
KQorICAgICAgICBpZiAoIXN0cmNtcChhcmcsICItbSIpKSB7CisgICAgICAgICAgICBtX21vZHVs
ZSA9IHRydWU7CisgICAgICAgICAgICBjb250aW51ZTsKKyAgICAgICAgfQorI2VuZGlmCiAgICAg
ICAgIGlmICghc3RyY21wKGFyZywgIi1zIikpIHsKICNpZiBIQVZFKFNJR05BTF9IKQogICAgICAg
ICAgICAgc2lnbmFsKFNJR0lMTCwgX2V4aXQpOwpAQCAtMTU3Nyw3ICsxNjIxLDcgQEAgaW50IGpz
Y21haW4oaW50IGFyZ2MsIGNoYXIqKiBhcmd2KQogICAgICAgICAgICAgdm0tPm1fcGVyQnl0ZWNv
ZGVQcm9maWxlciA9IHN0ZDo6bWFrZV91bmlxdWU8UHJvZmlsZXI6OkRhdGFiYXNlPigqdm0pOwog
ICAgIAogICAgICAgICBHbG9iYWxPYmplY3QqIGdsb2JhbE9iamVjdCA9IEdsb2JhbE9iamVjdDo6
Y3JlYXRlKCp2bSwgR2xvYmFsT2JqZWN0OjpjcmVhdGVTdHJ1Y3R1cmUoKnZtLCBqc051bGwoKSks
IG9wdGlvbnMubV9hcmd1bWVudHMpOwotICAgICAgICBib29sIHN1Y2Nlc3MgPSBydW5XaXRoU2Ny
aXB0cyhnbG9iYWxPYmplY3QsIG9wdGlvbnMubV9zY3JpcHRzLCBvcHRpb25zLm1fZHVtcCk7Cisg
ICAgICAgIGJvb2wgc3VjY2VzcyA9IHJ1bldpdGhTY3JpcHRzKGdsb2JhbE9iamVjdCwgb3B0aW9u
cy5tX3NjcmlwdHMsIG9wdGlvbnMubV9kdW1wLCBvcHRpb25zLm1fbW9kdWxlKTsKICAgICAgICAg
aWYgKG9wdGlvbnMubV9pbnRlcmFjdGl2ZSAmJiBzdWNjZXNzKQogICAgICAgICAgICAgcnVuSW50
ZXJhY3RpdmUoZ2xvYmFsT2JqZWN0KTsKIApkaWZmIC0tZ2l0IGEvU291cmNlL0phdmFTY3JpcHRD
b3JlL3BhcnNlci9MZXhlci5jcHAgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvcGFyc2VyL0xleGVy
LmNwcAppbmRleCAyNTlkMjU0ZTM5NzUxOGM3YmNjZmZjOWVkZWMxNTZiYTVmMDBkYjdhLi40NzYw
NDNmZjZlMjU1ZjllYjYzMTQ1Y2I4NmNkYTllZWYwYTQxNTY2IDEwMDY0NAotLS0gYS9Tb3VyY2Uv
SmF2YVNjcmlwdENvcmUvcGFyc2VyL0xleGVyLmNwcAorKysgYi9Tb3VyY2UvSmF2YVNjcmlwdENv
cmUvcGFyc2VyL0xleGVyLmNwcApAQCAtOTM1LDcgKzkzNSw3IEBAIHRlbXBsYXRlIDxib29sIHNo
b3VsZENyZWF0ZUlkZW50aWZpZXI+IEFMV0FZU19JTkxJTkUgSlNUb2tlblR5cGUgTGV4ZXI8TENo
YXI+OjpwCiAgICAgICAgICAgICAgICAgcmV0dXJuIEVSUk9SVE9LOwogICAgICAgICAgICAgfQog
ICAgICAgICAgICAgaWYgKGlzUHJpdmF0ZU5hbWUpCi0gICAgICAgICAgICAgICAgaWRlbnQgPSBt
X3ZtLT5wcm9wZXJ0eU5hbWVzLT5nZXRQcml2YXRlTmFtZSgqaWRlbnQpOworICAgICAgICAgICAg
ICAgIGlkZW50ID0gbV92bS0+cHJvcGVydHlOYW1lcy0+bG9va1VwUHJpdmF0ZU5hbWUoKmlkZW50
KTsKICAgICAgICAgICAgIGVsc2UgaWYgKCppZGVudCA9PSBtX3ZtLT5wcm9wZXJ0eU5hbWVzLT51
bmRlZmluZWRLZXl3b3JkKQogICAgICAgICAgICAgICAgIHRva2VuRGF0YS0+aWRlbnQgPSAmbV92
bS0+cHJvcGVydHlOYW1lcy0+dW5kZWZpbmVkUHJpdmF0ZU5hbWU7CiAgICAgICAgICAgICBpZiAo
IWlkZW50KQpAQCAtMTAxMiw3ICsxMDEyLDcgQEAgdGVtcGxhdGUgPGJvb2wgc2hvdWxkQ3JlYXRl
SWRlbnRpZmllcj4gQUxXQVlTX0lOTElORSBKU1Rva2VuVHlwZSBMZXhlcjxVQ2hhcj46OnAKICAg
ICAgICAgICAgICAgICByZXR1cm4gRVJST1JUT0s7CiAgICAgICAgICAgICB9CiAgICAgICAgICAg
ICBpZiAoaXNQcml2YXRlTmFtZSkKLSAgICAgICAgICAgICAgICBpZGVudCA9IG1fdm0tPnByb3Bl
cnR5TmFtZXMtPmdldFByaXZhdGVOYW1lKCppZGVudCk7CisgICAgICAgICAgICAgICAgaWRlbnQg
PSBtX3ZtLT5wcm9wZXJ0eU5hbWVzLT5sb29rVXBQcml2YXRlTmFtZSgqaWRlbnQpOwogICAgICAg
ICAgICAgZWxzZSBpZiAoKmlkZW50ID09IG1fdm0tPnByb3BlcnR5TmFtZXMtPnVuZGVmaW5lZEtl
eXdvcmQpCiAgICAgICAgICAgICAgICAgdG9rZW5EYXRhLT5pZGVudCA9ICZtX3ZtLT5wcm9wZXJ0
eU5hbWVzLT51bmRlZmluZWRQcml2YXRlTmFtZTsKICAgICAgICAgICAgIGlmICghaWRlbnQpCmRp
ZmYgLS1naXQgYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvcGFyc2VyL01vZHVsZUFuYWx5emVyLmNw
cCBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9wYXJzZXIvTW9kdWxlQW5hbHl6ZXIuY3BwCmluZGV4
IGIyZGU5NjBiMzkzMjU4NDFjZDlmODVjNjcxNjIyYzNkZjdiYTlkNzcuLjZkYTJjZDA4ZDQ4ZjIw
NTg5ZjRkZWUyZWM0NTRlOWQxNWNlM2Y4YmIgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9KYXZhU2NyaXB0
Q29yZS9wYXJzZXIvTW9kdWxlQW5hbHl6ZXIuY3BwCisrKyBiL1NvdXJjZS9KYXZhU2NyaXB0Q29y
ZS9wYXJzZXIvTW9kdWxlQW5hbHl6ZXIuY3BwCkBAIC0yNywxNCArMjcsMTggQEAKICNpbmNsdWRl
ICJNb2R1bGVBbmFseXplci5oIgogCiAjaW5jbHVkZSAiSWRlbnRpZmllcklubGluZXMuaCIKLSNp
bmNsdWRlICJNb2R1bGVSZWNvcmQuaCIKKyNpbmNsdWRlICJKU0NKU1ZhbHVlSW5saW5lcy5oIgor
I2luY2x1ZGUgIkpTQ2VsbElubGluZXMuaCIKKyNpbmNsdWRlICJKU0dsb2JhbE9iamVjdC5oIgor
I2luY2x1ZGUgIkpTTW9kdWxlUmVjb3JkLmgiCisjaW5jbHVkZSAiU3Ryb25nSW5saW5lcy5oIgog
CiBuYW1lc3BhY2UgSlNDIHsKIAogCi1Nb2R1bGVBbmFseXplcjo6TW9kdWxlQW5hbHl6ZXIoVk0m
IHZtLCBjb25zdCBWYXJpYWJsZUVudmlyb25tZW50JiBkZWNsYXJlZFZhcmlhYmxlcywgY29uc3Qg
VmFyaWFibGVFbnZpcm9ubWVudCYgbGV4aWNhbFZhcmlhYmxlcykKLSAgICA6IG1fdm0oJnZtKQot
ICAgICwgbV9tb2R1bGVSZWNvcmQoTW9kdWxlUmVjb3JkOjpjcmVhdGUoKSkKK01vZHVsZUFuYWx5
emVyOjpNb2R1bGVBbmFseXplcihFeGVjU3RhdGUqIGV4ZWMsIGNvbnN0IFZhcmlhYmxlRW52aXJv
bm1lbnQmIGRlY2xhcmVkVmFyaWFibGVzLCBjb25zdCBWYXJpYWJsZUVudmlyb25tZW50JiBsZXhp
Y2FsVmFyaWFibGVzKQorICAgIDogbV92bSgmZXhlYy0+dm0oKSkKKyAgICAsIG1fbW9kdWxlUmVj
b3JkKGV4ZWMtPnZtKCksIEpTTW9kdWxlUmVjb3JkOjpjcmVhdGUoZXhlYy0+dm0oKSwgZXhlYy0+
bGV4aWNhbEdsb2JhbE9iamVjdCgpLT5tb2R1bGVSZWNvcmRTdHJ1Y3R1cmUoKSkpCiAgICAgLCBt
X2RlY2xhcmVkVmFyaWFibGVzKGRlY2xhcmVkVmFyaWFibGVzKQogICAgICwgbV9sZXhpY2FsVmFy
aWFibGVzKGxleGljYWxWYXJpYWJsZXMpCiB7CkBAIC03NiwyOCArODAsMjggQEAgdm9pZCBNb2R1
bGVBbmFseXplcjo6ZXhwb3J0VmFyaWFibGUoY29uc3QgUmVmUHRyPFVuaXF1ZWRTdHJpbmdJbXBs
PiYgbG9jYWxOYW1lLAogCiAgICAgLy8gRXhwb3J0ZWQgbW9kdWxlIGxvY2FsIHZhcmlhYmxlLgog
ICAgIGlmICghdmFyaWFibGUuaXNJbXBvcnRlZCgpKSB7Ci0gICAgICAgIG1vZHVsZVJlY29yZCgp
LmFkZEV4cG9ydEVudHJ5KE1vZHVsZVJlY29yZDo6RXhwb3J0RW50cnk6OmNyZWF0ZUxvY2FsKGV4
cG9ydE5hbWUsIElkZW50aWZpZXI6OmZyb21VaWQobV92bSwgbG9jYWxOYW1lLmdldCgpKSwgdmFy
aWFibGUpKTsKKyAgICAgICAgbW9kdWxlUmVjb3JkKCktPmFkZEV4cG9ydEVudHJ5KEpTTW9kdWxl
UmVjb3JkOjpFeHBvcnRFbnRyeTo6Y3JlYXRlTG9jYWwoZXhwb3J0TmFtZSwgSWRlbnRpZmllcjo6
ZnJvbVVpZChtX3ZtLCBsb2NhbE5hbWUuZ2V0KCkpLCB2YXJpYWJsZSkpOwogICAgICAgICByZXR1
cm47CiAgICAgfQogCi0gICAgY29uc3QgYXV0byYgaW1wb3J0RW50cnkgPSBtb2R1bGVSZWNvcmQo
KS5sb29rVXBJbXBvcnRFbnRyeShsb2NhbE5hbWUpOworICAgIGNvbnN0IGF1dG8mIGltcG9ydEVu
dHJ5ID0gbW9kdWxlUmVjb3JkKCktPmxvb2tVcEltcG9ydEVudHJ5KGxvY2FsTmFtZSk7CiAgICAg
aWYgKGltcG9ydEVudHJ5LmlzTmFtZXNwYWNlKHZtKCkpKSB7CiAgICAgICAgIC8vIEV4cG9ydGVk
IG5hbWVzcGFjZSBiaW5kaW5nLgogICAgICAgICAvLyBpbXBvcnQgKiBhcyBuYW1lc3BhY2UgZnJv
bSAibW9kIgogICAgICAgICAvLyBleHBvcnQgeyBuYW1lc3BhY2UgfQotICAgICAgICBtb2R1bGVS
ZWNvcmQoKS5hZGRFeHBvcnRFbnRyeShNb2R1bGVSZWNvcmQ6OkV4cG9ydEVudHJ5OjpjcmVhdGVO
YW1lc3BhY2UoZXhwb3J0TmFtZSwgaW1wb3J0RW50cnkubW9kdWxlUmVxdWVzdCkpOworICAgICAg
ICBtb2R1bGVSZWNvcmQoKS0+YWRkRXhwb3J0RW50cnkoSlNNb2R1bGVSZWNvcmQ6OkV4cG9ydEVu
dHJ5OjpjcmVhdGVOYW1lc3BhY2UoZXhwb3J0TmFtZSwgaW1wb3J0RW50cnkubW9kdWxlUmVxdWVz
dCkpOwogICAgICAgICByZXR1cm47CiAgICAgfQogCiAgICAgLy8gSW5kaXJlY3RseSBleHBvcnRl
ZCBiaW5kaW5nLgogICAgIC8vIGltcG9ydCBhIGZyb20gIm1vZCIKICAgICAvLyBleHBvcnQgeyBh
IH0KLSAgICBtb2R1bGVSZWNvcmQoKS5hZGRFeHBvcnRFbnRyeShNb2R1bGVSZWNvcmQ6OkV4cG9y
dEVudHJ5OjpjcmVhdGVJbmRpcmVjdChleHBvcnROYW1lLCBpbXBvcnRFbnRyeS5pbXBvcnROYW1l
LCBpbXBvcnRFbnRyeS5tb2R1bGVSZXF1ZXN0KSk7CisgICAgbW9kdWxlUmVjb3JkKCktPmFkZEV4
cG9ydEVudHJ5KEpTTW9kdWxlUmVjb3JkOjpFeHBvcnRFbnRyeTo6Y3JlYXRlSW5kaXJlY3QoZXhw
b3J0TmFtZSwgaW1wb3J0RW50cnkuaW1wb3J0TmFtZSwgaW1wb3J0RW50cnkubW9kdWxlUmVxdWVz
dCkpOwogfQogCiAKIAotUmVmPE1vZHVsZVJlY29yZD4gTW9kdWxlQW5hbHl6ZXI6OmFuYWx5emUo
TW9kdWxlUHJvZ3JhbU5vZGUmIG1vZHVsZVByb2dyYW1Ob2RlKQorSlNNb2R1bGVSZWNvcmQqIE1v
ZHVsZUFuYWx5emVyOjphbmFseXplKE1vZHVsZVByb2dyYW1Ob2RlJiBtb2R1bGVQcm9ncmFtTm9k
ZSkKIHsKICAgICAvLyBUcmF2ZXJzZSB0aGUgbW9kdWxlIEFTVCBhbmQgY29sbGVjdAogICAgIC8v
ICogSW1wb3J0IGVudHJpZXMKQEAgLTE0OSw3ICsxNTMsNyBAQCBSZWY8TW9kdWxlUmVjb3JkPiBN
b2R1bGVBbmFseXplcjo6YW5hbHl6ZShNb2R1bGVQcm9ncmFtTm9kZSYgbW9kdWxlUHJvZ3JhbU5v
ZGUpCiAgICAgaWYgKE9wdGlvbnM6OmR1bXBNb2R1bGVSZWNvcmQoKSkKICAgICAgICAgbV9tb2R1
bGVSZWNvcmQtPmR1bXAoKTsKIAotICAgIHJldHVybiAqbV9tb2R1bGVSZWNvcmQ7CisgICAgcmV0
dXJuIG1fbW9kdWxlUmVjb3JkLmdldCgpOwogfQogCiB9IC8vIG5hbWVzcGFjZSBKU0MKZGlmZiAt
LWdpdCBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9wYXJzZXIvTW9kdWxlQW5hbHl6ZXIuaCBiL1Nv
dXJjZS9KYXZhU2NyaXB0Q29yZS9wYXJzZXIvTW9kdWxlQW5hbHl6ZXIuaAppbmRleCAwMjc2NDg0
NzY1MGIzMDI0ZmQyYThjMzcyMmU3M2E3NDdiOTYzY2I2Li4zMzkwYjdiYWYxZjY1ZTgxMGMxMTM5
YjZkZWM0NjU5NDZiODlkNDkyIDEwMDY0NAotLS0gYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvcGFy
c2VyL01vZHVsZUFuYWx5emVyLmgKKysrIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL3BhcnNlci9N
b2R1bGVBbmFseXplci5oCkBAIC0yNiwyMCArMjYsMjIgQEAKICNpZm5kZWYgTW9kdWxlQW5hbHl6
ZXJfaAogI2RlZmluZSBNb2R1bGVBbmFseXplcl9oCiAKLSNpbmNsdWRlICJNb2R1bGVSZWNvcmQu
aCIKICNpbmNsdWRlICJOb2Rlcy5oIgogCiBuYW1lc3BhY2UgSlNDIHsKIAorY2xhc3MgSlNNb2R1
bGVSZWNvcmQ7CisKIGNsYXNzIE1vZHVsZUFuYWx5emVyIHsKKyAgICBXVEZfTUFLRV9OT05DT1BZ
QUJMRShNb2R1bGVBbmFseXplcik7CiBwdWJsaWM6Ci0gICAgTW9kdWxlQW5hbHl6ZXIoVk0mLCBj
b25zdCBWYXJpYWJsZUVudmlyb25tZW50JiBkZWNsYXJlZFZhcmlhYmxlcywgY29uc3QgVmFyaWFi
bGVFbnZpcm9ubWVudCYgbGV4aWNhbFZhcmlhYmxlcyk7CisgICAgTW9kdWxlQW5hbHl6ZXIoRXhl
Y1N0YXRlKiwgY29uc3QgVmFyaWFibGVFbnZpcm9ubWVudCYgZGVjbGFyZWRWYXJpYWJsZXMsIGNv
bnN0IFZhcmlhYmxlRW52aXJvbm1lbnQmIGxleGljYWxWYXJpYWJsZXMpOwogCi0gICAgUmVmPE1v
ZHVsZVJlY29yZD4gYW5hbHl6ZShNb2R1bGVQcm9ncmFtTm9kZSYpOworICAgIEpTTW9kdWxlUmVj
b3JkKiBhbmFseXplKE1vZHVsZVByb2dyYW1Ob2RlJik7CiAKICAgICBWTSYgdm0oKSB7IHJldHVy
biAqbV92bTsgfQogCi0gICAgTW9kdWxlUmVjb3JkJiBtb2R1bGVSZWNvcmQoKSB7IHJldHVybiAq
bV9tb2R1bGVSZWNvcmQ7IH0KKyAgICBKU01vZHVsZVJlY29yZCogbW9kdWxlUmVjb3JkKCkgeyBy
ZXR1cm4gbV9tb2R1bGVSZWNvcmQuZ2V0KCk7IH0KIAogICAgIHZvaWQgZGVjbGFyZUV4cG9ydEFs
aWFzKGNvbnN0IElkZW50aWZpZXImIGxvY2FsTmFtZSwgY29uc3QgSWRlbnRpZmllciYgZXhwb3J0
TmFtZSk7CiAKQEAgLTUxLDcgKzUzLDcgQEAgY2xhc3MgTW9kdWxlQW5hbHl6ZXIgewogICAgIElk
ZW50aWZpZXIgZXhwb3J0ZWRCaW5kaW5nKGNvbnN0IFJlZlB0cjxVbmlxdWVkU3RyaW5nSW1wbD4m
IGlkZW50KTsKIAogICAgIFZNKiBtX3ZtOwotICAgIFJlZlB0cjxNb2R1bGVSZWNvcmQ+IG1fbW9k
dWxlUmVjb3JkOworICAgIFN0cm9uZzxKU01vZHVsZVJlY29yZD4gbV9tb2R1bGVSZWNvcmQ7CiAg
ICAgVmFyaWFibGVFbnZpcm9ubWVudCBtX2RlY2xhcmVkVmFyaWFibGVzOwogICAgIFZhcmlhYmxl
RW52aXJvbm1lbnQgbV9sZXhpY2FsVmFyaWFibGVzOwogICAgIElkZW50aWZpZXJBbGlhc01hcCBt
X2FsaWFzTWFwOwpkaWZmIC0tZ2l0IGEvU291cmNlL0phdmFTY3JpcHRDb3JlL3BhcnNlci9Nb2R1
bGVSZWNvcmQuY3BwIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL3BhcnNlci9Nb2R1bGVSZWNvcmQu
Y3BwCmRlbGV0ZWQgZmlsZSBtb2RlIDEwMDY0NAppbmRleCBlYzk3MzU2OGJlYzhhMGIxNTMzMzJm
NDg3NWY5ZWZlMTM3ODJlYzhhLi4wMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwCi0tLSBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9wYXJzZXIvTW9kdWxlUmVjb3JkLmNwcAor
KysgL2Rldi9udWxsCkBAIC0xLDk1ICswLDAgQEAKLS8qCi0gKiBDb3B5cmlnaHQgKEMpIDIwMTUg
QXBwbGUgSW5jLiBBbGwgcmlnaHRzIHJlc2VydmVkLgotICoKLSAqIFJlZGlzdHJpYnV0aW9uIGFu
ZCB1c2UgaW4gc291cmNlIGFuZCBiaW5hcnkgZm9ybXMsIHdpdGggb3Igd2l0aG91dAotICogbW9k
aWZpY2F0aW9uLCBhcmUgcGVybWl0dGVkIHByb3ZpZGVkIHRoYXQgdGhlIGZvbGxvd2luZyBjb25k
aXRpb25zCi0gKiBhcmUgbWV0OgotICogMS4gUmVkaXN0cmlidXRpb25zIG9mIHNvdXJjZSBjb2Rl
IG11c3QgcmV0YWluIHRoZSBhYm92ZSBjb3B5cmlnaHQKLSAqICAgIG5vdGljZSwgdGhpcyBsaXN0
IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lci4KLSAqIDIuIFJlZGlz
dHJpYnV0aW9ucyBpbiBiaW5hcnkgZm9ybSBtdXN0IHJlcHJvZHVjZSB0aGUgYWJvdmUgY29weXJp
Z2h0Ci0gKiAgICBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93
aW5nIGRpc2NsYWltZXIgaW4gdGhlCi0gKiAgICBkb2N1bWVudGF0aW9uIGFuZC9vciBvdGhlciBt
YXRlcmlhbHMgcHJvdmlkZWQgd2l0aCB0aGUgZGlzdHJpYnV0aW9uLgotICoKLSAqIFRISVMgU09G
VFdBUkUgSVMgUFJPVklERUQgQlkgQVBQTEUgSU5DLiBgYEFTIElTJycgQU5EIEFOWQotICogRVhQ
UkVTUyBPUiBJTVBMSUVEIFdBUlJBTlRJRVMsIElOQ0xVRElORywgQlVUIE5PVCBMSU1JVEVEIFRP
LCBUSEUKLSAqIElNUExJRUQgV0FSUkFOVElFUyBPRiBNRVJDSEFOVEFCSUxJVFkgQU5EIEZJVE5F
U1MgRk9SIEEgUEFSVElDVUxBUgotICogUFVSUE9TRSBBUkUgRElTQ0xBSU1FRC4gIElOIE5PIEVW
RU5UIFNIQUxMIEFQUExFIElOQy4gT1IKLSAqIENPTlRSSUJVVE9SUyBCRSBMSUFCTEUgRk9SIEFO
WSBESVJFQ1QsIElORElSRUNULCBJTkNJREVOVEFMLCBTUEVDSUFMLAotICogRVhFTVBMQVJZLCBP
UiBDT05TRVFVRU5USUFMIERBTUFHRVMgKElOQ0xVRElORywgQlVUIE5PVCBMSU1JVEVEIFRPLAot
ICogUFJPQ1VSRU1FTlQgT0YgU1VCU1RJVFVURSBHT09EUyBPUiBTRVJWSUNFUzsgTE9TUyBPRiBV
U0UsIERBVEEsIE9SCi0gKiBQUk9GSVRTOyBPUiBCVVNJTkVTUyBJTlRFUlJVUFRJT04pIEhPV0VW
RVIgQ0FVU0VEIEFORCBPTiBBTlkgVEhFT1JZCi0gKiBPRiBMSUFCSUxJVFksIFdIRVRIRVIgSU4g
Q09OVFJBQ1QsIFNUUklDVCBMSUFCSUxJVFksIE9SIFRPUlQKLSAqIChJTkNMVURJTkcgTkVHTElH
RU5DRSBPUiBPVEhFUldJU0UpIEFSSVNJTkcgSU4gQU5ZIFdBWSBPVVQgT0YgVEhFIFVTRQotICog
T0YgVEhJUyBTT0ZUV0FSRSwgRVZFTiBJRiBBRFZJU0VEIE9GIFRIRSBQT1NTSUJJTElUWSBPRiBT
VUNIIERBTUFHRS4gCi0gKi8KLQotI2luY2x1ZGUgImNvbmZpZy5oIgotI2luY2x1ZGUgIk1vZHVs
ZVJlY29yZC5oIgotCi0jaW5jbHVkZSAiSWRlbnRpZmllcklubGluZXMuaCIKLQotbmFtZXNwYWNl
IEpTQyB7Ci0KLQotYXV0byBNb2R1bGVSZWNvcmQ6OkV4cG9ydEVudHJ5OjpjcmVhdGVMb2NhbChj
b25zdCBJZGVudGlmaWVyJiBleHBvcnROYW1lLCBjb25zdCBJZGVudGlmaWVyJiBsb2NhbE5hbWUs
IGNvbnN0IFZhcmlhYmxlRW52aXJvbm1lbnRFbnRyeSYgdmFyaWFibGUpIC0+IEV4cG9ydEVudHJ5
Ci17Ci0gICAgcmV0dXJuIEV4cG9ydEVudHJ5IHsgVHlwZTo6TG9jYWwsIGV4cG9ydE5hbWUsIElk
ZW50aWZpZXIoKSwgSWRlbnRpZmllcigpLCBsb2NhbE5hbWUsIHZhcmlhYmxlIH07Ci19Ci0KLWF1
dG8gTW9kdWxlUmVjb3JkOjpFeHBvcnRFbnRyeTo6Y3JlYXRlTmFtZXNwYWNlKGNvbnN0IElkZW50
aWZpZXImIGV4cG9ydE5hbWUsIGNvbnN0IElkZW50aWZpZXImIG1vZHVsZU5hbWUpIC0+IEV4cG9y
dEVudHJ5Ci17Ci0gICAgcmV0dXJuIEV4cG9ydEVudHJ5IHsgVHlwZTo6TmFtZXNwYWNlLCBleHBv
cnROYW1lLCBtb2R1bGVOYW1lLCBJZGVudGlmaWVyKCksIElkZW50aWZpZXIoKSwgVmFyaWFibGVF
bnZpcm9ubWVudEVudHJ5KCkgfTsKLX0KLQotYXV0byBNb2R1bGVSZWNvcmQ6OkV4cG9ydEVudHJ5
OjpjcmVhdGVJbmRpcmVjdChjb25zdCBJZGVudGlmaWVyJiBleHBvcnROYW1lLCBjb25zdCBJZGVu
dGlmaWVyJiBpbXBvcnROYW1lLCBjb25zdCBJZGVudGlmaWVyJiBtb2R1bGVOYW1lKSAtPiBFeHBv
cnRFbnRyeQotewotICAgIHJldHVybiBFeHBvcnRFbnRyeSB7IFR5cGU6OkluZGlyZWN0LCBleHBv
cnROYW1lLCBtb2R1bGVOYW1lLCBpbXBvcnROYW1lLCBJZGVudGlmaWVyKCksIFZhcmlhYmxlRW52
aXJvbm1lbnRFbnRyeSgpIH07Ci19Ci0KLXN0YXRpYyBTdHJpbmcgcHJpbnRhYmxlTmFtZShjb25z
dCBSZWZQdHI8VW5pcXVlZFN0cmluZ0ltcGw+JiB1aWQpCi17Ci0gICAgaWYgKHVpZC0+aXNTeW1i
b2woKSkKLSAgICAgICAgcmV0dXJuIHVpZC5nZXQoKTsKLSAgICByZXR1cm4gV1RGOjptYWtlU3Ry
aW5nKCInIiwgU3RyaW5nKHVpZC5nZXQoKSksICInIik7Ci19Ci0KLXN0YXRpYyBTdHJpbmcgcHJp
bnRhYmxlTmFtZShjb25zdCBJZGVudGlmaWVyJiBpZGVudCkKLXsKLSAgICByZXR1cm4gcHJpbnRh
YmxlTmFtZShpZGVudC5pbXBsKCkpOwotfQotCi0KLXZvaWQgTW9kdWxlUmVjb3JkOjpkdW1wKCkK
LXsKLSAgICBkYXRhTG9nKCJcbkFuYWx5emluZyBNb2R1bGVSZWNvcmRcbiIpOwotCi0gICAgZGF0
YUxvZygiICAgIERlcGVuZGVuY2llczogIiwgbV9yZXF1ZXN0ZWRNb2R1bGVzLnNpemUoKSwgIiBt
b2R1bGVzXG4iKTsKLSAgICBmb3IgKGNvbnN0IGF1dG8mIG1vZHVsZU5hbWUgOiBtX3JlcXVlc3Rl
ZE1vZHVsZXMpCi0gICAgICAgIGRhdGFMb2coIiAgICAgIG1vZHVsZSgiLCBwcmludGFibGVOYW1l
KG1vZHVsZU5hbWUpLCAiKVxuIik7Ci0KLSAgICBkYXRhTG9nKCIgICAgSW1wb3J0OiAiLCBtX2lt
cG9ydEVudHJpZXMuc2l6ZSgpLCAiIGVudHJpZXNcbiIpOwotICAgIGZvciAoY29uc3QgYXV0byYg
cGFpciA6IG1faW1wb3J0RW50cmllcykKLSAgICAgICAgZGF0YUxvZygiICAgICAgaW1wb3J0KCIs
IHByaW50YWJsZU5hbWUocGFpci52YWx1ZS5pbXBvcnROYW1lKSwgIiksIGxvY2FsKCIsIHByaW50
YWJsZU5hbWUocGFpci52YWx1ZS5sb2NhbE5hbWUpLCAiKSwgbW9kdWxlKCIsIHByaW50YWJsZU5h
bWUocGFpci52YWx1ZS5tb2R1bGVSZXF1ZXN0KSwgIilcbiIpOwotCi0gICAgZGF0YUxvZygiICAg
IEV4cG9ydDogIiwgbV9leHBvcnRFbnRyaWVzLnNpemUoKSwgIiBlbnRyaWVzXG4iKTsKLSAgICBm
b3IgKGNvbnN0IGF1dG8mIHBhaXIgOiBtX2V4cG9ydEVudHJpZXMpIHsKLSAgICAgICAgY29uc3Qg
RXhwb3J0RW50cnkmIGVudHJ5ID0gcGFpci52YWx1ZTsKLSAgICAgICAgc3dpdGNoIChlbnRyeS50
eXBlKSB7Ci0gICAgICAgIGNhc2UgRXhwb3J0RW50cnk6OlR5cGU6OkxvY2FsOgotICAgICAgICAg
ICAgZGF0YUxvZygiICAgICAgW0xvY2FsXSAiLCAiZXhwb3J0KCIsIHByaW50YWJsZU5hbWUoZW50
cnkuZXhwb3J0TmFtZSksICIpLCBsb2NhbCgiLCBwcmludGFibGVOYW1lKGVudHJ5LmxvY2FsTmFt
ZSksICIpXG4iKTsKLSAgICAgICAgICAgIGJyZWFrOwotCi0gICAgICAgIGNhc2UgRXhwb3J0RW50
cnk6OlR5cGU6Ok5hbWVzcGFjZToKLSAgICAgICAgICAgIGRhdGFMb2coIiAgICAgIFtOYW1lc3Bh
Y2VdICIsICJleHBvcnQoIiwgcHJpbnRhYmxlTmFtZShlbnRyeS5leHBvcnROYW1lKSwgIiksIG1v
ZHVsZSgiLCBwcmludGFibGVOYW1lKGVudHJ5Lm1vZHVsZU5hbWUpLCAiKVxuIik7Ci0gICAgICAg
ICAgICBicmVhazsKLQotICAgICAgICBjYXNlIEV4cG9ydEVudHJ5OjpUeXBlOjpJbmRpcmVjdDoK
LSAgICAgICAgICAgIGRhdGFMb2coIiAgICAgIFtJbmRpcmVjdF0gIiwgImV4cG9ydCgiLCBwcmlu
dGFibGVOYW1lKGVudHJ5LmV4cG9ydE5hbWUpLCAiKSwgaW1wb3J0KCIsIHByaW50YWJsZU5hbWUo
ZW50cnkuaW1wb3J0TmFtZSksICIpLCBtb2R1bGUoIiwgcHJpbnRhYmxlTmFtZShlbnRyeS5tb2R1
bGVOYW1lKSwgIilcbiIpOwotICAgICAgICAgICAgYnJlYWs7Ci0gICAgICAgIH0KLSAgICB9Ci0g
ICAgZm9yIChjb25zdCBhdXRvJiBtb2R1bGVOYW1lIDogbV9zdGFyRXhwb3J0RW50cmllcykKLSAg
ICAgICAgZGF0YUxvZygiICAgICAgW1N0YXJdIG1vZHVsZSgiLCBwcmludGFibGVOYW1lKG1vZHVs
ZU5hbWUuZ2V0KCkpLCAiKVxuIik7Ci19Ci0KLX0gLy8gbmFtZXNwYWNlIEpTQwpkaWZmIC0tZ2l0
IGEvU291cmNlL0phdmFTY3JpcHRDb3JlL3BhcnNlci9Nb2R1bGVSZWNvcmQuaCBiL1NvdXJjZS9K
YXZhU2NyaXB0Q29yZS9wYXJzZXIvTW9kdWxlUmVjb3JkLmgKZGVsZXRlZCBmaWxlIG1vZGUgMTAw
NjQ0CmluZGV4IGVmMDgxYzAzYjBhNWJkZTZmMTU1NjI5ZGYzZjUwNmNhZjNjYjE3MTQuLjAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAKLS0tIGEvU291cmNlL0phdmFTY3Jp
cHRDb3JlL3BhcnNlci9Nb2R1bGVSZWNvcmQuaAorKysgL2Rldi9udWxsCkBAIC0xLDEyOCArMCww
IEBACi0vKgotICogQ29weXJpZ2h0IChDKSAyMDE1IEFwcGxlIEluYy4gQWxsIHJpZ2h0cyByZXNl
cnZlZC4KLSAqCi0gKiBSZWRpc3RyaWJ1dGlvbiBhbmQgdXNlIGluIHNvdXJjZSBhbmQgYmluYXJ5
IGZvcm1zLCB3aXRoIG9yIHdpdGhvdXQKLSAqIG1vZGlmaWNhdGlvbiwgYXJlIHBlcm1pdHRlZCBw
cm92aWRlZCB0aGF0IHRoZSBmb2xsb3dpbmcgY29uZGl0aW9ucwotICogYXJlIG1ldDoKLSAqIDEu
IFJlZGlzdHJpYnV0aW9ucyBvZiBzb3VyY2UgY29kZSBtdXN0IHJldGFpbiB0aGUgYWJvdmUgY29w
eXJpZ2h0Ci0gKiAgICBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9s
bG93aW5nIGRpc2NsYWltZXIuCi0gKiAyLiBSZWRpc3RyaWJ1dGlvbnMgaW4gYmluYXJ5IGZvcm0g
bXVzdCByZXByb2R1Y2UgdGhlIGFib3ZlIGNvcHlyaWdodAotICogICAgbm90aWNlLCB0aGlzIGxp
c3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyIGluIHRoZQotICog
ICAgZG9jdW1lbnRhdGlvbiBhbmQvb3Igb3RoZXIgbWF0ZXJpYWxzIHByb3ZpZGVkIHdpdGggdGhl
IGRpc3RyaWJ1dGlvbi4KLSAqCi0gKiBUSElTIFNPRlRXQVJFIElTIFBST1ZJREVEIEJZIEFQUExF
IElOQy4gYGBBUyBJUycnIEFORCBBTlkKLSAqIEVYUFJFU1MgT1IgSU1QTElFRCBXQVJSQU5USUVT
LCBJTkNMVURJTkcsIEJVVCBOT1QgTElNSVRFRCBUTywgVEhFCi0gKiBJTVBMSUVEIFdBUlJBTlRJ
RVMgT0YgTUVSQ0hBTlRBQklMSVRZIEFORCBGSVRORVNTIEZPUiBBIFBBUlRJQ1VMQVIKLSAqIFBV
UlBPU0UgQVJFIERJU0NMQUlNRUQuICBJTiBOTyBFVkVOVCBTSEFMTCBBUFBMRSBJTkMuIE9SCi0g
KiBDT05UUklCVVRPUlMgQkUgTElBQkxFIEZPUiBBTlkgRElSRUNULCBJTkRJUkVDVCwgSU5DSURF
TlRBTCwgU1BFQ0lBTCwKLSAqIEVYRU1QTEFSWSwgT1IgQ09OU0VRVUVOVElBTCBEQU1BR0VTIChJ
TkNMVURJTkcsIEJVVCBOT1QgTElNSVRFRCBUTywKLSAqIFBST0NVUkVNRU5UIE9GIFNVQlNUSVRV
VEUgR09PRFMgT1IgU0VSVklDRVM7IExPU1MgT0YgVVNFLCBEQVRBLCBPUgotICogUFJPRklUUzsg
T1IgQlVTSU5FU1MgSU5URVJSVVBUSU9OKSBIT1dFVkVSIENBVVNFRCBBTkQgT04gQU5ZIFRIRU9S
WQotICogT0YgTElBQklMSVRZLCBXSEVUSEVSIElOIENPTlRSQUNULCBTVFJJQ1QgTElBQklMSVRZ
LCBPUiBUT1JUCi0gKiAoSU5DTFVESU5HIE5FR0xJR0VOQ0UgT1IgT1RIRVJXSVNFKSBBUklTSU5H
IElOIEFOWSBXQVkgT1VUIE9GIFRIRSBVU0UKLSAqIE9GIFRISVMgU09GVFdBUkUsIEVWRU4gSUYg
QURWSVNFRCBPRiBUSEUgUE9TU0lCSUxJVFkgT0YgU1VDSCBEQU1BR0UuCi0gKi8KLQotI2lmbmRl
ZiBNb2R1bGVSZWNvcmRfaAotI2RlZmluZSBNb2R1bGVSZWNvcmRfaAotCi0jaW5jbHVkZSAiTm9k
ZXMuaCIKLSNpbmNsdWRlIDx3dGYvSGFzaE1hcC5oPgotI2luY2x1ZGUgPHd0Zi9MaXN0SGFzaFNl
dC5oPgotCi1uYW1lc3BhY2UgSlNDIHsKLQotLy8gQmFzZWQgb24gdGhlIFNvdXJjZSBUZXh0IE1v
ZHVsZSBSZWNvcmQKLS8vIGh0dHA6Ly93d3cuZWNtYS1pbnRlcm5hdGlvbmFsLm9yZy9lY21hLTI2
Mi82LjAvI3NlYy1zb3VyY2UtdGV4dC1tb2R1bGUtcmVjb3JkcwotY2xhc3MgTW9kdWxlUmVjb3Jk
IDogcHVibGljIFJlZkNvdW50ZWQ8TW9kdWxlUmVjb3JkPiB7Ci1wdWJsaWM6Ci0gICAgc3RydWN0
IEV4cG9ydEVudHJ5IHsKLSAgICAgICAgZW51bSBjbGFzcyBUeXBlIHsKLSAgICAgICAgICAgIExv
Y2FsLAotICAgICAgICAgICAgTmFtZXNwYWNlLAotICAgICAgICAgICAgSW5kaXJlY3QKLSAgICAg
ICAgfTsKLQotICAgICAgICBzdGF0aWMgRXhwb3J0RW50cnkgY3JlYXRlTG9jYWwoY29uc3QgSWRl
bnRpZmllciYgZXhwb3J0TmFtZSwgY29uc3QgSWRlbnRpZmllciYgbG9jYWxOYW1lLCBjb25zdCBW
YXJpYWJsZUVudmlyb25tZW50RW50cnkmKTsKLSAgICAgICAgc3RhdGljIEV4cG9ydEVudHJ5IGNy
ZWF0ZU5hbWVzcGFjZShjb25zdCBJZGVudGlmaWVyJiBleHBvcnROYW1lLCBjb25zdCBJZGVudGlm
aWVyJiBtb2R1bGVOYW1lKTsKLSAgICAgICAgc3RhdGljIEV4cG9ydEVudHJ5IGNyZWF0ZUluZGly
ZWN0KGNvbnN0IElkZW50aWZpZXImIGV4cG9ydE5hbWUsIGNvbnN0IElkZW50aWZpZXImIGltcG9y
dE5hbWUsIGNvbnN0IElkZW50aWZpZXImIG1vZHVsZU5hbWUpOwotCi0gICAgICAgIFR5cGUgdHlw
ZTsKLSAgICAgICAgSWRlbnRpZmllciBleHBvcnROYW1lOwotICAgICAgICBJZGVudGlmaWVyIG1v
ZHVsZU5hbWU7Ci0gICAgICAgIElkZW50aWZpZXIgaW1wb3J0TmFtZTsKLSAgICAgICAgSWRlbnRp
ZmllciBsb2NhbE5hbWU7Ci0gICAgICAgIFZhcmlhYmxlRW52aXJvbm1lbnRFbnRyeSB2YXJpYWJs
ZTsKLSAgICB9OwotCi0gICAgc3RydWN0IEltcG9ydEVudHJ5IHsKLSAgICAgICAgSWRlbnRpZmll
ciBtb2R1bGVSZXF1ZXN0OwotICAgICAgICBJZGVudGlmaWVyIGltcG9ydE5hbWU7Ci0gICAgICAg
IElkZW50aWZpZXIgbG9jYWxOYW1lOwotCi0gICAgICAgIGJvb2wgaXNOYW1lc3BhY2UoVk0mIHZt
KSBjb25zdAotICAgICAgICB7Ci0gICAgICAgICAgICByZXR1cm4gaW1wb3J0TmFtZSA9PSB2bS5w
cm9wZXJ0eU5hbWVzLT50aW1lc0lkZW50aWZpZXI7Ci0gICAgICAgIH0KLSAgICB9OwotCi0gICAg
dHlwZWRlZiBXVEY6Okxpc3RIYXNoU2V0PFJlZlB0cjxVbmlxdWVkU3RyaW5nSW1wbD4sIElkZW50
aWZpZXJSZXBIYXNoPiBPcmRlcmVkSWRlbnRpZmllclNldDsKLSAgICB0eXBlZGVmIEhhc2hNYXA8
UmVmUHRyPFVuaXF1ZWRTdHJpbmdJbXBsPiwgSW1wb3J0RW50cnksIElkZW50aWZpZXJSZXBIYXNo
LCBIYXNoVHJhaXRzPFJlZlB0cjxVbmlxdWVkU3RyaW5nSW1wbD4+PiBJbXBvcnRNYXA7Ci0gICAg
dHlwZWRlZiBIYXNoTWFwPFJlZlB0cjxVbmlxdWVkU3RyaW5nSW1wbD4sIEV4cG9ydEVudHJ5LCBJ
ZGVudGlmaWVyUmVwSGFzaCwgSGFzaFRyYWl0czxSZWZQdHI8VW5pcXVlZFN0cmluZ0ltcGw+Pj4g
RXhwb3J0TWFwOwotCi0gICAgc3RhdGljIFJlZjxNb2R1bGVSZWNvcmQ+IGNyZWF0ZSgpCi0gICAg
ewotICAgICAgICByZXR1cm4gYWRvcHRSZWYoKm5ldyBNb2R1bGVSZWNvcmQpOwotICAgIH0KLQot
ICAgIHZvaWQgYXBwZW5kUmVxdWVzdGVkTW9kdWxlKGNvbnN0IElkZW50aWZpZXImKTsKLSAgICB2
b2lkIGFkZFN0YXJFeHBvcnRFbnRyeShjb25zdCBJZGVudGlmaWVyJik7Ci0gICAgdm9pZCBhZGRJ
bXBvcnRFbnRyeShjb25zdCBJbXBvcnRFbnRyeSYpOwotICAgIHZvaWQgYWRkRXhwb3J0RW50cnko
Y29uc3QgRXhwb3J0RW50cnkmKTsKLQotICAgIGNvbnN0IEltcG9ydEVudHJ5JiBsb29rVXBJbXBv
cnRFbnRyeShjb25zdCBSZWZQdHI8VW5pcXVlZFN0cmluZ0ltcGw+JiBsb2NhbE5hbWUpOwotCi0g
ICAgdm9pZCBkdW1wKCk7Ci0KLXByaXZhdGU6Ci0gICAgLy8gTWFwIGxvY2FsTmFtZSAtPiBJbXBv
cnRFbnRyeS4KLSAgICBJbXBvcnRNYXAgbV9pbXBvcnRFbnRyaWVzOwotCi0gICAgLy8gTWFwIGV4
cG9ydE5hbWUgLT4gRXhwb3J0RW50cnkuCi0gICAgRXhwb3J0TWFwIG1fZXhwb3J0RW50cmllczsK
LQotICAgIElkZW50aWZpZXJTZXQgbV9zdGFyRXhwb3J0RW50cmllczsKLQotICAgIC8vIFNhdmUg
dGhlIG9jY3VycmVuY2Ugb3JkZXIgc2luY2UgdGhlIG1vZHVsZSBsb2FkZXIgbG9hZHMgYW5kIHJ1
bnMgdGhlIG1vZHVsZXMgaW4gdGhpcyBvcmRlci4KLSAgICAvLyBodHRwOi8vd3d3LmVjbWEtaW50
ZXJuYXRpb25hbC5vcmcvZWNtYS0yNjIvNi4wLyNzZWMtbW9kdWxlZXZhbHVhdGlvbgotICAgIE9y
ZGVyZWRJZGVudGlmaWVyU2V0IG1fcmVxdWVzdGVkTW9kdWxlczsKLX07Ci0KLWlubGluZSB2b2lk
IE1vZHVsZVJlY29yZDo6YXBwZW5kUmVxdWVzdGVkTW9kdWxlKGNvbnN0IElkZW50aWZpZXImIG1v
ZHVsZU5hbWUpCi17Ci0gICAgbV9yZXF1ZXN0ZWRNb2R1bGVzLmFkZChtb2R1bGVOYW1lLmltcGwo
KSk7Ci19Ci0KLWlubGluZSB2b2lkIE1vZHVsZVJlY29yZDo6YWRkSW1wb3J0RW50cnkoY29uc3Qg
SW1wb3J0RW50cnkmIGVudHJ5KQotewotICAgIG1faW1wb3J0RW50cmllcy5hZGQoZW50cnkubG9j
YWxOYW1lLmltcGwoKSwgZW50cnkpOwotfQotCi1pbmxpbmUgdm9pZCBNb2R1bGVSZWNvcmQ6OmFk
ZEV4cG9ydEVudHJ5KGNvbnN0IEV4cG9ydEVudHJ5JiBlbnRyeSkKLXsKLSAgICBtX2V4cG9ydEVu
dHJpZXMuYWRkKGVudHJ5LmV4cG9ydE5hbWUuaW1wbCgpLCBlbnRyeSk7Ci19Ci0KLWlubGluZSB2
b2lkIE1vZHVsZVJlY29yZDo6YWRkU3RhckV4cG9ydEVudHJ5KGNvbnN0IElkZW50aWZpZXImIG1v
ZHVsZU5hbWUpCi17Ci0gICAgbV9zdGFyRXhwb3J0RW50cmllcy5hZGQobW9kdWxlTmFtZS5pbXBs
KCkpOwotfQotCi1pbmxpbmUgYXV0byBNb2R1bGVSZWNvcmQ6Omxvb2tVcEltcG9ydEVudHJ5KGNv
bnN0IFJlZlB0cjxVbmlxdWVkU3RyaW5nSW1wbD4mIGxvY2FsTmFtZSkgLT4gY29uc3QgSW1wb3J0
RW50cnkmCi17Ci0gICAgcmV0dXJuICgqbV9pbXBvcnRFbnRyaWVzLmZpbmQobG9jYWxOYW1lKSku
dmFsdWU7Ci19Ci0KLX0gLy8gbmFtZXNwYWNlIEpTQwotCi0jZW5kaWYgLy8gTW9kdWxlUmVjb3Jk
X2gKZGlmZiAtLWdpdCBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9wYXJzZXIvTm9kZXMuaCBiL1Nv
dXJjZS9KYXZhU2NyaXB0Q29yZS9wYXJzZXIvTm9kZXMuaAppbmRleCBlZDVmYzI3MjUzNGEyNDY0
MmZkNjJhZWIxYTFkZjkzZTY4Y2FjYzIzLi41ZDBiNzRlNThkZGVkNmVlZTkyM2EzYmMwNDI4Yjc2
Y2VlOGMxYWYyIDEwMDY0NAotLS0gYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvcGFyc2VyL05vZGVz
LmgKKysrIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL3BhcnNlci9Ob2Rlcy5oCkBAIC03OSw4ICs3
OSw2IEBAIG5hbWVzcGFjZSBKU0MgewogICAgIH07CiAgICAgaW5saW5lIEZhbGxUaHJvdWdoTW9k
ZSBpbnZlcnQoRmFsbFRocm91Z2hNb2RlIGZhbGxUaHJvdWdoTW9kZSkgeyByZXR1cm4gc3RhdGlj
X2Nhc3Q8RmFsbFRocm91Z2hNb2RlPighZmFsbFRocm91Z2hNb2RlKTsgfQogCi0gICAgdHlwZWRl
ZiBIYXNoU2V0PFJlZlB0cjxVbmlxdWVkU3RyaW5nSW1wbD4sIElkZW50aWZpZXJSZXBIYXNoPiBJ
ZGVudGlmaWVyU2V0OwotCiAgICAgbmFtZXNwYWNlIERlY2xhcmF0aW9uU3RhY2tzIHsKICAgICAg
ICAgdHlwZWRlZiBWZWN0b3I8RnVuY3Rpb25NZXRhZGF0YU5vZGUqPiBGdW5jdGlvblN0YWNrOwog
ICAgIH0KZGlmZiAtLWdpdCBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9wYXJzZXIvTm9kZXNBbmFs
eXplTW9kdWxlLmNwcCBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9wYXJzZXIvTm9kZXNBbmFseXpl
TW9kdWxlLmNwcAppbmRleCA2MzNkZWFlY2U2YWY2NjY1OWQwZTc2YWMxYWE0MTYxNTlhYjc1YTM1
Li5lZDQ2MWRhMjY4MzRmYjMzYzk0NDAyMTRhOTk1ZTQ1YzhhODE5NDU1IDEwMDY0NAotLS0gYS9T
b3VyY2UvSmF2YVNjcmlwdENvcmUvcGFyc2VyL05vZGVzQW5hbHl6ZU1vZHVsZS5jcHAKKysrIGIv
U291cmNlL0phdmFTY3JpcHRDb3JlL3BhcnNlci9Ob2Rlc0FuYWx5emVNb2R1bGUuY3BwCkBAIC0y
Nyw4ICsyNyw5IEBACiAjaW5jbHVkZSAiTm9kZXMuaCIKICNpbmNsdWRlICJOb2RlQ29uc3RydWN0
b3JzLmgiCiAKKyNpbmNsdWRlICJKU0NKU1ZhbHVlSW5saW5lcy5oIgorI2luY2x1ZGUgIkpTTW9k
dWxlUmVjb3JkLmgiCiAjaW5jbHVkZSAiTW9kdWxlQW5hbHl6ZXIuaCIKLSNpbmNsdWRlICJNb2R1
bGVSZWNvcmQuaCIKIAogbmFtZXNwYWNlIEpTQyB7CiAKQEAgLTQ4LDkgKzQ5LDkgQEAgdm9pZCBT
b3VyY2VFbGVtZW50czo6YW5hbHl6ZU1vZHVsZShNb2R1bGVBbmFseXplciYgYW5hbHl6ZXIpCiAK
IHZvaWQgSW1wb3J0RGVjbGFyYXRpb25Ob2RlOjphbmFseXplTW9kdWxlKE1vZHVsZUFuYWx5emVy
JiBhbmFseXplcikKIHsKLSAgICBhbmFseXplci5tb2R1bGVSZWNvcmQoKS5hcHBlbmRSZXF1ZXN0
ZWRNb2R1bGUobV9tb2R1bGVOYW1lLT5tb2R1bGVOYW1lKCkpOworICAgIGFuYWx5emVyLm1vZHVs
ZVJlY29yZCgpLT5hcHBlbmRSZXF1ZXN0ZWRNb2R1bGUobV9tb2R1bGVOYW1lLT5tb2R1bGVOYW1l
KCkpOwogICAgIGZvciAoYXV0byogc3BlY2lmaWVyIDogbV9zcGVjaWZpZXJMaXN0LT5zcGVjaWZp
ZXJzKCkpIHsKLSAgICAgICAgYW5hbHl6ZXIubW9kdWxlUmVjb3JkKCkuYWRkSW1wb3J0RW50cnko
TW9kdWxlUmVjb3JkOjpJbXBvcnRFbnRyeSB7CisgICAgICAgIGFuYWx5emVyLm1vZHVsZVJlY29y
ZCgpLT5hZGRJbXBvcnRFbnRyeShKU01vZHVsZVJlY29yZDo6SW1wb3J0RW50cnkgewogICAgICAg
ICAgICAgbV9tb2R1bGVOYW1lLT5tb2R1bGVOYW1lKCksCiAgICAgICAgICAgICBzcGVjaWZpZXIt
PmltcG9ydGVkTmFtZSgpLAogICAgICAgICAgICAgc3BlY2lmaWVyLT5sb2NhbE5hbWUoKQpAQCAt
NjAsOCArNjEsOCBAQCB2b2lkIEltcG9ydERlY2xhcmF0aW9uTm9kZTo6YW5hbHl6ZU1vZHVsZShN
b2R1bGVBbmFseXplciYgYW5hbHl6ZXIpCiAKIHZvaWQgRXhwb3J0QWxsRGVjbGFyYXRpb25Ob2Rl
OjphbmFseXplTW9kdWxlKE1vZHVsZUFuYWx5emVyJiBhbmFseXplcikKIHsKLSAgICBhbmFseXpl
ci5tb2R1bGVSZWNvcmQoKS5hcHBlbmRSZXF1ZXN0ZWRNb2R1bGUobV9tb2R1bGVOYW1lLT5tb2R1
bGVOYW1lKCkpOwotICAgIGFuYWx5emVyLm1vZHVsZVJlY29yZCgpLmFkZFN0YXJFeHBvcnRFbnRy
eShtX21vZHVsZU5hbWUtPm1vZHVsZU5hbWUoKSk7CisgICAgYW5hbHl6ZXIubW9kdWxlUmVjb3Jk
KCktPmFwcGVuZFJlcXVlc3RlZE1vZHVsZShtX21vZHVsZU5hbWUtPm1vZHVsZU5hbWUoKSk7Cisg
ICAgYW5hbHl6ZXIubW9kdWxlUmVjb3JkKCktPmFkZFN0YXJFeHBvcnRFbnRyeShtX21vZHVsZU5h
bWUtPm1vZHVsZU5hbWUoKSk7CiB9CiAKIHZvaWQgRXhwb3J0RGVmYXVsdERlY2xhcmF0aW9uTm9k
ZTo6YW5hbHl6ZU1vZHVsZShNb2R1bGVBbmFseXplciYgYW5hbHl6ZXIpCkBAIC03Niw3ICs3Nyw3
IEBAIHZvaWQgRXhwb3J0TG9jYWxEZWNsYXJhdGlvbk5vZGU6OmFuYWx5emVNb2R1bGUoTW9kdWxl
QW5hbHl6ZXImKQogdm9pZCBFeHBvcnROYW1lZERlY2xhcmF0aW9uTm9kZTo6YW5hbHl6ZU1vZHVs
ZShNb2R1bGVBbmFseXplciYgYW5hbHl6ZXIpCiB7CiAgICAgaWYgKG1fbW9kdWxlTmFtZSkKLSAg
ICAgICAgYW5hbHl6ZXIubW9kdWxlUmVjb3JkKCkuYXBwZW5kUmVxdWVzdGVkTW9kdWxlKG1fbW9k
dWxlTmFtZS0+bW9kdWxlTmFtZSgpKTsKKyAgICAgICAgYW5hbHl6ZXIubW9kdWxlUmVjb3JkKCkt
PmFwcGVuZFJlcXVlc3RlZE1vZHVsZShtX21vZHVsZU5hbWUtPm1vZHVsZU5hbWUoKSk7CiAKICAg
ICBmb3IgKGF1dG8qIHNwZWNpZmllciA6IG1fc3BlY2lmaWVyTGlzdC0+c3BlY2lmaWVycygpKSB7
CiAgICAgICAgIGlmIChtX21vZHVsZU5hbWUpIHsKQEAgLTg0LDcgKzg1LDcgQEAgdm9pZCBFeHBv
cnROYW1lZERlY2xhcmF0aW9uTm9kZTo6YW5hbHl6ZU1vZHVsZShNb2R1bGVBbmFseXplciYgYW5h
bHl6ZXIpCiAgICAgICAgICAgICAvLwogICAgICAgICAgICAgLy8gSW4gdGhpcyBjYXNlLCBubyBs
b2NhbCB2YXJpYWJsZSBuYW1lcyBhcmUgaW1wb3J0ZWQgaW50byB0aGUgY3VycmVudCBtb2R1bGUu
CiAgICAgICAgICAgICAvLyAidiIgaW5kaXJlY3RseSBwb2ludHMgdGhlIGJpbmRpbmcgaW4gIm1v
ZCIuCi0gICAgICAgICAgICBhbmFseXplci5tb2R1bGVSZWNvcmQoKS5hZGRFeHBvcnRFbnRyeShN
b2R1bGVSZWNvcmQ6OkV4cG9ydEVudHJ5OjpjcmVhdGVJbmRpcmVjdChzcGVjaWZpZXItPmV4cG9y
dGVkTmFtZSgpLCBzcGVjaWZpZXItPmxvY2FsTmFtZSgpLCBtX21vZHVsZU5hbWUtPm1vZHVsZU5h
bWUoKSkpOworICAgICAgICAgICAgYW5hbHl6ZXIubW9kdWxlUmVjb3JkKCktPmFkZEV4cG9ydEVu
dHJ5KEpTTW9kdWxlUmVjb3JkOjpFeHBvcnRFbnRyeTo6Y3JlYXRlSW5kaXJlY3Qoc3BlY2lmaWVy
LT5leHBvcnRlZE5hbWUoKSwgc3BlY2lmaWVyLT5sb2NhbE5hbWUoKSwgbV9tb2R1bGVOYW1lLT5t
b2R1bGVOYW1lKCkpKTsKICAgICAgICAgICAgIGNvbnRpbnVlOwogICAgICAgICB9CiAKZGlmZiAt
LWdpdCBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL0NvbW1vbklkZW50aWZpZXJzLmNw
cCBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL0NvbW1vbklkZW50aWZpZXJzLmNwcApp
bmRleCBmYzZlNjJjYTA0NWUzNjI5Y2YyYWQzYjZiZmNiNzNkNWRkZmYwY2UxLi5hYTM5MmNlYjhk
MWEwNjVhOTI1MmFhNzc0NGRhYjhkOWIxNjA1NGU5IDEwMDY0NAotLS0gYS9Tb3VyY2UvSmF2YVNj
cmlwdENvcmUvcnVudGltZS9Db21tb25JZGVudGlmaWVycy5jcHAKKysrIGIvU291cmNlL0phdmFT
Y3JpcHRDb3JlL3J1bnRpbWUvQ29tbW9uSWRlbnRpZmllcnMuY3BwCkBAIC02OCwxNCArNjgsMTQg
QEAgYm9vbCBDb21tb25JZGVudGlmaWVyczo6aXNQcml2YXRlTmFtZShjb25zdCBJZGVudGlmaWVy
JiBpZGVudCkgY29uc3QKICAgICByZXR1cm4gbV9idWlsdGluTmFtZXMtPmlzUHJpdmF0ZU5hbWUo
aWRlbnQpOwogfQogCi1jb25zdCBJZGVudGlmaWVyKiBDb21tb25JZGVudGlmaWVyczo6Z2V0UHJp
dmF0ZU5hbWUoY29uc3QgSWRlbnRpZmllciYgaWRlbnQpIGNvbnN0Citjb25zdCBJZGVudGlmaWVy
KiBDb21tb25JZGVudGlmaWVyczo6bG9va1VwUHJpdmF0ZU5hbWUoY29uc3QgSWRlbnRpZmllciYg
aWRlbnQpIGNvbnN0CiB7Ci0gICAgcmV0dXJuIG1fYnVpbHRpbk5hbWVzLT5nZXRQcml2YXRlTmFt
ZShpZGVudCk7CisgICAgcmV0dXJuIG1fYnVpbHRpbk5hbWVzLT5sb29rVXBQcml2YXRlTmFtZShp
ZGVudCk7CiB9CiAgICAgCi1JZGVudGlmaWVyIENvbW1vbklkZW50aWZpZXJzOjpnZXRQdWJsaWNO
YW1lKGNvbnN0IElkZW50aWZpZXImIGlkZW50KSBjb25zdAorSWRlbnRpZmllciBDb21tb25JZGVu
dGlmaWVyczo6bG9va1VwUHVibGljTmFtZShjb25zdCBJZGVudGlmaWVyJiBpZGVudCkgY29uc3QK
IHsKLSAgICByZXR1cm4gbV9idWlsdGluTmFtZXMtPmdldFB1YmxpY05hbWUoaWRlbnQpOworICAg
IHJldHVybiBtX2J1aWx0aW5OYW1lcy0+bG9va1VwUHVibGljTmFtZShpZGVudCk7CiB9CiAKIApk
aWZmIC0tZ2l0IGEvU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvQ29tbW9uSWRlbnRpZmll
cnMuaCBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL0NvbW1vbklkZW50aWZpZXJzLmgK
aW5kZXggMTZhNTIzMDBiOWFlOTI0OTY1ZTJkYTI4ZGE4YmJlNzIyMGYyMzI3Ny4uMTYzYjExNjEw
NDFjY2RiMzVhZDUyOTc2Y2FmZTZiZDExZGZjOGI3NyAxMDA2NDQKLS0tIGEvU291cmNlL0phdmFT
Y3JpcHRDb3JlL3J1bnRpbWUvQ29tbW9uSWRlbnRpZmllcnMuaAorKysgYi9Tb3VyY2UvSmF2YVNj
cmlwdENvcmUvcnVudGltZS9Db21tb25JZGVudGlmaWVycy5oCkBAIC00Miw2ICs0Miw3IEBACiAg
ICAgbWFjcm8oSW5maW5pdHkpIFwKICAgICBtYWNybyhJbnRsKSBcCiAgICAgbWFjcm8oSlNPTikg
XAorICAgIG1hY3JvKExvYWRlcikgXAogICAgIG1hY3JvKE1hcClcCiAgICAgbWFjcm8oTWFwSXRl
cmF0b3IpXAogICAgIG1hY3JvKE1hdGgpIFwKQEAgLTI4MSw2ICsyODIsNyBAQAogICAgIG1hY3Jv
KE51bWJlcikgXAogICAgIG1hY3JvKEFycmF5KSBcCiAgICAgbWFjcm8oU3RyaW5nKSBcCisgICAg
bWFjcm8oTWFwKSBcCiAgICAgbWFjcm8oUHJvbWlzZSkgXAogICAgIG1hY3JvKEludGVybmFsUHJv
bWlzZSkgXAogICAgIG1hY3JvKGFicykgXApAQCAtMzAzLDYgKzMwNSw4IEBACiAgICAgbWFjcm8o
Y2FwYWJpbGl0aWVzKSBcCiAgICAgbWFjcm8oc3RhckRlZmF1bHQpIFwKICAgICBtYWNybyhJbnNw
ZWN0b3JJbnN0cnVtZW50YXRpb24pIFwKKyAgICBtYWNybyhnZXQpIFwKKyAgICBtYWNybyhzZXQp
IFwKIAogCiBuYW1lc3BhY2UgSlNDIHsKQEAgLTM0OSw4ICszNTMsOCBAQCBuYW1lc3BhY2UgSlND
IHsKICAgICAgICAgYm9vbCBpc1ByaXZhdGVOYW1lKFVuaXF1ZWRTdHJpbmdJbXBsJiB1aWQpIGNv
bnN0OwogICAgICAgICBib29sIGlzUHJpdmF0ZU5hbWUoY29uc3QgSWRlbnRpZmllciYpIGNvbnN0
OwogCi0gICAgICAgIGNvbnN0IElkZW50aWZpZXIqIGdldFByaXZhdGVOYW1lKGNvbnN0IElkZW50
aWZpZXImKSBjb25zdDsKLSAgICAgICAgSWRlbnRpZmllciBnZXRQdWJsaWNOYW1lKGNvbnN0IElk
ZW50aWZpZXImKSBjb25zdDsKKyAgICAgICAgY29uc3QgSWRlbnRpZmllciogbG9va1VwUHJpdmF0
ZU5hbWUoY29uc3QgSWRlbnRpZmllciYpIGNvbnN0OworICAgICAgICBJZGVudGlmaWVyIGxvb2tV
cFB1YmxpY05hbWUoY29uc3QgSWRlbnRpZmllciYpIGNvbnN0OwogCiAgICAgICAgIGNvbnN0IEJ5
dGVjb2RlSW50cmluc2ljUmVnaXN0cnkmIGJ5dGVjb2RlSW50cmluc2ljUmVnaXN0cnkoKSBjb25z
dCB7IHJldHVybiBtX2J5dGVjb2RlSW50cmluc2ljUmVnaXN0cnk7IH0KIApkaWZmIC0tZ2l0IGEv
U291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvQ29tcGxldGlvbi5jcHAgYi9Tb3VyY2UvSmF2
YVNjcmlwdENvcmUvcnVudGltZS9Db21wbGV0aW9uLmNwcAppbmRleCBhM2RhZWU2MDM0M2FjMTRi
MTRhZDAzMDRlYmRjOWEyNWFhYjE1NzIzLi5iZDU2MWNkZmFkNmFhYTY3NWE5NmNjYjAzYmIzNGE0
YWUyZDkxMzllIDEwMDY0NAotLS0gYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9Db21w
bGV0aW9uLmNwcAorKysgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9Db21wbGV0aW9u
LmNwcApAQCAtMjgsMTEgKzI4LDEyIEBACiAjaW5jbHVkZSAiRGVidWdnZXIuaCIKICNpbmNsdWRl
ICJFeGNlcHRpb24uaCIKICNpbmNsdWRlICJJbnRlcnByZXRlci5oIgorI2luY2x1ZGUgIkpTQ0lu
bGluZXMuaCIKICNpbmNsdWRlICJKU0dsb2JhbE9iamVjdC5oIgogI2luY2x1ZGUgIkpTTG9jay5o
IgotI2luY2x1ZGUgIkpTQ0lubGluZXMuaCIKKyNpbmNsdWRlICJKU01vZHVsZVJlY29yZC5oIgog
I2luY2x1ZGUgIk1vZHVsZUFuYWx5emVyLmgiCi0jaW5jbHVkZSAiTW9kdWxlUmVjb3JkLmgiCisj
aW5jbHVkZSAiTW9kdWxlTG9hZGVyT2JqZWN0LmgiCiAjaW5jbHVkZSAiUGFyc2VyLmgiCiAjaW5j
bHVkZSA8d3RmL1dURlRocmVhZERhdGEuaD4KIApAQCAtNjMsOCArNjQsOSBAQCBib29sIGNoZWNr
U3ludGF4KFZNJiB2bSwgY29uc3QgU291cmNlQ29kZSYgc291cmNlLCBQYXJzZXJFcnJvciYgZXJy
b3IpCiAgICAgICAgIEpTUGFyc2VyU3RyaWN0TW9kZTo6Tm90U3RyaWN0LCBTb3VyY2VQYXJzZU1v
ZGU6OlByb2dyYW1Nb2RlLCBlcnJvcik7CiB9CiAKLWJvb2wgY2hlY2tNb2R1bGVTeW50YXgoVk0m
IHZtLCBjb25zdCBTb3VyY2VDb2RlJiBzb3VyY2UsIFBhcnNlckVycm9yJiBlcnJvcikKK2Jvb2wg
Y2hlY2tNb2R1bGVTeW50YXgoRXhlY1N0YXRlKiBleGVjLCBjb25zdCBTb3VyY2VDb2RlJiBzb3Vy
Y2UsIFBhcnNlckVycm9yJiBlcnJvcikKIHsKKyAgICBWTSYgdm0gPSBleGVjLT52bSgpOwogICAg
IEpTTG9ja0hvbGRlciBsb2NrKHZtKTsKICAgICBSRUxFQVNFX0FTU0VSVCh2bS5hdG9taWNTdHJp
bmdUYWJsZSgpID09IHd0ZlRocmVhZERhdGEoKS5hdG9taWNTdHJpbmdUYWJsZSgpKTsKICAgICBz
dGQ6OnVuaXF1ZV9wdHI8TW9kdWxlUHJvZ3JhbU5vZGU+IG1vZHVsZVByb2dyYW1Ob2RlID0gcGFy
c2U8TW9kdWxlUHJvZ3JhbU5vZGU+KApAQCAtNzMsNyArNzUsNyBAQCBib29sIGNoZWNrTW9kdWxl
U3ludGF4KFZNJiB2bSwgY29uc3QgU291cmNlQ29kZSYgc291cmNlLCBQYXJzZXJFcnJvciYgZXJy
b3IpCiAgICAgaWYgKCFtb2R1bGVQcm9ncmFtTm9kZSkKICAgICAgICAgcmV0dXJuIGZhbHNlOwog
Ci0gICAgTW9kdWxlQW5hbHl6ZXIgbW9kdWxlQW5hbHl6ZXIodm0sIG1vZHVsZVByb2dyYW1Ob2Rl
LT52YXJEZWNsYXJhdGlvbnMoKSwgbW9kdWxlUHJvZ3JhbU5vZGUtPmxleGljYWxWYXJpYWJsZXMo
KSk7CisgICAgTW9kdWxlQW5hbHl6ZXIgbW9kdWxlQW5hbHl6ZXIoZXhlYywgbW9kdWxlUHJvZ3Jh
bU5vZGUtPnZhckRlY2xhcmF0aW9ucygpLCBtb2R1bGVQcm9ncmFtTm9kZS0+bGV4aWNhbFZhcmlh
YmxlcygpKTsKICAgICBtb2R1bGVBbmFseXplci5hbmFseXplKCptb2R1bGVQcm9ncmFtTm9kZSk7
CiAgICAgcmV0dXJuIHRydWU7CiB9CkBAIC0xMDgsNCArMTEwLDQyIEBAIEpTVmFsdWUgZXZhbHVh
dGUoRXhlY1N0YXRlKiBleGVjLCBjb25zdCBTb3VyY2VDb2RlJiBzb3VyY2UsIEpTVmFsdWUgdGhp
c1ZhbHVlLCBOCiAgICAgcmV0dXJuIHJlc3VsdDsKIH0KIAordm9pZCBldmFsdWF0ZU1vZHVsZShF
eGVjU3RhdGUqIGV4ZWMsIGNvbnN0IFNvdXJjZUNvZGUmIHNvdXJjZSwgTmFrZWRQdHI8RXhjZXB0
aW9uPiYgcmV0dXJuZWRFeGNlcHRpb24pCit7CisgICAgSlNMb2NrSG9sZGVyIGxvY2soZXhlYyk7
CisgICAgUkVMRUFTRV9BU1NFUlQoZXhlYy0+dm0oKS5hdG9taWNTdHJpbmdUYWJsZSgpID09IHd0
ZlRocmVhZERhdGEoKS5hdG9taWNTdHJpbmdUYWJsZSgpKTsKKyAgICBSRUxFQVNFX0FTU0VSVCgh
ZXhlYy0+dm0oKS5pc0NvbGxlY3RvckJ1c3koKSk7CisKKyAgICBDb2RlUHJvZmlsaW5nIHByb2Zp
bGUoc291cmNlKTsKKworICAgIEpTR2xvYmFsT2JqZWN0KiBnbG9iYWxPYmplY3QgPSBleGVjLT52
bUVudHJ5R2xvYmFsT2JqZWN0KCk7CisKKyAgICAvLyBHZW5lcmF0ZSB0aGUgdW5pcXVlIGtleSBm
b3IgdGhlIHNvdXJjZS1wcm92aWRlZCBtb2R1bGUuCisgICAgU3ltYm9sKiBrZXkgPSBTeW1ib2w6
OmNyZWF0ZShleGVjLT52bSgpKTsKKworICAgIE1vZHVsZUxvYWRlck9iamVjdCogbW9kdWxlTG9h
ZGVyID0gZ2xvYmFsT2JqZWN0LT5tb2R1bGVMb2FkZXIoKTsKKworICAgIC8vIEluc2VydCB0aGUg
Z2l2ZW4gc291cmNlIGNvZGUgdG8gdGhlIE1vZHVsZUxvYWRlciByZWdpc3RyeSBhcyB0aGUgZmV0
Y2hlZCByZWdpc3RyeSBlbnRyeS4KKyAgICBtb2R1bGVMb2FkZXItPnByb3ZpZGUoZXhlYywga2V5
LCBNb2R1bGVMb2FkZXJPYmplY3Q6OlN0YXR1czo6RmV0Y2gsIHNvdXJjZS50b1N0cmluZygpKTsK
KyAgICBpZiAoZXhlYy0+aGFkRXhjZXB0aW9uKCkpIHsKKyAgICAgICAgcmV0dXJuZWRFeGNlcHRp
b24gPSBleGVjLT5leGNlcHRpb24oKTsKKyAgICAgICAgZXhlYy0+Y2xlYXJFeGNlcHRpb24oKTsK
KyAgICAgICAgcmV0dXJuOworICAgIH0KKworICAgIC8vIEZJWE1FOiBOb3csIHdlIGRvbid0IGlt
cGxlbWVudCB0aGUgbGlua2luZyBwaGFzZSB5ZXQuCisgICAgLy8gU28gaGVyZSwgd2UganVzdCBj
YWxsIHJlcXVlc3RJbnN0YW50aWF0ZUFsbCB0byBvbmx5IHBlcmZvcm0gdGhlIG1vZHVsZSBsb2Fk
aW5nLgorICAgIC8vIEF0IGxhc3QsIGl0IHNob3VsZCBiZSByZXBsYWNlZCB3aXRoIHJlcXVlc3RS
ZWFkeS4KKyAgICAvLyBodHRwczovL2J1Z3Mud2Via2l0Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9MTQ4
MTcyCisgICAgbW9kdWxlTG9hZGVyLT5yZXF1ZXN0SW5zdGFudGlhdGVBbGwoZXhlYywga2V5KTsK
KworICAgIC8vIEZJWE1FOiBXZSBzaG91bGQgYWxzbyBoYW5kbGUgdGhlIGFzeW5jaHJvbm91cyBT
eW50YXggRXJyb3JzIHRoYXQgd2lsbCBiZSBkZWxpdmVyZWQgYnkgdGhlIHJlamVjdGVkIHByb21p
c2UuCisgICAgLy8gaHR0cHM6Ly9idWdzLndlYmtpdC5vcmcvc2hvd19idWcuY2dpP2lkPTE0ODE3
MworICAgIGlmIChleGVjLT5oYWRFeGNlcHRpb24oKSkgeworICAgICAgICByZXR1cm5lZEV4Y2Vw
dGlvbiA9IGV4ZWMtPmV4Y2VwdGlvbigpOworICAgICAgICBleGVjLT5jbGVhckV4Y2VwdGlvbigp
OworICAgICAgICByZXR1cm47CisgICAgfQorfQorCiB9IC8vIG5hbWVzcGFjZSBKU0MKZGlmZiAt
LWdpdCBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL0NvbXBsZXRpb24uaCBiL1NvdXJj
ZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL0NvbXBsZXRpb24uaAppbmRleCA3MDJlZDlmYWIwYzc5
MWZhZTE1NTA1NjI3YmM3MzFhZGJhZTNhNWZkLi5kZTMyZDYzZTYzYWM3Y2VkNDlkODE3ZTIzYzBi
ODc4ODY3YTA1YTY5IDEwMDY0NAotLS0gYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9D
b21wbGV0aW9uLmgKKysrIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvQ29tcGxldGlv
bi5oCkBAIC0zNywxMyArMzcsMTQgQEAgY2xhc3MgVk07CiAKIEpTX0VYUE9SVF9QUklWQVRFIGJv
b2wgY2hlY2tTeW50YXgoVk0mLCBjb25zdCBTb3VyY2VDb2RlJiwgUGFyc2VyRXJyb3ImKTsKIEpT
X0VYUE9SVF9QUklWQVRFIGJvb2wgY2hlY2tTeW50YXgoRXhlY1N0YXRlKiwgY29uc3QgU291cmNl
Q29kZSYsIEpTVmFsdWUqIGV4Y2VwdGlvbiA9IDApOwotSlNfRVhQT1JUX1BSSVZBVEUgYm9vbCBj
aGVja01vZHVsZVN5bnRheChWTSYsIGNvbnN0IFNvdXJjZUNvZGUmLCBQYXJzZXJFcnJvciYpOwor
SlNfRVhQT1JUX1BSSVZBVEUgYm9vbCBjaGVja01vZHVsZVN5bnRheChFeGVjU3RhdGUqLCBjb25z
dCBTb3VyY2VDb2RlJiwgUGFyc2VyRXJyb3ImKTsKIEpTX0VYUE9SVF9QUklWQVRFIEpTVmFsdWUg
ZXZhbHVhdGUoRXhlY1N0YXRlKiwgY29uc3QgU291cmNlQ29kZSYsIEpTVmFsdWUgdGhpc1ZhbHVl
LCBOYWtlZFB0cjxFeGNlcHRpb24+JiByZXR1cm5lZEV4Y2VwdGlvbik7CiBpbmxpbmUgSlNWYWx1
ZSBldmFsdWF0ZShFeGVjU3RhdGUqIGV4ZWMsIGNvbnN0IFNvdXJjZUNvZGUmIHNvdXJjZUNvZGUs
IEpTVmFsdWUgdGhpc1ZhbHVlID0gSlNWYWx1ZSgpKQogewogICAgIE5ha2VkUHRyPEV4Y2VwdGlv
bj4gdW51c2VkOwogICAgIHJldHVybiBldmFsdWF0ZShleGVjLCBzb3VyY2VDb2RlLCB0aGlzVmFs
dWUsIHVudXNlZCk7CiB9CitKU19FWFBPUlRfUFJJVkFURSB2b2lkIGV2YWx1YXRlTW9kdWxlKEV4
ZWNTdGF0ZSosIGNvbnN0IFNvdXJjZUNvZGUmLCBOYWtlZFB0cjxFeGNlcHRpb24+JiByZXR1cm5l
ZEV4Y2VwdGlvbik7CiAKIH0gLy8gbmFtZXNwYWNlIEpTQwogCmRpZmYgLS1naXQgYS9Tb3VyY2Uv
SmF2YVNjcmlwdENvcmUvcnVudGltZS9FeGNlcHRpb25IZWxwZXJzLmNwcCBiL1NvdXJjZS9KYXZh
U2NyaXB0Q29yZS9ydW50aW1lL0V4Y2VwdGlvbkhlbHBlcnMuY3BwCmluZGV4IDQ2YzBjZWY5Mzky
YTRhZDdjMGIwMGE5YTA4NDdlMGI5YWVmYzVmYWUuLmI3ODU5YmZlM2U4ZWFmZDFlYzY0YWI1ZmJm
ZWFmMjU3MmFkMjdjMTcgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1l
L0V4Y2VwdGlvbkhlbHBlcnMuY3BwCisrKyBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1l
L0V4Y2VwdGlvbkhlbHBlcnMuY3BwCkBAIC03Myw3ICs3Myw3IEBAIEpTT2JqZWN0KiBjcmVhdGVT
dGFja092ZXJmbG93RXJyb3IoRXhlY1N0YXRlKiBleGVjKQogSlNPYmplY3QqIGNyZWF0ZVVuZGVm
aW5lZFZhcmlhYmxlRXJyb3IoRXhlY1N0YXRlKiBleGVjLCBjb25zdCBJZGVudGlmaWVyJiBpZGVu
dCkKIHsKICAgICBpZiAoZXhlYy0+cHJvcGVydHlOYW1lcygpLmlzUHJpdmF0ZU5hbWUoaWRlbnQp
KSB7Ci0gICAgICAgIFN0cmluZyBtZXNzYWdlKG1ha2VTdHJpbmcoIkNhbid0IGZpbmQgcHJpdmF0
ZSB2YXJpYWJsZTogQCIsIGV4ZWMtPnByb3BlcnR5TmFtZXMoKS5nZXRQdWJsaWNOYW1lKGlkZW50
KS5zdHJpbmcoKSkpOworICAgICAgICBTdHJpbmcgbWVzc2FnZShtYWtlU3RyaW5nKCJDYW4ndCBm
aW5kIHByaXZhdGUgdmFyaWFibGU6IEAiLCBleGVjLT5wcm9wZXJ0eU5hbWVzKCkubG9va1VwUHVi
bGljTmFtZShpZGVudCkuc3RyaW5nKCkpKTsKICAgICAgICAgcmV0dXJuIGNyZWF0ZVJlZmVyZW5j
ZUVycm9yKGV4ZWMsIG1lc3NhZ2UpOwogICAgIH0KICAgICBTdHJpbmcgbWVzc2FnZShtYWtlU3Ry
aW5nKCJDYW4ndCBmaW5kIHZhcmlhYmxlOiAiLCBpZGVudC5zdHJpbmcoKSkpOwpkaWZmIC0tZ2l0
IGEvU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvSWRlbnRpZmllci5oIGIvU291cmNlL0ph
dmFTY3JpcHRDb3JlL3J1bnRpbWUvSWRlbnRpZmllci5oCmluZGV4IDYxZGU2NTM2YTZmYTRjMjlh
Y2E0ZGYxNGI3ZDZmZWM0ZDJhNTAzZTYuLjg4OWNhNmIyMmU0Mzc5MzYyZjI1ODA1ZmQwNWU2Zjg0
YWE2N2JiYTYgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL0lkZW50
aWZpZXIuaAorKysgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9JZGVudGlmaWVyLmgK
QEAgLTI5Miw2ICsyOTIsNyBAQCBzdHJ1Y3QgSWRlbnRpZmllck1hcEluZGV4SGFzaFRyYWl0cyA6
IEhhc2hUcmFpdHM8aW50PiB7CiAgICAgc3RhdGljIGNvbnN0IGJvb2wgZW1wdHlWYWx1ZUlzWmVy
byA9IGZhbHNlOwogfTsKIAordHlwZWRlZiBIYXNoU2V0PFJlZlB0cjxVbmlxdWVkU3RyaW5nSW1w
bD4sIElkZW50aWZpZXJSZXBIYXNoPiBJZGVudGlmaWVyU2V0OwogdHlwZWRlZiBIYXNoTWFwPFJl
ZlB0cjxVbmlxdWVkU3RyaW5nSW1wbD4sIGludCwgSWRlbnRpZmllclJlcEhhc2gsIEhhc2hUcmFp
dHM8UmVmUHRyPFVuaXF1ZWRTdHJpbmdJbXBsPj4sIElkZW50aWZpZXJNYXBJbmRleEhhc2hUcmFp
dHM+IElkZW50aWZpZXJNYXA7CiB0eXBlZGVmIEhhc2hNYXA8VW5pcXVlZFN0cmluZ0ltcGwqLCBp
bnQsIElkZW50aWZpZXJSZXBIYXNoLCBIYXNoVHJhaXRzPFVuaXF1ZWRTdHJpbmdJbXBsKj4sIElk
ZW50aWZpZXJNYXBJbmRleEhhc2hUcmFpdHM+IEJvcnJvd2VkSWRlbnRpZmllck1hcDsKIApkaWZm
IC0tZ2l0IGEvU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvSlNHbG9iYWxPYmplY3QuY3Bw
IGIvU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvSlNHbG9iYWxPYmplY3QuY3BwCmluZGV4
IGUyODVmNjZkZjM0MjU3NDY4N2U4YmFmZTk2NTVlYTA5MTE0ZDg2ODQuLjkzZWUxZmQ3NGI5OTI1
OTA0MWNhMWU4NjJmNjMxMWY2NTA5ODM4OWEgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9KYXZhU2NyaXB0
Q29yZS9ydW50aW1lL0pTR2xvYmFsT2JqZWN0LmNwcAorKysgYi9Tb3VyY2UvSmF2YVNjcmlwdENv
cmUvcnVudGltZS9KU0dsb2JhbE9iamVjdC5jcHAKQEAgLTg0LDYgKzg0LDcgQEAKICNpbmNsdWRl
ICJKU0xvY2suaCIKICNpbmNsdWRlICJKU01hcC5oIgogI2luY2x1ZGUgIkpTTWFwSXRlcmF0b3Iu
aCIKKyNpbmNsdWRlICJKU01vZHVsZVJlY29yZC5oIgogI2luY2x1ZGUgIkpTT05PYmplY3QuaCIK
ICNpbmNsdWRlICJKU1Byb21pc2UuaCIKICNpbmNsdWRlICJKU1Byb21pc2VDb25zdHJ1Y3Rvci5o
IgpAQCAtMTA3LDYgKzEwOCw3IEBACiAjaW5jbHVkZSAiTWFwUHJvdG90eXBlLmgiCiAjaW5jbHVk
ZSAiTWF0aE9iamVjdC5oIgogI2luY2x1ZGUgIk1pY3JvdGFzay5oIgorI2luY2x1ZGUgIk1vZHVs
ZUxvYWRlck9iamVjdC5oIgogI2luY2x1ZGUgIk5hdGl2ZUVycm9yQ29uc3RydWN0b3IuaCIKICNp
bmNsdWRlICJOYXRpdmVFcnJvclByb3RvdHlwZS5oIgogI2luY2x1ZGUgIk51bGxHZXR0ZXJGdW5j
dGlvbi5oIgpAQCAtMTYwLDcgKzE2Miw3IEBAIG5hbWVzcGFjZSBKU0MgewogCiBjb25zdCBDbGFz
c0luZm8gSlNHbG9iYWxPYmplY3Q6OnNfaW5mbyA9IHsgIkdsb2JhbE9iamVjdCIsICZCYXNlOjpz
X2luZm8sICZnbG9iYWxPYmplY3RUYWJsZSwgQ1JFQVRFX01FVEhPRF9UQUJMRShKU0dsb2JhbE9i
amVjdCkgfTsKIAotY29uc3QgR2xvYmFsT2JqZWN0TWV0aG9kVGFibGUgSlNHbG9iYWxPYmplY3Q6
OnNfZ2xvYmFsT2JqZWN0TWV0aG9kVGFibGUgPSB7ICZhbGxvd3NBY2Nlc3NGcm9tLCAmc3VwcG9y
dHNQcm9maWxpbmcsICZzdXBwb3J0c1JpY2hTb3VyY2VJbmZvLCAmc2hvdWxkSW50ZXJydXB0U2Ny
aXB0LCAmamF2YVNjcmlwdFJ1bnRpbWVGbGFncywgbnVsbHB0ciwgJnNob3VsZEludGVycnVwdFNj
cmlwdEJlZm9yZVRpbWVvdXQgfTsKK2NvbnN0IEdsb2JhbE9iamVjdE1ldGhvZFRhYmxlIEpTR2xv
YmFsT2JqZWN0OjpzX2dsb2JhbE9iamVjdE1ldGhvZFRhYmxlID0geyAmYWxsb3dzQWNjZXNzRnJv
bSwgJnN1cHBvcnRzUHJvZmlsaW5nLCAmc3VwcG9ydHNSaWNoU291cmNlSW5mbywgJnNob3VsZElu
dGVycnVwdFNjcmlwdCwgJmphdmFTY3JpcHRSdW50aW1lRmxhZ3MsIG51bGxwdHIsICZzaG91bGRJ
bnRlcnJ1cHRTY3JpcHRCZWZvcmVUaW1lb3V0LCBudWxscHRyLCBudWxscHRyLCBudWxscHRyLCBu
dWxscHRyIH07CiAKIC8qIFNvdXJjZSBmb3IgSlNHbG9iYWxPYmplY3QubHV0LmgKIEBiZWdpbiBn
bG9iYWxPYmplY3RUYWJsZQpAQCAtMzIwLDYgKzMyMiw3IEBAIHZvaWQgSlNHbG9iYWxPYmplY3Q6
OmluaXQoVk0mIHZtKQogICAgIG1fb3V0T2ZCYW5kQXJndW1lbnRzU3RydWN0dXJlLnNldCh2bSwg
dGhpcywgQ2xvbmVkQXJndW1lbnRzOjpjcmVhdGVTdHJ1Y3R1cmUodm0sIHRoaXMsIG1fb2JqZWN0
UHJvdG90eXBlLmdldCgpKSk7CiAgICAgbV9jYWxsYmFja0NvbnN0cnVjdG9yU3RydWN0dXJlLnNl
dCh2bSwgdGhpcywgSlNDYWxsYmFja0NvbnN0cnVjdG9yOjpjcmVhdGVTdHJ1Y3R1cmUodm0sIHRo
aXMsIG1fb2JqZWN0UHJvdG90eXBlLmdldCgpKSk7CiAgICAgbV9jYWxsYmFja09iamVjdFN0cnVj
dHVyZS5zZXQodm0sIHRoaXMsIEpTQ2FsbGJhY2tPYmplY3Q8SlNEZXN0cnVjdGlibGVPYmplY3Q+
OjpjcmVhdGVTdHJ1Y3R1cmUodm0sIHRoaXMsIG1fb2JqZWN0UHJvdG90eXBlLmdldCgpKSk7CisK
ICNpZiBKU0NfT0JKQ19BUElfRU5BQkxFRAogICAgIG1fb2JqY0NhbGxiYWNrRnVuY3Rpb25TdHJ1
Y3R1cmUuc2V0KHZtLCB0aGlzLCBPYmpDQ2FsbGJhY2tGdW5jdGlvbjo6Y3JlYXRlU3RydWN0dXJl
KHZtLCB0aGlzLCBtX2Z1bmN0aW9uUHJvdG90eXBlLmdldCgpKSk7CiAgICAgbV9vYmpjV3JhcHBl
ck9iamVjdFN0cnVjdHVyZS5zZXQodm0sIHRoaXMsIEpTQ2FsbGJhY2tPYmplY3Q8SlNBUElXcmFw
cGVyT2JqZWN0Pjo6Y3JlYXRlU3RydWN0dXJlKHZtLCB0aGlzLCBtX29iamVjdFByb3RvdHlwZS5n
ZXQoKSkpOwpAQCAtMzQyLDYgKzM0NSw4IEBAIHZvaWQgSlNHbG9iYWxPYmplY3Q6OmluaXQoVk0m
IHZtKQogICAgIG1fcmVnRXhwU3RydWN0dXJlLnNldCh2bSwgdGhpcywgUmVnRXhwT2JqZWN0Ojpj
cmVhdGVTdHJ1Y3R1cmUodm0sIHRoaXMsIG1fcmVnRXhwUHJvdG90eXBlLmdldCgpKSk7CiAgICAg
bV9yZWdFeHBNYXRjaGVzQXJyYXlTdHJ1Y3R1cmUuc2V0KHZtLCB0aGlzLCBjcmVhdGVSZWdFeHBN
YXRjaGVzQXJyYXlTdHJ1Y3R1cmUodm0sICp0aGlzKSk7CiAKKyAgICBtX21vZHVsZVJlY29yZFN0
cnVjdHVyZS5zZXQodm0sIHRoaXMsIEpTTW9kdWxlUmVjb3JkOjpjcmVhdGVTdHJ1Y3R1cmUodm0s
IHRoaXMsIG1fb2JqZWN0UHJvdG90eXBlLmdldCgpKSk7CisgICAgCiAjaWYgRU5BQkxFKFdFQkFT
U0VNQkxZKQogICAgIG1fd2FzbU1vZHVsZVN0cnVjdHVyZS5zZXQodm0sIHRoaXMsIEpTV0FTTU1v
ZHVsZTo6Y3JlYXRlU3RydWN0dXJlKHZtLCB0aGlzKSk7CiAjZW5kaWYKQEAgLTQ0MSw3ICs0NDYs
NyBAQCBwdXREaXJlY3RXaXRob3V0VHJhbnNpdGlvbih2bSwgdm0ucHJvcGVydHlOYW1lcy0+IGpz
TmFtZSwgbG93ZXJOYW1lICMjIENvbnN0cnVjdAogICAgIHB1dERpcmVjdFdpdGhvdXRUcmFuc2l0
aW9uKHZtLCB2bS5wcm9wZXJ0eU5hbWVzLT5KU09OLCBKU09OT2JqZWN0OjpjcmVhdGUodm0sIEpT
T05PYmplY3Q6OmNyZWF0ZVN0cnVjdHVyZSh2bSwgdGhpcywgbV9vYmplY3RQcm90b3R5cGUuZ2V0
KCkpKSwgRG9udEVudW0pOwogICAgIHB1dERpcmVjdFdpdGhvdXRUcmFuc2l0aW9uKHZtLCB2bS5w
cm9wZXJ0eU5hbWVzLT5NYXRoLCBNYXRoT2JqZWN0OjpjcmVhdGUodm0sIHRoaXMsIE1hdGhPYmpl
Y3Q6OmNyZWF0ZVN0cnVjdHVyZSh2bSwgdGhpcywgbV9vYmplY3RQcm90b3R5cGUuZ2V0KCkpKSwg
RG9udEVudW0pOwogICAgIHB1dERpcmVjdFdpdGhvdXRUcmFuc2l0aW9uKHZtLCB2bS5wcm9wZXJ0
eU5hbWVzLT5SZWZsZWN0LCBSZWZsZWN0T2JqZWN0OjpjcmVhdGUodm0sIHRoaXMsIFJlZmxlY3RP
YmplY3Q6OmNyZWF0ZVN0cnVjdHVyZSh2bSwgdGhpcywgbV9vYmplY3RQcm90b3R5cGUuZ2V0KCkp
KSwgRG9udEVudW0pOwotICAgIAorCiAgICAgc3RkOjphcnJheTxJbnRlcm5hbEZ1bmN0aW9uKiwg
TlVNQkVSX09GX1RZUEVEX0FSUkFZX1RZUEVTPiB0eXBlZEFycmF5Q29uc3RydWN0b3JzOwogICAg
IHR5cGVkQXJyYXlDb25zdHJ1Y3RvcnNbdG9JbmRleChUeXBlSW50OCldID0gSlNJbnQ4QXJyYXlD
b25zdHJ1Y3Rvcjo6Y3JlYXRlKHZtLCBKU0ludDhBcnJheUNvbnN0cnVjdG9yOjpjcmVhdGVTdHJ1
Y3R1cmUodm0sIHRoaXMsIG1fZnVuY3Rpb25Qcm90b3R5cGUuZ2V0KCkpLCBtX3R5cGVkQXJyYXlz
W3RvSW5kZXgoVHlwZUludDgpXS5wcm90b3R5cGUuZ2V0KCksIEFTQ0lJTGl0ZXJhbCgiSW50OEFy
cmF5IikpOwogICAgIHR5cGVkQXJyYXlDb25zdHJ1Y3RvcnNbdG9JbmRleChUeXBlSW50MTYpXSA9
IEpTSW50MTZBcnJheUNvbnN0cnVjdG9yOjpjcmVhdGUodm0sIEpTSW50MTZBcnJheUNvbnN0cnVj
dG9yOjpjcmVhdGVTdHJ1Y3R1cmUodm0sIHRoaXMsIG1fZnVuY3Rpb25Qcm90b3R5cGUuZ2V0KCkp
LCBtX3R5cGVkQXJyYXlzW3RvSW5kZXgoVHlwZUludDE2KV0ucHJvdG90eXBlLmdldCgpLCBBU0NJ
SUxpdGVyYWwoIkludDE2QXJyYXkiKSk7CkBAIC00NTgsNyArNDYzLDExIEBAIHB1dERpcmVjdFdp
dGhvdXRUcmFuc2l0aW9uKHZtLCB2bS5wcm9wZXJ0eU5hbWVzLT4ganNOYW1lLCBsb3dlck5hbWUg
IyMgQ29uc3RydWN0CiAgICAgICAgIG1fdHlwZWRBcnJheXNbdHlwZWRBcnJheUluZGV4XS5wcm90
b3R5cGUtPnB1dERpcmVjdFdpdGhvdXRUcmFuc2l0aW9uKHZtLCB2bS5wcm9wZXJ0eU5hbWVzLT5j
b25zdHJ1Y3RvciwgdHlwZWRBcnJheUNvbnN0cnVjdG9yc1t0eXBlZEFycmF5SW5kZXhdLCBEb250
RW51bSk7CiAgICAgICAgIHB1dERpcmVjdFdpdGhvdXRUcmFuc2l0aW9uKHZtLCBJZGVudGlmaWVy
Ojpmcm9tU3RyaW5nKGV4ZWMsIHR5cGVkQXJyYXlDb25zdHJ1Y3RvcnNbdHlwZWRBcnJheUluZGV4
XS0+bmFtZShleGVjKSksIHR5cGVkQXJyYXlDb25zdHJ1Y3RvcnNbdHlwZWRBcnJheUluZGV4XSwg
RG9udEVudW0pOwogICAgIH0KLSAgICAKKworICAgIG1fbW9kdWxlTG9hZGVyLnNldCh2bSwgdGhp
cywgTW9kdWxlTG9hZGVyT2JqZWN0OjpjcmVhdGUodm0sIHRoaXMsIE1vZHVsZUxvYWRlck9iamVj
dDo6Y3JlYXRlU3RydWN0dXJlKHZtLCB0aGlzLCBtX29iamVjdFByb3RvdHlwZS5nZXQoKSkpKTsK
KyAgICBpZiAoT3B0aW9uczo6ZXhwb3NlSW50ZXJuYWxNb2R1bGVMb2FkZXIoKSkKKyAgICAgICAg
cHV0RGlyZWN0V2l0aG91dFRyYW5zaXRpb24odm0sIHZtLnByb3BlcnR5TmFtZXMtPkxvYWRlciwg
bV9tb2R1bGVMb2FkZXIuZ2V0KCksIERvbnRFbnVtKTsKKwogICAgIEpTRnVuY3Rpb24qIGJ1aWx0
aW5Mb2cgPSBKU0Z1bmN0aW9uOjpjcmVhdGUodm0sIHRoaXMsIDEsIHZtLnByb3BlcnR5TmFtZXMt
PmVtcHR5SWRlbnRpZmllci5zdHJpbmcoKSwgZ2xvYmFsRnVuY0J1aWx0aW5Mb2cpOwogCiAgICAg
SlNGdW5jdGlvbiogcHJpdmF0ZUZ1bmNBYnMgPSBKU0Z1bmN0aW9uOjpjcmVhdGUodm0sIHRoaXMs
IDAsIFN0cmluZygpLCBtYXRoUHJvdG9GdW5jQWJzLCBBYnNJbnRyaW5zaWMpOwpAQCAtNTEwLDYg
KzUxOSw3IEBAIHB1dERpcmVjdFdpdGhvdXRUcmFuc2l0aW9uKHZtLCB2bS5wcm9wZXJ0eU5hbWVz
LT4ganNOYW1lLCBsb3dlck5hbWUgIyMgQ29uc3RydWN0CiAgICAgICAgIEdsb2JhbFByb3BlcnR5
SW5mbyh2bS5wcm9wZXJ0eU5hbWVzLT5idWlsdGluTmFtZXMoKS5wcm9taXNlUmVhY3Rpb25Kb2JQ
cml2YXRlTmFtZSgpLCBKU0Z1bmN0aW9uOjpjcmVhdGVCdWlsdGluRnVuY3Rpb24odm0sIG9wZXJh
dGlvbnNQcm9taXNlUHJvbWlzZVJlYWN0aW9uSm9iQ29kZUdlbmVyYXRvcih2bSksIHRoaXMpLCBE
b250RW51bSB8IERvbnREZWxldGUgfCBSZWFkT25seSksCiAgICAgICAgIEdsb2JhbFByb3BlcnR5
SW5mbyh2bS5wcm9wZXJ0eU5hbWVzLT5idWlsdGluTmFtZXMoKS5wcm9taXNlUmVzb2x2ZVRoZW5h
YmxlSm9iUHJpdmF0ZU5hbWUoKSwgSlNGdW5jdGlvbjo6Y3JlYXRlQnVpbHRpbkZ1bmN0aW9uKHZt
LCBvcGVyYXRpb25zUHJvbWlzZVByb21pc2VSZXNvbHZlVGhlbmFibGVKb2JDb2RlR2VuZXJhdG9y
KHZtKSwgdGhpcyksIERvbnRFbnVtIHwgRG9udERlbGV0ZSB8IFJlYWRPbmx5KSwKICAgICAgICAg
R2xvYmFsUHJvcGVydHlJbmZvKHZtLnByb3BlcnR5TmFtZXMtPmJ1aWx0aW5OYW1lcygpLkluc3Bl
Y3Rvckluc3RydW1lbnRhdGlvblByaXZhdGVOYW1lKCksIEluc3BlY3Rvckluc3RydW1lbnRhdGlv
bk9iamVjdDo6Y3JlYXRlKHZtLCB0aGlzLCBJbnNwZWN0b3JJbnN0cnVtZW50YXRpb25PYmplY3Q6
OmNyZWF0ZVN0cnVjdHVyZSh2bSwgdGhpcywgbV9vYmplY3RQcm90b3R5cGUuZ2V0KCkpKSwgRG9u
dEVudW0gfCBEb250RGVsZXRlIHwgUmVhZE9ubHkpLAorICAgICAgICBHbG9iYWxQcm9wZXJ0eUlu
Zm8odm0ucHJvcGVydHlOYW1lcy0+TWFwUHJpdmF0ZU5hbWUsIG1hcENvbnN0cnVjdG9yLCBEb250
RW51bSB8IERvbnREZWxldGUgfCBSZWFkT25seSksCiAgICAgfTsKICAgICBhZGRTdGF0aWNHbG9i
YWxzKHN0YXRpY0dsb2JhbHMsIFdURl9BUlJBWV9MRU5HVEgoc3RhdGljR2xvYmFscykpOwogICAg
IApAQCAtNzY3LDYgKzc3Nyw3IEBAIHZvaWQgSlNHbG9iYWxPYmplY3Q6OnZpc2l0Q2hpbGRyZW4o
SlNDZWxsKiBjZWxsLCBTbG90VmlzaXRvciYgdmlzaXRvcikKICAgICB2aXNpdG9yLmFwcGVuZCgm
dGhpc09iamVjdC0+bV9pbml0aWFsaXplUHJvbWlzZUZ1bmN0aW9uKTsKICAgICB2aXNpdG9yLmFw
cGVuZCgmdGhpc09iamVjdC0+bV9uZXdQcm9taXNlQ2FwYWJpbGl0eUZ1bmN0aW9uKTsKICAgICB2
aXNpdG9yLmFwcGVuZCgmdGhpc09iamVjdC0+bV90aHJvd1R5cGVFcnJvckdldHRlclNldHRlcik7
CisgICAgdmlzaXRvci5hcHBlbmQoJnRoaXNPYmplY3QtPm1fbW9kdWxlTG9hZGVyKTsKIAogICAg
IHZpc2l0b3IuYXBwZW5kKCZ0aGlzT2JqZWN0LT5tX29iamVjdFByb3RvdHlwZSk7CiAgICAgdmlz
aXRvci5hcHBlbmQoJnRoaXNPYmplY3QtPm1fZnVuY3Rpb25Qcm90b3R5cGUpOwpAQCAtODA0LDYg
KzgxNSw3IEBAIHZvaWQgSlNHbG9iYWxPYmplY3Q6OnZpc2l0Q2hpbGRyZW4oSlNDZWxsKiBjZWxs
LCBTbG90VmlzaXRvciYgdmlzaXRvcikKICAgICB2aXNpdG9yLmFwcGVuZCgmdGhpc09iamVjdC0+
bV9zeW1ib2xPYmplY3RTdHJ1Y3R1cmUpOwogICAgIHZpc2l0b3IuYXBwZW5kKCZ0aGlzT2JqZWN0
LT5tX3JlZ0V4cFN0cnVjdHVyZSk7CiAgICAgdmlzaXRvci5hcHBlbmQoJnRoaXNPYmplY3QtPm1f
cmVnRXhwTWF0Y2hlc0FycmF5U3RydWN0dXJlKTsKKyAgICB2aXNpdG9yLmFwcGVuZCgmdGhpc09i
amVjdC0+bV9tb2R1bGVSZWNvcmRTdHJ1Y3R1cmUpOwogICAgIHZpc2l0b3IuYXBwZW5kKCZ0aGlz
T2JqZWN0LT5tX2NvbnNvbGVTdHJ1Y3R1cmUpOwogICAgIHZpc2l0b3IuYXBwZW5kKCZ0aGlzT2Jq
ZWN0LT5tX2RvbGxhclZNU3RydWN0dXJlKTsKICAgICB2aXNpdG9yLmFwcGVuZCgmdGhpc09iamVj
dC0+bV9pbnRlcm5hbEZ1bmN0aW9uU3RydWN0dXJlKTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9KYXZh
U2NyaXB0Q29yZS9ydW50aW1lL0pTR2xvYmFsT2JqZWN0LmggYi9Tb3VyY2UvSmF2YVNjcmlwdENv
cmUvcnVudGltZS9KU0dsb2JhbE9iamVjdC5oCmluZGV4IDZkYjMwM2FlYzA3MDY2ZmEyYTE1ZWRh
ZmFjYzUxODM5Y2FhMGM3MmEuLjhlZTI5ZjllNzg0NjIyYzM0NGVlZmJkZTM4MDY2NDMxYWViNzJi
MTggMTAwNjQ0Ci0tLSBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL0pTR2xvYmFsT2Jq
ZWN0LmgKKysrIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvSlNHbG9iYWxPYmplY3Qu
aApAQCAtNzAsMTEgKzcwLDE0IEBAIGNsYXNzIEdldHRlclNldHRlcjsKIGNsYXNzIEdsb2JhbENv
ZGVCbG9jazsKIGNsYXNzIElucHV0Q3Vyc29yOwogY2xhc3MgSlNHbG9iYWxPYmplY3REZWJ1Z2dh
YmxlOworY2xhc3MgSlNQcm9taXNlOwogY2xhc3MgSlNQcm9taXNlQ29uc3RydWN0b3I7CiBjbGFz
cyBKU1Byb21pc2VQcm90b3R5cGU7CitjbGFzcyBKU0ludGVybmFsUHJvbWlzZTsKIGNsYXNzIEpT
U3RhY2s7CiBjbGFzcyBMTEludE9mZnNldHNFeHRyYWN0b3I7CiBjbGFzcyBNaWNyb3Rhc2s7Citj
bGFzcyBNb2R1bGVMb2FkZXJPYmplY3Q7CiBjbGFzcyBOYXRpdmVFcnJvckNvbnN0cnVjdG9yOwog
Y2xhc3MgT2JqZWN0Q29uc3RydWN0b3I7CiBjbGFzcyBQcm9ncmFtQ29kZUJsb2NrOwpAQCAtMTUy
LDYgKzE1NSwxOCBAQCBzdHJ1Y3QgR2xvYmFsT2JqZWN0TWV0aG9kVGFibGUgewogCiAgICAgdHlw
ZWRlZiBib29sICgqU2hvdWxkSW50ZXJydXB0U2NyaXB0QmVmb3JlVGltZW91dFB0cikoY29uc3Qg
SlNHbG9iYWxPYmplY3QqKTsKICAgICBTaG91bGRJbnRlcnJ1cHRTY3JpcHRCZWZvcmVUaW1lb3V0
UHRyIHNob3VsZEludGVycnVwdFNjcmlwdEJlZm9yZVRpbWVvdXQ7CisKKyAgICB0eXBlZGVmIEpT
SW50ZXJuYWxQcm9taXNlKiAoKkxvYWRlclJlc29sdmVQdHIpKEpTR2xvYmFsT2JqZWN0KiwgRXhl
Y1N0YXRlKiwgSlNWYWx1ZSwgSlNWYWx1ZSk7CisgICAgTG9hZGVyUmVzb2x2ZVB0ciBsb2FkZXJS
ZXNvbHZlOworCisgICAgdHlwZWRlZiBKU0ludGVybmFsUHJvbWlzZSogKCpMb2FkZXJGZXRjaFB0
cikoSlNHbG9iYWxPYmplY3QqLCBFeGVjU3RhdGUqLCBKU1ZhbHVlKTsKKyAgICBMb2FkZXJGZXRj
aFB0ciBsb2FkZXJGZXRjaDsKKworICAgIHR5cGVkZWYgSlNJbnRlcm5hbFByb21pc2UqICgqTG9h
ZGVyVHJhbnNsYXRlUHRyKShKU0dsb2JhbE9iamVjdCosIEV4ZWNTdGF0ZSosIEpTVmFsdWUsIEpT
VmFsdWUpOworICAgIExvYWRlclRyYW5zbGF0ZVB0ciBsb2FkZXJUcmFuc2xhdGU7CisKKyAgICB0
eXBlZGVmIEpTSW50ZXJuYWxQcm9taXNlKiAoKkxvYWRlckluc3RhbnRpYXRlUHRyKShKU0dsb2Jh
bE9iamVjdCosIEV4ZWNTdGF0ZSosIEpTVmFsdWUsIEpTVmFsdWUpOworICAgIExvYWRlckluc3Rh
bnRpYXRlUHRyIGxvYWRlckluc3RhbnRpYXRlOwogfTsKIAogY2xhc3MgSlNHbG9iYWxPYmplY3Qg
OiBwdWJsaWMgSlNTZWdtZW50ZWRWYXJpYWJsZU9iamVjdCB7CkBAIC0yMDMsNiArMjE4LDggQEAg
Y2xhc3MgSlNHbG9iYWxPYmplY3QgOiBwdWJsaWMgSlNTZWdtZW50ZWRWYXJpYWJsZU9iamVjdCB7
CiAgICAgV3JpdGVCYXJyaWVyPEpTRnVuY3Rpb24+IG1fbmV3UHJvbWlzZUNhcGFiaWxpdHlGdW5j
dGlvbjsKICAgICBXcml0ZUJhcnJpZXI8R2V0dGVyU2V0dGVyPiBtX3Rocm93VHlwZUVycm9yR2V0
dGVyU2V0dGVyOwogCisgICAgV3JpdGVCYXJyaWVyPE1vZHVsZUxvYWRlck9iamVjdD4gbV9tb2R1
bGVMb2FkZXI7CisKICAgICBXcml0ZUJhcnJpZXI8T2JqZWN0UHJvdG90eXBlPiBtX29iamVjdFBy
b3RvdHlwZTsKICAgICBXcml0ZUJhcnJpZXI8RnVuY3Rpb25Qcm90b3R5cGU+IG1fZnVuY3Rpb25Q
cm90b3R5cGU7CiAgICAgV3JpdGVCYXJyaWVyPEFycmF5UHJvdG90eXBlPiBtX2FycmF5UHJvdG90
eXBlOwpAQCAtMjQ0LDYgKzI2MSw3IEBAIGNsYXNzIEpTR2xvYmFsT2JqZWN0IDogcHVibGljIEpT
U2VnbWVudGVkVmFyaWFibGVPYmplY3QgewogICAgIFdyaXRlQmFycmllcjxTdHJ1Y3R1cmU+IG1f
aW50ZXJuYWxGdW5jdGlvblN0cnVjdHVyZTsKICAgICBXcml0ZUJhcnJpZXI8U3RydWN0dXJlPiBt
X2l0ZXJhdG9yUmVzdWx0U3RydWN0dXJlOwogICAgIFdyaXRlQmFycmllcjxTdHJ1Y3R1cmU+IG1f
cmVnRXhwTWF0Y2hlc0FycmF5U3RydWN0dXJlOworICAgIFdyaXRlQmFycmllcjxTdHJ1Y3R1cmU+
IG1fbW9kdWxlUmVjb3JkU3RydWN0dXJlOwogI2lmIEVOQUJMRShXRUJBU1NFTUJMWSkKICAgICBX
cml0ZUJhcnJpZXI8U3RydWN0dXJlPiBtX3dhc21Nb2R1bGVTdHJ1Y3R1cmU7CiAjZW5kaWYKQEAg
LTQxMCw2ICs0MjgsOCBAQCBjbGFzcyBKU0dsb2JhbE9iamVjdCA6IHB1YmxpYyBKU1NlZ21lbnRl
ZFZhcmlhYmxlT2JqZWN0IHsKICAgICAgICAgcmV0dXJuIG1fdGhyb3dUeXBlRXJyb3JHZXR0ZXJT
ZXR0ZXIuZ2V0KCk7CiAgICAgfQogCisgICAgTW9kdWxlTG9hZGVyT2JqZWN0KiBtb2R1bGVMb2Fk
ZXIoKSBjb25zdCB7IHJldHVybiBtX21vZHVsZUxvYWRlci5nZXQoKTsgfQorCiAgICAgT2JqZWN0
UHJvdG90eXBlKiBvYmplY3RQcm90b3R5cGUoKSBjb25zdCB7IHJldHVybiBtX29iamVjdFByb3Rv
dHlwZS5nZXQoKTsgfQogICAgIEZ1bmN0aW9uUHJvdG90eXBlKiBmdW5jdGlvblByb3RvdHlwZSgp
IGNvbnN0IHsgcmV0dXJuIG1fZnVuY3Rpb25Qcm90b3R5cGUuZ2V0KCk7IH0KICAgICBBcnJheVBy
b3RvdHlwZSogYXJyYXlQcm90b3R5cGUoKSBjb25zdCB7IHJldHVybiBtX2FycmF5UHJvdG90eXBl
LmdldCgpOyB9CkBAIC00NzgsNiArNDk4LDcgQEAgY2xhc3MgSlNHbG9iYWxPYmplY3QgOiBwdWJs
aWMgSlNTZWdtZW50ZWRWYXJpYWJsZU9iamVjdCB7CiAgICAgU3RydWN0dXJlKiBpdGVyYXRvclJl
c3VsdFN0cnVjdHVyZSgpIGNvbnN0IHsgcmV0dXJuIG1faXRlcmF0b3JSZXN1bHRTdHJ1Y3R1cmUu
Z2V0KCk7IH0KICAgICBzdGF0aWMgcHRyZGlmZl90IGl0ZXJhdG9yUmVzdWx0U3RydWN0dXJlT2Zm
c2V0KCkgeyByZXR1cm4gT0JKRUNUX09GRlNFVE9GKEpTR2xvYmFsT2JqZWN0LCBtX2l0ZXJhdG9y
UmVzdWx0U3RydWN0dXJlKTsgfQogICAgIFN0cnVjdHVyZSogcmVnRXhwTWF0Y2hlc0FycmF5U3Ry
dWN0dXJlKCkgY29uc3QgeyByZXR1cm4gbV9yZWdFeHBNYXRjaGVzQXJyYXlTdHJ1Y3R1cmUuZ2V0
KCk7IH0KKyAgICBTdHJ1Y3R1cmUqIG1vZHVsZVJlY29yZFN0cnVjdHVyZSgpIGNvbnN0IHsgcmV0
dXJuIG1fbW9kdWxlUmVjb3JkU3RydWN0dXJlLmdldCgpOyB9CiAjaWYgRU5BQkxFKFdFQkFTU0VN
QkxZKQogICAgIFN0cnVjdHVyZSogd2FzbU1vZHVsZVN0cnVjdHVyZSgpIGNvbnN0IHsgcmV0dXJu
IG1fd2FzbU1vZHVsZVN0cnVjdHVyZS5nZXQoKTsgfQogI2VuZGlmCmRpZmYgLS1naXQgYS9Tb3Vy
Y2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9KU01vZHVsZVJlY29yZC5jcHAgYi9Tb3VyY2UvSmF2
YVNjcmlwdENvcmUvcnVudGltZS9KU01vZHVsZVJlY29yZC5jcHAKbmV3IGZpbGUgbW9kZSAxMDA2
NDQKaW5kZXggMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMC4uN2RlMTg2
MDk0MGNlMTljZTUwOGMxMjAyODJlOTQ0ZjNjYTQyMDVkOQotLS0gL2Rldi9udWxsCisrKyBiL1Nv
dXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL0pTTW9kdWxlUmVjb3JkLmNwcApAQCAtMCwwICsx
LDExMyBAQAorLyoKKyAqIENvcHlyaWdodCAoQykgMjAxNSBBcHBsZSBJbmMuIEFsbCByaWdodHMg
cmVzZXJ2ZWQuCisgKgorICogUmVkaXN0cmlidXRpb24gYW5kIHVzZSBpbiBzb3VyY2UgYW5kIGJp
bmFyeSBmb3Jtcywgd2l0aCBvciB3aXRob3V0CisgKiBtb2RpZmljYXRpb24sIGFyZSBwZXJtaXR0
ZWQgcHJvdmlkZWQgdGhhdCB0aGUgZm9sbG93aW5nIGNvbmRpdGlvbnMKKyAqIGFyZSBtZXQ6Cisg
KiAxLiBSZWRpc3RyaWJ1dGlvbnMgb2Ygc291cmNlIGNvZGUgbXVzdCByZXRhaW4gdGhlIGFib3Zl
IGNvcHlyaWdodAorICogICAgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhl
IGZvbGxvd2luZyBkaXNjbGFpbWVyLgorICogMi4gUmVkaXN0cmlidXRpb25zIGluIGJpbmFyeSBm
b3JtIG11c3QgcmVwcm9kdWNlIHRoZSBhYm92ZSBjb3B5cmlnaHQKKyAqICAgIG5vdGljZSwgdGhp
cyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lciBpbiB0aGUK
KyAqICAgIGRvY3VtZW50YXRpb24gYW5kL29yIG90aGVyIG1hdGVyaWFscyBwcm92aWRlZCB3aXRo
IHRoZSBkaXN0cmlidXRpb24uCisgKgorICogVEhJUyBTT0ZUV0FSRSBJUyBQUk9WSURFRCBCWSBB
UFBMRSBJTkMuIGBgQVMgSVMnJyBBTkQgQU5ZCisgKiBFWFBSRVNTIE9SIElNUExJRUQgV0FSUkFO
VElFUywgSU5DTFVESU5HLCBCVVQgTk9UIExJTUlURUQgVE8sIFRIRQorICogSU1QTElFRCBXQVJS
QU5USUVTIE9GIE1FUkNIQU5UQUJJTElUWSBBTkQgRklUTkVTUyBGT1IgQSBQQVJUSUNVTEFSCisg
KiBQVVJQT1NFIEFSRSBESVNDTEFJTUVELiAgSU4gTk8gRVZFTlQgU0hBTEwgQVBQTEUgSU5DLiBP
UgorICogQ09OVFJJQlVUT1JTIEJFIExJQUJMRSBGT1IgQU5ZIERJUkVDVCwgSU5ESVJFQ1QsIElO
Q0lERU5UQUwsIFNQRUNJQUwsCisgKiBFWEVNUExBUlksIE9SIENPTlNFUVVFTlRJQUwgREFNQUdF
UyAoSU5DTFVESU5HLCBCVVQgTk9UIExJTUlURUQgVE8sCisgKiBQUk9DVVJFTUVOVCBPRiBTVUJT
VElUVVRFIEdPT0RTIE9SIFNFUlZJQ0VTOyBMT1NTIE9GIFVTRSwgREFUQSwgT1IKKyAqIFBST0ZJ
VFM7IE9SIEJVU0lORVNTIElOVEVSUlVQVElPTikgSE9XRVZFUiBDQVVTRUQgQU5EIE9OIEFOWSBU
SEVPUlkKKyAqIE9GIExJQUJJTElUWSwgV0hFVEhFUiBJTiBDT05UUkFDVCwgU1RSSUNUIExJQUJJ
TElUWSwgT1IgVE9SVAorICogKElOQ0xVRElORyBORUdMSUdFTkNFIE9SIE9USEVSV0lTRSkgQVJJ
U0lORyBJTiBBTlkgV0FZIE9VVCBPRiBUSEUgVVNFCisgKiBPRiBUSElTIFNPRlRXQVJFLCBFVkVO
IElGIEFEVklTRUQgT0YgVEhFIFBPU1NJQklMSVRZIE9GIFNVQ0ggREFNQUdFLiAKKyAqLworCisj
aW5jbHVkZSAiY29uZmlnLmgiCisjaW5jbHVkZSAiSlNNb2R1bGVSZWNvcmQuaCIKKworI2luY2x1
ZGUgIklkZW50aWZpZXJJbmxpbmVzLmgiCisjaW5jbHVkZSAiSlNDSlNWYWx1ZUlubGluZXMuaCIK
KyNpbmNsdWRlICJKU0NlbGxJbmxpbmVzLmgiCisjaW5jbHVkZSAiU3RydWN0dXJlSW5saW5lcy5o
IgorCituYW1lc3BhY2UgSlNDIHsKKworY29uc3QgQ2xhc3NJbmZvIEpTTW9kdWxlUmVjb3JkOjpz
X2luZm8gPSB7ICJNb2R1bGVSZWNvcmQiLCAmQmFzZTo6c19pbmZvLCAwLCBDUkVBVEVfTUVUSE9E
X1RBQkxFKEpTTW9kdWxlUmVjb3JkKSB9OworCit2b2lkIEpTTW9kdWxlUmVjb3JkOjpkZXN0cm95
KEpTQ2VsbCogY2VsbCkKK3sKKyAgICBKU01vZHVsZVJlY29yZCogdGhpc09iamVjdCA9IGpzQ2Fz
dDxKU01vZHVsZVJlY29yZCo+KGNlbGwpOworICAgIHRoaXNPYmplY3QtPkpTTW9kdWxlUmVjb3Jk
Ojp+SlNNb2R1bGVSZWNvcmQoKTsKK30KKworCit2b2lkIEpTTW9kdWxlUmVjb3JkOjpmaW5pc2hD
cmVhdGlvbihWTSYgdm0pCit7CisgICAgQmFzZTo6ZmluaXNoQ3JlYXRpb24odm0pOworICAgIEFT
U0VSVChpbmhlcml0cyhpbmZvKCkpKTsKKyAgICBwdXREaXJlY3Qodm0sIElkZW50aWZpZXI6OmZy
b21TdHJpbmcoJnZtLCBBU0NJSUxpdGVyYWwoInJlZ2lzdHJ5RW50cnkiKSksIGpzVW5kZWZpbmVk
KCkpOworfQorCithdXRvIEpTTW9kdWxlUmVjb3JkOjpFeHBvcnRFbnRyeTo6Y3JlYXRlTG9jYWwo
Y29uc3QgSWRlbnRpZmllciYgZXhwb3J0TmFtZSwgY29uc3QgSWRlbnRpZmllciYgbG9jYWxOYW1l
LCBjb25zdCBWYXJpYWJsZUVudmlyb25tZW50RW50cnkmIHZhcmlhYmxlKSAtPiBFeHBvcnRFbnRy
eQoreworICAgIHJldHVybiBFeHBvcnRFbnRyeSB7IFR5cGU6OkxvY2FsLCBleHBvcnROYW1lLCBJ
ZGVudGlmaWVyKCksIElkZW50aWZpZXIoKSwgbG9jYWxOYW1lLCB2YXJpYWJsZSB9OworfQorCith
dXRvIEpTTW9kdWxlUmVjb3JkOjpFeHBvcnRFbnRyeTo6Y3JlYXRlTmFtZXNwYWNlKGNvbnN0IElk
ZW50aWZpZXImIGV4cG9ydE5hbWUsIGNvbnN0IElkZW50aWZpZXImIG1vZHVsZU5hbWUpIC0+IEV4
cG9ydEVudHJ5Cit7CisgICAgcmV0dXJuIEV4cG9ydEVudHJ5IHsgVHlwZTo6TmFtZXNwYWNlLCBl
eHBvcnROYW1lLCBtb2R1bGVOYW1lLCBJZGVudGlmaWVyKCksIElkZW50aWZpZXIoKSwgVmFyaWFi
bGVFbnZpcm9ubWVudEVudHJ5KCkgfTsKK30KKworYXV0byBKU01vZHVsZVJlY29yZDo6RXhwb3J0
RW50cnk6OmNyZWF0ZUluZGlyZWN0KGNvbnN0IElkZW50aWZpZXImIGV4cG9ydE5hbWUsIGNvbnN0
IElkZW50aWZpZXImIGltcG9ydE5hbWUsIGNvbnN0IElkZW50aWZpZXImIG1vZHVsZU5hbWUpIC0+
IEV4cG9ydEVudHJ5Cit7CisgICAgcmV0dXJuIEV4cG9ydEVudHJ5IHsgVHlwZTo6SW5kaXJlY3Qs
IGV4cG9ydE5hbWUsIG1vZHVsZU5hbWUsIGltcG9ydE5hbWUsIElkZW50aWZpZXIoKSwgVmFyaWFi
bGVFbnZpcm9ubWVudEVudHJ5KCkgfTsKK30KKworc3RhdGljIFN0cmluZyBwcmludGFibGVOYW1l
KGNvbnN0IFJlZlB0cjxVbmlxdWVkU3RyaW5nSW1wbD4mIHVpZCkKK3sKKyAgICBpZiAodWlkLT5p
c1N5bWJvbCgpKQorICAgICAgICByZXR1cm4gdWlkLmdldCgpOworICAgIHJldHVybiBXVEY6Om1h
a2VTdHJpbmcoIiciLCBTdHJpbmcodWlkLmdldCgpKSwgIiciKTsKK30KKworc3RhdGljIFN0cmlu
ZyBwcmludGFibGVOYW1lKGNvbnN0IElkZW50aWZpZXImIGlkZW50KQoreworICAgIHJldHVybiBw
cmludGFibGVOYW1lKGlkZW50LmltcGwoKSk7Cit9CisKKwordm9pZCBKU01vZHVsZVJlY29yZDo6
ZHVtcCgpCit7CisgICAgZGF0YUxvZygiXG5BbmFseXppbmcgTW9kdWxlUmVjb3JkXG4iKTsKKwor
ICAgIGRhdGFMb2coIiAgICBEZXBlbmRlbmNpZXM6ICIsIG1fcmVxdWVzdGVkTW9kdWxlcy5zaXpl
KCksICIgbW9kdWxlc1xuIik7CisgICAgZm9yIChjb25zdCBhdXRvJiBtb2R1bGVOYW1lIDogbV9y
ZXF1ZXN0ZWRNb2R1bGVzKQorICAgICAgICBkYXRhTG9nKCIgICAgICBtb2R1bGUoIiwgcHJpbnRh
YmxlTmFtZShtb2R1bGVOYW1lKSwgIilcbiIpOworCisgICAgZGF0YUxvZygiICAgIEltcG9ydDog
IiwgbV9pbXBvcnRFbnRyaWVzLnNpemUoKSwgIiBlbnRyaWVzXG4iKTsKKyAgICBmb3IgKGNvbnN0
IGF1dG8mIHBhaXIgOiBtX2ltcG9ydEVudHJpZXMpCisgICAgICAgIGRhdGFMb2coIiAgICAgIGlt
cG9ydCgiLCBwcmludGFibGVOYW1lKHBhaXIudmFsdWUuaW1wb3J0TmFtZSksICIpLCBsb2NhbCgi
LCBwcmludGFibGVOYW1lKHBhaXIudmFsdWUubG9jYWxOYW1lKSwgIiksIG1vZHVsZSgiLCBwcmlu
dGFibGVOYW1lKHBhaXIudmFsdWUubW9kdWxlUmVxdWVzdCksICIpXG4iKTsKKworICAgIGRhdGFM
b2coIiAgICBFeHBvcnQ6ICIsIG1fZXhwb3J0RW50cmllcy5zaXplKCksICIgZW50cmllc1xuIik7
CisgICAgZm9yIChjb25zdCBhdXRvJiBwYWlyIDogbV9leHBvcnRFbnRyaWVzKSB7CisgICAgICAg
IGNvbnN0IEV4cG9ydEVudHJ5JiBlbnRyeSA9IHBhaXIudmFsdWU7CisgICAgICAgIHN3aXRjaCAo
ZW50cnkudHlwZSkgeworICAgICAgICBjYXNlIEV4cG9ydEVudHJ5OjpUeXBlOjpMb2NhbDoKKyAg
ICAgICAgICAgIGRhdGFMb2coIiAgICAgIFtMb2NhbF0gIiwgImV4cG9ydCgiLCBwcmludGFibGVO
YW1lKGVudHJ5LmV4cG9ydE5hbWUpLCAiKSwgbG9jYWwoIiwgcHJpbnRhYmxlTmFtZShlbnRyeS5s
b2NhbE5hbWUpLCAiKVxuIik7CisgICAgICAgICAgICBicmVhazsKKworICAgICAgICBjYXNlIEV4
cG9ydEVudHJ5OjpUeXBlOjpOYW1lc3BhY2U6CisgICAgICAgICAgICBkYXRhTG9nKCIgICAgICBb
TmFtZXNwYWNlXSAiLCAiZXhwb3J0KCIsIHByaW50YWJsZU5hbWUoZW50cnkuZXhwb3J0TmFtZSks
ICIpLCBtb2R1bGUoIiwgcHJpbnRhYmxlTmFtZShlbnRyeS5tb2R1bGVOYW1lKSwgIilcbiIpOwor
ICAgICAgICAgICAgYnJlYWs7CisKKyAgICAgICAgY2FzZSBFeHBvcnRFbnRyeTo6VHlwZTo6SW5k
aXJlY3Q6CisgICAgICAgICAgICBkYXRhTG9nKCIgICAgICBbSW5kaXJlY3RdICIsICJleHBvcnQo
IiwgcHJpbnRhYmxlTmFtZShlbnRyeS5leHBvcnROYW1lKSwgIiksIGltcG9ydCgiLCBwcmludGFi
bGVOYW1lKGVudHJ5LmltcG9ydE5hbWUpLCAiKSwgbW9kdWxlKCIsIHByaW50YWJsZU5hbWUoZW50
cnkubW9kdWxlTmFtZSksICIpXG4iKTsKKyAgICAgICAgICAgIGJyZWFrOworICAgICAgICB9Cisg
ICAgfQorICAgIGZvciAoY29uc3QgYXV0byYgbW9kdWxlTmFtZSA6IG1fc3RhckV4cG9ydEVudHJp
ZXMpCisgICAgICAgIGRhdGFMb2coIiAgICAgIFtTdGFyXSBtb2R1bGUoIiwgcHJpbnRhYmxlTmFt
ZShtb2R1bGVOYW1lLmdldCgpKSwgIilcbiIpOworfQorCit9IC8vIG5hbWVzcGFjZSBKU0MKZGlm
ZiAtLWdpdCBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL0pTTW9kdWxlUmVjb3JkLmgg
Yi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9KU01vZHVsZVJlY29yZC5oCm5ldyBmaWxl
IG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAuLjk2ZTJmZGY0NTBlNWRiODcyOWM1ZmNjNTVmYjc4ZDJjNGY2Yzk3ODEKLS0tIC9kZXYvbnVs
bAorKysgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9KU01vZHVsZVJlY29yZC5oCkBA
IC0wLDAgKzEsMTU3IEBACisvKgorICogQ29weXJpZ2h0IChDKSAyMDE1IEFwcGxlIEluYy4gQWxs
IHJpZ2h0cyByZXNlcnZlZC4KKyAqCisgKiBSZWRpc3RyaWJ1dGlvbiBhbmQgdXNlIGluIHNvdXJj
ZSBhbmQgYmluYXJ5IGZvcm1zLCB3aXRoIG9yIHdpdGhvdXQKKyAqIG1vZGlmaWNhdGlvbiwgYXJl
IHBlcm1pdHRlZCBwcm92aWRlZCB0aGF0IHRoZSBmb2xsb3dpbmcgY29uZGl0aW9ucworICogYXJl
IG1ldDoKKyAqIDEuIFJlZGlzdHJpYnV0aW9ucyBvZiBzb3VyY2UgY29kZSBtdXN0IHJldGFpbiB0
aGUgYWJvdmUgY29weXJpZ2h0CisgKiAgICBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25z
IGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIuCisgKiAyLiBSZWRpc3RyaWJ1dGlvbnMgaW4g
YmluYXJ5IGZvcm0gbXVzdCByZXByb2R1Y2UgdGhlIGFib3ZlIGNvcHlyaWdodAorICogICAgbm90
aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVy
IGluIHRoZQorICogICAgZG9jdW1lbnRhdGlvbiBhbmQvb3Igb3RoZXIgbWF0ZXJpYWxzIHByb3Zp
ZGVkIHdpdGggdGhlIGRpc3RyaWJ1dGlvbi4KKyAqCisgKiBUSElTIFNPRlRXQVJFIElTIFBST1ZJ
REVEIEJZIEFQUExFIElOQy4gYGBBUyBJUycnIEFORCBBTlkKKyAqIEVYUFJFU1MgT1IgSU1QTElF
RCBXQVJSQU5USUVTLCBJTkNMVURJTkcsIEJVVCBOT1QgTElNSVRFRCBUTywgVEhFCisgKiBJTVBM
SUVEIFdBUlJBTlRJRVMgT0YgTUVSQ0hBTlRBQklMSVRZIEFORCBGSVRORVNTIEZPUiBBIFBBUlRJ
Q1VMQVIKKyAqIFBVUlBPU0UgQVJFIERJU0NMQUlNRUQuICBJTiBOTyBFVkVOVCBTSEFMTCBBUFBM
RSBJTkMuIE9SCisgKiBDT05UUklCVVRPUlMgQkUgTElBQkxFIEZPUiBBTlkgRElSRUNULCBJTkRJ
UkVDVCwgSU5DSURFTlRBTCwgU1BFQ0lBTCwKKyAqIEVYRU1QTEFSWSwgT1IgQ09OU0VRVUVOVElB
TCBEQU1BR0VTIChJTkNMVURJTkcsIEJVVCBOT1QgTElNSVRFRCBUTywKKyAqIFBST0NVUkVNRU5U
IE9GIFNVQlNUSVRVVEUgR09PRFMgT1IgU0VSVklDRVM7IExPU1MgT0YgVVNFLCBEQVRBLCBPUgor
ICogUFJPRklUUzsgT1IgQlVTSU5FU1MgSU5URVJSVVBUSU9OKSBIT1dFVkVSIENBVVNFRCBBTkQg
T04gQU5ZIFRIRU9SWQorICogT0YgTElBQklMSVRZLCBXSEVUSEVSIElOIENPTlRSQUNULCBTVFJJ
Q1QgTElBQklMSVRZLCBPUiBUT1JUCisgKiAoSU5DTFVESU5HIE5FR0xJR0VOQ0UgT1IgT1RIRVJX
SVNFKSBBUklTSU5HIElOIEFOWSBXQVkgT1VUIE9GIFRIRSBVU0UKKyAqIE9GIFRISVMgU09GVFdB
UkUsIEVWRU4gSUYgQURWSVNFRCBPRiBUSEUgUE9TU0lCSUxJVFkgT0YgU1VDSCBEQU1BR0UuCisg
Ki8KKworI2lmbmRlZiBKU01vZHVsZVJlY29yZF9oCisjZGVmaW5lIEpTTW9kdWxlUmVjb3JkX2gK
KworI2luY2x1ZGUgIklkZW50aWZpZXIuaCIKKyNpbmNsdWRlICJKU0Rlc3RydWN0aWJsZU9iamVj
dC5oIgorI2luY2x1ZGUgIlZhcmlhYmxlRW52aXJvbm1lbnQuaCIKKyNpbmNsdWRlIDx3dGYvSGFz
aE1hcC5oPgorI2luY2x1ZGUgPHd0Zi9MaXN0SGFzaFNldC5oPgorCituYW1lc3BhY2UgSlNDIHsK
KworLy8gQmFzZWQgb24gdGhlIFNvdXJjZSBUZXh0IE1vZHVsZSBSZWNvcmQKKy8vIGh0dHA6Ly93
d3cuZWNtYS1pbnRlcm5hdGlvbmFsLm9yZy9lY21hLTI2Mi82LjAvI3NlYy1zb3VyY2UtdGV4dC1t
b2R1bGUtcmVjb3JkcworY2xhc3MgSlNNb2R1bGVSZWNvcmQgOiBwdWJsaWMgSlNEZXN0cnVjdGli
bGVPYmplY3QgeworcHVibGljOgorICAgIHR5cGVkZWYgSlNEZXN0cnVjdGlibGVPYmplY3QgQmFz
ZTsKKworICAgIHN0cnVjdCBFeHBvcnRFbnRyeSB7CisgICAgICAgIGVudW0gY2xhc3MgVHlwZSB7
CisgICAgICAgICAgICBMb2NhbCwKKyAgICAgICAgICAgIE5hbWVzcGFjZSwKKyAgICAgICAgICAg
IEluZGlyZWN0CisgICAgICAgIH07CisKKyAgICAgICAgc3RhdGljIEV4cG9ydEVudHJ5IGNyZWF0
ZUxvY2FsKGNvbnN0IElkZW50aWZpZXImIGV4cG9ydE5hbWUsIGNvbnN0IElkZW50aWZpZXImIGxv
Y2FsTmFtZSwgY29uc3QgVmFyaWFibGVFbnZpcm9ubWVudEVudHJ5Jik7CisgICAgICAgIHN0YXRp
YyBFeHBvcnRFbnRyeSBjcmVhdGVOYW1lc3BhY2UoY29uc3QgSWRlbnRpZmllciYgZXhwb3J0TmFt
ZSwgY29uc3QgSWRlbnRpZmllciYgbW9kdWxlTmFtZSk7CisgICAgICAgIHN0YXRpYyBFeHBvcnRF
bnRyeSBjcmVhdGVJbmRpcmVjdChjb25zdCBJZGVudGlmaWVyJiBleHBvcnROYW1lLCBjb25zdCBJ
ZGVudGlmaWVyJiBpbXBvcnROYW1lLCBjb25zdCBJZGVudGlmaWVyJiBtb2R1bGVOYW1lKTsKKwor
ICAgICAgICBUeXBlIHR5cGU7CisgICAgICAgIElkZW50aWZpZXIgZXhwb3J0TmFtZTsKKyAgICAg
ICAgSWRlbnRpZmllciBtb2R1bGVOYW1lOworICAgICAgICBJZGVudGlmaWVyIGltcG9ydE5hbWU7
CisgICAgICAgIElkZW50aWZpZXIgbG9jYWxOYW1lOworICAgICAgICBWYXJpYWJsZUVudmlyb25t
ZW50RW50cnkgdmFyaWFibGU7CisgICAgfTsKKworICAgIHN0cnVjdCBJbXBvcnRFbnRyeSB7Cisg
ICAgICAgIElkZW50aWZpZXIgbW9kdWxlUmVxdWVzdDsKKyAgICAgICAgSWRlbnRpZmllciBpbXBv
cnROYW1lOworICAgICAgICBJZGVudGlmaWVyIGxvY2FsTmFtZTsKKworICAgICAgICBib29sIGlz
TmFtZXNwYWNlKFZNJiB2bSkgY29uc3QKKyAgICAgICAgeworICAgICAgICAgICAgcmV0dXJuIGlt
cG9ydE5hbWUgPT0gdm0ucHJvcGVydHlOYW1lcy0+dGltZXNJZGVudGlmaWVyOworICAgICAgICB9
CisgICAgfTsKKworICAgIHR5cGVkZWYgV1RGOjpMaXN0SGFzaFNldDxSZWZQdHI8VW5pcXVlZFN0
cmluZ0ltcGw+LCBJZGVudGlmaWVyUmVwSGFzaD4gT3JkZXJlZElkZW50aWZpZXJTZXQ7CisgICAg
dHlwZWRlZiBIYXNoTWFwPFJlZlB0cjxVbmlxdWVkU3RyaW5nSW1wbD4sIEltcG9ydEVudHJ5LCBJ
ZGVudGlmaWVyUmVwSGFzaCwgSGFzaFRyYWl0czxSZWZQdHI8VW5pcXVlZFN0cmluZ0ltcGw+Pj4g
SW1wb3J0TWFwOworICAgIHR5cGVkZWYgSGFzaE1hcDxSZWZQdHI8VW5pcXVlZFN0cmluZ0ltcGw+
LCBFeHBvcnRFbnRyeSwgSWRlbnRpZmllclJlcEhhc2gsIEhhc2hUcmFpdHM8UmVmUHRyPFVuaXF1
ZWRTdHJpbmdJbXBsPj4+IEV4cG9ydE1hcDsKKworICAgIERFQ0xBUkVfRVhQT1JUX0lORk87CisK
KyAgICBzdGF0aWMgU3RydWN0dXJlKiBjcmVhdGVTdHJ1Y3R1cmUoVk0mIHZtLCBKU0dsb2JhbE9i
amVjdCogZ2xvYmFsT2JqZWN0LCBKU1ZhbHVlIHByb3RvdHlwZSkKKyAgICB7CisgICAgICAgIHJl
dHVybiBTdHJ1Y3R1cmU6OmNyZWF0ZSh2bSwgZ2xvYmFsT2JqZWN0LCBwcm90b3R5cGUsIFR5cGVJ
bmZvKE9iamVjdFR5cGUsIFN0cnVjdHVyZUZsYWdzKSwgaW5mbygpKTsKKyAgICB9CisKKyAgICBz
dGF0aWMgSlNNb2R1bGVSZWNvcmQqIGNyZWF0ZShWTSYgdm0sIFN0cnVjdHVyZSogc3RydWN0dXJl
KQorICAgIHsKKyAgICAgICAgSlNNb2R1bGVSZWNvcmQqIGluc3RhbmNlID0gbmV3IChOb3ROdWxs
LCBhbGxvY2F0ZUNlbGw8SlNNb2R1bGVSZWNvcmQ+KHZtLmhlYXApKSBKU01vZHVsZVJlY29yZCh2
bSwgc3RydWN0dXJlKTsKKyAgICAgICAgaW5zdGFuY2UtPmZpbmlzaENyZWF0aW9uKHZtKTsKKyAg
ICAgICAgcmV0dXJuIGluc3RhbmNlOworICAgIH0KKworICAgIHN0YXRpYyBKU01vZHVsZVJlY29y
ZCogY3JlYXRlKEV4ZWNTdGF0ZSogZXhlYywgU3RydWN0dXJlKiBzdHJ1Y3R1cmUpCisgICAgewor
ICAgICAgICByZXR1cm4gY3JlYXRlKGV4ZWMtPnZtKCksIHN0cnVjdHVyZSk7CisgICAgfQorCisg
ICAgdm9pZCBhcHBlbmRSZXF1ZXN0ZWRNb2R1bGUoY29uc3QgSWRlbnRpZmllciYpOworICAgIHZv
aWQgYWRkU3RhckV4cG9ydEVudHJ5KGNvbnN0IElkZW50aWZpZXImKTsKKyAgICB2b2lkIGFkZElt
cG9ydEVudHJ5KGNvbnN0IEltcG9ydEVudHJ5Jik7CisgICAgdm9pZCBhZGRFeHBvcnRFbnRyeShj
b25zdCBFeHBvcnRFbnRyeSYpOworCisgICAgY29uc3QgSW1wb3J0RW50cnkmIGxvb2tVcEltcG9y
dEVudHJ5KGNvbnN0IFJlZlB0cjxVbmlxdWVkU3RyaW5nSW1wbD4mIGxvY2FsTmFtZSk7CisKKyAg
ICBjb25zdCBPcmRlcmVkSWRlbnRpZmllclNldCYgcmVxdWVzdGVkTW9kdWxlcygpIGNvbnN0IHsg
cmV0dXJuIG1fcmVxdWVzdGVkTW9kdWxlczsgfQorCisgICAgdm9pZCBkdW1wKCk7CisKK3ByaXZh
dGU6CisgICAgSlNNb2R1bGVSZWNvcmQoVk0mIHZtLCBTdHJ1Y3R1cmUqIHN0cnVjdHVyZSkKKyAg
ICAgICAgOiBCYXNlKHZtLCBzdHJ1Y3R1cmUpCisgICAgeworICAgIH0KKworICAgIHZvaWQgZmlu
aXNoQ3JlYXRpb24oVk0mKTsKKworICAgIHN0YXRpYyB2b2lkIGRlc3Ryb3koSlNDZWxsKik7CisK
KyAgICAvLyBNYXAgbG9jYWxOYW1lIC0+IEltcG9ydEVudHJ5LgorICAgIEltcG9ydE1hcCBtX2lt
cG9ydEVudHJpZXM7CisKKyAgICAvLyBNYXAgZXhwb3J0TmFtZSAtPiBFeHBvcnRFbnRyeS4KKyAg
ICBFeHBvcnRNYXAgbV9leHBvcnRFbnRyaWVzOworCisgICAgSWRlbnRpZmllclNldCBtX3N0YXJF
eHBvcnRFbnRyaWVzOworCisgICAgLy8gU2F2ZSB0aGUgb2NjdXJyZW5jZSBvcmRlciBzaW5jZSB0
aGUgbW9kdWxlIGxvYWRlciBsb2FkcyBhbmQgcnVucyB0aGUgbW9kdWxlcyBpbiB0aGlzIG9yZGVy
LgorICAgIC8vIGh0dHA6Ly93d3cuZWNtYS1pbnRlcm5hdGlvbmFsLm9yZy9lY21hLTI2Mi82LjAv
I3NlYy1tb2R1bGVldmFsdWF0aW9uCisgICAgT3JkZXJlZElkZW50aWZpZXJTZXQgbV9yZXF1ZXN0
ZWRNb2R1bGVzOworfTsKKworaW5saW5lIHZvaWQgSlNNb2R1bGVSZWNvcmQ6OmFwcGVuZFJlcXVl
c3RlZE1vZHVsZShjb25zdCBJZGVudGlmaWVyJiBtb2R1bGVOYW1lKQoreworICAgIG1fcmVxdWVz
dGVkTW9kdWxlcy5hZGQobW9kdWxlTmFtZS5pbXBsKCkpOworfQorCitpbmxpbmUgdm9pZCBKU01v
ZHVsZVJlY29yZDo6YWRkSW1wb3J0RW50cnkoY29uc3QgSW1wb3J0RW50cnkmIGVudHJ5KQorewor
ICAgIG1faW1wb3J0RW50cmllcy5hZGQoZW50cnkubG9jYWxOYW1lLmltcGwoKSwgZW50cnkpOwor
fQorCitpbmxpbmUgdm9pZCBKU01vZHVsZVJlY29yZDo6YWRkRXhwb3J0RW50cnkoY29uc3QgRXhw
b3J0RW50cnkmIGVudHJ5KQoreworICAgIG1fZXhwb3J0RW50cmllcy5hZGQoZW50cnkuZXhwb3J0
TmFtZS5pbXBsKCksIGVudHJ5KTsKK30KKworaW5saW5lIHZvaWQgSlNNb2R1bGVSZWNvcmQ6OmFk
ZFN0YXJFeHBvcnRFbnRyeShjb25zdCBJZGVudGlmaWVyJiBtb2R1bGVOYW1lKQoreworICAgIG1f
c3RhckV4cG9ydEVudHJpZXMuYWRkKG1vZHVsZU5hbWUuaW1wbCgpKTsKK30KKworaW5saW5lIGF1
dG8gSlNNb2R1bGVSZWNvcmQ6Omxvb2tVcEltcG9ydEVudHJ5KGNvbnN0IFJlZlB0cjxVbmlxdWVk
U3RyaW5nSW1wbD4mIGxvY2FsTmFtZSkgLT4gY29uc3QgSW1wb3J0RW50cnkmCit7CisgICAgcmV0
dXJuICgqbV9pbXBvcnRFbnRyaWVzLmZpbmQobG9jYWxOYW1lKSkudmFsdWU7Cit9CisKK30gLy8g
bmFtZXNwYWNlIEpTQworCisjZW5kaWYgLy8gSlNNb2R1bGVSZWNvcmRfaApkaWZmIC0tZ2l0IGEv
U291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvTWFwUHJvdG90eXBlLmNwcCBiL1NvdXJjZS9K
YXZhU2NyaXB0Q29yZS9ydW50aW1lL01hcFByb3RvdHlwZS5jcHAKaW5kZXggOTZkZWFlNzE0Y2E1
MWE2N2ZkMTY0MDhlNWMzOWQzYzY1NjczODk0ZC4uZTk3MmY1NDBlZmIyZjFlNmE0OGQxMjUwM2Yw
MzE4OTcxZjQyZGY4MiAxMDA2NDQKLS0tIGEvU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUv
TWFwUHJvdG90eXBlLmNwcAorKysgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9NYXBQ
cm90b3R5cGUuY3BwCkBAIC02OCw2ICs2OCwxMCBAQCB2b2lkIE1hcFByb3RvdHlwZTo6ZmluaXNo
Q3JlYXRpb24oVk0mIHZtLCBKU0dsb2JhbE9iamVjdCogZ2xvYmFsT2JqZWN0KQogICAgIEpTQ19O
QVRJVkVfRlVOQ1RJT04odm0ucHJvcGVydHlOYW1lcy0+a2V5cywgbWFwUHJvdG9GdW5jS2V5cywg
RG9udEVudW0sIDApOwogICAgIEpTQ19OQVRJVkVfRlVOQ1RJT04odm0ucHJvcGVydHlOYW1lcy0+
dmFsdWVzLCBtYXBQcm90b0Z1bmNWYWx1ZXMsIERvbnRFbnVtLCAwKTsKIAorICAgIC8vIFByaXZh
dGUgZ2V0IC8gc2V0IG9wZXJhdGlvbnMuCisgICAgSlNDX05BVElWRV9GVU5DVElPTih2bS5wcm9w
ZXJ0eU5hbWVzLT5nZXRQcml2YXRlTmFtZSwgbWFwUHJvdG9GdW5jR2V0LCBEb250RW51bSwgMSk7
CisgICAgSlNDX05BVElWRV9GVU5DVElPTih2bS5wcm9wZXJ0eU5hbWVzLT5zZXRQcml2YXRlTmFt
ZSwgbWFwUHJvdG9GdW5jU2V0LCBEb250RW51bSwgMik7CisKICAgICBKU0Z1bmN0aW9uKiBlbnRy
aWVzID0gSlNGdW5jdGlvbjo6Y3JlYXRlKHZtLCBnbG9iYWxPYmplY3QsIDAsIHZtLnByb3BlcnR5
TmFtZXMtPmVudHJpZXMuc3RyaW5nKCksIG1hcFByb3RvRnVuY0VudHJpZXMpOwogICAgIHB1dERp
cmVjdFdpdGhvdXRUcmFuc2l0aW9uKHZtLCB2bS5wcm9wZXJ0eU5hbWVzLT5lbnRyaWVzLCBlbnRy
aWVzLCBEb250RW51bSk7CiAgICAgcHV0RGlyZWN0V2l0aG91dFRyYW5zaXRpb24odm0sIHZtLnBy
b3BlcnR5TmFtZXMtPml0ZXJhdG9yU3ltYm9sLCBlbnRyaWVzLCBEb250RW51bSk7CmRpZmYgLS1n
aXQgYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9Nb2R1bGVMb2FkZXJPYmplY3QuY3Bw
IGIvU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvTW9kdWxlTG9hZGVyT2JqZWN0LmNwcApu
ZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwLi5jN2MyMWY5OGRlNTMyNTIyODcwZTc2YmU5YjI4NWJlODQ5MDhhZTdhCi0tLSAv
ZGV2L251bGwKKysrIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvTW9kdWxlTG9hZGVy
T2JqZWN0LmNwcApAQCAtMCwwICsxLDMwNiBAQAorLyoKKyAqIENvcHlyaWdodCAoQykgMjAxNSBB
cHBsZSBJbmMuIEFsbCBSaWdodHMgUmVzZXJ2ZWQuCisgKgorICogUmVkaXN0cmlidXRpb24gYW5k
IHVzZSBpbiBzb3VyY2UgYW5kIGJpbmFyeSBmb3Jtcywgd2l0aCBvciB3aXRob3V0CisgKiBtb2Rp
ZmljYXRpb24sIGFyZSBwZXJtaXR0ZWQgcHJvdmlkZWQgdGhhdCB0aGUgZm9sbG93aW5nIGNvbmRp
dGlvbnMKKyAqIGFyZSBtZXQ6CisgKiAxLiBSZWRpc3RyaWJ1dGlvbnMgb2Ygc291cmNlIGNvZGUg
bXVzdCByZXRhaW4gdGhlIGFib3ZlIGNvcHlyaWdodAorICogICAgbm90aWNlLCB0aGlzIGxpc3Qg
b2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyLgorICogMi4gUmVkaXN0
cmlidXRpb25zIGluIGJpbmFyeSBmb3JtIG11c3QgcmVwcm9kdWNlIHRoZSBhYm92ZSBjb3B5cmln
aHQKKyAqICAgIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dp
bmcgZGlzY2xhaW1lciBpbiB0aGUKKyAqICAgIGRvY3VtZW50YXRpb24gYW5kL29yIG90aGVyIG1h
dGVyaWFscyBwcm92aWRlZCB3aXRoIHRoZSBkaXN0cmlidXRpb24uCisgKgorICogVEhJUyBTT0ZU
V0FSRSBJUyBQUk9WSURFRCBCWSBBUFBMRSBJTkMuIGBgQVMgSVMnJyBBTkQgQU5ZCisgKiBFWFBS
RVNTIE9SIElNUExJRUQgV0FSUkFOVElFUywgSU5DTFVESU5HLCBCVVQgTk9UIExJTUlURUQgVE8s
IFRIRQorICogSU1QTElFRCBXQVJSQU5USUVTIE9GIE1FUkNIQU5UQUJJTElUWSBBTkQgRklUTkVT
UyBGT1IgQSBQQVJUSUNVTEFSCisgKiBQVVJQT1NFIEFSRSBESVNDTEFJTUVELiAgSU4gTk8gRVZF
TlQgU0hBTEwgQVBQTEUgSU5DLiBPUgorICogQ09OVFJJQlVUT1JTIEJFIExJQUJMRSBGT1IgQU5Z
IERJUkVDVCwgSU5ESVJFQ1QsIElOQ0lERU5UQUwsIFNQRUNJQUwsCisgKiBFWEVNUExBUlksIE9S
IENPTlNFUVVFTlRJQUwgREFNQUdFUyAoSU5DTFVESU5HLCBCVVQgTk9UIExJTUlURUQgVE8sCisg
KiBQUk9DVVJFTUVOVCBPRiBTVUJTVElUVVRFIEdPT0RTIE9SIFNFUlZJQ0VTOyBMT1NTIE9GIFVT
RSwgREFUQSwgT1IKKyAqIFBST0ZJVFM7IE9SIEJVU0lORVNTIElOVEVSUlVQVElPTikgSE9XRVZF
UiBDQVVTRUQgQU5EIE9OIEFOWSBUSEVPUlkKKyAqIE9GIExJQUJJTElUWSwgV0hFVEhFUiBJTiBD
T05UUkFDVCwgU1RSSUNUIExJQUJJTElUWSwgT1IgVE9SVAorICogKElOQ0xVRElORyBORUdMSUdF
TkNFIE9SIE9USEVSV0lTRSkgQVJJU0lORyBJTiBBTlkgV0FZIE9VVCBPRiBUSEUgVVNFCisgKiBP
RiBUSElTIFNPRlRXQVJFLCBFVkVOIElGIEFEVklTRUQgT0YgVEhFIFBPU1NJQklMSVRZIE9GIFNV
Q0ggREFNQUdFLgorICovCisKKyNpbmNsdWRlICJjb25maWcuaCIKKyNpbmNsdWRlICJNb2R1bGVM
b2FkZXJPYmplY3QuaCIKKworI2luY2x1ZGUgIkJ1aWx0aW5OYW1lcy5oIgorI2luY2x1ZGUgIkVy
cm9yLmgiCisjaW5jbHVkZSAiRXhjZXB0aW9uLmgiCisjaW5jbHVkZSAiSlNDSW5saW5lcy5oIgor
I2luY2x1ZGUgIkpTR2xvYmFsT2JqZWN0RnVuY3Rpb25zLmgiCisjaW5jbHVkZSAiSlNJbnRlcm5h
bFByb21pc2UuaCIKKyNpbmNsdWRlICJKU0ludGVybmFsUHJvbWlzZURlZmVycmVkLmgiCisjaW5j
bHVkZSAiSlNNYXAuaCIKKyNpbmNsdWRlICJKU01vZHVsZVJlY29yZC5oIgorI2luY2x1ZGUgIk1v
ZHVsZUFuYWx5emVyLmgiCisjaW5jbHVkZSAiTm9kZXMuaCIKKyNpbmNsdWRlICJQYXJzZXIuaCIK
KyNpbmNsdWRlICJQYXJzZXJFcnJvci5oIgorCituYW1lc3BhY2UgSlNDIHsKKworc3RhdGljIEVu
Y29kZWRKU1ZhbHVlIEpTQ19IT1NUX0NBTEwgbW9kdWxlTG9hZGVyT2JqZWN0UGFyc2VNb2R1bGUo
RXhlY1N0YXRlKik7CitzdGF0aWMgRW5jb2RlZEpTVmFsdWUgSlNDX0hPU1RfQ0FMTCBtb2R1bGVM
b2FkZXJPYmplY3RSZXF1ZXN0ZWRNb2R1bGVzKEV4ZWNTdGF0ZSopOworc3RhdGljIEVuY29kZWRK
U1ZhbHVlIEpTQ19IT1NUX0NBTEwgbW9kdWxlTG9hZGVyT2JqZWN0UmVzb2x2ZShFeGVjU3RhdGUq
KTsKK3N0YXRpYyBFbmNvZGVkSlNWYWx1ZSBKU0NfSE9TVF9DQUxMIG1vZHVsZUxvYWRlck9iamVj
dEZldGNoKEV4ZWNTdGF0ZSopOworc3RhdGljIEVuY29kZWRKU1ZhbHVlIEpTQ19IT1NUX0NBTEwg
bW9kdWxlTG9hZGVyT2JqZWN0VHJhbnNsYXRlKEV4ZWNTdGF0ZSopOworc3RhdGljIEVuY29kZWRK
U1ZhbHVlIEpTQ19IT1NUX0NBTEwgbW9kdWxlTG9hZGVyT2JqZWN0SW5zdGFudGlhdGUoRXhlY1N0
YXRlKik7CisKK30KKworI2luY2x1ZGUgIk1vZHVsZUxvYWRlck9iamVjdC5sdXQuaCIKKworbmFt
ZXNwYWNlIEpTQyB7CisKK1NUQVRJQ19BU1NFUlRfSVNfVFJJVklBTExZX0RFU1RSVUNUSUJMRShN
b2R1bGVMb2FkZXJPYmplY3QpOworCitjb25zdCBDbGFzc0luZm8gTW9kdWxlTG9hZGVyT2JqZWN0
OjpzX2luZm8gPSB7ICJNb2R1bGVMb2FkZXIiLCAmQmFzZTo6c19pbmZvLCAmbW9kdWxlTG9hZGVy
T2JqZWN0VGFibGUsIENSRUFURV9NRVRIT0RfVEFCTEUoTW9kdWxlTG9hZGVyT2JqZWN0KSB9Owor
CisvKiBTb3VyY2UgZm9yIE1vZHVsZUxvYWRlck9iamVjdC5sdXQuaAorQGJlZ2luIG1vZHVsZUxv
YWRlck9iamVjdFRhYmxlCisgICAgc2V0U3RhdGVUb01heCAgICAgICAgICAgICAgbW9kdWxlTG9h
ZGVyT2JqZWN0U2V0U3RhdGVUb01heCAgICAgICAgICAgICAgRG9udEVudW18RnVuY3Rpb24gMgor
ICAgIG5ld1JlZ2lzdHJ5RW50cnkgICAgICAgICAgIG1vZHVsZUxvYWRlck9iamVjdE5ld1JlZ2lz
dHJ5RW50cnkgICAgICAgICAgIERvbnRFbnVtfEZ1bmN0aW9uIDEKKyAgICBlbnN1cmVSZWdpc3Rl
cmVkICAgICAgICAgICBtb2R1bGVMb2FkZXJPYmplY3RFbnN1cmVSZWdpc3RlcmVkICAgICAgICAg
ICBEb250RW51bXxGdW5jdGlvbiAxCisgICAgZm9yY2VGdWxmaWxsUHJvbWlzZSAgICAgICAgbW9k
dWxlTG9hZGVyT2JqZWN0Rm9yY2VGdWxmaWxsUHJvbWlzZSAgICAgICAgRG9udEVudW18RnVuY3Rp
b24gMgorICAgIGZ1bGZpbGxGZXRjaCAgICAgICAgICAgICAgIG1vZHVsZUxvYWRlck9iamVjdEZ1
bGZpbGxGZXRjaCAgICAgICAgICAgICAgIERvbnRFbnVtfEZ1bmN0aW9uIDIKKyAgICBmdWxmaWxs
VHJhbnNsYXRlICAgICAgICAgICBtb2R1bGVMb2FkZXJPYmplY3RGdWxmaWxsVHJhbnNsYXRlICAg
ICAgICAgICBEb250RW51bXxGdW5jdGlvbiAyCisgICAgZnVsZmlsbEluc3RhbnRpYXRlICAgICAg
ICAgbW9kdWxlTG9hZGVyT2JqZWN0RnVsZmlsbEluc3RhbnRpYXRlICAgICAgICAgRG9udEVudW18
RnVuY3Rpb24gMgorICAgIGNvbW1pdEluc3RhbnRpYXRlZCAgICAgICAgIG1vZHVsZUxvYWRlck9i
amVjdENvbW1pdEluc3RhbnRpYXRlZCAgICAgICAgIERvbnRFbnVtfEZ1bmN0aW9uIDMKKyAgICBp
bnN0YW50aWF0aW9uICAgICAgICAgICAgICBtb2R1bGVMb2FkZXJPYmplY3RJbnN0YW50aWF0aW9u
ICAgICAgICAgICAgICBEb250RW51bXxGdW5jdGlvbiAzCisgICAgcmVxdWVzdEZldGNoICAgICAg
ICAgICAgICAgbW9kdWxlTG9hZGVyT2JqZWN0UmVxdWVzdEZldGNoICAgICAgICAgICAgICAgRG9u
dEVudW18RnVuY3Rpb24gMQorICAgIHJlcXVlc3RUcmFuc2xhdGUgICAgICAgICAgIG1vZHVsZUxv
YWRlck9iamVjdFJlcXVlc3RUcmFuc2xhdGUgICAgICAgICAgIERvbnRFbnVtfEZ1bmN0aW9uIDEK
KyAgICByZXF1ZXN0SW5zdGFudGlhdGUgICAgICAgICBtb2R1bGVMb2FkZXJPYmplY3RSZXF1ZXN0
SW5zdGFudGlhdGUgICAgICAgICBEb250RW51bXxGdW5jdGlvbiAxCisgICAgcmVxdWVzdFJlc29s
dmVEZXBlbmRlbmNpZXMgbW9kdWxlTG9hZGVyT2JqZWN0UmVxdWVzdFJlc29sdmVEZXBlbmRlbmNp
ZXMgRG9udEVudW18RnVuY3Rpb24gMQorICAgIHJlcXVlc3RJbnN0YW50aWF0ZUFsbCAgICAgIG1v
ZHVsZUxvYWRlck9iamVjdFJlcXVlc3RJbnN0YW50aWF0ZUFsbCAgICAgIERvbnRFbnVtfEZ1bmN0
aW9uIDEKKyAgICBwcm92aWRlICAgICAgICAgICAgICAgICAgICBtb2R1bGVMb2FkZXJPYmplY3RQ
cm92aWRlICAgICAgICAgICAgICAgICAgICBEb250RW51bXxGdW5jdGlvbiAzCisgICAgcGFyc2VN
b2R1bGUgICAgICAgICAgICAgICAgbW9kdWxlTG9hZGVyT2JqZWN0UGFyc2VNb2R1bGUgICAgICAg
ICAgICAgICAgRG9udEVudW18RnVuY3Rpb24gMgorICAgIHJlcXVlc3RlZE1vZHVsZXMgICAgICAg
ICAgIG1vZHVsZUxvYWRlck9iamVjdFJlcXVlc3RlZE1vZHVsZXMgICAgICAgICAgIERvbnRFbnVt
fEZ1bmN0aW9uIDEKKyAgICByZXNvbHZlICAgICAgICAgICAgICAgICAgICBtb2R1bGVMb2FkZXJP
YmplY3RSZXNvbHZlICAgICAgICAgICAgICAgICAgICBEb250RW51bXxGdW5jdGlvbiAxCisgICAg
ZmV0Y2ggICAgICAgICAgICAgICAgICAgICAgbW9kdWxlTG9hZGVyT2JqZWN0RmV0Y2ggICAgICAg
ICAgICAgICAgICAgICAgRG9udEVudW18RnVuY3Rpb24gMQorICAgIHRyYW5zbGF0ZSAgICAgICAg
ICAgICAgICAgIG1vZHVsZUxvYWRlck9iamVjdFRyYW5zbGF0ZSAgICAgICAgICAgICAgICAgIERv
bnRFbnVtfEZ1bmN0aW9uIDIKKyAgICBpbnN0YW50aWF0ZSAgICAgICAgICAgICAgICBtb2R1bGVM
b2FkZXJPYmplY3RJbnN0YW50aWF0ZSAgICAgICAgICAgICAgICBEb250RW51bXxGdW5jdGlvbiAy
CitAZW5kCisqLworCitNb2R1bGVMb2FkZXJPYmplY3Q6Ok1vZHVsZUxvYWRlck9iamVjdChWTSYg
dm0sIFN0cnVjdHVyZSogc3RydWN0dXJlKQorICAgIDogSlNOb25GaW5hbE9iamVjdCh2bSwgc3Ry
dWN0dXJlKQoreworfQorCit2b2lkIE1vZHVsZUxvYWRlck9iamVjdDo6ZmluaXNoQ3JlYXRpb24o
Vk0mIHZtLCBKU0dsb2JhbE9iamVjdCogZ2xvYmFsT2JqZWN0KQoreworICAgIEJhc2U6OmZpbmlz
aENyZWF0aW9uKHZtKTsKKyAgICBBU1NFUlQoaW5oZXJpdHMoaW5mbygpKSk7CisKKyAgICAvLyBD
b25zdGFudCB2YWx1ZXMgZm9yIHRoZSBzdGF0ZS4KKyAgICBwdXREaXJlY3RXaXRob3V0VHJhbnNp
dGlvbih2bSwgSWRlbnRpZmllcjo6ZnJvbVN0cmluZygmdm0sICJGZXRjaCIpLCBqc051bWJlcihT
dGF0dXM6OkZldGNoKSk7CisgICAgcHV0RGlyZWN0V2l0aG91dFRyYW5zaXRpb24odm0sIElkZW50
aWZpZXI6OmZyb21TdHJpbmcoJnZtLCAiVHJhbnNsYXRlIiksIGpzTnVtYmVyKFN0YXR1czo6VHJh
bnNsYXRlKSk7CisgICAgcHV0RGlyZWN0V2l0aG91dFRyYW5zaXRpb24odm0sIElkZW50aWZpZXI6
OmZyb21TdHJpbmcoJnZtLCAiSW5zdGFudGlhdGUiKSwganNOdW1iZXIoU3RhdHVzOjpJbnN0YW50
aWF0ZSkpOworICAgIHB1dERpcmVjdFdpdGhvdXRUcmFuc2l0aW9uKHZtLCBJZGVudGlmaWVyOjpm
cm9tU3RyaW5nKCZ2bSwgIlJlc29sdmVEZXBlbmRlbmNpZXMiKSwganNOdW1iZXIoU3RhdHVzOjpS
ZXNvbHZlRGVwZW5kZW5jaWVzKSk7CisgICAgcHV0RGlyZWN0V2l0aG91dFRyYW5zaXRpb24odm0s
IElkZW50aWZpZXI6OmZyb21TdHJpbmcoJnZtLCAiTGluayIpLCBqc051bWJlcihTdGF0dXM6Okxp
bmspKTsKKyAgICBwdXREaXJlY3RXaXRob3V0VHJhbnNpdGlvbih2bSwgSWRlbnRpZmllcjo6ZnJv
bVN0cmluZygmdm0sICJSZWFkeSIpLCBqc051bWJlcihTdGF0dXM6OlJlYWR5KSk7CisKKyAgICBw
dXREaXJlY3RXaXRob3V0VHJhbnNpdGlvbih2bSwgSWRlbnRpZmllcjo6ZnJvbVN0cmluZygmdm0s
ICJyZWdpc3RyeSIpLCBKU01hcDo6Y3JlYXRlKHZtLCBnbG9iYWxPYmplY3QtPm1hcFN0cnVjdHVy
ZSgpKSk7Cit9CisKK2Jvb2wgTW9kdWxlTG9hZGVyT2JqZWN0OjpnZXRPd25Qcm9wZXJ0eVNsb3Qo
SlNPYmplY3QqIG9iamVjdCwgRXhlY1N0YXRlKiBleGVjLCBQcm9wZXJ0eU5hbWUgcHJvcGVydHlO
YW1lLCBQcm9wZXJ0eVNsb3QgJnNsb3QpCit7CisgICAgcmV0dXJuIGdldFN0YXRpY0Z1bmN0aW9u
U2xvdDxCYXNlPihleGVjLCBtb2R1bGVMb2FkZXJPYmplY3RUYWJsZSwganNDYXN0PE1vZHVsZUxv
YWRlck9iamVjdCo+KG9iamVjdCksIHByb3BlcnR5TmFtZSwgc2xvdCk7Cit9CisKKy8vIC0tLS0t
LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLSBGdW5jdGlvbnMgLS0tLS0tLS0tLS0tLS0tLS0tLS0t
LS0tLS0tLS0tLS0KKworc3RhdGljIFN0cmluZyBwcmludGFibGVNb2R1bGVLZXkoRXhlY1N0YXRl
KiBleGVjLCBKU1ZhbHVlIGtleSkKK3sKKyAgICBpZiAoa2V5LmlzU3RyaW5nKCkgfHwga2V5Lmlz
U3ltYm9sKCkpCisgICAgICAgIHJldHVybiBrZXkudG9Qcm9wZXJ0eUtleShleGVjKS5pbXBsKCk7
CisgICAgcmV0dXJuIGV4ZWMtPnByb3BlcnR5TmFtZXMoKS5lbXB0eUlkZW50aWZpZXIuaW1wbCgp
OworfQorCitKU1ZhbHVlIE1vZHVsZUxvYWRlck9iamVjdDo6cHJvdmlkZShFeGVjU3RhdGUqIGV4
ZWMsIEpTVmFsdWUga2V5LCBTdGF0dXMgc3RhdHVzLCBjb25zdCBTdHJpbmcmIHNvdXJjZSkKK3sK
KyAgICBKU09iamVjdCogZnVuY3Rpb24gPSBqc0Nhc3Q8SlNPYmplY3QqPihnZXQoZXhlYywgZXhl
Yy0+cHJvcGVydHlOYW1lcygpLmJ1aWx0aW5OYW1lcygpLnByb3ZpZGVQdWJsaWNOYW1lKCkpKTsK
KyAgICBDYWxsRGF0YSBjYWxsRGF0YTsKKyAgICBDYWxsVHlwZSBjYWxsVHlwZSA9IEpTQzo6Z2V0
Q2FsbERhdGEoZnVuY3Rpb24sIGNhbGxEYXRhKTsKKyAgICBBU1NFUlQoY2FsbFR5cGUgIT0gQ2Fs
bFR5cGVOb25lKTsKKworICAgIE1hcmtlZEFyZ3VtZW50QnVmZmVyIGFyZ3VtZW50czsKKyAgICBh
cmd1bWVudHMuYXBwZW5kKGtleSk7CisgICAgYXJndW1lbnRzLmFwcGVuZChqc051bWJlcihzdGF0
dXMpKTsKKyAgICBhcmd1bWVudHMuYXBwZW5kKGpzU3RyaW5nKGV4ZWMsIHNvdXJjZSkpOworCisg
ICAgcmV0dXJuIGNhbGwoZXhlYywgZnVuY3Rpb24sIGNhbGxUeXBlLCBjYWxsRGF0YSwgdGhpcywg
YXJndW1lbnRzKTsKK30KKworSlNWYWx1ZSBNb2R1bGVMb2FkZXJPYmplY3Q6OnJlcXVlc3RJbnN0
YW50aWF0ZUFsbChFeGVjU3RhdGUqIGV4ZWMsIEpTVmFsdWUga2V5KQoreworICAgIEpTT2JqZWN0
KiBmdW5jdGlvbiA9IGpzQ2FzdDxKU09iamVjdCo+KGdldChleGVjLCBleGVjLT5wcm9wZXJ0eU5h
bWVzKCkuYnVpbHRpbk5hbWVzKCkucmVxdWVzdEluc3RhbnRpYXRlQWxsUHVibGljTmFtZSgpKSk7
CisgICAgQ2FsbERhdGEgY2FsbERhdGE7CisgICAgQ2FsbFR5cGUgY2FsbFR5cGUgPSBKU0M6Omdl
dENhbGxEYXRhKGZ1bmN0aW9uLCBjYWxsRGF0YSk7CisgICAgQVNTRVJUKGNhbGxUeXBlICE9IENh
bGxUeXBlTm9uZSk7CisKKyAgICBNYXJrZWRBcmd1bWVudEJ1ZmZlciBhcmd1bWVudHM7CisgICAg
YXJndW1lbnRzLmFwcGVuZChrZXkpOworCisgICAgcmV0dXJuIGNhbGwoZXhlYywgZnVuY3Rpb24s
IGNhbGxUeXBlLCBjYWxsRGF0YSwgdGhpcywgYXJndW1lbnRzKTsKK30KKworSlNWYWx1ZSBNb2R1
bGVMb2FkZXJPYmplY3Q6OnJlc29sdmUoRXhlY1N0YXRlKiBleGVjLCBKU1ZhbHVlIG5hbWUsIEpT
VmFsdWUgcmVmZXJyZXIpCit7CisgICAgaWYgKE9wdGlvbnM6OmR1bXBNb2R1bGVMb2FkaW5nU3Rh
dGUoKSkKKyAgICAgICAgZGF0YUxvZygiTG9hZGVyIFtyZXNvbHZlXSAiLCBwcmludGFibGVNb2R1
bGVLZXkoZXhlYywgbmFtZSksICJcbiIpOworCisgICAgSlNHbG9iYWxPYmplY3QqIGdsb2JhbE9i
amVjdCA9IGV4ZWMtPmxleGljYWxHbG9iYWxPYmplY3QoKTsKKyAgICBpZiAoZ2xvYmFsT2JqZWN0
LT5nbG9iYWxPYmplY3RNZXRob2RUYWJsZSgpLT5sb2FkZXJSZXNvbHZlKQorICAgICAgICByZXR1
cm4gZ2xvYmFsT2JqZWN0LT5nbG9iYWxPYmplY3RNZXRob2RUYWJsZSgpLT5sb2FkZXJSZXNvbHZl
KGdsb2JhbE9iamVjdCwgZXhlYywgbmFtZSwgcmVmZXJyZXIpOworICAgIEpTSW50ZXJuYWxQcm9t
aXNlRGVmZXJyZWQqIGRlZmVycmVkID0gSlNJbnRlcm5hbFByb21pc2VEZWZlcnJlZDo6Y3JlYXRl
KGV4ZWMsIGdsb2JhbE9iamVjdCk7CisgICAgZGVmZXJyZWQtPnJlc29sdmUoZXhlYywgbmFtZSk7
CisgICAgcmV0dXJuIGRlZmVycmVkLT5wcm9taXNlKCk7Cit9CisKK0pTVmFsdWUgTW9kdWxlTG9h
ZGVyT2JqZWN0OjpmZXRjaChFeGVjU3RhdGUqIGV4ZWMsIEpTVmFsdWUga2V5KQoreworICAgIGlm
IChPcHRpb25zOjpkdW1wTW9kdWxlTG9hZGluZ1N0YXRlKCkpCisgICAgICAgIGRhdGFMb2coIkxv
YWRlciBbZmV0Y2hdICIsIHByaW50YWJsZU1vZHVsZUtleShleGVjLCBrZXkpLCAiXG4iKTsKKwor
ICAgIEpTR2xvYmFsT2JqZWN0KiBnbG9iYWxPYmplY3QgPSBleGVjLT5sZXhpY2FsR2xvYmFsT2Jq
ZWN0KCk7CisgICAgaWYgKGdsb2JhbE9iamVjdC0+Z2xvYmFsT2JqZWN0TWV0aG9kVGFibGUoKS0+
bG9hZGVyRmV0Y2gpCisgICAgICAgIHJldHVybiBnbG9iYWxPYmplY3QtPmdsb2JhbE9iamVjdE1l
dGhvZFRhYmxlKCktPmxvYWRlckZldGNoKGdsb2JhbE9iamVjdCwgZXhlYywga2V5KTsKKyAgICBK
U0ludGVybmFsUHJvbWlzZURlZmVycmVkKiBkZWZlcnJlZCA9IEpTSW50ZXJuYWxQcm9taXNlRGVm
ZXJyZWQ6OmNyZWF0ZShleGVjLCBnbG9iYWxPYmplY3QpOworICAgIFN0cmluZyBtb2R1bGVLZXkg
PSBrZXkudG9TdHJpbmcoZXhlYyktPnZhbHVlKGV4ZWMpOworICAgIGlmIChleGVjLT5oYWRFeGNl
cHRpb24oKSkgeworICAgICAgICBKU1ZhbHVlIGV4Y2VwdGlvbiA9IGV4ZWMtPmV4Y2VwdGlvbigp
LT52YWx1ZSgpOworICAgICAgICBleGVjLT5jbGVhckV4Y2VwdGlvbigpOworICAgICAgICBkZWZl
cnJlZC0+cmVqZWN0KGV4ZWMsIGV4Y2VwdGlvbik7CisgICAgICAgIHJldHVybiBkZWZlcnJlZC0+
cHJvbWlzZSgpOworICAgIH0KKyAgICBkZWZlcnJlZC0+cmVqZWN0KGV4ZWMsIGNyZWF0ZUVycm9y
KGV4ZWMsIG1ha2VTdHJpbmcoIkNvdWxkIG5vdCBvcGVuIHRoZSBtb2R1bGUgJyIsIG1vZHVsZUtl
eSwgIicuIikpKTsKKyAgICByZXR1cm4gZGVmZXJyZWQtPnByb21pc2UoKTsKK30KKworSlNWYWx1
ZSBNb2R1bGVMb2FkZXJPYmplY3Q6OnRyYW5zbGF0ZShFeGVjU3RhdGUqIGV4ZWMsIEpTVmFsdWUg
a2V5LCBKU1ZhbHVlIHBheWxvYWQpCit7CisgICAgaWYgKE9wdGlvbnM6OmR1bXBNb2R1bGVMb2Fk
aW5nU3RhdGUoKSkKKyAgICAgICAgZGF0YUxvZygiTG9hZGVyIFt0cmFuc2xhdGVdICIsIHByaW50
YWJsZU1vZHVsZUtleShleGVjLCBrZXkpLCAiXG4iKTsKKworICAgIEpTR2xvYmFsT2JqZWN0KiBn
bG9iYWxPYmplY3QgPSBleGVjLT5sZXhpY2FsR2xvYmFsT2JqZWN0KCk7CisgICAgaWYgKGdsb2Jh
bE9iamVjdC0+Z2xvYmFsT2JqZWN0TWV0aG9kVGFibGUoKS0+bG9hZGVyVHJhbnNsYXRlKQorICAg
ICAgICByZXR1cm4gZ2xvYmFsT2JqZWN0LT5nbG9iYWxPYmplY3RNZXRob2RUYWJsZSgpLT5sb2Fk
ZXJUcmFuc2xhdGUoZ2xvYmFsT2JqZWN0LCBleGVjLCBrZXksIHBheWxvYWQpOworICAgIEpTSW50
ZXJuYWxQcm9taXNlRGVmZXJyZWQqIGRlZmVycmVkID0gSlNJbnRlcm5hbFByb21pc2VEZWZlcnJl
ZDo6Y3JlYXRlKGV4ZWMsIGdsb2JhbE9iamVjdCk7CisgICAgZGVmZXJyZWQtPnJlc29sdmUoZXhl
YywgcGF5bG9hZCk7CisgICAgcmV0dXJuIGRlZmVycmVkLT5wcm9taXNlKCk7Cit9CisKK0pTVmFs
dWUgTW9kdWxlTG9hZGVyT2JqZWN0OjppbnN0YW50aWF0ZShFeGVjU3RhdGUqIGV4ZWMsIEpTVmFs
dWUga2V5LCBKU1ZhbHVlIHNvdXJjZSkKK3sKKyAgICBpZiAoT3B0aW9uczo6ZHVtcE1vZHVsZUxv
YWRpbmdTdGF0ZSgpKQorICAgICAgICBkYXRhTG9nKCJMb2FkZXIgW2luc3RhbnRpYXRlXSAiLCBw
cmludGFibGVNb2R1bGVLZXkoZXhlYywga2V5KSwgIlxuIik7CisKKyAgICBKU0dsb2JhbE9iamVj
dCogZ2xvYmFsT2JqZWN0ID0gZXhlYy0+bGV4aWNhbEdsb2JhbE9iamVjdCgpOworICAgIGlmIChn
bG9iYWxPYmplY3QtPmdsb2JhbE9iamVjdE1ldGhvZFRhYmxlKCktPmxvYWRlckluc3RhbnRpYXRl
KQorICAgICAgICByZXR1cm4gZ2xvYmFsT2JqZWN0LT5nbG9iYWxPYmplY3RNZXRob2RUYWJsZSgp
LT5sb2FkZXJJbnN0YW50aWF0ZShnbG9iYWxPYmplY3QsIGV4ZWMsIGtleSwgc291cmNlKTsKKyAg
ICBKU0ludGVybmFsUHJvbWlzZURlZmVycmVkKiBkZWZlcnJlZCA9IEpTSW50ZXJuYWxQcm9taXNl
RGVmZXJyZWQ6OmNyZWF0ZShleGVjLCBnbG9iYWxPYmplY3QpOworICAgIGRlZmVycmVkLT5yZXNv
bHZlKGV4ZWMsIGpzVW5kZWZpbmVkKCkpOworICAgIHJldHVybiBkZWZlcnJlZC0+cHJvbWlzZSgp
OworfQorCisvLyAtLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0gSG9vayBGdW5jdGlvbnMg
LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tCisKK0VuY29kZWRKU1ZhbHVlIEpTQ19IT1NUX0NB
TEwgbW9kdWxlTG9hZGVyT2JqZWN0UGFyc2VNb2R1bGUoRXhlY1N0YXRlKiBleGVjKQoreworICAg
IFZNJiB2bSA9IGV4ZWMtPnZtKCk7CisgICAgSWRlbnRpZmllciBtb2R1bGVLZXkgPSBleGVjLT5h
cmd1bWVudCgwKS50b1Byb3BlcnR5S2V5KGV4ZWMpOworICAgIGlmIChleGVjLT5oYWRFeGNlcHRp
b24oKSkKKyAgICAgICAgcmV0dXJuIEpTVmFsdWU6OmVuY29kZShqc1VuZGVmaW5lZCgpKTsKKwor
ICAgIFN0cmluZyBzb3VyY2UgPSBleGVjLT5hcmd1bWVudCgxKS50b1N0cmluZyhleGVjKS0+dmFs
dWUoZXhlYyk7CisgICAgaWYgKGV4ZWMtPmhhZEV4Y2VwdGlvbigpKQorICAgICAgICByZXR1cm4g
SlNWYWx1ZTo6ZW5jb2RlKGpzVW5kZWZpbmVkKCkpOworCisgICAgU291cmNlQ29kZSBzb3VyY2VD
b2RlID0gbWFrZVNvdXJjZShzb3VyY2UsIG1vZHVsZUtleS5pbXBsKCkpOworCisgICAgUGFyc2Vy
RXJyb3IgZXJyb3I7CisgICAgc3RkOjp1bmlxdWVfcHRyPE1vZHVsZVByb2dyYW1Ob2RlPiBtb2R1
bGVQcm9ncmFtTm9kZSA9IHBhcnNlPE1vZHVsZVByb2dyYW1Ob2RlPigKKyAgICAgICAgJnZtLCBz
b3VyY2VDb2RlLCBJZGVudGlmaWVyKCksIEpTUGFyc2VyQnVpbHRpbk1vZGU6Ok5vdEJ1aWx0aW4s
CisgICAgICAgIEpTUGFyc2VyU3RyaWN0TW9kZTo6U3RyaWN0LCBTb3VyY2VQYXJzZU1vZGU6Ok1v
ZHVsZUFuYWx5emVNb2RlLCBlcnJvcik7CisKKyAgICBpZiAoZXJyb3IuaXNWYWxpZCgpKSB7Cisg
ICAgICAgIHRocm93Vk1FcnJvcihleGVjLCBlcnJvci50b0Vycm9yT2JqZWN0KGV4ZWMtPmxleGlj
YWxHbG9iYWxPYmplY3QoKSwgc291cmNlQ29kZSkpOworICAgICAgICByZXR1cm4gSlNWYWx1ZTo6
ZW5jb2RlKGpzVW5kZWZpbmVkKCkpOworICAgIH0KKyAgICBBU1NFUlQobW9kdWxlUHJvZ3JhbU5v
ZGUpOworCisgICAgTW9kdWxlQW5hbHl6ZXIgbW9kdWxlQW5hbHl6ZXIoZXhlYywgbW9kdWxlUHJv
Z3JhbU5vZGUtPnZhckRlY2xhcmF0aW9ucygpLCBtb2R1bGVQcm9ncmFtTm9kZS0+bGV4aWNhbFZh
cmlhYmxlcygpKTsKKyAgICBKU01vZHVsZVJlY29yZCogbW9kdWxlUmVjb3JkID0gbW9kdWxlQW5h
bHl6ZXIuYW5hbHl6ZSgqbW9kdWxlUHJvZ3JhbU5vZGUpOworICAgIHJldHVybiBKU1ZhbHVlOjpl
bmNvZGUobW9kdWxlUmVjb3JkKTsKK30KKworRW5jb2RlZEpTVmFsdWUgSlNDX0hPU1RfQ0FMTCBt
b2R1bGVMb2FkZXJPYmplY3RSZXF1ZXN0ZWRNb2R1bGVzKEV4ZWNTdGF0ZSogZXhlYykKK3sKKyAg
ICBKU01vZHVsZVJlY29yZCogbW9kdWxlUmVjb3JkID0ganNDYXN0PEpTTW9kdWxlUmVjb3JkKj4o
ZXhlYy0+YXJndW1lbnQoMCkpOworICAgIGlmICghbW9kdWxlUmVjb3JkKQorICAgICAgICByZXR1
cm4gSlNWYWx1ZTo6ZW5jb2RlKGNvbnN0cnVjdEVtcHR5QXJyYXkoZXhlYywgbnVsbHB0cikpOwor
CisgICAgSlNBcnJheSogcmVzdWx0ID0gY29uc3RydWN0RW1wdHlBcnJheShleGVjLCBudWxscHRy
LCBtb2R1bGVSZWNvcmQtPnJlcXVlc3RlZE1vZHVsZXMoKS5zaXplKCkpOworICAgIHNpemVfdCBp
ID0gMDsKKyAgICBmb3IgKGF1dG8mIGtleSA6IG1vZHVsZVJlY29yZC0+cmVxdWVzdGVkTW9kdWxl
cygpKQorICAgICAgICByZXN1bHQtPnB1dERpcmVjdEluZGV4KGV4ZWMsIGkrKywganNTdHJpbmco
ZXhlYywga2V5LmdldCgpKSk7CisKKyAgICByZXR1cm4gSlNWYWx1ZTo6ZW5jb2RlKHJlc3VsdCk7
Cit9CisKK0VuY29kZWRKU1ZhbHVlIEpTQ19IT1NUX0NBTEwgbW9kdWxlTG9hZGVyT2JqZWN0UmVz
b2x2ZShFeGVjU3RhdGUqIGV4ZWMpCit7CisgICAgLy8gSG9vayBwb2ludCwgTG9hZGVyLnJlc29s
dmUuCisgICAgLy8gaHR0cHM6Ly93aGF0d2cuZ2l0aHViLmlvL2xvYWRlci8jYnJvd3Nlci1yZXNv
bHZlCisgICAgLy8gVGFrZSB0aGUgbmFtZSBhbmQgcmVzb2x2ZSBpdCB0byB0aGUgdW5pcXVlIGlk
ZW50aWZpZXIgZm9yIHRoZSByZXNvdXJjZSBsb2NhdGlvbi4KKyAgICAvLyBGb3IgZXhhbXBsZSwg
dGFrZSB0aGUgImpxdWVyeSIgYW5kIHJldHVybiB0aGUgVVJMIGZvciB0aGUgcmVzb3VyY2UuCisg
ICAgTW9kdWxlTG9hZGVyT2JqZWN0KiBsb2FkZXIgPSBqc0R5bmFtaWNDYXN0PE1vZHVsZUxvYWRl
ck9iamVjdCo+KGV4ZWMtPnRoaXNWYWx1ZSgpKTsKKyAgICBpZiAoIWxvYWRlcikKKyAgICAgICAg
cmV0dXJuIEpTVmFsdWU6OmVuY29kZShqc1VuZGVmaW5lZCgpKTsKKyAgICByZXR1cm4gSlNWYWx1
ZTo6ZW5jb2RlKGxvYWRlci0+cmVzb2x2ZShleGVjLCBleGVjLT5hcmd1bWVudCgwKSwgZXhlYy0+
YXJndW1lbnQoMSkpKTsKK30KKworRW5jb2RlZEpTVmFsdWUgSlNDX0hPU1RfQ0FMTCBtb2R1bGVM
b2FkZXJPYmplY3RGZXRjaChFeGVjU3RhdGUqIGV4ZWMpCit7CisgICAgLy8gSG9vayBwb2ludCwg
TG9hZGVyLmZldGNoCisgICAgLy8gaHR0cHM6Ly93aGF0d2cuZ2l0aHViLmlvL2xvYWRlci8jYnJv
d3Nlci1mZXRjaAorICAgIC8vIFRha2UgdGhlIGtleSBhbmQgZmV0Y2ggdGhlIHJlc291cmNlIGFj
dHVhbGx5LgorICAgIC8vIEZvciBleGFtcGxlLCBKYXZhU2NyaXB0Q29yZSBzaGVsbCBjYW4gcHJv
dmlkZSB0aGUgaG9vayBmZXRjaGluZyB0aGUgcmVzb3VyY2UKKyAgICAvLyBmcm9tIHRoZSBsb2Nh
bCBmaWxlIHN5c3RlbS4KKyAgICBNb2R1bGVMb2FkZXJPYmplY3QqIGxvYWRlciA9IGpzRHluYW1p
Y0Nhc3Q8TW9kdWxlTG9hZGVyT2JqZWN0Kj4oZXhlYy0+dGhpc1ZhbHVlKCkpOworICAgIGlmICgh
bG9hZGVyKQorICAgICAgICByZXR1cm4gSlNWYWx1ZTo6ZW5jb2RlKGpzVW5kZWZpbmVkKCkpOwor
ICAgIHJldHVybiBKU1ZhbHVlOjplbmNvZGUobG9hZGVyLT5mZXRjaChleGVjLCBleGVjLT5hcmd1
bWVudCgwKSkpOworfQorCitFbmNvZGVkSlNWYWx1ZSBKU0NfSE9TVF9DQUxMIG1vZHVsZUxvYWRl
ck9iamVjdFRyYW5zbGF0ZShFeGVjU3RhdGUqIGV4ZWMpCit7CisgICAgLy8gSG9vayBwb2ludCwg
TG9hZGVyLnRyYW5zbGF0ZQorICAgIC8vIGh0dHBzOi8vd2hhdHdnLmdpdGh1Yi5pby9sb2FkZXIv
I2Jyb3dzZXItdHJhbnNsYXRlCisgICAgLy8gVGFrZSB0aGUga2V5IGFuZCB0aGUgZmV0Y2hlZCBz
b3VyY2UgY29kZSBhbmQgdHJhbnNsYXRlIGl0IHRvIHRoZSBFUzYgc291cmNlIGNvZGUuCisgICAg
Ly8gVHlwaWNhbGx5IGl0IGlzIHVzZWQgYnkgdGhlIHRyYW5zcGlsZXJzLgorICAgIE1vZHVsZUxv
YWRlck9iamVjdCogbG9hZGVyID0ganNEeW5hbWljQ2FzdDxNb2R1bGVMb2FkZXJPYmplY3QqPihl
eGVjLT50aGlzVmFsdWUoKSk7CisgICAgaWYgKCFsb2FkZXIpCisgICAgICAgIHJldHVybiBKU1Zh
bHVlOjplbmNvZGUoanNVbmRlZmluZWQoKSk7CisgICAgcmV0dXJuIEpTVmFsdWU6OmVuY29kZShs
b2FkZXItPnRyYW5zbGF0ZShleGVjLCBleGVjLT5hcmd1bWVudCgwKSwgZXhlYy0+YXJndW1lbnQo
MSkpKTsKK30KKworRW5jb2RlZEpTVmFsdWUgSlNDX0hPU1RfQ0FMTCBtb2R1bGVMb2FkZXJPYmpl
Y3RJbnN0YW50aWF0ZShFeGVjU3RhdGUqIGV4ZWMpCit7CisgICAgLy8gSG9vayBwb2ludCwgTG9h
ZGVyLmluc3RhbnRpYXRlCisgICAgLy8gaHR0cHM6Ly93aGF0d2cuZ2l0aHViLmlvL2xvYWRlci8j
YnJvd3Nlci1pbnN0YW50aWF0ZQorICAgIC8vIFRha2UgdGhlIGtleSBhbmQgdGhlIHRyYW5zbGF0
ZWQgc291cmNlIGNvZGUsIGFuZCBpbnN0YW50aWF0ZSB0aGUgbW9kdWxlIHJlY29yZAorICAgIC8v
IGJ5IHBhcnNpbmcgdGhlIG1vZHVsZSBzb3VyY2UgY29kZS4KKyAgICAvLyBJdCBoYXMgdGhlIGNo
YW5jZSB0byBwcm92aWRlIHRoZSBvcHRpb25hbCBtb2R1bGUgaW5zdGFuY2UgdGhhdCBpcyBkaWZm
ZXJlbnQgZnJvbQorICAgIC8vIHRoZSBvcmRpbmFyeSBvbmUuCisgICAgTW9kdWxlTG9hZGVyT2Jq
ZWN0KiBsb2FkZXIgPSBqc0R5bmFtaWNDYXN0PE1vZHVsZUxvYWRlck9iamVjdCo+KGV4ZWMtPnRo
aXNWYWx1ZSgpKTsKKyAgICBpZiAoIWxvYWRlcikKKyAgICAgICAgcmV0dXJuIEpTVmFsdWU6OmVu
Y29kZShqc1VuZGVmaW5lZCgpKTsKKyAgICByZXR1cm4gSlNWYWx1ZTo6ZW5jb2RlKGxvYWRlci0+
aW5zdGFudGlhdGUoZXhlYywgZXhlYy0+YXJndW1lbnQoMCksIGV4ZWMtPmFyZ3VtZW50KDEpKSk7
Cit9CisKK30gLy8gbmFtZXNwYWNlIEpTQwpkaWZmIC0tZ2l0IGEvU291cmNlL0phdmFTY3JpcHRD
b3JlL3J1bnRpbWUvTW9kdWxlTG9hZGVyT2JqZWN0LmggYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUv
cnVudGltZS9Nb2R1bGVMb2FkZXJPYmplY3QuaApuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwLi5mZDZjNjAxMDg4NGE0ZjQz
NDlmMDlmZmY3OTNmNDJhNWNlMjA4NDA3Ci0tLSAvZGV2L251bGwKKysrIGIvU291cmNlL0phdmFT
Y3JpcHRDb3JlL3J1bnRpbWUvTW9kdWxlTG9hZGVyT2JqZWN0LmgKQEAgLTAsMCArMSw4MSBAQAor
LyoKKyAqIENvcHlyaWdodCAoQykgMjAxNSBBcHBsZSBJbmMuIEFsbCBSaWdodHMgUmVzZXJ2ZWQu
CisgKgorICogUmVkaXN0cmlidXRpb24gYW5kIHVzZSBpbiBzb3VyY2UgYW5kIGJpbmFyeSBmb3Jt
cywgd2l0aCBvciB3aXRob3V0CisgKiBtb2RpZmljYXRpb24sIGFyZSBwZXJtaXR0ZWQgcHJvdmlk
ZWQgdGhhdCB0aGUgZm9sbG93aW5nIGNvbmRpdGlvbnMKKyAqIGFyZSBtZXQ6CisgKiAxLiBSZWRp
c3RyaWJ1dGlvbnMgb2Ygc291cmNlIGNvZGUgbXVzdCByZXRhaW4gdGhlIGFib3ZlIGNvcHlyaWdo
dAorICogICAgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2lu
ZyBkaXNjbGFpbWVyLgorICogMi4gUmVkaXN0cmlidXRpb25zIGluIGJpbmFyeSBmb3JtIG11c3Qg
cmVwcm9kdWNlIHRoZSBhYm92ZSBjb3B5cmlnaHQKKyAqICAgIG5vdGljZSwgdGhpcyBsaXN0IG9m
IGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lciBpbiB0aGUKKyAqICAgIGRv
Y3VtZW50YXRpb24gYW5kL29yIG90aGVyIG1hdGVyaWFscyBwcm92aWRlZCB3aXRoIHRoZSBkaXN0
cmlidXRpb24uCisgKgorICogVEhJUyBTT0ZUV0FSRSBJUyBQUk9WSURFRCBCWSBBUFBMRSBJTkMu
IGBgQVMgSVMnJyBBTkQgQU5ZCisgKiBFWFBSRVNTIE9SIElNUExJRUQgV0FSUkFOVElFUywgSU5D
TFVESU5HLCBCVVQgTk9UIExJTUlURUQgVE8sIFRIRQorICogSU1QTElFRCBXQVJSQU5USUVTIE9G
IE1FUkNIQU5UQUJJTElUWSBBTkQgRklUTkVTUyBGT1IgQSBQQVJUSUNVTEFSCisgKiBQVVJQT1NF
IEFSRSBESVNDTEFJTUVELiAgSU4gTk8gRVZFTlQgU0hBTEwgQVBQTEUgSU5DLiBPUgorICogQ09O
VFJJQlVUT1JTIEJFIExJQUJMRSBGT1IgQU5ZIERJUkVDVCwgSU5ESVJFQ1QsIElOQ0lERU5UQUws
IFNQRUNJQUwsCisgKiBFWEVNUExBUlksIE9SIENPTlNFUVVFTlRJQUwgREFNQUdFUyAoSU5DTFVE
SU5HLCBCVVQgTk9UIExJTUlURUQgVE8sCisgKiBQUk9DVVJFTUVOVCBPRiBTVUJTVElUVVRFIEdP
T0RTIE9SIFNFUlZJQ0VTOyBMT1NTIE9GIFVTRSwgREFUQSwgT1IKKyAqIFBST0ZJVFM7IE9SIEJV
U0lORVNTIElOVEVSUlVQVElPTikgSE9XRVZFUiBDQVVTRUQgQU5EIE9OIEFOWSBUSEVPUlkKKyAq
IE9GIExJQUJJTElUWSwgV0hFVEhFUiBJTiBDT05UUkFDVCwgU1RSSUNUIExJQUJJTElUWSwgT1Ig
VE9SVAorICogKElOQ0xVRElORyBORUdMSUdFTkNFIE9SIE9USEVSV0lTRSkgQVJJU0lORyBJTiBB
TlkgV0FZIE9VVCBPRiBUSEUgVVNFCisgKiBPRiBUSElTIFNPRlRXQVJFLCBFVkVOIElGIEFEVklT
RUQgT0YgVEhFIFBPU1NJQklMSVRZIE9GIFNVQ0ggREFNQUdFLgorICovCisKKyNpZm5kZWYgTW9k
dWxlTG9hZGVyT2JqZWN0X2gKKyNkZWZpbmUgTW9kdWxlTG9hZGVyT2JqZWN0X2gKKworI2luY2x1
ZGUgIkpTT2JqZWN0LmgiCisKK25hbWVzcGFjZSBKU0MgeworCitjbGFzcyBNb2R1bGVMb2FkZXJP
YmplY3QgOiBwdWJsaWMgSlNOb25GaW5hbE9iamVjdCB7Citwcml2YXRlOgorICAgIE1vZHVsZUxv
YWRlck9iamVjdChWTSYsIFN0cnVjdHVyZSopOworcHVibGljOgorICAgIHR5cGVkZWYgSlNOb25G
aW5hbE9iamVjdCBCYXNlOworICAgIHN0YXRpYyBjb25zdCB1bnNpZ25lZCBTdHJ1Y3R1cmVGbGFn
cyA9IEJhc2U6OlN0cnVjdHVyZUZsYWdzIHwgT3ZlcnJpZGVzR2V0T3duUHJvcGVydHlTbG90Owor
CisgICAgZW51bSBTdGF0dXMgeworICAgICAgICBGZXRjaCA9IDEsCisgICAgICAgIFRyYW5zbGF0
ZSA9IDIsCisgICAgICAgIEluc3RhbnRpYXRlID0gMywKKyAgICAgICAgUmVzb2x2ZURlcGVuZGVu
Y2llcyA9IDQsCisgICAgICAgIExpbmsgPSA1LAorICAgICAgICBSZWFkeSA9IDYsCisgICAgfTsK
KworICAgIHN0YXRpYyBNb2R1bGVMb2FkZXJPYmplY3QqIGNyZWF0ZShWTSYgdm0sIEpTR2xvYmFs
T2JqZWN0KiBnbG9iYWxPYmplY3QsIFN0cnVjdHVyZSogc3RydWN0dXJlKQorICAgIHsKKyAgICAg
ICAgTW9kdWxlTG9hZGVyT2JqZWN0KiBvYmplY3QgPSBuZXcgKE5vdE51bGwsIGFsbG9jYXRlQ2Vs
bDxNb2R1bGVMb2FkZXJPYmplY3Q+KHZtLmhlYXApKSBNb2R1bGVMb2FkZXJPYmplY3Qodm0sIHN0
cnVjdHVyZSk7CisgICAgICAgIG9iamVjdC0+ZmluaXNoQ3JlYXRpb24odm0sIGdsb2JhbE9iamVj
dCk7CisgICAgICAgIHJldHVybiBvYmplY3Q7CisgICAgfQorCisgICAgREVDTEFSRV9JTkZPOwor
CisgICAgc3RhdGljIFN0cnVjdHVyZSogY3JlYXRlU3RydWN0dXJlKFZNJiB2bSwgSlNHbG9iYWxP
YmplY3QqIGdsb2JhbE9iamVjdCwgSlNWYWx1ZSBwcm90b3R5cGUpCisgICAgeworICAgICAgICBy
ZXR1cm4gU3RydWN0dXJlOjpjcmVhdGUodm0sIGdsb2JhbE9iamVjdCwgcHJvdG90eXBlLCBUeXBl
SW5mbyhPYmplY3RUeXBlLCBTdHJ1Y3R1cmVGbGFncyksIGluZm8oKSk7CisgICAgfQorCisgICAg
Ly8gQVBJcyB0byBjb250cm9sIHRoZSBtb2R1bGUgbG9hZGVyLgorICAgIEpTVmFsdWUgcHJvdmlk
ZShFeGVjU3RhdGUqLCBKU1ZhbHVlIGtleSwgU3RhdHVzLCBjb25zdCBTdHJpbmcmKTsKKyAgICBK
U1ZhbHVlIHJlcXVlc3RJbnN0YW50aWF0ZUFsbChFeGVjU3RhdGUqLCBKU1ZhbHVlIGtleSk7CisK
KyAgICAvLyBQbGF0Zm9ybSBkZXBlbmRlbnQgaG9va2VkIEFQSXMuCisgICAgSlNWYWx1ZSByZXNv
bHZlKEV4ZWNTdGF0ZSosIEpTVmFsdWUgbmFtZSwgSlNWYWx1ZSByZWZlcnJlcik7CisgICAgSlNW
YWx1ZSBmZXRjaChFeGVjU3RhdGUqLCBKU1ZhbHVlIGtleSk7CisgICAgSlNWYWx1ZSB0cmFuc2xh
dGUoRXhlY1N0YXRlKiwgSlNWYWx1ZSBrZXksIEpTVmFsdWUgcGF5bG9hZCk7CisgICAgSlNWYWx1
ZSBpbnN0YW50aWF0ZShFeGVjU3RhdGUqLCBKU1ZhbHVlIGtleSwgSlNWYWx1ZSBzb3VyY2UpOwor
CisgICAgc3RhdGljIGJvb2wgZ2V0T3duUHJvcGVydHlTbG90KEpTT2JqZWN0KiwgRXhlY1N0YXRl
KiwgUHJvcGVydHlOYW1lLCBQcm9wZXJ0eVNsb3QmKTsKKworcHJvdGVjdGVkOgorICAgIHZvaWQg
ZmluaXNoQ3JlYXRpb24oVk0mLCBKU0dsb2JhbE9iamVjdCopOworfTsKKworfSAvLyBuYW1lc3Bh
Y2UgSlNDCisKKyNlbmRpZiAvLyBNb2R1bGVMb2FkZXJPYmplY3RfaApkaWZmIC0tZ2l0IGEvU291
cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvT3B0aW9ucy5oIGIvU291cmNlL0phdmFTY3JpcHRD
b3JlL3J1bnRpbWUvT3B0aW9ucy5oCmluZGV4IDFhNjU1NWVkNmFhZGE4MTczZmJkZTA0ZjFmNTlh
NGQxY2YzYTAwODkuLjFhNGQ3MWQxMzk0NGViYzM0Y2Q0NTM2NmFlYTFkNDI2M2VhNWI5OGYgMTAw
NjQ0Ci0tLSBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL09wdGlvbnMuaAorKysgYi9T
b3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9PcHRpb25zLmgKQEAgLTMzMSw2ICszMzEsOCBA
QCB0eXBlZGVmIGNvbnN0IGNoYXIqIG9wdGlvblN0cmluZzsKICAgICB2KHVuc2lnbmVkLCB3YXRj
aGRvZywgMCwgIndhdGNoZG9nIHRpbWVvdXQgKDAgPSBEaXNhYmxlZCwgTiA9IGEgdGltZW91dCBw
ZXJpb2Qgb2YgTiBtaWxsaXNlY29uZHMpIikgXAogICAgIFwKICAgICB2KGJvb2wsIGR1bXBNb2R1
bGVSZWNvcmQsIGZhbHNlLCBudWxscHRyKSBcCisgICAgdihib29sLCBkdW1wTW9kdWxlTG9hZGlu
Z1N0YXRlLCBmYWxzZSwgbnVsbHB0cikgXAorICAgIHYoYm9vbCwgZXhwb3NlSW50ZXJuYWxNb2R1
bGVMb2FkZXIsIGZhbHNlLCAiZXhwb3NlIHRoZSBpbnRlcm5hbCBtb2R1bGUgbG9hZGVyIG9iamVj
dCB0byB0aGUgZ2xvYmFsIHNwYWNlIGZvciBkZWJ1Z2dpbmciKSBcCiAKIGNsYXNzIE9wdGlvbnMg
ewogcHVibGljOgpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvYmluZGluZ3MvanMvSlNET01X
aW5kb3dCYXNlLmNwcCBiL1NvdXJjZS9XZWJDb3JlL2JpbmRpbmdzL2pzL0pTRE9NV2luZG93QmFz
ZS5jcHAKaW5kZXggOWFiMGE4ZjBkMGZiZDc4ZTVlNTdkNTgwNDc3ZTY1NWNiODk1OTVkMS4uYTI5
MGRkYzllNTgxYWNkNjM0MzAxNzAwYmFmODI3Y2ExYTRlZmQwMiAxMDA2NDQKLS0tIGEvU291cmNl
L1dlYkNvcmUvYmluZGluZ3MvanMvSlNET01XaW5kb3dCYXNlLmNwcAorKysgYi9Tb3VyY2UvV2Vi
Q29yZS9iaW5kaW5ncy9qcy9KU0RPTVdpbmRvd0Jhc2UuY3BwCkBAIC01Niw3ICs1Niw3IEBAIHN0
YXRpYyBib29sIHNob3VsZEFsbG93QWNjZXNzRnJvbShjb25zdCBKU0dsb2JhbE9iamVjdCogdGhp
c09iamVjdCwgRXhlY1N0YXRlKiBlCiAKIGNvbnN0IENsYXNzSW5mbyBKU0RPTVdpbmRvd0Jhc2U6
OnNfaW5mbyA9IHsgIldpbmRvdyIsICZKU0RPTUdsb2JhbE9iamVjdDo6c19pbmZvLCAwLCBDUkVB
VEVfTUVUSE9EX1RBQkxFKEpTRE9NV2luZG93QmFzZSkgfTsKIAotY29uc3QgR2xvYmFsT2JqZWN0
TWV0aG9kVGFibGUgSlNET01XaW5kb3dCYXNlOjpzX2dsb2JhbE9iamVjdE1ldGhvZFRhYmxlID0g
eyAmc2hvdWxkQWxsb3dBY2Nlc3NGcm9tLCAmc3VwcG9ydHNQcm9maWxpbmcsICZzdXBwb3J0c1Jp
Y2hTb3VyY2VJbmZvLCAmc2hvdWxkSW50ZXJydXB0U2NyaXB0LCAmamF2YVNjcmlwdFJ1bnRpbWVG
bGFncywgJnF1ZXVlVGFza1RvRXZlbnRMb29wLCAmc2hvdWxkSW50ZXJydXB0U2NyaXB0QmVmb3Jl
VGltZW91dCB9OworY29uc3QgR2xvYmFsT2JqZWN0TWV0aG9kVGFibGUgSlNET01XaW5kb3dCYXNl
OjpzX2dsb2JhbE9iamVjdE1ldGhvZFRhYmxlID0geyAmc2hvdWxkQWxsb3dBY2Nlc3NGcm9tLCAm
c3VwcG9ydHNQcm9maWxpbmcsICZzdXBwb3J0c1JpY2hTb3VyY2VJbmZvLCAmc2hvdWxkSW50ZXJy
dXB0U2NyaXB0LCAmamF2YVNjcmlwdFJ1bnRpbWVGbGFncywgJnF1ZXVlVGFza1RvRXZlbnRMb29w
LCAmc2hvdWxkSW50ZXJydXB0U2NyaXB0QmVmb3JlVGltZW91dCwgbnVsbHB0ciwgbnVsbHB0ciwg
bnVsbHB0ciwgbnVsbHB0ciB9OwogCiBKU0RPTVdpbmRvd0Jhc2U6OkpTRE9NV2luZG93QmFzZShW
TSYgdm0sIFN0cnVjdHVyZSogc3RydWN0dXJlLCBQYXNzUmVmUHRyPERPTVdpbmRvdz4gd2luZG93
LCBKU0RPTVdpbmRvd1NoZWxsKiBzaGVsbCkKICAgICA6IEpTRE9NR2xvYmFsT2JqZWN0KHZtLCBz
dHJ1Y3R1cmUsICZzaGVsbC0+d29ybGQoKSwgJnNfZ2xvYmFsT2JqZWN0TWV0aG9kVGFibGUpCmRp
ZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9iaW5kaW5ncy9qcy9KU1dvcmtlckdsb2JhbFNjb3Bl
QmFzZS5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9iaW5kaW5ncy9qcy9KU1dvcmtlckdsb2JhbFNjb3Bl
QmFzZS5jcHAKaW5kZXggYWFhNWRiYTU1MTcxY2I5NTQxYmE2NWUxZDI0N2FiMjljOWQ5YzdjMy4u
NTA0NGJjMTc4MzUxM2I5YjFhMjZiZDNiZDFjYjVjMDBiNzBhMTBkMCAxMDA2NDQKLS0tIGEvU291
cmNlL1dlYkNvcmUvYmluZGluZ3MvanMvSlNXb3JrZXJHbG9iYWxTY29wZUJhc2UuY3BwCisrKyBi
L1NvdXJjZS9XZWJDb3JlL2JpbmRpbmdzL2pzL0pTV29ya2VyR2xvYmFsU2NvcGVCYXNlLmNwcApA
QCAtNDMsNyArNDMsNyBAQCBuYW1lc3BhY2UgV2ViQ29yZSB7CiAKIGNvbnN0IENsYXNzSW5mbyBK
U1dvcmtlckdsb2JhbFNjb3BlQmFzZTo6c19pbmZvID0geyAiV29ya2VyR2xvYmFsU2NvcGUiLCAm
SlNET01HbG9iYWxPYmplY3Q6OnNfaW5mbywgMCwgQ1JFQVRFX01FVEhPRF9UQUJMRShKU1dvcmtl
ckdsb2JhbFNjb3BlQmFzZSkgfTsKIAotY29uc3QgR2xvYmFsT2JqZWN0TWV0aG9kVGFibGUgSlNX
b3JrZXJHbG9iYWxTY29wZUJhc2U6OnNfZ2xvYmFsT2JqZWN0TWV0aG9kVGFibGUgPSB7ICZhbGxv
d3NBY2Nlc3NGcm9tLCAmc3VwcG9ydHNQcm9maWxpbmcsICZzdXBwb3J0c1JpY2hTb3VyY2VJbmZv
LCAmc2hvdWxkSW50ZXJydXB0U2NyaXB0LCAmamF2YVNjcmlwdFJ1bnRpbWVGbGFncywgJnF1ZXVl
VGFza1RvRXZlbnRMb29wLCAmc2hvdWxkSW50ZXJydXB0U2NyaXB0QmVmb3JlVGltZW91dCB9Owor
Y29uc3QgR2xvYmFsT2JqZWN0TWV0aG9kVGFibGUgSlNXb3JrZXJHbG9iYWxTY29wZUJhc2U6OnNf
Z2xvYmFsT2JqZWN0TWV0aG9kVGFibGUgPSB7ICZhbGxvd3NBY2Nlc3NGcm9tLCAmc3VwcG9ydHNQ
cm9maWxpbmcsICZzdXBwb3J0c1JpY2hTb3VyY2VJbmZvLCAmc2hvdWxkSW50ZXJydXB0U2NyaXB0
LCAmamF2YVNjcmlwdFJ1bnRpbWVGbGFncywgJnF1ZXVlVGFza1RvRXZlbnRMb29wLCAmc2hvdWxk
SW50ZXJydXB0U2NyaXB0QmVmb3JlVGltZW91dCwgbnVsbHB0ciwgbnVsbHB0ciwgbnVsbHB0ciwg
bnVsbHB0ciB9OwogCiBKU1dvcmtlckdsb2JhbFNjb3BlQmFzZTo6SlNXb3JrZXJHbG9iYWxTY29w
ZUJhc2UoSlNDOjpWTSYgdm0sIEpTQzo6U3RydWN0dXJlKiBzdHJ1Y3R1cmUsIFBhc3NSZWZQdHI8
V29ya2VyR2xvYmFsU2NvcGU+IGltcGwpCiAgICAgOiBKU0RPTUdsb2JhbE9iamVjdCh2bSwgc3Ry
dWN0dXJlLCAmbm9ybWFsV29ybGQodm0pLCAmc19nbG9iYWxPYmplY3RNZXRob2RUYWJsZSkK
</data>

          </attachment>
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>259455</attachid>
            <date>2015-08-20 00:32:40 -0700</date>
            <delta_ts>2015-08-20 14:04:51 -0700</delta_ts>
            <desc>Patch</desc>
            <filename>bug-147876-20150820003235.patch</filename>
            <type>text/plain</type>
            <size>127797</size>
            <attacher name="Yusuke Suzuki">ysuzuki</attacher>
            
              <data encoding="base64">U3VidmVyc2lvbiBSZXZpc2lvbjogMTg4NjgxCmRpZmYgLS1naXQgYS9Tb3VyY2UvSmF2YVNjcmlw
dENvcmUvQ2hhbmdlTG9nIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL0NoYW5nZUxvZwppbmRleCA3
MWEzNDc1ZTQ1NGM5MzE5NDA3M2U1Yjc3YjMzYmEzZTE5ZGFhYzM4Li5mNGQwN2FkMThjOTZmMzkw
ODczZDc1OGZkMmVmZjI5NzZkZTM3MDM5IDEwMDY0NAotLS0gYS9Tb3VyY2UvSmF2YVNjcmlwdENv
cmUvQ2hhbmdlTG9nCisrKyBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9DaGFuZ2VMb2cKQEAgLTEs
MyArMSwxNjEgQEAKKzIwMTUtMDgtMjAgIFl1c3VrZSBTdXp1a2kgIDx1dGF0YW5lLnRlYUBnbWFp
bC5jb20+CisKKyAgICAgICAgW0VTNl0gcHJvdG90eXBpbmcgbW9kdWxlIGxvYWRlciBpbiBKU0Mg
c2hlbGwKKyAgICAgICAgaHR0cHM6Ly9idWdzLndlYmtpdC5vcmcvc2hvd19idWcuY2dpP2lkPTE0
Nzg3NgorCisgICAgICAgIFJldmlld2VkIGJ5IE5PQk9EWSAoT09QUyEpLgorCisgICAgICAgIFRo
aXMgcGF0Y2ggaW1wbGVtZW50cyBFUzYgTW9kdWxlIExvYWRlciBwYXJ0LiBUaGUgaW1wbGVtZW50
YXRpb24gaXMgYmFzZWQgb24KKyAgICAgICAgdGhlIGxhdGVzdCBkcmFmdFsxLCAyXS4gVGhlIG5h
aXZlIGltcGxlbWVudGF0aW9uIHBvc2VzIHNldmVyYWwgcHJvYmxlbXMuCisgICAgICAgIFRoaXMg
cGF0Y2ggYXR0ZW1wdHMgdG8gc29sdmUgdGhlIHNwZWMgaXNzdWVzIGFuZCBwcm9wb3NlcyB0aGUg
Zml4WzMsIDQsIDVdLgorCisgICAgICAgIFdlIGNvbnN0cnVjdCB0aGUgSlNDIGludGVybmFsIG1v
ZHVsZSBsb2FkZXIgYmFzZWQgb24gdGhlIEVTNiBQcm9taXNlcy4KKyAgICAgICAgVGhlIGNoYWlu
IG9mIHRoZSBwcm9taXNlcyByZXByZXNlbnRzIHRoZSBkZXBlbmRlbmN5IGdyYXBoIG9mIHRoZSBt
b2R1bGVzIGFuZAorICAgICAgICBpdCBhdXRvbWF0aWNhbGx5IGVuYWJsZXMgYXN5bmNocm9ub3Vz
IG1vZHVsZSBmZXRjaGluZy4KKyAgICAgICAgVG8gbGV2ZXJhZ2UgdGhlIFByb21pc2VzIGludGVy
bmFsbHksIHdlIHVzZSB0aGUgSW50ZXJuYWxQcm9taXNlIGxhbmRlZCBpbiByMTg4NjgxLgorCisg
ICAgICAgIFRoZSBsb2FkZXIgaGFzIHNldmVyYWwgcGxhdGZvcm0tZGVwZW5kZW50IGhvb2tzLiBU
aGUgcGxhdGZvcm0gY2FuIGltcGxlbWVudAorICAgICAgICB0aGVzZSBob29rcyB0byBwcm92aWRl
IHRoZSBmdW5jdGlvbmFsaXR5IG1pc3NpbmcgaW4gdGhlIG1vZHVsZSBsb2FkZXJzLCBsaWtlCisg
ICAgICAgICJob3cgdG8gZmV0Y2ggdGhlIHJlc291cmNlcyIuIFRoZSBtZXRob2QgdGFibGUgb2Yg
dGhlIEpTR2xvYmFsT2JqZWN0IGlzIGV4dGVuZGVkCisgICAgICAgIHRvIGFjY2VwdCB0aGVzZSBo
b29rcyBmcm9tIHRoZSBwbGF0Zm9ybS4KKworICAgICAgICBUaGlzIHBhdGNoIGZvY3VzIG9uIHRo
ZSBsb2FkaW5nIHBhcnQuIFNvIHdlIGRvbid0IGNyZWF0ZSB0aGUgbW9kdWxlIGVudmlyb25tZW50
CisgICAgICAgIGFuZCBkb24ndCBsaW5rIHRoZSBtb2R1bGVzIHlldC4KKworICAgICAgICBUbyB0
ZXN0IHRoZSBjdXJyZW50IG1vZHVsZSBwcm9ncmVzcyBlYXNpbHksIHdlIGFkZCB0aGUgYC1tYCBv
cHRpb24gdG8gdGhlIEpTQyBzaGVsbC4KKyAgICAgICAgV2hlbiB0aGlzIG9wdGlvbiBpcyBzcGVj
aWZpZWQsIHdlIGxvYWQgdGhlIGdpdmVuIHNjcmlwdCBhcyB0aGUgbW9kdWxlLiBBbmQgdG8gdXNl
CisgICAgICAgIHRoZSBtb2R1bGUgbG9hZGluZyBpbnNpZGUgdGhlIEpTQyBzaGVsbCwgd2UgYWRk
ZWQgdGhlIHNpbXBsZSBsb2FkZXIgaG9vayBmb3IgZmV0Y2hpbmcuCisgICAgICAgIEl0IGZldGNo
ZXMgdGhlIG1vZHVsZSBjb250ZW50IGZyb20gdGhlIGZpbGUgc3lzdGVtLgorCisgICAgICAgIEFu
ZCB0byB1c2UgdGhlIEVTNiBNYXAgaW4gdGhlIExvYWRlciBpbXBsZW1lbnRhdGlvbiwgd2UgYWRk
ZWQgQGdldCBhbmQgQHNldCBtZXRob2RzIHRvIHRoZSBNYXAuCisgICAgICAgIEJ1dCBpdCBjb25m
bGljdHMgd2l0aCB0aGUgZXhpc3RpbmcgYGdldFByaXZhdGVOYW1lYCBtZXRob2QuIFJlbmFtZSBp
dCB0byBgbG9va1VwUHJpdmF0ZU5hbWVgLgorCisgICAgICAgIFsxXTogaHR0cHM6Ly93aGF0d2cu
Z2l0aHViLmlvL2xvYWRlci8KKyAgICAgICAgWzJdOiBodHRwczovL2dpdGh1Yi5jb20vd2hhdHdn
L2xvYWRlci9jb21taXQvMjE0YzdhNjYyNWI0NDViZGY0MTFjMzk5ODRmMzZmMDExMzlhMjRiZQor
ICAgICAgICBbM106IGh0dHBzOi8vZ2l0aHViLmNvbS93aGF0d2cvbG9hZGVyL3B1bGwvNjYKKyAg
ICAgICAgWzRdOiBodHRwczovL2dpdGh1Yi5jb20vd2hhdHdnL2xvYWRlci9wdWxsLzY3CisgICAg
ICAgIFs1XTogaHR0cHM6Ly9naXRodWIuY29tL3doYXR3Zy9sb2FkZXIvaXNzdWVzLzY4CisgICAg
ICAgIFs2XTogaHR0cHM6Ly9idWdzLndlYmtpdC5vcmcvc2hvd19idWcuY2dpP2lkPTE0ODEzNgor
CisgICAgICAgICogQ01ha2VMaXN0cy50eHQ6CisgICAgICAgICogRGVyaXZlZFNvdXJjZXMubWFr
ZToKKyAgICAgICAgKiBKYXZhU2NyaXB0Q29yZS52Y3hwcm9qL0phdmFTY3JpcHRDb3JlLnZjeHBy
b2o6CisgICAgICAgICogSmF2YVNjcmlwdENvcmUudmN4cHJvai9KYXZhU2NyaXB0Q29yZS52Y3hw
cm9qLmZpbHRlcnM6CisgICAgICAgICogSmF2YVNjcmlwdENvcmUueGNvZGVwcm9qL3Byb2plY3Qu
cGJ4cHJvajoKKyAgICAgICAgKiBidWlsdGlucy9CdWlsdGluTmFtZXMuaDoKKyAgICAgICAgKEpT
Qzo6QnVpbHRpbk5hbWVzOjpsb29rVXBQcml2YXRlTmFtZSk6CisgICAgICAgIChKU0M6OkJ1aWx0
aW5OYW1lczo6bG9va1VwUHVibGljTmFtZSk6CisgICAgICAgIChKU0M6OkJ1aWx0aW5OYW1lczo6
Z2V0UHJpdmF0ZU5hbWUpOiBEZWxldGVkLgorICAgICAgICAoSlNDOjpCdWlsdGluTmFtZXM6Omdl
dFB1YmxpY05hbWUpOiBEZWxldGVkLgorICAgICAgICAqIGJ1aWx0aW5zL01vZHVsZUxvYWRlck9i
amVjdC5qczogQWRkZWQuCisgICAgICAgIChzZXRTdGF0ZVRvTWF4KToKKyAgICAgICAgKG5ld1Jl
Z2lzdHJ5RW50cnkpOgorICAgICAgICAoZm9yY2VGdWxmaWxsUHJvbWlzZSk6CisgICAgICAgIChm
dWxmaWxsRmV0Y2gpOgorICAgICAgICAoZnVsZmlsbFRyYW5zbGF0ZSk6CisgICAgICAgIChmdWxm
aWxsSW5zdGFudGlhdGUpOgorICAgICAgICAoaW5zdGFudGlhdGlvbik6CisgICAgICAgIChyZXF1
ZXN0RmV0Y2gpOgorICAgICAgICAocmVxdWVzdFRyYW5zbGF0ZSk6CisgICAgICAgIChyZXF1ZXN0
SW5zdGFudGlhdGUpOgorICAgICAgICAocmVxdWVzdFJlc29sdmVEZXBlbmRlbmNpZXMucmVzb2x2
ZURlcGVuZGVuY2llc1Byb21pc2UudGhpcy5yZXF1ZXN0SW5zdGFudGlhdGUudGhlbi4pOgorICAg
ICAgICAocmVxdWVzdFJlc29sdmVEZXBlbmRlbmNpZXMucmVzb2x2ZURlcGVuZGVuY2llc1Byb21p
c2UudGhpcy5yZXF1ZXN0SW5zdGFudGlhdGUudGhlbik6CisgICAgICAgIChyZXF1ZXN0UmVzb2x2
ZURlcGVuZGVuY2llcyk6CisgICAgICAgIChyZXF1ZXN0SW5zdGFudGlhdGVBbGwpOgorICAgICAg
ICAocHJvdmlkZSk6CisgICAgICAgICoganNjLmNwcDoKKyAgICAgICAgKHN0cmluZ0Zyb21VVEYp
OgorICAgICAgICAoanNjU291cmNlKToKKyAgICAgICAgKEdsb2JhbE9iamVjdDo6bG9hZGVyRmV0
Y2gpOgorICAgICAgICAoZnVuY3Rpb25DaGVja01vZHVsZVN5bnRheCk6CisgICAgICAgIChkdW1w
RXhjZXB0aW9uKToKKyAgICAgICAgKHJ1bldpdGhTY3JpcHRzKToKKyAgICAgICAgKHByaW50VXNh
Z2VTdGF0ZW1lbnQpOgorICAgICAgICAoQ29tbWFuZExpbmU6OnBhcnNlQXJndW1lbnRzKToKKyAg
ICAgICAgKGpzY21haW4pOgorICAgICAgICAoQ29tbWFuZExpbmU6OkNvbW1hbmRMaW5lKTogRGVs
ZXRlZC4KKyAgICAgICAgKiBwYXJzZXIvTGV4ZXIuY3BwOgorICAgICAgICAoSlNDOjpMZXhlcjxM
Q2hhcj46OnBhcnNlSWRlbnRpZmllcik6CisgICAgICAgIChKU0M6OkxleGVyPFVDaGFyPjo6cGFy
c2VJZGVudGlmaWVyKToKKyAgICAgICAgKiBwYXJzZXIvTW9kdWxlQW5hbHl6ZXIuY3BwOgorICAg
ICAgICAoSlNDOjpNb2R1bGVBbmFseXplcjo6TW9kdWxlQW5hbHl6ZXIpOgorICAgICAgICAoSlND
OjpNb2R1bGVBbmFseXplcjo6ZXhwb3J0VmFyaWFibGUpOgorICAgICAgICAoSlNDOjpNb2R1bGVB
bmFseXplcjo6YW5hbHl6ZSk6CisgICAgICAgICogcGFyc2VyL01vZHVsZUFuYWx5emVyLmg6Cisg
ICAgICAgIChKU0M6Ok1vZHVsZUFuYWx5emVyOjptb2R1bGVSZWNvcmQpOgorICAgICAgICAqIHBh
cnNlci9Nb2R1bGVSZWNvcmQuY3BwOgorICAgICAgICAoSlNDOjpwcmludGFibGVOYW1lKTogRGVs
ZXRlZC4KKyAgICAgICAgKEpTQzo6TW9kdWxlUmVjb3JkOjpkdW1wKTogRGVsZXRlZC4KKyAgICAg
ICAgKiBwYXJzZXIvTW9kdWxlUmVjb3JkLmg6CisgICAgICAgIChKU0M6Ok1vZHVsZVJlY29yZDo6
SW1wb3J0RW50cnk6OmlzTmFtZXNwYWNlKTogRGVsZXRlZC4KKyAgICAgICAgKEpTQzo6TW9kdWxl
UmVjb3JkOjpjcmVhdGUpOiBEZWxldGVkLgorICAgICAgICAoSlNDOjpNb2R1bGVSZWNvcmQ6OmFw
cGVuZFJlcXVlc3RlZE1vZHVsZSk6IERlbGV0ZWQuCisgICAgICAgIChKU0M6Ok1vZHVsZVJlY29y
ZDo6YWRkSW1wb3J0RW50cnkpOiBEZWxldGVkLgorICAgICAgICAoSlNDOjpNb2R1bGVSZWNvcmQ6
OmFkZEV4cG9ydEVudHJ5KTogRGVsZXRlZC4KKyAgICAgICAgKEpTQzo6TW9kdWxlUmVjb3JkOjph
ZGRTdGFyRXhwb3J0RW50cnkpOiBEZWxldGVkLgorICAgICAgICAqIHBhcnNlci9Ob2Rlcy5oOgor
ICAgICAgICAqIHBhcnNlci9Ob2Rlc0FuYWx5emVNb2R1bGUuY3BwOgorICAgICAgICAoSlNDOjpJ
bXBvcnREZWNsYXJhdGlvbk5vZGU6OmFuYWx5emVNb2R1bGUpOgorICAgICAgICAoSlNDOjpFeHBv
cnRBbGxEZWNsYXJhdGlvbk5vZGU6OmFuYWx5emVNb2R1bGUpOgorICAgICAgICAoSlNDOjpFeHBv
cnROYW1lZERlY2xhcmF0aW9uTm9kZTo6YW5hbHl6ZU1vZHVsZSk6CisgICAgICAgICogcnVudGlt
ZS9Db21tb25JZGVudGlmaWVycy5jcHA6CisgICAgICAgIChKU0M6OkNvbW1vbklkZW50aWZpZXJz
Ojpsb29rVXBQcml2YXRlTmFtZSk6CisgICAgICAgIChKU0M6OkNvbW1vbklkZW50aWZpZXJzOjps
b29rVXBQdWJsaWNOYW1lKToKKyAgICAgICAgKEpTQzo6Q29tbW9uSWRlbnRpZmllcnM6OmdldFBy
aXZhdGVOYW1lKTogRGVsZXRlZC4KKyAgICAgICAgKEpTQzo6Q29tbW9uSWRlbnRpZmllcnM6Omdl
dFB1YmxpY05hbWUpOiBEZWxldGVkLgorICAgICAgICAqIHJ1bnRpbWUvQ29tbW9uSWRlbnRpZmll
cnMuaDoKKyAgICAgICAgKiBydW50aW1lL0NvbXBsZXRpb24uY3BwOgorICAgICAgICAoSlNDOjpj
aGVja01vZHVsZVN5bnRheCk6CisgICAgICAgIChKU0M6OmV2YWx1YXRlTW9kdWxlKToKKyAgICAg
ICAgKiBydW50aW1lL0NvbXBsZXRpb24uaDoKKyAgICAgICAgKiBydW50aW1lL0V4Y2VwdGlvbkhl
bHBlcnMuY3BwOgorICAgICAgICAoSlNDOjpjcmVhdGVVbmRlZmluZWRWYXJpYWJsZUVycm9yKToK
KyAgICAgICAgKiBydW50aW1lL0lkZW50aWZpZXIuaDoKKyAgICAgICAgKiBydW50aW1lL0pTR2xv
YmFsT2JqZWN0LmNwcDoKKyAgICAgICAgKEpTQzo6SlNHbG9iYWxPYmplY3Q6OmluaXQpOgorICAg
ICAgICAoSlNDOjpKU0dsb2JhbE9iamVjdDo6dmlzaXRDaGlsZHJlbik6CisgICAgICAgICogcnVu
dGltZS9KU0dsb2JhbE9iamVjdC5oOgorICAgICAgICAoSlNDOjpKU0dsb2JhbE9iamVjdDo6bW9k
dWxlTG9hZGVyKToKKyAgICAgICAgKEpTQzo6SlNHbG9iYWxPYmplY3Q6Om1vZHVsZVJlY29yZFN0
cnVjdHVyZSk6CisgICAgICAgICogcnVudGltZS9KU01vZHVsZVJlY29yZC5jcHA6IFJlbmFtZWQg
ZnJvbSBTb3VyY2UvSmF2YVNjcmlwdENvcmUvcGFyc2VyL01vZHVsZVJlY29yZC5jcHAuCisgICAg
ICAgIChKU0M6OkpTTW9kdWxlUmVjb3JkOjpkZXN0cm95KToKKyAgICAgICAgKEpTQzo6SlNNb2R1
bGVSZWNvcmQ6OmZpbmlzaENyZWF0aW9uKToKKyAgICAgICAgKEpTQzo6cHJpbnRhYmxlTmFtZSk6
CisgICAgICAgIChKU0M6OkpTTW9kdWxlUmVjb3JkOjpkdW1wKToKKyAgICAgICAgKiBydW50aW1l
L0pTTW9kdWxlUmVjb3JkLmg6IFJlbmFtZWQgZnJvbSBTb3VyY2UvSmF2YVNjcmlwdENvcmUvcGFy
c2VyL01vZHVsZVJlY29yZC5oLgorICAgICAgICAoSlNDOjpKU01vZHVsZVJlY29yZDo6SW1wb3J0
RW50cnk6OmlzTmFtZXNwYWNlKToKKyAgICAgICAgKEpTQzo6SlNNb2R1bGVSZWNvcmQ6OmNyZWF0
ZVN0cnVjdHVyZSk6CisgICAgICAgIChKU0M6OkpTTW9kdWxlUmVjb3JkOjpjcmVhdGUpOgorICAg
ICAgICAoSlNDOjpKU01vZHVsZVJlY29yZDo6cmVxdWVzdGVkTW9kdWxlcyk6CisgICAgICAgIChK
U0M6OkpTTW9kdWxlUmVjb3JkOjpKU01vZHVsZVJlY29yZCk6CisgICAgICAgIChKU0M6OkpTTW9k
dWxlUmVjb3JkOjphcHBlbmRSZXF1ZXN0ZWRNb2R1bGUpOgorICAgICAgICAoSlNDOjpKU01vZHVs
ZVJlY29yZDo6YWRkSW1wb3J0RW50cnkpOgorICAgICAgICAoSlNDOjpKU01vZHVsZVJlY29yZDo6
YWRkRXhwb3J0RW50cnkpOgorICAgICAgICAoSlNDOjpKU01vZHVsZVJlY29yZDo6YWRkU3RhckV4
cG9ydEVudHJ5KToKKyAgICAgICAgKiBydW50aW1lL01hcFByb3RvdHlwZS5jcHA6CisgICAgICAg
IChKU0M6Ok1hcFByb3RvdHlwZTo6ZmluaXNoQ3JlYXRpb24pOgorICAgICAgICAqIHJ1bnRpbWUv
TW9kdWxlTG9hZGVyT2JqZWN0LmNwcDogQWRkZWQuCisgICAgICAgIChKU0M6Ok1vZHVsZUxvYWRl
ck9iamVjdDo6TW9kdWxlTG9hZGVyT2JqZWN0KToKKyAgICAgICAgKEpTQzo6TW9kdWxlTG9hZGVy
T2JqZWN0OjpmaW5pc2hDcmVhdGlvbik6CisgICAgICAgIChKU0M6Ok1vZHVsZUxvYWRlck9iamVj
dDo6Z2V0T3duUHJvcGVydHlTbG90KToKKyAgICAgICAgKEpTQzo6cHJpbnRhYmxlTW9kdWxlS2V5
KToKKyAgICAgICAgKEpTQzo6TW9kdWxlTG9hZGVyT2JqZWN0Ojpwcm92aWRlKToKKyAgICAgICAg
KEpTQzo6TW9kdWxlTG9hZGVyT2JqZWN0OjpyZXF1ZXN0SW5zdGFudGlhdGVBbGwpOgorICAgICAg
ICAoSlNDOjpNb2R1bGVMb2FkZXJPYmplY3Q6OnJlc29sdmUpOgorICAgICAgICAoSlNDOjpNb2R1
bGVMb2FkZXJPYmplY3Q6OmZldGNoKToKKyAgICAgICAgKEpTQzo6TW9kdWxlTG9hZGVyT2JqZWN0
Ojp0cmFuc2xhdGUpOgorICAgICAgICAoSlNDOjpNb2R1bGVMb2FkZXJPYmplY3Q6Omluc3RhbnRp
YXRlKToKKyAgICAgICAgKEpTQzo6bW9kdWxlTG9hZGVyT2JqZWN0UGFyc2VNb2R1bGUpOgorICAg
ICAgICAoSlNDOjptb2R1bGVMb2FkZXJPYmplY3RSZXF1ZXN0ZWRNb2R1bGVzKToKKyAgICAgICAg
KEpTQzo6bW9kdWxlTG9hZGVyT2JqZWN0UmVzb2x2ZSk6CisgICAgICAgIChKU0M6Om1vZHVsZUxv
YWRlck9iamVjdEZldGNoKToKKyAgICAgICAgKEpTQzo6bW9kdWxlTG9hZGVyT2JqZWN0VHJhbnNs
YXRlKToKKyAgICAgICAgKEpTQzo6bW9kdWxlTG9hZGVyT2JqZWN0SW5zdGFudGlhdGUpOgorICAg
ICAgICAqIHJ1bnRpbWUvTW9kdWxlTG9hZGVyT2JqZWN0Lmg6IEFkZGVkLgorICAgICAgICAoSlND
OjpNb2R1bGVMb2FkZXJPYmplY3Q6OmNyZWF0ZSk6CisgICAgICAgIChKU0M6Ok1vZHVsZUxvYWRl
ck9iamVjdDo6Y3JlYXRlU3RydWN0dXJlKToKKyAgICAgICAgKiBydW50aW1lL09wdGlvbnMuaDoK
KwogMjAxNS0wOC0xOSAgWXVzdWtlIFN1enVraSAgPHV0YXRhbmUudGVhQGdtYWlsLmNvbT4KIAog
ICAgICAgICBBZGQgSW50ZXJuYWxQcm9taXNlIHRvIHVzZSBQcm9taXNlcyBzYWZlbHkgaW4gdGhl
IGludGVybmFscwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvQ2hhbmdlTG9nIGIvU291cmNl
L1dlYkNvcmUvQ2hhbmdlTG9nCmluZGV4IGQ5OGI0ZDI0ZWM5YzdiMWE4NzQ2OGYyNDM2ZTc0ZTU0
YTNlNjA1MTUuLmEwNzc3ODZlZmI2ZmY5OGVkYWQ1NzBlYzRjM2QwODYwNzM3ZDk2MTggMTAwNjQ0
Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL0NoYW5nZUxvZworKysgYi9Tb3VyY2UvV2ViQ29yZS9DaGFu
Z2VMb2cKQEAgLTEsMyArMSwxNSBAQAorMjAxNS0wOC0yMCAgWXVzdWtlIFN1enVraSAgPHV0YXRh
bmUudGVhQGdtYWlsLmNvbT4KKworICAgICAgICBbRVM2XSBwcm90b3R5cGluZyBtb2R1bGUgbG9h
ZGVyIGluIEpTQyBzaGVsbAorICAgICAgICBodHRwczovL2J1Z3Mud2Via2l0Lm9yZy9zaG93X2J1
Zy5jZ2k/aWQ9MTQ3ODc2CisKKyAgICAgICAgUmV2aWV3ZWQgYnkgTk9CT0RZIChPT1BTISkuCisK
KyAgICAgICAgSnVzdCBmaWxsIExvYWRlciBob29rcyB3aXRoIG51bGxwdHIuCisKKyAgICAgICAg
KiBiaW5kaW5ncy9qcy9KU0RPTVdpbmRvd0Jhc2UuY3BwOgorICAgICAgICAqIGJpbmRpbmdzL2pz
L0pTV29ya2VyR2xvYmFsU2NvcGVCYXNlLmNwcDoKKwogMjAxNS0wOC0xOSAgQnJlbnQgRnVsZ2hh
bSAgPGJmdWxnaGFtQGFwcGxlLmNvbT4KIAogICAgICAgICBbV2luXSBVbnJldmlld2VkIGJ1aWxk
IGZpeCBhZnRlciByMTg4NjYzLgpkaWZmIC0tZ2l0IGEvU291cmNlL0phdmFTY3JpcHRDb3JlL0NN
YWtlTGlzdHMudHh0IGIvU291cmNlL0phdmFTY3JpcHRDb3JlL0NNYWtlTGlzdHMudHh0CmluZGV4
IDA5ZDI0YmFiYjBhNDExMjQ1NzZhZWE0MWE4NWQyZTI4OTc2NjM5YjcuLjQ4YzcyMTZmYjk2NzRl
NGZlOGNkZWY2OTFjNjBlMzVlYTRhOTI2OGYgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9KYXZhU2NyaXB0
Q29yZS9DTWFrZUxpc3RzLnR4dAorKysgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvQ01ha2VMaXN0
cy50eHQKQEAgLTM4OSw3ICszODksNiBAQCBzZXQoSmF2YVNjcmlwdENvcmVfU09VUkNFUwogCiAg
ICAgcGFyc2VyL0xleGVyLmNwcAogICAgIHBhcnNlci9Nb2R1bGVBbmFseXplci5jcHAKLSAgICBw
YXJzZXIvTW9kdWxlUmVjb3JkLmNwcAogICAgIHBhcnNlci9Ob2Rlcy5jcHAKICAgICBwYXJzZXIv
Tm9kZXNBbmFseXplTW9kdWxlLmNwcAogICAgIHBhcnNlci9QYXJzZXIuY3BwCkBAIC01MzMsNiAr
NTMyLDcgQEAgc2V0KEphdmFTY3JpcHRDb3JlX1JVTlRJTUVfU09VUkNFUwogICAgIHJ1bnRpbWUv
SlNMb2NrLmNwcAogICAgIHJ1bnRpbWUvSlNNYXAuY3BwCiAgICAgcnVudGltZS9KU01hcEl0ZXJh
dG9yLmNwcAorICAgIHJ1bnRpbWUvSlNNb2R1bGVSZWNvcmQuY3BwCiAgICAgcnVudGltZS9KU05v
dEFuT2JqZWN0LmNwcAogICAgIHJ1bnRpbWUvSlNPTk9iamVjdC5jcHAKICAgICBydW50aW1lL0pT
T2JqZWN0LmNwcApAQCAtNTY3LDYgKzU2Nyw3IEBAIHNldChKYXZhU2NyaXB0Q29yZV9SVU5USU1F
X1NPVVJDRVMKICAgICBydW50aW1lL01hdGhDb21tb24uY3BwCiAgICAgcnVudGltZS9NYXRoT2Jq
ZWN0LmNwcAogICAgIHJ1bnRpbWUvTWVtb3J5U3RhdGlzdGljcy5jcHAKKyAgICBydW50aW1lL01v
ZHVsZUxvYWRlck9iamVjdC5jcHAKICAgICBydW50aW1lL05hdGl2ZUVycm9yQ29uc3RydWN0b3Iu
Y3BwCiAgICAgcnVudGltZS9OYXRpdmVFcnJvclByb3RvdHlwZS5jcHAKICAgICBydW50aW1lL051
bGxHZXR0ZXJGdW5jdGlvbi5jcHAKQEAgLTY2MCw2ICs2NjEsNyBAQCBzZXQoSmF2YVNjcmlwdENv
cmVfTFVUX0ZJTEVTCiAgICAgcnVudGltZS9KU09OT2JqZWN0LmNwcAogICAgIHJ1bnRpbWUvSlNQ
cm9taXNlQ29uc3RydWN0b3IuY3BwCiAgICAgcnVudGltZS9KU1Byb21pc2VQcm90b3R5cGUuY3Bw
CisgICAgcnVudGltZS9Nb2R1bGVMb2FkZXJPYmplY3QuY3BwCiAgICAgcnVudGltZS9OdW1iZXJD
b25zdHJ1Y3Rvci5jcHAKICAgICBydW50aW1lL051bWJlclByb3RvdHlwZS5jcHAKICAgICBydW50
aW1lL09iamVjdENvbnN0cnVjdG9yLmNwcApkaWZmIC0tZ2l0IGEvU291cmNlL0phdmFTY3JpcHRD
b3JlL0Rlcml2ZWRTb3VyY2VzLm1ha2UgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvRGVyaXZlZFNv
dXJjZXMubWFrZQppbmRleCA1ZTQ3YTRjZTE3MDBkMTdhOWI1MTdmZGJmMjgyNmNlOTlhODg3NmMx
Li5lMzY3MzA3Y2RjZGZkZGVmY2YzMjZiOWY5OWRmNTkwYjkwNDA0ZTQ2IDEwMDY0NAotLS0gYS9T
b3VyY2UvSmF2YVNjcmlwdENvcmUvRGVyaXZlZFNvdXJjZXMubWFrZQorKysgYi9Tb3VyY2UvSmF2
YVNjcmlwdENvcmUvRGVyaXZlZFNvdXJjZXMubWFrZQpAQCAtNTYsNiArNTYsNyBAQCBhbGwgOiBc
CiAgICAgSlNQcm9taXNlQ29uc3RydWN0b3IubHV0LmggXAogICAgIEtleXdvcmRMb29rdXAuaCBc
CiAgICAgTGV4ZXIubHV0LmggXAorICAgIE1vZHVsZUxvYWRlck9iamVjdC5sdXQuaCBcCiAgICAg
TnVtYmVyQ29uc3RydWN0b3IubHV0LmggXAogICAgIE51bWJlclByb3RvdHlwZS5sdXQuaCBcCiAg
ICAgT2JqZWN0Q29uc3RydWN0b3IubHV0LmggXApkaWZmIC0tZ2l0IGEvU291cmNlL0phdmFTY3Jp
cHRDb3JlL0phdmFTY3JpcHRDb3JlLnZjeHByb2ovSmF2YVNjcmlwdENvcmUudmN4cHJvaiBiL1Nv
dXJjZS9KYXZhU2NyaXB0Q29yZS9KYXZhU2NyaXB0Q29yZS52Y3hwcm9qL0phdmFTY3JpcHRDb3Jl
LnZjeHByb2oKaW5kZXggNmZkYmIxZjA5Yjg3OGE0NGQ0ODZjYjIyYzc3NDI5ZDU2NGQzY2FmMi4u
NzI5NWZkMDFlZmQ4MjAwNGYyMjUyYjdlYjY1MDIxMjA2OGU2Nzg5YSAxMDA2NDQKLS0tIGEvU291
cmNlL0phdmFTY3JpcHRDb3JlL0phdmFTY3JpcHRDb3JlLnZjeHByb2ovSmF2YVNjcmlwdENvcmUu
dmN4cHJvagorKysgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvSmF2YVNjcmlwdENvcmUudmN4cHJv
ai9KYXZhU2NyaXB0Q29yZS52Y3hwcm9qCkBAIC02NjIsNyArNjYyLDYgQEAKICAgICA8Q2xDb21w
aWxlIEluY2x1ZGU9Ii4uXGxsdm1cTExWTUFQSS5jcHAiIC8+CiAgICAgPENsQ29tcGlsZSBJbmNs
dWRlPSIuLlxwYXJzZXJcTGV4ZXIuY3BwIiAvPgogICAgIDxDbENvbXBpbGUgSW5jbHVkZT0iLi5c
cGFyc2VyXE1vZHVsZUFuYWx5emVyLmNwcCIgLz4KLSAgICA8Q2xDb21waWxlIEluY2x1ZGU9Ii4u
XHBhcnNlclxNb2R1bGVSZWNvcmQuY3BwIiAvPgogICAgIDxDbENvbXBpbGUgSW5jbHVkZT0iLi5c
cGFyc2VyXE5vZGVzLmNwcCIgLz4KICAgICA8Q2xDb21waWxlIEluY2x1ZGU9Ii4uXHBhcnNlclxO
b2Rlc0FuYWx5emVNb2R1bGUuY3BwIiAvPgogICAgIDxDbENvbXBpbGUgSW5jbHVkZT0iLi5ccGFy
c2VyXFBhcnNlci5jcHAiIC8+CkBAIC03ODMsNiArNzgyLDcgQEAKICAgICA8Q2xDb21waWxlIElu
Y2x1ZGU9Ii4uXHJ1bnRpbWVcSlNMb2NrLmNwcCIgLz4KICAgICA8Q2xDb21waWxlIEluY2x1ZGU9
Ii4uXHJ1bnRpbWVcSlNNYXAuY3BwIiAvPgogICAgIDxDbENvbXBpbGUgSW5jbHVkZT0iLi5ccnVu
dGltZVxKU01hcEl0ZXJhdG9yLmNwcCIgLz4KKyAgICA8Q2xDb21waWxlIEluY2x1ZGU9Ii4uXHJ1
bnRpbWVcSlNNb2R1bGVSZWNvcmQuY3BwIiAvPgogICAgIDxDbENvbXBpbGUgSW5jbHVkZT0iLi5c
cnVudGltZVxKU05vdEFuT2JqZWN0LmNwcCIgLz4KICAgICA8Q2xDb21waWxlIEluY2x1ZGU9Ii4u
XHJ1bnRpbWVcSlNPTk9iamVjdC5jcHAiIC8+CiAgICAgPENsQ29tcGlsZSBJbmNsdWRlPSIuLlxy
dW50aW1lXEpTT2JqZWN0LmNwcCIgLz4KQEAgLTgxOCw2ICs4MTgsNyBAQAogICAgIDxDbENvbXBp
bGUgSW5jbHVkZT0iLi5ccnVudGltZVxNYXRoQ29tbW9uLmNwcCIgLz4KICAgICA8Q2xDb21waWxl
IEluY2x1ZGU9Ii4uXHJ1bnRpbWVcTWF0aE9iamVjdC5jcHAiIC8+CiAgICAgPENsQ29tcGlsZSBJ
bmNsdWRlPSIuLlxydW50aW1lXE1lbW9yeVN0YXRpc3RpY3MuY3BwIiAvPgorICAgIDxDbENvbXBp
bGUgSW5jbHVkZT0iLi5ccnVudGltZVxNb2R1bGVMb2FkZXJPYmplY3QuY3BwIiAvPgogICAgIDxD
bENvbXBpbGUgSW5jbHVkZT0iLi5ccnVudGltZVxOYXRpdmVFcnJvckNvbnN0cnVjdG9yLmNwcCIg
Lz4KICAgICA8Q2xDb21waWxlIEluY2x1ZGU9Ii4uXHJ1bnRpbWVcTmF0aXZlRXJyb3JQcm90b3R5
cGUuY3BwIiAvPgogICAgIDxDbENvbXBpbGUgSW5jbHVkZT0iLi5ccnVudGltZVxOdWxsR2V0dGVy
RnVuY3Rpb24uY3BwIiAvPgpAQCAtOTMwLDYgKzkzMSw3IEBACiAgICAgPENsSW5jbHVkZSBJbmNs
dWRlPSIkKENvbmZpZ3VyYXRpb25CdWlsZERpcilcb2JqJChQbGF0Zm9ybUFyY2hpdGVjdHVyZSlc
JChQcm9qZWN0TmFtZSlcRGVyaXZlZFNvdXJjZXNcTnVtYmVyQ29uc3RydWN0b3IubHV0LmgiIC8+
CiAgICAgPENsSW5jbHVkZSBJbmNsdWRlPSIkKENvbmZpZ3VyYXRpb25CdWlsZERpcilcb2JqJChQ
bGF0Zm9ybUFyY2hpdGVjdHVyZSlcJChQcm9qZWN0TmFtZSlcRGVyaXZlZFNvdXJjZXNcTnVtYmVy
UHJvdG90eXBlLmx1dC5oIiAvPgogICAgIDxDbEluY2x1ZGUgSW5jbHVkZT0iJChDb25maWd1cmF0
aW9uQnVpbGREaXIpXG9iaiQoUGxhdGZvcm1BcmNoaXRlY3R1cmUpXCQoUHJvamVjdE5hbWUpXERl
cml2ZWRTb3VyY2VzXE9iamVjdENvbnN0cnVjdG9yLmx1dC5oIiAvPgorICAgIDxDbEluY2x1ZGUg
SW5jbHVkZT0iJChDb25maWd1cmF0aW9uQnVpbGREaXIpXG9iaiQoUGxhdGZvcm1BcmNoaXRlY3R1
cmUpXCQoUHJvamVjdE5hbWUpXERlcml2ZWRTb3VyY2VzXE1vZHVsZUxvYWRlck9iamVjdC5sdXQu
aCIgLz4KICAgICA8Q2xJbmNsdWRlIEluY2x1ZGU9IiQoQ29uZmlndXJhdGlvbkJ1aWxkRGlyKVxv
YmokKFBsYXRmb3JtQXJjaGl0ZWN0dXJlKVwkKFByb2plY3ROYW1lKVxEZXJpdmVkU291cmNlc1xS
ZWZsZWN0T2JqZWN0Lmx1dC5oIiAvPgogICAgIDxDbEluY2x1ZGUgSW5jbHVkZT0iJChDb25maWd1
cmF0aW9uQnVpbGREaXIpXG9iaiQoUGxhdGZvcm1BcmNoaXRlY3R1cmUpXCQoUHJvamVjdE5hbWUp
XERlcml2ZWRTb3VyY2VzXFJlZ0V4cENvbnN0cnVjdG9yLmx1dC5oIiAvPgogICAgIDxDbEluY2x1
ZGUgSW5jbHVkZT0iJChDb25maWd1cmF0aW9uQnVpbGREaXIpXG9iaiQoUGxhdGZvcm1BcmNoaXRl
Y3R1cmUpXCQoUHJvamVjdE5hbWUpXERlcml2ZWRTb3VyY2VzXFJlZ0V4cEppdFRhYmxlcy5oIiAv
PgpAQCAtMTQ2Miw3ICsxNDY0LDYgQEAKICAgICA8Q2xJbmNsdWRlIEluY2x1ZGU9Ii4uXHBhcnNl
clxBU1RCdWlsZGVyLmgiIC8+CiAgICAgPENsSW5jbHVkZSBJbmNsdWRlPSIuLlxwYXJzZXJcTGV4
ZXIuaCIgLz4KICAgICA8Q2xJbmNsdWRlIEluY2x1ZGU9Ii4uXHBhcnNlclxNb2R1bGVBbmFseXpl
ci5oIiAvPgotICAgIDxDbEluY2x1ZGUgSW5jbHVkZT0iLi5ccGFyc2VyXE1vZHVsZVJlY29yZC5o
IiAvPgogICAgIDxDbEluY2x1ZGUgSW5jbHVkZT0iLi5ccGFyc2VyXE5vZGVDb25zdHJ1Y3RvcnMu
aCIgLz4KICAgICA8Q2xJbmNsdWRlIEluY2x1ZGU9Ii4uXHBhcnNlclxOb2Rlcy5oIiAvPgogICAg
IDxDbEluY2x1ZGUgSW5jbHVkZT0iLi5ccGFyc2VyXFBhcnNlci5oIiAvPgpAQCAtMTYzMiw2ICsx
NjMzLDcgQEAKICAgICA8Q2xJbmNsdWRlIEluY2x1ZGU9Ii4uXHJ1bnRpbWVcSlNMb2NrLmgiIC8+
CiAgICAgPENsSW5jbHVkZSBJbmNsdWRlPSIuLlxydW50aW1lXEpTTWFwLmgiIC8+CiAgICAgPENs
SW5jbHVkZSBJbmNsdWRlPSIuLlxydW50aW1lXEpTTWFwSXRlcmF0b3IuaCIgLz4KKyAgICA8Q2xJ
bmNsdWRlIEluY2x1ZGU9Ii4uXHJ1bnRpbWVcSlNNb2R1bGVSZWNvcmQuaCIgLz4KICAgICA8Q2xJ
bmNsdWRlIEluY2x1ZGU9Ii4uXHJ1bnRpbWVcSlNOb3RBbk9iamVjdC5oIiAvPgogICAgIDxDbElu
Y2x1ZGUgSW5jbHVkZT0iLi5ccnVudGltZVxKU09OT2JqZWN0LmgiIC8+CiAgICAgPENsSW5jbHVk
ZSBJbmNsdWRlPSIuLlxydW50aW1lXEpTT2JqZWN0LmgiIC8+CkBAIC0xNjc3LDYgKzE2NzksNyBA
QAogICAgIDxDbEluY2x1ZGUgSW5jbHVkZT0iLi5ccnVudGltZVxNYXRoQ29tbW9uLmgiIC8+CiAg
ICAgPENsSW5jbHVkZSBJbmNsdWRlPSIuLlxydW50aW1lXE1hdGhPYmplY3QuaCIgLz4KICAgICA8
Q2xJbmNsdWRlIEluY2x1ZGU9Ii4uXHJ1bnRpbWVcTWVtb3J5U3RhdGlzdGljcy5oIiAvPgorICAg
IDxDbEluY2x1ZGUgSW5jbHVkZT0iLi5ccnVudGltZVxNb2R1bGVMb2FkZXJPYmplY3QuaCIgLz4K
ICAgICA8Q2xJbmNsdWRlIEluY2x1ZGU9Ii4uXHJ1bnRpbWVcTWljcm90YXNrLmgiIC8+CiAgICAg
PENsSW5jbHVkZSBJbmNsdWRlPSIuLlxydW50aW1lXE5hdGl2ZUVycm9yQ29uc3RydWN0b3IuaCIg
Lz4KICAgICA8Q2xJbmNsdWRlIEluY2x1ZGU9Ii4uXHJ1bnRpbWVcTmF0aXZlRXJyb3JQcm90b3R5
cGUuaCIgLz4KZGlmZiAtLWdpdCBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9KYXZhU2NyaXB0Q29y
ZS52Y3hwcm9qL0phdmFTY3JpcHRDb3JlLnZjeHByb2ouZmlsdGVycyBiL1NvdXJjZS9KYXZhU2Ny
aXB0Q29yZS9KYXZhU2NyaXB0Q29yZS52Y3hwcm9qL0phdmFTY3JpcHRDb3JlLnZjeHByb2ouZmls
dGVycwppbmRleCA2MmExMzdhMmNiNmNiMmE5MWQzNWYwZDU1MjU0OTdiNTQ4OTZlN2U5Li45YmRm
NTQ5NGNmMjA1ZDlhMmQyMjc1ZjM3MWFjZDFjYTZkZTBlNjEwIDEwMDY0NAotLS0gYS9Tb3VyY2Uv
SmF2YVNjcmlwdENvcmUvSmF2YVNjcmlwdENvcmUudmN4cHJvai9KYXZhU2NyaXB0Q29yZS52Y3hw
cm9qLmZpbHRlcnMKKysrIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL0phdmFTY3JpcHRDb3JlLnZj
eHByb2ovSmF2YVNjcmlwdENvcmUudmN4cHJvai5maWx0ZXJzCkBAIC00NTksOSArNDU5LDYgQEAK
ICAgICA8Q2xDb21waWxlIEluY2x1ZGU9Ii4uXHBhcnNlclxNb2R1bGVBbmFseXplci5jcHAiPgog
ICAgICAgPEZpbHRlcj5wYXJzZXI8L0ZpbHRlcj4KICAgICA8L0NsQ29tcGlsZT4KLSAgICA8Q2xD
b21waWxlIEluY2x1ZGU9Ii4uXHBhcnNlclxNb2R1bGVSZWNvcmQuY3BwIj4KLSAgICAgIDxGaWx0
ZXI+cGFyc2VyPC9GaWx0ZXI+Ci0gICAgPC9DbENvbXBpbGU+CiAgICAgPENsQ29tcGlsZSBJbmNs
dWRlPSIuLlxwYXJzZXJcTm9kZXMuY3BwIj4KICAgICAgIDxGaWx0ZXI+cGFyc2VyPC9GaWx0ZXI+
CiAgICAgPC9DbENvbXBpbGU+CkBAIC03MjYsNiArNzIzLDkgQEAKICAgICA8Q2xDb21waWxlIElu
Y2x1ZGU9Ii4uXHJ1bnRpbWVcSlNNYXAuY3BwIj4KICAgICAgIDxGaWx0ZXI+cnVudGltZTwvRmls
dGVyPgogICAgIDwvQ2xDb21waWxlPgorICAgIDxDbENvbXBpbGUgSW5jbHVkZT0iLi5ccnVudGlt
ZVxKU01vZHVsZVJlY29yZC5jcHAiPgorICAgICAgPEZpbHRlcj5ydW50aW1lPC9GaWx0ZXI+Cisg
ICAgPC9DbENvbXBpbGU+CiAgICAgPENsQ29tcGlsZSBJbmNsdWRlPSIuLlxydW50aW1lXEpTTm90
QW5PYmplY3QuY3BwIj4KICAgICAgIDxGaWx0ZXI+cnVudGltZTwvRmlsdGVyPgogICAgIDwvQ2xD
b21waWxlPgpAQCAtMTcxMCw2ICsxNzEwLDkgQEAKICAgICA8Q2xDb21waWxlIEluY2x1ZGU9Ii4u
XHJ1bnRpbWVcTWVtb3J5U3RhdGlzdGljcy5jcHAiPgogICAgICAgPEZpbHRlcj5ydW50aW1lPC9G
aWx0ZXI+CiAgICAgPC9DbENvbXBpbGU+CisgICAgPENsQ29tcGlsZSBJbmNsdWRlPSIuLlxydW50
aW1lXE1vZHVsZUxvYWRlck9iamVjdC5jcHAiPgorICAgICAgPEZpbHRlcj5ydW50aW1lPC9GaWx0
ZXI+CisgICAgPC9DbENvbXBpbGU+CiAgICAgPENsQ29tcGlsZSBJbmNsdWRlPSIuLlxieXRlY29k
ZVxDb21wbGV4R2V0U3RhdHVzLmNwcCI+CiAgICAgICA8RmlsdGVyPmJ5dGVjb2RlPC9GaWx0ZXI+
CiAgICAgPC9DbENvbXBpbGU+CkBAIC0yNTEwLDkgKzI1MTMsNiBAQAogICAgIDxDbEluY2x1ZGUg
SW5jbHVkZT0iLi5ccGFyc2VyXE1vZHVsZUFuYWx5emVyLmgiPgogICAgICAgPEZpbHRlcj5wYXJz
ZXI8L0ZpbHRlcj4KICAgICA8L0NsSW5jbHVkZT4KLSAgICA8Q2xJbmNsdWRlIEluY2x1ZGU9Ii4u
XHBhcnNlclxNb2R1bGVSZWNvcmQuaCI+Ci0gICAgICA8RmlsdGVyPnBhcnNlcjwvRmlsdGVyPgot
ICAgIDwvQ2xJbmNsdWRlPgogICAgIDxDbEluY2x1ZGUgSW5jbHVkZT0iLi5ccGFyc2VyXE5vZGVD
b25zdHJ1Y3RvcnMuaCI+CiAgICAgICA8RmlsdGVyPnBhcnNlcjwvRmlsdGVyPgogICAgIDwvQ2xJ
bmNsdWRlPgpAQCAtMzIyNSw2ICszMjI1LDkgQEAKICAgICA8Q2xJbmNsdWRlIEluY2x1ZGU9IiQo
Q29uZmlndXJhdGlvbkJ1aWxkRGlyKVxvYmokKFBsYXRmb3JtQXJjaGl0ZWN0dXJlKVwkKFByb2pl
Y3ROYW1lKVxEZXJpdmVkU291cmNlc1xMZXhlci5sdXQuaCI+CiAgICAgICA8RmlsdGVyPkRlcml2
ZWQgU291cmNlczwvRmlsdGVyPgogICAgIDwvQ2xJbmNsdWRlPgorICAgIDxDbEluY2x1ZGUgSW5j
bHVkZT0iJChDb25maWd1cmF0aW9uQnVpbGREaXIpXG9iaiQoUGxhdGZvcm1BcmNoaXRlY3R1cmUp
XCQoUHJvamVjdE5hbWUpXERlcml2ZWRTb3VyY2VzXE1vZHVsZUxvYWRlck9iamVjdC5sdXQuaCI+
CisgICAgICA8RmlsdGVyPkRlcml2ZWQgU291cmNlczwvRmlsdGVyPgorICAgIDwvQ2xJbmNsdWRl
PgogICAgIDxDbEluY2x1ZGUgSW5jbHVkZT0iJChDb25maWd1cmF0aW9uQnVpbGREaXIpXG9iaiQo
UGxhdGZvcm1BcmNoaXRlY3R1cmUpXCQoUHJvamVjdE5hbWUpXERlcml2ZWRTb3VyY2VzXE51bWJl
ckNvbnN0cnVjdG9yLmx1dC5oIj4KICAgICAgIDxGaWx0ZXI+RGVyaXZlZCBTb3VyY2VzPC9GaWx0
ZXI+CiAgICAgPC9DbEluY2x1ZGU+CkBAIC0zNDc3LDYgKzM0ODAsOSBAQAogICAgIDxDbEluY2x1
ZGUgSW5jbHVkZT0iLi5ccnVudGltZVxKU01hcC5oIj4KICAgICAgIDxGaWx0ZXI+cnVudGltZTwv
RmlsdGVyPgogICAgIDwvQ2xJbmNsdWRlPgorICAgIDxDbEluY2x1ZGUgSW5jbHVkZT0iLi5ccnVu
dGltZVxKU01vZHVsZVJlY29yZC5oIj4KKyAgICAgIDxGaWx0ZXI+cnVudGltZTwvRmlsdGVyPgor
ICAgIDwvQ2xJbmNsdWRlPgogICAgIDxDbEluY2x1ZGUgSW5jbHVkZT0iLi5ccnVudGltZVxKU1Nl
dC5oIj4KICAgICAgIDxGaWx0ZXI+cnVudGltZTwvRmlsdGVyPgogICAgIDwvQ2xJbmNsdWRlPgpA
QCAtNDI3Myw2ICs0Mjc5LDkgQEAKICAgICA8Q2xJbmNsdWRlIEluY2x1ZGU9Ii4uXHJ1bnRpbWVc
TWVtb3J5U3RhdGlzdGljcy5oIj4KICAgICAgIDxGaWx0ZXI+cnVudGltZTwvRmlsdGVyPgogICAg
IDwvQ2xJbmNsdWRlPgorICAgIDxDbEluY2x1ZGUgSW5jbHVkZT0iLi5ccnVudGltZVxNb2R1bGVM
b2FkZXJPYmplY3QuaCI+CisgICAgICA8RmlsdGVyPnJ1bnRpbWU8L0ZpbHRlcj4KKyAgICA8L0Ns
SW5jbHVkZT4KICAgICA8Q2xJbmNsdWRlIEluY2x1ZGU9Ii4uXGJ5dGVjb2RlXENvbXBsZXhHZXRT
dGF0dXMuaCI+CiAgICAgICA8RmlsdGVyPmJ5dGVjb2RlPC9GaWx0ZXI+CiAgICAgPC9DbEluY2x1
ZGU+CmRpZmYgLS1naXQgYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvSmF2YVNjcmlwdENvcmUueGNv
ZGVwcm9qL3Byb2plY3QucGJ4cHJvaiBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9KYXZhU2NyaXB0
Q29yZS54Y29kZXByb2ovcHJvamVjdC5wYnhwcm9qCmluZGV4IGEzNDAxNzIzODNkNDJlNjE4NTI0
OWVlZjg0NDEyNDUyMzZlYTY4YjguLjJhZWVhMGViZjZlODk4NTNkMGQwYjcxZGQ5YjE3YWMzYTgz
OTA2NGQgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9KYXZhU2NyaXB0Q29yZS54
Y29kZXByb2ovcHJvamVjdC5wYnhwcm9qCisrKyBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9KYXZh
U2NyaXB0Q29yZS54Y29kZXByb2ovcHJvamVjdC5wYnhwcm9qCkBAIC0xNzA5LDExICsxNzA5LDE2
IEBACiAJCUUzNTQ2MjJCMUI2MDY1RDEwMDU0NTM4NiAvKiBDb25zdHJ1Y3RBYmlsaXR5LmggaW4g
SGVhZGVycyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSBFMzU0NjIyQTFCNjA2
NUQxMDA1NDUzODYgLyogQ29uc3RydWN0QWJpbGl0eS5oICovOyBzZXR0aW5ncyA9IHtBVFRSSUJV
VEVTID0gKFByaXZhdGUsICk7IH07IH07CiAJCUUzNUUwMzVGMUI3QUI0M0UwMDczQUQyQSAvKiBJ
bnNwZWN0b3JJbnN0cnVtZW50YXRpb25PYmplY3QuY3BwIGluIFNvdXJjZXMgKi8gPSB7aXNhID0g
UEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gRTM1RTAzNUQxQjdBQjQzRTAwNzNBRDJBIC8qIEluc3Bl
Y3Rvckluc3RydW1lbnRhdGlvbk9iamVjdC5jcHAgKi87IH07CiAJCUUzNUUwMzYwMUI3QUI0M0Uw
MDczQUQyQSAvKiBJbnNwZWN0b3JJbnN0cnVtZW50YXRpb25PYmplY3QuaCBpbiBIZWFkZXJzICov
ID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IEUzNUUwMzVFMUI3QUI0M0UwMDczQUQy
QSAvKiBJbnNwZWN0b3JJbnN0cnVtZW50YXRpb25PYmplY3QuaCAqLzsgc2V0dGluZ3MgPSB7QVRU
UklCVVRFUyA9IChQcml2YXRlLCApOyB9OyB9OworCQlFMzU1RjM1MjFCN0RDODUzMDBDNTBEQzUg
LyogTW9kdWxlTG9hZGVyT2JqZWN0LmNwcCBpbiBTb3VyY2VzICovID0ge2lzYSA9IFBCWEJ1aWxk
RmlsZTsgZmlsZVJlZiA9IEUzNTVGMzUwMUI3REM4NTMwMEM1MERDNSAvKiBNb2R1bGVMb2FkZXJP
YmplY3QuY3BwICovOyB9OworCQlFMzU1RjM1MzFCN0RDODUzMDBDNTBEQzUgLyogTW9kdWxlTG9h
ZGVyT2JqZWN0LmggaW4gSGVhZGVycyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYg
PSBFMzU1RjM1MTFCN0RDODUzMDBDNTBEQzUgLyogTW9kdWxlTG9hZGVyT2JqZWN0LmggKi87IH07
CiAJCUUzNzk0RTc1MUI3N0VCOTcwMDU1NDNBRSAvKiBNb2R1bGVBbmFseXplci5jcHAgaW4gU291
cmNlcyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSBFMzc5NEU3MzFCNzdFQjk3
MDA1NTQzQUUgLyogTW9kdWxlQW5hbHl6ZXIuY3BwICovOyB9OwogCQlFMzc5NEU3NjFCNzdFQjk3
MDA1NTQzQUUgLyogTW9kdWxlQW5hbHl6ZXIuaCBpbiBIZWFkZXJzICovID0ge2lzYSA9IFBCWEJ1
aWxkRmlsZTsgZmlsZVJlZiA9IEUzNzk0RTc0MUI3N0VCOTcwMDU1NDNBRSAvKiBNb2R1bGVBbmFs
eXplci5oICovOyBzZXR0aW5ncyA9IHtBVFRSSUJVVEVTID0gKFByaXZhdGUsICk7IH07IH07Ci0J
CUUzOTYzQ0VEMUI3M0Y3NTAwMEVCNENFNSAvKiBNb2R1bGVSZWNvcmQuaCBpbiBIZWFkZXJzICov
ID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IEUzOTYzQ0VCMUI3M0Y3NTAwMEVCNENF
NSAvKiBNb2R1bGVSZWNvcmQuaCAqLzsgc2V0dGluZ3MgPSB7QVRUUklCVVRFUyA9IChQcml2YXRl
LCApOyB9OyB9OwogCQlFMzk2M0NFRTFCNzNGNzUwMDBFQjRDRTUgLyogTm9kZXNBbmFseXplTW9k
dWxlLmNwcCBpbiBTb3VyY2VzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IEUz
OTYzQ0VDMUI3M0Y3NTAwMEVCNENFNSAvKiBOb2Rlc0FuYWx5emVNb2R1bGUuY3BwICovOyB9Owog
CQlFM0MwOUY1NTFCNzk2OTJBMDBFRTM2QTIgLyogTW9kdWxlUmVjb3JkLmNwcCBpbiBTb3VyY2Vz
ICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IEUzQzA5RjU0MUI3OTY5MkEwMEVF
MzZBMiAvKiBNb2R1bGVSZWNvcmQuY3BwICovOyB9OworCQlFMzVFMDM1RjFCN0FCNDNFMDA3M0FE
MkEgLyogSW5zcGVjdG9ySW5zdHJ1bWVudGF0aW9uT2JqZWN0LmNwcCBpbiBTb3VyY2VzICovID0g
e2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IEUzNUUwMzVEMUI3QUI0M0UwMDczQUQyQSAv
KiBJbnNwZWN0b3JJbnN0cnVtZW50YXRpb25PYmplY3QuY3BwICovOyB9OworCQlFMzVFMDM2MDFC
N0FCNDNFMDA3M0FEMkEgLyogSW5zcGVjdG9ySW5zdHJ1bWVudGF0aW9uT2JqZWN0LmggaW4gSGVh
ZGVycyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSBFMzVFMDM1RTFCN0FCNDNF
MDA3M0FEMkEgLyogSW5zcGVjdG9ySW5zdHJ1bWVudGF0aW9uT2JqZWN0LmggKi87IHNldHRpbmdz
ID0ge0FUVFJJQlVURVMgPSAoUHJpdmF0ZSwgKTsgfTsgfTsKKwkJRTM5REE0QTYxQjdFOEI3QzAw
ODRGMzNBIC8qIEpTTW9kdWxlUmVjb3JkLmNwcCBpbiBTb3VyY2VzICovID0ge2lzYSA9IFBCWEJ1
aWxkRmlsZTsgZmlsZVJlZiA9IEUzOURBNEE0MUI3RThCN0MwMDg0RjMzQSAvKiBKU01vZHVsZVJl
Y29yZC5jcHAgKi87IH07CisJCUUzOURBNEE3MUI3RThCN0MwMDg0RjMzQSAvKiBKU01vZHVsZVJl
Y29yZC5oIGluIEhlYWRlcnMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gRTM5
REE0QTUxQjdFOEI3QzAwODRGMzNBIC8qIEpTTW9kdWxlUmVjb3JkLmggKi87IHNldHRpbmdzID0g
e0FUVFJJQlVURVMgPSAoUHJpdmF0ZSwgKTsgfTsgfTsKIAkJRTNFRjg4NzQxQjY2REYyMzAwM0Yy
NkNCIC8qIEpTUHJvcGVydHlOYW1lSXRlcmF0b3IuY3BwIGluIFNvdXJjZXMgKi8gPSB7aXNhID0g
UEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gRTNFRjg4NzIxQjY2REYyMzAwM0YyNkNCIC8qIEpTUHJv
cGVydHlOYW1lSXRlcmF0b3IuY3BwICovOyB9OwogCQlFM0VGODg3NTFCNjZERjIzMDAzRjI2Q0Ig
LyogSlNQcm9wZXJ0eU5hbWVJdGVyYXRvci5oIGluIEhlYWRlcnMgKi8gPSB7aXNhID0gUEJYQnVp
bGRGaWxlOyBmaWxlUmVmID0gRTNFRjg4NzMxQjY2REYyMzAwM0YyNkNCIC8qIEpTUHJvcGVydHlO
YW1lSXRlcmF0b3IuaCAqLzsgc2V0dGluZ3MgPSB7QVRUUklCVVRFUyA9IChQcml2YXRlLCApOyB9
OyB9OwogCQlFNDlEQzE2QjEyRUYyOTNFMDAxODRBMUYgLyogU291cmNlUHJvdmlkZXJDYWNoZS5j
cHAgaW4gU291cmNlcyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSBFNDlEQzE1
NTEyRUYyNzcyMDAxODRBMUYgLyogU291cmNlUHJvdmlkZXJDYWNoZS5jcHAgKi87IH07CkBAIC0z
NTU2LDExICszNTYxLDE3IEBACiAJCUUzNUUwMzVEMUI3QUI0M0UwMDczQUQyQSAvKiBJbnNwZWN0
b3JJbnN0cnVtZW50YXRpb25PYmplY3QuY3BwICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7
IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jcHAuY3Bw
OyBwYXRoID0gSW5zcGVjdG9ySW5zdHJ1bWVudGF0aW9uT2JqZWN0LmNwcDsgc291cmNlVHJlZSA9
ICI8Z3JvdXA+IjsgfTsKIAkJRTM1RTAzNUUxQjdBQjQzRTAwNzNBRDJBIC8qIEluc3BlY3Rvcklu
c3RydW1lbnRhdGlvbk9iamVjdC5oICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVF
bmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jLmg7IHBhdGggPSBJ
bnNwZWN0b3JJbnN0cnVtZW50YXRpb25PYmplY3QuaDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+Ijsg
fTsKIAkJRTM1RTAzNjExQjdBQjQ4NTAwNzNBRDJBIC8qIEluc3BlY3Rvckluc3RydW1lbnRhdGlv
bk9iamVjdC5qcyAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0
OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuamF2YXNjcmlwdDsgcGF0aCA9IEluc3Bl
Y3Rvckluc3RydW1lbnRhdGlvbk9iamVjdC5qczsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsK
KwkJRTM1NUYzNTAxQjdEQzg1MzAwQzUwREM1IC8qIE1vZHVsZUxvYWRlck9iamVjdC5jcHAgKi8g
PSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmls
ZVR5cGUgPSBzb3VyY2Vjb2RlLmNwcC5jcHA7IHBhdGggPSBNb2R1bGVMb2FkZXJPYmplY3QuY3Bw
OyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OworCQlFMzU1RjM1MTFCN0RDODUzMDBDNTBEQzUg
LyogTW9kdWxlTG9hZGVyT2JqZWN0LmggKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmls
ZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmMuaDsgcGF0aCA9
IE1vZHVsZUxvYWRlck9iamVjdC5oOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OwogCQlFMzc5
NEU3MzFCNzdFQjk3MDA1NTQzQUUgLyogTW9kdWxlQW5hbHl6ZXIuY3BwICovID0ge2lzYSA9IFBC
WEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gc291
cmNlY29kZS5jcHAuY3BwOyBwYXRoID0gTW9kdWxlQW5hbHl6ZXIuY3BwOyBzb3VyY2VUcmVlID0g
Ijxncm91cD4iOyB9OwogCQlFMzc5NEU3NDFCNzdFQjk3MDA1NTQzQUUgLyogTW9kdWxlQW5hbHl6
ZXIuaCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0
S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuYy5oOyBwYXRoID0gTW9kdWxlQW5hbHl6ZXIuaDsg
c291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKLQkJRTM5NjNDRUIxQjczRjc1MDAwRUI0Q0U1IC8q
IE1vZHVsZVJlY29yZC5oICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGlu
ZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jLmg7IHBhdGggPSBNb2R1bGVS
ZWNvcmQuaDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKIAkJRTM5NjNDRUMxQjczRjc1MDAw
RUI0Q0U1IC8qIE5vZGVzQW5hbHl6ZU1vZHVsZS5jcHAgKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVy
ZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmNw
cC5jcHA7IHBhdGggPSBOb2Rlc0FuYWx5emVNb2R1bGUuY3BwOyBzb3VyY2VUcmVlID0gIjxncm91
cD4iOyB9OwogCQlFM0MwOUY1NDFCNzk2OTJBMDBFRTM2QTIgLyogTW9kdWxlUmVjb3JkLmNwcCAq
LyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25G
aWxlVHlwZSA9IHNvdXJjZWNvZGUuY3BwLmNwcDsgcGF0aCA9IE1vZHVsZVJlY29yZC5jcHA7IHNv
dXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CisJCUUzNUUwMzVEMUI3QUI0M0UwMDczQUQyQSAvKiBJ
bnNwZWN0b3JJbnN0cnVtZW50YXRpb25PYmplY3QuY3BwICovID0ge2lzYSA9IFBCWEZpbGVSZWZl
cmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5j
cHAuY3BwOyBwYXRoID0gSW5zcGVjdG9ySW5zdHJ1bWVudGF0aW9uT2JqZWN0LmNwcDsgc291cmNl
VHJlZSA9ICI8Z3JvdXA+IjsgfTsKKwkJRTM1RTAzNUUxQjdBQjQzRTAwNzNBRDJBIC8qIEluc3Bl
Y3Rvckluc3RydW1lbnRhdGlvbk9iamVjdC5oICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7
IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jLmg7IHBh
dGggPSBJbnNwZWN0b3JJbnN0cnVtZW50YXRpb25PYmplY3QuaDsgc291cmNlVHJlZSA9ICI8Z3Jv
dXA+IjsgfTsKKwkJRTM1RTAzNjExQjdBQjQ4NTAwNzNBRDJBIC8qIEluc3BlY3Rvckluc3RydW1l
bnRhdGlvbk9iamVjdC5qcyAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2Rp
bmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuamF2YXNjcmlwdDsgcGF0aCA9
IEluc3BlY3Rvckluc3RydW1lbnRhdGlvbk9iamVjdC5qczsgc291cmNlVHJlZSA9ICI8Z3JvdXA+
IjsgfTsKKwkJRTM5REE0QTQxQjdFOEI3QzAwODRGMzNBIC8qIEpTTW9kdWxlUmVjb3JkLmNwcCAq
LyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25G
aWxlVHlwZSA9IHNvdXJjZWNvZGUuY3BwLmNwcDsgcGF0aCA9IEpTTW9kdWxlUmVjb3JkLmNwcDsg
c291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKKwkJRTM5REE0QTUxQjdFOEI3QzAwODRGMzNBIC8q
IEpTTW9kdWxlUmVjb3JkLmggKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29k
aW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmMuaDsgcGF0aCA9IEpTTW9k
dWxlUmVjb3JkLmg7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CiAJCUUzRUY4ODcyMUI2NkRG
MjMwMDNGMjZDQiAvKiBKU1Byb3BlcnR5TmFtZUl0ZXJhdG9yLmNwcCAqLyA9IHtpc2EgPSBQQlhG
aWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJj
ZWNvZGUuY3BwLmNwcDsgcGF0aCA9IEpTUHJvcGVydHlOYW1lSXRlcmF0b3IuY3BwOyBzb3VyY2VU
cmVlID0gIjxncm91cD4iOyB9OwogCQlFM0VGODg3MzFCNjZERjIzMDAzRjI2Q0IgLyogSlNQcm9w
ZXJ0eU5hbWVJdGVyYXRvci5oICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNv
ZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jLmg7IHBhdGggPSBKU1By
b3BlcnR5TmFtZUl0ZXJhdG9yLmg7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CiAJCUU0OURD
MTQ5MTJFRjI2MUEwMDE4NEExRiAvKiBTb3VyY2VQcm92aWRlckNhY2hlSXRlbS5oICovID0ge2lz
YSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBl
ID0gc291cmNlY29kZS5jLmg7IHBhdGggPSBTb3VyY2VQcm92aWRlckNhY2hlSXRlbS5oOyBzb3Vy
Y2VUcmVlID0gIjxncm91cD4iOyB9OwpAQCAtNDQ3NCw4ICs0NDg1LDYgQEAKIAkJCQlGNjkyQTg2
NjAyNTU1OTdEMDFGRjYwRjcgLyogTGV4ZXIuaCAqLywKIAkJCQlFMzc5NEU3MzFCNzdFQjk3MDA1
NTQzQUUgLyogTW9kdWxlQW5hbHl6ZXIuY3BwICovLAogCQkJCUUzNzk0RTc0MUI3N0VCOTcwMDU1
NDNBRSAvKiBNb2R1bGVBbmFseXplci5oICovLAotCQkJCUUzQzA5RjU0MUI3OTY5MkEwMEVFMzZB
MiAvKiBNb2R1bGVSZWNvcmQuY3BwICovLAotCQkJCUUzOTYzQ0VCMUI3M0Y3NTAwMEVCNENFNSAv
KiBNb2R1bGVSZWNvcmQuaCAqLywKIAkJCQk5MzBEQUQwMzBGQjFFQjFBMDA4MkQyMDUgLyogTm9k
ZUNvbnN0cnVjdG9ycy5oICovLAogCQkJCUY2OTJBODZEMDI1NTU5N0QwMUZGNjBGNyAvKiBOb2Rl
cy5jcHAgKi8sCiAJCQkJRjY5MkE4NkUwMjU1NTk3RDAxRkY2MEY3IC8qIE5vZGVzLmggKi8sCkBA
IC00NzQ3LDYgKzQ3NTYsOCBAQAogCQkJCUE3MDA4NzQwMTdDQkU4RUIwMEMzRTY0MyAvKiBKU01h
cC5oICovLAogCQkJCUE3NERFRjhGMTgyRDk5MTQwMDUyMkMyMiAvKiBKU01hcEl0ZXJhdG9yLmNw
cCAqLywKIAkJCQlBNzRERUY5MDE4MkQ5OTE0MDA1MjJDMjIgLyogSlNNYXBJdGVyYXRvci5oICov
LAorCQkJCUUzOURBNEE0MUI3RThCN0MwMDg0RjMzQSAvKiBKU01vZHVsZVJlY29yZC5jcHAgKi8s
CisJCQkJRTM5REE0QTUxQjdFOEI3QzAwODRGMzNBIC8qIEpTTW9kdWxlUmVjb3JkLmggKi8sCiAJ
CQkJQTcyNzAwNzgwREFDNjA1NjAwRTU0OEQ3IC8qIEpTTm90QW5PYmplY3QuY3BwICovLAogCQkJ
CUE3MjcwMDc3MERBQzYwNTYwMEU1NDhENyAvKiBKU05vdEFuT2JqZWN0LmggKi8sCiAJCQkJQkMy
MkEzOTgwRTE2RTE0ODAwQUYyMUM4IC8qIEpTT2JqZWN0LmNwcCAqLywKQEAgLTQ4MjYsNiArNDgz
Nyw4IEBACiAJCQkJOTAyMTNFM0IxMjNBNDBDMjAwRDQyMkYzIC8qIE1lbW9yeVN0YXRpc3RpY3Mu
Y3BwICovLAogCQkJCTkwMjEzRTNDMTIzQTQwQzIwMEQ0MjJGMyAvKiBNZW1vcnlTdGF0aXN0aWNz
LmggKi8sCiAJCQkJN0MwMDhDRTUxODc2MzFCNjAwOTU1QzI0IC8qIE1pY3JvdGFzay5oICovLAor
CQkJCUUzNTVGMzUwMUI3REM4NTMwMEM1MERDNSAvKiBNb2R1bGVMb2FkZXJPYmplY3QuY3BwICov
LAorCQkJCUUzNTVGMzUxMUI3REM4NTMwMEM1MERDNSAvKiBNb2R1bGVMb2FkZXJPYmplY3QuaCAq
LywKIAkJCQlCQzAyRTkwODBFMTgzOURCMDAwRjkyOTcgLyogTmF0aXZlRXJyb3JDb25zdHJ1Y3Rv
ci5jcHAgKi8sCiAJCQkJQkMwMkU5MDkwRTE4MzlEQjAwMEY5Mjk3IC8qIE5hdGl2ZUVycm9yQ29u
c3RydWN0b3IuaCAqLywKIAkJCQlCQzAyRTkwQTBFMTgzOURCMDAwRjkyOTcgLyogTmF0aXZlRXJy
b3JQcm90b3R5cGUuY3BwICovLApAQCAtNTgzNiw2ICs1ODQ5LDcgQEAKIAkJCWZpbGVzID0gKAog
CQkJCTBGRkE1NDk4MTZCODgzNTMwMEIzQTk4MiAvKiBBNjRET3Bjb2RlLmggaW4gSGVhZGVycyAq
LywKIAkJCQk4NjAxNjFFMzBGM0E4M0MxMDBGODQ3MTAgLyogQWJzdHJhY3RNYWNyb0Fzc2VtYmxl
ci5oIGluIEhlYWRlcnMgKi8sCisJCQkJRTM1NUYzNTMxQjdEQzg1MzAwQzUwREM1IC8qIE1vZHVs
ZUxvYWRlck9iamVjdC5oIGluIEhlYWRlcnMgKi8sCiAJCQkJMEZFMDUwMjkxQUE5MDk1NjAwRDMz
QjMzIC8qIFNjb3BlZEFyZ3VtZW50c1RhYmxlLmggaW4gSGVhZGVycyAqLywKIAkJCQkwRjU1RjBG
NTE0RDEwNjNDMDBBQzc2NDkgLyogQWJzdHJhY3RQQy5oIGluIEhlYWRlcnMgKi8sCiAJCQkJMkE0
OEQxOTExNzcyMzY1QjAwQzY1QTVGIC8qIEFQSUNhbGxiYWNrRnVuY3Rpb24uaCBpbiBIZWFkZXJz
ICovLApAQCAtNjIzOCw3ICs2MjUyLDYgQEAKIAkJCQkwRkNFRkFBQzE4MDRDMTNFMDA0NzJDRTQg
LyogRlRMU2F2ZVJlc3RvcmUuaCBpbiBIZWFkZXJzICovLAogCQkJCTBGMjVGMUIyMTgxNjM1RjMw
MDUyMkYzOSAvKiBGVExTbG93UGF0aENhbGwuaCBpbiBIZWFkZXJzICovLAogCQkJCUUzNTQ2MjJC
MUI2MDY1RDEwMDU0NTM4NiAvKiBDb25zdHJ1Y3RBYmlsaXR5LmggaW4gSGVhZGVycyAqLywKLQkJ
CQlFMzk2M0NFRDFCNzNGNzUwMDBFQjRDRTUgLyogTW9kdWxlUmVjb3JkLmggaW4gSGVhZGVycyAq
LywKIAkJCQkwRjI1RjFCNDE4MTYzNUYzMDA1MjJGMzkgLyogRlRMU2xvd1BhdGhDYWxsS2V5Lmgg
aW4gSGVhZGVycyAqLywKIAkJCQkwRjlEMzM5QjE4MDNBREI3MDA3M0MyQkMgLyogRlRMU3RhY2tN
YXBzLmggaW4gSGVhZGVycyAqLywKIAkJCQkwRkVBMEExMjE3MDUxM0RCMDBCQjcyMkMgLyogRlRM
U3RhdGUuaCBpbiBIZWFkZXJzICovLApAQCAtNjI1OSw2ICs2MjcyLDcgQEAKIAkJCQlCQ0JFMkNB
RTE0RTk4NUFBMDAwNTkzQUQgLyogR0NBc3NlcnRpb25zLmggaW4gSGVhZGVycyAqLywKIAkJCQkw
Rjc2NkQzMDE1QThEQ0UyMDA4RjM2M0UgLyogR0NBd2FyZUpJVFN0dWJSb3V0aW5lLmggaW4gSGVh
ZGVycyAqLywKIAkJCQk3MEVDMEVDNzFBQTBEN0RBMDBCNkFBRkEgLyogU3RyaW5nSXRlcmF0b3JQ
cm90b3R5cGUuaCBpbiBIZWFkZXJzICovLAorCQkJCUUzOURBNEE3MUI3RThCN0MwMDg0RjMzQSAv
KiBKU01vZHVsZVJlY29yZC5oIGluIEhlYWRlcnMgKi8sCiAJCQkJMEYyQjY2QUMxN0I2QjUzRjAw
QTdBRTNGIC8qIEdDSW5jb21pbmdSZWZDb3VudGVkLmggaW4gSGVhZGVycyAqLywKIAkJCQkwRjJC
NjZBRDE3QjZCNTQ1MDBBN0FFM0YgLyogR0NJbmNvbWluZ1JlZkNvdW50ZWRJbmxpbmVzLmggaW4g
SGVhZGVycyAqLywKIAkJCQkwRjJCNjZBRTE3QjZCNTQ1MDBBN0FFM0YgLyogR0NJbmNvbWluZ1Jl
ZkNvdW50ZWRTZXQuaCBpbiBIZWFkZXJzICovLApAQCAtNzM3Nyw2ICs3MzkxLDcgQEAKIAkJCQky
QTg4MDY3ODE5MTA3RDU1MDBDQjBCQkIgLyogREZHRnVuY3Rpb25XaGl0ZWxpc3QuY3BwIGluIFNv
dXJjZXMgKi8sCiAJCQkJMEYyREQ4MTMxQUIzRDhCRTAwQkJCOEU4IC8qIERGR0FyZ3VtZW50c1V0
aWxpdGllcy5jcHAgaW4gU291cmNlcyAqLywKIAkJCQlBN0Q4OUNGMzE3QTBCOENDMDA3NzNBRDgg
LyogREZHQmxvY2tJbnNlcnRpb25TZXQuY3BwIGluIFNvdXJjZXMgKi8sCisJCQkJRTM1NUYzNTIx
QjdEQzg1MzAwQzUwREM1IC8qIE1vZHVsZUxvYWRlck9iamVjdC5jcHAgaW4gU291cmNlcyAqLywK
IAkJCQk4NkVDOURDNDEzMjhERjgyMDAyQjJBRDcgLyogREZHQnl0ZUNvZGVQYXJzZXIuY3BwIGlu
IFNvdXJjZXMgKi8sCiAJCQkJMEZEODJFMjExNDE3MkNFMzAwMTc5Qzk0IC8qIERGR0NhcGFiaWxp
dGllcy5jcHAgaW4gU291cmNlcyAqLywKIAkJCQkwRjJCOUNFNjE5RDBCQTdEMDBCMUQxQjUgLyog
REZHT2JqZWN0QWxsb2NhdGlvblNpbmtpbmdQaGFzZS5jcHAgaW4gU291cmNlcyAqLywKQEAgLTc2
NjgsNyArNzY4Myw2IEBACiAJCQkJMEYyQjY2RUQxN0I2QjVBQjAwQTdBRTNGIC8qIEpTRGF0YVZp
ZXdQcm90b3R5cGUuY3BwIGluIFNvdXJjZXMgKi8sCiAJCQkJMEYyRDRERTgxOTgzMkRBQzAwN0Q0
QjE5IC8qIFRvVGhpc1N0YXR1cy5jcHAgaW4gU291cmNlcyAqLywKIAkJCQlGRTM4NEVFNTFBRERC
N0FEMDA1NURFMkMgLyogSlNEb2xsYXJWTS5jcHAgaW4gU291cmNlcyAqLywKLQkJCQlFM0MwOUY1
NTFCNzk2OTJBMDBFRTM2QTIgLyogTW9kdWxlUmVjb3JkLmNwcCBpbiBTb3VyY2VzICovLAogCQkJ
CTk3ODgwMTQwMTQ3MUFEOTIwMDQxQjAxNiAvKiBKU0RhdGVNYXRoLmNwcCBpbiBTb3VyY2VzICov
LAogCQkJCTBGRTA1MDE3MUFBOTA5MTEwMEQzM0IzMyAvKiBEaXJlY3RBcmd1bWVudHMuY3BwIGlu
IFNvdXJjZXMgKi8sCiAJCQkJMTQwNTY2RDYxMDdFQzI3MTAwNURCQzhEIC8qIEpTRnVuY3Rpb24u
Y3BwIGluIFNvdXJjZXMgKi8sCkBAIC03OTEyLDYgKzc5MjYsNyBAQAogCQkJCTBGRjQyNzMyMTU4
RUJENTgwMDRDQjlGRiAvKiBVRGlzODZEaXNhc3NlbWJsZXIuY3BwIGluIFNvdXJjZXMgKi8sCiAJ
CQkJQTc2RjI3OTQxNUYxM0M5NjAwNTE3RDY3IC8qIFVubGlua2VkQ29kZUJsb2NrLmNwcCBpbiBT
b3VyY2VzICovLAogCQkJCUI1OUY4OTM5MTg5MUYyOUYwMEQ1Q0NEQyAvKiBVbmxpbmtlZEluc3Ry
dWN0aW9uU3RyZWFtLmNwcCBpbiBTb3VyY2VzICovLAorCQkJCUUzOURBNEE2MUI3RThCN0MwMDg0
RjMzQSAvKiBKU01vZHVsZVJlY29yZC5jcHAgaW4gU291cmNlcyAqLywKIAkJCQkwRjc1NzZEMjE4
RTFGRUU5MDAyRUY0Q0QgLyogQWNjZXNzb3JDYWxsSklUU3R1YlJvdXRpbmUuY3BwIGluIFNvdXJj
ZXMgKi8sCiAJCQkJMEYyNEU1NTgxN0Y3NEVEQjAwQUJCMjE3IC8qIFZhbHVlUmVjb3ZlcnkuY3Bw
IGluIFNvdXJjZXMgKi8sCiAJCQkJRTE4RTNBNTkwREY5Mjc4QzAwRDkwQjM0IC8qIFZNLmNwcCBp
biBTb3VyY2VzICovLApkaWZmIC0tZ2l0IGEvU291cmNlL0phdmFTY3JpcHRDb3JlL2J1aWx0aW5z
L0J1aWx0aW5OYW1lcy5oIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL2J1aWx0aW5zL0J1aWx0aW5O
YW1lcy5oCmluZGV4IGNlMDQ0NDc5ZjczMDJmMTliMWQ4MTE2OGY5OWVjNDgzNWI0MDIyMGEuLjdl
NTQzNDJlNzUyZjlmMmQ0ZTgzNWVkMDM0ZjQ2MDljZjM2NWQzOWYgMTAwNjQ0Ci0tLSBhL1NvdXJj
ZS9KYXZhU2NyaXB0Q29yZS9idWlsdGlucy9CdWlsdGluTmFtZXMuaAorKysgYi9Tb3VyY2UvSmF2
YVNjcmlwdENvcmUvYnVpbHRpbnMvQnVpbHRpbk5hbWVzLmgKQEAgLTY3LDggKzY3LDggQEAgY2xh
c3MgQnVpbHRpbk5hbWVzIHsKICAgICBib29sIGlzUHJpdmF0ZU5hbWUoU3ltYm9sSW1wbCYgdWlk
KSBjb25zdDsKICAgICBib29sIGlzUHJpdmF0ZU5hbWUoVW5pcXVlZFN0cmluZ0ltcGwmIHVpZCkg
Y29uc3Q7CiAgICAgYm9vbCBpc1ByaXZhdGVOYW1lKGNvbnN0IElkZW50aWZpZXImKSBjb25zdDsK
LSAgICBjb25zdCBJZGVudGlmaWVyKiBnZXRQcml2YXRlTmFtZShjb25zdCBJZGVudGlmaWVyJikg
Y29uc3Q7Ci0gICAgY29uc3QgSWRlbnRpZmllciYgZ2V0UHVibGljTmFtZShjb25zdCBJZGVudGlm
aWVyJikgY29uc3Q7CisgICAgY29uc3QgSWRlbnRpZmllciogbG9va1VwUHJpdmF0ZU5hbWUoY29u
c3QgSWRlbnRpZmllciYpIGNvbnN0OworICAgIGNvbnN0IElkZW50aWZpZXImIGxvb2tVcFB1Ymxp
Y05hbWUoY29uc3QgSWRlbnRpZmllciYpIGNvbnN0OwogICAgIAogICAgIEpTQ19GT1JFQUNIX0JV
SUxUSU5fRlVOQ1RJT05fTkFNRShERUNMQVJFX0JVSUxUSU5fSURFTlRJRklFUl9BQ0NFU1NPUikK
ICAgICBKU0NfQ09NTU9OX1BSSVZBVEVfSURFTlRJRklFUlNfRUFDSF9QUk9QRVJUWV9OQU1FKERF
Q0xBUkVfQlVJTFRJTl9JREVOVElGSUVSX0FDQ0VTU09SKQpAQCAtMTEwLDcgKzExMCw3IEBAIGlu
bGluZSBib29sIEJ1aWx0aW5OYW1lczo6aXNQcml2YXRlTmFtZShjb25zdCBJZGVudGlmaWVyJiBp
ZGVudCkgY29uc3QKICAgICByZXR1cm4gaXNQcml2YXRlTmFtZSgqaWRlbnQuaW1wbCgpKTsKIH0K
IAotaW5saW5lIGNvbnN0IElkZW50aWZpZXIqIEJ1aWx0aW5OYW1lczo6Z2V0UHJpdmF0ZU5hbWUo
Y29uc3QgSWRlbnRpZmllciYgaWRlbnQpIGNvbnN0CitpbmxpbmUgY29uc3QgSWRlbnRpZmllciog
QnVpbHRpbk5hbWVzOjpsb29rVXBQcml2YXRlTmFtZShjb25zdCBJZGVudGlmaWVyJiBpZGVudCkg
Y29uc3QKIHsKICAgICBhdXRvIGl0ZXIgPSBtX3B1YmxpY1RvUHJpdmF0ZU1hcC5maW5kKGlkZW50
LmltcGwoKSk7CiAgICAgaWYgKGl0ZXIgIT0gbV9wdWJsaWNUb1ByaXZhdGVNYXAuZW5kKCkpCkBA
IC0xMTgsNyArMTE4LDcgQEAgaW5saW5lIGNvbnN0IElkZW50aWZpZXIqIEJ1aWx0aW5OYW1lczo6
Z2V0UHJpdmF0ZU5hbWUoY29uc3QgSWRlbnRpZmllciYgaWRlbnQpIGMKICAgICByZXR1cm4gMDsK
IH0KIAotaW5saW5lIGNvbnN0IElkZW50aWZpZXImIEJ1aWx0aW5OYW1lczo6Z2V0UHVibGljTmFt
ZShjb25zdCBJZGVudGlmaWVyJiBpZGVudCkgY29uc3QKK2lubGluZSBjb25zdCBJZGVudGlmaWVy
JiBCdWlsdGluTmFtZXM6Omxvb2tVcFB1YmxpY05hbWUoY29uc3QgSWRlbnRpZmllciYgaWRlbnQp
IGNvbnN0CiB7CiAgICAgYXV0byBpdGVyID0gbV9wcml2YXRlVG9QdWJsaWNNYXAuZmluZChpZGVu
dC5pbXBsKCkpOwogICAgIGlmIChpdGVyICE9IG1fcHJpdmF0ZVRvUHVibGljTWFwLmVuZCgpKQpk
aWZmIC0tZ2l0IGEvU291cmNlL0phdmFTY3JpcHRDb3JlL2J1aWx0aW5zL01vZHVsZUxvYWRlck9i
amVjdC5qcyBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9idWlsdGlucy9Nb2R1bGVMb2FkZXJPYmpl
Y3QuanMKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMC4uZTg5YjgxNmRmNzIyYmFjNjgzMjg2Mzc3ZmI5ZGExNmY3M2E2OTA4
NgotLS0gL2Rldi9udWxsCisrKyBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9idWlsdGlucy9Nb2R1
bGVMb2FkZXJPYmplY3QuanMKQEAgLTAsMCArMSw0MjcgQEAKKy8qCisgKiBDb3B5cmlnaHQgKEMp
IDIwMTUgQXBwbGUgSW5jLiBBbGwgcmlnaHRzIHJlc2VydmVkLgorICoKKyAqIFJlZGlzdHJpYnV0
aW9uIGFuZCB1c2UgaW4gc291cmNlIGFuZCBiaW5hcnkgZm9ybXMsIHdpdGggb3Igd2l0aG91dAor
ICogbW9kaWZpY2F0aW9uLCBhcmUgcGVybWl0dGVkIHByb3ZpZGVkIHRoYXQgdGhlIGZvbGxvd2lu
ZyBjb25kaXRpb25zCisgKiBhcmUgbWV0OgorICogMS4gUmVkaXN0cmlidXRpb25zIG9mIHNvdXJj
ZSBjb2RlIG11c3QgcmV0YWluIHRoZSBhYm92ZSBjb3B5cmlnaHQKKyAqICAgIG5vdGljZSwgdGhp
cyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lci4KKyAqIDIu
IFJlZGlzdHJpYnV0aW9ucyBpbiBiaW5hcnkgZm9ybSBtdXN0IHJlcHJvZHVjZSB0aGUgYWJvdmUg
Y29weXJpZ2h0CisgKiAgICBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUg
Zm9sbG93aW5nIGRpc2NsYWltZXIgaW4gdGhlCisgKiAgICBkb2N1bWVudGF0aW9uIGFuZC9vciBv
dGhlciBtYXRlcmlhbHMgcHJvdmlkZWQgd2l0aCB0aGUgZGlzdHJpYnV0aW9uLgorICoKKyAqIFRI
SVMgU09GVFdBUkUgSVMgUFJPVklERUQgQlkgQVBQTEUgSU5DLiBgYEFTIElTJycgQU5EIEFOWQor
ICogRVhQUkVTUyBPUiBJTVBMSUVEIFdBUlJBTlRJRVMsIElOQ0xVRElORywgQlVUIE5PVCBMSU1J
VEVEIFRPLCBUSEUKKyAqIElNUExJRUQgV0FSUkFOVElFUyBPRiBNRVJDSEFOVEFCSUxJVFkgQU5E
IEZJVE5FU1MgRk9SIEEgUEFSVElDVUxBUgorICogUFVSUE9TRSBBUkUgRElTQ0xBSU1FRC4gIElO
IE5PIEVWRU5UIFNIQUxMIEFQUExFIElOQy4gT1IKKyAqIENPTlRSSUJVVE9SUyBCRSBMSUFCTEUg
Rk9SIEFOWSBESVJFQ1QsIElORElSRUNULCBJTkNJREVOVEFMLCBTUEVDSUFMLAorICogRVhFTVBM
QVJZLCBPUiBDT05TRVFVRU5USUFMIERBTUFHRVMgKElOQ0xVRElORywgQlVUIE5PVCBMSU1JVEVE
IFRPLAorICogUFJPQ1VSRU1FTlQgT0YgU1VCU1RJVFVURSBHT09EUyBPUiBTRVJWSUNFUzsgTE9T
UyBPRiBVU0UsIERBVEEsIE9SCisgKiBQUk9GSVRTOyBPUiBCVVNJTkVTUyBJTlRFUlJVUFRJT04p
IEhPV0VWRVIgQ0FVU0VEIEFORCBPTiBBTlkgVEhFT1JZCisgKiBPRiBMSUFCSUxJVFksIFdIRVRI
RVIgSU4gQ09OVFJBQ1QsIFNUUklDVCBMSUFCSUxJVFksIE9SIFRPUlQKKyAqIChJTkNMVURJTkcg
TkVHTElHRU5DRSBPUiBPVEhFUldJU0UpIEFSSVNJTkcgSU4gQU5ZIFdBWSBPVVQgT0YgVEhFIFVT
RQorICogT0YgVEhJUyBTT0ZUV0FSRSwgRVZFTiBJRiBBRFZJU0VEIE9GIFRIRSBQT1NTSUJJTElU
WSBPRiBTVUNIIERBTUFHRS4KKyAqLworCisvLyBodHRwczovL3doYXR3Zy5naXRodWIuaW8vbG9h
ZGVyLyNsb2FkZXItb2JqZWN0CisvLyBNb2R1bGUgTG9hZGVyIGhhcyBzZXZlcmFsIGhvb2tzIHRo
YXQgY2FuIGJlIGN1c3RvbWl6ZWQgYnkgdGhlIHBsYXRmb3JtLgorLy8gRm9yIGV4YW1wbGUsIHRo
ZSBbW0ZldGNoXV0gaG9vayBjYW4gYmUgcHJvdmlkZWQgYnkgdGhlIEphdmFTY3JpcHRDb3JlIHNo
ZWxsCisvLyBhcyBmZXRjaGluZyB0aGUgcGF5bG9hZCBmcm9tIHRoZSBsb2NhbCBmaWxlIHN5c3Rl
bS4KKy8vIFdlIHN1bW1hcml6ZSB0aGUgaG9va3MuCisvLworLy8gMS4gTG9hZGVyLnJlc29sdmUu
CisvLyAgICAgaHR0cHM6Ly93aGF0d2cuZ2l0aHViLmlvL2xvYWRlci8jYnJvd3Nlci1yZXNvbHZl
CisvLyAgICAgVGFrZSB0aGUgbmFtZSBhbmQgcmVzb2x2ZSBpdCB0byB0aGUgdW5pcXVlIGlkZW50
aWZpZXIgZm9yIHRoZSByZXNvdXJjZSBsb2NhdGlvbi4KKy8vICAgICBGb3IgZXhhbXBsZSwgdGFr
ZSB0aGUgImpxdWVyeSIgYW5kIHJldHVybiB0aGUgVVJMIGZvciB0aGUgcmVzb3VyY2UuCisvLwor
Ly8gMi4gTG9hZGVyLmZldGNoCisvLyAgICAgaHR0cHM6Ly93aGF0d2cuZ2l0aHViLmlvL2xvYWRl
ci8jYnJvd3Nlci1mZXRjaAorLy8gICAgIFRha2UgdGhlIGtleSBhbmQgZmV0Y2ggdGhlIHJlc291
cmNlIGFjdHVhbGx5LgorLy8gICAgIEZvciBleGFtcGxlLCBKYXZhU2NyaXB0Q29yZSBzaGVsbCBj
YW4gcHJvdmlkZSB0aGUgaG9vayBmZXRjaGluZyB0aGUgcmVzb3VyY2UKKy8vICAgICBmcm9tIHRo
ZSBsb2NhbCBmaWxlIHN5c3RlbS4KKy8vCisvLyAzLiBMb2FkZXIudHJhbnNsYXRlCisvLyAgICAg
aHR0cHM6Ly93aGF0d2cuZ2l0aHViLmlvL2xvYWRlci8jYnJvd3Nlci10cmFuc2xhdGUKKy8vICAg
ICBUYWtlIHRoZSBrZXkgYW5kIHRoZSBmZXRjaGVkIHNvdXJjZSBjb2RlIGFuZCB0cmFuc2xhdGUg
aXQgdG8gdGhlIEVTNiBzb3VyY2UgY29kZS4KKy8vICAgICBUeXBpY2FsbHkgaXQgaXMgdXNlZCBi
eSB0aGUgdHJhbnNwaWxlcnMuCisvLworLy8gNC4gTG9hZGVyLmluc3RhbnRpYXRlCisvLyAgICAg
aHR0cHM6Ly93aGF0d2cuZ2l0aHViLmlvL2xvYWRlci8jYnJvd3Nlci1pbnN0YW50aWF0ZQorLy8g
ICAgIFRha2UgdGhlIGtleSBhbmQgdGhlIHRyYW5zbGF0ZWQgc291cmNlIGNvZGUsIGFuZCBpbnN0
YW50aWF0ZSB0aGUgbW9kdWxlIHJlY29yZAorLy8gICAgIGJ5IHBhcnNpbmcgdGhlIG1vZHVsZSBz
b3VyY2UgY29kZS4KKy8vICAgICBJdCBoYXMgdGhlIGNoYW5jZSB0byBwcm92aWRlIHRoZSBvcHRp
b25hbCBtb2R1bGUgaW5zdGFuY2UgdGhhdCBpcyBkaWZmZXJlbnQgZnJvbQorLy8gICAgIHRoZSBv
cmRpbmFyeSBvbmUuCisKK2Z1bmN0aW9uIHNldFN0YXRlVG9NYXgoZW50cnksIG5ld1N0YXRlKQor
eworICAgIC8vIGh0dHBzOi8vd2hhdHdnLmdpdGh1Yi5pby9sb2FkZXIvI3NldC1zdGF0ZS10by1t
YXgKKworICAgICJ1c2Ugc3RyaWN0IjsKKworICAgIGlmIChlbnRyeS5zdGF0ZSA8IG5ld1N0YXRl
KQorICAgICAgICBlbnRyeS5zdGF0ZSA9IG5ld1N0YXRlOworfQorCitmdW5jdGlvbiBuZXdSZWdp
c3RyeUVudHJ5KGtleSkKK3sKKyAgICAvLyBodHRwczovL3doYXR3Zy5naXRodWIuaW8vbG9hZGVy
LyNyZWdpc3RyeQorICAgIC8vCisgICAgLy8gRWFjaCByZWdpc3RyeSBlbnRyeSBiZWNvbWVzIG9u
ZSBvZiB0aGUgNSBzdGF0ZXMuCisgICAgLy8gMS4gRmV0Y2gKKyAgICAvLyAgICAgUmVhZHkgdG8g
ZmV0Y2ggKG9yIG5vdyBmZXRjaGluZykgdGhlIHJlc291cmNlIG9mIHRoaXMgbW9kdWxlLgorICAg
IC8vICAgICBUeXBpY2FsbHksIHdlIGZldGNoIHRoZSBzb3VyY2UgY29kZSBvdmVyIHRoZSBuZXR3
b3JrIG9yIGZyb20gdGhlIGZpbGUgc3lzdGVtLgorICAgIC8vICAgICBhLiBJZiB0aGUgc3RhdHVz
IGlzIEZldGNoIGFuZCB0aGVyZSBpcyBubyBlbnRyeS5mZXRjaCBwcm9taXNlLCB0aGUgZW50cnkg
aXMgcmVhZHkgdG8gZmV0Y2guCisgICAgLy8gICAgIGIuIElmIHRoZSBzdGF0dXMgaXMgRmV0Y2gg
YW5kIHRoZXJlIGlzIHRoZSBlbnRyeS5mZXRjaCBwcm9taXNlLCB0aGUgZW50cnkgaXMganVzdCBm
ZXRjaGluZyB0aGUgcmVzb3VyY2UuCisgICAgLy8KKyAgICAvLyAyLiBUcmFuc2xhdGUKKyAgICAv
LyAgICAgUmVhZHkgdG8gdHJhbnNsYXRlIChvciBub3cgdHJhbnNsYXRpbmcpIHRoZSByYXcgZmV0
Y2hlZCByZXNvdXJjZSB0byB0aGUgRUNNQVNjcmlwdCBzb3VyY2UgY29kZS4KKyAgICAvLyAgICAg
V2UgY2FuIGluc2VydCB0aGUgaG9vayB0aGF0IHRyYW5zbGF0ZXMgdGhlIHJlc291cmNlcyBlLmcu
IHRyYW5zcGlsZXJzLgorICAgIC8vICAgICBhLiBJZiB0aGUgc3RhdHVzIGlzIFRyYW5zbGF0ZSBh
bmQgdGhlcmUgaXMgbm8gZW50cnkudHJhbnNsYXRlIHByb21pc2UsIHRoZSBlbnRyeSBpcyByZWFk
eSB0byB0cmFuc2xhdGUuCisgICAgLy8gICAgIGIuIElmIHRoZSBzdGF0dXMgaXMgVHJhbnNsYXRl
IGFuZCB0aGVyZSBpcyB0aGUgZW50cnkudHJhbnNsYXRlIHByb21pc2UsIHRoZSBlbnRyeSBpcyBq
dXN0IHRyYW5zbGF0aW5nCisgICAgLy8gICAgICAgIHRoZSBwYXlsb2FkIHRvIHRoZSBzb3VyY2Ug
Y29kZS4KKyAgICAvLworICAgIC8vIDMuIEluc3RhbnRpYXRlIChBbmFseXplTW9kdWxlKQorICAg
IC8vICAgICBSZWFkeSB0byBpbnN0YW50aWF0ZSAob3Igbm93IGluc3RhbnRpYXRpbmcpIHRoZSBt
b2R1bGUgcmVjb3JkIGZyb20gdGhlIGZldGNoZWQgKGFuZCB0cmFuc2xhdGVkKQorICAgIC8vICAg
ICBzb3VyY2UgY29kZS4KKyAgICAvLyAgICAgVHlwaWNhbGx5LCB3ZSBwYXJzZSB0aGUgbW9kdWxl
IGNvZGUsIGV4dHJhY3QgdGhlIGRlcGVuZGVuY2llcyBhbmQgYmluZGluZyBpbmZvcm1hdGlvbi4K
KyAgICAvLyAgICAgYS4gSWYgdGhlIHN0YXR1cyBpcyBJbnN0YW50aWF0ZSBhbmQgdGhlcmUgaXMg
bm8gZW50cnkuaW5zdGFudGlhdGUgcHJvbWlzZSwgdGhlIGVudHJ5IGlzIHJlYWR5IHRvIGluc3Rh
bnRpYXRlLgorICAgIC8vICAgICBiLiBJZiB0aGUgc3RhdHVzIGlzIEluc3RhbnRpYXRlIGFuZCB0
aGVyZSBpcyB0aGUgZW50cnkudHJhbnNsYXRlIHByb21pc2UsIHRoZSBlbnRyeSBpcyBqdXN0IGlu
c3RhbnRpYXRpbmcKKyAgICAvLyAgICAgICAgdGhlIG1vZHVsZSByZWNvcmQuCisgICAgLy8KKyAg
ICAvLyA0LiBSZXNvbHZlRGVwZW5kZW5jaWVzIChub3QgaW4gdGhlIGRyYWZ0KSBodHRwczovL2dp
dGh1Yi5jb20vd2hhdHdnL2xvYWRlci9pc3N1ZXMvNjgKKyAgICAvLyAgICAgUmVhZHkgdG8gcmVx
dWVzdCB0aGUgZGVwZW5kZW50IG1vZHVsZXMgKG9yIG5vdyByZXF1ZXN0aW5nICYgcmVzb2x2aW5n
KS4KKyAgICAvLyAgICAgV2l0aG91dCB0aGlzIHN0YXRlLCB0aGUgY3VycmVudCBkcmFmdCBjYXVz
ZXMgaW5maW5pdGUgcmVjdXJzaW9uIHdoZW4gdGhlcmUgaXMgY2lyY3VsYXIgZGVwZW5kZW5jeS4K
KyAgICAvLyAgICAgYS4gSWYgdGhlIHN0YXR1cyBpcyBSZXNvbHZlRGVwZW5kZW5jaWVzIGFuZCB0
aGVyZSBpcyBubyBlbnRyeS5yZXNvbHZlRGVwZW5kZW5jaWVzIHByb21pc2UsIHRoZSBlbnRyeSBp
cyByZWFkeSB0byByZXNvbHZlIHRoZSBkZXBlbmRlbmNpZXMuCisgICAgLy8gICAgIGIuIElmIHRo
ZSBzdGF0dXMgaXMgUmVzb2x2ZURlcGVuZGVuY2llcyBhbmQgdGhlcmUgaXMgdGhlIGVudHJ5LnJl
c29sdmVEZXBlbmRlbmNpZXMgcHJvbWlzZSwgdGhlIGVudHJ5IGlzIGp1c3QgcmVzb2x2aW5nCisg
ICAgLy8gICAgICAgIHRoZSBkZXBlbmRlbmNpZXMuCisgICAgLy8KKyAgICAvLyA1LiBMaW5rCisg
ICAgLy8gICAgIFJlYWR5IHRvIGxpbmsgdGhlIG1vZHVsZSB3aXRoIHRoZSBvdGhlciBtb2R1bGVz
LgorICAgIC8vICAgICBMaW5raW5nIG1lYW5zIHRoYXQgdGhlIG1vZHVsZSBpbXBvcnRzIGFuZCBl
eHBvcnRzIHRoZSBiaW5kaW5ncyBmcm9tL3RvIHRoZSBvdGhlciBtb2R1bGVzLgorICAgIC8vCisg
ICAgLy8gNi4gUmVhZHkKKyAgICAvLyAgICAgVGhlIG1vZHVsZSBpcyBsaW5rZWQsIHNvIHRoZSBt
b2R1bGUgaXMgcmVhZHkgdG8gYmUgZXhlY3V0ZWQuCisgICAgLy8KKyAgICAvLyBFYWNoIHJlZ2lz
dHJ5IGVudHJ5IGhhcyB0aGUgNCBwcm9taXNlczsgImZldGNoIiwgInRyYW5zbGF0ZSIsICJpbnN0
YW50aWF0ZSIgYW5kICJyZXNvbHZlRGVwZW5kZW5jaWVzIi4KKyAgICAvLyBUaGV5IGFyZSBhc3Np
Z25lZCB3aGVuIHN0YXJ0aW5nIHRoZSBlYWNoIHBoYXNlLiBBbmQgdGhleSBhcmUgZnVsZmlsbGVk
IHdoZW4gdGhlIGVhY2ggcGhhc2UgaXMgY29tcGxldGVkLgorICAgIC8vCisgICAgLy8gSW4gdGhl
IGN1cnJlbnQgbW9kdWxlIGRyYWZ0LCBsaW5raW5nIHdpbGwgYmUgcGVyZm9ybWVkIGFmdGVyIHRo
ZSB3aG9sZSBtb2R1bGVzIGFyZSBpbnN0YW50aWF0ZWQgYW5kIHRoZSBkZXBlbmRlbmNpZXMgYXJl
IHJlc29sdmVkLgorICAgIC8vIEFuZCBleGVjdXRpb24gaXMgYWxzbyBkb25lIGFmdGVyIHRoZSBh
bGwgbW9kdWxlcyBhcmUgbGlua2VkLgorICAgIC8vCisgICAgLy8gVE9ETzogV2UgbmVlZCB0byBl
eHBsb2l0IHRoZSB3YXkgdG8gZXhlY3V0ZSB0aGUgbW9kdWxlIHdoaWxlIGZldGNoaW5nIG5vbi1y
ZWxhdGVkIG1vZHVsZXMuCisgICAgLy8gT25lIHNvbHV0aW9uOyBpbnRyb2R1Y2luZyB0aGUgcmVh
ZHkgcHJvbWlzZSBjaGFpbiB0byBleGVjdXRlIHRoZSBtb2R1bGVzIGNvbmN1cnJlbnRseSB3aGls
ZSBrZWVwaW5nCisgICAgLy8gdGhlIGV4ZWN1dGlvbiBvcmRlci4KKworICAgICJ1c2Ugc3RyaWN0
IjsKKworICAgIHJldHVybiB7CisgICAgICAgIGtleToga2V5LAorICAgICAgICBzdGF0ZTogdGhp
cy5GZXRjaCwKKyAgICAgICAgbWV0YWRhdGE6IHVuZGVmaW5lZCwKKyAgICAgICAgZmV0Y2g6IHVu
ZGVmaW5lZCwKKyAgICAgICAgdHJhbnNsYXRlOiB1bmRlZmluZWQsCisgICAgICAgIGluc3RhbnRp
YXRlOiB1bmRlZmluZWQsCisgICAgICAgIHJlc29sdmVEZXBlbmRlbmNpZXM6IHVuZGVmaW5lZCwK
KyAgICAgICAgZGVwZW5kZW5jaWVzOiBbXSwgLy8gVG8ga2VlcCB0aGUgbW9kdWxlIG9yZGVyLCB3
ZSBzdG9yZSB0aGUgbW9kdWxlIGtleXMgaW4gdGhlIGFycmF5LgorICAgICAgICBkZXBlbmRlbmNp
ZXNNYXA6IHVuZGVmaW5lZCwKKyAgICAgICAgbW9kdWxlOiB1bmRlZmluZWQsIC8vIEpTTW9kdWxl
UmVjb3JkCisgICAgICAgIGVycm9yOiB1bmRlZmluZWQsCisgICAgfTsKK30KKworZnVuY3Rpb24g
ZW5zdXJlUmVnaXN0ZXJlZChrZXkpCit7CisgICAgLy8gaHR0cHM6Ly93aGF0d2cuZ2l0aHViLmlv
L2xvYWRlci8jZW5zdXJlLXJlZ2lzdGVyZWQKKworICAgICJ1c2Ugc3RyaWN0IjsKKworICAgIHZh
ciBlbnRyeSA9IHRoaXMucmVnaXN0cnkuQGdldChrZXkpOworICAgIGlmIChlbnRyeSkKKyAgICAg
ICAgcmV0dXJuIGVudHJ5OworCisgICAgZW50cnkgPSB0aGlzLm5ld1JlZ2lzdHJ5RW50cnkoa2V5
KTsKKyAgICB0aGlzLnJlZ2lzdHJ5LkBzZXQoa2V5LCBlbnRyeSk7CisKKyAgICByZXR1cm4gZW50
cnk7Cit9CisKK2Z1bmN0aW9uIGZvcmNlRnVsZmlsbFByb21pc2UocHJvbWlzZSwgdmFsdWUpCit7
CisgICAgInVzZSBzdHJpY3QiOworCisgICAgaWYgKHByb21pc2UuQHByb21pc2VTdGF0ZSA9PT0g
QHByb21pc2VQZW5kaW5nKQorICAgICAgICBAZnVsZmlsbFByb21pc2UocHJvbWlzZSwgdmFsdWUp
OworfQorCitmdW5jdGlvbiBmdWxmaWxsRmV0Y2goZW50cnksIHBheWxvYWQpCit7CisgICAgLy8g
aHR0cHM6Ly93aGF0d2cuZ2l0aHViLmlvL2xvYWRlci8jZnVsZmlsbC1mZXRjaAorCisgICAgInVz
ZSBzdHJpY3QiOworCisgICAgaWYgKCFlbnRyeS5mZXRjaCkKKyAgICAgICAgZW50cnkuZmV0Y2gg
PSBAbmV3UHJvbWlzZUNhcGFiaWxpdHkoQEludGVybmFsUHJvbWlzZSkuQHByb21pc2U7CisgICAg
dGhpcy5mb3JjZUZ1bGZpbGxQcm9taXNlKGVudHJ5LmZldGNoLCBwYXlsb2FkKTsKKyAgICB0aGlz
LnNldFN0YXRlVG9NYXgoZW50cnksIHRoaXMuVHJhbnNsYXRlKTsKK30KKworZnVuY3Rpb24gZnVs
ZmlsbFRyYW5zbGF0ZShlbnRyeSwgc291cmNlKQoreworICAgIC8vIGh0dHBzOi8vd2hhdHdnLmdp
dGh1Yi5pby9sb2FkZXIvI2Z1bGZpbGwtdHJhbnNsYXRlCisKKyAgICAidXNlIHN0cmljdCI7CisK
KyAgICBpZiAoIWVudHJ5LnRyYW5zbGF0ZSkKKyAgICAgICAgZW50cnkudHJhbnNsYXRlID0gQG5l
d1Byb21pc2VDYXBhYmlsaXR5KEBJbnRlcm5hbFByb21pc2UpLkBwcm9taXNlOworICAgIHRoaXMu
Zm9yY2VGdWxmaWxsUHJvbWlzZShlbnRyeS50cmFuc2xhdGUsIHNvdXJjZSk7CisgICAgdGhpcy5z
ZXRTdGF0ZVRvTWF4KGVudHJ5LCB0aGlzLkluc3RhbnRpYXRlKTsKK30KKworZnVuY3Rpb24gZnVs
ZmlsbEluc3RhbnRpYXRlKGVudHJ5LCBvcHRpb25hbEluc3RhbmNlLCBzb3VyY2UpCit7CisgICAg
Ly8gaHR0cHM6Ly93aGF0d2cuZ2l0aHViLmlvL2xvYWRlci8jZnVsZmlsbC1pbnN0YW50aWF0ZQor
CisgICAgInVzZSBzdHJpY3QiOworCisgICAgaWYgKCFlbnRyeS5pbnN0YW50aWF0ZSkKKyAgICAg
ICAgZW50cnkuaW5zdGFudGlhdGUgPSBAbmV3UHJvbWlzZUNhcGFiaWxpdHkoQEludGVybmFsUHJv
bWlzZSkuQHByb21pc2U7CisgICAgdGhpcy5jb21taXRJbnN0YW50aWF0ZWQoZW50cnksIG9wdGlv
bmFsSW5zdGFuY2UsIHNvdXJjZSk7CisKKyAgICAvLyBGSVhNRTogVGhlIGRyYWZ0IGZ1bGZpbGxz
IHRoZSBwcm9taXNlIGluIHRoZSBDb21taXRJbnN0YW50aWF0ZWQgb3BlcmF0aW9uLgorICAgIC8v
IEJ1dCBpdCBDb21taXRJbnN0YW50aWF0ZWQgaXMgYWxzbyB1c2VkIGluIHRoZSByZXF1ZXN0SW5z
dGFudGlhdGUgYW5kCisgICAgLy8gd2Ugc2hvdWxkIG5vdCAiZm9yY2UgZnVsZmlsbCIgdGhlcmUu
CisgICAgLy8gU28gd2Ugc2VwYXJhdGUgImZvcmNlIGZ1bGZpbGwiIG9wZXJhdGlvbiBmcm9tIHRo
ZSBDb21taXRJbnN0YW50aWF0ZWQgb3BlcmF0aW9uLgorICAgIC8vIGh0dHBzOi8vZ2l0aHViLmNv
bS93aGF0d2cvbG9hZGVyL3B1bGwvNjcKKyAgICB0aGlzLmZvcmNlRnVsZmlsbFByb21pc2UoZW50
cnkuaW5zdGFudGlhdGUsIGVudHJ5KTsKK30KKworZnVuY3Rpb24gY29tbWl0SW5zdGFudGlhdGVk
KGVudHJ5LCBvcHRpb25hbEluc3RhbmNlLCBzb3VyY2UpCit7CisgICAgLy8gaHR0cHM6Ly93aGF0
d2cuZ2l0aHViLmlvL2xvYWRlci8jY29tbWl0LWluc3RhbnRpYXRlZAorCisgICAgInVzZSBzdHJp
Y3QiOworCisgICAgdmFyIG1vZHVsZVJlY29yZCA9IHRoaXMuaW5zdGFudGlhdGlvbihvcHRpb25h
bEluc3RhbmNlLCBzb3VyY2UsIGVudHJ5KTsKKworICAgIC8vIEZJWE1FOiBEZXNjcmliZWQgaW4g
dGhlIGRyYWZ0LAorICAgIC8vICAgNC4gRnVsZmlsbCBlbnRyeS5bW0luc3RhbnRpYXRlXV0gd2l0
aCBpbnN0YW5jZS4KKyAgICAvLyBCdXQsIGluc3RhbnRpYXRlIHByb21pc2Ugc2hvdWxkIGJlIGZ1
bGZpbGxlZCB3aXRoIHRoZSBlbnRyeS4KKyAgICAvLyBXZSByZW1vdmUgdGhpcyBzdGF0ZW1lbnQg
YmVjYXVzZSBpbnN0YW50aWF0ZSBwcm9taXNlIHdpbGwgYmUKKyAgICAvLyBmdWxmaWxsZWQgd2l0
aG91dCB0aGlzICJmb3JjZSBmdWxmaWxsIiBvcGVyYXRpb24uCisgICAgLy8gaHR0cHM6Ly9naXRo
dWIuY29tL3doYXR3Zy9sb2FkZXIvcHVsbC82NworCisgICAgdmFyIGRlcGVuZGVuY2llcyA9IFtd
OworICAgIHZhciBkZXBlbmRlbmNpZXNNYXAgPSBuZXcgQE1hcCgpOworICAgIG1vZHVsZVJlY29y
ZC5yZWdpc3RyeUVudHJ5ID0gZW50cnk7CisgICAgdmFyIHJlcXVlc3RlZE1vZHVsZXMgPSB0aGlz
LnJlcXVlc3RlZE1vZHVsZXMobW9kdWxlUmVjb3JkKTsKKyAgICBmb3IgKHZhciBpID0gMCwgbGVu
Z3RoID0gcmVxdWVzdGVkTW9kdWxlcy5sZW5ndGg7IGkgPCBsZW5ndGg7ICsraSkgeworICAgICAg
ICB2YXIgZGVwS2V5ID0gcmVxdWVzdGVkTW9kdWxlc1tpXTsKKyAgICAgICAgdmFyIHBhaXIgPSB7
CisgICAgICAgICAgICBrZXk6IGRlcEtleSwKKyAgICAgICAgICAgIHZhbHVlOiB1bmRlZmluZWQK
KyAgICAgICAgfTsKKyAgICAgICAgQHB1dEJ5VmFsRGlyZWN0KGRlcGVuZGVuY2llcywgaSwgcGFp
cik7CisgICAgICAgIGRlcGVuZGVuY2llc01hcC5Ac2V0KGRlcEtleSwgcGFpcik7CisgICAgfQor
ICAgIGVudHJ5LmRlcGVuZGVuY2llcyA9IGRlcGVuZGVuY2llczsKKyAgICBlbnRyeS5kZXBlbmRl
bmNpZXNNYXAgPSBkZXBlbmRlbmNpZXNNYXA7CisgICAgZW50cnkubW9kdWxlID0gbW9kdWxlUmVj
b3JkOworICAgIHRoaXMuc2V0U3RhdGVUb01heChlbnRyeSwgdGhpcy5SZXNvbHZlRGVwZW5kZW5j
aWVzKTsKK30KKworZnVuY3Rpb24gaW5zdGFudGlhdGlvbihyZXN1bHQsIHNvdXJjZSwgZW50cnkp
Cit7CisgICAgLy8gaHR0cHM6Ly93aGF0d2cuZ2l0aHViLmlvL2xvYWRlci8jaW5zdGFudGlhdGlv
bgorICAgIC8vIEZJWE1FOiBDdXJyZW50IGltcGxlbWVudGF0aW9uIGRvZXMgbm90IHN1cHBvcnQg
b3B0aW9uYWxJbnN0YW5jZS4KKyAgICAvLyBodHRwczovL2J1Z3Mud2Via2l0Lm9yZy9zaG93X2J1
Zy5jZ2k/aWQ9MTQ4MTcxCisKKyAgICAidXNlIHN0cmljdCI7CisKKyAgICByZXR1cm4gdGhpcy5w
YXJzZU1vZHVsZShlbnRyeS5rZXksIHNvdXJjZSk7Cit9CisKKy8vIExvYWRlci4KKworZnVuY3Rp
b24gcmVxdWVzdEZldGNoKGtleSkKK3sKKyAgICAvLyBodHRwczovL3doYXR3Zy5naXRodWIuaW8v
bG9hZGVyLyNyZXF1ZXN0LWZldGNoCisKKyAgICAidXNlIHN0cmljdCI7CisKKyAgICB2YXIgZW50
cnkgPSB0aGlzLmVuc3VyZVJlZ2lzdGVyZWQoa2V5KTsKKyAgICBpZiAoZW50cnkuc3RhdGUgPiB0
aGlzLkxpbmspIHsKKyAgICAgICAgdmFyIGRlZmVycmVkID0gQG5ld1Byb21pc2VDYXBhYmlsaXR5
KEBJbnRlcm5hbFByb21pc2UpOworICAgICAgICBkZWZlcnJlZC5AcmVqZWN0LkBjYWxsKHVuZGVm
aW5lZCwgbmV3IEBUeXBlRXJyb3IoIlJlcXVlc3RlZCBtb2R1bGUgaXMgYWxyZWFkeSByZWFkeSB0
byBiZSBleGVjdXRlZC4iKSk7CisgICAgICAgIHJldHVybiBkZWZlcnJlZC5AcHJvbWlzZTsKKyAg
ICB9CisKKyAgICBpZiAoZW50cnkuZmV0Y2gpCisgICAgICAgIHJldHVybiBlbnRyeS5mZXRjaDsK
KworICAgIHZhciBsb2FkZXIgPSB0aGlzOworICAgIHZhciBmZXRjaFByb21pc2UgPSB0aGlzLmZl
dGNoKGtleSkudGhlbihmdW5jdGlvbiAocGF5bG9hZCkgeworICAgICAgICBsb2FkZXIuc2V0U3Rh
dGVUb01heChlbnRyeSwgbG9hZGVyLlRyYW5zbGF0ZSk7CisgICAgICAgIHJldHVybiBwYXlsb2Fk
OworICAgIH0pOworICAgIGVudHJ5LmZldGNoID0gZmV0Y2hQcm9taXNlOworICAgIHJldHVybiBm
ZXRjaFByb21pc2U7Cit9CisKK2Z1bmN0aW9uIHJlcXVlc3RUcmFuc2xhdGUoa2V5KQoreworICAg
IC8vIGh0dHBzOi8vd2hhdHdnLmdpdGh1Yi5pby9sb2FkZXIvI3JlcXVlc3QtdHJhbnNsYXRlCisK
KyAgICAidXNlIHN0cmljdCI7CisKKyAgICB2YXIgZW50cnkgPSB0aGlzLmVuc3VyZVJlZ2lzdGVy
ZWQoa2V5KTsKKyAgICBpZiAoZW50cnkuc3RhdGUgPiB0aGlzLkxpbmspIHsKKyAgICAgICAgdmFy
IGRlZmVycmVkID0gQG5ld1Byb21pc2VDYXBhYmlsaXR5KEBJbnRlcm5hbFByb21pc2UpOworICAg
ICAgICBkZWZlcnJlZC5AcmVqZWN0LkBjYWxsKHVuZGVmaW5lZCwgbmV3IEBUeXBlRXJyb3IoIlJl
cXVlc3RlZCBtb2R1bGUgaXMgYWxyZWFkeSByZWFkeSB0byBiZSBleGVjdXRlZC4iKSk7CisgICAg
ICAgIHJldHVybiBkZWZlcnJlZC5AcHJvbWlzZTsKKyAgICB9CisKKyAgICBpZiAoZW50cnkudHJh
bnNsYXRlKQorICAgICAgICByZXR1cm4gZW50cnkudHJhbnNsYXRlOworCisgICAgdmFyIGxvYWRl
ciA9IHRoaXM7CisgICAgdmFyIHRyYW5zbGF0ZVByb21pc2UgPSB0aGlzLnJlcXVlc3RGZXRjaChr
ZXkpLnRoZW4oZnVuY3Rpb24gKHBheWxvYWQpIHsKKyAgICAgICAgcmV0dXJuIGxvYWRlci50cmFu
c2xhdGUoa2V5LCBwYXlsb2FkKS50aGVuKGZ1bmN0aW9uIChzb3VyY2UpIHsKKyAgICAgICAgICAg
IGxvYWRlci5zZXRTdGF0ZVRvTWF4KGVudHJ5LCBsb2FkZXIuSW5zdGFudGlhdGUpOworICAgICAg
ICAgICAgcmV0dXJuIHNvdXJjZTsKKyAgICAgICAgfSk7CisgICAgfSk7CisgICAgZW50cnkudHJh
bnNsYXRlID0gdHJhbnNsYXRlUHJvbWlzZTsKKyAgICByZXR1cm4gdHJhbnNsYXRlUHJvbWlzZTsK
K30KKworZnVuY3Rpb24gcmVxdWVzdEluc3RhbnRpYXRlKGtleSkKK3sKKyAgICAvLyBodHRwczov
L3doYXR3Zy5naXRodWIuaW8vbG9hZGVyLyNyZXF1ZXN0LWluc3RhbnRpYXRlCisKKyAgICAidXNl
IHN0cmljdCI7CisKKyAgICB2YXIgZW50cnkgPSB0aGlzLmVuc3VyZVJlZ2lzdGVyZWQoa2V5KTsK
KyAgICBpZiAoZW50cnkuc3RhdGUgPiB0aGlzLkxpbmspIHsKKyAgICAgICAgdmFyIGRlZmVycmVk
ID0gQG5ld1Byb21pc2VDYXBhYmlsaXR5KEBJbnRlcm5hbFByb21pc2UpOworICAgICAgICBkZWZl
cnJlZC5AcmVqZWN0LkBjYWxsKHVuZGVmaW5lZCwgbmV3IEBUeXBlRXJyb3IoIlJlcXVlc3RlZCBt
b2R1bGUgaXMgYWxyZWFkeSByZWFkeSB0byBiZSBleGVjdXRlZC4iKSk7CisgICAgICAgIHJldHVy
biBkZWZlcnJlZC5AcHJvbWlzZTsKKyAgICB9CisKKyAgICBpZiAoZW50cnkuaW5zdGFudGlhdGUp
CisgICAgICAgIHJldHVybiBlbnRyeS5pbnN0YW50aWF0ZTsKKworICAgIHZhciBsb2FkZXIgPSB0
aGlzOworICAgIHZhciBpbnN0YW50aWF0ZVByb21pc2UgPSB0aGlzLnJlcXVlc3RUcmFuc2xhdGUo
a2V5KS50aGVuKGZ1bmN0aW9uIChzb3VyY2UpIHsKKyAgICAgICAgcmV0dXJuIGxvYWRlci5pbnN0
YW50aWF0ZShrZXksIHNvdXJjZSkudGhlbihmdW5jdGlvbiAob3B0aW9uYWxJbnN0YW5jZSkgewor
ICAgICAgICAgICAgbG9hZGVyLmNvbW1pdEluc3RhbnRpYXRlZChlbnRyeSwgb3B0aW9uYWxJbnN0
YW5jZSwgc291cmNlKTsKKyAgICAgICAgICAgIHJldHVybiBlbnRyeTsKKyAgICAgICAgfSk7Cisg
ICAgfSk7CisgICAgZW50cnkuaW5zdGFudGlhdGUgPSBpbnN0YW50aWF0ZVByb21pc2U7CisgICAg
cmV0dXJuIGluc3RhbnRpYXRlUHJvbWlzZTsKK30KKworZnVuY3Rpb24gcmVxdWVzdFJlc29sdmVE
ZXBlbmRlbmNpZXMoa2V5KQoreworICAgIC8vIEZJWE1FOiBJbiB0aGUgc3BlYywgYWZ0ZXIgcmVx
dWVzdGluZyBpbnN0YW50aWF0aW9uLCB3ZSB3aWxsIHJlc29sdmUKKyAgICAvLyB0aGUgZGVwZW5k
ZW5jaWVzIHdpdGhvdXQgYW55IHN0YXR1cyBjaGFuZ2UuIEFzIGEgcmVzdWx0LCB3aGVuIHRoZXJl
CisgICAgLy8gaXMgY2lyY3VsYXIgZGVwZW5kZW5jaWVzLCBpbnN0YW50aWF0aW9uIGlzIGRvbmUg
b25seSBvbmNlLCBidXQKKyAgICAvLyByZXBlYXRlZGx5IHJlc29sdmluZyB0aGUgZGVwZW5kZW5j
aWVzLiBUaGlzIG1lYW5zIHRoYXQgaW5maW5pdGUKKyAgICAvLyByZWN1cnNpb24gb2NjdXIgd2hl
biB0aGUgZ2l2ZW4gbW9kdWxlcyBoYXZlIGNpcmN1bGFyIGRlcGVuZGVuY3kuIFRvCisgICAgLy8g
YXZvaWQgdGhpcyBzaXR1YXRpb24sIHdlIGludHJvZHVjZSBuZXcgc3RhdGUsICJSZXNvbHZlRGVw
ZW5kZW5jaWVzIi4gVGhpcyBtZWFucworICAgIC8vICJOb3cgdGhlIG1vZHVsZSBpcyBpbnN0YW50
aWF0ZWQsIHNvIHJlYWR5IHRvIHJlc29sdmUgdGhlIGRlcGVuZGVuY2llcworICAgIC8vIG9yIG5v
dyByZXNvbHZpbmcgdGhlbSIuCisgICAgLy8gaHR0cHM6Ly9naXRodWIuY29tL3doYXR3Zy9sb2Fk
ZXIvaXNzdWVzLzY4CisKKyAgICAidXNlIHN0cmljdCI7CisKKyAgICB2YXIgZW50cnkgPSB0aGlz
LmVuc3VyZVJlZ2lzdGVyZWQoa2V5KTsKKyAgICBpZiAoZW50cnkuc3RhdGUgPiB0aGlzLkxpbmsp
IHsKKyAgICAgICAgdmFyIGRlZmVycmVkID0gQG5ld1Byb21pc2VDYXBhYmlsaXR5KEBJbnRlcm5h
bFByb21pc2UpOworICAgICAgICBkZWZlcnJlZC5AcmVqZWN0LkBjYWxsKHVuZGVmaW5lZCwgbmV3
IEBUeXBlRXJyb3IoIlJlcXVlc3RlZCBtb2R1bGUgaXMgYWxyZWFkeSByZWFkeSB0byBiZSBleGVj
dXRlZC4iKSk7CisgICAgICAgIHJldHVybiBkZWZlcnJlZC5AcHJvbWlzZTsKKyAgICB9CisKKyAg
ICBpZiAoZW50cnkucmVzb2x2ZURlcGVuZGVuY2llcykKKyAgICAgICAgcmV0dXJuIGVudHJ5LnJl
c29sdmVEZXBlbmRlbmNpZXM7CisKKyAgICB2YXIgbG9hZGVyID0gdGhpczsKKyAgICB2YXIgcmVz
b2x2ZURlcGVuZGVuY2llc1Byb21pc2UgPSB0aGlzLnJlcXVlc3RJbnN0YW50aWF0ZShrZXkpLnRo
ZW4oZnVuY3Rpb24gKGVudHJ5KSB7CisgICAgICAgIHZhciBkZXBMb2FkcyA9IFtdOworICAgICAg
ICBmb3IgKHZhciBpID0gMCwgbGVuZ3RoID0gZW50cnkuZGVwZW5kZW5jaWVzLmxlbmd0aDsgaSA8
IGxlbmd0aDsgKytpKSB7CisgICAgICAgICAgICB2YXIgcGFpciA9IGVudHJ5LmRlcGVuZGVuY2ll
c1tpXTsKKyAgICAgICAgICAgIHZhciBwcm9taXNlID0gbG9hZGVyLnJlc29sdmUocGFpci5rZXks
IGtleSkudGhlbihmdW5jdGlvbiAoZGVwS2V5KSB7CisgICAgICAgICAgICAgICAgdmFyIGRlcEVu
dHJ5ID0gbG9hZGVyLmVuc3VyZVJlZ2lzdGVyZWQoZGVwS2V5KTsKKworICAgICAgICAgICAgICAg
IC8vIFJlY3Vyc2l2ZSByZXNvbHZpbmcuIFRoZSBkZXBlbmRlbmNpZXMgb2YgdGhpcyBlbnRyeSBp
cyBiZWluZyByZXNvbHZlZCBvciBhbHJlYWR5IHJlc29sdmVkLgorICAgICAgICAgICAgICAgIC8v
IFN0b3AgdHJhY2luZyB0aGUgY2lyY3VsYXIgZGVwZW5kZW5jaWVzLgorICAgICAgICAgICAgICAg
IGlmIChkZXBFbnRyeS5yZXNvbHZlRGVwZW5kZW5jaWVzKSB7CisgICAgICAgICAgICAgICAgICAg
IHBhaXIudmFsdWUgPSBkZXBFbnRyeS5tb2R1bGU7CisgICAgICAgICAgICAgICAgICAgIHJldHVy
biBkZXBFbnRyeTsKKyAgICAgICAgICAgICAgICB9CisKKyAgICAgICAgICAgICAgICByZXR1cm4g
bG9hZGVyLnJlcXVlc3RSZXNvbHZlRGVwZW5kZW5jaWVzKGRlcEtleSkudGhlbihmdW5jdGlvbiAo
ZW50cnkpIHsKKyAgICAgICAgICAgICAgICAgICAgLy8gRklYTUU6IFRoZSByZXN1bHQgcHJvbWlz
ZSBvZiB0aGUgcmVxdWVzdEluc3RhbnRpYXRlQWxsIHNob3VsZCBiZSBmdWxmaWxsZWQgd2l0aAor
ICAgICAgICAgICAgICAgICAgICAvLyB0aGUgcmVnaXN0cnkgZW50cnkuCisgICAgICAgICAgICAg
ICAgICAgIC8vIGh0dHBzOi8vZ2l0aHViLmNvbS93aGF0d2cvbG9hZGVyL3B1bGwvNjYKKyAgICAg
ICAgICAgICAgICAgICAgcGFpci52YWx1ZSA9IGVudHJ5Lm1vZHVsZTsKKyAgICAgICAgICAgICAg
ICAgICAgcmV0dXJuIGVudHJ5OworICAgICAgICAgICAgICAgIH0pOworICAgICAgICAgICAgfSk7
CisgICAgICAgICAgICBAcHV0QnlWYWxEaXJlY3QoZGVwTG9hZHMsIGksIHByb21pc2UpOworICAg
ICAgICB9CisKKyAgICAgICAgcmV0dXJuIEBJbnRlcm5hbFByb21pc2UuaW50ZXJuYWxBbGwoZGVw
TG9hZHMpLnRoZW4oZnVuY3Rpb24gKG1vZHVsZXMpIHsKKyAgICAgICAgICAgIGxvYWRlci5zZXRT
dGF0ZVRvTWF4KGVudHJ5LCBsb2FkZXIuTGluayk7CisgICAgICAgICAgICByZXR1cm4gZW50cnk7
CisgICAgICAgIH0pOworICAgIH0pOworCisgICAgZW50cnkucmVzb2x2ZURlcGVuZGVuY2llcyA9
IHJlc29sdmVEZXBlbmRlbmNpZXNQcm9taXNlOworICAgIHJldHVybiByZXNvbHZlRGVwZW5kZW5j
aWVzUHJvbWlzZTsKK30KKworZnVuY3Rpb24gcmVxdWVzdEluc3RhbnRpYXRlQWxsKGtleSkKK3sK
KyAgICAvLyBodHRwczovL3doYXR3Zy5naXRodWIuaW8vbG9hZGVyLyNyZXF1ZXN0LWluc3RhbnRp
YXRlLWFsbAorCisgICAgInVzZSBzdHJpY3QiOworCisgICAgcmV0dXJuIHRoaXMucmVxdWVzdFJl
c29sdmVEZXBlbmRlbmNpZXMoa2V5KTsKK30KKworZnVuY3Rpb24gcHJvdmlkZShrZXksIHN0YWdl
LCB2YWx1ZSkKK3sKKyAgICAidXNlIHN0cmljdCI7CisKKyAgICB2YXIgZW50cnkgPSB0aGlzLmVu
c3VyZVJlZ2lzdGVyZWQoa2V5KTsKKworICAgIGlmIChzdGFnZSA9PT0gdGhpcy5GZXRjaCkgewor
ICAgICAgICBpZiAoZW50cnkuc3RhdHVzID4gdGhpcy5GZXRjaCkKKyAgICAgICAgICAgIHRocm93
IG5ldyBAVHlwZUVycm9yKCJSZXF1ZXN0ZWQgbW9kdWxlIGlzIGFscmVhZHkgZmV0Y2hlZC4iKTsK
KyAgICAgICAgdGhpcy5mdWxmaWxsRmV0Y2goZW50cnksIHZhbHVlKTsKKyAgICAgICAgcmV0dXJu
OworICAgIH0KKworICAgIGlmIChzdGFnZSA9PT0gdGhpcy5UcmFuc2xhdGUpIHsKKyAgICAgICAg
aWYgKGVudHJ5LnN0YXR1cyA+IHRoaXMuVHJhbnNsYXRlKQorICAgICAgICAgICAgdGhyb3cgbmV3
IEBUeXBlRXJyb3IoIlJlcXVlc3RlZCBtb2R1bGUgaXMgYWxyZWFkeSB0cmFuc2xhdGVkLiIpOwor
ICAgICAgICB0aGlzLmZ1bGZpbGxGZXRjaChlbnRyeSwgdW5kZWZpbmVkKTsKKyAgICAgICAgdGhp
cy5mdWxmaWxsVHJhbnNsYXRlKGVudHJ5LCB2YWx1ZSk7CisgICAgICAgIHJldHVybjsKKyAgICB9
CisKKyAgICBpZiAoc3RhZ2UgPT09IHRoaXMuSW5zdGFudGlhdGUpIHsKKyAgICAgICAgaWYgKGVu
dHJ5LnN0YXR1cyA+IHRoaXMuSW5zdGFudGlhdGUpCisgICAgICAgICAgICB0aHJvdyBuZXcgQFR5
cGVFcnJvcigiUmVxdWVzdGVkIG1vZHVsZSBpcyBhbHJlYWR5IGluc3RhbnRpYXRlZC4iKTsKKyAg
ICAgICAgdGhpcy5mdWxmaWxsRmV0Y2goZW50cnksIHVuZGVmaW5lZCk7CisgICAgICAgIHRoaXMu
ZnVsZmlsbFRyYW5zbGF0ZShlbnRyeSwgdmFsdWUpOworICAgICAgICB2YXIgbG9hZGVyID0gdGhp
czsKKyAgICAgICAgZW50cnkudHJhbnNsYXRlLnRoZW4oZnVuY3Rpb24gKHNvdXJjZSkgeworICAg
ICAgICAgICAgbG9hZGVyLmZ1bGZpbGxJbnN0YW50aWF0ZShlbnRyeSwgdmFsdWUsIHNvdXJjZSk7
CisgICAgICAgIH0pOworICAgICAgICByZXR1cm47CisgICAgfQorCisgICAgdGhyb3cgbmV3IEBU
eXBlRXJyb3IoIlJlcXVlc3RlZCBtb2R1bGUgaXMgYWxyZWFkeSByZWFkeSB0byBiZSBleGVjdXRl
ZC4iKTsKK30KZGlmZiAtLWdpdCBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9qc2MuY3BwIGIvU291
cmNlL0phdmFTY3JpcHRDb3JlL2pzYy5jcHAKaW5kZXggMjUxOTU2NWE3OTg2ZjkyOWQwMTE3YWQ4
ODllNGJiMWZmYjhmZjU0MS4uMmNiN2ZiYjVmZjFiMmE5NDMwMjU1NTU3MTM2NzNkOTAyYjkwMmMz
YiAxMDA2NDQKLS0tIGEvU291cmNlL0phdmFTY3JpcHRDb3JlL2pzYy5jcHAKKysrIGIvU291cmNl
L0phdmFTY3JpcHRDb3JlL2pzYy5jcHAKQEAgLTM5LDYgKzM5LDggQEAKICNpbmNsdWRlICJKU0Fy
cmF5QnVmZmVyLmgiCiAjaW5jbHVkZSAiSlNDSW5saW5lcy5oIgogI2luY2x1ZGUgIkpTRnVuY3Rp
b24uaCIKKyNpbmNsdWRlICJKU0ludGVybmFsUHJvbWlzZS5oIgorI2luY2x1ZGUgIkpTSW50ZXJu
YWxQcm9taXNlRGVmZXJyZWQuaCIKICNpbmNsdWRlICJKU0xvY2suaCIKICNpbmNsdWRlICJKU09O
T2JqZWN0LmgiCiAjaW5jbHVkZSAiSlNQcm94eS5oIgpAQCAtNTE5LDIwICs1MjEsMTcgQEAgc3Ry
dWN0IFNjcmlwdCB7CiBjbGFzcyBDb21tYW5kTGluZSB7CiBwdWJsaWM6CiAgICAgQ29tbWFuZExp
bmUoaW50IGFyZ2MsIGNoYXIqKiBhcmd2KQotICAgICAgICA6IG1faW50ZXJhY3RpdmUoZmFsc2Up
Ci0gICAgICAgICwgbV9kdW1wKGZhbHNlKQotICAgICAgICAsIG1fZXhpdENvZGUoZmFsc2UpCi0g
ICAgICAgICwgbV9wcm9maWxlKGZhbHNlKQogICAgIHsKICAgICAgICAgcGFyc2VBcmd1bWVudHMo
YXJnYywgYXJndik7CiAgICAgfQogCi0gICAgYm9vbCBtX2ludGVyYWN0aXZlOwotICAgIGJvb2wg
bV9kdW1wOwotICAgIGJvb2wgbV9leGl0Q29kZTsKKyAgICBib29sIG1faW50ZXJhY3RpdmUgeyBm
YWxzZSB9OworICAgIGJvb2wgbV9kdW1wIHsgZmFsc2UgfTsKKyAgICBib29sIG1fbW9kdWxlIHsg
ZmFsc2UgfTsKKyAgICBib29sIG1fZXhpdENvZGUgeyBmYWxzZSB9OwogICAgIFZlY3RvcjxTY3Jp
cHQ+IG1fc2NyaXB0czsKICAgICBWZWN0b3I8U3RyaW5nPiBtX2FyZ3VtZW50czsKLSAgICBib29s
IG1fcHJvZmlsZTsKKyAgICBib29sIG1fcHJvZmlsZSB7IGZhbHNlIH07CiAgICAgU3RyaW5nIG1f
cHJvZmlsZXJPdXRwdXQ7CiAKICAgICB2b2lkIHBhcnNlQXJndW1lbnRzKGludCwgY2hhcioqKTsK
QEAgLTU2Niw2ICs1NjUsMTcgQEAgbG9uZyBTdG9wV2F0Y2g6OmdldEVsYXBzZWRNUygpCiAgICAg
cmV0dXJuIHN0YXRpY19jYXN0PGxvbmc+KChtX3N0b3BUaW1lIC0gbV9zdGFydFRpbWUpICogMTAw
MCk7CiB9CiAKK3N0YXRpYyBpbmxpbmUgU3RyaW5nIHN0cmluZ0Zyb21VVEYoY29uc3QgY2hhciog
dXRmOCkKK3sKKyAgICByZXR1cm4gU3RyaW5nOjpmcm9tVVRGOFdpdGhMYXRpbjFGYWxsYmFjayh1
dGY4LCBzdHJsZW4odXRmOCkpOworfQorCitzdGF0aWMgaW5saW5lIFNvdXJjZUNvZGUganNjU291
cmNlKGNvbnN0IGNoYXIqIHV0ZjgsIGNvbnN0IFN0cmluZyYgZmlsZW5hbWUpCit7CisgICAgU3Ry
aW5nIHN0ciA9IHN0cmluZ0Zyb21VVEYodXRmOCk7CisgICAgcmV0dXJuIG1ha2VTb3VyY2Uoc3Ry
LCBmaWxlbmFtZSk7Cit9CisKIGNsYXNzIEdsb2JhbE9iamVjdCA6IHB1YmxpYyBKU0dsb2JhbE9i
amVjdCB7CiBwcml2YXRlOgogICAgIEdsb2JhbE9iamVjdChWTSYsIFN0cnVjdHVyZSopOwpAQCAt
Njg3LDEwICs2OTcsMzEgQEAgY2xhc3MgR2xvYmFsT2JqZWN0IDogcHVibGljIEpTR2xvYmFsT2Jq
ZWN0IHsKICAgICAgICAgSWRlbnRpZmllciBpZGVudGlmaWVyID0gSWRlbnRpZmllcjo6ZnJvbVN0
cmluZygmdm0sIG5hbWUpOwogICAgICAgICBwdXREaXJlY3Qodm0sIGlkZW50aWZpZXIsIEpTRnVu
Y3Rpb246OmNyZWF0ZSh2bSwgdGhpcywgYXJndW1lbnRzLCBpZGVudGlmaWVyLnN0cmluZygpLCBm
dW5jdGlvbiwgTm9JbnRyaW5zaWMsIGZ1bmN0aW9uKSk7CiAgICAgfQorCisgICAgc3RhdGljIEpT
SW50ZXJuYWxQcm9taXNlKiBsb2FkZXJGZXRjaChKU0dsb2JhbE9iamVjdCogZ2xvYmFsT2JqZWN0
LCBFeGVjU3RhdGUqIGV4ZWMsIEpTVmFsdWUga2V5KQorICAgIHsKKyAgICAgICAgSlNJbnRlcm5h
bFByb21pc2VEZWZlcnJlZCogZGVmZXJyZWQgPSBKU0ludGVybmFsUHJvbWlzZURlZmVycmVkOjpj
cmVhdGUoZXhlYywgZ2xvYmFsT2JqZWN0KTsKKyAgICAgICAgU3RyaW5nIG1vZHVsZUtleSA9IGtl
eS50b1N0cmluZyhleGVjKS0+dmFsdWUoZXhlYyk7CisgICAgICAgIGlmIChleGVjLT5oYWRFeGNl
cHRpb24oKSkgeworICAgICAgICAgICAgSlNWYWx1ZSBleGNlcHRpb24gPSBleGVjLT5leGNlcHRp
b24oKTsKKyAgICAgICAgICAgIGV4ZWMtPmNsZWFyRXhjZXB0aW9uKCk7CisgICAgICAgICAgICBk
ZWZlcnJlZC0+cmVqZWN0KGV4ZWMsIGV4Y2VwdGlvbik7CisgICAgICAgICAgICByZXR1cm4gZGVm
ZXJyZWQtPnByb21pc2UoKTsKKyAgICAgICAgfQorCisgICAgICAgIC8vIEhlcmUsIG5vdyB3ZSBj
b25zaWRlciBtb2R1bGVLZXkgYXMgdGhlIGZpbGVOYW1lLgorICAgICAgICBWZWN0b3I8Y2hhcj4g
dXRmODsKKyAgICAgICAgaWYgKCFmaWxsQnVmZmVyV2l0aENvbnRlbnRzT2ZGaWxlKG1vZHVsZUtl
eSwgdXRmOCkpIHsKKyAgICAgICAgICAgIGRlZmVycmVkLT5yZWplY3QoZXhlYywgY3JlYXRlRXJy
b3IoZXhlYywgbWFrZVN0cmluZygiQ291bGQgbm90IG9wZW4gZmlsZSAnIiwgbW9kdWxlS2V5LCAi
Jy4iKSkpOworICAgICAgICAgICAgcmV0dXJuIGRlZmVycmVkLT5wcm9taXNlKCk7CisgICAgICAg
IH0KKyAgICAgICAgZGVmZXJyZWQtPnJlc29sdmUoZXhlYywganNTdHJpbmcoZXhlYywgc3RyaW5n
RnJvbVVURih1dGY4LmRhdGEoKSkpKTsKKyAgICAgICAgcmV0dXJuIGRlZmVycmVkLT5wcm9taXNl
KCk7CisgICAgfQogfTsKIAogY29uc3QgQ2xhc3NJbmZvIEdsb2JhbE9iamVjdDo6c19pbmZvID0g
eyAiZ2xvYmFsIiwgJkpTR2xvYmFsT2JqZWN0OjpzX2luZm8sICZnbG9iYWxPYmplY3RUYWJsZSwg
Q1JFQVRFX01FVEhPRF9UQUJMRShHbG9iYWxPYmplY3QpIH07Ci1jb25zdCBHbG9iYWxPYmplY3RN
ZXRob2RUYWJsZSBHbG9iYWxPYmplY3Q6OnNfZ2xvYmFsT2JqZWN0TWV0aG9kVGFibGUgPSB7ICZh
bGxvd3NBY2Nlc3NGcm9tLCAmc3VwcG9ydHNQcm9maWxpbmcsICZzdXBwb3J0c1JpY2hTb3VyY2VJ
bmZvLCAmc2hvdWxkSW50ZXJydXB0U2NyaXB0LCAmamF2YVNjcmlwdFJ1bnRpbWVGbGFncywgMCwg
JnNob3VsZEludGVycnVwdFNjcmlwdEJlZm9yZVRpbWVvdXQgfTsKK2NvbnN0IEdsb2JhbE9iamVj
dE1ldGhvZFRhYmxlIEdsb2JhbE9iamVjdDo6c19nbG9iYWxPYmplY3RNZXRob2RUYWJsZSA9IHsg
JmFsbG93c0FjY2Vzc0Zyb20sICZzdXBwb3J0c1Byb2ZpbGluZywgJnN1cHBvcnRzUmljaFNvdXJj
ZUluZm8sICZzaG91bGRJbnRlcnJ1cHRTY3JpcHQsICZqYXZhU2NyaXB0UnVudGltZUZsYWdzLCAw
LCAmc2hvdWxkSW50ZXJydXB0U2NyaXB0QmVmb3JlVGltZW91dCwgbnVsbHB0ciwgJmxvYWRlckZl
dGNoLCBudWxscHRyLCBudWxscHRyIH07CiAKIAogR2xvYmFsT2JqZWN0OjpHbG9iYWxPYmplY3Qo
Vk0mIHZtLCBTdHJ1Y3R1cmUqIHN0cnVjdHVyZSkKQEAgLTY5OCwxNyArNzI5LDYgQEAgR2xvYmFs
T2JqZWN0OjpHbG9iYWxPYmplY3QoVk0mIHZtLCBTdHJ1Y3R1cmUqIHN0cnVjdHVyZSkKIHsKIH0K
IAotc3RhdGljIGlubGluZSBTdHJpbmcgc3RyaW5nRnJvbVVURihjb25zdCBjaGFyKiB1dGY4KQot
ewotICAgIHJldHVybiBTdHJpbmc6OmZyb21VVEY4V2l0aExhdGluMUZhbGxiYWNrKHV0ZjgsIHN0
cmxlbih1dGY4KSk7Ci19Ci0KLXN0YXRpYyBpbmxpbmUgU291cmNlQ29kZSBqc2NTb3VyY2UoY29u
c3QgY2hhciogdXRmOCwgY29uc3QgU3RyaW5nJiBmaWxlbmFtZSkKLXsKLSAgICBTdHJpbmcgc3Ry
ID0gc3RyaW5nRnJvbVVURih1dGY4KTsKLSAgICByZXR1cm4gbWFrZVNvdXJjZShzdHIsIGZpbGVu
YW1lKTsKLX0KLQogRW5jb2RlZEpTVmFsdWUgSlNDX0hPU1RfQ0FMTCBmdW5jdGlvblByaW50KEV4
ZWNTdGF0ZSogZXhlYykKIHsKICAgICBmb3IgKHVuc2lnbmVkIGkgPSAwOyBpIDwgZXhlYy0+YXJn
dW1lbnRDb3VudCgpOyArK2kpIHsKQEAgLTEyMTIsNyArMTIzMiw3IEBAIEVuY29kZWRKU1ZhbHVl
IEpTQ19IT1NUX0NBTEwgZnVuY3Rpb25DaGVja01vZHVsZVN5bnRheChFeGVjU3RhdGUqIGV4ZWMp
CiAgICAgc3RvcFdhdGNoLnN0YXJ0KCk7CiAKICAgICBQYXJzZXJFcnJvciBlcnJvcjsKLSAgICBi
b29sIHZhbGlkU3ludGF4ID0gY2hlY2tNb2R1bGVTeW50YXgoZXhlYy0+dm0oKSwgbWFrZVNvdXJj
ZShzb3VyY2UpLCBlcnJvcik7CisgICAgYm9vbCB2YWxpZFN5bnRheCA9IGNoZWNrTW9kdWxlU3lu
dGF4KGV4ZWMsIG1ha2VTb3VyY2Uoc291cmNlKSwgZXJyb3IpOwogICAgIHN0b3BXYXRjaC5zdG9w
KCk7CiAKICAgICBpZiAoIXZhbGlkU3ludGF4KQpAQCAtMTMyMCw3ICsxMzQwLDE4IEBAIGludCBt
YWluKGludCBhcmdjLCBjaGFyKiogYXJndikKICAgICBqc2NFeGl0KHJlcyk7CiB9CiAKLXN0YXRp
YyBib29sIHJ1bldpdGhTY3JpcHRzKEdsb2JhbE9iamVjdCogZ2xvYmFsT2JqZWN0LCBjb25zdCBW
ZWN0b3I8U2NyaXB0PiYgc2NyaXB0cywgYm9vbCBkdW1wKQorc3RhdGljIHZvaWQgZHVtcEV4Y2Vw
dGlvbihHbG9iYWxPYmplY3QqIGdsb2JhbE9iamVjdCwgTmFrZWRQdHI8RXhjZXB0aW9uPiBldmFs
dWF0aW9uRXhjZXB0aW9uKQoreworICAgIGlmIChldmFsdWF0aW9uRXhjZXB0aW9uKSB7CisgICAg
ICAgIHByaW50ZigiRXhjZXB0aW9uOiAlc1xuIiwgZXZhbHVhdGlvbkV4Y2VwdGlvbi0+dmFsdWUo
KS50b1N0cmluZyhnbG9iYWxPYmplY3QtPmdsb2JhbEV4ZWMoKSktPnZhbHVlKGdsb2JhbE9iamVj
dC0+Z2xvYmFsRXhlYygpKS51dGY4KCkuZGF0YSgpKTsKKyAgICAgICAgSWRlbnRpZmllciBzdGFj
a0lEID0gSWRlbnRpZmllcjo6ZnJvbVN0cmluZyhnbG9iYWxPYmplY3QtPmdsb2JhbEV4ZWMoKSwg
InN0YWNrIik7CisgICAgICAgIEpTVmFsdWUgc3RhY2tWYWx1ZSA9IGV2YWx1YXRpb25FeGNlcHRp
b24tPnZhbHVlKCkuZ2V0KGdsb2JhbE9iamVjdC0+Z2xvYmFsRXhlYygpLCBzdGFja0lEKTsKKyAg
ICAgICAgaWYgKCFzdGFja1ZhbHVlLmlzVW5kZWZpbmVkT3JOdWxsKCkpCisgICAgICAgICAgICBw
cmludGYoIiVzXG4iLCBzdGFja1ZhbHVlLnRvU3RyaW5nKGdsb2JhbE9iamVjdC0+Z2xvYmFsRXhl
YygpKS0+dmFsdWUoZ2xvYmFsT2JqZWN0LT5nbG9iYWxFeGVjKCkpLnV0ZjgoKS5kYXRhKCkpOwor
ICAgIH0KK30KKworc3RhdGljIGJvb2wgcnVuV2l0aFNjcmlwdHMoR2xvYmFsT2JqZWN0KiBnbG9i
YWxPYmplY3QsIGNvbnN0IFZlY3RvcjxTY3JpcHQ+JiBzY3JpcHRzLCBib29sIGR1bXAsIGJvb2wg
bW9kdWxlKQogewogICAgIGNvbnN0IGNoYXIqIHNjcmlwdDsKICAgICBTdHJpbmcgZmlsZU5hbWU7
CkBAIC0xMzQ5LDE3ICsxMzgwLDIxIEBAIHN0YXRpYyBib29sIHJ1bldpdGhTY3JpcHRzKEdsb2Jh
bE9iamVjdCogZ2xvYmFsT2JqZWN0LCBjb25zdCBWZWN0b3I8U2NyaXB0PiYgc2NyCiAKICAgICAg
ICAgdm0uc3RhcnRTYW1wbGluZygpOwogCi0gICAgICAgIE5ha2VkUHRyPEV4Y2VwdGlvbj4gZXZh
bHVhdGlvbkV4Y2VwdGlvbjsKLSAgICAgICAgSlNWYWx1ZSByZXR1cm5WYWx1ZSA9IGV2YWx1YXRl
KGdsb2JhbE9iamVjdC0+Z2xvYmFsRXhlYygpLCBqc2NTb3VyY2Uoc2NyaXB0LCBmaWxlTmFtZSks
IEpTVmFsdWUoKSwgZXZhbHVhdGlvbkV4Y2VwdGlvbik7Ci0gICAgICAgIHN1Y2Nlc3MgPSBzdWNj
ZXNzICYmICFldmFsdWF0aW9uRXhjZXB0aW9uOwotICAgICAgICBpZiAoZHVtcCAmJiAhZXZhbHVh
dGlvbkV4Y2VwdGlvbikKLSAgICAgICAgICAgIHByaW50ZigiRW5kOiAlc1xuIiwgcmV0dXJuVmFs
dWUudG9TdHJpbmcoZ2xvYmFsT2JqZWN0LT5nbG9iYWxFeGVjKCkpLT52YWx1ZShnbG9iYWxPYmpl
Y3QtPmdsb2JhbEV4ZWMoKSkudXRmOCgpLmRhdGEoKSk7Ci0gICAgICAgIGlmIChldmFsdWF0aW9u
RXhjZXB0aW9uKSB7Ci0gICAgICAgICAgICBwcmludGYoIkV4Y2VwdGlvbjogJXNcbiIsIGV2YWx1
YXRpb25FeGNlcHRpb24tPnZhbHVlKCkudG9TdHJpbmcoZ2xvYmFsT2JqZWN0LT5nbG9iYWxFeGVj
KCkpLT52YWx1ZShnbG9iYWxPYmplY3QtPmdsb2JhbEV4ZWMoKSkudXRmOCgpLmRhdGEoKSk7Ci0g
ICAgICAgICAgICBJZGVudGlmaWVyIHN0YWNrSUQgPSBJZGVudGlmaWVyOjpmcm9tU3RyaW5nKGds
b2JhbE9iamVjdC0+Z2xvYmFsRXhlYygpLCAic3RhY2siKTsKLSAgICAgICAgICAgIEpTVmFsdWUg
c3RhY2tWYWx1ZSA9IGV2YWx1YXRpb25FeGNlcHRpb24tPnZhbHVlKCkuZ2V0KGdsb2JhbE9iamVj
dC0+Z2xvYmFsRXhlYygpLCBzdGFja0lEKTsKLSAgICAgICAgICAgIGlmICghc3RhY2tWYWx1ZS5p
c1VuZGVmaW5lZE9yTnVsbCgpKQotICAgICAgICAgICAgICAgIHByaW50ZigiJXNcbiIsIHN0YWNr
VmFsdWUudG9TdHJpbmcoZ2xvYmFsT2JqZWN0LT5nbG9iYWxFeGVjKCkpLT52YWx1ZShnbG9iYWxP
YmplY3QtPmdsb2JhbEV4ZWMoKSkudXRmOCgpLmRhdGEoKSk7CisgICAgICAgIGlmIChtb2R1bGUp
IHsKKyNpZiBFTkFCTEUoRVM2X01PRFVMRVMpCisgICAgICAgICAgICBOYWtlZFB0cjxFeGNlcHRp
b24+IGV2YWx1YXRpb25FeGNlcHRpb247CisgICAgICAgICAgICBldmFsdWF0ZU1vZHVsZShnbG9i
YWxPYmplY3QtPmdsb2JhbEV4ZWMoKSwganNjU291cmNlKHNjcmlwdCwgZmlsZU5hbWUpLCBldmFs
dWF0aW9uRXhjZXB0aW9uKTsKKyAgICAgICAgICAgIGR1bXBFeGNlcHRpb24oZ2xvYmFsT2JqZWN0
LCBldmFsdWF0aW9uRXhjZXB0aW9uKTsKKyAgICAgICAgICAgIGdsb2JhbE9iamVjdC0+Z2xvYmFs
RXhlYygpLT5jbGVhckV4Y2VwdGlvbigpOworICAgICAgICAgICAgZ2xvYmFsT2JqZWN0LT52bSgp
LmRyYWluTWljcm90YXNrcygpOworI2VuZGlmCisgICAgICAgIH0gZWxzZSB7CisgICAgICAgICAg
ICBOYWtlZFB0cjxFeGNlcHRpb24+IGV2YWx1YXRpb25FeGNlcHRpb247CisgICAgICAgICAgICBK
U1ZhbHVlIHJldHVyblZhbHVlID0gZXZhbHVhdGUoZ2xvYmFsT2JqZWN0LT5nbG9iYWxFeGVjKCks
IGpzY1NvdXJjZShzY3JpcHQsIGZpbGVOYW1lKSwgSlNWYWx1ZSgpLCBldmFsdWF0aW9uRXhjZXB0
aW9uKTsKKyAgICAgICAgICAgIHN1Y2Nlc3MgPSBzdWNjZXNzICYmICFldmFsdWF0aW9uRXhjZXB0
aW9uOworICAgICAgICAgICAgaWYgKGR1bXAgJiYgIWV2YWx1YXRpb25FeGNlcHRpb24pCisgICAg
ICAgICAgICAgICAgcHJpbnRmKCJFbmQ6ICVzXG4iLCByZXR1cm5WYWx1ZS50b1N0cmluZyhnbG9i
YWxPYmplY3QtPmdsb2JhbEV4ZWMoKSktPnZhbHVlKGdsb2JhbE9iamVjdC0+Z2xvYmFsRXhlYygp
KS51dGY4KCkuZGF0YSgpKTsKKyAgICAgICAgICAgIGR1bXBFeGNlcHRpb24oZ2xvYmFsT2JqZWN0
LCBldmFsdWF0aW9uRXhjZXB0aW9uKTsKICAgICAgICAgfQogCiAgICAgICAgIHZtLnN0b3BTYW1w
bGluZygpOwpAQCAtMTQ1MSw2ICsxNDg2LDkgQEAgc3RhdGljIE5PX1JFVFVSTiB2b2lkIHByaW50
VXNhZ2VTdGF0ZW1lbnQoYm9vbCBoZWxwID0gZmFsc2UpCiAgICAgZnByaW50ZihzdGRlcnIsICIg
IC1mICAgICAgICAgU3BlY2lmaWVzIGEgc291cmNlIGZpbGUgKGRlcHJlY2F0ZWQpXG4iKTsKICAg
ICBmcHJpbnRmKHN0ZGVyciwgIiAgLWh8LS1oZWxwICBQcmludHMgdGhpcyBoZWxwIG1lc3NhZ2Vc
biIpOwogICAgIGZwcmludGYoc3RkZXJyLCAiICAtaSAgICAgICAgIEVuYWJsZXMgaW50ZXJhY3Rp
dmUgbW9kZSAoZGVmYXVsdCBpZiBubyBmaWxlcyBhcmUgc3BlY2lmaWVkKVxuIik7CisjaWYgRU5B
QkxFKEVTNl9NT0RVTEVTKQorICAgIGZwcmludGYoc3RkZXJyLCAiICAtbSAgICAgICAgIEV4ZWN1
dGUgYXMgYSBtb2R1bGVcbiIpOworI2VuZGlmCiAjaWYgSEFWRShTSUdOQUxfSCkKICAgICBmcHJp
bnRmKHN0ZGVyciwgIiAgLXMgICAgICAgICBJbnN0YWxscyBzaWduYWwgaGFuZGxlcnMgdGhhdCBl
eGl0IG9uIGEgY3Jhc2ggKFVuaXggcGxhdGZvcm1zIG9ubHkpXG4iKTsKICNlbmRpZgpAQCAtMTUw
Miw2ICsxNTQwLDEyIEBAIHZvaWQgQ29tbWFuZExpbmU6OnBhcnNlQXJndW1lbnRzKGludCBhcmdj
LCBjaGFyKiogYXJndikKICAgICAgICAgICAgIG1fcHJvZmlsZXJPdXRwdXQgPSBhcmd2W2ldOwog
ICAgICAgICAgICAgY29udGludWU7CiAgICAgICAgIH0KKyNpZiBFTkFCTEUoRVM2X01PRFVMRVMp
CisgICAgICAgIGlmICghc3RyY21wKGFyZywgIi1tIikpIHsKKyAgICAgICAgICAgIG1fbW9kdWxl
ID0gdHJ1ZTsKKyAgICAgICAgICAgIGNvbnRpbnVlOworICAgICAgICB9CisjZW5kaWYKICAgICAg
ICAgaWYgKCFzdHJjbXAoYXJnLCAiLXMiKSkgewogI2lmIEhBVkUoU0lHTkFMX0gpCiAgICAgICAg
ICAgICBzaWduYWwoU0lHSUxMLCBfZXhpdCk7CkBAIC0xNTc3LDcgKzE2MjEsNyBAQCBpbnQganNj
bWFpbihpbnQgYXJnYywgY2hhcioqIGFyZ3YpCiAgICAgICAgICAgICB2bS0+bV9wZXJCeXRlY29k
ZVByb2ZpbGVyID0gc3RkOjptYWtlX3VuaXF1ZTxQcm9maWxlcjo6RGF0YWJhc2U+KCp2bSk7CiAg
ICAgCiAgICAgICAgIEdsb2JhbE9iamVjdCogZ2xvYmFsT2JqZWN0ID0gR2xvYmFsT2JqZWN0Ojpj
cmVhdGUoKnZtLCBHbG9iYWxPYmplY3Q6OmNyZWF0ZVN0cnVjdHVyZSgqdm0sIGpzTnVsbCgpKSwg
b3B0aW9ucy5tX2FyZ3VtZW50cyk7Ci0gICAgICAgIGJvb2wgc3VjY2VzcyA9IHJ1bldpdGhTY3Jp
cHRzKGdsb2JhbE9iamVjdCwgb3B0aW9ucy5tX3NjcmlwdHMsIG9wdGlvbnMubV9kdW1wKTsKKyAg
ICAgICAgYm9vbCBzdWNjZXNzID0gcnVuV2l0aFNjcmlwdHMoZ2xvYmFsT2JqZWN0LCBvcHRpb25z
Lm1fc2NyaXB0cywgb3B0aW9ucy5tX2R1bXAsIG9wdGlvbnMubV9tb2R1bGUpOwogICAgICAgICBp
ZiAob3B0aW9ucy5tX2ludGVyYWN0aXZlICYmIHN1Y2Nlc3MpCiAgICAgICAgICAgICBydW5JbnRl
cmFjdGl2ZShnbG9iYWxPYmplY3QpOwogCmRpZmYgLS1naXQgYS9Tb3VyY2UvSmF2YVNjcmlwdENv
cmUvcGFyc2VyL0xleGVyLmNwcCBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9wYXJzZXIvTGV4ZXIu
Y3BwCmluZGV4IDI1OWQyNTRlMzk3NTE4YzdiY2NmZmM5ZWRlYzE1NmJhNWYwMGRiN2EuLjQ3NjA0
M2ZmNmUyNTVmOWViNjMxNDVjYjg2Y2RhOWVlZjBhNDE1NjYgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9K
YXZhU2NyaXB0Q29yZS9wYXJzZXIvTGV4ZXIuY3BwCisrKyBiL1NvdXJjZS9KYXZhU2NyaXB0Q29y
ZS9wYXJzZXIvTGV4ZXIuY3BwCkBAIC05MzUsNyArOTM1LDcgQEAgdGVtcGxhdGUgPGJvb2wgc2hv
dWxkQ3JlYXRlSWRlbnRpZmllcj4gQUxXQVlTX0lOTElORSBKU1Rva2VuVHlwZSBMZXhlcjxMQ2hh
cj46OnAKICAgICAgICAgICAgICAgICByZXR1cm4gRVJST1JUT0s7CiAgICAgICAgICAgICB9CiAg
ICAgICAgICAgICBpZiAoaXNQcml2YXRlTmFtZSkKLSAgICAgICAgICAgICAgICBpZGVudCA9IG1f
dm0tPnByb3BlcnR5TmFtZXMtPmdldFByaXZhdGVOYW1lKCppZGVudCk7CisgICAgICAgICAgICAg
ICAgaWRlbnQgPSBtX3ZtLT5wcm9wZXJ0eU5hbWVzLT5sb29rVXBQcml2YXRlTmFtZSgqaWRlbnQp
OwogICAgICAgICAgICAgZWxzZSBpZiAoKmlkZW50ID09IG1fdm0tPnByb3BlcnR5TmFtZXMtPnVu
ZGVmaW5lZEtleXdvcmQpCiAgICAgICAgICAgICAgICAgdG9rZW5EYXRhLT5pZGVudCA9ICZtX3Zt
LT5wcm9wZXJ0eU5hbWVzLT51bmRlZmluZWRQcml2YXRlTmFtZTsKICAgICAgICAgICAgIGlmICgh
aWRlbnQpCkBAIC0xMDEyLDcgKzEwMTIsNyBAQCB0ZW1wbGF0ZSA8Ym9vbCBzaG91bGRDcmVhdGVJ
ZGVudGlmaWVyPiBBTFdBWVNfSU5MSU5FIEpTVG9rZW5UeXBlIExleGVyPFVDaGFyPjo6cAogICAg
ICAgICAgICAgICAgIHJldHVybiBFUlJPUlRPSzsKICAgICAgICAgICAgIH0KICAgICAgICAgICAg
IGlmIChpc1ByaXZhdGVOYW1lKQotICAgICAgICAgICAgICAgIGlkZW50ID0gbV92bS0+cHJvcGVy
dHlOYW1lcy0+Z2V0UHJpdmF0ZU5hbWUoKmlkZW50KTsKKyAgICAgICAgICAgICAgICBpZGVudCA9
IG1fdm0tPnByb3BlcnR5TmFtZXMtPmxvb2tVcFByaXZhdGVOYW1lKCppZGVudCk7CiAgICAgICAg
ICAgICBlbHNlIGlmICgqaWRlbnQgPT0gbV92bS0+cHJvcGVydHlOYW1lcy0+dW5kZWZpbmVkS2V5
d29yZCkKICAgICAgICAgICAgICAgICB0b2tlbkRhdGEtPmlkZW50ID0gJm1fdm0tPnByb3BlcnR5
TmFtZXMtPnVuZGVmaW5lZFByaXZhdGVOYW1lOwogICAgICAgICAgICAgaWYgKCFpZGVudCkKZGlm
ZiAtLWdpdCBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9wYXJzZXIvTW9kdWxlQW5hbHl6ZXIuY3Bw
IGIvU291cmNlL0phdmFTY3JpcHRDb3JlL3BhcnNlci9Nb2R1bGVBbmFseXplci5jcHAKaW5kZXgg
YjJkZTk2MGIzOTMyNTg0MWNkOWY4NWM2NzE2MjJjM2RmN2JhOWQ3Ny4uM2QxNzdjYTc3YjhiOGQ4
OGQ4N2I0ZjRlODVjZTNkNDY4MzhjNDQxZCAxMDA2NDQKLS0tIGEvU291cmNlL0phdmFTY3JpcHRD
b3JlL3BhcnNlci9Nb2R1bGVBbmFseXplci5jcHAKKysrIGIvU291cmNlL0phdmFTY3JpcHRDb3Jl
L3BhcnNlci9Nb2R1bGVBbmFseXplci5jcHAKQEAgLTI3LDE0ICsyNywxOCBAQAogI2luY2x1ZGUg
Ik1vZHVsZUFuYWx5emVyLmgiCiAKICNpbmNsdWRlICJJZGVudGlmaWVySW5saW5lcy5oIgotI2lu
Y2x1ZGUgIk1vZHVsZVJlY29yZC5oIgorI2luY2x1ZGUgIkpTQ0pTVmFsdWVJbmxpbmVzLmgiCisj
aW5jbHVkZSAiSlNDZWxsSW5saW5lcy5oIgorI2luY2x1ZGUgIkpTR2xvYmFsT2JqZWN0LmgiCisj
aW5jbHVkZSAiSlNNb2R1bGVSZWNvcmQuaCIKKyNpbmNsdWRlICJTdHJvbmdJbmxpbmVzLmgiCiAK
IG5hbWVzcGFjZSBKU0MgewogCiAKLU1vZHVsZUFuYWx5emVyOjpNb2R1bGVBbmFseXplcihWTSYg
dm0sIGNvbnN0IFZhcmlhYmxlRW52aXJvbm1lbnQmIGRlY2xhcmVkVmFyaWFibGVzLCBjb25zdCBW
YXJpYWJsZUVudmlyb25tZW50JiBsZXhpY2FsVmFyaWFibGVzKQotICAgIDogbV92bSgmdm0pCi0g
ICAgLCBtX21vZHVsZVJlY29yZChNb2R1bGVSZWNvcmQ6OmNyZWF0ZSgpKQorTW9kdWxlQW5hbHl6
ZXI6Ok1vZHVsZUFuYWx5emVyKEV4ZWNTdGF0ZSogZXhlYywgY29uc3QgSWRlbnRpZmllciYgbW9k
dWxlS2V5LCBjb25zdCBWYXJpYWJsZUVudmlyb25tZW50JiBkZWNsYXJlZFZhcmlhYmxlcywgY29u
c3QgVmFyaWFibGVFbnZpcm9ubWVudCYgbGV4aWNhbFZhcmlhYmxlcykKKyAgICA6IG1fdm0oJmV4
ZWMtPnZtKCkpCisgICAgLCBtX21vZHVsZVJlY29yZChleGVjLT52bSgpLCBKU01vZHVsZVJlY29y
ZDo6Y3JlYXRlKGV4ZWMtPnZtKCksIGV4ZWMtPmxleGljYWxHbG9iYWxPYmplY3QoKS0+bW9kdWxl
UmVjb3JkU3RydWN0dXJlKCksIG1vZHVsZUtleSkpCiAgICAgLCBtX2RlY2xhcmVkVmFyaWFibGVz
KGRlY2xhcmVkVmFyaWFibGVzKQogICAgICwgbV9sZXhpY2FsVmFyaWFibGVzKGxleGljYWxWYXJp
YWJsZXMpCiB7CkBAIC03NiwyOCArODAsMjggQEAgdm9pZCBNb2R1bGVBbmFseXplcjo6ZXhwb3J0
VmFyaWFibGUoY29uc3QgUmVmUHRyPFVuaXF1ZWRTdHJpbmdJbXBsPiYgbG9jYWxOYW1lLAogCiAg
ICAgLy8gRXhwb3J0ZWQgbW9kdWxlIGxvY2FsIHZhcmlhYmxlLgogICAgIGlmICghdmFyaWFibGUu
aXNJbXBvcnRlZCgpKSB7Ci0gICAgICAgIG1vZHVsZVJlY29yZCgpLmFkZEV4cG9ydEVudHJ5KE1v
ZHVsZVJlY29yZDo6RXhwb3J0RW50cnk6OmNyZWF0ZUxvY2FsKGV4cG9ydE5hbWUsIElkZW50aWZp
ZXI6OmZyb21VaWQobV92bSwgbG9jYWxOYW1lLmdldCgpKSwgdmFyaWFibGUpKTsKKyAgICAgICAg
bW9kdWxlUmVjb3JkKCktPmFkZEV4cG9ydEVudHJ5KEpTTW9kdWxlUmVjb3JkOjpFeHBvcnRFbnRy
eTo6Y3JlYXRlTG9jYWwoZXhwb3J0TmFtZSwgSWRlbnRpZmllcjo6ZnJvbVVpZChtX3ZtLCBsb2Nh
bE5hbWUuZ2V0KCkpLCB2YXJpYWJsZSkpOwogICAgICAgICByZXR1cm47CiAgICAgfQogCi0gICAg
Y29uc3QgYXV0byYgaW1wb3J0RW50cnkgPSBtb2R1bGVSZWNvcmQoKS5sb29rVXBJbXBvcnRFbnRy
eShsb2NhbE5hbWUpOworICAgIGNvbnN0IGF1dG8mIGltcG9ydEVudHJ5ID0gbW9kdWxlUmVjb3Jk
KCktPmxvb2tVcEltcG9ydEVudHJ5KGxvY2FsTmFtZSk7CiAgICAgaWYgKGltcG9ydEVudHJ5Lmlz
TmFtZXNwYWNlKHZtKCkpKSB7CiAgICAgICAgIC8vIEV4cG9ydGVkIG5hbWVzcGFjZSBiaW5kaW5n
LgogICAgICAgICAvLyBpbXBvcnQgKiBhcyBuYW1lc3BhY2UgZnJvbSAibW9kIgogICAgICAgICAv
LyBleHBvcnQgeyBuYW1lc3BhY2UgfQotICAgICAgICBtb2R1bGVSZWNvcmQoKS5hZGRFeHBvcnRF
bnRyeShNb2R1bGVSZWNvcmQ6OkV4cG9ydEVudHJ5OjpjcmVhdGVOYW1lc3BhY2UoZXhwb3J0TmFt
ZSwgaW1wb3J0RW50cnkubW9kdWxlUmVxdWVzdCkpOworICAgICAgICBtb2R1bGVSZWNvcmQoKS0+
YWRkRXhwb3J0RW50cnkoSlNNb2R1bGVSZWNvcmQ6OkV4cG9ydEVudHJ5OjpjcmVhdGVOYW1lc3Bh
Y2UoZXhwb3J0TmFtZSwgaW1wb3J0RW50cnkubW9kdWxlUmVxdWVzdCkpOwogICAgICAgICByZXR1
cm47CiAgICAgfQogCiAgICAgLy8gSW5kaXJlY3RseSBleHBvcnRlZCBiaW5kaW5nLgogICAgIC8v
IGltcG9ydCBhIGZyb20gIm1vZCIKICAgICAvLyBleHBvcnQgeyBhIH0KLSAgICBtb2R1bGVSZWNv
cmQoKS5hZGRFeHBvcnRFbnRyeShNb2R1bGVSZWNvcmQ6OkV4cG9ydEVudHJ5OjpjcmVhdGVJbmRp
cmVjdChleHBvcnROYW1lLCBpbXBvcnRFbnRyeS5pbXBvcnROYW1lLCBpbXBvcnRFbnRyeS5tb2R1
bGVSZXF1ZXN0KSk7CisgICAgbW9kdWxlUmVjb3JkKCktPmFkZEV4cG9ydEVudHJ5KEpTTW9kdWxl
UmVjb3JkOjpFeHBvcnRFbnRyeTo6Y3JlYXRlSW5kaXJlY3QoZXhwb3J0TmFtZSwgaW1wb3J0RW50
cnkuaW1wb3J0TmFtZSwgaW1wb3J0RW50cnkubW9kdWxlUmVxdWVzdCkpOwogfQogCiAKIAotUmVm
PE1vZHVsZVJlY29yZD4gTW9kdWxlQW5hbHl6ZXI6OmFuYWx5emUoTW9kdWxlUHJvZ3JhbU5vZGUm
IG1vZHVsZVByb2dyYW1Ob2RlKQorSlNNb2R1bGVSZWNvcmQqIE1vZHVsZUFuYWx5emVyOjphbmFs
eXplKE1vZHVsZVByb2dyYW1Ob2RlJiBtb2R1bGVQcm9ncmFtTm9kZSkKIHsKICAgICAvLyBUcmF2
ZXJzZSB0aGUgbW9kdWxlIEFTVCBhbmQgY29sbGVjdAogICAgIC8vICogSW1wb3J0IGVudHJpZXMK
QEAgLTE0OSw3ICsxNTMsNyBAQCBSZWY8TW9kdWxlUmVjb3JkPiBNb2R1bGVBbmFseXplcjo6YW5h
bHl6ZShNb2R1bGVQcm9ncmFtTm9kZSYgbW9kdWxlUHJvZ3JhbU5vZGUpCiAgICAgaWYgKE9wdGlv
bnM6OmR1bXBNb2R1bGVSZWNvcmQoKSkKICAgICAgICAgbV9tb2R1bGVSZWNvcmQtPmR1bXAoKTsK
IAotICAgIHJldHVybiAqbV9tb2R1bGVSZWNvcmQ7CisgICAgcmV0dXJuIG1fbW9kdWxlUmVjb3Jk
LmdldCgpOwogfQogCiB9IC8vIG5hbWVzcGFjZSBKU0MKZGlmZiAtLWdpdCBhL1NvdXJjZS9KYXZh
U2NyaXB0Q29yZS9wYXJzZXIvTW9kdWxlQW5hbHl6ZXIuaCBiL1NvdXJjZS9KYXZhU2NyaXB0Q29y
ZS9wYXJzZXIvTW9kdWxlQW5hbHl6ZXIuaAppbmRleCAwMjc2NDg0NzY1MGIzMDI0ZmQyYThjMzcy
MmU3M2E3NDdiOTYzY2I2Li4yMjhhNjlmZWU3NDczNjYyMGQ3ZjZkYTU3MWJiNmFjYWQ4NDZiNzA2
IDEwMDY0NAotLS0gYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvcGFyc2VyL01vZHVsZUFuYWx5emVy
LmgKKysrIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL3BhcnNlci9Nb2R1bGVBbmFseXplci5oCkBA
IC0yNiwyMCArMjYsMjIgQEAKICNpZm5kZWYgTW9kdWxlQW5hbHl6ZXJfaAogI2RlZmluZSBNb2R1
bGVBbmFseXplcl9oCiAKLSNpbmNsdWRlICJNb2R1bGVSZWNvcmQuaCIKICNpbmNsdWRlICJOb2Rl
cy5oIgogCiBuYW1lc3BhY2UgSlNDIHsKIAorY2xhc3MgSlNNb2R1bGVSZWNvcmQ7CisKIGNsYXNz
IE1vZHVsZUFuYWx5emVyIHsKKyAgICBXVEZfTUFLRV9OT05DT1BZQUJMRShNb2R1bGVBbmFseXpl
cik7CiBwdWJsaWM6Ci0gICAgTW9kdWxlQW5hbHl6ZXIoVk0mLCBjb25zdCBWYXJpYWJsZUVudmly
b25tZW50JiBkZWNsYXJlZFZhcmlhYmxlcywgY29uc3QgVmFyaWFibGVFbnZpcm9ubWVudCYgbGV4
aWNhbFZhcmlhYmxlcyk7CisgICAgTW9kdWxlQW5hbHl6ZXIoRXhlY1N0YXRlKiwgY29uc3QgSWRl
bnRpZmllciYgbW9kdWxlS2V5LCBjb25zdCBWYXJpYWJsZUVudmlyb25tZW50JiBkZWNsYXJlZFZh
cmlhYmxlcywgY29uc3QgVmFyaWFibGVFbnZpcm9ubWVudCYgbGV4aWNhbFZhcmlhYmxlcyk7CiAK
LSAgICBSZWY8TW9kdWxlUmVjb3JkPiBhbmFseXplKE1vZHVsZVByb2dyYW1Ob2RlJik7CisgICAg
SlNNb2R1bGVSZWNvcmQqIGFuYWx5emUoTW9kdWxlUHJvZ3JhbU5vZGUmKTsKIAogICAgIFZNJiB2
bSgpIHsgcmV0dXJuICptX3ZtOyB9CiAKLSAgICBNb2R1bGVSZWNvcmQmIG1vZHVsZVJlY29yZCgp
IHsgcmV0dXJuICptX21vZHVsZVJlY29yZDsgfQorICAgIEpTTW9kdWxlUmVjb3JkKiBtb2R1bGVS
ZWNvcmQoKSB7IHJldHVybiBtX21vZHVsZVJlY29yZC5nZXQoKTsgfQogCiAgICAgdm9pZCBkZWNs
YXJlRXhwb3J0QWxpYXMoY29uc3QgSWRlbnRpZmllciYgbG9jYWxOYW1lLCBjb25zdCBJZGVudGlm
aWVyJiBleHBvcnROYW1lKTsKIApAQCAtNTEsNyArNTMsNyBAQCBjbGFzcyBNb2R1bGVBbmFseXpl
ciB7CiAgICAgSWRlbnRpZmllciBleHBvcnRlZEJpbmRpbmcoY29uc3QgUmVmUHRyPFVuaXF1ZWRT
dHJpbmdJbXBsPiYgaWRlbnQpOwogCiAgICAgVk0qIG1fdm07Ci0gICAgUmVmUHRyPE1vZHVsZVJl
Y29yZD4gbV9tb2R1bGVSZWNvcmQ7CisgICAgU3Ryb25nPEpTTW9kdWxlUmVjb3JkPiBtX21vZHVs
ZVJlY29yZDsKICAgICBWYXJpYWJsZUVudmlyb25tZW50IG1fZGVjbGFyZWRWYXJpYWJsZXM7CiAg
ICAgVmFyaWFibGVFbnZpcm9ubWVudCBtX2xleGljYWxWYXJpYWJsZXM7CiAgICAgSWRlbnRpZmll
ckFsaWFzTWFwIG1fYWxpYXNNYXA7CmRpZmYgLS1naXQgYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUv
cGFyc2VyL01vZHVsZVJlY29yZC5jcHAgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvcGFyc2VyL01v
ZHVsZVJlY29yZC5jcHAKZGVsZXRlZCBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IGVjOTczNTY4YmVj
OGEwYjE1MzMzMmY0ODc1ZjllZmUxMzc4MmVjOGEuLjAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAKLS0tIGEvU291cmNlL0phdmFTY3JpcHRDb3JlL3BhcnNlci9Nb2R1bGVS
ZWNvcmQuY3BwCisrKyAvZGV2L251bGwKQEAgLTEsOTUgKzAsMCBAQAotLyoKLSAqIENvcHlyaWdo
dCAoQykgMjAxNSBBcHBsZSBJbmMuIEFsbCByaWdodHMgcmVzZXJ2ZWQuCi0gKgotICogUmVkaXN0
cmlidXRpb24gYW5kIHVzZSBpbiBzb3VyY2UgYW5kIGJpbmFyeSBmb3Jtcywgd2l0aCBvciB3aXRo
b3V0Ci0gKiBtb2RpZmljYXRpb24sIGFyZSBwZXJtaXR0ZWQgcHJvdmlkZWQgdGhhdCB0aGUgZm9s
bG93aW5nIGNvbmRpdGlvbnMKLSAqIGFyZSBtZXQ6Ci0gKiAxLiBSZWRpc3RyaWJ1dGlvbnMgb2Yg
c291cmNlIGNvZGUgbXVzdCByZXRhaW4gdGhlIGFib3ZlIGNvcHlyaWdodAotICogICAgbm90aWNl
LCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyLgot
ICogMi4gUmVkaXN0cmlidXRpb25zIGluIGJpbmFyeSBmb3JtIG11c3QgcmVwcm9kdWNlIHRoZSBh
Ym92ZSBjb3B5cmlnaHQKLSAqICAgIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5k
IHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lciBpbiB0aGUKLSAqICAgIGRvY3VtZW50YXRpb24gYW5k
L29yIG90aGVyIG1hdGVyaWFscyBwcm92aWRlZCB3aXRoIHRoZSBkaXN0cmlidXRpb24uCi0gKgot
ICogVEhJUyBTT0ZUV0FSRSBJUyBQUk9WSURFRCBCWSBBUFBMRSBJTkMuIGBgQVMgSVMnJyBBTkQg
QU5ZCi0gKiBFWFBSRVNTIE9SIElNUExJRUQgV0FSUkFOVElFUywgSU5DTFVESU5HLCBCVVQgTk9U
IExJTUlURUQgVE8sIFRIRQotICogSU1QTElFRCBXQVJSQU5USUVTIE9GIE1FUkNIQU5UQUJJTElU
WSBBTkQgRklUTkVTUyBGT1IgQSBQQVJUSUNVTEFSCi0gKiBQVVJQT1NFIEFSRSBESVNDTEFJTUVE
LiAgSU4gTk8gRVZFTlQgU0hBTEwgQVBQTEUgSU5DLiBPUgotICogQ09OVFJJQlVUT1JTIEJFIExJ
QUJMRSBGT1IgQU5ZIERJUkVDVCwgSU5ESVJFQ1QsIElOQ0lERU5UQUwsIFNQRUNJQUwsCi0gKiBF
WEVNUExBUlksIE9SIENPTlNFUVVFTlRJQUwgREFNQUdFUyAoSU5DTFVESU5HLCBCVVQgTk9UIExJ
TUlURUQgVE8sCi0gKiBQUk9DVVJFTUVOVCBPRiBTVUJTVElUVVRFIEdPT0RTIE9SIFNFUlZJQ0VT
OyBMT1NTIE9GIFVTRSwgREFUQSwgT1IKLSAqIFBST0ZJVFM7IE9SIEJVU0lORVNTIElOVEVSUlVQ
VElPTikgSE9XRVZFUiBDQVVTRUQgQU5EIE9OIEFOWSBUSEVPUlkKLSAqIE9GIExJQUJJTElUWSwg
V0hFVEhFUiBJTiBDT05UUkFDVCwgU1RSSUNUIExJQUJJTElUWSwgT1IgVE9SVAotICogKElOQ0xV
RElORyBORUdMSUdFTkNFIE9SIE9USEVSV0lTRSkgQVJJU0lORyBJTiBBTlkgV0FZIE9VVCBPRiBU
SEUgVVNFCi0gKiBPRiBUSElTIFNPRlRXQVJFLCBFVkVOIElGIEFEVklTRUQgT0YgVEhFIFBPU1NJ
QklMSVRZIE9GIFNVQ0ggREFNQUdFLiAKLSAqLwotCi0jaW5jbHVkZSAiY29uZmlnLmgiCi0jaW5j
bHVkZSAiTW9kdWxlUmVjb3JkLmgiCi0KLSNpbmNsdWRlICJJZGVudGlmaWVySW5saW5lcy5oIgot
Ci1uYW1lc3BhY2UgSlNDIHsKLQotCi1hdXRvIE1vZHVsZVJlY29yZDo6RXhwb3J0RW50cnk6OmNy
ZWF0ZUxvY2FsKGNvbnN0IElkZW50aWZpZXImIGV4cG9ydE5hbWUsIGNvbnN0IElkZW50aWZpZXIm
IGxvY2FsTmFtZSwgY29uc3QgVmFyaWFibGVFbnZpcm9ubWVudEVudHJ5JiB2YXJpYWJsZSkgLT4g
RXhwb3J0RW50cnkKLXsKLSAgICByZXR1cm4gRXhwb3J0RW50cnkgeyBUeXBlOjpMb2NhbCwgZXhw
b3J0TmFtZSwgSWRlbnRpZmllcigpLCBJZGVudGlmaWVyKCksIGxvY2FsTmFtZSwgdmFyaWFibGUg
fTsKLX0KLQotYXV0byBNb2R1bGVSZWNvcmQ6OkV4cG9ydEVudHJ5OjpjcmVhdGVOYW1lc3BhY2Uo
Y29uc3QgSWRlbnRpZmllciYgZXhwb3J0TmFtZSwgY29uc3QgSWRlbnRpZmllciYgbW9kdWxlTmFt
ZSkgLT4gRXhwb3J0RW50cnkKLXsKLSAgICByZXR1cm4gRXhwb3J0RW50cnkgeyBUeXBlOjpOYW1l
c3BhY2UsIGV4cG9ydE5hbWUsIG1vZHVsZU5hbWUsIElkZW50aWZpZXIoKSwgSWRlbnRpZmllcigp
LCBWYXJpYWJsZUVudmlyb25tZW50RW50cnkoKSB9OwotfQotCi1hdXRvIE1vZHVsZVJlY29yZDo6
RXhwb3J0RW50cnk6OmNyZWF0ZUluZGlyZWN0KGNvbnN0IElkZW50aWZpZXImIGV4cG9ydE5hbWUs
IGNvbnN0IElkZW50aWZpZXImIGltcG9ydE5hbWUsIGNvbnN0IElkZW50aWZpZXImIG1vZHVsZU5h
bWUpIC0+IEV4cG9ydEVudHJ5Ci17Ci0gICAgcmV0dXJuIEV4cG9ydEVudHJ5IHsgVHlwZTo6SW5k
aXJlY3QsIGV4cG9ydE5hbWUsIG1vZHVsZU5hbWUsIGltcG9ydE5hbWUsIElkZW50aWZpZXIoKSwg
VmFyaWFibGVFbnZpcm9ubWVudEVudHJ5KCkgfTsKLX0KLQotc3RhdGljIFN0cmluZyBwcmludGFi
bGVOYW1lKGNvbnN0IFJlZlB0cjxVbmlxdWVkU3RyaW5nSW1wbD4mIHVpZCkKLXsKLSAgICBpZiAo
dWlkLT5pc1N5bWJvbCgpKQotICAgICAgICByZXR1cm4gdWlkLmdldCgpOwotICAgIHJldHVybiBX
VEY6Om1ha2VTdHJpbmcoIiciLCBTdHJpbmcodWlkLmdldCgpKSwgIiciKTsKLX0KLQotc3RhdGlj
IFN0cmluZyBwcmludGFibGVOYW1lKGNvbnN0IElkZW50aWZpZXImIGlkZW50KQotewotICAgIHJl
dHVybiBwcmludGFibGVOYW1lKGlkZW50LmltcGwoKSk7Ci19Ci0KLQotdm9pZCBNb2R1bGVSZWNv
cmQ6OmR1bXAoKQotewotICAgIGRhdGFMb2coIlxuQW5hbHl6aW5nIE1vZHVsZVJlY29yZFxuIik7
Ci0KLSAgICBkYXRhTG9nKCIgICAgRGVwZW5kZW5jaWVzOiAiLCBtX3JlcXVlc3RlZE1vZHVsZXMu
c2l6ZSgpLCAiIG1vZHVsZXNcbiIpOwotICAgIGZvciAoY29uc3QgYXV0byYgbW9kdWxlTmFtZSA6
IG1fcmVxdWVzdGVkTW9kdWxlcykKLSAgICAgICAgZGF0YUxvZygiICAgICAgbW9kdWxlKCIsIHBy
aW50YWJsZU5hbWUobW9kdWxlTmFtZSksICIpXG4iKTsKLQotICAgIGRhdGFMb2coIiAgICBJbXBv
cnQ6ICIsIG1faW1wb3J0RW50cmllcy5zaXplKCksICIgZW50cmllc1xuIik7Ci0gICAgZm9yIChj
b25zdCBhdXRvJiBwYWlyIDogbV9pbXBvcnRFbnRyaWVzKQotICAgICAgICBkYXRhTG9nKCIgICAg
ICBpbXBvcnQoIiwgcHJpbnRhYmxlTmFtZShwYWlyLnZhbHVlLmltcG9ydE5hbWUpLCAiKSwgbG9j
YWwoIiwgcHJpbnRhYmxlTmFtZShwYWlyLnZhbHVlLmxvY2FsTmFtZSksICIpLCBtb2R1bGUoIiwg
cHJpbnRhYmxlTmFtZShwYWlyLnZhbHVlLm1vZHVsZVJlcXVlc3QpLCAiKVxuIik7Ci0KLSAgICBk
YXRhTG9nKCIgICAgRXhwb3J0OiAiLCBtX2V4cG9ydEVudHJpZXMuc2l6ZSgpLCAiIGVudHJpZXNc
biIpOwotICAgIGZvciAoY29uc3QgYXV0byYgcGFpciA6IG1fZXhwb3J0RW50cmllcykgewotICAg
ICAgICBjb25zdCBFeHBvcnRFbnRyeSYgZW50cnkgPSBwYWlyLnZhbHVlOwotICAgICAgICBzd2l0
Y2ggKGVudHJ5LnR5cGUpIHsKLSAgICAgICAgY2FzZSBFeHBvcnRFbnRyeTo6VHlwZTo6TG9jYWw6
Ci0gICAgICAgICAgICBkYXRhTG9nKCIgICAgICBbTG9jYWxdICIsICJleHBvcnQoIiwgcHJpbnRh
YmxlTmFtZShlbnRyeS5leHBvcnROYW1lKSwgIiksIGxvY2FsKCIsIHByaW50YWJsZU5hbWUoZW50
cnkubG9jYWxOYW1lKSwgIilcbiIpOwotICAgICAgICAgICAgYnJlYWs7Ci0KLSAgICAgICAgY2Fz
ZSBFeHBvcnRFbnRyeTo6VHlwZTo6TmFtZXNwYWNlOgotICAgICAgICAgICAgZGF0YUxvZygiICAg
ICAgW05hbWVzcGFjZV0gIiwgImV4cG9ydCgiLCBwcmludGFibGVOYW1lKGVudHJ5LmV4cG9ydE5h
bWUpLCAiKSwgbW9kdWxlKCIsIHByaW50YWJsZU5hbWUoZW50cnkubW9kdWxlTmFtZSksICIpXG4i
KTsKLSAgICAgICAgICAgIGJyZWFrOwotCi0gICAgICAgIGNhc2UgRXhwb3J0RW50cnk6OlR5cGU6
OkluZGlyZWN0OgotICAgICAgICAgICAgZGF0YUxvZygiICAgICAgW0luZGlyZWN0XSAiLCAiZXhw
b3J0KCIsIHByaW50YWJsZU5hbWUoZW50cnkuZXhwb3J0TmFtZSksICIpLCBpbXBvcnQoIiwgcHJp
bnRhYmxlTmFtZShlbnRyeS5pbXBvcnROYW1lKSwgIiksIG1vZHVsZSgiLCBwcmludGFibGVOYW1l
KGVudHJ5Lm1vZHVsZU5hbWUpLCAiKVxuIik7Ci0gICAgICAgICAgICBicmVhazsKLSAgICAgICAg
fQotICAgIH0KLSAgICBmb3IgKGNvbnN0IGF1dG8mIG1vZHVsZU5hbWUgOiBtX3N0YXJFeHBvcnRF
bnRyaWVzKQotICAgICAgICBkYXRhTG9nKCIgICAgICBbU3Rhcl0gbW9kdWxlKCIsIHByaW50YWJs
ZU5hbWUobW9kdWxlTmFtZS5nZXQoKSksICIpXG4iKTsKLX0KLQotfSAvLyBuYW1lc3BhY2UgSlND
CmRpZmYgLS1naXQgYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvcGFyc2VyL01vZHVsZVJlY29yZC5o
IGIvU291cmNlL0phdmFTY3JpcHRDb3JlL3BhcnNlci9Nb2R1bGVSZWNvcmQuaApkZWxldGVkIGZp
bGUgbW9kZSAxMDA2NDQKaW5kZXggZWYwODFjMDNiMGE1YmRlNmYxNTU2MjlkZjNmNTA2Y2FmM2Ni
MTcxNC4uMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMAotLS0gYS9Tb3Vy
Y2UvSmF2YVNjcmlwdENvcmUvcGFyc2VyL01vZHVsZVJlY29yZC5oCisrKyAvZGV2L251bGwKQEAg
LTEsMTI4ICswLDAgQEAKLS8qCi0gKiBDb3B5cmlnaHQgKEMpIDIwMTUgQXBwbGUgSW5jLiBBbGwg
cmlnaHRzIHJlc2VydmVkLgotICoKLSAqIFJlZGlzdHJpYnV0aW9uIGFuZCB1c2UgaW4gc291cmNl
IGFuZCBiaW5hcnkgZm9ybXMsIHdpdGggb3Igd2l0aG91dAotICogbW9kaWZpY2F0aW9uLCBhcmUg
cGVybWl0dGVkIHByb3ZpZGVkIHRoYXQgdGhlIGZvbGxvd2luZyBjb25kaXRpb25zCi0gKiBhcmUg
bWV0OgotICogMS4gUmVkaXN0cmlidXRpb25zIG9mIHNvdXJjZSBjb2RlIG11c3QgcmV0YWluIHRo
ZSBhYm92ZSBjb3B5cmlnaHQKLSAqICAgIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMg
YW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lci4KLSAqIDIuIFJlZGlzdHJpYnV0aW9ucyBpbiBi
aW5hcnkgZm9ybSBtdXN0IHJlcHJvZHVjZSB0aGUgYWJvdmUgY29weXJpZ2h0Ci0gKiAgICBub3Rp
Y2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIg
aW4gdGhlCi0gKiAgICBkb2N1bWVudGF0aW9uIGFuZC9vciBvdGhlciBtYXRlcmlhbHMgcHJvdmlk
ZWQgd2l0aCB0aGUgZGlzdHJpYnV0aW9uLgotICoKLSAqIFRISVMgU09GVFdBUkUgSVMgUFJPVklE
RUQgQlkgQVBQTEUgSU5DLiBgYEFTIElTJycgQU5EIEFOWQotICogRVhQUkVTUyBPUiBJTVBMSUVE
IFdBUlJBTlRJRVMsIElOQ0xVRElORywgQlVUIE5PVCBMSU1JVEVEIFRPLCBUSEUKLSAqIElNUExJ
RUQgV0FSUkFOVElFUyBPRiBNRVJDSEFOVEFCSUxJVFkgQU5EIEZJVE5FU1MgRk9SIEEgUEFSVElD
VUxBUgotICogUFVSUE9TRSBBUkUgRElTQ0xBSU1FRC4gIElOIE5PIEVWRU5UIFNIQUxMIEFQUExF
IElOQy4gT1IKLSAqIENPTlRSSUJVVE9SUyBCRSBMSUFCTEUgRk9SIEFOWSBESVJFQ1QsIElORElS
RUNULCBJTkNJREVOVEFMLCBTUEVDSUFMLAotICogRVhFTVBMQVJZLCBPUiBDT05TRVFVRU5USUFM
IERBTUFHRVMgKElOQ0xVRElORywgQlVUIE5PVCBMSU1JVEVEIFRPLAotICogUFJPQ1VSRU1FTlQg
T0YgU1VCU1RJVFVURSBHT09EUyBPUiBTRVJWSUNFUzsgTE9TUyBPRiBVU0UsIERBVEEsIE9SCi0g
KiBQUk9GSVRTOyBPUiBCVVNJTkVTUyBJTlRFUlJVUFRJT04pIEhPV0VWRVIgQ0FVU0VEIEFORCBP
TiBBTlkgVEhFT1JZCi0gKiBPRiBMSUFCSUxJVFksIFdIRVRIRVIgSU4gQ09OVFJBQ1QsIFNUUklD
VCBMSUFCSUxJVFksIE9SIFRPUlQKLSAqIChJTkNMVURJTkcgTkVHTElHRU5DRSBPUiBPVEhFUldJ
U0UpIEFSSVNJTkcgSU4gQU5ZIFdBWSBPVVQgT0YgVEhFIFVTRQotICogT0YgVEhJUyBTT0ZUV0FS
RSwgRVZFTiBJRiBBRFZJU0VEIE9GIFRIRSBQT1NTSUJJTElUWSBPRiBTVUNIIERBTUFHRS4KLSAq
LwotCi0jaWZuZGVmIE1vZHVsZVJlY29yZF9oCi0jZGVmaW5lIE1vZHVsZVJlY29yZF9oCi0KLSNp
bmNsdWRlICJOb2Rlcy5oIgotI2luY2x1ZGUgPHd0Zi9IYXNoTWFwLmg+Ci0jaW5jbHVkZSA8d3Rm
L0xpc3RIYXNoU2V0Lmg+Ci0KLW5hbWVzcGFjZSBKU0MgewotCi0vLyBCYXNlZCBvbiB0aGUgU291
cmNlIFRleHQgTW9kdWxlIFJlY29yZAotLy8gaHR0cDovL3d3dy5lY21hLWludGVybmF0aW9uYWwu
b3JnL2VjbWEtMjYyLzYuMC8jc2VjLXNvdXJjZS10ZXh0LW1vZHVsZS1yZWNvcmRzCi1jbGFzcyBN
b2R1bGVSZWNvcmQgOiBwdWJsaWMgUmVmQ291bnRlZDxNb2R1bGVSZWNvcmQ+IHsKLXB1YmxpYzoK
LSAgICBzdHJ1Y3QgRXhwb3J0RW50cnkgewotICAgICAgICBlbnVtIGNsYXNzIFR5cGUgewotICAg
ICAgICAgICAgTG9jYWwsCi0gICAgICAgICAgICBOYW1lc3BhY2UsCi0gICAgICAgICAgICBJbmRp
cmVjdAotICAgICAgICB9OwotCi0gICAgICAgIHN0YXRpYyBFeHBvcnRFbnRyeSBjcmVhdGVMb2Nh
bChjb25zdCBJZGVudGlmaWVyJiBleHBvcnROYW1lLCBjb25zdCBJZGVudGlmaWVyJiBsb2NhbE5h
bWUsIGNvbnN0IFZhcmlhYmxlRW52aXJvbm1lbnRFbnRyeSYpOwotICAgICAgICBzdGF0aWMgRXhw
b3J0RW50cnkgY3JlYXRlTmFtZXNwYWNlKGNvbnN0IElkZW50aWZpZXImIGV4cG9ydE5hbWUsIGNv
bnN0IElkZW50aWZpZXImIG1vZHVsZU5hbWUpOwotICAgICAgICBzdGF0aWMgRXhwb3J0RW50cnkg
Y3JlYXRlSW5kaXJlY3QoY29uc3QgSWRlbnRpZmllciYgZXhwb3J0TmFtZSwgY29uc3QgSWRlbnRp
ZmllciYgaW1wb3J0TmFtZSwgY29uc3QgSWRlbnRpZmllciYgbW9kdWxlTmFtZSk7Ci0KLSAgICAg
ICAgVHlwZSB0eXBlOwotICAgICAgICBJZGVudGlmaWVyIGV4cG9ydE5hbWU7Ci0gICAgICAgIElk
ZW50aWZpZXIgbW9kdWxlTmFtZTsKLSAgICAgICAgSWRlbnRpZmllciBpbXBvcnROYW1lOwotICAg
ICAgICBJZGVudGlmaWVyIGxvY2FsTmFtZTsKLSAgICAgICAgVmFyaWFibGVFbnZpcm9ubWVudEVu
dHJ5IHZhcmlhYmxlOwotICAgIH07Ci0KLSAgICBzdHJ1Y3QgSW1wb3J0RW50cnkgewotICAgICAg
ICBJZGVudGlmaWVyIG1vZHVsZVJlcXVlc3Q7Ci0gICAgICAgIElkZW50aWZpZXIgaW1wb3J0TmFt
ZTsKLSAgICAgICAgSWRlbnRpZmllciBsb2NhbE5hbWU7Ci0KLSAgICAgICAgYm9vbCBpc05hbWVz
cGFjZShWTSYgdm0pIGNvbnN0Ci0gICAgICAgIHsKLSAgICAgICAgICAgIHJldHVybiBpbXBvcnRO
YW1lID09IHZtLnByb3BlcnR5TmFtZXMtPnRpbWVzSWRlbnRpZmllcjsKLSAgICAgICAgfQotICAg
IH07Ci0KLSAgICB0eXBlZGVmIFdURjo6TGlzdEhhc2hTZXQ8UmVmUHRyPFVuaXF1ZWRTdHJpbmdJ
bXBsPiwgSWRlbnRpZmllclJlcEhhc2g+IE9yZGVyZWRJZGVudGlmaWVyU2V0OwotICAgIHR5cGVk
ZWYgSGFzaE1hcDxSZWZQdHI8VW5pcXVlZFN0cmluZ0ltcGw+LCBJbXBvcnRFbnRyeSwgSWRlbnRp
ZmllclJlcEhhc2gsIEhhc2hUcmFpdHM8UmVmUHRyPFVuaXF1ZWRTdHJpbmdJbXBsPj4+IEltcG9y
dE1hcDsKLSAgICB0eXBlZGVmIEhhc2hNYXA8UmVmUHRyPFVuaXF1ZWRTdHJpbmdJbXBsPiwgRXhw
b3J0RW50cnksIElkZW50aWZpZXJSZXBIYXNoLCBIYXNoVHJhaXRzPFJlZlB0cjxVbmlxdWVkU3Ry
aW5nSW1wbD4+PiBFeHBvcnRNYXA7Ci0KLSAgICBzdGF0aWMgUmVmPE1vZHVsZVJlY29yZD4gY3Jl
YXRlKCkKLSAgICB7Ci0gICAgICAgIHJldHVybiBhZG9wdFJlZigqbmV3IE1vZHVsZVJlY29yZCk7
Ci0gICAgfQotCi0gICAgdm9pZCBhcHBlbmRSZXF1ZXN0ZWRNb2R1bGUoY29uc3QgSWRlbnRpZmll
ciYpOwotICAgIHZvaWQgYWRkU3RhckV4cG9ydEVudHJ5KGNvbnN0IElkZW50aWZpZXImKTsKLSAg
ICB2b2lkIGFkZEltcG9ydEVudHJ5KGNvbnN0IEltcG9ydEVudHJ5Jik7Ci0gICAgdm9pZCBhZGRF
eHBvcnRFbnRyeShjb25zdCBFeHBvcnRFbnRyeSYpOwotCi0gICAgY29uc3QgSW1wb3J0RW50cnkm
IGxvb2tVcEltcG9ydEVudHJ5KGNvbnN0IFJlZlB0cjxVbmlxdWVkU3RyaW5nSW1wbD4mIGxvY2Fs
TmFtZSk7Ci0KLSAgICB2b2lkIGR1bXAoKTsKLQotcHJpdmF0ZToKLSAgICAvLyBNYXAgbG9jYWxO
YW1lIC0+IEltcG9ydEVudHJ5LgotICAgIEltcG9ydE1hcCBtX2ltcG9ydEVudHJpZXM7Ci0KLSAg
ICAvLyBNYXAgZXhwb3J0TmFtZSAtPiBFeHBvcnRFbnRyeS4KLSAgICBFeHBvcnRNYXAgbV9leHBv
cnRFbnRyaWVzOwotCi0gICAgSWRlbnRpZmllclNldCBtX3N0YXJFeHBvcnRFbnRyaWVzOwotCi0g
ICAgLy8gU2F2ZSB0aGUgb2NjdXJyZW5jZSBvcmRlciBzaW5jZSB0aGUgbW9kdWxlIGxvYWRlciBs
b2FkcyBhbmQgcnVucyB0aGUgbW9kdWxlcyBpbiB0aGlzIG9yZGVyLgotICAgIC8vIGh0dHA6Ly93
d3cuZWNtYS1pbnRlcm5hdGlvbmFsLm9yZy9lY21hLTI2Mi82LjAvI3NlYy1tb2R1bGVldmFsdWF0
aW9uCi0gICAgT3JkZXJlZElkZW50aWZpZXJTZXQgbV9yZXF1ZXN0ZWRNb2R1bGVzOwotfTsKLQot
aW5saW5lIHZvaWQgTW9kdWxlUmVjb3JkOjphcHBlbmRSZXF1ZXN0ZWRNb2R1bGUoY29uc3QgSWRl
bnRpZmllciYgbW9kdWxlTmFtZSkKLXsKLSAgICBtX3JlcXVlc3RlZE1vZHVsZXMuYWRkKG1vZHVs
ZU5hbWUuaW1wbCgpKTsKLX0KLQotaW5saW5lIHZvaWQgTW9kdWxlUmVjb3JkOjphZGRJbXBvcnRF
bnRyeShjb25zdCBJbXBvcnRFbnRyeSYgZW50cnkpCi17Ci0gICAgbV9pbXBvcnRFbnRyaWVzLmFk
ZChlbnRyeS5sb2NhbE5hbWUuaW1wbCgpLCBlbnRyeSk7Ci19Ci0KLWlubGluZSB2b2lkIE1vZHVs
ZVJlY29yZDo6YWRkRXhwb3J0RW50cnkoY29uc3QgRXhwb3J0RW50cnkmIGVudHJ5KQotewotICAg
IG1fZXhwb3J0RW50cmllcy5hZGQoZW50cnkuZXhwb3J0TmFtZS5pbXBsKCksIGVudHJ5KTsKLX0K
LQotaW5saW5lIHZvaWQgTW9kdWxlUmVjb3JkOjphZGRTdGFyRXhwb3J0RW50cnkoY29uc3QgSWRl
bnRpZmllciYgbW9kdWxlTmFtZSkKLXsKLSAgICBtX3N0YXJFeHBvcnRFbnRyaWVzLmFkZChtb2R1
bGVOYW1lLmltcGwoKSk7Ci19Ci0KLWlubGluZSBhdXRvIE1vZHVsZVJlY29yZDo6bG9va1VwSW1w
b3J0RW50cnkoY29uc3QgUmVmUHRyPFVuaXF1ZWRTdHJpbmdJbXBsPiYgbG9jYWxOYW1lKSAtPiBj
b25zdCBJbXBvcnRFbnRyeSYKLXsKLSAgICByZXR1cm4gKCptX2ltcG9ydEVudHJpZXMuZmluZChs
b2NhbE5hbWUpKS52YWx1ZTsKLX0KLQotfSAvLyBuYW1lc3BhY2UgSlNDCi0KLSNlbmRpZiAvLyBN
b2R1bGVSZWNvcmRfaApkaWZmIC0tZ2l0IGEvU291cmNlL0phdmFTY3JpcHRDb3JlL3BhcnNlci9O
b2Rlcy5oIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL3BhcnNlci9Ob2Rlcy5oCmluZGV4IGVkNWZj
MjcyNTM0YTI0NjQyZmQ2MmFlYjFhMWRmOTNlNjhjYWNjMjMuLjVkMGI3NGU1OGRkZWQ2ZWVlOTIz
YTNiYzA0MjhiNzZjZWU4YzFhZjIgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9w
YXJzZXIvTm9kZXMuaAorKysgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvcGFyc2VyL05vZGVzLmgK
QEAgLTc5LDggKzc5LDYgQEAgbmFtZXNwYWNlIEpTQyB7CiAgICAgfTsKICAgICBpbmxpbmUgRmFs
bFRocm91Z2hNb2RlIGludmVydChGYWxsVGhyb3VnaE1vZGUgZmFsbFRocm91Z2hNb2RlKSB7IHJl
dHVybiBzdGF0aWNfY2FzdDxGYWxsVGhyb3VnaE1vZGU+KCFmYWxsVGhyb3VnaE1vZGUpOyB9CiAK
LSAgICB0eXBlZGVmIEhhc2hTZXQ8UmVmUHRyPFVuaXF1ZWRTdHJpbmdJbXBsPiwgSWRlbnRpZmll
clJlcEhhc2g+IElkZW50aWZpZXJTZXQ7Ci0KICAgICBuYW1lc3BhY2UgRGVjbGFyYXRpb25TdGFj
a3MgewogICAgICAgICB0eXBlZGVmIFZlY3RvcjxGdW5jdGlvbk1ldGFkYXRhTm9kZSo+IEZ1bmN0
aW9uU3RhY2s7CiAgICAgfQpkaWZmIC0tZ2l0IGEvU291cmNlL0phdmFTY3JpcHRDb3JlL3BhcnNl
ci9Ob2Rlc0FuYWx5emVNb2R1bGUuY3BwIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL3BhcnNlci9O
b2Rlc0FuYWx5emVNb2R1bGUuY3BwCmluZGV4IDYzM2RlYWVjZTZhZjY2NjU5ZDBlNzZhYzFhYTQx
NjE1OWFiNzVhMzUuLmVkNDYxZGEyNjgzNGZiMzNjOTQ0MDIxNGE5OTVlNDVjOGE4MTk0NTUgMTAw
NjQ0Ci0tLSBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9wYXJzZXIvTm9kZXNBbmFseXplTW9kdWxl
LmNwcAorKysgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvcGFyc2VyL05vZGVzQW5hbHl6ZU1vZHVs
ZS5jcHAKQEAgLTI3LDggKzI3LDkgQEAKICNpbmNsdWRlICJOb2Rlcy5oIgogI2luY2x1ZGUgIk5v
ZGVDb25zdHJ1Y3RvcnMuaCIKIAorI2luY2x1ZGUgIkpTQ0pTVmFsdWVJbmxpbmVzLmgiCisjaW5j
bHVkZSAiSlNNb2R1bGVSZWNvcmQuaCIKICNpbmNsdWRlICJNb2R1bGVBbmFseXplci5oIgotI2lu
Y2x1ZGUgIk1vZHVsZVJlY29yZC5oIgogCiBuYW1lc3BhY2UgSlNDIHsKIApAQCAtNDgsOSArNDks
OSBAQCB2b2lkIFNvdXJjZUVsZW1lbnRzOjphbmFseXplTW9kdWxlKE1vZHVsZUFuYWx5emVyJiBh
bmFseXplcikKIAogdm9pZCBJbXBvcnREZWNsYXJhdGlvbk5vZGU6OmFuYWx5emVNb2R1bGUoTW9k
dWxlQW5hbHl6ZXImIGFuYWx5emVyKQogewotICAgIGFuYWx5emVyLm1vZHVsZVJlY29yZCgpLmFw
cGVuZFJlcXVlc3RlZE1vZHVsZShtX21vZHVsZU5hbWUtPm1vZHVsZU5hbWUoKSk7CisgICAgYW5h
bHl6ZXIubW9kdWxlUmVjb3JkKCktPmFwcGVuZFJlcXVlc3RlZE1vZHVsZShtX21vZHVsZU5hbWUt
Pm1vZHVsZU5hbWUoKSk7CiAgICAgZm9yIChhdXRvKiBzcGVjaWZpZXIgOiBtX3NwZWNpZmllckxp
c3QtPnNwZWNpZmllcnMoKSkgewotICAgICAgICBhbmFseXplci5tb2R1bGVSZWNvcmQoKS5hZGRJ
bXBvcnRFbnRyeShNb2R1bGVSZWNvcmQ6OkltcG9ydEVudHJ5IHsKKyAgICAgICAgYW5hbHl6ZXIu
bW9kdWxlUmVjb3JkKCktPmFkZEltcG9ydEVudHJ5KEpTTW9kdWxlUmVjb3JkOjpJbXBvcnRFbnRy
eSB7CiAgICAgICAgICAgICBtX21vZHVsZU5hbWUtPm1vZHVsZU5hbWUoKSwKICAgICAgICAgICAg
IHNwZWNpZmllci0+aW1wb3J0ZWROYW1lKCksCiAgICAgICAgICAgICBzcGVjaWZpZXItPmxvY2Fs
TmFtZSgpCkBAIC02MCw4ICs2MSw4IEBAIHZvaWQgSW1wb3J0RGVjbGFyYXRpb25Ob2RlOjphbmFs
eXplTW9kdWxlKE1vZHVsZUFuYWx5emVyJiBhbmFseXplcikKIAogdm9pZCBFeHBvcnRBbGxEZWNs
YXJhdGlvbk5vZGU6OmFuYWx5emVNb2R1bGUoTW9kdWxlQW5hbHl6ZXImIGFuYWx5emVyKQogewot
ICAgIGFuYWx5emVyLm1vZHVsZVJlY29yZCgpLmFwcGVuZFJlcXVlc3RlZE1vZHVsZShtX21vZHVs
ZU5hbWUtPm1vZHVsZU5hbWUoKSk7Ci0gICAgYW5hbHl6ZXIubW9kdWxlUmVjb3JkKCkuYWRkU3Rh
ckV4cG9ydEVudHJ5KG1fbW9kdWxlTmFtZS0+bW9kdWxlTmFtZSgpKTsKKyAgICBhbmFseXplci5t
b2R1bGVSZWNvcmQoKS0+YXBwZW5kUmVxdWVzdGVkTW9kdWxlKG1fbW9kdWxlTmFtZS0+bW9kdWxl
TmFtZSgpKTsKKyAgICBhbmFseXplci5tb2R1bGVSZWNvcmQoKS0+YWRkU3RhckV4cG9ydEVudHJ5
KG1fbW9kdWxlTmFtZS0+bW9kdWxlTmFtZSgpKTsKIH0KIAogdm9pZCBFeHBvcnREZWZhdWx0RGVj
bGFyYXRpb25Ob2RlOjphbmFseXplTW9kdWxlKE1vZHVsZUFuYWx5emVyJiBhbmFseXplcikKQEAg
LTc2LDcgKzc3LDcgQEAgdm9pZCBFeHBvcnRMb2NhbERlY2xhcmF0aW9uTm9kZTo6YW5hbHl6ZU1v
ZHVsZShNb2R1bGVBbmFseXplciYpCiB2b2lkIEV4cG9ydE5hbWVkRGVjbGFyYXRpb25Ob2RlOjph
bmFseXplTW9kdWxlKE1vZHVsZUFuYWx5emVyJiBhbmFseXplcikKIHsKICAgICBpZiAobV9tb2R1
bGVOYW1lKQotICAgICAgICBhbmFseXplci5tb2R1bGVSZWNvcmQoKS5hcHBlbmRSZXF1ZXN0ZWRN
b2R1bGUobV9tb2R1bGVOYW1lLT5tb2R1bGVOYW1lKCkpOworICAgICAgICBhbmFseXplci5tb2R1
bGVSZWNvcmQoKS0+YXBwZW5kUmVxdWVzdGVkTW9kdWxlKG1fbW9kdWxlTmFtZS0+bW9kdWxlTmFt
ZSgpKTsKIAogICAgIGZvciAoYXV0byogc3BlY2lmaWVyIDogbV9zcGVjaWZpZXJMaXN0LT5zcGVj
aWZpZXJzKCkpIHsKICAgICAgICAgaWYgKG1fbW9kdWxlTmFtZSkgewpAQCAtODQsNyArODUsNyBA
QCB2b2lkIEV4cG9ydE5hbWVkRGVjbGFyYXRpb25Ob2RlOjphbmFseXplTW9kdWxlKE1vZHVsZUFu
YWx5emVyJiBhbmFseXplcikKICAgICAgICAgICAgIC8vCiAgICAgICAgICAgICAvLyBJbiB0aGlz
IGNhc2UsIG5vIGxvY2FsIHZhcmlhYmxlIG5hbWVzIGFyZSBpbXBvcnRlZCBpbnRvIHRoZSBjdXJy
ZW50IG1vZHVsZS4KICAgICAgICAgICAgIC8vICJ2IiBpbmRpcmVjdGx5IHBvaW50cyB0aGUgYmlu
ZGluZyBpbiAibW9kIi4KLSAgICAgICAgICAgIGFuYWx5emVyLm1vZHVsZVJlY29yZCgpLmFkZEV4
cG9ydEVudHJ5KE1vZHVsZVJlY29yZDo6RXhwb3J0RW50cnk6OmNyZWF0ZUluZGlyZWN0KHNwZWNp
Zmllci0+ZXhwb3J0ZWROYW1lKCksIHNwZWNpZmllci0+bG9jYWxOYW1lKCksIG1fbW9kdWxlTmFt
ZS0+bW9kdWxlTmFtZSgpKSk7CisgICAgICAgICAgICBhbmFseXplci5tb2R1bGVSZWNvcmQoKS0+
YWRkRXhwb3J0RW50cnkoSlNNb2R1bGVSZWNvcmQ6OkV4cG9ydEVudHJ5OjpjcmVhdGVJbmRpcmVj
dChzcGVjaWZpZXItPmV4cG9ydGVkTmFtZSgpLCBzcGVjaWZpZXItPmxvY2FsTmFtZSgpLCBtX21v
ZHVsZU5hbWUtPm1vZHVsZU5hbWUoKSkpOwogICAgICAgICAgICAgY29udGludWU7CiAgICAgICAg
IH0KIApkaWZmIC0tZ2l0IGEvU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvQ29tbW9uSWRl
bnRpZmllcnMuY3BwIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvQ29tbW9uSWRlbnRp
ZmllcnMuY3BwCmluZGV4IGZjNmU2MmNhMDQ1ZTM2MjljZjJhZDNiNmJmY2I3M2Q1ZGRmZjBjZTEu
LmFhMzkyY2ViOGQxYTA2NWE5MjUyYWE3NzQ0ZGFiOGQ5YjE2MDU0ZTkgMTAwNjQ0Ci0tLSBhL1Nv
dXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL0NvbW1vbklkZW50aWZpZXJzLmNwcAorKysgYi9T
b3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9Db21tb25JZGVudGlmaWVycy5jcHAKQEAgLTY4
LDE0ICs2OCwxNCBAQCBib29sIENvbW1vbklkZW50aWZpZXJzOjppc1ByaXZhdGVOYW1lKGNvbnN0
IElkZW50aWZpZXImIGlkZW50KSBjb25zdAogICAgIHJldHVybiBtX2J1aWx0aW5OYW1lcy0+aXNQ
cml2YXRlTmFtZShpZGVudCk7CiB9CiAKLWNvbnN0IElkZW50aWZpZXIqIENvbW1vbklkZW50aWZp
ZXJzOjpnZXRQcml2YXRlTmFtZShjb25zdCBJZGVudGlmaWVyJiBpZGVudCkgY29uc3QKK2NvbnN0
IElkZW50aWZpZXIqIENvbW1vbklkZW50aWZpZXJzOjpsb29rVXBQcml2YXRlTmFtZShjb25zdCBJ
ZGVudGlmaWVyJiBpZGVudCkgY29uc3QKIHsKLSAgICByZXR1cm4gbV9idWlsdGluTmFtZXMtPmdl
dFByaXZhdGVOYW1lKGlkZW50KTsKKyAgICByZXR1cm4gbV9idWlsdGluTmFtZXMtPmxvb2tVcFBy
aXZhdGVOYW1lKGlkZW50KTsKIH0KICAgICAKLUlkZW50aWZpZXIgQ29tbW9uSWRlbnRpZmllcnM6
OmdldFB1YmxpY05hbWUoY29uc3QgSWRlbnRpZmllciYgaWRlbnQpIGNvbnN0CitJZGVudGlmaWVy
IENvbW1vbklkZW50aWZpZXJzOjpsb29rVXBQdWJsaWNOYW1lKGNvbnN0IElkZW50aWZpZXImIGlk
ZW50KSBjb25zdAogewotICAgIHJldHVybiBtX2J1aWx0aW5OYW1lcy0+Z2V0UHVibGljTmFtZShp
ZGVudCk7CisgICAgcmV0dXJuIG1fYnVpbHRpbk5hbWVzLT5sb29rVXBQdWJsaWNOYW1lKGlkZW50
KTsKIH0KIAogCmRpZmYgLS1naXQgYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9Db21t
b25JZGVudGlmaWVycy5oIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvQ29tbW9uSWRl
bnRpZmllcnMuaAppbmRleCAxNmE1MjMwMGI5YWU5MjQ5NjVlMmRhMjhkYThiYmU3MjIwZjIzMjc3
Li4xNjNiMTE2MTA0MWNjZGIzNWFkNTI5NzZjYWZlNmJkMTFkZmM4Yjc3IDEwMDY0NAotLS0gYS9T
b3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9Db21tb25JZGVudGlmaWVycy5oCisrKyBiL1Nv
dXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL0NvbW1vbklkZW50aWZpZXJzLmgKQEAgLTQyLDYg
KzQyLDcgQEAKICAgICBtYWNybyhJbmZpbml0eSkgXAogICAgIG1hY3JvKEludGwpIFwKICAgICBt
YWNybyhKU09OKSBcCisgICAgbWFjcm8oTG9hZGVyKSBcCiAgICAgbWFjcm8oTWFwKVwKICAgICBt
YWNybyhNYXBJdGVyYXRvcilcCiAgICAgbWFjcm8oTWF0aCkgXApAQCAtMjgxLDYgKzI4Miw3IEBA
CiAgICAgbWFjcm8oTnVtYmVyKSBcCiAgICAgbWFjcm8oQXJyYXkpIFwKICAgICBtYWNybyhTdHJp
bmcpIFwKKyAgICBtYWNybyhNYXApIFwKICAgICBtYWNybyhQcm9taXNlKSBcCiAgICAgbWFjcm8o
SW50ZXJuYWxQcm9taXNlKSBcCiAgICAgbWFjcm8oYWJzKSBcCkBAIC0zMDMsNiArMzA1LDggQEAK
ICAgICBtYWNybyhjYXBhYmlsaXRpZXMpIFwKICAgICBtYWNybyhzdGFyRGVmYXVsdCkgXAogICAg
IG1hY3JvKEluc3BlY3Rvckluc3RydW1lbnRhdGlvbikgXAorICAgIG1hY3JvKGdldCkgXAorICAg
IG1hY3JvKHNldCkgXAogCiAKIG5hbWVzcGFjZSBKU0MgewpAQCAtMzQ5LDggKzM1Myw4IEBAIG5h
bWVzcGFjZSBKU0MgewogICAgICAgICBib29sIGlzUHJpdmF0ZU5hbWUoVW5pcXVlZFN0cmluZ0lt
cGwmIHVpZCkgY29uc3Q7CiAgICAgICAgIGJvb2wgaXNQcml2YXRlTmFtZShjb25zdCBJZGVudGlm
aWVyJikgY29uc3Q7CiAKLSAgICAgICAgY29uc3QgSWRlbnRpZmllciogZ2V0UHJpdmF0ZU5hbWUo
Y29uc3QgSWRlbnRpZmllciYpIGNvbnN0OwotICAgICAgICBJZGVudGlmaWVyIGdldFB1YmxpY05h
bWUoY29uc3QgSWRlbnRpZmllciYpIGNvbnN0OworICAgICAgICBjb25zdCBJZGVudGlmaWVyKiBs
b29rVXBQcml2YXRlTmFtZShjb25zdCBJZGVudGlmaWVyJikgY29uc3Q7CisgICAgICAgIElkZW50
aWZpZXIgbG9va1VwUHVibGljTmFtZShjb25zdCBJZGVudGlmaWVyJikgY29uc3Q7CiAKICAgICAg
ICAgY29uc3QgQnl0ZWNvZGVJbnRyaW5zaWNSZWdpc3RyeSYgYnl0ZWNvZGVJbnRyaW5zaWNSZWdp
c3RyeSgpIGNvbnN0IHsgcmV0dXJuIG1fYnl0ZWNvZGVJbnRyaW5zaWNSZWdpc3RyeTsgfQogCmRp
ZmYgLS1naXQgYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9Db21wbGV0aW9uLmNwcCBi
L1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL0NvbXBsZXRpb24uY3BwCmluZGV4IGEzZGFl
ZTYwMzQzYWMxNGIxNGFkMDMwNGViZGM5YTI1YWFiMTU3MjMuLjJlZGU0MWNjMWZhNzY1MThkNWUz
MjFkYmY3MjBiNDNjMTc2NGMyNjQgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9y
dW50aW1lL0NvbXBsZXRpb24uY3BwCisrKyBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1l
L0NvbXBsZXRpb24uY3BwCkBAIC0yOCwxMSArMjgsMTIgQEAKICNpbmNsdWRlICJEZWJ1Z2dlci5o
IgogI2luY2x1ZGUgIkV4Y2VwdGlvbi5oIgogI2luY2x1ZGUgIkludGVycHJldGVyLmgiCisjaW5j
bHVkZSAiSlNDSW5saW5lcy5oIgogI2luY2x1ZGUgIkpTR2xvYmFsT2JqZWN0LmgiCiAjaW5jbHVk
ZSAiSlNMb2NrLmgiCi0jaW5jbHVkZSAiSlNDSW5saW5lcy5oIgorI2luY2x1ZGUgIkpTTW9kdWxl
UmVjb3JkLmgiCiAjaW5jbHVkZSAiTW9kdWxlQW5hbHl6ZXIuaCIKLSNpbmNsdWRlICJNb2R1bGVS
ZWNvcmQuaCIKKyNpbmNsdWRlICJNb2R1bGVMb2FkZXJPYmplY3QuaCIKICNpbmNsdWRlICJQYXJz
ZXIuaCIKICNpbmNsdWRlIDx3dGYvV1RGVGhyZWFkRGF0YS5oPgogCkBAIC02Myw4ICs2NCw5IEBA
IGJvb2wgY2hlY2tTeW50YXgoVk0mIHZtLCBjb25zdCBTb3VyY2VDb2RlJiBzb3VyY2UsIFBhcnNl
ckVycm9yJiBlcnJvcikKICAgICAgICAgSlNQYXJzZXJTdHJpY3RNb2RlOjpOb3RTdHJpY3QsIFNv
dXJjZVBhcnNlTW9kZTo6UHJvZ3JhbU1vZGUsIGVycm9yKTsKIH0KIAotYm9vbCBjaGVja01vZHVs
ZVN5bnRheChWTSYgdm0sIGNvbnN0IFNvdXJjZUNvZGUmIHNvdXJjZSwgUGFyc2VyRXJyb3ImIGVy
cm9yKQorYm9vbCBjaGVja01vZHVsZVN5bnRheChFeGVjU3RhdGUqIGV4ZWMsIGNvbnN0IFNvdXJj
ZUNvZGUmIHNvdXJjZSwgUGFyc2VyRXJyb3ImIGVycm9yKQogeworICAgIFZNJiB2bSA9IGV4ZWMt
PnZtKCk7CiAgICAgSlNMb2NrSG9sZGVyIGxvY2sodm0pOwogICAgIFJFTEVBU0VfQVNTRVJUKHZt
LmF0b21pY1N0cmluZ1RhYmxlKCkgPT0gd3RmVGhyZWFkRGF0YSgpLmF0b21pY1N0cmluZ1RhYmxl
KCkpOwogICAgIHN0ZDo6dW5pcXVlX3B0cjxNb2R1bGVQcm9ncmFtTm9kZT4gbW9kdWxlUHJvZ3Jh
bU5vZGUgPSBwYXJzZTxNb2R1bGVQcm9ncmFtTm9kZT4oCkBAIC03Myw3ICs3NSw4IEBAIGJvb2wg
Y2hlY2tNb2R1bGVTeW50YXgoVk0mIHZtLCBjb25zdCBTb3VyY2VDb2RlJiBzb3VyY2UsIFBhcnNl
ckVycm9yJiBlcnJvcikKICAgICBpZiAoIW1vZHVsZVByb2dyYW1Ob2RlKQogICAgICAgICByZXR1
cm4gZmFsc2U7CiAKLSAgICBNb2R1bGVBbmFseXplciBtb2R1bGVBbmFseXplcih2bSwgbW9kdWxl
UHJvZ3JhbU5vZGUtPnZhckRlY2xhcmF0aW9ucygpLCBtb2R1bGVQcm9ncmFtTm9kZS0+bGV4aWNh
bFZhcmlhYmxlcygpKTsKKyAgICBQcml2YXRlTmFtZSBwcml2YXRlTmFtZShQcml2YXRlTmFtZTo6
RGVzY3JpcHRpb24sICJFbnRyeVBvaW50TW9kdWxlIik7CisgICAgTW9kdWxlQW5hbHl6ZXIgbW9k
dWxlQW5hbHl6ZXIoZXhlYywgSWRlbnRpZmllcjo6ZnJvbVVpZChwcml2YXRlTmFtZSksIG1vZHVs
ZVByb2dyYW1Ob2RlLT52YXJEZWNsYXJhdGlvbnMoKSwgbW9kdWxlUHJvZ3JhbU5vZGUtPmxleGlj
YWxWYXJpYWJsZXMoKSk7CiAgICAgbW9kdWxlQW5hbHl6ZXIuYW5hbHl6ZSgqbW9kdWxlUHJvZ3Jh
bU5vZGUpOwogICAgIHJldHVybiB0cnVlOwogfQpAQCAtMTA4LDQgKzExMSw0MyBAQCBKU1ZhbHVl
IGV2YWx1YXRlKEV4ZWNTdGF0ZSogZXhlYywgY29uc3QgU291cmNlQ29kZSYgc291cmNlLCBKU1Zh
bHVlIHRoaXNWYWx1ZSwgTgogICAgIHJldHVybiByZXN1bHQ7CiB9CiAKK3ZvaWQgZXZhbHVhdGVN
b2R1bGUoRXhlY1N0YXRlKiBleGVjLCBjb25zdCBTb3VyY2VDb2RlJiBzb3VyY2UsIE5ha2VkUHRy
PEV4Y2VwdGlvbj4mIHJldHVybmVkRXhjZXB0aW9uKQoreworICAgIEpTTG9ja0hvbGRlciBsb2Nr
KGV4ZWMpOworICAgIFJFTEVBU0VfQVNTRVJUKGV4ZWMtPnZtKCkuYXRvbWljU3RyaW5nVGFibGUo
KSA9PSB3dGZUaHJlYWREYXRhKCkuYXRvbWljU3RyaW5nVGFibGUoKSk7CisgICAgUkVMRUFTRV9B
U1NFUlQoIWV4ZWMtPnZtKCkuaXNDb2xsZWN0b3JCdXN5KCkpOworCisgICAgQ29kZVByb2ZpbGlu
ZyBwcm9maWxlKHNvdXJjZSk7CisKKyAgICBKU0dsb2JhbE9iamVjdCogZ2xvYmFsT2JqZWN0ID0g
ZXhlYy0+dm1FbnRyeUdsb2JhbE9iamVjdCgpOworCisgICAgLy8gR2VuZXJhdGUgdGhlIHVuaXF1
ZSBrZXkgZm9yIHRoZSBzb3VyY2UtcHJvdmlkZWQgbW9kdWxlLgorICAgIFByaXZhdGVOYW1lIHBy
aXZhdGVOYW1lKFByaXZhdGVOYW1lOjpEZXNjcmlwdGlvbiwgIkVudHJ5UG9pbnRNb2R1bGUiKTsK
KyAgICBTeW1ib2wqIGtleSA9IFN5bWJvbDo6Y3JlYXRlKGV4ZWMtPnZtKCksICpwcml2YXRlTmFt
ZS51aWQoKSk7CisKKyAgICBNb2R1bGVMb2FkZXJPYmplY3QqIG1vZHVsZUxvYWRlciA9IGdsb2Jh
bE9iamVjdC0+bW9kdWxlTG9hZGVyKCk7CisKKyAgICAvLyBJbnNlcnQgdGhlIGdpdmVuIHNvdXJj
ZSBjb2RlIHRvIHRoZSBNb2R1bGVMb2FkZXIgcmVnaXN0cnkgYXMgdGhlIGZldGNoZWQgcmVnaXN0
cnkgZW50cnkuCisgICAgbW9kdWxlTG9hZGVyLT5wcm92aWRlKGV4ZWMsIGtleSwgTW9kdWxlTG9h
ZGVyT2JqZWN0OjpTdGF0dXM6OkZldGNoLCBzb3VyY2UudG9TdHJpbmcoKSk7CisgICAgaWYgKGV4
ZWMtPmhhZEV4Y2VwdGlvbigpKSB7CisgICAgICAgIHJldHVybmVkRXhjZXB0aW9uID0gZXhlYy0+
ZXhjZXB0aW9uKCk7CisgICAgICAgIGV4ZWMtPmNsZWFyRXhjZXB0aW9uKCk7CisgICAgICAgIHJl
dHVybjsKKyAgICB9CisKKyAgICAvLyBGSVhNRTogTm93LCB3ZSBkb24ndCBpbXBsZW1lbnQgdGhl
IGxpbmtpbmcgcGhhc2UgeWV0LgorICAgIC8vIFNvIGhlcmUsIHdlIGp1c3QgY2FsbCByZXF1ZXN0
SW5zdGFudGlhdGVBbGwgdG8gb25seSBwZXJmb3JtIHRoZSBtb2R1bGUgbG9hZGluZy4KKyAgICAv
LyBBdCBsYXN0LCBpdCBzaG91bGQgYmUgcmVwbGFjZWQgd2l0aCByZXF1ZXN0UmVhZHkuCisgICAg
Ly8gaHR0cHM6Ly9idWdzLndlYmtpdC5vcmcvc2hvd19idWcuY2dpP2lkPTE0ODE3MgorICAgIG1v
ZHVsZUxvYWRlci0+cmVxdWVzdEluc3RhbnRpYXRlQWxsKGV4ZWMsIGtleSk7CisKKyAgICAvLyBG
SVhNRTogV2Ugc2hvdWxkIGFsc28gaGFuZGxlIHRoZSBhc3luY2hyb25vdXMgU3ludGF4IEVycm9y
cyB0aGF0IHdpbGwgYmUgZGVsaXZlcmVkIGJ5IHRoZSByZWplY3RlZCBwcm9taXNlLgorICAgIC8v
IGh0dHBzOi8vYnVncy53ZWJraXQub3JnL3Nob3dfYnVnLmNnaT9pZD0xNDgxNzMKKyAgICBpZiAo
ZXhlYy0+aGFkRXhjZXB0aW9uKCkpIHsKKyAgICAgICAgcmV0dXJuZWRFeGNlcHRpb24gPSBleGVj
LT5leGNlcHRpb24oKTsKKyAgICAgICAgZXhlYy0+Y2xlYXJFeGNlcHRpb24oKTsKKyAgICAgICAg
cmV0dXJuOworICAgIH0KK30KKwogfSAvLyBuYW1lc3BhY2UgSlNDCmRpZmYgLS1naXQgYS9Tb3Vy
Y2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9Db21wbGV0aW9uLmggYi9Tb3VyY2UvSmF2YVNjcmlw
dENvcmUvcnVudGltZS9Db21wbGV0aW9uLmgKaW5kZXggNzAyZWQ5ZmFiMGM3OTFmYWUxNTUwNTYy
N2JjNzMxYWRiYWUzYTVmZC4uZGUzMmQ2M2U2M2FjN2NlZDQ5ZDgxN2UyM2MwYjg3ODg2N2EwNWE2
OSAxMDA2NDQKLS0tIGEvU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvQ29tcGxldGlvbi5o
CisrKyBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL0NvbXBsZXRpb24uaApAQCAtMzcs
MTMgKzM3LDE0IEBAIGNsYXNzIFZNOwogCiBKU19FWFBPUlRfUFJJVkFURSBib29sIGNoZWNrU3lu
dGF4KFZNJiwgY29uc3QgU291cmNlQ29kZSYsIFBhcnNlckVycm9yJik7CiBKU19FWFBPUlRfUFJJ
VkFURSBib29sIGNoZWNrU3ludGF4KEV4ZWNTdGF0ZSosIGNvbnN0IFNvdXJjZUNvZGUmLCBKU1Zh
bHVlKiBleGNlcHRpb24gPSAwKTsKLUpTX0VYUE9SVF9QUklWQVRFIGJvb2wgY2hlY2tNb2R1bGVT
eW50YXgoVk0mLCBjb25zdCBTb3VyY2VDb2RlJiwgUGFyc2VyRXJyb3ImKTsKK0pTX0VYUE9SVF9Q
UklWQVRFIGJvb2wgY2hlY2tNb2R1bGVTeW50YXgoRXhlY1N0YXRlKiwgY29uc3QgU291cmNlQ29k
ZSYsIFBhcnNlckVycm9yJik7CiBKU19FWFBPUlRfUFJJVkFURSBKU1ZhbHVlIGV2YWx1YXRlKEV4
ZWNTdGF0ZSosIGNvbnN0IFNvdXJjZUNvZGUmLCBKU1ZhbHVlIHRoaXNWYWx1ZSwgTmFrZWRQdHI8
RXhjZXB0aW9uPiYgcmV0dXJuZWRFeGNlcHRpb24pOwogaW5saW5lIEpTVmFsdWUgZXZhbHVhdGUo
RXhlY1N0YXRlKiBleGVjLCBjb25zdCBTb3VyY2VDb2RlJiBzb3VyY2VDb2RlLCBKU1ZhbHVlIHRo
aXNWYWx1ZSA9IEpTVmFsdWUoKSkKIHsKICAgICBOYWtlZFB0cjxFeGNlcHRpb24+IHVudXNlZDsK
ICAgICByZXR1cm4gZXZhbHVhdGUoZXhlYywgc291cmNlQ29kZSwgdGhpc1ZhbHVlLCB1bnVzZWQp
OwogfQorSlNfRVhQT1JUX1BSSVZBVEUgdm9pZCBldmFsdWF0ZU1vZHVsZShFeGVjU3RhdGUqLCBj
b25zdCBTb3VyY2VDb2RlJiwgTmFrZWRQdHI8RXhjZXB0aW9uPiYgcmV0dXJuZWRFeGNlcHRpb24p
OwogCiB9IC8vIG5hbWVzcGFjZSBKU0MKIApkaWZmIC0tZ2l0IGEvU291cmNlL0phdmFTY3JpcHRD
b3JlL3J1bnRpbWUvRXhjZXB0aW9uSGVscGVycy5jcHAgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUv
cnVudGltZS9FeGNlcHRpb25IZWxwZXJzLmNwcAppbmRleCA0NmMwY2VmOTM5MmE0YWQ3YzBiMDBh
OWEwODQ3ZTBiOWFlZmM1ZmFlLi5iNzg1OWJmZTNlOGVhZmQxZWM2NGFiNWZiZmVhZjI1NzJhZDI3
YzE3IDEwMDY0NAotLS0gYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9FeGNlcHRpb25I
ZWxwZXJzLmNwcAorKysgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9FeGNlcHRpb25I
ZWxwZXJzLmNwcApAQCAtNzMsNyArNzMsNyBAQCBKU09iamVjdCogY3JlYXRlU3RhY2tPdmVyZmxv
d0Vycm9yKEV4ZWNTdGF0ZSogZXhlYykKIEpTT2JqZWN0KiBjcmVhdGVVbmRlZmluZWRWYXJpYWJs
ZUVycm9yKEV4ZWNTdGF0ZSogZXhlYywgY29uc3QgSWRlbnRpZmllciYgaWRlbnQpCiB7CiAgICAg
aWYgKGV4ZWMtPnByb3BlcnR5TmFtZXMoKS5pc1ByaXZhdGVOYW1lKGlkZW50KSkgewotICAgICAg
ICBTdHJpbmcgbWVzc2FnZShtYWtlU3RyaW5nKCJDYW4ndCBmaW5kIHByaXZhdGUgdmFyaWFibGU6
IEAiLCBleGVjLT5wcm9wZXJ0eU5hbWVzKCkuZ2V0UHVibGljTmFtZShpZGVudCkuc3RyaW5nKCkp
KTsKKyAgICAgICAgU3RyaW5nIG1lc3NhZ2UobWFrZVN0cmluZygiQ2FuJ3QgZmluZCBwcml2YXRl
IHZhcmlhYmxlOiBAIiwgZXhlYy0+cHJvcGVydHlOYW1lcygpLmxvb2tVcFB1YmxpY05hbWUoaWRl
bnQpLnN0cmluZygpKSk7CiAgICAgICAgIHJldHVybiBjcmVhdGVSZWZlcmVuY2VFcnJvcihleGVj
LCBtZXNzYWdlKTsKICAgICB9CiAgICAgU3RyaW5nIG1lc3NhZ2UobWFrZVN0cmluZygiQ2FuJ3Qg
ZmluZCB2YXJpYWJsZTogIiwgaWRlbnQuc3RyaW5nKCkpKTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9K
YXZhU2NyaXB0Q29yZS9ydW50aW1lL0lkZW50aWZpZXIuaCBiL1NvdXJjZS9KYXZhU2NyaXB0Q29y
ZS9ydW50aW1lL0lkZW50aWZpZXIuaAppbmRleCA2MWRlNjUzNmE2ZmE0YzI5YWNhNGRmMTRiN2Q2
ZmVjNGQyYTUwM2U2Li44ODljYTZiMjJlNDM3OTM2MmYyNTgwNWZkMDVlNmY4NGFhNjdiYmE2IDEw
MDY0NAotLS0gYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9JZGVudGlmaWVyLmgKKysr
IGIvU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvSWRlbnRpZmllci5oCkBAIC0yOTIsNiAr
MjkyLDcgQEAgc3RydWN0IElkZW50aWZpZXJNYXBJbmRleEhhc2hUcmFpdHMgOiBIYXNoVHJhaXRz
PGludD4gewogICAgIHN0YXRpYyBjb25zdCBib29sIGVtcHR5VmFsdWVJc1plcm8gPSBmYWxzZTsK
IH07CiAKK3R5cGVkZWYgSGFzaFNldDxSZWZQdHI8VW5pcXVlZFN0cmluZ0ltcGw+LCBJZGVudGlm
aWVyUmVwSGFzaD4gSWRlbnRpZmllclNldDsKIHR5cGVkZWYgSGFzaE1hcDxSZWZQdHI8VW5pcXVl
ZFN0cmluZ0ltcGw+LCBpbnQsIElkZW50aWZpZXJSZXBIYXNoLCBIYXNoVHJhaXRzPFJlZlB0cjxV
bmlxdWVkU3RyaW5nSW1wbD4+LCBJZGVudGlmaWVyTWFwSW5kZXhIYXNoVHJhaXRzPiBJZGVudGlm
aWVyTWFwOwogdHlwZWRlZiBIYXNoTWFwPFVuaXF1ZWRTdHJpbmdJbXBsKiwgaW50LCBJZGVudGlm
aWVyUmVwSGFzaCwgSGFzaFRyYWl0czxVbmlxdWVkU3RyaW5nSW1wbCo+LCBJZGVudGlmaWVyTWFw
SW5kZXhIYXNoVHJhaXRzPiBCb3Jyb3dlZElkZW50aWZpZXJNYXA7CiAKZGlmZiAtLWdpdCBhL1Nv
dXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL0pTR2xvYmFsT2JqZWN0LmNwcCBiL1NvdXJjZS9K
YXZhU2NyaXB0Q29yZS9ydW50aW1lL0pTR2xvYmFsT2JqZWN0LmNwcAppbmRleCBlMjg1ZjY2ZGYz
NDI1NzQ2ODdlOGJhZmU5NjU1ZWEwOTExNGQ4Njg0Li45M2VlMWZkNzRiOTkyNTkwNDFjYTFlODYy
ZjYzMTFmNjUwOTgzODlhIDEwMDY0NAotLS0gYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGlt
ZS9KU0dsb2JhbE9iamVjdC5jcHAKKysrIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUv
SlNHbG9iYWxPYmplY3QuY3BwCkBAIC04NCw2ICs4NCw3IEBACiAjaW5jbHVkZSAiSlNMb2NrLmgi
CiAjaW5jbHVkZSAiSlNNYXAuaCIKICNpbmNsdWRlICJKU01hcEl0ZXJhdG9yLmgiCisjaW5jbHVk
ZSAiSlNNb2R1bGVSZWNvcmQuaCIKICNpbmNsdWRlICJKU09OT2JqZWN0LmgiCiAjaW5jbHVkZSAi
SlNQcm9taXNlLmgiCiAjaW5jbHVkZSAiSlNQcm9taXNlQ29uc3RydWN0b3IuaCIKQEAgLTEwNyw2
ICsxMDgsNyBAQAogI2luY2x1ZGUgIk1hcFByb3RvdHlwZS5oIgogI2luY2x1ZGUgIk1hdGhPYmpl
Y3QuaCIKICNpbmNsdWRlICJNaWNyb3Rhc2suaCIKKyNpbmNsdWRlICJNb2R1bGVMb2FkZXJPYmpl
Y3QuaCIKICNpbmNsdWRlICJOYXRpdmVFcnJvckNvbnN0cnVjdG9yLmgiCiAjaW5jbHVkZSAiTmF0
aXZlRXJyb3JQcm90b3R5cGUuaCIKICNpbmNsdWRlICJOdWxsR2V0dGVyRnVuY3Rpb24uaCIKQEAg
LTE2MCw3ICsxNjIsNyBAQCBuYW1lc3BhY2UgSlNDIHsKIAogY29uc3QgQ2xhc3NJbmZvIEpTR2xv
YmFsT2JqZWN0OjpzX2luZm8gPSB7ICJHbG9iYWxPYmplY3QiLCAmQmFzZTo6c19pbmZvLCAmZ2xv
YmFsT2JqZWN0VGFibGUsIENSRUFURV9NRVRIT0RfVEFCTEUoSlNHbG9iYWxPYmplY3QpIH07CiAK
LWNvbnN0IEdsb2JhbE9iamVjdE1ldGhvZFRhYmxlIEpTR2xvYmFsT2JqZWN0OjpzX2dsb2JhbE9i
amVjdE1ldGhvZFRhYmxlID0geyAmYWxsb3dzQWNjZXNzRnJvbSwgJnN1cHBvcnRzUHJvZmlsaW5n
LCAmc3VwcG9ydHNSaWNoU291cmNlSW5mbywgJnNob3VsZEludGVycnVwdFNjcmlwdCwgJmphdmFT
Y3JpcHRSdW50aW1lRmxhZ3MsIG51bGxwdHIsICZzaG91bGRJbnRlcnJ1cHRTY3JpcHRCZWZvcmVU
aW1lb3V0IH07Citjb25zdCBHbG9iYWxPYmplY3RNZXRob2RUYWJsZSBKU0dsb2JhbE9iamVjdDo6
c19nbG9iYWxPYmplY3RNZXRob2RUYWJsZSA9IHsgJmFsbG93c0FjY2Vzc0Zyb20sICZzdXBwb3J0
c1Byb2ZpbGluZywgJnN1cHBvcnRzUmljaFNvdXJjZUluZm8sICZzaG91bGRJbnRlcnJ1cHRTY3Jp
cHQsICZqYXZhU2NyaXB0UnVudGltZUZsYWdzLCBudWxscHRyLCAmc2hvdWxkSW50ZXJydXB0U2Ny
aXB0QmVmb3JlVGltZW91dCwgbnVsbHB0ciwgbnVsbHB0ciwgbnVsbHB0ciwgbnVsbHB0ciB9Owog
CiAvKiBTb3VyY2UgZm9yIEpTR2xvYmFsT2JqZWN0Lmx1dC5oCiBAYmVnaW4gZ2xvYmFsT2JqZWN0
VGFibGUKQEAgLTMyMCw2ICszMjIsNyBAQCB2b2lkIEpTR2xvYmFsT2JqZWN0Ojppbml0KFZNJiB2
bSkKICAgICBtX291dE9mQmFuZEFyZ3VtZW50c1N0cnVjdHVyZS5zZXQodm0sIHRoaXMsIENsb25l
ZEFyZ3VtZW50czo6Y3JlYXRlU3RydWN0dXJlKHZtLCB0aGlzLCBtX29iamVjdFByb3RvdHlwZS5n
ZXQoKSkpOwogICAgIG1fY2FsbGJhY2tDb25zdHJ1Y3RvclN0cnVjdHVyZS5zZXQodm0sIHRoaXMs
IEpTQ2FsbGJhY2tDb25zdHJ1Y3Rvcjo6Y3JlYXRlU3RydWN0dXJlKHZtLCB0aGlzLCBtX29iamVj
dFByb3RvdHlwZS5nZXQoKSkpOwogICAgIG1fY2FsbGJhY2tPYmplY3RTdHJ1Y3R1cmUuc2V0KHZt
LCB0aGlzLCBKU0NhbGxiYWNrT2JqZWN0PEpTRGVzdHJ1Y3RpYmxlT2JqZWN0Pjo6Y3JlYXRlU3Ry
dWN0dXJlKHZtLCB0aGlzLCBtX29iamVjdFByb3RvdHlwZS5nZXQoKSkpOworCiAjaWYgSlNDX09C
SkNfQVBJX0VOQUJMRUQKICAgICBtX29iamNDYWxsYmFja0Z1bmN0aW9uU3RydWN0dXJlLnNldCh2
bSwgdGhpcywgT2JqQ0NhbGxiYWNrRnVuY3Rpb246OmNyZWF0ZVN0cnVjdHVyZSh2bSwgdGhpcywg
bV9mdW5jdGlvblByb3RvdHlwZS5nZXQoKSkpOwogICAgIG1fb2JqY1dyYXBwZXJPYmplY3RTdHJ1
Y3R1cmUuc2V0KHZtLCB0aGlzLCBKU0NhbGxiYWNrT2JqZWN0PEpTQVBJV3JhcHBlck9iamVjdD46
OmNyZWF0ZVN0cnVjdHVyZSh2bSwgdGhpcywgbV9vYmplY3RQcm90b3R5cGUuZ2V0KCkpKTsKQEAg
LTM0Miw2ICszNDUsOCBAQCB2b2lkIEpTR2xvYmFsT2JqZWN0Ojppbml0KFZNJiB2bSkKICAgICBt
X3JlZ0V4cFN0cnVjdHVyZS5zZXQodm0sIHRoaXMsIFJlZ0V4cE9iamVjdDo6Y3JlYXRlU3RydWN0
dXJlKHZtLCB0aGlzLCBtX3JlZ0V4cFByb3RvdHlwZS5nZXQoKSkpOwogICAgIG1fcmVnRXhwTWF0
Y2hlc0FycmF5U3RydWN0dXJlLnNldCh2bSwgdGhpcywgY3JlYXRlUmVnRXhwTWF0Y2hlc0FycmF5
U3RydWN0dXJlKHZtLCAqdGhpcykpOwogCisgICAgbV9tb2R1bGVSZWNvcmRTdHJ1Y3R1cmUuc2V0
KHZtLCB0aGlzLCBKU01vZHVsZVJlY29yZDo6Y3JlYXRlU3RydWN0dXJlKHZtLCB0aGlzLCBtX29i
amVjdFByb3RvdHlwZS5nZXQoKSkpOworICAgIAogI2lmIEVOQUJMRShXRUJBU1NFTUJMWSkKICAg
ICBtX3dhc21Nb2R1bGVTdHJ1Y3R1cmUuc2V0KHZtLCB0aGlzLCBKU1dBU01Nb2R1bGU6OmNyZWF0
ZVN0cnVjdHVyZSh2bSwgdGhpcykpOwogI2VuZGlmCkBAIC00NDEsNyArNDQ2LDcgQEAgcHV0RGly
ZWN0V2l0aG91dFRyYW5zaXRpb24odm0sIHZtLnByb3BlcnR5TmFtZXMtPiBqc05hbWUsIGxvd2Vy
TmFtZSAjIyBDb25zdHJ1Y3QKICAgICBwdXREaXJlY3RXaXRob3V0VHJhbnNpdGlvbih2bSwgdm0u
cHJvcGVydHlOYW1lcy0+SlNPTiwgSlNPTk9iamVjdDo6Y3JlYXRlKHZtLCBKU09OT2JqZWN0Ojpj
cmVhdGVTdHJ1Y3R1cmUodm0sIHRoaXMsIG1fb2JqZWN0UHJvdG90eXBlLmdldCgpKSksIERvbnRF
bnVtKTsKICAgICBwdXREaXJlY3RXaXRob3V0VHJhbnNpdGlvbih2bSwgdm0ucHJvcGVydHlOYW1l
cy0+TWF0aCwgTWF0aE9iamVjdDo6Y3JlYXRlKHZtLCB0aGlzLCBNYXRoT2JqZWN0OjpjcmVhdGVT
dHJ1Y3R1cmUodm0sIHRoaXMsIG1fb2JqZWN0UHJvdG90eXBlLmdldCgpKSksIERvbnRFbnVtKTsK
ICAgICBwdXREaXJlY3RXaXRob3V0VHJhbnNpdGlvbih2bSwgdm0ucHJvcGVydHlOYW1lcy0+UmVm
bGVjdCwgUmVmbGVjdE9iamVjdDo6Y3JlYXRlKHZtLCB0aGlzLCBSZWZsZWN0T2JqZWN0OjpjcmVh
dGVTdHJ1Y3R1cmUodm0sIHRoaXMsIG1fb2JqZWN0UHJvdG90eXBlLmdldCgpKSksIERvbnRFbnVt
KTsKLSAgICAKKwogICAgIHN0ZDo6YXJyYXk8SW50ZXJuYWxGdW5jdGlvbiosIE5VTUJFUl9PRl9U
WVBFRF9BUlJBWV9UWVBFUz4gdHlwZWRBcnJheUNvbnN0cnVjdG9yczsKICAgICB0eXBlZEFycmF5
Q29uc3RydWN0b3JzW3RvSW5kZXgoVHlwZUludDgpXSA9IEpTSW50OEFycmF5Q29uc3RydWN0b3I6
OmNyZWF0ZSh2bSwgSlNJbnQ4QXJyYXlDb25zdHJ1Y3Rvcjo6Y3JlYXRlU3RydWN0dXJlKHZtLCB0
aGlzLCBtX2Z1bmN0aW9uUHJvdG90eXBlLmdldCgpKSwgbV90eXBlZEFycmF5c1t0b0luZGV4KFR5
cGVJbnQ4KV0ucHJvdG90eXBlLmdldCgpLCBBU0NJSUxpdGVyYWwoIkludDhBcnJheSIpKTsKICAg
ICB0eXBlZEFycmF5Q29uc3RydWN0b3JzW3RvSW5kZXgoVHlwZUludDE2KV0gPSBKU0ludDE2QXJy
YXlDb25zdHJ1Y3Rvcjo6Y3JlYXRlKHZtLCBKU0ludDE2QXJyYXlDb25zdHJ1Y3Rvcjo6Y3JlYXRl
U3RydWN0dXJlKHZtLCB0aGlzLCBtX2Z1bmN0aW9uUHJvdG90eXBlLmdldCgpKSwgbV90eXBlZEFy
cmF5c1t0b0luZGV4KFR5cGVJbnQxNildLnByb3RvdHlwZS5nZXQoKSwgQVNDSUlMaXRlcmFsKCJJ
bnQxNkFycmF5IikpOwpAQCAtNDU4LDcgKzQ2MywxMSBAQCBwdXREaXJlY3RXaXRob3V0VHJhbnNp
dGlvbih2bSwgdm0ucHJvcGVydHlOYW1lcy0+IGpzTmFtZSwgbG93ZXJOYW1lICMjIENvbnN0cnVj
dAogICAgICAgICBtX3R5cGVkQXJyYXlzW3R5cGVkQXJyYXlJbmRleF0ucHJvdG90eXBlLT5wdXRE
aXJlY3RXaXRob3V0VHJhbnNpdGlvbih2bSwgdm0ucHJvcGVydHlOYW1lcy0+Y29uc3RydWN0b3Is
IHR5cGVkQXJyYXlDb25zdHJ1Y3RvcnNbdHlwZWRBcnJheUluZGV4XSwgRG9udEVudW0pOwogICAg
ICAgICBwdXREaXJlY3RXaXRob3V0VHJhbnNpdGlvbih2bSwgSWRlbnRpZmllcjo6ZnJvbVN0cmlu
ZyhleGVjLCB0eXBlZEFycmF5Q29uc3RydWN0b3JzW3R5cGVkQXJyYXlJbmRleF0tPm5hbWUoZXhl
YykpLCB0eXBlZEFycmF5Q29uc3RydWN0b3JzW3R5cGVkQXJyYXlJbmRleF0sIERvbnRFbnVtKTsK
ICAgICB9Ci0gICAgCisKKyAgICBtX21vZHVsZUxvYWRlci5zZXQodm0sIHRoaXMsIE1vZHVsZUxv
YWRlck9iamVjdDo6Y3JlYXRlKHZtLCB0aGlzLCBNb2R1bGVMb2FkZXJPYmplY3Q6OmNyZWF0ZVN0
cnVjdHVyZSh2bSwgdGhpcywgbV9vYmplY3RQcm90b3R5cGUuZ2V0KCkpKSk7CisgICAgaWYgKE9w
dGlvbnM6OmV4cG9zZUludGVybmFsTW9kdWxlTG9hZGVyKCkpCisgICAgICAgIHB1dERpcmVjdFdp
dGhvdXRUcmFuc2l0aW9uKHZtLCB2bS5wcm9wZXJ0eU5hbWVzLT5Mb2FkZXIsIG1fbW9kdWxlTG9h
ZGVyLmdldCgpLCBEb250RW51bSk7CisKICAgICBKU0Z1bmN0aW9uKiBidWlsdGluTG9nID0gSlNG
dW5jdGlvbjo6Y3JlYXRlKHZtLCB0aGlzLCAxLCB2bS5wcm9wZXJ0eU5hbWVzLT5lbXB0eUlkZW50
aWZpZXIuc3RyaW5nKCksIGdsb2JhbEZ1bmNCdWlsdGluTG9nKTsKIAogICAgIEpTRnVuY3Rpb24q
IHByaXZhdGVGdW5jQWJzID0gSlNGdW5jdGlvbjo6Y3JlYXRlKHZtLCB0aGlzLCAwLCBTdHJpbmco
KSwgbWF0aFByb3RvRnVuY0FicywgQWJzSW50cmluc2ljKTsKQEAgLTUxMCw2ICs1MTksNyBAQCBw
dXREaXJlY3RXaXRob3V0VHJhbnNpdGlvbih2bSwgdm0ucHJvcGVydHlOYW1lcy0+IGpzTmFtZSwg
bG93ZXJOYW1lICMjIENvbnN0cnVjdAogICAgICAgICBHbG9iYWxQcm9wZXJ0eUluZm8odm0ucHJv
cGVydHlOYW1lcy0+YnVpbHRpbk5hbWVzKCkucHJvbWlzZVJlYWN0aW9uSm9iUHJpdmF0ZU5hbWUo
KSwgSlNGdW5jdGlvbjo6Y3JlYXRlQnVpbHRpbkZ1bmN0aW9uKHZtLCBvcGVyYXRpb25zUHJvbWlz
ZVByb21pc2VSZWFjdGlvbkpvYkNvZGVHZW5lcmF0b3Iodm0pLCB0aGlzKSwgRG9udEVudW0gfCBE
b250RGVsZXRlIHwgUmVhZE9ubHkpLAogICAgICAgICBHbG9iYWxQcm9wZXJ0eUluZm8odm0ucHJv
cGVydHlOYW1lcy0+YnVpbHRpbk5hbWVzKCkucHJvbWlzZVJlc29sdmVUaGVuYWJsZUpvYlByaXZh
dGVOYW1lKCksIEpTRnVuY3Rpb246OmNyZWF0ZUJ1aWx0aW5GdW5jdGlvbih2bSwgb3BlcmF0aW9u
c1Byb21pc2VQcm9taXNlUmVzb2x2ZVRoZW5hYmxlSm9iQ29kZUdlbmVyYXRvcih2bSksIHRoaXMp
LCBEb250RW51bSB8IERvbnREZWxldGUgfCBSZWFkT25seSksCiAgICAgICAgIEdsb2JhbFByb3Bl
cnR5SW5mbyh2bS5wcm9wZXJ0eU5hbWVzLT5idWlsdGluTmFtZXMoKS5JbnNwZWN0b3JJbnN0cnVt
ZW50YXRpb25Qcml2YXRlTmFtZSgpLCBJbnNwZWN0b3JJbnN0cnVtZW50YXRpb25PYmplY3Q6OmNy
ZWF0ZSh2bSwgdGhpcywgSW5zcGVjdG9ySW5zdHJ1bWVudGF0aW9uT2JqZWN0OjpjcmVhdGVTdHJ1
Y3R1cmUodm0sIHRoaXMsIG1fb2JqZWN0UHJvdG90eXBlLmdldCgpKSksIERvbnRFbnVtIHwgRG9u
dERlbGV0ZSB8IFJlYWRPbmx5KSwKKyAgICAgICAgR2xvYmFsUHJvcGVydHlJbmZvKHZtLnByb3Bl
cnR5TmFtZXMtPk1hcFByaXZhdGVOYW1lLCBtYXBDb25zdHJ1Y3RvciwgRG9udEVudW0gfCBEb250
RGVsZXRlIHwgUmVhZE9ubHkpLAogICAgIH07CiAgICAgYWRkU3RhdGljR2xvYmFscyhzdGF0aWNH
bG9iYWxzLCBXVEZfQVJSQVlfTEVOR1RIKHN0YXRpY0dsb2JhbHMpKTsKICAgICAKQEAgLTc2Nyw2
ICs3NzcsNyBAQCB2b2lkIEpTR2xvYmFsT2JqZWN0Ojp2aXNpdENoaWxkcmVuKEpTQ2VsbCogY2Vs
bCwgU2xvdFZpc2l0b3ImIHZpc2l0b3IpCiAgICAgdmlzaXRvci5hcHBlbmQoJnRoaXNPYmplY3Qt
Pm1faW5pdGlhbGl6ZVByb21pc2VGdW5jdGlvbik7CiAgICAgdmlzaXRvci5hcHBlbmQoJnRoaXNP
YmplY3QtPm1fbmV3UHJvbWlzZUNhcGFiaWxpdHlGdW5jdGlvbik7CiAgICAgdmlzaXRvci5hcHBl
bmQoJnRoaXNPYmplY3QtPm1fdGhyb3dUeXBlRXJyb3JHZXR0ZXJTZXR0ZXIpOworICAgIHZpc2l0
b3IuYXBwZW5kKCZ0aGlzT2JqZWN0LT5tX21vZHVsZUxvYWRlcik7CiAKICAgICB2aXNpdG9yLmFw
cGVuZCgmdGhpc09iamVjdC0+bV9vYmplY3RQcm90b3R5cGUpOwogICAgIHZpc2l0b3IuYXBwZW5k
KCZ0aGlzT2JqZWN0LT5tX2Z1bmN0aW9uUHJvdG90eXBlKTsKQEAgLTgwNCw2ICs4MTUsNyBAQCB2
b2lkIEpTR2xvYmFsT2JqZWN0Ojp2aXNpdENoaWxkcmVuKEpTQ2VsbCogY2VsbCwgU2xvdFZpc2l0
b3ImIHZpc2l0b3IpCiAgICAgdmlzaXRvci5hcHBlbmQoJnRoaXNPYmplY3QtPm1fc3ltYm9sT2Jq
ZWN0U3RydWN0dXJlKTsKICAgICB2aXNpdG9yLmFwcGVuZCgmdGhpc09iamVjdC0+bV9yZWdFeHBT
dHJ1Y3R1cmUpOwogICAgIHZpc2l0b3IuYXBwZW5kKCZ0aGlzT2JqZWN0LT5tX3JlZ0V4cE1hdGNo
ZXNBcnJheVN0cnVjdHVyZSk7CisgICAgdmlzaXRvci5hcHBlbmQoJnRoaXNPYmplY3QtPm1fbW9k
dWxlUmVjb3JkU3RydWN0dXJlKTsKICAgICB2aXNpdG9yLmFwcGVuZCgmdGhpc09iamVjdC0+bV9j
b25zb2xlU3RydWN0dXJlKTsKICAgICB2aXNpdG9yLmFwcGVuZCgmdGhpc09iamVjdC0+bV9kb2xs
YXJWTVN0cnVjdHVyZSk7CiAgICAgdmlzaXRvci5hcHBlbmQoJnRoaXNPYmplY3QtPm1faW50ZXJu
YWxGdW5jdGlvblN0cnVjdHVyZSk7CmRpZmYgLS1naXQgYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUv
cnVudGltZS9KU0dsb2JhbE9iamVjdC5oIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUv
SlNHbG9iYWxPYmplY3QuaAppbmRleCA2ZGIzMDNhZWMwNzA2NmZhMmExNWVkYWZhY2M1MTgzOWNh
YTBjNzJhLi44ZWUyOWY5ZTc4NDYyMmMzNDRlZWZiZGUzODA2NjQzMWFlYjcyYjE4IDEwMDY0NAot
LS0gYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9KU0dsb2JhbE9iamVjdC5oCisrKyBi
L1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL0pTR2xvYmFsT2JqZWN0LmgKQEAgLTcwLDEx
ICs3MCwxNCBAQCBjbGFzcyBHZXR0ZXJTZXR0ZXI7CiBjbGFzcyBHbG9iYWxDb2RlQmxvY2s7CiBj
bGFzcyBJbnB1dEN1cnNvcjsKIGNsYXNzIEpTR2xvYmFsT2JqZWN0RGVidWdnYWJsZTsKK2NsYXNz
IEpTUHJvbWlzZTsKIGNsYXNzIEpTUHJvbWlzZUNvbnN0cnVjdG9yOwogY2xhc3MgSlNQcm9taXNl
UHJvdG90eXBlOworY2xhc3MgSlNJbnRlcm5hbFByb21pc2U7CiBjbGFzcyBKU1N0YWNrOwogY2xh
c3MgTExJbnRPZmZzZXRzRXh0cmFjdG9yOwogY2xhc3MgTWljcm90YXNrOworY2xhc3MgTW9kdWxl
TG9hZGVyT2JqZWN0OwogY2xhc3MgTmF0aXZlRXJyb3JDb25zdHJ1Y3RvcjsKIGNsYXNzIE9iamVj
dENvbnN0cnVjdG9yOwogY2xhc3MgUHJvZ3JhbUNvZGVCbG9jazsKQEAgLTE1Miw2ICsxNTUsMTgg
QEAgc3RydWN0IEdsb2JhbE9iamVjdE1ldGhvZFRhYmxlIHsKIAogICAgIHR5cGVkZWYgYm9vbCAo
KlNob3VsZEludGVycnVwdFNjcmlwdEJlZm9yZVRpbWVvdXRQdHIpKGNvbnN0IEpTR2xvYmFsT2Jq
ZWN0Kik7CiAgICAgU2hvdWxkSW50ZXJydXB0U2NyaXB0QmVmb3JlVGltZW91dFB0ciBzaG91bGRJ
bnRlcnJ1cHRTY3JpcHRCZWZvcmVUaW1lb3V0OworCisgICAgdHlwZWRlZiBKU0ludGVybmFsUHJv
bWlzZSogKCpMb2FkZXJSZXNvbHZlUHRyKShKU0dsb2JhbE9iamVjdCosIEV4ZWNTdGF0ZSosIEpT
VmFsdWUsIEpTVmFsdWUpOworICAgIExvYWRlclJlc29sdmVQdHIgbG9hZGVyUmVzb2x2ZTsKKwor
ICAgIHR5cGVkZWYgSlNJbnRlcm5hbFByb21pc2UqICgqTG9hZGVyRmV0Y2hQdHIpKEpTR2xvYmFs
T2JqZWN0KiwgRXhlY1N0YXRlKiwgSlNWYWx1ZSk7CisgICAgTG9hZGVyRmV0Y2hQdHIgbG9hZGVy
RmV0Y2g7CisKKyAgICB0eXBlZGVmIEpTSW50ZXJuYWxQcm9taXNlKiAoKkxvYWRlclRyYW5zbGF0
ZVB0cikoSlNHbG9iYWxPYmplY3QqLCBFeGVjU3RhdGUqLCBKU1ZhbHVlLCBKU1ZhbHVlKTsKKyAg
ICBMb2FkZXJUcmFuc2xhdGVQdHIgbG9hZGVyVHJhbnNsYXRlOworCisgICAgdHlwZWRlZiBKU0lu
dGVybmFsUHJvbWlzZSogKCpMb2FkZXJJbnN0YW50aWF0ZVB0cikoSlNHbG9iYWxPYmplY3QqLCBF
eGVjU3RhdGUqLCBKU1ZhbHVlLCBKU1ZhbHVlKTsKKyAgICBMb2FkZXJJbnN0YW50aWF0ZVB0ciBs
b2FkZXJJbnN0YW50aWF0ZTsKIH07CiAKIGNsYXNzIEpTR2xvYmFsT2JqZWN0IDogcHVibGljIEpT
U2VnbWVudGVkVmFyaWFibGVPYmplY3QgewpAQCAtMjAzLDYgKzIxOCw4IEBAIGNsYXNzIEpTR2xv
YmFsT2JqZWN0IDogcHVibGljIEpTU2VnbWVudGVkVmFyaWFibGVPYmplY3QgewogICAgIFdyaXRl
QmFycmllcjxKU0Z1bmN0aW9uPiBtX25ld1Byb21pc2VDYXBhYmlsaXR5RnVuY3Rpb247CiAgICAg
V3JpdGVCYXJyaWVyPEdldHRlclNldHRlcj4gbV90aHJvd1R5cGVFcnJvckdldHRlclNldHRlcjsK
IAorICAgIFdyaXRlQmFycmllcjxNb2R1bGVMb2FkZXJPYmplY3Q+IG1fbW9kdWxlTG9hZGVyOwor
CiAgICAgV3JpdGVCYXJyaWVyPE9iamVjdFByb3RvdHlwZT4gbV9vYmplY3RQcm90b3R5cGU7CiAg
ICAgV3JpdGVCYXJyaWVyPEZ1bmN0aW9uUHJvdG90eXBlPiBtX2Z1bmN0aW9uUHJvdG90eXBlOwog
ICAgIFdyaXRlQmFycmllcjxBcnJheVByb3RvdHlwZT4gbV9hcnJheVByb3RvdHlwZTsKQEAgLTI0
NCw2ICsyNjEsNyBAQCBjbGFzcyBKU0dsb2JhbE9iamVjdCA6IHB1YmxpYyBKU1NlZ21lbnRlZFZh
cmlhYmxlT2JqZWN0IHsKICAgICBXcml0ZUJhcnJpZXI8U3RydWN0dXJlPiBtX2ludGVybmFsRnVu
Y3Rpb25TdHJ1Y3R1cmU7CiAgICAgV3JpdGVCYXJyaWVyPFN0cnVjdHVyZT4gbV9pdGVyYXRvclJl
c3VsdFN0cnVjdHVyZTsKICAgICBXcml0ZUJhcnJpZXI8U3RydWN0dXJlPiBtX3JlZ0V4cE1hdGNo
ZXNBcnJheVN0cnVjdHVyZTsKKyAgICBXcml0ZUJhcnJpZXI8U3RydWN0dXJlPiBtX21vZHVsZVJl
Y29yZFN0cnVjdHVyZTsKICNpZiBFTkFCTEUoV0VCQVNTRU1CTFkpCiAgICAgV3JpdGVCYXJyaWVy
PFN0cnVjdHVyZT4gbV93YXNtTW9kdWxlU3RydWN0dXJlOwogI2VuZGlmCkBAIC00MTAsNiArNDI4
LDggQEAgY2xhc3MgSlNHbG9iYWxPYmplY3QgOiBwdWJsaWMgSlNTZWdtZW50ZWRWYXJpYWJsZU9i
amVjdCB7CiAgICAgICAgIHJldHVybiBtX3Rocm93VHlwZUVycm9yR2V0dGVyU2V0dGVyLmdldCgp
OwogICAgIH0KIAorICAgIE1vZHVsZUxvYWRlck9iamVjdCogbW9kdWxlTG9hZGVyKCkgY29uc3Qg
eyByZXR1cm4gbV9tb2R1bGVMb2FkZXIuZ2V0KCk7IH0KKwogICAgIE9iamVjdFByb3RvdHlwZSog
b2JqZWN0UHJvdG90eXBlKCkgY29uc3QgeyByZXR1cm4gbV9vYmplY3RQcm90b3R5cGUuZ2V0KCk7
IH0KICAgICBGdW5jdGlvblByb3RvdHlwZSogZnVuY3Rpb25Qcm90b3R5cGUoKSBjb25zdCB7IHJl
dHVybiBtX2Z1bmN0aW9uUHJvdG90eXBlLmdldCgpOyB9CiAgICAgQXJyYXlQcm90b3R5cGUqIGFy
cmF5UHJvdG90eXBlKCkgY29uc3QgeyByZXR1cm4gbV9hcnJheVByb3RvdHlwZS5nZXQoKTsgfQpA
QCAtNDc4LDYgKzQ5OCw3IEBAIGNsYXNzIEpTR2xvYmFsT2JqZWN0IDogcHVibGljIEpTU2VnbWVu
dGVkVmFyaWFibGVPYmplY3QgewogICAgIFN0cnVjdHVyZSogaXRlcmF0b3JSZXN1bHRTdHJ1Y3R1
cmUoKSBjb25zdCB7IHJldHVybiBtX2l0ZXJhdG9yUmVzdWx0U3RydWN0dXJlLmdldCgpOyB9CiAg
ICAgc3RhdGljIHB0cmRpZmZfdCBpdGVyYXRvclJlc3VsdFN0cnVjdHVyZU9mZnNldCgpIHsgcmV0
dXJuIE9CSkVDVF9PRkZTRVRPRihKU0dsb2JhbE9iamVjdCwgbV9pdGVyYXRvclJlc3VsdFN0cnVj
dHVyZSk7IH0KICAgICBTdHJ1Y3R1cmUqIHJlZ0V4cE1hdGNoZXNBcnJheVN0cnVjdHVyZSgpIGNv
bnN0IHsgcmV0dXJuIG1fcmVnRXhwTWF0Y2hlc0FycmF5U3RydWN0dXJlLmdldCgpOyB9CisgICAg
U3RydWN0dXJlKiBtb2R1bGVSZWNvcmRTdHJ1Y3R1cmUoKSBjb25zdCB7IHJldHVybiBtX21vZHVs
ZVJlY29yZFN0cnVjdHVyZS5nZXQoKTsgfQogI2lmIEVOQUJMRShXRUJBU1NFTUJMWSkKICAgICBT
dHJ1Y3R1cmUqIHdhc21Nb2R1bGVTdHJ1Y3R1cmUoKSBjb25zdCB7IHJldHVybiBtX3dhc21Nb2R1
bGVTdHJ1Y3R1cmUuZ2V0KCk7IH0KICNlbmRpZgpkaWZmIC0tZ2l0IGEvU291cmNlL0phdmFTY3Jp
cHRDb3JlL3J1bnRpbWUvSlNNb2R1bGVSZWNvcmQuY3BwIGIvU291cmNlL0phdmFTY3JpcHRDb3Jl
L3J1bnRpbWUvSlNNb2R1bGVSZWNvcmQuY3BwCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAuLmU3MDJmYWZhNDRlNTA2Zjlk
NDdmZWRlNjMzNjY0YTczOGMxOWI0MGIKLS0tIC9kZXYvbnVsbAorKysgYi9Tb3VyY2UvSmF2YVNj
cmlwdENvcmUvcnVudGltZS9KU01vZHVsZVJlY29yZC5jcHAKQEAgLTAsMCArMSwxMTMgQEAKKy8q
CisgKiBDb3B5cmlnaHQgKEMpIDIwMTUgQXBwbGUgSW5jLiBBbGwgcmlnaHRzIHJlc2VydmVkLgor
ICoKKyAqIFJlZGlzdHJpYnV0aW9uIGFuZCB1c2UgaW4gc291cmNlIGFuZCBiaW5hcnkgZm9ybXMs
IHdpdGggb3Igd2l0aG91dAorICogbW9kaWZpY2F0aW9uLCBhcmUgcGVybWl0dGVkIHByb3ZpZGVk
IHRoYXQgdGhlIGZvbGxvd2luZyBjb25kaXRpb25zCisgKiBhcmUgbWV0OgorICogMS4gUmVkaXN0
cmlidXRpb25zIG9mIHNvdXJjZSBjb2RlIG11c3QgcmV0YWluIHRoZSBhYm92ZSBjb3B5cmlnaHQK
KyAqICAgIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcg
ZGlzY2xhaW1lci4KKyAqIDIuIFJlZGlzdHJpYnV0aW9ucyBpbiBiaW5hcnkgZm9ybSBtdXN0IHJl
cHJvZHVjZSB0aGUgYWJvdmUgY29weXJpZ2h0CisgKiAgICBub3RpY2UsIHRoaXMgbGlzdCBvZiBj
b25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIgaW4gdGhlCisgKiAgICBkb2N1
bWVudGF0aW9uIGFuZC9vciBvdGhlciBtYXRlcmlhbHMgcHJvdmlkZWQgd2l0aCB0aGUgZGlzdHJp
YnV0aW9uLgorICoKKyAqIFRISVMgU09GVFdBUkUgSVMgUFJPVklERUQgQlkgQVBQTEUgSU5DLiBg
YEFTIElTJycgQU5EIEFOWQorICogRVhQUkVTUyBPUiBJTVBMSUVEIFdBUlJBTlRJRVMsIElOQ0xV
RElORywgQlVUIE5PVCBMSU1JVEVEIFRPLCBUSEUKKyAqIElNUExJRUQgV0FSUkFOVElFUyBPRiBN
RVJDSEFOVEFCSUxJVFkgQU5EIEZJVE5FU1MgRk9SIEEgUEFSVElDVUxBUgorICogUFVSUE9TRSBB
UkUgRElTQ0xBSU1FRC4gIElOIE5PIEVWRU5UIFNIQUxMIEFQUExFIElOQy4gT1IKKyAqIENPTlRS
SUJVVE9SUyBCRSBMSUFCTEUgRk9SIEFOWSBESVJFQ1QsIElORElSRUNULCBJTkNJREVOVEFMLCBT
UEVDSUFMLAorICogRVhFTVBMQVJZLCBPUiBDT05TRVFVRU5USUFMIERBTUFHRVMgKElOQ0xVRElO
RywgQlVUIE5PVCBMSU1JVEVEIFRPLAorICogUFJPQ1VSRU1FTlQgT0YgU1VCU1RJVFVURSBHT09E
UyBPUiBTRVJWSUNFUzsgTE9TUyBPRiBVU0UsIERBVEEsIE9SCisgKiBQUk9GSVRTOyBPUiBCVVNJ
TkVTUyBJTlRFUlJVUFRJT04pIEhPV0VWRVIgQ0FVU0VEIEFORCBPTiBBTlkgVEhFT1JZCisgKiBP
RiBMSUFCSUxJVFksIFdIRVRIRVIgSU4gQ09OVFJBQ1QsIFNUUklDVCBMSUFCSUxJVFksIE9SIFRP
UlQKKyAqIChJTkNMVURJTkcgTkVHTElHRU5DRSBPUiBPVEhFUldJU0UpIEFSSVNJTkcgSU4gQU5Z
IFdBWSBPVVQgT0YgVEhFIFVTRQorICogT0YgVEhJUyBTT0ZUV0FSRSwgRVZFTiBJRiBBRFZJU0VE
IE9GIFRIRSBQT1NTSUJJTElUWSBPRiBTVUNIIERBTUFHRS4gCisgKi8KKworI2luY2x1ZGUgImNv
bmZpZy5oIgorI2luY2x1ZGUgIkpTTW9kdWxlUmVjb3JkLmgiCisKKyNpbmNsdWRlICJJZGVudGlm
aWVySW5saW5lcy5oIgorI2luY2x1ZGUgIkpTQ0pTVmFsdWVJbmxpbmVzLmgiCisjaW5jbHVkZSAi
SlNDZWxsSW5saW5lcy5oIgorI2luY2x1ZGUgIlN0cnVjdHVyZUlubGluZXMuaCIKKworbmFtZXNw
YWNlIEpTQyB7CisKK2NvbnN0IENsYXNzSW5mbyBKU01vZHVsZVJlY29yZDo6c19pbmZvID0geyAi
TW9kdWxlUmVjb3JkIiwgJkJhc2U6OnNfaW5mbywgMCwgQ1JFQVRFX01FVEhPRF9UQUJMRShKU01v
ZHVsZVJlY29yZCkgfTsKKwordm9pZCBKU01vZHVsZVJlY29yZDo6ZGVzdHJveShKU0NlbGwqIGNl
bGwpCit7CisgICAgSlNNb2R1bGVSZWNvcmQqIHRoaXNPYmplY3QgPSBqc0Nhc3Q8SlNNb2R1bGVS
ZWNvcmQqPihjZWxsKTsKKyAgICB0aGlzT2JqZWN0LT5KU01vZHVsZVJlY29yZDo6fkpTTW9kdWxl
UmVjb3JkKCk7Cit9CisKKwordm9pZCBKU01vZHVsZVJlY29yZDo6ZmluaXNoQ3JlYXRpb24oVk0m
IHZtKQoreworICAgIEJhc2U6OmZpbmlzaENyZWF0aW9uKHZtKTsKKyAgICBBU1NFUlQoaW5oZXJp
dHMoaW5mbygpKSk7CisgICAgcHV0RGlyZWN0KHZtLCBJZGVudGlmaWVyOjpmcm9tU3RyaW5nKCZ2
bSwgQVNDSUlMaXRlcmFsKCJyZWdpc3RyeUVudHJ5IikpLCBqc1VuZGVmaW5lZCgpKTsKK30KKwor
YXV0byBKU01vZHVsZVJlY29yZDo6RXhwb3J0RW50cnk6OmNyZWF0ZUxvY2FsKGNvbnN0IElkZW50
aWZpZXImIGV4cG9ydE5hbWUsIGNvbnN0IElkZW50aWZpZXImIGxvY2FsTmFtZSwgY29uc3QgVmFy
aWFibGVFbnZpcm9ubWVudEVudHJ5JiB2YXJpYWJsZSkgLT4gRXhwb3J0RW50cnkKK3sKKyAgICBy
ZXR1cm4gRXhwb3J0RW50cnkgeyBUeXBlOjpMb2NhbCwgZXhwb3J0TmFtZSwgSWRlbnRpZmllcigp
LCBJZGVudGlmaWVyKCksIGxvY2FsTmFtZSwgdmFyaWFibGUgfTsKK30KKworYXV0byBKU01vZHVs
ZVJlY29yZDo6RXhwb3J0RW50cnk6OmNyZWF0ZU5hbWVzcGFjZShjb25zdCBJZGVudGlmaWVyJiBl
eHBvcnROYW1lLCBjb25zdCBJZGVudGlmaWVyJiBtb2R1bGVOYW1lKSAtPiBFeHBvcnRFbnRyeQor
eworICAgIHJldHVybiBFeHBvcnRFbnRyeSB7IFR5cGU6Ok5hbWVzcGFjZSwgZXhwb3J0TmFtZSwg
bW9kdWxlTmFtZSwgSWRlbnRpZmllcigpLCBJZGVudGlmaWVyKCksIFZhcmlhYmxlRW52aXJvbm1l
bnRFbnRyeSgpIH07Cit9CisKK2F1dG8gSlNNb2R1bGVSZWNvcmQ6OkV4cG9ydEVudHJ5OjpjcmVh
dGVJbmRpcmVjdChjb25zdCBJZGVudGlmaWVyJiBleHBvcnROYW1lLCBjb25zdCBJZGVudGlmaWVy
JiBpbXBvcnROYW1lLCBjb25zdCBJZGVudGlmaWVyJiBtb2R1bGVOYW1lKSAtPiBFeHBvcnRFbnRy
eQoreworICAgIHJldHVybiBFeHBvcnRFbnRyeSB7IFR5cGU6OkluZGlyZWN0LCBleHBvcnROYW1l
LCBtb2R1bGVOYW1lLCBpbXBvcnROYW1lLCBJZGVudGlmaWVyKCksIFZhcmlhYmxlRW52aXJvbm1l
bnRFbnRyeSgpIH07Cit9CisKK3N0YXRpYyBTdHJpbmcgcHJpbnRhYmxlTmFtZShjb25zdCBSZWZQ
dHI8VW5pcXVlZFN0cmluZ0ltcGw+JiB1aWQpCit7CisgICAgaWYgKHVpZC0+aXNTeW1ib2woKSkK
KyAgICAgICAgcmV0dXJuIHVpZC5nZXQoKTsKKyAgICByZXR1cm4gV1RGOjptYWtlU3RyaW5nKCIn
IiwgU3RyaW5nKHVpZC5nZXQoKSksICInIik7Cit9CisKK3N0YXRpYyBTdHJpbmcgcHJpbnRhYmxl
TmFtZShjb25zdCBJZGVudGlmaWVyJiBpZGVudCkKK3sKKyAgICByZXR1cm4gcHJpbnRhYmxlTmFt
ZShpZGVudC5pbXBsKCkpOworfQorCisKK3ZvaWQgSlNNb2R1bGVSZWNvcmQ6OmR1bXAoKQorewor
ICAgIGRhdGFMb2coIlxuQW5hbHl6aW5nIE1vZHVsZVJlY29yZCBrZXkoIiwgcHJpbnRhYmxlTmFt
ZShtX21vZHVsZUtleSksICIpXG4iKTsKKworICAgIGRhdGFMb2coIiAgICBEZXBlbmRlbmNpZXM6
ICIsIG1fcmVxdWVzdGVkTW9kdWxlcy5zaXplKCksICIgbW9kdWxlc1xuIik7CisgICAgZm9yIChj
b25zdCBhdXRvJiBtb2R1bGVOYW1lIDogbV9yZXF1ZXN0ZWRNb2R1bGVzKQorICAgICAgICBkYXRh
TG9nKCIgICAgICBtb2R1bGUoIiwgcHJpbnRhYmxlTmFtZShtb2R1bGVOYW1lKSwgIilcbiIpOwor
CisgICAgZGF0YUxvZygiICAgIEltcG9ydDogIiwgbV9pbXBvcnRFbnRyaWVzLnNpemUoKSwgIiBl
bnRyaWVzXG4iKTsKKyAgICBmb3IgKGNvbnN0IGF1dG8mIHBhaXIgOiBtX2ltcG9ydEVudHJpZXMp
CisgICAgICAgIGRhdGFMb2coIiAgICAgIGltcG9ydCgiLCBwcmludGFibGVOYW1lKHBhaXIudmFs
dWUuaW1wb3J0TmFtZSksICIpLCBsb2NhbCgiLCBwcmludGFibGVOYW1lKHBhaXIudmFsdWUubG9j
YWxOYW1lKSwgIiksIG1vZHVsZSgiLCBwcmludGFibGVOYW1lKHBhaXIudmFsdWUubW9kdWxlUmVx
dWVzdCksICIpXG4iKTsKKworICAgIGRhdGFMb2coIiAgICBFeHBvcnQ6ICIsIG1fZXhwb3J0RW50
cmllcy5zaXplKCksICIgZW50cmllc1xuIik7CisgICAgZm9yIChjb25zdCBhdXRvJiBwYWlyIDog
bV9leHBvcnRFbnRyaWVzKSB7CisgICAgICAgIGNvbnN0IEV4cG9ydEVudHJ5JiBlbnRyeSA9IHBh
aXIudmFsdWU7CisgICAgICAgIHN3aXRjaCAoZW50cnkudHlwZSkgeworICAgICAgICBjYXNlIEV4
cG9ydEVudHJ5OjpUeXBlOjpMb2NhbDoKKyAgICAgICAgICAgIGRhdGFMb2coIiAgICAgIFtMb2Nh
bF0gIiwgImV4cG9ydCgiLCBwcmludGFibGVOYW1lKGVudHJ5LmV4cG9ydE5hbWUpLCAiKSwgbG9j
YWwoIiwgcHJpbnRhYmxlTmFtZShlbnRyeS5sb2NhbE5hbWUpLCAiKVxuIik7CisgICAgICAgICAg
ICBicmVhazsKKworICAgICAgICBjYXNlIEV4cG9ydEVudHJ5OjpUeXBlOjpOYW1lc3BhY2U6Cisg
ICAgICAgICAgICBkYXRhTG9nKCIgICAgICBbTmFtZXNwYWNlXSAiLCAiZXhwb3J0KCIsIHByaW50
YWJsZU5hbWUoZW50cnkuZXhwb3J0TmFtZSksICIpLCBtb2R1bGUoIiwgcHJpbnRhYmxlTmFtZShl
bnRyeS5tb2R1bGVOYW1lKSwgIilcbiIpOworICAgICAgICAgICAgYnJlYWs7CisKKyAgICAgICAg
Y2FzZSBFeHBvcnRFbnRyeTo6VHlwZTo6SW5kaXJlY3Q6CisgICAgICAgICAgICBkYXRhTG9nKCIg
ICAgICBbSW5kaXJlY3RdICIsICJleHBvcnQoIiwgcHJpbnRhYmxlTmFtZShlbnRyeS5leHBvcnRO
YW1lKSwgIiksIGltcG9ydCgiLCBwcmludGFibGVOYW1lKGVudHJ5LmltcG9ydE5hbWUpLCAiKSwg
bW9kdWxlKCIsIHByaW50YWJsZU5hbWUoZW50cnkubW9kdWxlTmFtZSksICIpXG4iKTsKKyAgICAg
ICAgICAgIGJyZWFrOworICAgICAgICB9CisgICAgfQorICAgIGZvciAoY29uc3QgYXV0byYgbW9k
dWxlTmFtZSA6IG1fc3RhckV4cG9ydEVudHJpZXMpCisgICAgICAgIGRhdGFMb2coIiAgICAgIFtT
dGFyXSBtb2R1bGUoIiwgcHJpbnRhYmxlTmFtZShtb2R1bGVOYW1lLmdldCgpKSwgIilcbiIpOwor
fQorCit9IC8vIG5hbWVzcGFjZSBKU0MKZGlmZiAtLWdpdCBhL1NvdXJjZS9KYXZhU2NyaXB0Q29y
ZS9ydW50aW1lL0pTTW9kdWxlUmVjb3JkLmggYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGlt
ZS9KU01vZHVsZVJlY29yZC5oCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAuLjA1ZDY5NGQzZTNmZTU1YTUyMWFmMzVkZTgy
NjE1OTgwZjA4MGUyZTAKLS0tIC9kZXYvbnVsbAorKysgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUv
cnVudGltZS9KU01vZHVsZVJlY29yZC5oCkBAIC0wLDAgKzEsMTYxIEBACisvKgorICogQ29weXJp
Z2h0IChDKSAyMDE1IEFwcGxlIEluYy4gQWxsIHJpZ2h0cyByZXNlcnZlZC4KKyAqCisgKiBSZWRp
c3RyaWJ1dGlvbiBhbmQgdXNlIGluIHNvdXJjZSBhbmQgYmluYXJ5IGZvcm1zLCB3aXRoIG9yIHdp
dGhvdXQKKyAqIG1vZGlmaWNhdGlvbiwgYXJlIHBlcm1pdHRlZCBwcm92aWRlZCB0aGF0IHRoZSBm
b2xsb3dpbmcgY29uZGl0aW9ucworICogYXJlIG1ldDoKKyAqIDEuIFJlZGlzdHJpYnV0aW9ucyBv
ZiBzb3VyY2UgY29kZSBtdXN0IHJldGFpbiB0aGUgYWJvdmUgY29weXJpZ2h0CisgKiAgICBub3Rp
Y2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIu
CisgKiAyLiBSZWRpc3RyaWJ1dGlvbnMgaW4gYmluYXJ5IGZvcm0gbXVzdCByZXByb2R1Y2UgdGhl
IGFib3ZlIGNvcHlyaWdodAorICogICAgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBh
bmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyIGluIHRoZQorICogICAgZG9jdW1lbnRhdGlvbiBh
bmQvb3Igb3RoZXIgbWF0ZXJpYWxzIHByb3ZpZGVkIHdpdGggdGhlIGRpc3RyaWJ1dGlvbi4KKyAq
CisgKiBUSElTIFNPRlRXQVJFIElTIFBST1ZJREVEIEJZIEFQUExFIElOQy4gYGBBUyBJUycnIEFO
RCBBTlkKKyAqIEVYUFJFU1MgT1IgSU1QTElFRCBXQVJSQU5USUVTLCBJTkNMVURJTkcsIEJVVCBO
T1QgTElNSVRFRCBUTywgVEhFCisgKiBJTVBMSUVEIFdBUlJBTlRJRVMgT0YgTUVSQ0hBTlRBQklM
SVRZIEFORCBGSVRORVNTIEZPUiBBIFBBUlRJQ1VMQVIKKyAqIFBVUlBPU0UgQVJFIERJU0NMQUlN
RUQuICBJTiBOTyBFVkVOVCBTSEFMTCBBUFBMRSBJTkMuIE9SCisgKiBDT05UUklCVVRPUlMgQkUg
TElBQkxFIEZPUiBBTlkgRElSRUNULCBJTkRJUkVDVCwgSU5DSURFTlRBTCwgU1BFQ0lBTCwKKyAq
IEVYRU1QTEFSWSwgT1IgQ09OU0VRVUVOVElBTCBEQU1BR0VTIChJTkNMVURJTkcsIEJVVCBOT1Qg
TElNSVRFRCBUTywKKyAqIFBST0NVUkVNRU5UIE9GIFNVQlNUSVRVVEUgR09PRFMgT1IgU0VSVklD
RVM7IExPU1MgT0YgVVNFLCBEQVRBLCBPUgorICogUFJPRklUUzsgT1IgQlVTSU5FU1MgSU5URVJS
VVBUSU9OKSBIT1dFVkVSIENBVVNFRCBBTkQgT04gQU5ZIFRIRU9SWQorICogT0YgTElBQklMSVRZ
LCBXSEVUSEVSIElOIENPTlRSQUNULCBTVFJJQ1QgTElBQklMSVRZLCBPUiBUT1JUCisgKiAoSU5D
TFVESU5HIE5FR0xJR0VOQ0UgT1IgT1RIRVJXSVNFKSBBUklTSU5HIElOIEFOWSBXQVkgT1VUIE9G
IFRIRSBVU0UKKyAqIE9GIFRISVMgU09GVFdBUkUsIEVWRU4gSUYgQURWSVNFRCBPRiBUSEUgUE9T
U0lCSUxJVFkgT0YgU1VDSCBEQU1BR0UuCisgKi8KKworI2lmbmRlZiBKU01vZHVsZVJlY29yZF9o
CisjZGVmaW5lIEpTTW9kdWxlUmVjb3JkX2gKKworI2luY2x1ZGUgIklkZW50aWZpZXIuaCIKKyNp
bmNsdWRlICJKU0Rlc3RydWN0aWJsZU9iamVjdC5oIgorI2luY2x1ZGUgIlZhcmlhYmxlRW52aXJv
bm1lbnQuaCIKKyNpbmNsdWRlIDx3dGYvSGFzaE1hcC5oPgorI2luY2x1ZGUgPHd0Zi9MaXN0SGFz
aFNldC5oPgorCituYW1lc3BhY2UgSlNDIHsKKworLy8gQmFzZWQgb24gdGhlIFNvdXJjZSBUZXh0
IE1vZHVsZSBSZWNvcmQKKy8vIGh0dHA6Ly93d3cuZWNtYS1pbnRlcm5hdGlvbmFsLm9yZy9lY21h
LTI2Mi82LjAvI3NlYy1zb3VyY2UtdGV4dC1tb2R1bGUtcmVjb3JkcworY2xhc3MgSlNNb2R1bGVS
ZWNvcmQgOiBwdWJsaWMgSlNEZXN0cnVjdGlibGVPYmplY3QgeworcHVibGljOgorICAgIHR5cGVk
ZWYgSlNEZXN0cnVjdGlibGVPYmplY3QgQmFzZTsKKworICAgIHN0cnVjdCBFeHBvcnRFbnRyeSB7
CisgICAgICAgIGVudW0gY2xhc3MgVHlwZSB7CisgICAgICAgICAgICBMb2NhbCwKKyAgICAgICAg
ICAgIE5hbWVzcGFjZSwKKyAgICAgICAgICAgIEluZGlyZWN0CisgICAgICAgIH07CisKKyAgICAg
ICAgc3RhdGljIEV4cG9ydEVudHJ5IGNyZWF0ZUxvY2FsKGNvbnN0IElkZW50aWZpZXImIGV4cG9y
dE5hbWUsIGNvbnN0IElkZW50aWZpZXImIGxvY2FsTmFtZSwgY29uc3QgVmFyaWFibGVFbnZpcm9u
bWVudEVudHJ5Jik7CisgICAgICAgIHN0YXRpYyBFeHBvcnRFbnRyeSBjcmVhdGVOYW1lc3BhY2Uo
Y29uc3QgSWRlbnRpZmllciYgZXhwb3J0TmFtZSwgY29uc3QgSWRlbnRpZmllciYgbW9kdWxlTmFt
ZSk7CisgICAgICAgIHN0YXRpYyBFeHBvcnRFbnRyeSBjcmVhdGVJbmRpcmVjdChjb25zdCBJZGVu
dGlmaWVyJiBleHBvcnROYW1lLCBjb25zdCBJZGVudGlmaWVyJiBpbXBvcnROYW1lLCBjb25zdCBJ
ZGVudGlmaWVyJiBtb2R1bGVOYW1lKTsKKworICAgICAgICBUeXBlIHR5cGU7CisgICAgICAgIElk
ZW50aWZpZXIgZXhwb3J0TmFtZTsKKyAgICAgICAgSWRlbnRpZmllciBtb2R1bGVOYW1lOworICAg
ICAgICBJZGVudGlmaWVyIGltcG9ydE5hbWU7CisgICAgICAgIElkZW50aWZpZXIgbG9jYWxOYW1l
OworICAgICAgICBWYXJpYWJsZUVudmlyb25tZW50RW50cnkgdmFyaWFibGU7CisgICAgfTsKKwor
ICAgIHN0cnVjdCBJbXBvcnRFbnRyeSB7CisgICAgICAgIElkZW50aWZpZXIgbW9kdWxlUmVxdWVz
dDsKKyAgICAgICAgSWRlbnRpZmllciBpbXBvcnROYW1lOworICAgICAgICBJZGVudGlmaWVyIGxv
Y2FsTmFtZTsKKworICAgICAgICBib29sIGlzTmFtZXNwYWNlKFZNJiB2bSkgY29uc3QKKyAgICAg
ICAgeworICAgICAgICAgICAgcmV0dXJuIGltcG9ydE5hbWUgPT0gdm0ucHJvcGVydHlOYW1lcy0+
dGltZXNJZGVudGlmaWVyOworICAgICAgICB9CisgICAgfTsKKworICAgIHR5cGVkZWYgV1RGOjpM
aXN0SGFzaFNldDxSZWZQdHI8VW5pcXVlZFN0cmluZ0ltcGw+LCBJZGVudGlmaWVyUmVwSGFzaD4g
T3JkZXJlZElkZW50aWZpZXJTZXQ7CisgICAgdHlwZWRlZiBIYXNoTWFwPFJlZlB0cjxVbmlxdWVk
U3RyaW5nSW1wbD4sIEltcG9ydEVudHJ5LCBJZGVudGlmaWVyUmVwSGFzaCwgSGFzaFRyYWl0czxS
ZWZQdHI8VW5pcXVlZFN0cmluZ0ltcGw+Pj4gSW1wb3J0TWFwOworICAgIHR5cGVkZWYgSGFzaE1h
cDxSZWZQdHI8VW5pcXVlZFN0cmluZ0ltcGw+LCBFeHBvcnRFbnRyeSwgSWRlbnRpZmllclJlcEhh
c2gsIEhhc2hUcmFpdHM8UmVmUHRyPFVuaXF1ZWRTdHJpbmdJbXBsPj4+IEV4cG9ydE1hcDsKKwor
ICAgIERFQ0xBUkVfRVhQT1JUX0lORk87CisKKyAgICBzdGF0aWMgU3RydWN0dXJlKiBjcmVhdGVT
dHJ1Y3R1cmUoVk0mIHZtLCBKU0dsb2JhbE9iamVjdCogZ2xvYmFsT2JqZWN0LCBKU1ZhbHVlIHBy
b3RvdHlwZSkKKyAgICB7CisgICAgICAgIHJldHVybiBTdHJ1Y3R1cmU6OmNyZWF0ZSh2bSwgZ2xv
YmFsT2JqZWN0LCBwcm90b3R5cGUsIFR5cGVJbmZvKE9iamVjdFR5cGUsIFN0cnVjdHVyZUZsYWdz
KSwgaW5mbygpKTsKKyAgICB9CisKKyAgICBzdGF0aWMgSlNNb2R1bGVSZWNvcmQqIGNyZWF0ZShW
TSYgdm0sIFN0cnVjdHVyZSogc3RydWN0dXJlLCBjb25zdCBJZGVudGlmaWVyJiBtb2R1bGVLZXkp
CisgICAgeworICAgICAgICBKU01vZHVsZVJlY29yZCogaW5zdGFuY2UgPSBuZXcgKE5vdE51bGws
IGFsbG9jYXRlQ2VsbDxKU01vZHVsZVJlY29yZD4odm0uaGVhcCkpIEpTTW9kdWxlUmVjb3JkKHZt
LCBzdHJ1Y3R1cmUsIG1vZHVsZUtleSk7CisgICAgICAgIGluc3RhbmNlLT5maW5pc2hDcmVhdGlv
bih2bSk7CisgICAgICAgIHJldHVybiBpbnN0YW5jZTsKKyAgICB9CisKKyAgICBzdGF0aWMgSlNN
b2R1bGVSZWNvcmQqIGNyZWF0ZShFeGVjU3RhdGUqIGV4ZWMsIFN0cnVjdHVyZSogc3RydWN0dXJl
LCBjb25zdCBJZGVudGlmaWVyJiBtb2R1bGVLZXkpCisgICAgeworICAgICAgICByZXR1cm4gY3Jl
YXRlKGV4ZWMtPnZtKCksIHN0cnVjdHVyZSwgbW9kdWxlS2V5KTsKKyAgICB9CisKKyAgICB2b2lk
IGFwcGVuZFJlcXVlc3RlZE1vZHVsZShjb25zdCBJZGVudGlmaWVyJik7CisgICAgdm9pZCBhZGRT
dGFyRXhwb3J0RW50cnkoY29uc3QgSWRlbnRpZmllciYpOworICAgIHZvaWQgYWRkSW1wb3J0RW50
cnkoY29uc3QgSW1wb3J0RW50cnkmKTsKKyAgICB2b2lkIGFkZEV4cG9ydEVudHJ5KGNvbnN0IEV4
cG9ydEVudHJ5Jik7CisKKyAgICBjb25zdCBJbXBvcnRFbnRyeSYgbG9va1VwSW1wb3J0RW50cnko
Y29uc3QgUmVmUHRyPFVuaXF1ZWRTdHJpbmdJbXBsPiYgbG9jYWxOYW1lKTsKKworICAgIGNvbnN0
IE9yZGVyZWRJZGVudGlmaWVyU2V0JiByZXF1ZXN0ZWRNb2R1bGVzKCkgY29uc3QgeyByZXR1cm4g
bV9yZXF1ZXN0ZWRNb2R1bGVzOyB9CisKKyAgICB2b2lkIGR1bXAoKTsKKworcHJpdmF0ZToKKyAg
ICBKU01vZHVsZVJlY29yZChWTSYgdm0sIFN0cnVjdHVyZSogc3RydWN0dXJlLCBjb25zdCBJZGVu
dGlmaWVyJiBtb2R1bGVLZXkpCisgICAgICAgIDogQmFzZSh2bSwgc3RydWN0dXJlKQorICAgICAg
ICAsIG1fbW9kdWxlS2V5KG1vZHVsZUtleSkKKyAgICB7CisgICAgfQorCisgICAgdm9pZCBmaW5p
c2hDcmVhdGlvbihWTSYpOworCisgICAgc3RhdGljIHZvaWQgZGVzdHJveShKU0NlbGwqKTsKKwor
ICAgIC8vIFRoZSBsb2FkZXIgcmVzb2x2ZXMgdGhlIGdpdmVuIG1vZHVsZSBuYW1lIHRvIHRoZSBt
b2R1bGUga2V5LiBUaGUgbW9kdWxlIGtleSBpcyB0aGUgdW5pcXVlIHZhbHVlIHRvIHJlcHJlc2Vu
dCB0aGlzIG1vZHVsZS4KKyAgICBJZGVudGlmaWVyIG1fbW9kdWxlS2V5OworCisgICAgLy8gTWFw
IGxvY2FsTmFtZSAtPiBJbXBvcnRFbnRyeS4KKyAgICBJbXBvcnRNYXAgbV9pbXBvcnRFbnRyaWVz
OworCisgICAgLy8gTWFwIGV4cG9ydE5hbWUgLT4gRXhwb3J0RW50cnkuCisgICAgRXhwb3J0TWFw
IG1fZXhwb3J0RW50cmllczsKKworICAgIElkZW50aWZpZXJTZXQgbV9zdGFyRXhwb3J0RW50cmll
czsKKworICAgIC8vIFNhdmUgdGhlIG9jY3VycmVuY2Ugb3JkZXIgc2luY2UgdGhlIG1vZHVsZSBs
b2FkZXIgbG9hZHMgYW5kIHJ1bnMgdGhlIG1vZHVsZXMgaW4gdGhpcyBvcmRlci4KKyAgICAvLyBo
dHRwOi8vd3d3LmVjbWEtaW50ZXJuYXRpb25hbC5vcmcvZWNtYS0yNjIvNi4wLyNzZWMtbW9kdWxl
ZXZhbHVhdGlvbgorICAgIE9yZGVyZWRJZGVudGlmaWVyU2V0IG1fcmVxdWVzdGVkTW9kdWxlczsK
K307CisKK2lubGluZSB2b2lkIEpTTW9kdWxlUmVjb3JkOjphcHBlbmRSZXF1ZXN0ZWRNb2R1bGUo
Y29uc3QgSWRlbnRpZmllciYgbW9kdWxlTmFtZSkKK3sKKyAgICBtX3JlcXVlc3RlZE1vZHVsZXMu
YWRkKG1vZHVsZU5hbWUuaW1wbCgpKTsKK30KKworaW5saW5lIHZvaWQgSlNNb2R1bGVSZWNvcmQ6
OmFkZEltcG9ydEVudHJ5KGNvbnN0IEltcG9ydEVudHJ5JiBlbnRyeSkKK3sKKyAgICBtX2ltcG9y
dEVudHJpZXMuYWRkKGVudHJ5LmxvY2FsTmFtZS5pbXBsKCksIGVudHJ5KTsKK30KKworaW5saW5l
IHZvaWQgSlNNb2R1bGVSZWNvcmQ6OmFkZEV4cG9ydEVudHJ5KGNvbnN0IEV4cG9ydEVudHJ5JiBl
bnRyeSkKK3sKKyAgICBtX2V4cG9ydEVudHJpZXMuYWRkKGVudHJ5LmV4cG9ydE5hbWUuaW1wbCgp
LCBlbnRyeSk7Cit9CisKK2lubGluZSB2b2lkIEpTTW9kdWxlUmVjb3JkOjphZGRTdGFyRXhwb3J0
RW50cnkoY29uc3QgSWRlbnRpZmllciYgbW9kdWxlTmFtZSkKK3sKKyAgICBtX3N0YXJFeHBvcnRF
bnRyaWVzLmFkZChtb2R1bGVOYW1lLmltcGwoKSk7Cit9CisKK2lubGluZSBhdXRvIEpTTW9kdWxl
UmVjb3JkOjpsb29rVXBJbXBvcnRFbnRyeShjb25zdCBSZWZQdHI8VW5pcXVlZFN0cmluZ0ltcGw+
JiBsb2NhbE5hbWUpIC0+IGNvbnN0IEltcG9ydEVudHJ5JgoreworICAgIHJldHVybiAoKm1faW1w
b3J0RW50cmllcy5maW5kKGxvY2FsTmFtZSkpLnZhbHVlOworfQorCit9IC8vIG5hbWVzcGFjZSBK
U0MKKworI2VuZGlmIC8vIEpTTW9kdWxlUmVjb3JkX2gKZGlmZiAtLWdpdCBhL1NvdXJjZS9KYXZh
U2NyaXB0Q29yZS9ydW50aW1lL01hcFByb3RvdHlwZS5jcHAgYi9Tb3VyY2UvSmF2YVNjcmlwdENv
cmUvcnVudGltZS9NYXBQcm90b3R5cGUuY3BwCmluZGV4IDk2ZGVhZTcxNGNhNTFhNjdmZDE2NDA4
ZTVjMzlkM2M2NTY3Mzg5NGQuLmU5NzJmNTQwZWZiMmYxZTZhNDhkMTI1MDNmMDMxODk3MWY0MmRm
ODIgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL01hcFByb3RvdHlw
ZS5jcHAKKysrIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvTWFwUHJvdG90eXBlLmNw
cApAQCAtNjgsNiArNjgsMTAgQEAgdm9pZCBNYXBQcm90b3R5cGU6OmZpbmlzaENyZWF0aW9uKFZN
JiB2bSwgSlNHbG9iYWxPYmplY3QqIGdsb2JhbE9iamVjdCkKICAgICBKU0NfTkFUSVZFX0ZVTkNU
SU9OKHZtLnByb3BlcnR5TmFtZXMtPmtleXMsIG1hcFByb3RvRnVuY0tleXMsIERvbnRFbnVtLCAw
KTsKICAgICBKU0NfTkFUSVZFX0ZVTkNUSU9OKHZtLnByb3BlcnR5TmFtZXMtPnZhbHVlcywgbWFw
UHJvdG9GdW5jVmFsdWVzLCBEb250RW51bSwgMCk7CiAKKyAgICAvLyBQcml2YXRlIGdldCAvIHNl
dCBvcGVyYXRpb25zLgorICAgIEpTQ19OQVRJVkVfRlVOQ1RJT04odm0ucHJvcGVydHlOYW1lcy0+
Z2V0UHJpdmF0ZU5hbWUsIG1hcFByb3RvRnVuY0dldCwgRG9udEVudW0sIDEpOworICAgIEpTQ19O
QVRJVkVfRlVOQ1RJT04odm0ucHJvcGVydHlOYW1lcy0+c2V0UHJpdmF0ZU5hbWUsIG1hcFByb3Rv
RnVuY1NldCwgRG9udEVudW0sIDIpOworCiAgICAgSlNGdW5jdGlvbiogZW50cmllcyA9IEpTRnVu
Y3Rpb246OmNyZWF0ZSh2bSwgZ2xvYmFsT2JqZWN0LCAwLCB2bS5wcm9wZXJ0eU5hbWVzLT5lbnRy
aWVzLnN0cmluZygpLCBtYXBQcm90b0Z1bmNFbnRyaWVzKTsKICAgICBwdXREaXJlY3RXaXRob3V0
VHJhbnNpdGlvbih2bSwgdm0ucHJvcGVydHlOYW1lcy0+ZW50cmllcywgZW50cmllcywgRG9udEVu
dW0pOwogICAgIHB1dERpcmVjdFdpdGhvdXRUcmFuc2l0aW9uKHZtLCB2bS5wcm9wZXJ0eU5hbWVz
LT5pdGVyYXRvclN5bWJvbCwgZW50cmllcywgRG9udEVudW0pOwpkaWZmIC0tZ2l0IGEvU291cmNl
L0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvTW9kdWxlTG9hZGVyT2JqZWN0LmNwcCBiL1NvdXJjZS9K
YXZhU2NyaXB0Q29yZS9ydW50aW1lL01vZHVsZUxvYWRlck9iamVjdC5jcHAKbmV3IGZpbGUgbW9k
ZSAxMDA2NDQKaW5kZXggMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMC4u
MzA2ODc3ZGE4MzBlZDJiMTc3MzVhMjgxMTMxNmNhMzQ1ZmIwYWIyOQotLS0gL2Rldi9udWxsCisr
KyBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL01vZHVsZUxvYWRlck9iamVjdC5jcHAK
QEAgLTAsMCArMSwzMDYgQEAKKy8qCisgKiBDb3B5cmlnaHQgKEMpIDIwMTUgQXBwbGUgSW5jLiBB
bGwgUmlnaHRzIFJlc2VydmVkLgorICoKKyAqIFJlZGlzdHJpYnV0aW9uIGFuZCB1c2UgaW4gc291
cmNlIGFuZCBiaW5hcnkgZm9ybXMsIHdpdGggb3Igd2l0aG91dAorICogbW9kaWZpY2F0aW9uLCBh
cmUgcGVybWl0dGVkIHByb3ZpZGVkIHRoYXQgdGhlIGZvbGxvd2luZyBjb25kaXRpb25zCisgKiBh
cmUgbWV0OgorICogMS4gUmVkaXN0cmlidXRpb25zIG9mIHNvdXJjZSBjb2RlIG11c3QgcmV0YWlu
IHRoZSBhYm92ZSBjb3B5cmlnaHQKKyAqICAgIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlv
bnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lci4KKyAqIDIuIFJlZGlzdHJpYnV0aW9ucyBp
biBiaW5hcnkgZm9ybSBtdXN0IHJlcHJvZHVjZSB0aGUgYWJvdmUgY29weXJpZ2h0CisgKiAgICBu
b3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWlt
ZXIgaW4gdGhlCisgKiAgICBkb2N1bWVudGF0aW9uIGFuZC9vciBvdGhlciBtYXRlcmlhbHMgcHJv
dmlkZWQgd2l0aCB0aGUgZGlzdHJpYnV0aW9uLgorICoKKyAqIFRISVMgU09GVFdBUkUgSVMgUFJP
VklERUQgQlkgQVBQTEUgSU5DLiBgYEFTIElTJycgQU5EIEFOWQorICogRVhQUkVTUyBPUiBJTVBM
SUVEIFdBUlJBTlRJRVMsIElOQ0xVRElORywgQlVUIE5PVCBMSU1JVEVEIFRPLCBUSEUKKyAqIElN
UExJRUQgV0FSUkFOVElFUyBPRiBNRVJDSEFOVEFCSUxJVFkgQU5EIEZJVE5FU1MgRk9SIEEgUEFS
VElDVUxBUgorICogUFVSUE9TRSBBUkUgRElTQ0xBSU1FRC4gIElOIE5PIEVWRU5UIFNIQUxMIEFQ
UExFIElOQy4gT1IKKyAqIENPTlRSSUJVVE9SUyBCRSBMSUFCTEUgRk9SIEFOWSBESVJFQ1QsIElO
RElSRUNULCBJTkNJREVOVEFMLCBTUEVDSUFMLAorICogRVhFTVBMQVJZLCBPUiBDT05TRVFVRU5U
SUFMIERBTUFHRVMgKElOQ0xVRElORywgQlVUIE5PVCBMSU1JVEVEIFRPLAorICogUFJPQ1VSRU1F
TlQgT0YgU1VCU1RJVFVURSBHT09EUyBPUiBTRVJWSUNFUzsgTE9TUyBPRiBVU0UsIERBVEEsIE9S
CisgKiBQUk9GSVRTOyBPUiBCVVNJTkVTUyBJTlRFUlJVUFRJT04pIEhPV0VWRVIgQ0FVU0VEIEFO
RCBPTiBBTlkgVEhFT1JZCisgKiBPRiBMSUFCSUxJVFksIFdIRVRIRVIgSU4gQ09OVFJBQ1QsIFNU
UklDVCBMSUFCSUxJVFksIE9SIFRPUlQKKyAqIChJTkNMVURJTkcgTkVHTElHRU5DRSBPUiBPVEhF
UldJU0UpIEFSSVNJTkcgSU4gQU5ZIFdBWSBPVVQgT0YgVEhFIFVTRQorICogT0YgVEhJUyBTT0ZU
V0FSRSwgRVZFTiBJRiBBRFZJU0VEIE9GIFRIRSBQT1NTSUJJTElUWSBPRiBTVUNIIERBTUFHRS4K
KyAqLworCisjaW5jbHVkZSAiY29uZmlnLmgiCisjaW5jbHVkZSAiTW9kdWxlTG9hZGVyT2JqZWN0
LmgiCisKKyNpbmNsdWRlICJCdWlsdGluTmFtZXMuaCIKKyNpbmNsdWRlICJFcnJvci5oIgorI2lu
Y2x1ZGUgIkV4Y2VwdGlvbi5oIgorI2luY2x1ZGUgIkpTQ0lubGluZXMuaCIKKyNpbmNsdWRlICJK
U0dsb2JhbE9iamVjdEZ1bmN0aW9ucy5oIgorI2luY2x1ZGUgIkpTSW50ZXJuYWxQcm9taXNlLmgi
CisjaW5jbHVkZSAiSlNJbnRlcm5hbFByb21pc2VEZWZlcnJlZC5oIgorI2luY2x1ZGUgIkpTTWFw
LmgiCisjaW5jbHVkZSAiSlNNb2R1bGVSZWNvcmQuaCIKKyNpbmNsdWRlICJNb2R1bGVBbmFseXpl
ci5oIgorI2luY2x1ZGUgIk5vZGVzLmgiCisjaW5jbHVkZSAiUGFyc2VyLmgiCisjaW5jbHVkZSAi
UGFyc2VyRXJyb3IuaCIKKworbmFtZXNwYWNlIEpTQyB7CisKK3N0YXRpYyBFbmNvZGVkSlNWYWx1
ZSBKU0NfSE9TVF9DQUxMIG1vZHVsZUxvYWRlck9iamVjdFBhcnNlTW9kdWxlKEV4ZWNTdGF0ZSop
Oworc3RhdGljIEVuY29kZWRKU1ZhbHVlIEpTQ19IT1NUX0NBTEwgbW9kdWxlTG9hZGVyT2JqZWN0
UmVxdWVzdGVkTW9kdWxlcyhFeGVjU3RhdGUqKTsKK3N0YXRpYyBFbmNvZGVkSlNWYWx1ZSBKU0Nf
SE9TVF9DQUxMIG1vZHVsZUxvYWRlck9iamVjdFJlc29sdmUoRXhlY1N0YXRlKik7CitzdGF0aWMg
RW5jb2RlZEpTVmFsdWUgSlNDX0hPU1RfQ0FMTCBtb2R1bGVMb2FkZXJPYmplY3RGZXRjaChFeGVj
U3RhdGUqKTsKK3N0YXRpYyBFbmNvZGVkSlNWYWx1ZSBKU0NfSE9TVF9DQUxMIG1vZHVsZUxvYWRl
ck9iamVjdFRyYW5zbGF0ZShFeGVjU3RhdGUqKTsKK3N0YXRpYyBFbmNvZGVkSlNWYWx1ZSBKU0Nf
SE9TVF9DQUxMIG1vZHVsZUxvYWRlck9iamVjdEluc3RhbnRpYXRlKEV4ZWNTdGF0ZSopOworCit9
CisKKyNpbmNsdWRlICJNb2R1bGVMb2FkZXJPYmplY3QubHV0LmgiCisKK25hbWVzcGFjZSBKU0Mg
eworCitTVEFUSUNfQVNTRVJUX0lTX1RSSVZJQUxMWV9ERVNUUlVDVElCTEUoTW9kdWxlTG9hZGVy
T2JqZWN0KTsKKworY29uc3QgQ2xhc3NJbmZvIE1vZHVsZUxvYWRlck9iamVjdDo6c19pbmZvID0g
eyAiTW9kdWxlTG9hZGVyIiwgJkJhc2U6OnNfaW5mbywgJm1vZHVsZUxvYWRlck9iamVjdFRhYmxl
LCBDUkVBVEVfTUVUSE9EX1RBQkxFKE1vZHVsZUxvYWRlck9iamVjdCkgfTsKKworLyogU291cmNl
IGZvciBNb2R1bGVMb2FkZXJPYmplY3QubHV0LmgKK0BiZWdpbiBtb2R1bGVMb2FkZXJPYmplY3RU
YWJsZQorICAgIHNldFN0YXRlVG9NYXggICAgICAgICAgICAgIG1vZHVsZUxvYWRlck9iamVjdFNl
dFN0YXRlVG9NYXggICAgICAgICAgICAgIERvbnRFbnVtfEZ1bmN0aW9uIDIKKyAgICBuZXdSZWdp
c3RyeUVudHJ5ICAgICAgICAgICBtb2R1bGVMb2FkZXJPYmplY3ROZXdSZWdpc3RyeUVudHJ5ICAg
ICAgICAgICBEb250RW51bXxGdW5jdGlvbiAxCisgICAgZW5zdXJlUmVnaXN0ZXJlZCAgICAgICAg
ICAgbW9kdWxlTG9hZGVyT2JqZWN0RW5zdXJlUmVnaXN0ZXJlZCAgICAgICAgICAgRG9udEVudW18
RnVuY3Rpb24gMQorICAgIGZvcmNlRnVsZmlsbFByb21pc2UgICAgICAgIG1vZHVsZUxvYWRlck9i
amVjdEZvcmNlRnVsZmlsbFByb21pc2UgICAgICAgIERvbnRFbnVtfEZ1bmN0aW9uIDIKKyAgICBm
dWxmaWxsRmV0Y2ggICAgICAgICAgICAgICBtb2R1bGVMb2FkZXJPYmplY3RGdWxmaWxsRmV0Y2gg
ICAgICAgICAgICAgICBEb250RW51bXxGdW5jdGlvbiAyCisgICAgZnVsZmlsbFRyYW5zbGF0ZSAg
ICAgICAgICAgbW9kdWxlTG9hZGVyT2JqZWN0RnVsZmlsbFRyYW5zbGF0ZSAgICAgICAgICAgRG9u
dEVudW18RnVuY3Rpb24gMgorICAgIGZ1bGZpbGxJbnN0YW50aWF0ZSAgICAgICAgIG1vZHVsZUxv
YWRlck9iamVjdEZ1bGZpbGxJbnN0YW50aWF0ZSAgICAgICAgIERvbnRFbnVtfEZ1bmN0aW9uIDIK
KyAgICBjb21taXRJbnN0YW50aWF0ZWQgICAgICAgICBtb2R1bGVMb2FkZXJPYmplY3RDb21taXRJ
bnN0YW50aWF0ZWQgICAgICAgICBEb250RW51bXxGdW5jdGlvbiAzCisgICAgaW5zdGFudGlhdGlv
biAgICAgICAgICAgICAgbW9kdWxlTG9hZGVyT2JqZWN0SW5zdGFudGlhdGlvbiAgICAgICAgICAg
ICAgRG9udEVudW18RnVuY3Rpb24gMworICAgIHJlcXVlc3RGZXRjaCAgICAgICAgICAgICAgIG1v
ZHVsZUxvYWRlck9iamVjdFJlcXVlc3RGZXRjaCAgICAgICAgICAgICAgIERvbnRFbnVtfEZ1bmN0
aW9uIDEKKyAgICByZXF1ZXN0VHJhbnNsYXRlICAgICAgICAgICBtb2R1bGVMb2FkZXJPYmplY3RS
ZXF1ZXN0VHJhbnNsYXRlICAgICAgICAgICBEb250RW51bXxGdW5jdGlvbiAxCisgICAgcmVxdWVz
dEluc3RhbnRpYXRlICAgICAgICAgbW9kdWxlTG9hZGVyT2JqZWN0UmVxdWVzdEluc3RhbnRpYXRl
ICAgICAgICAgRG9udEVudW18RnVuY3Rpb24gMQorICAgIHJlcXVlc3RSZXNvbHZlRGVwZW5kZW5j
aWVzIG1vZHVsZUxvYWRlck9iamVjdFJlcXVlc3RSZXNvbHZlRGVwZW5kZW5jaWVzIERvbnRFbnVt
fEZ1bmN0aW9uIDEKKyAgICByZXF1ZXN0SW5zdGFudGlhdGVBbGwgICAgICBtb2R1bGVMb2FkZXJP
YmplY3RSZXF1ZXN0SW5zdGFudGlhdGVBbGwgICAgICBEb250RW51bXxGdW5jdGlvbiAxCisgICAg
cHJvdmlkZSAgICAgICAgICAgICAgICAgICAgbW9kdWxlTG9hZGVyT2JqZWN0UHJvdmlkZSAgICAg
ICAgICAgICAgICAgICAgRG9udEVudW18RnVuY3Rpb24gMworICAgIHBhcnNlTW9kdWxlICAgICAg
ICAgICAgICAgIG1vZHVsZUxvYWRlck9iamVjdFBhcnNlTW9kdWxlICAgICAgICAgICAgICAgIERv
bnRFbnVtfEZ1bmN0aW9uIDIKKyAgICByZXF1ZXN0ZWRNb2R1bGVzICAgICAgICAgICBtb2R1bGVM
b2FkZXJPYmplY3RSZXF1ZXN0ZWRNb2R1bGVzICAgICAgICAgICBEb250RW51bXxGdW5jdGlvbiAx
CisgICAgcmVzb2x2ZSAgICAgICAgICAgICAgICAgICAgbW9kdWxlTG9hZGVyT2JqZWN0UmVzb2x2
ZSAgICAgICAgICAgICAgICAgICAgRG9udEVudW18RnVuY3Rpb24gMQorICAgIGZldGNoICAgICAg
ICAgICAgICAgICAgICAgIG1vZHVsZUxvYWRlck9iamVjdEZldGNoICAgICAgICAgICAgICAgICAg
ICAgIERvbnRFbnVtfEZ1bmN0aW9uIDEKKyAgICB0cmFuc2xhdGUgICAgICAgICAgICAgICAgICBt
b2R1bGVMb2FkZXJPYmplY3RUcmFuc2xhdGUgICAgICAgICAgICAgICAgICBEb250RW51bXxGdW5j
dGlvbiAyCisgICAgaW5zdGFudGlhdGUgICAgICAgICAgICAgICAgbW9kdWxlTG9hZGVyT2JqZWN0
SW5zdGFudGlhdGUgICAgICAgICAgICAgICAgRG9udEVudW18RnVuY3Rpb24gMgorQGVuZAorKi8K
KworTW9kdWxlTG9hZGVyT2JqZWN0OjpNb2R1bGVMb2FkZXJPYmplY3QoVk0mIHZtLCBTdHJ1Y3R1
cmUqIHN0cnVjdHVyZSkKKyAgICA6IEpTTm9uRmluYWxPYmplY3Qodm0sIHN0cnVjdHVyZSkKK3sK
K30KKwordm9pZCBNb2R1bGVMb2FkZXJPYmplY3Q6OmZpbmlzaENyZWF0aW9uKFZNJiB2bSwgSlNH
bG9iYWxPYmplY3QqIGdsb2JhbE9iamVjdCkKK3sKKyAgICBCYXNlOjpmaW5pc2hDcmVhdGlvbih2
bSk7CisgICAgQVNTRVJUKGluaGVyaXRzKGluZm8oKSkpOworCisgICAgLy8gQ29uc3RhbnQgdmFs
dWVzIGZvciB0aGUgc3RhdGUuCisgICAgcHV0RGlyZWN0V2l0aG91dFRyYW5zaXRpb24odm0sIElk
ZW50aWZpZXI6OmZyb21TdHJpbmcoJnZtLCAiRmV0Y2giKSwganNOdW1iZXIoU3RhdHVzOjpGZXRj
aCkpOworICAgIHB1dERpcmVjdFdpdGhvdXRUcmFuc2l0aW9uKHZtLCBJZGVudGlmaWVyOjpmcm9t
U3RyaW5nKCZ2bSwgIlRyYW5zbGF0ZSIpLCBqc051bWJlcihTdGF0dXM6OlRyYW5zbGF0ZSkpOwor
ICAgIHB1dERpcmVjdFdpdGhvdXRUcmFuc2l0aW9uKHZtLCBJZGVudGlmaWVyOjpmcm9tU3RyaW5n
KCZ2bSwgIkluc3RhbnRpYXRlIiksIGpzTnVtYmVyKFN0YXR1czo6SW5zdGFudGlhdGUpKTsKKyAg
ICBwdXREaXJlY3RXaXRob3V0VHJhbnNpdGlvbih2bSwgSWRlbnRpZmllcjo6ZnJvbVN0cmluZygm
dm0sICJSZXNvbHZlRGVwZW5kZW5jaWVzIiksIGpzTnVtYmVyKFN0YXR1czo6UmVzb2x2ZURlcGVu
ZGVuY2llcykpOworICAgIHB1dERpcmVjdFdpdGhvdXRUcmFuc2l0aW9uKHZtLCBJZGVudGlmaWVy
Ojpmcm9tU3RyaW5nKCZ2bSwgIkxpbmsiKSwganNOdW1iZXIoU3RhdHVzOjpMaW5rKSk7CisgICAg
cHV0RGlyZWN0V2l0aG91dFRyYW5zaXRpb24odm0sIElkZW50aWZpZXI6OmZyb21TdHJpbmcoJnZt
LCAiUmVhZHkiKSwganNOdW1iZXIoU3RhdHVzOjpSZWFkeSkpOworCisgICAgcHV0RGlyZWN0V2l0
aG91dFRyYW5zaXRpb24odm0sIElkZW50aWZpZXI6OmZyb21TdHJpbmcoJnZtLCAicmVnaXN0cnki
KSwgSlNNYXA6OmNyZWF0ZSh2bSwgZ2xvYmFsT2JqZWN0LT5tYXBTdHJ1Y3R1cmUoKSkpOworfQor
Citib29sIE1vZHVsZUxvYWRlck9iamVjdDo6Z2V0T3duUHJvcGVydHlTbG90KEpTT2JqZWN0KiBv
YmplY3QsIEV4ZWNTdGF0ZSogZXhlYywgUHJvcGVydHlOYW1lIHByb3BlcnR5TmFtZSwgUHJvcGVy
dHlTbG90ICZzbG90KQoreworICAgIHJldHVybiBnZXRTdGF0aWNGdW5jdGlvblNsb3Q8QmFzZT4o
ZXhlYywgbW9kdWxlTG9hZGVyT2JqZWN0VGFibGUsIGpzQ2FzdDxNb2R1bGVMb2FkZXJPYmplY3Qq
PihvYmplY3QpLCBwcm9wZXJ0eU5hbWUsIHNsb3QpOworfQorCisvLyAtLS0tLS0tLS0tLS0tLS0t
LS0tLS0tLS0tLS0tLS0gRnVuY3Rpb25zIC0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t
CisKK3N0YXRpYyBTdHJpbmcgcHJpbnRhYmxlTW9kdWxlS2V5KEV4ZWNTdGF0ZSogZXhlYywgSlNW
YWx1ZSBrZXkpCit7CisgICAgaWYgKGtleS5pc1N0cmluZygpIHx8IGtleS5pc1N5bWJvbCgpKQor
ICAgICAgICByZXR1cm4ga2V5LnRvUHJvcGVydHlLZXkoZXhlYykuaW1wbCgpOworICAgIHJldHVy
biBleGVjLT5wcm9wZXJ0eU5hbWVzKCkuZW1wdHlJZGVudGlmaWVyLmltcGwoKTsKK30KKworSlNW
YWx1ZSBNb2R1bGVMb2FkZXJPYmplY3Q6OnByb3ZpZGUoRXhlY1N0YXRlKiBleGVjLCBKU1ZhbHVl
IGtleSwgU3RhdHVzIHN0YXR1cywgY29uc3QgU3RyaW5nJiBzb3VyY2UpCit7CisgICAgSlNPYmpl
Y3QqIGZ1bmN0aW9uID0ganNDYXN0PEpTT2JqZWN0Kj4oZ2V0KGV4ZWMsIGV4ZWMtPnByb3BlcnR5
TmFtZXMoKS5idWlsdGluTmFtZXMoKS5wcm92aWRlUHVibGljTmFtZSgpKSk7CisgICAgQ2FsbERh
dGEgY2FsbERhdGE7CisgICAgQ2FsbFR5cGUgY2FsbFR5cGUgPSBKU0M6OmdldENhbGxEYXRhKGZ1
bmN0aW9uLCBjYWxsRGF0YSk7CisgICAgQVNTRVJUKGNhbGxUeXBlICE9IENhbGxUeXBlTm9uZSk7
CisKKyAgICBNYXJrZWRBcmd1bWVudEJ1ZmZlciBhcmd1bWVudHM7CisgICAgYXJndW1lbnRzLmFw
cGVuZChrZXkpOworICAgIGFyZ3VtZW50cy5hcHBlbmQoanNOdW1iZXIoc3RhdHVzKSk7CisgICAg
YXJndW1lbnRzLmFwcGVuZChqc1N0cmluZyhleGVjLCBzb3VyY2UpKTsKKworICAgIHJldHVybiBj
YWxsKGV4ZWMsIGZ1bmN0aW9uLCBjYWxsVHlwZSwgY2FsbERhdGEsIHRoaXMsIGFyZ3VtZW50cyk7
Cit9CisKK0pTVmFsdWUgTW9kdWxlTG9hZGVyT2JqZWN0OjpyZXF1ZXN0SW5zdGFudGlhdGVBbGwo
RXhlY1N0YXRlKiBleGVjLCBKU1ZhbHVlIGtleSkKK3sKKyAgICBKU09iamVjdCogZnVuY3Rpb24g
PSBqc0Nhc3Q8SlNPYmplY3QqPihnZXQoZXhlYywgZXhlYy0+cHJvcGVydHlOYW1lcygpLmJ1aWx0
aW5OYW1lcygpLnJlcXVlc3RJbnN0YW50aWF0ZUFsbFB1YmxpY05hbWUoKSkpOworICAgIENhbGxE
YXRhIGNhbGxEYXRhOworICAgIENhbGxUeXBlIGNhbGxUeXBlID0gSlNDOjpnZXRDYWxsRGF0YShm
dW5jdGlvbiwgY2FsbERhdGEpOworICAgIEFTU0VSVChjYWxsVHlwZSAhPSBDYWxsVHlwZU5vbmUp
OworCisgICAgTWFya2VkQXJndW1lbnRCdWZmZXIgYXJndW1lbnRzOworICAgIGFyZ3VtZW50cy5h
cHBlbmQoa2V5KTsKKworICAgIHJldHVybiBjYWxsKGV4ZWMsIGZ1bmN0aW9uLCBjYWxsVHlwZSwg
Y2FsbERhdGEsIHRoaXMsIGFyZ3VtZW50cyk7Cit9CisKK0pTVmFsdWUgTW9kdWxlTG9hZGVyT2Jq
ZWN0OjpyZXNvbHZlKEV4ZWNTdGF0ZSogZXhlYywgSlNWYWx1ZSBuYW1lLCBKU1ZhbHVlIHJlZmVy
cmVyKQoreworICAgIGlmIChPcHRpb25zOjpkdW1wTW9kdWxlTG9hZGluZ1N0YXRlKCkpCisgICAg
ICAgIGRhdGFMb2coIkxvYWRlciBbcmVzb2x2ZV0gIiwgcHJpbnRhYmxlTW9kdWxlS2V5KGV4ZWMs
IG5hbWUpLCAiXG4iKTsKKworICAgIEpTR2xvYmFsT2JqZWN0KiBnbG9iYWxPYmplY3QgPSBleGVj
LT5sZXhpY2FsR2xvYmFsT2JqZWN0KCk7CisgICAgaWYgKGdsb2JhbE9iamVjdC0+Z2xvYmFsT2Jq
ZWN0TWV0aG9kVGFibGUoKS0+bG9hZGVyUmVzb2x2ZSkKKyAgICAgICAgcmV0dXJuIGdsb2JhbE9i
amVjdC0+Z2xvYmFsT2JqZWN0TWV0aG9kVGFibGUoKS0+bG9hZGVyUmVzb2x2ZShnbG9iYWxPYmpl
Y3QsIGV4ZWMsIG5hbWUsIHJlZmVycmVyKTsKKyAgICBKU0ludGVybmFsUHJvbWlzZURlZmVycmVk
KiBkZWZlcnJlZCA9IEpTSW50ZXJuYWxQcm9taXNlRGVmZXJyZWQ6OmNyZWF0ZShleGVjLCBnbG9i
YWxPYmplY3QpOworICAgIGRlZmVycmVkLT5yZXNvbHZlKGV4ZWMsIG5hbWUpOworICAgIHJldHVy
biBkZWZlcnJlZC0+cHJvbWlzZSgpOworfQorCitKU1ZhbHVlIE1vZHVsZUxvYWRlck9iamVjdDo6
ZmV0Y2goRXhlY1N0YXRlKiBleGVjLCBKU1ZhbHVlIGtleSkKK3sKKyAgICBpZiAoT3B0aW9uczo6
ZHVtcE1vZHVsZUxvYWRpbmdTdGF0ZSgpKQorICAgICAgICBkYXRhTG9nKCJMb2FkZXIgW2ZldGNo
XSAiLCBwcmludGFibGVNb2R1bGVLZXkoZXhlYywga2V5KSwgIlxuIik7CisKKyAgICBKU0dsb2Jh
bE9iamVjdCogZ2xvYmFsT2JqZWN0ID0gZXhlYy0+bGV4aWNhbEdsb2JhbE9iamVjdCgpOworICAg
IGlmIChnbG9iYWxPYmplY3QtPmdsb2JhbE9iamVjdE1ldGhvZFRhYmxlKCktPmxvYWRlckZldGNo
KQorICAgICAgICByZXR1cm4gZ2xvYmFsT2JqZWN0LT5nbG9iYWxPYmplY3RNZXRob2RUYWJsZSgp
LT5sb2FkZXJGZXRjaChnbG9iYWxPYmplY3QsIGV4ZWMsIGtleSk7CisgICAgSlNJbnRlcm5hbFBy
b21pc2VEZWZlcnJlZCogZGVmZXJyZWQgPSBKU0ludGVybmFsUHJvbWlzZURlZmVycmVkOjpjcmVh
dGUoZXhlYywgZ2xvYmFsT2JqZWN0KTsKKyAgICBTdHJpbmcgbW9kdWxlS2V5ID0ga2V5LnRvU3Ry
aW5nKGV4ZWMpLT52YWx1ZShleGVjKTsKKyAgICBpZiAoZXhlYy0+aGFkRXhjZXB0aW9uKCkpIHsK
KyAgICAgICAgSlNWYWx1ZSBleGNlcHRpb24gPSBleGVjLT5leGNlcHRpb24oKS0+dmFsdWUoKTsK
KyAgICAgICAgZXhlYy0+Y2xlYXJFeGNlcHRpb24oKTsKKyAgICAgICAgZGVmZXJyZWQtPnJlamVj
dChleGVjLCBleGNlcHRpb24pOworICAgICAgICByZXR1cm4gZGVmZXJyZWQtPnByb21pc2UoKTsK
KyAgICB9CisgICAgZGVmZXJyZWQtPnJlamVjdChleGVjLCBjcmVhdGVFcnJvcihleGVjLCBtYWtl
U3RyaW5nKCJDb3VsZCBub3Qgb3BlbiB0aGUgbW9kdWxlICciLCBtb2R1bGVLZXksICInLiIpKSk7
CisgICAgcmV0dXJuIGRlZmVycmVkLT5wcm9taXNlKCk7Cit9CisKK0pTVmFsdWUgTW9kdWxlTG9h
ZGVyT2JqZWN0Ojp0cmFuc2xhdGUoRXhlY1N0YXRlKiBleGVjLCBKU1ZhbHVlIGtleSwgSlNWYWx1
ZSBwYXlsb2FkKQoreworICAgIGlmIChPcHRpb25zOjpkdW1wTW9kdWxlTG9hZGluZ1N0YXRlKCkp
CisgICAgICAgIGRhdGFMb2coIkxvYWRlciBbdHJhbnNsYXRlXSAiLCBwcmludGFibGVNb2R1bGVL
ZXkoZXhlYywga2V5KSwgIlxuIik7CisKKyAgICBKU0dsb2JhbE9iamVjdCogZ2xvYmFsT2JqZWN0
ID0gZXhlYy0+bGV4aWNhbEdsb2JhbE9iamVjdCgpOworICAgIGlmIChnbG9iYWxPYmplY3QtPmds
b2JhbE9iamVjdE1ldGhvZFRhYmxlKCktPmxvYWRlclRyYW5zbGF0ZSkKKyAgICAgICAgcmV0dXJu
IGdsb2JhbE9iamVjdC0+Z2xvYmFsT2JqZWN0TWV0aG9kVGFibGUoKS0+bG9hZGVyVHJhbnNsYXRl
KGdsb2JhbE9iamVjdCwgZXhlYywga2V5LCBwYXlsb2FkKTsKKyAgICBKU0ludGVybmFsUHJvbWlz
ZURlZmVycmVkKiBkZWZlcnJlZCA9IEpTSW50ZXJuYWxQcm9taXNlRGVmZXJyZWQ6OmNyZWF0ZShl
eGVjLCBnbG9iYWxPYmplY3QpOworICAgIGRlZmVycmVkLT5yZXNvbHZlKGV4ZWMsIHBheWxvYWQp
OworICAgIHJldHVybiBkZWZlcnJlZC0+cHJvbWlzZSgpOworfQorCitKU1ZhbHVlIE1vZHVsZUxv
YWRlck9iamVjdDo6aW5zdGFudGlhdGUoRXhlY1N0YXRlKiBleGVjLCBKU1ZhbHVlIGtleSwgSlNW
YWx1ZSBzb3VyY2UpCit7CisgICAgaWYgKE9wdGlvbnM6OmR1bXBNb2R1bGVMb2FkaW5nU3RhdGUo
KSkKKyAgICAgICAgZGF0YUxvZygiTG9hZGVyIFtpbnN0YW50aWF0ZV0gIiwgcHJpbnRhYmxlTW9k
dWxlS2V5KGV4ZWMsIGtleSksICJcbiIpOworCisgICAgSlNHbG9iYWxPYmplY3QqIGdsb2JhbE9i
amVjdCA9IGV4ZWMtPmxleGljYWxHbG9iYWxPYmplY3QoKTsKKyAgICBpZiAoZ2xvYmFsT2JqZWN0
LT5nbG9iYWxPYmplY3RNZXRob2RUYWJsZSgpLT5sb2FkZXJJbnN0YW50aWF0ZSkKKyAgICAgICAg
cmV0dXJuIGdsb2JhbE9iamVjdC0+Z2xvYmFsT2JqZWN0TWV0aG9kVGFibGUoKS0+bG9hZGVySW5z
dGFudGlhdGUoZ2xvYmFsT2JqZWN0LCBleGVjLCBrZXksIHNvdXJjZSk7CisgICAgSlNJbnRlcm5h
bFByb21pc2VEZWZlcnJlZCogZGVmZXJyZWQgPSBKU0ludGVybmFsUHJvbWlzZURlZmVycmVkOjpj
cmVhdGUoZXhlYywgZ2xvYmFsT2JqZWN0KTsKKyAgICBkZWZlcnJlZC0+cmVzb2x2ZShleGVjLCBq
c1VuZGVmaW5lZCgpKTsKKyAgICByZXR1cm4gZGVmZXJyZWQtPnByb21pc2UoKTsKK30KKworLy8g
LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tIEhvb2sgRnVuY3Rpb25zIC0tLS0tLS0tLS0t
LS0tLS0tLS0tLS0tLS0tLQorCitFbmNvZGVkSlNWYWx1ZSBKU0NfSE9TVF9DQUxMIG1vZHVsZUxv
YWRlck9iamVjdFBhcnNlTW9kdWxlKEV4ZWNTdGF0ZSogZXhlYykKK3sKKyAgICBWTSYgdm0gPSBl
eGVjLT52bSgpOworICAgIGNvbnN0IElkZW50aWZpZXIgbW9kdWxlS2V5ID0gZXhlYy0+YXJndW1l
bnQoMCkudG9Qcm9wZXJ0eUtleShleGVjKTsKKyAgICBpZiAoZXhlYy0+aGFkRXhjZXB0aW9uKCkp
CisgICAgICAgIHJldHVybiBKU1ZhbHVlOjplbmNvZGUoanNVbmRlZmluZWQoKSk7CisKKyAgICBT
dHJpbmcgc291cmNlID0gZXhlYy0+YXJndW1lbnQoMSkudG9TdHJpbmcoZXhlYyktPnZhbHVlKGV4
ZWMpOworICAgIGlmIChleGVjLT5oYWRFeGNlcHRpb24oKSkKKyAgICAgICAgcmV0dXJuIEpTVmFs
dWU6OmVuY29kZShqc1VuZGVmaW5lZCgpKTsKKworICAgIFNvdXJjZUNvZGUgc291cmNlQ29kZSA9
IG1ha2VTb3VyY2Uoc291cmNlLCBtb2R1bGVLZXkuaW1wbCgpKTsKKworICAgIFBhcnNlckVycm9y
IGVycm9yOworICAgIHN0ZDo6dW5pcXVlX3B0cjxNb2R1bGVQcm9ncmFtTm9kZT4gbW9kdWxlUHJv
Z3JhbU5vZGUgPSBwYXJzZTxNb2R1bGVQcm9ncmFtTm9kZT4oCisgICAgICAgICZ2bSwgc291cmNl
Q29kZSwgSWRlbnRpZmllcigpLCBKU1BhcnNlckJ1aWx0aW5Nb2RlOjpOb3RCdWlsdGluLAorICAg
ICAgICBKU1BhcnNlclN0cmljdE1vZGU6OlN0cmljdCwgU291cmNlUGFyc2VNb2RlOjpNb2R1bGVB
bmFseXplTW9kZSwgZXJyb3IpOworCisgICAgaWYgKGVycm9yLmlzVmFsaWQoKSkgeworICAgICAg
ICB0aHJvd1ZNRXJyb3IoZXhlYywgZXJyb3IudG9FcnJvck9iamVjdChleGVjLT5sZXhpY2FsR2xv
YmFsT2JqZWN0KCksIHNvdXJjZUNvZGUpKTsKKyAgICAgICAgcmV0dXJuIEpTVmFsdWU6OmVuY29k
ZShqc1VuZGVmaW5lZCgpKTsKKyAgICB9CisgICAgQVNTRVJUKG1vZHVsZVByb2dyYW1Ob2RlKTsK
KworICAgIE1vZHVsZUFuYWx5emVyIG1vZHVsZUFuYWx5emVyKGV4ZWMsIG1vZHVsZUtleSwgbW9k
dWxlUHJvZ3JhbU5vZGUtPnZhckRlY2xhcmF0aW9ucygpLCBtb2R1bGVQcm9ncmFtTm9kZS0+bGV4
aWNhbFZhcmlhYmxlcygpKTsKKyAgICBKU01vZHVsZVJlY29yZCogbW9kdWxlUmVjb3JkID0gbW9k
dWxlQW5hbHl6ZXIuYW5hbHl6ZSgqbW9kdWxlUHJvZ3JhbU5vZGUpOworICAgIHJldHVybiBKU1Zh
bHVlOjplbmNvZGUobW9kdWxlUmVjb3JkKTsKK30KKworRW5jb2RlZEpTVmFsdWUgSlNDX0hPU1Rf
Q0FMTCBtb2R1bGVMb2FkZXJPYmplY3RSZXF1ZXN0ZWRNb2R1bGVzKEV4ZWNTdGF0ZSogZXhlYykK
K3sKKyAgICBKU01vZHVsZVJlY29yZCogbW9kdWxlUmVjb3JkID0ganNDYXN0PEpTTW9kdWxlUmVj
b3JkKj4oZXhlYy0+YXJndW1lbnQoMCkpOworICAgIGlmICghbW9kdWxlUmVjb3JkKQorICAgICAg
ICByZXR1cm4gSlNWYWx1ZTo6ZW5jb2RlKGNvbnN0cnVjdEVtcHR5QXJyYXkoZXhlYywgbnVsbHB0
cikpOworCisgICAgSlNBcnJheSogcmVzdWx0ID0gY29uc3RydWN0RW1wdHlBcnJheShleGVjLCBu
dWxscHRyLCBtb2R1bGVSZWNvcmQtPnJlcXVlc3RlZE1vZHVsZXMoKS5zaXplKCkpOworICAgIHNp
emVfdCBpID0gMDsKKyAgICBmb3IgKGF1dG8mIGtleSA6IG1vZHVsZVJlY29yZC0+cmVxdWVzdGVk
TW9kdWxlcygpKQorICAgICAgICByZXN1bHQtPnB1dERpcmVjdEluZGV4KGV4ZWMsIGkrKywganNT
dHJpbmcoZXhlYywga2V5LmdldCgpKSk7CisKKyAgICByZXR1cm4gSlNWYWx1ZTo6ZW5jb2RlKHJl
c3VsdCk7Cit9CisKK0VuY29kZWRKU1ZhbHVlIEpTQ19IT1NUX0NBTEwgbW9kdWxlTG9hZGVyT2Jq
ZWN0UmVzb2x2ZShFeGVjU3RhdGUqIGV4ZWMpCit7CisgICAgLy8gSG9vayBwb2ludCwgTG9hZGVy
LnJlc29sdmUuCisgICAgLy8gaHR0cHM6Ly93aGF0d2cuZ2l0aHViLmlvL2xvYWRlci8jYnJvd3Nl
ci1yZXNvbHZlCisgICAgLy8gVGFrZSB0aGUgbmFtZSBhbmQgcmVzb2x2ZSBpdCB0byB0aGUgdW5p
cXVlIGlkZW50aWZpZXIgZm9yIHRoZSByZXNvdXJjZSBsb2NhdGlvbi4KKyAgICAvLyBGb3IgZXhh
bXBsZSwgdGFrZSB0aGUgImpxdWVyeSIgYW5kIHJldHVybiB0aGUgVVJMIGZvciB0aGUgcmVzb3Vy
Y2UuCisgICAgTW9kdWxlTG9hZGVyT2JqZWN0KiBsb2FkZXIgPSBqc0R5bmFtaWNDYXN0PE1vZHVs
ZUxvYWRlck9iamVjdCo+KGV4ZWMtPnRoaXNWYWx1ZSgpKTsKKyAgICBpZiAoIWxvYWRlcikKKyAg
ICAgICAgcmV0dXJuIEpTVmFsdWU6OmVuY29kZShqc1VuZGVmaW5lZCgpKTsKKyAgICByZXR1cm4g
SlNWYWx1ZTo6ZW5jb2RlKGxvYWRlci0+cmVzb2x2ZShleGVjLCBleGVjLT5hcmd1bWVudCgwKSwg
ZXhlYy0+YXJndW1lbnQoMSkpKTsKK30KKworRW5jb2RlZEpTVmFsdWUgSlNDX0hPU1RfQ0FMTCBt
b2R1bGVMb2FkZXJPYmplY3RGZXRjaChFeGVjU3RhdGUqIGV4ZWMpCit7CisgICAgLy8gSG9vayBw
b2ludCwgTG9hZGVyLmZldGNoCisgICAgLy8gaHR0cHM6Ly93aGF0d2cuZ2l0aHViLmlvL2xvYWRl
ci8jYnJvd3Nlci1mZXRjaAorICAgIC8vIFRha2UgdGhlIGtleSBhbmQgZmV0Y2ggdGhlIHJlc291
cmNlIGFjdHVhbGx5LgorICAgIC8vIEZvciBleGFtcGxlLCBKYXZhU2NyaXB0Q29yZSBzaGVsbCBj
YW4gcHJvdmlkZSB0aGUgaG9vayBmZXRjaGluZyB0aGUgcmVzb3VyY2UKKyAgICAvLyBmcm9tIHRo
ZSBsb2NhbCBmaWxlIHN5c3RlbS4KKyAgICBNb2R1bGVMb2FkZXJPYmplY3QqIGxvYWRlciA9IGpz
RHluYW1pY0Nhc3Q8TW9kdWxlTG9hZGVyT2JqZWN0Kj4oZXhlYy0+dGhpc1ZhbHVlKCkpOworICAg
IGlmICghbG9hZGVyKQorICAgICAgICByZXR1cm4gSlNWYWx1ZTo6ZW5jb2RlKGpzVW5kZWZpbmVk
KCkpOworICAgIHJldHVybiBKU1ZhbHVlOjplbmNvZGUobG9hZGVyLT5mZXRjaChleGVjLCBleGVj
LT5hcmd1bWVudCgwKSkpOworfQorCitFbmNvZGVkSlNWYWx1ZSBKU0NfSE9TVF9DQUxMIG1vZHVs
ZUxvYWRlck9iamVjdFRyYW5zbGF0ZShFeGVjU3RhdGUqIGV4ZWMpCit7CisgICAgLy8gSG9vayBw
b2ludCwgTG9hZGVyLnRyYW5zbGF0ZQorICAgIC8vIGh0dHBzOi8vd2hhdHdnLmdpdGh1Yi5pby9s
b2FkZXIvI2Jyb3dzZXItdHJhbnNsYXRlCisgICAgLy8gVGFrZSB0aGUga2V5IGFuZCB0aGUgZmV0
Y2hlZCBzb3VyY2UgY29kZSBhbmQgdHJhbnNsYXRlIGl0IHRvIHRoZSBFUzYgc291cmNlIGNvZGUu
CisgICAgLy8gVHlwaWNhbGx5IGl0IGlzIHVzZWQgYnkgdGhlIHRyYW5zcGlsZXJzLgorICAgIE1v
ZHVsZUxvYWRlck9iamVjdCogbG9hZGVyID0ganNEeW5hbWljQ2FzdDxNb2R1bGVMb2FkZXJPYmpl
Y3QqPihleGVjLT50aGlzVmFsdWUoKSk7CisgICAgaWYgKCFsb2FkZXIpCisgICAgICAgIHJldHVy
biBKU1ZhbHVlOjplbmNvZGUoanNVbmRlZmluZWQoKSk7CisgICAgcmV0dXJuIEpTVmFsdWU6OmVu
Y29kZShsb2FkZXItPnRyYW5zbGF0ZShleGVjLCBleGVjLT5hcmd1bWVudCgwKSwgZXhlYy0+YXJn
dW1lbnQoMSkpKTsKK30KKworRW5jb2RlZEpTVmFsdWUgSlNDX0hPU1RfQ0FMTCBtb2R1bGVMb2Fk
ZXJPYmplY3RJbnN0YW50aWF0ZShFeGVjU3RhdGUqIGV4ZWMpCit7CisgICAgLy8gSG9vayBwb2lu
dCwgTG9hZGVyLmluc3RhbnRpYXRlCisgICAgLy8gaHR0cHM6Ly93aGF0d2cuZ2l0aHViLmlvL2xv
YWRlci8jYnJvd3Nlci1pbnN0YW50aWF0ZQorICAgIC8vIFRha2UgdGhlIGtleSBhbmQgdGhlIHRy
YW5zbGF0ZWQgc291cmNlIGNvZGUsIGFuZCBpbnN0YW50aWF0ZSB0aGUgbW9kdWxlIHJlY29yZAor
ICAgIC8vIGJ5IHBhcnNpbmcgdGhlIG1vZHVsZSBzb3VyY2UgY29kZS4KKyAgICAvLyBJdCBoYXMg
dGhlIGNoYW5jZSB0byBwcm92aWRlIHRoZSBvcHRpb25hbCBtb2R1bGUgaW5zdGFuY2UgdGhhdCBp
cyBkaWZmZXJlbnQgZnJvbQorICAgIC8vIHRoZSBvcmRpbmFyeSBvbmUuCisgICAgTW9kdWxlTG9h
ZGVyT2JqZWN0KiBsb2FkZXIgPSBqc0R5bmFtaWNDYXN0PE1vZHVsZUxvYWRlck9iamVjdCo+KGV4
ZWMtPnRoaXNWYWx1ZSgpKTsKKyAgICBpZiAoIWxvYWRlcikKKyAgICAgICAgcmV0dXJuIEpTVmFs
dWU6OmVuY29kZShqc1VuZGVmaW5lZCgpKTsKKyAgICByZXR1cm4gSlNWYWx1ZTo6ZW5jb2RlKGxv
YWRlci0+aW5zdGFudGlhdGUoZXhlYywgZXhlYy0+YXJndW1lbnQoMCksIGV4ZWMtPmFyZ3VtZW50
KDEpKSk7Cit9CisKK30gLy8gbmFtZXNwYWNlIEpTQwpkaWZmIC0tZ2l0IGEvU291cmNlL0phdmFT
Y3JpcHRDb3JlL3J1bnRpbWUvTW9kdWxlTG9hZGVyT2JqZWN0LmggYi9Tb3VyY2UvSmF2YVNjcmlw
dENvcmUvcnVudGltZS9Nb2R1bGVMb2FkZXJPYmplY3QuaApuZXcgZmlsZSBtb2RlIDEwMDY0NApp
bmRleCAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwLi5mZDZjNjAxMDg4
NGE0ZjQzNDlmMDlmZmY3OTNmNDJhNWNlMjA4NDA3Ci0tLSAvZGV2L251bGwKKysrIGIvU291cmNl
L0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvTW9kdWxlTG9hZGVyT2JqZWN0LmgKQEAgLTAsMCArMSw4
MSBAQAorLyoKKyAqIENvcHlyaWdodCAoQykgMjAxNSBBcHBsZSBJbmMuIEFsbCBSaWdodHMgUmVz
ZXJ2ZWQuCisgKgorICogUmVkaXN0cmlidXRpb24gYW5kIHVzZSBpbiBzb3VyY2UgYW5kIGJpbmFy
eSBmb3Jtcywgd2l0aCBvciB3aXRob3V0CisgKiBtb2RpZmljYXRpb24sIGFyZSBwZXJtaXR0ZWQg
cHJvdmlkZWQgdGhhdCB0aGUgZm9sbG93aW5nIGNvbmRpdGlvbnMKKyAqIGFyZSBtZXQ6CisgKiAx
LiBSZWRpc3RyaWJ1dGlvbnMgb2Ygc291cmNlIGNvZGUgbXVzdCByZXRhaW4gdGhlIGFib3ZlIGNv
cHlyaWdodAorICogICAgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZv
bGxvd2luZyBkaXNjbGFpbWVyLgorICogMi4gUmVkaXN0cmlidXRpb25zIGluIGJpbmFyeSBmb3Jt
IG11c3QgcmVwcm9kdWNlIHRoZSBhYm92ZSBjb3B5cmlnaHQKKyAqICAgIG5vdGljZSwgdGhpcyBs
aXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lciBpbiB0aGUKKyAq
ICAgIGRvY3VtZW50YXRpb24gYW5kL29yIG90aGVyIG1hdGVyaWFscyBwcm92aWRlZCB3aXRoIHRo
ZSBkaXN0cmlidXRpb24uCisgKgorICogVEhJUyBTT0ZUV0FSRSBJUyBQUk9WSURFRCBCWSBBUFBM
RSBJTkMuIGBgQVMgSVMnJyBBTkQgQU5ZCisgKiBFWFBSRVNTIE9SIElNUExJRUQgV0FSUkFOVElF
UywgSU5DTFVESU5HLCBCVVQgTk9UIExJTUlURUQgVE8sIFRIRQorICogSU1QTElFRCBXQVJSQU5U
SUVTIE9GIE1FUkNIQU5UQUJJTElUWSBBTkQgRklUTkVTUyBGT1IgQSBQQVJUSUNVTEFSCisgKiBQ
VVJQT1NFIEFSRSBESVNDTEFJTUVELiAgSU4gTk8gRVZFTlQgU0hBTEwgQVBQTEUgSU5DLiBPUgor
ICogQ09OVFJJQlVUT1JTIEJFIExJQUJMRSBGT1IgQU5ZIERJUkVDVCwgSU5ESVJFQ1QsIElOQ0lE
RU5UQUwsIFNQRUNJQUwsCisgKiBFWEVNUExBUlksIE9SIENPTlNFUVVFTlRJQUwgREFNQUdFUyAo
SU5DTFVESU5HLCBCVVQgTk9UIExJTUlURUQgVE8sCisgKiBQUk9DVVJFTUVOVCBPRiBTVUJTVElU
VVRFIEdPT0RTIE9SIFNFUlZJQ0VTOyBMT1NTIE9GIFVTRSwgREFUQSwgT1IKKyAqIFBST0ZJVFM7
IE9SIEJVU0lORVNTIElOVEVSUlVQVElPTikgSE9XRVZFUiBDQVVTRUQgQU5EIE9OIEFOWSBUSEVP
UlkKKyAqIE9GIExJQUJJTElUWSwgV0hFVEhFUiBJTiBDT05UUkFDVCwgU1RSSUNUIExJQUJJTElU
WSwgT1IgVE9SVAorICogKElOQ0xVRElORyBORUdMSUdFTkNFIE9SIE9USEVSV0lTRSkgQVJJU0lO
RyBJTiBBTlkgV0FZIE9VVCBPRiBUSEUgVVNFCisgKiBPRiBUSElTIFNPRlRXQVJFLCBFVkVOIElG
IEFEVklTRUQgT0YgVEhFIFBPU1NJQklMSVRZIE9GIFNVQ0ggREFNQUdFLgorICovCisKKyNpZm5k
ZWYgTW9kdWxlTG9hZGVyT2JqZWN0X2gKKyNkZWZpbmUgTW9kdWxlTG9hZGVyT2JqZWN0X2gKKwor
I2luY2x1ZGUgIkpTT2JqZWN0LmgiCisKK25hbWVzcGFjZSBKU0MgeworCitjbGFzcyBNb2R1bGVM
b2FkZXJPYmplY3QgOiBwdWJsaWMgSlNOb25GaW5hbE9iamVjdCB7Citwcml2YXRlOgorICAgIE1v
ZHVsZUxvYWRlck9iamVjdChWTSYsIFN0cnVjdHVyZSopOworcHVibGljOgorICAgIHR5cGVkZWYg
SlNOb25GaW5hbE9iamVjdCBCYXNlOworICAgIHN0YXRpYyBjb25zdCB1bnNpZ25lZCBTdHJ1Y3R1
cmVGbGFncyA9IEJhc2U6OlN0cnVjdHVyZUZsYWdzIHwgT3ZlcnJpZGVzR2V0T3duUHJvcGVydHlT
bG90OworCisgICAgZW51bSBTdGF0dXMgeworICAgICAgICBGZXRjaCA9IDEsCisgICAgICAgIFRy
YW5zbGF0ZSA9IDIsCisgICAgICAgIEluc3RhbnRpYXRlID0gMywKKyAgICAgICAgUmVzb2x2ZURl
cGVuZGVuY2llcyA9IDQsCisgICAgICAgIExpbmsgPSA1LAorICAgICAgICBSZWFkeSA9IDYsCisg
ICAgfTsKKworICAgIHN0YXRpYyBNb2R1bGVMb2FkZXJPYmplY3QqIGNyZWF0ZShWTSYgdm0sIEpT
R2xvYmFsT2JqZWN0KiBnbG9iYWxPYmplY3QsIFN0cnVjdHVyZSogc3RydWN0dXJlKQorICAgIHsK
KyAgICAgICAgTW9kdWxlTG9hZGVyT2JqZWN0KiBvYmplY3QgPSBuZXcgKE5vdE51bGwsIGFsbG9j
YXRlQ2VsbDxNb2R1bGVMb2FkZXJPYmplY3Q+KHZtLmhlYXApKSBNb2R1bGVMb2FkZXJPYmplY3Qo
dm0sIHN0cnVjdHVyZSk7CisgICAgICAgIG9iamVjdC0+ZmluaXNoQ3JlYXRpb24odm0sIGdsb2Jh
bE9iamVjdCk7CisgICAgICAgIHJldHVybiBvYmplY3Q7CisgICAgfQorCisgICAgREVDTEFSRV9J
TkZPOworCisgICAgc3RhdGljIFN0cnVjdHVyZSogY3JlYXRlU3RydWN0dXJlKFZNJiB2bSwgSlNH
bG9iYWxPYmplY3QqIGdsb2JhbE9iamVjdCwgSlNWYWx1ZSBwcm90b3R5cGUpCisgICAgeworICAg
ICAgICByZXR1cm4gU3RydWN0dXJlOjpjcmVhdGUodm0sIGdsb2JhbE9iamVjdCwgcHJvdG90eXBl
LCBUeXBlSW5mbyhPYmplY3RUeXBlLCBTdHJ1Y3R1cmVGbGFncyksIGluZm8oKSk7CisgICAgfQor
CisgICAgLy8gQVBJcyB0byBjb250cm9sIHRoZSBtb2R1bGUgbG9hZGVyLgorICAgIEpTVmFsdWUg
cHJvdmlkZShFeGVjU3RhdGUqLCBKU1ZhbHVlIGtleSwgU3RhdHVzLCBjb25zdCBTdHJpbmcmKTsK
KyAgICBKU1ZhbHVlIHJlcXVlc3RJbnN0YW50aWF0ZUFsbChFeGVjU3RhdGUqLCBKU1ZhbHVlIGtl
eSk7CisKKyAgICAvLyBQbGF0Zm9ybSBkZXBlbmRlbnQgaG9va2VkIEFQSXMuCisgICAgSlNWYWx1
ZSByZXNvbHZlKEV4ZWNTdGF0ZSosIEpTVmFsdWUgbmFtZSwgSlNWYWx1ZSByZWZlcnJlcik7Cisg
ICAgSlNWYWx1ZSBmZXRjaChFeGVjU3RhdGUqLCBKU1ZhbHVlIGtleSk7CisgICAgSlNWYWx1ZSB0
cmFuc2xhdGUoRXhlY1N0YXRlKiwgSlNWYWx1ZSBrZXksIEpTVmFsdWUgcGF5bG9hZCk7CisgICAg
SlNWYWx1ZSBpbnN0YW50aWF0ZShFeGVjU3RhdGUqLCBKU1ZhbHVlIGtleSwgSlNWYWx1ZSBzb3Vy
Y2UpOworCisgICAgc3RhdGljIGJvb2wgZ2V0T3duUHJvcGVydHlTbG90KEpTT2JqZWN0KiwgRXhl
Y1N0YXRlKiwgUHJvcGVydHlOYW1lLCBQcm9wZXJ0eVNsb3QmKTsKKworcHJvdGVjdGVkOgorICAg
IHZvaWQgZmluaXNoQ3JlYXRpb24oVk0mLCBKU0dsb2JhbE9iamVjdCopOworfTsKKworfSAvLyBu
YW1lc3BhY2UgSlNDCisKKyNlbmRpZiAvLyBNb2R1bGVMb2FkZXJPYmplY3RfaApkaWZmIC0tZ2l0
IGEvU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvT3B0aW9ucy5oIGIvU291cmNlL0phdmFT
Y3JpcHRDb3JlL3J1bnRpbWUvT3B0aW9ucy5oCmluZGV4IDFhNjU1NWVkNmFhZGE4MTczZmJkZTA0
ZjFmNTlhNGQxY2YzYTAwODkuLjFhNGQ3MWQxMzk0NGViYzM0Y2Q0NTM2NmFlYTFkNDI2M2VhNWI5
OGYgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL09wdGlvbnMuaAor
KysgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9PcHRpb25zLmgKQEAgLTMzMSw2ICsz
MzEsOCBAQCB0eXBlZGVmIGNvbnN0IGNoYXIqIG9wdGlvblN0cmluZzsKICAgICB2KHVuc2lnbmVk
LCB3YXRjaGRvZywgMCwgIndhdGNoZG9nIHRpbWVvdXQgKDAgPSBEaXNhYmxlZCwgTiA9IGEgdGlt
ZW91dCBwZXJpb2Qgb2YgTiBtaWxsaXNlY29uZHMpIikgXAogICAgIFwKICAgICB2KGJvb2wsIGR1
bXBNb2R1bGVSZWNvcmQsIGZhbHNlLCBudWxscHRyKSBcCisgICAgdihib29sLCBkdW1wTW9kdWxl
TG9hZGluZ1N0YXRlLCBmYWxzZSwgbnVsbHB0cikgXAorICAgIHYoYm9vbCwgZXhwb3NlSW50ZXJu
YWxNb2R1bGVMb2FkZXIsIGZhbHNlLCAiZXhwb3NlIHRoZSBpbnRlcm5hbCBtb2R1bGUgbG9hZGVy
IG9iamVjdCB0byB0aGUgZ2xvYmFsIHNwYWNlIGZvciBkZWJ1Z2dpbmciKSBcCiAKIGNsYXNzIE9w
dGlvbnMgewogcHVibGljOgpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvYmluZGluZ3MvanMv
SlNET01XaW5kb3dCYXNlLmNwcCBiL1NvdXJjZS9XZWJDb3JlL2JpbmRpbmdzL2pzL0pTRE9NV2lu
ZG93QmFzZS5jcHAKaW5kZXggOWFiMGE4ZjBkMGZiZDc4ZTVlNTdkNTgwNDc3ZTY1NWNiODk1OTVk
MS4uYTI5MGRkYzllNTgxYWNkNjM0MzAxNzAwYmFmODI3Y2ExYTRlZmQwMiAxMDA2NDQKLS0tIGEv
U291cmNlL1dlYkNvcmUvYmluZGluZ3MvanMvSlNET01XaW5kb3dCYXNlLmNwcAorKysgYi9Tb3Vy
Y2UvV2ViQ29yZS9iaW5kaW5ncy9qcy9KU0RPTVdpbmRvd0Jhc2UuY3BwCkBAIC01Niw3ICs1Niw3
IEBAIHN0YXRpYyBib29sIHNob3VsZEFsbG93QWNjZXNzRnJvbShjb25zdCBKU0dsb2JhbE9iamVj
dCogdGhpc09iamVjdCwgRXhlY1N0YXRlKiBlCiAKIGNvbnN0IENsYXNzSW5mbyBKU0RPTVdpbmRv
d0Jhc2U6OnNfaW5mbyA9IHsgIldpbmRvdyIsICZKU0RPTUdsb2JhbE9iamVjdDo6c19pbmZvLCAw
LCBDUkVBVEVfTUVUSE9EX1RBQkxFKEpTRE9NV2luZG93QmFzZSkgfTsKIAotY29uc3QgR2xvYmFs
T2JqZWN0TWV0aG9kVGFibGUgSlNET01XaW5kb3dCYXNlOjpzX2dsb2JhbE9iamVjdE1ldGhvZFRh
YmxlID0geyAmc2hvdWxkQWxsb3dBY2Nlc3NGcm9tLCAmc3VwcG9ydHNQcm9maWxpbmcsICZzdXBw
b3J0c1JpY2hTb3VyY2VJbmZvLCAmc2hvdWxkSW50ZXJydXB0U2NyaXB0LCAmamF2YVNjcmlwdFJ1
bnRpbWVGbGFncywgJnF1ZXVlVGFza1RvRXZlbnRMb29wLCAmc2hvdWxkSW50ZXJydXB0U2NyaXB0
QmVmb3JlVGltZW91dCB9OworY29uc3QgR2xvYmFsT2JqZWN0TWV0aG9kVGFibGUgSlNET01XaW5k
b3dCYXNlOjpzX2dsb2JhbE9iamVjdE1ldGhvZFRhYmxlID0geyAmc2hvdWxkQWxsb3dBY2Nlc3NG
cm9tLCAmc3VwcG9ydHNQcm9maWxpbmcsICZzdXBwb3J0c1JpY2hTb3VyY2VJbmZvLCAmc2hvdWxk
SW50ZXJydXB0U2NyaXB0LCAmamF2YVNjcmlwdFJ1bnRpbWVGbGFncywgJnF1ZXVlVGFza1RvRXZl
bnRMb29wLCAmc2hvdWxkSW50ZXJydXB0U2NyaXB0QmVmb3JlVGltZW91dCwgbnVsbHB0ciwgbnVs
bHB0ciwgbnVsbHB0ciwgbnVsbHB0ciB9OwogCiBKU0RPTVdpbmRvd0Jhc2U6OkpTRE9NV2luZG93
QmFzZShWTSYgdm0sIFN0cnVjdHVyZSogc3RydWN0dXJlLCBQYXNzUmVmUHRyPERPTVdpbmRvdz4g
d2luZG93LCBKU0RPTVdpbmRvd1NoZWxsKiBzaGVsbCkKICAgICA6IEpTRE9NR2xvYmFsT2JqZWN0
KHZtLCBzdHJ1Y3R1cmUsICZzaGVsbC0+d29ybGQoKSwgJnNfZ2xvYmFsT2JqZWN0TWV0aG9kVGFi
bGUpCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9iaW5kaW5ncy9qcy9KU1dvcmtlckdsb2Jh
bFNjb3BlQmFzZS5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9iaW5kaW5ncy9qcy9KU1dvcmtlckdsb2Jh
bFNjb3BlQmFzZS5jcHAKaW5kZXggYWFhNWRiYTU1MTcxY2I5NTQxYmE2NWUxZDI0N2FiMjljOWQ5
YzdjMy4uNTA0NGJjMTc4MzUxM2I5YjFhMjZiZDNiZDFjYjVjMDBiNzBhMTBkMCAxMDA2NDQKLS0t
IGEvU291cmNlL1dlYkNvcmUvYmluZGluZ3MvanMvSlNXb3JrZXJHbG9iYWxTY29wZUJhc2UuY3Bw
CisrKyBiL1NvdXJjZS9XZWJDb3JlL2JpbmRpbmdzL2pzL0pTV29ya2VyR2xvYmFsU2NvcGVCYXNl
LmNwcApAQCAtNDMsNyArNDMsNyBAQCBuYW1lc3BhY2UgV2ViQ29yZSB7CiAKIGNvbnN0IENsYXNz
SW5mbyBKU1dvcmtlckdsb2JhbFNjb3BlQmFzZTo6c19pbmZvID0geyAiV29ya2VyR2xvYmFsU2Nv
cGUiLCAmSlNET01HbG9iYWxPYmplY3Q6OnNfaW5mbywgMCwgQ1JFQVRFX01FVEhPRF9UQUJMRShK
U1dvcmtlckdsb2JhbFNjb3BlQmFzZSkgfTsKIAotY29uc3QgR2xvYmFsT2JqZWN0TWV0aG9kVGFi
bGUgSlNXb3JrZXJHbG9iYWxTY29wZUJhc2U6OnNfZ2xvYmFsT2JqZWN0TWV0aG9kVGFibGUgPSB7
ICZhbGxvd3NBY2Nlc3NGcm9tLCAmc3VwcG9ydHNQcm9maWxpbmcsICZzdXBwb3J0c1JpY2hTb3Vy
Y2VJbmZvLCAmc2hvdWxkSW50ZXJydXB0U2NyaXB0LCAmamF2YVNjcmlwdFJ1bnRpbWVGbGFncywg
JnF1ZXVlVGFza1RvRXZlbnRMb29wLCAmc2hvdWxkSW50ZXJydXB0U2NyaXB0QmVmb3JlVGltZW91
dCB9OworY29uc3QgR2xvYmFsT2JqZWN0TWV0aG9kVGFibGUgSlNXb3JrZXJHbG9iYWxTY29wZUJh
c2U6OnNfZ2xvYmFsT2JqZWN0TWV0aG9kVGFibGUgPSB7ICZhbGxvd3NBY2Nlc3NGcm9tLCAmc3Vw
cG9ydHNQcm9maWxpbmcsICZzdXBwb3J0c1JpY2hTb3VyY2VJbmZvLCAmc2hvdWxkSW50ZXJydXB0
U2NyaXB0LCAmamF2YVNjcmlwdFJ1bnRpbWVGbGFncywgJnF1ZXVlVGFza1RvRXZlbnRMb29wLCAm
c2hvdWxkSW50ZXJydXB0U2NyaXB0QmVmb3JlVGltZW91dCwgbnVsbHB0ciwgbnVsbHB0ciwgbnVs
bHB0ciwgbnVsbHB0ciB9OwogCiBKU1dvcmtlckdsb2JhbFNjb3BlQmFzZTo6SlNXb3JrZXJHbG9i
YWxTY29wZUJhc2UoSlNDOjpWTSYgdm0sIEpTQzo6U3RydWN0dXJlKiBzdHJ1Y3R1cmUsIFBhc3NS
ZWZQdHI8V29ya2VyR2xvYmFsU2NvcGU+IGltcGwpCiAgICAgOiBKU0RPTUdsb2JhbE9iamVjdCh2
bSwgc3RydWN0dXJlLCAmbm9ybWFsV29ybGQodm0pLCAmc19nbG9iYWxPYmplY3RNZXRob2RUYWJs
ZSkK
</data>

          </attachment>
          <attachment
              isobsolete="0"
              ispatch="1"
              isprivate="0"
          >
            <attachid>259490</attachid>
            <date>2015-08-20 14:04:55 -0700</date>
            <delta_ts>2015-08-20 18:15:21 -0700</delta_ts>
            <desc>Patch</desc>
            <filename>bug-147876-20150820140452.patch</filename>
            <type>text/plain</type>
            <size>126729</size>
            <attacher name="Yusuke Suzuki">ysuzuki</attacher>
            
              <data encoding="base64">U3VidmVyc2lvbiBSZXZpc2lvbjogMTg4NjgxCmRpZmYgLS1naXQgYS9Tb3VyY2UvSmF2YVNjcmlw
dENvcmUvQ2hhbmdlTG9nIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL0NoYW5nZUxvZwppbmRleCA3
MWEzNDc1ZTQ1NGM5MzE5NDA3M2U1Yjc3YjMzYmEzZTE5ZGFhYzM4Li5mNGQwN2FkMThjOTZmMzkw
ODczZDc1OGZkMmVmZjI5NzZkZTM3MDM5IDEwMDY0NAotLS0gYS9Tb3VyY2UvSmF2YVNjcmlwdENv
cmUvQ2hhbmdlTG9nCisrKyBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9DaGFuZ2VMb2cKQEAgLTEs
MyArMSwxNjEgQEAKKzIwMTUtMDgtMjAgIFl1c3VrZSBTdXp1a2kgIDx1dGF0YW5lLnRlYUBnbWFp
bC5jb20+CisKKyAgICAgICAgW0VTNl0gcHJvdG90eXBpbmcgbW9kdWxlIGxvYWRlciBpbiBKU0Mg
c2hlbGwKKyAgICAgICAgaHR0cHM6Ly9idWdzLndlYmtpdC5vcmcvc2hvd19idWcuY2dpP2lkPTE0
Nzg3NgorCisgICAgICAgIFJldmlld2VkIGJ5IE5PQk9EWSAoT09QUyEpLgorCisgICAgICAgIFRo
aXMgcGF0Y2ggaW1wbGVtZW50cyBFUzYgTW9kdWxlIExvYWRlciBwYXJ0LiBUaGUgaW1wbGVtZW50
YXRpb24gaXMgYmFzZWQgb24KKyAgICAgICAgdGhlIGxhdGVzdCBkcmFmdFsxLCAyXS4gVGhlIG5h
aXZlIGltcGxlbWVudGF0aW9uIHBvc2VzIHNldmVyYWwgcHJvYmxlbXMuCisgICAgICAgIFRoaXMg
cGF0Y2ggYXR0ZW1wdHMgdG8gc29sdmUgdGhlIHNwZWMgaXNzdWVzIGFuZCBwcm9wb3NlcyB0aGUg
Zml4WzMsIDQsIDVdLgorCisgICAgICAgIFdlIGNvbnN0cnVjdCB0aGUgSlNDIGludGVybmFsIG1v
ZHVsZSBsb2FkZXIgYmFzZWQgb24gdGhlIEVTNiBQcm9taXNlcy4KKyAgICAgICAgVGhlIGNoYWlu
IG9mIHRoZSBwcm9taXNlcyByZXByZXNlbnRzIHRoZSBkZXBlbmRlbmN5IGdyYXBoIG9mIHRoZSBt
b2R1bGVzIGFuZAorICAgICAgICBpdCBhdXRvbWF0aWNhbGx5IGVuYWJsZXMgYXN5bmNocm9ub3Vz
IG1vZHVsZSBmZXRjaGluZy4KKyAgICAgICAgVG8gbGV2ZXJhZ2UgdGhlIFByb21pc2VzIGludGVy
bmFsbHksIHdlIHVzZSB0aGUgSW50ZXJuYWxQcm9taXNlIGxhbmRlZCBpbiByMTg4NjgxLgorCisg
ICAgICAgIFRoZSBsb2FkZXIgaGFzIHNldmVyYWwgcGxhdGZvcm0tZGVwZW5kZW50IGhvb2tzLiBU
aGUgcGxhdGZvcm0gY2FuIGltcGxlbWVudAorICAgICAgICB0aGVzZSBob29rcyB0byBwcm92aWRl
IHRoZSBmdW5jdGlvbmFsaXR5IG1pc3NpbmcgaW4gdGhlIG1vZHVsZSBsb2FkZXJzLCBsaWtlCisg
ICAgICAgICJob3cgdG8gZmV0Y2ggdGhlIHJlc291cmNlcyIuIFRoZSBtZXRob2QgdGFibGUgb2Yg
dGhlIEpTR2xvYmFsT2JqZWN0IGlzIGV4dGVuZGVkCisgICAgICAgIHRvIGFjY2VwdCB0aGVzZSBo
b29rcyBmcm9tIHRoZSBwbGF0Zm9ybS4KKworICAgICAgICBUaGlzIHBhdGNoIGZvY3VzIG9uIHRo
ZSBsb2FkaW5nIHBhcnQuIFNvIHdlIGRvbid0IGNyZWF0ZSB0aGUgbW9kdWxlIGVudmlyb25tZW50
CisgICAgICAgIGFuZCBkb24ndCBsaW5rIHRoZSBtb2R1bGVzIHlldC4KKworICAgICAgICBUbyB0
ZXN0IHRoZSBjdXJyZW50IG1vZHVsZSBwcm9ncmVzcyBlYXNpbHksIHdlIGFkZCB0aGUgYC1tYCBv
cHRpb24gdG8gdGhlIEpTQyBzaGVsbC4KKyAgICAgICAgV2hlbiB0aGlzIG9wdGlvbiBpcyBzcGVj
aWZpZWQsIHdlIGxvYWQgdGhlIGdpdmVuIHNjcmlwdCBhcyB0aGUgbW9kdWxlLiBBbmQgdG8gdXNl
CisgICAgICAgIHRoZSBtb2R1bGUgbG9hZGluZyBpbnNpZGUgdGhlIEpTQyBzaGVsbCwgd2UgYWRk
ZWQgdGhlIHNpbXBsZSBsb2FkZXIgaG9vayBmb3IgZmV0Y2hpbmcuCisgICAgICAgIEl0IGZldGNo
ZXMgdGhlIG1vZHVsZSBjb250ZW50IGZyb20gdGhlIGZpbGUgc3lzdGVtLgorCisgICAgICAgIEFu
ZCB0byB1c2UgdGhlIEVTNiBNYXAgaW4gdGhlIExvYWRlciBpbXBsZW1lbnRhdGlvbiwgd2UgYWRk
ZWQgQGdldCBhbmQgQHNldCBtZXRob2RzIHRvIHRoZSBNYXAuCisgICAgICAgIEJ1dCBpdCBjb25m
bGljdHMgd2l0aCB0aGUgZXhpc3RpbmcgYGdldFByaXZhdGVOYW1lYCBtZXRob2QuIFJlbmFtZSBp
dCB0byBgbG9va1VwUHJpdmF0ZU5hbWVgLgorCisgICAgICAgIFsxXTogaHR0cHM6Ly93aGF0d2cu
Z2l0aHViLmlvL2xvYWRlci8KKyAgICAgICAgWzJdOiBodHRwczovL2dpdGh1Yi5jb20vd2hhdHdn
L2xvYWRlci9jb21taXQvMjE0YzdhNjYyNWI0NDViZGY0MTFjMzk5ODRmMzZmMDExMzlhMjRiZQor
ICAgICAgICBbM106IGh0dHBzOi8vZ2l0aHViLmNvbS93aGF0d2cvbG9hZGVyL3B1bGwvNjYKKyAg
ICAgICAgWzRdOiBodHRwczovL2dpdGh1Yi5jb20vd2hhdHdnL2xvYWRlci9wdWxsLzY3CisgICAg
ICAgIFs1XTogaHR0cHM6Ly9naXRodWIuY29tL3doYXR3Zy9sb2FkZXIvaXNzdWVzLzY4CisgICAg
ICAgIFs2XTogaHR0cHM6Ly9idWdzLndlYmtpdC5vcmcvc2hvd19idWcuY2dpP2lkPTE0ODEzNgor
CisgICAgICAgICogQ01ha2VMaXN0cy50eHQ6CisgICAgICAgICogRGVyaXZlZFNvdXJjZXMubWFr
ZToKKyAgICAgICAgKiBKYXZhU2NyaXB0Q29yZS52Y3hwcm9qL0phdmFTY3JpcHRDb3JlLnZjeHBy
b2o6CisgICAgICAgICogSmF2YVNjcmlwdENvcmUudmN4cHJvai9KYXZhU2NyaXB0Q29yZS52Y3hw
cm9qLmZpbHRlcnM6CisgICAgICAgICogSmF2YVNjcmlwdENvcmUueGNvZGVwcm9qL3Byb2plY3Qu
cGJ4cHJvajoKKyAgICAgICAgKiBidWlsdGlucy9CdWlsdGluTmFtZXMuaDoKKyAgICAgICAgKEpT
Qzo6QnVpbHRpbk5hbWVzOjpsb29rVXBQcml2YXRlTmFtZSk6CisgICAgICAgIChKU0M6OkJ1aWx0
aW5OYW1lczo6bG9va1VwUHVibGljTmFtZSk6CisgICAgICAgIChKU0M6OkJ1aWx0aW5OYW1lczo6
Z2V0UHJpdmF0ZU5hbWUpOiBEZWxldGVkLgorICAgICAgICAoSlNDOjpCdWlsdGluTmFtZXM6Omdl
dFB1YmxpY05hbWUpOiBEZWxldGVkLgorICAgICAgICAqIGJ1aWx0aW5zL01vZHVsZUxvYWRlck9i
amVjdC5qczogQWRkZWQuCisgICAgICAgIChzZXRTdGF0ZVRvTWF4KToKKyAgICAgICAgKG5ld1Jl
Z2lzdHJ5RW50cnkpOgorICAgICAgICAoZm9yY2VGdWxmaWxsUHJvbWlzZSk6CisgICAgICAgIChm
dWxmaWxsRmV0Y2gpOgorICAgICAgICAoZnVsZmlsbFRyYW5zbGF0ZSk6CisgICAgICAgIChmdWxm
aWxsSW5zdGFudGlhdGUpOgorICAgICAgICAoaW5zdGFudGlhdGlvbik6CisgICAgICAgIChyZXF1
ZXN0RmV0Y2gpOgorICAgICAgICAocmVxdWVzdFRyYW5zbGF0ZSk6CisgICAgICAgIChyZXF1ZXN0
SW5zdGFudGlhdGUpOgorICAgICAgICAocmVxdWVzdFJlc29sdmVEZXBlbmRlbmNpZXMucmVzb2x2
ZURlcGVuZGVuY2llc1Byb21pc2UudGhpcy5yZXF1ZXN0SW5zdGFudGlhdGUudGhlbi4pOgorICAg
ICAgICAocmVxdWVzdFJlc29sdmVEZXBlbmRlbmNpZXMucmVzb2x2ZURlcGVuZGVuY2llc1Byb21p
c2UudGhpcy5yZXF1ZXN0SW5zdGFudGlhdGUudGhlbik6CisgICAgICAgIChyZXF1ZXN0UmVzb2x2
ZURlcGVuZGVuY2llcyk6CisgICAgICAgIChyZXF1ZXN0SW5zdGFudGlhdGVBbGwpOgorICAgICAg
ICAocHJvdmlkZSk6CisgICAgICAgICoganNjLmNwcDoKKyAgICAgICAgKHN0cmluZ0Zyb21VVEYp
OgorICAgICAgICAoanNjU291cmNlKToKKyAgICAgICAgKEdsb2JhbE9iamVjdDo6bG9hZGVyRmV0
Y2gpOgorICAgICAgICAoZnVuY3Rpb25DaGVja01vZHVsZVN5bnRheCk6CisgICAgICAgIChkdW1w
RXhjZXB0aW9uKToKKyAgICAgICAgKHJ1bldpdGhTY3JpcHRzKToKKyAgICAgICAgKHByaW50VXNh
Z2VTdGF0ZW1lbnQpOgorICAgICAgICAoQ29tbWFuZExpbmU6OnBhcnNlQXJndW1lbnRzKToKKyAg
ICAgICAgKGpzY21haW4pOgorICAgICAgICAoQ29tbWFuZExpbmU6OkNvbW1hbmRMaW5lKTogRGVs
ZXRlZC4KKyAgICAgICAgKiBwYXJzZXIvTGV4ZXIuY3BwOgorICAgICAgICAoSlNDOjpMZXhlcjxM
Q2hhcj46OnBhcnNlSWRlbnRpZmllcik6CisgICAgICAgIChKU0M6OkxleGVyPFVDaGFyPjo6cGFy
c2VJZGVudGlmaWVyKToKKyAgICAgICAgKiBwYXJzZXIvTW9kdWxlQW5hbHl6ZXIuY3BwOgorICAg
ICAgICAoSlNDOjpNb2R1bGVBbmFseXplcjo6TW9kdWxlQW5hbHl6ZXIpOgorICAgICAgICAoSlND
OjpNb2R1bGVBbmFseXplcjo6ZXhwb3J0VmFyaWFibGUpOgorICAgICAgICAoSlNDOjpNb2R1bGVB
bmFseXplcjo6YW5hbHl6ZSk6CisgICAgICAgICogcGFyc2VyL01vZHVsZUFuYWx5emVyLmg6Cisg
ICAgICAgIChKU0M6Ok1vZHVsZUFuYWx5emVyOjptb2R1bGVSZWNvcmQpOgorICAgICAgICAqIHBh
cnNlci9Nb2R1bGVSZWNvcmQuY3BwOgorICAgICAgICAoSlNDOjpwcmludGFibGVOYW1lKTogRGVs
ZXRlZC4KKyAgICAgICAgKEpTQzo6TW9kdWxlUmVjb3JkOjpkdW1wKTogRGVsZXRlZC4KKyAgICAg
ICAgKiBwYXJzZXIvTW9kdWxlUmVjb3JkLmg6CisgICAgICAgIChKU0M6Ok1vZHVsZVJlY29yZDo6
SW1wb3J0RW50cnk6OmlzTmFtZXNwYWNlKTogRGVsZXRlZC4KKyAgICAgICAgKEpTQzo6TW9kdWxl
UmVjb3JkOjpjcmVhdGUpOiBEZWxldGVkLgorICAgICAgICAoSlNDOjpNb2R1bGVSZWNvcmQ6OmFw
cGVuZFJlcXVlc3RlZE1vZHVsZSk6IERlbGV0ZWQuCisgICAgICAgIChKU0M6Ok1vZHVsZVJlY29y
ZDo6YWRkSW1wb3J0RW50cnkpOiBEZWxldGVkLgorICAgICAgICAoSlNDOjpNb2R1bGVSZWNvcmQ6
OmFkZEV4cG9ydEVudHJ5KTogRGVsZXRlZC4KKyAgICAgICAgKEpTQzo6TW9kdWxlUmVjb3JkOjph
ZGRTdGFyRXhwb3J0RW50cnkpOiBEZWxldGVkLgorICAgICAgICAqIHBhcnNlci9Ob2Rlcy5oOgor
ICAgICAgICAqIHBhcnNlci9Ob2Rlc0FuYWx5emVNb2R1bGUuY3BwOgorICAgICAgICAoSlNDOjpJ
bXBvcnREZWNsYXJhdGlvbk5vZGU6OmFuYWx5emVNb2R1bGUpOgorICAgICAgICAoSlNDOjpFeHBv
cnRBbGxEZWNsYXJhdGlvbk5vZGU6OmFuYWx5emVNb2R1bGUpOgorICAgICAgICAoSlNDOjpFeHBv
cnROYW1lZERlY2xhcmF0aW9uTm9kZTo6YW5hbHl6ZU1vZHVsZSk6CisgICAgICAgICogcnVudGlt
ZS9Db21tb25JZGVudGlmaWVycy5jcHA6CisgICAgICAgIChKU0M6OkNvbW1vbklkZW50aWZpZXJz
Ojpsb29rVXBQcml2YXRlTmFtZSk6CisgICAgICAgIChKU0M6OkNvbW1vbklkZW50aWZpZXJzOjps
b29rVXBQdWJsaWNOYW1lKToKKyAgICAgICAgKEpTQzo6Q29tbW9uSWRlbnRpZmllcnM6OmdldFBy
aXZhdGVOYW1lKTogRGVsZXRlZC4KKyAgICAgICAgKEpTQzo6Q29tbW9uSWRlbnRpZmllcnM6Omdl
dFB1YmxpY05hbWUpOiBEZWxldGVkLgorICAgICAgICAqIHJ1bnRpbWUvQ29tbW9uSWRlbnRpZmll
cnMuaDoKKyAgICAgICAgKiBydW50aW1lL0NvbXBsZXRpb24uY3BwOgorICAgICAgICAoSlNDOjpj
aGVja01vZHVsZVN5bnRheCk6CisgICAgICAgIChKU0M6OmV2YWx1YXRlTW9kdWxlKToKKyAgICAg
ICAgKiBydW50aW1lL0NvbXBsZXRpb24uaDoKKyAgICAgICAgKiBydW50aW1lL0V4Y2VwdGlvbkhl
bHBlcnMuY3BwOgorICAgICAgICAoSlNDOjpjcmVhdGVVbmRlZmluZWRWYXJpYWJsZUVycm9yKToK
KyAgICAgICAgKiBydW50aW1lL0lkZW50aWZpZXIuaDoKKyAgICAgICAgKiBydW50aW1lL0pTR2xv
YmFsT2JqZWN0LmNwcDoKKyAgICAgICAgKEpTQzo6SlNHbG9iYWxPYmplY3Q6OmluaXQpOgorICAg
ICAgICAoSlNDOjpKU0dsb2JhbE9iamVjdDo6dmlzaXRDaGlsZHJlbik6CisgICAgICAgICogcnVu
dGltZS9KU0dsb2JhbE9iamVjdC5oOgorICAgICAgICAoSlNDOjpKU0dsb2JhbE9iamVjdDo6bW9k
dWxlTG9hZGVyKToKKyAgICAgICAgKEpTQzo6SlNHbG9iYWxPYmplY3Q6Om1vZHVsZVJlY29yZFN0
cnVjdHVyZSk6CisgICAgICAgICogcnVudGltZS9KU01vZHVsZVJlY29yZC5jcHA6IFJlbmFtZWQg
ZnJvbSBTb3VyY2UvSmF2YVNjcmlwdENvcmUvcGFyc2VyL01vZHVsZVJlY29yZC5jcHAuCisgICAg
ICAgIChKU0M6OkpTTW9kdWxlUmVjb3JkOjpkZXN0cm95KToKKyAgICAgICAgKEpTQzo6SlNNb2R1
bGVSZWNvcmQ6OmZpbmlzaENyZWF0aW9uKToKKyAgICAgICAgKEpTQzo6cHJpbnRhYmxlTmFtZSk6
CisgICAgICAgIChKU0M6OkpTTW9kdWxlUmVjb3JkOjpkdW1wKToKKyAgICAgICAgKiBydW50aW1l
L0pTTW9kdWxlUmVjb3JkLmg6IFJlbmFtZWQgZnJvbSBTb3VyY2UvSmF2YVNjcmlwdENvcmUvcGFy
c2VyL01vZHVsZVJlY29yZC5oLgorICAgICAgICAoSlNDOjpKU01vZHVsZVJlY29yZDo6SW1wb3J0
RW50cnk6OmlzTmFtZXNwYWNlKToKKyAgICAgICAgKEpTQzo6SlNNb2R1bGVSZWNvcmQ6OmNyZWF0
ZVN0cnVjdHVyZSk6CisgICAgICAgIChKU0M6OkpTTW9kdWxlUmVjb3JkOjpjcmVhdGUpOgorICAg
ICAgICAoSlNDOjpKU01vZHVsZVJlY29yZDo6cmVxdWVzdGVkTW9kdWxlcyk6CisgICAgICAgIChK
U0M6OkpTTW9kdWxlUmVjb3JkOjpKU01vZHVsZVJlY29yZCk6CisgICAgICAgIChKU0M6OkpTTW9k
dWxlUmVjb3JkOjphcHBlbmRSZXF1ZXN0ZWRNb2R1bGUpOgorICAgICAgICAoSlNDOjpKU01vZHVs
ZVJlY29yZDo6YWRkSW1wb3J0RW50cnkpOgorICAgICAgICAoSlNDOjpKU01vZHVsZVJlY29yZDo6
YWRkRXhwb3J0RW50cnkpOgorICAgICAgICAoSlNDOjpKU01vZHVsZVJlY29yZDo6YWRkU3RhckV4
cG9ydEVudHJ5KToKKyAgICAgICAgKiBydW50aW1lL01hcFByb3RvdHlwZS5jcHA6CisgICAgICAg
IChKU0M6Ok1hcFByb3RvdHlwZTo6ZmluaXNoQ3JlYXRpb24pOgorICAgICAgICAqIHJ1bnRpbWUv
TW9kdWxlTG9hZGVyT2JqZWN0LmNwcDogQWRkZWQuCisgICAgICAgIChKU0M6Ok1vZHVsZUxvYWRl
ck9iamVjdDo6TW9kdWxlTG9hZGVyT2JqZWN0KToKKyAgICAgICAgKEpTQzo6TW9kdWxlTG9hZGVy
T2JqZWN0OjpmaW5pc2hDcmVhdGlvbik6CisgICAgICAgIChKU0M6Ok1vZHVsZUxvYWRlck9iamVj
dDo6Z2V0T3duUHJvcGVydHlTbG90KToKKyAgICAgICAgKEpTQzo6cHJpbnRhYmxlTW9kdWxlS2V5
KToKKyAgICAgICAgKEpTQzo6TW9kdWxlTG9hZGVyT2JqZWN0Ojpwcm92aWRlKToKKyAgICAgICAg
KEpTQzo6TW9kdWxlTG9hZGVyT2JqZWN0OjpyZXF1ZXN0SW5zdGFudGlhdGVBbGwpOgorICAgICAg
ICAoSlNDOjpNb2R1bGVMb2FkZXJPYmplY3Q6OnJlc29sdmUpOgorICAgICAgICAoSlNDOjpNb2R1
bGVMb2FkZXJPYmplY3Q6OmZldGNoKToKKyAgICAgICAgKEpTQzo6TW9kdWxlTG9hZGVyT2JqZWN0
Ojp0cmFuc2xhdGUpOgorICAgICAgICAoSlNDOjpNb2R1bGVMb2FkZXJPYmplY3Q6Omluc3RhbnRp
YXRlKToKKyAgICAgICAgKEpTQzo6bW9kdWxlTG9hZGVyT2JqZWN0UGFyc2VNb2R1bGUpOgorICAg
ICAgICAoSlNDOjptb2R1bGVMb2FkZXJPYmplY3RSZXF1ZXN0ZWRNb2R1bGVzKToKKyAgICAgICAg
KEpTQzo6bW9kdWxlTG9hZGVyT2JqZWN0UmVzb2x2ZSk6CisgICAgICAgIChKU0M6Om1vZHVsZUxv
YWRlck9iamVjdEZldGNoKToKKyAgICAgICAgKEpTQzo6bW9kdWxlTG9hZGVyT2JqZWN0VHJhbnNs
YXRlKToKKyAgICAgICAgKEpTQzo6bW9kdWxlTG9hZGVyT2JqZWN0SW5zdGFudGlhdGUpOgorICAg
ICAgICAqIHJ1bnRpbWUvTW9kdWxlTG9hZGVyT2JqZWN0Lmg6IEFkZGVkLgorICAgICAgICAoSlND
OjpNb2R1bGVMb2FkZXJPYmplY3Q6OmNyZWF0ZSk6CisgICAgICAgIChKU0M6Ok1vZHVsZUxvYWRl
ck9iamVjdDo6Y3JlYXRlU3RydWN0dXJlKToKKyAgICAgICAgKiBydW50aW1lL09wdGlvbnMuaDoK
KwogMjAxNS0wOC0xOSAgWXVzdWtlIFN1enVraSAgPHV0YXRhbmUudGVhQGdtYWlsLmNvbT4KIAog
ICAgICAgICBBZGQgSW50ZXJuYWxQcm9taXNlIHRvIHVzZSBQcm9taXNlcyBzYWZlbHkgaW4gdGhl
IGludGVybmFscwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvQ2hhbmdlTG9nIGIvU291cmNl
L1dlYkNvcmUvQ2hhbmdlTG9nCmluZGV4IGQ5OGI0ZDI0ZWM5YzdiMWE4NzQ2OGYyNDM2ZTc0ZTU0
YTNlNjA1MTUuLmEwNzc3ODZlZmI2ZmY5OGVkYWQ1NzBlYzRjM2QwODYwNzM3ZDk2MTggMTAwNjQ0
Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL0NoYW5nZUxvZworKysgYi9Tb3VyY2UvV2ViQ29yZS9DaGFu
Z2VMb2cKQEAgLTEsMyArMSwxNSBAQAorMjAxNS0wOC0yMCAgWXVzdWtlIFN1enVraSAgPHV0YXRh
bmUudGVhQGdtYWlsLmNvbT4KKworICAgICAgICBbRVM2XSBwcm90b3R5cGluZyBtb2R1bGUgbG9h
ZGVyIGluIEpTQyBzaGVsbAorICAgICAgICBodHRwczovL2J1Z3Mud2Via2l0Lm9yZy9zaG93X2J1
Zy5jZ2k/aWQ9MTQ3ODc2CisKKyAgICAgICAgUmV2aWV3ZWQgYnkgTk9CT0RZIChPT1BTISkuCisK
KyAgICAgICAgSnVzdCBmaWxsIExvYWRlciBob29rcyB3aXRoIG51bGxwdHIuCisKKyAgICAgICAg
KiBiaW5kaW5ncy9qcy9KU0RPTVdpbmRvd0Jhc2UuY3BwOgorICAgICAgICAqIGJpbmRpbmdzL2pz
L0pTV29ya2VyR2xvYmFsU2NvcGVCYXNlLmNwcDoKKwogMjAxNS0wOC0xOSAgQnJlbnQgRnVsZ2hh
bSAgPGJmdWxnaGFtQGFwcGxlLmNvbT4KIAogICAgICAgICBbV2luXSBVbnJldmlld2VkIGJ1aWxk
IGZpeCBhZnRlciByMTg4NjYzLgpkaWZmIC0tZ2l0IGEvU291cmNlL0phdmFTY3JpcHRDb3JlL0NN
YWtlTGlzdHMudHh0IGIvU291cmNlL0phdmFTY3JpcHRDb3JlL0NNYWtlTGlzdHMudHh0CmluZGV4
IDA5ZDI0YmFiYjBhNDExMjQ1NzZhZWE0MWE4NWQyZTI4OTc2NjM5YjcuLjQ4YzcyMTZmYjk2NzRl
NGZlOGNkZWY2OTFjNjBlMzVlYTRhOTI2OGYgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9KYXZhU2NyaXB0
Q29yZS9DTWFrZUxpc3RzLnR4dAorKysgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvQ01ha2VMaXN0
cy50eHQKQEAgLTM4OSw3ICszODksNiBAQCBzZXQoSmF2YVNjcmlwdENvcmVfU09VUkNFUwogCiAg
ICAgcGFyc2VyL0xleGVyLmNwcAogICAgIHBhcnNlci9Nb2R1bGVBbmFseXplci5jcHAKLSAgICBw
YXJzZXIvTW9kdWxlUmVjb3JkLmNwcAogICAgIHBhcnNlci9Ob2Rlcy5jcHAKICAgICBwYXJzZXIv
Tm9kZXNBbmFseXplTW9kdWxlLmNwcAogICAgIHBhcnNlci9QYXJzZXIuY3BwCkBAIC01MzMsNiAr
NTMyLDcgQEAgc2V0KEphdmFTY3JpcHRDb3JlX1JVTlRJTUVfU09VUkNFUwogICAgIHJ1bnRpbWUv
SlNMb2NrLmNwcAogICAgIHJ1bnRpbWUvSlNNYXAuY3BwCiAgICAgcnVudGltZS9KU01hcEl0ZXJh
dG9yLmNwcAorICAgIHJ1bnRpbWUvSlNNb2R1bGVSZWNvcmQuY3BwCiAgICAgcnVudGltZS9KU05v
dEFuT2JqZWN0LmNwcAogICAgIHJ1bnRpbWUvSlNPTk9iamVjdC5jcHAKICAgICBydW50aW1lL0pT
T2JqZWN0LmNwcApAQCAtNTY3LDYgKzU2Nyw3IEBAIHNldChKYXZhU2NyaXB0Q29yZV9SVU5USU1F
X1NPVVJDRVMKICAgICBydW50aW1lL01hdGhDb21tb24uY3BwCiAgICAgcnVudGltZS9NYXRoT2Jq
ZWN0LmNwcAogICAgIHJ1bnRpbWUvTWVtb3J5U3RhdGlzdGljcy5jcHAKKyAgICBydW50aW1lL01v
ZHVsZUxvYWRlck9iamVjdC5jcHAKICAgICBydW50aW1lL05hdGl2ZUVycm9yQ29uc3RydWN0b3Iu
Y3BwCiAgICAgcnVudGltZS9OYXRpdmVFcnJvclByb3RvdHlwZS5jcHAKICAgICBydW50aW1lL051
bGxHZXR0ZXJGdW5jdGlvbi5jcHAKQEAgLTY2MCw2ICs2NjEsNyBAQCBzZXQoSmF2YVNjcmlwdENv
cmVfTFVUX0ZJTEVTCiAgICAgcnVudGltZS9KU09OT2JqZWN0LmNwcAogICAgIHJ1bnRpbWUvSlNQ
cm9taXNlQ29uc3RydWN0b3IuY3BwCiAgICAgcnVudGltZS9KU1Byb21pc2VQcm90b3R5cGUuY3Bw
CisgICAgcnVudGltZS9Nb2R1bGVMb2FkZXJPYmplY3QuY3BwCiAgICAgcnVudGltZS9OdW1iZXJD
b25zdHJ1Y3Rvci5jcHAKICAgICBydW50aW1lL051bWJlclByb3RvdHlwZS5jcHAKICAgICBydW50
aW1lL09iamVjdENvbnN0cnVjdG9yLmNwcApkaWZmIC0tZ2l0IGEvU291cmNlL0phdmFTY3JpcHRD
b3JlL0Rlcml2ZWRTb3VyY2VzLm1ha2UgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvRGVyaXZlZFNv
dXJjZXMubWFrZQppbmRleCA1ZTQ3YTRjZTE3MDBkMTdhOWI1MTdmZGJmMjgyNmNlOTlhODg3NmMx
Li5lMzY3MzA3Y2RjZGZkZGVmY2YzMjZiOWY5OWRmNTkwYjkwNDA0ZTQ2IDEwMDY0NAotLS0gYS9T
b3VyY2UvSmF2YVNjcmlwdENvcmUvRGVyaXZlZFNvdXJjZXMubWFrZQorKysgYi9Tb3VyY2UvSmF2
YVNjcmlwdENvcmUvRGVyaXZlZFNvdXJjZXMubWFrZQpAQCAtNTYsNiArNTYsNyBAQCBhbGwgOiBc
CiAgICAgSlNQcm9taXNlQ29uc3RydWN0b3IubHV0LmggXAogICAgIEtleXdvcmRMb29rdXAuaCBc
CiAgICAgTGV4ZXIubHV0LmggXAorICAgIE1vZHVsZUxvYWRlck9iamVjdC5sdXQuaCBcCiAgICAg
TnVtYmVyQ29uc3RydWN0b3IubHV0LmggXAogICAgIE51bWJlclByb3RvdHlwZS5sdXQuaCBcCiAg
ICAgT2JqZWN0Q29uc3RydWN0b3IubHV0LmggXApkaWZmIC0tZ2l0IGEvU291cmNlL0phdmFTY3Jp
cHRDb3JlL0phdmFTY3JpcHRDb3JlLnZjeHByb2ovSmF2YVNjcmlwdENvcmUudmN4cHJvaiBiL1Nv
dXJjZS9KYXZhU2NyaXB0Q29yZS9KYXZhU2NyaXB0Q29yZS52Y3hwcm9qL0phdmFTY3JpcHRDb3Jl
LnZjeHByb2oKaW5kZXggNmZkYmIxZjA5Yjg3OGE0NGQ0ODZjYjIyYzc3NDI5ZDU2NGQzY2FmMi4u
NzI5NWZkMDFlZmQ4MjAwNGYyMjUyYjdlYjY1MDIxMjA2OGU2Nzg5YSAxMDA2NDQKLS0tIGEvU291
cmNlL0phdmFTY3JpcHRDb3JlL0phdmFTY3JpcHRDb3JlLnZjeHByb2ovSmF2YVNjcmlwdENvcmUu
dmN4cHJvagorKysgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvSmF2YVNjcmlwdENvcmUudmN4cHJv
ai9KYXZhU2NyaXB0Q29yZS52Y3hwcm9qCkBAIC02NjIsNyArNjYyLDYgQEAKICAgICA8Q2xDb21w
aWxlIEluY2x1ZGU9Ii4uXGxsdm1cTExWTUFQSS5jcHAiIC8+CiAgICAgPENsQ29tcGlsZSBJbmNs
dWRlPSIuLlxwYXJzZXJcTGV4ZXIuY3BwIiAvPgogICAgIDxDbENvbXBpbGUgSW5jbHVkZT0iLi5c
cGFyc2VyXE1vZHVsZUFuYWx5emVyLmNwcCIgLz4KLSAgICA8Q2xDb21waWxlIEluY2x1ZGU9Ii4u
XHBhcnNlclxNb2R1bGVSZWNvcmQuY3BwIiAvPgogICAgIDxDbENvbXBpbGUgSW5jbHVkZT0iLi5c
cGFyc2VyXE5vZGVzLmNwcCIgLz4KICAgICA8Q2xDb21waWxlIEluY2x1ZGU9Ii4uXHBhcnNlclxO
b2Rlc0FuYWx5emVNb2R1bGUuY3BwIiAvPgogICAgIDxDbENvbXBpbGUgSW5jbHVkZT0iLi5ccGFy
c2VyXFBhcnNlci5jcHAiIC8+CkBAIC03ODMsNiArNzgyLDcgQEAKICAgICA8Q2xDb21waWxlIElu
Y2x1ZGU9Ii4uXHJ1bnRpbWVcSlNMb2NrLmNwcCIgLz4KICAgICA8Q2xDb21waWxlIEluY2x1ZGU9
Ii4uXHJ1bnRpbWVcSlNNYXAuY3BwIiAvPgogICAgIDxDbENvbXBpbGUgSW5jbHVkZT0iLi5ccnVu
dGltZVxKU01hcEl0ZXJhdG9yLmNwcCIgLz4KKyAgICA8Q2xDb21waWxlIEluY2x1ZGU9Ii4uXHJ1
bnRpbWVcSlNNb2R1bGVSZWNvcmQuY3BwIiAvPgogICAgIDxDbENvbXBpbGUgSW5jbHVkZT0iLi5c
cnVudGltZVxKU05vdEFuT2JqZWN0LmNwcCIgLz4KICAgICA8Q2xDb21waWxlIEluY2x1ZGU9Ii4u
XHJ1bnRpbWVcSlNPTk9iamVjdC5jcHAiIC8+CiAgICAgPENsQ29tcGlsZSBJbmNsdWRlPSIuLlxy
dW50aW1lXEpTT2JqZWN0LmNwcCIgLz4KQEAgLTgxOCw2ICs4MTgsNyBAQAogICAgIDxDbENvbXBp
bGUgSW5jbHVkZT0iLi5ccnVudGltZVxNYXRoQ29tbW9uLmNwcCIgLz4KICAgICA8Q2xDb21waWxl
IEluY2x1ZGU9Ii4uXHJ1bnRpbWVcTWF0aE9iamVjdC5jcHAiIC8+CiAgICAgPENsQ29tcGlsZSBJ
bmNsdWRlPSIuLlxydW50aW1lXE1lbW9yeVN0YXRpc3RpY3MuY3BwIiAvPgorICAgIDxDbENvbXBp
bGUgSW5jbHVkZT0iLi5ccnVudGltZVxNb2R1bGVMb2FkZXJPYmplY3QuY3BwIiAvPgogICAgIDxD
bENvbXBpbGUgSW5jbHVkZT0iLi5ccnVudGltZVxOYXRpdmVFcnJvckNvbnN0cnVjdG9yLmNwcCIg
Lz4KICAgICA8Q2xDb21waWxlIEluY2x1ZGU9Ii4uXHJ1bnRpbWVcTmF0aXZlRXJyb3JQcm90b3R5
cGUuY3BwIiAvPgogICAgIDxDbENvbXBpbGUgSW5jbHVkZT0iLi5ccnVudGltZVxOdWxsR2V0dGVy
RnVuY3Rpb24uY3BwIiAvPgpAQCAtOTMwLDYgKzkzMSw3IEBACiAgICAgPENsSW5jbHVkZSBJbmNs
dWRlPSIkKENvbmZpZ3VyYXRpb25CdWlsZERpcilcb2JqJChQbGF0Zm9ybUFyY2hpdGVjdHVyZSlc
JChQcm9qZWN0TmFtZSlcRGVyaXZlZFNvdXJjZXNcTnVtYmVyQ29uc3RydWN0b3IubHV0LmgiIC8+
CiAgICAgPENsSW5jbHVkZSBJbmNsdWRlPSIkKENvbmZpZ3VyYXRpb25CdWlsZERpcilcb2JqJChQ
bGF0Zm9ybUFyY2hpdGVjdHVyZSlcJChQcm9qZWN0TmFtZSlcRGVyaXZlZFNvdXJjZXNcTnVtYmVy
UHJvdG90eXBlLmx1dC5oIiAvPgogICAgIDxDbEluY2x1ZGUgSW5jbHVkZT0iJChDb25maWd1cmF0
aW9uQnVpbGREaXIpXG9iaiQoUGxhdGZvcm1BcmNoaXRlY3R1cmUpXCQoUHJvamVjdE5hbWUpXERl
cml2ZWRTb3VyY2VzXE9iamVjdENvbnN0cnVjdG9yLmx1dC5oIiAvPgorICAgIDxDbEluY2x1ZGUg
SW5jbHVkZT0iJChDb25maWd1cmF0aW9uQnVpbGREaXIpXG9iaiQoUGxhdGZvcm1BcmNoaXRlY3R1
cmUpXCQoUHJvamVjdE5hbWUpXERlcml2ZWRTb3VyY2VzXE1vZHVsZUxvYWRlck9iamVjdC5sdXQu
aCIgLz4KICAgICA8Q2xJbmNsdWRlIEluY2x1ZGU9IiQoQ29uZmlndXJhdGlvbkJ1aWxkRGlyKVxv
YmokKFBsYXRmb3JtQXJjaGl0ZWN0dXJlKVwkKFByb2plY3ROYW1lKVxEZXJpdmVkU291cmNlc1xS
ZWZsZWN0T2JqZWN0Lmx1dC5oIiAvPgogICAgIDxDbEluY2x1ZGUgSW5jbHVkZT0iJChDb25maWd1
cmF0aW9uQnVpbGREaXIpXG9iaiQoUGxhdGZvcm1BcmNoaXRlY3R1cmUpXCQoUHJvamVjdE5hbWUp
XERlcml2ZWRTb3VyY2VzXFJlZ0V4cENvbnN0cnVjdG9yLmx1dC5oIiAvPgogICAgIDxDbEluY2x1
ZGUgSW5jbHVkZT0iJChDb25maWd1cmF0aW9uQnVpbGREaXIpXG9iaiQoUGxhdGZvcm1BcmNoaXRl
Y3R1cmUpXCQoUHJvamVjdE5hbWUpXERlcml2ZWRTb3VyY2VzXFJlZ0V4cEppdFRhYmxlcy5oIiAv
PgpAQCAtMTQ2Miw3ICsxNDY0LDYgQEAKICAgICA8Q2xJbmNsdWRlIEluY2x1ZGU9Ii4uXHBhcnNl
clxBU1RCdWlsZGVyLmgiIC8+CiAgICAgPENsSW5jbHVkZSBJbmNsdWRlPSIuLlxwYXJzZXJcTGV4
ZXIuaCIgLz4KICAgICA8Q2xJbmNsdWRlIEluY2x1ZGU9Ii4uXHBhcnNlclxNb2R1bGVBbmFseXpl
ci5oIiAvPgotICAgIDxDbEluY2x1ZGUgSW5jbHVkZT0iLi5ccGFyc2VyXE1vZHVsZVJlY29yZC5o
IiAvPgogICAgIDxDbEluY2x1ZGUgSW5jbHVkZT0iLi5ccGFyc2VyXE5vZGVDb25zdHJ1Y3RvcnMu
aCIgLz4KICAgICA8Q2xJbmNsdWRlIEluY2x1ZGU9Ii4uXHBhcnNlclxOb2Rlcy5oIiAvPgogICAg
IDxDbEluY2x1ZGUgSW5jbHVkZT0iLi5ccGFyc2VyXFBhcnNlci5oIiAvPgpAQCAtMTYzMiw2ICsx
NjMzLDcgQEAKICAgICA8Q2xJbmNsdWRlIEluY2x1ZGU9Ii4uXHJ1bnRpbWVcSlNMb2NrLmgiIC8+
CiAgICAgPENsSW5jbHVkZSBJbmNsdWRlPSIuLlxydW50aW1lXEpTTWFwLmgiIC8+CiAgICAgPENs
SW5jbHVkZSBJbmNsdWRlPSIuLlxydW50aW1lXEpTTWFwSXRlcmF0b3IuaCIgLz4KKyAgICA8Q2xJ
bmNsdWRlIEluY2x1ZGU9Ii4uXHJ1bnRpbWVcSlNNb2R1bGVSZWNvcmQuaCIgLz4KICAgICA8Q2xJ
bmNsdWRlIEluY2x1ZGU9Ii4uXHJ1bnRpbWVcSlNOb3RBbk9iamVjdC5oIiAvPgogICAgIDxDbElu
Y2x1ZGUgSW5jbHVkZT0iLi5ccnVudGltZVxKU09OT2JqZWN0LmgiIC8+CiAgICAgPENsSW5jbHVk
ZSBJbmNsdWRlPSIuLlxydW50aW1lXEpTT2JqZWN0LmgiIC8+CkBAIC0xNjc3LDYgKzE2NzksNyBA
QAogICAgIDxDbEluY2x1ZGUgSW5jbHVkZT0iLi5ccnVudGltZVxNYXRoQ29tbW9uLmgiIC8+CiAg
ICAgPENsSW5jbHVkZSBJbmNsdWRlPSIuLlxydW50aW1lXE1hdGhPYmplY3QuaCIgLz4KICAgICA8
Q2xJbmNsdWRlIEluY2x1ZGU9Ii4uXHJ1bnRpbWVcTWVtb3J5U3RhdGlzdGljcy5oIiAvPgorICAg
IDxDbEluY2x1ZGUgSW5jbHVkZT0iLi5ccnVudGltZVxNb2R1bGVMb2FkZXJPYmplY3QuaCIgLz4K
ICAgICA8Q2xJbmNsdWRlIEluY2x1ZGU9Ii4uXHJ1bnRpbWVcTWljcm90YXNrLmgiIC8+CiAgICAg
PENsSW5jbHVkZSBJbmNsdWRlPSIuLlxydW50aW1lXE5hdGl2ZUVycm9yQ29uc3RydWN0b3IuaCIg
Lz4KICAgICA8Q2xJbmNsdWRlIEluY2x1ZGU9Ii4uXHJ1bnRpbWVcTmF0aXZlRXJyb3JQcm90b3R5
cGUuaCIgLz4KZGlmZiAtLWdpdCBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9KYXZhU2NyaXB0Q29y
ZS52Y3hwcm9qL0phdmFTY3JpcHRDb3JlLnZjeHByb2ouZmlsdGVycyBiL1NvdXJjZS9KYXZhU2Ny
aXB0Q29yZS9KYXZhU2NyaXB0Q29yZS52Y3hwcm9qL0phdmFTY3JpcHRDb3JlLnZjeHByb2ouZmls
dGVycwppbmRleCA2MmExMzdhMmNiNmNiMmE5MWQzNWYwZDU1MjU0OTdiNTQ4OTZlN2U5Li45YmRm
NTQ5NGNmMjA1ZDlhMmQyMjc1ZjM3MWFjZDFjYTZkZTBlNjEwIDEwMDY0NAotLS0gYS9Tb3VyY2Uv
SmF2YVNjcmlwdENvcmUvSmF2YVNjcmlwdENvcmUudmN4cHJvai9KYXZhU2NyaXB0Q29yZS52Y3hw
cm9qLmZpbHRlcnMKKysrIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL0phdmFTY3JpcHRDb3JlLnZj
eHByb2ovSmF2YVNjcmlwdENvcmUudmN4cHJvai5maWx0ZXJzCkBAIC00NTksOSArNDU5LDYgQEAK
ICAgICA8Q2xDb21waWxlIEluY2x1ZGU9Ii4uXHBhcnNlclxNb2R1bGVBbmFseXplci5jcHAiPgog
ICAgICAgPEZpbHRlcj5wYXJzZXI8L0ZpbHRlcj4KICAgICA8L0NsQ29tcGlsZT4KLSAgICA8Q2xD
b21waWxlIEluY2x1ZGU9Ii4uXHBhcnNlclxNb2R1bGVSZWNvcmQuY3BwIj4KLSAgICAgIDxGaWx0
ZXI+cGFyc2VyPC9GaWx0ZXI+Ci0gICAgPC9DbENvbXBpbGU+CiAgICAgPENsQ29tcGlsZSBJbmNs
dWRlPSIuLlxwYXJzZXJcTm9kZXMuY3BwIj4KICAgICAgIDxGaWx0ZXI+cGFyc2VyPC9GaWx0ZXI+
CiAgICAgPC9DbENvbXBpbGU+CkBAIC03MjYsNiArNzIzLDkgQEAKICAgICA8Q2xDb21waWxlIElu
Y2x1ZGU9Ii4uXHJ1bnRpbWVcSlNNYXAuY3BwIj4KICAgICAgIDxGaWx0ZXI+cnVudGltZTwvRmls
dGVyPgogICAgIDwvQ2xDb21waWxlPgorICAgIDxDbENvbXBpbGUgSW5jbHVkZT0iLi5ccnVudGlt
ZVxKU01vZHVsZVJlY29yZC5jcHAiPgorICAgICAgPEZpbHRlcj5ydW50aW1lPC9GaWx0ZXI+Cisg
ICAgPC9DbENvbXBpbGU+CiAgICAgPENsQ29tcGlsZSBJbmNsdWRlPSIuLlxydW50aW1lXEpTTm90
QW5PYmplY3QuY3BwIj4KICAgICAgIDxGaWx0ZXI+cnVudGltZTwvRmlsdGVyPgogICAgIDwvQ2xD
b21waWxlPgpAQCAtMTcxMCw2ICsxNzEwLDkgQEAKICAgICA8Q2xDb21waWxlIEluY2x1ZGU9Ii4u
XHJ1bnRpbWVcTWVtb3J5U3RhdGlzdGljcy5jcHAiPgogICAgICAgPEZpbHRlcj5ydW50aW1lPC9G
aWx0ZXI+CiAgICAgPC9DbENvbXBpbGU+CisgICAgPENsQ29tcGlsZSBJbmNsdWRlPSIuLlxydW50
aW1lXE1vZHVsZUxvYWRlck9iamVjdC5jcHAiPgorICAgICAgPEZpbHRlcj5ydW50aW1lPC9GaWx0
ZXI+CisgICAgPC9DbENvbXBpbGU+CiAgICAgPENsQ29tcGlsZSBJbmNsdWRlPSIuLlxieXRlY29k
ZVxDb21wbGV4R2V0U3RhdHVzLmNwcCI+CiAgICAgICA8RmlsdGVyPmJ5dGVjb2RlPC9GaWx0ZXI+
CiAgICAgPC9DbENvbXBpbGU+CkBAIC0yNTEwLDkgKzI1MTMsNiBAQAogICAgIDxDbEluY2x1ZGUg
SW5jbHVkZT0iLi5ccGFyc2VyXE1vZHVsZUFuYWx5emVyLmgiPgogICAgICAgPEZpbHRlcj5wYXJz
ZXI8L0ZpbHRlcj4KICAgICA8L0NsSW5jbHVkZT4KLSAgICA8Q2xJbmNsdWRlIEluY2x1ZGU9Ii4u
XHBhcnNlclxNb2R1bGVSZWNvcmQuaCI+Ci0gICAgICA8RmlsdGVyPnBhcnNlcjwvRmlsdGVyPgot
ICAgIDwvQ2xJbmNsdWRlPgogICAgIDxDbEluY2x1ZGUgSW5jbHVkZT0iLi5ccGFyc2VyXE5vZGVD
b25zdHJ1Y3RvcnMuaCI+CiAgICAgICA8RmlsdGVyPnBhcnNlcjwvRmlsdGVyPgogICAgIDwvQ2xJ
bmNsdWRlPgpAQCAtMzIyNSw2ICszMjI1LDkgQEAKICAgICA8Q2xJbmNsdWRlIEluY2x1ZGU9IiQo
Q29uZmlndXJhdGlvbkJ1aWxkRGlyKVxvYmokKFBsYXRmb3JtQXJjaGl0ZWN0dXJlKVwkKFByb2pl
Y3ROYW1lKVxEZXJpdmVkU291cmNlc1xMZXhlci5sdXQuaCI+CiAgICAgICA8RmlsdGVyPkRlcml2
ZWQgU291cmNlczwvRmlsdGVyPgogICAgIDwvQ2xJbmNsdWRlPgorICAgIDxDbEluY2x1ZGUgSW5j
bHVkZT0iJChDb25maWd1cmF0aW9uQnVpbGREaXIpXG9iaiQoUGxhdGZvcm1BcmNoaXRlY3R1cmUp
XCQoUHJvamVjdE5hbWUpXERlcml2ZWRTb3VyY2VzXE1vZHVsZUxvYWRlck9iamVjdC5sdXQuaCI+
CisgICAgICA8RmlsdGVyPkRlcml2ZWQgU291cmNlczwvRmlsdGVyPgorICAgIDwvQ2xJbmNsdWRl
PgogICAgIDxDbEluY2x1ZGUgSW5jbHVkZT0iJChDb25maWd1cmF0aW9uQnVpbGREaXIpXG9iaiQo
UGxhdGZvcm1BcmNoaXRlY3R1cmUpXCQoUHJvamVjdE5hbWUpXERlcml2ZWRTb3VyY2VzXE51bWJl
ckNvbnN0cnVjdG9yLmx1dC5oIj4KICAgICAgIDxGaWx0ZXI+RGVyaXZlZCBTb3VyY2VzPC9GaWx0
ZXI+CiAgICAgPC9DbEluY2x1ZGU+CkBAIC0zNDc3LDYgKzM0ODAsOSBAQAogICAgIDxDbEluY2x1
ZGUgSW5jbHVkZT0iLi5ccnVudGltZVxKU01hcC5oIj4KICAgICAgIDxGaWx0ZXI+cnVudGltZTwv
RmlsdGVyPgogICAgIDwvQ2xJbmNsdWRlPgorICAgIDxDbEluY2x1ZGUgSW5jbHVkZT0iLi5ccnVu
dGltZVxKU01vZHVsZVJlY29yZC5oIj4KKyAgICAgIDxGaWx0ZXI+cnVudGltZTwvRmlsdGVyPgor
ICAgIDwvQ2xJbmNsdWRlPgogICAgIDxDbEluY2x1ZGUgSW5jbHVkZT0iLi5ccnVudGltZVxKU1Nl
dC5oIj4KICAgICAgIDxGaWx0ZXI+cnVudGltZTwvRmlsdGVyPgogICAgIDwvQ2xJbmNsdWRlPgpA
QCAtNDI3Myw2ICs0Mjc5LDkgQEAKICAgICA8Q2xJbmNsdWRlIEluY2x1ZGU9Ii4uXHJ1bnRpbWVc
TWVtb3J5U3RhdGlzdGljcy5oIj4KICAgICAgIDxGaWx0ZXI+cnVudGltZTwvRmlsdGVyPgogICAg
IDwvQ2xJbmNsdWRlPgorICAgIDxDbEluY2x1ZGUgSW5jbHVkZT0iLi5ccnVudGltZVxNb2R1bGVM
b2FkZXJPYmplY3QuaCI+CisgICAgICA8RmlsdGVyPnJ1bnRpbWU8L0ZpbHRlcj4KKyAgICA8L0Ns
SW5jbHVkZT4KICAgICA8Q2xJbmNsdWRlIEluY2x1ZGU9Ii4uXGJ5dGVjb2RlXENvbXBsZXhHZXRT
dGF0dXMuaCI+CiAgICAgICA8RmlsdGVyPmJ5dGVjb2RlPC9GaWx0ZXI+CiAgICAgPC9DbEluY2x1
ZGU+CmRpZmYgLS1naXQgYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvSmF2YVNjcmlwdENvcmUueGNv
ZGVwcm9qL3Byb2plY3QucGJ4cHJvaiBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9KYXZhU2NyaXB0
Q29yZS54Y29kZXByb2ovcHJvamVjdC5wYnhwcm9qCmluZGV4IGEzNDAxNzIzODNkNDJlNjE4NTI0
OWVlZjg0NDEyNDUyMzZlYTY4YjguLmQwNTMxZmQ2YTU3NDdkZjdhOWYxNGQ2MjNlNmU0ZDgwNGI5
N2I2Y2YgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9KYXZhU2NyaXB0Q29yZS54
Y29kZXByb2ovcHJvamVjdC5wYnhwcm9qCisrKyBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9KYXZh
U2NyaXB0Q29yZS54Y29kZXByb2ovcHJvamVjdC5wYnhwcm9qCkBAIC0xNzA5LDExICsxNzA5LDEz
IEBACiAJCUUzNTQ2MjJCMUI2MDY1RDEwMDU0NTM4NiAvKiBDb25zdHJ1Y3RBYmlsaXR5LmggaW4g
SGVhZGVycyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSBFMzU0NjIyQTFCNjA2
NUQxMDA1NDUzODYgLyogQ29uc3RydWN0QWJpbGl0eS5oICovOyBzZXR0aW5ncyA9IHtBVFRSSUJV
VEVTID0gKFByaXZhdGUsICk7IH07IH07CiAJCUUzNUUwMzVGMUI3QUI0M0UwMDczQUQyQSAvKiBJ
bnNwZWN0b3JJbnN0cnVtZW50YXRpb25PYmplY3QuY3BwIGluIFNvdXJjZXMgKi8gPSB7aXNhID0g
UEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gRTM1RTAzNUQxQjdBQjQzRTAwNzNBRDJBIC8qIEluc3Bl
Y3Rvckluc3RydW1lbnRhdGlvbk9iamVjdC5jcHAgKi87IH07CiAJCUUzNUUwMzYwMUI3QUI0M0Uw
MDczQUQyQSAvKiBJbnNwZWN0b3JJbnN0cnVtZW50YXRpb25PYmplY3QuaCBpbiBIZWFkZXJzICov
ID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IEUzNUUwMzVFMUI3QUI0M0UwMDczQUQy
QSAvKiBJbnNwZWN0b3JJbnN0cnVtZW50YXRpb25PYmplY3QuaCAqLzsgc2V0dGluZ3MgPSB7QVRU
UklCVVRFUyA9IChQcml2YXRlLCApOyB9OyB9OworCQlFMzU1RjM1MjFCN0RDODUzMDBDNTBEQzUg
LyogTW9kdWxlTG9hZGVyT2JqZWN0LmNwcCBpbiBTb3VyY2VzICovID0ge2lzYSA9IFBCWEJ1aWxk
RmlsZTsgZmlsZVJlZiA9IEUzNTVGMzUwMUI3REM4NTMwMEM1MERDNSAvKiBNb2R1bGVMb2FkZXJP
YmplY3QuY3BwICovOyB9OworCQlFMzU1RjM1MzFCN0RDODUzMDBDNTBEQzUgLyogTW9kdWxlTG9h
ZGVyT2JqZWN0LmggaW4gSGVhZGVycyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYg
PSBFMzU1RjM1MTFCN0RDODUzMDBDNTBEQzUgLyogTW9kdWxlTG9hZGVyT2JqZWN0LmggKi87IH07
CiAJCUUzNzk0RTc1MUI3N0VCOTcwMDU1NDNBRSAvKiBNb2R1bGVBbmFseXplci5jcHAgaW4gU291
cmNlcyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSBFMzc5NEU3MzFCNzdFQjk3
MDA1NTQzQUUgLyogTW9kdWxlQW5hbHl6ZXIuY3BwICovOyB9OwogCQlFMzc5NEU3NjFCNzdFQjk3
MDA1NTQzQUUgLyogTW9kdWxlQW5hbHl6ZXIuaCBpbiBIZWFkZXJzICovID0ge2lzYSA9IFBCWEJ1
aWxkRmlsZTsgZmlsZVJlZiA9IEUzNzk0RTc0MUI3N0VCOTcwMDU1NDNBRSAvKiBNb2R1bGVBbmFs
eXplci5oICovOyBzZXR0aW5ncyA9IHtBVFRSSUJVVEVTID0gKFByaXZhdGUsICk7IH07IH07Ci0J
CUUzOTYzQ0VEMUI3M0Y3NTAwMEVCNENFNSAvKiBNb2R1bGVSZWNvcmQuaCBpbiBIZWFkZXJzICov
ID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IEUzOTYzQ0VCMUI3M0Y3NTAwMEVCNENF
NSAvKiBNb2R1bGVSZWNvcmQuaCAqLzsgc2V0dGluZ3MgPSB7QVRUUklCVVRFUyA9IChQcml2YXRl
LCApOyB9OyB9OwogCQlFMzk2M0NFRTFCNzNGNzUwMDBFQjRDRTUgLyogTm9kZXNBbmFseXplTW9k
dWxlLmNwcCBpbiBTb3VyY2VzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IEUz
OTYzQ0VDMUI3M0Y3NTAwMEVCNENFNSAvKiBOb2Rlc0FuYWx5emVNb2R1bGUuY3BwICovOyB9Owot
CQlFM0MwOUY1NTFCNzk2OTJBMDBFRTM2QTIgLyogTW9kdWxlUmVjb3JkLmNwcCBpbiBTb3VyY2Vz
ICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IEUzQzA5RjU0MUI3OTY5MkEwMEVF
MzZBMiAvKiBNb2R1bGVSZWNvcmQuY3BwICovOyB9OworCQlFMzlEQTRBNjFCN0U4QjdDMDA4NEYz
M0EgLyogSlNNb2R1bGVSZWNvcmQuY3BwIGluIFNvdXJjZXMgKi8gPSB7aXNhID0gUEJYQnVpbGRG
aWxlOyBmaWxlUmVmID0gRTM5REE0QTQxQjdFOEI3QzAwODRGMzNBIC8qIEpTTW9kdWxlUmVjb3Jk
LmNwcCAqLzsgfTsKKwkJRTM5REE0QTcxQjdFOEI3QzAwODRGMzNBIC8qIEpTTW9kdWxlUmVjb3Jk
LmggaW4gSGVhZGVycyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSBFMzlEQTRB
NTFCN0U4QjdDMDA4NEYzM0EgLyogSlNNb2R1bGVSZWNvcmQuaCAqLzsgc2V0dGluZ3MgPSB7QVRU
UklCVVRFUyA9IChQcml2YXRlLCApOyB9OyB9OwogCQlFM0VGODg3NDFCNjZERjIzMDAzRjI2Q0Ig
LyogSlNQcm9wZXJ0eU5hbWVJdGVyYXRvci5jcHAgaW4gU291cmNlcyAqLyA9IHtpc2EgPSBQQlhC
dWlsZEZpbGU7IGZpbGVSZWYgPSBFM0VGODg3MjFCNjZERjIzMDAzRjI2Q0IgLyogSlNQcm9wZXJ0
eU5hbWVJdGVyYXRvci5jcHAgKi87IH07CiAJCUUzRUY4ODc1MUI2NkRGMjMwMDNGMjZDQiAvKiBK
U1Byb3BlcnR5TmFtZUl0ZXJhdG9yLmggaW4gSGVhZGVycyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZp
bGU7IGZpbGVSZWYgPSBFM0VGODg3MzFCNjZERjIzMDAzRjI2Q0IgLyogSlNQcm9wZXJ0eU5hbWVJ
dGVyYXRvci5oICovOyBzZXR0aW5ncyA9IHtBVFRSSUJVVEVTID0gKFByaXZhdGUsICk7IH07IH07
CiAJCUU0OURDMTZCMTJFRjI5M0UwMDE4NEExRiAvKiBTb3VyY2VQcm92aWRlckNhY2hlLmNwcCBp
biBTb3VyY2VzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IEU0OURDMTU1MTJF
RjI3NzIwMDE4NEExRiAvKiBTb3VyY2VQcm92aWRlckNhY2hlLmNwcCAqLzsgfTsKQEAgLTM1NTYs
MTEgKzM1NTgsMTMgQEAKIAkJRTM1RTAzNUQxQjdBQjQzRTAwNzNBRDJBIC8qIEluc3BlY3Rvcklu
c3RydW1lbnRhdGlvbk9iamVjdC5jcHAgKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmls
ZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmNwcC5jcHA7IHBh
dGggPSBJbnNwZWN0b3JJbnN0cnVtZW50YXRpb25PYmplY3QuY3BwOyBzb3VyY2VUcmVlID0gIjxn
cm91cD4iOyB9OwogCQlFMzVFMDM1RTFCN0FCNDNFMDA3M0FEMkEgLyogSW5zcGVjdG9ySW5zdHJ1
bWVudGF0aW9uT2JqZWN0LmggKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29k
aW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmMuaDsgcGF0aCA9IEluc3Bl
Y3Rvckluc3RydW1lbnRhdGlvbk9iamVjdC5oOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9Owog
CQlFMzVFMDM2MTFCN0FCNDg1MDA3M0FEMkEgLyogSW5zcGVjdG9ySW5zdHJ1bWVudGF0aW9uT2Jq
ZWN0LmpzICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxh
c3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5qYXZhc2NyaXB0OyBwYXRoID0gSW5zcGVjdG9y
SW5zdHJ1bWVudGF0aW9uT2JqZWN0LmpzOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OworCQlF
MzU1RjM1MDFCN0RDODUzMDBDNTBEQzUgLyogTW9kdWxlTG9hZGVyT2JqZWN0LmNwcCAqLyA9IHtp
c2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlw
ZSA9IHNvdXJjZWNvZGUuY3BwLmNwcDsgcGF0aCA9IE1vZHVsZUxvYWRlck9iamVjdC5jcHA7IHNv
dXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CisJCUUzNTVGMzUxMUI3REM4NTMwMEM1MERDNSAvKiBN
b2R1bGVMb2FkZXJPYmplY3QuaCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5j
b2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuYy5oOyBwYXRoID0gTW9k
dWxlTG9hZGVyT2JqZWN0Lmg7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CiAJCUUzNzk0RTcz
MUI3N0VCOTcwMDU1NDNBRSAvKiBNb2R1bGVBbmFseXplci5jcHAgKi8gPSB7aXNhID0gUEJYRmls
ZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vj
b2RlLmNwcC5jcHA7IHBhdGggPSBNb2R1bGVBbmFseXplci5jcHA7IHNvdXJjZVRyZWUgPSAiPGdy
b3VwPiI7IH07CiAJCUUzNzk0RTc0MUI3N0VCOTcwMDU1NDNBRSAvKiBNb2R1bGVBbmFseXplci5o
ICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93
bkZpbGVUeXBlID0gc291cmNlY29kZS5jLmg7IHBhdGggPSBNb2R1bGVBbmFseXplci5oOyBzb3Vy
Y2VUcmVlID0gIjxncm91cD4iOyB9OwotCQlFMzk2M0NFQjFCNzNGNzUwMDBFQjRDRTUgLyogTW9k
dWxlUmVjb3JkLmggKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0g
NDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmMuaDsgcGF0aCA9IE1vZHVsZVJlY29y
ZC5oOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OwogCQlFMzk2M0NFQzFCNzNGNzUwMDBFQjRD
RTUgLyogTm9kZXNBbmFseXplTW9kdWxlLmNwcCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNl
OyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuY3BwLmNw
cDsgcGF0aCA9IE5vZGVzQW5hbHl6ZU1vZHVsZS5jcHA7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7
IH07Ci0JCUUzQzA5RjU0MUI3OTY5MkEwMEVFMzZBMiAvKiBNb2R1bGVSZWNvcmQuY3BwICovID0g
e2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVU
eXBlID0gc291cmNlY29kZS5jcHAuY3BwOyBwYXRoID0gTW9kdWxlUmVjb3JkLmNwcDsgc291cmNl
VHJlZSA9ICI8Z3JvdXA+IjsgfTsKKwkJRTM5REE0QTQxQjdFOEI3QzAwODRGMzNBIC8qIEpTTW9k
dWxlUmVjb3JkLmNwcCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2Rpbmcg
PSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuY3BwLmNwcDsgcGF0aCA9IEpTTW9k
dWxlUmVjb3JkLmNwcDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKKwkJRTM5REE0QTUxQjdF
OEI3QzAwODRGMzNBIC8qIEpTTW9kdWxlUmVjb3JkLmggKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVy
ZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmMu
aDsgcGF0aCA9IEpTTW9kdWxlUmVjb3JkLmg7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CiAJ
CUUzRUY4ODcyMUI2NkRGMjMwMDNGMjZDQiAvKiBKU1Byb3BlcnR5TmFtZUl0ZXJhdG9yLmNwcCAq
LyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25G
aWxlVHlwZSA9IHNvdXJjZWNvZGUuY3BwLmNwcDsgcGF0aCA9IEpTUHJvcGVydHlOYW1lSXRlcmF0
b3IuY3BwOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OwogCQlFM0VGODg3MzFCNjZERjIzMDAz
RjI2Q0IgLyogSlNQcm9wZXJ0eU5hbWVJdGVyYXRvci5oICovID0ge2lzYSA9IFBCWEZpbGVSZWZl
cmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5j
Lmg7IHBhdGggPSBKU1Byb3BlcnR5TmFtZUl0ZXJhdG9yLmg7IHNvdXJjZVRyZWUgPSAiPGdyb3Vw
PiI7IH07CiAJCUU0OURDMTQ5MTJFRjI2MUEwMDE4NEExRiAvKiBTb3VyY2VQcm92aWRlckNhY2hl
SXRlbS5oICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxh
c3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jLmg7IHBhdGggPSBTb3VyY2VQcm92aWRlckNh
Y2hlSXRlbS5oOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OwpAQCAtNDQ3NCw4ICs0NDc4LDYg
QEAKIAkJCQlGNjkyQTg2NjAyNTU1OTdEMDFGRjYwRjcgLyogTGV4ZXIuaCAqLywKIAkJCQlFMzc5
NEU3MzFCNzdFQjk3MDA1NTQzQUUgLyogTW9kdWxlQW5hbHl6ZXIuY3BwICovLAogCQkJCUUzNzk0
RTc0MUI3N0VCOTcwMDU1NDNBRSAvKiBNb2R1bGVBbmFseXplci5oICovLAotCQkJCUUzQzA5RjU0
MUI3OTY5MkEwMEVFMzZBMiAvKiBNb2R1bGVSZWNvcmQuY3BwICovLAotCQkJCUUzOTYzQ0VCMUI3
M0Y3NTAwMEVCNENFNSAvKiBNb2R1bGVSZWNvcmQuaCAqLywKIAkJCQk5MzBEQUQwMzBGQjFFQjFB
MDA4MkQyMDUgLyogTm9kZUNvbnN0cnVjdG9ycy5oICovLAogCQkJCUY2OTJBODZEMDI1NTU5N0Qw
MUZGNjBGNyAvKiBOb2Rlcy5jcHAgKi8sCiAJCQkJRjY5MkE4NkUwMjU1NTk3RDAxRkY2MEY3IC8q
IE5vZGVzLmggKi8sCkBAIC00NzQ3LDYgKzQ3NDksOCBAQAogCQkJCUE3MDA4NzQwMTdDQkU4RUIw
MEMzRTY0MyAvKiBKU01hcC5oICovLAogCQkJCUE3NERFRjhGMTgyRDk5MTQwMDUyMkMyMiAvKiBK
U01hcEl0ZXJhdG9yLmNwcCAqLywKIAkJCQlBNzRERUY5MDE4MkQ5OTE0MDA1MjJDMjIgLyogSlNN
YXBJdGVyYXRvci5oICovLAorCQkJCUUzOURBNEE0MUI3RThCN0MwMDg0RjMzQSAvKiBKU01vZHVs
ZVJlY29yZC5jcHAgKi8sCisJCQkJRTM5REE0QTUxQjdFOEI3QzAwODRGMzNBIC8qIEpTTW9kdWxl
UmVjb3JkLmggKi8sCiAJCQkJQTcyNzAwNzgwREFDNjA1NjAwRTU0OEQ3IC8qIEpTTm90QW5PYmpl
Y3QuY3BwICovLAogCQkJCUE3MjcwMDc3MERBQzYwNTYwMEU1NDhENyAvKiBKU05vdEFuT2JqZWN0
LmggKi8sCiAJCQkJQkMyMkEzOTgwRTE2RTE0ODAwQUYyMUM4IC8qIEpTT2JqZWN0LmNwcCAqLywK
QEAgLTQ4MjYsNiArNDgzMCw4IEBACiAJCQkJOTAyMTNFM0IxMjNBNDBDMjAwRDQyMkYzIC8qIE1l
bW9yeVN0YXRpc3RpY3MuY3BwICovLAogCQkJCTkwMjEzRTNDMTIzQTQwQzIwMEQ0MjJGMyAvKiBN
ZW1vcnlTdGF0aXN0aWNzLmggKi8sCiAJCQkJN0MwMDhDRTUxODc2MzFCNjAwOTU1QzI0IC8qIE1p
Y3JvdGFzay5oICovLAorCQkJCUUzNTVGMzUwMUI3REM4NTMwMEM1MERDNSAvKiBNb2R1bGVMb2Fk
ZXJPYmplY3QuY3BwICovLAorCQkJCUUzNTVGMzUxMUI3REM4NTMwMEM1MERDNSAvKiBNb2R1bGVM
b2FkZXJPYmplY3QuaCAqLywKIAkJCQlCQzAyRTkwODBFMTgzOURCMDAwRjkyOTcgLyogTmF0aXZl
RXJyb3JDb25zdHJ1Y3Rvci5jcHAgKi8sCiAJCQkJQkMwMkU5MDkwRTE4MzlEQjAwMEY5Mjk3IC8q
IE5hdGl2ZUVycm9yQ29uc3RydWN0b3IuaCAqLywKIAkJCQlCQzAyRTkwQTBFMTgzOURCMDAwRjky
OTcgLyogTmF0aXZlRXJyb3JQcm90b3R5cGUuY3BwICovLApAQCAtNTgzNiw2ICs1ODQyLDcgQEAK
IAkJCWZpbGVzID0gKAogCQkJCTBGRkE1NDk4MTZCODgzNTMwMEIzQTk4MiAvKiBBNjRET3Bjb2Rl
LmggaW4gSGVhZGVycyAqLywKIAkJCQk4NjAxNjFFMzBGM0E4M0MxMDBGODQ3MTAgLyogQWJzdHJh
Y3RNYWNyb0Fzc2VtYmxlci5oIGluIEhlYWRlcnMgKi8sCisJCQkJRTM1NUYzNTMxQjdEQzg1MzAw
QzUwREM1IC8qIE1vZHVsZUxvYWRlck9iamVjdC5oIGluIEhlYWRlcnMgKi8sCiAJCQkJMEZFMDUw
MjkxQUE5MDk1NjAwRDMzQjMzIC8qIFNjb3BlZEFyZ3VtZW50c1RhYmxlLmggaW4gSGVhZGVycyAq
LywKIAkJCQkwRjU1RjBGNTE0RDEwNjNDMDBBQzc2NDkgLyogQWJzdHJhY3RQQy5oIGluIEhlYWRl
cnMgKi8sCiAJCQkJMkE0OEQxOTExNzcyMzY1QjAwQzY1QTVGIC8qIEFQSUNhbGxiYWNrRnVuY3Rp
b24uaCBpbiBIZWFkZXJzICovLApAQCAtNjIzOCw3ICs2MjQ1LDYgQEAKIAkJCQkwRkNFRkFBQzE4
MDRDMTNFMDA0NzJDRTQgLyogRlRMU2F2ZVJlc3RvcmUuaCBpbiBIZWFkZXJzICovLAogCQkJCTBG
MjVGMUIyMTgxNjM1RjMwMDUyMkYzOSAvKiBGVExTbG93UGF0aENhbGwuaCBpbiBIZWFkZXJzICov
LAogCQkJCUUzNTQ2MjJCMUI2MDY1RDEwMDU0NTM4NiAvKiBDb25zdHJ1Y3RBYmlsaXR5LmggaW4g
SGVhZGVycyAqLywKLQkJCQlFMzk2M0NFRDFCNzNGNzUwMDBFQjRDRTUgLyogTW9kdWxlUmVjb3Jk
LmggaW4gSGVhZGVycyAqLywKIAkJCQkwRjI1RjFCNDE4MTYzNUYzMDA1MjJGMzkgLyogRlRMU2xv
d1BhdGhDYWxsS2V5LmggaW4gSGVhZGVycyAqLywKIAkJCQkwRjlEMzM5QjE4MDNBREI3MDA3M0My
QkMgLyogRlRMU3RhY2tNYXBzLmggaW4gSGVhZGVycyAqLywKIAkJCQkwRkVBMEExMjE3MDUxM0RC
MDBCQjcyMkMgLyogRlRMU3RhdGUuaCBpbiBIZWFkZXJzICovLApAQCAtNjI1OSw2ICs2MjY1LDcg
QEAKIAkJCQlCQ0JFMkNBRTE0RTk4NUFBMDAwNTkzQUQgLyogR0NBc3NlcnRpb25zLmggaW4gSGVh
ZGVycyAqLywKIAkJCQkwRjc2NkQzMDE1QThEQ0UyMDA4RjM2M0UgLyogR0NBd2FyZUpJVFN0dWJS
b3V0aW5lLmggaW4gSGVhZGVycyAqLywKIAkJCQk3MEVDMEVDNzFBQTBEN0RBMDBCNkFBRkEgLyog
U3RyaW5nSXRlcmF0b3JQcm90b3R5cGUuaCBpbiBIZWFkZXJzICovLAorCQkJCUUzOURBNEE3MUI3
RThCN0MwMDg0RjMzQSAvKiBKU01vZHVsZVJlY29yZC5oIGluIEhlYWRlcnMgKi8sCiAJCQkJMEYy
QjY2QUMxN0I2QjUzRjAwQTdBRTNGIC8qIEdDSW5jb21pbmdSZWZDb3VudGVkLmggaW4gSGVhZGVy
cyAqLywKIAkJCQkwRjJCNjZBRDE3QjZCNTQ1MDBBN0FFM0YgLyogR0NJbmNvbWluZ1JlZkNvdW50
ZWRJbmxpbmVzLmggaW4gSGVhZGVycyAqLywKIAkJCQkwRjJCNjZBRTE3QjZCNTQ1MDBBN0FFM0Yg
LyogR0NJbmNvbWluZ1JlZkNvdW50ZWRTZXQuaCBpbiBIZWFkZXJzICovLApAQCAtNzM3Nyw2ICs3
Mzg0LDcgQEAKIAkJCQkyQTg4MDY3ODE5MTA3RDU1MDBDQjBCQkIgLyogREZHRnVuY3Rpb25XaGl0
ZWxpc3QuY3BwIGluIFNvdXJjZXMgKi8sCiAJCQkJMEYyREQ4MTMxQUIzRDhCRTAwQkJCOEU4IC8q
IERGR0FyZ3VtZW50c1V0aWxpdGllcy5jcHAgaW4gU291cmNlcyAqLywKIAkJCQlBN0Q4OUNGMzE3
QTBCOENDMDA3NzNBRDggLyogREZHQmxvY2tJbnNlcnRpb25TZXQuY3BwIGluIFNvdXJjZXMgKi8s
CisJCQkJRTM1NUYzNTIxQjdEQzg1MzAwQzUwREM1IC8qIE1vZHVsZUxvYWRlck9iamVjdC5jcHAg
aW4gU291cmNlcyAqLywKIAkJCQk4NkVDOURDNDEzMjhERjgyMDAyQjJBRDcgLyogREZHQnl0ZUNv
ZGVQYXJzZXIuY3BwIGluIFNvdXJjZXMgKi8sCiAJCQkJMEZEODJFMjExNDE3MkNFMzAwMTc5Qzk0
IC8qIERGR0NhcGFiaWxpdGllcy5jcHAgaW4gU291cmNlcyAqLywKIAkJCQkwRjJCOUNFNjE5RDBC
QTdEMDBCMUQxQjUgLyogREZHT2JqZWN0QWxsb2NhdGlvblNpbmtpbmdQaGFzZS5jcHAgaW4gU291
cmNlcyAqLywKQEAgLTc2NjgsNyArNzY3Niw2IEBACiAJCQkJMEYyQjY2RUQxN0I2QjVBQjAwQTdB
RTNGIC8qIEpTRGF0YVZpZXdQcm90b3R5cGUuY3BwIGluIFNvdXJjZXMgKi8sCiAJCQkJMEYyRDRE
RTgxOTgzMkRBQzAwN0Q0QjE5IC8qIFRvVGhpc1N0YXR1cy5jcHAgaW4gU291cmNlcyAqLywKIAkJ
CQlGRTM4NEVFNTFBRERCN0FEMDA1NURFMkMgLyogSlNEb2xsYXJWTS5jcHAgaW4gU291cmNlcyAq
LywKLQkJCQlFM0MwOUY1NTFCNzk2OTJBMDBFRTM2QTIgLyogTW9kdWxlUmVjb3JkLmNwcCBpbiBT
b3VyY2VzICovLAogCQkJCTk3ODgwMTQwMTQ3MUFEOTIwMDQxQjAxNiAvKiBKU0RhdGVNYXRoLmNw
cCBpbiBTb3VyY2VzICovLAogCQkJCTBGRTA1MDE3MUFBOTA5MTEwMEQzM0IzMyAvKiBEaXJlY3RB
cmd1bWVudHMuY3BwIGluIFNvdXJjZXMgKi8sCiAJCQkJMTQwNTY2RDYxMDdFQzI3MTAwNURCQzhE
IC8qIEpTRnVuY3Rpb24uY3BwIGluIFNvdXJjZXMgKi8sCkBAIC03OTEyLDYgKzc5MTksNyBAQAog
CQkJCTBGRjQyNzMyMTU4RUJENTgwMDRDQjlGRiAvKiBVRGlzODZEaXNhc3NlbWJsZXIuY3BwIGlu
IFNvdXJjZXMgKi8sCiAJCQkJQTc2RjI3OTQxNUYxM0M5NjAwNTE3RDY3IC8qIFVubGlua2VkQ29k
ZUJsb2NrLmNwcCBpbiBTb3VyY2VzICovLAogCQkJCUI1OUY4OTM5MTg5MUYyOUYwMEQ1Q0NEQyAv
KiBVbmxpbmtlZEluc3RydWN0aW9uU3RyZWFtLmNwcCBpbiBTb3VyY2VzICovLAorCQkJCUUzOURB
NEE2MUI3RThCN0MwMDg0RjMzQSAvKiBKU01vZHVsZVJlY29yZC5jcHAgaW4gU291cmNlcyAqLywK
IAkJCQkwRjc1NzZEMjE4RTFGRUU5MDAyRUY0Q0QgLyogQWNjZXNzb3JDYWxsSklUU3R1YlJvdXRp
bmUuY3BwIGluIFNvdXJjZXMgKi8sCiAJCQkJMEYyNEU1NTgxN0Y3NEVEQjAwQUJCMjE3IC8qIFZh
bHVlUmVjb3ZlcnkuY3BwIGluIFNvdXJjZXMgKi8sCiAJCQkJRTE4RTNBNTkwREY5Mjc4QzAwRDkw
QjM0IC8qIFZNLmNwcCBpbiBTb3VyY2VzICovLApkaWZmIC0tZ2l0IGEvU291cmNlL0phdmFTY3Jp
cHRDb3JlL2J1aWx0aW5zL0J1aWx0aW5OYW1lcy5oIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL2J1
aWx0aW5zL0J1aWx0aW5OYW1lcy5oCmluZGV4IGNlMDQ0NDc5ZjczMDJmMTliMWQ4MTE2OGY5OWVj
NDgzNWI0MDIyMGEuLjdlNTQzNDJlNzUyZjlmMmQ0ZTgzNWVkMDM0ZjQ2MDljZjM2NWQzOWYgMTAw
NjQ0Ci0tLSBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9idWlsdGlucy9CdWlsdGluTmFtZXMuaAor
KysgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvYnVpbHRpbnMvQnVpbHRpbk5hbWVzLmgKQEAgLTY3
LDggKzY3LDggQEAgY2xhc3MgQnVpbHRpbk5hbWVzIHsKICAgICBib29sIGlzUHJpdmF0ZU5hbWUo
U3ltYm9sSW1wbCYgdWlkKSBjb25zdDsKICAgICBib29sIGlzUHJpdmF0ZU5hbWUoVW5pcXVlZFN0
cmluZ0ltcGwmIHVpZCkgY29uc3Q7CiAgICAgYm9vbCBpc1ByaXZhdGVOYW1lKGNvbnN0IElkZW50
aWZpZXImKSBjb25zdDsKLSAgICBjb25zdCBJZGVudGlmaWVyKiBnZXRQcml2YXRlTmFtZShjb25z
dCBJZGVudGlmaWVyJikgY29uc3Q7Ci0gICAgY29uc3QgSWRlbnRpZmllciYgZ2V0UHVibGljTmFt
ZShjb25zdCBJZGVudGlmaWVyJikgY29uc3Q7CisgICAgY29uc3QgSWRlbnRpZmllciogbG9va1Vw
UHJpdmF0ZU5hbWUoY29uc3QgSWRlbnRpZmllciYpIGNvbnN0OworICAgIGNvbnN0IElkZW50aWZp
ZXImIGxvb2tVcFB1YmxpY05hbWUoY29uc3QgSWRlbnRpZmllciYpIGNvbnN0OwogICAgIAogICAg
IEpTQ19GT1JFQUNIX0JVSUxUSU5fRlVOQ1RJT05fTkFNRShERUNMQVJFX0JVSUxUSU5fSURFTlRJ
RklFUl9BQ0NFU1NPUikKICAgICBKU0NfQ09NTU9OX1BSSVZBVEVfSURFTlRJRklFUlNfRUFDSF9Q
Uk9QRVJUWV9OQU1FKERFQ0xBUkVfQlVJTFRJTl9JREVOVElGSUVSX0FDQ0VTU09SKQpAQCAtMTEw
LDcgKzExMCw3IEBAIGlubGluZSBib29sIEJ1aWx0aW5OYW1lczo6aXNQcml2YXRlTmFtZShjb25z
dCBJZGVudGlmaWVyJiBpZGVudCkgY29uc3QKICAgICByZXR1cm4gaXNQcml2YXRlTmFtZSgqaWRl
bnQuaW1wbCgpKTsKIH0KIAotaW5saW5lIGNvbnN0IElkZW50aWZpZXIqIEJ1aWx0aW5OYW1lczo6
Z2V0UHJpdmF0ZU5hbWUoY29uc3QgSWRlbnRpZmllciYgaWRlbnQpIGNvbnN0CitpbmxpbmUgY29u
c3QgSWRlbnRpZmllciogQnVpbHRpbk5hbWVzOjpsb29rVXBQcml2YXRlTmFtZShjb25zdCBJZGVu
dGlmaWVyJiBpZGVudCkgY29uc3QKIHsKICAgICBhdXRvIGl0ZXIgPSBtX3B1YmxpY1RvUHJpdmF0
ZU1hcC5maW5kKGlkZW50LmltcGwoKSk7CiAgICAgaWYgKGl0ZXIgIT0gbV9wdWJsaWNUb1ByaXZh
dGVNYXAuZW5kKCkpCkBAIC0xMTgsNyArMTE4LDcgQEAgaW5saW5lIGNvbnN0IElkZW50aWZpZXIq
IEJ1aWx0aW5OYW1lczo6Z2V0UHJpdmF0ZU5hbWUoY29uc3QgSWRlbnRpZmllciYgaWRlbnQpIGMK
ICAgICByZXR1cm4gMDsKIH0KIAotaW5saW5lIGNvbnN0IElkZW50aWZpZXImIEJ1aWx0aW5OYW1l
czo6Z2V0UHVibGljTmFtZShjb25zdCBJZGVudGlmaWVyJiBpZGVudCkgY29uc3QKK2lubGluZSBj
b25zdCBJZGVudGlmaWVyJiBCdWlsdGluTmFtZXM6Omxvb2tVcFB1YmxpY05hbWUoY29uc3QgSWRl
bnRpZmllciYgaWRlbnQpIGNvbnN0CiB7CiAgICAgYXV0byBpdGVyID0gbV9wcml2YXRlVG9QdWJs
aWNNYXAuZmluZChpZGVudC5pbXBsKCkpOwogICAgIGlmIChpdGVyICE9IG1fcHJpdmF0ZVRvUHVi
bGljTWFwLmVuZCgpKQpkaWZmIC0tZ2l0IGEvU291cmNlL0phdmFTY3JpcHRDb3JlL2J1aWx0aW5z
L01vZHVsZUxvYWRlck9iamVjdC5qcyBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9idWlsdGlucy9N
b2R1bGVMb2FkZXJPYmplY3QuanMKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMC4uZTg5YjgxNmRmNzIyYmFjNjgzMjg2Mzc3
ZmI5ZGExNmY3M2E2OTA4NgotLS0gL2Rldi9udWxsCisrKyBiL1NvdXJjZS9KYXZhU2NyaXB0Q29y
ZS9idWlsdGlucy9Nb2R1bGVMb2FkZXJPYmplY3QuanMKQEAgLTAsMCArMSw0MjcgQEAKKy8qCisg
KiBDb3B5cmlnaHQgKEMpIDIwMTUgQXBwbGUgSW5jLiBBbGwgcmlnaHRzIHJlc2VydmVkLgorICoK
KyAqIFJlZGlzdHJpYnV0aW9uIGFuZCB1c2UgaW4gc291cmNlIGFuZCBiaW5hcnkgZm9ybXMsIHdp
dGggb3Igd2l0aG91dAorICogbW9kaWZpY2F0aW9uLCBhcmUgcGVybWl0dGVkIHByb3ZpZGVkIHRo
YXQgdGhlIGZvbGxvd2luZyBjb25kaXRpb25zCisgKiBhcmUgbWV0OgorICogMS4gUmVkaXN0cmli
dXRpb25zIG9mIHNvdXJjZSBjb2RlIG11c3QgcmV0YWluIHRoZSBhYm92ZSBjb3B5cmlnaHQKKyAq
ICAgIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlz
Y2xhaW1lci4KKyAqIDIuIFJlZGlzdHJpYnV0aW9ucyBpbiBiaW5hcnkgZm9ybSBtdXN0IHJlcHJv
ZHVjZSB0aGUgYWJvdmUgY29weXJpZ2h0CisgKiAgICBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25k
aXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIgaW4gdGhlCisgKiAgICBkb2N1bWVu
dGF0aW9uIGFuZC9vciBvdGhlciBtYXRlcmlhbHMgcHJvdmlkZWQgd2l0aCB0aGUgZGlzdHJpYnV0
aW9uLgorICoKKyAqIFRISVMgU09GVFdBUkUgSVMgUFJPVklERUQgQlkgQVBQTEUgSU5DLiBgYEFT
IElTJycgQU5EIEFOWQorICogRVhQUkVTUyBPUiBJTVBMSUVEIFdBUlJBTlRJRVMsIElOQ0xVRElO
RywgQlVUIE5PVCBMSU1JVEVEIFRPLCBUSEUKKyAqIElNUExJRUQgV0FSUkFOVElFUyBPRiBNRVJD
SEFOVEFCSUxJVFkgQU5EIEZJVE5FU1MgRk9SIEEgUEFSVElDVUxBUgorICogUFVSUE9TRSBBUkUg
RElTQ0xBSU1FRC4gIElOIE5PIEVWRU5UIFNIQUxMIEFQUExFIElOQy4gT1IKKyAqIENPTlRSSUJV
VE9SUyBCRSBMSUFCTEUgRk9SIEFOWSBESVJFQ1QsIElORElSRUNULCBJTkNJREVOVEFMLCBTUEVD
SUFMLAorICogRVhFTVBMQVJZLCBPUiBDT05TRVFVRU5USUFMIERBTUFHRVMgKElOQ0xVRElORywg
QlVUIE5PVCBMSU1JVEVEIFRPLAorICogUFJPQ1VSRU1FTlQgT0YgU1VCU1RJVFVURSBHT09EUyBP
UiBTRVJWSUNFUzsgTE9TUyBPRiBVU0UsIERBVEEsIE9SCisgKiBQUk9GSVRTOyBPUiBCVVNJTkVT
UyBJTlRFUlJVUFRJT04pIEhPV0VWRVIgQ0FVU0VEIEFORCBPTiBBTlkgVEhFT1JZCisgKiBPRiBM
SUFCSUxJVFksIFdIRVRIRVIgSU4gQ09OVFJBQ1QsIFNUUklDVCBMSUFCSUxJVFksIE9SIFRPUlQK
KyAqIChJTkNMVURJTkcgTkVHTElHRU5DRSBPUiBPVEhFUldJU0UpIEFSSVNJTkcgSU4gQU5ZIFdB
WSBPVVQgT0YgVEhFIFVTRQorICogT0YgVEhJUyBTT0ZUV0FSRSwgRVZFTiBJRiBBRFZJU0VEIE9G
IFRIRSBQT1NTSUJJTElUWSBPRiBTVUNIIERBTUFHRS4KKyAqLworCisvLyBodHRwczovL3doYXR3
Zy5naXRodWIuaW8vbG9hZGVyLyNsb2FkZXItb2JqZWN0CisvLyBNb2R1bGUgTG9hZGVyIGhhcyBz
ZXZlcmFsIGhvb2tzIHRoYXQgY2FuIGJlIGN1c3RvbWl6ZWQgYnkgdGhlIHBsYXRmb3JtLgorLy8g
Rm9yIGV4YW1wbGUsIHRoZSBbW0ZldGNoXV0gaG9vayBjYW4gYmUgcHJvdmlkZWQgYnkgdGhlIEph
dmFTY3JpcHRDb3JlIHNoZWxsCisvLyBhcyBmZXRjaGluZyB0aGUgcGF5bG9hZCBmcm9tIHRoZSBs
b2NhbCBmaWxlIHN5c3RlbS4KKy8vIFdlIHN1bW1hcml6ZSB0aGUgaG9va3MuCisvLworLy8gMS4g
TG9hZGVyLnJlc29sdmUuCisvLyAgICAgaHR0cHM6Ly93aGF0d2cuZ2l0aHViLmlvL2xvYWRlci8j
YnJvd3Nlci1yZXNvbHZlCisvLyAgICAgVGFrZSB0aGUgbmFtZSBhbmQgcmVzb2x2ZSBpdCB0byB0
aGUgdW5pcXVlIGlkZW50aWZpZXIgZm9yIHRoZSByZXNvdXJjZSBsb2NhdGlvbi4KKy8vICAgICBG
b3IgZXhhbXBsZSwgdGFrZSB0aGUgImpxdWVyeSIgYW5kIHJldHVybiB0aGUgVVJMIGZvciB0aGUg
cmVzb3VyY2UuCisvLworLy8gMi4gTG9hZGVyLmZldGNoCisvLyAgICAgaHR0cHM6Ly93aGF0d2cu
Z2l0aHViLmlvL2xvYWRlci8jYnJvd3Nlci1mZXRjaAorLy8gICAgIFRha2UgdGhlIGtleSBhbmQg
ZmV0Y2ggdGhlIHJlc291cmNlIGFjdHVhbGx5LgorLy8gICAgIEZvciBleGFtcGxlLCBKYXZhU2Ny
aXB0Q29yZSBzaGVsbCBjYW4gcHJvdmlkZSB0aGUgaG9vayBmZXRjaGluZyB0aGUgcmVzb3VyY2UK
Ky8vICAgICBmcm9tIHRoZSBsb2NhbCBmaWxlIHN5c3RlbS4KKy8vCisvLyAzLiBMb2FkZXIudHJh
bnNsYXRlCisvLyAgICAgaHR0cHM6Ly93aGF0d2cuZ2l0aHViLmlvL2xvYWRlci8jYnJvd3Nlci10
cmFuc2xhdGUKKy8vICAgICBUYWtlIHRoZSBrZXkgYW5kIHRoZSBmZXRjaGVkIHNvdXJjZSBjb2Rl
IGFuZCB0cmFuc2xhdGUgaXQgdG8gdGhlIEVTNiBzb3VyY2UgY29kZS4KKy8vICAgICBUeXBpY2Fs
bHkgaXQgaXMgdXNlZCBieSB0aGUgdHJhbnNwaWxlcnMuCisvLworLy8gNC4gTG9hZGVyLmluc3Rh
bnRpYXRlCisvLyAgICAgaHR0cHM6Ly93aGF0d2cuZ2l0aHViLmlvL2xvYWRlci8jYnJvd3Nlci1p
bnN0YW50aWF0ZQorLy8gICAgIFRha2UgdGhlIGtleSBhbmQgdGhlIHRyYW5zbGF0ZWQgc291cmNl
IGNvZGUsIGFuZCBpbnN0YW50aWF0ZSB0aGUgbW9kdWxlIHJlY29yZAorLy8gICAgIGJ5IHBhcnNp
bmcgdGhlIG1vZHVsZSBzb3VyY2UgY29kZS4KKy8vICAgICBJdCBoYXMgdGhlIGNoYW5jZSB0byBw
cm92aWRlIHRoZSBvcHRpb25hbCBtb2R1bGUgaW5zdGFuY2UgdGhhdCBpcyBkaWZmZXJlbnQgZnJv
bQorLy8gICAgIHRoZSBvcmRpbmFyeSBvbmUuCisKK2Z1bmN0aW9uIHNldFN0YXRlVG9NYXgoZW50
cnksIG5ld1N0YXRlKQoreworICAgIC8vIGh0dHBzOi8vd2hhdHdnLmdpdGh1Yi5pby9sb2FkZXIv
I3NldC1zdGF0ZS10by1tYXgKKworICAgICJ1c2Ugc3RyaWN0IjsKKworICAgIGlmIChlbnRyeS5z
dGF0ZSA8IG5ld1N0YXRlKQorICAgICAgICBlbnRyeS5zdGF0ZSA9IG5ld1N0YXRlOworfQorCitm
dW5jdGlvbiBuZXdSZWdpc3RyeUVudHJ5KGtleSkKK3sKKyAgICAvLyBodHRwczovL3doYXR3Zy5n
aXRodWIuaW8vbG9hZGVyLyNyZWdpc3RyeQorICAgIC8vCisgICAgLy8gRWFjaCByZWdpc3RyeSBl
bnRyeSBiZWNvbWVzIG9uZSBvZiB0aGUgNSBzdGF0ZXMuCisgICAgLy8gMS4gRmV0Y2gKKyAgICAv
LyAgICAgUmVhZHkgdG8gZmV0Y2ggKG9yIG5vdyBmZXRjaGluZykgdGhlIHJlc291cmNlIG9mIHRo
aXMgbW9kdWxlLgorICAgIC8vICAgICBUeXBpY2FsbHksIHdlIGZldGNoIHRoZSBzb3VyY2UgY29k
ZSBvdmVyIHRoZSBuZXR3b3JrIG9yIGZyb20gdGhlIGZpbGUgc3lzdGVtLgorICAgIC8vICAgICBh
LiBJZiB0aGUgc3RhdHVzIGlzIEZldGNoIGFuZCB0aGVyZSBpcyBubyBlbnRyeS5mZXRjaCBwcm9t
aXNlLCB0aGUgZW50cnkgaXMgcmVhZHkgdG8gZmV0Y2guCisgICAgLy8gICAgIGIuIElmIHRoZSBz
dGF0dXMgaXMgRmV0Y2ggYW5kIHRoZXJlIGlzIHRoZSBlbnRyeS5mZXRjaCBwcm9taXNlLCB0aGUg
ZW50cnkgaXMganVzdCBmZXRjaGluZyB0aGUgcmVzb3VyY2UuCisgICAgLy8KKyAgICAvLyAyLiBU
cmFuc2xhdGUKKyAgICAvLyAgICAgUmVhZHkgdG8gdHJhbnNsYXRlIChvciBub3cgdHJhbnNsYXRp
bmcpIHRoZSByYXcgZmV0Y2hlZCByZXNvdXJjZSB0byB0aGUgRUNNQVNjcmlwdCBzb3VyY2UgY29k
ZS4KKyAgICAvLyAgICAgV2UgY2FuIGluc2VydCB0aGUgaG9vayB0aGF0IHRyYW5zbGF0ZXMgdGhl
IHJlc291cmNlcyBlLmcuIHRyYW5zcGlsZXJzLgorICAgIC8vICAgICBhLiBJZiB0aGUgc3RhdHVz
IGlzIFRyYW5zbGF0ZSBhbmQgdGhlcmUgaXMgbm8gZW50cnkudHJhbnNsYXRlIHByb21pc2UsIHRo
ZSBlbnRyeSBpcyByZWFkeSB0byB0cmFuc2xhdGUuCisgICAgLy8gICAgIGIuIElmIHRoZSBzdGF0
dXMgaXMgVHJhbnNsYXRlIGFuZCB0aGVyZSBpcyB0aGUgZW50cnkudHJhbnNsYXRlIHByb21pc2Us
IHRoZSBlbnRyeSBpcyBqdXN0IHRyYW5zbGF0aW5nCisgICAgLy8gICAgICAgIHRoZSBwYXlsb2Fk
IHRvIHRoZSBzb3VyY2UgY29kZS4KKyAgICAvLworICAgIC8vIDMuIEluc3RhbnRpYXRlIChBbmFs
eXplTW9kdWxlKQorICAgIC8vICAgICBSZWFkeSB0byBpbnN0YW50aWF0ZSAob3Igbm93IGluc3Rh
bnRpYXRpbmcpIHRoZSBtb2R1bGUgcmVjb3JkIGZyb20gdGhlIGZldGNoZWQgKGFuZCB0cmFuc2xh
dGVkKQorICAgIC8vICAgICBzb3VyY2UgY29kZS4KKyAgICAvLyAgICAgVHlwaWNhbGx5LCB3ZSBw
YXJzZSB0aGUgbW9kdWxlIGNvZGUsIGV4dHJhY3QgdGhlIGRlcGVuZGVuY2llcyBhbmQgYmluZGlu
ZyBpbmZvcm1hdGlvbi4KKyAgICAvLyAgICAgYS4gSWYgdGhlIHN0YXR1cyBpcyBJbnN0YW50aWF0
ZSBhbmQgdGhlcmUgaXMgbm8gZW50cnkuaW5zdGFudGlhdGUgcHJvbWlzZSwgdGhlIGVudHJ5IGlz
IHJlYWR5IHRvIGluc3RhbnRpYXRlLgorICAgIC8vICAgICBiLiBJZiB0aGUgc3RhdHVzIGlzIElu
c3RhbnRpYXRlIGFuZCB0aGVyZSBpcyB0aGUgZW50cnkudHJhbnNsYXRlIHByb21pc2UsIHRoZSBl
bnRyeSBpcyBqdXN0IGluc3RhbnRpYXRpbmcKKyAgICAvLyAgICAgICAgdGhlIG1vZHVsZSByZWNv
cmQuCisgICAgLy8KKyAgICAvLyA0LiBSZXNvbHZlRGVwZW5kZW5jaWVzIChub3QgaW4gdGhlIGRy
YWZ0KSBodHRwczovL2dpdGh1Yi5jb20vd2hhdHdnL2xvYWRlci9pc3N1ZXMvNjgKKyAgICAvLyAg
ICAgUmVhZHkgdG8gcmVxdWVzdCB0aGUgZGVwZW5kZW50IG1vZHVsZXMgKG9yIG5vdyByZXF1ZXN0
aW5nICYgcmVzb2x2aW5nKS4KKyAgICAvLyAgICAgV2l0aG91dCB0aGlzIHN0YXRlLCB0aGUgY3Vy
cmVudCBkcmFmdCBjYXVzZXMgaW5maW5pdGUgcmVjdXJzaW9uIHdoZW4gdGhlcmUgaXMgY2lyY3Vs
YXIgZGVwZW5kZW5jeS4KKyAgICAvLyAgICAgYS4gSWYgdGhlIHN0YXR1cyBpcyBSZXNvbHZlRGVw
ZW5kZW5jaWVzIGFuZCB0aGVyZSBpcyBubyBlbnRyeS5yZXNvbHZlRGVwZW5kZW5jaWVzIHByb21p
c2UsIHRoZSBlbnRyeSBpcyByZWFkeSB0byByZXNvbHZlIHRoZSBkZXBlbmRlbmNpZXMuCisgICAg
Ly8gICAgIGIuIElmIHRoZSBzdGF0dXMgaXMgUmVzb2x2ZURlcGVuZGVuY2llcyBhbmQgdGhlcmUg
aXMgdGhlIGVudHJ5LnJlc29sdmVEZXBlbmRlbmNpZXMgcHJvbWlzZSwgdGhlIGVudHJ5IGlzIGp1
c3QgcmVzb2x2aW5nCisgICAgLy8gICAgICAgIHRoZSBkZXBlbmRlbmNpZXMuCisgICAgLy8KKyAg
ICAvLyA1LiBMaW5rCisgICAgLy8gICAgIFJlYWR5IHRvIGxpbmsgdGhlIG1vZHVsZSB3aXRoIHRo
ZSBvdGhlciBtb2R1bGVzLgorICAgIC8vICAgICBMaW5raW5nIG1lYW5zIHRoYXQgdGhlIG1vZHVs
ZSBpbXBvcnRzIGFuZCBleHBvcnRzIHRoZSBiaW5kaW5ncyBmcm9tL3RvIHRoZSBvdGhlciBtb2R1
bGVzLgorICAgIC8vCisgICAgLy8gNi4gUmVhZHkKKyAgICAvLyAgICAgVGhlIG1vZHVsZSBpcyBs
aW5rZWQsIHNvIHRoZSBtb2R1bGUgaXMgcmVhZHkgdG8gYmUgZXhlY3V0ZWQuCisgICAgLy8KKyAg
ICAvLyBFYWNoIHJlZ2lzdHJ5IGVudHJ5IGhhcyB0aGUgNCBwcm9taXNlczsgImZldGNoIiwgInRy
YW5zbGF0ZSIsICJpbnN0YW50aWF0ZSIgYW5kICJyZXNvbHZlRGVwZW5kZW5jaWVzIi4KKyAgICAv
LyBUaGV5IGFyZSBhc3NpZ25lZCB3aGVuIHN0YXJ0aW5nIHRoZSBlYWNoIHBoYXNlLiBBbmQgdGhl
eSBhcmUgZnVsZmlsbGVkIHdoZW4gdGhlIGVhY2ggcGhhc2UgaXMgY29tcGxldGVkLgorICAgIC8v
CisgICAgLy8gSW4gdGhlIGN1cnJlbnQgbW9kdWxlIGRyYWZ0LCBsaW5raW5nIHdpbGwgYmUgcGVy
Zm9ybWVkIGFmdGVyIHRoZSB3aG9sZSBtb2R1bGVzIGFyZSBpbnN0YW50aWF0ZWQgYW5kIHRoZSBk
ZXBlbmRlbmNpZXMgYXJlIHJlc29sdmVkLgorICAgIC8vIEFuZCBleGVjdXRpb24gaXMgYWxzbyBk
b25lIGFmdGVyIHRoZSBhbGwgbW9kdWxlcyBhcmUgbGlua2VkLgorICAgIC8vCisgICAgLy8gVE9E
TzogV2UgbmVlZCB0byBleHBsb2l0IHRoZSB3YXkgdG8gZXhlY3V0ZSB0aGUgbW9kdWxlIHdoaWxl
IGZldGNoaW5nIG5vbi1yZWxhdGVkIG1vZHVsZXMuCisgICAgLy8gT25lIHNvbHV0aW9uOyBpbnRy
b2R1Y2luZyB0aGUgcmVhZHkgcHJvbWlzZSBjaGFpbiB0byBleGVjdXRlIHRoZSBtb2R1bGVzIGNv
bmN1cnJlbnRseSB3aGlsZSBrZWVwaW5nCisgICAgLy8gdGhlIGV4ZWN1dGlvbiBvcmRlci4KKwor
ICAgICJ1c2Ugc3RyaWN0IjsKKworICAgIHJldHVybiB7CisgICAgICAgIGtleToga2V5LAorICAg
ICAgICBzdGF0ZTogdGhpcy5GZXRjaCwKKyAgICAgICAgbWV0YWRhdGE6IHVuZGVmaW5lZCwKKyAg
ICAgICAgZmV0Y2g6IHVuZGVmaW5lZCwKKyAgICAgICAgdHJhbnNsYXRlOiB1bmRlZmluZWQsCisg
ICAgICAgIGluc3RhbnRpYXRlOiB1bmRlZmluZWQsCisgICAgICAgIHJlc29sdmVEZXBlbmRlbmNp
ZXM6IHVuZGVmaW5lZCwKKyAgICAgICAgZGVwZW5kZW5jaWVzOiBbXSwgLy8gVG8ga2VlcCB0aGUg
bW9kdWxlIG9yZGVyLCB3ZSBzdG9yZSB0aGUgbW9kdWxlIGtleXMgaW4gdGhlIGFycmF5LgorICAg
ICAgICBkZXBlbmRlbmNpZXNNYXA6IHVuZGVmaW5lZCwKKyAgICAgICAgbW9kdWxlOiB1bmRlZmlu
ZWQsIC8vIEpTTW9kdWxlUmVjb3JkCisgICAgICAgIGVycm9yOiB1bmRlZmluZWQsCisgICAgfTsK
K30KKworZnVuY3Rpb24gZW5zdXJlUmVnaXN0ZXJlZChrZXkpCit7CisgICAgLy8gaHR0cHM6Ly93
aGF0d2cuZ2l0aHViLmlvL2xvYWRlci8jZW5zdXJlLXJlZ2lzdGVyZWQKKworICAgICJ1c2Ugc3Ry
aWN0IjsKKworICAgIHZhciBlbnRyeSA9IHRoaXMucmVnaXN0cnkuQGdldChrZXkpOworICAgIGlm
IChlbnRyeSkKKyAgICAgICAgcmV0dXJuIGVudHJ5OworCisgICAgZW50cnkgPSB0aGlzLm5ld1Jl
Z2lzdHJ5RW50cnkoa2V5KTsKKyAgICB0aGlzLnJlZ2lzdHJ5LkBzZXQoa2V5LCBlbnRyeSk7CisK
KyAgICByZXR1cm4gZW50cnk7Cit9CisKK2Z1bmN0aW9uIGZvcmNlRnVsZmlsbFByb21pc2UocHJv
bWlzZSwgdmFsdWUpCit7CisgICAgInVzZSBzdHJpY3QiOworCisgICAgaWYgKHByb21pc2UuQHBy
b21pc2VTdGF0ZSA9PT0gQHByb21pc2VQZW5kaW5nKQorICAgICAgICBAZnVsZmlsbFByb21pc2Uo
cHJvbWlzZSwgdmFsdWUpOworfQorCitmdW5jdGlvbiBmdWxmaWxsRmV0Y2goZW50cnksIHBheWxv
YWQpCit7CisgICAgLy8gaHR0cHM6Ly93aGF0d2cuZ2l0aHViLmlvL2xvYWRlci8jZnVsZmlsbC1m
ZXRjaAorCisgICAgInVzZSBzdHJpY3QiOworCisgICAgaWYgKCFlbnRyeS5mZXRjaCkKKyAgICAg
ICAgZW50cnkuZmV0Y2ggPSBAbmV3UHJvbWlzZUNhcGFiaWxpdHkoQEludGVybmFsUHJvbWlzZSku
QHByb21pc2U7CisgICAgdGhpcy5mb3JjZUZ1bGZpbGxQcm9taXNlKGVudHJ5LmZldGNoLCBwYXls
b2FkKTsKKyAgICB0aGlzLnNldFN0YXRlVG9NYXgoZW50cnksIHRoaXMuVHJhbnNsYXRlKTsKK30K
KworZnVuY3Rpb24gZnVsZmlsbFRyYW5zbGF0ZShlbnRyeSwgc291cmNlKQoreworICAgIC8vIGh0
dHBzOi8vd2hhdHdnLmdpdGh1Yi5pby9sb2FkZXIvI2Z1bGZpbGwtdHJhbnNsYXRlCisKKyAgICAi
dXNlIHN0cmljdCI7CisKKyAgICBpZiAoIWVudHJ5LnRyYW5zbGF0ZSkKKyAgICAgICAgZW50cnku
dHJhbnNsYXRlID0gQG5ld1Byb21pc2VDYXBhYmlsaXR5KEBJbnRlcm5hbFByb21pc2UpLkBwcm9t
aXNlOworICAgIHRoaXMuZm9yY2VGdWxmaWxsUHJvbWlzZShlbnRyeS50cmFuc2xhdGUsIHNvdXJj
ZSk7CisgICAgdGhpcy5zZXRTdGF0ZVRvTWF4KGVudHJ5LCB0aGlzLkluc3RhbnRpYXRlKTsKK30K
KworZnVuY3Rpb24gZnVsZmlsbEluc3RhbnRpYXRlKGVudHJ5LCBvcHRpb25hbEluc3RhbmNlLCBz
b3VyY2UpCit7CisgICAgLy8gaHR0cHM6Ly93aGF0d2cuZ2l0aHViLmlvL2xvYWRlci8jZnVsZmls
bC1pbnN0YW50aWF0ZQorCisgICAgInVzZSBzdHJpY3QiOworCisgICAgaWYgKCFlbnRyeS5pbnN0
YW50aWF0ZSkKKyAgICAgICAgZW50cnkuaW5zdGFudGlhdGUgPSBAbmV3UHJvbWlzZUNhcGFiaWxp
dHkoQEludGVybmFsUHJvbWlzZSkuQHByb21pc2U7CisgICAgdGhpcy5jb21taXRJbnN0YW50aWF0
ZWQoZW50cnksIG9wdGlvbmFsSW5zdGFuY2UsIHNvdXJjZSk7CisKKyAgICAvLyBGSVhNRTogVGhl
IGRyYWZ0IGZ1bGZpbGxzIHRoZSBwcm9taXNlIGluIHRoZSBDb21taXRJbnN0YW50aWF0ZWQgb3Bl
cmF0aW9uLgorICAgIC8vIEJ1dCBpdCBDb21taXRJbnN0YW50aWF0ZWQgaXMgYWxzbyB1c2VkIGlu
IHRoZSByZXF1ZXN0SW5zdGFudGlhdGUgYW5kCisgICAgLy8gd2Ugc2hvdWxkIG5vdCAiZm9yY2Ug
ZnVsZmlsbCIgdGhlcmUuCisgICAgLy8gU28gd2Ugc2VwYXJhdGUgImZvcmNlIGZ1bGZpbGwiIG9w
ZXJhdGlvbiBmcm9tIHRoZSBDb21taXRJbnN0YW50aWF0ZWQgb3BlcmF0aW9uLgorICAgIC8vIGh0
dHBzOi8vZ2l0aHViLmNvbS93aGF0d2cvbG9hZGVyL3B1bGwvNjcKKyAgICB0aGlzLmZvcmNlRnVs
ZmlsbFByb21pc2UoZW50cnkuaW5zdGFudGlhdGUsIGVudHJ5KTsKK30KKworZnVuY3Rpb24gY29t
bWl0SW5zdGFudGlhdGVkKGVudHJ5LCBvcHRpb25hbEluc3RhbmNlLCBzb3VyY2UpCit7CisgICAg
Ly8gaHR0cHM6Ly93aGF0d2cuZ2l0aHViLmlvL2xvYWRlci8jY29tbWl0LWluc3RhbnRpYXRlZAor
CisgICAgInVzZSBzdHJpY3QiOworCisgICAgdmFyIG1vZHVsZVJlY29yZCA9IHRoaXMuaW5zdGFu
dGlhdGlvbihvcHRpb25hbEluc3RhbmNlLCBzb3VyY2UsIGVudHJ5KTsKKworICAgIC8vIEZJWE1F
OiBEZXNjcmliZWQgaW4gdGhlIGRyYWZ0LAorICAgIC8vICAgNC4gRnVsZmlsbCBlbnRyeS5bW0lu
c3RhbnRpYXRlXV0gd2l0aCBpbnN0YW5jZS4KKyAgICAvLyBCdXQsIGluc3RhbnRpYXRlIHByb21p
c2Ugc2hvdWxkIGJlIGZ1bGZpbGxlZCB3aXRoIHRoZSBlbnRyeS4KKyAgICAvLyBXZSByZW1vdmUg
dGhpcyBzdGF0ZW1lbnQgYmVjYXVzZSBpbnN0YW50aWF0ZSBwcm9taXNlIHdpbGwgYmUKKyAgICAv
LyBmdWxmaWxsZWQgd2l0aG91dCB0aGlzICJmb3JjZSBmdWxmaWxsIiBvcGVyYXRpb24uCisgICAg
Ly8gaHR0cHM6Ly9naXRodWIuY29tL3doYXR3Zy9sb2FkZXIvcHVsbC82NworCisgICAgdmFyIGRl
cGVuZGVuY2llcyA9IFtdOworICAgIHZhciBkZXBlbmRlbmNpZXNNYXAgPSBuZXcgQE1hcCgpOwor
ICAgIG1vZHVsZVJlY29yZC5yZWdpc3RyeUVudHJ5ID0gZW50cnk7CisgICAgdmFyIHJlcXVlc3Rl
ZE1vZHVsZXMgPSB0aGlzLnJlcXVlc3RlZE1vZHVsZXMobW9kdWxlUmVjb3JkKTsKKyAgICBmb3Ig
KHZhciBpID0gMCwgbGVuZ3RoID0gcmVxdWVzdGVkTW9kdWxlcy5sZW5ndGg7IGkgPCBsZW5ndGg7
ICsraSkgeworICAgICAgICB2YXIgZGVwS2V5ID0gcmVxdWVzdGVkTW9kdWxlc1tpXTsKKyAgICAg
ICAgdmFyIHBhaXIgPSB7CisgICAgICAgICAgICBrZXk6IGRlcEtleSwKKyAgICAgICAgICAgIHZh
bHVlOiB1bmRlZmluZWQKKyAgICAgICAgfTsKKyAgICAgICAgQHB1dEJ5VmFsRGlyZWN0KGRlcGVu
ZGVuY2llcywgaSwgcGFpcik7CisgICAgICAgIGRlcGVuZGVuY2llc01hcC5Ac2V0KGRlcEtleSwg
cGFpcik7CisgICAgfQorICAgIGVudHJ5LmRlcGVuZGVuY2llcyA9IGRlcGVuZGVuY2llczsKKyAg
ICBlbnRyeS5kZXBlbmRlbmNpZXNNYXAgPSBkZXBlbmRlbmNpZXNNYXA7CisgICAgZW50cnkubW9k
dWxlID0gbW9kdWxlUmVjb3JkOworICAgIHRoaXMuc2V0U3RhdGVUb01heChlbnRyeSwgdGhpcy5S
ZXNvbHZlRGVwZW5kZW5jaWVzKTsKK30KKworZnVuY3Rpb24gaW5zdGFudGlhdGlvbihyZXN1bHQs
IHNvdXJjZSwgZW50cnkpCit7CisgICAgLy8gaHR0cHM6Ly93aGF0d2cuZ2l0aHViLmlvL2xvYWRl
ci8jaW5zdGFudGlhdGlvbgorICAgIC8vIEZJWE1FOiBDdXJyZW50IGltcGxlbWVudGF0aW9uIGRv
ZXMgbm90IHN1cHBvcnQgb3B0aW9uYWxJbnN0YW5jZS4KKyAgICAvLyBodHRwczovL2J1Z3Mud2Vi
a2l0Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9MTQ4MTcxCisKKyAgICAidXNlIHN0cmljdCI7CisKKyAg
ICByZXR1cm4gdGhpcy5wYXJzZU1vZHVsZShlbnRyeS5rZXksIHNvdXJjZSk7Cit9CisKKy8vIExv
YWRlci4KKworZnVuY3Rpb24gcmVxdWVzdEZldGNoKGtleSkKK3sKKyAgICAvLyBodHRwczovL3do
YXR3Zy5naXRodWIuaW8vbG9hZGVyLyNyZXF1ZXN0LWZldGNoCisKKyAgICAidXNlIHN0cmljdCI7
CisKKyAgICB2YXIgZW50cnkgPSB0aGlzLmVuc3VyZVJlZ2lzdGVyZWQoa2V5KTsKKyAgICBpZiAo
ZW50cnkuc3RhdGUgPiB0aGlzLkxpbmspIHsKKyAgICAgICAgdmFyIGRlZmVycmVkID0gQG5ld1By
b21pc2VDYXBhYmlsaXR5KEBJbnRlcm5hbFByb21pc2UpOworICAgICAgICBkZWZlcnJlZC5AcmVq
ZWN0LkBjYWxsKHVuZGVmaW5lZCwgbmV3IEBUeXBlRXJyb3IoIlJlcXVlc3RlZCBtb2R1bGUgaXMg
YWxyZWFkeSByZWFkeSB0byBiZSBleGVjdXRlZC4iKSk7CisgICAgICAgIHJldHVybiBkZWZlcnJl
ZC5AcHJvbWlzZTsKKyAgICB9CisKKyAgICBpZiAoZW50cnkuZmV0Y2gpCisgICAgICAgIHJldHVy
biBlbnRyeS5mZXRjaDsKKworICAgIHZhciBsb2FkZXIgPSB0aGlzOworICAgIHZhciBmZXRjaFBy
b21pc2UgPSB0aGlzLmZldGNoKGtleSkudGhlbihmdW5jdGlvbiAocGF5bG9hZCkgeworICAgICAg
ICBsb2FkZXIuc2V0U3RhdGVUb01heChlbnRyeSwgbG9hZGVyLlRyYW5zbGF0ZSk7CisgICAgICAg
IHJldHVybiBwYXlsb2FkOworICAgIH0pOworICAgIGVudHJ5LmZldGNoID0gZmV0Y2hQcm9taXNl
OworICAgIHJldHVybiBmZXRjaFByb21pc2U7Cit9CisKK2Z1bmN0aW9uIHJlcXVlc3RUcmFuc2xh
dGUoa2V5KQoreworICAgIC8vIGh0dHBzOi8vd2hhdHdnLmdpdGh1Yi5pby9sb2FkZXIvI3JlcXVl
c3QtdHJhbnNsYXRlCisKKyAgICAidXNlIHN0cmljdCI7CisKKyAgICB2YXIgZW50cnkgPSB0aGlz
LmVuc3VyZVJlZ2lzdGVyZWQoa2V5KTsKKyAgICBpZiAoZW50cnkuc3RhdGUgPiB0aGlzLkxpbmsp
IHsKKyAgICAgICAgdmFyIGRlZmVycmVkID0gQG5ld1Byb21pc2VDYXBhYmlsaXR5KEBJbnRlcm5h
bFByb21pc2UpOworICAgICAgICBkZWZlcnJlZC5AcmVqZWN0LkBjYWxsKHVuZGVmaW5lZCwgbmV3
IEBUeXBlRXJyb3IoIlJlcXVlc3RlZCBtb2R1bGUgaXMgYWxyZWFkeSByZWFkeSB0byBiZSBleGVj
dXRlZC4iKSk7CisgICAgICAgIHJldHVybiBkZWZlcnJlZC5AcHJvbWlzZTsKKyAgICB9CisKKyAg
ICBpZiAoZW50cnkudHJhbnNsYXRlKQorICAgICAgICByZXR1cm4gZW50cnkudHJhbnNsYXRlOwor
CisgICAgdmFyIGxvYWRlciA9IHRoaXM7CisgICAgdmFyIHRyYW5zbGF0ZVByb21pc2UgPSB0aGlz
LnJlcXVlc3RGZXRjaChrZXkpLnRoZW4oZnVuY3Rpb24gKHBheWxvYWQpIHsKKyAgICAgICAgcmV0
dXJuIGxvYWRlci50cmFuc2xhdGUoa2V5LCBwYXlsb2FkKS50aGVuKGZ1bmN0aW9uIChzb3VyY2Up
IHsKKyAgICAgICAgICAgIGxvYWRlci5zZXRTdGF0ZVRvTWF4KGVudHJ5LCBsb2FkZXIuSW5zdGFu
dGlhdGUpOworICAgICAgICAgICAgcmV0dXJuIHNvdXJjZTsKKyAgICAgICAgfSk7CisgICAgfSk7
CisgICAgZW50cnkudHJhbnNsYXRlID0gdHJhbnNsYXRlUHJvbWlzZTsKKyAgICByZXR1cm4gdHJh
bnNsYXRlUHJvbWlzZTsKK30KKworZnVuY3Rpb24gcmVxdWVzdEluc3RhbnRpYXRlKGtleSkKK3sK
KyAgICAvLyBodHRwczovL3doYXR3Zy5naXRodWIuaW8vbG9hZGVyLyNyZXF1ZXN0LWluc3RhbnRp
YXRlCisKKyAgICAidXNlIHN0cmljdCI7CisKKyAgICB2YXIgZW50cnkgPSB0aGlzLmVuc3VyZVJl
Z2lzdGVyZWQoa2V5KTsKKyAgICBpZiAoZW50cnkuc3RhdGUgPiB0aGlzLkxpbmspIHsKKyAgICAg
ICAgdmFyIGRlZmVycmVkID0gQG5ld1Byb21pc2VDYXBhYmlsaXR5KEBJbnRlcm5hbFByb21pc2Up
OworICAgICAgICBkZWZlcnJlZC5AcmVqZWN0LkBjYWxsKHVuZGVmaW5lZCwgbmV3IEBUeXBlRXJy
b3IoIlJlcXVlc3RlZCBtb2R1bGUgaXMgYWxyZWFkeSByZWFkeSB0byBiZSBleGVjdXRlZC4iKSk7
CisgICAgICAgIHJldHVybiBkZWZlcnJlZC5AcHJvbWlzZTsKKyAgICB9CisKKyAgICBpZiAoZW50
cnkuaW5zdGFudGlhdGUpCisgICAgICAgIHJldHVybiBlbnRyeS5pbnN0YW50aWF0ZTsKKworICAg
IHZhciBsb2FkZXIgPSB0aGlzOworICAgIHZhciBpbnN0YW50aWF0ZVByb21pc2UgPSB0aGlzLnJl
cXVlc3RUcmFuc2xhdGUoa2V5KS50aGVuKGZ1bmN0aW9uIChzb3VyY2UpIHsKKyAgICAgICAgcmV0
dXJuIGxvYWRlci5pbnN0YW50aWF0ZShrZXksIHNvdXJjZSkudGhlbihmdW5jdGlvbiAob3B0aW9u
YWxJbnN0YW5jZSkgeworICAgICAgICAgICAgbG9hZGVyLmNvbW1pdEluc3RhbnRpYXRlZChlbnRy
eSwgb3B0aW9uYWxJbnN0YW5jZSwgc291cmNlKTsKKyAgICAgICAgICAgIHJldHVybiBlbnRyeTsK
KyAgICAgICAgfSk7CisgICAgfSk7CisgICAgZW50cnkuaW5zdGFudGlhdGUgPSBpbnN0YW50aWF0
ZVByb21pc2U7CisgICAgcmV0dXJuIGluc3RhbnRpYXRlUHJvbWlzZTsKK30KKworZnVuY3Rpb24g
cmVxdWVzdFJlc29sdmVEZXBlbmRlbmNpZXMoa2V5KQoreworICAgIC8vIEZJWE1FOiBJbiB0aGUg
c3BlYywgYWZ0ZXIgcmVxdWVzdGluZyBpbnN0YW50aWF0aW9uLCB3ZSB3aWxsIHJlc29sdmUKKyAg
ICAvLyB0aGUgZGVwZW5kZW5jaWVzIHdpdGhvdXQgYW55IHN0YXR1cyBjaGFuZ2UuIEFzIGEgcmVz
dWx0LCB3aGVuIHRoZXJlCisgICAgLy8gaXMgY2lyY3VsYXIgZGVwZW5kZW5jaWVzLCBpbnN0YW50
aWF0aW9uIGlzIGRvbmUgb25seSBvbmNlLCBidXQKKyAgICAvLyByZXBlYXRlZGx5IHJlc29sdmlu
ZyB0aGUgZGVwZW5kZW5jaWVzLiBUaGlzIG1lYW5zIHRoYXQgaW5maW5pdGUKKyAgICAvLyByZWN1
cnNpb24gb2NjdXIgd2hlbiB0aGUgZ2l2ZW4gbW9kdWxlcyBoYXZlIGNpcmN1bGFyIGRlcGVuZGVu
Y3kuIFRvCisgICAgLy8gYXZvaWQgdGhpcyBzaXR1YXRpb24sIHdlIGludHJvZHVjZSBuZXcgc3Rh
dGUsICJSZXNvbHZlRGVwZW5kZW5jaWVzIi4gVGhpcyBtZWFucworICAgIC8vICJOb3cgdGhlIG1v
ZHVsZSBpcyBpbnN0YW50aWF0ZWQsIHNvIHJlYWR5IHRvIHJlc29sdmUgdGhlIGRlcGVuZGVuY2ll
cworICAgIC8vIG9yIG5vdyByZXNvbHZpbmcgdGhlbSIuCisgICAgLy8gaHR0cHM6Ly9naXRodWIu
Y29tL3doYXR3Zy9sb2FkZXIvaXNzdWVzLzY4CisKKyAgICAidXNlIHN0cmljdCI7CisKKyAgICB2
YXIgZW50cnkgPSB0aGlzLmVuc3VyZVJlZ2lzdGVyZWQoa2V5KTsKKyAgICBpZiAoZW50cnkuc3Rh
dGUgPiB0aGlzLkxpbmspIHsKKyAgICAgICAgdmFyIGRlZmVycmVkID0gQG5ld1Byb21pc2VDYXBh
YmlsaXR5KEBJbnRlcm5hbFByb21pc2UpOworICAgICAgICBkZWZlcnJlZC5AcmVqZWN0LkBjYWxs
KHVuZGVmaW5lZCwgbmV3IEBUeXBlRXJyb3IoIlJlcXVlc3RlZCBtb2R1bGUgaXMgYWxyZWFkeSBy
ZWFkeSB0byBiZSBleGVjdXRlZC4iKSk7CisgICAgICAgIHJldHVybiBkZWZlcnJlZC5AcHJvbWlz
ZTsKKyAgICB9CisKKyAgICBpZiAoZW50cnkucmVzb2x2ZURlcGVuZGVuY2llcykKKyAgICAgICAg
cmV0dXJuIGVudHJ5LnJlc29sdmVEZXBlbmRlbmNpZXM7CisKKyAgICB2YXIgbG9hZGVyID0gdGhp
czsKKyAgICB2YXIgcmVzb2x2ZURlcGVuZGVuY2llc1Byb21pc2UgPSB0aGlzLnJlcXVlc3RJbnN0
YW50aWF0ZShrZXkpLnRoZW4oZnVuY3Rpb24gKGVudHJ5KSB7CisgICAgICAgIHZhciBkZXBMb2Fk
cyA9IFtdOworICAgICAgICBmb3IgKHZhciBpID0gMCwgbGVuZ3RoID0gZW50cnkuZGVwZW5kZW5j
aWVzLmxlbmd0aDsgaSA8IGxlbmd0aDsgKytpKSB7CisgICAgICAgICAgICB2YXIgcGFpciA9IGVu
dHJ5LmRlcGVuZGVuY2llc1tpXTsKKyAgICAgICAgICAgIHZhciBwcm9taXNlID0gbG9hZGVyLnJl
c29sdmUocGFpci5rZXksIGtleSkudGhlbihmdW5jdGlvbiAoZGVwS2V5KSB7CisgICAgICAgICAg
ICAgICAgdmFyIGRlcEVudHJ5ID0gbG9hZGVyLmVuc3VyZVJlZ2lzdGVyZWQoZGVwS2V5KTsKKwor
ICAgICAgICAgICAgICAgIC8vIFJlY3Vyc2l2ZSByZXNvbHZpbmcuIFRoZSBkZXBlbmRlbmNpZXMg
b2YgdGhpcyBlbnRyeSBpcyBiZWluZyByZXNvbHZlZCBvciBhbHJlYWR5IHJlc29sdmVkLgorICAg
ICAgICAgICAgICAgIC8vIFN0b3AgdHJhY2luZyB0aGUgY2lyY3VsYXIgZGVwZW5kZW5jaWVzLgor
ICAgICAgICAgICAgICAgIGlmIChkZXBFbnRyeS5yZXNvbHZlRGVwZW5kZW5jaWVzKSB7CisgICAg
ICAgICAgICAgICAgICAgIHBhaXIudmFsdWUgPSBkZXBFbnRyeS5tb2R1bGU7CisgICAgICAgICAg
ICAgICAgICAgIHJldHVybiBkZXBFbnRyeTsKKyAgICAgICAgICAgICAgICB9CisKKyAgICAgICAg
ICAgICAgICByZXR1cm4gbG9hZGVyLnJlcXVlc3RSZXNvbHZlRGVwZW5kZW5jaWVzKGRlcEtleSku
dGhlbihmdW5jdGlvbiAoZW50cnkpIHsKKyAgICAgICAgICAgICAgICAgICAgLy8gRklYTUU6IFRo
ZSByZXN1bHQgcHJvbWlzZSBvZiB0aGUgcmVxdWVzdEluc3RhbnRpYXRlQWxsIHNob3VsZCBiZSBm
dWxmaWxsZWQgd2l0aAorICAgICAgICAgICAgICAgICAgICAvLyB0aGUgcmVnaXN0cnkgZW50cnku
CisgICAgICAgICAgICAgICAgICAgIC8vIGh0dHBzOi8vZ2l0aHViLmNvbS93aGF0d2cvbG9hZGVy
L3B1bGwvNjYKKyAgICAgICAgICAgICAgICAgICAgcGFpci52YWx1ZSA9IGVudHJ5Lm1vZHVsZTsK
KyAgICAgICAgICAgICAgICAgICAgcmV0dXJuIGVudHJ5OworICAgICAgICAgICAgICAgIH0pOwor
ICAgICAgICAgICAgfSk7CisgICAgICAgICAgICBAcHV0QnlWYWxEaXJlY3QoZGVwTG9hZHMsIGks
IHByb21pc2UpOworICAgICAgICB9CisKKyAgICAgICAgcmV0dXJuIEBJbnRlcm5hbFByb21pc2Uu
aW50ZXJuYWxBbGwoZGVwTG9hZHMpLnRoZW4oZnVuY3Rpb24gKG1vZHVsZXMpIHsKKyAgICAgICAg
ICAgIGxvYWRlci5zZXRTdGF0ZVRvTWF4KGVudHJ5LCBsb2FkZXIuTGluayk7CisgICAgICAgICAg
ICByZXR1cm4gZW50cnk7CisgICAgICAgIH0pOworICAgIH0pOworCisgICAgZW50cnkucmVzb2x2
ZURlcGVuZGVuY2llcyA9IHJlc29sdmVEZXBlbmRlbmNpZXNQcm9taXNlOworICAgIHJldHVybiBy
ZXNvbHZlRGVwZW5kZW5jaWVzUHJvbWlzZTsKK30KKworZnVuY3Rpb24gcmVxdWVzdEluc3RhbnRp
YXRlQWxsKGtleSkKK3sKKyAgICAvLyBodHRwczovL3doYXR3Zy5naXRodWIuaW8vbG9hZGVyLyNy
ZXF1ZXN0LWluc3RhbnRpYXRlLWFsbAorCisgICAgInVzZSBzdHJpY3QiOworCisgICAgcmV0dXJu
IHRoaXMucmVxdWVzdFJlc29sdmVEZXBlbmRlbmNpZXMoa2V5KTsKK30KKworZnVuY3Rpb24gcHJv
dmlkZShrZXksIHN0YWdlLCB2YWx1ZSkKK3sKKyAgICAidXNlIHN0cmljdCI7CisKKyAgICB2YXIg
ZW50cnkgPSB0aGlzLmVuc3VyZVJlZ2lzdGVyZWQoa2V5KTsKKworICAgIGlmIChzdGFnZSA9PT0g
dGhpcy5GZXRjaCkgeworICAgICAgICBpZiAoZW50cnkuc3RhdHVzID4gdGhpcy5GZXRjaCkKKyAg
ICAgICAgICAgIHRocm93IG5ldyBAVHlwZUVycm9yKCJSZXF1ZXN0ZWQgbW9kdWxlIGlzIGFscmVh
ZHkgZmV0Y2hlZC4iKTsKKyAgICAgICAgdGhpcy5mdWxmaWxsRmV0Y2goZW50cnksIHZhbHVlKTsK
KyAgICAgICAgcmV0dXJuOworICAgIH0KKworICAgIGlmIChzdGFnZSA9PT0gdGhpcy5UcmFuc2xh
dGUpIHsKKyAgICAgICAgaWYgKGVudHJ5LnN0YXR1cyA+IHRoaXMuVHJhbnNsYXRlKQorICAgICAg
ICAgICAgdGhyb3cgbmV3IEBUeXBlRXJyb3IoIlJlcXVlc3RlZCBtb2R1bGUgaXMgYWxyZWFkeSB0
cmFuc2xhdGVkLiIpOworICAgICAgICB0aGlzLmZ1bGZpbGxGZXRjaChlbnRyeSwgdW5kZWZpbmVk
KTsKKyAgICAgICAgdGhpcy5mdWxmaWxsVHJhbnNsYXRlKGVudHJ5LCB2YWx1ZSk7CisgICAgICAg
IHJldHVybjsKKyAgICB9CisKKyAgICBpZiAoc3RhZ2UgPT09IHRoaXMuSW5zdGFudGlhdGUpIHsK
KyAgICAgICAgaWYgKGVudHJ5LnN0YXR1cyA+IHRoaXMuSW5zdGFudGlhdGUpCisgICAgICAgICAg
ICB0aHJvdyBuZXcgQFR5cGVFcnJvcigiUmVxdWVzdGVkIG1vZHVsZSBpcyBhbHJlYWR5IGluc3Rh
bnRpYXRlZC4iKTsKKyAgICAgICAgdGhpcy5mdWxmaWxsRmV0Y2goZW50cnksIHVuZGVmaW5lZCk7
CisgICAgICAgIHRoaXMuZnVsZmlsbFRyYW5zbGF0ZShlbnRyeSwgdmFsdWUpOworICAgICAgICB2
YXIgbG9hZGVyID0gdGhpczsKKyAgICAgICAgZW50cnkudHJhbnNsYXRlLnRoZW4oZnVuY3Rpb24g
KHNvdXJjZSkgeworICAgICAgICAgICAgbG9hZGVyLmZ1bGZpbGxJbnN0YW50aWF0ZShlbnRyeSwg
dmFsdWUsIHNvdXJjZSk7CisgICAgICAgIH0pOworICAgICAgICByZXR1cm47CisgICAgfQorCisg
ICAgdGhyb3cgbmV3IEBUeXBlRXJyb3IoIlJlcXVlc3RlZCBtb2R1bGUgaXMgYWxyZWFkeSByZWFk
eSB0byBiZSBleGVjdXRlZC4iKTsKK30KZGlmZiAtLWdpdCBhL1NvdXJjZS9KYXZhU2NyaXB0Q29y
ZS9qc2MuY3BwIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL2pzYy5jcHAKaW5kZXggMjUxOTU2NWE3
OTg2ZjkyOWQwMTE3YWQ4ODllNGJiMWZmYjhmZjU0MS4uMmNiN2ZiYjVmZjFiMmE5NDMwMjU1NTU3
MTM2NzNkOTAyYjkwMmMzYiAxMDA2NDQKLS0tIGEvU291cmNlL0phdmFTY3JpcHRDb3JlL2pzYy5j
cHAKKysrIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL2pzYy5jcHAKQEAgLTM5LDYgKzM5LDggQEAK
ICNpbmNsdWRlICJKU0FycmF5QnVmZmVyLmgiCiAjaW5jbHVkZSAiSlNDSW5saW5lcy5oIgogI2lu
Y2x1ZGUgIkpTRnVuY3Rpb24uaCIKKyNpbmNsdWRlICJKU0ludGVybmFsUHJvbWlzZS5oIgorI2lu
Y2x1ZGUgIkpTSW50ZXJuYWxQcm9taXNlRGVmZXJyZWQuaCIKICNpbmNsdWRlICJKU0xvY2suaCIK
ICNpbmNsdWRlICJKU09OT2JqZWN0LmgiCiAjaW5jbHVkZSAiSlNQcm94eS5oIgpAQCAtNTE5LDIw
ICs1MjEsMTcgQEAgc3RydWN0IFNjcmlwdCB7CiBjbGFzcyBDb21tYW5kTGluZSB7CiBwdWJsaWM6
CiAgICAgQ29tbWFuZExpbmUoaW50IGFyZ2MsIGNoYXIqKiBhcmd2KQotICAgICAgICA6IG1faW50
ZXJhY3RpdmUoZmFsc2UpCi0gICAgICAgICwgbV9kdW1wKGZhbHNlKQotICAgICAgICAsIG1fZXhp
dENvZGUoZmFsc2UpCi0gICAgICAgICwgbV9wcm9maWxlKGZhbHNlKQogICAgIHsKICAgICAgICAg
cGFyc2VBcmd1bWVudHMoYXJnYywgYXJndik7CiAgICAgfQogCi0gICAgYm9vbCBtX2ludGVyYWN0
aXZlOwotICAgIGJvb2wgbV9kdW1wOwotICAgIGJvb2wgbV9leGl0Q29kZTsKKyAgICBib29sIG1f
aW50ZXJhY3RpdmUgeyBmYWxzZSB9OworICAgIGJvb2wgbV9kdW1wIHsgZmFsc2UgfTsKKyAgICBi
b29sIG1fbW9kdWxlIHsgZmFsc2UgfTsKKyAgICBib29sIG1fZXhpdENvZGUgeyBmYWxzZSB9Owog
ICAgIFZlY3RvcjxTY3JpcHQ+IG1fc2NyaXB0czsKICAgICBWZWN0b3I8U3RyaW5nPiBtX2FyZ3Vt
ZW50czsKLSAgICBib29sIG1fcHJvZmlsZTsKKyAgICBib29sIG1fcHJvZmlsZSB7IGZhbHNlIH07
CiAgICAgU3RyaW5nIG1fcHJvZmlsZXJPdXRwdXQ7CiAKICAgICB2b2lkIHBhcnNlQXJndW1lbnRz
KGludCwgY2hhcioqKTsKQEAgLTU2Niw2ICs1NjUsMTcgQEAgbG9uZyBTdG9wV2F0Y2g6OmdldEVs
YXBzZWRNUygpCiAgICAgcmV0dXJuIHN0YXRpY19jYXN0PGxvbmc+KChtX3N0b3BUaW1lIC0gbV9z
dGFydFRpbWUpICogMTAwMCk7CiB9CiAKK3N0YXRpYyBpbmxpbmUgU3RyaW5nIHN0cmluZ0Zyb21V
VEYoY29uc3QgY2hhciogdXRmOCkKK3sKKyAgICByZXR1cm4gU3RyaW5nOjpmcm9tVVRGOFdpdGhM
YXRpbjFGYWxsYmFjayh1dGY4LCBzdHJsZW4odXRmOCkpOworfQorCitzdGF0aWMgaW5saW5lIFNv
dXJjZUNvZGUganNjU291cmNlKGNvbnN0IGNoYXIqIHV0ZjgsIGNvbnN0IFN0cmluZyYgZmlsZW5h
bWUpCit7CisgICAgU3RyaW5nIHN0ciA9IHN0cmluZ0Zyb21VVEYodXRmOCk7CisgICAgcmV0dXJu
IG1ha2VTb3VyY2Uoc3RyLCBmaWxlbmFtZSk7Cit9CisKIGNsYXNzIEdsb2JhbE9iamVjdCA6IHB1
YmxpYyBKU0dsb2JhbE9iamVjdCB7CiBwcml2YXRlOgogICAgIEdsb2JhbE9iamVjdChWTSYsIFN0
cnVjdHVyZSopOwpAQCAtNjg3LDEwICs2OTcsMzEgQEAgY2xhc3MgR2xvYmFsT2JqZWN0IDogcHVi
bGljIEpTR2xvYmFsT2JqZWN0IHsKICAgICAgICAgSWRlbnRpZmllciBpZGVudGlmaWVyID0gSWRl
bnRpZmllcjo6ZnJvbVN0cmluZygmdm0sIG5hbWUpOwogICAgICAgICBwdXREaXJlY3Qodm0sIGlk
ZW50aWZpZXIsIEpTRnVuY3Rpb246OmNyZWF0ZSh2bSwgdGhpcywgYXJndW1lbnRzLCBpZGVudGlm
aWVyLnN0cmluZygpLCBmdW5jdGlvbiwgTm9JbnRyaW5zaWMsIGZ1bmN0aW9uKSk7CiAgICAgfQor
CisgICAgc3RhdGljIEpTSW50ZXJuYWxQcm9taXNlKiBsb2FkZXJGZXRjaChKU0dsb2JhbE9iamVj
dCogZ2xvYmFsT2JqZWN0LCBFeGVjU3RhdGUqIGV4ZWMsIEpTVmFsdWUga2V5KQorICAgIHsKKyAg
ICAgICAgSlNJbnRlcm5hbFByb21pc2VEZWZlcnJlZCogZGVmZXJyZWQgPSBKU0ludGVybmFsUHJv
bWlzZURlZmVycmVkOjpjcmVhdGUoZXhlYywgZ2xvYmFsT2JqZWN0KTsKKyAgICAgICAgU3RyaW5n
IG1vZHVsZUtleSA9IGtleS50b1N0cmluZyhleGVjKS0+dmFsdWUoZXhlYyk7CisgICAgICAgIGlm
IChleGVjLT5oYWRFeGNlcHRpb24oKSkgeworICAgICAgICAgICAgSlNWYWx1ZSBleGNlcHRpb24g
PSBleGVjLT5leGNlcHRpb24oKTsKKyAgICAgICAgICAgIGV4ZWMtPmNsZWFyRXhjZXB0aW9uKCk7
CisgICAgICAgICAgICBkZWZlcnJlZC0+cmVqZWN0KGV4ZWMsIGV4Y2VwdGlvbik7CisgICAgICAg
ICAgICByZXR1cm4gZGVmZXJyZWQtPnByb21pc2UoKTsKKyAgICAgICAgfQorCisgICAgICAgIC8v
IEhlcmUsIG5vdyB3ZSBjb25zaWRlciBtb2R1bGVLZXkgYXMgdGhlIGZpbGVOYW1lLgorICAgICAg
ICBWZWN0b3I8Y2hhcj4gdXRmODsKKyAgICAgICAgaWYgKCFmaWxsQnVmZmVyV2l0aENvbnRlbnRz
T2ZGaWxlKG1vZHVsZUtleSwgdXRmOCkpIHsKKyAgICAgICAgICAgIGRlZmVycmVkLT5yZWplY3Qo
ZXhlYywgY3JlYXRlRXJyb3IoZXhlYywgbWFrZVN0cmluZygiQ291bGQgbm90IG9wZW4gZmlsZSAn
IiwgbW9kdWxlS2V5LCAiJy4iKSkpOworICAgICAgICAgICAgcmV0dXJuIGRlZmVycmVkLT5wcm9t
aXNlKCk7CisgICAgICAgIH0KKyAgICAgICAgZGVmZXJyZWQtPnJlc29sdmUoZXhlYywganNTdHJp
bmcoZXhlYywgc3RyaW5nRnJvbVVURih1dGY4LmRhdGEoKSkpKTsKKyAgICAgICAgcmV0dXJuIGRl
ZmVycmVkLT5wcm9taXNlKCk7CisgICAgfQogfTsKIAogY29uc3QgQ2xhc3NJbmZvIEdsb2JhbE9i
amVjdDo6c19pbmZvID0geyAiZ2xvYmFsIiwgJkpTR2xvYmFsT2JqZWN0OjpzX2luZm8sICZnbG9i
YWxPYmplY3RUYWJsZSwgQ1JFQVRFX01FVEhPRF9UQUJMRShHbG9iYWxPYmplY3QpIH07Ci1jb25z
dCBHbG9iYWxPYmplY3RNZXRob2RUYWJsZSBHbG9iYWxPYmplY3Q6OnNfZ2xvYmFsT2JqZWN0TWV0
aG9kVGFibGUgPSB7ICZhbGxvd3NBY2Nlc3NGcm9tLCAmc3VwcG9ydHNQcm9maWxpbmcsICZzdXBw
b3J0c1JpY2hTb3VyY2VJbmZvLCAmc2hvdWxkSW50ZXJydXB0U2NyaXB0LCAmamF2YVNjcmlwdFJ1
bnRpbWVGbGFncywgMCwgJnNob3VsZEludGVycnVwdFNjcmlwdEJlZm9yZVRpbWVvdXQgfTsKK2Nv
bnN0IEdsb2JhbE9iamVjdE1ldGhvZFRhYmxlIEdsb2JhbE9iamVjdDo6c19nbG9iYWxPYmplY3RN
ZXRob2RUYWJsZSA9IHsgJmFsbG93c0FjY2Vzc0Zyb20sICZzdXBwb3J0c1Byb2ZpbGluZywgJnN1
cHBvcnRzUmljaFNvdXJjZUluZm8sICZzaG91bGRJbnRlcnJ1cHRTY3JpcHQsICZqYXZhU2NyaXB0
UnVudGltZUZsYWdzLCAwLCAmc2hvdWxkSW50ZXJydXB0U2NyaXB0QmVmb3JlVGltZW91dCwgbnVs
bHB0ciwgJmxvYWRlckZldGNoLCBudWxscHRyLCBudWxscHRyIH07CiAKIAogR2xvYmFsT2JqZWN0
OjpHbG9iYWxPYmplY3QoVk0mIHZtLCBTdHJ1Y3R1cmUqIHN0cnVjdHVyZSkKQEAgLTY5OCwxNyAr
NzI5LDYgQEAgR2xvYmFsT2JqZWN0OjpHbG9iYWxPYmplY3QoVk0mIHZtLCBTdHJ1Y3R1cmUqIHN0
cnVjdHVyZSkKIHsKIH0KIAotc3RhdGljIGlubGluZSBTdHJpbmcgc3RyaW5nRnJvbVVURihjb25z
dCBjaGFyKiB1dGY4KQotewotICAgIHJldHVybiBTdHJpbmc6OmZyb21VVEY4V2l0aExhdGluMUZh
bGxiYWNrKHV0ZjgsIHN0cmxlbih1dGY4KSk7Ci19Ci0KLXN0YXRpYyBpbmxpbmUgU291cmNlQ29k
ZSBqc2NTb3VyY2UoY29uc3QgY2hhciogdXRmOCwgY29uc3QgU3RyaW5nJiBmaWxlbmFtZSkKLXsK
LSAgICBTdHJpbmcgc3RyID0gc3RyaW5nRnJvbVVURih1dGY4KTsKLSAgICByZXR1cm4gbWFrZVNv
dXJjZShzdHIsIGZpbGVuYW1lKTsKLX0KLQogRW5jb2RlZEpTVmFsdWUgSlNDX0hPU1RfQ0FMTCBm
dW5jdGlvblByaW50KEV4ZWNTdGF0ZSogZXhlYykKIHsKICAgICBmb3IgKHVuc2lnbmVkIGkgPSAw
OyBpIDwgZXhlYy0+YXJndW1lbnRDb3VudCgpOyArK2kpIHsKQEAgLTEyMTIsNyArMTIzMiw3IEBA
IEVuY29kZWRKU1ZhbHVlIEpTQ19IT1NUX0NBTEwgZnVuY3Rpb25DaGVja01vZHVsZVN5bnRheChF
eGVjU3RhdGUqIGV4ZWMpCiAgICAgc3RvcFdhdGNoLnN0YXJ0KCk7CiAKICAgICBQYXJzZXJFcnJv
ciBlcnJvcjsKLSAgICBib29sIHZhbGlkU3ludGF4ID0gY2hlY2tNb2R1bGVTeW50YXgoZXhlYy0+
dm0oKSwgbWFrZVNvdXJjZShzb3VyY2UpLCBlcnJvcik7CisgICAgYm9vbCB2YWxpZFN5bnRheCA9
IGNoZWNrTW9kdWxlU3ludGF4KGV4ZWMsIG1ha2VTb3VyY2Uoc291cmNlKSwgZXJyb3IpOwogICAg
IHN0b3BXYXRjaC5zdG9wKCk7CiAKICAgICBpZiAoIXZhbGlkU3ludGF4KQpAQCAtMTMyMCw3ICsx
MzQwLDE4IEBAIGludCBtYWluKGludCBhcmdjLCBjaGFyKiogYXJndikKICAgICBqc2NFeGl0KHJl
cyk7CiB9CiAKLXN0YXRpYyBib29sIHJ1bldpdGhTY3JpcHRzKEdsb2JhbE9iamVjdCogZ2xvYmFs
T2JqZWN0LCBjb25zdCBWZWN0b3I8U2NyaXB0PiYgc2NyaXB0cywgYm9vbCBkdW1wKQorc3RhdGlj
IHZvaWQgZHVtcEV4Y2VwdGlvbihHbG9iYWxPYmplY3QqIGdsb2JhbE9iamVjdCwgTmFrZWRQdHI8
RXhjZXB0aW9uPiBldmFsdWF0aW9uRXhjZXB0aW9uKQoreworICAgIGlmIChldmFsdWF0aW9uRXhj
ZXB0aW9uKSB7CisgICAgICAgIHByaW50ZigiRXhjZXB0aW9uOiAlc1xuIiwgZXZhbHVhdGlvbkV4
Y2VwdGlvbi0+dmFsdWUoKS50b1N0cmluZyhnbG9iYWxPYmplY3QtPmdsb2JhbEV4ZWMoKSktPnZh
bHVlKGdsb2JhbE9iamVjdC0+Z2xvYmFsRXhlYygpKS51dGY4KCkuZGF0YSgpKTsKKyAgICAgICAg
SWRlbnRpZmllciBzdGFja0lEID0gSWRlbnRpZmllcjo6ZnJvbVN0cmluZyhnbG9iYWxPYmplY3Qt
Pmdsb2JhbEV4ZWMoKSwgInN0YWNrIik7CisgICAgICAgIEpTVmFsdWUgc3RhY2tWYWx1ZSA9IGV2
YWx1YXRpb25FeGNlcHRpb24tPnZhbHVlKCkuZ2V0KGdsb2JhbE9iamVjdC0+Z2xvYmFsRXhlYygp
LCBzdGFja0lEKTsKKyAgICAgICAgaWYgKCFzdGFja1ZhbHVlLmlzVW5kZWZpbmVkT3JOdWxsKCkp
CisgICAgICAgICAgICBwcmludGYoIiVzXG4iLCBzdGFja1ZhbHVlLnRvU3RyaW5nKGdsb2JhbE9i
amVjdC0+Z2xvYmFsRXhlYygpKS0+dmFsdWUoZ2xvYmFsT2JqZWN0LT5nbG9iYWxFeGVjKCkpLnV0
ZjgoKS5kYXRhKCkpOworICAgIH0KK30KKworc3RhdGljIGJvb2wgcnVuV2l0aFNjcmlwdHMoR2xv
YmFsT2JqZWN0KiBnbG9iYWxPYmplY3QsIGNvbnN0IFZlY3RvcjxTY3JpcHQ+JiBzY3JpcHRzLCBi
b29sIGR1bXAsIGJvb2wgbW9kdWxlKQogewogICAgIGNvbnN0IGNoYXIqIHNjcmlwdDsKICAgICBT
dHJpbmcgZmlsZU5hbWU7CkBAIC0xMzQ5LDE3ICsxMzgwLDIxIEBAIHN0YXRpYyBib29sIHJ1bldp
dGhTY3JpcHRzKEdsb2JhbE9iamVjdCogZ2xvYmFsT2JqZWN0LCBjb25zdCBWZWN0b3I8U2NyaXB0
PiYgc2NyCiAKICAgICAgICAgdm0uc3RhcnRTYW1wbGluZygpOwogCi0gICAgICAgIE5ha2VkUHRy
PEV4Y2VwdGlvbj4gZXZhbHVhdGlvbkV4Y2VwdGlvbjsKLSAgICAgICAgSlNWYWx1ZSByZXR1cm5W
YWx1ZSA9IGV2YWx1YXRlKGdsb2JhbE9iamVjdC0+Z2xvYmFsRXhlYygpLCBqc2NTb3VyY2Uoc2Ny
aXB0LCBmaWxlTmFtZSksIEpTVmFsdWUoKSwgZXZhbHVhdGlvbkV4Y2VwdGlvbik7Ci0gICAgICAg
IHN1Y2Nlc3MgPSBzdWNjZXNzICYmICFldmFsdWF0aW9uRXhjZXB0aW9uOwotICAgICAgICBpZiAo
ZHVtcCAmJiAhZXZhbHVhdGlvbkV4Y2VwdGlvbikKLSAgICAgICAgICAgIHByaW50ZigiRW5kOiAl
c1xuIiwgcmV0dXJuVmFsdWUudG9TdHJpbmcoZ2xvYmFsT2JqZWN0LT5nbG9iYWxFeGVjKCkpLT52
YWx1ZShnbG9iYWxPYmplY3QtPmdsb2JhbEV4ZWMoKSkudXRmOCgpLmRhdGEoKSk7Ci0gICAgICAg
IGlmIChldmFsdWF0aW9uRXhjZXB0aW9uKSB7Ci0gICAgICAgICAgICBwcmludGYoIkV4Y2VwdGlv
bjogJXNcbiIsIGV2YWx1YXRpb25FeGNlcHRpb24tPnZhbHVlKCkudG9TdHJpbmcoZ2xvYmFsT2Jq
ZWN0LT5nbG9iYWxFeGVjKCkpLT52YWx1ZShnbG9iYWxPYmplY3QtPmdsb2JhbEV4ZWMoKSkudXRm
OCgpLmRhdGEoKSk7Ci0gICAgICAgICAgICBJZGVudGlmaWVyIHN0YWNrSUQgPSBJZGVudGlmaWVy
Ojpmcm9tU3RyaW5nKGdsb2JhbE9iamVjdC0+Z2xvYmFsRXhlYygpLCAic3RhY2siKTsKLSAgICAg
ICAgICAgIEpTVmFsdWUgc3RhY2tWYWx1ZSA9IGV2YWx1YXRpb25FeGNlcHRpb24tPnZhbHVlKCku
Z2V0KGdsb2JhbE9iamVjdC0+Z2xvYmFsRXhlYygpLCBzdGFja0lEKTsKLSAgICAgICAgICAgIGlm
ICghc3RhY2tWYWx1ZS5pc1VuZGVmaW5lZE9yTnVsbCgpKQotICAgICAgICAgICAgICAgIHByaW50
ZigiJXNcbiIsIHN0YWNrVmFsdWUudG9TdHJpbmcoZ2xvYmFsT2JqZWN0LT5nbG9iYWxFeGVjKCkp
LT52YWx1ZShnbG9iYWxPYmplY3QtPmdsb2JhbEV4ZWMoKSkudXRmOCgpLmRhdGEoKSk7CisgICAg
ICAgIGlmIChtb2R1bGUpIHsKKyNpZiBFTkFCTEUoRVM2X01PRFVMRVMpCisgICAgICAgICAgICBO
YWtlZFB0cjxFeGNlcHRpb24+IGV2YWx1YXRpb25FeGNlcHRpb247CisgICAgICAgICAgICBldmFs
dWF0ZU1vZHVsZShnbG9iYWxPYmplY3QtPmdsb2JhbEV4ZWMoKSwganNjU291cmNlKHNjcmlwdCwg
ZmlsZU5hbWUpLCBldmFsdWF0aW9uRXhjZXB0aW9uKTsKKyAgICAgICAgICAgIGR1bXBFeGNlcHRp
b24oZ2xvYmFsT2JqZWN0LCBldmFsdWF0aW9uRXhjZXB0aW9uKTsKKyAgICAgICAgICAgIGdsb2Jh
bE9iamVjdC0+Z2xvYmFsRXhlYygpLT5jbGVhckV4Y2VwdGlvbigpOworICAgICAgICAgICAgZ2xv
YmFsT2JqZWN0LT52bSgpLmRyYWluTWljcm90YXNrcygpOworI2VuZGlmCisgICAgICAgIH0gZWxz
ZSB7CisgICAgICAgICAgICBOYWtlZFB0cjxFeGNlcHRpb24+IGV2YWx1YXRpb25FeGNlcHRpb247
CisgICAgICAgICAgICBKU1ZhbHVlIHJldHVyblZhbHVlID0gZXZhbHVhdGUoZ2xvYmFsT2JqZWN0
LT5nbG9iYWxFeGVjKCksIGpzY1NvdXJjZShzY3JpcHQsIGZpbGVOYW1lKSwgSlNWYWx1ZSgpLCBl
dmFsdWF0aW9uRXhjZXB0aW9uKTsKKyAgICAgICAgICAgIHN1Y2Nlc3MgPSBzdWNjZXNzICYmICFl
dmFsdWF0aW9uRXhjZXB0aW9uOworICAgICAgICAgICAgaWYgKGR1bXAgJiYgIWV2YWx1YXRpb25F
eGNlcHRpb24pCisgICAgICAgICAgICAgICAgcHJpbnRmKCJFbmQ6ICVzXG4iLCByZXR1cm5WYWx1
ZS50b1N0cmluZyhnbG9iYWxPYmplY3QtPmdsb2JhbEV4ZWMoKSktPnZhbHVlKGdsb2JhbE9iamVj
dC0+Z2xvYmFsRXhlYygpKS51dGY4KCkuZGF0YSgpKTsKKyAgICAgICAgICAgIGR1bXBFeGNlcHRp
b24oZ2xvYmFsT2JqZWN0LCBldmFsdWF0aW9uRXhjZXB0aW9uKTsKICAgICAgICAgfQogCiAgICAg
ICAgIHZtLnN0b3BTYW1wbGluZygpOwpAQCAtMTQ1MSw2ICsxNDg2LDkgQEAgc3RhdGljIE5PX1JF
VFVSTiB2b2lkIHByaW50VXNhZ2VTdGF0ZW1lbnQoYm9vbCBoZWxwID0gZmFsc2UpCiAgICAgZnBy
aW50ZihzdGRlcnIsICIgIC1mICAgICAgICAgU3BlY2lmaWVzIGEgc291cmNlIGZpbGUgKGRlcHJl
Y2F0ZWQpXG4iKTsKICAgICBmcHJpbnRmKHN0ZGVyciwgIiAgLWh8LS1oZWxwICBQcmludHMgdGhp
cyBoZWxwIG1lc3NhZ2VcbiIpOwogICAgIGZwcmludGYoc3RkZXJyLCAiICAtaSAgICAgICAgIEVu
YWJsZXMgaW50ZXJhY3RpdmUgbW9kZSAoZGVmYXVsdCBpZiBubyBmaWxlcyBhcmUgc3BlY2lmaWVk
KVxuIik7CisjaWYgRU5BQkxFKEVTNl9NT0RVTEVTKQorICAgIGZwcmludGYoc3RkZXJyLCAiICAt
bSAgICAgICAgIEV4ZWN1dGUgYXMgYSBtb2R1bGVcbiIpOworI2VuZGlmCiAjaWYgSEFWRShTSUdO
QUxfSCkKICAgICBmcHJpbnRmKHN0ZGVyciwgIiAgLXMgICAgICAgICBJbnN0YWxscyBzaWduYWwg
aGFuZGxlcnMgdGhhdCBleGl0IG9uIGEgY3Jhc2ggKFVuaXggcGxhdGZvcm1zIG9ubHkpXG4iKTsK
ICNlbmRpZgpAQCAtMTUwMiw2ICsxNTQwLDEyIEBAIHZvaWQgQ29tbWFuZExpbmU6OnBhcnNlQXJn
dW1lbnRzKGludCBhcmdjLCBjaGFyKiogYXJndikKICAgICAgICAgICAgIG1fcHJvZmlsZXJPdXRw
dXQgPSBhcmd2W2ldOwogICAgICAgICAgICAgY29udGludWU7CiAgICAgICAgIH0KKyNpZiBFTkFC
TEUoRVM2X01PRFVMRVMpCisgICAgICAgIGlmICghc3RyY21wKGFyZywgIi1tIikpIHsKKyAgICAg
ICAgICAgIG1fbW9kdWxlID0gdHJ1ZTsKKyAgICAgICAgICAgIGNvbnRpbnVlOworICAgICAgICB9
CisjZW5kaWYKICAgICAgICAgaWYgKCFzdHJjbXAoYXJnLCAiLXMiKSkgewogI2lmIEhBVkUoU0lH
TkFMX0gpCiAgICAgICAgICAgICBzaWduYWwoU0lHSUxMLCBfZXhpdCk7CkBAIC0xNTc3LDcgKzE2
MjEsNyBAQCBpbnQganNjbWFpbihpbnQgYXJnYywgY2hhcioqIGFyZ3YpCiAgICAgICAgICAgICB2
bS0+bV9wZXJCeXRlY29kZVByb2ZpbGVyID0gc3RkOjptYWtlX3VuaXF1ZTxQcm9maWxlcjo6RGF0
YWJhc2U+KCp2bSk7CiAgICAgCiAgICAgICAgIEdsb2JhbE9iamVjdCogZ2xvYmFsT2JqZWN0ID0g
R2xvYmFsT2JqZWN0OjpjcmVhdGUoKnZtLCBHbG9iYWxPYmplY3Q6OmNyZWF0ZVN0cnVjdHVyZSgq
dm0sIGpzTnVsbCgpKSwgb3B0aW9ucy5tX2FyZ3VtZW50cyk7Ci0gICAgICAgIGJvb2wgc3VjY2Vz
cyA9IHJ1bldpdGhTY3JpcHRzKGdsb2JhbE9iamVjdCwgb3B0aW9ucy5tX3NjcmlwdHMsIG9wdGlv
bnMubV9kdW1wKTsKKyAgICAgICAgYm9vbCBzdWNjZXNzID0gcnVuV2l0aFNjcmlwdHMoZ2xvYmFs
T2JqZWN0LCBvcHRpb25zLm1fc2NyaXB0cywgb3B0aW9ucy5tX2R1bXAsIG9wdGlvbnMubV9tb2R1
bGUpOwogICAgICAgICBpZiAob3B0aW9ucy5tX2ludGVyYWN0aXZlICYmIHN1Y2Nlc3MpCiAgICAg
ICAgICAgICBydW5JbnRlcmFjdGl2ZShnbG9iYWxPYmplY3QpOwogCmRpZmYgLS1naXQgYS9Tb3Vy
Y2UvSmF2YVNjcmlwdENvcmUvcGFyc2VyL0xleGVyLmNwcCBiL1NvdXJjZS9KYXZhU2NyaXB0Q29y
ZS9wYXJzZXIvTGV4ZXIuY3BwCmluZGV4IDI1OWQyNTRlMzk3NTE4YzdiY2NmZmM5ZWRlYzE1NmJh
NWYwMGRiN2EuLjQ3NjA0M2ZmNmUyNTVmOWViNjMxNDVjYjg2Y2RhOWVlZjBhNDE1NjYgMTAwNjQ0
Ci0tLSBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9wYXJzZXIvTGV4ZXIuY3BwCisrKyBiL1NvdXJj
ZS9KYXZhU2NyaXB0Q29yZS9wYXJzZXIvTGV4ZXIuY3BwCkBAIC05MzUsNyArOTM1LDcgQEAgdGVt
cGxhdGUgPGJvb2wgc2hvdWxkQ3JlYXRlSWRlbnRpZmllcj4gQUxXQVlTX0lOTElORSBKU1Rva2Vu
VHlwZSBMZXhlcjxMQ2hhcj46OnAKICAgICAgICAgICAgICAgICByZXR1cm4gRVJST1JUT0s7CiAg
ICAgICAgICAgICB9CiAgICAgICAgICAgICBpZiAoaXNQcml2YXRlTmFtZSkKLSAgICAgICAgICAg
ICAgICBpZGVudCA9IG1fdm0tPnByb3BlcnR5TmFtZXMtPmdldFByaXZhdGVOYW1lKCppZGVudCk7
CisgICAgICAgICAgICAgICAgaWRlbnQgPSBtX3ZtLT5wcm9wZXJ0eU5hbWVzLT5sb29rVXBQcml2
YXRlTmFtZSgqaWRlbnQpOwogICAgICAgICAgICAgZWxzZSBpZiAoKmlkZW50ID09IG1fdm0tPnBy
b3BlcnR5TmFtZXMtPnVuZGVmaW5lZEtleXdvcmQpCiAgICAgICAgICAgICAgICAgdG9rZW5EYXRh
LT5pZGVudCA9ICZtX3ZtLT5wcm9wZXJ0eU5hbWVzLT51bmRlZmluZWRQcml2YXRlTmFtZTsKICAg
ICAgICAgICAgIGlmICghaWRlbnQpCkBAIC0xMDEyLDcgKzEwMTIsNyBAQCB0ZW1wbGF0ZSA8Ym9v
bCBzaG91bGRDcmVhdGVJZGVudGlmaWVyPiBBTFdBWVNfSU5MSU5FIEpTVG9rZW5UeXBlIExleGVy
PFVDaGFyPjo6cAogICAgICAgICAgICAgICAgIHJldHVybiBFUlJPUlRPSzsKICAgICAgICAgICAg
IH0KICAgICAgICAgICAgIGlmIChpc1ByaXZhdGVOYW1lKQotICAgICAgICAgICAgICAgIGlkZW50
ID0gbV92bS0+cHJvcGVydHlOYW1lcy0+Z2V0UHJpdmF0ZU5hbWUoKmlkZW50KTsKKyAgICAgICAg
ICAgICAgICBpZGVudCA9IG1fdm0tPnByb3BlcnR5TmFtZXMtPmxvb2tVcFByaXZhdGVOYW1lKCpp
ZGVudCk7CiAgICAgICAgICAgICBlbHNlIGlmICgqaWRlbnQgPT0gbV92bS0+cHJvcGVydHlOYW1l
cy0+dW5kZWZpbmVkS2V5d29yZCkKICAgICAgICAgICAgICAgICB0b2tlbkRhdGEtPmlkZW50ID0g
Jm1fdm0tPnByb3BlcnR5TmFtZXMtPnVuZGVmaW5lZFByaXZhdGVOYW1lOwogICAgICAgICAgICAg
aWYgKCFpZGVudCkKZGlmZiAtLWdpdCBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9wYXJzZXIvTW9k
dWxlQW5hbHl6ZXIuY3BwIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL3BhcnNlci9Nb2R1bGVBbmFs
eXplci5jcHAKaW5kZXggYjJkZTk2MGIzOTMyNTg0MWNkOWY4NWM2NzE2MjJjM2RmN2JhOWQ3Ny4u
M2QxNzdjYTc3YjhiOGQ4OGQ4N2I0ZjRlODVjZTNkNDY4MzhjNDQxZCAxMDA2NDQKLS0tIGEvU291
cmNlL0phdmFTY3JpcHRDb3JlL3BhcnNlci9Nb2R1bGVBbmFseXplci5jcHAKKysrIGIvU291cmNl
L0phdmFTY3JpcHRDb3JlL3BhcnNlci9Nb2R1bGVBbmFseXplci5jcHAKQEAgLTI3LDE0ICsyNywx
OCBAQAogI2luY2x1ZGUgIk1vZHVsZUFuYWx5emVyLmgiCiAKICNpbmNsdWRlICJJZGVudGlmaWVy
SW5saW5lcy5oIgotI2luY2x1ZGUgIk1vZHVsZVJlY29yZC5oIgorI2luY2x1ZGUgIkpTQ0pTVmFs
dWVJbmxpbmVzLmgiCisjaW5jbHVkZSAiSlNDZWxsSW5saW5lcy5oIgorI2luY2x1ZGUgIkpTR2xv
YmFsT2JqZWN0LmgiCisjaW5jbHVkZSAiSlNNb2R1bGVSZWNvcmQuaCIKKyNpbmNsdWRlICJTdHJv
bmdJbmxpbmVzLmgiCiAKIG5hbWVzcGFjZSBKU0MgewogCiAKLU1vZHVsZUFuYWx5emVyOjpNb2R1
bGVBbmFseXplcihWTSYgdm0sIGNvbnN0IFZhcmlhYmxlRW52aXJvbm1lbnQmIGRlY2xhcmVkVmFy
aWFibGVzLCBjb25zdCBWYXJpYWJsZUVudmlyb25tZW50JiBsZXhpY2FsVmFyaWFibGVzKQotICAg
IDogbV92bSgmdm0pCi0gICAgLCBtX21vZHVsZVJlY29yZChNb2R1bGVSZWNvcmQ6OmNyZWF0ZSgp
KQorTW9kdWxlQW5hbHl6ZXI6Ok1vZHVsZUFuYWx5emVyKEV4ZWNTdGF0ZSogZXhlYywgY29uc3Qg
SWRlbnRpZmllciYgbW9kdWxlS2V5LCBjb25zdCBWYXJpYWJsZUVudmlyb25tZW50JiBkZWNsYXJl
ZFZhcmlhYmxlcywgY29uc3QgVmFyaWFibGVFbnZpcm9ubWVudCYgbGV4aWNhbFZhcmlhYmxlcykK
KyAgICA6IG1fdm0oJmV4ZWMtPnZtKCkpCisgICAgLCBtX21vZHVsZVJlY29yZChleGVjLT52bSgp
LCBKU01vZHVsZVJlY29yZDo6Y3JlYXRlKGV4ZWMtPnZtKCksIGV4ZWMtPmxleGljYWxHbG9iYWxP
YmplY3QoKS0+bW9kdWxlUmVjb3JkU3RydWN0dXJlKCksIG1vZHVsZUtleSkpCiAgICAgLCBtX2Rl
Y2xhcmVkVmFyaWFibGVzKGRlY2xhcmVkVmFyaWFibGVzKQogICAgICwgbV9sZXhpY2FsVmFyaWFi
bGVzKGxleGljYWxWYXJpYWJsZXMpCiB7CkBAIC03NiwyOCArODAsMjggQEAgdm9pZCBNb2R1bGVB
bmFseXplcjo6ZXhwb3J0VmFyaWFibGUoY29uc3QgUmVmUHRyPFVuaXF1ZWRTdHJpbmdJbXBsPiYg
bG9jYWxOYW1lLAogCiAgICAgLy8gRXhwb3J0ZWQgbW9kdWxlIGxvY2FsIHZhcmlhYmxlLgogICAg
IGlmICghdmFyaWFibGUuaXNJbXBvcnRlZCgpKSB7Ci0gICAgICAgIG1vZHVsZVJlY29yZCgpLmFk
ZEV4cG9ydEVudHJ5KE1vZHVsZVJlY29yZDo6RXhwb3J0RW50cnk6OmNyZWF0ZUxvY2FsKGV4cG9y
dE5hbWUsIElkZW50aWZpZXI6OmZyb21VaWQobV92bSwgbG9jYWxOYW1lLmdldCgpKSwgdmFyaWFi
bGUpKTsKKyAgICAgICAgbW9kdWxlUmVjb3JkKCktPmFkZEV4cG9ydEVudHJ5KEpTTW9kdWxlUmVj
b3JkOjpFeHBvcnRFbnRyeTo6Y3JlYXRlTG9jYWwoZXhwb3J0TmFtZSwgSWRlbnRpZmllcjo6ZnJv
bVVpZChtX3ZtLCBsb2NhbE5hbWUuZ2V0KCkpLCB2YXJpYWJsZSkpOwogICAgICAgICByZXR1cm47
CiAgICAgfQogCi0gICAgY29uc3QgYXV0byYgaW1wb3J0RW50cnkgPSBtb2R1bGVSZWNvcmQoKS5s
b29rVXBJbXBvcnRFbnRyeShsb2NhbE5hbWUpOworICAgIGNvbnN0IGF1dG8mIGltcG9ydEVudHJ5
ID0gbW9kdWxlUmVjb3JkKCktPmxvb2tVcEltcG9ydEVudHJ5KGxvY2FsTmFtZSk7CiAgICAgaWYg
KGltcG9ydEVudHJ5LmlzTmFtZXNwYWNlKHZtKCkpKSB7CiAgICAgICAgIC8vIEV4cG9ydGVkIG5h
bWVzcGFjZSBiaW5kaW5nLgogICAgICAgICAvLyBpbXBvcnQgKiBhcyBuYW1lc3BhY2UgZnJvbSAi
bW9kIgogICAgICAgICAvLyBleHBvcnQgeyBuYW1lc3BhY2UgfQotICAgICAgICBtb2R1bGVSZWNv
cmQoKS5hZGRFeHBvcnRFbnRyeShNb2R1bGVSZWNvcmQ6OkV4cG9ydEVudHJ5OjpjcmVhdGVOYW1l
c3BhY2UoZXhwb3J0TmFtZSwgaW1wb3J0RW50cnkubW9kdWxlUmVxdWVzdCkpOworICAgICAgICBt
b2R1bGVSZWNvcmQoKS0+YWRkRXhwb3J0RW50cnkoSlNNb2R1bGVSZWNvcmQ6OkV4cG9ydEVudHJ5
OjpjcmVhdGVOYW1lc3BhY2UoZXhwb3J0TmFtZSwgaW1wb3J0RW50cnkubW9kdWxlUmVxdWVzdCkp
OwogICAgICAgICByZXR1cm47CiAgICAgfQogCiAgICAgLy8gSW5kaXJlY3RseSBleHBvcnRlZCBi
aW5kaW5nLgogICAgIC8vIGltcG9ydCBhIGZyb20gIm1vZCIKICAgICAvLyBleHBvcnQgeyBhIH0K
LSAgICBtb2R1bGVSZWNvcmQoKS5hZGRFeHBvcnRFbnRyeShNb2R1bGVSZWNvcmQ6OkV4cG9ydEVu
dHJ5OjpjcmVhdGVJbmRpcmVjdChleHBvcnROYW1lLCBpbXBvcnRFbnRyeS5pbXBvcnROYW1lLCBp
bXBvcnRFbnRyeS5tb2R1bGVSZXF1ZXN0KSk7CisgICAgbW9kdWxlUmVjb3JkKCktPmFkZEV4cG9y
dEVudHJ5KEpTTW9kdWxlUmVjb3JkOjpFeHBvcnRFbnRyeTo6Y3JlYXRlSW5kaXJlY3QoZXhwb3J0
TmFtZSwgaW1wb3J0RW50cnkuaW1wb3J0TmFtZSwgaW1wb3J0RW50cnkubW9kdWxlUmVxdWVzdCkp
OwogfQogCiAKIAotUmVmPE1vZHVsZVJlY29yZD4gTW9kdWxlQW5hbHl6ZXI6OmFuYWx5emUoTW9k
dWxlUHJvZ3JhbU5vZGUmIG1vZHVsZVByb2dyYW1Ob2RlKQorSlNNb2R1bGVSZWNvcmQqIE1vZHVs
ZUFuYWx5emVyOjphbmFseXplKE1vZHVsZVByb2dyYW1Ob2RlJiBtb2R1bGVQcm9ncmFtTm9kZSkK
IHsKICAgICAvLyBUcmF2ZXJzZSB0aGUgbW9kdWxlIEFTVCBhbmQgY29sbGVjdAogICAgIC8vICog
SW1wb3J0IGVudHJpZXMKQEAgLTE0OSw3ICsxNTMsNyBAQCBSZWY8TW9kdWxlUmVjb3JkPiBNb2R1
bGVBbmFseXplcjo6YW5hbHl6ZShNb2R1bGVQcm9ncmFtTm9kZSYgbW9kdWxlUHJvZ3JhbU5vZGUp
CiAgICAgaWYgKE9wdGlvbnM6OmR1bXBNb2R1bGVSZWNvcmQoKSkKICAgICAgICAgbV9tb2R1bGVS
ZWNvcmQtPmR1bXAoKTsKIAotICAgIHJldHVybiAqbV9tb2R1bGVSZWNvcmQ7CisgICAgcmV0dXJu
IG1fbW9kdWxlUmVjb3JkLmdldCgpOwogfQogCiB9IC8vIG5hbWVzcGFjZSBKU0MKZGlmZiAtLWdp
dCBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9wYXJzZXIvTW9kdWxlQW5hbHl6ZXIuaCBiL1NvdXJj
ZS9KYXZhU2NyaXB0Q29yZS9wYXJzZXIvTW9kdWxlQW5hbHl6ZXIuaAppbmRleCAwMjc2NDg0NzY1
MGIzMDI0ZmQyYThjMzcyMmU3M2E3NDdiOTYzY2I2Li4yMjhhNjlmZWU3NDczNjYyMGQ3ZjZkYTU3
MWJiNmFjYWQ4NDZiNzA2IDEwMDY0NAotLS0gYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvcGFyc2Vy
L01vZHVsZUFuYWx5emVyLmgKKysrIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL3BhcnNlci9Nb2R1
bGVBbmFseXplci5oCkBAIC0yNiwyMCArMjYsMjIgQEAKICNpZm5kZWYgTW9kdWxlQW5hbHl6ZXJf
aAogI2RlZmluZSBNb2R1bGVBbmFseXplcl9oCiAKLSNpbmNsdWRlICJNb2R1bGVSZWNvcmQuaCIK
ICNpbmNsdWRlICJOb2Rlcy5oIgogCiBuYW1lc3BhY2UgSlNDIHsKIAorY2xhc3MgSlNNb2R1bGVS
ZWNvcmQ7CisKIGNsYXNzIE1vZHVsZUFuYWx5emVyIHsKKyAgICBXVEZfTUFLRV9OT05DT1BZQUJM
RShNb2R1bGVBbmFseXplcik7CiBwdWJsaWM6Ci0gICAgTW9kdWxlQW5hbHl6ZXIoVk0mLCBjb25z
dCBWYXJpYWJsZUVudmlyb25tZW50JiBkZWNsYXJlZFZhcmlhYmxlcywgY29uc3QgVmFyaWFibGVF
bnZpcm9ubWVudCYgbGV4aWNhbFZhcmlhYmxlcyk7CisgICAgTW9kdWxlQW5hbHl6ZXIoRXhlY1N0
YXRlKiwgY29uc3QgSWRlbnRpZmllciYgbW9kdWxlS2V5LCBjb25zdCBWYXJpYWJsZUVudmlyb25t
ZW50JiBkZWNsYXJlZFZhcmlhYmxlcywgY29uc3QgVmFyaWFibGVFbnZpcm9ubWVudCYgbGV4aWNh
bFZhcmlhYmxlcyk7CiAKLSAgICBSZWY8TW9kdWxlUmVjb3JkPiBhbmFseXplKE1vZHVsZVByb2dy
YW1Ob2RlJik7CisgICAgSlNNb2R1bGVSZWNvcmQqIGFuYWx5emUoTW9kdWxlUHJvZ3JhbU5vZGUm
KTsKIAogICAgIFZNJiB2bSgpIHsgcmV0dXJuICptX3ZtOyB9CiAKLSAgICBNb2R1bGVSZWNvcmQm
IG1vZHVsZVJlY29yZCgpIHsgcmV0dXJuICptX21vZHVsZVJlY29yZDsgfQorICAgIEpTTW9kdWxl
UmVjb3JkKiBtb2R1bGVSZWNvcmQoKSB7IHJldHVybiBtX21vZHVsZVJlY29yZC5nZXQoKTsgfQog
CiAgICAgdm9pZCBkZWNsYXJlRXhwb3J0QWxpYXMoY29uc3QgSWRlbnRpZmllciYgbG9jYWxOYW1l
LCBjb25zdCBJZGVudGlmaWVyJiBleHBvcnROYW1lKTsKIApAQCAtNTEsNyArNTMsNyBAQCBjbGFz
cyBNb2R1bGVBbmFseXplciB7CiAgICAgSWRlbnRpZmllciBleHBvcnRlZEJpbmRpbmcoY29uc3Qg
UmVmUHRyPFVuaXF1ZWRTdHJpbmdJbXBsPiYgaWRlbnQpOwogCiAgICAgVk0qIG1fdm07Ci0gICAg
UmVmUHRyPE1vZHVsZVJlY29yZD4gbV9tb2R1bGVSZWNvcmQ7CisgICAgU3Ryb25nPEpTTW9kdWxl
UmVjb3JkPiBtX21vZHVsZVJlY29yZDsKICAgICBWYXJpYWJsZUVudmlyb25tZW50IG1fZGVjbGFy
ZWRWYXJpYWJsZXM7CiAgICAgVmFyaWFibGVFbnZpcm9ubWVudCBtX2xleGljYWxWYXJpYWJsZXM7
CiAgICAgSWRlbnRpZmllckFsaWFzTWFwIG1fYWxpYXNNYXA7CmRpZmYgLS1naXQgYS9Tb3VyY2Uv
SmF2YVNjcmlwdENvcmUvcGFyc2VyL01vZHVsZVJlY29yZC5jcHAgYi9Tb3VyY2UvSmF2YVNjcmlw
dENvcmUvcGFyc2VyL01vZHVsZVJlY29yZC5jcHAKZGVsZXRlZCBmaWxlIG1vZGUgMTAwNjQ0Cmlu
ZGV4IGVjOTczNTY4YmVjOGEwYjE1MzMzMmY0ODc1ZjllZmUxMzc4MmVjOGEuLjAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAKLS0tIGEvU291cmNlL0phdmFTY3JpcHRDb3Jl
L3BhcnNlci9Nb2R1bGVSZWNvcmQuY3BwCisrKyAvZGV2L251bGwKQEAgLTEsOTUgKzAsMCBAQAot
LyoKLSAqIENvcHlyaWdodCAoQykgMjAxNSBBcHBsZSBJbmMuIEFsbCByaWdodHMgcmVzZXJ2ZWQu
Ci0gKgotICogUmVkaXN0cmlidXRpb24gYW5kIHVzZSBpbiBzb3VyY2UgYW5kIGJpbmFyeSBmb3Jt
cywgd2l0aCBvciB3aXRob3V0Ci0gKiBtb2RpZmljYXRpb24sIGFyZSBwZXJtaXR0ZWQgcHJvdmlk
ZWQgdGhhdCB0aGUgZm9sbG93aW5nIGNvbmRpdGlvbnMKLSAqIGFyZSBtZXQ6Ci0gKiAxLiBSZWRp
c3RyaWJ1dGlvbnMgb2Ygc291cmNlIGNvZGUgbXVzdCByZXRhaW4gdGhlIGFib3ZlIGNvcHlyaWdo
dAotICogICAgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2lu
ZyBkaXNjbGFpbWVyLgotICogMi4gUmVkaXN0cmlidXRpb25zIGluIGJpbmFyeSBmb3JtIG11c3Qg
cmVwcm9kdWNlIHRoZSBhYm92ZSBjb3B5cmlnaHQKLSAqICAgIG5vdGljZSwgdGhpcyBsaXN0IG9m
IGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lciBpbiB0aGUKLSAqICAgIGRv
Y3VtZW50YXRpb24gYW5kL29yIG90aGVyIG1hdGVyaWFscyBwcm92aWRlZCB3aXRoIHRoZSBkaXN0
cmlidXRpb24uCi0gKgotICogVEhJUyBTT0ZUV0FSRSBJUyBQUk9WSURFRCBCWSBBUFBMRSBJTkMu
IGBgQVMgSVMnJyBBTkQgQU5ZCi0gKiBFWFBSRVNTIE9SIElNUExJRUQgV0FSUkFOVElFUywgSU5D
TFVESU5HLCBCVVQgTk9UIExJTUlURUQgVE8sIFRIRQotICogSU1QTElFRCBXQVJSQU5USUVTIE9G
IE1FUkNIQU5UQUJJTElUWSBBTkQgRklUTkVTUyBGT1IgQSBQQVJUSUNVTEFSCi0gKiBQVVJQT1NF
IEFSRSBESVNDTEFJTUVELiAgSU4gTk8gRVZFTlQgU0hBTEwgQVBQTEUgSU5DLiBPUgotICogQ09O
VFJJQlVUT1JTIEJFIExJQUJMRSBGT1IgQU5ZIERJUkVDVCwgSU5ESVJFQ1QsIElOQ0lERU5UQUws
IFNQRUNJQUwsCi0gKiBFWEVNUExBUlksIE9SIENPTlNFUVVFTlRJQUwgREFNQUdFUyAoSU5DTFVE
SU5HLCBCVVQgTk9UIExJTUlURUQgVE8sCi0gKiBQUk9DVVJFTUVOVCBPRiBTVUJTVElUVVRFIEdP
T0RTIE9SIFNFUlZJQ0VTOyBMT1NTIE9GIFVTRSwgREFUQSwgT1IKLSAqIFBST0ZJVFM7IE9SIEJV
U0lORVNTIElOVEVSUlVQVElPTikgSE9XRVZFUiBDQVVTRUQgQU5EIE9OIEFOWSBUSEVPUlkKLSAq
IE9GIExJQUJJTElUWSwgV0hFVEhFUiBJTiBDT05UUkFDVCwgU1RSSUNUIExJQUJJTElUWSwgT1Ig
VE9SVAotICogKElOQ0xVRElORyBORUdMSUdFTkNFIE9SIE9USEVSV0lTRSkgQVJJU0lORyBJTiBB
TlkgV0FZIE9VVCBPRiBUSEUgVVNFCi0gKiBPRiBUSElTIFNPRlRXQVJFLCBFVkVOIElGIEFEVklT
RUQgT0YgVEhFIFBPU1NJQklMSVRZIE9GIFNVQ0ggREFNQUdFLiAKLSAqLwotCi0jaW5jbHVkZSAi
Y29uZmlnLmgiCi0jaW5jbHVkZSAiTW9kdWxlUmVjb3JkLmgiCi0KLSNpbmNsdWRlICJJZGVudGlm
aWVySW5saW5lcy5oIgotCi1uYW1lc3BhY2UgSlNDIHsKLQotCi1hdXRvIE1vZHVsZVJlY29yZDo6
RXhwb3J0RW50cnk6OmNyZWF0ZUxvY2FsKGNvbnN0IElkZW50aWZpZXImIGV4cG9ydE5hbWUsIGNv
bnN0IElkZW50aWZpZXImIGxvY2FsTmFtZSwgY29uc3QgVmFyaWFibGVFbnZpcm9ubWVudEVudHJ5
JiB2YXJpYWJsZSkgLT4gRXhwb3J0RW50cnkKLXsKLSAgICByZXR1cm4gRXhwb3J0RW50cnkgeyBU
eXBlOjpMb2NhbCwgZXhwb3J0TmFtZSwgSWRlbnRpZmllcigpLCBJZGVudGlmaWVyKCksIGxvY2Fs
TmFtZSwgdmFyaWFibGUgfTsKLX0KLQotYXV0byBNb2R1bGVSZWNvcmQ6OkV4cG9ydEVudHJ5Ojpj
cmVhdGVOYW1lc3BhY2UoY29uc3QgSWRlbnRpZmllciYgZXhwb3J0TmFtZSwgY29uc3QgSWRlbnRp
ZmllciYgbW9kdWxlTmFtZSkgLT4gRXhwb3J0RW50cnkKLXsKLSAgICByZXR1cm4gRXhwb3J0RW50
cnkgeyBUeXBlOjpOYW1lc3BhY2UsIGV4cG9ydE5hbWUsIG1vZHVsZU5hbWUsIElkZW50aWZpZXIo
KSwgSWRlbnRpZmllcigpLCBWYXJpYWJsZUVudmlyb25tZW50RW50cnkoKSB9OwotfQotCi1hdXRv
IE1vZHVsZVJlY29yZDo6RXhwb3J0RW50cnk6OmNyZWF0ZUluZGlyZWN0KGNvbnN0IElkZW50aWZp
ZXImIGV4cG9ydE5hbWUsIGNvbnN0IElkZW50aWZpZXImIGltcG9ydE5hbWUsIGNvbnN0IElkZW50
aWZpZXImIG1vZHVsZU5hbWUpIC0+IEV4cG9ydEVudHJ5Ci17Ci0gICAgcmV0dXJuIEV4cG9ydEVu
dHJ5IHsgVHlwZTo6SW5kaXJlY3QsIGV4cG9ydE5hbWUsIG1vZHVsZU5hbWUsIGltcG9ydE5hbWUs
IElkZW50aWZpZXIoKSwgVmFyaWFibGVFbnZpcm9ubWVudEVudHJ5KCkgfTsKLX0KLQotc3RhdGlj
IFN0cmluZyBwcmludGFibGVOYW1lKGNvbnN0IFJlZlB0cjxVbmlxdWVkU3RyaW5nSW1wbD4mIHVp
ZCkKLXsKLSAgICBpZiAodWlkLT5pc1N5bWJvbCgpKQotICAgICAgICByZXR1cm4gdWlkLmdldCgp
OwotICAgIHJldHVybiBXVEY6Om1ha2VTdHJpbmcoIiciLCBTdHJpbmcodWlkLmdldCgpKSwgIici
KTsKLX0KLQotc3RhdGljIFN0cmluZyBwcmludGFibGVOYW1lKGNvbnN0IElkZW50aWZpZXImIGlk
ZW50KQotewotICAgIHJldHVybiBwcmludGFibGVOYW1lKGlkZW50LmltcGwoKSk7Ci19Ci0KLQot
dm9pZCBNb2R1bGVSZWNvcmQ6OmR1bXAoKQotewotICAgIGRhdGFMb2coIlxuQW5hbHl6aW5nIE1v
ZHVsZVJlY29yZFxuIik7Ci0KLSAgICBkYXRhTG9nKCIgICAgRGVwZW5kZW5jaWVzOiAiLCBtX3Jl
cXVlc3RlZE1vZHVsZXMuc2l6ZSgpLCAiIG1vZHVsZXNcbiIpOwotICAgIGZvciAoY29uc3QgYXV0
byYgbW9kdWxlTmFtZSA6IG1fcmVxdWVzdGVkTW9kdWxlcykKLSAgICAgICAgZGF0YUxvZygiICAg
ICAgbW9kdWxlKCIsIHByaW50YWJsZU5hbWUobW9kdWxlTmFtZSksICIpXG4iKTsKLQotICAgIGRh
dGFMb2coIiAgICBJbXBvcnQ6ICIsIG1faW1wb3J0RW50cmllcy5zaXplKCksICIgZW50cmllc1xu
Iik7Ci0gICAgZm9yIChjb25zdCBhdXRvJiBwYWlyIDogbV9pbXBvcnRFbnRyaWVzKQotICAgICAg
ICBkYXRhTG9nKCIgICAgICBpbXBvcnQoIiwgcHJpbnRhYmxlTmFtZShwYWlyLnZhbHVlLmltcG9y
dE5hbWUpLCAiKSwgbG9jYWwoIiwgcHJpbnRhYmxlTmFtZShwYWlyLnZhbHVlLmxvY2FsTmFtZSks
ICIpLCBtb2R1bGUoIiwgcHJpbnRhYmxlTmFtZShwYWlyLnZhbHVlLm1vZHVsZVJlcXVlc3QpLCAi
KVxuIik7Ci0KLSAgICBkYXRhTG9nKCIgICAgRXhwb3J0OiAiLCBtX2V4cG9ydEVudHJpZXMuc2l6
ZSgpLCAiIGVudHJpZXNcbiIpOwotICAgIGZvciAoY29uc3QgYXV0byYgcGFpciA6IG1fZXhwb3J0
RW50cmllcykgewotICAgICAgICBjb25zdCBFeHBvcnRFbnRyeSYgZW50cnkgPSBwYWlyLnZhbHVl
OwotICAgICAgICBzd2l0Y2ggKGVudHJ5LnR5cGUpIHsKLSAgICAgICAgY2FzZSBFeHBvcnRFbnRy
eTo6VHlwZTo6TG9jYWw6Ci0gICAgICAgICAgICBkYXRhTG9nKCIgICAgICBbTG9jYWxdICIsICJl
eHBvcnQoIiwgcHJpbnRhYmxlTmFtZShlbnRyeS5leHBvcnROYW1lKSwgIiksIGxvY2FsKCIsIHBy
aW50YWJsZU5hbWUoZW50cnkubG9jYWxOYW1lKSwgIilcbiIpOwotICAgICAgICAgICAgYnJlYWs7
Ci0KLSAgICAgICAgY2FzZSBFeHBvcnRFbnRyeTo6VHlwZTo6TmFtZXNwYWNlOgotICAgICAgICAg
ICAgZGF0YUxvZygiICAgICAgW05hbWVzcGFjZV0gIiwgImV4cG9ydCgiLCBwcmludGFibGVOYW1l
KGVudHJ5LmV4cG9ydE5hbWUpLCAiKSwgbW9kdWxlKCIsIHByaW50YWJsZU5hbWUoZW50cnkubW9k
dWxlTmFtZSksICIpXG4iKTsKLSAgICAgICAgICAgIGJyZWFrOwotCi0gICAgICAgIGNhc2UgRXhw
b3J0RW50cnk6OlR5cGU6OkluZGlyZWN0OgotICAgICAgICAgICAgZGF0YUxvZygiICAgICAgW0lu
ZGlyZWN0XSAiLCAiZXhwb3J0KCIsIHByaW50YWJsZU5hbWUoZW50cnkuZXhwb3J0TmFtZSksICIp
LCBpbXBvcnQoIiwgcHJpbnRhYmxlTmFtZShlbnRyeS5pbXBvcnROYW1lKSwgIiksIG1vZHVsZSgi
LCBwcmludGFibGVOYW1lKGVudHJ5Lm1vZHVsZU5hbWUpLCAiKVxuIik7Ci0gICAgICAgICAgICBi
cmVhazsKLSAgICAgICAgfQotICAgIH0KLSAgICBmb3IgKGNvbnN0IGF1dG8mIG1vZHVsZU5hbWUg
OiBtX3N0YXJFeHBvcnRFbnRyaWVzKQotICAgICAgICBkYXRhTG9nKCIgICAgICBbU3Rhcl0gbW9k
dWxlKCIsIHByaW50YWJsZU5hbWUobW9kdWxlTmFtZS5nZXQoKSksICIpXG4iKTsKLX0KLQotfSAv
LyBuYW1lc3BhY2UgSlNDCmRpZmYgLS1naXQgYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvcGFyc2Vy
L01vZHVsZVJlY29yZC5oIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL3BhcnNlci9Nb2R1bGVSZWNv
cmQuaApkZWxldGVkIGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggZWYwODFjMDNiMGE1YmRlNmYxNTU2
MjlkZjNmNTA2Y2FmM2NiMTcxNC4uMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMAotLS0gYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvcGFyc2VyL01vZHVsZVJlY29yZC5oCisr
KyAvZGV2L251bGwKQEAgLTEsMTI4ICswLDAgQEAKLS8qCi0gKiBDb3B5cmlnaHQgKEMpIDIwMTUg
QXBwbGUgSW5jLiBBbGwgcmlnaHRzIHJlc2VydmVkLgotICoKLSAqIFJlZGlzdHJpYnV0aW9uIGFu
ZCB1c2UgaW4gc291cmNlIGFuZCBiaW5hcnkgZm9ybXMsIHdpdGggb3Igd2l0aG91dAotICogbW9k
aWZpY2F0aW9uLCBhcmUgcGVybWl0dGVkIHByb3ZpZGVkIHRoYXQgdGhlIGZvbGxvd2luZyBjb25k
aXRpb25zCi0gKiBhcmUgbWV0OgotICogMS4gUmVkaXN0cmlidXRpb25zIG9mIHNvdXJjZSBjb2Rl
IG11c3QgcmV0YWluIHRoZSBhYm92ZSBjb3B5cmlnaHQKLSAqICAgIG5vdGljZSwgdGhpcyBsaXN0
IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lci4KLSAqIDIuIFJlZGlz
dHJpYnV0aW9ucyBpbiBiaW5hcnkgZm9ybSBtdXN0IHJlcHJvZHVjZSB0aGUgYWJvdmUgY29weXJp
Z2h0Ci0gKiAgICBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93
aW5nIGRpc2NsYWltZXIgaW4gdGhlCi0gKiAgICBkb2N1bWVudGF0aW9uIGFuZC9vciBvdGhlciBt
YXRlcmlhbHMgcHJvdmlkZWQgd2l0aCB0aGUgZGlzdHJpYnV0aW9uLgotICoKLSAqIFRISVMgU09G
VFdBUkUgSVMgUFJPVklERUQgQlkgQVBQTEUgSU5DLiBgYEFTIElTJycgQU5EIEFOWQotICogRVhQ
UkVTUyBPUiBJTVBMSUVEIFdBUlJBTlRJRVMsIElOQ0xVRElORywgQlVUIE5PVCBMSU1JVEVEIFRP
LCBUSEUKLSAqIElNUExJRUQgV0FSUkFOVElFUyBPRiBNRVJDSEFOVEFCSUxJVFkgQU5EIEZJVE5F
U1MgRk9SIEEgUEFSVElDVUxBUgotICogUFVSUE9TRSBBUkUgRElTQ0xBSU1FRC4gIElOIE5PIEVW
RU5UIFNIQUxMIEFQUExFIElOQy4gT1IKLSAqIENPTlRSSUJVVE9SUyBCRSBMSUFCTEUgRk9SIEFO
WSBESVJFQ1QsIElORElSRUNULCBJTkNJREVOVEFMLCBTUEVDSUFMLAotICogRVhFTVBMQVJZLCBP
UiBDT05TRVFVRU5USUFMIERBTUFHRVMgKElOQ0xVRElORywgQlVUIE5PVCBMSU1JVEVEIFRPLAot
ICogUFJPQ1VSRU1FTlQgT0YgU1VCU1RJVFVURSBHT09EUyBPUiBTRVJWSUNFUzsgTE9TUyBPRiBV
U0UsIERBVEEsIE9SCi0gKiBQUk9GSVRTOyBPUiBCVVNJTkVTUyBJTlRFUlJVUFRJT04pIEhPV0VW
RVIgQ0FVU0VEIEFORCBPTiBBTlkgVEhFT1JZCi0gKiBPRiBMSUFCSUxJVFksIFdIRVRIRVIgSU4g
Q09OVFJBQ1QsIFNUUklDVCBMSUFCSUxJVFksIE9SIFRPUlQKLSAqIChJTkNMVURJTkcgTkVHTElH
RU5DRSBPUiBPVEhFUldJU0UpIEFSSVNJTkcgSU4gQU5ZIFdBWSBPVVQgT0YgVEhFIFVTRQotICog
T0YgVEhJUyBTT0ZUV0FSRSwgRVZFTiBJRiBBRFZJU0VEIE9GIFRIRSBQT1NTSUJJTElUWSBPRiBT
VUNIIERBTUFHRS4KLSAqLwotCi0jaWZuZGVmIE1vZHVsZVJlY29yZF9oCi0jZGVmaW5lIE1vZHVs
ZVJlY29yZF9oCi0KLSNpbmNsdWRlICJOb2Rlcy5oIgotI2luY2x1ZGUgPHd0Zi9IYXNoTWFwLmg+
Ci0jaW5jbHVkZSA8d3RmL0xpc3RIYXNoU2V0Lmg+Ci0KLW5hbWVzcGFjZSBKU0MgewotCi0vLyBC
YXNlZCBvbiB0aGUgU291cmNlIFRleHQgTW9kdWxlIFJlY29yZAotLy8gaHR0cDovL3d3dy5lY21h
LWludGVybmF0aW9uYWwub3JnL2VjbWEtMjYyLzYuMC8jc2VjLXNvdXJjZS10ZXh0LW1vZHVsZS1y
ZWNvcmRzCi1jbGFzcyBNb2R1bGVSZWNvcmQgOiBwdWJsaWMgUmVmQ291bnRlZDxNb2R1bGVSZWNv
cmQ+IHsKLXB1YmxpYzoKLSAgICBzdHJ1Y3QgRXhwb3J0RW50cnkgewotICAgICAgICBlbnVtIGNs
YXNzIFR5cGUgewotICAgICAgICAgICAgTG9jYWwsCi0gICAgICAgICAgICBOYW1lc3BhY2UsCi0g
ICAgICAgICAgICBJbmRpcmVjdAotICAgICAgICB9OwotCi0gICAgICAgIHN0YXRpYyBFeHBvcnRF
bnRyeSBjcmVhdGVMb2NhbChjb25zdCBJZGVudGlmaWVyJiBleHBvcnROYW1lLCBjb25zdCBJZGVu
dGlmaWVyJiBsb2NhbE5hbWUsIGNvbnN0IFZhcmlhYmxlRW52aXJvbm1lbnRFbnRyeSYpOwotICAg
ICAgICBzdGF0aWMgRXhwb3J0RW50cnkgY3JlYXRlTmFtZXNwYWNlKGNvbnN0IElkZW50aWZpZXIm
IGV4cG9ydE5hbWUsIGNvbnN0IElkZW50aWZpZXImIG1vZHVsZU5hbWUpOwotICAgICAgICBzdGF0
aWMgRXhwb3J0RW50cnkgY3JlYXRlSW5kaXJlY3QoY29uc3QgSWRlbnRpZmllciYgZXhwb3J0TmFt
ZSwgY29uc3QgSWRlbnRpZmllciYgaW1wb3J0TmFtZSwgY29uc3QgSWRlbnRpZmllciYgbW9kdWxl
TmFtZSk7Ci0KLSAgICAgICAgVHlwZSB0eXBlOwotICAgICAgICBJZGVudGlmaWVyIGV4cG9ydE5h
bWU7Ci0gICAgICAgIElkZW50aWZpZXIgbW9kdWxlTmFtZTsKLSAgICAgICAgSWRlbnRpZmllciBp
bXBvcnROYW1lOwotICAgICAgICBJZGVudGlmaWVyIGxvY2FsTmFtZTsKLSAgICAgICAgVmFyaWFi
bGVFbnZpcm9ubWVudEVudHJ5IHZhcmlhYmxlOwotICAgIH07Ci0KLSAgICBzdHJ1Y3QgSW1wb3J0
RW50cnkgewotICAgICAgICBJZGVudGlmaWVyIG1vZHVsZVJlcXVlc3Q7Ci0gICAgICAgIElkZW50
aWZpZXIgaW1wb3J0TmFtZTsKLSAgICAgICAgSWRlbnRpZmllciBsb2NhbE5hbWU7Ci0KLSAgICAg
ICAgYm9vbCBpc05hbWVzcGFjZShWTSYgdm0pIGNvbnN0Ci0gICAgICAgIHsKLSAgICAgICAgICAg
IHJldHVybiBpbXBvcnROYW1lID09IHZtLnByb3BlcnR5TmFtZXMtPnRpbWVzSWRlbnRpZmllcjsK
LSAgICAgICAgfQotICAgIH07Ci0KLSAgICB0eXBlZGVmIFdURjo6TGlzdEhhc2hTZXQ8UmVmUHRy
PFVuaXF1ZWRTdHJpbmdJbXBsPiwgSWRlbnRpZmllclJlcEhhc2g+IE9yZGVyZWRJZGVudGlmaWVy
U2V0OwotICAgIHR5cGVkZWYgSGFzaE1hcDxSZWZQdHI8VW5pcXVlZFN0cmluZ0ltcGw+LCBJbXBv
cnRFbnRyeSwgSWRlbnRpZmllclJlcEhhc2gsIEhhc2hUcmFpdHM8UmVmUHRyPFVuaXF1ZWRTdHJp
bmdJbXBsPj4+IEltcG9ydE1hcDsKLSAgICB0eXBlZGVmIEhhc2hNYXA8UmVmUHRyPFVuaXF1ZWRT
dHJpbmdJbXBsPiwgRXhwb3J0RW50cnksIElkZW50aWZpZXJSZXBIYXNoLCBIYXNoVHJhaXRzPFJl
ZlB0cjxVbmlxdWVkU3RyaW5nSW1wbD4+PiBFeHBvcnRNYXA7Ci0KLSAgICBzdGF0aWMgUmVmPE1v
ZHVsZVJlY29yZD4gY3JlYXRlKCkKLSAgICB7Ci0gICAgICAgIHJldHVybiBhZG9wdFJlZigqbmV3
IE1vZHVsZVJlY29yZCk7Ci0gICAgfQotCi0gICAgdm9pZCBhcHBlbmRSZXF1ZXN0ZWRNb2R1bGUo
Y29uc3QgSWRlbnRpZmllciYpOwotICAgIHZvaWQgYWRkU3RhckV4cG9ydEVudHJ5KGNvbnN0IElk
ZW50aWZpZXImKTsKLSAgICB2b2lkIGFkZEltcG9ydEVudHJ5KGNvbnN0IEltcG9ydEVudHJ5Jik7
Ci0gICAgdm9pZCBhZGRFeHBvcnRFbnRyeShjb25zdCBFeHBvcnRFbnRyeSYpOwotCi0gICAgY29u
c3QgSW1wb3J0RW50cnkmIGxvb2tVcEltcG9ydEVudHJ5KGNvbnN0IFJlZlB0cjxVbmlxdWVkU3Ry
aW5nSW1wbD4mIGxvY2FsTmFtZSk7Ci0KLSAgICB2b2lkIGR1bXAoKTsKLQotcHJpdmF0ZToKLSAg
ICAvLyBNYXAgbG9jYWxOYW1lIC0+IEltcG9ydEVudHJ5LgotICAgIEltcG9ydE1hcCBtX2ltcG9y
dEVudHJpZXM7Ci0KLSAgICAvLyBNYXAgZXhwb3J0TmFtZSAtPiBFeHBvcnRFbnRyeS4KLSAgICBF
eHBvcnRNYXAgbV9leHBvcnRFbnRyaWVzOwotCi0gICAgSWRlbnRpZmllclNldCBtX3N0YXJFeHBv
cnRFbnRyaWVzOwotCi0gICAgLy8gU2F2ZSB0aGUgb2NjdXJyZW5jZSBvcmRlciBzaW5jZSB0aGUg
bW9kdWxlIGxvYWRlciBsb2FkcyBhbmQgcnVucyB0aGUgbW9kdWxlcyBpbiB0aGlzIG9yZGVyLgot
ICAgIC8vIGh0dHA6Ly93d3cuZWNtYS1pbnRlcm5hdGlvbmFsLm9yZy9lY21hLTI2Mi82LjAvI3Nl
Yy1tb2R1bGVldmFsdWF0aW9uCi0gICAgT3JkZXJlZElkZW50aWZpZXJTZXQgbV9yZXF1ZXN0ZWRN
b2R1bGVzOwotfTsKLQotaW5saW5lIHZvaWQgTW9kdWxlUmVjb3JkOjphcHBlbmRSZXF1ZXN0ZWRN
b2R1bGUoY29uc3QgSWRlbnRpZmllciYgbW9kdWxlTmFtZSkKLXsKLSAgICBtX3JlcXVlc3RlZE1v
ZHVsZXMuYWRkKG1vZHVsZU5hbWUuaW1wbCgpKTsKLX0KLQotaW5saW5lIHZvaWQgTW9kdWxlUmVj
b3JkOjphZGRJbXBvcnRFbnRyeShjb25zdCBJbXBvcnRFbnRyeSYgZW50cnkpCi17Ci0gICAgbV9p
bXBvcnRFbnRyaWVzLmFkZChlbnRyeS5sb2NhbE5hbWUuaW1wbCgpLCBlbnRyeSk7Ci19Ci0KLWlu
bGluZSB2b2lkIE1vZHVsZVJlY29yZDo6YWRkRXhwb3J0RW50cnkoY29uc3QgRXhwb3J0RW50cnkm
IGVudHJ5KQotewotICAgIG1fZXhwb3J0RW50cmllcy5hZGQoZW50cnkuZXhwb3J0TmFtZS5pbXBs
KCksIGVudHJ5KTsKLX0KLQotaW5saW5lIHZvaWQgTW9kdWxlUmVjb3JkOjphZGRTdGFyRXhwb3J0
RW50cnkoY29uc3QgSWRlbnRpZmllciYgbW9kdWxlTmFtZSkKLXsKLSAgICBtX3N0YXJFeHBvcnRF
bnRyaWVzLmFkZChtb2R1bGVOYW1lLmltcGwoKSk7Ci19Ci0KLWlubGluZSBhdXRvIE1vZHVsZVJl
Y29yZDo6bG9va1VwSW1wb3J0RW50cnkoY29uc3QgUmVmUHRyPFVuaXF1ZWRTdHJpbmdJbXBsPiYg
bG9jYWxOYW1lKSAtPiBjb25zdCBJbXBvcnRFbnRyeSYKLXsKLSAgICByZXR1cm4gKCptX2ltcG9y
dEVudHJpZXMuZmluZChsb2NhbE5hbWUpKS52YWx1ZTsKLX0KLQotfSAvLyBuYW1lc3BhY2UgSlND
Ci0KLSNlbmRpZiAvLyBNb2R1bGVSZWNvcmRfaApkaWZmIC0tZ2l0IGEvU291cmNlL0phdmFTY3Jp
cHRDb3JlL3BhcnNlci9Ob2Rlcy5oIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL3BhcnNlci9Ob2Rl
cy5oCmluZGV4IGVkNWZjMjcyNTM0YTI0NjQyZmQ2MmFlYjFhMWRmOTNlNjhjYWNjMjMuLjVkMGI3
NGU1OGRkZWQ2ZWVlOTIzYTNiYzA0MjhiNzZjZWU4YzFhZjIgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9K
YXZhU2NyaXB0Q29yZS9wYXJzZXIvTm9kZXMuaAorKysgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUv
cGFyc2VyL05vZGVzLmgKQEAgLTc5LDggKzc5LDYgQEAgbmFtZXNwYWNlIEpTQyB7CiAgICAgfTsK
ICAgICBpbmxpbmUgRmFsbFRocm91Z2hNb2RlIGludmVydChGYWxsVGhyb3VnaE1vZGUgZmFsbFRo
cm91Z2hNb2RlKSB7IHJldHVybiBzdGF0aWNfY2FzdDxGYWxsVGhyb3VnaE1vZGU+KCFmYWxsVGhy
b3VnaE1vZGUpOyB9CiAKLSAgICB0eXBlZGVmIEhhc2hTZXQ8UmVmUHRyPFVuaXF1ZWRTdHJpbmdJ
bXBsPiwgSWRlbnRpZmllclJlcEhhc2g+IElkZW50aWZpZXJTZXQ7Ci0KICAgICBuYW1lc3BhY2Ug
RGVjbGFyYXRpb25TdGFja3MgewogICAgICAgICB0eXBlZGVmIFZlY3RvcjxGdW5jdGlvbk1ldGFk
YXRhTm9kZSo+IEZ1bmN0aW9uU3RhY2s7CiAgICAgfQpkaWZmIC0tZ2l0IGEvU291cmNlL0phdmFT
Y3JpcHRDb3JlL3BhcnNlci9Ob2Rlc0FuYWx5emVNb2R1bGUuY3BwIGIvU291cmNlL0phdmFTY3Jp
cHRDb3JlL3BhcnNlci9Ob2Rlc0FuYWx5emVNb2R1bGUuY3BwCmluZGV4IDYzM2RlYWVjZTZhZjY2
NjU5ZDBlNzZhYzFhYTQxNjE1OWFiNzVhMzUuLmVkNDYxZGEyNjgzNGZiMzNjOTQ0MDIxNGE5OTVl
NDVjOGE4MTk0NTUgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9wYXJzZXIvTm9k
ZXNBbmFseXplTW9kdWxlLmNwcAorKysgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvcGFyc2VyL05v
ZGVzQW5hbHl6ZU1vZHVsZS5jcHAKQEAgLTI3LDggKzI3LDkgQEAKICNpbmNsdWRlICJOb2Rlcy5o
IgogI2luY2x1ZGUgIk5vZGVDb25zdHJ1Y3RvcnMuaCIKIAorI2luY2x1ZGUgIkpTQ0pTVmFsdWVJ
bmxpbmVzLmgiCisjaW5jbHVkZSAiSlNNb2R1bGVSZWNvcmQuaCIKICNpbmNsdWRlICJNb2R1bGVB
bmFseXplci5oIgotI2luY2x1ZGUgIk1vZHVsZVJlY29yZC5oIgogCiBuYW1lc3BhY2UgSlNDIHsK
IApAQCAtNDgsOSArNDksOSBAQCB2b2lkIFNvdXJjZUVsZW1lbnRzOjphbmFseXplTW9kdWxlKE1v
ZHVsZUFuYWx5emVyJiBhbmFseXplcikKIAogdm9pZCBJbXBvcnREZWNsYXJhdGlvbk5vZGU6OmFu
YWx5emVNb2R1bGUoTW9kdWxlQW5hbHl6ZXImIGFuYWx5emVyKQogewotICAgIGFuYWx5emVyLm1v
ZHVsZVJlY29yZCgpLmFwcGVuZFJlcXVlc3RlZE1vZHVsZShtX21vZHVsZU5hbWUtPm1vZHVsZU5h
bWUoKSk7CisgICAgYW5hbHl6ZXIubW9kdWxlUmVjb3JkKCktPmFwcGVuZFJlcXVlc3RlZE1vZHVs
ZShtX21vZHVsZU5hbWUtPm1vZHVsZU5hbWUoKSk7CiAgICAgZm9yIChhdXRvKiBzcGVjaWZpZXIg
OiBtX3NwZWNpZmllckxpc3QtPnNwZWNpZmllcnMoKSkgewotICAgICAgICBhbmFseXplci5tb2R1
bGVSZWNvcmQoKS5hZGRJbXBvcnRFbnRyeShNb2R1bGVSZWNvcmQ6OkltcG9ydEVudHJ5IHsKKyAg
ICAgICAgYW5hbHl6ZXIubW9kdWxlUmVjb3JkKCktPmFkZEltcG9ydEVudHJ5KEpTTW9kdWxlUmVj
b3JkOjpJbXBvcnRFbnRyeSB7CiAgICAgICAgICAgICBtX21vZHVsZU5hbWUtPm1vZHVsZU5hbWUo
KSwKICAgICAgICAgICAgIHNwZWNpZmllci0+aW1wb3J0ZWROYW1lKCksCiAgICAgICAgICAgICBz
cGVjaWZpZXItPmxvY2FsTmFtZSgpCkBAIC02MCw4ICs2MSw4IEBAIHZvaWQgSW1wb3J0RGVjbGFy
YXRpb25Ob2RlOjphbmFseXplTW9kdWxlKE1vZHVsZUFuYWx5emVyJiBhbmFseXplcikKIAogdm9p
ZCBFeHBvcnRBbGxEZWNsYXJhdGlvbk5vZGU6OmFuYWx5emVNb2R1bGUoTW9kdWxlQW5hbHl6ZXIm
IGFuYWx5emVyKQogewotICAgIGFuYWx5emVyLm1vZHVsZVJlY29yZCgpLmFwcGVuZFJlcXVlc3Rl
ZE1vZHVsZShtX21vZHVsZU5hbWUtPm1vZHVsZU5hbWUoKSk7Ci0gICAgYW5hbHl6ZXIubW9kdWxl
UmVjb3JkKCkuYWRkU3RhckV4cG9ydEVudHJ5KG1fbW9kdWxlTmFtZS0+bW9kdWxlTmFtZSgpKTsK
KyAgICBhbmFseXplci5tb2R1bGVSZWNvcmQoKS0+YXBwZW5kUmVxdWVzdGVkTW9kdWxlKG1fbW9k
dWxlTmFtZS0+bW9kdWxlTmFtZSgpKTsKKyAgICBhbmFseXplci5tb2R1bGVSZWNvcmQoKS0+YWRk
U3RhckV4cG9ydEVudHJ5KG1fbW9kdWxlTmFtZS0+bW9kdWxlTmFtZSgpKTsKIH0KIAogdm9pZCBF
eHBvcnREZWZhdWx0RGVjbGFyYXRpb25Ob2RlOjphbmFseXplTW9kdWxlKE1vZHVsZUFuYWx5emVy
JiBhbmFseXplcikKQEAgLTc2LDcgKzc3LDcgQEAgdm9pZCBFeHBvcnRMb2NhbERlY2xhcmF0aW9u
Tm9kZTo6YW5hbHl6ZU1vZHVsZShNb2R1bGVBbmFseXplciYpCiB2b2lkIEV4cG9ydE5hbWVkRGVj
bGFyYXRpb25Ob2RlOjphbmFseXplTW9kdWxlKE1vZHVsZUFuYWx5emVyJiBhbmFseXplcikKIHsK
ICAgICBpZiAobV9tb2R1bGVOYW1lKQotICAgICAgICBhbmFseXplci5tb2R1bGVSZWNvcmQoKS5h
cHBlbmRSZXF1ZXN0ZWRNb2R1bGUobV9tb2R1bGVOYW1lLT5tb2R1bGVOYW1lKCkpOworICAgICAg
ICBhbmFseXplci5tb2R1bGVSZWNvcmQoKS0+YXBwZW5kUmVxdWVzdGVkTW9kdWxlKG1fbW9kdWxl
TmFtZS0+bW9kdWxlTmFtZSgpKTsKIAogICAgIGZvciAoYXV0byogc3BlY2lmaWVyIDogbV9zcGVj
aWZpZXJMaXN0LT5zcGVjaWZpZXJzKCkpIHsKICAgICAgICAgaWYgKG1fbW9kdWxlTmFtZSkgewpA
QCAtODQsNyArODUsNyBAQCB2b2lkIEV4cG9ydE5hbWVkRGVjbGFyYXRpb25Ob2RlOjphbmFseXpl
TW9kdWxlKE1vZHVsZUFuYWx5emVyJiBhbmFseXplcikKICAgICAgICAgICAgIC8vCiAgICAgICAg
ICAgICAvLyBJbiB0aGlzIGNhc2UsIG5vIGxvY2FsIHZhcmlhYmxlIG5hbWVzIGFyZSBpbXBvcnRl
ZCBpbnRvIHRoZSBjdXJyZW50IG1vZHVsZS4KICAgICAgICAgICAgIC8vICJ2IiBpbmRpcmVjdGx5
IHBvaW50cyB0aGUgYmluZGluZyBpbiAibW9kIi4KLSAgICAgICAgICAgIGFuYWx5emVyLm1vZHVs
ZVJlY29yZCgpLmFkZEV4cG9ydEVudHJ5KE1vZHVsZVJlY29yZDo6RXhwb3J0RW50cnk6OmNyZWF0
ZUluZGlyZWN0KHNwZWNpZmllci0+ZXhwb3J0ZWROYW1lKCksIHNwZWNpZmllci0+bG9jYWxOYW1l
KCksIG1fbW9kdWxlTmFtZS0+bW9kdWxlTmFtZSgpKSk7CisgICAgICAgICAgICBhbmFseXplci5t
b2R1bGVSZWNvcmQoKS0+YWRkRXhwb3J0RW50cnkoSlNNb2R1bGVSZWNvcmQ6OkV4cG9ydEVudHJ5
OjpjcmVhdGVJbmRpcmVjdChzcGVjaWZpZXItPmV4cG9ydGVkTmFtZSgpLCBzcGVjaWZpZXItPmxv
Y2FsTmFtZSgpLCBtX21vZHVsZU5hbWUtPm1vZHVsZU5hbWUoKSkpOwogICAgICAgICAgICAgY29u
dGludWU7CiAgICAgICAgIH0KIApkaWZmIC0tZ2l0IGEvU291cmNlL0phdmFTY3JpcHRDb3JlL3J1
bnRpbWUvQ29tbW9uSWRlbnRpZmllcnMuY3BwIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRp
bWUvQ29tbW9uSWRlbnRpZmllcnMuY3BwCmluZGV4IGZjNmU2MmNhMDQ1ZTM2MjljZjJhZDNiNmJm
Y2I3M2Q1ZGRmZjBjZTEuLmFhMzkyY2ViOGQxYTA2NWE5MjUyYWE3NzQ0ZGFiOGQ5YjE2MDU0ZTkg
MTAwNjQ0Ci0tLSBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL0NvbW1vbklkZW50aWZp
ZXJzLmNwcAorKysgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9Db21tb25JZGVudGlm
aWVycy5jcHAKQEAgLTY4LDE0ICs2OCwxNCBAQCBib29sIENvbW1vbklkZW50aWZpZXJzOjppc1By
aXZhdGVOYW1lKGNvbnN0IElkZW50aWZpZXImIGlkZW50KSBjb25zdAogICAgIHJldHVybiBtX2J1
aWx0aW5OYW1lcy0+aXNQcml2YXRlTmFtZShpZGVudCk7CiB9CiAKLWNvbnN0IElkZW50aWZpZXIq
IENvbW1vbklkZW50aWZpZXJzOjpnZXRQcml2YXRlTmFtZShjb25zdCBJZGVudGlmaWVyJiBpZGVu
dCkgY29uc3QKK2NvbnN0IElkZW50aWZpZXIqIENvbW1vbklkZW50aWZpZXJzOjpsb29rVXBQcml2
YXRlTmFtZShjb25zdCBJZGVudGlmaWVyJiBpZGVudCkgY29uc3QKIHsKLSAgICByZXR1cm4gbV9i
dWlsdGluTmFtZXMtPmdldFByaXZhdGVOYW1lKGlkZW50KTsKKyAgICByZXR1cm4gbV9idWlsdGlu
TmFtZXMtPmxvb2tVcFByaXZhdGVOYW1lKGlkZW50KTsKIH0KICAgICAKLUlkZW50aWZpZXIgQ29t
bW9uSWRlbnRpZmllcnM6OmdldFB1YmxpY05hbWUoY29uc3QgSWRlbnRpZmllciYgaWRlbnQpIGNv
bnN0CitJZGVudGlmaWVyIENvbW1vbklkZW50aWZpZXJzOjpsb29rVXBQdWJsaWNOYW1lKGNvbnN0
IElkZW50aWZpZXImIGlkZW50KSBjb25zdAogewotICAgIHJldHVybiBtX2J1aWx0aW5OYW1lcy0+
Z2V0UHVibGljTmFtZShpZGVudCk7CisgICAgcmV0dXJuIG1fYnVpbHRpbk5hbWVzLT5sb29rVXBQ
dWJsaWNOYW1lKGlkZW50KTsKIH0KIAogCmRpZmYgLS1naXQgYS9Tb3VyY2UvSmF2YVNjcmlwdENv
cmUvcnVudGltZS9Db21tb25JZGVudGlmaWVycy5oIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL3J1
bnRpbWUvQ29tbW9uSWRlbnRpZmllcnMuaAppbmRleCAxNmE1MjMwMGI5YWU5MjQ5NjVlMmRhMjhk
YThiYmU3MjIwZjIzMjc3Li4xNjNiMTE2MTA0MWNjZGIzNWFkNTI5NzZjYWZlNmJkMTFkZmM4Yjc3
IDEwMDY0NAotLS0gYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9Db21tb25JZGVudGlm
aWVycy5oCisrKyBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL0NvbW1vbklkZW50aWZp
ZXJzLmgKQEAgLTQyLDYgKzQyLDcgQEAKICAgICBtYWNybyhJbmZpbml0eSkgXAogICAgIG1hY3Jv
KEludGwpIFwKICAgICBtYWNybyhKU09OKSBcCisgICAgbWFjcm8oTG9hZGVyKSBcCiAgICAgbWFj
cm8oTWFwKVwKICAgICBtYWNybyhNYXBJdGVyYXRvcilcCiAgICAgbWFjcm8oTWF0aCkgXApAQCAt
MjgxLDYgKzI4Miw3IEBACiAgICAgbWFjcm8oTnVtYmVyKSBcCiAgICAgbWFjcm8oQXJyYXkpIFwK
ICAgICBtYWNybyhTdHJpbmcpIFwKKyAgICBtYWNybyhNYXApIFwKICAgICBtYWNybyhQcm9taXNl
KSBcCiAgICAgbWFjcm8oSW50ZXJuYWxQcm9taXNlKSBcCiAgICAgbWFjcm8oYWJzKSBcCkBAIC0z
MDMsNiArMzA1LDggQEAKICAgICBtYWNybyhjYXBhYmlsaXRpZXMpIFwKICAgICBtYWNybyhzdGFy
RGVmYXVsdCkgXAogICAgIG1hY3JvKEluc3BlY3Rvckluc3RydW1lbnRhdGlvbikgXAorICAgIG1h
Y3JvKGdldCkgXAorICAgIG1hY3JvKHNldCkgXAogCiAKIG5hbWVzcGFjZSBKU0MgewpAQCAtMzQ5
LDggKzM1Myw4IEBAIG5hbWVzcGFjZSBKU0MgewogICAgICAgICBib29sIGlzUHJpdmF0ZU5hbWUo
VW5pcXVlZFN0cmluZ0ltcGwmIHVpZCkgY29uc3Q7CiAgICAgICAgIGJvb2wgaXNQcml2YXRlTmFt
ZShjb25zdCBJZGVudGlmaWVyJikgY29uc3Q7CiAKLSAgICAgICAgY29uc3QgSWRlbnRpZmllciog
Z2V0UHJpdmF0ZU5hbWUoY29uc3QgSWRlbnRpZmllciYpIGNvbnN0OwotICAgICAgICBJZGVudGlm
aWVyIGdldFB1YmxpY05hbWUoY29uc3QgSWRlbnRpZmllciYpIGNvbnN0OworICAgICAgICBjb25z
dCBJZGVudGlmaWVyKiBsb29rVXBQcml2YXRlTmFtZShjb25zdCBJZGVudGlmaWVyJikgY29uc3Q7
CisgICAgICAgIElkZW50aWZpZXIgbG9va1VwUHVibGljTmFtZShjb25zdCBJZGVudGlmaWVyJikg
Y29uc3Q7CiAKICAgICAgICAgY29uc3QgQnl0ZWNvZGVJbnRyaW5zaWNSZWdpc3RyeSYgYnl0ZWNv
ZGVJbnRyaW5zaWNSZWdpc3RyeSgpIGNvbnN0IHsgcmV0dXJuIG1fYnl0ZWNvZGVJbnRyaW5zaWNS
ZWdpc3RyeTsgfQogCmRpZmYgLS1naXQgYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9D
b21wbGV0aW9uLmNwcCBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL0NvbXBsZXRpb24u
Y3BwCmluZGV4IGEzZGFlZTYwMzQzYWMxNGIxNGFkMDMwNGViZGM5YTI1YWFiMTU3MjMuLjJlZGU0
MWNjMWZhNzY1MThkNWUzMjFkYmY3MjBiNDNjMTc2NGMyNjQgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9K
YXZhU2NyaXB0Q29yZS9ydW50aW1lL0NvbXBsZXRpb24uY3BwCisrKyBiL1NvdXJjZS9KYXZhU2Ny
aXB0Q29yZS9ydW50aW1lL0NvbXBsZXRpb24uY3BwCkBAIC0yOCwxMSArMjgsMTIgQEAKICNpbmNs
dWRlICJEZWJ1Z2dlci5oIgogI2luY2x1ZGUgIkV4Y2VwdGlvbi5oIgogI2luY2x1ZGUgIkludGVy
cHJldGVyLmgiCisjaW5jbHVkZSAiSlNDSW5saW5lcy5oIgogI2luY2x1ZGUgIkpTR2xvYmFsT2Jq
ZWN0LmgiCiAjaW5jbHVkZSAiSlNMb2NrLmgiCi0jaW5jbHVkZSAiSlNDSW5saW5lcy5oIgorI2lu
Y2x1ZGUgIkpTTW9kdWxlUmVjb3JkLmgiCiAjaW5jbHVkZSAiTW9kdWxlQW5hbHl6ZXIuaCIKLSNp
bmNsdWRlICJNb2R1bGVSZWNvcmQuaCIKKyNpbmNsdWRlICJNb2R1bGVMb2FkZXJPYmplY3QuaCIK
ICNpbmNsdWRlICJQYXJzZXIuaCIKICNpbmNsdWRlIDx3dGYvV1RGVGhyZWFkRGF0YS5oPgogCkBA
IC02Myw4ICs2NCw5IEBAIGJvb2wgY2hlY2tTeW50YXgoVk0mIHZtLCBjb25zdCBTb3VyY2VDb2Rl
JiBzb3VyY2UsIFBhcnNlckVycm9yJiBlcnJvcikKICAgICAgICAgSlNQYXJzZXJTdHJpY3RNb2Rl
OjpOb3RTdHJpY3QsIFNvdXJjZVBhcnNlTW9kZTo6UHJvZ3JhbU1vZGUsIGVycm9yKTsKIH0KIAot
Ym9vbCBjaGVja01vZHVsZVN5bnRheChWTSYgdm0sIGNvbnN0IFNvdXJjZUNvZGUmIHNvdXJjZSwg
UGFyc2VyRXJyb3ImIGVycm9yKQorYm9vbCBjaGVja01vZHVsZVN5bnRheChFeGVjU3RhdGUqIGV4
ZWMsIGNvbnN0IFNvdXJjZUNvZGUmIHNvdXJjZSwgUGFyc2VyRXJyb3ImIGVycm9yKQogeworICAg
IFZNJiB2bSA9IGV4ZWMtPnZtKCk7CiAgICAgSlNMb2NrSG9sZGVyIGxvY2sodm0pOwogICAgIFJF
TEVBU0VfQVNTRVJUKHZtLmF0b21pY1N0cmluZ1RhYmxlKCkgPT0gd3RmVGhyZWFkRGF0YSgpLmF0
b21pY1N0cmluZ1RhYmxlKCkpOwogICAgIHN0ZDo6dW5pcXVlX3B0cjxNb2R1bGVQcm9ncmFtTm9k
ZT4gbW9kdWxlUHJvZ3JhbU5vZGUgPSBwYXJzZTxNb2R1bGVQcm9ncmFtTm9kZT4oCkBAIC03Myw3
ICs3NSw4IEBAIGJvb2wgY2hlY2tNb2R1bGVTeW50YXgoVk0mIHZtLCBjb25zdCBTb3VyY2VDb2Rl
JiBzb3VyY2UsIFBhcnNlckVycm9yJiBlcnJvcikKICAgICBpZiAoIW1vZHVsZVByb2dyYW1Ob2Rl
KQogICAgICAgICByZXR1cm4gZmFsc2U7CiAKLSAgICBNb2R1bGVBbmFseXplciBtb2R1bGVBbmFs
eXplcih2bSwgbW9kdWxlUHJvZ3JhbU5vZGUtPnZhckRlY2xhcmF0aW9ucygpLCBtb2R1bGVQcm9n
cmFtTm9kZS0+bGV4aWNhbFZhcmlhYmxlcygpKTsKKyAgICBQcml2YXRlTmFtZSBwcml2YXRlTmFt
ZShQcml2YXRlTmFtZTo6RGVzY3JpcHRpb24sICJFbnRyeVBvaW50TW9kdWxlIik7CisgICAgTW9k
dWxlQW5hbHl6ZXIgbW9kdWxlQW5hbHl6ZXIoZXhlYywgSWRlbnRpZmllcjo6ZnJvbVVpZChwcml2
YXRlTmFtZSksIG1vZHVsZVByb2dyYW1Ob2RlLT52YXJEZWNsYXJhdGlvbnMoKSwgbW9kdWxlUHJv
Z3JhbU5vZGUtPmxleGljYWxWYXJpYWJsZXMoKSk7CiAgICAgbW9kdWxlQW5hbHl6ZXIuYW5hbHl6
ZSgqbW9kdWxlUHJvZ3JhbU5vZGUpOwogICAgIHJldHVybiB0cnVlOwogfQpAQCAtMTA4LDQgKzEx
MSw0MyBAQCBKU1ZhbHVlIGV2YWx1YXRlKEV4ZWNTdGF0ZSogZXhlYywgY29uc3QgU291cmNlQ29k
ZSYgc291cmNlLCBKU1ZhbHVlIHRoaXNWYWx1ZSwgTgogICAgIHJldHVybiByZXN1bHQ7CiB9CiAK
K3ZvaWQgZXZhbHVhdGVNb2R1bGUoRXhlY1N0YXRlKiBleGVjLCBjb25zdCBTb3VyY2VDb2RlJiBz
b3VyY2UsIE5ha2VkUHRyPEV4Y2VwdGlvbj4mIHJldHVybmVkRXhjZXB0aW9uKQoreworICAgIEpT
TG9ja0hvbGRlciBsb2NrKGV4ZWMpOworICAgIFJFTEVBU0VfQVNTRVJUKGV4ZWMtPnZtKCkuYXRv
bWljU3RyaW5nVGFibGUoKSA9PSB3dGZUaHJlYWREYXRhKCkuYXRvbWljU3RyaW5nVGFibGUoKSk7
CisgICAgUkVMRUFTRV9BU1NFUlQoIWV4ZWMtPnZtKCkuaXNDb2xsZWN0b3JCdXN5KCkpOworCisg
ICAgQ29kZVByb2ZpbGluZyBwcm9maWxlKHNvdXJjZSk7CisKKyAgICBKU0dsb2JhbE9iamVjdCog
Z2xvYmFsT2JqZWN0ID0gZXhlYy0+dm1FbnRyeUdsb2JhbE9iamVjdCgpOworCisgICAgLy8gR2Vu
ZXJhdGUgdGhlIHVuaXF1ZSBrZXkgZm9yIHRoZSBzb3VyY2UtcHJvdmlkZWQgbW9kdWxlLgorICAg
IFByaXZhdGVOYW1lIHByaXZhdGVOYW1lKFByaXZhdGVOYW1lOjpEZXNjcmlwdGlvbiwgIkVudHJ5
UG9pbnRNb2R1bGUiKTsKKyAgICBTeW1ib2wqIGtleSA9IFN5bWJvbDo6Y3JlYXRlKGV4ZWMtPnZt
KCksICpwcml2YXRlTmFtZS51aWQoKSk7CisKKyAgICBNb2R1bGVMb2FkZXJPYmplY3QqIG1vZHVs
ZUxvYWRlciA9IGdsb2JhbE9iamVjdC0+bW9kdWxlTG9hZGVyKCk7CisKKyAgICAvLyBJbnNlcnQg
dGhlIGdpdmVuIHNvdXJjZSBjb2RlIHRvIHRoZSBNb2R1bGVMb2FkZXIgcmVnaXN0cnkgYXMgdGhl
IGZldGNoZWQgcmVnaXN0cnkgZW50cnkuCisgICAgbW9kdWxlTG9hZGVyLT5wcm92aWRlKGV4ZWMs
IGtleSwgTW9kdWxlTG9hZGVyT2JqZWN0OjpTdGF0dXM6OkZldGNoLCBzb3VyY2UudG9TdHJpbmco
KSk7CisgICAgaWYgKGV4ZWMtPmhhZEV4Y2VwdGlvbigpKSB7CisgICAgICAgIHJldHVybmVkRXhj
ZXB0aW9uID0gZXhlYy0+ZXhjZXB0aW9uKCk7CisgICAgICAgIGV4ZWMtPmNsZWFyRXhjZXB0aW9u
KCk7CisgICAgICAgIHJldHVybjsKKyAgICB9CisKKyAgICAvLyBGSVhNRTogTm93LCB3ZSBkb24n
dCBpbXBsZW1lbnQgdGhlIGxpbmtpbmcgcGhhc2UgeWV0LgorICAgIC8vIFNvIGhlcmUsIHdlIGp1
c3QgY2FsbCByZXF1ZXN0SW5zdGFudGlhdGVBbGwgdG8gb25seSBwZXJmb3JtIHRoZSBtb2R1bGUg
bG9hZGluZy4KKyAgICAvLyBBdCBsYXN0LCBpdCBzaG91bGQgYmUgcmVwbGFjZWQgd2l0aCByZXF1
ZXN0UmVhZHkuCisgICAgLy8gaHR0cHM6Ly9idWdzLndlYmtpdC5vcmcvc2hvd19idWcuY2dpP2lk
PTE0ODE3MgorICAgIG1vZHVsZUxvYWRlci0+cmVxdWVzdEluc3RhbnRpYXRlQWxsKGV4ZWMsIGtl
eSk7CisKKyAgICAvLyBGSVhNRTogV2Ugc2hvdWxkIGFsc28gaGFuZGxlIHRoZSBhc3luY2hyb25v
dXMgU3ludGF4IEVycm9ycyB0aGF0IHdpbGwgYmUgZGVsaXZlcmVkIGJ5IHRoZSByZWplY3RlZCBw
cm9taXNlLgorICAgIC8vIGh0dHBzOi8vYnVncy53ZWJraXQub3JnL3Nob3dfYnVnLmNnaT9pZD0x
NDgxNzMKKyAgICBpZiAoZXhlYy0+aGFkRXhjZXB0aW9uKCkpIHsKKyAgICAgICAgcmV0dXJuZWRF
eGNlcHRpb24gPSBleGVjLT5leGNlcHRpb24oKTsKKyAgICAgICAgZXhlYy0+Y2xlYXJFeGNlcHRp
b24oKTsKKyAgICAgICAgcmV0dXJuOworICAgIH0KK30KKwogfSAvLyBuYW1lc3BhY2UgSlNDCmRp
ZmYgLS1naXQgYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9Db21wbGV0aW9uLmggYi9T
b3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9Db21wbGV0aW9uLmgKaW5kZXggNzAyZWQ5ZmFi
MGM3OTFmYWUxNTUwNTYyN2JjNzMxYWRiYWUzYTVmZC4uZGUzMmQ2M2U2M2FjN2NlZDQ5ZDgxN2Uy
M2MwYjg3ODg2N2EwNWE2OSAxMDA2NDQKLS0tIGEvU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRp
bWUvQ29tcGxldGlvbi5oCisrKyBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL0NvbXBs
ZXRpb24uaApAQCAtMzcsMTMgKzM3LDE0IEBAIGNsYXNzIFZNOwogCiBKU19FWFBPUlRfUFJJVkFU
RSBib29sIGNoZWNrU3ludGF4KFZNJiwgY29uc3QgU291cmNlQ29kZSYsIFBhcnNlckVycm9yJik7
CiBKU19FWFBPUlRfUFJJVkFURSBib29sIGNoZWNrU3ludGF4KEV4ZWNTdGF0ZSosIGNvbnN0IFNv
dXJjZUNvZGUmLCBKU1ZhbHVlKiBleGNlcHRpb24gPSAwKTsKLUpTX0VYUE9SVF9QUklWQVRFIGJv
b2wgY2hlY2tNb2R1bGVTeW50YXgoVk0mLCBjb25zdCBTb3VyY2VDb2RlJiwgUGFyc2VyRXJyb3Im
KTsKK0pTX0VYUE9SVF9QUklWQVRFIGJvb2wgY2hlY2tNb2R1bGVTeW50YXgoRXhlY1N0YXRlKiwg
Y29uc3QgU291cmNlQ29kZSYsIFBhcnNlckVycm9yJik7CiBKU19FWFBPUlRfUFJJVkFURSBKU1Zh
bHVlIGV2YWx1YXRlKEV4ZWNTdGF0ZSosIGNvbnN0IFNvdXJjZUNvZGUmLCBKU1ZhbHVlIHRoaXNW
YWx1ZSwgTmFrZWRQdHI8RXhjZXB0aW9uPiYgcmV0dXJuZWRFeGNlcHRpb24pOwogaW5saW5lIEpT
VmFsdWUgZXZhbHVhdGUoRXhlY1N0YXRlKiBleGVjLCBjb25zdCBTb3VyY2VDb2RlJiBzb3VyY2VD
b2RlLCBKU1ZhbHVlIHRoaXNWYWx1ZSA9IEpTVmFsdWUoKSkKIHsKICAgICBOYWtlZFB0cjxFeGNl
cHRpb24+IHVudXNlZDsKICAgICByZXR1cm4gZXZhbHVhdGUoZXhlYywgc291cmNlQ29kZSwgdGhp
c1ZhbHVlLCB1bnVzZWQpOwogfQorSlNfRVhQT1JUX1BSSVZBVEUgdm9pZCBldmFsdWF0ZU1vZHVs
ZShFeGVjU3RhdGUqLCBjb25zdCBTb3VyY2VDb2RlJiwgTmFrZWRQdHI8RXhjZXB0aW9uPiYgcmV0
dXJuZWRFeGNlcHRpb24pOwogCiB9IC8vIG5hbWVzcGFjZSBKU0MKIApkaWZmIC0tZ2l0IGEvU291
cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvRXhjZXB0aW9uSGVscGVycy5jcHAgYi9Tb3VyY2Uv
SmF2YVNjcmlwdENvcmUvcnVudGltZS9FeGNlcHRpb25IZWxwZXJzLmNwcAppbmRleCA0NmMwY2Vm
OTM5MmE0YWQ3YzBiMDBhOWEwODQ3ZTBiOWFlZmM1ZmFlLi5iNzg1OWJmZTNlOGVhZmQxZWM2NGFi
NWZiZmVhZjI1NzJhZDI3YzE3IDEwMDY0NAotLS0gYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVu
dGltZS9FeGNlcHRpb25IZWxwZXJzLmNwcAorKysgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVu
dGltZS9FeGNlcHRpb25IZWxwZXJzLmNwcApAQCAtNzMsNyArNzMsNyBAQCBKU09iamVjdCogY3Jl
YXRlU3RhY2tPdmVyZmxvd0Vycm9yKEV4ZWNTdGF0ZSogZXhlYykKIEpTT2JqZWN0KiBjcmVhdGVV
bmRlZmluZWRWYXJpYWJsZUVycm9yKEV4ZWNTdGF0ZSogZXhlYywgY29uc3QgSWRlbnRpZmllciYg
aWRlbnQpCiB7CiAgICAgaWYgKGV4ZWMtPnByb3BlcnR5TmFtZXMoKS5pc1ByaXZhdGVOYW1lKGlk
ZW50KSkgewotICAgICAgICBTdHJpbmcgbWVzc2FnZShtYWtlU3RyaW5nKCJDYW4ndCBmaW5kIHBy
aXZhdGUgdmFyaWFibGU6IEAiLCBleGVjLT5wcm9wZXJ0eU5hbWVzKCkuZ2V0UHVibGljTmFtZShp
ZGVudCkuc3RyaW5nKCkpKTsKKyAgICAgICAgU3RyaW5nIG1lc3NhZ2UobWFrZVN0cmluZygiQ2Fu
J3QgZmluZCBwcml2YXRlIHZhcmlhYmxlOiBAIiwgZXhlYy0+cHJvcGVydHlOYW1lcygpLmxvb2tV
cFB1YmxpY05hbWUoaWRlbnQpLnN0cmluZygpKSk7CiAgICAgICAgIHJldHVybiBjcmVhdGVSZWZl
cmVuY2VFcnJvcihleGVjLCBtZXNzYWdlKTsKICAgICB9CiAgICAgU3RyaW5nIG1lc3NhZ2UobWFr
ZVN0cmluZygiQ2FuJ3QgZmluZCB2YXJpYWJsZTogIiwgaWRlbnQuc3RyaW5nKCkpKTsKZGlmZiAt
LWdpdCBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL0lkZW50aWZpZXIuaCBiL1NvdXJj
ZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL0lkZW50aWZpZXIuaAppbmRleCA2MWRlNjUzNmE2ZmE0
YzI5YWNhNGRmMTRiN2Q2ZmVjNGQyYTUwM2U2Li44ODljYTZiMjJlNDM3OTM2MmYyNTgwNWZkMDVl
NmY4NGFhNjdiYmE2IDEwMDY0NAotLS0gYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9J
ZGVudGlmaWVyLmgKKysrIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvSWRlbnRpZmll
ci5oCkBAIC0yOTIsNiArMjkyLDcgQEAgc3RydWN0IElkZW50aWZpZXJNYXBJbmRleEhhc2hUcmFp
dHMgOiBIYXNoVHJhaXRzPGludD4gewogICAgIHN0YXRpYyBjb25zdCBib29sIGVtcHR5VmFsdWVJ
c1plcm8gPSBmYWxzZTsKIH07CiAKK3R5cGVkZWYgSGFzaFNldDxSZWZQdHI8VW5pcXVlZFN0cmlu
Z0ltcGw+LCBJZGVudGlmaWVyUmVwSGFzaD4gSWRlbnRpZmllclNldDsKIHR5cGVkZWYgSGFzaE1h
cDxSZWZQdHI8VW5pcXVlZFN0cmluZ0ltcGw+LCBpbnQsIElkZW50aWZpZXJSZXBIYXNoLCBIYXNo
VHJhaXRzPFJlZlB0cjxVbmlxdWVkU3RyaW5nSW1wbD4+LCBJZGVudGlmaWVyTWFwSW5kZXhIYXNo
VHJhaXRzPiBJZGVudGlmaWVyTWFwOwogdHlwZWRlZiBIYXNoTWFwPFVuaXF1ZWRTdHJpbmdJbXBs
KiwgaW50LCBJZGVudGlmaWVyUmVwSGFzaCwgSGFzaFRyYWl0czxVbmlxdWVkU3RyaW5nSW1wbCo+
LCBJZGVudGlmaWVyTWFwSW5kZXhIYXNoVHJhaXRzPiBCb3Jyb3dlZElkZW50aWZpZXJNYXA7CiAK
ZGlmZiAtLWdpdCBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL0pTR2xvYmFsT2JqZWN0
LmNwcCBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL0pTR2xvYmFsT2JqZWN0LmNwcApp
bmRleCBlMjg1ZjY2ZGYzNDI1NzQ2ODdlOGJhZmU5NjU1ZWEwOTExNGQ4Njg0Li45M2VlMWZkNzRi
OTkyNTkwNDFjYTFlODYyZjYzMTFmNjUwOTgzODlhIDEwMDY0NAotLS0gYS9Tb3VyY2UvSmF2YVNj
cmlwdENvcmUvcnVudGltZS9KU0dsb2JhbE9iamVjdC5jcHAKKysrIGIvU291cmNlL0phdmFTY3Jp
cHRDb3JlL3J1bnRpbWUvSlNHbG9iYWxPYmplY3QuY3BwCkBAIC04NCw2ICs4NCw3IEBACiAjaW5j
bHVkZSAiSlNMb2NrLmgiCiAjaW5jbHVkZSAiSlNNYXAuaCIKICNpbmNsdWRlICJKU01hcEl0ZXJh
dG9yLmgiCisjaW5jbHVkZSAiSlNNb2R1bGVSZWNvcmQuaCIKICNpbmNsdWRlICJKU09OT2JqZWN0
LmgiCiAjaW5jbHVkZSAiSlNQcm9taXNlLmgiCiAjaW5jbHVkZSAiSlNQcm9taXNlQ29uc3RydWN0
b3IuaCIKQEAgLTEwNyw2ICsxMDgsNyBAQAogI2luY2x1ZGUgIk1hcFByb3RvdHlwZS5oIgogI2lu
Y2x1ZGUgIk1hdGhPYmplY3QuaCIKICNpbmNsdWRlICJNaWNyb3Rhc2suaCIKKyNpbmNsdWRlICJN
b2R1bGVMb2FkZXJPYmplY3QuaCIKICNpbmNsdWRlICJOYXRpdmVFcnJvckNvbnN0cnVjdG9yLmgi
CiAjaW5jbHVkZSAiTmF0aXZlRXJyb3JQcm90b3R5cGUuaCIKICNpbmNsdWRlICJOdWxsR2V0dGVy
RnVuY3Rpb24uaCIKQEAgLTE2MCw3ICsxNjIsNyBAQCBuYW1lc3BhY2UgSlNDIHsKIAogY29uc3Qg
Q2xhc3NJbmZvIEpTR2xvYmFsT2JqZWN0OjpzX2luZm8gPSB7ICJHbG9iYWxPYmplY3QiLCAmQmFz
ZTo6c19pbmZvLCAmZ2xvYmFsT2JqZWN0VGFibGUsIENSRUFURV9NRVRIT0RfVEFCTEUoSlNHbG9i
YWxPYmplY3QpIH07CiAKLWNvbnN0IEdsb2JhbE9iamVjdE1ldGhvZFRhYmxlIEpTR2xvYmFsT2Jq
ZWN0OjpzX2dsb2JhbE9iamVjdE1ldGhvZFRhYmxlID0geyAmYWxsb3dzQWNjZXNzRnJvbSwgJnN1
cHBvcnRzUHJvZmlsaW5nLCAmc3VwcG9ydHNSaWNoU291cmNlSW5mbywgJnNob3VsZEludGVycnVw
dFNjcmlwdCwgJmphdmFTY3JpcHRSdW50aW1lRmxhZ3MsIG51bGxwdHIsICZzaG91bGRJbnRlcnJ1
cHRTY3JpcHRCZWZvcmVUaW1lb3V0IH07Citjb25zdCBHbG9iYWxPYmplY3RNZXRob2RUYWJsZSBK
U0dsb2JhbE9iamVjdDo6c19nbG9iYWxPYmplY3RNZXRob2RUYWJsZSA9IHsgJmFsbG93c0FjY2Vz
c0Zyb20sICZzdXBwb3J0c1Byb2ZpbGluZywgJnN1cHBvcnRzUmljaFNvdXJjZUluZm8sICZzaG91
bGRJbnRlcnJ1cHRTY3JpcHQsICZqYXZhU2NyaXB0UnVudGltZUZsYWdzLCBudWxscHRyLCAmc2hv
dWxkSW50ZXJydXB0U2NyaXB0QmVmb3JlVGltZW91dCwgbnVsbHB0ciwgbnVsbHB0ciwgbnVsbHB0
ciwgbnVsbHB0ciB9OwogCiAvKiBTb3VyY2UgZm9yIEpTR2xvYmFsT2JqZWN0Lmx1dC5oCiBAYmVn
aW4gZ2xvYmFsT2JqZWN0VGFibGUKQEAgLTMyMCw2ICszMjIsNyBAQCB2b2lkIEpTR2xvYmFsT2Jq
ZWN0Ojppbml0KFZNJiB2bSkKICAgICBtX291dE9mQmFuZEFyZ3VtZW50c1N0cnVjdHVyZS5zZXQo
dm0sIHRoaXMsIENsb25lZEFyZ3VtZW50czo6Y3JlYXRlU3RydWN0dXJlKHZtLCB0aGlzLCBtX29i
amVjdFByb3RvdHlwZS5nZXQoKSkpOwogICAgIG1fY2FsbGJhY2tDb25zdHJ1Y3RvclN0cnVjdHVy
ZS5zZXQodm0sIHRoaXMsIEpTQ2FsbGJhY2tDb25zdHJ1Y3Rvcjo6Y3JlYXRlU3RydWN0dXJlKHZt
LCB0aGlzLCBtX29iamVjdFByb3RvdHlwZS5nZXQoKSkpOwogICAgIG1fY2FsbGJhY2tPYmplY3RT
dHJ1Y3R1cmUuc2V0KHZtLCB0aGlzLCBKU0NhbGxiYWNrT2JqZWN0PEpTRGVzdHJ1Y3RpYmxlT2Jq
ZWN0Pjo6Y3JlYXRlU3RydWN0dXJlKHZtLCB0aGlzLCBtX29iamVjdFByb3RvdHlwZS5nZXQoKSkp
OworCiAjaWYgSlNDX09CSkNfQVBJX0VOQUJMRUQKICAgICBtX29iamNDYWxsYmFja0Z1bmN0aW9u
U3RydWN0dXJlLnNldCh2bSwgdGhpcywgT2JqQ0NhbGxiYWNrRnVuY3Rpb246OmNyZWF0ZVN0cnVj
dHVyZSh2bSwgdGhpcywgbV9mdW5jdGlvblByb3RvdHlwZS5nZXQoKSkpOwogICAgIG1fb2JqY1dy
YXBwZXJPYmplY3RTdHJ1Y3R1cmUuc2V0KHZtLCB0aGlzLCBKU0NhbGxiYWNrT2JqZWN0PEpTQVBJ
V3JhcHBlck9iamVjdD46OmNyZWF0ZVN0cnVjdHVyZSh2bSwgdGhpcywgbV9vYmplY3RQcm90b3R5
cGUuZ2V0KCkpKTsKQEAgLTM0Miw2ICszNDUsOCBAQCB2b2lkIEpTR2xvYmFsT2JqZWN0Ojppbml0
KFZNJiB2bSkKICAgICBtX3JlZ0V4cFN0cnVjdHVyZS5zZXQodm0sIHRoaXMsIFJlZ0V4cE9iamVj
dDo6Y3JlYXRlU3RydWN0dXJlKHZtLCB0aGlzLCBtX3JlZ0V4cFByb3RvdHlwZS5nZXQoKSkpOwog
ICAgIG1fcmVnRXhwTWF0Y2hlc0FycmF5U3RydWN0dXJlLnNldCh2bSwgdGhpcywgY3JlYXRlUmVn
RXhwTWF0Y2hlc0FycmF5U3RydWN0dXJlKHZtLCAqdGhpcykpOwogCisgICAgbV9tb2R1bGVSZWNv
cmRTdHJ1Y3R1cmUuc2V0KHZtLCB0aGlzLCBKU01vZHVsZVJlY29yZDo6Y3JlYXRlU3RydWN0dXJl
KHZtLCB0aGlzLCBtX29iamVjdFByb3RvdHlwZS5nZXQoKSkpOworICAgIAogI2lmIEVOQUJMRShX
RUJBU1NFTUJMWSkKICAgICBtX3dhc21Nb2R1bGVTdHJ1Y3R1cmUuc2V0KHZtLCB0aGlzLCBKU1dB
U01Nb2R1bGU6OmNyZWF0ZVN0cnVjdHVyZSh2bSwgdGhpcykpOwogI2VuZGlmCkBAIC00NDEsNyAr
NDQ2LDcgQEAgcHV0RGlyZWN0V2l0aG91dFRyYW5zaXRpb24odm0sIHZtLnByb3BlcnR5TmFtZXMt
PiBqc05hbWUsIGxvd2VyTmFtZSAjIyBDb25zdHJ1Y3QKICAgICBwdXREaXJlY3RXaXRob3V0VHJh
bnNpdGlvbih2bSwgdm0ucHJvcGVydHlOYW1lcy0+SlNPTiwgSlNPTk9iamVjdDo6Y3JlYXRlKHZt
LCBKU09OT2JqZWN0OjpjcmVhdGVTdHJ1Y3R1cmUodm0sIHRoaXMsIG1fb2JqZWN0UHJvdG90eXBl
LmdldCgpKSksIERvbnRFbnVtKTsKICAgICBwdXREaXJlY3RXaXRob3V0VHJhbnNpdGlvbih2bSwg
dm0ucHJvcGVydHlOYW1lcy0+TWF0aCwgTWF0aE9iamVjdDo6Y3JlYXRlKHZtLCB0aGlzLCBNYXRo
T2JqZWN0OjpjcmVhdGVTdHJ1Y3R1cmUodm0sIHRoaXMsIG1fb2JqZWN0UHJvdG90eXBlLmdldCgp
KSksIERvbnRFbnVtKTsKICAgICBwdXREaXJlY3RXaXRob3V0VHJhbnNpdGlvbih2bSwgdm0ucHJv
cGVydHlOYW1lcy0+UmVmbGVjdCwgUmVmbGVjdE9iamVjdDo6Y3JlYXRlKHZtLCB0aGlzLCBSZWZs
ZWN0T2JqZWN0OjpjcmVhdGVTdHJ1Y3R1cmUodm0sIHRoaXMsIG1fb2JqZWN0UHJvdG90eXBlLmdl
dCgpKSksIERvbnRFbnVtKTsKLSAgICAKKwogICAgIHN0ZDo6YXJyYXk8SW50ZXJuYWxGdW5jdGlv
biosIE5VTUJFUl9PRl9UWVBFRF9BUlJBWV9UWVBFUz4gdHlwZWRBcnJheUNvbnN0cnVjdG9yczsK
ICAgICB0eXBlZEFycmF5Q29uc3RydWN0b3JzW3RvSW5kZXgoVHlwZUludDgpXSA9IEpTSW50OEFy
cmF5Q29uc3RydWN0b3I6OmNyZWF0ZSh2bSwgSlNJbnQ4QXJyYXlDb25zdHJ1Y3Rvcjo6Y3JlYXRl
U3RydWN0dXJlKHZtLCB0aGlzLCBtX2Z1bmN0aW9uUHJvdG90eXBlLmdldCgpKSwgbV90eXBlZEFy
cmF5c1t0b0luZGV4KFR5cGVJbnQ4KV0ucHJvdG90eXBlLmdldCgpLCBBU0NJSUxpdGVyYWwoIklu
dDhBcnJheSIpKTsKICAgICB0eXBlZEFycmF5Q29uc3RydWN0b3JzW3RvSW5kZXgoVHlwZUludDE2
KV0gPSBKU0ludDE2QXJyYXlDb25zdHJ1Y3Rvcjo6Y3JlYXRlKHZtLCBKU0ludDE2QXJyYXlDb25z
dHJ1Y3Rvcjo6Y3JlYXRlU3RydWN0dXJlKHZtLCB0aGlzLCBtX2Z1bmN0aW9uUHJvdG90eXBlLmdl
dCgpKSwgbV90eXBlZEFycmF5c1t0b0luZGV4KFR5cGVJbnQxNildLnByb3RvdHlwZS5nZXQoKSwg
QVNDSUlMaXRlcmFsKCJJbnQxNkFycmF5IikpOwpAQCAtNDU4LDcgKzQ2MywxMSBAQCBwdXREaXJl
Y3RXaXRob3V0VHJhbnNpdGlvbih2bSwgdm0ucHJvcGVydHlOYW1lcy0+IGpzTmFtZSwgbG93ZXJO
YW1lICMjIENvbnN0cnVjdAogICAgICAgICBtX3R5cGVkQXJyYXlzW3R5cGVkQXJyYXlJbmRleF0u
cHJvdG90eXBlLT5wdXREaXJlY3RXaXRob3V0VHJhbnNpdGlvbih2bSwgdm0ucHJvcGVydHlOYW1l
cy0+Y29uc3RydWN0b3IsIHR5cGVkQXJyYXlDb25zdHJ1Y3RvcnNbdHlwZWRBcnJheUluZGV4XSwg
RG9udEVudW0pOwogICAgICAgICBwdXREaXJlY3RXaXRob3V0VHJhbnNpdGlvbih2bSwgSWRlbnRp
Zmllcjo6ZnJvbVN0cmluZyhleGVjLCB0eXBlZEFycmF5Q29uc3RydWN0b3JzW3R5cGVkQXJyYXlJ
bmRleF0tPm5hbWUoZXhlYykpLCB0eXBlZEFycmF5Q29uc3RydWN0b3JzW3R5cGVkQXJyYXlJbmRl
eF0sIERvbnRFbnVtKTsKICAgICB9Ci0gICAgCisKKyAgICBtX21vZHVsZUxvYWRlci5zZXQodm0s
IHRoaXMsIE1vZHVsZUxvYWRlck9iamVjdDo6Y3JlYXRlKHZtLCB0aGlzLCBNb2R1bGVMb2FkZXJP
YmplY3Q6OmNyZWF0ZVN0cnVjdHVyZSh2bSwgdGhpcywgbV9vYmplY3RQcm90b3R5cGUuZ2V0KCkp
KSk7CisgICAgaWYgKE9wdGlvbnM6OmV4cG9zZUludGVybmFsTW9kdWxlTG9hZGVyKCkpCisgICAg
ICAgIHB1dERpcmVjdFdpdGhvdXRUcmFuc2l0aW9uKHZtLCB2bS5wcm9wZXJ0eU5hbWVzLT5Mb2Fk
ZXIsIG1fbW9kdWxlTG9hZGVyLmdldCgpLCBEb250RW51bSk7CisKICAgICBKU0Z1bmN0aW9uKiBi
dWlsdGluTG9nID0gSlNGdW5jdGlvbjo6Y3JlYXRlKHZtLCB0aGlzLCAxLCB2bS5wcm9wZXJ0eU5h
bWVzLT5lbXB0eUlkZW50aWZpZXIuc3RyaW5nKCksIGdsb2JhbEZ1bmNCdWlsdGluTG9nKTsKIAog
ICAgIEpTRnVuY3Rpb24qIHByaXZhdGVGdW5jQWJzID0gSlNGdW5jdGlvbjo6Y3JlYXRlKHZtLCB0
aGlzLCAwLCBTdHJpbmcoKSwgbWF0aFByb3RvRnVuY0FicywgQWJzSW50cmluc2ljKTsKQEAgLTUx
MCw2ICs1MTksNyBAQCBwdXREaXJlY3RXaXRob3V0VHJhbnNpdGlvbih2bSwgdm0ucHJvcGVydHlO
YW1lcy0+IGpzTmFtZSwgbG93ZXJOYW1lICMjIENvbnN0cnVjdAogICAgICAgICBHbG9iYWxQcm9w
ZXJ0eUluZm8odm0ucHJvcGVydHlOYW1lcy0+YnVpbHRpbk5hbWVzKCkucHJvbWlzZVJlYWN0aW9u
Sm9iUHJpdmF0ZU5hbWUoKSwgSlNGdW5jdGlvbjo6Y3JlYXRlQnVpbHRpbkZ1bmN0aW9uKHZtLCBv
cGVyYXRpb25zUHJvbWlzZVByb21pc2VSZWFjdGlvbkpvYkNvZGVHZW5lcmF0b3Iodm0pLCB0aGlz
KSwgRG9udEVudW0gfCBEb250RGVsZXRlIHwgUmVhZE9ubHkpLAogICAgICAgICBHbG9iYWxQcm9w
ZXJ0eUluZm8odm0ucHJvcGVydHlOYW1lcy0+YnVpbHRpbk5hbWVzKCkucHJvbWlzZVJlc29sdmVU
aGVuYWJsZUpvYlByaXZhdGVOYW1lKCksIEpTRnVuY3Rpb246OmNyZWF0ZUJ1aWx0aW5GdW5jdGlv
bih2bSwgb3BlcmF0aW9uc1Byb21pc2VQcm9taXNlUmVzb2x2ZVRoZW5hYmxlSm9iQ29kZUdlbmVy
YXRvcih2bSksIHRoaXMpLCBEb250RW51bSB8IERvbnREZWxldGUgfCBSZWFkT25seSksCiAgICAg
ICAgIEdsb2JhbFByb3BlcnR5SW5mbyh2bS5wcm9wZXJ0eU5hbWVzLT5idWlsdGluTmFtZXMoKS5J
bnNwZWN0b3JJbnN0cnVtZW50YXRpb25Qcml2YXRlTmFtZSgpLCBJbnNwZWN0b3JJbnN0cnVtZW50
YXRpb25PYmplY3Q6OmNyZWF0ZSh2bSwgdGhpcywgSW5zcGVjdG9ySW5zdHJ1bWVudGF0aW9uT2Jq
ZWN0OjpjcmVhdGVTdHJ1Y3R1cmUodm0sIHRoaXMsIG1fb2JqZWN0UHJvdG90eXBlLmdldCgpKSks
IERvbnRFbnVtIHwgRG9udERlbGV0ZSB8IFJlYWRPbmx5KSwKKyAgICAgICAgR2xvYmFsUHJvcGVy
dHlJbmZvKHZtLnByb3BlcnR5TmFtZXMtPk1hcFByaXZhdGVOYW1lLCBtYXBDb25zdHJ1Y3Rvciwg
RG9udEVudW0gfCBEb250RGVsZXRlIHwgUmVhZE9ubHkpLAogICAgIH07CiAgICAgYWRkU3RhdGlj
R2xvYmFscyhzdGF0aWNHbG9iYWxzLCBXVEZfQVJSQVlfTEVOR1RIKHN0YXRpY0dsb2JhbHMpKTsK
ICAgICAKQEAgLTc2Nyw2ICs3NzcsNyBAQCB2b2lkIEpTR2xvYmFsT2JqZWN0Ojp2aXNpdENoaWxk
cmVuKEpTQ2VsbCogY2VsbCwgU2xvdFZpc2l0b3ImIHZpc2l0b3IpCiAgICAgdmlzaXRvci5hcHBl
bmQoJnRoaXNPYmplY3QtPm1faW5pdGlhbGl6ZVByb21pc2VGdW5jdGlvbik7CiAgICAgdmlzaXRv
ci5hcHBlbmQoJnRoaXNPYmplY3QtPm1fbmV3UHJvbWlzZUNhcGFiaWxpdHlGdW5jdGlvbik7CiAg
ICAgdmlzaXRvci5hcHBlbmQoJnRoaXNPYmplY3QtPm1fdGhyb3dUeXBlRXJyb3JHZXR0ZXJTZXR0
ZXIpOworICAgIHZpc2l0b3IuYXBwZW5kKCZ0aGlzT2JqZWN0LT5tX21vZHVsZUxvYWRlcik7CiAK
ICAgICB2aXNpdG9yLmFwcGVuZCgmdGhpc09iamVjdC0+bV9vYmplY3RQcm90b3R5cGUpOwogICAg
IHZpc2l0b3IuYXBwZW5kKCZ0aGlzT2JqZWN0LT5tX2Z1bmN0aW9uUHJvdG90eXBlKTsKQEAgLTgw
NCw2ICs4MTUsNyBAQCB2b2lkIEpTR2xvYmFsT2JqZWN0Ojp2aXNpdENoaWxkcmVuKEpTQ2VsbCog
Y2VsbCwgU2xvdFZpc2l0b3ImIHZpc2l0b3IpCiAgICAgdmlzaXRvci5hcHBlbmQoJnRoaXNPYmpl
Y3QtPm1fc3ltYm9sT2JqZWN0U3RydWN0dXJlKTsKICAgICB2aXNpdG9yLmFwcGVuZCgmdGhpc09i
amVjdC0+bV9yZWdFeHBTdHJ1Y3R1cmUpOwogICAgIHZpc2l0b3IuYXBwZW5kKCZ0aGlzT2JqZWN0
LT5tX3JlZ0V4cE1hdGNoZXNBcnJheVN0cnVjdHVyZSk7CisgICAgdmlzaXRvci5hcHBlbmQoJnRo
aXNPYmplY3QtPm1fbW9kdWxlUmVjb3JkU3RydWN0dXJlKTsKICAgICB2aXNpdG9yLmFwcGVuZCgm
dGhpc09iamVjdC0+bV9jb25zb2xlU3RydWN0dXJlKTsKICAgICB2aXNpdG9yLmFwcGVuZCgmdGhp
c09iamVjdC0+bV9kb2xsYXJWTVN0cnVjdHVyZSk7CiAgICAgdmlzaXRvci5hcHBlbmQoJnRoaXNP
YmplY3QtPm1faW50ZXJuYWxGdW5jdGlvblN0cnVjdHVyZSk7CmRpZmYgLS1naXQgYS9Tb3VyY2Uv
SmF2YVNjcmlwdENvcmUvcnVudGltZS9KU0dsb2JhbE9iamVjdC5oIGIvU291cmNlL0phdmFTY3Jp
cHRDb3JlL3J1bnRpbWUvSlNHbG9iYWxPYmplY3QuaAppbmRleCA2ZGIzMDNhZWMwNzA2NmZhMmEx
NWVkYWZhY2M1MTgzOWNhYTBjNzJhLi44ZWUyOWY5ZTc4NDYyMmMzNDRlZWZiZGUzODA2NjQzMWFl
YjcyYjE4IDEwMDY0NAotLS0gYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9KU0dsb2Jh
bE9iamVjdC5oCisrKyBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL0pTR2xvYmFsT2Jq
ZWN0LmgKQEAgLTcwLDExICs3MCwxNCBAQCBjbGFzcyBHZXR0ZXJTZXR0ZXI7CiBjbGFzcyBHbG9i
YWxDb2RlQmxvY2s7CiBjbGFzcyBJbnB1dEN1cnNvcjsKIGNsYXNzIEpTR2xvYmFsT2JqZWN0RGVi
dWdnYWJsZTsKK2NsYXNzIEpTUHJvbWlzZTsKIGNsYXNzIEpTUHJvbWlzZUNvbnN0cnVjdG9yOwog
Y2xhc3MgSlNQcm9taXNlUHJvdG90eXBlOworY2xhc3MgSlNJbnRlcm5hbFByb21pc2U7CiBjbGFz
cyBKU1N0YWNrOwogY2xhc3MgTExJbnRPZmZzZXRzRXh0cmFjdG9yOwogY2xhc3MgTWljcm90YXNr
OworY2xhc3MgTW9kdWxlTG9hZGVyT2JqZWN0OwogY2xhc3MgTmF0aXZlRXJyb3JDb25zdHJ1Y3Rv
cjsKIGNsYXNzIE9iamVjdENvbnN0cnVjdG9yOwogY2xhc3MgUHJvZ3JhbUNvZGVCbG9jazsKQEAg
LTE1Miw2ICsxNTUsMTggQEAgc3RydWN0IEdsb2JhbE9iamVjdE1ldGhvZFRhYmxlIHsKIAogICAg
IHR5cGVkZWYgYm9vbCAoKlNob3VsZEludGVycnVwdFNjcmlwdEJlZm9yZVRpbWVvdXRQdHIpKGNv
bnN0IEpTR2xvYmFsT2JqZWN0Kik7CiAgICAgU2hvdWxkSW50ZXJydXB0U2NyaXB0QmVmb3JlVGlt
ZW91dFB0ciBzaG91bGRJbnRlcnJ1cHRTY3JpcHRCZWZvcmVUaW1lb3V0OworCisgICAgdHlwZWRl
ZiBKU0ludGVybmFsUHJvbWlzZSogKCpMb2FkZXJSZXNvbHZlUHRyKShKU0dsb2JhbE9iamVjdCos
IEV4ZWNTdGF0ZSosIEpTVmFsdWUsIEpTVmFsdWUpOworICAgIExvYWRlclJlc29sdmVQdHIgbG9h
ZGVyUmVzb2x2ZTsKKworICAgIHR5cGVkZWYgSlNJbnRlcm5hbFByb21pc2UqICgqTG9hZGVyRmV0
Y2hQdHIpKEpTR2xvYmFsT2JqZWN0KiwgRXhlY1N0YXRlKiwgSlNWYWx1ZSk7CisgICAgTG9hZGVy
RmV0Y2hQdHIgbG9hZGVyRmV0Y2g7CisKKyAgICB0eXBlZGVmIEpTSW50ZXJuYWxQcm9taXNlKiAo
KkxvYWRlclRyYW5zbGF0ZVB0cikoSlNHbG9iYWxPYmplY3QqLCBFeGVjU3RhdGUqLCBKU1ZhbHVl
LCBKU1ZhbHVlKTsKKyAgICBMb2FkZXJUcmFuc2xhdGVQdHIgbG9hZGVyVHJhbnNsYXRlOworCisg
ICAgdHlwZWRlZiBKU0ludGVybmFsUHJvbWlzZSogKCpMb2FkZXJJbnN0YW50aWF0ZVB0cikoSlNH
bG9iYWxPYmplY3QqLCBFeGVjU3RhdGUqLCBKU1ZhbHVlLCBKU1ZhbHVlKTsKKyAgICBMb2FkZXJJ
bnN0YW50aWF0ZVB0ciBsb2FkZXJJbnN0YW50aWF0ZTsKIH07CiAKIGNsYXNzIEpTR2xvYmFsT2Jq
ZWN0IDogcHVibGljIEpTU2VnbWVudGVkVmFyaWFibGVPYmplY3QgewpAQCAtMjAzLDYgKzIxOCw4
IEBAIGNsYXNzIEpTR2xvYmFsT2JqZWN0IDogcHVibGljIEpTU2VnbWVudGVkVmFyaWFibGVPYmpl
Y3QgewogICAgIFdyaXRlQmFycmllcjxKU0Z1bmN0aW9uPiBtX25ld1Byb21pc2VDYXBhYmlsaXR5
RnVuY3Rpb247CiAgICAgV3JpdGVCYXJyaWVyPEdldHRlclNldHRlcj4gbV90aHJvd1R5cGVFcnJv
ckdldHRlclNldHRlcjsKIAorICAgIFdyaXRlQmFycmllcjxNb2R1bGVMb2FkZXJPYmplY3Q+IG1f
bW9kdWxlTG9hZGVyOworCiAgICAgV3JpdGVCYXJyaWVyPE9iamVjdFByb3RvdHlwZT4gbV9vYmpl
Y3RQcm90b3R5cGU7CiAgICAgV3JpdGVCYXJyaWVyPEZ1bmN0aW9uUHJvdG90eXBlPiBtX2Z1bmN0
aW9uUHJvdG90eXBlOwogICAgIFdyaXRlQmFycmllcjxBcnJheVByb3RvdHlwZT4gbV9hcnJheVBy
b3RvdHlwZTsKQEAgLTI0NCw2ICsyNjEsNyBAQCBjbGFzcyBKU0dsb2JhbE9iamVjdCA6IHB1Ymxp
YyBKU1NlZ21lbnRlZFZhcmlhYmxlT2JqZWN0IHsKICAgICBXcml0ZUJhcnJpZXI8U3RydWN0dXJl
PiBtX2ludGVybmFsRnVuY3Rpb25TdHJ1Y3R1cmU7CiAgICAgV3JpdGVCYXJyaWVyPFN0cnVjdHVy
ZT4gbV9pdGVyYXRvclJlc3VsdFN0cnVjdHVyZTsKICAgICBXcml0ZUJhcnJpZXI8U3RydWN0dXJl
PiBtX3JlZ0V4cE1hdGNoZXNBcnJheVN0cnVjdHVyZTsKKyAgICBXcml0ZUJhcnJpZXI8U3RydWN0
dXJlPiBtX21vZHVsZVJlY29yZFN0cnVjdHVyZTsKICNpZiBFTkFCTEUoV0VCQVNTRU1CTFkpCiAg
ICAgV3JpdGVCYXJyaWVyPFN0cnVjdHVyZT4gbV93YXNtTW9kdWxlU3RydWN0dXJlOwogI2VuZGlm
CkBAIC00MTAsNiArNDI4LDggQEAgY2xhc3MgSlNHbG9iYWxPYmplY3QgOiBwdWJsaWMgSlNTZWdt
ZW50ZWRWYXJpYWJsZU9iamVjdCB7CiAgICAgICAgIHJldHVybiBtX3Rocm93VHlwZUVycm9yR2V0
dGVyU2V0dGVyLmdldCgpOwogICAgIH0KIAorICAgIE1vZHVsZUxvYWRlck9iamVjdCogbW9kdWxl
TG9hZGVyKCkgY29uc3QgeyByZXR1cm4gbV9tb2R1bGVMb2FkZXIuZ2V0KCk7IH0KKwogICAgIE9i
amVjdFByb3RvdHlwZSogb2JqZWN0UHJvdG90eXBlKCkgY29uc3QgeyByZXR1cm4gbV9vYmplY3RQ
cm90b3R5cGUuZ2V0KCk7IH0KICAgICBGdW5jdGlvblByb3RvdHlwZSogZnVuY3Rpb25Qcm90b3R5
cGUoKSBjb25zdCB7IHJldHVybiBtX2Z1bmN0aW9uUHJvdG90eXBlLmdldCgpOyB9CiAgICAgQXJy
YXlQcm90b3R5cGUqIGFycmF5UHJvdG90eXBlKCkgY29uc3QgeyByZXR1cm4gbV9hcnJheVByb3Rv
dHlwZS5nZXQoKTsgfQpAQCAtNDc4LDYgKzQ5OCw3IEBAIGNsYXNzIEpTR2xvYmFsT2JqZWN0IDog
cHVibGljIEpTU2VnbWVudGVkVmFyaWFibGVPYmplY3QgewogICAgIFN0cnVjdHVyZSogaXRlcmF0
b3JSZXN1bHRTdHJ1Y3R1cmUoKSBjb25zdCB7IHJldHVybiBtX2l0ZXJhdG9yUmVzdWx0U3RydWN0
dXJlLmdldCgpOyB9CiAgICAgc3RhdGljIHB0cmRpZmZfdCBpdGVyYXRvclJlc3VsdFN0cnVjdHVy
ZU9mZnNldCgpIHsgcmV0dXJuIE9CSkVDVF9PRkZTRVRPRihKU0dsb2JhbE9iamVjdCwgbV9pdGVy
YXRvclJlc3VsdFN0cnVjdHVyZSk7IH0KICAgICBTdHJ1Y3R1cmUqIHJlZ0V4cE1hdGNoZXNBcnJh
eVN0cnVjdHVyZSgpIGNvbnN0IHsgcmV0dXJuIG1fcmVnRXhwTWF0Y2hlc0FycmF5U3RydWN0dXJl
LmdldCgpOyB9CisgICAgU3RydWN0dXJlKiBtb2R1bGVSZWNvcmRTdHJ1Y3R1cmUoKSBjb25zdCB7
IHJldHVybiBtX21vZHVsZVJlY29yZFN0cnVjdHVyZS5nZXQoKTsgfQogI2lmIEVOQUJMRShXRUJB
U1NFTUJMWSkKICAgICBTdHJ1Y3R1cmUqIHdhc21Nb2R1bGVTdHJ1Y3R1cmUoKSBjb25zdCB7IHJl
dHVybiBtX3dhc21Nb2R1bGVTdHJ1Y3R1cmUuZ2V0KCk7IH0KICNlbmRpZgpkaWZmIC0tZ2l0IGEv
U291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvSlNNb2R1bGVSZWNvcmQuY3BwIGIvU291cmNl
L0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvSlNNb2R1bGVSZWNvcmQuY3BwCm5ldyBmaWxlIG1vZGUg
MTAwNjQ0CmluZGV4IDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAuLmU3
MDJmYWZhNDRlNTA2ZjlkNDdmZWRlNjMzNjY0YTczOGMxOWI0MGIKLS0tIC9kZXYvbnVsbAorKysg
Yi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9KU01vZHVsZVJlY29yZC5jcHAKQEAgLTAs
MCArMSwxMTMgQEAKKy8qCisgKiBDb3B5cmlnaHQgKEMpIDIwMTUgQXBwbGUgSW5jLiBBbGwgcmln
aHRzIHJlc2VydmVkLgorICoKKyAqIFJlZGlzdHJpYnV0aW9uIGFuZCB1c2UgaW4gc291cmNlIGFu
ZCBiaW5hcnkgZm9ybXMsIHdpdGggb3Igd2l0aG91dAorICogbW9kaWZpY2F0aW9uLCBhcmUgcGVy
bWl0dGVkIHByb3ZpZGVkIHRoYXQgdGhlIGZvbGxvd2luZyBjb25kaXRpb25zCisgKiBhcmUgbWV0
OgorICogMS4gUmVkaXN0cmlidXRpb25zIG9mIHNvdXJjZSBjb2RlIG11c3QgcmV0YWluIHRoZSBh
Ym92ZSBjb3B5cmlnaHQKKyAqICAgIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5k
IHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lci4KKyAqIDIuIFJlZGlzdHJpYnV0aW9ucyBpbiBiaW5h
cnkgZm9ybSBtdXN0IHJlcHJvZHVjZSB0aGUgYWJvdmUgY29weXJpZ2h0CisgKiAgICBub3RpY2Us
IHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIgaW4g
dGhlCisgKiAgICBkb2N1bWVudGF0aW9uIGFuZC9vciBvdGhlciBtYXRlcmlhbHMgcHJvdmlkZWQg
d2l0aCB0aGUgZGlzdHJpYnV0aW9uLgorICoKKyAqIFRISVMgU09GVFdBUkUgSVMgUFJPVklERUQg
QlkgQVBQTEUgSU5DLiBgYEFTIElTJycgQU5EIEFOWQorICogRVhQUkVTUyBPUiBJTVBMSUVEIFdB
UlJBTlRJRVMsIElOQ0xVRElORywgQlVUIE5PVCBMSU1JVEVEIFRPLCBUSEUKKyAqIElNUExJRUQg
V0FSUkFOVElFUyBPRiBNRVJDSEFOVEFCSUxJVFkgQU5EIEZJVE5FU1MgRk9SIEEgUEFSVElDVUxB
UgorICogUFVSUE9TRSBBUkUgRElTQ0xBSU1FRC4gIElOIE5PIEVWRU5UIFNIQUxMIEFQUExFIElO
Qy4gT1IKKyAqIENPTlRSSUJVVE9SUyBCRSBMSUFCTEUgRk9SIEFOWSBESVJFQ1QsIElORElSRUNU
LCBJTkNJREVOVEFMLCBTUEVDSUFMLAorICogRVhFTVBMQVJZLCBPUiBDT05TRVFVRU5USUFMIERB
TUFHRVMgKElOQ0xVRElORywgQlVUIE5PVCBMSU1JVEVEIFRPLAorICogUFJPQ1VSRU1FTlQgT0Yg
U1VCU1RJVFVURSBHT09EUyBPUiBTRVJWSUNFUzsgTE9TUyBPRiBVU0UsIERBVEEsIE9SCisgKiBQ
Uk9GSVRTOyBPUiBCVVNJTkVTUyBJTlRFUlJVUFRJT04pIEhPV0VWRVIgQ0FVU0VEIEFORCBPTiBB
TlkgVEhFT1JZCisgKiBPRiBMSUFCSUxJVFksIFdIRVRIRVIgSU4gQ09OVFJBQ1QsIFNUUklDVCBM
SUFCSUxJVFksIE9SIFRPUlQKKyAqIChJTkNMVURJTkcgTkVHTElHRU5DRSBPUiBPVEhFUldJU0Up
IEFSSVNJTkcgSU4gQU5ZIFdBWSBPVVQgT0YgVEhFIFVTRQorICogT0YgVEhJUyBTT0ZUV0FSRSwg
RVZFTiBJRiBBRFZJU0VEIE9GIFRIRSBQT1NTSUJJTElUWSBPRiBTVUNIIERBTUFHRS4gCisgKi8K
KworI2luY2x1ZGUgImNvbmZpZy5oIgorI2luY2x1ZGUgIkpTTW9kdWxlUmVjb3JkLmgiCisKKyNp
bmNsdWRlICJJZGVudGlmaWVySW5saW5lcy5oIgorI2luY2x1ZGUgIkpTQ0pTVmFsdWVJbmxpbmVz
LmgiCisjaW5jbHVkZSAiSlNDZWxsSW5saW5lcy5oIgorI2luY2x1ZGUgIlN0cnVjdHVyZUlubGlu
ZXMuaCIKKworbmFtZXNwYWNlIEpTQyB7CisKK2NvbnN0IENsYXNzSW5mbyBKU01vZHVsZVJlY29y
ZDo6c19pbmZvID0geyAiTW9kdWxlUmVjb3JkIiwgJkJhc2U6OnNfaW5mbywgMCwgQ1JFQVRFX01F
VEhPRF9UQUJMRShKU01vZHVsZVJlY29yZCkgfTsKKwordm9pZCBKU01vZHVsZVJlY29yZDo6ZGVz
dHJveShKU0NlbGwqIGNlbGwpCit7CisgICAgSlNNb2R1bGVSZWNvcmQqIHRoaXNPYmplY3QgPSBq
c0Nhc3Q8SlNNb2R1bGVSZWNvcmQqPihjZWxsKTsKKyAgICB0aGlzT2JqZWN0LT5KU01vZHVsZVJl
Y29yZDo6fkpTTW9kdWxlUmVjb3JkKCk7Cit9CisKKwordm9pZCBKU01vZHVsZVJlY29yZDo6Zmlu
aXNoQ3JlYXRpb24oVk0mIHZtKQoreworICAgIEJhc2U6OmZpbmlzaENyZWF0aW9uKHZtKTsKKyAg
ICBBU1NFUlQoaW5oZXJpdHMoaW5mbygpKSk7CisgICAgcHV0RGlyZWN0KHZtLCBJZGVudGlmaWVy
Ojpmcm9tU3RyaW5nKCZ2bSwgQVNDSUlMaXRlcmFsKCJyZWdpc3RyeUVudHJ5IikpLCBqc1VuZGVm
aW5lZCgpKTsKK30KKworYXV0byBKU01vZHVsZVJlY29yZDo6RXhwb3J0RW50cnk6OmNyZWF0ZUxv
Y2FsKGNvbnN0IElkZW50aWZpZXImIGV4cG9ydE5hbWUsIGNvbnN0IElkZW50aWZpZXImIGxvY2Fs
TmFtZSwgY29uc3QgVmFyaWFibGVFbnZpcm9ubWVudEVudHJ5JiB2YXJpYWJsZSkgLT4gRXhwb3J0
RW50cnkKK3sKKyAgICByZXR1cm4gRXhwb3J0RW50cnkgeyBUeXBlOjpMb2NhbCwgZXhwb3J0TmFt
ZSwgSWRlbnRpZmllcigpLCBJZGVudGlmaWVyKCksIGxvY2FsTmFtZSwgdmFyaWFibGUgfTsKK30K
KworYXV0byBKU01vZHVsZVJlY29yZDo6RXhwb3J0RW50cnk6OmNyZWF0ZU5hbWVzcGFjZShjb25z
dCBJZGVudGlmaWVyJiBleHBvcnROYW1lLCBjb25zdCBJZGVudGlmaWVyJiBtb2R1bGVOYW1lKSAt
PiBFeHBvcnRFbnRyeQoreworICAgIHJldHVybiBFeHBvcnRFbnRyeSB7IFR5cGU6Ok5hbWVzcGFj
ZSwgZXhwb3J0TmFtZSwgbW9kdWxlTmFtZSwgSWRlbnRpZmllcigpLCBJZGVudGlmaWVyKCksIFZh
cmlhYmxlRW52aXJvbm1lbnRFbnRyeSgpIH07Cit9CisKK2F1dG8gSlNNb2R1bGVSZWNvcmQ6OkV4
cG9ydEVudHJ5OjpjcmVhdGVJbmRpcmVjdChjb25zdCBJZGVudGlmaWVyJiBleHBvcnROYW1lLCBj
b25zdCBJZGVudGlmaWVyJiBpbXBvcnROYW1lLCBjb25zdCBJZGVudGlmaWVyJiBtb2R1bGVOYW1l
KSAtPiBFeHBvcnRFbnRyeQoreworICAgIHJldHVybiBFeHBvcnRFbnRyeSB7IFR5cGU6OkluZGly
ZWN0LCBleHBvcnROYW1lLCBtb2R1bGVOYW1lLCBpbXBvcnROYW1lLCBJZGVudGlmaWVyKCksIFZh
cmlhYmxlRW52aXJvbm1lbnRFbnRyeSgpIH07Cit9CisKK3N0YXRpYyBTdHJpbmcgcHJpbnRhYmxl
TmFtZShjb25zdCBSZWZQdHI8VW5pcXVlZFN0cmluZ0ltcGw+JiB1aWQpCit7CisgICAgaWYgKHVp
ZC0+aXNTeW1ib2woKSkKKyAgICAgICAgcmV0dXJuIHVpZC5nZXQoKTsKKyAgICByZXR1cm4gV1RG
OjptYWtlU3RyaW5nKCInIiwgU3RyaW5nKHVpZC5nZXQoKSksICInIik7Cit9CisKK3N0YXRpYyBT
dHJpbmcgcHJpbnRhYmxlTmFtZShjb25zdCBJZGVudGlmaWVyJiBpZGVudCkKK3sKKyAgICByZXR1
cm4gcHJpbnRhYmxlTmFtZShpZGVudC5pbXBsKCkpOworfQorCisKK3ZvaWQgSlNNb2R1bGVSZWNv
cmQ6OmR1bXAoKQoreworICAgIGRhdGFMb2coIlxuQW5hbHl6aW5nIE1vZHVsZVJlY29yZCBrZXko
IiwgcHJpbnRhYmxlTmFtZShtX21vZHVsZUtleSksICIpXG4iKTsKKworICAgIGRhdGFMb2coIiAg
ICBEZXBlbmRlbmNpZXM6ICIsIG1fcmVxdWVzdGVkTW9kdWxlcy5zaXplKCksICIgbW9kdWxlc1xu
Iik7CisgICAgZm9yIChjb25zdCBhdXRvJiBtb2R1bGVOYW1lIDogbV9yZXF1ZXN0ZWRNb2R1bGVz
KQorICAgICAgICBkYXRhTG9nKCIgICAgICBtb2R1bGUoIiwgcHJpbnRhYmxlTmFtZShtb2R1bGVO
YW1lKSwgIilcbiIpOworCisgICAgZGF0YUxvZygiICAgIEltcG9ydDogIiwgbV9pbXBvcnRFbnRy
aWVzLnNpemUoKSwgIiBlbnRyaWVzXG4iKTsKKyAgICBmb3IgKGNvbnN0IGF1dG8mIHBhaXIgOiBt
X2ltcG9ydEVudHJpZXMpCisgICAgICAgIGRhdGFMb2coIiAgICAgIGltcG9ydCgiLCBwcmludGFi
bGVOYW1lKHBhaXIudmFsdWUuaW1wb3J0TmFtZSksICIpLCBsb2NhbCgiLCBwcmludGFibGVOYW1l
KHBhaXIudmFsdWUubG9jYWxOYW1lKSwgIiksIG1vZHVsZSgiLCBwcmludGFibGVOYW1lKHBhaXIu
dmFsdWUubW9kdWxlUmVxdWVzdCksICIpXG4iKTsKKworICAgIGRhdGFMb2coIiAgICBFeHBvcnQ6
ICIsIG1fZXhwb3J0RW50cmllcy5zaXplKCksICIgZW50cmllc1xuIik7CisgICAgZm9yIChjb25z
dCBhdXRvJiBwYWlyIDogbV9leHBvcnRFbnRyaWVzKSB7CisgICAgICAgIGNvbnN0IEV4cG9ydEVu
dHJ5JiBlbnRyeSA9IHBhaXIudmFsdWU7CisgICAgICAgIHN3aXRjaCAoZW50cnkudHlwZSkgewor
ICAgICAgICBjYXNlIEV4cG9ydEVudHJ5OjpUeXBlOjpMb2NhbDoKKyAgICAgICAgICAgIGRhdGFM
b2coIiAgICAgIFtMb2NhbF0gIiwgImV4cG9ydCgiLCBwcmludGFibGVOYW1lKGVudHJ5LmV4cG9y
dE5hbWUpLCAiKSwgbG9jYWwoIiwgcHJpbnRhYmxlTmFtZShlbnRyeS5sb2NhbE5hbWUpLCAiKVxu
Iik7CisgICAgICAgICAgICBicmVhazsKKworICAgICAgICBjYXNlIEV4cG9ydEVudHJ5OjpUeXBl
OjpOYW1lc3BhY2U6CisgICAgICAgICAgICBkYXRhTG9nKCIgICAgICBbTmFtZXNwYWNlXSAiLCAi
ZXhwb3J0KCIsIHByaW50YWJsZU5hbWUoZW50cnkuZXhwb3J0TmFtZSksICIpLCBtb2R1bGUoIiwg
cHJpbnRhYmxlTmFtZShlbnRyeS5tb2R1bGVOYW1lKSwgIilcbiIpOworICAgICAgICAgICAgYnJl
YWs7CisKKyAgICAgICAgY2FzZSBFeHBvcnRFbnRyeTo6VHlwZTo6SW5kaXJlY3Q6CisgICAgICAg
ICAgICBkYXRhTG9nKCIgICAgICBbSW5kaXJlY3RdICIsICJleHBvcnQoIiwgcHJpbnRhYmxlTmFt
ZShlbnRyeS5leHBvcnROYW1lKSwgIiksIGltcG9ydCgiLCBwcmludGFibGVOYW1lKGVudHJ5Lmlt
cG9ydE5hbWUpLCAiKSwgbW9kdWxlKCIsIHByaW50YWJsZU5hbWUoZW50cnkubW9kdWxlTmFtZSks
ICIpXG4iKTsKKyAgICAgICAgICAgIGJyZWFrOworICAgICAgICB9CisgICAgfQorICAgIGZvciAo
Y29uc3QgYXV0byYgbW9kdWxlTmFtZSA6IG1fc3RhckV4cG9ydEVudHJpZXMpCisgICAgICAgIGRh
dGFMb2coIiAgICAgIFtTdGFyXSBtb2R1bGUoIiwgcHJpbnRhYmxlTmFtZShtb2R1bGVOYW1lLmdl
dCgpKSwgIilcbiIpOworfQorCit9IC8vIG5hbWVzcGFjZSBKU0MKZGlmZiAtLWdpdCBhL1NvdXJj
ZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL0pTTW9kdWxlUmVjb3JkLmggYi9Tb3VyY2UvSmF2YVNj
cmlwdENvcmUvcnVudGltZS9KU01vZHVsZVJlY29yZC5oCm5ldyBmaWxlIG1vZGUgMTAwNjQ0Cmlu
ZGV4IDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAuLjA1ZDY5NGQzZTNm
ZTU1YTUyMWFmMzVkZTgyNjE1OTgwZjA4MGUyZTAKLS0tIC9kZXYvbnVsbAorKysgYi9Tb3VyY2Uv
SmF2YVNjcmlwdENvcmUvcnVudGltZS9KU01vZHVsZVJlY29yZC5oCkBAIC0wLDAgKzEsMTYxIEBA
CisvKgorICogQ29weXJpZ2h0IChDKSAyMDE1IEFwcGxlIEluYy4gQWxsIHJpZ2h0cyByZXNlcnZl
ZC4KKyAqCisgKiBSZWRpc3RyaWJ1dGlvbiBhbmQgdXNlIGluIHNvdXJjZSBhbmQgYmluYXJ5IGZv
cm1zLCB3aXRoIG9yIHdpdGhvdXQKKyAqIG1vZGlmaWNhdGlvbiwgYXJlIHBlcm1pdHRlZCBwcm92
aWRlZCB0aGF0IHRoZSBmb2xsb3dpbmcgY29uZGl0aW9ucworICogYXJlIG1ldDoKKyAqIDEuIFJl
ZGlzdHJpYnV0aW9ucyBvZiBzb3VyY2UgY29kZSBtdXN0IHJldGFpbiB0aGUgYWJvdmUgY29weXJp
Z2h0CisgKiAgICBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93
aW5nIGRpc2NsYWltZXIuCisgKiAyLiBSZWRpc3RyaWJ1dGlvbnMgaW4gYmluYXJ5IGZvcm0gbXVz
dCByZXByb2R1Y2UgdGhlIGFib3ZlIGNvcHlyaWdodAorICogICAgbm90aWNlLCB0aGlzIGxpc3Qg
b2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyIGluIHRoZQorICogICAg
ZG9jdW1lbnRhdGlvbiBhbmQvb3Igb3RoZXIgbWF0ZXJpYWxzIHByb3ZpZGVkIHdpdGggdGhlIGRp
c3RyaWJ1dGlvbi4KKyAqCisgKiBUSElTIFNPRlRXQVJFIElTIFBST1ZJREVEIEJZIEFQUExFIElO
Qy4gYGBBUyBJUycnIEFORCBBTlkKKyAqIEVYUFJFU1MgT1IgSU1QTElFRCBXQVJSQU5USUVTLCBJ
TkNMVURJTkcsIEJVVCBOT1QgTElNSVRFRCBUTywgVEhFCisgKiBJTVBMSUVEIFdBUlJBTlRJRVMg
T0YgTUVSQ0hBTlRBQklMSVRZIEFORCBGSVRORVNTIEZPUiBBIFBBUlRJQ1VMQVIKKyAqIFBVUlBP
U0UgQVJFIERJU0NMQUlNRUQuICBJTiBOTyBFVkVOVCBTSEFMTCBBUFBMRSBJTkMuIE9SCisgKiBD
T05UUklCVVRPUlMgQkUgTElBQkxFIEZPUiBBTlkgRElSRUNULCBJTkRJUkVDVCwgSU5DSURFTlRB
TCwgU1BFQ0lBTCwKKyAqIEVYRU1QTEFSWSwgT1IgQ09OU0VRVUVOVElBTCBEQU1BR0VTIChJTkNM
VURJTkcsIEJVVCBOT1QgTElNSVRFRCBUTywKKyAqIFBST0NVUkVNRU5UIE9GIFNVQlNUSVRVVEUg
R09PRFMgT1IgU0VSVklDRVM7IExPU1MgT0YgVVNFLCBEQVRBLCBPUgorICogUFJPRklUUzsgT1Ig
QlVTSU5FU1MgSU5URVJSVVBUSU9OKSBIT1dFVkVSIENBVVNFRCBBTkQgT04gQU5ZIFRIRU9SWQor
ICogT0YgTElBQklMSVRZLCBXSEVUSEVSIElOIENPTlRSQUNULCBTVFJJQ1QgTElBQklMSVRZLCBP
UiBUT1JUCisgKiAoSU5DTFVESU5HIE5FR0xJR0VOQ0UgT1IgT1RIRVJXSVNFKSBBUklTSU5HIElO
IEFOWSBXQVkgT1VUIE9GIFRIRSBVU0UKKyAqIE9GIFRISVMgU09GVFdBUkUsIEVWRU4gSUYgQURW
SVNFRCBPRiBUSEUgUE9TU0lCSUxJVFkgT0YgU1VDSCBEQU1BR0UuCisgKi8KKworI2lmbmRlZiBK
U01vZHVsZVJlY29yZF9oCisjZGVmaW5lIEpTTW9kdWxlUmVjb3JkX2gKKworI2luY2x1ZGUgIklk
ZW50aWZpZXIuaCIKKyNpbmNsdWRlICJKU0Rlc3RydWN0aWJsZU9iamVjdC5oIgorI2luY2x1ZGUg
IlZhcmlhYmxlRW52aXJvbm1lbnQuaCIKKyNpbmNsdWRlIDx3dGYvSGFzaE1hcC5oPgorI2luY2x1
ZGUgPHd0Zi9MaXN0SGFzaFNldC5oPgorCituYW1lc3BhY2UgSlNDIHsKKworLy8gQmFzZWQgb24g
dGhlIFNvdXJjZSBUZXh0IE1vZHVsZSBSZWNvcmQKKy8vIGh0dHA6Ly93d3cuZWNtYS1pbnRlcm5h
dGlvbmFsLm9yZy9lY21hLTI2Mi82LjAvI3NlYy1zb3VyY2UtdGV4dC1tb2R1bGUtcmVjb3Jkcwor
Y2xhc3MgSlNNb2R1bGVSZWNvcmQgOiBwdWJsaWMgSlNEZXN0cnVjdGlibGVPYmplY3QgeworcHVi
bGljOgorICAgIHR5cGVkZWYgSlNEZXN0cnVjdGlibGVPYmplY3QgQmFzZTsKKworICAgIHN0cnVj
dCBFeHBvcnRFbnRyeSB7CisgICAgICAgIGVudW0gY2xhc3MgVHlwZSB7CisgICAgICAgICAgICBM
b2NhbCwKKyAgICAgICAgICAgIE5hbWVzcGFjZSwKKyAgICAgICAgICAgIEluZGlyZWN0CisgICAg
ICAgIH07CisKKyAgICAgICAgc3RhdGljIEV4cG9ydEVudHJ5IGNyZWF0ZUxvY2FsKGNvbnN0IElk
ZW50aWZpZXImIGV4cG9ydE5hbWUsIGNvbnN0IElkZW50aWZpZXImIGxvY2FsTmFtZSwgY29uc3Qg
VmFyaWFibGVFbnZpcm9ubWVudEVudHJ5Jik7CisgICAgICAgIHN0YXRpYyBFeHBvcnRFbnRyeSBj
cmVhdGVOYW1lc3BhY2UoY29uc3QgSWRlbnRpZmllciYgZXhwb3J0TmFtZSwgY29uc3QgSWRlbnRp
ZmllciYgbW9kdWxlTmFtZSk7CisgICAgICAgIHN0YXRpYyBFeHBvcnRFbnRyeSBjcmVhdGVJbmRp
cmVjdChjb25zdCBJZGVudGlmaWVyJiBleHBvcnROYW1lLCBjb25zdCBJZGVudGlmaWVyJiBpbXBv
cnROYW1lLCBjb25zdCBJZGVudGlmaWVyJiBtb2R1bGVOYW1lKTsKKworICAgICAgICBUeXBlIHR5
cGU7CisgICAgICAgIElkZW50aWZpZXIgZXhwb3J0TmFtZTsKKyAgICAgICAgSWRlbnRpZmllciBt
b2R1bGVOYW1lOworICAgICAgICBJZGVudGlmaWVyIGltcG9ydE5hbWU7CisgICAgICAgIElkZW50
aWZpZXIgbG9jYWxOYW1lOworICAgICAgICBWYXJpYWJsZUVudmlyb25tZW50RW50cnkgdmFyaWFi
bGU7CisgICAgfTsKKworICAgIHN0cnVjdCBJbXBvcnRFbnRyeSB7CisgICAgICAgIElkZW50aWZp
ZXIgbW9kdWxlUmVxdWVzdDsKKyAgICAgICAgSWRlbnRpZmllciBpbXBvcnROYW1lOworICAgICAg
ICBJZGVudGlmaWVyIGxvY2FsTmFtZTsKKworICAgICAgICBib29sIGlzTmFtZXNwYWNlKFZNJiB2
bSkgY29uc3QKKyAgICAgICAgeworICAgICAgICAgICAgcmV0dXJuIGltcG9ydE5hbWUgPT0gdm0u
cHJvcGVydHlOYW1lcy0+dGltZXNJZGVudGlmaWVyOworICAgICAgICB9CisgICAgfTsKKworICAg
IHR5cGVkZWYgV1RGOjpMaXN0SGFzaFNldDxSZWZQdHI8VW5pcXVlZFN0cmluZ0ltcGw+LCBJZGVu
dGlmaWVyUmVwSGFzaD4gT3JkZXJlZElkZW50aWZpZXJTZXQ7CisgICAgdHlwZWRlZiBIYXNoTWFw
PFJlZlB0cjxVbmlxdWVkU3RyaW5nSW1wbD4sIEltcG9ydEVudHJ5LCBJZGVudGlmaWVyUmVwSGFz
aCwgSGFzaFRyYWl0czxSZWZQdHI8VW5pcXVlZFN0cmluZ0ltcGw+Pj4gSW1wb3J0TWFwOworICAg
IHR5cGVkZWYgSGFzaE1hcDxSZWZQdHI8VW5pcXVlZFN0cmluZ0ltcGw+LCBFeHBvcnRFbnRyeSwg
SWRlbnRpZmllclJlcEhhc2gsIEhhc2hUcmFpdHM8UmVmUHRyPFVuaXF1ZWRTdHJpbmdJbXBsPj4+
IEV4cG9ydE1hcDsKKworICAgIERFQ0xBUkVfRVhQT1JUX0lORk87CisKKyAgICBzdGF0aWMgU3Ry
dWN0dXJlKiBjcmVhdGVTdHJ1Y3R1cmUoVk0mIHZtLCBKU0dsb2JhbE9iamVjdCogZ2xvYmFsT2Jq
ZWN0LCBKU1ZhbHVlIHByb3RvdHlwZSkKKyAgICB7CisgICAgICAgIHJldHVybiBTdHJ1Y3R1cmU6
OmNyZWF0ZSh2bSwgZ2xvYmFsT2JqZWN0LCBwcm90b3R5cGUsIFR5cGVJbmZvKE9iamVjdFR5cGUs
IFN0cnVjdHVyZUZsYWdzKSwgaW5mbygpKTsKKyAgICB9CisKKyAgICBzdGF0aWMgSlNNb2R1bGVS
ZWNvcmQqIGNyZWF0ZShWTSYgdm0sIFN0cnVjdHVyZSogc3RydWN0dXJlLCBjb25zdCBJZGVudGlm
aWVyJiBtb2R1bGVLZXkpCisgICAgeworICAgICAgICBKU01vZHVsZVJlY29yZCogaW5zdGFuY2Ug
PSBuZXcgKE5vdE51bGwsIGFsbG9jYXRlQ2VsbDxKU01vZHVsZVJlY29yZD4odm0uaGVhcCkpIEpT
TW9kdWxlUmVjb3JkKHZtLCBzdHJ1Y3R1cmUsIG1vZHVsZUtleSk7CisgICAgICAgIGluc3RhbmNl
LT5maW5pc2hDcmVhdGlvbih2bSk7CisgICAgICAgIHJldHVybiBpbnN0YW5jZTsKKyAgICB9CisK
KyAgICBzdGF0aWMgSlNNb2R1bGVSZWNvcmQqIGNyZWF0ZShFeGVjU3RhdGUqIGV4ZWMsIFN0cnVj
dHVyZSogc3RydWN0dXJlLCBjb25zdCBJZGVudGlmaWVyJiBtb2R1bGVLZXkpCisgICAgeworICAg
ICAgICByZXR1cm4gY3JlYXRlKGV4ZWMtPnZtKCksIHN0cnVjdHVyZSwgbW9kdWxlS2V5KTsKKyAg
ICB9CisKKyAgICB2b2lkIGFwcGVuZFJlcXVlc3RlZE1vZHVsZShjb25zdCBJZGVudGlmaWVyJik7
CisgICAgdm9pZCBhZGRTdGFyRXhwb3J0RW50cnkoY29uc3QgSWRlbnRpZmllciYpOworICAgIHZv
aWQgYWRkSW1wb3J0RW50cnkoY29uc3QgSW1wb3J0RW50cnkmKTsKKyAgICB2b2lkIGFkZEV4cG9y
dEVudHJ5KGNvbnN0IEV4cG9ydEVudHJ5Jik7CisKKyAgICBjb25zdCBJbXBvcnRFbnRyeSYgbG9v
a1VwSW1wb3J0RW50cnkoY29uc3QgUmVmUHRyPFVuaXF1ZWRTdHJpbmdJbXBsPiYgbG9jYWxOYW1l
KTsKKworICAgIGNvbnN0IE9yZGVyZWRJZGVudGlmaWVyU2V0JiByZXF1ZXN0ZWRNb2R1bGVzKCkg
Y29uc3QgeyByZXR1cm4gbV9yZXF1ZXN0ZWRNb2R1bGVzOyB9CisKKyAgICB2b2lkIGR1bXAoKTsK
KworcHJpdmF0ZToKKyAgICBKU01vZHVsZVJlY29yZChWTSYgdm0sIFN0cnVjdHVyZSogc3RydWN0
dXJlLCBjb25zdCBJZGVudGlmaWVyJiBtb2R1bGVLZXkpCisgICAgICAgIDogQmFzZSh2bSwgc3Ry
dWN0dXJlKQorICAgICAgICAsIG1fbW9kdWxlS2V5KG1vZHVsZUtleSkKKyAgICB7CisgICAgfQor
CisgICAgdm9pZCBmaW5pc2hDcmVhdGlvbihWTSYpOworCisgICAgc3RhdGljIHZvaWQgZGVzdHJv
eShKU0NlbGwqKTsKKworICAgIC8vIFRoZSBsb2FkZXIgcmVzb2x2ZXMgdGhlIGdpdmVuIG1vZHVs
ZSBuYW1lIHRvIHRoZSBtb2R1bGUga2V5LiBUaGUgbW9kdWxlIGtleSBpcyB0aGUgdW5pcXVlIHZh
bHVlIHRvIHJlcHJlc2VudCB0aGlzIG1vZHVsZS4KKyAgICBJZGVudGlmaWVyIG1fbW9kdWxlS2V5
OworCisgICAgLy8gTWFwIGxvY2FsTmFtZSAtPiBJbXBvcnRFbnRyeS4KKyAgICBJbXBvcnRNYXAg
bV9pbXBvcnRFbnRyaWVzOworCisgICAgLy8gTWFwIGV4cG9ydE5hbWUgLT4gRXhwb3J0RW50cnku
CisgICAgRXhwb3J0TWFwIG1fZXhwb3J0RW50cmllczsKKworICAgIElkZW50aWZpZXJTZXQgbV9z
dGFyRXhwb3J0RW50cmllczsKKworICAgIC8vIFNhdmUgdGhlIG9jY3VycmVuY2Ugb3JkZXIgc2lu
Y2UgdGhlIG1vZHVsZSBsb2FkZXIgbG9hZHMgYW5kIHJ1bnMgdGhlIG1vZHVsZXMgaW4gdGhpcyBv
cmRlci4KKyAgICAvLyBodHRwOi8vd3d3LmVjbWEtaW50ZXJuYXRpb25hbC5vcmcvZWNtYS0yNjIv
Ni4wLyNzZWMtbW9kdWxlZXZhbHVhdGlvbgorICAgIE9yZGVyZWRJZGVudGlmaWVyU2V0IG1fcmVx
dWVzdGVkTW9kdWxlczsKK307CisKK2lubGluZSB2b2lkIEpTTW9kdWxlUmVjb3JkOjphcHBlbmRS
ZXF1ZXN0ZWRNb2R1bGUoY29uc3QgSWRlbnRpZmllciYgbW9kdWxlTmFtZSkKK3sKKyAgICBtX3Jl
cXVlc3RlZE1vZHVsZXMuYWRkKG1vZHVsZU5hbWUuaW1wbCgpKTsKK30KKworaW5saW5lIHZvaWQg
SlNNb2R1bGVSZWNvcmQ6OmFkZEltcG9ydEVudHJ5KGNvbnN0IEltcG9ydEVudHJ5JiBlbnRyeSkK
K3sKKyAgICBtX2ltcG9ydEVudHJpZXMuYWRkKGVudHJ5LmxvY2FsTmFtZS5pbXBsKCksIGVudHJ5
KTsKK30KKworaW5saW5lIHZvaWQgSlNNb2R1bGVSZWNvcmQ6OmFkZEV4cG9ydEVudHJ5KGNvbnN0
IEV4cG9ydEVudHJ5JiBlbnRyeSkKK3sKKyAgICBtX2V4cG9ydEVudHJpZXMuYWRkKGVudHJ5LmV4
cG9ydE5hbWUuaW1wbCgpLCBlbnRyeSk7Cit9CisKK2lubGluZSB2b2lkIEpTTW9kdWxlUmVjb3Jk
OjphZGRTdGFyRXhwb3J0RW50cnkoY29uc3QgSWRlbnRpZmllciYgbW9kdWxlTmFtZSkKK3sKKyAg
ICBtX3N0YXJFeHBvcnRFbnRyaWVzLmFkZChtb2R1bGVOYW1lLmltcGwoKSk7Cit9CisKK2lubGlu
ZSBhdXRvIEpTTW9kdWxlUmVjb3JkOjpsb29rVXBJbXBvcnRFbnRyeShjb25zdCBSZWZQdHI8VW5p
cXVlZFN0cmluZ0ltcGw+JiBsb2NhbE5hbWUpIC0+IGNvbnN0IEltcG9ydEVudHJ5JgoreworICAg
IHJldHVybiAoKm1faW1wb3J0RW50cmllcy5maW5kKGxvY2FsTmFtZSkpLnZhbHVlOworfQorCit9
IC8vIG5hbWVzcGFjZSBKU0MKKworI2VuZGlmIC8vIEpTTW9kdWxlUmVjb3JkX2gKZGlmZiAtLWdp
dCBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL01hcFByb3RvdHlwZS5jcHAgYi9Tb3Vy
Y2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9NYXBQcm90b3R5cGUuY3BwCmluZGV4IDk2ZGVhZTcx
NGNhNTFhNjdmZDE2NDA4ZTVjMzlkM2M2NTY3Mzg5NGQuLmU5NzJmNTQwZWZiMmYxZTZhNDhkMTI1
MDNmMDMxODk3MWY0MmRmODIgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50
aW1lL01hcFByb3RvdHlwZS5jcHAKKysrIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUv
TWFwUHJvdG90eXBlLmNwcApAQCAtNjgsNiArNjgsMTAgQEAgdm9pZCBNYXBQcm90b3R5cGU6OmZp
bmlzaENyZWF0aW9uKFZNJiB2bSwgSlNHbG9iYWxPYmplY3QqIGdsb2JhbE9iamVjdCkKICAgICBK
U0NfTkFUSVZFX0ZVTkNUSU9OKHZtLnByb3BlcnR5TmFtZXMtPmtleXMsIG1hcFByb3RvRnVuY0tl
eXMsIERvbnRFbnVtLCAwKTsKICAgICBKU0NfTkFUSVZFX0ZVTkNUSU9OKHZtLnByb3BlcnR5TmFt
ZXMtPnZhbHVlcywgbWFwUHJvdG9GdW5jVmFsdWVzLCBEb250RW51bSwgMCk7CiAKKyAgICAvLyBQ
cml2YXRlIGdldCAvIHNldCBvcGVyYXRpb25zLgorICAgIEpTQ19OQVRJVkVfRlVOQ1RJT04odm0u
cHJvcGVydHlOYW1lcy0+Z2V0UHJpdmF0ZU5hbWUsIG1hcFByb3RvRnVuY0dldCwgRG9udEVudW0s
IDEpOworICAgIEpTQ19OQVRJVkVfRlVOQ1RJT04odm0ucHJvcGVydHlOYW1lcy0+c2V0UHJpdmF0
ZU5hbWUsIG1hcFByb3RvRnVuY1NldCwgRG9udEVudW0sIDIpOworCiAgICAgSlNGdW5jdGlvbiog
ZW50cmllcyA9IEpTRnVuY3Rpb246OmNyZWF0ZSh2bSwgZ2xvYmFsT2JqZWN0LCAwLCB2bS5wcm9w
ZXJ0eU5hbWVzLT5lbnRyaWVzLnN0cmluZygpLCBtYXBQcm90b0Z1bmNFbnRyaWVzKTsKICAgICBw
dXREaXJlY3RXaXRob3V0VHJhbnNpdGlvbih2bSwgdm0ucHJvcGVydHlOYW1lcy0+ZW50cmllcywg
ZW50cmllcywgRG9udEVudW0pOwogICAgIHB1dERpcmVjdFdpdGhvdXRUcmFuc2l0aW9uKHZtLCB2
bS5wcm9wZXJ0eU5hbWVzLT5pdGVyYXRvclN5bWJvbCwgZW50cmllcywgRG9udEVudW0pOwpkaWZm
IC0tZ2l0IGEvU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvTW9kdWxlTG9hZGVyT2JqZWN0
LmNwcCBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL01vZHVsZUxvYWRlck9iamVjdC5j
cHAKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMC4uMzA2ODc3ZGE4MzBlZDJiMTc3MzVhMjgxMTMxNmNhMzQ1ZmIwYWIyOQot
LS0gL2Rldi9udWxsCisrKyBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL01vZHVsZUxv
YWRlck9iamVjdC5jcHAKQEAgLTAsMCArMSwzMDYgQEAKKy8qCisgKiBDb3B5cmlnaHQgKEMpIDIw
MTUgQXBwbGUgSW5jLiBBbGwgUmlnaHRzIFJlc2VydmVkLgorICoKKyAqIFJlZGlzdHJpYnV0aW9u
IGFuZCB1c2UgaW4gc291cmNlIGFuZCBiaW5hcnkgZm9ybXMsIHdpdGggb3Igd2l0aG91dAorICog
bW9kaWZpY2F0aW9uLCBhcmUgcGVybWl0dGVkIHByb3ZpZGVkIHRoYXQgdGhlIGZvbGxvd2luZyBj
b25kaXRpb25zCisgKiBhcmUgbWV0OgorICogMS4gUmVkaXN0cmlidXRpb25zIG9mIHNvdXJjZSBj
b2RlIG11c3QgcmV0YWluIHRoZSBhYm92ZSBjb3B5cmlnaHQKKyAqICAgIG5vdGljZSwgdGhpcyBs
aXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lci4KKyAqIDIuIFJl
ZGlzdHJpYnV0aW9ucyBpbiBiaW5hcnkgZm9ybSBtdXN0IHJlcHJvZHVjZSB0aGUgYWJvdmUgY29w
eXJpZ2h0CisgKiAgICBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9s
bG93aW5nIGRpc2NsYWltZXIgaW4gdGhlCisgKiAgICBkb2N1bWVudGF0aW9uIGFuZC9vciBvdGhl
ciBtYXRlcmlhbHMgcHJvdmlkZWQgd2l0aCB0aGUgZGlzdHJpYnV0aW9uLgorICoKKyAqIFRISVMg
U09GVFdBUkUgSVMgUFJPVklERUQgQlkgQVBQTEUgSU5DLiBgYEFTIElTJycgQU5EIEFOWQorICog
RVhQUkVTUyBPUiBJTVBMSUVEIFdBUlJBTlRJRVMsIElOQ0xVRElORywgQlVUIE5PVCBMSU1JVEVE
IFRPLCBUSEUKKyAqIElNUExJRUQgV0FSUkFOVElFUyBPRiBNRVJDSEFOVEFCSUxJVFkgQU5EIEZJ
VE5FU1MgRk9SIEEgUEFSVElDVUxBUgorICogUFVSUE9TRSBBUkUgRElTQ0xBSU1FRC4gIElOIE5P
IEVWRU5UIFNIQUxMIEFQUExFIElOQy4gT1IKKyAqIENPTlRSSUJVVE9SUyBCRSBMSUFCTEUgRk9S
IEFOWSBESVJFQ1QsIElORElSRUNULCBJTkNJREVOVEFMLCBTUEVDSUFMLAorICogRVhFTVBMQVJZ
LCBPUiBDT05TRVFVRU5USUFMIERBTUFHRVMgKElOQ0xVRElORywgQlVUIE5PVCBMSU1JVEVEIFRP
LAorICogUFJPQ1VSRU1FTlQgT0YgU1VCU1RJVFVURSBHT09EUyBPUiBTRVJWSUNFUzsgTE9TUyBP
RiBVU0UsIERBVEEsIE9SCisgKiBQUk9GSVRTOyBPUiBCVVNJTkVTUyBJTlRFUlJVUFRJT04pIEhP
V0VWRVIgQ0FVU0VEIEFORCBPTiBBTlkgVEhFT1JZCisgKiBPRiBMSUFCSUxJVFksIFdIRVRIRVIg
SU4gQ09OVFJBQ1QsIFNUUklDVCBMSUFCSUxJVFksIE9SIFRPUlQKKyAqIChJTkNMVURJTkcgTkVH
TElHRU5DRSBPUiBPVEhFUldJU0UpIEFSSVNJTkcgSU4gQU5ZIFdBWSBPVVQgT0YgVEhFIFVTRQor
ICogT0YgVEhJUyBTT0ZUV0FSRSwgRVZFTiBJRiBBRFZJU0VEIE9GIFRIRSBQT1NTSUJJTElUWSBP
RiBTVUNIIERBTUFHRS4KKyAqLworCisjaW5jbHVkZSAiY29uZmlnLmgiCisjaW5jbHVkZSAiTW9k
dWxlTG9hZGVyT2JqZWN0LmgiCisKKyNpbmNsdWRlICJCdWlsdGluTmFtZXMuaCIKKyNpbmNsdWRl
ICJFcnJvci5oIgorI2luY2x1ZGUgIkV4Y2VwdGlvbi5oIgorI2luY2x1ZGUgIkpTQ0lubGluZXMu
aCIKKyNpbmNsdWRlICJKU0dsb2JhbE9iamVjdEZ1bmN0aW9ucy5oIgorI2luY2x1ZGUgIkpTSW50
ZXJuYWxQcm9taXNlLmgiCisjaW5jbHVkZSAiSlNJbnRlcm5hbFByb21pc2VEZWZlcnJlZC5oIgor
I2luY2x1ZGUgIkpTTWFwLmgiCisjaW5jbHVkZSAiSlNNb2R1bGVSZWNvcmQuaCIKKyNpbmNsdWRl
ICJNb2R1bGVBbmFseXplci5oIgorI2luY2x1ZGUgIk5vZGVzLmgiCisjaW5jbHVkZSAiUGFyc2Vy
LmgiCisjaW5jbHVkZSAiUGFyc2VyRXJyb3IuaCIKKworbmFtZXNwYWNlIEpTQyB7CisKK3N0YXRp
YyBFbmNvZGVkSlNWYWx1ZSBKU0NfSE9TVF9DQUxMIG1vZHVsZUxvYWRlck9iamVjdFBhcnNlTW9k
dWxlKEV4ZWNTdGF0ZSopOworc3RhdGljIEVuY29kZWRKU1ZhbHVlIEpTQ19IT1NUX0NBTEwgbW9k
dWxlTG9hZGVyT2JqZWN0UmVxdWVzdGVkTW9kdWxlcyhFeGVjU3RhdGUqKTsKK3N0YXRpYyBFbmNv
ZGVkSlNWYWx1ZSBKU0NfSE9TVF9DQUxMIG1vZHVsZUxvYWRlck9iamVjdFJlc29sdmUoRXhlY1N0
YXRlKik7CitzdGF0aWMgRW5jb2RlZEpTVmFsdWUgSlNDX0hPU1RfQ0FMTCBtb2R1bGVMb2FkZXJP
YmplY3RGZXRjaChFeGVjU3RhdGUqKTsKK3N0YXRpYyBFbmNvZGVkSlNWYWx1ZSBKU0NfSE9TVF9D
QUxMIG1vZHVsZUxvYWRlck9iamVjdFRyYW5zbGF0ZShFeGVjU3RhdGUqKTsKK3N0YXRpYyBFbmNv
ZGVkSlNWYWx1ZSBKU0NfSE9TVF9DQUxMIG1vZHVsZUxvYWRlck9iamVjdEluc3RhbnRpYXRlKEV4
ZWNTdGF0ZSopOworCit9CisKKyNpbmNsdWRlICJNb2R1bGVMb2FkZXJPYmplY3QubHV0LmgiCisK
K25hbWVzcGFjZSBKU0MgeworCitTVEFUSUNfQVNTRVJUX0lTX1RSSVZJQUxMWV9ERVNUUlVDVElC
TEUoTW9kdWxlTG9hZGVyT2JqZWN0KTsKKworY29uc3QgQ2xhc3NJbmZvIE1vZHVsZUxvYWRlck9i
amVjdDo6c19pbmZvID0geyAiTW9kdWxlTG9hZGVyIiwgJkJhc2U6OnNfaW5mbywgJm1vZHVsZUxv
YWRlck9iamVjdFRhYmxlLCBDUkVBVEVfTUVUSE9EX1RBQkxFKE1vZHVsZUxvYWRlck9iamVjdCkg
fTsKKworLyogU291cmNlIGZvciBNb2R1bGVMb2FkZXJPYmplY3QubHV0LmgKK0BiZWdpbiBtb2R1
bGVMb2FkZXJPYmplY3RUYWJsZQorICAgIHNldFN0YXRlVG9NYXggICAgICAgICAgICAgIG1vZHVs
ZUxvYWRlck9iamVjdFNldFN0YXRlVG9NYXggICAgICAgICAgICAgIERvbnRFbnVtfEZ1bmN0aW9u
IDIKKyAgICBuZXdSZWdpc3RyeUVudHJ5ICAgICAgICAgICBtb2R1bGVMb2FkZXJPYmplY3ROZXdS
ZWdpc3RyeUVudHJ5ICAgICAgICAgICBEb250RW51bXxGdW5jdGlvbiAxCisgICAgZW5zdXJlUmVn
aXN0ZXJlZCAgICAgICAgICAgbW9kdWxlTG9hZGVyT2JqZWN0RW5zdXJlUmVnaXN0ZXJlZCAgICAg
ICAgICAgRG9udEVudW18RnVuY3Rpb24gMQorICAgIGZvcmNlRnVsZmlsbFByb21pc2UgICAgICAg
IG1vZHVsZUxvYWRlck9iamVjdEZvcmNlRnVsZmlsbFByb21pc2UgICAgICAgIERvbnRFbnVtfEZ1
bmN0aW9uIDIKKyAgICBmdWxmaWxsRmV0Y2ggICAgICAgICAgICAgICBtb2R1bGVMb2FkZXJPYmpl
Y3RGdWxmaWxsRmV0Y2ggICAgICAgICAgICAgICBEb250RW51bXxGdW5jdGlvbiAyCisgICAgZnVs
ZmlsbFRyYW5zbGF0ZSAgICAgICAgICAgbW9kdWxlTG9hZGVyT2JqZWN0RnVsZmlsbFRyYW5zbGF0
ZSAgICAgICAgICAgRG9udEVudW18RnVuY3Rpb24gMgorICAgIGZ1bGZpbGxJbnN0YW50aWF0ZSAg
ICAgICAgIG1vZHVsZUxvYWRlck9iamVjdEZ1bGZpbGxJbnN0YW50aWF0ZSAgICAgICAgIERvbnRF
bnVtfEZ1bmN0aW9uIDIKKyAgICBjb21taXRJbnN0YW50aWF0ZWQgICAgICAgICBtb2R1bGVMb2Fk
ZXJPYmplY3RDb21taXRJbnN0YW50aWF0ZWQgICAgICAgICBEb250RW51bXxGdW5jdGlvbiAzCisg
ICAgaW5zdGFudGlhdGlvbiAgICAgICAgICAgICAgbW9kdWxlTG9hZGVyT2JqZWN0SW5zdGFudGlh
dGlvbiAgICAgICAgICAgICAgRG9udEVudW18RnVuY3Rpb24gMworICAgIHJlcXVlc3RGZXRjaCAg
ICAgICAgICAgICAgIG1vZHVsZUxvYWRlck9iamVjdFJlcXVlc3RGZXRjaCAgICAgICAgICAgICAg
IERvbnRFbnVtfEZ1bmN0aW9uIDEKKyAgICByZXF1ZXN0VHJhbnNsYXRlICAgICAgICAgICBtb2R1
bGVMb2FkZXJPYmplY3RSZXF1ZXN0VHJhbnNsYXRlICAgICAgICAgICBEb250RW51bXxGdW5jdGlv
biAxCisgICAgcmVxdWVzdEluc3RhbnRpYXRlICAgICAgICAgbW9kdWxlTG9hZGVyT2JqZWN0UmVx
dWVzdEluc3RhbnRpYXRlICAgICAgICAgRG9udEVudW18RnVuY3Rpb24gMQorICAgIHJlcXVlc3RS
ZXNvbHZlRGVwZW5kZW5jaWVzIG1vZHVsZUxvYWRlck9iamVjdFJlcXVlc3RSZXNvbHZlRGVwZW5k
ZW5jaWVzIERvbnRFbnVtfEZ1bmN0aW9uIDEKKyAgICByZXF1ZXN0SW5zdGFudGlhdGVBbGwgICAg
ICBtb2R1bGVMb2FkZXJPYmplY3RSZXF1ZXN0SW5zdGFudGlhdGVBbGwgICAgICBEb250RW51bXxG
dW5jdGlvbiAxCisgICAgcHJvdmlkZSAgICAgICAgICAgICAgICAgICAgbW9kdWxlTG9hZGVyT2Jq
ZWN0UHJvdmlkZSAgICAgICAgICAgICAgICAgICAgRG9udEVudW18RnVuY3Rpb24gMworICAgIHBh
cnNlTW9kdWxlICAgICAgICAgICAgICAgIG1vZHVsZUxvYWRlck9iamVjdFBhcnNlTW9kdWxlICAg
ICAgICAgICAgICAgIERvbnRFbnVtfEZ1bmN0aW9uIDIKKyAgICByZXF1ZXN0ZWRNb2R1bGVzICAg
ICAgICAgICBtb2R1bGVMb2FkZXJPYmplY3RSZXF1ZXN0ZWRNb2R1bGVzICAgICAgICAgICBEb250
RW51bXxGdW5jdGlvbiAxCisgICAgcmVzb2x2ZSAgICAgICAgICAgICAgICAgICAgbW9kdWxlTG9h
ZGVyT2JqZWN0UmVzb2x2ZSAgICAgICAgICAgICAgICAgICAgRG9udEVudW18RnVuY3Rpb24gMQor
ICAgIGZldGNoICAgICAgICAgICAgICAgICAgICAgIG1vZHVsZUxvYWRlck9iamVjdEZldGNoICAg
ICAgICAgICAgICAgICAgICAgIERvbnRFbnVtfEZ1bmN0aW9uIDEKKyAgICB0cmFuc2xhdGUgICAg
ICAgICAgICAgICAgICBtb2R1bGVMb2FkZXJPYmplY3RUcmFuc2xhdGUgICAgICAgICAgICAgICAg
ICBEb250RW51bXxGdW5jdGlvbiAyCisgICAgaW5zdGFudGlhdGUgICAgICAgICAgICAgICAgbW9k
dWxlTG9hZGVyT2JqZWN0SW5zdGFudGlhdGUgICAgICAgICAgICAgICAgRG9udEVudW18RnVuY3Rp
b24gMgorQGVuZAorKi8KKworTW9kdWxlTG9hZGVyT2JqZWN0OjpNb2R1bGVMb2FkZXJPYmplY3Qo
Vk0mIHZtLCBTdHJ1Y3R1cmUqIHN0cnVjdHVyZSkKKyAgICA6IEpTTm9uRmluYWxPYmplY3Qodm0s
IHN0cnVjdHVyZSkKK3sKK30KKwordm9pZCBNb2R1bGVMb2FkZXJPYmplY3Q6OmZpbmlzaENyZWF0
aW9uKFZNJiB2bSwgSlNHbG9iYWxPYmplY3QqIGdsb2JhbE9iamVjdCkKK3sKKyAgICBCYXNlOjpm
aW5pc2hDcmVhdGlvbih2bSk7CisgICAgQVNTRVJUKGluaGVyaXRzKGluZm8oKSkpOworCisgICAg
Ly8gQ29uc3RhbnQgdmFsdWVzIGZvciB0aGUgc3RhdGUuCisgICAgcHV0RGlyZWN0V2l0aG91dFRy
YW5zaXRpb24odm0sIElkZW50aWZpZXI6OmZyb21TdHJpbmcoJnZtLCAiRmV0Y2giKSwganNOdW1i
ZXIoU3RhdHVzOjpGZXRjaCkpOworICAgIHB1dERpcmVjdFdpdGhvdXRUcmFuc2l0aW9uKHZtLCBJ
ZGVudGlmaWVyOjpmcm9tU3RyaW5nKCZ2bSwgIlRyYW5zbGF0ZSIpLCBqc051bWJlcihTdGF0dXM6
OlRyYW5zbGF0ZSkpOworICAgIHB1dERpcmVjdFdpdGhvdXRUcmFuc2l0aW9uKHZtLCBJZGVudGlm
aWVyOjpmcm9tU3RyaW5nKCZ2bSwgIkluc3RhbnRpYXRlIiksIGpzTnVtYmVyKFN0YXR1czo6SW5z
dGFudGlhdGUpKTsKKyAgICBwdXREaXJlY3RXaXRob3V0VHJhbnNpdGlvbih2bSwgSWRlbnRpZmll
cjo6ZnJvbVN0cmluZygmdm0sICJSZXNvbHZlRGVwZW5kZW5jaWVzIiksIGpzTnVtYmVyKFN0YXR1
czo6UmVzb2x2ZURlcGVuZGVuY2llcykpOworICAgIHB1dERpcmVjdFdpdGhvdXRUcmFuc2l0aW9u
KHZtLCBJZGVudGlmaWVyOjpmcm9tU3RyaW5nKCZ2bSwgIkxpbmsiKSwganNOdW1iZXIoU3RhdHVz
OjpMaW5rKSk7CisgICAgcHV0RGlyZWN0V2l0aG91dFRyYW5zaXRpb24odm0sIElkZW50aWZpZXI6
OmZyb21TdHJpbmcoJnZtLCAiUmVhZHkiKSwganNOdW1iZXIoU3RhdHVzOjpSZWFkeSkpOworCisg
ICAgcHV0RGlyZWN0V2l0aG91dFRyYW5zaXRpb24odm0sIElkZW50aWZpZXI6OmZyb21TdHJpbmco
JnZtLCAicmVnaXN0cnkiKSwgSlNNYXA6OmNyZWF0ZSh2bSwgZ2xvYmFsT2JqZWN0LT5tYXBTdHJ1
Y3R1cmUoKSkpOworfQorCitib29sIE1vZHVsZUxvYWRlck9iamVjdDo6Z2V0T3duUHJvcGVydHlT
bG90KEpTT2JqZWN0KiBvYmplY3QsIEV4ZWNTdGF0ZSogZXhlYywgUHJvcGVydHlOYW1lIHByb3Bl
cnR5TmFtZSwgUHJvcGVydHlTbG90ICZzbG90KQoreworICAgIHJldHVybiBnZXRTdGF0aWNGdW5j
dGlvblNsb3Q8QmFzZT4oZXhlYywgbW9kdWxlTG9hZGVyT2JqZWN0VGFibGUsIGpzQ2FzdDxNb2R1
bGVMb2FkZXJPYmplY3QqPihvYmplY3QpLCBwcm9wZXJ0eU5hbWUsIHNsb3QpOworfQorCisvLyAt
LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0gRnVuY3Rpb25zIC0tLS0tLS0tLS0tLS0tLS0t
LS0tLS0tLS0tLS0tLS0tCisKK3N0YXRpYyBTdHJpbmcgcHJpbnRhYmxlTW9kdWxlS2V5KEV4ZWNT
dGF0ZSogZXhlYywgSlNWYWx1ZSBrZXkpCit7CisgICAgaWYgKGtleS5pc1N0cmluZygpIHx8IGtl
eS5pc1N5bWJvbCgpKQorICAgICAgICByZXR1cm4ga2V5LnRvUHJvcGVydHlLZXkoZXhlYykuaW1w
bCgpOworICAgIHJldHVybiBleGVjLT5wcm9wZXJ0eU5hbWVzKCkuZW1wdHlJZGVudGlmaWVyLmlt
cGwoKTsKK30KKworSlNWYWx1ZSBNb2R1bGVMb2FkZXJPYmplY3Q6OnByb3ZpZGUoRXhlY1N0YXRl
KiBleGVjLCBKU1ZhbHVlIGtleSwgU3RhdHVzIHN0YXR1cywgY29uc3QgU3RyaW5nJiBzb3VyY2Up
Cit7CisgICAgSlNPYmplY3QqIGZ1bmN0aW9uID0ganNDYXN0PEpTT2JqZWN0Kj4oZ2V0KGV4ZWMs
IGV4ZWMtPnByb3BlcnR5TmFtZXMoKS5idWlsdGluTmFtZXMoKS5wcm92aWRlUHVibGljTmFtZSgp
KSk7CisgICAgQ2FsbERhdGEgY2FsbERhdGE7CisgICAgQ2FsbFR5cGUgY2FsbFR5cGUgPSBKU0M6
OmdldENhbGxEYXRhKGZ1bmN0aW9uLCBjYWxsRGF0YSk7CisgICAgQVNTRVJUKGNhbGxUeXBlICE9
IENhbGxUeXBlTm9uZSk7CisKKyAgICBNYXJrZWRBcmd1bWVudEJ1ZmZlciBhcmd1bWVudHM7Cisg
ICAgYXJndW1lbnRzLmFwcGVuZChrZXkpOworICAgIGFyZ3VtZW50cy5hcHBlbmQoanNOdW1iZXIo
c3RhdHVzKSk7CisgICAgYXJndW1lbnRzLmFwcGVuZChqc1N0cmluZyhleGVjLCBzb3VyY2UpKTsK
KworICAgIHJldHVybiBjYWxsKGV4ZWMsIGZ1bmN0aW9uLCBjYWxsVHlwZSwgY2FsbERhdGEsIHRo
aXMsIGFyZ3VtZW50cyk7Cit9CisKK0pTVmFsdWUgTW9kdWxlTG9hZGVyT2JqZWN0OjpyZXF1ZXN0
SW5zdGFudGlhdGVBbGwoRXhlY1N0YXRlKiBleGVjLCBKU1ZhbHVlIGtleSkKK3sKKyAgICBKU09i
amVjdCogZnVuY3Rpb24gPSBqc0Nhc3Q8SlNPYmplY3QqPihnZXQoZXhlYywgZXhlYy0+cHJvcGVy
dHlOYW1lcygpLmJ1aWx0aW5OYW1lcygpLnJlcXVlc3RJbnN0YW50aWF0ZUFsbFB1YmxpY05hbWUo
KSkpOworICAgIENhbGxEYXRhIGNhbGxEYXRhOworICAgIENhbGxUeXBlIGNhbGxUeXBlID0gSlND
OjpnZXRDYWxsRGF0YShmdW5jdGlvbiwgY2FsbERhdGEpOworICAgIEFTU0VSVChjYWxsVHlwZSAh
PSBDYWxsVHlwZU5vbmUpOworCisgICAgTWFya2VkQXJndW1lbnRCdWZmZXIgYXJndW1lbnRzOwor
ICAgIGFyZ3VtZW50cy5hcHBlbmQoa2V5KTsKKworICAgIHJldHVybiBjYWxsKGV4ZWMsIGZ1bmN0
aW9uLCBjYWxsVHlwZSwgY2FsbERhdGEsIHRoaXMsIGFyZ3VtZW50cyk7Cit9CisKK0pTVmFsdWUg
TW9kdWxlTG9hZGVyT2JqZWN0OjpyZXNvbHZlKEV4ZWNTdGF0ZSogZXhlYywgSlNWYWx1ZSBuYW1l
LCBKU1ZhbHVlIHJlZmVycmVyKQoreworICAgIGlmIChPcHRpb25zOjpkdW1wTW9kdWxlTG9hZGlu
Z1N0YXRlKCkpCisgICAgICAgIGRhdGFMb2coIkxvYWRlciBbcmVzb2x2ZV0gIiwgcHJpbnRhYmxl
TW9kdWxlS2V5KGV4ZWMsIG5hbWUpLCAiXG4iKTsKKworICAgIEpTR2xvYmFsT2JqZWN0KiBnbG9i
YWxPYmplY3QgPSBleGVjLT5sZXhpY2FsR2xvYmFsT2JqZWN0KCk7CisgICAgaWYgKGdsb2JhbE9i
amVjdC0+Z2xvYmFsT2JqZWN0TWV0aG9kVGFibGUoKS0+bG9hZGVyUmVzb2x2ZSkKKyAgICAgICAg
cmV0dXJuIGdsb2JhbE9iamVjdC0+Z2xvYmFsT2JqZWN0TWV0aG9kVGFibGUoKS0+bG9hZGVyUmVz
b2x2ZShnbG9iYWxPYmplY3QsIGV4ZWMsIG5hbWUsIHJlZmVycmVyKTsKKyAgICBKU0ludGVybmFs
UHJvbWlzZURlZmVycmVkKiBkZWZlcnJlZCA9IEpTSW50ZXJuYWxQcm9taXNlRGVmZXJyZWQ6OmNy
ZWF0ZShleGVjLCBnbG9iYWxPYmplY3QpOworICAgIGRlZmVycmVkLT5yZXNvbHZlKGV4ZWMsIG5h
bWUpOworICAgIHJldHVybiBkZWZlcnJlZC0+cHJvbWlzZSgpOworfQorCitKU1ZhbHVlIE1vZHVs
ZUxvYWRlck9iamVjdDo6ZmV0Y2goRXhlY1N0YXRlKiBleGVjLCBKU1ZhbHVlIGtleSkKK3sKKyAg
ICBpZiAoT3B0aW9uczo6ZHVtcE1vZHVsZUxvYWRpbmdTdGF0ZSgpKQorICAgICAgICBkYXRhTG9n
KCJMb2FkZXIgW2ZldGNoXSAiLCBwcmludGFibGVNb2R1bGVLZXkoZXhlYywga2V5KSwgIlxuIik7
CisKKyAgICBKU0dsb2JhbE9iamVjdCogZ2xvYmFsT2JqZWN0ID0gZXhlYy0+bGV4aWNhbEdsb2Jh
bE9iamVjdCgpOworICAgIGlmIChnbG9iYWxPYmplY3QtPmdsb2JhbE9iamVjdE1ldGhvZFRhYmxl
KCktPmxvYWRlckZldGNoKQorICAgICAgICByZXR1cm4gZ2xvYmFsT2JqZWN0LT5nbG9iYWxPYmpl
Y3RNZXRob2RUYWJsZSgpLT5sb2FkZXJGZXRjaChnbG9iYWxPYmplY3QsIGV4ZWMsIGtleSk7Cisg
ICAgSlNJbnRlcm5hbFByb21pc2VEZWZlcnJlZCogZGVmZXJyZWQgPSBKU0ludGVybmFsUHJvbWlz
ZURlZmVycmVkOjpjcmVhdGUoZXhlYywgZ2xvYmFsT2JqZWN0KTsKKyAgICBTdHJpbmcgbW9kdWxl
S2V5ID0ga2V5LnRvU3RyaW5nKGV4ZWMpLT52YWx1ZShleGVjKTsKKyAgICBpZiAoZXhlYy0+aGFk
RXhjZXB0aW9uKCkpIHsKKyAgICAgICAgSlNWYWx1ZSBleGNlcHRpb24gPSBleGVjLT5leGNlcHRp
b24oKS0+dmFsdWUoKTsKKyAgICAgICAgZXhlYy0+Y2xlYXJFeGNlcHRpb24oKTsKKyAgICAgICAg
ZGVmZXJyZWQtPnJlamVjdChleGVjLCBleGNlcHRpb24pOworICAgICAgICByZXR1cm4gZGVmZXJy
ZWQtPnByb21pc2UoKTsKKyAgICB9CisgICAgZGVmZXJyZWQtPnJlamVjdChleGVjLCBjcmVhdGVF
cnJvcihleGVjLCBtYWtlU3RyaW5nKCJDb3VsZCBub3Qgb3BlbiB0aGUgbW9kdWxlICciLCBtb2R1
bGVLZXksICInLiIpKSk7CisgICAgcmV0dXJuIGRlZmVycmVkLT5wcm9taXNlKCk7Cit9CisKK0pT
VmFsdWUgTW9kdWxlTG9hZGVyT2JqZWN0Ojp0cmFuc2xhdGUoRXhlY1N0YXRlKiBleGVjLCBKU1Zh
bHVlIGtleSwgSlNWYWx1ZSBwYXlsb2FkKQoreworICAgIGlmIChPcHRpb25zOjpkdW1wTW9kdWxl
TG9hZGluZ1N0YXRlKCkpCisgICAgICAgIGRhdGFMb2coIkxvYWRlciBbdHJhbnNsYXRlXSAiLCBw
cmludGFibGVNb2R1bGVLZXkoZXhlYywga2V5KSwgIlxuIik7CisKKyAgICBKU0dsb2JhbE9iamVj
dCogZ2xvYmFsT2JqZWN0ID0gZXhlYy0+bGV4aWNhbEdsb2JhbE9iamVjdCgpOworICAgIGlmIChn
bG9iYWxPYmplY3QtPmdsb2JhbE9iamVjdE1ldGhvZFRhYmxlKCktPmxvYWRlclRyYW5zbGF0ZSkK
KyAgICAgICAgcmV0dXJuIGdsb2JhbE9iamVjdC0+Z2xvYmFsT2JqZWN0TWV0aG9kVGFibGUoKS0+
bG9hZGVyVHJhbnNsYXRlKGdsb2JhbE9iamVjdCwgZXhlYywga2V5LCBwYXlsb2FkKTsKKyAgICBK
U0ludGVybmFsUHJvbWlzZURlZmVycmVkKiBkZWZlcnJlZCA9IEpTSW50ZXJuYWxQcm9taXNlRGVm
ZXJyZWQ6OmNyZWF0ZShleGVjLCBnbG9iYWxPYmplY3QpOworICAgIGRlZmVycmVkLT5yZXNvbHZl
KGV4ZWMsIHBheWxvYWQpOworICAgIHJldHVybiBkZWZlcnJlZC0+cHJvbWlzZSgpOworfQorCitK
U1ZhbHVlIE1vZHVsZUxvYWRlck9iamVjdDo6aW5zdGFudGlhdGUoRXhlY1N0YXRlKiBleGVjLCBK
U1ZhbHVlIGtleSwgSlNWYWx1ZSBzb3VyY2UpCit7CisgICAgaWYgKE9wdGlvbnM6OmR1bXBNb2R1
bGVMb2FkaW5nU3RhdGUoKSkKKyAgICAgICAgZGF0YUxvZygiTG9hZGVyIFtpbnN0YW50aWF0ZV0g
IiwgcHJpbnRhYmxlTW9kdWxlS2V5KGV4ZWMsIGtleSksICJcbiIpOworCisgICAgSlNHbG9iYWxP
YmplY3QqIGdsb2JhbE9iamVjdCA9IGV4ZWMtPmxleGljYWxHbG9iYWxPYmplY3QoKTsKKyAgICBp
ZiAoZ2xvYmFsT2JqZWN0LT5nbG9iYWxPYmplY3RNZXRob2RUYWJsZSgpLT5sb2FkZXJJbnN0YW50
aWF0ZSkKKyAgICAgICAgcmV0dXJuIGdsb2JhbE9iamVjdC0+Z2xvYmFsT2JqZWN0TWV0aG9kVGFi
bGUoKS0+bG9hZGVySW5zdGFudGlhdGUoZ2xvYmFsT2JqZWN0LCBleGVjLCBrZXksIHNvdXJjZSk7
CisgICAgSlNJbnRlcm5hbFByb21pc2VEZWZlcnJlZCogZGVmZXJyZWQgPSBKU0ludGVybmFsUHJv
bWlzZURlZmVycmVkOjpjcmVhdGUoZXhlYywgZ2xvYmFsT2JqZWN0KTsKKyAgICBkZWZlcnJlZC0+
cmVzb2x2ZShleGVjLCBqc1VuZGVmaW5lZCgpKTsKKyAgICByZXR1cm4gZGVmZXJyZWQtPnByb21p
c2UoKTsKK30KKworLy8gLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tIEhvb2sgRnVuY3Rp
b25zIC0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLQorCitFbmNvZGVkSlNWYWx1ZSBKU0NfSE9T
VF9DQUxMIG1vZHVsZUxvYWRlck9iamVjdFBhcnNlTW9kdWxlKEV4ZWNTdGF0ZSogZXhlYykKK3sK
KyAgICBWTSYgdm0gPSBleGVjLT52bSgpOworICAgIGNvbnN0IElkZW50aWZpZXIgbW9kdWxlS2V5
ID0gZXhlYy0+YXJndW1lbnQoMCkudG9Qcm9wZXJ0eUtleShleGVjKTsKKyAgICBpZiAoZXhlYy0+
aGFkRXhjZXB0aW9uKCkpCisgICAgICAgIHJldHVybiBKU1ZhbHVlOjplbmNvZGUoanNVbmRlZmlu
ZWQoKSk7CisKKyAgICBTdHJpbmcgc291cmNlID0gZXhlYy0+YXJndW1lbnQoMSkudG9TdHJpbmco
ZXhlYyktPnZhbHVlKGV4ZWMpOworICAgIGlmIChleGVjLT5oYWRFeGNlcHRpb24oKSkKKyAgICAg
ICAgcmV0dXJuIEpTVmFsdWU6OmVuY29kZShqc1VuZGVmaW5lZCgpKTsKKworICAgIFNvdXJjZUNv
ZGUgc291cmNlQ29kZSA9IG1ha2VTb3VyY2Uoc291cmNlLCBtb2R1bGVLZXkuaW1wbCgpKTsKKwor
ICAgIFBhcnNlckVycm9yIGVycm9yOworICAgIHN0ZDo6dW5pcXVlX3B0cjxNb2R1bGVQcm9ncmFt
Tm9kZT4gbW9kdWxlUHJvZ3JhbU5vZGUgPSBwYXJzZTxNb2R1bGVQcm9ncmFtTm9kZT4oCisgICAg
ICAgICZ2bSwgc291cmNlQ29kZSwgSWRlbnRpZmllcigpLCBKU1BhcnNlckJ1aWx0aW5Nb2RlOjpO
b3RCdWlsdGluLAorICAgICAgICBKU1BhcnNlclN0cmljdE1vZGU6OlN0cmljdCwgU291cmNlUGFy
c2VNb2RlOjpNb2R1bGVBbmFseXplTW9kZSwgZXJyb3IpOworCisgICAgaWYgKGVycm9yLmlzVmFs
aWQoKSkgeworICAgICAgICB0aHJvd1ZNRXJyb3IoZXhlYywgZXJyb3IudG9FcnJvck9iamVjdChl
eGVjLT5sZXhpY2FsR2xvYmFsT2JqZWN0KCksIHNvdXJjZUNvZGUpKTsKKyAgICAgICAgcmV0dXJu
IEpTVmFsdWU6OmVuY29kZShqc1VuZGVmaW5lZCgpKTsKKyAgICB9CisgICAgQVNTRVJUKG1vZHVs
ZVByb2dyYW1Ob2RlKTsKKworICAgIE1vZHVsZUFuYWx5emVyIG1vZHVsZUFuYWx5emVyKGV4ZWMs
IG1vZHVsZUtleSwgbW9kdWxlUHJvZ3JhbU5vZGUtPnZhckRlY2xhcmF0aW9ucygpLCBtb2R1bGVQ
cm9ncmFtTm9kZS0+bGV4aWNhbFZhcmlhYmxlcygpKTsKKyAgICBKU01vZHVsZVJlY29yZCogbW9k
dWxlUmVjb3JkID0gbW9kdWxlQW5hbHl6ZXIuYW5hbHl6ZSgqbW9kdWxlUHJvZ3JhbU5vZGUpOwor
ICAgIHJldHVybiBKU1ZhbHVlOjplbmNvZGUobW9kdWxlUmVjb3JkKTsKK30KKworRW5jb2RlZEpT
VmFsdWUgSlNDX0hPU1RfQ0FMTCBtb2R1bGVMb2FkZXJPYmplY3RSZXF1ZXN0ZWRNb2R1bGVzKEV4
ZWNTdGF0ZSogZXhlYykKK3sKKyAgICBKU01vZHVsZVJlY29yZCogbW9kdWxlUmVjb3JkID0ganND
YXN0PEpTTW9kdWxlUmVjb3JkKj4oZXhlYy0+YXJndW1lbnQoMCkpOworICAgIGlmICghbW9kdWxl
UmVjb3JkKQorICAgICAgICByZXR1cm4gSlNWYWx1ZTo6ZW5jb2RlKGNvbnN0cnVjdEVtcHR5QXJy
YXkoZXhlYywgbnVsbHB0cikpOworCisgICAgSlNBcnJheSogcmVzdWx0ID0gY29uc3RydWN0RW1w
dHlBcnJheShleGVjLCBudWxscHRyLCBtb2R1bGVSZWNvcmQtPnJlcXVlc3RlZE1vZHVsZXMoKS5z
aXplKCkpOworICAgIHNpemVfdCBpID0gMDsKKyAgICBmb3IgKGF1dG8mIGtleSA6IG1vZHVsZVJl
Y29yZC0+cmVxdWVzdGVkTW9kdWxlcygpKQorICAgICAgICByZXN1bHQtPnB1dERpcmVjdEluZGV4
KGV4ZWMsIGkrKywganNTdHJpbmcoZXhlYywga2V5LmdldCgpKSk7CisKKyAgICByZXR1cm4gSlNW
YWx1ZTo6ZW5jb2RlKHJlc3VsdCk7Cit9CisKK0VuY29kZWRKU1ZhbHVlIEpTQ19IT1NUX0NBTEwg
bW9kdWxlTG9hZGVyT2JqZWN0UmVzb2x2ZShFeGVjU3RhdGUqIGV4ZWMpCit7CisgICAgLy8gSG9v
ayBwb2ludCwgTG9hZGVyLnJlc29sdmUuCisgICAgLy8gaHR0cHM6Ly93aGF0d2cuZ2l0aHViLmlv
L2xvYWRlci8jYnJvd3Nlci1yZXNvbHZlCisgICAgLy8gVGFrZSB0aGUgbmFtZSBhbmQgcmVzb2x2
ZSBpdCB0byB0aGUgdW5pcXVlIGlkZW50aWZpZXIgZm9yIHRoZSByZXNvdXJjZSBsb2NhdGlvbi4K
KyAgICAvLyBGb3IgZXhhbXBsZSwgdGFrZSB0aGUgImpxdWVyeSIgYW5kIHJldHVybiB0aGUgVVJM
IGZvciB0aGUgcmVzb3VyY2UuCisgICAgTW9kdWxlTG9hZGVyT2JqZWN0KiBsb2FkZXIgPSBqc0R5
bmFtaWNDYXN0PE1vZHVsZUxvYWRlck9iamVjdCo+KGV4ZWMtPnRoaXNWYWx1ZSgpKTsKKyAgICBp
ZiAoIWxvYWRlcikKKyAgICAgICAgcmV0dXJuIEpTVmFsdWU6OmVuY29kZShqc1VuZGVmaW5lZCgp
KTsKKyAgICByZXR1cm4gSlNWYWx1ZTo6ZW5jb2RlKGxvYWRlci0+cmVzb2x2ZShleGVjLCBleGVj
LT5hcmd1bWVudCgwKSwgZXhlYy0+YXJndW1lbnQoMSkpKTsKK30KKworRW5jb2RlZEpTVmFsdWUg
SlNDX0hPU1RfQ0FMTCBtb2R1bGVMb2FkZXJPYmplY3RGZXRjaChFeGVjU3RhdGUqIGV4ZWMpCit7
CisgICAgLy8gSG9vayBwb2ludCwgTG9hZGVyLmZldGNoCisgICAgLy8gaHR0cHM6Ly93aGF0d2cu
Z2l0aHViLmlvL2xvYWRlci8jYnJvd3Nlci1mZXRjaAorICAgIC8vIFRha2UgdGhlIGtleSBhbmQg
ZmV0Y2ggdGhlIHJlc291cmNlIGFjdHVhbGx5LgorICAgIC8vIEZvciBleGFtcGxlLCBKYXZhU2Ny
aXB0Q29yZSBzaGVsbCBjYW4gcHJvdmlkZSB0aGUgaG9vayBmZXRjaGluZyB0aGUgcmVzb3VyY2UK
KyAgICAvLyBmcm9tIHRoZSBsb2NhbCBmaWxlIHN5c3RlbS4KKyAgICBNb2R1bGVMb2FkZXJPYmpl
Y3QqIGxvYWRlciA9IGpzRHluYW1pY0Nhc3Q8TW9kdWxlTG9hZGVyT2JqZWN0Kj4oZXhlYy0+dGhp
c1ZhbHVlKCkpOworICAgIGlmICghbG9hZGVyKQorICAgICAgICByZXR1cm4gSlNWYWx1ZTo6ZW5j
b2RlKGpzVW5kZWZpbmVkKCkpOworICAgIHJldHVybiBKU1ZhbHVlOjplbmNvZGUobG9hZGVyLT5m
ZXRjaChleGVjLCBleGVjLT5hcmd1bWVudCgwKSkpOworfQorCitFbmNvZGVkSlNWYWx1ZSBKU0Nf
SE9TVF9DQUxMIG1vZHVsZUxvYWRlck9iamVjdFRyYW5zbGF0ZShFeGVjU3RhdGUqIGV4ZWMpCit7
CisgICAgLy8gSG9vayBwb2ludCwgTG9hZGVyLnRyYW5zbGF0ZQorICAgIC8vIGh0dHBzOi8vd2hh
dHdnLmdpdGh1Yi5pby9sb2FkZXIvI2Jyb3dzZXItdHJhbnNsYXRlCisgICAgLy8gVGFrZSB0aGUg
a2V5IGFuZCB0aGUgZmV0Y2hlZCBzb3VyY2UgY29kZSBhbmQgdHJhbnNsYXRlIGl0IHRvIHRoZSBF
UzYgc291cmNlIGNvZGUuCisgICAgLy8gVHlwaWNhbGx5IGl0IGlzIHVzZWQgYnkgdGhlIHRyYW5z
cGlsZXJzLgorICAgIE1vZHVsZUxvYWRlck9iamVjdCogbG9hZGVyID0ganNEeW5hbWljQ2FzdDxN
b2R1bGVMb2FkZXJPYmplY3QqPihleGVjLT50aGlzVmFsdWUoKSk7CisgICAgaWYgKCFsb2FkZXIp
CisgICAgICAgIHJldHVybiBKU1ZhbHVlOjplbmNvZGUoanNVbmRlZmluZWQoKSk7CisgICAgcmV0
dXJuIEpTVmFsdWU6OmVuY29kZShsb2FkZXItPnRyYW5zbGF0ZShleGVjLCBleGVjLT5hcmd1bWVu
dCgwKSwgZXhlYy0+YXJndW1lbnQoMSkpKTsKK30KKworRW5jb2RlZEpTVmFsdWUgSlNDX0hPU1Rf
Q0FMTCBtb2R1bGVMb2FkZXJPYmplY3RJbnN0YW50aWF0ZShFeGVjU3RhdGUqIGV4ZWMpCit7Cisg
ICAgLy8gSG9vayBwb2ludCwgTG9hZGVyLmluc3RhbnRpYXRlCisgICAgLy8gaHR0cHM6Ly93aGF0
d2cuZ2l0aHViLmlvL2xvYWRlci8jYnJvd3Nlci1pbnN0YW50aWF0ZQorICAgIC8vIFRha2UgdGhl
IGtleSBhbmQgdGhlIHRyYW5zbGF0ZWQgc291cmNlIGNvZGUsIGFuZCBpbnN0YW50aWF0ZSB0aGUg
bW9kdWxlIHJlY29yZAorICAgIC8vIGJ5IHBhcnNpbmcgdGhlIG1vZHVsZSBzb3VyY2UgY29kZS4K
KyAgICAvLyBJdCBoYXMgdGhlIGNoYW5jZSB0byBwcm92aWRlIHRoZSBvcHRpb25hbCBtb2R1bGUg
aW5zdGFuY2UgdGhhdCBpcyBkaWZmZXJlbnQgZnJvbQorICAgIC8vIHRoZSBvcmRpbmFyeSBvbmUu
CisgICAgTW9kdWxlTG9hZGVyT2JqZWN0KiBsb2FkZXIgPSBqc0R5bmFtaWNDYXN0PE1vZHVsZUxv
YWRlck9iamVjdCo+KGV4ZWMtPnRoaXNWYWx1ZSgpKTsKKyAgICBpZiAoIWxvYWRlcikKKyAgICAg
ICAgcmV0dXJuIEpTVmFsdWU6OmVuY29kZShqc1VuZGVmaW5lZCgpKTsKKyAgICByZXR1cm4gSlNW
YWx1ZTo6ZW5jb2RlKGxvYWRlci0+aW5zdGFudGlhdGUoZXhlYywgZXhlYy0+YXJndW1lbnQoMCks
IGV4ZWMtPmFyZ3VtZW50KDEpKSk7Cit9CisKK30gLy8gbmFtZXNwYWNlIEpTQwpkaWZmIC0tZ2l0
IGEvU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvTW9kdWxlTG9hZGVyT2JqZWN0LmggYi9T
b3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9Nb2R1bGVMb2FkZXJPYmplY3QuaApuZXcgZmls
ZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwLi5mZDZjNjAxMDg4NGE0ZjQzNDlmMDlmZmY3OTNmNDJhNWNlMjA4NDA3Ci0tLSAvZGV2L251
bGwKKysrIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvTW9kdWxlTG9hZGVyT2JqZWN0
LmgKQEAgLTAsMCArMSw4MSBAQAorLyoKKyAqIENvcHlyaWdodCAoQykgMjAxNSBBcHBsZSBJbmMu
IEFsbCBSaWdodHMgUmVzZXJ2ZWQuCisgKgorICogUmVkaXN0cmlidXRpb24gYW5kIHVzZSBpbiBz
b3VyY2UgYW5kIGJpbmFyeSBmb3Jtcywgd2l0aCBvciB3aXRob3V0CisgKiBtb2RpZmljYXRpb24s
IGFyZSBwZXJtaXR0ZWQgcHJvdmlkZWQgdGhhdCB0aGUgZm9sbG93aW5nIGNvbmRpdGlvbnMKKyAq
IGFyZSBtZXQ6CisgKiAxLiBSZWRpc3RyaWJ1dGlvbnMgb2Ygc291cmNlIGNvZGUgbXVzdCByZXRh
aW4gdGhlIGFib3ZlIGNvcHlyaWdodAorICogICAgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0
aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyLgorICogMi4gUmVkaXN0cmlidXRpb25z
IGluIGJpbmFyeSBmb3JtIG11c3QgcmVwcm9kdWNlIHRoZSBhYm92ZSBjb3B5cmlnaHQKKyAqICAg
IG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xh
aW1lciBpbiB0aGUKKyAqICAgIGRvY3VtZW50YXRpb24gYW5kL29yIG90aGVyIG1hdGVyaWFscyBw
cm92aWRlZCB3aXRoIHRoZSBkaXN0cmlidXRpb24uCisgKgorICogVEhJUyBTT0ZUV0FSRSBJUyBQ
Uk9WSURFRCBCWSBBUFBMRSBJTkMuIGBgQVMgSVMnJyBBTkQgQU5ZCisgKiBFWFBSRVNTIE9SIElN
UExJRUQgV0FSUkFOVElFUywgSU5DTFVESU5HLCBCVVQgTk9UIExJTUlURUQgVE8sIFRIRQorICog
SU1QTElFRCBXQVJSQU5USUVTIE9GIE1FUkNIQU5UQUJJTElUWSBBTkQgRklUTkVTUyBGT1IgQSBQ
QVJUSUNVTEFSCisgKiBQVVJQT1NFIEFSRSBESVNDTEFJTUVELiAgSU4gTk8gRVZFTlQgU0hBTEwg
QVBQTEUgSU5DLiBPUgorICogQ09OVFJJQlVUT1JTIEJFIExJQUJMRSBGT1IgQU5ZIERJUkVDVCwg
SU5ESVJFQ1QsIElOQ0lERU5UQUwsIFNQRUNJQUwsCisgKiBFWEVNUExBUlksIE9SIENPTlNFUVVF
TlRJQUwgREFNQUdFUyAoSU5DTFVESU5HLCBCVVQgTk9UIExJTUlURUQgVE8sCisgKiBQUk9DVVJF
TUVOVCBPRiBTVUJTVElUVVRFIEdPT0RTIE9SIFNFUlZJQ0VTOyBMT1NTIE9GIFVTRSwgREFUQSwg
T1IKKyAqIFBST0ZJVFM7IE9SIEJVU0lORVNTIElOVEVSUlVQVElPTikgSE9XRVZFUiBDQVVTRUQg
QU5EIE9OIEFOWSBUSEVPUlkKKyAqIE9GIExJQUJJTElUWSwgV0hFVEhFUiBJTiBDT05UUkFDVCwg
U1RSSUNUIExJQUJJTElUWSwgT1IgVE9SVAorICogKElOQ0xVRElORyBORUdMSUdFTkNFIE9SIE9U
SEVSV0lTRSkgQVJJU0lORyBJTiBBTlkgV0FZIE9VVCBPRiBUSEUgVVNFCisgKiBPRiBUSElTIFNP
RlRXQVJFLCBFVkVOIElGIEFEVklTRUQgT0YgVEhFIFBPU1NJQklMSVRZIE9GIFNVQ0ggREFNQUdF
LgorICovCisKKyNpZm5kZWYgTW9kdWxlTG9hZGVyT2JqZWN0X2gKKyNkZWZpbmUgTW9kdWxlTG9h
ZGVyT2JqZWN0X2gKKworI2luY2x1ZGUgIkpTT2JqZWN0LmgiCisKK25hbWVzcGFjZSBKU0Mgewor
CitjbGFzcyBNb2R1bGVMb2FkZXJPYmplY3QgOiBwdWJsaWMgSlNOb25GaW5hbE9iamVjdCB7Citw
cml2YXRlOgorICAgIE1vZHVsZUxvYWRlck9iamVjdChWTSYsIFN0cnVjdHVyZSopOworcHVibGlj
OgorICAgIHR5cGVkZWYgSlNOb25GaW5hbE9iamVjdCBCYXNlOworICAgIHN0YXRpYyBjb25zdCB1
bnNpZ25lZCBTdHJ1Y3R1cmVGbGFncyA9IEJhc2U6OlN0cnVjdHVyZUZsYWdzIHwgT3ZlcnJpZGVz
R2V0T3duUHJvcGVydHlTbG90OworCisgICAgZW51bSBTdGF0dXMgeworICAgICAgICBGZXRjaCA9
IDEsCisgICAgICAgIFRyYW5zbGF0ZSA9IDIsCisgICAgICAgIEluc3RhbnRpYXRlID0gMywKKyAg
ICAgICAgUmVzb2x2ZURlcGVuZGVuY2llcyA9IDQsCisgICAgICAgIExpbmsgPSA1LAorICAgICAg
ICBSZWFkeSA9IDYsCisgICAgfTsKKworICAgIHN0YXRpYyBNb2R1bGVMb2FkZXJPYmplY3QqIGNy
ZWF0ZShWTSYgdm0sIEpTR2xvYmFsT2JqZWN0KiBnbG9iYWxPYmplY3QsIFN0cnVjdHVyZSogc3Ry
dWN0dXJlKQorICAgIHsKKyAgICAgICAgTW9kdWxlTG9hZGVyT2JqZWN0KiBvYmplY3QgPSBuZXcg
KE5vdE51bGwsIGFsbG9jYXRlQ2VsbDxNb2R1bGVMb2FkZXJPYmplY3Q+KHZtLmhlYXApKSBNb2R1
bGVMb2FkZXJPYmplY3Qodm0sIHN0cnVjdHVyZSk7CisgICAgICAgIG9iamVjdC0+ZmluaXNoQ3Jl
YXRpb24odm0sIGdsb2JhbE9iamVjdCk7CisgICAgICAgIHJldHVybiBvYmplY3Q7CisgICAgfQor
CisgICAgREVDTEFSRV9JTkZPOworCisgICAgc3RhdGljIFN0cnVjdHVyZSogY3JlYXRlU3RydWN0
dXJlKFZNJiB2bSwgSlNHbG9iYWxPYmplY3QqIGdsb2JhbE9iamVjdCwgSlNWYWx1ZSBwcm90b3R5
cGUpCisgICAgeworICAgICAgICByZXR1cm4gU3RydWN0dXJlOjpjcmVhdGUodm0sIGdsb2JhbE9i
amVjdCwgcHJvdG90eXBlLCBUeXBlSW5mbyhPYmplY3RUeXBlLCBTdHJ1Y3R1cmVGbGFncyksIGlu
Zm8oKSk7CisgICAgfQorCisgICAgLy8gQVBJcyB0byBjb250cm9sIHRoZSBtb2R1bGUgbG9hZGVy
LgorICAgIEpTVmFsdWUgcHJvdmlkZShFeGVjU3RhdGUqLCBKU1ZhbHVlIGtleSwgU3RhdHVzLCBj
b25zdCBTdHJpbmcmKTsKKyAgICBKU1ZhbHVlIHJlcXVlc3RJbnN0YW50aWF0ZUFsbChFeGVjU3Rh
dGUqLCBKU1ZhbHVlIGtleSk7CisKKyAgICAvLyBQbGF0Zm9ybSBkZXBlbmRlbnQgaG9va2VkIEFQ
SXMuCisgICAgSlNWYWx1ZSByZXNvbHZlKEV4ZWNTdGF0ZSosIEpTVmFsdWUgbmFtZSwgSlNWYWx1
ZSByZWZlcnJlcik7CisgICAgSlNWYWx1ZSBmZXRjaChFeGVjU3RhdGUqLCBKU1ZhbHVlIGtleSk7
CisgICAgSlNWYWx1ZSB0cmFuc2xhdGUoRXhlY1N0YXRlKiwgSlNWYWx1ZSBrZXksIEpTVmFsdWUg
cGF5bG9hZCk7CisgICAgSlNWYWx1ZSBpbnN0YW50aWF0ZShFeGVjU3RhdGUqLCBKU1ZhbHVlIGtl
eSwgSlNWYWx1ZSBzb3VyY2UpOworCisgICAgc3RhdGljIGJvb2wgZ2V0T3duUHJvcGVydHlTbG90
KEpTT2JqZWN0KiwgRXhlY1N0YXRlKiwgUHJvcGVydHlOYW1lLCBQcm9wZXJ0eVNsb3QmKTsKKwor
cHJvdGVjdGVkOgorICAgIHZvaWQgZmluaXNoQ3JlYXRpb24oVk0mLCBKU0dsb2JhbE9iamVjdCop
OworfTsKKworfSAvLyBuYW1lc3BhY2UgSlNDCisKKyNlbmRpZiAvLyBNb2R1bGVMb2FkZXJPYmpl
Y3RfaApkaWZmIC0tZ2l0IGEvU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvT3B0aW9ucy5o
IGIvU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvT3B0aW9ucy5oCmluZGV4IDFhNjU1NWVk
NmFhZGE4MTczZmJkZTA0ZjFmNTlhNGQxY2YzYTAwODkuLjFhNGQ3MWQxMzk0NGViYzM0Y2Q0NTM2
NmFlYTFkNDI2M2VhNWI5OGYgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50
aW1lL09wdGlvbnMuaAorKysgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9PcHRpb25z
LmgKQEAgLTMzMSw2ICszMzEsOCBAQCB0eXBlZGVmIGNvbnN0IGNoYXIqIG9wdGlvblN0cmluZzsK
ICAgICB2KHVuc2lnbmVkLCB3YXRjaGRvZywgMCwgIndhdGNoZG9nIHRpbWVvdXQgKDAgPSBEaXNh
YmxlZCwgTiA9IGEgdGltZW91dCBwZXJpb2Qgb2YgTiBtaWxsaXNlY29uZHMpIikgXAogICAgIFwK
ICAgICB2KGJvb2wsIGR1bXBNb2R1bGVSZWNvcmQsIGZhbHNlLCBudWxscHRyKSBcCisgICAgdihi
b29sLCBkdW1wTW9kdWxlTG9hZGluZ1N0YXRlLCBmYWxzZSwgbnVsbHB0cikgXAorICAgIHYoYm9v
bCwgZXhwb3NlSW50ZXJuYWxNb2R1bGVMb2FkZXIsIGZhbHNlLCAiZXhwb3NlIHRoZSBpbnRlcm5h
bCBtb2R1bGUgbG9hZGVyIG9iamVjdCB0byB0aGUgZ2xvYmFsIHNwYWNlIGZvciBkZWJ1Z2dpbmci
KSBcCiAKIGNsYXNzIE9wdGlvbnMgewogcHVibGljOgpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNv
cmUvYmluZGluZ3MvanMvSlNET01XaW5kb3dCYXNlLmNwcCBiL1NvdXJjZS9XZWJDb3JlL2JpbmRp
bmdzL2pzL0pTRE9NV2luZG93QmFzZS5jcHAKaW5kZXggOWFiMGE4ZjBkMGZiZDc4ZTVlNTdkNTgw
NDc3ZTY1NWNiODk1OTVkMS4uYTI5MGRkYzllNTgxYWNkNjM0MzAxNzAwYmFmODI3Y2ExYTRlZmQw
MiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvYmluZGluZ3MvanMvSlNET01XaW5kb3dCYXNl
LmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9iaW5kaW5ncy9qcy9KU0RPTVdpbmRvd0Jhc2UuY3Bw
CkBAIC01Niw3ICs1Niw3IEBAIHN0YXRpYyBib29sIHNob3VsZEFsbG93QWNjZXNzRnJvbShjb25z
dCBKU0dsb2JhbE9iamVjdCogdGhpc09iamVjdCwgRXhlY1N0YXRlKiBlCiAKIGNvbnN0IENsYXNz
SW5mbyBKU0RPTVdpbmRvd0Jhc2U6OnNfaW5mbyA9IHsgIldpbmRvdyIsICZKU0RPTUdsb2JhbE9i
amVjdDo6c19pbmZvLCAwLCBDUkVBVEVfTUVUSE9EX1RBQkxFKEpTRE9NV2luZG93QmFzZSkgfTsK
IAotY29uc3QgR2xvYmFsT2JqZWN0TWV0aG9kVGFibGUgSlNET01XaW5kb3dCYXNlOjpzX2dsb2Jh
bE9iamVjdE1ldGhvZFRhYmxlID0geyAmc2hvdWxkQWxsb3dBY2Nlc3NGcm9tLCAmc3VwcG9ydHNQ
cm9maWxpbmcsICZzdXBwb3J0c1JpY2hTb3VyY2VJbmZvLCAmc2hvdWxkSW50ZXJydXB0U2NyaXB0
LCAmamF2YVNjcmlwdFJ1bnRpbWVGbGFncywgJnF1ZXVlVGFza1RvRXZlbnRMb29wLCAmc2hvdWxk
SW50ZXJydXB0U2NyaXB0QmVmb3JlVGltZW91dCB9OworY29uc3QgR2xvYmFsT2JqZWN0TWV0aG9k
VGFibGUgSlNET01XaW5kb3dCYXNlOjpzX2dsb2JhbE9iamVjdE1ldGhvZFRhYmxlID0geyAmc2hv
dWxkQWxsb3dBY2Nlc3NGcm9tLCAmc3VwcG9ydHNQcm9maWxpbmcsICZzdXBwb3J0c1JpY2hTb3Vy
Y2VJbmZvLCAmc2hvdWxkSW50ZXJydXB0U2NyaXB0LCAmamF2YVNjcmlwdFJ1bnRpbWVGbGFncywg
JnF1ZXVlVGFza1RvRXZlbnRMb29wLCAmc2hvdWxkSW50ZXJydXB0U2NyaXB0QmVmb3JlVGltZW91
dCwgbnVsbHB0ciwgbnVsbHB0ciwgbnVsbHB0ciwgbnVsbHB0ciB9OwogCiBKU0RPTVdpbmRvd0Jh
c2U6OkpTRE9NV2luZG93QmFzZShWTSYgdm0sIFN0cnVjdHVyZSogc3RydWN0dXJlLCBQYXNzUmVm
UHRyPERPTVdpbmRvdz4gd2luZG93LCBKU0RPTVdpbmRvd1NoZWxsKiBzaGVsbCkKICAgICA6IEpT
RE9NR2xvYmFsT2JqZWN0KHZtLCBzdHJ1Y3R1cmUsICZzaGVsbC0+d29ybGQoKSwgJnNfZ2xvYmFs
T2JqZWN0TWV0aG9kVGFibGUpCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9iaW5kaW5ncy9q
cy9KU1dvcmtlckdsb2JhbFNjb3BlQmFzZS5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9iaW5kaW5ncy9q
cy9KU1dvcmtlckdsb2JhbFNjb3BlQmFzZS5jcHAKaW5kZXggYWFhNWRiYTU1MTcxY2I5NTQxYmE2
NWUxZDI0N2FiMjljOWQ5YzdjMy4uNTA0NGJjMTc4MzUxM2I5YjFhMjZiZDNiZDFjYjVjMDBiNzBh
MTBkMCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvYmluZGluZ3MvanMvSlNXb3JrZXJHbG9i
YWxTY29wZUJhc2UuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL2JpbmRpbmdzL2pzL0pTV29ya2Vy
R2xvYmFsU2NvcGVCYXNlLmNwcApAQCAtNDMsNyArNDMsNyBAQCBuYW1lc3BhY2UgV2ViQ29yZSB7
CiAKIGNvbnN0IENsYXNzSW5mbyBKU1dvcmtlckdsb2JhbFNjb3BlQmFzZTo6c19pbmZvID0geyAi
V29ya2VyR2xvYmFsU2NvcGUiLCAmSlNET01HbG9iYWxPYmplY3Q6OnNfaW5mbywgMCwgQ1JFQVRF
X01FVEhPRF9UQUJMRShKU1dvcmtlckdsb2JhbFNjb3BlQmFzZSkgfTsKIAotY29uc3QgR2xvYmFs
T2JqZWN0TWV0aG9kVGFibGUgSlNXb3JrZXJHbG9iYWxTY29wZUJhc2U6OnNfZ2xvYmFsT2JqZWN0
TWV0aG9kVGFibGUgPSB7ICZhbGxvd3NBY2Nlc3NGcm9tLCAmc3VwcG9ydHNQcm9maWxpbmcsICZz
dXBwb3J0c1JpY2hTb3VyY2VJbmZvLCAmc2hvdWxkSW50ZXJydXB0U2NyaXB0LCAmamF2YVNjcmlw
dFJ1bnRpbWVGbGFncywgJnF1ZXVlVGFza1RvRXZlbnRMb29wLCAmc2hvdWxkSW50ZXJydXB0U2Ny
aXB0QmVmb3JlVGltZW91dCB9OworY29uc3QgR2xvYmFsT2JqZWN0TWV0aG9kVGFibGUgSlNXb3Jr
ZXJHbG9iYWxTY29wZUJhc2U6OnNfZ2xvYmFsT2JqZWN0TWV0aG9kVGFibGUgPSB7ICZhbGxvd3NB
Y2Nlc3NGcm9tLCAmc3VwcG9ydHNQcm9maWxpbmcsICZzdXBwb3J0c1JpY2hTb3VyY2VJbmZvLCAm
c2hvdWxkSW50ZXJydXB0U2NyaXB0LCAmamF2YVNjcmlwdFJ1bnRpbWVGbGFncywgJnF1ZXVlVGFz
a1RvRXZlbnRMb29wLCAmc2hvdWxkSW50ZXJydXB0U2NyaXB0QmVmb3JlVGltZW91dCwgbnVsbHB0
ciwgbnVsbHB0ciwgbnVsbHB0ciwgbnVsbHB0ciB9OwogCiBKU1dvcmtlckdsb2JhbFNjb3BlQmFz
ZTo6SlNXb3JrZXJHbG9iYWxTY29wZUJhc2UoSlNDOjpWTSYgdm0sIEpTQzo6U3RydWN0dXJlKiBz
dHJ1Y3R1cmUsIFBhc3NSZWZQdHI8V29ya2VyR2xvYmFsU2NvcGU+IGltcGwpCiAgICAgOiBKU0RP
TUdsb2JhbE9iamVjdCh2bSwgc3RydWN0dXJlLCAmbm9ybWFsV29ybGQodm0pLCAmc19nbG9iYWxP
YmplY3RNZXRob2RUYWJsZSkK
</data>
<flag name="review"
          id="284672"
          type_id="1"
          status="+"
          setter="saam"
    />
          </attachment>
      

    </bug>

</bugzilla>