<?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>123318</bug_id>
          
          <creation_ts>2013-10-24 21:32:00 -0700</creation_ts>
          <short_desc>Move RenderBlock functions only used by RenderBlockFlow to RenderBlockFlow</short_desc>
          <delta_ts>2013-10-28 12:21:02 -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>New Bugs</component>
          <version>528+ (Nightly build)</version>
          <rep_platform>Unspecified</rep_platform>
          <op_sys>Unspecified</op_sys>
          <bug_status>RESOLVED</bug_status>
          <resolution>FIXED</resolution>
          
          
          <bug_file_loc></bug_file_loc>
          <status_whiteboard></status_whiteboard>
          <keywords></keywords>
          <priority>P2</priority>
          <bug_severity>Normal</bug_severity>
          <target_milestone>---</target_milestone>
          
          
          <everconfirmed>1</everconfirmed>
          <reporter name="Sam Weinig">sam</reporter>
          <assigned_to name="Sam Weinig">sam</assigned_to>
          <cc>commit-queue</cc>
    
    <cc>esprehn+autocc</cc>
    
    <cc>glenn</cc>
    
    <cc>kondapallykalyan</cc>
    
    <cc>WebkitBugTracker</cc>
          

      

      

      

          <comment_sort_order>oldest_to_newest</comment_sort_order>  
          <long_desc isprivate="0" >
    <commentid>943432</commentid>
    <comment_count>0</comment_count>
    <who name="Sam Weinig">sam</who>
    <bug_when>2013-10-24 21:32:00 -0700</bug_when>
    <thetext>Move RenderBlock functions only used by RenderBlockFlow to RenderBlockFlow</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>943433</commentid>
    <comment_count>1</comment_count>
      <attachid>215141</attachid>
    <who name="Sam Weinig">sam</who>
    <bug_when>2013-10-24 21:34:24 -0700</bug_when>
    <thetext>Created attachment 215141
Patch 1</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>943434</commentid>
    <comment_count>2</comment_count>
    <who name="WebKit Commit Bot">commit-queue</who>
    <bug_when>2013-10-24 21:36:54 -0700</bug_when>
    <thetext>Attachment 215141 did not pass style-queue:

Failed to run &quot;[&apos;Tools/Scripts/check-webkit-style&apos;, &apos;--diff-files&apos;, u&apos;Source/WebCore/ChangeLog&apos;, u&apos;Source/WebCore/rendering/LineLayoutState.h&apos;, u&apos;Source/WebCore/rendering/RenderBlock.cpp&apos;, u&apos;Source/WebCore/rendering/RenderBlock.h&apos;, u&apos;Source/WebCore/rendering/RenderBlockFlow.cpp&apos;, u&apos;Source/WebCore/rendering/RenderBlockFlow.h&apos;, u&apos;Source/WebCore/rendering/RenderBlockLineLayout.cpp&apos;]&quot; exit_code: 1
Source/WebCore/rendering/RenderBlockFlow.cpp:1649:  Should have only a single space after a punctuation in a comment.  [whitespace/comments] [5]
Total errors found: 1 in 6 files


If any of these errors are false positives, please file a bug against check-webkit-style.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>943667</commentid>
    <comment_count>3</comment_count>
      <attachid>215141</attachid>
    <who name="Dave Hyatt">hyatt</who>
    <bug_when>2013-10-25 11:06:40 -0700</bug_when>
    <thetext>Comment on attachment 215141
Patch 1

r=me</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>944181</commentid>
    <comment_count>4</comment_count>
    <who name="Sam Weinig">sam</who>
    <bug_when>2013-10-28 12:21:02 -0700</bug_when>
    <thetext>Committed r158121: &lt;http://trac.webkit.org/changeset/158121&gt;</thetext>
  </long_desc>
      
          <attachment
              isobsolete="0"
              ispatch="1"
              isprivate="0"
          >
            <attachid>215141</attachid>
            <date>2013-10-24 21:34:24 -0700</date>
            <delta_ts>2013-10-25 11:06:39 -0700</delta_ts>
            <desc>Patch 1</desc>
            <filename>bug-123318-20131024213424.patch</filename>
            <type>text/plain</type>
            <size>32351</size>
            <attacher name="Sam Weinig">sam</attacher>
            
              <data encoding="base64">SW5kZXg6IFNvdXJjZS9XZWJDb3JlL0NoYW5nZUxvZwo9PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2Vi
Q29yZS9DaGFuZ2VMb2cJKHJldmlzaW9uIDE1Nzk4OCkKKysrIFNvdXJjZS9XZWJDb3JlL0NoYW5n
ZUxvZwkod29ya2luZyBjb3B5KQpAQCAtMSwzICsxLDIwIEBACisyMDEzLTEwLTI0ICBTYW0gV2Vp
bmlnICA8c2FtQHdlYmtpdC5vcmc+CisKKyAgICAgICAgTW92ZSBSZW5kZXJCbG9jayBmdW5jdGlv
bnMgb25seSB1c2VkIGJ5IFJlbmRlckJsb2NrRmxvdyB0byBSZW5kZXJCbG9ja0Zsb3cKKyAgICAg
ICAgaHR0cHM6Ly9idWdzLndlYmtpdC5vcmcvc2hvd19idWcuY2dpP2lkPTEyMzMxOAorCisgICAg
ICAgIFJldmlld2VkIGJ5IE5PQk9EWSAoT09QUyEpLgorCisgICAgICAgICogcmVuZGVyaW5nL0xp
bmVMYXlvdXRTdGF0ZS5oOgorICAgICAgICBNb3ZlIEZsb2F0V2l0aFJlY3QgZnJvbSBSZW5kZXJC
bG9jay4KKworICAgICAgICAqIHJlbmRlcmluZy9SZW5kZXJCbG9jay5jcHA6CisgICAgICAgICog
cmVuZGVyaW5nL1JlbmRlckJsb2NrLmg6CisgICAgICAgICogcmVuZGVyaW5nL1JlbmRlckJsb2Nr
Rmxvdy5jcHA6CisgICAgICAgICogcmVuZGVyaW5nL1JlbmRlckJsb2NrRmxvdy5oOgorICAgICAg
ICAqIHJlbmRlcmluZy9SZW5kZXJCbG9ja0xpbmVMYXlvdXQuY3BwOgorICAgICAgICBNb3ZlIHBh
Z2luYXRpb24gYW5kIGZsb2F0IGZ1bmN0aW9ucy4KKwogMjAxMy0xMC0yNCAgTWFyayBSb3dlICA8
bXJvd2VAYXBwbGUuY29tPgogCiAgICAgICAgIFJlbW92ZSByZWZlcmVuY2VzIHRvIE9TIFggMTAu
NyBmcm9tIFhjb2RlIGNvbmZpZ3VyYXRpb24gc2V0dGluZ3MuCkluZGV4OiBTb3VyY2UvV2ViQ29y
ZS9yZW5kZXJpbmcvTGluZUxheW91dFN0YXRlLmgKPT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL1dlYkNv
cmUvcmVuZGVyaW5nL0xpbmVMYXlvdXRTdGF0ZS5oCShyZXZpc2lvbiAxNTc5ODQpCisrKyBTb3Vy
Y2UvV2ViQ29yZS9yZW5kZXJpbmcvTGluZUxheW91dFN0YXRlLmgJKHdvcmtpbmcgY29weSkKQEAg
LTM0LDggKzM0LDI0IEBACiAjaWZuZGVmIExpbmVMYXlvdXRTdGF0ZV9oCiAjZGVmaW5lIExpbmVM
YXlvdXRTdGF0ZV9oCiAKKyNpbmNsdWRlICJMYXlvdXRSZWN0LmgiCisjaW5jbHVkZSAiUmVuZGVy
Qm94LmgiCisKIG5hbWVzcGFjZSBXZWJDb3JlIHsKIAorc3RydWN0IEZsb2F0V2l0aFJlY3Qgewor
ICAgIEZsb2F0V2l0aFJlY3QoUmVuZGVyQm94JiBmKQorICAgICAgICA6IG9iamVjdChmKQorICAg
ICAgICAsIHJlY3QoTGF5b3V0UmVjdChmLngoKSAtIGYubWFyZ2luTGVmdCgpLCBmLnkoKSAtIGYu
bWFyZ2luVG9wKCksIGYud2lkdGgoKSArIGYubWFyZ2luV2lkdGgoKSwgZi5oZWlnaHQoKSArIGYu
bWFyZ2luSGVpZ2h0KCkpKQorICAgICAgICAsIGV2ZXJIYWRMYXlvdXQoZi5ldmVySGFkTGF5b3V0
KCkpCisgICAgeworICAgIH0KKworICAgIFJlbmRlckJveCYgb2JqZWN0OworICAgIExheW91dFJl
Y3QgcmVjdDsKKyAgICBib29sIGV2ZXJIYWRMYXlvdXQ7Cit9OworCiAvLyBMaWtlIExheW91dFN0
YXRlIGZvciBsYXlvdXQoKSwgTGluZUxheW91dFN0YXRlIGtlZXBzIHRyYWNrIG9mIGdsb2JhbCBp
bmZvcm1hdGlvbgogLy8gZHVyaW5nIGFuIGVudGlyZSBsaW5lYm94IHRyZWUgbGF5b3V0IHBhc3Mg
KGFrYSBsYXlvdXRJbmxpbmVDaGlsZHJlbikuCiBjbGFzcyBMaW5lTGF5b3V0U3RhdGUgewpAQCAt
NTMsNyArNjksOCBAQCBwdWJsaWM6CiAgICAgICAgICwgbV9jaGVja0ZvckZsb2F0c0Zyb21MYXN0
TGluZShmYWxzZSkKICAgICAgICAgLCBtX2lzRnVsbExheW91dChmdWxsTGF5b3V0KQogICAgICAg
ICAsIG1fdXNlc1JlcGFpbnRCb3VuZHMoZmFsc2UpCi0gICAgeyB9CisgICAgeworICAgIH0KIAog
ICAgIExpbmVJbmZvJiBsaW5lSW5mbygpIHsgcmV0dXJuIG1fbGluZUluZm87IH0KICAgICBjb25z
dCBMaW5lSW5mbyYgbGluZUluZm8oKSBjb25zdCB7IHJldHVybiBtX2xpbmVJbmZvOyB9CkBAIC02
Nyw3ICs4NCw3IEBAIHB1YmxpYzoKICAgICBGbG9hdGluZ09iamVjdCogbGFzdEZsb2F0KCkgY29u
c3QgeyByZXR1cm4gbV9sYXN0RmxvYXQ7IH0KICAgICB2b2lkIHNldExhc3RGbG9hdChGbG9hdGlu
Z09iamVjdCogbGFzdEZsb2F0KSB7IG1fbGFzdEZsb2F0ID0gbGFzdEZsb2F0OyB9CiAKLSAgICBW
ZWN0b3I8UmVuZGVyQmxvY2s6OkZsb2F0V2l0aFJlY3Q+JiBmbG9hdHMoKSB7IHJldHVybiBtX2Zs
b2F0czsgfQorICAgIFZlY3RvcjxGbG9hdFdpdGhSZWN0PiYgZmxvYXRzKCkgeyByZXR1cm4gbV9m
bG9hdHM7IH0KIAogICAgIHVuc2lnbmVkIGZsb2F0SW5kZXgoKSBjb25zdCB7IHJldHVybiBtX2Zs
b2F0SW5kZXg7IH0KICAgICB2b2lkIHNldEZsb2F0SW5kZXgodW5zaWduZWQgZmxvYXRJbmRleCkg
eyBtX2Zsb2F0SW5kZXggPSBmbG9hdEluZGV4OyB9CkBAIC0xMDgsNyArMTI1LDcgQEAgcHJpdmF0
ZToKICAgICBSb290SW5saW5lQm94KiBtX2VuZExpbmU7CiAKICAgICBGbG9hdGluZ09iamVjdCog
bV9sYXN0RmxvYXQ7Ci0gICAgVmVjdG9yPFJlbmRlckJsb2NrOjpGbG9hdFdpdGhSZWN0PiBtX2Zs
b2F0czsKKyAgICBWZWN0b3I8RmxvYXRXaXRoUmVjdD4gbV9mbG9hdHM7CiAgICAgdW5zaWduZWQg
bV9mbG9hdEluZGV4OwogCiAgICAgTGF5b3V0VW5pdCBtX2FkanVzdGVkTG9naWNhbExpbmVUb3A7
CkluZGV4OiBTb3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcvUmVuZGVyQmxvY2suY3BwCj09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT0KLS0tIFNvdXJjZS9XZWJDb3JlL3JlbmRlcmluZy9SZW5kZXJCbG9jay5jcHAJKHJldmlzaW9u
IDE1Nzk4NCkKKysrIFNvdXJjZS9XZWJDb3JlL3JlbmRlcmluZy9SZW5kZXJCbG9jay5jcHAJKHdv
cmtpbmcgY29weSkKQEAgLTI0NzQsMTkgKzI0NzQsNiBAQCB2b2lkIFJlbmRlckJsb2NrOjpwYWlu
dE9iamVjdChQYWludEluZm8mCiAgICAgfQogfQogCi1MYXlvdXRQb2ludCBSZW5kZXJCbG9jazo6
ZmxpcEZsb2F0Rm9yV3JpdGluZ01vZGVGb3JDaGlsZChjb25zdCBGbG9hdGluZ09iamVjdCogY2hp
bGQsIGNvbnN0IExheW91dFBvaW50JiBwb2ludCkgY29uc3QKLXsKLSAgICBpZiAoIXN0eWxlKCkt
PmlzRmxpcHBlZEJsb2Nrc1dyaXRpbmdNb2RlKCkpCi0gICAgICAgIHJldHVybiBwb2ludDsKLSAg
ICAKLSAgICAvLyBUaGlzIGlzIHNpbWlsYXIgdG8gUmVuZGVyQm94OjpmbGlwRm9yV3JpdGluZ01v
ZGVGb3JDaGlsZC4gV2UgaGF2ZSB0byBzdWJ0cmFjdCBvdXQgb3VyIGxlZnQvdG9wIG9mZnNldHMg
dHdpY2UsIHNpbmNlCi0gICAgLy8gaXQncyBnb2luZyB0byBnZXQgYWRkZWQgYmFjayBpbi4gV2Ug
aGlkZSB0aGlzIGNvbXBsaWNhdGlvbiBoZXJlIHNvIHRoYXQgdGhlIGNhbGxpbmcgY29kZSBsb29r
cyBub3JtYWwgZm9yIHRoZSB1bmZsaXBwZWQKLSAgICAvLyBjYXNlLgotICAgIGlmIChpc0hvcml6
b250YWxXcml0aW5nTW9kZSgpKQotICAgICAgICByZXR1cm4gTGF5b3V0UG9pbnQocG9pbnQueCgp
LCBwb2ludC55KCkgKyBoZWlnaHQoKSAtIGNoaWxkLT5yZW5kZXJlcigpLmhlaWdodCgpIC0gMiAq
IHlQb3NpdGlvbkZvckZsb2F0SW5jbHVkaW5nTWFyZ2luKGNoaWxkKSk7Ci0gICAgcmV0dXJuIExh
eW91dFBvaW50KHBvaW50LngoKSArIHdpZHRoKCkgLSBjaGlsZC0+cmVuZGVyZXIoKS53aWR0aCgp
IC0gMiAqIHhQb3NpdGlvbkZvckZsb2F0SW5jbHVkaW5nTWFyZ2luKGNoaWxkKSwgcG9pbnQueSgp
KTsKLX0KLQogUmVuZGVySW5saW5lKiBSZW5kZXJCbG9jazo6aW5saW5lRWxlbWVudENvbnRpbnVh
dGlvbigpIGNvbnN0CiB7IAogICAgIFJlbmRlckJveE1vZGVsT2JqZWN0KiBjb250aW51YXRpb24g
PSB0aGlzLT5jb250aW51YXRpb24oKTsKQEAgLTUwODMsMTU0ICs1MDcwLDEyIEBAIFJlbmRlckJv
eCogUmVuZGVyQmxvY2s6OmNyZWF0ZUFub255bW91c0IKICAgICByZXR1cm4gY3JlYXRlQW5vbnlt
b3VzV2l0aFBhcmVudFJlbmRlcmVyQW5kRGlzcGxheShwYXJlbnQsIHN0eWxlKCktPmRpc3BsYXko
KSk7CiB9CiAKLWJvb2wgUmVuZGVyQmxvY2s6Omhhc05leHRQYWdlKExheW91dFVuaXQgbG9naWNh
bE9mZnNldCwgUGFnZUJvdW5kYXJ5UnVsZSBwYWdlQm91bmRhcnlSdWxlKSBjb25zdAotewotICAg
IEFTU0VSVCh2aWV3KCkubGF5b3V0U3RhdGUoKSAmJiB2aWV3KCkubGF5b3V0U3RhdGUoKS0+aXNQ
YWdpbmF0ZWQoKSk7Ci0KLSAgICBSZW5kZXJGbG93VGhyZWFkKiBmbG93VGhyZWFkID0gZmxvd1Ro
cmVhZENvbnRhaW5pbmdCbG9jaygpOwotICAgIGlmICghZmxvd1RocmVhZCkKLSAgICAgICAgcmV0
dXJuIHRydWU7IC8vIFByaW50aW5nIGFuZCBtdWx0aS1jb2x1bW4gYm90aCBtYWtlIG5ldyBwYWdl
cyB0byBhY2NvbW1vZGF0ZSBjb250ZW50LgotCi0gICAgLy8gU2VlIGlmIHdlJ3JlIGluIHRoZSBs
YXN0IHJlZ2lvbi4KLSAgICBMYXlvdXRVbml0IHBhZ2VPZmZzZXQgPSBvZmZzZXRGcm9tTG9naWNh
bFRvcE9mRmlyc3RQYWdlKCkgKyBsb2dpY2FsT2Zmc2V0OwotICAgIFJlbmRlclJlZ2lvbiogcmVn
aW9uID0gZmxvd1RocmVhZC0+cmVnaW9uQXRCbG9ja09mZnNldCh0aGlzLCBwYWdlT2Zmc2V0LCB0
aGlzKTsKLSAgICBpZiAoIXJlZ2lvbikKLSAgICAgICAgcmV0dXJuIGZhbHNlOwotICAgIGlmIChy
ZWdpb24tPmlzTGFzdFJlZ2lvbigpKQotICAgICAgICByZXR1cm4gcmVnaW9uLT5pc1JlbmRlclJl
Z2lvblNldCgpIHx8IHJlZ2lvbi0+c3R5bGUoKS0+cmVnaW9uRnJhZ21lbnQoKSA9PSBCcmVha1Jl
Z2lvbkZyYWdtZW50Ci0gICAgICAgICAgICB8fCAocGFnZUJvdW5kYXJ5UnVsZSA9PSBJbmNsdWRl
UGFnZUJvdW5kYXJ5ICYmIHBhZ2VPZmZzZXQgPT0gcmVnaW9uLT5sb2dpY2FsVG9wRm9yRmxvd1Ro
cmVhZENvbnRlbnQoKSk7Ci0gICAgcmV0dXJuIHRydWU7Ci19Ci0KLUxheW91dFVuaXQgUmVuZGVy
QmxvY2s6Om5leHRQYWdlTG9naWNhbFRvcChMYXlvdXRVbml0IGxvZ2ljYWxPZmZzZXQsIFBhZ2VC
b3VuZGFyeVJ1bGUgcGFnZUJvdW5kYXJ5UnVsZSkgY29uc3QKLXsKLSAgICBMYXlvdXRVbml0IHBh
Z2VMb2dpY2FsSGVpZ2h0ID0gcGFnZUxvZ2ljYWxIZWlnaHRGb3JPZmZzZXQobG9naWNhbE9mZnNl
dCk7Ci0gICAgaWYgKCFwYWdlTG9naWNhbEhlaWdodCkKLSAgICAgICAgcmV0dXJuIGxvZ2ljYWxP
ZmZzZXQ7Ci0gICAgCi0gICAgLy8gVGhlIGxvZ2ljYWxPZmZzZXQgaXMgaW4gb3VyIGNvb3JkaW5h
dGUgc3BhY2UuICBXZSBjYW4gYWRkIGluIG91ciBwdXNoZWQgb2Zmc2V0LgotICAgIExheW91dFVu
aXQgcmVtYWluaW5nTG9naWNhbEhlaWdodCA9IHBhZ2VSZW1haW5pbmdMb2dpY2FsSGVpZ2h0Rm9y
T2Zmc2V0KGxvZ2ljYWxPZmZzZXQpOwotICAgIGlmIChwYWdlQm91bmRhcnlSdWxlID09IEV4Y2x1
ZGVQYWdlQm91bmRhcnkpCi0gICAgICAgIHJldHVybiBsb2dpY2FsT2Zmc2V0ICsgKHJlbWFpbmlu
Z0xvZ2ljYWxIZWlnaHQgPyByZW1haW5pbmdMb2dpY2FsSGVpZ2h0IDogcGFnZUxvZ2ljYWxIZWln
aHQpOwotICAgIHJldHVybiBsb2dpY2FsT2Zmc2V0ICsgcmVtYWluaW5nTG9naWNhbEhlaWdodDsK
LX0KIAogQ29sdW1uSW5mbzo6UGFnaW5hdGlvblVuaXQgUmVuZGVyQmxvY2s6OnBhZ2luYXRpb25V
bml0KCkgY29uc3QKIHsKICAgICByZXR1cm4gQ29sdW1uSW5mbzo6Q29sdW1uOwogfQogCi1MYXlv
dXRVbml0IFJlbmRlckJsb2NrOjpwYWdlTG9naWNhbFRvcEZvck9mZnNldChMYXlvdXRVbml0IG9m
ZnNldCkgY29uc3QKLXsKLSAgICBMYXlvdXRVbml0IGZpcnN0UGFnZUxvZ2ljYWxUb3AgPSBpc0hv
cml6b250YWxXcml0aW5nTW9kZSgpID8gdmlldygpLmxheW91dFN0YXRlKCktPm1fcGFnZU9mZnNl
dC5oZWlnaHQoKSA6IHZpZXcoKS5sYXlvdXRTdGF0ZSgpLT5tX3BhZ2VPZmZzZXQud2lkdGgoKTsK
LSAgICBMYXlvdXRVbml0IGJsb2NrTG9naWNhbFRvcCA9IGlzSG9yaXpvbnRhbFdyaXRpbmdNb2Rl
KCkgPyB2aWV3KCkubGF5b3V0U3RhdGUoKS0+bV9sYXlvdXRPZmZzZXQuaGVpZ2h0KCkgOiB2aWV3
KCkubGF5b3V0U3RhdGUoKS0+bV9sYXlvdXRPZmZzZXQud2lkdGgoKTsKLQotICAgIExheW91dFVu
aXQgY3VtdWxhdGl2ZU9mZnNldCA9IG9mZnNldCArIGJsb2NrTG9naWNhbFRvcDsKLSAgICBSZW5k
ZXJGbG93VGhyZWFkKiBmbG93VGhyZWFkID0gZmxvd1RocmVhZENvbnRhaW5pbmdCbG9jaygpOwot
ICAgIGlmICghZmxvd1RocmVhZCkgewotICAgICAgICBMYXlvdXRVbml0IHBhZ2VMb2dpY2FsSGVp
Z2h0ID0gdmlldygpLmxheW91dFN0YXRlKCktPnBhZ2VMb2dpY2FsSGVpZ2h0KCk7Ci0gICAgICAg
IGlmICghcGFnZUxvZ2ljYWxIZWlnaHQpCi0gICAgICAgICAgICByZXR1cm4gMDsKLSAgICAgICAg
cmV0dXJuIGN1bXVsYXRpdmVPZmZzZXQgLSByb3VuZFRvSW50KGN1bXVsYXRpdmVPZmZzZXQgLSBm
aXJzdFBhZ2VMb2dpY2FsVG9wKSAlIHJvdW5kVG9JbnQocGFnZUxvZ2ljYWxIZWlnaHQpOwotICAg
IH0KLSAgICByZXR1cm4gZmxvd1RocmVhZC0+cGFnZUxvZ2ljYWxUb3BGb3JPZmZzZXQoY3VtdWxh
dGl2ZU9mZnNldCk7Ci19Ci0KLUxheW91dFVuaXQgUmVuZGVyQmxvY2s6OnBhZ2VMb2dpY2FsSGVp
Z2h0Rm9yT2Zmc2V0KExheW91dFVuaXQgb2Zmc2V0KSBjb25zdAotewotICAgIFJlbmRlckZsb3dU
aHJlYWQqIGZsb3dUaHJlYWQgPSBmbG93VGhyZWFkQ29udGFpbmluZ0Jsb2NrKCk7Ci0gICAgaWYg
KCFmbG93VGhyZWFkKQotICAgICAgICByZXR1cm4gdmlldygpLmxheW91dFN0YXRlKCktPm1fcGFn
ZUxvZ2ljYWxIZWlnaHQ7Ci0gICAgcmV0dXJuIGZsb3dUaHJlYWQtPnBhZ2VMb2dpY2FsSGVpZ2h0
Rm9yT2Zmc2V0KG9mZnNldCArIG9mZnNldEZyb21Mb2dpY2FsVG9wT2ZGaXJzdFBhZ2UoKSk7Ci19
Ci0KLUxheW91dFVuaXQgUmVuZGVyQmxvY2s6OnBhZ2VSZW1haW5pbmdMb2dpY2FsSGVpZ2h0Rm9y
T2Zmc2V0KExheW91dFVuaXQgb2Zmc2V0LCBQYWdlQm91bmRhcnlSdWxlIHBhZ2VCb3VuZGFyeVJ1
bGUpIGNvbnN0Ci17Ci0gICAgb2Zmc2V0ICs9IG9mZnNldEZyb21Mb2dpY2FsVG9wT2ZGaXJzdFBh
Z2UoKTsKLSAgICAKLSAgICBSZW5kZXJGbG93VGhyZWFkKiBmbG93VGhyZWFkID0gZmxvd1RocmVh
ZENvbnRhaW5pbmdCbG9jaygpOwotICAgIGlmICghZmxvd1RocmVhZCkgewotICAgICAgICBMYXlv
dXRVbml0IHBhZ2VMb2dpY2FsSGVpZ2h0ID0gdmlldygpLmxheW91dFN0YXRlKCktPm1fcGFnZUxv
Z2ljYWxIZWlnaHQ7Ci0gICAgICAgIExheW91dFVuaXQgcmVtYWluaW5nSGVpZ2h0ID0gcGFnZUxv
Z2ljYWxIZWlnaHQgLSBpbnRNb2Qob2Zmc2V0LCBwYWdlTG9naWNhbEhlaWdodCk7Ci0gICAgICAg
IGlmIChwYWdlQm91bmRhcnlSdWxlID09IEluY2x1ZGVQYWdlQm91bmRhcnkpIHsKLSAgICAgICAg
ICAgIC8vIElmIGluY2x1ZGVCb3VuZGFyeVBvaW50IGlzIHRydWUgdGhlIGxpbmUgZXhhY3RseSBv
biB0aGUgdG9wIGVkZ2Ugb2YgYQotICAgICAgICAgICAgLy8gY29sdW1uIHdpbGwgYWN0IGFzIGJl
aW5nIHBhcnQgb2YgdGhlIHByZXZpb3VzIGNvbHVtbi4KLSAgICAgICAgICAgIHJlbWFpbmluZ0hl
aWdodCA9IGludE1vZChyZW1haW5pbmdIZWlnaHQsIHBhZ2VMb2dpY2FsSGVpZ2h0KTsKLSAgICAg
ICAgfQotICAgICAgICByZXR1cm4gcmVtYWluaW5nSGVpZ2h0OwotICAgIH0KLSAgICAKLSAgICBy
ZXR1cm4gZmxvd1RocmVhZC0+cGFnZVJlbWFpbmluZ0xvZ2ljYWxIZWlnaHRGb3JPZmZzZXQob2Zm
c2V0LCBwYWdlQm91bmRhcnlSdWxlKTsKLX0KLQotTGF5b3V0VW5pdCBSZW5kZXJCbG9jazo6YWRq
dXN0Rm9yVW5zcGxpdHRhYmxlQ2hpbGQoUmVuZGVyQm94JiBjaGlsZCwgTGF5b3V0VW5pdCBsb2dp
Y2FsT2Zmc2V0LCBib29sIGluY2x1ZGVNYXJnaW5zKQotewotICAgIGJvb2wgY2hlY2tDb2x1bW5C
cmVha3MgPSB2aWV3KCkubGF5b3V0U3RhdGUoKS0+aXNQYWdpbmF0aW5nQ29sdW1ucygpOwotICAg
IGJvb2wgY2hlY2tQYWdlQnJlYWtzID0gIWNoZWNrQ29sdW1uQnJlYWtzICYmIHZpZXcoKS5sYXlv
dXRTdGF0ZSgpLT5tX3BhZ2VMb2dpY2FsSGVpZ2h0OwotICAgIFJlbmRlckZsb3dUaHJlYWQqIGZs
b3dUaHJlYWQgPSBmbG93VGhyZWFkQ29udGFpbmluZ0Jsb2NrKCk7Ci0gICAgYm9vbCBjaGVja1Jl
Z2lvbkJyZWFrcyA9IGZsb3dUaHJlYWQgJiYgZmxvd1RocmVhZC0+aXNSZW5kZXJOYW1lZEZsb3dU
aHJlYWQoKTsKLSAgICBib29sIGlzVW5zcGxpdHRhYmxlID0gY2hpbGQuaXNVbnNwbGl0dGFibGVG
b3JQYWdpbmF0aW9uKCkgfHwgKGNoZWNrQ29sdW1uQnJlYWtzICYmIGNoaWxkLnN0eWxlKCktPmNv
bHVtbkJyZWFrSW5zaWRlKCkgPT0gUEJBVk9JRCkKLSAgICAgICAgfHwgKGNoZWNrUGFnZUJyZWFr
cyAmJiBjaGlsZC5zdHlsZSgpLT5wYWdlQnJlYWtJbnNpZGUoKSA9PSBQQkFWT0lEKQotICAgICAg
ICB8fCAoY2hlY2tSZWdpb25CcmVha3MgJiYgY2hpbGQuc3R5bGUoKS0+cmVnaW9uQnJlYWtJbnNp
ZGUoKSA9PSBQQkFWT0lEKTsKLSAgICBpZiAoIWlzVW5zcGxpdHRhYmxlKQotICAgICAgICByZXR1
cm4gbG9naWNhbE9mZnNldDsKLSAgICBMYXlvdXRVbml0IGNoaWxkTG9naWNhbEhlaWdodCA9IGxv
Z2ljYWxIZWlnaHRGb3JDaGlsZChjaGlsZCkgKyAoaW5jbHVkZU1hcmdpbnMgPyBtYXJnaW5CZWZv
cmVGb3JDaGlsZChjaGlsZCkgKyBtYXJnaW5BZnRlckZvckNoaWxkKGNoaWxkKSA6IExheW91dFVu
aXQoKSk7Ci0gICAgTGF5b3V0VW5pdCBwYWdlTG9naWNhbEhlaWdodCA9IHBhZ2VMb2dpY2FsSGVp
Z2h0Rm9yT2Zmc2V0KGxvZ2ljYWxPZmZzZXQpOwotICAgIGJvb2wgaGFzVW5pZm9ybVBhZ2VMb2dp
Y2FsSGVpZ2h0ID0gIWZsb3dUaHJlYWQgfHwgZmxvd1RocmVhZC0+cmVnaW9uc0hhdmVVbmlmb3Jt
TG9naWNhbEhlaWdodCgpOwotICAgIHVwZGF0ZU1pbmltdW1QYWdlSGVpZ2h0KGxvZ2ljYWxPZmZz
ZXQsIGNoaWxkTG9naWNhbEhlaWdodCk7Ci0gICAgaWYgKCFwYWdlTG9naWNhbEhlaWdodCB8fCAo
aGFzVW5pZm9ybVBhZ2VMb2dpY2FsSGVpZ2h0ICYmIGNoaWxkTG9naWNhbEhlaWdodCA+IHBhZ2VM
b2dpY2FsSGVpZ2h0KQotICAgICAgICB8fCAhaGFzTmV4dFBhZ2UobG9naWNhbE9mZnNldCkpCi0g
ICAgICAgIHJldHVybiBsb2dpY2FsT2Zmc2V0OwotICAgIExheW91dFVuaXQgcmVtYWluaW5nTG9n
aWNhbEhlaWdodCA9IHBhZ2VSZW1haW5pbmdMb2dpY2FsSGVpZ2h0Rm9yT2Zmc2V0KGxvZ2ljYWxP
ZmZzZXQsIEV4Y2x1ZGVQYWdlQm91bmRhcnkpOwotICAgIGlmIChyZW1haW5pbmdMb2dpY2FsSGVp
Z2h0IDwgY2hpbGRMb2dpY2FsSGVpZ2h0KSB7Ci0gICAgICAgIGlmICghaGFzVW5pZm9ybVBhZ2VM
b2dpY2FsSGVpZ2h0ICYmICFwdXNoVG9OZXh0UGFnZVdpdGhNaW5pbXVtTG9naWNhbEhlaWdodChy
ZW1haW5pbmdMb2dpY2FsSGVpZ2h0LCBsb2dpY2FsT2Zmc2V0LCBjaGlsZExvZ2ljYWxIZWlnaHQp
KQotICAgICAgICAgICAgcmV0dXJuIGxvZ2ljYWxPZmZzZXQ7Ci0gICAgICAgIHJldHVybiBsb2dp
Y2FsT2Zmc2V0ICsgcmVtYWluaW5nTG9naWNhbEhlaWdodDsKLSAgICB9Ci0gICAgcmV0dXJuIGxv
Z2ljYWxPZmZzZXQ7Ci19Ci0KLWJvb2wgUmVuZGVyQmxvY2s6OnB1c2hUb05leHRQYWdlV2l0aE1p
bmltdW1Mb2dpY2FsSGVpZ2h0KExheW91dFVuaXQmIGFkanVzdG1lbnQsIExheW91dFVuaXQgbG9n
aWNhbE9mZnNldCwgTGF5b3V0VW5pdCBtaW5pbXVtTG9naWNhbEhlaWdodCkgY29uc3QKLXsKLSAg
ICBib29sIGNoZWNrUmVnaW9uID0gZmFsc2U7Ci0gICAgZm9yIChMYXlvdXRVbml0IHBhZ2VMb2dp
Y2FsSGVpZ2h0ID0gcGFnZUxvZ2ljYWxIZWlnaHRGb3JPZmZzZXQobG9naWNhbE9mZnNldCArIGFk
anVzdG1lbnQpOyBwYWdlTG9naWNhbEhlaWdodDsKLSAgICAgICAgcGFnZUxvZ2ljYWxIZWlnaHQg
PSBwYWdlTG9naWNhbEhlaWdodEZvck9mZnNldChsb2dpY2FsT2Zmc2V0ICsgYWRqdXN0bWVudCkp
IHsKLSAgICAgICAgaWYgKG1pbmltdW1Mb2dpY2FsSGVpZ2h0IDw9IHBhZ2VMb2dpY2FsSGVpZ2h0
KQotICAgICAgICAgICAgcmV0dXJuIHRydWU7Ci0gICAgICAgIGlmICghaGFzTmV4dFBhZ2UobG9n
aWNhbE9mZnNldCArIGFkanVzdG1lbnQpKQotICAgICAgICAgICAgcmV0dXJuIGZhbHNlOwotICAg
ICAgICBhZGp1c3RtZW50ICs9IHBhZ2VMb2dpY2FsSGVpZ2h0OwotICAgICAgICBjaGVja1JlZ2lv
biA9IHRydWU7Ci0gICAgfQotICAgIHJldHVybiAhY2hlY2tSZWdpb247Ci19Ci0KLXZvaWQgUmVu
ZGVyQmxvY2s6OnNldFBhZ2VCcmVhayhMYXlvdXRVbml0IG9mZnNldCwgTGF5b3V0VW5pdCBzcGFj
ZVNob3J0YWdlKQotewotICAgIGlmIChSZW5kZXJGbG93VGhyZWFkKiBmbG93VGhyZWFkID0gZmxv
d1RocmVhZENvbnRhaW5pbmdCbG9jaygpKQotICAgICAgICBmbG93VGhyZWFkLT5zZXRQYWdlQnJl
YWsodGhpcywgb2Zmc2V0RnJvbUxvZ2ljYWxUb3BPZkZpcnN0UGFnZSgpICsgb2Zmc2V0LCBzcGFj
ZVNob3J0YWdlKTsKLX0KLQotdm9pZCBSZW5kZXJCbG9jazo6dXBkYXRlTWluaW11bVBhZ2VIZWln
aHQoTGF5b3V0VW5pdCBvZmZzZXQsIExheW91dFVuaXQgbWluSGVpZ2h0KQotewotICAgIGlmIChS
ZW5kZXJGbG93VGhyZWFkKiBmbG93VGhyZWFkID0gZmxvd1RocmVhZENvbnRhaW5pbmdCbG9jaygp
KQotICAgICAgICBmbG93VGhyZWFkLT51cGRhdGVNaW5pbXVtUGFnZUhlaWdodCh0aGlzLCBvZmZz
ZXRGcm9tTG9naWNhbFRvcE9mRmlyc3RQYWdlKCkgKyBvZmZzZXQsIG1pbkhlaWdodCk7Ci0gICAg
ZWxzZSBpZiAoQ29sdW1uSW5mbyogY29sSW5mbyA9IHZpZXcoKS5sYXlvdXRTdGF0ZSgpLT5tX2Nv
bHVtbkluZm8pCi0gICAgICAgIGNvbEluZm8tPnVwZGF0ZU1pbmltdW1Db2x1bW5IZWlnaHQobWlu
SGVpZ2h0KTsKLX0KLQotYm9vbCBSZW5kZXJCbG9jazo6bGluZVdpZHRoRm9yUGFnaW5hdGVkTGlu
ZUNoYW5nZWQoUm9vdElubGluZUJveCogcm9vdEJveCwgTGF5b3V0VW5pdCBsaW5lRGVsdGEsIFJl
bmRlckZsb3dUaHJlYWQqIGZsb3dUaHJlYWQpIGNvbnN0Ci17Ci0gICAgaWYgKCFmbG93VGhyZWFk
KQotICAgICAgICByZXR1cm4gZmFsc2U7Ci0KLSAgICBSZW5kZXJSZWdpb24qIGN1cnJlbnRSZWdp
b24gPSByZWdpb25BdEJsb2NrT2Zmc2V0KHJvb3RCb3gtPmxpbmVUb3BXaXRoTGVhZGluZygpICsg
bGluZURlbHRhKTsKLSAgICAvLyBKdXN0IGJhaWwgaWYgdGhlIHJlZ2lvbiBkaWRuJ3QgY2hhbmdl
LgotICAgIGlmIChyb290Qm94LT5jb250YWluaW5nUmVnaW9uKCkgPT0gY3VycmVudFJlZ2lvbikK
LSAgICAgICAgcmV0dXJuIGZhbHNlOwotICAgIHJldHVybiByb290Qm94LT5wYWdpbmF0ZWRMaW5l
V2lkdGgoKSAhPSBhdmFpbGFibGVMb2dpY2FsV2lkdGhGb3JDb250ZW50KGN1cnJlbnRSZWdpb24p
OwotfQotCiBMYXlvdXRVbml0IFJlbmRlckJsb2NrOjpvZmZzZXRGcm9tTG9naWNhbFRvcE9mRmly
c3RQYWdlKCkgY29uc3QKIHsKICAgICBMYXlvdXRTdGF0ZSogbGF5b3V0U3RhdGUgPSB2aWV3KCku
bGF5b3V0U3RhdGUoKTsKSW5kZXg6IFNvdXJjZS9XZWJDb3JlL3JlbmRlcmluZy9SZW5kZXJCbG9j
ay5oCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9XZWJDb3JlL3JlbmRlcmluZy9SZW5kZXJCbG9jay5o
CShyZXZpc2lvbiAxNTc5ODQpCisrKyBTb3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcvUmVuZGVyQmxv
Y2suaAkod29ya2luZyBjb3B5KQpAQCAtMzI3LDEzICszMjcsMTQgQEAgcHVibGljOgogCiAgICAg
dmlydHVhbCB2b2lkIHVwZGF0ZUZpcnN0TGV0dGVyKCk7CiAKLSAgICB2aXJ0dWFsIHZvaWQgc2Ny
b2xsYmFyc0NoYW5nZWQoYm9vbCAvKmhvcml6b250YWxTY3JvbGxiYXJDaGFuZ2VkKi8sIGJvb2wg
Lyp2ZXJ0aWNhbFNjcm9sbGJhckNoYW5nZWQqLykgeyB9OworICAgIHZpcnR1YWwgdm9pZCBzY3Jv
bGxiYXJzQ2hhbmdlZChib29sIC8qaG9yaXpvbnRhbFNjcm9sbGJhckNoYW5nZWQqLywgYm9vbCAv
KnZlcnRpY2FsU2Nyb2xsYmFyQ2hhbmdlZCovKSB7IH0KIAogICAgIExheW91dFVuaXQgbG9naWNh
bExlZnRPZmZzZXRGb3JDb250ZW50KFJlbmRlclJlZ2lvbiopIGNvbnN0OwogICAgIExheW91dFVu
aXQgbG9naWNhbFJpZ2h0T2Zmc2V0Rm9yQ29udGVudChSZW5kZXJSZWdpb24qKSBjb25zdDsKICAg
ICBMYXlvdXRVbml0IGF2YWlsYWJsZUxvZ2ljYWxXaWR0aEZvckNvbnRlbnQoUmVuZGVyUmVnaW9u
KiByZWdpb24pIGNvbnN0CiAgICAgeyAKLSAgICAgICAgcmV0dXJuIHN0ZDo6bWF4PExheW91dFVu
aXQ+KDAsIGxvZ2ljYWxSaWdodE9mZnNldEZvckNvbnRlbnQocmVnaW9uKSAtIGxvZ2ljYWxMZWZ0
T2Zmc2V0Rm9yQ29udGVudChyZWdpb24pKTsgfQorICAgICAgICByZXR1cm4gc3RkOjptYXg8TGF5
b3V0VW5pdD4oMCwgbG9naWNhbFJpZ2h0T2Zmc2V0Rm9yQ29udGVudChyZWdpb24pIC0gbG9naWNh
bExlZnRPZmZzZXRGb3JDb250ZW50KHJlZ2lvbikpOworICAgIH0KICAgICBMYXlvdXRVbml0IHN0
YXJ0T2Zmc2V0Rm9yQ29udGVudChSZW5kZXJSZWdpb24qIHJlZ2lvbikgY29uc3QKICAgICB7CiAg
ICAgICAgIHJldHVybiBzdHlsZSgpLT5pc0xlZnRUb1JpZ2h0RGlyZWN0aW9uKCkgPyBsb2dpY2Fs
TGVmdE9mZnNldEZvckNvbnRlbnQocmVnaW9uKSA6IGxvZ2ljYWxXaWR0aCgpIC0gbG9naWNhbFJp
Z2h0T2Zmc2V0Rm9yQ29udGVudChyZWdpb24pOwpAQCAtNTUxLDM3ICs1NTIsNiBAQCBwcml2YXRl
OgogCiAgICAgTm9kZSogbm9kZUZvckhpdFRlc3QoKSBjb25zdDsKIAotICAgIHN0cnVjdCBGbG9h
dFdpdGhSZWN0IHsKLSAgICAgICAgRmxvYXRXaXRoUmVjdChSZW5kZXJCb3gmIGYpCi0gICAgICAg
ICAgICA6IG9iamVjdChmKQotICAgICAgICAgICAgLCByZWN0KExheW91dFJlY3QoZi54KCkgLSBm
Lm1hcmdpbkxlZnQoKSwgZi55KCkgLSBmLm1hcmdpblRvcCgpLCBmLndpZHRoKCkgKyBmLm1hcmdp
bldpZHRoKCksIGYuaGVpZ2h0KCkgKyBmLm1hcmdpbkhlaWdodCgpKSkKLSAgICAgICAgICAgICwg
ZXZlckhhZExheW91dChmLmV2ZXJIYWRMYXlvdXQoKSkKLSAgICAgICAgewotICAgICAgICB9Ci0K
LSAgICAgICAgUmVuZGVyQm94JiBvYmplY3Q7Ci0gICAgICAgIExheW91dFJlY3QgcmVjdDsKLSAg
ICAgICAgYm9vbCBldmVySGFkTGF5b3V0OwotICAgIH07Ci0KLSAgICBMYXlvdXRQb2ludCBmbGlw
RmxvYXRGb3JXcml0aW5nTW9kZUZvckNoaWxkKGNvbnN0IEZsb2F0aW5nT2JqZWN0KiwgY29uc3Qg
TGF5b3V0UG9pbnQmKSBjb25zdDsKLQotICAgIExheW91dFVuaXQgeFBvc2l0aW9uRm9yRmxvYXRJ
bmNsdWRpbmdNYXJnaW4oY29uc3QgRmxvYXRpbmdPYmplY3QqIGNoaWxkKSBjb25zdAotICAgIHsK
LSAgICAgICAgaWYgKGlzSG9yaXpvbnRhbFdyaXRpbmdNb2RlKCkpCi0gICAgICAgICAgICByZXR1
cm4gY2hpbGQtPngoKSArIGNoaWxkLT5yZW5kZXJlcigpLm1hcmdpbkxlZnQoKTsKLSAgICAgICAg
ZWxzZQotICAgICAgICAgICAgcmV0dXJuIGNoaWxkLT54KCkgKyBtYXJnaW5CZWZvcmVGb3JDaGls
ZChjaGlsZC0+cmVuZGVyZXIoKSk7Ci0gICAgfQotICAgICAgICAKLSAgICBMYXlvdXRVbml0IHlQ
b3NpdGlvbkZvckZsb2F0SW5jbHVkaW5nTWFyZ2luKGNvbnN0IEZsb2F0aW5nT2JqZWN0KiBjaGls
ZCkgY29uc3QKLSAgICB7Ci0gICAgICAgIGlmIChpc0hvcml6b250YWxXcml0aW5nTW9kZSgpKQot
ICAgICAgICAgICAgcmV0dXJuIGNoaWxkLT55KCkgKyBtYXJnaW5CZWZvcmVGb3JDaGlsZChjaGls
ZC0+cmVuZGVyZXIoKSk7Ci0gICAgICAgIGVsc2UKLSAgICAgICAgICAgIHJldHVybiBjaGlsZC0+
eSgpICsgY2hpbGQtPnJlbmRlcmVyKCkubWFyZ2luVG9wKCk7Ci0gICAgfQotCiAgICAgLy8gRklY
TUUtQkxPQ0tGTE9XOiBSZW1vdmUgdmlydHVhbGl6YWlvbiB3aGVuIGFsbCBjYWxsZXJzIGhhdmUg
bW92ZWQgdG8gUmVuZGVyQmxvY2tGbG93CiAgICAgdmlydHVhbCB2b2lkIHBhaW50RmxvYXRzKFBh
aW50SW5mbyYsIGNvbnN0IExheW91dFBvaW50JiwgYm9vbCkgeyB9CiAgICAgdmlydHVhbCB2b2lk
IHBhaW50SW5saW5lQ2hpbGRyZW4oUGFpbnRJbmZvJiwgY29uc3QgTGF5b3V0UG9pbnQmKSB7IH0K
QEAgLTY3Niw0MyArNjQ2LDEyIEBAIHByb3RlY3RlZDoKICAgICAKICAgICB2b2lkIGRldGVybWlu
ZUxvZ2ljYWxMZWZ0UG9zaXRpb25Gb3JDaGlsZChSZW5kZXJCb3gmIGNoaWxkLCBBcHBseUxheW91
dERlbHRhTW9kZSA9IERvTm90QXBwbHlMYXlvdXREZWx0YSk7CiAgICAgCi0gICAgLy8gUmV0dXJu
cyB0aGUgbG9naWNhbE9mZnNldCBhdCB0aGUgdG9wIG9mIHRoZSBuZXh0IHBhZ2UuIElmIHRoZSBv
ZmZzZXQgcGFzc2VkIGluIGlzIGFscmVhZHkgYXQgdGhlIHRvcCBvZiB0aGUgY3VycmVudCBwYWdl
LAotICAgIC8vIHRoZW4gbmV4dFBhZ2VMb2dpY2FsVG9wIHdpdGggRXhjbHVkZVBhZ2VCb3VuZGFy
eSB3aWxsIHN0aWxsIG1vdmUgdG8gdGhlIHRvcCBvZiB0aGUgbmV4dCBwYWdlLiBuZXh0UGFnZUxv
Z2ljYWxUb3Agd2l0aAotICAgIC8vIEluY2x1ZGVQYWdlQm91bmRhcnkgc2V0IHdpbGwgbm90Lgot
ICAgIC8vCi0gICAgLy8gRm9yIGEgcGFnZSBoZWlnaHQgb2YgODAwcHgsIHRoZSBmaXJzdCBydWxl
IHdpbGwgcmV0dXJuIDgwMCBpZiB0aGUgdmFsdWUgcGFzc2VkIGluIGlzIDAuIFRoZSBzZWNvbmQg
cnVsZSB3aWxsIHNpbXBseSByZXR1cm4gMC4KLSAgICBlbnVtIFBhZ2VCb3VuZGFyeVJ1bGUgeyBF
eGNsdWRlUGFnZUJvdW5kYXJ5LCBJbmNsdWRlUGFnZUJvdW5kYXJ5IH07Ci0gICAgTGF5b3V0VW5p
dCBuZXh0UGFnZUxvZ2ljYWxUb3AoTGF5b3V0VW5pdCBsb2dpY2FsT2Zmc2V0LCBQYWdlQm91bmRh
cnlSdWxlID0gRXhjbHVkZVBhZ2VCb3VuZGFyeSkgY29uc3Q7Ci0gICAgYm9vbCBoYXNOZXh0UGFn
ZShMYXlvdXRVbml0IGxvZ2ljYWxPZmZzZXQsIFBhZ2VCb3VuZGFyeVJ1bGUgPSBFeGNsdWRlUGFn
ZUJvdW5kYXJ5KSBjb25zdDsKLQogICAgIHZpcnR1YWwgQ29sdW1uSW5mbzo6UGFnaW5hdGlvblVu
aXQgcGFnaW5hdGlvblVuaXQoKSBjb25zdDsKIAotcHVibGljOgotICAgIExheW91dFVuaXQgcGFn
ZUxvZ2ljYWxUb3BGb3JPZmZzZXQoTGF5b3V0VW5pdCBvZmZzZXQpIGNvbnN0OwotICAgIExheW91
dFVuaXQgcGFnZUxvZ2ljYWxIZWlnaHRGb3JPZmZzZXQoTGF5b3V0VW5pdCBvZmZzZXQpIGNvbnN0
OwotICAgIExheW91dFVuaXQgcGFnZVJlbWFpbmluZ0xvZ2ljYWxIZWlnaHRGb3JPZmZzZXQoTGF5
b3V0VW5pdCBvZmZzZXQsIFBhZ2VCb3VuZGFyeVJ1bGUgPSBJbmNsdWRlUGFnZUJvdW5kYXJ5KSBj
b25zdDsKLSAgICAKIHByb3RlY3RlZDoKLSAgICBib29sIHB1c2hUb05leHRQYWdlV2l0aE1pbmlt
dW1Mb2dpY2FsSGVpZ2h0KExheW91dFVuaXQmIGFkanVzdG1lbnQsIExheW91dFVuaXQgbG9naWNh
bE9mZnNldCwgTGF5b3V0VW5pdCBtaW5pbXVtTG9naWNhbEhlaWdodCkgY29uc3Q7Ci0KLSAgICAv
LyBBIHBhZ2UgYnJlYWsgaXMgcmVxdWlyZWQgYXQgc29tZSBvZmZzZXQgZHVlIHRvIHNwYWNlIHNo
b3J0YWdlIGluIHRoZSBjdXJyZW50IGZyYWdtZW50YWluZXIuCi0gICAgdm9pZCBzZXRQYWdlQnJl
YWsoTGF5b3V0VW5pdCBvZmZzZXQsIExheW91dFVuaXQgc3BhY2VTaG9ydGFnZSk7Ci0KLSAgICAv
LyBVcGRhdGUgbWluaW11bSBwYWdlIGhlaWdodCByZXF1aXJlZCB0byBhdm9pZCBmcmFnbWVudGF0
aW9uIHdoZXJlIGl0IHNob3VsZG4ndCBvY2N1ciAoaW5zaWRlCi0gICAgLy8gdW5icmVha2FibGUg
Y29udGVudCwgYmV0d2VlbiBvcnBoYW5zIGFuZCB3aWRvd3MsIGV0Yy4pLiBUaGlzIHdpbGwgYmUg
dXNlZCBhcyBhIGhpbnQgdG8gdGhlCi0gICAgLy8gY29sdW1uIGJhbGFuY2VyIHRvIGhlbHAgc2V0
IGEgZ29vZCBtaW5pbXVtIGNvbHVtbiBoZWlnaHQuCi0gICAgdm9pZCB1cGRhdGVNaW5pbXVtUGFn
ZUhlaWdodChMYXlvdXRVbml0IG9mZnNldCwgTGF5b3V0VW5pdCBtaW5IZWlnaHQpOwotCi0gICAg
TGF5b3V0VW5pdCBhZGp1c3RGb3JVbnNwbGl0dGFibGVDaGlsZChSZW5kZXJCb3gmIGNoaWxkLCBM
YXlvdXRVbml0IGxvZ2ljYWxPZmZzZXQsIGJvb2wgaW5jbHVkZU1hcmdpbnMgPSBmYWxzZSk7IC8v
IElmIHRoZSBjaGlsZCBpcyB1bnNwbGl0dGFibGUgYW5kIGNhbid0IGZpdCBvbiB0aGUgY3VycmVu
dCBwYWdlLCByZXR1cm4gdGhlIHRvcCBvZiB0aGUgbmV4dCBwYWdlL2NvbHVtbi4KLQogICAgIC8v
IEFkanVzdCBmcm9tIHBhaW50aW5nIG9mZnNldHMgdG8gdGhlIGxvY2FsIGNvb3JkcyBvZiB0aGlz
IHJlbmRlcmVyCiAgICAgdm9pZCBvZmZzZXRGb3JDb250ZW50cyhMYXlvdXRQb2ludCYpIGNvbnN0
OwogCi0gICAgLy8gVGhpcyBmdW5jdGlvbiBpcyBjYWxsZWQgdG8gdGVzdCBhIGxpbmUgYm94IHRo
YXQgaGFzIG1vdmVkIGluIHRoZSBibG9jayBkaXJlY3Rpb24gdG8gc2VlIGlmIGl0IGhhcyBlbmRl
ZCB1cCBpbiBhIG5ldwotICAgIC8vIHJlZ2lvbi9wYWdlL2NvbHVtbiB0aGF0IGhhcyBhIGRpZmZl
cmVudCBhdmFpbGFibGUgbGluZSB3aWR0aCB0aGFuIHRoZSBvbGQgb25lLiBVc2VkIHRvIGtub3cg
d2hlbiB5b3UgaGF2ZSB0byBkaXJ0eSBhCi0gICAgLy8gbGluZSwgaS5lLiwgdGhhdCBpdCBjYW4n
dCBiZSByZS11c2VkLgotICAgIGJvb2wgbGluZVdpZHRoRm9yUGFnaW5hdGVkTGluZUNoYW5nZWQo
Um9vdElubGluZUJveCosIExheW91dFVuaXQgbGluZURlbHRhLCBSZW5kZXJGbG93VGhyZWFkKikg
Y29uc3Q7Ci0KICAgICB2aXJ0dWFsIGJvb2wgcmVxdWlyZXNDb2x1bW5zKGludCBkZXNpcmVkQ29s
dW1uQ291bnQpIGNvbnN0OwogCiAgICAgdmlydHVhbCBib29sIHVwZGF0ZUxvZ2ljYWxXaWR0aEFu
ZENvbHVtbldpZHRoKCk7CkluZGV4OiBTb3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcvUmVuZGVyQmxv
Y2tGbG93LmNwcAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcvUmVuZGVy
QmxvY2tGbG93LmNwcAkocmV2aXNpb24gMTU3OTg0KQorKysgU291cmNlL1dlYkNvcmUvcmVuZGVy
aW5nL1JlbmRlckJsb2NrRmxvdy5jcHAJKHdvcmtpbmcgY29weSkKQEAgLTE1NjMsNiArMTU2Mywx
MzggQEAgYm9vbCBSZW5kZXJCbG9ja0Zsb3c6OnJlbGF5b3V0VG9Bdm9pZFdpZAogICAgIHJldHVy
biB0cnVlOwogfQogCitib29sIFJlbmRlckJsb2NrRmxvdzo6aGFzTmV4dFBhZ2UoTGF5b3V0VW5p
dCBsb2dpY2FsT2Zmc2V0LCBQYWdlQm91bmRhcnlSdWxlIHBhZ2VCb3VuZGFyeVJ1bGUpIGNvbnN0
Cit7CisgICAgQVNTRVJUKHZpZXcoKS5sYXlvdXRTdGF0ZSgpICYmIHZpZXcoKS5sYXlvdXRTdGF0
ZSgpLT5pc1BhZ2luYXRlZCgpKTsKKworICAgIFJlbmRlckZsb3dUaHJlYWQqIGZsb3dUaHJlYWQg
PSBmbG93VGhyZWFkQ29udGFpbmluZ0Jsb2NrKCk7CisgICAgaWYgKCFmbG93VGhyZWFkKQorICAg
ICAgICByZXR1cm4gdHJ1ZTsgLy8gUHJpbnRpbmcgYW5kIG11bHRpLWNvbHVtbiBib3RoIG1ha2Ug
bmV3IHBhZ2VzIHRvIGFjY29tbW9kYXRlIGNvbnRlbnQuCisKKyAgICAvLyBTZWUgaWYgd2UncmUg
aW4gdGhlIGxhc3QgcmVnaW9uLgorICAgIExheW91dFVuaXQgcGFnZU9mZnNldCA9IG9mZnNldEZy
b21Mb2dpY2FsVG9wT2ZGaXJzdFBhZ2UoKSArIGxvZ2ljYWxPZmZzZXQ7CisgICAgUmVuZGVyUmVn
aW9uKiByZWdpb24gPSBmbG93VGhyZWFkLT5yZWdpb25BdEJsb2NrT2Zmc2V0KHRoaXMsIHBhZ2VP
ZmZzZXQsIHRoaXMpOworICAgIGlmICghcmVnaW9uKQorICAgICAgICByZXR1cm4gZmFsc2U7Cisg
ICAgaWYgKHJlZ2lvbi0+aXNMYXN0UmVnaW9uKCkpCisgICAgICAgIHJldHVybiByZWdpb24tPmlz
UmVuZGVyUmVnaW9uU2V0KCkgfHwgcmVnaW9uLT5zdHlsZSgpLT5yZWdpb25GcmFnbWVudCgpID09
IEJyZWFrUmVnaW9uRnJhZ21lbnQKKyAgICAgICAgICAgIHx8IChwYWdlQm91bmRhcnlSdWxlID09
IEluY2x1ZGVQYWdlQm91bmRhcnkgJiYgcGFnZU9mZnNldCA9PSByZWdpb24tPmxvZ2ljYWxUb3BG
b3JGbG93VGhyZWFkQ29udGVudCgpKTsKKyAgICByZXR1cm4gdHJ1ZTsKK30KKworTGF5b3V0VW5p
dCBSZW5kZXJCbG9ja0Zsb3c6OmFkanVzdEZvclVuc3BsaXR0YWJsZUNoaWxkKFJlbmRlckJveCYg
Y2hpbGQsIExheW91dFVuaXQgbG9naWNhbE9mZnNldCwgYm9vbCBpbmNsdWRlTWFyZ2lucykKK3sK
KyAgICBib29sIGNoZWNrQ29sdW1uQnJlYWtzID0gdmlldygpLmxheW91dFN0YXRlKCktPmlzUGFn
aW5hdGluZ0NvbHVtbnMoKTsKKyAgICBib29sIGNoZWNrUGFnZUJyZWFrcyA9ICFjaGVja0NvbHVt
bkJyZWFrcyAmJiB2aWV3KCkubGF5b3V0U3RhdGUoKS0+bV9wYWdlTG9naWNhbEhlaWdodDsKKyAg
ICBSZW5kZXJGbG93VGhyZWFkKiBmbG93VGhyZWFkID0gZmxvd1RocmVhZENvbnRhaW5pbmdCbG9j
aygpOworICAgIGJvb2wgY2hlY2tSZWdpb25CcmVha3MgPSBmbG93VGhyZWFkICYmIGZsb3dUaHJl
YWQtPmlzUmVuZGVyTmFtZWRGbG93VGhyZWFkKCk7CisgICAgYm9vbCBpc1Vuc3BsaXR0YWJsZSA9
IGNoaWxkLmlzVW5zcGxpdHRhYmxlRm9yUGFnaW5hdGlvbigpIHx8IChjaGVja0NvbHVtbkJyZWFr
cyAmJiBjaGlsZC5zdHlsZSgpLT5jb2x1bW5CcmVha0luc2lkZSgpID09IFBCQVZPSUQpCisgICAg
ICAgIHx8IChjaGVja1BhZ2VCcmVha3MgJiYgY2hpbGQuc3R5bGUoKS0+cGFnZUJyZWFrSW5zaWRl
KCkgPT0gUEJBVk9JRCkKKyAgICAgICAgfHwgKGNoZWNrUmVnaW9uQnJlYWtzICYmIGNoaWxkLnN0
eWxlKCktPnJlZ2lvbkJyZWFrSW5zaWRlKCkgPT0gUEJBVk9JRCk7CisgICAgaWYgKCFpc1Vuc3Bs
aXR0YWJsZSkKKyAgICAgICAgcmV0dXJuIGxvZ2ljYWxPZmZzZXQ7CisgICAgTGF5b3V0VW5pdCBj
aGlsZExvZ2ljYWxIZWlnaHQgPSBsb2dpY2FsSGVpZ2h0Rm9yQ2hpbGQoY2hpbGQpICsgKGluY2x1
ZGVNYXJnaW5zID8gbWFyZ2luQmVmb3JlRm9yQ2hpbGQoY2hpbGQpICsgbWFyZ2luQWZ0ZXJGb3JD
aGlsZChjaGlsZCkgOiBMYXlvdXRVbml0KCkpOworICAgIExheW91dFVuaXQgcGFnZUxvZ2ljYWxI
ZWlnaHQgPSBwYWdlTG9naWNhbEhlaWdodEZvck9mZnNldChsb2dpY2FsT2Zmc2V0KTsKKyAgICBi
b29sIGhhc1VuaWZvcm1QYWdlTG9naWNhbEhlaWdodCA9ICFmbG93VGhyZWFkIHx8IGZsb3dUaHJl
YWQtPnJlZ2lvbnNIYXZlVW5pZm9ybUxvZ2ljYWxIZWlnaHQoKTsKKyAgICB1cGRhdGVNaW5pbXVt
UGFnZUhlaWdodChsb2dpY2FsT2Zmc2V0LCBjaGlsZExvZ2ljYWxIZWlnaHQpOworICAgIGlmICgh
cGFnZUxvZ2ljYWxIZWlnaHQgfHwgKGhhc1VuaWZvcm1QYWdlTG9naWNhbEhlaWdodCAmJiBjaGls
ZExvZ2ljYWxIZWlnaHQgPiBwYWdlTG9naWNhbEhlaWdodCkKKyAgICAgICAgfHwgIWhhc05leHRQ
YWdlKGxvZ2ljYWxPZmZzZXQpKQorICAgICAgICByZXR1cm4gbG9naWNhbE9mZnNldDsKKyAgICBM
YXlvdXRVbml0IHJlbWFpbmluZ0xvZ2ljYWxIZWlnaHQgPSBwYWdlUmVtYWluaW5nTG9naWNhbEhl
aWdodEZvck9mZnNldChsb2dpY2FsT2Zmc2V0LCBFeGNsdWRlUGFnZUJvdW5kYXJ5KTsKKyAgICBp
ZiAocmVtYWluaW5nTG9naWNhbEhlaWdodCA8IGNoaWxkTG9naWNhbEhlaWdodCkgeworICAgICAg
ICBpZiAoIWhhc1VuaWZvcm1QYWdlTG9naWNhbEhlaWdodCAmJiAhcHVzaFRvTmV4dFBhZ2VXaXRo
TWluaW11bUxvZ2ljYWxIZWlnaHQocmVtYWluaW5nTG9naWNhbEhlaWdodCwgbG9naWNhbE9mZnNl
dCwgY2hpbGRMb2dpY2FsSGVpZ2h0KSkKKyAgICAgICAgICAgIHJldHVybiBsb2dpY2FsT2Zmc2V0
OworICAgICAgICByZXR1cm4gbG9naWNhbE9mZnNldCArIHJlbWFpbmluZ0xvZ2ljYWxIZWlnaHQ7
CisgICAgfQorICAgIHJldHVybiBsb2dpY2FsT2Zmc2V0OworfQorCitib29sIFJlbmRlckJsb2Nr
Rmxvdzo6cHVzaFRvTmV4dFBhZ2VXaXRoTWluaW11bUxvZ2ljYWxIZWlnaHQoTGF5b3V0VW5pdCYg
YWRqdXN0bWVudCwgTGF5b3V0VW5pdCBsb2dpY2FsT2Zmc2V0LCBMYXlvdXRVbml0IG1pbmltdW1M
b2dpY2FsSGVpZ2h0KSBjb25zdAoreworICAgIGJvb2wgY2hlY2tSZWdpb24gPSBmYWxzZTsKKyAg
ICBmb3IgKExheW91dFVuaXQgcGFnZUxvZ2ljYWxIZWlnaHQgPSBwYWdlTG9naWNhbEhlaWdodEZv
ck9mZnNldChsb2dpY2FsT2Zmc2V0ICsgYWRqdXN0bWVudCk7IHBhZ2VMb2dpY2FsSGVpZ2h0Owor
ICAgICAgICBwYWdlTG9naWNhbEhlaWdodCA9IHBhZ2VMb2dpY2FsSGVpZ2h0Rm9yT2Zmc2V0KGxv
Z2ljYWxPZmZzZXQgKyBhZGp1c3RtZW50KSkgeworICAgICAgICBpZiAobWluaW11bUxvZ2ljYWxI
ZWlnaHQgPD0gcGFnZUxvZ2ljYWxIZWlnaHQpCisgICAgICAgICAgICByZXR1cm4gdHJ1ZTsKKyAg
ICAgICAgaWYgKCFoYXNOZXh0UGFnZShsb2dpY2FsT2Zmc2V0ICsgYWRqdXN0bWVudCkpCisgICAg
ICAgICAgICByZXR1cm4gZmFsc2U7CisgICAgICAgIGFkanVzdG1lbnQgKz0gcGFnZUxvZ2ljYWxI
ZWlnaHQ7CisgICAgICAgIGNoZWNrUmVnaW9uID0gdHJ1ZTsKKyAgICB9CisgICAgcmV0dXJuICFj
aGVja1JlZ2lvbjsKK30KKwordm9pZCBSZW5kZXJCbG9ja0Zsb3c6OnNldFBhZ2VCcmVhayhMYXlv
dXRVbml0IG9mZnNldCwgTGF5b3V0VW5pdCBzcGFjZVNob3J0YWdlKQoreworICAgIGlmIChSZW5k
ZXJGbG93VGhyZWFkKiBmbG93VGhyZWFkID0gZmxvd1RocmVhZENvbnRhaW5pbmdCbG9jaygpKQor
ICAgICAgICBmbG93VGhyZWFkLT5zZXRQYWdlQnJlYWsodGhpcywgb2Zmc2V0RnJvbUxvZ2ljYWxU
b3BPZkZpcnN0UGFnZSgpICsgb2Zmc2V0LCBzcGFjZVNob3J0YWdlKTsKK30KKwordm9pZCBSZW5k
ZXJCbG9ja0Zsb3c6OnVwZGF0ZU1pbmltdW1QYWdlSGVpZ2h0KExheW91dFVuaXQgb2Zmc2V0LCBM
YXlvdXRVbml0IG1pbkhlaWdodCkKK3sKKyAgICBpZiAoUmVuZGVyRmxvd1RocmVhZCogZmxvd1Ro
cmVhZCA9IGZsb3dUaHJlYWRDb250YWluaW5nQmxvY2soKSkKKyAgICAgICAgZmxvd1RocmVhZC0+
dXBkYXRlTWluaW11bVBhZ2VIZWlnaHQodGhpcywgb2Zmc2V0RnJvbUxvZ2ljYWxUb3BPZkZpcnN0
UGFnZSgpICsgb2Zmc2V0LCBtaW5IZWlnaHQpOworICAgIGVsc2UgaWYgKENvbHVtbkluZm8qIGNv
bEluZm8gPSB2aWV3KCkubGF5b3V0U3RhdGUoKS0+bV9jb2x1bW5JbmZvKQorICAgICAgICBjb2xJ
bmZvLT51cGRhdGVNaW5pbXVtQ29sdW1uSGVpZ2h0KG1pbkhlaWdodCk7Cit9CisKK0xheW91dFVu
aXQgUmVuZGVyQmxvY2tGbG93OjpuZXh0UGFnZUxvZ2ljYWxUb3AoTGF5b3V0VW5pdCBsb2dpY2Fs
T2Zmc2V0LCBQYWdlQm91bmRhcnlSdWxlIHBhZ2VCb3VuZGFyeVJ1bGUpIGNvbnN0Cit7CisgICAg
TGF5b3V0VW5pdCBwYWdlTG9naWNhbEhlaWdodCA9IHBhZ2VMb2dpY2FsSGVpZ2h0Rm9yT2Zmc2V0
KGxvZ2ljYWxPZmZzZXQpOworICAgIGlmICghcGFnZUxvZ2ljYWxIZWlnaHQpCisgICAgICAgIHJl
dHVybiBsb2dpY2FsT2Zmc2V0OworICAgIAorICAgIC8vIFRoZSBsb2dpY2FsT2Zmc2V0IGlzIGlu
IG91ciBjb29yZGluYXRlIHNwYWNlLiAgV2UgY2FuIGFkZCBpbiBvdXIgcHVzaGVkIG9mZnNldC4K
KyAgICBMYXlvdXRVbml0IHJlbWFpbmluZ0xvZ2ljYWxIZWlnaHQgPSBwYWdlUmVtYWluaW5nTG9n
aWNhbEhlaWdodEZvck9mZnNldChsb2dpY2FsT2Zmc2V0KTsKKyAgICBpZiAocGFnZUJvdW5kYXJ5
UnVsZSA9PSBFeGNsdWRlUGFnZUJvdW5kYXJ5KQorICAgICAgICByZXR1cm4gbG9naWNhbE9mZnNl
dCArIChyZW1haW5pbmdMb2dpY2FsSGVpZ2h0ID8gcmVtYWluaW5nTG9naWNhbEhlaWdodCA6IHBh
Z2VMb2dpY2FsSGVpZ2h0KTsKKyAgICByZXR1cm4gbG9naWNhbE9mZnNldCArIHJlbWFpbmluZ0xv
Z2ljYWxIZWlnaHQ7Cit9CisKK0xheW91dFVuaXQgUmVuZGVyQmxvY2tGbG93OjpwYWdlTG9naWNh
bFRvcEZvck9mZnNldChMYXlvdXRVbml0IG9mZnNldCkgY29uc3QKK3sKKyAgICBMYXlvdXRVbml0
IGZpcnN0UGFnZUxvZ2ljYWxUb3AgPSBpc0hvcml6b250YWxXcml0aW5nTW9kZSgpID8gdmlldygp
LmxheW91dFN0YXRlKCktPm1fcGFnZU9mZnNldC5oZWlnaHQoKSA6IHZpZXcoKS5sYXlvdXRTdGF0
ZSgpLT5tX3BhZ2VPZmZzZXQud2lkdGgoKTsKKyAgICBMYXlvdXRVbml0IGJsb2NrTG9naWNhbFRv
cCA9IGlzSG9yaXpvbnRhbFdyaXRpbmdNb2RlKCkgPyB2aWV3KCkubGF5b3V0U3RhdGUoKS0+bV9s
YXlvdXRPZmZzZXQuaGVpZ2h0KCkgOiB2aWV3KCkubGF5b3V0U3RhdGUoKS0+bV9sYXlvdXRPZmZz
ZXQud2lkdGgoKTsKKworICAgIExheW91dFVuaXQgY3VtdWxhdGl2ZU9mZnNldCA9IG9mZnNldCAr
IGJsb2NrTG9naWNhbFRvcDsKKyAgICBSZW5kZXJGbG93VGhyZWFkKiBmbG93VGhyZWFkID0gZmxv
d1RocmVhZENvbnRhaW5pbmdCbG9jaygpOworICAgIGlmICghZmxvd1RocmVhZCkgeworICAgICAg
ICBMYXlvdXRVbml0IHBhZ2VMb2dpY2FsSGVpZ2h0ID0gdmlldygpLmxheW91dFN0YXRlKCktPnBh
Z2VMb2dpY2FsSGVpZ2h0KCk7CisgICAgICAgIGlmICghcGFnZUxvZ2ljYWxIZWlnaHQpCisgICAg
ICAgICAgICByZXR1cm4gMDsKKyAgICAgICAgcmV0dXJuIGN1bXVsYXRpdmVPZmZzZXQgLSByb3Vu
ZFRvSW50KGN1bXVsYXRpdmVPZmZzZXQgLSBmaXJzdFBhZ2VMb2dpY2FsVG9wKSAlIHJvdW5kVG9J
bnQocGFnZUxvZ2ljYWxIZWlnaHQpOworICAgIH0KKyAgICByZXR1cm4gZmxvd1RocmVhZC0+cGFn
ZUxvZ2ljYWxUb3BGb3JPZmZzZXQoY3VtdWxhdGl2ZU9mZnNldCk7Cit9CisKK0xheW91dFVuaXQg
UmVuZGVyQmxvY2tGbG93OjpwYWdlTG9naWNhbEhlaWdodEZvck9mZnNldChMYXlvdXRVbml0IG9m
ZnNldCkgY29uc3QKK3sKKyAgICBSZW5kZXJGbG93VGhyZWFkKiBmbG93VGhyZWFkID0gZmxvd1Ro
cmVhZENvbnRhaW5pbmdCbG9jaygpOworICAgIGlmICghZmxvd1RocmVhZCkKKyAgICAgICAgcmV0
dXJuIHZpZXcoKS5sYXlvdXRTdGF0ZSgpLT5tX3BhZ2VMb2dpY2FsSGVpZ2h0OworICAgIHJldHVy
biBmbG93VGhyZWFkLT5wYWdlTG9naWNhbEhlaWdodEZvck9mZnNldChvZmZzZXQgKyBvZmZzZXRG
cm9tTG9naWNhbFRvcE9mRmlyc3RQYWdlKCkpOworfQorCitMYXlvdXRVbml0IFJlbmRlckJsb2Nr
Rmxvdzo6cGFnZVJlbWFpbmluZ0xvZ2ljYWxIZWlnaHRGb3JPZmZzZXQoTGF5b3V0VW5pdCBvZmZz
ZXQsIFBhZ2VCb3VuZGFyeVJ1bGUgcGFnZUJvdW5kYXJ5UnVsZSkgY29uc3QKK3sKKyAgICBvZmZz
ZXQgKz0gb2Zmc2V0RnJvbUxvZ2ljYWxUb3BPZkZpcnN0UGFnZSgpOworICAgIAorICAgIFJlbmRl
ckZsb3dUaHJlYWQqIGZsb3dUaHJlYWQgPSBmbG93VGhyZWFkQ29udGFpbmluZ0Jsb2NrKCk7Cisg
ICAgaWYgKCFmbG93VGhyZWFkKSB7CisgICAgICAgIExheW91dFVuaXQgcGFnZUxvZ2ljYWxIZWln
aHQgPSB2aWV3KCkubGF5b3V0U3RhdGUoKS0+bV9wYWdlTG9naWNhbEhlaWdodDsKKyAgICAgICAg
TGF5b3V0VW5pdCByZW1haW5pbmdIZWlnaHQgPSBwYWdlTG9naWNhbEhlaWdodCAtIGludE1vZChv
ZmZzZXQsIHBhZ2VMb2dpY2FsSGVpZ2h0KTsKKyAgICAgICAgaWYgKHBhZ2VCb3VuZGFyeVJ1bGUg
PT0gSW5jbHVkZVBhZ2VCb3VuZGFyeSkgeworICAgICAgICAgICAgLy8gSWYgaW5jbHVkZUJvdW5k
YXJ5UG9pbnQgaXMgdHJ1ZSB0aGUgbGluZSBleGFjdGx5IG9uIHRoZSB0b3AgZWRnZSBvZiBhCisg
ICAgICAgICAgICAvLyBjb2x1bW4gd2lsbCBhY3QgYXMgYmVpbmcgcGFydCBvZiB0aGUgcHJldmlv
dXMgY29sdW1uLgorICAgICAgICAgICAgcmVtYWluaW5nSGVpZ2h0ID0gaW50TW9kKHJlbWFpbmlu
Z0hlaWdodCwgcGFnZUxvZ2ljYWxIZWlnaHQpOworICAgICAgICB9CisgICAgICAgIHJldHVybiBy
ZW1haW5pbmdIZWlnaHQ7CisgICAgfQorICAgIAorICAgIHJldHVybiBmbG93VGhyZWFkLT5wYWdl
UmVtYWluaW5nTG9naWNhbEhlaWdodEZvck9mZnNldChvZmZzZXQsIHBhZ2VCb3VuZGFyeVJ1bGUp
OworfQorCisKIHZvaWQgUmVuZGVyQmxvY2tGbG93OjpsYXlvdXRMaW5lR3JpZEJveCgpCiB7CiAg
ICAgaWYgKHN0eWxlKCktPmxpbmVHcmlkKCkgPT0gUmVuZGVyU3R5bGU6OmluaXRpYWxMaW5lR3Jp
ZCgpKSB7CkBAIC0yMzI5LDYgKzI0NjEsMTkgQEAgdm9pZCBSZW5kZXJCbG9ja0Zsb3c6Om1hcmtT
aWJsaW5nc1dpdGhGbAogICAgIH0KIH0KIAorTGF5b3V0UG9pbnQgUmVuZGVyQmxvY2tGbG93Ojpm
bGlwRmxvYXRGb3JXcml0aW5nTW9kZUZvckNoaWxkKGNvbnN0IEZsb2F0aW5nT2JqZWN0KiBjaGls
ZCwgY29uc3QgTGF5b3V0UG9pbnQmIHBvaW50KSBjb25zdAoreworICAgIGlmICghc3R5bGUoKS0+
aXNGbGlwcGVkQmxvY2tzV3JpdGluZ01vZGUoKSkKKyAgICAgICAgcmV0dXJuIHBvaW50OworICAg
IAorICAgIC8vIFRoaXMgaXMgc2ltaWxhciB0byBSZW5kZXJCb3g6OmZsaXBGb3JXcml0aW5nTW9k
ZUZvckNoaWxkLiBXZSBoYXZlIHRvIHN1YnRyYWN0IG91dCBvdXIgbGVmdC90b3Agb2Zmc2V0cyB0
d2ljZSwgc2luY2UKKyAgICAvLyBpdCdzIGdvaW5nIHRvIGdldCBhZGRlZCBiYWNrIGluLiBXZSBo
aWRlIHRoaXMgY29tcGxpY2F0aW9uIGhlcmUgc28gdGhhdCB0aGUgY2FsbGluZyBjb2RlIGxvb2tz
IG5vcm1hbCBmb3IgdGhlIHVuZmxpcHBlZAorICAgIC8vIGNhc2UuCisgICAgaWYgKGlzSG9yaXpv
bnRhbFdyaXRpbmdNb2RlKCkpCisgICAgICAgIHJldHVybiBMYXlvdXRQb2ludChwb2ludC54KCks
IHBvaW50LnkoKSArIGhlaWdodCgpIC0gY2hpbGQtPnJlbmRlcmVyKCkuaGVpZ2h0KCkgLSAyICog
eVBvc2l0aW9uRm9yRmxvYXRJbmNsdWRpbmdNYXJnaW4oY2hpbGQpKTsKKyAgICByZXR1cm4gTGF5
b3V0UG9pbnQocG9pbnQueCgpICsgd2lkdGgoKSAtIGNoaWxkLT5yZW5kZXJlcigpLndpZHRoKCkg
LSAyICogeFBvc2l0aW9uRm9yRmxvYXRJbmNsdWRpbmdNYXJnaW4oY2hpbGQpLCBwb2ludC55KCkp
OworfQorCiBMYXlvdXRVbml0IFJlbmRlckJsb2NrRmxvdzo6Z2V0Q2xlYXJEZWx0YShSZW5kZXJC
b3gmIGNoaWxkLCBMYXlvdXRVbml0IGxvZ2ljYWxUb3ApCiB7CiAgICAgLy8gVGhlcmUgaXMgbm8g
bmVlZCB0byBjb21wdXRlIGNsZWFyYW5jZSBpZiB3ZSBoYXZlIG5vIGZsb2F0cy4KSW5kZXg6IFNv
dXJjZS9XZWJDb3JlL3JlbmRlcmluZy9SZW5kZXJCbG9ja0Zsb3cuaAo9PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBT
b3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcvUmVuZGVyQmxvY2tGbG93LmgJKHJldmlzaW9uIDE1Nzk4
NCkKKysrIFNvdXJjZS9XZWJDb3JlL3JlbmRlcmluZy9SZW5kZXJCbG9ja0Zsb3cuaAkod29ya2lu
ZyBjb3B5KQpAQCAtMzEsNiArMzEsNyBAQCBuYW1lc3BhY2UgV2ViQ29yZSB7CiAKIGNsYXNzIExp
bmVCcmVha2VyOwogY2xhc3MgUmVuZGVyTmFtZWRGbG93RnJhZ21lbnQ7CitzdHJ1Y3QgRmxvYXRX
aXRoUmVjdDsKIAogY2xhc3MgUmVuZGVyQmxvY2tGbG93IDogcHVibGljIFJlbmRlckJsb2NrIHsK
IHB1YmxpYzoKQEAgLTMwMiw2ICszMDMsMTEgQEAgcHVibGljOgogICAgICAgICAgICAgZmxvYXRp
bmdPYmplY3QtPnNldEhlaWdodChsb2dpY2FsV2lkdGgpOwogICAgIH0KIAorICAgIExheW91dFVu
aXQgeFBvc2l0aW9uRm9yRmxvYXRJbmNsdWRpbmdNYXJnaW4oY29uc3QgRmxvYXRpbmdPYmplY3Qq
IGNoaWxkKSBjb25zdCB7IHJldHVybiBpc0hvcml6b250YWxXcml0aW5nTW9kZSgpID8gY2hpbGQt
PngoKSArIGNoaWxkLT5yZW5kZXJlcigpLm1hcmdpbkxlZnQoKSA6IGNoaWxkLT54KCkgKyBtYXJn
aW5CZWZvcmVGb3JDaGlsZChjaGlsZC0+cmVuZGVyZXIoKSk7IH0KKyAgICBMYXlvdXRVbml0IHlQ
b3NpdGlvbkZvckZsb2F0SW5jbHVkaW5nTWFyZ2luKGNvbnN0IEZsb2F0aW5nT2JqZWN0KiBjaGls
ZCkgY29uc3QgeyByZXR1cm4gaXNIb3Jpem9udGFsV3JpdGluZ01vZGUoKSA/IGNoaWxkLT55KCkg
KyBtYXJnaW5CZWZvcmVGb3JDaGlsZChjaGlsZC0+cmVuZGVyZXIoKSkgOiBjaGlsZC0+eSgpICsg
Y2hpbGQtPnJlbmRlcmVyKCkubWFyZ2luVG9wKCk7IH0KKworICAgIExheW91dFBvaW50IGZsaXBG
bG9hdEZvcldyaXRpbmdNb2RlRm9yQ2hpbGQoY29uc3QgRmxvYXRpbmdPYmplY3QqLCBjb25zdCBM
YXlvdXRQb2ludCYpIGNvbnN0OworCiAgICAgUmVuZGVyTGluZUJveExpc3QmIGxpbmVCb3hlcygp
IHsgcmV0dXJuIG1fbGluZUJveGVzOyB9CiAgICAgY29uc3QgUmVuZGVyTGluZUJveExpc3QmIGxp
bmVCb3hlcygpIGNvbnN0IHsgcmV0dXJuIG1fbGluZUJveGVzOyB9CiAKQEAgLTMzMiw3ICszMzgs
MzQgQEAgcHVibGljOgogICAgIHZpcnR1YWwgdm9pZCBzaG93TGluZVRyZWVBbmRNYXJrKGNvbnN0
IElubGluZUJveCogPSBudWxscHRyLCBjb25zdCBjaGFyKiA9IG51bGxwdHIsIGNvbnN0IElubGlu
ZUJveCogPSBudWxscHRyLCBjb25zdCBjaGFyKiA9IG51bGxwdHIsIGNvbnN0IFJlbmRlck9iamVj
dCogPSBudWxscHRyKSBjb25zdCBPVkVSUklERTsKICNlbmRpZgogCisgICAgLy8gUmV0dXJucyB0
aGUgbG9naWNhbE9mZnNldCBhdCB0aGUgdG9wIG9mIHRoZSBuZXh0IHBhZ2UuIElmIHRoZSBvZmZz
ZXQgcGFzc2VkIGluIGlzIGFscmVhZHkgYXQgdGhlIHRvcCBvZiB0aGUgY3VycmVudCBwYWdlLAor
ICAgIC8vIHRoZW4gbmV4dFBhZ2VMb2dpY2FsVG9wIHdpdGggRXhjbHVkZVBhZ2VCb3VuZGFyeSB3
aWxsIHN0aWxsIG1vdmUgdG8gdGhlIHRvcCBvZiB0aGUgbmV4dCBwYWdlLiBuZXh0UGFnZUxvZ2lj
YWxUb3Agd2l0aAorICAgIC8vIEluY2x1ZGVQYWdlQm91bmRhcnkgc2V0IHdpbGwgbm90LgorICAg
IC8vCisgICAgLy8gRm9yIGEgcGFnZSBoZWlnaHQgb2YgODAwcHgsIHRoZSBmaXJzdCBydWxlIHdp
bGwgcmV0dXJuIDgwMCBpZiB0aGUgdmFsdWUgcGFzc2VkIGluIGlzIDAuIFRoZSBzZWNvbmQgcnVs
ZSB3aWxsIHNpbXBseSByZXR1cm4gMC4KKyAgICBlbnVtIFBhZ2VCb3VuZGFyeVJ1bGUgeyBFeGNs
dWRlUGFnZUJvdW5kYXJ5LCBJbmNsdWRlUGFnZUJvdW5kYXJ5IH07CisgICAgTGF5b3V0VW5pdCBu
ZXh0UGFnZUxvZ2ljYWxUb3AoTGF5b3V0VW5pdCBsb2dpY2FsT2Zmc2V0LCBQYWdlQm91bmRhcnlS
dWxlID0gRXhjbHVkZVBhZ2VCb3VuZGFyeSkgY29uc3Q7CisgICAgTGF5b3V0VW5pdCBwYWdlTG9n
aWNhbFRvcEZvck9mZnNldChMYXlvdXRVbml0IG9mZnNldCkgY29uc3Q7CisgICAgTGF5b3V0VW5p
dCBwYWdlTG9naWNhbEhlaWdodEZvck9mZnNldChMYXlvdXRVbml0IG9mZnNldCkgY29uc3Q7Cisg
ICAgTGF5b3V0VW5pdCBwYWdlUmVtYWluaW5nTG9naWNhbEhlaWdodEZvck9mZnNldChMYXlvdXRV
bml0IG9mZnNldCwgUGFnZUJvdW5kYXJ5UnVsZSA9IEluY2x1ZGVQYWdlQm91bmRhcnkpIGNvbnN0
OworICAgIGJvb2wgaGFzTmV4dFBhZ2UoTGF5b3V0VW5pdCBsb2dpY2FsT2Zmc2V0LCBQYWdlQm91
bmRhcnlSdWxlID0gRXhjbHVkZVBhZ2VCb3VuZGFyeSkgY29uc3Q7CisKIHByb3RlY3RlZDoKKyAg
ICAvLyBBIHBhZ2UgYnJlYWsgaXMgcmVxdWlyZWQgYXQgc29tZSBvZmZzZXQgZHVlIHRvIHNwYWNl
IHNob3J0YWdlIGluIHRoZSBjdXJyZW50IGZyYWdtZW50YWluZXIuCisgICAgdm9pZCBzZXRQYWdl
QnJlYWsoTGF5b3V0VW5pdCBvZmZzZXQsIExheW91dFVuaXQgc3BhY2VTaG9ydGFnZSk7CisKKyAg
ICAvLyBVcGRhdGUgbWluaW11bSBwYWdlIGhlaWdodCByZXF1aXJlZCB0byBhdm9pZCBmcmFnbWVu
dGF0aW9uIHdoZXJlIGl0IHNob3VsZG4ndCBvY2N1ciAoaW5zaWRlCisgICAgLy8gdW5icmVha2Fi
bGUgY29udGVudCwgYmV0d2VlbiBvcnBoYW5zIGFuZCB3aWRvd3MsIGV0Yy4pLiBUaGlzIHdpbGwg
YmUgdXNlZCBhcyBhIGhpbnQgdG8gdGhlCisgICAgLy8gY29sdW1uIGJhbGFuY2VyIHRvIGhlbHAg
c2V0IGEgZ29vZCBtaW5pbXVtIGNvbHVtbiBoZWlnaHQuCisgICAgdm9pZCB1cGRhdGVNaW5pbXVt
UGFnZUhlaWdodChMYXlvdXRVbml0IG9mZnNldCwgTGF5b3V0VW5pdCBtaW5IZWlnaHQpOworICAg
IGJvb2wgcHVzaFRvTmV4dFBhZ2VXaXRoTWluaW11bUxvZ2ljYWxIZWlnaHQoTGF5b3V0VW5pdCYg
YWRqdXN0bWVudCwgTGF5b3V0VW5pdCBsb2dpY2FsT2Zmc2V0LCBMYXlvdXRVbml0IG1pbmltdW1M
b2dpY2FsSGVpZ2h0KSBjb25zdDsKKworICAgIC8vIElmIHRoZSBjaGlsZCBpcyB1bnNwbGl0dGFi
bGUgYW5kIGNhbid0IGZpdCBvbiB0aGUgY3VycmVudCBwYWdlLCByZXR1cm4gdGhlIHRvcCBvZiB0
aGUgbmV4dCBwYWdlL2NvbHVtbi4KKyAgICBMYXlvdXRVbml0IGFkanVzdEZvclVuc3BsaXR0YWJs
ZUNoaWxkKFJlbmRlckJveCYgY2hpbGQsIExheW91dFVuaXQgbG9naWNhbE9mZnNldCwgYm9vbCBp
bmNsdWRlTWFyZ2lucyA9IGZhbHNlKTsKKyAgICBMYXlvdXRVbml0IGFkanVzdEJsb2NrQ2hpbGRG
b3JQYWdpbmF0aW9uKExheW91dFVuaXQgbG9naWNhbFRvcEFmdGVyQ2xlYXIsIExheW91dFVuaXQg
ZXN0aW1hdGVXaXRob3V0UGFnaW5hdGlvbiwgUmVuZGVyQm94JiBjaGlsZCwgYm9vbCBhdEJlZm9y
ZVNpZGVPZkJsb2NrKTsKKyAgICBMYXlvdXRVbml0IGFwcGx5QmVmb3JlQnJlYWsoUmVuZGVyQm94
JiBjaGlsZCwgTGF5b3V0VW5pdCBsb2dpY2FsT2Zmc2V0KTsgLy8gSWYgdGhlIGNoaWxkIGhhcyBh
IGJlZm9yZSBicmVhaywgdGhlbiByZXR1cm4gYSBuZXcgeVBvcyB0aGF0IHNoaWZ0cyB0byB0aGUg
dG9wIG9mIHRoZSBuZXh0IHBhZ2UvY29sdW1uLgorICAgIExheW91dFVuaXQgYXBwbHlBZnRlckJy
ZWFrKFJlbmRlckJveCYgY2hpbGQsIExheW91dFVuaXQgbG9naWNhbE9mZnNldCwgTWFyZ2luSW5m
byYpOyAvLyBJZiB0aGUgY2hpbGQgaGFzIGFuIGFmdGVyIGJyZWFrLCB0aGVuIHJldHVybiBhIG5l
dyBvZmZzZXQgdGhhdCBzaGlmdHMgdG8gdGhlIHRvcCBvZiB0aGUgbmV4dCBwYWdlL2NvbHVtbi4K
KwogICAgIExheW91dFVuaXQgbWF4UG9zaXRpdmVNYXJnaW5CZWZvcmUoKSBjb25zdCB7IHJldHVy
biBtX3JhcmVEYXRhID8gbV9yYXJlRGF0YS0+bV9tYXJnaW5zLnBvc2l0aXZlTWFyZ2luQmVmb3Jl
KCkgOiBSZW5kZXJCbG9ja0Zsb3dSYXJlRGF0YTo6cG9zaXRpdmVNYXJnaW5CZWZvcmVEZWZhdWx0
KCp0aGlzKTsgfQogICAgIExheW91dFVuaXQgbWF4TmVnYXRpdmVNYXJnaW5CZWZvcmUoKSBjb25z
dCB7IHJldHVybiBtX3JhcmVEYXRhID8gbV9yYXJlRGF0YS0+bV9tYXJnaW5zLm5lZ2F0aXZlTWFy
Z2luQmVmb3JlKCkgOiBSZW5kZXJCbG9ja0Zsb3dSYXJlRGF0YTo6bmVnYXRpdmVNYXJnaW5CZWZv
cmVEZWZhdWx0KCp0aGlzKTsgfQogICAgIExheW91dFVuaXQgbWF4UG9zaXRpdmVNYXJnaW5BZnRl
cigpIGNvbnN0IHsgcmV0dXJuIG1fcmFyZURhdGEgPyBtX3JhcmVEYXRhLT5tX21hcmdpbnMucG9z
aXRpdmVNYXJnaW5BZnRlcigpIDogUmVuZGVyQmxvY2tGbG93UmFyZURhdGE6OnBvc2l0aXZlTWFy
Z2luQWZ0ZXJEZWZhdWx0KCp0aGlzKTsgfQpAQCAtMzYyLDEwICszOTUsNiBAQCBwcm90ZWN0ZWQ6
CiAgICAgYm9vbCBtdXN0U2VwYXJhdGVNYXJnaW5CZWZvcmVGb3JDaGlsZChjb25zdCBSZW5kZXJC
b3gmKSBjb25zdDsKICAgICBib29sIG11c3RTZXBhcmF0ZU1hcmdpbkFmdGVyRm9yQ2hpbGQoY29u
c3QgUmVuZGVyQm94JikgY29uc3Q7CiAKLSAgICBMYXlvdXRVbml0IGFwcGx5QmVmb3JlQnJlYWso
UmVuZGVyQm94JiBjaGlsZCwgTGF5b3V0VW5pdCBsb2dpY2FsT2Zmc2V0KTsgLy8gSWYgdGhlIGNo
aWxkIGhhcyBhIGJlZm9yZSBicmVhaywgdGhlbiByZXR1cm4gYSBuZXcgeVBvcyB0aGF0IHNoaWZ0
cyB0byB0aGUgdG9wIG9mIHRoZSBuZXh0IHBhZ2UvY29sdW1uLgotICAgIExheW91dFVuaXQgYXBw
bHlBZnRlckJyZWFrKFJlbmRlckJveCYgY2hpbGQsIExheW91dFVuaXQgbG9naWNhbE9mZnNldCwg
TWFyZ2luSW5mbyYpOyAvLyBJZiB0aGUgY2hpbGQgaGFzIGFuIGFmdGVyIGJyZWFrLCB0aGVuIHJl
dHVybiBhIG5ldyBvZmZzZXQgdGhhdCBzaGlmdHMgdG8gdGhlIHRvcCBvZiB0aGUgbmV4dCBwYWdl
L2NvbHVtbi4KLSAgICBMYXlvdXRVbml0IGFkanVzdEJsb2NrQ2hpbGRGb3JQYWdpbmF0aW9uKExh
eW91dFVuaXQgbG9naWNhbFRvcEFmdGVyQ2xlYXIsIExheW91dFVuaXQgZXN0aW1hdGVXaXRob3V0
UGFnaW5hdGlvbiwgUmVuZGVyQm94JiBjaGlsZCwgYm9vbCBhdEJlZm9yZVNpZGVPZkJsb2NrKTsK
LQogICAgIHZpcnR1YWwgdm9pZCBzdHlsZVdpbGxDaGFuZ2UoU3R5bGVEaWZmZXJlbmNlLCBjb25z
dCBSZW5kZXJTdHlsZSogbmV3U3R5bGUpIE9WRVJSSURFOwogICAgIHZpcnR1YWwgdm9pZCBzdHls
ZURpZENoYW5nZShTdHlsZURpZmZlcmVuY2UsIGNvbnN0IFJlbmRlclN0eWxlKiBvbGRTdHlsZSkg
T1ZFUlJJREU7CiAKQEAgLTQ2Nyw3ICs0OTYsMTAgQEAgcHJpdmF0ZToKICAgICAvLyBQb3NpdGlv
bnMgbmV3IGZsb2F0cyBhbmQgYWxzbyBhZGp1c3QgYWxsIGZsb2F0cyBlbmNvdW50ZXJlZCBvbiB0
aGUgbGluZSBpZiBhbnkgb2YgdGhlbQogICAgIC8vIGhhdmUgdG8gbW92ZSB0byB0aGUgbmV4dCBw
YWdlL2NvbHVtbi4KICAgICBib29sIHBvc2l0aW9uTmV3RmxvYXRPbkxpbmUoRmxvYXRpbmdPYmpl
Y3QqIG5ld0Zsb2F0LCBGbG9hdGluZ09iamVjdCogbGFzdEZsb2F0RnJvbVByZXZpb3VzTGluZSwg
TGluZUluZm8mLCBMaW5lV2lkdGgmKTsKLQorICAgIC8vIFRoaXMgZnVuY3Rpb24gaXMgY2FsbGVk
IHRvIHRlc3QgYSBsaW5lIGJveCB0aGF0IGhhcyBtb3ZlZCBpbiB0aGUgYmxvY2sgZGlyZWN0aW9u
IHRvIHNlZSBpZiBpdCBoYXMgZW5kZWQgdXAgaW4gYSBuZXcKKyAgICAvLyByZWdpb24vcGFnZS9j
b2x1bW4gdGhhdCBoYXMgYSBkaWZmZXJlbnQgYXZhaWxhYmxlIGxpbmUgd2lkdGggdGhhbiB0aGUg
b2xkIG9uZS4gVXNlZCB0byBrbm93IHdoZW4geW91IGhhdmUgdG8gZGlydHkgYQorICAgIC8vIGxp
bmUsIGkuZS4sIHRoYXQgaXQgY2FuJ3QgYmUgcmUtdXNlZC4KKyAgICBib29sIGxpbmVXaWR0aEZv
clBhZ2luYXRlZExpbmVDaGFuZ2VkKFJvb3RJbmxpbmVCb3gqLCBMYXlvdXRVbml0IGxpbmVEZWx0
YSwgUmVuZGVyRmxvd1RocmVhZCopIGNvbnN0OwogCiAvLyBFTkQgTUVUSE9EUyBERUZJTkVEIElO
IFJlbmRlckJsb2NrTGluZUxheW91dAogCkluZGV4OiBTb3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcv
UmVuZGVyQmxvY2tMaW5lTGF5b3V0LmNwcAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2ViQ29yZS9y
ZW5kZXJpbmcvUmVuZGVyQmxvY2tMaW5lTGF5b3V0LmNwcAkocmV2aXNpb24gMTU3OTg0KQorKysg
U291cmNlL1dlYkNvcmUvcmVuZGVyaW5nL1JlbmRlckJsb2NrTGluZUxheW91dC5jcHAJKHdvcmtp
bmcgY29weSkKQEAgLTIxNjksNiArMjE2OSwxOCBAQCBib29sIFJlbmRlckJsb2NrRmxvdzo6Y2hl
Y2tQYWdpbmF0aW9uQW5kCiAgICAgcmV0dXJuIHRydWU7CiB9CiAKK2Jvb2wgUmVuZGVyQmxvY2tG
bG93OjpsaW5lV2lkdGhGb3JQYWdpbmF0ZWRMaW5lQ2hhbmdlZChSb290SW5saW5lQm94KiByb290
Qm94LCBMYXlvdXRVbml0IGxpbmVEZWx0YSwgUmVuZGVyRmxvd1RocmVhZCogZmxvd1RocmVhZCkg
Y29uc3QKK3sKKyAgICBpZiAoIWZsb3dUaHJlYWQpCisgICAgICAgIHJldHVybiBmYWxzZTsKKwor
ICAgIFJlbmRlclJlZ2lvbiogY3VycmVudFJlZ2lvbiA9IHJlZ2lvbkF0QmxvY2tPZmZzZXQocm9v
dEJveC0+bGluZVRvcFdpdGhMZWFkaW5nKCkgKyBsaW5lRGVsdGEpOworICAgIC8vIEp1c3QgYmFp
bCBpZiB0aGUgcmVnaW9uIGRpZG4ndCBjaGFuZ2UuCisgICAgaWYgKHJvb3RCb3gtPmNvbnRhaW5p
bmdSZWdpb24oKSA9PSBjdXJyZW50UmVnaW9uKQorICAgICAgICByZXR1cm4gZmFsc2U7CisgICAg
cmV0dXJuIHJvb3RCb3gtPnBhZ2luYXRlZExpbmVXaWR0aCgpICE9IGF2YWlsYWJsZUxvZ2ljYWxX
aWR0aEZvckNvbnRlbnQoY3VycmVudFJlZ2lvbik7Cit9CisKIGJvb2wgUmVuZGVyQmxvY2tGbG93
OjptYXRjaGVkRW5kTGluZShMaW5lTGF5b3V0U3RhdGUmIGxheW91dFN0YXRlLCBjb25zdCBJbmxp
bmVCaWRpUmVzb2x2ZXImIHJlc29sdmVyLCBjb25zdCBJbmxpbmVJdGVyYXRvciYgZW5kTGluZVN0
YXJ0LCBjb25zdCBCaWRpU3RhdHVzJiBlbmRMaW5lU3RhdHVzKQogewogICAgIGlmIChyZXNvbHZl
ci5wb3NpdGlvbigpID09IGVuZExpbmVTdGFydCkgewo=
</data>
<flag name="review"
          id="237809"
          type_id="1"
          status="+"
          setter="hyatt"
    />
          </attachment>
      

    </bug>

</bugzilla>