<?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>44732</bug_id>
          
          <creation_ts>2010-08-26 16:56:48 -0700</creation_ts>
          <short_desc>Add DOMFileSystem implementation to support Entry manipulation operations</short_desc>
          <delta_ts>2010-08-30 13:50:40 -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>528+ (Nightly build)</version>
          <rep_platform>PC</rep_platform>
          <op_sys>OS X 10.5</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>44433</dependson>
          <blocked>42903</blocked>
          <everconfirmed>0</everconfirmed>
          <reporter name="Kinuko Yasuda">kinuko</reporter>
          <assigned_to name="Nobody">webkit-unassigned</assigned_to>
          <cc>dumi</cc>
    
    <cc>ericu</cc>
    
    <cc>fishd</cc>
    
    <cc>michaeln</cc>
          

      

      

      

          <comment_sort_order>oldest_to_newest</comment_sort_order>  
          <long_desc isprivate="0" >
    <commentid>270215</commentid>
    <comment_count>0</comment_count>
    <who name="Kinuko Yasuda">kinuko</who>
    <bug_when>2010-08-26 16:56:48 -0700</bug_when>
    <thetext>DOMFileSystem, Entry and DirectoryEntry need implementation to support file system operations (move, copy, etc).</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>270248</commentid>
    <comment_count>1</comment_count>
      <attachid>65653</attachid>
    <who name="Kinuko Yasuda">kinuko</who>
    <bug_when>2010-08-26 17:56:13 -0700</bug_when>
    <thetext>Created attachment 65653
Patch

This patch depends on unsubmitted AsyncFileSystem interface (bug 44433), but I&apos;m uploading this as this includes a lot of spec-oriented details that are independent from other part.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>270256</commentid>
    <comment_count>2</comment_count>
      <attachid>65653</attachid>
    <who name="Eric U.">ericu</who>
    <bug_when>2010-08-26 18:19:33 -0700</bug_when>
    <thetext>Comment on attachment 65653
Patch

WebCore/storage/DOMFileSystem.cpp:102
 +      if (newName.isEmpty() &amp;&amp; DOMFilePath::getDirectory(src-&gt;fullPath()) == parent-&gt;fullPath())
You also need to verify that newName is different than the existing name.

WebCore/storage/DirectoryEntry.h:57
 +      void getFile(const String&amp; fullPath, PassRefPtr&lt;Flags&gt; options = 0, PassRefPtr&lt;EntryCallback&gt; successCallback = 0, PassRefPtr&lt;ErrorCallback&gt; errorCallback = 0);
You&apos;ve got fullPath here and path in some of the other files [e.g. DirectoryEntry.cpp].  If you want to emphasize that these are full paths, let&apos;s do it everywhere.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>270763</commentid>
    <comment_count>3</comment_count>
      <attachid>65653</attachid>
    <who name="Darin Fisher (:fishd, Google)">fishd</who>
    <bug_when>2010-08-27 14:40:16 -0700</bug_when>
    <thetext>Comment on attachment 65653
Patch

WebCore/storage/DOMFileSystem.cpp:157
 +          errorCallback-&gt;handleEvent(FileError::create(INVALID_MODIFICATION_ERR).get());
should this be dispatched asynchronously?  it seems like all events should be
dispatched asynchronously for consistency.  plus nesting JS -&gt; C++ -&gt; JS can
sometimes be problematic.

otherwise LGTM</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>270855</commentid>
    <comment_count>4</comment_count>
      <attachid>65797</attachid>
    <who name="Kinuko Yasuda">kinuko</who>
    <bug_when>2010-08-27 17:50:57 -0700</bug_when>
    <thetext>Created attachment 65797
Patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>270858</commentid>
    <comment_count>5</comment_count>
    <who name="Kinuko Yasuda">kinuko</who>
    <bug_when>2010-08-27 17:55:31 -0700</bug_when>
    <thetext>(In reply to comment #2)
&gt; (From update of attachment 65653 [details])
&gt; WebCore/storage/DOMFileSystem.cpp:102
&gt;  +      if (newName.isEmpty() &amp;&amp; DOMFilePath::getDirectory(src-&gt;fullPath()) == parent-&gt;fullPath())
&gt; You also need to verify that newName is different than the existing name.

Fixed.

&gt; WebCore/storage/DirectoryEntry.h:57
&gt;  +      void getFile(const String&amp; fullPath, PassRefPtr&lt;Flags&gt; options = 0, PassRefPtr&lt;EntryCallback&gt; successCallback = 0, PassRefPtr&lt;ErrorCallback&gt; errorCallback = 0);
&gt; You&apos;ve got fullPath here and path in some of the other files [e.g. DirectoryEntry.cpp].  If you want to emphasize that these are full paths, let&apos;s do it everywhere.

getFile and getDirectory can take either absolute path or relative path, so they must be |path|... fixed.
(In reply to comment #3)
&gt; (From update of attachment 65653 [details])
&gt; WebCore/storage/DOMFileSystem.cpp:157
&gt;  +          errorCallback-&gt;handleEvent(FileError::create(INVALID_MODIFICATION_ERR).get());
&gt; should this be dispatched asynchronously?  it seems like all events should be
&gt; dispatched asynchronously for consistency.  plus nesting JS -&gt; C++ -&gt; JS can
&gt; sometimes be problematic.

Changed to post a task that dispatches an error callback.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>271110</commentid>
    <comment_count>6</comment_count>
      <attachid>65845</attachid>
    <who name="Kinuko Yasuda">kinuko</who>
    <bug_when>2010-08-28 21:29:42 -0700</bug_when>
    <thetext>Created attachment 65845
Patch

Did more cleanups for firing callbacks asynchronously</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>271218</commentid>
    <comment_count>7</comment_count>
      <attachid>65845</attachid>
    <who name="Darin Fisher (:fishd, Google)">fishd</who>
    <bug_when>2010-08-29 14:40:40 -0700</bug_when>
    <thetext>Comment on attachment 65845
Patch

&gt; WebCore/platform/AsyncFileSystemCallbacks.h:46
&gt; +    virtual void didSucceed(bool fireImmediate = true) = 0;
i guess the fireImmediate parameter exists because these callbacks can sometimes
be run synchronously from the AsyncFileSystem methods?  maybe that should not be
the case?  it&apos;d be nice if this layer promised not to callback synchronously.

&gt; :184
&gt; +        m_asyncFileSystem-&gt;createDirectory(absolutePath, flags-&gt;isExclusive(), new EntryCallbacks(successCallback, errorCallback, scriptExecutionContext(), this, absolutePath, true));
since you need to allocate EntryCallbacks with exactly the same arguments in both cases here, how about allocating them once above the if statement?

  EntryCallbacks* callbacks = new EntryCallbacks(...);
  if (flags &amp;&amp; flags-&gt;isCreate())
      m_asyncFileSystem-&gt;createDirectory(..., callbacks);
  else
      m_asyncFileSystem-&gt;directoryExists(..., callbacks);

That should improve readability a bit.  It&apos;d also be nice to do this anywhere else that it is applicable.

&gt; :83
&gt; +    class DispatchCallbackTask : public ScriptExecutionContext::Task {
some of this machinery for callbacks seems like it is not specific to DOMFileSystem.
is it the case that we don&apos;t have code like this elsewhere in webcore?  maybe it is
a FIXME to break this out into a generic place?

i haven&apos;t had a chance to fully review this patch.  this is just some early feedback.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>271559</commentid>
    <comment_count>8</comment_count>
      <attachid>65938</attachid>
    <who name="Kinuko Yasuda">kinuko</who>
    <bug_when>2010-08-30 12:21:19 -0700</bug_when>
    <thetext>Created attachment 65938
Patch

This change depends on the the other change for bug 44732</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>271560</commentid>
    <comment_count>9</comment_count>
    <who name="Kinuko Yasuda">kinuko</who>
    <bug_when>2010-08-30 12:22:12 -0700</bug_when>
    <thetext>(In reply to comment #8)
&gt; This change depends on the the other change for bug 44732

Please ignore this comment.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>271570</commentid>
    <comment_count>10</comment_count>
      <attachid>65939</attachid>
    <who name="Kinuko Yasuda">kinuko</who>
    <bug_when>2010-08-30 12:33:17 -0700</bug_when>
    <thetext>Created attachment 65939
Patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>271585</commentid>
    <comment_count>11</comment_count>
      <attachid>65939</attachid>
    <who name="Darin Fisher (:fishd, Google)">fishd</who>
    <bug_when>2010-08-30 12:56:49 -0700</bug_when>
    <thetext>Comment on attachment 65939
Patch

glad to see that fireImmediates was not necessary afterall.

&gt; :82
&gt; +    // FIXME: move this to a more generic place.
nit: can this class be made private?

&gt; :70
&gt; +    // FIXME: clean up this.
please make this FIXME comment more descriptive.  it is unclear what you want to clean up.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>271614</commentid>
    <comment_count>12</comment_count>
    <who name="Kinuko Yasuda">kinuko</who>
    <bug_when>2010-08-30 13:50:40 -0700</bug_when>
    <thetext>Committed r66407: &lt;http://trac.webkit.org/changeset/66407&gt;</thetext>
  </long_desc>
      
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>65653</attachid>
            <date>2010-08-26 17:56:13 -0700</date>
            <delta_ts>2010-08-27 17:50:54 -0700</delta_ts>
            <desc>Patch</desc>
            <filename>bug-44732-20100826175612.patch</filename>
            <type>text/plain</type>
            <size>21443</size>
            <attacher name="Kinuko Yasuda">kinuko</attacher>
            
              <data encoding="base64">ZGlmZiAtLWdpdCBhL1dlYkNvcmUvQ2hhbmdlTG9nIGIvV2ViQ29yZS9DaGFuZ2VMb2cKaW5kZXgg
Njg4ZDdiNTM2ODkzZTVhMWIxN2VhNTdmYzI3MjI3OGFiMzEyZmZhOS4uNjdlYmU4NTMxZDY0ODBj
YTA3MGVlODA5NDFlYWUyYzRhNWNjMWZmZSAxMDA2NDQKLS0tIGEvV2ViQ29yZS9DaGFuZ2VMb2cK
KysrIGIvV2ViQ29yZS9DaGFuZ2VMb2cKQEAgLTEsMyArMSw0NiBAQAorMjAxMC0wOC0yNiAgS2lu
dWtvIFlhc3VkYSAgPGtpbnVrb0BjaHJvbWl1bS5vcmc+CisKKyAgICAgICAgUmV2aWV3ZWQgYnkg
Tk9CT0RZIChPT1BTISkuCisKKyAgICAgICAgQWRkIERPTUZpbGVTeXN0ZW0gaW1wbGVtZW50YXRp
b24gdG8gc3VwcG9ydCBFbnRyeSBtYW5pcHVsYXRpb24gb3BlcmF0aW9ucworICAgICAgICBodHRw
czovL2J1Z3Mud2Via2l0Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9NDQ3MzIKKworICAgICAgICBObyBu
ZXcgdGVzdHM7IHRlc3RzIHdpbGwgYmUgYWRkZWQgbGF0ZXIuCisKKyAgICAgICAgKiBzdG9yYWdl
L0RPTUZpbGVTeXN0ZW0uY3BwOgorICAgICAgICAoV2ViQ29yZTo6RE9NRmlsZVN5c3RlbTo6cm9v
dCk6CisgICAgICAgIChXZWJDb3JlOjpET01GaWxlU3lzdGVtOjpnZXRNZXRhZGF0YSk6IEFkZGVk
LgorICAgICAgICAoV2ViQ29yZTo6Y2hlY2tWYWxpZGl0eUZvckZvckNvcHlPck1vdmUpOiBBZGRl
ZC4KKyAgICAgICAgKFdlYkNvcmU6OkRPTUZpbGVTeXN0ZW06Om1vdmUpOiBBZGRlZC4KKyAgICAg
ICAgKFdlYkNvcmU6OkRPTUZpbGVTeXN0ZW06OmNvcHkpOiBBZGRlZC4KKyAgICAgICAgKFdlYkNv
cmU6OkRPTUZpbGVTeXN0ZW06OnJlbW92ZSk6IEFkZGVkLgorICAgICAgICAoV2ViQ29yZTo6RE9N
RmlsZVN5c3RlbTo6Z2V0UGFyZW50KTogQWRkZWQuCisgICAgICAgIChXZWJDb3JlOjpET01GaWxl
U3lzdGVtOjpnZXRGaWxlKTogQWRkZWQuCisgICAgICAgIChXZWJDb3JlOjpET01GaWxlU3lzdGVt
OjpnZXREaXJlY3RvcnkpOiBBZGRlZC4KKyAgICAgICAgKFdlYkNvcmU6OkRPTUZpbGVTeXN0ZW06
OnJlYWREaXJlY3RvcnkpOiBBZGRlZC4KKyAgICAgICAgKiBzdG9yYWdlL0RPTUZpbGVTeXN0ZW0u
aDoKKyAgICAgICAgKiBzdG9yYWdlL0RpcmVjdG9yeUVudHJ5LmNwcDoKKyAgICAgICAgKFdlYkNv
cmU6OkRpcmVjdG9yeUVudHJ5OjpnZXRGaWxlKTogQWRkZWQgaW1wbGVtZW50YXRpb24uCisgICAg
ICAgIChXZWJDb3JlOjpEaXJlY3RvcnlFbnRyeTo6Z2V0RGlyZWN0b3J5KTogQWRkZWQgaW1wbGVt
ZW50YXRpb24uCisgICAgICAgICogc3RvcmFnZS9EaXJlY3RvcnlFbnRyeS5oOgorICAgICAgICAq
IHN0b3JhZ2UvRGlyZWN0b3J5UmVhZGVyLmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OkRpcmVjdG9y
eVJlYWRlcjo6RGlyZWN0b3J5UmVhZGVyKTogQWRkZWQgaW1wbGVtZW50YXRpb24uCisgICAgICAg
IChXZWJDb3JlOjpEaXJlY3RvcnlSZWFkZXI6OnJlYWRFbnRyaWVzKTogQWRkZWQgaW1wbGVtZW50
YXRpb24uCisgICAgICAgICogc3RvcmFnZS9EaXJlY3RvcnlSZWFkZXIuaDoKKyAgICAgICAgKiBz
dG9yYWdlL0VudHJ5LmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OkVudHJ5OjpnZXRNZXRhZGF0YSk6
IEFkZGVkIGltcGxlbWVudGF0aW9uLgorICAgICAgICAoV2ViQ29yZTo6RW50cnk6Om1vdmVUbyk6
IEFkZGVkIGltcGxlbWVudGF0aW9uLgorICAgICAgICAoV2ViQ29yZTo6RW50cnk6OmNvcHlUbyk6
IEFkZGVkIGltcGxlbWVudGF0aW9uLgorICAgICAgICAoV2ViQ29yZTo6RW50cnk6OnJlbW92ZSk6
IEFkZGVkIGltcGxlbWVudGF0aW9uLgorICAgICAgICAoV2ViQ29yZTo6RW50cnk6OmdldFBhcmVu
dCk6IEFkZGVkIGltcGxlbWVudGF0aW9uLgorICAgICAgICAqIHN0b3JhZ2UvRW50cnkuaDoKKyAg
ICAgICAgKiBzdG9yYWdlL0ZpbGVFbnRyeS5oOgorICAgICAgICAqIHN0b3JhZ2UvRmlsZVN5c3Rl
bUNhbGxiYWNrcy5jcHA6CisgICAgICAgIChXZWJDb3JlOjpFbnRyaWVzQ2FsbGJhY2tzOjpkaWRS
ZWFkRGlyZWN0b3J5RW50cnkpOiBCdWcgZml4ZXMuCisgICAgICAgIChXZWJDb3JlOjpFbnRyaWVz
Q2FsbGJhY2tzOjpkaWRSZWFkRGlyZWN0b3J5Q2h1bmtEb25lKTogQnVnIGZpeGVzLgorICAgICAg
ICAoV2ViQ29yZTo6RmlsZVN5c3RlbUNhbGxiYWNrczo6ZGlkT3BlbkZpbGVTeXN0ZW0pOiBCdWcg
Zml4ZXMuCisgICAgICAgICogc3RvcmFnZS9GaWxlU3lzdGVtQ2FsbGJhY2tzLmg6CisKIDIwMTAt
MDgtMjMgIEtpbnVrbyBZYXN1ZGEgIDxraW51a29AY2hyb21pdW0ub3JnPgogCiAgICAgICAgIFJl
dmlld2VkIGJ5IE5PQk9EWSAoT09QUyEpLgpkaWZmIC0tZ2l0IGEvV2ViQ29yZS9zdG9yYWdlL0RP
TUZpbGVTeXN0ZW0uY3BwIGIvV2ViQ29yZS9zdG9yYWdlL0RPTUZpbGVTeXN0ZW0uY3BwCmluZGV4
IDVkNjA3M2EzZTllYzEyMzk2NGEyMmI5NjY5NDZiYjM2MGEyMzllZWEuLmM3NzNiOTQ4MjFhZWQy
NDkxYTcyYzUzOTQ5MjIxMDQ4OTU5ZmM2MDAgMTAwNjQ0Ci0tLSBhL1dlYkNvcmUvc3RvcmFnZS9E
T01GaWxlU3lzdGVtLmNwcAorKysgYi9XZWJDb3JlL3N0b3JhZ2UvRE9NRmlsZVN5c3RlbS5jcHAK
QEAgLTM0LDggKzM0LDE3IEBACiAjaWYgRU5BQkxFKEZJTEVfU1lTVEVNKQogCiAjaW5jbHVkZSAi
QXN5bmNGaWxlU3lzdGVtLmgiCisjaW5jbHVkZSAiRE9NRmlsZVBhdGguaCIKICNpbmNsdWRlICJE
aXJlY3RvcnlFbnRyeS5oIgorI2luY2x1ZGUgIkVudHJpZXNDYWxsYmFjay5oIgorI2luY2x1ZGUg
IkVudHJ5LmgiCisjaW5jbHVkZSAiRW50cnlDYWxsYmFjay5oIgorI2luY2x1ZGUgIkVycm9yQ2Fs
bGJhY2suaCIKKyNpbmNsdWRlICJGaWxlRXJyb3IuaCIKKyNpbmNsdWRlICJGaWxlU3lzdGVtQ2Fs
bGJhY2tzLmgiCisjaW5jbHVkZSAiTWV0YWRhdGFDYWxsYmFjay5oIgogI2luY2x1ZGUgIlNjcmlw
dEV4ZWN1dGlvbkNvbnRleHQuaCIKKyNpbmNsdWRlICJWb2lkQ2FsbGJhY2suaCIKIAogbmFtZXNw
YWNlIFdlYkNvcmUgewogCkBAIC01Miw3ICs2MSw3IEBAIERPTUZpbGVTeXN0ZW06On5ET01GaWxl
U3lzdGVtKCkKIAogUGFzc1JlZlB0cjxEaXJlY3RvcnlFbnRyeT4gRE9NRmlsZVN5c3RlbTo6cm9v
dCgpCiB7Ci0gICAgcmV0dXJuIERpcmVjdG9yeUVudHJ5OjpjcmVhdGUodGhpcywgIi8iKTsKKyAg
ICByZXR1cm4gRGlyZWN0b3J5RW50cnk6OmNyZWF0ZSh0aGlzLCBET01GaWxlUGF0aDo6cm9vdCk7
CiB9CiAKIHZvaWQgRE9NRmlsZVN5c3RlbTo6c3RvcCgpCkBAIC03MCw2ICs3OSwxMTggQEAgdm9p
ZCBET01GaWxlU3lzdGVtOjpjb250ZXh0RGVzdHJveWVkKCkKICAgICBtX2FzeW5jRmlsZVN5c3Rl
bS0+c3RvcCgpOwogfQogCit2b2lkIERPTUZpbGVTeXN0ZW06OmdldE1ldGFkYXRhKGNvbnN0IEVu
dHJ5KiBlbnRyeSwgUGFzc1JlZlB0cjxNZXRhZGF0YUNhbGxiYWNrPiBzdWNjZXNzQ2FsbGJhY2ss
IFBhc3NSZWZQdHI8RXJyb3JDYWxsYmFjaz4gZXJyb3JDYWxsYmFjaykKK3sKKyAgICBtX2FzeW5j
RmlsZVN5c3RlbS0+cmVhZE1ldGFkYXRhKGVudHJ5LT5mdWxsUGF0aCgpLCBuZXcgTWV0YWRhdGFD
YWxsYmFja3Moc3VjY2Vzc0NhbGxiYWNrLCBlcnJvckNhbGxiYWNrKSk7Cit9CisKK3N0YXRpYyBi
b29sIGNoZWNrVmFsaWRpdHlGb3JGb3JDb3B5T3JNb3ZlKGNvbnN0IEVudHJ5KiBzcmMsIEVudHJ5
KiBwYXJlbnQsIGNvbnN0IFN0cmluZyYgbmV3TmFtZSkKK3sKKyAgICBBU1NFUlQoc3JjKTsKKwor
ICAgIGlmICghcGFyZW50IHx8ICFwYXJlbnQtPmlzRGlyZWN0b3J5KCkpCisgICAgICAgIHJldHVy
biBmYWxzZTsKKworICAgIGlmICghbmV3TmFtZS5pc0VtcHR5KCkgJiYgIURPTUZpbGVQYXRoOjpp
c1ZhbGlkTmFtZShuZXdOYW1lKSkKKyAgICAgICAgcmV0dXJuIGZhbHNlOworCisgICAgLy8gSXQg
aXMgYW4gZXJyb3IgdG8gdHJ5IHRvIGNvcHkgb3IgbW92ZSBhbiBlbnRyeSBpbnNpZGUgaXRzZWxm
IGF0IGFueSBkZXB0aCBpZiBpdCBpcyBhIGRpcmVjdG9yeS4KKyAgICBpZiAoc3JjLT5pc0RpcmVj
dG9yeSgpICYmIERPTUZpbGVQYXRoOjppc1BhcmVudE9mKHNyYy0+ZnVsbFBhdGgoKSwgcGFyZW50
LT5mdWxsUGF0aCgpKSkKKyAgICAgICAgcmV0dXJuIGZhbHNlOworCisgICAgLy8gSXQgaXMgYW4g
ZXJyb3IgdG8gY29weSBvciBtb3ZlIGFuIGVudHJ5IGludG8gaXRzIHBhcmVudCBpZiBhIG5hbWUg
ZGlmZmVyZW50IGZyb20gaXRzIGN1cnJlbnQgb25lIGlzbid0IHByb3ZpZGVkLgorICAgIGlmIChu
ZXdOYW1lLmlzRW1wdHkoKSAmJiBET01GaWxlUGF0aDo6Z2V0RGlyZWN0b3J5KHNyYy0+ZnVsbFBh
dGgoKSkgPT0gcGFyZW50LT5mdWxsUGF0aCgpKQorICAgICAgICByZXR1cm4gZmFsc2U7CisKKyAg
ICByZXR1cm4gdHJ1ZTsKK30KKwordm9pZCBET01GaWxlU3lzdGVtOjptb3ZlKGNvbnN0IEVudHJ5
KiBzcmMsIFBhc3NSZWZQdHI8RW50cnk+IHBhcmVudCwgY29uc3QgU3RyaW5nJiBuZXdOYW1lLCBQ
YXNzUmVmUHRyPEVudHJ5Q2FsbGJhY2s+IHN1Y2Nlc3NDYWxsYmFjaywgUGFzc1JlZlB0cjxFcnJv
ckNhbGxiYWNrPiBlcnJvckNhbGxiYWNrKQoreworICAgIGlmICghY2hlY2tWYWxpZGl0eUZvckZv
ckNvcHlPck1vdmUoc3JjLCBwYXJlbnQuZ2V0KCksIG5ld05hbWUpKSB7CisgICAgICAgIGVycm9y
Q2FsbGJhY2stPmhhbmRsZUV2ZW50KEZpbGVFcnJvcjo6Y3JlYXRlKElOVkFMSURfTU9ESUZJQ0FU
SU9OX0VSUikuZ2V0KCkpOworICAgICAgICByZXR1cm47CisgICAgfQorCisgICAgU3RyaW5nIGRl
c3RQYXRoID0gcGFyZW50LT5mdWxsUGF0aCgpOworICAgIGlmICghbmV3TmFtZS5pc0VtcHR5KCkp
CisgICAgICAgIGRlc3RQYXRoID0gRE9NRmlsZVBhdGg6OmFwcGVuZChkZXN0UGF0aCwgbmV3TmFt
ZSk7CisgICAgZWxzZQorICAgICAgICBkZXN0UGF0aCA9IERPTUZpbGVQYXRoOjphcHBlbmQoZGVz
dFBhdGgsIHNyYy0+bmFtZSgpKTsKKworICAgIG1fYXN5bmNGaWxlU3lzdGVtLT5tb3ZlKHNyYy0+
ZnVsbFBhdGgoKSwgZGVzdFBhdGgsIG5ldyBFbnRyeUNhbGxiYWNrcyhzdWNjZXNzQ2FsbGJhY2ss
IGVycm9yQ2FsbGJhY2ssIHRoaXMsIGRlc3RQYXRoLCBzcmMtPmlzRGlyZWN0b3J5KCkpKTsKK30K
Kwordm9pZCBET01GaWxlU3lzdGVtOjpjb3B5KGNvbnN0IEVudHJ5KiBzcmMsIFBhc3NSZWZQdHI8
RW50cnk+IHBhcmVudCwgY29uc3QgU3RyaW5nJiBuZXdOYW1lLCBQYXNzUmVmUHRyPEVudHJ5Q2Fs
bGJhY2s+IHN1Y2Nlc3NDYWxsYmFjaywgUGFzc1JlZlB0cjxFcnJvckNhbGxiYWNrPiBlcnJvckNh
bGxiYWNrKQoreworICAgIGlmICghY2hlY2tWYWxpZGl0eUZvckZvckNvcHlPck1vdmUoc3JjLCBw
YXJlbnQuZ2V0KCksIG5ld05hbWUpKSB7CisgICAgICAgIGVycm9yQ2FsbGJhY2stPmhhbmRsZUV2
ZW50KEZpbGVFcnJvcjo6Y3JlYXRlKElOVkFMSURfTU9ESUZJQ0FUSU9OX0VSUikuZ2V0KCkpOwor
ICAgICAgICByZXR1cm47CisgICAgfQorCisgICAgU3RyaW5nIGRlc3RQYXRoID0gcGFyZW50LT5m
dWxsUGF0aCgpOworICAgIGlmICghbmV3TmFtZS5pc0VtcHR5KCkpCisgICAgICAgIGRlc3RQYXRo
ID0gRE9NRmlsZVBhdGg6OmFwcGVuZChkZXN0UGF0aCwgbmV3TmFtZSk7CisgICAgZWxzZQorICAg
ICAgICBkZXN0UGF0aCA9IERPTUZpbGVQYXRoOjphcHBlbmQoZGVzdFBhdGgsIHNyYy0+bmFtZSgp
KTsKKworICAgIG1fYXN5bmNGaWxlU3lzdGVtLT5jb3B5KHNyYy0+ZnVsbFBhdGgoKSwgZGVzdFBh
dGgsIG5ldyBFbnRyeUNhbGxiYWNrcyhzdWNjZXNzQ2FsbGJhY2ssIGVycm9yQ2FsbGJhY2ssIHRo
aXMsIGRlc3RQYXRoLCBzcmMtPmlzRGlyZWN0b3J5KCkpKTsKK30KKwordm9pZCBET01GaWxlU3lz
dGVtOjpyZW1vdmUoY29uc3QgRW50cnkqIGVudHJ5LCBQYXNzUmVmUHRyPFZvaWRDYWxsYmFjaz4g
c3VjY2Vzc0NhbGxiYWNrLCBQYXNzUmVmUHRyPEVycm9yQ2FsbGJhY2s+IGVycm9yQ2FsbGJhY2sp
Cit7CisgICAgQVNTRVJUKGVudHJ5KTsKKyAgICBtX2FzeW5jRmlsZVN5c3RlbS0+cmVtb3ZlKGVu
dHJ5LT5mdWxsUGF0aCgpLCBuZXcgVm9pZENhbGxiYWNrcyhzdWNjZXNzQ2FsbGJhY2ssIGVycm9y
Q2FsbGJhY2spKTsKK30KKwordm9pZCBET01GaWxlU3lzdGVtOjpnZXRQYXJlbnQoY29uc3QgRW50
cnkqIGVudHJ5LCBQYXNzUmVmUHRyPEVudHJ5Q2FsbGJhY2s+IHN1Y2Nlc3NDYWxsYmFjaywgUGFz
c1JlZlB0cjxFcnJvckNhbGxiYWNrPiBlcnJvckNhbGxiYWNrKQoreworICAgIEFTU0VSVChlbnRy
eSk7CisgICAgU3RyaW5nIHBhdGggPSBET01GaWxlUGF0aDo6Z2V0RGlyZWN0b3J5KGVudHJ5LT5m
dWxsUGF0aCgpKTsKKyAgICBtX2FzeW5jRmlsZVN5c3RlbS0+ZGlyZWN0b3J5RXhpc3RzKHBhdGgs
IG5ldyBFbnRyeUNhbGxiYWNrcyhzdWNjZXNzQ2FsbGJhY2ssIGVycm9yQ2FsbGJhY2ssIHRoaXMs
IHBhdGgsIHRydWUpKTsKK30KKwordm9pZCBET01GaWxlU3lzdGVtOjpnZXRGaWxlKGNvbnN0IEVu
dHJ5KiBiYXNlLCBjb25zdCBTdHJpbmcmIHBhdGgsIFBhc3NSZWZQdHI8RmxhZ3M+IGZsYWdzLCBQ
YXNzUmVmUHRyPEVudHJ5Q2FsbGJhY2s+IHN1Y2Nlc3NDYWxsYmFjaywgUGFzc1JlZlB0cjxFcnJv
ckNhbGxiYWNrPiBlcnJvckNhbGxiYWNrKQoreworICAgIEFTU0VSVChiYXNlKTsKKyAgICBpZiAo
IURPTUZpbGVQYXRoOjppc1ZhbGlkUGF0aChwYXRoKSkgeworICAgICAgICBlcnJvckNhbGxiYWNr
LT5oYW5kbGVFdmVudChGaWxlRXJyb3I6OmNyZWF0ZShJTlZBTElEX01PRElGSUNBVElPTl9FUlIp
LmdldCgpKTsKKyAgICAgICAgcmV0dXJuOworICAgIH0KKworICAgIFN0cmluZyBhYnNvbHV0ZVBh
dGggPSBwYXRoOworICAgIGlmICghRE9NRmlsZVBhdGg6OmlzQWJzb2x1dGUocGF0aCkpCisgICAg
ICAgIGFic29sdXRlUGF0aCA9IERPTUZpbGVQYXRoOjpyZW1vdmVFeHRyYVBhcmVudFJlZmVyZW5j
ZXMoRE9NRmlsZVBhdGg6OmFwcGVuZChiYXNlLT5mdWxsUGF0aCgpLCBwYXRoKSk7CisKKyAgICBp
ZiAoZmxhZ3MgJiYgZmxhZ3MtPmlzQ3JlYXRlKCkpCisgICAgICAgIG1fYXN5bmNGaWxlU3lzdGVt
LT5jcmVhdGVGaWxlKGFic29sdXRlUGF0aCwgZmxhZ3MtPmlzRXhjbHVzaXZlKCksIG5ldyBFbnRy
eUNhbGxiYWNrcyhzdWNjZXNzQ2FsbGJhY2ssIGVycm9yQ2FsbGJhY2ssIHRoaXMsIGFic29sdXRl
UGF0aCwgZmFsc2UpKTsKKyAgICBlbHNlCisgICAgICAgIG1fYXN5bmNGaWxlU3lzdGVtLT5maWxl
RXhpc3RzKGFic29sdXRlUGF0aCwgbmV3IEVudHJ5Q2FsbGJhY2tzKHN1Y2Nlc3NDYWxsYmFjaywg
ZXJyb3JDYWxsYmFjaywgdGhpcywgYWJzb2x1dGVQYXRoLCBmYWxzZSkpOworfQorCit2b2lkIERP
TUZpbGVTeXN0ZW06OmdldERpcmVjdG9yeShjb25zdCBFbnRyeSogYmFzZSwgY29uc3QgU3RyaW5n
JiBwYXRoLCBQYXNzUmVmUHRyPEZsYWdzPiBmbGFncywgUGFzc1JlZlB0cjxFbnRyeUNhbGxiYWNr
PiBzdWNjZXNzQ2FsbGJhY2ssIFBhc3NSZWZQdHI8RXJyb3JDYWxsYmFjaz4gZXJyb3JDYWxsYmFj
aykKK3sKKyAgICBBU1NFUlQoYmFzZSk7CisgICAgaWYgKCFET01GaWxlUGF0aDo6aXNWYWxpZFBh
dGgocGF0aCkpIHsKKyAgICAgICAgZXJyb3JDYWxsYmFjay0+aGFuZGxlRXZlbnQoRmlsZUVycm9y
OjpjcmVhdGUoSU5WQUxJRF9NT0RJRklDQVRJT05fRVJSKS5nZXQoKSk7CisgICAgICAgIHJldHVy
bjsKKyAgICB9CisKKyAgICBTdHJpbmcgYWJzb2x1dGVQYXRoID0gcGF0aDsKKyAgICBpZiAoIURP
TUZpbGVQYXRoOjppc0Fic29sdXRlKHBhdGgpKQorICAgICAgICBhYnNvbHV0ZVBhdGggPSBET01G
aWxlUGF0aDo6cmVtb3ZlRXh0cmFQYXJlbnRSZWZlcmVuY2VzKERPTUZpbGVQYXRoOjphcHBlbmQo
YmFzZS0+ZnVsbFBhdGgoKSwgcGF0aCkpOworCisgICAgaWYgKGZsYWdzICYmIGZsYWdzLT5pc0Ny
ZWF0ZSgpKQorICAgICAgICBtX2FzeW5jRmlsZVN5c3RlbS0+Y3JlYXRlRGlyZWN0b3J5KGFic29s
dXRlUGF0aCwgZmxhZ3MtPmlzRXhjbHVzaXZlKCksIG5ldyBFbnRyeUNhbGxiYWNrcyhzdWNjZXNz
Q2FsbGJhY2ssIGVycm9yQ2FsbGJhY2ssIHRoaXMsIGFic29sdXRlUGF0aCwgdHJ1ZSkpOworICAg
IGVsc2UKKyAgICAgICAgbV9hc3luY0ZpbGVTeXN0ZW0tPmRpcmVjdG9yeUV4aXN0cyhhYnNvbHV0
ZVBhdGgsIG5ldyBFbnRyeUNhbGxiYWNrcyhzdWNjZXNzQ2FsbGJhY2ssIGVycm9yQ2FsbGJhY2ss
IHRoaXMsIGFic29sdXRlUGF0aCwgdHJ1ZSkpOworfQorCit2b2lkIERPTUZpbGVTeXN0ZW06OnJl
YWREaXJlY3RvcnkoY29uc3QgU3RyaW5nJiBwYXRoLCBQYXNzUmVmUHRyPEVudHJpZXNDYWxsYmFj
az4gc3VjY2Vzc0NhbGxiYWNrLCBQYXNzUmVmUHRyPEVycm9yQ2FsbGJhY2s+IGVycm9yQ2FsbGJh
Y2spCit7CisgICAgbV9hc3luY0ZpbGVTeXN0ZW0tPnJlYWREaXJlY3RvcnkocGF0aCwgbmV3IEVu
dHJpZXNDYWxsYmFja3Moc3VjY2Vzc0NhbGxiYWNrLCBlcnJvckNhbGxiYWNrLCB0aGlzLCBwYXRo
KSk7Cit9CisKIH0gLy8gbmFtZXNwYWNlCiAKICNlbmRpZiAvLyBFTkFCTEUoRklMRV9TWVNURU0p
CmRpZmYgLS1naXQgYS9XZWJDb3JlL3N0b3JhZ2UvRE9NRmlsZVN5c3RlbS5oIGIvV2ViQ29yZS9z
dG9yYWdlL0RPTUZpbGVTeXN0ZW0uaAppbmRleCAzMzdiZWE5Y2JlZWMwYjdmZTIzYjk0NWIzOTNh
NTM0NzBkOTQ1MmYzLi5iN2Y2YTcxNTRjZjdiN2RlMzc3ZDhkOGU4NmQwYTEzNTFkM2VmZjY5IDEw
MDY0NAotLS0gYS9XZWJDb3JlL3N0b3JhZ2UvRE9NRmlsZVN5c3RlbS5oCisrKyBiL1dlYkNvcmUv
c3RvcmFnZS9ET01GaWxlU3lzdGVtLmgKQEAgLTQzLDcgKzQzLDEzIEBACiBuYW1lc3BhY2UgV2Vi
Q29yZSB7CiAKIGNsYXNzIERpcmVjdG9yeUVudHJ5OworY2xhc3MgRW50cnk7CitjbGFzcyBFbnRy
eUNhbGxiYWNrOworY2xhc3MgRW50cmllc0NhbGxiYWNrOworY2xhc3MgRXJyb3JDYWxsYmFjazsK
K2NsYXNzIE1ldGFkYXRhQ2FsbGJhY2s7CiBjbGFzcyBTY3JpcHRFeGVjdXRpb25Db250ZXh0Owor
Y2xhc3MgVm9pZENhbGxiYWNrOwogCiBjbGFzcyBET01GaWxlU3lzdGVtIDogcHVibGljIFJlZkNv
dW50ZWQ8RE9NRmlsZVN5c3RlbT4sIHB1YmxpYyBBY3RpdmVET01PYmplY3QgewogcHVibGljOgpA
QCAtNjIsNiArNjgsMTYgQEAgcHVibGljOgogICAgIHZpcnR1YWwgYm9vbCBoYXNQZW5kaW5nQWN0
aXZpdHkoKSBjb25zdDsKICAgICB2aXJ0dWFsIHZvaWQgY29udGV4dERlc3Ryb3llZCgpOwogCisg
ICAgLy8gQWN0dWFsIEZpbGVTeXN0ZW0gQVBJIGltcGxlbWVudGF0aW9ucy4gIEFsbCB0aGUgdmFs
aWRpdHkgY2hlY2tzIG9uIHZpcnR1YWwgcGF0aHMgYXJlIGRvbmUgYXQgRE9NRmlsZVN5c3RlbSBs
ZXZlbC4KKyAgICB2b2lkIGdldE1ldGFkYXRhKGNvbnN0IEVudHJ5KiBlbnRyeSwgUGFzc1JlZlB0
cjxNZXRhZGF0YUNhbGxiYWNrPiBzdWNjZXNzQ2FsbGJhY2ssIFBhc3NSZWZQdHI8RXJyb3JDYWxs
YmFjaz4gZXJyb3JDYWxsYmFjayk7CisgICAgdm9pZCBtb3ZlKGNvbnN0IEVudHJ5KiBzcmMsIFBh
c3NSZWZQdHI8RW50cnk+IHBhcmVudCwgY29uc3QgU3RyaW5nJiBuYW1lLCBQYXNzUmVmUHRyPEVu
dHJ5Q2FsbGJhY2s+LCBQYXNzUmVmUHRyPEVycm9yQ2FsbGJhY2s+KTsKKyAgICB2b2lkIGNvcHko
Y29uc3QgRW50cnkqIHNyYywgUGFzc1JlZlB0cjxFbnRyeT4gcGFyZW50LCBjb25zdCBTdHJpbmcm
IG5hbWUsIFBhc3NSZWZQdHI8RW50cnlDYWxsYmFjaz4sIFBhc3NSZWZQdHI8RXJyb3JDYWxsYmFj
az4pOworICAgIHZvaWQgcmVtb3ZlKGNvbnN0IEVudHJ5KiBlbnRyeSwgUGFzc1JlZlB0cjxWb2lk
Q2FsbGJhY2s+LCBQYXNzUmVmUHRyPEVycm9yQ2FsbGJhY2s+KTsKKyAgICB2b2lkIGdldFBhcmVu
dChjb25zdCBFbnRyeSogZW50cnksIFBhc3NSZWZQdHI8RW50cnlDYWxsYmFjaz4sIFBhc3NSZWZQ
dHI8RXJyb3JDYWxsYmFjaz4pOworICAgIHZvaWQgZ2V0RmlsZShjb25zdCBFbnRyeSogYmFzZSwg
Y29uc3QgU3RyaW5nJiBwYXRoLCBQYXNzUmVmUHRyPEZsYWdzPiwgUGFzc1JlZlB0cjxFbnRyeUNh
bGxiYWNrPiwgUGFzc1JlZlB0cjxFcnJvckNhbGxiYWNrPik7CisgICAgdm9pZCBnZXREaXJlY3Rv
cnkoY29uc3QgRW50cnkqIGJhc2UsIGNvbnN0IFN0cmluZyYgcGF0aCwgUGFzc1JlZlB0cjxGbGFn
cz4sIFBhc3NSZWZQdHI8RW50cnlDYWxsYmFjaz4sIFBhc3NSZWZQdHI8RXJyb3JDYWxsYmFjaz4p
OworICAgIHZvaWQgcmVhZERpcmVjdG9yeShjb25zdCBTdHJpbmcmIHBhdGgsIFBhc3NSZWZQdHI8
RW50cmllc0NhbGxiYWNrPiwgUGFzc1JlZlB0cjxFcnJvckNhbGxiYWNrPik7CisKIHByaXZhdGU6
CiAgICAgRE9NRmlsZVN5c3RlbShTY3JpcHRFeGVjdXRpb25Db250ZXh0KiwgY29uc3QgU3RyaW5n
JiBuYW1lLCBQYXNzT3duUHRyPEFzeW5jRmlsZVN5c3RlbT4pOwogCmRpZmYgLS1naXQgYS9XZWJD
b3JlL3N0b3JhZ2UvRGlyZWN0b3J5RW50cnkuY3BwIGIvV2ViQ29yZS9zdG9yYWdlL0RpcmVjdG9y
eUVudHJ5LmNwcAppbmRleCA2MGRjYWNlNGQwNmU2NmZkYjA3OWQxZDkyYjhmMDdkZTUwYzNlYzYy
Li5mNTRhNDRkZDhkNjQyMzdkMzExNDFkODJkNDYzZjJmYzQzZmRjN2Y4IDEwMDY0NAotLS0gYS9X
ZWJDb3JlL3N0b3JhZ2UvRGlyZWN0b3J5RW50cnkuY3BwCisrKyBiL1dlYkNvcmUvc3RvcmFnZS9E
aXJlY3RvcnlFbnRyeS5jcHAKQEAgLTQ5LDE2ICs0OSwxNCBAQCBQYXNzUmVmUHRyPERpcmVjdG9y
eVJlYWRlcj4gRGlyZWN0b3J5RW50cnk6OmNyZWF0ZVJlYWRlcigpCiAgICAgcmV0dXJuIERpcmVj
dG9yeVJlYWRlcjo6Y3JlYXRlKG1fZmlsZVN5c3RlbSwgbV9mdWxsUGF0aCk7CiB9CiAKLXZvaWQg
RGlyZWN0b3J5RW50cnk6OmdldEZpbGUoY29uc3QgU3RyaW5nJiwgUGFzc1JlZlB0cjxGbGFncz4s
IFBhc3NSZWZQdHI8RW50cnlDYWxsYmFjaz4sIFBhc3NSZWZQdHI8RXJyb3JDYWxsYmFjaz4pCit2
b2lkIERpcmVjdG9yeUVudHJ5OjpnZXRGaWxlKGNvbnN0IFN0cmluZyYgcGF0aCwgUGFzc1JlZlB0
cjxGbGFncz4gZmxhZ3MsIFBhc3NSZWZQdHI8RW50cnlDYWxsYmFjaz4gc3VjY2Vzc0NhbGxiYWNr
LCBQYXNzUmVmUHRyPEVycm9yQ2FsbGJhY2s+IGVycm9yQ2FsbGJhY2spCiB7Ci0gICAgLy8gRklY
TUU6IHRvIGJlIGltcGxlbWVudGVkLgotICAgIEFTU0VSVF9OT1RfUkVBQ0hFRCgpOworICAgIG1f
ZmlsZVN5c3RlbS0+Z2V0RmlsZSh0aGlzLCBwYXRoLCBmbGFncywgc3VjY2Vzc0NhbGxiYWNrLCBl
cnJvckNhbGxiYWNrKTsKIH0KIAotdm9pZCBEaXJlY3RvcnlFbnRyeTo6Z2V0RGlyZWN0b3J5KGNv
bnN0IFN0cmluZyYsIFBhc3NSZWZQdHI8RmxhZ3M+LCBQYXNzUmVmUHRyPEVudHJ5Q2FsbGJhY2s+
LCBQYXNzUmVmUHRyPEVycm9yQ2FsbGJhY2s+KQordm9pZCBEaXJlY3RvcnlFbnRyeTo6Z2V0RGly
ZWN0b3J5KGNvbnN0IFN0cmluZyYgcGF0aCwgUGFzc1JlZlB0cjxGbGFncz4gZmxhZ3MsIFBhc3NS
ZWZQdHI8RW50cnlDYWxsYmFjaz4gc3VjY2Vzc0NhbGxiYWNrLCBQYXNzUmVmUHRyPEVycm9yQ2Fs
bGJhY2s+IGVycm9yQ2FsbGJhY2spCiB7Ci0gICAgLy8gRklYTUU6IHRvIGJlIGltcGxlbWVudGVk
LgotICAgIEFTU0VSVF9OT1RfUkVBQ0hFRCgpOworICAgIG1fZmlsZVN5c3RlbS0+Z2V0RGlyZWN0
b3J5KHRoaXMsIHBhdGgsIGZsYWdzLCBzdWNjZXNzQ2FsbGJhY2ssIGVycm9yQ2FsbGJhY2spOwog
fQogCiB9IC8vIG5hbWVzcGFjZQpkaWZmIC0tZ2l0IGEvV2ViQ29yZS9zdG9yYWdlL0RpcmVjdG9y
eUVudHJ5LmggYi9XZWJDb3JlL3N0b3JhZ2UvRGlyZWN0b3J5RW50cnkuaAppbmRleCAyYWU0ZmI1
NGYzOWFlNzBhYTYzZTczMDY3NGU2ZjhjNzNiMWU4OTM1Li4zYzkzOGUzMDFiOWE0NDJkY2I3YzY5
NDg4NDBiZGZkYmEyZjFjOGY4IDEwMDY0NAotLS0gYS9XZWJDb3JlL3N0b3JhZ2UvRGlyZWN0b3J5
RW50cnkuaAorKysgYi9XZWJDb3JlL3N0b3JhZ2UvRGlyZWN0b3J5RW50cnkuaApAQCAtNTQsOCAr
NTQsOCBAQCBwdWJsaWM6CiAgICAgdmlydHVhbCBib29sIGlzRGlyZWN0b3J5KCkgY29uc3QgeyBy
ZXR1cm4gdHJ1ZTsgfQogCiAgICAgUGFzc1JlZlB0cjxEaXJlY3RvcnlSZWFkZXI+IGNyZWF0ZVJl
YWRlcigpOwotICAgIHZvaWQgZ2V0RmlsZShjb25zdCBTdHJpbmcmIHBhdGgsIFBhc3NSZWZQdHI8
RmxhZ3M+IG9wdGlvbnMgPSAwLCBQYXNzUmVmUHRyPEVudHJ5Q2FsbGJhY2s+IHN1Y2Nlc3NDYWxs
YmFjayA9IDAsIFBhc3NSZWZQdHI8RXJyb3JDYWxsYmFjaz4gZXJyb3JDYWxsYmFjayA9IDApOwot
ICAgIHZvaWQgZ2V0RGlyZWN0b3J5KGNvbnN0IFN0cmluZyYgcGF0aCwgUGFzc1JlZlB0cjxGbGFn
cz4gb3B0aW9ucyA9IDAsIFBhc3NSZWZQdHI8RW50cnlDYWxsYmFjaz4gc3VjY2Vzc0NhbGxiYWNr
ID0gMCwgUGFzc1JlZlB0cjxFcnJvckNhbGxiYWNrPiBlcnJvckNhbGxiYWNrID0gMCk7CisgICAg
dm9pZCBnZXRGaWxlKGNvbnN0IFN0cmluZyYgZnVsbFBhdGgsIFBhc3NSZWZQdHI8RmxhZ3M+IG9w
dGlvbnMgPSAwLCBQYXNzUmVmUHRyPEVudHJ5Q2FsbGJhY2s+IHN1Y2Nlc3NDYWxsYmFjayA9IDAs
IFBhc3NSZWZQdHI8RXJyb3JDYWxsYmFjaz4gZXJyb3JDYWxsYmFjayA9IDApOworICAgIHZvaWQg
Z2V0RGlyZWN0b3J5KGNvbnN0IFN0cmluZyYgZnVsbFBhdGgsIFBhc3NSZWZQdHI8RmxhZ3M+IG9w
dGlvbnMgPSAwLCBQYXNzUmVmUHRyPEVudHJ5Q2FsbGJhY2s+IHN1Y2Nlc3NDYWxsYmFjayA9IDAs
IFBhc3NSZWZQdHI8RXJyb3JDYWxsYmFjaz4gZXJyb3JDYWxsYmFjayA9IDApOwogCiBwcml2YXRl
OgogICAgIERpcmVjdG9yeUVudHJ5KFBhc3NSZWZQdHI8RE9NRmlsZVN5c3RlbT4gZmlsZVN5c3Rl
bSwgY29uc3QgU3RyaW5nJiBmdWxsUGF0aCk7CmRpZmYgLS1naXQgYS9XZWJDb3JlL3N0b3JhZ2Uv
RGlyZWN0b3J5UmVhZGVyLmNwcCBiL1dlYkNvcmUvc3RvcmFnZS9EaXJlY3RvcnlSZWFkZXIuY3Bw
CmluZGV4IDBiMzBmNzA1MzE0YzhmZDkyNzY1OTJiOTcwYWI2ODA3NjY0MTY0ZTUuLmIwZWVmMWNj
NDkyNzZmMzNjNzk0MGU2NjkyY2EyZjVkNjAwZjA1MTUgMTAwNjQ0Ci0tLSBhL1dlYkNvcmUvc3Rv
cmFnZS9EaXJlY3RvcnlSZWFkZXIuY3BwCisrKyBiL1dlYkNvcmUvc3RvcmFnZS9EaXJlY3RvcnlS
ZWFkZXIuY3BwCkBAIC0zOSwxNiArMzksMTUgQEAKIAogbmFtZXNwYWNlIFdlYkNvcmUgewogCi1E
aXJlY3RvcnlSZWFkZXI6OkRpcmVjdG9yeVJlYWRlcihQYXNzUmVmUHRyPERPTUZpbGVTeXN0ZW0+
IGZpbGVTeXN0ZW0sIGNvbnN0IFN0cmluZyYgcGF0aCkKK0RpcmVjdG9yeVJlYWRlcjo6RGlyZWN0
b3J5UmVhZGVyKFBhc3NSZWZQdHI8RE9NRmlsZVN5c3RlbT4gZmlsZVN5c3RlbSwgY29uc3QgU3Ry
aW5nJiBmdWxsUGF0aCkKICAgICA6IG1fZmlsZVN5c3RlbShmaWxlU3lzdGVtKQotICAgICwgbV9w
YXRoKHBhdGgpCisgICAgLCBtX2Z1bGxQYXRoKGZ1bGxQYXRoKQogewogfQogCi12b2lkIERpcmVj
dG9yeVJlYWRlcjo6cmVhZEVudHJpZXMoUGFzc1JlZlB0cjxFbnRyaWVzQ2FsbGJhY2s+LCBQYXNz
UmVmUHRyPEVycm9yQ2FsbGJhY2s+KQordm9pZCBEaXJlY3RvcnlSZWFkZXI6OnJlYWRFbnRyaWVz
KFBhc3NSZWZQdHI8RW50cmllc0NhbGxiYWNrPiBlbnRyaWVzQ2FsbGJhY2ssIFBhc3NSZWZQdHI8
RXJyb3JDYWxsYmFjaz4gZXJyb3JDYWxsYmFjaykKIHsKLSAgICAvLyBGSVhNRTogdG8gYmUgaW1w
bGVtZW50ZWQuCi0gICAgQVNTRVJUX05PVF9SRUFDSEVEKCk7CisgICAgbV9maWxlU3lzdGVtLT5y
ZWFkRGlyZWN0b3J5KG1fZnVsbFBhdGgsIGVudHJpZXNDYWxsYmFjaywgZXJyb3JDYWxsYmFjayk7
CiB9CiAKIH0gLy8gbmFtZXNwYWNlCmRpZmYgLS1naXQgYS9XZWJDb3JlL3N0b3JhZ2UvRGlyZWN0
b3J5UmVhZGVyLmggYi9XZWJDb3JlL3N0b3JhZ2UvRGlyZWN0b3J5UmVhZGVyLmgKaW5kZXggY2Y1
ZGE4ZjNkYzc1ZjQzMGUzZTY0NmM4OTJlNzU2NjVkMWQ0NTE3MC4uMGUyZWYwZjZjZDIyOWNkZDRk
OTU3ZTFlZjViMjc0YTU4YzYzOTFkMCAxMDA2NDQKLS0tIGEvV2ViQ29yZS9zdG9yYWdlL0RpcmVj
dG9yeVJlYWRlci5oCisrKyBiL1dlYkNvcmUvc3RvcmFnZS9EaXJlY3RvcnlSZWFkZXIuaApAQCAt
NTYsNyArNTYsNyBAQCBwcml2YXRlOgogICAgIERpcmVjdG9yeVJlYWRlcihQYXNzUmVmUHRyPERP
TUZpbGVTeXN0ZW0+IGZpbGVTeXN0ZW0sIGNvbnN0IFN0cmluZyYgcGF0aCk7CiAKICAgICBSZWZQ
dHI8RE9NRmlsZVN5c3RlbT4gbV9maWxlU3lzdGVtOwotICAgIFN0cmluZyBtX3BhdGg7CisgICAg
U3RyaW5nIG1fZnVsbFBhdGg7CiB9OwogCiB9IC8vIG5hbWVzcGFjZQpkaWZmIC0tZ2l0IGEvV2Vi
Q29yZS9zdG9yYWdlL0VudHJ5LmNwcCBiL1dlYkNvcmUvc3RvcmFnZS9FbnRyeS5jcHAKaW5kZXgg
Njc4MzI5MTM5OGE5ZWVmNzcwZjk1NDA3YjkxYjljN2Q3ZTE0ZmYzMC4uMTVmNzM0N2UxOTgyMDg0
Y2ViZDJhMjcxMGE5YTJjM2QzOTc1YWYyNSAxMDA2NDQKLS0tIGEvV2ViQ29yZS9zdG9yYWdlL0Vu
dHJ5LmNwcAorKysgYi9XZWJDb3JlL3N0b3JhZ2UvRW50cnkuY3BwCkBAIC0zMiw5ICszMiwxMSBA
QAogCiAjaWYgRU5BQkxFKEZJTEVfU1lTVEVNKQogCisjaW5jbHVkZSAiRE9NRmlsZVBhdGguaCIK
ICNpbmNsdWRlICJET01GaWxlU3lzdGVtLmgiCiAjaW5jbHVkZSAiRW50cnlDYWxsYmFjay5oIgog
I2luY2x1ZGUgIkVycm9yQ2FsbGJhY2suaCIKKyNpbmNsdWRlICJGaWxlRXJyb3IuaCIKICNpbmNs
dWRlICJNZXRhZGF0YUNhbGxiYWNrLmgiCiAjaW5jbHVkZSAiVm9pZENhbGxiYWNrLmgiCiAKQEAg
LTUxLDM0ICs1MywyOSBAQCBFbnRyeTo6RW50cnkoUGFzc1JlZlB0cjxET01GaWxlU3lzdGVtPiBm
aWxlU3lzdGVtLCBjb25zdCBTdHJpbmcmIGZ1bGxQYXRoKQogICAgICAgICBtX25hbWUgPSBmdWxs
UGF0aDsKIH0KIAotdm9pZCBFbnRyeTo6Z2V0TWV0YWRhdGEoUGFzc1JlZlB0cjxNZXRhZGF0YUNh
bGxiYWNrPiwgUGFzc1JlZlB0cjxFcnJvckNhbGxiYWNrPikKK3ZvaWQgRW50cnk6OmdldE1ldGFk
YXRhKFBhc3NSZWZQdHI8TWV0YWRhdGFDYWxsYmFjaz4gc3VjY2Vzc0NhbGxiYWNrLCBQYXNzUmVm
UHRyPEVycm9yQ2FsbGJhY2s+IGVycm9yQ2FsbGJhY2spCiB7Ci0gICAgLy8gRklYTUU6IHRvIGJl
IGltcGxlbWVudGVkLgotICAgIEFTU0VSVF9OT1RfUkVBQ0hFRCgpOworICAgIG1fZmlsZVN5c3Rl
bS0+Z2V0TWV0YWRhdGEodGhpcywgc3VjY2Vzc0NhbGxiYWNrLCBlcnJvckNhbGxiYWNrKTsKIH0K
IAotdm9pZCBFbnRyeTo6bW92ZVRvKFBhc3NSZWZQdHI8RW50cnk+LCBjb25zdCBTdHJpbmcmLCBQ
YXNzUmVmUHRyPEVudHJ5Q2FsbGJhY2s+LCBQYXNzUmVmUHRyPEVycm9yQ2FsbGJhY2s+KQordm9p
ZCBFbnRyeTo6bW92ZVRvKFBhc3NSZWZQdHI8RW50cnk+IHBhcmVudCwgY29uc3QgU3RyaW5nJiBu
YW1lLCBQYXNzUmVmUHRyPEVudHJ5Q2FsbGJhY2s+IHN1Y2Nlc3NDYWxsYmFjaywgUGFzc1JlZlB0
cjxFcnJvckNhbGxiYWNrPiBlcnJvckNhbGxiYWNrKSBjb25zdAogewotICAgIC8vIEZJWE1FOiB0
byBiZSBpbXBsZW1lbnRlZC4KLSAgICBBU1NFUlRfTk9UX1JFQUNIRUQoKTsKKyAgICBtX2ZpbGVT
eXN0ZW0tPm1vdmUodGhpcywgcGFyZW50LCBuYW1lLCBzdWNjZXNzQ2FsbGJhY2ssIGVycm9yQ2Fs
bGJhY2spOwogfQogCi12b2lkIEVudHJ5Ojpjb3B5VG8oUGFzc1JlZlB0cjxFbnRyeT4sIGNvbnN0
IFN0cmluZyYsIFBhc3NSZWZQdHI8RW50cnlDYWxsYmFjaz4sIFBhc3NSZWZQdHI8RXJyb3JDYWxs
YmFjaz4pCit2b2lkIEVudHJ5Ojpjb3B5VG8oUGFzc1JlZlB0cjxFbnRyeT4gcGFyZW50LCBjb25z
dCBTdHJpbmcmIG5hbWUsIFBhc3NSZWZQdHI8RW50cnlDYWxsYmFjaz4gc3VjY2Vzc0NhbGxiYWNr
LCBQYXNzUmVmUHRyPEVycm9yQ2FsbGJhY2s+IGVycm9yQ2FsbGJhY2spIGNvbnN0CiB7Ci0gICAg
Ly8gRklYTUU6IHRvIGJlIGltcGxlbWVudGVkLgotICAgIEFTU0VSVF9OT1RfUkVBQ0hFRCgpOwor
ICAgIG1fZmlsZVN5c3RlbS0+Y29weSh0aGlzLCBwYXJlbnQsIG5hbWUsIHN1Y2Nlc3NDYWxsYmFj
aywgZXJyb3JDYWxsYmFjayk7CiB9CiAKLXZvaWQgRW50cnk6OnJlbW92ZShQYXNzUmVmUHRyPFZv
aWRDYWxsYmFjaz4sIFBhc3NSZWZQdHI8RXJyb3JDYWxsYmFjaz4pCit2b2lkIEVudHJ5OjpyZW1v
dmUoUGFzc1JlZlB0cjxWb2lkQ2FsbGJhY2s+IHN1Y2Nlc3NDYWxsYmFjaywgUGFzc1JlZlB0cjxF
cnJvckNhbGxiYWNrPiBlcnJvckNhbGxiYWNrKSBjb25zdAogewotICAgIC8vIEZJWE1FOiB0byBi
ZSBpbXBsZW1lbnRlZC4KLSAgICBBU1NFUlRfTk9UX1JFQUNIRUQoKTsKKyAgICBtX2ZpbGVTeXN0
ZW0tPnJlbW92ZSh0aGlzLCBzdWNjZXNzQ2FsbGJhY2ssIGVycm9yQ2FsbGJhY2spOwogfQogCi12
b2lkIEVudHJ5OjpnZXRQYXJlbnQoUGFzc1JlZlB0cjxFbnRyeUNhbGxiYWNrPiwgUGFzc1JlZlB0
cjxFcnJvckNhbGxiYWNrPikKK3ZvaWQgRW50cnk6OmdldFBhcmVudChQYXNzUmVmUHRyPEVudHJ5
Q2FsbGJhY2s+IHN1Y2Nlc3NDYWxsYmFjaywgUGFzc1JlZlB0cjxFcnJvckNhbGxiYWNrPiBlcnJv
ckNhbGxiYWNrKSBjb25zdAogewotICAgIC8vIEZJWE1FOiB0byBiZSBpbXBsZW1lbnRlZC4KLSAg
ICBBU1NFUlRfTk9UX1JFQUNIRUQoKTsKKyAgICBtX2ZpbGVTeXN0ZW0tPmdldFBhcmVudCh0aGlz
LCBzdWNjZXNzQ2FsbGJhY2ssIGVycm9yQ2FsbGJhY2spOwogfQogCiBTdHJpbmcgRW50cnk6OnRv
VVJJKGNvbnN0IFN0cmluZyYpCmRpZmYgLS1naXQgYS9XZWJDb3JlL3N0b3JhZ2UvRW50cnkuaCBi
L1dlYkNvcmUvc3RvcmFnZS9FbnRyeS5oCmluZGV4IDdiYmIyNjU3NGFiMTE3MDA2YTIxMjE4ZDVl
ZjVjMDQ4YzI2OGMzMWIuLjY0ZGJhZmQxMmM3NGM3OTdhMDM3ZGU2MDlmYWFmYTM3NmU4N2U4NDEg
MTAwNjQ0Ci0tLSBhL1dlYkNvcmUvc3RvcmFnZS9FbnRyeS5oCisrKyBiL1dlYkNvcmUvc3RvcmFn
ZS9FbnRyeS5oCkBAIC01NywxMSArNTcsMTAgQEAgcHVibGljOgogICAgIERPTUZpbGVTeXN0ZW0q
IGZpbGVzeXN0ZW0oKSBjb25zdCB7IHJldHVybiBtX2ZpbGVTeXN0ZW0uZ2V0KCk7IH0KIAogICAg
IHZpcnR1YWwgdm9pZCBnZXRNZXRhZGF0YShQYXNzUmVmUHRyPE1ldGFkYXRhQ2FsbGJhY2s+IHN1
Y2Nlc3NDYWxsYmFjayA9IDAsIFBhc3NSZWZQdHI8RXJyb3JDYWxsYmFjaz4gZXJyb3JDYWxsYmFj
ayA9IDApOwotCi0gICAgdmlydHVhbCB2b2lkIG1vdmVUbyhQYXNzUmVmUHRyPEVudHJ5PiBwYXJl
bnQsIGNvbnN0IFN0cmluZyYgbmFtZSA9IFN0cmluZygpLCBQYXNzUmVmUHRyPEVudHJ5Q2FsbGJh
Y2s+IHN1Y2Nlc3NDYWxsYmFjayA9IDAsIFBhc3NSZWZQdHI8RXJyb3JDYWxsYmFjaz4gZXJyb3JD
YWxsYmFjayA9IDApOwotICAgIHZpcnR1YWwgdm9pZCBjb3B5VG8oUGFzc1JlZlB0cjxFbnRyeT4g
cGFyZW50LCBjb25zdCBTdHJpbmcmIG5hbWUgPSBTdHJpbmcoKSwgUGFzc1JlZlB0cjxFbnRyeUNh
bGxiYWNrPiBzdWNjZXNzQ2FsbGJhY2sgPSAwLCBQYXNzUmVmUHRyPEVycm9yQ2FsbGJhY2s+IGVy
cm9yQ2FsbGJhY2sgPSAwKTsKLSAgICB2aXJ0dWFsIHZvaWQgcmVtb3ZlKFBhc3NSZWZQdHI8Vm9p
ZENhbGxiYWNrPiBzdWNjZXNzQ2FsbGJhY2sgPSAwLCBQYXNzUmVmUHRyPEVycm9yQ2FsbGJhY2s+
IGVycm9yQ2FsbGJhY2sgPSAwKTsKLSAgICB2aXJ0dWFsIHZvaWQgZ2V0UGFyZW50KFBhc3NSZWZQ
dHI8RW50cnlDYWxsYmFjaz4gc3VjY2Vzc0NhbGxiYWNrID0gMCwgUGFzc1JlZlB0cjxFcnJvckNh
bGxiYWNrPiBlcnJvckNhbGxiYWNrID0gMCk7CisgICAgdmlydHVhbCB2b2lkIG1vdmVUbyhQYXNz
UmVmUHRyPEVudHJ5PiBwYXJlbnQsIGNvbnN0IFN0cmluZyYgbmFtZSA9IFN0cmluZygpLCBQYXNz
UmVmUHRyPEVudHJ5Q2FsbGJhY2s+IHN1Y2Nlc3NDYWxsYmFjayA9IDAsIFBhc3NSZWZQdHI8RXJy
b3JDYWxsYmFjaz4gZXJyb3JDYWxsYmFjayA9IDApIGNvbnN0OworICAgIHZpcnR1YWwgdm9pZCBj
b3B5VG8oUGFzc1JlZlB0cjxFbnRyeT4gcGFyZW50LCBjb25zdCBTdHJpbmcmIG5hbWUgPSBTdHJp
bmcoKSwgUGFzc1JlZlB0cjxFbnRyeUNhbGxiYWNrPiBzdWNjZXNzQ2FsbGJhY2sgPSAwLCBQYXNz
UmVmUHRyPEVycm9yQ2FsbGJhY2s+IGVycm9yQ2FsbGJhY2sgPSAwKSBjb25zdDsKKyAgICB2aXJ0
dWFsIHZvaWQgcmVtb3ZlKFBhc3NSZWZQdHI8Vm9pZENhbGxiYWNrPiBzdWNjZXNzQ2FsbGJhY2sg
PSAwLCBQYXNzUmVmUHRyPEVycm9yQ2FsbGJhY2s+IGVycm9yQ2FsbGJhY2sgPSAwKSBjb25zdDsK
KyAgICB2aXJ0dWFsIHZvaWQgZ2V0UGFyZW50KFBhc3NSZWZQdHI8RW50cnlDYWxsYmFjaz4gc3Vj
Y2Vzc0NhbGxiYWNrID0gMCwgUGFzc1JlZlB0cjxFcnJvckNhbGxiYWNrPiBlcnJvckNhbGxiYWNr
ID0gMCkgY29uc3Q7CiAKICAgICB2aXJ0dWFsIFN0cmluZyB0b1VSSShjb25zdCBTdHJpbmcmIG1p
bWVUeXBlID0gU3RyaW5nKCkpOwogCkBAIC02OSw3ICs2OCw3IEBAIHByb3RlY3RlZDoKICAgICBF
bnRyeShQYXNzUmVmUHRyPERPTUZpbGVTeXN0ZW0+IGZpbGVTeXN0ZW0sIGNvbnN0IFN0cmluZyYg
ZnVsbFBhdGgpOwogCiAgICAgUmVmUHRyPERPTUZpbGVTeXN0ZW0+IG1fZmlsZVN5c3RlbTsKLSAg
ICBTdHJpbmcgbV9mdWxsUGF0aDsgLy8gdmlydHVhbCBwYXRoCisgICAgU3RyaW5nIG1fZnVsbFBh
dGg7CiAgICAgU3RyaW5nIG1fbmFtZTsKIH07CiAKZGlmZiAtLWdpdCBhL1dlYkNvcmUvc3RvcmFn
ZS9GaWxlRW50cnkuaCBiL1dlYkNvcmUvc3RvcmFnZS9GaWxlRW50cnkuaAppbmRleCBiMDJiNWM3
MDQ5YWYzNzY1YzJlZDllZmZlMzEzNWQ2MThjYzEzMzdmLi5hZWViNzRhNjJmNTE5NjMyNmJjZThi
MjJjZjM3ODhhMzZhNTI1NDhkIDEwMDY0NAotLS0gYS9XZWJDb3JlL3N0b3JhZ2UvRmlsZUVudHJ5
LmgKKysrIGIvV2ViQ29yZS9zdG9yYWdlL0ZpbGVFbnRyeS5oCkBAIC0zNCw5ICszNCw2IEBACiAj
aWYgRU5BQkxFKEZJTEVfU1lTVEVNKQogCiAjaW5jbHVkZSAiRW50cnkuaCIKLSNpbmNsdWRlICJQ
bGF0Zm9ybVN0cmluZy5oIgotI2luY2x1ZGUgPHd0Zi9QYXNzUmVmUHRyLmg+Ci0jaW5jbHVkZSA8
d3RmL1JlZkNvdW50ZWQuaD4KIAogbmFtZXNwYWNlIFdlYkNvcmUgewogCmRpZmYgLS1naXQgYS9X
ZWJDb3JlL3N0b3JhZ2UvRmlsZVN5c3RlbUNhbGxiYWNrcy5jcHAgYi9XZWJDb3JlL3N0b3JhZ2Uv
RmlsZVN5c3RlbUNhbGxiYWNrcy5jcHAKaW5kZXggNTQ4MzlkODE5NWIzZWNmYjU5MzY5Nzg1YmNk
NzVjMzBmOWU3NmZkOS4uY2FkNjQ1MTI2NmY5MjcxYTVmMWUxZGY2YjQ3NTBkYmYxMmNiODY4MyAx
MDA2NDQKLS0tIGEvV2ViQ29yZS9zdG9yYWdlL0ZpbGVTeXN0ZW1DYWxsYmFja3MuY3BwCisrKyBi
L1dlYkNvcmUvc3RvcmFnZS9GaWxlU3lzdGVtQ2FsbGJhY2tzLmNwcApAQCAtMzQsNiArMzQsNyBA
QAogI2lmIEVOQUJMRShGSUxFX1NZU1RFTSkKIAogI2luY2x1ZGUgIkFzeW5jRmlsZVN5c3RlbS5o
IgorI2luY2x1ZGUgIkRPTUZpbGVQYXRoLmgiCiAjaW5jbHVkZSAiRE9NRmlsZVN5c3RlbS5oIgog
I2luY2x1ZGUgIkRpcmVjdG9yeUVudHJ5LmgiCiAjaW5jbHVkZSAiRW50cmllc0NhbGxiYWNrLmgi
CkBAIC0xMzIsMTQgKzEzMywxNyBAQCBFbnRyaWVzQ2FsbGJhY2tzOjpFbnRyaWVzQ2FsbGJhY2tz
KFBhc3NSZWZQdHI8RW50cmllc0NhbGxiYWNrPiBzdWNjZXNzQ2FsbGJhY2ssCiAKIHZvaWQgRW50
cmllc0NhbGxiYWNrczo6ZGlkUmVhZERpcmVjdG9yeUVudHJ5KGNvbnN0IFN0cmluZyYgbmFtZSwg
Ym9vbCBpc0RpcmVjdG9yeSkKIHsKKyAgICBpZiAoIW1fZW50cmllcykKKyAgICAgICAgbV9lbnRy
aWVzID0gRW50cnlBcnJheTo6Y3JlYXRlKCk7CiAgICAgaWYgKGlzRGlyZWN0b3J5KQotICAgICAg
ICBtX2VudHJpZXMtPmFwcGVuZChEaXJlY3RvcnlFbnRyeTo6Y3JlYXRlKG1fZmlsZVN5c3RlbSwg
bV9iYXNlUGF0aCArICIvIiArIG5hbWUpKTsKKyAgICAgICAgbV9lbnRyaWVzLT5hcHBlbmQoRGly
ZWN0b3J5RW50cnk6OmNyZWF0ZShtX2ZpbGVTeXN0ZW0sIERPTUZpbGVQYXRoOjphcHBlbmQobV9i
YXNlUGF0aCwgbmFtZSkpKTsKICAgICBlbHNlCi0gICAgICAgIG1fZW50cmllcy0+YXBwZW5kKEZp
bGVFbnRyeTo6Y3JlYXRlKG1fZmlsZVN5c3RlbSwgbV9iYXNlUGF0aCArICIvIiArIG5hbWUpKTsK
KyAgICAgICAgbV9lbnRyaWVzLT5hcHBlbmQoRmlsZUVudHJ5OjpjcmVhdGUobV9maWxlU3lzdGVt
LCBET01GaWxlUGF0aDo6YXBwZW5kKG1fYmFzZVBhdGgsIG5hbWUpKSk7CiB9CiAKIHZvaWQgRW50
cmllc0NhbGxiYWNrczo6ZGlkUmVhZERpcmVjdG9yeUNodW5rRG9uZShib29sIGhhc01vcmUpCiB7
CisgICAgQVNTRVJUKG1fZW50cmllcyk7CiAgICAgaWYgKG1fc3VjY2Vzc0NhbGxiYWNrKSB7CiAg
ICAgICAgIG1fc3VjY2Vzc0NhbGxiYWNrLT5oYW5kbGVFdmVudChtX2VudHJpZXMuZ2V0KCkpOwog
ICAgICAgICBtX2VudHJpZXMtPmNsZWFyKCk7CkBAIC0xNjQsNyArMTY4LDggQEAgdm9pZCBGaWxl
U3lzdGVtQ2FsbGJhY2tzOjpkaWRPcGVuRmlsZVN5c3RlbShjb25zdCBTdHJpbmcmIG5hbWUsIFBh
c3NPd25QdHI8QXN5bmMKIHsKICAgICBpZiAobV9zdWNjZXNzQ2FsbGJhY2spIHsKICAgICAgICAg
QVNTRVJUKGFzeW5jRmlsZVN5c3RlbSk7Ci0gICAgICAgIG1fc3VjY2Vzc0NhbGxiYWNrLT5oYW5k
bGVFdmVudChET01GaWxlU3lzdGVtOjpjcmVhdGUobV9zY3JpcHRFeGVjdXRpb25Db250ZXh0LCBu
YW1lLCBhc3luY0ZpbGVTeXN0ZW0ubGVha1B0cigpKS5nZXQoKSk7CisgICAgICAgIG1fc3VjY2Vz
c0NhbGxiYWNrLT5oYW5kbGVFdmVudChET01GaWxlU3lzdGVtOjpjcmVhdGUobV9zY3JpcHRFeGVj
dXRpb25Db250ZXh0LmdldCgpLCBuYW1lLCBhc3luY0ZpbGVTeXN0ZW0ubGVha1B0cigpKS5nZXQo
KSk7CisgICAgICAgIG1fc2NyaXB0RXhlY3V0aW9uQ29udGV4dC5jbGVhcigpOwogICAgIH0KICAg
ICBtX3N1Y2Nlc3NDYWxsYmFjay5jbGVhcigpOwogfQpkaWZmIC0tZ2l0IGEvV2ViQ29yZS9zdG9y
YWdlL0ZpbGVTeXN0ZW1DYWxsYmFja3MuaCBiL1dlYkNvcmUvc3RvcmFnZS9GaWxlU3lzdGVtQ2Fs
bGJhY2tzLmgKaW5kZXggMjI3ZjExMjU3ZjZlNzQ4YjQ3YmZmYWQxOGQ0OTI2ZWFhMjZkMzFmYS4u
YzM1NmYxNmU0YjdhZTAwYmFlOThjOWI3ZDI3MjdmMjExMDJjODJiOSAxMDA2NDQKLS0tIGEvV2Vi
Q29yZS9zdG9yYWdlL0ZpbGVTeXN0ZW1DYWxsYmFja3MuaAorKysgYi9XZWJDb3JlL3N0b3JhZ2Uv
RmlsZVN5c3RlbUNhbGxiYWNrcy5oCkBAIC0xMDksNyArMTA5LDcgQEAgcHVibGljOgogCiBwcml2
YXRlOgogICAgIFJlZlB0cjxGaWxlU3lzdGVtQ2FsbGJhY2s+IG1fc3VjY2Vzc0NhbGxiYWNrOwot
ICAgIFNjcmlwdEV4ZWN1dGlvbkNvbnRleHQqIG1fc2NyaXB0RXhlY3V0aW9uQ29udGV4dDsKKyAg
ICBSZWZQdHI8U2NyaXB0RXhlY3V0aW9uQ29udGV4dD4gbV9zY3JpcHRFeGVjdXRpb25Db250ZXh0
OwogfTsKIAogY2xhc3MgTWV0YWRhdGFDYWxsYmFja3MgOiBwdWJsaWMgRmlsZVN5c3RlbUNhbGxi
YWNrc0Jhc2Ugewo=
</data>

          </attachment>
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>65797</attachid>
            <date>2010-08-27 17:50:57 -0700</date>
            <delta_ts>2010-08-28 21:29:38 -0700</delta_ts>
            <desc>Patch</desc>
            <filename>bug-44732-20100827175056.patch</filename>
            <type>text/plain</type>
            <size>27050</size>
            <attacher name="Kinuko Yasuda">kinuko</attacher>
            
              <data encoding="base64">ZGlmZiAtLWdpdCBhL1dlYkNvcmUvQ2hhbmdlTG9nIGIvV2ViQ29yZS9DaGFuZ2VMb2cKaW5kZXgg
MzA0NzZkM2JiOGE0Nzg4NDQ2MTAwNGZkNmVkZTFhNWE1ZTNjZGEzOC4uMGM4ZWU5NGRmODJhYWI0
M2NmODkyNTVhMjg4ZWU3NjQ1YWY5ZDIzYSAxMDA2NDQKLS0tIGEvV2ViQ29yZS9DaGFuZ2VMb2cK
KysrIGIvV2ViQ29yZS9DaGFuZ2VMb2cKQEAgLTEsMyArMSw1MyBAQAorMjAxMC0wOC0yNyAgS2lu
dWtvIFlhc3VkYSAgPGtpbnVrb0BjaHJvbWl1bS5vcmc+CisKKyAgICAgICAgUmV2aWV3ZWQgYnkg
Tk9CT0RZIChPT1BTISkuCisKKyAgICAgICAgQWRkIERPTUZpbGVTeXN0ZW0gaW1wbGVtZW50YXRp
b24gdG8gc3VwcG9ydCBFbnRyeSBtYW5pcHVsYXRpb24gb3BlcmF0aW9ucworICAgICAgICBodHRw
czovL2J1Z3Mud2Via2l0Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9NDQ3MzIKKworICAgICAgICBObyBu
ZXcgdGVzdHM7IHRlc3RzIHdpbGwgYmUgYWRkZWQgbGF0ZXIuCisKKyAgICAgICAgKiBzdG9yYWdl
L0RPTUZpbGVTeXN0ZW0uY3BwOgorICAgICAgICAoV2ViQ29yZTo6RE9NRmlsZVN5c3RlbTo6cm9v
dCk6CisgICAgICAgIChXZWJDb3JlOjpjaGVja1ZhbGlkaXR5Rm9yRm9yQ29weU9yTW92ZSk6IEFk
ZGVkLgorICAgICAgICAoV2ViQ29yZTo6RE9NRmlsZVN5c3RlbTo6Z2V0TWV0YWRhdGEpOiBBZGRl
ZC4KKyAgICAgICAgKFdlYkNvcmU6OkRPTUZpbGVTeXN0ZW06Om1vdmUpOiBBZGRlZC4KKyAgICAg
ICAgKFdlYkNvcmU6OkRPTUZpbGVTeXN0ZW06OmNvcHkpOiBBZGRlZC4KKyAgICAgICAgKFdlYkNv
cmU6OkRPTUZpbGVTeXN0ZW06OnJlbW92ZSk6IEFkZGVkLgorICAgICAgICAoV2ViQ29yZTo6RE9N
RmlsZVN5c3RlbTo6Z2V0UGFyZW50KTogQWRkZWQuCisgICAgICAgIChXZWJDb3JlOjpET01GaWxl
U3lzdGVtOjpnZXRGaWxlKTogQWRkZWQuCisgICAgICAgIChXZWJDb3JlOjpET01GaWxlU3lzdGVt
OjpnZXREaXJlY3RvcnkpOiBBZGRlZC4KKyAgICAgICAgKFdlYkNvcmU6OkRPTUZpbGVTeXN0ZW06
OnJlYWREaXJlY3RvcnkpOiBBZGRlZC4KKyAgICAgICAgKiBzdG9yYWdlL0RPTUZpbGVTeXN0ZW0u
aDoKKyAgICAgICAgKFdlYkNvcmU6OkRPTUZpbGVTeXN0ZW06OkRpc3BhdGNoQ2FsbGJhY2tUYXNr
KTogQWRkZWQgdG8gc2NoZWR1bGUgY2FsbGJhY2tzLgorICAgICAgICAoV2ViQ29yZTo6RE9NRmls
ZVN5c3RlbTo6c2NoZWR1bGVDYWxsYmFjayk6IEFkZGVkIHRvIHNjaGVkdWxlIGNhbGxiYWNrcy4K
KyAgICAgICAgKiBzdG9yYWdlL0RpcmVjdG9yeUVudHJ5LmNwcDoKKyAgICAgICAgKFdlYkNvcmU6
OkRpcmVjdG9yeUVudHJ5OjpnZXRGaWxlKTogQWRkZWQgaW1wbGVtZW50YXRpb24uCisgICAgICAg
IChXZWJDb3JlOjpEaXJlY3RvcnlFbnRyeTo6Z2V0RGlyZWN0b3J5KTogQWRkZWQgaW1wbGVtZW50
YXRpb24uCisgICAgICAgICogc3RvcmFnZS9EaXJlY3RvcnlSZWFkZXIuY3BwOgorICAgICAgICAo
V2ViQ29yZTo6RGlyZWN0b3J5UmVhZGVyOjpEaXJlY3RvcnlSZWFkZXIpOiBBZGRlZCBpbXBsZW1l
bnRhdGlvbi4KKyAgICAgICAgKFdlYkNvcmU6OkRpcmVjdG9yeVJlYWRlcjo6cmVhZEVudHJpZXMp
OiBBZGRlZCBpbXBsZW1lbnRhdGlvbi4KKyAgICAgICAgKiBzdG9yYWdlL0RpcmVjdG9yeVJlYWRl
ci5oOgorICAgICAgICAqIHN0b3JhZ2UvRW50cnkuY3BwOgorICAgICAgICAoV2ViQ29yZTo6RW50
cnk6OmdldE1ldGFkYXRhKTogQWRkZWQgaW1wbGVtZW50YXRpb24uCisgICAgICAgIChXZWJDb3Jl
OjpFbnRyeTo6bW92ZVRvKTogQWRkZWQgaW1wbGVtZW50YXRpb24uCisgICAgICAgIChXZWJDb3Jl
OjpFbnRyeTo6Y29weVRvKTogQWRkZWQgaW1wbGVtZW50YXRpb24uCisgICAgICAgIChXZWJDb3Jl
OjpFbnRyeTo6cmVtb3ZlKTogQWRkZWQgaW1wbGVtZW50YXRpb24uCisgICAgICAgIChXZWJDb3Jl
OjpFbnRyeTo6Z2V0UGFyZW50KTogQWRkZWQgaW1wbGVtZW50YXRpb24uCisgICAgICAgICogc3Rv
cmFnZS9FbnRyeS5oOgorICAgICAgICAqIHN0b3JhZ2UvRmlsZUVudHJ5Lmg6CisgICAgICAgICog
c3RvcmFnZS9GaWxlU3lzdGVtQ2FsbGJhY2tzLmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OkZpbGVT
eXN0ZW1DYWxsYmFja3NCYXNlOjpGaWxlU3lzdGVtQ2FsbGJhY2tzQmFzZSk6CisgICAgICAgIChX
ZWJDb3JlOjpGaWxlU3lzdGVtQ2FsbGJhY2tzQmFzZTo6ZGlkRmFpbCk6CisgICAgICAgIChXZWJD
b3JlOjpFbnRyaWVzQ2FsbGJhY2tzOjpkaWRSZWFkRGlyZWN0b3J5RW50cnkpOgorICAgICAgICAo
V2ViQ29yZTo6RW50cmllc0NhbGxiYWNrczo6ZGlkUmVhZERpcmVjdG9yeUVudHJpZXMpOgorICAg
ICAgICAoV2ViQ29yZTo6RmlsZVN5c3RlbUNhbGxiYWNrczo6RmlsZVN5c3RlbUNhbGxiYWNrcyk6
CisgICAgICAgIChXZWJDb3JlOjpGaWxlU3lzdGVtQ2FsbGJhY2tzOjpkaWRPcGVuRmlsZVN5c3Rl
bSk6CisgICAgICAgICogc3RvcmFnZS9GaWxlU3lzdGVtQ2FsbGJhY2tzLmg6CisgICAgICAgIChX
ZWJDb3JlOjpGaWxlU3lzdGVtQ2FsbGJhY2tzQmFzZTo6ZmlyZUNhbGxiYWNrKTogQWRkZWQgdG8g
ZmlyZSBjYWxsYmFja3MgKGJ5IHBvc3Rpbmcgb3IgZGlyZWN0bHkgY2FsbGluZyBoYW5kbGVFdmVu
dCgpIGRlcGVuZGluZyBvbiBpbW1lZGlhdGUgZmxhZykuCisgICAgICAgICogc3RvcmFnZS9Mb2Nh
bEZpbGVTeXN0ZW0uY3BwOgorICAgICAgICAoV2ViQ29yZTo6TG9jYWxGaWxlU3lzdGVtOjpyZXF1
ZXN0RmlsZVN5c3RlbSk6IENoYW5nZWQgdG8gcG9zdCBjYWxsYmFja3MgcmF0aGVyIHRoYW4gZGly
ZWN0bHkgY2FsbGluZyBoYW5kbGVFdmVudCgpLgorCiAyMDEwLTA4LTI3ICBKb3NlcGggUGVjb3Jh
cm8gIDxqb2VwZWNrQHdlYmtpdC5vcmc+CiAKICAgICAgICAgUmV2aWV3ZWQgYnkgQWxleGV5IFBy
b3NrdXJ5YWtvdi4KZGlmZiAtLWdpdCBhL1dlYkNvcmUvc3RvcmFnZS9ET01GaWxlU3lzdGVtLmNw
cCBiL1dlYkNvcmUvc3RvcmFnZS9ET01GaWxlU3lzdGVtLmNwcAppbmRleCA1ZDYwNzNhM2U5ZWMx
MjM5NjRhMjJiOTY2OTQ2YmIzNjBhMjM5ZWVhLi5lM2QzNjk0ZThmM2I2ZjI1YWZmZDYyMGEzMGQ5
M2M3MDZiM2JjMzdlIDEwMDY0NAotLS0gYS9XZWJDb3JlL3N0b3JhZ2UvRE9NRmlsZVN5c3RlbS5j
cHAKKysrIGIvV2ViQ29yZS9zdG9yYWdlL0RPTUZpbGVTeXN0ZW0uY3BwCkBAIC0zNCw4ICszNCwx
NyBAQAogI2lmIEVOQUJMRShGSUxFX1NZU1RFTSkKIAogI2luY2x1ZGUgIkFzeW5jRmlsZVN5c3Rl
bS5oIgorI2luY2x1ZGUgIkRPTUZpbGVQYXRoLmgiCiAjaW5jbHVkZSAiRGlyZWN0b3J5RW50cnku
aCIKKyNpbmNsdWRlICJFbnRyaWVzQ2FsbGJhY2suaCIKKyNpbmNsdWRlICJFbnRyeS5oIgorI2lu
Y2x1ZGUgIkVudHJ5Q2FsbGJhY2suaCIKKyNpbmNsdWRlICJFcnJvckNhbGxiYWNrLmgiCisjaW5j
bHVkZSAiRmlsZUVycm9yLmgiCisjaW5jbHVkZSAiRmlsZVN5c3RlbUNhbGxiYWNrcy5oIgorI2lu
Y2x1ZGUgIk1ldGFkYXRhQ2FsbGJhY2suaCIKICNpbmNsdWRlICJTY3JpcHRFeGVjdXRpb25Db250
ZXh0LmgiCisjaW5jbHVkZSAiVm9pZENhbGxiYWNrLmgiCiAKIG5hbWVzcGFjZSBXZWJDb3JlIHsK
IApAQCAtNTIsNyArNjEsNyBAQCBET01GaWxlU3lzdGVtOjp+RE9NRmlsZVN5c3RlbSgpCiAKIFBh
c3NSZWZQdHI8RGlyZWN0b3J5RW50cnk+IERPTUZpbGVTeXN0ZW06OnJvb3QoKQogewotICAgIHJl
dHVybiBEaXJlY3RvcnlFbnRyeTo6Y3JlYXRlKHRoaXMsICIvIik7CisgICAgcmV0dXJuIERpcmVj
dG9yeUVudHJ5OjpjcmVhdGUodGhpcywgRE9NRmlsZVBhdGg6OnJvb3QpOwogfQogCiB2b2lkIERP
TUZpbGVTeXN0ZW06OnN0b3AoKQpAQCAtNzAsNiArNzksMTE4IEBAIHZvaWQgRE9NRmlsZVN5c3Rl
bTo6Y29udGV4dERlc3Ryb3llZCgpCiAgICAgbV9hc3luY0ZpbGVTeXN0ZW0tPnN0b3AoKTsKIH0K
IAordm9pZCBET01GaWxlU3lzdGVtOjpnZXRNZXRhZGF0YShjb25zdCBFbnRyeSogZW50cnksIFBh
c3NSZWZQdHI8TWV0YWRhdGFDYWxsYmFjaz4gc3VjY2Vzc0NhbGxiYWNrLCBQYXNzUmVmUHRyPEVy
cm9yQ2FsbGJhY2s+IGVycm9yQ2FsbGJhY2spCit7CisgICAgbV9hc3luY0ZpbGVTeXN0ZW0tPnJl
YWRNZXRhZGF0YShlbnRyeS0+ZnVsbFBhdGgoKSwgbmV3IE1ldGFkYXRhQ2FsbGJhY2tzKHN1Y2Nl
c3NDYWxsYmFjaywgZXJyb3JDYWxsYmFjaykpOworfQorCitzdGF0aWMgYm9vbCBjaGVja1ZhbGlk
aXR5Rm9yRm9yQ29weU9yTW92ZShjb25zdCBFbnRyeSogc3JjLCBFbnRyeSogcGFyZW50LCBjb25z
dCBTdHJpbmcmIG5ld05hbWUpCit7CisgICAgQVNTRVJUKHNyYyAmJiBwYXJlbnQpOworCisgICAg
aWYgKCFwYXJlbnQtPmlzRGlyZWN0b3J5KCkpCisgICAgICAgIHJldHVybiBmYWxzZTsKKworICAg
IGlmICghbmV3TmFtZS5pc0VtcHR5KCkgJiYgIURPTUZpbGVQYXRoOjppc1ZhbGlkTmFtZShuZXdO
YW1lKSkKKyAgICAgICAgcmV0dXJuIGZhbHNlOworCisgICAgLy8gSXQgaXMgYW4gZXJyb3IgdG8g
dHJ5IHRvIGNvcHkgb3IgbW92ZSBhbiBlbnRyeSBpbnNpZGUgaXRzZWxmIGF0IGFueSBkZXB0aCBp
ZiBpdCBpcyBhIGRpcmVjdG9yeS4KKyAgICBpZiAoc3JjLT5pc0RpcmVjdG9yeSgpICYmIERPTUZp
bGVQYXRoOjppc1BhcmVudE9mKHNyYy0+ZnVsbFBhdGgoKSwgcGFyZW50LT5mdWxsUGF0aCgpKSkK
KyAgICAgICAgcmV0dXJuIGZhbHNlOworCisgICAgLy8gSXQgaXMgYW4gZXJyb3IgdG8gY29weSBv
ciBtb3ZlIGFuIGVudHJ5IGludG8gaXRzIHBhcmVudCBpZiBhIG5hbWUgZGlmZmVyZW50IGZyb20g
aXRzIGN1cnJlbnQgb25lIGlzbid0IHByb3ZpZGVkLgorICAgIGlmICgobmV3TmFtZS5pc0VtcHR5
KCkgfHwgc3JjLT5uYW1lKCkgPT0gbmV3TmFtZSkgJiYgRE9NRmlsZVBhdGg6OmdldERpcmVjdG9y
eShzcmMtPmZ1bGxQYXRoKCkpID09IHBhcmVudC0+ZnVsbFBhdGgoKSkKKyAgICAgICAgcmV0dXJu
IGZhbHNlOworCisgICAgcmV0dXJuIHRydWU7Cit9CisKK3ZvaWQgRE9NRmlsZVN5c3RlbTo6bW92
ZShjb25zdCBFbnRyeSogc3JjLCBQYXNzUmVmUHRyPEVudHJ5PiBwYXJlbnQsIGNvbnN0IFN0cmlu
ZyYgbmV3TmFtZSwgUGFzc1JlZlB0cjxFbnRyeUNhbGxiYWNrPiBzdWNjZXNzQ2FsbGJhY2ssIFBh
c3NSZWZQdHI8RXJyb3JDYWxsYmFjaz4gZXJyb3JDYWxsYmFjaykKK3sKKyAgICBpZiAoIWNoZWNr
VmFsaWRpdHlGb3JGb3JDb3B5T3JNb3ZlKHNyYywgcGFyZW50LmdldCgpLCBuZXdOYW1lKSkgewor
ICAgICAgICBzY2hlZHVsZUNhbGxiYWNrKHNjcmlwdEV4ZWN1dGlvbkNvbnRleHQoKSwgZXJyb3JD
YWxsYmFjaywgRmlsZUVycm9yOjpjcmVhdGUoSU5WQUxJRF9NT0RJRklDQVRJT05fRVJSKSk7Cisg
ICAgICAgIHJldHVybjsKKyAgICB9CisKKyAgICBTdHJpbmcgZGVzdFBhdGggPSBwYXJlbnQtPmZ1
bGxQYXRoKCk7CisgICAgaWYgKCFuZXdOYW1lLmlzRW1wdHkoKSkKKyAgICAgICAgZGVzdFBhdGgg
PSBET01GaWxlUGF0aDo6YXBwZW5kKGRlc3RQYXRoLCBuZXdOYW1lKTsKKyAgICBlbHNlCisgICAg
ICAgIGRlc3RQYXRoID0gRE9NRmlsZVBhdGg6OmFwcGVuZChkZXN0UGF0aCwgc3JjLT5uYW1lKCkp
OworCisgICAgbV9hc3luY0ZpbGVTeXN0ZW0tPm1vdmUoc3JjLT5mdWxsUGF0aCgpLCBkZXN0UGF0
aCwgbmV3IEVudHJ5Q2FsbGJhY2tzKHN1Y2Nlc3NDYWxsYmFjaywgZXJyb3JDYWxsYmFjaywgdGhp
cywgZGVzdFBhdGgsIHNyYy0+aXNEaXJlY3RvcnkoKSkpOworfQorCit2b2lkIERPTUZpbGVTeXN0
ZW06OmNvcHkoY29uc3QgRW50cnkqIHNyYywgUGFzc1JlZlB0cjxFbnRyeT4gcGFyZW50LCBjb25z
dCBTdHJpbmcmIG5ld05hbWUsIFBhc3NSZWZQdHI8RW50cnlDYWxsYmFjaz4gc3VjY2Vzc0NhbGxi
YWNrLCBQYXNzUmVmUHRyPEVycm9yQ2FsbGJhY2s+IGVycm9yQ2FsbGJhY2spCit7CisgICAgaWYg
KCFjaGVja1ZhbGlkaXR5Rm9yRm9yQ29weU9yTW92ZShzcmMsIHBhcmVudC5nZXQoKSwgbmV3TmFt
ZSkpIHsKKyAgICAgICAgc2NoZWR1bGVDYWxsYmFjayhzY3JpcHRFeGVjdXRpb25Db250ZXh0KCks
IGVycm9yQ2FsbGJhY2ssIEZpbGVFcnJvcjo6Y3JlYXRlKElOVkFMSURfTU9ESUZJQ0FUSU9OX0VS
UikpOworICAgICAgICByZXR1cm47CisgICAgfQorCisgICAgU3RyaW5nIGRlc3RQYXRoID0gcGFy
ZW50LT5mdWxsUGF0aCgpOworICAgIGlmICghbmV3TmFtZS5pc0VtcHR5KCkpCisgICAgICAgIGRl
c3RQYXRoID0gRE9NRmlsZVBhdGg6OmFwcGVuZChkZXN0UGF0aCwgbmV3TmFtZSk7CisgICAgZWxz
ZQorICAgICAgICBkZXN0UGF0aCA9IERPTUZpbGVQYXRoOjphcHBlbmQoZGVzdFBhdGgsIHNyYy0+
bmFtZSgpKTsKKworICAgIG1fYXN5bmNGaWxlU3lzdGVtLT5jb3B5KHNyYy0+ZnVsbFBhdGgoKSwg
ZGVzdFBhdGgsIG5ldyBFbnRyeUNhbGxiYWNrcyhzdWNjZXNzQ2FsbGJhY2ssIGVycm9yQ2FsbGJh
Y2ssIHRoaXMsIGRlc3RQYXRoLCBzcmMtPmlzRGlyZWN0b3J5KCkpKTsKK30KKwordm9pZCBET01G
aWxlU3lzdGVtOjpyZW1vdmUoY29uc3QgRW50cnkqIGVudHJ5LCBQYXNzUmVmUHRyPFZvaWRDYWxs
YmFjaz4gc3VjY2Vzc0NhbGxiYWNrLCBQYXNzUmVmUHRyPEVycm9yQ2FsbGJhY2s+IGVycm9yQ2Fs
bGJhY2spCit7CisgICAgQVNTRVJUKGVudHJ5KTsKKyAgICBtX2FzeW5jRmlsZVN5c3RlbS0+cmVt
b3ZlKGVudHJ5LT5mdWxsUGF0aCgpLCBuZXcgVm9pZENhbGxiYWNrcyhzdWNjZXNzQ2FsbGJhY2ss
IGVycm9yQ2FsbGJhY2spKTsKK30KKwordm9pZCBET01GaWxlU3lzdGVtOjpnZXRQYXJlbnQoY29u
c3QgRW50cnkqIGVudHJ5LCBQYXNzUmVmUHRyPEVudHJ5Q2FsbGJhY2s+IHN1Y2Nlc3NDYWxsYmFj
aywgUGFzc1JlZlB0cjxFcnJvckNhbGxiYWNrPiBlcnJvckNhbGxiYWNrKQoreworICAgIEFTU0VS
VChlbnRyeSk7CisgICAgU3RyaW5nIHBhdGggPSBET01GaWxlUGF0aDo6Z2V0RGlyZWN0b3J5KGVu
dHJ5LT5mdWxsUGF0aCgpKTsKKyAgICBtX2FzeW5jRmlsZVN5c3RlbS0+ZGlyZWN0b3J5RXhpc3Rz
KHBhdGgsIG5ldyBFbnRyeUNhbGxiYWNrcyhzdWNjZXNzQ2FsbGJhY2ssIGVycm9yQ2FsbGJhY2ss
IHRoaXMsIHBhdGgsIHRydWUpKTsKK30KKwordm9pZCBET01GaWxlU3lzdGVtOjpnZXRGaWxlKGNv
bnN0IEVudHJ5KiBiYXNlLCBjb25zdCBTdHJpbmcmIHBhdGgsIFBhc3NSZWZQdHI8RmxhZ3M+IGZs
YWdzLCBQYXNzUmVmUHRyPEVudHJ5Q2FsbGJhY2s+IHN1Y2Nlc3NDYWxsYmFjaywgUGFzc1JlZlB0
cjxFcnJvckNhbGxiYWNrPiBlcnJvckNhbGxiYWNrKQoreworICAgIEFTU0VSVChiYXNlKTsKKyAg
ICBpZiAoIURPTUZpbGVQYXRoOjppc1ZhbGlkUGF0aChwYXRoKSkgeworICAgICAgICBzY2hlZHVs
ZUNhbGxiYWNrKHNjcmlwdEV4ZWN1dGlvbkNvbnRleHQoKSwgZXJyb3JDYWxsYmFjaywgRmlsZUVy
cm9yOjpjcmVhdGUoSU5WQUxJRF9NT0RJRklDQVRJT05fRVJSKSk7CisgICAgICAgIHJldHVybjsK
KyAgICB9CisKKyAgICBTdHJpbmcgYWJzb2x1dGVQYXRoID0gcGF0aDsKKyAgICBpZiAoIURPTUZp
bGVQYXRoOjppc0Fic29sdXRlKHBhdGgpKQorICAgICAgICBhYnNvbHV0ZVBhdGggPSBET01GaWxl
UGF0aDo6cmVtb3ZlRXh0cmFQYXJlbnRSZWZlcmVuY2VzKERPTUZpbGVQYXRoOjphcHBlbmQoYmFz
ZS0+ZnVsbFBhdGgoKSwgcGF0aCkpOworCisgICAgaWYgKGZsYWdzICYmIGZsYWdzLT5pc0NyZWF0
ZSgpKQorICAgICAgICBtX2FzeW5jRmlsZVN5c3RlbS0+Y3JlYXRlRmlsZShhYnNvbHV0ZVBhdGgs
IGZsYWdzLT5pc0V4Y2x1c2l2ZSgpLCBuZXcgRW50cnlDYWxsYmFja3Moc3VjY2Vzc0NhbGxiYWNr
LCBlcnJvckNhbGxiYWNrLCB0aGlzLCBhYnNvbHV0ZVBhdGgsIGZhbHNlKSk7CisgICAgZWxzZQor
ICAgICAgICBtX2FzeW5jRmlsZVN5c3RlbS0+ZmlsZUV4aXN0cyhhYnNvbHV0ZVBhdGgsIG5ldyBF
bnRyeUNhbGxiYWNrcyhzdWNjZXNzQ2FsbGJhY2ssIGVycm9yQ2FsbGJhY2ssIHRoaXMsIGFic29s
dXRlUGF0aCwgZmFsc2UpKTsKK30KKwordm9pZCBET01GaWxlU3lzdGVtOjpnZXREaXJlY3Rvcnko
Y29uc3QgRW50cnkqIGJhc2UsIGNvbnN0IFN0cmluZyYgcGF0aCwgUGFzc1JlZlB0cjxGbGFncz4g
ZmxhZ3MsIFBhc3NSZWZQdHI8RW50cnlDYWxsYmFjaz4gc3VjY2Vzc0NhbGxiYWNrLCBQYXNzUmVm
UHRyPEVycm9yQ2FsbGJhY2s+IGVycm9yQ2FsbGJhY2spCit7CisgICAgQVNTRVJUKGJhc2UpOwor
ICAgIGlmICghRE9NRmlsZVBhdGg6OmlzVmFsaWRQYXRoKHBhdGgpKSB7CisgICAgICAgIHNjaGVk
dWxlQ2FsbGJhY2soc2NyaXB0RXhlY3V0aW9uQ29udGV4dCgpLCBlcnJvckNhbGxiYWNrLCBGaWxl
RXJyb3I6OmNyZWF0ZShJTlZBTElEX01PRElGSUNBVElPTl9FUlIpKTsKKyAgICAgICAgcmV0dXJu
OworICAgIH0KKworICAgIFN0cmluZyBhYnNvbHV0ZVBhdGggPSBwYXRoOworICAgIGlmICghRE9N
RmlsZVBhdGg6OmlzQWJzb2x1dGUocGF0aCkpCisgICAgICAgIGFic29sdXRlUGF0aCA9IERPTUZp
bGVQYXRoOjpyZW1vdmVFeHRyYVBhcmVudFJlZmVyZW5jZXMoRE9NRmlsZVBhdGg6OmFwcGVuZChi
YXNlLT5mdWxsUGF0aCgpLCBwYXRoKSk7CisKKyAgICBpZiAoZmxhZ3MgJiYgZmxhZ3MtPmlzQ3Jl
YXRlKCkpCisgICAgICAgIG1fYXN5bmNGaWxlU3lzdGVtLT5jcmVhdGVEaXJlY3RvcnkoYWJzb2x1
dGVQYXRoLCBmbGFncy0+aXNFeGNsdXNpdmUoKSwgbmV3IEVudHJ5Q2FsbGJhY2tzKHN1Y2Nlc3ND
YWxsYmFjaywgZXJyb3JDYWxsYmFjaywgdGhpcywgYWJzb2x1dGVQYXRoLCB0cnVlKSk7CisgICAg
ZWxzZQorICAgICAgICBtX2FzeW5jRmlsZVN5c3RlbS0+ZGlyZWN0b3J5RXhpc3RzKGFic29sdXRl
UGF0aCwgbmV3IEVudHJ5Q2FsbGJhY2tzKHN1Y2Nlc3NDYWxsYmFjaywgZXJyb3JDYWxsYmFjaywg
dGhpcywgYWJzb2x1dGVQYXRoLCB0cnVlKSk7Cit9CisKK3ZvaWQgRE9NRmlsZVN5c3RlbTo6cmVh
ZERpcmVjdG9yeShjb25zdCBTdHJpbmcmIHBhdGgsIFBhc3NSZWZQdHI8RW50cmllc0NhbGxiYWNr
PiBzdWNjZXNzQ2FsbGJhY2ssIFBhc3NSZWZQdHI8RXJyb3JDYWxsYmFjaz4gZXJyb3JDYWxsYmFj
aykKK3sKKyAgICBtX2FzeW5jRmlsZVN5c3RlbS0+cmVhZERpcmVjdG9yeShwYXRoLCBuZXcgRW50
cmllc0NhbGxiYWNrcyhzdWNjZXNzQ2FsbGJhY2ssIGVycm9yQ2FsbGJhY2ssIHRoaXMsIHBhdGgp
KTsKK30KKwogfSAvLyBuYW1lc3BhY2UKIAogI2VuZGlmIC8vIEVOQUJMRShGSUxFX1NZU1RFTSkK
ZGlmZiAtLWdpdCBhL1dlYkNvcmUvc3RvcmFnZS9ET01GaWxlU3lzdGVtLmggYi9XZWJDb3JlL3N0
b3JhZ2UvRE9NRmlsZVN5c3RlbS5oCmluZGV4IDMzN2JlYTljYmVlYzBiN2ZlMjNiOTQ1YjM5M2E1
MzQ3MGQ5NDUyZjMuLjcyNjYyY2I5MDQ1MzU5N2RlYmViYTkzYWU2YmE2YmRiZjZlY2I3MTMgMTAw
NjQ0Ci0tLSBhL1dlYkNvcmUvc3RvcmFnZS9ET01GaWxlU3lzdGVtLmgKKysrIGIvV2ViQ29yZS9z
dG9yYWdlL0RPTUZpbGVTeXN0ZW0uaApAQCAtMzcsMTMgKzM3LDE5IEBACiAjaW5jbHVkZSAiQXN5
bmNGaWxlU3lzdGVtLmgiCiAjaW5jbHVkZSAiRmxhZ3MuaCIKICNpbmNsdWRlICJQbGF0Zm9ybVN0
cmluZy5oIgorI2luY2x1ZGUgIlNjcmlwdEV4ZWN1dGlvbkNvbnRleHQuaCIKICNpbmNsdWRlIDx3
dGYvUGFzc1JlZlB0ci5oPgogI2luY2x1ZGUgPHd0Zi9SZWZDb3VudGVkLmg+CiAKIG5hbWVzcGFj
ZSBXZWJDb3JlIHsKIAogY2xhc3MgRGlyZWN0b3J5RW50cnk7Ci1jbGFzcyBTY3JpcHRFeGVjdXRp
b25Db250ZXh0OworY2xhc3MgRW50cnk7CitjbGFzcyBFbnRyeUNhbGxiYWNrOworY2xhc3MgRW50
cmllc0NhbGxiYWNrOworY2xhc3MgRXJyb3JDYWxsYmFjazsKK2NsYXNzIE1ldGFkYXRhQ2FsbGJh
Y2s7CitjbGFzcyBWb2lkQ2FsbGJhY2s7CiAKIGNsYXNzIERPTUZpbGVTeXN0ZW0gOiBwdWJsaWMg
UmVmQ291bnRlZDxET01GaWxlU3lzdGVtPiwgcHVibGljIEFjdGl2ZURPTU9iamVjdCB7CiBwdWJs
aWM6CkBAIC02Miw2ICs2OCw0NCBAQCBwdWJsaWM6CiAgICAgdmlydHVhbCBib29sIGhhc1BlbmRp
bmdBY3Rpdml0eSgpIGNvbnN0OwogICAgIHZpcnR1YWwgdm9pZCBjb250ZXh0RGVzdHJveWVkKCk7
CiAKKyAgICAvLyBBY3R1YWwgRmlsZVN5c3RlbSBBUEkgaW1wbGVtZW50YXRpb25zLiAgQWxsIHRo
ZSB2YWxpZGl0eSBjaGVja3Mgb24gdmlydHVhbCBwYXRocyBhcmUgZG9uZSBhdCBET01GaWxlU3lz
dGVtIGxldmVsLgorICAgIHZvaWQgZ2V0TWV0YWRhdGEoY29uc3QgRW50cnkqIGVudHJ5LCBQYXNz
UmVmUHRyPE1ldGFkYXRhQ2FsbGJhY2s+IHN1Y2Nlc3NDYWxsYmFjaywgUGFzc1JlZlB0cjxFcnJv
ckNhbGxiYWNrPiBlcnJvckNhbGxiYWNrKTsKKyAgICB2b2lkIG1vdmUoY29uc3QgRW50cnkqIHNy
YywgUGFzc1JlZlB0cjxFbnRyeT4gcGFyZW50LCBjb25zdCBTdHJpbmcmIG5hbWUsIFBhc3NSZWZQ
dHI8RW50cnlDYWxsYmFjaz4sIFBhc3NSZWZQdHI8RXJyb3JDYWxsYmFjaz4pOworICAgIHZvaWQg
Y29weShjb25zdCBFbnRyeSogc3JjLCBQYXNzUmVmUHRyPEVudHJ5PiBwYXJlbnQsIGNvbnN0IFN0
cmluZyYgbmFtZSwgUGFzc1JlZlB0cjxFbnRyeUNhbGxiYWNrPiwgUGFzc1JlZlB0cjxFcnJvckNh
bGxiYWNrPik7CisgICAgdm9pZCByZW1vdmUoY29uc3QgRW50cnkqIGVudHJ5LCBQYXNzUmVmUHRy
PFZvaWRDYWxsYmFjaz4sIFBhc3NSZWZQdHI8RXJyb3JDYWxsYmFjaz4pOworICAgIHZvaWQgZ2V0
UGFyZW50KGNvbnN0IEVudHJ5KiBlbnRyeSwgUGFzc1JlZlB0cjxFbnRyeUNhbGxiYWNrPiwgUGFz
c1JlZlB0cjxFcnJvckNhbGxiYWNrPik7CisgICAgdm9pZCBnZXRGaWxlKGNvbnN0IEVudHJ5KiBi
YXNlLCBjb25zdCBTdHJpbmcmIHBhdGgsIFBhc3NSZWZQdHI8RmxhZ3M+LCBQYXNzUmVmUHRyPEVu
dHJ5Q2FsbGJhY2s+LCBQYXNzUmVmUHRyPEVycm9yQ2FsbGJhY2s+KTsKKyAgICB2b2lkIGdldERp
cmVjdG9yeShjb25zdCBFbnRyeSogYmFzZSwgY29uc3QgU3RyaW5nJiBwYXRoLCBQYXNzUmVmUHRy
PEZsYWdzPiwgUGFzc1JlZlB0cjxFbnRyeUNhbGxiYWNrPiwgUGFzc1JlZlB0cjxFcnJvckNhbGxi
YWNrPik7CisgICAgdm9pZCByZWFkRGlyZWN0b3J5KGNvbnN0IFN0cmluZyYgcGF0aCwgUGFzc1Jl
ZlB0cjxFbnRyaWVzQ2FsbGJhY2s+LCBQYXNzUmVmUHRyPEVycm9yQ2FsbGJhY2s+KTsKKworICAg
IC8vIEEgaGVscGVyIHRlbXBsYXRlIHRvIHNjaGVkdWxlIGEgY2FsbGJhY2sgdGFzay4KKyAgICB0
ZW1wbGF0ZSA8dHlwZW5hbWUgQ0IsIHR5cGVuYW1lIENCQXJnPgorICAgIGNsYXNzIERpc3BhdGNo
Q2FsbGJhY2tUYXNrIDogcHVibGljIFNjcmlwdEV4ZWN1dGlvbkNvbnRleHQ6OlRhc2sgeworICAg
IHB1YmxpYzoKKyAgICAgICAgRGlzcGF0Y2hDYWxsYmFja1Rhc2soUGFzc1JlZlB0cjxDQj4gY2Fs
bGJhY2ssIFBhc3NSZWZQdHI8Q0JBcmc+IGFyZykKKyAgICAgICAgICAgIDogbV9jYWxsYmFjayhj
YWxsYmFjaykKKyAgICAgICAgICAgICwgbV9jYWxsYmFja0FyZyhhcmcpCisgICAgICAgIHsKKyAg
ICAgICAgfQorCisgICAgICAgIHZpcnR1YWwgdm9pZCBwZXJmb3JtVGFzayhTY3JpcHRFeGVjdXRp
b25Db250ZXh0KikKKyAgICAgICAgeworICAgICAgICAgICAgbV9jYWxsYmFjay0+aGFuZGxlRXZl
bnQobV9jYWxsYmFja0FyZy5nZXQoKSk7CisgICAgICAgIH0KKworICAgIHByaXZhdGU6CisgICAg
ICAgIFJlZlB0cjxDQj4gbV9jYWxsYmFjazsKKyAgICAgICAgUmVmUHRyPENCQXJnPiBtX2NhbGxi
YWNrQXJnOworICAgIH07CisKKyAgICAvLyBTY2hlZHVsZSBhIGNhbGxiYWNrLiBUaGlzIHNob3Vs
ZCBub3QgY3Jvc3MgdGhyZWFkcyAoc2hvdWxkIGJlIGNhbGxlZCBvbiB0aGUgc2FtZSBjb250ZXh0
IHRocmVhZCkuCisgICAgdGVtcGxhdGUgPHR5cGVuYW1lIENCLCB0eXBlbmFtZSBDQkFyZz4KKyAg
ICBzdGF0aWMgdm9pZCBzY2hlZHVsZUNhbGxiYWNrKFNjcmlwdEV4ZWN1dGlvbkNvbnRleHQqIHNj
cmlwdEV4ZWN1dGlvbkNvbnRleHQsIFBhc3NSZWZQdHI8Q0I+IGNhbGxiYWNrLCBQYXNzUmVmUHRy
PENCQXJnPiBhcmcpCisgICAgeworICAgICAgICBBU1NFUlQoc2NyaXB0RXhlY3V0aW9uQ29udGV4
dC0+aXNDb250ZXh0VGhyZWFkKCkpOworICAgICAgICBzY3JpcHRFeGVjdXRpb25Db250ZXh0LT5w
b3N0VGFzayhuZXcgRGlzcGF0Y2hDYWxsYmFja1Rhc2s8Q0IsIENCQXJnPihjYWxsYmFjaywgYXJn
KSk7CisgICAgfQorCiBwcml2YXRlOgogICAgIERPTUZpbGVTeXN0ZW0oU2NyaXB0RXhlY3V0aW9u
Q29udGV4dCosIGNvbnN0IFN0cmluZyYgbmFtZSwgUGFzc093blB0cjxBc3luY0ZpbGVTeXN0ZW0+
KTsKIApkaWZmIC0tZ2l0IGEvV2ViQ29yZS9zdG9yYWdlL0RpcmVjdG9yeUVudHJ5LmNwcCBiL1dl
YkNvcmUvc3RvcmFnZS9EaXJlY3RvcnlFbnRyeS5jcHAKaW5kZXggNjBkY2FjZTRkMDZlNjZmZGIw
NzlkMWQ5MmI4ZjA3ZGU1MGMzZWM2Mi4uZjU0YTQ0ZGQ4ZDY0MjM3ZDMxMTQxZDgyZDQ2M2YyZmM0
M2ZkYzdmOCAxMDA2NDQKLS0tIGEvV2ViQ29yZS9zdG9yYWdlL0RpcmVjdG9yeUVudHJ5LmNwcAor
KysgYi9XZWJDb3JlL3N0b3JhZ2UvRGlyZWN0b3J5RW50cnkuY3BwCkBAIC00OSwxNiArNDksMTQg
QEAgUGFzc1JlZlB0cjxEaXJlY3RvcnlSZWFkZXI+IERpcmVjdG9yeUVudHJ5OjpjcmVhdGVSZWFk
ZXIoKQogICAgIHJldHVybiBEaXJlY3RvcnlSZWFkZXI6OmNyZWF0ZShtX2ZpbGVTeXN0ZW0sIG1f
ZnVsbFBhdGgpOwogfQogCi12b2lkIERpcmVjdG9yeUVudHJ5OjpnZXRGaWxlKGNvbnN0IFN0cmlu
ZyYsIFBhc3NSZWZQdHI8RmxhZ3M+LCBQYXNzUmVmUHRyPEVudHJ5Q2FsbGJhY2s+LCBQYXNzUmVm
UHRyPEVycm9yQ2FsbGJhY2s+KQordm9pZCBEaXJlY3RvcnlFbnRyeTo6Z2V0RmlsZShjb25zdCBT
dHJpbmcmIHBhdGgsIFBhc3NSZWZQdHI8RmxhZ3M+IGZsYWdzLCBQYXNzUmVmUHRyPEVudHJ5Q2Fs
bGJhY2s+IHN1Y2Nlc3NDYWxsYmFjaywgUGFzc1JlZlB0cjxFcnJvckNhbGxiYWNrPiBlcnJvckNh
bGxiYWNrKQogewotICAgIC8vIEZJWE1FOiB0byBiZSBpbXBsZW1lbnRlZC4KLSAgICBBU1NFUlRf
Tk9UX1JFQUNIRUQoKTsKKyAgICBtX2ZpbGVTeXN0ZW0tPmdldEZpbGUodGhpcywgcGF0aCwgZmxh
Z3MsIHN1Y2Nlc3NDYWxsYmFjaywgZXJyb3JDYWxsYmFjayk7CiB9CiAKLXZvaWQgRGlyZWN0b3J5
RW50cnk6OmdldERpcmVjdG9yeShjb25zdCBTdHJpbmcmLCBQYXNzUmVmUHRyPEZsYWdzPiwgUGFz
c1JlZlB0cjxFbnRyeUNhbGxiYWNrPiwgUGFzc1JlZlB0cjxFcnJvckNhbGxiYWNrPikKK3ZvaWQg
RGlyZWN0b3J5RW50cnk6OmdldERpcmVjdG9yeShjb25zdCBTdHJpbmcmIHBhdGgsIFBhc3NSZWZQ
dHI8RmxhZ3M+IGZsYWdzLCBQYXNzUmVmUHRyPEVudHJ5Q2FsbGJhY2s+IHN1Y2Nlc3NDYWxsYmFj
aywgUGFzc1JlZlB0cjxFcnJvckNhbGxiYWNrPiBlcnJvckNhbGxiYWNrKQogewotICAgIC8vIEZJ
WE1FOiB0byBiZSBpbXBsZW1lbnRlZC4KLSAgICBBU1NFUlRfTk9UX1JFQUNIRUQoKTsKKyAgICBt
X2ZpbGVTeXN0ZW0tPmdldERpcmVjdG9yeSh0aGlzLCBwYXRoLCBmbGFncywgc3VjY2Vzc0NhbGxi
YWNrLCBlcnJvckNhbGxiYWNrKTsKIH0KIAogfSAvLyBuYW1lc3BhY2UKZGlmZiAtLWdpdCBhL1dl
YkNvcmUvc3RvcmFnZS9EaXJlY3RvcnlSZWFkZXIuY3BwIGIvV2ViQ29yZS9zdG9yYWdlL0RpcmVj
dG9yeVJlYWRlci5jcHAKaW5kZXggMGIzMGY3MDUzMTRjOGZkOTI3NjU5MmI5NzBhYjY4MDc2NjQx
NjRlNS4uYjBlZWYxY2M0OTI3NmYzM2M3OTQwZTY2OTJjYTJmNWQ2MDBmMDUxNSAxMDA2NDQKLS0t
IGEvV2ViQ29yZS9zdG9yYWdlL0RpcmVjdG9yeVJlYWRlci5jcHAKKysrIGIvV2ViQ29yZS9zdG9y
YWdlL0RpcmVjdG9yeVJlYWRlci5jcHAKQEAgLTM5LDE2ICszOSwxNSBAQAogCiBuYW1lc3BhY2Ug
V2ViQ29yZSB7CiAKLURpcmVjdG9yeVJlYWRlcjo6RGlyZWN0b3J5UmVhZGVyKFBhc3NSZWZQdHI8
RE9NRmlsZVN5c3RlbT4gZmlsZVN5c3RlbSwgY29uc3QgU3RyaW5nJiBwYXRoKQorRGlyZWN0b3J5
UmVhZGVyOjpEaXJlY3RvcnlSZWFkZXIoUGFzc1JlZlB0cjxET01GaWxlU3lzdGVtPiBmaWxlU3lz
dGVtLCBjb25zdCBTdHJpbmcmIGZ1bGxQYXRoKQogICAgIDogbV9maWxlU3lzdGVtKGZpbGVTeXN0
ZW0pCi0gICAgLCBtX3BhdGgocGF0aCkKKyAgICAsIG1fZnVsbFBhdGgoZnVsbFBhdGgpCiB7CiB9
CiAKLXZvaWQgRGlyZWN0b3J5UmVhZGVyOjpyZWFkRW50cmllcyhQYXNzUmVmUHRyPEVudHJpZXND
YWxsYmFjaz4sIFBhc3NSZWZQdHI8RXJyb3JDYWxsYmFjaz4pCit2b2lkIERpcmVjdG9yeVJlYWRl
cjo6cmVhZEVudHJpZXMoUGFzc1JlZlB0cjxFbnRyaWVzQ2FsbGJhY2s+IGVudHJpZXNDYWxsYmFj
aywgUGFzc1JlZlB0cjxFcnJvckNhbGxiYWNrPiBlcnJvckNhbGxiYWNrKQogewotICAgIC8vIEZJ
WE1FOiB0byBiZSBpbXBsZW1lbnRlZC4KLSAgICBBU1NFUlRfTk9UX1JFQUNIRUQoKTsKKyAgICBt
X2ZpbGVTeXN0ZW0tPnJlYWREaXJlY3RvcnkobV9mdWxsUGF0aCwgZW50cmllc0NhbGxiYWNrLCBl
cnJvckNhbGxiYWNrKTsKIH0KIAogfSAvLyBuYW1lc3BhY2UKZGlmZiAtLWdpdCBhL1dlYkNvcmUv
c3RvcmFnZS9EaXJlY3RvcnlSZWFkZXIuaCBiL1dlYkNvcmUvc3RvcmFnZS9EaXJlY3RvcnlSZWFk
ZXIuaAppbmRleCBjZjVkYThmM2RjNzVmNDMwZTNlNjQ2Yzg5MmU3NTY2NWQxZDQ1MTcwLi4wZTJl
ZjBmNmNkMjI5Y2RkNGQ5NTdlMWVmNWIyNzRhNThjNjM5MWQwIDEwMDY0NAotLS0gYS9XZWJDb3Jl
L3N0b3JhZ2UvRGlyZWN0b3J5UmVhZGVyLmgKKysrIGIvV2ViQ29yZS9zdG9yYWdlL0RpcmVjdG9y
eVJlYWRlci5oCkBAIC01Niw3ICs1Niw3IEBAIHByaXZhdGU6CiAgICAgRGlyZWN0b3J5UmVhZGVy
KFBhc3NSZWZQdHI8RE9NRmlsZVN5c3RlbT4gZmlsZVN5c3RlbSwgY29uc3QgU3RyaW5nJiBwYXRo
KTsKIAogICAgIFJlZlB0cjxET01GaWxlU3lzdGVtPiBtX2ZpbGVTeXN0ZW07Ci0gICAgU3RyaW5n
IG1fcGF0aDsKKyAgICBTdHJpbmcgbV9mdWxsUGF0aDsKIH07CiAKIH0gLy8gbmFtZXNwYWNlCmRp
ZmYgLS1naXQgYS9XZWJDb3JlL3N0b3JhZ2UvRW50cnkuY3BwIGIvV2ViQ29yZS9zdG9yYWdlL0Vu
dHJ5LmNwcAppbmRleCA2NzgzMjkxMzk4YTllZWY3NzBmOTU0MDdiOTFiOWM3ZDdlMTRmZjMwLi4x
NWY3MzQ3ZTE5ODIwODRjZWJkMmEyNzEwYTlhMmMzZDM5NzVhZjI1IDEwMDY0NAotLS0gYS9XZWJD
b3JlL3N0b3JhZ2UvRW50cnkuY3BwCisrKyBiL1dlYkNvcmUvc3RvcmFnZS9FbnRyeS5jcHAKQEAg
LTMyLDkgKzMyLDExIEBACiAKICNpZiBFTkFCTEUoRklMRV9TWVNURU0pCiAKKyNpbmNsdWRlICJE
T01GaWxlUGF0aC5oIgogI2luY2x1ZGUgIkRPTUZpbGVTeXN0ZW0uaCIKICNpbmNsdWRlICJFbnRy
eUNhbGxiYWNrLmgiCiAjaW5jbHVkZSAiRXJyb3JDYWxsYmFjay5oIgorI2luY2x1ZGUgIkZpbGVF
cnJvci5oIgogI2luY2x1ZGUgIk1ldGFkYXRhQ2FsbGJhY2suaCIKICNpbmNsdWRlICJWb2lkQ2Fs
bGJhY2suaCIKIApAQCAtNTEsMzQgKzUzLDI5IEBAIEVudHJ5OjpFbnRyeShQYXNzUmVmUHRyPERP
TUZpbGVTeXN0ZW0+IGZpbGVTeXN0ZW0sIGNvbnN0IFN0cmluZyYgZnVsbFBhdGgpCiAgICAgICAg
IG1fbmFtZSA9IGZ1bGxQYXRoOwogfQogCi12b2lkIEVudHJ5OjpnZXRNZXRhZGF0YShQYXNzUmVm
UHRyPE1ldGFkYXRhQ2FsbGJhY2s+LCBQYXNzUmVmUHRyPEVycm9yQ2FsbGJhY2s+KQordm9pZCBF
bnRyeTo6Z2V0TWV0YWRhdGEoUGFzc1JlZlB0cjxNZXRhZGF0YUNhbGxiYWNrPiBzdWNjZXNzQ2Fs
bGJhY2ssIFBhc3NSZWZQdHI8RXJyb3JDYWxsYmFjaz4gZXJyb3JDYWxsYmFjaykKIHsKLSAgICAv
LyBGSVhNRTogdG8gYmUgaW1wbGVtZW50ZWQuCi0gICAgQVNTRVJUX05PVF9SRUFDSEVEKCk7Cisg
ICAgbV9maWxlU3lzdGVtLT5nZXRNZXRhZGF0YSh0aGlzLCBzdWNjZXNzQ2FsbGJhY2ssIGVycm9y
Q2FsbGJhY2spOwogfQogCi12b2lkIEVudHJ5Ojptb3ZlVG8oUGFzc1JlZlB0cjxFbnRyeT4sIGNv
bnN0IFN0cmluZyYsIFBhc3NSZWZQdHI8RW50cnlDYWxsYmFjaz4sIFBhc3NSZWZQdHI8RXJyb3JD
YWxsYmFjaz4pCit2b2lkIEVudHJ5Ojptb3ZlVG8oUGFzc1JlZlB0cjxFbnRyeT4gcGFyZW50LCBj
b25zdCBTdHJpbmcmIG5hbWUsIFBhc3NSZWZQdHI8RW50cnlDYWxsYmFjaz4gc3VjY2Vzc0NhbGxi
YWNrLCBQYXNzUmVmUHRyPEVycm9yQ2FsbGJhY2s+IGVycm9yQ2FsbGJhY2spIGNvbnN0CiB7Ci0g
ICAgLy8gRklYTUU6IHRvIGJlIGltcGxlbWVudGVkLgotICAgIEFTU0VSVF9OT1RfUkVBQ0hFRCgp
OworICAgIG1fZmlsZVN5c3RlbS0+bW92ZSh0aGlzLCBwYXJlbnQsIG5hbWUsIHN1Y2Nlc3NDYWxs
YmFjaywgZXJyb3JDYWxsYmFjayk7CiB9CiAKLXZvaWQgRW50cnk6OmNvcHlUbyhQYXNzUmVmUHRy
PEVudHJ5PiwgY29uc3QgU3RyaW5nJiwgUGFzc1JlZlB0cjxFbnRyeUNhbGxiYWNrPiwgUGFzc1Jl
ZlB0cjxFcnJvckNhbGxiYWNrPikKK3ZvaWQgRW50cnk6OmNvcHlUbyhQYXNzUmVmUHRyPEVudHJ5
PiBwYXJlbnQsIGNvbnN0IFN0cmluZyYgbmFtZSwgUGFzc1JlZlB0cjxFbnRyeUNhbGxiYWNrPiBz
dWNjZXNzQ2FsbGJhY2ssIFBhc3NSZWZQdHI8RXJyb3JDYWxsYmFjaz4gZXJyb3JDYWxsYmFjaykg
Y29uc3QKIHsKLSAgICAvLyBGSVhNRTogdG8gYmUgaW1wbGVtZW50ZWQuCi0gICAgQVNTRVJUX05P
VF9SRUFDSEVEKCk7CisgICAgbV9maWxlU3lzdGVtLT5jb3B5KHRoaXMsIHBhcmVudCwgbmFtZSwg
c3VjY2Vzc0NhbGxiYWNrLCBlcnJvckNhbGxiYWNrKTsKIH0KIAotdm9pZCBFbnRyeTo6cmVtb3Zl
KFBhc3NSZWZQdHI8Vm9pZENhbGxiYWNrPiwgUGFzc1JlZlB0cjxFcnJvckNhbGxiYWNrPikKK3Zv
aWQgRW50cnk6OnJlbW92ZShQYXNzUmVmUHRyPFZvaWRDYWxsYmFjaz4gc3VjY2Vzc0NhbGxiYWNr
LCBQYXNzUmVmUHRyPEVycm9yQ2FsbGJhY2s+IGVycm9yQ2FsbGJhY2spIGNvbnN0CiB7Ci0gICAg
Ly8gRklYTUU6IHRvIGJlIGltcGxlbWVudGVkLgotICAgIEFTU0VSVF9OT1RfUkVBQ0hFRCgpOwor
ICAgIG1fZmlsZVN5c3RlbS0+cmVtb3ZlKHRoaXMsIHN1Y2Nlc3NDYWxsYmFjaywgZXJyb3JDYWxs
YmFjayk7CiB9CiAKLXZvaWQgRW50cnk6OmdldFBhcmVudChQYXNzUmVmUHRyPEVudHJ5Q2FsbGJh
Y2s+LCBQYXNzUmVmUHRyPEVycm9yQ2FsbGJhY2s+KQordm9pZCBFbnRyeTo6Z2V0UGFyZW50KFBh
c3NSZWZQdHI8RW50cnlDYWxsYmFjaz4gc3VjY2Vzc0NhbGxiYWNrLCBQYXNzUmVmUHRyPEVycm9y
Q2FsbGJhY2s+IGVycm9yQ2FsbGJhY2spIGNvbnN0CiB7Ci0gICAgLy8gRklYTUU6IHRvIGJlIGlt
cGxlbWVudGVkLgotICAgIEFTU0VSVF9OT1RfUkVBQ0hFRCgpOworICAgIG1fZmlsZVN5c3RlbS0+
Z2V0UGFyZW50KHRoaXMsIHN1Y2Nlc3NDYWxsYmFjaywgZXJyb3JDYWxsYmFjayk7CiB9CiAKIFN0
cmluZyBFbnRyeTo6dG9VUkkoY29uc3QgU3RyaW5nJikKZGlmZiAtLWdpdCBhL1dlYkNvcmUvc3Rv
cmFnZS9FbnRyeS5oIGIvV2ViQ29yZS9zdG9yYWdlL0VudHJ5LmgKaW5kZXggN2JiYjI2NTc0YWIx
MTcwMDZhMjEyMThkNWVmNWMwNDhjMjY4YzMxYi4uNjRkYmFmZDEyYzc0Yzc5N2EwMzdkZTYwOWZh
YWZhMzc2ZTg3ZTg0MSAxMDA2NDQKLS0tIGEvV2ViQ29yZS9zdG9yYWdlL0VudHJ5LmgKKysrIGIv
V2ViQ29yZS9zdG9yYWdlL0VudHJ5LmgKQEAgLTU3LDExICs1NywxMCBAQCBwdWJsaWM6CiAgICAg
RE9NRmlsZVN5c3RlbSogZmlsZXN5c3RlbSgpIGNvbnN0IHsgcmV0dXJuIG1fZmlsZVN5c3RlbS5n
ZXQoKTsgfQogCiAgICAgdmlydHVhbCB2b2lkIGdldE1ldGFkYXRhKFBhc3NSZWZQdHI8TWV0YWRh
dGFDYWxsYmFjaz4gc3VjY2Vzc0NhbGxiYWNrID0gMCwgUGFzc1JlZlB0cjxFcnJvckNhbGxiYWNr
PiBlcnJvckNhbGxiYWNrID0gMCk7Ci0KLSAgICB2aXJ0dWFsIHZvaWQgbW92ZVRvKFBhc3NSZWZQ
dHI8RW50cnk+IHBhcmVudCwgY29uc3QgU3RyaW5nJiBuYW1lID0gU3RyaW5nKCksIFBhc3NSZWZQ
dHI8RW50cnlDYWxsYmFjaz4gc3VjY2Vzc0NhbGxiYWNrID0gMCwgUGFzc1JlZlB0cjxFcnJvckNh
bGxiYWNrPiBlcnJvckNhbGxiYWNrID0gMCk7Ci0gICAgdmlydHVhbCB2b2lkIGNvcHlUbyhQYXNz
UmVmUHRyPEVudHJ5PiBwYXJlbnQsIGNvbnN0IFN0cmluZyYgbmFtZSA9IFN0cmluZygpLCBQYXNz
UmVmUHRyPEVudHJ5Q2FsbGJhY2s+IHN1Y2Nlc3NDYWxsYmFjayA9IDAsIFBhc3NSZWZQdHI8RXJy
b3JDYWxsYmFjaz4gZXJyb3JDYWxsYmFjayA9IDApOwotICAgIHZpcnR1YWwgdm9pZCByZW1vdmUo
UGFzc1JlZlB0cjxWb2lkQ2FsbGJhY2s+IHN1Y2Nlc3NDYWxsYmFjayA9IDAsIFBhc3NSZWZQdHI8
RXJyb3JDYWxsYmFjaz4gZXJyb3JDYWxsYmFjayA9IDApOwotICAgIHZpcnR1YWwgdm9pZCBnZXRQ
YXJlbnQoUGFzc1JlZlB0cjxFbnRyeUNhbGxiYWNrPiBzdWNjZXNzQ2FsbGJhY2sgPSAwLCBQYXNz
UmVmUHRyPEVycm9yQ2FsbGJhY2s+IGVycm9yQ2FsbGJhY2sgPSAwKTsKKyAgICB2aXJ0dWFsIHZv
aWQgbW92ZVRvKFBhc3NSZWZQdHI8RW50cnk+IHBhcmVudCwgY29uc3QgU3RyaW5nJiBuYW1lID0g
U3RyaW5nKCksIFBhc3NSZWZQdHI8RW50cnlDYWxsYmFjaz4gc3VjY2Vzc0NhbGxiYWNrID0gMCwg
UGFzc1JlZlB0cjxFcnJvckNhbGxiYWNrPiBlcnJvckNhbGxiYWNrID0gMCkgY29uc3Q7CisgICAg
dmlydHVhbCB2b2lkIGNvcHlUbyhQYXNzUmVmUHRyPEVudHJ5PiBwYXJlbnQsIGNvbnN0IFN0cmlu
ZyYgbmFtZSA9IFN0cmluZygpLCBQYXNzUmVmUHRyPEVudHJ5Q2FsbGJhY2s+IHN1Y2Nlc3NDYWxs
YmFjayA9IDAsIFBhc3NSZWZQdHI8RXJyb3JDYWxsYmFjaz4gZXJyb3JDYWxsYmFjayA9IDApIGNv
bnN0OworICAgIHZpcnR1YWwgdm9pZCByZW1vdmUoUGFzc1JlZlB0cjxWb2lkQ2FsbGJhY2s+IHN1
Y2Nlc3NDYWxsYmFjayA9IDAsIFBhc3NSZWZQdHI8RXJyb3JDYWxsYmFjaz4gZXJyb3JDYWxsYmFj
ayA9IDApIGNvbnN0OworICAgIHZpcnR1YWwgdm9pZCBnZXRQYXJlbnQoUGFzc1JlZlB0cjxFbnRy
eUNhbGxiYWNrPiBzdWNjZXNzQ2FsbGJhY2sgPSAwLCBQYXNzUmVmUHRyPEVycm9yQ2FsbGJhY2s+
IGVycm9yQ2FsbGJhY2sgPSAwKSBjb25zdDsKIAogICAgIHZpcnR1YWwgU3RyaW5nIHRvVVJJKGNv
bnN0IFN0cmluZyYgbWltZVR5cGUgPSBTdHJpbmcoKSk7CiAKQEAgLTY5LDcgKzY4LDcgQEAgcHJv
dGVjdGVkOgogICAgIEVudHJ5KFBhc3NSZWZQdHI8RE9NRmlsZVN5c3RlbT4gZmlsZVN5c3RlbSwg
Y29uc3QgU3RyaW5nJiBmdWxsUGF0aCk7CiAKICAgICBSZWZQdHI8RE9NRmlsZVN5c3RlbT4gbV9m
aWxlU3lzdGVtOwotICAgIFN0cmluZyBtX2Z1bGxQYXRoOyAvLyB2aXJ0dWFsIHBhdGgKKyAgICBT
dHJpbmcgbV9mdWxsUGF0aDsKICAgICBTdHJpbmcgbV9uYW1lOwogfTsKIApkaWZmIC0tZ2l0IGEv
V2ViQ29yZS9zdG9yYWdlL0ZpbGVFbnRyeS5oIGIvV2ViQ29yZS9zdG9yYWdlL0ZpbGVFbnRyeS5o
CmluZGV4IGIwMmI1YzcwNDlhZjM3NjVjMmVkOWVmZmUzMTM1ZDYxOGNjMTMzN2YuLmFlZWI3NGE2
MmY1MTk2MzI2YmNlOGIyMmNmMzc4OGEzNmE1MjU0OGQgMTAwNjQ0Ci0tLSBhL1dlYkNvcmUvc3Rv
cmFnZS9GaWxlRW50cnkuaAorKysgYi9XZWJDb3JlL3N0b3JhZ2UvRmlsZUVudHJ5LmgKQEAgLTM0
LDkgKzM0LDYgQEAKICNpZiBFTkFCTEUoRklMRV9TWVNURU0pCiAKICNpbmNsdWRlICJFbnRyeS5o
IgotI2luY2x1ZGUgIlBsYXRmb3JtU3RyaW5nLmgiCi0jaW5jbHVkZSA8d3RmL1Bhc3NSZWZQdHIu
aD4KLSNpbmNsdWRlIDx3dGYvUmVmQ291bnRlZC5oPgogCiBuYW1lc3BhY2UgV2ViQ29yZSB7CiAK
ZGlmZiAtLWdpdCBhL1dlYkNvcmUvc3RvcmFnZS9GaWxlU3lzdGVtQ2FsbGJhY2tzLmNwcCBiL1dl
YkNvcmUvc3RvcmFnZS9GaWxlU3lzdGVtQ2FsbGJhY2tzLmNwcAppbmRleCAxZGQ5NzI1Mjc1N2M5
ZGQ3NDljZWM5NWNjNDgxNmQ2NjdiZmNiMzU2Li44Zjc4NWM4YTg2NDk1Y2VmZWUxZmJmOGYyZDc0
OGU0YjY1OTA1MzM0IDEwMDY0NAotLS0gYS9XZWJDb3JlL3N0b3JhZ2UvRmlsZVN5c3RlbUNhbGxi
YWNrcy5jcHAKKysrIGIvV2ViQ29yZS9zdG9yYWdlL0ZpbGVTeXN0ZW1DYWxsYmFja3MuY3BwCkBA
IC0zNCw2ICszNCw3IEBACiAjaWYgRU5BQkxFKEZJTEVfU1lTVEVNKQogCiAjaW5jbHVkZSAiQXN5
bmNGaWxlU3lzdGVtLmgiCisjaW5jbHVkZSAiRE9NRmlsZVBhdGguaCIKICNpbmNsdWRlICJET01G
aWxlU3lzdGVtLmgiCiAjaW5jbHVkZSAiRGlyZWN0b3J5RW50cnkuaCIKICNpbmNsdWRlICJFbnRy
aWVzQ2FsbGJhY2suaCIKQEAgLTUxLDggKzUyLDEwIEBACiAKIG5hbWVzcGFjZSBXZWJDb3JlIHsK
IAotRmlsZVN5c3RlbUNhbGxiYWNrc0Jhc2U6OkZpbGVTeXN0ZW1DYWxsYmFja3NCYXNlKFBhc3NS
ZWZQdHI8RXJyb3JDYWxsYmFjaz4gZXJyb3JDYWxsYmFjaykKK0ZpbGVTeXN0ZW1DYWxsYmFja3NC
YXNlOjpGaWxlU3lzdGVtQ2FsbGJhY2tzQmFzZShQYXNzUmVmUHRyPEVycm9yQ2FsbGJhY2s+IGVy
cm9yQ2FsbGJhY2ssIFNjcmlwdEV4ZWN1dGlvbkNvbnRleHQqIHNjcmlwdEV4ZWN1dGlvbkNvbnRl
eHQsIGJvb2wgZmlyZUltbWVkaWF0ZSkKICAgICA6IG1fZXJyb3JDYWxsYmFjayhlcnJvckNhbGxi
YWNrKQorICAgICwgbV9zY3JpcHRFeGVjdXRpb25Db250ZXh0KHNjcmlwdEV4ZWN1dGlvbkNvbnRl
eHQpCisgICAgLCBtX2ZpcmVJbW1lZGlhdGUoZmlyZUltbWVkaWF0ZSkKIHsKIH0KIApAQCAtOTIs
MTAgKzk1LDcgQEAgdm9pZCBGaWxlU3lzdGVtQ2FsbGJhY2tzQmFzZTo6ZGlkUmVhZERpcmVjdG9y
eUVudHJ5KGNvbnN0IFN0cmluZyYsIGJvb2wpCiAKIHZvaWQgRmlsZVN5c3RlbUNhbGxiYWNrc0Jh
c2U6OmRpZEZhaWwoaW50IGNvZGUpCiB7Ci0gICAgaWYgKG1fZXJyb3JDYWxsYmFjaykgewotICAg
ICAgICBtX2Vycm9yQ2FsbGJhY2stPmhhbmRsZUV2ZW50KEZpbGVFcnJvcjo6Y3JlYXRlKGNvZGUp
LmdldCgpKTsKLSAgICAgICAgbV9lcnJvckNhbGxiYWNrLmNsZWFyKCk7Ci0gICAgfQorICAgIGZp
cmVDYWxsYmFjayhtX2Vycm9yQ2FsbGJhY2sucmVsZWFzZSgpLCBGaWxlRXJyb3I6OmNyZWF0ZShj
b2RlKSk7CiB9CiAKIC8vIEVudHJ5Q2FsbGJhY2tzIC0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t
LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0KQEAgLTEzMiwxNCArMTMyLDE3IEBA
IEVudHJpZXNDYWxsYmFja3M6OkVudHJpZXNDYWxsYmFja3MoUGFzc1JlZlB0cjxFbnRyaWVzQ2Fs
bGJhY2s+IHN1Y2Nlc3NDYWxsYmFjaywKIAogdm9pZCBFbnRyaWVzQ2FsbGJhY2tzOjpkaWRSZWFk
RGlyZWN0b3J5RW50cnkoY29uc3QgU3RyaW5nJiBuYW1lLCBib29sIGlzRGlyZWN0b3J5KQogewor
ICAgIGlmICghbV9lbnRyaWVzKQorICAgICAgICBtX2VudHJpZXMgPSBFbnRyeUFycmF5OjpjcmVh
dGUoKTsKICAgICBpZiAoaXNEaXJlY3RvcnkpCi0gICAgICAgIG1fZW50cmllcy0+YXBwZW5kKERp
cmVjdG9yeUVudHJ5OjpjcmVhdGUobV9maWxlU3lzdGVtLCBtX2Jhc2VQYXRoICsgIi8iICsgbmFt
ZSkpOworICAgICAgICBtX2VudHJpZXMtPmFwcGVuZChEaXJlY3RvcnlFbnRyeTo6Y3JlYXRlKG1f
ZmlsZVN5c3RlbSwgRE9NRmlsZVBhdGg6OmFwcGVuZChtX2Jhc2VQYXRoLCBuYW1lKSkpOwogICAg
IGVsc2UKLSAgICAgICAgbV9lbnRyaWVzLT5hcHBlbmQoRmlsZUVudHJ5OjpjcmVhdGUobV9maWxl
U3lzdGVtLCBtX2Jhc2VQYXRoICsgIi8iICsgbmFtZSkpOworICAgICAgICBtX2VudHJpZXMtPmFw
cGVuZChGaWxlRW50cnk6OmNyZWF0ZShtX2ZpbGVTeXN0ZW0sIERPTUZpbGVQYXRoOjphcHBlbmQo
bV9iYXNlUGF0aCwgbmFtZSkpKTsKIH0KIAogdm9pZCBFbnRyaWVzQ2FsbGJhY2tzOjpkaWRSZWFk
RGlyZWN0b3J5RW50cmllcyhib29sIGhhc01vcmUpCiB7CisgICAgQVNTRVJUKG1fZW50cmllcyk7
CiAgICAgaWYgKG1fc3VjY2Vzc0NhbGxiYWNrKSB7CiAgICAgICAgIG1fc3VjY2Vzc0NhbGxiYWNr
LT5oYW5kbGVFdmVudChtX2VudHJpZXMuZ2V0KCkpOwogICAgICAgICBtX2VudHJpZXMtPmNsZWFy
KCk7CkBAIC0xNTMsMjEgKzE1NiwxNyBAQCB2b2lkIEVudHJpZXNDYWxsYmFja3M6OmRpZFJlYWRE
aXJlY3RvcnlFbnRyaWVzKGJvb2wgaGFzTW9yZSkKIAogLy8gRmlsZVN5c3RlbUNhbGxiYWNrcyAt
LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLQog
Ci1GaWxlU3lzdGVtQ2FsbGJhY2tzOjpGaWxlU3lzdGVtQ2FsbGJhY2tzKFBhc3NSZWZQdHI8Rmls
ZVN5c3RlbUNhbGxiYWNrPiBzdWNjZXNzQ2FsbGJhY2ssIFBhc3NSZWZQdHI8RXJyb3JDYWxsYmFj
az4gZXJyb3JDYWxsYmFjaywgU2NyaXB0RXhlY3V0aW9uQ29udGV4dCogY29udGV4dCkKLSAgICA6
IEZpbGVTeXN0ZW1DYWxsYmFja3NCYXNlKGVycm9yQ2FsbGJhY2spCitGaWxlU3lzdGVtQ2FsbGJh
Y2tzOjpGaWxlU3lzdGVtQ2FsbGJhY2tzKFBhc3NSZWZQdHI8RmlsZVN5c3RlbUNhbGxiYWNrPiBz
dWNjZXNzQ2FsbGJhY2ssIFBhc3NSZWZQdHI8RXJyb3JDYWxsYmFjaz4gZXJyb3JDYWxsYmFjaywg
U2NyaXB0RXhlY3V0aW9uQ29udGV4dCogY29udGV4dCwgYm9vbCBmaXJlSW1tZWRpYXRlKQorICAg
IDogRmlsZVN5c3RlbUNhbGxiYWNrc0Jhc2UoZXJyb3JDYWxsYmFjaywgY29udGV4dCwgZmlyZUlt
bWVkaWF0ZSkKICAgICAsIG1fc3VjY2Vzc0NhbGxiYWNrKHN1Y2Nlc3NDYWxsYmFjaykKLSAgICAs
IG1fc2NyaXB0RXhlY3V0aW9uQ29udGV4dChjb250ZXh0KQorICAgICwgbV9zY3JpcHRFeGVjdXRp
b25Db250ZXh0UmVmKGNvbnRleHQpCiB7CiB9CiAKIHZvaWQgRmlsZVN5c3RlbUNhbGxiYWNrczo6
ZGlkT3BlbkZpbGVTeXN0ZW0oY29uc3QgU3RyaW5nJiBuYW1lLCBQYXNzT3duUHRyPEFzeW5jRmls
ZVN5c3RlbT4gYXN5bmNGaWxlU3lzdGVtKQogewotICAgIGlmIChtX3N1Y2Nlc3NDYWxsYmFjaykg
ewotICAgICAgICBBU1NFUlQoYXN5bmNGaWxlU3lzdGVtKTsKLSAgICAgICAgbV9zdWNjZXNzQ2Fs
bGJhY2stPmhhbmRsZUV2ZW50KERPTUZpbGVTeXN0ZW06OmNyZWF0ZShtX3NjcmlwdEV4ZWN1dGlv
bkNvbnRleHQuZ2V0KCksIG5hbWUsIGFzeW5jRmlsZVN5c3RlbS5sZWFrUHRyKCkpLmdldCgpKTsK
LSAgICAgICAgbV9zY3JpcHRFeGVjdXRpb25Db250ZXh0LmNsZWFyKCk7Ci0gICAgfQotICAgIG1f
c3VjY2Vzc0NhbGxiYWNrLmNsZWFyKCk7CisgICAgQVNTRVJUKGFzeW5jRmlsZVN5c3RlbSk7Cisg
ICAgZmlyZUNhbGxiYWNrKG1fc3VjY2Vzc0NhbGxiYWNrLnJlbGVhc2UoKSwgRE9NRmlsZVN5c3Rl
bTo6Y3JlYXRlKG1fc2NyaXB0RXhlY3V0aW9uQ29udGV4dFJlZi5nZXQoKSwgbmFtZSwgYXN5bmNG
aWxlU3lzdGVtLmxlYWtQdHIoKSkpOwogfQogCiAvLyBNZXRhZGF0YUNhbGxiYWNrcyAtLS0tLS0t
LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tCmRpZmYg
LS1naXQgYS9XZWJDb3JlL3N0b3JhZ2UvRmlsZVN5c3RlbUNhbGxiYWNrcy5oIGIvV2ViQ29yZS9z
dG9yYWdlL0ZpbGVTeXN0ZW1DYWxsYmFja3MuaAppbmRleCAzMWEyYTBjODBhYmVhYmQ2YTVmOWZm
NzA3NzI2MzJhYTRmZjYzNTM1Li5mYmZlOWRjMzA4MWUwZjFjYmI2YzFlMzJjM2NkYjliZDg5NmQ3
NTdhIDEwMDY0NAotLS0gYS9XZWJDb3JlL3N0b3JhZ2UvRmlsZVN5c3RlbUNhbGxiYWNrcy5oCisr
KyBiL1dlYkNvcmUvc3RvcmFnZS9GaWxlU3lzdGVtQ2FsbGJhY2tzLmgKQEAgLTM0LDEzICszNCwx
MyBAQAogI2lmIEVOQUJMRShGSUxFX1NZU1RFTSkKIAogI2luY2x1ZGUgIkFzeW5jRmlsZVN5c3Rl
bUNhbGxiYWNrcy5oIgorI2luY2x1ZGUgIkRPTUZpbGVTeXN0ZW0uaCIKICNpbmNsdWRlICJQbGF0
Zm9ybVN0cmluZy5oIgogI2luY2x1ZGUgPHd0Zi9QYXNzUmVmUHRyLmg+CiAjaW5jbHVkZSA8d3Rm
L1ZlY3Rvci5oPgogCiBuYW1lc3BhY2UgV2ViQ29yZSB7CiAKLWNsYXNzIERPTUZpbGVTeXN0ZW07
CiBjbGFzcyBFcnJvckNhbGxiYWNrOwogY2xhc3MgRW50cmllc0NhbGxiYWNrOwogY2xhc3MgRW50
cnlBcnJheTsKQEAgLTcxLDggKzcxLDI0IEBAIHB1YmxpYzoKICAgICB2aXJ0dWFsIHZvaWQgZGlk
RmFpbChpbnQgY29kZSk7CiAKIHByb3RlY3RlZDoKLSAgICBGaWxlU3lzdGVtQ2FsbGJhY2tzQmFz
ZShQYXNzUmVmUHRyPEVycm9yQ2FsbGJhY2s+IGVycm9yQ2FsbGJhY2spOworICAgIEZpbGVTeXN0
ZW1DYWxsYmFja3NCYXNlKFBhc3NSZWZQdHI8RXJyb3JDYWxsYmFjaz4gZXJyb3JDYWxsYmFjaywg
U2NyaXB0RXhlY3V0aW9uQ29udGV4dCogY29udGV4dCA9IDAsIGJvb2wgZmlyZUltbWVkaWF0ZSA9
IHRydWUpOwogICAgIFJlZlB0cjxFcnJvckNhbGxiYWNrPiBtX2Vycm9yQ2FsbGJhY2s7CisKKyAg
ICAvLyBtX3NjcmlwdEV4ZWN1dGlvbkNvbnRleHQgaXMgdXNlZCBvbmx5IGlmIG1fZmlyZUltbWVk
aWF0ZSBpcyBmYWxzZS4KKyAgICBTY3JpcHRFeGVjdXRpb25Db250ZXh0KiBtX3NjcmlwdEV4ZWN1
dGlvbkNvbnRleHQ7CisgICAgYm9vbCBtX2ZpcmVJbW1lZGlhdGU7CisKKyAgICAvLyBBIGhlbHBl
ciB0ZW1wbGF0ZSB0byBmaXJlIGEgY2FsbGJhY2suIChGb3Igbm93IG9ubHkgRmlsZVN5c3RlbUNh
bGxiYWNrcyBzdXBwb3J0cyBub24taW1tZWRpYXRlIGNhbGxiYWNrLikKKyAgICB0ZW1wbGF0ZSA8
dHlwZW5hbWUgQ0IsIHR5cGVuYW1lIENCQXJnPgorICAgIHZvaWQgZmlyZUNhbGxiYWNrKFBhc3NS
ZWZQdHI8Q0I+IGNhbGxiYWNrLCBQYXNzUmVmUHRyPENCQXJnPiBhcmcpCisgICAgeworICAgICAg
ICBpZiAoIWNhbGxiYWNrKQorICAgICAgICAgICAgcmV0dXJuOworICAgICAgICBpZiAobV9maXJl
SW1tZWRpYXRlKQorICAgICAgICAgICAgY2FsbGJhY2stPmhhbmRsZUV2ZW50KGFyZy5nZXQoKSk7
CisgICAgICAgIGVsc2UKKyAgICAgICAgICAgIERPTUZpbGVTeXN0ZW06OnNjaGVkdWxlQ2FsbGJh
Y2s8Q0I+KG1fc2NyaXB0RXhlY3V0aW9uQ29udGV4dCwgY2FsbGJhY2ssIGFyZyk7CisgICAgfQog
fTsKIAogLy8gU3ViY2xhc3NlcyAtLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t
LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tCkBAIC0xMDQsMTIgKzEyMCwxMiBAQCBwcml2YXRl
OgogCiBjbGFzcyBGaWxlU3lzdGVtQ2FsbGJhY2tzIDogcHVibGljIEZpbGVTeXN0ZW1DYWxsYmFj
a3NCYXNlIHsKIHB1YmxpYzoKLSAgICBGaWxlU3lzdGVtQ2FsbGJhY2tzKFBhc3NSZWZQdHI8Rmls
ZVN5c3RlbUNhbGxiYWNrPiwgUGFzc1JlZlB0cjxFcnJvckNhbGxiYWNrPiwgU2NyaXB0RXhlY3V0
aW9uQ29udGV4dCopOworICAgIEZpbGVTeXN0ZW1DYWxsYmFja3MoUGFzc1JlZlB0cjxGaWxlU3lz
dGVtQ2FsbGJhY2s+LCBQYXNzUmVmUHRyPEVycm9yQ2FsbGJhY2s+LCBTY3JpcHRFeGVjdXRpb25D
b250ZXh0KiwgYm9vbCBmaXJlSW1tZWRpYXRlID0gdHJ1ZSk7CiAgICAgdmlydHVhbCB2b2lkIGRp
ZE9wZW5GaWxlU3lzdGVtKGNvbnN0IFN0cmluZyYgbmFtZSwgUGFzc093blB0cjxBc3luY0ZpbGVT
eXN0ZW0+KTsKIAogcHJpdmF0ZToKICAgICBSZWZQdHI8RmlsZVN5c3RlbUNhbGxiYWNrPiBtX3N1
Y2Nlc3NDYWxsYmFjazsKLSAgICBSZWZQdHI8U2NyaXB0RXhlY3V0aW9uQ29udGV4dD4gbV9zY3Jp
cHRFeGVjdXRpb25Db250ZXh0OworICAgIFJlZlB0cjxTY3JpcHRFeGVjdXRpb25Db250ZXh0PiBt
X3NjcmlwdEV4ZWN1dGlvbkNvbnRleHRSZWY7CiB9OwogCiBjbGFzcyBNZXRhZGF0YUNhbGxiYWNr
cyA6IHB1YmxpYyBGaWxlU3lzdGVtQ2FsbGJhY2tzQmFzZSB7CmRpZmYgLS1naXQgYS9XZWJDb3Jl
L3N0b3JhZ2UvTG9jYWxGaWxlU3lzdGVtLmNwcCBiL1dlYkNvcmUvc3RvcmFnZS9Mb2NhbEZpbGVT
eXN0ZW0uY3BwCmluZGV4IDI4MjUwOGU3YzA3OGUxNDhjMjA5MzYzOGI3NTE3ZWFhODdhMDU3NTgu
LjExZWNkYjFhZDJmMjg4ZDQ3ZGQ5YjI1Y2UxYWNjYzRhYTEzNWE4NTcgMTAwNjQ0Ci0tLSBhL1dl
YkNvcmUvc3RvcmFnZS9Mb2NhbEZpbGVTeXN0ZW0uY3BwCisrKyBiL1dlYkNvcmUvc3RvcmFnZS9M
b2NhbEZpbGVTeXN0ZW0uY3BwCkBAIC01NywxMSArNTcsMTEgQEAgUGFzc1JlZlB0cjxMb2NhbEZp
bGVTeXN0ZW0+IExvY2FsRmlsZVN5c3RlbTo6Y3JlYXRlKGNvbnN0IFN0cmluZyYgYmFzZVBhdGgp
CiB2b2lkIExvY2FsRmlsZVN5c3RlbTo6cmVxdWVzdEZpbGVTeXN0ZW0oU2NyaXB0RXhlY3V0aW9u
Q29udGV4dCogY29udGV4dCwgQXN5bmNGaWxlU3lzdGVtOjpUeXBlIHR5cGUsIGxvbmcgbG9uZywg
UGFzc1JlZlB0cjxGaWxlU3lzdGVtQ2FsbGJhY2s+IHN1Y2Nlc3NDYWxsYmFjaywgUGFzc1JlZlB0
cjxFcnJvckNhbGxiYWNrPiBlcnJvckNhbGxiYWNrKQogewogICAgIGlmICh0eXBlICE9IEFzeW5j
RmlsZVN5c3RlbTo6VGVtcG9yYXJ5ICYmIHR5cGUgIT0gQXN5bmNGaWxlU3lzdGVtOjpQZXJzaXN0
ZW50KSB7Ci0gICAgICAgIGVycm9yQ2FsbGJhY2stPmhhbmRsZUV2ZW50KEZpbGVFcnJvcjo6Y3Jl
YXRlKElOVkFMSURfTU9ESUZJQ0FUSU9OX0VSUikuZ2V0KCkpOworICAgICAgICBET01GaWxlU3lz
dGVtOjpzY2hlZHVsZUNhbGxiYWNrKGNvbnRleHQsIGVycm9yQ2FsbGJhY2ssIEZpbGVFcnJvcjo6
Y3JlYXRlKElOVkFMSURfTU9ESUZJQ0FUSU9OX0VSUikpOwogICAgICAgICByZXR1cm47CiAgICAg
fQogCi0gICAgQXN5bmNGaWxlU3lzdGVtOjpvcGVuRmlsZVN5c3RlbShtX2Jhc2VQYXRoLCBjb250
ZXh0LT5zZWN1cml0eU9yaWdpbigpLT5kYXRhYmFzZUlkZW50aWZpZXIoKSwgdHlwZSwgbmV3IEZp
bGVTeXN0ZW1DYWxsYmFja3Moc3VjY2Vzc0NhbGxiYWNrLCBlcnJvckNhbGxiYWNrLCBjb250ZXh0
KSk7CisgICAgQXN5bmNGaWxlU3lzdGVtOjpvcGVuRmlsZVN5c3RlbShtX2Jhc2VQYXRoLCBjb250
ZXh0LT5zZWN1cml0eU9yaWdpbigpLT5kYXRhYmFzZUlkZW50aWZpZXIoKSwgdHlwZSwgbmV3IEZp
bGVTeXN0ZW1DYWxsYmFja3Moc3VjY2Vzc0NhbGxiYWNrLCBlcnJvckNhbGxiYWNrLCBjb250ZXh0
LCBmYWxzZSkpOwogfQogCiB9IC8vIG5hbWVzcGFjZQo=
</data>

          </attachment>
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>65845</attachid>
            <date>2010-08-28 21:29:42 -0700</date>
            <delta_ts>2010-08-30 12:21:16 -0700</delta_ts>
            <desc>Patch</desc>
            <filename>bug-44732-20100828212940.patch</filename>
            <type>text/plain</type>
            <size>41943</size>
            <attacher name="Kinuko Yasuda">kinuko</attacher>
            
              <data encoding="base64">ZGlmZiAtLWdpdCBhL1dlYkNvcmUvQ2hhbmdlTG9nIGIvV2ViQ29yZS9DaGFuZ2VMb2cKaW5kZXgg
MzA0NzZkM2JiOGE0Nzg4NDQ2MTAwNGZkNmVkZTFhNWE1ZTNjZGEzOC4uZDgzZGNjY2JjMWYyYjlj
Yzc5YmRhZDk4MTMyOGEyMTkzNDFkMDc3OSAxMDA2NDQKLS0tIGEvV2ViQ29yZS9DaGFuZ2VMb2cK
KysrIGIvV2ViQ29yZS9DaGFuZ2VMb2cKQEAgLTEsMyArMSw2NCBAQAorMjAxMC0wOC0yNyAgS2lu
dWtvIFlhc3VkYSAgPGtpbnVrb0BjaHJvbWl1bS5vcmc+CisKKyAgICAgICAgUmV2aWV3ZWQgYnkg
Tk9CT0RZIChPT1BTISkuCisKKyAgICAgICAgQWRkIERPTUZpbGVTeXN0ZW0gaW1wbGVtZW50YXRp
b24gdG8gc3VwcG9ydCBFbnRyeSBtYW5pcHVsYXRpb24gb3BlcmF0aW9ucworICAgICAgICBodHRw
czovL2J1Z3Mud2Via2l0Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9NDQ3MzIKKworICAgICAgICBObyBu
ZXcgdGVzdHM7IHRlc3RzIHdpbGwgYmUgYWRkZWQgbGF0ZXIuCisKKyAgICAgICAgKiBzdG9yYWdl
L0RPTUZpbGVTeXN0ZW0uY3BwOgorICAgICAgICAoV2ViQ29yZTo6RE9NRmlsZVN5c3RlbTo6cm9v
dCk6CisgICAgICAgIChXZWJDb3JlOjpjaGVja1ZhbGlkaXR5Rm9yRm9yQ29weU9yTW92ZSk6IEFk
ZGVkLgorICAgICAgICAoV2ViQ29yZTo6RE9NRmlsZVN5c3RlbTo6Z2V0TWV0YWRhdGEpOiBBZGRl
ZC4KKyAgICAgICAgKFdlYkNvcmU6OkRPTUZpbGVTeXN0ZW06Om1vdmUpOiBBZGRlZC4KKyAgICAg
ICAgKFdlYkNvcmU6OkRPTUZpbGVTeXN0ZW06OmNvcHkpOiBBZGRlZC4KKyAgICAgICAgKFdlYkNv
cmU6OkRPTUZpbGVTeXN0ZW06OnJlbW92ZSk6IEFkZGVkLgorICAgICAgICAoV2ViQ29yZTo6RE9N
RmlsZVN5c3RlbTo6Z2V0UGFyZW50KTogQWRkZWQuCisgICAgICAgIChXZWJDb3JlOjpET01GaWxl
U3lzdGVtOjpnZXRGaWxlKTogQWRkZWQuCisgICAgICAgIChXZWJDb3JlOjpET01GaWxlU3lzdGVt
OjpnZXREaXJlY3RvcnkpOiBBZGRlZC4KKyAgICAgICAgKFdlYkNvcmU6OkRPTUZpbGVTeXN0ZW06
OnJlYWREaXJlY3RvcnkpOiBBZGRlZC4KKyAgICAgICAgKiBzdG9yYWdlL0RPTUZpbGVTeXN0ZW0u
aDoKKyAgICAgICAgKFdlYkNvcmU6OkRPTUZpbGVTeXN0ZW06OkRpc3BhdGNoQ2FsbGJhY2tUYXNr
KTogQWRkZWQgdG8gc2NoZWR1bGUgY2FsbGJhY2tzLgorICAgICAgICAoV2ViQ29yZTo6RE9NRmls
ZVN5c3RlbTo6c2NoZWR1bGVDYWxsYmFjayk6IEFkZGVkIHRvIHNjaGVkdWxlIGNhbGxiYWNrcy4K
KyAgICAgICAgKiBzdG9yYWdlL0RpcmVjdG9yeUVudHJ5LmNwcDoKKyAgICAgICAgKFdlYkNvcmU6
OkRpcmVjdG9yeUVudHJ5OjpnZXRGaWxlKTogQWRkZWQgaW1wbGVtZW50YXRpb24uCisgICAgICAg
IChXZWJDb3JlOjpEaXJlY3RvcnlFbnRyeTo6Z2V0RGlyZWN0b3J5KTogQWRkZWQgaW1wbGVtZW50
YXRpb24uCisgICAgICAgICogc3RvcmFnZS9EaXJlY3RvcnlSZWFkZXIuY3BwOgorICAgICAgICAo
V2ViQ29yZTo6RGlyZWN0b3J5UmVhZGVyOjpEaXJlY3RvcnlSZWFkZXIpOiBBZGRlZCBpbXBsZW1l
bnRhdGlvbi4KKyAgICAgICAgKFdlYkNvcmU6OkRpcmVjdG9yeVJlYWRlcjo6cmVhZEVudHJpZXMp
OiBBZGRlZCBpbXBsZW1lbnRhdGlvbi4KKyAgICAgICAgKiBzdG9yYWdlL0RpcmVjdG9yeVJlYWRl
ci5oOgorICAgICAgICAqIHN0b3JhZ2UvRW50cnkuY3BwOgorICAgICAgICAoV2ViQ29yZTo6RW50
cnk6OmdldE1ldGFkYXRhKTogQWRkZWQgaW1wbGVtZW50YXRpb24uCisgICAgICAgIChXZWJDb3Jl
OjpFbnRyeTo6bW92ZVRvKTogQWRkZWQgaW1wbGVtZW50YXRpb24uCisgICAgICAgIChXZWJDb3Jl
OjpFbnRyeTo6Y29weVRvKTogQWRkZWQgaW1wbGVtZW50YXRpb24uCisgICAgICAgIChXZWJDb3Jl
OjpFbnRyeTo6cmVtb3ZlKTogQWRkZWQgaW1wbGVtZW50YXRpb24uCisgICAgICAgIChXZWJDb3Jl
OjpFbnRyeTo6Z2V0UGFyZW50KTogQWRkZWQgaW1wbGVtZW50YXRpb24uCisgICAgICAgICogc3Rv
cmFnZS9FbnRyeS5oOgorICAgICAgICAqIHN0b3JhZ2UvRmlsZUVudHJ5Lmg6CisKKyAgICAgICAg
QWRkZWQgYSBoZWxwZXIgdGVtcGxhdGUgdG8gc2NoZWR1bGUgY2FsbGJhY2tzLgorICAgICAgICAo
V2ViQ29yZTo6RE9NRmlsZVN5c3RlbTo6c2NoZWR1bGVDYWxsYmFjayk6CisKKyAgICAgICAgQWRk
ZWQgZmlyZUltbWVkaWF0ZSBmbGFnIHRvIGZpcmUgY2FsbGJhY2tzIGFzeW5jaHJvbm91c2x5Lgor
ICAgICAgICAqIHBsYXRmb3JtL0FzeW5jRmlsZVN5c3RlbUNhbGxiYWNrcy5oOgorICAgICAgICAq
IHN0b3JhZ2UvRmlsZVN5c3RlbUNhbGxiYWNrcy5jcHA6CisgICAgICAgIChXZWJDb3JlOjpGaWxl
U3lzdGVtQ2FsbGJhY2tzQmFzZTo6ZGlkU3VjY2VlZCk6CisgICAgICAgIChXZWJDb3JlOjpGaWxl
U3lzdGVtQ2FsbGJhY2tzQmFzZTo6ZGlkT3BlbkZpbGVTeXN0ZW0pOgorICAgICAgICAoV2ViQ29y
ZTo6RmlsZVN5c3RlbUNhbGxiYWNrc0Jhc2U6OmRpZFJlYWRNZXRhZGF0YSk6CisgICAgICAgIChX
ZWJDb3JlOjpGaWxlU3lzdGVtQ2FsbGJhY2tzQmFzZTo6ZGlkUmVhZERpcmVjdG9yeUVudHJpZXMp
OgorICAgICAgICAoV2ViQ29yZTo6RmlsZVN5c3RlbUNhbGxiYWNrc0Jhc2U6OmRpZFJlYWREaXJl
Y3RvcnlFbnRyeSk6CisgICAgICAgIChXZWJDb3JlOjpGaWxlU3lzdGVtQ2FsbGJhY2tzQmFzZTo6
ZGlkRmFpbCk6CisgICAgICAgICogc3RvcmFnZS9GaWxlU3lzdGVtQ2FsbGJhY2tzLmg6CisgICAg
ICAgIChXZWJDb3JlOjpGaWxlU3lzdGVtQ2FsbGJhY2tzQmFzZTo6ZmlyZUNhbGxiYWNrKTogQWRk
ZWQgdG8gZmlyZSBjYWxsYmFja3MgKGJ5IHBvc3Rpbmcgb3IgZGlyZWN0bHkgY2FsbGluZyBoYW5k
bGVFdmVudCgpIGRlcGVuZGluZyBvbiBpbW1lZGlhdGUgZmxhZykuCisKKyAgICAgICAgQ2hhbmdl
ZCB0byBmaXJlIGNhbGxiYWNrcyBhc3luY2hyb25vdXNseS4KKyAgICAgICAgKiBzdG9yYWdlL0xv
Y2FsRmlsZVN5c3RlbS5jcHA6CisgICAgICAgIChXZWJDb3JlOjpMb2NhbEZpbGVTeXN0ZW06OnJl
cXVlc3RGaWxlU3lzdGVtKToKKyAgICAgICAgKiBwbGF0Zm9ybS9Bc3luY0ZpbGVTeXN0ZW0uY3Bw
OgorICAgICAgICAoV2ViQ29yZTo6QXN5bmNGaWxlU3lzdGVtOjpvcGVuRmlsZVN5c3RlbSk6Cisg
ICAgICAgICogcGxhdGZvcm0vQXN5bmNGaWxlU3lzdGVtQ2FsbGJhY2tzLmg6CisKIDIwMTAtMDgt
MjcgIEpvc2VwaCBQZWNvcmFybyAgPGpvZXBlY2tAd2Via2l0Lm9yZz4KIAogICAgICAgICBSZXZp
ZXdlZCBieSBBbGV4ZXkgUHJvc2t1cnlha292LgpkaWZmIC0tZ2l0IGEvV2ViQ29yZS9wbGF0Zm9y
bS9Bc3luY0ZpbGVTeXN0ZW0uY3BwIGIvV2ViQ29yZS9wbGF0Zm9ybS9Bc3luY0ZpbGVTeXN0ZW0u
Y3BwCmluZGV4IGI0ZmNkMGQ0ZDliNGZiY2VkOTQ2MTM4NWMxM2E2Y2ViYjY5ZmM3YWYuLmQ3OWZh
MjlkMzhmZjk0ZjU3ZDViZjhkZWMxNDE2ZjMxNGRjM2RkOTUgMTAwNjQ0Ci0tLSBhL1dlYkNvcmUv
cGxhdGZvcm0vQXN5bmNGaWxlU3lzdGVtLmNwcAorKysgYi9XZWJDb3JlL3BsYXRmb3JtL0FzeW5j
RmlsZVN5c3RlbS5jcHAKQEAgLTYwLDcgKzYwLDcgQEAgdm9pZCBBc3luY0ZpbGVTeXN0ZW06Om9w
ZW5GaWxlU3lzdGVtKGNvbnN0IFN0cmluZyYgYmFzZVBhdGgsIGNvbnN0IFN0cmluZyYgc3RvcmEK
ICAgICByb290UGF0aCArPSB0eXBlU3RyaW5nOwogICAgIHJvb3RQYXRoLmFwcGVuZChQbGF0Zm9y
bUZpbGVQYXRoU2VwYXJhdG9yKTsKIAotICAgIGNhbGxiYWNrcy0+ZGlkT3BlbkZpbGVTeXN0ZW0o
bmFtZSwgQXN5bmNGaWxlU3lzdGVtOjpjcmVhdGUocm9vdFBhdGgpKTsKKyAgICBjYWxsYmFja3Mt
PmRpZE9wZW5GaWxlU3lzdGVtKG5hbWUsIEFzeW5jRmlsZVN5c3RlbTo6Y3JlYXRlKHJvb3RQYXRo
KSwgZmFsc2UpOwogfQogCiAvLyBEZWZhdWx0IGltcGxlbWVudGF0aW9uLgpkaWZmIC0tZ2l0IGEv
V2ViQ29yZS9wbGF0Zm9ybS9Bc3luY0ZpbGVTeXN0ZW1DYWxsYmFja3MuaCBiL1dlYkNvcmUvcGxh
dGZvcm0vQXN5bmNGaWxlU3lzdGVtQ2FsbGJhY2tzLmgKaW5kZXggMDU0N2ZhZDZmZDUyY2JkZjNj
MjQwMmQyNmViOWNiZjA4OTAzODgyOC4uOGQwM2E2NmJjODg3ZDI3MTg2MTk2ZmFlYzExODI3NDky
NTBlYTcwNSAxMDA2NDQKLS0tIGEvV2ViQ29yZS9wbGF0Zm9ybS9Bc3luY0ZpbGVTeXN0ZW1DYWxs
YmFja3MuaAorKysgYi9XZWJDb3JlL3BsYXRmb3JtL0FzeW5jRmlsZVN5c3RlbUNhbGxiYWNrcy5o
CkBAIC0zOSwyNSArMzksMjYgQEAgbmFtZXNwYWNlIFdlYkNvcmUgewogCiBjbGFzcyBBc3luY0Zp
bGVTeXN0ZW07CiAKKy8vIEFsbCB0aGUgY2FsbGJhY2tzIG11c3QgYmUgZmlyZWQgYXN5bmNocm9u
b3VzbHkgaWYgZmlyZUltbWVkaWF0ZSBpcyBmYWxzZS4KIGNsYXNzIEFzeW5jRmlsZVN5c3RlbUNh
bGxiYWNrcyA6IHB1YmxpYyBOb25jb3B5YWJsZSB7CiBwdWJsaWM6CiAgICAgLy8gQ2FsbGVkIHdo
ZW4gYSByZXF1ZXN0ZWQgb3BlcmF0aW9uIGlzIGNvbXBsZXRlZCBzdWNjZXNzZnVsbHkuCi0gICAg
dmlydHVhbCB2b2lkIGRpZFN1Y2NlZWQoKSA9IDA7CisgICAgdmlydHVhbCB2b2lkIGRpZFN1Y2Nl
ZWQoYm9vbCBmaXJlSW1tZWRpYXRlID0gdHJ1ZSkgPSAwOwogCiAgICAgLy8gQ2FsbGVkIHdoZW4g
YSByZXF1ZXN0ZWQgZmlsZSBzeXN0ZW0gaXMgb3BlbmVkLgotICAgIHZpcnR1YWwgdm9pZCBkaWRP
cGVuRmlsZVN5c3RlbShjb25zdCBTdHJpbmcmIG5hbWUsIFBhc3NPd25QdHI8QXN5bmNGaWxlU3lz
dGVtPikgPSAwOworICAgIHZpcnR1YWwgdm9pZCBkaWRPcGVuRmlsZVN5c3RlbShjb25zdCBTdHJp
bmcmIG5hbWUsIFBhc3NPd25QdHI8QXN5bmNGaWxlU3lzdGVtPiwgYm9vbCBmaXJlSW1tZWRpYXRl
ID0gdHJ1ZSkgPSAwOwogCiAgICAgLy8gQ2FsbGVkIHdoZW4gYSBmaWxlIG1ldGFkYXRhIGlzIHJl
YWQgc3VjY2Vzc2Z1bGx5LgotICAgIHZpcnR1YWwgdm9pZCBkaWRSZWFkTWV0YWRhdGEoZG91Ymxl
IG1vZGlmaWNhdGlvblRpbWUpID0gMDsKKyAgICB2aXJ0dWFsIHZvaWQgZGlkUmVhZE1ldGFkYXRh
KGRvdWJsZSBtb2RpZmljYXRpb25UaW1lLCBib29sIGZpcmVJbW1lZGlhdGUgPSB0cnVlKSA9IDA7
CiAKICAgICAvLyBDYWxsZWQgd2hlbiBhIGRpcmVjdG9yeSBlbnRyeSBpcyByZWFkLgotICAgIHZp
cnR1YWwgdm9pZCBkaWRSZWFkRGlyZWN0b3J5RW50cnkoY29uc3QgU3RyaW5nJiBuYW1lLCBib29s
IGlzRGlyZWN0b3J5KSA9IDA7CisgICAgdmlydHVhbCB2b2lkIGRpZFJlYWREaXJlY3RvcnlFbnRy
eShjb25zdCBTdHJpbmcmIG5hbWUsIGJvb2wgaXNEaXJlY3RvcnksIGJvb2wgZmlyZUltbWVkaWF0
ZSA9IHRydWUpID0gMDsKIAogICAgIC8vIENhbGxlZCBhZnRlciBhIGNodW5rIG9mIGRpcmVjdG9y
eSBlbnRyaWVzIGhhdmUgYmVlbiByZWFkIChpLmUuIGluZGljYXRlcyBpdCdzIGdvb2QgdGltZSB0
byBjYWxsIGJhY2sgdG8gdGhlIGFwcGxpY2F0aW9uKS4gIElmIGhhc01vcmUgaXMgdHJ1ZSB0aGVy
ZSBjYW4gYmUgbW9yZSBjaHVua3MuCi0gICAgdmlydHVhbCB2b2lkIGRpZFJlYWREaXJlY3RvcnlF
bnRyaWVzKGJvb2wgaGFzTW9yZSkgPSAwOworICAgIHZpcnR1YWwgdm9pZCBkaWRSZWFkRGlyZWN0
b3J5RW50cmllcyhib29sIGhhc01vcmUsIGJvb2wgZmlyZUltbWVkaWF0ZSA9IHRydWUpID0gMDsK
IAogICAgIC8vIENhbGxlZCB3aGVuIHRoZXJlIHdhcyBhbiBlcnJvci4KLSAgICB2aXJ0dWFsIHZv
aWQgZGlkRmFpbChpbnQgY29kZSkgPSAwOworICAgIHZpcnR1YWwgdm9pZCBkaWRGYWlsKGludCBj
b2RlLCBib29sIGZpcmVJbW1lZGlhdGUgPSB0cnVlKSA9IDA7CiAKICAgICB2aXJ0dWFsIH5Bc3lu
Y0ZpbGVTeXN0ZW1DYWxsYmFja3MoKSB7IH0KIH07CmRpZmYgLS1naXQgYS9XZWJDb3JlL3N0b3Jh
Z2UvRE9NRmlsZVN5c3RlbS5jcHAgYi9XZWJDb3JlL3N0b3JhZ2UvRE9NRmlsZVN5c3RlbS5jcHAK
aW5kZXggNWQ2MDczYTNlOWVjMTIzOTY0YTIyYjk2Njk0NmJiMzYwYTIzOWVlYS4uZTg2NTZjMzUw
NmQyYTlkYjdkMmU2OTYyZmY2OWQyNGFjYTdkYjE3MyAxMDA2NDQKLS0tIGEvV2ViQ29yZS9zdG9y
YWdlL0RPTUZpbGVTeXN0ZW0uY3BwCisrKyBiL1dlYkNvcmUvc3RvcmFnZS9ET01GaWxlU3lzdGVt
LmNwcApAQCAtMzQsOCArMzQsMTcgQEAKICNpZiBFTkFCTEUoRklMRV9TWVNURU0pCiAKICNpbmNs
dWRlICJBc3luY0ZpbGVTeXN0ZW0uaCIKKyNpbmNsdWRlICJET01GaWxlUGF0aC5oIgogI2luY2x1
ZGUgIkRpcmVjdG9yeUVudHJ5LmgiCisjaW5jbHVkZSAiRW50cmllc0NhbGxiYWNrLmgiCisjaW5j
bHVkZSAiRW50cnkuaCIKKyNpbmNsdWRlICJFbnRyeUNhbGxiYWNrLmgiCisjaW5jbHVkZSAiRXJy
b3JDYWxsYmFjay5oIgorI2luY2x1ZGUgIkZpbGVFcnJvci5oIgorI2luY2x1ZGUgIkZpbGVTeXN0
ZW1DYWxsYmFja3MuaCIKKyNpbmNsdWRlICJNZXRhZGF0YUNhbGxiYWNrLmgiCiAjaW5jbHVkZSAi
U2NyaXB0RXhlY3V0aW9uQ29udGV4dC5oIgorI2luY2x1ZGUgIlZvaWRDYWxsYmFjay5oIgogCiBu
YW1lc3BhY2UgV2ViQ29yZSB7CiAKQEAgLTUyLDcgKzYxLDcgQEAgRE9NRmlsZVN5c3RlbTo6fkRP
TUZpbGVTeXN0ZW0oKQogCiBQYXNzUmVmUHRyPERpcmVjdG9yeUVudHJ5PiBET01GaWxlU3lzdGVt
Ojpyb290KCkKIHsKLSAgICByZXR1cm4gRGlyZWN0b3J5RW50cnk6OmNyZWF0ZSh0aGlzLCAiLyIp
OworICAgIHJldHVybiBEaXJlY3RvcnlFbnRyeTo6Y3JlYXRlKHRoaXMsIERPTUZpbGVQYXRoOjpy
b290KTsKIH0KIAogdm9pZCBET01GaWxlU3lzdGVtOjpzdG9wKCkKQEAgLTcwLDYgKzc5LDE0MCBA
QCB2b2lkIERPTUZpbGVTeXN0ZW06OmNvbnRleHREZXN0cm95ZWQoKQogICAgIG1fYXN5bmNGaWxl
U3lzdGVtLT5zdG9wKCk7CiB9CiAKK3ZvaWQgRE9NRmlsZVN5c3RlbTo6Z2V0TWV0YWRhdGEoY29u
c3QgRW50cnkqIGVudHJ5LCBQYXNzUmVmUHRyPE1ldGFkYXRhQ2FsbGJhY2s+IHN1Y2Nlc3NDYWxs
YmFjaywgUGFzc1JlZlB0cjxFcnJvckNhbGxiYWNrPiBlcnJvckNhbGxiYWNrKQoreworICAgIG1f
YXN5bmNGaWxlU3lzdGVtLT5yZWFkTWV0YWRhdGEoZW50cnktPmZ1bGxQYXRoKCksIG5ldyBNZXRh
ZGF0YUNhbGxiYWNrcyhzdWNjZXNzQ2FsbGJhY2ssIGVycm9yQ2FsbGJhY2ssIHNjcmlwdEV4ZWN1
dGlvbkNvbnRleHQoKSkpOworfQorCitzdGF0aWMgYm9vbCBjaGVja1ZhbGlkaXR5Rm9yRm9yQ29w
eU9yTW92ZShjb25zdCBFbnRyeSogc3JjLCBFbnRyeSogcGFyZW50LCBjb25zdCBTdHJpbmcmIG5l
d05hbWUpCit7CisgICAgQVNTRVJUKHNyYyk7CisKKyAgICBpZiAoIXBhcmVudCB8fCAhcGFyZW50
LT5pc0RpcmVjdG9yeSgpKQorICAgICAgICByZXR1cm4gZmFsc2U7CisKKyAgICBpZiAoIW5ld05h
bWUuaXNFbXB0eSgpICYmICFET01GaWxlUGF0aDo6aXNWYWxpZE5hbWUobmV3TmFtZSkpCisgICAg
ICAgIHJldHVybiBmYWxzZTsKKworICAgIC8vIEl0IGlzIGFuIGVycm9yIHRvIHRyeSB0byBjb3B5
IG9yIG1vdmUgYW4gZW50cnkgaW5zaWRlIGl0c2VsZiBhdCBhbnkgZGVwdGggaWYgaXQgaXMgYSBk
aXJlY3RvcnkuCisgICAgaWYgKHNyYy0+aXNEaXJlY3RvcnkoKSAmJiBET01GaWxlUGF0aDo6aXNQ
YXJlbnRPZihzcmMtPmZ1bGxQYXRoKCksIHBhcmVudC0+ZnVsbFBhdGgoKSkpCisgICAgICAgIHJl
dHVybiBmYWxzZTsKKworICAgIC8vIEl0IGlzIGFuIGVycm9yIHRvIGNvcHkgb3IgbW92ZSBhbiBl
bnRyeSBpbnRvIGl0cyBwYXJlbnQgaWYgYSBuYW1lIGRpZmZlcmVudCBmcm9tIGl0cyBjdXJyZW50
IG9uZSBpc24ndCBwcm92aWRlZC4KKyAgICBpZiAoKG5ld05hbWUuaXNFbXB0eSgpIHx8IHNyYy0+
bmFtZSgpID09IG5ld05hbWUpICYmIERPTUZpbGVQYXRoOjpnZXREaXJlY3Rvcnkoc3JjLT5mdWxs
UGF0aCgpKSA9PSBwYXJlbnQtPmZ1bGxQYXRoKCkpCisgICAgICAgIHJldHVybiBmYWxzZTsKKwor
ICAgIHJldHVybiB0cnVlOworfQorCit2b2lkIERPTUZpbGVTeXN0ZW06Om1vdmUoY29uc3QgRW50
cnkqIHNyYywgUGFzc1JlZlB0cjxFbnRyeT4gcGFyZW50LCBjb25zdCBTdHJpbmcmIG5ld05hbWUs
IFBhc3NSZWZQdHI8RW50cnlDYWxsYmFjaz4gc3VjY2Vzc0NhbGxiYWNrLCBQYXNzUmVmUHRyPEVy
cm9yQ2FsbGJhY2s+IGVycm9yQ2FsbGJhY2spCit7CisgICAgaWYgKCFjaGVja1ZhbGlkaXR5Rm9y
Rm9yQ29weU9yTW92ZShzcmMsIHBhcmVudC5nZXQoKSwgbmV3TmFtZSkpIHsKKyAgICAgICAgc2No
ZWR1bGVDYWxsYmFjayhzY3JpcHRFeGVjdXRpb25Db250ZXh0KCksIGVycm9yQ2FsbGJhY2ssIEZp
bGVFcnJvcjo6Y3JlYXRlKElOVkFMSURfTU9ESUZJQ0FUSU9OX0VSUikpOworICAgICAgICByZXR1
cm47CisgICAgfQorCisgICAgU3RyaW5nIGRlc3RQYXRoID0gcGFyZW50LT5mdWxsUGF0aCgpOwor
ICAgIGlmICghbmV3TmFtZS5pc0VtcHR5KCkpCisgICAgICAgIGRlc3RQYXRoID0gRE9NRmlsZVBh
dGg6OmFwcGVuZChkZXN0UGF0aCwgbmV3TmFtZSk7CisgICAgZWxzZQorICAgICAgICBkZXN0UGF0
aCA9IERPTUZpbGVQYXRoOjphcHBlbmQoZGVzdFBhdGgsIHNyYy0+bmFtZSgpKTsKKworICAgIG1f
YXN5bmNGaWxlU3lzdGVtLT5tb3ZlKHNyYy0+ZnVsbFBhdGgoKSwgZGVzdFBhdGgsIG5ldyBFbnRy
eUNhbGxiYWNrcyhzdWNjZXNzQ2FsbGJhY2ssIGVycm9yQ2FsbGJhY2ssIHNjcmlwdEV4ZWN1dGlv
bkNvbnRleHQoKSwgdGhpcywgZGVzdFBhdGgsIHNyYy0+aXNEaXJlY3RvcnkoKSkpOworfQorCit2
b2lkIERPTUZpbGVTeXN0ZW06OmNvcHkoY29uc3QgRW50cnkqIHNyYywgUGFzc1JlZlB0cjxFbnRy
eT4gcGFyZW50LCBjb25zdCBTdHJpbmcmIG5ld05hbWUsIFBhc3NSZWZQdHI8RW50cnlDYWxsYmFj
az4gc3VjY2Vzc0NhbGxiYWNrLCBQYXNzUmVmUHRyPEVycm9yQ2FsbGJhY2s+IGVycm9yQ2FsbGJh
Y2spCit7CisgICAgaWYgKCFjaGVja1ZhbGlkaXR5Rm9yRm9yQ29weU9yTW92ZShzcmMsIHBhcmVu
dC5nZXQoKSwgbmV3TmFtZSkpIHsKKyAgICAgICAgc2NoZWR1bGVDYWxsYmFjayhzY3JpcHRFeGVj
dXRpb25Db250ZXh0KCksIGVycm9yQ2FsbGJhY2ssIEZpbGVFcnJvcjo6Y3JlYXRlKElOVkFMSURf
TU9ESUZJQ0FUSU9OX0VSUikpOworICAgICAgICByZXR1cm47CisgICAgfQorCisgICAgU3RyaW5n
IGRlc3RQYXRoID0gcGFyZW50LT5mdWxsUGF0aCgpOworICAgIGlmICghbmV3TmFtZS5pc0VtcHR5
KCkpCisgICAgICAgIGRlc3RQYXRoID0gRE9NRmlsZVBhdGg6OmFwcGVuZChkZXN0UGF0aCwgbmV3
TmFtZSk7CisgICAgZWxzZQorICAgICAgICBkZXN0UGF0aCA9IERPTUZpbGVQYXRoOjphcHBlbmQo
ZGVzdFBhdGgsIHNyYy0+bmFtZSgpKTsKKworICAgIG1fYXN5bmNGaWxlU3lzdGVtLT5jb3B5KHNy
Yy0+ZnVsbFBhdGgoKSwgZGVzdFBhdGgsIG5ldyBFbnRyeUNhbGxiYWNrcyhzdWNjZXNzQ2FsbGJh
Y2ssIGVycm9yQ2FsbGJhY2ssIHNjcmlwdEV4ZWN1dGlvbkNvbnRleHQoKSwgdGhpcywgZGVzdFBh
dGgsIHNyYy0+aXNEaXJlY3RvcnkoKSkpOworfQorCit2b2lkIERPTUZpbGVTeXN0ZW06OnJlbW92
ZShjb25zdCBFbnRyeSogZW50cnksIFBhc3NSZWZQdHI8Vm9pZENhbGxiYWNrPiBzdWNjZXNzQ2Fs
bGJhY2ssIFBhc3NSZWZQdHI8RXJyb3JDYWxsYmFjaz4gZXJyb3JDYWxsYmFjaykKK3sKKyAgICBB
U1NFUlQoZW50cnkpOworICAgIG1fYXN5bmNGaWxlU3lzdGVtLT5yZW1vdmUoZW50cnktPmZ1bGxQ
YXRoKCksIG5ldyBWb2lkQ2FsbGJhY2tzKHN1Y2Nlc3NDYWxsYmFjaywgZXJyb3JDYWxsYmFjaywg
c2NyaXB0RXhlY3V0aW9uQ29udGV4dCgpKSk7Cit9CisKK3ZvaWQgRE9NRmlsZVN5c3RlbTo6Z2V0
UGFyZW50KGNvbnN0IEVudHJ5KiBlbnRyeSwgUGFzc1JlZlB0cjxFbnRyeUNhbGxiYWNrPiBzdWNj
ZXNzQ2FsbGJhY2ssIFBhc3NSZWZQdHI8RXJyb3JDYWxsYmFjaz4gZXJyb3JDYWxsYmFjaykKK3sK
KyAgICBBU1NFUlQoZW50cnkpOworICAgIFN0cmluZyBwYXRoID0gRE9NRmlsZVBhdGg6OmdldERp
cmVjdG9yeShlbnRyeS0+ZnVsbFBhdGgoKSk7CisgICAgbV9hc3luY0ZpbGVTeXN0ZW0tPmRpcmVj
dG9yeUV4aXN0cyhwYXRoLCBuZXcgRW50cnlDYWxsYmFja3Moc3VjY2Vzc0NhbGxiYWNrLCBlcnJv
ckNhbGxiYWNrLCBzY3JpcHRFeGVjdXRpb25Db250ZXh0KCksIHRoaXMsIHBhdGgsIHRydWUpKTsK
K30KKwordm9pZCBET01GaWxlU3lzdGVtOjpnZXRGaWxlKGNvbnN0IEVudHJ5KiBiYXNlLCBjb25z
dCBTdHJpbmcmIHBhdGgsIFBhc3NSZWZQdHI8RmxhZ3M+IGZsYWdzLCBQYXNzUmVmUHRyPEVudHJ5
Q2FsbGJhY2s+IHN1Y2Nlc3NDYWxsYmFjaywgUGFzc1JlZlB0cjxFcnJvckNhbGxiYWNrPiBlcnJv
ckNhbGxiYWNrKQoreworICAgIEFTU0VSVChiYXNlKTsKKyAgICBpZiAoIURPTUZpbGVQYXRoOjpp
c1ZhbGlkUGF0aChwYXRoKSkgeworICAgICAgICBzY2hlZHVsZUNhbGxiYWNrKHNjcmlwdEV4ZWN1
dGlvbkNvbnRleHQoKSwgZXJyb3JDYWxsYmFjaywgRmlsZUVycm9yOjpjcmVhdGUoSU5WQUxJRF9N
T0RJRklDQVRJT05fRVJSKSk7CisgICAgICAgIHJldHVybjsKKyAgICB9CisKKyAgICBTdHJpbmcg
YWJzb2x1dGVQYXRoID0gcGF0aDsKKyAgICBpZiAoIURPTUZpbGVQYXRoOjppc0Fic29sdXRlKHBh
dGgpKQorICAgICAgICBhYnNvbHV0ZVBhdGggPSBET01GaWxlUGF0aDo6cmVtb3ZlRXh0cmFQYXJl
bnRSZWZlcmVuY2VzKERPTUZpbGVQYXRoOjphcHBlbmQoYmFzZS0+ZnVsbFBhdGgoKSwgcGF0aCkp
OworCisgICAgaWYgKGZsYWdzICYmIGZsYWdzLT5pc0NyZWF0ZSgpKQorICAgICAgICBtX2FzeW5j
RmlsZVN5c3RlbS0+Y3JlYXRlRmlsZShhYnNvbHV0ZVBhdGgsIGZsYWdzLT5pc0V4Y2x1c2l2ZSgp
LCBuZXcgRW50cnlDYWxsYmFja3Moc3VjY2Vzc0NhbGxiYWNrLCBlcnJvckNhbGxiYWNrLCBzY3Jp
cHRFeGVjdXRpb25Db250ZXh0KCksIHRoaXMsIGFic29sdXRlUGF0aCwgZmFsc2UpKTsKKyAgICBl
bHNlCisgICAgICAgIG1fYXN5bmNGaWxlU3lzdGVtLT5maWxlRXhpc3RzKGFic29sdXRlUGF0aCwg
bmV3IEVudHJ5Q2FsbGJhY2tzKHN1Y2Nlc3NDYWxsYmFjaywgZXJyb3JDYWxsYmFjaywgc2NyaXB0
RXhlY3V0aW9uQ29udGV4dCgpLCB0aGlzLCBhYnNvbHV0ZVBhdGgsIGZhbHNlKSk7Cit9CisKK3Zv
aWQgRE9NRmlsZVN5c3RlbTo6Z2V0RGlyZWN0b3J5KGNvbnN0IEVudHJ5KiBiYXNlLCBjb25zdCBT
dHJpbmcmIHBhdGgsIFBhc3NSZWZQdHI8RmxhZ3M+IGZsYWdzLCBQYXNzUmVmUHRyPEVudHJ5Q2Fs
bGJhY2s+IHN1Y2Nlc3NDYWxsYmFjaywgUGFzc1JlZlB0cjxFcnJvckNhbGxiYWNrPiBlcnJvckNh
bGxiYWNrKQoreworICAgIEFTU0VSVChiYXNlKTsKKyAgICBpZiAoIURPTUZpbGVQYXRoOjppc1Zh
bGlkUGF0aChwYXRoKSkgeworICAgICAgICBzY2hlZHVsZUNhbGxiYWNrKHNjcmlwdEV4ZWN1dGlv
bkNvbnRleHQoKSwgZXJyb3JDYWxsYmFjaywgRmlsZUVycm9yOjpjcmVhdGUoSU5WQUxJRF9NT0RJ
RklDQVRJT05fRVJSKSk7CisgICAgICAgIHJldHVybjsKKyAgICB9CisKKyAgICBTdHJpbmcgYWJz
b2x1dGVQYXRoID0gcGF0aDsKKyAgICBpZiAoIURPTUZpbGVQYXRoOjppc0Fic29sdXRlKHBhdGgp
KQorICAgICAgICBhYnNvbHV0ZVBhdGggPSBET01GaWxlUGF0aDo6cmVtb3ZlRXh0cmFQYXJlbnRS
ZWZlcmVuY2VzKERPTUZpbGVQYXRoOjphcHBlbmQoYmFzZS0+ZnVsbFBhdGgoKSwgcGF0aCkpOwor
CisgICAgaWYgKGZsYWdzICYmIGZsYWdzLT5pc0NyZWF0ZSgpKQorICAgICAgICBtX2FzeW5jRmls
ZVN5c3RlbS0+Y3JlYXRlRGlyZWN0b3J5KGFic29sdXRlUGF0aCwgZmxhZ3MtPmlzRXhjbHVzaXZl
KCksIG5ldyBFbnRyeUNhbGxiYWNrcyhzdWNjZXNzQ2FsbGJhY2ssIGVycm9yQ2FsbGJhY2ssIHNj
cmlwdEV4ZWN1dGlvbkNvbnRleHQoKSwgdGhpcywgYWJzb2x1dGVQYXRoLCB0cnVlKSk7CisgICAg
ZWxzZQorICAgICAgICBtX2FzeW5jRmlsZVN5c3RlbS0+ZGlyZWN0b3J5RXhpc3RzKGFic29sdXRl
UGF0aCwgbmV3IEVudHJ5Q2FsbGJhY2tzKHN1Y2Nlc3NDYWxsYmFjaywgZXJyb3JDYWxsYmFjaywg
c2NyaXB0RXhlY3V0aW9uQ29udGV4dCgpLCB0aGlzLCBhYnNvbHV0ZVBhdGgsIHRydWUpKTsKK30K
Kwordm9pZCBET01GaWxlU3lzdGVtOjpyZWFkRGlyZWN0b3J5KGNvbnN0IFN0cmluZyYgcGF0aCwg
UGFzc1JlZlB0cjxFbnRyaWVzQ2FsbGJhY2s+IHN1Y2Nlc3NDYWxsYmFjaywgUGFzc1JlZlB0cjxF
cnJvckNhbGxiYWNrPiBlcnJvckNhbGxiYWNrKQoreworICAgIG1fYXN5bmNGaWxlU3lzdGVtLT5y
ZWFkRGlyZWN0b3J5KHBhdGgsIG5ldyBFbnRyaWVzQ2FsbGJhY2tzKHN1Y2Nlc3NDYWxsYmFjaywg
ZXJyb3JDYWxsYmFjaywgc2NyaXB0RXhlY3V0aW9uQ29udGV4dCgpLCB0aGlzLCBwYXRoKSk7Cit9
CisKK2NsYXNzIERpc3BhdGNoVm9pZENhbGxiYWNrVGFzayA6IHB1YmxpYyBTY3JpcHRFeGVjdXRp
b25Db250ZXh0OjpUYXNrIHsKK3B1YmxpYzoKKyAgICBEaXNwYXRjaFZvaWRDYWxsYmFja1Rhc2so
UGFzc1JlZlB0cjxWb2lkQ2FsbGJhY2s+IGNhbGxiYWNrKQorICAgICAgICA6IG1fY2FsbGJhY2so
Y2FsbGJhY2spCisgICAgeworICAgIH0KKworICAgIHZpcnR1YWwgdm9pZCBwZXJmb3JtVGFzayhT
Y3JpcHRFeGVjdXRpb25Db250ZXh0KikKKyAgICB7CisgICAgICAgIG1fY2FsbGJhY2stPmhhbmRs
ZUV2ZW50KCk7CisgICAgfQorCitwcml2YXRlOgorICAgIFJlZlB0cjxWb2lkQ2FsbGJhY2s+IG1f
Y2FsbGJhY2s7Cit9OworCit2b2lkIERPTUZpbGVTeXN0ZW06OnNjaGVkdWxlQ2FsbGJhY2soU2Ny
aXB0RXhlY3V0aW9uQ29udGV4dCogc2NyaXB0RXhlY3V0aW9uQ29udGV4dCwgUGFzc1JlZlB0cjxW
b2lkQ2FsbGJhY2s+IHZvaWRDYWxsYmFjaykKK3sKKyAgICBBU1NFUlQoc2NyaXB0RXhlY3V0aW9u
Q29udGV4dC0+aXNDb250ZXh0VGhyZWFkKCkpOworICAgIHNjcmlwdEV4ZWN1dGlvbkNvbnRleHQt
PnBvc3RUYXNrKG5ldyBEaXNwYXRjaFZvaWRDYWxsYmFja1Rhc2sodm9pZENhbGxiYWNrKSk7Cit9
CisKIH0gLy8gbmFtZXNwYWNlCiAKICNlbmRpZiAvLyBFTkFCTEUoRklMRV9TWVNURU0pCmRpZmYg
LS1naXQgYS9XZWJDb3JlL3N0b3JhZ2UvRE9NRmlsZVN5c3RlbS5oIGIvV2ViQ29yZS9zdG9yYWdl
L0RPTUZpbGVTeXN0ZW0uaAppbmRleCAzMzdiZWE5Y2JlZWMwYjdmZTIzYjk0NWIzOTNhNTM0NzBk
OTQ1MmYzLi5kM2UzZjI0NjcyMWI5ZWQ5NWUyYTczMTliNzBmMDkwY2M4YzM5MjkwIDEwMDY0NAot
LS0gYS9XZWJDb3JlL3N0b3JhZ2UvRE9NRmlsZVN5c3RlbS5oCisrKyBiL1dlYkNvcmUvc3RvcmFn
ZS9ET01GaWxlU3lzdGVtLmgKQEAgLTM3LDEzICszNywxOSBAQAogI2luY2x1ZGUgIkFzeW5jRmls
ZVN5c3RlbS5oIgogI2luY2x1ZGUgIkZsYWdzLmgiCiAjaW5jbHVkZSAiUGxhdGZvcm1TdHJpbmcu
aCIKKyNpbmNsdWRlICJTY3JpcHRFeGVjdXRpb25Db250ZXh0LmgiCiAjaW5jbHVkZSA8d3RmL1Bh
c3NSZWZQdHIuaD4KICNpbmNsdWRlIDx3dGYvUmVmQ291bnRlZC5oPgogCiBuYW1lc3BhY2UgV2Vi
Q29yZSB7CiAKIGNsYXNzIERpcmVjdG9yeUVudHJ5OwotY2xhc3MgU2NyaXB0RXhlY3V0aW9uQ29u
dGV4dDsKK2NsYXNzIEVudHJ5OworY2xhc3MgRW50cnlDYWxsYmFjazsKK2NsYXNzIEVudHJpZXND
YWxsYmFjazsKK2NsYXNzIEVycm9yQ2FsbGJhY2s7CitjbGFzcyBNZXRhZGF0YUNhbGxiYWNrOwor
Y2xhc3MgVm9pZENhbGxiYWNrOwogCiBjbGFzcyBET01GaWxlU3lzdGVtIDogcHVibGljIFJlZkNv
dW50ZWQ8RE9NRmlsZVN5c3RlbT4sIHB1YmxpYyBBY3RpdmVET01PYmplY3QgewogcHVibGljOgpA
QCAtNjIsNiArNjgsNDcgQEAgcHVibGljOgogICAgIHZpcnR1YWwgYm9vbCBoYXNQZW5kaW5nQWN0
aXZpdHkoKSBjb25zdDsKICAgICB2aXJ0dWFsIHZvaWQgY29udGV4dERlc3Ryb3llZCgpOwogCisg
ICAgLy8gQWN0dWFsIEZpbGVTeXN0ZW0gQVBJIGltcGxlbWVudGF0aW9ucy4gIEFsbCB0aGUgdmFs
aWRpdHkgY2hlY2tzIG9uIHZpcnR1YWwgcGF0aHMgYXJlIGRvbmUgYXQgRE9NRmlsZVN5c3RlbSBs
ZXZlbC4KKyAgICB2b2lkIGdldE1ldGFkYXRhKGNvbnN0IEVudHJ5KiBlbnRyeSwgUGFzc1JlZlB0
cjxNZXRhZGF0YUNhbGxiYWNrPiBzdWNjZXNzQ2FsbGJhY2ssIFBhc3NSZWZQdHI8RXJyb3JDYWxs
YmFjaz4gZXJyb3JDYWxsYmFjayk7CisgICAgdm9pZCBtb3ZlKGNvbnN0IEVudHJ5KiBzcmMsIFBh
c3NSZWZQdHI8RW50cnk+IHBhcmVudCwgY29uc3QgU3RyaW5nJiBuYW1lLCBQYXNzUmVmUHRyPEVu
dHJ5Q2FsbGJhY2s+LCBQYXNzUmVmUHRyPEVycm9yQ2FsbGJhY2s+KTsKKyAgICB2b2lkIGNvcHko
Y29uc3QgRW50cnkqIHNyYywgUGFzc1JlZlB0cjxFbnRyeT4gcGFyZW50LCBjb25zdCBTdHJpbmcm
IG5hbWUsIFBhc3NSZWZQdHI8RW50cnlDYWxsYmFjaz4sIFBhc3NSZWZQdHI8RXJyb3JDYWxsYmFj
az4pOworICAgIHZvaWQgcmVtb3ZlKGNvbnN0IEVudHJ5KiBlbnRyeSwgUGFzc1JlZlB0cjxWb2lk
Q2FsbGJhY2s+LCBQYXNzUmVmUHRyPEVycm9yQ2FsbGJhY2s+KTsKKyAgICB2b2lkIGdldFBhcmVu
dChjb25zdCBFbnRyeSogZW50cnksIFBhc3NSZWZQdHI8RW50cnlDYWxsYmFjaz4sIFBhc3NSZWZQ
dHI8RXJyb3JDYWxsYmFjaz4pOworICAgIHZvaWQgZ2V0RmlsZShjb25zdCBFbnRyeSogYmFzZSwg
Y29uc3QgU3RyaW5nJiBwYXRoLCBQYXNzUmVmUHRyPEZsYWdzPiwgUGFzc1JlZlB0cjxFbnRyeUNh
bGxiYWNrPiwgUGFzc1JlZlB0cjxFcnJvckNhbGxiYWNrPik7CisgICAgdm9pZCBnZXREaXJlY3Rv
cnkoY29uc3QgRW50cnkqIGJhc2UsIGNvbnN0IFN0cmluZyYgcGF0aCwgUGFzc1JlZlB0cjxGbGFn
cz4sIFBhc3NSZWZQdHI8RW50cnlDYWxsYmFjaz4sIFBhc3NSZWZQdHI8RXJyb3JDYWxsYmFjaz4p
OworICAgIHZvaWQgcmVhZERpcmVjdG9yeShjb25zdCBTdHJpbmcmIHBhdGgsIFBhc3NSZWZQdHI8
RW50cmllc0NhbGxiYWNrPiwgUGFzc1JlZlB0cjxFcnJvckNhbGxiYWNrPik7CisKKyAgICAvLyBB
IGhlbHBlciB0ZW1wbGF0ZSB0byBzY2hlZHVsZSBhIGNhbGxiYWNrIHRhc2suCisgICAgdGVtcGxh
dGUgPHR5cGVuYW1lIENCLCB0eXBlbmFtZSBDQkFyZz4KKyAgICBjbGFzcyBEaXNwYXRjaENhbGxi
YWNrVGFzayA6IHB1YmxpYyBTY3JpcHRFeGVjdXRpb25Db250ZXh0OjpUYXNrIHsKKyAgICBwdWJs
aWM6CisgICAgICAgIERpc3BhdGNoQ2FsbGJhY2tUYXNrKFBhc3NSZWZQdHI8Q0I+IGNhbGxiYWNr
LCBQYXNzUmVmUHRyPENCQXJnPiBhcmcpCisgICAgICAgICAgICA6IG1fY2FsbGJhY2soY2FsbGJh
Y2spCisgICAgICAgICAgICAsIG1fY2FsbGJhY2tBcmcoYXJnKQorICAgICAgICB7CisgICAgICAg
IH0KKworICAgICAgICB2aXJ0dWFsIHZvaWQgcGVyZm9ybVRhc2soU2NyaXB0RXhlY3V0aW9uQ29u
dGV4dCopCisgICAgICAgIHsKKyAgICAgICAgICAgIG1fY2FsbGJhY2stPmhhbmRsZUV2ZW50KG1f
Y2FsbGJhY2tBcmcuZ2V0KCkpOworICAgICAgICB9CisKKyAgICBwcml2YXRlOgorICAgICAgICBS
ZWZQdHI8Q0I+IG1fY2FsbGJhY2s7CisgICAgICAgIFJlZlB0cjxDQkFyZz4gbV9jYWxsYmFja0Fy
ZzsKKyAgICB9OworCisgICAgLy8gU2NoZWR1bGUgYSBjYWxsYmFjay4gVGhpcyBzaG91bGQgbm90
IGNyb3NzIHRocmVhZHMgKHNob3VsZCBiZSBjYWxsZWQgb24gdGhlIHNhbWUgY29udGV4dCB0aHJl
YWQpLgorICAgIHRlbXBsYXRlIDx0eXBlbmFtZSBDQiwgdHlwZW5hbWUgQ0JBcmc+CisgICAgc3Rh
dGljIHZvaWQgc2NoZWR1bGVDYWxsYmFjayhTY3JpcHRFeGVjdXRpb25Db250ZXh0KiBzY3JpcHRF
eGVjdXRpb25Db250ZXh0LCBQYXNzUmVmUHRyPENCPiBjYWxsYmFjaywgUGFzc1JlZlB0cjxDQkFy
Zz4gYXJnKQorICAgIHsKKyAgICAgICAgQVNTRVJUKHNjcmlwdEV4ZWN1dGlvbkNvbnRleHQtPmlz
Q29udGV4dFRocmVhZCgpKTsKKyAgICAgICAgc2NyaXB0RXhlY3V0aW9uQ29udGV4dC0+cG9zdFRh
c2sobmV3IERpc3BhdGNoQ2FsbGJhY2tUYXNrPENCLCBDQkFyZz4oY2FsbGJhY2ssIGFyZykpOwor
ICAgIH0KKworICAgIC8vIFNjaGVkdWxlIGEgVm9pZENhbGxiYWNrLgorICAgIHN0YXRpYyB2b2lk
IHNjaGVkdWxlQ2FsbGJhY2soU2NyaXB0RXhlY3V0aW9uQ29udGV4dCosIFBhc3NSZWZQdHI8Vm9p
ZENhbGxiYWNrPik7CisKIHByaXZhdGU6CiAgICAgRE9NRmlsZVN5c3RlbShTY3JpcHRFeGVjdXRp
b25Db250ZXh0KiwgY29uc3QgU3RyaW5nJiBuYW1lLCBQYXNzT3duUHRyPEFzeW5jRmlsZVN5c3Rl
bT4pOwogCmRpZmYgLS1naXQgYS9XZWJDb3JlL3N0b3JhZ2UvRGlyZWN0b3J5RW50cnkuY3BwIGIv
V2ViQ29yZS9zdG9yYWdlL0RpcmVjdG9yeUVudHJ5LmNwcAppbmRleCA2MGRjYWNlNGQwNmU2NmZk
YjA3OWQxZDkyYjhmMDdkZTUwYzNlYzYyLi45NWMxMmU0OGY4MTBiMWJkZTA4MDEzODAzMTdmNjcy
YzdmODZlY2M0IDEwMDY0NAotLS0gYS9XZWJDb3JlL3N0b3JhZ2UvRGlyZWN0b3J5RW50cnkuY3Bw
CisrKyBiL1dlYkNvcmUvc3RvcmFnZS9EaXJlY3RvcnlFbnRyeS5jcHAKQEAgLTM5LDcgKzM5LDcg
QEAKIAogbmFtZXNwYWNlIFdlYkNvcmUgewogCi1EaXJlY3RvcnlFbnRyeTo6RGlyZWN0b3J5RW50
cnkoUGFzc1JlZlB0cjxET01GaWxlU3lzdGVtPiBmaWxlU3lzdGVtLCBjb25zdCBTdHJpbmcmIGZ1
bGxQYXRoKQorRGlyZWN0b3J5RW50cnk6OkRpcmVjdG9yeUVudHJ5KERPTUZpbGVTeXN0ZW0qIGZp
bGVTeXN0ZW0sIGNvbnN0IFN0cmluZyYgZnVsbFBhdGgpCiAgICAgOiBFbnRyeShmaWxlU3lzdGVt
LCBmdWxsUGF0aCkKIHsKIH0KQEAgLTQ5LDE2ICs0OSwxNCBAQCBQYXNzUmVmUHRyPERpcmVjdG9y
eVJlYWRlcj4gRGlyZWN0b3J5RW50cnk6OmNyZWF0ZVJlYWRlcigpCiAgICAgcmV0dXJuIERpcmVj
dG9yeVJlYWRlcjo6Y3JlYXRlKG1fZmlsZVN5c3RlbSwgbV9mdWxsUGF0aCk7CiB9CiAKLXZvaWQg
RGlyZWN0b3J5RW50cnk6OmdldEZpbGUoY29uc3QgU3RyaW5nJiwgUGFzc1JlZlB0cjxGbGFncz4s
IFBhc3NSZWZQdHI8RW50cnlDYWxsYmFjaz4sIFBhc3NSZWZQdHI8RXJyb3JDYWxsYmFjaz4pCit2
b2lkIERpcmVjdG9yeUVudHJ5OjpnZXRGaWxlKGNvbnN0IFN0cmluZyYgcGF0aCwgUGFzc1JlZlB0
cjxGbGFncz4gZmxhZ3MsIFBhc3NSZWZQdHI8RW50cnlDYWxsYmFjaz4gc3VjY2Vzc0NhbGxiYWNr
LCBQYXNzUmVmUHRyPEVycm9yQ2FsbGJhY2s+IGVycm9yQ2FsbGJhY2spCiB7Ci0gICAgLy8gRklY
TUU6IHRvIGJlIGltcGxlbWVudGVkLgotICAgIEFTU0VSVF9OT1RfUkVBQ0hFRCgpOworICAgIG1f
ZmlsZVN5c3RlbS0+Z2V0RmlsZSh0aGlzLCBwYXRoLCBmbGFncywgc3VjY2Vzc0NhbGxiYWNrLCBl
cnJvckNhbGxiYWNrKTsKIH0KIAotdm9pZCBEaXJlY3RvcnlFbnRyeTo6Z2V0RGlyZWN0b3J5KGNv
bnN0IFN0cmluZyYsIFBhc3NSZWZQdHI8RmxhZ3M+LCBQYXNzUmVmUHRyPEVudHJ5Q2FsbGJhY2s+
LCBQYXNzUmVmUHRyPEVycm9yQ2FsbGJhY2s+KQordm9pZCBEaXJlY3RvcnlFbnRyeTo6Z2V0RGly
ZWN0b3J5KGNvbnN0IFN0cmluZyYgcGF0aCwgUGFzc1JlZlB0cjxGbGFncz4gZmxhZ3MsIFBhc3NS
ZWZQdHI8RW50cnlDYWxsYmFjaz4gc3VjY2Vzc0NhbGxiYWNrLCBQYXNzUmVmUHRyPEVycm9yQ2Fs
bGJhY2s+IGVycm9yQ2FsbGJhY2spCiB7Ci0gICAgLy8gRklYTUU6IHRvIGJlIGltcGxlbWVudGVk
LgotICAgIEFTU0VSVF9OT1RfUkVBQ0hFRCgpOworICAgIG1fZmlsZVN5c3RlbS0+Z2V0RGlyZWN0
b3J5KHRoaXMsIHBhdGgsIGZsYWdzLCBzdWNjZXNzQ2FsbGJhY2ssIGVycm9yQ2FsbGJhY2spOwog
fQogCiB9IC8vIG5hbWVzcGFjZQpkaWZmIC0tZ2l0IGEvV2ViQ29yZS9zdG9yYWdlL0RpcmVjdG9y
eUVudHJ5LmggYi9XZWJDb3JlL3N0b3JhZ2UvRGlyZWN0b3J5RW50cnkuaAppbmRleCAyYWU0ZmI1
NGYzOWFlNzBhYTYzZTczMDY3NGU2ZjhjNzNiMWU4OTM1Li4zY2Q4YWI1ZGM3ODdjMGFlZDYwMTcx
NDNmNTQyNzNmOWY5Y2Y4OWVkIDEwMDY0NAotLS0gYS9XZWJDb3JlL3N0b3JhZ2UvRGlyZWN0b3J5
RW50cnkuaAorKysgYi9XZWJDb3JlL3N0b3JhZ2UvRGlyZWN0b3J5RW50cnkuaApAQCAtNDcsNyAr
NDcsNyBAQCBjbGFzcyBFcnJvckNhbGxiYWNrOwogCiBjbGFzcyBEaXJlY3RvcnlFbnRyeSA6IHB1
YmxpYyBFbnRyeSB7CiBwdWJsaWM6Ci0gICAgc3RhdGljIFBhc3NSZWZQdHI8RGlyZWN0b3J5RW50
cnk+IGNyZWF0ZShQYXNzUmVmUHRyPERPTUZpbGVTeXN0ZW0+IGZpbGVTeXN0ZW0sIGNvbnN0IFN0
cmluZyYgZnVsbFBhdGgpCisgICAgc3RhdGljIFBhc3NSZWZQdHI8RGlyZWN0b3J5RW50cnk+IGNy
ZWF0ZShET01GaWxlU3lzdGVtKiBmaWxlU3lzdGVtLCBjb25zdCBTdHJpbmcmIGZ1bGxQYXRoKQog
ICAgIHsKICAgICAgICAgcmV0dXJuIGFkb3B0UmVmKG5ldyBEaXJlY3RvcnlFbnRyeShmaWxlU3lz
dGVtLCBmdWxsUGF0aCkpOwogICAgIH0KQEAgLTU4LDcgKzU4LDcgQEAgcHVibGljOgogICAgIHZv
aWQgZ2V0RGlyZWN0b3J5KGNvbnN0IFN0cmluZyYgcGF0aCwgUGFzc1JlZlB0cjxGbGFncz4gb3B0
aW9ucyA9IDAsIFBhc3NSZWZQdHI8RW50cnlDYWxsYmFjaz4gc3VjY2Vzc0NhbGxiYWNrID0gMCwg
UGFzc1JlZlB0cjxFcnJvckNhbGxiYWNrPiBlcnJvckNhbGxiYWNrID0gMCk7CiAKIHByaXZhdGU6
Ci0gICAgRGlyZWN0b3J5RW50cnkoUGFzc1JlZlB0cjxET01GaWxlU3lzdGVtPiBmaWxlU3lzdGVt
LCBjb25zdCBTdHJpbmcmIGZ1bGxQYXRoKTsKKyAgICBEaXJlY3RvcnlFbnRyeShET01GaWxlU3lz
dGVtKiBmaWxlU3lzdGVtLCBjb25zdCBTdHJpbmcmIGZ1bGxQYXRoKTsKIH07CiAKIH0gLy8gbmFt
ZXNwYWNlCmRpZmYgLS1naXQgYS9XZWJDb3JlL3N0b3JhZ2UvRGlyZWN0b3J5UmVhZGVyLmNwcCBi
L1dlYkNvcmUvc3RvcmFnZS9EaXJlY3RvcnlSZWFkZXIuY3BwCmluZGV4IDBiMzBmNzA1MzE0Yzhm
ZDkyNzY1OTJiOTcwYWI2ODA3NjY0MTY0ZTUuLmIwZWVmMWNjNDkyNzZmMzNjNzk0MGU2NjkyY2Ey
ZjVkNjAwZjA1MTUgMTAwNjQ0Ci0tLSBhL1dlYkNvcmUvc3RvcmFnZS9EaXJlY3RvcnlSZWFkZXIu
Y3BwCisrKyBiL1dlYkNvcmUvc3RvcmFnZS9EaXJlY3RvcnlSZWFkZXIuY3BwCkBAIC0zOSwxNiAr
MzksMTUgQEAKIAogbmFtZXNwYWNlIFdlYkNvcmUgewogCi1EaXJlY3RvcnlSZWFkZXI6OkRpcmVj
dG9yeVJlYWRlcihQYXNzUmVmUHRyPERPTUZpbGVTeXN0ZW0+IGZpbGVTeXN0ZW0sIGNvbnN0IFN0
cmluZyYgcGF0aCkKK0RpcmVjdG9yeVJlYWRlcjo6RGlyZWN0b3J5UmVhZGVyKFBhc3NSZWZQdHI8
RE9NRmlsZVN5c3RlbT4gZmlsZVN5c3RlbSwgY29uc3QgU3RyaW5nJiBmdWxsUGF0aCkKICAgICA6
IG1fZmlsZVN5c3RlbShmaWxlU3lzdGVtKQotICAgICwgbV9wYXRoKHBhdGgpCisgICAgLCBtX2Z1
bGxQYXRoKGZ1bGxQYXRoKQogewogfQogCi12b2lkIERpcmVjdG9yeVJlYWRlcjo6cmVhZEVudHJp
ZXMoUGFzc1JlZlB0cjxFbnRyaWVzQ2FsbGJhY2s+LCBQYXNzUmVmUHRyPEVycm9yQ2FsbGJhY2s+
KQordm9pZCBEaXJlY3RvcnlSZWFkZXI6OnJlYWRFbnRyaWVzKFBhc3NSZWZQdHI8RW50cmllc0Nh
bGxiYWNrPiBlbnRyaWVzQ2FsbGJhY2ssIFBhc3NSZWZQdHI8RXJyb3JDYWxsYmFjaz4gZXJyb3JD
YWxsYmFjaykKIHsKLSAgICAvLyBGSVhNRTogdG8gYmUgaW1wbGVtZW50ZWQuCi0gICAgQVNTRVJU
X05PVF9SRUFDSEVEKCk7CisgICAgbV9maWxlU3lzdGVtLT5yZWFkRGlyZWN0b3J5KG1fZnVsbFBh
dGgsIGVudHJpZXNDYWxsYmFjaywgZXJyb3JDYWxsYmFjayk7CiB9CiAKIH0gLy8gbmFtZXNwYWNl
CmRpZmYgLS1naXQgYS9XZWJDb3JlL3N0b3JhZ2UvRGlyZWN0b3J5UmVhZGVyLmggYi9XZWJDb3Jl
L3N0b3JhZ2UvRGlyZWN0b3J5UmVhZGVyLmgKaW5kZXggY2Y1ZGE4ZjNkYzc1ZjQzMGUzZTY0NmM4
OTJlNzU2NjVkMWQ0NTE3MC4uMGUyZWYwZjZjZDIyOWNkZDRkOTU3ZTFlZjViMjc0YTU4YzYzOTFk
MCAxMDA2NDQKLS0tIGEvV2ViQ29yZS9zdG9yYWdlL0RpcmVjdG9yeVJlYWRlci5oCisrKyBiL1dl
YkNvcmUvc3RvcmFnZS9EaXJlY3RvcnlSZWFkZXIuaApAQCAtNTYsNyArNTYsNyBAQCBwcml2YXRl
OgogICAgIERpcmVjdG9yeVJlYWRlcihQYXNzUmVmUHRyPERPTUZpbGVTeXN0ZW0+IGZpbGVTeXN0
ZW0sIGNvbnN0IFN0cmluZyYgcGF0aCk7CiAKICAgICBSZWZQdHI8RE9NRmlsZVN5c3RlbT4gbV9m
aWxlU3lzdGVtOwotICAgIFN0cmluZyBtX3BhdGg7CisgICAgU3RyaW5nIG1fZnVsbFBhdGg7CiB9
OwogCiB9IC8vIG5hbWVzcGFjZQpkaWZmIC0tZ2l0IGEvV2ViQ29yZS9zdG9yYWdlL0VudHJ5LmNw
cCBiL1dlYkNvcmUvc3RvcmFnZS9FbnRyeS5jcHAKaW5kZXggNjc4MzI5MTM5OGE5ZWVmNzcwZjk1
NDA3YjkxYjljN2Q3ZTE0ZmYzMC4uZmJiZWRmMjBlNzQ0ZDI2YzBmYTk1Y2YzMzQ1OWM4NzIwZGNi
YzdkOSAxMDA2NDQKLS0tIGEvV2ViQ29yZS9zdG9yYWdlL0VudHJ5LmNwcAorKysgYi9XZWJDb3Jl
L3N0b3JhZ2UvRW50cnkuY3BwCkBAIC0zMiwxNSArMzIsMTcgQEAKIAogI2lmIEVOQUJMRShGSUxF
X1NZU1RFTSkKIAorI2luY2x1ZGUgIkRPTUZpbGVQYXRoLmgiCiAjaW5jbHVkZSAiRE9NRmlsZVN5
c3RlbS5oIgogI2luY2x1ZGUgIkVudHJ5Q2FsbGJhY2suaCIKICNpbmNsdWRlICJFcnJvckNhbGxi
YWNrLmgiCisjaW5jbHVkZSAiRmlsZUVycm9yLmgiCiAjaW5jbHVkZSAiTWV0YWRhdGFDYWxsYmFj
ay5oIgogI2luY2x1ZGUgIlZvaWRDYWxsYmFjay5oIgogCiBuYW1lc3BhY2UgV2ViQ29yZSB7CiAK
LUVudHJ5OjpFbnRyeShQYXNzUmVmUHRyPERPTUZpbGVTeXN0ZW0+IGZpbGVTeXN0ZW0sIGNvbnN0
IFN0cmluZyYgZnVsbFBhdGgpCitFbnRyeTo6RW50cnkoRE9NRmlsZVN5c3RlbSogZmlsZVN5c3Rl
bSwgY29uc3QgU3RyaW5nJiBmdWxsUGF0aCkKICAgICA6IG1fZmlsZVN5c3RlbShmaWxlU3lzdGVt
KQogICAgICwgbV9mdWxsUGF0aChmdWxsUGF0aCkKIHsKQEAgLTUxLDM0ICs1MywyOSBAQCBFbnRy
eTo6RW50cnkoUGFzc1JlZlB0cjxET01GaWxlU3lzdGVtPiBmaWxlU3lzdGVtLCBjb25zdCBTdHJp
bmcmIGZ1bGxQYXRoKQogICAgICAgICBtX25hbWUgPSBmdWxsUGF0aDsKIH0KIAotdm9pZCBFbnRy
eTo6Z2V0TWV0YWRhdGEoUGFzc1JlZlB0cjxNZXRhZGF0YUNhbGxiYWNrPiwgUGFzc1JlZlB0cjxF
cnJvckNhbGxiYWNrPikKK3ZvaWQgRW50cnk6OmdldE1ldGFkYXRhKFBhc3NSZWZQdHI8TWV0YWRh
dGFDYWxsYmFjaz4gc3VjY2Vzc0NhbGxiYWNrLCBQYXNzUmVmUHRyPEVycm9yQ2FsbGJhY2s+IGVy
cm9yQ2FsbGJhY2spCiB7Ci0gICAgLy8gRklYTUU6IHRvIGJlIGltcGxlbWVudGVkLgotICAgIEFT
U0VSVF9OT1RfUkVBQ0hFRCgpOworICAgIG1fZmlsZVN5c3RlbS0+Z2V0TWV0YWRhdGEodGhpcywg
c3VjY2Vzc0NhbGxiYWNrLCBlcnJvckNhbGxiYWNrKTsKIH0KIAotdm9pZCBFbnRyeTo6bW92ZVRv
KFBhc3NSZWZQdHI8RW50cnk+LCBjb25zdCBTdHJpbmcmLCBQYXNzUmVmUHRyPEVudHJ5Q2FsbGJh
Y2s+LCBQYXNzUmVmUHRyPEVycm9yQ2FsbGJhY2s+KQordm9pZCBFbnRyeTo6bW92ZVRvKFBhc3NS
ZWZQdHI8RW50cnk+IHBhcmVudCwgY29uc3QgU3RyaW5nJiBuYW1lLCBQYXNzUmVmUHRyPEVudHJ5
Q2FsbGJhY2s+IHN1Y2Nlc3NDYWxsYmFjaywgUGFzc1JlZlB0cjxFcnJvckNhbGxiYWNrPiBlcnJv
ckNhbGxiYWNrKSBjb25zdAogewotICAgIC8vIEZJWE1FOiB0byBiZSBpbXBsZW1lbnRlZC4KLSAg
ICBBU1NFUlRfTk9UX1JFQUNIRUQoKTsKKyAgICBtX2ZpbGVTeXN0ZW0tPm1vdmUodGhpcywgcGFy
ZW50LCBuYW1lLCBzdWNjZXNzQ2FsbGJhY2ssIGVycm9yQ2FsbGJhY2spOwogfQogCi12b2lkIEVu
dHJ5Ojpjb3B5VG8oUGFzc1JlZlB0cjxFbnRyeT4sIGNvbnN0IFN0cmluZyYsIFBhc3NSZWZQdHI8
RW50cnlDYWxsYmFjaz4sIFBhc3NSZWZQdHI8RXJyb3JDYWxsYmFjaz4pCit2b2lkIEVudHJ5Ojpj
b3B5VG8oUGFzc1JlZlB0cjxFbnRyeT4gcGFyZW50LCBjb25zdCBTdHJpbmcmIG5hbWUsIFBhc3NS
ZWZQdHI8RW50cnlDYWxsYmFjaz4gc3VjY2Vzc0NhbGxiYWNrLCBQYXNzUmVmUHRyPEVycm9yQ2Fs
bGJhY2s+IGVycm9yQ2FsbGJhY2spIGNvbnN0CiB7Ci0gICAgLy8gRklYTUU6IHRvIGJlIGltcGxl
bWVudGVkLgotICAgIEFTU0VSVF9OT1RfUkVBQ0hFRCgpOworICAgIG1fZmlsZVN5c3RlbS0+Y29w
eSh0aGlzLCBwYXJlbnQsIG5hbWUsIHN1Y2Nlc3NDYWxsYmFjaywgZXJyb3JDYWxsYmFjayk7CiB9
CiAKLXZvaWQgRW50cnk6OnJlbW92ZShQYXNzUmVmUHRyPFZvaWRDYWxsYmFjaz4sIFBhc3NSZWZQ
dHI8RXJyb3JDYWxsYmFjaz4pCit2b2lkIEVudHJ5OjpyZW1vdmUoUGFzc1JlZlB0cjxWb2lkQ2Fs
bGJhY2s+IHN1Y2Nlc3NDYWxsYmFjaywgUGFzc1JlZlB0cjxFcnJvckNhbGxiYWNrPiBlcnJvckNh
bGxiYWNrKSBjb25zdAogewotICAgIC8vIEZJWE1FOiB0byBiZSBpbXBsZW1lbnRlZC4KLSAgICBB
U1NFUlRfTk9UX1JFQUNIRUQoKTsKKyAgICBtX2ZpbGVTeXN0ZW0tPnJlbW92ZSh0aGlzLCBzdWNj
ZXNzQ2FsbGJhY2ssIGVycm9yQ2FsbGJhY2spOwogfQogCi12b2lkIEVudHJ5OjpnZXRQYXJlbnQo
UGFzc1JlZlB0cjxFbnRyeUNhbGxiYWNrPiwgUGFzc1JlZlB0cjxFcnJvckNhbGxiYWNrPikKK3Zv
aWQgRW50cnk6OmdldFBhcmVudChQYXNzUmVmUHRyPEVudHJ5Q2FsbGJhY2s+IHN1Y2Nlc3NDYWxs
YmFjaywgUGFzc1JlZlB0cjxFcnJvckNhbGxiYWNrPiBlcnJvckNhbGxiYWNrKSBjb25zdAogewot
ICAgIC8vIEZJWE1FOiB0byBiZSBpbXBsZW1lbnRlZC4KLSAgICBBU1NFUlRfTk9UX1JFQUNIRUQo
KTsKKyAgICBtX2ZpbGVTeXN0ZW0tPmdldFBhcmVudCh0aGlzLCBzdWNjZXNzQ2FsbGJhY2ssIGVy
cm9yQ2FsbGJhY2spOwogfQogCiBTdHJpbmcgRW50cnk6OnRvVVJJKGNvbnN0IFN0cmluZyYpCmRp
ZmYgLS1naXQgYS9XZWJDb3JlL3N0b3JhZ2UvRW50cnkuaCBiL1dlYkNvcmUvc3RvcmFnZS9FbnRy
eS5oCmluZGV4IDdiYmIyNjU3NGFiMTE3MDA2YTIxMjE4ZDVlZjVjMDQ4YzI2OGMzMWIuLjlhZjUz
MmY5YmFhYzU1ZGMxMTQ0MmI4ZWUwNzkzYTU5ZjlkZTA4YTEgMTAwNjQ0Ci0tLSBhL1dlYkNvcmUv
c3RvcmFnZS9FbnRyeS5oCisrKyBiL1dlYkNvcmUvc3RvcmFnZS9FbnRyeS5oCkBAIC01NCwyMiAr
NTQsMjEgQEAgcHVibGljOgogICAgIGNvbnN0IFN0cmluZyYgZnVsbFBhdGgoKSBjb25zdCB7IHJl
dHVybiBtX2Z1bGxQYXRoOyB9CiAgICAgY29uc3QgU3RyaW5nJiBuYW1lKCkgY29uc3QgeyByZXR1
cm4gbV9uYW1lOyB9CiAKLSAgICBET01GaWxlU3lzdGVtKiBmaWxlc3lzdGVtKCkgY29uc3QgeyBy
ZXR1cm4gbV9maWxlU3lzdGVtLmdldCgpOyB9CisgICAgRE9NRmlsZVN5c3RlbSogZmlsZXN5c3Rl
bSgpIGNvbnN0IHsgcmV0dXJuIG1fZmlsZVN5c3RlbTsgfQogCiAgICAgdmlydHVhbCB2b2lkIGdl
dE1ldGFkYXRhKFBhc3NSZWZQdHI8TWV0YWRhdGFDYWxsYmFjaz4gc3VjY2Vzc0NhbGxiYWNrID0g
MCwgUGFzc1JlZlB0cjxFcnJvckNhbGxiYWNrPiBlcnJvckNhbGxiYWNrID0gMCk7Ci0KLSAgICB2
aXJ0dWFsIHZvaWQgbW92ZVRvKFBhc3NSZWZQdHI8RW50cnk+IHBhcmVudCwgY29uc3QgU3RyaW5n
JiBuYW1lID0gU3RyaW5nKCksIFBhc3NSZWZQdHI8RW50cnlDYWxsYmFjaz4gc3VjY2Vzc0NhbGxi
YWNrID0gMCwgUGFzc1JlZlB0cjxFcnJvckNhbGxiYWNrPiBlcnJvckNhbGxiYWNrID0gMCk7Ci0g
ICAgdmlydHVhbCB2b2lkIGNvcHlUbyhQYXNzUmVmUHRyPEVudHJ5PiBwYXJlbnQsIGNvbnN0IFN0
cmluZyYgbmFtZSA9IFN0cmluZygpLCBQYXNzUmVmUHRyPEVudHJ5Q2FsbGJhY2s+IHN1Y2Nlc3ND
YWxsYmFjayA9IDAsIFBhc3NSZWZQdHI8RXJyb3JDYWxsYmFjaz4gZXJyb3JDYWxsYmFjayA9IDAp
OwotICAgIHZpcnR1YWwgdm9pZCByZW1vdmUoUGFzc1JlZlB0cjxWb2lkQ2FsbGJhY2s+IHN1Y2Nl
c3NDYWxsYmFjayA9IDAsIFBhc3NSZWZQdHI8RXJyb3JDYWxsYmFjaz4gZXJyb3JDYWxsYmFjayA9
IDApOwotICAgIHZpcnR1YWwgdm9pZCBnZXRQYXJlbnQoUGFzc1JlZlB0cjxFbnRyeUNhbGxiYWNr
PiBzdWNjZXNzQ2FsbGJhY2sgPSAwLCBQYXNzUmVmUHRyPEVycm9yQ2FsbGJhY2s+IGVycm9yQ2Fs
bGJhY2sgPSAwKTsKKyAgICB2aXJ0dWFsIHZvaWQgbW92ZVRvKFBhc3NSZWZQdHI8RW50cnk+IHBh
cmVudCwgY29uc3QgU3RyaW5nJiBuYW1lID0gU3RyaW5nKCksIFBhc3NSZWZQdHI8RW50cnlDYWxs
YmFjaz4gc3VjY2Vzc0NhbGxiYWNrID0gMCwgUGFzc1JlZlB0cjxFcnJvckNhbGxiYWNrPiBlcnJv
ckNhbGxiYWNrID0gMCkgY29uc3Q7CisgICAgdmlydHVhbCB2b2lkIGNvcHlUbyhQYXNzUmVmUHRy
PEVudHJ5PiBwYXJlbnQsIGNvbnN0IFN0cmluZyYgbmFtZSA9IFN0cmluZygpLCBQYXNzUmVmUHRy
PEVudHJ5Q2FsbGJhY2s+IHN1Y2Nlc3NDYWxsYmFjayA9IDAsIFBhc3NSZWZQdHI8RXJyb3JDYWxs
YmFjaz4gZXJyb3JDYWxsYmFjayA9IDApIGNvbnN0OworICAgIHZpcnR1YWwgdm9pZCByZW1vdmUo
UGFzc1JlZlB0cjxWb2lkQ2FsbGJhY2s+IHN1Y2Nlc3NDYWxsYmFjayA9IDAsIFBhc3NSZWZQdHI8
RXJyb3JDYWxsYmFjaz4gZXJyb3JDYWxsYmFjayA9IDApIGNvbnN0OworICAgIHZpcnR1YWwgdm9p
ZCBnZXRQYXJlbnQoUGFzc1JlZlB0cjxFbnRyeUNhbGxiYWNrPiBzdWNjZXNzQ2FsbGJhY2sgPSAw
LCBQYXNzUmVmUHRyPEVycm9yQ2FsbGJhY2s+IGVycm9yQ2FsbGJhY2sgPSAwKSBjb25zdDsKIAog
ICAgIHZpcnR1YWwgU3RyaW5nIHRvVVJJKGNvbnN0IFN0cmluZyYgbWltZVR5cGUgPSBTdHJpbmco
KSk7CiAKIHByb3RlY3RlZDoKLSAgICBFbnRyeShQYXNzUmVmUHRyPERPTUZpbGVTeXN0ZW0+IGZp
bGVTeXN0ZW0sIGNvbnN0IFN0cmluZyYgZnVsbFBhdGgpOworICAgIEVudHJ5KERPTUZpbGVTeXN0
ZW0qIGZpbGVTeXN0ZW0sIGNvbnN0IFN0cmluZyYgZnVsbFBhdGgpOwogCi0gICAgUmVmUHRyPERP
TUZpbGVTeXN0ZW0+IG1fZmlsZVN5c3RlbTsKLSAgICBTdHJpbmcgbV9mdWxsUGF0aDsgLy8gdmly
dHVhbCBwYXRoCisgICAgRE9NRmlsZVN5c3RlbSogbV9maWxlU3lzdGVtOworICAgIFN0cmluZyBt
X2Z1bGxQYXRoOwogICAgIFN0cmluZyBtX25hbWU7CiB9OwogCmRpZmYgLS1naXQgYS9XZWJDb3Jl
L3N0b3JhZ2UvRmlsZUVudHJ5LmNwcCBiL1dlYkNvcmUvc3RvcmFnZS9GaWxlRW50cnkuY3BwCmlu
ZGV4IDRiZWMwMWQ4OWZiNjY1YzRiMzljMjk3ODRlMjAwY2I0MTMzN2IwOGUuLmUyYTU4M2NjNjk0
NzU3MGM0ODliOTk1MGQwMDRiMjg1N2QzMDczZmQgMTAwNjQ0Ci0tLSBhL1dlYkNvcmUvc3RvcmFn
ZS9GaWxlRW50cnkuY3BwCisrKyBiL1dlYkNvcmUvc3RvcmFnZS9GaWxlRW50cnkuY3BwCkBAIC0z
NSw3ICszNSw3IEBACiAKIG5hbWVzcGFjZSBXZWJDb3JlIHsKIAotRmlsZUVudHJ5OjpGaWxlRW50
cnkoUGFzc1JlZlB0cjxET01GaWxlU3lzdGVtPiBmaWxlU3lzdGVtLCBjb25zdCBTdHJpbmcmIGZ1
bGxQYXRoKQorRmlsZUVudHJ5OjpGaWxlRW50cnkoRE9NRmlsZVN5c3RlbSogZmlsZVN5c3RlbSwg
Y29uc3QgU3RyaW5nJiBmdWxsUGF0aCkKICAgICA6IEVudHJ5KGZpbGVTeXN0ZW0sIGZ1bGxQYXRo
KQogewogfQpkaWZmIC0tZ2l0IGEvV2ViQ29yZS9zdG9yYWdlL0ZpbGVFbnRyeS5oIGIvV2ViQ29y
ZS9zdG9yYWdlL0ZpbGVFbnRyeS5oCmluZGV4IGIwMmI1YzcwNDlhZjM3NjVjMmVkOWVmZmUzMTM1
ZDYxOGNjMTMzN2YuLmFiY2M2YmI2NjlmZmNjNTBjYjk1NDlkOTg5MDY0MTdiMDdiMWEyNjYgMTAw
NjQ0Ci0tLSBhL1dlYkNvcmUvc3RvcmFnZS9GaWxlRW50cnkuaAorKysgYi9XZWJDb3JlL3N0b3Jh
Z2UvRmlsZUVudHJ5LmgKQEAgLTM0LDkgKzM0LDYgQEAKICNpZiBFTkFCTEUoRklMRV9TWVNURU0p
CiAKICNpbmNsdWRlICJFbnRyeS5oIgotI2luY2x1ZGUgIlBsYXRmb3JtU3RyaW5nLmgiCi0jaW5j
bHVkZSA8d3RmL1Bhc3NSZWZQdHIuaD4KLSNpbmNsdWRlIDx3dGYvUmVmQ291bnRlZC5oPgogCiBu
YW1lc3BhY2UgV2ViQ29yZSB7CiAKQEAgLTQ0LDE0ICs0MSwxNCBAQCBjbGFzcyBET01GaWxlU3lz
dGVtOwogCiBjbGFzcyBGaWxlRW50cnkgOiBwdWJsaWMgRW50cnkgewogcHVibGljOgotICAgIHN0
YXRpYyBQYXNzUmVmUHRyPEZpbGVFbnRyeT4gY3JlYXRlKFBhc3NSZWZQdHI8RE9NRmlsZVN5c3Rl
bT4gZmlsZVN5c3RlbSwgY29uc3QgU3RyaW5nJiBmdWxsUGF0aCkKKyAgICBzdGF0aWMgUGFzc1Jl
ZlB0cjxGaWxlRW50cnk+IGNyZWF0ZShET01GaWxlU3lzdGVtKiBmaWxlU3lzdGVtLCBjb25zdCBT
dHJpbmcmIGZ1bGxQYXRoKQogICAgIHsKICAgICAgICAgcmV0dXJuIGFkb3B0UmVmKG5ldyBGaWxl
RW50cnkoZmlsZVN5c3RlbSwgZnVsbFBhdGgpKTsKICAgICB9CiAgICAgdmlydHVhbCBib29sIGlz
RmlsZSgpIGNvbnN0IHsgcmV0dXJuIHRydWU7IH0KIAogcHJpdmF0ZToKLSAgICBGaWxlRW50cnko
UGFzc1JlZlB0cjxET01GaWxlU3lzdGVtPiBmaWxlU3lzdGVtLCBjb25zdCBTdHJpbmcmIGZ1bGxQ
YXRoKTsKKyAgICBGaWxlRW50cnkoRE9NRmlsZVN5c3RlbSogZmlsZVN5c3RlbSwgY29uc3QgU3Ry
aW5nJiBmdWxsUGF0aCk7CiB9OwogCiB9IC8vIG5hbWVzcGFjZQpkaWZmIC0tZ2l0IGEvV2ViQ29y
ZS9zdG9yYWdlL0ZpbGVTeXN0ZW1DYWxsYmFja3MuY3BwIGIvV2ViQ29yZS9zdG9yYWdlL0ZpbGVT
eXN0ZW1DYWxsYmFja3MuY3BwCmluZGV4IDFkZDk3MjUyNzU3YzlkZDc0OWNlYzk1Y2M0ODE2ZDY2
N2JmY2IzNTYuLjMyOWNhYzVkOGYxNGJhNDZiOTNmMjI4N2NhZDc4N2U4ZmFkYWQ2NjcgMTAwNjQ0
Ci0tLSBhL1dlYkNvcmUvc3RvcmFnZS9GaWxlU3lzdGVtQ2FsbGJhY2tzLmNwcAorKysgYi9XZWJD
b3JlL3N0b3JhZ2UvRmlsZVN5c3RlbUNhbGxiYWNrcy5jcHAKQEAgLTM0LDYgKzM0LDcgQEAKICNp
ZiBFTkFCTEUoRklMRV9TWVNURU0pCiAKICNpbmNsdWRlICJBc3luY0ZpbGVTeXN0ZW0uaCIKKyNp
bmNsdWRlICJET01GaWxlUGF0aC5oIgogI2luY2x1ZGUgIkRPTUZpbGVTeXN0ZW0uaCIKICNpbmNs
dWRlICJEaXJlY3RvcnlFbnRyeS5oIgogI2luY2x1ZGUgIkVudHJpZXNDYWxsYmFjay5oIgpAQCAt
NTEsOCArNTIsOSBAQAogCiBuYW1lc3BhY2UgV2ViQ29yZSB7CiAKLUZpbGVTeXN0ZW1DYWxsYmFj
a3NCYXNlOjpGaWxlU3lzdGVtQ2FsbGJhY2tzQmFzZShQYXNzUmVmUHRyPEVycm9yQ2FsbGJhY2s+
IGVycm9yQ2FsbGJhY2spCitGaWxlU3lzdGVtQ2FsbGJhY2tzQmFzZTo6RmlsZVN5c3RlbUNhbGxi
YWNrc0Jhc2UoUGFzc1JlZlB0cjxFcnJvckNhbGxiYWNrPiBlcnJvckNhbGxiYWNrLCBTY3JpcHRF
eGVjdXRpb25Db250ZXh0KiBjb250ZXh0KQogICAgIDogbV9lcnJvckNhbGxiYWNrKGVycm9yQ2Fs
bGJhY2spCisgICAgLCBtX3NjcmlwdEV4ZWN1dGlvbkNvbnRleHQoY29udGV4dCkKIHsKIH0KIApA
QCAtNjAsNDggKzYyLDQ1IEBAIEZpbGVTeXN0ZW1DYWxsYmFja3NCYXNlOjp+RmlsZVN5c3RlbUNh
bGxiYWNrc0Jhc2UoKQogewogfQogCi12b2lkIEZpbGVTeXN0ZW1DYWxsYmFja3NCYXNlOjpkaWRT
dWNjZWVkKCkKK3ZvaWQgRmlsZVN5c3RlbUNhbGxiYWNrc0Jhc2U6OmRpZFN1Y2NlZWQoYm9vbCkK
IHsKICAgICAvLyBFYWNoIHN1YmNsYXNzIG11c3QgaW1wbGVtZW50IGFuIGFwcHJvcHJpYXRlIG9u
ZS4KICAgICBBU1NFUlRfTk9UX1JFQUNIRUQoKTsKIH0KIAotdm9pZCBGaWxlU3lzdGVtQ2FsbGJh
Y2tzQmFzZTo6ZGlkT3BlbkZpbGVTeXN0ZW0oY29uc3QgU3RyaW5nJiwgUGFzc093blB0cjxBc3lu
Y0ZpbGVTeXN0ZW0+KQordm9pZCBGaWxlU3lzdGVtQ2FsbGJhY2tzQmFzZTo6ZGlkT3BlbkZpbGVT
eXN0ZW0oY29uc3QgU3RyaW5nJiwgUGFzc093blB0cjxBc3luY0ZpbGVTeXN0ZW0+LCBib29sKQog
ewogICAgIC8vIEVhY2ggc3ViY2xhc3MgbXVzdCBpbXBsZW1lbnQgYW4gYXBwcm9wcmlhdGUgb25l
LgogICAgIEFTU0VSVF9OT1RfUkVBQ0hFRCgpOwogfQogCi12b2lkIEZpbGVTeXN0ZW1DYWxsYmFj
a3NCYXNlOjpkaWRSZWFkTWV0YWRhdGEoZG91YmxlKQordm9pZCBGaWxlU3lzdGVtQ2FsbGJhY2tz
QmFzZTo6ZGlkUmVhZE1ldGFkYXRhKGRvdWJsZSwgYm9vbCkKIHsKICAgICAvLyBFYWNoIHN1YmNs
YXNzIG11c3QgaW1wbGVtZW50IGFuIGFwcHJvcHJpYXRlIG9uZS4KICAgICBBU1NFUlRfTk9UX1JF
QUNIRUQoKTsKIH0KIAotdm9pZCBGaWxlU3lzdGVtQ2FsbGJhY2tzQmFzZTo6ZGlkUmVhZERpcmVj
dG9yeUVudHJpZXMoYm9vbCkKK3ZvaWQgRmlsZVN5c3RlbUNhbGxiYWNrc0Jhc2U6OmRpZFJlYWRE
aXJlY3RvcnlFbnRyaWVzKGJvb2wsIGJvb2wpCiB7CiAgICAgLy8gRWFjaCBzdWJjbGFzcyBtdXN0
IGltcGxlbWVudCBhbiBhcHByb3ByaWF0ZSBvbmUuCiAgICAgQVNTRVJUX05PVF9SRUFDSEVEKCk7
CiB9CiAKLXZvaWQgRmlsZVN5c3RlbUNhbGxiYWNrc0Jhc2U6OmRpZFJlYWREaXJlY3RvcnlFbnRy
eShjb25zdCBTdHJpbmcmLCBib29sKQordm9pZCBGaWxlU3lzdGVtQ2FsbGJhY2tzQmFzZTo6ZGlk
UmVhZERpcmVjdG9yeUVudHJ5KGNvbnN0IFN0cmluZyYsIGJvb2wsIGJvb2wpCiB7CiAgICAgLy8g
RWFjaCBzdWJjbGFzcyBtdXN0IGltcGxlbWVudCBhbiBhcHByb3ByaWF0ZSBvbmUuCiAgICAgQVNT
RVJUX05PVF9SRUFDSEVEKCk7CiB9CiAKLXZvaWQgRmlsZVN5c3RlbUNhbGxiYWNrc0Jhc2U6OmRp
ZEZhaWwoaW50IGNvZGUpCit2b2lkIEZpbGVTeXN0ZW1DYWxsYmFja3NCYXNlOjpkaWRGYWlsKGlu
dCBjb2RlLCBib29sIGZpcmVJbW1lZGlhdGUpCiB7Ci0gICAgaWYgKG1fZXJyb3JDYWxsYmFjaykg
ewotICAgICAgICBtX2Vycm9yQ2FsbGJhY2stPmhhbmRsZUV2ZW50KEZpbGVFcnJvcjo6Y3JlYXRl
KGNvZGUpLmdldCgpKTsKLSAgICAgICAgbV9lcnJvckNhbGxiYWNrLmNsZWFyKCk7Ci0gICAgfQor
ICAgIGZpcmVDYWxsYmFjayhtX2Vycm9yQ2FsbGJhY2sucmVsZWFzZSgpLCBGaWxlRXJyb3I6OmNy
ZWF0ZShjb2RlKSwgZmlyZUltbWVkaWF0ZSk7CiB9CiAKIC8vIEVudHJ5Q2FsbGJhY2tzIC0tLS0t
LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0K
IAotRW50cnlDYWxsYmFja3M6OkVudHJ5Q2FsbGJhY2tzKFBhc3NSZWZQdHI8RW50cnlDYWxsYmFj
az4gc3VjY2Vzc0NhbGxiYWNrLCBQYXNzUmVmUHRyPEVycm9yQ2FsbGJhY2s+IGVycm9yQ2FsbGJh
Y2ssIERPTUZpbGVTeXN0ZW0qIGZpbGVTeXN0ZW0sIGNvbnN0IFN0cmluZyYgZXhwZWN0ZWRQYXRo
LCBib29sIGlzRGlyZWN0b3J5KQotICAgIDogRmlsZVN5c3RlbUNhbGxiYWNrc0Jhc2UoZXJyb3JD
YWxsYmFjaykKK0VudHJ5Q2FsbGJhY2tzOjpFbnRyeUNhbGxiYWNrcyhQYXNzUmVmUHRyPEVudHJ5
Q2FsbGJhY2s+IHN1Y2Nlc3NDYWxsYmFjaywgUGFzc1JlZlB0cjxFcnJvckNhbGxiYWNrPiBlcnJv
ckNhbGxiYWNrLCBTY3JpcHRFeGVjdXRpb25Db250ZXh0KiBjb250ZXh0LCBET01GaWxlU3lzdGVt
KiBmaWxlU3lzdGVtLCBjb25zdCBTdHJpbmcmIGV4cGVjdGVkUGF0aCwgYm9vbCBpc0RpcmVjdG9y
eSkKKyAgICA6IEZpbGVTeXN0ZW1DYWxsYmFja3NCYXNlKGVycm9yQ2FsbGJhY2ssIGNvbnRleHQp
CiAgICAgLCBtX3N1Y2Nlc3NDYWxsYmFjayhzdWNjZXNzQ2FsbGJhY2spCiAgICAgLCBtX2ZpbGVT
eXN0ZW0oZmlsZVN5c3RlbSkKICAgICAsIG1fZXhwZWN0ZWRQYXRoKGV4cGVjdGVkUGF0aCkKQEAg
LTEwOSw5NSArMTA4LDg2IEBAIEVudHJ5Q2FsbGJhY2tzOjpFbnRyeUNhbGxiYWNrcyhQYXNzUmVm
UHRyPEVudHJ5Q2FsbGJhY2s+IHN1Y2Nlc3NDYWxsYmFjaywgUGFzc1JlCiB7CiB9CiAKLXZvaWQg
RW50cnlDYWxsYmFja3M6OmRpZFN1Y2NlZWQoKQordm9pZCBFbnRyeUNhbGxiYWNrczo6ZGlkU3Vj
Y2VlZChib29sIGZpcmVJbW1lZGlhdGUpCiB7Ci0gICAgaWYgKG1fc3VjY2Vzc0NhbGxiYWNrKSB7
Ci0gICAgICAgIGlmIChtX2lzRGlyZWN0b3J5KQotICAgICAgICAgICAgbV9zdWNjZXNzQ2FsbGJh
Y2stPmhhbmRsZUV2ZW50KERpcmVjdG9yeUVudHJ5OjpjcmVhdGUobV9maWxlU3lzdGVtLCBtX2V4
cGVjdGVkUGF0aCkuZ2V0KCkpOwotICAgICAgICBlbHNlCi0gICAgICAgICAgICBtX3N1Y2Nlc3ND
YWxsYmFjay0+aGFuZGxlRXZlbnQoRmlsZUVudHJ5OjpjcmVhdGUobV9maWxlU3lzdGVtLCBtX2V4
cGVjdGVkUGF0aCkuZ2V0KCkpOwotICAgIH0KLSAgICBtX3N1Y2Nlc3NDYWxsYmFjay5jbGVhcigp
OworICAgIGlmIChtX2lzRGlyZWN0b3J5KQorICAgICAgICBmaXJlQ2FsbGJhY2sobV9zdWNjZXNz
Q2FsbGJhY2sucmVsZWFzZSgpLCBEaXJlY3RvcnlFbnRyeTo6Y3JlYXRlKG1fZmlsZVN5c3RlbSwg
bV9leHBlY3RlZFBhdGgpLCBmaXJlSW1tZWRpYXRlKTsKKyAgICBlbHNlCisgICAgICAgIGZpcmVD
YWxsYmFjayhtX3N1Y2Nlc3NDYWxsYmFjay5yZWxlYXNlKCksIEZpbGVFbnRyeTo6Y3JlYXRlKG1f
ZmlsZVN5c3RlbSwgbV9leHBlY3RlZFBhdGgpLCBmaXJlSW1tZWRpYXRlKTsKIH0KIAogLy8gRW50
cmllc0NhbGxiYWNrcyAtLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t
LS0tLS0tLS0tLS0tLS0tLQogCi1FbnRyaWVzQ2FsbGJhY2tzOjpFbnRyaWVzQ2FsbGJhY2tzKFBh
c3NSZWZQdHI8RW50cmllc0NhbGxiYWNrPiBzdWNjZXNzQ2FsbGJhY2ssIFBhc3NSZWZQdHI8RXJy
b3JDYWxsYmFjaz4gZXJyb3JDYWxsYmFjaywgRE9NRmlsZVN5c3RlbSogZmlsZVN5c3RlbSwgY29u
c3QgU3RyaW5nJiBiYXNlUGF0aCkKLSAgICA6IEZpbGVTeXN0ZW1DYWxsYmFja3NCYXNlKGVycm9y
Q2FsbGJhY2spCitFbnRyaWVzQ2FsbGJhY2tzOjpFbnRyaWVzQ2FsbGJhY2tzKFBhc3NSZWZQdHI8
RW50cmllc0NhbGxiYWNrPiBzdWNjZXNzQ2FsbGJhY2ssIFBhc3NSZWZQdHI8RXJyb3JDYWxsYmFj
az4gZXJyb3JDYWxsYmFjaywgU2NyaXB0RXhlY3V0aW9uQ29udGV4dCogY29udGV4dCwgRE9NRmls
ZVN5c3RlbSogZmlsZVN5c3RlbSwgY29uc3QgU3RyaW5nJiBiYXNlUGF0aCkKKyAgICA6IEZpbGVT
eXN0ZW1DYWxsYmFja3NCYXNlKGVycm9yQ2FsbGJhY2ssIGNvbnRleHQpCiAgICAgLCBtX3N1Y2Nl
c3NDYWxsYmFjayhzdWNjZXNzQ2FsbGJhY2spCiAgICAgLCBtX2ZpbGVTeXN0ZW0oZmlsZVN5c3Rl
bSkKICAgICAsIG1fYmFzZVBhdGgoYmFzZVBhdGgpCiB7CiB9CiAKLXZvaWQgRW50cmllc0NhbGxi
YWNrczo6ZGlkUmVhZERpcmVjdG9yeUVudHJ5KGNvbnN0IFN0cmluZyYgbmFtZSwgYm9vbCBpc0Rp
cmVjdG9yeSkKK3ZvaWQgRW50cmllc0NhbGxiYWNrczo6ZGlkUmVhZERpcmVjdG9yeUVudHJ5KGNv
bnN0IFN0cmluZyYgbmFtZSwgYm9vbCBpc0RpcmVjdG9yeSwgYm9vbCkKIHsKKyAgICBpZiAoIW1f
ZW50cmllcykKKyAgICAgICAgbV9lbnRyaWVzID0gRW50cnlBcnJheTo6Y3JlYXRlKCk7CiAgICAg
aWYgKGlzRGlyZWN0b3J5KQotICAgICAgICBtX2VudHJpZXMtPmFwcGVuZChEaXJlY3RvcnlFbnRy
eTo6Y3JlYXRlKG1fZmlsZVN5c3RlbSwgbV9iYXNlUGF0aCArICIvIiArIG5hbWUpKTsKKyAgICAg
ICAgbV9lbnRyaWVzLT5hcHBlbmQoRGlyZWN0b3J5RW50cnk6OmNyZWF0ZShtX2ZpbGVTeXN0ZW0s
IERPTUZpbGVQYXRoOjphcHBlbmQobV9iYXNlUGF0aCwgbmFtZSkpKTsKICAgICBlbHNlCi0gICAg
ICAgIG1fZW50cmllcy0+YXBwZW5kKEZpbGVFbnRyeTo6Y3JlYXRlKG1fZmlsZVN5c3RlbSwgbV9i
YXNlUGF0aCArICIvIiArIG5hbWUpKTsKKyAgICAgICAgbV9lbnRyaWVzLT5hcHBlbmQoRmlsZUVu
dHJ5OjpjcmVhdGUobV9maWxlU3lzdGVtLCBET01GaWxlUGF0aDo6YXBwZW5kKG1fYmFzZVBhdGgs
IG5hbWUpKSk7CiB9CiAKLXZvaWQgRW50cmllc0NhbGxiYWNrczo6ZGlkUmVhZERpcmVjdG9yeUVu
dHJpZXMoYm9vbCBoYXNNb3JlKQordm9pZCBFbnRyaWVzQ2FsbGJhY2tzOjpkaWRSZWFkRGlyZWN0
b3J5RW50cmllcyhib29sIGhhc01vcmUsIGJvb2wgZmlyZUltbWVkaWF0ZSkKIHsKLSAgICBpZiAo
bV9zdWNjZXNzQ2FsbGJhY2spIHsKLSAgICAgICAgbV9zdWNjZXNzQ2FsbGJhY2stPmhhbmRsZUV2
ZW50KG1fZW50cmllcy5nZXQoKSk7Ci0gICAgICAgIG1fZW50cmllcy0+Y2xlYXIoKTsKLSAgICAg
ICAgaWYgKCFoYXNNb3JlKSB7Ci0gICAgICAgICAgICAvLyBJZiB0aGVyZSdyZSBubyBtb3JlIGVu
dHJpZXMsIGNhbGwgYmFjayBvbmNlIG1vcmUgd2l0aCBhbiBlbXB0eSBhcnJheS4KLSAgICAgICAg
ICAgIG1fc3VjY2Vzc0NhbGxiYWNrLT5oYW5kbGVFdmVudChtX2VudHJpZXMuZ2V0KCkpOwotICAg
ICAgICAgICAgbV9zdWNjZXNzQ2FsbGJhY2suY2xlYXIoKTsKLSAgICAgICAgfQorICAgIEFTU0VS
VChtX2VudHJpZXMpOworICAgIGZpcmVDYWxsYmFjazxFbnRyaWVzQ2FsbGJhY2s+KG1fc3VjY2Vz
c0NhbGxiYWNrLCBtX2VudHJpZXMucmVsZWFzZSgpLCBmaXJlSW1tZWRpYXRlKTsKKyAgICBpZiAo
IWhhc01vcmUpIHsKKyAgICAgICAgLy8gSWYgdGhlcmUncmUgbm8gbW9yZSBlbnRyaWVzLCBjYWxs
IGJhY2sgb25jZSBtb3JlIHdpdGggYW4gZW1wdHkgYXJyYXkuCisgICAgICAgIGZpcmVDYWxsYmFj
ayhtX3N1Y2Nlc3NDYWxsYmFjay5yZWxlYXNlKCksIEVudHJ5QXJyYXk6OmNyZWF0ZSgpLCBmaXJl
SW1tZWRpYXRlKTsKICAgICB9CiB9CiAKIC8vIEZpbGVTeXN0ZW1DYWxsYmFja3MgLS0tLS0tLS0t
LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0KIAogRmlsZVN5
c3RlbUNhbGxiYWNrczo6RmlsZVN5c3RlbUNhbGxiYWNrcyhQYXNzUmVmUHRyPEZpbGVTeXN0ZW1D
YWxsYmFjaz4gc3VjY2Vzc0NhbGxiYWNrLCBQYXNzUmVmUHRyPEVycm9yQ2FsbGJhY2s+IGVycm9y
Q2FsbGJhY2ssIFNjcmlwdEV4ZWN1dGlvbkNvbnRleHQqIGNvbnRleHQpCi0gICAgOiBGaWxlU3lz
dGVtQ2FsbGJhY2tzQmFzZShlcnJvckNhbGxiYWNrKQorICAgIDogRmlsZVN5c3RlbUNhbGxiYWNr
c0Jhc2UoZXJyb3JDYWxsYmFjaywgY29udGV4dCkKICAgICAsIG1fc3VjY2Vzc0NhbGxiYWNrKHN1
Y2Nlc3NDYWxsYmFjaykKLSAgICAsIG1fc2NyaXB0RXhlY3V0aW9uQ29udGV4dChjb250ZXh0KQor
ICAgICwgbV9zY3JpcHRFeGVjdXRpb25Db250ZXh0UmVmKGNvbnRleHQpCiB7CiB9CiAKLXZvaWQg
RmlsZVN5c3RlbUNhbGxiYWNrczo6ZGlkT3BlbkZpbGVTeXN0ZW0oY29uc3QgU3RyaW5nJiBuYW1l
LCBQYXNzT3duUHRyPEFzeW5jRmlsZVN5c3RlbT4gYXN5bmNGaWxlU3lzdGVtKQordm9pZCBGaWxl
U3lzdGVtQ2FsbGJhY2tzOjpkaWRPcGVuRmlsZVN5c3RlbShjb25zdCBTdHJpbmcmIG5hbWUsIFBh
c3NPd25QdHI8QXN5bmNGaWxlU3lzdGVtPiBhc3luY0ZpbGVTeXN0ZW0sIGJvb2wgZmlyZUltbWVk
aWF0ZSkKIHsKLSAgICBpZiAobV9zdWNjZXNzQ2FsbGJhY2spIHsKLSAgICAgICAgQVNTRVJUKGFz
eW5jRmlsZVN5c3RlbSk7Ci0gICAgICAgIG1fc3VjY2Vzc0NhbGxiYWNrLT5oYW5kbGVFdmVudChE
T01GaWxlU3lzdGVtOjpjcmVhdGUobV9zY3JpcHRFeGVjdXRpb25Db250ZXh0LmdldCgpLCBuYW1l
LCBhc3luY0ZpbGVTeXN0ZW0ubGVha1B0cigpKS5nZXQoKSk7Ci0gICAgICAgIG1fc2NyaXB0RXhl
Y3V0aW9uQ29udGV4dC5jbGVhcigpOwotICAgIH0KLSAgICBtX3N1Y2Nlc3NDYWxsYmFjay5jbGVh
cigpOworICAgIEFTU0VSVChhc3luY0ZpbGVTeXN0ZW0pOworICAgIGZpcmVDYWxsYmFjayhtX3N1
Y2Nlc3NDYWxsYmFjay5yZWxlYXNlKCksIERPTUZpbGVTeXN0ZW06OmNyZWF0ZShtX3NjcmlwdEV4
ZWN1dGlvbkNvbnRleHRSZWYuZ2V0KCksIG5hbWUsIGFzeW5jRmlsZVN5c3RlbS5sZWFrUHRyKCkp
LCBmaXJlSW1tZWRpYXRlKTsKIH0KIAogLy8gTWV0YWRhdGFDYWxsYmFja3MgLS0tLS0tLS0tLS0t
LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLQogCi1NZXRhZGF0
YUNhbGxiYWNrczo6TWV0YWRhdGFDYWxsYmFja3MoUGFzc1JlZlB0cjxNZXRhZGF0YUNhbGxiYWNr
PiBzdWNjZXNzQ2FsbGJhY2ssIFBhc3NSZWZQdHI8RXJyb3JDYWxsYmFjaz4gZXJyb3JDYWxsYmFj
aykKLSAgICA6IEZpbGVTeXN0ZW1DYWxsYmFja3NCYXNlKGVycm9yQ2FsbGJhY2spCitNZXRhZGF0
YUNhbGxiYWNrczo6TWV0YWRhdGFDYWxsYmFja3MoUGFzc1JlZlB0cjxNZXRhZGF0YUNhbGxiYWNr
PiBzdWNjZXNzQ2FsbGJhY2ssIFBhc3NSZWZQdHI8RXJyb3JDYWxsYmFjaz4gZXJyb3JDYWxsYmFj
aywgU2NyaXB0RXhlY3V0aW9uQ29udGV4dCogY29udGV4dCkKKyAgICA6IEZpbGVTeXN0ZW1DYWxs
YmFja3NCYXNlKGVycm9yQ2FsbGJhY2ssIGNvbnRleHQpCiAgICAgLCBtX3N1Y2Nlc3NDYWxsYmFj
ayhzdWNjZXNzQ2FsbGJhY2spCiB7CiB9CiAKLXZvaWQgTWV0YWRhdGFDYWxsYmFja3M6OmRpZFJl
YWRNZXRhZGF0YShkb3VibGUgbW9kaWZpY2F0aW9uVGltZSkKK3ZvaWQgTWV0YWRhdGFDYWxsYmFj
a3M6OmRpZFJlYWRNZXRhZGF0YShkb3VibGUgbW9kaWZpY2F0aW9uVGltZSwgYm9vbCBmaXJlSW1t
ZWRpYXRlKQogewotICAgIGlmIChtX3N1Y2Nlc3NDYWxsYmFjaykKLSAgICAgICAgbV9zdWNjZXNz
Q2FsbGJhY2stPmhhbmRsZUV2ZW50KE1ldGFkYXRhOjpjcmVhdGUobW9kaWZpY2F0aW9uVGltZSku
Z2V0KCkpOwotICAgIG1fc3VjY2Vzc0NhbGxiYWNrLmNsZWFyKCk7CisgICAgZmlyZUNhbGxiYWNr
KG1fc3VjY2Vzc0NhbGxiYWNrLnJlbGVhc2UoKSwgTWV0YWRhdGE6OmNyZWF0ZShtb2RpZmljYXRp
b25UaW1lKSwgZmlyZUltbWVkaWF0ZSk7CiB9CiAKIC8vIFZvaWRDYWxsYmFja3MgLS0tLS0tLS0t
LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0KIAot
Vm9pZENhbGxiYWNrczo6Vm9pZENhbGxiYWNrcyhQYXNzUmVmUHRyPFZvaWRDYWxsYmFjaz4gc3Vj
Y2Vzc0NhbGxiYWNrLCBQYXNzUmVmUHRyPEVycm9yQ2FsbGJhY2s+IGVycm9yQ2FsbGJhY2spCi0g
ICAgOiBGaWxlU3lzdGVtQ2FsbGJhY2tzQmFzZShlcnJvckNhbGxiYWNrKQorVm9pZENhbGxiYWNr
czo6Vm9pZENhbGxiYWNrcyhQYXNzUmVmUHRyPFZvaWRDYWxsYmFjaz4gc3VjY2Vzc0NhbGxiYWNr
LCBQYXNzUmVmUHRyPEVycm9yQ2FsbGJhY2s+IGVycm9yQ2FsbGJhY2ssIFNjcmlwdEV4ZWN1dGlv
bkNvbnRleHQqIGNvbnRleHQpCisgICAgOiBGaWxlU3lzdGVtQ2FsbGJhY2tzQmFzZShlcnJvckNh
bGxiYWNrLCBjb250ZXh0KQogICAgICwgbV9zdWNjZXNzQ2FsbGJhY2soc3VjY2Vzc0NhbGxiYWNr
KQogewogfQogCi12b2lkIFZvaWRDYWxsYmFja3M6OmRpZFN1Y2NlZWQoKQordm9pZCBWb2lkQ2Fs
bGJhY2tzOjpkaWRTdWNjZWVkKGJvb2wgZmlyZUltbWVkaWF0ZSkKIHsKLSAgICBpZiAobV9zdWNj
ZXNzQ2FsbGJhY2spCisgICAgaWYgKGZpcmVJbW1lZGlhdGUpCiAgICAgICAgIG1fc3VjY2Vzc0Nh
bGxiYWNrLT5oYW5kbGVFdmVudCgpOwotICAgIG1fc3VjY2Vzc0NhbGxiYWNrLmNsZWFyKCk7Cisg
ICAgZWxzZQorICAgICAgICBET01GaWxlU3lzdGVtOjpzY2hlZHVsZUNhbGxiYWNrKG1fc2NyaXB0
RXhlY3V0aW9uQ29udGV4dCwgbV9zdWNjZXNzQ2FsbGJhY2sucmVsZWFzZSgpKTsKIH0KIAogfSAv
LyBuYW1lc3BhY2UKZGlmZiAtLWdpdCBhL1dlYkNvcmUvc3RvcmFnZS9GaWxlU3lzdGVtQ2FsbGJh
Y2tzLmggYi9XZWJDb3JlL3N0b3JhZ2UvRmlsZVN5c3RlbUNhbGxiYWNrcy5oCmluZGV4IDMxYTJh
MGM4MGFiZWFiZDZhNWY5ZmY3MDc3MjYzMmFhNGZmNjM1MzUuLjNjN2E0YzVkMjZhMDQ0YzY5ZjU5
ZWNmNzgxOGZiMmRkY2RkNGI0ZDcgMTAwNjQ0Ci0tLSBhL1dlYkNvcmUvc3RvcmFnZS9GaWxlU3lz
dGVtQ2FsbGJhY2tzLmgKKysrIGIvV2ViQ29yZS9zdG9yYWdlL0ZpbGVTeXN0ZW1DYWxsYmFja3Mu
aApAQCAtMzQsMTMgKzM0LDEzIEBACiAjaWYgRU5BQkxFKEZJTEVfU1lTVEVNKQogCiAjaW5jbHVk
ZSAiQXN5bmNGaWxlU3lzdGVtQ2FsbGJhY2tzLmgiCisjaW5jbHVkZSAiRE9NRmlsZVN5c3RlbS5o
IgogI2luY2x1ZGUgIlBsYXRmb3JtU3RyaW5nLmgiCiAjaW5jbHVkZSA8d3RmL1Bhc3NSZWZQdHIu
aD4KICNpbmNsdWRlIDx3dGYvVmVjdG9yLmg+CiAKIG5hbWVzcGFjZSBXZWJDb3JlIHsKIAotY2xh
c3MgRE9NRmlsZVN5c3RlbTsKIGNsYXNzIEVycm9yQ2FsbGJhY2s7CiBjbGFzcyBFbnRyaWVzQ2Fs
bGJhY2s7CiBjbGFzcyBFbnRyeUFycmF5OwpAQCAtNTUsMzIgKzU1LDQ4IEBAIHB1YmxpYzoKICAg
ICB2aXJ0dWFsIH5GaWxlU3lzdGVtQ2FsbGJhY2tzQmFzZSgpOwogCiAgICAgLy8gRm9yIEVudHJ5
Q2FsbGJhY2tzIGFuZCBWb2lkQ2FsbGJhY2tzLgotICAgIHZpcnR1YWwgdm9pZCBkaWRTdWNjZWVk
KCk7CisgICAgdmlydHVhbCB2b2lkIGRpZFN1Y2NlZWQoYm9vbCBmaXJlSW1tZWRpYXRlKTsKIAog
ICAgIC8vIEZvciBGaWxlU3lzdGVtQ2FsbGJhY2tzLgotICAgIHZpcnR1YWwgdm9pZCBkaWRPcGVu
RmlsZVN5c3RlbShjb25zdCBTdHJpbmcmIG5hbWUsIFBhc3NPd25QdHI8QXN5bmNGaWxlU3lzdGVt
Pik7CisgICAgdmlydHVhbCB2b2lkIGRpZE9wZW5GaWxlU3lzdGVtKGNvbnN0IFN0cmluZyYgbmFt
ZSwgUGFzc093blB0cjxBc3luY0ZpbGVTeXN0ZW0+LCBib29sIGZpcmVJbW1lZGlhdGUpOwogCiAg
ICAgLy8gRm9yIE1ldGFkYXRhQ2FsbGJhY2tzLgotICAgIHZpcnR1YWwgdm9pZCBkaWRSZWFkTWV0
YWRhdGEoZG91YmxlIG1vZGlmaWNhdGlvblRpbWUpOworICAgIHZpcnR1YWwgdm9pZCBkaWRSZWFk
TWV0YWRhdGEoZG91YmxlIG1vZGlmaWNhdGlvblRpbWUsIGJvb2wgZmlyZUltbWVkaWF0ZSk7CiAK
ICAgICAvLyBGb3IgRW50cmllc0NhbGxiYWNrcy4gZGlkUmVhZERpcmVjdG9yeUVudHJ5IGlzIGNh
bGxlZCBlYWNoIHRpbWUgdGhlIEFQSSByZWFkcyBhbiBlbnRyeSwgYW5kIGRpZFJlYWREaXJlY3Rv
cnlEb25lIGlzIGNhbGxlZCB3aGVuIGEgY2h1bmsgb2YgZW50cmllcyBoYXZlIGJlZW4gcmVhZCAo
aS5lLiBnb29kIHRpbWUgdG8gY2FsbCBiYWNrIHRvIHRoZSBhcHBsaWNhdGlvbikuICBJZiBoYXNN
b3JlIGlzIHRydWUgdGhlcmUgY2FuIGJlIG1vcmUgY2h1bmtzLgotICAgIHZpcnR1YWwgdm9pZCBk
aWRSZWFkRGlyZWN0b3J5RW50cnkoY29uc3QgU3RyaW5nJiBuYW1lLCBib29sIGlzRGlyZWN0b3J5
KTsKLSAgICB2aXJ0dWFsIHZvaWQgZGlkUmVhZERpcmVjdG9yeUVudHJpZXMoYm9vbCBoYXNNb3Jl
KTsKKyAgICB2aXJ0dWFsIHZvaWQgZGlkUmVhZERpcmVjdG9yeUVudHJ5KGNvbnN0IFN0cmluZyYg
bmFtZSwgYm9vbCBpc0RpcmVjdG9yeSwgYm9vbCBmaXJlSW1tZWRpYXRlKTsKKyAgICB2aXJ0dWFs
IHZvaWQgZGlkUmVhZERpcmVjdG9yeUVudHJpZXMoYm9vbCBoYXNNb3JlLCBib29sIGZpcmVJbW1l
ZGlhdGUpOwogCiAgICAgLy8gRm9yIEVycm9yQ2FsbGJhY2suCi0gICAgdmlydHVhbCB2b2lkIGRp
ZEZhaWwoaW50IGNvZGUpOworICAgIHZpcnR1YWwgdm9pZCBkaWRGYWlsKGludCBjb2RlLCBib29s
IGZpcmVJbW1lZGlhdGUpOwogCiBwcm90ZWN0ZWQ6Ci0gICAgRmlsZVN5c3RlbUNhbGxiYWNrc0Jh
c2UoUGFzc1JlZlB0cjxFcnJvckNhbGxiYWNrPiBlcnJvckNhbGxiYWNrKTsKKyAgICBGaWxlU3lz
dGVtQ2FsbGJhY2tzQmFzZShQYXNzUmVmUHRyPEVycm9yQ2FsbGJhY2s+IGVycm9yQ2FsbGJhY2ss
IFNjcmlwdEV4ZWN1dGlvbkNvbnRleHQqIHNjcmlwdEV4ZWN1dGlvbkNvbnRleHQpOworCiAgICAg
UmVmUHRyPEVycm9yQ2FsbGJhY2s+IG1fZXJyb3JDYWxsYmFjazsKKworICAgIC8vIG1fc2NyaXB0
RXhlY3V0aW9uQ29udGV4dCBpcyB1c2VkIG9ubHkgaWYgZmlyZUltbWVkaWF0ZSBpcyBmYWxzZS4K
KyAgICBTY3JpcHRFeGVjdXRpb25Db250ZXh0KiBtX3NjcmlwdEV4ZWN1dGlvbkNvbnRleHQ7CisK
KyAgICAvLyBBIGhlbHBlciB0ZW1wbGF0ZSB0byBzY2hlZHVsZSBhIGNhbGxiYWNrIHRhc2suCisg
ICAgdGVtcGxhdGUgPHR5cGVuYW1lIENCLCB0eXBlbmFtZSBDQkFyZz4KKyAgICB2b2lkIGZpcmVD
YWxsYmFjayhQYXNzUmVmUHRyPENCPiBjYWxsYmFjaywgUGFzc1JlZlB0cjxDQkFyZz4gYXJnLCBi
b29sIGZpcmVJbW1lZGlhdGUpCisgICAgeworICAgICAgICBpZiAoIWNhbGxiYWNrKQorICAgICAg
ICAgICAgcmV0dXJuOworICAgICAgICBpZiAoZmlyZUltbWVkaWF0ZSkKKyAgICAgICAgICAgIGNh
bGxiYWNrLT5oYW5kbGVFdmVudChhcmcuZ2V0KCkpOworICAgICAgICBlbHNlCisgICAgICAgICAg
ICBET01GaWxlU3lzdGVtOjpzY2hlZHVsZUNhbGxiYWNrPENCPihtX3NjcmlwdEV4ZWN1dGlvbkNv
bnRleHQsIGNhbGxiYWNrLCBhcmcpOworICAgIH0KIH07CiAKIC8vIFN1YmNsYXNzZXMgLS0tLS0t
LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t
LQogCiBjbGFzcyBFbnRyeUNhbGxiYWNrcyA6IHB1YmxpYyBGaWxlU3lzdGVtQ2FsbGJhY2tzQmFz
ZSB7CiBwdWJsaWM6Ci0gICAgRW50cnlDYWxsYmFja3MoUGFzc1JlZlB0cjxFbnRyeUNhbGxiYWNr
PiwgUGFzc1JlZlB0cjxFcnJvckNhbGxiYWNrPiwgRE9NRmlsZVN5c3RlbSosIGNvbnN0IFN0cmlu
ZyYgZXhwZWN0ZWRQYXRoLCBib29sIGlzRGlyZWN0b3J5KTsKLSAgICB2aXJ0dWFsIHZvaWQgZGlk
U3VjY2VlZCgpOworICAgIEVudHJ5Q2FsbGJhY2tzKFBhc3NSZWZQdHI8RW50cnlDYWxsYmFjaz4s
IFBhc3NSZWZQdHI8RXJyb3JDYWxsYmFjaz4sIFNjcmlwdEV4ZWN1dGlvbkNvbnRleHQqLCBET01G
aWxlU3lzdGVtKiwgY29uc3QgU3RyaW5nJiBleHBlY3RlZFBhdGgsIGJvb2wgaXNEaXJlY3Rvcnkp
OworICAgIHZpcnR1YWwgdm9pZCBkaWRTdWNjZWVkKGJvb2wgZmlyZUltbWVkaWF0ZSk7CiAKIHBy
aXZhdGU6CiAgICAgUmVmUHRyPEVudHJ5Q2FsbGJhY2s+IG1fc3VjY2Vzc0NhbGxiYWNrOwpAQCAt
OTEsOSArMTA3LDkgQEAgcHJpdmF0ZToKIAogY2xhc3MgRW50cmllc0NhbGxiYWNrcyA6IHB1Ymxp
YyBGaWxlU3lzdGVtQ2FsbGJhY2tzQmFzZSB7CiBwdWJsaWM6Ci0gICAgRW50cmllc0NhbGxiYWNr
cyhQYXNzUmVmUHRyPEVudHJpZXNDYWxsYmFjaz4sIFBhc3NSZWZQdHI8RXJyb3JDYWxsYmFjaz4s
IERPTUZpbGVTeXN0ZW0qLCBjb25zdCBTdHJpbmcmIGJhc2VQYXRoKTsKLSAgICB2aXJ0dWFsIHZv
aWQgZGlkUmVhZERpcmVjdG9yeUVudHJ5KGNvbnN0IFN0cmluZyYgbmFtZSwgYm9vbCBpc0RpcmVj
dG9yeSk7Ci0gICAgdmlydHVhbCB2b2lkIGRpZFJlYWREaXJlY3RvcnlFbnRyaWVzKGJvb2wgaGFz
TW9yZSk7CisgICAgRW50cmllc0NhbGxiYWNrcyhQYXNzUmVmUHRyPEVudHJpZXNDYWxsYmFjaz4s
IFBhc3NSZWZQdHI8RXJyb3JDYWxsYmFjaz4sIFNjcmlwdEV4ZWN1dGlvbkNvbnRleHQqLCBET01G
aWxlU3lzdGVtKiwgY29uc3QgU3RyaW5nJiBiYXNlUGF0aCk7CisgICAgdmlydHVhbCB2b2lkIGRp
ZFJlYWREaXJlY3RvcnlFbnRyeShjb25zdCBTdHJpbmcmIG5hbWUsIGJvb2wgaXNEaXJlY3Rvcnks
IGJvb2wgZmlyZUltbWVkaWF0ZSk7CisgICAgdmlydHVhbCB2b2lkIGRpZFJlYWREaXJlY3RvcnlF
bnRyaWVzKGJvb2wgaGFzTW9yZSwgYm9vbCBmaXJlSW1tZWRpYXRlKTsKIAogcHJpdmF0ZToKICAg
ICBSZWZQdHI8RW50cmllc0NhbGxiYWNrPiBtX3N1Y2Nlc3NDYWxsYmFjazsKQEAgLTEwNSwxNyAr
MTIxLDE3IEBAIHByaXZhdGU6CiBjbGFzcyBGaWxlU3lzdGVtQ2FsbGJhY2tzIDogcHVibGljIEZp
bGVTeXN0ZW1DYWxsYmFja3NCYXNlIHsKIHB1YmxpYzoKICAgICBGaWxlU3lzdGVtQ2FsbGJhY2tz
KFBhc3NSZWZQdHI8RmlsZVN5c3RlbUNhbGxiYWNrPiwgUGFzc1JlZlB0cjxFcnJvckNhbGxiYWNr
PiwgU2NyaXB0RXhlY3V0aW9uQ29udGV4dCopOwotICAgIHZpcnR1YWwgdm9pZCBkaWRPcGVuRmls
ZVN5c3RlbShjb25zdCBTdHJpbmcmIG5hbWUsIFBhc3NPd25QdHI8QXN5bmNGaWxlU3lzdGVtPik7
CisgICAgdmlydHVhbCB2b2lkIGRpZE9wZW5GaWxlU3lzdGVtKGNvbnN0IFN0cmluZyYgbmFtZSwg
UGFzc093blB0cjxBc3luY0ZpbGVTeXN0ZW0+LCBib29sIGZpcmVJbW1lZGlhdGUpOwogCiBwcml2
YXRlOgogICAgIFJlZlB0cjxGaWxlU3lzdGVtQ2FsbGJhY2s+IG1fc3VjY2Vzc0NhbGxiYWNrOwot
ICAgIFJlZlB0cjxTY3JpcHRFeGVjdXRpb25Db250ZXh0PiBtX3NjcmlwdEV4ZWN1dGlvbkNvbnRl
eHQ7CisgICAgUmVmUHRyPFNjcmlwdEV4ZWN1dGlvbkNvbnRleHQ+IG1fc2NyaXB0RXhlY3V0aW9u
Q29udGV4dFJlZjsKIH07CiAKIGNsYXNzIE1ldGFkYXRhQ2FsbGJhY2tzIDogcHVibGljIEZpbGVT
eXN0ZW1DYWxsYmFja3NCYXNlIHsKIHB1YmxpYzoKLSAgICBNZXRhZGF0YUNhbGxiYWNrcyhQYXNz
UmVmUHRyPE1ldGFkYXRhQ2FsbGJhY2s+LCBQYXNzUmVmUHRyPEVycm9yQ2FsbGJhY2s+KTsKLSAg
ICB2aXJ0dWFsIHZvaWQgZGlkUmVhZE1ldGFkYXRhKGRvdWJsZSBtb2RpZmljYXRpb25UaW1lKTsK
KyAgICBNZXRhZGF0YUNhbGxiYWNrcyhQYXNzUmVmUHRyPE1ldGFkYXRhQ2FsbGJhY2s+LCBQYXNz
UmVmUHRyPEVycm9yQ2FsbGJhY2s+LCBTY3JpcHRFeGVjdXRpb25Db250ZXh0Kik7CisgICAgdmly
dHVhbCB2b2lkIGRpZFJlYWRNZXRhZGF0YShkb3VibGUgbW9kaWZpY2F0aW9uVGltZSwgYm9vbCBm
aXJlSW1tZWRpYXRlKTsKIAogcHJpdmF0ZToKICAgICBSZWZQdHI8TWV0YWRhdGFDYWxsYmFjaz4g
bV9zdWNjZXNzQ2FsbGJhY2s7CkBAIC0xMjMsOCArMTM5LDggQEAgcHJpdmF0ZToKIAogY2xhc3Mg
Vm9pZENhbGxiYWNrcyA6IHB1YmxpYyBGaWxlU3lzdGVtQ2FsbGJhY2tzQmFzZSB7CiBwdWJsaWM6
Ci0gICAgVm9pZENhbGxiYWNrcyhQYXNzUmVmUHRyPFZvaWRDYWxsYmFjaz4sIFBhc3NSZWZQdHI8
RXJyb3JDYWxsYmFjaz4pOwotICAgIHZpcnR1YWwgdm9pZCBkaWRTdWNjZWVkKCk7CisgICAgVm9p
ZENhbGxiYWNrcyhQYXNzUmVmUHRyPFZvaWRDYWxsYmFjaz4sIFBhc3NSZWZQdHI8RXJyb3JDYWxs
YmFjaz4sIFNjcmlwdEV4ZWN1dGlvbkNvbnRleHQqKTsKKyAgICB2aXJ0dWFsIHZvaWQgZGlkU3Vj
Y2VlZChib29sIGZpcmVJbW1lZGlhdGUpOwogCiBwcml2YXRlOgogICAgIFJlZlB0cjxWb2lkQ2Fs
bGJhY2s+IG1fc3VjY2Vzc0NhbGxiYWNrOwpkaWZmIC0tZ2l0IGEvV2ViQ29yZS9zdG9yYWdlL0xv
Y2FsRmlsZVN5c3RlbS5jcHAgYi9XZWJDb3JlL3N0b3JhZ2UvTG9jYWxGaWxlU3lzdGVtLmNwcApp
bmRleCAyODI1MDhlN2MwNzhlMTQ4YzIwOTM2MzhiNzUxN2VhYTg3YTA1NzU4Li40MTBjNmE3MGQx
ZGI3ZDU1MDg0NjQ0MjNmYmJkN2Y4OTZkNTEyMTljIDEwMDY0NAotLS0gYS9XZWJDb3JlL3N0b3Jh
Z2UvTG9jYWxGaWxlU3lzdGVtLmNwcAorKysgYi9XZWJDb3JlL3N0b3JhZ2UvTG9jYWxGaWxlU3lz
dGVtLmNwcApAQCAtNTcsNyArNTcsNyBAQCBQYXNzUmVmUHRyPExvY2FsRmlsZVN5c3RlbT4gTG9j
YWxGaWxlU3lzdGVtOjpjcmVhdGUoY29uc3QgU3RyaW5nJiBiYXNlUGF0aCkKIHZvaWQgTG9jYWxG
aWxlU3lzdGVtOjpyZXF1ZXN0RmlsZVN5c3RlbShTY3JpcHRFeGVjdXRpb25Db250ZXh0KiBjb250
ZXh0LCBBc3luY0ZpbGVTeXN0ZW06OlR5cGUgdHlwZSwgbG9uZyBsb25nLCBQYXNzUmVmUHRyPEZp
bGVTeXN0ZW1DYWxsYmFjaz4gc3VjY2Vzc0NhbGxiYWNrLCBQYXNzUmVmUHRyPEVycm9yQ2FsbGJh
Y2s+IGVycm9yQ2FsbGJhY2spCiB7CiAgICAgaWYgKHR5cGUgIT0gQXN5bmNGaWxlU3lzdGVtOjpU
ZW1wb3JhcnkgJiYgdHlwZSAhPSBBc3luY0ZpbGVTeXN0ZW06OlBlcnNpc3RlbnQpIHsKLSAgICAg
ICAgZXJyb3JDYWxsYmFjay0+aGFuZGxlRXZlbnQoRmlsZUVycm9yOjpjcmVhdGUoSU5WQUxJRF9N
T0RJRklDQVRJT05fRVJSKS5nZXQoKSk7CisgICAgICAgIERPTUZpbGVTeXN0ZW06OnNjaGVkdWxl
Q2FsbGJhY2soY29udGV4dCwgZXJyb3JDYWxsYmFjaywgRmlsZUVycm9yOjpjcmVhdGUoSU5WQUxJ
RF9NT0RJRklDQVRJT05fRVJSKSk7CiAgICAgICAgIHJldHVybjsKICAgICB9CiAK
</data>

          </attachment>
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>65938</attachid>
            <date>2010-08-30 12:21:19 -0700</date>
            <delta_ts>2010-08-30 12:33:14 -0700</delta_ts>
            <desc>Patch</desc>
            <filename>bug-44732-20100830122118.patch</filename>
            <type>text/plain</type>
            <size>30810</size>
            <attacher name="Kinuko Yasuda">kinuko</attacher>
            
              <data encoding="base64">ZGlmZiAtLWdpdCBhL1dlYkNvcmUvQ2hhbmdlTG9nIGIvV2ViQ29yZS9DaGFuZ2VMb2cKaW5kZXgg
MzA0NzZkM2JiOGE0Nzg4NDQ2MTAwNGZkNmVkZTFhNWE1ZTNjZGEzOC4uNjU4YzUwMWU2ZjcxNzQy
Mjc2OGRlNGRhYTYxNzFlNTUxMjUxNTQ5ZiAxMDA2NDQKLS0tIGEvV2ViQ29yZS9DaGFuZ2VMb2cK
KysrIGIvV2ViQ29yZS9DaGFuZ2VMb2cKQEAgLTEsMyArMSw0OCBAQAorMjAxMC0wOC0yNyAgS2lu
dWtvIFlhc3VkYSAgPGtpbnVrb0BjaHJvbWl1bS5vcmc+CisKKyAgICAgICAgUmV2aWV3ZWQgYnkg
Tk9CT0RZIChPT1BTISkuCisKKyAgICAgICAgQWRkIERPTUZpbGVTeXN0ZW0gaW1wbGVtZW50YXRp
b24gdG8gc3VwcG9ydCBFbnRyeSBtYW5pcHVsYXRpb24gb3BlcmF0aW9ucworICAgICAgICBodHRw
czovL2J1Z3Mud2Via2l0Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9NDQ3MzIKKworICAgICAgICBObyBu
ZXcgdGVzdHM7IHRlc3RzIHdpbGwgYmUgYWRkZWQgbGF0ZXIuCisKKyAgICAgICAgKiBzdG9yYWdl
L0RPTUZpbGVTeXN0ZW0uY3BwOgorICAgICAgICAoV2ViQ29yZTo6RE9NRmlsZVN5c3RlbTo6cm9v
dCk6CisgICAgICAgIChXZWJDb3JlOjpjaGVja1ZhbGlkaXR5Rm9yRm9yQ29weU9yTW92ZSk6IEFk
ZGVkLgorICAgICAgICAoV2ViQ29yZTo6RE9NRmlsZVN5c3RlbTo6Z2V0TWV0YWRhdGEpOiBBZGRl
ZC4KKyAgICAgICAgKFdlYkNvcmU6OkRPTUZpbGVTeXN0ZW06Om1vdmUpOiBBZGRlZC4KKyAgICAg
ICAgKFdlYkNvcmU6OkRPTUZpbGVTeXN0ZW06OmNvcHkpOiBBZGRlZC4KKyAgICAgICAgKFdlYkNv
cmU6OkRPTUZpbGVTeXN0ZW06OnJlbW92ZSk6IEFkZGVkLgorICAgICAgICAoV2ViQ29yZTo6RE9N
RmlsZVN5c3RlbTo6Z2V0UGFyZW50KTogQWRkZWQuCisgICAgICAgIChXZWJDb3JlOjpET01GaWxl
U3lzdGVtOjpnZXRGaWxlKTogQWRkZWQuCisgICAgICAgIChXZWJDb3JlOjpET01GaWxlU3lzdGVt
OjpnZXREaXJlY3RvcnkpOiBBZGRlZC4KKyAgICAgICAgKFdlYkNvcmU6OkRPTUZpbGVTeXN0ZW06
OnJlYWREaXJlY3RvcnkpOiBBZGRlZC4KKyAgICAgICAgKiBzdG9yYWdlL0RpcmVjdG9yeUVudHJ5
LmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OkRpcmVjdG9yeUVudHJ5OjpnZXRGaWxlKTogQWRkZWQg
aW1wbGVtZW50YXRpb24uCisgICAgICAgIChXZWJDb3JlOjpEaXJlY3RvcnlFbnRyeTo6Z2V0RGly
ZWN0b3J5KTogQWRkZWQgaW1wbGVtZW50YXRpb24uCisgICAgICAgICogc3RvcmFnZS9EaXJlY3Rv
cnlSZWFkZXIuY3BwOgorICAgICAgICAoV2ViQ29yZTo6RGlyZWN0b3J5UmVhZGVyOjpEaXJlY3Rv
cnlSZWFkZXIpOiBBZGRlZCBpbXBsZW1lbnRhdGlvbi4KKyAgICAgICAgKFdlYkNvcmU6OkRpcmVj
dG9yeVJlYWRlcjo6cmVhZEVudHJpZXMpOiBBZGRlZCBpbXBsZW1lbnRhdGlvbi4KKyAgICAgICAg
KiBzdG9yYWdlL0RpcmVjdG9yeVJlYWRlci5oOgorICAgICAgICAqIHN0b3JhZ2UvRW50cnkuY3Bw
OgorICAgICAgICAoV2ViQ29yZTo6RW50cnk6OmdldE1ldGFkYXRhKTogQWRkZWQgaW1wbGVtZW50
YXRpb24uCisgICAgICAgIChXZWJDb3JlOjpFbnRyeTo6bW92ZVRvKTogQWRkZWQgaW1wbGVtZW50
YXRpb24uCisgICAgICAgIChXZWJDb3JlOjpFbnRyeTo6Y29weVRvKTogQWRkZWQgaW1wbGVtZW50
YXRpb24uCisgICAgICAgIChXZWJDb3JlOjpFbnRyeTo6cmVtb3ZlKTogQWRkZWQgaW1wbGVtZW50
YXRpb24uCisgICAgICAgIChXZWJDb3JlOjpFbnRyeTo6Z2V0UGFyZW50KTogQWRkZWQgaW1wbGVt
ZW50YXRpb24uCisgICAgICAgICogc3RvcmFnZS9FbnRyeS5oOgorICAgICAgICAqIHN0b3JhZ2Uv
RmlsZUVudHJ5Lmg6CisKKyAgICAgICAgQWRkZWQgYSBoZWxwZXIgdGVtcGxhdGUgdG8gc2NoZWR1
bGUgY2FsbGJhY2tzLgorICAgICAgICAqIHN0b3JhZ2UvRE9NRmlsZVN5c3RlbS5oOgorICAgICAg
ICAoV2ViQ29yZTo6RE9NRmlsZVN5c3RlbTo6RGlzcGF0Y2hDYWxsYmFja1Rhc2spOiBBZGRlZCB0
byBzY2hlZHVsZSBjYWxsYmFja3MuCisgICAgICAgIChXZWJDb3JlOjpET01GaWxlU3lzdGVtOjpz
Y2hlZHVsZUNhbGxiYWNrKTogQWRkZWQgdG8gc2NoZWR1bGUgY2FsbGJhY2tzLgorCisgICAgICAg
IENoYW5nZWQgdG8gZmlyZSBjYWxsYmFja3MgYXN5bmNocm9ub3VzbHkuCisgICAgICAgICogc3Rv
cmFnZS9Mb2NhbEZpbGVTeXN0ZW0uY3BwOgorICAgICAgICAoV2ViQ29yZTo6TG9jYWxGaWxlU3lz
dGVtOjpyZXF1ZXN0RmlsZVN5c3RlbSk6CisKIDIwMTAtMDgtMjcgIEpvc2VwaCBQZWNvcmFybyAg
PGpvZXBlY2tAd2Via2l0Lm9yZz4KIAogICAgICAgICBSZXZpZXdlZCBieSBBbGV4ZXkgUHJvc2t1
cnlha292LgpkaWZmIC0tZ2l0IGEvV2ViQ29yZS9wbGF0Zm9ybS9Bc3luY0ZpbGVTeXN0ZW0uaCBi
L1dlYkNvcmUvcGxhdGZvcm0vQXN5bmNGaWxlU3lzdGVtLmgKaW5kZXggODJmNzE2MzEyYTk4MjVl
NzRjNjZlZWRjYmIxMGNlODQyYWE1N2Q2NC4uNjAxZjBlYWUzZTVkMGU4YmViODRkNWE5OTNkNzcw
NTE3YmQwYTYyZCAxMDA2NDQKLS0tIGEvV2ViQ29yZS9wbGF0Zm9ybS9Bc3luY0ZpbGVTeXN0ZW0u
aAorKysgYi9XZWJDb3JlL3BsYXRmb3JtL0FzeW5jRmlsZVN5c3RlbS5oCkBAIC0zNCw2ICszNCw3
IEBACiAjaWYgRU5BQkxFKEZJTEVfU1lTVEVNKQogCiAjaW5jbHVkZSAiUGxhdGZvcm1TdHJpbmcu
aCIKKyNpbmNsdWRlICJUaW1lci5oIgogI2luY2x1ZGUgPHd0Zi9QYXNzT3duUHRyLmg+CiAKIG5h
bWVzcGFjZSBXZWJDb3JlIHsKQEAgLTQxLDcgKzQyLDcgQEAgbmFtZXNwYWNlIFdlYkNvcmUgewog
Y2xhc3MgQXN5bmNGaWxlU3lzdGVtOwogY2xhc3MgQXN5bmNGaWxlU3lzdGVtQ2FsbGJhY2tzOwog
Ci0vLyBUaGlzIGNsYXNzIHByb3ZpZGVzIGFzeW5jIGludGVyZmFjZSBmb3IgcGxhdGZvcm0tc3Bl
Y2lmaWMgRE9NRmlsZVN5c3RlbSBpbXBsZW1lbnRhdGlvbi4gTm90ZSB0aGF0IGFsbCB0aGUgbWV0
aG9kcyB0YWtlIGNhbm9uaWNhbGl6ZWQgdmlydHVhbCBwYXRocy4KKy8vIFRoaXMgY2xhc3MgcHJv
dmlkZXMgYXN5bmMgaW50ZXJmYWNlIGZvciBwbGF0Zm9ybS1zcGVjaWZpYyBmaWxlIHN5c3RlbSBp
bXBsZW1lbnRhdGlvbi4gIE5vdGUgdGhhdCBhbGwgdGhlIG1ldGhvZHMgdGFrZSBwbGF0Zm9ybSBw
YXRocy4KIGNsYXNzIEFzeW5jRmlsZVN5c3RlbSA6IHB1YmxpYyBOb25jb3B5YWJsZSB7CiBwdWJs
aWM6CiAgICAgdmlydHVhbCB+QXN5bmNGaWxlU3lzdGVtKCkgeyB9CmRpZmYgLS1naXQgYS9XZWJD
b3JlL3N0b3JhZ2UvRE9NRmlsZVN5c3RlbS5jcHAgYi9XZWJDb3JlL3N0b3JhZ2UvRE9NRmlsZVN5
c3RlbS5jcHAKaW5kZXggNWQ2MDczYTNlOWVjMTIzOTY0YTIyYjk2Njk0NmJiMzYwYTIzOWVlYS4u
ZjFiOTM0MjJmNjZkMTE1NmM4OWJkZmU4YzVjYTZiMmFiODA4OGMyYiAxMDA2NDQKLS0tIGEvV2Vi
Q29yZS9zdG9yYWdlL0RPTUZpbGVTeXN0ZW0uY3BwCisrKyBiL1dlYkNvcmUvc3RvcmFnZS9ET01G
aWxlU3lzdGVtLmNwcApAQCAtMzQsOCArMzQsMTggQEAKICNpZiBFTkFCTEUoRklMRV9TWVNURU0p
CiAKICNpbmNsdWRlICJBc3luY0ZpbGVTeXN0ZW0uaCIKKyNpbmNsdWRlICJET01GaWxlUGF0aC5o
IgogI2luY2x1ZGUgIkRpcmVjdG9yeUVudHJ5LmgiCisjaW5jbHVkZSAiRW50cmllc0NhbGxiYWNr
LmgiCisjaW5jbHVkZSAiRW50cnkuaCIKKyNpbmNsdWRlICJFbnRyeUNhbGxiYWNrLmgiCisjaW5j
bHVkZSAiRXJyb3JDYWxsYmFjay5oIgorI2luY2x1ZGUgIkZpbGVFcnJvci5oIgorI2luY2x1ZGUg
IkZpbGVTeXN0ZW1DYWxsYmFja3MuaCIKKyNpbmNsdWRlICJNZXRhZGF0YUNhbGxiYWNrLmgiCiAj
aW5jbHVkZSAiU2NyaXB0RXhlY3V0aW9uQ29udGV4dC5oIgorI2luY2x1ZGUgIlZvaWRDYWxsYmFj
ay5oIgorI2luY2x1ZGUgPHd0Zi9Pd25QdHIuaD4KIAogbmFtZXNwYWNlIFdlYkNvcmUgewogCkBA
IC01Miw3ICs2Miw3IEBAIERPTUZpbGVTeXN0ZW06On5ET01GaWxlU3lzdGVtKCkKIAogUGFzc1Jl
ZlB0cjxEaXJlY3RvcnlFbnRyeT4gRE9NRmlsZVN5c3RlbTo6cm9vdCgpCiB7Ci0gICAgcmV0dXJu
IERpcmVjdG9yeUVudHJ5OjpjcmVhdGUodGhpcywgIi8iKTsKKyAgICByZXR1cm4gRGlyZWN0b3J5
RW50cnk6OmNyZWF0ZSh0aGlzLCBET01GaWxlUGF0aDo6cm9vdCk7CiB9CiAKIHZvaWQgRE9NRmls
ZVN5c3RlbTo6c3RvcCgpCkBAIC03MCw2ICs4MCwxMzEgQEAgdm9pZCBET01GaWxlU3lzdGVtOjpj
b250ZXh0RGVzdHJveWVkKCkKICAgICBtX2FzeW5jRmlsZVN5c3RlbS0+c3RvcCgpOwogfQogCit2
b2lkIERPTUZpbGVTeXN0ZW06OmdldE1ldGFkYXRhKGNvbnN0IEVudHJ5KiBlbnRyeSwgUGFzc1Jl
ZlB0cjxNZXRhZGF0YUNhbGxiYWNrPiBzdWNjZXNzQ2FsbGJhY2ssIFBhc3NSZWZQdHI8RXJyb3JD
YWxsYmFjaz4gZXJyb3JDYWxsYmFjaykKK3sKKyAgICBTdHJpbmcgcGxhdGZvcm1QYXRoID0gbV9h
c3luY0ZpbGVTeXN0ZW0tPnZpcnR1YWxUb1BsYXRmb3JtUGF0aChlbnRyeS0+ZnVsbFBhdGgoKSk7
CisgICAgbV9hc3luY0ZpbGVTeXN0ZW0tPnJlYWRNZXRhZGF0YShwbGF0Zm9ybVBhdGgsIG5ldyBN
ZXRhZGF0YUNhbGxiYWNrcyhzdWNjZXNzQ2FsbGJhY2ssIGVycm9yQ2FsbGJhY2spKTsKK30KKwor
c3RhdGljIGJvb2wgY2hlY2tWYWxpZGl0eUZvckZvckNvcHlPck1vdmUoY29uc3QgRW50cnkqIHNy
YywgRW50cnkqIHBhcmVudCwgY29uc3QgU3RyaW5nJiBuZXdOYW1lKQoreworICAgIEFTU0VSVChz
cmMpOworCisgICAgaWYgKCFwYXJlbnQgfHwgIXBhcmVudC0+aXNEaXJlY3RvcnkoKSkKKyAgICAg
ICAgcmV0dXJuIGZhbHNlOworCisgICAgaWYgKCFuZXdOYW1lLmlzRW1wdHkoKSAmJiAhRE9NRmls
ZVBhdGg6OmlzVmFsaWROYW1lKG5ld05hbWUpKQorICAgICAgICByZXR1cm4gZmFsc2U7CisKKyAg
ICAvLyBJdCBpcyBhbiBlcnJvciB0byB0cnkgdG8gY29weSBvciBtb3ZlIGFuIGVudHJ5IGluc2lk
ZSBpdHNlbGYgYXQgYW55IGRlcHRoIGlmIGl0IGlzIGEgZGlyZWN0b3J5LgorICAgIGlmIChzcmMt
PmlzRGlyZWN0b3J5KCkgJiYgRE9NRmlsZVBhdGg6OmlzUGFyZW50T2Yoc3JjLT5mdWxsUGF0aCgp
LCBwYXJlbnQtPmZ1bGxQYXRoKCkpKQorICAgICAgICByZXR1cm4gZmFsc2U7CisKKyAgICAvLyBJ
dCBpcyBhbiBlcnJvciB0byBjb3B5IG9yIG1vdmUgYW4gZW50cnkgaW50byBpdHMgcGFyZW50IGlm
IGEgbmFtZSBkaWZmZXJlbnQgZnJvbSBpdHMgY3VycmVudCBvbmUgaXNuJ3QgcHJvdmlkZWQuCisg
ICAgaWYgKChuZXdOYW1lLmlzRW1wdHkoKSB8fCBzcmMtPm5hbWUoKSA9PSBuZXdOYW1lKSAmJiBE
T01GaWxlUGF0aDo6Z2V0RGlyZWN0b3J5KHNyYy0+ZnVsbFBhdGgoKSkgPT0gcGFyZW50LT5mdWxs
UGF0aCgpKQorICAgICAgICByZXR1cm4gZmFsc2U7CisKKyAgICByZXR1cm4gdHJ1ZTsKK30KKwor
dm9pZCBET01GaWxlU3lzdGVtOjptb3ZlKGNvbnN0IEVudHJ5KiBzcmMsIFBhc3NSZWZQdHI8RW50
cnk+IHBhcmVudCwgY29uc3QgU3RyaW5nJiBuZXdOYW1lLCBQYXNzUmVmUHRyPEVudHJ5Q2FsbGJh
Y2s+IHN1Y2Nlc3NDYWxsYmFjaywgUGFzc1JlZlB0cjxFcnJvckNhbGxiYWNrPiBlcnJvckNhbGxi
YWNrKQoreworICAgIGlmICghY2hlY2tWYWxpZGl0eUZvckZvckNvcHlPck1vdmUoc3JjLCBwYXJl
bnQuZ2V0KCksIG5ld05hbWUpKSB7CisgICAgICAgIHNjaGVkdWxlQ2FsbGJhY2soc2NyaXB0RXhl
Y3V0aW9uQ29udGV4dCgpLCBlcnJvckNhbGxiYWNrLCBGaWxlRXJyb3I6OmNyZWF0ZShJTlZBTElE
X01PRElGSUNBVElPTl9FUlIpKTsKKyAgICAgICAgcmV0dXJuOworICAgIH0KKworICAgIFN0cmlu
ZyBkZXN0UGF0aCA9IHBhcmVudC0+ZnVsbFBhdGgoKTsKKyAgICBpZiAoIW5ld05hbWUuaXNFbXB0
eSgpKQorICAgICAgICBkZXN0UGF0aCA9IERPTUZpbGVQYXRoOjphcHBlbmQoZGVzdFBhdGgsIG5l
d05hbWUpOworICAgIGVsc2UKKyAgICAgICAgZGVzdFBhdGggPSBET01GaWxlUGF0aDo6YXBwZW5k
KGRlc3RQYXRoLCBzcmMtPm5hbWUoKSk7CisKKyAgICBTdHJpbmcgc3JjUGxhdGZvcm1QYXRoID0g
bV9hc3luY0ZpbGVTeXN0ZW0tPnZpcnR1YWxUb1BsYXRmb3JtUGF0aChzcmMtPmZ1bGxQYXRoKCkp
OworICAgIFN0cmluZyBkZXN0UGxhdGZvcm1QYXRoID0gcGFyZW50LT5maWxlc3lzdGVtKCktPmFz
eW5jRmlsZVN5c3RlbSgpLT52aXJ0dWFsVG9QbGF0Zm9ybVBhdGgoZGVzdFBhdGgpOworICAgIG1f
YXN5bmNGaWxlU3lzdGVtLT5tb3ZlKHNyY1BsYXRmb3JtUGF0aCwgZGVzdFBsYXRmb3JtUGF0aCwg
bmV3IEVudHJ5Q2FsbGJhY2tzKHN1Y2Nlc3NDYWxsYmFjaywgZXJyb3JDYWxsYmFjaywgdGhpcywg
ZGVzdFBhdGgsIHNyYy0+aXNEaXJlY3RvcnkoKSkpOworfQorCit2b2lkIERPTUZpbGVTeXN0ZW06
OmNvcHkoY29uc3QgRW50cnkqIHNyYywgUGFzc1JlZlB0cjxFbnRyeT4gcGFyZW50LCBjb25zdCBT
dHJpbmcmIG5ld05hbWUsIFBhc3NSZWZQdHI8RW50cnlDYWxsYmFjaz4gc3VjY2Vzc0NhbGxiYWNr
LCBQYXNzUmVmUHRyPEVycm9yQ2FsbGJhY2s+IGVycm9yQ2FsbGJhY2spCit7CisgICAgaWYgKCFj
aGVja1ZhbGlkaXR5Rm9yRm9yQ29weU9yTW92ZShzcmMsIHBhcmVudC5nZXQoKSwgbmV3TmFtZSkp
IHsKKyAgICAgICAgc2NoZWR1bGVDYWxsYmFjayhzY3JpcHRFeGVjdXRpb25Db250ZXh0KCksIGVy
cm9yQ2FsbGJhY2ssIEZpbGVFcnJvcjo6Y3JlYXRlKElOVkFMSURfTU9ESUZJQ0FUSU9OX0VSUikp
OworICAgICAgICByZXR1cm47CisgICAgfQorCisgICAgU3RyaW5nIGRlc3RQYXRoID0gcGFyZW50
LT5mdWxsUGF0aCgpOworICAgIGlmICghbmV3TmFtZS5pc0VtcHR5KCkpCisgICAgICAgIGRlc3RQ
YXRoID0gRE9NRmlsZVBhdGg6OmFwcGVuZChkZXN0UGF0aCwgbmV3TmFtZSk7CisgICAgZWxzZQor
ICAgICAgICBkZXN0UGF0aCA9IERPTUZpbGVQYXRoOjphcHBlbmQoZGVzdFBhdGgsIHNyYy0+bmFt
ZSgpKTsKKworICAgIFN0cmluZyBzcmNQbGF0Zm9ybVBhdGggPSBtX2FzeW5jRmlsZVN5c3RlbS0+
dmlydHVhbFRvUGxhdGZvcm1QYXRoKHNyYy0+ZnVsbFBhdGgoKSk7CisgICAgU3RyaW5nIGRlc3RQ
bGF0Zm9ybVBhdGggPSBwYXJlbnQtPmZpbGVzeXN0ZW0oKS0+YXN5bmNGaWxlU3lzdGVtKCktPnZp
cnR1YWxUb1BsYXRmb3JtUGF0aChkZXN0UGF0aCk7CisgICAgbV9hc3luY0ZpbGVTeXN0ZW0tPmNv
cHkoc3JjUGxhdGZvcm1QYXRoLCBkZXN0UGxhdGZvcm1QYXRoLCBuZXcgRW50cnlDYWxsYmFja3Mo
c3VjY2Vzc0NhbGxiYWNrLCBlcnJvckNhbGxiYWNrLCB0aGlzLCBkZXN0UGF0aCwgc3JjLT5pc0Rp
cmVjdG9yeSgpKSk7Cit9CisKK3ZvaWQgRE9NRmlsZVN5c3RlbTo6cmVtb3ZlKGNvbnN0IEVudHJ5
KiBlbnRyeSwgUGFzc1JlZlB0cjxWb2lkQ2FsbGJhY2s+IHN1Y2Nlc3NDYWxsYmFjaywgUGFzc1Jl
ZlB0cjxFcnJvckNhbGxiYWNrPiBlcnJvckNhbGxiYWNrKQoreworICAgIEFTU0VSVChlbnRyeSk7
CisgICAgU3RyaW5nIHBsYXRmb3JtUGF0aCA9IG1fYXN5bmNGaWxlU3lzdGVtLT52aXJ0dWFsVG9Q
bGF0Zm9ybVBhdGgoZW50cnktPmZ1bGxQYXRoKCkpOworICAgIG1fYXN5bmNGaWxlU3lzdGVtLT5y
ZW1vdmUocGxhdGZvcm1QYXRoLCBuZXcgVm9pZENhbGxiYWNrcyhzdWNjZXNzQ2FsbGJhY2ssIGVy
cm9yQ2FsbGJhY2spKTsKK30KKwordm9pZCBET01GaWxlU3lzdGVtOjpnZXRQYXJlbnQoY29uc3Qg
RW50cnkqIGVudHJ5LCBQYXNzUmVmUHRyPEVudHJ5Q2FsbGJhY2s+IHN1Y2Nlc3NDYWxsYmFjaywg
UGFzc1JlZlB0cjxFcnJvckNhbGxiYWNrPiBlcnJvckNhbGxiYWNrKQoreworICAgIEFTU0VSVChl
bnRyeSk7CisgICAgU3RyaW5nIHBhdGggPSBET01GaWxlUGF0aDo6Z2V0RGlyZWN0b3J5KGVudHJ5
LT5mdWxsUGF0aCgpKTsKKyAgICBTdHJpbmcgcGxhdGZvcm1QYXRoID0gbV9hc3luY0ZpbGVTeXN0
ZW0tPnZpcnR1YWxUb1BsYXRmb3JtUGF0aChwYXRoKTsKKyAgICBtX2FzeW5jRmlsZVN5c3RlbS0+
ZGlyZWN0b3J5RXhpc3RzKHBsYXRmb3JtUGF0aCwgbmV3IEVudHJ5Q2FsbGJhY2tzKHN1Y2Nlc3ND
YWxsYmFjaywgZXJyb3JDYWxsYmFjaywgdGhpcywgcGF0aCwgdHJ1ZSkpOworfQorCit2b2lkIERP
TUZpbGVTeXN0ZW06OmdldEZpbGUoY29uc3QgRW50cnkqIGJhc2UsIGNvbnN0IFN0cmluZyYgcGF0
aCwgUGFzc1JlZlB0cjxGbGFncz4gZmxhZ3MsIFBhc3NSZWZQdHI8RW50cnlDYWxsYmFjaz4gc3Vj
Y2Vzc0NhbGxiYWNrLCBQYXNzUmVmUHRyPEVycm9yQ2FsbGJhY2s+IGVycm9yQ2FsbGJhY2spCit7
CisgICAgQVNTRVJUKGJhc2UpOworICAgIGlmICghRE9NRmlsZVBhdGg6OmlzVmFsaWRQYXRoKHBh
dGgpKSB7CisgICAgICAgIHNjaGVkdWxlQ2FsbGJhY2soc2NyaXB0RXhlY3V0aW9uQ29udGV4dCgp
LCBlcnJvckNhbGxiYWNrLCBGaWxlRXJyb3I6OmNyZWF0ZShJTlZBTElEX01PRElGSUNBVElPTl9F
UlIpKTsKKyAgICAgICAgcmV0dXJuOworICAgIH0KKworICAgIFN0cmluZyBhYnNvbHV0ZVBhdGgg
PSBwYXRoOworICAgIGlmICghRE9NRmlsZVBhdGg6OmlzQWJzb2x1dGUocGF0aCkpCisgICAgICAg
IGFic29sdXRlUGF0aCA9IERPTUZpbGVQYXRoOjpyZW1vdmVFeHRyYVBhcmVudFJlZmVyZW5jZXMo
RE9NRmlsZVBhdGg6OmFwcGVuZChiYXNlLT5mdWxsUGF0aCgpLCBwYXRoKSk7CisgICAgU3RyaW5n
IHBsYXRmb3JtUGF0aCA9IG1fYXN5bmNGaWxlU3lzdGVtLT52aXJ0dWFsVG9QbGF0Zm9ybVBhdGgo
YWJzb2x1dGVQYXRoKTsKKworICAgIE93blB0cjxFbnRyeUNhbGxiYWNrcz4gY2FsbGJhY2tzID0g
YWRvcHRQdHIobmV3IEVudHJ5Q2FsbGJhY2tzKHN1Y2Nlc3NDYWxsYmFjaywgZXJyb3JDYWxsYmFj
aywgdGhpcywgYWJzb2x1dGVQYXRoLCBmYWxzZSkpOworICAgIGlmIChmbGFncyAmJiBmbGFncy0+
aXNDcmVhdGUoKSkKKyAgICAgICAgbV9hc3luY0ZpbGVTeXN0ZW0tPmNyZWF0ZUZpbGUocGxhdGZv
cm1QYXRoLCBmbGFncy0+aXNFeGNsdXNpdmUoKSwgY2FsbGJhY2tzLnJlbGVhc2UoKSk7CisgICAg
ZWxzZQorICAgICAgICBtX2FzeW5jRmlsZVN5c3RlbS0+ZmlsZUV4aXN0cyhwbGF0Zm9ybVBhdGgs
IGNhbGxiYWNrcy5yZWxlYXNlKCkpOworfQorCit2b2lkIERPTUZpbGVTeXN0ZW06OmdldERpcmVj
dG9yeShjb25zdCBFbnRyeSogYmFzZSwgY29uc3QgU3RyaW5nJiBwYXRoLCBQYXNzUmVmUHRyPEZs
YWdzPiBmbGFncywgUGFzc1JlZlB0cjxFbnRyeUNhbGxiYWNrPiBzdWNjZXNzQ2FsbGJhY2ssIFBh
c3NSZWZQdHI8RXJyb3JDYWxsYmFjaz4gZXJyb3JDYWxsYmFjaykKK3sKKyAgICBBU1NFUlQoYmFz
ZSk7CisgICAgaWYgKCFET01GaWxlUGF0aDo6aXNWYWxpZFBhdGgocGF0aCkpIHsKKyAgICAgICAg
c2NoZWR1bGVDYWxsYmFjayhzY3JpcHRFeGVjdXRpb25Db250ZXh0KCksIGVycm9yQ2FsbGJhY2ss
IEZpbGVFcnJvcjo6Y3JlYXRlKElOVkFMSURfTU9ESUZJQ0FUSU9OX0VSUikpOworICAgICAgICBy
ZXR1cm47CisgICAgfQorCisgICAgU3RyaW5nIGFic29sdXRlUGF0aCA9IHBhdGg7CisgICAgaWYg
KCFET01GaWxlUGF0aDo6aXNBYnNvbHV0ZShwYXRoKSkKKyAgICAgICAgYWJzb2x1dGVQYXRoID0g
RE9NRmlsZVBhdGg6OnJlbW92ZUV4dHJhUGFyZW50UmVmZXJlbmNlcyhET01GaWxlUGF0aDo6YXBw
ZW5kKGJhc2UtPmZ1bGxQYXRoKCksIHBhdGgpKTsKKyAgICBTdHJpbmcgcGxhdGZvcm1QYXRoID0g
bV9hc3luY0ZpbGVTeXN0ZW0tPnZpcnR1YWxUb1BsYXRmb3JtUGF0aChhYnNvbHV0ZVBhdGgpOwor
CisgICAgT3duUHRyPEVudHJ5Q2FsbGJhY2tzPiBjYWxsYmFja3MgPSBhZG9wdFB0cihuZXcgRW50
cnlDYWxsYmFja3Moc3VjY2Vzc0NhbGxiYWNrLCBlcnJvckNhbGxiYWNrLCB0aGlzLCBhYnNvbHV0
ZVBhdGgsIHRydWUpKTsKKyAgICBpZiAoZmxhZ3MgJiYgZmxhZ3MtPmlzQ3JlYXRlKCkpCisgICAg
ICAgIG1fYXN5bmNGaWxlU3lzdGVtLT5jcmVhdGVEaXJlY3RvcnkocGxhdGZvcm1QYXRoLCBmbGFn
cy0+aXNFeGNsdXNpdmUoKSwgY2FsbGJhY2tzLnJlbGVhc2UoKSk7CisgICAgZWxzZQorICAgICAg
ICBtX2FzeW5jRmlsZVN5c3RlbS0+ZGlyZWN0b3J5RXhpc3RzKHBsYXRmb3JtUGF0aCwgY2FsbGJh
Y2tzLnJlbGVhc2UoKSk7Cit9CisKK3ZvaWQgRE9NRmlsZVN5c3RlbTo6cmVhZERpcmVjdG9yeShj
b25zdCBTdHJpbmcmIHBhdGgsIFBhc3NSZWZQdHI8RW50cmllc0NhbGxiYWNrPiBzdWNjZXNzQ2Fs
bGJhY2ssIFBhc3NSZWZQdHI8RXJyb3JDYWxsYmFjaz4gZXJyb3JDYWxsYmFjaykKK3sKKyAgICBB
U1NFUlQoRE9NRmlsZVBhdGg6OmlzQWJzb2x1dGUocGF0aCkpOworICAgIFN0cmluZyBwbGF0Zm9y
bVBhdGggPSBtX2FzeW5jRmlsZVN5c3RlbS0+dmlydHVhbFRvUGxhdGZvcm1QYXRoKHBhdGgpOwor
ICAgIG1fYXN5bmNGaWxlU3lzdGVtLT5yZWFkRGlyZWN0b3J5KHBsYXRmb3JtUGF0aCwgbmV3IEVu
dHJpZXNDYWxsYmFja3Moc3VjY2Vzc0NhbGxiYWNrLCBlcnJvckNhbGxiYWNrLCB0aGlzLCBwYXRo
KSk7Cit9CisKIH0gLy8gbmFtZXNwYWNlCiAKICNlbmRpZiAvLyBFTkFCTEUoRklMRV9TWVNURU0p
CmRpZmYgLS1naXQgYS9XZWJDb3JlL3N0b3JhZ2UvRE9NRmlsZVN5c3RlbS5oIGIvV2ViQ29yZS9z
dG9yYWdlL0RPTUZpbGVTeXN0ZW0uaAppbmRleCAzMzdiZWE5Y2JlZWMwYjdmZTIzYjk0NWIzOTNh
NTM0NzBkOTQ1MmYzLi4xZjNlYTg0NzgwZDE1Mjc3ZmYyMjMwNWY0MTk1ZGEwOGVkMjJhNGYwIDEw
MDY0NAotLS0gYS9XZWJDb3JlL3N0b3JhZ2UvRE9NRmlsZVN5c3RlbS5oCisrKyBiL1dlYkNvcmUv
c3RvcmFnZS9ET01GaWxlU3lzdGVtLmgKQEAgLTM3LDEzICszNywxOSBAQAogI2luY2x1ZGUgIkFz
eW5jRmlsZVN5c3RlbS5oIgogI2luY2x1ZGUgIkZsYWdzLmgiCiAjaW5jbHVkZSAiUGxhdGZvcm1T
dHJpbmcuaCIKKyNpbmNsdWRlICJTY3JpcHRFeGVjdXRpb25Db250ZXh0LmgiCiAjaW5jbHVkZSA8
d3RmL1Bhc3NSZWZQdHIuaD4KICNpbmNsdWRlIDx3dGYvUmVmQ291bnRlZC5oPgogCiBuYW1lc3Bh
Y2UgV2ViQ29yZSB7CiAKIGNsYXNzIERpcmVjdG9yeUVudHJ5OwotY2xhc3MgU2NyaXB0RXhlY3V0
aW9uQ29udGV4dDsKK2NsYXNzIEVudHJ5OworY2xhc3MgRW50cnlDYWxsYmFjazsKK2NsYXNzIEVu
dHJpZXNDYWxsYmFjazsKK2NsYXNzIEVycm9yQ2FsbGJhY2s7CitjbGFzcyBNZXRhZGF0YUNhbGxi
YWNrOworY2xhc3MgVm9pZENhbGxiYWNrOwogCiBjbGFzcyBET01GaWxlU3lzdGVtIDogcHVibGlj
IFJlZkNvdW50ZWQ8RE9NRmlsZVN5c3RlbT4sIHB1YmxpYyBBY3RpdmVET01PYmplY3QgewogcHVi
bGljOgpAQCAtNjIsOSArNjgsNDkgQEAgcHVibGljOgogICAgIHZpcnR1YWwgYm9vbCBoYXNQZW5k
aW5nQWN0aXZpdHkoKSBjb25zdDsKICAgICB2aXJ0dWFsIHZvaWQgY29udGV4dERlc3Ryb3llZCgp
OwogCisgICAgLy8gQWN0dWFsIEZpbGVTeXN0ZW0gQVBJIGltcGxlbWVudGF0aW9ucy4gIEFsbCB0
aGUgdmFsaWRpdHkgY2hlY2tzIG9uIHZpcnR1YWwgcGF0aHMgYXJlIGRvbmUgYXQgRE9NRmlsZVN5
c3RlbSBsZXZlbC4KKyAgICB2b2lkIGdldE1ldGFkYXRhKGNvbnN0IEVudHJ5KiBlbnRyeSwgUGFz
c1JlZlB0cjxNZXRhZGF0YUNhbGxiYWNrPiBzdWNjZXNzQ2FsbGJhY2ssIFBhc3NSZWZQdHI8RXJy
b3JDYWxsYmFjaz4gZXJyb3JDYWxsYmFjayk7CisgICAgdm9pZCBtb3ZlKGNvbnN0IEVudHJ5KiBz
cmMsIFBhc3NSZWZQdHI8RW50cnk+IHBhcmVudCwgY29uc3QgU3RyaW5nJiBuYW1lLCBQYXNzUmVm
UHRyPEVudHJ5Q2FsbGJhY2s+LCBQYXNzUmVmUHRyPEVycm9yQ2FsbGJhY2s+KTsKKyAgICB2b2lk
IGNvcHkoY29uc3QgRW50cnkqIHNyYywgUGFzc1JlZlB0cjxFbnRyeT4gcGFyZW50LCBjb25zdCBT
dHJpbmcmIG5hbWUsIFBhc3NSZWZQdHI8RW50cnlDYWxsYmFjaz4sIFBhc3NSZWZQdHI8RXJyb3JD
YWxsYmFjaz4pOworICAgIHZvaWQgcmVtb3ZlKGNvbnN0IEVudHJ5KiBlbnRyeSwgUGFzc1JlZlB0
cjxWb2lkQ2FsbGJhY2s+LCBQYXNzUmVmUHRyPEVycm9yQ2FsbGJhY2s+KTsKKyAgICB2b2lkIGdl
dFBhcmVudChjb25zdCBFbnRyeSogZW50cnksIFBhc3NSZWZQdHI8RW50cnlDYWxsYmFjaz4sIFBh
c3NSZWZQdHI8RXJyb3JDYWxsYmFjaz4pOworICAgIHZvaWQgZ2V0RmlsZShjb25zdCBFbnRyeSog
YmFzZSwgY29uc3QgU3RyaW5nJiBwYXRoLCBQYXNzUmVmUHRyPEZsYWdzPiwgUGFzc1JlZlB0cjxF
bnRyeUNhbGxiYWNrPiwgUGFzc1JlZlB0cjxFcnJvckNhbGxiYWNrPik7CisgICAgdm9pZCBnZXRE
aXJlY3RvcnkoY29uc3QgRW50cnkqIGJhc2UsIGNvbnN0IFN0cmluZyYgcGF0aCwgUGFzc1JlZlB0
cjxGbGFncz4sIFBhc3NSZWZQdHI8RW50cnlDYWxsYmFjaz4sIFBhc3NSZWZQdHI8RXJyb3JDYWxs
YmFjaz4pOworICAgIHZvaWQgcmVhZERpcmVjdG9yeShjb25zdCBTdHJpbmcmIHBhdGgsIFBhc3NS
ZWZQdHI8RW50cmllc0NhbGxiYWNrPiwgUGFzc1JlZlB0cjxFcnJvckNhbGxiYWNrPik7CisKKyAg
ICAvLyBBIGhlbHBlciB0ZW1wbGF0ZSB0byBzY2hlZHVsZSBhIGNhbGxiYWNrIHRhc2suCisgICAg
dGVtcGxhdGUgPHR5cGVuYW1lIENCLCB0eXBlbmFtZSBDQkFyZz4KKyAgICBjbGFzcyBEaXNwYXRj
aENhbGxiYWNrVGFzayA6IHB1YmxpYyBTY3JpcHRFeGVjdXRpb25Db250ZXh0OjpUYXNrIHsKKyAg
ICBwdWJsaWM6CisgICAgICAgIERpc3BhdGNoQ2FsbGJhY2tUYXNrKFBhc3NSZWZQdHI8Q0I+IGNh
bGxiYWNrLCBQYXNzUmVmUHRyPENCQXJnPiBhcmcpCisgICAgICAgICAgICA6IG1fY2FsbGJhY2so
Y2FsbGJhY2spCisgICAgICAgICAgICAsIG1fY2FsbGJhY2tBcmcoYXJnKQorICAgICAgICB7Cisg
ICAgICAgIH0KKworICAgICAgICB2aXJ0dWFsIHZvaWQgcGVyZm9ybVRhc2soU2NyaXB0RXhlY3V0
aW9uQ29udGV4dCopCisgICAgICAgIHsKKyAgICAgICAgICAgIG1fY2FsbGJhY2stPmhhbmRsZUV2
ZW50KG1fY2FsbGJhY2tBcmcuZ2V0KCkpOworICAgICAgICB9CisKKyAgICBwcml2YXRlOgorICAg
ICAgICBSZWZQdHI8Q0I+IG1fY2FsbGJhY2s7CisgICAgICAgIFJlZlB0cjxDQkFyZz4gbV9jYWxs
YmFja0FyZzsKKyAgICB9OworCisgICAgLy8gU2NoZWR1bGUgYSBjYWxsYmFjay4gVGhpcyBzaG91
bGQgbm90IGNyb3NzIHRocmVhZHMgKHNob3VsZCBiZSBjYWxsZWQgb24gdGhlIHNhbWUgY29udGV4
dCB0aHJlYWQpLgorICAgIHRlbXBsYXRlIDx0eXBlbmFtZSBDQiwgdHlwZW5hbWUgQ0JBcmc+Cisg
ICAgc3RhdGljIHZvaWQgc2NoZWR1bGVDYWxsYmFjayhTY3JpcHRFeGVjdXRpb25Db250ZXh0KiBz
Y3JpcHRFeGVjdXRpb25Db250ZXh0LCBQYXNzUmVmUHRyPENCPiBjYWxsYmFjaywgUGFzc1JlZlB0
cjxDQkFyZz4gYXJnKQorICAgIHsKKyAgICAgICAgQVNTRVJUKHNjcmlwdEV4ZWN1dGlvbkNvbnRl
eHQtPmlzQ29udGV4dFRocmVhZCgpKTsKKyAgICAgICAgc2NyaXB0RXhlY3V0aW9uQ29udGV4dC0+
cG9zdFRhc2sobmV3IERpc3BhdGNoQ2FsbGJhY2tUYXNrPENCLCBDQkFyZz4oY2FsbGJhY2ssIGFy
ZykpOworICAgIH0KKwogcHJpdmF0ZToKICAgICBET01GaWxlU3lzdGVtKFNjcmlwdEV4ZWN1dGlv
bkNvbnRleHQqLCBjb25zdCBTdHJpbmcmIG5hbWUsIFBhc3NPd25QdHI8QXN5bmNGaWxlU3lzdGVt
Pik7CiAKKyAgICBBc3luY0ZpbGVTeXN0ZW0qIGFzeW5jRmlsZVN5c3RlbSgpIGNvbnN0IHsgcmV0
dXJuIG1fYXN5bmNGaWxlU3lzdGVtLmdldCgpOyB9CisKICAgICBTdHJpbmcgbV9uYW1lOwogICAg
IG11dGFibGUgT3duUHRyPEFzeW5jRmlsZVN5c3RlbT4gbV9hc3luY0ZpbGVTeXN0ZW07CiB9Owpk
aWZmIC0tZ2l0IGEvV2ViQ29yZS9zdG9yYWdlL0RpcmVjdG9yeUVudHJ5LmNwcCBiL1dlYkNvcmUv
c3RvcmFnZS9EaXJlY3RvcnlFbnRyeS5jcHAKaW5kZXggNjBkY2FjZTRkMDZlNjZmZGIwNzlkMWQ5
MmI4ZjA3ZGU1MGMzZWM2Mi4uOTVjMTJlNDhmODEwYjFiZGUwODAxMzgwMzE3ZjY3MmM3Zjg2ZWNj
NCAxMDA2NDQKLS0tIGEvV2ViQ29yZS9zdG9yYWdlL0RpcmVjdG9yeUVudHJ5LmNwcAorKysgYi9X
ZWJDb3JlL3N0b3JhZ2UvRGlyZWN0b3J5RW50cnkuY3BwCkBAIC0zOSw3ICszOSw3IEBACiAKIG5h
bWVzcGFjZSBXZWJDb3JlIHsKIAotRGlyZWN0b3J5RW50cnk6OkRpcmVjdG9yeUVudHJ5KFBhc3NS
ZWZQdHI8RE9NRmlsZVN5c3RlbT4gZmlsZVN5c3RlbSwgY29uc3QgU3RyaW5nJiBmdWxsUGF0aCkK
K0RpcmVjdG9yeUVudHJ5OjpEaXJlY3RvcnlFbnRyeShET01GaWxlU3lzdGVtKiBmaWxlU3lzdGVt
LCBjb25zdCBTdHJpbmcmIGZ1bGxQYXRoKQogICAgIDogRW50cnkoZmlsZVN5c3RlbSwgZnVsbFBh
dGgpCiB7CiB9CkBAIC00OSwxNiArNDksMTQgQEAgUGFzc1JlZlB0cjxEaXJlY3RvcnlSZWFkZXI+
IERpcmVjdG9yeUVudHJ5OjpjcmVhdGVSZWFkZXIoKQogICAgIHJldHVybiBEaXJlY3RvcnlSZWFk
ZXI6OmNyZWF0ZShtX2ZpbGVTeXN0ZW0sIG1fZnVsbFBhdGgpOwogfQogCi12b2lkIERpcmVjdG9y
eUVudHJ5OjpnZXRGaWxlKGNvbnN0IFN0cmluZyYsIFBhc3NSZWZQdHI8RmxhZ3M+LCBQYXNzUmVm
UHRyPEVudHJ5Q2FsbGJhY2s+LCBQYXNzUmVmUHRyPEVycm9yQ2FsbGJhY2s+KQordm9pZCBEaXJl
Y3RvcnlFbnRyeTo6Z2V0RmlsZShjb25zdCBTdHJpbmcmIHBhdGgsIFBhc3NSZWZQdHI8RmxhZ3M+
IGZsYWdzLCBQYXNzUmVmUHRyPEVudHJ5Q2FsbGJhY2s+IHN1Y2Nlc3NDYWxsYmFjaywgUGFzc1Jl
ZlB0cjxFcnJvckNhbGxiYWNrPiBlcnJvckNhbGxiYWNrKQogewotICAgIC8vIEZJWE1FOiB0byBi
ZSBpbXBsZW1lbnRlZC4KLSAgICBBU1NFUlRfTk9UX1JFQUNIRUQoKTsKKyAgICBtX2ZpbGVTeXN0
ZW0tPmdldEZpbGUodGhpcywgcGF0aCwgZmxhZ3MsIHN1Y2Nlc3NDYWxsYmFjaywgZXJyb3JDYWxs
YmFjayk7CiB9CiAKLXZvaWQgRGlyZWN0b3J5RW50cnk6OmdldERpcmVjdG9yeShjb25zdCBTdHJp
bmcmLCBQYXNzUmVmUHRyPEZsYWdzPiwgUGFzc1JlZlB0cjxFbnRyeUNhbGxiYWNrPiwgUGFzc1Jl
ZlB0cjxFcnJvckNhbGxiYWNrPikKK3ZvaWQgRGlyZWN0b3J5RW50cnk6OmdldERpcmVjdG9yeShj
b25zdCBTdHJpbmcmIHBhdGgsIFBhc3NSZWZQdHI8RmxhZ3M+IGZsYWdzLCBQYXNzUmVmUHRyPEVu
dHJ5Q2FsbGJhY2s+IHN1Y2Nlc3NDYWxsYmFjaywgUGFzc1JlZlB0cjxFcnJvckNhbGxiYWNrPiBl
cnJvckNhbGxiYWNrKQogewotICAgIC8vIEZJWE1FOiB0byBiZSBpbXBsZW1lbnRlZC4KLSAgICBB
U1NFUlRfTk9UX1JFQUNIRUQoKTsKKyAgICBtX2ZpbGVTeXN0ZW0tPmdldERpcmVjdG9yeSh0aGlz
LCBwYXRoLCBmbGFncywgc3VjY2Vzc0NhbGxiYWNrLCBlcnJvckNhbGxiYWNrKTsKIH0KIAogfSAv
LyBuYW1lc3BhY2UKZGlmZiAtLWdpdCBhL1dlYkNvcmUvc3RvcmFnZS9EaXJlY3RvcnlFbnRyeS5o
IGIvV2ViQ29yZS9zdG9yYWdlL0RpcmVjdG9yeUVudHJ5LmgKaW5kZXggMmFlNGZiNTRmMzlhZTcw
YWE2M2U3MzA2NzRlNmY4YzczYjFlODkzNS4uM2NkOGFiNWRjNzg3YzBhZWQ2MDE3MTQzZjU0Mjcz
ZjlmOWNmODllZCAxMDA2NDQKLS0tIGEvV2ViQ29yZS9zdG9yYWdlL0RpcmVjdG9yeUVudHJ5LmgK
KysrIGIvV2ViQ29yZS9zdG9yYWdlL0RpcmVjdG9yeUVudHJ5LmgKQEAgLTQ3LDcgKzQ3LDcgQEAg
Y2xhc3MgRXJyb3JDYWxsYmFjazsKIAogY2xhc3MgRGlyZWN0b3J5RW50cnkgOiBwdWJsaWMgRW50
cnkgewogcHVibGljOgotICAgIHN0YXRpYyBQYXNzUmVmUHRyPERpcmVjdG9yeUVudHJ5PiBjcmVh
dGUoUGFzc1JlZlB0cjxET01GaWxlU3lzdGVtPiBmaWxlU3lzdGVtLCBjb25zdCBTdHJpbmcmIGZ1
bGxQYXRoKQorICAgIHN0YXRpYyBQYXNzUmVmUHRyPERpcmVjdG9yeUVudHJ5PiBjcmVhdGUoRE9N
RmlsZVN5c3RlbSogZmlsZVN5c3RlbSwgY29uc3QgU3RyaW5nJiBmdWxsUGF0aCkKICAgICB7CiAg
ICAgICAgIHJldHVybiBhZG9wdFJlZihuZXcgRGlyZWN0b3J5RW50cnkoZmlsZVN5c3RlbSwgZnVs
bFBhdGgpKTsKICAgICB9CkBAIC01OCw3ICs1OCw3IEBAIHB1YmxpYzoKICAgICB2b2lkIGdldERp
cmVjdG9yeShjb25zdCBTdHJpbmcmIHBhdGgsIFBhc3NSZWZQdHI8RmxhZ3M+IG9wdGlvbnMgPSAw
LCBQYXNzUmVmUHRyPEVudHJ5Q2FsbGJhY2s+IHN1Y2Nlc3NDYWxsYmFjayA9IDAsIFBhc3NSZWZQ
dHI8RXJyb3JDYWxsYmFjaz4gZXJyb3JDYWxsYmFjayA9IDApOwogCiBwcml2YXRlOgotICAgIERp
cmVjdG9yeUVudHJ5KFBhc3NSZWZQdHI8RE9NRmlsZVN5c3RlbT4gZmlsZVN5c3RlbSwgY29uc3Qg
U3RyaW5nJiBmdWxsUGF0aCk7CisgICAgRGlyZWN0b3J5RW50cnkoRE9NRmlsZVN5c3RlbSogZmls
ZVN5c3RlbSwgY29uc3QgU3RyaW5nJiBmdWxsUGF0aCk7CiB9OwogCiB9IC8vIG5hbWVzcGFjZQpk
aWZmIC0tZ2l0IGEvV2ViQ29yZS9zdG9yYWdlL0RpcmVjdG9yeVJlYWRlci5jcHAgYi9XZWJDb3Jl
L3N0b3JhZ2UvRGlyZWN0b3J5UmVhZGVyLmNwcAppbmRleCAwYjMwZjcwNTMxNGM4ZmQ5Mjc2NTky
Yjk3MGFiNjgwNzY2NDE2NGU1Li5iMGVlZjFjYzQ5Mjc2ZjMzYzc5NDBlNjY5MmNhMmY1ZDYwMGYw
NTE1IDEwMDY0NAotLS0gYS9XZWJDb3JlL3N0b3JhZ2UvRGlyZWN0b3J5UmVhZGVyLmNwcAorKysg
Yi9XZWJDb3JlL3N0b3JhZ2UvRGlyZWN0b3J5UmVhZGVyLmNwcApAQCAtMzksMTYgKzM5LDE1IEBA
CiAKIG5hbWVzcGFjZSBXZWJDb3JlIHsKIAotRGlyZWN0b3J5UmVhZGVyOjpEaXJlY3RvcnlSZWFk
ZXIoUGFzc1JlZlB0cjxET01GaWxlU3lzdGVtPiBmaWxlU3lzdGVtLCBjb25zdCBTdHJpbmcmIHBh
dGgpCitEaXJlY3RvcnlSZWFkZXI6OkRpcmVjdG9yeVJlYWRlcihQYXNzUmVmUHRyPERPTUZpbGVT
eXN0ZW0+IGZpbGVTeXN0ZW0sIGNvbnN0IFN0cmluZyYgZnVsbFBhdGgpCiAgICAgOiBtX2ZpbGVT
eXN0ZW0oZmlsZVN5c3RlbSkKLSAgICAsIG1fcGF0aChwYXRoKQorICAgICwgbV9mdWxsUGF0aChm
dWxsUGF0aCkKIHsKIH0KIAotdm9pZCBEaXJlY3RvcnlSZWFkZXI6OnJlYWRFbnRyaWVzKFBhc3NS
ZWZQdHI8RW50cmllc0NhbGxiYWNrPiwgUGFzc1JlZlB0cjxFcnJvckNhbGxiYWNrPikKK3ZvaWQg
RGlyZWN0b3J5UmVhZGVyOjpyZWFkRW50cmllcyhQYXNzUmVmUHRyPEVudHJpZXNDYWxsYmFjaz4g
ZW50cmllc0NhbGxiYWNrLCBQYXNzUmVmUHRyPEVycm9yQ2FsbGJhY2s+IGVycm9yQ2FsbGJhY2sp
CiB7Ci0gICAgLy8gRklYTUU6IHRvIGJlIGltcGxlbWVudGVkLgotICAgIEFTU0VSVF9OT1RfUkVB
Q0hFRCgpOworICAgIG1fZmlsZVN5c3RlbS0+cmVhZERpcmVjdG9yeShtX2Z1bGxQYXRoLCBlbnRy
aWVzQ2FsbGJhY2ssIGVycm9yQ2FsbGJhY2spOwogfQogCiB9IC8vIG5hbWVzcGFjZQpkaWZmIC0t
Z2l0IGEvV2ViQ29yZS9zdG9yYWdlL0RpcmVjdG9yeVJlYWRlci5oIGIvV2ViQ29yZS9zdG9yYWdl
L0RpcmVjdG9yeVJlYWRlci5oCmluZGV4IGNmNWRhOGYzZGM3NWY0MzBlM2U2NDZjODkyZTc1NjY1
ZDFkNDUxNzAuLjBlMmVmMGY2Y2QyMjljZGQ0ZDk1N2UxZWY1YjI3NGE1OGM2MzkxZDAgMTAwNjQ0
Ci0tLSBhL1dlYkNvcmUvc3RvcmFnZS9EaXJlY3RvcnlSZWFkZXIuaAorKysgYi9XZWJDb3JlL3N0
b3JhZ2UvRGlyZWN0b3J5UmVhZGVyLmgKQEAgLTU2LDcgKzU2LDcgQEAgcHJpdmF0ZToKICAgICBE
aXJlY3RvcnlSZWFkZXIoUGFzc1JlZlB0cjxET01GaWxlU3lzdGVtPiBmaWxlU3lzdGVtLCBjb25z
dCBTdHJpbmcmIHBhdGgpOwogCiAgICAgUmVmUHRyPERPTUZpbGVTeXN0ZW0+IG1fZmlsZVN5c3Rl
bTsKLSAgICBTdHJpbmcgbV9wYXRoOworICAgIFN0cmluZyBtX2Z1bGxQYXRoOwogfTsKIAogfSAv
LyBuYW1lc3BhY2UKZGlmZiAtLWdpdCBhL1dlYkNvcmUvc3RvcmFnZS9FbnRyeS5jcHAgYi9XZWJD
b3JlL3N0b3JhZ2UvRW50cnkuY3BwCmluZGV4IDY3ODMyOTEzOThhOWVlZjc3MGY5NTQwN2I5MWI5
YzdkN2UxNGZmMzAuLmZiYmVkZjIwZTc0NGQyNmMwZmE5NWNmMzM0NTljODcyMGRjYmM3ZDkgMTAw
NjQ0Ci0tLSBhL1dlYkNvcmUvc3RvcmFnZS9FbnRyeS5jcHAKKysrIGIvV2ViQ29yZS9zdG9yYWdl
L0VudHJ5LmNwcApAQCAtMzIsMTUgKzMyLDE3IEBACiAKICNpZiBFTkFCTEUoRklMRV9TWVNURU0p
CiAKKyNpbmNsdWRlICJET01GaWxlUGF0aC5oIgogI2luY2x1ZGUgIkRPTUZpbGVTeXN0ZW0uaCIK
ICNpbmNsdWRlICJFbnRyeUNhbGxiYWNrLmgiCiAjaW5jbHVkZSAiRXJyb3JDYWxsYmFjay5oIgor
I2luY2x1ZGUgIkZpbGVFcnJvci5oIgogI2luY2x1ZGUgIk1ldGFkYXRhQ2FsbGJhY2suaCIKICNp
bmNsdWRlICJWb2lkQ2FsbGJhY2suaCIKIAogbmFtZXNwYWNlIFdlYkNvcmUgewogCi1FbnRyeTo6
RW50cnkoUGFzc1JlZlB0cjxET01GaWxlU3lzdGVtPiBmaWxlU3lzdGVtLCBjb25zdCBTdHJpbmcm
IGZ1bGxQYXRoKQorRW50cnk6OkVudHJ5KERPTUZpbGVTeXN0ZW0qIGZpbGVTeXN0ZW0sIGNvbnN0
IFN0cmluZyYgZnVsbFBhdGgpCiAgICAgOiBtX2ZpbGVTeXN0ZW0oZmlsZVN5c3RlbSkKICAgICAs
IG1fZnVsbFBhdGgoZnVsbFBhdGgpCiB7CkBAIC01MSwzNCArNTMsMjkgQEAgRW50cnk6OkVudHJ5
KFBhc3NSZWZQdHI8RE9NRmlsZVN5c3RlbT4gZmlsZVN5c3RlbSwgY29uc3QgU3RyaW5nJiBmdWxs
UGF0aCkKICAgICAgICAgbV9uYW1lID0gZnVsbFBhdGg7CiB9CiAKLXZvaWQgRW50cnk6OmdldE1l
dGFkYXRhKFBhc3NSZWZQdHI8TWV0YWRhdGFDYWxsYmFjaz4sIFBhc3NSZWZQdHI8RXJyb3JDYWxs
YmFjaz4pCit2b2lkIEVudHJ5OjpnZXRNZXRhZGF0YShQYXNzUmVmUHRyPE1ldGFkYXRhQ2FsbGJh
Y2s+IHN1Y2Nlc3NDYWxsYmFjaywgUGFzc1JlZlB0cjxFcnJvckNhbGxiYWNrPiBlcnJvckNhbGxi
YWNrKQogewotICAgIC8vIEZJWE1FOiB0byBiZSBpbXBsZW1lbnRlZC4KLSAgICBBU1NFUlRfTk9U
X1JFQUNIRUQoKTsKKyAgICBtX2ZpbGVTeXN0ZW0tPmdldE1ldGFkYXRhKHRoaXMsIHN1Y2Nlc3ND
YWxsYmFjaywgZXJyb3JDYWxsYmFjayk7CiB9CiAKLXZvaWQgRW50cnk6Om1vdmVUbyhQYXNzUmVm
UHRyPEVudHJ5PiwgY29uc3QgU3RyaW5nJiwgUGFzc1JlZlB0cjxFbnRyeUNhbGxiYWNrPiwgUGFz
c1JlZlB0cjxFcnJvckNhbGxiYWNrPikKK3ZvaWQgRW50cnk6Om1vdmVUbyhQYXNzUmVmUHRyPEVu
dHJ5PiBwYXJlbnQsIGNvbnN0IFN0cmluZyYgbmFtZSwgUGFzc1JlZlB0cjxFbnRyeUNhbGxiYWNr
PiBzdWNjZXNzQ2FsbGJhY2ssIFBhc3NSZWZQdHI8RXJyb3JDYWxsYmFjaz4gZXJyb3JDYWxsYmFj
aykgY29uc3QKIHsKLSAgICAvLyBGSVhNRTogdG8gYmUgaW1wbGVtZW50ZWQuCi0gICAgQVNTRVJU
X05PVF9SRUFDSEVEKCk7CisgICAgbV9maWxlU3lzdGVtLT5tb3ZlKHRoaXMsIHBhcmVudCwgbmFt
ZSwgc3VjY2Vzc0NhbGxiYWNrLCBlcnJvckNhbGxiYWNrKTsKIH0KIAotdm9pZCBFbnRyeTo6Y29w
eVRvKFBhc3NSZWZQdHI8RW50cnk+LCBjb25zdCBTdHJpbmcmLCBQYXNzUmVmUHRyPEVudHJ5Q2Fs
bGJhY2s+LCBQYXNzUmVmUHRyPEVycm9yQ2FsbGJhY2s+KQordm9pZCBFbnRyeTo6Y29weVRvKFBh
c3NSZWZQdHI8RW50cnk+IHBhcmVudCwgY29uc3QgU3RyaW5nJiBuYW1lLCBQYXNzUmVmUHRyPEVu
dHJ5Q2FsbGJhY2s+IHN1Y2Nlc3NDYWxsYmFjaywgUGFzc1JlZlB0cjxFcnJvckNhbGxiYWNrPiBl
cnJvckNhbGxiYWNrKSBjb25zdAogewotICAgIC8vIEZJWE1FOiB0byBiZSBpbXBsZW1lbnRlZC4K
LSAgICBBU1NFUlRfTk9UX1JFQUNIRUQoKTsKKyAgICBtX2ZpbGVTeXN0ZW0tPmNvcHkodGhpcywg
cGFyZW50LCBuYW1lLCBzdWNjZXNzQ2FsbGJhY2ssIGVycm9yQ2FsbGJhY2spOwogfQogCi12b2lk
IEVudHJ5OjpyZW1vdmUoUGFzc1JlZlB0cjxWb2lkQ2FsbGJhY2s+LCBQYXNzUmVmUHRyPEVycm9y
Q2FsbGJhY2s+KQordm9pZCBFbnRyeTo6cmVtb3ZlKFBhc3NSZWZQdHI8Vm9pZENhbGxiYWNrPiBz
dWNjZXNzQ2FsbGJhY2ssIFBhc3NSZWZQdHI8RXJyb3JDYWxsYmFjaz4gZXJyb3JDYWxsYmFjaykg
Y29uc3QKIHsKLSAgICAvLyBGSVhNRTogdG8gYmUgaW1wbGVtZW50ZWQuCi0gICAgQVNTRVJUX05P
VF9SRUFDSEVEKCk7CisgICAgbV9maWxlU3lzdGVtLT5yZW1vdmUodGhpcywgc3VjY2Vzc0NhbGxi
YWNrLCBlcnJvckNhbGxiYWNrKTsKIH0KIAotdm9pZCBFbnRyeTo6Z2V0UGFyZW50KFBhc3NSZWZQ
dHI8RW50cnlDYWxsYmFjaz4sIFBhc3NSZWZQdHI8RXJyb3JDYWxsYmFjaz4pCit2b2lkIEVudHJ5
OjpnZXRQYXJlbnQoUGFzc1JlZlB0cjxFbnRyeUNhbGxiYWNrPiBzdWNjZXNzQ2FsbGJhY2ssIFBh
c3NSZWZQdHI8RXJyb3JDYWxsYmFjaz4gZXJyb3JDYWxsYmFjaykgY29uc3QKIHsKLSAgICAvLyBG
SVhNRTogdG8gYmUgaW1wbGVtZW50ZWQuCi0gICAgQVNTRVJUX05PVF9SRUFDSEVEKCk7CisgICAg
bV9maWxlU3lzdGVtLT5nZXRQYXJlbnQodGhpcywgc3VjY2Vzc0NhbGxiYWNrLCBlcnJvckNhbGxi
YWNrKTsKIH0KIAogU3RyaW5nIEVudHJ5Ojp0b1VSSShjb25zdCBTdHJpbmcmKQpkaWZmIC0tZ2l0
IGEvV2ViQ29yZS9zdG9yYWdlL0VudHJ5LmggYi9XZWJDb3JlL3N0b3JhZ2UvRW50cnkuaAppbmRl
eCA3YmJiMjY1NzRhYjExNzAwNmEyMTIxOGQ1ZWY1YzA0OGMyNjhjMzFiLi45YWY1MzJmOWJhYWM1
NWRjMTE0NDJiOGVlMDc5M2E1OWY5ZGUwOGExIDEwMDY0NAotLS0gYS9XZWJDb3JlL3N0b3JhZ2Uv
RW50cnkuaAorKysgYi9XZWJDb3JlL3N0b3JhZ2UvRW50cnkuaApAQCAtNTQsMjIgKzU0LDIxIEBA
IHB1YmxpYzoKICAgICBjb25zdCBTdHJpbmcmIGZ1bGxQYXRoKCkgY29uc3QgeyByZXR1cm4gbV9m
dWxsUGF0aDsgfQogICAgIGNvbnN0IFN0cmluZyYgbmFtZSgpIGNvbnN0IHsgcmV0dXJuIG1fbmFt
ZTsgfQogCi0gICAgRE9NRmlsZVN5c3RlbSogZmlsZXN5c3RlbSgpIGNvbnN0IHsgcmV0dXJuIG1f
ZmlsZVN5c3RlbS5nZXQoKTsgfQorICAgIERPTUZpbGVTeXN0ZW0qIGZpbGVzeXN0ZW0oKSBjb25z
dCB7IHJldHVybiBtX2ZpbGVTeXN0ZW07IH0KIAogICAgIHZpcnR1YWwgdm9pZCBnZXRNZXRhZGF0
YShQYXNzUmVmUHRyPE1ldGFkYXRhQ2FsbGJhY2s+IHN1Y2Nlc3NDYWxsYmFjayA9IDAsIFBhc3NS
ZWZQdHI8RXJyb3JDYWxsYmFjaz4gZXJyb3JDYWxsYmFjayA9IDApOwotCi0gICAgdmlydHVhbCB2
b2lkIG1vdmVUbyhQYXNzUmVmUHRyPEVudHJ5PiBwYXJlbnQsIGNvbnN0IFN0cmluZyYgbmFtZSA9
IFN0cmluZygpLCBQYXNzUmVmUHRyPEVudHJ5Q2FsbGJhY2s+IHN1Y2Nlc3NDYWxsYmFjayA9IDAs
IFBhc3NSZWZQdHI8RXJyb3JDYWxsYmFjaz4gZXJyb3JDYWxsYmFjayA9IDApOwotICAgIHZpcnR1
YWwgdm9pZCBjb3B5VG8oUGFzc1JlZlB0cjxFbnRyeT4gcGFyZW50LCBjb25zdCBTdHJpbmcmIG5h
bWUgPSBTdHJpbmcoKSwgUGFzc1JlZlB0cjxFbnRyeUNhbGxiYWNrPiBzdWNjZXNzQ2FsbGJhY2sg
PSAwLCBQYXNzUmVmUHRyPEVycm9yQ2FsbGJhY2s+IGVycm9yQ2FsbGJhY2sgPSAwKTsKLSAgICB2
aXJ0dWFsIHZvaWQgcmVtb3ZlKFBhc3NSZWZQdHI8Vm9pZENhbGxiYWNrPiBzdWNjZXNzQ2FsbGJh
Y2sgPSAwLCBQYXNzUmVmUHRyPEVycm9yQ2FsbGJhY2s+IGVycm9yQ2FsbGJhY2sgPSAwKTsKLSAg
ICB2aXJ0dWFsIHZvaWQgZ2V0UGFyZW50KFBhc3NSZWZQdHI8RW50cnlDYWxsYmFjaz4gc3VjY2Vz
c0NhbGxiYWNrID0gMCwgUGFzc1JlZlB0cjxFcnJvckNhbGxiYWNrPiBlcnJvckNhbGxiYWNrID0g
MCk7CisgICAgdmlydHVhbCB2b2lkIG1vdmVUbyhQYXNzUmVmUHRyPEVudHJ5PiBwYXJlbnQsIGNv
bnN0IFN0cmluZyYgbmFtZSA9IFN0cmluZygpLCBQYXNzUmVmUHRyPEVudHJ5Q2FsbGJhY2s+IHN1
Y2Nlc3NDYWxsYmFjayA9IDAsIFBhc3NSZWZQdHI8RXJyb3JDYWxsYmFjaz4gZXJyb3JDYWxsYmFj
ayA9IDApIGNvbnN0OworICAgIHZpcnR1YWwgdm9pZCBjb3B5VG8oUGFzc1JlZlB0cjxFbnRyeT4g
cGFyZW50LCBjb25zdCBTdHJpbmcmIG5hbWUgPSBTdHJpbmcoKSwgUGFzc1JlZlB0cjxFbnRyeUNh
bGxiYWNrPiBzdWNjZXNzQ2FsbGJhY2sgPSAwLCBQYXNzUmVmUHRyPEVycm9yQ2FsbGJhY2s+IGVy
cm9yQ2FsbGJhY2sgPSAwKSBjb25zdDsKKyAgICB2aXJ0dWFsIHZvaWQgcmVtb3ZlKFBhc3NSZWZQ
dHI8Vm9pZENhbGxiYWNrPiBzdWNjZXNzQ2FsbGJhY2sgPSAwLCBQYXNzUmVmUHRyPEVycm9yQ2Fs
bGJhY2s+IGVycm9yQ2FsbGJhY2sgPSAwKSBjb25zdDsKKyAgICB2aXJ0dWFsIHZvaWQgZ2V0UGFy
ZW50KFBhc3NSZWZQdHI8RW50cnlDYWxsYmFjaz4gc3VjY2Vzc0NhbGxiYWNrID0gMCwgUGFzc1Jl
ZlB0cjxFcnJvckNhbGxiYWNrPiBlcnJvckNhbGxiYWNrID0gMCkgY29uc3Q7CiAKICAgICB2aXJ0
dWFsIFN0cmluZyB0b1VSSShjb25zdCBTdHJpbmcmIG1pbWVUeXBlID0gU3RyaW5nKCkpOwogCiBw
cm90ZWN0ZWQ6Ci0gICAgRW50cnkoUGFzc1JlZlB0cjxET01GaWxlU3lzdGVtPiBmaWxlU3lzdGVt
LCBjb25zdCBTdHJpbmcmIGZ1bGxQYXRoKTsKKyAgICBFbnRyeShET01GaWxlU3lzdGVtKiBmaWxl
U3lzdGVtLCBjb25zdCBTdHJpbmcmIGZ1bGxQYXRoKTsKIAotICAgIFJlZlB0cjxET01GaWxlU3lz
dGVtPiBtX2ZpbGVTeXN0ZW07Ci0gICAgU3RyaW5nIG1fZnVsbFBhdGg7IC8vIHZpcnR1YWwgcGF0
aAorICAgIERPTUZpbGVTeXN0ZW0qIG1fZmlsZVN5c3RlbTsKKyAgICBTdHJpbmcgbV9mdWxsUGF0
aDsKICAgICBTdHJpbmcgbV9uYW1lOwogfTsKIApkaWZmIC0tZ2l0IGEvV2ViQ29yZS9zdG9yYWdl
L0ZpbGVFbnRyeS5jcHAgYi9XZWJDb3JlL3N0b3JhZ2UvRmlsZUVudHJ5LmNwcAppbmRleCA0YmVj
MDFkODlmYjY2NWM0YjM5YzI5Nzg0ZTIwMGNiNDEzMzdiMDhlLi5lMmE1ODNjYzY5NDc1NzBjNDg5
Yjk5NTBkMDA0YjI4NTdkMzA3M2ZkIDEwMDY0NAotLS0gYS9XZWJDb3JlL3N0b3JhZ2UvRmlsZUVu
dHJ5LmNwcAorKysgYi9XZWJDb3JlL3N0b3JhZ2UvRmlsZUVudHJ5LmNwcApAQCAtMzUsNyArMzUs
NyBAQAogCiBuYW1lc3BhY2UgV2ViQ29yZSB7CiAKLUZpbGVFbnRyeTo6RmlsZUVudHJ5KFBhc3NS
ZWZQdHI8RE9NRmlsZVN5c3RlbT4gZmlsZVN5c3RlbSwgY29uc3QgU3RyaW5nJiBmdWxsUGF0aCkK
K0ZpbGVFbnRyeTo6RmlsZUVudHJ5KERPTUZpbGVTeXN0ZW0qIGZpbGVTeXN0ZW0sIGNvbnN0IFN0
cmluZyYgZnVsbFBhdGgpCiAgICAgOiBFbnRyeShmaWxlU3lzdGVtLCBmdWxsUGF0aCkKIHsKIH0K
ZGlmZiAtLWdpdCBhL1dlYkNvcmUvc3RvcmFnZS9GaWxlRW50cnkuaCBiL1dlYkNvcmUvc3RvcmFn
ZS9GaWxlRW50cnkuaAppbmRleCBiMDJiNWM3MDQ5YWYzNzY1YzJlZDllZmZlMzEzNWQ2MThjYzEz
MzdmLi5hYmNjNmJiNjY5ZmZjYzUwY2I5NTQ5ZDk4OTA2NDE3YjA3YjFhMjY2IDEwMDY0NAotLS0g
YS9XZWJDb3JlL3N0b3JhZ2UvRmlsZUVudHJ5LmgKKysrIGIvV2ViQ29yZS9zdG9yYWdlL0ZpbGVF
bnRyeS5oCkBAIC0zNCw5ICszNCw2IEBACiAjaWYgRU5BQkxFKEZJTEVfU1lTVEVNKQogCiAjaW5j
bHVkZSAiRW50cnkuaCIKLSNpbmNsdWRlICJQbGF0Zm9ybVN0cmluZy5oIgotI2luY2x1ZGUgPHd0
Zi9QYXNzUmVmUHRyLmg+Ci0jaW5jbHVkZSA8d3RmL1JlZkNvdW50ZWQuaD4KIAogbmFtZXNwYWNl
IFdlYkNvcmUgewogCkBAIC00NCwxNCArNDEsMTQgQEAgY2xhc3MgRE9NRmlsZVN5c3RlbTsKIAog
Y2xhc3MgRmlsZUVudHJ5IDogcHVibGljIEVudHJ5IHsKIHB1YmxpYzoKLSAgICBzdGF0aWMgUGFz
c1JlZlB0cjxGaWxlRW50cnk+IGNyZWF0ZShQYXNzUmVmUHRyPERPTUZpbGVTeXN0ZW0+IGZpbGVT
eXN0ZW0sIGNvbnN0IFN0cmluZyYgZnVsbFBhdGgpCisgICAgc3RhdGljIFBhc3NSZWZQdHI8Rmls
ZUVudHJ5PiBjcmVhdGUoRE9NRmlsZVN5c3RlbSogZmlsZVN5c3RlbSwgY29uc3QgU3RyaW5nJiBm
dWxsUGF0aCkKICAgICB7CiAgICAgICAgIHJldHVybiBhZG9wdFJlZihuZXcgRmlsZUVudHJ5KGZp
bGVTeXN0ZW0sIGZ1bGxQYXRoKSk7CiAgICAgfQogICAgIHZpcnR1YWwgYm9vbCBpc0ZpbGUoKSBj
b25zdCB7IHJldHVybiB0cnVlOyB9CiAKIHByaXZhdGU6Ci0gICAgRmlsZUVudHJ5KFBhc3NSZWZQ
dHI8RE9NRmlsZVN5c3RlbT4gZmlsZVN5c3RlbSwgY29uc3QgU3RyaW5nJiBmdWxsUGF0aCk7Cisg
ICAgRmlsZUVudHJ5KERPTUZpbGVTeXN0ZW0qIGZpbGVTeXN0ZW0sIGNvbnN0IFN0cmluZyYgZnVs
bFBhdGgpOwogfTsKIAogfSAvLyBuYW1lc3BhY2UKZGlmZiAtLWdpdCBhL1dlYkNvcmUvc3RvcmFn
ZS9Mb2NhbEZpbGVTeXN0ZW0uY3BwIGIvV2ViQ29yZS9zdG9yYWdlL0xvY2FsRmlsZVN5c3RlbS5j
cHAKaW5kZXggMjgyNTA4ZTdjMDc4ZTE0OGMyMDkzNjM4Yjc1MTdlYWE4N2EwNTc1OC4uMmM5NzA0
YTY5ZDdhZTYzNDBkMjViNjU0NTlhOTg5ZTI5ODI3MGZlNSAxMDA2NDQKLS0tIGEvV2ViQ29yZS9z
dG9yYWdlL0xvY2FsRmlsZVN5c3RlbS5jcHAKKysrIGIvV2ViQ29yZS9zdG9yYWdlL0xvY2FsRmls
ZVN5c3RlbS5jcHAKQEAgLTM3LDcgKzM3LDggQEAKIAogI2lmIEVOQUJMRShGSUxFX1NZU1RFTSkK
IAotI2luY2x1ZGUgIkRPTVdpbmRvdy5oIgorI2luY2x1ZGUgIkNyb3NzVGhyZWFkVGFzay5oIgor
I2luY2x1ZGUgIkRPTUZpbGVTeXN0ZW0uaCIKICNpbmNsdWRlICJFcnJvckNhbGxiYWNrLmgiCiAj
aW5jbHVkZSAiRXhjZXB0aW9uQ29kZS5oIgogI2luY2x1ZGUgIkZpbGVFcnJvci5oIgpAQCAtNTQs
MTQgKzU1LDIwIEBAIFBhc3NSZWZQdHI8TG9jYWxGaWxlU3lzdGVtPiBMb2NhbEZpbGVTeXN0ZW06
OmNyZWF0ZShjb25zdCBTdHJpbmcmIGJhc2VQYXRoKQogICAgIHJldHVybiBhZG9wdFJlZihuZXcg
TG9jYWxGaWxlU3lzdGVtKGJhc2VQYXRoKSk7CiB9CiAKK3N0YXRpYyB2b2lkIG9wZW5GaWxlU3lz
dGVtKFNjcmlwdEV4ZWN1dGlvbkNvbnRleHQqLCBjb25zdCBTdHJpbmcmIGJhc2VQYXRoLCBjb25z
dCBTdHJpbmcmIGlkZW50aWZpZXIsIEFzeW5jRmlsZVN5c3RlbTo6VHlwZSB0eXBlLCBQYXNzT3du
UHRyPEZpbGVTeXN0ZW1DYWxsYmFja3M+IGNhbGxiYWNrcykKK3sKKyAgICBBc3luY0ZpbGVTeXN0
ZW06Om9wZW5GaWxlU3lzdGVtKGJhc2VQYXRoLCBpZGVudGlmaWVyLCB0eXBlLCBjYWxsYmFja3Mp
OworfQorCiB2b2lkIExvY2FsRmlsZVN5c3RlbTo6cmVxdWVzdEZpbGVTeXN0ZW0oU2NyaXB0RXhl
Y3V0aW9uQ29udGV4dCogY29udGV4dCwgQXN5bmNGaWxlU3lzdGVtOjpUeXBlIHR5cGUsIGxvbmcg
bG9uZywgUGFzc1JlZlB0cjxGaWxlU3lzdGVtQ2FsbGJhY2s+IHN1Y2Nlc3NDYWxsYmFjaywgUGFz
c1JlZlB0cjxFcnJvckNhbGxiYWNrPiBlcnJvckNhbGxiYWNrKQogewogICAgIGlmICh0eXBlICE9
IEFzeW5jRmlsZVN5c3RlbTo6VGVtcG9yYXJ5ICYmIHR5cGUgIT0gQXN5bmNGaWxlU3lzdGVtOjpQ
ZXJzaXN0ZW50KSB7Ci0gICAgICAgIGVycm9yQ2FsbGJhY2stPmhhbmRsZUV2ZW50KEZpbGVFcnJv
cjo6Y3JlYXRlKElOVkFMSURfTU9ESUZJQ0FUSU9OX0VSUikuZ2V0KCkpOworICAgICAgICBET01G
aWxlU3lzdGVtOjpzY2hlZHVsZUNhbGxiYWNrKGNvbnRleHQsIGVycm9yQ2FsbGJhY2ssIEZpbGVF
cnJvcjo6Y3JlYXRlKElOVkFMSURfTU9ESUZJQ0FUSU9OX0VSUikpOwogICAgICAgICByZXR1cm47
CiAgICAgfQogCi0gICAgQXN5bmNGaWxlU3lzdGVtOjpvcGVuRmlsZVN5c3RlbShtX2Jhc2VQYXRo
LCBjb250ZXh0LT5zZWN1cml0eU9yaWdpbigpLT5kYXRhYmFzZUlkZW50aWZpZXIoKSwgdHlwZSwg
bmV3IEZpbGVTeXN0ZW1DYWxsYmFja3Moc3VjY2Vzc0NhbGxiYWNrLCBlcnJvckNhbGxiYWNrLCBj
b250ZXh0KSk7CisgICAgLy8gRklYTUU6IGNsZWFuIHVwIHRoaXMuCisgICAgY29udGV4dC0+cG9z
dFRhc2soY3JlYXRlQ2FsbGJhY2tUYXNrKCZvcGVuRmlsZVN5c3RlbSwgbV9iYXNlUGF0aCwgY29u
dGV4dC0+c2VjdXJpdHlPcmlnaW4oKS0+ZGF0YWJhc2VJZGVudGlmaWVyKCksIHR5cGUsIG5ldyBG
aWxlU3lzdGVtQ2FsbGJhY2tzKHN1Y2Nlc3NDYWxsYmFjaywgZXJyb3JDYWxsYmFjaywgY29udGV4
dCkpKTsKIH0KIAogfSAvLyBuYW1lc3BhY2UKZGlmZiAtLWdpdCBhL1dlYktpdC9jaHJvbWl1bS9D
aGFuZ2VMb2cgYi9XZWJLaXQvY2hyb21pdW0vQ2hhbmdlTG9nCmluZGV4IGE2NGUxYTk4M2E3OTVl
MWJhYzFmNWZhYjBhMzc3YzhiNzFlMmIwNzIuLmY2Nzk5ZGEwODJjOTdjMWMyZmM5NDQ2ZTU4YzI1
YzRkOWViYThiY2EgMTAwNjQ0Ci0tLSBhL1dlYktpdC9jaHJvbWl1bS9DaGFuZ2VMb2cKKysrIGIv
V2ViS2l0L2Nocm9taXVtL0NoYW5nZUxvZwpAQCAtMSwzICsxLDIzIEBACisyMDEwLTA4LTMwICBL
aW51a28gWWFzdWRhICA8a2ludWtvQGNocm9taXVtLm9zcmM+CisKKyAgICAgICAgUmV2aWV3ZWQg
YnkgTk9CT0RZIChPT1BTISkuCisKKyAgICAgICAgQWRkIERPTUZpbGVTeXN0ZW0gaW1wbGVtZW50
YXRpb24gdG8gc3VwcG9ydCBFbnRyeSBtYW5pcHVsYXRpb24gb3BlcmF0aW9ucworICAgICAgICBo
dHRwczovL2J1Z3Mud2Via2l0Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9NDQ3MzIKKworICAgICAgICBG
aXhlZCB2aXJ0dWFsLXBhdGggLyBwbGF0Zm9ybS1wYXRoIGNvbnZlcnNpb24gdGltaW5nLiAoVGhl
IGNvbnZlcnNpb24gbmVlZHMgdG8gYmUgZG9uZSBiZWZvcmUgY2FsbGluZyBBc3luY0ZpbGVTeXN0
ZW0gbWV0aG9kcyB0byBzdXBwb3J0IGNyb3NzLWZpbGVzeXN0ZW0gb3BlcmF0aW9ucy4pCisKKyAg
ICAgICAgKiBzcmMvQXN5bmNGaWxlU3lzdGVtQ2hyb21pdW0uY3BwOgorICAgICAgICAoV2ViQ29y
ZTo6QXN5bmNGaWxlU3lzdGVtQ2hyb21pdW06Om1vdmUpOgorICAgICAgICAoV2ViQ29yZTo6QXN5
bmNGaWxlU3lzdGVtQ2hyb21pdW06OmNvcHkpOgorICAgICAgICAoV2ViQ29yZTo6QXN5bmNGaWxl
U3lzdGVtQ2hyb21pdW06OnJlbW92ZSk6CisgICAgICAgIChXZWJDb3JlOjpBc3luY0ZpbGVTeXN0
ZW1DaHJvbWl1bTo6cmVhZE1ldGFkYXRhKToKKyAgICAgICAgKFdlYkNvcmU6OkFzeW5jRmlsZVN5
c3RlbUNocm9taXVtOjpjcmVhdGVGaWxlKToKKyAgICAgICAgKFdlYkNvcmU6OkFzeW5jRmlsZVN5
c3RlbUNocm9taXVtOjpjcmVhdGVEaXJlY3RvcnkpOgorICAgICAgICAoV2ViQ29yZTo6QXN5bmNG
aWxlU3lzdGVtQ2hyb21pdW06OmZpbGVFeGlzdHMpOgorICAgICAgICAoV2ViQ29yZTo6QXN5bmNG
aWxlU3lzdGVtQ2hyb21pdW06OmRpcmVjdG9yeUV4aXN0cyk6CisgICAgICAgIChXZWJDb3JlOjpB
c3luY0ZpbGVTeXN0ZW1DaHJvbWl1bTo6cmVhZERpcmVjdG9yeSk6CisKIDIwMTAtMDgtMjcgIEtp
bnVrbyBZYXN1ZGEgIDxraW51a29AY2hyb21pdW0ub3JnPgogCiAgICAgICAgIFJldmlld2VkIGJ5
IER1bWl0cnUgRGFuaWxpdWMuCmRpZmYgLS1naXQgYS9XZWJLaXQvY2hyb21pdW0vc3JjL0FzeW5j
RmlsZVN5c3RlbUNocm9taXVtLmNwcCBiL1dlYktpdC9jaHJvbWl1bS9zcmMvQXN5bmNGaWxlU3lz
dGVtQ2hyb21pdW0uY3BwCmluZGV4IGM3ODM5MTg5YmIyZGI3MzAyYzFmNGFhMWM5NDY1MDhkY2U2
ODJjZTIuLjA4ZmNlYTZjOTg1YWMzMjFkMjkxNmMzYzJlMmRhNmZjOGQ0OGU4M2YgMTAwNjQ0Ci0t
LSBhL1dlYktpdC9jaHJvbWl1bS9zcmMvQXN5bmNGaWxlU3lzdGVtQ2hyb21pdW0uY3BwCisrKyBi
L1dlYktpdC9jaHJvbWl1bS9zcmMvQXN5bmNGaWxlU3lzdGVtQ2hyb21pdW0uY3BwCkBAIC01Niw0
NyArNTYsNDcgQEAgQXN5bmNGaWxlU3lzdGVtQ2hyb21pdW06On5Bc3luY0ZpbGVTeXN0ZW1DaHJv
bWl1bSgpCiAKIHZvaWQgQXN5bmNGaWxlU3lzdGVtQ2hyb21pdW06Om1vdmUoY29uc3QgU3RyaW5n
JiBzcmNQYXRoLCBjb25zdCBTdHJpbmcmIGRlc3RQYXRoLCBQYXNzT3duUHRyPEFzeW5jRmlsZVN5
c3RlbUNhbGxiYWNrcz4gY2FsbGJhY2tzKQogewotICAgIG1fd2ViRmlsZVN5c3RlbS0+bW92ZSh2
aXJ0dWFsVG9QbGF0Zm9ybVBhdGgoc3JjUGF0aCksIHZpcnR1YWxUb1BsYXRmb3JtUGF0aChkZXN0
UGF0aCksIG5ldyBXZWJLaXQ6OldlYkZpbGVTeXN0ZW1DYWxsYmFja3NJbXBsKGNhbGxiYWNrcykp
OworICAgIG1fd2ViRmlsZVN5c3RlbS0+bW92ZShzcmNQYXRoLCBkZXN0UGF0aCwgbmV3IFdlYktp
dDo6V2ViRmlsZVN5c3RlbUNhbGxiYWNrc0ltcGwoY2FsbGJhY2tzKSk7CiB9CiAKIHZvaWQgQXN5
bmNGaWxlU3lzdGVtQ2hyb21pdW06OmNvcHkoY29uc3QgU3RyaW5nJiBzcmNQYXRoLCBjb25zdCBT
dHJpbmcmIGRlc3RQYXRoLCBQYXNzT3duUHRyPEFzeW5jRmlsZVN5c3RlbUNhbGxiYWNrcz4gY2Fs
bGJhY2tzKQogewotICAgIG1fd2ViRmlsZVN5c3RlbS0+Y29weSh2aXJ0dWFsVG9QbGF0Zm9ybVBh
dGgoc3JjUGF0aCksIHZpcnR1YWxUb1BsYXRmb3JtUGF0aChkZXN0UGF0aCksIG5ldyBXZWJLaXQ6
OldlYkZpbGVTeXN0ZW1DYWxsYmFja3NJbXBsKGNhbGxiYWNrcykpOworICAgIG1fd2ViRmlsZVN5
c3RlbS0+Y29weShzcmNQYXRoLCBkZXN0UGF0aCwgbmV3IFdlYktpdDo6V2ViRmlsZVN5c3RlbUNh
bGxiYWNrc0ltcGwoY2FsbGJhY2tzKSk7CiB9CiAKIHZvaWQgQXN5bmNGaWxlU3lzdGVtQ2hyb21p
dW06OnJlbW92ZShjb25zdCBTdHJpbmcmIHBhdGgsIFBhc3NPd25QdHI8QXN5bmNGaWxlU3lzdGVt
Q2FsbGJhY2tzPiBjYWxsYmFja3MpCiB7Ci0gICAgbV93ZWJGaWxlU3lzdGVtLT5yZW1vdmUodmly
dHVhbFRvUGxhdGZvcm1QYXRoKHBhdGgpLCBuZXcgV2ViS2l0OjpXZWJGaWxlU3lzdGVtQ2FsbGJh
Y2tzSW1wbChjYWxsYmFja3MpKTsKKyAgICBtX3dlYkZpbGVTeXN0ZW0tPnJlbW92ZShwYXRoLCBu
ZXcgV2ViS2l0OjpXZWJGaWxlU3lzdGVtQ2FsbGJhY2tzSW1wbChjYWxsYmFja3MpKTsKIH0KIAog
dm9pZCBBc3luY0ZpbGVTeXN0ZW1DaHJvbWl1bTo6cmVhZE1ldGFkYXRhKGNvbnN0IFN0cmluZyYg
cGF0aCwgUGFzc093blB0cjxBc3luY0ZpbGVTeXN0ZW1DYWxsYmFja3M+IGNhbGxiYWNrcykKIHsK
LSAgICBtX3dlYkZpbGVTeXN0ZW0tPnJlYWRNZXRhZGF0YSh2aXJ0dWFsVG9QbGF0Zm9ybVBhdGgo
cGF0aCksIG5ldyBXZWJLaXQ6OldlYkZpbGVTeXN0ZW1DYWxsYmFja3NJbXBsKGNhbGxiYWNrcykp
OworICAgIG1fd2ViRmlsZVN5c3RlbS0+cmVhZE1ldGFkYXRhKHBhdGgsIG5ldyBXZWJLaXQ6Oldl
YkZpbGVTeXN0ZW1DYWxsYmFja3NJbXBsKGNhbGxiYWNrcykpOwogfQogCiB2b2lkIEFzeW5jRmls
ZVN5c3RlbUNocm9taXVtOjpjcmVhdGVGaWxlKGNvbnN0IFN0cmluZyYgcGF0aCwgYm9vbCBleGNs
dXNpdmUsIFBhc3NPd25QdHI8QXN5bmNGaWxlU3lzdGVtQ2FsbGJhY2tzPiBjYWxsYmFja3MpCiB7
Ci0gICAgbV93ZWJGaWxlU3lzdGVtLT5jcmVhdGVGaWxlKHZpcnR1YWxUb1BsYXRmb3JtUGF0aChw
YXRoKSwgZXhjbHVzaXZlLCBuZXcgV2ViS2l0OjpXZWJGaWxlU3lzdGVtQ2FsbGJhY2tzSW1wbChj
YWxsYmFja3MpKTsKKyAgICBtX3dlYkZpbGVTeXN0ZW0tPmNyZWF0ZUZpbGUocGF0aCwgZXhjbHVz
aXZlLCBuZXcgV2ViS2l0OjpXZWJGaWxlU3lzdGVtQ2FsbGJhY2tzSW1wbChjYWxsYmFja3MpKTsK
IH0KIAogdm9pZCBBc3luY0ZpbGVTeXN0ZW1DaHJvbWl1bTo6Y3JlYXRlRGlyZWN0b3J5KGNvbnN0
IFN0cmluZyYgcGF0aCwgYm9vbCBleGNsdXNpdmUsIFBhc3NPd25QdHI8QXN5bmNGaWxlU3lzdGVt
Q2FsbGJhY2tzPiBjYWxsYmFja3MpCiB7Ci0gICAgbV93ZWJGaWxlU3lzdGVtLT5jcmVhdGVEaXJl
Y3RvcnkodmlydHVhbFRvUGxhdGZvcm1QYXRoKHBhdGgpLCBleGNsdXNpdmUsIG5ldyBXZWJLaXQ6
OldlYkZpbGVTeXN0ZW1DYWxsYmFja3NJbXBsKGNhbGxiYWNrcykpOworICAgIG1fd2ViRmlsZVN5
c3RlbS0+Y3JlYXRlRGlyZWN0b3J5KHBhdGgsIGV4Y2x1c2l2ZSwgbmV3IFdlYktpdDo6V2ViRmls
ZVN5c3RlbUNhbGxiYWNrc0ltcGwoY2FsbGJhY2tzKSk7CiB9CiAKIHZvaWQgQXN5bmNGaWxlU3lz
dGVtQ2hyb21pdW06OmZpbGVFeGlzdHMoY29uc3QgU3RyaW5nJiBwYXRoLCBQYXNzT3duUHRyPEFz
eW5jRmlsZVN5c3RlbUNhbGxiYWNrcz4gY2FsbGJhY2tzKQogewotICAgIG1fd2ViRmlsZVN5c3Rl
bS0+ZmlsZUV4aXN0cyh2aXJ0dWFsVG9QbGF0Zm9ybVBhdGgocGF0aCksIG5ldyBXZWJLaXQ6Oldl
YkZpbGVTeXN0ZW1DYWxsYmFja3NJbXBsKGNhbGxiYWNrcykpOworICAgIG1fd2ViRmlsZVN5c3Rl
bS0+ZmlsZUV4aXN0cyhwYXRoLCBuZXcgV2ViS2l0OjpXZWJGaWxlU3lzdGVtQ2FsbGJhY2tzSW1w
bChjYWxsYmFja3MpKTsKIH0KIAogdm9pZCBBc3luY0ZpbGVTeXN0ZW1DaHJvbWl1bTo6ZGlyZWN0
b3J5RXhpc3RzKGNvbnN0IFN0cmluZyYgcGF0aCwgUGFzc093blB0cjxBc3luY0ZpbGVTeXN0ZW1D
YWxsYmFja3M+IGNhbGxiYWNrcykKIHsKLSAgICBtX3dlYkZpbGVTeXN0ZW0tPmRpcmVjdG9yeUV4
aXN0cyh2aXJ0dWFsVG9QbGF0Zm9ybVBhdGgocGF0aCksIG5ldyBXZWJLaXQ6OldlYkZpbGVTeXN0
ZW1DYWxsYmFja3NJbXBsKGNhbGxiYWNrcykpOworICAgIG1fd2ViRmlsZVN5c3RlbS0+ZGlyZWN0
b3J5RXhpc3RzKHBhdGgsIG5ldyBXZWJLaXQ6OldlYkZpbGVTeXN0ZW1DYWxsYmFja3NJbXBsKGNh
bGxiYWNrcykpOwogfQogCiB2b2lkIEFzeW5jRmlsZVN5c3RlbUNocm9taXVtOjpyZWFkRGlyZWN0
b3J5KGNvbnN0IFN0cmluZyYgcGF0aCwgUGFzc093blB0cjxBc3luY0ZpbGVTeXN0ZW1DYWxsYmFj
a3M+IGNhbGxiYWNrcykKIHsKLSAgICBtX3dlYkZpbGVTeXN0ZW0tPnJlYWREaXJlY3Rvcnkodmly
dHVhbFRvUGxhdGZvcm1QYXRoKHBhdGgpLCBuZXcgV2ViS2l0OjpXZWJGaWxlU3lzdGVtQ2FsbGJh
Y2tzSW1wbChjYWxsYmFja3MpKTsKKyAgICBtX3dlYkZpbGVTeXN0ZW0tPnJlYWREaXJlY3Rvcnko
cGF0aCwgbmV3IFdlYktpdDo6V2ViRmlsZVN5c3RlbUNhbGxiYWNrc0ltcGwoY2FsbGJhY2tzKSk7
CiB9CiAKIH0gLy8gbmFtZXNwYWNlIFdlYkNvcmUK
</data>

          </attachment>
          <attachment
              isobsolete="0"
              ispatch="1"
              isprivate="0"
          >
            <attachid>65939</attachid>
            <date>2010-08-30 12:33:17 -0700</date>
            <delta_ts>2010-08-30 12:56:49 -0700</delta_ts>
            <desc>Patch</desc>
            <filename>bug-44732-20100830123316.patch</filename>
            <type>text/plain</type>
            <size>30860</size>
            <attacher name="Kinuko Yasuda">kinuko</attacher>
            
              <data encoding="base64">ZGlmZiAtLWdpdCBhL1dlYkNvcmUvQ2hhbmdlTG9nIGIvV2ViQ29yZS9DaGFuZ2VMb2cKaW5kZXgg
MzA0NzZkM2JiOGE0Nzg4NDQ2MTAwNGZkNmVkZTFhNWE1ZTNjZGEzOC4uNjU4YzUwMWU2ZjcxNzQy
Mjc2OGRlNGRhYTYxNzFlNTUxMjUxNTQ5ZiAxMDA2NDQKLS0tIGEvV2ViQ29yZS9DaGFuZ2VMb2cK
KysrIGIvV2ViQ29yZS9DaGFuZ2VMb2cKQEAgLTEsMyArMSw0OCBAQAorMjAxMC0wOC0yNyAgS2lu
dWtvIFlhc3VkYSAgPGtpbnVrb0BjaHJvbWl1bS5vcmc+CisKKyAgICAgICAgUmV2aWV3ZWQgYnkg
Tk9CT0RZIChPT1BTISkuCisKKyAgICAgICAgQWRkIERPTUZpbGVTeXN0ZW0gaW1wbGVtZW50YXRp
b24gdG8gc3VwcG9ydCBFbnRyeSBtYW5pcHVsYXRpb24gb3BlcmF0aW9ucworICAgICAgICBodHRw
czovL2J1Z3Mud2Via2l0Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9NDQ3MzIKKworICAgICAgICBObyBu
ZXcgdGVzdHM7IHRlc3RzIHdpbGwgYmUgYWRkZWQgbGF0ZXIuCisKKyAgICAgICAgKiBzdG9yYWdl
L0RPTUZpbGVTeXN0ZW0uY3BwOgorICAgICAgICAoV2ViQ29yZTo6RE9NRmlsZVN5c3RlbTo6cm9v
dCk6CisgICAgICAgIChXZWJDb3JlOjpjaGVja1ZhbGlkaXR5Rm9yRm9yQ29weU9yTW92ZSk6IEFk
ZGVkLgorICAgICAgICAoV2ViQ29yZTo6RE9NRmlsZVN5c3RlbTo6Z2V0TWV0YWRhdGEpOiBBZGRl
ZC4KKyAgICAgICAgKFdlYkNvcmU6OkRPTUZpbGVTeXN0ZW06Om1vdmUpOiBBZGRlZC4KKyAgICAg
ICAgKFdlYkNvcmU6OkRPTUZpbGVTeXN0ZW06OmNvcHkpOiBBZGRlZC4KKyAgICAgICAgKFdlYkNv
cmU6OkRPTUZpbGVTeXN0ZW06OnJlbW92ZSk6IEFkZGVkLgorICAgICAgICAoV2ViQ29yZTo6RE9N
RmlsZVN5c3RlbTo6Z2V0UGFyZW50KTogQWRkZWQuCisgICAgICAgIChXZWJDb3JlOjpET01GaWxl
U3lzdGVtOjpnZXRGaWxlKTogQWRkZWQuCisgICAgICAgIChXZWJDb3JlOjpET01GaWxlU3lzdGVt
OjpnZXREaXJlY3RvcnkpOiBBZGRlZC4KKyAgICAgICAgKFdlYkNvcmU6OkRPTUZpbGVTeXN0ZW06
OnJlYWREaXJlY3RvcnkpOiBBZGRlZC4KKyAgICAgICAgKiBzdG9yYWdlL0RpcmVjdG9yeUVudHJ5
LmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OkRpcmVjdG9yeUVudHJ5OjpnZXRGaWxlKTogQWRkZWQg
aW1wbGVtZW50YXRpb24uCisgICAgICAgIChXZWJDb3JlOjpEaXJlY3RvcnlFbnRyeTo6Z2V0RGly
ZWN0b3J5KTogQWRkZWQgaW1wbGVtZW50YXRpb24uCisgICAgICAgICogc3RvcmFnZS9EaXJlY3Rv
cnlSZWFkZXIuY3BwOgorICAgICAgICAoV2ViQ29yZTo6RGlyZWN0b3J5UmVhZGVyOjpEaXJlY3Rv
cnlSZWFkZXIpOiBBZGRlZCBpbXBsZW1lbnRhdGlvbi4KKyAgICAgICAgKFdlYkNvcmU6OkRpcmVj
dG9yeVJlYWRlcjo6cmVhZEVudHJpZXMpOiBBZGRlZCBpbXBsZW1lbnRhdGlvbi4KKyAgICAgICAg
KiBzdG9yYWdlL0RpcmVjdG9yeVJlYWRlci5oOgorICAgICAgICAqIHN0b3JhZ2UvRW50cnkuY3Bw
OgorICAgICAgICAoV2ViQ29yZTo6RW50cnk6OmdldE1ldGFkYXRhKTogQWRkZWQgaW1wbGVtZW50
YXRpb24uCisgICAgICAgIChXZWJDb3JlOjpFbnRyeTo6bW92ZVRvKTogQWRkZWQgaW1wbGVtZW50
YXRpb24uCisgICAgICAgIChXZWJDb3JlOjpFbnRyeTo6Y29weVRvKTogQWRkZWQgaW1wbGVtZW50
YXRpb24uCisgICAgICAgIChXZWJDb3JlOjpFbnRyeTo6cmVtb3ZlKTogQWRkZWQgaW1wbGVtZW50
YXRpb24uCisgICAgICAgIChXZWJDb3JlOjpFbnRyeTo6Z2V0UGFyZW50KTogQWRkZWQgaW1wbGVt
ZW50YXRpb24uCisgICAgICAgICogc3RvcmFnZS9FbnRyeS5oOgorICAgICAgICAqIHN0b3JhZ2Uv
RmlsZUVudHJ5Lmg6CisKKyAgICAgICAgQWRkZWQgYSBoZWxwZXIgdGVtcGxhdGUgdG8gc2NoZWR1
bGUgY2FsbGJhY2tzLgorICAgICAgICAqIHN0b3JhZ2UvRE9NRmlsZVN5c3RlbS5oOgorICAgICAg
ICAoV2ViQ29yZTo6RE9NRmlsZVN5c3RlbTo6RGlzcGF0Y2hDYWxsYmFja1Rhc2spOiBBZGRlZCB0
byBzY2hlZHVsZSBjYWxsYmFja3MuCisgICAgICAgIChXZWJDb3JlOjpET01GaWxlU3lzdGVtOjpz
Y2hlZHVsZUNhbGxiYWNrKTogQWRkZWQgdG8gc2NoZWR1bGUgY2FsbGJhY2tzLgorCisgICAgICAg
IENoYW5nZWQgdG8gZmlyZSBjYWxsYmFja3MgYXN5bmNocm9ub3VzbHkuCisgICAgICAgICogc3Rv
cmFnZS9Mb2NhbEZpbGVTeXN0ZW0uY3BwOgorICAgICAgICAoV2ViQ29yZTo6TG9jYWxGaWxlU3lz
dGVtOjpyZXF1ZXN0RmlsZVN5c3RlbSk6CisKIDIwMTAtMDgtMjcgIEpvc2VwaCBQZWNvcmFybyAg
PGpvZXBlY2tAd2Via2l0Lm9yZz4KIAogICAgICAgICBSZXZpZXdlZCBieSBBbGV4ZXkgUHJvc2t1
cnlha292LgpkaWZmIC0tZ2l0IGEvV2ViQ29yZS9wbGF0Zm9ybS9Bc3luY0ZpbGVTeXN0ZW0uaCBi
L1dlYkNvcmUvcGxhdGZvcm0vQXN5bmNGaWxlU3lzdGVtLmgKaW5kZXggODJmNzE2MzEyYTk4MjVl
NzRjNjZlZWRjYmIxMGNlODQyYWE1N2Q2NC4uNjAxZjBlYWUzZTVkMGU4YmViODRkNWE5OTNkNzcw
NTE3YmQwYTYyZCAxMDA2NDQKLS0tIGEvV2ViQ29yZS9wbGF0Zm9ybS9Bc3luY0ZpbGVTeXN0ZW0u
aAorKysgYi9XZWJDb3JlL3BsYXRmb3JtL0FzeW5jRmlsZVN5c3RlbS5oCkBAIC0zNCw2ICszNCw3
IEBACiAjaWYgRU5BQkxFKEZJTEVfU1lTVEVNKQogCiAjaW5jbHVkZSAiUGxhdGZvcm1TdHJpbmcu
aCIKKyNpbmNsdWRlICJUaW1lci5oIgogI2luY2x1ZGUgPHd0Zi9QYXNzT3duUHRyLmg+CiAKIG5h
bWVzcGFjZSBXZWJDb3JlIHsKQEAgLTQxLDcgKzQyLDcgQEAgbmFtZXNwYWNlIFdlYkNvcmUgewog
Y2xhc3MgQXN5bmNGaWxlU3lzdGVtOwogY2xhc3MgQXN5bmNGaWxlU3lzdGVtQ2FsbGJhY2tzOwog
Ci0vLyBUaGlzIGNsYXNzIHByb3ZpZGVzIGFzeW5jIGludGVyZmFjZSBmb3IgcGxhdGZvcm0tc3Bl
Y2lmaWMgRE9NRmlsZVN5c3RlbSBpbXBsZW1lbnRhdGlvbi4gTm90ZSB0aGF0IGFsbCB0aGUgbWV0
aG9kcyB0YWtlIGNhbm9uaWNhbGl6ZWQgdmlydHVhbCBwYXRocy4KKy8vIFRoaXMgY2xhc3MgcHJv
dmlkZXMgYXN5bmMgaW50ZXJmYWNlIGZvciBwbGF0Zm9ybS1zcGVjaWZpYyBmaWxlIHN5c3RlbSBp
bXBsZW1lbnRhdGlvbi4gIE5vdGUgdGhhdCBhbGwgdGhlIG1ldGhvZHMgdGFrZSBwbGF0Zm9ybSBw
YXRocy4KIGNsYXNzIEFzeW5jRmlsZVN5c3RlbSA6IHB1YmxpYyBOb25jb3B5YWJsZSB7CiBwdWJs
aWM6CiAgICAgdmlydHVhbCB+QXN5bmNGaWxlU3lzdGVtKCkgeyB9CmRpZmYgLS1naXQgYS9XZWJD
b3JlL3N0b3JhZ2UvRE9NRmlsZVN5c3RlbS5jcHAgYi9XZWJDb3JlL3N0b3JhZ2UvRE9NRmlsZVN5
c3RlbS5jcHAKaW5kZXggNWQ2MDczYTNlOWVjMTIzOTY0YTIyYjk2Njk0NmJiMzYwYTIzOWVlYS4u
ZjFiOTM0MjJmNjZkMTE1NmM4OWJkZmU4YzVjYTZiMmFiODA4OGMyYiAxMDA2NDQKLS0tIGEvV2Vi
Q29yZS9zdG9yYWdlL0RPTUZpbGVTeXN0ZW0uY3BwCisrKyBiL1dlYkNvcmUvc3RvcmFnZS9ET01G
aWxlU3lzdGVtLmNwcApAQCAtMzQsOCArMzQsMTggQEAKICNpZiBFTkFCTEUoRklMRV9TWVNURU0p
CiAKICNpbmNsdWRlICJBc3luY0ZpbGVTeXN0ZW0uaCIKKyNpbmNsdWRlICJET01GaWxlUGF0aC5o
IgogI2luY2x1ZGUgIkRpcmVjdG9yeUVudHJ5LmgiCisjaW5jbHVkZSAiRW50cmllc0NhbGxiYWNr
LmgiCisjaW5jbHVkZSAiRW50cnkuaCIKKyNpbmNsdWRlICJFbnRyeUNhbGxiYWNrLmgiCisjaW5j
bHVkZSAiRXJyb3JDYWxsYmFjay5oIgorI2luY2x1ZGUgIkZpbGVFcnJvci5oIgorI2luY2x1ZGUg
IkZpbGVTeXN0ZW1DYWxsYmFja3MuaCIKKyNpbmNsdWRlICJNZXRhZGF0YUNhbGxiYWNrLmgiCiAj
aW5jbHVkZSAiU2NyaXB0RXhlY3V0aW9uQ29udGV4dC5oIgorI2luY2x1ZGUgIlZvaWRDYWxsYmFj
ay5oIgorI2luY2x1ZGUgPHd0Zi9Pd25QdHIuaD4KIAogbmFtZXNwYWNlIFdlYkNvcmUgewogCkBA
IC01Miw3ICs2Miw3IEBAIERPTUZpbGVTeXN0ZW06On5ET01GaWxlU3lzdGVtKCkKIAogUGFzc1Jl
ZlB0cjxEaXJlY3RvcnlFbnRyeT4gRE9NRmlsZVN5c3RlbTo6cm9vdCgpCiB7Ci0gICAgcmV0dXJu
IERpcmVjdG9yeUVudHJ5OjpjcmVhdGUodGhpcywgIi8iKTsKKyAgICByZXR1cm4gRGlyZWN0b3J5
RW50cnk6OmNyZWF0ZSh0aGlzLCBET01GaWxlUGF0aDo6cm9vdCk7CiB9CiAKIHZvaWQgRE9NRmls
ZVN5c3RlbTo6c3RvcCgpCkBAIC03MCw2ICs4MCwxMzEgQEAgdm9pZCBET01GaWxlU3lzdGVtOjpj
b250ZXh0RGVzdHJveWVkKCkKICAgICBtX2FzeW5jRmlsZVN5c3RlbS0+c3RvcCgpOwogfQogCit2
b2lkIERPTUZpbGVTeXN0ZW06OmdldE1ldGFkYXRhKGNvbnN0IEVudHJ5KiBlbnRyeSwgUGFzc1Jl
ZlB0cjxNZXRhZGF0YUNhbGxiYWNrPiBzdWNjZXNzQ2FsbGJhY2ssIFBhc3NSZWZQdHI8RXJyb3JD
YWxsYmFjaz4gZXJyb3JDYWxsYmFjaykKK3sKKyAgICBTdHJpbmcgcGxhdGZvcm1QYXRoID0gbV9h
c3luY0ZpbGVTeXN0ZW0tPnZpcnR1YWxUb1BsYXRmb3JtUGF0aChlbnRyeS0+ZnVsbFBhdGgoKSk7
CisgICAgbV9hc3luY0ZpbGVTeXN0ZW0tPnJlYWRNZXRhZGF0YShwbGF0Zm9ybVBhdGgsIG5ldyBN
ZXRhZGF0YUNhbGxiYWNrcyhzdWNjZXNzQ2FsbGJhY2ssIGVycm9yQ2FsbGJhY2spKTsKK30KKwor
c3RhdGljIGJvb2wgY2hlY2tWYWxpZGl0eUZvckZvckNvcHlPck1vdmUoY29uc3QgRW50cnkqIHNy
YywgRW50cnkqIHBhcmVudCwgY29uc3QgU3RyaW5nJiBuZXdOYW1lKQoreworICAgIEFTU0VSVChz
cmMpOworCisgICAgaWYgKCFwYXJlbnQgfHwgIXBhcmVudC0+aXNEaXJlY3RvcnkoKSkKKyAgICAg
ICAgcmV0dXJuIGZhbHNlOworCisgICAgaWYgKCFuZXdOYW1lLmlzRW1wdHkoKSAmJiAhRE9NRmls
ZVBhdGg6OmlzVmFsaWROYW1lKG5ld05hbWUpKQorICAgICAgICByZXR1cm4gZmFsc2U7CisKKyAg
ICAvLyBJdCBpcyBhbiBlcnJvciB0byB0cnkgdG8gY29weSBvciBtb3ZlIGFuIGVudHJ5IGluc2lk
ZSBpdHNlbGYgYXQgYW55IGRlcHRoIGlmIGl0IGlzIGEgZGlyZWN0b3J5LgorICAgIGlmIChzcmMt
PmlzRGlyZWN0b3J5KCkgJiYgRE9NRmlsZVBhdGg6OmlzUGFyZW50T2Yoc3JjLT5mdWxsUGF0aCgp
LCBwYXJlbnQtPmZ1bGxQYXRoKCkpKQorICAgICAgICByZXR1cm4gZmFsc2U7CisKKyAgICAvLyBJ
dCBpcyBhbiBlcnJvciB0byBjb3B5IG9yIG1vdmUgYW4gZW50cnkgaW50byBpdHMgcGFyZW50IGlm
IGEgbmFtZSBkaWZmZXJlbnQgZnJvbSBpdHMgY3VycmVudCBvbmUgaXNuJ3QgcHJvdmlkZWQuCisg
ICAgaWYgKChuZXdOYW1lLmlzRW1wdHkoKSB8fCBzcmMtPm5hbWUoKSA9PSBuZXdOYW1lKSAmJiBE
T01GaWxlUGF0aDo6Z2V0RGlyZWN0b3J5KHNyYy0+ZnVsbFBhdGgoKSkgPT0gcGFyZW50LT5mdWxs
UGF0aCgpKQorICAgICAgICByZXR1cm4gZmFsc2U7CisKKyAgICByZXR1cm4gdHJ1ZTsKK30KKwor
dm9pZCBET01GaWxlU3lzdGVtOjptb3ZlKGNvbnN0IEVudHJ5KiBzcmMsIFBhc3NSZWZQdHI8RW50
cnk+IHBhcmVudCwgY29uc3QgU3RyaW5nJiBuZXdOYW1lLCBQYXNzUmVmUHRyPEVudHJ5Q2FsbGJh
Y2s+IHN1Y2Nlc3NDYWxsYmFjaywgUGFzc1JlZlB0cjxFcnJvckNhbGxiYWNrPiBlcnJvckNhbGxi
YWNrKQoreworICAgIGlmICghY2hlY2tWYWxpZGl0eUZvckZvckNvcHlPck1vdmUoc3JjLCBwYXJl
bnQuZ2V0KCksIG5ld05hbWUpKSB7CisgICAgICAgIHNjaGVkdWxlQ2FsbGJhY2soc2NyaXB0RXhl
Y3V0aW9uQ29udGV4dCgpLCBlcnJvckNhbGxiYWNrLCBGaWxlRXJyb3I6OmNyZWF0ZShJTlZBTElE
X01PRElGSUNBVElPTl9FUlIpKTsKKyAgICAgICAgcmV0dXJuOworICAgIH0KKworICAgIFN0cmlu
ZyBkZXN0UGF0aCA9IHBhcmVudC0+ZnVsbFBhdGgoKTsKKyAgICBpZiAoIW5ld05hbWUuaXNFbXB0
eSgpKQorICAgICAgICBkZXN0UGF0aCA9IERPTUZpbGVQYXRoOjphcHBlbmQoZGVzdFBhdGgsIG5l
d05hbWUpOworICAgIGVsc2UKKyAgICAgICAgZGVzdFBhdGggPSBET01GaWxlUGF0aDo6YXBwZW5k
KGRlc3RQYXRoLCBzcmMtPm5hbWUoKSk7CisKKyAgICBTdHJpbmcgc3JjUGxhdGZvcm1QYXRoID0g
bV9hc3luY0ZpbGVTeXN0ZW0tPnZpcnR1YWxUb1BsYXRmb3JtUGF0aChzcmMtPmZ1bGxQYXRoKCkp
OworICAgIFN0cmluZyBkZXN0UGxhdGZvcm1QYXRoID0gcGFyZW50LT5maWxlc3lzdGVtKCktPmFz
eW5jRmlsZVN5c3RlbSgpLT52aXJ0dWFsVG9QbGF0Zm9ybVBhdGgoZGVzdFBhdGgpOworICAgIG1f
YXN5bmNGaWxlU3lzdGVtLT5tb3ZlKHNyY1BsYXRmb3JtUGF0aCwgZGVzdFBsYXRmb3JtUGF0aCwg
bmV3IEVudHJ5Q2FsbGJhY2tzKHN1Y2Nlc3NDYWxsYmFjaywgZXJyb3JDYWxsYmFjaywgdGhpcywg
ZGVzdFBhdGgsIHNyYy0+aXNEaXJlY3RvcnkoKSkpOworfQorCit2b2lkIERPTUZpbGVTeXN0ZW06
OmNvcHkoY29uc3QgRW50cnkqIHNyYywgUGFzc1JlZlB0cjxFbnRyeT4gcGFyZW50LCBjb25zdCBT
dHJpbmcmIG5ld05hbWUsIFBhc3NSZWZQdHI8RW50cnlDYWxsYmFjaz4gc3VjY2Vzc0NhbGxiYWNr
LCBQYXNzUmVmUHRyPEVycm9yQ2FsbGJhY2s+IGVycm9yQ2FsbGJhY2spCit7CisgICAgaWYgKCFj
aGVja1ZhbGlkaXR5Rm9yRm9yQ29weU9yTW92ZShzcmMsIHBhcmVudC5nZXQoKSwgbmV3TmFtZSkp
IHsKKyAgICAgICAgc2NoZWR1bGVDYWxsYmFjayhzY3JpcHRFeGVjdXRpb25Db250ZXh0KCksIGVy
cm9yQ2FsbGJhY2ssIEZpbGVFcnJvcjo6Y3JlYXRlKElOVkFMSURfTU9ESUZJQ0FUSU9OX0VSUikp
OworICAgICAgICByZXR1cm47CisgICAgfQorCisgICAgU3RyaW5nIGRlc3RQYXRoID0gcGFyZW50
LT5mdWxsUGF0aCgpOworICAgIGlmICghbmV3TmFtZS5pc0VtcHR5KCkpCisgICAgICAgIGRlc3RQ
YXRoID0gRE9NRmlsZVBhdGg6OmFwcGVuZChkZXN0UGF0aCwgbmV3TmFtZSk7CisgICAgZWxzZQor
ICAgICAgICBkZXN0UGF0aCA9IERPTUZpbGVQYXRoOjphcHBlbmQoZGVzdFBhdGgsIHNyYy0+bmFt
ZSgpKTsKKworICAgIFN0cmluZyBzcmNQbGF0Zm9ybVBhdGggPSBtX2FzeW5jRmlsZVN5c3RlbS0+
dmlydHVhbFRvUGxhdGZvcm1QYXRoKHNyYy0+ZnVsbFBhdGgoKSk7CisgICAgU3RyaW5nIGRlc3RQ
bGF0Zm9ybVBhdGggPSBwYXJlbnQtPmZpbGVzeXN0ZW0oKS0+YXN5bmNGaWxlU3lzdGVtKCktPnZp
cnR1YWxUb1BsYXRmb3JtUGF0aChkZXN0UGF0aCk7CisgICAgbV9hc3luY0ZpbGVTeXN0ZW0tPmNv
cHkoc3JjUGxhdGZvcm1QYXRoLCBkZXN0UGxhdGZvcm1QYXRoLCBuZXcgRW50cnlDYWxsYmFja3Mo
c3VjY2Vzc0NhbGxiYWNrLCBlcnJvckNhbGxiYWNrLCB0aGlzLCBkZXN0UGF0aCwgc3JjLT5pc0Rp
cmVjdG9yeSgpKSk7Cit9CisKK3ZvaWQgRE9NRmlsZVN5c3RlbTo6cmVtb3ZlKGNvbnN0IEVudHJ5
KiBlbnRyeSwgUGFzc1JlZlB0cjxWb2lkQ2FsbGJhY2s+IHN1Y2Nlc3NDYWxsYmFjaywgUGFzc1Jl
ZlB0cjxFcnJvckNhbGxiYWNrPiBlcnJvckNhbGxiYWNrKQoreworICAgIEFTU0VSVChlbnRyeSk7
CisgICAgU3RyaW5nIHBsYXRmb3JtUGF0aCA9IG1fYXN5bmNGaWxlU3lzdGVtLT52aXJ0dWFsVG9Q
bGF0Zm9ybVBhdGgoZW50cnktPmZ1bGxQYXRoKCkpOworICAgIG1fYXN5bmNGaWxlU3lzdGVtLT5y
ZW1vdmUocGxhdGZvcm1QYXRoLCBuZXcgVm9pZENhbGxiYWNrcyhzdWNjZXNzQ2FsbGJhY2ssIGVy
cm9yQ2FsbGJhY2spKTsKK30KKwordm9pZCBET01GaWxlU3lzdGVtOjpnZXRQYXJlbnQoY29uc3Qg
RW50cnkqIGVudHJ5LCBQYXNzUmVmUHRyPEVudHJ5Q2FsbGJhY2s+IHN1Y2Nlc3NDYWxsYmFjaywg
UGFzc1JlZlB0cjxFcnJvckNhbGxiYWNrPiBlcnJvckNhbGxiYWNrKQoreworICAgIEFTU0VSVChl
bnRyeSk7CisgICAgU3RyaW5nIHBhdGggPSBET01GaWxlUGF0aDo6Z2V0RGlyZWN0b3J5KGVudHJ5
LT5mdWxsUGF0aCgpKTsKKyAgICBTdHJpbmcgcGxhdGZvcm1QYXRoID0gbV9hc3luY0ZpbGVTeXN0
ZW0tPnZpcnR1YWxUb1BsYXRmb3JtUGF0aChwYXRoKTsKKyAgICBtX2FzeW5jRmlsZVN5c3RlbS0+
ZGlyZWN0b3J5RXhpc3RzKHBsYXRmb3JtUGF0aCwgbmV3IEVudHJ5Q2FsbGJhY2tzKHN1Y2Nlc3ND
YWxsYmFjaywgZXJyb3JDYWxsYmFjaywgdGhpcywgcGF0aCwgdHJ1ZSkpOworfQorCit2b2lkIERP
TUZpbGVTeXN0ZW06OmdldEZpbGUoY29uc3QgRW50cnkqIGJhc2UsIGNvbnN0IFN0cmluZyYgcGF0
aCwgUGFzc1JlZlB0cjxGbGFncz4gZmxhZ3MsIFBhc3NSZWZQdHI8RW50cnlDYWxsYmFjaz4gc3Vj
Y2Vzc0NhbGxiYWNrLCBQYXNzUmVmUHRyPEVycm9yQ2FsbGJhY2s+IGVycm9yQ2FsbGJhY2spCit7
CisgICAgQVNTRVJUKGJhc2UpOworICAgIGlmICghRE9NRmlsZVBhdGg6OmlzVmFsaWRQYXRoKHBh
dGgpKSB7CisgICAgICAgIHNjaGVkdWxlQ2FsbGJhY2soc2NyaXB0RXhlY3V0aW9uQ29udGV4dCgp
LCBlcnJvckNhbGxiYWNrLCBGaWxlRXJyb3I6OmNyZWF0ZShJTlZBTElEX01PRElGSUNBVElPTl9F
UlIpKTsKKyAgICAgICAgcmV0dXJuOworICAgIH0KKworICAgIFN0cmluZyBhYnNvbHV0ZVBhdGgg
PSBwYXRoOworICAgIGlmICghRE9NRmlsZVBhdGg6OmlzQWJzb2x1dGUocGF0aCkpCisgICAgICAg
IGFic29sdXRlUGF0aCA9IERPTUZpbGVQYXRoOjpyZW1vdmVFeHRyYVBhcmVudFJlZmVyZW5jZXMo
RE9NRmlsZVBhdGg6OmFwcGVuZChiYXNlLT5mdWxsUGF0aCgpLCBwYXRoKSk7CisgICAgU3RyaW5n
IHBsYXRmb3JtUGF0aCA9IG1fYXN5bmNGaWxlU3lzdGVtLT52aXJ0dWFsVG9QbGF0Zm9ybVBhdGgo
YWJzb2x1dGVQYXRoKTsKKworICAgIE93blB0cjxFbnRyeUNhbGxiYWNrcz4gY2FsbGJhY2tzID0g
YWRvcHRQdHIobmV3IEVudHJ5Q2FsbGJhY2tzKHN1Y2Nlc3NDYWxsYmFjaywgZXJyb3JDYWxsYmFj
aywgdGhpcywgYWJzb2x1dGVQYXRoLCBmYWxzZSkpOworICAgIGlmIChmbGFncyAmJiBmbGFncy0+
aXNDcmVhdGUoKSkKKyAgICAgICAgbV9hc3luY0ZpbGVTeXN0ZW0tPmNyZWF0ZUZpbGUocGxhdGZv
cm1QYXRoLCBmbGFncy0+aXNFeGNsdXNpdmUoKSwgY2FsbGJhY2tzLnJlbGVhc2UoKSk7CisgICAg
ZWxzZQorICAgICAgICBtX2FzeW5jRmlsZVN5c3RlbS0+ZmlsZUV4aXN0cyhwbGF0Zm9ybVBhdGgs
IGNhbGxiYWNrcy5yZWxlYXNlKCkpOworfQorCit2b2lkIERPTUZpbGVTeXN0ZW06OmdldERpcmVj
dG9yeShjb25zdCBFbnRyeSogYmFzZSwgY29uc3QgU3RyaW5nJiBwYXRoLCBQYXNzUmVmUHRyPEZs
YWdzPiBmbGFncywgUGFzc1JlZlB0cjxFbnRyeUNhbGxiYWNrPiBzdWNjZXNzQ2FsbGJhY2ssIFBh
c3NSZWZQdHI8RXJyb3JDYWxsYmFjaz4gZXJyb3JDYWxsYmFjaykKK3sKKyAgICBBU1NFUlQoYmFz
ZSk7CisgICAgaWYgKCFET01GaWxlUGF0aDo6aXNWYWxpZFBhdGgocGF0aCkpIHsKKyAgICAgICAg
c2NoZWR1bGVDYWxsYmFjayhzY3JpcHRFeGVjdXRpb25Db250ZXh0KCksIGVycm9yQ2FsbGJhY2ss
IEZpbGVFcnJvcjo6Y3JlYXRlKElOVkFMSURfTU9ESUZJQ0FUSU9OX0VSUikpOworICAgICAgICBy
ZXR1cm47CisgICAgfQorCisgICAgU3RyaW5nIGFic29sdXRlUGF0aCA9IHBhdGg7CisgICAgaWYg
KCFET01GaWxlUGF0aDo6aXNBYnNvbHV0ZShwYXRoKSkKKyAgICAgICAgYWJzb2x1dGVQYXRoID0g
RE9NRmlsZVBhdGg6OnJlbW92ZUV4dHJhUGFyZW50UmVmZXJlbmNlcyhET01GaWxlUGF0aDo6YXBw
ZW5kKGJhc2UtPmZ1bGxQYXRoKCksIHBhdGgpKTsKKyAgICBTdHJpbmcgcGxhdGZvcm1QYXRoID0g
bV9hc3luY0ZpbGVTeXN0ZW0tPnZpcnR1YWxUb1BsYXRmb3JtUGF0aChhYnNvbHV0ZVBhdGgpOwor
CisgICAgT3duUHRyPEVudHJ5Q2FsbGJhY2tzPiBjYWxsYmFja3MgPSBhZG9wdFB0cihuZXcgRW50
cnlDYWxsYmFja3Moc3VjY2Vzc0NhbGxiYWNrLCBlcnJvckNhbGxiYWNrLCB0aGlzLCBhYnNvbHV0
ZVBhdGgsIHRydWUpKTsKKyAgICBpZiAoZmxhZ3MgJiYgZmxhZ3MtPmlzQ3JlYXRlKCkpCisgICAg
ICAgIG1fYXN5bmNGaWxlU3lzdGVtLT5jcmVhdGVEaXJlY3RvcnkocGxhdGZvcm1QYXRoLCBmbGFn
cy0+aXNFeGNsdXNpdmUoKSwgY2FsbGJhY2tzLnJlbGVhc2UoKSk7CisgICAgZWxzZQorICAgICAg
ICBtX2FzeW5jRmlsZVN5c3RlbS0+ZGlyZWN0b3J5RXhpc3RzKHBsYXRmb3JtUGF0aCwgY2FsbGJh
Y2tzLnJlbGVhc2UoKSk7Cit9CisKK3ZvaWQgRE9NRmlsZVN5c3RlbTo6cmVhZERpcmVjdG9yeShj
b25zdCBTdHJpbmcmIHBhdGgsIFBhc3NSZWZQdHI8RW50cmllc0NhbGxiYWNrPiBzdWNjZXNzQ2Fs
bGJhY2ssIFBhc3NSZWZQdHI8RXJyb3JDYWxsYmFjaz4gZXJyb3JDYWxsYmFjaykKK3sKKyAgICBB
U1NFUlQoRE9NRmlsZVBhdGg6OmlzQWJzb2x1dGUocGF0aCkpOworICAgIFN0cmluZyBwbGF0Zm9y
bVBhdGggPSBtX2FzeW5jRmlsZVN5c3RlbS0+dmlydHVhbFRvUGxhdGZvcm1QYXRoKHBhdGgpOwor
ICAgIG1fYXN5bmNGaWxlU3lzdGVtLT5yZWFkRGlyZWN0b3J5KHBsYXRmb3JtUGF0aCwgbmV3IEVu
dHJpZXNDYWxsYmFja3Moc3VjY2Vzc0NhbGxiYWNrLCBlcnJvckNhbGxiYWNrLCB0aGlzLCBwYXRo
KSk7Cit9CisKIH0gLy8gbmFtZXNwYWNlCiAKICNlbmRpZiAvLyBFTkFCTEUoRklMRV9TWVNURU0p
CmRpZmYgLS1naXQgYS9XZWJDb3JlL3N0b3JhZ2UvRE9NRmlsZVN5c3RlbS5oIGIvV2ViQ29yZS9z
dG9yYWdlL0RPTUZpbGVTeXN0ZW0uaAppbmRleCAzMzdiZWE5Y2JlZWMwYjdmZTIzYjk0NWIzOTNh
NTM0NzBkOTQ1MmYzLi5iYTI3NjI0OWVkZTA5OGE0NTQ0ODU5MzRjNmU3N2EyNTJjNTUwMzY3IDEw
MDY0NAotLS0gYS9XZWJDb3JlL3N0b3JhZ2UvRE9NRmlsZVN5c3RlbS5oCisrKyBiL1dlYkNvcmUv
c3RvcmFnZS9ET01GaWxlU3lzdGVtLmgKQEAgLTM3LDEzICszNywxOSBAQAogI2luY2x1ZGUgIkFz
eW5jRmlsZVN5c3RlbS5oIgogI2luY2x1ZGUgIkZsYWdzLmgiCiAjaW5jbHVkZSAiUGxhdGZvcm1T
dHJpbmcuaCIKKyNpbmNsdWRlICJTY3JpcHRFeGVjdXRpb25Db250ZXh0LmgiCiAjaW5jbHVkZSA8
d3RmL1Bhc3NSZWZQdHIuaD4KICNpbmNsdWRlIDx3dGYvUmVmQ291bnRlZC5oPgogCiBuYW1lc3Bh
Y2UgV2ViQ29yZSB7CiAKIGNsYXNzIERpcmVjdG9yeUVudHJ5OwotY2xhc3MgU2NyaXB0RXhlY3V0
aW9uQ29udGV4dDsKK2NsYXNzIEVudHJ5OworY2xhc3MgRW50cnlDYWxsYmFjazsKK2NsYXNzIEVu
dHJpZXNDYWxsYmFjazsKK2NsYXNzIEVycm9yQ2FsbGJhY2s7CitjbGFzcyBNZXRhZGF0YUNhbGxi
YWNrOworY2xhc3MgVm9pZENhbGxiYWNrOwogCiBjbGFzcyBET01GaWxlU3lzdGVtIDogcHVibGlj
IFJlZkNvdW50ZWQ8RE9NRmlsZVN5c3RlbT4sIHB1YmxpYyBBY3RpdmVET01PYmplY3QgewogcHVi
bGljOgpAQCAtNjIsOSArNjgsNTAgQEAgcHVibGljOgogICAgIHZpcnR1YWwgYm9vbCBoYXNQZW5k
aW5nQWN0aXZpdHkoKSBjb25zdDsKICAgICB2aXJ0dWFsIHZvaWQgY29udGV4dERlc3Ryb3llZCgp
OwogCisgICAgLy8gQWN0dWFsIEZpbGVTeXN0ZW0gQVBJIGltcGxlbWVudGF0aW9ucy4gIEFsbCB0
aGUgdmFsaWRpdHkgY2hlY2tzIG9uIHZpcnR1YWwgcGF0aHMgYXJlIGRvbmUgYXQgRE9NRmlsZVN5
c3RlbSBsZXZlbC4KKyAgICB2b2lkIGdldE1ldGFkYXRhKGNvbnN0IEVudHJ5KiBlbnRyeSwgUGFz
c1JlZlB0cjxNZXRhZGF0YUNhbGxiYWNrPiBzdWNjZXNzQ2FsbGJhY2ssIFBhc3NSZWZQdHI8RXJy
b3JDYWxsYmFjaz4gZXJyb3JDYWxsYmFjayk7CisgICAgdm9pZCBtb3ZlKGNvbnN0IEVudHJ5KiBz
cmMsIFBhc3NSZWZQdHI8RW50cnk+IHBhcmVudCwgY29uc3QgU3RyaW5nJiBuYW1lLCBQYXNzUmVm
UHRyPEVudHJ5Q2FsbGJhY2s+LCBQYXNzUmVmUHRyPEVycm9yQ2FsbGJhY2s+KTsKKyAgICB2b2lk
IGNvcHkoY29uc3QgRW50cnkqIHNyYywgUGFzc1JlZlB0cjxFbnRyeT4gcGFyZW50LCBjb25zdCBT
dHJpbmcmIG5hbWUsIFBhc3NSZWZQdHI8RW50cnlDYWxsYmFjaz4sIFBhc3NSZWZQdHI8RXJyb3JD
YWxsYmFjaz4pOworICAgIHZvaWQgcmVtb3ZlKGNvbnN0IEVudHJ5KiBlbnRyeSwgUGFzc1JlZlB0
cjxWb2lkQ2FsbGJhY2s+LCBQYXNzUmVmUHRyPEVycm9yQ2FsbGJhY2s+KTsKKyAgICB2b2lkIGdl
dFBhcmVudChjb25zdCBFbnRyeSogZW50cnksIFBhc3NSZWZQdHI8RW50cnlDYWxsYmFjaz4sIFBh
c3NSZWZQdHI8RXJyb3JDYWxsYmFjaz4pOworICAgIHZvaWQgZ2V0RmlsZShjb25zdCBFbnRyeSog
YmFzZSwgY29uc3QgU3RyaW5nJiBwYXRoLCBQYXNzUmVmUHRyPEZsYWdzPiwgUGFzc1JlZlB0cjxF
bnRyeUNhbGxiYWNrPiwgUGFzc1JlZlB0cjxFcnJvckNhbGxiYWNrPik7CisgICAgdm9pZCBnZXRE
aXJlY3RvcnkoY29uc3QgRW50cnkqIGJhc2UsIGNvbnN0IFN0cmluZyYgcGF0aCwgUGFzc1JlZlB0
cjxGbGFncz4sIFBhc3NSZWZQdHI8RW50cnlDYWxsYmFjaz4sIFBhc3NSZWZQdHI8RXJyb3JDYWxs
YmFjaz4pOworICAgIHZvaWQgcmVhZERpcmVjdG9yeShjb25zdCBTdHJpbmcmIHBhdGgsIFBhc3NS
ZWZQdHI8RW50cmllc0NhbGxiYWNrPiwgUGFzc1JlZlB0cjxFcnJvckNhbGxiYWNrPik7CisKKyAg
ICAvLyBBIGhlbHBlciB0ZW1wbGF0ZSB0byBzY2hlZHVsZSBhIGNhbGxiYWNrIHRhc2suCisgICAg
Ly8gRklYTUU6IG1vdmUgdGhpcyB0byBhIG1vcmUgZ2VuZXJpYyBwbGFjZS4KKyAgICB0ZW1wbGF0
ZSA8dHlwZW5hbWUgQ0IsIHR5cGVuYW1lIENCQXJnPgorICAgIGNsYXNzIERpc3BhdGNoQ2FsbGJh
Y2tUYXNrIDogcHVibGljIFNjcmlwdEV4ZWN1dGlvbkNvbnRleHQ6OlRhc2sgeworICAgIHB1Ymxp
YzoKKyAgICAgICAgRGlzcGF0Y2hDYWxsYmFja1Rhc2soUGFzc1JlZlB0cjxDQj4gY2FsbGJhY2ss
IFBhc3NSZWZQdHI8Q0JBcmc+IGFyZykKKyAgICAgICAgICAgIDogbV9jYWxsYmFjayhjYWxsYmFj
aykKKyAgICAgICAgICAgICwgbV9jYWxsYmFja0FyZyhhcmcpCisgICAgICAgIHsKKyAgICAgICAg
fQorCisgICAgICAgIHZpcnR1YWwgdm9pZCBwZXJmb3JtVGFzayhTY3JpcHRFeGVjdXRpb25Db250
ZXh0KikKKyAgICAgICAgeworICAgICAgICAgICAgbV9jYWxsYmFjay0+aGFuZGxlRXZlbnQobV9j
YWxsYmFja0FyZy5nZXQoKSk7CisgICAgICAgIH0KKworICAgIHByaXZhdGU6CisgICAgICAgIFJl
ZlB0cjxDQj4gbV9jYWxsYmFjazsKKyAgICAgICAgUmVmUHRyPENCQXJnPiBtX2NhbGxiYWNrQXJn
OworICAgIH07CisKKyAgICAvLyBTY2hlZHVsZSBhIGNhbGxiYWNrLiBUaGlzIHNob3VsZCBub3Qg
Y3Jvc3MgdGhyZWFkcyAoc2hvdWxkIGJlIGNhbGxlZCBvbiB0aGUgc2FtZSBjb250ZXh0IHRocmVh
ZCkuCisgICAgdGVtcGxhdGUgPHR5cGVuYW1lIENCLCB0eXBlbmFtZSBDQkFyZz4KKyAgICBzdGF0
aWMgdm9pZCBzY2hlZHVsZUNhbGxiYWNrKFNjcmlwdEV4ZWN1dGlvbkNvbnRleHQqIHNjcmlwdEV4
ZWN1dGlvbkNvbnRleHQsIFBhc3NSZWZQdHI8Q0I+IGNhbGxiYWNrLCBQYXNzUmVmUHRyPENCQXJn
PiBhcmcpCisgICAgeworICAgICAgICBBU1NFUlQoc2NyaXB0RXhlY3V0aW9uQ29udGV4dC0+aXND
b250ZXh0VGhyZWFkKCkpOworICAgICAgICBzY3JpcHRFeGVjdXRpb25Db250ZXh0LT5wb3N0VGFz
ayhuZXcgRGlzcGF0Y2hDYWxsYmFja1Rhc2s8Q0IsIENCQXJnPihjYWxsYmFjaywgYXJnKSk7Cisg
ICAgfQorCiBwcml2YXRlOgogICAgIERPTUZpbGVTeXN0ZW0oU2NyaXB0RXhlY3V0aW9uQ29udGV4
dCosIGNvbnN0IFN0cmluZyYgbmFtZSwgUGFzc093blB0cjxBc3luY0ZpbGVTeXN0ZW0+KTsKIAor
ICAgIEFzeW5jRmlsZVN5c3RlbSogYXN5bmNGaWxlU3lzdGVtKCkgY29uc3QgeyByZXR1cm4gbV9h
c3luY0ZpbGVTeXN0ZW0uZ2V0KCk7IH0KKwogICAgIFN0cmluZyBtX25hbWU7CiAgICAgbXV0YWJs
ZSBPd25QdHI8QXN5bmNGaWxlU3lzdGVtPiBtX2FzeW5jRmlsZVN5c3RlbTsKIH07CmRpZmYgLS1n
aXQgYS9XZWJDb3JlL3N0b3JhZ2UvRGlyZWN0b3J5RW50cnkuY3BwIGIvV2ViQ29yZS9zdG9yYWdl
L0RpcmVjdG9yeUVudHJ5LmNwcAppbmRleCA2MGRjYWNlNGQwNmU2NmZkYjA3OWQxZDkyYjhmMDdk
ZTUwYzNlYzYyLi45NWMxMmU0OGY4MTBiMWJkZTA4MDEzODAzMTdmNjcyYzdmODZlY2M0IDEwMDY0
NAotLS0gYS9XZWJDb3JlL3N0b3JhZ2UvRGlyZWN0b3J5RW50cnkuY3BwCisrKyBiL1dlYkNvcmUv
c3RvcmFnZS9EaXJlY3RvcnlFbnRyeS5jcHAKQEAgLTM5LDcgKzM5LDcgQEAKIAogbmFtZXNwYWNl
IFdlYkNvcmUgewogCi1EaXJlY3RvcnlFbnRyeTo6RGlyZWN0b3J5RW50cnkoUGFzc1JlZlB0cjxE
T01GaWxlU3lzdGVtPiBmaWxlU3lzdGVtLCBjb25zdCBTdHJpbmcmIGZ1bGxQYXRoKQorRGlyZWN0
b3J5RW50cnk6OkRpcmVjdG9yeUVudHJ5KERPTUZpbGVTeXN0ZW0qIGZpbGVTeXN0ZW0sIGNvbnN0
IFN0cmluZyYgZnVsbFBhdGgpCiAgICAgOiBFbnRyeShmaWxlU3lzdGVtLCBmdWxsUGF0aCkKIHsK
IH0KQEAgLTQ5LDE2ICs0OSwxNCBAQCBQYXNzUmVmUHRyPERpcmVjdG9yeVJlYWRlcj4gRGlyZWN0
b3J5RW50cnk6OmNyZWF0ZVJlYWRlcigpCiAgICAgcmV0dXJuIERpcmVjdG9yeVJlYWRlcjo6Y3Jl
YXRlKG1fZmlsZVN5c3RlbSwgbV9mdWxsUGF0aCk7CiB9CiAKLXZvaWQgRGlyZWN0b3J5RW50cnk6
OmdldEZpbGUoY29uc3QgU3RyaW5nJiwgUGFzc1JlZlB0cjxGbGFncz4sIFBhc3NSZWZQdHI8RW50
cnlDYWxsYmFjaz4sIFBhc3NSZWZQdHI8RXJyb3JDYWxsYmFjaz4pCit2b2lkIERpcmVjdG9yeUVu
dHJ5OjpnZXRGaWxlKGNvbnN0IFN0cmluZyYgcGF0aCwgUGFzc1JlZlB0cjxGbGFncz4gZmxhZ3Ms
IFBhc3NSZWZQdHI8RW50cnlDYWxsYmFjaz4gc3VjY2Vzc0NhbGxiYWNrLCBQYXNzUmVmUHRyPEVy
cm9yQ2FsbGJhY2s+IGVycm9yQ2FsbGJhY2spCiB7Ci0gICAgLy8gRklYTUU6IHRvIGJlIGltcGxl
bWVudGVkLgotICAgIEFTU0VSVF9OT1RfUkVBQ0hFRCgpOworICAgIG1fZmlsZVN5c3RlbS0+Z2V0
RmlsZSh0aGlzLCBwYXRoLCBmbGFncywgc3VjY2Vzc0NhbGxiYWNrLCBlcnJvckNhbGxiYWNrKTsK
IH0KIAotdm9pZCBEaXJlY3RvcnlFbnRyeTo6Z2V0RGlyZWN0b3J5KGNvbnN0IFN0cmluZyYsIFBh
c3NSZWZQdHI8RmxhZ3M+LCBQYXNzUmVmUHRyPEVudHJ5Q2FsbGJhY2s+LCBQYXNzUmVmUHRyPEVy
cm9yQ2FsbGJhY2s+KQordm9pZCBEaXJlY3RvcnlFbnRyeTo6Z2V0RGlyZWN0b3J5KGNvbnN0IFN0
cmluZyYgcGF0aCwgUGFzc1JlZlB0cjxGbGFncz4gZmxhZ3MsIFBhc3NSZWZQdHI8RW50cnlDYWxs
YmFjaz4gc3VjY2Vzc0NhbGxiYWNrLCBQYXNzUmVmUHRyPEVycm9yQ2FsbGJhY2s+IGVycm9yQ2Fs
bGJhY2spCiB7Ci0gICAgLy8gRklYTUU6IHRvIGJlIGltcGxlbWVudGVkLgotICAgIEFTU0VSVF9O
T1RfUkVBQ0hFRCgpOworICAgIG1fZmlsZVN5c3RlbS0+Z2V0RGlyZWN0b3J5KHRoaXMsIHBhdGgs
IGZsYWdzLCBzdWNjZXNzQ2FsbGJhY2ssIGVycm9yQ2FsbGJhY2spOwogfQogCiB9IC8vIG5hbWVz
cGFjZQpkaWZmIC0tZ2l0IGEvV2ViQ29yZS9zdG9yYWdlL0RpcmVjdG9yeUVudHJ5LmggYi9XZWJD
b3JlL3N0b3JhZ2UvRGlyZWN0b3J5RW50cnkuaAppbmRleCAyYWU0ZmI1NGYzOWFlNzBhYTYzZTcz
MDY3NGU2ZjhjNzNiMWU4OTM1Li4zY2Q4YWI1ZGM3ODdjMGFlZDYwMTcxNDNmNTQyNzNmOWY5Y2Y4
OWVkIDEwMDY0NAotLS0gYS9XZWJDb3JlL3N0b3JhZ2UvRGlyZWN0b3J5RW50cnkuaAorKysgYi9X
ZWJDb3JlL3N0b3JhZ2UvRGlyZWN0b3J5RW50cnkuaApAQCAtNDcsNyArNDcsNyBAQCBjbGFzcyBF
cnJvckNhbGxiYWNrOwogCiBjbGFzcyBEaXJlY3RvcnlFbnRyeSA6IHB1YmxpYyBFbnRyeSB7CiBw
dWJsaWM6Ci0gICAgc3RhdGljIFBhc3NSZWZQdHI8RGlyZWN0b3J5RW50cnk+IGNyZWF0ZShQYXNz
UmVmUHRyPERPTUZpbGVTeXN0ZW0+IGZpbGVTeXN0ZW0sIGNvbnN0IFN0cmluZyYgZnVsbFBhdGgp
CisgICAgc3RhdGljIFBhc3NSZWZQdHI8RGlyZWN0b3J5RW50cnk+IGNyZWF0ZShET01GaWxlU3lz
dGVtKiBmaWxlU3lzdGVtLCBjb25zdCBTdHJpbmcmIGZ1bGxQYXRoKQogICAgIHsKICAgICAgICAg
cmV0dXJuIGFkb3B0UmVmKG5ldyBEaXJlY3RvcnlFbnRyeShmaWxlU3lzdGVtLCBmdWxsUGF0aCkp
OwogICAgIH0KQEAgLTU4LDcgKzU4LDcgQEAgcHVibGljOgogICAgIHZvaWQgZ2V0RGlyZWN0b3J5
KGNvbnN0IFN0cmluZyYgcGF0aCwgUGFzc1JlZlB0cjxGbGFncz4gb3B0aW9ucyA9IDAsIFBhc3NS
ZWZQdHI8RW50cnlDYWxsYmFjaz4gc3VjY2Vzc0NhbGxiYWNrID0gMCwgUGFzc1JlZlB0cjxFcnJv
ckNhbGxiYWNrPiBlcnJvckNhbGxiYWNrID0gMCk7CiAKIHByaXZhdGU6Ci0gICAgRGlyZWN0b3J5
RW50cnkoUGFzc1JlZlB0cjxET01GaWxlU3lzdGVtPiBmaWxlU3lzdGVtLCBjb25zdCBTdHJpbmcm
IGZ1bGxQYXRoKTsKKyAgICBEaXJlY3RvcnlFbnRyeShET01GaWxlU3lzdGVtKiBmaWxlU3lzdGVt
LCBjb25zdCBTdHJpbmcmIGZ1bGxQYXRoKTsKIH07CiAKIH0gLy8gbmFtZXNwYWNlCmRpZmYgLS1n
aXQgYS9XZWJDb3JlL3N0b3JhZ2UvRGlyZWN0b3J5UmVhZGVyLmNwcCBiL1dlYkNvcmUvc3RvcmFn
ZS9EaXJlY3RvcnlSZWFkZXIuY3BwCmluZGV4IDBiMzBmNzA1MzE0YzhmZDkyNzY1OTJiOTcwYWI2
ODA3NjY0MTY0ZTUuLmIwZWVmMWNjNDkyNzZmMzNjNzk0MGU2NjkyY2EyZjVkNjAwZjA1MTUgMTAw
NjQ0Ci0tLSBhL1dlYkNvcmUvc3RvcmFnZS9EaXJlY3RvcnlSZWFkZXIuY3BwCisrKyBiL1dlYkNv
cmUvc3RvcmFnZS9EaXJlY3RvcnlSZWFkZXIuY3BwCkBAIC0zOSwxNiArMzksMTUgQEAKIAogbmFt
ZXNwYWNlIFdlYkNvcmUgewogCi1EaXJlY3RvcnlSZWFkZXI6OkRpcmVjdG9yeVJlYWRlcihQYXNz
UmVmUHRyPERPTUZpbGVTeXN0ZW0+IGZpbGVTeXN0ZW0sIGNvbnN0IFN0cmluZyYgcGF0aCkKK0Rp
cmVjdG9yeVJlYWRlcjo6RGlyZWN0b3J5UmVhZGVyKFBhc3NSZWZQdHI8RE9NRmlsZVN5c3RlbT4g
ZmlsZVN5c3RlbSwgY29uc3QgU3RyaW5nJiBmdWxsUGF0aCkKICAgICA6IG1fZmlsZVN5c3RlbShm
aWxlU3lzdGVtKQotICAgICwgbV9wYXRoKHBhdGgpCisgICAgLCBtX2Z1bGxQYXRoKGZ1bGxQYXRo
KQogewogfQogCi12b2lkIERpcmVjdG9yeVJlYWRlcjo6cmVhZEVudHJpZXMoUGFzc1JlZlB0cjxF
bnRyaWVzQ2FsbGJhY2s+LCBQYXNzUmVmUHRyPEVycm9yQ2FsbGJhY2s+KQordm9pZCBEaXJlY3Rv
cnlSZWFkZXI6OnJlYWRFbnRyaWVzKFBhc3NSZWZQdHI8RW50cmllc0NhbGxiYWNrPiBlbnRyaWVz
Q2FsbGJhY2ssIFBhc3NSZWZQdHI8RXJyb3JDYWxsYmFjaz4gZXJyb3JDYWxsYmFjaykKIHsKLSAg
ICAvLyBGSVhNRTogdG8gYmUgaW1wbGVtZW50ZWQuCi0gICAgQVNTRVJUX05PVF9SRUFDSEVEKCk7
CisgICAgbV9maWxlU3lzdGVtLT5yZWFkRGlyZWN0b3J5KG1fZnVsbFBhdGgsIGVudHJpZXNDYWxs
YmFjaywgZXJyb3JDYWxsYmFjayk7CiB9CiAKIH0gLy8gbmFtZXNwYWNlCmRpZmYgLS1naXQgYS9X
ZWJDb3JlL3N0b3JhZ2UvRGlyZWN0b3J5UmVhZGVyLmggYi9XZWJDb3JlL3N0b3JhZ2UvRGlyZWN0
b3J5UmVhZGVyLmgKaW5kZXggY2Y1ZGE4ZjNkYzc1ZjQzMGUzZTY0NmM4OTJlNzU2NjVkMWQ0NTE3
MC4uMGUyZWYwZjZjZDIyOWNkZDRkOTU3ZTFlZjViMjc0YTU4YzYzOTFkMCAxMDA2NDQKLS0tIGEv
V2ViQ29yZS9zdG9yYWdlL0RpcmVjdG9yeVJlYWRlci5oCisrKyBiL1dlYkNvcmUvc3RvcmFnZS9E
aXJlY3RvcnlSZWFkZXIuaApAQCAtNTYsNyArNTYsNyBAQCBwcml2YXRlOgogICAgIERpcmVjdG9y
eVJlYWRlcihQYXNzUmVmUHRyPERPTUZpbGVTeXN0ZW0+IGZpbGVTeXN0ZW0sIGNvbnN0IFN0cmlu
ZyYgcGF0aCk7CiAKICAgICBSZWZQdHI8RE9NRmlsZVN5c3RlbT4gbV9maWxlU3lzdGVtOwotICAg
IFN0cmluZyBtX3BhdGg7CisgICAgU3RyaW5nIG1fZnVsbFBhdGg7CiB9OwogCiB9IC8vIG5hbWVz
cGFjZQpkaWZmIC0tZ2l0IGEvV2ViQ29yZS9zdG9yYWdlL0VudHJ5LmNwcCBiL1dlYkNvcmUvc3Rv
cmFnZS9FbnRyeS5jcHAKaW5kZXggNjc4MzI5MTM5OGE5ZWVmNzcwZjk1NDA3YjkxYjljN2Q3ZTE0
ZmYzMC4uZmJiZWRmMjBlNzQ0ZDI2YzBmYTk1Y2YzMzQ1OWM4NzIwZGNiYzdkOSAxMDA2NDQKLS0t
IGEvV2ViQ29yZS9zdG9yYWdlL0VudHJ5LmNwcAorKysgYi9XZWJDb3JlL3N0b3JhZ2UvRW50cnku
Y3BwCkBAIC0zMiwxNSArMzIsMTcgQEAKIAogI2lmIEVOQUJMRShGSUxFX1NZU1RFTSkKIAorI2lu
Y2x1ZGUgIkRPTUZpbGVQYXRoLmgiCiAjaW5jbHVkZSAiRE9NRmlsZVN5c3RlbS5oIgogI2luY2x1
ZGUgIkVudHJ5Q2FsbGJhY2suaCIKICNpbmNsdWRlICJFcnJvckNhbGxiYWNrLmgiCisjaW5jbHVk
ZSAiRmlsZUVycm9yLmgiCiAjaW5jbHVkZSAiTWV0YWRhdGFDYWxsYmFjay5oIgogI2luY2x1ZGUg
IlZvaWRDYWxsYmFjay5oIgogCiBuYW1lc3BhY2UgV2ViQ29yZSB7CiAKLUVudHJ5OjpFbnRyeShQ
YXNzUmVmUHRyPERPTUZpbGVTeXN0ZW0+IGZpbGVTeXN0ZW0sIGNvbnN0IFN0cmluZyYgZnVsbFBh
dGgpCitFbnRyeTo6RW50cnkoRE9NRmlsZVN5c3RlbSogZmlsZVN5c3RlbSwgY29uc3QgU3RyaW5n
JiBmdWxsUGF0aCkKICAgICA6IG1fZmlsZVN5c3RlbShmaWxlU3lzdGVtKQogICAgICwgbV9mdWxs
UGF0aChmdWxsUGF0aCkKIHsKQEAgLTUxLDM0ICs1MywyOSBAQCBFbnRyeTo6RW50cnkoUGFzc1Jl
ZlB0cjxET01GaWxlU3lzdGVtPiBmaWxlU3lzdGVtLCBjb25zdCBTdHJpbmcmIGZ1bGxQYXRoKQog
ICAgICAgICBtX25hbWUgPSBmdWxsUGF0aDsKIH0KIAotdm9pZCBFbnRyeTo6Z2V0TWV0YWRhdGEo
UGFzc1JlZlB0cjxNZXRhZGF0YUNhbGxiYWNrPiwgUGFzc1JlZlB0cjxFcnJvckNhbGxiYWNrPikK
K3ZvaWQgRW50cnk6OmdldE1ldGFkYXRhKFBhc3NSZWZQdHI8TWV0YWRhdGFDYWxsYmFjaz4gc3Vj
Y2Vzc0NhbGxiYWNrLCBQYXNzUmVmUHRyPEVycm9yQ2FsbGJhY2s+IGVycm9yQ2FsbGJhY2spCiB7
Ci0gICAgLy8gRklYTUU6IHRvIGJlIGltcGxlbWVudGVkLgotICAgIEFTU0VSVF9OT1RfUkVBQ0hF
RCgpOworICAgIG1fZmlsZVN5c3RlbS0+Z2V0TWV0YWRhdGEodGhpcywgc3VjY2Vzc0NhbGxiYWNr
LCBlcnJvckNhbGxiYWNrKTsKIH0KIAotdm9pZCBFbnRyeTo6bW92ZVRvKFBhc3NSZWZQdHI8RW50
cnk+LCBjb25zdCBTdHJpbmcmLCBQYXNzUmVmUHRyPEVudHJ5Q2FsbGJhY2s+LCBQYXNzUmVmUHRy
PEVycm9yQ2FsbGJhY2s+KQordm9pZCBFbnRyeTo6bW92ZVRvKFBhc3NSZWZQdHI8RW50cnk+IHBh
cmVudCwgY29uc3QgU3RyaW5nJiBuYW1lLCBQYXNzUmVmUHRyPEVudHJ5Q2FsbGJhY2s+IHN1Y2Nl
c3NDYWxsYmFjaywgUGFzc1JlZlB0cjxFcnJvckNhbGxiYWNrPiBlcnJvckNhbGxiYWNrKSBjb25z
dAogewotICAgIC8vIEZJWE1FOiB0byBiZSBpbXBsZW1lbnRlZC4KLSAgICBBU1NFUlRfTk9UX1JF
QUNIRUQoKTsKKyAgICBtX2ZpbGVTeXN0ZW0tPm1vdmUodGhpcywgcGFyZW50LCBuYW1lLCBzdWNj
ZXNzQ2FsbGJhY2ssIGVycm9yQ2FsbGJhY2spOwogfQogCi12b2lkIEVudHJ5Ojpjb3B5VG8oUGFz
c1JlZlB0cjxFbnRyeT4sIGNvbnN0IFN0cmluZyYsIFBhc3NSZWZQdHI8RW50cnlDYWxsYmFjaz4s
IFBhc3NSZWZQdHI8RXJyb3JDYWxsYmFjaz4pCit2b2lkIEVudHJ5Ojpjb3B5VG8oUGFzc1JlZlB0
cjxFbnRyeT4gcGFyZW50LCBjb25zdCBTdHJpbmcmIG5hbWUsIFBhc3NSZWZQdHI8RW50cnlDYWxs
YmFjaz4gc3VjY2Vzc0NhbGxiYWNrLCBQYXNzUmVmUHRyPEVycm9yQ2FsbGJhY2s+IGVycm9yQ2Fs
bGJhY2spIGNvbnN0CiB7Ci0gICAgLy8gRklYTUU6IHRvIGJlIGltcGxlbWVudGVkLgotICAgIEFT
U0VSVF9OT1RfUkVBQ0hFRCgpOworICAgIG1fZmlsZVN5c3RlbS0+Y29weSh0aGlzLCBwYXJlbnQs
IG5hbWUsIHN1Y2Nlc3NDYWxsYmFjaywgZXJyb3JDYWxsYmFjayk7CiB9CiAKLXZvaWQgRW50cnk6
OnJlbW92ZShQYXNzUmVmUHRyPFZvaWRDYWxsYmFjaz4sIFBhc3NSZWZQdHI8RXJyb3JDYWxsYmFj
az4pCit2b2lkIEVudHJ5OjpyZW1vdmUoUGFzc1JlZlB0cjxWb2lkQ2FsbGJhY2s+IHN1Y2Nlc3ND
YWxsYmFjaywgUGFzc1JlZlB0cjxFcnJvckNhbGxiYWNrPiBlcnJvckNhbGxiYWNrKSBjb25zdAog
ewotICAgIC8vIEZJWE1FOiB0byBiZSBpbXBsZW1lbnRlZC4KLSAgICBBU1NFUlRfTk9UX1JFQUNI
RUQoKTsKKyAgICBtX2ZpbGVTeXN0ZW0tPnJlbW92ZSh0aGlzLCBzdWNjZXNzQ2FsbGJhY2ssIGVy
cm9yQ2FsbGJhY2spOwogfQogCi12b2lkIEVudHJ5OjpnZXRQYXJlbnQoUGFzc1JlZlB0cjxFbnRy
eUNhbGxiYWNrPiwgUGFzc1JlZlB0cjxFcnJvckNhbGxiYWNrPikKK3ZvaWQgRW50cnk6OmdldFBh
cmVudChQYXNzUmVmUHRyPEVudHJ5Q2FsbGJhY2s+IHN1Y2Nlc3NDYWxsYmFjaywgUGFzc1JlZlB0
cjxFcnJvckNhbGxiYWNrPiBlcnJvckNhbGxiYWNrKSBjb25zdAogewotICAgIC8vIEZJWE1FOiB0
byBiZSBpbXBsZW1lbnRlZC4KLSAgICBBU1NFUlRfTk9UX1JFQUNIRUQoKTsKKyAgICBtX2ZpbGVT
eXN0ZW0tPmdldFBhcmVudCh0aGlzLCBzdWNjZXNzQ2FsbGJhY2ssIGVycm9yQ2FsbGJhY2spOwog
fQogCiBTdHJpbmcgRW50cnk6OnRvVVJJKGNvbnN0IFN0cmluZyYpCmRpZmYgLS1naXQgYS9XZWJD
b3JlL3N0b3JhZ2UvRW50cnkuaCBiL1dlYkNvcmUvc3RvcmFnZS9FbnRyeS5oCmluZGV4IDdiYmIy
NjU3NGFiMTE3MDA2YTIxMjE4ZDVlZjVjMDQ4YzI2OGMzMWIuLjlhZjUzMmY5YmFhYzU1ZGMxMTQ0
MmI4ZWUwNzkzYTU5ZjlkZTA4YTEgMTAwNjQ0Ci0tLSBhL1dlYkNvcmUvc3RvcmFnZS9FbnRyeS5o
CisrKyBiL1dlYkNvcmUvc3RvcmFnZS9FbnRyeS5oCkBAIC01NCwyMiArNTQsMjEgQEAgcHVibGlj
OgogICAgIGNvbnN0IFN0cmluZyYgZnVsbFBhdGgoKSBjb25zdCB7IHJldHVybiBtX2Z1bGxQYXRo
OyB9CiAgICAgY29uc3QgU3RyaW5nJiBuYW1lKCkgY29uc3QgeyByZXR1cm4gbV9uYW1lOyB9CiAK
LSAgICBET01GaWxlU3lzdGVtKiBmaWxlc3lzdGVtKCkgY29uc3QgeyByZXR1cm4gbV9maWxlU3lz
dGVtLmdldCgpOyB9CisgICAgRE9NRmlsZVN5c3RlbSogZmlsZXN5c3RlbSgpIGNvbnN0IHsgcmV0
dXJuIG1fZmlsZVN5c3RlbTsgfQogCiAgICAgdmlydHVhbCB2b2lkIGdldE1ldGFkYXRhKFBhc3NS
ZWZQdHI8TWV0YWRhdGFDYWxsYmFjaz4gc3VjY2Vzc0NhbGxiYWNrID0gMCwgUGFzc1JlZlB0cjxF
cnJvckNhbGxiYWNrPiBlcnJvckNhbGxiYWNrID0gMCk7Ci0KLSAgICB2aXJ0dWFsIHZvaWQgbW92
ZVRvKFBhc3NSZWZQdHI8RW50cnk+IHBhcmVudCwgY29uc3QgU3RyaW5nJiBuYW1lID0gU3RyaW5n
KCksIFBhc3NSZWZQdHI8RW50cnlDYWxsYmFjaz4gc3VjY2Vzc0NhbGxiYWNrID0gMCwgUGFzc1Jl
ZlB0cjxFcnJvckNhbGxiYWNrPiBlcnJvckNhbGxiYWNrID0gMCk7Ci0gICAgdmlydHVhbCB2b2lk
IGNvcHlUbyhQYXNzUmVmUHRyPEVudHJ5PiBwYXJlbnQsIGNvbnN0IFN0cmluZyYgbmFtZSA9IFN0
cmluZygpLCBQYXNzUmVmUHRyPEVudHJ5Q2FsbGJhY2s+IHN1Y2Nlc3NDYWxsYmFjayA9IDAsIFBh
c3NSZWZQdHI8RXJyb3JDYWxsYmFjaz4gZXJyb3JDYWxsYmFjayA9IDApOwotICAgIHZpcnR1YWwg
dm9pZCByZW1vdmUoUGFzc1JlZlB0cjxWb2lkQ2FsbGJhY2s+IHN1Y2Nlc3NDYWxsYmFjayA9IDAs
IFBhc3NSZWZQdHI8RXJyb3JDYWxsYmFjaz4gZXJyb3JDYWxsYmFjayA9IDApOwotICAgIHZpcnR1
YWwgdm9pZCBnZXRQYXJlbnQoUGFzc1JlZlB0cjxFbnRyeUNhbGxiYWNrPiBzdWNjZXNzQ2FsbGJh
Y2sgPSAwLCBQYXNzUmVmUHRyPEVycm9yQ2FsbGJhY2s+IGVycm9yQ2FsbGJhY2sgPSAwKTsKKyAg
ICB2aXJ0dWFsIHZvaWQgbW92ZVRvKFBhc3NSZWZQdHI8RW50cnk+IHBhcmVudCwgY29uc3QgU3Ry
aW5nJiBuYW1lID0gU3RyaW5nKCksIFBhc3NSZWZQdHI8RW50cnlDYWxsYmFjaz4gc3VjY2Vzc0Nh
bGxiYWNrID0gMCwgUGFzc1JlZlB0cjxFcnJvckNhbGxiYWNrPiBlcnJvckNhbGxiYWNrID0gMCkg
Y29uc3Q7CisgICAgdmlydHVhbCB2b2lkIGNvcHlUbyhQYXNzUmVmUHRyPEVudHJ5PiBwYXJlbnQs
IGNvbnN0IFN0cmluZyYgbmFtZSA9IFN0cmluZygpLCBQYXNzUmVmUHRyPEVudHJ5Q2FsbGJhY2s+
IHN1Y2Nlc3NDYWxsYmFjayA9IDAsIFBhc3NSZWZQdHI8RXJyb3JDYWxsYmFjaz4gZXJyb3JDYWxs
YmFjayA9IDApIGNvbnN0OworICAgIHZpcnR1YWwgdm9pZCByZW1vdmUoUGFzc1JlZlB0cjxWb2lk
Q2FsbGJhY2s+IHN1Y2Nlc3NDYWxsYmFjayA9IDAsIFBhc3NSZWZQdHI8RXJyb3JDYWxsYmFjaz4g
ZXJyb3JDYWxsYmFjayA9IDApIGNvbnN0OworICAgIHZpcnR1YWwgdm9pZCBnZXRQYXJlbnQoUGFz
c1JlZlB0cjxFbnRyeUNhbGxiYWNrPiBzdWNjZXNzQ2FsbGJhY2sgPSAwLCBQYXNzUmVmUHRyPEVy
cm9yQ2FsbGJhY2s+IGVycm9yQ2FsbGJhY2sgPSAwKSBjb25zdDsKIAogICAgIHZpcnR1YWwgU3Ry
aW5nIHRvVVJJKGNvbnN0IFN0cmluZyYgbWltZVR5cGUgPSBTdHJpbmcoKSk7CiAKIHByb3RlY3Rl
ZDoKLSAgICBFbnRyeShQYXNzUmVmUHRyPERPTUZpbGVTeXN0ZW0+IGZpbGVTeXN0ZW0sIGNvbnN0
IFN0cmluZyYgZnVsbFBhdGgpOworICAgIEVudHJ5KERPTUZpbGVTeXN0ZW0qIGZpbGVTeXN0ZW0s
IGNvbnN0IFN0cmluZyYgZnVsbFBhdGgpOwogCi0gICAgUmVmUHRyPERPTUZpbGVTeXN0ZW0+IG1f
ZmlsZVN5c3RlbTsKLSAgICBTdHJpbmcgbV9mdWxsUGF0aDsgLy8gdmlydHVhbCBwYXRoCisgICAg
RE9NRmlsZVN5c3RlbSogbV9maWxlU3lzdGVtOworICAgIFN0cmluZyBtX2Z1bGxQYXRoOwogICAg
IFN0cmluZyBtX25hbWU7CiB9OwogCmRpZmYgLS1naXQgYS9XZWJDb3JlL3N0b3JhZ2UvRmlsZUVu
dHJ5LmNwcCBiL1dlYkNvcmUvc3RvcmFnZS9GaWxlRW50cnkuY3BwCmluZGV4IDRiZWMwMWQ4OWZi
NjY1YzRiMzljMjk3ODRlMjAwY2I0MTMzN2IwOGUuLmUyYTU4M2NjNjk0NzU3MGM0ODliOTk1MGQw
MDRiMjg1N2QzMDczZmQgMTAwNjQ0Ci0tLSBhL1dlYkNvcmUvc3RvcmFnZS9GaWxlRW50cnkuY3Bw
CisrKyBiL1dlYkNvcmUvc3RvcmFnZS9GaWxlRW50cnkuY3BwCkBAIC0zNSw3ICszNSw3IEBACiAK
IG5hbWVzcGFjZSBXZWJDb3JlIHsKIAotRmlsZUVudHJ5OjpGaWxlRW50cnkoUGFzc1JlZlB0cjxE
T01GaWxlU3lzdGVtPiBmaWxlU3lzdGVtLCBjb25zdCBTdHJpbmcmIGZ1bGxQYXRoKQorRmlsZUVu
dHJ5OjpGaWxlRW50cnkoRE9NRmlsZVN5c3RlbSogZmlsZVN5c3RlbSwgY29uc3QgU3RyaW5nJiBm
dWxsUGF0aCkKICAgICA6IEVudHJ5KGZpbGVTeXN0ZW0sIGZ1bGxQYXRoKQogewogfQpkaWZmIC0t
Z2l0IGEvV2ViQ29yZS9zdG9yYWdlL0ZpbGVFbnRyeS5oIGIvV2ViQ29yZS9zdG9yYWdlL0ZpbGVF
bnRyeS5oCmluZGV4IGIwMmI1YzcwNDlhZjM3NjVjMmVkOWVmZmUzMTM1ZDYxOGNjMTMzN2YuLmFi
Y2M2YmI2NjlmZmNjNTBjYjk1NDlkOTg5MDY0MTdiMDdiMWEyNjYgMTAwNjQ0Ci0tLSBhL1dlYkNv
cmUvc3RvcmFnZS9GaWxlRW50cnkuaAorKysgYi9XZWJDb3JlL3N0b3JhZ2UvRmlsZUVudHJ5LmgK
QEAgLTM0LDkgKzM0LDYgQEAKICNpZiBFTkFCTEUoRklMRV9TWVNURU0pCiAKICNpbmNsdWRlICJF
bnRyeS5oIgotI2luY2x1ZGUgIlBsYXRmb3JtU3RyaW5nLmgiCi0jaW5jbHVkZSA8d3RmL1Bhc3NS
ZWZQdHIuaD4KLSNpbmNsdWRlIDx3dGYvUmVmQ291bnRlZC5oPgogCiBuYW1lc3BhY2UgV2ViQ29y
ZSB7CiAKQEAgLTQ0LDE0ICs0MSwxNCBAQCBjbGFzcyBET01GaWxlU3lzdGVtOwogCiBjbGFzcyBG
aWxlRW50cnkgOiBwdWJsaWMgRW50cnkgewogcHVibGljOgotICAgIHN0YXRpYyBQYXNzUmVmUHRy
PEZpbGVFbnRyeT4gY3JlYXRlKFBhc3NSZWZQdHI8RE9NRmlsZVN5c3RlbT4gZmlsZVN5c3RlbSwg
Y29uc3QgU3RyaW5nJiBmdWxsUGF0aCkKKyAgICBzdGF0aWMgUGFzc1JlZlB0cjxGaWxlRW50cnk+
IGNyZWF0ZShET01GaWxlU3lzdGVtKiBmaWxlU3lzdGVtLCBjb25zdCBTdHJpbmcmIGZ1bGxQYXRo
KQogICAgIHsKICAgICAgICAgcmV0dXJuIGFkb3B0UmVmKG5ldyBGaWxlRW50cnkoZmlsZVN5c3Rl
bSwgZnVsbFBhdGgpKTsKICAgICB9CiAgICAgdmlydHVhbCBib29sIGlzRmlsZSgpIGNvbnN0IHsg
cmV0dXJuIHRydWU7IH0KIAogcHJpdmF0ZToKLSAgICBGaWxlRW50cnkoUGFzc1JlZlB0cjxET01G
aWxlU3lzdGVtPiBmaWxlU3lzdGVtLCBjb25zdCBTdHJpbmcmIGZ1bGxQYXRoKTsKKyAgICBGaWxl
RW50cnkoRE9NRmlsZVN5c3RlbSogZmlsZVN5c3RlbSwgY29uc3QgU3RyaW5nJiBmdWxsUGF0aCk7
CiB9OwogCiB9IC8vIG5hbWVzcGFjZQpkaWZmIC0tZ2l0IGEvV2ViQ29yZS9zdG9yYWdlL0xvY2Fs
RmlsZVN5c3RlbS5jcHAgYi9XZWJDb3JlL3N0b3JhZ2UvTG9jYWxGaWxlU3lzdGVtLmNwcAppbmRl
eCAyODI1MDhlN2MwNzhlMTQ4YzIwOTM2MzhiNzUxN2VhYTg3YTA1NzU4Li4yYzk3MDRhNjlkN2Fl
NjM0MGQyNWI2NTQ1OWE5ODllMjk4MjcwZmU1IDEwMDY0NAotLS0gYS9XZWJDb3JlL3N0b3JhZ2Uv
TG9jYWxGaWxlU3lzdGVtLmNwcAorKysgYi9XZWJDb3JlL3N0b3JhZ2UvTG9jYWxGaWxlU3lzdGVt
LmNwcApAQCAtMzcsNyArMzcsOCBAQAogCiAjaWYgRU5BQkxFKEZJTEVfU1lTVEVNKQogCi0jaW5j
bHVkZSAiRE9NV2luZG93LmgiCisjaW5jbHVkZSAiQ3Jvc3NUaHJlYWRUYXNrLmgiCisjaW5jbHVk
ZSAiRE9NRmlsZVN5c3RlbS5oIgogI2luY2x1ZGUgIkVycm9yQ2FsbGJhY2suaCIKICNpbmNsdWRl
ICJFeGNlcHRpb25Db2RlLmgiCiAjaW5jbHVkZSAiRmlsZUVycm9yLmgiCkBAIC01NCwxNCArNTUs
MjAgQEAgUGFzc1JlZlB0cjxMb2NhbEZpbGVTeXN0ZW0+IExvY2FsRmlsZVN5c3RlbTo6Y3JlYXRl
KGNvbnN0IFN0cmluZyYgYmFzZVBhdGgpCiAgICAgcmV0dXJuIGFkb3B0UmVmKG5ldyBMb2NhbEZp
bGVTeXN0ZW0oYmFzZVBhdGgpKTsKIH0KIAorc3RhdGljIHZvaWQgb3BlbkZpbGVTeXN0ZW0oU2Ny
aXB0RXhlY3V0aW9uQ29udGV4dCosIGNvbnN0IFN0cmluZyYgYmFzZVBhdGgsIGNvbnN0IFN0cmlu
ZyYgaWRlbnRpZmllciwgQXN5bmNGaWxlU3lzdGVtOjpUeXBlIHR5cGUsIFBhc3NPd25QdHI8Rmls
ZVN5c3RlbUNhbGxiYWNrcz4gY2FsbGJhY2tzKQoreworICAgIEFzeW5jRmlsZVN5c3RlbTo6b3Bl
bkZpbGVTeXN0ZW0oYmFzZVBhdGgsIGlkZW50aWZpZXIsIHR5cGUsIGNhbGxiYWNrcyk7Cit9CisK
IHZvaWQgTG9jYWxGaWxlU3lzdGVtOjpyZXF1ZXN0RmlsZVN5c3RlbShTY3JpcHRFeGVjdXRpb25D
b250ZXh0KiBjb250ZXh0LCBBc3luY0ZpbGVTeXN0ZW06OlR5cGUgdHlwZSwgbG9uZyBsb25nLCBQ
YXNzUmVmUHRyPEZpbGVTeXN0ZW1DYWxsYmFjaz4gc3VjY2Vzc0NhbGxiYWNrLCBQYXNzUmVmUHRy
PEVycm9yQ2FsbGJhY2s+IGVycm9yQ2FsbGJhY2spCiB7CiAgICAgaWYgKHR5cGUgIT0gQXN5bmNG
aWxlU3lzdGVtOjpUZW1wb3JhcnkgJiYgdHlwZSAhPSBBc3luY0ZpbGVTeXN0ZW06OlBlcnNpc3Rl
bnQpIHsKLSAgICAgICAgZXJyb3JDYWxsYmFjay0+aGFuZGxlRXZlbnQoRmlsZUVycm9yOjpjcmVh
dGUoSU5WQUxJRF9NT0RJRklDQVRJT05fRVJSKS5nZXQoKSk7CisgICAgICAgIERPTUZpbGVTeXN0
ZW06OnNjaGVkdWxlQ2FsbGJhY2soY29udGV4dCwgZXJyb3JDYWxsYmFjaywgRmlsZUVycm9yOjpj
cmVhdGUoSU5WQUxJRF9NT0RJRklDQVRJT05fRVJSKSk7CiAgICAgICAgIHJldHVybjsKICAgICB9
CiAKLSAgICBBc3luY0ZpbGVTeXN0ZW06Om9wZW5GaWxlU3lzdGVtKG1fYmFzZVBhdGgsIGNvbnRl
eHQtPnNlY3VyaXR5T3JpZ2luKCktPmRhdGFiYXNlSWRlbnRpZmllcigpLCB0eXBlLCBuZXcgRmls
ZVN5c3RlbUNhbGxiYWNrcyhzdWNjZXNzQ2FsbGJhY2ssIGVycm9yQ2FsbGJhY2ssIGNvbnRleHQp
KTsKKyAgICAvLyBGSVhNRTogY2xlYW4gdXAgdGhpcy4KKyAgICBjb250ZXh0LT5wb3N0VGFzayhj
cmVhdGVDYWxsYmFja1Rhc2soJm9wZW5GaWxlU3lzdGVtLCBtX2Jhc2VQYXRoLCBjb250ZXh0LT5z
ZWN1cml0eU9yaWdpbigpLT5kYXRhYmFzZUlkZW50aWZpZXIoKSwgdHlwZSwgbmV3IEZpbGVTeXN0
ZW1DYWxsYmFja3Moc3VjY2Vzc0NhbGxiYWNrLCBlcnJvckNhbGxiYWNrLCBjb250ZXh0KSkpOwog
fQogCiB9IC8vIG5hbWVzcGFjZQpkaWZmIC0tZ2l0IGEvV2ViS2l0L2Nocm9taXVtL0NoYW5nZUxv
ZyBiL1dlYktpdC9jaHJvbWl1bS9DaGFuZ2VMb2cKaW5kZXggYTY0ZTFhOTgzYTc5NWUxYmFjMWY1
ZmFiMGEzNzdjOGI3MWUyYjA3Mi4uZjY3OTlkYTA4MmM5N2MxYzJmYzk0NDZlNThjMjVjNGQ5ZWJh
OGJjYSAxMDA2NDQKLS0tIGEvV2ViS2l0L2Nocm9taXVtL0NoYW5nZUxvZworKysgYi9XZWJLaXQv
Y2hyb21pdW0vQ2hhbmdlTG9nCkBAIC0xLDMgKzEsMjMgQEAKKzIwMTAtMDgtMzAgIEtpbnVrbyBZ
YXN1ZGEgIDxraW51a29AY2hyb21pdW0ub3NyYz4KKworICAgICAgICBSZXZpZXdlZCBieSBOT0JP
RFkgKE9PUFMhKS4KKworICAgICAgICBBZGQgRE9NRmlsZVN5c3RlbSBpbXBsZW1lbnRhdGlvbiB0
byBzdXBwb3J0IEVudHJ5IG1hbmlwdWxhdGlvbiBvcGVyYXRpb25zCisgICAgICAgIGh0dHBzOi8v
YnVncy53ZWJraXQub3JnL3Nob3dfYnVnLmNnaT9pZD00NDczMgorCisgICAgICAgIEZpeGVkIHZp
cnR1YWwtcGF0aCAvIHBsYXRmb3JtLXBhdGggY29udmVyc2lvbiB0aW1pbmcuIChUaGUgY29udmVy
c2lvbiBuZWVkcyB0byBiZSBkb25lIGJlZm9yZSBjYWxsaW5nIEFzeW5jRmlsZVN5c3RlbSBtZXRo
b2RzIHRvIHN1cHBvcnQgY3Jvc3MtZmlsZXN5c3RlbSBvcGVyYXRpb25zLikKKworICAgICAgICAq
IHNyYy9Bc3luY0ZpbGVTeXN0ZW1DaHJvbWl1bS5jcHA6CisgICAgICAgIChXZWJDb3JlOjpBc3lu
Y0ZpbGVTeXN0ZW1DaHJvbWl1bTo6bW92ZSk6CisgICAgICAgIChXZWJDb3JlOjpBc3luY0ZpbGVT
eXN0ZW1DaHJvbWl1bTo6Y29weSk6CisgICAgICAgIChXZWJDb3JlOjpBc3luY0ZpbGVTeXN0ZW1D
aHJvbWl1bTo6cmVtb3ZlKToKKyAgICAgICAgKFdlYkNvcmU6OkFzeW5jRmlsZVN5c3RlbUNocm9t
aXVtOjpyZWFkTWV0YWRhdGEpOgorICAgICAgICAoV2ViQ29yZTo6QXN5bmNGaWxlU3lzdGVtQ2hy
b21pdW06OmNyZWF0ZUZpbGUpOgorICAgICAgICAoV2ViQ29yZTo6QXN5bmNGaWxlU3lzdGVtQ2hy
b21pdW06OmNyZWF0ZURpcmVjdG9yeSk6CisgICAgICAgIChXZWJDb3JlOjpBc3luY0ZpbGVTeXN0
ZW1DaHJvbWl1bTo6ZmlsZUV4aXN0cyk6CisgICAgICAgIChXZWJDb3JlOjpBc3luY0ZpbGVTeXN0
ZW1DaHJvbWl1bTo6ZGlyZWN0b3J5RXhpc3RzKToKKyAgICAgICAgKFdlYkNvcmU6OkFzeW5jRmls
ZVN5c3RlbUNocm9taXVtOjpyZWFkRGlyZWN0b3J5KToKKwogMjAxMC0wOC0yNyAgS2ludWtvIFlh
c3VkYSAgPGtpbnVrb0BjaHJvbWl1bS5vcmc+CiAKICAgICAgICAgUmV2aWV3ZWQgYnkgRHVtaXRy
dSBEYW5pbGl1Yy4KZGlmZiAtLWdpdCBhL1dlYktpdC9jaHJvbWl1bS9zcmMvQXN5bmNGaWxlU3lz
dGVtQ2hyb21pdW0uY3BwIGIvV2ViS2l0L2Nocm9taXVtL3NyYy9Bc3luY0ZpbGVTeXN0ZW1DaHJv
bWl1bS5jcHAKaW5kZXggYzc4MzkxODliYjJkYjczMDJjMWY0YWExYzk0NjUwOGRjZTY4MmNlMi4u
MDhmY2VhNmM5ODVhYzMyMWQyOTE2YzNjMmUyZGE2ZmM4ZDQ4ZTgzZiAxMDA2NDQKLS0tIGEvV2Vi
S2l0L2Nocm9taXVtL3NyYy9Bc3luY0ZpbGVTeXN0ZW1DaHJvbWl1bS5jcHAKKysrIGIvV2ViS2l0
L2Nocm9taXVtL3NyYy9Bc3luY0ZpbGVTeXN0ZW1DaHJvbWl1bS5jcHAKQEAgLTU2LDQ3ICs1Niw0
NyBAQCBBc3luY0ZpbGVTeXN0ZW1DaHJvbWl1bTo6fkFzeW5jRmlsZVN5c3RlbUNocm9taXVtKCkK
IAogdm9pZCBBc3luY0ZpbGVTeXN0ZW1DaHJvbWl1bTo6bW92ZShjb25zdCBTdHJpbmcmIHNyY1Bh
dGgsIGNvbnN0IFN0cmluZyYgZGVzdFBhdGgsIFBhc3NPd25QdHI8QXN5bmNGaWxlU3lzdGVtQ2Fs
bGJhY2tzPiBjYWxsYmFja3MpCiB7Ci0gICAgbV93ZWJGaWxlU3lzdGVtLT5tb3ZlKHZpcnR1YWxU
b1BsYXRmb3JtUGF0aChzcmNQYXRoKSwgdmlydHVhbFRvUGxhdGZvcm1QYXRoKGRlc3RQYXRoKSwg
bmV3IFdlYktpdDo6V2ViRmlsZVN5c3RlbUNhbGxiYWNrc0ltcGwoY2FsbGJhY2tzKSk7CisgICAg
bV93ZWJGaWxlU3lzdGVtLT5tb3ZlKHNyY1BhdGgsIGRlc3RQYXRoLCBuZXcgV2ViS2l0OjpXZWJG
aWxlU3lzdGVtQ2FsbGJhY2tzSW1wbChjYWxsYmFja3MpKTsKIH0KIAogdm9pZCBBc3luY0ZpbGVT
eXN0ZW1DaHJvbWl1bTo6Y29weShjb25zdCBTdHJpbmcmIHNyY1BhdGgsIGNvbnN0IFN0cmluZyYg
ZGVzdFBhdGgsIFBhc3NPd25QdHI8QXN5bmNGaWxlU3lzdGVtQ2FsbGJhY2tzPiBjYWxsYmFja3Mp
CiB7Ci0gICAgbV93ZWJGaWxlU3lzdGVtLT5jb3B5KHZpcnR1YWxUb1BsYXRmb3JtUGF0aChzcmNQ
YXRoKSwgdmlydHVhbFRvUGxhdGZvcm1QYXRoKGRlc3RQYXRoKSwgbmV3IFdlYktpdDo6V2ViRmls
ZVN5c3RlbUNhbGxiYWNrc0ltcGwoY2FsbGJhY2tzKSk7CisgICAgbV93ZWJGaWxlU3lzdGVtLT5j
b3B5KHNyY1BhdGgsIGRlc3RQYXRoLCBuZXcgV2ViS2l0OjpXZWJGaWxlU3lzdGVtQ2FsbGJhY2tz
SW1wbChjYWxsYmFja3MpKTsKIH0KIAogdm9pZCBBc3luY0ZpbGVTeXN0ZW1DaHJvbWl1bTo6cmVt
b3ZlKGNvbnN0IFN0cmluZyYgcGF0aCwgUGFzc093blB0cjxBc3luY0ZpbGVTeXN0ZW1DYWxsYmFj
a3M+IGNhbGxiYWNrcykKIHsKLSAgICBtX3dlYkZpbGVTeXN0ZW0tPnJlbW92ZSh2aXJ0dWFsVG9Q
bGF0Zm9ybVBhdGgocGF0aCksIG5ldyBXZWJLaXQ6OldlYkZpbGVTeXN0ZW1DYWxsYmFja3NJbXBs
KGNhbGxiYWNrcykpOworICAgIG1fd2ViRmlsZVN5c3RlbS0+cmVtb3ZlKHBhdGgsIG5ldyBXZWJL
aXQ6OldlYkZpbGVTeXN0ZW1DYWxsYmFja3NJbXBsKGNhbGxiYWNrcykpOwogfQogCiB2b2lkIEFz
eW5jRmlsZVN5c3RlbUNocm9taXVtOjpyZWFkTWV0YWRhdGEoY29uc3QgU3RyaW5nJiBwYXRoLCBQ
YXNzT3duUHRyPEFzeW5jRmlsZVN5c3RlbUNhbGxiYWNrcz4gY2FsbGJhY2tzKQogewotICAgIG1f
d2ViRmlsZVN5c3RlbS0+cmVhZE1ldGFkYXRhKHZpcnR1YWxUb1BsYXRmb3JtUGF0aChwYXRoKSwg
bmV3IFdlYktpdDo6V2ViRmlsZVN5c3RlbUNhbGxiYWNrc0ltcGwoY2FsbGJhY2tzKSk7CisgICAg
bV93ZWJGaWxlU3lzdGVtLT5yZWFkTWV0YWRhdGEocGF0aCwgbmV3IFdlYktpdDo6V2ViRmlsZVN5
c3RlbUNhbGxiYWNrc0ltcGwoY2FsbGJhY2tzKSk7CiB9CiAKIHZvaWQgQXN5bmNGaWxlU3lzdGVt
Q2hyb21pdW06OmNyZWF0ZUZpbGUoY29uc3QgU3RyaW5nJiBwYXRoLCBib29sIGV4Y2x1c2l2ZSwg
UGFzc093blB0cjxBc3luY0ZpbGVTeXN0ZW1DYWxsYmFja3M+IGNhbGxiYWNrcykKIHsKLSAgICBt
X3dlYkZpbGVTeXN0ZW0tPmNyZWF0ZUZpbGUodmlydHVhbFRvUGxhdGZvcm1QYXRoKHBhdGgpLCBl
eGNsdXNpdmUsIG5ldyBXZWJLaXQ6OldlYkZpbGVTeXN0ZW1DYWxsYmFja3NJbXBsKGNhbGxiYWNr
cykpOworICAgIG1fd2ViRmlsZVN5c3RlbS0+Y3JlYXRlRmlsZShwYXRoLCBleGNsdXNpdmUsIG5l
dyBXZWJLaXQ6OldlYkZpbGVTeXN0ZW1DYWxsYmFja3NJbXBsKGNhbGxiYWNrcykpOwogfQogCiB2
b2lkIEFzeW5jRmlsZVN5c3RlbUNocm9taXVtOjpjcmVhdGVEaXJlY3RvcnkoY29uc3QgU3RyaW5n
JiBwYXRoLCBib29sIGV4Y2x1c2l2ZSwgUGFzc093blB0cjxBc3luY0ZpbGVTeXN0ZW1DYWxsYmFj
a3M+IGNhbGxiYWNrcykKIHsKLSAgICBtX3dlYkZpbGVTeXN0ZW0tPmNyZWF0ZURpcmVjdG9yeSh2
aXJ0dWFsVG9QbGF0Zm9ybVBhdGgocGF0aCksIGV4Y2x1c2l2ZSwgbmV3IFdlYktpdDo6V2ViRmls
ZVN5c3RlbUNhbGxiYWNrc0ltcGwoY2FsbGJhY2tzKSk7CisgICAgbV93ZWJGaWxlU3lzdGVtLT5j
cmVhdGVEaXJlY3RvcnkocGF0aCwgZXhjbHVzaXZlLCBuZXcgV2ViS2l0OjpXZWJGaWxlU3lzdGVt
Q2FsbGJhY2tzSW1wbChjYWxsYmFja3MpKTsKIH0KIAogdm9pZCBBc3luY0ZpbGVTeXN0ZW1DaHJv
bWl1bTo6ZmlsZUV4aXN0cyhjb25zdCBTdHJpbmcmIHBhdGgsIFBhc3NPd25QdHI8QXN5bmNGaWxl
U3lzdGVtQ2FsbGJhY2tzPiBjYWxsYmFja3MpCiB7Ci0gICAgbV93ZWJGaWxlU3lzdGVtLT5maWxl
RXhpc3RzKHZpcnR1YWxUb1BsYXRmb3JtUGF0aChwYXRoKSwgbmV3IFdlYktpdDo6V2ViRmlsZVN5
c3RlbUNhbGxiYWNrc0ltcGwoY2FsbGJhY2tzKSk7CisgICAgbV93ZWJGaWxlU3lzdGVtLT5maWxl
RXhpc3RzKHBhdGgsIG5ldyBXZWJLaXQ6OldlYkZpbGVTeXN0ZW1DYWxsYmFja3NJbXBsKGNhbGxi
YWNrcykpOwogfQogCiB2b2lkIEFzeW5jRmlsZVN5c3RlbUNocm9taXVtOjpkaXJlY3RvcnlFeGlz
dHMoY29uc3QgU3RyaW5nJiBwYXRoLCBQYXNzT3duUHRyPEFzeW5jRmlsZVN5c3RlbUNhbGxiYWNr
cz4gY2FsbGJhY2tzKQogewotICAgIG1fd2ViRmlsZVN5c3RlbS0+ZGlyZWN0b3J5RXhpc3RzKHZp
cnR1YWxUb1BsYXRmb3JtUGF0aChwYXRoKSwgbmV3IFdlYktpdDo6V2ViRmlsZVN5c3RlbUNhbGxi
YWNrc0ltcGwoY2FsbGJhY2tzKSk7CisgICAgbV93ZWJGaWxlU3lzdGVtLT5kaXJlY3RvcnlFeGlz
dHMocGF0aCwgbmV3IFdlYktpdDo6V2ViRmlsZVN5c3RlbUNhbGxiYWNrc0ltcGwoY2FsbGJhY2tz
KSk7CiB9CiAKIHZvaWQgQXN5bmNGaWxlU3lzdGVtQ2hyb21pdW06OnJlYWREaXJlY3RvcnkoY29u
c3QgU3RyaW5nJiBwYXRoLCBQYXNzT3duUHRyPEFzeW5jRmlsZVN5c3RlbUNhbGxiYWNrcz4gY2Fs
bGJhY2tzKQogewotICAgIG1fd2ViRmlsZVN5c3RlbS0+cmVhZERpcmVjdG9yeSh2aXJ0dWFsVG9Q
bGF0Zm9ybVBhdGgocGF0aCksIG5ldyBXZWJLaXQ6OldlYkZpbGVTeXN0ZW1DYWxsYmFja3NJbXBs
KGNhbGxiYWNrcykpOworICAgIG1fd2ViRmlsZVN5c3RlbS0+cmVhZERpcmVjdG9yeShwYXRoLCBu
ZXcgV2ViS2l0OjpXZWJGaWxlU3lzdGVtQ2FsbGJhY2tzSW1wbChjYWxsYmFja3MpKTsKIH0KIAog
fSAvLyBuYW1lc3BhY2UgV2ViQ29yZQo=
</data>
<flag name="review"
          id="54813"
          type_id="1"
          status="+"
          setter="fishd"
    />
    <flag name="commit-queue"
          id="54818"
          type_id="3"
          status="-"
          setter="fishd"
    />
          </attachment>
      

    </bug>

</bugzilla>