<?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>194075</bug_id>
          
          <creation_ts>2019-01-30 20:53:44 -0800</creation_ts>
          <short_desc>[SOUP] Move cookiePersistentStoragePath and cookiePersistentStorageType from NetworkProcess to NetworkSession</short_desc>
          <delta_ts>2019-02-05 08:03:18 -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>WebKitGTK</component>
          <version>WebKit Nightly Build</version>
          <rep_platform>PC</rep_platform>
          <op_sys>Linux</op_sys>
          <bug_status>RESOLVED</bug_status>
          <resolution>FIXED</resolution>
          
          
          <bug_file_loc></bug_file_loc>
          <status_whiteboard></status_whiteboard>
          <keywords></keywords>
          <priority>P2</priority>
          <bug_severity>Normal</bug_severity>
          <target_milestone>---</target_milestone>
          <dependson>194209</dependson>
          
          <everconfirmed>1</everconfirmed>
          <reporter name="Michael Catanzaro">mcatanzaro</reporter>
          <assigned_to name="Michael Catanzaro">mcatanzaro</assigned_to>
          <cc>achristensen</cc>
    
    <cc>berto</cc>
    
    <cc>bugs-noreply</cc>
    
    <cc>cgarcia</cc>
    
    <cc>ews-watchlist</cc>
    
    <cc>gustavo</cc>
    
    <cc>mcatanzaro</cc>
    
    <cc>webkit-bug-importer</cc>
          

      

      

      

          <comment_sort_order>oldest_to_newest</comment_sort_order>  
          <long_desc isprivate="0" >
    <commentid>1500402</commentid>
    <comment_count>0</comment_count>
    <who name="Michael Catanzaro">mcatanzaro</who>
    <bug_when>2019-01-30 20:53:44 -0800</bug_when>
    <thetext>Move cookiePersistentStoragePath and cookiePersistentStorageType from NetworkProcess to NetworkSession to reduce globals. This removes two of the six soup-specific variables in NetworkProcessCreationParameters. More to come....</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1500405</commentid>
    <comment_count>1</comment_count>
      <attachid>360687</attachid>
    <who name="Michael Catanzaro">mcatanzaro</who>
    <bug_when>2019-01-30 20:59:01 -0800</bug_when>
    <thetext>Created attachment 360687
Patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1500407</commentid>
    <comment_count>2</comment_count>
    <who name="EWS Watchlist">ews-watchlist</who>
    <bug_when>2019-01-30 21:02:09 -0800</bug_when>
    <thetext>Thanks for the patch. If this patch contains new public API please make sure it follows the guidelines for new WebKit2 GTK+ API. See http://trac.webkit.org/wiki/WebKitGTK/AddingNewWebKit2API</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1500488</commentid>
    <comment_count>3</comment_count>
      <attachid>360687</attachid>
    <who name="Carlos Garcia Campos">cgarcia</who>
    <bug_when>2019-01-31 00:31:28 -0800</bug_when>
    <thetext>Comment on attachment 360687
Patch

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

&gt; Source/WebKit/UIProcess/API/glib/WebKitCookieManager.cpp:169
&gt; +    auto sessionID = webkitWebsiteDataManagerGetDataStore(manager-&gt;priv-&gt;dataManager).websiteDataStore().sessionID();

We should not allow to set a persistent cookie storage in ephemeral sessions. Return early here if sessionID is ephemeral. That&apos;s the reason why we used the default session ID unconditionally, for now in soup based ports all sessions but the default one are ephemeral.

&gt; Source/WebKit/UIProcess/soup/WebCookieManagerProxySoup.cpp:44
&gt; +    auto pair = m_cookiePersistentStorageMap.get(sessionID);
&gt; +    storagePath = pair.first;
&gt; +    storageType = static_cast&lt;uint32_t&gt;(pair.second);

You should check the return value in case the sessionID is not present in the map. Or add an assert if it should always be.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1500557</commentid>
    <comment_count>4</comment_count>
    <who name="Michael Catanzaro">mcatanzaro</who>
    <bug_when>2019-01-31 06:19:08 -0800</bug_when>
    <thetext>(In reply to Carlos Garcia Campos from comment #3)
&gt; &gt; Source/WebKit/UIProcess/API/glib/WebKitCookieManager.cpp:169
&gt; &gt; +    auto sessionID = webkitWebsiteDataManagerGetDataStore(manager-&gt;priv-&gt;dataManager).websiteDataStore().sessionID();
&gt; 
&gt; We should not allow to set a persistent cookie storage in ephemeral
&gt; sessions. Return early here if sessionID is ephemeral. That&apos;s the reason why
&gt; we used the default session ID unconditionally, for now in soup based ports
&gt; all sessions but the default one are ephemeral.

OK.

&gt; &gt; Source/WebKit/UIProcess/soup/WebCookieManagerProxySoup.cpp:44
&gt; &gt; +    auto pair = m_cookiePersistentStorageMap.get(sessionID);
&gt; &gt; +    storagePath = pair.first;
&gt; &gt; +    storageType = static_cast&lt;uint32_t&gt;(pair.second);
&gt; 
&gt; You should check the return value in case the sessionID is not present in
&gt; the map. Or add an assert if it should always be.

If it&apos;s not present then an empty value gets used (I think empty string and the first storage type policy) so the end result would be the same, right?</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1500569</commentid>
    <comment_count>5</comment_count>
    <who name="Michael Catanzaro">mcatanzaro</who>
    <bug_when>2019-01-31 07:02:14 -0800</bug_when>
    <thetext>(In reply to Michael Catanzaro from comment #4)
&gt; If it&apos;s not present then an empty value gets used (I think empty string and
&gt; the first storage type policy) so the end result would be the same, right?

Verified it returns empty string for path, and 0 (SoupCookiePersistentStorageText) for type.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1500570</commentid>
    <comment_count>6</comment_count>
    <who name="Michael Catanzaro">mcatanzaro</who>
    <bug_when>2019-01-31 07:04:37 -0800</bug_when>
    <thetext>Committed r240785: &lt;https://trac.webkit.org/changeset/240785&gt;</thetext>
  </long_desc>
      
          <attachment
              isobsolete="0"
              ispatch="1"
              isprivate="0"
          >
            <attachid>360687</attachid>
            <date>2019-01-30 20:59:01 -0800</date>
            <delta_ts>2019-01-30 21:05:07 -0800</delta_ts>
            <desc>Patch</desc>
            <filename>bug-194075-20190130225900.patch</filename>
            <type>text/plain</type>
            <size>24770</size>
            <attacher name="Michael Catanzaro">mcatanzaro</attacher>
            
              <data encoding="base64">U3VidmVyc2lvbiBSZXZpc2lvbjogMjQwNzU1CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L0No
YW5nZUxvZyBiL1NvdXJjZS9XZWJLaXQvQ2hhbmdlTG9nCmluZGV4IDIxZTRiYjI0NTNiNjM2OGE5
MWJlN2YzMzc2ODIyMDkwMjhjOTA2MTMuLmY5N2FhOGJkMmRhZWUyYzM3Y2ZlODNjMWQwYWNkYjJl
ZTI4Y2Y1ZjYgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQvQ2hhbmdlTG9nCisrKyBiL1NvdXJj
ZS9XZWJLaXQvQ2hhbmdlTG9nCkBAIC0xLDMgKzEsNTAgQEAKKzIwMTktMDEtMzAgIE1pY2hhZWwg
Q2F0YW56YXJvICA8bWNhdGFuemFyb0BpZ2FsaWEuY29tPgorCisgICAgICAgIFtTT1VQXSBNb3Zl
IGNvb2tpZVBlcnNpc3RlbnRTdG9yYWdlUGF0aCBhbmQgY29va2llUGVyc2lzdGVudFN0b3JhZ2VU
eXBlIGZyb20gTmV0d29ya1Byb2Nlc3MgdG8gTmV0d29ya1Nlc3Npb24KKyAgICAgICAgaHR0cHM6
Ly9idWdzLndlYmtpdC5vcmcvc2hvd19idWcuY2dpP2lkPTE5NDA3NQorCisgICAgICAgIFJldmll
d2VkIGJ5IE5PQk9EWSAoT09QUyEpLgorCisgICAgICAgIE1vdmUgY29va2llUGVyc2lzdGVudFN0
b3JhZ2VQYXRoIGFuZCBjb29raWVQZXJzaXN0ZW50U3RvcmFnZVR5cGUgZnJvbSBOZXR3b3JrUHJv
Y2VzcyB0bworICAgICAgICBOZXR3b3JrU2Vzc2lvbiB0byByZWR1Y2UgZ2xvYmFscy4gVGhpcyBy
ZW1vdmVzIHR3byBvZiB0aGUgc2l4IHNvdXAtc3BlY2lmaWMgdmFyaWFibGVzIGluCisgICAgICAg
IE5ldHdvcmtQcm9jZXNzQ3JlYXRpb25QYXJhbWV0ZXJzCisKKyAgICAgICAgKiBOZXR3b3JrUHJv
Y2Vzcy9Db29raWVzL1dlYkNvb2tpZU1hbmFnZXIuaDoKKyAgICAgICAgKiBOZXR3b3JrUHJvY2Vz
cy9Db29raWVzL1dlYkNvb2tpZU1hbmFnZXIubWVzc2FnZXMuaW46CisgICAgICAgICogTmV0d29y
a1Byb2Nlc3MvQ29va2llcy9zb3VwL1dlYkNvb2tpZU1hbmFnZXJTb3VwLmNwcDoKKyAgICAgICAg
KFdlYktpdDo6V2ViQ29va2llTWFuYWdlcjo6c2V0Q29va2llUGVyc2lzdGVudFN0b3JhZ2UpOgor
ICAgICAgICAqIE5ldHdvcmtQcm9jZXNzL05ldHdvcmtQcm9jZXNzQ3JlYXRpb25QYXJhbWV0ZXJz
LmNwcDoKKyAgICAgICAgKFdlYktpdDo6TmV0d29ya1Byb2Nlc3NDcmVhdGlvblBhcmFtZXRlcnM6
OmVuY29kZSBjb25zdCk6CisgICAgICAgIChXZWJLaXQ6Ok5ldHdvcmtQcm9jZXNzQ3JlYXRpb25Q
YXJhbWV0ZXJzOjpkZWNvZGUpOgorICAgICAgICAqIE5ldHdvcmtQcm9jZXNzL05ldHdvcmtQcm9j
ZXNzQ3JlYXRpb25QYXJhbWV0ZXJzLmg6CisgICAgICAgICogTmV0d29ya1Byb2Nlc3MvTmV0d29y
a1Nlc3Npb25DcmVhdGlvblBhcmFtZXRlcnMuY3BwOgorICAgICAgICAoV2ViS2l0OjpOZXR3b3Jr
U2Vzc2lvbkNyZWF0aW9uUGFyYW1ldGVyczo6cHJpdmF0ZVNlc3Npb25QYXJhbWV0ZXJzKToKKyAg
ICAgICAgKFdlYktpdDo6TmV0d29ya1Nlc3Npb25DcmVhdGlvblBhcmFtZXRlcnM6OmVuY29kZSBj
b25zdCk6CisgICAgICAgIChXZWJLaXQ6Ok5ldHdvcmtTZXNzaW9uQ3JlYXRpb25QYXJhbWV0ZXJz
OjpkZWNvZGUpOgorICAgICAgICAqIE5ldHdvcmtQcm9jZXNzL05ldHdvcmtTZXNzaW9uQ3JlYXRp
b25QYXJhbWV0ZXJzLmg6CisgICAgICAgICogTmV0d29ya1Byb2Nlc3Mvc291cC9OZXR3b3JrUHJv
Y2Vzc1NvdXAuY3BwOgorICAgICAgICAoV2ViS2l0OjpOZXR3b3JrUHJvY2Vzczo6cGxhdGZvcm1J
bml0aWFsaXplTmV0d29ya1Byb2Nlc3MpOgorICAgICAgICAqIE5ldHdvcmtQcm9jZXNzL3NvdXAv
TmV0d29ya1Nlc3Npb25Tb3VwLmNwcDoKKyAgICAgICAgKFdlYktpdDo6TmV0d29ya1Nlc3Npb25T
b3VwOjpOZXR3b3JrU2Vzc2lvblNvdXApOgorICAgICAgICAqIFNvdXJjZXNHVEsudHh0OgorICAg
ICAgICAqIFNvdXJjZXNXUEUudHh0OgorICAgICAgICAqIFVJUHJvY2Vzcy9BUEkvZ2xpYi9XZWJL
aXRDb29raWVNYW5hZ2VyLmNwcDoKKyAgICAgICAgKHdlYmtpdF9jb29raWVfbWFuYWdlcl9zZXRf
cGVyc2lzdGVudF9zdG9yYWdlKToKKyAgICAgICAgKiBVSVByb2Nlc3MvV2ViQ29va2llTWFuYWdl
clByb3h5LmNwcDoKKyAgICAgICAgKFdlYktpdDo6V2ViQ29va2llTWFuYWdlclByb3h5OjpXZWJD
b29raWVNYW5hZ2VyUHJveHkpOgorICAgICAgICAqIFVJUHJvY2Vzcy9XZWJDb29raWVNYW5hZ2Vy
UHJveHkuaDoKKyAgICAgICAgKiBVSVByb2Nlc3MvV2Vic2l0ZURhdGEvV2Vic2l0ZURhdGFTdG9y
ZS5jcHA6CisgICAgICAgIChXZWJLaXQ6OldlYnNpdGVEYXRhU3RvcmU6OnBhcmFtZXRlcnMpOgor
ICAgICAgICAqIFVJUHJvY2Vzcy9XZWJzaXRlRGF0YS9XZWJzaXRlRGF0YVN0b3JlLmg6CisgICAg
ICAgICogVUlQcm9jZXNzL1dlYnNpdGVEYXRhL2N1cmwvV2Vic2l0ZURhdGFTdG9yZUN1cmwuY3Bw
OgorICAgICAgICAoV2ViS2l0OjpXZWJzaXRlRGF0YVN0b3JlOjpwbGF0Zm9ybVNldE5ldHdvcmtQ
YXJhbWV0ZXJzKToKKyAgICAgICAgKFdlYktpdDo6V2Vic2l0ZURhdGFTdG9yZTo6cGxhdGZvcm1T
ZXRQYXJhbWV0ZXJzKTogRGVsZXRlZC4KKyAgICAgICAgKiBVSVByb2Nlc3Mvc291cC9XZWJDb29r
aWVNYW5hZ2VyUHJveHlTb3VwLmNwcDoKKyAgICAgICAgKFdlYktpdDo6V2ViQ29va2llTWFuYWdl
clByb3h5OjpzZXRDb29raWVQZXJzaXN0ZW50U3RvcmFnZSk6CisgICAgICAgIChXZWJLaXQ6Oldl
YkNvb2tpZU1hbmFnZXJQcm94eTo6Z2V0Q29va2llUGVyc2lzdGVudFN0b3JhZ2UgY29uc3QpOgor
ICAgICAgICAqIFVJUHJvY2Vzcy9zb3VwL1dlYlByb2Nlc3NQb29sU291cC5jcHA6CisgICAgICAg
IChXZWJLaXQ6OldlYlByb2Nlc3NQb29sOjpwbGF0Zm9ybUluaXRpYWxpemVOZXR3b3JrUHJvY2Vz
cyk6CisKIDIwMTktMDEtMzAgIEtlaXRoIFJvbGxpbiAgPGtyb2xsaW5AYXBwbGUuY29tPgogCiAg
ICAgICAgIEFkZCBkZWZhdWx0IGNvbnN0cnVjdG9yIGZvciBOZXR3b3JrQWN0aXZpdHlUcmFja2Vy
CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L05ldHdvcmtQcm9jZXNzL0Nvb2tpZXMvV2ViQ29v
a2llTWFuYWdlci5oIGIvU291cmNlL1dlYktpdC9OZXR3b3JrUHJvY2Vzcy9Db29raWVzL1dlYkNv
b2tpZU1hbmFnZXIuaAppbmRleCA4ODcyMmU3M2M4ZWVlNDBjMTJhMDc2ZGFkZjQ2MjgyMmEwOWYy
NjNiLi4zMTU2NDY2ODA3YzljOWUyODU0NDc0ZTJlZTMzNGFhMzM2ZTI3Njk5IDEwMDY0NAotLS0g
YS9Tb3VyY2UvV2ViS2l0L05ldHdvcmtQcm9jZXNzL0Nvb2tpZXMvV2ViQ29va2llTWFuYWdlci5o
CisrKyBiL1NvdXJjZS9XZWJLaXQvTmV0d29ya1Byb2Nlc3MvQ29va2llcy9XZWJDb29raWVNYW5h
Z2VyLmgKQEAgLTU4LDcgKzU4LDcgQEAgcHVibGljOgogICAgIHZvaWQgc2V0SFRUUENvb2tpZUFj
Y2VwdFBvbGljeShIVFRQQ29va2llQWNjZXB0UG9saWN5LCBPcHRpb25hbENhbGxiYWNrSUQpOwog
CiAjaWYgVVNFKFNPVVApCi0gICAgdm9pZCBzZXRDb29raWVQZXJzaXN0ZW50U3RvcmFnZShjb25z
dCBTdHJpbmcmIHN0b3JhZ2VQYXRoLCB1aW50MzJfdCBzdG9yYWdlVHlwZSk7CisgICAgdm9pZCBz
ZXRDb29raWVQZXJzaXN0ZW50U3RvcmFnZShQQUw6OlNlc3Npb25JRCwgY29uc3QgU3RyaW5nJiBz
dG9yYWdlUGF0aCwgdWludDMyX3Qgc3RvcmFnZVR5cGUpOwogI2VuZGlmCiAKICAgICB2b2lkIG5v
dGlmeUNvb2tpZXNEaWRDaGFuZ2UoUEFMOjpTZXNzaW9uSUQpOwpkaWZmIC0tZ2l0IGEvU291cmNl
L1dlYktpdC9OZXR3b3JrUHJvY2Vzcy9Db29raWVzL1dlYkNvb2tpZU1hbmFnZXIubWVzc2FnZXMu
aW4gYi9Tb3VyY2UvV2ViS2l0L05ldHdvcmtQcm9jZXNzL0Nvb2tpZXMvV2ViQ29va2llTWFuYWdl
ci5tZXNzYWdlcy5pbgppbmRleCAwYjFmZDU1OWUwYmViMjZlMDAzNzk0MzRhZGFlNGU1YzllNDdk
YWFmLi4yZWUwNmFkNGFjOTQwNGIxOWQxYWU5ZmFkZWI3MTg0ZTFlYTU3NzMxIDEwMDY0NAotLS0g
YS9Tb3VyY2UvV2ViS2l0L05ldHdvcmtQcm9jZXNzL0Nvb2tpZXMvV2ViQ29va2llTWFuYWdlci5t
ZXNzYWdlcy5pbgorKysgYi9Tb3VyY2UvV2ViS2l0L05ldHdvcmtQcm9jZXNzL0Nvb2tpZXMvV2Vi
Q29va2llTWFuYWdlci5tZXNzYWdlcy5pbgpAQCAtNDIsNiArNDIsNiBAQAogICAgIHZvaWQgU3Rv
cE9ic2VydmluZ0Nvb2tpZUNoYW5nZXMoUEFMOjpTZXNzaW9uSUQgc2Vzc2lvbklEKQogCiAjaWYg
VVNFKFNPVVApCi0gICAgU2V0Q29va2llUGVyc2lzdGVudFN0b3JhZ2UoU3RyaW5nIHN0b3JhZ2VQ
YXRoLCB1aW50MzJfdCBzdG9yYWdlVHlwZSkKKyAgICBTZXRDb29raWVQZXJzaXN0ZW50U3RvcmFn
ZShQQUw6OlNlc3Npb25JRCBzZXNzaW9uSUQsIFN0cmluZyBzdG9yYWdlUGF0aCwgdWludDMyX3Qg
c3RvcmFnZVR5cGUpCiAjZW5kaWYKIH0KZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvTmV0d29y
a1Byb2Nlc3MvQ29va2llcy9zb3VwL1dlYkNvb2tpZU1hbmFnZXJTb3VwLmNwcCBiL1NvdXJjZS9X
ZWJLaXQvTmV0d29ya1Byb2Nlc3MvQ29va2llcy9zb3VwL1dlYkNvb2tpZU1hbmFnZXJTb3VwLmNw
cAppbmRleCBhZjMwZmFlNzk2MDk4OGYwMjNjNzI5YWVhNThhNzgzNWI5NjA4MWNjLi42ODk4Yzdm
MzRkNmY3ODY1OGJhZmRiOTEzMTA2YTM5MjM5OWM4OTg3IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2Vi
S2l0L05ldHdvcmtQcm9jZXNzL0Nvb2tpZXMvc291cC9XZWJDb29raWVNYW5hZ2VyU291cC5jcHAK
KysrIGIvU291cmNlL1dlYktpdC9OZXR3b3JrUHJvY2Vzcy9Db29raWVzL3NvdXAvV2ViQ29va2ll
TWFuYWdlclNvdXAuY3BwCkBAIC03MSw3ICs3MSw3IEBAIEhUVFBDb29raWVBY2NlcHRQb2xpY3kg
V2ViQ29va2llTWFuYWdlcjo6cGxhdGZvcm1HZXRIVFRQQ29va2llQWNjZXB0UG9saWN5KCkKICAg
ICByZXR1cm4gSFRUUENvb2tpZUFjY2VwdFBvbGljeU9ubHlGcm9tTWFpbkRvY3VtZW50RG9tYWlu
OwogfQogCi12b2lkIFdlYkNvb2tpZU1hbmFnZXI6OnNldENvb2tpZVBlcnNpc3RlbnRTdG9yYWdl
KGNvbnN0IFN0cmluZyYgc3RvcmFnZVBhdGgsIHVpbnQzMl90IHN0b3JhZ2VUeXBlKQordm9pZCBX
ZWJDb29raWVNYW5hZ2VyOjpzZXRDb29raWVQZXJzaXN0ZW50U3RvcmFnZShQQUw6OlNlc3Npb25J
RCBzZXNzaW9uSUQsIGNvbnN0IFN0cmluZyYgc3RvcmFnZVBhdGgsIHVpbnQzMl90IHN0b3JhZ2VU
eXBlKQogewogICAgIEdSZWZQdHI8U291cENvb2tpZUphcj4gamFyOwogICAgIHN3aXRjaCAoc3Rv
cmFnZVR5cGUpIHsKQEAgLTg1LDkgKzg1LDEwIEBAIHZvaWQgV2ViQ29va2llTWFuYWdlcjo6c2V0
Q29va2llUGVyc2lzdGVudFN0b3JhZ2UoY29uc3QgU3RyaW5nJiBzdG9yYWdlUGF0aCwgdWluCiAg
ICAgICAgIEFTU0VSVF9OT1RfUkVBQ0hFRCgpOwogICAgIH0KIAotICAgIGF1dG8mIHN0b3JhZ2VT
ZXNzaW9uID0gbV9wcm9jZXNzLmRlZmF1bHRTdG9yYWdlU2Vzc2lvbigpOwotICAgIHNvdXBfY29v
a2llX2phcl9zZXRfYWNjZXB0X3BvbGljeShqYXIuZ2V0KCksIHNvdXBfY29va2llX2phcl9nZXRf
YWNjZXB0X3BvbGljeShzdG9yYWdlU2Vzc2lvbi5jb29raWVTdG9yYWdlKCkpKTsKLSAgICBzdG9y
YWdlU2Vzc2lvbi5zZXRDb29raWVTdG9yYWdlKGphci5nZXQoKSk7CisgICAgaWYgKGF1dG8qIHN0
b3JhZ2VTZXNzaW9uID0gbV9wcm9jZXNzLnN0b3JhZ2VTZXNzaW9uKHNlc3Npb25JRCkpIHsKKyAg
ICAgICAgc291cF9jb29raWVfamFyX3NldF9hY2NlcHRfcG9saWN5KGphci5nZXQoKSwgc291cF9j
b29raWVfamFyX2dldF9hY2NlcHRfcG9saWN5KHN0b3JhZ2VTZXNzaW9uLT5jb29raWVTdG9yYWdl
KCkpKTsKKyAgICAgICAgc3RvcmFnZVNlc3Npb24tPnNldENvb2tpZVN0b3JhZ2UoamFyLmdldCgp
KTsKKyAgICB9CiB9CiAKIH0gLy8gbmFtZXNwYWNlIFdlYktpdApkaWZmIC0tZ2l0IGEvU291cmNl
L1dlYktpdC9OZXR3b3JrUHJvY2Vzcy9OZXR3b3JrUHJvY2Vzc0NyZWF0aW9uUGFyYW1ldGVycy5j
cHAgYi9Tb3VyY2UvV2ViS2l0L05ldHdvcmtQcm9jZXNzL05ldHdvcmtQcm9jZXNzQ3JlYXRpb25Q
YXJhbWV0ZXJzLmNwcAppbmRleCAwY2E0ZTI4Yjk5MmU2MTIyYTFlY2QzMzIwZWEyOWIwOWY4MzVh
NjEzLi5jNmRmMDhlOWZiNzc2NmY3NzBhZmFkZWYxYWE3ZjIxMjk0OWQxZjU1IDEwMDY0NAotLS0g
YS9Tb3VyY2UvV2ViS2l0L05ldHdvcmtQcm9jZXNzL05ldHdvcmtQcm9jZXNzQ3JlYXRpb25QYXJh
bWV0ZXJzLmNwcAorKysgYi9Tb3VyY2UvV2ViS2l0L05ldHdvcmtQcm9jZXNzL05ldHdvcmtQcm9j
ZXNzQ3JlYXRpb25QYXJhbWV0ZXJzLmNwcApAQCAtNzIsOCArNzIsNiBAQCB2b2lkIE5ldHdvcmtQ
cm9jZXNzQ3JlYXRpb25QYXJhbWV0ZXJzOjplbmNvZGUoSVBDOjpFbmNvZGVyJiBlbmNvZGVyKSBj
b25zdAogI2VuZGlmCiAgICAgZW5jb2RlciA8PCBkZWZhdWx0RGF0YVN0b3JlUGFyYW1ldGVyczsK
ICNpZiBVU0UoU09VUCkKLSAgICBlbmNvZGVyIDw8IGNvb2tpZVBlcnNpc3RlbnRTdG9yYWdlUGF0
aDsKLSAgICBlbmNvZGVyIDw8IGNvb2tpZVBlcnNpc3RlbnRTdG9yYWdlVHlwZTsKICAgICBlbmNv
ZGVyLmVuY29kZUVudW0oY29va2llQWNjZXB0UG9saWN5KTsKICAgICBlbmNvZGVyIDw8IGlnbm9y
ZVRMU0Vycm9yczsKICAgICBlbmNvZGVyIDw8IGxhbmd1YWdlczsKQEAgLTE3MiwxMCArMTcwLDYg
QEAgYm9vbCBOZXR3b3JrUHJvY2Vzc0NyZWF0aW9uUGFyYW1ldGVyczo6ZGVjb2RlKElQQzo6RGVj
b2RlciYgZGVjb2RlciwgTmV0d29ya1Byb2MKICAgICByZXN1bHQuZGVmYXVsdERhdGFTdG9yZVBh
cmFtZXRlcnMgPSBXVEZNb3ZlKCpkZWZhdWx0RGF0YVN0b3JlUGFyYW1ldGVycyk7CiAKICNpZiBV
U0UoU09VUCkKLSAgICBpZiAoIWRlY29kZXIuZGVjb2RlKHJlc3VsdC5jb29raWVQZXJzaXN0ZW50
U3RvcmFnZVBhdGgpKQotICAgICAgICByZXR1cm4gZmFsc2U7Ci0gICAgaWYgKCFkZWNvZGVyLmRl
Y29kZShyZXN1bHQuY29va2llUGVyc2lzdGVudFN0b3JhZ2VUeXBlKSkKLSAgICAgICAgcmV0dXJu
IGZhbHNlOwogICAgIGlmICghZGVjb2Rlci5kZWNvZGVFbnVtKHJlc3VsdC5jb29raWVBY2NlcHRQ
b2xpY3kpKQogICAgICAgICByZXR1cm4gZmFsc2U7CiAgICAgaWYgKCFkZWNvZGVyLmRlY29kZShy
ZXN1bHQuaWdub3JlVExTRXJyb3JzKSkKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvTmV0d29y
a1Byb2Nlc3MvTmV0d29ya1Byb2Nlc3NDcmVhdGlvblBhcmFtZXRlcnMuaCBiL1NvdXJjZS9XZWJL
aXQvTmV0d29ya1Byb2Nlc3MvTmV0d29ya1Byb2Nlc3NDcmVhdGlvblBhcmFtZXRlcnMuaAppbmRl
eCBlZGMwYTEwZDQ0MjkzMzA3NTIxODk3MjI3M2FhM2U5NTAyNGY2YTBkLi4yZmQzYmU5ZmRlZDk4
MGI3NTczY2UzYjUxNmIwN2E5NmZhZGFmNzNiIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0L05l
dHdvcmtQcm9jZXNzL05ldHdvcmtQcm9jZXNzQ3JlYXRpb25QYXJhbWV0ZXJzLmgKKysrIGIvU291
cmNlL1dlYktpdC9OZXR3b3JrUHJvY2Vzcy9OZXR3b3JrUHJvY2Vzc0NyZWF0aW9uUGFyYW1ldGVy
cy5oCkBAIC04Nyw4ICs4Nyw2IEBAIHN0cnVjdCBOZXR3b3JrUHJvY2Vzc0NyZWF0aW9uUGFyYW1l
dGVycyB7CiAgICAgV2Vic2l0ZURhdGFTdG9yZVBhcmFtZXRlcnMgZGVmYXVsdERhdGFTdG9yZVBh
cmFtZXRlcnM7CiAgICAgCiAjaWYgVVNFKFNPVVApCi0gICAgU3RyaW5nIGNvb2tpZVBlcnNpc3Rl
bnRTdG9yYWdlUGF0aDsKLSAgICB1aW50MzJfdCBjb29raWVQZXJzaXN0ZW50U3RvcmFnZVR5cGUg
eyAwIH07CiAgICAgSFRUUENvb2tpZUFjY2VwdFBvbGljeSBjb29raWVBY2NlcHRQb2xpY3kgeyBI
VFRQQ29va2llQWNjZXB0UG9saWN5QWx3YXlzIH07CiAgICAgYm9vbCBpZ25vcmVUTFNFcnJvcnMg
eyBmYWxzZSB9OwogICAgIFZlY3RvcjxTdHJpbmc+IGxhbmd1YWdlczsKZGlmZiAtLWdpdCBhL1Nv
dXJjZS9XZWJLaXQvTmV0d29ya1Byb2Nlc3MvTmV0d29ya1Nlc3Npb25DcmVhdGlvblBhcmFtZXRl
cnMuY3BwIGIvU291cmNlL1dlYktpdC9OZXR3b3JrUHJvY2Vzcy9OZXR3b3JrU2Vzc2lvbkNyZWF0
aW9uUGFyYW1ldGVycy5jcHAKaW5kZXggMjcwYWU0MzIwNTk4OTY2NTg5ZTk3YTZhMTZiMzc1NDhj
YmRhN2ZjZS4uY2ZjOWUxMGJiY2YxNzBiMWM4NTM4NjY2NGM4YzBmNDZkZTBlN2ZjNSAxMDA2NDQK
LS0tIGEvU291cmNlL1dlYktpdC9OZXR3b3JrUHJvY2Vzcy9OZXR3b3JrU2Vzc2lvbkNyZWF0aW9u
UGFyYW1ldGVycy5jcHAKKysrIGIvU291cmNlL1dlYktpdC9OZXR3b3JrUHJvY2Vzcy9OZXR3b3Jr
U2Vzc2lvbkNyZWF0aW9uUGFyYW1ldGVycy5jcHAKQEAgLTQ0LDYgKzQ0LDkgQEAgTmV0d29ya1Nl
c3Npb25DcmVhdGlvblBhcmFtZXRlcnMgTmV0d29ya1Nlc3Npb25DcmVhdGlvblBhcmFtZXRlcnM6
OnByaXZhdGVTZXNzaW8KICNpZiBQTEFURk9STShDT0NPQSkKICAgICAgICAgLCB7IH0sIHsgfSwg
eyB9LCBmYWxzZSwgeyB9LCB7IH0sIHsgfQogI2VuZGlmCisjaWYgVVNFKFNPVVApCisgICAgICAg
ICwgeyB9LCAwCisjZW5kaWYKICNpZiBVU0UoQ1VSTCkKICAgICAgICAgLCB7IH0sIHsgfQogI2Vu
ZGlmCkBAIC02NSw2ICs2OCwxMCBAQCB2b2lkIE5ldHdvcmtTZXNzaW9uQ3JlYXRpb25QYXJhbWV0
ZXJzOjplbmNvZGUoSVBDOjpFbmNvZGVyJiBlbmNvZGVyKSBjb25zdAogICAgIGVuY29kZXIgPDwg
aHR0cFByb3h5OwogICAgIGVuY29kZXIgPDwgaHR0cHNQcm94eTsKICNlbmRpZgorI2lmIFVTRShT
T1VQKQorICAgIGVuY29kZXIgPDwgY29va2llUGVyc2lzdGVudFN0b3JhZ2VQYXRoOworICAgIGVu
Y29kZXIgPDwgY29va2llUGVyc2lzdGVudFN0b3JhZ2VUeXBlOworI2VuZGlmCiAjaWYgVVNFKENV
UkwpCiAgICAgZW5jb2RlciA8PCBjb29raWVQZXJzaXN0ZW50U3RvcmFnZUZpbGU7CiAgICAgZW5j
b2RlciA8PCBwcm94eVNldHRpbmdzOwpAQCAtMTI1LDcgKzEzMiwxOSBAQCBPcHRpb25hbDxOZXR3
b3JrU2Vzc2lvbkNyZWF0aW9uUGFyYW1ldGVycz4gTmV0d29ya1Nlc3Npb25DcmVhdGlvblBhcmFt
ZXRlcnM6OmRlYwogICAgIGlmICghaHR0cHNQcm94eSkKICAgICAgICAgcmV0dXJuIFdURjo6bnVs
bG9wdDsKICNlbmRpZgotICAgIAorCisjaWYgVVNFKFNPVVApCisgICAgT3B0aW9uYWw8U3RyaW5n
PiBjb29raWVQZXJzaXN0ZW50U3RvcmFnZVBhdGg7CisgICAgZGVjb2RlciA+PiBjb29raWVQZXJz
aXN0ZW50U3RvcmFnZVBhdGg7CisgICAgaWYgKCFjb29raWVQZXJzaXN0ZW50U3RvcmFnZVBhdGgp
CisgICAgICAgIHJldHVybiBXVEY6Om51bGxvcHQ7CisKKyAgICBPcHRpb25hbDx1aW50MzJfdD4g
Y29va2llUGVyc2lzdGVudFN0b3JhZ2VUeXBlOworICAgIGRlY29kZXIgPj4gY29va2llUGVyc2lz
dGVudFN0b3JhZ2VUeXBlOworICAgIGlmICghY29va2llUGVyc2lzdGVudFN0b3JhZ2VUeXBlKQor
ICAgICAgICByZXR1cm4gV1RGOjpudWxsb3B0OworI2VuZGlmCisKICNpZiBVU0UoQ1VSTCkKICAg
ICBPcHRpb25hbDxTdHJpbmc+IGNvb2tpZVBlcnNpc3RlbnRTdG9yYWdlRmlsZTsKICAgICBkZWNv
ZGVyID4+IGNvb2tpZVBlcnNpc3RlbnRTdG9yYWdlRmlsZTsKQEAgLTE2Niw2ICsxODUsMTAgQEAg
T3B0aW9uYWw8TmV0d29ya1Nlc3Npb25DcmVhdGlvblBhcmFtZXRlcnM+IE5ldHdvcmtTZXNzaW9u
Q3JlYXRpb25QYXJhbWV0ZXJzOjpkZWMKICAgICAgICAgLCBXVEZNb3ZlKCpodHRwUHJveHkpCiAg
ICAgICAgICwgV1RGTW92ZSgqaHR0cHNQcm94eSkKICNlbmRpZgorI2lmIFVTRShTT1VQKQorICAg
ICAgICAsIFdURk1vdmUoKmNvb2tpZVBlcnNpc3RlbnRTdG9yYWdlUGF0aCkKKyAgICAgICAgLCBX
VEZNb3ZlKCpjb29raWVQZXJzaXN0ZW50U3RvcmFnZVR5cGUpCisjZW5kaWYKICNpZiBVU0UoQ1VS
TCkKICAgICAgICAgLCBXVEZNb3ZlKCpjb29raWVQZXJzaXN0ZW50U3RvcmFnZUZpbGUpCiAgICAg
ICAgICwgV1RGTW92ZSgqcHJveHlTZXR0aW5ncykKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQv
TmV0d29ya1Byb2Nlc3MvTmV0d29ya1Nlc3Npb25DcmVhdGlvblBhcmFtZXRlcnMuaCBiL1NvdXJj
ZS9XZWJLaXQvTmV0d29ya1Byb2Nlc3MvTmV0d29ya1Nlc3Npb25DcmVhdGlvblBhcmFtZXRlcnMu
aAppbmRleCA2ZjlkZThiODAxMzhkNDE4NjlkNzFjYmYwNmRiOTIxY2I5NDMxNDllLi5jZDVjYWUy
MzFiMTJhMGY4ZGNjZTQ5YzdmYjFlNTlmMzZiMzIxYTU3IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2Vi
S2l0L05ldHdvcmtQcm9jZXNzL05ldHdvcmtTZXNzaW9uQ3JlYXRpb25QYXJhbWV0ZXJzLmgKKysr
IGIvU291cmNlL1dlYktpdC9OZXR3b3JrUHJvY2Vzcy9OZXR3b3JrU2Vzc2lvbkNyZWF0aW9uUGFy
YW1ldGVycy5oCkBAIC02Niw2ICs2NiwxMCBAQCBzdHJ1Y3QgTmV0d29ya1Nlc3Npb25DcmVhdGlv
blBhcmFtZXRlcnMgewogICAgIFVSTCBodHRwUHJveHk7CiAgICAgVVJMIGh0dHBzUHJveHk7CiAj
ZW5kaWYKKyNpZiBVU0UoU09VUCkKKyAgICBTdHJpbmcgY29va2llUGVyc2lzdGVudFN0b3JhZ2VQ
YXRoOworICAgIHVpbnQzMl90IGNvb2tpZVBlcnNpc3RlbnRTdG9yYWdlVHlwZSB7IDAgfTsKKyNl
bmRpZgogI2lmIFVTRShDVVJMKQogICAgIFN0cmluZyBjb29raWVQZXJzaXN0ZW50U3RvcmFnZUZp
bGU7CiAgICAgV2ViQ29yZTo6Q3VybFByb3h5U2V0dGluZ3MgcHJveHlTZXR0aW5nczsKZGlmZiAt
LWdpdCBhL1NvdXJjZS9XZWJLaXQvTmV0d29ya1Byb2Nlc3Mvc291cC9OZXR3b3JrUHJvY2Vzc1Nv
dXAuY3BwIGIvU291cmNlL1dlYktpdC9OZXR3b3JrUHJvY2Vzcy9zb3VwL05ldHdvcmtQcm9jZXNz
U291cC5jcHAKaW5kZXggNzJmYjY1NDkwMDNkNmViMGFhZWQ5OWMyM2UzMjFjNjNlMmFhZDFjMC4u
YTBkMmFmNjQxMDQzY2EwMWVhYzU0NTM4ZmFlNDBmYTMwYzY0ZWZkNiAxMDA2NDQKLS0tIGEvU291
cmNlL1dlYktpdC9OZXR3b3JrUHJvY2Vzcy9zb3VwL05ldHdvcmtQcm9jZXNzU291cC5jcHAKKysr
IGIvU291cmNlL1dlYktpdC9OZXR3b3JrUHJvY2Vzcy9zb3VwL05ldHdvcmtQcm9jZXNzU291cC5j
cHAKQEAgLTEyMCwxMCArMTIwLDYgQEAgdm9pZCBOZXR3b3JrUHJvY2Vzczo6cGxhdGZvcm1Jbml0
aWFsaXplTmV0d29ya1Byb2Nlc3MoY29uc3QgTmV0d29ya1Byb2Nlc3NDcmVhdGkKIAogICAgIG1f
Y2FjaGUgPSBOZXR3b3JrQ2FjaGU6OkNhY2hlOjpvcGVuKCp0aGlzLCBtX2Rpc2tDYWNoZURpcmVj
dG9yeSwgY2FjaGVPcHRpb25zKTsKIAotICAgIGlmICghcGFyYW1ldGVycy5jb29raWVQZXJzaXN0
ZW50U3RvcmFnZVBhdGguaXNFbXB0eSgpKSB7Ci0gICAgICAgIHN1cHBsZW1lbnQ8V2ViQ29va2ll
TWFuYWdlcj4oKS0+c2V0Q29va2llUGVyc2lzdGVudFN0b3JhZ2UocGFyYW1ldGVycy5jb29raWVQ
ZXJzaXN0ZW50U3RvcmFnZVBhdGgsCi0gICAgICAgICAgICBwYXJhbWV0ZXJzLmNvb2tpZVBlcnNp
c3RlbnRTdG9yYWdlVHlwZSk7Ci0gICAgfQogICAgIHN1cHBsZW1lbnQ8V2ViQ29va2llTWFuYWdl
cj4oKS0+c2V0SFRUUENvb2tpZUFjY2VwdFBvbGljeShwYXJhbWV0ZXJzLmNvb2tpZUFjY2VwdFBv
bGljeSwgT3B0aW9uYWxDYWxsYmFja0lEKCkpOwogCiAgICAgaWYgKCFwYXJhbWV0ZXJzLmxhbmd1
YWdlcy5pc0VtcHR5KCkpCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L05ldHdvcmtQcm9jZXNz
L3NvdXAvTmV0d29ya1Nlc3Npb25Tb3VwLmNwcCBiL1NvdXJjZS9XZWJLaXQvTmV0d29ya1Byb2Nl
c3Mvc291cC9OZXR3b3JrU2Vzc2lvblNvdXAuY3BwCmluZGV4IDU5ZGU5ZjUwNGI4OGRhOTY0MjUw
ZTVkOTA4ZTQ5YjA1NDdhZTgwYzAuLjIwYWNiMWY4YTQxZTU2YWY2OWFlOTQ1ZjBmM2JmZDhkNDM2
MWQ0ZGEgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQvTmV0d29ya1Byb2Nlc3Mvc291cC9OZXR3
b3JrU2Vzc2lvblNvdXAuY3BwCisrKyBiL1NvdXJjZS9XZWJLaXQvTmV0d29ya1Byb2Nlc3Mvc291
cC9OZXR3b3JrU2Vzc2lvblNvdXAuY3BwCkBAIC00Miw2ICs0Miw5IEBAIE5ldHdvcmtTZXNzaW9u
U291cDo6TmV0d29ya1Nlc3Npb25Tb3VwKE5ldHdvcmtQcm9jZXNzJiBuZXR3b3JrUHJvY2Vzcywg
TmV0d29ya1NlCiAgICAgbmV0d29ya1N0b3JhZ2VTZXNzaW9uKCkuc2V0Q29va2llT2JzZXJ2ZXJI
YW5kbGVyKFt0aGlzXSB7CiAgICAgICAgIHRoaXMtPm5ldHdvcmtQcm9jZXNzKCkuc3VwcGxlbWVu
dDxXZWJDb29raWVNYW5hZ2VyPigpLT5ub3RpZnlDb29raWVzRGlkQ2hhbmdlKG1fc2Vzc2lvbklE
KTsKICAgICB9KTsKKworICAgIGlmICghcGFyYW1ldGVycy5jb29raWVQZXJzaXN0ZW50U3RvcmFn
ZVBhdGguaXNFbXB0eSgpKQorICAgICAgICB0aGlzLT5uZXR3b3JrUHJvY2VzcygpLnN1cHBsZW1l
bnQ8V2ViQ29va2llTWFuYWdlcj4oKS0+c2V0Q29va2llUGVyc2lzdGVudFN0b3JhZ2UobV9zZXNz
aW9uSUQsIHBhcmFtZXRlcnMuY29va2llUGVyc2lzdGVudFN0b3JhZ2VQYXRoLCBwYXJhbWV0ZXJz
LmNvb2tpZVBlcnNpc3RlbnRTdG9yYWdlVHlwZSk7CiB9CiAKIE5ldHdvcmtTZXNzaW9uU291cDo6
fk5ldHdvcmtTZXNzaW9uU291cCgpCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L1NvdXJjZXNH
VEsudHh0IGIvU291cmNlL1dlYktpdC9Tb3VyY2VzR1RLLnR4dAppbmRleCA3ZTFkNDU4MmE2MWU2
Njc2MWIxYjMxN2Y3MDQxMTBmMWRkZTVmNjBjLi5iODMyYjdhY2YxMzRmMTcyOTUwYjI0M2UyNTNl
MWQ1MTJjZGMwMDdkIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0L1NvdXJjZXNHVEsudHh0Cisr
KyBiL1NvdXJjZS9XZWJLaXQvU291cmNlc0dUSy50eHQKQEAgLTIxOCw2ICsyMTgsNyBAQCBVSVBy
b2Nlc3MvUGx1Z2lucy91bml4L1BsdWdpblByb2Nlc3NQcm94eVVuaXguY3BwIEBuby11bmlmeQog
CiBVSVByb2Nlc3MvV2ViU3RvcmFnZS9TdG9yYWdlTWFuYWdlci5jcHAKIAorVUlQcm9jZXNzL1dl
YnNpdGVEYXRhL3NvdXAvV2Vic2l0ZURhdGFTdG9yZVNvdXAuY3BwCiBVSVByb2Nlc3MvV2Vic2l0
ZURhdGEvdW5peC9XZWJzaXRlRGF0YVN0b3JlVW5peC5jcHAKIAogVUlQcm9jZXNzL2NhaXJvL0Jh
Y2tpbmdTdG9yZUNhaXJvLmNwcCBAbm8tdW5pZnkKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQv
U291cmNlc1dQRS50eHQgYi9Tb3VyY2UvV2ViS2l0L1NvdXJjZXNXUEUudHh0CmluZGV4IDkxM2Ey
ZWQ4ZWY2Mzc1ZmRjY2U2NjRlYTM5ZmVlZGY1YzMzOGU0YTIuLjA1YTlmOTJkMGE0OWVhZDZiOGYx
YWZmYTY5NmNkNDhiNWJlZmIzYTIgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQvU291cmNlc1dQ
RS50eHQKKysrIGIvU291cmNlL1dlYktpdC9Tb3VyY2VzV1BFLnR4dApAQCAtMTkxLDYgKzE5MSw3
IEBAIFVJUHJvY2Vzcy9QbHVnaW5zL3VuaXgvUGx1Z2luUHJvY2Vzc1Byb3h5VW5peC5jcHAKIAog
VUlQcm9jZXNzL1dlYlN0b3JhZ2UvU3RvcmFnZU1hbmFnZXIuY3BwCiAKK1VJUHJvY2Vzcy9XZWJz
aXRlRGF0YS9zb3VwL1dlYnNpdGVEYXRhU3RvcmVTb3VwLmNwcAogVUlQcm9jZXNzL1dlYnNpdGVE
YXRhL3VuaXgvV2Vic2l0ZURhdGFTdG9yZVVuaXguY3BwCiAKIFVJUHJvY2Vzcy9nc3RyZWFtZXIv
SW5zdGFsbE1pc3NpbmdNZWRpYVBsdWdpbnNQZXJtaXNzaW9uUmVxdWVzdC5jcHAKZGlmZiAtLWdp
dCBhL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL0FQSS9nbGliL1dlYktpdENvb2tpZU1hbmFnZXIu
Y3BwIGIvU291cmNlL1dlYktpdC9VSVByb2Nlc3MvQVBJL2dsaWIvV2ViS2l0Q29va2llTWFuYWdl
ci5jcHAKaW5kZXggN2E5NDI5MTlkZGY4YzRmMmEzYjE2ZGE3NjcwMTRiMmMyYzE1NGZhYS4uYjlh
NDA4NjRhOGZhZmI5ZDA5MDM4NzNlZTgzNjVlZjg3ZWUwODgyYSAxMDA2NDQKLS0tIGEvU291cmNl
L1dlYktpdC9VSVByb2Nlc3MvQVBJL2dsaWIvV2ViS2l0Q29va2llTWFuYWdlci5jcHAKKysrIGIv
U291cmNlL1dlYktpdC9VSVByb2Nlc3MvQVBJL2dsaWIvV2ViS2l0Q29va2llTWFuYWdlci5jcHAK
QEAgLTE2Niw4ICsxNjYsOSBAQCB2b2lkIHdlYmtpdF9jb29raWVfbWFuYWdlcl9zZXRfcGVyc2lz
dGVudF9zdG9yYWdlKFdlYktpdENvb2tpZU1hbmFnZXIqIG1hbmFnZXIsCiAgICAgZ19yZXR1cm5f
aWZfZmFpbChmaWxlbmFtZSk7CiAgICAgZ19yZXR1cm5faWZfZmFpbCghd2Via2l0X3dlYnNpdGVf
ZGF0YV9tYW5hZ2VyX2lzX2VwaGVtZXJhbChtYW5hZ2VyLT5wcml2LT5kYXRhTWFuYWdlcikpOwog
CisgICAgYXV0byBzZXNzaW9uSUQgPSB3ZWJraXRXZWJzaXRlRGF0YU1hbmFnZXJHZXREYXRhU3Rv
cmUobWFuYWdlci0+cHJpdi0+ZGF0YU1hbmFnZXIpLndlYnNpdGVEYXRhU3RvcmUoKS5zZXNzaW9u
SUQoKTsKICAgICBmb3IgKGF1dG8qIHByb2Nlc3NQb29sIDogd2Via2l0V2Vic2l0ZURhdGFNYW5h
Z2VyR2V0UHJvY2Vzc1Bvb2xzKG1hbmFnZXItPnByaXYtPmRhdGFNYW5hZ2VyKSkKLSAgICAgICAg
cHJvY2Vzc1Bvb2wtPnN1cHBsZW1lbnQ8V2ViQ29va2llTWFuYWdlclByb3h5PigpLT5zZXRDb29r
aWVQZXJzaXN0ZW50U3RvcmFnZShTdHJpbmc6OmZyb21VVEY4KGZpbGVuYW1lKSwgdG9Tb3VwQ29v
a2llUGVyc2lzdGVudFN0b3JhZ2VUeXBlKHN0b3JhZ2UpKTsKKyAgICAgICAgcHJvY2Vzc1Bvb2wt
PnN1cHBsZW1lbnQ8V2ViQ29va2llTWFuYWdlclByb3h5PigpLT5zZXRDb29raWVQZXJzaXN0ZW50
U3RvcmFnZShzZXNzaW9uSUQsIFN0cmluZzo6ZnJvbVVURjgoZmlsZW5hbWUpLCB0b1NvdXBDb29r
aWVQZXJzaXN0ZW50U3RvcmFnZVR5cGUoc3RvcmFnZSkpOwogfQogCiAvKioKZGlmZiAtLWdpdCBh
L1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL1dlYkNvb2tpZU1hbmFnZXJQcm94eS5jcHAgYi9Tb3Vy
Y2UvV2ViS2l0L1VJUHJvY2Vzcy9XZWJDb29raWVNYW5hZ2VyUHJveHkuY3BwCmluZGV4IDBhMjBk
ODU0ZjQ0ZjIxYWJjNWE0M2JiZDBkNzdjODY5MmY4ZjI3NjkuLjExZWExMGU3M2QyN2EzMzM4MzQx
NjE4YzFhNmJmMGU5MDAxYWY2NjQgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNz
L1dlYkNvb2tpZU1hbmFnZXJQcm94eS5jcHAKKysrIGIvU291cmNlL1dlYktpdC9VSVByb2Nlc3Mv
V2ViQ29va2llTWFuYWdlclByb3h5LmNwcApAQCAtNTEsOSArNTEsNiBAQCBSZWY8V2ViQ29va2ll
TWFuYWdlclByb3h5PiBXZWJDb29raWVNYW5hZ2VyUHJveHk6OmNyZWF0ZShXZWJQcm9jZXNzUG9v
bCogcHJvY2VzcwogCiBXZWJDb29raWVNYW5hZ2VyUHJveHk6OldlYkNvb2tpZU1hbmFnZXJQcm94
eShXZWJQcm9jZXNzUG9vbCogcHJvY2Vzc1Bvb2wpCiAgICAgOiBXZWJDb250ZXh0U3VwcGxlbWVu
dChwcm9jZXNzUG9vbCkKLSNpZiBVU0UoU09VUCkKLSAgICAsIG1fY29va2llUGVyc2lzdGVudFN0
b3JhZ2VUeXBlKFNvdXBDb29raWVQZXJzaXN0ZW50U3RvcmFnZVNRTGl0ZSkKLSNlbmRpZgogewog
ICAgIFdlYkNvbnRleHRTdXBwbGVtZW50Ojpwcm9jZXNzUG9vbCgpLT5hZGRNZXNzYWdlUmVjZWl2
ZXIoTWVzc2FnZXM6OldlYkNvb2tpZU1hbmFnZXJQcm94eTo6bWVzc2FnZVJlY2VpdmVyTmFtZSgp
LCAqdGhpcyk7CiB9CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9XZWJDb29r
aWVNYW5hZ2VyUHJveHkuaCBiL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL1dlYkNvb2tpZU1hbmFn
ZXJQcm94eS5oCmluZGV4IDlmMjQwZDMwMjFlZGY4NmM3Y2FlZDdlODE0NTk1MWRlZDMyNjBlMWIu
LmU3ZjJlMjAxNTNjMzYyNzgyNTExM2VhMGZiODhkOTc4ZGFjODUyOWIgMTAwNjQ0Ci0tLSBhL1Nv
dXJjZS9XZWJLaXQvVUlQcm9jZXNzL1dlYkNvb2tpZU1hbmFnZXJQcm94eS5oCisrKyBiL1NvdXJj
ZS9XZWJLaXQvVUlQcm9jZXNzL1dlYkNvb2tpZU1hbmFnZXJQcm94eS5oCkBAIC0zMiw2ICszMiw3
IEBACiAjaW5jbHVkZSAiV2ViQ29va2llTWFuYWdlclByb3h5Q2xpZW50LmgiCiAjaW5jbHVkZSA8
cGFsL1Nlc3Npb25JRC5oPgogI2luY2x1ZGUgPHd0Zi9Gb3J3YXJkLmg+CisjaW5jbHVkZSA8d3Rm
L0hhc2hNYXAuaD4KICNpbmNsdWRlIDx3dGYvUmVmUHRyLmg+CiAKICNpZiBVU0UoU09VUCkKQEAg
LTk3LDggKzk4LDggQEAgcHVibGljOgogICAgIHZvaWQgdW5yZWdpc3Rlck9ic2VydmVyKFBBTDo6
U2Vzc2lvbklELCBPYnNlcnZlciYpOwogCiAjaWYgVVNFKFNPVVApCi0gICAgdm9pZCBzZXRDb29r
aWVQZXJzaXN0ZW50U3RvcmFnZShjb25zdCBTdHJpbmcmIHN0b3JhZ2VQYXRoLCB1aW50MzJfdCBz
dG9yYWdlVHlwZSk7Ci0gICAgdm9pZCBnZXRDb29raWVQZXJzaXN0ZW50U3RvcmFnZShTdHJpbmcm
IHN0b3JhZ2VQYXRoLCB1aW50MzJfdCYgc3RvcmFnZVR5cGUpIGNvbnN0OworICAgIHZvaWQgc2V0
Q29va2llUGVyc2lzdGVudFN0b3JhZ2UoUEFMOjpTZXNzaW9uSUQsIGNvbnN0IFN0cmluZyYgc3Rv
cmFnZVBhdGgsIHVpbnQzMl90IHN0b3JhZ2VUeXBlKTsKKyAgICB2b2lkIGdldENvb2tpZVBlcnNp
c3RlbnRTdG9yYWdlKFBBTDo6U2Vzc2lvbklELCBTdHJpbmcmIHN0b3JhZ2VQYXRoLCB1aW50MzJf
dCYgc3RvcmFnZVR5cGUpIGNvbnN0OwogI2VuZGlmCiAKICAgICB1c2luZyBBUEk6Ok9iamVjdDo6
cmVmOwpAQCAtMTM5LDggKzE0MCw4IEBAIHByaXZhdGU6CiAgICAgV2ViQ29va2llTWFuYWdlclBy
b3h5Q2xpZW50IG1fY2xpZW50OwogCiAjaWYgVVNFKFNPVVApCi0gICAgU3RyaW5nIG1fY29va2ll
UGVyc2lzdGVudFN0b3JhZ2VQYXRoOwotICAgIFNvdXBDb29raWVQZXJzaXN0ZW50U3RvcmFnZVR5
cGUgbV9jb29raWVQZXJzaXN0ZW50U3RvcmFnZVR5cGU7CisgICAgdXNpbmcgQ29va2llUGVyc2lz
dGVudFN0b3JhZ2VNYXAgPSBIYXNoTWFwPFBBTDo6U2Vzc2lvbklELCBzdGQ6OnBhaXI8U3RyaW5n
LCBTb3VwQ29va2llUGVyc2lzdGVudFN0b3JhZ2VUeXBlPj47CisgICAgQ29va2llUGVyc2lzdGVu
dFN0b3JhZ2VNYXAgbV9jb29raWVQZXJzaXN0ZW50U3RvcmFnZU1hcDsKICNlbmRpZgogfTsKIApk
aWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC9VSVByb2Nlc3MvV2Vic2l0ZURhdGEvV2Vic2l0ZURh
dGFTdG9yZS5jcHAgYi9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9XZWJzaXRlRGF0YS9XZWJzaXRl
RGF0YVN0b3JlLmNwcAppbmRleCBhMGY4ZjY4ZjdlYmFmMWI2ZjM2ZTNjMmRkNTFkNzIzNmJlNjJm
NWNlLi44YTljMTc4ZDgwOWYyY2M1Njg4OTRhODc1ZjNlMDA1MTk3Nzc3YjdkIDEwMDY0NAotLS0g
YS9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9XZWJzaXRlRGF0YS9XZWJzaXRlRGF0YVN0b3JlLmNw
cAorKysgYi9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9XZWJzaXRlRGF0YS9XZWJzaXRlRGF0YVN0
b3JlLmNwcApAQCAtMzYsNyArMzYsNiBAQAogI2luY2x1ZGUgIlNob3VsZEdyYW5kZmF0aGVyU3Rh
dGlzdGljcy5oIgogI2luY2x1ZGUgIlN0b3JhZ2VBY2Nlc3NTdGF0dXMuaCIKICNpbmNsdWRlICJT
dG9yYWdlTWFuYWdlci5oIgotI2luY2x1ZGUgIldlYkNvb2tpZU1hbmFnZXJQcm94eS5oIgogI2lu
Y2x1ZGUgIldlYlByb2Nlc3NNZXNzYWdlcy5oIgogI2luY2x1ZGUgIldlYlByb2Nlc3NQb29sLmgi
CiAjaW5jbHVkZSAiV2ViUmVzb3VyY2VMb2FkU3RhdGlzdGljc1N0b3JlLmgiCkBAIC0yMDYxLDcg
KzIwNjAsNiBAQCB2b2lkIFdlYnNpdGVEYXRhU3RvcmU6OmNsZWFyUGVuZGluZ0Nvb2tpZXMoKQog
I2lmICFQTEFURk9STShDT0NPQSkKIFdlYnNpdGVEYXRhU3RvcmVQYXJhbWV0ZXJzIFdlYnNpdGVE
YXRhU3RvcmU6OnBhcmFtZXRlcnMoKQogewotICAgIC8vIEZJWE1FOiBJbXBsZW1lbnQgY29va2ll
cy4KICAgICBXZWJzaXRlRGF0YVN0b3JlUGFyYW1ldGVycyBwYXJhbWV0ZXJzOwogICAgIHBhcmFt
ZXRlcnMubmV0d29ya1Nlc3Npb25QYXJhbWV0ZXJzLnNlc3Npb25JRCA9IG1fc2Vzc2lvbklEOwog
CkBAIC0yMDc5LDkgKzIwNzcsNyBAQCBXZWJzaXRlRGF0YVN0b3JlUGFyYW1ldGVycyBXZWJzaXRl
RGF0YVN0b3JlOjpwYXJhbWV0ZXJzKCkKICAgICAgICAgU2FuZGJveEV4dGVuc2lvbjo6Y3JlYXRl
SGFuZGxlRm9yUmVhZFdyaXRlRGlyZWN0b3J5KHBhcmFtZXRlcnMuc2VydmljZVdvcmtlclJlZ2lz
dHJhdGlvbkRpcmVjdG9yeSwgcGFyYW1ldGVycy5zZXJ2aWNlV29ya2VyUmVnaXN0cmF0aW9uRGly
ZWN0b3J5RXh0ZW5zaW9uSGFuZGxlKTsKICNlbmRpZgogCi0jaWYgVVNFKENVUkwpCi0gICAgcGxh
dGZvcm1TZXRQYXJhbWV0ZXJzKHBhcmFtZXRlcnMpOwotI2VuZGlmCisgICAgcGxhdGZvcm1TZXRO
ZXR3b3JrUGFyYW1ldGVycyhwYXJhbWV0ZXJzKTsKIAogICAgIHJldHVybiBwYXJhbWV0ZXJzOwog
fQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC9VSVByb2Nlc3MvV2Vic2l0ZURhdGEvV2Vic2l0
ZURhdGFTdG9yZS5oIGIvU291cmNlL1dlYktpdC9VSVByb2Nlc3MvV2Vic2l0ZURhdGEvV2Vic2l0
ZURhdGFTdG9yZS5oCmluZGV4IGRiNjUyZTYwYmJhNTEyOGI5MTBkNmY4N2QxM2ZlMTA0MjMwNjY3
YzIuLjM4MjUwZGYzNWY4ZGZjOTBjZDE4MjkzYTY0ODg2ZDQxOWI5NzVmMzYgMTAwNjQ0Ci0tLSBh
L1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL1dlYnNpdGVEYXRhL1dlYnNpdGVEYXRhU3RvcmUuaAor
KysgYi9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9XZWJzaXRlRGF0YS9XZWJzaXRlRGF0YVN0b3Jl
LmgKQEAgLTIwNCw3ICsyMDQsNiBAQCBwdWJsaWM6CiAjZW5kaWYKIAogI2lmIFVTRShDVVJMKQot
ICAgIHZvaWQgcGxhdGZvcm1TZXRQYXJhbWV0ZXJzKFdlYnNpdGVEYXRhU3RvcmVQYXJhbWV0ZXJz
Jik7CiAgICAgdm9pZCBzZXROZXR3b3JrUHJveHlTZXR0aW5ncyhXZWJDb3JlOjpDdXJsUHJveHlT
ZXR0aW5ncyYmKTsKICAgICBjb25zdCBXZWJDb3JlOjpDdXJsUHJveHlTZXR0aW5ncyYgbmV0d29y
a1Byb3h5U2V0dGluZ3MoKSBjb25zdCB7IHJldHVybiBtX3Byb3h5U2V0dGluZ3M7IH0KICNlbmRp
ZgpAQCAtMjQ5LDYgKzI0OCwxMCBAQCBwcml2YXRlOgogICAgIHZvaWQgcGxhdGZvcm1EZXN0cm95
KCk7CiAgICAgc3RhdGljIHZvaWQgcGxhdGZvcm1SZW1vdmVSZWNlbnRTZWFyY2hlcyhXYWxsVGlt
ZSk7CiAKKyNpZiBVU0UoQ1VSTCkgfHwgVVNFKFNPVVApCisgICAgdm9pZCBwbGF0Zm9ybVNldE5l
dHdvcmtQYXJhbWV0ZXJzKFdlYnNpdGVEYXRhU3RvcmVQYXJhbWV0ZXJzJik7CisjZW5kaWYKKwog
ICAgIEhhc2hTZXQ8UmVmUHRyPFdlYlByb2Nlc3NQb29sPj4gcHJvY2Vzc1Bvb2xzKHNpemVfdCBj
b3VudCA9IHN0ZDo6bnVtZXJpY19saW1pdHM8c2l6ZV90Pjo6bWF4KCksIGJvb2wgZW5zdXJlQVBv
b2xFeGlzdHMgPSB0cnVlKSBjb25zdDsKIAogI2lmIEVOQUJMRShORVRTQ0FQRV9QTFVHSU5fQVBJ
KQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC9VSVByb2Nlc3MvV2Vic2l0ZURhdGEvY3VybC9X
ZWJzaXRlRGF0YVN0b3JlQ3VybC5jcHAgYi9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9XZWJzaXRl
RGF0YS9jdXJsL1dlYnNpdGVEYXRhU3RvcmVDdXJsLmNwcAppbmRleCAzOGI2YTBkMGFmNjI2NGEw
NDcyZGZjNjJkMzkwNjNiYWNiOTA0ZmYwLi40MTM4YWVjYTZjMTlhMDg1YWI2ZDQzODAyMjU0MTFm
ODUyNmM2YTUxIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9XZWJzaXRlRGF0
YS9jdXJsL1dlYnNpdGVEYXRhU3RvcmVDdXJsLmNwcAorKysgYi9Tb3VyY2UvV2ViS2l0L1VJUHJv
Y2Vzcy9XZWJzaXRlRGF0YS9jdXJsL1dlYnNpdGVEYXRhU3RvcmVDdXJsLmNwcApAQCAtMzIsNyAr
MzIsNyBAQAogCiBuYW1lc3BhY2UgV2ViS2l0IHsKIAotdm9pZCBXZWJzaXRlRGF0YVN0b3JlOjpw
bGF0Zm9ybVNldFBhcmFtZXRlcnMoV2Vic2l0ZURhdGFTdG9yZVBhcmFtZXRlcnMmIHBhcmFtZXRl
cnMpCit2b2lkIFdlYnNpdGVEYXRhU3RvcmU6OnBsYXRmb3JtU2V0TmV0d29ya1BhcmFtZXRlcnMo
V2Vic2l0ZURhdGFTdG9yZVBhcmFtZXRlcnMmIHBhcmFtZXRlcnMpCiB7CiAgICAgcGFyYW1ldGVy
cy5uZXR3b3JrU2Vzc2lvblBhcmFtZXRlcnMucHJveHlTZXR0aW5ncyA9IG1fcHJveHlTZXR0aW5n
czsKIH0KZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL1dlYnNpdGVEYXRhL3Nv
dXAvV2Vic2l0ZURhdGFTdG9yZVNvdXAuY3BwIGIvU291cmNlL1dlYktpdC9VSVByb2Nlc3MvV2Vi
c2l0ZURhdGEvc291cC9XZWJzaXRlRGF0YVN0b3JlU291cC5jcHAKbmV3IGZpbGUgbW9kZSAxMDA2
NDQKaW5kZXggMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMC4uNDg5YzNm
MjI5MTRkYzY5ZThhNzcyY2Y4OGUzMjk5MmZkMjJlNmMzNAotLS0gL2Rldi9udWxsCisrKyBiL1Nv
dXJjZS9XZWJLaXQvVUlQcm9jZXNzL1dlYnNpdGVEYXRhL3NvdXAvV2Vic2l0ZURhdGFTdG9yZVNv
dXAuY3BwCkBAIC0wLDAgKzEsNDQgQEAKKy8qCisgKiBDb3B5cmlnaHQgKEMpIDIwMTkgSWdhbGlh
IFMuTC4KKyAqIENvcHlyaWdodCAoQykgMjAxOSBNZXRyb2xvZ2ljYWwgR3JvdXAgQi5WLgorICoK
KyAqIFJlZGlzdHJpYnV0aW9uIGFuZCB1c2UgaW4gc291cmNlIGFuZCBiaW5hcnkgZm9ybXMsIHdp
dGggb3Igd2l0aG91dAorICogbW9kaWZpY2F0aW9uLCBhcmUgcGVybWl0dGVkIHByb3ZpZGVkIHRo
YXQgdGhlIGZvbGxvd2luZyBjb25kaXRpb25zCisgKiBhcmUgbWV0OgorICogMS4gUmVkaXN0cmli
dXRpb25zIG9mIHNvdXJjZSBjb2RlIG11c3QgcmV0YWluIHRoZSBhYm92ZSBjb3B5cmlnaHQKKyAq
ICAgIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlz
Y2xhaW1lci4KKyAqIDIuIFJlZGlzdHJpYnV0aW9ucyBpbiBiaW5hcnkgZm9ybSBtdXN0IHJlcHJv
ZHVjZSB0aGUgYWJvdmUgY29weXJpZ2h0CisgKiAgICBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25k
aXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIgaW4gdGhlCisgKiAgICBkb2N1bWVu
dGF0aW9uIGFuZC9vciBvdGhlciBtYXRlcmlhbHMgcHJvdmlkZWQgd2l0aCB0aGUgZGlzdHJpYnV0
aW9uLgorICoKKyAqIFRISVMgU09GVFdBUkUgSVMgUFJPVklERUQgQlkgQVBQTEUgSU5DLiBBTkQg
SVRTIENPTlRSSUJVVE9SUyBgYEFTIElTJycKKyAqIEFORCBBTlkgRVhQUkVTUyBPUiBJTVBMSUVE
IFdBUlJBTlRJRVMsIElOQ0xVRElORywgQlVUIE5PVCBMSU1JVEVEIFRPLAorICogVEhFIElNUExJ
RUQgV0FSUkFOVElFUyBPRiBNRVJDSEFOVEFCSUxJVFkgQU5EIEZJVE5FU1MgRk9SIEEgUEFSVElD
VUxBUgorICogUFVSUE9TRSBBUkUgRElTQ0xBSU1FRC4gSU4gTk8gRVZFTlQgU0hBTEwgQVBQTEUg
SU5DLiBPUiBJVFMgQ09OVFJJQlVUT1JTCisgKiBCRSBMSUFCTEUgRk9SIEFOWSBESVJFQ1QsIElO
RElSRUNULCBJTkNJREVOVEFMLCBTUEVDSUFMLCBFWEVNUExBUlksIE9SCisgKiBDT05TRVFVRU5U
SUFMIERBTUFHRVMgKElOQ0xVRElORywgQlVUIE5PVCBMSU1JVEVEIFRPLCBQUk9DVVJFTUVOVCBP
RgorICogU1VCU1RJVFVURSBHT09EUyBPUiBTRVJWSUNFUzsgTE9TUyBPRiBVU0UsIERBVEEsIE9S
IFBST0ZJVFM7IE9SIEJVU0lORVNTCisgKiBJTlRFUlJVUFRJT04pIEhPV0VWRVIgQ0FVU0VEIEFO
RCBPTiBBTlkgVEhFT1JZIE9GIExJQUJJTElUWSwgV0hFVEhFUiBJTgorICogQ09OVFJBQ1QsIFNU
UklDVCBMSUFCSUxJVFksIE9SIFRPUlQgKElOQ0xVRElORyBORUdMSUdFTkNFIE9SIE9USEVSV0lT
RSkKKyAqIEFSSVNJTkcgSU4gQU5ZIFdBWSBPVVQgT0YgVEhFIFVTRSBPRiBUSElTIFNPRlRXQVJF
LCBFVkVOIElGIEFEVklTRUQgT0YKKyAqIFRIRSBQT1NTSUJJTElUWSBPRiBTVUNIIERBTUFHRS4K
KyAqLworCisjaW5jbHVkZSAiY29uZmlnLmgiCisjaW5jbHVkZSAiV2Vic2l0ZURhdGFTdG9yZS5o
IgorCisjaW5jbHVkZSAiV2ViQ29va2llTWFuYWdlclByb3h5LmgiCisjaW5jbHVkZSAiV2ViUHJv
Y2Vzc1Bvb2wuaCIKKyNpbmNsdWRlICJXZWJzaXRlRGF0YVN0b3JlUGFyYW1ldGVycy5oIgorCitu
YW1lc3BhY2UgV2ViS2l0IHsKKwordm9pZCBXZWJzaXRlRGF0YVN0b3JlOjpwbGF0Zm9ybVNldE5l
dHdvcmtQYXJhbWV0ZXJzKFdlYnNpdGVEYXRhU3RvcmVQYXJhbWV0ZXJzJiBwYXJhbWV0ZXJzKQor
eworICAgIGF1dG8mIG5ldHdvcmtTZXNzaW9uUGFyYW1ldGVycyA9IHBhcmFtZXRlcnMubmV0d29y
a1Nlc3Npb25QYXJhbWV0ZXJzOworCisgICAgaWYgKGF1dG8qIHByb2Nlc3NQb29sID0gcHJvY2Vz
c1Bvb2xGb3JDb29raWVTdG9yYWdlT3BlcmF0aW9ucygpKQorICAgICAgICBwcm9jZXNzUG9vbC0+
c3VwcGxlbWVudDxXZWJDb29raWVNYW5hZ2VyUHJveHk+KCktPmdldENvb2tpZVBlcnNpc3RlbnRT
dG9yYWdlKG1fc2Vzc2lvbklELCBuZXR3b3JrU2Vzc2lvblBhcmFtZXRlcnMuY29va2llUGVyc2lz
dGVudFN0b3JhZ2VQYXRoLCBuZXR3b3JrU2Vzc2lvblBhcmFtZXRlcnMuY29va2llUGVyc2lzdGVu
dFN0b3JhZ2VUeXBlKTsKK30KKworfQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC9VSVByb2Nl
c3Mvc291cC9XZWJDb29raWVNYW5hZ2VyUHJveHlTb3VwLmNwcCBiL1NvdXJjZS9XZWJLaXQvVUlQ
cm9jZXNzL3NvdXAvV2ViQ29va2llTWFuYWdlclByb3h5U291cC5jcHAKaW5kZXggZmE2ZTJkM2Y2
NTIyZTIxMGVlMjk1Yjg4YTA5MWYwYTNmZjAxYzVkNS4uMDZlYTI2ZDUxMTVmM2NmMTFlYmYwMDU2
YTAxMjcwMWY4MjJjM2VlNyAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdC9VSVByb2Nlc3Mvc291
cC9XZWJDb29raWVNYW5hZ2VyUHJveHlTb3VwLmNwcAorKysgYi9Tb3VyY2UvV2ViS2l0L1VJUHJv
Y2Vzcy9zb3VwL1dlYkNvb2tpZU1hbmFnZXJQcm94eVNvdXAuY3BwCkBAIC0zMSwxNyArMzEsMTcg
QEAKIAogbmFtZXNwYWNlIFdlYktpdCB7CiAKLXZvaWQgV2ViQ29va2llTWFuYWdlclByb3h5Ojpz
ZXRDb29raWVQZXJzaXN0ZW50U3RvcmFnZShjb25zdCBTdHJpbmcmIHN0b3JhZ2VQYXRoLCB1aW50
MzJfdCBzdG9yYWdlVHlwZSkKK3ZvaWQgV2ViQ29va2llTWFuYWdlclByb3h5OjpzZXRDb29raWVQ
ZXJzaXN0ZW50U3RvcmFnZShQQUw6OlNlc3Npb25JRCBzZXNzaW9uSUQsIGNvbnN0IFN0cmluZyYg
c3RvcmFnZVBhdGgsIHVpbnQzMl90IHN0b3JhZ2VUeXBlKQogewotICAgIG1fY29va2llUGVyc2lz
dGVudFN0b3JhZ2VQYXRoID0gc3RvcmFnZVBhdGg7Ci0gICAgbV9jb29raWVQZXJzaXN0ZW50U3Rv
cmFnZVR5cGUgPSBzdGF0aWNfY2FzdDxTb3VwQ29va2llUGVyc2lzdGVudFN0b3JhZ2VUeXBlPihz
dG9yYWdlVHlwZSk7Ci0gICAgcHJvY2Vzc1Bvb2woKS0+c2VuZFRvTmV0d29ya2luZ1Byb2Nlc3Mo
TWVzc2FnZXM6OldlYkNvb2tpZU1hbmFnZXI6OlNldENvb2tpZVBlcnNpc3RlbnRTdG9yYWdlKHN0
b3JhZ2VQYXRoLCBzdG9yYWdlVHlwZSkpOworICAgIG1fY29va2llUGVyc2lzdGVudFN0b3JhZ2VN
YXAuc2V0KHNlc3Npb25JRCwgc3RkOjptYWtlX3BhaXIoc3RvcmFnZVBhdGgsIHN0YXRpY19jYXN0
PFNvdXBDb29raWVQZXJzaXN0ZW50U3RvcmFnZVR5cGU+KHN0b3JhZ2VUeXBlKSkpOworICAgIHBy
b2Nlc3NQb29sKCktPnNlbmRUb05ldHdvcmtpbmdQcm9jZXNzKE1lc3NhZ2VzOjpXZWJDb29raWVN
YW5hZ2VyOjpTZXRDb29raWVQZXJzaXN0ZW50U3RvcmFnZShzZXNzaW9uSUQsIHN0b3JhZ2VQYXRo
LCBzdG9yYWdlVHlwZSkpOwogfQogCi12b2lkIFdlYkNvb2tpZU1hbmFnZXJQcm94eTo6Z2V0Q29v
a2llUGVyc2lzdGVudFN0b3JhZ2UoU3RyaW5nJiBzdG9yYWdlUGF0aCwgdWludDMyX3QmIHN0b3Jh
Z2VUeXBlKSBjb25zdAordm9pZCBXZWJDb29raWVNYW5hZ2VyUHJveHk6OmdldENvb2tpZVBlcnNp
c3RlbnRTdG9yYWdlKFBBTDo6U2Vzc2lvbklEIHNlc3Npb25JRCwgU3RyaW5nJiBzdG9yYWdlUGF0
aCwgdWludDMyX3QmIHN0b3JhZ2VUeXBlKSBjb25zdAogewotICAgIHN0b3JhZ2VQYXRoID0gbV9j
b29raWVQZXJzaXN0ZW50U3RvcmFnZVBhdGg7Ci0gICAgc3RvcmFnZVR5cGUgPSBzdGF0aWNfY2Fz
dDx1aW50MzJfdD4obV9jb29raWVQZXJzaXN0ZW50U3RvcmFnZVR5cGUpOworICAgIGF1dG8gcGFp
ciA9IG1fY29va2llUGVyc2lzdGVudFN0b3JhZ2VNYXAuZ2V0KHNlc3Npb25JRCk7CisgICAgc3Rv
cmFnZVBhdGggPSBwYWlyLmZpcnN0OworICAgIHN0b3JhZ2VUeXBlID0gc3RhdGljX2Nhc3Q8dWlu
dDMyX3Q+KHBhaXIuc2Vjb25kKTsKIH0KIAogfQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC9V
SVByb2Nlc3Mvc291cC9XZWJQcm9jZXNzUG9vbFNvdXAuY3BwIGIvU291cmNlL1dlYktpdC9VSVBy
b2Nlc3Mvc291cC9XZWJQcm9jZXNzUG9vbFNvdXAuY3BwCmluZGV4IDM1ODZiYzNmZjAzNjhkNWQw
OTdlNDg3YzI0NThlNDY1MzQxZjVhODAuLjc4NTIyOTJiY2Y4NDZiZjhiNmY2YzM4NTFiZjZkMDEz
MzM0MzQ0NmIgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL3NvdXAvV2ViUHJv
Y2Vzc1Bvb2xTb3VwLmNwcAorKysgYi9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9zb3VwL1dlYlBy
b2Nlc3NQb29sU291cC5jcHAKQEAgLTM4LDcgKzM4LDYgQEAgbmFtZXNwYWNlIFdlYktpdCB7CiAK
IHZvaWQgV2ViUHJvY2Vzc1Bvb2w6OnBsYXRmb3JtSW5pdGlhbGl6ZU5ldHdvcmtQcm9jZXNzKE5l
dHdvcmtQcm9jZXNzQ3JlYXRpb25QYXJhbWV0ZXJzJiBwYXJhbWV0ZXJzKQogewotICAgIHN1cHBs
ZW1lbnQ8V2ViQ29va2llTWFuYWdlclByb3h5PigpLT5nZXRDb29raWVQZXJzaXN0ZW50U3RvcmFn
ZShwYXJhbWV0ZXJzLmNvb2tpZVBlcnNpc3RlbnRTdG9yYWdlUGF0aCwgcGFyYW1ldGVycy5jb29r
aWVQZXJzaXN0ZW50U3RvcmFnZVR5cGUpOwogICAgIHBhcmFtZXRlcnMuY29va2llQWNjZXB0UG9s
aWN5ID0gbV9pbml0aWFsSFRUUENvb2tpZUFjY2VwdFBvbGljeTsKICAgICBwYXJhbWV0ZXJzLmln
bm9yZVRMU0Vycm9ycyA9IG1faWdub3JlVExTRXJyb3JzOwogICAgIHBhcmFtZXRlcnMubGFuZ3Vh
Z2VzID0gdXNlclByZWZlcnJlZExhbmd1YWdlcygpOwo=
</data>
<flag name="review"
          id="377380"
          type_id="1"
          status="+"
          setter="achristensen"
    />
          </attachment>
      

    </bug>

</bugzilla>