<?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>96129</bug_id>
          
          <creation_ts>2012-09-07 10:13:29 -0700</creation_ts>
          <short_desc>Make RenderBox::computeLogicalWidthInRegion const</short_desc>
          <delta_ts>2012-09-07 13:50:21 -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>Layout and Rendering</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>
          
          <blocked>94982</blocked>
          <everconfirmed>1</everconfirmed>
          <reporter name="Tony Chang">tony</reporter>
          <assigned_to name="Tony Chang">tony</assigned_to>
          <cc>eric</cc>
    
    <cc>hyatt</cc>
    
    <cc>ojan</cc>
    
    <cc>webkit.review.bot</cc>
          

      

      

      

          <comment_sort_order>oldest_to_newest</comment_sort_order>  
          <long_desc isprivate="0" >
    <commentid>714665</commentid>
    <comment_count>0</comment_count>
    <who name="Tony Chang">tony</who>
    <bug_when>2012-09-07 10:13:29 -0700</bug_when>
    <thetext>This allows us to get rid of the hack in RenderBox::renderBoxRegionInfo.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>714668</commentid>
    <comment_count>1</comment_count>
      <attachid>162799</attachid>
    <who name="Tony Chang">tony</who>
    <bug_when>2012-09-07 10:14:47 -0700</bug_when>
    <thetext>Created attachment 162799
Patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>714674</commentid>
    <comment_count>2</comment_count>
      <attachid>162799</attachid>
    <who name="Tony Chang">tony</who>
    <bug_when>2012-09-07 10:18:47 -0700</bug_when>
    <thetext>Comment on attachment 162799
Patch

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

&gt; Source/WebCore/rendering/RenderBox.cpp:1706
&gt; +        bool hasInvertedDirection = cb-&gt;style()-&gt;isLeftToRightDirection() != style()-&gt;isLeftToRightDirection();
&gt; +        computeInlineDirectionMargins(cb, containerLogicalWidthForAutoMargins, computedValues.m_extent,
&gt; +            hasInvertedDirection ? computedValues.m_margins.m_end : computedValues.m_margins.m_start,
&gt; +            hasInvertedDirection ? computedValues.m_margins.m_start : computedValues.m_margins.m_end);

This variable was named incorrectly. I made the name correct by flipping the expression.

&gt; Source/WebCore/rendering/RenderBox.cpp:1715
&gt; +        bool hasInvertedDirection = cb-&gt;style()-&gt;isLeftToRightDirection() != style()-&gt;isLeftToRightDirection();
&gt; +        if (hasInvertedDirection)
&gt; +            computedValues.m_margins.m_start = containerLogicalWidth - computedValues.m_extent - cb-&gt;marginStartForChild(this);
&gt; +        else
&gt; +            computedValues.m_margins.m_end = containerLogicalWidth - computedValues.m_extent - cb-&gt;marginStartForChild(this);

I could make a helper function for this on MarginValues if you think it helps.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>714693</commentid>
    <comment_count>3</comment_count>
      <attachid>162799</attachid>
    <who name="Ojan Vafai">ojan</who>
    <bug_when>2012-09-07 10:29:04 -0700</bug_when>
    <thetext>Comment on attachment 162799
Patch

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

&gt;&gt; Source/WebCore/rendering/RenderBox.cpp:1715
&gt;&gt; +            computedValues.m_margins.m_end = containerLogicalWidth - computedValues.m_extent - cb-&gt;marginStartForChild(this);
&gt; 
&gt; I could make a helper function for this on MarginValues if you think it helps.

Can you just create a local variable before the if/else?
LayoutUnit newMargin = containerLogicalWidth - computedValues.m_extent - cb-&gt;marginStartForChild(this);</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>714730</commentid>
    <comment_count>4</comment_count>
      <attachid>162815</attachid>
    <who name="Tony Chang">tony</who>
    <bug_when>2012-09-07 10:50:51 -0700</bug_when>
    <thetext>Created attachment 162815
Patch for landing</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>714731</commentid>
    <comment_count>5</comment_count>
      <attachid>162815</attachid>
    <who name="Tony Chang">tony</who>
    <bug_when>2012-09-07 10:51:13 -0700</bug_when>
    <thetext>Comment on attachment 162815
Patch for landing

Want to let the ews bots chew on this first.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>714933</commentid>
    <comment_count>6</comment_count>
      <attachid>162815</attachid>
    <who name="WebKit Review Bot">webkit.review.bot</who>
    <bug_when>2012-09-07 13:50:18 -0700</bug_when>
    <thetext>Comment on attachment 162815
Patch for landing

Clearing flags on attachment: 162815

Committed r127914: &lt;http://trac.webkit.org/changeset/127914&gt;</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>714934</commentid>
    <comment_count>7</comment_count>
    <who name="WebKit Review Bot">webkit.review.bot</who>
    <bug_when>2012-09-07 13:50:21 -0700</bug_when>
    <thetext>All reviewed patches have been landed.  Closing bug.</thetext>
  </long_desc>
      
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>162799</attachid>
            <date>2012-09-07 10:14:47 -0700</date>
            <delta_ts>2012-09-07 10:50:49 -0700</delta_ts>
            <desc>Patch</desc>
            <filename>bug-96129-20120907101427.patch</filename>
            <type>text/plain</type>
            <size>17180</size>
            <attacher name="Tony Chang">tony</attacher>
            
              <data encoding="base64">U3VidmVyc2lvbiBSZXZpc2lvbjogMTI3ODgzCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9D
aGFuZ2VMb2cgYi9Tb3VyY2UvV2ViQ29yZS9DaGFuZ2VMb2cKaW5kZXggM2M0NzMxZTk1NjFkMmYz
MGMyMDM5MjJhYjc0NTkyM2I1MTY1Mzk1MS4uMmM5ZjQ2Y2Q1NDczMDczODZlZDU0NGI1MThjZDRl
NmVjNWRlY2ZhMiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvQ2hhbmdlTG9nCisrKyBiL1Nv
dXJjZS9XZWJDb3JlL0NoYW5nZUxvZwpAQCAtMSwzICsxLDI1IEBACisyMDEyLTA5LTA3ICBUb255
IENoYW5nICA8dG9ueUBjaHJvbWl1bS5vcmc+CisKKyAgICAgICAgTWFrZSBSZW5kZXJCb3g6OmNv
bXB1dGVMb2dpY2FsV2lkdGhJblJlZ2lvbiBjb25zdAorICAgICAgICBodHRwczovL2J1Z3Mud2Vi
a2l0Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9OTYxMjkKKworICAgICAgICBSZXZpZXdlZCBieSBOT0JP
RFkgKE9PUFMhKS4KKworICAgICAgICBNYWtpbmcgY29tcHV0ZUxvZ2ljYWxXaWR0aEluUmVnaW9u
IGNvbnN0IGFsbG93cyB1cyB0byBnZXQgcmlkIG9mIHRoZSBncm9zcyBoYWNrIGluCisgICAgICAg
IFJlbmRlckJveDo6cmVuZGVyQm94UmVnaW9uSW5mby4KKworICAgICAgICBObyBuZXcgdGVzdHMs
IHRoaXMgaXMgY292ZXJlZCBieSBleGlzdGluZyBsYXlvdXQgdGVzdHMuCisKKyAgICAgICAgKiBy
ZW5kZXJpbmcvUmVuZGVyQm94LmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OlJlbmRlckJveDo6Y29u
c3RyYWluTG9naWNhbFdpZHRoSW5SZWdpb25CeU1pbk1heCk6IE1ha2UgY29uc3QuCisgICAgICAg
IChXZWJDb3JlOjpSZW5kZXJCb3g6OnNocmlua0xvZ2ljYWxXaWR0aFRvQXZvaWRGbG9hdHMpOiBN
YWtlIGNvbnN0LgorICAgICAgICAoV2ViQ29yZTo6UmVuZGVyQm94Ojpjb21wdXRlTG9naWNhbFdp
ZHRoKTogVXNlIGEgTG9naWNhbEV4dGVudENvbXB1dGVkVmFsdWVzIHdoZW4gY2FsbGluZyBjb21w
dXRlTG9naWNhbFdpZHRoSW5SZWdpb24uCisgICAgICAgIChXZWJDb3JlOjpSZW5kZXJCb3g6OmNv
bXB1dGVMb2dpY2FsV2lkdGhJblJlZ2lvbik6IE1ha2UgY29uc3QuIEZpbGwgaW4gYSBMb2dpY2Fs
RXh0ZW50Q29tcHV0ZWRWYWx1ZXMgc3RydWN0IGluc3RlYWQuCisgICAgICAgIChXZWJDb3JlOjpS
ZW5kZXJCb3g6OmNvbXB1dGVMb2dpY2FsV2lkdGhJblJlZ2lvblVzaW5nKTogTWFrZSBjb25zdC4K
KyAgICAgICAgKFdlYkNvcmU6OlJlbmRlckJveDo6cmVuZGVyQm94UmVnaW9uSW5mbyk6IFJlbW92
ZSBoYWNrIGFuZCBnZXQgcmVnaW9uIHdpZHRoIHZhbHVlcyBpbiBhIExvZ2ljYWxFeHRlbnRDb21w
dXRlZFZhbHVlcyBzdHJ1Y3QuCisgICAgICAgICogcmVuZGVyaW5nL1JlbmRlckJveC5oOgorICAg
ICAgICAoUmVuZGVyQm94KToKKwogMjAxMi0wOS0wNyAgRG9taW5pYyBNYXp6b25pICA8ZG1henpv
bmlAZ29vZ2xlLmNvbT4KIAogICAgICAgICBBWDogQVJJQSBzcGluIGJ1dHRvbiBzaG91bGQgc3Vw
cG9ydCByYW5nZSB2YWx1ZSBhdHRyaWJ1dGVzCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9y
ZW5kZXJpbmcvUmVuZGVyQm94LmNwcCBiL1NvdXJjZS9XZWJDb3JlL3JlbmRlcmluZy9SZW5kZXJC
b3guY3BwCmluZGV4IDE3MmM0NWZmNGRkYjlhODUwMzZkZTJiZGI4Y2NmOTI1NWI5M2JmODkuLmEw
NzI3MDU4NGZkMDVjZDA3MzBmNzM0ZjA5NjA1MTE1ZjYyYTZkNmUgMTAwNjQ0Ci0tLSBhL1NvdXJj
ZS9XZWJDb3JlL3JlbmRlcmluZy9SZW5kZXJCb3guY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL3Jl
bmRlcmluZy9SZW5kZXJCb3guY3BwCkBAIC00MTMsNyArNDEzLDcgQEAgdm9pZCBSZW5kZXJCb3g6
OnVwZGF0ZUxheWVyVHJhbnNmb3JtKCkKICAgICAgICAgbGF5ZXIoKS0+dXBkYXRlVHJhbnNmb3Jt
KCk7CiB9CiAKLUxheW91dFVuaXQgUmVuZGVyQm94Ojpjb25zdHJhaW5Mb2dpY2FsV2lkdGhJblJl
Z2lvbkJ5TWluTWF4KExheW91dFVuaXQgbG9naWNhbFdpZHRoLCBMYXlvdXRVbml0IGF2YWlsYWJs
ZVdpZHRoLCBSZW5kZXJCbG9jayogY2IsIFJlbmRlclJlZ2lvbiogcmVnaW9uLCBMYXlvdXRVbml0
IG9mZnNldEZyb21Mb2dpY2FsVG9wT2ZGaXJzdFBhZ2UpCitMYXlvdXRVbml0IFJlbmRlckJveDo6
Y29uc3RyYWluTG9naWNhbFdpZHRoSW5SZWdpb25CeU1pbk1heChMYXlvdXRVbml0IGxvZ2ljYWxX
aWR0aCwgTGF5b3V0VW5pdCBhdmFpbGFibGVXaWR0aCwgUmVuZGVyQmxvY2sqIGNiLCBSZW5kZXJS
ZWdpb24qIHJlZ2lvbiwgTGF5b3V0VW5pdCBvZmZzZXRGcm9tTG9naWNhbFRvcE9mRmlyc3RQYWdl
KSBjb25zdAogewogICAgIFJlbmRlclN0eWxlKiBzdHlsZVRvVXNlID0gc3R5bGUoKTsKICAgICBp
ZiAoIXN0eWxlVG9Vc2UtPmxvZ2ljYWxNYXhXaWR0aCgpLmlzVW5kZWZpbmVkKCkpCkBAIC0xMTUx
LDcgKzExNTEsNyBAQCBMYXlvdXRSZWN0IFJlbmRlckJveDo6Y2xpcFJlY3QoY29uc3QgTGF5b3V0
UG9pbnQmIGxvY2F0aW9uLCBSZW5kZXJSZWdpb24qIHJlZ2lvbgogICAgIHJldHVybiBjbGlwUmVj
dDsKIH0KIAotTGF5b3V0VW5pdCBSZW5kZXJCb3g6OnNocmlua0xvZ2ljYWxXaWR0aFRvQXZvaWRG
bG9hdHMoTGF5b3V0VW5pdCBjaGlsZE1hcmdpblN0YXJ0LCBMYXlvdXRVbml0IGNoaWxkTWFyZ2lu
RW5kLCBjb25zdCBSZW5kZXJCbG9jayogY2IsIFJlbmRlclJlZ2lvbiogcmVnaW9uLCBMYXlvdXRV
bml0IG9mZnNldEZyb21Mb2dpY2FsVG9wT2ZGaXJzdFBhZ2UpCitMYXlvdXRVbml0IFJlbmRlckJv
eDo6c2hyaW5rTG9naWNhbFdpZHRoVG9Bdm9pZEZsb2F0cyhMYXlvdXRVbml0IGNoaWxkTWFyZ2lu
U3RhcnQsIExheW91dFVuaXQgY2hpbGRNYXJnaW5FbmQsIGNvbnN0IFJlbmRlckJsb2NrKiBjYiwg
UmVuZGVyUmVnaW9uKiByZWdpb24sIExheW91dFVuaXQgb2Zmc2V0RnJvbUxvZ2ljYWxUb3BPZkZp
cnN0UGFnZSkgY29uc3QKIHsgICAgCiAgICAgUmVuZGVyUmVnaW9uKiBjb250YWluaW5nQmxvY2tS
ZWdpb24gPSAwOwogICAgIExheW91dFVuaXQgbG9naWNhbFRvcFBvc2l0aW9uID0gbG9naWNhbFRv
cCgpOwpAQCAtMTYxNywyMCArMTYxNywyNiBAQCB2b2lkIFJlbmRlckJveDo6cmVwYWludER1cmlu
Z0xheW91dElmTW92ZWQoY29uc3QgTGF5b3V0UmVjdCYgb2xkUmVjdCkKIAogdm9pZCBSZW5kZXJC
b3g6OmNvbXB1dGVMb2dpY2FsV2lkdGgoKQogewotICAgIGNvbXB1dGVMb2dpY2FsV2lkdGhJblJl
Z2lvbigpOworICAgIExvZ2ljYWxFeHRlbnRDb21wdXRlZFZhbHVlcyBjb21wdXRlZFZhbHVlczsK
KyAgICBjb21wdXRlTG9naWNhbFdpZHRoSW5SZWdpb24oY29tcHV0ZWRWYWx1ZXMpOworCisgICAg
c2V0TG9naWNhbFdpZHRoKGNvbXB1dGVkVmFsdWVzLm1fZXh0ZW50KTsKKyAgICBzZXRMb2dpY2Fs
TGVmdChjb21wdXRlZFZhbHVlcy5tX3Bvc2l0aW9uKTsKKyAgICBzZXRNYXJnaW5TdGFydChjb21w
dXRlZFZhbHVlcy5tX21hcmdpbnMubV9zdGFydCk7CisgICAgc2V0TWFyZ2luRW5kKGNvbXB1dGVk
VmFsdWVzLm1fbWFyZ2lucy5tX2VuZCk7CiB9CiAKLXZvaWQgUmVuZGVyQm94Ojpjb21wdXRlTG9n
aWNhbFdpZHRoSW5SZWdpb24oUmVuZGVyUmVnaW9uKiByZWdpb24sIExheW91dFVuaXQgb2Zmc2V0
RnJvbUxvZ2ljYWxUb3BPZkZpcnN0UGFnZSkKK3ZvaWQgUmVuZGVyQm94Ojpjb21wdXRlTG9naWNh
bFdpZHRoSW5SZWdpb24oTG9naWNhbEV4dGVudENvbXB1dGVkVmFsdWVzJiBjb21wdXRlZFZhbHVl
cywgUmVuZGVyUmVnaW9uKiByZWdpb24sIExheW91dFVuaXQgb2Zmc2V0RnJvbUxvZ2ljYWxUb3BP
ZkZpcnN0UGFnZSkgY29uc3QKIHsKKyAgICBjb21wdXRlZFZhbHVlcy5tX2V4dGVudCA9IGxvZ2lj
YWxXaWR0aCgpOworICAgIGNvbXB1dGVkVmFsdWVzLm1fcG9zaXRpb24gPSBsb2dpY2FsTGVmdCgp
OworICAgIGNvbXB1dGVkVmFsdWVzLm1fbWFyZ2lucy5tX3N0YXJ0ID0gbWFyZ2luU3RhcnQoKTsK
KyAgICBjb21wdXRlZFZhbHVlcy5tX21hcmdpbnMubV9lbmQgPSBtYXJnaW5FbmQoKTsKKwogICAg
IGlmIChpc091dE9mRmxvd1Bvc2l0aW9uZWQoKSkgewogICAgICAgICAvLyBGSVhNRTogVGhpcyBj
YWxjdWxhdGlvbiBpcyBub3QgcGF0Y2hlZCBmb3IgYmxvY2stZmxvdyB5ZXQuCiAgICAgICAgIC8v
IGh0dHBzOi8vYnVncy53ZWJraXQub3JnL3Nob3dfYnVnLmNnaT9pZD00NjUwMAotICAgICAgICBM
b2dpY2FsRXh0ZW50Q29tcHV0ZWRWYWx1ZXMgY29tcHV0ZWRWYWx1ZXM7CiAgICAgICAgIGNvbXB1
dGVQb3NpdGlvbmVkTG9naWNhbFdpZHRoKGNvbXB1dGVkVmFsdWVzLCByZWdpb24sIG9mZnNldEZy
b21Mb2dpY2FsVG9wT2ZGaXJzdFBhZ2UpOwotICAgICAgICBzZXRMb2dpY2FsV2lkdGgoY29tcHV0
ZWRWYWx1ZXMubV9leHRlbnQpOwotICAgICAgICBzZXRMb2dpY2FsTGVmdChjb21wdXRlZFZhbHVl
cy5tX3Bvc2l0aW9uKTsKLSAgICAgICAgc2V0TWFyZ2luU3RhcnQoY29tcHV0ZWRWYWx1ZXMubV9t
YXJnaW5zLm1fc3RhcnQpOwotICAgICAgICBzZXRNYXJnaW5FbmQoY29tcHV0ZWRWYWx1ZXMubV9t
YXJnaW5zLm1fZW5kKTsKICAgICAgICAgcmV0dXJuOwogICAgIH0KIApAQCAtMTY0Myw3ICsxNjQ5
LDcgQEAgdm9pZCBSZW5kZXJCb3g6OmNvbXB1dGVMb2dpY2FsV2lkdGhJblJlZ2lvbihSZW5kZXJS
ZWdpb24qIHJlZ2lvbiwgTGF5b3V0VW5pdCBvZmYKICAgICAvLyBGSVhNRTogQWNjb3VudCBmb3Ig
YmxvY2stZmxvdyBpbiBmbGV4aWJsZSBib3hlcy4KICAgICAvLyBodHRwczovL2J1Z3Mud2Via2l0
Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9NDY0MTgKICAgICBpZiAoaGFzT3ZlcnJpZGVXaWR0aCgpICYm
IHBhcmVudCgpLT5pc0ZsZXhpYmxlQm94SW5jbHVkaW5nRGVwcmVjYXRlZCgpKSB7Ci0gICAgICAg
IHNldExvZ2ljYWxXaWR0aChvdmVycmlkZUxvZ2ljYWxDb250ZW50V2lkdGgoKSArIGJvcmRlckFu
ZFBhZGRpbmdMb2dpY2FsV2lkdGgoKSk7CisgICAgICAgIGNvbXB1dGVkVmFsdWVzLm1fZXh0ZW50
ID0gb3ZlcnJpZGVMb2dpY2FsQ29udGVudFdpZHRoKCkgKyBib3JkZXJBbmRQYWRkaW5nTG9naWNh
bFdpZHRoKCk7CiAgICAgICAgIHJldHVybjsKICAgICB9CiAKQEAgLTE2NTQsNyArMTY2MCw3IEBA
IHZvaWQgUmVuZGVyQm94Ojpjb21wdXRlTG9naWNhbFdpZHRoSW5SZWdpb24oUmVuZGVyUmVnaW9u
KiByZWdpb24sIExheW91dFVuaXQgb2ZmCiAgICAgYm9vbCB0cmVhdEFzUmVwbGFjZWQgPSBzaG91
bGRDb21wdXRlU2l6ZUFzUmVwbGFjZWQoKSAmJiAoIWluVmVydGljYWxCb3ggfHwgIXN0cmV0Y2hp
bmcpOwogCiAgICAgUmVuZGVyU3R5bGUqIHN0eWxlVG9Vc2UgPSBzdHlsZSgpOwotICAgIExlbmd0
aCBsb2dpY2FsV2lkdGhMZW5ndGggPSAodHJlYXRBc1JlcGxhY2VkKSA/IExlbmd0aChjb21wdXRl
UmVwbGFjZWRMb2dpY2FsV2lkdGgoKSwgRml4ZWQpIDogc3R5bGVUb1VzZS0+bG9naWNhbFdpZHRo
KCk7CisgICAgTGVuZ3RoIGxvZ2ljYWxXaWR0aExlbmd0aCA9IHRyZWF0QXNSZXBsYWNlZCA/IExl
bmd0aChjb21wdXRlUmVwbGFjZWRMb2dpY2FsV2lkdGgoKSwgRml4ZWQpIDogc3R5bGVUb1VzZS0+
bG9naWNhbFdpZHRoKCk7CiAKICAgICBSZW5kZXJCbG9jayogY2IgPSBjb250YWluaW5nQmxvY2so
KTsKICAgICBMYXlvdXRVbml0IGNvbnRhaW5lckxvZ2ljYWxXaWR0aCA9IG1heDxMYXlvdXRVbml0
PigwLCBjb250YWluaW5nQmxvY2tMb2dpY2FsV2lkdGhGb3JDb250ZW50SW5SZWdpb24ocmVnaW9u
LCBvZmZzZXRGcm9tTG9naWNhbFRvcE9mRmlyc3RQYWdlKSk7CkBAIC0xNjY2LDUwICsxNjcyLDUy
IEBAIHZvaWQgUmVuZGVyQm94Ojpjb21wdXRlTG9naWNhbFdpZHRoSW5SZWdpb24oUmVuZGVyUmVn
aW9uKiByZWdpb24sIExheW91dFVuaXQgb2ZmCiAgICAgaWYgKGlzSW5saW5lKCkgJiYgIWlzSW5s
aW5lQmxvY2tPcklubGluZVRhYmxlKCkpIHsKICAgICAgICAgLy8ganVzdCBjYWxjdWxhdGUgbWFy
Z2lucwogICAgICAgICBSZW5kZXJWaWV3KiByZW5kZXJWaWV3ID0gdmlldygpOwotICAgICAgICBz
ZXRNYXJnaW5TdGFydChtaW5pbXVtVmFsdWVGb3JMZW5ndGgoc3R5bGVUb1VzZS0+bWFyZ2luU3Rh
cnQoKSwgY29udGFpbmVyTG9naWNhbFdpZHRoLCByZW5kZXJWaWV3KSk7Ci0gICAgICAgIHNldE1h
cmdpbkVuZChtaW5pbXVtVmFsdWVGb3JMZW5ndGgoc3R5bGVUb1VzZS0+bWFyZ2luRW5kKCksIGNv
bnRhaW5lckxvZ2ljYWxXaWR0aCwgcmVuZGVyVmlldykpOworICAgICAgICBjb21wdXRlZFZhbHVl
cy5tX21hcmdpbnMubV9zdGFydCA9IG1pbmltdW1WYWx1ZUZvckxlbmd0aChzdHlsZVRvVXNlLT5t
YXJnaW5TdGFydCgpLCBjb250YWluZXJMb2dpY2FsV2lkdGgsIHJlbmRlclZpZXcpOworICAgICAg
ICBjb21wdXRlZFZhbHVlcy5tX21hcmdpbnMubV9lbmQgPSBtaW5pbXVtVmFsdWVGb3JMZW5ndGgo
c3R5bGVUb1VzZS0+bWFyZ2luRW5kKCksIGNvbnRhaW5lckxvZ2ljYWxXaWR0aCwgcmVuZGVyVmll
dyk7CiAgICAgICAgIGlmICh0cmVhdEFzUmVwbGFjZWQpCi0gICAgICAgICAgICBzZXRMb2dpY2Fs
V2lkdGgobWF4PExheW91dFVuaXQ+KGZsb2F0VmFsdWVGb3JMZW5ndGgobG9naWNhbFdpZHRoTGVu
Z3RoLCAwKSArIGJvcmRlckFuZFBhZGRpbmdMb2dpY2FsV2lkdGgoKSwgbWluUHJlZmVycmVkTG9n
aWNhbFdpZHRoKCkpKTsKKyAgICAgICAgICAgIGNvbXB1dGVkVmFsdWVzLm1fZXh0ZW50ID0gbWF4
PExheW91dFVuaXQ+KGZsb2F0VmFsdWVGb3JMZW5ndGgobG9naWNhbFdpZHRoTGVuZ3RoLCAwKSAr
IGJvcmRlckFuZFBhZGRpbmdMb2dpY2FsV2lkdGgoKSwgbWluUHJlZmVycmVkTG9naWNhbFdpZHRo
KCkpOwogICAgICAgICByZXR1cm47CiAgICAgfQogCiAgICAgLy8gV2lkdGggY2FsY3VsYXRpb25z
CiAgICAgaWYgKHRyZWF0QXNSZXBsYWNlZCkKLSAgICAgICAgc2V0TG9naWNhbFdpZHRoKGxvZ2lj
YWxXaWR0aExlbmd0aC52YWx1ZSgpICsgYm9yZGVyQW5kUGFkZGluZ0xvZ2ljYWxXaWR0aCgpKTsK
KyAgICAgICAgY29tcHV0ZWRWYWx1ZXMubV9leHRlbnQgPSBsb2dpY2FsV2lkdGhMZW5ndGgudmFs
dWUoKSArIGJvcmRlckFuZFBhZGRpbmdMb2dpY2FsV2lkdGgoKTsKICAgICBlbHNlIHsKICAgICAg
ICAgTGF5b3V0VW5pdCBwcmVmZXJyZWRXaWR0aCA9IGNvbXB1dGVMb2dpY2FsV2lkdGhJblJlZ2lv
blVzaW5nKE1haW5PclByZWZlcnJlZFNpemUsIGNvbnRhaW5lcldpZHRoSW5JbmxpbmVEaXJlY3Rp
b24sIGNiLCByZWdpb24sIG9mZnNldEZyb21Mb2dpY2FsVG9wT2ZGaXJzdFBhZ2UpOwotICAgICAg
ICBzZXRMb2dpY2FsV2lkdGgoY29uc3RyYWluTG9naWNhbFdpZHRoSW5SZWdpb25CeU1pbk1heChw
cmVmZXJyZWRXaWR0aCwgY29udGFpbmVyV2lkdGhJbklubGluZURpcmVjdGlvbiwgY2IsIHJlZ2lv
biwgb2Zmc2V0RnJvbUxvZ2ljYWxUb3BPZkZpcnN0UGFnZSkpOworICAgICAgICBjb21wdXRlZFZh
bHVlcy5tX2V4dGVudCA9IGNvbnN0cmFpbkxvZ2ljYWxXaWR0aEluUmVnaW9uQnlNaW5NYXgocHJl
ZmVycmVkV2lkdGgsIGNvbnRhaW5lcldpZHRoSW5JbmxpbmVEaXJlY3Rpb24sIGNiLCByZWdpb24s
IG9mZnNldEZyb21Mb2dpY2FsVG9wT2ZGaXJzdFBhZ2UpOwogICAgIH0KIAogICAgIC8vIEZpZWxk
c2V0cyBhcmUgY3VycmVudGx5IHRoZSBvbmx5IG9iamVjdHMgdGhhdCBzdHJldGNoIHRvIHRoZWly
IG1pbmltdW0gd2lkdGguCiAgICAgaWYgKHN0cmV0Y2hlc1RvTWluSW50cmluc2ljTG9naWNhbFdp
ZHRoKCkpCi0gICAgICAgIHNldExvZ2ljYWxXaWR0aChtYXgobG9naWNhbFdpZHRoKCksIG1pblBy
ZWZlcnJlZExvZ2ljYWxXaWR0aCgpKSk7CisgICAgICAgIGNvbXB1dGVkVmFsdWVzLm1fZXh0ZW50
ID0gbWF4KGNvbXB1dGVkVmFsdWVzLm1fZXh0ZW50LCBtaW5QcmVmZXJyZWRMb2dpY2FsV2lkdGgo
KSk7CiAKICAgICAvLyBNYXJnaW4gY2FsY3VsYXRpb25zLgogICAgIGlmIChoYXNQZXJwZW5kaWN1
bGFyQ29udGFpbmluZ0Jsb2NrIHx8IGlzRmxvYXRpbmcoKSB8fCBpc0lubGluZSgpKSB7CiAgICAg
ICAgIFJlbmRlclZpZXcqIHJlbmRlclZpZXcgPSB2aWV3KCk7Ci0gICAgICAgIHNldE1hcmdpblN0
YXJ0KG1pbmltdW1WYWx1ZUZvckxlbmd0aChzdHlsZVRvVXNlLT5tYXJnaW5TdGFydCgpLCBjb250
YWluZXJMb2dpY2FsV2lkdGgsIHJlbmRlclZpZXcpKTsKLSAgICAgICAgc2V0TWFyZ2luRW5kKG1p
bmltdW1WYWx1ZUZvckxlbmd0aChzdHlsZVRvVXNlLT5tYXJnaW5FbmQoKSwgY29udGFpbmVyTG9n
aWNhbFdpZHRoLCByZW5kZXJWaWV3KSk7CisgICAgICAgIGNvbXB1dGVkVmFsdWVzLm1fbWFyZ2lu
cy5tX3N0YXJ0ID0gbWluaW11bVZhbHVlRm9yTGVuZ3RoKHN0eWxlVG9Vc2UtPm1hcmdpblN0YXJ0
KCksIGNvbnRhaW5lckxvZ2ljYWxXaWR0aCwgcmVuZGVyVmlldyk7CisgICAgICAgIGNvbXB1dGVk
VmFsdWVzLm1fbWFyZ2lucy5tX2VuZCA9IG1pbmltdW1WYWx1ZUZvckxlbmd0aChzdHlsZVRvVXNl
LT5tYXJnaW5FbmQoKSwgY29udGFpbmVyTG9naWNhbFdpZHRoLCByZW5kZXJWaWV3KTsKICAgICB9
IGVsc2UgewogICAgICAgICBMYXlvdXRVbml0IGNvbnRhaW5lckxvZ2ljYWxXaWR0aEZvckF1dG9N
YXJnaW5zID0gY29udGFpbmVyTG9naWNhbFdpZHRoOwogICAgICAgICBpZiAoYXZvaWRzRmxvYXRz
KCkgJiYgY2ItPmNvbnRhaW5zRmxvYXRzKCkpCiAgICAgICAgICAgICBjb250YWluZXJMb2dpY2Fs
V2lkdGhGb3JBdXRvTWFyZ2lucyA9IGNvbnRhaW5pbmdCbG9ja0F2YWlsYWJsZUxpbmVXaWR0aElu
UmVnaW9uKHJlZ2lvbiwgb2Zmc2V0RnJvbUxvZ2ljYWxUb3BPZkZpcnN0UGFnZSk7Ci0gICAgICAg
IENvbXB1dGVkTWFyZ2luVmFsdWVzIG1hcmdpblZhbHVlczsKLSAgICAgICAgYm9vbCBoYXNJbnZl
cnRlZERpcmVjdGlvbiA9ICBjYi0+c3R5bGUoKS0+aXNMZWZ0VG9SaWdodERpcmVjdGlvbigpID09
IHN0eWxlKCktPmlzTGVmdFRvUmlnaHREaXJlY3Rpb24oKTsKLSAgICAgICAgY29tcHV0ZUlubGlu
ZURpcmVjdGlvbk1hcmdpbnMoY2IsIGNvbnRhaW5lckxvZ2ljYWxXaWR0aEZvckF1dG9NYXJnaW5z
LCBsb2dpY2FsV2lkdGgoKSwKLSAgICAgICAgICAgIGhhc0ludmVydGVkRGlyZWN0aW9uID8gbWFy
Z2luVmFsdWVzLm1fc3RhcnQgOiBtYXJnaW5WYWx1ZXMubV9lbmQsCi0gICAgICAgICAgICBoYXNJ
bnZlcnRlZERpcmVjdGlvbiA/IG1hcmdpblZhbHVlcy5tX2VuZCA6IG1hcmdpblZhbHVlcy5tX3N0
YXJ0KTsKLSAgICAgICAgc2V0TWFyZ2luU3RhcnQobWFyZ2luVmFsdWVzLm1fc3RhcnQpOwotICAg
ICAgICBzZXRNYXJnaW5FbmQobWFyZ2luVmFsdWVzLm1fZW5kKTsKKyAgICAgICAgYm9vbCBoYXNJ
bnZlcnRlZERpcmVjdGlvbiA9IGNiLT5zdHlsZSgpLT5pc0xlZnRUb1JpZ2h0RGlyZWN0aW9uKCkg
IT0gc3R5bGUoKS0+aXNMZWZ0VG9SaWdodERpcmVjdGlvbigpOworICAgICAgICBjb21wdXRlSW5s
aW5lRGlyZWN0aW9uTWFyZ2lucyhjYiwgY29udGFpbmVyTG9naWNhbFdpZHRoRm9yQXV0b01hcmdp
bnMsIGNvbXB1dGVkVmFsdWVzLm1fZXh0ZW50LAorICAgICAgICAgICAgaGFzSW52ZXJ0ZWREaXJl
Y3Rpb24gPyBjb21wdXRlZFZhbHVlcy5tX21hcmdpbnMubV9lbmQgOiBjb21wdXRlZFZhbHVlcy5t
X21hcmdpbnMubV9zdGFydCwKKyAgICAgICAgICAgIGhhc0ludmVydGVkRGlyZWN0aW9uID8gY29t
cHV0ZWRWYWx1ZXMubV9tYXJnaW5zLm1fc3RhcnQgOiBjb21wdXRlZFZhbHVlcy5tX21hcmdpbnMu
bV9lbmQpOwogICAgIH0KICAgICAKLSAgICBpZiAoIWhhc1BlcnBlbmRpY3VsYXJDb250YWluaW5n
QmxvY2sgJiYgY29udGFpbmVyTG9naWNhbFdpZHRoICYmIGNvbnRhaW5lckxvZ2ljYWxXaWR0aCAh
PSAobG9naWNhbFdpZHRoKCkgKyBtYXJnaW5TdGFydCgpICsgbWFyZ2luRW5kKCkpCi0gICAgICAg
ICAgICAmJiAhaXNGbG9hdGluZygpICYmICFpc0lubGluZSgpICYmICFjYi0+aXNGbGV4aWJsZUJv
eEluY2x1ZGluZ0RlcHJlY2F0ZWQoKSkKLSAgICAgICAgY2ItPnNldE1hcmdpbkVuZEZvckNoaWxk
KHRoaXMsIGNvbnRhaW5lckxvZ2ljYWxXaWR0aCAtIGxvZ2ljYWxXaWR0aCgpIC0gY2ItPm1hcmdp
blN0YXJ0Rm9yQ2hpbGQodGhpcykpOworICAgIGlmICghaGFzUGVycGVuZGljdWxhckNvbnRhaW5p
bmdCbG9jayAmJiBjb250YWluZXJMb2dpY2FsV2lkdGggJiYgY29udGFpbmVyTG9naWNhbFdpZHRo
ICE9IChjb21wdXRlZFZhbHVlcy5tX2V4dGVudCArIGNvbXB1dGVkVmFsdWVzLm1fbWFyZ2lucy5t
X3N0YXJ0ICsgY29tcHV0ZWRWYWx1ZXMubV9tYXJnaW5zLm1fZW5kKQorICAgICAgICAgICAgJiYg
IWlzRmxvYXRpbmcoKSAmJiAhaXNJbmxpbmUoKSAmJiAhY2ItPmlzRmxleGlibGVCb3hJbmNsdWRp
bmdEZXByZWNhdGVkKCkpIHsKKyAgICAgICAgYm9vbCBoYXNJbnZlcnRlZERpcmVjdGlvbiA9IGNi
LT5zdHlsZSgpLT5pc0xlZnRUb1JpZ2h0RGlyZWN0aW9uKCkgIT0gc3R5bGUoKS0+aXNMZWZ0VG9S
aWdodERpcmVjdGlvbigpOworICAgICAgICBpZiAoaGFzSW52ZXJ0ZWREaXJlY3Rpb24pCisgICAg
ICAgICAgICBjb21wdXRlZFZhbHVlcy5tX21hcmdpbnMubV9zdGFydCA9IGNvbnRhaW5lckxvZ2lj
YWxXaWR0aCAtIGNvbXB1dGVkVmFsdWVzLm1fZXh0ZW50IC0gY2ItPm1hcmdpblN0YXJ0Rm9yQ2hp
bGQodGhpcyk7CisgICAgICAgIGVsc2UKKyAgICAgICAgICAgIGNvbXB1dGVkVmFsdWVzLm1fbWFy
Z2lucy5tX2VuZCA9IGNvbnRhaW5lckxvZ2ljYWxXaWR0aCAtIGNvbXB1dGVkVmFsdWVzLm1fZXh0
ZW50IC0gY2ItPm1hcmdpblN0YXJ0Rm9yQ2hpbGQodGhpcyk7CisgICAgfQogfQogCiBMYXlvdXRV
bml0IFJlbmRlckJveDo6Y29tcHV0ZUxvZ2ljYWxXaWR0aEluUmVnaW9uVXNpbmcoU2l6ZVR5cGUg
d2lkdGhUeXBlLCBMYXlvdXRVbml0IGF2YWlsYWJsZUxvZ2ljYWxXaWR0aCwKLSAgICBjb25zdCBS
ZW5kZXJCbG9jayogY2IsIFJlbmRlclJlZ2lvbiogcmVnaW9uLCBMYXlvdXRVbml0IG9mZnNldEZy
b21Mb2dpY2FsVG9wT2ZGaXJzdFBhZ2UpCisgICAgY29uc3QgUmVuZGVyQmxvY2sqIGNiLCBSZW5k
ZXJSZWdpb24qIHJlZ2lvbiwgTGF5b3V0VW5pdCBvZmZzZXRGcm9tTG9naWNhbFRvcE9mRmlyc3RQ
YWdlKSBjb25zdAogewogICAgIFJlbmRlclN0eWxlKiBzdHlsZVRvVXNlID0gc3R5bGUoKTsKICAg
ICBMZW5ndGggbG9naWNhbFdpZHRoOwpAQCAtMTg3NSwyMSArMTg4MywxMiBAQCBSZW5kZXJCb3hS
ZWdpb25JbmZvKiBSZW5kZXJCb3g6OnJlbmRlckJveFJlZ2lvbkluZm8oUmVuZGVyUmVnaW9uKiBy
ZWdpb24sIExheW91dAogICAgICAgICB8fCBpc1RhYmxlQ2VsbCgpIHx8ICFpc0Jsb2NrRmxvdygp
IHx8IGlzUmVuZGVyRmxvd1RocmVhZCgpKQogICAgICAgICByZXR1cm4gMDsKIAotICAgIC8vIEZJ
WE1FOiBJdCdzIGdyb3NzIHRvIGNhc3QgYXdheSB0aGUgY29uc3QsIGJ1dCBpdCB3b3VsZCBiZSBh
IGh1Z2UgcmVmYWN0b3JpbmcgdG8KLSAgICAvLyBjaGFuZ2UgYWxsIHdpZHRoIGNvbXB1dGF0aW9u
IHRvIGF2b2lkIHVwZGF0aW5nIGFueSBtZW1iZXIgdmFyaWFibGVzLCBhbmQgaXQgd291bGQgYmUg
cHJldHR5IGxhbWUgdG8KLSAgICAvLyBtYWtlIGFsbCB0aGUgdmFyaWFibGVzIG11dGFibGUgYXMg
d2VsbC4KICAgICBSZW5kZXJGbG93VGhyZWFkKiBmbG93VGhyZWFkID0gZW5jbG9zaW5nUmVuZGVy
Rmxvd1RocmVhZCgpOwogICAgIGlmIChmbG93VGhyZWFkLT5zdHlsZSgpLT53cml0aW5nTW9kZSgp
ICE9IHN0eWxlKCktPndyaXRpbmdNb2RlKCkpCiAgICAgICAgIHJldHVybiAwOwogCi0gICAgTGF5
b3V0VW5pdCBvbGRMb2dpY2FsV2lkdGggPSBsb2dpY2FsV2lkdGgoKTsKLSAgICBMYXlvdXRVbml0
IG9sZExvZ2ljYWxMZWZ0ID0gbG9naWNhbExlZnQoKTsKLSAgICBMYXlvdXRVbml0IG9sZE1hcmdp
blN0YXJ0ID0gbWFyZ2luU3RhcnQoKTsKLSAgICBMYXlvdXRVbml0IG9sZE1hcmdpbkVuZCA9IG1h
cmdpbkVuZCgpOwotCi0gICAgUmVuZGVyQm94KiBtdXRhYmxlQm94ID0gY29uc3RfY2FzdDxSZW5k
ZXJCb3gqPih0aGlzKTsKLSAgICAKLSAgICBtdXRhYmxlQm94LT5jb21wdXRlTG9naWNhbFdpZHRo
SW5SZWdpb24ocmVnaW9uLCBvZmZzZXRGcm9tTG9naWNhbFRvcE9mRmlyc3RQYWdlKTsKKyAgICBM
b2dpY2FsRXh0ZW50Q29tcHV0ZWRWYWx1ZXMgY29tcHV0ZWRWYWx1ZXM7CisgICAgY29tcHV0ZUxv
Z2ljYWxXaWR0aEluUmVnaW9uKGNvbXB1dGVkVmFsdWVzLCByZWdpb24sIG9mZnNldEZyb21Mb2dp
Y2FsVG9wT2ZGaXJzdFBhZ2UpOwogCiAgICAgLy8gTm93IGRldGVybWluZSB0aGUgaW5zZXRzIGJh
c2VkIG9mZiB3aGVyZSB0aGlzIG9iamVjdCBpcyBzdXBwb3NlZCB0byBiZSBwb3NpdGlvbmVkLgog
ICAgIFJlbmRlckJsb2NrKiBjYiA9IGNvbnRhaW5pbmdCbG9jaygpOwpAQCAtMTg5OSwyMiArMTg5
OCwxNiBAQCBSZW5kZXJCb3hSZWdpb25JbmZvKiBSZW5kZXJCb3g6OnJlbmRlckJveFJlZ2lvbklu
Zm8oUmVuZGVyUmVnaW9uKiByZWdpb24sIExheW91dAogICAgIExheW91dFVuaXQgY29udGFpbmlu
Z0Jsb2NrTG9naWNhbFdpZHRoID0gY2ItPmxvZ2ljYWxXaWR0aCgpOwogICAgIExheW91dFVuaXQg
Y29udGFpbmluZ0Jsb2NrTG9naWNhbFdpZHRoSW5SZWdpb24gPSBjb250YWluaW5nQmxvY2tJbmZv
ID8gY29udGFpbmluZ0Jsb2NrSW5mby0+bG9naWNhbFdpZHRoKCkgOiBjb250YWluaW5nQmxvY2tM
b2dpY2FsV2lkdGg7CiAgICAgCi0gICAgTGF5b3V0VW5pdCBtYXJnaW5TdGFydEluUmVnaW9uID0g
bWFyZ2luU3RhcnQoKTsKLSAgICBMYXlvdXRVbml0IHN0YXJ0TWFyZ2luRGVsdGEgPSBtYXJnaW5T
dGFydEluUmVnaW9uIC0gb2xkTWFyZ2luU3RhcnQ7Ci0gICAgTGF5b3V0VW5pdCBsb2dpY2FsV2lk
dGhJblJlZ2lvbiA9IGxvZ2ljYWxXaWR0aCgpOwotICAgIExheW91dFVuaXQgbG9naWNhbExlZnRJ
blJlZ2lvbiA9IGxvZ2ljYWxMZWZ0KCk7Ci0gICAgTGF5b3V0VW5pdCB3aWR0aERlbHRhID0gbG9n
aWNhbFdpZHRoSW5SZWdpb24gLSBvbGRMb2dpY2FsV2lkdGg7Ci0gICAgTGF5b3V0VW5pdCBsb2dp
Y2FsTGVmdERlbHRhID0gaXNPdXRPZkZsb3dQb3NpdGlvbmVkKCkgPyBsb2dpY2FsTGVmdEluUmVn
aW9uIC0gb2xkTG9naWNhbExlZnQgOiBzdGFydE1hcmdpbkRlbHRhOworICAgIExheW91dFVuaXQg
bWFyZ2luU3RhcnRJblJlZ2lvbiA9IGNvbXB1dGVkVmFsdWVzLm1fbWFyZ2lucy5tX3N0YXJ0Owor
ICAgIExheW91dFVuaXQgc3RhcnRNYXJnaW5EZWx0YSA9IG1hcmdpblN0YXJ0SW5SZWdpb24gLSBt
YXJnaW5TdGFydCgpOworICAgIExheW91dFVuaXQgbG9naWNhbFdpZHRoSW5SZWdpb24gPSBjb21w
dXRlZFZhbHVlcy5tX2V4dGVudDsKKyAgICBMYXlvdXRVbml0IGxvZ2ljYWxMZWZ0SW5SZWdpb24g
PSBjb21wdXRlZFZhbHVlcy5tX3Bvc2l0aW9uOworICAgIExheW91dFVuaXQgd2lkdGhEZWx0YSA9
IGxvZ2ljYWxXaWR0aEluUmVnaW9uIC0gbG9naWNhbFdpZHRoKCk7CisgICAgTGF5b3V0VW5pdCBs
b2dpY2FsTGVmdERlbHRhID0gaXNPdXRPZkZsb3dQb3NpdGlvbmVkKCkgPyBsb2dpY2FsTGVmdElu
UmVnaW9uIC0gbG9naWNhbExlZnQoKSA6IHN0YXJ0TWFyZ2luRGVsdGE7CiAgICAgTGF5b3V0VW5p
dCBsb2dpY2FsUmlnaHRJblJlZ2lvbiA9IGNvbnRhaW5pbmdCbG9ja0xvZ2ljYWxXaWR0aEluUmVn
aW9uIC0gKGxvZ2ljYWxMZWZ0SW5SZWdpb24gKyBsb2dpY2FsV2lkdGhJblJlZ2lvbik7Ci0gICAg
TGF5b3V0VW5pdCBvbGRMb2dpY2FsUmlnaHQgPSBjb250YWluaW5nQmxvY2tMb2dpY2FsV2lkdGgg
LSAob2xkTG9naWNhbExlZnQgKyBvbGRMb2dpY2FsV2lkdGgpOworICAgIExheW91dFVuaXQgb2xk
TG9naWNhbFJpZ2h0ID0gY29udGFpbmluZ0Jsb2NrTG9naWNhbFdpZHRoIC0gKGxvZ2ljYWxMZWZ0
KCkgKyBsb2dpY2FsV2lkdGgoKSk7CiAgICAgTGF5b3V0VW5pdCBsb2dpY2FsUmlnaHREZWx0YSA9
IGlzT3V0T2ZGbG93UG9zaXRpb25lZCgpID8gbG9naWNhbFJpZ2h0SW5SZWdpb24gLSBvbGRMb2dp
Y2FsUmlnaHQgOiBzdGFydE1hcmdpbkRlbHRhOwogCi0gICAgLy8gU2V0IG91ciB2YWx1ZXMgYmFj
ay4KLSAgICBtdXRhYmxlQm94LT5zZXRMb2dpY2FsV2lkdGgob2xkTG9naWNhbFdpZHRoKTsKLSAg
ICBtdXRhYmxlQm94LT5zZXRMb2dpY2FsTGVmdChvbGRMb2dpY2FsTGVmdCk7Ci0gICAgbXV0YWJs
ZUJveC0+c2V0TWFyZ2luU3RhcnQob2xkTWFyZ2luU3RhcnQpOwotICAgIG11dGFibGVCb3gtPnNl
dE1hcmdpbkVuZChvbGRNYXJnaW5FbmQpOwotCiAgICAgTGF5b3V0VW5pdCBsb2dpY2FsTGVmdE9m
ZnNldCA9IDA7CiAgICAgCiAgICAgaWYgKCFpc091dE9mRmxvd1Bvc2l0aW9uZWQoKSAmJiBhdm9p
ZHNGbG9hdHMoKSAmJiBjYi0+Y29udGFpbnNGbG9hdHMoKSkgewpkaWZmIC0tZ2l0IGEvU291cmNl
L1dlYkNvcmUvcmVuZGVyaW5nL1JlbmRlckJveC5oIGIvU291cmNlL1dlYkNvcmUvcmVuZGVyaW5n
L1JlbmRlckJveC5oCmluZGV4IGJhOTIwM2U3N2VhM2UyNTZkNTYyMjM5MzkwYjFjYzBiYWZlZjIw
ZDYuLmVkNzBhOTRiODU4MjMwMjgzNGYwZWI2Mjk5MTZmYjNlM2MwZjQ3MGIgMTAwNjQ0Ci0tLSBh
L1NvdXJjZS9XZWJDb3JlL3JlbmRlcmluZy9SZW5kZXJCb3guaAorKysgYi9Tb3VyY2UvV2ViQ29y
ZS9yZW5kZXJpbmcvUmVuZGVyQm94LmgKQEAgLTc1LDcgKzc1LDcgQEAgcHVibGljOgogICAgIExh
eW91dFVuaXQgbG9naWNhbFdpZHRoKCkgY29uc3QgeyByZXR1cm4gc3R5bGUoKS0+aXNIb3Jpem9u
dGFsV3JpdGluZ01vZGUoKSA/IHdpZHRoKCkgOiBoZWlnaHQoKTsgfQogICAgIExheW91dFVuaXQg
bG9naWNhbEhlaWdodCgpIGNvbnN0IHsgcmV0dXJuIHN0eWxlKCktPmlzSG9yaXpvbnRhbFdyaXRp
bmdNb2RlKCkgPyBoZWlnaHQoKSA6IHdpZHRoKCk7IH0KIAotICAgIExheW91dFVuaXQgY29uc3Ry
YWluTG9naWNhbFdpZHRoSW5SZWdpb25CeU1pbk1heChMYXlvdXRVbml0LCBMYXlvdXRVbml0LCBS
ZW5kZXJCbG9jayosIFJlbmRlclJlZ2lvbiogPSAwLCBMYXlvdXRVbml0IG9mZnNldEZyb21Mb2dp
Y2FsVG9wT2ZGaXJzdFBhZ2UgPSBaRVJPX0xBWU9VVF9VTklUKTsKKyAgICBMYXlvdXRVbml0IGNv
bnN0cmFpbkxvZ2ljYWxXaWR0aEluUmVnaW9uQnlNaW5NYXgoTGF5b3V0VW5pdCwgTGF5b3V0VW5p
dCwgUmVuZGVyQmxvY2sqLCBSZW5kZXJSZWdpb24qID0gMCwgTGF5b3V0VW5pdCBvZmZzZXRGcm9t
TG9naWNhbFRvcE9mRmlyc3RQYWdlID0gWkVST19MQVlPVVRfVU5JVCkgY29uc3Q7CiAgICAgTGF5
b3V0VW5pdCBjb25zdHJhaW5Mb2dpY2FsSGVpZ2h0QnlNaW5NYXgoTGF5b3V0VW5pdCkgY29uc3Q7
CiAKICAgICBpbnQgcGl4ZWxTbmFwcGVkTG9naWNhbEhlaWdodCgpIGNvbnN0IHsgcmV0dXJuIHN0
eWxlKCktPmlzSG9yaXpvbnRhbFdyaXRpbmdNb2RlKCkgPyBwaXhlbFNuYXBwZWRIZWlnaHQoKSA6
IHBpeGVsU25hcHBlZFdpZHRoKCk7IH0KQEAgLTM2OSw3ICszNjksNyBAQCBwdWJsaWM6CiAgICAg
dm9pZCBjb21wdXRlTG9naWNhbEhlaWdodChMb2dpY2FsRXh0ZW50Q29tcHV0ZWRWYWx1ZXMmKSBj
b25zdDsKIAogICAgIFJlbmRlckJveFJlZ2lvbkluZm8qIHJlbmRlckJveFJlZ2lvbkluZm8oUmVu
ZGVyUmVnaW9uKiwgTGF5b3V0VW5pdCBvZmZzZXRGcm9tTG9naWNhbFRvcE9mRmlyc3RQYWdlLCBS
ZW5kZXJCb3hSZWdpb25JbmZvRmxhZ3MgPSBDYWNoZVJlbmRlckJveFJlZ2lvbkluZm8pIGNvbnN0
OwotICAgIHZvaWQgY29tcHV0ZUxvZ2ljYWxXaWR0aEluUmVnaW9uKFJlbmRlclJlZ2lvbiogPSAw
LCBMYXlvdXRVbml0IG9mZnNldEZyb21Mb2dpY2FsVG9wT2ZGaXJzdFBhZ2UgPSBaRVJPX0xBWU9V
VF9VTklUKTsKKyAgICB2b2lkIGNvbXB1dGVMb2dpY2FsV2lkdGhJblJlZ2lvbihMb2dpY2FsRXh0
ZW50Q29tcHV0ZWRWYWx1ZXMmLCBSZW5kZXJSZWdpb24qID0gMCwgTGF5b3V0VW5pdCBvZmZzZXRG
cm9tTG9naWNhbFRvcE9mRmlyc3RQYWdlID0gWkVST19MQVlPVVRfVU5JVCkgY29uc3Q7CiAKICAg
ICBib29sIHN0cmV0Y2hlc1RvVmlld3BvcnQoKSBjb25zdAogICAgIHsKQEAgLTM4NSw5ICszODUs
OSBAQCBwdWJsaWM6CiAgICAgYm9vbCBzaXplc0xvZ2ljYWxXaWR0aFRvRml0Q29udGVudChTaXpl
VHlwZSkgY29uc3Q7CiAgICAgdmlydHVhbCBib29sIHN0cmV0Y2hlc1RvTWluSW50cmluc2ljTG9n
aWNhbFdpZHRoKCkgY29uc3QgeyByZXR1cm4gZmFsc2U7IH0KIAotICAgIExheW91dFVuaXQgc2hy
aW5rTG9naWNhbFdpZHRoVG9Bdm9pZEZsb2F0cyhMYXlvdXRVbml0IGNoaWxkTWFyZ2luU3RhcnQs
IExheW91dFVuaXQgY2hpbGRNYXJnaW5FbmQsIGNvbnN0IFJlbmRlckJsb2NrKiBjYiwgUmVuZGVy
UmVnaW9uKiwgTGF5b3V0VW5pdCBvZmZzZXRGcm9tTG9naWNhbFRvcE9mRmlyc3RQYWdlKTsKKyAg
ICBMYXlvdXRVbml0IHNocmlua0xvZ2ljYWxXaWR0aFRvQXZvaWRGbG9hdHMoTGF5b3V0VW5pdCBj
aGlsZE1hcmdpblN0YXJ0LCBMYXlvdXRVbml0IGNoaWxkTWFyZ2luRW5kLCBjb25zdCBSZW5kZXJC
bG9jayogY2IsIFJlbmRlclJlZ2lvbiosIExheW91dFVuaXQgb2Zmc2V0RnJvbUxvZ2ljYWxUb3BP
ZkZpcnN0UGFnZSkgY29uc3Q7CiAKLSAgICBMYXlvdXRVbml0IGNvbXB1dGVMb2dpY2FsV2lkdGhJ
blJlZ2lvblVzaW5nKFNpemVUeXBlLCBMYXlvdXRVbml0IGF2YWlsYWJsZUxvZ2ljYWxXaWR0aCwg
Y29uc3QgUmVuZGVyQmxvY2sqIGNvbnRhaW5pbmdCbG9jaywgUmVuZGVyUmVnaW9uKiwgTGF5b3V0
VW5pdCBvZmZzZXRGcm9tTG9naWNhbFRvcE9mRmlyc3RQYWdlKTsKKyAgICBMYXlvdXRVbml0IGNv
bXB1dGVMb2dpY2FsV2lkdGhJblJlZ2lvblVzaW5nKFNpemVUeXBlLCBMYXlvdXRVbml0IGF2YWls
YWJsZUxvZ2ljYWxXaWR0aCwgY29uc3QgUmVuZGVyQmxvY2sqIGNvbnRhaW5pbmdCbG9jaywgUmVu
ZGVyUmVnaW9uKiwgTGF5b3V0VW5pdCBvZmZzZXRGcm9tTG9naWNhbFRvcE9mRmlyc3RQYWdlKSBj
b25zdDsKICAgICBMYXlvdXRVbml0IGNvbXB1dGVMb2dpY2FsSGVpZ2h0VXNpbmcoU2l6ZVR5cGUs
IGNvbnN0IExlbmd0aCYgaGVpZ2h0KSBjb25zdDsKICAgICBMYXlvdXRVbml0IGNvbXB1dGVMb2dp
Y2FsQ2xpZW50SGVpZ2h0KFNpemVUeXBlLCBjb25zdCBMZW5ndGgmIGhlaWdodCk7CiAgICAgTGF5
b3V0VW5pdCBjb21wdXRlQ29udGVudExvZ2ljYWxIZWlnaHRVc2luZyhTaXplVHlwZSwgY29uc3Qg
TGVuZ3RoJiBoZWlnaHQpIGNvbnN0Owo=
</data>

          </attachment>
          <attachment
              isobsolete="0"
              ispatch="1"
              isprivate="0"
          >
            <attachid>162815</attachid>
            <date>2012-09-07 10:50:51 -0700</date>
            <delta_ts>2012-09-07 13:50:18 -0700</delta_ts>
            <desc>Patch for landing</desc>
            <filename>bug-96129-20120907105030.patch</filename>
            <type>text/plain</type>
            <size>17159</size>
            <attacher name="Tony Chang">tony</attacher>
            
              <data encoding="base64">U3VidmVyc2lvbiBSZXZpc2lvbjogMTI3ODg2CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9D
aGFuZ2VMb2cgYi9Tb3VyY2UvV2ViQ29yZS9DaGFuZ2VMb2cKaW5kZXggYjcxZDdjYjE3MTU5OTdj
NmNiOTRkNjFhODBhNjI0NjUxZTZhOWJjZC4uNGU0Yjc0YjIzNjcwZjIyNTRkOWM4ZGQwNjU3Y2Q1
ZTA1ZDdkYzk1MyAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvQ2hhbmdlTG9nCisrKyBiL1Nv
dXJjZS9XZWJDb3JlL0NoYW5nZUxvZwpAQCAtMSwzICsxLDI1IEBACisyMDEyLTA5LTA3ICBUb255
IENoYW5nICA8dG9ueUBjaHJvbWl1bS5vcmc+CisKKyAgICAgICAgTWFrZSBSZW5kZXJCb3g6OmNv
bXB1dGVMb2dpY2FsV2lkdGhJblJlZ2lvbiBjb25zdAorICAgICAgICBodHRwczovL2J1Z3Mud2Vi
a2l0Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9OTYxMjkKKworICAgICAgICBSZXZpZXdlZCBieSBPamFu
IFZhZmFpLgorCisgICAgICAgIE1ha2luZyBjb21wdXRlTG9naWNhbFdpZHRoSW5SZWdpb24gY29u
c3QgYWxsb3dzIHVzIHRvIGdldCByaWQgb2YgdGhlIGdyb3NzIGhhY2sgaW4KKyAgICAgICAgUmVu
ZGVyQm94OjpyZW5kZXJCb3hSZWdpb25JbmZvLgorCisgICAgICAgIE5vIG5ldyB0ZXN0cywgdGhp
cyBpcyBjb3ZlcmVkIGJ5IGV4aXN0aW5nIGxheW91dCB0ZXN0cy4KKworICAgICAgICAqIHJlbmRl
cmluZy9SZW5kZXJCb3guY3BwOgorICAgICAgICAoV2ViQ29yZTo6UmVuZGVyQm94Ojpjb25zdHJh
aW5Mb2dpY2FsV2lkdGhJblJlZ2lvbkJ5TWluTWF4KTogTWFrZSBjb25zdC4KKyAgICAgICAgKFdl
YkNvcmU6OlJlbmRlckJveDo6c2hyaW5rTG9naWNhbFdpZHRoVG9Bdm9pZEZsb2F0cyk6IE1ha2Ug
Y29uc3QuCisgICAgICAgIChXZWJDb3JlOjpSZW5kZXJCb3g6OmNvbXB1dGVMb2dpY2FsV2lkdGgp
OiBVc2UgYSBMb2dpY2FsRXh0ZW50Q29tcHV0ZWRWYWx1ZXMgd2hlbiBjYWxsaW5nIGNvbXB1dGVM
b2dpY2FsV2lkdGhJblJlZ2lvbi4KKyAgICAgICAgKFdlYkNvcmU6OlJlbmRlckJveDo6Y29tcHV0
ZUxvZ2ljYWxXaWR0aEluUmVnaW9uKTogTWFrZSBjb25zdC4gRmlsbCBpbiBhIExvZ2ljYWxFeHRl
bnRDb21wdXRlZFZhbHVlcyBzdHJ1Y3QgaW5zdGVhZC4KKyAgICAgICAgKFdlYkNvcmU6OlJlbmRl
ckJveDo6Y29tcHV0ZUxvZ2ljYWxXaWR0aEluUmVnaW9uVXNpbmcpOiBNYWtlIGNvbnN0LgorICAg
ICAgICAoV2ViQ29yZTo6UmVuZGVyQm94OjpyZW5kZXJCb3hSZWdpb25JbmZvKTogUmVtb3ZlIGhh
Y2sgYW5kIGdldCByZWdpb24gd2lkdGggdmFsdWVzIGluIGEgTG9naWNhbEV4dGVudENvbXB1dGVk
VmFsdWVzIHN0cnVjdC4KKyAgICAgICAgKiByZW5kZXJpbmcvUmVuZGVyQm94Lmg6CisgICAgICAg
IChSZW5kZXJCb3gpOgorCiAyMDEyLTA5LTA3ICBBZGFtIEJhcnRoICA8YWJhcnRoQHdlYmtpdC5v
cmc+CiAKICAgICAgICAgVXBkYXRlIGJpbmRpbmdzIHJlc3VsdHMgYWZ0ZXIgaHR0cHM6Ly9idWdz
LndlYmtpdC5vcmcvc2hvd19idWcuY2dpP2lkPTk2MDM5CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2Vi
Q29yZS9yZW5kZXJpbmcvUmVuZGVyQm94LmNwcCBiL1NvdXJjZS9XZWJDb3JlL3JlbmRlcmluZy9S
ZW5kZXJCb3guY3BwCmluZGV4IDE3MmM0NWZmNGRkYjlhODUwMzZkZTJiZGI4Y2NmOTI1NWI5M2Jm
ODkuLjMxMWRlMzUzYTRmNGY4N2FkMzQ5MGZkZWZkNjRiZDMyOTM5NjMwZWYgMTAwNjQ0Ci0tLSBh
L1NvdXJjZS9XZWJDb3JlL3JlbmRlcmluZy9SZW5kZXJCb3guY3BwCisrKyBiL1NvdXJjZS9XZWJD
b3JlL3JlbmRlcmluZy9SZW5kZXJCb3guY3BwCkBAIC00MTMsNyArNDEzLDcgQEAgdm9pZCBSZW5k
ZXJCb3g6OnVwZGF0ZUxheWVyVHJhbnNmb3JtKCkKICAgICAgICAgbGF5ZXIoKS0+dXBkYXRlVHJh
bnNmb3JtKCk7CiB9CiAKLUxheW91dFVuaXQgUmVuZGVyQm94Ojpjb25zdHJhaW5Mb2dpY2FsV2lk
dGhJblJlZ2lvbkJ5TWluTWF4KExheW91dFVuaXQgbG9naWNhbFdpZHRoLCBMYXlvdXRVbml0IGF2
YWlsYWJsZVdpZHRoLCBSZW5kZXJCbG9jayogY2IsIFJlbmRlclJlZ2lvbiogcmVnaW9uLCBMYXlv
dXRVbml0IG9mZnNldEZyb21Mb2dpY2FsVG9wT2ZGaXJzdFBhZ2UpCitMYXlvdXRVbml0IFJlbmRl
ckJveDo6Y29uc3RyYWluTG9naWNhbFdpZHRoSW5SZWdpb25CeU1pbk1heChMYXlvdXRVbml0IGxv
Z2ljYWxXaWR0aCwgTGF5b3V0VW5pdCBhdmFpbGFibGVXaWR0aCwgUmVuZGVyQmxvY2sqIGNiLCBS
ZW5kZXJSZWdpb24qIHJlZ2lvbiwgTGF5b3V0VW5pdCBvZmZzZXRGcm9tTG9naWNhbFRvcE9mRmly
c3RQYWdlKSBjb25zdAogewogICAgIFJlbmRlclN0eWxlKiBzdHlsZVRvVXNlID0gc3R5bGUoKTsK
ICAgICBpZiAoIXN0eWxlVG9Vc2UtPmxvZ2ljYWxNYXhXaWR0aCgpLmlzVW5kZWZpbmVkKCkpCkBA
IC0xMTUxLDcgKzExNTEsNyBAQCBMYXlvdXRSZWN0IFJlbmRlckJveDo6Y2xpcFJlY3QoY29uc3Qg
TGF5b3V0UG9pbnQmIGxvY2F0aW9uLCBSZW5kZXJSZWdpb24qIHJlZ2lvbgogICAgIHJldHVybiBj
bGlwUmVjdDsKIH0KIAotTGF5b3V0VW5pdCBSZW5kZXJCb3g6OnNocmlua0xvZ2ljYWxXaWR0aFRv
QXZvaWRGbG9hdHMoTGF5b3V0VW5pdCBjaGlsZE1hcmdpblN0YXJ0LCBMYXlvdXRVbml0IGNoaWxk
TWFyZ2luRW5kLCBjb25zdCBSZW5kZXJCbG9jayogY2IsIFJlbmRlclJlZ2lvbiogcmVnaW9uLCBM
YXlvdXRVbml0IG9mZnNldEZyb21Mb2dpY2FsVG9wT2ZGaXJzdFBhZ2UpCitMYXlvdXRVbml0IFJl
bmRlckJveDo6c2hyaW5rTG9naWNhbFdpZHRoVG9Bdm9pZEZsb2F0cyhMYXlvdXRVbml0IGNoaWxk
TWFyZ2luU3RhcnQsIExheW91dFVuaXQgY2hpbGRNYXJnaW5FbmQsIGNvbnN0IFJlbmRlckJsb2Nr
KiBjYiwgUmVuZGVyUmVnaW9uKiByZWdpb24sIExheW91dFVuaXQgb2Zmc2V0RnJvbUxvZ2ljYWxU
b3BPZkZpcnN0UGFnZSkgY29uc3QKIHsgICAgCiAgICAgUmVuZGVyUmVnaW9uKiBjb250YWluaW5n
QmxvY2tSZWdpb24gPSAwOwogICAgIExheW91dFVuaXQgbG9naWNhbFRvcFBvc2l0aW9uID0gbG9n
aWNhbFRvcCgpOwpAQCAtMTYxNywyMCArMTYxNywyNiBAQCB2b2lkIFJlbmRlckJveDo6cmVwYWlu
dER1cmluZ0xheW91dElmTW92ZWQoY29uc3QgTGF5b3V0UmVjdCYgb2xkUmVjdCkKIAogdm9pZCBS
ZW5kZXJCb3g6OmNvbXB1dGVMb2dpY2FsV2lkdGgoKQogewotICAgIGNvbXB1dGVMb2dpY2FsV2lk
dGhJblJlZ2lvbigpOworICAgIExvZ2ljYWxFeHRlbnRDb21wdXRlZFZhbHVlcyBjb21wdXRlZFZh
bHVlczsKKyAgICBjb21wdXRlTG9naWNhbFdpZHRoSW5SZWdpb24oY29tcHV0ZWRWYWx1ZXMpOwor
CisgICAgc2V0TG9naWNhbFdpZHRoKGNvbXB1dGVkVmFsdWVzLm1fZXh0ZW50KTsKKyAgICBzZXRM
b2dpY2FsTGVmdChjb21wdXRlZFZhbHVlcy5tX3Bvc2l0aW9uKTsKKyAgICBzZXRNYXJnaW5TdGFy
dChjb21wdXRlZFZhbHVlcy5tX21hcmdpbnMubV9zdGFydCk7CisgICAgc2V0TWFyZ2luRW5kKGNv
bXB1dGVkVmFsdWVzLm1fbWFyZ2lucy5tX2VuZCk7CiB9CiAKLXZvaWQgUmVuZGVyQm94Ojpjb21w
dXRlTG9naWNhbFdpZHRoSW5SZWdpb24oUmVuZGVyUmVnaW9uKiByZWdpb24sIExheW91dFVuaXQg
b2Zmc2V0RnJvbUxvZ2ljYWxUb3BPZkZpcnN0UGFnZSkKK3ZvaWQgUmVuZGVyQm94Ojpjb21wdXRl
TG9naWNhbFdpZHRoSW5SZWdpb24oTG9naWNhbEV4dGVudENvbXB1dGVkVmFsdWVzJiBjb21wdXRl
ZFZhbHVlcywgUmVuZGVyUmVnaW9uKiByZWdpb24sIExheW91dFVuaXQgb2Zmc2V0RnJvbUxvZ2lj
YWxUb3BPZkZpcnN0UGFnZSkgY29uc3QKIHsKKyAgICBjb21wdXRlZFZhbHVlcy5tX2V4dGVudCA9
IGxvZ2ljYWxXaWR0aCgpOworICAgIGNvbXB1dGVkVmFsdWVzLm1fcG9zaXRpb24gPSBsb2dpY2Fs
TGVmdCgpOworICAgIGNvbXB1dGVkVmFsdWVzLm1fbWFyZ2lucy5tX3N0YXJ0ID0gbWFyZ2luU3Rh
cnQoKTsKKyAgICBjb21wdXRlZFZhbHVlcy5tX21hcmdpbnMubV9lbmQgPSBtYXJnaW5FbmQoKTsK
KwogICAgIGlmIChpc091dE9mRmxvd1Bvc2l0aW9uZWQoKSkgewogICAgICAgICAvLyBGSVhNRTog
VGhpcyBjYWxjdWxhdGlvbiBpcyBub3QgcGF0Y2hlZCBmb3IgYmxvY2stZmxvdyB5ZXQuCiAgICAg
ICAgIC8vIGh0dHBzOi8vYnVncy53ZWJraXQub3JnL3Nob3dfYnVnLmNnaT9pZD00NjUwMAotICAg
ICAgICBMb2dpY2FsRXh0ZW50Q29tcHV0ZWRWYWx1ZXMgY29tcHV0ZWRWYWx1ZXM7CiAgICAgICAg
IGNvbXB1dGVQb3NpdGlvbmVkTG9naWNhbFdpZHRoKGNvbXB1dGVkVmFsdWVzLCByZWdpb24sIG9m
ZnNldEZyb21Mb2dpY2FsVG9wT2ZGaXJzdFBhZ2UpOwotICAgICAgICBzZXRMb2dpY2FsV2lkdGgo
Y29tcHV0ZWRWYWx1ZXMubV9leHRlbnQpOwotICAgICAgICBzZXRMb2dpY2FsTGVmdChjb21wdXRl
ZFZhbHVlcy5tX3Bvc2l0aW9uKTsKLSAgICAgICAgc2V0TWFyZ2luU3RhcnQoY29tcHV0ZWRWYWx1
ZXMubV9tYXJnaW5zLm1fc3RhcnQpOwotICAgICAgICBzZXRNYXJnaW5FbmQoY29tcHV0ZWRWYWx1
ZXMubV9tYXJnaW5zLm1fZW5kKTsKICAgICAgICAgcmV0dXJuOwogICAgIH0KIApAQCAtMTY0Myw3
ICsxNjQ5LDcgQEAgdm9pZCBSZW5kZXJCb3g6OmNvbXB1dGVMb2dpY2FsV2lkdGhJblJlZ2lvbihS
ZW5kZXJSZWdpb24qIHJlZ2lvbiwgTGF5b3V0VW5pdCBvZmYKICAgICAvLyBGSVhNRTogQWNjb3Vu
dCBmb3IgYmxvY2stZmxvdyBpbiBmbGV4aWJsZSBib3hlcy4KICAgICAvLyBodHRwczovL2J1Z3Mu
d2Via2l0Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9NDY0MTgKICAgICBpZiAoaGFzT3ZlcnJpZGVXaWR0
aCgpICYmIHBhcmVudCgpLT5pc0ZsZXhpYmxlQm94SW5jbHVkaW5nRGVwcmVjYXRlZCgpKSB7Ci0g
ICAgICAgIHNldExvZ2ljYWxXaWR0aChvdmVycmlkZUxvZ2ljYWxDb250ZW50V2lkdGgoKSArIGJv
cmRlckFuZFBhZGRpbmdMb2dpY2FsV2lkdGgoKSk7CisgICAgICAgIGNvbXB1dGVkVmFsdWVzLm1f
ZXh0ZW50ID0gb3ZlcnJpZGVMb2dpY2FsQ29udGVudFdpZHRoKCkgKyBib3JkZXJBbmRQYWRkaW5n
TG9naWNhbFdpZHRoKCk7CiAgICAgICAgIHJldHVybjsKICAgICB9CiAKQEAgLTE2NTQsNyArMTY2
MCw3IEBAIHZvaWQgUmVuZGVyQm94Ojpjb21wdXRlTG9naWNhbFdpZHRoSW5SZWdpb24oUmVuZGVy
UmVnaW9uKiByZWdpb24sIExheW91dFVuaXQgb2ZmCiAgICAgYm9vbCB0cmVhdEFzUmVwbGFjZWQg
PSBzaG91bGRDb21wdXRlU2l6ZUFzUmVwbGFjZWQoKSAmJiAoIWluVmVydGljYWxCb3ggfHwgIXN0
cmV0Y2hpbmcpOwogCiAgICAgUmVuZGVyU3R5bGUqIHN0eWxlVG9Vc2UgPSBzdHlsZSgpOwotICAg
IExlbmd0aCBsb2dpY2FsV2lkdGhMZW5ndGggPSAodHJlYXRBc1JlcGxhY2VkKSA/IExlbmd0aChj
b21wdXRlUmVwbGFjZWRMb2dpY2FsV2lkdGgoKSwgRml4ZWQpIDogc3R5bGVUb1VzZS0+bG9naWNh
bFdpZHRoKCk7CisgICAgTGVuZ3RoIGxvZ2ljYWxXaWR0aExlbmd0aCA9IHRyZWF0QXNSZXBsYWNl
ZCA/IExlbmd0aChjb21wdXRlUmVwbGFjZWRMb2dpY2FsV2lkdGgoKSwgRml4ZWQpIDogc3R5bGVU
b1VzZS0+bG9naWNhbFdpZHRoKCk7CiAKICAgICBSZW5kZXJCbG9jayogY2IgPSBjb250YWluaW5n
QmxvY2soKTsKICAgICBMYXlvdXRVbml0IGNvbnRhaW5lckxvZ2ljYWxXaWR0aCA9IG1heDxMYXlv
dXRVbml0PigwLCBjb250YWluaW5nQmxvY2tMb2dpY2FsV2lkdGhGb3JDb250ZW50SW5SZWdpb24o
cmVnaW9uLCBvZmZzZXRGcm9tTG9naWNhbFRvcE9mRmlyc3RQYWdlKSk7CkBAIC0xNjY2LDUwICsx
NjcyLDUzIEBAIHZvaWQgUmVuZGVyQm94Ojpjb21wdXRlTG9naWNhbFdpZHRoSW5SZWdpb24oUmVu
ZGVyUmVnaW9uKiByZWdpb24sIExheW91dFVuaXQgb2ZmCiAgICAgaWYgKGlzSW5saW5lKCkgJiYg
IWlzSW5saW5lQmxvY2tPcklubGluZVRhYmxlKCkpIHsKICAgICAgICAgLy8ganVzdCBjYWxjdWxh
dGUgbWFyZ2lucwogICAgICAgICBSZW5kZXJWaWV3KiByZW5kZXJWaWV3ID0gdmlldygpOwotICAg
ICAgICBzZXRNYXJnaW5TdGFydChtaW5pbXVtVmFsdWVGb3JMZW5ndGgoc3R5bGVUb1VzZS0+bWFy
Z2luU3RhcnQoKSwgY29udGFpbmVyTG9naWNhbFdpZHRoLCByZW5kZXJWaWV3KSk7Ci0gICAgICAg
IHNldE1hcmdpbkVuZChtaW5pbXVtVmFsdWVGb3JMZW5ndGgoc3R5bGVUb1VzZS0+bWFyZ2luRW5k
KCksIGNvbnRhaW5lckxvZ2ljYWxXaWR0aCwgcmVuZGVyVmlldykpOworICAgICAgICBjb21wdXRl
ZFZhbHVlcy5tX21hcmdpbnMubV9zdGFydCA9IG1pbmltdW1WYWx1ZUZvckxlbmd0aChzdHlsZVRv
VXNlLT5tYXJnaW5TdGFydCgpLCBjb250YWluZXJMb2dpY2FsV2lkdGgsIHJlbmRlclZpZXcpOwor
ICAgICAgICBjb21wdXRlZFZhbHVlcy5tX21hcmdpbnMubV9lbmQgPSBtaW5pbXVtVmFsdWVGb3JM
ZW5ndGgoc3R5bGVUb1VzZS0+bWFyZ2luRW5kKCksIGNvbnRhaW5lckxvZ2ljYWxXaWR0aCwgcmVu
ZGVyVmlldyk7CiAgICAgICAgIGlmICh0cmVhdEFzUmVwbGFjZWQpCi0gICAgICAgICAgICBzZXRM
b2dpY2FsV2lkdGgobWF4PExheW91dFVuaXQ+KGZsb2F0VmFsdWVGb3JMZW5ndGgobG9naWNhbFdp
ZHRoTGVuZ3RoLCAwKSArIGJvcmRlckFuZFBhZGRpbmdMb2dpY2FsV2lkdGgoKSwgbWluUHJlZmVy
cmVkTG9naWNhbFdpZHRoKCkpKTsKKyAgICAgICAgICAgIGNvbXB1dGVkVmFsdWVzLm1fZXh0ZW50
ID0gbWF4PExheW91dFVuaXQ+KGZsb2F0VmFsdWVGb3JMZW5ndGgobG9naWNhbFdpZHRoTGVuZ3Ro
LCAwKSArIGJvcmRlckFuZFBhZGRpbmdMb2dpY2FsV2lkdGgoKSwgbWluUHJlZmVycmVkTG9naWNh
bFdpZHRoKCkpOwogICAgICAgICByZXR1cm47CiAgICAgfQogCiAgICAgLy8gV2lkdGggY2FsY3Vs
YXRpb25zCiAgICAgaWYgKHRyZWF0QXNSZXBsYWNlZCkKLSAgICAgICAgc2V0TG9naWNhbFdpZHRo
KGxvZ2ljYWxXaWR0aExlbmd0aC52YWx1ZSgpICsgYm9yZGVyQW5kUGFkZGluZ0xvZ2ljYWxXaWR0
aCgpKTsKKyAgICAgICAgY29tcHV0ZWRWYWx1ZXMubV9leHRlbnQgPSBsb2dpY2FsV2lkdGhMZW5n
dGgudmFsdWUoKSArIGJvcmRlckFuZFBhZGRpbmdMb2dpY2FsV2lkdGgoKTsKICAgICBlbHNlIHsK
ICAgICAgICAgTGF5b3V0VW5pdCBwcmVmZXJyZWRXaWR0aCA9IGNvbXB1dGVMb2dpY2FsV2lkdGhJ
blJlZ2lvblVzaW5nKE1haW5PclByZWZlcnJlZFNpemUsIGNvbnRhaW5lcldpZHRoSW5JbmxpbmVE
aXJlY3Rpb24sIGNiLCByZWdpb24sIG9mZnNldEZyb21Mb2dpY2FsVG9wT2ZGaXJzdFBhZ2UpOwot
ICAgICAgICBzZXRMb2dpY2FsV2lkdGgoY29uc3RyYWluTG9naWNhbFdpZHRoSW5SZWdpb25CeU1p
bk1heChwcmVmZXJyZWRXaWR0aCwgY29udGFpbmVyV2lkdGhJbklubGluZURpcmVjdGlvbiwgY2Is
IHJlZ2lvbiwgb2Zmc2V0RnJvbUxvZ2ljYWxUb3BPZkZpcnN0UGFnZSkpOworICAgICAgICBjb21w
dXRlZFZhbHVlcy5tX2V4dGVudCA9IGNvbnN0cmFpbkxvZ2ljYWxXaWR0aEluUmVnaW9uQnlNaW5N
YXgocHJlZmVycmVkV2lkdGgsIGNvbnRhaW5lcldpZHRoSW5JbmxpbmVEaXJlY3Rpb24sIGNiLCBy
ZWdpb24sIG9mZnNldEZyb21Mb2dpY2FsVG9wT2ZGaXJzdFBhZ2UpOwogICAgIH0KIAogICAgIC8v
IEZpZWxkc2V0cyBhcmUgY3VycmVudGx5IHRoZSBvbmx5IG9iamVjdHMgdGhhdCBzdHJldGNoIHRv
IHRoZWlyIG1pbmltdW0gd2lkdGguCiAgICAgaWYgKHN0cmV0Y2hlc1RvTWluSW50cmluc2ljTG9n
aWNhbFdpZHRoKCkpCi0gICAgICAgIHNldExvZ2ljYWxXaWR0aChtYXgobG9naWNhbFdpZHRoKCks
IG1pblByZWZlcnJlZExvZ2ljYWxXaWR0aCgpKSk7CisgICAgICAgIGNvbXB1dGVkVmFsdWVzLm1f
ZXh0ZW50ID0gbWF4KGNvbXB1dGVkVmFsdWVzLm1fZXh0ZW50LCBtaW5QcmVmZXJyZWRMb2dpY2Fs
V2lkdGgoKSk7CiAKICAgICAvLyBNYXJnaW4gY2FsY3VsYXRpb25zLgogICAgIGlmIChoYXNQZXJw
ZW5kaWN1bGFyQ29udGFpbmluZ0Jsb2NrIHx8IGlzRmxvYXRpbmcoKSB8fCBpc0lubGluZSgpKSB7
CiAgICAgICAgIFJlbmRlclZpZXcqIHJlbmRlclZpZXcgPSB2aWV3KCk7Ci0gICAgICAgIHNldE1h
cmdpblN0YXJ0KG1pbmltdW1WYWx1ZUZvckxlbmd0aChzdHlsZVRvVXNlLT5tYXJnaW5TdGFydCgp
LCBjb250YWluZXJMb2dpY2FsV2lkdGgsIHJlbmRlclZpZXcpKTsKLSAgICAgICAgc2V0TWFyZ2lu
RW5kKG1pbmltdW1WYWx1ZUZvckxlbmd0aChzdHlsZVRvVXNlLT5tYXJnaW5FbmQoKSwgY29udGFp
bmVyTG9naWNhbFdpZHRoLCByZW5kZXJWaWV3KSk7CisgICAgICAgIGNvbXB1dGVkVmFsdWVzLm1f
bWFyZ2lucy5tX3N0YXJ0ID0gbWluaW11bVZhbHVlRm9yTGVuZ3RoKHN0eWxlVG9Vc2UtPm1hcmdp
blN0YXJ0KCksIGNvbnRhaW5lckxvZ2ljYWxXaWR0aCwgcmVuZGVyVmlldyk7CisgICAgICAgIGNv
bXB1dGVkVmFsdWVzLm1fbWFyZ2lucy5tX2VuZCA9IG1pbmltdW1WYWx1ZUZvckxlbmd0aChzdHls
ZVRvVXNlLT5tYXJnaW5FbmQoKSwgY29udGFpbmVyTG9naWNhbFdpZHRoLCByZW5kZXJWaWV3KTsK
ICAgICB9IGVsc2UgewogICAgICAgICBMYXlvdXRVbml0IGNvbnRhaW5lckxvZ2ljYWxXaWR0aEZv
ckF1dG9NYXJnaW5zID0gY29udGFpbmVyTG9naWNhbFdpZHRoOwogICAgICAgICBpZiAoYXZvaWRz
RmxvYXRzKCkgJiYgY2ItPmNvbnRhaW5zRmxvYXRzKCkpCiAgICAgICAgICAgICBjb250YWluZXJM
b2dpY2FsV2lkdGhGb3JBdXRvTWFyZ2lucyA9IGNvbnRhaW5pbmdCbG9ja0F2YWlsYWJsZUxpbmVX
aWR0aEluUmVnaW9uKHJlZ2lvbiwgb2Zmc2V0RnJvbUxvZ2ljYWxUb3BPZkZpcnN0UGFnZSk7Ci0g
ICAgICAgIENvbXB1dGVkTWFyZ2luVmFsdWVzIG1hcmdpblZhbHVlczsKLSAgICAgICAgYm9vbCBo
YXNJbnZlcnRlZERpcmVjdGlvbiA9ICBjYi0+c3R5bGUoKS0+aXNMZWZ0VG9SaWdodERpcmVjdGlv
bigpID09IHN0eWxlKCktPmlzTGVmdFRvUmlnaHREaXJlY3Rpb24oKTsKLSAgICAgICAgY29tcHV0
ZUlubGluZURpcmVjdGlvbk1hcmdpbnMoY2IsIGNvbnRhaW5lckxvZ2ljYWxXaWR0aEZvckF1dG9N
YXJnaW5zLCBsb2dpY2FsV2lkdGgoKSwKLSAgICAgICAgICAgIGhhc0ludmVydGVkRGlyZWN0aW9u
ID8gbWFyZ2luVmFsdWVzLm1fc3RhcnQgOiBtYXJnaW5WYWx1ZXMubV9lbmQsCi0gICAgICAgICAg
ICBoYXNJbnZlcnRlZERpcmVjdGlvbiA/IG1hcmdpblZhbHVlcy5tX2VuZCA6IG1hcmdpblZhbHVl
cy5tX3N0YXJ0KTsKLSAgICAgICAgc2V0TWFyZ2luU3RhcnQobWFyZ2luVmFsdWVzLm1fc3RhcnQp
OwotICAgICAgICBzZXRNYXJnaW5FbmQobWFyZ2luVmFsdWVzLm1fZW5kKTsKKyAgICAgICAgYm9v
bCBoYXNJbnZlcnRlZERpcmVjdGlvbiA9IGNiLT5zdHlsZSgpLT5pc0xlZnRUb1JpZ2h0RGlyZWN0
aW9uKCkgIT0gc3R5bGUoKS0+aXNMZWZ0VG9SaWdodERpcmVjdGlvbigpOworICAgICAgICBjb21w
dXRlSW5saW5lRGlyZWN0aW9uTWFyZ2lucyhjYiwgY29udGFpbmVyTG9naWNhbFdpZHRoRm9yQXV0
b01hcmdpbnMsIGNvbXB1dGVkVmFsdWVzLm1fZXh0ZW50LAorICAgICAgICAgICAgaGFzSW52ZXJ0
ZWREaXJlY3Rpb24gPyBjb21wdXRlZFZhbHVlcy5tX21hcmdpbnMubV9lbmQgOiBjb21wdXRlZFZh
bHVlcy5tX21hcmdpbnMubV9zdGFydCwKKyAgICAgICAgICAgIGhhc0ludmVydGVkRGlyZWN0aW9u
ID8gY29tcHV0ZWRWYWx1ZXMubV9tYXJnaW5zLm1fc3RhcnQgOiBjb21wdXRlZFZhbHVlcy5tX21h
cmdpbnMubV9lbmQpOwogICAgIH0KICAgICAKLSAgICBpZiAoIWhhc1BlcnBlbmRpY3VsYXJDb250
YWluaW5nQmxvY2sgJiYgY29udGFpbmVyTG9naWNhbFdpZHRoICYmIGNvbnRhaW5lckxvZ2ljYWxX
aWR0aCAhPSAobG9naWNhbFdpZHRoKCkgKyBtYXJnaW5TdGFydCgpICsgbWFyZ2luRW5kKCkpCi0g
ICAgICAgICAgICAmJiAhaXNGbG9hdGluZygpICYmICFpc0lubGluZSgpICYmICFjYi0+aXNGbGV4
aWJsZUJveEluY2x1ZGluZ0RlcHJlY2F0ZWQoKSkKLSAgICAgICAgY2ItPnNldE1hcmdpbkVuZEZv
ckNoaWxkKHRoaXMsIGNvbnRhaW5lckxvZ2ljYWxXaWR0aCAtIGxvZ2ljYWxXaWR0aCgpIC0gY2It
Pm1hcmdpblN0YXJ0Rm9yQ2hpbGQodGhpcykpOworICAgIGlmICghaGFzUGVycGVuZGljdWxhckNv
bnRhaW5pbmdCbG9jayAmJiBjb250YWluZXJMb2dpY2FsV2lkdGggJiYgY29udGFpbmVyTG9naWNh
bFdpZHRoICE9IChjb21wdXRlZFZhbHVlcy5tX2V4dGVudCArIGNvbXB1dGVkVmFsdWVzLm1fbWFy
Z2lucy5tX3N0YXJ0ICsgY29tcHV0ZWRWYWx1ZXMubV9tYXJnaW5zLm1fZW5kKQorICAgICAgICAg
ICAgJiYgIWlzRmxvYXRpbmcoKSAmJiAhaXNJbmxpbmUoKSAmJiAhY2ItPmlzRmxleGlibGVCb3hJ
bmNsdWRpbmdEZXByZWNhdGVkKCkpIHsKKyAgICAgICAgTGF5b3V0VW5pdCBuZXdNYXJnaW4gPSBj
b250YWluZXJMb2dpY2FsV2lkdGggLSBjb21wdXRlZFZhbHVlcy5tX2V4dGVudCAtIGNiLT5tYXJn
aW5TdGFydEZvckNoaWxkKHRoaXMpOworICAgICAgICBib29sIGhhc0ludmVydGVkRGlyZWN0aW9u
ID0gY2ItPnN0eWxlKCktPmlzTGVmdFRvUmlnaHREaXJlY3Rpb24oKSAhPSBzdHlsZSgpLT5pc0xl
ZnRUb1JpZ2h0RGlyZWN0aW9uKCk7CisgICAgICAgIGlmIChoYXNJbnZlcnRlZERpcmVjdGlvbikK
KyAgICAgICAgICAgIGNvbXB1dGVkVmFsdWVzLm1fbWFyZ2lucy5tX3N0YXJ0ID0gbmV3TWFyZ2lu
OworICAgICAgICBlbHNlCisgICAgICAgICAgICBjb21wdXRlZFZhbHVlcy5tX21hcmdpbnMubV9l
bmQgPSBuZXdNYXJnaW47CisgICAgfQogfQogCiBMYXlvdXRVbml0IFJlbmRlckJveDo6Y29tcHV0
ZUxvZ2ljYWxXaWR0aEluUmVnaW9uVXNpbmcoU2l6ZVR5cGUgd2lkdGhUeXBlLCBMYXlvdXRVbml0
IGF2YWlsYWJsZUxvZ2ljYWxXaWR0aCwKLSAgICBjb25zdCBSZW5kZXJCbG9jayogY2IsIFJlbmRl
clJlZ2lvbiogcmVnaW9uLCBMYXlvdXRVbml0IG9mZnNldEZyb21Mb2dpY2FsVG9wT2ZGaXJzdFBh
Z2UpCisgICAgY29uc3QgUmVuZGVyQmxvY2sqIGNiLCBSZW5kZXJSZWdpb24qIHJlZ2lvbiwgTGF5
b3V0VW5pdCBvZmZzZXRGcm9tTG9naWNhbFRvcE9mRmlyc3RQYWdlKSBjb25zdAogewogICAgIFJl
bmRlclN0eWxlKiBzdHlsZVRvVXNlID0gc3R5bGUoKTsKICAgICBMZW5ndGggbG9naWNhbFdpZHRo
OwpAQCAtMTg3NSwyMSArMTg4NCwxMiBAQCBSZW5kZXJCb3hSZWdpb25JbmZvKiBSZW5kZXJCb3g6
OnJlbmRlckJveFJlZ2lvbkluZm8oUmVuZGVyUmVnaW9uKiByZWdpb24sIExheW91dAogICAgICAg
ICB8fCBpc1RhYmxlQ2VsbCgpIHx8ICFpc0Jsb2NrRmxvdygpIHx8IGlzUmVuZGVyRmxvd1RocmVh
ZCgpKQogICAgICAgICByZXR1cm4gMDsKIAotICAgIC8vIEZJWE1FOiBJdCdzIGdyb3NzIHRvIGNh
c3QgYXdheSB0aGUgY29uc3QsIGJ1dCBpdCB3b3VsZCBiZSBhIGh1Z2UgcmVmYWN0b3JpbmcgdG8K
LSAgICAvLyBjaGFuZ2UgYWxsIHdpZHRoIGNvbXB1dGF0aW9uIHRvIGF2b2lkIHVwZGF0aW5nIGFu
eSBtZW1iZXIgdmFyaWFibGVzLCBhbmQgaXQgd291bGQgYmUgcHJldHR5IGxhbWUgdG8KLSAgICAv
LyBtYWtlIGFsbCB0aGUgdmFyaWFibGVzIG11dGFibGUgYXMgd2VsbC4KICAgICBSZW5kZXJGbG93
VGhyZWFkKiBmbG93VGhyZWFkID0gZW5jbG9zaW5nUmVuZGVyRmxvd1RocmVhZCgpOwogICAgIGlm
IChmbG93VGhyZWFkLT5zdHlsZSgpLT53cml0aW5nTW9kZSgpICE9IHN0eWxlKCktPndyaXRpbmdN
b2RlKCkpCiAgICAgICAgIHJldHVybiAwOwogCi0gICAgTGF5b3V0VW5pdCBvbGRMb2dpY2FsV2lk
dGggPSBsb2dpY2FsV2lkdGgoKTsKLSAgICBMYXlvdXRVbml0IG9sZExvZ2ljYWxMZWZ0ID0gbG9n
aWNhbExlZnQoKTsKLSAgICBMYXlvdXRVbml0IG9sZE1hcmdpblN0YXJ0ID0gbWFyZ2luU3RhcnQo
KTsKLSAgICBMYXlvdXRVbml0IG9sZE1hcmdpbkVuZCA9IG1hcmdpbkVuZCgpOwotCi0gICAgUmVu
ZGVyQm94KiBtdXRhYmxlQm94ID0gY29uc3RfY2FzdDxSZW5kZXJCb3gqPih0aGlzKTsKLSAgICAK
LSAgICBtdXRhYmxlQm94LT5jb21wdXRlTG9naWNhbFdpZHRoSW5SZWdpb24ocmVnaW9uLCBvZmZz
ZXRGcm9tTG9naWNhbFRvcE9mRmlyc3RQYWdlKTsKKyAgICBMb2dpY2FsRXh0ZW50Q29tcHV0ZWRW
YWx1ZXMgY29tcHV0ZWRWYWx1ZXM7CisgICAgY29tcHV0ZUxvZ2ljYWxXaWR0aEluUmVnaW9uKGNv
bXB1dGVkVmFsdWVzLCByZWdpb24sIG9mZnNldEZyb21Mb2dpY2FsVG9wT2ZGaXJzdFBhZ2UpOwog
CiAgICAgLy8gTm93IGRldGVybWluZSB0aGUgaW5zZXRzIGJhc2VkIG9mZiB3aGVyZSB0aGlzIG9i
amVjdCBpcyBzdXBwb3NlZCB0byBiZSBwb3NpdGlvbmVkLgogICAgIFJlbmRlckJsb2NrKiBjYiA9
IGNvbnRhaW5pbmdCbG9jaygpOwpAQCAtMTg5OSwyMiArMTg5OSwxNiBAQCBSZW5kZXJCb3hSZWdp
b25JbmZvKiBSZW5kZXJCb3g6OnJlbmRlckJveFJlZ2lvbkluZm8oUmVuZGVyUmVnaW9uKiByZWdp
b24sIExheW91dAogICAgIExheW91dFVuaXQgY29udGFpbmluZ0Jsb2NrTG9naWNhbFdpZHRoID0g
Y2ItPmxvZ2ljYWxXaWR0aCgpOwogICAgIExheW91dFVuaXQgY29udGFpbmluZ0Jsb2NrTG9naWNh
bFdpZHRoSW5SZWdpb24gPSBjb250YWluaW5nQmxvY2tJbmZvID8gY29udGFpbmluZ0Jsb2NrSW5m
by0+bG9naWNhbFdpZHRoKCkgOiBjb250YWluaW5nQmxvY2tMb2dpY2FsV2lkdGg7CiAgICAgCi0g
ICAgTGF5b3V0VW5pdCBtYXJnaW5TdGFydEluUmVnaW9uID0gbWFyZ2luU3RhcnQoKTsKLSAgICBM
YXlvdXRVbml0IHN0YXJ0TWFyZ2luRGVsdGEgPSBtYXJnaW5TdGFydEluUmVnaW9uIC0gb2xkTWFy
Z2luU3RhcnQ7Ci0gICAgTGF5b3V0VW5pdCBsb2dpY2FsV2lkdGhJblJlZ2lvbiA9IGxvZ2ljYWxX
aWR0aCgpOwotICAgIExheW91dFVuaXQgbG9naWNhbExlZnRJblJlZ2lvbiA9IGxvZ2ljYWxMZWZ0
KCk7Ci0gICAgTGF5b3V0VW5pdCB3aWR0aERlbHRhID0gbG9naWNhbFdpZHRoSW5SZWdpb24gLSBv
bGRMb2dpY2FsV2lkdGg7Ci0gICAgTGF5b3V0VW5pdCBsb2dpY2FsTGVmdERlbHRhID0gaXNPdXRP
ZkZsb3dQb3NpdGlvbmVkKCkgPyBsb2dpY2FsTGVmdEluUmVnaW9uIC0gb2xkTG9naWNhbExlZnQg
OiBzdGFydE1hcmdpbkRlbHRhOworICAgIExheW91dFVuaXQgbWFyZ2luU3RhcnRJblJlZ2lvbiA9
IGNvbXB1dGVkVmFsdWVzLm1fbWFyZ2lucy5tX3N0YXJ0OworICAgIExheW91dFVuaXQgc3RhcnRN
YXJnaW5EZWx0YSA9IG1hcmdpblN0YXJ0SW5SZWdpb24gLSBtYXJnaW5TdGFydCgpOworICAgIExh
eW91dFVuaXQgbG9naWNhbFdpZHRoSW5SZWdpb24gPSBjb21wdXRlZFZhbHVlcy5tX2V4dGVudDsK
KyAgICBMYXlvdXRVbml0IGxvZ2ljYWxMZWZ0SW5SZWdpb24gPSBjb21wdXRlZFZhbHVlcy5tX3Bv
c2l0aW9uOworICAgIExheW91dFVuaXQgd2lkdGhEZWx0YSA9IGxvZ2ljYWxXaWR0aEluUmVnaW9u
IC0gbG9naWNhbFdpZHRoKCk7CisgICAgTGF5b3V0VW5pdCBsb2dpY2FsTGVmdERlbHRhID0gaXNP
dXRPZkZsb3dQb3NpdGlvbmVkKCkgPyBsb2dpY2FsTGVmdEluUmVnaW9uIC0gbG9naWNhbExlZnQo
KSA6IHN0YXJ0TWFyZ2luRGVsdGE7CiAgICAgTGF5b3V0VW5pdCBsb2dpY2FsUmlnaHRJblJlZ2lv
biA9IGNvbnRhaW5pbmdCbG9ja0xvZ2ljYWxXaWR0aEluUmVnaW9uIC0gKGxvZ2ljYWxMZWZ0SW5S
ZWdpb24gKyBsb2dpY2FsV2lkdGhJblJlZ2lvbik7Ci0gICAgTGF5b3V0VW5pdCBvbGRMb2dpY2Fs
UmlnaHQgPSBjb250YWluaW5nQmxvY2tMb2dpY2FsV2lkdGggLSAob2xkTG9naWNhbExlZnQgKyBv
bGRMb2dpY2FsV2lkdGgpOworICAgIExheW91dFVuaXQgb2xkTG9naWNhbFJpZ2h0ID0gY29udGFp
bmluZ0Jsb2NrTG9naWNhbFdpZHRoIC0gKGxvZ2ljYWxMZWZ0KCkgKyBsb2dpY2FsV2lkdGgoKSk7
CiAgICAgTGF5b3V0VW5pdCBsb2dpY2FsUmlnaHREZWx0YSA9IGlzT3V0T2ZGbG93UG9zaXRpb25l
ZCgpID8gbG9naWNhbFJpZ2h0SW5SZWdpb24gLSBvbGRMb2dpY2FsUmlnaHQgOiBzdGFydE1hcmdp
bkRlbHRhOwogCi0gICAgLy8gU2V0IG91ciB2YWx1ZXMgYmFjay4KLSAgICBtdXRhYmxlQm94LT5z
ZXRMb2dpY2FsV2lkdGgob2xkTG9naWNhbFdpZHRoKTsKLSAgICBtdXRhYmxlQm94LT5zZXRMb2dp
Y2FsTGVmdChvbGRMb2dpY2FsTGVmdCk7Ci0gICAgbXV0YWJsZUJveC0+c2V0TWFyZ2luU3RhcnQo
b2xkTWFyZ2luU3RhcnQpOwotICAgIG11dGFibGVCb3gtPnNldE1hcmdpbkVuZChvbGRNYXJnaW5F
bmQpOwotCiAgICAgTGF5b3V0VW5pdCBsb2dpY2FsTGVmdE9mZnNldCA9IDA7CiAgICAgCiAgICAg
aWYgKCFpc091dE9mRmxvd1Bvc2l0aW9uZWQoKSAmJiBhdm9pZHNGbG9hdHMoKSAmJiBjYi0+Y29u
dGFpbnNGbG9hdHMoKSkgewpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcmVuZGVyaW5nL1Jl
bmRlckJveC5oIGIvU291cmNlL1dlYkNvcmUvcmVuZGVyaW5nL1JlbmRlckJveC5oCmluZGV4IGJh
OTIwM2U3N2VhM2UyNTZkNTYyMjM5MzkwYjFjYzBiYWZlZjIwZDYuLmVkNzBhOTRiODU4MjMwMjgz
NGYwZWI2Mjk5MTZmYjNlM2MwZjQ3MGIgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3JlbmRl
cmluZy9SZW5kZXJCb3guaAorKysgYi9Tb3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcvUmVuZGVyQm94
LmgKQEAgLTc1LDcgKzc1LDcgQEAgcHVibGljOgogICAgIExheW91dFVuaXQgbG9naWNhbFdpZHRo
KCkgY29uc3QgeyByZXR1cm4gc3R5bGUoKS0+aXNIb3Jpem9udGFsV3JpdGluZ01vZGUoKSA/IHdp
ZHRoKCkgOiBoZWlnaHQoKTsgfQogICAgIExheW91dFVuaXQgbG9naWNhbEhlaWdodCgpIGNvbnN0
IHsgcmV0dXJuIHN0eWxlKCktPmlzSG9yaXpvbnRhbFdyaXRpbmdNb2RlKCkgPyBoZWlnaHQoKSA6
IHdpZHRoKCk7IH0KIAotICAgIExheW91dFVuaXQgY29uc3RyYWluTG9naWNhbFdpZHRoSW5SZWdp
b25CeU1pbk1heChMYXlvdXRVbml0LCBMYXlvdXRVbml0LCBSZW5kZXJCbG9jayosIFJlbmRlclJl
Z2lvbiogPSAwLCBMYXlvdXRVbml0IG9mZnNldEZyb21Mb2dpY2FsVG9wT2ZGaXJzdFBhZ2UgPSBa
RVJPX0xBWU9VVF9VTklUKTsKKyAgICBMYXlvdXRVbml0IGNvbnN0cmFpbkxvZ2ljYWxXaWR0aElu
UmVnaW9uQnlNaW5NYXgoTGF5b3V0VW5pdCwgTGF5b3V0VW5pdCwgUmVuZGVyQmxvY2sqLCBSZW5k
ZXJSZWdpb24qID0gMCwgTGF5b3V0VW5pdCBvZmZzZXRGcm9tTG9naWNhbFRvcE9mRmlyc3RQYWdl
ID0gWkVST19MQVlPVVRfVU5JVCkgY29uc3Q7CiAgICAgTGF5b3V0VW5pdCBjb25zdHJhaW5Mb2dp
Y2FsSGVpZ2h0QnlNaW5NYXgoTGF5b3V0VW5pdCkgY29uc3Q7CiAKICAgICBpbnQgcGl4ZWxTbmFw
cGVkTG9naWNhbEhlaWdodCgpIGNvbnN0IHsgcmV0dXJuIHN0eWxlKCktPmlzSG9yaXpvbnRhbFdy
aXRpbmdNb2RlKCkgPyBwaXhlbFNuYXBwZWRIZWlnaHQoKSA6IHBpeGVsU25hcHBlZFdpZHRoKCk7
IH0KQEAgLTM2OSw3ICszNjksNyBAQCBwdWJsaWM6CiAgICAgdm9pZCBjb21wdXRlTG9naWNhbEhl
aWdodChMb2dpY2FsRXh0ZW50Q29tcHV0ZWRWYWx1ZXMmKSBjb25zdDsKIAogICAgIFJlbmRlckJv
eFJlZ2lvbkluZm8qIHJlbmRlckJveFJlZ2lvbkluZm8oUmVuZGVyUmVnaW9uKiwgTGF5b3V0VW5p
dCBvZmZzZXRGcm9tTG9naWNhbFRvcE9mRmlyc3RQYWdlLCBSZW5kZXJCb3hSZWdpb25JbmZvRmxh
Z3MgPSBDYWNoZVJlbmRlckJveFJlZ2lvbkluZm8pIGNvbnN0OwotICAgIHZvaWQgY29tcHV0ZUxv
Z2ljYWxXaWR0aEluUmVnaW9uKFJlbmRlclJlZ2lvbiogPSAwLCBMYXlvdXRVbml0IG9mZnNldEZy
b21Mb2dpY2FsVG9wT2ZGaXJzdFBhZ2UgPSBaRVJPX0xBWU9VVF9VTklUKTsKKyAgICB2b2lkIGNv
bXB1dGVMb2dpY2FsV2lkdGhJblJlZ2lvbihMb2dpY2FsRXh0ZW50Q29tcHV0ZWRWYWx1ZXMmLCBS
ZW5kZXJSZWdpb24qID0gMCwgTGF5b3V0VW5pdCBvZmZzZXRGcm9tTG9naWNhbFRvcE9mRmlyc3RQ
YWdlID0gWkVST19MQVlPVVRfVU5JVCkgY29uc3Q7CiAKICAgICBib29sIHN0cmV0Y2hlc1RvVmll
d3BvcnQoKSBjb25zdAogICAgIHsKQEAgLTM4NSw5ICszODUsOSBAQCBwdWJsaWM6CiAgICAgYm9v
bCBzaXplc0xvZ2ljYWxXaWR0aFRvRml0Q29udGVudChTaXplVHlwZSkgY29uc3Q7CiAgICAgdmly
dHVhbCBib29sIHN0cmV0Y2hlc1RvTWluSW50cmluc2ljTG9naWNhbFdpZHRoKCkgY29uc3QgeyBy
ZXR1cm4gZmFsc2U7IH0KIAotICAgIExheW91dFVuaXQgc2hyaW5rTG9naWNhbFdpZHRoVG9Bdm9p
ZEZsb2F0cyhMYXlvdXRVbml0IGNoaWxkTWFyZ2luU3RhcnQsIExheW91dFVuaXQgY2hpbGRNYXJn
aW5FbmQsIGNvbnN0IFJlbmRlckJsb2NrKiBjYiwgUmVuZGVyUmVnaW9uKiwgTGF5b3V0VW5pdCBv
ZmZzZXRGcm9tTG9naWNhbFRvcE9mRmlyc3RQYWdlKTsKKyAgICBMYXlvdXRVbml0IHNocmlua0xv
Z2ljYWxXaWR0aFRvQXZvaWRGbG9hdHMoTGF5b3V0VW5pdCBjaGlsZE1hcmdpblN0YXJ0LCBMYXlv
dXRVbml0IGNoaWxkTWFyZ2luRW5kLCBjb25zdCBSZW5kZXJCbG9jayogY2IsIFJlbmRlclJlZ2lv
biosIExheW91dFVuaXQgb2Zmc2V0RnJvbUxvZ2ljYWxUb3BPZkZpcnN0UGFnZSkgY29uc3Q7CiAK
LSAgICBMYXlvdXRVbml0IGNvbXB1dGVMb2dpY2FsV2lkdGhJblJlZ2lvblVzaW5nKFNpemVUeXBl
LCBMYXlvdXRVbml0IGF2YWlsYWJsZUxvZ2ljYWxXaWR0aCwgY29uc3QgUmVuZGVyQmxvY2sqIGNv
bnRhaW5pbmdCbG9jaywgUmVuZGVyUmVnaW9uKiwgTGF5b3V0VW5pdCBvZmZzZXRGcm9tTG9naWNh
bFRvcE9mRmlyc3RQYWdlKTsKKyAgICBMYXlvdXRVbml0IGNvbXB1dGVMb2dpY2FsV2lkdGhJblJl
Z2lvblVzaW5nKFNpemVUeXBlLCBMYXlvdXRVbml0IGF2YWlsYWJsZUxvZ2ljYWxXaWR0aCwgY29u
c3QgUmVuZGVyQmxvY2sqIGNvbnRhaW5pbmdCbG9jaywgUmVuZGVyUmVnaW9uKiwgTGF5b3V0VW5p
dCBvZmZzZXRGcm9tTG9naWNhbFRvcE9mRmlyc3RQYWdlKSBjb25zdDsKICAgICBMYXlvdXRVbml0
IGNvbXB1dGVMb2dpY2FsSGVpZ2h0VXNpbmcoU2l6ZVR5cGUsIGNvbnN0IExlbmd0aCYgaGVpZ2h0
KSBjb25zdDsKICAgICBMYXlvdXRVbml0IGNvbXB1dGVMb2dpY2FsQ2xpZW50SGVpZ2h0KFNpemVU
eXBlLCBjb25zdCBMZW5ndGgmIGhlaWdodCk7CiAgICAgTGF5b3V0VW5pdCBjb21wdXRlQ29udGVu
dExvZ2ljYWxIZWlnaHRVc2luZyhTaXplVHlwZSwgY29uc3QgTGVuZ3RoJiBoZWlnaHQpIGNvbnN0
Owo=
</data>

          </attachment>
      

    </bug>

</bugzilla>