<?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>91679</bug_id>
          
          <creation_ts>2012-07-18 15:15:53 -0700</creation_ts>
          <short_desc>IndexedDB: Throw native TypeErrors per spec</short_desc>
          <delta_ts>2012-11-13 12:09:43 -0800</delta_ts>
          <reporter_accessible>1</reporter_accessible>
          <cclist_accessible>1</cclist_accessible>
          <classification_id>1</classification_id>
          <classification>Unclassified</classification>
          <product>WebKit</product>
          <component>WebCore Misc.</component>
          <version>528+ (Nightly build)</version>
          <rep_platform>Unspecified</rep_platform>
          <op_sys>Unspecified</op_sys>
          <bug_status>RESOLVED</bug_status>
          <resolution>FIXED</resolution>
          
          
          <bug_file_loc></bug_file_loc>
          <status_whiteboard></status_whiteboard>
          <keywords></keywords>
          <priority>P2</priority>
          <bug_severity>Normal</bug_severity>
          <target_milestone>---</target_milestone>
          <dependson>91687</dependson>
          <blocked>85513</blocked>
    
    <blocked>102114</blocked>
          <everconfirmed>1</everconfirmed>
          <reporter name="Joshua Bell">jsbell</reporter>
          <assigned_to name="Joshua Bell">jsbell</assigned_to>
          <cc>abarth</cc>
    
    <cc>alecflett</cc>
    
    <cc>arv</cc>
    
    <cc>darin</cc>
    
    <cc>dgrogan</cc>
    
    <cc>haraken</cc>
    
    <cc>japhet</cc>
    
    <cc>jochen</cc>
    
    <cc>ojan</cc>
    
    <cc>webkit.review.bot</cc>
          

      

      

      

          <comment_sort_order>oldest_to_newest</comment_sort_order>  
          <long_desc isprivate="0" >
    <commentid>672824</commentid>
    <comment_count>0</comment_count>
    <who name="Joshua Bell">jsbell</who>
    <bug_when>2012-07-18 15:15:53 -0700</bug_when>
    <thetext>IndexedDB: Throw native TypeErrors per spec</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>672839</commentid>
    <comment_count>1</comment_count>
      <attachid>153102</attachid>
    <who name="Joshua Bell">jsbell</who>
    <bug_when>2012-07-18 15:25:26 -0700</bug_when>
    <thetext>Created attachment 153102
Patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>672841</commentid>
    <comment_count>2</comment_count>
    <who name="Joshua Bell">jsbell</who>
    <bug_when>2012-07-18 15:27:11 -0700</bug_when>
    <thetext>public-webapps thread: http://lists.w3.org/Archives/Public/public-webapps/2012AprJun/0949.html

This hooks up native JS TypeErrors throwable from the DOM with minimal work. Not sure this is the direction we want to go, but apparently this is how Mozilla does it as well.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>672852</commentid>
    <comment_count>3</comment_count>
      <attachid>153102</attachid>
    <who name="Joshua Bell">jsbell</who>
    <bug_when>2012-07-18 15:30:13 -0700</bug_when>
    <thetext>Comment on attachment 153102
Patch

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

&gt; Source/WebCore/Modules/indexeddb/IDBFactory.cpp:111
&gt; +        ec = NATIVE_TYPE_ERR;

Note: there is no test for this. I believe it should actually get the string &quot;null&quot;; this should change to an assertion and add a test (separate bug?)

&gt; Source/WebCore/Modules/indexeddb/IDBFactory.cpp:125
&gt; +        ec = NATIVE_TYPE_ERR;

Ditto.

&gt; Source/WebCore/Modules/indexeddb/IDBIndex.cpp:103
&gt; +    return openCursor(context, keyRange.release(), direction, ec);

I found this (and 3 similar lines in the diff) as existing bugs where we drop the direction parameter on the floor. Oops! I&apos;ll file a separate bug and test case, and remove it from this patch before landing.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>672914</commentid>
    <comment_count>4</comment_count>
    <who name="Joshua Bell">jsbell</who>
    <bug_when>2012-07-18 16:06:18 -0700</bug_when>
    <thetext>*** Bug 87987 has been marked as a duplicate of this bug. ***</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>672916</commentid>
    <comment_count>5</comment_count>
    <who name="Joshua Bell">jsbell</who>
    <bug_when>2012-07-18 16:07:06 -0700</bug_when>
    <thetext>https://bugs.webkit.org/show_bug.cgi?id=91687 has the &quot;direction&quot; fixes. Once that lands I&apos;ll rebase this.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>673005</commentid>
    <comment_count>6</comment_count>
      <attachid>153144</attachid>
    <who name="Joshua Bell">jsbell</who>
    <bug_when>2012-07-18 17:19:06 -0700</bug_when>
    <thetext>Created attachment 153144
Patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>673007</commentid>
    <comment_count>7</comment_count>
    <who name="Joshua Bell">jsbell</who>
    <bug_when>2012-07-18 17:20:26 -0700</bug_when>
    <thetext>Rebased, now just the TypeError changes.

haraken@ - any thoughts?</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>673208</commentid>
    <comment_count>8</comment_count>
      <attachid>153144</attachid>
    <who name="Kentaro Hara">haraken</who>
    <bug_when>2012-07-18 23:37:55 -0700</bug_when>
    <thetext>Comment on attachment 153144
Patch

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

The implementation looks good.

&gt; Source/WebCore/ChangeLog:10
&gt; +        Per the IDB spec, the advance(), openCursor(), openKeyCursor() and transaction()
&gt; +        methods supposed to throw true native JavaScript TypeError objects as exceptions
&gt; +        rather than DOMException objects. Implement this by adding a special DOMException

IMHO, this behavior sounds a bit strange to me. Given that these exceptions are raised from inside DOM, DOMException objects sounds more reasonable to me. What about other browsers?

&gt; Source/WebCore/ChangeLog:11
&gt; +        code that is tested for in the binding layer.

Do you know any other code that is doing something like this? (i.e. convert a special DOMException to JavaScript Error in the binding layer)</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>673213</commentid>
    <comment_count>9</comment_count>
    <who name="Joshua Bell">jsbell</who>
    <bug_when>2012-07-18 23:43:24 -0700</bug_when>
    <thetext>(In reply to comment #8)
&gt; 
&gt; IMHO, this behavior sounds a bit strange to me. Given that these exceptions are raised from inside DOM, DOMException objects sounds more reasonable to me. What about other browsers?

See comment #2.
 
&gt; &gt; Source/WebCore/ChangeLog:11
&gt; &gt; +        code that is tested for in the binding layer.
&gt; 
&gt; Do you know any other code that is doing something like this? (i.e. convert a special DOMException to JavaScript Error in the binding layer)

No. Alternate suggestions welcome.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>673223</commentid>
    <comment_count>10</comment_count>
      <attachid>153144</attachid>
    <who name="Kentaro Hara">haraken</who>
    <bug_when>2012-07-18 23:51:12 -0700</bug_when>
    <thetext>Comment on attachment 153144
Patch

&gt;&gt; IMHO, this behavior sounds a bit strange to me. Given that these exceptions are raised from inside DOM, DOMException objects sounds more reasonable to me. What about other browsers?
&gt;
&gt; See comment #2.

Thanks. I understood. (though TypeError sounds a bit strange to me:-)

&gt;&gt; Do you know any other code that is doing something like this? (i.e. convert a special DOMException to JavaScript Error in the binding layer)
&gt;
&gt; No. Alternate suggestions welcome.

Given that this fix is needed in IDB only, I think your approach is simple and good. If we encountered other code that needs the fix, let&apos;s consider how we can generalize it.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>673540</commentid>
    <comment_count>11</comment_count>
    <who name="Joshua Bell">jsbell</who>
    <bug_when>2012-07-19 08:50:41 -0700</bug_when>
    <thetext>(In reply to comment #10)
&gt; (From update of attachment 153144 [details])
&gt; &gt;&gt; IMHO, this behavior sounds a bit strange to me. Given that these exceptions are raised from inside DOM, DOMException objects sounds more reasonable to me. What about other browsers?
&gt; &gt;
&gt; &gt; See comment #2.
&gt; 
&gt; Thanks. I understood. (though TypeError sounds a bit strange to me:-)

Yeah - it was weird to us too. In the linked email thread we did try pushing back, but the other vendors had already implemented it.

Thanks, and I&apos;ll keep an eye out for similar needs in other specs.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>673587</commentid>
    <comment_count>12</comment_count>
      <attachid>153144</attachid>
    <who name="WebKit Review Bot">webkit.review.bot</who>
    <bug_when>2012-07-19 09:37:32 -0700</bug_when>
    <thetext>Comment on attachment 153144
Patch

Clearing flags on attachment: 153144

Committed r123112: &lt;http://trac.webkit.org/changeset/123112&gt;</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>673588</commentid>
    <comment_count>13</comment_count>
    <who name="WebKit Review Bot">webkit.review.bot</who>
    <bug_when>2012-07-19 09:37:38 -0700</bug_when>
    <thetext>All reviewed patches have been landed.  Closing bug.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>765693</commentid>
    <comment_count>14</comment_count>
    <who name="Darin Adler">darin</who>
    <bug_when>2012-11-13 09:36:14 -0800</bug_when>
    <thetext>I don’t see code in ExceptionCodeDescription to handle NATIVE_TYPE_ERR. Nor assertions to make sure it’s not used with NATIVE_TYPE_ERR. That’s not good.

The code to convert exceptions to Objective-C exceptions in bindings/objc/ExceptionHandlers.mm was not revised when NATIVE_TYPE_ERR was added, so that won’t handle NATIVE_TYPE_ERR.

I imagine there are other DOM bindings like the Objective-C one that won’t handle this new error code correctly.

The only reason this might be OK for now is that IndexedDB is not built on platforms that use Objective-C bindings, but I think there may be problems coming.

----

I don’t like the name NATIVE_TYPE_ERR.

The other exception codes are named what they are because that’s the name from the DOM specification.

For the an exception code that we translate to a JavaScript exception, I don’t like the capitalization, I don’t like the abbreviation “ERR”, and I don’t like the word “NATIVE” to mean a JavaScript language exception, because the word native is ambiguous.

I’d like us come up with a better name and do a rename.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>765712</commentid>
    <comment_count>15</comment_count>
    <who name="Joshua Bell">jsbell</who>
    <bug_when>2012-11-13 09:54:54 -0800</bug_when>
    <thetext>(In reply to comment #14)
&gt; I don’t see code in ExceptionCodeDescription to handle NATIVE_TYPE_ERR. Nor assertions to make sure it’s not used with NATIVE_TYPE_ERR. That’s not good.
&gt; 
&gt; The code to convert exceptions to Objective-C exceptions in bindings/objc/ExceptionHandlers.mm was not revised when NATIVE_TYPE_ERR was added, so that won’t handle NATIVE_TYPE_ERR.
&gt; 
&gt; I imagine there are other DOM bindings like the Objective-C one that won’t handle this new error code correctly.
&gt; 
&gt; The only reason this might be OK for now is that IndexedDB is not built on platforms that use Objective-C bindings, but I think there may be problems coming.
&gt; 

It looks like http://svn.webkit.org/changeset/134345 attempted to add support for NATIVE_TYPE_ERR to CodeGeneratorObjC.pm but it appears the patch was not complete. Agreed it should be rolled out for now.

&gt; ----
&gt; 
&gt; I don’t like the name NATIVE_TYPE_ERR.
&gt; 
&gt; The other exception codes are named what they are because that’s the name from the DOM specification.
&gt; 
&gt; For the an exception code that we translate to a JavaScript exception, I don’t like the capitalization, I don’t like the abbreviation “ERR”, and I don’t like the word “NATIVE” to mean a JavaScript language exception, because the word native is ambiguous.
&gt; 
&gt; I’d like us come up with a better name and do a rename.

I&apos;m happy to do the rename. 

Suggestions? Just TypeError ?</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>765719</commentid>
    <comment_count>16</comment_count>
    <who name="Darin Adler">darin</who>
    <bug_when>2012-11-13 09:58:35 -0800</bug_when>
    <thetext>(In reply to comment #15)
&gt; Suggestions? Just TypeError ?

Sure, that seems good.

We could also look and see what language the HTML specification uses for this? That might lead us to a good name.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>765736</commentid>
    <comment_count>17</comment_count>
    <who name="Joshua Bell">jsbell</who>
    <bug_when>2012-11-13 10:06:59 -0800</bug_when>
    <thetext>(In reply to comment #16)
&gt; (In reply to comment #15)
&gt; &gt; Suggestions? Just TypeError ?
&gt; 
&gt; Sure, that seems good.
&gt; 
&gt; We could also look and see what language the HTML specification uses for this? That might lead us to a good name.

WebIDL http://dev.w3.org/2006/webapi/WebIDL/ says: &quot;A number of predefined exceptions are also available to be thrown from specifications. These predefined exceptions correspond to the ECMAScript error objects ([ECMA-262], section 15.11). Specifically, the list of predefined exceptions is as follows: Error, EvalError, RangeError, ReferenceError, SyntaxError, TypeError and URIError.&quot;

... and then in the ECMAScript binding section has &quot;When an algorithm says to “throw a SomethingError” then this means to construct a new ECMAScript SomethingError object and to throw it, just as the algorithms in ECMA-262 do.&quot;

Which would imply that specs defining WebIDL fragments and behavior should use the term TypeError.

It looks like the HTML spec itself has not yet been updated:
https://www.w3.org/Bugs/Public/show_bug.cgi?id=19921</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>765764</commentid>
    <comment_count>18</comment_count>
    <who name="Darin Adler">darin</who>
    <bug_when>2012-11-13 10:24:47 -0800</bug_when>
    <thetext>So I think we should use the name TypeError, and then look over each binding to make sure it does something sensible and possibly even something backwards compatible with the error. And plan to do the same with other errors that correspond to JavaScript errors over time as they are used in the DOM.

I think there are 5 actively maintained bindings, although I am not personally certain about the status of the cpp and gobject bindings.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>765786</commentid>
    <comment_count>19</comment_count>
    <who name="Erik Arvidsson">arv</who>
    <bug_when>2012-11-13 10:40:57 -0800</bug_when>
    <thetext>(In reply to comment #18)
&gt; I think there are 5 actively maintained bindings, although I am not personally certain about the status of the cpp and gobject bindings.

However, WebIDL only defines bindings for ECMAScript. We really need someone from Apple to take care of the ObjC bindings, someone from QT for CPP bindings and someone for GTK to take care of the GTK bindings.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>765834</commentid>
    <comment_count>20</comment_count>
    <who name="Joshua Bell">jsbell</who>
    <bug_when>2012-11-13 11:13:47 -0800</bug_when>
    <thetext>(In reply to comment #18)
&gt; So I think we should use the name TypeError,

FWIW, a naive rename of NATIVE_TYPE_ERR to TypeError collides with bindings/v8/V8ThrowTypeException.h. 

While that&apos;s manageable, looking at the list again, we&apos;d probably want to define the full set of WebIDL error types: Error, EvalError, RangeError, ReferenceError, SyntaxError, TypeError and URIError - and it seems presumptuous to squat on WebCore::Error in this enum.

So, other possibilities would be IDLTypeError or WebIDLTypeError (giving IDLError or WebIDLError)</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>765837</commentid>
    <comment_count>21</comment_count>
    <who name="Joshua Bell">jsbell</who>
    <bug_when>2012-11-13 11:18:20 -0800</bug_when>
    <thetext>&gt; and it seems presumptuous to squat on WebCore::Error in this enum.

FWIW, the v8 binding internally uses &quot;GeneralError&quot; to avoid this.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>765910</commentid>
    <comment_count>22</comment_count>
    <who name="Joshua Bell">jsbell</who>
    <bug_when>2012-11-13 12:09:43 -0800</bug_when>
    <thetext>Rename patch over in https://bugs.webkit.org/show_bug.cgi?id=102114 for anyone who&apos;s interested. More bikeshedding can take place over there. :)</thetext>
  </long_desc>
      
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>153102</attachid>
            <date>2012-07-18 15:25:26 -0700</date>
            <delta_ts>2012-07-18 17:19:03 -0700</delta_ts>
            <desc>Patch</desc>
            <filename>bug-91679-20120718152525.patch</filename>
            <type>text/plain</type>
            <size>25674</size>
            <attacher name="Joshua Bell">jsbell</attacher>
            
              <data encoding="base64">U3VidmVyc2lvbiBSZXZpc2lvbjogMTIyOTk3CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9D
aGFuZ2VMb2cgYi9Tb3VyY2UvV2ViQ29yZS9DaGFuZ2VMb2cKaW5kZXggMGM3YWVhOGYyMzU2NGUw
NGMwMDVjODFiYzVkMDAwYzY2ZjEyNTU3Ny4uMDc2YjRlZDE4OTJjZWIwM2YzYzM1NjAxZTA3MzRh
YzllYjk0NzYyYiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvQ2hhbmdlTG9nCisrKyBiL1Nv
dXJjZS9XZWJDb3JlL0NoYW5nZUxvZwpAQCAtMSwzICsxLDQ5IEBACisyMDEyLTA3LTE4ICBKb3No
dWEgQmVsbCAgPGpzYmVsbEBjaHJvbWl1bS5vcmc+CisKKyAgICAgICAgSW5kZXhlZERCOiBUaHJv
dyBuYXRpdmUgVHlwZUVycm9ycyBwZXIgc3BlYworICAgICAgICBodHRwczovL2J1Z3Mud2Via2l0
Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9OTE2NzkKKworICAgICAgICBSZXZpZXdlZCBieSBOT0JPRFkg
KE9PUFMhKS4KKworICAgICAgICBQZXIgdGhlIElEQiBzcGVjLCB0aGUgYWR2YW5jZSgpLCBvcGVu
Q3Vyc29yKCksIG9wZW5LZXlDdXJzb3IoKSBhbmQgdHJhbnNhY3Rpb24oKQorICAgICAgICBtZXRo
b2RzIHN1cHBvc2VkIHRvIHRocm93IHRydWUgbmF0aXZlIEphdmFTY3JpcHQgVHlwZUVycm9yIG9i
amVjdHMgYXMgZXhjZXB0aW9ucworICAgICAgICByYXRoZXIgdGhhbiBET01FeGNlcHRpb24gb2Jq
ZWN0cy4gSW1wbGVtZW50IHRoaXMgYnkgYWRkaW5nIGEgc3BlY2lhbCBET01FeGNlcHRpb24KKyAg
ICAgICAgY29kZSB0aGF0IGlzIHRlc3RlZCBmb3IgaW4gdGhlIGJpbmRpbmcgbGF5ZXIuCisKKyAg
ICAgICAgVGVzdHM6IHN0b3JhZ2UvaW5kZXhlZGRiL2N1cnNvci1hZHZhbmNlLmh0bWwKKyAgICAg
ICAgICAgICAgIHN0b3JhZ2UvaW5kZXhlZGRiL2luZGV4LWJhc2ljcy5odG1sCisgICAgICAgICAg
ICAgICBzdG9yYWdlL2luZGV4ZWRkYi9pbmRleC1iYXNpY3Mtd29ya2Vycy5odG1sCisgICAgICAg
ICAgICAgICBzdG9yYWdlL2luZGV4ZWRkYi9vYmplY3RzdG9yZS1jdXJzb3IuaHRtbAorICAgICAg
ICAgICAgICAgc3RvcmFnZS9pbmRleGVkZGIvdHJhbnNhY3Rpb24tYmFzaWNzLmh0bWwKKworICAg
ICAgICAqIE1vZHVsZXMvaW5kZXhlZGRiL0lEQkN1cnNvci5jcHA6IFVzZSB0aGUgbmV3IERPTUV4
Y2VwdGlvbiBjb2RlLgorICAgICAgICAoV2ViQ29yZTo6SURCQ3Vyc29yOjphZHZhbmNlKToKKyAg
ICAgICAgKFdlYkNvcmU6OklEQkN1cnNvcjo6c3RyaW5nVG9EaXJlY3Rpb24pOgorICAgICAgICAo
V2ViQ29yZTo6SURCQ3Vyc29yOjpkaXJlY3Rpb25Ub1N0cmluZyk6CisgICAgICAgICogTW9kdWxl
cy9pbmRleGVkZGIvSURCRGF0YWJhc2UuY3BwOiBEaXR0by4KKyAgICAgICAgKFdlYkNvcmU6OklE
QkRhdGFiYXNlOjpzZXRWZXJzaW9uKToKKyAgICAgICAgKiBNb2R1bGVzL2luZGV4ZWRkYi9JREJE
YXRhYmFzZUV4Y2VwdGlvbi5jcHA6IFJlbW92ZSB0ZW1wb3JhcnkgY3J1ZnQvbWFyayBhcyBsZWdh
Y3kuCisgICAgICAgIChXZWJDb3JlKToKKyAgICAgICAgKiBNb2R1bGVzL2luZGV4ZWRkYi9JREJE
YXRhYmFzZUV4Y2VwdGlvbi5oOiBEaXR0by4KKyAgICAgICAgKiBNb2R1bGVzL2luZGV4ZWRkYi9J
REJEYXRhYmFzZUV4Y2VwdGlvbi5pZGw6IERpdHRvLgorICAgICAgICAqIE1vZHVsZXMvaW5kZXhl
ZGRiL0lEQkZhY3RvcnkuY3BwOiBVc2UgdGhlIG5ldyBET01FeGNlcHRpb24gY29kZS4KKyAgICAg
ICAgKFdlYkNvcmU6OklEQkZhY3Rvcnk6Om9wZW4pOgorICAgICAgICAoV2ViQ29yZTo6SURCRmFj
dG9yeTo6ZGVsZXRlRGF0YWJhc2UpOgorICAgICAgICAqIE1vZHVsZXMvaW5kZXhlZGRiL0lEQklu
ZGV4LmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OklEQkluZGV4OjpvcGVuQ3Vyc29yKTogUGFzcyBk
aXJlY3Rpb24gYWxvbmcuCisgICAgICAgIChXZWJDb3JlOjpJREJJbmRleDo6b3BlbktleUN1cnNv
cik6IFBhc3MgZGlyZWN0aW9uIGFsb25nLgorICAgICAgICAqIE1vZHVsZXMvaW5kZXhlZGRiL0lE
Qk9iamVjdFN0b3JlLmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OklEQk9iamVjdFN0b3JlOjpjcmVh
dGVJbmRleCk6IFVzZSB0aGUgbmV3IERPTUV4Y2VwdGlvbiBjb2RlLgorICAgICAgICAoV2ViQ29y
ZTo6SURCT2JqZWN0U3RvcmU6Om9wZW5DdXJzb3IpOiBQYXNzIGRpcmVjdGlvbiBhbG9uZy4KKyAg
ICAgICAgKiBNb2R1bGVzL2luZGV4ZWRkYi9JREJUcmFuc2FjdGlvbi5jcHA6IFVzZSB0aGUgbmV3
IERPTUV4Y2VwdGlvbiBjb2RlLgorICAgICAgICAoV2ViQ29yZTo6SURCVHJhbnNhY3Rpb246OnN0
cmluZ1RvTW9kZSk6CisgICAgICAgIChXZWJDb3JlOjpJREJUcmFuc2FjdGlvbjo6bW9kZVRvU3Ry
aW5nKToKKyAgICAgICAgKiBiaW5kaW5ncy9qcy9KU0RPTUJpbmRpbmcuY3BwOgorICAgICAgICAo
V2ViQ29yZTo6c2V0RE9NRXhjZXB0aW9uKTogSW50ZXJjZXB0IG5ldyBET01FeGNlcHRpb24gY29k
ZSwgdGhyb3cgbmF0aXZlIFR5cGVFcnJvci4KKyAgICAgICAgKiBiaW5kaW5ncy92OC9WOFByb3h5
LmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OlY4UHJveHk6OnNldERPTUV4Y2VwdGlvbik6IERpdHRv
LgorICAgICAgICAqIGRvbS9FeGNlcHRpb25Db2RlLmg6IEFkZCBuZXcgRE9NRXhjZXB0aW9uIGNv
ZGUuCisKIDIwMTItMDctMTggIFZhcnVuIEphaW4gIDx2YXJ1bmphaW5AY2hyb21pdW0ub3JnPgog
CiAgICAgICAgIFtjaHJvbWl1bV0gRHJhZyBpbWFnZSBmb3IgaW1hZ2UgZWxlbWVudHMgc2hvdWxk
IGJlIHNjYWxlZCB3aXRoIGRldmljZSBzY2FsZSBmYWN0b3IuCmRpZmYgLS1naXQgYS9Tb3VyY2Uv
V2ViQ29yZS9Nb2R1bGVzL2luZGV4ZWRkYi9JREJDdXJzb3IuY3BwIGIvU291cmNlL1dlYkNvcmUv
TW9kdWxlcy9pbmRleGVkZGIvSURCQ3Vyc29yLmNwcAppbmRleCA2ZTI4NjkxYWYwYjc3MTZjOTA2
NTZjODZiNWM4ODcwNDVjN2I1N2UwLi40MTdkMGVkZmZmOTExYmNjM2ViNzBmNWZkNjMwY2NhMzgx
OTliNWQ0IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL2luZGV4ZWRkYi9JREJD
dXJzb3IuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvaW5kZXhlZGRiL0lEQkN1cnNv
ci5jcHAKQEAgLTE4Miw3ICsxODIsNyBAQCB2b2lkIElEQkN1cnNvcjo6YWR2YW5jZSh1bnNpZ25l
ZCBsb25nIGNvdW50LCBFeGNlcHRpb25Db2RlJiBlYykKICAgICB9CiAKICAgICBpZiAoIWNvdW50
KSB7Ci0gICAgICAgIGVjID0gSURCRGF0YWJhc2VFeGNlcHRpb246OklEQl9UWVBFX0VSUjsKKyAg
ICAgICAgZWMgPSBOQVRJVkVfVFlQRV9FUlI7CiAgICAgICAgIHJldHVybjsKICAgICB9CiAKQEAg
LTMwNiw3ICszMDYsNyBAQCBJREJDdXJzb3I6OkRpcmVjdGlvbiBJREJDdXJzb3I6OnN0cmluZ1Rv
RGlyZWN0aW9uKGNvbnN0IFN0cmluZyYgZGlyZWN0aW9uU3RyaW5nLAogICAgIGlmIChkaXJlY3Rp
b25TdHJpbmcgPT0gSURCQ3Vyc29yOjpkaXJlY3Rpb25QcmV2VW5pcXVlKCkpCiAgICAgICAgIHJl
dHVybiBJREJDdXJzb3I6OlBSRVZfTk9fRFVQTElDQVRFOwogCi0gICAgZWMgPSBJREJEYXRhYmFz
ZUV4Y2VwdGlvbjo6SURCX1RZUEVfRVJSOworICAgIGVjID0gTkFUSVZFX1RZUEVfRVJSOwogICAg
IHJldHVybiBJREJDdXJzb3I6Ok5FWFQ7CiB9CiAKQEAgLTMyNiw3ICszMjYsNyBAQCBjb25zdCBB
dG9taWNTdHJpbmcmIElEQkN1cnNvcjo6ZGlyZWN0aW9uVG9TdHJpbmcodW5zaWduZWQgc2hvcnQg
ZGlyZWN0aW9uLCBFeGNlcAogICAgICAgICByZXR1cm4gSURCQ3Vyc29yOjpkaXJlY3Rpb25QcmV2
VW5pcXVlKCk7CiAKICAgICBkZWZhdWx0OgotICAgICAgICBlYyA9IElEQkRhdGFiYXNlRXhjZXB0
aW9uOjpJREJfVFlQRV9FUlI7CisgICAgICAgIGVjID0gTkFUSVZFX1RZUEVfRVJSOwogICAgICAg
ICByZXR1cm4gSURCQ3Vyc29yOjpkaXJlY3Rpb25OZXh0KCk7CiAgICAgfQogfQpkaWZmIC0tZ2l0
IGEvU291cmNlL1dlYkNvcmUvTW9kdWxlcy9pbmRleGVkZGIvSURCRGF0YWJhc2UuY3BwIGIvU291
cmNlL1dlYkNvcmUvTW9kdWxlcy9pbmRleGVkZGIvSURCRGF0YWJhc2UuY3BwCmluZGV4IDM1YjVj
YTFmMDU5YWI3ODc5M2JhMzRkOWFmNGZkMDJjZjBjZWMxNjguLjJmOWM4OTMyZTBiZWQwMDNjOTgz
YTUxNjE4M2QzM2IzYzQ0NWRjYmEgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMv
aW5kZXhlZGRiL0lEQkRhdGFiYXNlLmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL2lu
ZGV4ZWRkYi9JREJEYXRhYmFzZS5jcHAKQEAgLTE5MCw3ICsxOTAsNyBAQCB2b2lkIElEQkRhdGFi
YXNlOjpkZWxldGVPYmplY3RTdG9yZShjb25zdCBTdHJpbmcmIG5hbWUsIEV4Y2VwdGlvbkNvZGUm
IGVjKQogUGFzc1JlZlB0cjxJREJWZXJzaW9uQ2hhbmdlUmVxdWVzdD4gSURCRGF0YWJhc2U6OnNl
dFZlcnNpb24oU2NyaXB0RXhlY3V0aW9uQ29udGV4dCogY29udGV4dCwgY29uc3QgU3RyaW5nJiB2
ZXJzaW9uLCBFeGNlcHRpb25Db2RlJiBlYykKIHsKICAgICBpZiAodmVyc2lvbi5pc051bGwoKSkg
ewotICAgICAgICBlYyA9IElEQkRhdGFiYXNlRXhjZXB0aW9uOjpJREJfVFlQRV9FUlI7CisgICAg
ICAgIGVjID0gTkFUSVZFX1RZUEVfRVJSOwogICAgICAgICByZXR1cm4gMDsKICAgICB9CiAKZGlm
ZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvaW5kZXhlZGRiL0lEQkRhdGFiYXNlRXhj
ZXB0aW9uLmNwcCBiL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvaW5kZXhlZGRiL0lEQkRhdGFiYXNl
RXhjZXB0aW9uLmNwcAppbmRleCA4MDM0OTkwNTUyZTBjZWE4NmQ3ZGEyNWU2NDBhNzdlZmM0MTAx
MGViLi5mZTg1MGJiMTk5OGE5OGUxZGViMDU2NTlmNDQ4MTdjOTM3NDcxMDJmIDEwMDY0NAotLS0g
YS9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL2luZGV4ZWRkYi9JREJEYXRhYmFzZUV4Y2VwdGlvbi5j
cHAKKysrIGIvU291cmNlL1dlYkNvcmUvTW9kdWxlcy9pbmRleGVkZGIvSURCRGF0YWJhc2VFeGNl
cHRpb24uY3BwCkBAIC02Miw4ICs2Miw3IEBAIHN0YXRpYyBjb25zdCBzdHJ1Y3QgSURCRGF0YWJh
c2VFeGNlcHRpb25OYW1lRGVzY3JpcHRpb24gewogICAgIHsgIlF1b3RhRXhjZWVkZWRFcnJvciIs
ICJUaGUgb3BlcmF0aW9uIGZhaWxlZCBiZWNhdXNlIHRoZXJlIHdhcyBub3QgZW5vdWdoIHJlbWFp
bmluZyBzdG9yYWdlIHNwYWNlLCBvciB0aGUgc3RvcmFnZSBxdW90YSB3YXMgcmVhY2hlZCBhbmQg
dGhlIHVzZXIgZGVjbGluZWQgdG8gZ2l2ZSBtb3JlIHNwYWNlIHRvIHRoZSBkYXRhYmFzZS4iLCBR
VU9UQV9FWENFRURFRF9FUlIgfSwgLy8gRklYTUU6IFRoaXMgaXNuJ3QgdXNlZCB5ZXQKICAgICB7
ICJTeW50YXhFcnJvciIsICJUaGUga2V5cGF0aCBhcmd1bWVudCBjb250YWlucyBhbiBpbnZhbGlk
IGtleSBwYXRoLiIsIFNZTlRBWF9FUlIgfSwKICAgICB7ICJEYXRhQ2xvbmVFcnJvciIsICJUaGUg
ZGF0YSBiZWluZyBzdG9yZWQgY291bGQgbm90IGJlIGNsb25lZCBieSB0aGUgaW50ZXJuYWwgc3Ry
dWN0dXJlZCBjbG9uaW5nIGFsZ29yaXRobS4iLCBEQVRBX0NMT05FX0VSUiB9LAotICAgIC8vIEZJ
WE1FOiBzaG91bGQgYmUgYSBKYXZhU2NyaXB0IFR5cGVFcnJvci4gU2VlIGh0dHBzOi8vYnVncy53
ZWJraXQub3JnL3Nob3dfYnVnLmNnaT9pZD04NTUxMwotICAgIHsgIlR5cGVFcnJvciIsICJUaGlz
IHNob3VsZCBiZSBhIFR5cGVFcnJvciIsIDAgfSwKKyAgICB7IDAsIDAsIDAgfSwgLy8gRklYTUU6
IFByZXZpb3VzL2xlZ2FjeSB2YWx1ZSB3YXMgSURCX1RZUEVfRVJSLgogICAgIHsgMCwgMCwgMCB9
LCAvLyBGSVhNRTogUHJldmlvdXMvbGVnYWN5IHZhbHVlIHdhcyBJREJfTk9UX1NVUFBPUlRFRF9F
UlIuCiB9OwogCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL2luZGV4ZWRkYi9J
REJEYXRhYmFzZUV4Y2VwdGlvbi5oIGIvU291cmNlL1dlYkNvcmUvTW9kdWxlcy9pbmRleGVkZGIv
SURCRGF0YWJhc2VFeGNlcHRpb24uaAppbmRleCAyODkwYWVjYmZjOWZhZjRiNmFjODViOGIyNzkw
ODY4MDQwZTdjYzExLi4zZTQ0YTY4Y2U4YjQxYzY5YTcxNzUyOWNjNGQ0NTMzNTAyNTQxMmJhIDEw
MDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL2luZGV4ZWRkYi9JREJEYXRhYmFzZUV4
Y2VwdGlvbi5oCisrKyBiL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvaW5kZXhlZGRiL0lEQkRhdGFi
YXNlRXhjZXB0aW9uLmgKQEAgLTY1LDcgKzY1LDcgQEAgcHVibGljOgogICAgICAgICBJREJfUVVP
VEFfRVhDRUVERURfRVJSLAogICAgICAgICBJREJfU1lOVEFYX0VSUiwKICAgICAgICAgSURCX0RB
VEFfQ0xPTkVfRVJSLAotICAgICAgICBJREJfVFlQRV9FUlIsIC8vIEZJWE1FOiBQbGFjZWhvbGRl
ciB1bnRpbCBiaW5kaW5ncyBoYXZlIGJlZW4gdXBkYXRlZCB0byB0aHJvdyBhIEpTIFR5cGVFcnJv
ci4gU2VlIGh0dHBzOi8vYnVncy53ZWJraXQub3JnL3Nob3dfYnVnLmNnaT9pZD04NTUxMworICAg
ICAgICBMRUdBQ1lfSURCX1RZUEVfRVJSLCAvLyBGSVhNRTogUGxhY2Vob2xkZXIuCiAgICAgICAg
IExFR0FDWV9JREJfTk9UX1NVUFBPUlRFRF9FUlIsIC8vIEZJWE1FOiBQbGFjZWhvbGRlci4KICAg
ICB9OwogCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL2luZGV4ZWRkYi9JREJE
YXRhYmFzZUV4Y2VwdGlvbi5pZGwgYi9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL2luZGV4ZWRkYi9J
REJEYXRhYmFzZUV4Y2VwdGlvbi5pZGwKaW5kZXggOTg0Y2FiOTIyYmQ2NmNhN2Y0ZTI3NmY2YjIx
NDQxYzllMmU2M2FkMy4uNjdkODExYzNlYWYzMjBiNDQ2MThjNmVjMDRkNGU1Njg2MTkyNGIzYiAx
MDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvTW9kdWxlcy9pbmRleGVkZGIvSURCRGF0YWJhc2VF
eGNlcHRpb24uaWRsCisrKyBiL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvaW5kZXhlZGRiL0lEQkRh
dGFiYXNlRXhjZXB0aW9uLmlkbApAQCAtNDksMTAgKzQ5LDYgQEAgbW9kdWxlIHN0b3JhZ2Ugewog
ICAgICAgICBjb25zdCB1bnNpZ25lZCBzaG9ydCBSRUFEX09OTFlfRVJSID0gOTsKICAgICAgICAg
Y29uc3QgdW5zaWduZWQgc2hvcnQgVkVSX0VSUiA9IDEyOwogCi0gICAgICAgIC8vIEZJWE1FOiBQ
bGFjZWhvbGRlciB1bnRpbCBiaW5kaW5ncyBoYXZlIGJlZW4gdXBkYXRlZCB0byB0aHJvdyBhIEpT
IFR5cGVFcnJvci4KLSAgICAgICAgLy8gU2VlIGh0dHBzOi8vYnVncy53ZWJraXQub3JnL3Nob3df
YnVnLmNnaT9pZD04NTUxMwotICAgICAgICBjb25zdCB1bnNpZ25lZCBzaG9ydCBUWVBFX0VSUiA9
IDIxOwotICAgICAgICAKICAgICAgICAgY29uc3QgdW5zaWduZWQgc2hvcnQgTk9UX0ZPVU5EX0VS
UiA9IDg7CiAgICAgICAgIGNvbnN0IHVuc2lnbmVkIHNob3J0IEFCT1JUX0VSUiA9IDIwOwogICAg
ICAgICBjb25zdCB1bnNpZ25lZCBzaG9ydCBUSU1FT1VUX0VSUiA9IDIzOwpkaWZmIC0tZ2l0IGEv
U291cmNlL1dlYkNvcmUvTW9kdWxlcy9pbmRleGVkZGIvSURCRmFjdG9yeS5jcHAgYi9Tb3VyY2Uv
V2ViQ29yZS9Nb2R1bGVzL2luZGV4ZWRkYi9JREJGYWN0b3J5LmNwcAppbmRleCA3ZTEwY2IxYTUz
YjA5YWQ0MjJkZjgwNTBlNDAxNjZlY2MzYzVjYmEwLi5jZjUyY2MxZmUyYjEzNTViNmM1NGVkY2Uy
NjVlMGYzZThjM2E1ZTkxIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL2luZGV4
ZWRkYi9JREJGYWN0b3J5LmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL2luZGV4ZWRk
Yi9JREJGYWN0b3J5LmNwcApAQCAtMTA4LDcgKzEwOCw3IEBAIFBhc3NSZWZQdHI8SURCUmVxdWVz
dD4gSURCRmFjdG9yeTo6Z2V0RGF0YWJhc2VOYW1lcyhTY3JpcHRFeGVjdXRpb25Db250ZXh0KiBj
b250CiBQYXNzUmVmUHRyPElEQlJlcXVlc3Q+IElEQkZhY3Rvcnk6Om9wZW4oU2NyaXB0RXhlY3V0
aW9uQ29udGV4dCogY29udGV4dCwgY29uc3QgU3RyaW5nJiBuYW1lLCBFeGNlcHRpb25Db2RlJiBl
YykKIHsKICAgICBpZiAobmFtZS5pc051bGwoKSkgewotICAgICAgICBlYyA9IElEQkRhdGFiYXNl
RXhjZXB0aW9uOjpJREJfVFlQRV9FUlI7CisgICAgICAgIGVjID0gTkFUSVZFX1RZUEVfRVJSOwog
ICAgICAgICByZXR1cm4gMDsKICAgICB9CiAgICAgaWYgKCFpc0NvbnRleHRWYWxpZChjb250ZXh0
KSkKQEAgLTEyMiw3ICsxMjIsNyBAQCBQYXNzUmVmUHRyPElEQlJlcXVlc3Q+IElEQkZhY3Rvcnk6
Om9wZW4oU2NyaXB0RXhlY3V0aW9uQ29udGV4dCogY29udGV4dCwgY29uc3QgUwogUGFzc1JlZlB0
cjxJREJWZXJzaW9uQ2hhbmdlUmVxdWVzdD4gSURCRmFjdG9yeTo6ZGVsZXRlRGF0YWJhc2UoU2Ny
aXB0RXhlY3V0aW9uQ29udGV4dCogY29udGV4dCwgY29uc3QgU3RyaW5nJiBuYW1lLCBFeGNlcHRp
b25Db2RlJiBlYykKIHsKICAgICBpZiAobmFtZS5pc051bGwoKSkgewotICAgICAgICBlYyA9IElE
QkRhdGFiYXNlRXhjZXB0aW9uOjpJREJfVFlQRV9FUlI7CisgICAgICAgIGVjID0gTkFUSVZFX1RZ
UEVfRVJSOwogICAgICAgICByZXR1cm4gMDsKICAgICB9CiAgICAgaWYgKCFpc0NvbnRleHRWYWxp
ZChjb250ZXh0KSkKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvaW5kZXhlZGRi
L0lEQkluZGV4LmNwcCBiL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvaW5kZXhlZGRiL0lEQkluZGV4
LmNwcAppbmRleCBmZWM5NjgwNGI2NjkwMjQzM2QyY2VkYzljMmMzN2M0NGQ1YmVkYzE5Li5lYWU0
ODg0MDAxMjIxOTA3YzllN2JhOTkzMGJlOTQzZWNkMTM2MTFlIDEwMDY0NAotLS0gYS9Tb3VyY2Uv
V2ViQ29yZS9Nb2R1bGVzL2luZGV4ZWRkYi9JREJJbmRleC5jcHAKKysrIGIvU291cmNlL1dlYkNv
cmUvTW9kdWxlcy9pbmRleGVkZGIvSURCSW5kZXguY3BwCkBAIC0xMDAsNyArMTAwLDcgQEAgUGFz
c1JlZlB0cjxJREJSZXF1ZXN0PiBJREJJbmRleDo6b3BlbkN1cnNvcihTY3JpcHRFeGVjdXRpb25D
b250ZXh0KiBjb250ZXh0LCBQYXMKICAgICBSZWZQdHI8SURCS2V5UmFuZ2U+IGtleVJhbmdlID0g
SURCS2V5UmFuZ2U6Om9ubHkoa2V5LCBlYyk7CiAgICAgaWYgKGVjKQogICAgICAgICByZXR1cm4g
MDsKLSAgICByZXR1cm4gb3BlbkN1cnNvcihjb250ZXh0LCBrZXlSYW5nZS5yZWxlYXNlKCksIGVj
KTsKKyAgICByZXR1cm4gb3BlbkN1cnNvcihjb250ZXh0LCBrZXlSYW5nZS5yZWxlYXNlKCksIGRp
cmVjdGlvbiwgZWMpOwogfQogCiBQYXNzUmVmUHRyPElEQlJlcXVlc3Q+IElEQkluZGV4OjpvcGVu
Q3Vyc29yKFNjcmlwdEV4ZWN1dGlvbkNvbnRleHQqIGNvbnRleHQsIFBhc3NSZWZQdHI8SURCS2V5
PiBrZXksIHVuc2lnbmVkIHNob3J0IGRpcmVjdGlvbiwgRXhjZXB0aW9uQ29kZSYgZWMpCkBAIC0x
MDksNyArMTA5LDcgQEAgUGFzc1JlZlB0cjxJREJSZXF1ZXN0PiBJREJJbmRleDo6b3BlbkN1cnNv
cihTY3JpcHRFeGVjdXRpb25Db250ZXh0KiBjb250ZXh0LCBQYXMKICAgICBSZWZQdHI8SURCS2V5
UmFuZ2U+IGtleVJhbmdlID0gSURCS2V5UmFuZ2U6Om9ubHkoa2V5LCBlYyk7CiAgICAgaWYgKGVj
KQogICAgICAgICByZXR1cm4gMDsKLSAgICByZXR1cm4gb3BlbkN1cnNvcihjb250ZXh0LCBrZXlS
YW5nZS5yZWxlYXNlKCksIGVjKTsKKyAgICByZXR1cm4gb3BlbkN1cnNvcihjb250ZXh0LCBrZXlS
YW5nZS5yZWxlYXNlKCksIGRpcmVjdGlvbiwgZWMpOwogfQogCiBQYXNzUmVmUHRyPElEQlJlcXVl
c3Q+IElEQkluZGV4Ojpjb3VudChTY3JpcHRFeGVjdXRpb25Db250ZXh0KiBjb250ZXh0LCBQYXNz
UmVmUHRyPElEQktleVJhbmdlPiBrZXlSYW5nZSwgRXhjZXB0aW9uQ29kZSYgZWMpCkBAIC0xODMs
NyArMTgzLDcgQEAgUGFzc1JlZlB0cjxJREJSZXF1ZXN0PiBJREJJbmRleDo6b3BlbktleUN1cnNv
cihTY3JpcHRFeGVjdXRpb25Db250ZXh0KiBjb250ZXh0LAogICAgIFJlZlB0cjxJREJLZXlSYW5n
ZT4ga2V5UmFuZ2UgPSBJREJLZXlSYW5nZTo6b25seShrZXksIGVjKTsKICAgICBpZiAoZWMpCiAg
ICAgICAgIHJldHVybiAwOwotICAgIHJldHVybiBvcGVuS2V5Q3Vyc29yKGNvbnRleHQsIGtleVJh
bmdlLnJlbGVhc2UoKSwgZWMpOworICAgIHJldHVybiBvcGVuS2V5Q3Vyc29yKGNvbnRleHQsIGtl
eVJhbmdlLnJlbGVhc2UoKSwgZGlyZWN0aW9uLCBlYyk7CiB9CiAKIFBhc3NSZWZQdHI8SURCUmVx
dWVzdD4gSURCSW5kZXg6Om9wZW5LZXlDdXJzb3IoU2NyaXB0RXhlY3V0aW9uQ29udGV4dCogY29u
dGV4dCwgUGFzc1JlZlB0cjxJREJLZXk+IGtleSwgdW5zaWduZWQgc2hvcnQgZGlyZWN0aW9uLCBF
eGNlcHRpb25Db2RlJiBlYykKQEAgLTE5Miw3ICsxOTIsNyBAQCBQYXNzUmVmUHRyPElEQlJlcXVl
c3Q+IElEQkluZGV4OjpvcGVuS2V5Q3Vyc29yKFNjcmlwdEV4ZWN1dGlvbkNvbnRleHQqIGNvbnRl
eHQsCiAgICAgUmVmUHRyPElEQktleVJhbmdlPiBrZXlSYW5nZSA9IElEQktleVJhbmdlOjpvbmx5
KGtleSwgZWMpOwogICAgIGlmIChlYykKICAgICAgICAgcmV0dXJuIDA7Ci0gICAgcmV0dXJuIG9w
ZW5LZXlDdXJzb3IoY29udGV4dCwga2V5UmFuZ2UucmVsZWFzZSgpLCBlYyk7CisgICAgcmV0dXJu
IG9wZW5LZXlDdXJzb3IoY29udGV4dCwga2V5UmFuZ2UucmVsZWFzZSgpLCBkaXJlY3Rpb24sIGVj
KTsKIH0KIAogUGFzc1JlZlB0cjxJREJSZXF1ZXN0PiBJREJJbmRleDo6Z2V0KFNjcmlwdEV4ZWN1
dGlvbkNvbnRleHQqIGNvbnRleHQsIFBhc3NSZWZQdHI8SURCS2V5PiBrZXksIEV4Y2VwdGlvbkNv
ZGUmIGVjKQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvTW9kdWxlcy9pbmRleGVkZGIvSURC
T2JqZWN0U3RvcmUuY3BwIGIvU291cmNlL1dlYkNvcmUvTW9kdWxlcy9pbmRleGVkZGIvSURCT2Jq
ZWN0U3RvcmUuY3BwCmluZGV4IGRhZTgzYzU5MDhhOTBmY2E0NTBmNTcxZjk5ZjczYmViYWJlYTY2
NmQuLjY4OTM4MTdlNDdiMGNkODY5YmM3YjYyMmRlNGIyMTliMmQ2YzViMzYgMTAwNjQ0Ci0tLSBh
L1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvaW5kZXhlZGRiL0lEQk9iamVjdFN0b3JlLmNwcAorKysg
Yi9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL2luZGV4ZWRkYi9JREJPYmplY3RTdG9yZS5jcHAKQEAg
LTI3Miw3ICsyNzIsNyBAQCBQYXNzUmVmUHRyPElEQkluZGV4PiBJREJPYmplY3RTdG9yZTo6Y3Jl
YXRlSW5kZXgoY29uc3QgU3RyaW5nJiBuYW1lLCBjb25zdCBJREJLZQogICAgICAgICByZXR1cm4g
MDsKICAgICB9CiAgICAgaWYgKG5hbWUuaXNOdWxsKCkpIHsKLSAgICAgICAgZWMgPSBJREJEYXRh
YmFzZUV4Y2VwdGlvbjo6SURCX1RZUEVfRVJSOworICAgICAgICBlYyA9IE5BVElWRV9UWVBFX0VS
UjsKICAgICAgICAgcmV0dXJuIDA7CiAgICAgfQogICAgIGlmIChtX21ldGFkYXRhLmluZGV4ZXMu
Y29udGFpbnMobmFtZSkpIHsKQEAgLTQwMyw3ICs0MDMsNyBAQCBQYXNzUmVmUHRyPElEQlJlcXVl
c3Q+IElEQk9iamVjdFN0b3JlOjpvcGVuQ3Vyc29yKFNjcmlwdEV4ZWN1dGlvbkNvbnRleHQqIGNv
bnRleAogICAgIFJlZlB0cjxJREJLZXlSYW5nZT4ga2V5UmFuZ2UgPSBJREJLZXlSYW5nZTo6b25s
eShrZXksIGVjKTsKICAgICBpZiAoZWMpCiAgICAgICAgIHJldHVybiAwOwotICAgIHJldHVybiBv
cGVuQ3Vyc29yKGNvbnRleHQsIGtleVJhbmdlLnJlbGVhc2UoKSwgZWMpOworICAgIHJldHVybiBv
cGVuQ3Vyc29yKGNvbnRleHQsIGtleVJhbmdlLnJlbGVhc2UoKSwgZGlyZWN0aW9uLCBlYyk7CiB9
CiAKIFBhc3NSZWZQdHI8SURCUmVxdWVzdD4gSURCT2JqZWN0U3RvcmU6Om9wZW5DdXJzb3IoU2Ny
aXB0RXhlY3V0aW9uQ29udGV4dCogY29udGV4dCwgUGFzc1JlZlB0cjxJREJLZXk+IGtleSwgdW5z
aWduZWQgc2hvcnQgZGlyZWN0aW9uLCBFeGNlcHRpb25Db2RlJiBlYykKZGlmZiAtLWdpdCBhL1Nv
dXJjZS9XZWJDb3JlL01vZHVsZXMvaW5kZXhlZGRiL0lEQlRyYW5zYWN0aW9uLmNwcCBiL1NvdXJj
ZS9XZWJDb3JlL01vZHVsZXMvaW5kZXhlZGRiL0lEQlRyYW5zYWN0aW9uLmNwcAppbmRleCA1YzJi
MGVjYmFjODY1N2QwNTIwODczNzk2MDJiNDhkOGRjYzQzNTMwLi5mNWU3NjFlNmE2MmM3NTgxMTNk
MGU5M2Y4MDA1MzY2NzI1NjE5M2RkIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVz
L2luZGV4ZWRkYi9JREJUcmFuc2FjdGlvbi5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvTW9kdWxl
cy9pbmRleGVkZGIvSURCVHJhbnNhY3Rpb24uY3BwCkBAIC0zMTgsNyArMzE4LDcgQEAgSURCVHJh
bnNhY3Rpb246Ok1vZGUgSURCVHJhbnNhY3Rpb246OnN0cmluZ1RvTW9kZShjb25zdCBTdHJpbmcm
IG1vZGVTdHJpbmcsIEV4Y2UKICAgICAgICAgcmV0dXJuIElEQlRyYW5zYWN0aW9uOjpSRUFEX09O
TFk7CiAgICAgaWYgKG1vZGVTdHJpbmcgPT0gSURCVHJhbnNhY3Rpb246Om1vZGVSZWFkV3JpdGUo
KSkKICAgICAgICAgcmV0dXJuIElEQlRyYW5zYWN0aW9uOjpSRUFEX1dSSVRFOwotICAgIGVjID0g
SURCRGF0YWJhc2VFeGNlcHRpb246OklEQl9UWVBFX0VSUjsKKyAgICBlYyA9IE5BVElWRV9UWVBF
X0VSUjsKICAgICByZXR1cm4gSURCVHJhbnNhY3Rpb246OlJFQURfT05MWTsKIH0KIApAQCAtMzM4
LDcgKzMzOCw3IEBAIGNvbnN0IEF0b21pY1N0cmluZyYgSURCVHJhbnNhY3Rpb246Om1vZGVUb1N0
cmluZyhJREJUcmFuc2FjdGlvbjo6TW9kZSBtb2RlLCBFeGNlCiAgICAgICAgIGJyZWFrOwogCiAg
ICAgZGVmYXVsdDoKLSAgICAgICAgZWMgPSBJREJEYXRhYmFzZUV4Y2VwdGlvbjo6SURCX1RZUEVf
RVJSOworICAgICAgICBlYyA9IE5BVElWRV9UWVBFX0VSUjsKICAgICAgICAgcmV0dXJuIElEQlRy
YW5zYWN0aW9uOjptb2RlUmVhZE9ubHkoKTsKICAgICB9CiB9CmRpZmYgLS1naXQgYS9Tb3VyY2Uv
V2ViQ29yZS9iaW5kaW5ncy9qcy9KU0RPTUJpbmRpbmcuY3BwIGIvU291cmNlL1dlYkNvcmUvYmlu
ZGluZ3MvanMvSlNET01CaW5kaW5nLmNwcAppbmRleCBmYzE3OTkwN2EyYjY3NDkyZjZjNmNlYTNi
MzE5NDIyZWQyN2Y2OWMxLi5jZjIxYWFlNjZjNmU4ZjExYTQ3MDVkNTY1MTM1YmUwNjJmNWRlODQ4
IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9iaW5kaW5ncy9qcy9KU0RPTUJpbmRpbmcuY3Bw
CisrKyBiL1NvdXJjZS9XZWJDb3JlL2JpbmRpbmdzL2pzL0pTRE9NQmluZGluZy5jcHAKQEAgLTE5
OCw2ICsxOTgsMTEgQEAgdm9pZCBzZXRET01FeGNlcHRpb24oRXhlY1N0YXRlKiBleGVjLCBFeGNl
cHRpb25Db2RlIGVjKQogICAgIGlmICghZWMgfHwgZXhlYy0+aGFkRXhjZXB0aW9uKCkpCiAgICAg
ICAgIHJldHVybjsKIAorICAgIGlmIChlYyA9PSBOQVRJVkVfVFlQRV9FUlIpIHsKKyAgICAgICAg
dGhyb3dUeXBlRXJyb3IoZXhlYyk7CisgICAgICAgIHJldHVybjsKKyAgICB9CisKICAgICAvLyBG
SVhNRTogQWxsIGNhbGxlcnMgdG8gc2V0RE9NRXhjZXB0aW9uIG5lZWQgdG8gcGFzcyBpbiB0aGUg
cmlnaHQgZ2xvYmFsIG9iamVjdAogICAgIC8vIGZvciBub3csIHdlJ3JlIGdvaW5nIHRvIGFzc3Vt
ZSB0aGUgbGV4aWNhbEdsb2JhbE9iamVjdC4gIFdoaWNoIGlzIHdyb25nIGluIGNhc2VzIGxpa2Ug
dGhpczoKICAgICAvLyBmcmFtZXNbMF0uZG9jdW1lbnQuY3JlYXRlRWxlbWVudChudWxsLCBudWxs
KTsgLy8gdGhyb3dzIGFuIGV4Y2VwdGlvbiB3aGljaCBzaG91bGQgaGF2ZSB0aGUgc3ViZnJhbWVz
IHByb3RvdHlwZXMuCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9iaW5kaW5ncy92OC9WOFBy
b3h5LmNwcCBiL1NvdXJjZS9XZWJDb3JlL2JpbmRpbmdzL3Y4L1Y4UHJveHkuY3BwCmluZGV4IGFl
MDM5ZTNiNmY5MmM0ZGViYzZjYWQ4YjNlMTY2MmRiMzY2YzJhM2QuLmU0MDc5Y2RkMTM0MDg0MzJl
NGFjM2M2M2Y2NWUzMjMxYWYwYmUzODUgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2JpbmRp
bmdzL3Y4L1Y4UHJveHkuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL2JpbmRpbmdzL3Y4L1Y4UHJv
eHkuY3BwCkBAIC01OTMsNiArNTkzLDExIEBAIHY4OjpIYW5kbGU8djg6OlZhbHVlPiBWOFByb3h5
OjpzZXRET01FeGNlcHRpb24oaW50IGVjLCB2ODo6SXNvbGF0ZSogaXNvbGF0ZSkKICAgICBpZiAo
ZWMgPD0gMCkKICAgICAgICAgcmV0dXJuIHY4OjpIYW5kbGU8djg6OlZhbHVlPigpOwogCisgICAg
aWYgKGVjID09IE5BVElWRV9UWVBFX0VSUikgeworICAgICAgICBjb25zdCBjaGFyKiBtZXNzYWdl
ID0gMDsKKyAgICAgICAgcmV0dXJuIHRocm93VHlwZUVycm9yKG1lc3NhZ2UsIGlzb2xhdGUpOwor
ICAgIH0KKwogICAgIEV4Y2VwdGlvbkNvZGVEZXNjcmlwdGlvbiBkZXNjcmlwdGlvbihlYyk7CiAK
ICAgICB2ODo6SGFuZGxlPHY4OjpWYWx1ZT4gZXhjZXB0aW9uOwpkaWZmIC0tZ2l0IGEvU291cmNl
L1dlYkNvcmUvZG9tL0V4Y2VwdGlvbkNvZGUuaCBiL1NvdXJjZS9XZWJDb3JlL2RvbS9FeGNlcHRp
b25Db2RlLmgKaW5kZXggMzFkNjY4MDQ1ODNjOWRjNmI5YzdkMjg5ZjNmOTY5OWJhODljYWQzYy4u
NTFmOGRjMmQzZjEyNDliODNhNWZkZDg0MzY4ZTRjYzkzMzQyNjQ5OSAxMDA2NDQKLS0tIGEvU291
cmNlL1dlYkNvcmUvZG9tL0V4Y2VwdGlvbkNvZGUuaAorKysgYi9Tb3VyY2UvV2ViQ29yZS9kb20v
RXhjZXB0aW9uQ29kZS5oCkBAIC02Myw3ICs2MywxMCBAQCBuYW1lc3BhY2UgV2ViQ29yZSB7CiAg
ICAgICAgIFFVT1RBX0VYQ0VFREVEX0VSUiA9IDIyLAogICAgICAgICBUSU1FT1VUX0VSUiA9IDIz
LAogICAgICAgICBJTlZBTElEX05PREVfVFlQRV9FUlIgPSAyNCwKLSAgICAgICAgREFUQV9DTE9O
RV9FUlIgPSAyNQorICAgICAgICBEQVRBX0NMT05FX0VSUiA9IDI1LAorCisgICAgICAgIC8vIENv
bnZlcnRlZCB0byBhIG5hdGl2ZSBUeXBlRXJyb3IgYnkgdGhlIHNjcmlwdCBiaW5kaW5nIGxheWVy
OgorICAgICAgICBOQVRJVkVfVFlQRV9FUlIgPSA5OQogICAgIH07CiAKIH0gLy8gbmFtZXNwYWNl
IFdlYkNvcmUKZGlmZiAtLWdpdCBhL0xheW91dFRlc3RzL0NoYW5nZUxvZyBiL0xheW91dFRlc3Rz
L0NoYW5nZUxvZwppbmRleCBhZGU1NGMxNjk3OTAzZDYwYmMwN2JhYjc4ZmQ3ZDQ5N2MyYmYwZDUw
Li44ZTQxNmE2YTRiOWRmZDA4ZWU1ZTUwODUwZjIwMzgzMDM3MDY3ZWZlIDEwMDY0NAotLS0gYS9M
YXlvdXRUZXN0cy9DaGFuZ2VMb2cKKysrIGIvTGF5b3V0VGVzdHMvQ2hhbmdlTG9nCkBAIC0xLDMg
KzEsMjYgQEAKKzIwMTItMDctMTggIEpvc2h1YSBCZWxsICA8anNiZWxsQGNocm9taXVtLm9yZz4K
KworICAgICAgICBJbmRleGVkREI6IFRocm93IG5hdGl2ZSBUeXBlRXJyb3JzIHBlciBzcGVjCisg
ICAgICAgIGh0dHBzOi8vYnVncy53ZWJraXQub3JnL3Nob3dfYnVnLmNnaT9pZD05MTY3OQorCisg
ICAgICAgIFJldmlld2VkIGJ5IE5PQk9EWSAoT09QUyEpLgorCisgICAgICAgICogc3RvcmFnZS9p
bmRleGVkZGIvY3Vyc29yLWFkdmFuY2UtZXhwZWN0ZWQudHh0OgorICAgICAgICAqIHN0b3JhZ2Uv
aW5kZXhlZGRiL2luZGV4LWJhc2ljcy1leHBlY3RlZC50eHQ6CisgICAgICAgICogc3RvcmFnZS9p
bmRleGVkZGIvaW5kZXgtYmFzaWNzLXdvcmtlcnMtZXhwZWN0ZWQudHh0OgorICAgICAgICAqIHN0
b3JhZ2UvaW5kZXhlZGRiL29iamVjdHN0b3JlLWN1cnNvci1leHBlY3RlZC50eHQ6CisgICAgICAg
ICogc3RvcmFnZS9pbmRleGVkZGIvcmVzb3VyY2VzL2N1cnNvci1hZHZhbmNlLmpzOgorICAgICAg
ICAodGVzdEJhZEFkdmFuY2UuYWR2YW5jZUJhZGx5KToKKyAgICAgICAgKHRlc3RCYWRBZHZhbmNl
KToKKyAgICAgICAgKiBzdG9yYWdlL2luZGV4ZWRkYi9yZXNvdXJjZXMvaW5kZXgtYmFzaWNzLmpz
OgorICAgICAgICAob3BlbktleUN1cnNvcik6CisgICAgICAgIChvcGVuT2JqZWN0Q3Vyc29yKToK
KyAgICAgICAgKiBzdG9yYWdlL2luZGV4ZWRkYi9yZXNvdXJjZXMvb2JqZWN0c3RvcmUtY3Vyc29y
LmpzOgorICAgICAgICAoZGVsZXRlRXhpc3RpbmcpOgorICAgICAgICAqIHN0b3JhZ2UvaW5kZXhl
ZGRiL3Jlc291cmNlcy90cmFuc2FjdGlvbi1iYXNpY3MuanM6CisgICAgICAgICh0ZXN0SW52YWxp
ZE1vZGUpOgorICAgICAgICAqIHN0b3JhZ2UvaW5kZXhlZGRiL3RyYW5zYWN0aW9uLWJhc2ljcy1l
eHBlY3RlZC50eHQ6CisKIDIwMTItMDctMTggIFRvbnkgQ2hhbmcgIDx0b255QGNocm9taXVtLm9y
Zz4KIAogICAgICAgICBbY2hyb21pdW1dIFVucmV2aWV3ZWQgZ2FyZGVuaW5nLiBSZWJhc2VsaW5l
IDIgdGVzdHMgZHVlIHRvIG1pbm9yIGNoYW5nZXMgZnJvbSByMTIyOTgwLgpkaWZmIC0tZ2l0IGEv
TGF5b3V0VGVzdHMvc3RvcmFnZS9pbmRleGVkZGIvY3Vyc29yLWFkdmFuY2UtZXhwZWN0ZWQudHh0
IGIvTGF5b3V0VGVzdHMvc3RvcmFnZS9pbmRleGVkZGIvY3Vyc29yLWFkdmFuY2UtZXhwZWN0ZWQu
dHh0CmluZGV4IDBjNDIzNWEzMzYxYWY2OWU2MDdkOWJiMDhkN2ExMjliNjUxNTFmNTkuLjVkNTNm
YjQ1MDU5MmMyMjk1ZDk5N2Q2ZjJkZWJlMDJlYzBiYWQ3NDUgMTAwNjQ0Ci0tLSBhL0xheW91dFRl
c3RzL3N0b3JhZ2UvaW5kZXhlZGRiL2N1cnNvci1hZHZhbmNlLWV4cGVjdGVkLnR4dAorKysgYi9M
YXlvdXRUZXN0cy9zdG9yYWdlL2luZGV4ZWRkYi9jdXJzb3ItYWR2YW5jZS1leHBlY3RlZC50eHQK
QEAgLTEzMyw5ICsxMzMsOSBAQCB0ZXN0QmFkQWR2YW5jZSgpCiB0cmFucyA9IGRiLnRyYW5zYWN0
aW9uKG9iamVjdFN0b3JlTmFtZSwgJ3JlYWR3cml0ZScpCiBvYmplY3RTdG9yZSA9IHRyYW5zLm9i
amVjdFN0b3JlKG9iamVjdFN0b3JlTmFtZSkKIHJlcXVlc3QgPSBvYmplY3RTdG9yZS5vcGVuQ3Vy
c29yKCkKLUV4cGVjdGluZyBleGNlcHRpb24gZnJvbSBjdXJzb3IuYWR2YW5jZSgwKQorRXhwZWN0
aW5nIFR5cGVFcnJvciBleGNlcHRpb24gZnJvbSBjdXJzb3IuYWR2YW5jZSgwKQogUEFTUyBFeGNl
cHRpb24gd2FzIHRocm93bi4KLVBBU1MgY29kZSBpcyBJREJEYXRhYmFzZUV4Y2VwdGlvbi5UWVBF
X0VSUgorUEFTUyBjdXJzb3IuYWR2YW5jZSgwKSB0aHJldyBUeXBlRXJyb3I6IFR5cGUgZXJyb3IK
IHRlc3REZWxldGUoKQogdHJhbnMgPSBkYi50cmFuc2FjdGlvbihvYmplY3RTdG9yZU5hbWUsICdy
ZWFkd3JpdGUnKQogb2JqZWN0U3RvcmUgPSB0cmFucy5vYmplY3RTdG9yZShvYmplY3RTdG9yZU5h
bWUpCmRpZmYgLS1naXQgYS9MYXlvdXRUZXN0cy9zdG9yYWdlL2luZGV4ZWRkYi9pbmRleC1iYXNp
Y3MtZXhwZWN0ZWQudHh0IGIvTGF5b3V0VGVzdHMvc3RvcmFnZS9pbmRleGVkZGIvaW5kZXgtYmFz
aWNzLWV4cGVjdGVkLnR4dAppbmRleCA1MWQ3NDk0ZjE3MjFlZjdlMGExZmRlYWI1ZTdlYWU5NjVl
ZTkyNzZkLi45ZjZmMzhlY2U2OTFlNDYwMjRhNWJlNmQxYTZkZjJlMTE1NWM3ZWYzIDEwMDY0NAot
LS0gYS9MYXlvdXRUZXN0cy9zdG9yYWdlL2luZGV4ZWRkYi9pbmRleC1iYXNpY3MtZXhwZWN0ZWQu
dHh0CisrKyBiL0xheW91dFRlc3RzL3N0b3JhZ2UvaW5kZXhlZGRiL2luZGV4LWJhc2ljcy1leHBl
Y3RlZC50eHQKQEAgLTY3LDYgKzY3LDEyIEBAIGluZGV4T2JqZWN0LmdldCgnZG9lcyBub3QgZXhp
c3QnKQogUEFTUyBldmVudC50YXJnZXQucmVzdWx0IGlzIHVuZGVmaW5lZAogaW5kZXhPYmplY3Q0
LmdldEtleSgndmFsdWUyJykKIFBBU1MgZXZlbnQudGFyZ2V0LnJlc3VsdCBpcyAia2V5MiIKKwor
VmVyaWZ5IHRoYXQgc3BlY2lmeWluZyBhbiBpbnZhbGlkIGRpcmVjdGlvbiByYWlzZXMgYW4gZXhj
ZXB0aW9uOgorRXhwZWN0aW5nIFR5cGVFcnJvciBleGNlcHRpb24gZnJvbSBpbmRleE9iamVjdC5v
cGVuS2V5Q3Vyc29yKDAsICdpbnZhbGlkLWRpcmVjdGlvbicpCitQQVNTIEV4Y2VwdGlvbiB3YXMg
dGhyb3duLgorUEFTUyBpbmRleE9iamVjdC5vcGVuS2V5Q3Vyc29yKDAsICdpbnZhbGlkLWRpcmVj
dGlvbicpIHRocmV3IFR5cGVFcnJvcjogVHlwZSBlcnJvcgorCiBpbmRleE9iamVjdC5vcGVuS2V5
Q3Vyc29yKCkKIFBBU1MgZXZlbnQudGFyZ2V0LnNvdXJjZSBpcyBpbmRleE9iamVjdAogUEFTUyBl
dmVudC50YXJnZXQucmVzdWx0IGlzIG5vbi1udWxsLgpAQCAtODYsNiArOTIsMTIgQEAgUEFTUyBl
dmVudC50YXJnZXQucmVzdWx0LmtleSBpcyAidmFsdWU0IgogUEFTUyBldmVudC50YXJnZXQucmVz
dWx0LnByaW1hcnlLZXkgaXMgImtleTQiCiBldmVudC50YXJnZXQucmVzdWx0LmNvbnRpbnVlKCkK
IFBBU1MgZXZlbnQudGFyZ2V0LnJlc3VsdCBpcyBudWxsCisKK1ZlcmlmeSB0aGF0IHNwZWNpZnlp
bmcgYW4gaW52YWxpZCBkaXJlY3Rpb24gcmFpc2VzIGFuIGV4Y2VwdGlvbjoKK0V4cGVjdGluZyBU
eXBlRXJyb3IgZXhjZXB0aW9uIGZyb20gaW5kZXhPYmplY3Qub3BlbkN1cnNvcigwLCAnaW52YWxp
ZC1kaXJlY3Rpb24nKQorUEFTUyBFeGNlcHRpb24gd2FzIHRocm93bi4KK1BBU1MgaW5kZXhPYmpl
Y3Qub3BlbkN1cnNvcigwLCAnaW52YWxpZC1kaXJlY3Rpb24nKSB0aHJldyBUeXBlRXJyb3I6IFR5
cGUgZXJyb3IKKwogaW5kZXhPYmplY3Qub3BlbkN1cnNvcigpCiBQQVNTIGV2ZW50LnRhcmdldC5z
b3VyY2UgaXMgaW5kZXhPYmplY3QKIFBBU1MgZXZlbnQudGFyZ2V0LnJlc3VsdCBpcyBub24tbnVs
bC4KZGlmZiAtLWdpdCBhL0xheW91dFRlc3RzL3N0b3JhZ2UvaW5kZXhlZGRiL2luZGV4LWJhc2lj
cy13b3JrZXJzLWV4cGVjdGVkLnR4dCBiL0xheW91dFRlc3RzL3N0b3JhZ2UvaW5kZXhlZGRiL2lu
ZGV4LWJhc2ljcy13b3JrZXJzLWV4cGVjdGVkLnR4dAppbmRleCBmNmUxYjNjNjUwOTg4NTNlNWNm
OTEwNTk0Y2VhNzg0ODljNDgwMWUzLi5iN2ZkN2FlNmVmNzkzMWI1MTUyMjI1NGMzZGUwYWQ4ZmY1
N2Y5MmNkIDEwMDY0NAotLS0gYS9MYXlvdXRUZXN0cy9zdG9yYWdlL2luZGV4ZWRkYi9pbmRleC1i
YXNpY3Mtd29ya2Vycy1leHBlY3RlZC50eHQKKysrIGIvTGF5b3V0VGVzdHMvc3RvcmFnZS9pbmRl
eGVkZGIvaW5kZXgtYmFzaWNzLXdvcmtlcnMtZXhwZWN0ZWQudHh0CkBAIC02OCw2ICs2OCwxMiBA
QCBQQVNTIFtXb3JrZXJdIGV2ZW50LnRhcmdldC5yZXN1bHQgaXMgdW5kZWZpbmVkCiBQQVNTIFtX
b3JrZXJdIGV2ZW50LnRhcmdldC5yZXN1bHQgaXMgdW5kZWZpbmVkCiBbV29ya2VyXSBpbmRleE9i
amVjdDQuZ2V0S2V5KCd2YWx1ZTInKQogUEFTUyBbV29ya2VyXSBldmVudC50YXJnZXQucmVzdWx0
IGlzICJrZXkyIgorW1dvcmtlcl0gCitbV29ya2VyXSBWZXJpZnkgdGhhdCBzcGVjaWZ5aW5nIGFu
IGludmFsaWQgZGlyZWN0aW9uIHJhaXNlcyBhbiBleGNlcHRpb246CitbV29ya2VyXSBFeHBlY3Rp
bmcgVHlwZUVycm9yIGV4Y2VwdGlvbiBmcm9tIGluZGV4T2JqZWN0Lm9wZW5LZXlDdXJzb3IoMCwg
J2ludmFsaWQtZGlyZWN0aW9uJykKK1BBU1MgW1dvcmtlcl0gRXhjZXB0aW9uIHdhcyB0aHJvd24u
CitQQVNTIFtXb3JrZXJdIGluZGV4T2JqZWN0Lm9wZW5LZXlDdXJzb3IoMCwgJ2ludmFsaWQtZGly
ZWN0aW9uJykgdGhyZXcgVHlwZUVycm9yOiBUeXBlIGVycm9yCitbV29ya2VyXSAKIFtXb3JrZXJd
IGluZGV4T2JqZWN0Lm9wZW5LZXlDdXJzb3IoKQogUEFTUyBbV29ya2VyXSBldmVudC50YXJnZXQu
c291cmNlIGlzIGluZGV4T2JqZWN0CiBQQVNTIFtXb3JrZXJdIGV2ZW50LnRhcmdldC5yZXN1bHQg
aXMgbm9uLW51bGwuCkBAIC04Nyw2ICs5MywxMiBAQCBQQVNTIFtXb3JrZXJdIGV2ZW50LnRhcmdl
dC5yZXN1bHQua2V5IGlzICJ2YWx1ZTQiCiBQQVNTIFtXb3JrZXJdIGV2ZW50LnRhcmdldC5yZXN1
bHQucHJpbWFyeUtleSBpcyAia2V5NCIKIFtXb3JrZXJdIGV2ZW50LnRhcmdldC5yZXN1bHQuY29u
dGludWUoKQogUEFTUyBbV29ya2VyXSBldmVudC50YXJnZXQucmVzdWx0IGlzIG51bGwKK1tXb3Jr
ZXJdIAorW1dvcmtlcl0gVmVyaWZ5IHRoYXQgc3BlY2lmeWluZyBhbiBpbnZhbGlkIGRpcmVjdGlv
biByYWlzZXMgYW4gZXhjZXB0aW9uOgorW1dvcmtlcl0gRXhwZWN0aW5nIFR5cGVFcnJvciBleGNl
cHRpb24gZnJvbSBpbmRleE9iamVjdC5vcGVuQ3Vyc29yKDAsICdpbnZhbGlkLWRpcmVjdGlvbicp
CitQQVNTIFtXb3JrZXJdIEV4Y2VwdGlvbiB3YXMgdGhyb3duLgorUEFTUyBbV29ya2VyXSBpbmRl
eE9iamVjdC5vcGVuQ3Vyc29yKDAsICdpbnZhbGlkLWRpcmVjdGlvbicpIHRocmV3IFR5cGVFcnJv
cjogVHlwZSBlcnJvcgorW1dvcmtlcl0gCiBbV29ya2VyXSBpbmRleE9iamVjdC5vcGVuQ3Vyc29y
KCkKIFBBU1MgW1dvcmtlcl0gZXZlbnQudGFyZ2V0LnNvdXJjZSBpcyBpbmRleE9iamVjdAogUEFT
UyBbV29ya2VyXSBldmVudC50YXJnZXQucmVzdWx0IGlzIG5vbi1udWxsLgpkaWZmIC0tZ2l0IGEv
TGF5b3V0VGVzdHMvc3RvcmFnZS9pbmRleGVkZGIvb2JqZWN0c3RvcmUtY3Vyc29yLWV4cGVjdGVk
LnR4dCBiL0xheW91dFRlc3RzL3N0b3JhZ2UvaW5kZXhlZGRiL29iamVjdHN0b3JlLWN1cnNvci1l
eHBlY3RlZC50eHQKaW5kZXggOGIzZWExMDAxODc0ZTlkZDlkMTljZjgzNDQ0NDMwYjdmZGYxMDI4
Ny4uMjAxNWMwNTUwZTcyMDA4NTYyYjNmYTg1Y2Q2NWUwMWM5ZDRlYTJmNCAxMDA2NDQKLS0tIGEv
TGF5b3V0VGVzdHMvc3RvcmFnZS9pbmRleGVkZGIvb2JqZWN0c3RvcmUtY3Vyc29yLWV4cGVjdGVk
LnR4dAorKysgYi9MYXlvdXRUZXN0cy9zdG9yYWdlL2luZGV4ZWRkYi9vYmplY3RzdG9yZS1jdXJz
b3ItZXhwZWN0ZWQudHh0CkBAIC0xMSw3ICsxMSwxMyBAQCBkYi5zZXRWZXJzaW9uKCduZXcgdmVy
c2lvbicpCiB0cmFucyA9IGV2ZW50LnRhcmdldC5yZXN1bHQKIFBBU1MgdHJhbnMgaXMgbm9uLW51
bGwuCiBEZWxldGVkIGFsbCBvYmplY3Qgc3RvcmVzLgotZGIuY3JlYXRlT2JqZWN0U3RvcmUoJ3Nv
bWVPYmplY3RTdG9yZScpCitvYmplY3RTdG9yZSA9IGRiLmNyZWF0ZU9iamVjdFN0b3JlKCdzb21l
T2JqZWN0U3RvcmUnKQorCitWZXJpZnkgdGhhdCBzcGVjaWZ5aW5nIGFuIGludmFsaWQgZGlyZWN0
aW9uIHJhaXNlcyBhbiBleGNlcHRpb246CitFeHBlY3RpbmcgVHlwZUVycm9yIGV4Y2VwdGlvbiBm
cm9tIG9iamVjdFN0b3JlLm9wZW5DdXJzb3IoMCwgJ2ludmFsaWQtZGlyZWN0aW9uJykKK1BBU1Mg
RXhjZXB0aW9uIHdhcyB0aHJvd24uCitQQVNTIG9iamVjdFN0b3JlLm9wZW5DdXJzb3IoMCwgJ2lu
dmFsaWQtZGlyZWN0aW9uJykgdGhyZXcgVHlwZUVycm9yOiBUeXBlIGVycm9yCisKIG9iamVjdFN0
b3JlLmFkZCgnJywgdGVzdERhdGFbbmV4dFRvQWRkXSkKIG9iamVjdFN0b3JlLmFkZCgnJywgdGVz
dERhdGFbbmV4dFRvQWRkXSkKIG9iamVjdFN0b3JlLmFkZCgnJywgdGVzdERhdGFbbmV4dFRvQWRk
XSkKZGlmZiAtLWdpdCBhL0xheW91dFRlc3RzL3N0b3JhZ2UvaW5kZXhlZGRiL3Jlc291cmNlcy9j
dXJzb3ItYWR2YW5jZS5qcyBiL0xheW91dFRlc3RzL3N0b3JhZ2UvaW5kZXhlZGRiL3Jlc291cmNl
cy9jdXJzb3ItYWR2YW5jZS5qcwppbmRleCBmZjkxZGFhNGVmYzg4MGQ1Njc0NGE0YWRhYWU4NTc0
NDYxOTRlOWJjLi4zZjRmNTJkNWZhOWRmN2RlOTFlZjIwMTQyYzU2NTkxMjFmZmJlZWRhIDEwMDY0
NAotLS0gYS9MYXlvdXRUZXN0cy9zdG9yYWdlL2luZGV4ZWRkYi9yZXNvdXJjZXMvY3Vyc29yLWFk
dmFuY2UuanMKKysrIGIvTGF5b3V0VGVzdHMvc3RvcmFnZS9pbmRleGVkZGIvcmVzb3VyY2VzL2N1
cnNvci1hZHZhbmNlLmpzCkBAIC0zMjksNyArMzI5LDcgQEAgZnVuY3Rpb24gdGVzdEJhZEFkdmFu
Y2UoKQogICAgIHsKICAgICAgICAgY3Vyc29yID0gZXZlbnQudGFyZ2V0LnJlc3VsdDsKIAotICAg
ICAgICBldmFsQW5kRXhwZWN0RXhjZXB0aW9uKCJjdXJzb3IuYWR2YW5jZSgwKSIsICJJREJEYXRh
YmFzZUV4Y2VwdGlvbi5UWVBFX0VSUiIpOworICAgICAgICBldmFsQW5kRXhwZWN0RXhjZXB0aW9u
Q2xhc3MoImN1cnNvci5hZHZhbmNlKDApIiwgIlR5cGVFcnJvciIpOwogICAgICAgICB0ZXN0RGVs
ZXRlKCk7CiAgICAgfQogICAgIHJlcXVlc3Qub25zdWNjZXNzID0gYWR2YW5jZUJhZGx5OwpkaWZm
IC0tZ2l0IGEvTGF5b3V0VGVzdHMvc3RvcmFnZS9pbmRleGVkZGIvcmVzb3VyY2VzL2luZGV4LWJh
c2ljcy5qcyBiL0xheW91dFRlc3RzL3N0b3JhZ2UvaW5kZXhlZGRiL3Jlc291cmNlcy9pbmRleC1i
YXNpY3MuanMKaW5kZXggYjE4ODcxYmYxZWMzZDM1NmFiMzM1NzY5ZTVkODAwN2YzMzQ5OTk0My4u
YTQ5NjFmNmM1Y2M3MTYwMTQ2OGQzZDJiOThhZWYzODZjOTE1MGM4NCAxMDA2NDQKLS0tIGEvTGF5
b3V0VGVzdHMvc3RvcmFnZS9pbmRleGVkZGIvcmVzb3VyY2VzL2luZGV4LWJhc2ljcy5qcworKysg
Yi9MYXlvdXRUZXN0cy9zdG9yYWdlL2luZGV4ZWRkYi9yZXNvdXJjZXMvaW5kZXgtYmFzaWNzLmpz
CkBAIC0xNzQsNiArMTc0LDExIEBAIGZ1bmN0aW9uIG9wZW5LZXlDdXJzb3IoZXZ0KQogICAgIGV2
ZW50ID0gZXZ0OwogICAgIHNob3VsZEJlRXF1YWxUb1N0cmluZygiZXZlbnQudGFyZ2V0LnJlc3Vs
dCIsICJrZXkyIik7CiAKKyAgICBkZWJ1ZygiIik7CisgICAgZGVidWcoIlZlcmlmeSB0aGF0IHNw
ZWNpZnlpbmcgYW4gaW52YWxpZCBkaXJlY3Rpb24gcmFpc2VzIGFuIGV4Y2VwdGlvbjoiKTsKKyAg
ICBldmFsQW5kRXhwZWN0RXhjZXB0aW9uQ2xhc3MoImluZGV4T2JqZWN0Lm9wZW5LZXlDdXJzb3Io
MCwgJ2ludmFsaWQtZGlyZWN0aW9uJykiLCAiVHlwZUVycm9yIik7CisgICAgZGVidWcoIiIpOwor
CiAgICAgc2VsZi5yZXF1ZXN0ID0gZXZhbEFuZExvZygiaW5kZXhPYmplY3Qub3BlbktleUN1cnNv
cigpIik7CiAgICAgcmVxdWVzdC5vbnN1Y2Nlc3MgPSBjdXJzb3IxQ29udGludWU7CiAgICAgcmVx
dWVzdC5vbmVycm9yID0gdW5leHBlY3RlZEVycm9yQ2FsbGJhY2s7CkBAIC0yMzMsNiArMjM4LDEx
IEBAIGZ1bmN0aW9uIG9wZW5PYmplY3RDdXJzb3IoZXZ0KQogICAgIGV2ZW50ID0gZXZ0OwogICAg
IHNob3VsZEJlTnVsbCgiZXZlbnQudGFyZ2V0LnJlc3VsdCIpOwogCisgICAgZGVidWcoIiIpOwor
ICAgIGRlYnVnKCJWZXJpZnkgdGhhdCBzcGVjaWZ5aW5nIGFuIGludmFsaWQgZGlyZWN0aW9uIHJh
aXNlcyBhbiBleGNlcHRpb246Iik7CisgICAgZXZhbEFuZEV4cGVjdEV4Y2VwdGlvbkNsYXNzKCJp
bmRleE9iamVjdC5vcGVuQ3Vyc29yKDAsICdpbnZhbGlkLWRpcmVjdGlvbicpIiwgIlR5cGVFcnJv
ciIpOworICAgIGRlYnVnKCIiKTsKKwogICAgIHNlbGYucmVxdWVzdCA9IGV2YWxBbmRMb2coImlu
ZGV4T2JqZWN0Lm9wZW5DdXJzb3IoKSIpOwogICAgIHJlcXVlc3Qub25zdWNjZXNzID0gY3Vyc29y
MkNvbnRpbnVlOwogICAgIHJlcXVlc3Qub25lcnJvciA9IHVuZXhwZWN0ZWRFcnJvckNhbGxiYWNr
OwpkaWZmIC0tZ2l0IGEvTGF5b3V0VGVzdHMvc3RvcmFnZS9pbmRleGVkZGIvcmVzb3VyY2VzL29i
amVjdHN0b3JlLWN1cnNvci5qcyBiL0xheW91dFRlc3RzL3N0b3JhZ2UvaW5kZXhlZGRiL3Jlc291
cmNlcy9vYmplY3RzdG9yZS1jdXJzb3IuanMKaW5kZXggOWIwNDM0ZGVkNTRjZDEyM2QwZTdjYTg5
NzBlOTk4MzZkMmQzMjgxMy4uZTE0ZmUyYzU3ZDg0NjgzMDIzNDYzZDY5NjM0YTJhZDBhN2I5MTEy
MiAxMDA2NDQKLS0tIGEvTGF5b3V0VGVzdHMvc3RvcmFnZS9pbmRleGVkZGIvcmVzb3VyY2VzL29i
amVjdHN0b3JlLWN1cnNvci5qcworKysgYi9MYXlvdXRUZXN0cy9zdG9yYWdlL2luZGV4ZWRkYi9y
ZXNvdXJjZXMvb2JqZWN0c3RvcmUtY3Vyc29yLmpzCkBAIC00MSw3ICs0MSwxMyBAQCBmdW5jdGlv
biBkZWxldGVFeGlzdGluZygpCiAKICAgICBkZWxldGVBbGxPYmplY3RTdG9yZXMoZGIpOwogCi0g
ICAgc2VsZi5vYmplY3RTdG9yZSA9IGV2YWxBbmRMb2coImRiLmNyZWF0ZU9iamVjdFN0b3JlKCdz
b21lT2JqZWN0U3RvcmUnKSIpOworICAgIGV2YWxBbmRMb2coIm9iamVjdFN0b3JlID0gZGIuY3Jl
YXRlT2JqZWN0U3RvcmUoJ3NvbWVPYmplY3RTdG9yZScpIik7CisKKyAgICBkZWJ1ZygiIik7Cisg
ICAgZGVidWcoIlZlcmlmeSB0aGF0IHNwZWNpZnlpbmcgYW4gaW52YWxpZCBkaXJlY3Rpb24gcmFp
c2VzIGFuIGV4Y2VwdGlvbjoiKTsKKyAgICBldmFsQW5kRXhwZWN0RXhjZXB0aW9uQ2xhc3MoIm9i
amVjdFN0b3JlLm9wZW5DdXJzb3IoMCwgJ2ludmFsaWQtZGlyZWN0aW9uJykiLCAiVHlwZUVycm9y
Iik7CisgICAgZGVidWcoIiIpOworCiAgICAgc2VsZi5uZXh0VG9BZGQgPSAwOwogICAgIGFkZERh
dGEoKTsKIH0KZGlmZiAtLWdpdCBhL0xheW91dFRlc3RzL3N0b3JhZ2UvaW5kZXhlZGRiL3Jlc291
cmNlcy90cmFuc2FjdGlvbi1iYXNpY3MuanMgYi9MYXlvdXRUZXN0cy9zdG9yYWdlL2luZGV4ZWRk
Yi9yZXNvdXJjZXMvdHJhbnNhY3Rpb24tYmFzaWNzLmpzCmluZGV4IDYzM2VhOTk1YTcwY2Q2Yzg2
OWMyZTg2NDAxODY4M2M1ZDhiNTQ0ZTAuLmY5MTUzMmJmMzg0YTkyNGQ5MWUyZWMwNDY3Y2JlNTMy
OTBiOTM4NjMgMTAwNjQ0Ci0tLSBhL0xheW91dFRlc3RzL3N0b3JhZ2UvaW5kZXhlZGRiL3Jlc291
cmNlcy90cmFuc2FjdGlvbi1iYXNpY3MuanMKKysrIGIvTGF5b3V0VGVzdHMvc3RvcmFnZS9pbmRl
eGVkZGIvcmVzb3VyY2VzL3RyYW5zYWN0aW9uLWJhc2ljcy5qcwpAQCAtMjc5LDcgKzI3OSw3IEBA
IGZ1bmN0aW9uIHRlc3RJbnZhbGlkTW9kZSgpCiB7CiAgICAgZGVidWcoIiIpOwogICAgIGRlYnVn
KCJWZXJpZnkgdGhhdCBzcGVjaWZ5aW5nIGFuIGludmFsaWQgbW9kZSByYWlzZXMgYW4gZXhjZXB0
aW9uIik7Ci0gICAgZXZhbEFuZEV4cGVjdEV4Y2VwdGlvbigiZGIudHJhbnNhY3Rpb24oWydzdG9y
ZU5hbWUnXSwgJ2xzYWtqZGYnKSIsICJJREJEYXRhYmFzZUV4Y2VwdGlvbi5UWVBFX0VSUiIsICIn
VHlwZUVycm9yJyIpOworICAgIGV2YWxBbmRFeHBlY3RFeGNlcHRpb25DbGFzcygiZGIudHJhbnNh
Y3Rpb24oWydzdG9yZU5hbWUnXSwgJ2xzYWtqZGYnKSIsICJUeXBlRXJyb3IiKTsKICAgICB0ZXN0
RGVnZW5lcmF0ZU5hbWVzKCk7CiB9CiAKZGlmZiAtLWdpdCBhL0xheW91dFRlc3RzL3N0b3JhZ2Uv
aW5kZXhlZGRiL3RyYW5zYWN0aW9uLWJhc2ljcy1leHBlY3RlZC50eHQgYi9MYXlvdXRUZXN0cy9z
dG9yYWdlL2luZGV4ZWRkYi90cmFuc2FjdGlvbi1iYXNpY3MtZXhwZWN0ZWQudHh0CmluZGV4IGNh
YWU4YjQ2ZGE1ZmY0NGZmNDFjNTI1Njg3ZmMzZDhkMzdjNDVkNWQuLmUxZjdkODBiNzU0NDYzNGVj
NWViOTZlMDI3NjI5ODJiMGUwMGVlNzEgMTAwNjQ0Ci0tLSBhL0xheW91dFRlc3RzL3N0b3JhZ2Uv
aW5kZXhlZGRiL3RyYW5zYWN0aW9uLWJhc2ljcy1leHBlY3RlZC50eHQKKysrIGIvTGF5b3V0VGVz
dHMvc3RvcmFnZS9pbmRleGVkZGIvdHJhbnNhY3Rpb24tYmFzaWNzLWV4cGVjdGVkLnR4dApAQCAt
MTk4LDEwICsxOTgsOSBAQCBQQVNTIHRyYW5zYWN0aW9uLm9iamVjdFN0b3JlKCJzdG9yZU5hbWUi
KSBpcyBub24tbnVsbC4KIFBBU1MgYWxsIHN0b3JlcyBwcmVzZW50IGluIHRyYW5zYWN0aW9uCiAK
IFZlcmlmeSB0aGF0IHNwZWNpZnlpbmcgYW4gaW52YWxpZCBtb2RlIHJhaXNlcyBhbiBleGNlcHRp
b24KLUV4cGVjdGluZyBleGNlcHRpb24gZnJvbSBkYi50cmFuc2FjdGlvbihbJ3N0b3JlTmFtZSdd
LCAnbHNha2pkZicpCitFeHBlY3RpbmcgVHlwZUVycm9yIGV4Y2VwdGlvbiBmcm9tIGRiLnRyYW5z
YWN0aW9uKFsnc3RvcmVOYW1lJ10sICdsc2FramRmJykKIFBBU1MgRXhjZXB0aW9uIHdhcyB0aHJv
d24uCi1QQVNTIGNvZGUgaXMgSURCRGF0YWJhc2VFeGNlcHRpb24uVFlQRV9FUlIKLVBBU1MgZW5h
bWUgaXMgJ1R5cGVFcnJvcicKK1BBU1MgZGIudHJhbnNhY3Rpb24oWydzdG9yZU5hbWUnXSwgJ2xz
YWtqZGYnKSB0aHJldyBUeXBlRXJyb3I6IFR5cGUgZXJyb3IKIAogVGVzdCB0aGF0IG51bGwgYW5k
IHVuZGVmaW5lZCBhcmUgdHJlYXRlZCBhcyBzdHJpbmdzCiBFeHBlY3RpbmcgZXhjZXB0aW9uIGZy
b20gZGIudHJhbnNhY3Rpb24obnVsbCkK
</data>

          </attachment>
          <attachment
              isobsolete="0"
              ispatch="1"
              isprivate="0"
          >
            <attachid>153144</attachid>
            <date>2012-07-18 17:19:06 -0700</date>
            <delta_ts>2012-07-19 09:37:32 -0700</delta_ts>
            <desc>Patch</desc>
            <filename>bug-91679-20120718171906.patch</filename>
            <type>text/plain</type>
            <size>22872</size>
            <attacher name="Joshua Bell">jsbell</attacher>
            
              <data encoding="base64">U3VidmVyc2lvbiBSZXZpc2lvbjogMTIzMDQ4CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9D
aGFuZ2VMb2cgYi9Tb3VyY2UvV2ViQ29yZS9DaGFuZ2VMb2cKaW5kZXggMGEyYzdkYTVkNTQxZmM4
NjZmMGZmNmE2MTdlMGJlMzU3M2U1YzJlZS4uMWQ2NWEyN2MxMDlhODg5Zjc3ODdhYzZkNzU2ZDI2
YzEzZDA2MGEyNyAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvQ2hhbmdlTG9nCisrKyBiL1Nv
dXJjZS9XZWJDb3JlL0NoYW5nZUxvZwpAQCAtMSw1ICsxLDQ3IEBACiAyMDEyLTA3LTE4ICBKb3No
dWEgQmVsbCAgPGpzYmVsbEBjaHJvbWl1bS5vcmc+CiAKKyAgICAgICAgSW5kZXhlZERCOiBUaHJv
dyBuYXRpdmUgVHlwZUVycm9ycyBwZXIgc3BlYworICAgICAgICBodHRwczovL2J1Z3Mud2Via2l0
Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9OTE2NzkKKworICAgICAgICBSZXZpZXdlZCBieSBOT0JPRFkg
KE9PUFMhKS4KKworICAgICAgICBQZXIgdGhlIElEQiBzcGVjLCB0aGUgYWR2YW5jZSgpLCBvcGVu
Q3Vyc29yKCksIG9wZW5LZXlDdXJzb3IoKSBhbmQgdHJhbnNhY3Rpb24oKQorICAgICAgICBtZXRo
b2RzIHN1cHBvc2VkIHRvIHRocm93IHRydWUgbmF0aXZlIEphdmFTY3JpcHQgVHlwZUVycm9yIG9i
amVjdHMgYXMgZXhjZXB0aW9ucworICAgICAgICByYXRoZXIgdGhhbiBET01FeGNlcHRpb24gb2Jq
ZWN0cy4gSW1wbGVtZW50IHRoaXMgYnkgYWRkaW5nIGEgc3BlY2lhbCBET01FeGNlcHRpb24KKyAg
ICAgICAgY29kZSB0aGF0IGlzIHRlc3RlZCBmb3IgaW4gdGhlIGJpbmRpbmcgbGF5ZXIuCisKKyAg
ICAgICAgVGVzdHM6IHN0b3JhZ2UvaW5kZXhlZGRiL2N1cnNvci1hZHZhbmNlLmh0bWwKKyAgICAg
ICAgICAgICAgIHN0b3JhZ2UvaW5kZXhlZGRiL2luZGV4LWJhc2ljcy5odG1sCisgICAgICAgICAg
ICAgICBzdG9yYWdlL2luZGV4ZWRkYi9pbmRleC1iYXNpY3Mtd29ya2Vycy5odG1sCisgICAgICAg
ICAgICAgICBzdG9yYWdlL2luZGV4ZWRkYi9vYmplY3RzdG9yZS1jdXJzb3IuaHRtbAorICAgICAg
ICAgICAgICAgc3RvcmFnZS9pbmRleGVkZGIvdHJhbnNhY3Rpb24tYmFzaWNzLmh0bWwKKworICAg
ICAgICAqIE1vZHVsZXMvaW5kZXhlZGRiL0lEQkN1cnNvci5jcHA6IFVzZSB0aGUgbmV3IERPTUV4
Y2VwdGlvbiBjb2RlLgorICAgICAgICAoV2ViQ29yZTo6SURCQ3Vyc29yOjphZHZhbmNlKToKKyAg
ICAgICAgKFdlYkNvcmU6OklEQkN1cnNvcjo6c3RyaW5nVG9EaXJlY3Rpb24pOgorICAgICAgICAo
V2ViQ29yZTo6SURCQ3Vyc29yOjpkaXJlY3Rpb25Ub1N0cmluZyk6CisgICAgICAgICogTW9kdWxl
cy9pbmRleGVkZGIvSURCRGF0YWJhc2UuY3BwOiBEaXR0by4KKyAgICAgICAgKFdlYkNvcmU6OklE
QkRhdGFiYXNlOjpzZXRWZXJzaW9uKToKKyAgICAgICAgKiBNb2R1bGVzL2luZGV4ZWRkYi9JREJE
YXRhYmFzZUV4Y2VwdGlvbi5jcHA6IFJlbW92ZSB0ZW1wb3JhcnkgY3J1ZnQvbWFyayBhcyBsZWdh
Y3kuCisgICAgICAgIChXZWJDb3JlKToKKyAgICAgICAgKiBNb2R1bGVzL2luZGV4ZWRkYi9JREJE
YXRhYmFzZUV4Y2VwdGlvbi5oOiBEaXR0by4KKyAgICAgICAgKiBNb2R1bGVzL2luZGV4ZWRkYi9J
REJEYXRhYmFzZUV4Y2VwdGlvbi5pZGw6IERpdHRvLgorICAgICAgICAqIE1vZHVsZXMvaW5kZXhl
ZGRiL0lEQkZhY3RvcnkuY3BwOiBVc2UgdGhlIG5ldyBET01FeGNlcHRpb24gY29kZS4KKyAgICAg
ICAgKFdlYkNvcmU6OklEQkZhY3Rvcnk6Om9wZW4pOgorICAgICAgICAoV2ViQ29yZTo6SURCRmFj
dG9yeTo6ZGVsZXRlRGF0YWJhc2UpOgorICAgICAgICAqIE1vZHVsZXMvaW5kZXhlZGRiL0lEQk9i
amVjdFN0b3JlLmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OklEQk9iamVjdFN0b3JlOjpjcmVhdGVJ
bmRleCk6IFVzZSB0aGUgbmV3IERPTUV4Y2VwdGlvbiBjb2RlLgorICAgICAgICAqIE1vZHVsZXMv
aW5kZXhlZGRiL0lEQlRyYW5zYWN0aW9uLmNwcDogVXNlIHRoZSBuZXcgRE9NRXhjZXB0aW9uIGNv
ZGUuCisgICAgICAgIChXZWJDb3JlOjpJREJUcmFuc2FjdGlvbjo6c3RyaW5nVG9Nb2RlKToKKyAg
ICAgICAgKFdlYkNvcmU6OklEQlRyYW5zYWN0aW9uOjptb2RlVG9TdHJpbmcpOgorICAgICAgICAq
IGJpbmRpbmdzL2pzL0pTRE9NQmluZGluZy5jcHA6CisgICAgICAgIChXZWJDb3JlOjpzZXRET01F
eGNlcHRpb24pOiBJbnRlcmNlcHQgbmV3IERPTUV4Y2VwdGlvbiBjb2RlLCB0aHJvdyBuYXRpdmUg
VHlwZUVycm9yLgorICAgICAgICAqIGJpbmRpbmdzL3Y4L1Y4UHJveHkuY3BwOgorICAgICAgICAo
V2ViQ29yZTo6VjhQcm94eTo6c2V0RE9NRXhjZXB0aW9uKTogRGl0dG8uCisgICAgICAgICogZG9t
L0V4Y2VwdGlvbkNvZGUuaDogQWRkIG5ldyBET01FeGNlcHRpb24gY29kZS4KKworMjAxMi0wNy0x
OCAgSm9zaHVhIEJlbGwgIDxqc2JlbGxAY2hyb21pdW0ub3JnPgorCiAgICAgICAgIEluZGV4ZWRE
QjogRGlyZWN0aW9uIHBhcmFtZXRlciBpZ25vcmVkIGJ5IHNvbWUgb3BlbkN1cnNvcigpIG92ZXJs
b2FkcwogICAgICAgICBodHRwczovL2J1Z3Mud2Via2l0Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9OTE2
ODcKIApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvTW9kdWxlcy9pbmRleGVkZGIvSURCQ3Vy
c29yLmNwcCBiL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvaW5kZXhlZGRiL0lEQkN1cnNvci5jcHAK
aW5kZXggNmUyODY5MWFmMGI3NzE2YzkwNjU2Yzg2YjVjODg3MDQ1YzdiNTdlMC4uNDE3ZDBlZGZm
ZjkxMWJjYzNlYjcwZjVmZDYzMGNjYTM4MTk5YjVkNCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNv
cmUvTW9kdWxlcy9pbmRleGVkZGIvSURCQ3Vyc29yLmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9N
b2R1bGVzL2luZGV4ZWRkYi9JREJDdXJzb3IuY3BwCkBAIC0xODIsNyArMTgyLDcgQEAgdm9pZCBJ
REJDdXJzb3I6OmFkdmFuY2UodW5zaWduZWQgbG9uZyBjb3VudCwgRXhjZXB0aW9uQ29kZSYgZWMp
CiAgICAgfQogCiAgICAgaWYgKCFjb3VudCkgewotICAgICAgICBlYyA9IElEQkRhdGFiYXNlRXhj
ZXB0aW9uOjpJREJfVFlQRV9FUlI7CisgICAgICAgIGVjID0gTkFUSVZFX1RZUEVfRVJSOwogICAg
ICAgICByZXR1cm47CiAgICAgfQogCkBAIC0zMDYsNyArMzA2LDcgQEAgSURCQ3Vyc29yOjpEaXJl
Y3Rpb24gSURCQ3Vyc29yOjpzdHJpbmdUb0RpcmVjdGlvbihjb25zdCBTdHJpbmcmIGRpcmVjdGlv
blN0cmluZywKICAgICBpZiAoZGlyZWN0aW9uU3RyaW5nID09IElEQkN1cnNvcjo6ZGlyZWN0aW9u
UHJldlVuaXF1ZSgpKQogICAgICAgICByZXR1cm4gSURCQ3Vyc29yOjpQUkVWX05PX0RVUExJQ0FU
RTsKIAotICAgIGVjID0gSURCRGF0YWJhc2VFeGNlcHRpb246OklEQl9UWVBFX0VSUjsKKyAgICBl
YyA9IE5BVElWRV9UWVBFX0VSUjsKICAgICByZXR1cm4gSURCQ3Vyc29yOjpORVhUOwogfQogCkBA
IC0zMjYsNyArMzI2LDcgQEAgY29uc3QgQXRvbWljU3RyaW5nJiBJREJDdXJzb3I6OmRpcmVjdGlv
blRvU3RyaW5nKHVuc2lnbmVkIHNob3J0IGRpcmVjdGlvbiwgRXhjZXAKICAgICAgICAgcmV0dXJu
IElEQkN1cnNvcjo6ZGlyZWN0aW9uUHJldlVuaXF1ZSgpOwogCiAgICAgZGVmYXVsdDoKLSAgICAg
ICAgZWMgPSBJREJEYXRhYmFzZUV4Y2VwdGlvbjo6SURCX1RZUEVfRVJSOworICAgICAgICBlYyA9
IE5BVElWRV9UWVBFX0VSUjsKICAgICAgICAgcmV0dXJuIElEQkN1cnNvcjo6ZGlyZWN0aW9uTmV4
dCgpOwogICAgIH0KIH0KZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvaW5kZXhl
ZGRiL0lEQkRhdGFiYXNlLmNwcCBiL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvaW5kZXhlZGRiL0lE
QkRhdGFiYXNlLmNwcAppbmRleCAzNWI1Y2ExZjA1OWFiNzg3OTNiYTM0ZDlhZjRmZDAyY2YwY2Vj
MTY4Li4yZjljODkzMmUwYmVkMDAzYzk4M2E1MTYxODNkMzNiM2M0NDVkY2JhIDEwMDY0NAotLS0g
YS9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL2luZGV4ZWRkYi9JREJEYXRhYmFzZS5jcHAKKysrIGIv
U291cmNlL1dlYkNvcmUvTW9kdWxlcy9pbmRleGVkZGIvSURCRGF0YWJhc2UuY3BwCkBAIC0xOTAs
NyArMTkwLDcgQEAgdm9pZCBJREJEYXRhYmFzZTo6ZGVsZXRlT2JqZWN0U3RvcmUoY29uc3QgU3Ry
aW5nJiBuYW1lLCBFeGNlcHRpb25Db2RlJiBlYykKIFBhc3NSZWZQdHI8SURCVmVyc2lvbkNoYW5n
ZVJlcXVlc3Q+IElEQkRhdGFiYXNlOjpzZXRWZXJzaW9uKFNjcmlwdEV4ZWN1dGlvbkNvbnRleHQq
IGNvbnRleHQsIGNvbnN0IFN0cmluZyYgdmVyc2lvbiwgRXhjZXB0aW9uQ29kZSYgZWMpCiB7CiAg
ICAgaWYgKHZlcnNpb24uaXNOdWxsKCkpIHsKLSAgICAgICAgZWMgPSBJREJEYXRhYmFzZUV4Y2Vw
dGlvbjo6SURCX1RZUEVfRVJSOworICAgICAgICBlYyA9IE5BVElWRV9UWVBFX0VSUjsKICAgICAg
ICAgcmV0dXJuIDA7CiAgICAgfQogCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVz
L2luZGV4ZWRkYi9JREJEYXRhYmFzZUV4Y2VwdGlvbi5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9Nb2R1
bGVzL2luZGV4ZWRkYi9JREJEYXRhYmFzZUV4Y2VwdGlvbi5jcHAKaW5kZXggODAzNDk5MDU1MmUw
Y2VhODZkN2RhMjVlNjQwYTc3ZWZjNDEwMTBlYi4uZmU4NTBiYjE5OThhOThlMWRlYjA1NjU5ZjQ0
ODE3YzkzNzQ3MTAyZiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvTW9kdWxlcy9pbmRleGVk
ZGIvSURCRGF0YWJhc2VFeGNlcHRpb24uY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMv
aW5kZXhlZGRiL0lEQkRhdGFiYXNlRXhjZXB0aW9uLmNwcApAQCAtNjIsOCArNjIsNyBAQCBzdGF0
aWMgY29uc3Qgc3RydWN0IElEQkRhdGFiYXNlRXhjZXB0aW9uTmFtZURlc2NyaXB0aW9uIHsKICAg
ICB7ICJRdW90YUV4Y2VlZGVkRXJyb3IiLCAiVGhlIG9wZXJhdGlvbiBmYWlsZWQgYmVjYXVzZSB0
aGVyZSB3YXMgbm90IGVub3VnaCByZW1haW5pbmcgc3RvcmFnZSBzcGFjZSwgb3IgdGhlIHN0b3Jh
Z2UgcXVvdGEgd2FzIHJlYWNoZWQgYW5kIHRoZSB1c2VyIGRlY2xpbmVkIHRvIGdpdmUgbW9yZSBz
cGFjZSB0byB0aGUgZGF0YWJhc2UuIiwgUVVPVEFfRVhDRUVERURfRVJSIH0sIC8vIEZJWE1FOiBU
aGlzIGlzbid0IHVzZWQgeWV0CiAgICAgeyAiU3ludGF4RXJyb3IiLCAiVGhlIGtleXBhdGggYXJn
dW1lbnQgY29udGFpbnMgYW4gaW52YWxpZCBrZXkgcGF0aC4iLCBTWU5UQVhfRVJSIH0sCiAgICAg
eyAiRGF0YUNsb25lRXJyb3IiLCAiVGhlIGRhdGEgYmVpbmcgc3RvcmVkIGNvdWxkIG5vdCBiZSBj
bG9uZWQgYnkgdGhlIGludGVybmFsIHN0cnVjdHVyZWQgY2xvbmluZyBhbGdvcml0aG0uIiwgREFU
QV9DTE9ORV9FUlIgfSwKLSAgICAvLyBGSVhNRTogc2hvdWxkIGJlIGEgSmF2YVNjcmlwdCBUeXBl
RXJyb3IuIFNlZSBodHRwczovL2J1Z3Mud2Via2l0Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9ODU1MTMK
LSAgICB7ICJUeXBlRXJyb3IiLCAiVGhpcyBzaG91bGQgYmUgYSBUeXBlRXJyb3IiLCAwIH0sCisg
ICAgeyAwLCAwLCAwIH0sIC8vIEZJWE1FOiBQcmV2aW91cy9sZWdhY3kgdmFsdWUgd2FzIElEQl9U
WVBFX0VSUi4KICAgICB7IDAsIDAsIDAgfSwgLy8gRklYTUU6IFByZXZpb3VzL2xlZ2FjeSB2YWx1
ZSB3YXMgSURCX05PVF9TVVBQT1JURURfRVJSLgogfTsKIApkaWZmIC0tZ2l0IGEvU291cmNlL1dl
YkNvcmUvTW9kdWxlcy9pbmRleGVkZGIvSURCRGF0YWJhc2VFeGNlcHRpb24uaCBiL1NvdXJjZS9X
ZWJDb3JlL01vZHVsZXMvaW5kZXhlZGRiL0lEQkRhdGFiYXNlRXhjZXB0aW9uLmgKaW5kZXggMjg5
MGFlY2JmYzlmYWY0YjZhYzg1YjhiMjc5MDg2ODA0MGU3Y2MxMS4uM2U0NGE2OGNlOGI0MWM2OWE3
MTc1MjljYzRkNDUzMzUwMjU0MTJiYSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvTW9kdWxl
cy9pbmRleGVkZGIvSURCRGF0YWJhc2VFeGNlcHRpb24uaAorKysgYi9Tb3VyY2UvV2ViQ29yZS9N
b2R1bGVzL2luZGV4ZWRkYi9JREJEYXRhYmFzZUV4Y2VwdGlvbi5oCkBAIC02NSw3ICs2NSw3IEBA
IHB1YmxpYzoKICAgICAgICAgSURCX1FVT1RBX0VYQ0VFREVEX0VSUiwKICAgICAgICAgSURCX1NZ
TlRBWF9FUlIsCiAgICAgICAgIElEQl9EQVRBX0NMT05FX0VSUiwKLSAgICAgICAgSURCX1RZUEVf
RVJSLCAvLyBGSVhNRTogUGxhY2Vob2xkZXIgdW50aWwgYmluZGluZ3MgaGF2ZSBiZWVuIHVwZGF0
ZWQgdG8gdGhyb3cgYSBKUyBUeXBlRXJyb3IuIFNlZSBodHRwczovL2J1Z3Mud2Via2l0Lm9yZy9z
aG93X2J1Zy5jZ2k/aWQ9ODU1MTMKKyAgICAgICAgTEVHQUNZX0lEQl9UWVBFX0VSUiwgLy8gRklY
TUU6IFBsYWNlaG9sZGVyLgogICAgICAgICBMRUdBQ1lfSURCX05PVF9TVVBQT1JURURfRVJSLCAv
LyBGSVhNRTogUGxhY2Vob2xkZXIuCiAgICAgfTsKIApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNv
cmUvTW9kdWxlcy9pbmRleGVkZGIvSURCRGF0YWJhc2VFeGNlcHRpb24uaWRsIGIvU291cmNlL1dl
YkNvcmUvTW9kdWxlcy9pbmRleGVkZGIvSURCRGF0YWJhc2VFeGNlcHRpb24uaWRsCmluZGV4IDk4
NGNhYjkyMmJkNjZjYTdmNGUyNzZmNmIyMTQ0MWM5ZTJlNjNhZDMuLjY3ZDgxMWMzZWFmMzIwYjQ0
NjE4YzZlYzA0ZDRlNTY4NjE5MjRiM2IgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL01vZHVs
ZXMvaW5kZXhlZGRiL0lEQkRhdGFiYXNlRXhjZXB0aW9uLmlkbAorKysgYi9Tb3VyY2UvV2ViQ29y
ZS9Nb2R1bGVzL2luZGV4ZWRkYi9JREJEYXRhYmFzZUV4Y2VwdGlvbi5pZGwKQEAgLTQ5LDEwICs0
OSw2IEBAIG1vZHVsZSBzdG9yYWdlIHsKICAgICAgICAgY29uc3QgdW5zaWduZWQgc2hvcnQgUkVB
RF9PTkxZX0VSUiA9IDk7CiAgICAgICAgIGNvbnN0IHVuc2lnbmVkIHNob3J0IFZFUl9FUlIgPSAx
MjsKIAotICAgICAgICAvLyBGSVhNRTogUGxhY2Vob2xkZXIgdW50aWwgYmluZGluZ3MgaGF2ZSBi
ZWVuIHVwZGF0ZWQgdG8gdGhyb3cgYSBKUyBUeXBlRXJyb3IuCi0gICAgICAgIC8vIFNlZSBodHRw
czovL2J1Z3Mud2Via2l0Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9ODU1MTMKLSAgICAgICAgY29uc3Qg
dW5zaWduZWQgc2hvcnQgVFlQRV9FUlIgPSAyMTsKLSAgICAgICAgCiAgICAgICAgIGNvbnN0IHVu
c2lnbmVkIHNob3J0IE5PVF9GT1VORF9FUlIgPSA4OwogICAgICAgICBjb25zdCB1bnNpZ25lZCBz
aG9ydCBBQk9SVF9FUlIgPSAyMDsKICAgICAgICAgY29uc3QgdW5zaWduZWQgc2hvcnQgVElNRU9V
VF9FUlIgPSAyMzsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvaW5kZXhlZGRi
L0lEQkZhY3RvcnkuY3BwIGIvU291cmNlL1dlYkNvcmUvTW9kdWxlcy9pbmRleGVkZGIvSURCRmFj
dG9yeS5jcHAKaW5kZXggN2UxMGNiMWE1M2IwOWFkNDIyZGY4MDUwZTQwMTY2ZWNjM2M1Y2JhMC4u
Y2Y1MmNjMWZlMmIxMzU1YjZjNTRlZGNlMjY1ZTBmM2U4YzNhNWU5MSAxMDA2NDQKLS0tIGEvU291
cmNlL1dlYkNvcmUvTW9kdWxlcy9pbmRleGVkZGIvSURCRmFjdG9yeS5jcHAKKysrIGIvU291cmNl
L1dlYkNvcmUvTW9kdWxlcy9pbmRleGVkZGIvSURCRmFjdG9yeS5jcHAKQEAgLTEwOCw3ICsxMDgs
NyBAQCBQYXNzUmVmUHRyPElEQlJlcXVlc3Q+IElEQkZhY3Rvcnk6OmdldERhdGFiYXNlTmFtZXMo
U2NyaXB0RXhlY3V0aW9uQ29udGV4dCogY29udAogUGFzc1JlZlB0cjxJREJSZXF1ZXN0PiBJREJG
YWN0b3J5OjpvcGVuKFNjcmlwdEV4ZWN1dGlvbkNvbnRleHQqIGNvbnRleHQsIGNvbnN0IFN0cmlu
ZyYgbmFtZSwgRXhjZXB0aW9uQ29kZSYgZWMpCiB7CiAgICAgaWYgKG5hbWUuaXNOdWxsKCkpIHsK
LSAgICAgICAgZWMgPSBJREJEYXRhYmFzZUV4Y2VwdGlvbjo6SURCX1RZUEVfRVJSOworICAgICAg
ICBlYyA9IE5BVElWRV9UWVBFX0VSUjsKICAgICAgICAgcmV0dXJuIDA7CiAgICAgfQogICAgIGlm
ICghaXNDb250ZXh0VmFsaWQoY29udGV4dCkpCkBAIC0xMjIsNyArMTIyLDcgQEAgUGFzc1JlZlB0
cjxJREJSZXF1ZXN0PiBJREJGYWN0b3J5OjpvcGVuKFNjcmlwdEV4ZWN1dGlvbkNvbnRleHQqIGNv
bnRleHQsIGNvbnN0IFMKIFBhc3NSZWZQdHI8SURCVmVyc2lvbkNoYW5nZVJlcXVlc3Q+IElEQkZh
Y3Rvcnk6OmRlbGV0ZURhdGFiYXNlKFNjcmlwdEV4ZWN1dGlvbkNvbnRleHQqIGNvbnRleHQsIGNv
bnN0IFN0cmluZyYgbmFtZSwgRXhjZXB0aW9uQ29kZSYgZWMpCiB7CiAgICAgaWYgKG5hbWUuaXNO
dWxsKCkpIHsKLSAgICAgICAgZWMgPSBJREJEYXRhYmFzZUV4Y2VwdGlvbjo6SURCX1RZUEVfRVJS
OworICAgICAgICBlYyA9IE5BVElWRV9UWVBFX0VSUjsKICAgICAgICAgcmV0dXJuIDA7CiAgICAg
fQogICAgIGlmICghaXNDb250ZXh0VmFsaWQoY29udGV4dCkpCmRpZmYgLS1naXQgYS9Tb3VyY2Uv
V2ViQ29yZS9Nb2R1bGVzL2luZGV4ZWRkYi9JREJPYmplY3RTdG9yZS5jcHAgYi9Tb3VyY2UvV2Vi
Q29yZS9Nb2R1bGVzL2luZGV4ZWRkYi9JREJPYmplY3RTdG9yZS5jcHAKaW5kZXggYmRkN2I3MzFk
OTM1Mzk0NTFhMmU1OTc5YzBmOGZhMTlmNDdhNWQxMi4uZTI3Y2E4MjdiNzVhZmJkNTEwMDFjMDZm
MzgwNzJmYTEzNWRiNmYwNyAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvTW9kdWxlcy9pbmRl
eGVkZGIvSURCT2JqZWN0U3RvcmUuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvaW5k
ZXhlZGRiL0lEQk9iamVjdFN0b3JlLmNwcApAQCAtMjcyLDcgKzI3Miw3IEBAIFBhc3NSZWZQdHI8
SURCSW5kZXg+IElEQk9iamVjdFN0b3JlOjpjcmVhdGVJbmRleChjb25zdCBTdHJpbmcmIG5hbWUs
IGNvbnN0IElEQktlCiAgICAgICAgIHJldHVybiAwOwogICAgIH0KICAgICBpZiAobmFtZS5pc051
bGwoKSkgewotICAgICAgICBlYyA9IElEQkRhdGFiYXNlRXhjZXB0aW9uOjpJREJfVFlQRV9FUlI7
CisgICAgICAgIGVjID0gTkFUSVZFX1RZUEVfRVJSOwogICAgICAgICByZXR1cm4gMDsKICAgICB9
CiAgICAgaWYgKG1fbWV0YWRhdGEuaW5kZXhlcy5jb250YWlucyhuYW1lKSkgewpkaWZmIC0tZ2l0
IGEvU291cmNlL1dlYkNvcmUvTW9kdWxlcy9pbmRleGVkZGIvSURCVHJhbnNhY3Rpb24uY3BwIGIv
U291cmNlL1dlYkNvcmUvTW9kdWxlcy9pbmRleGVkZGIvSURCVHJhbnNhY3Rpb24uY3BwCmluZGV4
IDVjMmIwZWNiYWM4NjU3ZDA1MjA4NzM3OTYwMmI0OGQ4ZGNjNDM1MzAuLmY1ZTc2MWU2YTYyYzc1
ODExM2QwZTkzZjgwMDUzNjY3MjU2MTkzZGQgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL01v
ZHVsZXMvaW5kZXhlZGRiL0lEQlRyYW5zYWN0aW9uLmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9N
b2R1bGVzL2luZGV4ZWRkYi9JREJUcmFuc2FjdGlvbi5jcHAKQEAgLTMxOCw3ICszMTgsNyBAQCBJ
REJUcmFuc2FjdGlvbjo6TW9kZSBJREJUcmFuc2FjdGlvbjo6c3RyaW5nVG9Nb2RlKGNvbnN0IFN0
cmluZyYgbW9kZVN0cmluZywgRXhjZQogICAgICAgICByZXR1cm4gSURCVHJhbnNhY3Rpb246OlJF
QURfT05MWTsKICAgICBpZiAobW9kZVN0cmluZyA9PSBJREJUcmFuc2FjdGlvbjo6bW9kZVJlYWRX
cml0ZSgpKQogICAgICAgICByZXR1cm4gSURCVHJhbnNhY3Rpb246OlJFQURfV1JJVEU7Ci0gICAg
ZWMgPSBJREJEYXRhYmFzZUV4Y2VwdGlvbjo6SURCX1RZUEVfRVJSOworICAgIGVjID0gTkFUSVZF
X1RZUEVfRVJSOwogICAgIHJldHVybiBJREJUcmFuc2FjdGlvbjo6UkVBRF9PTkxZOwogfQogCkBA
IC0zMzgsNyArMzM4LDcgQEAgY29uc3QgQXRvbWljU3RyaW5nJiBJREJUcmFuc2FjdGlvbjo6bW9k
ZVRvU3RyaW5nKElEQlRyYW5zYWN0aW9uOjpNb2RlIG1vZGUsIEV4Y2UKICAgICAgICAgYnJlYWs7
CiAKICAgICBkZWZhdWx0OgotICAgICAgICBlYyA9IElEQkRhdGFiYXNlRXhjZXB0aW9uOjpJREJf
VFlQRV9FUlI7CisgICAgICAgIGVjID0gTkFUSVZFX1RZUEVfRVJSOwogICAgICAgICByZXR1cm4g
SURCVHJhbnNhY3Rpb246Om1vZGVSZWFkT25seSgpOwogICAgIH0KIH0KZGlmZiAtLWdpdCBhL1Nv
dXJjZS9XZWJDb3JlL2JpbmRpbmdzL2pzL0pTRE9NQmluZGluZy5jcHAgYi9Tb3VyY2UvV2ViQ29y
ZS9iaW5kaW5ncy9qcy9KU0RPTUJpbmRpbmcuY3BwCmluZGV4IGZjMTc5OTA3YTJiNjc0OTJmNmM2
Y2VhM2IzMTk0MjJlZDI3ZjY5YzEuLmNmMjFhYWU2NmM2ZThmMTFhNDcwNWQ1NjUxMzViZTA2MmY1
ZGU4NDggMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2JpbmRpbmdzL2pzL0pTRE9NQmluZGlu
Zy5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvYmluZGluZ3MvanMvSlNET01CaW5kaW5nLmNwcApA
QCAtMTk4LDYgKzE5OCwxMSBAQCB2b2lkIHNldERPTUV4Y2VwdGlvbihFeGVjU3RhdGUqIGV4ZWMs
IEV4Y2VwdGlvbkNvZGUgZWMpCiAgICAgaWYgKCFlYyB8fCBleGVjLT5oYWRFeGNlcHRpb24oKSkK
ICAgICAgICAgcmV0dXJuOwogCisgICAgaWYgKGVjID09IE5BVElWRV9UWVBFX0VSUikgeworICAg
ICAgICB0aHJvd1R5cGVFcnJvcihleGVjKTsKKyAgICAgICAgcmV0dXJuOworICAgIH0KKwogICAg
IC8vIEZJWE1FOiBBbGwgY2FsbGVycyB0byBzZXRET01FeGNlcHRpb24gbmVlZCB0byBwYXNzIGlu
IHRoZSByaWdodCBnbG9iYWwgb2JqZWN0CiAgICAgLy8gZm9yIG5vdywgd2UncmUgZ29pbmcgdG8g
YXNzdW1lIHRoZSBsZXhpY2FsR2xvYmFsT2JqZWN0LiAgV2hpY2ggaXMgd3JvbmcgaW4gY2FzZXMg
bGlrZSB0aGlzOgogICAgIC8vIGZyYW1lc1swXS5kb2N1bWVudC5jcmVhdGVFbGVtZW50KG51bGws
IG51bGwpOyAvLyB0aHJvd3MgYW4gZXhjZXB0aW9uIHdoaWNoIHNob3VsZCBoYXZlIHRoZSBzdWJm
cmFtZXMgcHJvdG90eXBlcy4KZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2JpbmRpbmdzL3Y4
L1Y4UHJveHkuY3BwIGIvU291cmNlL1dlYkNvcmUvYmluZGluZ3MvdjgvVjhQcm94eS5jcHAKaW5k
ZXggYWUwMzllM2I2ZjkyYzRkZWJjNmNhZDhiM2UxNjYyZGIzNjZjMmEzZC4uZTQwNzljZGQxMzQw
ODQzMmU0YWMzYzYzZjY1ZTMyMzFhZjBiZTM4NSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUv
YmluZGluZ3MvdjgvVjhQcm94eS5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvYmluZGluZ3Mvdjgv
VjhQcm94eS5jcHAKQEAgLTU5Myw2ICs1OTMsMTEgQEAgdjg6OkhhbmRsZTx2ODo6VmFsdWU+IFY4
UHJveHk6OnNldERPTUV4Y2VwdGlvbihpbnQgZWMsIHY4OjpJc29sYXRlKiBpc29sYXRlKQogICAg
IGlmIChlYyA8PSAwKQogICAgICAgICByZXR1cm4gdjg6OkhhbmRsZTx2ODo6VmFsdWU+KCk7CiAK
KyAgICBpZiAoZWMgPT0gTkFUSVZFX1RZUEVfRVJSKSB7CisgICAgICAgIGNvbnN0IGNoYXIqIG1l
c3NhZ2UgPSAwOworICAgICAgICByZXR1cm4gdGhyb3dUeXBlRXJyb3IobWVzc2FnZSwgaXNvbGF0
ZSk7CisgICAgfQorCiAgICAgRXhjZXB0aW9uQ29kZURlc2NyaXB0aW9uIGRlc2NyaXB0aW9uKGVj
KTsKIAogICAgIHY4OjpIYW5kbGU8djg6OlZhbHVlPiBleGNlcHRpb247CmRpZmYgLS1naXQgYS9T
b3VyY2UvV2ViQ29yZS9kb20vRXhjZXB0aW9uQ29kZS5oIGIvU291cmNlL1dlYkNvcmUvZG9tL0V4
Y2VwdGlvbkNvZGUuaAppbmRleCAzMWQ2NjgwNDU4M2M5ZGM2YjljN2QyODlmM2Y5Njk5YmE4OWNh
ZDNjLi41MWY4ZGMyZDNmMTI0OWI4M2E1ZmRkODQzNjhlNGNjOTMzNDI2NDk5IDEwMDY0NAotLS0g
YS9Tb3VyY2UvV2ViQ29yZS9kb20vRXhjZXB0aW9uQ29kZS5oCisrKyBiL1NvdXJjZS9XZWJDb3Jl
L2RvbS9FeGNlcHRpb25Db2RlLmgKQEAgLTYzLDcgKzYzLDEwIEBAIG5hbWVzcGFjZSBXZWJDb3Jl
IHsKICAgICAgICAgUVVPVEFfRVhDRUVERURfRVJSID0gMjIsCiAgICAgICAgIFRJTUVPVVRfRVJS
ID0gMjMsCiAgICAgICAgIElOVkFMSURfTk9ERV9UWVBFX0VSUiA9IDI0LAotICAgICAgICBEQVRB
X0NMT05FX0VSUiA9IDI1CisgICAgICAgIERBVEFfQ0xPTkVfRVJSID0gMjUsCisKKyAgICAgICAg
Ly8gQ29udmVydGVkIHRvIGEgbmF0aXZlIFR5cGVFcnJvciBieSB0aGUgc2NyaXB0IGJpbmRpbmcg
bGF5ZXI6CisgICAgICAgIE5BVElWRV9UWVBFX0VSUiA9IDk5CiAgICAgfTsKIAogfSAvLyBuYW1l
c3BhY2UgV2ViQ29yZQpkaWZmIC0tZ2l0IGEvTGF5b3V0VGVzdHMvQ2hhbmdlTG9nIGIvTGF5b3V0
VGVzdHMvQ2hhbmdlTG9nCmluZGV4IDdkODg1MTI2M2JkYjQ4OTM3ZWZlOWQ4YTI3Yzc0YTlhM2Rh
N2NjZTguLjBjYjRlMzc0Mjg0MzY3NDIxMDZlMjA2M2YzZmJmNDI3OTM1ZjliMWQgMTAwNjQ0Ci0t
LSBhL0xheW91dFRlc3RzL0NoYW5nZUxvZworKysgYi9MYXlvdXRUZXN0cy9DaGFuZ2VMb2cKQEAg
LTEsNSArMSwyOCBAQAogMjAxMi0wNy0xOCAgSm9zaHVhIEJlbGwgIDxqc2JlbGxAY2hyb21pdW0u
b3JnPgogCisgICAgICAgIEluZGV4ZWREQjogVGhyb3cgbmF0aXZlIFR5cGVFcnJvcnMgcGVyIHNw
ZWMKKyAgICAgICAgaHR0cHM6Ly9idWdzLndlYmtpdC5vcmcvc2hvd19idWcuY2dpP2lkPTkxNjc5
CisKKyAgICAgICAgUmV2aWV3ZWQgYnkgTk9CT0RZIChPT1BTISkuCisKKyAgICAgICAgKiBzdG9y
YWdlL2luZGV4ZWRkYi9jdXJzb3ItYWR2YW5jZS1leHBlY3RlZC50eHQ6CisgICAgICAgICogc3Rv
cmFnZS9pbmRleGVkZGIvaW5kZXgtYmFzaWNzLWV4cGVjdGVkLnR4dDoKKyAgICAgICAgKiBzdG9y
YWdlL2luZGV4ZWRkYi9pbmRleC1iYXNpY3Mtd29ya2Vycy1leHBlY3RlZC50eHQ6CisgICAgICAg
ICogc3RvcmFnZS9pbmRleGVkZGIvb2JqZWN0c3RvcmUtY3Vyc29yLWV4cGVjdGVkLnR4dDoKKyAg
ICAgICAgKiBzdG9yYWdlL2luZGV4ZWRkYi9yZXNvdXJjZXMvY3Vyc29yLWFkdmFuY2UuanM6Cisg
ICAgICAgICh0ZXN0QmFkQWR2YW5jZS5hZHZhbmNlQmFkbHkpOgorICAgICAgICAodGVzdEJhZEFk
dmFuY2UpOgorICAgICAgICAqIHN0b3JhZ2UvaW5kZXhlZGRiL3Jlc291cmNlcy9pbmRleC1iYXNp
Y3MuanM6CisgICAgICAgIChvcGVuS2V5Q3Vyc29yKToKKyAgICAgICAgKG9wZW5PYmplY3RDdXJz
b3IpOgorICAgICAgICAqIHN0b3JhZ2UvaW5kZXhlZGRiL3Jlc291cmNlcy9vYmplY3RzdG9yZS1j
dXJzb3IuanM6CisgICAgICAgIChkZWxldGVFeGlzdGluZyk6CisgICAgICAgICogc3RvcmFnZS9p
bmRleGVkZGIvcmVzb3VyY2VzL3RyYW5zYWN0aW9uLWJhc2ljcy5qczoKKyAgICAgICAgKHRlc3RJ
bnZhbGlkTW9kZSk6CisgICAgICAgICogc3RvcmFnZS9pbmRleGVkZGIvdHJhbnNhY3Rpb24tYmFz
aWNzLWV4cGVjdGVkLnR4dDoKKworMjAxMi0wNy0xOCAgSm9zaHVhIEJlbGwgIDxqc2JlbGxAY2hy
b21pdW0ub3JnPgorCiAgICAgICAgIEluZGV4ZWREQjogRGlyZWN0aW9uIHBhcmFtZXRlciBpZ25v
cmVkIGJ5IHNvbWUgb3BlbkN1cnNvcigpIG92ZXJsb2FkcwogICAgICAgICBodHRwczovL2J1Z3Mu
d2Via2l0Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9OTE2ODcKIApkaWZmIC0tZ2l0IGEvTGF5b3V0VGVz
dHMvc3RvcmFnZS9pbmRleGVkZGIvY3Vyc29yLWFkdmFuY2UtZXhwZWN0ZWQudHh0IGIvTGF5b3V0
VGVzdHMvc3RvcmFnZS9pbmRleGVkZGIvY3Vyc29yLWFkdmFuY2UtZXhwZWN0ZWQudHh0CmluZGV4
IDBjNDIzNWEzMzYxYWY2OWU2MDdkOWJiMDhkN2ExMjliNjUxNTFmNTkuLjVkNTNmYjQ1MDU5MmMy
Mjk1ZDk5N2Q2ZjJkZWJlMDJlYzBiYWQ3NDUgMTAwNjQ0Ci0tLSBhL0xheW91dFRlc3RzL3N0b3Jh
Z2UvaW5kZXhlZGRiL2N1cnNvci1hZHZhbmNlLWV4cGVjdGVkLnR4dAorKysgYi9MYXlvdXRUZXN0
cy9zdG9yYWdlL2luZGV4ZWRkYi9jdXJzb3ItYWR2YW5jZS1leHBlY3RlZC50eHQKQEAgLTEzMyw5
ICsxMzMsOSBAQCB0ZXN0QmFkQWR2YW5jZSgpCiB0cmFucyA9IGRiLnRyYW5zYWN0aW9uKG9iamVj
dFN0b3JlTmFtZSwgJ3JlYWR3cml0ZScpCiBvYmplY3RTdG9yZSA9IHRyYW5zLm9iamVjdFN0b3Jl
KG9iamVjdFN0b3JlTmFtZSkKIHJlcXVlc3QgPSBvYmplY3RTdG9yZS5vcGVuQ3Vyc29yKCkKLUV4
cGVjdGluZyBleGNlcHRpb24gZnJvbSBjdXJzb3IuYWR2YW5jZSgwKQorRXhwZWN0aW5nIFR5cGVF
cnJvciBleGNlcHRpb24gZnJvbSBjdXJzb3IuYWR2YW5jZSgwKQogUEFTUyBFeGNlcHRpb24gd2Fz
IHRocm93bi4KLVBBU1MgY29kZSBpcyBJREJEYXRhYmFzZUV4Y2VwdGlvbi5UWVBFX0VSUgorUEFT
UyBjdXJzb3IuYWR2YW5jZSgwKSB0aHJldyBUeXBlRXJyb3I6IFR5cGUgZXJyb3IKIHRlc3REZWxl
dGUoKQogdHJhbnMgPSBkYi50cmFuc2FjdGlvbihvYmplY3RTdG9yZU5hbWUsICdyZWFkd3JpdGUn
KQogb2JqZWN0U3RvcmUgPSB0cmFucy5vYmplY3RTdG9yZShvYmplY3RTdG9yZU5hbWUpCmRpZmYg
LS1naXQgYS9MYXlvdXRUZXN0cy9zdG9yYWdlL2luZGV4ZWRkYi9pbmRleC1iYXNpY3MtZXhwZWN0
ZWQudHh0IGIvTGF5b3V0VGVzdHMvc3RvcmFnZS9pbmRleGVkZGIvaW5kZXgtYmFzaWNzLWV4cGVj
dGVkLnR4dAppbmRleCA1MWQ3NDk0ZjE3MjFlZjdlMGExZmRlYWI1ZTdlYWU5NjVlZTkyNzZkLi45
ZjZmMzhlY2U2OTFlNDYwMjRhNWJlNmQxYTZkZjJlMTE1NWM3ZWYzIDEwMDY0NAotLS0gYS9MYXlv
dXRUZXN0cy9zdG9yYWdlL2luZGV4ZWRkYi9pbmRleC1iYXNpY3MtZXhwZWN0ZWQudHh0CisrKyBi
L0xheW91dFRlc3RzL3N0b3JhZ2UvaW5kZXhlZGRiL2luZGV4LWJhc2ljcy1leHBlY3RlZC50eHQK
QEAgLTY3LDYgKzY3LDEyIEBAIGluZGV4T2JqZWN0LmdldCgnZG9lcyBub3QgZXhpc3QnKQogUEFT
UyBldmVudC50YXJnZXQucmVzdWx0IGlzIHVuZGVmaW5lZAogaW5kZXhPYmplY3Q0LmdldEtleSgn
dmFsdWUyJykKIFBBU1MgZXZlbnQudGFyZ2V0LnJlc3VsdCBpcyAia2V5MiIKKworVmVyaWZ5IHRo
YXQgc3BlY2lmeWluZyBhbiBpbnZhbGlkIGRpcmVjdGlvbiByYWlzZXMgYW4gZXhjZXB0aW9uOgor
RXhwZWN0aW5nIFR5cGVFcnJvciBleGNlcHRpb24gZnJvbSBpbmRleE9iamVjdC5vcGVuS2V5Q3Vy
c29yKDAsICdpbnZhbGlkLWRpcmVjdGlvbicpCitQQVNTIEV4Y2VwdGlvbiB3YXMgdGhyb3duLgor
UEFTUyBpbmRleE9iamVjdC5vcGVuS2V5Q3Vyc29yKDAsICdpbnZhbGlkLWRpcmVjdGlvbicpIHRo
cmV3IFR5cGVFcnJvcjogVHlwZSBlcnJvcgorCiBpbmRleE9iamVjdC5vcGVuS2V5Q3Vyc29yKCkK
IFBBU1MgZXZlbnQudGFyZ2V0LnNvdXJjZSBpcyBpbmRleE9iamVjdAogUEFTUyBldmVudC50YXJn
ZXQucmVzdWx0IGlzIG5vbi1udWxsLgpAQCAtODYsNiArOTIsMTIgQEAgUEFTUyBldmVudC50YXJn
ZXQucmVzdWx0LmtleSBpcyAidmFsdWU0IgogUEFTUyBldmVudC50YXJnZXQucmVzdWx0LnByaW1h
cnlLZXkgaXMgImtleTQiCiBldmVudC50YXJnZXQucmVzdWx0LmNvbnRpbnVlKCkKIFBBU1MgZXZl
bnQudGFyZ2V0LnJlc3VsdCBpcyBudWxsCisKK1ZlcmlmeSB0aGF0IHNwZWNpZnlpbmcgYW4gaW52
YWxpZCBkaXJlY3Rpb24gcmFpc2VzIGFuIGV4Y2VwdGlvbjoKK0V4cGVjdGluZyBUeXBlRXJyb3Ig
ZXhjZXB0aW9uIGZyb20gaW5kZXhPYmplY3Qub3BlbkN1cnNvcigwLCAnaW52YWxpZC1kaXJlY3Rp
b24nKQorUEFTUyBFeGNlcHRpb24gd2FzIHRocm93bi4KK1BBU1MgaW5kZXhPYmplY3Qub3BlbkN1
cnNvcigwLCAnaW52YWxpZC1kaXJlY3Rpb24nKSB0aHJldyBUeXBlRXJyb3I6IFR5cGUgZXJyb3IK
KwogaW5kZXhPYmplY3Qub3BlbkN1cnNvcigpCiBQQVNTIGV2ZW50LnRhcmdldC5zb3VyY2UgaXMg
aW5kZXhPYmplY3QKIFBBU1MgZXZlbnQudGFyZ2V0LnJlc3VsdCBpcyBub24tbnVsbC4KZGlmZiAt
LWdpdCBhL0xheW91dFRlc3RzL3N0b3JhZ2UvaW5kZXhlZGRiL2luZGV4LWJhc2ljcy13b3JrZXJz
LWV4cGVjdGVkLnR4dCBiL0xheW91dFRlc3RzL3N0b3JhZ2UvaW5kZXhlZGRiL2luZGV4LWJhc2lj
cy13b3JrZXJzLWV4cGVjdGVkLnR4dAppbmRleCBmNmUxYjNjNjUwOTg4NTNlNWNmOTEwNTk0Y2Vh
Nzg0ODljNDgwMWUzLi5iN2ZkN2FlNmVmNzkzMWI1MTUyMjI1NGMzZGUwYWQ4ZmY1N2Y5MmNkIDEw
MDY0NAotLS0gYS9MYXlvdXRUZXN0cy9zdG9yYWdlL2luZGV4ZWRkYi9pbmRleC1iYXNpY3Mtd29y
a2Vycy1leHBlY3RlZC50eHQKKysrIGIvTGF5b3V0VGVzdHMvc3RvcmFnZS9pbmRleGVkZGIvaW5k
ZXgtYmFzaWNzLXdvcmtlcnMtZXhwZWN0ZWQudHh0CkBAIC02OCw2ICs2OCwxMiBAQCBQQVNTIFtX
b3JrZXJdIGV2ZW50LnRhcmdldC5yZXN1bHQgaXMgdW5kZWZpbmVkCiBQQVNTIFtXb3JrZXJdIGV2
ZW50LnRhcmdldC5yZXN1bHQgaXMgdW5kZWZpbmVkCiBbV29ya2VyXSBpbmRleE9iamVjdDQuZ2V0
S2V5KCd2YWx1ZTInKQogUEFTUyBbV29ya2VyXSBldmVudC50YXJnZXQucmVzdWx0IGlzICJrZXky
IgorW1dvcmtlcl0gCitbV29ya2VyXSBWZXJpZnkgdGhhdCBzcGVjaWZ5aW5nIGFuIGludmFsaWQg
ZGlyZWN0aW9uIHJhaXNlcyBhbiBleGNlcHRpb246CitbV29ya2VyXSBFeHBlY3RpbmcgVHlwZUVy
cm9yIGV4Y2VwdGlvbiBmcm9tIGluZGV4T2JqZWN0Lm9wZW5LZXlDdXJzb3IoMCwgJ2ludmFsaWQt
ZGlyZWN0aW9uJykKK1BBU1MgW1dvcmtlcl0gRXhjZXB0aW9uIHdhcyB0aHJvd24uCitQQVNTIFtX
b3JrZXJdIGluZGV4T2JqZWN0Lm9wZW5LZXlDdXJzb3IoMCwgJ2ludmFsaWQtZGlyZWN0aW9uJykg
dGhyZXcgVHlwZUVycm9yOiBUeXBlIGVycm9yCitbV29ya2VyXSAKIFtXb3JrZXJdIGluZGV4T2Jq
ZWN0Lm9wZW5LZXlDdXJzb3IoKQogUEFTUyBbV29ya2VyXSBldmVudC50YXJnZXQuc291cmNlIGlz
IGluZGV4T2JqZWN0CiBQQVNTIFtXb3JrZXJdIGV2ZW50LnRhcmdldC5yZXN1bHQgaXMgbm9uLW51
bGwuCkBAIC04Nyw2ICs5MywxMiBAQCBQQVNTIFtXb3JrZXJdIGV2ZW50LnRhcmdldC5yZXN1bHQu
a2V5IGlzICJ2YWx1ZTQiCiBQQVNTIFtXb3JrZXJdIGV2ZW50LnRhcmdldC5yZXN1bHQucHJpbWFy
eUtleSBpcyAia2V5NCIKIFtXb3JrZXJdIGV2ZW50LnRhcmdldC5yZXN1bHQuY29udGludWUoKQog
UEFTUyBbV29ya2VyXSBldmVudC50YXJnZXQucmVzdWx0IGlzIG51bGwKK1tXb3JrZXJdIAorW1dv
cmtlcl0gVmVyaWZ5IHRoYXQgc3BlY2lmeWluZyBhbiBpbnZhbGlkIGRpcmVjdGlvbiByYWlzZXMg
YW4gZXhjZXB0aW9uOgorW1dvcmtlcl0gRXhwZWN0aW5nIFR5cGVFcnJvciBleGNlcHRpb24gZnJv
bSBpbmRleE9iamVjdC5vcGVuQ3Vyc29yKDAsICdpbnZhbGlkLWRpcmVjdGlvbicpCitQQVNTIFtX
b3JrZXJdIEV4Y2VwdGlvbiB3YXMgdGhyb3duLgorUEFTUyBbV29ya2VyXSBpbmRleE9iamVjdC5v
cGVuQ3Vyc29yKDAsICdpbnZhbGlkLWRpcmVjdGlvbicpIHRocmV3IFR5cGVFcnJvcjogVHlwZSBl
cnJvcgorW1dvcmtlcl0gCiBbV29ya2VyXSBpbmRleE9iamVjdC5vcGVuQ3Vyc29yKCkKIFBBU1Mg
W1dvcmtlcl0gZXZlbnQudGFyZ2V0LnNvdXJjZSBpcyBpbmRleE9iamVjdAogUEFTUyBbV29ya2Vy
XSBldmVudC50YXJnZXQucmVzdWx0IGlzIG5vbi1udWxsLgpkaWZmIC0tZ2l0IGEvTGF5b3V0VGVz
dHMvc3RvcmFnZS9pbmRleGVkZGIvb2JqZWN0c3RvcmUtY3Vyc29yLWV4cGVjdGVkLnR4dCBiL0xh
eW91dFRlc3RzL3N0b3JhZ2UvaW5kZXhlZGRiL29iamVjdHN0b3JlLWN1cnNvci1leHBlY3RlZC50
eHQKaW5kZXggOGIzZWExMDAxODc0ZTlkZDlkMTljZjgzNDQ0NDMwYjdmZGYxMDI4Ny4uMjAxNWMw
NTUwZTcyMDA4NTYyYjNmYTg1Y2Q2NWUwMWM5ZDRlYTJmNCAxMDA2NDQKLS0tIGEvTGF5b3V0VGVz
dHMvc3RvcmFnZS9pbmRleGVkZGIvb2JqZWN0c3RvcmUtY3Vyc29yLWV4cGVjdGVkLnR4dAorKysg
Yi9MYXlvdXRUZXN0cy9zdG9yYWdlL2luZGV4ZWRkYi9vYmplY3RzdG9yZS1jdXJzb3ItZXhwZWN0
ZWQudHh0CkBAIC0xMSw3ICsxMSwxMyBAQCBkYi5zZXRWZXJzaW9uKCduZXcgdmVyc2lvbicpCiB0
cmFucyA9IGV2ZW50LnRhcmdldC5yZXN1bHQKIFBBU1MgdHJhbnMgaXMgbm9uLW51bGwuCiBEZWxl
dGVkIGFsbCBvYmplY3Qgc3RvcmVzLgotZGIuY3JlYXRlT2JqZWN0U3RvcmUoJ3NvbWVPYmplY3RT
dG9yZScpCitvYmplY3RTdG9yZSA9IGRiLmNyZWF0ZU9iamVjdFN0b3JlKCdzb21lT2JqZWN0U3Rv
cmUnKQorCitWZXJpZnkgdGhhdCBzcGVjaWZ5aW5nIGFuIGludmFsaWQgZGlyZWN0aW9uIHJhaXNl
cyBhbiBleGNlcHRpb246CitFeHBlY3RpbmcgVHlwZUVycm9yIGV4Y2VwdGlvbiBmcm9tIG9iamVj
dFN0b3JlLm9wZW5DdXJzb3IoMCwgJ2ludmFsaWQtZGlyZWN0aW9uJykKK1BBU1MgRXhjZXB0aW9u
IHdhcyB0aHJvd24uCitQQVNTIG9iamVjdFN0b3JlLm9wZW5DdXJzb3IoMCwgJ2ludmFsaWQtZGly
ZWN0aW9uJykgdGhyZXcgVHlwZUVycm9yOiBUeXBlIGVycm9yCisKIG9iamVjdFN0b3JlLmFkZCgn
JywgdGVzdERhdGFbbmV4dFRvQWRkXSkKIG9iamVjdFN0b3JlLmFkZCgnJywgdGVzdERhdGFbbmV4
dFRvQWRkXSkKIG9iamVjdFN0b3JlLmFkZCgnJywgdGVzdERhdGFbbmV4dFRvQWRkXSkKZGlmZiAt
LWdpdCBhL0xheW91dFRlc3RzL3N0b3JhZ2UvaW5kZXhlZGRiL3Jlc291cmNlcy9jdXJzb3ItYWR2
YW5jZS5qcyBiL0xheW91dFRlc3RzL3N0b3JhZ2UvaW5kZXhlZGRiL3Jlc291cmNlcy9jdXJzb3It
YWR2YW5jZS5qcwppbmRleCBmZjkxZGFhNGVmYzg4MGQ1Njc0NGE0YWRhYWU4NTc0NDYxOTRlOWJj
Li4zZjRmNTJkNWZhOWRmN2RlOTFlZjIwMTQyYzU2NTkxMjFmZmJlZWRhIDEwMDY0NAotLS0gYS9M
YXlvdXRUZXN0cy9zdG9yYWdlL2luZGV4ZWRkYi9yZXNvdXJjZXMvY3Vyc29yLWFkdmFuY2UuanMK
KysrIGIvTGF5b3V0VGVzdHMvc3RvcmFnZS9pbmRleGVkZGIvcmVzb3VyY2VzL2N1cnNvci1hZHZh
bmNlLmpzCkBAIC0zMjksNyArMzI5LDcgQEAgZnVuY3Rpb24gdGVzdEJhZEFkdmFuY2UoKQogICAg
IHsKICAgICAgICAgY3Vyc29yID0gZXZlbnQudGFyZ2V0LnJlc3VsdDsKIAotICAgICAgICBldmFs
QW5kRXhwZWN0RXhjZXB0aW9uKCJjdXJzb3IuYWR2YW5jZSgwKSIsICJJREJEYXRhYmFzZUV4Y2Vw
dGlvbi5UWVBFX0VSUiIpOworICAgICAgICBldmFsQW5kRXhwZWN0RXhjZXB0aW9uQ2xhc3MoImN1
cnNvci5hZHZhbmNlKDApIiwgIlR5cGVFcnJvciIpOwogICAgICAgICB0ZXN0RGVsZXRlKCk7CiAg
ICAgfQogICAgIHJlcXVlc3Qub25zdWNjZXNzID0gYWR2YW5jZUJhZGx5OwpkaWZmIC0tZ2l0IGEv
TGF5b3V0VGVzdHMvc3RvcmFnZS9pbmRleGVkZGIvcmVzb3VyY2VzL2luZGV4LWJhc2ljcy5qcyBi
L0xheW91dFRlc3RzL3N0b3JhZ2UvaW5kZXhlZGRiL3Jlc291cmNlcy9pbmRleC1iYXNpY3MuanMK
aW5kZXggYjE4ODcxYmYxZWMzZDM1NmFiMzM1NzY5ZTVkODAwN2YzMzQ5OTk0My4uYTQ5NjFmNmM1
Y2M3MTYwMTQ2OGQzZDJiOThhZWYzODZjOTE1MGM4NCAxMDA2NDQKLS0tIGEvTGF5b3V0VGVzdHMv
c3RvcmFnZS9pbmRleGVkZGIvcmVzb3VyY2VzL2luZGV4LWJhc2ljcy5qcworKysgYi9MYXlvdXRU
ZXN0cy9zdG9yYWdlL2luZGV4ZWRkYi9yZXNvdXJjZXMvaW5kZXgtYmFzaWNzLmpzCkBAIC0xNzQs
NiArMTc0LDExIEBAIGZ1bmN0aW9uIG9wZW5LZXlDdXJzb3IoZXZ0KQogICAgIGV2ZW50ID0gZXZ0
OwogICAgIHNob3VsZEJlRXF1YWxUb1N0cmluZygiZXZlbnQudGFyZ2V0LnJlc3VsdCIsICJrZXky
Iik7CiAKKyAgICBkZWJ1ZygiIik7CisgICAgZGVidWcoIlZlcmlmeSB0aGF0IHNwZWNpZnlpbmcg
YW4gaW52YWxpZCBkaXJlY3Rpb24gcmFpc2VzIGFuIGV4Y2VwdGlvbjoiKTsKKyAgICBldmFsQW5k
RXhwZWN0RXhjZXB0aW9uQ2xhc3MoImluZGV4T2JqZWN0Lm9wZW5LZXlDdXJzb3IoMCwgJ2ludmFs
aWQtZGlyZWN0aW9uJykiLCAiVHlwZUVycm9yIik7CisgICAgZGVidWcoIiIpOworCiAgICAgc2Vs
Zi5yZXF1ZXN0ID0gZXZhbEFuZExvZygiaW5kZXhPYmplY3Qub3BlbktleUN1cnNvcigpIik7CiAg
ICAgcmVxdWVzdC5vbnN1Y2Nlc3MgPSBjdXJzb3IxQ29udGludWU7CiAgICAgcmVxdWVzdC5vbmVy
cm9yID0gdW5leHBlY3RlZEVycm9yQ2FsbGJhY2s7CkBAIC0yMzMsNiArMjM4LDExIEBAIGZ1bmN0
aW9uIG9wZW5PYmplY3RDdXJzb3IoZXZ0KQogICAgIGV2ZW50ID0gZXZ0OwogICAgIHNob3VsZEJl
TnVsbCgiZXZlbnQudGFyZ2V0LnJlc3VsdCIpOwogCisgICAgZGVidWcoIiIpOworICAgIGRlYnVn
KCJWZXJpZnkgdGhhdCBzcGVjaWZ5aW5nIGFuIGludmFsaWQgZGlyZWN0aW9uIHJhaXNlcyBhbiBl
eGNlcHRpb246Iik7CisgICAgZXZhbEFuZEV4cGVjdEV4Y2VwdGlvbkNsYXNzKCJpbmRleE9iamVj
dC5vcGVuQ3Vyc29yKDAsICdpbnZhbGlkLWRpcmVjdGlvbicpIiwgIlR5cGVFcnJvciIpOworICAg
IGRlYnVnKCIiKTsKKwogICAgIHNlbGYucmVxdWVzdCA9IGV2YWxBbmRMb2coImluZGV4T2JqZWN0
Lm9wZW5DdXJzb3IoKSIpOwogICAgIHJlcXVlc3Qub25zdWNjZXNzID0gY3Vyc29yMkNvbnRpbnVl
OwogICAgIHJlcXVlc3Qub25lcnJvciA9IHVuZXhwZWN0ZWRFcnJvckNhbGxiYWNrOwpkaWZmIC0t
Z2l0IGEvTGF5b3V0VGVzdHMvc3RvcmFnZS9pbmRleGVkZGIvcmVzb3VyY2VzL29iamVjdHN0b3Jl
LWN1cnNvci5qcyBiL0xheW91dFRlc3RzL3N0b3JhZ2UvaW5kZXhlZGRiL3Jlc291cmNlcy9vYmpl
Y3RzdG9yZS1jdXJzb3IuanMKaW5kZXggOWIwNDM0ZGVkNTRjZDEyM2QwZTdjYTg5NzBlOTk4MzZk
MmQzMjgxMy4uZTE0ZmUyYzU3ZDg0NjgzMDIzNDYzZDY5NjM0YTJhZDBhN2I5MTEyMiAxMDA2NDQK
LS0tIGEvTGF5b3V0VGVzdHMvc3RvcmFnZS9pbmRleGVkZGIvcmVzb3VyY2VzL29iamVjdHN0b3Jl
LWN1cnNvci5qcworKysgYi9MYXlvdXRUZXN0cy9zdG9yYWdlL2luZGV4ZWRkYi9yZXNvdXJjZXMv
b2JqZWN0c3RvcmUtY3Vyc29yLmpzCkBAIC00MSw3ICs0MSwxMyBAQCBmdW5jdGlvbiBkZWxldGVF
eGlzdGluZygpCiAKICAgICBkZWxldGVBbGxPYmplY3RTdG9yZXMoZGIpOwogCi0gICAgc2VsZi5v
YmplY3RTdG9yZSA9IGV2YWxBbmRMb2coImRiLmNyZWF0ZU9iamVjdFN0b3JlKCdzb21lT2JqZWN0
U3RvcmUnKSIpOworICAgIGV2YWxBbmRMb2coIm9iamVjdFN0b3JlID0gZGIuY3JlYXRlT2JqZWN0
U3RvcmUoJ3NvbWVPYmplY3RTdG9yZScpIik7CisKKyAgICBkZWJ1ZygiIik7CisgICAgZGVidWco
IlZlcmlmeSB0aGF0IHNwZWNpZnlpbmcgYW4gaW52YWxpZCBkaXJlY3Rpb24gcmFpc2VzIGFuIGV4
Y2VwdGlvbjoiKTsKKyAgICBldmFsQW5kRXhwZWN0RXhjZXB0aW9uQ2xhc3MoIm9iamVjdFN0b3Jl
Lm9wZW5DdXJzb3IoMCwgJ2ludmFsaWQtZGlyZWN0aW9uJykiLCAiVHlwZUVycm9yIik7CisgICAg
ZGVidWcoIiIpOworCiAgICAgc2VsZi5uZXh0VG9BZGQgPSAwOwogICAgIGFkZERhdGEoKTsKIH0K
ZGlmZiAtLWdpdCBhL0xheW91dFRlc3RzL3N0b3JhZ2UvaW5kZXhlZGRiL3Jlc291cmNlcy90cmFu
c2FjdGlvbi1iYXNpY3MuanMgYi9MYXlvdXRUZXN0cy9zdG9yYWdlL2luZGV4ZWRkYi9yZXNvdXJj
ZXMvdHJhbnNhY3Rpb24tYmFzaWNzLmpzCmluZGV4IDYzM2VhOTk1YTcwY2Q2Yzg2OWMyZTg2NDAx
ODY4M2M1ZDhiNTQ0ZTAuLmY5MTUzMmJmMzg0YTkyNGQ5MWUyZWMwNDY3Y2JlNTMyOTBiOTM4NjMg
MTAwNjQ0Ci0tLSBhL0xheW91dFRlc3RzL3N0b3JhZ2UvaW5kZXhlZGRiL3Jlc291cmNlcy90cmFu
c2FjdGlvbi1iYXNpY3MuanMKKysrIGIvTGF5b3V0VGVzdHMvc3RvcmFnZS9pbmRleGVkZGIvcmVz
b3VyY2VzL3RyYW5zYWN0aW9uLWJhc2ljcy5qcwpAQCAtMjc5LDcgKzI3OSw3IEBAIGZ1bmN0aW9u
IHRlc3RJbnZhbGlkTW9kZSgpCiB7CiAgICAgZGVidWcoIiIpOwogICAgIGRlYnVnKCJWZXJpZnkg
dGhhdCBzcGVjaWZ5aW5nIGFuIGludmFsaWQgbW9kZSByYWlzZXMgYW4gZXhjZXB0aW9uIik7Ci0g
ICAgZXZhbEFuZEV4cGVjdEV4Y2VwdGlvbigiZGIudHJhbnNhY3Rpb24oWydzdG9yZU5hbWUnXSwg
J2xzYWtqZGYnKSIsICJJREJEYXRhYmFzZUV4Y2VwdGlvbi5UWVBFX0VSUiIsICInVHlwZUVycm9y
JyIpOworICAgIGV2YWxBbmRFeHBlY3RFeGNlcHRpb25DbGFzcygiZGIudHJhbnNhY3Rpb24oWydz
dG9yZU5hbWUnXSwgJ2xzYWtqZGYnKSIsICJUeXBlRXJyb3IiKTsKICAgICB0ZXN0RGVnZW5lcmF0
ZU5hbWVzKCk7CiB9CiAKZGlmZiAtLWdpdCBhL0xheW91dFRlc3RzL3N0b3JhZ2UvaW5kZXhlZGRi
L3RyYW5zYWN0aW9uLWJhc2ljcy1leHBlY3RlZC50eHQgYi9MYXlvdXRUZXN0cy9zdG9yYWdlL2lu
ZGV4ZWRkYi90cmFuc2FjdGlvbi1iYXNpY3MtZXhwZWN0ZWQudHh0CmluZGV4IGNhYWU4YjQ2ZGE1
ZmY0NGZmNDFjNTI1Njg3ZmMzZDhkMzdjNDVkNWQuLmUxZjdkODBiNzU0NDYzNGVjNWViOTZlMDI3
NjI5ODJiMGUwMGVlNzEgMTAwNjQ0Ci0tLSBhL0xheW91dFRlc3RzL3N0b3JhZ2UvaW5kZXhlZGRi
L3RyYW5zYWN0aW9uLWJhc2ljcy1leHBlY3RlZC50eHQKKysrIGIvTGF5b3V0VGVzdHMvc3RvcmFn
ZS9pbmRleGVkZGIvdHJhbnNhY3Rpb24tYmFzaWNzLWV4cGVjdGVkLnR4dApAQCAtMTk4LDEwICsx
OTgsOSBAQCBQQVNTIHRyYW5zYWN0aW9uLm9iamVjdFN0b3JlKCJzdG9yZU5hbWUiKSBpcyBub24t
bnVsbC4KIFBBU1MgYWxsIHN0b3JlcyBwcmVzZW50IGluIHRyYW5zYWN0aW9uCiAKIFZlcmlmeSB0
aGF0IHNwZWNpZnlpbmcgYW4gaW52YWxpZCBtb2RlIHJhaXNlcyBhbiBleGNlcHRpb24KLUV4cGVj
dGluZyBleGNlcHRpb24gZnJvbSBkYi50cmFuc2FjdGlvbihbJ3N0b3JlTmFtZSddLCAnbHNha2pk
ZicpCitFeHBlY3RpbmcgVHlwZUVycm9yIGV4Y2VwdGlvbiBmcm9tIGRiLnRyYW5zYWN0aW9uKFsn
c3RvcmVOYW1lJ10sICdsc2FramRmJykKIFBBU1MgRXhjZXB0aW9uIHdhcyB0aHJvd24uCi1QQVNT
IGNvZGUgaXMgSURCRGF0YWJhc2VFeGNlcHRpb24uVFlQRV9FUlIKLVBBU1MgZW5hbWUgaXMgJ1R5
cGVFcnJvcicKK1BBU1MgZGIudHJhbnNhY3Rpb24oWydzdG9yZU5hbWUnXSwgJ2xzYWtqZGYnKSB0
aHJldyBUeXBlRXJyb3I6IFR5cGUgZXJyb3IKIAogVGVzdCB0aGF0IG51bGwgYW5kIHVuZGVmaW5l
ZCBhcmUgdHJlYXRlZCBhcyBzdHJpbmdzCiBFeHBlY3RpbmcgZXhjZXB0aW9uIGZyb20gZGIudHJh
bnNhY3Rpb24obnVsbCkK
</data>

          </attachment>
      

    </bug>

</bugzilla>