<?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>107974</bug_id>
          
          <creation_ts>2013-01-25 12:06:16 -0800</creation_ts>
          <short_desc>HTTP Authentication should be directly between the NetworkProcess and the UIProcess</short_desc>
          <delta_ts>2013-01-25 16:05:35 -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>WebKit2</component>
          <version>528+ (Nightly build)</version>
          <rep_platform>All</rep_platform>
          <op_sys>All</op_sys>
          <bug_status>RESOLVED</bug_status>
          <resolution>FIXED</resolution>
          
          
          <bug_file_loc></bug_file_loc>
          <status_whiteboard></status_whiteboard>
          <keywords>InRadar</keywords>
          <priority>P2</priority>
          <bug_severity>Normal</bug_severity>
          <target_milestone>---</target_milestone>
          
          
          <everconfirmed>1</everconfirmed>
          <reporter name="Brady Eidson">beidson</reporter>
          <assigned_to name="Brady Eidson">beidson</assigned_to>
          <cc>andersca</cc>
    
    <cc>ap</cc>
    
    <cc>buildbot</cc>
    
    <cc>rniwa</cc>
          

      

      

      

          <comment_sort_order>oldest_to_newest</comment_sort_order>  
          <long_desc isprivate="0" >
    <commentid>816823</commentid>
    <comment_count>0</comment_count>
    <who name="Brady Eidson">beidson</who>
    <bug_when>2013-01-25 12:06:16 -0800</bug_when>
    <thetext>HTTP Authentication should be directly between the NetworkProcess and the UIProcess

In radar as &lt;rdar://problem/13074829&gt;</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>816825</commentid>
    <comment_count>1</comment_count>
    <who name="Brady Eidson">beidson</who>
    <bug_when>2013-01-25 12:07:46 -0800</bug_when>
    <thetext>*** Bug 107758 has been marked as a duplicate of this bug. ***</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>816833</commentid>
    <comment_count>2</comment_count>
      <attachid>184793</attachid>
    <who name="Brady Eidson">beidson</who>
    <bug_when>2013-01-25 12:15:08 -0800</bug_when>
    <thetext>Created attachment 184793
Patch v1</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>816852</commentid>
    <comment_count>3</comment_count>
      <attachid>184793</attachid>
    <who name="Build Bot">buildbot</who>
    <bug_when>2013-01-25 12:55:21 -0800</bug_when>
    <thetext>Comment on attachment 184793
Patch v1

Attachment 184793 did not pass mac-wk2-ews (mac-wk2):
Output: http://queues.webkit.org/results/16116508</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>816855</commentid>
    <comment_count>4</comment_count>
      <attachid>184793</attachid>
    <who name="Build Bot">buildbot</who>
    <bug_when>2013-01-25 13:00:13 -0800</bug_when>
    <thetext>Comment on attachment 184793
Patch v1

Attachment 184793 did not pass mac-ews (mac):
Output: http://queues.webkit.org/results/16122478</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>816883</commentid>
    <comment_count>5</comment_count>
      <attachid>184793</attachid>
    <who name="Alexey Proskuryakov">ap</who>
    <bug_when>2013-01-25 13:36:39 -0800</bug_when>
    <thetext>Comment on attachment 184793
Patch v1

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

We can m_identifier from AuthenticationChallengeBase now. Will you do that in a follow-up patch, or should I?

&gt; Source/WebKit2/ChangeLog:29
&gt; +        Include the WebPage and WebFrame ID for the originator of this request in case it results in a challenge:

These IDs are generated by UI process, correct?

&gt; Source/WebKit2/NetworkProcess/NetworkResourceLoader.cpp:235
&gt; +    uint64_t webPageID = loadParameters().webPageID();
&gt; +    uint64_t webFrameID = loadParameters().webFrameID();

We no longer copy the whole IPC parameters structure into SchedulableLoader, this is why the build failed.

&gt; Source/WebKit2/Shared/Authentication/AuthenticationManager.cpp:71
&gt; +uint64_t AuthenticationManager::mapChallengeToIdentifier(const WebCore::AuthenticationChallenge&amp; authenticationChallenge)

Perhaps &quot;establishIdentifierForChallenge&quot;?

&gt; Source/WebKit2/Shared/Authentication/AuthenticationManager.cpp:73
&gt; +    uint64_t challengeID = generateAuthenticationChallengeID();

That function is not thread safe. Switch to atomicIncrement?

&gt; Source/WebKit2/UIProcess/WebProcessProxy.cpp:83
&gt; +    DEFINE_STATIC_LOCAL(WebProcessProxy::WebPageProxyMap, pageMap, ());
&gt; +    return pageMap;

Maybe ASSERT(isMainThread())?

&gt; Source/WebKit2/UIProcess/WebProcessProxy.h:82
&gt; -    WebPageProxy* webPage(uint64_t pageID) const;
&gt; +    static WebPageProxy* webPage(uint64_t pageID);

I don&apos;t see any issue with this, but suggest double-checking with Sam or Anders.

&gt; Source/WebKit2/WebProcess/WebCoreSupport/WebPlatformStrategies.cpp:231
&gt; +    NetworkResourceLoadParameters loadParameters(resourceLoadIdentifier, 0, 0, request, ResourceLoadPriorityHighest, SniffContent, storedCredentials, context-&gt;storageSession().isPrivateBrowsingSession());

This is worth a ChangeLog comment. Implementing authentication for sync requests needs to start at ResourceHandleMac level, but this wasn&apos;t immediately obvious to me.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>816931</commentid>
    <comment_count>6</comment_count>
    <who name="Brady Eidson">beidson</who>
    <bug_when>2013-01-25 14:49:37 -0800</bug_when>
    <thetext>The build failures are do to a refactoring patch landed in the interim, and will be easy to clear up.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>816938</commentid>
    <comment_count>7</comment_count>
    <who name="Brady Eidson">beidson</who>
    <bug_when>2013-01-25 15:00:53 -0800</bug_when>
    <thetext>(In reply to comment #5)
&gt; (From update of attachment 184793 [details])
&gt; View in context: https://bugs.webkit.org/attachment.cgi?id=184793&amp;action=review
&gt; 
&gt; We can m_identifier from AuthenticationChallengeBase now. Will you do that in a follow-up patch, or should I?
&gt; 
&gt; &gt; Source/WebKit2/ChangeLog:29
&gt; &gt; +        Include the WebPage and WebFrame ID for the originator of this request in case it results in a challenge:
&gt; 
&gt; These IDs are generated by UI process, correct?

The WebPage ID is generated by the UI process.
The WebFrame ID is generated by the WebProcess, and they are unique per WebProcess.

That is why it is necessary to shuttle both around, because once we get in to the UI Process we need to find the appropriate page based on the UI-unique page ID, then find the appropriate frame based on the WebProcess-unique frame ID.

&gt; &gt; Source/WebKit2/NetworkProcess/NetworkResourceLoader.cpp:235
&gt; &gt; +    uint64_t webPageID = loadParameters().webPageID();
&gt; &gt; +    uint64_t webFrameID = loadParameters().webFrameID();
&gt; 
&gt; We no longer copy the whole IPC parameters structure into SchedulableLoader, this is why the build failed.

Yup.  I will adapt.
 
&gt; &gt; Source/WebKit2/Shared/Authentication/AuthenticationManager.cpp:71
&gt; &gt; +uint64_t AuthenticationManager::mapChallengeToIdentifier(const WebCore::AuthenticationChallenge&amp; authenticationChallenge)
&gt; 
&gt; Perhaps &quot;establishIdentifierForChallenge&quot;?

I like it.

&gt; &gt; Source/WebKit2/Shared/Authentication/AuthenticationManager.cpp:73
&gt; &gt; +    uint64_t challengeID = generateAuthenticationChallengeID();
&gt; 
&gt; That function is not thread safe. Switch to atomicIncrement?

Nice catch.

&gt; &gt; Source/WebKit2/UIProcess/WebProcessProxy.cpp:83
&gt; &gt; +    DEFINE_STATIC_LOCAL(WebProcessProxy::WebPageProxyMap, pageMap, ());
&gt; &gt; +    return pageMap;
&gt; 
&gt; Maybe ASSERT(isMainThread())?

Sure!

&gt; &gt; Source/WebKit2/UIProcess/WebProcessProxy.h:82
&gt; &gt; -    WebPageProxy* webPage(uint64_t pageID) const;
&gt; &gt; +    static WebPageProxy* webPage(uint64_t pageID);
&gt; 
&gt; I don&apos;t see any issue with this, but suggest double-checking with Sam or Anders.

I already consulted Anders and he gave me the go ahead.

&gt; &gt; Source/WebKit2/WebProcess/WebCoreSupport/WebPlatformStrategies.cpp:231
&gt; &gt; +    NetworkResourceLoadParameters loadParameters(resourceLoadIdentifier, 0, 0, request, ResourceLoadPriorityHighest, SniffContent, storedCredentials, context-&gt;storageSession().isPrivateBrowsingSession());
&gt; 
&gt; This is worth a ChangeLog comment. Implementing authentication for sync requests needs to start at ResourceHandleMac level, but this wasn&apos;t immediately obvious to me.

Okay!</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>817006</commentid>
    <comment_count>8</comment_count>
    <who name="Brady Eidson">beidson</who>
    <bug_when>2013-01-25 16:05:35 -0800</bug_when>
    <thetext>http://trac.webkit.org/changeset/140874</thetext>
  </long_desc>
      
          <attachment
              isobsolete="0"
              ispatch="1"
              isprivate="0"
          >
            <attachid>184793</attachid>
            <date>2013-01-25 12:15:08 -0800</date>
            <delta_ts>2013-01-25 13:36:39 -0800</delta_ts>
            <desc>Patch v1</desc>
            <filename>patch</filename>
            <type>text/plain</type>
            <size>27264</size>
            <attacher name="Brady Eidson">beidson</attacher>
            
              <data encoding="base64">ZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQyL0NoYW5nZUxvZyBiL1NvdXJjZS9XZWJLaXQyL0No
YW5nZUxvZwppbmRleCA2OGY5MDM4Li41MjYwZTUwIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0
Mi9DaGFuZ2VMb2cKKysrIGIvU291cmNlL1dlYktpdDIvQ2hhbmdlTG9nCkBAIC0xLDUgKzEsNjkg
QEAKIDIwMTMtMDEtMjUgIEJyYWR5IEVpZHNvbiAgPGJlaWRzb25AYXBwbGUuY29tPgogCisgICAg
ICAgIEhUVFAgQXV0aGVudGljYXRpb24gc2hvdWxkIGJlIGRpcmVjdGx5IGJldHdlZW4gdGhlIE5l
dHdvcmtQcm9jZXNzIGFuZCB0aGUgVUlQcm9jZXNzCisgICAgICAgIDxyZGFyOi8vcHJvYmxlbS8x
MzA3NDgyOT4gYW5kIGh0dHBzOi8vYnVncy53ZWJraXQub3JnL3Nob3dfYnVnLmNnaT9pZD0xMDc5
NzQKKworICAgICAgICBSZXZpZXdlZCBieSBOT0JPRFkgKE9PUFMhKS4KKworICAgICAgICBTb21l
IG9mIHRoaXMgcGF0Y2ggaXMgcmVmYWN0b3JpbmcgdG8gZW5hYmxlIG1vcmUgZmxleGliaWxpdHkg
aW4gdGhlIGF1dGhlbnRpY2F0aW9uIG1lY2hhbmlzbQorICAgICAgICBhbmQgdGhlIHJlc3QgaXMg
YWN0dWFsbHkgaW1wbGVtZW50aW5nIE5ldHdvcmstPlVJIHByb2Nlc3MgYXV0aGVudGljYXRpb24u
CisKKyAgICAgICAgRXhwb3NlIHRoZSBzYW1lIEF1dGhlbnRpY2F0aW9uTWFuYWdlciB0byBhbnlv
bmUgaW4gdGhlIE5ldHdvcmtQcm9jZXNzIGFza2luZyBmb3IgaXQ6CisgICAgICAgICogTmV0d29y
a1Byb2Nlc3MvTmV0d29ya1Byb2Nlc3MuY3BwOgorICAgICAgICAoV2ViS2l0OjpOZXR3b3JrUHJv
Y2Vzczo6YXV0aGVudGljYXRpb25NYW5hZ2VyKToKKyAgICAgICAgKFdlYktpdDo6TmV0d29ya1By
b2Nlc3M6OmRvd25sb2Fkc0F1dGhlbnRpY2F0aW9uTWFuYWdlcik6CisgICAgICAgICogTmV0d29y
a1Byb2Nlc3MvTmV0d29ya1Byb2Nlc3MuaDoKKworICAgICAgICAqIE5ldHdvcmtQcm9jZXNzL05l
dHdvcmtSZXNvdXJjZUxvYWRlci5jcHA6CisgICAgICAgIChXZWJLaXQ6Ok5ldHdvcmtSZXNvdXJj
ZUxvYWRlcjo6ZGlkUmVjZWl2ZUF1dGhlbnRpY2F0aW9uQ2hhbGxlbmdlKTogSW5zdGVhZCBvZiBt
ZXNzYWdpbmcgdG8KKyAgICAgICAgICB0aGUgV2ViUHJvY2VzcywgdGVsbCB0aGUgTmV0d29ya1By
b2Nlc3MgQXV0aGVudGljYXRpb25NYW5hZ2VyLgorCisgICAgICAgIEFkZCBhIDNyZCBmb3JtIG9m
ICJkaWRSZWNlaXZlQXV0aGVudGljYXRpb25DaGFsbGVuZ2UiIGZvciBOZXR3b3JrUHJvY2VzcyB1
c2U6CisgICAgICAgICogU2hhcmVkL0F1dGhlbnRpY2F0aW9uL0F1dGhlbnRpY2F0aW9uTWFuYWdl
ci5jcHA6CisgICAgICAgIChXZWJLaXQ6OkF1dGhlbnRpY2F0aW9uTWFuYWdlcjo6bWFwQ2hhbGxl
bmdlVG9JZGVudGlmaWVyKToKKyAgICAgICAgKFdlYktpdDo6QXV0aGVudGljYXRpb25NYW5hZ2Vy
OjpkaWRSZWNlaXZlQXV0aGVudGljYXRpb25DaGFsbGVuZ2UpOgorICAgICAgICAqIFNoYXJlZC9B
dXRoZW50aWNhdGlvbi9BdXRoZW50aWNhdGlvbk1hbmFnZXIuaDoKKyAgICAgICAgKiBTaGFyZWQv
QXV0aGVudGljYXRpb24vbWFjL0F1dGhlbnRpY2F0aW9uTWFuYWdlci5tYWMubW06CisgICAgICAg
IChXZWJLaXQ6OkF1dGhlbnRpY2F0aW9uTWFuYWdlcjo6dHJ5VXNlUGxhdGZvcm1DZXJ0aWZpY2F0
ZUluZm9Gb3JDaGFsbGVuZ2UpOiBSZW1vdmUgYSBub3cgb2Jzb2xldGUgY29tbWVudAorCisgICAg
ICAgIEluY2x1ZGUgdGhlIFdlYlBhZ2UgYW5kIFdlYkZyYW1lIElEIGZvciB0aGUgb3JpZ2luYXRv
ciBvZiB0aGlzIHJlcXVlc3QgaW4gY2FzZSBpdCByZXN1bHRzIGluIGEgY2hhbGxlbmdlOgorICAg
ICAgICAqIFNoYXJlZC9OZXR3b3JrL05ldHdvcmtSZXNvdXJjZUxvYWRQYXJhbWV0ZXJzLmNwcDoK
KyAgICAgICAgKFdlYktpdDo6TmV0d29ya1Jlc291cmNlTG9hZFBhcmFtZXRlcnM6Ok5ldHdvcmtS
ZXNvdXJjZUxvYWRQYXJhbWV0ZXJzKToKKyAgICAgICAgKFdlYktpdDo6TmV0d29ya1Jlc291cmNl
TG9hZFBhcmFtZXRlcnM6OmVuY29kZSk6CisgICAgICAgIChXZWJLaXQ6Ok5ldHdvcmtSZXNvdXJj
ZUxvYWRQYXJhbWV0ZXJzOjpkZWNvZGUpOgorICAgICAgICAqIFNoYXJlZC9OZXR3b3JrL05ldHdv
cmtSZXNvdXJjZUxvYWRQYXJhbWV0ZXJzLmg6CisgICAgICAgIChXZWJLaXQ6Ok5ldHdvcmtSZXNv
dXJjZUxvYWRQYXJhbWV0ZXJzOjp3ZWJQYWdlSUQpOgorICAgICAgICAoV2ViS2l0OjpOZXR3b3Jr
UmVzb3VyY2VMb2FkUGFyYW1ldGVyczo6d2ViRnJhbWVJRCk6CisKKyAgICAgICAgQ3JlYXRlIGEg
QXV0aGVudGljYXRpb25DaGFsbGVuZ2VQcm94eSBwb2ludGluZyBiYWNrIHRvIHRoZSBOZXR3b3Jr
UHJvY2VzcyAoaW5zdGVhZCBvZiBhIFdlYlByb2Nlc3MpLAorICAgICAgICBhbmQgc2VuZCB0aGUg
Y2hhbGxlbmdlIHRvIHRoZSBhcHByb3ByaWF0ZSBXZWJQYWdlUHJveHk6CisgICAgICAgICogVUlQ
cm9jZXNzL05ldHdvcmsvTmV0d29ya1Byb2Nlc3NQcm94eS5jcHA6CisgICAgICAgIChXZWJLaXQ6
Ok5ldHdvcmtQcm9jZXNzUHJveHk6OmRpZFJlY2VpdmVBdXRoZW50aWNhdGlvbkNoYWxsZW5nZSk6
CisgICAgICAgICogVUlQcm9jZXNzL05ldHdvcmsvTmV0d29ya1Byb2Nlc3NQcm94eS5oOgorICAg
ICAgICAqIFVJUHJvY2Vzcy9OZXR3b3JrL05ldHdvcmtQcm9jZXNzUHJveHkubWVzc2FnZXMuaW46
CisKKyAgICAgICAgUmVmYWN0b3IgZGlkUmVjZWl2ZUF1dGhlbnRpY2F0aW9uQ2hhbGxlbmdlIHNv
IGFuIG91dHNpZGVyIGNhbiBkaXJlY3RseSBoYW5kIG92ZXIgYW4gQXV0aGVudGljYXRpb25DaGFs
bGVuZ2VQcm94eToKKyAgICAgICAgKiBVSVByb2Nlc3MvV2ViUGFnZVByb3h5LmNwcDoKKyAgICAg
ICAgKFdlYktpdDo6V2ViUGFnZVByb3h5OjpkaWRSZWNlaXZlQXV0aGVudGljYXRpb25DaGFsbGVu
Z2UpOgorICAgICAgICAoV2ViS2l0OjpXZWJQYWdlUHJveHk6OmRpZFJlY2VpdmVBdXRoZW50aWNh
dGlvbkNoYWxsZW5nZVByb3h5KToKKyAgICAgICAgKiBVSVByb2Nlc3MvV2ViUGFnZVByb3h5Lmg6
CisKKyAgICAgICAgQWRkIGEgZ2xvYmFsIFdlYlBhZ2VJRCAtPiBXZWJQYWdlUHJveHkgbWFwIHNv
IHBhcnRpZXMgd2l0aCBhbiBJRCBkb24ndCBuZWVkIHRvIGtub3cgd2hpY2ggcHJvY2VzcyBpdCBi
ZWxvbmdzIHRvOgorICAgICAgICAqIFVJUHJvY2Vzcy9XZWJQcm9jZXNzUHJveHkuY3BwOgorICAg
ICAgICAoV2ViS2l0OjpnbG9iYWxQYWdlTWFwKToKKyAgICAgICAgKFdlYktpdDo6V2ViUHJvY2Vz
c1Byb3h5Ojp3ZWJQYWdlKToKKyAgICAgICAgKFdlYktpdDo6V2ViUHJvY2Vzc1Byb3h5OjpjcmVh
dGVXZWJQYWdlKToKKyAgICAgICAgKFdlYktpdDo6V2ViUHJvY2Vzc1Byb3h5OjphZGRFeGlzdGlu
Z1dlYlBhZ2UpOgorICAgICAgICAoV2ViS2l0OjpXZWJQcm9jZXNzUHJveHk6OnJlbW92ZVdlYlBh
Z2UpOgorICAgICAgICAqIFVJUHJvY2Vzcy9XZWJQcm9jZXNzUHJveHkuaDoKKworICAgICAgICAq
IFdlYlByb2Nlc3MvTmV0d29yay9XZWJSZXNvdXJjZUxvYWRTY2hlZHVsZXIuY3BwOgorICAgICAg
ICAoV2ViS2l0OjpXZWJSZXNvdXJjZUxvYWRTY2hlZHVsZXI6OnNjaGVkdWxlTG9hZCk6CisgICAg
ICAgICogV2ViUHJvY2Vzcy9XZWJDb3JlU3VwcG9ydC9XZWJQbGF0Zm9ybVN0cmF0ZWdpZXMuY3Bw
OgorICAgICAgICAoV2ViS2l0OjpXZWJQbGF0Zm9ybVN0cmF0ZWdpZXM6OmxvYWRSZXNvdXJjZVN5
bmNocm9ub3VzbHkpOgorCisyMDEzLTAxLTI1ICBCcmFkeSBFaWRzb24gIDxiZWlkc29uQGFwcGxl
LmNvbT4KKwogICAgICAgICBOZXcgTmV0d29ya1Byb2Nlc3MgY2FuIEFTU0VSVCBhZnRlciBvbGQg
TmV0d29ya1Byb2Nlc3MgY3Jhc2hlcwogICAgICAgICBodHRwczovL2J1Z3Mud2Via2l0Lm9yZy9z
aG93X2J1Zy5jZ2k/aWQ9MTA3OTcwCiAKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQyL05ldHdv
cmtQcm9jZXNzL05ldHdvcmtQcm9jZXNzLmNwcCBiL1NvdXJjZS9XZWJLaXQyL05ldHdvcmtQcm9j
ZXNzL05ldHdvcmtQcm9jZXNzLmNwcAppbmRleCAwZTQwMDNhLi45MjE3ZWU0IDEwMDY0NAotLS0g
YS9Tb3VyY2UvV2ViS2l0Mi9OZXR3b3JrUHJvY2Vzcy9OZXR3b3JrUHJvY2Vzcy5jcHAKKysrIGIv
U291cmNlL1dlYktpdDIvTmV0d29ya1Byb2Nlc3MvTmV0d29ya1Byb2Nlc3MuY3BwCkBAIC03MCw2
ICs3MCwxMSBAQCBOZXR3b3JrUHJvY2Vzczo6fk5ldHdvcmtQcm9jZXNzKCkKIHsKIH0KIAorQXV0
aGVudGljYXRpb25NYW5hZ2VyJiBOZXR3b3JrUHJvY2Vzczo6YXV0aGVudGljYXRpb25NYW5hZ2Vy
KCkKK3sKKyAgICByZXR1cm4gKnN1cHBsZW1lbnQ8QXV0aGVudGljYXRpb25NYW5hZ2VyPigpOwor
fQorCiBEb3dubG9hZE1hbmFnZXImIE5ldHdvcmtQcm9jZXNzOjpkb3dubG9hZE1hbmFnZXIoKQog
ewogICAgIERFRklORV9TVEFUSUNfTE9DQUwoRG93bmxvYWRNYW5hZ2VyLCBkb3dubG9hZE1hbmFn
ZXIsICh0aGlzKSk7CkBAIC0xMzEsNyArMTM2LDcgQEAgQ29yZUlQQzo6Q29ubmVjdGlvbiogTmV0
d29ya1Byb2Nlc3M6OmRvd25sb2FkUHJveHlDb25uZWN0aW9uKCkKIAogQXV0aGVudGljYXRpb25N
YW5hZ2VyJiBOZXR3b3JrUHJvY2Vzczo6ZG93bmxvYWRzQXV0aGVudGljYXRpb25NYW5hZ2VyKCkK
IHsKLSAgICByZXR1cm4gKnN1cHBsZW1lbnQ8QXV0aGVudGljYXRpb25NYW5hZ2VyPigpOworICAg
IHJldHVybiBhdXRoZW50aWNhdGlvbk1hbmFnZXIoKTsKIH0KIAogdm9pZCBOZXR3b3JrUHJvY2Vz
czo6aW5pdGlhbGl6ZU5ldHdvcmtQcm9jZXNzKGNvbnN0IE5ldHdvcmtQcm9jZXNzQ3JlYXRpb25Q
YXJhbWV0ZXJzJiBwYXJhbWV0ZXJzKQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdDIvTmV0d29y
a1Byb2Nlc3MvTmV0d29ya1Byb2Nlc3MuaCBiL1NvdXJjZS9XZWJLaXQyL05ldHdvcmtQcm9jZXNz
L05ldHdvcmtQcm9jZXNzLmgKaW5kZXggYWVlODI3YS4uZTYyZmVjZiAxMDA2NDQKLS0tIGEvU291
cmNlL1dlYktpdDIvTmV0d29ya1Byb2Nlc3MvTmV0d29ya1Byb2Nlc3MuaAorKysgYi9Tb3VyY2Uv
V2ViS2l0Mi9OZXR3b3JrUHJvY2Vzcy9OZXR3b3JrUHJvY2Vzcy5oCkBAIC02OCw2ICs2OCw3IEBA
IHB1YmxpYzoKIAogICAgIE5ldHdvcmtSZXNvdXJjZUxvYWRTY2hlZHVsZXImIG5ldHdvcmtSZXNv
dXJjZUxvYWRTY2hlZHVsZXIoKSB7IHJldHVybiBtX25ldHdvcmtSZXNvdXJjZUxvYWRTY2hlZHVs
ZXI7IH0KIAorICAgIEF1dGhlbnRpY2F0aW9uTWFuYWdlciYgYXV0aGVudGljYXRpb25NYW5hZ2Vy
KCk7CiAgICAgRG93bmxvYWRNYW5hZ2VyJiBkb3dubG9hZE1hbmFnZXIoKTsKIAogcHJpdmF0ZToK
ZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQyL05ldHdvcmtQcm9jZXNzL05ldHdvcmtSZXNvdXJj
ZUxvYWRlci5jcHAgYi9Tb3VyY2UvV2ViS2l0Mi9OZXR3b3JrUHJvY2Vzcy9OZXR3b3JrUmVzb3Vy
Y2VMb2FkZXIuY3BwCmluZGV4IDBjZmJhY2YuLmY2MDc4YjMgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9X
ZWJLaXQyL05ldHdvcmtQcm9jZXNzL05ldHdvcmtSZXNvdXJjZUxvYWRlci5jcHAKKysrIGIvU291
cmNlL1dlYktpdDIvTmV0d29ya1Byb2Nlc3MvTmV0d29ya1Jlc291cmNlTG9hZGVyLmNwcApAQCAt
MjgsNiArMjgsNyBAQAogCiAjaWYgRU5BQkxFKE5FVFdPUktfUFJPQ0VTUykKIAorI2luY2x1ZGUg
IkF1dGhlbnRpY2F0aW9uTWFuYWdlci5oIgogI2luY2x1ZGUgIkRhdGFSZWZlcmVuY2UuaCIKICNp
bmNsdWRlICJMb2dnaW5nLmgiCiAjaW5jbHVkZSAiTmV0d29ya0Nvbm5lY3Rpb25Ub1dlYlByb2Nl
c3MuaCIKQEAgLTIzMCw3ICsyMzEsOSBAQCB2b2lkIE5ldHdvcmtSZXNvdXJjZUxvYWRlcjo6ZGlk
UmVjZWl2ZUF1dGhlbnRpY2F0aW9uQ2hhbGxlbmdlKFJlc291cmNlSGFuZGxlKiwgYwogICAgIEFT
U0VSVCghbV9jdXJyZW50QXV0aGVudGljYXRpb25DaGFsbGVuZ2UpOwogICAgIG1fY3VycmVudEF1
dGhlbnRpY2F0aW9uQ2hhbGxlbmdlID0gYWRvcHRQdHIobmV3IEF1dGhlbnRpY2F0aW9uQ2hhbGxl
bmdlKGNoYWxsZW5nZSkpOwogCi0gICAgc2VuZChNZXNzYWdlczo6V2ViUmVzb3VyY2VMb2FkZXI6
OkRpZFJlY2VpdmVBdXRoZW50aWNhdGlvbkNoYWxsZW5nZSgqbV9jdXJyZW50QXV0aGVudGljYXRp
b25DaGFsbGVuZ2UpKTsKKyAgICB1aW50NjRfdCB3ZWJQYWdlSUQgPSBsb2FkUGFyYW1ldGVycygp
LndlYlBhZ2VJRCgpOworICAgIHVpbnQ2NF90IHdlYkZyYW1lSUQgPSBsb2FkUGFyYW1ldGVycygp
LndlYkZyYW1lSUQoKTsKKyAgICBOZXR3b3JrUHJvY2Vzczo6c2hhcmVkKCkuYXV0aGVudGljYXRp
b25NYW5hZ2VyKCkuZGlkUmVjZWl2ZUF1dGhlbnRpY2F0aW9uQ2hhbGxlbmdlKHdlYlBhZ2VJRCwg
d2ViRnJhbWVJRCwgKm1fY3VycmVudEF1dGhlbnRpY2F0aW9uQ2hhbGxlbmdlKTsKIH0KIAogdm9p
ZCBOZXR3b3JrUmVzb3VyY2VMb2FkZXI6OmRpZENhbmNlbEF1dGhlbnRpY2F0aW9uQ2hhbGxlbmdl
KFJlc291cmNlSGFuZGxlKiwgY29uc3QgQXV0aGVudGljYXRpb25DaGFsbGVuZ2UmIGNoYWxsZW5n
ZSkKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQyL1NoYXJlZC9BdXRoZW50aWNhdGlvbi9BdXRo
ZW50aWNhdGlvbk1hbmFnZXIuY3BwIGIvU291cmNlL1dlYktpdDIvU2hhcmVkL0F1dGhlbnRpY2F0
aW9uL0F1dGhlbnRpY2F0aW9uTWFuYWdlci5jcHAKaW5kZXggNGI3NWVmNy4uMzE2OTc2ZSAxMDA2
NDQKLS0tIGEvU291cmNlL1dlYktpdDIvU2hhcmVkL0F1dGhlbnRpY2F0aW9uL0F1dGhlbnRpY2F0
aW9uTWFuYWdlci5jcHAKKysrIGIvU291cmNlL1dlYktpdDIvU2hhcmVkL0F1dGhlbnRpY2F0aW9u
L0F1dGhlbnRpY2F0aW9uTWFuYWdlci5jcHAKQEAgLTM3LDYgKzM3LDEwIEBACiAjaW5jbHVkZSA8
V2ViQ29yZS9BdXRoZW50aWNhdGlvbkNoYWxsZW5nZS5oPgogI2luY2x1ZGUgPFdlYkNvcmUvQXV0
aGVudGljYXRpb25DbGllbnQuaD4KIAorI2lmIEVOQUJMRShORVRXT1JLX1BST0NFU1MpCisjaW5j
bHVkZSAiTmV0d29ya1Byb2Nlc3NQcm94eU1lc3NhZ2VzLmgiCisjZW5kaWYKKwogdXNpbmcgbmFt
ZXNwYWNlIFdlYkNvcmU7CiAKIG5hbWVzcGFjZSBXZWJLaXQgewpAQCAtNjQsMjMgKzY4LDM0IEBA
IHZvaWQgQXV0aGVudGljYXRpb25NYW5hZ2VyOjpkaWRSZWNlaXZlTWVzc2FnZShDb3JlSVBDOjpD
b25uZWN0aW9uKiBjb25uZWN0aW9uLCBDCiAgICAgZGlkUmVjZWl2ZUF1dGhlbnRpY2F0aW9uTWFu
YWdlck1lc3NhZ2UoY29ubmVjdGlvbiwgbWVzc2FnZUlELCBkZWNvZGVyKTsKIH0KIAordWludDY0
X3QgQXV0aGVudGljYXRpb25NYW5hZ2VyOjptYXBDaGFsbGVuZ2VUb0lkZW50aWZpZXIoY29uc3Qg
V2ViQ29yZTo6QXV0aGVudGljYXRpb25DaGFsbGVuZ2UmIGF1dGhlbnRpY2F0aW9uQ2hhbGxlbmdl
KQoreworICAgIHVpbnQ2NF90IGNoYWxsZW5nZUlEID0gZ2VuZXJhdGVBdXRoZW50aWNhdGlvbkNo
YWxsZW5nZUlEKCk7CisgICAgbV9jaGFsbGVuZ2VzLnNldChjaGFsbGVuZ2VJRCwgYXV0aGVudGlj
YXRpb25DaGFsbGVuZ2UpOworICAgIHJldHVybiBjaGFsbGVuZ2VJRDsKK30KKwogdm9pZCBBdXRo
ZW50aWNhdGlvbk1hbmFnZXI6OmRpZFJlY2VpdmVBdXRoZW50aWNhdGlvbkNoYWxsZW5nZShXZWJG
cmFtZSogZnJhbWUsIGNvbnN0IEF1dGhlbnRpY2F0aW9uQ2hhbGxlbmdlJiBhdXRoZW50aWNhdGlv
bkNoYWxsZW5nZSkKIHsKICAgICBBU1NFUlQoZnJhbWUpOwogICAgIEFTU0VSVChmcmFtZS0+cGFn
ZSgpKTsKKyAgICAKKyAgICBtX3Byb2Nlc3MtPnNlbmQoTWVzc2FnZXM6OldlYlBhZ2VQcm94eTo6
RGlkUmVjZWl2ZUF1dGhlbnRpY2F0aW9uQ2hhbGxlbmdlKGZyYW1lLT5mcmFtZUlEKCksIGF1dGhl
bnRpY2F0aW9uQ2hhbGxlbmdlLCBtYXBDaGFsbGVuZ2VUb0lkZW50aWZpZXIoYXV0aGVudGljYXRp
b25DaGFsbGVuZ2UpKSwgZnJhbWUtPnBhZ2UoKS0+cGFnZUlEKCkpOworfQogCi0gICAgdWludDY0
X3QgY2hhbGxlbmdlSUQgPSBnZW5lcmF0ZUF1dGhlbnRpY2F0aW9uQ2hhbGxlbmdlSUQoKTsKLSAg
ICBtX2NoYWxsZW5nZXMuc2V0KGNoYWxsZW5nZUlELCBhdXRoZW50aWNhdGlvbkNoYWxsZW5nZSk7
ICAgIAorI2lmIEVOQUJMRShORVRXT1JLX1BST0NFU1MpCit2b2lkIEF1dGhlbnRpY2F0aW9uTWFu
YWdlcjo6ZGlkUmVjZWl2ZUF1dGhlbnRpY2F0aW9uQ2hhbGxlbmdlKHVpbnQ2NF90IHBhZ2VJRCwg
dWludDY0X3QgZnJhbWVJRCwgY29uc3QgQXV0aGVudGljYXRpb25DaGFsbGVuZ2UmIGF1dGhlbnRp
Y2F0aW9uQ2hhbGxlbmdlKQoreworICAgIEFTU0VSVChwYWdlSUQpOworICAgIEFTU0VSVChmcmFt
ZUlEKTsKICAgICAKLSAgICBtX3Byb2Nlc3MtPnNlbmQoTWVzc2FnZXM6OldlYlBhZ2VQcm94eTo6
RGlkUmVjZWl2ZUF1dGhlbnRpY2F0aW9uQ2hhbGxlbmdlKGZyYW1lLT5mcmFtZUlEKCksIGF1dGhl
bnRpY2F0aW9uQ2hhbGxlbmdlLCBjaGFsbGVuZ2VJRCksIGZyYW1lLT5wYWdlKCktPnBhZ2VJRCgp
KTsKKyAgICBtX3Byb2Nlc3MtPnNlbmQoTWVzc2FnZXM6Ok5ldHdvcmtQcm9jZXNzUHJveHk6OkRp
ZFJlY2VpdmVBdXRoZW50aWNhdGlvbkNoYWxsZW5nZShwYWdlSUQsIGZyYW1lSUQsIGF1dGhlbnRp
Y2F0aW9uQ2hhbGxlbmdlLCBtYXBDaGFsbGVuZ2VUb0lkZW50aWZpZXIoYXV0aGVudGljYXRpb25D
aGFsbGVuZ2UpKSk7CiB9CisjZW5kaWYKIAogdm9pZCBBdXRoZW50aWNhdGlvbk1hbmFnZXI6OmRp
ZFJlY2VpdmVBdXRoZW50aWNhdGlvbkNoYWxsZW5nZShEb3dubG9hZCogZG93bmxvYWQsIGNvbnN0
IEF1dGhlbnRpY2F0aW9uQ2hhbGxlbmdlJiBhdXRoZW50aWNhdGlvbkNoYWxsZW5nZSkKIHsKLSAg
ICB1aW50NjRfdCBjaGFsbGVuZ2VJRCA9IGdlbmVyYXRlQXV0aGVudGljYXRpb25DaGFsbGVuZ2VJ
RCgpOwotICAgIG1fY2hhbGxlbmdlcy5zZXQoY2hhbGxlbmdlSUQsIGF1dGhlbnRpY2F0aW9uQ2hh
bGxlbmdlKTsKLQotICAgIGRvd25sb2FkLT5zZW5kKE1lc3NhZ2VzOjpEb3dubG9hZFByb3h5OjpE
aWRSZWNlaXZlQXV0aGVudGljYXRpb25DaGFsbGVuZ2UoYXV0aGVudGljYXRpb25DaGFsbGVuZ2Us
IGNoYWxsZW5nZUlEKSk7CisgICAgZG93bmxvYWQtPnNlbmQoTWVzc2FnZXM6OkRvd25sb2FkUHJv
eHk6OkRpZFJlY2VpdmVBdXRoZW50aWNhdGlvbkNoYWxsZW5nZShhdXRoZW50aWNhdGlvbkNoYWxs
ZW5nZSwgbWFwQ2hhbGxlbmdlVG9JZGVudGlmaWVyKGF1dGhlbnRpY2F0aW9uQ2hhbGxlbmdlKSkp
OwogfQogCiAvLyBDdXJyZW50bHksIG9ubHkgTWFjIGtub3dzIGhvdyB0byByZXNwb25kIHRvIGF1
dGhlbnRpY2F0aW9uIGNoYWxsZW5nZXMgd2l0aCBjZXJ0aWZpY2F0ZSBpbmZvLgpkaWZmIC0tZ2l0
IGEvU291cmNlL1dlYktpdDIvU2hhcmVkL0F1dGhlbnRpY2F0aW9uL0F1dGhlbnRpY2F0aW9uTWFu
YWdlci5oIGIvU291cmNlL1dlYktpdDIvU2hhcmVkL0F1dGhlbnRpY2F0aW9uL0F1dGhlbnRpY2F0
aW9uTWFuYWdlci5oCmluZGV4IDQwNzI4MzguLjkxZTMzMzcgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9X
ZWJLaXQyL1NoYXJlZC9BdXRoZW50aWNhdGlvbi9BdXRoZW50aWNhdGlvbk1hbmFnZXIuaAorKysg
Yi9Tb3VyY2UvV2ViS2l0Mi9TaGFyZWQvQXV0aGVudGljYXRpb24vQXV0aGVudGljYXRpb25NYW5h
Z2VyLmgKQEAgLTUyLDcgKzUyLDExIEBAIHB1YmxpYzoKIAogICAgIHN0YXRpYyBjb25zdCBBdG9t
aWNTdHJpbmcmIHN1cHBsZW1lbnROYW1lKCk7CiAKKyAgICAvLyBDYWxsZWQgZm9yIHJlc291cmNl
cyBpbiB0aGUgV2ViUHJvY2VzcyAoTmV0d29ya1Byb2Nlc3MgZGlzYWJsZWQpCiAgICAgdm9pZCBk
aWRSZWNlaXZlQXV0aGVudGljYXRpb25DaGFsbGVuZ2UoV2ViRnJhbWUqLCBjb25zdCBXZWJDb3Jl
OjpBdXRoZW50aWNhdGlvbkNoYWxsZW5nZSYpOworICAgIC8vIENhbGxlZCBmb3IgcmVzb3VyY2Vz
IGluIHRoZSBOZXR3b3JrUHJvY2VzcyAoTmV0d29ya1Byb2Nlc3MgZW5hYmxlZCkKKyAgICB2b2lk
IGRpZFJlY2VpdmVBdXRoZW50aWNhdGlvbkNoYWxsZW5nZSh1aW50NjRfdCBwYWdlSUQsIHVpbnQ2
NF90IGZyYW1lSUQsIGNvbnN0IFdlYkNvcmU6OkF1dGhlbnRpY2F0aW9uQ2hhbGxlbmdlJik7Cisg
ICAgLy8gQ2FsbGVkIGZvciBkb3dubG9hZHMgd2l0aCBvciB3aXRob3V0IHRoZSBOZXR3b3JrUHJv
Y2VzcwogICAgIHZvaWQgZGlkUmVjZWl2ZUF1dGhlbnRpY2F0aW9uQ2hhbGxlbmdlKERvd25sb2Fk
KiwgY29uc3QgV2ViQ29yZTo6QXV0aGVudGljYXRpb25DaGFsbGVuZ2UmKTsKIAogICAgIHZvaWQg
dXNlQ3JlZGVudGlhbEZvckNoYWxsZW5nZSh1aW50NjRfdCBjaGFsbGVuZ2VJRCwgY29uc3QgV2Vi
Q29yZTo6Q3JlZGVudGlhbCYsIGNvbnN0IFBsYXRmb3JtQ2VydGlmaWNhdGVJbmZvJik7CkBAIC02
Niw2ICs3MCw4IEBAIHByaXZhdGU6CiAKICAgICBib29sIHRyeVVzZVBsYXRmb3JtQ2VydGlmaWNh
dGVJbmZvRm9yQ2hhbGxlbmdlKGNvbnN0IFdlYkNvcmU6OkF1dGhlbnRpY2F0aW9uQ2hhbGxlbmdl
JiwgY29uc3QgUGxhdGZvcm1DZXJ0aWZpY2F0ZUluZm8mKTsKIAorICAgIHVpbnQ2NF90IG1hcENo
YWxsZW5nZVRvSWRlbnRpZmllcihjb25zdCBXZWJDb3JlOjpBdXRoZW50aWNhdGlvbkNoYWxsZW5n
ZSYpOworCiAgICAgQ2hpbGRQcm9jZXNzKiBtX3Byb2Nlc3M7CiAKICAgICB0eXBlZGVmIEhhc2hN
YXA8dWludDY0X3QsIFdlYkNvcmU6OkF1dGhlbnRpY2F0aW9uQ2hhbGxlbmdlPiBBdXRoZW50aWNh
dGlvbkNoYWxsZW5nZU1hcDsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQyL1NoYXJlZC9BdXRo
ZW50aWNhdGlvbi9tYWMvQXV0aGVudGljYXRpb25NYW5hZ2VyLm1hYy5tbSBiL1NvdXJjZS9XZWJL
aXQyL1NoYXJlZC9BdXRoZW50aWNhdGlvbi9tYWMvQXV0aGVudGljYXRpb25NYW5hZ2VyLm1hYy5t
bQppbmRleCAxYTc3MmMzLi5jMGI5MmYxIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0Mi9TaGFy
ZWQvQXV0aGVudGljYXRpb24vbWFjL0F1dGhlbnRpY2F0aW9uTWFuYWdlci5tYWMubW0KKysrIGIv
U291cmNlL1dlYktpdDIvU2hhcmVkL0F1dGhlbnRpY2F0aW9uL21hYy9BdXRoZW50aWNhdGlvbk1h
bmFnZXIubWFjLm1tCkBAIC0zOCw5ICszOCw2IEBAIG5hbWVzcGFjZSBXZWJLaXQgewogCiBib29s
IEF1dGhlbnRpY2F0aW9uTWFuYWdlcjo6dHJ5VXNlUGxhdGZvcm1DZXJ0aWZpY2F0ZUluZm9Gb3JD
aGFsbGVuZ2UoY29uc3QgQXV0aGVudGljYXRpb25DaGFsbGVuZ2UmIGNoYWxsZW5nZSwgY29uc3Qg
UGxhdGZvcm1DZXJ0aWZpY2F0ZUluZm8mIGNlcnRpZmljYXRlSW5mbykKIHsKLSAgICAvLyBGSVhN
RSAoTmV0d29ya1Byb2Nlc3MpOiBUaGlzIG9jY3VycyBpbiB0aGUgV2ViUHJvY2VzcyBhbmQgdGhl
cmVmb3JlIHdvbid0IHdvcmsuCi0gICAgLy8gV2UgbmVlZCB0aGlzIHRvIGhhcHBlbiBpbiB0aGUg
TmV0d29ya1Byb2Nlc3MuCi0KICAgICBDRkFycmF5UmVmIGNoYWluID0gY2VydGlmaWNhdGVJbmZv
LmNlcnRpZmljYXRlQ2hhaW4oKTsKICAgICBpZiAoIWNoYWluKQogICAgICAgICByZXR1cm4gZmFs
c2U7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0Mi9TaGFyZWQvTmV0d29yay9OZXR3b3JrUmVz
b3VyY2VMb2FkUGFyYW1ldGVycy5jcHAgYi9Tb3VyY2UvV2ViS2l0Mi9TaGFyZWQvTmV0d29yay9O
ZXR3b3JrUmVzb3VyY2VMb2FkUGFyYW1ldGVycy5jcHAKaW5kZXggY2MxNzY2Zi4uODI2YmZjOCAx
MDA2NDQKLS0tIGEvU291cmNlL1dlYktpdDIvU2hhcmVkL05ldHdvcmsvTmV0d29ya1Jlc291cmNl
TG9hZFBhcmFtZXRlcnMuY3BwCisrKyBiL1NvdXJjZS9XZWJLaXQyL1NoYXJlZC9OZXR3b3JrL05l
dHdvcmtSZXNvdXJjZUxvYWRQYXJhbWV0ZXJzLmNwcApAQCAtMzgsMTUgKzM4LDIwIEBAIHVzaW5n
IG5hbWVzcGFjZSBXZWJDb3JlOwogCiBuYW1lc3BhY2UgV2ViS2l0IHsKIE5ldHdvcmtSZXNvdXJj
ZUxvYWRQYXJhbWV0ZXJzOjpOZXR3b3JrUmVzb3VyY2VMb2FkUGFyYW1ldGVycygpCi0gICAgOiBt
X3ByaW9yaXR5KFJlc291cmNlTG9hZFByaW9yaXR5VmVyeUxvdykKKyAgICA6IG1faWRlbnRpZmll
cigwKQorICAgICwgbV93ZWJQYWdlSUQoMCkKKyAgICAsIG1fd2ViRnJhbWVJRCgwKQorICAgICwg
bV9wcmlvcml0eShSZXNvdXJjZUxvYWRQcmlvcml0eVZlcnlMb3cpCiAgICAgLCBtX2NvbnRlbnRT
bmlmZmluZ1BvbGljeShTbmlmZkNvbnRlbnQpCiAgICAgLCBtX2FsbG93U3RvcmVkQ3JlZGVudGlh
bHMoRG9Ob3RBbGxvd1N0b3JlZENyZWRlbnRpYWxzKQogICAgICwgbV9pblByaXZhdGVCcm93c2lu
Z01vZGUoZmFsc2UpCiB7CiB9CiAKLU5ldHdvcmtSZXNvdXJjZUxvYWRQYXJhbWV0ZXJzOjpOZXR3
b3JrUmVzb3VyY2VMb2FkUGFyYW1ldGVycyhSZXNvdXJjZUxvYWRJZGVudGlmaWVyIGlkZW50aWZp
ZXIsIGNvbnN0IFJlc291cmNlUmVxdWVzdCYgcmVxdWVzdCwgUmVzb3VyY2VMb2FkUHJpb3JpdHkg
cHJpb3JpdHksIENvbnRlbnRTbmlmZmluZ1BvbGljeSBjb250ZW50U25pZmZpbmdQb2xpY3ksIFN0
b3JlZENyZWRlbnRpYWxzIGFsbG93U3RvcmVkQ3JlZGVudGlhbHMsIGJvb2wgaW5Qcml2YXRlQnJv
d3NpbmdNb2RlKQorTmV0d29ya1Jlc291cmNlTG9hZFBhcmFtZXRlcnM6Ok5ldHdvcmtSZXNvdXJj
ZUxvYWRQYXJhbWV0ZXJzKFJlc291cmNlTG9hZElkZW50aWZpZXIgaWRlbnRpZmllciwgdWludDY0
X3Qgd2ViUGFnZUlELCB1aW50NjRfdCB3ZWJGcmFtZUlELCBjb25zdCBSZXNvdXJjZVJlcXVlc3Qm
IHJlcXVlc3QsIFJlc291cmNlTG9hZFByaW9yaXR5IHByaW9yaXR5LCBDb250ZW50U25pZmZpbmdQ
b2xpY3kgY29udGVudFNuaWZmaW5nUG9saWN5LCBTdG9yZWRDcmVkZW50aWFscyBhbGxvd1N0b3Jl
ZENyZWRlbnRpYWxzLCBib29sIGluUHJpdmF0ZUJyb3dzaW5nTW9kZSkKICAgICA6IG1faWRlbnRp
ZmllcihpZGVudGlmaWVyKQorICAgICwgbV93ZWJQYWdlSUQod2ViUGFnZUlEKQorICAgICwgbV93
ZWJGcmFtZUlEKHdlYkZyYW1lSUQpCiAgICAgLCBtX3JlcXVlc3QocmVxdWVzdCkKICAgICAsIG1f
cHJpb3JpdHkocHJpb3JpdHkpCiAgICAgLCBtX2NvbnRlbnRTbmlmZmluZ1BvbGljeShjb250ZW50
U25pZmZpbmdQb2xpY3kpCkBAIC01OCw2ICs2Myw4IEBAIE5ldHdvcmtSZXNvdXJjZUxvYWRQYXJh
bWV0ZXJzOjpOZXR3b3JrUmVzb3VyY2VMb2FkUGFyYW1ldGVycyhSZXNvdXJjZUxvYWRJZGVudGlm
CiB2b2lkIE5ldHdvcmtSZXNvdXJjZUxvYWRQYXJhbWV0ZXJzOjplbmNvZGUoQ29yZUlQQzo6QXJn
dW1lbnRFbmNvZGVyJiBlbmNvZGVyKSBjb25zdAogewogICAgIGVuY29kZXIuZW5jb2RlKG1faWRl
bnRpZmllcik7CisgICAgZW5jb2Rlci5lbmNvZGUobV93ZWJQYWdlSUQpOworICAgIGVuY29kZXIu
ZW5jb2RlKG1fd2ViRnJhbWVJRCk7CiAgICAgZW5jb2Rlci5lbmNvZGUobV9yZXF1ZXN0KTsKIAog
ICAgIGVuY29kZXIuZW5jb2RlKHN0YXRpY19jYXN0PGJvb2w+KG1fcmVxdWVzdC5odHRwQm9keSgp
KSk7CkBAIC0xMDMsNiArMTEwLDEyIEBAIGJvb2wgTmV0d29ya1Jlc291cmNlTG9hZFBhcmFtZXRl
cnM6OmRlY29kZShDb3JlSVBDOjpBcmd1bWVudERlY29kZXIqIGRlY29kZXIsIE5lCiAgICAgaWYg
KCFkZWNvZGVyLT5kZWNvZGUocmVzdWx0Lm1faWRlbnRpZmllcikpCiAgICAgICAgIHJldHVybiBm
YWxzZTsKIAorICAgIGlmICghZGVjb2Rlci0+ZGVjb2RlKHJlc3VsdC5tX3dlYlBhZ2VJRCkpCisg
ICAgICAgIHJldHVybiBmYWxzZTsKKworICAgIGlmICghZGVjb2Rlci0+ZGVjb2RlKHJlc3VsdC5t
X3dlYkZyYW1lSUQpKQorICAgICAgICByZXR1cm4gZmFsc2U7CisKICAgICBpZiAoIWRlY29kZXIt
PmRlY29kZShyZXN1bHQubV9yZXF1ZXN0KSkKICAgICAgICAgcmV0dXJuIGZhbHNlOwogCmRpZmYg
LS1naXQgYS9Tb3VyY2UvV2ViS2l0Mi9TaGFyZWQvTmV0d29yay9OZXR3b3JrUmVzb3VyY2VMb2Fk
UGFyYW1ldGVycy5oIGIvU291cmNlL1dlYktpdDIvU2hhcmVkL05ldHdvcmsvTmV0d29ya1Jlc291
cmNlTG9hZFBhcmFtZXRlcnMuaAppbmRleCBkZTRhOWE0Li5mYzJkYjE5IDEwMDY0NAotLS0gYS9T
b3VyY2UvV2ViS2l0Mi9TaGFyZWQvTmV0d29yay9OZXR3b3JrUmVzb3VyY2VMb2FkUGFyYW1ldGVy
cy5oCisrKyBiL1NvdXJjZS9XZWJLaXQyL1NoYXJlZC9OZXR3b3JrL05ldHdvcmtSZXNvdXJjZUxv
YWRQYXJhbWV0ZXJzLmgKQEAgLTQ1LDEyICs0NSwxNCBAQCB0eXBlZGVmIHVpbnQ2NF90IFJlc291
cmNlTG9hZElkZW50aWZpZXI7CiBjbGFzcyBOZXR3b3JrUmVzb3VyY2VMb2FkUGFyYW1ldGVycyB7
CiBwdWJsaWM6CiAgICAgTmV0d29ya1Jlc291cmNlTG9hZFBhcmFtZXRlcnMoKTsKLSAgICBOZXR3
b3JrUmVzb3VyY2VMb2FkUGFyYW1ldGVycyhSZXNvdXJjZUxvYWRJZGVudGlmaWVyLCBjb25zdCBX
ZWJDb3JlOjpSZXNvdXJjZVJlcXVlc3QmLCBXZWJDb3JlOjpSZXNvdXJjZUxvYWRQcmlvcml0eSwg
V2ViQ29yZTo6Q29udGVudFNuaWZmaW5nUG9saWN5LCBXZWJDb3JlOjpTdG9yZWRDcmVkZW50aWFs
cywgYm9vbCBpblByaXZhdGVCcm93c2luZ01vZGUpOworICAgIE5ldHdvcmtSZXNvdXJjZUxvYWRQ
YXJhbWV0ZXJzKFJlc291cmNlTG9hZElkZW50aWZpZXIsIHVpbnQ2NF90IHdlYlBhZ2VJRCwgdWlu
dDY0X3Qgd2ViRnJhbWVJRCwgY29uc3QgV2ViQ29yZTo6UmVzb3VyY2VSZXF1ZXN0JiwgV2ViQ29y
ZTo6UmVzb3VyY2VMb2FkUHJpb3JpdHksIFdlYkNvcmU6OkNvbnRlbnRTbmlmZmluZ1BvbGljeSwg
V2ViQ29yZTo6U3RvcmVkQ3JlZGVudGlhbHMsIGJvb2wgaW5Qcml2YXRlQnJvd3NpbmdNb2RlKTsK
IAogICAgIHZvaWQgZW5jb2RlKENvcmVJUEM6OkFyZ3VtZW50RW5jb2RlciYpIGNvbnN0OwogICAg
IHN0YXRpYyBib29sIGRlY29kZShDb3JlSVBDOjpBcmd1bWVudERlY29kZXIqLCBOZXR3b3JrUmVz
b3VyY2VMb2FkUGFyYW1ldGVycyYpOwogCiAgICAgUmVzb3VyY2VMb2FkSWRlbnRpZmllciBpZGVu
dGlmaWVyKCkgY29uc3QgeyByZXR1cm4gbV9pZGVudGlmaWVyOyB9CisgICAgdWludDY0X3Qgd2Vi
UGFnZUlEKCkgY29uc3QgeyByZXR1cm4gbV93ZWJQYWdlSUQ7IH0KKyAgICB1aW50NjRfdCB3ZWJG
cmFtZUlEKCkgY29uc3QgeyByZXR1cm4gbV93ZWJGcmFtZUlEOyB9CiAgICAgY29uc3QgV2ViQ29y
ZTo6UmVzb3VyY2VSZXF1ZXN0JiByZXF1ZXN0KCkgY29uc3QgeyByZXR1cm4gbV9yZXF1ZXN0OyB9
CiAgICAgY29uc3QgU2FuZGJveEV4dGVuc2lvbjo6SGFuZGxlQXJyYXkmIHJlcXVlc3RCb2R5U2Fu
ZGJveEV4dGVuc2lvbnMoKSBjb25zdCB7IHJldHVybiBtX3JlcXVlc3RCb2R5U2FuZGJveEV4dGVu
c2lvbnM7IH0KICAgICBjb25zdCBTYW5kYm94RXh0ZW5zaW9uOjpIYW5kbGUmIHJlc291cmNlU2Fu
ZGJveEV4dGVuc2lvbigpIGNvbnN0IHsgcmV0dXJuIG1fcmVzb3VyY2VTYW5kYm94RXh0ZW5zaW9u
OyB9CkBAIC02MSw2ICs2Myw4IEBAIHB1YmxpYzoKIAogcHJpdmF0ZToKICAgICBSZXNvdXJjZUxv
YWRJZGVudGlmaWVyIG1faWRlbnRpZmllcjsKKyAgICB1aW50NjRfdCBtX3dlYlBhZ2VJRDsKKyAg
ICB1aW50NjRfdCBtX3dlYkZyYW1lSUQ7CiAgICAgV2ViQ29yZTo6UmVzb3VyY2VSZXF1ZXN0IG1f
cmVxdWVzdDsKICAgICBTYW5kYm94RXh0ZW5zaW9uOjpIYW5kbGVBcnJheSBtX3JlcXVlc3RCb2R5
U2FuZGJveEV4dGVuc2lvbnM7IC8vIENyZWF0ZWQgYXV0b21hdGljYWxseSBmb3IgdGhlIHNlbmRl
ci4KICAgICBTYW5kYm94RXh0ZW5zaW9uOjpIYW5kbGUgbV9yZXNvdXJjZVNhbmRib3hFeHRlbnNp
b247IC8vIENyZWF0ZWQgYXV0b21hdGljYWxseSBmb3IgdGhlIHNlbmRlci4KZGlmZiAtLWdpdCBh
L1NvdXJjZS9XZWJLaXQyL1VJUHJvY2Vzcy9OZXR3b3JrL05ldHdvcmtQcm9jZXNzUHJveHkuY3Bw
IGIvU291cmNlL1dlYktpdDIvVUlQcm9jZXNzL05ldHdvcmsvTmV0d29ya1Byb2Nlc3NQcm94eS5j
cHAKaW5kZXggZTlkYTVmMmEuLmQ0ZjUwNDcgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQyL1VJ
UHJvY2Vzcy9OZXR3b3JrL05ldHdvcmtQcm9jZXNzUHJveHkuY3BwCisrKyBiL1NvdXJjZS9XZWJL
aXQyL1VJUHJvY2Vzcy9OZXR3b3JrL05ldHdvcmtQcm9jZXNzUHJveHkuY3BwCkBAIC0yOCw2ICsy
OCw3IEBACiAKICNpZiBFTkFCTEUoTkVUV09SS19QUk9DRVNTKQogCisjaW5jbHVkZSAiQXV0aGVu
dGljYXRpb25DaGFsbGVuZ2VQcm94eS5oIgogI2luY2x1ZGUgIkRvd25sb2FkUHJveHlNZXNzYWdl
cy5oIgogI2luY2x1ZGUgIk5ldHdvcmtQcm9jZXNzQ3JlYXRpb25QYXJhbWV0ZXJzLmgiCiAjaW5j
bHVkZSAiTmV0d29ya1Byb2Nlc3NNZXNzYWdlcy5oIgpAQCAtMzksNiArNDAsOCBAQAogI2luY2x1
ZGUgIlNlY0l0ZW1TaGltUHJveHkuaCIKICNlbmRpZgogCisjZGVmaW5lIE1FU1NBR0VfQ0hFQ0so
YXNzZXJ0aW9uKSBNRVNTQUdFX0NIRUNLX0JBU0UoYXNzZXJ0aW9uLCBjb25uZWN0aW9uKCkpCisK
IHVzaW5nIG5hbWVzcGFjZSBXZWJDb3JlOwogCiBuYW1lc3BhY2UgV2ViS2l0IHsKQEAgLTE2NSw2
ICsxNjgsMTUgQEAgdm9pZCBOZXR3b3JrUHJvY2Vzc1Byb3h5OjpkaWRDcmVhdGVOZXR3b3JrQ29u
bmVjdGlvblRvV2ViUHJvY2Vzcyhjb25zdCBDb3JlSVBDOjoKICNlbmRpZgogfQogCit2b2lkIE5l
dHdvcmtQcm9jZXNzUHJveHk6OmRpZFJlY2VpdmVBdXRoZW50aWNhdGlvbkNoYWxsZW5nZSh1aW50
NjRfdCBwYWdlSUQsIHVpbnQ2NF90IGZyYW1lSUQsIGNvbnN0IFdlYkNvcmU6OkF1dGhlbnRpY2F0
aW9uQ2hhbGxlbmdlJiBjb3JlQ2hhbGxlbmdlLCB1aW50NjRfdCBjaGFsbGVuZ2VJRCkKK3sKKyAg
ICBXZWJQYWdlUHJveHkqIHBhZ2UgPSBXZWJQcm9jZXNzUHJveHk6OndlYlBhZ2UocGFnZUlEKTsK
KyAgICBNRVNTQUdFX0NIRUNLKHBhZ2UpOworCisgICAgUmVmUHRyPEF1dGhlbnRpY2F0aW9uQ2hh
bGxlbmdlUHJveHk+IGF1dGhlbnRpY2F0aW9uQ2hhbGxlbmdlID0gQXV0aGVudGljYXRpb25DaGFs
bGVuZ2VQcm94eTo6Y3JlYXRlKGNvcmVDaGFsbGVuZ2UsIGNoYWxsZW5nZUlELCBjb25uZWN0aW9u
KCkpOworICAgIHBhZ2UtPmRpZFJlY2VpdmVBdXRoZW50aWNhdGlvbkNoYWxsZW5nZVByb3h5KGZy
YW1lSUQsIGF1dGhlbnRpY2F0aW9uQ2hhbGxlbmdlLnJlbGVhc2UoKSk7Cit9CisKIHZvaWQgTmV0
d29ya1Byb2Nlc3NQcm94eTo6ZGlkRmluaXNoTGF1bmNoaW5nKFByb2Nlc3NMYXVuY2hlciogbGF1
bmNoZXIsIENvcmVJUEM6OkNvbm5lY3Rpb246OklkZW50aWZpZXIgY29ubmVjdGlvbklkZW50aWZp
ZXIpCiB7CiAgICAgQ2hpbGRQcm9jZXNzUHJveHk6OmRpZEZpbmlzaExhdW5jaGluZyhsYXVuY2hl
ciwgY29ubmVjdGlvbklkZW50aWZpZXIpOwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdDIvVUlQ
cm9jZXNzL05ldHdvcmsvTmV0d29ya1Byb2Nlc3NQcm94eS5oIGIvU291cmNlL1dlYktpdDIvVUlQ
cm9jZXNzL05ldHdvcmsvTmV0d29ya1Byb2Nlc3NQcm94eS5oCmluZGV4IDgwMTBiOWUuLjRlMDdm
MGYgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQyL1VJUHJvY2Vzcy9OZXR3b3JrL05ldHdvcmtQ
cm9jZXNzUHJveHkuaAorKysgYi9Tb3VyY2UvV2ViS2l0Mi9VSVByb2Nlc3MvTmV0d29yay9OZXR3
b3JrUHJvY2Vzc1Byb3h5LmgKQEAgLTM5LDYgKzM5LDEwIEBACiAjaW5jbHVkZSAiQ3VzdG9tUHJv
dG9jb2xNYW5hZ2VyUHJveHkuaCIKICNlbmRpZgogCituYW1lc3BhY2UgV2ViQ29yZSB7CitjbGFz
cyBBdXRoZW50aWNhdGlvbkNoYWxsZW5nZTsKK30KKwogbmFtZXNwYWNlIFdlYktpdCB7CiAKIGNs
YXNzIERvd25sb2FkUHJveHk7CkBAIC03NSw3ICs3OSw4IEBAIHByaXZhdGU6CiAgICAgLy8gTWVz
c2FnZSBoYW5kbGVycwogICAgIHZvaWQgZGlkUmVjZWl2ZU5ldHdvcmtQcm9jZXNzUHJveHlNZXNz
YWdlKENvcmVJUEM6OkNvbm5lY3Rpb24qLCBDb3JlSVBDOjpNZXNzYWdlSUQsIENvcmVJUEM6Ok1l
c3NhZ2VEZWNvZGVyJik7CiAgICAgdm9pZCBkaWRDcmVhdGVOZXR3b3JrQ29ubmVjdGlvblRvV2Vi
UHJvY2Vzcyhjb25zdCBDb3JlSVBDOjpBdHRhY2htZW50Jik7Ci0gICAgCisgICAgdm9pZCBkaWRS
ZWNlaXZlQXV0aGVudGljYXRpb25DaGFsbGVuZ2UodWludDY0X3QgcGFnZUlELCB1aW50NjRfdCBm
cmFtZUlELCBjb25zdCBXZWJDb3JlOjpBdXRoZW50aWNhdGlvbkNoYWxsZW5nZSYsIHVpbnQ2NF90
IGNoYWxsZW5nZUlEKTsKKwogICAgIC8vIFByb2Nlc3NMYXVuY2hlcjo6Q2xpZW50CiAgICAgdmly
dHVhbCB2b2lkIGRpZEZpbmlzaExhdW5jaGluZyhQcm9jZXNzTGF1bmNoZXIqLCBDb3JlSVBDOjpD
b25uZWN0aW9uOjpJZGVudGlmaWVyKTsKIApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdDIvVUlQ
cm9jZXNzL05ldHdvcmsvTmV0d29ya1Byb2Nlc3NQcm94eS5tZXNzYWdlcy5pbiBiL1NvdXJjZS9X
ZWJLaXQyL1VJUHJvY2Vzcy9OZXR3b3JrL05ldHdvcmtQcm9jZXNzUHJveHkubWVzc2FnZXMuaW4K
aW5kZXggNTg4YzI4ZC4uN2U5MWMzOCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdDIvVUlQcm9j
ZXNzL05ldHdvcmsvTmV0d29ya1Byb2Nlc3NQcm94eS5tZXNzYWdlcy5pbgorKysgYi9Tb3VyY2Uv
V2ViS2l0Mi9VSVByb2Nlc3MvTmV0d29yay9OZXR3b3JrUHJvY2Vzc1Byb3h5Lm1lc3NhZ2VzLmlu
CkBAIC0yNCw2ICsyNCw4IEBACiAKIG1lc3NhZ2VzIC0+IE5ldHdvcmtQcm9jZXNzUHJveHkgTGVn
YWN5UmVjZWl2ZXIgewogICAgIERpZENyZWF0ZU5ldHdvcmtDb25uZWN0aW9uVG9XZWJQcm9jZXNz
KENvcmVJUEM6OkF0dGFjaG1lbnQgY29ubmVjdGlvbklkZW50aWZpZXIpCisKKyAgICBEaWRSZWNl
aXZlQXV0aGVudGljYXRpb25DaGFsbGVuZ2UodWludDY0X3QgcGFnZUlELCB1aW50NjRfdCBmcmFt
ZUlELCBXZWJDb3JlOjpBdXRoZW50aWNhdGlvbkNoYWxsZW5nZSBjaGFsbGVuZ2UsIHVpbnQ2NF90
IGNoYWxsZW5nZUlEKQogfQogCiAjZW5kaWYgLy8gRU5BQkxFKE5FVFdPUktfUFJPQ0VTUykKZGlm
ZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQyL1VJUHJvY2Vzcy9XZWJQYWdlUHJveHkuY3BwIGIvU291
cmNlL1dlYktpdDIvVUlQcm9jZXNzL1dlYlBhZ2VQcm94eS5jcHAKaW5kZXggZGIwZTkxMi4uMjk0
ZDU0YSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdDIvVUlQcm9jZXNzL1dlYlBhZ2VQcm94eS5j
cHAKKysrIGIvU291cmNlL1dlYktpdDIvVUlQcm9jZXNzL1dlYlBhZ2VQcm94eS5jcHAKQEAgLTM4
NDgsMTEgKzM4NDgsMTcgQEAgdm9pZCBXZWJQYWdlUHJveHk6OmNhbkF1dGhlbnRpY2F0ZUFnYWlu
c3RQcm90ZWN0aW9uU3BhY2VJbkZyYW1lKHVpbnQ2NF90IGZyYW1lSUQKIAogdm9pZCBXZWJQYWdl
UHJveHk6OmRpZFJlY2VpdmVBdXRoZW50aWNhdGlvbkNoYWxsZW5nZSh1aW50NjRfdCBmcmFtZUlE
LCBjb25zdCBBdXRoZW50aWNhdGlvbkNoYWxsZW5nZSYgY29yZUNoYWxsZW5nZSwgdWludDY0X3Qg
Y2hhbGxlbmdlSUQpCiB7CisgICAgZGlkUmVjZWl2ZUF1dGhlbnRpY2F0aW9uQ2hhbGxlbmdlUHJv
eHkoZnJhbWVJRCwgQXV0aGVudGljYXRpb25DaGFsbGVuZ2VQcm94eTo6Y3JlYXRlKGNvcmVDaGFs
bGVuZ2UsIGNoYWxsZW5nZUlELCBtX3Byb2Nlc3MtPmNvbm5lY3Rpb24oKSkpOworfQorCit2b2lk
IFdlYlBhZ2VQcm94eTo6ZGlkUmVjZWl2ZUF1dGhlbnRpY2F0aW9uQ2hhbGxlbmdlUHJveHkodWlu
dDY0X3QgZnJhbWVJRCwgUGFzc1JlZlB0cjxBdXRoZW50aWNhdGlvbkNoYWxsZW5nZVByb3h5PiBw
cnBBdXRoZW50aWNhdGlvbkNoYWxsZW5nZSkKK3sKKyAgICBBU1NFUlQocHJwQXV0aGVudGljYXRp
b25DaGFsbGVuZ2UpOworCiAgICAgV2ViRnJhbWVQcm94eSogZnJhbWUgPSBtX3Byb2Nlc3MtPndl
YkZyYW1lKGZyYW1lSUQpOwogICAgIE1FU1NBR0VfQ0hFQ0soZnJhbWUpOwogCi0gICAgUmVmUHRy
PEF1dGhlbnRpY2F0aW9uQ2hhbGxlbmdlUHJveHk+IGF1dGhlbnRpY2F0aW9uQ2hhbGxlbmdlID0g
QXV0aGVudGljYXRpb25DaGFsbGVuZ2VQcm94eTo6Y3JlYXRlKGNvcmVDaGFsbGVuZ2UsIGNoYWxs
ZW5nZUlELCBtX3Byb2Nlc3MtPmNvbm5lY3Rpb24oKSk7Ci0gICAgCisgICAgUmVmUHRyPEF1dGhl
bnRpY2F0aW9uQ2hhbGxlbmdlUHJveHk+IGF1dGhlbnRpY2F0aW9uQ2hhbGxlbmdlID0gcHJwQXV0
aGVudGljYXRpb25DaGFsbGVuZ2U7CiAgICAgbV9sb2FkZXJDbGllbnQuZGlkUmVjZWl2ZUF1dGhl
bnRpY2F0aW9uQ2hhbGxlbmdlSW5GcmFtZSh0aGlzLCBmcmFtZSwgYXV0aGVudGljYXRpb25DaGFs
bGVuZ2UuZ2V0KCkpOwogfQogCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0Mi9VSVByb2Nlc3Mv
V2ViUGFnZVByb3h5LmggYi9Tb3VyY2UvV2ViS2l0Mi9VSVByb2Nlc3MvV2ViUGFnZVByb3h5LmgK
aW5kZXggZDg4OGM3MC4uZWFkYzZhZiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdDIvVUlQcm9j
ZXNzL1dlYlBhZ2VQcm94eS5oCisrKyBiL1NvdXJjZS9XZWJLaXQyL1VJUHJvY2Vzcy9XZWJQYWdl
UHJveHkuaApAQCAtNzU3LDYgKzc1Nyw4IEBAIHB1YmxpYzoKICAgICBib29sIG1haW5GcmFtZUlu
Vmlld1NvdXJjZU1vZGUoKSBjb25zdCB7IHJldHVybiBtX21haW5GcmFtZUluVmlld1NvdXJjZU1v
ZGU7IH0KICAgICB2b2lkIHNldE1haW5GcmFtZUluVmlld1NvdXJjZU1vZGUoYm9vbCk7CiAKKyAg
ICB2b2lkIGRpZFJlY2VpdmVBdXRoZW50aWNhdGlvbkNoYWxsZW5nZVByb3h5KHVpbnQ2NF90IGZy
YW1lSUQsIFBhc3NSZWZQdHI8QXV0aGVudGljYXRpb25DaGFsbGVuZ2VQcm94eT4pOworCiBwcml2
YXRlOgogICAgIFdlYlBhZ2VQcm94eShQYWdlQ2xpZW50KiwgUGFzc1JlZlB0cjxXZWJQcm9jZXNz
UHJveHk+LCBXZWJQYWdlR3JvdXAqLCB1aW50NjRfdCBwYWdlSUQpOwogCmRpZmYgLS1naXQgYS9T
b3VyY2UvV2ViS2l0Mi9VSVByb2Nlc3MvV2ViUHJvY2Vzc1Byb3h5LmNwcCBiL1NvdXJjZS9XZWJL
aXQyL1VJUHJvY2Vzcy9XZWJQcm9jZXNzUHJveHkuY3BwCmluZGV4IDdkYTViMzguLmI1ZTdiYmYg
MTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQyL1VJUHJvY2Vzcy9XZWJQcm9jZXNzUHJveHkuY3Bw
CisrKyBiL1NvdXJjZS9XZWJLaXQyL1VJUHJvY2Vzcy9XZWJQcm9jZXNzUHJveHkuY3BwCkBAIC03
Nyw2ICs3NywxMiBAQCBzdGF0aWMgdWludDY0X3QgZ2VuZXJhdGVQYWdlSUQoKQogICAgIHJldHVy
biB1bmlxdWVQYWdlSUQrKzsKIH0KIAorc3RhdGljIFdlYlByb2Nlc3NQcm94eTo6V2ViUGFnZVBy
b3h5TWFwJiBnbG9iYWxQYWdlTWFwKCkKK3sKKyAgICBERUZJTkVfU1RBVElDX0xPQ0FMKFdlYlBy
b2Nlc3NQcm94eTo6V2ViUGFnZVByb3h5TWFwLCBwYWdlTWFwLCAoKSk7CisgICAgcmV0dXJuIHBh
Z2VNYXA7Cit9CisKICNpZiBFTkFCTEUoTkVUU0NBUEVfUExVR0lOX0FQSSkKIHN0YXRpYyBXb3Jr
UXVldWUmIHBsdWdpbldvcmtRdWV1ZSgpCiB7CkBAIC0xNTMsOSArMTU5LDkgQEAgdm9pZCBXZWJQ
cm9jZXNzUHJveHk6OnJlbW92ZU1lc3NhZ2VSZWNlaXZlcihDb3JlSVBDOjpTdHJpbmdSZWZlcmVu
Y2UgbWVzc2FnZVJlY2UKICAgICBtX21lc3NhZ2VSZWNlaXZlck1hcC5yZW1vdmVNZXNzYWdlUmVj
ZWl2ZXIobWVzc2FnZVJlY2VpdmVyTmFtZSwgZGVzdGluYXRpb25JRCk7CiB9CiAKLVdlYlBhZ2VQ
cm94eSogV2ViUHJvY2Vzc1Byb3h5Ojp3ZWJQYWdlKHVpbnQ2NF90IHBhZ2VJRCkgY29uc3QKK1dl
YlBhZ2VQcm94eSogV2ViUHJvY2Vzc1Byb3h5Ojp3ZWJQYWdlKHVpbnQ2NF90IHBhZ2VJRCkKIHsK
LSAgICByZXR1cm4gbV9wYWdlTWFwLmdldChwYWdlSUQpOworICAgIHJldHVybiBnbG9iYWxQYWdl
TWFwKCkuZ2V0KHBhZ2VJRCk7CiB9CiAKIFBhc3NSZWZQdHI8V2ViUGFnZVByb3h5PiBXZWJQcm9j
ZXNzUHJveHk6OmNyZWF0ZVdlYlBhZ2UoUGFnZUNsaWVudCogcGFnZUNsaWVudCwgV2ViQ29udGV4
dCosIFdlYlBhZ2VHcm91cCogcGFnZUdyb3VwKQpAQCAtMTYzLDE3ICsxNjksMjEgQEAgUGFzc1Jl
ZlB0cjxXZWJQYWdlUHJveHk+IFdlYlByb2Nlc3NQcm94eTo6Y3JlYXRlV2ViUGFnZShQYWdlQ2xp
ZW50KiBwYWdlQ2xpZW50LAogICAgIHVpbnQ2NF90IHBhZ2VJRCA9IGdlbmVyYXRlUGFnZUlEKCk7
CiAgICAgUmVmUHRyPFdlYlBhZ2VQcm94eT4gd2ViUGFnZSA9IFdlYlBhZ2VQcm94eTo6Y3JlYXRl
KHBhZ2VDbGllbnQsIHRoaXMsIHBhZ2VHcm91cCwgcGFnZUlEKTsKICAgICBtX3BhZ2VNYXAuc2V0
KHBhZ2VJRCwgd2ViUGFnZS5nZXQoKSk7CisgICAgZ2xvYmFsUGFnZU1hcCgpLnNldChwYWdlSUQs
IHdlYlBhZ2UuZ2V0KCkpOwogICAgIHJldHVybiB3ZWJQYWdlLnJlbGVhc2UoKTsKIH0KIAogdm9p
ZCBXZWJQcm9jZXNzUHJveHk6OmFkZEV4aXN0aW5nV2ViUGFnZShXZWJQYWdlUHJveHkqIHdlYlBh
Z2UsIHVpbnQ2NF90IHBhZ2VJRCkKIHsKICAgICBtX3BhZ2VNYXAuc2V0KHBhZ2VJRCwgd2ViUGFn
ZSk7CisgICAgZ2xvYmFsUGFnZU1hcCgpLnNldChwYWdlSUQsIHdlYlBhZ2UpOwogfQogCiB2b2lk
IFdlYlByb2Nlc3NQcm94eTo6cmVtb3ZlV2ViUGFnZSh1aW50NjRfdCBwYWdlSUQpCiB7CiAgICAg
bV9wYWdlTWFwLnJlbW92ZShwYWdlSUQpOworICAgIGdsb2JhbFBhZ2VNYXAoKS5yZW1vdmUocGFn
ZUlEKTsKKwogfQogCiBWZWN0b3I8V2ViUGFnZVByb3h5Kj4gV2ViUHJvY2Vzc1Byb3h5OjpwYWdl
cygpIGNvbnN0CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0Mi9VSVByb2Nlc3MvV2ViUHJvY2Vz
c1Byb3h5LmggYi9Tb3VyY2UvV2ViS2l0Mi9VSVByb2Nlc3MvV2ViUHJvY2Vzc1Byb3h5LmgKaW5k
ZXggODkwNjc2Zi4uYzEwM2E1MCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdDIvVUlQcm9jZXNz
L1dlYlByb2Nlc3NQcm94eS5oCisrKyBiL1NvdXJjZS9XZWJLaXQyL1VJUHJvY2Vzcy9XZWJQcm9j
ZXNzUHJveHkuaApAQCAtNTksOCArNTksOSBAQCBzdHJ1Y3QgV2ViTmF2aWdhdGlvbkRhdGFTdG9y
ZTsKIAogY2xhc3MgV2ViUHJvY2Vzc1Byb3h5IDogcHVibGljIFRocmVhZFNhZmVSZWZDb3VudGVk
PFdlYlByb2Nlc3NQcm94eT4sIHB1YmxpYyBDaGlsZFByb2Nlc3NQcm94eSwgUmVzcG9uc2l2ZW5l
c3NUaW1lcjo6Q2xpZW50LCBDb3JlSVBDOjpDb25uZWN0aW9uOjpRdWV1ZUNsaWVudCB7CiBwdWJs
aWM6Ci0gICAgdHlwZWRlZiBIYXNoTWFwPHVpbnQ2NF90LCBSZWZQdHI8V2ViRnJhbWVQcm94eT4g
PiBXZWJGcmFtZVByb3h5TWFwOwogICAgIHR5cGVkZWYgSGFzaE1hcDx1aW50NjRfdCwgUmVmUHRy
PFdlYkJhY2tGb3J3YXJkTGlzdEl0ZW0+ID4gV2ViQmFja0ZvcndhcmRMaXN0SXRlbU1hcDsKKyAg
ICB0eXBlZGVmIEhhc2hNYXA8dWludDY0X3QsIFJlZlB0cjxXZWJGcmFtZVByb3h5PiA+IFdlYkZy
YW1lUHJveHlNYXA7CisgICAgdHlwZWRlZiBIYXNoTWFwPHVpbnQ2NF90LCBXZWJQYWdlUHJveHkq
PiBXZWJQYWdlUHJveHlNYXA7CiAKICAgICBzdGF0aWMgUGFzc1JlZlB0cjxXZWJQcm9jZXNzUHJv
eHk+IGNyZWF0ZShQYXNzUmVmUHRyPFdlYkNvbnRleHQ+KTsKICAgICB+V2ViUHJvY2Vzc1Byb3h5
KCk7CkBAIC03OCw3ICs3OSw3IEBAIHB1YmxpYzoKIAogICAgIFdlYkNvbnRleHQqIGNvbnRleHQo
KSBjb25zdCB7IHJldHVybiBtX2NvbnRleHQuZ2V0KCk7IH0KIAotICAgIFdlYlBhZ2VQcm94eSog
d2ViUGFnZSh1aW50NjRfdCBwYWdlSUQpIGNvbnN0OworICAgIHN0YXRpYyBXZWJQYWdlUHJveHkq
IHdlYlBhZ2UodWludDY0X3QgcGFnZUlEKTsKICAgICBQYXNzUmVmUHRyPFdlYlBhZ2VQcm94eT4g
Y3JlYXRlV2ViUGFnZShQYWdlQ2xpZW50KiwgV2ViQ29udGV4dCosIFdlYlBhZ2VHcm91cCopOwog
ICAgIHZvaWQgYWRkRXhpc3RpbmdXZWJQYWdlKFdlYlBhZ2VQcm94eSosIHVpbnQ2NF90IHBhZ2VJ
RCk7CiAgICAgdm9pZCByZW1vdmVXZWJQYWdlKHVpbnQ2NF90IHBhZ2VJRCk7CkBAIC0xODcsNyAr
MTg4LDcgQEAgcHJpdmF0ZToKICAgICBib29sIG1fbWF5SGF2ZVVuaXZlcnNhbEZpbGVSZWFkU2Fu
ZGJveEV4dGVuc2lvbjsgLy8gVHJ1ZSBpZiBhIHJlYWQgZXh0ZW5zaW9uIGZvciAiLyIgd2FzIGV2
ZXIgZ3JhbnRlZCAtIHdlIGRvbid0IHRyYWNrIHdoZXRoZXIgV2ViUHJvY2VzcyBzdGlsbCBoYXMg
aXQuCiAgICAgSGFzaFNldDxTdHJpbmc+IG1fbG9jYWxQYXRoc1dpdGhBc3N1bWVkUmVhZEFjY2Vz
czsKIAotICAgIEhhc2hNYXA8dWludDY0X3QsIFdlYlBhZ2VQcm94eSo+IG1fcGFnZU1hcDsKKyAg
ICBXZWJQYWdlUHJveHlNYXAgbV9wYWdlTWFwOwogICAgIFdlYkZyYW1lUHJveHlNYXAgbV9mcmFt
ZU1hcDsKICAgICBXZWJCYWNrRm9yd2FyZExpc3RJdGVtTWFwIG1fYmFja0ZvcndhcmRMaXN0SXRl
bU1hcDsKIApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdDIvV2ViUHJvY2Vzcy9OZXR3b3JrL1dl
YlJlc291cmNlTG9hZFNjaGVkdWxlci5jcHAgYi9Tb3VyY2UvV2ViS2l0Mi9XZWJQcm9jZXNzL05l
dHdvcmsvV2ViUmVzb3VyY2VMb2FkU2NoZWR1bGVyLmNwcAppbmRleCBjZDU2OWJlLi5jZTVlOGU1
IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0Mi9XZWJQcm9jZXNzL05ldHdvcmsvV2ViUmVzb3Vy
Y2VMb2FkU2NoZWR1bGVyLmNwcAorKysgYi9Tb3VyY2UvV2ViS2l0Mi9XZWJQcm9jZXNzL05ldHdv
cmsvV2ViUmVzb3VyY2VMb2FkU2NoZWR1bGVyLmNwcApAQCAtMzIsNiArMzIsOSBAQAogI2luY2x1
ZGUgIk5ldHdvcmtSZXNvdXJjZUxvYWRQYXJhbWV0ZXJzLmgiCiAjaW5jbHVkZSAiV2ViQ29yZUFy
Z3VtZW50Q29kZXJzLmgiCiAjaW5jbHVkZSAiV2ViRXJyb3JzLmgiCisjaW5jbHVkZSAiV2ViRnJh
bWUuaCIKKyNpbmNsdWRlICJXZWJGcmFtZUxvYWRlckNsaWVudC5oIgorI2luY2x1ZGUgIldlYlBh
Z2UuaCIKICNpbmNsdWRlICJXZWJQcm9jZXNzLmgiCiAjaW5jbHVkZSAiV2ViUmVzb3VyY2VMb2Fk
ZXIuaCIKICNpbmNsdWRlIDxXZWJDb3JlL0RvY3VtZW50TG9hZGVyLmg+CkBAIC05Nyw3ICsxMDAs
MTAgQEAgdm9pZCBXZWJSZXNvdXJjZUxvYWRTY2hlZHVsZXI6OnNjaGVkdWxlTG9hZChSZXNvdXJj
ZUxvYWRlciogcmVzb3VyY2VMb2FkZXIsIFJlc28KICAgICBTdG9yZWRDcmVkZW50aWFscyBhbGxv
d1N0b3JlZENyZWRlbnRpYWxzID0gcmVzb3VyY2VMb2FkZXItPnNob3VsZFVzZUNyZWRlbnRpYWxT
dG9yYWdlKCkgPyBBbGxvd1N0b3JlZENyZWRlbnRpYWxzIDogRG9Ob3RBbGxvd1N0b3JlZENyZWRl
bnRpYWxzOwogICAgIGJvb2wgcHJpdmF0ZUJyb3dzaW5nRW5hYmxlZCA9IHJlc291cmNlTG9hZGVy
LT5mcmFtZUxvYWRlcigpLT5mcmFtZSgpLT5zZXR0aW5ncygpLT5wcml2YXRlQnJvd3NpbmdFbmFi
bGVkKCk7CiAKLSAgICBOZXR3b3JrUmVzb3VyY2VMb2FkUGFyYW1ldGVycyBsb2FkUGFyYW1ldGVy
cyhpZGVudGlmaWVyLCByZXNvdXJjZUxvYWRlci0+cmVxdWVzdCgpLCBwcmlvcml0eSwgY29udGVu
dFNuaWZmaW5nUG9saWN5LCBhbGxvd1N0b3JlZENyZWRlbnRpYWxzLCBwcml2YXRlQnJvd3NpbmdF
bmFibGVkKTsKKyAgICBXZWJGcmFtZSogd2ViRnJhbWUgPSBzdGF0aWNfY2FzdDxXZWJGcmFtZUxv
YWRlckNsaWVudCo+KHJlc291cmNlTG9hZGVyLT5mcmFtZUxvYWRlcigpLT5jbGllbnQoKSktPndl
YkZyYW1lKCk7CisgICAgV2ViUGFnZSogd2ViUGFnZSA9IHdlYkZyYW1lLT5wYWdlKCk7CisKKyAg
ICBOZXR3b3JrUmVzb3VyY2VMb2FkUGFyYW1ldGVycyBsb2FkUGFyYW1ldGVycyhpZGVudGlmaWVy
LCB3ZWJQYWdlLT5wYWdlSUQoKSwgd2ViRnJhbWUtPmZyYW1lSUQoKSwgcmVzb3VyY2VMb2FkZXIt
PnJlcXVlc3QoKSwgcHJpb3JpdHksIGNvbnRlbnRTbmlmZmluZ1BvbGljeSwgYWxsb3dTdG9yZWRD
cmVkZW50aWFscywgcHJpdmF0ZUJyb3dzaW5nRW5hYmxlZCk7CiAgICAgaWYgKCFXZWJQcm9jZXNz
OjpzaGFyZWQoKS5uZXR3b3JrQ29ubmVjdGlvbigpLT5jb25uZWN0aW9uKCktPnNlbmQoTWVzc2Fn
ZXM6Ok5ldHdvcmtDb25uZWN0aW9uVG9XZWJQcm9jZXNzOjpTY2hlZHVsZVJlc291cmNlTG9hZChs
b2FkUGFyYW1ldGVycyksIDApKSB7CiAgICAgICAgIC8vIFdlIHByb2JhYmx5IGZhaWxlZCB0byBz
Y2hlZHVsZSB0aGlzIGxvYWQgd2l0aCB0aGUgTmV0d29ya1Byb2Nlc3MgYmVjYXVzZSBpdCBoYWQg
Y3Jhc2hlZC4KICAgICAgICAgLy8gVGhpcyBsb2FkIHdpbGwgbmV2ZXIgc3VjY2VlZCBzbyB3ZSB3
aWxsIHNjaGVkdWxlIGl0IHRvIGZhaWwgYXN5bmNocm9ub3VzbHkuCmRpZmYgLS1naXQgYS9Tb3Vy
Y2UvV2ViS2l0Mi9XZWJQcm9jZXNzL1dlYkNvcmVTdXBwb3J0L1dlYlBsYXRmb3JtU3RyYXRlZ2ll
cy5jcHAgYi9Tb3VyY2UvV2ViS2l0Mi9XZWJQcm9jZXNzL1dlYkNvcmVTdXBwb3J0L1dlYlBsYXRm
b3JtU3RyYXRlZ2llcy5jcHAKaW5kZXggZDZiNWJiMy4uNjU4NjE3MSAxMDA2NDQKLS0tIGEvU291
cmNlL1dlYktpdDIvV2ViUHJvY2Vzcy9XZWJDb3JlU3VwcG9ydC9XZWJQbGF0Zm9ybVN0cmF0ZWdp
ZXMuY3BwCisrKyBiL1NvdXJjZS9XZWJLaXQyL1dlYlByb2Nlc3MvV2ViQ29yZVN1cHBvcnQvV2Vi
UGxhdGZvcm1TdHJhdGVnaWVzLmNwcApAQCAtMjI4LDcgKzIyOCw3IEBAIHZvaWQgV2ViUGxhdGZv
cm1TdHJhdGVnaWVzOjpsb2FkUmVzb3VyY2VTeW5jaHJvbm91c2x5KE5ldHdvcmtpbmdDb250ZXh0
KiBjb250ZXh0CiAKICAgICBDb3JlSVBDOjpEYXRhUmVmZXJlbmNlIGRhdGFSZWZlcmVuY2U7CiAK
LSAgICBOZXR3b3JrUmVzb3VyY2VMb2FkUGFyYW1ldGVycyBsb2FkUGFyYW1ldGVycyhyZXNvdXJj
ZUxvYWRJZGVudGlmaWVyLCByZXF1ZXN0LCBSZXNvdXJjZUxvYWRQcmlvcml0eUhpZ2hlc3QsIFNu
aWZmQ29udGVudCwgc3RvcmVkQ3JlZGVudGlhbHMsIGNvbnRleHQtPnN0b3JhZ2VTZXNzaW9uKCku
aXNQcml2YXRlQnJvd3NpbmdTZXNzaW9uKCkpOworICAgIE5ldHdvcmtSZXNvdXJjZUxvYWRQYXJh
bWV0ZXJzIGxvYWRQYXJhbWV0ZXJzKHJlc291cmNlTG9hZElkZW50aWZpZXIsIDAsIDAsIHJlcXVl
c3QsIFJlc291cmNlTG9hZFByaW9yaXR5SGlnaGVzdCwgU25pZmZDb250ZW50LCBzdG9yZWRDcmVk
ZW50aWFscywgY29udGV4dC0+c3RvcmFnZVNlc3Npb24oKS5pc1ByaXZhdGVCcm93c2luZ1Nlc3Np
b24oKSk7CiAgICAgaWYgKCFXZWJQcm9jZXNzOjpzaGFyZWQoKS5uZXR3b3JrQ29ubmVjdGlvbigp
LT5jb25uZWN0aW9uKCktPnNlbmRTeW5jKE1lc3NhZ2VzOjpOZXR3b3JrQ29ubmVjdGlvblRvV2Vi
UHJvY2Vzczo6UGVyZm9ybVN5bmNocm9ub3VzTG9hZChsb2FkUGFyYW1ldGVycyksIE1lc3NhZ2Vz
OjpOZXR3b3JrQ29ubmVjdGlvblRvV2ViUHJvY2Vzczo6UGVyZm9ybVN5bmNocm9ub3VzTG9hZDo6
UmVwbHkoZXJyb3IsIHJlc3BvbnNlLCBkYXRhUmVmZXJlbmNlKSwgMCkpIHsKICAgICAgICAgcmVz
cG9uc2UgPSBSZXNvdXJjZVJlc3BvbnNlKCk7CiAgICAgICAgIGVycm9yID0gaW50ZXJuYWxFcnJv
cihyZXF1ZXN0LnVybCgpKTsK
</data>
<flag name="review"
          id="203642"
          type_id="1"
          status="+"
          setter="ap"
    />
    <flag name="commit-queue"
          id="203648"
          type_id="3"
          status="-"
          setter="buildbot"
    />
          </attachment>
      

    </bug>

</bugzilla>