<?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>149229</bug_id>
          
          <creation_ts>2015-09-16 13:19:20 -0700</creation_ts>
          <short_desc>Have window.indexedDB.deleteDatabase return an IDBOpenDBRequest</short_desc>
          <delta_ts>2015-09-16 22:25:07 -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>WebCore Misc.</component>
          <version>WebKit 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>149117</blocked>
          <everconfirmed>1</everconfirmed>
          <reporter name="Brady Eidson">beidson</reporter>
          <assigned_to name="Brady Eidson">beidson</assigned_to>
          <cc>achristensen</cc>
    
    <cc>rniwa</cc>
          

      

      

      

          <comment_sort_order>oldest_to_newest</comment_sort_order>  
          <long_desc isprivate="0" >
    <commentid>1126442</commentid>
    <comment_count>0</comment_count>
    <who name="Brady Eidson">beidson</who>
    <bug_when>2015-09-16 13:19:20 -0700</bug_when>
    <thetext>Have window.indexedDB.deleteDatabase return an IDBOpenDBRequest

The request will be non-functional, and a database will never actually be deleted.

But an instance of the object will exist.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1126444</commentid>
    <comment_count>1</comment_count>
      <attachid>261322</attachid>
    <who name="Brady Eidson">beidson</who>
    <bug_when>2015-09-16 13:25:44 -0700</bug_when>
    <thetext>Created attachment 261322
Patch v1</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1126445</commentid>
    <comment_count>2</comment_count>
      <attachid>261322</attachid>
    <who name="Alex Christensen">achristensen</who>
    <bug_when>2015-09-16 13:35:33 -0700</bug_when>
    <thetext>Comment on attachment 261322
Patch v1

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

looks mostly good.  Please upload another patch.

&gt; Source/WebCore/Modules/indexeddb/client/IDBFactoryImpl.cpp:71
&gt; +PassRefPtr&lt;WebCore::IDBRequest&gt; IDBFactory::getDatabaseNames(ScriptExecutionContext*, ExceptionCode&amp;)

Just return a RefPtr, no PassRefPtr.  Here and elsewhere in patch.  We&apos;re trying to get rid of PassRefPtr.

&gt; Source/WebCore/Modules/indexeddb/client/IDBFactoryImpl.cpp:86
&gt; +PassRefPtr&lt;WebCore::IDBOpenDBRequest&gt; IDBFactory::deleteDatabase(ScriptExecutionContext* context, const String&amp; name, ExceptionCode&amp; ec)

can context be nullptr?

&gt; Source/WebCore/Modules/indexeddb/client/IDBRequestImpl.cpp:68
&gt; +    static WTF::NeverDestroyed&lt;String&gt; readyState;

Will there only be one readyState for all IDBRequests?</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1126447</commentid>
    <comment_count>3</comment_count>
    <who name="Brady Eidson">beidson</who>
    <bug_when>2015-09-16 13:43:00 -0700</bug_when>
    <thetext>(In reply to comment #2)
&gt; Comment on attachment 261322 [details]
&gt; Patch v1
&gt; 
&gt; View in context:
&gt; https://bugs.webkit.org/attachment.cgi?id=261322&amp;action=review
&gt; 
&gt; looks mostly good.  Please upload another patch.
&gt; 
&gt; &gt; Source/WebCore/Modules/indexeddb/client/IDBFactoryImpl.cpp:71
&gt; &gt; +PassRefPtr&lt;WebCore::IDBRequest&gt; IDBFactory::getDatabaseNames(ScriptExecutionContext*, ExceptionCode&amp;)
&gt; 
&gt; Just return a RefPtr, no PassRefPtr.  Here and elsewhere in patch.  We&apos;re
&gt; trying to get rid of PassRefPtr.

This is a new concrete implementation of the IDB classes which has plenty of PassRefPtr usage. The LegacyIDB* implementation also uses it.

My plan is to finish the new implementation, remove Legacy, then give the IDL implementation layer a nice cleanup.

&gt; 
&gt; &gt; Source/WebCore/Modules/indexeddb/client/IDBFactoryImpl.cpp:86
&gt; &gt; +PassRefPtr&lt;WebCore::IDBOpenDBRequest&gt; IDBFactory::deleteDatabase(ScriptExecutionContext* context, const String&amp; name, ExceptionCode&amp; ec)
&gt; 
&gt; can context be nullptr?

Nope. Man, the bindings generator should pass in references...

&gt; &gt; Source/WebCore/Modules/indexeddb/client/IDBRequestImpl.cpp:68
&gt; &gt; +    static WTF::NeverDestroyed&lt;String&gt; readyState;
&gt; 
&gt; Will there only be one readyState for all IDBRequests?

Right now, yes. In the future, this method will return one of 3 static strings. But the purpose of this patch (and handfuls of followups coming soon) is to just start filling in code, getting things building, etc etc.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1126448</commentid>
    <comment_count>4</comment_count>
    <who name="Brady Eidson">beidson</who>
    <bug_when>2015-09-16 13:45:59 -0700</bug_when>
    <thetext>https://trac.webkit.org/changeset/189879</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1126608</commentid>
    <comment_count>5</comment_count>
    <who name="Ryosuke Niwa">rniwa</who>
    <bug_when>2015-09-16 22:23:48 -0700</bug_when>
    <thetext>Rebaselined js/dom/global-constructors-attributes-idb.html for WK1 in https://trac.webkit.org/changeset/189904.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1126610</commentid>
    <comment_count>6</comment_count>
    <who name="Alexey Proskuryakov">ap</who>
    <bug_when>2015-09-16 22:25:07 -0700</bug_when>
    <thetext>Please do wait for EWS, it&apos;s totally worth it.</thetext>
  </long_desc>
      
          <attachment
              isobsolete="0"
              ispatch="1"
              isprivate="0"
          >
            <attachid>261322</attachid>
            <date>2015-09-16 13:25:44 -0700</date>
            <delta_ts>2015-09-16 13:41:53 -0700</delta_ts>
            <desc>Patch v1</desc>
            <filename>patch</filename>
            <type>text/plain</type>
            <size>41415</size>
            <attacher name="Brady Eidson">beidson</attacher>
            
              <data encoding="base64">ZGlmZiAtLWdpdCBhL0xheW91dFRlc3RzL0NoYW5nZUxvZyBiL0xheW91dFRlc3RzL0NoYW5nZUxv
ZwppbmRleCAzYzhhZThjLi41MTVlOGIzIDEwMDY0NAotLS0gYS9MYXlvdXRUZXN0cy9DaGFuZ2VM
b2cKKysrIGIvTGF5b3V0VGVzdHMvQ2hhbmdlTG9nCkBAIC0xLDMgKzEsMTcgQEAKKzIwMTUtMDkt
MTYgIEJyYWR5IEVpZHNvbiAgPGJlaWRzb25AYXBwbGUuY29tPgorCisgICAgICAgIEhhdmUgd2lu
ZG93LmluZGV4ZWREQi5kZWxldGVEYXRhYmFzZSByZXR1cm4gYW4gSURCT3BlbkRCUmVxdWVzdC4K
KyAgICAgICAgaHR0cHM6Ly9idWdzLndlYmtpdC5vcmcvc2hvd19idWcuY2dpP2lkPTE0OTIyOQor
CisgICAgICAgIFJldmlld2VkIGJ5IE5PQk9EWSAoT09QUyEpLgorCisgICAgICAgICogcGxhdGZv
cm0vbWFjLXdrMS9UZXN0RXhwZWN0YXRpb25zOgorICAgICAgICAqIHBsYXRmb3JtL3drMi9UZXN0
RXhwZWN0YXRpb25zOgorICAgICAgICAqIHN0b3JhZ2UvaW5kZXhlZGRiL21vZGVybi9kZWxldGVk
YXRhYmFzZS1udWxsLW5hbWUtZXhjZXB0aW9uLWV4cGVjdGVkLnR4dDogQWRkZWQuCisgICAgICAg
ICogc3RvcmFnZS9pbmRleGVkZGIvbW9kZXJuL2RlbGV0ZWRhdGFiYXNlLW51bGwtbmFtZS1leGNl
cHRpb24uaHRtbDogQWRkZWQuCisgICAgICAgICogc3RvcmFnZS9pbmRleGVkZGIvbW9kZXJuL2Rl
bGV0ZWRhdGFiYXNlLXJlcXVlc3QtZXhwZWN0ZWQudHh0OiBBZGRlZC4KKyAgICAgICAgKiBzdG9y
YWdlL2luZGV4ZWRkYi9tb2Rlcm4vZGVsZXRlZGF0YWJhc2UtcmVxdWVzdC5odG1sOiBBZGRlZC4K
KwogMjAxNS0wOS0xNiAgQ2hyaXMgRmxlaXphY2ggIDxjZmxlaXphY2hAYXBwbGUuY29tPgogCiAg
ICAgICAgIEFYOiBObyBWTyB0eXBpbmcgZmVlZGJhY2sgaW4gc29tZSB0ZXh0IGZpZWxkcwpkaWZm
IC0tZ2l0IGEvTGF5b3V0VGVzdHMvcGxhdGZvcm0vbWFjLXdrMS9UZXN0RXhwZWN0YXRpb25zIGIv
TGF5b3V0VGVzdHMvcGxhdGZvcm0vbWFjLXdrMS9UZXN0RXhwZWN0YXRpb25zCmluZGV4IDY3ZTJk
NTAuLjdmYTcwMzYgMTAwNjQ0Ci0tLSBhL0xheW91dFRlc3RzL3BsYXRmb3JtL21hYy13azEvVGVz
dEV4cGVjdGF0aW9ucworKysgYi9MYXlvdXRUZXN0cy9wbGF0Zm9ybS9tYWMtd2sxL1Rlc3RFeHBl
Y3RhdGlvbnMKQEAgLTU0LDcgKzU0LDcgQEAgd2Via2l0Lm9yZy9iLzE0NjYyMiBbIFlvc2VtaXRl
IERlYnVnIF0gd2ViZ2wvMS4wLjIvY29uZm9ybWFuY2UvbW9yZS9mdW5jdGlvbnMvY28KICMjIyMj
IyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMKICMjIyBTVEFSVCBPRiAoMikgRmFp
bHVyZXMgd2l0aG91dCBidWcgcmVwb3J0cwogCi0jIEluZGV4ZWREQiBpcyBub3QgeWV0IGVuYWJs
ZWQgaW4gTWFjIFdLMQorIyBMZWdhY3kgSW5kZXhlZERCIHdpbGwgbmV2ZXIgYmUgZW5hYmxlZCBp
biBNYWMgV0sxLgogc3RvcmFnZS9pbmRleGVkZGIKIGltcG9ydGVkL3czYy9pbmRleGVkZGIKIGZh
c3QvaGlzdG9yeS9wYWdlLWNhY2hlLWluZGV4ZWQtY2xvc2VkLWRiLmh0bWwKQEAgLTY4LDggKzY4
LDggQEAgY3J5cHRvL3N1YnRsZS9yc2EtaW5kZXhlZGRiLmh0bWwKIGNyeXB0by9zdWJ0bGUvcnNh
LWluZGV4ZWRkYi1ub24tZXhwb3J0YWJsZS5odG1sCiBpbnNwZWN0b3IvaW5kZXhlZGRiCiAKLSMg
QnV0IHNpbmNlIGl0IGlzIGRpc2FibGVkIGF0IHJ1bnRpbWUsIHdlIHNob3VsZCBtYWtlIHN1cmUg
aXQgaXMgY29ycmVjdGx5IGRpc2FibGVkCi1zdG9yYWdlL2luZGV4ZWRkYi9wcm9wZXJ0aWVzLWRp
c2FibGVkLWF0LXJ1bnRpbWUuaHRtbCBbIFBhc3MgXQorIyBCdXQgTW9kZXJuIEluZGV4ZWREQiBp
cy4KK3N0b3JhZ2UvaW5kZXhlZGRiL21vZGVybiBbIFBhc3MgXQogCiAjIEZhaWxzIHdpdGggV2Vi
S2l0MSBvbmx5LgogZWRpdGluZy9zZWN1cmUtaW5wdXQvcmVzZXQtc3RhdGUtb24tbmF2aWdhdGlv
bi5odG1sIFsgRmFpbHVyZSBdCmRpZmYgLS1naXQgYS9MYXlvdXRUZXN0cy9wbGF0Zm9ybS93azIv
VGVzdEV4cGVjdGF0aW9ucyBiL0xheW91dFRlc3RzL3BsYXRmb3JtL3drMi9UZXN0RXhwZWN0YXRp
b25zCmluZGV4IGY2YmNkNjIuLmZjYTE4ZWYgMTAwNjQ0Ci0tLSBhL0xheW91dFRlc3RzL3BsYXRm
b3JtL3drMi9UZXN0RXhwZWN0YXRpb25zCisrKyBiL0xheW91dFRlc3RzL3BsYXRmb3JtL3drMi9U
ZXN0RXhwZWN0YXRpb25zCkBAIC01NzksNiArNTc5LDkgQEAgaW1wb3J0ZWQvdzNjL2luZGV4ZWRk
Yi9pZGJvYmplY3RzdG9yZV9kZWxldGVJbmRleC5odG0gWyBQYXNzIEZhaWx1cmUgXQogaW1wb3J0
ZWQvdzNjL2luZGV4ZWRkYi9pZGJjdXJzb3ItZGlyZWN0aW9uLmh0bSBbIFBhc3MgRmFpbHVyZSBd
CiBpbXBvcnRlZC93M2MvaW5kZXhlZGRiL2lkYmN1cnNvci1rZXkuaHRtIFsgUGFzcyBGYWlsdXJl
IF0KIAorIyBEb24ndCBydW4gTW9kZXJuIElEQiB0ZXN0cyB3aGlsZSB0aGUgZmVhdHVyZSBpcyB1
bmRlciBkZXZlbG9wbWVudAorc3RvcmFnZS9pbmRleGVkZGIvbW9kZXJuIFsgU2tpcCBdCisKICMj
IyBFTkQgT0YgKDMpIFVuY2xhc3NpZmllZCBmYWlsdXJlcwogIyMjIyMjIyMjIyMjIyMjIyMjIyMj
IyMjIyMjIyMjIyMjIyMjIyMjIwogCmRpZmYgLS1naXQgYS9MYXlvdXRUZXN0cy9zdG9yYWdlL2lu
ZGV4ZWRkYi9tb2Rlcm4vZGVsZXRlZGF0YWJhc2UtbnVsbC1uYW1lLWV4Y2VwdGlvbi1leHBlY3Rl
ZC50eHQgYi9MYXlvdXRUZXN0cy9zdG9yYWdlL2luZGV4ZWRkYi9tb2Rlcm4vZGVsZXRlZGF0YWJh
c2UtbnVsbC1uYW1lLWV4Y2VwdGlvbi1leHBlY3RlZC50eHQKbmV3IGZpbGUgbW9kZSAxMDA2NDQK
aW5kZXggMDAwMDAwMC4uYzEyNGVhOAotLS0gL2Rldi9udWxsCisrKyBiL0xheW91dFRlc3RzL3N0
b3JhZ2UvaW5kZXhlZGRiL21vZGVybi9kZWxldGVkYXRhYmFzZS1udWxsLW5hbWUtZXhjZXB0aW9u
LWV4cGVjdGVkLnR4dApAQCAtMCwwICsxLDMgQEAKK0FMRVJUOiBUeXBlRXJyb3I6IE5vdCBlbm91
Z2ggYXJndW1lbnRzCitBTEVSVDogRG9uZQorVGhpcyB0ZXN0IGNhbGxzIGRlbGV0ZURhdGFiYXNl
IG9uIHdpbmRvdy5pbmRleGVkREIgd2l0aCBhIG51bGwgZGF0YWJhc2UgbmFtZSwgbWFraW5nIHN1
cmUgdGhlcmUgaXMgYW4gZXhjZXB0aW9uLgpkaWZmIC0tZ2l0IGEvTGF5b3V0VGVzdHMvc3RvcmFn
ZS9pbmRleGVkZGIvbW9kZXJuL2RlbGV0ZWRhdGFiYXNlLW51bGwtbmFtZS1leGNlcHRpb24uaHRt
bCBiL0xheW91dFRlc3RzL3N0b3JhZ2UvaW5kZXhlZGRiL21vZGVybi9kZWxldGVkYXRhYmFzZS1u
dWxsLW5hbWUtZXhjZXB0aW9uLmh0bWwKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAw
MC4uNzZmOWRkYgotLS0gL2Rldi9udWxsCisrKyBiL0xheW91dFRlc3RzL3N0b3JhZ2UvaW5kZXhl
ZGRiL21vZGVybi9kZWxldGVkYXRhYmFzZS1udWxsLW5hbWUtZXhjZXB0aW9uLmh0bWwKQEAgLTAs
MCArMSwyMyBAQAorVGhpcyB0ZXN0IGNhbGxzIGRlbGV0ZURhdGFiYXNlIG9uIHdpbmRvdy5pbmRl
eGVkREIgd2l0aCBhIG51bGwgZGF0YWJhc2UgbmFtZSwgbWFraW5nIHN1cmUgdGhlcmUgaXMgYW4g
ZXhjZXB0aW9uLgorPHNjcmlwdD4KKworaWYgKHdpbmRvdy50ZXN0UnVubmVyKSB7CisgICAgdGVz
dFJ1bm5lci53YWl0VW50aWxEb25lKCk7CisgICAgdGVzdFJ1bm5lci5kdW1wQXNUZXh0KCk7Cit9
CisKK2Z1bmN0aW9uIGRvbmUoKQoreworICAgIGFsZXJ0KCJEb25lIik7CisgICAgaWYgKHdpbmRv
dy50ZXN0UnVubmVyKQorICAgICAgICB0ZXN0UnVubmVyLm5vdGlmeURvbmUoKTsKK30KKwordHJ5
IHsKKwl2YXIgcmVxdWVzdCA9IHdpbmRvdy5pbmRleGVkREIuZGVsZXRlRGF0YWJhc2UoKTsKK30g
Y2F0Y2ggKGUpIHsKKwlhbGVydChlKTsKK30KKworZG9uZSgpOworPC9zY3JpcHQ+CmRpZmYgLS1n
aXQgYS9MYXlvdXRUZXN0cy9zdG9yYWdlL2luZGV4ZWRkYi9tb2Rlcm4vZGVsZXRlZGF0YWJhc2Ut
cmVxdWVzdC1leHBlY3RlZC50eHQgYi9MYXlvdXRUZXN0cy9zdG9yYWdlL2luZGV4ZWRkYi9tb2Rl
cm4vZGVsZXRlZGF0YWJhc2UtcmVxdWVzdC1leHBlY3RlZC50eHQKbmV3IGZpbGUgbW9kZSAxMDA2
NDQKaW5kZXggMDAwMDAwMC4uNWM2ZmVjYgotLS0gL2Rldi9udWxsCisrKyBiL0xheW91dFRlc3Rz
L3N0b3JhZ2UvaW5kZXhlZGRiL21vZGVybi9kZWxldGVkYXRhYmFzZS1yZXF1ZXN0LWV4cGVjdGVk
LnR4dApAQCAtMCwwICsxLDMgQEAKK0FMRVJUOiBbb2JqZWN0IElEQk9wZW5EQlJlcXVlc3RdCitB
TEVSVDogRG9uZQorVGhpcyB0ZXN0IGNhbGxzIGRlbGV0ZURhdGFiYXNlIG9uIHdpbmRvdy5pbmRl
eGVkREIgYW5kIHZlcmlmaWVzIHRoYXQgYW4gSURCT3BlbkRCUmVxdWVzdCBvYmplY3QgaXMgcmV0
dXJuZWQuCmRpZmYgLS1naXQgYS9MYXlvdXRUZXN0cy9zdG9yYWdlL2luZGV4ZWRkYi9tb2Rlcm4v
ZGVsZXRlZGF0YWJhc2UtcmVxdWVzdC5odG1sIGIvTGF5b3V0VGVzdHMvc3RvcmFnZS9pbmRleGVk
ZGIvbW9kZXJuL2RlbGV0ZWRhdGFiYXNlLXJlcXVlc3QuaHRtbApuZXcgZmlsZSBtb2RlIDEwMDY0
NAppbmRleCAwMDAwMDAwLi5iMTAzNTVhCi0tLSAvZGV2L251bGwKKysrIGIvTGF5b3V0VGVzdHMv
c3RvcmFnZS9pbmRleGVkZGIvbW9kZXJuL2RlbGV0ZWRhdGFiYXNlLXJlcXVlc3QuaHRtbApAQCAt
MCwwICsxLDIwIEBACitUaGlzIHRlc3QgY2FsbHMgZGVsZXRlRGF0YWJhc2Ugb24gd2luZG93Lmlu
ZGV4ZWREQiBhbmQgdmVyaWZpZXMgdGhhdCBhbiBJREJPcGVuREJSZXF1ZXN0IG9iamVjdCBpcyBy
ZXR1cm5lZC4KKzxzY3JpcHQ+CisKK2lmICh3aW5kb3cudGVzdFJ1bm5lcikgeworICAgIHRlc3RS
dW5uZXIud2FpdFVudGlsRG9uZSgpOworICAgIHRlc3RSdW5uZXIuZHVtcEFzVGV4dCgpOworfQor
CitmdW5jdGlvbiBkb25lKCkKK3sKKyAgICBhbGVydCgiRG9uZSIpOworICAgIGlmICh3aW5kb3cu
dGVzdFJ1bm5lcikKKyAgICAgICAgdGVzdFJ1bm5lci5ub3RpZnlEb25lKCk7Cit9CisKK3ZhciBy
ZXF1ZXN0ID0gd2luZG93LmluZGV4ZWREQi5kZWxldGVEYXRhYmFzZSgiVGVzdERhdGFiYXNlIik7
CithbGVydChyZXF1ZXN0KTsKKworZG9uZSgpOworPC9zY3JpcHQ+CmRpZmYgLS1naXQgYS9Tb3Vy
Y2UvV2ViQ29yZS9DTWFrZUxpc3RzLnR4dCBiL1NvdXJjZS9XZWJDb3JlL0NNYWtlTGlzdHMudHh0
CmluZGV4IGVmMTZiN2UuLjEzM2RlNGMgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL0NNYWtl
TGlzdHMudHh0CisrKyBiL1NvdXJjZS9XZWJDb3JlL0NNYWtlTGlzdHMudHh0CkBAIC04NTAsNiAr
ODUwLDcgQEAgc2V0KFdlYkNvcmVfU09VUkNFUwogICAgIE1vZHVsZXMvaW5kZXhlZGRiL0lEQkN1
cnNvcldpdGhWYWx1ZS5jcHAKICAgICBNb2R1bGVzL2luZGV4ZWRkYi9JREJEYXRhYmFzZS5jcHAK
ICAgICBNb2R1bGVzL2luZGV4ZWRkYi9JREJEYXRhYmFzZUV4Y2VwdGlvbi5jcHAKKyAgICBNb2R1
bGVzL2luZGV4ZWRkYi9JREJEYXRhYmFzZUlkZW50aWZpZXIuY3BwCiAgICAgTW9kdWxlcy9pbmRl
eGVkZGIvSURCRGF0YWJhc2VNZXRhZGF0YS5jcHAKICAgICBNb2R1bGVzL2luZGV4ZWRkYi9JREJF
dmVudERpc3BhdGNoZXIuY3BwCiAgICAgTW9kdWxlcy9pbmRleGVkZGIvSURCRmFjdG9yeS5jcHAK
QEAgLTg2Nyw2ICs4NjgsOCBAQCBzZXQoV2ViQ29yZV9TT1VSQ0VTCiAgICAgTW9kdWxlcy9pbmRl
eGVkZGIvV29ya2VyR2xvYmFsU2NvcGVJbmRleGVkRGF0YWJhc2UuY3BwCiAKICAgICBNb2R1bGVz
L2luZGV4ZWRkYi9jbGllbnQvSURCRmFjdG9yeUltcGwuY3BwCisgICAgTW9kdWxlcy9pbmRleGVk
ZGIvY2xpZW50L0lEQk9wZW5EQlJlcXVlc3RJbXBsLmNwcAorICAgIE1vZHVsZXMvaW5kZXhlZGRi
L2NsaWVudC9JREJSZXF1ZXN0SW1wbC5jcHAKIAogICAgIE1vZHVsZXMvaW5kZXhlZGRiL2xlZ2Fj
eS9JREJDdXJzb3JCYWNrZW5kLmNwcAogICAgIE1vZHVsZXMvaW5kZXhlZGRiL2xlZ2FjeS9JREJD
dXJzb3JCYWNrZW5kT3BlcmF0aW9ucy5jcHAKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL0No
YW5nZUxvZyBiL1NvdXJjZS9XZWJDb3JlL0NoYW5nZUxvZwppbmRleCAyZGY4ZGRiLi40MWI3NzVh
IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9DaGFuZ2VMb2cKKysrIGIvU291cmNlL1dlYkNv
cmUvQ2hhbmdlTG9nCkBAIC0xLDUgKzEsNTggQEAKIDIwMTUtMDktMTYgIEJyYWR5IEVpZHNvbiAg
PGJlaWRzb25AYXBwbGUuY29tPgogCisgICAgICAgIEhhdmUgd2luZG93LmluZGV4ZWREQi5kZWxl
dGVEYXRhYmFzZSByZXR1cm4gYW4gSURCT3BlbkRCUmVxdWVzdC4KKyAgICAgICAgaHR0cHM6Ly9i
dWdzLndlYmtpdC5vcmcvc2hvd19idWcuY2dpP2lkPTE0OTIyOQorCisgICAgICAgIFJldmlld2Vk
IGJ5IE5PQk9EWSAoT09QUyEpLgorCisgICAgICAgIFRlc3Q6IHN0b3JhZ2UvaW5kZXhlZGRiL21v
ZGVybi9kZWxldGVkYXRhYmFzZS1yZXF1ZXN0Lmh0bWwKKyAgICAgICAgICAgICAgc3RvcmFnZS9p
bmRleGVkZGIvbW9kZXJuL2RlbGV0ZWRhdGFiYXNlLW51bGwtbmFtZS1leGNlcHRpb24uaHRtbAor
CisgICAgICAgICogQ01ha2VMaXN0cy50eHQ6CisgICAgICAgICogV2ViQ29yZS54Y29kZXByb2ov
cHJvamVjdC5wYnhwcm9qOgorCisgICAgICAgICogTW9kdWxlcy9pbmRleGVkZGIvSURCRGF0YWJh
c2VJZGVudGlmaWVyLmNwcDogQWRkZWQuCisgICAgICAgIChXZWJDb3JlOjpJREJEYXRhYmFzZUlk
ZW50aWZpZXI6OklEQkRhdGFiYXNlSWRlbnRpZmllcik6CisgICAgICAgICogTW9kdWxlcy9pbmRl
eGVkZGIvSURCRGF0YWJhc2VJZGVudGlmaWVyLmg6IEFkZGVkLgorICAgICAgICAoV2ViQ29yZTo6
SURCRGF0YWJhc2VJZGVudGlmaWVyOjpJREJEYXRhYmFzZUlkZW50aWZpZXIpOgorICAgICAgICAo
V2ViQ29yZTo6SURCRGF0YWJhc2VJZGVudGlmaWVyOjppc0hhc2hUYWJsZURlbGV0ZWRWYWx1ZSk6
CisgICAgICAgIChXZWJDb3JlOjpJREJEYXRhYmFzZUlkZW50aWZpZXI6Omhhc2gpOgorICAgICAg
ICAoV2ViQ29yZTo6SURCRGF0YWJhc2VJZGVudGlmaWVyOjppc1ZhbGlkKToKKyAgICAgICAgKFdl
YkNvcmU6OklEQkRhdGFiYXNlSWRlbnRpZmllcjo6b3BlcmF0b3I9PSk6CisgICAgICAgIChXZWJD
b3JlOjpJREJEYXRhYmFzZUlkZW50aWZpZXI6OmRhdGFiYXNlTmFtZSk6CisgICAgICAgIChXZWJD
b3JlOjpJREJEYXRhYmFzZUlkZW50aWZpZXJIYXNoOjpoYXNoKToKKyAgICAgICAgKFdlYkNvcmU6
OklEQkRhdGFiYXNlSWRlbnRpZmllckhhc2g6OmVxdWFsKToKKyAgICAgICAgKFdlYkNvcmU6OklE
QkRhdGFiYXNlSWRlbnRpZmllckhhc2hUcmFpdHM6OmlzRW1wdHlWYWx1ZSk6CisKKyAgICAgICAg
KiBNb2R1bGVzL2luZGV4ZWRkYi9jbGllbnQvSURCRmFjdG9yeUltcGwuY3BwOgorICAgICAgICAo
V2ViQ29yZTo6SURCQ2xpZW50OjpzaG91bGRUaHJvd1NlY3VyaXR5RXhjZXB0aW9uKToKKyAgICAg
ICAgKFdlYkNvcmU6OklEQkNsaWVudDo6SURCRmFjdG9yeTo6Z2V0RGF0YWJhc2VOYW1lcyk6Cisg
ICAgICAgIChXZWJDb3JlOjpJREJDbGllbnQ6OklEQkZhY3Rvcnk6Om9wZW4pOgorICAgICAgICAo
V2ViQ29yZTo6SURCQ2xpZW50OjpJREJGYWN0b3J5OjpkZWxldGVEYXRhYmFzZSk6CisgICAgICAg
ICogTW9kdWxlcy9pbmRleGVkZGIvY2xpZW50L0lEQkZhY3RvcnlJbXBsLmg6CisKKyAgICAgICAg
KiBNb2R1bGVzL2luZGV4ZWRkYi9jbGllbnQvSURCT3BlbkRCUmVxdWVzdEltcGwuY3BwOiBDb3Bp
ZWQgZnJvbSBTb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL2luZGV4ZWRkYi9jbGllbnQvSURCRmFjdG9y
eUltcGwuY3BwLgorICAgICAgICAoV2ViQ29yZTo6SURCQ2xpZW50OjpJREJPcGVuREJSZXF1ZXN0
OjpJREJPcGVuREJSZXF1ZXN0KToKKyAgICAgICAgKiBNb2R1bGVzL2luZGV4ZWRkYi9jbGllbnQv
SURCT3BlbkRCUmVxdWVzdEltcGwuaDogQ29waWVkIGZyb20gU291cmNlL1dlYkNvcmUvTW9kdWxl
cy9pbmRleGVkZGIvY2xpZW50L0lEQkZhY3RvcnlJbXBsLmNwcC4KKyAgICAgICAgKFdlYkNvcmU6
OklEQkNsaWVudDo6SURCT3BlbkRCUmVxdWVzdDo6Y3JlYXRlKToKKworICAgICAgICAqIE1vZHVs
ZXMvaW5kZXhlZGRiL2NsaWVudC9JREJSZXF1ZXN0SW1wbC5jcHA6IENvcGllZCBmcm9tIFNvdXJj
ZS9XZWJDb3JlL01vZHVsZXMvaW5kZXhlZGRiL2NsaWVudC9JREJGYWN0b3J5SW1wbC5jcHAuCisg
ICAgICAgIChXZWJDb3JlOjpJREJDbGllbnQ6OklEQlJlcXVlc3Q6OklEQlJlcXVlc3QpOgorICAg
ICAgICAoV2ViQ29yZTo6SURCQ2xpZW50OjpJREJSZXF1ZXN0OjpyZXN1bHQpOgorICAgICAgICAo
V2ViQ29yZTo6SURCQ2xpZW50OjpJREJSZXF1ZXN0OjplcnJvckNvZGUpOgorICAgICAgICAoV2Vi
Q29yZTo6SURCQ2xpZW50OjpJREJSZXF1ZXN0OjplcnJvcik6CisgICAgICAgIChXZWJDb3JlOjpJ
REJDbGllbnQ6OklEQlJlcXVlc3Q6OnNvdXJjZSk6CisgICAgICAgIChXZWJDb3JlOjpJREJDbGll
bnQ6OklEQlJlcXVlc3Q6OnRyYW5zYWN0aW9uKToKKyAgICAgICAgKFdlYkNvcmU6OklEQkNsaWVu
dDo6SURCUmVxdWVzdDo6cmVhZHlTdGF0ZSk6CisgICAgICAgIChXZWJDb3JlOjpJREJDbGllbnQ6
OklEQlJlcXVlc3Q6OmV2ZW50VGFyZ2V0SW50ZXJmYWNlKToKKyAgICAgICAgKFdlYkNvcmU6OklE
QkNsaWVudDo6SURCUmVxdWVzdDo6YWN0aXZlRE9NT2JqZWN0TmFtZSk6CisgICAgICAgIChXZWJD
b3JlOjpJREJDbGllbnQ6OklEQlJlcXVlc3Q6OmNhblN1c3BlbmRGb3JQYWdlQ2FjaGUpOgorICAg
ICAgICAqIE1vZHVsZXMvaW5kZXhlZGRiL2NsaWVudC9JREJSZXF1ZXN0SW1wbC5oOiBDb3BpZWQg
ZnJvbSBTb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL2luZGV4ZWRkYi9jbGllbnQvSURCRmFjdG9yeUlt
cGwuaC4KKworICAgICAgICAqIHBsYXRmb3JtL0xvZ2dpbmcuaDoKKworMjAxNS0wOS0xNiAgQnJh
ZHkgRWlkc29uICA8YmVpZHNvbkBhcHBsZS5jb20+CisKICAgICAgICAgUmVtb3ZlIHN0cmF5IGxv
Z2dpbmcgc3RyaW5nIG1pc3Rha2VubHkgbGVmdCBpbiByMTg5NzQ2LgogCiAgICAgICAgICogTW9k
dWxlcy9pbmRleGVkZGIvbGVnYWN5L0xlZ2FjeUZhY3RvcnkuY3BwOgpkaWZmIC0tZ2l0IGEvU291
cmNlL1dlYkNvcmUvTW9kdWxlcy9pbmRleGVkZGIvSURCRGF0YWJhc2VJZGVudGlmaWVyLmNwcCBi
L1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvaW5kZXhlZGRiL0lEQkRhdGFiYXNlSWRlbnRpZmllci5j
cHAKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMC4uYTAxOTBjMQotLS0gL2Rldi9u
dWxsCisrKyBiL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvaW5kZXhlZGRiL0lEQkRhdGFiYXNlSWRl
bnRpZmllci5jcHAKQEAgLTAsMCArMSw0OSBAQAorLyoKKyAqIENvcHlyaWdodCAoQykgMjAxNSBB
cHBsZSBJbmMuIEFsbCByaWdodHMgcmVzZXJ2ZWQuCisgKgorICogUmVkaXN0cmlidXRpb24gYW5k
IHVzZSBpbiBzb3VyY2UgYW5kIGJpbmFyeSBmb3Jtcywgd2l0aCBvciB3aXRob3V0CisgKiBtb2Rp
ZmljYXRpb24sIGFyZSBwZXJtaXR0ZWQgcHJvdmlkZWQgdGhhdCB0aGUgZm9sbG93aW5nIGNvbmRp
dGlvbnMKKyAqIGFyZSBtZXQ6CisgKiAxLiBSZWRpc3RyaWJ1dGlvbnMgb2Ygc291cmNlIGNvZGUg
bXVzdCByZXRhaW4gdGhlIGFib3ZlIGNvcHlyaWdodAorICogICAgbm90aWNlLCB0aGlzIGxpc3Qg
b2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyLgorICogMi4gUmVkaXN0
cmlidXRpb25zIGluIGJpbmFyeSBmb3JtIG11c3QgcmVwcm9kdWNlIHRoZSBhYm92ZSBjb3B5cmln
aHQKKyAqICAgIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dp
bmcgZGlzY2xhaW1lciBpbiB0aGUKKyAqICAgIGRvY3VtZW50YXRpb24gYW5kL29yIG90aGVyIG1h
dGVyaWFscyBwcm92aWRlZCB3aXRoIHRoZSBkaXN0cmlidXRpb24uCisgKgorICogVEhJUyBTT0ZU
V0FSRSBJUyBQUk9WSURFRCBCWSBBUFBMRSBJTkMuIGBgQVMgSVMnJyBBTkQgQU5ZCisgKiBFWFBS
RVNTIE9SIElNUExJRUQgV0FSUkFOVElFUywgSU5DTFVESU5HLCBCVVQgTk9UIExJTUlURUQgVE8s
IFRIRQorICogSU1QTElFRCBXQVJSQU5USUVTIE9GIE1FUkNIQU5UQUJJTElUWSBBTkQgRklUTkVT
UyBGT1IgQSBQQVJUSUNVTEFSCisgKiBQVVJQT1NFIEFSRSBESVNDTEFJTUVELiAgSU4gTk8gRVZF
TlQgU0hBTEwgQVBQTEUgSU5DLiBPUgorICogQ09OVFJJQlVUT1JTIEJFIExJQUJMRSBGT1IgQU5Z
IERJUkVDVCwgSU5ESVJFQ1QsIElOQ0lERU5UQUwsIFNQRUNJQUwsCisgKiBFWEVNUExBUlksIE9S
IENPTlNFUVVFTlRJQUwgREFNQUdFUyAoSU5DTFVESU5HLCBCVVQgTk9UIExJTUlURUQgVE8sCisg
KiBQUk9DVVJFTUVOVCBPRiBTVUJTVElUVVRFIEdPT0RTIE9SIFNFUlZJQ0VTOyBMT1NTIE9GIFVT
RSwgREFUQSwgT1IKKyAqIFBST0ZJVFM7IE9SIEJVU0lORVNTIElOVEVSUlVQVElPTikgSE9XRVZF
UiBDQVVTRUQgQU5EIE9OIEFOWSBUSEVPUlkKKyAqIE9GIExJQUJJTElUWSwgV0hFVEhFUiBJTiBD
T05UUkFDVCwgU1RSSUNUIExJQUJJTElUWSwgT1IgVE9SVAorICogKElOQ0xVRElORyBORUdMSUdF
TkNFIE9SIE9USEVSV0lTRSkgQVJJU0lORyBJTiBBTlkgV0FZIE9VVCBPRiBUSEUgVVNFCisgKiBP
RiBUSElTIFNPRlRXQVJFLCBFVkVOIElGIEFEVklTRUQgT0YgVEhFIFBPU1NJQklMSVRZIE9GIFNV
Q0ggREFNQUdFLgorICovCisKKyNpbmNsdWRlICJjb25maWcuaCIKKyNpbmNsdWRlICJJREJEYXRh
YmFzZUlkZW50aWZpZXIuaCIKKworI2lmIEVOQUJMRShJTkRFWEVEX0RBVEFCQVNFKQorCisjaW5j
bHVkZSA8d3RmL1JlZi5oPgorI2luY2x1ZGUgPHd0Zi9SZWZDb3VudGVkLmg+CisjaW5jbHVkZSA8
d3RmL3RleHQvV1RGU3RyaW5nLmg+CisKK25hbWVzcGFjZSBXZWJDb3JlIHsKKworSURCRGF0YWJh
c2VJZGVudGlmaWVyOjpJREJEYXRhYmFzZUlkZW50aWZpZXIoY29uc3QgU3RyaW5nJiBkYXRhYmFz
ZU5hbWUsIGNvbnN0IFNlY3VyaXR5T3JpZ2luJiBvcGVuaW5nT3JpZ2luLCBjb25zdCBTZWN1cml0
eU9yaWdpbiYgbWFpbkZyYW1lT3JpZ2luKQorICAgIDogbV9kYXRhYmFzZU5hbWUoZGF0YWJhc2VO
YW1lKQorICAgICwgbV9vcGVuaW5nT3JpZ2luKFNlY3VyaXR5T3JpZ2luRGF0YTo6ZnJvbVNlY3Vy
aXR5T3JpZ2luKG9wZW5pbmdPcmlnaW4pKQorICAgICwgbV9tYWluRnJhbWVPcmlnaW4oU2VjdXJp
dHlPcmlnaW5EYXRhOjpmcm9tU2VjdXJpdHlPcmlnaW4obWFpbkZyYW1lT3JpZ2luKSkKKworewor
ICAgIC8vIFRoZSBlbXB0eSBzdHJpbmcgaXMgYSB2YWxpZCBkYXRhYmFzZSBuYW1lLCBidXQgYSBu
dWxsIHN0cmluZyBpcyBub3QuCisgICAgQVNTRVJUKCFkYXRhYmFzZU5hbWUuaXNOdWxsKCkpOwor
fQorCit9IC8vIG5hbWVzcGFjZSBXZWJDb3JlCisKKyNlbmRpZiAvLyBFTkFCTEUoSU5ERVhFRF9E
QVRBQkFTRSkKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvaW5kZXhlZGRiL0lE
QkRhdGFiYXNlSWRlbnRpZmllci5oIGIvU291cmNlL1dlYkNvcmUvTW9kdWxlcy9pbmRleGVkZGIv
SURCRGF0YWJhc2VJZGVudGlmaWVyLmgKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAw
MC4uOTFkNTBiYQotLS0gL2Rldi9udWxsCisrKyBiL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvaW5k
ZXhlZGRiL0lEQkRhdGFiYXNlSWRlbnRpZmllci5oCkBAIC0wLDAgKzEsMTE1IEBACisvKgorICog
Q29weXJpZ2h0IChDKSAyMDE1IEFwcGxlIEluYy4gQWxsIHJpZ2h0cyByZXNlcnZlZC4KKyAqCisg
KiBSZWRpc3RyaWJ1dGlvbiBhbmQgdXNlIGluIHNvdXJjZSBhbmQgYmluYXJ5IGZvcm1zLCB3aXRo
IG9yIHdpdGhvdXQKKyAqIG1vZGlmaWNhdGlvbiwgYXJlIHBlcm1pdHRlZCBwcm92aWRlZCB0aGF0
IHRoZSBmb2xsb3dpbmcgY29uZGl0aW9ucworICogYXJlIG1ldDoKKyAqIDEuIFJlZGlzdHJpYnV0
aW9ucyBvZiBzb3VyY2UgY29kZSBtdXN0IHJldGFpbiB0aGUgYWJvdmUgY29weXJpZ2h0CisgKiAg
ICBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2Ns
YWltZXIuCisgKiAyLiBSZWRpc3RyaWJ1dGlvbnMgaW4gYmluYXJ5IGZvcm0gbXVzdCByZXByb2R1
Y2UgdGhlIGFib3ZlIGNvcHlyaWdodAorICogICAgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0
aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyIGluIHRoZQorICogICAgZG9jdW1lbnRh
dGlvbiBhbmQvb3Igb3RoZXIgbWF0ZXJpYWxzIHByb3ZpZGVkIHdpdGggdGhlIGRpc3RyaWJ1dGlv
bi4KKyAqCisgKiBUSElTIFNPRlRXQVJFIElTIFBST1ZJREVEIEJZIEFQUExFIElOQy4gYGBBUyBJ
UycnIEFORCBBTlkKKyAqIEVYUFJFU1MgT1IgSU1QTElFRCBXQVJSQU5USUVTLCBJTkNMVURJTkcs
IEJVVCBOT1QgTElNSVRFRCBUTywgVEhFCisgKiBJTVBMSUVEIFdBUlJBTlRJRVMgT0YgTUVSQ0hB
TlRBQklMSVRZIEFORCBGSVRORVNTIEZPUiBBIFBBUlRJQ1VMQVIKKyAqIFBVUlBPU0UgQVJFIERJ
U0NMQUlNRUQuICBJTiBOTyBFVkVOVCBTSEFMTCBBUFBMRSBJTkMuIE9SCisgKiBDT05UUklCVVRP
UlMgQkUgTElBQkxFIEZPUiBBTlkgRElSRUNULCBJTkRJUkVDVCwgSU5DSURFTlRBTCwgU1BFQ0lB
TCwKKyAqIEVYRU1QTEFSWSwgT1IgQ09OU0VRVUVOVElBTCBEQU1BR0VTIChJTkNMVURJTkcsIEJV
VCBOT1QgTElNSVRFRCBUTywKKyAqIFBST0NVUkVNRU5UIE9GIFNVQlNUSVRVVEUgR09PRFMgT1Ig
U0VSVklDRVM7IExPU1MgT0YgVVNFLCBEQVRBLCBPUgorICogUFJPRklUUzsgT1IgQlVTSU5FU1Mg
SU5URVJSVVBUSU9OKSBIT1dFVkVSIENBVVNFRCBBTkQgT04gQU5ZIFRIRU9SWQorICogT0YgTElB
QklMSVRZLCBXSEVUSEVSIElOIENPTlRSQUNULCBTVFJJQ1QgTElBQklMSVRZLCBPUiBUT1JUCisg
KiAoSU5DTFVESU5HIE5FR0xJR0VOQ0UgT1IgT1RIRVJXSVNFKSBBUklTSU5HIElOIEFOWSBXQVkg
T1VUIE9GIFRIRSBVU0UKKyAqIE9GIFRISVMgU09GVFdBUkUsIEVWRU4gSUYgQURWSVNFRCBPRiBU
SEUgUE9TU0lCSUxJVFkgT0YgU1VDSCBEQU1BR0UuCisgKi8KKworI2lmbmRlZiBJREJEYXRhYmFz
ZUlkZW50aWZpZXJfaAorI2RlZmluZSBJREJEYXRhYmFzZUlkZW50aWZpZXJfaAorCisjaWYgRU5B
QkxFKElOREVYRURfREFUQUJBU0UpCisKKyNpbmNsdWRlICJTZWN1cml0eU9yaWdpbkRhdGEuaCIK
KyNpbmNsdWRlIDx3dGYvUmVmLmg+CisjaW5jbHVkZSA8d3RmL1JlZkNvdW50ZWQuaD4KKyNpbmNs
dWRlIDx3dGYvdGV4dC9TdHJpbmdIYXNoLmg+CisjaW5jbHVkZSA8d3RmL3RleHQvV1RGU3RyaW5n
Lmg+CisKK25hbWVzcGFjZSBXZWJDb3JlIHsKKworY2xhc3MgU2VjdXJpdHlPcmlnaW47CisKK2Ns
YXNzIElEQkRhdGFiYXNlSWRlbnRpZmllciB7CitwdWJsaWM6CisgICAgSURCRGF0YWJhc2VJZGVu
dGlmaWVyKCkKKyAgICB7CisgICAgfQorCisgICAgSURCRGF0YWJhc2VJZGVudGlmaWVyKFdURjo6
SGFzaFRhYmxlRGVsZXRlZFZhbHVlVHlwZSkKKyAgICB7CisgICAgICAgIG1fb3BlbmluZ09yaWdp
bi5wb3J0ID0gLTE7CisgICAgICAgIG1fbWFpbkZyYW1lT3JpZ2luLnBvcnQgPSAtMTsKKyAgICB9
CisKKyAgICBib29sIGlzSGFzaFRhYmxlRGVsZXRlZFZhbHVlKCkgY29uc3QKKyAgICB7CisgICAg
ICAgIHJldHVybiBtX29wZW5pbmdPcmlnaW4ucG9ydCA9PSAtMSAmJiBtX21haW5GcmFtZU9yaWdp
bi5wb3J0ID09IC0xOworICAgIH0KKworICAgIHVuc2lnbmVkIGhhc2goKSBjb25zdAorICAgIHsK
KyAgICAgICAgdW5zaWduZWQgbmFtZUhhc2ggPSBTdHJpbmdIYXNoOjpoYXNoKG1fZGF0YWJhc2VO
YW1lKTsKKyAgICAgICAgdW5zaWduZWQgb3BlbmluZ1Byb3RvY29sSGFzaCA9IFN0cmluZ0hhc2g6
Omhhc2gobV9vcGVuaW5nT3JpZ2luLnByb3RvY29sKTsKKyAgICAgICAgdW5zaWduZWQgb3Blbmlu
Z0hvc3RIYXNoID0gU3RyaW5nSGFzaDo6aGFzaChtX29wZW5pbmdPcmlnaW4uaG9zdCk7CisgICAg
ICAgIHVuc2lnbmVkIG1haW5GcmFtZVByb3RvY29sSGFzaCA9IFN0cmluZ0hhc2g6Omhhc2gobV9t
YWluRnJhbWVPcmlnaW4ucHJvdG9jb2wpOworICAgICAgICB1bnNpZ25lZCBtYWluRnJhbWVIb3N0
SGFzaCA9IFN0cmluZ0hhc2g6Omhhc2gobV9tYWluRnJhbWVPcmlnaW4uaG9zdCk7CisgICAgICAg
IAorICAgICAgICB1bnNpZ25lZCBoYXNoQ29kZXNbN10gPSB7IG5hbWVIYXNoLCBvcGVuaW5nUHJv
dG9jb2xIYXNoLCBvcGVuaW5nSG9zdEhhc2gsIHN0YXRpY19jYXN0PHVuc2lnbmVkPihtX29wZW5p
bmdPcmlnaW4ucG9ydCksIG1haW5GcmFtZVByb3RvY29sSGFzaCwgbWFpbkZyYW1lSG9zdEhhc2gs
IHN0YXRpY19jYXN0PHVuc2lnbmVkPihtX21haW5GcmFtZU9yaWdpbi5wb3J0KSB9OworICAgICAg
ICByZXR1cm4gU3RyaW5nSGFzaGVyOjpoYXNoTWVtb3J5PHNpemVvZihoYXNoQ29kZXMpPihoYXNo
Q29kZXMpOworICAgIH0KKworICAgIElEQkRhdGFiYXNlSWRlbnRpZmllcihjb25zdCBTdHJpbmcm
IGRhdGFiYXNlTmFtZSwgY29uc3QgU2VjdXJpdHlPcmlnaW4mIG9wZW5pbmdPcmlnaW4sIGNvbnN0
IFNlY3VyaXR5T3JpZ2luJiBtYWluRnJhbWVPcmlnaW4pOworCisgICAgYm9vbCBpc1ZhbGlkKCkg
Y29uc3QKKyAgICB7CisgICAgICAgIHJldHVybiAhbV9kYXRhYmFzZU5hbWUuaXNOdWxsKCkgJiYg
bV9vcGVuaW5nT3JpZ2luLnBvcnQgPj0gMCAmJiBtX21haW5GcmFtZU9yaWdpbi5wb3J0ID49IDA7
CisgICAgfQorCisgICAgYm9vbCBvcGVyYXRvcj09KGNvbnN0IElEQkRhdGFiYXNlSWRlbnRpZmll
ciYgb3RoZXIpIGNvbnN0CisgICAgeworICAgICAgICByZXR1cm4gb3RoZXIubV9kYXRhYmFzZU5h
bWUgPT0gbV9kYXRhYmFzZU5hbWUKKyAgICAgICAgICAgICYmIG90aGVyLm1fb3BlbmluZ09yaWdp
biA9PSBtX29wZW5pbmdPcmlnaW4KKyAgICAgICAgICAgICYmIG90aGVyLm1fbWFpbkZyYW1lT3Jp
Z2luID09IG1fbWFpbkZyYW1lT3JpZ2luOworICAgIH0KKworICAgIGNvbnN0IFN0cmluZyYgZGF0
YWJhc2VOYW1lKCkgY29uc3QgeyByZXR1cm4gbV9kYXRhYmFzZU5hbWU7IH0KKworcHJpdmF0ZToK
KyAgICBTdHJpbmcgbV9kYXRhYmFzZU5hbWU7CisgICAgU2VjdXJpdHlPcmlnaW5EYXRhIG1fb3Bl
bmluZ09yaWdpbjsKKyAgICBTZWN1cml0eU9yaWdpbkRhdGEgbV9tYWluRnJhbWVPcmlnaW47Cit9
OworCitzdHJ1Y3QgSURCRGF0YWJhc2VJZGVudGlmaWVySGFzaCB7CisgICAgc3RhdGljIHVuc2ln
bmVkIGhhc2goY29uc3QgSURCRGF0YWJhc2VJZGVudGlmaWVyJiBhKSB7IHJldHVybiBhLmhhc2go
KTsgfQorICAgIHN0YXRpYyBib29sIGVxdWFsKGNvbnN0IElEQkRhdGFiYXNlSWRlbnRpZmllciYg
YSwgY29uc3QgSURCRGF0YWJhc2VJZGVudGlmaWVyJiBiKSB7IHJldHVybiBhID09IGI7IH0KKyAg
ICBzdGF0aWMgY29uc3QgYm9vbCBzYWZlVG9Db21wYXJlVG9FbXB0eU9yRGVsZXRlZCA9IGZhbHNl
OworfTsKKworc3RydWN0IElEQkRhdGFiYXNlSWRlbnRpZmllckhhc2hUcmFpdHMgOiBXVEY6OlNp
bXBsZUNsYXNzSGFzaFRyYWl0czxJREJEYXRhYmFzZUlkZW50aWZpZXI+IHsKKyAgICBzdGF0aWMg
Y29uc3QgYm9vbCBoYXNJc0VtcHR5VmFsdWVGdW5jdGlvbiA9IHRydWU7CisgICAgc3RhdGljIGJv
b2wgaXNFbXB0eVZhbHVlKGNvbnN0IElEQkRhdGFiYXNlSWRlbnRpZmllciYgaW5mbykgeyByZXR1
cm4gIWluZm8uaXNWYWxpZCgpOyB9Cit9OworCit9IC8vIG5hbWVzcGFjZSBXZWJDb3JlCisKK25h
bWVzcGFjZSBXVEYgeworCit0ZW1wbGF0ZTw+IHN0cnVjdCBIYXNoVHJhaXRzPFdlYkNvcmU6OklE
QkRhdGFiYXNlSWRlbnRpZmllcj4gOiBXZWJDb3JlOjpJREJEYXRhYmFzZUlkZW50aWZpZXJIYXNo
VHJhaXRzIHsgfTsKK3RlbXBsYXRlPD4gc3RydWN0IERlZmF1bHRIYXNoPFdlYkNvcmU6OklEQkRh
dGFiYXNlSWRlbnRpZmllcj4geworICAgIHR5cGVkZWYgV2ViQ29yZTo6SURCRGF0YWJhc2VJZGVu
dGlmaWVySGFzaCBIYXNoOworfTsKKworfSAvLyBuYW1lc3BhY2UgV1RGCisKKyNlbmRpZiAvLyBF
TkFCTEUoSU5ERVhFRF9EQVRBQkFTRSkKKyNlbmRpZiAvLyBJREJEYXRhYmFzZUlkZW50aWZpZXJf
aApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvTW9kdWxlcy9pbmRleGVkZGIvY2xpZW50L0lE
QkZhY3RvcnlJbXBsLmNwcCBiL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvaW5kZXhlZGRiL2NsaWVu
dC9JREJGYWN0b3J5SW1wbC5jcHAKaW5kZXggYjViYzk3ZS4uMTQ0ZjFkNiAxMDA2NDQKLS0tIGEv
U291cmNlL1dlYkNvcmUvTW9kdWxlcy9pbmRleGVkZGIvY2xpZW50L0lEQkZhY3RvcnlJbXBsLmNw
cAorKysgYi9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL2luZGV4ZWRkYi9jbGllbnQvSURCRmFjdG9y
eUltcGwuY3BwCkBAIC0yOCw5ICsyOCwzNiBAQAogCiAjaWYgRU5BQkxFKElOREVYRURfREFUQUJB
U0UpCiAKKyNpbmNsdWRlICJFeGNlcHRpb25Db2RlLmgiCisjaW5jbHVkZSAiSURCRGF0YWJhc2VJ
ZGVudGlmaWVyLmgiCisjaW5jbHVkZSAiSURCT3BlbkRCUmVxdWVzdEltcGwuaCIKKyNpbmNsdWRl
ICJMb2dnaW5nLmgiCisjaW5jbHVkZSAiUGFnZS5oIgorI2luY2x1ZGUgIlNjaGVtZVJlZ2lzdHJ5
LmgiCisjaW5jbHVkZSAiU2VjdXJpdHlPcmlnaW4uaCIKKwogbmFtZXNwYWNlIFdlYkNvcmUgewog
bmFtZXNwYWNlIElEQkNsaWVudCB7CiAKK3N0YXRpYyBib29sIHNob3VsZFRocm93U2VjdXJpdHlF
eGNlcHRpb24oU2NyaXB0RXhlY3V0aW9uQ29udGV4dCogY29udGV4dCkKK3sKKyAgICBBU1NFUlQo
aXM8RG9jdW1lbnQ+KCpjb250ZXh0KSB8fCBjb250ZXh0LT5pc1dvcmtlckdsb2JhbFNjb3BlKCkp
OworICAgIGlmIChpczxEb2N1bWVudD4oKmNvbnRleHQpKSB7CisgICAgICAgIERvY3VtZW50JiBk
b2N1bWVudCA9IGRvd25jYXN0PERvY3VtZW50PigqY29udGV4dCk7CisgICAgICAgIGlmICghZG9j
dW1lbnQuZnJhbWUoKSkKKyAgICAgICAgICAgIHJldHVybiB0cnVlOworICAgICAgICBpZiAoIWRv
Y3VtZW50LnBhZ2UoKSkKKyAgICAgICAgICAgIHJldHVybiB0cnVlOworICAgICAgICBpZiAoZG9j
dW1lbnQucGFnZSgpLT51c2VzRXBoZW1lcmFsU2Vzc2lvbigpICYmICFTY2hlbWVSZWdpc3RyeTo6
YWxsb3dzRGF0YWJhc2VBY2Nlc3NJblByaXZhdGVCcm93c2luZyhkb2N1bWVudC5zZWN1cml0eU9y
aWdpbigpLT5wcm90b2NvbCgpKSkKKyAgICAgICAgICAgIHJldHVybiB0cnVlOworICAgIH0KKwor
ICAgIGlmICghY29udGV4dC0+c2VjdXJpdHlPcmlnaW4oKS0+Y2FuQWNjZXNzRGF0YWJhc2UoY29u
dGV4dC0+dG9wT3JpZ2luKCkpKQorICAgICAgICByZXR1cm4gdHJ1ZTsKKworICAgIHJldHVybiBm
YWxzZTsKK30KKwogUmVmPElEQkZhY3Rvcnk+IElEQkZhY3Rvcnk6OmNyZWF0ZSgpCiB7CiAgICAg
cmV0dXJuIGFkb3B0UmVmKCpuZXcgSURCRmFjdG9yeSk7CkBAIC00MSwyNCArNjgsNDUgQEAgSURC
RmFjdG9yeTo6SURCRmFjdG9yeSgpCiAKIH0KIAotUGFzc1JlZlB0cjxJREJSZXF1ZXN0PiBJREJG
YWN0b3J5OjpnZXREYXRhYmFzZU5hbWVzKFNjcmlwdEV4ZWN1dGlvbkNvbnRleHQqLCBFeGNlcHRp
b25Db2RlJikKK1Bhc3NSZWZQdHI8V2ViQ29yZTo6SURCUmVxdWVzdD4gSURCRmFjdG9yeTo6Z2V0
RGF0YWJhc2VOYW1lcyhTY3JpcHRFeGVjdXRpb25Db250ZXh0KiwgRXhjZXB0aW9uQ29kZSYpCiB7
CiAgICAgcmV0dXJuIG51bGxwdHI7CiB9CiAKLVBhc3NSZWZQdHI8SURCT3BlbkRCUmVxdWVzdD4g
SURCRmFjdG9yeTo6b3BlbihTY3JpcHRFeGVjdXRpb25Db250ZXh0KiwgY29uc3QgU3RyaW5nJiwg
RXhjZXB0aW9uQ29kZSYpCitQYXNzUmVmUHRyPFdlYkNvcmU6OklEQk9wZW5EQlJlcXVlc3Q+IElE
QkZhY3Rvcnk6Om9wZW4oU2NyaXB0RXhlY3V0aW9uQ29udGV4dCosIGNvbnN0IFN0cmluZyYsIEV4
Y2VwdGlvbkNvZGUmKQogewogICAgIHJldHVybiBudWxscHRyOwogfQogCi1QYXNzUmVmUHRyPElE
Qk9wZW5EQlJlcXVlc3Q+IElEQkZhY3Rvcnk6Om9wZW4oU2NyaXB0RXhlY3V0aW9uQ29udGV4dCos
IGNvbnN0IFN0cmluZyYsIHVuc2lnbmVkIGxvbmcgbG9uZywgRXhjZXB0aW9uQ29kZSYpCitQYXNz
UmVmUHRyPFdlYkNvcmU6OklEQk9wZW5EQlJlcXVlc3Q+IElEQkZhY3Rvcnk6Om9wZW4oU2NyaXB0
RXhlY3V0aW9uQ29udGV4dCosIGNvbnN0IFN0cmluZyYsIHVuc2lnbmVkIGxvbmcgbG9uZywgRXhj
ZXB0aW9uQ29kZSYpCiB7CiAgICAgcmV0dXJuIG51bGxwdHI7CiB9CiAKLVBhc3NSZWZQdHI8SURC
T3BlbkRCUmVxdWVzdD4gSURCRmFjdG9yeTo6ZGVsZXRlRGF0YWJhc2UoU2NyaXB0RXhlY3V0aW9u
Q29udGV4dCosIGNvbnN0IFN0cmluZyYsIEV4Y2VwdGlvbkNvZGUmKQorUGFzc1JlZlB0cjxXZWJD
b3JlOjpJREJPcGVuREJSZXF1ZXN0PiBJREJGYWN0b3J5OjpkZWxldGVEYXRhYmFzZShTY3JpcHRF
eGVjdXRpb25Db250ZXh0KiBjb250ZXh0LCBjb25zdCBTdHJpbmcmIG5hbWUsIEV4Y2VwdGlvbkNv
ZGUmIGVjKQogewotICAgIHJldHVybiBudWxscHRyOworICAgIExPRyhJbmRleGVkREIsICJJREJG
YWN0b3J5OjpkZWxldGVEYXRhYmFzZSIpOworCisgICAgaWYgKG5hbWUuaXNOdWxsKCkpIHsKKyAg
ICAgICAgZWMgPSBUeXBlRXJyb3I7CisgICAgICAgIHJldHVybiBudWxscHRyOworICAgIH0KKyAg
ICAKKyAgICBpZiAoc2hvdWxkVGhyb3dTZWN1cml0eUV4Y2VwdGlvbihjb250ZXh0KSkgeworICAg
ICAgICBlYyA9IFNFQ1VSSVRZX0VSUjsKKyAgICAgICAgcmV0dXJuIG51bGxwdHI7CisgICAgfQor
CisgICAgQVNTRVJUKGNvbnRleHQtPnNlY3VyaXR5T3JpZ2luKCkpOworICAgIEFTU0VSVChjb250
ZXh0LT50b3BPcmlnaW4oKSk7CisgICAgSURCRGF0YWJhc2VJZGVudGlmaWVyIGRhdGFiYXNlSWRl
bnRpZmllcihuYW1lLCAqY29udGV4dC0+c2VjdXJpdHlPcmlnaW4oKSwgKmNvbnRleHQtPnRvcE9y
aWdpbigpKTsKKyAgICBpZiAoIWRhdGFiYXNlSWRlbnRpZmllci5pc1ZhbGlkKCkpIHsKKyAgICAg
ICAgZWMgPSBUeXBlRXJyb3I7CisgICAgICAgIHJldHVybiBudWxscHRyOworICAgIH0KKworICAg
IGF1dG8gcmVxdWVzdCA9IElEQk9wZW5EQlJlcXVlc3Q6OmNyZWF0ZShjb250ZXh0KTsKKyAgICBy
ZXR1cm4gYWRvcHRSZWYoJnJlcXVlc3QubGVha1JlZigpKTsKIH0KIAogc2hvcnQgSURCRmFjdG9y
eTo6Y21wKFNjcmlwdEV4ZWN1dGlvbkNvbnRleHQqLCBjb25zdCBEZXByZWNhdGVkOjpTY3JpcHRW
YWx1ZSYsIGNvbnN0IERlcHJlY2F0ZWQ6OlNjcmlwdFZhbHVlJiwgRXhjZXB0aW9uQ29kZSYpCmRp
ZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL2luZGV4ZWRkYi9jbGllbnQvSURCRmFj
dG9yeUltcGwuaCBiL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvaW5kZXhlZGRiL2NsaWVudC9JREJG
YWN0b3J5SW1wbC5oCmluZGV4IDQxYjUwYzYuLjljNzA5YjQgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9X
ZWJDb3JlL01vZHVsZXMvaW5kZXhlZGRiL2NsaWVudC9JREJGYWN0b3J5SW1wbC5oCisrKyBiL1Nv
dXJjZS9XZWJDb3JlL01vZHVsZXMvaW5kZXhlZGRiL2NsaWVudC9JREJGYWN0b3J5SW1wbC5oCkBA
IC0zNywxMSArMzcsMTEgQEAgY2xhc3MgSURCRmFjdG9yeSA6IHB1YmxpYyBXZWJDb3JlOjpJREJG
YWN0b3J5IHsKIHB1YmxpYzoKICAgICBzdGF0aWMgUmVmPElEQkZhY3Rvcnk+IGNyZWF0ZSgpOwog
Ci0gICAgdmlydHVhbCBQYXNzUmVmUHRyPElEQlJlcXVlc3Q+IGdldERhdGFiYXNlTmFtZXMoU2Ny
aXB0RXhlY3V0aW9uQ29udGV4dCosIEV4Y2VwdGlvbkNvZGUmKSBvdmVycmlkZSBmaW5hbDsKKyAg
ICB2aXJ0dWFsIFBhc3NSZWZQdHI8V2ViQ29yZTo6SURCUmVxdWVzdD4gZ2V0RGF0YWJhc2VOYW1l
cyhTY3JpcHRFeGVjdXRpb25Db250ZXh0KiwgRXhjZXB0aW9uQ29kZSYpIG92ZXJyaWRlIGZpbmFs
OwogCi0gICAgdmlydHVhbCBQYXNzUmVmUHRyPElEQk9wZW5EQlJlcXVlc3Q+IG9wZW4oU2NyaXB0
RXhlY3V0aW9uQ29udGV4dCosIGNvbnN0IFN0cmluZyYgbmFtZSwgRXhjZXB0aW9uQ29kZSYpIG92
ZXJyaWRlIGZpbmFsOwotICAgIHZpcnR1YWwgUGFzc1JlZlB0cjxJREJPcGVuREJSZXF1ZXN0PiBv
cGVuKFNjcmlwdEV4ZWN1dGlvbkNvbnRleHQqLCBjb25zdCBTdHJpbmcmIG5hbWUsIHVuc2lnbmVk
IGxvbmcgbG9uZyB2ZXJzaW9uLCBFeGNlcHRpb25Db2RlJikgb3ZlcnJpZGUgZmluYWw7Ci0gICAg
dmlydHVhbCBQYXNzUmVmUHRyPElEQk9wZW5EQlJlcXVlc3Q+IGRlbGV0ZURhdGFiYXNlKFNjcmlw
dEV4ZWN1dGlvbkNvbnRleHQqLCBjb25zdCBTdHJpbmcmIG5hbWUsIEV4Y2VwdGlvbkNvZGUmKSBv
dmVycmlkZSBmaW5hbDsKKyAgICB2aXJ0dWFsIFBhc3NSZWZQdHI8V2ViQ29yZTo6SURCT3BlbkRC
UmVxdWVzdD4gb3BlbihTY3JpcHRFeGVjdXRpb25Db250ZXh0KiwgY29uc3QgU3RyaW5nJiBuYW1l
LCBFeGNlcHRpb25Db2RlJikgb3ZlcnJpZGUgZmluYWw7CisgICAgdmlydHVhbCBQYXNzUmVmUHRy
PFdlYkNvcmU6OklEQk9wZW5EQlJlcXVlc3Q+IG9wZW4oU2NyaXB0RXhlY3V0aW9uQ29udGV4dCos
IGNvbnN0IFN0cmluZyYgbmFtZSwgdW5zaWduZWQgbG9uZyBsb25nIHZlcnNpb24sIEV4Y2VwdGlv
bkNvZGUmKSBvdmVycmlkZSBmaW5hbDsKKyAgICB2aXJ0dWFsIFBhc3NSZWZQdHI8V2ViQ29yZTo6
SURCT3BlbkRCUmVxdWVzdD4gZGVsZXRlRGF0YWJhc2UoU2NyaXB0RXhlY3V0aW9uQ29udGV4dCos
IGNvbnN0IFN0cmluZyYgbmFtZSwgRXhjZXB0aW9uQ29kZSYpIG92ZXJyaWRlIGZpbmFsOwogCiAg
ICAgdmlydHVhbCBzaG9ydCBjbXAoU2NyaXB0RXhlY3V0aW9uQ29udGV4dCosIGNvbnN0IERlcHJl
Y2F0ZWQ6OlNjcmlwdFZhbHVlJiBmaXJzdCwgY29uc3QgRGVwcmVjYXRlZDo6U2NyaXB0VmFsdWUm
IHNlY29uZCwgRXhjZXB0aW9uQ29kZSYpIG92ZXJyaWRlIGZpbmFsOwogCmRpZmYgLS1naXQgYS9T
b3VyY2UvV2ViQ29yZS9Nb2R1bGVzL2luZGV4ZWRkYi9jbGllbnQvSURCT3BlbkRCUmVxdWVzdElt
cGwuY3BwIGIvU291cmNlL1dlYkNvcmUvTW9kdWxlcy9pbmRleGVkZGIvY2xpZW50L0lEQk9wZW5E
QlJlcXVlc3RJbXBsLmNwcApuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwLi42ODA2
NWYwCi0tLSAvZGV2L251bGwKKysrIGIvU291cmNlL1dlYkNvcmUvTW9kdWxlcy9pbmRleGVkZGIv
Y2xpZW50L0lEQk9wZW5EQlJlcXVlc3RJbXBsLmNwcApAQCAtMCwwICsxLDQzIEBACisvKgorICog
Q29weXJpZ2h0IChDKSAyMDE1IEFwcGxlIEluYy4gQWxsIHJpZ2h0cyByZXNlcnZlZC4KKyAqCisg
KiBSZWRpc3RyaWJ1dGlvbiBhbmQgdXNlIGluIHNvdXJjZSBhbmQgYmluYXJ5IGZvcm1zLCB3aXRo
IG9yIHdpdGhvdXQKKyAqIG1vZGlmaWNhdGlvbiwgYXJlIHBlcm1pdHRlZCBwcm92aWRlZCB0aGF0
IHRoZSBmb2xsb3dpbmcgY29uZGl0aW9ucworICogYXJlIG1ldDoKKyAqIDEuIFJlZGlzdHJpYnV0
aW9ucyBvZiBzb3VyY2UgY29kZSBtdXN0IHJldGFpbiB0aGUgYWJvdmUgY29weXJpZ2h0CisgKiAg
ICBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2Ns
YWltZXIuCisgKiAyLiBSZWRpc3RyaWJ1dGlvbnMgaW4gYmluYXJ5IGZvcm0gbXVzdCByZXByb2R1
Y2UgdGhlIGFib3ZlIGNvcHlyaWdodAorICogICAgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0
aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyIGluIHRoZQorICogICAgZG9jdW1lbnRh
dGlvbiBhbmQvb3Igb3RoZXIgbWF0ZXJpYWxzIHByb3ZpZGVkIHdpdGggdGhlIGRpc3RyaWJ1dGlv
bi4KKyAqCisgKiBUSElTIFNPRlRXQVJFIElTIFBST1ZJREVEIEJZIEFQUExFIElOQy4gQU5EIElU
UyBDT05UUklCVVRPUlMgYGBBUyBJUycnCisgKiBBTkQgQU5ZIEVYUFJFU1MgT1IgSU1QTElFRCBX
QVJSQU5USUVTLCBJTkNMVURJTkcsIEJVVCBOT1QgTElNSVRFRCBUTywKKyAqIFRIRSBJTVBMSUVE
IFdBUlJBTlRJRVMgT0YgTUVSQ0hBTlRBQklMSVRZIEFORCBGSVRORVNTIEZPUiBBIFBBUlRJQ1VM
QVIKKyAqIFBVUlBPU0UgQVJFIERJU0NMQUlNRUQuIElOIE5PIEVWRU5UIFNIQUxMIEFQUExFIElO
Qy4gT1IgSVRTIENPTlRSSUJVVE9SUworICogQkUgTElBQkxFIEZPUiBBTlkgRElSRUNULCBJTkRJ
UkVDVCwgSU5DSURFTlRBTCwgU1BFQ0lBTCwgRVhFTVBMQVJZLCBPUgorICogQ09OU0VRVUVOVElB
TCBEQU1BR0VTIChJTkNMVURJTkcsIEJVVCBOT1QgTElNSVRFRCBUTywgUFJPQ1VSRU1FTlQgT0YK
KyAqIFNVQlNUSVRVVEUgR09PRFMgT1IgU0VSVklDRVM7IExPU1MgT0YgVVNFLCBEQVRBLCBPUiBQ
Uk9GSVRTOyBPUiBCVVNJTkVTUworICogSU5URVJSVVBUSU9OKSBIT1dFVkVSIENBVVNFRCBBTkQg
T04gQU5ZIFRIRU9SWSBPRiBMSUFCSUxJVFksIFdIRVRIRVIgSU4KKyAqIENPTlRSQUNULCBTVFJJ
Q1QgTElBQklMSVRZLCBPUiBUT1JUIChJTkNMVURJTkcgTkVHTElHRU5DRSBPUiBPVEhFUldJU0Up
CisgKiBBUklTSU5HIElOIEFOWSBXQVkgT1VUIE9GIFRIRSBVU0UgT0YgVEhJUyBTT0ZUV0FSRSwg
RVZFTiBJRiBBRFZJU0VEIE9GCisgKiBUSEUgUE9TU0lCSUxJVFkgT0YgU1VDSCBEQU1BR0UuCisg
Ki8KKworI2luY2x1ZGUgImNvbmZpZy5oIgorI2luY2x1ZGUgIklEQk9wZW5EQlJlcXVlc3RJbXBs
LmgiCisKKyNpZiBFTkFCTEUoSU5ERVhFRF9EQVRBQkFTRSkKKworbmFtZXNwYWNlIFdlYkNvcmUg
eworbmFtZXNwYWNlIElEQkNsaWVudCB7CisKK0lEQk9wZW5EQlJlcXVlc3Q6OklEQk9wZW5EQlJl
cXVlc3QoU2NyaXB0RXhlY3V0aW9uQ29udGV4dCogY29udGV4dCkKKyAgICA6IElEQlJlcXVlc3Qo
Y29udGV4dCkKK3sKKyAgICBzdXNwZW5kSWZOZWVkZWQoKTsKK30KKworfSAvLyBuYW1lc3BhY2Ug
SURCQ2xpZW50Cit9IC8vIG5hbWVzcGFjZSBXZWJDb3JlCisKKyNlbmRpZiAvLyBFTkFCTEUoSU5E
RVhFRF9EQVRBQkFTRSkKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvaW5kZXhl
ZGRiL2NsaWVudC9JREJPcGVuREJSZXF1ZXN0SW1wbC5oIGIvU291cmNlL1dlYkNvcmUvTW9kdWxl
cy9pbmRleGVkZGIvY2xpZW50L0lEQk9wZW5EQlJlcXVlc3RJbXBsLmgKbmV3IGZpbGUgbW9kZSAx
MDA2NDQKaW5kZXggMDAwMDAwMC4uMzY2NTQ2ZQotLS0gL2Rldi9udWxsCisrKyBiL1NvdXJjZS9X
ZWJDb3JlL01vZHVsZXMvaW5kZXhlZGRiL2NsaWVudC9JREJPcGVuREJSZXF1ZXN0SW1wbC5oCkBA
IC0wLDAgKzEsNTEgQEAKKy8qCisgKiBDb3B5cmlnaHQgKEMpIDIwMTUgQXBwbGUgSW5jLiBBbGwg
cmlnaHRzIHJlc2VydmVkLgorICoKKyAqIFJlZGlzdHJpYnV0aW9uIGFuZCB1c2UgaW4gc291cmNl
IGFuZCBiaW5hcnkgZm9ybXMsIHdpdGggb3Igd2l0aG91dAorICogbW9kaWZpY2F0aW9uLCBhcmUg
cGVybWl0dGVkIHByb3ZpZGVkIHRoYXQgdGhlIGZvbGxvd2luZyBjb25kaXRpb25zCisgKiBhcmUg
bWV0OgorICogMS4gUmVkaXN0cmlidXRpb25zIG9mIHNvdXJjZSBjb2RlIG11c3QgcmV0YWluIHRo
ZSBhYm92ZSBjb3B5cmlnaHQKKyAqICAgIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMg
YW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lci4KKyAqIDIuIFJlZGlzdHJpYnV0aW9ucyBpbiBi
aW5hcnkgZm9ybSBtdXN0IHJlcHJvZHVjZSB0aGUgYWJvdmUgY29weXJpZ2h0CisgKiAgICBub3Rp
Y2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIg
aW4gdGhlCisgKiAgICBkb2N1bWVudGF0aW9uIGFuZC9vciBvdGhlciBtYXRlcmlhbHMgcHJvdmlk
ZWQgd2l0aCB0aGUgZGlzdHJpYnV0aW9uLgorICoKKyAqIFRISVMgU09GVFdBUkUgSVMgUFJPVklE
RUQgQlkgQVBQTEUgSU5DLiBBTkQgSVRTIENPTlRSSUJVVE9SUyBgYEFTIElTJycKKyAqIEFORCBB
TlkgRVhQUkVTUyBPUiBJTVBMSUVEIFdBUlJBTlRJRVMsIElOQ0xVRElORywgQlVUIE5PVCBMSU1J
VEVEIFRPLAorICogVEhFIElNUExJRUQgV0FSUkFOVElFUyBPRiBNRVJDSEFOVEFCSUxJVFkgQU5E
IEZJVE5FU1MgRk9SIEEgUEFSVElDVUxBUgorICogUFVSUE9TRSBBUkUgRElTQ0xBSU1FRC4gSU4g
Tk8gRVZFTlQgU0hBTEwgQVBQTEUgSU5DLiBPUiBJVFMgQ09OVFJJQlVUT1JTCisgKiBCRSBMSUFC
TEUgRk9SIEFOWSBESVJFQ1QsIElORElSRUNULCBJTkNJREVOVEFMLCBTUEVDSUFMLCBFWEVNUExB
UlksIE9SCisgKiBDT05TRVFVRU5USUFMIERBTUFHRVMgKElOQ0xVRElORywgQlVUIE5PVCBMSU1J
VEVEIFRPLCBQUk9DVVJFTUVOVCBPRgorICogU1VCU1RJVFVURSBHT09EUyBPUiBTRVJWSUNFUzsg
TE9TUyBPRiBVU0UsIERBVEEsIE9SIFBST0ZJVFM7IE9SIEJVU0lORVNTCisgKiBJTlRFUlJVUFRJ
T04pIEhPV0VWRVIgQ0FVU0VEIEFORCBPTiBBTlkgVEhFT1JZIE9GIExJQUJJTElUWSwgV0hFVEhF
UiBJTgorICogQ09OVFJBQ1QsIFNUUklDVCBMSUFCSUxJVFksIE9SIFRPUlQgKElOQ0xVRElORyBO
RUdMSUdFTkNFIE9SIE9USEVSV0lTRSkKKyAqIEFSSVNJTkcgSU4gQU5ZIFdBWSBPVVQgT0YgVEhF
IFVTRSBPRiBUSElTIFNPRlRXQVJFLCBFVkVOIElGIEFEVklTRUQgT0YKKyAqIFRIRSBQT1NTSUJJ
TElUWSBPRiBTVUNIIERBTUFHRS4KKyAqLworCisjaWZuZGVmIElEQk9wZW5EQlJlcXVlc3RJbXBs
X2gKKyNkZWZpbmUgSURCT3BlbkRCUmVxdWVzdEltcGxfaAorCisjaWYgRU5BQkxFKElOREVYRURf
REFUQUJBU0UpCisKKyNpbmNsdWRlICJJREJSZXF1ZXN0SW1wbC5oIgorCituYW1lc3BhY2UgV2Vi
Q29yZSB7CituYW1lc3BhY2UgSURCQ2xpZW50IHsKKworY2xhc3MgSURCT3BlbkRCUmVxdWVzdCA6
IHB1YmxpYyBJREJSZXF1ZXN0IHsKK3B1YmxpYzoKKyAgICBzdGF0aWMgUmVmPElEQk9wZW5EQlJl
cXVlc3Q+IGNyZWF0ZShTY3JpcHRFeGVjdXRpb25Db250ZXh0KiBjb250ZXh0KQorICAgIHsKKyAg
ICAgICAgcmV0dXJuIGFkb3B0UmVmKCpuZXcgSURCT3BlbkRCUmVxdWVzdChjb250ZXh0KSk7Cisg
ICAgfQorCitwcml2YXRlOgorICAgIElEQk9wZW5EQlJlcXVlc3QoU2NyaXB0RXhlY3V0aW9uQ29u
dGV4dCopOworfTsKKworfSAvLyBuYW1lc3BhY2UgSURCQ2xpZW50Cit9IC8vIG5hbWVzcGFjZSBX
ZWJDb3JlCisKKyNlbmRpZiAvLyBFTkFCTEUoSU5ERVhFRF9EQVRBQkFTRSkKKyNlbmRpZiAvLyBJ
REJPcGVuREJSZXF1ZXN0SW1wbF9oCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVz
L2luZGV4ZWRkYi9jbGllbnQvSURCUmVxdWVzdEltcGwuY3BwIGIvU291cmNlL1dlYkNvcmUvTW9k
dWxlcy9pbmRleGVkZGIvY2xpZW50L0lEQlJlcXVlc3RJbXBsLmNwcApuZXcgZmlsZSBtb2RlIDEw
MDY0NAppbmRleCAwMDAwMDAwLi5jZjdjNTVhCi0tLSAvZGV2L251bGwKKysrIGIvU291cmNlL1dl
YkNvcmUvTW9kdWxlcy9pbmRleGVkZGIvY2xpZW50L0lEQlJlcXVlc3RJbXBsLmNwcApAQCAtMCww
ICsxLDkwIEBACisvKgorICogQ29weXJpZ2h0IChDKSAyMDE1IEFwcGxlIEluYy4gQWxsIHJpZ2h0
cyByZXNlcnZlZC4KKyAqCisgKiBSZWRpc3RyaWJ1dGlvbiBhbmQgdXNlIGluIHNvdXJjZSBhbmQg
YmluYXJ5IGZvcm1zLCB3aXRoIG9yIHdpdGhvdXQKKyAqIG1vZGlmaWNhdGlvbiwgYXJlIHBlcm1p
dHRlZCBwcm92aWRlZCB0aGF0IHRoZSBmb2xsb3dpbmcgY29uZGl0aW9ucworICogYXJlIG1ldDoK
KyAqIDEuIFJlZGlzdHJpYnV0aW9ucyBvZiBzb3VyY2UgY29kZSBtdXN0IHJldGFpbiB0aGUgYWJv
dmUgY29weXJpZ2h0CisgKiAgICBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0
aGUgZm9sbG93aW5nIGRpc2NsYWltZXIuCisgKiAyLiBSZWRpc3RyaWJ1dGlvbnMgaW4gYmluYXJ5
IGZvcm0gbXVzdCByZXByb2R1Y2UgdGhlIGFib3ZlIGNvcHlyaWdodAorICogICAgbm90aWNlLCB0
aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyIGluIHRo
ZQorICogICAgZG9jdW1lbnRhdGlvbiBhbmQvb3Igb3RoZXIgbWF0ZXJpYWxzIHByb3ZpZGVkIHdp
dGggdGhlIGRpc3RyaWJ1dGlvbi4KKyAqCisgKiBUSElTIFNPRlRXQVJFIElTIFBST1ZJREVEIEJZ
IEFQUExFIElOQy4gQU5EIElUUyBDT05UUklCVVRPUlMgYGBBUyBJUycnCisgKiBBTkQgQU5ZIEVY
UFJFU1MgT1IgSU1QTElFRCBXQVJSQU5USUVTLCBJTkNMVURJTkcsIEJVVCBOT1QgTElNSVRFRCBU
TywKKyAqIFRIRSBJTVBMSUVEIFdBUlJBTlRJRVMgT0YgTUVSQ0hBTlRBQklMSVRZIEFORCBGSVRO
RVNTIEZPUiBBIFBBUlRJQ1VMQVIKKyAqIFBVUlBPU0UgQVJFIERJU0NMQUlNRUQuIElOIE5PIEVW
RU5UIFNIQUxMIEFQUExFIElOQy4gT1IgSVRTIENPTlRSSUJVVE9SUworICogQkUgTElBQkxFIEZP
UiBBTlkgRElSRUNULCBJTkRJUkVDVCwgSU5DSURFTlRBTCwgU1BFQ0lBTCwgRVhFTVBMQVJZLCBP
UgorICogQ09OU0VRVUVOVElBTCBEQU1BR0VTIChJTkNMVURJTkcsIEJVVCBOT1QgTElNSVRFRCBU
TywgUFJPQ1VSRU1FTlQgT0YKKyAqIFNVQlNUSVRVVEUgR09PRFMgT1IgU0VSVklDRVM7IExPU1Mg
T0YgVVNFLCBEQVRBLCBPUiBQUk9GSVRTOyBPUiBCVVNJTkVTUworICogSU5URVJSVVBUSU9OKSBI
T1dFVkVSIENBVVNFRCBBTkQgT04gQU5ZIFRIRU9SWSBPRiBMSUFCSUxJVFksIFdIRVRIRVIgSU4K
KyAqIENPTlRSQUNULCBTVFJJQ1QgTElBQklMSVRZLCBPUiBUT1JUIChJTkNMVURJTkcgTkVHTElH
RU5DRSBPUiBPVEhFUldJU0UpCisgKiBBUklTSU5HIElOIEFOWSBXQVkgT1VUIE9GIFRIRSBVU0Ug
T0YgVEhJUyBTT0ZUV0FSRSwgRVZFTiBJRiBBRFZJU0VEIE9GCisgKiBUSEUgUE9TU0lCSUxJVFkg
T0YgU1VDSCBEQU1BR0UuCisgKi8KKworI2luY2x1ZGUgImNvbmZpZy5oIgorI2luY2x1ZGUgIklE
QlJlcXVlc3RJbXBsLmgiCisKKyNpZiBFTkFCTEUoSU5ERVhFRF9EQVRBQkFTRSkKKworI2luY2x1
ZGUgPHd0Zi9OZXZlckRlc3Ryb3llZC5oPgorCituYW1lc3BhY2UgV2ViQ29yZSB7CituYW1lc3Bh
Y2UgSURCQ2xpZW50IHsKKworSURCUmVxdWVzdDo6SURCUmVxdWVzdChTY3JpcHRFeGVjdXRpb25D
b250ZXh0KiBjb250ZXh0KQorICAgIDogSURCT3BlbkRCUmVxdWVzdChjb250ZXh0KQoreworfQor
CitQYXNzUmVmUHRyPElEQkFueT4gSURCUmVxdWVzdDo6cmVzdWx0KEV4Y2VwdGlvbkNvZGUmKSBj
b25zdAoreworICAgIHJldHVybiBudWxscHRyOworfQorCit1bnNpZ25lZCBzaG9ydCBJREJSZXF1
ZXN0OjplcnJvckNvZGUoRXhjZXB0aW9uQ29kZSYpIGNvbnN0Cit7CisgICAgcmV0dXJuIDA7Cit9
CisKK1Bhc3NSZWZQdHI8RE9NRXJyb3I+IElEQlJlcXVlc3Q6OmVycm9yKEV4Y2VwdGlvbkNvZGUm
KSBjb25zdAoreworICAgIHJldHVybiBudWxscHRyOworfQorCitQYXNzUmVmUHRyPElEQkFueT4g
SURCUmVxdWVzdDo6c291cmNlKCkgY29uc3QKK3sKKyAgICByZXR1cm4gbnVsbHB0cjsKK30KKwor
UGFzc1JlZlB0cjxJREJUcmFuc2FjdGlvbj4gSURCUmVxdWVzdDo6dHJhbnNhY3Rpb24oKSBjb25z
dAoreworICAgIHJldHVybiBudWxscHRyOworfQorCitjb25zdCBTdHJpbmcmIElEQlJlcXVlc3Q6
OnJlYWR5U3RhdGUoKSBjb25zdAoreworICAgIHN0YXRpYyBXVEY6Ok5ldmVyRGVzdHJveWVkPFN0
cmluZz4gcmVhZHlTdGF0ZTsKKyAgICByZXR1cm4gcmVhZHlTdGF0ZTsKK30KKworRXZlbnRUYXJn
ZXRJbnRlcmZhY2UgSURCUmVxdWVzdDo6ZXZlbnRUYXJnZXRJbnRlcmZhY2UoKSBjb25zdAorewor
ICAgIHJldHVybiBJREJSZXF1ZXN0RXZlbnRUYXJnZXRJbnRlcmZhY2VUeXBlOworfQorCitjb25z
dCBjaGFyKiBJREJSZXF1ZXN0OjphY3RpdmVET01PYmplY3ROYW1lKCkgY29uc3QKK3sKKyAgICBy
ZXR1cm4gIklEQlJlcXVlc3QiOworfQorCitib29sIElEQlJlcXVlc3Q6OmNhblN1c3BlbmRGb3JQ
YWdlQ2FjaGUoKSBjb25zdAoreworICAgIHJldHVybiBmYWxzZTsKK30KKyAgICAKK30gLy8gbmFt
ZXNwYWNlIElEQkNsaWVudAorfSAvLyBuYW1lc3BhY2UgV2ViQ29yZQorCisjZW5kaWYgLy8gRU5B
QkxFKElOREVYRURfREFUQUJBU0UpCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVz
L2luZGV4ZWRkYi9jbGllbnQvSURCUmVxdWVzdEltcGwuaCBiL1NvdXJjZS9XZWJDb3JlL01vZHVs
ZXMvaW5kZXhlZGRiL2NsaWVudC9JREJSZXF1ZXN0SW1wbC5oCm5ldyBmaWxlIG1vZGUgMTAwNjQ0
CmluZGV4IDAwMDAwMDAuLjBiYWQ3YWMKLS0tIC9kZXYvbnVsbAorKysgYi9Tb3VyY2UvV2ViQ29y
ZS9Nb2R1bGVzL2luZGV4ZWRkYi9jbGllbnQvSURCUmVxdWVzdEltcGwuaApAQCAtMCwwICsxLDY5
IEBACisvKgorICogQ29weXJpZ2h0IChDKSAyMDE1IEFwcGxlIEluYy4gQWxsIHJpZ2h0cyByZXNl
cnZlZC4KKyAqCisgKiBSZWRpc3RyaWJ1dGlvbiBhbmQgdXNlIGluIHNvdXJjZSBhbmQgYmluYXJ5
IGZvcm1zLCB3aXRoIG9yIHdpdGhvdXQKKyAqIG1vZGlmaWNhdGlvbiwgYXJlIHBlcm1pdHRlZCBw
cm92aWRlZCB0aGF0IHRoZSBmb2xsb3dpbmcgY29uZGl0aW9ucworICogYXJlIG1ldDoKKyAqIDEu
IFJlZGlzdHJpYnV0aW9ucyBvZiBzb3VyY2UgY29kZSBtdXN0IHJldGFpbiB0aGUgYWJvdmUgY29w
eXJpZ2h0CisgKiAgICBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9s
bG93aW5nIGRpc2NsYWltZXIuCisgKiAyLiBSZWRpc3RyaWJ1dGlvbnMgaW4gYmluYXJ5IGZvcm0g
bXVzdCByZXByb2R1Y2UgdGhlIGFib3ZlIGNvcHlyaWdodAorICogICAgbm90aWNlLCB0aGlzIGxp
c3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyIGluIHRoZQorICog
ICAgZG9jdW1lbnRhdGlvbiBhbmQvb3Igb3RoZXIgbWF0ZXJpYWxzIHByb3ZpZGVkIHdpdGggdGhl
IGRpc3RyaWJ1dGlvbi4KKyAqCisgKiBUSElTIFNPRlRXQVJFIElTIFBST1ZJREVEIEJZIEFQUExF
IElOQy4gQU5EIElUUyBDT05UUklCVVRPUlMgYGBBUyBJUycnCisgKiBBTkQgQU5ZIEVYUFJFU1Mg
T1IgSU1QTElFRCBXQVJSQU5USUVTLCBJTkNMVURJTkcsIEJVVCBOT1QgTElNSVRFRCBUTywKKyAq
IFRIRSBJTVBMSUVEIFdBUlJBTlRJRVMgT0YgTUVSQ0hBTlRBQklMSVRZIEFORCBGSVRORVNTIEZP
UiBBIFBBUlRJQ1VMQVIKKyAqIFBVUlBPU0UgQVJFIERJU0NMQUlNRUQuIElOIE5PIEVWRU5UIFNI
QUxMIEFQUExFIElOQy4gT1IgSVRTIENPTlRSSUJVVE9SUworICogQkUgTElBQkxFIEZPUiBBTlkg
RElSRUNULCBJTkRJUkVDVCwgSU5DSURFTlRBTCwgU1BFQ0lBTCwgRVhFTVBMQVJZLCBPUgorICog
Q09OU0VRVUVOVElBTCBEQU1BR0VTIChJTkNMVURJTkcsIEJVVCBOT1QgTElNSVRFRCBUTywgUFJP
Q1VSRU1FTlQgT0YKKyAqIFNVQlNUSVRVVEUgR09PRFMgT1IgU0VSVklDRVM7IExPU1MgT0YgVVNF
LCBEQVRBLCBPUiBQUk9GSVRTOyBPUiBCVVNJTkVTUworICogSU5URVJSVVBUSU9OKSBIT1dFVkVS
IENBVVNFRCBBTkQgT04gQU5ZIFRIRU9SWSBPRiBMSUFCSUxJVFksIFdIRVRIRVIgSU4KKyAqIENP
TlRSQUNULCBTVFJJQ1QgTElBQklMSVRZLCBPUiBUT1JUIChJTkNMVURJTkcgTkVHTElHRU5DRSBP
UiBPVEhFUldJU0UpCisgKiBBUklTSU5HIElOIEFOWSBXQVkgT1VUIE9GIFRIRSBVU0UgT0YgVEhJ
UyBTT0ZUV0FSRSwgRVZFTiBJRiBBRFZJU0VEIE9GCisgKiBUSEUgUE9TU0lCSUxJVFkgT0YgU1VD
SCBEQU1BR0UuCisgKi8KKworI2lmbmRlZiBJREJSZXF1ZXN0SW1wbF9oCisjZGVmaW5lIElEQlJl
cXVlc3RJbXBsX2gKKworI2lmIEVOQUJMRShJTkRFWEVEX0RBVEFCQVNFKQorCisjaW5jbHVkZSAi
SURCT3BlbkRCUmVxdWVzdC5oIgorI2luY2x1ZGUgPHd0Zi9SZWZDb3VudGVkLmg+CisKK25hbWVz
cGFjZSBXZWJDb3JlIHsKK25hbWVzcGFjZSBJREJDbGllbnQgeworCitjbGFzcyBJREJSZXF1ZXN0
IDogcHVibGljIFdlYkNvcmU6OklEQk9wZW5EQlJlcXVlc3QsIHB1YmxpYyBSZWZDb3VudGVkPElE
QlJlcXVlc3Q+IHsKK3B1YmxpYzoKKyAgICB2aXJ0dWFsIFBhc3NSZWZQdHI8SURCQW55PiByZXN1
bHQoRXhjZXB0aW9uQ29kZSYpIGNvbnN0IG92ZXJyaWRlOworICAgIHZpcnR1YWwgdW5zaWduZWQg
c2hvcnQgZXJyb3JDb2RlKEV4Y2VwdGlvbkNvZGUmKSBjb25zdCBvdmVycmlkZTsKKyAgICB2aXJ0
dWFsIFBhc3NSZWZQdHI8RE9NRXJyb3I+IGVycm9yKEV4Y2VwdGlvbkNvZGUmKSBjb25zdCBvdmVy
cmlkZTsKKyAgICB2aXJ0dWFsIFBhc3NSZWZQdHI8SURCQW55PiBzb3VyY2UoKSBjb25zdCBvdmVy
cmlkZTsKKyAgICB2aXJ0dWFsIFBhc3NSZWZQdHI8SURCVHJhbnNhY3Rpb24+IHRyYW5zYWN0aW9u
KCkgY29uc3Qgb3ZlcnJpZGU7CisgICAgdmlydHVhbCBjb25zdCBTdHJpbmcmIHJlYWR5U3RhdGUo
KSBjb25zdCBvdmVycmlkZTsKKworICAgIC8vIEV2ZW50VGFyZ2V0CisgICAgdmlydHVhbCBFdmVu
dFRhcmdldEludGVyZmFjZSBldmVudFRhcmdldEludGVyZmFjZSgpIGNvbnN0IG92ZXJyaWRlOwor
ICAgIHZpcnR1YWwgU2NyaXB0RXhlY3V0aW9uQ29udGV4dCogc2NyaXB0RXhlY3V0aW9uQ29udGV4
dCgpIGNvbnN0IG92ZXJyaWRlIGZpbmFsIHsgcmV0dXJuIEFjdGl2ZURPTU9iamVjdDo6c2NyaXB0
RXhlY3V0aW9uQ29udGV4dCgpOyB9CisKKyAgICB1c2luZyBSZWZDb3VudGVkPElEQlJlcXVlc3Q+
OjpyZWY7CisgICAgdXNpbmcgUmVmQ291bnRlZDxJREJSZXF1ZXN0Pjo6ZGVyZWY7CisKK3Byb3Rl
Y3RlZDoKKyAgICBJREJSZXF1ZXN0KFNjcmlwdEV4ZWN1dGlvbkNvbnRleHQqKTsKKworICAgIC8v
IEFjdGl2ZURPTU9iamVjdC4KKyAgICB2aXJ0dWFsIGNvbnN0IGNoYXIqIGFjdGl2ZURPTU9iamVj
dE5hbWUoKSBjb25zdCBvdmVycmlkZSBmaW5hbDsKKyAgICB2aXJ0dWFsIGJvb2wgY2FuU3VzcGVu
ZEZvclBhZ2VDYWNoZSgpIGNvbnN0IG92ZXJyaWRlIGZpbmFsOworICAgIAorICAgIC8vIEV2ZW50
VGFyZ2V0LgorICAgIHZpcnR1YWwgdm9pZCByZWZFdmVudFRhcmdldCgpIG92ZXJyaWRlIGZpbmFs
IHsgUmVmQ291bnRlZDxJREJSZXF1ZXN0Pjo6cmVmKCk7IH0KKyAgICB2aXJ0dWFsIHZvaWQgZGVy
ZWZFdmVudFRhcmdldCgpIG92ZXJyaWRlIGZpbmFsIHsgUmVmQ291bnRlZDxJREJSZXF1ZXN0Pjo6
ZGVyZWYoKTsgfQorfTsKKworfSAvLyBuYW1lc3BhY2UgSURCQ2xpZW50Cit9IC8vIG5hbWVzcGFj
ZSBXZWJDb3JlCisKKyNlbmRpZiAvLyBFTkFCTEUoSU5ERVhFRF9EQVRBQkFTRSkKKyNlbmRpZiAv
LyBJREJSZXF1ZXN0SW1wbF9oCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9XZWJDb3JlLnhj
b2RlcHJvai9wcm9qZWN0LnBieHByb2ogYi9Tb3VyY2UvV2ViQ29yZS9XZWJDb3JlLnhjb2RlcHJv
ai9wcm9qZWN0LnBieHByb2oKaW5kZXggNDU2OTlkYS4uODVkNmJlMCAxMDA2NDQKLS0tIGEvU291
cmNlL1dlYkNvcmUvV2ViQ29yZS54Y29kZXByb2ovcHJvamVjdC5wYnhwcm9qCisrKyBiL1NvdXJj
ZS9XZWJDb3JlL1dlYkNvcmUueGNvZGVwcm9qL3Byb2plY3QucGJ4cHJvagpAQCAtMTkwOCw2ICsx
OTA4LDEyIEBACiAJCTUxMDE5MkQ2MThCNkI5QjcwMDdGQzdBMSAvKiBJbWFnZUNvbnRyb2xzUm9v
dEVsZW1lbnQuaCBpbiBIZWFkZXJzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9
IDUxMDE5MkQ0MThCNkI5QjcwMDdGQzdBMSAvKiBJbWFnZUNvbnRyb2xzUm9vdEVsZW1lbnQuaCAq
LzsgfTsKIAkJNTEwMzEwNEYxQkE4Q0MwMzAwMzMyOUMwIC8qIElEQkZhY3RvcnlJbXBsLmNwcCBp
biBTb3VyY2VzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IDUxMDMxMDRBMUJB
OEM2QTYwMDMzMjlDMCAvKiBJREJGYWN0b3J5SW1wbC5jcHAgKi87IH07CiAJCTUxMDMxMDUwMUJB
OENDMDMwMDMzMjlDMCAvKiBJREJGYWN0b3J5SW1wbC5oIGluIEhlYWRlcnMgKi8gPSB7aXNhID0g
UEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gNTEwMzEwNEIxQkE4QzZBNjAwMzMyOUMwIC8qIElEQkZh
Y3RvcnlJbXBsLmggKi87IH07CisJCTUxMDMxMDVBMUJBOERCNTYwMDMzMjlDMCAvKiBJREJPcGVu
REJSZXF1ZXN0SW1wbC5jcHAgaW4gU291cmNlcyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZp
bGVSZWYgPSA1MTAzMTA1NjFCQThEQjMwMDAzMzI5QzAgLyogSURCT3BlbkRCUmVxdWVzdEltcGwu
Y3BwICovOyB9OworCQk1MTAzMTA1QjFCQThEQjU2MDAzMzI5QzAgLyogSURCT3BlbkRCUmVxdWVz
dEltcGwuaCBpbiBIZWFkZXJzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IDUx
MDMxMDU3MUJBOERCMzAwMDMzMjlDMCAvKiBJREJPcGVuREJSZXF1ZXN0SW1wbC5oICovOyB9Owor
CQk1MTAzMTA1QzFCQThEQjU2MDAzMzI5QzAgLyogSURCUmVxdWVzdEltcGwuY3BwIGluIFNvdXJj
ZXMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gNTEwMzEwNTgxQkE4REIzMDAw
MzMyOUMwIC8qIElEQlJlcXVlc3RJbXBsLmNwcCAqLzsgfTsKKwkJNTEwMzEwNUQxQkE4REI1NjAw
MzMyOUMwIC8qIElEQlJlcXVlc3RJbXBsLmggaW4gSGVhZGVycyAqLyA9IHtpc2EgPSBQQlhCdWls
ZEZpbGU7IGZpbGVSZWYgPSA1MTAzMTA1OTFCQThEQjMwMDAzMzI5QzAgLyogSURCUmVxdWVzdElt
cGwuaCAqLzsgfTsKKwkJNTEwMzEwNjAxQkE4RTBFMzAwMzMyOUMwIC8qIElEQkRhdGFiYXNlSWRl
bnRpZmllci5oIGluIEhlYWRlcnMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0g
NTEwMzEwNUYxQkE4RTA5MDAwMzMyOUMwIC8qIElEQkRhdGFiYXNlSWRlbnRpZmllci5oICovOyB9
OworCQk1MTAzMTA2MTFCQThFMTBEMDAzMzI5QzAgLyogSURCRGF0YWJhc2VJZGVudGlmaWVyLmNw
cCBpbiBTb3VyY2VzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IDUxMDMxMDVF
MUJBOEUwOTAwMDMzMjlDMCAvKiBJREJEYXRhYmFzZUlkZW50aWZpZXIuY3BwICovOyB9OwogCQk1
MTAzQzJCMTFCQTIyRDFBMDBFMjYzMzcgLyogTGVnYWN5QW55LmNwcCBpbiBTb3VyY2VzICovID0g
e2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IDUxNjQ1QjZFMUJBMEE3NjEwMEY3ODlDRSAv
KiBMZWdhY3lBbnkuY3BwICovOyB9OwogCQk1MTAzQzJCMjFCQTIzMTc0MDBFMjYzMzcgLyogSURC
VHJhbnNhY3Rpb24uY3BwIGluIFNvdXJjZXMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxl
UmVmID0gNTE2NDVCNTAxQjlGODg5QjAwRjc4OUNFIC8qIElEQlRyYW5zYWN0aW9uLmNwcCAqLzsg
fTsKIAkJNTEwM0MyQjMxQkEyMzI0RDAwRTI2MzM3IC8qIElEQkN1cnNvci5jcHAgaW4gU291cmNl
cyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSA1MTY0NUI1NDFCOUY4OEU4MDBG
Nzg5Q0UgLyogSURCQ3Vyc29yLmNwcCAqLzsgfTsKQEAgLTkxODksNiArOTE5NSwxMiBAQAogCQk1
MTAxOTJEODE4QjdEN0FCMDA3RkM3QTEgLyogaW1hZ2VDb250cm9sc01hYy5jc3MgKi8gPSB7aXNh
ID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUg
PSB0ZXh0LmNzczsgcGF0aCA9IGltYWdlQ29udHJvbHNNYWMuY3NzOyBzb3VyY2VUcmVlID0gIjxn
cm91cD4iOyB9OwogCQk1MTAzMTA0QTFCQThDNkE2MDAzMzI5QzAgLyogSURCRmFjdG9yeUltcGwu
Y3BwICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RL
bm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jcHAuY3BwOyBwYXRoID0gSURCRmFjdG9yeUltcGwu
Y3BwOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OwogCQk1MTAzMTA0QjFCQThDNkE2MDAzMzI5
QzAgLyogSURCRmFjdG9yeUltcGwuaCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxl
RW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuYy5oOyBwYXRoID0g
SURCRmFjdG9yeUltcGwuaDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKKwkJNTEwMzEwNTYx
QkE4REIzMDAwMzMyOUMwIC8qIElEQk9wZW5EQlJlcXVlc3RJbXBsLmNwcCAqLyA9IHtpc2EgPSBQ
QlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHNv
dXJjZWNvZGUuY3BwLmNwcDsgcGF0aCA9IElEQk9wZW5EQlJlcXVlc3RJbXBsLmNwcDsgc291cmNl
VHJlZSA9ICI8Z3JvdXA+IjsgfTsKKwkJNTEwMzEwNTcxQkE4REIzMDAwMzMyOUMwIC8qIElEQk9w
ZW5EQlJlcXVlc3RJbXBsLmggKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29k
aW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmMuaDsgcGF0aCA9IElEQk9w
ZW5EQlJlcXVlc3RJbXBsLmg7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CisJCTUxMDMxMDU4
MUJBOERCMzAwMDMzMjlDMCAvKiBJREJSZXF1ZXN0SW1wbC5jcHAgKi8gPSB7aXNhID0gUEJYRmls
ZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vj
b2RlLmNwcC5jcHA7IHBhdGggPSBJREJSZXF1ZXN0SW1wbC5jcHA7IHNvdXJjZVRyZWUgPSAiPGdy
b3VwPiI7IH07CisJCTUxMDMxMDU5MUJBOERCMzAwMDMzMjlDMCAvKiBJREJSZXF1ZXN0SW1wbC5o
ICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93
bkZpbGVUeXBlID0gc291cmNlY29kZS5jLmg7IHBhdGggPSBJREJSZXF1ZXN0SW1wbC5oOyBzb3Vy
Y2VUcmVlID0gIjxncm91cD4iOyB9OworCQk1MTAzMTA1RTFCQThFMDkwMDAzMzI5QzAgLyogSURC
RGF0YWJhc2VJZGVudGlmaWVyLmNwcCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxl
RW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuY3BwLmNwcDsgcGF0
aCA9IElEQkRhdGFiYXNlSWRlbnRpZmllci5jcHA7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07
CisJCTUxMDMxMDVGMUJBOEUwOTAwMDMzMjlDMCAvKiBJREJEYXRhYmFzZUlkZW50aWZpZXIuaCAq
LyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25G
aWxlVHlwZSA9IHNvdXJjZWNvZGUuYy5oOyBwYXRoID0gSURCRGF0YWJhc2VJZGVudGlmaWVyLmg7
IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CiAJCTUxMDZEN0JCMThCREI3NkYwMDBBQjE2NiAv
KiBDb250ZXh0TWVudUNvbnRleHQuY3BwICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZp
bGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jcHAuY3BwOyBw
YXRoID0gQ29udGV4dE1lbnVDb250ZXh0LmNwcDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsK
IAkJNTEwNkQ3QkMxOEJEQjc2RjAwMEFCMTY2IC8qIENvbnRleHRNZW51Q29udGV4dC5oICovID0g
e2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVU
eXBlID0gc291cmNlY29kZS5jLmg7IHBhdGggPSBDb250ZXh0TWVudUNvbnRleHQuaDsgc291cmNl
VHJlZSA9ICI8Z3JvdXA+IjsgfTsKIAkJNTEwQTMyNkUxODMxODQzMTAwM0M1MzI2IC8qIElEQlNl
cnZlckNvbm5lY3Rpb24uaCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2Rp
bmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuYy5oOyBwYXRoID0gSURCU2Vy
dmVyQ29ubmVjdGlvbi5oOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OwpAQCAtMTY1MzUsNiAr
MTY1NDcsMTAgQEAKIAkJNTEwMzEwNDIxQkE4QzY0QzAwMzMyOUMwIC8qIGNsaWVudCAqLyA9IHsK
IAkJCWlzYSA9IFBCWEdyb3VwOwogCQkJY2hpbGRyZW4gPSAoCisJCQkJNTEwMzEwNTYxQkE4REIz
MDAwMzMyOUMwIC8qIElEQk9wZW5EQlJlcXVlc3RJbXBsLmNwcCAqLywKKwkJCQk1MTAzMTA1NzFC
QThEQjMwMDAzMzI5QzAgLyogSURCT3BlbkRCUmVxdWVzdEltcGwuaCAqLywKKwkJCQk1MTAzMTA1
ODFCQThEQjMwMDAzMzI5QzAgLyogSURCUmVxdWVzdEltcGwuY3BwICovLAorCQkJCTUxMDMxMDU5
MUJBOERCMzAwMDMzMjlDMCAvKiBJREJSZXF1ZXN0SW1wbC5oICovLAogCQkJCTUxMDMxMDRBMUJB
OEM2QTYwMDMzMjlDMCAvKiBJREJGYWN0b3J5SW1wbC5jcHAgKi8sCiAJCQkJNTEwMzEwNEIxQkE4
QzZBNjAwMzMyOUMwIC8qIElEQkZhY3RvcnlJbXBsLmggKi8sCiAJCQkpOwpAQCAtMTg3NzMsNiAr
MTg3ODksOCBAQAogCQkJCTUxRDcxOTgzMTgxMTA2REYwMDE2REM1MSAvKiBJREJEYXRhYmFzZUVy
cm9yLmggKi8sCiAJCQkJNTFENzE5ODQxODExMDZERjAwMTZEQzUxIC8qIElEQkRhdGFiYXNlRXhj
ZXB0aW9uLmNwcCAqLywKIAkJCQk1MUQ3MTk4NTE4MTEwNkRGMDAxNkRDNTEgLyogSURCRGF0YWJh
c2VFeGNlcHRpb24uaCAqLywKKwkJCQk1MTAzMTA1RTFCQThFMDkwMDAzMzI5QzAgLyogSURCRGF0
YWJhc2VJZGVudGlmaWVyLmNwcCAqLywKKwkJCQk1MTAzMTA1RjFCQThFMDkwMDAzMzI5QzAgLyog
SURCRGF0YWJhc2VJZGVudGlmaWVyLmggKi8sCiAJCQkJNTE2MzExN0MxODUxMjQyQjAwNTM0NjQ3
IC8qIElEQkRhdGFiYXNlTWV0YWRhdGEuY3BwICovLAogCQkJCTUxQzk2MTFBMTgzRDJCODAwMEQy
MDAyRSAvKiBJREJEYXRhYmFzZU1ldGFkYXRhLmggKi8sCiAJCQkJNTFENzE5ODYxODExMDZERjAw
MTZEQzUxIC8qIElEQkV2ZW50RGlzcGF0Y2hlci5jcHAgKi8sCkBAIC0yNDA4Myw2ICsyNDEwMSw3
IEBACiAJCQkJNDlFOTEyQUQwRUZBQzkwNjAwOUQwQ0FGIC8qIEFuaW1hdGlvbkxpc3QuaCBpbiBI
ZWFkZXJzICovLAogCQkJCTMxRENEMjlEMUFCNEZCREUwMDcyRTgxNyAvKiBBbmltYXRpb25Ucmln
Z2VyLmggaW4gSGVhZGVycyAqLywKIAkJCQkwRjU4MEZBRjE0OTgwMEQ0MDBGQjVCRDggLyogQW5p
bWF0aW9uVXRpbGl0aWVzLmggaW4gSGVhZGVycyAqLywKKwkJCQk1MTAzMTA2MDFCQThFMEUzMDAz
MzI5QzAgLyogSURCRGF0YWJhc2VJZGVudGlmaWVyLmggaW4gSGVhZGVycyAqLywKIAkJCQk5MzMw
OURENzA5OUU2NDkyMDA1NkU1ODEgLyogQXBwZW5kTm9kZUNvbW1hbmQuaCBpbiBIZWFkZXJzICov
LAogCQkJCTFBOEY2QkJEMERCNTVDREMwMDFEQjc5NCAvKiBBcHBsaWNhdGlvbkNhY2hlLmggaW4g
SGVhZGVycyAqLywKIAkJCQkxQThGNkJCRjBEQjU1Q0RDMDAxREI3OTQgLyogQXBwbGljYXRpb25D
YWNoZUdyb3VwLmggaW4gSGVhZGVycyAqLywKQEAgLTI0NDM3LDYgKzI0NDU2LDcgQEAKIAkJCQlD
RDNFMjUyNDE4MDQ2QkNEMDBFMjdGNTYgLyogQ1NTR3JpZFRlbXBsYXRlQXJlYXNWYWx1ZS5oIGlu
IEhlYWRlcnMgKi8sCiAJCQkJRkIzMDU2QzIxNjlFNURBQzAwOTZBMjMyIC8qIENTU0dyb3VwaW5n
UnVsZS5oIGluIEhlYWRlcnMgKi8sCiAJCQkJQkM3NzJCM0MwQzRFQTkxRTAwODMyODVGIC8qIENT
U0hlbHBlci5oIGluIEhlYWRlcnMgKi8sCisJCQkJNTEwMzEwNUQxQkE4REI1NjAwMzMyOUMwIC8q
IElEQlJlcXVlc3RJbXBsLmggaW4gSGVhZGVycyAqLywKIAkJCQlCQzIzRUU5MjBEQUVEMkJDMDA5
RkRDOTEgLyogQ1NTSW1hZ2VHZW5lcmF0b3JWYWx1ZS5oIGluIEhlYWRlcnMgKi8sCiAJCQkJOTM5
M0U2MDAxNTFBOTlGMjAwMDY2RjA2IC8qIENTU0ltYWdlU2V0VmFsdWUuaCBpbiBIZWFkZXJzICov
LAogCQkJCUE4MEU2Q0ZBMEExOTg5Q0EwMDdGQjhDNSAvKiBDU1NJbWFnZVZhbHVlLmggaW4gSGVh
ZGVycyAqLywKQEAgLTI1NzAxLDYgKzI1NzIxLDcgQEAKIAkJCQlDNkY0MjBBMzE2QjcxNjRFMDA1
MkE5RjIgLyogSlNNdXRhdGlvbkNhbGxiYWNrLmggaW4gSGVhZGVycyAqLywKIAkJCQk2NURGMzFG
QzA5RDFDQzYwMDAwQkUzMjUgLyogSlNNdXRhdGlvbkV2ZW50LmggaW4gSGVhZGVycyAqLywKIAkJ
CQlDNkYwOTAyRDE0MzI3RDRGMDA2ODU4NDkgLyogSlNNdXRhdGlvbk9ic2VydmVyLmggaW4gSGVh
ZGVycyAqLywKKwkJCQk1MTAzMTA1QjFCQThEQjU2MDAzMzI5QzAgLyogSURCT3BlbkRCUmVxdWVz
dEltcGwuaCBpbiBIZWFkZXJzICovLAogCQkJCUM2RjA4RkNBMTQzMTAwMEQwMDY4NTg0OSAvKiBK
U011dGF0aW9uUmVjb3JkLmggaW4gSGVhZGVycyAqLywKIAkJCQlCQ0Q5QzJDMTBDMTdCNjlFMDA1
QzkwQTIgLyogSlNOYW1lZE5vZGVNYXAuaCBpbiBIZWFkZXJzICovLAogCQkJCUE5RDI0N0Y4MEQ3
NTdFMzQwMEZERjk1OSAvKiBKU05hdmlnYXRvci5oIGluIEhlYWRlcnMgKi8sCkBAIC0yODc2OCw2
ICsyODc4OSw3IEBACiAJCQkJRTE0RjFDNDQxNEI1REFDNjAwRUE5MDA5IC8qIEhUTUxGb3JtQ29u
dHJvbEVsZW1lbnRXaXRoU3RhdGUuY3BwIGluIFNvdXJjZXMgKi8sCiAJCQkJQThERjNGQ0YwOTdG
QTBGQzAwNTI5ODFCIC8qIEhUTUxGb3JtQ29udHJvbHNDb2xsZWN0aW9uLmNwcCBpbiBTb3VyY2Vz
ICovLAogCQkJCUE4MTM2OUQxMDk3Mzc0RjYwMEQ3NDQ2MyAvKiBIVE1MRm9ybUVsZW1lbnQuY3Bw
IGluIFNvdXJjZXMgKi8sCisJCQkJNTEwMzEwNUMxQkE4REI1NjAwMzMyOUMwIC8qIElEQlJlcXVl
c3RJbXBsLmNwcCBpbiBTb3VyY2VzICovLAogCQkJCUE4NzFERTIzMEExNTJBQzgwMEIxMkE2OCAv
KiBIVE1MRnJhbWVFbGVtZW50LmNwcCBpbiBTb3VyY2VzICovLAogCQkJCTE0RkZFMzFFMEFFMTk2
MzMwMDEzNkJGNSAvKiBIVE1MRnJhbWVFbGVtZW50QmFzZS5jcHAgaW4gU291cmNlcyAqLywKIAkJ
CQk5M0UyNDI1RjBCMkI1MDk1MDBDNzMyQTEgLyogSFRNTEZyYW1lT3duZXJFbGVtZW50LmNwcCBp
biBTb3VyY2VzICovLApAQCAtMjk3OTEsNiArMjk4MTMsNyBAQAogCQkJCTA3OEUwOTAyMTdEMTRD
RUUwMDQyMEFBMSAvKiBNZWRpYVN0cmVhbVRyYWNrLmNwcCBpbiBTb3VyY2VzICovLAogCQkJCTA3
OEUwOTAzMTdEMTRDRUUwMDQyMEFBMSAvKiBNZWRpYVN0cmVhbVRyYWNrRXZlbnQuY3BwIGluIFNv
dXJjZXMgKi8sCiAJCQkJMDdGRkRFNjgxODFBRUQ0MjAwNzJENDA5IC8qIE1lZGlhU3RyZWFtVHJh
Y2tQcml2YXRlLmNwcCBpbiBTb3VyY2VzICovLAorCQkJCTUxMDMxMDYxMUJBOEUxMEQwMDMzMjlD
MCAvKiBJREJEYXRhYmFzZUlkZW50aWZpZXIuY3BwIGluIFNvdXJjZXMgKi8sCiAJCQkJMDc2MzA2
RDIxN0UxNDc4RDAwNUE3QzRFIC8qIE1lZGlhU3RyZWFtVHJhY2tTb3VyY2VzUmVxdWVzdC5jcHAg
aW4gU291cmNlcyAqLywKIAkJCQlDRDY0MUVCRjE4MTlCMzYwMDBFRTRDNDEgLyogTWVkaWFUaW1l
QVZGb3VuZGF0aW9uLmNwcCBpbiBTb3VyY2VzICovLAogCQkJCUNENjBDMEM2MTkzRTg3QzcwMDND
NjU2QiAvKiBNZWRpYVRpbWVRVEtpdC5tbSBpbiBTb3VyY2VzICovLApAQCAtMzA4MjksNiArMzA4
NTIsNyBAQAogCQkJCTQ5ODM5MTU4MEYxRTc3NjkwMEMyMzc4MiAvKiBXZWJLaXRDU1NNYXRyaXgu
Y3BwIGluIFNvdXJjZXMgKi8sCiAJCQkJOEFBNjFDRkYxNDRENTk1QjAwRjM3MzUwIC8qIFdlYktp
dENTU1JlZ2lvblJ1bGUuY3BwIGluIFNvdXJjZXMgKi8sCiAJCQkJQkM5QUREODAwQ0M0MDkyMjAw
MDk4QzRDIC8qIFdlYktpdENTU1RyYW5zZm9ybVZhbHVlLmNwcCBpbiBTb3VyY2VzICovLAorCQkJ
CTUxMDMxMDVBMUJBOERCNTYwMDMzMjlDMCAvKiBJREJPcGVuREJSZXF1ZXN0SW1wbC5jcHAgaW4g
U291cmNlcyAqLywKIAkJCQkzRkZGRjlBODE1OUQ5QTU1MDAyMEJCRDUgLyogV2ViS2l0Q1NTVmll
d3BvcnRSdWxlLmNwcCBpbiBTb3VyY2VzICovLAogCQkJCTFBMTQxNEI1MTNBMEYwNTAwMDE5OTk2
QyAvKiBXZWJLaXRGb250RmFtaWx5TmFtZXMuY3BwIGluIFNvdXJjZXMgKi8sCiAJCQkJRDc2MTNB
NTAxNDc0RjEzRjAwREI4NjA2IC8qIFdlYktpdE5hbWVkRmxvdy5jcHAgaW4gU291cmNlcyAqLywK
ZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL0xvZ2dpbmcuaCBiL1NvdXJjZS9X
ZWJDb3JlL3BsYXRmb3JtL0xvZ2dpbmcuaAppbmRleCAxOTIxMjk5Li4zM2QxNzA1IDEwMDY0NAot
LS0gYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9Mb2dnaW5nLmgKKysrIGIvU291cmNlL1dlYkNv
cmUvcGxhdGZvcm0vTG9nZ2luZy5oCkBAIC01Miw2ICs1Miw3IEBAIG5hbWVzcGFjZSBXZWJDb3Jl
IHsKICAgICBNKEdhbWVwYWQpIFwKICAgICBNKEhpc3RvcnkpIFwKICAgICBNKEljb25EYXRhYmFz
ZSkgXAorICAgIE0oSW5kZXhlZERCKSBcCiAgICAgTShMYXlvdXQpIFwKICAgICBNKExvYWRpbmcp
IFwKICAgICBNKE1lZGlhKSBcCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L21hYy9DaGFuZ2VM
b2cgYi9Tb3VyY2UvV2ViS2l0L21hYy9DaGFuZ2VMb2cKaW5kZXggNmJmNGNlMy4uMmI5MTA2MyAx
MDA2NDQKLS0tIGEvU291cmNlL1dlYktpdC9tYWMvQ2hhbmdlTG9nCisrKyBiL1NvdXJjZS9XZWJL
aXQvbWFjL0NoYW5nZUxvZwpAQCAtMSwzICsxLDEzIEBACisyMDE1LTA5LTE2ICBCcmFkeSBFaWRz
b24gIDxiZWlkc29uQGFwcGxlLmNvbT4KKworICAgICAgICBIYXZlIHdpbmRvdy5pbmRleGVkREIu
ZGVsZXRlRGF0YWJhc2UgcmV0dXJuIGFuIElEQk9wZW5EQlJlcXVlc3QuCisgICAgICAgIGh0dHBz
Oi8vYnVncy53ZWJraXQub3JnL3Nob3dfYnVnLmNnaT9pZD0xNDkyMjkKKworICAgICAgICBSZXZp
ZXdlZCBieSBOT0JPRFkgKE9PUFMhKS4KKworICAgICAgICAqIFdlYlZpZXcvV2ViVmlldy5tbToK
KyAgICAgICAgKC1bV2ViVmlldyBfcHJlZmVyZW5jZXNDaGFuZ2VkOl0pOiBFbmFibGUgSURCIGlu
IFdLMS4KKwogMjAxNS0wOS0xNSAgUnlvc3VrZSBOaXdhICA8cm5pd2FAd2Via2l0Lm9yZz4KIAog
ICAgICAgICBBZGQgU2hhZG93Um9vdCBpbnRlcmZhY2UgYW5kIEVsZW1lbnQucHJvdG90eXBlLmF0
dGFjaFNoYWRvdwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC9tYWMvV2ViVmlldy9XZWJWaWV3
Lm1tIGIvU291cmNlL1dlYktpdC9tYWMvV2ViVmlldy9XZWJWaWV3Lm1tCmluZGV4IDhmNzllMjYu
LmU5ZmM4NjIgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQvbWFjL1dlYlZpZXcvV2ViVmlldy5t
bQorKysgYi9Tb3VyY2UvV2ViS2l0L21hYy9XZWJWaWV3L1dlYlZpZXcubW0KQEAgLTI0NDEsNiAr
MjQ0MSwxMCBAQCAtICh2b2lkKV9wcmVmZXJlbmNlc0NoYW5nZWQ6KFdlYlByZWZlcmVuY2VzICop
cHJlZmVyZW5jZXMKICAgICBSdW50aW1lRW5hYmxlZEZlYXR1cmVzOjpzaGFyZWRGZWF0dXJlcygp
LnNldEdhbWVwYWRzRW5hYmxlZChbcHJlZmVyZW5jZXMgZ2FtZXBhZHNFbmFibGVkXSk7CiAjZW5k
aWYKIAorI2lmIEVOQUJMRShJTkRFWEVEX0RBVEFCQVNFKQorICAgIFJ1bnRpbWVFbmFibGVkRmVh
dHVyZXM6OnNoYXJlZEZlYXR1cmVzKCkuc2V0V2Via2l0SW5kZXhlZERCRW5hYmxlZCh0cnVlKTsK
KyNlbmRpZgorCiAgICAgTlNUaW1lSW50ZXJ2YWwgdGltZW91dCA9IFtwcmVmZXJlbmNlcyBpbmNy
ZW1lbnRhbFJlbmRlcmluZ1N1cHByZXNzaW9uVGltZW91dEluU2Vjb25kc107CiAgICAgaWYgKHRp
bWVvdXQgPiAwKQogICAgICAgICBzZXR0aW5ncy5zZXRJbmNyZW1lbnRhbFJlbmRlcmluZ1N1cHBy
ZXNzaW9uVGltZW91dEluU2Vjb25kcyh0aW1lb3V0KTsK
</data>
<flag name="review"
          id="286530"
          type_id="1"
          status="+"
          setter="achristensen"
    />
          </attachment>
      

    </bug>

</bugzilla>