From 1e2c8b81db163b8213151e75a77eb61c8536afb3 Mon Sep 17 00:00:00 2001 From: mumian Date: Fri, 2 Dec 2016 14:27:21 -0500 Subject: [PATCH 01/90] Saurin's domain-joined hdi article --- .../hdinsight-domain-joined-architecture.md | 139 ++++++++++++++++++ .../image1.png | Bin 0 -> 61139 bytes .../image2.png | Bin 0 -> 101450 bytes .../image3.png | Bin 0 -> 67283 bytes 4 files changed, 139 insertions(+) create mode 100644 articles/hdinsight/hdinsight-domain-joined-architecture.md create mode 100644 articles/hdinsight/media/hdinsight-domain-joined-architecture/image1.png create mode 100644 articles/hdinsight/media/hdinsight-domain-joined-architecture/image2.png create mode 100644 articles/hdinsight/media/hdinsight-domain-joined-architecture/image3.png diff --git a/articles/hdinsight/hdinsight-domain-joined-architecture.md b/articles/hdinsight/hdinsight-domain-joined-architecture.md new file mode 100644 index 0000000000000..e67c1acd73b9d --- /dev/null +++ b/articles/hdinsight/hdinsight-domain-joined-architecture.md @@ -0,0 +1,139 @@ +--- +title: Domain-joind HDInsight architecture| Microsoft Docs +description: Learn .... +services: hdinsight +documentationcenter: '' +author: saurinsh +manager: jhubbard +editor: cgronlun +tags: azure-portal + +ms.assetid: 7dc6847d-10d4-4b5c-9c83-cc513cf91965 +ms.service: hdinsight +ms.devlang: na +ms.topic: hero-article +ms.tgt_pltfrm: na +ms.workload: big-data +ms.date: 10/31/2016 +ms.author: saurinsh + +--- +# Plan Domain-joined HDInsight clusters + +Today, HDInsight is a single user cluster, which works fine for most companies who have smaller application teams building their BigData workloads. However, as Hadoop is gaining popularity, a lot of enterprises are moving towards a model where clusters are managed by IT teams, and multiple application teams are sharing clusters. Thus, multi-user clusters are one of the most requested functionality in HDInsight. + +Instead of building our own multi-user authentication, and authorization, HDInsight has decided to rely on the most popular identity provider – Active Directory. After integrating HDInsight with active directory, multiple users from active directory will be able to communicate with the cluster using their active directory credentials. The powerful security groups functionality in active directory can be used to manage multi-user authorization in HDInsight. HDInsight will map the active directory user to a local Hadoop user, so all the services running on HDInsight (Ambari, Hive server, Ranger, Spark thrift server, etc) will seamlessly work for the logged in user. + +## What are different ways that HDInsight can be integrated with Active Directory? (Title is too long to fit into the TOC) + +When HDInsight is integrated with active directory, the HDInsight Linux nodes will be domain-joined to the active directory domain. HDInsight will create service principals for the hadoop services running on the cluster and place them within a specified Organizational Unit in the active directory. HDInsight will also create reverse DNS mappings in the active directory domain for the IP addresses of the nodes that are joined to the domain. + +To achieve this setup, there are multiple architectures that you can follow. The details about these architectures are provided below. You will need to decide which architecture works better for you. + +1. HDINSIGHT INTEGRATED WITH ACTIVE DIRECTORY RUNNING ON AZURE IAAS + + This is by far the simplest architecture for integrating HDInsight with active directory. The architecture diagram is provided below. In this architecture, you will have your active directory domain controller running on a (or multiple) VMs in Azure. Usually these VMs will be within a Virtual network. You can setup a new Virtual network within which you can place your HDInsight cluster. For HDInsight to have a line of sight to the active directory, you will need to peer these virtual networks using VNET to VNET peering. + + ![Domain-join HDInsight cluster topology](./media/hdinsight-domain-joined-architecture/image1.png) + + Pre-requisites that need to be setup on active directory + + * An Organizational unit must be created, within which you want to place the HDInsight cluster VMs and the service principals used by the cluster. + * LDAPS must be setup for communicating with the active directory. The certificate used to setup LDAPS must be a real certificate (not a self-signed certificate). + * Reverse DNS zones must be created on the domain for the IP address range of the HDI Subnet (for example 10.2.0.0/24 in the above picture). + * A service account, or a user account is needed, which will be used to create the HDInsight cluster. This account must have the following permissions: + + - Permissions to create service principal objects and machine objects within the organizational unit. + - Permissions to create reverse DNS proxy rules + - Permissions to join machines to the active directory domain. + +2. HDINSIGHT INTEGRATED WITH A CLOUD-ONLY AZURE ACTIVE DIRECTORY. + + For a cloud-only azure active directory, you will need to configure a domain controller so that HDInsight can be integrated with your azure active directory (AAD). This is achieved using azure active directory domain services (AD DS). The AD DS creates domain controller machines on the cloud, and provides you with IP addresses for them. It creates two domain controllers for high availability. + + The architecture for this setup is shown below. The AD DS only exists in Classic VNETs today, and hence you will need access to Classic portal, and will need to create a classic VNET for configuring AD DS. The HDInsight VNET exists in ARM portal, which will need to be peered with the classic VNET using VNET to VNET peering. + + > [!NOTE] + > Peering between Classic and ARM VNETs can happen only when they both are in same subscription and same region. + + ![Domain-join HDInsight cluster topology](./media/hdinsight-domain-joined-architecture/image2.png) + + Pre-requisites that need to be setup on active directory + + * An Organizational unit must be created, within which you want to place the HDInsight cluster VMs and the service principals used by the cluster. * LDAPS must be setup when you configure AD DS. The certificate used to setup LDAPS must be a real certificate (not a self-signed certificate). + * Reverse DNS zones must be created on the domain for the IP address range of the HDI Subnet (for example 10.2.0.0/24 in the above picture). * Password hashes must be synced from AAD to AD DS. + * A service account, or a user account is needed, which will be used to create the HDInsight cluster. This account must have the following permissions + + - Permissions to create service principal objects and machine objects within the organizational unit. + - Permissions to create reverse DNS proxy rules + - Permissions to join machines to the active directory domain. + +3. HDINSIGHT INTEGRATED WITH AN ON-PREMISES ACTIVE DIRECTORY VIA VPN SETUP. + + This architecture is like the architecture #1. The only difference is that in this case, your active directory is on-premises and the line of sight for HDInsight to active directory is via a VPN connection from Azure to on-premises network. The architecture diagram for this setup is shown below. + + ![Domain-join HDInsight cluster topology](./media/hdinsight-domain-joined-architecture/image3.png) + + + Pre-requisites that need to be setup on the on-premises active directory + + * An Organizational unit must be created, within which you want to place the HDInsight cluster VMs and the service principals used by the cluster. + * LDAPS must be setup for communicating with the active directory. The certificate used to setup LDAPS must be a real certificate (not a self-signed certificate). + * Reverse DNS zones must be created on the domain for the IP address range of the HDI Subnet (for example 10.2.0.0/24 in the above picture). + * A service account, or a user account is needed, which will be used to create the HDInsight cluster. This account must have the following permissions + + - Permissions to create service principal objects and machine objects within the organizational unit. + - Permissions to create reverse DNS proxy rules + - Permissions to join machines to the active directory domain. + +4. HDINSIGHT INTEGRATED WITH AN ON-PREMISES ACTIVE DIRECTORY SYNCED TO AN AZURE ACTIVE DIRECTORY + + This architecture is like the architecture #2. The only difference is that in this case, the on-premises active directory is synced to the azure active directory (AAD). You will need to configure a domain controller on the cloud so that HDInsight can be integrated with your azure active directory (AAD). This is achieved using azure active directory domain services (AD DS). The AD DS creates domain controller machines on the cloud, and provides you with IP addresses for them. It creates two domain controllers for high availability. + + The architecture for this setup is shown below. The AD DS only exists in Classic VNETs today, and hence you will need access to Classic portal, and will need to create a classic VNET for configuring AD DS. The HDInsight VNET exists in ARM portal, which will need to be peered with the classic VNET using VNET to VNET peering. + + > [!NOTE] + > Peering between Classic and ARM VNETs can happen only when they both are in same subscription and same region. + + ![Domain-join HDInsight cluster topology](./media/hdinsight-domain-joined-architecture/image2.png) + + Pre-requisites that need to be setup on active directory + + * An Organizational unit must be created, within which you want to place the HDInsight cluster VMs and the service principals used by the cluster. * LDAPS must be setup when you configure AD DS. The certificate used to setup LDAPS must be a real certificate (not a self-signed certificate). + * Reverse DNS zones must be created on the domain for the IP address range of the HDI Subnet (for example 10.2.0.0/24 in the above picture). * Password hashes must be synced from AAD to AD DS. + * A service account, or a user account is needed, which will be used to create the HDInsight cluster. This account must have the following permissions + + - Permissions to create service principal objects and machine objects within the organizational unit. + - Permissions to create reverse DNS proxy rules + - Permissions to join machines to the active directory domain. + +5. HDINSIGHT INTEGRATED WITH A NON-DEFAULT AZURE ACTIVE DIRECTORY (RECOMMENDED ONLY AS A PLAYGROUND SCENARIO). + + This architecture is like architecture #2. In most companies, the admin access to Active Directory is restricted to only certain individuals. Thus, when you want to do a POC, or just try out creating a domain-joined cluster, instead of waiting for admin to configure pre-requisites on the active directory, it may be beneficial to just create a new azure active directory in the subscription. Since this is an AAD that you created, you will have full permissions to this AAD to configure the AD DS. + + The architecture diagram for this setup is shown below. The AD DS creates domain controller machines on the cloud, and provides you with IP addresses for them. It creates two domain controllers for high availability. + + The architecture for this setup is shown below. The AD DS only exists in Classic VNETs today, and hence you will need access to Classic portal, and will need to create a classic VNET for configuring AD DS. The HDInsight VNET exists in ARM portal, which will need to be peered with the classic VNET using VNET to VNET peering. + + > [!NOTE] + > Peering between Classic and ARM VNETs can happen only when they both are in same subscription and same region. + + ![Domain-join HDInsight cluster topology](./media/hdinsight-domain-joined-architecture/image2.png) + + Pre-requisites that need to be setup on active directory + + * An Organizational unit must be created, within which you want to place the HDInsight cluster VMs and the service principals used by the cluster. + * LDAPS must be setup when you configure AD DS. You can create a self-signed certificate to configure LDAPS. However, to use a self-signed certificate, you will need to request an exception from hdipreview@microsoft.com. + * Reverse DNS zones must be created on the domain for the IP address range of the HDI Subnet (for example 10.2.0.0/24 in the above picture). * Password hashes must be synced from AAD to AD DS. + * A service account, or a user account is needed, which will be used to create the HDInsight cluster. This account must have the following permissions + + - Permissions to create service principal objects and machine objects within the organizational unit. + - Permissions to create reverse DNS proxy rules + - Permissions to join machines to the active directory domain. + +## Next steps +* For configuring a Domain-joined HDInsight cluster, see [Configure Domain-joined HDInsight clusters](hdinsight-domain-joined-configure.md). +* For managing a Domain-joined HDInsight clusters, see [Manage Domain-joined HDInsight clusters](hdinsight-domain-joined-manage.md). +* For configuring Hive policies and run Hive queries, see [Configure Hive policies for Domain-joined HDInsight clusters](hdinsight-domain-joined-run-hive.md). +* For running Hive queries using SSH on Domain-joined HDInsight clusters, see [Use SSH with Linux-based Hadoop on HDInsight from Linux, Unix, or OS X](hdinsight-hadoop-linux-use-ssh-unix.md#connect-to-a-domain-joined-hdinsight-cluster). + diff --git a/articles/hdinsight/media/hdinsight-domain-joined-architecture/image1.png b/articles/hdinsight/media/hdinsight-domain-joined-architecture/image1.png new file mode 100644 index 0000000000000000000000000000000000000000..18ba694b5418793eae52ebc9e05c1dd8873ccc38 GIT binary patch literal 61139 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%0Dh z?js$?|DXO5JJLTwF3r3peO|Lh*p8tz%1Xl_#rVE&_z55FT6@>00XAXl#W1(f(!DPx zw5IgLK@*ez=lA~7Ue@46n-=fL58yc_k&X&EG#mBvB*J~c0hGg;oPHa7 zzd8J0ANik-8J5J{jirMwwFggq?wdjY$3n&!VjHXk*m>O^z?=D#V*91XaX>Fx{!f=! ziwrn}D4-mtKMnjJN6|(c3RoZz=qsi8#s7Y~bI2QDh9JNv9d1d*LH!>Ksc!=8!~e&I zX{Q8RHyB^WlmNkBdFHAQOymg{pinHy5&)4&(M`a0{QJC;5DjIDurIAGfaOpL1(c?> z5P=mfsDe?G+)Wl6LY_&DD^qURs#(nqt`HNiGlM|di0>emJnSz^UfBZ$wTYiyUF_}L zA|Ah?w`3*)JW<~S*j~`{aO6t9Yb{vaiL_b_x8hppp&UaUSEaYVIeugR5gcGD!hz$^ z%<_Q2OBg8QH$Wo~uR{tIOTZz&UtZC1lydMzMfn`l?UZsG3mF}C?OZ^quw`0XFLEwP zTG;#nTVO*>%9)dw8hz~r)>s(usuy}&kT|Bli_j<>4ZF^kvHe~<2P_uu9xl8d*FA_h{*LS zWToS%e!@|QkpRc#%K}MNKf zb&%rA0jTaP_$R1hZRv{caLEzB$bHvoo^~i+m1`~nO-xOlUD{xBjV#?;47YUs5xU^= zD&ODt+jSh@t-VUI!HnGTy@Y#4g@+1&8~2^Os##DnMTszR?IeZno8EakNkcV(vY3Hc{;Vl);aJ;88M;c|(k- z3#XYw$8{x{olj9`dFx;FCrKxo`zcdsS`O+B{pwEIp(WD8Z>&Bffe$!|mAn8;ll@-! zk@sjsv!isr#_A;pt0tcDKRf^;08Y};u0q?|W!}8+I(S~7PeKCas6+H`)BavV0f zOPpQ4@l^NrcqNJd9kGPIm=6{t;*?TW7BjbK*Wy_NWsczkWV*$nuF1Df@$OhE%93h} zA-ARZS{#qM3e3PBQSEnvRDZT7do=E;MMf8xtq-xEc0uifJ|6KGbXE}S`H)ANw&aPj z(+AfOPiSzCYZc$Ol6U6%wHy@Jx{VR3+cF)MU`+2T;?G`i?zxxyg-hsO5euFtB+ah= zOv~5%v}m23i!y!ydQK8K)V0EzmYswzMV-b?8Je!iDRMcDPc2I}!vi*0`q2difsXOA zeR;sjU-smlrziq$3dFWVyhei?Ji8QmUyPpi?ci7c$5dC_XtA9zcR<$8IKq)CmiBrW z{7SNqJ!UfyX!k|EuS7*3t}PpFj3U*+UCisF^MW0)FCa`Ns^qwV}N{$78z1|Q?Fb{7{gF?98+u$#STG_*;qt_ z)9maIBYUKx`^Rxa6m)89pxc$Fcz$)f0HUGS6MJ>b_Z?7x8G+0LVt0UO#5n}WQv7Q% znEAkAonj~EvRT#a|82~vFp%4@>iFo3Lu}#6N{M0Q0A48m)Av}*xuL^2FA}M4{Ff0U?K4$4LI_anAS$8XXRfCd zky?_D^P{_~@qCdG_y>ky9T&;{Ek&4~1ZpQ#GLR}0F`~_te7Dg z5)ep;!QPW5Ge$WyFR%S;dBS+CQH;-t?-5@C%Gf%$B8-Mc!e5x$wlx1{QD{jmFv$4z z+R68!KWO})uU3N!%vwwM!0t-GCLX7GD#4(;1rGt?KpCTz9arTjWA6S|g13E4JP z3u&^m5*3@xN2459s+p3Lx##59n>o37l4D;8-v_MWotJ*b(k)xR98m0<%N`W+`+L`jkt0@oVfTG%?%%CE~@~-p^3QFPQ$T zzTcFki@S0?;%Z4~gQ?7ur*tQJ%P9rG!Lf_F)`4x%8WruvnF-!*QJ+JA=$yK#XMc1I=^MhY# z+s(oi#h$FIduIwM60z- zgMVVj@nV-K0oa%JwOwl`J5HrrPk}sbc4Ad?&cnBkkQyro9Gn!lvm`L#jxVSCj`Yk4 z#Nme$QWAQtx=-N?F>3VThtKA3FDYg{|U)nX8PPY(9p&|6PjmYeG zYt!nP(;p&b@$tAS30sq}ZZj14dz3jfyiP2OAtOv5Gk1K|TXG&dbE? zt;ok~*%Ch3U9$!366pEO0($x?LBKA9P*ISY|E|q-Cvysubv#Ip;yMfh zep3Toe=YxY8XfriE$IIrz~5FNpj0tzQX3EoGz3HXTVF^I^sR~o06y6IQ|rQ;0eHPP zVcp;G^6B^iNbUy#@f3B+qDdANvV@v)%oQ$rT=+$|t;Qjyu5b_uMjo`SI|G zJ!1db@?>n*m4|1u0CMe$#cjLEb(WtqEMz#8p*{NV1*Os-i<{Sdq@C=Hjn6wtR#67V zqR;tU68P?BMh*V@{8{Prgx5zhCI??o>57>0_&7B!YlVG6F%mYKaJh2LRXXjHWSVfo zM7O5&`}#goIh;DoJ8(8<43bF%9Nx!&HngvzD;}!=TFjLk~ki>w^9FC66o!Vi;FZG z?OXGcZ<3Yz+*RF#AaZw}JJdlHt|yD)ptaXe$zKQ!^$yvPW#0`Ck3->8;?^`iq>KqI zzYFqv6B!)Nbb{VEbvPZDa_LoMLQII9lsEUUo{P#CY%Ddfy(c?1xpv8=H1Hd}NiTC< z^(u{R93CFG-QcTWj&<;F=TGBGts6taeBts!Q;V>I6Ojpf6`klw$uGEP{j@&;%5&50 zdGTQuo>H~cluMsmnGehqKPKMCOiq@$kr{w)lm2_YgW!CHO)G_zFBZ;S=OF_(Fj>~T zQ98IGjBa$23>GUy29HsZvedH-jBn5`&Q2Uk4B%UgO@xw5Bu(_x-(yCm&B!kL|1!}96 z5ZSA4$V >7O8Jyr1*XnQ->Lq^}iJJ}mkPufh0CY`nRVm(^|iOw?SKG(I2r1BPk5BzEN=bpQ>j>_GEi9H6GGK7+1A=q( z#-wM!GWVVm4IwmBxfmlkIidXQOv|0pI1=>tk4|T-UtolIQN*V$S$iPdgQTgkuhpUN zRg&b-_YimYjwP$`Ce)LeX6n0$!H4kVsC zr`aC1<2W)dk=Th5jHOD6-X{$a^8*~7Y2$Fql{Uk#nN`Z$F^9Kk+jGuy=k#&pj$1`K z(i2;0Dy9i-Z6>^CL5oAg-2A@yj5+Tl72krNPSEA9kFbL4rwqWA_r{-iKDhJvuX9{) zN;?EL8`MIEnlT!(uJ4;9*nUdz1eOvUMZMYlO z(4+1BQdUqVjLOV^q`$G($}C57KHN&dO3Zw++}ty?$NmZ$XA?j2K7{NBY{h=4@i2&v zYP1?2r4b{p6;?e;Da?kJXd&Yg0%^!*bJ{7Zu-3+zt8p?n6Rc z$G_DK_Aq#H_-nV%x1Ex4ZUhjy3JMCsvGkCe=NLAn zM3c}j2sSCMO(7$B&;uQ1n(%H?<*21kw6qAs>hs6P*Fw;0I_OLr1Grz; z#C@+LcU2^D3s9nsd`s!xsJE~J6cUrRowIN5x9cwF{Az7GKlNJUJTWZ*_u30t%vUG7 z`7obOEsfZIr}UHwoa7I`A*(C%IH9g;)$yTEfqkuio?ZiWG^px?JsGm?Nog8Ta!}7CQ)c(u)7Hzb)IzYvqrd z_#5A8XRthDui1NI;0Cf(YT=ys*^#PE#q;zJmhQ=c@`=fNT<4&f*_l=t@)L1wFI}Hw zMdqd6*c@^0c~U?$SKFo#n;`ujWN=uJsC_G~y>*2W43W(dzb#X9_nX4k?<1R6u;6&( z{}5!$%h?94b&tmJ!b9D*ahAD-V0%T(Qy*#5Ovy3dzPF#ju^Abp0x`ITd9Fn)U*&|1 zsE(|GDt6eE*n4CvJ*2C-y0taVt!p7p3duEW&?9gyxX+5OYV2OQyMG6H$WV^Kt7-%% zp;4I=RD6>e99M55s)r7*t8R=C{gw0wg~$S^+~K`OMnv9PchA9ws|&TN_ycPG{C3lR`Fdp-6_o}@x* zkHYV;pj(GS2=M4b#h)QI(xQbT`mf~auD+r_RX;(6Zs62YQ&U}EM(Mm9N^1W7)|&Z0 zw^jHDBy;8T=M<;BJaKU`#3wjB*hv|Cm~~H<8nG%NT_ek9#(bcrby*|j!fHNAuxOw* zl>B31;kzg93-qU~GaFQaj}53SccLqQbkRBj4}<(96a?H`o+p_Wf0NZ#^3y#f#jvL2 zjAKG!<^F>&G!X$uwpdNzestzFlYbKo=`?F_9QNl{DDWBM%O8|%(~2v{r?Y1)SLWys z7u*6Grp*ejA@yUreHzB9BG*TIo=QRvH>-67mg+X&jZ0X+e-d%m94Tdb$OJBy5!1*u zx-lEk>@mRQXI1Of5nEyDRGBZ10#pQ zAN%`&s?Gj5(AZnjOGn)nX@;w*sVj^O4l%nPtC}hxNu3tXONfYA4d!Nf$M}nbB`nE- zb8yzjU{J?Cpbp1Up@;i^R4QVmJh-B4zxNRyB}gJgmHei@{w~e z9%;5i#{K>+t9faz=VizWrY$7d4T7EN5@B_$CFexw$Rp{`Spk(cRZxU~(&Xd{+Aq0v z%pecigHuHSoD4p9qJjI|x|!~a`qUqtJKFk)KhE)rkay2!D5#p>lP91pRQpwlx zYpaP58!g74`}_aq(Y|w84bJ*HTa2?VCXVz-8jo-hWg{Q^UW&V2i$DTX{M}$94`rF; z5GfU^hJ(L~`@j3Yt%J?W*Ciin9Z4|NkRwZ@$M8|O+S?*ZRP+bKDFNP|(DI`O~n$m6e%SqyvB_@X-V#fQCYLdAAVum0r5tKs& zq~>MMxGxhOe*7l=X1j?Z9>iEoE40@nZH%hP-t(|yrF76$;X-FD2cniIkSb@|+GagM@2|43%UjXX*r8_v6Q4D)dk1x8`Tv1_jd2ySWaM!FCV; zI7$BaPD~Wia5`q@4e|}U4a`gksC!-3 zh>0z`>hbdWD^++KX7J7}L3#Db;#L>izzYg}=|TQP2FL;|Cz5k3BB!(r-Wzi3_Tkn- zSG1@!7kwQO06Eskr819ZKhpfMX}oYpQU;A7 zUipMW7H)DmO%Q!UjTFlT04If&>|wo>Izl2YI4F_3OcUGl4;>FQw#i}m)?hkE0q&1V zUe2fMUE@pqbgyErQk2n%|MHXwWwnisx%Or1yu9vBE^Rl)X>)EUjTboZ!>%;(5^SCqVnb}oZ`sS7m`43RN&`}gE9rf`Eg937dD5-v9PzL8H@E;+&4LpAz zo$r`!M1RZ(ttBQZq3C-uJAQ9m7Z5giSnPI%d{!1x8xF^PknTo+GWf)^RyG-h$&<7m zGW<)Dn?Mq9IMsTzp!Y{XZD{?>_t?~Oc{dU`h877dlj_#)aPeoARC02+9hThg8FXCf z^y)5sGO{2!`Ge)>*YqetL6#GuHJnzA!P)4Qnm0STk#kU2xMvlI(JiXJyXj zt3rsq7a!$Ys<|kLMlQAugaa30e{NZVo7lO#CO`Q+L|wf~{@=kqCht*fTp;RX4oU^t zm!IL{w%iFP*N4Ak)F)&Jx4jw`UVDk{;ZT|Q6aZXVf3%=h0 znL-p7U&iWchA)0vi2%TP$t~byPP-8(OtxQ)Vx(~73+66eu*by~tFk)%U1a121FA%NLs*vR6pRZebibNLT6 zZUbfQ*JRJ^qQ>(3IML4@YE!;z05Af+{SR#p8V7U6IV)oqRx*YAQcw>>ia?C8oM6!j zB!KrBSxn91f2d?dV{RJ#d_Q0CPAc_Zz)3m$?)WWY8a)AeI)%8hk!?O+(%?=mptM7Z zoHhLrcqIO=B2u%QuHd976x$Xk8M%=0{4bIg2R?Dh$VfHJAHoVQa8gDW6Av}*y)d&i-~x7{d~CvuHD94iF1?HY_C*YJH-yq_S*Yb zV_`iltdvXrM+%wws*gpVnw)>Kc70C@v9Qj0_hcQjD(kvp`D(r@=4>!m{HO+1{&I>q zB_TfxdRUk+otX?jDTzzb0p@+L8|PS3GoA>wlGoqwygLa1Su#My5V5+&)G-|RTK4D5 z2@oEJwSlP4`~cPhnHmcaOZcaWX1>o(bsDx~!B4D{G55S;2VOm`LKRN#G(LY}={{X6 zWUX3|>Np_m)WxmOlEAXp|B}2({3?e9ET_>IeiIL$&5z?vB%&Z1klfP*&pZs~NILm- zy_X}aeOml)Eja>wv%1IkLf%XdOmWr02b4A4xVAt{LvhbxT0!Ns@bB0Zwf=Ds(=ltf=LeMcTi;mqy4XL`MY z0joP~r297`d=@Ra|%=a<}Z4F*jCyQA+f{!@{;zZ6J}Oi2z@V zs=pAE>3`;Tu$gc7;1Ez9co7=raM+JEmxbae96%`l#bgK&E|x6*-L0TJ*gHr(;xoSx z_~S#cnVtt9UW^9l9C_+EQWIz4DGX#TC?fD7g9s4{F5(>G&Mf=c`1O8fOkoTX2nK6o z3$fG?IlM#X9OEewRq-PMI@MJ3LUB69hSncH^?#_G#ZxDZlYgUfS|I`YWoS?3izLaZ zYY;a4y7OoH%LgZ@5xn49w8gJyPHCtcQG7`zk8chqR!P;qeakpi%*beMZN=y9jnb(* z&5!0`X8qNJ?}R=E<_S_c7ob~PT$uGP&p8%m1rqqZuz}(>u|!IGsIJ1|aWBSv`C(s*-cSMomCh1~pQi8+IO1jxj0_jNNZ0M}JD} z=l@;+N?8X~Os|oz=(@M=6LC$lW}sa$oGs(9KbOICCzmB^TD5PmA-#CIlD(&OPMezs zdAM~opT5xd$?Ud7^%sj>1@wG6-${qicTER+wa??Tpm5kM(0%UVCXa8m;w&{S1FlDW z&)s5hJ>3~Nr^@P4Ju#drToZy_7<;U$J!u+H{wH6R)g=Nl8JhXblOGff_LCg<7M?08 z)=gvpj2+8c6||H-eaL#He9?_Q5{jm*ES=FzGGTZIX&fKLrC+J7^Y^toeRwaP6+?BB zi+NX1Nv-7u$|0X944xs8&0M}) z(`3i!O@&j9Z8%_8&I#C;!CN!ZO|iqAu)h}*Y)gf>ZUeP?B5R$|NiX# znzbpK0Odn4r%M1=>+9u>b8D5tQG(XX7UwzZ@GR{B4zKj*kCG9b|H+zaR<YyH_&ehI~z z_OznplBkCl{V!MVg$fbiUbk~TE+Q%`0GbyeQ?Sm-ocx!S*@O=bkO?YE;0im_KqvfC zzZ=2={5*OY<=n+~)~nu(Yqj;17r%y<+9ur!#Z2IN*Nn7~nwPXlSuk1LgSwvo&q+Zc zvc3frfy!aBdb&cb#|DtMK-_*3kzyd`ouIGQY^JL)GXW#ljH=wRqPHD!Hsp!`?-`TB zwVCimJMsWGfofi%?Uk=SuneQEtWkMmcLW74z1@uiETPi?0uOyq=l)IBx`TbA`!9hy z_L^PCpe_M#y|}byX*)!&qQV9~5xdxI++|2YvFn)AQEXGGqVhfnT8MzU`!Vp}cw5l~ z#@dmsq8SLX^O&9s1l=1q%B=!}{F1oFw-XP;6}96M{Kq~D@NNf!QD_3xh~L?0C!yE@ zFP3WqSV0bvf#~$DJf%Ute#)XmwK(xXMKZU0b7vI*BWvrFSqQ|2M%kQhbYhU^Le!o4 zzU{0&Xkcq{g7IcBdoup`=Xlp1WH0K*!q7nYK;76JB>=skk;vrm&Bk@$U-I&?umTVH zBUEZ>*H|!4Jb@ATqiy2d6@_c}w|(>i6p=x&416Jl!)t>m=IB~)H(Y`^#=K<)vKa4& ztmWuW++>wec?}T1m9yeUhq97?H#NaFf3;;w z<+LJZA&=Bj52%F@N=ZqnCqtpidEEoI|Fjxs3%sB@SsND{nSPVh)X=D6tI(AZsVPLt zL3p?~RCsp+F{yoJnbP-^-7c1_rb+d=TtI-1LMskUAAGn&&UYbXml7 z@4E@%L zsVUP;4`g#c%=#VF%I*ArJFkMoRpo+~(tzKMVhdG_Nj@dxzlur)y74E?*2#QHMQtWC z)VXu0)k;*$ZJ`cE>isttnwal>VlaEj5u0=dj+Qemm;^|r>joSaZL_0lKKZYrFTXtj z>M#xaG%;6in%5^Q6w6k9TU$wbaydl!6C!W|I4oCHvyU5g5SUN*bS!)y`fLlMO++-7U6Ftd=lAaCbKdjBiKb0#o(fMRfsMju;iC(?n8#(G2Jh$*TvN&RibCi%a#To46**Tjh7?aNW!yhhB@-HG)0-Zc$Sz0p zN=Az-FCu7Z$Y9555%M^`{I#8vGS2h>|5|n~&Xn>8Y42IVyKjjbKy2XUgNaW+ z3=O1kI9Z2jognBe&Ls)%jWQ%j3;y@jJm9Mbe>EruZAyFn+Yz+ukr1IQxmC+8!0OF} zG%lsmZAVZO|I96AB)x(jcf4XLa5%f#H<&4d>l3&(%5|_zkT}O5@*4}Rt9N1*q^O@& z@r)lv@WfM{FLeY=)+krNHhAFx?|23wSm!-8rbaW|yvsSduu6!LdED2**v1E)qn;oDx1VFrue?Wk$O|v}M2>UFJgMeqcWyMaYgeTHa z`no+k@Yhduizws}-M;O#rj^{VO`$Kt9QsF}?}lKba1o#}lwGPts#y5)3xMqKtxOB{ zDm)H$045OH52+gsvwJWJpqL3<)J-6^Yc1_VaYGbYfHGqNSWE7o+m12`9pa+I*X*yi z_%n7pJx=s`F=MS@flYfgc^gwwk37{m-Bs&}F+eqm%xju&C? zJ;RAm3X%R->^v6_409u;ye7L?3#pLWD%4b`aURc6QTku1rl7R4{kDj?87yL21d^JH z12w&xMFSUCq{wS5kjmDkSkjs>TLAuu zgDpk(PL;L`|}i2Gc+cr;Wm)Jg^F<(%T}mD zD&%NEKEOOjritcaX~d@Jj`0tpZYiN^K%oLH_&!-M$MAB2GZPY;(jjLlwp%CX`rkr3 zz76=g-1*$^#?_Y0bd+i^?Dz8?RWUUrXe0=JcQ7nmTXS%NNhr9TM5z9U;#ch!IQ zMY>XDa3Uni9tgMIr+I=*@M-pLvFM9)5REwKfZng9Nc4i6JuUrO^!{~Z!`Z5P&kH&d zXztML^TK3s%G2mE5In;T*4nI>)Zd1u#!(-ZyZcG|7q9e16NSp0tW@s$tU;_ z=(a^b0L(&OUiVNz)JSH1=X4bA^nqOQ>1lTU!mkhZ5=flQelc-Sc*2hhXscmcr_RVs zF4NrmY-dYl08RzXeY5ZyoAxEx_yukebpu889Cc2e?@RxUwXt`PjLMw9fe_e|8UGpe zjzD=#zet4de6)O`<2iu*AZb}O`xXG#s95;(Tg9|iSd-=Q*9o7qOX=Y@T7pIM_THhs z$`@0B!RmUa5XsCZZD0x__ob+<*!QOe1?KX|xI-Y_Qmp&@!hu?;bO%gA#GUy9+Bg3> zG-s{7EL>XkWn3qwZ^w_+Sn70C#fhoKG&8vE$oPo*Cz;@JdF3aGrlS-RYG@+n(l<^g z4h)*%mA4NjP8V^fcg}&{WSXENa>|;vGD0++O>;aA$!7`CN5rpdoxZka-P?w=VM~8W*Y`isJfeto;K|-BNBfc*&6D-L`b~` zQ;HL8I`FwM+3N4{?t$ZJ@qS7mcEyi4G458Hqkn^*Vg_9>wdGl*!v3X6(5)XJfLRSt zDC;xk-*i5sKWq7`V17CbFd$0DbUZ@448j^`pn1F1$aaYL3{35C!uJHmwdSLrpPKlo z$?sjtv^#e7a!lx!53OHDUppy1=FmPczwwH0l2#YP39Lqc;EFc|&Yq2fu_wa%qQ-&M z^)%|A5+^_tcyp|J!A%lrE5Dfk5Qr$uf=Yb8rD5=T4QRiHhW@vqf53)fY$)SReE%jA z0S!Fm2^7sJwAUbyHp>05OnQ0Ea9U!ig5;9nFGuWa$&jW4uK)*pFAS3TO>xFW5yC|4 zT`O)!stY7l<7Yc@(V|)NqrbsK1u(i3gVVKyz=boU3g;%J%iar-r7s$m*NKzKL6f@p z%9^7IK})`01i3}yH~T;b@XB#?n+I_CZ0eSgBLLhG2!a&p%-Q;oSSu^fNWFzD;k*)2%mcO`#RtRWUY| z!u&sL1+|4pNGl?77U;k$%V1t_C_>l+tqd~#Pk`LKfLXY* z#%^6>?+`zf+SnpiSHpa zZr9EgbnO7SYU2BROTlLH!`|s9laQ)>%X2}(=iKkIje~f5VL=4cZQQtS7-L;p0DirPt~{y#Iixk)6jxxnXf?R!Fa(glL@uoof+h& z(lRrw8GK#o%~AC)5d`5kQOesBrjKlu`JSxv@*kyqz#dWheXUI(+$T7OYh;4z?3Lwe zmy!zkTSu16R)P^8-d4Cz`b=AivfQ_w|2RJ{=11TVXfGlIPN)NOf33xA z;MjJ`^eqs4Aex+IfR=3d;09_p zCQx&^El(H|z{cz+Z|MUQAzY3=A2QH@B#`s|a7I^_-T?+FgH!XmtcV0M=|9J>roI*d zLV^0@JNyWac4pSmJ_pe(KhF8~X>hx@Vs*Nc3$xCflB5-9i@g8!Mc|s;37&{{te5 zfk9kmoYTQRf!SW(IqF*e>N5`PDObx{dNVXwx$gmIjW1A;ud3eS6?owSU_x$Q zSV?~OKp&If@d;=g>W#k23DA9sb-AOuC(4Di84q|7>*$}ap;f0EtmVnMz4+BL$=oR} z_Qc-Z0jImgacQt(3(nvQMH!tBfqBy=igxbYUH+j|2At;SwpxU>9} z9T%eyZUMS5)I&)pCpKV2l22Iv;>8P75P07EC$B+38P!;IN3px35ky9a99&Uo%oTd- zuq-{DUfILF&T2Mve6Vbfs*O~2GtpS(mdMtcv;`en$x$@)jw48?Twk_0 zG(8ZDv$0!(pcivb_;P}Ua}xq7u8!~#Nl#rLW&d-fbl{k=Fw*<7RHwAPN2Eia{lHRv z!;Ijzy%VA2hx@x9={L{qHMa4&`JZRRf=l>FFfh7bA;}yJ@vQ7=Vz9hEiO5Wy?|e*8 zexCqf`K>*ncb6+v0iaeYNfFiKRK^-}WPu>{tEwJ@%X@Hu&Ppo<+(&Z8INy$a5uK_A z^x_dT0cw*dRj3I;Bi=!WaiqVEJ-fp)HGhZt2f@URgOmIwO|XsX1hCf-#)8vcIVy(pv6?+EH;x|2KJ+TQAQ4|IBRrr=A43i#r{Dm?$^7+RG4ws|?E}0B8^LSHk z-&q>8ThsDYjNnU)L)ITG?d+@4fB>GD3;d_7vqPx>#9 zzGa)@R%L2asX4p;Q3N>k59oft%cDTo$MJ{z7MrZsA)si~Y}qdFO|oJp0!YrD^RLOL z2cV@~xn3azY%Ad4Q{4KRb{@j!k3%7VKb|fBdXktB@^!@*f^Axwo1o>ZisBZC=A_gS z4vnmwflL*0i%cSb>Vy9-@Dm%msijCDuC&%GaYj>|p{YRVdB6VeK!NRcyR-+Bf6H`-|0+V| zSqNPDbe~*B2GPwC8#!gk8Bz(p0*=mxI;GmiQrx;=3_2LMZZb5^_yBpTvyxhB2F(d< z=KG-6vCm41280ei<2$c22j#Bcv;ew!vT*i{aUGadQECN!KHw{M4`PTCY(w9Hfa~^Z zd0QemMa-)P6v2Q+GzS`>*8`|gHU4RA7;oaJ-Cf}Xs4#iO$eGTWR+&l;wkvikzxo&2 zN=Jh!3n6B-5+$AR)9jXR ztRHBbBErE?g%b#yLD_KE(>bdM+QeJv za8-zc=#|@Gu1yLkmUOEVN_rfp^#V+|T8*#xkU~0+bD4t_;A%|DX z7=1?l9b8mw1L*xNJ`q5ztu(rcrXjJ{}vbHqoC|*&88Dbsy_@a3tlnMWP;|T z*_18Byg{|id~j0xz3dyprcrn%D&Kwb1`lfjiWztDpn=!l&6u9Mkd zcxx^34{pgh?q+6R^&xV-u=1gR3?jw4H{D~_5i2(*Yb%$kfME`VCdM8Avcv`3)#70J zy*hArF*wjhYKX+&U*6Cbr-z<2y!@K^hi<0&2~~?hi|c!kJl7^OBK+!?1sXmIz{0bZ z&DKiSGi8(q4u+@|^;k754U*equwl*U+eR)pTi~b`r=Qsg8#QdJ$X@^jQ)v(A4P(U+ zV(WU1W_%nAm4Sx)kyy7|=7X10((MX<1{ahlv)C_I6*P6tgj3&Mm|f_Y^tFD*GW{Ww znYg`mM=Ww>O}$}4UGJM-)dppURe#L)VL!2}p1v7`Wbo6u&55OKmd(@~#7Jt|elxg9 zuim$wU*60&B8wkph@!rTe9>gU^U4OmD@tl=Rm7VtTEgImfcn6$p|8^1Ho+NSo=TUR zWT93Z=ymWDud?pn&r77~i?oH0v4(F2v#c7{EkgINXyNAll8?9b48GcpRz$8%sMjO! zehccc_15p(TP2}4Pk(Fnt6}-MX@7yBix+gVjGl8|+r0<(=VmG~Vj;9+pz`4tXznPX zob|5Vs-Y?yq0Hh789*O-pz9x$UW?V;s1<4$#|y&P(W(x|8o^mOj~Z(mUtvFuatk1_ zoV2ahzcaM=6c@z)K0h=y7oBs4gWw~tx>*map0v! zn}Wq=XM-K0_q*B=>`Y&YZu5a&Fe1x@_q4dO80nrfe8RkJA7~5*^M;S*+8(-t*|0g^ z**7$ru>E0E>_UIn%sMSpGRM-xgbilfa{e?>e0_ZS%tsrJt91KqHX%h|{Y&&2oE~KUrUXfgPuK*1 zpdIIuzTT_(2RKZtB77#edvyX>FXemJwJBM-Al&9;sQtRhdO?Jj)L2vF?5?Ikl`P5D zz_I9GX01UC(J9coBz=erEPaDcx)jifm;ZT_wHoZh7x2zAr*;c}8Kq;MHLf;lsL|He zy!cp-Ss=P}_E%&;E9KW*#nge}Ka+hyOwVB1M517Ui2`NniA4F@mzhnz^{(MHlIq{G z;04~QslN6hlSXvbem^uAGIf!tSU1>PqV}!X>&G4Y|vqseVWf=LIJ!m~N6-6{G*R5Sr-TrBZXSj{QsmPv->ytixDzL9b ziV3UzGAX(di&(FTCk&!eer;oFo}7@=YhITt=&K2gnNpT# zA)<|Hsn#|}Fa3V~Rf~UYLIbDa zf3^C$RXL{TDB{|1iB{`WpxEVq3`M5$4@xzEf1=>AuD#ZgL&~+TQctOIS^Yd^%*haE zz#EKT4r!hA`(|s1R6#`Pd<70-4_?l4vp`0y$fe&5U*APvgeY7ruG;+UnrOf5fkQIk zw%*t6*UV}(D$VQ~mWv}LS*p($kW(qs-}bS_< z!#NepgJ$aa+FFVFhgfBz2;xedgqmt>sY>49?cLFyvE9bB4jXr?EVT9Y(Uji{W+Z;( zIYTHe??;a|p+0f(=6dXfLS8#((bCI3O0kFMMHTs3P#I(|ar)3B&-9^buV;!&`d)Go zKl4a2UP(f!L}{Vdi~-iLuOGe*qeb{acYm`YX&0H}o{={uW7UiFWIE#`!@5ON4pDZZ zKY}>{d}XTsqKmo=fj_`yx_2yNga5W=vVUV-yXqdjI~~FuN34K_n1_snPAQ zcTnc@btUfD;Tbm9I?b0QPfj#fEZ4sM;v{kUbziyKH^0_j^@~4!a0)=bm(TFuw);W8 z@kuLTdBa&@C%kx)`4s`@0XlDlKkAR*926|QE}*rSd8P^g+a{}A&cbX0CQT%?ceKSE5Dil#svulT;ZXk=Ji z^-WMhBw}JE4#jV{dh>&_cF4GZHA^?cOt#>U?gQ(2*^EM}=d(+vl3l?IkaPvqHAPI^ z=ubj6jt<3`r6UGDQ!RV0lMS|wVD6U_ItW&#y~vzDAJ@Zn&JdxP&`&76KuCFM2F~P^ zludW*;vJ!3{oe8fT*E*|-#>fQ6t9(v!N-CtV{7V`)HiapZ&wg)*6{rvD0!A!@{|$R z^#GChVlHw4uw&m43Mh*X$e**{lHrJ2JvcwZez~L52N!PbDPcL#Oe$)azDFq!&sBE% zKplPPYPV>#xKzLKywE|Bx2yZp_gg8iR^rQQzD#E1xDZfL`E$iaKYWFQT6RXam935n z6{+LDLKRwmN4uoFtg$h#b#FoS9;;t;jyq|_g13uwM7&d&v0{$*KK!#B-m}0%l2=05 z)Zy}8Kr};2eN>EveB(Av@=;h~+)7dw1{}SI` zTc4^0ndM~6pZ=wYg)YBUQawK+F(hRvoK;+VHd(74yfQVH70~ciOL48~iRbrgR)Z=9 zRjy_&ds|~*Pf>ZhdjH*`+IBR+603L{Oze)m1yfYGqQ1iAfWVG^!KLM!n_F*ZPd)Jo zf~#ZN)a)0{to_NX1R0o_CG2xl>Z4U`#{G7C*`9th@WqaG@d~yZ#%Y&U?QP}XoOnZ1 z5|;-f7P;r+nAj7?xD@J(IbiqKh0Xyi`;t8w!}?5t+EsZ>t~Co~?4OU5Abm?Ql2MhU zm&N8pw5@+dYcD$Hn7!%$D$G(u_-9Fle>|(-W~rLS3mH?7_z|&~J>~8!qg%@Fb&MvH8 z{9T)3u<;!`GcQx8(H52O)%kMYAhPCmNSn5N7v)#C`+Kt2;)%71B`78qpV}N5IPZ@w zN$h=Sg`2agx1#Zxg;lJQ%sNCm+Xvn?gj7hnF8qXR&};#-TIUcko@$We&fI$#7|ojL zL+MkUe2~bWu{tl!(G23Q+$Z1l{`5Z~t-hp|`o7cS4W9u?Da0zn7v$$ zcxg&%RK&m9#QI#X{fZk1g8ezAK%?E1)zlTyUtYbigiR9E{?cewkMMnirkB6Ax3pT5Gx1iJXZ4t9c>fXp zRlfEi$S%SnB$o+Ktp^jL7#Uat@v1ZI2@FF6IOv0u0M0GI^$aYK^=!YJ z)jL09@K1DB9u~WNc~i5DWG4Dmcqs?sDlsv3NH4b0237dx`9{Y2!oajJOD#G>w&y;* zzzw$lPna3w7X|^85zmJT#D!SWnc#6 z0`Rl9B7Y8aH1(+jw}5%;aQIc4tlU3x$V$vPgrfwsMbYyIrep2gKzLz$j{i~(uEH}u z>EP-h4&hR3fDY_=qxmg$Mx|l*^37_8RLzlCP2s-kUBXriEW84Kc=8I?{@DW3f0y|O zwVQU0o-oJLGp6mEEnpTKNcl&p_$7Jrey)D-7)=OFCqISeXZjtGr8tDJr z`K07)d;Tn;tJ8tg=*V?&_0gpe69JXD{kFnJv5Pjxo;Q{C6j9wPYlTua-_*N>Q8vt7 zuDWz#{7kLZ#@D{dP((JYzANqvkej*sPG)#{!m6I2806|2CN_Mx$Eqs<44581rM|YY z))KT?k)hTvT|0TU0qMok^G-k9S0;~KfQ(t$&`_#Zi`}nYwtk#3Y>l}3e3P_PGq649 ztb1@-`};uZzgdfCMr)>LpYCWSMs#kJ!@O;R4xU?@`=I04;E!`V*AwaLx5l$|c=>MJ zhhHQ!Q`QRePAM5PxzgHZFCRV&IA!~EcEADCQQeVv?iF&}?~dM67)^xT!>Avfln|#6 zq+462ci`>qnq?Mx16%{b;kNriYb^OnW5ziZ0GgG~B{|K<=|743gc4;O^ zY_q66)nc*SJ;M*)M_?YnIa>XoHEjG-3IW5tX9vTMoz8e(J!?ErDWTiFBXIV4#`SF` za_QnL7dB~CIW^NM5v-xrmLQi{dF9_$UpL!Bm}4P=ISwehV!5N_?jRUYb5ac42FCjM zmjhgFP^VW3waDY`;uPd`G)o%yZUqc89!TOnkhkVV6n_(u(~2MD>k%HXZ)#f|llXXX^^SFR zd>1P3S5GUy_>WUZ7xawmL_zA&=DvQB3dS5mke?=Y77~fmUw(W5Z&%4+`GW2iq6ivE z-^-K3C?V!uzBW^fD5At`bSdLl2s6JtjL0x~1B@fQM$;b-n9W>O{u9-$#2WgMt0G({ zmF$+e!*g3$8=uGkO-_Gd{rwQX*o!SWI|A{0%ync;PDeTv4_VdE7YtD5C6>!x2>%qU zlYhMbevTWS*BGdYRl4|o->c(4gl3bC(nHC+I$@-MM@sv`ZKFcchpdk-vd*7Xi)5$DL9H z$N~U2JLI2PmApqARzt&b6aU~m#WF}jNS_;7W;@qsS{hbFu@MJo5sc@ZZyBii)LfeU zS=Mea9m2cen zUBzs`xRg!Q~Ft=>gw zZ13q5k5|0kWweaI6zxgn?O_Vc6jh;d*EVE%Nf;HxmQ^u|#lMKa zwpU)qkXLu*&s8IKJs%WuVHH!|ocsuV6H{LM(mnsJ{U>=ta(GG#c68v_s+H`APs|4R zq|cIpdQ{Tb!(~M0a?sMlfy_xWGIY*iv+!qiF6??Xc(H6ZGnB#_EZdJh!E%ViyY}%7 zsMrtMW_>o%Skzh){UJ2E^ssFhM`(BHHBHMnT81(jH>8XWp`;hSBs(^pcRg9=*8i<6ohb|*kzq{hNj z;V2aZm^B3xr*q!8PLzM-2(B_o8VbV~eoZfM7J20QHPy{d3&%?*7HZ{ccLg4N+1|Cz za@JROOnZ%Z`%NUb=HIqL(y6v6j|gUdygb!hJL9_WXp>ApLwQxVag}lovBf@s%v_l9 zipSl-y&j8p9LF1)>-)XKtlc~{cGVz?Mc-y!*>L{Bzw)38{c-kQufwWL%|5k zbeo97B)|Qpre5`s>GY)akmooaabiinR*wUn;0Qg6LDv<6$W`v3lx^9Z2EnBOrX-^MXW~BGQu1itp z&MsqP7m1l;F;U^La1)Y>s~`1{O4b>5+#uO?IjpT9QSo(ahd! z-tUf9)e2KyQSFT6isc$qL=loy8ZkW`Wr=@YO=qa`^S5|5lz2|Hp+faGk_A(AyW!|S z<*J5dTv5MRErU#NXS{#ZP?U@U3b=42P{98md+!z31oO3vqP&WVfQo`rRZ5hq0s_($ z1Ox;WB|zv(3%#SXSSSk8tF(wT1wsv72!a&p1PHw-olvCLBxe%*f8YDpM7&K zF>x|w&6+i9p66L5Tt4jsHEvCZZ#Q!QOW~T4C!Q0cN_i3V*_d;xpSF>OZx))!E(9$I zs(%$2z$Vz?kzcOsHk%nXGS^9vChgTq4!8%!g3VHHt3bU2Rgs@65O#I3_~yaT&A|0a zD{)4Q=jg=_;Re2{c-5FI~nLkexRDZ=f- zT5F{%a#m+7C=tbknqji@P$+ryeI~Q4IN5?Ubalko&1J*>%f}qHlzVzIdfK#~6v}WQ zWjA;Yje%lc3wJE+y~+J~)$Ew-xvyz`>EBvv-~*lnSXD{mdkz+szfS20Fr*Lee!U;W z+|AuKzcxGsI1VOhF`x0yfzQ|CYT!=0(KGf!uX;{*94!yvXA0CdthBs|JZ8s)geQF5 z40RRhADlT_VjrD}Xfgk^=Adg8J#EF5p~9}C$Gqe$UUpeWPeGiy06hDR4uneQ;ge#B z?S+`3Qv=d=MCh8@>bg^zq4}ud?Nsd(Zm#vCc5?3%5%Cox^f4vPnH7@dFGI&fLyj5_ zB+&IOSdNA8j$-Vu-{CC#RA4{oau(MTXNzwfpDmq%LfQm-PxslD?&)|86SVtPg9v>= zh>>>V*x$@k#3g8JozrkxY0BPt%PM)k+?^bx&#Y-ZgSx&)Ro%=dO^>ZNxd7 zg{!c4^PhtpWsgIuW-~bJZwaLpQ!s94!RtloKdQkzZ=Dhp^PGoOV=c`ao=Kpj1uj>G z|A4Dnz0MSD=8Zs%(h+nxJxDW*qRCxuQ@w10!C2dhE5++Qd*3>ZY1Q7|%1@Ik1lmX? zF9TSiJwY|8eik1oWqHhpI0B^}$p7eHRhP*0;BjH^lWrX!`Mk-u z1jdD#m2C4PpIgh_n)Wuk{kQxg^IR8IR;OY6-=t#r^Aea)A~=m=2u&cr#K|%fBt|b31GBV=&TS@j^x0&2-qU)Zi^qFX#D`F&2(TdsYu;d!o4a zSfS$!<<`sJgWb@&?`D|TnX(xI7KNk7v`aR>6_nl<=g$iz_UPZUj2zDs;A|6YzMvmy z-yY24B`qK%zV0oSlcrX7!I8nbBv|dVi;I|>fAOqnRgOsiNdn{9mWH483A(Fc+vjsK zT}ln7vRFzwi@%Oo?emrfEN1U%iZ}C;$sNgrfr*|@E0TTChs=>DU8R~iN zKJo4hZ*fTp764^o%jUwyzRlcI7J}D|z>_lxHl4
^Yo>v7pX@adBiEvI2uAazbnQ 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

Yw8kkC2vhoy=tpc%pUUBzjY?Zh~J zskEf?R+k-|c0tYoy}%DUtA+(0FBF*w9^jwW7zPKt_mPq11Nm99$XhTEE!VfRAlbpE z>~PvjeNog`5iLv#i?fy$DdBlCbmDGf3Rv^*QTk2O9@@#rB&l*UZV-I=UHhW zCNkuhBm9|sFT=p!EzlsZG^HNRB09bU%w`vzE7t(RXgABX@a%_<9pq_c7>!0 zx7Nr1;V!qhSjsOP*aTL(%X~IpjEx(+CO|x*jHF?XQA_f*H{z0YxZ@mR-fX)R2Dm!B|I2fl!}V`6R&lLt?@Hbj24Q#^4pC^IPnXTo zP=WyoldQlUYvbCLvl5>%gm=VZIu2!o-i++y=j<4^gz3bhc1!gnUIW7 ztup-E6vBL1Nr3_rECRmgLBYCR&j(YcCYQ^i#X5);h*hf%DTxufL$R#SV|xZd6`0g8 z17{6PZEJBGnGNFvDSsNzWIB>tt~`qxOi6Pu0!nKQ;mt2KP|ZhZj) z1N{l=#PhlH;XUxhIPHMXhPX`CDa$)=zuW4J*1{Z4PB5eT&&fQILTJkGBi{;HGZc_UwrdxHb9V&us z0{IEAv1>&+GBvdbPE0{Q)6iS_t3{C-VzrG?)AMT-;^TXe{c7GEm2}Kp?$FNfOB~r$ zBz^A^KMW_KD3&xTNz5qCdCxS}$E6qklCPv!da&+%Ds{a#a3KEuLllau53#A~jTUO~j~z06?#RS?~={fF=0tm%U>UHWN7Kx=tn0ZLZ}YOTwO zf<|}^isr9YD*Bfpwbu*`m}L73$O_EQ^mG~0ke6c5+X9a_9(cTs_@1`xPt`@7F+tk$ z-`j!A)h%zqWWebxYV4$!z-p;qSXto&E^eK;=LUZqnZ0U)1@VrrTEYu{XL7@aJJzLS zlP(P2qHXG3htZ;dtA?{?OTslH56M@Mf^{Zn-NcghntBpNS4H7f^4P5&n#j6+I zn?G>lu8%s?b^I;I@7A)VrO^ZQD;~%oXV6jeZ5^P$+=n*jDqPcWf`je+?>_u#v?qM} zo8#9>NOzfzf{v!?%!&P`TcsULICBnZcIhTr(0yD0T#Th4rV5NJH!mqvq5nE|q`P#n zL|9N5pP$9C3ZO;-fB&1G5e5m1+T61_nBUpat-<%V0PQyG>*236T6rnNqZn9{#EivM z*~r4F?p?r{#l$LV>R7V8{`TPLIK9;0*ZNB3mMc?#fZfGUy1&Q|6}^B34ya64Bdq$5k%FDmZ+>N>e7OeK89Gqk|U&$A4U_`A zE!Tu#$+hN>>;jx5iIS7Cp|PFC#3ufK@tppb#=(|iLVx1rM9SL0;LE<}=5KE}3YoJ@ zJy&EGxhdZTUR20(+#2%@ZitubupY-hjN6N&yeMp^)d}1tf*(_LD=D*2xYSL-LB;%O z08qDkio+ZFcYf>NUcv)>G^vsU1Wdx&Xu<<$tS9p!8=23IS6x)RT9k^}Nl3``m^EFDtb@g?DKGngQk=}&&#}yn5cQCzf?MP;;ran}( zx*AJn@VElj#05ht_M(Rb9KY~Pjnu3DK%)fl^24q~!XCl0!u~Qbz>s|YgWbZGVnDO; zZY^E@^-<#a7xUp;Fy0~0)@s3LjE^3`0hVAL& zb&A9yJbHCXYdk&V@uHIeetUTKz&-Tj!o)e!Dz8lsLXK6Jf0lTDi|!IGO1&CTG7%&r zET{y{n(X~la8_K2M{Hz4qsRO8e10K!ZTBsqzHtIq-Di$(z5Hwn#Cp-Z6Oek8ZUuJx+8B*`^!22JA{X;&jd2kYA;vSXw^gYc9 z{B*D^*7##hi@4AA6mX&P36dSl;7ovp7MO4A*m{x@nq>cFu=jq;n&qcSqLsYFt0dN*BHM(U%OHz?o!wUFY^%I@S4E`h5)CCch8IrvZg8eY`QQg5CSf z6!HPp!PZf=UpMhxrjtSm-JQ?^;x-kIn1}&Yn0AdAl-SNf8wUR31h#*|GU(J`FopQfGR8g5EPiq(opsZf>TV2O zjQs!5t4ZT9;bEBQoh4lEB3cCWf1`Qu^%lt~& zD$aAGP96l_LeX>DKeH2m`QA+f$fcy^Z;I^E9LshWHvTWZ@fjc%+^r*Gz~tB~p<_OQ z+UGy2pXk%tYBwFL=`y6S`>A@N`a6|FBcZ^eK#QzLV@;tt#eqhFQ@B@^F>Fr73EteH znSZGI?Ay7dtg)x|Hy>y{cOde5^|3la?OaM+nMWk5qB9+CMZ4JkX0Q~IxavBpBB};G z-fOS5pNKZ|?)?nEVA%k1IN+qXiM7Y%?L+Uf z!!q~oo3Sx+Imk09q?noaFIg`h=}d*hBOo~^(#P8YN2 zVQ_{$qPb+pHOiyH2(=7y)5j8Y8@y@o7gh&OkPHXz4DxdyuUqM56z8@)Kx^K>98uwD zd-eztsg|O&Z}X)!ptr4jVH_HX`pa-4Q0sJ^pJpg~JT(=vd-32m7zy{OR3W#8jzwX; z716zT=bn(3=Ji6Ndqt9zR6GVDrQ@T)tVp(QLG)iRz!FG3=T{N3NM z!4l$664jui51<#%eGVK}hr%8}>4(=YqrxB|IpSykI27^If6P$)KhtDu*i@bhe_@^-pX+B?G-^}Y+F5sobEJ+tv^sH%@FY1J`sBB>A_cIuy1p(^~(!#)|TfLN3LwJ zA}-}fVXX)?<)^30w5yW}=)4=Sb9V$}s8u26s*oFxA+6jnul*IT@tWF`nZ<)+|M+Zl zJUV^})v>hSyHA|e)aM^B%K_b-JB2X-msJC7iwz|!qA{Ed(oA3+n*HvT_#4@&dek`XyZbmWlkD^yFXUaX zLTs;yJX9x#fiioKJdZI-J-qqw>&7CJMADluS&CAm5r^lz=TL0yGMBQSyR5ckCMip2 zh_HBX&w73UW66FE~aMPzp5TeItr}#zWLkRn$v&{s4*{1a~S}kO)KHu`GcTUw_ zMXaVvC98Y_({cSaZxKqeTp#oI_bVx1Rxp=SU^h}g7d$XOxaC3Uoz=H^!xLsys+%50 z+s{o=OA4l?TKHP;LCa7wWZ}tI|EN|b<@diYJ!z>m7mI>9=Z`0-J}{>^9X(1`seMAH zcic*2Y@A%NeEzbDn%C#8)=LRj|5(;D!|~f8dea*he{V>CR}|5qTV6lwHt}S8we_Dn z*H!^7f9h?-?U5Bb$ZF;0ZlN4;RBQ9x5T zyuQUhCLNfzb1i_t<^TQjnT7bpY|LpwDji%oFwV753fX8QH?3fBwN&^c$H@$bo(xKj z^o~W@^Dk914uz~H%Yq|OIwnscrw5HH;rnJKOBFRa)}Dgrc+$2HZX8cKmbz-#mm-y+ z$BJO%P-;P@-5BO{j!Y>TY11*9123FoQQ$VyY2~DIvK{%d%a`HMXb!e`+!WSM94ZL> z(yGip@WBM=eMKF27QtJ>TDk_0EY9h3$WX7l{4lANYrTuW!qri}<ga;OdGhOPUJ zaKfC5R&0AX4|*3>FP)R8h_=?Q-_(|$)j7cEDOEt509#zy(M!YFFe<^tT4bNpq!K{1 z+1qN%aC%;!%yzB?LA$#;dy%4O#j&C)j-%#40V*Ecdw?u~d+r{Gt$*3((d&#xJ8QM5 zvPPPVS= zA-fdJv*0yR;MIfCsO3u>2fZSL5vcLwm0jx^Wq(CFfrZIhNk>=4E@nPHKG7k;XzQAQ zY5A4pquTw|@e{$^h0$JDZ|;0yaE+hie*grgflbvh2Dfco2Ar_V7}zx%4h3}W-LrEC zK1@6NFzX4Vvd^_dd#?AO{rG5Zcu>-+*Rv+RRcKtL*Tgo6vBFb(hqlHL3jUi6U%M+10?n289bJ;Ej+Cd9~>JU8{XvWgg1M^bPI0y7s_e~Ycs!F}8 z>cr~m#H>-obo}ap|EaLMBf|-zqhl$cz2E9=0<*IBxwvM^Ql=e~nuVroLbXI!R?6z9 z8Pp+K+%UBBrR_YZQkZtp3}SlY_?X#)!%6hC6_ImlV-=NDas5+W3sLiwrMtj=N$|{$ z&)i&tlSv-^{$Zs~MMwTAwxX?lBmHk(4#JmDlJhj}7Z^K(<~TF91;B3YEQ9+A->B$w zt$|2(R36a;3mbTrKk#}>%Gf!>Jsn@*ycfnu(|PS|uE(Z2l?Gw8uY`m)bQJ6sPQuOwd&dAKL-*Cy458 zR9o_7=(qK{k%gVN*O~ow%Bm!xqhf*im_9A{G~Dv{pH&0TMX3b$iG+rJt*Ug<_KZnq zJ=GKBPTntb-soZ+1%1WCHxpW!Vu+%SV; z1#bWQVcH9Jf}E0K9OJtJ9-A?dG-$E0y7k1fUo&)2dnY0)xq9mM((zRz6xw+#&LQlW z6}mk2j(vRLI2zo>5s7Y4B_IOoDz2B=g>n^A@=E1QI?7{+YQ%P1h!j{KNLHo=vqNh> zeCSm6ZrU+aRK#krEN>bWS}AI^R@TbBEC@c;3Wabc|G5Z47 z7$>65zGDj)p$Ewg3lbhsFb#msDnBxJK~qR?*6R{`wLE9En(o;izMzYYJIT|^kj#qZ zbV@#|JY3lDJlN;}tsX_HlxNm&Ay#s<$M*4@y82dL-WTr3ClHnI&>FAr5bnxt!)^Xm zaKCRY^{v|WG-sa8_JLrjjTg&Y_U)REF0J;bt`ikyS+K4Tz)J6A2+X1KT{c#GYf*0* zP7Z5FqDt&KtAsc=fqm(&Tf_ZPod*G;;h!(-)-Un8y@`-vWX2{m$VJANIF6$P3hkszHJAdY_Vk7 zyEywQG`_-%7hUwg-7Zhh57^>`_7nDXqugAVVOE~Am33=$7|}zZ>F!QZvqz%Z-3AWM zE`~WBNYP36y*YUai4v6)hCT3hh^Fh%_*l7w2ga)V7P#+Ibk3X=_H%bcfm8U>5o|x;*_~T{ z2swXlCJF2;8=@u>!^8Rr|FypX(o-ZjTOAu5zCJ&rb6$Xy7|F YcDt!i_<6zf9QeC0r!1Q*t^ex(13@o?9RL6T diff --git a/articles/hdinsight/media/hdinsight-domain-joined-architecture/image3.png b/articles/hdinsight/media/hdinsight-domain-joined-architecture/image3.png deleted file mode 100644 index c99937998bff64853805f8ce8fad0d391d02bfe6..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 67283 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

SLES for SAP 11 SP3+ |In Kernel |Package: In [Cloud:Tools](https://build.opensuse.org/project/show/Cloud:Tools) repo under "python-azure-agent"
Source Code: [GitHub](http://go.microsoft.com/fwlink/p/?LinkID=250998) | -| openSUSE |openSUSE 13.2+ |In Kernel |Package: In [Cloud:Tools](https://build.opensuse.org/project/show/Cloud:Tools) repo under "python-azure-agent"
Source Code: [GitHub](https://github.com/Azure/WALinuxAgent) | +| SUSE Linux Enterprise |SLES 11 SP4, SLES 12 SP1+ and

SLES for SAP |In Kernel |Package: In [Cloud:Tools](https://build.opensuse.org/project/show/Cloud:Tools) repo under "python-azure-agent"
Source Code: [GitHub](http://go.microsoft.com/fwlink/p/?LinkID=250998) | +| openSUSE |openSUSE Leap 42.1+ |In Kernel |Package: In [Cloud:Tools](https://build.opensuse.org/project/show/Cloud:Tools) repo under "python-azure-agent"
Source Code: [GitHub](https://github.com/Azure/WALinuxAgent) | | Ubuntu |Ubuntu 12.04, 14.04, 16.04, 16.10 |In Kernel |Package: In repo under "walinuxagent"
Source Code: [GitHub](https://github.com/Azure/WALinuxAgent) | ## Partners From f7a52e5b5f48258f86d0ad27405e76a506a9aca7 Mon Sep 17 00:00:00 2001 From: "Stephen A. Zarkos" Date: Thu, 2 Feb 2017 16:07:22 -0800 Subject: [PATCH 44/90] Refresh linux-intro-on-azure --- .../virtual-machines/virtual-machines-linux-intro-on-azure.md | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/articles/virtual-machines/virtual-machines-linux-intro-on-azure.md b/articles/virtual-machines/virtual-machines-linux-intro-on-azure.md index 54535dd6c60f0..62b74e0b9e860 100644 --- a/articles/virtual-machines/virtual-machines-linux-intro-on-azure.md +++ b/articles/virtual-machines/virtual-machines-linux-intro-on-azure.md @@ -14,7 +14,7 @@ ms.workload: infrastructure-services ms.tgt_pltfrm: vm-linux ms.devlang: na ms.topic: article -ms.date: 08/24/2016 +ms.date: 02/02/2017 ms.author: szark --- From e9c9008c33d653f351b7c3786d5896ac03ba004c Mon Sep 17 00:00:00 2001 From: "Stephen A. Zarkos" Date: Thu, 2 Feb 2017 16:09:43 -0800 Subject: [PATCH 45/90] Refresh these legacy docs --- .../virtual-machines-linux-use-root-privileges.md | 2 +- articles/virtual-machines/virtual-machines-linux-usernames.md | 2 +- 2 files changed, 2 insertions(+), 2 deletions(-) diff --git a/articles/virtual-machines/virtual-machines-linux-use-root-privileges.md b/articles/virtual-machines/virtual-machines-linux-use-root-privileges.md index 6dacfe1eaaf6b..c29ccd4ec55a7 100644 --- a/articles/virtual-machines/virtual-machines-linux-use-root-privileges.md +++ b/articles/virtual-machines/virtual-machines-linux-use-root-privileges.md @@ -14,7 +14,7 @@ ms.workload: infrastructure-services ms.tgt_pltfrm: vm-linux ms.devlang: na ms.topic: article -ms.date: 10/17/2016 +ms.date: 02/02/2017 ms.author: szark --- diff --git a/articles/virtual-machines/virtual-machines-linux-usernames.md b/articles/virtual-machines/virtual-machines-linux-usernames.md index 641ce7a4450e0..f0c110bb93952 100644 --- a/articles/virtual-machines/virtual-machines-linux-usernames.md +++ b/articles/virtual-machines/virtual-machines-linux-usernames.md @@ -14,7 +14,7 @@ ms.workload: infrastructure-services ms.tgt_pltfrm: vm-linux ms.devlang: na ms.topic: article -ms.date: 10/17/2016 +ms.date: 02/02/2017 ms.author: szark --- From 268b83879f906fc4327675eeb64da59d30fdb590 Mon Sep 17 00:00:00 2001 From: Sabotta Date: Thu, 2 Feb 2017 16:22:51 -0800 Subject: [PATCH 46/90] Update virtual-machines-windows-portal-sql-server-provision.md updated images --- .../virtual-machines-windows-portal-sql-server-provision.md | 3 +++ 1 file changed, 3 insertions(+) diff --git a/articles/virtual-machines/windows/sql/virtual-machines-windows-portal-sql-server-provision.md b/articles/virtual-machines/windows/sql/virtual-machines-windows-portal-sql-server-provision.md index 968c137353688..1981e12693413 100644 --- a/articles/virtual-machines/windows/sql/virtual-machines-windows-portal-sql-server-provision.md +++ b/articles/virtual-machines/windows/sql/virtual-machines-windows-portal-sql-server-provision.md @@ -47,6 +47,9 @@ In this tutorial, you will: 2. On the Azure portal, click **New**. The portal opens the **New** blade. The SQL Server VM resources are in the **Compute** group of the Marketplace. 3. In the **New** blade, click **Compute** and then click **See all**. 4. In the **Filter** text box type SQL Server, and press the ENTER key. + +![Azure Virtual Machines Blade](./media/virtual-machines-windows-portal-sql-server-provision/azure-compute-blade.png) + 5. Review the available SQL Server templates. 6. Each template identifies a SQL Server version and an operating system. Select one of these images from the list. Then review the details blade that provides a description of the virtual machine image. From 25e7773e3a6cc0f669785f02c99aea949e1b564d Mon Sep 17 00:00:00 2001 From: Sabotta Date: Thu, 2 Feb 2017 16:23:22 -0800 Subject: [PATCH 47/90] Update virtual-machines-windows-portal-sql-server-provision.md updated ms.date field --- .../sql/virtual-machines-windows-portal-sql-server-provision.md | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/articles/virtual-machines/windows/sql/virtual-machines-windows-portal-sql-server-provision.md b/articles/virtual-machines/windows/sql/virtual-machines-windows-portal-sql-server-provision.md index 1981e12693413..3eb48e935760a 100644 --- a/articles/virtual-machines/windows/sql/virtual-machines-windows-portal-sql-server-provision.md +++ b/articles/virtual-machines/windows/sql/virtual-machines-windows-portal-sql-server-provision.md @@ -15,7 +15,7 @@ ms.topic: hero-article ms.tgt_pltfrm: vm-windows-sql-server ms.workload: infrastructure-services -ms.date: 01/17/2017 +ms.date: 02/02/2017 ms.author: jroth --- From c3f5f1bc6571ac9b0ec4cc6d4c0e264c2f915b63 Mon Sep 17 00:00:00 2001 From: Carl Rabeler Date: Fri, 3 Feb 2017 07:43:25 -0800 Subject: [PATCH 48/90] Update sql-database-geo-replication-security-config.md --- .../sql-database-geo-replication-security-config.md | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/articles/sql-database/sql-database-geo-replication-security-config.md b/articles/sql-database/sql-database-geo-replication-security-config.md index 7f1cd9b2b8a8d..ee5c29e37c537 100644 --- a/articles/sql-database/sql-database-geo-replication-security-config.md +++ b/articles/sql-database/sql-database-geo-replication-security-config.md @@ -3,7 +3,7 @@ title: Configure Azure SQL Database security for disaster recovery | Microsoft D description: This topic explains security considerations for configuring and managing security after a database restore or a failover to a secondary server in the event of a data center outage or other disaster services: sql-database documentationcenter: na -author: Caranosov1960lRabeler +author: anosov1960 manager: jhubbard editor: monicar From 37e4700e51f8f606fe28c5ba72356eb9b8d9b78b Mon Sep 17 00:00:00 2001 From: Jeff Stokes Date: Fri, 3 Feb 2017 11:15:12 -0500 Subject: [PATCH 49/90] sa-weird-code-block-issue --- ...ytics-twitter-sentiment-analysis-trends.md | 27 ++++++++++++++++--- 1 file changed, 23 insertions(+), 4 deletions(-) diff --git a/articles/stream-analytics/stream-analytics-twitter-sentiment-analysis-trends.md b/articles/stream-analytics/stream-analytics-twitter-sentiment-analysis-trends.md index fbbbf75098f71..1e557633e5934 100644 --- a/articles/stream-analytics/stream-analytics-twitter-sentiment-analysis-trends.md +++ b/articles/stream-analytics/stream-analytics-twitter-sentiment-analysis-trends.md @@ -14,10 +14,10 @@ ms.devlang: na ms.topic: article ms.tgt_pltfrm: na ms.workload: big-data -ms.date: 01/24/2017 +ms.date: 02/03/2017 ms.author: jeffstok - --- + # Social media analysis: Real-time Twitter sentiment analysis in Azure Stream Analytics Learn how to build a sentiment analysis solution for social media analytics by bringing real-time Twitter events into Azure Event Hubs. You'll write an Azure Stream Analytics query to analyze the data. You'll then either store the results for later perusal or use a dashboard and [Power BI](https://powerbi.com/) to provide insights in real time. @@ -42,6 +42,7 @@ Use the following steps to create an event hub. 4. Under **SHARED ACCESS POLICIES**, create a new policy with **MANAGE** permissions. ![Shared Access Policies where you can create a policy with Manage permissions.](./media/stream-analytics-twitter-sentiment-analysis-trends/stream-ananlytics-shared-access-policies.png) + 5. Click **SAVE** at the bottom of the page. 6. Go to the **DASHBOARD**, click **CONNECTION INFORMATION** at the bottom of the page, and then copy and save the connection information. (Use the copy icon that appears under the search icon.) @@ -62,16 +63,20 @@ Follow these steps to set up the application: [Steps to generate an OAuth access token](https://dev.twitter.com/oauth/overview/application-owner-access-tokens) Note that you will need to make an empty application to generate a token. + 3. Replace the EventHubConnectionString and EventHubName values in TwitterClient.exe.config with the connection string and name of your event hub. The connection string that you copied earlier gives you both the connection string and the name of your event hub, so be sure to separate them and put each in the correct field. For example, consider the following connection string: - Endpoint=sb://your.servicebus.windows.net/;SharedAccessKeyName=yourpolicy;SharedAccessKey=yoursharedaccesskey;EntityPath=yourhub +` Endpoint=sb://your.servicebus.windows.net/;SharedAccessKeyName=yourpolicy;SharedAccessKey=yoursharedaccesskey;EntityPath=yourhub` The TwitterClient.exe.config file should contain your settings as in the following example: +``` add key="EventHubConnectionString" value="Endpoint=sb://your.servicebus.windows.net/;SharedAccessKeyName=yourpolicy;SharedAccessKey=yoursharedaccesskey" add key="EventHubName" value="yourhub" +``` It is important to note that the text "EntityPath=" does **not** appear in the EventHubName value. + 4. *Optional:* Adjust the keywords to search for. As a default, this application looks for "Azure,Skype,XBox,Microsoft,Seattle". You can adjust the values for **twitter_keywords** in TwitterClient.exe.config, if desired. 5. Run TwitterClient.exe to start your application. You will see Tweet events with the **CreatedAt**, **Topic**, and **SentimentScore** values being sent to your event hub. @@ -88,6 +93,7 @@ Now that Tweet events are streaming in real time from Twitter, we can set up a S * **REGION**: Select the region where you want to run the job. Consider placing the job and the event hub in the same region to ensure better performance and to ensure that you will not be paying to transfer data between regions. * **STORAGE ACCOUNT**: Choose the Azure storage account that you would like to use to store monitoring data for all Stream Analytics jobs that run within this region. You have the option to choose an existing storage account or to create a new one. 3. Click **STREAM ANALYTICS** in the left pane to list the Stream Analytics jobs. + ![Stream Analytics service icon](./media/stream-analytics-twitter-sentiment-analysis-trends/stream-analytics-service-icon.png) The new job will be shown with a status of **CREATED**. Notice that the **START** button on the bottom of the page is disabled. You must configure the job input, output, and query before you can start the job. @@ -105,11 +111,13 @@ Now that Tweet events are streaming in real time from Twitter, we can set up a S * **EVENT HUB NAME**: Select the name of the event hub. * **EVENT HUB POLICY NAME**: Select the event hub policy that you created earlier in this tutorial. * **EVENT HUB CONSUMER GROUP**: Type the name of the consumer group that you created earlier in this tutorial. + 5. Click the right button. 6. Specify the following values: * **EVENT SERIALIZER FORMAT**: JSON * **ENCODING**: UTF8 + 7. Click the **CHECK** button to add this source and to verify that Stream Analytics can successfully connect to the event hub. ### Specify job query @@ -128,9 +136,10 @@ To start, we will do a simple pass-through query that projects all the fields in 1. Click **QUERY** at the top of the Stream Analytics job page. 2. In the code editor, replace the initial query template with the following: - SELECT * FROM TwitterStream + `SELECT * FROM TwitterStream` Make sure that the name of the input source matches the name of the input that you specified earlier. + 3. Click **Test** under the query editor. 4. Go to your sample .json file. 5. Click the **CHECK** button, and see the results below the query definition. @@ -142,23 +151,30 @@ To compare the number of mentions among topics, we'll use a [TumblingWindow](htt 1. Change the query in the code editor to: +``` SELECT System.Timestamp as Time, Topic, COUNT(*) FROM TwitterStream TIMESTAMP BY CreatedAt GROUP BY TUMBLINGWINDOW(s, 5), Topic +``` This query uses the **TIMESTAMP BY** keyword to specify a timestamp field in the payload to be used in the temporal computation. If this field wasn't specified, the windowing operation would be performed by using the time that each event arrived at the event hub. Learn more in the "Arrival Time Vs Application Time" section of [Stream Analytics Query Reference](https://msdn.microsoft.com/library/azure/dn834998.aspx). This query also accesses a timestamp for the end of each window by using the **System.Timestamp** property. + 2. Click **Rerun** under the query editor to see the results of the query. #### Identify trending topics: Sliding window To identify trending topics, we'll look for topics that cross a threshold value for mentions in a given amount of time. For the purposes of this tutorial, we'll check for topics that are mentioned more than 20 times in the last five seconds by using a [SlidingWindow](https://msdn.microsoft.com/library/azure/dn835051.aspx). 1. Change the query in the code editor to: + +``` SELECT System.Timestamp as Time, Topic, COUNT(*) as Mentions FROM TwitterStream TIMESTAMP BY CreatedAt GROUP BY SLIDINGWINDOW(s, 5), topic HAVING COUNT(*) > 20 +``` + 2. Click **Rerun** under the query editor to see the results of the query. ![Sliding Window query output](./media/stream-analytics-twitter-sentiment-analysis-trends/stream-analytics-query-output.png) @@ -168,10 +184,13 @@ The final query that we will test uses **TumblingWindow** to get the number of m 1. Change the query in the code editor to: +``` SELECT System.Timestamp as Time, Topic, COUNT(*), AVG(SentimentScore), MIN(SentimentScore), Max(SentimentScore), STDEV(SentimentScore) FROM TwitterStream TIMESTAMP BY CreatedAt GROUP BY TUMBLINGWINDOW(s, 5), Topic +``` + 2. Click **Rerun** under the query editor to see the results of the query. 3. This is the query that we will use for our dashboard. Click **SAVE** at the bottom of the page. From e0f1fa1f3ea774c522875d0a007ff122376bf9c1 Mon Sep 17 00:00:00 2001 From: Jeff Stokes Date: Fri, 3 Feb 2017 11:30:00 -0500 Subject: [PATCH 50/90] Revert "sa-weird-code-block-issue" This reverts commit 37e4700e51f8f606fe28c5ba72356eb9b8d9b78b. --- ...ytics-twitter-sentiment-analysis-trends.md | 27 +++---------------- 1 file changed, 4 insertions(+), 23 deletions(-) diff --git a/articles/stream-analytics/stream-analytics-twitter-sentiment-analysis-trends.md b/articles/stream-analytics/stream-analytics-twitter-sentiment-analysis-trends.md index 1e557633e5934..fbbbf75098f71 100644 --- a/articles/stream-analytics/stream-analytics-twitter-sentiment-analysis-trends.md +++ b/articles/stream-analytics/stream-analytics-twitter-sentiment-analysis-trends.md @@ -14,10 +14,10 @@ ms.devlang: na ms.topic: article ms.tgt_pltfrm: na ms.workload: big-data -ms.date: 02/03/2017 +ms.date: 01/24/2017 ms.author: jeffstok ---- +--- # Social media analysis: Real-time Twitter sentiment analysis in Azure Stream Analytics Learn how to build a sentiment analysis solution for social media analytics by bringing real-time Twitter events into Azure Event Hubs. You'll write an Azure Stream Analytics query to analyze the data. You'll then either store the results for later perusal or use a dashboard and [Power BI](https://powerbi.com/) to provide insights in real time. @@ -42,7 +42,6 @@ Use the following steps to create an event hub. 4. Under **SHARED ACCESS POLICIES**, create a new policy with **MANAGE** permissions. ![Shared Access Policies where you can create a policy with Manage permissions.](./media/stream-analytics-twitter-sentiment-analysis-trends/stream-ananlytics-shared-access-policies.png) - 5. Click **SAVE** at the bottom of the page. 6. Go to the **DASHBOARD**, click **CONNECTION INFORMATION** at the bottom of the page, and then copy and save the connection information. (Use the copy icon that appears under the search icon.) @@ -63,20 +62,16 @@ Follow these steps to set up the application: [Steps to generate an OAuth access token](https://dev.twitter.com/oauth/overview/application-owner-access-tokens) Note that you will need to make an empty application to generate a token. - 3. Replace the EventHubConnectionString and EventHubName values in TwitterClient.exe.config with the connection string and name of your event hub. The connection string that you copied earlier gives you both the connection string and the name of your event hub, so be sure to separate them and put each in the correct field. For example, consider the following connection string: -` Endpoint=sb://your.servicebus.windows.net/;SharedAccessKeyName=yourpolicy;SharedAccessKey=yoursharedaccesskey;EntityPath=yourhub` + Endpoint=sb://your.servicebus.windows.net/;SharedAccessKeyName=yourpolicy;SharedAccessKey=yoursharedaccesskey;EntityPath=yourhub The TwitterClient.exe.config file should contain your settings as in the following example: -``` add key="EventHubConnectionString" value="Endpoint=sb://your.servicebus.windows.net/;SharedAccessKeyName=yourpolicy;SharedAccessKey=yoursharedaccesskey" add key="EventHubName" value="yourhub" -``` It is important to note that the text "EntityPath=" does **not** appear in the EventHubName value. - 4. *Optional:* Adjust the keywords to search for. As a default, this application looks for "Azure,Skype,XBox,Microsoft,Seattle". You can adjust the values for **twitter_keywords** in TwitterClient.exe.config, if desired. 5. Run TwitterClient.exe to start your application. You will see Tweet events with the **CreatedAt**, **Topic**, and **SentimentScore** values being sent to your event hub. @@ -93,7 +88,6 @@ Now that Tweet events are streaming in real time from Twitter, we can set up a S * **REGION**: Select the region where you want to run the job. Consider placing the job and the event hub in the same region to ensure better performance and to ensure that you will not be paying to transfer data between regions. * **STORAGE ACCOUNT**: Choose the Azure storage account that you would like to use to store monitoring data for all Stream Analytics jobs that run within this region. You have the option to choose an existing storage account or to create a new one. 3. Click **STREAM ANALYTICS** in the left pane to list the Stream Analytics jobs. - ![Stream Analytics service icon](./media/stream-analytics-twitter-sentiment-analysis-trends/stream-analytics-service-icon.png) The new job will be shown with a status of **CREATED**. Notice that the **START** button on the bottom of the page is disabled. You must configure the job input, output, and query before you can start the job. @@ -111,13 +105,11 @@ Now that Tweet events are streaming in real time from Twitter, we can set up a S * **EVENT HUB NAME**: Select the name of the event hub. * **EVENT HUB POLICY NAME**: Select the event hub policy that you created earlier in this tutorial. * **EVENT HUB CONSUMER GROUP**: Type the name of the consumer group that you created earlier in this tutorial. - 5. Click the right button. 6. Specify the following values: * **EVENT SERIALIZER FORMAT**: JSON * **ENCODING**: UTF8 - 7. Click the **CHECK** button to add this source and to verify that Stream Analytics can successfully connect to the event hub. ### Specify job query @@ -136,10 +128,9 @@ To start, we will do a simple pass-through query that projects all the fields in 1. Click **QUERY** at the top of the Stream Analytics job page. 2. In the code editor, replace the initial query template with the following: - `SELECT * FROM TwitterStream` + SELECT * FROM TwitterStream Make sure that the name of the input source matches the name of the input that you specified earlier. - 3. Click **Test** under the query editor. 4. Go to your sample .json file. 5. Click the **CHECK** button, and see the results below the query definition. @@ -151,30 +142,23 @@ To compare the number of mentions among topics, we'll use a [TumblingWindow](htt 1. Change the query in the code editor to: -``` SELECT System.Timestamp as Time, Topic, COUNT(*) FROM TwitterStream TIMESTAMP BY CreatedAt GROUP BY TUMBLINGWINDOW(s, 5), Topic -``` This query uses the **TIMESTAMP BY** keyword to specify a timestamp field in the payload to be used in the temporal computation. If this field wasn't specified, the windowing operation would be performed by using the time that each event arrived at the event hub. Learn more in the "Arrival Time Vs Application Time" section of [Stream Analytics Query Reference](https://msdn.microsoft.com/library/azure/dn834998.aspx). This query also accesses a timestamp for the end of each window by using the **System.Timestamp** property. - 2. Click **Rerun** under the query editor to see the results of the query. #### Identify trending topics: Sliding window To identify trending topics, we'll look for topics that cross a threshold value for mentions in a given amount of time. For the purposes of this tutorial, we'll check for topics that are mentioned more than 20 times in the last five seconds by using a [SlidingWindow](https://msdn.microsoft.com/library/azure/dn835051.aspx). 1. Change the query in the code editor to: - -``` SELECT System.Timestamp as Time, Topic, COUNT(*) as Mentions FROM TwitterStream TIMESTAMP BY CreatedAt GROUP BY SLIDINGWINDOW(s, 5), topic HAVING COUNT(*) > 20 -``` - 2. Click **Rerun** under the query editor to see the results of the query. ![Sliding Window query output](./media/stream-analytics-twitter-sentiment-analysis-trends/stream-analytics-query-output.png) @@ -184,13 +168,10 @@ The final query that we will test uses **TumblingWindow** to get the number of m 1. Change the query in the code editor to: -``` SELECT System.Timestamp as Time, Topic, COUNT(*), AVG(SentimentScore), MIN(SentimentScore), Max(SentimentScore), STDEV(SentimentScore) FROM TwitterStream TIMESTAMP BY CreatedAt GROUP BY TUMBLINGWINDOW(s, 5), Topic -``` - 2. Click **Rerun** under the query editor to see the results of the query. 3. This is the query that we will use for our dashboard. Click **SAVE** at the bottom of the page. From 43f5f40f10518e1d3bf003ecbe2aa16d83d85934 Mon Sep 17 00:00:00 2001 From: Jeff Stokes Date: Fri, 3 Feb 2017 11:31:59 -0500 Subject: [PATCH 51/90] sa-pbi --- ...ytics-twitter-sentiment-analysis-trends.md | 27 ++++++++++++++++--- 1 file changed, 23 insertions(+), 4 deletions(-) diff --git a/articles/stream-analytics/stream-analytics-twitter-sentiment-analysis-trends.md b/articles/stream-analytics/stream-analytics-twitter-sentiment-analysis-trends.md index fbbbf75098f71..1e557633e5934 100644 --- a/articles/stream-analytics/stream-analytics-twitter-sentiment-analysis-trends.md +++ b/articles/stream-analytics/stream-analytics-twitter-sentiment-analysis-trends.md @@ -14,10 +14,10 @@ ms.devlang: na ms.topic: article ms.tgt_pltfrm: na ms.workload: big-data -ms.date: 01/24/2017 +ms.date: 02/03/2017 ms.author: jeffstok - --- + # Social media analysis: Real-time Twitter sentiment analysis in Azure Stream Analytics Learn how to build a sentiment analysis solution for social media analytics by bringing real-time Twitter events into Azure Event Hubs. You'll write an Azure Stream Analytics query to analyze the data. You'll then either store the results for later perusal or use a dashboard and [Power BI](https://powerbi.com/) to provide insights in real time. @@ -42,6 +42,7 @@ Use the following steps to create an event hub. 4. Under **SHARED ACCESS POLICIES**, create a new policy with **MANAGE** permissions. ![Shared Access Policies where you can create a policy with Manage permissions.](./media/stream-analytics-twitter-sentiment-analysis-trends/stream-ananlytics-shared-access-policies.png) + 5. Click **SAVE** at the bottom of the page. 6. Go to the **DASHBOARD**, click **CONNECTION INFORMATION** at the bottom of the page, and then copy and save the connection information. (Use the copy icon that appears under the search icon.) @@ -62,16 +63,20 @@ Follow these steps to set up the application: [Steps to generate an OAuth access token](https://dev.twitter.com/oauth/overview/application-owner-access-tokens) Note that you will need to make an empty application to generate a token. + 3. Replace the EventHubConnectionString and EventHubName values in TwitterClient.exe.config with the connection string and name of your event hub. The connection string that you copied earlier gives you both the connection string and the name of your event hub, so be sure to separate them and put each in the correct field. For example, consider the following connection string: - Endpoint=sb://your.servicebus.windows.net/;SharedAccessKeyName=yourpolicy;SharedAccessKey=yoursharedaccesskey;EntityPath=yourhub +` Endpoint=sb://your.servicebus.windows.net/;SharedAccessKeyName=yourpolicy;SharedAccessKey=yoursharedaccesskey;EntityPath=yourhub` The TwitterClient.exe.config file should contain your settings as in the following example: +``` add key="EventHubConnectionString" value="Endpoint=sb://your.servicebus.windows.net/;SharedAccessKeyName=yourpolicy;SharedAccessKey=yoursharedaccesskey" add key="EventHubName" value="yourhub" +``` It is important to note that the text "EntityPath=" does **not** appear in the EventHubName value. + 4. *Optional:* Adjust the keywords to search for. As a default, this application looks for "Azure,Skype,XBox,Microsoft,Seattle". You can adjust the values for **twitter_keywords** in TwitterClient.exe.config, if desired. 5. Run TwitterClient.exe to start your application. You will see Tweet events with the **CreatedAt**, **Topic**, and **SentimentScore** values being sent to your event hub. @@ -88,6 +93,7 @@ Now that Tweet events are streaming in real time from Twitter, we can set up a S * **REGION**: Select the region where you want to run the job. Consider placing the job and the event hub in the same region to ensure better performance and to ensure that you will not be paying to transfer data between regions. * **STORAGE ACCOUNT**: Choose the Azure storage account that you would like to use to store monitoring data for all Stream Analytics jobs that run within this region. You have the option to choose an existing storage account or to create a new one. 3. Click **STREAM ANALYTICS** in the left pane to list the Stream Analytics jobs. + ![Stream Analytics service icon](./media/stream-analytics-twitter-sentiment-analysis-trends/stream-analytics-service-icon.png) The new job will be shown with a status of **CREATED**. Notice that the **START** button on the bottom of the page is disabled. You must configure the job input, output, and query before you can start the job. @@ -105,11 +111,13 @@ Now that Tweet events are streaming in real time from Twitter, we can set up a S * **EVENT HUB NAME**: Select the name of the event hub. * **EVENT HUB POLICY NAME**: Select the event hub policy that you created earlier in this tutorial. * **EVENT HUB CONSUMER GROUP**: Type the name of the consumer group that you created earlier in this tutorial. + 5. Click the right button. 6. Specify the following values: * **EVENT SERIALIZER FORMAT**: JSON * **ENCODING**: UTF8 + 7. Click the **CHECK** button to add this source and to verify that Stream Analytics can successfully connect to the event hub. ### Specify job query @@ -128,9 +136,10 @@ To start, we will do a simple pass-through query that projects all the fields in 1. Click **QUERY** at the top of the Stream Analytics job page. 2. In the code editor, replace the initial query template with the following: - SELECT * FROM TwitterStream + `SELECT * FROM TwitterStream` Make sure that the name of the input source matches the name of the input that you specified earlier. + 3. Click **Test** under the query editor. 4. Go to your sample .json file. 5. Click the **CHECK** button, and see the results below the query definition. @@ -142,23 +151,30 @@ To compare the number of mentions among topics, we'll use a [TumblingWindow](htt 1. Change the query in the code editor to: +``` SELECT System.Timestamp as Time, Topic, COUNT(*) FROM TwitterStream TIMESTAMP BY CreatedAt GROUP BY TUMBLINGWINDOW(s, 5), Topic +``` This query uses the **TIMESTAMP BY** keyword to specify a timestamp field in the payload to be used in the temporal computation. If this field wasn't specified, the windowing operation would be performed by using the time that each event arrived at the event hub. Learn more in the "Arrival Time Vs Application Time" section of [Stream Analytics Query Reference](https://msdn.microsoft.com/library/azure/dn834998.aspx). This query also accesses a timestamp for the end of each window by using the **System.Timestamp** property. + 2. Click **Rerun** under the query editor to see the results of the query. #### Identify trending topics: Sliding window To identify trending topics, we'll look for topics that cross a threshold value for mentions in a given amount of time. For the purposes of this tutorial, we'll check for topics that are mentioned more than 20 times in the last five seconds by using a [SlidingWindow](https://msdn.microsoft.com/library/azure/dn835051.aspx). 1. Change the query in the code editor to: + +``` SELECT System.Timestamp as Time, Topic, COUNT(*) as Mentions FROM TwitterStream TIMESTAMP BY CreatedAt GROUP BY SLIDINGWINDOW(s, 5), topic HAVING COUNT(*) > 20 +``` + 2. Click **Rerun** under the query editor to see the results of the query. ![Sliding Window query output](./media/stream-analytics-twitter-sentiment-analysis-trends/stream-analytics-query-output.png) @@ -168,10 +184,13 @@ The final query that we will test uses **TumblingWindow** to get the number of m 1. Change the query in the code editor to: +``` SELECT System.Timestamp as Time, Topic, COUNT(*), AVG(SentimentScore), MIN(SentimentScore), Max(SentimentScore), STDEV(SentimentScore) FROM TwitterStream TIMESTAMP BY CreatedAt GROUP BY TUMBLINGWINDOW(s, 5), Topic +``` + 2. Click **Rerun** under the query editor to see the results of the query. 3. This is the query that we will use for our dashboard. Click **SAVE** at the bottom of the page. From c181667088ec54909a48b8afb133860e4a851981 Mon Sep 17 00:00:00 2001 From: Cheryl McGuire Date: Fri, 3 Feb 2017 09:44:15 -0800 Subject: [PATCH 52/90] update freshness --- articles/expressroute/expressroute-faqs.md | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/articles/expressroute/expressroute-faqs.md b/articles/expressroute/expressroute-faqs.md index aede8e31833f1..bf49b3202e180 100644 --- a/articles/expressroute/expressroute-faqs.md +++ b/articles/expressroute/expressroute-faqs.md @@ -13,7 +13,7 @@ ms.devlang: na ms.topic: article ms.tgt_pltfrm: na ms.workload: infrastructure-services -ms.date: 11/21/2016 +ms.date: 02/01/2017 ms.author: cherylmc --- @@ -213,7 +213,7 @@ Yes. ExpressRoute premium charges apply on top of ExpressRoute circuit charges a [!INCLUDE [expressroute-office365-include](../../includes/expressroute-office365-include.md)] ### How do I create an ExpressRoute circuit to connect to Office 365 services and CRM Online? -1. Review the [ExpressRoute prerequisites page](expressroute-prerequisites.md) page to make sure you meet the requirements. +1. Review the [ExpressRoute prerequisites page](expressroute-prerequisites.md) to make sure you meet the requirements. 2. Review the list of service providers and locations at [ExpressRoute partners and locations](expressroute-locations.md) to ensure that your connectivity needs are met. 3. Plan your capacity requirements by reviewing [Network planning and performance tuning for Office 365](http://aka.ms/tune/). 4. Follow the steps listed in the workflows below to set up connectivity [ExpressRoute workflows for circuit provisioning and circuit states](expressroute-workflows.md). From a0bee51262d9fe52c109c094241a734878487625 Mon Sep 17 00:00:00 2001 From: Markus Vilcinskas Date: Fri, 3 Feb 2017 18:44:16 +0100 Subject: [PATCH 53/90] toc --- articles/active-directory/TOC.md | 34 +++++++++++++++----------------- 1 file changed, 16 insertions(+), 18 deletions(-) diff --git a/articles/active-directory/TOC.md b/articles/active-directory/TOC.md index 9f85c1b2b81bb..1087830638a4f 100644 --- a/articles/active-directory/TOC.md +++ b/articles/active-directory/TOC.md @@ -99,20 +99,6 @@ ### [Register your device](active-directory-azureadjoin-personal-device.md) ### [Register a Windows 10 device](active-directory-azureadjoin-user-upgrade.md) -### [Conditional access](active-directory-conditional-access.md) -#### [Get started](active-directory-conditional-access-azuread-connected-apps.md) -#### [Supported apps](active-directory-conditional-access-supported-apps.md) -#### [Register devices](active-directory-conditional-access-device-registration-overview.md) -#### [Manage automatic registration](active-directory-conditional-access-automatic-device-registration.md) -##### [Setup](active-directory-conditional-access-automatic-device-registration-setup.md) -#### [Manage Authenticator app](active-directory-conditional-access-azure-authenticator-app.md) -#### [Understand device policies](active-directory-conditional-access-device-policies.md) -#### [Set up access to connected apps](active-directory-conditional-access-policy-connected-applications.md) -#### [Deploy on-premises](active-directory-conditional-access-on-premises-setup.md) -#### [FAQs](active-directory-conditional-faqs.md) -#### [Troubleshoot](active-directory-conditional-access-device-remediation.md) -#### [Reference](active-directory-conditional-access-technical-reference.md) - ### [Azure AD Join](active-directory-azureadjoin-overview.md) #### [Plan](active-directory-azureadjoin-deployment-aadjoindirect.md) #### [Set up device registration](active-directory-azureadjoin-setup.md) @@ -127,10 +113,6 @@ ##### [Troubleshooting for Windows 10 and Windows Server 2016](active-directory-conditional-access-automatic-device-registration-troubleshoot-windows.md) ##### [Troubleshooting for Windows down-level clients](active-directory-conditional-access-automatic-device-registration-troubleshoot-windows-legacy.md) -### Certificate-based Authentication -#### [Android](active-directory-certificate-based-authentication-android.md) -#### [iOS](active-directory-certificate-based-authentication-ios.md) - ## Manage apps ### [Overview](active-directory-enable-sso-scenario.md) ### [Getting started](active-directory-integrating-applications-getting-started.md) @@ -240,6 +222,22 @@ ### [Configure token lifetimes](active-directory-configurable-token-lifetimes.md) ## Secure your identities +### [Conditional access](active-directory-conditional-access.md) +#### [Get started](active-directory-conditional-access-azuread-connected-apps.md) +#### [Supported apps](active-directory-conditional-access-supported-apps.md) +#### [Register devices](active-directory-conditional-access-device-registration-overview.md) +#### [Manage automatic registration](active-directory-conditional-access-automatic-device-registration.md) +##### [Setup](active-directory-conditional-access-automatic-device-registration-setup.md) +#### [Manage Authenticator app](active-directory-conditional-access-azure-authenticator-app.md) +#### [Understand device policies](active-directory-conditional-access-device-policies.md) +#### [Set up access to connected apps](active-directory-conditional-access-policy-connected-applications.md) +#### [Deploy on-premises](active-directory-conditional-access-on-premises-setup.md) +#### [FAQs](active-directory-conditional-faqs.md) +#### [Troubleshoot](active-directory-conditional-access-device-remediation.md) +#### [Reference](active-directory-conditional-access-technical-reference.md) +### Certificate-based Authentication +#### [Android](active-directory-certificate-based-authentication-android.md) +#### [iOS](active-directory-certificate-based-authentication-ios.md) ### [Azure AD Identity Protection](active-directory-identityprotection.md) #### [Enable](active-directory-identityprotection-enable.md) #### [Detect vulnerabilities](active-directory-identityprotection-vulnerabilities.md) From 6e8b6b587ac15bdedd091e3423db824bb58bec30 Mon Sep 17 00:00:00 2001 From: ArnoMicrosoft Date: Fri, 3 Feb 2017 09:47:03 -0800 Subject: [PATCH 54/90] Update documentdb-key-value-store-cost.md --- articles/documentdb/documentdb-key-value-store-cost.md | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/articles/documentdb/documentdb-key-value-store-cost.md b/articles/documentdb/documentdb-key-value-store-cost.md index 3749a4ff3072e..c54e4caa09ba6 100644 --- a/articles/documentdb/documentdb-key-value-store-cost.md +++ b/articles/documentdb/documentdb-key-value-store-cost.md @@ -54,7 +54,7 @@ If you provision 1,000 RU/sec, this amounts to 3.6m RU/hour and will cost $0.08 |50 KB|$1.111|$5.556| |100 KB|$2.222|$11.111| -Most of the basic blob or object stores like AWS S3 or Azure Blob Storage services charge $0.40 per million read transaction and $5 per million write transaction. If used optimally, DocumentDB can be up to 98% cheaper than these other solutions (for 1KB transactions). +Most of the basic blob or object stores services charge $0.40 per million read transaction and $5 per million write transaction. If used optimally, DocumentDB can be up to 98% cheaper than these other solutions (for 1KB transactions). ## Next steps From 899fbfb63633286a1065546b1f262cbc1d7d39c4 Mon Sep 17 00:00:00 2001 From: Cheryl McGuire Date: Fri, 3 Feb 2017 09:53:18 -0800 Subject: [PATCH 55/90] update spacing --- articles/expressroute/expressroute-faqs.md | 6 +++--- 1 file changed, 3 insertions(+), 3 deletions(-) diff --git a/articles/expressroute/expressroute-faqs.md b/articles/expressroute/expressroute-faqs.md index bf49b3202e180..6d65e47672055 100644 --- a/articles/expressroute/expressroute-faqs.md +++ b/articles/expressroute/expressroute-faqs.md @@ -19,7 +19,7 @@ ms.author: cherylmc --- # ExpressRoute FAQ ## What is ExpressRoute? -ExpressRoute is an Azure service that lets you create private connections between Microsoft datacenters and infrastructure that’s on your premises or in a colocation facility. ExpressRoute connections do not go over the public Internet, and offer higher security, reliability and speeds with lower latencies than typical connections over the Internet. +ExpressRoute is an Azure service that lets you create private connections between Microsoft datacenters and infrastructure that’s on your premises or in a colocation facility. ExpressRoute connections do not go over the public Internet, and offer higher security, reliability, and speeds with lower latencies than typical connections over the Internet. ### What are the benefits of using ExpressRoute and private network connections? ExpressRoute connections do not go over the public Internet, and offer higher security, reliability, and speeds with lower and consistent latencies than typical connections over the Internet. In some cases, using ExpressRoute connections to transfer data between on-premises devices and Azure can yield significant cost benefits. @@ -43,7 +43,7 @@ No. You can purchase a VPN connection of any speed from your service provider. H Yes. ExpressRoute circuits are configured to support cases where you can burst up to two times the bandwidth limit you procured for no additional cost. Check with your service provider if they support this capability. ### Can I use the same private network connection with Virtual Network and other Azure services simultaneously? -Yes. An ExpressRoute circuit, once setup will allow you to access services within a virtual network and other Azure services simultaneously. You will connect to virtual networks over the private peering path and other services over the public peering path. +Yes. An ExpressRoute circuit, once set up, will allow you to access services within a virtual network and other Azure services simultaneously. You will connect to virtual networks over the private peering path, and to other services over the public peering path. ### Does ExpressRoute offer a Service Level Agreement (SLA)? Please refer to the [ExpressRoute SLA page](https://azure.microsoft.com/support/legal/sla/) for more information. @@ -96,7 +96,7 @@ Yes. Each Express Route circuit has a redundant pair of cross connections config You will not lose connectivity if one of the cross connections fails. A redundant connection is available to support the load of your network. You can additionally create multiple circuits in a different peering location to achieve failure resilience. ### If I'm not co-located at a cloud exchange and my service provider offers point-to-point connection, do I need to order two physical connections between my on-premises network and Microsoft? -No, you only need one physical connection if your service provider can establish two Ethernet virtual circuits over the physical connection. The physical connection (e.g. an optical fiber) is terminated on a layer 1 (L1) device (see image below). The two Ethernet virtual circuits are tagged with different VLAN IDs, one for the primary circuit and one for the secondary. Those VLAN IDs are in the outer 802.1Q Ethernet header. The inner 802.1Q Ethernet header (not shown) is mapped to a specific [ExpressRoute routing domain](expressroute-circuit-peerings.md). +No, you only need one physical connection if your service provider can establish two Ethernet virtual circuits over the physical connection. The physical connection (for example, an optical fiber) is terminated on a layer 1 (L1) device (see image below). The two Ethernet virtual circuits are tagged with different VLAN IDs, one for the primary circuit and one for the secondary. Those VLAN IDs are in the outer 802.1Q Ethernet header. The inner 802.1Q Ethernet header (not shown) is mapped to a specific [ExpressRoute routing domain](expressroute-circuit-peerings.md). ![](./media/expressroute-faqs/expressroute-p2p-ref-arch.png) From 2a51e12d16795204b2ec68d66755b020ab6a6490 Mon Sep 17 00:00:00 2001 From: Carl Rabeler Date: Fri, 3 Feb 2017 10:12:41 -0800 Subject: [PATCH 56/90] Update sql-database-automated-backups.md --- articles/sql-database/sql-database-automated-backups.md | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/articles/sql-database/sql-database-automated-backups.md b/articles/sql-database/sql-database-automated-backups.md index 944ac2f33d554..1501531e37c2c 100644 --- a/articles/sql-database/sql-database-automated-backups.md +++ b/articles/sql-database/sql-database-automated-backups.md @@ -75,7 +75,7 @@ If you delete a database, SQL Database keeps the backups in the same way it woul ## How to extend the backup retention period? If your application requires that the backups are available for longer period of time you can extend the built-in retention period by configuring the Long-term backup retention policy for individual databases (LTR policy). This allows you to extend the built-it retention period from 35 days to up to 10 years. For more information, see [Long-term retention](sql-database-long-term-retention.md). -Once you add the LTR policy to a database using Azure portal or API, the weekly full database backups will be automatically copied to your own Azure Backup Service Vault. If your database is encrypted with TDE the backups are automatically encrypted at rest. The Services Vault will automatically delete your expired backups based on their timestamp and the LTR policy. So you don�t need to manage the backup schedule or worry about the cleanup of the old files. +Once you add the LTR policy to a database using Azure portal or API, the weekly full database backups will be automatically copied to your own Azure Backup Service Vault. If your database is encrypted with TDE the backups are automatically encrypted at rest. The Services Vault will automatically delete your expired backups based on their timestamp and the LTR policy. So you don't need to manage the backup schedule or worry about the cleanup of the old files. The restore API supports backups stored in the vault as long as the vault is in the same subscription as your SQL database. You can use the Aure portal or PowerShell to access these backups. > [!TIP] From 4d442f04bec247c3927706c589486bed93b95b41 Mon Sep 17 00:00:00 2001 From: Carl Rabeler Date: Fri, 3 Feb 2017 10:14:45 -0800 Subject: [PATCH 57/90] Update sql-database-disaster-recovery-drills.md --- articles/sql-database/sql-database-disaster-recovery-drills.md | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/articles/sql-database/sql-database-disaster-recovery-drills.md b/articles/sql-database/sql-database-disaster-recovery-drills.md index 4093e99b77cf4..a1bd69760feab 100644 --- a/articles/sql-database/sql-database-disaster-recovery-drills.md +++ b/articles/sql-database/sql-database-disaster-recovery-drills.md @@ -15,7 +15,7 @@ ms.topic: article ms.tgt_pltfrm: NA ms.workload: data-management ms.date: 07/31/2016 -ms.author: s sashan +ms.author: sashan --- # Performing Disaster Recovery Drill From bee6dbf8910534b07a77e7fd7dd84edf07cf3dd5 Mon Sep 17 00:00:00 2001 From: Carl Rabeler Date: Fri, 3 Feb 2017 10:28:20 -0800 Subject: [PATCH 58/90] Update sql-database-elastic-query-getting-started.md --- .../sql-database-elastic-query-getting-started.md | 4 +++- 1 file changed, 3 insertions(+), 1 deletion(-) diff --git a/articles/sql-database/sql-database-elastic-query-getting-started.md b/articles/sql-database/sql-database-elastic-query-getting-started.md index af6231fb6b39a..eebd26f8fc638 100644 --- a/articles/sql-database/sql-database-elastic-query-getting-started.md +++ b/articles/sql-database/sql-database-elastic-query-getting-started.md @@ -48,7 +48,9 @@ Here you will create a shard map manager along with several shards, followed by ![Azure portal and pricing tier][3] - Note: you can use an existing database. If you can do so, it must not be one of the shards that you would like to execute your queries on. This database will be used for creating the metadata objects for an elastic database query. + > [!NOTE] + > you can use an existing database. If you can do so, it must not be one of the shards that you would like to execute your queries on. This database will be used for creating the metadata objects for an elastic database query. + > ## Create database objects ### Database-scoped master key and credentials From 9edcdb4c9d1f6cc5767cd94dc1ee980861d92fb2 Mon Sep 17 00:00:00 2001 From: Seth Manheim Date: Fri, 3 Feb 2017 10:44:22 -0800 Subject: [PATCH 59/90] Redirecting until we can update this article --- ...service-bus-powershell-how-to-provision.md | 193 +----------------- 1 file changed, 2 insertions(+), 191 deletions(-) diff --git a/articles/service-bus-messaging/service-bus-powershell-how-to-provision.md b/articles/service-bus-messaging/service-bus-powershell-how-to-provision.md index e45c06d103c98..5e5d23e25b948 100644 --- a/articles/service-bus-messaging/service-bus-powershell-how-to-provision.md +++ b/articles/service-bus-messaging/service-bus-powershell-how-to-provision.md @@ -1,192 +1,3 @@ --- -title: Manage Azure Service Bus with PowerShell | Microsoft Docs -description: Manage Service Bus with PowerShell scripts -services: service-bus-messaging -documentationcenter: .net -author: sethmanheim -manager: timlt -editor: '' - -ms.assetid: aff8e2ce-bc8b-489f-aca9-a18782be0375 -ms.service: service-bus-messaging -ms.workload: na -ms.tgt_pltfrm: na -ms.devlang: na -ms.topic: article -ms.date: 01/12/2017 -ms.author: sethm - ---- -# Manage Service Bus with PowerShell -## Overview -Microsoft Azure PowerShell is a scripting environment that you can use to control and automate the deployment and management of your workloads in Azure. This article describes how to use PowerShell to provision and manage Service Bus entities such as namespaces, queues, and Event Hubs using a local Azure PowerShell console. - -## Prerequisites -Before you begin this article, you must have the following prerequisites: - -* An Azure subscription. Azure is a subscription-based platform. For more - information about obtaining a subscription, see [Purchase Options][Purchase Options], - [Member Offers][Member Offers], or [Free Trial][Free Trial]. -* A computer with Azure PowerShell. For instructions, see [Install and configure Azure PowerShell][Install and configure Azure PowerShell]. -* A general understanding of PowerShell scripts, NuGet packages, and the .NET Framework. - -## Including a reference to the .NET assembly for Service Bus -There are a limited number of PowerShell cmdlets available for managing Service Bus. To provision -entities that are not exposed through the existing cmdlets, you can use the .NET client for -Service Bus in the [Service Bus NuGet package][Service Bus NuGet package]. - -First, make sure that the script can locate the **Microsoft.ServiceBus.dll** assembly, which is installed with the NuGet package. In order to be flexible, the script performs these steps: - -1. Determines the path at which it was invoked. -2. Traverses the path until it finds a folder named `packages`. This folder is created when you install NuGet packages. -3. Recursively searches the `packages` folder for an assembly named **Microsoft.ServiceBus.dll**. -4. References the assembly so that the types are available for later use. - -Here's how these steps are implemented in a PowerShell script: - -```powershell -try -{ - # WARNING: Make sure to reference the latest version of Microsoft.ServiceBus.dll - Write-Host "Adding the [Microsoft.ServiceBus.dll] assembly to the script..." - $scriptPath = Split-Path (Get-Variable MyInvocation -Scope 0).Value.MyCommand.Path - $packagesFolder = (Split-Path $scriptPath -Parent) + "\packages" - $assembly = Get-ChildItem $packagesFolder -Include "Microsoft.ServiceBus.dll" -Recurse - Add-Type -Path $assembly.FullName - - Write-Host "The [Microsoft.ServiceBus.dll] assembly has been successfully added to the script." -} - -catch [System.Exception] -{ - Write-Error "Could not add the Microsoft.ServiceBus.dll assembly to the script. Make sure you build the solution before running the provisioning script." -} -``` - -## Provision a Service Bus namespace -Two PowerShell cmdlets support Service Bus namespace operations. Instead of the .NET SDK APIs, you can use [Get-AzureSBNamespace][Get-AzureSBNamespace] and [New-AzureSBNamespace][New-AzureSBNamespace]. - -This example creates a few local variables in the script; `$Namespace` and `$Location`. - -* `$Namespace` is the name of the Service Bus namespace with which we want to work. -* `$Location` identifies the data center in which the script provisions the namespace. -* `$CurrentNamespace` stores the reference namespace that the script retrieves (or creates). - -In an actual script, `$Namespace` and `$Location` can be passed as parameters. - -This part of the script performs the following tasks: - -1. Attempts to retrieve a Service Bus namespace with the provided name. -2. If the namespace is found, it reports what was found. -3. If the namespace is not found, it creates the namespace and then retrieves the newly created namespace. - - ```powershell - $Namespace = "MyServiceBusNS" - $Location = "West US" - - # Query to see if the namespace currently exists - $CurrentNamespace = Get-AzureSBNamespace -Name $Namespace - - # Check if the namespace already exists or needs to be created - if ($CurrentNamespace) - { - Write-Host "The namespace [$Namespace] already exists in the [$($CurrentNamespace.Region)] region." - } - else - { - Write-Host "The [$Namespace] namespace does not exist." - Write-Host "Creating the [$Namespace] namespace in the [$Location] region..." - New-AzureSBNamespace -Name $Namespace -Location $Location -CreateACSNamespace $false -NamespaceType Messaging - $CurrentNamespace = Get-AzureSBNamespace -Name $Namespace - Write-Host "The [$Namespace] namespace in the [$Location] region has been successfully created." - } - ``` - -To provision other Service Bus entities, create an instance of the [NamespaceManager][NamespaceManager] class from the SDK. -You can use the [Get-AzureSBAuthorizationRule][Get-AzureSBAuthorizationRule] cmdlet to retrieve an authorization rule that's used to provide a connection string. We'll store a reference to the `NamespaceManager` instance in the `$NamespaceManager` variable. We will use `$NamespaceManager` later in the script to provision other entities. - -```powershell -$sbr = Get-AzureSBAuthorizationRule -Namespace $Namespace -# Create the NamespaceManager object to create the event hub -Write-Host "Creating a NamespaceManager object for the [$Namespace] namespace..." -$NamespaceManager = [Microsoft.ServiceBus.NamespaceManager]::CreateFromConnectionString($sbr.ConnectionString); -Write-Host "NamespaceManager object for the [$Namespace] namespace has been successfully created." -``` - -## Provisioning other Service Bus entities -In order to provision other entities, such as queues, topics, and Event Hubs, use the [.NET API for Service Bus][.NET API for Service Bus]. This article focuses only on Event Hubs, but the steps for other entities are similar. In addition, more detailed examples, including other entities, are referenced at the end of this article. - -This part of the script creates four more local variables. These variables are used to instantiate an `EventHubDescription` object. The script performs the following tasks: - -1. Using the `NamespaceManager` object, check to see if the Event Hub identified by `$Path` exists. -2. If it does not exist, create an `EventHubDescription` and pass that to the `NamespaceManager` class `CreateEventHubIfNotExists` method. -3. After determining that the Event Hub is available, create a consumer group using `ConsumerGroupDescription` and `NamespaceManager`. - - ```powershell - $Path = "MyEventHub" - $PartitionCount = 12 - $MessageRetentionInDays = 7 - $UserMetadata = $null - $ConsumerGroupName = "MyConsumerGroup" - - # Check to see if the Event Hub already exists - if ($NamespaceManager.EventHubExists($Path)) - { - Write-Host "The [$Path] event hub already exists in the [$Namespace] namespace." - } - else - { - Write-Host "Creating the [$Path] event hub in the [$Namespace] namespace: PartitionCount=[$PartitionCount] MessageRetentionInDays=[$MessageRetentionInDays]..." - $EventHubDescription = New-Object -TypeName Microsoft.ServiceBus.Messaging.EventHubDescription -ArgumentList $Path - $EventHubDescription.PartitionCount = $PartitionCount - $EventHubDescription.MessageRetentionInDays = $MessageRetentionInDays - $EventHubDescription.UserMetadata = $UserMetadata - $EventHubDescription.Path = $Path - $NamespaceManager.CreateEventHubIfNotExists($EventHubDescription) - Write-Host "The [$Path] event hub in the [$Namespace] namespace has been successfully created." - } - - # Create the consumer group if it doesn't exist - Write-Host "Creating the consumer group [$ConsumerGroupName] for the [$Path] event hub..." - $ConsumerGroupDescription = New-Object -TypeName Microsoft.ServiceBus.Messaging.ConsumerGroupDescription -ArgumentList $Path, $ConsumerGroupName - $ConsumerGroupDescription.UserMetadata = $ConsumerGroupUserMetadata - $NamespaceManager.CreateConsumerGroupIfNotExists($ConsumerGroupDescription) - Write-Host "The consumer group [$ConsumerGroupName] for the [$Path] event hub has been successfully created." - ``` - -## Migrate a namespace to another Azure subscription -The following sequence of commands moves a namespace from one Azure subscription to another. To execute this operation, the namespace must already be active, and the user running the PowerShell commands must be an administrator on both the source and target subscriptions. - -```powershell -# Create a new resource group in target subscription -Select-AzureRmSubscription -SubscriptionId 'ffffffff-ffff-ffff-ffff-ffffffffffff' -New-AzureRmResourceGroup -Name 'targetRG' -Location 'East US' - -# Move namespace from source subscription to target subscription -Select-AzureRmSubscription -SubscriptionId 'aaaaaaaa-aaaa-aaaa-aaaa-aaaaaaaaaaaa' -$res = Find-AzureRmResource -ResourceNameContains mynamespace -ResourceType 'Microsoft.ServiceBus/namespaces' -Move-AzureRmResource -DestinationResourceGroupName 'targetRG' -DestinationSubscriptionId 'ffffffff-ffff-ffff-ffff-ffffffffffff' -ResourceId $res.ResourceId -``` - -## Next steps -This article provided a basic outline for provisioning Service Bus entities using PowerShell. Anything that you can do using the .NET client libraries, you can also do in a PowerShell script. - -There are more detailed examples available on these blog posts: - -* [How to create Service Bus queues, topics and subscriptions using a PowerShell script](http://blogs.msdn.com/b/paolos/archive/2014/12/02/how-to-create-a-service-bus-queues-topics-and-subscriptions-using-a-powershell-script.aspx) -* [How to create a Service Bus Namespace and an Event Hub using a PowerShell script](http://blogs.msdn.com/b/paolos/archive/2014/12/01/how-to-create-a-service-bus-namespace-and-an-event-hub-using-a-powershell-script.aspx) - -Some ready-made scripts are also available for download: - -* [Service Bus PowerShell Scripts](https://code.msdn.microsoft.com/Service-Bus-PowerShell-a46b7059) - - -[Purchase Options]: http://azure.microsoft.com/pricing/purchase-options/ -[Member Offers]: http://azure.microsoft.com/pricing/member-offers/ -[Free Trial]: http://azure.microsoft.com/pricing/free-trial/ -[Install and configure Azure PowerShell]: /powershell/azureps-cmdlets-docs -[Service Bus NuGet package]: http://www.nuget.org/packages/WindowsAzure.ServiceBus/ -[Get-AzureSBNamespace]: https://docs.microsoft.com/powershell/servicemanagement/azure.compute/v1.6.1/Get-AzureSBNamespace -[New-AzureSBNamespace]: https://docs.microsoft.com/powershell/servicemanagement/azure.compute/v1.6.1/new-azuresbnamespace -[Get-AzureSBAuthorizationRule]: https://docs.microsoft.com/powershell/servicemanagement/azure.compute/v1.6.1/get-azuresbauthorizationrule -[NamespaceManager]: https://docs.microsoft.com/dotnet/api/microsoft.servicebus.namespacemanager +redirect_url: /powershell/azureps-cmdlets-docs +--- \ No newline at end of file From b6fb37cad5d93336a766f43ca435c7b25d1d97c4 Mon Sep 17 00:00:00 2001 From: Todd Abel Date: Fri, 3 Feb 2017 10:45:46 -0800 Subject: [PATCH 60/90] Fixed content issues --- .../service-fabric-diagnostics-overview.md | 86 +++++++++++-------- 1 file changed, 50 insertions(+), 36 deletions(-) diff --git a/articles/service-fabric/service-fabric-diagnostics-overview.md b/articles/service-fabric/service-fabric-diagnostics-overview.md index 8cb770131f6db..cd5d8b3c50533 100644 --- a/articles/service-fabric/service-fabric-diagnostics-overview.md +++ b/articles/service-fabric/service-fabric-diagnostics-overview.md @@ -13,7 +13,7 @@ ms.devlang: dotnet ms.topic: article ms.tgt_pltfrm: NA ms.workload: NA -ms.date: 01/10/2017 +ms.date: 02/3/2017 ms.author: toddabel --- @@ -28,10 +28,12 @@ Monitoring is a broad term that encompasses instrumenting the code, collecting t While there are some products that cover all three aspects, many customers choose different technologies for each area. It is important that each plugs together to deliver an end to end monitoring solution for the application. -# Monitoring infrastructure +## Monitoring infrastructure + While Service Fabric helps to keep an application running even during infrastructure failures, the application operators need to understand if an error is occurring within their application or is due to a fault in the underlying infrastructure. Monitoring of the infrastructure is also needed for capacity planning to know when to add or remove infrastructure. Both the infrastructure and the application that compose a Service Fabric deployment are important to monitor and troubleshoot, though as long as the application is available to customers, some of the infrastructure could be having issues. -## Azure Monitoring +### Azure Monitoring + For Azure deployed clusters, [Azure Monitoring](../monitoring-and-diagnostics/toc.md) gives the ability to monitor many of the Azure resources on which a Service Fabric cluster are built. A set of metrics is automatically collected and displayed in the Azure portal for the [Virtual Machine Scale Set (VMSS)](../monitoring-and-diagnostics/monitoring-supported-metrics.md#microsoftcomputevirtualmachinescalesets) and individual [VMs](../monitoring-and-diagnostics/monitoring-supported-metrics.md#microsoftcomputevirtualmachinescalesetsvirtualmachines). This information can be viewed in the Azure portal by selecting the resource group that the Service Fabric cluster is contained within and choosing the VMSS to view. Then choose Metrics within the Monitoring navigation section to view a graph of the values ![Azure portal view of collected metric information](./media/service-fabric-diagnostics-overview/azure-monitoring-metrics.png) @@ -40,21 +42,24 @@ The charts can be customized by following the instructions in the article [Overv [Operations Management Suite](https://www.microsoft.com/cloud-platform/operations-management-suite) is the recommended method for monitoring your on premise infrastructure, but any existing solution that your company uses for infrastructure monitoring can also be used. -## Service Fabric Support Logs +### Service Fabric Support Logs + If you should need to contact Microsoft support for help with your Azure Service Fabric Cluster, support logs are almost always required. If your cluster is hosted within Azure, these logs are automatically configured and collected as part of creating a cluster. The logs are stored in a dedicated storage account that can be seen in your cluster's resource group. There is no fixed name to the storage account, but within the account you'll see blob containers and tables starting with 'fabric'. If your cluster is a standalone cluster, you should configure collection of these logs following the guidance in [Create and manage a standalone Azure Service Fabric cluster](service-fabric-cluster-creation-for-windows-server.md) and [Configuration settings for standalone Windows cluster](service-fabric-cluster-manifest.md). For standalone Service Fabric, the logs should be sent to a local file share. You are **required** to have these logs for support, but they are not intended to use usable by anyone outside of the Microsoft customer support team. Using my best Obi Wan Kenobi impression, these are not the logs you are interested in... -# Instrument your code +## Instrument your code + Instrumenting the code is the basis for most other aspects of monitoring your services. It is often surprising to people how much instrumentation you will need, but considering that this instrumentation is the only way you have of knowing something is wrong and to diagnose what needs to be fixed, it shouldn't be. While it is technically possible to do, it is very unusual to connect a debugger to a production service, so having detailed instrumentation data is extremely important. When producing this volume of information shipping all events off the local node can be very expensive. Many services use a two-part strategy for dealing with the volume of instrumentation data: * All events are kept in local rolling log file for a short interval of days and only collected when needed for debugging. Typically the events needed for detailed diagnosis are left on the node to reduce costs and resource utilization * Any events indicating service health such as error events, heart beat events or performance events are sent to a central repository where they can be used to raise alerts of an unhealthy service. There are solution that will automatically instrument your code. While these products can work well, manual instrumentation is almost always needed. In the end, you must have enough information to forensically debug the application. The next sections describe different approaches for instrumenting your code and when you should choose one over another. -## EventSource +### EventSource When you create an Azure Service Fabric solution from a template in Visual Studio, an EventSource derived class (*ServiceEventSource* or *ActorEventSource*) is generated. This provides a template to which you can add additional events appropriate for your application or service. The EventSource name **must** be unique and should be renamed from the starting string of 'MyCompany-<solution>-<project>'. Having multiple EventSource definitions using the same name will cause an issue at runtime. Each defined event must have a unique identifier. If an identifer is not unique a runtime failure will occur. Often ranges of values are pre-assigned for identifiers to avoid conflicts between separate development teams. For additional information on EventSource take a look at [Vance's blog](https://blogs.msdn.microsoft.com/vancem/2012/07/09/introduction-tutorial-logging-etw-events-in-c-system-diagnostics-tracing-eventsource/) or the [MSDN documentation](https://msdn.microsoft.com/library/dn774985(v=pandp.20).aspx). -### Using structured EventSource events +#### Using structured EventSource events + Each of the events below is defined for a specific case, a service type was registered for example. Having messages defined in this way allows data to be packaged along with the text of the error. This allows for better searching and filtering based on the names or values of the properties specified. Structuring the instrumentation output makes it easier to consume, but requires more thought and time to define a new event for each use case. Some event definitions can be shared across the entire application, e.g. a method start or stop event would be reused across many services within an application. A domain-specific service, such as an order system, may have a CreateOrder event, which will have its own unique event. Often this approach generates lots of events and potentially requires coordination of identifiers across project teams. For an more complete example of structure EventSources in Service Fabric look at the PartyCluster.ApplicationDeployService within the Party Cluster sample. ```csharp @@ -84,7 +89,8 @@ Each of the events below is defined for a specific case, a service type was regi WriteEvent(ServiceHostInitializationFailedEventId, exception); } ``` -### Using EventSource generically +#### Using EventSource generically + Because defining specific events can be difficult, many people define a small number of events with a common set of parameters that generally output their information as a string. Much of the structured aspect is lost, making it more difficult to search and filter the results. With this approach, a small number of events usually corresponding to the logging levels are defined. The snippet below defines a debug and error message. ```csharp [EventSource(Name = "MyCompany-VotingState-VotingStateService")] @@ -113,12 +119,13 @@ Because defining specific events can be difficult, many people define a small nu ``` Using a hybrid approach of both structured and generic instrumentation can also work well. In the case structured instrumentation is used for reporting errors and metrics, while generic events can be use for the detailed logging that is consumed by engineers when troubleshooting. -## ASP.NET Core logging -Choosing how to instrument your code can be difficult, if you chose poorly and have to re-instrument, you are revisiting and potentially destabilizing your code base. To reduce the risk, developers can choose an instrumentation library such as [Microsoft.Extensions.Logging](https://www.nuget.org/packages/Microsoft.Extensions.Logging/) provided by ASP.NET Core. This provides an [ILogger](https://docs.microsoft.com/en-us/aspnet/core/api/microsoft.extensions.logging.ilogger) interface that allows the provider of your choice to be used while minimizing the impact to existing code. Another nice aspect of this is that the code can be used not only in .NET Core on Windows and Linux, but in the full framework too, giving the ability to standardize your instrumentation code across .NET and .NET Core. +### ASP.NET Core logging + +Choosing how to instrument your code can be difficult, if you chose poorly and have to re-instrument, you are revisiting and potentially destabilizing your code base. To reduce the risk, developers can choose an instrumentation library such as [Microsoft.Extensions.Logging](https://www.nuget.org/packages/Microsoft.Extensions.Logging/) provided by ASP.NET Core. This provides an [ILogger](https://docs.microsoft.com/aspnet/core/api/microsoft.extensions.logging.ilogger) interface that allows the provider of your choice to be used while minimizing the impact to existing code. Another nice aspect of this is that the code can be used not only in .NET Core on Windows and Linux, but in the full framework too, giving the ability to standardize your instrumentation code across .NET and .NET Core. -### How to use Microsoft.Extensions.Logging within Service Fabric +#### How to use Microsoft.Extensions.Logging within Service Fabric -1. Add the **Microsoft.Extensions.Logging** NuGet package to the project to instrument. You'll also want to add any provider packages, we'll do this for a third-party package below. See [Logging in ASP.NET Core](https://docs.microsoft.com/en-us/aspnet/core/fundamentals/logging) for more information +1. Add the **Microsoft.Extensions.Logging** NuGet package to the project to instrument. You'll also want to add any provider packages, we'll do this for a third-party package below. See [Logging in ASP.NET Core](https://docs.microsoft.com/aspnet/core/fundamentals/logging) for more information 2. Add a using directive for 'Microsoft.Extensions.Logging' to your service file 3. Define a private variable within your service class ```csharp @@ -138,7 +145,8 @@ Choosing how to instrument your code can be difficult, if you chose poorly and h _logger.LogInformation("{RequestName} {Duration}", "MyRequest", requestDuration); ``` -### Using other logging providers +#### Using other logging providers + There are some third-party providers that work with this approach, [SeriLog](https://serilog.net/), [NLog](http://nlog-project.org/) and [loggr](https://github.com/imobile3/Loggr.Extensions.Logging) are three examples. Each of these can be plugged into ASP.Net Core Logging and can also be used separately. SeriLog has a feature that allows enrichment of all messages sent from a logger, which can be useful to output the service name, type, and partition information. To leverage this capability with in the ASP.NET Core infrastructure, perform the following 1. Add **Serilog**, **Serilog.Extensions.Logging**, **Serilog.Sinks.Observable** NuGet packages to the project. Also add **SeriLog.Sinks.Literate** for this example, a better approach is shown later in this article @@ -170,14 +178,16 @@ There are some third-party providers that work with this approach, [SeriLog](htt ``` 5. Instrument the code the same as when using ASP.NET Core without SeriLog. -[!NOTE] It is not recommended that the static Log.Logger be used with this approach because Service Fabric can host multiple instances of the same service type within a single process. This would mean that the last writer of the property enrichers would have their values shown for all instances running. This is one reason why the _logger variable is a private member variable of the service class. This also means that the _logger must be made available to common code that may be used across services. +> [!NOTE] +> It is not recommended that the static Log.Logger be used with this approach because Service Fabric can host multiple instances of the same service type within a single process. This would mean that the last writer of the property enrichers would have their values shown for all instances running. This is one reason why the _logger variable is a private member variable of the service class. This also means that the _logger must be made available to common code that may be used across services. + +### Which one should I use? -## Which one should I use? If your application cares deeply about performance, then EventSource is the best approach to use because it **generally** uses fewer resources and perform better than using ASP.NET Core logging or any of the third-party solutions. This isn't an issue for many services, but if your service is very performance oriented using EventSource may be a better choice. Of course, to get the same benefits of structured logging, EventSource requires a large investment from the engineering team. The best way to determine what to choose for your project is to do a quick prototype of what you would do for each approach and then choose the approach that best fits your needs. -# Event and log collection +## Event and log collection -## Azure Diagnostics +### Azure Diagnostics Beyond what Azure Monitoring already provides, Azure also provides a means of collecting events from each of the services to a central location. There are two articles that show how to configure event collection for [Windows](service-fabric-diagnostics-how-to-setup-wad.md) and [Linux](service-fabric-diagnostics-how-to-setup-lad.md). These articles show collecting the event data and sending it to Azure storage. This is very easily done in the portal or Resource Manager template by enabling diagnostics. Turning this on collects a few event sources that Service Fabric automatically produces: @@ -194,11 +204,12 @@ One of the downsides of using Azure Diagnostics is that the configuration is don Azure Diagnostics only works for Service Fabric clusters deployed to Azure, but it works for both Windows and Linux clusters. -## EventFlow +### EventFlow + [EventFlow was released by the Visual Studio](service-fabric-diagnostic-collect-logs-without-an-agent.md) team and provides a mechanism for routing events from a node to one or more monitoring destinations. Because it is included as a NuGet package in your service project the code and the configuration for EventFlow travels with the service, eliminating the per node configuration issue mentioned about Azure Diagnostics. EventFlow runs within your service process and directly connects to the configured outputs. Because of this direct connection, EventFlow works for Azure, container or on-premise deployments of a service. Care must be taken when running in high density scenarios such as a container because each EventFlow pipeline will make an external connection, if you are hosting lots of processes, you'll end up with lots of outbound connections! This isn't as much of an issue for Service Fabric applications because all replicas of a ServiceType run within the same process, limiting the number of outbound connections. EventFlow also offers filtering of events, so only the events that match the specified filter are sent. For detailed information on using EventFlow with Service Fabric, see [Collect logs directly from an Azure Service Fabric service process](service-fabric-diagnostic-collect-logs-without-an-agent.md) -[!NOTE] -In a future release of Service Fabric an EventSource host application will be made available allowing listening to ETW based inputs, collection of node level metrics and rolling log file support. +> [!NOTE] +> In a future release of Service Fabric an EventSource host application will be made available allowing listening to ETW based inputs, collection of node level metrics and rolling log file support. Using EventFlow is pretty easy 1. Add the NuGet package to your service project @@ -286,22 +297,22 @@ In the configuration there are two inputs defined, the two EventSource based sou 4. The last step is to instrument the code. In this example, we're going to instrument RunAsync in a few different ways as an example. In the code below, we're still using SeriLog and some of the syntax used is specific to SeriLog. Be aware of the specific capabilities for the logging solution you choose. There are three events generated, a debug level event and two informational, the second which is tracking the request duration. With the configuration of EventFlow above, the Debug level event should not flow to the output. ```csharp - Stopwatch sw = Stopwatch.StartNew(); + Stopwatch sw = Stopwatch.StartNew(); - while (true) - { - cancellationToken.ThrowIfCancellationRequested(); + while (true) + { + cancellationToken.ThrowIfCancellationRequested(); - sw.Restart(); + sw.Restart(); - // Delay a random interval to provide a more interesting request duration. - await Task.Delay(TimeSpan.FromMilliseconds(DateTime.Now.Millisecond), cancellationToken); + // Delay a random interval to provide a more interesting request duration. + await Task.Delay(TimeSpan.FromMilliseconds(DateTime.Now.Millisecond), cancellationToken); - ServiceEventSource.Current.ServiceMessage(this.Context, "Working-{0}", ++iterations); - _logger.LogDebug("Debug level event from Microsoft.Logging"); - _logger.LogInformation("Informational level event from Microsoft.Logging"); - _logger.LogInformation("{RequestName} {Duration}", "MyRequest", sw.ElapsedMilliseconds); - } + ServiceEventSource.Current.ServiceMessage(this.Context, "Working-{0}", ++iterations); + _logger.LogDebug("Debug level event from Microsoft.Logging"); + _logger.LogInformation("Informational level event from Microsoft.Logging"); + _logger.LogInformation("{RequestName} {Duration}", "MyRequest", sw.ElapsedMilliseconds); + } ``` 5. To view the events in Application Insights, open the Azure portal and navigate to your ApplicationInsights resource. Then click "Search" in the upper left and the events should be visible. @@ -312,7 +323,7 @@ The traces are at the bottom of the picture. You can see we have only two events If the cluster is a standalone cluster that cannot be connected to a cloud-based solution for policy reasons, EventFlow supports Elastic Search as an output, but other outputs can be written and pull requests are encouraged. Some of the third-party providers for ASP.NET Core logging also have solutions that support on-premises installations. -# Azure Service Fabric health and load reporting +## Azure Service Fabric health and load reporting Service Fabric has its own health model that is described in detail in a few articles - [Introduction to Service Fabric health monitoring](service-fabric-health-introduction.md) @@ -326,8 +337,8 @@ Another aspect of service health is reporting metrics from the service. Metrics Metrics also give insight into how your service is performing and over time can be used to check that the service is operating within expected parameters. For instance, if based on trends, at 9am on Monday morning the average RPS is 1000, then you may setup a health report that alerts if the RPS is below 500 or above 1500. Everything may be perfectly fine, but it may be worth a look to ensure your customers are having a great experience. Your service can define a set of metrics that can be reported for health purposes, but does not affect the resource balancing of the cluster, just set the metric weight to zero. We recommend that you start all metric with a weight of zero and don't increase the weight until you are sure that you understand how this will impact resource balancing for your cluster. -[!TIP] -Take care not to have too many weighted metrics, it can be difficult to understand why service instances are being moved around, a few metrics can go a long way! +> [!TIP] +> Take care not to have too many weighted metrics, it can be difficult to understand why service instances are being moved around, a few metrics can go a long way! Candidates for metrics and health reports are anything that can indicate the health and performance of your application. A CPU performance counter can tell you how utilized your node is, but it doesn't really say if a particular service is healthy or not because multiple services will be running on a single node. On the other hand, a metric such as RPS or items processed or request latency can all indicate the health of a particular service. @@ -348,12 +359,15 @@ this.ServicePartition.ReportLoad(new List { new LoadMetric("MemoryIn ``` ## Watchdogs + A watchdog is a separate service that can watch health and load across services and report health for anything in the health model hierarchy. This can help to prevent errors that would not be detected based on the view of a single service. Watchdogs are also a good place to host code that can perform remediation actions for known conditions without any human interaction. -# Visualization, Analysis and Alerting +## Visualization, Analysis and Alerting + The last part of monitoring is visualizing the event stream, reporting on service performance and alerting when an issue is detected. There are a lot of solutions that are used for this aspect of monitoring, Application Insights and OMS can be used to alert based on the stream of events. PowerBI or a third-party solution such as [Kibana](https://www.elastic.co/products/kibana) or [Splunk](https://www.splunk.com/) can be used for visualizing the data. ## Next steps + * [How to collect logs with Azure Diagnostics](service-fabric-diagnostics-how-to-setup-wad.md) * [Collect logs directly from an Azure Service Fabric service process](service-fabric-diagnostic-collect-logs-without-an-agent.md) * [Managing resource consumption and load in Service Fabric with metrics](service-fabric-cluster-resource-manager-metrics.md) From a97c2d1dca72c5bbaa7680e1eceb9ba663d02ec9 Mon Sep 17 00:00:00 2001 From: mumian Date: Fri, 3 Feb 2017 13:45:48 -0500 Subject: [PATCH 61/90] incorporate Scott's feedback --- .../hdinsight-hadoop-use-mapreduce-dotnet-sdk.md | 10 +++++++--- 1 file changed, 7 insertions(+), 3 deletions(-) diff --git a/articles/hdinsight/hdinsight-hadoop-use-mapreduce-dotnet-sdk.md b/articles/hdinsight/hdinsight-hadoop-use-mapreduce-dotnet-sdk.md index 039ee50a4e246..922075a6ef5ec 100644 --- a/articles/hdinsight/hdinsight-hadoop-use-mapreduce-dotnet-sdk.md +++ b/articles/hdinsight/hdinsight-hadoop-use-mapreduce-dotnet-sdk.md @@ -14,7 +14,7 @@ ms.workload: big-data ms.tgt_pltfrm: na ms.devlang: na ms.topic: article -ms.date: 11/15/2016 +ms.date: 02/03/2017 ms.author: jgao --- @@ -64,7 +64,7 @@ The HDInsight .NET SDK provides .NET client libraries, which makes it easier to private const string ExistingClusterUsername = ""; private const string ExistingClusterPassword = ""; - private const string DefaultStorageAccountName = ""; + private const string DefaultStorageAccountName = ""; //.blob.core.windows.net private const string DefaultStorageAccountKey = ""; private const string DefaultStorageContainerName = ""; @@ -93,7 +93,7 @@ The HDInsight .NET SDK provides .NET client libraries, which makes it easier to }; System.Console.WriteLine("Submitting the MR job to the cluster..."); - var jobResponse = _hdiJobManagementClient.JobManagement.SubmitHiveJob(parameters); + var jobResponse = _hdiJobManagementClient.JobManagement.SubmitMapReduceJob(paras); var jobId = jobResponse.JobSubmissionJsonResponse.Id; System.Console.WriteLine("Response status code is " + jobResponse.StatusCode); System.Console.WriteLine("JobId is " + jobId); @@ -127,6 +127,10 @@ The HDInsight .NET SDK provides .NET client libraries, which makes it easier to } 4. Press **F5** to run the application. +To run the job again, you must change the job output folder name, in the sample, it is "/example/data/davinciwordcount". + +When the job completes successfully, the output is blank. To see the result of the MapReduce job, use the Azure portal to explore the default storage container in the Blob storage. The file name is "part-r-00000". + ## Next steps In this article, you have learned several ways to create an HDInsight cluster. To learn more, see the following articles: From 55a4b22c3bb097c688446a5ec22f60baecf44ffe Mon Sep 17 00:00:00 2001 From: Sabotta Date: Fri, 3 Feb 2017 10:52:46 -0800 Subject: [PATCH 62/90] Update virtual-machines-windows-portal-sql-server-provision.md corrected formatting error --- .../sql/virtual-machines-windows-portal-sql-server-provision.md | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/articles/virtual-machines/windows/sql/virtual-machines-windows-portal-sql-server-provision.md b/articles/virtual-machines/windows/sql/virtual-machines-windows-portal-sql-server-provision.md index 3eb48e935760a..824c8df4f9e2a 100644 --- a/articles/virtual-machines/windows/sql/virtual-machines-windows-portal-sql-server-provision.md +++ b/articles/virtual-machines/windows/sql/virtual-machines-windows-portal-sql-server-provision.md @@ -48,7 +48,7 @@ In this tutorial, you will: 3. In the **New** blade, click **Compute** and then click **See all**. 4. In the **Filter** text box type SQL Server, and press the ENTER key. -![Azure Virtual Machines Blade](./media/virtual-machines-windows-portal-sql-server-provision/azure-compute-blade.png) + ![Azure Virtual Machines Blade](./media/virtual-machines-windows-portal-sql-server-provision/azure-compute-blade.png) 5. Review the available SQL Server templates. 6. Each template identifies a SQL Server version and an operating system. Select one of these images from the list. Then review the details blade that provides a description of the virtual machine image. From 1a982309fe771c0c244c691ae648bd5f4844a825 Mon Sep 17 00:00:00 2001 From: Padma Chilakapati Date: Fri, 3 Feb 2017 10:57:46 -0800 Subject: [PATCH 63/90] corrected typo in notes x12 agreement page --- articles/logic-apps/logic-apps-enterprise-integration-x12.md | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/articles/logic-apps/logic-apps-enterprise-integration-x12.md b/articles/logic-apps/logic-apps-enterprise-integration-x12.md index d60514904df21..f4ee16146e2bc 100644 --- a/articles/logic-apps/logic-apps-enterprise-integration-x12.md +++ b/articles/logic-apps/logic-apps-enterprise-integration-x12.md @@ -53,7 +53,7 @@ After you log into the [Azure portal](http://portal.azure.com "Azure portal"): | Send Settings |These properties apply to all messages sent by an agreement | > [!NOTE] -> Resoultuion of X12 agreement depens on matching the sender qualifier and identifier, and the receiver qualifier and identifier defined in the partner and incoming message. If there are changes to these values at partner, edit the agreement as well. +> Resolution of X12 agreement depends on matching the sender qualifier and identifier, and the receiver qualifier and identifier defined in the partner and incoming message. If there are changes to these values at partner, edit the agreement as well. > > From 110bf7df8753ec83a5a8b4219891700b462d4eb1 Mon Sep 17 00:00:00 2001 From: Jeff Stokes Date: Fri, 3 Feb 2017 14:00:05 -0500 Subject: [PATCH 64/90] fixing code blocks --- ...ytics-twitter-sentiment-analysis-trends.md | 103 +++++++++--------- 1 file changed, 53 insertions(+), 50 deletions(-) diff --git a/articles/stream-analytics/stream-analytics-twitter-sentiment-analysis-trends.md b/articles/stream-analytics/stream-analytics-twitter-sentiment-analysis-trends.md index 1e557633e5934..0fc0c9ad00039 100644 --- a/articles/stream-analytics/stream-analytics-twitter-sentiment-analysis-trends.md +++ b/articles/stream-analytics/stream-analytics-twitter-sentiment-analysis-trends.md @@ -64,22 +64,22 @@ Follow these steps to set up the application: Note that you will need to make an empty application to generate a token. -3. Replace the EventHubConnectionString and EventHubName values in TwitterClient.exe.config with the connection string and name of your event hub. The connection string that you copied earlier gives you both the connection string and the name of your event hub, so be sure to separate them and put each in the correct field. For example, consider the following connection string: - -` Endpoint=sb://your.servicebus.windows.net/;SharedAccessKeyName=yourpolicy;SharedAccessKey=yoursharedaccesskey;EntityPath=yourhub` - +3. Replace the EventHubConnectionString and EventHubName values in TwitterClient.exe.config with the connection string and name of your event hub. The connection string that you copied earlier gives you both the connection string and the name of your event hub, so be sure to separate them and put each in the correct field. For example, consider the following connection string: + + `Endpoint=sb://your.servicebus.windows.net/;SharedAccessKeyName=yourpolicy;SharedAccessKey=yoursharedaccesskey;EntityPath=yourhub` + The TwitterClient.exe.config file should contain your settings as in the following example: - -``` + + ``` add key="EventHubConnectionString" value="Endpoint=sb://your.servicebus.windows.net/;SharedAccessKeyName=yourpolicy;SharedAccessKey=yoursharedaccesskey" add key="EventHubName" value="yourhub" -``` - + ``` + It is important to note that the text "EntityPath=" does **not** appear in the EventHubName value. - + 4. *Optional:* Adjust the keywords to search for. As a default, this application looks for "Azure,Skype,XBox,Microsoft,Seattle". You can adjust the values for **twitter_keywords** in TwitterClient.exe.config, if desired. 5. Run TwitterClient.exe to start your application. You will see Tweet events with the **CreatedAt**, **Topic**, and **SentimentScore** values being sent to your event hub. - + ![Sentiment analysis: SentimentScore values sent to an event hub.](./media/stream-analytics-twitter-sentiment-analysis-trends/stream-analytics-twitter-sentiment-output-to-event-hub.png) ## Create a Stream Analytics job @@ -91,33 +91,35 @@ Now that Tweet events are streaming in real time from Twitter, we can set up a S * **JOB NAME**: Enter a job name. * **REGION**: Select the region where you want to run the job. Consider placing the job and the event hub in the same region to ensure better performance and to ensure that you will not be paying to transfer data between regions. - * **STORAGE ACCOUNT**: Choose the Azure storage account that you would like to use to store monitoring data for all Stream Analytics jobs that run within this region. You have the option to choose an existing storage account or to create a new one. -3. Click **STREAM ANALYTICS** in the left pane to list the Stream Analytics jobs. + * **STORAGE ACCOUNT**: Choose the Azure storage account that you would like to use to store monitoring data for all Stream Analytics jobs that run within this region. You have the option to choose an existing storage account or to create a new one. +3. Click **STREAM ANALYTICS** in the left pane to list the Stream Analytics jobs. + ![Stream Analytics service icon](./media/stream-analytics-twitter-sentiment-analysis-trends/stream-analytics-service-icon.png) - + The new job will be shown with a status of **CREATED**. Notice that the **START** button on the bottom of the page is disabled. You must configure the job input, output, and query before you can start the job. + ### Specify job input + 1. In your Stream Analytics job, click **INPUTS** from the top of the page, and then click **ADD INPUT**. The dialog box that opens will walk you through a number of steps to set up your input. 2. Click **DATA STREAM**, and then click the right button. 3. Click **EVENT HUB**, and then click the right button. -4. Type or select the following values on the third page: - +4. Type or select the following values on the third page: + * **INPUT ALIAS**: Enter a friendly name for this job input, such as *TwitterStream*. Note that you will use this name in the query later. - **EVENT HUB**: If the event hub that you created is in the same subscription as the Stream Analytics job, select the namespace that the event hub is in. - - If your event hub is in a different subscription, click **Use Event Hub from Another Subscription**, and then manually enter information for **SERVICE BUS NAMESPACE**, **EVENT HUB NAME**, **EVENT HUB POLICY NAME**, **EVENT HUB POLICY KEY**, and **EVENT HUB PARTITION COUNT**. + * **EVENT HUB**: If the event hub that you created is in the same subscription as the Stream Analytics job, select the namespace that the event hub is in. + * If your event hub is in a different subscription, click **Use Event Hub from Another Subscription**, and then manually enter information for **SERVICE BUS NAMESPACE**, **EVENT HUB NAME**, **EVENT HUB POLICY NAME**, **EVENT HUB POLICY KEY**, and **EVENT HUB PARTITION COUNT**. * **EVENT HUB NAME**: Select the name of the event hub. * **EVENT HUB POLICY NAME**: Select the event hub policy that you created earlier in this tutorial. * **EVENT HUB CONSUMER GROUP**: Type the name of the consumer group that you created earlier in this tutorial. - + 5. Click the right button. -6. Specify the following values: - +6. Specify the following values: + * **EVENT SERIALIZER FORMAT**: JSON * **ENCODING**: UTF8 - + 7. Click the **CHECK** button to add this source and to verify that Stream Analytics can successfully connect to the event hub. ### Specify job query @@ -134,62 +136,62 @@ To validate your query against actual job data, you can use the **SAMPLE DATA** To start, we will do a simple pass-through query that projects all the fields in an event. 1. Click **QUERY** at the top of the Stream Analytics job page. -2. In the code editor, replace the initial query template with the following: - +2. In the code editor, replace the initial query template with the following: + `SELECT * FROM TwitterStream` - + Make sure that the name of the input source matches the name of the input that you specified earlier. - + 3. Click **Test** under the query editor. 4. Go to your sample .json file. 5. Click the **CHECK** button, and see the results below the query definition. - + ![Results displayed below query definition](./media/stream-analytics-twitter-sentiment-analysis-trends/stream-analytics-sentiment-by-topic.png) - + #### Count of tweets by topic: Tumbling window with aggregation To compare the number of mentions among topics, we'll use a [TumblingWindow](https://msdn.microsoft.com/library/azure/dn835055.aspx) to get the count of mentions by topic every five seconds. -1. Change the query in the code editor to: - -``` +1. Change the query in the code editor to: + + ``` SELECT System.Timestamp as Time, Topic, COUNT(*) FROM TwitterStream TIMESTAMP BY CreatedAt GROUP BY TUMBLINGWINDOW(s, 5), Topic -``` - + ``` + This query uses the **TIMESTAMP BY** keyword to specify a timestamp field in the payload to be used in the temporal computation. If this field wasn't specified, the windowing operation would be performed by using the time that each event arrived at the event hub. Learn more in the "Arrival Time Vs Application Time" section of [Stream Analytics Query Reference](https://msdn.microsoft.com/library/azure/dn834998.aspx). - + This query also accesses a timestamp for the end of each window by using the **System.Timestamp** property. - + 2. Click **Rerun** under the query editor to see the results of the query. #### Identify trending topics: Sliding window To identify trending topics, we'll look for topics that cross a threshold value for mentions in a given amount of time. For the purposes of this tutorial, we'll check for topics that are mentioned more than 20 times in the last five seconds by using a [SlidingWindow](https://msdn.microsoft.com/library/azure/dn835051.aspx). -1. Change the query in the code editor to: - -``` +1. Change the query in the code editor to: + + ``` SELECT System.Timestamp as Time, Topic, COUNT(*) as Mentions FROM TwitterStream TIMESTAMP BY CreatedAt GROUP BY SLIDINGWINDOW(s, 5), topic HAVING COUNT(*) > 20 -``` - -2. Click **Rerun** under the query editor to see the results of the query. - + ``` + +2. Click **Rerun** under the query editor to see the results of the query. + ![Sliding Window query output](./media/stream-analytics-twitter-sentiment-analysis-trends/stream-analytics-query-output.png) - + #### Count of mentions and sentiment: Tumbling window with aggregation The final query that we will test uses **TumblingWindow** to get the number of mentions, average, minimum, maximum, and standard deviation of sentiment score for each topic every five seconds. -1. Change the query in the code editor to: - -``` +1. Change the query in the code editor to: + + ``` SELECT System.Timestamp as Time, Topic, COUNT(*), AVG(SentimentScore), MIN(SentimentScore), Max(SentimentScore), STDEV(SentimentScore) FROM TwitterStream TIMESTAMP BY CreatedAt GROUP BY TUMBLINGWINDOW(s, 5), Topic -``` + ``` 2. Click **Rerun** under the query editor to see the results of the query. 3. This is the query that we will use for our dashboard. Click **SAVE** at the bottom of the page. @@ -206,15 +208,16 @@ Use the following steps to create a container for Blob storage, if you don't alr ## Specify job output 1. In your Stream Analytics job, click **OUTPUT** at the top of the page, and then click **ADD OUTPUT**. The dialog box that opens will walk you through several steps to set up your output. 2. Click **BLOB STORAGE**, and then click the right button. -3. Type or select the following values on the third page: - +3. Type or select the following values on the third page: + * **OUTPUT ALIAS**: Enter a friendly name for this job output. * **SUBSCRIPTION**: If the Blob storage that you created is in the same subscription as the Stream Analytics job, click **Use Storage Account from Current Subscription**. If your storage is in a different subscription, click **Use Storage Account from Another Subscription**, and manually enter information for **STORAGE ACCOUNT**, **STORAGE ACCOUNT KEY**, and **CONTAINER**. * **STORAGE ACCOUNT**: Select the name of the storage account. * **CONTAINER**: Select the name of the container. * **FILENAME PREFIX**: Type a file prefix to use when writing blob output. + 4. Click the right button. -5. Specify the following values: +5. Specify the following values: * **EVENT SERIALIZER FORMAT**: JSON * **ENCODING**: UTF8 6. Click the **CHECK** button to add this source and to verify that Stream Analytics can successfully connect to the storage account. From fcc47e3e054d88fe40c13a0fd9949c315dbfce9b Mon Sep 17 00:00:00 2001 From: mumian Date: Fri, 3 Feb 2017 14:05:36 -0500 Subject: [PATCH 65/90] update --- .../hdinsight/hdinsight-hadoop-use-mapreduce-dotnet-sdk.md | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/articles/hdinsight/hdinsight-hadoop-use-mapreduce-dotnet-sdk.md b/articles/hdinsight/hdinsight-hadoop-use-mapreduce-dotnet-sdk.md index 922075a6ef5ec..3a12634a43a19 100644 --- a/articles/hdinsight/hdinsight-hadoop-use-mapreduce-dotnet-sdk.md +++ b/articles/hdinsight/hdinsight-hadoop-use-mapreduce-dotnet-sdk.md @@ -134,9 +134,9 @@ When the job completes successfully, the output is blank. To see the result of t ## Next steps In this article, you have learned several ways to create an HDInsight cluster. To learn more, see the following articles: -* For creating a cluster and submitting a Hive job, see [Get started with Azure HDInsight](hdinsight-hadoop-linux-tutorial-get-started.md). +* For submitting a Hive job, see [Run Hive queries using HDInsight .NET SDK](hdinsight-hadoop-use-hive-dotnet-sdk.md). * For creating HDInsight clusters, see [Create Linux-based Hadoop clusters in HDInsight](hdinsight-hadoop-provision-linux-clusters.md). -* For managing HDInsight clusters, see [Manage Hadoop clusters in HDInsight](hdinsight-administer-use-management-portal.md). +* For managing HDInsight clusters, see [Manage Hadoop clusters in HDInsight](hdinsight-administer-use-portal-linux.md). * For learning the HDInsight .NET SDK, see [HDInsight .NET SDK reference](https://msdn.microsoft.com/library/mt271028.aspx). * For non-interactive authenticate to Azure, see [Create non-interactive authentication .NET HDInsight applications](hdinsight-create-non-interactive-authentication-dotnet-applications.md). From 26929e9d39f3993e076f284fcfb8c4a06b0c2082 Mon Sep 17 00:00:00 2001 From: Padma Chilakapati Date: Fri, 3 Feb 2017 11:08:15 -0800 Subject: [PATCH 66/90] corrected headers in certificate page --- ...-apps-enterprise-integration-certificates.md | 17 +++++++++-------- 1 file changed, 9 insertions(+), 8 deletions(-) diff --git a/articles/logic-apps/logic-apps-enterprise-integration-certificates.md b/articles/logic-apps/logic-apps-enterprise-integration-certificates.md index 29edb08c7c839..ed146a1c57dd7 100644 --- a/articles/logic-apps/logic-apps-enterprise-integration-certificates.md +++ b/articles/logic-apps/logic-apps-enterprise-integration-certificates.md @@ -4,7 +4,7 @@ title: Using certificates with Enterprise Integration Pack | Microsoft Docs description: Learn how to use certificates with the Enterprise Integration Pack and Logic Apps services: logic-apps documentationcenter: .net,nodejs,java -author: msftman +author: padmavc manager: anneta editor: cgronlun @@ -14,8 +14,8 @@ ms.workload: integration ms.tgt_pltfrm: na ms.devlang: na ms.topic: article -ms.date: 09/06/2016 -ms.author: deonhe +ms.date: 02/03/2016 +ms.author: padmamvc --- # Learn about certificates and Enterprise Integration Pack @@ -34,9 +34,9 @@ Sometimes B2B communications must be kept confidential. Enterprise integration u * By encrypting the contents of messages * By digitally signing messages -## How do you upload certificates? -### Public certificates -To use a *public certificate* in your logic apps with B2B capabilities, you first need to upload the certificate into your integration account. To use a *self-signed certificate*, on the other hand, you must first upload it to [Azure Key Vault](../key-vault/key-vault-get-started.md "Learn about Key Vault"). +## Upload a public certificate + +To use a *public certificate* in your logic apps with B2B capabilities, you first need to upload the certificate into your integration account. After you upload a certificate, it's available to help you secure your B2B messages when you define their properties in the [agreements](logic-apps-enterprise-integration-agreements.md) that you create. @@ -58,8 +58,9 @@ Here are the detailed steps for uploading your public certificates into your int 9. Select the **Certificates** tile. You should see the newly added certificate. ![See the new certificate](media/logic-apps-enterprise-integration-certificates/certificate-4.png) -### Private certificates -You can upload private certificates into your integration account by taking the following steps: +## Upload a private certificate + +To use a *private certificate* in your logic apps with B2B capabilities, You can upload a private certificate to your integration account by taking the following steps 1. [Upload your private key to Key Vault](../key-vault/key-vault-get-started.md "Learn about Key Vault") and provide a **Key Name** From 20365c101a6e41f3af19d80300bc409705a57f4b Mon Sep 17 00:00:00 2001 From: Todd Abel Date: Fri, 3 Feb 2017 11:09:32 -0800 Subject: [PATCH 67/90] fixed issues --- articles/service-fabric/service-fabric-diagnostics-overview.md | 1 - 1 file changed, 1 deletion(-) diff --git a/articles/service-fabric/service-fabric-diagnostics-overview.md b/articles/service-fabric/service-fabric-diagnostics-overview.md index cd5d8b3c50533..1c3242d25b1be 100644 --- a/articles/service-fabric/service-fabric-diagnostics-overview.md +++ b/articles/service-fabric/service-fabric-diagnostics-overview.md @@ -314,7 +314,6 @@ In the configuration there are two inputs defined, the two EventSource based sou _logger.LogInformation("{RequestName} {Duration}", "MyRequest", sw.ElapsedMilliseconds); } ``` - 5. To view the events in Application Insights, open the Azure portal and navigate to your ApplicationInsights resource. Then click "Search" in the upper left and the events should be visible. ![Application Insights Search view of events](./media/service-fabric-diagnostics-overview/ai-search-events.png) From c8cfe5fb933cf9056b971d3e524f3c9ebc910215 Mon Sep 17 00:00:00 2001 From: Padma Chilakapati Date: Fri, 3 Feb 2017 11:27:23 -0800 Subject: [PATCH 68/90] typo corrected in certificate page --- .../logic-apps-enterprise-integration-certificates.md | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/articles/logic-apps/logic-apps-enterprise-integration-certificates.md b/articles/logic-apps/logic-apps-enterprise-integration-certificates.md index ed146a1c57dd7..2a2ec9c9fc679 100644 --- a/articles/logic-apps/logic-apps-enterprise-integration-certificates.md +++ b/articles/logic-apps/logic-apps-enterprise-integration-certificates.md @@ -1,7 +1,7 @@ --- title: Using certificates with Enterprise Integration Pack | Microsoft Docs -description: Learn how to use certificates with the Enterprise Integration Pack and Logic Apps +description: Learn how to use certificates with the Enterprise Integration Pack | Azure Logic Apps services: logic-apps documentationcenter: .net,nodejs,java author: padmavc @@ -15,7 +15,7 @@ ms.tgt_pltfrm: na ms.devlang: na ms.topic: article ms.date: 02/03/2016 -ms.author: padmamvc +ms.author: padmavc --- # Learn about certificates and Enterprise Integration Pack From 0239a6c83ed73069e517952fe25571cb9b39635a Mon Sep 17 00:00:00 2001 From: Gilad Mittelman Date: Fri, 3 Feb 2017 21:33:29 +0200 Subject: [PATCH 69/90] small fix --- articles/sql-database/sql-database-auditing-get-started.md | 3 ++- 1 file changed, 2 insertions(+), 1 deletion(-) diff --git a/articles/sql-database/sql-database-auditing-get-started.md b/articles/sql-database/sql-database-auditing-get-started.md index 63383f5cf775f..1a01064889ae5 100644 --- a/articles/sql-database/sql-database-auditing-get-started.md +++ b/articles/sql-database/sql-database-auditing-get-started.md @@ -41,7 +41,8 @@ There are two **Auditing methods**: * **Blob auditing** - logs are written to Azure Blob Storage. This is a newer auditing method, which provides **higher performance**, supports **higher granularity object-level auditing**, and is **more cost effective**. * **Table auditing** - logs are written to Azure Table Storage. -> **Important** - the introduction of the new Blob Auditing brings a major change to the way Server auditing policy is being inherited by the database. See [Blob/Table differences in Server auditing policy inheritance](#subheading-8) section for additional details. +> [!IMPORTANT] +> The introduction of the new Blob Auditing brings a major change to the way Server auditing policy is being inherited by the database. See [Blob/Table differences in Server auditing policy inheritance](#subheading-8) section for additional details. You can configure auditing for different types of event categories, as explained in the [Set up auditing for your database](#subheading-2) section. From d9ffd4176e87b6b5ada882ff09f507665bda7b1d Mon Sep 17 00:00:00 2001 From: curtand Date: Fri, 3 Feb 2017 12:10:04 -0800 Subject: [PATCH 70/90] customer feedbak incorped --- .../active-directory-b2b-admin-add-users.md | 7 ++++++- .../active-directory-b2b-faq.md | 8 +++++--- .../active-directory-b2b-invitation-email.md | 5 ++++- .../active-directory-b2b-iw-add-users.md | 6 ++---- .../active-directory-b2b-mfa-instructions.md | 14 ++++++++------ ...ctive-directory-b2b-redemption-experience.md | 1 + .../invitation-email.png | Bin 0 -> 71312 bytes 7 files changed, 26 insertions(+), 15 deletions(-) create mode 100644 articles/active-directory/media/active-directory-b2b-invitation-email/invitation-email.png diff --git a/articles/active-directory/active-directory-b2b-admin-add-users.md b/articles/active-directory/active-directory-b2b-admin-add-users.md index df10b10284703..3e323d2822d55 100644 --- a/articles/active-directory/active-directory-b2b-admin-add-users.md +++ b/articles/active-directory/active-directory-b2b-admin-add-users.md @@ -30,24 +30,29 @@ Add B2B collaboration users to the directory as an Azure AD administrator, as sh >[!VIDEO https://channel9.msdn.com/Blogs/Azure/Admin-adding-guests-for-B2B-collaboration-to-Azure-AD-tenant] + If this video does not appear embedded, you can reach it [here](https://channel9.msdn.com/Blogs/Azure/Admin-adding-guests-for-B2B-collaboration-to-Azure-AD-tenant). + ## Admins adding guest users to a group Add B2B collaboration users to a group as an Azure AD administrator, as shown in the following video: >[!VIDEO https://channel9.msdn.com/Blogs/Azure/admin-adding-guests-to-a-group] + If this video does not appear embedded, you can reach it [here](https://channel9.msdn.com/Blogs/Azure/admin-adding-guests-to-a-group). + ## Admins adding guest users to an application Add B2B collaboration users to an application as an Azure AD administrator, as shown in the following video: >[!VIDEO https://channel9.msdn.com/Blogs/Azure/admin-assign-b2b-to-apps] + If this video does not appear embedded, you can reach it [here](https://channel9.msdn.com/Blogs/Azure/admin-assign-b2b-to-apps). ## Related articles Browse our other articles on Azure AD B2B collaboration: * [What is Azure AD B2B collaboration?](active-directory-b2b-what-is-azure-ad-b2b.md) -* [How do information workers add B2B collaboration users?](active-directory-b2b-how-it-works.md) +* [How do information workers add B2B collaboration users?](active-directory-b2b-iw-add-users.md) * [The elements of the B2B collaboration invitation email](active-directory-b2b-invitation-email.md) * [B2B collaboration invitation redemption](active-directory-b2b-redemption-experience.md) * [Azure AD B2B collaboration licensing](active-directory-b2b-licensing.md) diff --git a/articles/active-directory/active-directory-b2b-faq.md b/articles/active-directory/active-directory-b2b-faq.md index dcc706aab651f..984af8acee54f 100644 --- a/articles/active-directory/active-directory-b2b-faq.md +++ b/articles/active-directory/active-directory-b2b-faq.md @@ -21,7 +21,7 @@ ms.author: sasubram # Azure Active Directory B2B collaboration frequently-asked questions (FAQ) -Frequently-asked questions is periodically updated to reflect any new issues. +Frequently-asked questions is periodically updated to reflect any new interests. ### Is this functionality available in the Azure classic portal? The new capabilities in this Azure AD B2B collaboration public preview refresh are available only through [the Azure portal](https://portal.azure.com) and the new Access Panel. Try it! @@ -57,7 +57,7 @@ Some organizations want to add B2B collaboration users, provision them to applic Your organization might have added contacts representing external collaborators so that they show up in the Global Address List and as email address suggestions during email composition. You might be wondering what happens when you now add these same collaborators as B2B collaboration users in the directory, right? In a future release, B2B collaboration users and your contact objects will be able to co-exist in your company directory. Stay tuned for our announcements! ### Can I make my guest users limited admins? -Absolutely. If this is what your organization needs, find out how in [Adding guest users to a role](active-directory-users-assign-role-azure-portal.md). +Absolutely. If this is what your organization needs, find out how in [Adding guest users to a role](active-directory-users-assign-role-azure-portal). ### Does Azure AD B2B collaboration support permitting B2B users to access the Azure portal? B2B collaboration users should not need to access the Azure portal unless they are assigned a limited administrator or global administrator role. In this case, they can access the portal. If a guest user who is not in these roles accesses the portal, then he/she may be able to access certain parts of the experience because the Guest user role has certain permissions in the directory as described in previous sections. @@ -68,11 +68,13 @@ You can block access to the [Azure portal](https://portal.azure.com) by guest us 1. Modify the **All Users** group to only contain Members ![](media/active-directory-b2b-faq/modify-all-users-group.png) 2. Create a dynamic group that contains Guest users - ![](media/active-directory-b2b-faq/group-with-guest-users.png) + ![](media/active-directory-b2b-faq/image15.png) 3. Set up a conditional access policy to block guest users from accessing the portal, as shown in the following video. >[!VIDEO https://channel9.msdn.com/Blogs/Azure/b2b-block-guest-user] + If this video does not appear embedded, you can reach it [here](https://channel9.msdn.com/Blogs/Azure/b2b-block-guest-user). + ### What is the timeline by which Azure AD B2B collaboration will start support for MFA and consumer email accounts? Both MFA and consumer email accounts are supported now in this public preview refresh. diff --git a/articles/active-directory/active-directory-b2b-invitation-email.md b/articles/active-directory/active-directory-b2b-invitation-email.md index 033916808e2e0..d91df169c5411 100644 --- a/articles/active-directory/active-directory-b2b-invitation-email.md +++ b/articles/active-directory/active-directory-b2b-invitation-email.md @@ -24,6 +24,8 @@ ms.author: sasubram Invitation emails are a critical component to bring partners on board as B2B collaboration users in Azure AD. The primary goal for this is to increase trust in the recipient and add legitimacy and social proof to the email, to make sure the recipient feels comfortable with selecting the **Get Started** button to accept the invitation. This is a key component to reducing sharing friction. And of course, we also want the email to look great! +![Azure AD B2b invitation email](media/active-directory-b2b-invitation-email/invitation-email.png) + ## Explaining the email Let's look at a few elements of the email so you know how best to make use of these capabilities. @@ -39,7 +41,7 @@ We use a LinkedIn-like pattern for the From address. Our goal here is to be clea The reply to email is set to the inviter's email when available, so that replying to the email will send an email back to the inviter. ### Branding -The invitation emails from your tenant use the company branding that you may have set up for your tenant. If you want to take advantage of this, here are the details on how to configure it. The banner logo will show up in the email. Follow the image size and quality instructions here for best results. In addition, the company name also shows up in the call to action. +The invitation emails from your tenant use the company branding that you may have set up for your tenant. If you want to take advantage of this, [here](https://docs.microsoft.com/azure/active-directory/active-directory-branding-custom-signon-azure-portal) are the details on how to configure it. The banner logo will show up in the email. Follow the image size and quality instructions [here](https://docs.microsoft.com/azure/active-directory/active-directory-branding-custom-signon-azure-portal) for best results. In addition, the company name also shows up in the call to action. ### Call to action The call to action consists of two parts: explaining why the recipient has received the mail and what the recipient is being asked to do about it. @@ -50,6 +52,7 @@ The call to action consists of two parts: explaining why the recipient has recei ### Inviter's information The inviter's display name will be included in the email. And in addition, if you've set up a profile picture for your Azure AD account, the inviting email will include that picture as well. Both of these are intended to increase your recipient's confidence in the email. + If the inviter hasn't yet set up their profile picture, Azure AD creates an icon with the inviter's initials in place of the picture as shown: ![displaying the inviter's initials](media/active-directory-b2b-invitation-email/inviters-initials.png) diff --git a/articles/active-directory/active-directory-b2b-iw-add-users.md b/articles/active-directory/active-directory-b2b-iw-add-users.md index bae9c97ade9e5..cc13cd4c5841e 100644 --- a/articles/active-directory/active-directory-b2b-iw-add-users.md +++ b/articles/active-directory/active-directory-b2b-iw-add-users.md @@ -29,6 +29,8 @@ Assign B2B collaboration users to a app as an information worker in a partner or >[!VIDEO https://channel9.msdn.com/Blogs/Azure/information-worker-assign-to-apps] + If this video does not appear embedded, you can reach it [here](https://channel9.msdn.com/Blogs/Azure/information-worker-assign-to-apps). + ## Information workers adding B2B collaboration users to a group Information workers can similarly add B2B collaboration users to an assigned group that is enabled for self-service group management. @@ -45,10 +47,6 @@ This is the scenario in which this is most useful: 4. Now Sam can add other users from Litware to the WoodGrove directory, groups or applications without needing invitations to be redeemed. If Sam has the appropriate enumeration privileges in Litware, this happens automatically. -## Related articles - -Browse our other articles on Azure AD B2B collaboration: - * [What is Azure AD B2B collaboration?](active-directory-b2b-what-is-azure-ad-b2b.md) * [How do Azure Active Directory admins add B2B collaboration users?](active-directory-b2b-admin-add-users.md) * [The elements of the B2B collaboration invitation email](active-directory-b2b-invitation-email.md) diff --git a/articles/active-directory/active-directory-b2b-mfa-instructions.md b/articles/active-directory/active-directory-b2b-mfa-instructions.md index f799288de760e..2ce1be147672f 100644 --- a/articles/active-directory/active-directory-b2b-mfa-instructions.md +++ b/articles/active-directory/active-directory-b2b-mfa-instructions.md @@ -19,7 +19,7 @@ ms.author: sasubram --- -# Multi-factor authentication for B2B collaboration users +# Multi-factor authentication for Azure Active Directory B2B collaboration users With this Azure AD B2B collaboration public preview refresh, we are introducing the capability for organizations to enforce multi-factor authentication (MFA) policies for B2B collaboration users also. In this refresh, MFA is always enforced at the resource tenancy. @@ -43,17 +43,19 @@ Check out the animation below to see the redemption experience, as shown in the >[!VIDEO https://channel9.msdn.com/Blogs/Azure/MFA-redemption] + If this video does not appear embedded, you can reach it [here](https://channel9.msdn.com/Blogs/Azure/MFA-redemption). + ## MFA reset for B2B collaboration users Currently, the admin can require B2B collaboration users to proof up again only by using the following PowerShell cmdlets. Therefore, the following PowerShell cmdlts should be used if you want to reset a B2B user's proof up method. Note: To use the new cmdlet, you need to install the Azure AD PowerShell V2 module, which you can get from here: https://www.powershellgallery.com/packages/AzureADPreview 1. Connect to Azure AD - ```Connect-AzureAd and login``` + Connect-AzureAd and login 2. Get all users with proof up methods - ```Get-MsolUser | where { $_.StrongAuthenticationMethods} | select UserPrincipalName, + Get-MsolUser | where { $_.StrongAuthenticationMethods} | select UserPrincipalName, @{n="Methods";e={($_.StrongAuthenticationMethods).MethodType}} Here is an example: PS C:\Users\tjwasser> Get-MsolUser | where { $_.StrongAuthenticationMethods} | select UserPrincipalName, @{n="Methods";e -={($_.StrongAuthenticationMethods).MethodType}}``` +={($_.StrongAuthenticationMethods).MethodType}} UserPrincipalName | Methods ----------------- | ------- @@ -69,8 +71,8 @@ Note: To use the new cmdlet, you need to install the Azure AD PowerShell V2 modu 3. Reset the MFA method for a specific user You can then use that UserPrincipalName to run the reset command to require the B2B user to set proof-up methods again. Example: - ```Reset-MsolStrongAuthenticationMethodByUpn -UserPrincipalName - gsamoogle_gmail.com#EXT#@ WoodGroveAzureAD.onmicrosoft.com``` + Reset-MsolStrongAuthenticationMethodByUpn -UserPrincipalName + gsamoogle_gmail.com#EXT#@ WoodGroveAzureAD.onmicrosoft.com ## Next steps diff --git a/articles/active-directory/active-directory-b2b-redemption-experience.md b/articles/active-directory/active-directory-b2b-redemption-experience.md index d5643768bc771..4baf5b3de29ae 100644 --- a/articles/active-directory/active-directory-b2b-redemption-experience.md +++ b/articles/active-directory/active-directory-b2b-redemption-experience.md @@ -31,6 +31,7 @@ Azure AD B2B collaboration makes it easy for any email address to be used for re >[!VIDEO https://channel9.msdn.com/Blogs/Azure/admin-adding-guests-to-a-group] +If this video does not appear embedded, you can reach it [here](https://channel9.msdn.com/Blogs/Azure/admin-adding-guests-to-a-group). ## Next steps diff --git a/articles/active-directory/media/active-directory-b2b-invitation-email/invitation-email.png b/articles/active-directory/media/active-directory-b2b-invitation-email/invitation-email.png new file mode 100644 index 0000000000000000000000000000000000000000..93703cf3f0eddb45df19b35699d893ed8d0b505a GIT binary patch literal 71312 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%0DR~2yrBrhHwb*Axm5|rm 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%0DdsAT?A9LJo)R)F8g-s6CrLCAst}D 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 literal 0 HcmV?d00001 From b5cd321f3cd4c415f5e97ca550b7ab1679324921 Mon Sep 17 00:00:00 2001 From: mumian Date: Fri, 3 Feb 2017 15:13:36 -0500 Subject: [PATCH 71/90] revise the images --- .../hdinsight-domain-joined-architecture.md | 9 ++++++++- ...hdinsight-domain-joined-architecture_1.png | Bin 13373 -> 81215 bytes ...hdinsight-domain-joined-architecture_2.png | Bin 16884 -> 98364 bytes ...hdinsight-domain-joined-architecture_3.png | Bin 11715 -> 71111 bytes 4 files changed, 8 insertions(+), 1 deletion(-) diff --git a/articles/hdinsight/hdinsight-domain-joined-architecture.md b/articles/hdinsight/hdinsight-domain-joined-architecture.md index 531e1ae25a19b..0d659f79965c4 100644 --- a/articles/hdinsight/hdinsight-domain-joined-architecture.md +++ b/articles/hdinsight/hdinsight-domain-joined-architecture.md @@ -14,7 +14,7 @@ ms.devlang: na ms.topic: hero-article ms.tgt_pltfrm: na ms.workload: big-data -ms.date: 02/02/2017 +ms.date: 02/03/2017 ms.author: saurinsh --- @@ -36,6 +36,10 @@ This is the simplest architecture for integrating HDInsight with Active Director ![Domain-join HDInsight cluster topology](./media/hdinsight-domain-joined-architecture/hdinsight-domain-joined-architecture_1.png) +> [!NOTE] +> In this architecture, you can not use Azure Data Lake Store with HDInsight cluster. + + Prerequisites for the Active Directory: * An [Organizational Unit](../active-directory-domain-services/active-directory-ds-admin-guide-create-ou.md) must be created, within which you want to place the HDInsight cluster VMs and the service principals used by the cluster. @@ -76,6 +80,9 @@ This architecture is similar the architecture #1. The only difference is that th ![Domain-join HDInsight cluster topology](./media/hdinsight-domain-joined-architecture/hdinsight-domain-joined-architecture_3.png) +> [!NOTE] +> In this architecture, you can not use Azure Data Lake Store with HDInsight cluster. + Prerequisites for the Active Directory: * An [Organizational Unit](../active-directory-domain-services/active-directory-ds-admin-guide-create-ou.md) must be created, within which you want to place the HDInsight cluster VMs and the service principals used by the cluster. diff --git a/articles/hdinsight/media/hdinsight-domain-joined-architecture/hdinsight-domain-joined-architecture_1.png b/articles/hdinsight/media/hdinsight-domain-joined-architecture/hdinsight-domain-joined-architecture_1.png index 9864475d4e69789659e0cb920a225e022a6502f7..36e19a6373fc4352adae35e183201179eb7ae8bc 100644 GIT binary patch literal 81215 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

fLRj32%W08^qXU#ygswcqCt?^VV*M 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

N7j#&8IKNNku| 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 bXejiA(GoPzIV#})Kv1%hN)pv#pM(Do%6Axw diff --git a/articles/hdinsight/media/hdinsight-domain-joined-architecture/hdinsight-domain-joined-architecture_2.png b/articles/hdinsight/media/hdinsight-domain-joined-architecture/hdinsight-domain-joined-architecture_2.png index 04b74d9acc795d0481484c33aa32d7cb8a5d9a89..b0a1690897878b005db0a9974780e1e0c78ddea7 100644 GIT binary patch literal 98364 zcmeFZS6q|X7d9FPN338}iqaGurAV<*0|BKeBE3l$6r`8X3B^GrQgx(CLO`Soi1dy^ zL_tFDga`-$0z?Qcl<@6D{?kEHTIdSK< ziXH@Vcm@Jt8aR9iypvKmJqZ3g;(q%+0s;{eVEi2L%T)A%K+Z$%sN6L08=fZwMm;nR z=367aRBrzz`H>0tBj%I$B8&mZMn z4rP~0J2C14Q#*4JmGwa2ImV>X>z&LWSD0ZuH}#y4eEnFKkZ|;o$54Kgg~y%6#T&A$ z_~Y63av>`P4^|h<`c@0g`mn5>jhYIJlcR`yEdsTU#62`LbOg+I?_n*osDJR^UnJ!J zko)ho%KyvP$M0!4T+J-i-?q@I=7m-kB?8>A6`P4H#nf;iM;Scgr%Wej`;do zAe>(;o)?ZqSn7(HCJfoAtekp&KN1x^LClvWiMFup4=~qsSgteW84F)nleyKjFmH-6 z&vT=egvf?Ap-k{EGp;+zmU;iu$;)X>b@$)jebXFloItcjuns4EO3HynifHKgxb$!6q^fYSpYBi=kFay&k!8( zw9x}CkIQpY%g%|~OYvK331NgjOUGEWcl;JjRwUFb?U+zz@*r2`Ad1kb+T^U^V0kCK zUP4%w)Q+ZVEcssK$E%QMbHu!_|MOcM5}bd?bz+v!{6#Kq5E#8-oFg7}4@{Yayu^?H zvWU9(h$HeB=e{^3_!*aaCfSItX`6jaqjIf2^JtSTQfnEo64;_`VcEyP%y<@P^UP^;Ri) z18;v{BfyVO-?6E zaZV{y_%E(Gk1njm=$$U+3LZkC`oa>fe_PEATkYU@blpnM?nJ(-KSd~e`6~G{*a>rK z?=;oA(eJX@IS;J(m$47}>fW_lt3sKjoKOxH;Q`)63wqShSJ{T%HX5vz8r0j8BSyj> z@P2rSKS2X~A-dyDJZi92wrK4GMS-U&qNTzUf0@~f^`(Q|Xox{B2VN?z{gewKiai@n(ggqfwL)vmT17Lm4cVs!}} zn7D2|Xj+xd`-Z%Ey9kolyErk92Z_4eP0LkM`Uf!qU48z?_ogQybkHm9`V>o3o~~_c zY_!v65;ctb#iPy$mW8_>N-ap-*0gO!SY^ujHcyS&ZoylJy>rA>Uyj=tgmXIP=H!!^ z}^I$8#HZ#B~flV}rCX)WNRP7%`f?N7S&IM=48 zRbL0#;CMQsP7{L&Ez?u5j6zW@#4;vzr7z{ePw3(OGYm-lholR}8u9D8ycyM481Ad2 z;doN~1U0x|WixY7QE~vOVy+>Cne{mOK`VCrJbuzs$HN7!&-TZj6p#M{_4;8Ar0B!* zev0&5s@+gu-MPdx{LmY@3NRNlnb!!oo|iK=Pk7`l6WwNZd=*X2^(6TN`ynCW{FV`f zR~(Bx;WzKC>h)~uNiMexp{aKbpA?{}rg$1scQIcw=bTgKWMAKk3?Zue>XTK6PAQFD zY(WnV{@m7J1d$Eq%LVnw8+@MkgQ$V0Y2ti8na@8@cdAW|zgES*^Hx~yG$yYG*bEP&tT!maT0_;Rvin%gniQ?oIL zGDn{%9MLyZ)nzBkk`O!zA^v#@1%t#R#5t4qxH0$d&a4@-z18(+9;A969yc!@y`wLd zjT0jqmh?H~Xe;Znh_&}lA^E1R=51B!$2Hx`<;MG5C+O?)P9YvRd~I=G2t|}osQVMJ z)&mm=tkbNx+Urng8nx-}^LOitIY*JG@1-IySsPWFU;DlLLHDC}1fn&6#!29Od==Ua zaXDOEF1OfU8)2V6$p1px65KO89K3COYzu6SI6gU@yNUm0<$bwW*pBAu&V6;ydK1c0 zTH!W_W*O7xJ@PJ*rAq_nnQ)i2NVBomXuUP7$3;}FGKrGDJ;EC)lrO#|w{&?MX|^!# z=Y1yPP3Pu~+5Q@u^SPy~c?(rNZ@B}G=AW4&cH~Hr6_5>HLA=IM@bdol$2WgF9wjAa zQ^Cbeacu$bA1jw}POU{;y@GNacXzF@FLMhPUECN;oOAUW(KTP%ta8W|R}J?;yv$zk zGClp4`{K;QH~CuXgruC!8!A)328{0E*I)5u9Fg&z7KY#5l-1&5?tOBTw<(Y6mmW^_ z<5&M&fCZ?*t`t>Ck%B zR84XhZWvp{R9^+kV`4YF(81a9+Xkl=$kOtq{z|f}%bZfT^vIdijkK3qRI1r)IYYj^ zB`U$x*$&Jbd(EtIRX$FQaFoitK_m;F(3dDPRF)nwTU4>s6cS~z=CZSC%y=G^TOX&) z%%$(SS%4c0{fsPS5%kiZKCO>^{+^pYnD>naZ?!d8N7&mnw&Y+#@pgQqCFHEUtK`lo z(jmoYe{t4Ffu@w@X^ju)YwTP>TnOMh@}N7r+;LFP>X4C@U3RH++k;FTN`{yfwYbor zD?Kdo_rs}xlHkJ~>%ggmvCKF}kJm+0{jz4wT_h()khs9#Y7rw;m^S=bB4Mb_OGf`% znW2hGX>#!GptCwb$zGyaEy+bP;;k93?+-EyF@GzMaKND{$5%MnDP|&=mSa4FKu}mis`w6`c^2zOq}Ud`4I> zc2pw2eqNWw;hvdNHf_WB-i7|{!2ss;vOBrj%DPc91}y&+@OC5W7fJZE3b(b;DOQjx z)Rh+Ib(GM$m!#|1_GT+l7L~@d72gCQdEynkA97?cnL7tO21(k;x5F}`S>w|`NekI+@ z8FFggMaQP7LG>L|@nQEf(6<~V;oN@~B6+3Nj@0<_rm&ybn?RDCTIZ8XY&^TrpwTWX zFO>usH;3F{OkQpQeqFZA&8BYwcNed`D>PE;91ktXFUJ z@Idy3Y8{WoRBWg%{QaH+bxuj(L-E50NFEh8Vf(xC;;%HO!1$(jJqP1}O3DtLc^wdaO*HkCbh?imCLwc2NdS4%>LKWiL=uK#UAB_z8J^F_dW@_hbmQMx!A@_fTg@5!o2i}c6bg5nwxM__5MruzNt-uLf~=VT=XwB6 zw&pC<{>#bE9D=MBFxrzN#`C*+v)3KDZze52HlY?P%Gd>n?9In|?#N7Icq^ug%ryU1 z%r`rmtLd51mn$JB(&aPFWGCGlsT^|kt-k2X`_*w5i@6V=2fI>6<+f}&W`PJ>u*<^guuz!(%Vcc;28ML-3`)S91V1)1=z7Jrj1GI;NMA=9hs@L%5zxjQm# zMyz7lGdeT_f*gdg(SwSQy3AE-Ee{@MH;wCfHh2QTeZzYwV4i2k<`Tb{WMZJM@pDNw zUBvzG3HVoxV99KvDYQ_!C4%po8srKPUdp`wS*cXJZi`9gfRhzAWtn~U)A#52+rmv~|J)c1q4s|KtR&FsxSHZJq_)K5+%@Gvg z<=D3a+OMSJNl0K7@Nzd%A9by~yA~D;zpn0SU}&zF0n~kvEn^@qjI}AL)j<;6?!(C% z%xp=^BuS5W8l|_HbW`Ju%qpE;g3SZGD|J5xE0&@H=*gy1*LpuVTXBo)8Qw+s_Cjl zD}C+d>|^9XJ*7d{ao6lJ0wM~^)Pi!xtQ zIeh@sw9miI$o{_4_o2PLx)1~+;SLNLRXMuSX@{r9{d+Z+04Nb9uH4PsEfPGn_l+MC zAf5pfB~i~5g^Ik#S^x?w!L$F@NAY^5F?HkU0+dYl!@Uneo91%(A&@jaU^~#O#Oc56 z5%?4h1}+1E$h-#;2h#WfNIDr!t$w@rCWPhs-i;rpK#Si1(BaJfyU=}rV*eKiTBh&G>bwtutODxa3l1G_Lu22t>&U*Lc8rAN)F50u6Nl!Y@nUc7cqTwuap?L(fTtmn_K z+0TBfP^es`HWVUpRNy#CMFmO04tiFoM>y6616{R|lr^%RIBD7n*J zE9~XJ(3BUz30IsyH_4v3^&32F)HyN(>3l8pzk?|=1{=uw-@%SQ1A|#4cmMBT?qD!4 z=hpunOo=hrE9F!Fv!+98U`I`|HH%!4b4SLW z^Mac30_l_!f2XzuZ`_I2(=qwh1 z!C)E(e!R>#lOfSwvwpE{;X}3XBCR_n-JI+ADCV^DuCBz~wk-O$R|4wrok)9l@O{yJ zgaKj-_D$yJ+$lWmXUXLWTsB_}2R8U;<3K%P)u?uv!+4_1%`(>4ZIqYnLnOQ~E+h`q zwc)!%J(RqA`*1mQI=&?Akh1JsPsUIkizy6cTuG>qE(DkDagu z!Jz1)|0>lM*Z}TpJ?HQaepBuFOGQ@xPBUA&nl6T`asP_)LrYKu#eBbRUEvGF)sgwhZ| zq4Y1f`E1wkt^}q=*z+n##RUxxy{Ie;T2D(n^6#Y9lO~S-IGLj?Lu%1dfGP&e{d`hX zgIt~RBh?Y3+Xkf86ny7rUN809Vq@&J=?}Tom(N8GqDY*rCNsIeY z2m&UO`l_S3p@g|5Q%F-nN_HySX45~#Bu3kJIX|qUiSturst^) zqxP@nzu2Efe)Ug?=?2wB7sSUyfYW@tr{sAUN^G*MqeoCD)@+|sZLFTxJV z`g$uo_GWzY+j{|fIX4Z$Y=-_d#nhM%>_Xzv+!=t10-qgc$9BTv z4FF5=f2kf|HsxF<&HuxHDD)FB{3L$wV<0%lul-;W#nuFiv=l73t=7f3Sp`;2Av*X@ zo|OCA{^{AC6XVQ@>(=b@_qY(iIxX=K_lrVG;Wd>68M}Tj@BPO;ELS5~>fUGzSr{C5 zPfJJQ*#+*?qK`nBK!ys@43~Qjwi)j8(OYS{j=W1$>i5|Bf@OU)!hEC5FkbC8={k0I ze%80o5)xoID&#NZlbx6M@f;MSO$msx_kJOhf0J)<%G%FFD8=ZoKzeej5PsMB%ij#M zN7nDM)b*jMRZPRB$5btZDx5ggcS%}eY8wRrtf%n4N%$PS39N$#)D;d5(JnojJ6 zw9eQ_09Tekq1m2zQjLX4*HzCk!Z(OgVk_n|8E199$GpoSWd*77KAtyKG)tEWUh3ay zzm%ppBF!cXSJ@#iX%j9>rOw|Ga-I_>juv|{Z(DIC|6aFTI^Ee0%M{eBdF|7+)HEJWp zDEu;z_nN2G4=kHKx>EWo2>kk>X%HzflMW9L|{)BLb<#i$Q=oYJ{kL{JA zjZa#!C6TxpX$28Am=gfIrqKguBq7JY0El1W{v{#cf|knKq=(_V+pj|e=quuMkB&CQ zr604ve>l>%jmPTymp;M=>$x&ghVt|T-cge~Le^Gl9AS`0IE%Td2W=hNpG%E0kJYuY zi4R2)U`hiBJXg^B?5o^cNY(qQD({ZDhIaE?$hIXN2rcBjH~S5ev@9!L!y)1;Fr6Zl*#L| zq*cpdrh5ySQ+iypnPK%kDZ?ViibI5Z%LY%>a_5zQ`q1`}a{=GI%n?bo&z+TbgcFVU zZGhZ|r#!Q>##n2D%-5;Hq}pUXQ_&!H@iX2T*pAg?y`jFf^&dAIiuE+2Z7bZ)3{P;b zQO`>JL#$+5MHWxgcu4v*8Hn5~YS78!A_Z*Ja&E{<%y%$_Rx>pB{A+e#1(j7nm&XRH zp&cFaCbaEu>Q)iiyjxyKY8{arFtkow*Qwo@?{w3{oxNcRWC>bY@@=winQ{F#A9z}JO!EEx@v6<4gM7_NqP!!HOZA}4 zJGr1P=;&1_mK|5kVjFd*idvO|C#ENS`!IrHJMc#M`aKuY)ZmGs_gX(lx3yP;2Nx!f zz>0t_-R%ki=whwe0+loN=el)dwRieG!eh;@O0?dbaOJhRpgC)+MV<=&LEl0P>p~W6 zM$?8oBw8H=)R%JXhei z{$+tFu?%D(2;}b|Sa2nQZnf@?x0$!JPN6IpfKF^;jY$VmrFOI_K&|>ayne%e1y26o4NCo`=5#JK zISXXPO-JZvB-9|unkwcXU*R#R!L#WDLCmzlL*-i@SK;uP5xPZLo#>)l}U&(l0 zoapx70?+uq zju$s7&>nPsuii{U$;2bz-5ZgpM4MfU1q6=Jh>2^UjiWv7r|qhOPC~PVhYta}y>`nYUfq6p?i~R(f98SrT1rqPy$314LBiRXkfViBv&5n+|-NDE>G#QCBvU&Hqrp zP~S|n-?wlj*}W45^M)}8Yyy2@uoxtzXF*;ZOnTwB0gL%!+~EDoK)*wARoZ5;x2Rd2 zkI@S^?)cRDPWsettO&R$%Spc3kM-@X90TQtuEy@5 z-s2Y0OZJ|4ktx_9a922Y;?yzZT^=uqIC1w>@qYcjJC%CxNd~19iL+m>1sZxA|Jv*Q zVWMS8z!qr}Z)fv*4uxKrwKHf~MjUGz&apZ8)Dtq}j5+p^b2fd+qJbA`ufda+&qhg( zW`(73^+zi8Xym$lNJhZL)FImGB(cbnn4oev`|uaTB)J=Z1OTFj*%e6`snX<)HrCT@S{qz2~vIrR)njBtO2 z{U&b0FCo^VPZnMtBs@3yETZG{YtjA+Q{*MI6XL`L$6vB?Gr(2702Q5%ZOD@=7H&{!ICtoEGm;yk7#PxzgF4=5WzxqY%Yq;hLG zHdTKVH?WX%ZK`H+n6PRb?0Ql^_=Ih;g^1YkL~-ZTlr-JfkR&}-opjokXGzudg0~7E zpn*;=#3NuIp7ce621snGSjDO|E>}-~0^=nIcu)i+es=%&#Eo)Eb!0 zWCy;<8eCo0X+AKXtUIr-xLWMcV03wgduEdgvHk}X=)Ijc7}@3G=+F!C27m9I3m8y0 zvJbc!iZ{r7S_iY zV1M>_)REl16-@Y-sY7qiu9lRiI2QmL*%s<>=R}Ns>#nx(& zuRMbx`gX@{lj}J9Pf{TgGn5=Hxvv8v^;XQMcm)$m%;{t3v{{LM7@_~|y=z2eT7?3; ztpN(%|l~q&czD~e+op%mAc7QIpplke8|6#d|TsgW;GliswLgP43lLi z(CH}!pWvb^TU9z}E3VU?Ebmi3AC=JrsiWh=VE}gkZE8;3ozSQ)_O?AwuJ=U1=rc|f zT%fe8@5&}es-Fzpb7JG2(di33p-oO?iTQ_#9Mk=Gr>>obCT`AO0e-1QPm`w``M~eI z@^_|2NPPx7XfNt9`#{)>gc@9R#-Bt^QI?M+59d`abme-6lhi6OZ`g{k`MUSf9kP70 z%Nx;on$Nq`(D^dhO$X{aZ27hYnc-{n5teM&vi7NKuk}pj)12D`P8Y1*XH};KexOvd z?J)m+s9Iaqg0GkKdHN}uDVY2R19?`u$DQD=RZ?V8fA!@{JY!X(ql?bfc{MPYhp+u* zt&pEx8#A^bP1THBR;_x$r+XRn3H3}JH*3r_5uL9lZau1EvKQkQ<7gvSM?Ek8&KoCg z=bA%@^s0#Wn3V-AOhATDfvm5+AgR{jS~V>d%cH~fpu`}?+re0j@607m2p70?vy{mTNzn!aQIbp z&o6obJ-d3iK2SPl%-4O|>oR{i1-TJ8v!c!$jY7HA`XWw6)9k51n#hcXkO4U)K3%dJXSK2LBzOVA2hcbgaekysgC zTnNKHQ3l|gbregW45`ew@Wey2!jKO^*0-~-?pJG0RPV7Laox`b>mJMY*kSR~ zJDBf4l^z z??u1FUv8jw1@&0OGYa5p5y%`Udtd1dN7QlrLCUDf{Yx!tMn;7As)|>+wx*6VX2)Cw z?PMB4V`&DdV4R*DAX4(QTnm(#JPxt`P9!6WrB7b}N~wG{W7GTG#w_cBWByGU#q^9r zhO%5xap|(abNWe`d|QTI=d>Hgt}QiVjb%v%aovvdT6Mi2IH4k$yA&EXW`!8mv%xjs zd#rJVvB8{&N#DX$S(U)OGIOvhN_uw{o51jTR9hv2FG)I9E^W{#V6Ql|sME}30zoSTcGW@oO>L?vO^XdO{n?UmN576 z`zemw2Xa!DQ3n7QK|O$$zd=V+R<;@dgN4LgiLLW`8nYZ2kT-Hz_42w}q6=X-?hdO< zv**k^;_Qdk3u)0pAg;ji`u>(|=@rvL`E~%_xYsc7CU&beH2Z8`JLS`n(d+^yJoy1S zJ2>QzsFwg4J$wWR@LRdmEx8KHSTxMnw>r21z(n5h2+P=F1pIUy?*bIL?r ziL!7_*`T88=Uaq?`-3?$U(~t|SYOf8n2H%i!PQI!>lG`icj(Sn%lc^W?DDyM{f`^L zypPoFs_scjKXZ9XW!tK}apzIDDiG<&n1hmi_g=EsgS0Ft%?XbT+tkFy5yMWGYBL>K zWb^jJ%R+P%LDL5msWX=}K0n}RwlfuRpE9xt;y(<_mKJAT= zp6*=Bm}6-PrgU<5Uz4^8x!n9VkF_x=F6>VyCQgS31>uycNVbvUVUo|v2vn|n&A3Z# zP`Ip$JuCMk+mn?beQK$rRbQE=oPz*6sY_`XscOG@D|e?3eqt}fa)1{_P;+U19UKo@ zs=DoG)3TNGr+`q0vR6HW=9enyZ^7oLGB#fcZ2s4ZEdY`(jYW?vg#&l$R-Nw(N?sjx zQ8`h5ez89HiV-KkswM6AQL*i#qrV||Ft5}{_;fsnyVmbxWMHC4+y@w zfF{V%r`#`|9Vf=-tLpPt=8Y6RQ!Swr6MsLZv3%F6Al>rvOE2NT{kc6o<+cj@qfsK^ zKKEoFAXGKeBLU3nJT+S|9NpU0zCIeD8u%a`=euA&PZ5+?L_zsBXAg`1-8Bh{hS3*t zfX>mW%w?CJRR2E4h0vap^d`G~t-nxH&P9ObZM(5ERc}__0`oCIaei&-2G)4W;m;K1 zdt5luQd-~g`j3MP`c-heum5%Y`F>e%qA0{0bbuvPfcyILaY5RR_yU7r-4%Z)@Qz6$ z6aR%C`4n2i@!d*Gs16MRv9~l}GiUh)3uUeZsMPX?)!Z%Q<~5a@DIAUK#?5$gE__+@ zT}oKS42Wcy*kM~Lhs-_9?O}o`$#LC(W-LNFvzL9To9F+|dFE;VUb03q%jQd{c#(jG^g4!vi zu?yp0A$ZW)rwu9L1bFH+H81Cw2v0BzYwPV`)|kPsYq^K-6&NDvqTV_!;*tf3l1Ojf z2nu_s9Ki26PmQCOo+4a{Ra_&!zH16%d&_l+IQCdvm0UAOvRVIQ6L8SAXyPE(=t#_t z;%qLDr?^Jjz!KUxnp6I`6&;BpXc-rq&-XmDxxXcLh&{G}J5W5vRgHYC8&uQcQVUNoVx9s-nz=;Dc^;1$V^>-OW zO*pAmDtgb{gcOVN=9>FMn_?z66=d?NrRRd=IQlN&?oR2tMY@02(`Dr%j^qnhx_yQWdm_qrP8sBr}0UeHj^F0$qHk#z0@=TeMc2;XnW?8(#3(`=9FZn{5 zfCWnX$XVliLkPTzGpWmBZ)sf=)@&j4d ztGiqsSj@k-EavbRBn%ur8ujRCE1H_jpLW$s7(4ZLTkigMBaDbOV9aNh8s$Z{0VFI> z2(M;xiOEf%+<_|UUA$mlBd>nBa4#b&AQ>+C*PIJv(hyO$T*wJw)#`H_1@w50S%B$8 z)ZOg+B0KE5nF|W|D$A@Kx#Pe@ChZRLgdRAJuaYVU%s>WA@X9L+7)W#kjG(0&!f{{P zW<6%4?|@4WgCv6w?*r!{;L?9jn1W(AZ>~3Y=vqpfXMs#T!6%|HJTe2aQYhcuJbbcW zSF#=NeD&J5XSxfId%iy9vT$B+469ObUQZr8ao4Mchm2b*x~HTdZ&e(^ap|3AwWGjV z*R&aca;gbycMA4OiY5OtslPi`?rbQ?T;1yRit$0b#{;6xrt5(maX^eX4xH7-XIVaH zA|pu21r+?A_?zh{MXTff3a4=dZ_%-jynHNHb#hV1764p|k}-_>r7!u{rvR1r90xKi z6B_iYPnY&tybvi49N2A@Nsw)v3@qn_2c@?cyBx2pmwMlL64Fz|S!Y*15g6EMBvS9h zVIwUe0c#C%^?J&#|MNSJ-W6CLLD^k>`?_4rrLhlmkcQ0`hQ&zXLyKI~9(RNa;?|tt znWepXJW^5D&KhzR=eA4hzt8V0wRFPycN?d;>Ft#qJ${yK0(u1;k4ohth)0{~3NnSB z+*5G2)j8*@b-lcr= zpvCOA`hIWO`uH@zjcjIV&tWnk54DPeNw9a+aYH!-Y_eu&+fg$4f(PcNzT)vQdJvgV zcl@ulOC%%Yqhhs1$wm@4@$7@MG)Z`(+KS{i9}`cj#aQhMY78N*fX(G z-EepOQpS4A-Pxs$pT4Q6(=D)L!{$|0JR!@|eU%=8uo#}YhV0cCVYL1_)a%?P&m9uu zKA&H+5{}J#P29B#6sP}kq5$M_m0qd+Cuq4c9#J~r+?7vu!JA0bGj?$^ak`Wzo~&^q zZ4Bs#>A$^f@ywRV!LG4e7eE-Ba7uJ*PO;D`zR~&$ap|wL(_Ln_?Wfb3C!SsAi)i6P zrjb^IS4Su?Sep7X5gxj4@AJY*}~dJjiW&$ojrsaj*aD0@cu}0 z*J@roV=OLD)7frp(P~~|NwhW1??2aL;XchNa&``jdk74W@ORcF5e&Mn2Zh4qdam16_hS{vO*4bjH%Y zffWP_@zcjE`-z81E7u*hMARv;Q&_*Xu7nFb<7hn3nf(C)W-_SLztdE5d9nx$=&?v& z-|cp*-(2tg&DfYhgCyUw;S}`pm*R;@bqb#;=tj>3sZW49|HT$X@gvD&9KBd}bQZbZ z!^$cOaDm)d1*yf^Li!>@wH4FY_cjrtWY37N7N8PQyjHln+nWs^_K+d9ZWVp08Q6W; zVH>NsUB_SvFxRgGdc{NyHsB&~M2;$8_89<0_(bB1%vdLITxV4{+0iaP*cIp&{L7~{ za3^-+3$q(BaK4LK8#l=sVg)!0ub7Ct#_*+A8*>%J*n)MpSf};fE!0MoDWvxfK-X3} zbJ5hSe;%BhL*QvBy#tWa{F^oBAW7!HW$|r}RvK-8v)68>@*ISXZA|a-5|Na3klZvVzG0Zv=FF#}23i2HqP^8s zPC3D^Aud_^ZQ4(6_{#SzOSbS;iU)7%cYIOY@%1;ap-(ofq!a~DQ?Uv=U?0N`fx`2P zo!PYjQBz+SkN{myKp;A}GsX~TF;E)77eGv!?#2dfzbNl;BUbV5((_4^WFkGf)m^Iz zG}Up&^&S^2zcp|JHb#ZT^!3XzM@YxNmYIzd19l6yqV>UdMM30Ulz9D`RoMy9k*_WD z7OLNf$HrEa*LSXYi_0(R)c*RZJUP1BFg1fP$&8zxY+`weLII!n4}<0C;shLkFc4P_ zeHw^sq9+!Ra0-}jjMO6(Ed3`FCwI);ylTITNLxl5k3Ht=_Mdx2L6NlKGhbQ1#-bhh zK5ov9?DE$yM_VoU`7;0y$T=Ve z0Gu@zHpmsSg{=3)mIl#9h#P%{pJh)_hyjz0N?$KygTBAw3yp>Q$n%E$dXmu50Mui$ zgGjRqG+lE7*H+R#jfi4*fr&;=vW_a^3A<6}8ZVUTE)7=O{Liu)(<^|KEhA8;fs`Y) z6-Sq=0K?{7Vv);A?L1(~OaQGdM~)qq3-j0%h%FDI_Z96lr6$$|kphsbn2@eDNpbnB z{SJljj6?36Q|JMK31p8lK&j$&U6nN)0OLPSuR2c8)XPApf+0&6zS8^ykes572*~+h zcXN^8=`LH3`N!nO0_?mX2QW0)vjjdd_wtFtuE1#I@`L0}$T`^p}rp|P~rDniP zJljI)@tcnQ6D*)x36#NhWm}VMjaxPIKTobitnUogBkIZ@eYpN-%hD3F8MD_|9lZs7 zIhu8>ki2-=exI5PDFvrmb@Y7~YZX5{stX}UCv+%KzZMrSlGZRh%v}4vBgqjAAKnOB zF3z;kkpb6eml{UJ;_C|{z}_Qt7H}XX)ZDCGcw%IiI%l60kOrBw`&@~>KK!mOL`=k_ zAJvDvTRu`4MWMr4c@meg>z8BN@&>fgj23(5k1@&W^+i(%w>n=0@Wqs%2ptY^ zau*!-40sF<#^tpPn(8d}?LsX#z1l+Unnpr(KB61oUIkgarO7z5=O|2VM zzSOJMS=!h;TRTNW-RuT^HpvGd!A zfn%I*1Qe=lBFXuLHOwwjZrH@Cq|7FWxiFttZ8%TCW$m5m+>&vF6~+ny27s(Dbqt3} z5*ky~4+s$9H;M?l&-0K+cE+4fhes5PRltxSkIl4gN96d$oQ$2!zz=vbK_+bu^8Dz8 zd0wo)QRv;^K~ozcVHIevgNi19W{8&|7yH);j8^n3%K8G#7XYOznl61}=c%ufv8ar7 z#nFLfzL1TriC2>aMPb3VwFfYY>q57p-^bGxQ}o`DeJ{e$)$?wN=XHFc zA48uO$-H4@{-f4>p6nT!hzFUKx!1I2E4@84&N7A&Id_*$JXvIo?CAlm8Cd;(W~w{q zx}i5R-NE8+(Bl-sLw1cDcIYy`yS_-E8{qUa zN|5MM-P!cEm2zJ^LBSnIc#~)o@wbfV8lrfxgXS8m>hYj{ajW7aR9t;kbw`*ZpsEq8 z_a>Hbtc%b~o{Hn}`=^I6Rq?jP=BJRyyhfTcLUDLrYrbn`+o2X=>6xmzDzZMnF! zu5d;izD0GhqT0KBzS(r`p1zr6?Ph;prGJh0%#5uz-9X-dA{_Wt1mh*$J!Q6_a5Rb$ zY!T}rEiKHF`ai=G0GW3G?*i0wRV2bz)O^C-=EtA`Kc3;x)K}9DgCXjZRm)Bh4G2jE zEi%*t&aV}}M$U{_P8AV**{|oZZZ{e8v%sc7OKPEKuL175h!T~9wsO3cwp|y)PhXQ~ zt7-Zwof1ocnS~oxwCZ2-sO6BJ1qWb41N_p zH?B9|P=hS^f;|9~JT}v%z`}y~e@R6Kz+3a1#y~1yx7}cGzc;n$0p3Aj{!2VVFxcDJ z$neM9spCLesBLYhL$U`sUZAN3?B2Hme$Xyl;~PuG>%GV(I2vtM$SD=$f4x z2J1|5ed%Vq!HHvION2}|UtU+-OF3u+Oqq+r97GAtS({&TalBaI4fa~?HQAumE=wvY z-o3Ta{gPs^(1Odd^~)P9D#!{N7G5kx<{C%~$kmcdEAN)di+&2g(+p^0cr+CpMnK{= z*$+v+Lq7AgSXeJIp5;AFkgd+IF$e$|H7 z#?0OMIm}&F1@0lET8c_u*cs3QBVujZj|XzhM%= z=QmDi`KHc7x7cBjN2~N3x}_LNuv^3O!mC9Rp$4WeU1nH9B-W1loWTHJa0;s#A`Yi_ zVL?`>IO=o1h0jk8o=kT|2QN}eg9tU!t}T4Q3w0igYl_s_n}jnQZfzWgYR=N@km=q9 zgkNJpj-&T#P0dZL+=gSp9}}p0aAH^S5;!6O{&Deew@`}%Ih<;2^*Kt410QTU*Hr7x z`_f#AG#1!xvF5R3<7C{kMH%a$sT%pj=YC_7d;`fW6l>S|jNptmgpanpRZ2h^_ZAF_ z_wsaQ!yKQATslVZ(q!2(7biRlcH?8s;{!Qafkn{mk^d~o1n3NMCgj{egcY9hB|c@u z#R@V1Bzqz-b?aFYY*l1w^t2)m;P2FtC^Zb)0OKti<^wNLVcGrXN>lW?@h=83)#Sd4 zLf(z)SOuE?QqyjiVr);x&MoA_X-#?huXVy!;NmxIgmzW~m*TdlUNOPpMDgR=nYK?&2&w2S(5#_Yc3e2eMjIvsu^?w0L7ERXoYC|F$6!y8u$x>hly)?Sp4vlN()I>K{Y)pc;L- zGQ%d;;Q8Xc!fK{Wof2{pevNwC16bK&0W+c* zNF*9~A6Vr63JGRxU%d7S$3kR!`RnwOHV*i}^V(>#zSOh6wD>l=tgMl$u_A?0F%p!^D|#b74zG>CYc? z=1X%bGlI(|cBnk5`COul&KQyS1vRX1;~IiQOY2yT%v|ny0SPTHD_^})njb#&U%X|U z3Q2o7d)acEhT7QiC}@CopY6-J-gJCVdKoMvTA zJ14XTn)u#J6i=#{D}CGt?W_$!;Qa4<7fQK>6~4JREjTiskTiBieY+FGExU|en4jOa1czW``gf-s@XDe zy6WgCujYpBaCZ5*M=}5gsaYah1zcxfZ!*5LI@HEq+nl)d)cSAmhXNvBP`fs5CUU}m z#Lmzss0O!%M4J~?2Qzcle{J%d^|aTg*{lNMhzFz%^J4MuTLd(MLxW@8Ku^2Qc01-UI8mwV#qZ3M6{b7d9w_S*4z-FAnpOFstQxLCb0s9}DI~q9 z!yF(lj9C@Gsp_s8p5xz4gPkgObT1T7q&NJ7kiswn=Mw(@x1}*`O;Zeb7WTQ5-7ipn zlgrT?W#YjKV%v%#ybU|q#3%+Q$Jo`C5=el7-aX@J2r*!4VPipY$4;Ak&fvEF8_-?6 zjHdR-rz~lQD7Nr9TgDUxZ|zk22fCqV8Jp4P*1#9?!C#hMvAa%QiWLj`D|ky0i9qX{ zsvague2Va&OcDQR$bz$y??(=dwW7)?65jmgC<4n((2V7ZbWFMG;k$f^u{*`xPd(Ip#W6{{ifAKhfMzHs`*9D&J*$B01KI&YW1kJnNz5 z+qWlp0L4X%*DtxM7d2D`Nz+>|r_Kf_>}dIVlNPm*?xbCN%3|10VM^eqUA5!4&L43& zDSqov%t<7D;$kmFM+*`wT2oV); z7gqA9#{JVanm#3;zM4G!KkU6{R8&jXF1nPhYy%)Bkf?xwAW3pYL6D3hw8U0&&N(Zn zfCK>n$*APik~63ziA~PX0+K^ZXqwb;YN7kx@AvbLd+v`r&RIho-Mwm6nBkeTW>w8) zIn4C^TbLoYzzf5_pPmnCT=vuVIC@W4naR(UiB!QaCZjXkj7{d8Qs%`nt8vToyUFuT z^Gm{^uN)7T@xJ8Jp7@q1uDYIEuWu(x3sMI55QQ6ZG}SwVv~)Ag+@`PNU?@vBuhJqL z_}NUlP`rd6D$2n>p8bN4;h{qcKbeeWYAuRreYKJ5j!eQ1*i;l9ECp5w%Bp%yCNKrf z?wnB5$;}-YSh8>~t)hY!AWg7gROX>(Z}vdF*uKKSM7Xckkm0hPeCFd|7u0rSg2_uq zkw81r34`mhT>j#Nj}D^i$299i-ZMXlGxD zZ7D5O2gzoUwzEuQnmIo7f+7*0%_8S*?_<`2r&qtVL%nLbo$ymvsWEkdvVAmmzg`{V7>%v9zNGZm3gtXOdly5*u~vOgiAjbgQK`Zs z1m8YL>h2Atmcb1iQ=K2;z6tM#lX_rk^`{w9^LS0Jrh4Y-AAUPo&s*gSXjZO<>YvbR z-yZOf_ZMEx)InAcw2$JOJ|I*ndT#jdfEJ5ruhC;*R_Ejfw2aC*V@SdZ!*MtorQPC> z9^dSB5|GqH>!oHLoip=NL)p5A-bS|$qkF^^ ze+@Y}BXK`0kdaKK=SNZK>ZIA{V>tb?*EKGT3<8&TO0SR;6R)!qk0N5wi$!O`ayQlo zF0nFVhsgbBtu5B7MPhSNYnz?--`gqmIXTK$73|@PnBYpA>bsj*sM>4q! zwO^^9l@D0*sVgumUw+WHwZt=NX}J_^7vt|9?68)M3QLxB!_=pGDeTrTA>N74Tn}U*${5k7TPwQ~Xc^9w4__0XU z(brm|#9eNn5~)=hetVS?OQ_0!RX0XXKBPhL(2@~*=tEm@Efc#ID$PP}qtsWDRlfY> zilORB>kZPAQr7te+YTDX>HtacY%QJiYxeRO5Jesy)Jpo=WQk&iqd!}1A&NB57aL#d&8z(f2?-T7vcWX0CI_x3x_XnhX@9G_aS za+ymEUU@-8>mio#>3MEcJHh@TjYkvK?KFdd2CaXEsKH9^g%(G>_>3Xb`JA+I`y^oAR7et z2HvojPcJ%Su}rhBjIGNOXK5lw(m5Qn?y41T4s;tK*T{3J=Bk_oi%m#iUmI$lmUe4z z_@RXDz~MKelaPg_GyfmMWQIz9l$}Na#V>5)4-ej}R8MHgG*+GqD_C|xkcXbq;1r#y zs8|Uxq_)`abd}T|nh5}z72(TI^YaT*sVFV^Oy0l$q%45)!CAexz_b`#>iVt?j2LKH;+e(E{&s(kkalwd+~VkNy^&N;=-G4@ zFM9yiglK-3PECTB)zU6Wi=;nlluY+u7Zgp&UtYie_u_xLu?m8%-S?8N_FfyUmQ+X& zq!+8rWRw>9_B%ZSBt;H_N+nM+1Dv+kBroifz9T&xH~+5&SV04$sS7uf9^IPG_a-LY z^#(=%Gi(NM^202O;kA>jjWvIa$t$O>L`hLjF=Lg6)!LPi8B&SNe@3CkC!W4;^7MpR z5E`?;X{eCiD=E`Ba^DO+woe*T>7i08>(6bwCVnBaOEkxPm2TAYx{E}uD5t)Y(uDQJ ze+am79fY5u`)3wugw%qEFkN(N=1ghoO#c~6^7!=GR4CY?I`_kQ_W8#aKV1;_Z~Q~+ zpWwW7>h)3DUUyH-^I_lAZH)mD;WVJvze!p005N6P&5P)10N&<>o<_aP3@pJ+q3$c1}G0-+sd)^n8}KSJ*D~GOB*!AXS0m zMiOZ9jj#NXkW2mHr+7TC>zup2&BjPaE-V)%ssL~q4Af<;7OZv9}qEoX#m#suRS}m%o81zi4MqQ)jzhQ&}!tUPh%D^R}ywfNJW} zJCdsrczonGkaz9P^o#qxBIXa|gosmtVI84rAZjO9ruw1+EUm%HnFtGia(jSDL=#R2 z6WxgW=7>n91O@}?CY0s?Z)?Q7yGo>y@p)B`bh8GLwo zeYCs4Z7YsTscHha#z2s|4S?ANhAC(V_rsYt+4147aIs3r*8Rr8jVlGT;6OpbgQVL3I-&~TqA@u3n$MlQ*nH+RsT!?`YR|`^JxbHMYh=XOB(*x>c5G5^8b}Y}d>UOERmHpImPE5LL5u3UHJR z@*|zPihyX-u9a7_MKesgc_L}P@6H@a<_Yo7(Tf|7*Gp~<^YfJ8UuLY@Hcz#*G%42c zObHy#9wLiZ zG;@#Af9P2So4>p9g^^tVS$@)ib3kVrgkf5$Hwcr1X$~@w0_kq|%~~bN^>L4Cp&e;= z1Q0qkx?es*7RYVMWeLsZg}ckNmq>oe$)uTA2{YsnmkK&fue(YkujK2^<_@#7n3pMm zgR5rr`j%N87LC^egM6M>Xn&Kg3mAj$XH;hv zOQr`k!Es+YQTq!fzi{-kMVQuP*XF6$S9bf)&O@}>(+We;h6nCCe6}OFrLVhrh-^)) zuQxA?thU<$Ed~}ZoKd?Jd6(nva1M&DUIZ1L0*lvbrKKJrgXZ(FfIQ*DnmRsvAM69V z0Q8UavFZabtD+pOuD`JAyV}Vzx=|B#>hsuAM#Ul&+mWkun_@eH^sTL8pOain zOAK*&`D22IG7GJ*;FiYSF%98|#kpSTo}f)!z+kA>{#h{A-TphX1A0pj^^mvW#`?V> zNIez+(d!)kw7wi2o%=G0BDQk@zVsgZySm%^qurO1+}K_^`q?-d#%Htux~2!AwZvJG z%Z|1QKX-$DVAXkP0aV+P;Unt#_D_f8cEm%3>UHbw!jnKO-#R13SGD*~?I|29%~Kj+ z5@~N+KFHK4FKe?f!=9@Y!vb7!9ldqA>qJ#k8D-ta5|+%nv(bhtsKIRw?HDF`B=PZh zdPX(86Z|<&38Qf(=fFVnbN4Nx=PiPNqXR8S;gQ;)e6{x$5OAyY{Ct=C_3Z%P6n?{p zocl@kJL^eKO97641pwvd_>>W|r3Omw+;tn8kSK5l^9n=#$sg7}J}6QV`Xj|&r4F-= zJu$7Lecv{%KAwi0k$0Et7#<$8XF&-JLhtFv-~KdPX_>gc?OM_=Z0+mLHsgBU40Osb ztTYEHo3fM;@%8E@c01SpU9s1?LAfaHLBxGa1kU>6>0rB!NG7eTpKR;7)s_RULRrRV z5qJ&chZ03VCw2S@NJ$TF#2^pAE>ZfhYij>S+4<|GsNEcwBX`I-a9_5##y?41m4rzRw1G9{ZXh z?l$P|0AI;MEK%hOzCt*bufO2xg{~7>dbsPpwTKu}m5rJ`w)#3YrE1XMOP^TWf}Pl( z*D(Krq&WH{+)wfJ19*lY5j7Miw7{97kL!w+^u?kvq9v{vyh6GVN^jL|YZo!ov0L17 zFcz}N(g<79wISdB5<+K^yM9N!{b<0L*pY$`5$xIEvg@?VCUfmvmH#yRsCp1V&`k@9 zkDj3g^AqpcG8Bzr_4B~th>S%OdI~@{Fu0rYj|kZ9r@++cO(K5F!zI|QquATZajmOy z^)+{wIryw+?Y7Y*$b7KBcur!npP;<$g|5GI+23}>8sQ3zYd^|^+lM=IegLtH)3`Aj z&D8plQoObBrgGm`hQx{unU1U(`93Gat}Qjg^laep<<}~`GBSBVfy(lc@7l&r`e|oS zI%6_&QUq0>*F8FxllOi=uVSlarA^nu0n|^_i%G z;et{y?m>{B<;G2=Fn9Y ziG3x4O76NFM=cE~7Yy?LCNwOi1xYuO_I>tp<;#UP(VXH~LJOP7$?lvTPB(`ZG zvbnDrU4HZ>ZEVfQ(N?S?cecD7IHP_B*~ulWqcY04=zhj11)%%z>?5H3HJCj&3vCUO zP$#-TW}!^-du`>^Ifr;xjjx)vzm?vM5n%GIk9s$f;86g{;aha!%}BXmn!F{qo?N^Z z0*_inWIN}*=w^-ok?7)Z?sP|#4eJph+@N{u(w)_#t|WAs2aaZn#?N3Wch5bRbFrc> zCs$8C@^)}w^p*P2J0p#9chAdOmp4=t9K0ug(}s9U^~BT4+!1N2@nec3ok&hX2txI8TkiD0weH6g4m0S3buFnb*Kn zAakI+43Pf&Yd@8FyauS>J;9%r)+r&#V^m9=+zeoAsgjB_h#=`O8mJGTY&#qh82A>*iAK!CsE_DjOFLxm)p^RM?gL zwMvyy;U{@-638NMefiCO`A9LEPYBCvmFWW}e=7ds21`$t%PXg3Ut`wTd3rEwIW(Cs z1_(5f?g3S6A*R-P5gg08E@in6(^lLJWtZ0*2OJdr<C#Xr9~Zu60RAj-pg@({|}2LKn{AdJ@}P4db`r zAyl}4*wgk}IIMj;)ABZ?X8-I3C`)PSI!(k6L)_77N^%g&M>2GN`+RB9GEjN#PXOzT zlhEqI-|Ij9AljZ7M66o;MjM~Qczeab?9Y!bLrZlrL*DX{u$P?UYl*U%;>d?(4>;pe z6oA>OV73w%_*HPbIY~4nROb-WGK2LwXm{I47rY~GgHQ0B`Jl(u;#+ytx>LNW+WZM! zKf1&TrqpH;8&ADvuVi@7=Em|Wf;m74-IvJ>l=cw9+G=Po_-HaB!@LLWiIaIGjz~nP zzF7Tr3r5#l0!<4Snn3uNbm0#Lv_UioVt6GjB8VX@1P2b&kt^y{Vn5XG&wK?9`&a9S z1qNQ4?+Cp1TJ??ke5Y7Nr=#a912fE_n+;lrr^MA)v>L?gQgNpZwo-BNS=LZhUqRMt zbDf3xA6wTWG6g!olph{QZRr)Z)Jl7a9~c~}$D|>TPfG!hapEKDw=!B7pQ43GErt|C z29n2kFRRw=$d2RtkhBLFFls9B^_3mzm;T4%CyMI45}wNg9b%PL&9VY++v_?DcVuam zUi2kVf5Vk}yEZW7vSKdzND?i2P8M>Lk0-gOlaV+##*MH#B)du&#&3eBwuugVXgB+ zwWh{v)qeyWzdUdX3Ym`~ORC(TtESf@R~LjM4ro&0ErHh}JEz}?GvteDLS=`uII8KXf&DOEKVku!`$q{J$l~2a(k$61s z=*&013cKL22NmDMQ2@Q~zFao}BHU6ZqETgfR~m?VwX9V7wmyci|5yo>w$mTy&SU5pEEY2RlzO4m<5>jk*k6tUspq2NU%*izzmq`P zbmB8I?>9R0)Es!0TJwl~@m7k@5FGqf119Ru2OcMHENe8m(^*PevsoZ#dkQvIDcD#n zPLH~;#XB7ef>_*a9p&;_-1EQ+9_7Ad?Jjx%PJieHLY>|^```DSpZ&hCGpo_>PhNN*q(jL96Q|S%02H$nDPF>Xu2lb< z^1T$~mTW%!0HITpPXKnGfTSYelzru#$ALDfc^xFKcnrkkj-R&kP)Lu|hf;6AfHHmz zD56;-{|QnlKDkTm_saQ)!oM-Nc2HUOWw6Wp-*6L1)8Ln}==T;L+ws-y0DL4qjpzRr zy3>Ilb2@eY-(a6LoX?Q+?0;1>3Rg6K`TBnay1>Q-ufq4b{Y7VkXg2lgwtGA;LhXoD2F~POjzJ1aLA4? zKZZh(L)F@Tb0VBGBrvomalolJu;LKtfqQK7@7DrA!En07vYfw{bgz*+T6pc0Gfo$P z3Qg*h|GfDn81DMF3ZUKyna1EiAxVb0m?K}N5=YvI292k_zk`TctYAm*RzC-9~I`RoAP=YKv6gQT8+KKs!CSLDz2f2)TH@jr-z z1C|&{4J@c7Jby{PJ{$N%?{I*Y+@3HbahN<22KE=9)$8jD4GbkO zKwloih7(G)gCE>voQ~LWesGh)z*@$Ni_F7y*&a})1F)Q;u1_!yrjc4!t^11UugzlfkNKz`XEzzjjGA@bjZ84FgXIp4GT@v;N}5n{FB zkbEd)+PHK}yIoGkOAnkxdTIeyeZhEc7z&x@TmomQQUgo9V(duo0ZCN{5nTxCcHw{J zxK~}lUS>KB=f(767}zKca9n#oUFsF^7Nm1~2NJwPP>Dw9RHA6z_Bwvc)e`BoI)fdd z9AV}-ZuTArQc-CBHMzYv#n8qW<20Vvh7;rpKkoliit@Nr z3_IC9U-6kab+$y_dvKp$3~qcAj`~v-oDCFkDLufkD3>R#xDTeP@DM04V!3;m#gXP% zi=c$0T#pH(Ei07i!XMzopzD1OlJY67u~S(s_3||$Tl88S9iv~sD-b~o`mjz)DgHg* zuL?IN0M~^BjYWv36>EZDQaz6cT6w9Yqz7`tlagSO5C&9J%qFDzIQk# zVg?%-9jddU(oTg4W~(m!2=R8kzW%`95Y(JIJM_{{CHJ2P9{qlRyvw|n3KTMWN)P$j zTkJaDNbC#KK70{49QACo6qZjt_&;57VyHXr_ak5|^au>t&+?R`o-@F4RHI$;A~`z) zIC|wQV?_Zva~z$5q#D4zW8#Wf9#^{tIRCb*7w+!DgJbeb2RH`9^z@@TE}{NTTOTHU z`!VUAFLm9by8*a{i0 z*3xoGZam<11$%(wS!K8d`=#B(z#S_J)b-j2a6$|{or1cx$gsqu? z)JkcHW9Ucxx4#Lm=Fh^^t_nG3nEZVqQ}gE6f6rf*qP>w+eSU=qaxw-*zX>O4{;rT5 zuJGw2@I!v{+pZ<<&ty=yHO|ZT?|CN+4y5XXc`rakH8FVTUjhOgtE5A3(87dtQvF?x z{_kqQ z^_gD!^y^^|WF`svdlufJQ9DZ8b&Kq$ZAc)y;mY%QadLZvjMYKotfWs)(7ql8`7(pS zu26!PC_~*iIC}!xpWh3tkYI?^q_qqs+K2gM)?R*9Hv=;@Kp<|X{7 z@O?6A>KkRb8{_+$b!fv?xx0PJE3Xp*ItKcO~^bL3Sg|E?XM62o^ z&MZ@p&yQ2;(>gelw0IeRn!<1RU~{HK8xd_7Jr}`6v7wDxSgKN?j74B|p2~0KdBwJ@tVD-|O_Q!d{ z>R8vnL+0PAMhm=T(BE%h|3LU?fdp-P>@wxkdiEviC-j9i$xqeJt4i?|VbE~>=Mn~v z;QDEizw4iGSr~gaWVj0GQ~a^HWlN55;wW$``u1|A_e%3=e05b9_QK4-u|m^=T;E_d zqT*y;;w2uj?-NFH zHs2(M1}}PXAus%D)ugj*{*5j~!1D#ii!}r6x zvMxrF9d{T3I!xUlJZsm!!7M(pLG|rU=YdKQXQnmFK50+CUkD6H>o8h<>EE6Oe6N&z z9qq{QiZ~+SX6v0Sa48>-{c&uv^j{z zERLqN-p@EnUK!CuC{*nbdX!Uc*3}bnkJR&=Th8WCDCZoR{MzE>(@!3`&~50`mRoZR z6BNIAP@|toFH#6jeJ$==?5a%RPC#$-1#}*&a_Cn%x2ltq*Mg>9yk)HNivOPIbL=x@ zFFGH%J-+qC*9d7-Oz!&5Mz4s|aQ;f6a=6U4&UwD2*XcU3iI}h6>B=LLtXt9OfUtd~ zCk`w7hOKWfBq+y}GowFwKTvle-KCs8llWb?#EA5hzH+2-DS#qnmyukbK*gpRx&=nWa8L6gzl?vsNH&O=06 z;gwJOH)a&aN-(SL-sQAj)q)m(FNh6%#G8`0phEP_qXe#Oi6gqv&ox7Dx^bARmzQUo zIg)ABOWqEdDjfD`;XbMWG!3l^ZgIGT$C}&fX8cCn z58k^;YFh#vLREN2bX^fDBKMADC01&2%$?>-khk2#?)VRC`qrY=soFjP!a*#muH;vR z7K*=^q=nXdP`%z`mZd!b=T(oV_T~318p2`;&B)HZW#0q(1o!jR#Wki33?7-Z>+Rme zlOi9k?Grj(eKsoc_Vb%k2n1CL%4>*b`LHBs1f#VXZvPWWN+!wC{zO_`y!zoGS1QpL z)>+7mv2?iiXf?79g8@T+klDX*w12euZI@(_ND))~>$}c2E$hTcmm@wQlm2Mp2y4n^ zB;wkafjjt$IsCEcOUU0;-E-$1vzxp{Ke71 z#3$XZ55+`x?9{ibr#mF|b=Zul#Uxh)$eLACEX8d3Yh5*UKmQ^tQ*y~G_4u`pY!3HX zcgV2j()aSp0~t{_3n``uJz?lR*&~9DCi4Cz8@ba`i1@LEOI`~dT1W05=9d616w|)15bA z@RcHkZ6FJ>f=i#)qwE$Mzs7qwlVX%@i$=Oxi`6Wn6N=ErnTIIF;=!nP6@u$}ZOZs~ zT3xmMx1ny^6rS9MI0+my)|+64OiwlCkW+SoYn*T#ep-3=7JLWgkXF! zyFr4sc+8K|H06oOjE|k-MvI@0%olss{e7t|oDk>8-nbsU4#i3Ay{mlP;(M4hV|cg{ zL_Cj3;b%{#8mEx-ILsdx#m1kTYeY!i@$Fp=9?rN{E55#(QggN5%i32_-)z29l40xYX=6I)ES zBwp*AepB!5bz9tC)~02>pfBu=ueS-ezPlqfZLDr%ZgOYH^z@8gCN0HldV%~~`;ybY zM%I@S(9Mb{Ldn$p9?(Fxu%ue1zA`!b-LQ!>;w0Lca4{i4VP4WV*n<_E5?c6TSDb|PMu56-;w3p{to6u$v3U2G z#lrv1;?+;QVWJF&>x&;AxMHo1TwS*sL&L*z2Gbbd#;M&)|oyEhtiI+T(5!=nh4%DI-Ym28pVGmVkdPJ+uQO{ih9KR0{ zRO`rd>-M&?Fwr)8y`M~>tbW+mF-$*wwgFSqnqE|^#p!)su7Ru!jc~1?O~v$hMnPIJ zj^39`-=p;K3t?+g%N}PteyuoM_w6oExcL6+D@1XnSx@~NSB^bAzxbS7{f?~H(K@>P zK(tXN*=G^AGkrwhimOBO?^lE9;!J;qApIlydfRv#;2DOok@eEY*}vV6+kk#iUn3Ha z68`AwlBd6odp{|fThOA4O}av_yB8f#@47fm!ehIA&AEI(-gE!@U){W%y&RvmD=);ycfxoIA_NpvkrGA?=Jye`A{mr&2F8`nn`E(>UOa zb(~z`wIBuA2ohb}_zP39AFJ@50Mf63?Q-uw9#1g?1BEKZo+J$La@EoS)s#ypJ2Euo z%4SdF1;7ROvZK5#r_5tyXr_N=60tecC1mfc>$1(^yjmO~)w|zSbyG!rttbOmZ3q0b z`CNXxqh3qf*^3n@mbA^fVw<3w=axXa67YaMXg7b?e$ym{JU7<6c5R06qjzjcWRO=y zmo}Djvb$uH6ND|hwT^q`uaYdtJIE<1zPTMPSI}WEhmLO5PG8(f-ab#$rt~+Gdagp5dryk>y+u8nUp%Q@v2<3|4}o`Xrg~mB z*67H49tTSoajZ}J)ZTV)6SV=Z2-UQ5ZA9~jF!o(|^O7;r*6e;8qlanBK>hkqTzIJ# z<_6oDc`%Ko8vw5bIgFZ?KEh&xWsvZH~jYn7416@kWx#OTn;(B$#X$=99dX z4;B_}8>6_!DNv;1q9)#+OY5=x`33sj_yRyKY*0%w!9@(0i*1go-7vYevLdbpPlU{Q zr19R$56M{HE;M;<@l1_+LC~g3B{Q7g$kENOHqL)XE8KZ<<)$)iBMRO<+g&TG+0>zp z^&SFbCzYG{^GrPr?_(LE^&; za40^h9W0bUemwcWRB{57Ik!shaqu!@axF)Daw@T~L&D+i8pyU5rU7e*hhEW6K)j9K z*vgomhNwWxuU$7lrX)`x(;7oq|;DKvbm+QGF!Y2!h#^!M#@NKzjU4+8_s#27#<$-P{HngBifkxSc}-oWeRNhcEQrx(c&s4IKFc z^MQ>+$E*ELxcs*&JTOJ=TBk2fzhdvY(!0nFS3F^?Ei*2;(E#j`!EUzPB6!{9Q>9YQ z2(Gj~{cpnRV;caXgn4E4Vjb)CPdq)ZdcQF_f) z9J~oC4L*nAnF-@M*j`_6!U*eUI`RBd@$TWCuaBJ9RC###aTz$E{}F7ey)V-^Ntiu? z{7zC1?{&g|{*o!qgCm9OsuG!o(Al&Y=t01R2M^Jqn|JtWe4eO=>qAc&z)s~!1Y480 zhk-@bP3Yo{zaI5F&eVX#Dx|8a?x1M?yeD}>c?Fo*XT?Q31s`Kv>l69R_h3Z_s!D)^ zL2Bg@Z&e1Ld*4X%f_3n%M(qvS4S2V3H{lp6Ug^S2KfMjh#qeG?C+(0COy~Y3-~r9> z(o0CH#0vtgLDy_meeouR>&-X~M}1PCmFj!%PtZ$JlSv#Z(hePOPwuyzT)76jIVPlw zPp%YK9v3G)E`G~`WO3a72p!-Q4|aM%ezLUuwTK6qB*#Ur9v3kWaMD(U@0pPInsdN1 zkqz<&fv^qRjifK4jS4;9&;2jJbLoW2T%5h93 zzM-J!f~opdws{tKWuCj=E5=I#pNJOSb?*jjNWC@Jnf$QtOWoV9M$k=-0sKL!$6tQ- zl#Fv1fVU8e_S$(-;kLdWS4Pnr_XMQGc5bIQ2P4Yo!sgkGMUb%Qx+)+zuq$QS--NM} zrq6-FfRqbub`5SMogRQU->1T_cY>hGOTFewphKnYs^Pg@`e}WDfK)e<_F(RFAIB)n z&VaA|R9%%u>u2<>0PT|As;t6%$U0umDG7P2Vhw*~y?7&O<@k57xgLa$-@R24fMw%y z#M`c)@b8r1Ko1D~I{Y($4x)W^j^iabsR$Tx3MziRQyNn#{k`Hga~$az&4|gh%~UvE zmh)5jRo$)<1bT`tS(Og2=e}v-4)6JA2HQyCn1B9_q)enottCj$k*N=Fk54s(rM2Tm zk`387OdW1;SO?H{)#A+J!LF-MZz-W0W`fk~Z2q*(-dt(D5i%Y6QFw9nOTe+T-}_G0 z>%Lf8UgdBlsU>AB%3KNw3*5)-n`xU5_8bt~UuV#(aZZ5a|1Nao-AKB9H^v6WW2uM6 zB#SlcgZ+6R#16qPn*xg)#uFP&_DwG{L-z5EnfT`EOY=?>_9=YuzEBFd&kIEXPF+YL z6nnV$WFBKPApzzbISh+ZCkSgr>dmynM-#@GPP07pV74>{?LL944fKxp_yEr%8odH64>!1FbR1^D3pY4Ol)^pfH z8s6qY(}~T&B5g(neYtzw*JnxfcKQgg7~}vT`TR5x^>x_GI3y5vB|d7Y*=ZF1h69Pw zjtvgH!AqVoq*Yjk?p$|k&8x&4Hkvctayy8!-F9hlI4_ z-hs0ufy34H2lS8{M5I%H4g9(PnlJ7W5fwOWop(A9Nzsx@=4Hxp0l0yK9_-Q665^ni zZZUCjdo659GWPy?%=DkPlY#XR_yu==uK!&tsh`Y`!(xL+g`z1#aC)L{V+oh}&0~D@ zIO!LZc=%F}`Zr0?Fg&UpeJdbglvHIW>&+(sRGT^nzpdSA==v8ym$jh4C+y(uXKpZt z9%X;6jiqJ;DT&O&BJ3+OPvi9^?r;inFbsxSsnL}H8bei5{~{S&?&Cjj^?Qup!~gdW z_y6DP(tug^E#Jw8bh+ii0ga?$v-XmGU(=mHDB+o8nw=?%PYW#{@DNBn_w&o0)_d<$!I=mb9C8tuyn$SVYv=sp zd%v#qHx$l4z95%dxCnu@7a)%>+3M*hlFBhYI=+XU;(Xw(rgo*(*h;zj{c6!tqs2#5 zK!Fl!34=O&Z|aA0c{5e}U_F!yA6_{c8WlLGcWpA&N@YQM-|uCX-$PhZEXy6u`>_jd z>FjSWr5rA@tawA+j4DYY>3#Q!Y!qWT2WZD50Jw;JSuMwWm{2_+Mp(7KKC;q2a+@w% zw{w__3&rf-lSO^S9;UconEl??Eh<1%>RQ}j0v}An?uM#oHTm`Gf(Mq!eJaoEkW-

~wVQ>=Ks<3(ne)3}T8 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 FzW@j4W=H@4 diff --git a/articles/hdinsight/media/hdinsight-domain-joined-architecture/hdinsight-domain-joined-architecture_3.png b/articles/hdinsight/media/hdinsight-domain-joined-architecture/hdinsight-domain-joined-architecture_3.png index e1d0bf62e5145ed944e1eeb5ca501042c77dcc35..a6cb50b1b2eeffa51fffce99b8760aec98903689 100644 GIT binary patch literal 71111 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 literal 11715 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 AdjJ3c From d7eacb59cb50490be0122fd9fa55dd20379d97e0 Mon Sep 17 00:00:00 2001 From: "Stephen A. Zarkos" Date: Fri, 3 Feb 2017 12:18:39 -0800 Subject: [PATCH 72/90] Minor edits to linux-create-upload-centos --- ...ual-machines-linux-create-upload-centos.md | 30 +++++++++---------- 1 file changed, 15 insertions(+), 15 deletions(-) diff --git a/articles/virtual-machines/virtual-machines-linux-create-upload-centos.md b/articles/virtual-machines/virtual-machines-linux-create-upload-centos.md index 9ec6d85d08bad..1983a2278eaf4 100644 --- a/articles/virtual-machines/virtual-machines-linux-create-upload-centos.md +++ b/articles/virtual-machines/virtual-machines-linux-create-upload-centos.md @@ -71,7 +71,7 @@ This article assumes that you have already installed a CentOS (or similar deriva # sudo chkconfig network on -8. If you would like to use the OpenLogic mirrors that are hosted within the Azure datacenters, then replace the /etc/yum.repos.d/CentOS-Base.repo file with the following repositories. This will also add the **[openlogic]** repository that includes additional packages such as the Azure Linux agent: +8. If you would like to use the OpenLogic mirrors that are hosted within the Azure datacenters, then replace the `/etc/yum.repos.d/CentOS-Base.repo` file with the following repositories. This will also add the **[openlogic]** repository that includes additional packages such as the Azure Linux agent: [openlogic] name=CentOS-$releasever - openlogic packages for $basearch @@ -121,7 +121,7 @@ This article assumes that you have already installed a CentOS (or similar deriva gpgkey=file:///etc/pki/rpm-gpg/RPM-GPG-KEY-CentOS-6 - [!Note] + >[!Note] The rest of this guide will assume you are using at least the `[openlogic]` repo, which will be used to install the Azure Linux agent below. @@ -129,7 +129,7 @@ This article assumes that you have already installed a CentOS (or similar deriva http_caching=packages -10. Run the following command to clear the current yum metadata: +10. Run the following command to clear the current yum metadata and update the system with the latest packages: # yum clean all @@ -137,12 +137,12 @@ This article assumes that you have already installed a CentOS (or similar deriva # sudo yum -y update - A reboot maybe required after running this command. + A reboot may be required after running this command. 11. (Optional) Install the drivers for the Linux Integration Services (LIS). - [!IMPORTANT] - The step is **required** for CentOS 6.3 and earlier, and optional for later releases. + >[!IMPORTANT] + The step is **required** for CentOS 6.3 and earlier, and optional for later releases. # sudo rpm -e hypervkvpd ## (may return error if not installed, that's OK) # sudo yum install microsoft-hyper-v @@ -156,7 +156,7 @@ This article assumes that you have already installed a CentOS (or similar deriva The WALinuxAgent package will remove the NetworkManager and NetworkManager-gnome packages if they were not already removed as described in step 3. -13. Modify the kernel boot line in your grub configuration to include additional kernel parameters for Azure. To do this, open "/boot/grub/menu.lst" in a text editor and ensure that the default kernel includes the following parameters: +13. Modify the kernel boot line in your grub configuration to include additional kernel parameters for Azure. To do this, open `/boot/grub/menu.lst` in a text editor and ensure that the default kernel includes the following parameters: console=ttyS0 earlyprintk=ttyS0 rootdelay=300 @@ -168,14 +168,14 @@ This article assumes that you have already installed a CentOS (or similar deriva Graphical and quiet boot are not useful in a cloud environment where we want all the logs to be sent to the serial port. The `crashkernel` option may be left configured if desired, but note that this parameter will reduce the amount of available memory in the VM by 128MB or more, which may be problematic on the smaller VM sizes. - [!Important] - CentOS 6.5 and earlier must also set the kernel parameter `numa=off`. See Red Hat [KB 436883](https://access.redhat.com/solutions/436883). + >[!Important] + CentOS 6.5 and earlier must also set the kernel parameter `numa=off`. See Red Hat [KB 436883](https://access.redhat.com/solutions/436883). 14. Ensure that the SSH server is installed and configured to start at boot time. This is usually the default. 15. Do not create swap space on the OS disk. - The Azure Linux Agent can automatically configure swap space using the local resource disk that is attached to the VM after provisioning on Azure. Note that the local resource disk is a *temporary* disk, and might be emptied when the VM is deprovisioned. After installing the Azure Linux Agent (see previous step), modify the following parameters in /etc/waagent.conf appropriately: + The Azure Linux Agent can automatically configure swap space using the local resource disk that is attached to the VM after provisioning on Azure. Note that the local resource disk is a *temporary* disk, and might be emptied when the VM is deprovisioned. After installing the Azure Linux Agent (see previous step), modify the following parameters in `/etc/waagent.conf` appropriately: ResourceDisk.Format=y ResourceDisk.Filesystem=ext4 @@ -228,7 +228,7 @@ Preparing a CentOS 7 virtual machine for Azure is very similar to CentOS 6, howe # sudo ln -s /dev/null /etc/udev/rules.d/75-persistent-net-generator.rules -6. If you would like to use the OpenLogic mirrors that are hosted within the Azure datacenters, then replace the /etc/yum.repos.d/CentOS-Base.repo file with the following repositories. This will also add the **[openlogic]** repository that includes packages for the Azure Linux agent: +6. If you would like to use the OpenLogic mirrors that are hosted within the Azure datacenters, then replace the `/etc/yum.repos.d/CentOS-Base.repo` file with the following repositories. This will also add the **[openlogic]** repository that includes packages for the Azure Linux agent: [openlogic] name=CentOS-$releasever - openlogic packages for $basearch @@ -268,7 +268,7 @@ Preparing a CentOS 7 virtual machine for Azure is very similar to CentOS 6, howe enabled=0 gpgkey=file:///etc/pki/rpm-gpg/RPM-GPG-KEY-CentOS-7 - [!Note] + >[!Note] The rest of this guide will assume you are using at least the `[openlogic]` repo, which will be used to install the Azure Linux agent below. 7. Run the following command to clear the current yum metadata and install any updates: @@ -281,7 +281,7 @@ Preparing a CentOS 7 virtual machine for Azure is very similar to CentOS 6, howe A reboot maybe required after running this command. -8. Modify the kernel boot line in your grub configuration to include additional kernel parameters for Azure. To do this, open "/etc/default/grub" in a text editor and edit the `GRUB_CMDLINE_LINUX` parameter, for example: +8. Modify the kernel boot line in your grub configuration to include additional kernel parameters for Azure. To do this, open `/etc/default/grub` in a text editor and edit the `GRUB_CMDLINE_LINUX` parameter, for example: GRUB_CMDLINE_LINUX="rootdelay=300 console=ttyS0 earlyprintk=ttyS0 net.ifnames=0" @@ -291,7 +291,7 @@ Preparing a CentOS 7 virtual machine for Azure is very similar to CentOS 6, howe Graphical and quiet boot are not useful in a cloud environment where we want all the logs to be sent to the serial port. The `crashkernel` option may be left configured if desired, but note that this parameter will reduce the amount of available memory in the VM by 128MB or more, which may be problematic on the smaller VM sizes. -9. Once you are done editing "/etc/default/grub" per above, run the following command to rebuild the grub configuration: +9. Once you are done editing `/etc/default/grub` per above, run the following command to rebuild the grub configuration: # sudo grub2-mkconfig -o /boot/grub2/grub.cfg @@ -312,7 +312,7 @@ Preparing a CentOS 7 virtual machine for Azure is very similar to CentOS 6, howe 12. Do not create swap space on the OS disk. - The Azure Linux Agent can automatically configure swap space using the local resource disk that is attached to the VM after provisioning on Azure. Note that the local resource disk is a *temporary* disk, and might be emptied when the VM is deprovisioned. After installing the Azure Linux Agent (see previous step), modify the following parameters in /etc/waagent.conf appropriately: + The Azure Linux Agent can automatically configure swap space using the local resource disk that is attached to the VM after provisioning on Azure. Note that the local resource disk is a *temporary* disk, and might be emptied when the VM is deprovisioned. After installing the Azure Linux Agent (see previous step), modify the following parameters in `/etc/waagent.conf` appropriately: ResourceDisk.Format=y ResourceDisk.Filesystem=ext4 From 7e77858b36d07049333422d4454c29a9e1acb748 Mon Sep 17 00:00:00 2001 From: "Stephen A. Zarkos" Date: Fri, 3 Feb 2017 12:20:42 -0800 Subject: [PATCH 73/90] Minor edits to linux-create-upload-ubuntu --- .../virtual-machines-linux-create-upload-ubuntu.md | 14 +++++++------- 1 file changed, 7 insertions(+), 7 deletions(-) diff --git a/articles/virtual-machines/virtual-machines-linux-create-upload-ubuntu.md b/articles/virtual-machines/virtual-machines-linux-create-upload-ubuntu.md index 975e47ee29dec..fd5dd0bc10291 100644 --- a/articles/virtual-machines/virtual-machines-linux-create-upload-ubuntu.md +++ b/articles/virtual-machines/virtual-machines-linux-create-upload-ubuntu.md @@ -51,7 +51,7 @@ This article assumes that you have already installed an Ubuntu Linux operating s 3. Replace the current repositories in the image to use Ubuntu's Azure repos. The steps vary slightly depending on the Ubuntu version. - Before editing /etc/apt/sources.list, it is recommended to make a backup: + Before editing `/etc/apt/sources.list`, it is recommended to make a backup: # sudo cp /etc/apt/sources.list /etc/apt/sources.list.bak @@ -98,16 +98,16 @@ This article assumes that you have already installed an Ubuntu Linux operating s # sudo reboot - See also: + **See also:** - [https://wiki.ubuntu.com/Kernel/LTSEnablementStack](https://wiki.ubuntu.com/Kernel/LTSEnablementStack) - [https://wiki.ubuntu.com/Kernel/RollingLTSEnablementStack](https://wiki.ubuntu.com/Kernel/RollingLTSEnablementStack) -5. Modify the kernel boot line for Grub to include additional kernel parameters for Azure. To do this open "/etc/default/grub" in a text editor, find the variable called `GRUB_CMDLINE_LINUX_DEFAULT` (or add it if needed) and edit it to include the following parameters: +5. Modify the kernel boot line for Grub to include additional kernel parameters for Azure. To do this open `/etc/default/grub` in a text editor, find the variable called `GRUB_CMDLINE_LINUX_DEFAULT` (or add it if needed) and edit it to include the following parameters: GRUB_CMDLINE_LINUX_DEFAULT="console=tty1 console=ttyS0,115200n8 earlyprintk=ttyS0,115200 rootdelay=300" - Save and close this file, and then run "`sudo update-grub`". This will ensure all console messages are sent to the first serial port, which can assist Azure technical support with debugging issues. + Save and close this file, and then run `sudo update-grub`. This will ensure all console messages are sent to the first serial port, which can assist Azure technical support with debugging issues. 6. Ensure that the SSH server is installed and configured to start at boot time. This is usually the default. @@ -121,9 +121,9 @@ This article assumes that you have already installed an Ubuntu Linux operating s 8. Run the following commands to deprovision the virtual machine and prepare it for provisioning on Azure: - # sudo waagent -force -deprovision - # export HISTSIZE=0 - # logout + # sudo waagent -force -deprovision + # export HISTSIZE=0 + # logout 9. Click **Action -> Shut Down** in Hyper-V Manager. Your Linux VHD is now ready to be uploaded to Azure. From cb1c9734ef7745274095e5b3840698a76045bc91 Mon Sep 17 00:00:00 2001 From: Ryan Wike Date: Fri, 3 Feb 2017 12:23:54 -0800 Subject: [PATCH 74/90] freshness updates --- ...ervice-fabric-connect-to-secure-cluster.md | 26 ++++++++----------- 1 file changed, 11 insertions(+), 15 deletions(-) diff --git a/articles/service-fabric/service-fabric-connect-to-secure-cluster.md b/articles/service-fabric/service-fabric-connect-to-secure-cluster.md index 8365a254f825d..9ce8c3b40e49c 100644 --- a/articles/service-fabric/service-fabric-connect-to-secure-cluster.md +++ b/articles/service-fabric/service-fabric-connect-to-secure-cluster.md @@ -1,5 +1,5 @@ --- -title: Authenticate client access to a cluster | Microsoft Docs +title: Connect securely to an Azure Service Fabric cluster | Microsoft Docs description: Describes how to authenticate client access to a Service Fabric cluster and how to secure communication between clients and a cluster. services: service-fabric documentationcenter: .net @@ -13,7 +13,7 @@ ms.devlang: dotnet ms.topic: article ms.tgt_pltfrm: na ms.workload: na -ms.date: 11/11/2016 +ms.date: 02/03/2017 ms.author: ryanwi --- @@ -104,7 +104,7 @@ Connect-ServiceFabricCluster -ConnectionEndpoint clustername.westus.cloudapp.azu ## Connect to a cluster using the FabricClient APIs -The Service Fabric SDK provides the [FabricClient](https://msdn.microsoft.com/library/system.fabric.fabricclient.aspx) class for cluster management. +The Service Fabric SDK provides the [FabricClient](https://docs.microsoft.com/dotnet/api/system.fabric.fabricclient) class for cluster management. To use the FabricClient APIs, get the Microsoft.ServiceFabric NuGet package. ### Connect to an unsecure cluster @@ -122,9 +122,12 @@ FabricClient fabricClient = new FabricClient(); ### Connect to a secure cluster using a client certificate -The nodes in the cluster must have valid certificates whose common name or DNS name in SAN appears in the [RemoteCommonNames property](https://msdn.microsoft.com/library/azure/system.fabric.x509credentials.remotecommonnames.aspx) set on [FabricClient](https://msdn.microsoft.com/library/system.fabric.fabricclient.aspx). Following this process enables mutual authentication between the client and the cluster nodes. +The nodes in the cluster must have valid certificates whose common name or DNS name in SAN appears in the [RemoteCommonNames property](https://docs.microsoft.com/dotnet/api/system.fabric.x509credentials#System_Fabric_X509Credentials_RemoteCommonNames) set on [FabricClient](https://docs.microsoft.com/dotnet/api/system.fabric.fabricclient). Following this process enables mutual authentication between the client and the cluster nodes. ```csharp +using System.Fabric; +using System.Security.Cryptography.X509Certificates; + string clientCertThumb = "71DE04467C9ED0544D021098BCD44C71E183414E"; string serverCertThumb = "A8136758F4AB8962AF2BF3F27921BE1DF67F4326"; string CommonName = "www.clustername.westus.azure.com"; @@ -143,22 +146,15 @@ catch (Exception e) Console.WriteLine("Connect failed: {0}", e.Message); } -... - static X509Credentials GetCredentials(string clientCertThumb, string serverCertThumb, string name) { - var xc = new X509Credentials(); - - // Client certificate + X509Credentials xc = new X509Credentials(); xc.StoreLocation = StoreLocation.CurrentUser; - xc.StoreName = "MY"; + xc.StoreName = "My"; xc.FindType = X509FindType.FindByThumbprint; - xc.FindValue = thumb; - - // Server certificate - xc.RemoteCertThumbprints.Add(thumb); + xc.FindValue = clientCertThumb; xc.RemoteCommonNames.Add(name); - + xc.RemoteCertThumbprints.Add(serverCertThumb); xc.ProtectionLevel = ProtectionLevel.EncryptAndSign; return xc; } From 54c577eeb5c0b717795d403e4001b9b00a29f8ff Mon Sep 17 00:00:00 2001 From: curtand Date: Fri, 3 Feb 2017 12:29:43 -0800 Subject: [PATCH 75/90] New B2B preview articles added --- articles/active-directory/TOC.md | 17 +++++++++-------- 1 file changed, 9 insertions(+), 8 deletions(-) diff --git a/articles/active-directory/TOC.md b/articles/active-directory/TOC.md index 9f85c1b2b81bb..862333849866f 100644 --- a/articles/active-directory/TOC.md +++ b/articles/active-directory/TOC.md @@ -209,14 +209,15 @@ #### [FAQs](active-directory-windows-enterprise-state-roaming-faqs.md) #### [Troubleshoot](active-directory-windows-enterprise-state-roaming-troubleshooting.md) ### [Integrate partners with Azure AD B2B](active-directory-b2b-what-is-azure-ad-b2b.md) -#### [Overview](active-directory-b2b-collaboration-overview.md) -#### [How it works](active-directory-b2b-how-it-works.md) -#### [Compare capabilities](active-directory-b2b-compare-external-identities.md) -#### [Walkthrough](active-directory-b2b-detailed-walkthrough.md) -#### [Limitations](active-directory-b2b-current-preview-limitations.md) -#### [CSV file format](active-directory-b2b-references-csv-file-format.md) -#### [User objects](active-directory-b2b-references-external-user-object-attribute-changes.md) -#### [User tokens](active-directory-b2b-references-external-user-token-format.md) +#### [Admins adding B2B users](active-directory-b2b-admin-add-users.md) +#### [Information workers adding B2B users](active-directory-b2b-how-it-works.md) +#### [Invitation email](active-directory-b2b-invitation-email.md) +#### [Invitation redemption](active-directory-b2b-redemption-experience.md) +#### [Licensing](active-directory-b2b-licensing.md) +#### [Troubleshooting B2B](active-directory-b2b-troubleshooting.md) +#### [FAQ](active-directory-b2b-faq.md) +#### [API and customization](active-directory-b2b-api.md) +#### [Multi-factor authentication for B2B](active-directory-b2b-mfa-instructions.md) ### [Integrate on-premises identities using Azure AD Connect](./connect/active-directory-aadconnect.md) From eff605d7a3c493e5797bc9c3c805c103828c93e3 Mon Sep 17 00:00:00 2001 From: curtand Date: Fri, 3 Feb 2017 12:34:23 -0800 Subject: [PATCH 76/90] customer feedbak incorped --- articles/active-directory/active-directory-b2b-faq.md | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/articles/active-directory/active-directory-b2b-faq.md b/articles/active-directory/active-directory-b2b-faq.md index 984af8acee54f..60510df2fcfbe 100644 --- a/articles/active-directory/active-directory-b2b-faq.md +++ b/articles/active-directory/active-directory-b2b-faq.md @@ -57,7 +57,7 @@ Some organizations want to add B2B collaboration users, provision them to applic Your organization might have added contacts representing external collaborators so that they show up in the Global Address List and as email address suggestions during email composition. You might be wondering what happens when you now add these same collaborators as B2B collaboration users in the directory, right? In a future release, B2B collaboration users and your contact objects will be able to co-exist in your company directory. Stay tuned for our announcements! ### Can I make my guest users limited admins? -Absolutely. If this is what your organization needs, find out how in [Adding guest users to a role](active-directory-users-assign-role-azure-portal). +Absolutely. If this is what your organization needs, find out how in [Adding guest users to a role](active-directory-users-assign-role-azure-portal.md). ### Does Azure AD B2B collaboration support permitting B2B users to access the Azure portal? B2B collaboration users should not need to access the Azure portal unless they are assigned a limited administrator or global administrator role. In this case, they can access the portal. If a guest user who is not in these roles accesses the portal, then he/she may be able to access certain parts of the experience because the Guest user role has certain permissions in the directory as described in previous sections. @@ -68,7 +68,7 @@ You can block access to the [Azure portal](https://portal.azure.com) by guest us 1. Modify the **All Users** group to only contain Members ![](media/active-directory-b2b-faq/modify-all-users-group.png) 2. Create a dynamic group that contains Guest users - ![](media/active-directory-b2b-faq/image15.png) + ![](media/active-directory-b2b-faq/group-with-guest-users.png) 3. Set up a conditional access policy to block guest users from accessing the portal, as shown in the following video. >[!VIDEO https://channel9.msdn.com/Blogs/Azure/b2b-block-guest-user] From 50da4b0f0eaf596fb311a87e9920822ba07545b8 Mon Sep 17 00:00:00 2001 From: TerryLanfear Date: Fri, 3 Feb 2017 12:46:23 -0800 Subject: [PATCH 77/90] new articles for left nav --- articles/security-center/TOC.md | 4 ++++ articles/security/TOC.md | 4 ++-- 2 files changed, 6 insertions(+), 2 deletions(-) diff --git a/articles/security-center/TOC.md b/articles/security-center/TOC.md index 89c6dd1d5af41..63e2e02d14011 100644 --- a/articles/security-center/TOC.md +++ b/articles/security-center/TOC.md @@ -21,11 +21,13 @@ ### [Application recommendations](security-center-application-recommendations.md) #### [Add a web application firewall](security-center-add-web-application-firewall.md) +#### [Finalize application protection](security-center-add-web-application-firewall.md#finalize-application-protection) ### [Network recommendations](security-center-network-recommendations.md) #### [Add a next generation firewall](security-center-add-next-generation-firewall.md) #### [Enable Network Security Groups](security-center-enable-network-security-groups.md) #### [Restrict access through Internet-facing endpoints](security-center-restrict-access-through-internet-facing-endpoints.md) +#### [Route traffic through NGFW only](security-center-add-next-generation-firewall.md#route-traffic-through-ngfw-only) ### [SQL service recommendations](security-center-sql-service-recommendations.md) #### [Enable auditing on SQL databases](security-center-enable-auditing-on-sql-databases.md) @@ -36,9 +38,11 @@ #### [Apply disk encryption](security-center-apply-disk-encryption.md) #### [Apply system updates](security-center-apply-system-updates.md) #### [Enable data collection](security-center-enable-data-collection.md) +#### [Enable encryption for storage account](security-center-enable-encryption-for-storage-account.md) #### [Enable VM Agent](security-center-enable-vm-agent.md) #### [Install Endpoint Protection](security-center-install-endpoint-protection.md) #### [Provide security contact details](security-center-provide-security-contact-details.md) +#### [Reboot after system updates](security-center-apply-system-updates.md#reboot-after-system-updates) #### [Remediate OS vulnerabilities](security-center-remediate-os-vulnerabilities.md) #### [Resolve endpoint protection health alerts](security-center-resolve-endpoint-protection-health-alerts.md) #### [Update OS version](security-center-update-os-version.md) diff --git a/articles/security/TOC.md b/articles/security/TOC.md index aa1da2bbbfb69..1d47570da2ee0 100644 --- a/articles/security/TOC.md +++ b/articles/security/TOC.md @@ -24,8 +24,8 @@ ### [Identity management security best practices](azure-security-identity-management-best-practices.md) ## PaaS services ### [Securing PaaS deployments](security-paas-deployments.md) -### [Securing PaaS applications using SQL](security-paas-applications-using-sql.md) -### [Securing PaaS applications using App Services](security-paas-applications-using-app-services.md) +#### [Securing PaaS applications using SQL](security-paas-applications-using-sql.md) +#### [Securing PaaS applications using App Services](security-paas-applications-using-app-services.md) ### [IoT security overview](security-internet-of-things-overview.md) ### [IoT security best practices](azure-security-iot-best-practices.md) ## Vertical industries From 1d4d27812b1c7cadbc70c3ede8fb10dfdc86b0ea Mon Sep 17 00:00:00 2001 From: "Stephen A. Zarkos" Date: Fri, 3 Feb 2017 12:51:49 -0800 Subject: [PATCH 78/90] Tiny [!Note] fix --- .../virtual-machines-linux-create-upload-centos.md | 1 - 1 file changed, 1 deletion(-) diff --git a/articles/virtual-machines/virtual-machines-linux-create-upload-centos.md b/articles/virtual-machines/virtual-machines-linux-create-upload-centos.md index 1983a2278eaf4..33f13bdeebeb0 100644 --- a/articles/virtual-machines/virtual-machines-linux-create-upload-centos.md +++ b/articles/virtual-machines/virtual-machines-linux-create-upload-centos.md @@ -120,7 +120,6 @@ This article assumes that you have already installed a CentOS (or similar deriva enabled=0 gpgkey=file:///etc/pki/rpm-gpg/RPM-GPG-KEY-CentOS-6 - >[!Note] The rest of this guide will assume you are using at least the `[openlogic]` repo, which will be used to install the Azure Linux agent below. From 7a72b08694a95342d7ed9e261b26d5074c7c7e60 Mon Sep 17 00:00:00 2001 From: ArnoMicrosoft Date: Fri, 3 Feb 2017 12:52:38 -0800 Subject: [PATCH 79/90] Update documentdb-key-value-store-cost.md --- articles/documentdb/documentdb-key-value-store-cost.md | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/articles/documentdb/documentdb-key-value-store-cost.md b/articles/documentdb/documentdb-key-value-store-cost.md index c54e4caa09ba6..8e36c3b8b5c9c 100644 --- a/articles/documentdb/documentdb-key-value-store-cost.md +++ b/articles/documentdb/documentdb-key-value-store-cost.md @@ -28,7 +28,7 @@ This article describes the cost of DocumentDB for simple write and read operatio ## Why we use Request Units (RUs) -DocumentDB performance is based on the amount of provisioned [Request Units](documentdb-programming.md) (RU) for the partition. The provisioning is at a second granularity and is purchased in RUs/sec ([not to be confused with the hourly billing](https://azure.microsoft.com/pricing/details/documentdb/)). RUs should be considered a currency that simplifies the provisioning of required throughput for the application. Our customers do not have to think of differentiating between read and write capacity units. The single currency model of RUs creates efficiencies to share the provisioned capacity between reads and writes. This provisioned capacity model enables the service to provide a predictable and consistent throughput, guaranteed low latency, and high availability. Finally, we use RU to model throughput but each provisionned RU has also a defined amount of resources (Memory, Core). RU/sec is not only IOPS. +DocumentDB performance is based on the amount of provisioned [Request Units](documentdb-programming.md) (RU) for the partition. The provisioning is at a second granularity and is purchased in RUs/sec ([not to be confused with the hourly billing](https://azure.microsoft.com/pricing/details/documentdb/)). RUs should be considered a currency that simplifies the provisioning of required throughput for the application. Our customers do not have to think of differentiating between read and write capacity units. The single currency model of RUs creates efficiencies to share the provisioned capacity between reads and writes. This provisioned capacity model enables the service to provide a predictable and consistent throughput, guaranteed low latency, and high availability. Finally, we use RU to model throughput but each provisioned RU has also a defined amount of resources (Memory, Core). RU/sec is not only IOPS. As a globally distributed database system, DocumentDB is the only Azure service that provides an SLA on latency, throughput, and consistency in addition to high availability. The throughput you provision is applied to each of the regions associated with your DocumentDB database account. For reads, DocumentDB offers multiple, well-defined [consistency levels](documentdb-consistency-levels.md) for you to choose from. From 5d0cd80fa2d9b7c5af11a82c41171b6345b5a52f Mon Sep 17 00:00:00 2001 From: curtand Date: Fri, 3 Feb 2017 13:03:02 -0800 Subject: [PATCH 80/90] customer feedback incorped --- .../active-directory/active-directory-b2b-mfa-instructions.md | 1 + 1 file changed, 1 insertion(+) diff --git a/articles/active-directory/active-directory-b2b-mfa-instructions.md b/articles/active-directory/active-directory-b2b-mfa-instructions.md index 2ce1be147672f..d5beca60765ec 100644 --- a/articles/active-directory/active-directory-b2b-mfa-instructions.md +++ b/articles/active-directory/active-directory-b2b-mfa-instructions.md @@ -37,6 +37,7 @@ To discover how easy it is to set up MFA for B2B collaboration users, see how in >[!VIDEO https://channel9.msdn.com/Blogs/Azure/b2b-conditional-access-setup] + If this video does not appear embedded, you can reach it [here](https://channel9.msdn.com/Blogs/Azure/b2b-conditional-access-setup). ## B2B users MFA experience for offer redemption Check out the animation below to see the redemption experience, as shown in the following video: From 82ac3feb64c688a372d2b6d41a259d7126df44c1 Mon Sep 17 00:00:00 2001 From: Mimi Gentz Date: Fri, 3 Feb 2017 15:03:09 -0600 Subject: [PATCH 81/90] Freshness update. --- articles/documentdb/documentdb-sql-query-cheat-sheet.md | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/articles/documentdb/documentdb-sql-query-cheat-sheet.md b/articles/documentdb/documentdb-sql-query-cheat-sheet.md index 6104024646872..eb80046388143 100644 --- a/articles/documentdb/documentdb-sql-query-cheat-sheet.md +++ b/articles/documentdb/documentdb-sql-query-cheat-sheet.md @@ -14,7 +14,7 @@ ms.workload: data-services ms.tgt_pltfrm: na ms.devlang: na ms.topic: article -ms.date: 10/26/2016 +ms.date: 02/03/2017 ms.author: mimig --- From 9e3f983080c7433035fdde18cdf0350aa3e524e0 Mon Sep 17 00:00:00 2001 From: mumian Date: Fri, 3 Feb 2017 16:27:29 -0500 Subject: [PATCH 82/90] resize image --- ...hdinsight-domain-joined-architecture_1.png | Bin 81215 -> 17167 bytes ...hdinsight-domain-joined-architecture_2.png | Bin 98364 -> 20612 bytes ...hdinsight-domain-joined-architecture_3.png | Bin 71111 -> 14521 bytes 3 files changed, 0 insertions(+), 0 deletions(-) diff --git a/articles/hdinsight/media/hdinsight-domain-joined-architecture/hdinsight-domain-joined-architecture_1.png b/articles/hdinsight/media/hdinsight-domain-joined-architecture/hdinsight-domain-joined-architecture_1.png index 36e19a6373fc4352adae35e183201179eb7ae8bc..3ecd41440f914159f7be2b732c6afc9a7e542e16 100644 GIT binary patch literal 17167 zcma*P1yohhyFGg766usqrID2GZjkOy0cnu#E=d8UMOs?=&{ERf(nw0zTll;8zIWdk z|1th!9N@%0d+)W@x4v(#Ip-o$MM)YRl^7KQfuPIENT@*|u*~3jD>5SZ?T@KQ2>zfr z$>_L1AZXZ6KQQATE1w>XtRKs)rPqwc8yc^Fv zW%{al2%Gcwe8bzM*pXH$IXX*jzG2Kt$H;D_p~GI%@hG4CjH+RVIfWKvBI?Kx7!GQ_ zL{6n{iSengvYe>H(Xg<-k2~rXZWE3zmxE{bAFiymviaV+?Fkh7ooBh^P;-15ra%q? zk7L(fRV+++QSitMJ@({{i{9cr#O!mnjN4#wB1xm2d$+~Q;+;N1y(JhTaPgj`!2^Df zDte<4&G2+_a`}C^pS>OyNuR+s@4IcnY~hr-Djn0662nEMj5l%oTLr#NtDEN*{SLpi zw}gjgyoXfvl=FH<5zqqE54Lf0wyj_yR(X{K7q{2F{P0K5LdA#7&_~bg^jj$M1c#2l ze=WLZE`emiFp&;MuX-8wp0zv^K?o3EHY}>=9&uh&gN!X3>SWa=Dg=1PynHdZPdT=} z@)btoSfD*-``XfympEse%g~b*>tHlFqKIK@h6zChd9^m&lUGjQmlWbp8%RAltPX_O zw}nM=;#?cKz`f__#T3`OuY1-IwYS-WXDwkHjmQvw+E^JDyMpri>RL-kv}aDG@p5=} z5~3^C=oudOc4p7n2kHg)z|HI)iPW&B$WJgd)rj(*uk=B~u5=@}y!@~R#nCBJwyz}* z?$l=TJ^hd_D^odRpfhJwIorxL_dc|jdN9UBOk`!&5TCh|VTjyp9jk>=i;HKD@UZhD zC8T(+En7h$h_ogqCBq55c+O=o#qYf8?tS>)Fjd$edCs6Iyx8sqHOi9FajAB!4l2!~ z!g^!N1(;RBLHXf&t{N+{;fJG<8ZG$>%An1R?h6~woY75QmdH8FZn-IBSJlyh>eXA2{q-leC*_CMA6~f5nlKcAfHvEG&OV zosR3zn)OTibCx79!3440no2d?$A!$$ZaSord>;I%@D;~y_Cjoci!8Y|cHGX^+>4v9 zq_mGlj3!esUb5^%vi&}he6!YjLFhTkpE)Inj=-q0iA_b#dmGC>l+h-!aiN9!?fO4Q zY7jfn7m7Lfk90wARf>-VR$e-@v%*#-b9w7Pl0tlk0uCIKH9KfDon2^c7z(ycd)qa} zk)@6Wj7+!3)iRu!VcDV`K5c$QlYJj2HgF$-9`wQppY|YKN>rOIST3m0N3r)OXEc{w z?9eaEY9H(vF4_0@&~`lRjjXQIaR_hs&-n{tdxSwMY$h^Eh5#u#dwCjG!Q2-jy?gc? zcE6T_NaJW|tJLWavID;}=Xp8;vvo006<#G;B&X5gjDB8;Mn)iS#CE|=`V30qhHGSwn zUN~rK!Q#N;`$Vs$e8|nHA$0ua;O9Fz{n@sBJ7>-3I!PGCVjlC1R_+JC(={xU#rX59 zo8DQ~8(DAba4tk>i@Lt?S%!01nY0(k*1^PlN1_QmyR#XPHv0?N*NH3;j82%0*XZP@ zMP?Z2v!N{O^O>vPE>UP4PK@H)BRh3uD0pW_e_)>C`TW*b)HI}NNJYt+L<`#6{dd9g zEYHE+LL`Z`sW9p6d59&yA?@y9p4fVYCIy_uuB=iyUNo%$%G)q2BWsDz= zFwg4sMtS3EE?HD-F3RAi4K8SdISVc6zT_90h6yk~D6-s|&e`RUPr0|Sh$p~vV1Y@=UXVL-@YUFY@Xxxp1Uubzp7lq< zA3G-4Ev!k~Dr?~LY!X3y%CMXe9Rqyz5J=LgmGe{5Nu&!N-poq#NYaL=U|c=ovHs{$ z-7MDmO3xStE^P3lB8}AtrrfH@3d$rcN^=BYyBmnx5a>_UAn!^O@mI3FlRK_OK9?Yz zppFTRbYHW;9;t+JQqb+C(Y+(o9K)|pYt~s;VydNnr$&2Q2rJFYLLAV$%*~JZ32p1W zD>hnD2&vKfR%^sEnk8ZAP!%h34xVgq+MvLjF0ALe0vOE%yR~-c{G$l6)C81Rl$wun zH(|=vc7s6{6z^(Yj3$IcZztI5IqKZw-rQfxIVh=NxMX}~<3G!i-K)|~>Qmyem+vy%7`yh>TNk3!#ZA1A~ z=r2{wj?FkDOac(su|c&DA*EqYftRC*Oq7TbniQ0HLI5FJB1_^S?Y?hH90;D9aqz{- zB7U-X!^<7X%;ME4`@m0oeL$)}j4!?QqsA`Po`9e$zj*(Jo1*7KQfKzXc%z=xQiUDU zXzK-HpSl6HOf6>jPP;^0=WEjy?&+XRhflDB$d|3|#11CY(jm!rY0%djR?nH#_0#6D zh*>5&UcV68ILMr1*D)S*39VWUxt!tBwygXumq)b_?Y^&+O{!uL9PCM_F@ucF49|`T zYJ7yGd2KdgI)ePyJxgv2l?Ww9!TO->>o-n9$jUL+j2S`MdwShgzebAqJu1pU4)1Jj8NF;XJN6jzW0n&=hbIP#D2UP03Yucn`UZ;7q!m{B64 z6J+sUFYy2B&kC`c;ld}WRF-h!I~18vc;RDY(^%EtibvWy4_`SIoirwVvn{Dp#sL+gFiBIzJmUt++$#Z zGeQeju_~#+5<)^qqedPSk>FyAj?zajoPe&UZ zijhOWZB? zSn?$mi>N2W-a>B}(o2X5|DSIA7i{!mOXB}v=Tmc^kSN8N*gqT!2IL^jLN-=44 z|JTRtVJd|FL6GA?L4R*Z2Q~z0dBm@qt-~xIQU>p|_2)oZ=*u{bK!K7n;xTN%&xRWE z5|Zu{J(${-?EC(9RU7OaST9{<+ePM}LhKHFh-z>@RTSxMxY6PDgdBq^R2)89rC1#? zV;CRucmpoMCqgUtbc3VVOz$CXkdbGc7#DcA&u^PPhoG%d2GL>#pmZ3w`j^hOk0v=$ zJ_Y?O&!N0My!_9Fx%k>=bd}%+bY!8S#{qn#7S!5m;AVdhQSASP!Db057PZ5`dYEsl zgs=L1Pm*L@J#YyLunJ{;JAI7PZ9QpIGUFr@)Dv0W(gn{a8iN8RvP{*pWMdPfVn$Ii z0;n`RTImFm2zVw=p^PRPWRVUZJ?!;-wZ6|{0bJa^aGbtHv5L1kTN#Fl2xWotY2vJf z8PEB03L!vp{PWtzFJ_mdH^?DuUKF?XA!togk*WktVoRVGuj%*n?DrgSnK)J!mw9ya zK2v~}(P)!!);GuZ%3JA0+=ljgUyfbLLE`yl>G9|U7OWDoJQ$hOrDYp2^O>~^+$OsB zwutJLby*!QWgU9pjW^GfC;chjIHEFfB!vkCWK$rb#@bNc6*_xdxHYO#X?HxdON<8y z+txT1{>peO?yc1hGnTqOqNH5w? znf(KO6nr%d_3bTII_AN-XCGeTZ!=u^P^0xu&%e-I=)IA~*ylDx$lX;=#K<oW!w4@8JApzG@yhL1%X2JQ~Q`t9Jw|%9NkGj71 zuS{+$Q`Day-R)+(Jy)Vdf_Pc06mR*D+(KjfNyqWj)~hjrtZ(F4|!;2%i9mkwF&i_6E@Din^JKX3s< z2+~;GCWw&LUq*g`b`I$4ZJ+7dB7KfNDBLZ%mcu!cjBQwYU>s)fVX+Ej1pNAvXdp;! ztqvEN%8t*RKUPF`^;bZM-yZ>T>@;MceQg~x0s*% z%r&i$?}(RV)2nS~yIQ=?4?drcw`ckVI9uqNHz{kop<<4Sz`Y)V>X6E@yik@$?TlH?$y4`mdZAUG1i z3D}3?Gq?*foS)(Ze8kSh6oQ)kl>T$1hW>VjP9vkElKicPXHNnMTg)x46d$JQ|L24OAfo=iMF!-#e^n5cmMzK z3YuS<0~6$)lXe>^f6h~*j$r?tTkuBvhkeroC+?!Xy>szhi6HG=Y(fI2dAUyXE{El_ zfqK{_#k-k_;^UkBO7#JpZo==*8&YY2hWYUI>Ck*~-;f%s{csvxNalYbv^0_by0QOX zaXe-n8$XvjaA!aaIwtKeD!D^}YB@v;{HKC?BH-%B9qYd4;7CkN9CP&1(D*oIWNAtF z*ZaOIn}d~gG=DJEexB!N`;Q;Qs;a8)`yOs?b=u^GZi3X*aD3S#7G#HCCUz6DvJPHn zYnHk(E~yZepJC=W=xw~j#9NC^SD>q2tEZQVii$F3BUI7SLTb{Fi;0Ob!C~q0C6A1Z zWFwC4N~NFsJNtTmvr@CvgpCj!mynto*3u$iT{lm;U8+{1^7bv4`P$}y7&QmSgxqhe z97jEXN$6CUio$%9qrEto+epmoF@HS)(|HgI48df&Euh!DiqGn~q$jHbrB`(*r zJ72Koqyp^(4VO_;!au`XoDuT_H=XCvXZ|{}PeM{sG=Hqanls8McVJ+EY~_!HC(`cj zE?b7ey+E{>ma3s)jy47YYp@`HRr%$cH*YizD(aV%#=VUU4A8Tc!a)-WW2H)6WD%PG z>elKqyYgkfZM*o{D?uP|FmIuv5`TS zM|rlPudvumf?Q#cSZ;tmi^tq~zRJr3Z%$5PbZl&FiOU~qC9Yn6t%mV;cOTeWHSEFF z3JME5joCzURU(X9z#Xl7ef#ze44^S5vE-%C+qZb9XJ;kfvG1!$^EXjL#VF?^ySO`z zJLc=`dI%aB`G48g{n|hO`t4g#r*YMOHE0z>3hMRswaQCeHo|8rB^sK2JFa{?=iVn- zb~6=jgB(;@^uoeMxQ}pkt$Ta68gJi<=BiK#3;Xvk83S-_O1RT96@4kx9wT1Nx}l)X z$WrIJ&KhQU_rOYUGSjF)ghbmsre;EvKpiicwCGN3Z$oM7vC#dsjaW)JHJ7`o*mSav#}|8>0V$I2hYBEk(iJG2^Cwb^^@H%1`(n)N_y|Ed6Z2# zYcC~*I6gjpgTkz}(W*d)^ZUJ5yX)aB*;-)^K5EEs{~*cL!J~PVZ;#8Rhr`yKx=kga z!cF?`JcgpitR=wQRiIOEuM}TkCPqhr=$J>pMW5mn>``0?QqheP%ZN2##^=aV@gV=HRlC? zyptbf-4kES;77iVPj~+Uz8l7MiSdc%nwq92ou8zfPPHk5t*veM3N)bQ_iyu;xTqgf zQ|IyU$3=ZnP*6aGEeD7RU+I(GHTr8feGD{j!I%Qj4!OzdHC*Yx^ z^gJm!`8HdcB`x~0*=m#w7ZA)7*mvQ13_y=nS^(D*8IjJcrlpsO4 zxw-xAKxyE;8IxxF6gVjNdtL5H}(UK6=#|Mg-b}bZq%)*_ZPH0m2Gdg&ac+ zJs%=(FuvXiMhp5}%#u<|VNyGQJocMDh?a&867>oP6Ps{VqtSDLkO1m2>&xj!8{lsd zgmADTd>}-uY?#kpR8}@*J6|W3>%@1QO(BJvDfoLM$l^5QM4LnyJt_iaz5Zs<;p%Gf zt?R|#3;D+e$Aw=L3*n!I*|Jg72ptR)?jF@4@!uaSYv-h6UV}9CTZd8r_O$k@$`}RZ zSw~dUr3e-~OgT?m$jP41&dxfPF!eKGf2SW^0*~|N&|9mvLRdPfPXiE0O&Lmu=D@{E z2I3$9{lV8^0z!yPkTFo6zW9}=Ehc(qS$c`5z304MT}48nqqfSp^sk_=<=?*4sS3hf&$ZsoY#81rbZIVdnv83eRu!^ z=^sjj#Gx%ze$MdgavYSv-ZLb2k*u7Fc9SRmzC5j2z+rh%=uA)UaUfqhMMY09U3M$x zcQK9{xcpKI3y2r+(Rd!A;SfkgW|_E#5xXxc ztp8@Hy`_bOAw@0*E?=#r%(T5R8RW;@va)9&6u`V(HLwq zs2X;?VG`&)_L0ceUpI$a8$a9NDJwJ>ay3hP2w9=fShcadiQTZ)Hk=1IgtRjgfToK+ zH9#Oy{C_Cs$ie!c5RD^*Kh$!nsM~m zXP}JAC-y{UlUh+7KoXFDxwte4V;CDpUjs#6EJ37 zd+I*xzJ@H8TU6A$rYrHUzoMd}%X=eH*6!uy<;&rtG)wW|CQ*W;larHe5V6>eK^|)~ zzTT7bX?OLtkP*4VCxy{=rKvT08;DpID(9ctXj}K4znp$T=K@fY!Zn z?k(ubN2*z-y{1XL3(+s(RV~rD{}BKHZ<*#-&6l|SqobE|mA}9ZHXI5OufVRJfv3Y9 z1fR(hjH~JOVd)m3_oM#xtW?|S4zJz)ex0_`(~}e@-Nl7bW;6Vo(i7m#jo`^_iS~- zY9SP3!u8Pfs|%Ma6!Z4x14R;`{lJ5R1HYgyRpM+V`VmZQ0PHlYU+3lJbrS@(SKV6Q zVMFvF5g6uM>u2ey_SVD^#?^Q%s`C5IU5CwdOSDK;{-EPu`oEk3Gkwe@cV_<QLi)r_7t2qJ+o10HR%$?ZdKDlG+lOEv*f6GAdmL zXMU1Le&Z#vEkm8*8_w1x)&7j?CMf$t6tVj|w}eWzrD6Cl*a2);ZVP~1awMIQI&aw4 z|5w5@73gT_=<+Hm;t;2?-?5XF3LrVyQYc5aduc>oCfrLnZy+UI6J$WlW*j`o!X%;Hx8!6+VMDidn7Y#s4s)y1dbcjI~_}V{zJlQ-9-}iQmLkh4$ zqSA-&gr%t7_kOuoFZA$y(1S9-Cqsk^85)lAY~GVlI;*;x0IOFTu(JJlhNrjWUPv8#Vy*3eqdV*$_vY8T*70rpWsh5bN4pC zR{tc2No}V0+vWsQm!H(MVFulyB!d7TYHzcV^0szT7iSf0J>q zeV>pR4?_z+$Mdl+nk;D1o8k`aVg#o(XJ;mDV6xzmsr5u&ql{~%6(f8Yz_HRR9TAb& z8lIYF3Gcf&&luwonK~V=dx1vuwXGFio49h%OghFy7*uDy(`f=U0SFL?b08vMJ&s)dTQr z`e-F}w^JdT4&tyvuQlQ`QCu@L2#bXGIpfxH@cMjop409=N4{NvVQM(lrsqv3(fZNo zCxxr&$;gBgn5!*aq_*p|ur4$5n2#Im^c>O1&=ekw|UL#ZK5+%k$o#y z@sGN)w33+c0K|x_turMoXlc!>`mPb%#xlRGXboXhC_si<=xVbKS*~uCFH@qWK0e&N zR^l}5qes^=K*dMhJbL4quSmdkVBd5`p7{>lBPiTK3Zy%yPIu1sQ%51L=IF?qUet(Fg z(4)kCdKCVgofTO^tGnf1RhU7>ffkfq17^O= zqr$2yP_YN$h=ts1qvHV6%xA`rAT&iWso{pnPO;ZuJJwvSAv=FKHl#c-9`bu59$Q5M zo4dp@U;B}~Cu?mm(p}IIqS3xHtn$PqYuQ=z16MbG7=}aodI2O8ksN$hY?e3y7E6v_ z1D0rR%X>ZklZ2A-XpmYD!;UlpkF~Sj*sHBukFkjbr67RxrBU%&0|Z!}JWGU8PP>P@ zHJQvb$OMp`U5CEy*cT@TXY94EA7HvtsGKRgk97HEs{kV@(}?**NVtZ`JANiwYP}Ec zm#pfqUEwAdS9T1aY6F?$*RmIkM|d+&R|NditOM=y46)7?ky&Qc&q7GV!DspCj)0Dc z&9od&{fVygH6Ju|UL%OGsXi8Q-MiXp7qq^%y65l#Bt8gag4z!jT))&eSuBtJl{vod zyJf1*b^1n1?YKchesKgY-nI3aU>D(sE3?Vz>Gj1X7tIB7|2t>pGv z69{T(PTmO+zG`T$yzXWGuxu_S^NW+lNssLn4Kc(?`l?H2wH_AoV9S|k3_{{rypztl zGS7$IaoU!@+9k5!)V|jfi(|V4o=#*ix z9jl7ypPG##3zLr3;7v}v)cs-9G#>?v27{eFu0AYc39Z0@8Y2U+}n1Hs?#omrS{SoW63rBW_}r?xQURog;1m!Fwthv~84dAiEl?}5?dqsIq) zFM|lm1_!Vz?t&JcX|nohU89plecX81H9;mK4;ayFF(|VhxNWTZe;Jeg1cEZ0+nydNG56$3losA98CTSwYdcehUpnuXX$FtYZzr zI7LJ4KC#uE4xz)@ACCzPBfHS`Z=9zaW>*cA$sl;Pl=vwfN0^LV^{`dUauF}Upgki3 zy|T_^>f2lGhIgdX<$BU7(SQPnTC74tLGTfns$8`g&o#Nw1C+^jKO$nzj3%j|L1CH) zdk|;hEZumpL?^v_qI3uDer>!^ezw{yys^E$9>1=xE}h*BF_lS2tnS|l|D6pRB!fk9 z!uC^hIktKsD!Bn5O&{+tH9m z5vYYZd~}1Vo?bNg62a#Wr;&{gYF{Ot1paQE%--k|&hrhu6mW$DEqZ#DWEtP^X(sU} zOBzQM&MFBs`g3Imw#xCK?}=W&3uKp9}X=3B54r80P>!%|*JgR%PH#fdxfS&&2#whu7BE zM;S10k7RfKOko^bULI+Al`L@-aoDe@k#ium=H4{h!#w9-7E)W%aBV?jCLC<&MAdgl{1%5MGoIU~!%J;FhWMiZC{S#uC zesRK;pEfM7vtU+J&^V?*3M*{U|LSta=CY;0*m*k2NH2E&8=l?aUyueq-*H#OFMi$N zmd<`Z;yfgdZM-SzJc(Yw{~qUUF`TpiqU#5*kpKfn4+;yz1kVcU6oZ$7eo_Zy-}_>k zVSg?A1v8M3fdUA$8KM3WEu&r}@|N(6IK$dH{q92fG>Ojdv{u-!@x!zu6L>B>jO9mY zN@p2Y4FA;0dHDE{L+LK!73Zf-qz+mGXaA0#u~FZcXr%lRoBpm+dZynt9-aPGq@|Go z{)M4kozEXA7s$t^hl@>r*-)^eBIGfFjP&8S6Y1(|7HKw<0}JA`yN>XbUfsdM7nkfu z;72df`}#f!1ima3*X3Umj(W2aL?Ftf`!GJQl_o!$(rPpH{ax>Qn|k;a9GXYaXDIYk zxG0dJ7*|)?ufC`1_I_e|80flMcU;++EK#@bD6eB{`cOz9&Cq;<@=QynuW>f1nytGc zoQ{qG;y~)VuATnTt5a#zd3U@J#$X~6haU6Ag1>;Oy*-ms7B37$yUrHR)Xc1>z4)^q zF%kxuYeqOfiGU|&Nl6LI#Gi$R(Q?-(+Y1HqXL@}wu>QjPBx!C$Krf% zYPQM*4iybeFzC+%5}XPms}F>QtMZ^{Gq|aFr`mxz3Wtn_^f^q$0`d zg%f?AcBkgPkVZyBd!a!#&dzukqZ}C%gS%iJF7_=Krc|r4x5A(q0%>;t13j3l>3LUl zeYUMvxYFQA4q6`_6@|*l$vJ!e_3m%6uq22apuJT)t_U$1wUI0|I7*wF(>%q}hwJy> z`nhA!mM2B_pQGdalQ*zz>vRvq-D!0ZHxh|nf_5SxAgC~;00M8cYFqhGVbnCn{s(M_ z+QKE}0*eYVg&k%No>dS{(EYW~_2s2`NT|u>;Zj6&wD>c6mpxDz7HRIz9UG4Gil%J8 z9H_L=!ovNLVqj@Tfp~6ZSRwfy1tnlU=u>)X!=IQA?oE}#K%xm)rR?k&Gcz-fw>~-M z0S*h7y*`WA85RUP!5Qvp0xGTOM<&CT^m$dDC-JpQ#?6fjsFmOmBbC1+iUqGIB^5Sn zkUwSHQ}G2TCqVZT1ynW%2M*vlLF8)o(bLoC1G<(jd4PdDR%+woys)q^7s#@Zgp3T7 za!oXdsSwod4S#ro($(PLAfT(k1E+HC!jOZ5qh|yBN=!};24@DcrH)(poOcd#Wgeyo zXP>idkVl9EYhr;7d;*$rC0wN}cAqnWcG{R*+{Sm_xIxq1{J9Gz*&Ay}5YiTGpR*5m z<=&EUUvhulS)1wSlmRjiCgV8$>csrJ21_gyv2GoLaW8R3hIm!$8I-CRBmQq`91xMFM!j4r4a(F#a=NXQ~Ah;*_^qu|Ne?E5VJg1Pm^qSOIbO zR_N{9w}24O!*mV>tntnqAb0UA2glz0Q(H;plAcUPMVORGkY+s9(g!xoGfss_?K$`XnK|h$3BJ z8$t&$gg;|P2kuMawiglDxRB(+4V&KMHv;xCpySB7oXtL)xX14zbpQnLrLvs0AgCBiPId=_Pbsyo5Ivbr5gJFzFIDatk|EC8es}sM zEXp|leWRj z5g<;eKNHUuSCo)l8DtQ?5|x_4VU^d)G0Qx*s!;Wj>?p)m91UN{2OSi%DysX7#xzh_ zx`~8MKP3sl$kz02$XF2g)mIRGLuY;hhYZT@(K(s*&pE&oGdofGX?u2)Ex|Efr`3)K zjE7==TKAEXB$&u(kTfz6^4csfQ}3c@(@Tm8W}BVVp~%x9Gxob9gOPGA71YB2ex3R zN0fti+{Rb)@Rz#J$=@NZdOMW^-~~$N_tQK8zj|NXE}Z zf-6UzFP?B?OeiJtrwmXFezF!$ej$&fz21zR z*LT4iB*0892ErWZNImaxf;%B8aIWqmJws)A)QlLNGUd|lLim`=Z*K5~C1Z?&wGb%todfq8pqbf%`c z1Gi{hE&{+|lH&&_SN@KY#``WN&znOH^|`RBFA+`kMEUFSwTo05R;m>8@z=XW@FR#g zEdN!n)k|8>ZDHZ=Ko1P+?IwZ`ezCbwsMu3FCXULD!bg?hat%2o*JG8^)g}HpIM_4C zKQ%SAzN(R}gcK?UlOh)y6Z5P&h>n>VT`GTUFZ9W%@;amY!|T_tNes0>!kFy=#tRi) z-M!S8POfplb3#Q)DN16__$&{vg+}ZH@op;}Jv}ugCCrm6V$Y$vRoN8T=#!b<1fGJ3 zMk6LK^oxGUD%OwK5SZE^`XYFd{68Z4vO=K{u=SuJ%?)XD-JNHGUAwnI<4X2g@1zrn z{7Y^wOtP58SAn@doDKj|qBacn1U5b`$N)rssks=LzA$Z)0c)VM5YDAH|7+T$7r?0R zsi9Oh7oH!yPZ1|=9|;NW`-C6HZ0FrTUFEi)6+xfGbddj#hpI6v?^5qvs^#HkU&FS$ z3KXTMYyj*G49^Jc7aOrEZL=0~iDt=gDHg;ExwwIU5y<0kHp;B}jR8J~O;##F786B^ z5s|3SsJ|40o=Gdpq+>p#+CHQJc8dcf`uedC=U2-EKUhnDx!>~CZ?lzB8aaEatzVNo zu>?k`>F6x`uSxEAsMCi<_VPYIYjG>Za>9awhsmNel-8%Ia7D@|{*1819= zht?(ExWX0o@h?3m;ZXr4=cF2Tn(4seIcvw@Ef;(TDK4g-k?q{^4z9(3RV(kL@* z%?zr$h5!o`AqP-#uyJs5H5hv4RJ(ssekwW@_BbS&U*J!uW|MgaNvmdq4-J3ED_HT@ zbNkDM&V>gh=xW0B!(?Tl&Y=trP}{HpJ!3uuKd7PuF!u2J3B^Jl;HlFoyWNQ@HsO(j zsxSd&1R*Kn@%tiE3{=brc1@C}SzpQ(0S|6DE9{^hAbZe=#Mi8Z)t5J^aG$BByz&2; zoIfO3<#-|f;kl7GlADzn444I}@&FYlFvg8pyQZALuHM~jc>3K}?&Sbm@#qPc*6Q}B zMXhE|YPA?~aF6>Er3s~&4F&I-hn-#N6f^=LadBH)22e1nyv{5Oigd;9vjlzc!75-~ zEIf$7@`-zB_iH6g3#Ax)y@kxki{=lEPnwB_(wUtVL-xSmlAKIEvgK^W-j^u$L!#5E z!dCGaY1~HY_v1?}?u99mzHHM+9<;}_17!;ix3Kr`cFQO^^zish(+}+`G1pgCBnH)$ z1w+@rfAT!xlGm6g@&J(#rjxa47N5b9f4nICh<50|YQ<}?5>+3k2Uq~7aP@3PW%mX2 zM}M%gQElJ$y}ejl?F@d(W=n=1GOOVE*UCzQc)eC{E(Qh$Od=w%pQ0f@FAui7yj;8K zJ*{S?VQg3!V$0p>;4G*Wgn5tMkvOv;M-FPU!AGX50wF)jS$oo!3uuL)bsP-aWJ5oP z020Xht`F=0-@Y-VD-=;iGV4?byuZENC@o^Uvp3-2Zkdjf&3zp{k;bTeVZ0?svNe*;*sD0! zN)`tefbLq6@Alcu_5mIKE51(;{Wu$!0cWEthK^n-OGHz1Iv{@mHZ{QUYMUVtk~5T z@tAA5!;U)t`TOw{YCp2&Cc?`{+*>3Si2Yu`=C?z8Lp?vdZ~dFM0{&hrmJYEKtUgZ0 zs^gz%6r=mSH#AF*!u^W?m^dx}iuJ!)iHB(t%$1uTxJ3vk4(o?W*H|Y&CQmUON z;AV$#G&QQWYia#Sa>!y>kbD-(%b+ZL&xy}!xaeqM*@0cHnT{nH6Icv9l;}%mc`7fv zxjaIM*vF@`U?MuFLjoK@-~n;cG)?{e`|mqVK>o#vPkYy3kfD<~qS~MeYz`A&94acb zyq|+~oj+#n;kE}*ZZ+CZowkvL9QlYzf$WHWPIJ@VIe%F~^Uw0Cu;&E3Sfa@JkI}kec}u(Db2P7tY(a zv!&zZ3Dzm1qoIlW_=Fq8qd;1mSMj%oGN>ym?k3fhVFH$58n@8}`?VKh&cetPG6`X) z!tjT#dob3G7KXp5o{7low0N>VCli=;?6D|WMaIA&=&LO=YF~cf$Py+8euVq(*ebtY zZN9f(bBXfn9TuO==^D7=;>gv&Iv5LlgI}j?37;W?m0jdM5(<-c6$CL@G=_;WZBSLq z%4Q>^&bMF?26(T+?H+&`Z*poX7kK7?Kf=V*SDK8%qk3Vo8$j!_F(ngJ=}0w{K`|MUI5 z5=d3D+bAyVOY>4L9zLvBvI?so*~Sv!jZp_#gR*B1y$VdDv-_4a34*q*@y{O2+1K97 zGzz)p9_0|`@a(rv9Wkaqx0VC7k?J$rAqKH>rtX#T3T2{dL7Q! zp@C!uy0$M2{e_CQ_RAsw5DB>W@@MN+FMqLpnb}VS*bR693yO=Q*`>ic>}h=gsvH6u zJ|uu}&mZ_hf!RRQ24SWMlTy=jfL|{|=Z91x@cS{UfF;|Kz+#gj<&GXe47IxDUCvCv zF4@9kboobAxMI0kJYSqK$;BG_(=u&~Y1 z-P2>T^uz6H72{~bYQIff;V%u%y>=Mk0HN)IHbYZW(^X%wUDdgV!xN|Z1eO6b0?RMw z)ee~WnATIU+`7)jbafVk%(nS9?-*3ikeYv5zG#4;w~>;*Y+S^A1sqQU=I?#Z z&0(bNAiL+@z=}6Uz47iBm-O|ke{M{SYawYfO7Tt(>O0lD)K2zi+{~_6h2IHU@|_up zFTNYuO5^s^_}46+pUT7yq_punoa%9OpUGeyGK-!1%hbn8UdI#ePnUN|_c0tV`y8!p z%ex%k$2QGghCA6aTKAd73(~ox%SsL%`mY54RNr9RCJ@#}JXJ#N0n4BkZf%maC5IQo zWW=z#<(dbGiG!QkKz0B5^Jn+FSYSs1R+&gcG!HO>d6(VRoX@?Uh3l4wDHYccpXE*2 z=1$p$e`t+EY(=MA0ptCpu`%6}#tRW@RYI(UFZ7Y=y>+whncB3kS$u@3zI|v4KVMV7Yan0y8o?x~tmk^JB4k|too0&GQAZ2o^7Q80zTZVcR`aKz!1uB9{pCvtGO^pnMf zgup+|Zv}WtJMiBFN}m2NKq(vG&48-~ks-zQ*UY}H+g|5y#-VOG;7vwiNDd%+kxq!E zX~*K6Sg*ohKWqDw7}7@*Y>uF;K*=;wi1Zq>0Wn1O6~*;3jKZ@kkh7E3{B-$Mga~$q!HdpfG0B^p)PGd5!3^0JsR;-Bv?#na zL!6mnA=A8{G8Hkq2_x|FkzXZ71yOu}LnVB}>zVVJBW6?Cfk8AzWI?KP6B*h^0ZlFg3|RYLje-No6eJ|zSqxib5Wwar7#NuU>=V08 ze{F$Uq>v$oAd30rkn-PFvKGl&6$*x+W9I*H#se#VNW3VwA~0UG**-bV|F5q6wB_&V zz;35Ccc-TCq%Gr(-dGJ&c=j-XkDTGCozgkfb;TjVSlHM>Wn6aB%C$@e^(69X%*9Fc z$U%fulR4PktN(jjLTXuQvE!#_UtW2`uTiH5{t<=w&a8oLChk$0@uV!~J}HY&+ciP! zW14;XX7)=6k)a;{-DTy@!#qBl8o2Ol{QtAh!3_iJKgYwvihyx~h;)ZQCOlY|F6kgl zi&h`@;QcwqmPHLJyWd@Qa|Ud<2}^MdgS}DNRpX__g}K{%pGMCQNsTItSwD<+8h+Y~ vJ^zU_?y1YqwrJB*tw=V^S?{p$h-3y~l5mE`(18DN0g;tdlBf_f4*Gup1@5hj literal 81215 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

fLRj32%W08^qXU#ygswcqCt?^VV*M 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

N7j#&8IKNNku| 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 L+}5np#3SL~jY4%8 literal 98364 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

~wVQ>=Ks<3(ne)3}T8 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 literal 71111 zcmdqJS6EY9*FPG!1sh^eic~jjMNmLQdWnUiC?G|UP=zfmLV(Z%1S?3(_7w!FD$+|p z2)&3j1qmW0kPr|M0t6B%AwWoSR>FS&-*RTJBH24ta*WyJn=T)BXwtLi`E7~W zA8amkPv3ZX!oGTGIbQ2JE?Z9(iQCarWp05)eo?dDAaFEY@|$|HPXC&NwwBf*V8z@I zfud%zdj=dK$tm|hyxHtD zpvLVEVDreLVQAxwZ@=qmLagz+J{Jhgmmug6}W_%%@; z_e5@+c%3ohYcw9<4?)^knT({mz0F($h*u^@oGFGs&p0fMTg+JvdhkQGFfIz|^JxPV zedhG&eh?@+zChxvMAsPo*X{1xidy6>O&!6%v1wHC(BT!W$dwPw4YxCV(X%rD9a|^a zG3Mf%D>`;0XvuoV_paT~Q5B3lU4)!F5bayY2wV73Zu`edSK?}#W{-T5j{WtKR&I3xx(|Q(^3suyT~b#I?{fx z{{+sK>Y))oP$PTZ-F99e7>&U3nec;p$sYv)4t{#}1GUzAq5walcOeR&@i6kHz&mo$`;8s?D=kCu!IjQdvI|%e7%_+Uc|q?B!vHTgLp&UM;PB9JQ*~E zYF;)pkRvxiKEssliO$NnmA8mW=O(9I#J~njfgF)(Nl>PDiW?F|3!I(hhkXU{ZYY-~ z`;~uYTK9~_8|*y)1*N))_6KeLGI8kiKAkb zt!bM<7yH<6jZh(g)?Av_ssk6a7TVCqTs@JQ)`~LId5B;}_`m_&IxulrSgYK(HE8+| zkED9~^;a!6z1=^meT2Hhb2+NFa9cRL2&0?w%dfr1f7M$t$JHoNm@fL3iBAG=kB_{s z^BP1A&b;MxUGEJ1240iIBEPSOmm7A(`)|0c&Q97Il)GbetuJx~xo;&HTz{-#GKltn=}gzZ`beNu+?=Jrul5C+l2j zdk_>^ce<2DSyW*e&93u;04s-RBj$vlxa~0C?ToX;=ou7pxtBA=@SyXlMWeL1Q(SBD zpH#TKV#C;QGv5WFr~hK|I&U2sqETg$I|#BsgcxPZ;DY_J>u;OnMmGreT`HCKHo zHr&)_*kf3?2-?Gjulf!|3=|XKY+Xp0l)32R1Ia?gYP4 z0KGXl?5~N5fAE+FuLjR4-UKpVidke^{C{^6{TvDEo@=Vwpr01A(octK4ZV84yb^|9I%?!Mb% zfxP3US7$er+vKdHMK0OfGE|X@XtBv`e4;hZ^5TDc7CJd*zW)!?Wd=BTewR6{zjL<57ujhoBKSGnJC}X`hA6209<*v7> zwjS%67f8=6SskjN@NZyr<0?*A9S-)m6R(~gB&~A9YB@&ur(Vgp8N~_yM9Q`RQUbND z!vgFID-*#q+YjjDb{cO~aJ{$4^(?P6B(AhdCo#jX(=>gx_J_URenio0W+#82t+(BH zEK$twD1K(0zo>os`QR16_-RHCLR@#~nsQ;skhyZW1l^*Q^`ennnRV@QRlz3B7;TW%FQfHch4V=Q*loQM%{ev#8j?jy{6T(q7EdYa=etg@w$~3a zorNkV3ZrI4`LF_QT&!}Te%k#iC-Kb;TO9nL(=>&hAvo)mDVG=V1P0D`NqR3FW14St z!B;A!y$sr~?0bWrgBhN-XRST70<0iqz%j-b8|Z-dP8i8D)a%iZ6_5*DqU2HDji}g4 zTo1GE-uQ@RO`i?fs;gOix<}+!x%L9j-qJyze zZk8GmA7m zDSAG#duUSqd3lw6Weaucj|gh|CU!zYtbWqM;OJ4-ey&@u*fFwm^DQ1!5fJSR@pgL^)x^ z7ZvXiClji2U!7GGT72(l<#AFY&v+S@aT^2inT16q2SJ&JSi3ZLNcB0IT@3%^D|M58AHkz|N9S6f zoW`@K7RwFj-!!g2f$i>6tLh+lBoy~XT=muAtOKQA8)~l%o>Yf+e{{`iZ6LeMZ+Y68 z2FIyQCqb>zW`^QUr>d51mYFvmK?k1WZX;W6`#|z9-~Ig`N2}bV(*z|fJ?uc^th!21 z&`4ml|JJrs)|!8!o_2LzO_K1uwr1u4bK@K($~VC-)r*lR(g&>cO;fjNt~B%mqttaS zW_6p^jL*3W@XDU3H~vam{LAchHD|PF$5n znw*e!3jQB$hkxYLoW~}gqm?KB(e@6vDx6;NdDG=5M~*0(+RC^Kh>@Hv;9k?FsL)RO zWn6k<{H3@ef1+}}#}Xv_#ciRchj{A&{09EPnY`*SGoN1BcZ`C%;Q4ddOv6@f`rAUP ze@ecLWUaHN(_6|FKH~MVrA{L+%5z|%%KOlTYi_P!aao{+vIkRi3o9lRaap zNW3`xfYEf^+lhY8cPC{p89@E=dDVKZth3F&v=uF^-LINf^>=F#;PN8Y^T_4#{QF8H z_z5a=%~C}Vd3zJ8Xr83(JqvzY>x zCf$+USoK1TA_1XQoo*rx{kB;F_3ty!J)l~`JedUh!TS8(fv+lprhg90q>D=Y{uVAa zXNP}pnxpD5V*IU8nR;OXtKCBnZVqg|YbWlPwVbL?!`Ma~C~R!;B6(UniGMo3*+K>PAnbCJn zjLq7EY6gQf;=qPMBkEb}{9QP~TGm~>sVq~CNhm^(C>o77Td$8bR_=S$myD*ouc6yX zdAvGhu#L$wd!kI;bnt6q9(39oA9_)h>uYP`^R{VYd8&eJ`_R2CFiT4D3%UHJ1LdxB zfX{lK-LB|ky!QEs=iX-3{AG2~xZ|PmYb<>;zM?wfgm3Mc!Rxlm2<3mIPChO>$>dB| z$m=UN#7}G#JcO7{UYsbcd)WeA#LLzD`oqQXx#A;78(s_KG7Vo$nxeg;!>w;OwvK=)LJ$Vw%H4~|3GGJ8UMVDayE&k&rX;^a zs>}Kt*AzZg7)i@Wo><2*`56yR<-24jXYH3PatKzG$&R;$FVXV}6W(rmaT_&4VEf3y zpDD(KGNTS4EVaRfwa(G6uv*&H)aoLGElrpMSwE^hRL%ITW-a1Q=*{gJye`!>jVrGh z>c)1^6rV_REL<$~)}Eusk$*x1%G7PKIO^2}a&~e5t=XVTeE1an2|Xy4j=*DM>+H6V zhO6dTBemUk_gBlOdLD~Ojnc1k(E#;MQk@;2KT&x6V>N8NRAoAdO8=roo6W=+bPN}^ zybF!|H2-2X72MU_Ru_(=D1W?(_g=shX(ACjDgV@pHaFT8w{=`A*#mnE2cA(1E!2sh zS-f3QhN(MtK>M5|VmR;{t5v7zlk;i&A=p>)r;Ug%9c^+rg;TGPAhD4b-$0=#&63OC zJ2%)A(@X+W4-^fn@0y3q9u1e809>lk)(KLE0BeLY5h{9d{~B%|8j&onTh;Qerdne% zKBL|v|8J+{Z~z%0aCikmXvf0KS9-JJ(KBX5hhu2;>%wL8HC^Sk)H6MUeH+`Wi9fU^ zGk&jQW|fzg@Df<5ph3IuzwvMWj>pY}iM!_-<)W{w?lM;~w~q3}=i&TZAh2swJ_=_QdPwz)b1A@eGS zdD^~}ytnAdp@b!c$u5R;Az4UYK?*_JT%#anH?UTOp(T2?AZeV_22g!VZl5oP#9zj?fPE5{x$`G@Ia*TALMGLT-A$ z^G*4(yQLUpsM#`i^)`_NGs7(SF=X~Gdv9>r`!xY7-`cfUA&!^NBWdbgbF;L%my^v(qW8PWC@~psQkI`wt`Ye%`G*lF{jrZlCQ;Su%ds*1 z$Z&4m&Co?cQNxsN!qPIl_q@M)s7^@ht>u~%20MY^CVX}R5*uQAf{<(wnEP{Y?LKg%ketRD|;=30SYJP7- z-_;Jnmo#2ua_knS(k>jbc)8BW_SW*;TX*}MUUK;HL&WHj7Xx6ZyhNQ1uxQ^TfI!9 z_-lU{M|b)=_*2s}W9(YE8eLhMv$xyF9b?aKTGh5K;m9on>3IczD_yrqB zd6>I+1jNf_-V^NXOZ2+kt~-y#m4ekf0hnd+v}0CWx=}taW7gtm=a=W=1ClB~be`8I z{E~m%zgh!i>Xe24`~~gQA}MWfI`1W9nV?$S?Q62|;UHgaiLbYCE2?}w zyxX6>{&?2SF+Ntr%B1mbu2)t_nGEQ-ST7@cYsofnu zt9^p~pWF35DNmv^43SP{h4)dcU;?z`lr-MP8dX2*4$jXCZ&muEPJ}s8%P_7tQvQPM zt)RGJ*X!M0J|?MBR7I8%Wkad(ex}}iJ7(+|wuGh)QK2~|2g+!!PSj?q%tL*Cu;*6m zVaLjig3h59dqq0CM zb|coG>+}Y5g-3FApbx%N=)Q+ZY4}4uTF#2Tm&#JTtL=v>aJ_*90tiUe%I7_?v>!K> zm$WwR)N2oaxUt+DhSp1pEg>iV0^CtSvbNB&S7Td?v-p&lV_gm8gH6Uj^ZkYNVk(?5 z6Iju#G26F6u&LLB3lz;n0q`nfu>OI2fCG?cG+FRA7*80SGNf%ws4p*G#f8C=i|mv? zBX8Ypo*uR+IG?Aj^v(aIkGrxN`YphJvI+TN>lvOkx-;U$mM6Vc1Xs69k5wN$Bpq8N zd-wS=V_1Fscb}GXB9(tQpBZpZqWx+wamuW-($V>!@Fj94X2?;XVRRz}T#kJb8|soA z={!^eF)BOO4->x?VJi9UtvL-dV_}UJ7W?}=xoLPqqsvapc9K5!%fUy;$}b%5WkYTk z!+(>J=ygg^=?Q(kO96%a$)9MGQ(S|c^lOz1D8tPl@R{4SB|^(?wHnMPU|#&TFK*!D zY*2o_%JO1VrelVWY=cImjYrtG=8QL;>oAywO8V&r+3{nP1ckJf7MgKK)a1#~Cq^IF z^OeV)lPzv^-e_Mv_Yy$2!SD}l7ZxoNjxS2DXwIuK-s`OX4NnLTE!zxecR!jPwf(lv z?AYRg?%t6NrZ*P4Eco0Gpm(`>OYD#H}d$)(!?A)pwQ-KRjK6FP)hLF!}h2sCFd{S$< zV*&iZlrV7LFhf@&H&~T3t`@W5pKRG6OgeRX+tFOUGw;=_6SiPr|3IK`7L~8vIo2Dt z@u&GgGM{;v4g~ssVD@Emx5*z@AUym8AmpStFGJ@==3OALD(C@y@8@kl2$Y6d4Ij*R zIq>r+52*t4;oTQJfNKw44heYB%+iG7AKu|BCv(jDK=h^m4!dgNr6yCJ8r7VNpcWnj zJ@~hNB6{6q!N|m`aSEX>GhH8hZ<$HA0O}WpdkO;v#Hi4X9oP>Up!vbU9mKQb$;m-AIN$gYKdtSB>9za)PStXD&3N1Zr~74 zwXS9b7o0pgagG%s0oDOj#WiQ+7TPh<*QH)NZ|!?SIMyczC=(6vCm}b8-$!l{>rNFI zpES0}uu`Lxkjz&2Kp?T*ZF2y1&JO}ES`hJT!RyxGxKXC+@WV-H0jvCWKqN8Ql9q3* zoT;lxUZD)|?_sugJjq4R%65!2QSNx-Z= zOzWX0$PfvlJd|Z56t}2%TEWMt)XU%Rz3)VN`OoY! z+)UGe_c~=%3q-__->-T7dh*90-WO@ci%N1v~Jb9#d#*VVzhPC3@ zw;RhC+$!2d4c>ZPtY=?l=a#E#W7T|&t+T_oLSImZYa$iQXCl78?s6(M9ES*Qz4bbH z3AcX^SB`dmS^3fEmE$xSr{t^ z)fOqbIAd35IANM6*?jAh6vj_C{buX_lGu^b2jZh0@M7^z z(-~qM_cjnVkfSJy3YTZ>`lI4#;q z%0Y&?Rh)V)|J`RK25#DYZn{dQ3v*y z;F}ml5)Y-StIKTn5A)3yrN+qrL0MfXTQCBF3VV6J^i!d*(kQ^q*sA-}KrNQ`cmy`V z9D?w#4Lmk|q}S8(x>b`~gnq03?;fpsb`FD`J?NQuNqd!9TB4@p2T9`&tUUUM53+f# z#=P@#2diJ_-rE`}fAtS#GoIJz2S7jn;F$_gu0o9CE3sv*0T+$DYGG1QDzg^x527XC z2|+4gzZ}ep9fiZL_iITPB%fWelq3NS7`Y$2xOw}F#Q~uji`5@z$)*prC-%If;v}w- zYDQp6OzVWVRDocDI5kgVsV*Vd5a=QJbb+Usfbh3B(!tIJkdwOU)}K->p)aWGy{tXs z*i&T%jpyj;c>NT-mj1oy4gD8hB?a2rlA!3>v)pnU$jI_(2rF0AHV*s|3+&5G;AoI$ zo8x%m;1tmYw{@i%T4|mU$w4I}^c|wlI{WJ6Cip7xk&VNFdiUZkr8DPZ9L4!_ASo|1 z3`a+$rKEmkGKOJnX0jzAcJL9i?Qu0dV6#chc?e(z2i(>T*iO|!Jo*{2MDfgzuNnZ8l_ zD-%5vc)C##tbx-Z1Mb`(NOk6BRsq?7Xrupe^jCnWQ&aB}0zz(5n}+#xjDcUoSU`z2 zq2ulbr3^hPfPIdM*W2CZ-*L_4e~3xWu?12Lh{If79yziH^u6Q38LoPEr6BZyPJqsZ-w*X< zMyyQQ^XX+m2aPlg&SRJjmOCxFCV@fEVx@KUE1d>M3tYYD*)9y139|1sGD=y73P5=^!R^yBfQw5_&x8O&Y*^ z2MeyH*?Nqe2ejt7DzBF&+KafvLpf!H;&^W0!%%>c#iBq{C6Utx9a~2p8o%RN?hp9R}Y%sIKWe>R5LR(Yi?gw zbZjj5wsd@~xnak0Cx&fi5V5K%9mc^cjrv0*!P52{GY3E}{=1z8&m+70xw84HUtfrHytd~$8nU&-x)rgRBlepa z65|Jm{p(%8;oxUj$eh;_K!)B#v$A7vT$hp=2Rwq%?pBE0>${^N<7$UbFGDzd2BdLr zH`egGs&+7_Rq9p)j_RSm$_4@fRW&IE;6a!2e;>TleuuHw5Y$jAl@#k-yrMY;2r5FB zC#ZEUM!>@r-{|MAQ3MRC{1{S-hd|MG4S@jx?+*hE0f{`l6XNMZjg9R$)@Zsb4MaGd zyofLQ$hATphxV6^wZ>NHU8{b`7t|33TDlcht?NKsa9gf|uQN`Fb!&u0VM_vZ1T}8F2e{A2&?B%U#Vq z!E2Yhmkfw-pAl8R)EjsvZg;9f2ZKCv@7FO0xlDH} zJ^=dk*KRy2JU(Ntk2D9q&c9kG4qmb2GUb&EPs^kCZveYBAx*l&*boyCSv0HJFgI*g z3z3!4-+6;>;>h3K3v#jkmpUMri8xgcSe{*P2onD1POT)Dns5Iuq3vK0(Xfs?;NLgL z-l@&v4!E7MyT+@)08{RO%e!HuaP*xJm4xHeD3f8p@XY-9`t^kZm-ySu#~zo@x}$BzP?mAkV+i|;+57hErF{3p(j(XJ+~ z#FdP5JfXaDMCcvW1E%j#NVLq^`ohdP%w@ufU1#Na>K!!z3~bxQL;puT-ku>GUu6I4 zZ=T7Ht!v#p0baqzZhkg~YP&+lSuM}y*{*D7N-?-_jfleqIHc60Q@=MfnL_TL7&5>N1gYzKn~@BiF~ zfn`t^WTeuEE0g?^xWdr%?*xA!js?-szOiq_9&#$tQNQCMs&l~*VKAz(&5DiVE(vY= zGZZ2Oh7f+E+_K;KP8EqN4<*KKTEF5Gff3pBX~dmMSD%Tq#Adm! zBSA=ddRl+PFBV{UVqp3^1Kl|h8}hdNKo8)V-Q_+Bi)nytA!wnRG81}_Qo}0_!YJEA zPmfK#vWkjGvA*r7r^2-g{{o|L_l_7X8X4%SQ}7D;QBjPiHCyw^(vUChuY3h~!*)&1 zx9?mvFup8~-L8~>+5iSir~QPHoY(wM@EcN+PWo!T-_#W_&2>CEMMdKyHgmaZ#OGiN z*oECfk4p^|y-guRH6Pr`pV~OoVned1W8B^prQZ8kGw|1M)VI8SAiv68!FQ*y51?5; z{v*lMLzF(CM9#_5I0OmUA;3X7+HeyU_l~9Nuk1(;WG!xFgR|LNujHuAh+AmNl&Ib( z=Fry@jL5PFF++btXG0)>*=0mUOOjyV>Hm+7SuKecXFt{8lNVAsYvN;15 zn6gujMA>C4d&aG@A@7^sbUHwIqZ=4@w?KM$0?Rm4JX|0%ZEQ^XlxMEXnE{An+~nv& z^?BCx-XC0^u~g>xiv*fyYRp@9kaGRWC=R@Jqp`Lt5FXsjoSoF!S}AS~b>2>jiTabX zVeN#>W^d;(TXL8$I4lv`migq4O;(Vv^fnB_y5+o?!(MOH*BE$T(A~0eYpdu*(+Gpz zCcrYw(&jwltV&OAx3WLyY|qhHYz=1}s=70Cd2)*`0NLzkf9q`xS@pmnmyAbHTKddy zs1-V#O+|?!9jBbxeVnF6`~r5SZtk*;IidXjDHV7#}PQw|?G7R2etjDuV0WpMFE zR{u|e)I$2hnW&-^sG>!guX6`nR!Tq!hO@t5CmcMCC@CStIzP z5zAo>6n;!1XUe=ql|9nW4%pe~CC7v*N6kW-mH37yKw&`F}cRJZe1_e$dA z*6KYBqIXuK139^|BH$Fa`7;dNygZ`OjiiR@X6vvU-Dn)0$yG8O9^fmznT_s%AgAC7 z&7^(~3ia`07E6Oxx2)_Ww%SB%3i3P7WH+{eIb-5c3!Pw|Fqn4@Uo)5`3D#kPcy z@$K}@^_Yp1V3m~&CoU^&of>~1vKbI*XI2*`p{bAP z+pIG|A2AlwBQJ+QBsi;+JFLpbOFQ5!1-K%!(<@lmxS09V!; zSK!|IuRDYPn+Ck7?s zTfg(%sJ{_8`)Ct0!Fna@vxZHD$H$E5i-(X#mU{VSxQ2Q%h#0xD7xfFHrf>5Oa5X-= zZab}tL1K1owuOv4GFJuj~XII6i9}P>N(wUD~o+VBbq?wc4zl(&b zCz@BUI56EHY5|4BH9gc%K5uE5K}X}nw#d^40CzlAVzQ&gj(o3`Qp22fgopj*%S>vN3(tNAtRi7o z(!UF$^+Mqhbn(dq5jF`A(~J5sKi>WJfm2BD?B*@hG;*ey5f!pbJ{Us0$qhR{?7BGUVkI9R``Z*)5J5?wSUP?P`x<$FD>tEX`xHUq{iQs&_xzl8Fq1HKc z>io*OYAckv@|m=70(eyMw|OgzsH9hTw0Ad|1v)Yp$!JlLiu~<^m4-v-7I^d>;n5ep z|F3Z$J}v{Qcqb)5_wIZqZSe-&`gg$D@hkz}fZa6EJ-^SSG2Q@y-2rEQb2S7KKu6B# z_|`j6R?H!5B`cp>nGK)S{u%=CtJ6LJ3W7klrrAhp9Gdf82Nu)F>4mUuSKzJN(n95D zxwEhF_#b^{wWc+!iPa9FQx5w-YMw2}TA`0;T zkUYU&%6~!kr%OAst;iGPf!J8%2?R1?`#Rh*`N+~_6dlsVeLQJ0YRjIiZzHOe3FI$4 z8>QJr&gfP~Jmx~x$~u5p^zs#YyLT(3Qs@nK0WJTSNb<|ZSAPQU6u!E!#>rLqnE5X; zCUrVe+;#i>%Qn}~q=AEgXnKmb0e3;4{)6mw#GqT*WT{w)wQR&mDp#~U{{^S}e>ccH zJxM(#2Tc67Y=%OCGk>#Yk!InVx`YVlbkqh)IY zAx7OXDFgjLLf*RGWm^x$58mLv8RcWP7XxNw;Dst)diMYf~ zC;k-T+JzH4pMaZ_Pl~aht6zo3oprQ(MHqV8$fE zwh35`Fd*jN74);XIMlC)NsV-C0$$)$=*9+2sU&1GsWB@8FoFMyKQQS3i%iP}bODmH z_66w+!~vkX(pF|$lrs~;jdf)G1oDO*+AdV!kHP}M97X+Yx!}2&utO&(mMpAa^&<@fwgPcsmfb! z@_ECtqvxW=C4W~uiPemY<(4yxD-D)WdNSMXC&x?QGW)R7Ayx>OmX?R4X{u2W~i9)I7ty`LS z+3&X#gbB6U+X7h(==8t@XQ$bDrvXSKeA;iZy~8Pty8vhz*+jlf>{QK^YBdI1T zI-dbD^5b}qe0NK9JYXX4h>pG5_W3@|9Jf`t-ZUZB1Y22zHnD1~OwMbO74N!(g|3!g z1lp$S`HHy$3c7-JNj2##BoyCaT$Bm!x$oNw6n##J&d3ppGUa!7=rw9UjLZG}jCky52K1d7bkO5k31S|S z1DR`Atz#M+JJojwMDN+xnCxS0pyf#drbjbB8`jxphli;hz|8C(TLe9IN!9QCG8XV9 z{4(wa>Ekpu=~k;SulNG+@_1@Ww0?$#3N+*}aV&mtP!E%ztR4q$PO&uEJ%N_Oj*^ub znO-7%G6wq}2Xo6YO^5B>ICvS?W=+15yaJ#B!+$V3a#WppZHLqnBLP%!f)@ZF9mv##JHtlG7w?7RjXjdpbrRPul|<&;5r12h6jURT81l`#he6c3ME#Akz4-T&)H76Fpn=Y z=iwtFkLKx`;^o$3=^e>GWTj|tSRUn(qS9%y%}NF>zv0WGViJocu<#sd33^CxD^ z{z+Kw+&hg!$OFr8ttPQwx5d3j^~)3OiHPhfn@kG5VL9K|MYnJ5(sE?Z_n^zKqFjCi zm4la#eFXZi#lENNUtGF%EN?mW`WHZt_R6+6kK4(9QR4d=wB2NMYtQZCN%0l2Rw)mU zw*bVr$VB}@O>bGz+<4#_FsMq=_Uu(m=JwXF7fhw1o>dhgRq%?5i-p?iLuil2BHnnE zoERIbwD?R5Od5a_6^pl^m7JjK?^9yyRB$RMudcrJn`t7K8+XL>ZvdG~jl94rPv_hv zTJX@3AXynexHU|e#1E0<=Zpl+W*itB4}B&(iC5$9sxWekj1?zxb(wHDDJlE zs3Q8DJuG0R<)9(*PbayC!IgO4PxJ?Z|C zAHyg?YVq}xmoxK8M(1e=tuOb`gH~`n$(=Lb@+7tnN*FQor!sv$B&*+A&SmWIc~_$; zo%L^i)l(BsE`^Aaz@JkUk`~@7k{_fq_1g$$&C+Q$S?9g)u|N0PY^ikSl--Z?>T8F> zH<|a*TBQTed+@^({{&kL*`QBQlZI$&OC>##t5+9vc{-P1T5-!<>!@b-YI^nEL6-WV zq44{-`+)@m0KPTA!4$bNN_ZPk{VP(1`Ph5R%IW@~)y=lxx?8-(N zgit~pwmgmH9nuOOTDp(hG6}m3t?btk3YrwXfB7Lzcljh;>w-^7NK~(nmrlb~sPdOF zg>01dfPT4kHTou+pjcbWH66uXIq|^}WuurU2pstWuGe}a@-u$Gn)yhphSOk_#d2w$ zLtf45mN;7EsC68ofE&jB6C4P%_uPGmNLG$b0H}*#k>WP|`?`5b zZSP3*LqY3uBaPE_>KCGwYOJIxYxQS~EGYB)`E7e2J?K;kl$rLn=1VhO&;N&{{JFlp z#YcjiS$hB|VKoow;~bIoh0KvOrucxPMhN^%aMJmjDuV4~^L+|JxL>&z{bIjgr)MV{ zv|NW9D(&3TR2EHN412TMV%~FM`%zd8M?2C>&J4BUmN)15i!GnW%$W@A@b&nT-qPr= zKGdxJP?FX%qa9l{MKw|h4;N-RktmH4+tQ{mpKz}FgW8nzRQZFCWFa=DbnSzTghbjV zs*N8cxq93fldh3>rf zdO;`Vo-@Pm#=-_$@;E57 zC|iK?{QWbQumrpnnk&uZKX@_Yz>sNsVnFOiykDTb)@2{TG^xu6A02}MZXjs6W1f!QjF;0%zBo&R!k3|H>urpz=ufIL%1*P`75c@rfw* zhw_+!MscLr?^D^SFKA2|`d&p(4pzu{dmb`t{q@9udjV>&2;5yxl!VY!Xn}icfUoI+ zAzxI7n@;(t(W{sJF}Y?~-4BlA7qD3q(1mWEN?kPMv7pEEK|-Xb*t|qe)v}#V`u8=P zf_qf~7ZF33>k3162+7{ozB*aYWwi=~z9jFh1x%Wj`xWhywM&VSIYyBM!vfzLS!nzC zp5yhR%Y;^Grcl4M@D+Hnx8*P#lj4oMJa=QnZUafKwgwVdGndI^t*k z%K94i=0}S;VQBl2a5X3Y*m>ODl&ftIIV)v%%Tyhq85*v?56<1h^y~IU!AFtpfS(C> z_SrlG05iZMz63I?hiAq$;SWEFy}({iH+1gy8v=eHfjpCJ$-&rkX?Bz4b8-P(GPmy- z>Wufkhi=(3X7M<>lZlre?!dK1aAk(2b}TjgGoO!+vehW#CO$Zw99F)J+Q$d>Z>Ev2 z=KA7I`WMEOaWKvrpsgf&knPzBy`(kv<(JA~AChZkmKxf)a3AO&$_KC*`CBYW9{uG! zdVVpjCt!}82ApO6pA$9Q{^6;YksirwyrVJZ^eG|Oq|`AaTZ^?(v4E44T&kJ6CB^N4 ziNhxHHr3q-u#?05+jMzf_z$Zfv)jDm{zX$c=c`6*{XcIQO3yaU2jGxk|1(aGgVhhu zG~~KCUoiSg2uau0ED&%;+g`^PyKFQC1>=dM9{q)r=keZ+-dqR>Fwg4};P}8m%dd%i z(DeF^l0?y_=hJmPR?u|Z$LxR#on8x^j^U^7dHk5a!9&9io5`W_S+57SKzEyo7tpXe z`FibAUZnG1@!#1cBV&5!SmRbfQQOR^l;j^!HW7#Qfk&B#*+0O{Y_+}=8n zi#xz3=Pe^nS2WhI+p^Tku4MrAb_bhm9BZmNs;8<~yJ~Kxa%soJz(Mjm8zUeJ)?}<* z>S|H`&odau@Y87P*5IWd7=^cES)YS@VE$50)%2k5gMak&XUyGDX`>$9J!JA;Tr4Z3ta`C2p@J6w zw*?V}g0%cNGJ0$GT!`?Xuz=VUk;5@2-}ZN)_IGDxBYmE;CMq_ffCD0`$;3|6DQ+YS zx(H+noGiwxl_r-a&*eL2#U}so&E&tKG`-%Eo8*3h@2|n5nz-8(ZJbzZCXyv-5K=s2 zg`bqkOg+GCxgm^Y35W$Dy(7o}Y+D+LX6JJ_0`3ltHv1YQX|HCLFO?dF{3>UIqiaGN z7!V-s84Og>qK~{^-{N=)*_l0d>b;3C6PETrQu{P0}yKtqg31&$&+1XoKpjnRG` z=jCYYy3*cYQvyw`(G{#HBj@2-lt=6D4Q)7MalXkLtiri9TcA-o#7;ibA%#eNRH0xE#=znu8NU-NV zsix%bMc_!s_}rSM$E3*DCdzo|KFNGUsKdkyv5_Gv?}X+`fT;KwftrNBY5 zd4aiK`?g%G@qL9(B_WjeWo7o|9#6D=yT%3{SEYS!kieDx_sB+2V{5^=vaFuu()(ZnEi zl7?HAvA-ox(uF&A$qXsR+(cF#?2PwGE|4IViaUHrwu$eah#k0I{Oqm+pQ%yU>sC;u z24?M28K9F0PfoWGQEay1R5i}mpxLE{vjy|l9`(7zzlx31r`2maA5*wS5*MP0XT8S0 zEN1j1TD0&M2J*}9HMx?KiIB?+RBO-}DS15B7YoQS^`J7!v``#5Ao-$33ap%$94s^a z7E-z_o`-aIB)NVVEhT(*s_Y8jL_Pcf{On57Oogr*41BQsnOc}^1I(Ic6!Kxp-}?4D z$03-k8J}mjN<`1NU1n<067wM%z$JH;RwR^y$(Oy1}<*+vmSbTzpiHv8aOUF zAn7BX7YQk?m)0w}&ZagIB=eGMrq@NRM&2`L-!{)DN$D3BlEMvJYX_$pi6sLpK`T_5 zx|KkC3*0uIzP^un){OecDXjukyw<^L@@1^-zRc{BOl#cgkFz6r7m}S6#}xRx zKDinr*D6{|gcN$k?~L^`j5?0& z?@lxEWVeep>n|sdbT|7;L0;@s=(~FRWFBGAo6GELv(W=p@QebBMgxw@_gKi&@IO~Q z+%+bFTanqV$yWReF93CTVbQpTFnbHZ1Mf3Rr${6jSKDlTAbq-_^MH- zXnc{7%Zpa4&4UHzlUl& zA+rd{l(uTIZ0+aWSfbw&5~i8h0JUjw|SrSrqA>J{LVRloa=j?eO-Ba?Dufr zYj~~KTKBr|jB9xwzAy~$nwP1bA6yISm@$~OixMqb4H?S#6yxP9)t*v; zwVmmzC|%gzh%t0wQ^=27ti!fY8hV#el~p+UPZ(>KgitQb2zMQCam5GFIPCnXb=-Mg zzWwrBKv#PO6Q%ouFHyW1l?PJk3Fp;gA`Uw1acPx{r=>VNsUNvbWJqf;+HF}>c~?@7 z&Rti>X8Eu&^+!gcH|oiFt1C8#D+EQLJn1|zKoTwA==3&hA8&puR&bcKyi!7O78Wmm z81^v>DTmeXoszXWHY6ODD~&JUysA@w7j<>DIsj`NTK$FfwqXdq}!VN#d%_% zZ2UC_??9rZkB|56Ei&m>b{j1|yburF9ImH>`w}O1mfVFnz=}hK2SupZ6n9u2OsM?X zB;AxryJA`cy&0&`rq1#V#~^%`7Tru&*2B}#%@Y>FrpU41Xs>~5ys3;hKu6)Svvh19 z>RajJ3dUWBl3grocNqijKlSfEgLlt&Yv%Afk2nABGhqGq#Hn+`d$nNr{-}ELKT1w1 ziV3=(cC#;#PUxB4Iy&;@zl~#efTqJQ;3HkN*Fpk+{a?NB|KCR{i3X0lt##KXr-QMO z-Kv}?$*O+3qIwzOe=1&yI4o)L+e)G$1$j;0?iDz)ihMW>sP27@A3;6fueJQIXO$ib zw}O@;Ec&ox5|U7M`gocb^`T0Y+iAI4?{@XJ+&&baiJSXm&fJhPG!6frnx6Iz4-fb8 zNyT7-y1LYE??auVY(iFqJdVA<+us)=HDGBLs$VnE7#@@Ha-ggsTf7pbFgsZ0yk>1{ zYs)D5;z{p>fGYeo#}F4dY<4GE`8MXBg@uKUot@h9_K$&qIQwQD9i1Gb#_*@+=F5-w zp-#$LA|uAPO) zwRLsTirEwVc(JhYH`SzUjv#vEWLR zrm$;ssf-k3ZVrpLUk=^~Z#MS6If%sy9gO-I9Uc9kb*?vG{xQmtdsL`iGd*x1~<78kg>y2}4ren%GubyZlH!h3jSWu=#o zuFg2Gt+SH`hNC^(lgBnaGedKbcmdTE{GgK1a!-DAM@%jCI7&J=Q>Xk9CCcMWR6}${ zl)|N-Q#QA%3-izdAk={p;cH@INm#7fW40gN-RwDX#=C8~5a8LFRKd+W2QO7QEp!9mIC^#g}bMCL=R zTk_vqTzu8p(QylnMh~KU%)2rnSBf;*v$_wtf0?QWa|5x_Wle!LuxI$YH@u(CN(=0GwmZjA4tIBC`v?ksZ?~!8 z3u?BnfS0#vdTQ#exsce*4`UAG0m;cmDyaf5oD~%nzvk!P6Z_FrW|jHQ>XY{K&aN(@ z(J$E3czVk3`v@Sfr2KqawU@taf)dD_`+9pn=Hys+m=iw9^@`BRTZ;djTK+_Ae0kvT z$NYT3>FMcH+fhyRU~E5sUK!3$ZlAi7(hklcl;m+1MN7YjytE!URp0AxVRFRZq*mNfFZpc?_ zo^bH5?h^a?HgxsA3nTw3x3sI;qI>6*x9dH;W_sTnJ4(+vuDpP_1oXPd2w{s>ibR3+xy1`<2XvoK_U-uaw+Y% zV`@&I!esUgRGRvbf3l@xbp4Z$pFdyf?dxOHZY+RTb!cJ+1_nms^}t4TwFb3OLSZw^ zW|w}M2hdF49}@vwa~vj^n}OAzg)t=6I_7FlbUnNm{Ru{f;b!@mmxul-7>*vc8ZK;M zeaG7ghGFvfx7jl@vn2ScirCT7;lIJix*kN1`tW!4SQyZ(1^~f$+lojScw1Utb? zMpVOJP?4r?X^15>{hW%noas-?-lwgl6=P2TF9cs57hj&4nyMEwzIU(L-|SjkR6tGY ziuvo`Mejnbc|6aG*)>hNdX5SWNSCW5)K{IvB34DT8J-C#BnY5F_u6@Xd2MWLh}ced zWRlK`zF-Z;tDkOY5>kk5vLQ-!DqRhe3wWm2-`-Az#N5EZKvA+C-=aga<~LWBgN#I3 zjbh~=f39>I7Eu)L=I%7f{Uh#c>l)VK#(?tO+dB6JY%Vxi7hMo4@QQ(f0e4&(9Nu7} zC9bWb<7)c77dbRu_t9lu3)-ElKI-txnV02iBwsl5V`>T#gxQ(+y_oDc&GRm zXP@NtJV>lJH;%k?9k3dLZ%`3;+gt1| zDjb5mT^ex;hK7bfS6Cs0;QHg6jgzvnxb5Z#C7zvC@?UZ>Jj99OGXHBZzy1t=cMO`? zG#>~~&&U9H7KE-s8gOhwY*F)*D{Vi1@NxXA6=`Kdm)&1g5EK@sGb&q@(-xyg8Q9Vr299tope4H(Lj{U8Gw`(@eqY*8+nl`E}Qesnl{)tdbob7Yb_60XW(ZnLt ze0R%t$!6TmC|>7G0iRP{rQCX{=g;k1M5+T)-KQ-`uZ>!F!QX~Wr2CK zXU}9@X?<4?Q$wFU6@{gL88P!39i`N1C-cqk9LiC<3Rk+WyAwx|f7G`Aua5WtF_{E2 ztP|N|lQq^HK5udz@A}*~E*jHJnHu+keG1tgoCoQz!D)Y8-(zjrPl$Z#o6KqE%z=%{#%ba_%z61#xi1(w|i z+lxd!0e#~9P(tbkog3|ysHW7FvJ{rM`--MmtDp0-DE5Q9>ij0&1%&hL*|SK9?=C`5 zL?#;Wba0zr7t^z~u~Fa@=Z>9v)FhpW#oDQu&0w+EyRE!2%`!J{et+&E$XxsR4`WGj zu^hcz#EV!Wf@cmKFJ08t@u`MQG7u21UcIWI`5hU{K2z|V5keGjj|VgM5Qy)Iero{< zcXUugtbbUH8Q*|l$-38w!>R&4XWoaksB-7#=0;e%goK140Z6S7kWCf-M9cdSxc;oz z+t~P@nf$$fJ~)pAK8DlwvlY_R(vs~g$jY*4vg?MJjIcywRnP*PaaPA$|NPI-5uQ*M zaX%%6rZ(Ixc4lTqHvdUWfX1+S8!$&0%lF}DIywWHI8J*@2yEZo-#zG#E&_T0mhZ~XK3 ztM;^}Ph6^E(<&S^NI?Ga;~ia#E${{45pU+60?hz=W-G&O)@ZFbH&h{o>4JG9iYdj1 zjl^@-h!hkQ;NT@oRU`e80m6-6ArixUQ#xfFxxn|p(7nEIgN`oiXze9Wmo_BpU1?>o znJxKm6Q=zq(p+R39i{e57e($KAFOo!MP++ilI%hH3mteo4j74?5W1+i_!>z0YC8AQ zEqFMB6uO-`z*O3Zoi??i!p5Eg_PB?jpbn|ykR8OTaRXtdVxA5x#ddXdnc_L<93UgVxPOd?vXXu>k=AImXS=q8ai)e;~s^h#hct98g)= zd_08eAZ{(Jg46w)cvWo$m|Tt-KHC9cLnc2u8@|*jv1^X8Zt*Ocvbh#`R!k_}!pc(Z zsfEQ{=z(8TT`x#G+rZ{cY%5qF06l`qQQ&P#7aH@!;NFBbS1EPKs#q&Ot__U3(@+v8 z;@A9SvDMr5nM!9+9xUsfY`Os#FxqFW{-Gou6S}lMXfHMb zB@EJzJDn7<$l=#gg0Pa(hqScIR<3Q}y^c8q9uya~9%%!=#6-%&%mq=nPPTlC8xOwd zM>k;gl_Nq8IYkVm1fmp_@4P~f@>rMOg?yUd+4HgHZcvdqwr}ZRJ zN9{THnm##jH;b4dG0vdpQ)Co(;G18_)+wPrh>8qRbO z2^o;1)z-=!gkDAkRXJqhC;>dM0?-^lBs`wSZnm2e9P7cuhatpbg-ggcCzvG}!T25f zkl0yPro;bl+bYVJHSRuzcj-gbhYzWM8b8p{$?|}nS$WRgwWLT-h;(Plc*EpwLw?D4 z&F0Q-&+2Y90(N@=-wOnOI|&sFb0G#?;8{O#;&I65%nX6y!w9HgAijrD-$M85K_8Al zsP}fq>O!5U=JUU&VEnJDMSB^p{tG}`1k)gRwe|LDhPoPGiGm!<8gku9U}Sx2dV0)S zSaXnBt!POtj1s8K!gK~k2Eo-i7#`vZzytgMOGTMqf9mACJOO!u0dQeQT-+qnyrv%@Brg zo7@(i$H_*9f05f`zGn}zcQMxK6Cv#oXq<_Jvx4&Z-S5>ftnux2OHe-u1S5cF9X`SM z=k@^ONpPz-qPbzN-BE`Ex0* zXi4A02*5o+ z!X~rE81N0iD%Oe6YNv~Hv0%ip#6rH%dy675S!5_aiQT#BSI$6s>gDByq{UygI`6B3 zs&pS|gY7|3pej#6QupG_ zBCmpa+Mquk==f25)xDo0Deb0t&>!@9Z|@J+(>;?DGOkn6(h_@CJElP6<>;B%<8Ul! zsIybG<79qOktoo@l$Cfega;O06inieI;`&+AR6}+9Lh6kEj=?4oaatvLJm6G+qW*E$Ybv!G)3l=H=$IfG>6G7DQTnB-1*g*a`R|qhpxEnxlJHJS8}<5rik} z`Q`4}3CIYB^~J*EYIe3a5hGQ2xyxDg-yrIR^z@Ti*nQdIYpICJx;Dwa=T~iq-F)ox zsKM4SLs4;hqWxboJ{@=F~ez>B{@hrSWLb1w{ASWoqS`?K0? z7E$xFM!04!BfK_TD;(FQrN&MVCE#A9f?qxw}UUd0K> z4n^8{5o}6r2+F04t7B{Z5(T&c1~twr5U+(U+${8oD#+z_(HnM~P)6L=c|?Un^((d* zbpO6(>R07!#~}H9A)B09QLuw%zU;l&rw8jG0#Fofm`+AVjPM3l2##tLQ#o4warzV# z=ZELf4rm=L)6Id}YcBiodE;w+=-lm=gwlB`~WCW~$ z0Dd{nWUE20W_!r^6!Kj9o)!@ngVuP7w@edNu8wv4lun>&rpFOMz#tzw z04Qrf{^0{|TRPG7EmrJ;7CoSRpj&^x3^TZ@q~^R$T;s zKyi^{b_R;c(b4oZQ3nuRc+Ho)Zk`fDDrb<@c`>IbUv`IUmHv69qklh)v!fZ=k&9AL z1R8{3d%n(vL5fW|LBr5Cq|inzEH9VL8PzV#wlp)#panv8`vZ*tpGgC}`Dr7_yGhn_ zCa2}LQrE!1SqMALWSc-GMt>yUd`n^5_yD6E_wZ6kJ;Q5&%rlrJt!Zl>ZS?~1aKKy_ zk9{cLZ~ia}){7m@{Ak!AAoq2$jf%w0VkdLU#eDRq!*BuivfO^^L(e^j2UTdwF_D#n zk08|m@aLW{f`Ina%8GX?C*%?4MFPMS)Q2Eo-U>ty_m%=`wDtGT%ES7~H&+raZLO!r ztmJ|LJ4@gRpqde?$%{wqUcQ&tOpUpKY>0o)1#2$7g_N+rb!&E3@b+Dw_0zLLf`S3Z zsA6Jbk|0!E@5<<(xSC6jhTNsiSe_0Y>+IyTxZhxAdjGfnq968Ue~6^GbR@f#zI##d zuT+!Ox-Er6>YJWQdCvFc8p*e{3PR-@au{9C0gwO;KM3;3gIbsu@w?;K<2Rn6b&iDv z21x0COW=EYOm%bsM_{GkV#u69&HGxQ_ERw4+rmRP1{k3u1f_J$b65vbFaK46E7X}lje6-z_Da-?Rpme} zfMY$xTuFF1yit&6`aSlmH5`Yq0b+d6jNh9vidqYj7ZB925|R`vDz<*@x-tjEne4Z( zs1_ul+*agxAP2c#u7D3kyZG>33g6MuG<{7@v;~*~5Ws7rL;#YBtTv!A3_t+NVW-Kl zr^V#d%`OzSXx(e}mw)0~&M3ig8BdRyXa;Hv+j1P!lZuIoxqxJjzzP41Ld?>@3~Q#X zM9-k1ZtHk`);#-s+UW6Jj`Q+kYUqE4`|z<3r2ApQ&S)0!I^NKXtgN^$g|@fUUIClL zd3DU2*!H@dyUEIV#|%QQwSe;l>C;8#%aQ#RcMkO-Sg#QRZ~eRs3t-q%T+Q(@ne5?c zGvQ3#F{u=VOCiESfb4mi7exMjy+&Hce_k&S97UK3LU`~edbslzZ12X(_DdWzgpkEnF8 zz6n587M72exI?c`fa5;`rGV6*K6^&*mJLdXcP12dLlhh|{{bmJ5LkaGr3_ENvH@h~ zj#Y+043TS3EFw!TiHYX}8AY#f{NOad5DTmttT3+}lDd`$m18z7oFL;2w6Bkd!yo-Y z=SyU-*h*@P=#jxd0@qY`<3EPU4}mt|*>E4s3Wzinb|nh}0X*cci56{3i@$?ZHxysb z&{P>+i4rX#OvS1z&j_kdgx*hCsx=nMvz>5?-G^f5&We0#s`WI{G7t;!Ce06SA`3N3 zD2^yjtw8>4J^3T?a{do^^qG}n*37hPF-vj=Wpa-9k&?7nL~tJ9*rV=$O1^#N`d0-v z0j`k(CX(3$cr+m^4ai!;<$OXjC>~iOU=+D;8~!w{dA0QYBaCwFL!p>vExm&5?3U<4 z6zaGZb%pa5hGk@@pUQoqF1(NwNW*c!KljJYfndVm7fmf={RX#{x9X#Hoa!=?E1Nfi zEJ)!ED5Yf*8>x-z<^|>oV#T1&DthDpC5L{*=LNy#shJsroB3HS)SW<#`}T}u5UB^h ziu0DVF)?VFAGazGB|5;uv!B1_7(YasQ;C+60?4KgcI@lJ6emc)qAx%j!#TuoLzV2! ztB`EMH@T!l3`$^sMq#ax9U1~0K`3wD6jMuN~eGh`-3`>~YWe6`4+Yx+5>3;_2TVyi(4$k%n5b=S%6jM7i=HxuhDkS| zU+_H89=6Mgmd)dW)R zOn$s&eVs_58$_p9b`lRADe_{%MQOW_@%RW?Bjtk~C3}s|k?uT0*ZzFB&P<~1d{@3T z-b;1Cgf~8_owoVrO-lTsY}s4YZTMVD%3XN_RJbTKGd(_!Y^R*TIovmpIR*|B!oi$oW^4)$P4tD{GLO=7G3@iZwDQ{ zWQUdc!%*SP%poIFfpb-Q#jN69q&lznPSxq|I37Q)%j9M`*P!Ps$VrG=E-Q*EA&pl& zk$Z90^#FcJlP{*j*p-Aej*#WDd-ql_)cUnIyP0Ezdl*` z=&kzk1@zjGDZtcxe01ywuMMxhtZZCZWH>xhJwtldq$F(eXCusEE>6nNFp6}MM^8** zSaQCvSSVbTo2OS$q3e|+SMQa*U2y{EyFCxGUQQ(Rj>#L~#yhFX$L9w{PFfiSDL5vm zXB&-lPrdy-xq2lzfo}(iGrRII|i?W!YM~GCwjfn4sWX z@fwe*ZZx@e$)!1vBJ*;CphC*QrAJ5*htD^gBX*DX-BC`3!)b=eGinFyvPfCTXk!-2 zG1`sQF+HTKgw>Udh?e5BOA4S6^Edn;*TW7@jz_0%4&*mRC=_mk#PcL;^IsN>YLc`@Eit+U2DO{<7G&c& zNA~uKdDI`VOT2NBA13rDuk=~f936& zcRG%6jGE_2|BKXOhlVGzia5U8wE`4rt$a7ZQ8}GxX<91$T*9~irK18OMq|UaB(`$* zX&2G~#qvmU_x+Y zo%lV3*BFlQLDBmBTi^3M#;<2Q9baN&Q8mXIVG*;!PdoILMU7|R+9>+8DbIh2*Ppf9 z^BCVyFK>nD^)JQi;qF&wwyiXYW>l8$X7rT=?fgAwLo`uGIa?(z%#81FT^Yz2wbUxI zG3(Er9y~Meyl{{6(s6IzRq|@jjO~ZLcS7m$r$Ocd5bU7 zfdS8^?j#ttQ+M_27OWbJ+K3 zI&q144<#Q-!}x<##geQzksX4ZS-b&ZWs>$NQ_kmCUrCQn( zS&`?5IYc{}>pe^Cv-E<6U)u=*h}Uph=`jg+oZUH9N=cA(pT04o1^%oBwOjVAi3E4a zmINsbpz3YAi8%Y(IQzl0lYHdHvo~IGgBwpQ=D(a2MPI%$foa(&j2L3@Nx~Sjk=uG# z9HHa(4RU>cFH`fH6sfDG35oh}pp*;Td4u~Cz~A%d?7FVRXDS#i$qd5^nB&HwY{jYk zo0R-~BGjtF1Jntr_iGdddM3++_~xfA#zD8CU0&o22H(BNk3p4Fo=q{{e{fLO)8ov^ z*&F-0t6?<#$!2+yJ0)e?58dXz{ZjgUjSo3O$zy>_3(M7&rIiBH$Wu|h82u{hr|+3l z#);m=;7FSl9mQLN-$GXf99-G6>9{gu$n5it_B8wc))%s)(ABNG8Bo6}Og(=XPR2nP z3ViNf==OYba+=otp6AZq-=yj$Rf zAb|(}^$o1E-8ci^Ow4MdaWR?y^|Yd+c8Ln`G_+d_MyHV8eW|wQOqu#$xD5@_r)!W- z6(c4RR%UKmTl{h=4W9EGHQ{Z3%KV?euMNhDg9jLi&X>QO;kQXTocH`c_b&y20l}GJ z;)w+319-zfPCE_7RXTtDsEG~S`ofKY#W%%8yS{#G4}5bh5^Q*v z$1(I(;&+@7k1A{ze{}Ac8%ZjiB`i(u=!dUwipR)oanCBn!-aEQDJiX6YdhOXr^+Y^ zJ6A&j2F(sES-J$3hX?rh@Xq!B{(cOlw9kvFZ>RA9-dj@QDs?LyoCb)?yVZsD@wp&R z%Ui4`$Psa-MCk?$&9j&a!Mvyv<2|)VzXx&MLS`#LDmQ(D1j4_wVTH&fC!MM_sALbV zzM;FI%K6v(SWnH~2nOjlx{(V&wfs%VU)kNEujHW)Rw{rfq+Iy##guUI5nE?YO9jt= zFN70nsb3-&;?(}mZobK*O?i6~zkP=@v zP!s$Q??O5v0U_H%fQ};SU^_|dQeUYuw7O8~{_Rcp`Ubz=qsA*<(P0Y>+l@i{$_LF56>LfL`9ORE?1 zB1SNZK8z3P3 zsy^-HbfCqhVZyYLDp;thfF;fa3>7g}>#f;jhv^#Oj~MqaT>tZ2qX3=AS1-Ja8`EiV zz^eHWR_T8OnoBG-sS%+NdJ3=6^6FllngJ_~X^Ae0QI;PK(ZbUj1q>iV9$N3Dz z&DAOSy9-{Q0JQ7W1kY+saKsQ#-@*`ut<=fRnQ%JWih@k-Q-U#UC+t1pz|yei#H1Lt z)>Mn7H^kcaF(0RP#73yJl#NPOlQ2f3B18iQdGmlDQ}J;#MpA4EV%52cy<}F>(7$B zRk?&RC*kc%+9uloZlhBeR}v9XEf%rqS)8{lv$`FXf!Lj@A05=aKX@_{p_H2sn^qJuoqneQz`A z*+TjP?oSuZ!dvdNwW*A;_1AAIHu?&7|4A3fd|5R4zl+pr@!InA7uZ^GWzmyHMfn^= z@0YIPtf!mVa3^eKPnWt~ykEM585t8kp|DmAyuT)wL+@zKPrTG==GZ5-D?LjjeqHhP z73-S=Tlk&ZTM=;9NSSLzG6^0`-3anVg0c~<@*kn9i%E%kP<+NO8 zZ`qHBE@)Olp~dZS*;-fov^hAklRF)Nx>sWedXcidUHP_BF-{N=KB*k|r4BSAJ zQnlJV7Ml}O*2@g1wf)Du;a`OCAD)w+51Z>Qz-U|}VC{J!`#v-n-?@V!FFhN9iDRsoRskRM?@+92d_X+Ndj` z8){gJURbv-$kNaqI~18LW_i}V3q9mK@exC6)?gl;^K+M25Dm5NA^>#$*Kk;yqK!rm zXGCD)IU4v6d1rIjL@lo*a5lIZw>K1Z@M!O?@S~*RfcnS#IMk%Ik8K;pazpHe&pQ=> zSJ`x0x|A|PG!2n;aRXAIZ1TP3RVZd2wLAZKu++w)--0vTlDmOFoff0;J6~^(**`IH zUCImO0trL@?9JPvwNEyuW_b0a%dMN0nV;-FoE?$XLdn~%w_rE8(s|jO_OP?Nu|~~R{a*Le(E%E=v2wGiRy`WbDVuEyjr>45l42PM;)b4 zSNps#J*Lra7PicT?8D>>YNN;U%#vIh)13{c-uK}K+%~p4MJvW<@ZKEh2bX}cMm^sQ z@7r0(49XenS|D1l8t7?Y-21XP|H2h4RrwFUo(Yeb>yEnns&l%pLVVPfx7_r0f6j0Q zRk`s;{UVhOj^{c9z?A|@EJll4alK*8G3(ooeNur&!d9p4H-UTR>JSfE?CpB_zzQ_V ztE3CV(U;SzQ!F%mt;9^NpNe^KIseSuW*|8X2uoLRd`sWpa(OZ~ce zD@5b3T?^?(%)TW;a|vtRCcI&D#qR5`FYBG#6@b$IS30M^LvlaT6*gvu+p3x(qq5XX zD0bHzCXB?WReKA&a(AT=64nZ%$k0x4VNe_Rlu#ZWKt`1rp`Gub>azI#Y`dlv5r9v} zW$PxX?+wNg76+|&B zXCyg1s%P)~%zkU}Y|uUWY2y~XfF{O*$ApX@K&^YItnL-M0;Gh^APn3EZQ4}vkRFQmNgA9h)x zzB%*ex9Bwtrj#Kfn>=)EZOYKZaLAQ8_K%=^L_brX)LI`Pj3|$;C{vkhidR9FCYHM^ zv(Thr&W%?$u5Tu@gSP2Hne{?%sIEQE3sZfTq5KpAO)W&G?M>dvnhb-1^q`t_Bm4WN zQlzopB|u6r=J?ID63eBUebDFwWl;CEK&g$ITD>0Z$V=G0l?vMUA`MNAwS_-~9SA=b z2Bnz)?L*{y+3IfND!wujmCGo$MCe?rpCYrK@2WRBq0X&)rXaJN_aIXcoHKO}b@$eF z6-y1*A^)HP!=+7bn|54F_*O4R(LrK% zm~*msl^L zik~bzpVWMYrX-vozpXvToH@C9iEf%l>x%FIVRHk6Bdu#++GtS0BM}4RYE#AwQQ70z z^O5SeBGx0fVnxxH+_pxUp>9aVTgpe65w;p+j1jg9oa-x?*al6mf%Uv?9dy+y9dPCz zEZWl52uvW;;Jn!HYW2%W<;CIgq7$~Qy0d;Mx-LoPiEu0)$zkZQVbA-TaxO5x@kAt- zjCbEzUt0)r7k}&_7B67ZQXM5=vN%}cxHP`@n@#FW!g`a*NM6ErCd&a7H5|QlDaX8i zWNoD7Ufa5!UI6h>W4ok?>#X?`%qlKh%ql8mG>oJFY^kIQmcGRk-X4@trn0I;^b->{ zg(XuIUyydO&1JXcB<7mDR!Ih_orRzz=+~RXiJ-?7#Fv@`7McWFtH+yTM&<|->vWP8*niKZkULP~} zJxOaeO6|kDOPpX9V~}zc)ao+Zfl)6sGAqF1J_>cGF!(V6#vqo0lSJOVvo^Z0HX4MZ zt5~a9n;>l^kilWy$fEJXuaBE^bG=I@cy#<;w^q=07H|b2^jK#`J#5*b=D0m)(ZMBc z&tena)fzq0$iUiq&tR_i?;DU^d;E6ZS)Ul4N=XQ0-ky}b9Tipbtmfld9hOK!8_b6# zuJt`U(C$PMXcecD+GqT4-!pslnF=Pw zt(B=sXj%}n)S-+~ZZt4_rZH&NV!SyLV6IoX*b*k)SYbk2%ee{MaeUY zQrk9QfyOeMYt^z5)dTh_HL_Ulz~&h`Tv^4}CslaTT-r;KrSX-u`k`f<;?8IHs&Al6 zVJ7#j1&58Pl%%4f9@zDcYCqTQX(}fNhibP8^PT3c=wW~ie_d~2{8dlU2}F8m{u={( zS?G?O(8s2%u#_9nj)r=tP$W%M-1)8eSwf6>p)Y-8P*3wz!p31?Mf#CI;!cpc-&%)M zp(qPWOR4B-_mxrNi2la2(uJ;W(%kQ+D1ilD(pZImtIN2+g17scxAFY`-R2qNb9aXc zHlY{#vjDAXj@wRGa z&+b(1NpoRqQ>{3{jg{HF*4oz;lBY==P54F6Pm90QaYJvndt0pde>#1LV00eNU?@Z^4hBTFT`&nDz?TDxs!9C znyUVfHb`SgdLxU(%H=F75gnhax7?DAJ$ygT-90J@L0NXCmpnSf)X*t`?59b_yN@Kv zf7~H!^wzo5MhM5%8*ye0x5=r0t3Dz#Mg+a|?LV!RN-yunicnHWuKoIyNJyvg8zD>3q$lkx z*e;Yw-3b%yIBPne5>b;Fs5P>q80ae5D!!!PGRiQ-_XEXu?_dQ<>Jv*CG;ZBK*WWDs z+?D+hhxub2H;@2+j=eT*6QgnzmcFA zeD%Cwmai%&Z9wl10z8N+BY1SKOrlU1pj3V5P04&lHEk2(%czFAzM&mEm!+5?h=-fg z;W%Vy!tSoOGj)sD7w}(+?TsVO?(ckq%o)lw`{jAds41kjp2vzL4&%(5VoXWw6%eTgO zaqWsybDx1CT&?5@t-EpDUaI^e4TYP_QYo|8UrB=%C>DMuAVMrl&{ea>Z}*XGjJDvp z`~|KcDSxo!{^orsu1BwQ*v}6Wwvc5<7=W((_R1O^X++Pzq)hqdKrGx$JG7qARh>?g zWWpkaU@^$&0vP3QnRQZ62{Bb7 z^~9>A(S$v#`BEZ%R5>gA8#b2Z!keT+85ic0Y2KbX%B4a8aVy2{|%n~_n_x6?l zu;sFTs{F0pPw=ng2;EopPhJ$yXTyl}|5R30sSi~;0nR?%D(W7xRRf0v!+K@$_W;oZFW_AAg@vrwTQ3Wzd z_-<@CVT~^#4}1v^Ji^}}Ain#+0@jW(VJa41r7%j*y8a5j`k92olka@rIxsis! zP|)$}-cnbOkljoWy(Bw6?a-I&X2W#Bkn9y^C28qha_#vG5+`z1C>KLVA{h$AlTU{w zr-`(idzn_TbbrRrJkZqirPFoT2MhjQ3YSJ1ps49%aN@PjM?U>R2DjbWB04dk{;tDv zEDZz_F&C~QYGcs9Fwwg#^2FrgITP3Yi=hUg^C8us9r}(a{ zniiIIB+Ezq=@VhBD(xYBWvWs&Ko z4vVifBHKxjt(=@3pNPn0=gg;5!Q9`P?*!!?EaJQiGreAuYoX9g+Yv7?GFN`4(#dRv z(358Zd$xqi*I^p$#(douk0m`lZqH^iVNq#*)vM&+`KTT7D!D~{^}vAx4pYeyAMhn4 z4H1x&qg)PmU2}_^2bXH~KAY>|992<1>(HS?O3KRn zp|$Tt0*mdb6V%D)#QZAKmug;qq)sI}^}xC1O$pJ&Vg@V_=KbU6&k_4VF+M&IkbHj; zTK0?E(s;9o%Nk#wBo!s)gFDsMM|`SU=?Rx=WeKt`9#_7a5`Fx~W$vuRU|YbZO{ocu zY4@hNab0!-j3AhJdiqq`u}-dQ+m=VYU;6BST%;r{#o&A5G4BU3 zIY{eHDAyBV zptvArkTzi`_*L(PD=i5OtYQVMqX0gyY%hfz>xx+v;3aW=qVy+Bv^8DLcV`1-rK7RAFbW+f#WMU8j9EXj|-kaM3l%Nn$#4oUHx) zaRn;c*`eT553a9(x|hvN7VL)nEe3x5ItN>WlpZ`7ZsUi)AjZB@#6VB~E+L`S(f%!1 z@-M*0+aK;6vricpm#UB&w)}8oK$=9!JaS)mZdd^o8QreXe(L( zfzvL0CR!%ZC+#{LTI9YQtW7*((`ThP+|Yda&P5hRj_`Aemjml29ys6fI-ttjxBt05 zzs*3gE$0g~dZ64+U;mrw*j#~}vh@e{gEDys)h+LT9Al%3jIwocwY3#=Tg^*YxOpA$ zeqW7#1pAHKHwsI%$&5|5j@n+AD_-JFH} z_;#fNJu$!4zK2-3N9vi6vy0F1vp(kea(Xh}ROtKF$2kXMgB8L#Zp=}hIT3gAKC`Nh zPC$4#ZQYZW1n;(|HoaKKDTzkq+jT8+-&(lq*CO2G>>Sjb%9sGzyUUz~rPyI$)O>(4 zERRIK>nLjRiBV+@^ZYw5$2Y?~ZO4qS(({9NK_lq#UmTV0WIKT~efm`Y3lb}LMOWo{p+EnT zM}3cDMIhzmb9>9df7&}XU)lcrof3SKm%MHPP^3++28oTFfFf!~lG=P=C2@IWB@uQh zq&TW&30a(Urk?HsB$Oe3ZJgV*|MbrjOI-}E%Dgg>YVilFK_ z#1>yFd6x*F$^PUX$a}csRf1l+sQ{^>iypVFJJD1o!E(adF_~U_Gu8yV?{6N*;Rl|Sl%4C$58$F zsO`&|Z;nqLtlfs59=F|h4s9#GI)A4!EGFdD3T)=UrVoJXkdQ0xoObJ<=Ef^^%D1t$ z17!k*FVLsPHd(Q@hkcb}CBM($F#_Ee0i#9M%;|Z`16!VO;fiw=eeO3Dj*@m?WIu_|frx%*bfW=xT^ZEYvf^^p*6FsG9I{XF%}o;UKwFX|fcyOl ziwCz(l`wgu!cw(!_Oe|ocO~sBWFKqg)2qd?tr4IaC1eDWQPHG(o6et4G}@!(MObp) z0!C9GwJS8sK|OTC>f6=!Jtvlte*StLDR||LY+KZ&d>| zd9boPLrYd(D|_pAY}?aYCMIk=x}~STG-x|_@!1u@VQ4K^W6U2X+42m=4Q2!1E*KWBJM5U4kp?cSW{>U`Oezyh_6vgvUQhHYBOX-QR2hxQ-XEmUM zP{B^s^juhpJ2GyEV(hHM`xD{P?)gwX_I|wRO0-(zsywXn&-2ln)?|gD(2pfkhiyW!EWO)zGy3B7!9I8lI zy1-gp67M}3C3t1Il=MJF+zMpX?*8%m}_a9{Wk?&RLD98Vzi|t62q)8$Hf{Db5 z>jB1O#m+jddL^c>AN@EaqRk@MvAw*`rPe^`fB)uyYC_?F`xEm@qg1U=_p1QgU-1h^ zb3ZM;_L5VWZJ&c$Ko-xP+&L>~eEosPdv9&IxbZ=Ztm8$z`O$}}0e!4KR+FSbbT`V} z{KFO*BYb$)1-)cEDY;}BTG95pfr>b>QTWpN zh~$wPj1)zZ^?q)tjWpTT5|@O3;6asny2l4ntUvddoAt#8GkJqUH>w# z12zJrxPl){MabODx2JD|s6Ha+* z0CR%yS{8j%7#J+P3yk;o1G2HiVNqbl$GR+f&&kYDMycbUk(0EW^)h&lxPRf4r#YDX zteZZzSN-~?VSlWDpVhWi-4nl24W%#pXk@QuyR-c%a@ZnDDb&_=zslOqZ!^DMVb?`l ztThMx3P@bUb&_&+Z3d(t&^QgyTgz`0??JexW?|A;jK+SrGb*MiONuRsV}y{2+Cnp?!iK${Pft-|tZ z+$aiv-h6Ye#!)v;b;dY5@Mg%b&jS3!_ayli*GZpBFgGN>n4&PaU)xBe|~sN@!Z zbqp|!%2!1PHi|KpbmWhQ%vL^jDD6{RR6 zdt62+duGqbh)_w&49VUrJ7koVjLV)OE?f5cpLh5DxqsjP^|RGhXZQ{(%5p z=kCt)kV)kBEtg{!$Kx1xBtDtS+xH%TJcC876*-Sg~xVA`eNI!Oa{H>EIwy zLa)s5tZn@noDv2r+K6+!p=9bMT9qLvEEPq_(R+$&#SqK^&W=>A9-%kY?t{057ltj$ zjn^6&R>qSl4Xg`KIcTq5gLRaru<`Oc4m2@T>Ypvc)jv`jO689IQ^&G+y!kzH`@`#Aw96I)7kGyWW-R!Sl9Nuk9d? zl$D=8^aaXiY)B?f-@1~ttiAP|_mIi^e2p=tf0sVuwy*#5P)>{E>0x{ezwSR2{?xZ7 zn1FBj`^2{^3Ebo$Hd%cY2--@H5gVJcBQdD2|JGc6!s2M=Ey0?EoX`zz8g7^5ncw7O zyxec5R>BAP0Y-Hh$FfHLMFkmoPL9y%U|3t1l7a)stbL`zPk{g)_b~q~BVAI{`$r|l ziDjn-wZTqqAgHcTh+%V+u9GTC4xIyj{q)9*(VnO-xwmwWB^6w?YIp}-2Dl_%0*AoB zmFeZ>rKYCVV1EV{oq~FTw&JAn!?UytUWkPV95{$3@V=9M{|;9M>m4t=M|dYxrFpbQ z{KNb`s)AtQA)jWuOQjzl{k5J0bJo<%FXC>Nx4i!RCIf8sV`%6cU=UzH8nCJrfPygv zMsC$n0I}YiZuo2DO5|JzI^eo_R$qZBJS>vDy>Vos)xX}g|3h{{j-!UqB{ota=>ZYo zmfI~<0=vc}pUx5X;XaqCs9ae|yy3R`;-Usn7G4aje#3V=EJ#+EYn9j|pO$gtH9^n{ z9W?>YVCHRb^-OdLi+zL5!IYCXK{uDdJh94m&E3hFWc)t~DxZ#?jx3Y-TEj!= zfPWlG>VuMhs5iZHNHXEJY8axb%@yORnWz8YL9xx>NN?Vm?H^PXqWpsJ=FKemXTxj{ z>Z2ycBxkhg=V$ZjQGe11S-e^x@;c1UeUx)qzFMifYmZA`=xSRvf&r&r1on1ZIdu+F zh@C5aw)N8N?uKwY2KYvF`)x8mOYD64f~prk51yqP>?ZHL^{;Q7dq>@DS6HN&4_>Wb z@fH%tI(a!wtGDSL-TczEQ`vpIUhKS6mv(T;raSOIw4h=7SxK;8_+w(I(wpvBC9p?MX^w!WU>T#F%<39h5 z>4J&Bu>0+Cnw%3HH3Zg0*F<}g&ybm;?$SqQ=MCXP;ua6{H_r_=HAwt z_@D9J1D;3F1ZWC&c6P{M%3YGR`Xscn#w(p$&HM9vEDS_;iOsCda)zBR-{92ys7zpS zo<7rmkbJ*q?*r2bq+D`kwm_WPs2)E0=A7`Q;k87~UUbE)SF5wfD*w|0FonR{i>bc3 zP-y*oCDB)E2Wr|?&4rkLFSCVfkSY+4JPrcS)us*JKr7QBs9Ji}@0V*nI%i9T@$2gR z;aTgXU9Jn$>gbi&^T}b?RJV!awou>)1i^ac&#{=kE_JuXmGuw^FnIOlwtrvL^TE zsQ!cizz~0pP6*suc=CB`gB+*+WM!OIpWcGoy5H%Qgyqm?P%7`{&zOtVV5Fl&wvs&Nxpf4Kl7_VK(v0h z$>(MbMe!Sc_p$Oy>ovI-FI0k_Bmg&~=Kln75NbTuREfSj==OFa-&naDJzw?ESe`zZ z|1j{VohXE(fJjaN-xCTk7ThmF8-v@@}>N$>joPD+fq zxEqLreH{GX_I!4DR?Rk}?!L(=y)6~Lux_oDew=UQyn5=37c))IH8HB6>*f#`asFtd z;>3yM|~#qCTwQ3}fHuEFjb_mML| zT>kKKYGJ8)T@HO~{OWHx*E&)nb%=i*U>m2tZEVEqquw}Of=a|sQeJ+)%4bd2dp<#~ z0oBI~xsuNJR)qU-{YCXU2KPEujD;nWPx{e>b4$6;{3~wbQE}@Rj3$)wDzT@2NZ{xT zkOt+&*j-o;D`Y(i4InQ#|CY9ss$m0`Ax}c&>SiyWa(kI^zBDVbqP5upRR?fQsa3co zF}}i5l+{2&0o4%*83&SN0M{y3Ip3VTH-=k1Anq<|d)7X)-L(T*3~q1;X5{$}JNVM1 z@Z%GhC93gczm~cEf#?Y}4CE=UAWs2pu2Wr!lI7;$9*-nPEAGBk42mg)NiMjBG)}e0 z`&d3B?K&0K%u^(9zzL83PTF2%N^SnBxS;yofRVZns2Z~@){OpgpoJmxS<7s80ua-o zJii!q2C5Rf_n(2;cta8wdZrQjDs~-C#Z?@WpKKp1Je8cY=WsY)#!pa(O3;NSNY~zd zQH@Q74$yexAY3qcO}x6RRzPp1#_1cIJCCAP zSm<~YuZq11Ap0`n+#f)zQ&+o@=vBhBOwE}>@bY0pEjoR*2 z7@2zV2`|TgdNl92Id1=B^H^apE;{n@K-){6Z5adKwUKjAh$E*OLdaQ|MZxh?D87xY zA7zy|;zJ2L3x|fLlE|UMJRz~Xz(buCov>0NY&=?SOON{S;R6clH{~Y?!eaB(0 zdKuF-4F)^n#G`>74v9G$9-_P!Wdkr9N(q%9?Dg&F3M0jq(GlVKlBZ;1hKHeZn+|o| z(GltS7X!kXPV% zI5L%4lk{D6*sr8vC_PG% z6V{=d#Cb}%4*kpJ_7iq66@x zn+9Hp;U)k#L3WEWxT{l zbIk3iI2c%$k1x^DzE7S`oMFAApnwlE5l|?)2t21shS}L!96}H63wc`D!u*Vk5O@@| zvksAHNTe8?SE_`rNk-u_D^G$cAi3+?$pnbEYEM)6nkfz{2@*9gBSEII8RmWs4OEns zRT8^Aoz(gP>E0C`E$T}x@@4r)(mM0eXoP^hfqwbhl^N^h$gU|E?S&VJ15dEGxA((B znBhD>XN+Qq3v`H|mXoJIFtLU1D~grd7ZBsS`}eJdgR3ZL`n@)% z3TaN+kCYPw(F7w5#C#7wkC@_@1Zc@hL{%I-I)jB$;MWf4q0*_|A3ybYYcFIHzJ6<4 zAhl~;M7-&QNTp? zkQDXV+qCGR5YU8B?&^C-p+EA#GXM(3KVr<|9FFVb)APQ4^GoX3%jsP>WBU%h z3rrBL(*z_wYE+ky|t~!vfOCOlt-N!^VK-& zn=-M*IoX!)@3r7xct{Y`NF`4~LQ+L+4}*4fE1?oY2K)}0hk1GklC*Hr{dK!%!R^k? z&d;Z%rZ$#)?;KAjaozn?pcanp%QDV-%zX=tdX zR|_Wgd0#Yvrtlx5qc7lPZ}P=T+Q@qT;UvO4jUN^o$_hnx){S9BVx&Z@CTs!)JPIu$ z7t7|sDwiDNN~3C;mA9+WpMB7-TBn5hC4;XVxSc7`wBx*~>}F!fIf%aqcy#0bz7D6{ zSo02j;FyJ~j!vlPgf}@s(9J?a7zSpi0af-pV4iIp+`OYmnC}Ulf)k@7(3eixEc2nb zT*6heEFLfwz^u=?y0hm?p5de!Taq=aQgY9 zj#BH`Wh~G?BbdjL-_{L$S)pc?b|>)}{B$JMDRgdssA&h0vcWMI8`!LC0qbq^CELcj zn-`UEjlH3j3TOci%_+T=<7=;I0{Qiw1dv9hKgX{TZKnVhLATdELzDO@Xh%I5U_t<|u(@ zX=%xnXj*x&Ca0vaL64z;R3WY$!v?^2DuX$isUrDA&dEMP&Xj@lVH@3nk1_Be_B z@hr8g5d&FbdF4|dlRPPsTLR0^JNg@wJ7c}5DBM@ZRluP#d^r1v`GQs1@XIpO0jn~Y zu|W#Lo5k~sdKK2fbid~3z0h}a`>ha_3dnlp(t5;*U2tGd;y2ew)lqA3b;5KJa-fHV zC{HtiYx<7QTkq8ztvF^ zKp|f3d<3K{+nnxTMFNRNj^#!|b>&;yrQ0GginE1$KT=Y!!X_Z^1v{m10Fzt9i2V{5 z78V+kq`huBF(-jdY%LnPNH8iYDV-jm8j)a1N~(t!v~1=jQ~O*8(o9XeEn`3vcAv&i>`=MIYL7n~{$RMWA!al$W4^>|?) z2vC3sIQjXhOK+BUZCM+MXZKiqc#!o$gKLbbx>RGgqLwS>`@kdjESMrXTJ1&(Z+fE| z#?@$ryzKMr-nNZ`fi$+ZX-}I4M#gGAB?gpQ)3UR_rxn@3IZ#Y@qPhB|2-oGq$SrcR zA=73)GF**PZA1W+8si@W+k?}f8r!CEngJr>0TrmVN5(n@Ld51lBY`dD4 zRxo(UUX$^W+2J!I_66D5H=UhJdi{%YbBSQYQnS8&?d+54`X>^Ja+&(zQlY;5CMHI_ z!(89M;KkhBqXwzcB&{JnxW6X-f_?4QTW!;^!NE3Ce6m|-0LN1}^w9nD3Lq~adu0Ta zuQ*HeH_-6}bjFK%ZB=#B%gKu7fuH~qHxev3H)$)hfmc^3LYo|Q_l0_qh+~I7@FxHU zsUB?!8~bg{3@s2*_*>o*i6rnN;SpWVlE*&aipk8*zK{zuU>wEq3$=16ON{{0!E0{* zK88_T^lJxCs1`k)lHhdT_>5iE;ie!cEiDz3nxAda%jw@|ES@$rW3G(A03?2kY6`Z7|BOa*np&^lpJ99|$08(`hEKhSMSwmY0f2wb8g4 zPyY;C7XS#$16P&OV{r!4H$1#3Tv+S2nq)jQbl8ycv$vP+?E6_KaYL`=Yf(l<1_nfV zTJ$e>K&X(|YC6`}cPVplWnp2xno$_41v*7a@;AtNW03G|!EQPWtFH~K@4*RUv7tsK zf9qDzay@9ZLXH|4UnGfNcC$cB!SMyJrM$xo1ogMg%OHu#psX(~E}KZY&@ooi2e3%| zx*97lZ)rW7o?ViG*Y;+ar=A+a(sxt0rTJxEe*PU!1N8T3D^r!0;duX%I(C=B5hrpo zj{txYxSAjTLWxiW5qbcOQ9J*v+P08K^V!u_h9+S1$)PYpo_iG$l=u`W=0lyZxUVgt zeZZo8ErRm0ww*-5K#XEKk?S{hdv43+z{lDqX-B>*!y@=2aL3Y__U)-s4siJs{lyJ* z)~u17L7nwi;gYH%2!7g$JNxDszty$^-NeOPrFY(^4Gek145#kYqiqUcqg!U_ zqus0R@ldL|T(f~}_`uL9W0cY#AY*4gt(1NKOat-_A3oPe*dpnqx4Hn$l#^$D)re@Ie^z?_2f$PTe`&$+FT?>=h)jl6Jmy!NBPFlEv z;t#8nM*Wpda216BTSp=E>cKyceGNgN=j2TfW~uXx47?vFsJvwT{^g5*Q`H@-#|B>V zivklXG4blKrA_p_;VENKkp#Mj%`*WaNx;GtG~f+=66pT$>s!JoKKKL=DYw&zYh7WQ`LSa^=%M{0m*TG1V$H8Na`^` z63&W(e4KOg-eq-pBO_q-La5q7AyV$)f-|XFbZNR(SC(t(HRYA5%D=_iB7&;z1Tx9` zJu(n%r1>fvrwvUP>xo{yN)Dmqa7}?Muwn8?*ibS-?;QlOLSB(E0=bvNpWkW_hSOlS z8RtByi#3>5!H236Qt^C){Mm72Y>(B7n(i1eQQ~q?H+ko(*lqP>vELlkig)! zJ5@?up3{Z(X#$@N8}~3{gc$F%FdZ@EuaPkCy^ah}G!39=f^bkHAt_%?D z-|=YvQZ2KlB<`=;UiMGFpf(uT`yE64*~<@VW@kYkHJMDGbRD#1LfWkgM+fQPs%%%x zz2N4pTcEm;)li#*`3nKF76p)7r>K6&&nE$qF}PeOiHTh03^_~7EV(a0WxWEWF>cSC2HqXcm_^Qo4LEB;V_r4uooyv5pPL)>9J# zb!S2yHkF%BH>I@heuY0Zg0104hH{?y|K&1jL?DKxcyzmjeL6p@+U@p_hoXAfE+A<- zgJm^WHa@@>mRB)>a{@6S=U)lE;^6#g!>%7|3~(yZDE%hFJX7{4 z!CWQ2ftQ7Vmrdetrd$Uk_o4AgI^;Y7=O6IJ;@dC)xWH|&gG32tEUId0&Glf7;0m40 zb9a{YRidJzHsuulN-%-?46P}@gmA659|PsQS0F|t|EuH2TFo-{PBv?q)+~@mlPf+u zyf1*d>cdUCZ+{8;1@4v5!sGaB?Llq$SFVbKhjOc9GDHAp_q660pa+8(fK-#PSD~&o zeXnH59BYnpp9-R0`_5gk7Dzq?e$GUI#sNFP8@pMmCx<>T=F`&+v{q?SkGRdI!^h80 zI#`ye!9_tuMbL=G?v0|88;rlexP4pAeu5y@i_0m2-;R%Zfrs4K*r42NJta@U0AT{5 z|2d+NKpWPwis(2RzYOu0u@zBn{yg8UDL~5w+zv1&Ad&oT``JPTs4h)hJ9A4eFojno zGB|+laI(f@(!(w)-Cx_IB_i%lfgD2U=gi9t3OV%4XHw~6oH5PYVD+DWNKA=bk5x=} zpN-Kj^xCoW{oIsWR@T3|r>)6F*#$7vc`E*P+SA)zm?@nDIf;?`yr?ThzE6*a|6UO@4_>!moQzozq)`n+i`Y|0x)%DLT`T}WDK>w zouKRoe-a70=d@xCx<0C*aj6|p73o($GA;^}P`PqD=>crvu78PNe1u zsY=xWq7baU{JgVxyhvz~M;Z-?b$vq;ptplB;U03b0f!?}C@3|YDU~jXk;SPhi`)6$ zc^4IKn*r71LXWgT5sqRAjO9Tk|MZB^co(|o`YtaOoA9B`9z9A;O%2ej61<+Jk^1@b zyQ#Ruf4BkM_TLZ1ldf#~ zT1$Qgg6*ksQ0lgIh3#aW8lWFPQw4MhwA6}RnY4YLH)RJwe|#k#5h&x3x`zbMdlUS* z`g5ib>iA$=NF_KDbfA+fM?>cGjN7fy_gVxdhF7I_FH2*3Z$25{pR)J39MU%6HQKeX zZ)0Lu;I0p|8P?c#$L%Fui!!}GfBt*`b2J$@u*UwL&A$R)e%M+Mu^iG?*Qo8Cj0ah} z4VPGx5%%hzPwI#E&Q6yqU(n>*x|nmC1I?2w=`sEcGS3@X2G`j9u6`OxQH*a#qG@1z^#vhts>;^SQ=rLgAddzJk`k{!A_XEab zujLXb2YBdz1Gjjl_Tk|B?>{x5wg>cdBO>(U+Wza&C9O&UPB z1-wfzsHCBLN*l9a-EL-G2+F_tCrfZ!M=(rz9U8a3o#r@X3d7!ozOaW~0G3`aZ=jqf zww-qALQfb1ME?B*zzo;Ug?-;;o3H4c9ETmCN5mX;7S$(*|55f;zlB@lJ@%3ap z&XIaZ%fnx>Am|0j)P6w0P8=;OEQOyobm32>Y3(e}C@$6fD9A}~z&r8UJjsCm2M~>} zyC!2R%^|Kp3E-I-3ED{a^muwhem|TYfjDX#)48x7oArfJr4a$i13CYWjt)v$Qa-g@ zYg=1N9#FM|xE?_0zaQLwXtO{%NSwT&ZiU3kYCG+zl@Xt-NFoJgAw+&%DZvE3qg)lK zJpe%tD&cC|N+J}Pvq5@aJvKfj$@r=PnmblN+UTa2B_UKkd4Av1 zsuxetD(a4O_I?D#zS_}s^}=50Yd=8kj2nqZhV1xAdjJZ1rB5Ivm+Z^9P~yp-B>nJIRxHew9180FHfuRev0ZOybr@YR=uA8 zW5TK+YLc{VN&uP-n$^ZF1V;vd9Jy_7X?BvW2)#M5zMy3Vm76elY)F3H^b)OVyP+Ef z3@?-9N#4r1n{=xkDA-}(Gw=lg4GlLyaxUgEZbs;s2gMR3V$t(Hf>I{9(&CGUxRU}& zP<3*z?k>tcfZNY<2S7RxXaJ_huPt8thyDt>nKFrj^WF0Q&iAPvr03bq>se#sVwg#7e{3Ey=qk(PXN5kV@hxNqubXjUuB7`aW`=Matnds!z_1o9B zu6xbCH%z*nKjp8g!$ZB8B*s$~Jtt8>Z06gw?{)hKm{UDugy#d z2*pYMlMQ~y`7TCO_$H@zqKGjZXdrF^sxF=b;p&H5Wq>n)Qvc!WHEcdI510o2&GpOC z>nZ1Nr2x1fIi>dU(0G;3Tj<(J{Pxa0#<#0;Zyn?xlK;`*H6E81LNPfn81)#I%SFFDRh9*=oR6ssD;ih+b*zH}N24gdQ#^}834&gW+h zKn_JS{5Wem5nQ?G_o-?WBQuEW596k%laCjY3q3X;6?E5H!z~WguEapcc%T3KjfyC* z{?D)N<<`}W&qEXiX=&S?C?s7%8G{*tK{t%%P{@FzvfuHc0|&!Ccu%@RcO$l=k1ywv$eK%KI@tXS8DzfnPrt`Au6|_ zO`M#Z&a?whPDMe0ix0x2He8VY{BL=Z2l1ViJm}zfK$pi$Mfvhs*f7R9m-Mwl`z9M= z*X87)2O!9Wc0YsdL8ul5oc!H2vPy)3`uB5c5qdnCpx$#)iE`+aTn_Y(F|-Mk*f$|< z7LbC)cH3lu){5jJETx+N|J$2Xe+kt$(_7XcQ9jcS=RJivk@TPzlAWMKiG)rxJ;}E1 zyX7WNx9%bIHBn?6_JaQxWz~rGQs<6L{T!E1lbi{9mNQUUSE|+p?Vg}JH%8C&KQEj} zgPy-14!;A&K!--t`8L$O4*7P;Dp1T7`k8p*39%3!=lAl_dKyDd1-_oxg(9T>{P&~w z;yh5N=DRaP1!(Wb3`A~MD1f|7%-<<%?APtLyVOxe|J}N<;5BhZy6ro_^)D+W#!Zre z)7|sBUeF5Rf0u>DsmWLX%4Fx#)6>Bz%=({yW%Pf<-?S?&eE;F~qM2J*Y7kY=Td4kk zO=G=!wb!J!;6`Ri_84K_RKYN#_xZSiw*4LtKmo3_Z-ak2^;c=F-GO}B*;p$+d z-XGusYU}*bgePY$rA_jNYkQ6?3w5BHvc2keId?}K`2D5a$zv|w2g3sNom4lP?V!!6 z9VL1pI~@5TS_J>Jb|9<%s@tHbpuKME&~NVU`X$mQS~$oz-yTJ zyuDr0%p&i0t^V(R2T}dc*MTar9fTH%`SnoXn%{HWS-taAW5cq|629klf}qXLU;#P- zEBbQE31R@^RNY+~UG2rOO_I)WK4s8k{cTz5?^&jhNHG0-J~;o-G0S+nhc>}d7CnSZ z#^G*QYG@`~Da_k&In8IS<-te-jV_ry_nV>oF;WFOlpkY~r=gpvZPgJRCTOuo-hzeM zG;GdAv{$GMfIwfi%2;yX=USg{y#wg=B{g&pgj9s`hyVlruqs26comhXrfu-;AQGUU zrk3N2J@Bc6`k;j{-H4N>CMDFpYb0(1e>$lL*N>z?qT^c&m`*_)SU+uO&#DfqfKXgkCy{f_wyS!jA~B{RhaTVY-`+tMKvhZH<6VD=jZ4ND2qiD&D@1 z_T^(`dHKlyqA}U42}6%rN{Ft1bEEiw3RcjOX;?uEJu^tc2Kems7wFO5c%$;H)_nb^ zb(NQ&h;eIKaQzg-eIA`hWqjhjJv~q161tGdABNV}+^FkmJ(GDA;{i8QLWjMebPeTa z<)+bepqXrTYJ^e5B7qJ5Ku{tVW7;L_gOCX-)ha2UO9Zc6x$?BZ_PF(r{40S(lx7PvMgf{@bsWz6qJm7O7y%InXmwOKEMUgkr$}Y zn}HCDC3Z2r3oIAh2wY;5N#BKqs(k#2Dkcf27lfNj3sgp>l_1_P!yqz6i z-DcwI3gCY#nxN)(7 zK!FER)6wD7nds|#2F?GKL^{jd?x0<;(dz79^soR@PuV3?Y{-TqE@Z>Ykb(Mtgcpy!e6agKG28+?4^i zV~=?bsA~yu)P}nu+_8=|`vo{Czw#4Qo%5o-7^k=EKNe#)AERxEgUXoVL)G*=ybT(3 z$f#oT2%rOExsdNoO2$=?A^{Lk@b#^0_d$BmARNYyfC68#*6(1Tx8W1aCIIcDob1UHflQWtn`2fm5 zh=WvVZ(M|HrG9A^dI6(}=pu`nN;Eks)DCK%ho<5NqBp+RdewhjIVn;vT#?K;#)Fr+ z-Z62&@4H@5ZhT&chya#`#Ahbn+f=Mb_|8_#=7|r!h~4N}V?qD>N=h>&Y^YCsw9(^)xE-} z+)v=*_5v>td%o^UAYM3_l5@smz2L8p^+vTWtKj?^vOQKn9iix?85KlZCysYzy$WQR zu($b>G`~dMg>J8cnhgT57!bmdMt^fu9tEu82&d)Wb~xo62cWP3=zcfxx$S9I@euB; zb=A#+j=z6VeDCsjX%@*dkmiRJjn%U?=a_!Z{s1>m$sw5&_@`Ij^&e<46bFcsT%SCH1@Gh!Z8bnZ1X}lCEcYXZxR&TOr zDc|K2!JT#^iDR}!>iWre*2&eP_}!7-f*E_2`pBBc_0N!Bgnm0dFMt6b0$(8Ri5qT` z)ZeQ^Bo(_Q#*kN`@6#5q>HtfvB1;mxDkU?}tL(~+uUZca7X^NJC*yd0ZRY%*wsQWF zB}#?Itvjj!t`3yqs6JYlv1NuNY2{r72I04o`NfZ2sjHbvlGqqpFR>D&Bas`((>Cz% zRb#>?H^B0i4(Al0v0WZa7skfGe*m~sY928FUT?y(R>qaWkOOE2u2TtsxZYx(NpBUQ z&Ec?foNJ7R#w@HBCZ8)48Xe)%tlb--4?zk#4JaHd4&Zl~2W5WreQIwJW z3DL6L(yRcuK>}vH>R&N_pPhzG#t{4aakP&S^joF(n|EUv$U2@R-Tid7K{hUrWpyIS zH?cc1G}Pib%*d&WYF6w_kCY~{ja4TxIlmu8$}DrJpwfLLW?XyPq`6R11@(E+R>#V% zD+A|{q5aHfKErCp@TpAEDW{_<7p(8fH+LDCW5&-UhEp@w@c+D%m!B$xi86ruJ8fq_ zfwzJ>2a*)OrS=Qw4-*mK#x3G;g(vG9&=rODGGOjLf1h@Q#%BgFn2(izza<`y^QBjO1P!`+f2d>hmG#rl!46VYQ#d+QmNTLEj_Ct<{r>@iBY_$BDhVlM6GQO*oJ4j*W?_UcLXz z<_BNX);i@c(%Y@;r!U=Mpx5*kybw;5Me*95K;H%R?Rt@+LgU%CTKv=Dm%ay`<$2xt zy7BVsJE}w}!b`m5OItnXXKZf%RvWtOx+Bl@^tmZV&yn2Khx-`mtI|=6?>*|XHP&Bv zR>4(COsor6Csw=j?|hNqVGVzR_EW^TG)-GqK{2`iDECF4uCT}4oVE}ptm^}bn_>*W(;<#i?X8Cc?Unt_~jRTOJ^^s z2NQ*^QqQDa51;LN&%PbW&qlw0G7EF_f)p`ZzJmDiZ^zH(zWXykF5uCi*i-RD(sUxl4XrVY=THM!8FDaEp|~O%QgtBE*0|00TrhzHkw!QF3@b4 zi$A(Zbzs}QiN*EFbqSjt@1~fdo)nk6pRIJ#yBz)SR-$Z{$WaVg+1ZM)>9hEd4ZZXhvIRqHVW19tVz8ryZ1+z zCVysK zIhQz5LM`*ADv`xwCWDziiCJIUP4RZ)2E46lhc)4^>TA{mcl`Y7d5r2tHxAg?*oy5Z zWOP3}q*xM<-c--UkwuB&Ht<~_ID<#bYtPLU8`?g5A-3K8tXscp=k?2#(oD#2a zi^!fjtLb^}Iw#y{idozL4~vWRN)d7fjoImo{Uce|Oy&1i9(Q|sAW z&9#d*V=w+?k&Jq&oo`Snl+v)`7U_GjVwI+85JqJT>*?GzhZMl08PSuWj$$ZxJ)l0oReO+D4y$P+6Q}2Imb;a=NM+Awc zsD@_4?8z5>*#mdpjc~Sn@7{NavFFNv^xK8~ZjH#0>sPC@Ue~@^p^FCVcv?QE&O26x zCa7Eu?QD_3xmds;>pS{qbpB+ToR*MfrgC>*;nOvX#~trj;1bMoLs^$a4Ua!P3dG$m zTi)+B#cQ@2GQsrjYIm>l)XUEBuf7T|@Vi89baE%(@IWljRN8CpZI-ReGYRT8W~(2q z_}JAjjWw79qyhIS*z6-@{w#nVUGZ`~!JP6AJQPLww|h7jo|AMM@Wt}1#YD*(PI6Pn zwqH9AOq`ItDA({I%iON&@EGSD5y^M+dL#H#?@o@jR_Ms`+r>D_U>Bx39U<-&UpJeH z%aY~xC8I{p?R>qPi^smcGoPj$y+%xis^{&dfbM)nNX?)Aq>ElOS5)J={m?My7O^#X zogF95oAGg`1?=)Q4ZZLen)+U~hP_g=(fh$=KgY({rQx?1RJ1HP;r`}48w?ETlcU(4)h6eRE0w9mfIv9F8S zs88(Kq|m)ehia5~t;;P!Ta|CrFPx{jQqIEHE1akH!uGjjW8N$E7^}h@ymWS5sYiG5 zTBYjv@ArOEz@M(lCk>gGtfH&BC-0kMsi*Fq9}-;?Ogq7W`V|c-t#6=CdE|M#t{@Ww zOq>AMgt+I(pF_lA>$hfB8cOhT77CHA-oxKx&SMj78fX)d zt+q5c+1d14Keu;iG-~Q@w@sakxmE}JT(j9;rc*jIIeYrQQ~Z&z;H*<< z{FDcN^UgyzksdNK7W&|R5>|JT;LBmR@!mC9yA1a=9ju?oIHFI zj_cH9QDoM2tRwPsY%%_#L)eVE5V@3>yGN&|!}qU;A7MY_-#7erl7(tZ*CNxs>~{Lw zZ+{0J`M94$9>p;QJq5kOy!%;ZT&mI1pXinbf-p47m?vs_>=3=_>^$bpx{yx)h`=jkqW;Oug#nyobZ>?V zhvqENJd7WYgz?R-YX*Fn$ZJPk`K7^i-g{0D3RGMV%y=O}99D$#ocRW`eFdL=hFI|v zgJ~s((ijYU6U@>~D+)MQ7UsrDQ)+V%*Ws9x+cPMujH# zah$&E`|>^bzjw=`uXTqMaq-7&8AWIPfmOR_5;HO**x4Tx9(!-|*AA&pd7q0!fm?o- zkO)nGoVdP-olf$D%=mEZ%%7e6A0N2hsZ<7+GyA1M?vs!0(69x8PTrglJ%*or)nx11 zVtq8~C8z@O$h0}Et}o=0#gm$p=410%o$5oMd>u5adZ9UT%xVxJ$#NjyAW5|sHH^Qv zcY4p#%DQfCS{Pi^w?0^npR#@gO8RpU#KVh8rsS~O>2ey^}X~7RRPY4;llB?gl=s++6%WE zzg{h%!#rKaF5kWKInKh$3u|-opa(N@)z|3ufMNuRdEQE`fgv+Ty?rj1dF^;5_z?D? z;SMU_OBxuHh~@Gu!7Fq9u~( z#id-M^RdxFYm{ysRrwP?Txtz5TX%)DY^}?DV31_R2%QA|f&3JmPu-KPT-84JrvGUH z7Iuz5Y~P5j+5P2n?<_$Jz3h<~_fw1VveHr-rinV!+F*MLJ0AhAEkEYht44=D9kyEe z23PoN)*9UhB_Nt23l0>l;>GiAZJ34L45&=pV)9xNv>QBC3>GYxzSPzhYRNlf@Lt3= zE{nKm?D}TgD>mJNK}I?{p=Tuk@xw=$bn~t&&jl`7fe=L4%;K~yrqX%7ctD8m`bsT4 z*2b=p%3ee$13f(ZwW|-_opmLPrn|>eXwk%w5=^x?T;p0+!6*_GhwMvrkfn2b{yBXk zQO}M=_h`%6IM@}qI)G@C;au+Yy61cx7x&1>$i~XCMuBs=zM{hLYi&&KOVd^rn(Vt{ zOi{D7u{nr|cP2^aeNx>STqiG&)K#neirkd9eQAvH;(NqTY;&wLMds!))}Ck#{KoZv z@~o-WTutSc_QKoy#@KP8Sx1pTbXjA?B@9On)-xv`yA$5VN>-#tSb^>>Eq*@ELC{@q z%V){ncZJlk1V(*e0|y8vqSZ|+ z0p=JJY%Z0*%+EA<_&G_g!T2Y}IyK8==gwQdvv3Z`k_$$+8Ri%F#g2Stc1YjpRWXaX zb7pDDQ^qLW(`;t6wbiZl)ne8v%F!Mwuc`_@QO9|y9``AxO{dK6D={r0PFi4B%bM!~ z0~_Tcws?rjvoUb&EE;p*0y(XGQt_^9n)>!Rl=Av4zu(Zt9<$NjokiE+U$uTGriO_s zwzhfT5&G6fAw;F4pN_6?FlL<`sCH~Uf%Y5T43*@!kYqZmv+#nSeKnut)wMQSW{okM zY78oNo>y)U>t<7kYy-?^etft`Yx}eY?7O$B9$FNl?O{s$C&vUyxY5&gSlIAemHYZb z^=5lkSfi7wsa?B@5vR^E3qmR$fxMV%&n>G;*X6h=hKE7z zkopNGcEcGkgCFGdtBtJ5H?_6OviCBi2P`pFsFxXVJ=a}gYHnMN6f(_B<^P~zw1|&EpW5z@K+`-UtFYron567m~;K&OKoR{f|&c|mrAys^7Es5Cq&24 zXviS^Qbn#GF)eMcc0;b%=u4Bp1kkX^Ui8w z{5u~Njub?SCtmZtdIPhi&ibH0snD^ zQ8{#$%>jBnB07#C;$J)sVD?!u$fr$=|s&9&QI zeBX|p`L%POlj3#zcd3tbPF2!O>c(U7@|3nh7<=#B?;)B?rKVcdj9;zO0a6(E1ng;u z?UJK0`ptv;?k05DBEEYjHtbXd*zN&?-&MYvFEp!rn{l3I@-PWDc3{v*~;9@3($`{nonc-n~|>v(MS~e)s!6@AEvL&*$0uZFvfr zF58Rr4?8B((KOFYUP%n&53cppaZYcsPp$Zj4IfOb44|;5bI!ht z|33Rl6UC;-Zz%XI^xcV>oY>SVt-QPWDrY6NoBJuS=Q_E>7Vh7C_H*=5WNMK*DnSq; zPWQk74@gH5RfI05ookgo0q2o$<-NNWc$3f>b-&v0{9F5Buro^^C=K(bm&ryG`{~m* zp#xvA5O-~vpAH0om||e>;85`(N(_)Jk~Bbn6~Tfq3Hjmi7tI9VaksdgodBagOwRK$ z-;vEU@WN*Oc?K36J0*5K2;vWTP~Q^Er-$rkt=#LI1v-;|zIr(#$EuVWIx+?E z-NHXiz`*lYzqZF;#EJE{tQ8nn+%=dzfpVz@^r#K#?(Jv=!P~bD?2f*wtg6baz2jJq zKYS!SLq`^i!Gs+mM6ZWxyEYvkev$L%1aIt@;fkEk@sPY7dISiO0}Lrw2AtRpO~5vO%(fbGI5KbuNRY{5Vt#sK7Hk~Qa@G97L>G|rI1u^HXKNbibqSD;%X^Bt? zfZ(iFX}J(2HvvRZd+)Ar>k|5W-LCXB;Em~Zed2bOJ?IrnZ&9roribuYlHY!?izIlMh_Vl`dqGt&P}Pb#%Hwc5ERFP6TgBnC-v@R z1Ai0{F`b4IKp%Q^WJBUG_i?KUvWKf~7I#;nNQJG;b=#)V3|J~N! z%CuJV(Oi2#U`K^gR=0Y-_U}0uzyENQ3eCsqQ$l)}>!LhE{dP(H>2kIPS$2co z6yCh1p>!T@M7gwx;Uqxv%1tpD!5olr$|A{yx%Y zKjG#e06}jZo|w4_oiM(!LUfz#p!c3F#gEsl4XgaE9P+$A(X1!?g4Ik&_vemTpnJin zYu+nuOMd>(CGd{CYiWK<$`$^btA8bl5G@BzX-$k?+%@RHqhaPuR#t*Xj|QpVi3V2p zA-RF{)50_Yo*dEY_Xg|<2cm9X*_6wO$}ton*nd&Ty0nmX ze`E9dsk9#EbcZCqDSQF@7E45m3gBQ--0!0Ax+XWO9*TFMeqvNC{D(H*$bZ$pkYMp7 zU#Py5FzSMLinYN!*QtjUP)CB-Ja5wLox3NVkAcjpb7v_J@~bSn6S1!RJ)*O?(dA#K z3!3?ETR2li3m4XL%{!^}c(m&$1jzFbs)npp@K=w7dL8f+hu-qe2LlC3G&3hh8A>Mv z;F*P_YIxa>+xEuFVpMO0*EOdSn8er*BU!8pMU!L#7|;fd@*eRtLJxEMW{qIRVp_55G?%h0T#f%n$PgLL)O=_y}#+< zF^8BteQkZY4-NAFU@*=cri=Bv&Hzpb+34^{os9RRHSgwMnKCT3Jv zfe12B4##(mP34Ne^9>k}5obFZPf-|Ha;SD8Oxb*FTpUAxUbyzMX@wgnhod}_13^)5 z*Wh1xVeZAxpFbB_G?O(f>ryv)H05FmusBgry~6uvt}_e;iIm6WUf8MR>TXPkl*VFo zq^(Q43xr$k2^WkQ9rLY>xqDBu0sSTIQ@uYQ#)+GiuZz0L2MtRt=7_UGDQ0N3Q@hzD zZ0GOhnIyYx>zm+1#MB(9EuM{ESL?Zz(}!_gE#x-7J!tD*zEX)**XOkJsz%=>t3NXx zU)cY3o1W>`jUwXKtuM0C**o?l;Z3{ZM3JSRF>6Bf+ziq7rWDbhBmM}n$qr>^>O8+p z0HnYhIIU|)#EV$4u&jaw6jVUaXhoJOgjY4S2Ksoe4&aAkCZ%x=Jmv0RvR$ zRq5nZ#6I7uq*DXE6WALfV*8eiP48}rd0CA|KE(ESgRN}al3Bbgh#uf}GJbrgbUI~2uNpZ*k@P9&zX zFO?=YSkwiQ&%LGt@ujC%ZoMs*Z)vV-zRh>O=6pfjPUVEdBn)Vz%&Pt^BL)OfLzSZy zQuo8v{YW>`6`WgmT#L_wKC%_a24C37(D+_LxKP+mt_*m}jK%sx~XoXUh!}->} z71xc;rZ?3ikT(h86UsOQZBPEGad*ehlvh?-`_(`m}2HIlV|`S((RW@*}Xc{LZ@BdX2eQv8I>oN2;rzm;}O< z45@8&KVEm%UdYfq$beZK7fJ83@nSL|;2Cvz9C6)%=1&SAeDLvMQh`2jc-F_2aaj~p z*0VlSzYrkvrmW?bCkx4gpvA44;gr;8gDf%|GAV5#B4Ax8wn6A_1QqX0nC&RS14LF6 zZLx?nk|^PvmS&~q~1y~LBL*h}7v+PYSx6g@C+t^IxoY1U_ftbT)Q_InHm^Enx#ztz{@D_T+n;;o z#@OfK>Z$Va?Xf+jv3+d|zX}yXs&D17kwW95u4LUxp{mIO(pfGF35G#;9) z3JXDBjfT{i$C!#Dr{ij4qG72x)yXikOSeSPsl5@aWqCNdPAjye>+8PG-&#idgEp>);9QZ$k;uH2~`!KuM;#ucg|CN|9x!;JViz_RuO2DT# z)ZNa(?xqg=e$&4_zqYByD*5id`Qc0d8uLmJ7Neso6Ih6~;TP0u$X9R(Vv+P}S&$^B zdzpKl1*bDgd;AGM-aLHr_QT0JY|JIhpw7_b2I-McR|Lu3v6Qa9mx~k)%*r4x&VIQE z60NU2PV9 z@WD0j@zD@|ygoGrav{(YVv0yvmC6IM84N?@&Kl@cX_7qnxH#22^FcKXJIKs%yzR>u zf;nI8@lT)^WbuyF4yP?@h;CHBo^luqURi2sI6YCKiGzFbE40-8UcfwrYXu5BZj6Th zL}zEUo49j*@qV)TGu(MTtv_MRNT;fsYQ||`P%?waYXo(en=D!I{p-Yg~T#neG4yll_VCiD85w zD7pBTjOnsyMh3QpkZW8zDA}{?@n2`YdVLqy0u(bniw#GD20m_Ola#W|JRihFS^?9W zK9^<9DpXa-ANEP)rM?dm?3b#X)>USe4q$(~S^_^YNe9#yKG4qWUY<#Ip0IkCOx&YN zbH^}yYNQM?VY4^a(MNU!p2FGNg0`+UI#CoK*Y}q-Yl_q|DX!N}{5CYi0krB^Z6}!Q zgGV8j+~2rsYGm97<|RtQBYuy}dZ<`UP!3)2NjCC$+BJ2iZp7JM-pHhwoo|^O0SuCn zsyZ7wKxn~)8KaIW%)Q1zti8_5o%)HGD!p?pNMY?p?Y=YS60X&-jlb`i`VyF*cHJ+) zzkDLDaEa9#KgCu@2AF{t+S{VkVlt;^pRq5+ww#%&n~p2+8x`q*MJ;K9AMV*#6Dv5M zi4KfSBHgFbg~qcLf7+$Ls&6;^T7KIlEYd=olofvcNRE7h0{VR5N zHYavA=ev?!od=2<7rfN`AH94jX|okrHpbjA_H{~Solt}N8b*%_I`_^YMk^mumc6az zu%XaFRMa7~qgy}zu*S)EUtmEt*b=<7e?z@}Or^Lt=*P|ZI{T{@qfkf!fI@xiCA`%o z_6zdt9SrGD3LC8X{2^F_`<(x6A`yW8;(A*m-M?S2-Xcd%CV#^>dDPY4|6t62X4OIu zG7^gN7sSrhvWBrp|5~>ktii`m|Nai;W-Y7*Gx?tHS_y-k2}o{0tR?)fvm)y&lUwP` z-dx-yy&JImrsMJx3nDvH@kF zqWKC6ajp9L2Cw~m6SM5lkK@PO`&iPlL$x}N@15U;0XaPibyx|%!dQvL%~S@|g_aoJ z>u%xSJ0oiRG}3#JMNd}_pM#gm0`QCzlD_)!(w=Hy0-7r<4|win`fj8U#}inp6?VDF z)M&b51utB^L%+v%|GyaSy~9oYmSnxR3bMDZD@24NDIc)?d4(rX+_q-?iB?{IK*NLU zrXONKEj`(TU{$>AK=7XVO>+3xhOU739y3Zt*@(zb9A zOwLa{<18MBf0huARbh2$rGA|(I2ty#E4K@Y=5UDC@p)bl_3=b%ifEXuKivwknr9a_ zNl&iHLu7ERB0$Ybne8MSIUUvRhadoyNVIBq{LT`ot%rBn1#{+1%IbUCa-YKP8vwX^0kb#obO0@CLM7YXXacb@@|ceWIjhKVc# z*Lz9`!ZaNoR6U0rlEh6E2CewNgmY57K94LMo&QWCa+-^d{I8X!puy&KFtDLyIgn#pM%>ZX2{_qOMXLD_G0b{hk(v zt9AG*X0PF`(?mjG)GauMqjKsKbp%C|X(eBn{)9j}?+>6By(`V|D~dGk_vICmMAf9< zcFYT_^~{9jqs8`G`#v&^Kr*)K)znazK2lCEQEj4A_2S2g2+E7S;op0}cL86OZ}pDP z4fkRl!ooy-ql#kT5g`<6Q9*~0#H)O!`aUi}o}gGLN3aF4nbJM9ir=`;Fmy1sqUa<# z_EIG;yZvDo4p095zIkGf`>_7M>X;xe=vk9+(pSeANj5Uj`k??>ZQD#uF}Sv~Bu) z6Td2Q)$c~UHqwiKj7i=1JgP@Mo+&_FxU}46pcOl&A=qM=>;fx28mdu`L%dJ%Ub)vX zV+;mp4BX6{!dlBbF_+Y(Bp70}uh`ex*yel>Ui5{8{uifk7X;3Q+jaKwOt{kH#JgAY zHl0KRmj4taf@?s%YPr0wKHr)4r(@-o^=lW3-!v4sW)4y^7Gar@ufx~-1h`&8=?F}< zQ(fK=X%Rn626RA-(Ju-_`1tyw2iy zyZ2zCM97t$!9@vqIe3LF3Ply^oVHV%0*ud;f+h8+(}rhI&)AvZ8^zzPujMSe@uy z$sI1%A4qf!d$P2=%WIt}sAhdUOx?f1aC&Y|IL~SjKg0(KPRy_#csZ!oi_@tSh*trX z;?soN+mfbfS`}-0mffu;wT3YWmXP<*)&+i8*n&*%C*MU{MAh(LgUp?c{Cyr}{=2-F z;5y?RD2FJRU(OROb~bas0%m5C9$Tnd-FiWgOg(W9=+1k<)Nb zMGRSha2QysWYUhEn&(;?_UJ|{TX!IpCH3C`nO(oPl`I^+oO&ulLkSQqmw%0n>+UJQ z_w-ldwPm$qS{+bq1?XRurUkM&c7|`B=WjBYpodt^0{-PERoFP z82A3X77jAUDZx}y(=q<|uD?Tn^Th=>|U>3_|SddZy7Xbh#!aBb;whzWR78ZM- zLQ%;An}#+qJ2%aMo5TGEYy>0TzpMg0fI{+bfYL7T!oqN_*3}fnwiq)en&ZJ@u;g`y>C9JF6Lw}l5X`UKQx2~UzvH* zk6_Nb*AqcuVjj;DhQ=rsNBo&C>VGfJ?xXsIz_kipmw@grGSrOiNU8?2x#{d2nQ^zUifB3L z;K(HmWC?^PQ;@jlN|&MdU=oZ~$)4F-y4SaJc6EHq|HotBAv=6y#PGsk3zXWa>eNQB zWyI`WXw3uIoS=2NJg^|F&1-sihJFDnEP_!}tJI6l77ASP=?vLv|Yr4W|tK`j^`ik0D^LyK#A(MH z>)O{R7EIIe;40gBe2q6=zzC0pB<8n{T)ApUmwjxxr;`%~o$BT+JzMz=ie5Nm&Ac^7 zGh!yCW7ahO3=Rs!x38vXYYRY0fWy`b6wE){)?`juxnRT+G*U8qRhBw$?|5M^vFFljnV{|lT#&j%^|7(EIazPx{yXQ{qm;S6(@-pO zTXftfm%h+Ute0BZ>tv1r!9i#-kG;k$Qbg&W?^NKy&@v7=DE$fRH+;(3&s=8-w)TPp z@9YeDW8cqY>lmKVF3#<%?h#W{;mXTz|6Jxk2=YpTxWWzgX9&8C5Z8I*N@i6e(hCoRsq}z3iHab4$lBrkS z*Rxaa&%Lue6;f-j==|pMnApu3>MHxUE>a(zo@Uw2wvt`#5p8$achcn7_$Jx2bb}4@ z88fkj#JNE^`ydLYBG#r%Ey7gW9rAvdM<2~Kqy~q${7wx#O$pI%ifMPjYRt_({i!Vc z+@ssiCd`l%P*V5%Rp+)fYi>(o+CsTq!$~%8K-cz3y62nFww^H7&bO5}Uxsd-n{fry zbcG^1yLa_-uFKV&BOh19@o6%gO+g-aQdWXEnlUlo`kFo7O=&@}$D}R-K$q_+;hOl1 z9xe4qzxijwh4YUSy~C(+m&rb&zngIvrvx^v6>6<>E&E8!^brlL9rj^r5A-jO@4|tB z@;fy^rs)p{7j)TA#?YTy9eYIz)?#nR{+3D1M2R{M0g#1h-tDRZJ^I2Z8?;cv}49CN!I zl613}FhWfUMi(NgU>1%9Pi68q8Q1W$*O8A&{bOL_-hI2EX|H2Yn{W}3Q-tYW{g&uc2Ojtn9T#L8vo8&w zf-V`7W!G?*%$`wEK~$~Sy(Rm1aOKy6=tBF^UvVubtnz#$`W@J>{b}dvXnmh$mwz{} z^1_+ubna$iXmOGY1c!K2nQ z7hg5|a8`UJR9VMl;Y`B;$D3y;owT3`E9H|cjbiDOTh^(=I}64u z?hbo&R*=4Jqw!-z@!F{D6BCOYf)cU@3v_CSWe(ANa+4t%DRKW z**U4im{N}loI8emYN+ITNztSLO46WQSkI&wOiZ^yqMq0opxY!jsvnEVu7|1${7Saw zF?6g&XH4M?EI)(}X=qNOmF;&qGWk~4?=ohYNY3b(hBlf1f|e0hS928)_uDP5#9n0Y z-DmZlY7`n-f;RH|TkYqC6bSQX&%;b2o9W{Ik{&?>*q4#4bfQPvhAY+yI~7pLy-*HO zOBJM{fCxB1AP#e&MTVSWu#j}jbn=Zx#W9@9%3aQ}}=WMhF8 z4#D=*TD+?8OvopbuHFf^r+A0F$66S^Sy&<%(cGZQame zE47Y#P5b@uPp5dl&+4>soW5e2>jx>-5@9~=J#{ejJ-KJ^Mgl+)q{_Hgzqh{XhQDUu#6X}U*?rkY~uCQ>%+c;JY?FR3>xgI?$AMAlQ8Fq8*=nQDtniO zsDApvx|RuZm(a}aRa1(k7ysQP(t{+RD`*Z5k*V~ZiBtiKNncm`x}1sF%jZ*&;RZJY zPSciIEYG*E0*|HT)$_dw!ek)6NCTJ754Ly{u7me}V%y>?m&IS2e}P91~0 zLkO{d%n~A(aOVBJ5a&DerUS&D)?@1~*D^li5Q?HrY693AN78n|WN1xTvqu!7K2?E!T>kB0zA z&Q;c~BUDle->fClM{ty;iHXHg9%#IZrziez86>G~AlrQZb{l9TB$M}ZXz*!YfJm*H z;}-90Wci@L7^={{yy%WUu>{)LZWxWztSrFYc=+)Zr175zC6Bw-5*hoGn(z>dtWJ|D zfim;AtzE6}7u-H4`O$^5r~lnbkRzm<_4`7MT`7M)z-<^;?WZ0%c45~ig8&(hbM=PH zW`mR_@mab0=2u9$faZ!bmuRZ-0k{R>IHh=qJFUVx$2Gh@o_v*0|o~`m}d8bn|oZ&%)rAFXbyM3-{sr= z{RmrCVMQxpLxR9RV5;nNB0)WK41ASAH#ZA?7h$lABcIv?(uJoqcy+xEp#{w7<+Vw5YQdB3ysXd9c$h;;9-AJ>XGXdc>@Hea~WR*rst%1)kr=wzuPE(xI zed6ZKD2Dq@ncj6ipl;;86B40l)9Q>(M&y#`q4O**3^w#N7v`clh)Y>+>EJd#iEQ{y z&s_Yy-sr#U*l$z2iWEtlg$7@Z_F8P+9N#{@`!~55o;;I)VNOv)dTAoe+h;< z?+v^vA~S1Prfp?=+Nk?X`kWWJU4GPKFZJRkk4dW-_ICd}R=^x6a_%t*K&Y#Wemo)`hNPIGQcAXA{or+Y}F73J2~1F82a)AzGDG3Wc`28FuugV}nm*|IAbc5Ra?a+1c0KO>!fQ!pR$t+|fV z{u>wM7t{|IM1cHn``@(}lenKq9B;_9!4~XXk#+AH+5S8w%QKR*rQ-c#Io(ndE*ZqW zFpJ;O^1%i!d|;gS_qwi-#_V7F$1E|nUcT|)?VERt;BB6^eBG^HZYCAjUW(xN6Kcss z+N<~@-)!5oc6)F)PGWfT3n#mZ;<$nJTfu*(r9o${c;%@7-}BbUOynkU-kyq z`#-xDIZ0G@$@H4=G34Z%($;IA!PK95EwB3DE z%_Ap;`1W^^|9`NR-2E?Cf!z>}ekd>-#r1065w#Fd>1=Aog^jb&fO z!Z~h*_U5TGv1n+fjKJahz$ew~JdFS#iX05-cqv9zYo6%#Hu7u;xsvQ*gaG^`{ zmD|mvfhk*c0o$90jU})~l@?M8`Fu-VJ#z|3UA2Pouy9OWu2>IuX4F&poR>evf?cTtepA7{{aciVv7I( From 3154444f62621f6f732c8956650908539b0a2e79 Mon Sep 17 00:00:00 2001 From: TerryLanfear Date: Fri, 3 Feb 2017 13:41:33 -0800 Subject: [PATCH 83/90] fix per editor --- ...ity-center-remediate-os-vulnerabilities.md | 24 +++++++++---------- 1 file changed, 12 insertions(+), 12 deletions(-) diff --git a/articles/security-center/security-center-remediate-os-vulnerabilities.md b/articles/security-center/security-center-remediate-os-vulnerabilities.md index b071e31d3f76e..84208d10eec38 100644 --- a/articles/security-center/security-center-remediate-os-vulnerabilities.md +++ b/articles/security-center/security-center-remediate-os-vulnerabilities.md @@ -40,24 +40,24 @@ Azure Security Center analyzes daily your virtual machine (VM) operating system * Resolved: The vulnerability was already addressed (when the issue has been resolved, the entry is grayed out) * **SEVERITY** -- All vulnerabilities are set to a severity of Low, meaning a vulnerability should be addressed but does not require immediate attention. -Select a VM. A blade for that VM opens and displays the rules that have failed. +2. Select a VM. A blade for that VM opens and displays the rules that have failed. ![Configuration rules that have failed][2] -Select a rule. In this example, lets select **Password must meet complexity requirements**. A blade opens describing the failed rule and the impact. Review the details and consider how operating system configurations will be applied. +3. Select a rule. In this example, lets select **Password must meet complexity requirements**. A blade opens describing the failed rule and the impact. Review the details and consider how operating system configurations will be applied. ![Description for the failed rule][3] Security Center uses Common Configuration Enumeration (CCE) to assign unique identifiers for configuration rules. The following information is provided on this blade: -* NAME -- Name of rule -* SEVERITY -- CCE severity value of critical, important, or warning -* CCIED -- CCE unique identifier for the rule -* DESCRIPTION -- Description of rule -* VULNERABILITY -- Explanation of vulnerability or risk if rule is not applied -* IMPACT -- Business impact when rule is applied -* EXPECTED VALUE -- Value expected when Security Center analyzes your VM OS configuration against the rule -* RULE OPERATION -- Rule operation used by Security Center during analysis of your VM OS configuration against the rule -* ACTUAL VALUE -- Value returned after analysis of your VM OS configuration against the rule -* EVALUATION RESULT –- Result of analysis: Pass, Fail + - NAME -- Name of rule + - SEVERITY -- CCE severity value of critical, important, or warning + - CCIED -- CCE unique identifier for the rule + - DESCRIPTION -- Description of rule + - VULNERABILITY -- Explanation of vulnerability or risk if rule is not applied + - IMPACT -- Business impact when rule is applied + - EXPECTED VALUE -- Value expected when Security Center analyzes your VM OS configuration against the rule + - RULE OPERATION -- Rule operation used by Security Center during analysis of your VM OS configuration against the rule + - ACTUAL VALUE -- Value returned after analysis of your VM OS configuration against the rule + - EVALUATION RESULT –- Result of analysis: Pass, Fail ## See also This article showed you how to implement the Security Center recommendation "Remediate OS vulnerabilities." You can review the set of configuration rules [here](https://gallery.technet.microsoft.com/Azure-Security-Center-a789e335). Security Center uses CCE (Common Configuration Enumeration) to assign unique identifiers for configuration rules. Visit the [CCE](http://cce.mitre.org) site for more information. From fdb15c3af4980e284e1a9effe434b1cab959d24c Mon Sep 17 00:00:00 2001 From: Todd Abel Date: Fri, 3 Feb 2017 13:50:33 -0800 Subject: [PATCH 84/90] fixed issues --- .../service-fabric-diagnostics-overview.md | 69 ++++++++++--------- 1 file changed, 35 insertions(+), 34 deletions(-) diff --git a/articles/service-fabric/service-fabric-diagnostics-overview.md b/articles/service-fabric/service-fabric-diagnostics-overview.md index 1c3242d25b1be..fe35d39de64f7 100644 --- a/articles/service-fabric/service-fabric-diagnostics-overview.md +++ b/articles/service-fabric/service-fabric-diagnostics-overview.md @@ -19,48 +19,48 @@ ms.author: toddabel --- # Monitor and diagnose Azure Service Fabric applications -Monitoring, detecting, diagnosing, and troubleshooting allow for services to continue with minimal disruption to the user experience, providing business insights, monitoring resource usage, detecting hardware and software failures or performance issues and diagnosing potential service behavior issues. While monitoring and diagnostics are critical in an actual deployed production environment, the efficacy will depend on adopting a similar model during development of services to ensure they work when you move to a real-world setup. Service Fabric makes it easy for service developers to implement diagnostics that can seamlessly work across both single-machine local development setups and real-world production cluster setups. +Monitoring, detecting, diagnosing, and troubleshooting allow for services to continue with minimal disruption to the user experience, providing business insights, monitoring resource usage, detecting hardware and software failures or performance issues and diagnosing potential service behavior issues. While monitoring and diagnostics are critical in an actual deployed production environment, the efficacy depends on adopting a similar model during development of services to ensure they work when you move to a real-world setup. Service Fabric makes it easy for service developers to implement diagnostics that can seamlessly work across both single-machine local development setups and real-world production cluster setups. Monitoring is a broad term that encompasses instrumenting the code, collecting the instrumentation logs, analyzing the logs, visualizing insights based on the log data, alerting based on log values and insights, monitoring the infrastructure and allowing engineers to detect and diagnose issues that affect their customers. This article is intended to provide an overview of monitoring for Service Fabric clusters hosted in Azure or on premises, deployed on Windows or Linux using .NET. Let's start by dividing the problem into three parts - Instrument code or infrastructure - Collection of generated events -- Storage, aggregation, visualization and Analysis +- Storage, aggregation, visualization, and Analysis -While there are some products that cover all three aspects, many customers choose different technologies for each area. It is important that each plugs together to deliver an end to end monitoring solution for the application. +While there are some products that cover all three aspects, many customers choose different technologies for each area. It is important that each plug together to deliver an end to end monitoring solution for the application. ## Monitoring infrastructure -While Service Fabric helps to keep an application running even during infrastructure failures, the application operators need to understand if an error is occurring within their application or is due to a fault in the underlying infrastructure. Monitoring of the infrastructure is also needed for capacity planning to know when to add or remove infrastructure. Both the infrastructure and the application that compose a Service Fabric deployment are important to monitor and troubleshoot, though as long as the application is available to customers, some of the infrastructure could be having issues. +While Service Fabric helps to keep an application running during infrastructure failures, the application operators need to understand if an error is occurring within the application or the underlying infrastructure. Monitoring of the infrastructure is also needed for capacity planning to know when to add or remove infrastructure. Both the infrastructure and the application that compose a Service Fabric deployment are important to monitor and troubleshoot. As long as the application is available to customers, some of the infrastructure could be having issues. ### Azure Monitoring -For Azure deployed clusters, [Azure Monitoring](../monitoring-and-diagnostics/toc.md) gives the ability to monitor many of the Azure resources on which a Service Fabric cluster are built. A set of metrics is automatically collected and displayed in the Azure portal for the [Virtual Machine Scale Set (VMSS)](../monitoring-and-diagnostics/monitoring-supported-metrics.md#microsoftcomputevirtualmachinescalesets) and individual [VMs](../monitoring-and-diagnostics/monitoring-supported-metrics.md#microsoftcomputevirtualmachinescalesetsvirtualmachines). This information can be viewed in the Azure portal by selecting the resource group that the Service Fabric cluster is contained within and choosing the VMSS to view. Then choose Metrics within the Monitoring navigation section to view a graph of the values +For Azure deployed clusters, [Azure Monitoring](../monitoring-and-diagnostics/toc.md) gives the ability to monitor many of the Azure resources on which a Service Fabric cluster is built. A set of metrics is automatically collected and displayed in the Azure portal for the [Virtual Machine Scale Set (VMSS)](../monitoring-and-diagnostics/monitoring-supported-metrics.md#microsoftcomputevirtualmachinescalesets) and individual [VMs](../monitoring-and-diagnostics/monitoring-supported-metrics.md#microsoftcomputevirtualmachinescalesetsvirtualmachines). This information can be viewed in the Azure portal by selecting the resource group that the Service Fabric cluster is contained within and choosing the VMSS to view. Then choose Metrics within the Monitoring navigation section to view a graph of the values ![Azure portal view of collected metric information](./media/service-fabric-diagnostics-overview/azure-monitoring-metrics.png) The charts can be customized by following the instructions in the article [Overview of Metrics in Microsoft Azure](../monitoring-and-diagnostics/insights-how-to-customize-monitoring.md). Alerts can also be created based on these metrics as described in the article [Use Azure portal to create alerts for Azure services](../monitoring-and-diagnostics/insights-alerts-portal.md). Alerts can be sent to a notification service using web hooks as described in the article [Configure a web hook on an Azure metric alert(../monitoring-and-diagnostics/insights-webhooks-alerts.md). Azure Monitoring supports a single subscription. If support for multiple subscriptions is needed or additional features are needed, [Log Analytics](https://azure.microsoft.com/documentation/services/log-analytics/) part of [Operations Management Suite](https://www.microsoft.com/cloud-platform/operations-management-suite) provides a holistic IT management solution for both on-premises and cloud-based infrastructure. Data from Azure Monitoring can be routed directly to Log Analytics so you can see metrics and logs for your entire environment in a single place. -[Operations Management Suite](https://www.microsoft.com/cloud-platform/operations-management-suite) is the recommended method for monitoring your on premise infrastructure, but any existing solution that your company uses for infrastructure monitoring can also be used. +[Operations Management Suite](https://www.microsoft.com/cloud-platform/operations-management-suite) is the recommended method for monitoring your on-premise infrastructure, but any existing solution that your company uses for infrastructure monitoring can also be used. ### Service Fabric Support Logs -If you should need to contact Microsoft support for help with your Azure Service Fabric Cluster, support logs are almost always required. If your cluster is hosted within Azure, these logs are automatically configured and collected as part of creating a cluster. The logs are stored in a dedicated storage account that can be seen in your cluster's resource group. There is no fixed name to the storage account, but within the account you'll see blob containers and tables starting with 'fabric'. If your cluster is a standalone cluster, you should configure collection of these logs following the guidance in [Create and manage a standalone Azure Service Fabric cluster](service-fabric-cluster-creation-for-windows-server.md) and [Configuration settings for standalone Windows cluster](service-fabric-cluster-manifest.md). For standalone Service Fabric, the logs should be sent to a local file share. You are **required** to have these logs for support, but they are not intended to use usable by anyone outside of the Microsoft customer support team. Using my best Obi Wan Kenobi impression, these are not the logs you are interested in... +If you should need to contact Microsoft support for help with your Azure Service Fabric Cluster, support logs are almost always required. If your cluster is hosted within Azure, these logs are automatically configured and collected as part of creating a cluster. The logs are stored in a dedicated storage account that can be seen in your cluster's resource group. There is no fixed name to the storage account, but within the account you see blob containers and tables starting with 'fabric'. If your cluster is a standalone cluster, you should configure collection of these logs following the guidance in [Create and manage a standalone Azure Service Fabric cluster](service-fabric-cluster-creation-for-windows-server.md) and [Configuration settings for standalone Windows cluster](service-fabric-cluster-manifest.md). For standalone Service Fabric, the logs should be sent to a local file share. You are **required** to have these logs for support, but they are not intended to use usable by anyone outside of the Microsoft customer support team. Using my best Obi Wan Kenobi impression, these are not the logs you are interested in... ## Instrument your code -Instrumenting the code is the basis for most other aspects of monitoring your services. It is often surprising to people how much instrumentation you will need, but considering that this instrumentation is the only way you have of knowing something is wrong and to diagnose what needs to be fixed, it shouldn't be. While it is technically possible to do, it is very unusual to connect a debugger to a production service, so having detailed instrumentation data is extremely important. When producing this volume of information shipping all events off the local node can be very expensive. Many services use a two-part strategy for dealing with the volume of instrumentation data: +Instrumenting the code is the basis for most other aspects of monitoring your services. It is often surprising to people how much instrumentation is needed, but considering that this instrumentation is the only way you have of knowing something is wrong and to diagnose what needs to be fixed, it shouldn't be. While it is technically possible to do, it is unusual to connect a debugger to a production service, so having detailed instrumentation data is important. When producing this volume of information shipping all events off the local node can be expensive. Many services use a two-part strategy for dealing with the volume of instrumentation data: * All events are kept in local rolling log file for a short interval of days and only collected when needed for debugging. Typically the events needed for detailed diagnosis are left on the node to reduce costs and resource utilization * Any events indicating service health such as error events, heart beat events or performance events are sent to a central repository where they can be used to raise alerts of an unhealthy service. -There are solution that will automatically instrument your code. While these products can work well, manual instrumentation is almost always needed. In the end, you must have enough information to forensically debug the application. The next sections describe different approaches for instrumenting your code and when you should choose one over another. +There are solutions that automatically instrument your code. While these products can work well, manual instrumentation is almost always needed. In the end, you must have enough information to forensically debug the application. The next sections describe different approaches for instrumenting your code and when you should choose one over another. ### EventSource -When you create an Azure Service Fabric solution from a template in Visual Studio, an EventSource derived class (*ServiceEventSource* or *ActorEventSource*) is generated. This provides a template to which you can add additional events appropriate for your application or service. The EventSource name **must** be unique and should be renamed from the starting string of 'MyCompany-<solution>-<project>'. Having multiple EventSource definitions using the same name will cause an issue at runtime. Each defined event must have a unique identifier. If an identifer is not unique a runtime failure will occur. Often ranges of values are pre-assigned for identifiers to avoid conflicts between separate development teams. For additional information on EventSource take a look at [Vance's blog](https://blogs.msdn.microsoft.com/vancem/2012/07/09/introduction-tutorial-logging-etw-events-in-c-system-diagnostics-tracing-eventsource/) or the [MSDN documentation](https://msdn.microsoft.com/library/dn774985(v=pandp.20).aspx). +When you create an Azure Service Fabric solution from a template in Visual Studio, an EventSource derived class (*ServiceEventSource* or *ActorEventSource*) is generated. This provides a template to which you can add additional events appropriate for your application or service. The EventSource name **must** be unique and should be renamed from the starting string of 'MyCompany-<solution>-<project>'. Having multiple EventSource definitions using the same name causes an issue at runtime. Each defined event must have a unique identifier. If an identifer is not unique a runtime failure occurs. Often ranges of values are pre-assigned for identifiers to avoid conflicts between separate development teams. For additional information on EventSource take a look at [Vance's blog](https://blogs.msdn.microsoft.com/vancem/2012/07/09/introduction-tutorial-logging-etw-events-in-c-system-diagnostics-tracing-eventsource/) or the [MSDN documentation](https://msdn.microsoft.com/library/dn774985(v=pandp.20).aspx). #### Using structured EventSource events -Each of the events below is defined for a specific case, a service type was registered for example. Having messages defined in this way allows data to be packaged along with the text of the error. This allows for better searching and filtering based on the names or values of the properties specified. Structuring the instrumentation output makes it easier to consume, but requires more thought and time to define a new event for each use case. Some event definitions can be shared across the entire application, e.g. a method start or stop event would be reused across many services within an application. A domain-specific service, such as an order system, may have a CreateOrder event, which will have its own unique event. Often this approach generates lots of events and potentially requires coordination of identifiers across project teams. For an more complete example of structure EventSources in Service Fabric look at the PartyCluster.ApplicationDeployService within the Party Cluster sample. +Each of the following events is defined for a specific case, a service type was registered for example. Having messages defined in this way allows data to be packaged along with the text of the error. This allows for better searching and filtering based on the names or values of the properties specified. Structuring the instrumentation output makes it easier to consume, but requires more thought and time to define a new event for each use case. Some event definitions can be shared across the entire application, for example, a method start or stop event would be reused across many services within an application. A domain-specific service, such as an order system, may have a CreateOrder event, which will have its own unique event. Often this approach generates lots of events and potentially requires coordination of identifiers across project teams. For a complete example of structure EventSources in Service Fabric look at the PartyCluster.ApplicationDeployService within the Party Cluster sample. ```csharp [EventSource(Name = "MyCompany-VotingState-VotingStateService")] @@ -91,7 +91,7 @@ Each of the events below is defined for a specific case, a service type was regi ``` #### Using EventSource generically -Because defining specific events can be difficult, many people define a small number of events with a common set of parameters that generally output their information as a string. Much of the structured aspect is lost, making it more difficult to search and filter the results. With this approach, a small number of events usually corresponding to the logging levels are defined. The snippet below defines a debug and error message. +Because defining specific events can be difficult, many people define few of events with a common set of parameters that generally output their information as a string. Much of the structured aspect is lost, making it more difficult to search and filter the results. With this approach, a few events usually corresponding to the logging levels are defined. The following snippet defines a debug and error message. ```csharp [EventSource(Name = "MyCompany-VotingState-VotingStateService")] internal sealed class ServiceEventSource : EventSource @@ -117,11 +117,11 @@ Because defining specific events can be difficult, many people define a small nu WriteEvent(ErrorEventId, error, msg); } ``` -Using a hybrid approach of both structured and generic instrumentation can also work well. In the case structured instrumentation is used for reporting errors and metrics, while generic events can be use for the detailed logging that is consumed by engineers when troubleshooting. +Using a hybrid approach of both structured and generic instrumentation can also work well. In the case structured instrumentation is used for reporting errors and metrics, while generic events can be used for the detailed logging that is consumed by engineers when troubleshooting. ### ASP.NET Core logging -Choosing how to instrument your code can be difficult, if you chose poorly and have to re-instrument, you are revisiting and potentially destabilizing your code base. To reduce the risk, developers can choose an instrumentation library such as [Microsoft.Extensions.Logging](https://www.nuget.org/packages/Microsoft.Extensions.Logging/) provided by ASP.NET Core. This provides an [ILogger](https://docs.microsoft.com/aspnet/core/api/microsoft.extensions.logging.ilogger) interface that allows the provider of your choice to be used while minimizing the impact to existing code. Another nice aspect of this is that the code can be used not only in .NET Core on Windows and Linux, but in the full framework too, giving the ability to standardize your instrumentation code across .NET and .NET Core. +Choosing how to instrument your code can be difficult, if you chose poorly and have to reinstrument, you are revisiting and potentially destabilizing your code base. To reduce the risk, developers can choose an instrumentation library such as [Microsoft.Extensions.Logging](https://www.nuget.org/packages/Microsoft.Extensions.Logging/) provided by ASP.NET Core. This provides an [ILogger](https://docs.microsoft.com/aspnet/core/api/microsoft.extensions.logging.ilogger) interface that allows the provider of your choice to be used while minimizing the impact to existing code. Another nice aspect of this is that the code can be used not only in .NET Core on Windows and Linux, but in the full framework too, giving the ability to standardize your instrumentation code across .NET and .NET Core. #### How to use Microsoft.Extensions.Logging within Service Fabric @@ -140,14 +140,14 @@ Choosing how to instrument your code can be difficult, if you chose poorly and h _logger.LogDebug("Debug level event from Microsoft.Logging"); _logger.LogInformation("Informational level event from Microsoft.Logging"); - // In this variant, we're adding structured properties RequestName and Duration that will have values MyRequest and the duration of the request. + // In this variant, we're adding structured properties RequestName and Duration that has values MyRequest and the duration of the request. // More on why you'll want to do this later. _logger.LogInformation("{RequestName} {Duration}", "MyRequest", requestDuration); ``` #### Using other logging providers -There are some third-party providers that work with this approach, [SeriLog](https://serilog.net/), [NLog](http://nlog-project.org/) and [loggr](https://github.com/imobile3/Loggr.Extensions.Logging) are three examples. Each of these can be plugged into ASP.Net Core Logging and can also be used separately. SeriLog has a feature that allows enrichment of all messages sent from a logger, which can be useful to output the service name, type, and partition information. To leverage this capability with in the ASP.NET Core infrastructure, perform the following +There are some third-party providers that work with this approach, [SeriLog](https://serilog.net/), [NLog](http://nlog-project.org/) and [loggr](https://github.com/imobile3/Loggr.Extensions.Logging) are three examples. Each of these can be plugged into ASP.Net Core Logging and can also be used separately. SeriLog has a feature that allows enrichment of all messages sent from a logger, which can be useful to output the service name, type, and partition information. To use this capability with in the ASP.NET Core infrastructure, perform the following 1. Add **Serilog**, **Serilog.Extensions.Logging**, **Serilog.Sinks.Observable** NuGet packages to the project. Also add **SeriLog.Sinks.Literate** for this example, a better approach is shown later in this article 2. Create a LoggerConfiguration and the logger instance in SeriLog @@ -158,7 +158,7 @@ There are some third-party providers that work with this approach, [SeriLog](htt ```csharp ServiceRuntime.RegisterServiceAsync("StatelessType", context => new Stateless(context, Log.Logger)).GetAwaiter().GetResult(); ``` -4. In the service constructor, add the following which creates the property enrichers for the ServiceTypeName, ServiceName, PartitionId and InstanceId properties of the service. It also adds it to the ASP.NET Core logging factory so the Microsoft.Extensions.Logging.ILogger can be used in your code. +4. In the service constructor, add the following, which creates the property enrichers for the ServiceTypeName, ServiceName, PartitionId, and InstanceId properties of the service. It also adds it to the ASP.NET Core logging factory so the Microsoft.Extensions.Logging.ILogger can be used in your code. ```csharp public Stateless(StatelessServiceContext context, Serilog.ILogger serilog) : base(context) @@ -179,34 +179,34 @@ There are some third-party providers that work with this approach, [SeriLog](htt 5. Instrument the code the same as when using ASP.NET Core without SeriLog. > [!NOTE] -> It is not recommended that the static Log.Logger be used with this approach because Service Fabric can host multiple instances of the same service type within a single process. This would mean that the last writer of the property enrichers would have their values shown for all instances running. This is one reason why the _logger variable is a private member variable of the service class. This also means that the _logger must be made available to common code that may be used across services. +> It is not recommended that the static Log.Logger is used with this approach because Service Fabric can host multiple instances of the same service type within a single process. This would mean that the last writer of the property enrichers would have their values shown for all instances running. This is one reason why the _logger variable is a private member variable of the service class. This also means that the _logger must be made available to common code that may be used across services. ### Which one should I use? -If your application cares deeply about performance, then EventSource is the best approach to use because it **generally** uses fewer resources and perform better than using ASP.NET Core logging or any of the third-party solutions. This isn't an issue for many services, but if your service is very performance oriented using EventSource may be a better choice. Of course, to get the same benefits of structured logging, EventSource requires a large investment from the engineering team. The best way to determine what to choose for your project is to do a quick prototype of what you would do for each approach and then choose the approach that best fits your needs. +If your application cares deeply about performance, then EventSource is the best approach to use because it **generally** uses fewer resources and perform better than using ASP.NET Core logging or any of the third-party solutions. This isn't an issue for many services, but if your service is performance oriented using EventSource may be a better choice. To get the same benefits of structured logging, EventSource requires a large investment from the engineering team. The best way to determine what to choose for your project is to do a quick prototype of what you would do for each approach and then choose the approach that best fits your needs. ## Event and log collection ### Azure Diagnostics -Beyond what Azure Monitoring already provides, Azure also provides a means of collecting events from each of the services to a central location. There are two articles that show how to configure event collection for [Windows](service-fabric-diagnostics-how-to-setup-wad.md) and [Linux](service-fabric-diagnostics-how-to-setup-lad.md). These articles show collecting the event data and sending it to Azure storage. This is very easily done in the portal or Resource Manager template by enabling diagnostics. Turning this on collects a few event sources that Service Fabric automatically produces: +Beyond what Azure Monitoring already provides, Azure also provides a means of collecting events from each of the services to a central location. There are two articles that show how to configure event collection for [Windows](service-fabric-diagnostics-how-to-setup-wad.md) and [Linux](service-fabric-diagnostics-how-to-setup-lad.md). These articles show collecting the event data and sending it to Azure storage. This is easily done in the portal or Resource Manager template by enabling diagnostics. Turning this on collects a few event sources that Service Fabric automatically produces: - EventSource events and performance counters when using the Reliable Actor programming model. The events are enumerated in the article on [Diagnostic and performance monitoring for Reliable Actors](service-fabric-reliable-actors-diagnostics.md) - EventSource events when using the Reliable Services programming model. The events are enumerated in the article on [Diagnostic functionality for Stateful Reliable Services](service-fabric-reliable-services-diagnostics.md) -- System events are emitted as ETW events. There are a large number of events that are emitted from Service Fabric as part of this category they include service placement, start/stop events. The best way to see the events emitted is to use [Visual Studio's diagnostic viewer](service-fabric-diagnostics-how-to-monitor-and-diagnose-services-locally.md) when running on your local machine. Because these events are native ETW events, there are some limitations for how they can be collected -- As of the 5.4 release of Service Fabric health and load metric events are also exposed. This allows collection of these events to be used for historical reporting and alerting. These events are also native ETW events and will have some limitations for how they can be collected +- System events are emitted as ETW events. There are many events that are emitted from Service Fabric as part of this category they include service placement, start/stop events. The best way to see the events emitted is to use [Visual Studio's diagnostic viewer](service-fabric-diagnostics-how-to-monitor-and-diagnose-services-locally.md) when running on your local machine. Because these events are native ETW events, there are some limitations for how they can be collected +- As of the 5.4 release of Service Fabric, health and load metric events are exposed. This allows collection of these events to be used for historical reporting and alerting. These events are also native ETW events and have some limitations for how they can be collected -When configured, these events appear in one of the Azure Storage accounts created when the cluster was created, assuming diagnostic was enabled. The tables are named *WADServiceFabricReliableActorEventTable*, *WADServiceFabricReliableServiceEventTable* and *WADServiceFabricSystemEventTable*. The health events are not added by default and require that the Resource Manager template be modified. Refer to [Collect log by using Azure Diagnostics](service-fabric-diagnostics-how-to-setup-wad.md) for details. +When configured, these events appear in one of the Azure Storage accounts created when the cluster was created, assuming diagnostic was enabled. The tables are named *WADServiceFabricReliableActorEventTable*, *WADServiceFabricReliableServiceEventTable*, and *WADServiceFabricSystemEventTable*. The health events are not added by default and require that the Resource Manager template be modified. Refer to [Collect log by using Azure Diagnostics](service-fabric-diagnostics-how-to-setup-wad.md) for details. -These articles also show how to get custom events into Azure Storage. Any of the existing Azure Diagnostic articles on how to configure performance counters or other monitoring information from a VM to Azure Diagnostics will also work with a Service Fabric cluster. For instance, if Azure table storage as a destination isn't what you want, there is an article on how [Streaming Azure Diagnostics data in the hot path by using Event Hubs](../event-hubs/event-hubs-streaming-azure-diags-data.md). Once the events are in Event Hub, they can be read and sent to the location of your choosing. There is also an article on integrating [Azure diagnostic information with Application Insights](https://azure.microsoft.com/blog/azure-diagnostics-integration-with-application-insights/) +These articles also show how to get custom events into Azure Storage. Any of the existing Azure Diagnostic articles on how to configure performance counters or other monitoring information from a VM to Azure Diagnostics also work with a Service Fabric cluster. For instance, if Azure table storage as a destination isn't what you want, there is an article on how [Streaming Azure Diagnostics data in the hot path by using Event Hubs](../event-hubs/event-hubs-streaming-azure-diags-data.md). Once the events are in Event Hub, they can be read and sent to the location of your choosing. There is also an article on integrating [Azure diagnostic information with Application Insights](https://azure.microsoft.com/blog/azure-diagnostics-integration-with-application-insights/) -One of the downsides of using Azure Diagnostics is that the configuration is done using a resource manager template and therefore occurs at the VMSS level only. A VMSS corresponds to a node type in Service Fabric. This means you must configure each node type for all of the applications and services that may run on a node of that type. This could be a large number of EventSources depending on the number of applications and services configured. Additionally, a Resource Manager deployment must be done any time the configuration of any application has changed. Ideally, monitoring configuration would travel along with the service configuration. +One of the downsides of using Azure Diagnostics is that the configuration is done using a Resource Manager template and therefore occurs at the VMSS level only. A VMSS corresponds to a node type in Service Fabric. This means you must configure each node type for all the applications and services that may run on a node of that type. This could be a large number of EventSources depending on the number of applications and services configured. Additionally, a Resource Manager deployment must be done any time the configuration of any application has changed. Ideally, monitoring configuration would travel along with the service configuration. Azure Diagnostics only works for Service Fabric clusters deployed to Azure, but it works for both Windows and Linux clusters. ### EventFlow -[EventFlow was released by the Visual Studio](service-fabric-diagnostic-collect-logs-without-an-agent.md) team and provides a mechanism for routing events from a node to one or more monitoring destinations. Because it is included as a NuGet package in your service project the code and the configuration for EventFlow travels with the service, eliminating the per node configuration issue mentioned about Azure Diagnostics. EventFlow runs within your service process and directly connects to the configured outputs. Because of this direct connection, EventFlow works for Azure, container or on-premise deployments of a service. Care must be taken when running in high density scenarios such as a container because each EventFlow pipeline will make an external connection, if you are hosting lots of processes, you'll end up with lots of outbound connections! This isn't as much of an issue for Service Fabric applications because all replicas of a ServiceType run within the same process, limiting the number of outbound connections. EventFlow also offers filtering of events, so only the events that match the specified filter are sent. For detailed information on using EventFlow with Service Fabric, see [Collect logs directly from an Azure Service Fabric service process](service-fabric-diagnostic-collect-logs-without-an-agent.md) +[EventFlow was released by the Visual Studio](service-fabric-diagnostic-collect-logs-without-an-agent.md) team and provides a mechanism for routing events from a node to one or more monitoring destinations. Because it is included as a NuGet package in your service project the code and the configuration for EventFlow travels with the service, eliminating the per node configuration issue mentioned about Azure Diagnostics. EventFlow runs within your service process and directly connects to the configured outputs. Because of this direct connection, EventFlow works for Azure, container or on-premise deployments of a service. Care must be taken when running in high density scenarios such as a container because each EventFlow pipeline makes an external connection, if you are hosting lots of processes, you end up with lots of outbound connections! This isn't as much of an issue for Service Fabric applications because all replicas of a ServiceType run within the same process, limiting the number of outbound connections. EventFlow also offers filtering of events, so only the events that match the specified filter are sent. For detailed information on using EventFlow with Service Fabric, see [Collect logs directly from an Azure Service Fabric service process](service-fabric-diagnostic-collect-logs-without-an-agent.md) > [!NOTE] > In a future release of Service Fabric an EventSource host application will be made available allowing listening to ETW based inputs, collection of node level metrics and rolling log file support. @@ -249,7 +249,7 @@ Using EventFlow is pretty easy } } ``` -3. Create a new file in the service's PackageRoot | Config folder named *eventFlowConfig.json*. Inside the file the configuration looks like +3. Create a file in the service's PackageRoot | Config folder named *eventFlowConfig.json*. Inside the file the configuration looks like ```json { "inputs": [ @@ -292,7 +292,7 @@ Using EventFlow is pretty easy "extensions": [] } ``` -In the configuration there are two inputs defined, the two EventSource based sources created by Service Fabric and the EventSource for the service. Notice that the system level and health events that use ETW are not available to EventFlow. This is because a high level privilege is required to listen to an ETW source and services should never run with any high privileges. The other input is SeriLog, it's configuration occurred in the **Main** method. There are also some filters applied, the first tells EventFlow to drop all events that are of an event level of verbose. We'll come back to the other filter definition in a minute. There are also two outputs configured, standard output, which will write to the output window within Visual Studio. The other output is ApplicationInsights, just be sure to add your instrumentation key. +In the configuration there are two inputs defined, the two EventSource based sources created by Service Fabric and the EventSource for the service. Notice that the system level and health events that use ETW are not available to EventFlow. This is because a high level privilege is required to listen to an ETW source and services should never run with any high privileges. The other input is SeriLog, it's configuration occurred in the **Main** method. There are also some filters applied, the first tells EventFlow to drop all events that are of an event level of verbose. We'll come back to the other filter definition in a minute. There are also two outputs configured, standard output, which will write to the output window within Visual Studio. The other output is ApplicationInsights, be sure to add your instrumentation key. 4. The last step is to instrument the code. In this example, we're going to instrument RunAsync in a few different ways as an example. In the code below, we're still using SeriLog and some of the syntax used is specific to SeriLog. Be aware of the specific capabilities for the logging solution you choose. There are three events generated, a debug level event and two informational, the second which is tracking the request duration. With the configuration of EventFlow above, the Debug level event should not flow to the output. @@ -314,11 +314,12 @@ In the configuration there are two inputs defined, the two EventSource based sou _logger.LogInformation("{RequestName} {Duration}", "MyRequest", sw.ElapsedMilliseconds); } ``` -5. To view the events in Application Insights, open the Azure portal and navigate to your ApplicationInsights resource. Then click "Search" in the upper left and the events should be visible. + +To view the events in Application Insights, open the Azure portal and navigate to your ApplicationInsights resource. Then click "Search" in the upper left and the events should be visible. ![Application Insights Search view of events](./media/service-fabric-diagnostics-overview/ai-search-events.png) -The traces are at the bottom of the picture. You can see we have only two events, the debug level event was dropped by EventFlow. So what's the request entry just above the trace? It's the third '_logger' instrumentation line that shows the event was translated into a request metric within Application Insights. Let's go back to the filter definition, where the type is 'metadata'. This is declaring that an event that has a property of 'RequestName' with the value 'MyRequest' and that another property, 'Duration' contains the duration of the request in milliseconds. This is what you see in the request event in Application Insights. The same approach works with any of the supported EventFlow inputs including EventSource. +The traces are at the bottom of the picture. You can see we have only two events, the debug level event was dropped by EventFlow. So what's the request entry above the trace? It's the third '_logger' instrumentation line that shows the event was translated into a request metric within Application Insights. Let's go back to the filter definition, where the type is 'metadata'. This is declaring that an event that has a property of 'RequestName' with the value 'MyRequest' and that another property, 'Duration' contains the duration of the request in milliseconds. This is what you see in the request event in Application Insights. The same approach works with any of the supported EventFlow inputs including EventSource. If the cluster is a standalone cluster that cannot be connected to a cloud-based solution for policy reasons, EventFlow supports Elastic Search as an output, but other outputs can be written and pull requests are encouraged. Some of the third-party providers for ASP.NET Core logging also have solutions that support on-premises installations. @@ -332,14 +333,14 @@ Service Fabric has its own health model that is described in detail in a few art Health monitoring is critical to various aspects of operating a service. Most importantly is when Service Fabric is performing a named application upgrade, after each upgrade domain of the service has been upgraded and is made available to your customers, health checks must pass before moving to the next upgrade domain. If good health cannot be achieved, the deployment is rolled back leaving the application in a known good state. While some customers were impacted before the services could be rolled back, most customers didn't experience an issue. Also, the resolution occurred relatively quickly and without having to wait for action from a human operator. The more health checks that are incorporated into the code, the more resilient the service is to deployment issues. -Another aspect of service health is reporting metrics from the service. Metrics are important in Service Fabric because they are used to balance resource usage and can be used as an indicator of system health. Let's say your application contains many services and each instance reports a Request Per Second (RPS) metric. If one of the services is using more resources than another service, Service Fabric will move service instances around the cluster trying to maintain even resource utilization. The article [Managing resource consumption and load in Service Fabric with metrics](service-fabric-cluster-resource-manager-metrics.md) provides a detailed explanation of how this works. +Another aspect of service health is reporting metrics from the service. Metrics are important in Service Fabric because they are used to balance resource usage and can be used as an indicator of system health. Let's say your application contains many services and each instance reports a Request Per Second (RPS) metric. If one of the services is using more resources than another service, Service Fabric moves service instances around the cluster trying to maintain even resource utilization. The article [Managing resource consumption and load in Service Fabric with metrics](service-fabric-cluster-resource-manager-metrics.md) provides a detailed explanation of how this works. -Metrics also give insight into how your service is performing and over time can be used to check that the service is operating within expected parameters. For instance, if based on trends, at 9am on Monday morning the average RPS is 1000, then you may setup a health report that alerts if the RPS is below 500 or above 1500. Everything may be perfectly fine, but it may be worth a look to ensure your customers are having a great experience. Your service can define a set of metrics that can be reported for health purposes, but does not affect the resource balancing of the cluster, just set the metric weight to zero. We recommend that you start all metric with a weight of zero and don't increase the weight until you are sure that you understand how this will impact resource balancing for your cluster. +Metrics also give insight into how your service is performing and over time can be used to check that the service is operating within expected parameters. For instance, if based on trends, at 9am on Monday morning the average RPS is 1000, then you may setup a health report that alerts if the RPS is below 500 or above 1500. Everything may be perfectly fine, but it may be worth a look to ensure your customers are having a great experience. Your service can define a set of metrics that can be reported for health purposes, but does not affect the resource balancing of the cluster, set the metric weight to zero. We recommend that you start all metric with a weight of zero and don't increase the weight until you are sure that you understand how this impacts resource balancing for your cluster. > [!TIP] > Take care not to have too many weighted metrics, it can be difficult to understand why service instances are being moved around, a few metrics can go a long way! -Candidates for metrics and health reports are anything that can indicate the health and performance of your application. A CPU performance counter can tell you how utilized your node is, but it doesn't really say if a particular service is healthy or not because multiple services will be running on a single node. On the other hand, a metric such as RPS or items processed or request latency can all indicate the health of a particular service. +Candidates for metrics and health reports are anything that can indicate the health and performance of your application. A CPU performance counter can tell you how utilized your node is, but it doesn't really say if a particular service is healthy or not because multiple services may be running on a single node. On the other hand, a metric such as RPS or items processed or request latency can all indicate the health of a particular service. To report health, add code such as @@ -363,7 +364,7 @@ A watchdog is a separate service that can watch health and load across services ## Visualization, Analysis and Alerting -The last part of monitoring is visualizing the event stream, reporting on service performance and alerting when an issue is detected. There are a lot of solutions that are used for this aspect of monitoring, Application Insights and OMS can be used to alert based on the stream of events. PowerBI or a third-party solution such as [Kibana](https://www.elastic.co/products/kibana) or [Splunk](https://www.splunk.com/) can be used for visualizing the data. +The last part of monitoring is visualizing the event stream, reporting on service performance and alerting when an issue is detected. There are numerous solutions that are used for this aspect of monitoring, Application Insights and OMS can be used to alert based on the stream of events. PowerBI or a third-party solution such as [Kibana](https://www.elastic.co/products/kibana) or [Splunk](https://www.splunk.com/) can be used for visualizing the data. ## Next steps From e27f16bc93f7f2d84627c2b927489a313f076e22 Mon Sep 17 00:00:00 2001 From: Julia Kornich Date: Fri, 3 Feb 2017 14:02:39 -0800 Subject: [PATCH 85/90] Update azure-mediaservices-limits.md --- includes/azure-mediaservices-limits.md | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/includes/azure-mediaservices-limits.md b/includes/azure-mediaservices-limits.md index 6b8569bdaf848..d9d602e85a513 100644 --- a/includes/azure-mediaservices-limits.md +++ b/includes/azure-mediaservices-limits.md @@ -39,6 +39,6 @@ | Media Reserved Unit type | Maximum File Size (GB)| | --- | --- | -|S1 | 35| -|S2 | 75| +|S1 | 325| +|S2 | 640| |S3 | 260| From 522496ddcd3cc21501f2390e8cdc158798b6289d Mon Sep 17 00:00:00 2001 From: TerryLanfear Date: Fri, 3 Feb 2017 14:08:19 -0800 Subject: [PATCH 86/90] fixes per editor --- .../security-center-apply-system-updates.md | 7 ++++++- .../security-center-remediate-os-vulnerabilities.md | 2 +- 2 files changed, 7 insertions(+), 2 deletions(-) diff --git a/articles/security-center/security-center-apply-system-updates.md b/articles/security-center/security-center-apply-system-updates.md index c31aff000207f..8dc9aca72d8af 100644 --- a/articles/security-center/security-center-apply-system-updates.md +++ b/articles/security-center/security-center-apply-system-updates.md @@ -13,7 +13,7 @@ ms.devlang: na ms.topic: article ms.tgt_pltfrm: na ms.workload: na -ms.date: 02/02/2017 +ms.date: 02/03/2017 ms.author: terrylan --- @@ -27,12 +27,17 @@ Azure Security Center monitors daily Windows and Linux virtual machines (VMs) f ## Implement the recommendation 1. In the **Recommendations** blade, select **Apply system updates**. + ![Apply system updates][1] 2. The **Apply system updates** blade opens displaying a list of VMs missing system updates. Select a VM. + ![Select a VM][2] 3. A blade opens displaying a list of missing updates for that VM. Select a system update. In this example, let’s select KB3156016. + ![Missing security updates][3] + 4. Follow the steps in the **Security Update** blade to apply the missing update. + ![Security update][4] ## Reboot after system updates diff --git a/articles/security-center/security-center-remediate-os-vulnerabilities.md b/articles/security-center/security-center-remediate-os-vulnerabilities.md index 84208d10eec38..0a986f0dab136 100644 --- a/articles/security-center/security-center-remediate-os-vulnerabilities.md +++ b/articles/security-center/security-center-remediate-os-vulnerabilities.md @@ -13,7 +13,7 @@ ms.devlang: na ms.topic: article ms.tgt_pltfrm: na ms.workload: na -ms.date: 02/02/2017 +ms.date: 02/03/2017 ms.author: terrylan --- From 8e36522bfbb47c8b5eb634ee57de98407144fbc5 Mon Sep 17 00:00:00 2001 From: Bhanu Prakash Date: Fri, 3 Feb 2017 14:13:54 -0800 Subject: [PATCH 87/90] Update hdinsight-upgrade-cluster.md --- articles/hdinsight/hdinsight-upgrade-cluster.md | 10 ++++++---- 1 file changed, 6 insertions(+), 4 deletions(-) diff --git a/articles/hdinsight/hdinsight-upgrade-cluster.md b/articles/hdinsight/hdinsight-upgrade-cluster.md index 6994a3ddce811..c31fa09a69251 100644 --- a/articles/hdinsight/hdinsight-upgrade-cluster.md +++ b/articles/hdinsight/hdinsight-upgrade-cluster.md @@ -1,5 +1,5 @@ --- -title: Migrate from Windows-based HDInsight to Linux-based HDInsight | Microsoft Docs +title: Migrate from Windows-based HDInsight to Linux-based HDInsight -Azure | Microsoft Docs description: Learn how to migrate from a Windows-based HDInsight cluster to a Linux-based HDInsight cluster. services: hdinsight documentationcenter: '' @@ -48,7 +48,9 @@ actions: 4. Import any transient data you backed up. 5. Start jobs/continue processing using the new cluster. - - - +## Next Steps +* [Learn how to create Linux-based HDInsight clusters](hdinsight-hadoop-provision-linux-clusters.md) +* [Connect to a Linux-based cluster using SSH from a Windows client](hdinsight-hadoop-linux-use-ssh-windows.md) +* [Connect to a Linux-based cluster using SSH from a Linux, Unix, or Mac client](hdinsight-hadoop-linux-use-ssh-unix.md) +* [Manage a Linux-based cluster using Ambari](hdinsight-hadoop-manage-ambari.md) From 8c59375290e410c34ba25d4e5d8e8f9f8de0cafe Mon Sep 17 00:00:00 2001 From: Bhanu Prakash Date: Fri, 3 Feb 2017 14:15:24 -0800 Subject: [PATCH 88/90] Update hdinsight-upgrade-cluster.md --- articles/hdinsight/hdinsight-upgrade-cluster.md | 2 -- 1 file changed, 2 deletions(-) diff --git a/articles/hdinsight/hdinsight-upgrade-cluster.md b/articles/hdinsight/hdinsight-upgrade-cluster.md index c31fa09a69251..f26225aef547c 100644 --- a/articles/hdinsight/hdinsight-upgrade-cluster.md +++ b/articles/hdinsight/hdinsight-upgrade-cluster.md @@ -31,10 +31,8 @@ The workflow to upgrade HDInsight Cluster is as follows. ![Upgrade workflow diagram](./media/hdinsight-upgrade-cluster/upgrade-workflow.png) 1. Read each section of this document to understand changes that may be required when upgrading your HDInsight cluster. - 2. Create a cluster as a test/quality assurance environment. For more information on creating a cluster, see [Learn how to create Linux-based HDInsight clusters](hdinsight-hadoop-provision-linux-clusters.md) 3. Copy existing jobs, data sources, and sinks to the new environment. See [Copy Data To Test Environment](hdinsight-migrate-from-windows-to-linux.md#copy-data-to-the-test-environment) for more details. - 4. Perform validation testing to make sure that your jobs work as expected on the new cluster. From 53f4898f31ef19a39e1448235ed14c8fc7df7b3b Mon Sep 17 00:00:00 2001 From: TerryLanfear Date: Fri, 3 Feb 2017 14:27:01 -0800 Subject: [PATCH 89/90] final fix --- .../security-center/security-center-apply-system-updates.md | 2 ++ 1 file changed, 2 insertions(+) diff --git a/articles/security-center/security-center-apply-system-updates.md b/articles/security-center/security-center-apply-system-updates.md index 8dc9aca72d8af..ff53182571935 100644 --- a/articles/security-center/security-center-apply-system-updates.md +++ b/articles/security-center/security-center-apply-system-updates.md @@ -42,8 +42,10 @@ Azure Security Center monitors daily Windows and Linux virtual machines (VMs) f ## Reboot after system updates 1. Return to the **Recommendations** blade. A new entry was generated after you applied system updates, called **Reboot after system updates**. This entry lets you know that you need to reboot the VM to complete the process of applying system updates. + ![Reboot after system updates][5] 2. Select **Reboot after system updates**. This opens **A restart is pending to complete system updates** blade displaying a list of VMs that you need to restart to complete the apply system updates process. + ![Restart pending][6] Restart the VM from Azure to complete the process. From 9543ac09eacceaf1d740b2e2be25c85924d1fad4 Mon Sep 17 00:00:00 2001 From: curtand Date: Fri, 3 Feb 2017 14:28:12 -0800 Subject: [PATCH 90/90] PM feedback incorped --- .../active-directory/active-directory-b2b-invitation-email.md | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/articles/active-directory/active-directory-b2b-invitation-email.md b/articles/active-directory/active-directory-b2b-invitation-email.md index d91df169c5411..179816cc13273 100644 --- a/articles/active-directory/active-directory-b2b-invitation-email.md +++ b/articles/active-directory/active-directory-b2b-invitation-email.md @@ -77,7 +77,7 @@ The footer contains the Microsoft company brand and will let the recipient know Browse our other articles on Azure AD B2B collaboration: -* [What is Azure AD B2B collaboration(active-directory-b2b-what-is-azure-ad-b2b.md) +* [What is Azure AD B2B collaboration](active-directory-b2b-what-is-azure-ad-b2b.md) * [How do Azure Active Directory admins add B2B collaboration users?](active-directory-b2b-admin-add-users.md) * [How do information workers add B2B collaboration users?](active-directory-b2b-how-it-works.md) * [B2B collaboration invitation redemption](active-directory-b2b-redemption-experience.md)

hdKwY#v-=p=pFilphhJKBrEYfaN(a2C_*d z24acDYcbm0({e`?Xo8ZGZvN7M2V1zxD-VwYZB=vgj?CxA%1>S~s~n4=Ah_!KWk$Xu zK1rV>YLb^$n@pcpau#2)W82kA(3VGGB;Kz!Ck83#5KQq-JK2Fn%aB0k^;XC*en;jO z!qo5VMOaHt(_DEW&`Hc4rBGGj(`@VpLWuqeY(U_px{znkDz*YT=WQ|zIBa5GFX2PN2hjZ`?sMA zf##YwRLHZT!f^h0d&<;MGLpJVD#DOBsaq&gHF6yk2%M0E4=+ql>ryC(NkAo3}U{yqyJ9mOTOhrwxFeTE;Il1spS)9J~K_vI4m6*ET@6nbP z=*@fHtM##11d;ifsGk)8@K z>${&~VaDUzv!c%Z3Ni$he5Hb>_wa`d+;qgM^@T~r=Qu8759TrRG85d&;c@|GKXHKO z_PqPEY5jR?6VcK>!O@OK&jL*o8-8c7up%GyM!f~URAOGw-Mr#k7h5#U#IXu?-q8WX*IXwjDFpgr1y*uu2MvPs$T@4=T;aF~CzF9?R zPjy0+7t}09-2AyaL)>iBNLw8V34glNLD^k~LTYSRG3)qqP-E;?Jt3F57P&NC`2t<# zxm|bsxZ|DMn|<%7QzJCc#!{Bae$t!KW17Ts9m&1{+tGY_99W7s)k zf4R9_Pqspg6_MkmQbHzy-18 z0(WuorKIC0rn(zzN+OGQ6+_rgBAo>e#_DWYW|r?x#;pebTwlKDt(!Vhl(G|?$eUD| zyQ-_A*TCbt)$eq&Z>b$Amh<-F!*-Tgterp&Sx!=&DP}C|3fa?|wsNJHqDs3#JdC8e z?|jZ3isr!Jfb$7G5LsKHi{3+Kj~9JQd^?EHz3vlzZ;YY!(5g>QiDrM>hCwxvUqQY! zgyLS6wYz*T@fk5ZM=tn$!q6kn*x;&yT2ubP}1X-`)I>iHuXEaXw~^(?LM?outKR?+n`J5 zWm@WEAA#A)MpBbl z&S>3z)zpO9h{J4B$^DXuTkz)Zmon#ZPVx?(W|Pt-(R!xCEu2wDuL0 zw&7V_nOu&D8xeV1!?6ho(5`WJGUm^CbSn))YHUWWMQJ9sXr>%S*BJ; zibY19h-O+Z#XOd5lsi|AJGirbeif#B!;3jXZB1)n8|2s%5jk?QTolJZQ{a|ydrkY`!WXH=v%^}Cui zt);}@y=&wTEkHr24Z>aChS3^ab;g-=5x-W4r(tYXERO{nbxY{>PwZUPGN z?%0PbX(>B96V}_5ose0u6BGy~tCV$!F=DF4f9OpU-FU~f{0>kd4Go}6tD_vTy=8XM zmzPDi@lDeCUh_={32?MTt>)c1I5S@%BZmCO!sKTd%udvo--RGKhRIz$6BI{KKU=%} z%)BD2Fz#sZq8+ZJz3HCiSoP^A55-d=KNtkr3#Z-l-i*8HsYmJycGqIUTJ3}i8uaFA z?9u!%g6xy14oJWFs@OvW_>sA}Ad7j^A+77DJ_L zD`oGb#Y!ryEhD$BUQCKZ%jY2k?n=jEU$IhsVIbBX)9@A;d2A4ThC5)3JvWhZc{v~3 z@Y7gZlx6kIiEz~mI>O{I7XlPAx{*@ptcVtyhp+Fhbwum{S^4kbLpJocz+9^QAzNv$ zLqoR89#k?U@d^j&TnxG>q8WKTtj-JGdBc$3oTys8mhEjPVIP(k8woZ-6vsP*@S)Il zWM2+;9Um+3_d|qezzeR)hCUlG<2JgiBvhhE0!OpBvCsF3h&E3 zkma~0$!Lnfok%ewL~(E5`}(1W@3lV+v};`VWjF=StJ}f63TDxl(x4A_rt8KfPU^T0 zZ@ISDb;A%j{PQmPJS5&>nhE>a87&_NJ_n(MvS)o8tx?Eh9+zR*?SX5fw`!ecK60l% z^pQK5AOuV<;j_uIVYmTTNyVB|#ywDksbh^Lk$1gtOtQwM%cP*Acg}DZmp_1p4WtSP zWqDU?2$o_9cCMBR$MJge(LH4BV?-9;^_mv zp8w8y+&OX9+f{z%e!y}%vvy8;jUcv6)ER5SvzW^a3sQ=Kd>?t9^SPfKl{I&DNMS>q zV%?0f-7}U;lIc+aqg&v_7JpyDXRsit^*);f=Gf}vJ>g84nUc@&Q8r%e3xO@8_`25t zQ6_4USbfZ3(R^fVn^h%sCwq1@x+mk>Lv#*s$IHmRw8LmV?aH{}LESOC6A7typbj$L zwD^|zW?~XTT3Q)NojGtXa??Ii0lD;FyJGHG3V+)3sEZevY*Dvq`0kbPXCB9u+`KTa z%f1Lxi^R-&6y$49Y^(=0Z;sKbrriF{7f<#zp$u2Ct_>6q5(b_Rt&Xa_&LfYo{0t&q z^1M^Aebct`P=N6xRms4kF64mYX%o#gBQb8t=+VN$;|h^vtMUj}jiSe7B&27;+b`C#Tnq_4fC!cMH{MxTe%Q1r6R z6zzrz;ZW^vaKpxg=XLkQ*%{OIFP~0pY5KClAHYf~hyu-$vR^ywH|mb52D_R2=Lo&# z4f);ZD0oEvGN#bD;C7dz0C2Q`oaihlXySwJjy?@Mt~qm{QfhddE8I|upx;vJ_-v(a zJ+~B`NjLjJofP6tF>45JZMrgc$ay00D~fD?7I%Q)8>v9>#IOHQo^7!sj<@zD86t1K zP+JGFr_Nh@z!dC<;iHe}3EgoW%ks@*gh_}IBImVg=&5TWw7J5iMOy9h^t2nc$x4rt zd428qrnl$=F!*XhSTtjboX?hG$z8g0Kz{I6vHu~k@VGpbZp7iZppmZkqOnx?2Tem;@(0AOqH3;Rq znQ*K}8BrHjMTy=IOF2mJhE)$j?G5DWDg!H_0ebG+ygrlW^s#ll-}*8p#G55r*H{Ny zHx3faa-NEqI(vyydC+pV{to_>ib3Jv2da}Np>2El%BFL1b$x4|qdnhqr+Qan0>ranNXIeamg5~RieeFR z%AV8_`D>}tomY5&*=@$(S_pA9!(-8H(_Ujm)7qRufrI(>GB#5gcnQk4qtVjtOIn8I(2(3C?{$XtKM#B?LYOh3V$n0cVZ1os@X1>wUc`kg3-gl}V>*^{{!g~vCN0qJ>>K{Wc zf|XfRtO#j9!#r)A#A$<@E}mmjd@4d15fWkCRu7zfJm@4ef8Wp^s!fmE>NpXe*cZko zvTC(!T&ofe(V~Y952#1tKKE${;#BK$UL73#J+Y&k1#a|L&NhE}nH+w{=uOa-Fdb{) z88TAz4j07eT8kO&pRdAh@+D}jjUpS|{OUFR?07yXlVaCwJRK(;I4`3d#3x}_jcbN& z7G+NdwYtdBh@WW0xQ~|Od54b>WE2R=9T5A9(>JF)&t2hrlF&N0 zNy;ECW=F_5JcQDT+IedTA`oX4<&9jAhKndNNlG`P;zfsH+ilEw#f8P0BL}Zrq}d4w z3R3WFE=A+HBmLwPKRxeFJ2Nw)Zq(cuhF3i67n|>8C3(*tC-F}m$2%Qz3J?u8SoW3c z(1s3rt36%5-JvZm{RrMV0kmMjM@pQzJ9PS2Yme_=Id*38=gv?x@8UaG#wRb@9f^eX ztzmsm&FzGv8}Pd)nFC`+luX$?u)+#kDN>Ey<3k)BW0P-SRqOawad>uEUJZwEzvvYT z4l-no=6B{FZKy>l;=eU%F1)r`rV`f8KmI}jPPTLZavt_$IlpyVUbT$M+pf7XYO-}X zNuc=?_Ac!cy?v(}pm$g==G-r`9cti~V>~EnFapG5Rc?TEJg~SLzrEblZPTx0k zt!(OV_dQlS=YcqelHu{VumN?~(>}78sR{Z;SKsxc7>W|A(aE1n;xvrGh9z5$x?iO9 zv-ifYspel{YVbbec1v0q1#@c1z6GjB3F&c@BI__GlaUXHouxB_tHeYYLqGL_lUbZI z?2X${_l^73^(D%)fV!UHm-!*HAobvf!-skzDPNP|WdNcXG!mh-^$J8EKX#_SW{DG$ z9r%5eJ_cZ20t$(6v!cw-=(JGZ3!p+&4*m$#F!rOE;TUU&dP_+@`v#>oolY-Y^nBD zg*A9=Vx2N-3DIP;*$F&3e@FN-FAw|z9VdIEfu0h?h zciYms8Mh1bInQ8kkN~9!eObKJ2`QlFYkU8OdV_r=1~&=mkb8M~AK#O(*0bvc2Fgxq~4do<}8PI(dBK3YKzjWNBxmuht6ZoQfM!W30KRh(DKWV;T{$=}~9= z<8lNRZM0MKszD(^fk~W8{^X~rxVxHlLX_UARyZFnZZB<7lD2+2(RlWuf6jbrhiqN` zXk(|O(_zSr#utx9kfO>3y1nuF zo@eeyOmGLg`Knd$fMYp?OHwMXYTV@Z06pAqTXZ4*sc48_iNuZxJ1-w zVF<8qAL}Z;e#9!^7h~n7Losh+6mTc<6x(6fNnXHP-)Z@L^ZL*fT1@|3bs`~JaB zTZ{;T6$uWsIM;wu>myI0N4ht3s!!>Dm;CIQbtuhjH3@@X__;??~O8!fb3)4o$ngqpm@yU0?by=K+FNcAz0tjXE)|>Y%EnGJETH zU-u>Aea*=>y!giYK+nUT$R`Vz3qVEhH;1nF>mF*B#QhhzWb3&&h>b@L4 z!A^xIe`r#+QIr++%>B_YYITTbR%}xU= z_x@$m5yC5P^riWMr$q5CD{0+MY(vu zXMwRzK~gNHda$(o?&;mFp%D=^=5Tw2zwLCo1i7o_BEu2K;hfDRJ1Yi{{1><{O^)mQtrU%Q=@{PM)qfrchKzNgH_L$Ahm3#?8SoKxo} zPaf0w2ri13zV;ltM9ZSfTcL{S(v%J@7t_4K!=roF4sj`6u@;+pC z$dwJ_HmZdV)vQXM8cQbQlVY!9@u=6%vzM4~&h&3{i_CB&jK)(8@(*PQTX6V5jZKAT?R!!q>dqQxcZ< zSXp(tCi4$DK9!tjsvI4;XK;>N+C-!;%kxW}x$m)i{$+s;#(%iM|G`HWxRJ=4jka^G z*uz$Vt6ed28;DLBJ#NBIsXU1z zUEtKR#WUHgWD#)%xie3OAa;3A%9T;OteGz~Js_msd*z$RO!!=w^w9E)n85}>hD&O>qW0pN_6JJ{(4gEk)q^+3;?gZ7Vzn<<^>ZN44o7kw~Y{&KLe1H_!cR-26=H z3IH5{V{Zgoz$kL(PC}2eFhg9evq~~oLTiNW6MyOaE~LVYqTK@te>7DVC}IG3Tmj!+ zvA;D(dnNhiM;-9^L!yCza}Qr3XlZKfhP^AqsoKeUtcifm!oY7(i&ySPrKi%q)C5n*)MUy?G&_8x25RL zm_H`*uE7l%+;{073uiC6J`<3b+~1W&4=^%|oWj{VkeeoYPLj_zd;j#Hl+eSJ78Zol zmYE-Yi3sZdn*Dm=XTwo1ATHyOY<_ z=v@Q{AQN_UcSc9|`Ay}(8*L0{o6QbP@-x1cQ%q#`T3^1u5|Hxd3D@nWKIV4|To6DnOq$Bc$DV|L6E*X&k>p7T9Xq6Q3g%;h$Xg=4GD`Xwi@kh~iiNzrA{*vJ1W6zcgES)>2_i89~X{fG%5#}&aIl;h>Nzt(b5u-J=ZgABFCrE zA6H6b1@_~_uh11Ee$L&r(2QhD6koY0zAA^_cwCNqe4U)irTtQ+mw5wOY~pWtT^`iE zC#G0hYs#E2`AnH-7Mzj^^}en0?VhJ_mHlfok?Na2-*4Py7M5dRB$%7#eiB_0tT7pj zksC4cH2he#U7+xy#rE>8QmlRe*WigM&+aMbeH$ws^@HgHxk?55pPwp?n@>#$Dsf;> z^4?K6)G+y>-|JQ&PRG#KV{$!ecfWL~&cwQ!@a{fMPA<=U&c5{JltXkVHp$aty(Vx; z=6ZA5q%(+$wep{}U0}$nzK2I=H~k*6dM4D`d=EC0>4-580J=oBg~T3fTR`o$h3pO# ze~CWAR2LiH7T{(#{Gj`Xh2GV$uu^qdr*<(<`bS!i;MvpHk7uA<9(;5=q;m2M9K0^# zwMlt$FI(1U&^x8@2cqf+qVVqZ!q1by=+!)%KWEY~kr#6Qcd(+q*Hk*oK616G+UZ`a zxCa}2HXOp_mWVdUTj;V#ytxt-VQXIp9e|QXj?)Jl)iVZ}iHe>?a*Ten{|v*h6greB zRqp2vXy!RbGzptiZffFN;>@}slx%l`XU+|Jj;Cehh=K4$*6@}@XLoe1OKT;z!vw8e z`+%_*TWOZ{<;$lFOD?Nsgje&qYhUb3par!XUhgKl)|dn9nL-V2O9cT;n{yA-c2obY zN=8MwJv7xzj#^)`B#K}4sws3b|JtckQt_b?IewPABD0L={%grk&h9;r>Sy@?-x>I! zo47pEa&Yt3w{pBF!t{9e-7P=)CVWw^>0Uamib-O81`$<5h>AY1(ouc7X@YXhlSd8A znc=zN`Qe+$E#{{4&A_TU@YgxEiR!rf(5I{QW9NKeiz{`ToIYSGTW`yua-;1+Joj>8>?KI4ev^0W zN~Q0tF^R9KA=o5{UUI?9>fl0#EM0Nl&(6J5o!O+A2d-RhJGt>rlz8rfV=#yZLf<|+ z{a5OcFpwx-i2T2jr=tQ@oocg|m`*IrPfX`NIQzl|8>?lDMaU z19`2pqs^-#{m{nFfG#d9RLGWX@)bqW!lS{I;;qW=-g)RD`*vSm?c`U>oX77WdmwZa z0HI4O^iNCy-$}pzx{7#N#XTFp8vvM|zaxg=op8=rTfnVpm_v<2bhdTOzJMODRQ8)SVh3l2}QDl$7w@R!E z@AoLW_+AHhmGjLiCm=xj4P0i5G+-HAQGV5)s#~3a`ff@}i|$;nyt)Y6`MNACGx~Iv z4#wD^u5Pw5T{3lJu>Z@3(1F9F+U&N&mGf@GlWcWTqjumD{$)tGaQioD-j7SEP2`rGy!~|jjr2FZ5Qr+V1FICCGbtO- z3(@uw+2ezIidPYPO<=S_iTv4fehPgiaACtwX06>Pot;0?1J3F16G;rb)dVC>o^n02 z88*e}ikk82AA78Mj)b?oSPNc~q)p=1K9yGNyR>>ct6by0xuNCFDuPj^#H`~JOJ60? zOQFZ>at?jjioHZv-1VgQ7!Wn2XD?5;tr+kp&R;vWO>}!0p0$(k(9K~_hyfm;H2gd4OfkMj{br3^V!xD;uxCx>VKJ_Jmtxg!S&Hk0Oj;CakO;Tgss z80%AuvP$de<5XY2GFfNdz5uYux_?oZ`@hJXS3dwe2R1Iw1IjMQNf@rQ!d*PW{+ugTyY;H@t#yPs^GT@jG#4g`ply+u>`zpSuar|H3GuztNN)??+ z-KXvKKSWl~-ky%Rlvq5m{+!5l}h-|2d8~9jUu8;qD@Zxa9WecM8ZU;wP!X7=jG)($m%UqQ>f3m1DoQ z->>IL{);8J)e~jt-G4^XYg@%-Wqc%L`)cCgh>77A1<1Z{x2;PoGmO~dcXLO9CwccG zv|_fEd7vH5BPn0}rRxX2yNUhe&D+^ZdLq%f&}tT^&&k`nOs|oaz{UbQ<`i6BaQ?Hj zNtXC1l=K5TOCBRAc>0bJx->9&lM9z}g>L!v`7N=XQP6WD+wz=&>vL#CPU4-fxylB! zSVTl9>~4)#&$bae;&zRhAb>6Fo_L&S!*%i zN?OEuw7%%cdyFL(i}t|2)cUJ`_>m`!Cy(j zIE_Eobl)=W<>UC6kY(|K@t~ZOO%O3-Ku$Y$#Dp}l@jX2Wfq#x6i)YV4SI5GiH}q>m zX`0dvPTKh1@p?fjEZO;tvzAOuJLY9uU36l_O!1dmfS&eARY(JhG_&eM8kF;8V~$?t z?Am^^v!nOtvqn8J0KpIX%Nk6jaW`_UKWYp;>f8Ukhgrm)-0P7+`4#Y zuEo2I#w$C@*6K4swLkAZ{^0eQPo?@|4+ae0YwS#}QSm=*rs2bcorE=2`Kn|JxO*hW zcns;pj=+4W?s`8$`j^YHbuHk6XPW_;o?7-Ln+@-jB2uNFsQp=oKIzC<^b>;-$-QkrnX=?nLb{G<;gj5Y>>TLEiQ<3J^_ zX(Dl})XiV4uk!ThM6cJpkOSPBt3Q5e#&%)kRue)cW;1z^7-3ursd1RE?38>0hG@SY z-rbW@WQc)tlyR@J`$OUa>;jP)%=54@0`I}*)sAhknXXUmh2vK=7wv&P=X8wAFw)V< z37lW~#KRU~G|EDwep4j9=&FZ;(eowlx0IQ4$_QiGM5YifO93k^1F|IKy&u9EDwo#C zDB;?CO}~)VdVA6{FxU6{rE2yIO^>S2_I2|(jJ^CoOwDidNpC6|d*ZTsgh;eV+7HW{1w-OG3lR@4p38hwJvX0|5G);Ph@-g&H>D;eXvJmlu4boDBR z%1r6UBQ|D;Xvh7L)7z-iTYX17L=3|#kLpS;lH?#szGF@troAt;-;CIUe#gqv`e$hs zhBVHN@-aNO&Q{`kDxy|fPW?fwQKgOnQfbuj9Hn!Ja}~j*%sJ?Y326|6;{XgpG^nyf zmw-Rwn!1KKCEO>PTCX}_SG59vAz_vPAATUstGZKyDP|Kk?p^aP$XYKD!=Udrpihj= zC`K5oVK;lXQOo#<+RO0mH`OZu3!8C} z;GF!;bxBbj_##}=EwAlb*{Ulsf=8hwL>ftzq;SLSJL6Wz=B<3knvYc;&-E@gPUOWX zz`9pu3w&E|);VA7xW@pklRHrhZQ#7d7H~`=Z!SlHfjdJ}SAK(GYq&~UUHwt5Xq@Bz z?qV63MQ$9VhP`wX-{h`1_!#%d%%4PN4qG$=w zFrT-M#qh;w%9ax)Zu_P`DTb1b@ysg9Oc0+Gl^P}I`w({_&$K4i9(=?ZDe-M6mz~g` zT%A@I_Rjw?w|mTx-p2pi$*tx=^hbi`4xMYfTd~{s5D?YlzGA@R>*dY_vu2oLb*SuQ^_<3&TdGz%K9O9Mj z*sinu_ciUANnAQl?@;=EF&pLy*M>B;p?Q^YEno2Nj{IwBtyA}InxBppuS8=wOGz`t zab-rd?1_?vK;}1RR(~ekGwtWoXL_1T7P5NB?AD4(RS%hm4Qyaz9K?hq>lkm5UIaof zP91kwxZN{e>uBP!tx>;fTxd6N$Hqeu+_=W7WB#zpDc)e+Eddf^W#@oBHM#$Tri$kO z5%%SQQ10#fS|y|uiYz5$PszR{p%9g2?2|nPL)jSaHkh(+ zV=Oa<88h>H>b&P&&N+R5|Micad7jVb-md$)?~9qzzN!0UrAg1V#k%R$!=~r}{BtR| zDvbF@`^BY><&)+n+N!9u%zHRZU)w||tM&P*tJsdl|R&QE=+ z_N6;GXhZOkDr&;#)2e60lk3ccX5Pve3t4>9qC~?n>%~MjEy*TO{r3xhuL0V=iURe&(KP%y;Bhh-%qrr zz4XRh-TZM=4jOX2y}c2RKwCmdHge6<3sZDITnd8F7(yD1Xkp_fM=SFO-43R_@v!Bp zo|iE?7WI*~Utu?1>}VZ)-A~hD<(2BEx{69iSPmcNa|Hy@dN_l>;`L-Nae0)y2iCDf zPV}kKYTM4WkC5I%7ZU#~cmk=!uPviKa)0d2Q7HT7^C_tQE$p%)X&42Ci64B3 zpmj_QEO&i%R;Mq0EyS{c1n2{P9_4O6ra11|DQ!z?((PKyHk|25UvHqwLRxspmc5}1 zFd`>cU$X}@?J zjtt-H%Re4rX=hif!>dF^8(}Bgb)<#5O{@1F>lFXzgxZAiM;pxxYHUT;{g0h5Cqwa2@iQ39jS)FvDQ2FcP zyCLXf)W>F)N9nN)3P0j69VNim0j-wISdxM7(Loof*GogZ#S0s?CdWaalGc-(c=tRD zzV%N%TJKO4dfh1@sNleL`?m&GHRN8jQdMk$ooNM_4_1#``J|+5AOtm1#;M?$8F6_J z+Ai>mmcG&nU|P`jN9>LU)UmWQ{+3aaPm4rp;j3qX;~L>JF3hPWK89QVGUXqR3vXb0ywWu|BcE> zqZawaJN@G0^LaYbHcGI>@olNy5^U20`mGwyb?t%0;Jvu22|p-#a7T30lb)Gyy)0*W z2}-NvKWr9Ombz=#Q=tJcR-~!rSn4VYzCDKKX_UjbP~>U|GiQCPGbA8AO8e!~8io&k z&r=@1`0X%S^u{sU>Vv@TMJ)4qw-6!kqFFf$7N4F;%)diV^dx5b(ImD)2s zyeM;YqE~Y;qLlB@ns%KGzwx^@W(4sE7f`03M`VZdaSfuXr^w$6=umf zZcVW}-E96`P5$~hop|~o(yWejD+g4}{mpuNJq2P(B9A2t(r1rOhb0ym&zA)5|pp&_u<2Nfrd z26PPAX0Si08;PDj(5W&c4My)b-8?w9)nc}7waa646Qy7O#WaZ4B2&EKwnSiEMl%q*F~=e#&&t1LmnMX4 zg)7203Xs@Tfgs0VLE8j!OOQKMW|{SF69=zUcDD2Ig~KNuu=Yh;S-A_M>y_|XpP10i zjD`8~tRK0%(PEwBk$!$7L{tWU^Gg9ZMVn?#ao+uizhjFaJn(r+>gi6{UI=Ce~OcDj44${*t3RL z=hTD3n{0^dHK~0PfoGE|);+AabwqeE1A_cqYApXgmcNeNz9~Z8LD<@pcPAkr^t&?o zAn~}h9&J)*Y6=`jD&Jv4z~^EjoL6wn=cXw6_=%y*5CGZAg=pB`f>Tgc685~NGLdCy;g!wd%XccT zU708zi*YiN873$%l*}?cEXp!bMu_cZViQd2V~Sx3Vj*1j-L0S;;+)HzrG?Xtfj1T1 zyqHrvB75V%Oh~%)LS@|=UE)g@cy={t!}m?>1u{Si;7)mBK}nKxFZ{UJedH(n>Qa=4 zahO#gp-zX*mNdccU?@6dnxNSkJ=Vr6uI{l?oo;#uhR%3n9Jg)JX&tQPoHvP=DzjTt7u4V9u?;W-<_%)j)>A!P){L za4S6(OKljdU%VpR4Gr-W`t-;$^K^!sov+IY_ouka;^it{!0qLq?SFLSOvhz0bpo@2 zoPW!TBO#%l7xSWFi3GcN)&UO67UFA@VcG9Xj5% zoDU)lMaP?63Yp&3@T#rP!g2_uN<>>C)jxS3|#F-_~cU`ntBdD_VX-=8QAU;L&$763ZVZ}!Gs!KNk3 z+L6@FKW8ffz?_HwzDK2mIWv-VF=$s(qJ1MN;vHv4M2vh|qY_G988nZFZ7%TBOoHff zaJ;2_yTyu%C4CY4q%hS-E-2%iaop$GHGCnFN5%rSf{~XnV>veu>|w~gr^jHgc6x3k zKk#n3ipi-KjZnt=)Pcx)<43r=EmOA>ak;FMQRf_UI3II**t)%O@8+-XeIbDDCbjeQ zj59JNL0Wyygbw9)Mwc&e=#4$l)vK?3=P7F(ce=0ZpkhzQqQ6fA{-#eK9wiQ?3!of$ zGW}2fke}N7ZjqHe&vggE3y|bK^_>i;KCWoJz2co%FW45+luP=+Vd!svtHpnTad!@t z3(0^N{RbBH`=rp-a( zb}uD?J}cd-N^eOOkgvCEm?9kg1c(cT;uxQt6ZRAvI(PI_lHhN?vQg9<13`>IW7Six zLzQyPV$zLD(%h5MX(Q^pF(~79(umtL`F7tm08+0URz}TGj~s4&Bt!o|KK^X}jqR!M zcOM{$mYkNBKs#i&TrAAr@L6KpI9Ro>cJf5~#@*HjvJ<}70FH6dlXuZ3!ZxW&22G>p zLDkl)w-UFOJ9z}nBzQjFX|V&fY`q0-Iy`#f4L>Ztad~+kKKN9_$@tMM|B++;y?d9Z zs#~g<9}b=aIFH?C?$+*dsQ?4h>au5IeMLj%A@7{k=a}oS78d~$To4n-#TRCAwm}eJ zA_561qQ>0xOJ2WV&Ad{nIvTeL`w`kPH$_gbchXBFx>vaQ0Q1{ym38goiz+rQ!GXI7 zR;EobnX#4!VtNwmGJfB!hUU|?Oq1CD&Ysu;-zYR%rRzqwc z;Tx~M?7{JAyog=4O7ASFcdERSbfelA>7&P{+Vf~PABC%E^bKhOwD_ZEz^!v@9$~>( zgu~AX)y;aT=BHqHMx|z0rRRkl;(INzo0bn&Ywp~m3=lLa#BS-7O_m{P+GI3owjO13 z#8$^Dyo?vuc1%7*-{%`o`R<$O-H7)M5rlorBMXP2;7wf7gN)Qu_*+^ygKt2KqU{rZ zvEE+ucW(w@!6BkXVY0yt)5umTWYn60^#uCRds3WZ4HjCl-$hgcZ5Vk~>GJ!wN3#s> zU_M$)5Z=0fiGR$8ydZBAlNo<4B+VIxgh_9timmZ*fifCt)otv+tlw3tE3o%tJ7v3; z*f&@|jML##(V$_tpk;w!XYuYhdS8b{0la7T_?DT|5JUX&->;h!JE|Iao5StiiRsS7 zCl+;u?On|o+9cZG0({dbCPBR|nA-2Uvf;Y&*@7|_NZQr*3m6P3_zE4VN-1nifBnEn ztR=uPi^(;FoxM3xU?DUIF(>q-it{_!S|GS5utY52Zl{Vbp>Y+;*XL@)_t+w86q_8n zTx`RpY$ET9*>KH!YfZ6ipstT_)vCz8AQ;0tK9Y~fBop6SN0ITSY9{*pU(~Ea?z>Zd zgu;E*A8=3XoY)eaVf+FjAm4o4DBS)i=RUc!w$`;}ooCNp>T2157m9tmr;rzPV{c}~ z)Uv!3Xy&T~+TNIB^!%7xh$!~Z6q@X`^LD3dDBWrIZ0EvM;)GJFG%WMiZA}J}M#{`O z`GcyJjq5Jgo3s>@w4GgYx4b9U9A%W{=|E&$1(KDqX;4p=0HlZ8ksM!#^#^!3p+^6B zcmGVzi!K6-WDq6%8wbt9cj9~tinVS|D8VxIYTW$r3!lBuUpj9)${N0j|mJM*H0eEFOzVeyic z=xf9Z56M`5^5b>ux6V0gppEngw$gkj=FM&W&)Tpo&0f0&>AWf5)o#1~<}Kr{V|S`c zL3Hs>m%B7=!%v>WhJ~^GG{CTxlgh5-5I+NELElWd$y6uH4h@C;i4xvyT0qD|fA7xp+t0S#0 z%pwz-9RGWdz!AaMp}mzQU>W8z_KJ9QCEdC%aEpZ4tIZB6dFW1?8fdnD_pYwr+yaUi zU2U6KE|-;9m^=bn3VgiyEJG)imNQn*rOMC3WNqbU_!)Y!40-NMoqzuo4Wd_;I@yj4 zS+eau3q$a!Eo+r~P$qjRtAk@!j+l=|mA5QLV$iM^-?Cnf?c{ulZkT3kZ5Yq-&3ikg z$d5IqQjE&uAERi)*u&TwZNYkn-#&iSGa6)>wU{h&9FA@<^QecPG%RLDN zgiY|kw4Mpa@Fwkz_or5XGXs>J#$VM7woj|wENYcb6tl9yG`;1^v%`GuSrc!MZkV~c zkz0=7J70*PX#v~%JNEZ}y*}H!7IV90U(bLxWlWnw{z!#WYEj0VYpTZf%s#b)CGdml zf#m2jcKZwW|Nk6;Z1H-|oesa=^Ku<28Pf9OaG9+wb^2H#nSvf4-ts}kD@)5MN%P2& zs%B*(o&_8!iW@aow2FNF*2It+ypQb+wbM!daD02J`u5j;BShjNPAV6{CpgZ>tW~)v znUElfXRbYkXJg#lPzi_yb&j_m<=7JA=+F(4Y3Jiw=go%|FKUdpgVa)kcL_2u!SPH4 zkJu&ug9Dd~KUqgH{z%!8FIyuvg50WuKUeWmGD=D+&5$1o+)JE8PA)?ytMW{=7;iw9 z$`yR-!u{Uorm1Ps%vVoG`n5$;(8Hz)mKP=4t8~43O76uzv-fPpT<%z#PJ8=f#v-?+ z#<8*1Y-&}lQ9Q{~ow8cPy=$mW-Cfq!?AZY(xntB?>WePDcX-P5&k8r?wTi!}QP;HI zAV+z>m5NuNLY-_h@U^G)89J*`08Gn|UoD`TLu#rnyRVkPLo$IEy)WO+<$j3fVRx~) z5;0LCbEhzq=$n`xF3w{ovTjQTXSC-@-!ba~FfPX35Lh8uLI%%lZP$&of9Q%nl7TMd zd3u>~dB#%D&`a+Lqm{<|OZn9_+0I86IaO60U{UpeD>zJ^<4pz=}$ejU)o0O!Tk!H6EH-^gbA3bcCsjav2Pc4^gbF`ewL4`R%P zc@iuo+Jk`)^fA>>ULo++$M#?jIE>U35l30E5I?&$NybF)a(--g^P`Dwo1)tt%imTS zI-f#Vfd=K=b(IG!H#j+iFkKgPP=2mRb*t4fMlqZ0s;c_L&2jR^tDI3gi~hzLlTGp{ z_L~IbbysEY9|sz)mz|X|=`-b-OewIA1!fU!+LadQH4aO27J@?!C&g!gmWXsm(mv1U z|DX)T-S8*ofG+O1Q~1L^kSN#&tP&V^5@`vW!Sw^2)kp#y4$?2`H{=L+boNw3p(%qpXV{Pd29`*9s%yB=NWXL5^8RNwr#5 zPw)GTjceITpY0hHf0Kt41ji<{%?q-%aHw9i@>>N2D2XHDF6OQwBF8hY8xxFq`YnHG zM%aVq7CE9Di`D~RpEt*k88_9LJe$257gnO&Xb3XIK#0 zEo_V+pmz^(f!&$ZI&RYGgj+ichkkR@lrsL<4sYz7sl8Jw^(m5gE-+{hJplC4`@RMT z&ctMdWKVqTENMIbl^7JEcUv{fsJf6&-(GW9j$hH;YRmr8F)-+zBGh&ROY#7XJtqro zw?ANmf?T?#zj2wE?rS)bb?uITM$!|lM1?s;K|ywEuOi4n*g)g5zwRe8z03G$cdW`o zUOO0zw)UE7R0-|Tg>d3_skv?2E1lP-A#=MI`WyRqOhL`{A+ABb)GB{{ekON;SkhdY z@7%Oa45-Dww`b(hkCYorK)=@2hbQP*%gt23ck3UQ+44fJ(a)(x`wLaWntk%!cq+v! z3=N=2A%hq<#t}AWzctmJ1o~d7Zk)QWI5oLZ z-VWc5VSjuTP&VQGRrY(|iamFsyZaZ_%jpsO>wIswesw3XL^10EoPG&W z(JQbkm0Q`j_Fgx<^EPUxkqZ^T6(IrbUgY5$CJsn3>yx&nlR~hE!Xa^#6qH7gi}k?+qe7t?`|(l%UUc z6s@JVQ}exgbo8pmK+1?pyLDT0T$x8z(`ML;hs6ZsZgUYo{rb`{LDQmjiLLr+vigpq z5TR6e1euy9xwbaFWU9witub!1N}g*2c5e=7wS8zA8dwgmG@WPy$RWMyMhnhH%BKS= zA}6!Qu}QCEd$PAf;!`W7atyoD0|TEB3K+^1*&XVBDTL(c*|7lph+j>ftAL4tfAY*k zWIW7jOnVtS`q|X?ayA_8?YD~5mmyu5qo2iP8OEB=XD$j%c79~iQ`yEe)^bPOq6wb3PlcDTL!#YTgY8<<=tj`m}iA>iULm40hwR9 z5`65PX-i={*@leI921mwC4K-we0ZdLUx-l-4u~QaT&HOALUS9Q042JsQtBIjye@WB zjh*9h#^Zx$09|KbUFPER)0(oWi2{QET2#pjB=mmlGm+Fm+QWA0ca2!-Aj51(@EQHm z4|Qk9E}q=*vUu`cxJF$$TX+@99L&Kr<~0tlv22!}%9kQmpnt9%X^n~y>Mooa8-$;| zLBWPp8SO0CXADk<@&I+he;#@>G3j5byIp^lbwy3Ag*WA_D2Z1Tn`rL&2 zw^aucVIgrJ$J5pKwrjzk7qBY&a5Gbo&AW@#H2!SK!P$~C#+0OV-I*uduDcjzbuF+z zIT(vj9iXoP+Z@e;{%&%}^Jxcnl`eE&)8m#jwz$iJOpfa%@Y?CL*+Q+3Egv+GiMyF7 zc%vh*<^woQRD$;PqaA&##zMGT?$*nlTolF7h(A2NjyKY(52j`9O1~#=c9oVJLWMog z$mpncGRue@EIfQa?(bjr=jyi!;9@<{)Ql)0Y|Qmf*|3PS@v9D34K!ZtWp_}9Yq^N> zY^_i>*D)x`KI*bGe&axWlKOV4=`s1?qnFU{#O>3oL>3H<`L8|cPQP)rGrqv&Lih51 z;0Ed>_!D+MPoH*ZIq>-E?>}-5E5Ft19)}1}-%dZY-*Pa1V0K0y=l^x1E}hfF1^Z^f zUay(oA{yoSN`S&2idKf#&;;5qVRnV%HE4lI+R(jno23}}Y|+gOaj9o0Y{BRN%JHt* z)3eT+raGg07%W~3U()5w>}ts-t z{?efK3)B&gKymV=)j{zE*KG@}Qsz%d-9LwTro7gdFR95>%m%0oWdNM{cQ1P@kq3yW zP|3)Y&t-cXNK2WVRs|*Wuv+eBo)W<5ZUC@``rk5>=c(@k)sd?5G zQWX{5+fJUp&h0)h7FExux3s2}4d-2uh(EYn3q_d2bWyd`t%OAKWy*jGj-m5;nHf_| zJ-eO{G$7yiW!%yWmltfFMElN0?j$wf?VMi~u^qLE^G58ct+5wMN|i=|rNOtp#DKuhvhF6>>(x*I z`yUAcUFfDiMA00mYk5-HmoVO?#aPXn*n6%kSbx zZI&qwF65$#_g$IY&>fS=ew{2eY@@m;{Upls?IDkY|Hsjt>w57}jX%C{<4|C;3U_Q! z2<<5DL&6@zPycZA=pe7MCiJGgBkyPkF%#Kjfw~cpwIb@S`%<0WVbJ_p-UvpIz^;$U zv$Rr*R@&7kjfI3Bjw01w_m+Hw!x z=k|Ecdb$bS6g&H-MD6R%hg8`UC;GL~ItNz*Ri9S$14>S$tS_`}Y z8bn^XRXH1jpK%<$9Rp%NvB`y90mbC49NhII=_;SQHPluK$APrN%A$j)^D9x?J4DOc zsJ29j%GL{*E->o+4FmXxZ_haG@E@@^O)|}cUiKn8txCs^B$2Yz3{~g)?b~2Mcr|Q+ z@&PlRf4bbs0>3i77hO?L6AUTgr*-7yw2sNs!u38qqp{tW}EDxwqHS z(hz5=akoQBBmR*tO9AH@tOc;%y#1AWkkZJfH244vmoc%tQi!3mSI%Mq@yryP&zFux z0iHqT+#u@xgya8l&!%gj5)OV&DwbURC+uM;M%Bc_mgxX_oLxz>me==+K z*`Jx}O6T`Wr6n5<4b?7K7GXvtjP?8hlp)vW`;Ou9x7(Jotbb%bE{_Q&-pgigig&E{ zHowq);yhh3({88bMMuR@_Hu^oMUtv0O@uOe-U60&m#6pl?XRtbjj5iMoUxM||I9iDBMBCvm2SH!yHQvd117j9&q@v7kS9OW{uJ zUA8g9_wk#uI|N;X-RQATgk|fM=jlmm;k6`h%tf8UTvj$6C+pkrl4deQ(6BD8cRL3e z$^hx)-^JL<8Nu-0Ty!x0GfF0Gb*~Qc=7)ovgqz}+4BPgSpj97iy>7m^*Z z3PRn8-43jva06pqPp3>byo}AZL0omB68xD9p8mBWM2OBQZExz_4if364}v4Lx_p#q z$RtN(jK!1gB^a7%lb@Qt^K|tZaYs&(uA)3_T$Z$h&DrTEZ|(3zd~hhB8o(~I`H|k@ zSE+l(joM)o^$843pZ|{xDZUfwyNdHvc{X#=CqVXecHm_*Br=4dCP5(ctQMhwFdw{R zhxar7Bq}`ZaLQMpN-gT9DSRs`GpVzZc=*KmLKS&~fY;~0+bBhnTIfz7^RU%12=MQL z>dzss1~8*$f=v-4rs7C}mG*Elg9H6d$N(6&kq)YPF0k@J`a-uCON~%xuK$P4PP)zQ zMCw|P!`{O%s}~l*C7GkA`{vQQCEXskBdr3 zD8`vx8fLNPy}nwWpDch<)um$IwO9|x$S0U-tOsH<%Zi|VxY)W&`zN`MGwtvkl+M0 zO)#S04ws~t6?^-o=|R6PSW_Szy_K{Prfm^_B`H!CPKPb9YRl8Yc)W`O^4*fE%KH0Z zZKp^uZPo+t0_l92)A`ux+svR%EH9kCG5p!n!a4H_s}vvexDzj*I$@Y_w@kR3uS)8e ztS>mYGGle(P!h&~cp@L4X}LqhH(uooI_vff&}@&fk0ZVm-9m>;pL9@;^t($Oll+)Q zhkyFyhuB`Iu612pYu2v(fO>nsR0950-e0JcsisYN(rY8a-`7#;u;N@diJra1b{bWI zBv=GXXIH3X3m~nM)kcohkkUAtw?mM==b7o@Tg~RDkLj|fB}`cq4PseMO8WVnPV%W zf83=Uxx%X7M`Nl0QxJRVzz?hnfBW5$LU3Yuj&+l0aBeoTM&9Uhp z&FNPwNWBB88+qGDxNP)cq|y6#)4MU$&bcq8H5MvB@sGbL z-6g^Uw)71wc;;8AX9yIH4eGtLya6O-dQq0#UtW$GR1orRq^})nQvCZ#32S(0hp|}Y zPMMD!siF78oK{$yYN-s(<$qP|_(Cr1)4uMKV_QFDVBCQ{e0}5lh2IWn-7M)TY6>~A zQy_tEG)9A@#3o%y*$&jYCluw$HVyeW;kqsB$sohuPZCI@*b5BP#)v1;bs5SOwf3!<6 ze7_`4B!n&=7-Gy<;)|W(5k;2^Ynk(>W&YS>F5~*UJD1#lUZb54xKoFC*aor!iT=`( z?0jo$E<;b7?&uvsU34ecz3GU`@Tes%7G57tEb$tAKK9hx=vcAS?V9C?&881MW^L)G>&l}mQ?_?Cv+W#I-K+_TQh@G{PB;XjAUY7%q2BsfL3@x<~I~8*vaqG1F zY9={~ zOYWF;UA0YC+f8`!IHf%ipDjKg!0X1yvb@;3!g^Mk zZE$KAZ~$IML6Yp+E}7p?7NTD7#_|N_Ht79;oCbH9-Q<3@d_F4ftE^Z^JnMNVnvF=z zIz>6da_@V~MP*ReE~IQVwppBwPXo8f7*v;ntA7#`4W2oJC8tP;d+1hvz}E*~D|PgI zEmtK;t>ZAIU2ZL&z53ZK{MoU&?3bn^oWNdyGNzqj9Ht*J)K54O@bonrdElQc0A2Mb zG^?N!{vyX;3Dy~A4>ibP-cD*f!|Lg9Rcrs9gL5j7HO zZ%xn-Gn6oK1G(ida7nKb^AlY*eDejPBbCLC<}C9YN-Jru@@=2RpScFRP6|=)v(;>F z55^Q{OMT(LVDn6BmFS=a9Z}QFc!p~NG@lt$1=6GwC_jJj>foTxEat$@g}?hv(~e<4 zO)40GKfa%3-9JtlDcV@w4PoH~JQktLmtpfg%D+_W`j3UmZ$&>2=rr4_5#q~LPT$^F zYI@bji92*j7tOS~>u%So3La5x9E*q|7V3e9F^g|Ql8Aal<@R0i0NB;m`YmbgxnVhS=kMpK-dlm4fg8Usyzw{7`XxCC z0INAp;g5SGxG(eJ@*_SNCTtrZuds5CE0Yc+;(`y!*yY_7gvz;*@3fSqgvy4f`9WZg z5Ri(K)mAgI)xWYyn+_3L3tH>vBpzeKnDm2}Gy5OTiac40Vnui-6h4KMLR1aSTqTCWQd_DD?|`B34I&475!Bn0w=>uBMhttPWX|>e|9-$zd|k4Dpz!2PWThWE8;Me>0~M%at-2e(R+F6`8h@p`Ped=Rx70%kYdl z>OheeI02xL5!v16P2Vr|F{mB=dyx3Kq6om%1pWF~>XFb5FB9HYl~|eS;qvmSrq$cB zzAr3zMk@kbbnXmy9J(UB&N<{b^r$s=cfY?A^Y@#HhRE6$(f}B9wpEG1p+IHc8U3eA z4Wt8r-t&Yxa^&Ovkb)$;%i{384b#{Yj8TPcUSrwD;V$(L4?AQ_ypjrS-~~95dDr9x-FoPW5dnzeH>eZxowLuR2CjmX{;rGKu!4f zpDAc+qX$slQi+rPHaK?|I>a*;Tx@PsdMGBLr}m4X?*}WUx`L_Pv0>r)0R!e-j!Moc z>NBc)@5cSs>gqGRo(fqz@h*|cm)Af4J=nQ3oBV1|2tub;O1}WGvdYZ zKw?i)_P(*gTY8DFghTxtg7Vv0h9}Bk-@K)m)o0=OrL7@GKYo`a{iiI!`oG0zw5L?m zhD*NJsmH#t1zJ-8M($k&ya!(Zx8T6@$1d#tI%;F%6Rl=U2?Z&ph&Hc)%de-#$D_0S z2lyXsN|i?q;2tOZzCP}L=@+2P@a{FX9VQYP2}o)ZSD6VC8hkGC61tTAsu(Z2fZl!q z%?A6D3O^?#?dP}m`>twGyGe`bSbS#Lh<}h-wu_l}B=fER_-|YIqj~cu;_~Vq7z7`Q zZ+Ak5r-{}z*ZWw`TnAs7`=lM^^$Dq;_@3g#`;Bwff(7!!J?6)Uy4BlGZMOoT6b*uo zkN)KHU@esOyXNoH@5>yynu_W?hR!@0+f?h#%_e@P&HI-J+na=Mvht@3)XSW_u+FCy z1*|L`na!WK?;UKrwY!k#H_2`2Em+G$wP`(}CkonB9uCa3g*Yi-Fr>4Nc=bBGP@(&054w~a* zrFl=;>RaO?4}6V7*?{)tU*XJzXEzfowZdXoKjkgzsF||)`r6$X4I-;_B7tSUx;bKc z{G7oT_pMK9Er=~_rvxs0TQHO!(0BBa@E-ZQLFyMKATbL&C5;vbF zBp4XjE9_7b8snn|rxg0YcjJIwPJ@QTftNg?Y{&(dmFEp&+m%Bx2hDvT5b?mp{*7YE zo=2I5p$Y#8!~Vi+x?`ICm%_sWX~V;~)5o^KtxCKYkUuM+2zEJ#wqJEX?E8V*fN@~R zFD0K!?aeus#MNW(gC{PP9|JUj8GXr6*-eOmo}t&IY>sO7?{)12HA z^A_hux!*f$32T23zsFV^-H}+joA;WH`Sz&jjrK;W0C`D0B;ZZ)INc^njVbu}@6FU; z53=EQ3Eb=SV@N$O9kCP3iGZt*6_Izwz z8`f#dRmsaFv&-zO?9p_^>+s>So*) z&+*5G_Wi0?Z6QeG%)88+3hd^PnZ@$u1`EZs@nYf_?|TYxC;oB~WtkoVlJB$EGh0hm z8D>9tzKD0782t(H&)f@|QseDo#$F4ezdLs1ec=fp=EVvIgD^(Huncw)HZ&L@ zYqK&DAALXJ7#s{M2P))Go?rJWM(u*PBs3j-^bHfshir2fN|+0Ulwha)EC2gvU*PNm z$RKflh|d6-io^XmFcRuM8Gr6R{re?$2OJ5aT6HtgUd-Y8LA9EfVQAuzrJ#l>@~plS z%rKEHp3?sa9pO{T8>t`7(hBrw{?ko*TMhK~&iuQ#7b_LRSFT6&?0p1;FC99fk(whf z1w`c#r2`M^6&PNP9p5pwi!xEYlf1ck$pK&3cI#c+mJtD4h$6YCw7+avs(McWV)K8F zlN*q(O!}8>9{_qT)+`Qg2 zr)d=q8z8hpbrMK#x9EfisQty&ych)uvAAOq^WA}*KOgpH@o{?cRT+#@fK!i8d0dbU zAP*U5Q?^#dYFGUF$5+8% zjahnyho+J}E_7$ZDVMB66T<%Yg)rw|{AvgBargoCdeZ28^IjC0Q!X5>Af5!(>KlF;6v-&*Uc~- zH~d2khj2CbIQK9(f2t`sU?PF9yh8O=aT-P+1>Uz0UqoTryu5798YqpeHb_J{H`=~4 z&lG^SG^3XXr60{b>O*`i&9Z-YYpWdc&s-yI#sJhvJIzXY&@dZ60t?ZBwO5*Z+Nr8% zBEmkinSp$C8cy~<@KO`|@?i*Z52_N>l+k{A3uwfeJ7$>67l<6d3q&2)*L2}roP8ke6TWd-Xs{rM&Sa`FCEl4y_I z00I5&!bzR}AAY2)q7IVC-2Hnlc<_~M;m(@6lR~BV!l3b|EpCx*Wc*3`V4=ySAn zzJdh;d?3lNB>|m@POE+WDU>9fb}&GQ$v`Bhsp&)gXZL1%H@FY^b?f}OWu9d&Sf|X_ zf#8+&e@31AuP*nLJXBN1vAu1Cy18Ys6ebBkq_Ms=dbkLTMof~@J~K<1BudQ~ZB1ve zq2LkG(P!Dx(y||E7Ffpj_Cy(f`$+_U|@g35{qdag$tl!EiNvQ`J zk_=)Wmeu*Cm;E=;yZ>rBs%(Bs*$=M`h0~@@pl;X?`KqgTWwKL!Elhgi6(5{13tG+* z^KtE+vuJ}PsZ<>dC=j)>Rwg$owcvWlpymGDP~V5TiD~_-CK&kFgJWg$pVG1$cZUt* z|JU08{OE;6jHMl=dI%Mj*oqLy%62g?%&pKc&N^6~Va#viSwd*WwUc#9W#zA(V>%Mc zWn-`{bb&x}Oj_j-NiXBe?Pih3@~L;jf~CH<1t*LMb)VoyXoT(gdf|1AgFD0Ju;itG zGq?VSM74NqWj#wEp|Cctw|8+Fz!{PR*b00PJK(66UuUoICG&X-?pS%`!_0ffeqFot zPV|Qv%w_bPh?Y5-+cIU1>3f`GvVe4>e(`E2#R}MLg#%{`fa%98AFYW>xwI3Le{;UP z4N%p_gS!ibsJGepRkh`~p1}>bOU029FjmkHI;V}LYml(&ckMfd_37Cu`O;a=k9-z7 zZM)g{aawQ?Qd$?2i+-K;>*>!0vN2NBhv%N(R>XDYY=7*EV|qv_Yg7#KXeS!|=IJL= zr2>>x&Kgd?ykQMwKyB5I`VCNAZ6gwCwD10hTq)z28n z%dKM17WI@;AmOhH2;S-pP_YC+=%XgcB+^QxyC%4a{H611FVp5Gu(l zBX1|!G^MgtFbOsY>U|{rZTGS31<41X`8-UU=;gC=T2-LV8gWq9)oeH*mZ@XK1O)>S zL)%-j+KBs!MtN+r)c?{=|H!<&L!B<+#vsDVOT^qLIu&V&>~N9pM53E6)}!35Cw)Jt ze_K<1%yx19LB>#z?xcC?9B>NheNcCIE$oN@(A6Ah)F&NWKkN~B%1q<~=-D@7v!=ha zO*Xp&g*XwOmEZx+5Xk5eU5~&?yL+x}&s&cCg=*9Qu=qCtoXcx#_d=m6j$$;n5E~|cP#5YP-aoQKC8g8n+8Jmldc}o$KBv;IHTO~KBMQ{ z(cmlMOqXq<{?Wj?Se*fFwue8H?==`{iaM2NOcZha`iPSssj@Ht+c$A>xn;SNCa>M| z$ed;Q`0f;yQD*;xi$yKLk%LO#*qI*29o+qEne$Vy9LRK6d*bu?pf)Po5 znqV?MGQtOkU3*LP6juHoS>rO^QiU5a-EuJpf@x@G&viZWW|ew8w14Q%B~jVh(h-cP z$3W&j+4CBJWGdn}lmU5@OriXPyBjv+DexwW8LY*5p|VQV?e@cTx`f*HiO^Tan)>Yu zO?fR&Ha7c~EuhDKPN~)<|M?6icArIyTYyL(x&M_KoC zAC(m#Ls->>1U>dYGvub8X_J0|m)wNcTFP8yXowz_Zl_gw!gpH~e?b{6CzvSRV0C zq;nKfq`wrnq{OSAZ;Qnwz@SqzGi>$pY~PKZol#C5Oz&Jd9^k8#MeNFt3_E@DSb~A+ z$kyt@egH804HYgn<8x5y_I$laTfL8RAd&Xr4HCI+I9@MO&I|Ji(MyC$Fnkkg@XJUY zv}jJteS214uXm-*YZt%)?86R6y;TxlaF#hzmCY;*EWQ0r2hZa|#^}6r`e>FaHbDvo zAP-PCMgg{!gJZ|8RV>IA$miGx4;Vb!t1FZ3Ws51nGu1eea8c@=-Rp$i5LoqZ(Ag$1 z;_|KHu|B`tSEG;POBoL;zlq~q&n72BZVuG?u@s4Pq4C>neb1e=r!zR1+ET zGw0TPayUA9>Kc#P)3V$9tRnu7Rs3nhwsjCbB#(!>|MARS049}C%gWpFzxRTZpJGra zHpzO;uM?s7tt#h?b?IWeudj&j^;rO@>b&R$r-Y^soA}Hp!G8V-uuXXX{{M}$O&*(IpS>kR0ho>b$>6h@7Qrf6tOavL7waE^^JuF2_gH`)L62sSIi(}i?Pc{ zS+k7>qxT-pX+5s%_s8$gARCRiM zm~U;%S?jrlcKLIp=LiW3;J(!hZ<2q#HYy+ndb~S^yMirS!toJ%93L2R$Wq*FU{Ly< zz6nHnqvqA^BdOQYgf_%cQZO!bDPFWiLinwe5V&r)2iAE1$&)8pKRsCStPmJx4CdZl zqi6?RNaj<+YVp|&3-b!^V_P#gg3aQbMr*q)%JO7AZLW3Pq_tL27;y+RGzs~A3VUb6 zXgZ0VpOldoRPnfa!_KhL!ljBk_?tZUTSEp--@BWupHB%yjscWk;&|z)I#&qmNqpA| zxmzVxz#?Y>jHXg(x&hTXF~0KpwP6e=z=y^1!E6#3hRk+nYgLI1dc?lYW6c>kMq$AS zDRPQVOk|^N#ovm5mUc@CUFQ8)n2?1kzzQrbX>@7~YOQ%?!H7w+^~f z;MAS3rdoDPKKhhgapBxaohU-nTbq@U(1|)5&TWyJCL4xpS=BS-1Ijm_9-M{tka_Wco+UE)OCJPJ5+R9!y%7NkzQJC+HV%N6 zTqPs9_j&sC!^leKpVF9cT=HA?QoNWa3W>aR%iQXaq&PlN5Vu64yjsEcbgKj->pzY^~<@fz0}?HxoQ8FlRT((v4?6q>Wv;sHGAV zLqi4;l4;sX85e5Tl;_ZUDk`riik9vB&%l|4UzE!kxl;T(NLKQMz{iPo zH@ayLs~#rC(Gb$(JyP07Hv)L^E_Y61PJWx80(^c94cp9l1>Nc~0WEFNsX`9afBHDl z>{=8!xYj^-&9btzGM0wz*=GSSk416PneuCjqE zXM8z&?wDUHFWytX`tEEV`lGuqp!1C0c=4lp=fRnfImbs97r#Z-+@+~xqZ5Cf;G2`j z+jfZ>HFEk*jRdS38*sn|6-&!cLdd52l>T2qX~;(O7a-8LyXBdw=uLB=rf;G?Pv0P*}2jOVrX$|Wt0#P?2C5&=`a z&)sws$`{hT%x(`v8sS8wYRM$Xl^3SdUdo7Wwm9e{Tq1mqGX)pw=C71bo2st69{BiL zbDbDA$uh+MShtq?LQ?ZwoH>N4o*rHSYft{sE6%* zc)^5Ou3Gb0PmD&`a9Biz^B^Fs&0wP=@aelhlY2U-(_V^iHKGA|bFAsDZV-|^|8W5$ z5%B4?<-?jm)la$nQF_8JFs5WjqcaB=*2RcLphBr8K`+W~E!lG@oco&ct(be0x8WKb zVT_ex#?^3=aL>nHwG52(MFM)tA0ug6+&d<+qS%2Wp z63MAv`@2vyM4oCIvfj;m*&~8n#8$%6q@!jPsRb03^!-<@hQxM}moV8(2SWoDsd|7E z<2VW_#sPpu`Ny^4aiO(+sOrrl#MT72bSP89b4IXZ^pl>knbI8@*nxa4Oe{*&c_ALT zRkW(|&+fszXShsuj)7B&>~nn~k`!4MTE|bR+A!|>w29Xk{11~#ZJnf9&qO%wuSv1O z@tL#o*e(X?@>zw>WOje2i2k)(gcGXHz^Y;PUpMj?^AO>!GP*`4KOJ4)W6|%Oz!Z_h z;y%}%0LL6|qZK$}4awa4Yxsn8K8l8H3W&ur?O$h$uKnPke|tKUFDKO(Z7@1*SKxTT zoUrWjd|IdF`Gc<8s=7?8Rand$`BhyN!B06^^goP^KC`$Wqo*~lGm}i@ya%}OZ<9xmKyxFSOdm%& zJh7EeE4C%|SaDCj&+qC`3r(HGTeT(_dtn#%xHqi;;Be>eukkT6!surjP~3`~FXJZ8TgTtz zkIEi-4EmuCtS3N8v^XnPY<(59U?VR390KMNyF1JQ4Hk9kFs|+NitDv1lXE_XRg=dF zPV!;Te>$=I_wg2=ic~oNX7=Hjf%KT@z;O^1Mz^%#_jg5DK zA_wK#++40qowImY*I~`1qU)l|eyWC}Y{S75^N}uk8e&WL~*k5-XA#CEY^tN z&D}eGj%u}Hy??H1fqkr*mifN?$^FMUw4FK(`s7T~aY_}Jub_%<&*1B#8C6!e@{bJI z7D!qM!v8~Gln37i@E#E4{v-Zo=NS+bJoIA%x8vX;2!8$F$9*XT|NjuvhyDmL6J+qx zw^q>)9e=t{|C@5rv{Ncv2RLJ$Rad|$XT8K7%qs+;SVxOw&q+wgT`RE(r-Zo2$7!v{fX=I1N~Uf zDd!kzFa+9I?+uC%MuqC%3DMSRI_yX6>$n3w9uJS>p$~3Ao|pZLcoEKLLk@j@tCW8>6w5~LTaX9+RW`I!wFYhscW~{^FF05 z3R-kn4ta0ca{kn8{^>bEj$nUrAt3}wgECDpkrEN0N0fBEu>yRIXaAm$@yYOLj1y?> zq{71Gh5ZusFnsQ?hn^H8D!qj1Pn<0OII2PD#Id_dLJq8@dr(u$Ewt6MSP5iCM+pyJ z>uUp`7RlQ~Q@#*yYLg68GavbFXaJq3Zmj@EDb>*xu9Z0K>tJLMRpnb?c}Cr$LZqs14;W@l23F9P_3fz;+nyveEL>@ z#5q`aaJz2FciOPI$Vl{7SUgvypA=m*yB|UQjzv=D#_15NH&)0b9rX8`4h;GIN+&z! zp=r<1MNTT!idipp?JuclqCHK?1pGTnpRtXX{~}%a7f=|cXp`-?Q7pG+Nj#?G@a{Vz z^a&t<)qMzxv&>%!Ch)!xG<+sx6GSUtB#Zht5?uV{_%#i{*gW)#o(B(LF<*2FbeEws zr%?Yc`V~#xdGOs!X#S21m$ZI{g3}xVrTd%|PfYRPjX>t|+3^K>%Km=TV_5&CQ=9tD zL(sFf+{haA+e9q8raCH#Q9&AlXrHQ|L+E3`5c6jf=07gPOaquRWOf%P6RiT!6<<7J zdnlC^cC?t&4DQ^Y{}Cp{NL=!k94urcrsOv~FJ)(0R!@g}zyaG&CD^zc=(ed*Aq&w) z0Y``)Uvv+vg<`?M>*d)-CsVB0&_cm3G&%+ zI`<$w4hGwfKpEf18$1qEorw`eIGsS>&E@%#j_UZ#eqI$_5Tc#R;uH>ieQ3U%VFDDv^XxjvGdt+q}I$n${QA~6${aQ7uyynV7^*kLWvg4p z9__pyxIoJk&yUC$^kIm0P)u)&VCG7ps276sH3}4G7F~U~RH!16?R`b+6dtXji$UK3qc?j0wyESuJZ=hN5Kzw|wj{zYIM`!}K0{pECD1(yDkSEyCgpMezz=e$~ z3Q6gG|J`%dT#rii-gJQr<_=MP4=i5_Y>;YVN+!PO5b9D%BzJrZxdyAT;j2KAFS*FG z&8glj0Ryjr1LlTFZ6BGz-Dp&62U%0CKat>cg^n#B5d*84{b1dCd*>}vkCynDE7lMC zyC^YIZwdNahTpawPfpYYqHX0A)o13?sPFPcsqBDKL#g0Y7%JCw;imTq;IlQTEmMPy zb2sd6*nnrE0J?&z)Q9(G@4ZV8mOcL00!+7<|6Sl;8mRrBM`tgG F{13}#uKxf4 From 4e374165495fc219a31240f78057c5a64a9b6951 Mon Sep 17 00:00:00 2001 From: mumian Date: Thu, 2 Feb 2017 13:03:44 -0500 Subject: [PATCH 29/90] Acrolinx --- ...t-apache-spark-jupyter-notebook-kernels.md | 4 +-- .../hdinsight-domain-joined-architecture.md | 32 +++++++++---------- 2 files changed, 18 insertions(+), 18 deletions(-) diff --git a/articles/hdinsight/hdinsight-apache-spark-jupyter-notebook-kernels.md b/articles/hdinsight/hdinsight-apache-spark-jupyter-notebook-kernels.md index f73eb436b85b3..d64462a1e2a70 100644 --- a/articles/hdinsight/hdinsight-apache-spark-jupyter-notebook-kernels.md +++ b/articles/hdinsight/hdinsight-apache-spark-jupyter-notebook-kernels.md @@ -20,7 +20,7 @@ ms.author: nitinme --- # Jupyter notebooks kernels with Apache Spark clusters in HDInsight -HDInsight Spark clusters provide two kernels that you can use with the Jupyter notebook for testing your Spark applications. A kernel is a program that runs and interprets your code.The two kernels are: +HDInsight Spark clusters provide two kernels that you can use with the Jupyter notebook for testing your Spark applications. A kernel is a program that runs and interprets your code. The two kernels are: - **PySpark** (for applications written in Python) - **Spark** (for applications written in Scala) @@ -112,7 +112,7 @@ The statement above does the following: * Finally, because we used `-o query2` it also saves the output into a dataframe called **query2**. ## Considerations while using the new kernels -Whichever kernel you use (PySpark or Spark), leaving the notebooks running will consume your cluster resources. With these kernels, because the contexts are preset, simply exiting the notebooks does not kill the context and hence the the cluster resources will continue to be in use. A good practice with the PySpark and Spark kernels would be to use the **Close and Halt** option from the notebook's **File** menu. This kills the context and then exits the notebook. +Whichever kernel you use (PySpark or Spark), leaving the notebooks running will consume your cluster resources. With these kernels, because the contexts are preset, simply exiting the notebooks does not kill the context and hence the cluster resources will continue to be in use. A good practice with the PySpark and Spark kernels would be to use the **Close and Halt** option from the notebook's **File** menu. This kills the context and then exits the notebook. ## Show me some examples When you open a Jupyter notebook, you will see two folders available at the root level. diff --git a/articles/hdinsight/hdinsight-domain-joined-architecture.md b/articles/hdinsight/hdinsight-domain-joined-architecture.md index f6d9adec7a7bf..531e1ae25a19b 100644 --- a/articles/hdinsight/hdinsight-domain-joined-architecture.md +++ b/articles/hdinsight/hdinsight-domain-joined-architecture.md @@ -20,7 +20,7 @@ ms.author: saurinsh --- # Plan Azure Domain-joined Hadoop clusters in HDInsight -The traditional Hadoop is a single user cluster. It suits for most companies that have smaller application teams building their BigData workloads. As Hadoop is gaining popularity, many enterprises are moving towards a model where clusters are managed by IT teams, and multiple application teams share clusters. Thus, multi-user clusters are one of the most requested functionalities in HDInsight. +The traditional Hadoop is a single user cluster. It suits for most companies that have smaller application teams building their big data workloads. As Hadoop is gaining popularity, many enterprises are moving towards a model where clusters are managed by IT teams, and multiple application teams share clusters. Thus, multi-user clusters are one of the most requested functionalities in HDInsight. Instead of building its own multi-user authentication and authorization, HDInsight relies on the most popular identity provider – Active Directory (AD). The powerful security groups functionality in Active Directory can be used to manage multi-user authorization in HDInsight. By integrating HDInsight with Active Directory, Active Directory users can communicate with the clusters using their Active Directory credentials. HDInsight maps Active Directory user to a local Hadoop user, so that all the services running on HDInsight (Ambari, Hive server, Ranger, Spark thrift server, and so on) work seamlessly for the authenticated user. @@ -32,11 +32,11 @@ To achieve this setup, there are multiple architectures that you can follow. You **1. HDInsight integrated with AD running on Azure IAAS** -This is the simplest architecture for integrating HDInsight with Active Directory. The Active Directory domain controller runs on one (or multiple) virtual machines (VM) in Azure. Usually these VMs are within a virtual network. You can setup another virtual network for HDInsight cluster. For HDInsight to have a line of sight to the Active Directory, you need to peer these virtual networks using [VNET to VNET peering](../virtual-network/virtual-networks-create-vnetpeering-arm-portal.md). +This is the simplest architecture for integrating HDInsight with Active Directory. The Active Directory domain controller runs on one (or multiple) virtual machines (VM) in Azure. Usually these VMs are within a virtual network. You setup another virtual network for HDInsight cluster. For HDInsight to have a line of sight to the Active Directory, you need to peer these virtual networks using [VNet to VNet peering](../virtual-network/virtual-networks-create-vnetpeering-arm-portal.md). ![Domain-join HDInsight cluster topology](./media/hdinsight-domain-joined-architecture/hdinsight-domain-joined-architecture_1.png) -Prerequisites that need to be setup on Active Directory: +Prerequisites for the Active Directory: * An [Organizational Unit](../active-directory-domain-services/active-directory-ds-admin-guide-create-ou.md) must be created, within which you want to place the HDInsight cluster VMs and the service principals used by the cluster. * [LDAPS](../active-directory-domain-services/active-directory-ds-admin-guide-configure-secure-ldap.md) must be setup for communicating with the Active Directory. The certificate used to setup LDAPS must be a real certificate (not a self-signed certificate). @@ -51,18 +51,18 @@ Prerequisites that need to be setup on Active Directory: For a cloud-only Azure Active Directory (Azure AD), you need to configure a domain controller so that HDInsight can be integrated with your Azure Active Directory. This is achieved by using [Azure Active Directory domain services](../active-directory-domain-services/active-directory-ds-overview.md) (Azure AD DS). The Azure AD DS creates domain controller machines on the cloud, and provides you with IP addresses for them. It creates two domain controllers for high availability. -Currently, Azure AD DS only exists in classic VNETs. It is only accessible using the classic Azure portal. The HDInsight VNET exists in the Azure portal, which needs to be peered with the classic VNET using VNET to VNET peering. +Currently, Azure AD DS only exists in classic VNets. It is only accessible using the classic Azure portal. The HDInsight VNet exists in the Azure portal, which needs to be peered with the classic VNet using VNet to VNet peering. > [!NOTE] > Peering between a classic VNet and an Azure Resource Manager VNet requires both VNets are in the same region, and both VNets are under the same Azure subscription. ![Domain-join HDInsight cluster topology](./media/hdinsight-domain-joined-architecture/hdinsight-domain-joined-architecture_2.png) -Prerequisites that need to be setup on Active Directory: +Prerequisites for the Active Directory: * An [Organizational Unit](../active-directory-domain-services/active-directory-ds-admin-guide-create-ou.md) must be created, within which you want to place the HDInsight cluster VMs and the service principals used by the cluster. * [LDAPS](../active-directory-domain-services/active-directory-ds-admin-guide-configure-secure-ldap.md) must be setup when you configure AD DS. The certificate used to setup LDAPS must be a real certificate (not a self-signed certificate). -* Reverse DNS zones must be created on the domain for the IP address range of the HDI Subnet (for example 10.2.0.0/24 in the above picture). +* Reverse DNS zones must be created on the domain for the IP address range of the HDI Subnet (for example 10.2.0.0/24 in the previous picture). * [Password hashes](../active-directory-domain-services/active-directory-ds-getting-started-password-sync.md) must be synced from Azure AD to AD DS. * A service account, or a user account is needed, which is used to create the HDInsight cluster. This account must have the following permissions: @@ -76,11 +76,11 @@ This architecture is similar the architecture #1. The only difference is that th ![Domain-join HDInsight cluster topology](./media/hdinsight-domain-joined-architecture/hdinsight-domain-joined-architecture_3.png) -Prerequisites that need to be setup on the on-premises Active Directory: +Prerequisites for the Active Directory: * An [Organizational Unit](../active-directory-domain-services/active-directory-ds-admin-guide-create-ou.md) must be created, within which you want to place the HDInsight cluster VMs and the service principals used by the cluster. * [LDAPS](../active-directory-domain-services/active-directory-ds-admin-guide-configure-secure-ldap.md) must be setup for communicating with the Active Directory. The certificate used to setup LDAPS must be a real certificate (not a self-signed certificate). -* Reverse DNS zones must be created on the domain for the IP address range of the HDI Subnet (for example 10.2.0.0/24 in the above picture). +* Reverse DNS zones must be created on the domain for the IP address range of the HDI Subnet (for example 10.2.0.0/24 in the previous picture). * A service account, or a user account is needed, which is used to create the HDInsight cluster. This account must have the following permissions: - Permissions to create service principal objects and machine objects within the organizational unit. @@ -89,20 +89,20 @@ Prerequisites that need to be setup on the on-premises Active Directory: **4. HDInsight integrated with an on-premises AD synced to an Azure AD** -This architecture is simliar to the architecture #2. The only difference is that the on-premises Active Directory is synced to the Azure Active Directory. You need to configure a domain controller in the cloud so that HDInsight can be integrated with your Azure Active Directory. This is achieved using [Azure Active Directory domain services](../active-directory-domain-services/active-directory-ds-overview.md) (AD DS). The AD DS creates domain controller machines on the cloud, and provides you with IP addresses for them. It creates two domain controllers for high availability. +This architecture is similar to the architecture #2. The only difference is that the on-premises Active Directory is synced to the Azure Active Directory. You need to configure a domain controller in the cloud so that HDInsight can be integrated with your Azure Active Directory. This is achieved using [Azure Active Directory domain services](../active-directory-domain-services/active-directory-ds-overview.md) (AD DS). The AD DS creates domain controller machines on the cloud, and provides you with IP addresses for them. It creates two domain controllers for high availability. -Currently, Azure AD DS only exists in classic VNETs. It is only accessible using the classic Azure portal. The HDInsight VNET exists in the Azure portal, which needs to be peered with the classic VNET using VNET to VNET peering. +Currently, Azure AD DS only exists in classic VNets. It is only accessible using the classic Azure portal. The HDInsight VNet exists in the Azure portal, which needs to be peered with the classic VNet using VNet to VNet peering. > [!NOTE] > Peering between a classic VNet and an Azure Resource Manager VNet requires both VNets are in the same region, and both VNets are under the same Azure subscription. ![Domain-join HDInsight cluster topology](./media/hdinsight-domain-joined-architecture/hdinsight-domain-joined-architecture_2.png) -Prerequisites that need to be setup on Active Directory: +Prerequisites for the Active Directory: * An [Organizational unit](../active-directory-domain-services/active-directory-ds-admin-guide-create-ou.md) must be created, within which you want to place the HDInsight cluster VMs and the service principals used by the cluster. * [LDAPS](../active-directory-domain-services/active-directory-ds-admin-guide-configure-secure-ldap.md) must be setup when you configure AD DS. The certificate used to setup LDAPS must be a real certificate (not a self-signed certificate). -* Reverse DNS zones must be created on the domain for the IP address range of the HDI Subnet (for example 10.2.0.0/24 in the above picture). +* Reverse DNS zones must be created on the domain for the IP address range of the HDI Subnet (for example 10.2.0.0/24 in the previous picture). * [Password hashes](../active-directory-domain-services/active-directory-ds-getting-started-password-sync.md) must be synced from Azure AD to AD DS. * A service account, or a user account is needed, which is used to create the HDInsight cluster. This account must have the following permissions: @@ -116,18 +116,18 @@ This architecture is similar to architecture #2. For most companies, the admin a The AD DS creates domain controller machines on the cloud, and provides you with IP addresses for them. It creates two domain controllers for high availability. -The AD DS only exists in Classic VNETs today, and hence you need access to Classic portal, and need to create a classic VNET for configuring AD DS. The HDInsight VNET exists in the Azure portal, which needs to be peered with the classic VNET using VNET to VNET peering. +The AD DS only exists in Classic VNets today, and hence you need access to Classic portal, and need to create a classic VNet for configuring AD DS. The HDInsight VNet exists in the Azure portal, which needs to be peered with the classic VNet using VNet to VNet peering. > [!NOTE] -> Peering between Classic and Azure Resource Manager VNETs requires both vnets are in the same region, and both vnets are under the same Azure subscription. +> Peering between Classic and Azure Resource Manager VNets requires both VNets are in the same region, and both VNets are under the same Azure subscription. ![Domain-join HDInsight cluster topology](./media/hdinsight-domain-joined-architecture/hdinsight-domain-joined-architecture_2.png) -Prerequisites that need to be setup on Active Directory: +Prerequisites for the Active Directory: * An [Organizational unit](../active-directory-domain-services/active-directory-ds-admin-guide-create-ou.md) must be created, within which you want to place the HDInsight cluster VMs and the service principals used by the cluster. * [LDAPS](../active-directory-domain-services/active-directory-ds-admin-guide-configure-secure-ldap.md) must be setup when you configure AD DS. You can create a [self-signed certificate](../active-directory-domain-services/active-directory-ds-admin-guide-configure-secure-ldap.md) to configure LDAPS. However, to use a self-signed certificate, you need to request an exception from hdipreview@microsoft.com. -* Reverse DNS zones must be created on the domain for the IP address range of the HDI Subnet (for example 10.2.0.0/24 in the above picture). +* Reverse DNS zones must be created on the domain for the IP address range of the HDI Subnet (for example 10.2.0.0/24 in the previous picture). * [Password hashes](../active-directory-domain-services/active-directory-ds-getting-started-password-sync.md) must be synced from Azure AD to AD DS. * A service account, or a user account is needed, which is used to create the HDInsight cluster. This account must have the following permissions: From 6d1f26e462e011a2226ac5a14c7dc3360d0c6f36 Mon Sep 17 00:00:00 2001 From: "Stephen A. Zarkos" Date: Thu, 2 Feb 2017 14:38:49 -0800 Subject: [PATCH 30/90] Minor edits - openSUSE is more like SLE12 now that openSUSE 13.2 is EOL. --- .../virtual-machines-linux-configure-raid.md | 6 +++--- 1 file changed, 3 insertions(+), 3 deletions(-) diff --git a/articles/virtual-machines/virtual-machines-linux-configure-raid.md b/articles/virtual-machines/virtual-machines-linux-configure-raid.md index b70e29f046979..e988fcafb2a7b 100644 --- a/articles/virtual-machines/virtual-machines-linux-configure-raid.md +++ b/articles/virtual-machines/virtual-machines-linux-configure-raid.md @@ -14,7 +14,7 @@ ms.workload: infrastructure-services ms.tgt_pltfrm: vm-linux ms.devlang: na ms.topic: article -ms.date: 09/06/2016 +ms.date: 02/02/2017 ms.author: rclaus --- @@ -129,7 +129,7 @@ In this example, we create a single disk partition on /dev/sdc. The new disk par sudo mkfs -t ext3 /dev/md127 ``` - c. **SLES 11 & openSUSE** - enable boot.md and create mdadm.conf + c. **SLES 11** - enable boot.md and create mdadm.conf ```bash sudo -i chkconfig --add boot.md @@ -164,7 +164,7 @@ In this example, we create a single disk partition on /dev/sdc. The new disk par UUID=aaaaaaaa-bbbb-cccc-dddd-eeeeeeeeeeee /data ext4 defaults 0 2 ``` - Or on **SLES 11 & openSUSE**: + Or on **SLES 11**: ```bash /dev/disk/by-uuid/aaaaaaaa-bbbb-cccc-dddd-eeeeeeeeeeee /data ext3 defaults 0 2 From ea3a7d94b142f2b2130036bf0e73fa29077d7b96 Mon Sep 17 00:00:00 2001 From: "Stephen A. Zarkos" Date: Thu, 2 Feb 2017 14:40:03 -0800 Subject: [PATCH 31/90] Refresh virtual-machines-linux-configure-lvm --- .../virtual-machines/virtual-machines-linux-configure-lvm.md | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/articles/virtual-machines/virtual-machines-linux-configure-lvm.md b/articles/virtual-machines/virtual-machines-linux-configure-lvm.md index cb096d0c4d9bc..32b1ff654c0aa 100644 --- a/articles/virtual-machines/virtual-machines-linux-configure-lvm.md +++ b/articles/virtual-machines/virtual-machines-linux-configure-lvm.md @@ -14,7 +14,7 @@ ms.workload: infrastructure-services ms.tgt_pltfrm: vm-linux ms.devlang: na ms.topic: article -ms.date: 12/02/2016 +ms.date: 02/02/2017 ms.author: szark --- From c30700606689101c57af0564b048c7c257f52e69 Mon Sep 17 00:00:00 2001 From: Carl Rabeler Date: Thu, 2 Feb 2017 14:54:51 -0800 Subject: [PATCH 32/90] remove joint author where not appropriate --- .../sql-database-automated-backups.md | 141 +----------------- .../sql-database-benchmark-overview.md | 2 +- .../sql-database-business-continuity.md | 2 +- ...ql-database-configure-firewall-settings.md | 2 +- .../sql-database-control-access.md | 2 +- .../sql-database-disaster-recovery-drills.md | 2 +- .../sql-database-disaster-recovery.md | 2 +- ...tabase-dynamic-data-masking-get-started.md | 2 +- .../sql-database-firewall-configure.md | 2 +- ...atabase-geo-replication-failover-portal.md | 4 +- .../sql-database-geo-replication-overview.md | 2 +- .../sql-database-geo-replication-portal.md | 4 +- ...atabase-geo-replication-security-config.md | 4 +- ...l-database-geo-replication-transact-sql.md | 4 +- .../sql-database-long-term-retention.md | 2 +- .../sql-database-resource-limits.md | 2 +- .../sql-database-security-overview.md | 2 +- .../sql-database-service-tiers.md | 2 +- .../sql-database-technical-overview.md | 2 +- 19 files changed, 24 insertions(+), 161 deletions(-) diff --git a/articles/sql-database/sql-database-automated-backups.md b/articles/sql-database/sql-database-automated-backups.md index 27aca0244b2ff..944ac2f33d554 100644 --- a/articles/sql-database/sql-database-automated-backups.md +++ b/articles/sql-database/sql-database-automated-backups.md @@ -15,97 +15,17 @@ ms.topic: article ms.tgt_pltfrm: NA ms.workload: NA ms.date: 11/02/2016 -ms.author: sashan;carlrab;barbkess +ms.author: sashan --- # Learn about SQL Database backups - SQL Database automatically creates a database backups and uses Azure read-access geo-redundant storage (RA-GRS) to provide geo-redundancy. These backups are created automatically and at no additional charge. You don't need to do anything to make them happen. Database backups are an essential part of any business continuity and disaster recovery strategy because they protect your data from accidental corruption or deletion. If you want to keep backups in your own storage container you can configure a long-term backup retention policy. For more information, see [Long-term retention](sql-database-long-term-retention.md). - - - - ## What is a SQL Database backup? - - - - SQL Database uses SQL Server technology to create [full](https://msdn.microsoft.com/library/ms186289.aspx), [differential](https://msdn.microsoft.com/library/ms175526.aspx), and [transaction log](https://msdn.microsoft.com/library/ms191429.aspx) backups. The transaction log backups generally happen every 5 - 10 minutes, with the frequency based on the performance level and amount of database activity. Transaction log backups, with full and differential backups, allow you to restore a database to a specific point-in-time to the same server that hosts the database. When you restore a database, the service figures out which full, differential, and transaction log backups need to be restored. - You can use these backups to: @@ -119,22 +39,12 @@ You can use these backups to: > For a tutorial, see [Get Started with Backup and Restore for Data Protection and Recovery](sql-database-get-started-backup-recovery.md) > - - - > [!NOTE] > In Azure storage, the term *replication* refers to copying files from one location to another. SQL's *database replication* refers to keeping to multiple secondary databases synchronized with a primary database. > > - ## How much backup storage is included at no cost? SQL Database provides up to 200% of your maximum provisioned database storage as backup storage at no additional cost. For example, if you have a Standard DB instance with a provisioned DB size of 250 GB, you have 500 GB of backup storage at no additional charge. If your database exceeds the provided backup storage, you can choose to reduce the retention period by contacting Azure Support. Another option is to pay for extra backup storage that is billed at the standard Read-Access Geographically Redundant Storage (RA-GRS) rate. @@ -146,10 +56,6 @@ The backup storage geo-replication occurs based on the Azure Storage replication ## How long do you keep my backups? Each SQL Database backup has a retention period that is based on the [service-tier](sql-database-service-tiers.md) of the database. The retention period for a database in the: - * Basic service tier is 7 days. * Standard service tier is 35 days. @@ -169,56 +75,13 @@ If you delete a database, SQL Database keeps the backups in the same way it woul ## How to extend the backup retention period? If your application requires that the backups are available for longer period of time you can extend the built-in retention period by configuring the Long-term backup retention policy for individual databases (LTR policy). This allows you to extend the built-it retention period from 35 days to up to 10 years. For more information, see [Long-term retention](sql-database-long-term-retention.md). -Once you add the LTR policy to a database using Azure portal or API, the weekly full database backups will be automatically copied to your own Azure Backup Service Vault. If your database is encrypted with TDE the backups are automatically encrypted at rest. The Services Vault will automatically delete your expired backups based on their timestamp and the LTR policy. So you dont need to manage the backup schedule or worry about the cleanup of the old files. +Once you add the LTR policy to a database using Azure portal or API, the weekly full database backups will be automatically copied to your own Azure Backup Service Vault. If your database is encrypted with TDE the backups are automatically encrypted at rest. The Services Vault will automatically delete your expired backups based on their timestamp and the LTR policy. So you don�t need to manage the backup schedule or worry about the cleanup of the old files. The restore API supports backups stored in the vault as long as the vault is in the same subscription as your SQL database. You can use the Aure portal or PowerShell to access these backups. > [!TIP] > For a tutorial, see [Get Started with Backup and Restore for Data Protection and Recovery](sql-database-get-started-backup-recovery.md) > - - - - - - - - - - - - - - - - ## Next steps - Database backups are an essential part of any business continuity and disaster recovery strategy because they protect your data from accidental corruption or deletion. To learn about the other Azure SQL Database business continuity solutions, see [Business continuity overview](sql-database-business-continuity.md). diff --git a/articles/sql-database/sql-database-benchmark-overview.md b/articles/sql-database/sql-database-benchmark-overview.md index d3e4bdc10af0d..ccaf86928ad54 100644 --- a/articles/sql-database/sql-database-benchmark-overview.md +++ b/articles/sql-database/sql-database-benchmark-overview.md @@ -15,7 +15,7 @@ ms.topic: article ms.tgt_pltfrm: na ms.workload: data-management ms.date: 06/21/2016 -ms.author: carlrab; janeng +ms.author: janeng --- # Azure SQL Database benchmark overview diff --git a/articles/sql-database/sql-database-business-continuity.md b/articles/sql-database/sql-database-business-continuity.md index c36d4b8bbc91f..5c4b6cfbdc875 100644 --- a/articles/sql-database/sql-database-business-continuity.md +++ b/articles/sql-database/sql-database-business-continuity.md @@ -16,7 +16,7 @@ ms.topic: get-started-article ms.tgt_pltfrm: NA ms.workload: NA ms.date: 10/13/2016 -ms.author: carlrab;sashan +ms.author: sashan --- # Overview of business continuity with Azure SQL Database diff --git a/articles/sql-database/sql-database-configure-firewall-settings.md b/articles/sql-database/sql-database-configure-firewall-settings.md index bd47f3dabd711..7bec6011b7abd 100644 --- a/articles/sql-database/sql-database-configure-firewall-settings.md +++ b/articles/sql-database/sql-database-configure-firewall-settings.md @@ -15,7 +15,7 @@ ms.tgt_pltfrm: na ms.devlang: dotnet ms.topic: get-started-article ms.date: 11/28/2016 -ms.author: rickbyh;carlrab +ms.author: rickbyh --- # Create and manage Azure SQL Database server-level firewall rules using the Azure portal diff --git a/articles/sql-database/sql-database-control-access.md b/articles/sql-database/sql-database-control-access.md index e52cad81cb641..e8fce75771b1f 100644 --- a/articles/sql-database/sql-database-control-access.md +++ b/articles/sql-database/sql-database-control-access.md @@ -16,7 +16,7 @@ ms.topic: get-started-article ms.tgt_pltfrm: na ms.workload: data-management ms.date: 10/18/2016 -ms.author: rickbyh;carlrab +ms.author: rickbyh --- # Azure SQL Database access control To provide security, SQL Database controls access with firewall rules limiting connectivity by IP address, authentication mechanisms requiring users to prove their identity, and authorization mechanisms limiting users to specific actions and data. diff --git a/articles/sql-database/sql-database-disaster-recovery-drills.md b/articles/sql-database/sql-database-disaster-recovery-drills.md index 4e5c0d57d0472..4093e99b77cf4 100644 --- a/articles/sql-database/sql-database-disaster-recovery-drills.md +++ b/articles/sql-database/sql-database-disaster-recovery-drills.md @@ -15,7 +15,7 @@ ms.topic: article ms.tgt_pltfrm: NA ms.workload: data-management ms.date: 07/31/2016 -ms.author: sstein; sashan +ms.author: s sashan --- # Performing Disaster Recovery Drill diff --git a/articles/sql-database/sql-database-disaster-recovery.md b/articles/sql-database/sql-database-disaster-recovery.md index c5505b4c6878c..3618c99917306 100644 --- a/articles/sql-database/sql-database-disaster-recovery.md +++ b/articles/sql-database/sql-database-disaster-recovery.md @@ -15,7 +15,7 @@ ms.topic: article ms.tgt_pltfrm: NA ms.workload: NA ms.date: 10/13/2016 -ms.author: sashan;carlrab +ms.author: sashan --- # Restore an Azure SQL Database or failover to a secondary diff --git a/articles/sql-database/sql-database-dynamic-data-masking-get-started.md b/articles/sql-database/sql-database-dynamic-data-masking-get-started.md index 70ed1648413c6..6140cfcca328d 100644 --- a/articles/sql-database/sql-database-dynamic-data-masking-get-started.md +++ b/articles/sql-database/sql-database-dynamic-data-masking-get-started.md @@ -15,7 +15,7 @@ ms.topic: article ms.tgt_pltfrm: NA ms.workload: data-services ms.date: 11/22/2016 -ms.author: ronitr; ronmat; carlrab +ms.author: ronitr; ronmat --- # Get started with SQL Database Dynamic Data Masking (Azure Portal) diff --git a/articles/sql-database/sql-database-firewall-configure.md b/articles/sql-database/sql-database-firewall-configure.md index 9742f8eb98492..b7bdaf77ed83f 100644 --- a/articles/sql-database/sql-database-firewall-configure.md +++ b/articles/sql-database/sql-database-firewall-configure.md @@ -17,7 +17,7 @@ ms.topic: get-started-article ms.tgt_pltfrm: na ms.workload: data-management ms.date: 11/23/2016 -ms.author: rickbyh;carlrab +ms.author: rickbyh --- # Overview of Azure SQL Database firewall rules diff --git a/articles/sql-database/sql-database-geo-replication-failover-portal.md b/articles/sql-database/sql-database-geo-replication-failover-portal.md index b07f139d9a04a..cfc1a3a900769 100644 --- a/articles/sql-database/sql-database-geo-replication-failover-portal.md +++ b/articles/sql-database/sql-database-geo-replication-failover-portal.md @@ -3,7 +3,7 @@ title: Initiate a planned or unplanned failover for Azure SQL Database with the description: Initiate a planned or unplanned failover for Azure SQL Database using the Azure portal services: sql-database documentationcenter: '' -author: anosov1960 +author: CarlRabeler manager: jhubbard editor: '' @@ -15,7 +15,7 @@ ms.topic: article ms.tgt_pltfrm: NA ms.workload: data-management ms.date: 11/22/2016 -ms.author: sashan;carlrab +ms.author: carlrab --- # Initiate a planned or unplanned failover for Azure SQL Database with the Azure portal diff --git a/articles/sql-database/sql-database-geo-replication-overview.md b/articles/sql-database/sql-database-geo-replication-overview.md index 10bf07efb19d4..13f3bd163de70 100644 --- a/articles/sql-database/sql-database-geo-replication-overview.md +++ b/articles/sql-database/sql-database-geo-replication-overview.md @@ -15,7 +15,7 @@ ms.topic: article ms.tgt_pltfrm: na ms.workload: NA ms.date: 09/26/2016 -ms.author: sashan;carlrab +ms.author: sashan --- # Overview: SQL Database Active Geo-Replication diff --git a/articles/sql-database/sql-database-geo-replication-portal.md b/articles/sql-database/sql-database-geo-replication-portal.md index 3d86fe74f7b4e..bf2e65ae923d8 100644 --- a/articles/sql-database/sql-database-geo-replication-portal.md +++ b/articles/sql-database/sql-database-geo-replication-portal.md @@ -3,7 +3,7 @@ title: Configure geo-replication for Azure SQL Database with the Azure portal | description: Configure geo-replication for Azure SQL Database by using the Azure portal services: sql-database documentationcenter: '' -author: anosov1960 +author: CarlRabeler manager: jhubbard editor: '' @@ -15,7 +15,7 @@ ms.topic: article ms.tgt_pltfrm: NA ms.workload: NA ms.date: 11/22/2016 -ms.author: sashan;carlrab +ms.author: carlrab --- # Configure active geo-replication for Azure SQL Database with the Azure portal diff --git a/articles/sql-database/sql-database-geo-replication-security-config.md b/articles/sql-database/sql-database-geo-replication-security-config.md index bb923d2df2d09..7f1cd9b2b8a8d 100644 --- a/articles/sql-database/sql-database-geo-replication-security-config.md +++ b/articles/sql-database/sql-database-geo-replication-security-config.md @@ -3,7 +3,7 @@ title: Configure Azure SQL Database security for disaster recovery | Microsoft D description: This topic explains security considerations for configuring and managing security after a database restore or a failover to a secondary server in the event of a data center outage or other disaster services: sql-database documentationcenter: na -author: CarlRabeler +author: Caranosov1960lRabeler manager: jhubbard editor: monicar @@ -15,7 +15,7 @@ ms.topic: article ms.tgt_pltfrm: na ms.workload: data-management ms.date: 10/13/2016 -ms.author: carlrab +ms.author: sashan --- # Configure and manage Azure SQL Database security for geo-restore or failover diff --git a/articles/sql-database/sql-database-geo-replication-transact-sql.md b/articles/sql-database/sql-database-geo-replication-transact-sql.md index 897e66bd3febf..cd34fec5b17a1 100644 --- a/articles/sql-database/sql-database-geo-replication-transact-sql.md +++ b/articles/sql-database/sql-database-geo-replication-transact-sql.md @@ -3,7 +3,7 @@ title: Configure Geo-Replication for Azure SQL Database with Transact-SQL | Micr description: Configure Geo-Replication for Azure SQL Database using Transact-SQL services: sql-database documentationcenter: '' -author: anosov1960 +author: CarlRabeler manager: jhubbard editor: '' @@ -15,7 +15,7 @@ ms.topic: article ms.tgt_pltfrm: NA ms.workload: NA ms.date: 10/13/2016 -ms.author: sashan +ms.author: carlrab --- # Configure active geo-replication for Azure SQL Database with Transact-SQL diff --git a/articles/sql-database/sql-database-long-term-retention.md b/articles/sql-database/sql-database-long-term-retention.md index 92436a71ab630..99e535de3e6e8 100644 --- a/articles/sql-database/sql-database-long-term-retention.md +++ b/articles/sql-database/sql-database-long-term-retention.md @@ -16,7 +16,7 @@ ms.topic: article ms.tgt_pltfrm: NA ms.workload: NA ms.date: 12/21/2016 -ms.author: carlrab; sashan +ms.author: sashan --- # Storing Azure SQL Database Backups for up to 10 years diff --git a/articles/sql-database/sql-database-resource-limits.md b/articles/sql-database/sql-database-resource-limits.md index 7be8c3d4f99c5..6b010a66fcae0 100644 --- a/articles/sql-database/sql-database-resource-limits.md +++ b/articles/sql-database/sql-database-resource-limits.md @@ -15,7 +15,7 @@ ms.topic: article ms.tgt_pltfrm: na ms.workload: data-management ms.date: 01/11/2017 -ms.author: carlrab; janeng +ms.author: janeng --- # Azure SQL Database resource limits diff --git a/articles/sql-database/sql-database-security-overview.md b/articles/sql-database/sql-database-security-overview.md index 4cca2ca68974a..5c3b68ee4c98e 100644 --- a/articles/sql-database/sql-database-security-overview.md +++ b/articles/sql-database/sql-database-security-overview.md @@ -15,7 +15,7 @@ ms.topic: get-started-article ms.tgt_pltfrm: NA ms.workload: data-management ms.date: 02/01/2017 -ms.author: thmullan;jackr;carlrab +ms.author: thmullan;jackr --- # Securing your SQL Database diff --git a/articles/sql-database/sql-database-service-tiers.md b/articles/sql-database/sql-database-service-tiers.md index 66db622435cde..821b8366dce77 100644 --- a/articles/sql-database/sql-database-service-tiers.md +++ b/articles/sql-database/sql-database-service-tiers.md @@ -16,7 +16,7 @@ ms.topic: get-started-article ms.tgt_pltfrm: na ms.workload: data-management ms.date: 01/11/2017 -ms.author: carlrab; janeng +ms.author: janeng --- # SQL Database options and performance: Understand what's available in each service tier diff --git a/articles/sql-database/sql-database-technical-overview.md b/articles/sql-database/sql-database-technical-overview.md index 4708bea51cc5c..053bdca471a46 100644 --- a/articles/sql-database/sql-database-technical-overview.md +++ b/articles/sql-database/sql-database-technical-overview.md @@ -16,7 +16,7 @@ ms.topic: hero-article ms.tgt_pltfrm: na ms.workload: data-management ms.date: 12/20/2016 -ms.author: shkurhek;carlrab +ms.author: shkurhek --- # What is SQL Database? Introduction to SQL Database SQL Database is a relational database service in the Microsoft cloud based on the market-leading Microsoft SQL Server engine and capable of handling mission-critical workloads. SQL Database delivers predictable performance at multiple service levels, dynamic scalability with no downtime, built-in business continuity, and data protection — all with near-zero administration. These capabilities allow you to focus on rapid app development and accelerating your time to market, rather than allocating precious time and resources to managing virtual machines and infrastructure. Because SQL Database is based on the [SQL Server](https://msdn.microsoft.com/library/bb545450.aspx) engine, SQL Database supports existing SQL Server tools, libraries, and APIs. As a result, it is easy for you to develop new solutions, to move your existing SQL Server solutions, and to extend your existing SQL Server solutions to the Microsoft cloud without having to learn new skills. From d0edecba5b39ee8e12c3557dcbdb0e7683d1df3b Mon Sep 17 00:00:00 2001 From: "Stephen A. Zarkos" Date: Thu, 2 Feb 2017 15:20:20 -0800 Subject: [PATCH 33/90] Lots of updates to CentOS BYOL doc --- ...ual-machines-linux-create-upload-centos.md | 320 ++++++++++-------- 1 file changed, 175 insertions(+), 145 deletions(-) diff --git a/articles/virtual-machines/virtual-machines-linux-create-upload-centos.md b/articles/virtual-machines/virtual-machines-linux-create-upload-centos.md index b325b225a927e..9ec6d85d08bad 100644 --- a/articles/virtual-machines/virtual-machines-linux-create-upload-centos.md +++ b/articles/virtual-machines/virtual-machines-linux-create-upload-centos.md @@ -14,7 +14,7 @@ ms.workload: infrastructure-services ms.tgt_pltfrm: vm-linux ms.devlang: na ms.topic: article -ms.date: 05/09/2016 +ms.date: 02/02/2017 ms.author: szark --- @@ -30,25 +30,29 @@ This article assumes that you have already installed a CentOS (or similar deriva **CentOS installation notes** * Please see also [General Linux Installation Notes](virtual-machines-linux-create-upload-generic.md#general-linux-installation-notes) for more tips on preparing Linux for Azure. -* The VHDX format is not supported in Azure, only **fixed VHD**. You can convert the disk to VHD format using Hyper-V Manager or the convert-vhd cmdlet. -* When installing the Linux system it is recommended that you use standard partitions rather than LVM (often the default for many installations). This will avoid LVM name conflicts with cloned VMs, particularly if an OS disk ever needs to be attached to another VM for troubleshooting. [LVM](virtual-machines-linux-configure-lvm.md?toc=%2fazure%2fvirtual-machines%2flinux%2ftoc.json) or [RAID](virtual-machines-linux-configure-raid.md?toc=%2fazure%2fvirtual-machines%2flinux%2ftoc.json) may be used on data disks if preferred. -* NUMA is not supported for larger VM sizes due to a bug in Linux kernel versions below 2.6.37. This issue primarily impacts distributions using the upstream Red Hat 2.6.32 kernel. Manual installation of the Azure Linux agent (waagent) will automatically disable NUMA in the GRUB configuration for the Linux kernel. More information about this can be found in the steps below. +* The VHDX format is not supported in Azure, only **fixed VHD**. You can convert the disk to VHD format using Hyper-V Manager or the convert-vhd cmdlet. If you are using VirtualBox this means selecting **Fixed size** as opposed to the default dynamically allocated when creating the disk. +* When installing the Linux system it is *recommended* that you use standard partitions rather than LVM (often the default for many installations). This will avoid LVM name conflicts with cloned VMs, particularly if an OS disk ever needs to be attached to another identical VM for troubleshooting. [LVM](virtual-machines-linux-configure-lvm.md?toc=%2fazure%2fvirtual-machines%2flinux%2ftoc.json) or [RAID](virtual-machines-linux-configure-raid.md?toc=%2fazure%2fvirtual-machines%2flinux%2ftoc.json) may be used on data disks. +* Kernel support for mounting UDF file systems is required. At first boot on Azure the provisioning configuration is passed to the Linux VM via UDF-formatted media that is attached to the guest. The Azure Linux agent must be able to mount the UDF file system to read its configuration and provision the VM. +* Linux kernel versions below 2.6.37 do not support NUMA on Hyper-V with larger VM sizes. This issue primarily impacts older distributions using the upstream Red Hat 2.6.32 kernel, and was fixed in RHEL 6.6 (kernel-2.6.32-504). Systems running custom kernels older than 2.6.37, or RHEL-based kernels older than 2.6.32-504 must set the boot parameter `numa=off` on the kernel command-line in grub.conf. For more information see Red Hat [KB 436883](https://access.redhat.com/solutions/436883). * Do not configure a swap partition on the OS disk. The Linux agent can be configured to create a swap file on the temporary resource disk. More information about this can be found in the steps below. * All of the VHDs must have sizes that are multiples of 1 MB. ## CentOS 6.x + 1. In Hyper-V Manager, select the virtual machine. + 2. Click **Connect** to open a console window for the virtual machine. -3. Uninstall NetworkManager by running the following command: + +3. In CentOS 6, NetworkManager can interfere with the Azure Linux agent. Uninstall this package by running the following command: # sudo rpm -e --nodeps NetworkManager - - **Note:** If the package is not already installed, this command will fail with an error message. This is expected. -4. Create a file named **network** in the `/etc/sysconfig/` directory that contains the following text: + +4. Create or edit the file `/etc/sysconfig/network` and add the following text: NETWORKING=yes HOSTNAME=localhost.localdomain -5. Create a file named **ifcfg-eth0** in the `/etc/sysconfig/network-scripts/` directory that contains the following text: + +5. Create or edit the file `/etc/sysconfig/network-scripts/ifcfg-eth0` and add the following text: DEVICE=eth0 ONBOOT=yes @@ -57,102 +61,119 @@ This article assumes that you have already installed a CentOS (or similar deriva USERCTL=no PEERDNS=yes IPV6INIT=no + 6. Modify udev rules to avoid generating static rules for the Ethernet interface(s). These rules can cause problems when cloning a virtual machine in Microsoft Azure or Hyper-V: # sudo ln -s /dev/null /etc/udev/rules.d/75-persistent-net-generator.rules # sudo rm -f /etc/udev/rules.d/70-persistent-net.rules + 7. Ensure the network service will start at boot time by running the following command: # sudo chkconfig network on -8. **CentOS 6.3 Only**: Install the drivers for the Linux Integration Services (LIS). - - **Important: The step is only valid for CentOS 6.3 and earlier.** In CentOS 6.4+ the Linux Integration Services are *already available in the standard kernel*. - - * Follow the installation instructions on the [LIS download page](https://www.microsoft.com/en-us/download/details.aspx?id=46842) and install the RPM onto your image. -9. Install the python-pyasn1 package by running the following command: - - # sudo yum install python-pyasn1 -10. If you would like to use the OpenLogic mirrors that are hosted within the Azure datacenters, then replace the /etc/yum.repos.d/CentOS-Base.repo file with the following repositories. This will also add the **[openlogic]** repository that includes packages for the Azure Linux agent: - + +8. If you would like to use the OpenLogic mirrors that are hosted within the Azure datacenters, then replace the /etc/yum.repos.d/CentOS-Base.repo file with the following repositories. This will also add the **[openlogic]** repository that includes additional packages such as the Azure Linux agent: + [openlogic] name=CentOS-$releasever - openlogic packages for $basearch baseurl=http://olcentgbl.trafficmanager.net/openlogic/$releasever/openlogic/$basearch/ enabled=1 gpgcheck=0 - - [base] - name=CentOS-$releasever - Base - baseurl=http://olcentgbl.trafficmanager.net/centos/$releasever/os/$basearch/ - gpgcheck=1 - gpgkey=file:///etc/pki/rpm-gpg/RPM-GPG-KEY-CentOS-6 - - #released updates - [updates] - name=CentOS-$releasever - Updates - baseurl=http://olcentgbl.trafficmanager.net/centos/$releasever/updates/$basearch/ - gpgcheck=1 - gpgkey=file:///etc/pki/rpm-gpg/RPM-GPG-KEY-CentOS-6 - - #additional packages that may be useful - [extras] - name=CentOS-$releasever - Extras - baseurl=http://olcentgbl.trafficmanager.net/centos/$releasever/extras/$basearch/ - gpgcheck=1 - gpgkey=file:///etc/pki/rpm-gpg/RPM-GPG-KEY-CentOS-6 - - #additional packages that extend functionality of existing packages - [centosplus] - name=CentOS-$releasever - Plus - baseurl=http://olcentgbl.trafficmanager.net/centos/$releasever/centosplus/$basearch/ - gpgcheck=1 - enabled=0 - gpgkey=file:///etc/pki/rpm-gpg/RPM-GPG-KEY-CentOS-6 - - #contrib - packages by Centos Users - [contrib] - name=CentOS-$releasever - Contrib - baseurl=http://olcentgbl.trafficmanager.net/centos/$releasever/contrib/$basearch/ - gpgcheck=1 - enabled=0 - gpgkey=file:///etc/pki/rpm-gpg/RPM-GPG-KEY-CentOS-6 - - **Note:** The rest of this guide will assume you are using at least the [openlogic] repo, which will be used to install the Azure Linux agent below. -11. Add the following line to /etc/yum.conf: + + [base] + name=CentOS-$releasever - Base + #mirrorlist=http://mirrorlist.centos.org/?release=$releasever&arch=$basearch&repo=os&infra=$infra + baseurl=http://olcentgbl.trafficmanager.net/centos/$releasever/os/$basearch/ + gpgcheck=1 + gpgkey=file:///etc/pki/rpm-gpg/RPM-GPG-KEY-CentOS-6 + + #released updates + [updates] + name=CentOS-$releasever - Updates + #mirrorlist=http://mirrorlist.centos.org/?release=$releasever&arch=$basearch&repo=updates&infra=$infra + baseurl=http://olcentgbl.trafficmanager.net/centos/$releasever/updates/$basearch/ + gpgcheck=1 + gpgkey=file:///etc/pki/rpm-gpg/RPM-GPG-KEY-CentOS-6 + + #additional packages that may be useful + [extras] + name=CentOS-$releasever - Extras + #mirrorlist=http://mirrorlist.centos.org/?release=$releasever&arch=$basearch&repo=extras&infra=$infra + baseurl=http://olcentgbl.trafficmanager.net/centos/$releasever/extras/$basearch/ + gpgcheck=1 + gpgkey=file:///etc/pki/rpm-gpg/RPM-GPG-KEY-CentOS-6 + + #additional packages that extend functionality of existing packages + [centosplus] + name=CentOS-$releasever - Plus + #mirrorlist=http://mirrorlist.centos.org/?release=$releasever&arch=$basearch&repo=centosplus&infra=$infra + baseurl=http://olcentgbl.trafficmanager.net/centos/$releasever/centosplus/$basearch/ + gpgcheck=1 + enabled=0 + gpgkey=file:///etc/pki/rpm-gpg/RPM-GPG-KEY-CentOS-6 + + #contrib - packages by Centos Users + [contrib] + name=CentOS-$releasever - Contrib + #mirrorlist=http://mirrorlist.centos.org/?release=$releasever&arch=$basearch&repo=contrib&infra=$infra + baseurl=http://olcentgbl.trafficmanager.net/centos/$releasever/contrib/$basearch/ + gpgcheck=1 + enabled=0 + gpgkey=file:///etc/pki/rpm-gpg/RPM-GPG-KEY-CentOS-6 + + + [!Note] + The rest of this guide will assume you are using at least the `[openlogic]` repo, which will be used to install the Azure Linux agent below. + + +9. Add the following line to /etc/yum.conf: http_caching=packages - - And **on CentOS 6.3 only** add the following line: - - exclude=kernel* -12. Disable the yum module "fastestmirror" by editing the file "/etc/yum/pluginconf.d/fastestmirror.conf", and under `[main]`, type the following: - - set enabled=0 -13. Run the following command to clear the current yum metadata: + +10. Run the following command to clear the current yum metadata: # yum clean all -14. **On CentOS 6.3 only**, update the kernel using the following command: + + Unless you are creating an image for an older version of CentOS, it is recommended to update all the packages to the latest: + + # sudo yum -y update + + A reboot maybe required after running this command. + +11. (Optional) Install the drivers for the Linux Integration Services (LIS). + + [!IMPORTANT] + The step is **required** for CentOS 6.3 and earlier, and optional for later releases. + + # sudo rpm -e hypervkvpd ## (may return error if not installed, that's OK) + # sudo yum install microsoft-hyper-v + + Alternatively, you can follow the manual installation instructions on the [LIS download page](https://go.microsoft.com/fwlink/?linkid=403033) to install the RPM onto your VM. + +12. Install the Azure Linux Agent and dependencies: + + # sudo yum install python-pyasn1 WALinuxAgent - # sudo yum --disableexcludes=all install kernel -15. Modify the kernel boot line in your grub configuration to include additional kernel parameters for Azure. To do this, open "/boot/grub/menu.lst" in a text editor and ensure that the default kernel includes the following parameters: + The WALinuxAgent package will remove the NetworkManager and NetworkManager-gnome packages if they were not already removed as described in step 3. + + +13. Modify the kernel boot line in your grub configuration to include additional kernel parameters for Azure. To do this, open "/boot/grub/menu.lst" in a text editor and ensure that the default kernel includes the following parameters: - console=ttyS0 earlyprintk=ttyS0 rootdelay=300 numa=off + console=ttyS0 earlyprintk=ttyS0 rootdelay=300 - This will also ensure all console messages are sent to the first serial port, which can assist Azure support with debugging issues. This will disable NUMA due to a bug in the kernel version used by CentOS 6. + This will also ensure all console messages are sent to the first serial port, which can assist Azure support with debugging issues. In addition to the above, it is recommended to *remove* the following parameters: rhgb quiet crashkernel=auto - Graphical and quiet boot are not useful in a cloud environment where we want all the logs to be sent to the serial port. - - The `crashkernel` option may be left configured if desired, but note that this parameter will reduce the amount of available memory in the VM by 128MB or more, which may be problematic on the smaller VM sizes. -16. Ensure that the SSH server is installed and configured to start at boot time. This is usually the default. -17. Install the Azure Linux Agent by running the following command: - - # sudo yum install WALinuxAgent - - Note that installing the WALinuxAgent package will remove the NetworkManager and NetworkManager-gnome packages if they were not already removed as described in step 2. -18. Do not create swap space on the OS disk. + Graphical and quiet boot are not useful in a cloud environment where we want all the logs to be sent to the serial port. The `crashkernel` option may be left configured if desired, but note that this parameter will reduce the amount of available memory in the VM by 128MB or more, which may be problematic on the smaller VM sizes. + + [!Important] + CentOS 6.5 and earlier must also set the kernel parameter `numa=off`. See Red Hat [KB 436883](https://access.redhat.com/solutions/436883). + +14. Ensure that the SSH server is installed and configured to start at boot time. This is usually the default. + +15. Do not create swap space on the OS disk. The Azure Linux Agent can automatically configure swap space using the local resource disk that is attached to the VM after provisioning on Azure. Note that the local resource disk is a *temporary* disk, and might be emptied when the VM is deprovisioned. After installing the Azure Linux Agent (see previous step), modify the following parameters in /etc/waagent.conf appropriately: @@ -161,12 +182,15 @@ This article assumes that you have already installed a CentOS (or similar deriva ResourceDisk.MountPoint=/mnt/resource ResourceDisk.EnableSwap=y ResourceDisk.SwapSizeMB=2048 ## NOTE: set this to whatever you need it to be. -19. Run the following commands to deprovision the virtual machine and prepare it for provisioning on Azure: + +16. Run the following commands to deprovision the virtual machine and prepare it for provisioning on Azure: # sudo waagent -force -deprovision # export HISTSIZE=0 # logout -20. Click **Action -> Shut Down** in Hyper-V Manager. Your Linux VHD is now ready to be uploaded to Azure. + +17. Click **Action -> Shut Down** in Hyper-V Manager. Your Linux VHD is now ready to be uploaded to Azure. + - - - ## CentOS 7.0+ @@ -181,12 +205,15 @@ Preparing a CentOS 7 virtual machine for Azure is very similar to CentOS 6, howe **Configuration Steps** 1. In Hyper-V Manager, select the virtual machine. + 2. Click **Connect** to open a console window for the virtual machine. -3. Create a file named **network** in the `/etc/sysconfig/` directory that contains the following text: + +3. Create or edit the file `/etc/sysconfig/network` and add the following text: NETWORKING=yes HOSTNAME=localhost.localdomain -4. Create a file named **ifcfg-eth0** in the `/etc/sysconfig/network-scripts/` directory that contains the following text: + +4. Create or edit the file `/etc/sysconfig/network-scripts/ifcfg-eth0` and add the following text: DEVICE=eth0 ONBOOT=yes @@ -195,66 +222,66 @@ Preparing a CentOS 7 virtual machine for Azure is very similar to CentOS 6, howe USERCTL=no PEERDNS=yes IPV6INIT=no + NM_CONTROLLED=no + 5. Modify udev rules to avoid generating static rules for the Ethernet interface(s). These rules can cause problems when cloning a virtual machine in Microsoft Azure or Hyper-V: # sudo ln -s /dev/null /etc/udev/rules.d/75-persistent-net-generator.rules -6. Ensure the network service will start at boot time by running the following command: - - # sudo chkconfig network on -7. Install the python-pyasn1 package by running the following command: - - # sudo yum install python-pyasn1 -8. If you would like to use the OpenLogic mirrors that are hosted within the Azure datacenters, then replace the /etc/yum.repos.d/CentOS-Base.repo file with the following repositories. This will also add the **[openlogic]** repository that includes packages for the Azure Linux agent: + +6. If you would like to use the OpenLogic mirrors that are hosted within the Azure datacenters, then replace the /etc/yum.repos.d/CentOS-Base.repo file with the following repositories. This will also add the **[openlogic]** repository that includes packages for the Azure Linux agent: [openlogic] name=CentOS-$releasever - openlogic packages for $basearch baseurl=http://olcentgbl.trafficmanager.net/openlogic/$releasever/openlogic/$basearch/ enabled=1 gpgcheck=0 - - [base] - name=CentOS-$releasever - Base - baseurl=http://olcentgbl.trafficmanager.net/centos/$releasever/os/$basearch/ - gpgcheck=1 - gpgkey=file:///etc/pki/rpm-gpg/RPM-GPG-KEY-CentOS-7 - - #released updates - [updates] - name=CentOS-$releasever - Updates - baseurl=http://olcentgbl.trafficmanager.net/centos/$releasever/updates/$basearch/ - gpgcheck=1 - gpgkey=file:///etc/pki/rpm-gpg/RPM-GPG-KEY-CentOS-7 - - #additional packages that may be useful - [extras] - name=CentOS-$releasever - Extras - baseurl=http://olcentgbl.trafficmanager.net/centos/$releasever/extras/$basearch/ - gpgcheck=1 - gpgkey=file:///etc/pki/rpm-gpg/RPM-GPG-KEY-CentOS-7 - - #additional packages that extend functionality of existing packages - [centosplus] - name=CentOS-$releasever - Plus - baseurl=http://olcentgbl.trafficmanager.net/centos/$releasever/centosplus/$basearch/ - gpgcheck=1 - enabled=0 - gpgkey=file:///etc/pki/rpm-gpg/RPM-GPG-KEY-CentOS-7 - - #contrib - packages by Centos Users - [contrib] - name=CentOS-$releasever - Contrib - baseurl=http://olcentgbl.trafficmanager.net/centos/$releasever/contrib/$basearch/ - gpgcheck=1 - enabled=0 - gpgkey=file:///etc/pki/rpm-gpg/RPM-GPG-KEY-CentOS-7 + + [base] + name=CentOS-$releasever - Base + #mirrorlist=http://mirrorlist.centos.org/?release=$releasever&arch=$basearch&repo=os&infra=$infra + baseurl=http://olcentgbl.trafficmanager.net/centos/$releasever/os/$basearch/ + gpgcheck=1 + gpgkey=file:///etc/pki/rpm-gpg/RPM-GPG-KEY-CentOS-7 + + #released updates + [updates] + name=CentOS-$releasever - Updates + #mirrorlist=http://mirrorlist.centos.org/?release=$releasever&arch=$basearch&repo=updates&infra=$infra + baseurl=http://olcentgbl.trafficmanager.net/centos/$releasever/updates/$basearch/ + gpgcheck=1 + gpgkey=file:///etc/pki/rpm-gpg/RPM-GPG-KEY-CentOS-7 + + #additional packages that may be useful + [extras] + name=CentOS-$releasever - Extras + #mirrorlist=http://mirrorlist.centos.org/?release=$releasever&arch=$basearch&repo=extras&infra=$infra + baseurl=http://olcentgbl.trafficmanager.net/centos/$releasever/extras/$basearch/ + gpgcheck=1 + gpgkey=file:///etc/pki/rpm-gpg/RPM-GPG-KEY-CentOS-7 + + #additional packages that extend functionality of existing packages + [centosplus] + name=CentOS-$releasever - Plus + #mirrorlist=http://mirrorlist.centos.org/?release=$releasever&arch=$basearch&repo=centosplus&infra=$infra + baseurl=http://olcentgbl.trafficmanager.net/centos/$releasever/centosplus/$basearch/ + gpgcheck=1 + enabled=0 + gpgkey=file:///etc/pki/rpm-gpg/RPM-GPG-KEY-CentOS-7 - **Note:** The rest of this guide will assume you are using at least the [openlogic] repo, which will be used to install the Azure Linux agent below. + [!Note] + The rest of this guide will assume you are using at least the `[openlogic]` repo, which will be used to install the Azure Linux agent below. -1. Run the following command to clear the current yum metadata and install any updates: +7. Run the following command to clear the current yum metadata and install any updates: # sudo yum clean all - # sudo yum -y update -2. Modify the kernel boot line in your grub configuration to include additional kernel parameters for Azure. To do this, open "/etc/default/grub" in a text editor and edit the `GRUB_CMDLINE_LINUX` parameter, for example: + + Unless you are creating an image for an older version of CentOS, it is recommended to update all the packages to the latest: + + # sudo yum -y update + + A reboot maybe required after running this command. + +8. Modify the kernel boot line in your grub configuration to include additional kernel parameters for Azure. To do this, open "/etc/default/grub" in a text editor and edit the `GRUB_CMDLINE_LINUX` parameter, for example: GRUB_CMDLINE_LINUX="rootdelay=300 console=ttyS0 earlyprintk=ttyS0 net.ifnames=0" @@ -262,14 +289,13 @@ Preparing a CentOS 7 virtual machine for Azure is very similar to CentOS 6, howe rhgb quiet crashkernel=auto - Graphical and quiet boot are not useful in a cloud environment where we want all the logs to be sent to the serial port. - - The `crashkernel` option may be left configured if desired, but note that this parameter will reduce the amount of available memory in the VM by 128MB or more, which may be problematic on the smaller VM sizes. -3. Once you are done editing "/etc/default/grub" per above, run the following command to rebuild the grub configuration: + Graphical and quiet boot are not useful in a cloud environment where we want all the logs to be sent to the serial port. The `crashkernel` option may be left configured if desired, but note that this parameter will reduce the amount of available memory in the VM by 128MB or more, which may be problematic on the smaller VM sizes. + +9. Once you are done editing "/etc/default/grub" per above, run the following command to rebuild the grub configuration: # sudo grub2-mkconfig -o /boot/grub2/grub.cfg -4. Ensure that the SSH server is installed and configured to start at boot time. This is usually the default. -5. **Only if building the image from VMWare, VirtualBox or KVM:** Add Hyper-V modules into initramfs: + +10. If building the image from **VMWare, VirtualBox or KVM:** Ensure the Hyper-V drivers are included in the initramfs: Edit `/etc/dracut.conf`, add content: @@ -277,12 +303,14 @@ Preparing a CentOS 7 virtual machine for Azure is very similar to CentOS 6, howe Rebuild the initramfs: - # dracut –f -v -6. Install the Azure Linux Agent by running the following command: - - # sudo yum install WALinuxAgent + # sudo dracut –f -v + +11. Install the Azure Linux Agent and dependencies: + + # sudo yum install python-pyasn1 WALinuxAgent # sudo systemctl enable waagent -7. Do not create swap space on the OS disk. + +12. Do not create swap space on the OS disk. The Azure Linux Agent can automatically configure swap space using the local resource disk that is attached to the VM after provisioning on Azure. Note that the local resource disk is a *temporary* disk, and might be emptied when the VM is deprovisioned. After installing the Azure Linux Agent (see previous step), modify the following parameters in /etc/waagent.conf appropriately: @@ -291,12 +319,14 @@ Preparing a CentOS 7 virtual machine for Azure is very similar to CentOS 6, howe ResourceDisk.MountPoint=/mnt/resource ResourceDisk.EnableSwap=y ResourceDisk.SwapSizeMB=2048 ## NOTE: set this to whatever you need it to be. -8. Run the following commands to deprovision the virtual machine and prepare it for provisioning on Azure: + +13. Run the following commands to deprovision the virtual machine and prepare it for provisioning on Azure: # sudo waagent -force -deprovision # export HISTSIZE=0 # logout -9. Click **Action -> Shut Down** in Hyper-V Manager. Your Linux VHD is now ready to be uploaded to Azure. + +14. Click **Action -> Shut Down** in Hyper-V Manager. Your Linux VHD is now ready to be uploaded to Azure. ## Next steps You're now ready to use your CentOS Linux virtual hard disk to create new virtual machines in Azure. If this is the first time that you're uploading the .vhd file to Azure, see steps 2 and 3 in [Creating and uploading a virtual hard disk that contains the Linux operating system](virtual-machines-linux-classic-create-upload-vhd.md?toc=%2fazure%2fvirtual-machines%2flinux%2fclassic%2ftoc.json). From 649cc1a78f3a9f343533cb18fb7d763e4f9ea196 Mon Sep 17 00:00:00 2001 From: Devin Breshears Date: Thu, 2 Feb 2017 15:20:20 -0800 Subject: [PATCH 34/90] Updating with specific KB article and removing stale content --- ...ls-docker-troubleshooting-docker-errors.md | 61 +------------------ 1 file changed, 2 insertions(+), 59 deletions(-) diff --git a/articles/vs-azure-tools-docker-troubleshooting-docker-errors.md b/articles/vs-azure-tools-docker-troubleshooting-docker-errors.md index db9564c1c4b72..857f6137e49c8 100644 --- a/articles/vs-azure-tools-docker-troubleshooting-docker-errors.md +++ b/articles/vs-azure-tools-docker-troubleshooting-docker-errors.md @@ -50,8 +50,8 @@ The following issues are specific to debugging .NET Framework web and console ap #### Prerequisites 1. Visual Studio 2017 RC (or later) with the .NET Core and Docker Preview workload must be installed. -2. Windows 10 Anniversary Update with the latest Windows Update patches must be installed. -3. [Docker for Windows (Beta)](https://docs.docker.com/docker-for-windows/) (build 1.12.2-beta28 7813 or later) must be installed. +2. Windows 10 Anniversary Update with that latest Windows Update patches. Specifically [KB3194798](https://support.microsoft.com/en-us/help/3194798/cumulative-update-for-windows-10-version-1607-and-windows-server-2016-october-11,-2016) must be installed. +3. [Docker for Windows](https://docs.docker.com/docker-for-windows/) (build 1.13.0 or later) must be installed. 4. **Switch to Windows containers** must be selected. In the notification area, click **Docker for Windows**, and then select **Switch to Windows containers**. After the machine restarts, ensure that this setting is retained. #### Console output does not appear in Visual Studio's output window while debugging a console application @@ -66,11 +66,6 @@ To work around this issue, open web.release.config in the solution and comment o ``` -#### When switching to windows containers, you see an error stating, "Error response from daemon: i/o timeout" - -This issue in Docker for Windows can be tracked at https://github.com/docker/for-win/issues/178. - - ## Visual Studio 2015 ### **Linux containers** @@ -136,58 +131,6 @@ docker info If this returns an error, then attempt to start the **Docker for Windows** desktop app. If the desktop app is running, then **Moby** should be visible in the notification area. Right-click **Moby** and open **Settings**. Click **Reset**, and then restart Docker. -## Manually upgrading from version 0.31 to 0.40 -To manually upgrade Docker for Windows: - -1. Back up the project. -1. Delete the following files in the project: - - ``` - Dockerfile - Dockerfile.debug - DockerTask.ps1 - docker-compose-yml - docker-compose.debug.yml - .dockerignore - Properties\Docker.props - Properties\Docker.targets - ``` - -1. Close the solution and remove the following lines from the .xproj file: - - ``` - 0.xx - - - ``` - -1. Reopen the solution. -1. Remove the following lines from the Properties\launchSettings.json file: - - ``` - "Docker": { - "executablePath": "%WINDIR%\\System32\\WindowsPowerShell\\v1.0\\powershell.exe", - "commandLineArgs": "-ExecutionPolicy RemoteSigned .\\DockerTask.ps1 -Run -Environment $(Configuration) -Machine '$(DockerMachineName)'" - } - ``` - -1. Remove the following files related to Docker from project.json in the publishOptions: - - ``` - "publishOptions": { - "include": [ - ... - "docker-compose.yml", - "docker-compose.debug.yml", - "Dockerfile.debug", - "Dockerfile", - ".dockerignore" - ] - }, - ``` - -1. Uninstall the previous version and install Docker Tools 0.40. Then go to **Add > Docker Support** from the context menu for your ASP.NET Core web or console application. This adds the new required Docker artifacts back to your project. - ## An error dialog occurs when attempting to add Docker Support or debug (F5) an ASP.NET Core application in a container After uninstalling and installing extensions, the Managed Extensibility Framework (MEF) cache in Visual Studio can become corrupted. When this occurs, it can cause various error messages when you're adding Docker Support and/or attempting to run or debug (F5) your ASP.NET Core application. As a temporary workaround, use the following steps to delete and regenerate the MEF cache. From 88733c835e59d5e2b513de5a5781efc430b4b17b Mon Sep 17 00:00:00 2001 From: "Stephen A. Zarkos" Date: Thu, 2 Feb 2017 15:22:23 -0800 Subject: [PATCH 35/90] Minor updates to linux-create-upload-generic --- .../virtual-machines-linux-create-upload-generic.md | 12 ++++++++---- 1 file changed, 8 insertions(+), 4 deletions(-) diff --git a/articles/virtual-machines/virtual-machines-linux-create-upload-generic.md b/articles/virtual-machines/virtual-machines-linux-create-upload-generic.md index 5da58c87c4778..083069941ca39 100644 --- a/articles/virtual-machines/virtual-machines-linux-create-upload-generic.md +++ b/articles/virtual-machines/virtual-machines-linux-create-upload-generic.md @@ -14,7 +14,7 @@ ms.workload: infrastructure-services ms.tgt_pltfrm: vm-linux ms.devlang: na ms.topic: article -ms.date: 12/02/2016 +ms.date: 02/02/2017 ms.author: szark --- @@ -140,6 +140,7 @@ The [Azure Linux Agent](virtual-machines-linux-agent-user-guide.md?toc=%2fazure% * In some cases the Azure Linux Agent may not be compatible with NetworkManager. Many of the RPM/Deb packages provided by distributions configure NetworkManager as a conflict to the waagent package, and thus will uninstall NetworkManager when you install the Linux agent package. ## General Linux System Requirements + * Modify the kernel boot line in GRUB or GRUB2 to include the following parameters. This will also ensure all console messages are sent to the first serial port, which can assist Azure support with debugging issues: console=ttyS0,115200n8 earlyprintk=ttyS0,115200 rootdelay=300 @@ -150,13 +151,14 @@ The [Azure Linux Agent](virtual-machines-linux-agent-user-guide.md?toc=%2fazure% rhgb quiet crashkernel=auto - Graphical and quiet boot are not useful in a cloud environment where we want all the logs to be sent to the serial port. - - The `crashkernel` option may be left configured if desired, but note that this parameter will reduce the amount of available memory in the VM by 128MB or more, which may be problematic on the smaller VM sizes. + Graphical and quiet boot are not useful in a cloud environment where we want all the logs to be sent to the serial port. The `crashkernel` option may be left configured if desired, but note that this parameter will reduce the amount of available memory in the VM by 128MB or more, which may be problematic on the smaller VM sizes. + * Installing the Azure Linux Agent The Azure Linux Agent is required for provisioning a Linux image on Azure. Many distributions provide the agent as an RPM or Deb package (the package is typically called 'WALinuxAgent' or 'walinuxagent'). The agent can also be installed manually by following the steps in the [Linux Agent Guide](virtual-machines-linux-agent-user-guide.md?toc=%2fazure%2fvirtual-machines%2flinux%2ftoc.json). + * Ensure that the SSH server is installed and configured to start at boot time. This is usually the default. + * Do not create swap space on the OS disk The Azure Linux Agent can automatically configure swap space using the local resource disk that is attached to the VM after provisioning on Azure. Note that the local resource disk is a *temporary* disk, and might be emptied when the VM is deprovisioned. After installing the Azure Linux Agent (see previous step), modify the following parameters in /etc/waagent.conf appropriately: @@ -166,6 +168,7 @@ The [Azure Linux Agent](virtual-machines-linux-agent-user-guide.md?toc=%2fazure% ResourceDisk.MountPoint=/mnt/resource ResourceDisk.EnableSwap=y ResourceDisk.SwapSizeMB=2048 ## NOTE: set this to whatever you need it to be. + * As a final step, run the following commands to deprovision the virtual machine: # sudo waagent -force -deprovision @@ -176,5 +179,6 @@ The [Azure Linux Agent](virtual-machines-linux-agent-user-guide.md?toc=%2fazure% > On Virtualbox you may see the following error after running 'waagent -force -deprovision': `[Errno 5] Input/output error`. This error message is not critical and can be ignored. > > + * You will then need to shut down the virtual machine and upload the VHD to Azure. From bf44583f13e341f758c6b7f2fa656af4e50b7ee0 Mon Sep 17 00:00:00 2001 From: Todd Abel Date: Thu, 2 Feb 2017 15:22:26 -0800 Subject: [PATCH 36/90] Updated with feedback --- .../service-fabric-diagnostics-overview.md | 82 ++++++++++--------- 1 file changed, 44 insertions(+), 38 deletions(-) diff --git a/articles/service-fabric/service-fabric-diagnostics-overview.md b/articles/service-fabric/service-fabric-diagnostics-overview.md index 4dd73a07f2afe..8cb770131f6db 100644 --- a/articles/service-fabric/service-fabric-diagnostics-overview.md +++ b/articles/service-fabric/service-fabric-diagnostics-overview.md @@ -19,38 +19,43 @@ ms.author: toddabel --- # Monitor and diagnose Azure Service Fabric applications -Monitoring, detecting, diagnosing, and troubleshooting allow for services to continue with minimal disruption to the user experience. While monitoring and diagnostics are critical in an actual deployed production environment, the efficacy will depend on adopting a similar model during development of services to ensure they work when you move to a real-world setup. Service Fabric makes it easy for service developers to implement diagnostics that can seamlessly work across both single-machine local development setups and real-world production cluster setups. +Monitoring, detecting, diagnosing, and troubleshooting allow for services to continue with minimal disruption to the user experience, providing business insights, monitoring resource usage, detecting hardware and software failures or performance issues and diagnosing potential service behavior issues. While monitoring and diagnostics are critical in an actual deployed production environment, the efficacy will depend on adopting a similar model during development of services to ensure they work when you move to a real-world setup. Service Fabric makes it easy for service developers to implement diagnostics that can seamlessly work across both single-machine local development setups and real-world production cluster setups. -Monitoring is a broad term that encompasses instrumenting the code, collecting the instrumentation logs, analyzing the logs, visualizing insights based on the log data, alerting based on log values and insights, monitoring the infrastructure and allowing engineers to detect and diagnose issues that affect their customers. This article is intended to provide an overview of monitoring for Service Fabric clusters hosted in Azure or on premises, deployed on Windows or Linux using .NET. +Monitoring is a broad term that encompasses instrumenting the code, collecting the instrumentation logs, analyzing the logs, visualizing insights based on the log data, alerting based on log values and insights, monitoring the infrastructure and allowing engineers to detect and diagnose issues that affect their customers. This article is intended to provide an overview of monitoring for Service Fabric clusters hosted in Azure or on premises, deployed on Windows or Linux using .NET. Let's start by dividing the problem into three parts +- Instrument code or infrastructure +- Collection of generated events +- Storage, aggregation, visualization and Analysis + +While there are some products that cover all three aspects, many customers choose different technologies for each area. It is important that each plugs together to deliver an end to end monitoring solution for the application. # Monitoring infrastructure -While Service Fabric helps to keep an application running even during infrastructure failures, the application operators need to understand if an error is occurring within their application or is due to a fault in the underlying infrastructure. Monitoring of the infrastructure is needed also needed for capacity planning to know when to add or remove infrastructure. Both the infrastructure and the application that compose a Service Fabric deployment are important to monitor and troubleshoot, though as long as the application is available to customers, some of the infrastructure could be having issues. +While Service Fabric helps to keep an application running even during infrastructure failures, the application operators need to understand if an error is occurring within their application or is due to a fault in the underlying infrastructure. Monitoring of the infrastructure is also needed for capacity planning to know when to add or remove infrastructure. Both the infrastructure and the application that compose a Service Fabric deployment are important to monitor and troubleshoot, though as long as the application is available to customers, some of the infrastructure could be having issues. ## Azure Monitoring -For Azure deployed clusters, [Azure Monitoring](../monitoring-and-diagnostics/toc.md) gives the ability to monitor many of the Azure resources on which a Service Fabric cluster are built. A set of metrics is automatically collected and displayed in the Azure Portal for the [Virtual Machine Scale Set (VMSS)](../monitoring-and-diagnostics/monitoring-supported-metrics#microsoftcomputevirtualmachinescalesets) and individual [VMs](../monitoring-and-diagnostics/monitoring-supported-metrics#microsoftcomputevirtualmachinescalesetsvirtualmachines). This information can be viewed in the Azure portal by selecting the resource group that the Service Fabric cluster is contained within and choosing the VMSS to view. Then choose Metrics within the Monitoring navigation section to view a graph of the values +For Azure deployed clusters, [Azure Monitoring](../monitoring-and-diagnostics/toc.md) gives the ability to monitor many of the Azure resources on which a Service Fabric cluster are built. A set of metrics is automatically collected and displayed in the Azure portal for the [Virtual Machine Scale Set (VMSS)](../monitoring-and-diagnostics/monitoring-supported-metrics.md#microsoftcomputevirtualmachinescalesets) and individual [VMs](../monitoring-and-diagnostics/monitoring-supported-metrics.md#microsoftcomputevirtualmachinescalesetsvirtualmachines). This information can be viewed in the Azure portal by selecting the resource group that the Service Fabric cluster is contained within and choosing the VMSS to view. Then choose Metrics within the Monitoring navigation section to view a graph of the values ![Azure portal view of collected metric information](./media/service-fabric-diagnostics-overview/azure-monitoring-metrics.png) -The charts a can be customized by following the instructions in the article [Overview of Metrics in Microsoft Azure](../monitoring-and-diagnostics/insights-how-to-customize-monitoring.md). Alerts can also be created based on these metrics as described in the article [Use Azure portal to create alerts for Azure services](../monitoring-and-diagnostics/insights-alerts-portal.md). Alerts can be sent to a notification service using web hooks as described in the article [Configure a web hook on an Azure metric alert(../monitoring-and-diagnostics/insights-webhooks-alerts.md). Azure Monitoring supports a single subscription, if support for multiple subscriptions is needed or additional features are needed, [Log Analytics](https://azure.microsoft.com/documentation/services/log-analytics/) part of [Operations Management Suite](https://www.microsoft.com/cloud-platform/operations-management-suite) – Provides a holistic IT management solution for both on-premises and cloud-based infrastructure. Data from Azure Monitoring can be routed directly to Log Analytics so you can see metrics and logs for your entire environment in a single place. +The charts can be customized by following the instructions in the article [Overview of Metrics in Microsoft Azure](../monitoring-and-diagnostics/insights-how-to-customize-monitoring.md). Alerts can also be created based on these metrics as described in the article [Use Azure portal to create alerts for Azure services](../monitoring-and-diagnostics/insights-alerts-portal.md). Alerts can be sent to a notification service using web hooks as described in the article [Configure a web hook on an Azure metric alert(../monitoring-and-diagnostics/insights-webhooks-alerts.md). Azure Monitoring supports a single subscription. If support for multiple subscriptions is needed or additional features are needed, [Log Analytics](https://azure.microsoft.com/documentation/services/log-analytics/) part of [Operations Management Suite](https://www.microsoft.com/cloud-platform/operations-management-suite) provides a holistic IT management solution for both on-premises and cloud-based infrastructure. Data from Azure Monitoring can be routed directly to Log Analytics so you can see metrics and logs for your entire environment in a single place. [Operations Management Suite](https://www.microsoft.com/cloud-platform/operations-management-suite) is the recommended method for monitoring your on premise infrastructure, but any existing solution that your company uses for infrastructure monitoring can also be used. ## Service Fabric Support Logs -If you should need to contact Microsoft support for help with your Azure Service Fabric Cluster, support logs are almost always required. If your cluster is hosted within Azure, these logs are automatically configured and collected as part of creating a cluster. The logs are stored in a dedicated storage account that can be seen in your cluster's resource group. There is no fixed name to the storage account, but within the account you'll see blobs containers and tables starting with 'fabric'. If your cluster is a standalone cluster, you should configured collection of these logs following the guidance in [Create and manage a standalone Azure Service Fabric cluster](service-fabric-cluster-creation-for-windows-server.md) and [Configuration settings for standalone Windows cluster](service-fabric-cluster-manifest.md). For standalone, the logs should be sent to a local file share. You are **required** to have these logs for support, but they are not intended to use usable by anyone outside of the Microsoft customer support team. Using my best Obi Wan Kenobi impression, these are not the logs you are interested in... +If you should need to contact Microsoft support for help with your Azure Service Fabric Cluster, support logs are almost always required. If your cluster is hosted within Azure, these logs are automatically configured and collected as part of creating a cluster. The logs are stored in a dedicated storage account that can be seen in your cluster's resource group. There is no fixed name to the storage account, but within the account you'll see blob containers and tables starting with 'fabric'. If your cluster is a standalone cluster, you should configure collection of these logs following the guidance in [Create and manage a standalone Azure Service Fabric cluster](service-fabric-cluster-creation-for-windows-server.md) and [Configuration settings for standalone Windows cluster](service-fabric-cluster-manifest.md). For standalone Service Fabric, the logs should be sent to a local file share. You are **required** to have these logs for support, but they are not intended to use usable by anyone outside of the Microsoft customer support team. Using my best Obi Wan Kenobi impression, these are not the logs you are interested in... # Instrument your code -Instrumenting the code is the basis for most other aspects of monitoring your services. It is often surprising to people how much instrumentation you will need, but considering that this instrumentation is the one way you have of knowing something is wrong and to diagnose what needs to be fixed, it shouldn't be. While if it technically possible do to, it is very unusual to connect a debugger to a production service, so having detailed instrumentation data is extremely important. When producing this volume of information shipping all events off the local node can be very expensive. Many services have use two part strategy for dealing with the volume of instrumentation data: +Instrumenting the code is the basis for most other aspects of monitoring your services. It is often surprising to people how much instrumentation you will need, but considering that this instrumentation is the only way you have of knowing something is wrong and to diagnose what needs to be fixed, it shouldn't be. While it is technically possible to do, it is very unusual to connect a debugger to a production service, so having detailed instrumentation data is extremely important. When producing this volume of information shipping all events off the local node can be very expensive. Many services use a two-part strategy for dealing with the volume of instrumentation data: * All events are kept in local rolling log file for a short interval of days and only collected when needed for debugging. Typically the events needed for detailed diagnosis are left on the node to reduce costs and resource utilization * Any events indicating service health such as error events, heart beat events or performance events are sent to a central repository where they can be used to raise alerts of an unhealthy service. -The next sections describe different approaches for instrumenting your code and when you should choose one over another. +There are solution that will automatically instrument your code. While these products can work well, manual instrumentation is almost always needed. In the end, you must have enough information to forensically debug the application. The next sections describe different approaches for instrumenting your code and when you should choose one over another. ## EventSource -When you create an Azure Service Fabric solution from a template in Visual Studio, an EventSource derived class (*ServiceEventSource* or *ActorEventSource*) is generated. This provides a template to which can be added additional events that are appropriate for your applicaiton or service. The EventSource name **must** be unique and should be renamed from starting with 'MyCompany-<solution>-<project>'. Having multiple EventSource definitions using the same name will cause an issue at runtime. Each defined event must have a unique identifier. If an identifer is not unique a runtime failure will occur. Often ranges of values are pre-assigned for identifiers to avoid conflicts between separate development teams. +When you create an Azure Service Fabric solution from a template in Visual Studio, an EventSource derived class (*ServiceEventSource* or *ActorEventSource*) is generated. This provides a template to which you can add additional events appropriate for your application or service. The EventSource name **must** be unique and should be renamed from the starting string of 'MyCompany-<solution>-<project>'. Having multiple EventSource definitions using the same name will cause an issue at runtime. Each defined event must have a unique identifier. If an identifer is not unique a runtime failure will occur. Often ranges of values are pre-assigned for identifiers to avoid conflicts between separate development teams. For additional information on EventSource take a look at [Vance's blog](https://blogs.msdn.microsoft.com/vancem/2012/07/09/introduction-tutorial-logging-etw-events-in-c-system-diagnostics-tracing-eventsource/) or the [MSDN documentation](https://msdn.microsoft.com/library/dn774985(v=pandp.20).aspx). ### Using structured EventSource events -Each of the events below are defined for a specific case, a service type was registered for example. Having messages defined in this way allows data to be packaged along with the text of the error. This allows for better searching and filtering based on the names or values of the properties specified. Structuring the instrumentation output makes it easier to consume, but required more thought and time to define a new event for each use case. Some event definitions can be shared across the entire application, e.g. a method start or stop event would be reused across many services within an application. A domain specific service, such as an order system, may have a CreateOrder event, which will have it's own unique event. Often this approach generates lots of events and potentially requires coordination of identifiers across project teams. +Each of the events below is defined for a specific case, a service type was registered for example. Having messages defined in this way allows data to be packaged along with the text of the error. This allows for better searching and filtering based on the names or values of the properties specified. Structuring the instrumentation output makes it easier to consume, but requires more thought and time to define a new event for each use case. Some event definitions can be shared across the entire application, e.g. a method start or stop event would be reused across many services within an application. A domain-specific service, such as an order system, may have a CreateOrder event, which will have its own unique event. Often this approach generates lots of events and potentially requires coordination of identifiers across project teams. For an more complete example of structure EventSources in Service Fabric look at the PartyCluster.ApplicationDeployService within the Party Cluster sample. ```csharp [EventSource(Name = "MyCompany-VotingState-VotingStateService")] @@ -80,7 +85,7 @@ Each of the events below are defined for a specific case, a service type was reg } ``` ### Using EventSource generically -Because defining specific events can be difficult, many people define a small number of events with a common set of parameters that generally output there information as a string. Much of the structured aspect is lost, making it more difficult to search and filter on the results. With this approach, a small number of events usually corresponding to the logging levels are defined. The snipped below defines a debug and error message. +Because defining specific events can be difficult, many people define a small number of events with a common set of parameters that generally output their information as a string. Much of the structured aspect is lost, making it more difficult to search and filter the results. With this approach, a small number of events usually corresponding to the logging levels are defined. The snippet below defines a debug and error message. ```csharp [EventSource(Name = "MyCompany-VotingState-VotingStateService")] internal sealed class ServiceEventSource : EventSource @@ -103,17 +108,18 @@ Because defining specific events can be difficult, many people define a small nu [Event(ErrorEventId, Level = EventLevel.Error, Message = "Error: {0} - {1}")] public void Error(string error, string msg) { - WriteEvent(DebugEventId, error, msg); + WriteEvent(ErrorEventId, error, msg); } ``` +Using a hybrid approach of both structured and generic instrumentation can also work well. In the case structured instrumentation is used for reporting errors and metrics, while generic events can be use for the detailed logging that is consumed by engineers when troubleshooting. ## ASP.NET Core logging -Choosing how to instrument your code can be difficult, if you chose poorly and have to re-instrument, you are revisiting and potentially destabilizing your code base. To reduce the risk, developers can choose a instrumentation library such as [Microsoft.Extensions.Logging](https://www.nuget.org/packages/Microsoft.Extensions.Logging/) provided by ASP.NET Core. This provides an [ILogger](https://docs.microsoft.com/en-us/aspnet/core/api/microsoft.extensions.logging.ilogger) interface that allows the provider of your choice to be used while minimizing the impact to existing code. Another nice aspect of this is that the code can be used not only in .NET Core on Windows and Linux, but in the full framework too, giving the ability to standardize your instrumentation code across .NET and .NET Core. +Choosing how to instrument your code can be difficult, if you chose poorly and have to re-instrument, you are revisiting and potentially destabilizing your code base. To reduce the risk, developers can choose an instrumentation library such as [Microsoft.Extensions.Logging](https://www.nuget.org/packages/Microsoft.Extensions.Logging/) provided by ASP.NET Core. This provides an [ILogger](https://docs.microsoft.com/en-us/aspnet/core/api/microsoft.extensions.logging.ilogger) interface that allows the provider of your choice to be used while minimizing the impact to existing code. Another nice aspect of this is that the code can be used not only in .NET Core on Windows and Linux, but in the full framework too, giving the ability to standardize your instrumentation code across .NET and .NET Core. ### How to use Microsoft.Extensions.Logging within Service Fabric -1. Add the **Microsoft.Extensions.Logging** NuGet package to the project to instrument. You'll also want to add any provider packages, we'll do this for a third party package below. See [Logging in ASP.NET Core](https://docs.microsoft.com/en-us/aspnet/core/fundamentals/logging) for more information -2. Add a using statement for 'Microsoft.Extensions.Logging' to your service class +1. Add the **Microsoft.Extensions.Logging** NuGet package to the project to instrument. You'll also want to add any provider packages, we'll do this for a third-party package below. See [Logging in ASP.NET Core](https://docs.microsoft.com/en-us/aspnet/core/fundamentals/logging) for more information +2. Add a using directive for 'Microsoft.Extensions.Logging' to your service file 3. Define a private variable within your service class ```csharp private ILogger _logger = null; @@ -133,9 +139,9 @@ Choosing how to instrument your code can be difficult, if you chose poorly and h ``` ### Using other logging providers -There are some third party providers that work with this approach, [SeriLog](https://serilog.net/), [NLog](http://nlog-project.org/) and [loggr](https://github.com/imobile3/Loggr.Extensions.Logging) are three examples. Each of these can be plugged into ASP.Net Core Logging and can also be used separately. SeriLog uses has a feature that allows enrichment of all messages sent from a logger, which can be useful to to output the service name, type, partition information. To leverage this capability with in the ASP.NET Core infrastructure, perform the following +There are some third-party providers that work with this approach, [SeriLog](https://serilog.net/), [NLog](http://nlog-project.org/) and [loggr](https://github.com/imobile3/Loggr.Extensions.Logging) are three examples. Each of these can be plugged into ASP.Net Core Logging and can also be used separately. SeriLog has a feature that allows enrichment of all messages sent from a logger, which can be useful to output the service name, type, and partition information. To leverage this capability with in the ASP.NET Core infrastructure, perform the following -1. Add **Serilog**, **Serilog.Extensions.Logging**, **Serilog.Sinks.Observable** NuGet packages to the project. Also add **Serilog.Sinks.Literate** for this example, a better approach is shown later in this article +1. Add **Serilog**, **Serilog.Extensions.Logging**, **Serilog.Sinks.Observable** NuGet packages to the project. Also add **SeriLog.Sinks.Literate** for this example, a better approach is shown later in this article 2. Create a LoggerConfiguration and the logger instance in SeriLog ```csharp Log.Logger = new LoggerConfiguration().WriteTo.LiterateConsole().CreateLogger(); @@ -162,41 +168,41 @@ There are some third party providers that work with this approach, [SeriLog](htt _logger = new LoggerFactory().AddSerilog(serilog.ForContext(properties)).CreateLogger(); } ``` -5. Instrument the code the same as when using ASP.NET Core without SiriLog. +5. Instrument the code the same as when using ASP.NET Core without SeriLog. [!NOTE] It is not recommended that the static Log.Logger be used with this approach because Service Fabric can host multiple instances of the same service type within a single process. This would mean that the last writer of the property enrichers would have their values shown for all instances running. This is one reason why the _logger variable is a private member variable of the service class. This also means that the _logger must be made available to common code that may be used across services. ## Which one should I use? -If your application cares deeply about performance, then EventSource is the best approach to use because it will **generally** use fewer resources and perform better than using ASP.NET Core logging or any of the thrid party solutions. This isn't an issue for many services, but if your service is very performance oriented using EventSource may be a better choice. Of course, to get the same benefits of structure logging, EventSource requires a large investement from the engineering team. The best way to determine what to choose for your project is to do a quick prototype of what you would do for each approach and then choose the approach that best fits your needs. +If your application cares deeply about performance, then EventSource is the best approach to use because it **generally** uses fewer resources and perform better than using ASP.NET Core logging or any of the third-party solutions. This isn't an issue for many services, but if your service is very performance oriented using EventSource may be a better choice. Of course, to get the same benefits of structured logging, EventSource requires a large investment from the engineering team. The best way to determine what to choose for your project is to do a quick prototype of what you would do for each approach and then choose the approach that best fits your needs. # Event and log collection ## Azure Diagnostics -Beyond what Azure Monitoring already provides, Azure also provides a means of collecting events from each of the services to a central location. There are two articles that show how to configure event collection for [Windows](service-fabric-diagnostics-how-to-setup-wad.md) and [Linux](service-fabric-diagnostics-how-to-setup-lad.md). These articles show collecting the event data and sending it to Azure storage. This is very easily done in the portal or ARM template by enabling diagnostics. Turning this on collects a few event sources that Service Fabric automatically produces: +Beyond what Azure Monitoring already provides, Azure also provides a means of collecting events from each of the services to a central location. There are two articles that show how to configure event collection for [Windows](service-fabric-diagnostics-how-to-setup-wad.md) and [Linux](service-fabric-diagnostics-how-to-setup-lad.md). These articles show collecting the event data and sending it to Azure storage. This is very easily done in the portal or Resource Manager template by enabling diagnostics. Turning this on collects a few event sources that Service Fabric automatically produces: - EventSource events and performance counters when using the Reliable Actor programming model. The events are enumerated in the article on [Diagnostic and performance monitoring for Reliable Actors](service-fabric-reliable-actors-diagnostics.md) - EventSource events when using the Reliable Services programming model. The events are enumerated in the article on [Diagnostic functionality for Stateful Reliable Services](service-fabric-reliable-services-diagnostics.md) - System events are emitted as ETW events. There are a large number of events that are emitted from Service Fabric as part of this category they include service placement, start/stop events. The best way to see the events emitted is to use [Visual Studio's diagnostic viewer](service-fabric-diagnostics-how-to-monitor-and-diagnose-services-locally.md) when running on your local machine. Because these events are native ETW events, there are some limitations for how they can be collected - As of the 5.4 release of Service Fabric health and load metric events are also exposed. This allows collection of these events to be used for historical reporting and alerting. These events are also native ETW events and will have some limitations for how they can be collected -When configured, these events will appear in one of the Azure Storage accounts created when the cluster was created, assuming diagnostic was enabled. The tables are named *WADServiceFabricReliableActorEventTable*, *WADServiceFabricReliableServiceEventTable* and *WADServiceFabricSystemEventTable*. The health events are not added by default and require that the ARM template be modified. Refer to [Collect log by using Azure Diagnostics](service-fabric-diagnostics-how-to-setup-wad.md) for details. +When configured, these events appear in one of the Azure Storage accounts created when the cluster was created, assuming diagnostic was enabled. The tables are named *WADServiceFabricReliableActorEventTable*, *WADServiceFabricReliableServiceEventTable* and *WADServiceFabricSystemEventTable*. The health events are not added by default and require that the Resource Manager template be modified. Refer to [Collect log by using Azure Diagnostics](service-fabric-diagnostics-how-to-setup-wad.md) for details. -These articles also show how to get custom events into Azure storage. Any of the existing Azure Diagnostic articles on how to configure performance counters or other monitoring information from a VM to Azure Diagnostics will also work with a Service Fabric cluster. For instance, if Azure table storage as a destination isn't what you want, there is an article on how [Streaming Azure Diagnostics data in the hot path by using Event Hubs](../event-hubs/event-hubs-streaming-azure-diags-data.md). Once the events are in Event Hub, they can be read and sent to the location of your choosing. +These articles also show how to get custom events into Azure Storage. Any of the existing Azure Diagnostic articles on how to configure performance counters or other monitoring information from a VM to Azure Diagnostics will also work with a Service Fabric cluster. For instance, if Azure table storage as a destination isn't what you want, there is an article on how [Streaming Azure Diagnostics data in the hot path by using Event Hubs](../event-hubs/event-hubs-streaming-azure-diags-data.md). Once the events are in Event Hub, they can be read and sent to the location of your choosing. There is also an article on integrating [Azure diagnostic information with Application Insights](https://azure.microsoft.com/blog/azure-diagnostics-integration-with-application-insights/) -One of the downsides of using Azure Diagnostics is that the configuration is done using a resource manager template and therefore occurs at the VMSS level only. A VMSS corresponds to a node type in Service Fabric. This means you must configure each node type for all of the applications and services that may run on a node of that type. This could be a large number of EventSources depending on the number of applications and services configured. Additionally, a resource manager deployment must be done any time the configuration of any application has changed. Ideally, monitoring configuration would travel along with the service configuration. +One of the downsides of using Azure Diagnostics is that the configuration is done using a resource manager template and therefore occurs at the VMSS level only. A VMSS corresponds to a node type in Service Fabric. This means you must configure each node type for all of the applications and services that may run on a node of that type. This could be a large number of EventSources depending on the number of applications and services configured. Additionally, a Resource Manager deployment must be done any time the configuration of any application has changed. Ideally, monitoring configuration would travel along with the service configuration. Azure Diagnostics only works for Service Fabric clusters deployed to Azure, but it works for both Windows and Linux clusters. ## EventFlow -[EventFlow was release by the Visual Studio](service-fabric-diagnostic-collect-logs-without-an-agent.md) team and provides a mechanism for routing events from a node to one or more monitoring destinations. Because it is included as a NuGet package in your service project the code and the configuration for EventFlow travels with the service, eliminating the per node configuration issue mentioned about Azure Diagnostics. EventFlow runs within your service process and directly connects to the configured outputs. Because of this direct connection, EventFlow works for Azure, container or on-premise deployments of a service. Care must be taken when running in high density scenarios such as a container because each EventFlow pipeline will make an external connection, if you are hosting lots of processes, you'll end up with lots of outbound connections! This isn't as much of an issue for Service Fabric applications because all replicas of a ServiceType run within the same process, limiting the number of outbound connections. EventFlow also offers filtering of events, so only the events that match the specified filter are sent. +[EventFlow was released by the Visual Studio](service-fabric-diagnostic-collect-logs-without-an-agent.md) team and provides a mechanism for routing events from a node to one or more monitoring destinations. Because it is included as a NuGet package in your service project the code and the configuration for EventFlow travels with the service, eliminating the per node configuration issue mentioned about Azure Diagnostics. EventFlow runs within your service process and directly connects to the configured outputs. Because of this direct connection, EventFlow works for Azure, container or on-premise deployments of a service. Care must be taken when running in high density scenarios such as a container because each EventFlow pipeline will make an external connection, if you are hosting lots of processes, you'll end up with lots of outbound connections! This isn't as much of an issue for Service Fabric applications because all replicas of a ServiceType run within the same process, limiting the number of outbound connections. EventFlow also offers filtering of events, so only the events that match the specified filter are sent. For detailed information on using EventFlow with Service Fabric, see [Collect logs directly from an Azure Service Fabric service process](service-fabric-diagnostic-collect-logs-without-an-agent.md) [!NOTE] In a future release of Service Fabric an EventSource host application will be made available allowing listening to ETW based inputs, collection of node level metrics and rolling log file support. Using EventFlow is pretty easy 1. Add the NuGet package to your service project -2. Within the service's **main** function create the EventFlow pipeline and configure the outputs. In this case, we're showing using SeriLog as an output +2. Within the service's **Main** function create the EventFlow pipeline and configure the outputs. In this case, we're showing using SeriLog as an output ```csharp internal static class Program { @@ -275,7 +281,7 @@ Using EventFlow is pretty easy "extensions": [] } ``` -In the configuration there are two inputs defined, the two EventSource based sources created by Service Fabric and the EventSource for the service. Notice that the system level and health events that use ETW are not available to EventFlow. This is because a high level privilege is required to listen to an ETW source and services should never run with any high privileges. The other input is SeriLog, it's configuration occurred in the **main** method. There are also some filters applied, the first tells EventFlow to drop all events that are of an event level of verbose. We'll come back to the other filter definition in a minute. There are also two outputs configured, standard output, which will write to the output window within Visual Studio. The other output is ApplicationInsights, just be sure to add your instrumentation key. +In the configuration there are two inputs defined, the two EventSource based sources created by Service Fabric and the EventSource for the service. Notice that the system level and health events that use ETW are not available to EventFlow. This is because a high level privilege is required to listen to an ETW source and services should never run with any high privileges. The other input is SeriLog, it's configuration occurred in the **Main** method. There are also some filters applied, the first tells EventFlow to drop all events that are of an event level of verbose. We'll come back to the other filter definition in a minute. There are also two outputs configured, standard output, which will write to the output window within Visual Studio. The other output is ApplicationInsights, just be sure to add your instrumentation key. 4. The last step is to instrument the code. In this example, we're going to instrument RunAsync in a few different ways as an example. In the code below, we're still using SeriLog and some of the syntax used is specific to SeriLog. Be aware of the specific capabilities for the logging solution you choose. There are three events generated, a debug level event and two informational, the second which is tracking the request duration. With the configuration of EventFlow above, the Debug level event should not flow to the output. @@ -302,28 +308,28 @@ In the configuration there are two inputs defined, the two EventSource based sou ![Application Insights Search view of events](./media/service-fabric-diagnostics-overview/ai-search-events.png) -The trace are at the bottom of the picture. You can see we have only two events, the debug level event was dropped by EventFlow. So what's the request entry just above the trace? It's the third '_logger' instrumentation line that shows the event was translated into a request metric within Application Insights. Let's go back to the filter definition, where the type is 'metadata'. This is declaring that an event that has a property of 'RequestName' with the value 'MyRequest' and that another property, 'Duration' contains the duration of the request in milliseconds. This is what you see in the request event in Application Insights. The same approach works with any of the supported EventFlow inputs including EventSource. +The traces are at the bottom of the picture. You can see we have only two events, the debug level event was dropped by EventFlow. So what's the request entry just above the trace? It's the third '_logger' instrumentation line that shows the event was translated into a request metric within Application Insights. Let's go back to the filter definition, where the type is 'metadata'. This is declaring that an event that has a property of 'RequestName' with the value 'MyRequest' and that another property, 'Duration' contains the duration of the request in milliseconds. This is what you see in the request event in Application Insights. The same approach works with any of the supported EventFlow inputs including EventSource. -If the cluster is a standalone cluster that cannot for be connected to a cloud based solution for policy reasons, EventFlow supports Elastic Search as an output, but other outputs can be written and pull requests are encouraged. Some of the third party providers for ASP.NET Core logging also have solutions that will support on premise installations. +If the cluster is a standalone cluster that cannot be connected to a cloud-based solution for policy reasons, EventFlow supports Elastic Search as an output, but other outputs can be written and pull requests are encouraged. Some of the third-party providers for ASP.NET Core logging also have solutions that support on-premises installations. # Azure Service Fabric health and load reporting -Service Fabric has it's own health model that is described in detail in a few articles -- [Introduction to Service Fabric health monitoring](service-fabric/service-fabric-health-introduction.md) +Service Fabric has its own health model that is described in detail in a few articles +- [Introduction to Service Fabric health monitoring](service-fabric-health-introduction.md) - [Report and check service health](service-fabric-diagnostics-how-to-report-and-check-service-health.md) -- [Add custom Service Fabric health reports](service-fabric/service-fabric-report-health.md) +- [Add custom Service Fabric health reports](service-fabric-report-health.md) - [View Service Fabric health reports](service-fabric-view-entities-aggregated-health.md) -Health monitoring is critical to various aspects of operating a service. Most importantly is when Service Fabric is performing an upgrade, after each service has been upgraded and is made available to a subset of your customers, health checks must be passing before moving to the next upgrade domain. If good health cannot be achieved, the deployment will be rolled back leaving the application is a known good state. While some customers were impacted before the services could be rolled back, most customers didn't experience an issue. Also the resolution occurred relatively quickly and without having to wait for action from an human operator. The more health checks that are incorporated into the code, the more resilient the service will be to deployment issues. +Health monitoring is critical to various aspects of operating a service. Most importantly is when Service Fabric is performing a named application upgrade, after each upgrade domain of the service has been upgraded and is made available to your customers, health checks must pass before moving to the next upgrade domain. If good health cannot be achieved, the deployment is rolled back leaving the application in a known good state. While some customers were impacted before the services could be rolled back, most customers didn't experience an issue. Also, the resolution occurred relatively quickly and without having to wait for action from a human operator. The more health checks that are incorporated into the code, the more resilient the service is to deployment issues. -Another aspect of service health is reporting metrics from the service. Metrics are important in Service Fabric because they are used to balance resource usage and can be used as an indicator of system health. Let's say your application contains many services and each instance reports a Request Per Second (RPS) metric. If one of the service is using more resources than another service, Service Fabric will move service instances around the cluster trying to maintain even resource utilization. The article [Managing resource consumption and load in Service Fabric with metrics](service-fabric-cluster-resource-manager-metrics) provides a detailed explanation of how this works. +Another aspect of service health is reporting metrics from the service. Metrics are important in Service Fabric because they are used to balance resource usage and can be used as an indicator of system health. Let's say your application contains many services and each instance reports a Request Per Second (RPS) metric. If one of the services is using more resources than another service, Service Fabric will move service instances around the cluster trying to maintain even resource utilization. The article [Managing resource consumption and load in Service Fabric with metrics](service-fabric-cluster-resource-manager-metrics.md) provides a detailed explanation of how this works. Metrics also give insight into how your service is performing and over time can be used to check that the service is operating within expected parameters. For instance, if based on trends, at 9am on Monday morning the average RPS is 1000, then you may setup a health report that alerts if the RPS is below 500 or above 1500. Everything may be perfectly fine, but it may be worth a look to ensure your customers are having a great experience. Your service can define a set of metrics that can be reported for health purposes, but does not affect the resource balancing of the cluster, just set the metric weight to zero. We recommend that you start all metric with a weight of zero and don't increase the weight until you are sure that you understand how this will impact resource balancing for your cluster. [!TIP] -Take care not to have too main weighted metrics, it can be difficult to understand why service instances are being moved around, a few metrics can go a long way! +Take care not to have too many weighted metrics, it can be difficult to understand why service instances are being moved around, a few metrics can go a long way! -Candidates for metrics and health reports are anything that can indicate the health and performance of your application. A CPU performance counter can tell you how utilized your node is, but it doesn't really say if a particular service is health or not because multiple services will be running on a single node. On the other hand a metric such as RPS or items processed or request latency can all indicate the health of a particular service. +Candidates for metrics and health reports are anything that can indicate the health and performance of your application. A CPU performance counter can tell you how utilized your node is, but it doesn't really say if a particular service is healthy or not because multiple services will be running on a single node. On the other hand, a metric such as RPS or items processed or request latency can all indicate the health of a particular service. To report health, add code such as @@ -345,10 +351,10 @@ this.ServicePartition.ReportLoad(new List { new LoadMetric("MemoryIn A watchdog is a separate service that can watch health and load across services and report health for anything in the health model hierarchy. This can help to prevent errors that would not be detected based on the view of a single service. Watchdogs are also a good place to host code that can perform remediation actions for known conditions without any human interaction. # Visualization, Analysis and Alerting -The last part of monitoring is visualizing the event stream, reporting on service performance and alerting when an issue is detected. There are a lot of solutions that are used for this aspect of monitoring, Application Insights and OMS can be used to alert based on the stream of events. PowerBI or a third party solution such as [Kibana](https://www.elastic.co/products/kibana) or [Splunk](https://www.splunk.com/) can be used for visualizing the data. +The last part of monitoring is visualizing the event stream, reporting on service performance and alerting when an issue is detected. There are a lot of solutions that are used for this aspect of monitoring, Application Insights and OMS can be used to alert based on the stream of events. PowerBI or a third-party solution such as [Kibana](https://www.elastic.co/products/kibana) or [Splunk](https://www.splunk.com/) can be used for visualizing the data. ## Next steps -* [Azure Monitoring Overview](../monitoring-and-diagnostics/monitoring-overview.md) * [How to collect logs with Azure Diagnostics](service-fabric-diagnostics-how-to-setup-wad.md) -* [Using ElasticSearch as a Service Fabric application trace store](service-fabric-diagnostic-how-to-use-elasticsearch.md) +* [Collect logs directly from an Azure Service Fabric service process](service-fabric-diagnostic-collect-logs-without-an-agent.md) +* [Managing resource consumption and load in Service Fabric with metrics](service-fabric-cluster-resource-manager-metrics.md) From f532f1aea9b8c4be6707862be4001099aa3c1d32 Mon Sep 17 00:00:00 2001 From: TerryLanfear Date: Thu, 2 Feb 2017 15:23:03 -0800 Subject: [PATCH 37/90] reviewed articles for freshness --- .../security-center-add-next-generation-firewall.md | 6 +++--- .../security-center-apply-disk-encryption.md | 6 +++--- .../security-center-apply-system-updates.md | 6 +++--- ...security-center-enable-network-security-groups.md | 12 ++++++------ ...rity-center-enable-transparent-data-encryption.md | 10 +++++----- .../security-center-enable-vm-agent.md | 6 +++--- articles/security-center/security-center-pricing.md | 6 +++--- ...curity-center-provide-security-contact-details.md | 8 ++++---- .../security-center-remediate-os-vulnerabilities.md | 12 ++++++------ .../security-center/security-center-sql-database.md | 2 +- 10 files changed, 37 insertions(+), 37 deletions(-) diff --git a/articles/security-center/security-center-add-next-generation-firewall.md b/articles/security-center/security-center-add-next-generation-firewall.md index 9866abea2f222..b175a472bf41d 100644 --- a/articles/security-center/security-center-add-next-generation-firewall.md +++ b/articles/security-center/security-center-add-next-generation-firewall.md @@ -13,7 +13,7 @@ ms.devlang: na ms.topic: article ms.tgt_pltfrm: na ms.workload: na -ms.date: 10/26/2016 +ms.date: 02/02/2017 ms.author: terrylan --- @@ -22,8 +22,8 @@ Azure Security Center may recommend that you add a next generation firewall (NGF > [!NOTE] > This document introduces the service by using an example deployment. This is not a step-by-step guide. -> -> +> +> ## Implement the recommendation 1. In the **Recommendations** blade, select **Add a Next Generation Firewall**. diff --git a/articles/security-center/security-center-apply-disk-encryption.md b/articles/security-center/security-center-apply-disk-encryption.md index c942014bf2999..64a2a5fa03b30 100644 --- a/articles/security-center/security-center-apply-disk-encryption.md +++ b/articles/security-center/security-center-apply-disk-encryption.md @@ -13,7 +13,7 @@ ms.devlang: na ms.topic: article ms.tgt_pltfrm: na ms.workload: na -ms.date: 11/01/2016 +ms.date: 02/02/2017 ms.author: terrylan --- @@ -24,8 +24,8 @@ Disk Encryption leverages the industry standard [BitLocker](https://technet.micr > [!NOTE] > Azure Disk Encryption is supported on the following Windows server operating systems - Windows Server 2008 R2, Windows Server 2012, and Windows Server 2012 R2. Disk encryption is supported on the following Linux server operating systems - Ubuntu, CentOS, SUSE and SUSE Linux Enterprise Server (SLES). -> -> +> +> ## Implement the recommendation 1. In the **Recommendations** blade, select **Apply disk encryption**. diff --git a/articles/security-center/security-center-apply-system-updates.md b/articles/security-center/security-center-apply-system-updates.md index dd5e69018c668..c31aff000207f 100644 --- a/articles/security-center/security-center-apply-system-updates.md +++ b/articles/security-center/security-center-apply-system-updates.md @@ -13,7 +13,7 @@ ms.devlang: na ms.topic: article ms.tgt_pltfrm: na ms.workload: na -ms.date: 11/01/2016 +ms.date: 02/02/2017 ms.author: terrylan --- @@ -22,8 +22,8 @@ Azure Security Center monitors daily Windows and Linux virtual machines (VMs) f > [!NOTE] > This document introduces the service by using an example deployment. This is not a step-by-step guide. -> -> +> +> ## Implement the recommendation 1. In the **Recommendations** blade, select **Apply system updates**. diff --git a/articles/security-center/security-center-enable-network-security-groups.md b/articles/security-center/security-center-enable-network-security-groups.md index 0ba7899c9ac54..9df12b717340f 100644 --- a/articles/security-center/security-center-enable-network-security-groups.md +++ b/articles/security-center/security-center-enable-network-security-groups.md @@ -13,7 +13,7 @@ ms.devlang: na ms.topic: article ms.tgt_pltfrm: na ms.workload: na -ms.date: 11/01/2016 +ms.date: 02/02/2017 ms.author: terrylan --- @@ -24,19 +24,19 @@ If you do not have NSGs enabled, Security Center will present two recommendation > [!NOTE] > This document introduces the service by using an example deployment. This is not a step-by-step guide. -> -> +> +> ## Implement the recommendation 1. In the **Recommendations** blade, select **Enable Network Security Groups** on subnets or on virtual machines. ![Enable Network Security Groups][1] 2. This opens the blade **Configure Missing Network Security Groups** for subnets or for virtual machines, depending on the recommendation that you selected. Select a subnet or a virtual machine to configure a NSG on. - + ![Configure NSG for subnet][2] - + ![Configure NSG for VM][3] 3. On the **Choose network security group** blade select an existing NSG or select to create a new NSG. - + ![Choose Network Security Group][4] If you create a new NSG, follow the steps in [How to manage NSGs using the Azure portal](../virtual-network/virtual-networks-create-nsg-arm-pportal.md) to create a NSG and set security rules. diff --git a/articles/security-center/security-center-enable-transparent-data-encryption.md b/articles/security-center/security-center-enable-transparent-data-encryption.md index f7ed98c2e997e..5f965859ec224 100644 --- a/articles/security-center/security-center-enable-transparent-data-encryption.md +++ b/articles/security-center/security-center-enable-transparent-data-encryption.md @@ -13,7 +13,7 @@ ms.devlang: na ms.topic: article ms.tgt_pltfrm: na ms.workload: na -ms.date: 11/01/2016 +ms.date: 02/02/2017 ms.author: terrylan --- @@ -24,8 +24,8 @@ This recommendation applies to the Azure SQL service only; doesn't include SQL r > [!NOTE] > This document introduces the service by using an example deployment. This is not a step-by-step guide. -> -> +> +> ## Implement the recommendation 1. In the **Recommendations** blade, select **Enable Transparent Data Encryption**. @@ -34,9 +34,9 @@ This recommendation applies to the Azure SQL service only; doesn't include SQL r ![Select SQL DB to enable TDE on][2] 3. On the **Transparent data encryption** blade, select **ON** under Data encryption and select **Save** in the top ribbon of the blade. ![Turn on TDE][3] - + Once TDE is enabled on the selected SQL database, the **Encryption status** will change to **Encrypted**. - + ![Encryption status][4] ## See also diff --git a/articles/security-center/security-center-enable-vm-agent.md b/articles/security-center/security-center-enable-vm-agent.md index c22526efe0c1b..1f6cfabd67d45 100644 --- a/articles/security-center/security-center-enable-vm-agent.md +++ b/articles/security-center/security-center-enable-vm-agent.md @@ -13,7 +13,7 @@ ms.devlang: na ms.topic: article ms.tgt_pltfrm: na ms.workload: na -ms.date: 10/17/2016 +ms.date: 02/02/2017 ms.author: terrylan --- @@ -24,8 +24,8 @@ The VM Agent is installed by default for VMs that are deployed from the Azure Ma > [!NOTE] > This document introduces the service by using an example deployment. This is not a step-by-step guide. -> -> +> +> ## Implement the recommendation 1. In the **Recommendations blade**, select **Enable VM Agent**. diff --git a/articles/security-center/security-center-pricing.md b/articles/security-center/security-center-pricing.md index 2dfe74c8d2ce6..662baab5b6a74 100644 --- a/articles/security-center/security-center-pricing.md +++ b/articles/security-center/security-center-pricing.md @@ -13,7 +13,7 @@ ms.devlang: na ms.topic: article ms.tgt_pltfrm: na ms.workload: na -ms.date: 10/12/2016 +ms.date: 02/02/2017 ms.author: terrylan --- @@ -30,8 +30,8 @@ For more information, see the Security Center [pricing page](https://azure.micro > [!NOTE] > Security Center uses Azure storage to save security data generated from your protected nodes. Costs associated with this storage are not included in the price of the service and are charged separately at regular [Azure storage rates](https://azure.microsoft.com/pricing/details/storage/blobs/). Storage charges apply even during the trial. -> -> +> +> ## Try Standard free for 90 days A 90 day free trial is available for the Standard tier. To get the free trial of the Standard tier, select the **Policy** tile on the **Security Center** blade. Select the subscription that you want to upgrade to Standard. On the **Security policy** blade, select **Pricing tier**. On the **Choose your pricing tier** blade, select **Standard – Free Trial**. diff --git a/articles/security-center/security-center-provide-security-contact-details.md b/articles/security-center/security-center-provide-security-contact-details.md index c323073477cb9..e9acbb10b6579 100644 --- a/articles/security-center/security-center-provide-security-contact-details.md +++ b/articles/security-center/security-center-provide-security-contact-details.md @@ -13,7 +13,7 @@ ms.devlang: na ms.topic: article ms.tgt_pltfrm: na ms.workload: na -ms.date: 10/17/2016 +ms.date: 02/02/2017 ms.author: terrylan --- @@ -24,8 +24,8 @@ An email notification is sent on the first daily occurrence of an alert and only > [!NOTE] > This document introduces the service by using an example deployment. This is not a step-by-step guide. -> -> +> +> ## Implement the recommendation 1. In the **Recommendations** blade, select **Provide security contact details**. @@ -33,7 +33,7 @@ An email notification is sent on the first daily occurrence of an alert and only 2. This opens the blade **Provide security contact details**. Select the Azure subscription to provide contact information on. ![Provide security contact details][2] 3. A second **Provide security contact details** blade opens. - + * Enter the security contact email address or addresses separated by commas. There is not a limit to the number of email addresses that you can enter. * Enter one security contact international phone number. * To receive emails about high severity alerts, turn on the option **Send me emails about alerts**. diff --git a/articles/security-center/security-center-remediate-os-vulnerabilities.md b/articles/security-center/security-center-remediate-os-vulnerabilities.md index 54fa5d2f04173..b071e31d3f76e 100644 --- a/articles/security-center/security-center-remediate-os-vulnerabilities.md +++ b/articles/security-center/security-center-remediate-os-vulnerabilities.md @@ -13,7 +13,7 @@ ms.devlang: na ms.topic: article ms.tgt_pltfrm: na ms.workload: na -ms.date: 10/17/2016 +ms.date: 02/02/2017 ms.author: terrylan --- @@ -22,19 +22,19 @@ Azure Security Center analyzes daily your virtual machine (VM) operating system > [!NOTE] > This document introduces the service by using an example deployment. This is not a step-by-step guide. -> -> +> +> ## Implement the recommendation 1. In the **Recommendations** blade, select **Remediate OS vulnerabilities**. ![Remediate OS vulnerabilities][1] - + The **Remediate OS vulnerabilities** blade opens and lists your VMs with OS configurations that do not match the recommended configuration rules. For each VM, the blade identifies: - + * **FAILED RULES** -- The number of rules that the VM's OS configuration failed. * **LAST SCAN TIME** -- The date and time that Security Center last scanned the VM’s OS configuration. * **STATE** -- The current state of the vulnerability: - + * Open: The vulnerability has not been addressed yet * In Progress: The vulnerability is currently being applied, no action is required by you * Resolved: The vulnerability was already addressed (when the issue has been resolved, the entry is grayed out) diff --git a/articles/security-center/security-center-sql-database.md b/articles/security-center/security-center-sql-database.md index 211df7438122d..91bcfbce0436a 100644 --- a/articles/security-center/security-center-sql-database.md +++ b/articles/security-center/security-center-sql-database.md @@ -13,7 +13,7 @@ ms.devlang: na ms.topic: article ms.tgt_pltfrm: na ms.workload: na -ms.date: 10/18/2016 +ms.date: 02/02/2017 ms.author: terrylan --- From 0046a088f908a8cfdcab2cf6baad62524def6468 Mon Sep 17 00:00:00 2001 From: TerryLanfear Date: Thu, 2 Feb 2017 15:47:28 -0800 Subject: [PATCH 38/90] updates per Acrolinx --- ...security-center-add-next-generation-firewall.md | 14 +++++++------- ...curity-center-enable-network-security-groups.md | 10 +++++----- 2 files changed, 12 insertions(+), 12 deletions(-) diff --git a/articles/security-center/security-center-add-next-generation-firewall.md b/articles/security-center/security-center-add-next-generation-firewall.md index b175a472bf41d..38918a6cbd311 100644 --- a/articles/security-center/security-center-add-next-generation-firewall.md +++ b/articles/security-center/security-center-add-next-generation-firewall.md @@ -18,7 +18,7 @@ ms.author: terrylan --- # Add a Next Generation Firewall in Azure Security Center -Azure Security Center may recommend that you add a next generation firewall (NGFW) from a Microsoft partner in order to increase your security protections. This document walks you through an example of how to do this. +Azure Security Center may recommend that you add a next generation firewall (NGFW) from a Microsoft partner to increase your security protections. This document walks you through an example of how to do this. > [!NOTE] > This document introduces the service by using an example deployment. This is not a step-by-step guide. @@ -30,21 +30,21 @@ Azure Security Center may recommend that you add a next generation firewall (NGF ![Add a Next Generation Firewall][1] 2. In the **Add a Next Generation Firewall** blade, select an endpoint. ![Select an endpoint][2] -3. A second **Add a Next Generation Firewall** blade opens. You can choose to use an existing solution if available or you can create a new one. In this example there are no existing solutions available so we'll create a new NGFW. - ![Create new Next Generation Firewall][3] -4. To create a new NGFW, select a solution from the list of integrated partners. In this example we will select **Check Point**. +3. A second **Add a Next Generation Firewall** blade opens. You can choose to use an existing solution if available or you can create a new one. In this example, there are no existing solutions available so we create an NGFW. + ![Create Next Generation Firewall][3] +4. To create an NGFW, select a solution from the list of integrated partners. In this example, we select **Check Point**. ![Select Next Generation Firewall solution][4] 5. The **Check Point** blade opens providing you information about the partner solution. Select **Create** in the information blade. ![Firewall information blade][5] -6. The **Create virtual machine** blade opens. Here you can enter information required to spin up a virtual machine (VM) that will run the NGFW. Follow the steps and provide the NGFW information required. Select OK to apply. +6. The **Create virtual machine** blade opens. Here you can enter information required to spin up a virtual machine (VM) that runs the NGFW. Follow the steps and provide the NGFW information required. Select OK to apply. ![Create virtual machine to run NGFW][6] ## Route traffic through NGFW only -Return to the **Recommendations** blade. A new entry was generated after you added a NGFW via Security Center, called **Route traffic through NGFW only**. This recommendation is created only if you installed your NGFW through Security Center. If you have Internet-facing endpoints, Security Center will recommend that you configure Network Security Group rules that force inbound traffic to your VM through your NGFW. +Return to the **Recommendations** blade. A new entry was generated after you added an NGFW via Security Center, called **Route traffic through NGFW only**. This recommendation is created only if you installed your NGFW through Security Center. If you have Internet-facing endpoints, Security Center recommends that you configure Network Security Group rules that force inbound traffic to your VM through your NGFW. 1. In the **Recommendations blade**, select **Route traffic through NGFW only**. ![Route traffic through NGFW only][7] -2. This opens the blade **Route traffic through NGFW only** which lists VMs that you can route traffic to. Select a VM from the list. +2. This opens the blade **Route traffic through NGFW only**, which lists VMs that you can route traffic to. Select a VM from the list. ![Select a VM][8] 3. A blade for the selected VM opens, displaying related inbound rules. A description provides you with more information on possible next steps. Select **Edit inbound rules** to proceed with editing an inbound rule. The expectation is that **Source** is not set to **Any** for the Internet-facing endpoints linked with the NGFW. To learn more about the properties of the inbound rule, see [NSG rules](../virtual-network/virtual-networks-nsg.md#nsg-rules). ![Configure rules to limit access][9] diff --git a/articles/security-center/security-center-enable-network-security-groups.md b/articles/security-center/security-center-enable-network-security-groups.md index 9df12b717340f..295d49aa24e4f 100644 --- a/articles/security-center/security-center-enable-network-security-groups.md +++ b/articles/security-center/security-center-enable-network-security-groups.md @@ -18,9 +18,9 @@ ms.author: terrylan --- # Enable Network Security Groups in Azure Security Center -Azure Security Center will recommend that you enable a network security group (NSG) if one is not already enabled. NSGs contain a list of Access Control List (ACL) rules that allow or deny network traffic to your VM instances in a Virtual Network. NSGs can be associated with either subnets or individual VM instances within that subnet. When a NSG is associated with a subnet, the ACL rules apply to all the VM instances in that subnet. In addition, traffic to an individual VM can be restricted further by associating a NSG directly to that VM. To learn more see [What is a Network Security Group (NSG)?](../virtual-network/virtual-networks-nsg.md) +Azure Security Center recommends that you enable a network security group (NSG) if one is not already enabled. NSGs contain a list of Access Control List (ACL) rules that allow or deny network traffic to your VM instances in a Virtual Network. NSGs can be associated with either subnets or individual VM instances within that subnet. When an NSG is associated with a subnet, the ACL rules apply to all the VM instances in that subnet. In addition, traffic to an individual VM can be restricted further by associating an NSG directly to that VM. To learn more see [What is a Network Security Group (NSG)?](../virtual-network/virtual-networks-nsg.md) -If you do not have NSGs enabled, Security Center will present two recommendations to you: Enable Network Security Groups on subnets and Enable Network Security Groups on virtual machines. You choose which level, subnet or VM, to apply NSGs. +If you do not have NSGs enabled, Security Center presents two recommendations to you: Enable Network Security Groups on subnets and Enable Network Security Groups on virtual machines. You choose which level, subnet or VM, to apply NSGs. > [!NOTE] > This document introduces the service by using an example deployment. This is not a step-by-step guide. @@ -30,16 +30,16 @@ If you do not have NSGs enabled, Security Center will present two recommendation ## Implement the recommendation 1. In the **Recommendations** blade, select **Enable Network Security Groups** on subnets or on virtual machines. ![Enable Network Security Groups][1] -2. This opens the blade **Configure Missing Network Security Groups** for subnets or for virtual machines, depending on the recommendation that you selected. Select a subnet or a virtual machine to configure a NSG on. +2. This opens the blade **Configure Missing Network Security Groups** for subnets or for virtual machines, depending on the recommendation that you selected. Select a subnet or a virtual machine to configure an NSG on. ![Configure NSG for subnet][2] ![Configure NSG for VM][3] -3. On the **Choose network security group** blade select an existing NSG or select to create a new NSG. +3. On the **Choose network security group** blade, select an existing NSG or select **Create new** to create an NSG. ![Choose Network Security Group][4] -If you create a new NSG, follow the steps in [How to manage NSGs using the Azure portal](../virtual-network/virtual-networks-create-nsg-arm-pportal.md) to create a NSG and set security rules. +If you create an NSG, follow the steps in [How to manage NSGs using the Azure portal](../virtual-network/virtual-networks-create-nsg-arm-pportal.md) to create an NSG and set security rules. ## See also This article showed you how to implement the Security Center recommendation "Enable Network Security Groups" for subnets or virtual machines. To learn more about enabling NSGs, see the following: From 6e44aedb4b2e184fa47ad965802b1172c5a8c8ad Mon Sep 17 00:00:00 2001 From: TerryLanfear Date: Thu, 2 Feb 2017 15:58:05 -0800 Subject: [PATCH 39/90] fixes per Acrolinx --- .../security-center-apply-disk-encryption.md | 14 +++++++------- 1 file changed, 7 insertions(+), 7 deletions(-) diff --git a/articles/security-center/security-center-apply-disk-encryption.md b/articles/security-center/security-center-apply-disk-encryption.md index 64a2a5fa03b30..c0d8e0032e6c2 100644 --- a/articles/security-center/security-center-apply-disk-encryption.md +++ b/articles/security-center/security-center-apply-disk-encryption.md @@ -18,31 +18,31 @@ ms.author: terrylan --- # Apply disk encryption in Azure Security Center -Azure Security Center will recommend that you apply disk encryption if you have Windows or Linux VM disks that are not encrypted using Azure Disk Encryption. Disk Encryption lets you encrypt your Windows and Linux IaaS VM disks. Encryption is recommended for both the OS and data volumes on your VM. +Azure Security Center recommends that you apply disk encryption if you have Windows or Linux VM disks that are not encrypted using Azure Disk Encryption. Disk Encryption lets you encrypt your Windows and Linux IaaS VM disks. Encryption is recommended for both the OS and data volumes on your VM. -Disk Encryption leverages the industry standard [BitLocker](https://technet.microsoft.com/library/cc732774.aspx) feature of Windows and the [DM-Crypt](https://en.wikipedia.org/wiki/Dm-crypt) feature of Linux to provide OS and data encryption to help protect and safeguard your data and meet your organizational security and compliance commitments. Disk Encryption is integrated with [Azure Key Vault](https://azure.microsoft.com/documentation/services/key-vault/) to help you control and manage the disk encryption keys and secrets in your Key Vault subscription, while ensuring that all data in the VM disks are encrypted at rest in your [Azure Storage](https://azure.microsoft.com/documentation/services/storage/). +Disk Encryption uses the industry standard [BitLocker](https://technet.microsoft.com/library/cc732774.aspx) feature of Windows and the [DM-Crypt](https://en.wikipedia.org/wiki/Dm-crypt) feature of Linux. These features provide OS and data encryption to help protect and safeguard your data and meet your organizational security and compliance commitments. Disk Encryption is integrated with [Azure Key Vault](https://azure.microsoft.com/documentation/services/key-vault/) to help you control and manage the disk encryption keys and secrets in your Key Vault subscription, while ensuring that all data in the VM disks are encrypted at rest in your [Azure Storage](https://azure.microsoft.com/documentation/services/storage/). > [!NOTE] -> Azure Disk Encryption is supported on the following Windows server operating systems - Windows Server 2008 R2, Windows Server 2012, and Windows Server 2012 R2. Disk encryption is supported on the following Linux server operating systems - Ubuntu, CentOS, SUSE and SUSE Linux Enterprise Server (SLES). +> Azure Disk Encryption is supported on the following Windows server operating systems - Windows Server 2008 R2, Windows Server 2012, and Windows Server 2012 R2. Disk encryption is supported on the following Linux server operating systems - Ubuntu, CentOS, SUSE, and SUSE Linux Enterprise Server (SLES). > > ## Implement the recommendation 1. In the **Recommendations** blade, select **Apply disk encryption**. -2. In the **Apply disk encryption** blade, you will see a list of VMs for which Disk Encryption is recommended. +2. In the **Apply disk encryption** blade, you see a list of VMs for which Disk Encryption is recommended. 3. Follow the instructions to apply encryption to these VMs. ![][1] To encrypt Azure Virtual Machines that have been identified by Security Center as needing encryption, we recommend the following steps: -* Install and configure Azure PowerShell. This will enable you to run the PowerShell commands required to set up the prerequisites required to encrypt Azure Virtual Machines. +* Install and configure Azure PowerShell. This enables you to run the PowerShell commands required to set up the prerequisites required to encrypt Azure Virtual Machines. * Obtain and run the Azure Disk Encryption Prerequisites Azure PowerShell script. * Encrypt your virtual machines. -[Encrypt an Azure Virtual Machine](security-center-disk-encryption.md) will walk you through these steps. This topic assumes you are using Windows 10 as the client machine from which you will configure disk encryption. +[Encrypt an Azure Virtual Machine](security-center-disk-encryption.md) walks you through these steps. This topic assumes you are using Windows 10 as the client machine from which you configure disk encryption. -There are many approaches that can be used to setup the prerequisites and to configure encryption for Azure Virtual Machines. If you are already well-versed in Azure PowerShell or Azure CLI, then you may prefer to use alternate approaches. To learn about these other approaches see [Azure disk encryption](../security/azure-security-disk-encryption.md). +There are many approaches that can be used for Azure Virtual Machines. If you are already well-versed in Azure PowerShell or Azure CLI, then you may prefer to use alternate approaches. To learn about these other approaches, see [Azure disk encryption](../security/azure-security-disk-encryption.md). ## See also This document showed you how to implement the Security Center recommendation "Apply disk encryption." To learn more about disk encryption, see the following: From 53ef7d23d58f414f0caed1f2e522446015acc610 Mon Sep 17 00:00:00 2001 From: "Stephen A. Zarkos" Date: Thu, 2 Feb 2017 16:02:20 -0800 Subject: [PATCH 40/90] Update linux-create-upload-ubuntu --- ...ual-machines-linux-create-upload-ubuntu.md | 62 ++++++++++++++----- 1 file changed, 46 insertions(+), 16 deletions(-) diff --git a/articles/virtual-machines/virtual-machines-linux-create-upload-ubuntu.md b/articles/virtual-machines/virtual-machines-linux-create-upload-ubuntu.md index b8730dad3fcfb..975e47ee29dec 100644 --- a/articles/virtual-machines/virtual-machines-linux-create-upload-ubuntu.md +++ b/articles/virtual-machines/virtual-machines-linux-create-upload-ubuntu.md @@ -14,7 +14,7 @@ ms.workload: infrastructure-services ms.tgt_pltfrm: vm-linux ms.devlang: na ms.topic: article -ms.date: 08/24/2016 +ms.date: 02/02/2017 ms.author: szark --- @@ -41,27 +41,37 @@ This article assumes that you have already installed an Ubuntu Linux operating s ## Manual steps > [!NOTE] -> Before creating your own custom Ubuntu image for Azure, please consider using the images from [http://cloud-images.ubuntu.com/](http://cloud-images.ubuntu.com/) instead. +> Before attempting to create your own custom Ubuntu image for Azure, please consider using the pre-built and tested images from [http://cloud-images.ubuntu.com/](http://cloud-images.ubuntu.com/) instead. > > 1. In the center pane of Hyper-V Manager, select the virtual machine. + 2. Click **Connect** to open the window for the virtual machine. + 3. Replace the current repositories in the image to use Ubuntu's Azure repos. The steps vary slightly depending on the Ubuntu version. - Before editing /etc/apt/sources.list, it is recommended to make a backup: + Before editing /etc/apt/sources.list, it is recommended to make a backup: - # sudo cp /etc/apt/sources.list /etc/apt/sources.list.bak - Ubuntu 12.04: + # sudo cp /etc/apt/sources.list /etc/apt/sources.list.bak + + Ubuntu 12.04: - # sudo sed -i "s/[a-z][a-z].archive.ubuntu.com/azure.archive.ubuntu.com/g" /etc/apt/sources.list - # sudo apt-get update - Ubuntu 14.04: + # sudo sed -i 's/[a-z][a-z].archive.ubuntu.com/azure.archive.ubuntu.com/g' /etc/apt/sources.list + # sudo apt-get update + + Ubuntu 14.04: - # sudo sed -i "s/[a-z][a-z].archive.ubuntu.com/azure.archive.ubuntu.com/g" /etc/apt/sources.list - # sudo apt-get update -4. The Ubuntu Azure images are now following the *hardware enablement* (HWE) kernel. Update the operating system to the latest kernel by running the following commands: + # sudo sed -i 's/[a-z][a-z].archive.ubuntu.com/azure.archive.ubuntu.com/g' /etc/apt/sources.list + # sudo apt-get update + + Ubuntu 16.04: + # sudo sed -i 's/[a-z][a-z].archive.ubuntu.com/azure.archive.ubuntu.com/g' /etc/apt/sources.list + # sudo apt-get update + +4. The Ubuntu Azure images are now following the *hardware enablement* (HWE) kernel. Update the operating system to the latest kernel by running the following commands: + Ubuntu 12.04: # sudo apt-get update @@ -79,22 +89,42 @@ This article assumes that you have already installed an Ubuntu Linux operating s (recommended) sudo apt-get dist-upgrade # sudo reboot + + Ubuntu 16.04: + + # sudo apt-get update + # sudo apt-get install linux-generic-hwe-16.04 linux-cloud-tools-generic-hwe-16.04 + (recommended) sudo apt-get dist-upgrade + + # sudo reboot + + See also: + - [https://wiki.ubuntu.com/Kernel/LTSEnablementStack](https://wiki.ubuntu.com/Kernel/LTSEnablementStack) + - [https://wiki.ubuntu.com/Kernel/RollingLTSEnablementStack](https://wiki.ubuntu.com/Kernel/RollingLTSEnablementStack) + + 5. Modify the kernel boot line for Grub to include additional kernel parameters for Azure. To do this open "/etc/default/grub" in a text editor, find the variable called `GRUB_CMDLINE_LINUX_DEFAULT` (or add it if needed) and edit it to include the following parameters: GRUB_CMDLINE_LINUX_DEFAULT="console=tty1 console=ttyS0,115200n8 earlyprintk=ttyS0,115200 rootdelay=300" - - Save and close this file, and then run '`sudo update-grub`'. This will ensure all console messages are sent to the first serial port, which can assist Azure technical support with debugging issues. + + Save and close this file, and then run "`sudo update-grub`". This will ensure all console messages are sent to the first serial port, which can assist Azure technical support with debugging issues. + 6. Ensure that the SSH server is installed and configured to start at boot time. This is usually the default. + 7. Install the Azure Linux Agent: - # sudo apt-get update - # sudo apt-get install walinuxagent - Note that installing the `walinuxagent` package will remove the `NetworkManager` and `NetworkManager-gnome` packages, if they are installed. + # sudo apt-get update + # sudo apt-get install walinuxagent + + >[!Note] + The `walinuxagent` package may remove the `NetworkManager` and `NetworkManager-gnome` packages, if they are installed. + 8. Run the following commands to deprovision the virtual machine and prepare it for provisioning on Azure: # sudo waagent -force -deprovision # export HISTSIZE=0 # logout + 9. Click **Action -> Shut Down** in Hyper-V Manager. Your Linux VHD is now ready to be uploaded to Azure. ## Next steps From fd4603d7bcbd1d243c6dd37d810040ff0ee1b3ae Mon Sep 17 00:00:00 2001 From: TerryLanfear Date: Thu, 2 Feb 2017 16:02:48 -0800 Subject: [PATCH 41/90] fixes per Acrolinx --- articles/security-center/security-center-pricing.md | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/articles/security-center/security-center-pricing.md b/articles/security-center/security-center-pricing.md index 662baab5b6a74..cd1e12915924b 100644 --- a/articles/security-center/security-center-pricing.md +++ b/articles/security-center/security-center-pricing.md @@ -38,7 +38,7 @@ A 90 day free trial is available for the Standard tier. To get the free trial of ![Free trial][1] -At the end of 90 days, should you choose to continue using the service, we will automatically start charging for usage. +At the end of 90 days, should you choose to continue using the service, we automatically start charging for usage. ## Upgrade to Standard Upgrade to the Standard tier to add advanced threat detection. To get the Standard tier, select the **Policy** tile on the **Security Center** blade. Select the subscription that you want to upgrade to Standard. On the **Security policy** blade, select **Pricing tier**. On the **Choose your pricing tier** blade, select **Standard**. @@ -48,7 +48,7 @@ Upgrade to the Standard tier to add advanced threat detection. To get the Standa ## Why upgrade to Standard? The Standard tier of Security Center provides all features of the Free tier plus advanced threat detection. Advanced threat detection helps identify active threats targeting your Azure resources and provides you with the insights needed to respond quickly. -Security Center employs advanced security analytics, which go far beyond signature-based approaches. Breakthroughs in big data and machine learning technologies are leveraged to evaluate events across the entire cloud fabric – detecting threats that would be impossible to identify using manual approaches and predicting the evolution of attacks. +Security Center employs advanced security analytics, which go far beyond signature-based approaches. Breakthroughs in big data and machine learning technologies are used to evaluate events across the entire cloud fabric – detecting threats that would be impossible to identify using manual approaches and predicting the evolution of attacks. Security analytics that come with the Standard tier are: From 9e6986d6a5fe8262a5874a0d0f50d1fb9b3a3c21 Mon Sep 17 00:00:00 2001 From: "Stephen A. Zarkos" Date: Thu, 2 Feb 2017 16:03:52 -0800 Subject: [PATCH 42/90] Refresh linux-debian-create-upload-vhd --- .../virtual-machines-linux-debian-create-upload-vhd.md | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/articles/virtual-machines/virtual-machines-linux-debian-create-upload-vhd.md b/articles/virtual-machines/virtual-machines-linux-debian-create-upload-vhd.md index 8b009162f80f9..b73461b97ae70 100644 --- a/articles/virtual-machines/virtual-machines-linux-debian-create-upload-vhd.md +++ b/articles/virtual-machines/virtual-machines-linux-debian-create-upload-vhd.md @@ -14,7 +14,7 @@ ms.workload: infrastructure-services ms.tgt_pltfrm: vm-linux ms.devlang: na ms.topic: article -ms.date: 08/24/2016 +ms.date: 02/02/2017 ms.author: szark --- From ab139ce55ba293526a3ccfb6bcd6cd5838b383f9 Mon Sep 17 00:00:00 2001 From: "Stephen A. Zarkos" Date: Thu, 2 Feb 2017 16:06:13 -0800 Subject: [PATCH 43/90] Refresh linux-endorsed-distros --- .../virtual-machines-linux-endorsed-distros.md | 6 +++--- 1 file changed, 3 insertions(+), 3 deletions(-) diff --git a/articles/virtual-machines/virtual-machines-linux-endorsed-distros.md b/articles/virtual-machines/virtual-machines-linux-endorsed-distros.md index e60c54157ac47..d22527225b0cd 100644 --- a/articles/virtual-machines/virtual-machines-linux-endorsed-distros.md +++ b/articles/virtual-machines/virtual-machines-linux-endorsed-distros.md @@ -14,7 +14,7 @@ ms.workload: infrastructure-services ms.tgt_pltfrm: vm-linux ms.devlang: na ms.topic: article -ms.date: 10/17/2016 +ms.date: 02/02/2017 ms.author: szark --- @@ -42,8 +42,8 @@ The Azure Linux Agent is already pre-installed on the Azure Gallery images and a | Debian |Debian 7.9+, 8.2+ |In Kernel |Package: In repo under "waagent"
Source Code: [GitHub](https://github.com/Azure/WALinuxAgent) | | Oracle Linux |6.4+, 7.0+ |In Kernel |Package: In repo under "WALinuxAgent"
Source Code: [GitHub](http://go.microsoft.com/fwlink/p/?LinkID=250998) | | Red Hat Enterprise Linux |RHEL 6.7+, 7.1+ |In Kernel |Package: In repo under "WALinuxAgent"
Source Code: [GitHub](https://github.com/Azure/WALinuxAgent) | -| SUSE Linux Enterprise |SLES 11 SP4, SLES 12 SP1+ and

^Yo>v7pX@adBiEvI2uAazbnQ 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

Yw8kkC2vhoy=tpc%pUUBzjY?Zh~J zskEf?R+k-|c0tYoy}%DUtA+(0FBF*w9^jwW7zPKt_mPq11Nm99$XhTEE!VfRAlbpE z>~PvjeNog`5iLv#i?fy$DdBlCbmDGf3Rv^*QTk2O9@@#rB&l*UZV-I=UHhW zCNkuhBm9|sFT=p!EzlsZG^HNRB09bU%w`vzE7t(RXgABX@a%_<9pq_c7>!0 zx7Nr1;V!qhSjsOP*aTL(%X~IpjEx(+CO|x*jHF?XQA_f*H{z0YxZ@mR-fX)R2Dm!B|I2fl!}V`6R&lLt?@Hbj24Q#^4pC^IPnXTo zP=WyoldQlUYvbCLvl5>%gm=VZIu2!o-i++y=j<4^gz3bhc1!gnUIW7 ztup-E6vBL1Nr3_rECRmgLBYCR&j(YcCYQ^i#X5);h*hf%DTxufL$R#SV|xZd6`0g8 z17{6PZEJBGnGNFvDSsNzWIB>tt~`qxOi6Pu0!nKQ;mt2KP|ZhZj) z1N{l=#PhlH;XUxhIPHMXhPX`CDa$)=zuW4J*1{Z4PB5eT&&fQILTJkGBi{;HGZc_UwrdxHb9V&us z0{IEAv1>&+GBvdbPE0{Q)6iS_t3{C-VzrG?)AMT-;^TXe{c7GEm2}Kp?$FNfOB~r$ zBz^A^KMW_KD3&xTNz5qCdCxS}$E6qklCPv!da&+%Ds{a#a3KEuLllau53#A~jTUO~j~z06?#RS?~={fF=0tm%U>UHWN7Kx=tn0ZLZ}YOTwO zf<|}^isr9YD*Bfpwbu*`m}L73$O_EQ^mG~0ke6c5+X9a_9(cTs_@1`xPt`@7F+tk$ z-`j!A)h%zqWWebxYV4$!z-p;qSXto&E^eK;=LUZqnZ0U)1@VrrTEYu{XL7@aJJzLS zlP(P2qHXG3htZ;dtA?{?OTslH56M@Mf^{Zn-NcghntBpNS4H7f^4P5&n#j6+I zn?G>lu8%s?b^I;I@7A)VrO^ZQD;~%oXV6jeZ5^P$+=n*jDqPcWf`je+?>_u#v?qM} zo8#9>NOzfzf{v!?%!&P`TcsULICBnZcIhTr(0yD0T#Th4rV5NJH!mqvq5nE|q`P#n zL|9N5pP$9C3ZO;-fB&1G5e5m1+T61_nBUpat-<%V0PQyG>*236T6rnNqZn9{#EivM z*~r4F?p?r{#l$LV>R7V8{`TPLIK9;0*ZNB3mMc?#fZfGUy1&Q|6}^B34ya64Bdq$5k%FDmZ+>N>e7OeK89Gqk|U&$A4U_`A zE!Tu#$+hN>>;jx5iIS7Cp|PFC#3ufK@tppb#=(|iLVx1rM9SL0;LE<}=5KE}3YoJ@ zJy&EGxhdZTUR20(+#2%@ZitubupY-hjN6N&yeMp^)d}1tf*(_LD=D*2xYSL-LB;%O z08qDkio+ZFcYf>NUcv)>G^vsU1Wdx&Xu<<$tS9p!8=23IS6x)RT9k^}Nl3``m^EFDtb@g?DKGngQk=}&&#}yn5cQCzf?MP;;ran}( zx*AJn@VElj#05ht_M(Rb9KY~Pjnu3DK%)fl^24q~!XCl0!u~Qbz>s|YgWbZGVnDO; zZY^E@^-<#a7xUp;Fy0~0)@s3LjE^3`0hVAL& zb&A9yJbHCXYdk&V@uHIeetUTKz&-Tj!o)e!Dz8lsLXK6Jf0lTDi|!IGO1&CTG7%&r zET{y{n(X~la8_K2M{Hz4qsRO8e10K!ZTBsqzHtIq-Di$(z5Hwn#Cp-Z6Oek8ZUuJx+8B*`^!22JA{X;&jd2kYA;vSXw^gYc9 z{B*D^*7##hi@4AA6mX&P36dSl;7ovp7MO4A*m{x@nq>cFu=jq;n&qcSqLsYFt0dN*BHM(U%OHz?o!wUFY^%I@S4E`h5)CCch8IrvZg8eY`QQg5CSf z6!HPp!PZf=UpMhxrjtSm-JQ?^;x-kIn1}&Yn0AdAl-SNf8wUR31h#*|GU(J`FopQfGR8g5EPiq(opsZf>TV2O zjQs!5t4ZT9;bEBQoh4lEB3cCWf1`Qu^%lt~& zD$aAGP96l_LeX>DKeH2m`QA+f$fcy^Z;I^E9LshWHvTWZ@fjc%+^r*Gz~tB~p<_OQ z+UGy2pXk%tYBwFL=`y6S`>A@N`a6|FBcZ^eK#QzLV@;tt#eqhFQ@B@^F>Fr73EteH znSZGI?Ay7dtg)x|Hy>y{cOde5^|3la?OaM+nMWk5qB9+CMZ4JkX0Q~IxavBpBB};G z-fOS5pNKZ|?)?nEVA%k1IN+qXiM7Y%?L+Uf z!!q~oo3Sx+Imk09q?noaFIg`h=}d*hBOo~^(#P8YN2 zVQ_{$qPb+pHOiyH2(=7y)5j8Y8@y@o7gh&OkPHXz4DxdyuUqM56z8@)Kx^K>98uwD zd-eztsg|O&Z}X)!ptr4jVH_HX`pa-4Q0sJ^pJpg~JT(=vd-32m7zy{OR3W#8jzwX; z716zT=bn(3=Ji6Ndqt9zR6GVDrQ@T)tVp(QLG)iRz!FG3=T{N3NM z!4l$664jui51<#%eGVK}hr%8}>4(=YqrxB|IpSykI27^If6P$)KhtDu*i@bhe_@^-pX+B?G-^}Y+F5sobEJ+tv^sH%@FY1J`sBB>A_cIuy1p(^~(!#)|TfLN3LwJ zA}-}fVXX)?<)^30w5yW}=)4=Sb9V$}s8u26s*oFxA+6jnul*IT@tWF`nZ<)+|M+Zl zJUV^})v>hSyHA|e)aM^B%K_b-JB2X-msJC7iwz|!qA{Ed(oA3+n*HvT_#4@&dek`XyZbmWlkD^yFXUaX zLTs;yJX9x#fiioKJdZI-J-qqw>&7CJMADluS&CAm5r^lz=TL0yGMBQSyR5ckCMip2 zh_HBX&w73UW66FE~aMPzp5TeItr}#zWLkRn$v&{s4*{1a~S}kO)KHu`GcTUw_ zMXaVvC98Y_({cSaZxKqeTp#oI_bVx1Rxp=SU^h}g7d$XOxaC3Uoz=H^!xLsys+%50 z+s{o=OA4l?TKHP;LCa7wWZ}tI|EN|b<@diYJ!z>m7mI>9=Z`0-J}{>^9X(1`seMAH zcic*2Y@A%NeEzbDn%C#8)=LRj|5(;D!|~f8dea*he{V>CR}|5qTV6lwHt}S8we_Dn z*H!^7f9h?-?U5Bb$ZF;0ZlN4;RBQ9x5T zyuQUhCLNfzb1i_t<^TQjnT7bpY|LpwDji%oFwV753fX8QH?3fBwN&^c$H@$bo(xKj z^o~W@^Dk914uz~H%Yq|OIwnscrw5HH;rnJKOBFRa)}Dgrc+$2HZX8cKmbz-#mm-y+ z$BJO%P-;P@-5BO{j!Y>TY11*9123FoQQ$VyY2~DIvK{%d%a`HMXb!e`+!WSM94ZL> z(yGip@WBM=eMKF27QtJ>TDk_0EY9h3$WX7l{4lANYrTuW!qri}<ga;OdGhOPUJ zaKfC5R&0AX4|*3>FP)R8h_=?Q-_(|$)j7cEDOEt509#zy(M!YFFe<^tT4bNpq!K{1 z+1qN%aC%;!%yzB?LA$#;dy%4O#j&C)j-%#40V*Ecdw?u~d+r{Gt$*3((d&#xJ8QM5 zvPPPVS= zA-fdJv*0yR;MIfCsO3u>2fZSL5vcLwm0jx^Wq(CFfrZIhNk>=4E@nPHKG7k;XzQAQ zY5A4pquTw|@e{$^h0$JDZ|;0yaE+hie*grgflbvh2Dfco2Ar_V7}zx%4h3}W-LrEC zK1@6NFzX4Vvd^_dd#?AO{rG5Zcu>-+*Rv+RRcKtL*Tgo6vBFb(hqlHL3jUi6U%M+10?n289bJ;Ej+Cd9~>JU8{XvWgg1M^bPI0y7s_e~Ycs!F}8 z>cr~m#H>-obo}ap|EaLMBf|-zqhl$cz2E9=0<*IBxwvM^Ql=e~nuVroLbXI!R?6z9 z8Pp+K+%UBBrR_YZQkZtp3}SlY_?X#)!%6hC6_ImlV-=NDas5+W3sLiwrMtj=N$|{$ z&)i&tlSv-^{$Zs~MMwTAwxX?lBmHk(4#JmDlJhj}7Z^K(<~TF91;B3YEQ9+A->B$w zt$|2(R36a;3mbTrKk#}>%Gf!>Jsn@*ycfnu(|PS|uE(Z2l?Gw8uY`m)bQJ6sPQuOwd&dAKL-*Cy458 zR9o_7=(qK{k%gVN*O~ow%Bm!xqhf*im_9A{G~Dv{pH&0TMX3b$iG+rJt*Ug<_KZnq zJ=GKBPTntb-soZ+1%1WCHxpW!Vu+%SV; z1#bWQVcH9Jf}E0K9OJtJ9-A?dG-$E0y7k1fUo&)2dnY0)xq9mM((zRz6xw+#&LQlW z6}mk2j(vRLI2zo>5s7Y4B_IOoDz2B=g>n^A@=E1QI?7{+YQ%P1h!j{KNLHo=vqNh> zeCSm6ZrU+aRK#krEN>bWS}AI^R@TbBEC@c;3Wabc|G5Z47 z7$>65zGDj)p$Ewg3lbhsFb#msDnBxJK~qR?*6R{`wLE9En(o;izMzYYJIT|^kj#qZ zbV@#|JY3lDJlN;}tsX_HlxNm&Ay#s<$M*4@y82dL-WTr3ClHnI&>FAr5bnxt!)^Xm zaKCRY^{v|WG-sa8_JLrjjTg&Y_U)REF0J;bt`ikyS+K4Tz)J6A2+X1KT{c#GYf*0* zP7Z5FqDt&KtAsc=fqm(&Tf_ZPod*G;;h!(-)-Un8y@`-vWX2{m$VJANIF6$P3hkszHJAdY_Vk7 zyEywQG`_-%7hUwg-7Zhh57^>`_7nDXqugAVVOE~Am33=$7|}zZ>F!QZvqz%Z-3AWM zE`~WBNYP36y*YUai4v6)hCT3hh^Fh%_*l7w2ga)V7P#+Ibk3X=_H%bcfm8U>5o|x;*_~T{ z2swXlCJF2;8=@u>!^8Rr|FypX(o-ZjTOAu5zCJ&rb6$Xy7|F YcDt!i_<6zf9QeC0r!1Q*t^ex(13@o?9RL6T literal 0 HcmV?d00001 diff --git a/articles/hdinsight/media/hdinsight-domain-joined-architecture/image3.png b/articles/hdinsight/media/hdinsight-domain-joined-architecture/image3.png new file mode 100644 index 0000000000000000000000000000000000000000..c99937998bff64853805f8ce8fad0d391d02bfe6 GIT binary patch literal 67283 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

hdKwY#v-=p=pFilphhJKBrEYfaN(a2C_*d z24acDYcbm0({e`?Xo8ZGZvN7M2V1zxD-VwYZB=vgj?CxA%1>S~s~n4=Ah_!KWk$Xu zK1rV>YLb^$n@pcpau#2)W82kA(3VGGB;Kz!Ck83#5KQq-JK2Fn%aB0k^;XC*en;jO z!qo5VMOaHt(_DEW&`Hc4rBGGj(`@VpLWuqeY(U_px{znkDz*YT=WQ|zIBa5GFX2PN2hjZ`?sMA zf##YwRLHZT!f^h0d&<;MGLpJVD#DOBsaq&gHF6yk2%M0E4=+ql>ryC(NkAo3}U{yqyJ9mOTOhrwxFeTE;Il1spS)9J~K_vI4m6*ET@6nbP z=*@fHtM##11d;ifsGk)8@K z>${&~VaDUzv!c%Z3Ni$he5Hb>_wa`d+;qgM^@T~r=Qu8759TrRG85d&;c@|GKXHKO z_PqPEY5jR?6VcK>!O@OK&jL*o8-8c7up%GyM!f~URAOGw-Mr#k7h5#U#IXu?-q8WX*IXwjDFpgr1y*uu2MvPs$T@4=T;aF~CzF9?R zPjy0+7t}09-2AyaL)>iBNLw8V34glNLD^k~LTYSRG3)qqP-E;?Jt3F57P&NC`2t<# zxm|bsxZ|DMn|<%7QzJCc#!{Bae$t!KW17Ts9m&1{+tGY_99W7s)k zf4R9_Pqspg6_MkmQbHzy-18 z0(WuorKIC0rn(zzN+OGQ6+_rgBAo>e#_DWYW|r?x#;pebTwlKDt(!Vhl(G|?$eUD| zyQ-_A*TCbt)$eq&Z>b$Amh<-F!*-Tgterp&Sx!=&DP}C|3fa?|wsNJHqDs3#JdC8e z?|jZ3isr!Jfb$7G5LsKHi{3+Kj~9JQd^?EHz3vlzZ;YY!(5g>QiDrM>hCwxvUqQY! zgyLS6wYz*T@fk5ZM=tn$!q6kn*x;&yT2ubP}1X-`)I>iHuXEaXw~^(?LM?outKR?+n`J5 zWm@WEAA#A)MpBbl z&S>3z)zpO9h{J4B$^DXuTkz)Zmon#ZPVx?(W|Pt-(R!xCEu2wDuL0 zw&7V_nOu&D8xeV1!?6ho(5`WJGUm^CbSn))YHUWWMQJ9sXr>%S*BJ; zibY19h-O+Z#XOd5lsi|AJGirbeif#B!;3jXZB1)n8|2s%5jk?QTolJZQ{a|ydrkY`!WXH=v%^}Cui zt);}@y=&wTEkHr24Z>aChS3^ab;g-=5x-W4r(tYXERO{nbxY{>PwZUPGN z?%0PbX(>B96V}_5ose0u6BGy~tCV$!F=DF4f9OpU-FU~f{0>kd4Go}6tD_vTy=8XM zmzPDi@lDeCUh_={32?MTt>)c1I5S@%BZmCO!sKTd%udvo--RGKhRIz$6BI{KKU=%} z%)BD2Fz#sZq8+ZJz3HCiSoP^A55-d=KNtkr3#Z-l-i*8HsYmJycGqIUTJ3}i8uaFA z?9u!%g6xy14oJWFs@OvW_>sA}Ad7j^A+77DJ_L zD`oGb#Y!ryEhD$BUQCKZ%jY2k?n=jEU$IhsVIbBX)9@A;d2A4ThC5)3JvWhZc{v~3 z@Y7gZlx6kIiEz~mI>O{I7XlPAx{*@ptcVtyhp+Fhbwum{S^4kbLpJocz+9^QAzNv$ zLqoR89#k?U@d^j&TnxG>q8WKTtj-JGdBc$3oTys8mhEjPVIP(k8woZ-6vsP*@S)Il zWM2+;9Um+3_d|qezzeR)hCUlG<2JgiBvhhE0!OpBvCsF3h&E3 zkma~0$!Lnfok%ewL~(E5`}(1W@3lV+v};`VWjF=StJ}f63TDxl(x4A_rt8KfPU^T0 zZ@ISDb;A%j{PQmPJS5&>nhE>a87&_NJ_n(MvS)o8tx?Eh9+zR*?SX5fw`!ecK60l% z^pQK5AOuV<;j_uIVYmTTNyVB|#ywDksbh^Lk$1gtOtQwM%cP*Acg}DZmp_1p4WtSP zWqDU?2$o_9cCMBR$MJge(LH4BV?-9;^_mv zp8w8y+&OX9+f{z%e!y}%vvy8;jUcv6)ER5SvzW^a3sQ=Kd>?t9^SPfKl{I&DNMS>q zV%?0f-7}U;lIc+aqg&v_7JpyDXRsit^*);f=Gf}vJ>g84nUc@&Q8r%e3xO@8_`25t zQ6_4USbfZ3(R^fVn^h%sCwq1@x+mk>Lv#*s$IHmRw8LmV?aH{}LESOC6A7typbj$L zwD^|zW?~XTT3Q)NojGtXa??Ii0lD;FyJGHG3V+)3sEZevY*Dvq`0kbPXCB9u+`KTa z%f1Lxi^R-&6y$49Y^(=0Z;sKbrriF{7f<#zp$u2Ct_>6q5(b_Rt&Xa_&LfYo{0t&q z^1M^Aebct`P=N6xRms4kF64mYX%o#gBQb8t=+VN$;|h^vtMUj}jiSe7B&27;+b`C#Tnq_4fC!cMH{MxTe%Q1r6R z6zzrz;ZW^vaKpxg=XLkQ*%{OIFP~0pY5KClAHYf~hyu-$vR^ywH|mb52D_R2=Lo&# z4f);ZD0oEvGN#bD;C7dz0C2Q`oaihlXySwJjy?@Mt~qm{QfhddE8I|upx;vJ_-v(a zJ+~B`NjLjJofP6tF>45JZMrgc$ay00D~fD?7I%Q)8>v9>#IOHQo^7!sj<@zD86t1K zP+JGFr_Nh@z!dC<;iHe}3EgoW%ks@*gh_}IBImVg=&5TWw7J5iMOy9h^t2nc$x4rt zd428qrnl$=F!*XhSTtjboX?hG$z8g0Kz{I6vHu~k@VGpbZp7iZppmZkqOnx?2Tem;@(0AOqH3;Rq znQ*K}8BrHjMTy=IOF2mJhE)$j?G5DWDg!H_0ebG+ygrlW^s#ll-}*8p#G55r*H{Ny zHx3faa-NEqI(vyydC+pV{to_>ib3Jv2da}Np>2El%BFL1b$x4|qdnhqr+Qan0>ranNXIeamg5~RieeFR z%AV8_`D>}tomY5&*=@$(S_pA9!(-8H(_Ujm)7qRufrI(>GB#5gcnQk4qtVjtOIn8I(2(3C?{$XtKM#B?LYOh3V$n0cVZ1os@X1>wUc`kg3-gl}V>*^{{!g~vCN0qJ>>K{Wc zf|XfRtO#j9!#r)A#A$<@E}mmjd@4d15fWkCRu7zfJm@4ef8Wp^s!fmE>NpXe*cZko zvTC(!T&ofe(V~Y952#1tKKE${;#BK$UL73#J+Y&k1#a|L&NhE}nH+w{=uOa-Fdb{) z88TAz4j07eT8kO&pRdAh@+D}jjUpS|{OUFR?07yXlVaCwJRK(;I4`3d#3x}_jcbN& z7G+NdwYtdBh@WW0xQ~|Od54b>WE2R=9T5A9(>JF)&t2hrlF&N0 zNy;ECW=F_5JcQDT+IedTA`oX4<&9jAhKndNNlG`P;zfsH+ilEw#f8P0BL}Zrq}d4w z3R3WFE=A+HBmLwPKRxeFJ2Nw)Zq(cuhF3i67n|>8C3(*tC-F}m$2%Qz3J?u8SoW3c z(1s3rt36%5-JvZm{RrMV0kmMjM@pQzJ9PS2Yme_=Id*38=gv?x@8UaG#wRb@9f^eX ztzmsm&FzGv8}Pd)nFC`+luX$?u)+#kDN>Ey<3k)BW0P-SRqOawad>uEUJZwEzvvYT z4l-no=6B{FZKy>l;=eU%F1)r`rV`f8KmI}jPPTLZavt_$IlpyVUbT$M+pf7XYO-}X zNuc=?_Ac!cy?v(}pm$g==G-r`9cti~V>~EnFapG5Rc?TEJg~SLzrEblZPTx0k zt!(OV_dQlS=YcqelHu{VumN?~(>}78sR{Z;SKsxc7>W|A(aE1n;xvrGh9z5$x?iO9 zv-ifYspel{YVbbec1v0q1#@c1z6GjB3F&c@BI__GlaUXHouxB_tHeYYLqGL_lUbZI z?2X${_l^73^(D%)fV!UHm-!*HAobvf!-skzDPNP|WdNcXG!mh-^$J8EKX#_SW{DG$ z9r%5eJ_cZ20t$(6v!cw-=(JGZ3!p+&4*m$#F!rOE;TUU&dP_+@`v#>oolY-Y^nBD zg*A9=Vx2N-3DIP;*$F&3e@FN-FAw|z9VdIEfu0h?h zciYms8Mh1bInQ8kkN~9!eObKJ2`QlFYkU8OdV_r=1~&=mkb8M~AK#O(*0bvc2Fgxq~4do<}8PI(dBK3YKzjWNBxmuht6ZoQfM!W30KRh(DKWV;T{$=}~9= z<8lNRZM0MKszD(^fk~W8{^X~rxVxHlLX_UARyZFnZZB<7lD2+2(RlWuf6jbrhiqN` zXk(|O(_zSr#utx9kfO>3y1nuF zo@eeyOmGLg`Knd$fMYp?OHwMXYTV@Z06pAqTXZ4*sc48_iNuZxJ1-w zVF<8qAL}Z;e#9!^7h~n7Losh+6mTc<6x(6fNnXHP-)Z@L^ZL*fT1@|3bs`~JaB zTZ{;T6$uWsIM;wu>myI0N4ht3s!!>Dm;CIQbtuhjH3@@X__;??~O8!fb3)4o$ngqpm@yU0?by=K+FNcAz0tjXE)|>Y%EnGJETH zU-u>Aea*=>y!giYK+nUT$R`Vz3qVEhH;1nF>mF*B#QhhzWb3&&h>b@L4 z!A^xIe`r#+QIr++%>B_YYITTbR%}xU= z_x@$m5yC5P^riWMr$q5CD{0+MY(vu zXMwRzK~gNHda$(o?&;mFp%D=^=5Tw2zwLCo1i7o_BEu2K;hfDRJ1Yi{{1><{O^)mQtrU%Q=@{PM)qfrchKzNgH_L$Ahm3#?8SoKxo} zPaf0w2ri13zV;ltM9ZSfTcL{S(v%J@7t_4K!=roF4sj`6u@;+pC z$dwJ_HmZdV)vQXM8cQbQlVY!9@u=6%vzM4~&h&3{i_CB&jK)(8@(*PQTX6V5jZKAT?R!!q>dqQxcZ< zSXp(tCi4$DK9!tjsvI4;XK;>N+C-!;%kxW}x$m)i{$+s;#(%iM|G`HWxRJ=4jka^G z*uz$Vt6ed28;DLBJ#NBIsXU1z zUEtKR#WUHgWD#)%xie3OAa;3A%9T;OteGz~Js_msd*z$RO!!=w^w9E)n85}>hD&O>qW0pN_6JJ{(4gEk)q^+3;?gZ7Vzn<<^>ZN44o7kw~Y{&KLe1H_!cR-26=H z3IH5{V{Zgoz$kL(PC}2eFhg9evq~~oLTiNW6MyOaE~LVYqTK@te>7DVC}IG3Tmj!+ zvA;D(dnNhiM;-9^L!yCza}Qr3XlZKfhP^AqsoKeUtcifm!oY7(i&ySPrKi%q)C5n*)MUy?G&_8x25RL zm_H`*uE7l%+;{073uiC6J`<3b+~1W&4=^%|oWj{VkeeoYPLj_zd;j#Hl+eSJ78Zol zmYE-Yi3sZdn*Dm=XTwo1ATHyOY<_ z=v@Q{AQN_UcSc9|`Ay}(8*L0{o6QbP@-x1cQ%q#`T3^1u5|Hxd3D@nWKIV4|To6DnOq$Bc$DV|L6E*X&k>p7T9Xq6Q3g%;h$Xg=4GD`Xwi@kh~iiNzrA{*vJ1W6zcgES)>2_i89~X{fG%5#}&aIl;h>Nzt(b5u-J=ZgABFCrE zA6H6b1@_~_uh11Ee$L&r(2QhD6koY0zAA^_cwCNqe4U)irTtQ+mw5wOY~pWtT^`iE zC#G0hYs#E2`AnH-7Mzj^^}en0?VhJ_mHlfok?Na2-*4Py7M5dRB$%7#eiB_0tT7pj zksC4cH2he#U7+xy#rE>8QmlRe*WigM&+aMbeH$ws^@HgHxk?55pPwp?n@>#$Dsf;> z^4?K6)G+y>-|JQ&PRG#KV{$!ecfWL~&cwQ!@a{fMPA<=U&c5{JltXkVHp$aty(Vx; z=6ZA5q%(+$wep{}U0}$nzK2I=H~k*6dM4D`d=EC0>4-580J=oBg~T3fTR`o$h3pO# ze~CWAR2LiH7T{(#{Gj`Xh2GV$uu^qdr*<(<`bS!i;MvpHk7uA<9(;5=q;m2M9K0^# zwMlt$FI(1U&^x8@2cqf+qVVqZ!q1by=+!)%KWEY~kr#6Qcd(+q*Hk*oK616G+UZ`a zxCa}2HXOp_mWVdUTj;V#ytxt-VQXIp9e|QXj?)Jl)iVZ}iHe>?a*Ten{|v*h6greB zRqp2vXy!RbGzptiZffFN;>@}slx%l`XU+|Jj;Cehh=K4$*6@}@XLoe1OKT;z!vw8e z`+%_*TWOZ{<;$lFOD?Nsgje&qYhUb3par!XUhgKl)|dn9nL-V2O9cT;n{yA-c2obY zN=8MwJv7xzj#^)`B#K}4sws3b|JtckQt_b?IewPABD0L={%grk&h9;r>Sy@?-x>I! zo47pEa&Yt3w{pBF!t{9e-7P=)CVWw^>0Uamib-O81`$<5h>AY1(ouc7X@YXhlSd8A znc=zN`Qe+$E#{{4&A_TU@YgxEiR!rf(5I{QW9NKeiz{`ToIYSGTW`yua-;1+Joj>8>?KI4ev^0W zN~Q0tF^R9KA=o5{UUI?9>fl0#EM0Nl&(6J5o!O+A2d-RhJGt>rlz8rfV=#yZLf<|+ z{a5OcFpwx-i2T2jr=tQ@oocg|m`*IrPfX`NIQzl|8>?lDMaU z19`2pqs^-#{m{nFfG#d9RLGWX@)bqW!lS{I;;qW=-g)RD`*vSm?c`U>oX77WdmwZa z0HI4O^iNCy-$}pzx{7#N#XTFp8vvM|zaxg=op8=rTfnVpm_v<2bhdTOzJMODRQ8)SVh3l2}QDl$7w@R!E z@AoLW_+AHhmGjLiCm=xj4P0i5G+-HAQGV5)s#~3a`ff@}i|$;nyt)Y6`MNACGx~Iv z4#wD^u5Pw5T{3lJu>Z@3(1F9F+U&N&mGf@GlWcWTqjumD{$)tGaQioD-j7SEP2`rGy!~|jjr2FZ5Qr+V1FICCGbtO- z3(@uw+2ezIidPYPO<=S_iTv4fehPgiaACtwX06>Pot;0?1J3F16G;rb)dVC>o^n02 z88*e}ikk82AA78Mj)b?oSPNc~q)p=1K9yGNyR>>ct6by0xuNCFDuPj^#H`~JOJ60? zOQFZ>at?jjioHZv-1VgQ7!Wn2XD?5;tr+kp&R;vWO>}!0p0$(k(9K~_hyfm;H2gd4OfkMj{br3^V!xD;uxCx>VKJ_Jmtxg!S&Hk0Oj;CakO;Tgss z80%AuvP$de<5XY2GFfNdz5uYux_?oZ`@hJXS3dwe2R1Iw1IjMQNf@rQ!d*PW{+ugTyY;H@t#yPs^GT@jG#4g`ply+u>`zpSuar|H3GuztNN)??+ z-KXvKKSWl~-ky%Rlvq5m{+!5l}h-|2d8~9jUu8;qD@Zxa9WecM8ZU;wP!X7=jG)($m%UqQ>f3m1DoQ z->>IL{);8J)e~jt-G4^XYg@%-Wqc%L`)cCgh>77A1<1Z{x2;PoGmO~dcXLO9CwccG zv|_fEd7vH5BPn0}rRxX2yNUhe&D+^ZdLq%f&}tT^&&k`nOs|oaz{UbQ<`i6BaQ?Hj zNtXC1l=K5TOCBRAc>0bJx->9&lM9z}g>L!v`7N=XQP6WD+wz=&>vL#CPU4-fxylB! zSVTl9>~4)#&$bae;&zRhAb>6Fo_L&S!*%i zN?OEuw7%%cdyFL(i}t|2)cUJ`_>m`!Cy(j zIE_Eobl)=W<>UC6kY(|K@t~ZOO%O3-Ku$Y$#Dp}l@jX2Wfq#x6i)YV4SI5GiH}q>m zX`0dvPTKh1@p?fjEZO;tvzAOuJLY9uU36l_O!1dmfS&eARY(JhG_&eM8kF;8V~$?t z?Am^^v!nOtvqn8J0KpIX%Nk6jaW`_UKWYp;>f8Ukhgrm)-0P7+`4#Y zuEo2I#w$C@*6K4swLkAZ{^0eQPo?@|4+ae0YwS#}QSm=*rs2bcorE=2`Kn|JxO*hW zcns;pj=+4W?s`8$`j^YHbuHk6XPW_;o?7-Ln+@-jB2uNFsQp=oKIzC<^b>;-$-QkrnX=?nLb{G<;gj5Y>>TLEiQ<3J^_ zX(Dl})XiV4uk!ThM6cJpkOSPBt3Q5e#&%)kRue)cW;1z^7-3ursd1RE?38>0hG@SY z-rbW@WQc)tlyR@J`$OUa>;jP)%=54@0`I}*)sAhknXXUmh2vK=7wv&P=X8wAFw)V< z37lW~#KRU~G|EDwep4j9=&FZ;(eowlx0IQ4$_QiGM5YifO93k^1F|IKy&u9EDwo#C zDB;?CO}~)VdVA6{FxU6{rE2yIO^>S2_I2|(jJ^CoOwDidNpC6|d*ZTsgh;eV+7HW{1w-OG3lR@4p38hwJvX0|5G);Ph@-g&H>D;eXvJmlu4boDBR z%1r6UBQ|D;Xvh7L)7z-iTYX17L=3|#kLpS;lH?#szGF@troAt;-;CIUe#gqv`e$hs zhBVHN@-aNO&Q{`kDxy|fPW?fwQKgOnQfbuj9Hn!Ja}~j*%sJ?Y326|6;{XgpG^nyf zmw-Rwn!1KKCEO>PTCX}_SG59vAz_vPAATUstGZKyDP|Kk?p^aP$XYKD!=Udrpihj= zC`K5oVK;lXQOo#<+RO0mH`OZu3!8C} z;GF!;bxBbj_##}=EwAlb*{Ulsf=8hwL>ftzq;SLSJL6Wz=B<3knvYc;&-E@gPUOWX zz`9pu3w&E|);VA7xW@pklRHrhZQ#7d7H~`=Z!SlHfjdJ}SAK(GYq&~UUHwt5Xq@Bz z?qV63MQ$9VhP`wX-{h`1_!#%d%%4PN4qG$=w zFrT-M#qh;w%9ax)Zu_P`DTb1b@ysg9Oc0+Gl^P}I`w({_&$K4i9(=?ZDe-M6mz~g` zT%A@I_Rjw?w|mTx-p2pi$*tx=^hbi`4xMYfTd~{s5D?YlzGA@R>*dY_vu2oLb*SuQ^_<3&TdGz%K9O9Mj z*sinu_ciUANnAQl?@;=EF&pLy*M>B;p?Q^YEno2Nj{IwBtyA}InxBppuS8=wOGz`t zab-rd?1_?vK;}1RR(~ekGwtWoXL_1T7P5NB?AD4(RS%hm4Qyaz9K?hq>lkm5UIaof zP91kwxZN{e>uBP!tx>;fTxd6N$Hqeu+_=W7WB#zpDc)e+Eddf^W#@oBHM#$Tri$kO z5%%SQQ10#fS|y|uiYz5$PszR{p%9g2?2|nPL)jSaHkh(+ zV=Oa<88h>H>b&P&&N+R5|Micad7jVb-md$)?~9qzzN!0UrAg1V#k%R$!=~r}{BtR| zDvbF@`^BY><&)+n+N!9u%zHRZU)w||tM&P*tJsdl|R&QE=+ z_N6;GXhZOkDr&;#)2e60lk3ccX5Pve3t4>9qC~?n>%~MjEy*TO{r3xhuL0V=iURe&(KP%y;Bhh-%qrr zz4XRh-TZM=4jOX2y}c2RKwCmdHge6<3sZDITnd8F7(yD1Xkp_fM=SFO-43R_@v!Bp zo|iE?7WI*~Utu?1>}VZ)-A~hD<(2BEx{69iSPmcNa|Hy@dN_l>;`L-Nae0)y2iCDf zPV}kKYTM4WkC5I%7ZU#~cmk=!uPviKa)0d2Q7HT7^C_tQE$p%)X&42Ci64B3 zpmj_QEO&i%R;Mq0EyS{c1n2{P9_4O6ra11|DQ!z?((PKyHk|25UvHqwLRxspmc5}1 zFd`>cU$X}@?J zjtt-H%Re4rX=hif!>dF^8(}Bgb)<#5O{@1F>lFXzgxZAiM;pxxYHUT;{g0h5Cqwa2@iQ39jS)FvDQ2FcP zyCLXf)W>F)N9nN)3P0j69VNim0j-wISdxM7(Loof*GogZ#S0s?CdWaalGc-(c=tRD zzV%N%TJKO4dfh1@sNleL`?m&GHRN8jQdMk$ooNM_4_1#``J|+5AOtm1#;M?$8F6_J z+Ai>mmcG&nU|P`jN9>LU)UmWQ{+3aaPm4rp;j3qX;~L>JF3hPWK89QVGUXqR3vXb0ywWu|BcE> zqZawaJN@G0^LaYbHcGI>@olNy5^U20`mGwyb?t%0;Jvu22|p-#a7T30lb)Gyy)0*W z2}-NvKWr9Ombz=#Q=tJcR-~!rSn4VYzCDKKX_UjbP~>U|GiQCPGbA8AO8e!~8io&k z&r=@1`0X%S^u{sU>Vv@TMJ)4qw-6!kqFFf$7N4F;%)diV^dx5b(ImD)2s zyeM;YqE~Y;qLlB@ns%KGzwx^@W(4sE7f`03M`VZdaSfuXr^w$6=umf zZcVW}-E96`P5$~hop|~o(yWejD+g4}{mpuNJq2P(B9A2t(r1rOhb0ym&zA)5|pp&_u<2Nfrd z26PPAX0Si08;PDj(5W&c4My)b-8?w9)nc}7waa646Qy7O#WaZ4B2&EKwnSiEMl%q*F~=e#&&t1LmnMX4 zg)7203Xs@Tfgs0VLE8j!OOQKMW|{SF69=zUcDD2Ig~KNuu=Yh;S-A_M>y_|XpP10i zjD`8~tRK0%(PEwBk$!$7L{tWU^Gg9ZMVn?#ao+uizhjFaJn(r+>gi6{UI=Ce~OcDj44${*t3RL z=hTD3n{0^dHK~0PfoGE|);+AabwqeE1A_cqYApXgmcNeNz9~Z8LD<@pcPAkr^t&?o zAn~}h9&J)*Y6=`jD&Jv4z~^EjoL6wn=cXw6_=%y*5CGZAg=pB`f>Tgc685~NGLdCy;g!wd%XccT zU708zi*YiN873$%l*}?cEXp!bMu_cZViQd2V~Sx3Vj*1j-L0S;;+)HzrG?Xtfj1T1 zyqHrvB75V%Oh~%)LS@|=UE)g@cy={t!}m?>1u{Si;7)mBK}nKxFZ{UJedH(n>Qa=4 zahO#gp-zX*mNdccU?@6dnxNSkJ=Vr6uI{l?oo;#uhR%3n9Jg)JX&tQPoHvP=DzjTt7u4V9u?;W-<_%)j)>A!P){L za4S6(OKljdU%VpR4Gr-W`t-;$^K^!sov+IY_ouka;^it{!0qLq?SFLSOvhz0bpo@2 zoPW!TBO#%l7xSWFi3GcN)&UO67UFA@VcG9Xj5% zoDU)lMaP?63Yp&3@T#rP!g2_uN<>>C)jxS3|#F-_~cU`ntBdD_VX-=8QAU;L&$763ZVZ}!Gs!KNk3 z+L6@FKW8ffz?_HwzDK2mIWv-VF=$s(qJ1MN;vHv4M2vh|qY_G988nZFZ7%TBOoHff zaJ;2_yTyu%C4CY4q%hS-E-2%iaop$GHGCnFN5%rSf{~XnV>veu>|w~gr^jHgc6x3k zKk#n3ipi-KjZnt=)Pcx)<43r=EmOA>ak;FMQRf_UI3II**t)%O@8+-XeIbDDCbjeQ zj59JNL0Wyygbw9)Mwc&e=#4$l)vK?3=P7F(ce=0ZpkhzQqQ6fA{-#eK9wiQ?3!of$ zGW}2fke}N7ZjqHe&vggE3y|bK^_>i;KCWoJz2co%FW45+luP=+Vd!svtHpnTad!@t z3(0^N{RbBH`=rp-a( zb}uD?J}cd-N^eOOkgvCEm?9kg1c(cT;uxQt6ZRAvI(PI_lHhN?vQg9<13`>IW7Six zLzQyPV$zLD(%h5MX(Q^pF(~79(umtL`F7tm08+0URz}TGj~s4&Bt!o|KK^X}jqR!M zcOM{$mYkNBKs#i&TrAAr@L6KpI9Ro>cJf5~#@*HjvJ<}70FH6dlXuZ3!ZxW&22G>p zLDkl)w-UFOJ9z}nBzQjFX|V&fY`q0-Iy`#f4L>Ztad~+kKKN9_$@tMM|B++;y?d9Z zs#~g<9}b=aIFH?C?$+*dsQ?4h>au5IeMLj%A@7{k=a}oS78d~$To4n-#TRCAwm}eJ zA_561qQ>0xOJ2WV&Ad{nIvTeL`w`kPH$_gbchXBFx>vaQ0Q1{ym38goiz+rQ!GXI7 zR;EobnX#4!VtNwmGJfB!hUU|?Oq1CD&Ysu;-zYR%rRzqwc z;Tx~M?7{JAyog=4O7ASFcdERSbfelA>7&P{+Vf~PABC%E^bKhOwD_ZEz^!v@9$~>( zgu~AX)y;aT=BHqHMx|z0rRRkl;(INzo0bn&Ywp~m3=lLa#BS-7O_m{P+GI3owjO13 z#8$^Dyo?vuc1%7*-{%`o`R<$O-H7)M5rlorBMXP2;7wf7gN)Qu_*+^ygKt2KqU{rZ zvEE+ucW(w@!6BkXVY0yt)5umTWYn60^#uCRds3WZ4HjCl-$hgcZ5Vk~>GJ!wN3#s> zU_M$)5Z=0fiGR$8ydZBAlNo<4B+VIxgh_9timmZ*fifCt)otv+tlw3tE3o%tJ7v3; z*f&@|jML##(V$_tpk;w!XYuYhdS8b{0la7T_?DT|5JUX&->;h!JE|Iao5StiiRsS7 zCl+;u?On|o+9cZG0({dbCPBR|nA-2Uvf;Y&*@7|_NZQr*3m6P3_zE4VN-1nifBnEn ztR=uPi^(;FoxM3xU?DUIF(>q-it{_!S|GS5utY52Zl{Vbp>Y+;*XL@)_t+w86q_8n zTx`RpY$ET9*>KH!YfZ6ipstT_)vCz8AQ;0tK9Y~fBop6SN0ITSY9{*pU(~Ea?z>Zd zgu;E*A8=3XoY)eaVf+FjAm4o4DBS)i=RUc!w$`;}ooCNp>T2157m9tmr;rzPV{c}~ z)Uv!3Xy&T~+TNIB^!%7xh$!~Z6q@X`^LD3dDBWrIZ0EvM;)GJFG%WMiZA}J}M#{`O z`GcyJjq5Jgo3s>@w4GgYx4b9U9A%W{=|E&$1(KDqX;4p=0HlZ8ksM!#^#^!3p+^6B zcmGVzi!K6-WDq6%8wbt9cj9~tinVS|D8VxIYTW$r3!lBuUpj9)${N0j|mJM*H0eEFOzVeyic z=xf9Z56M`5^5b>ux6V0gppEngw$gkj=FM&W&)Tpo&0f0&>AWf5)o#1~<}Kr{V|S`c zL3Hs>m%B7=!%v>WhJ~^GG{CTxlgh5-5I+NELElWd$y6uH4h@C;i4xvyT0qD|fA7xp+t0S#0 z%pwz-9RGWdz!AaMp}mzQU>W8z_KJ9QCEdC%aEpZ4tIZB6dFW1?8fdnD_pYwr+yaUi zU2U6KE|-;9m^=bn3VgiyEJG)imNQn*rOMC3WNqbU_!)Y!40-NMoqzuo4Wd_;I@yj4 zS+eau3q$a!Eo+r~P$qjRtAk@!j+l=|mA5QLV$iM^-?Cnf?c{ulZkT3kZ5Yq-&3ikg z$d5IqQjE&uAERi)*u&TwZNYkn-#&iSGa6)>wU{h&9FA@<^QecPG%RLDN zgiY|kw4Mpa@Fwkz_or5XGXs>J#$VM7woj|wENYcb6tl9yG`;1^v%`GuSrc!MZkV~c zkz0=7J70*PX#v~%JNEZ}y*}H!7IV90U(bLxWlWnw{z!#WYEj0VYpTZf%s#b)CGdml zf#m2jcKZwW|Nk6;Z1H-|oesa=^Ku<28Pf9OaG9+wb^2H#nSvf4-ts}kD@)5MN%P2& zs%B*(o&_8!iW@aow2FNF*2It+ypQb+wbM!daD02J`u5j;BShjNPAV6{CpgZ>tW~)v znUElfXRbYkXJg#lPzi_yb&j_m<=7JA=+F(4Y3Jiw=go%|FKUdpgVa)kcL_2u!SPH4 zkJu&ug9Dd~KUqgH{z%!8FIyuvg50WuKUeWmGD=D+&5$1o+)JE8PA)?ytMW{=7;iw9 z$`yR-!u{Uorm1Ps%vVoG`n5$;(8Hz)mKP=4t8~43O76uzv-fPpT<%z#PJ8=f#v-?+ z#<8*1Y-&}lQ9Q{~ow8cPy=$mW-Cfq!?AZY(xntB?>WePDcX-P5&k8r?wTi!}QP;HI zAV+z>m5NuNLY-_h@U^G)89J*`08Gn|UoD`TLu#rnyRVkPLo$IEy)WO+<$j3fVRx~) z5;0LCbEhzq=$n`xF3w{ovTjQTXSC-@-!ba~FfPX35Lh8uLI%%lZP$&of9Q%nl7TMd zd3u>~dB#%D&`a+Lqm{<|OZn9_+0I86IaO60U{UpeD>zJ^<4pz=}$ejU)o0O!Tk!H6EH-^gbA3bcCsjav2Pc4^gbF`ewL4`R%P zc@iuo+Jk`)^fA>>ULo++$M#?jIE>U35l30E5I?&$NybF)a(--g^P`Dwo1)tt%imTS zI-f#Vfd=K=b(IG!H#j+iFkKgPP=2mRb*t4fMlqZ0s;c_L&2jR^tDI3gi~hzLlTGp{ z_L~IbbysEY9|sz)mz|X|=`-b-OewIA1!fU!+LadQH4aO27J@?!C&g!gmWXsm(mv1U z|DX)T-S8*ofG+O1Q~1L^kSN#&tP&V^5@`vW!Sw^2)kp#y4$?2`H{=L+boNw3p(%qpXV{Pd29`*9s%yB=NWXL5^8RNwr#5 zPw)GTjceITpY0hHf0Kt41ji<{%?q-%aHw9i@>>N2D2XHDF6OQwBF8hY8xxFq`YnHG zM%aVq7CE9Di`D~RpEt*k88_9LJe$257gnO&Xb3XIK#0 zEo_V+pmz^(f!&$ZI&RYGgj+ichkkR@lrsL<4sYz7sl8Jw^(m5gE-+{hJplC4`@RMT z&ctMdWKVqTENMIbl^7JEcUv{fsJf6&-(GW9j$hH;YRmr8F)-+zBGh&ROY#7XJtqro zw?ANmf?T?#zj2wE?rS)bb?uITM$!|lM1?s;K|ywEuOi4n*g)g5zwRe8z03G$cdW`o zUOO0zw)UE7R0-|Tg>d3_skv?2E1lP-A#=MI`WyRqOhL`{A+ABb)GB{{ekON;SkhdY z@7%Oa45-Dww`b(hkCYorK)=@2hbQP*%gt23ck3UQ+44fJ(a)(x`wLaWntk%!cq+v! z3=N=2A%hq<#t}AWzctmJ1o~d7Zk)QWI5oLZ z-VWc5VSjuTP&VQGRrY(|iamFsyZaZ_%jpsO>wIswesw3XL^10EoPG&W z(JQbkm0Q`j_Fgx<^EPUxkqZ^T6(IrbUgY5$CJsn3>yx&nlR~hE!Xa^#6qH7gi}k?+qe7t?`|(l%UUc z6s@JVQ}exgbo8pmK+1?pyLDT0T$x8z(`ML;hs6ZsZgUYo{rb`{LDQmjiLLr+vigpq z5TR6e1euy9xwbaFWU9witub!1N}g*2c5e=7wS8zA8dwgmG@WPy$RWMyMhnhH%BKS= zA}6!Qu}QCEd$PAf;!`W7atyoD0|TEB3K+^1*&XVBDTL(c*|7lph+j>ftAL4tfAY*k zWIW7jOnVtS`q|X?ayA_8?YD~5mmyu5qo2iP8OEB=XD$j%c79~iQ`yEe)^bPOq6wb3PlcDTL!#YTgY8<<=tj`m}iA>iULm40hwR9 z5`65PX-i={*@leI921mwC4K-we0ZdLUx-l-4u~QaT&HOALUS9Q042JsQtBIjye@WB zjh*9h#^Zx$09|KbUFPER)0(oWi2{QET2#pjB=mmlGm+Fm+QWA0ca2!-Aj51(@EQHm z4|Qk9E}q=*vUu`cxJF$$TX+@99L&Kr<~0tlv22!}%9kQmpnt9%X^n~y>Mooa8-$;| zLBWPp8SO0CXADk<@&I+he;#@>G3j5byIp^lbwy3Ag*WA_D2Z1Tn`rL&2 zw^aucVIgrJ$J5pKwrjzk7qBY&a5Gbo&AW@#H2!SK!P$~C#+0OV-I*uduDcjzbuF+z zIT(vj9iXoP+Z@e;{%&%}^Jxcnl`eE&)8m#jwz$iJOpfa%@Y?CL*+Q+3Egv+GiMyF7 zc%vh*<^woQRD$;PqaA&##zMGT?$*nlTolF7h(A2NjyKY(52j`9O1~#=c9oVJLWMog z$mpncGRue@EIfQa?(bjr=jyi!;9@<{)Ql)0Y|Qmf*|3PS@v9D34K!ZtWp_}9Yq^N> zY^_i>*D)x`KI*bGe&axWlKOV4=`s1?qnFU{#O>3oL>3H<`L8|cPQP)rGrqv&Lih51 z;0Ed>_!D+MPoH*ZIq>-E?>}-5E5Ft19)}1}-%dZY-*Pa1V0K0y=l^x1E}hfF1^Z^f zUay(oA{yoSN`S&2idKf#&;;5qVRnV%HE4lI+R(jno23}}Y|+gOaj9o0Y{BRN%JHt* z)3eT+raGg07%W~3U()5w>}ts-t z{?efK3)B&gKymV=)j{zE*KG@}Qsz%d-9LwTro7gdFR95>%m%0oWdNM{cQ1P@kq3yW zP|3)Y&t-cXNK2WVRs|*Wuv+eBo)W<5ZUC@``rk5>=c(@k)sd?5G zQWX{5+fJUp&h0)h7FExux3s2}4d-2uh(EYn3q_d2bWyd`t%OAKWy*jGj-m5;nHf_| zJ-eO{G$7yiW!%yWmltfFMElN0?j$wf?VMi~u^qLE^G58ct+5wMN|i=|rNOtp#DKuhvhF6>>(x*I z`yUAcUFfDiMA00mYk5-HmoVO?#aPXn*n6%kSbx zZI&qwF65$#_g$IY&>fS=ew{2eY@@m;{Upls?IDkY|Hsjt>w57}jX%C{<4|C;3U_Q! z2<<5DL&6@zPycZA=pe7MCiJGgBkyPkF%#Kjfw~cpwIb@S`%<0WVbJ_p-UvpIz^;$U zv$Rr*R@&7kjfI3Bjw01w_m+Hw!x z=k|Ecdb$bS6g&H-MD6R%hg8`UC;GL~ItNz*Ri9S$14>S$tS_`}Y z8bn^XRXH1jpK%<$9Rp%NvB`y90mbC49NhII=_;SQHPluK$APrN%A$j)^D9x?J4DOc zsJ29j%GL{*E->o+4FmXxZ_haG@E@@^O)|}cUiKn8txCs^B$2Yz3{~g)?b~2Mcr|Q+ z@&PlRf4bbs0>3i77hO?L6AUTgr*-7yw2sNs!u38qqp{tW}EDxwqHS z(hz5=akoQBBmR*tO9AH@tOc;%y#1AWkkZJfH244vmoc%tQi!3mSI%Mq@yryP&zFux z0iHqT+#u@xgya8l&!%gj5)OV&DwbURC+uM;M%Bc_mgxX_oLxz>me==+K z*`Jx}O6T`Wr6n5<4b?7K7GXvtjP?8hlp)vW`;Ou9x7(Jotbb%bE{_Q&-pgigig&E{ zHowq);yhh3({88bMMuR@_Hu^oMUtv0O@uOe-U60&m#6pl?XRtbjj5iMoUxM||I9iDBMBCvm2SH!yHQvd117j9&q@v7kS9OW{uJ zUA8g9_wk#uI|N;X-RQATgk|fM=jlmm;k6`h%tf8UTvj$6C+pkrl4deQ(6BD8cRL3e z$^hx)-^JL<8Nu-0Ty!x0GfF0Gb*~Qc=7)ovgqz}+4BPgSpj97iy>7m^*Z z3PRn8-43jva06pqPp3>byo}AZL0omB68xD9p8mBWM2OBQZExz_4if364}v4Lx_p#q z$RtN(jK!1gB^a7%lb@Qt^K|tZaYs&(uA)3_T$Z$h&DrTEZ|(3zd~hhB8o(~I`H|k@ zSE+l(joM)o^$843pZ|{xDZUfwyNdHvc{X#=CqVXecHm_*Br=4dCP5(ctQMhwFdw{R zhxar7Bq}`ZaLQMpN-gT9DSRs`GpVzZc=*KmLKS&~fY;~0+bBhnTIfz7^RU%12=MQL z>dzss1~8*$f=v-4rs7C}mG*Elg9H6d$N(6&kq)YPF0k@J`a-uCON~%xuK$P4PP)zQ zMCw|P!`{O%s}~l*C7GkA`{vQQCEXskBdr3 zD8`vx8fLNPy}nwWpDch<)um$IwO9|x$S0U-tOsH<%Zi|VxY)W&`zN`MGwtvkl+M0 zO)#S04ws~t6?^-o=|R6PSW_Szy_K{Prfm^_B`H!CPKPb9YRl8Yc)W`O^4*fE%KH0Z zZKp^uZPo+t0_l92)A`ux+svR%EH9kCG5p!n!a4H_s}vvexDzj*I$@Y_w@kR3uS)8e ztS>mYGGle(P!h&~cp@L4X}LqhH(uooI_vff&}@&fk0ZVm-9m>;pL9@;^t($Oll+)Q zhkyFyhuB`Iu612pYu2v(fO>nsR0950-e0JcsisYN(rY8a-`7#;u;N@diJra1b{bWI zBv=GXXIH3X3m~nM)kcohkkUAtw?mM==b7o@Tg~RDkLj|fB}`cq4PseMO8WVnPV%W zf83=Uxx%X7M`Nl0QxJRVzz?hnfBW5$LU3Yuj&+l0aBeoTM&9Uhp z&FNPwNWBB88+qGDxNP)cq|y6#)4MU$&bcq8H5MvB@sGbL z-6g^Uw)71wc;;8AX9yIH4eGtLya6O-dQq0#UtW$GR1orRq^})nQvCZ#32S(0hp|}Y zPMMD!siF78oK{$yYN-s(<$qP|_(Cr1)4uMKV_QFDVBCQ{e0}5lh2IWn-7M)TY6>~A zQy_tEG)9A@#3o%y*$&jYCluw$HVyeW;kqsB$sohuPZCI@*b5BP#)v1;bs5SOwf3!<6 ze7_`4B!n&=7-Gy<;)|W(5k;2^Ynk(>W&YS>F5~*UJD1#lUZb54xKoFC*aor!iT=`( z?0jo$E<;b7?&uvsU34ecz3GU`@Tes%7G57tEb$tAKK9hx=vcAS?V9C?&881MW^L)G>&l}mQ?_?Cv+W#I-K+_TQh@G{PB;XjAUY7%q2BsfL3@x<~I~8*vaqG1F zY9={~ zOYWF;UA0YC+f8`!IHf%ipDjKg!0X1yvb@;3!g^Mk zZE$KAZ~$IML6Yp+E}7p?7NTD7#_|N_Ht79;oCbH9-Q<3@d_F4ftE^Z^JnMNVnvF=z zIz>6da_@V~MP*ReE~IQVwppBwPXo8f7*v;ntA7#`4W2oJC8tP;d+1hvz}E*~D|PgI zEmtK;t>ZAIU2ZL&z53ZK{MoU&?3bn^oWNdyGNzqj9Ht*J)K54O@bonrdElQc0A2Mb zG^?N!{vyX;3Dy~A4>ibP-cD*f!|Lg9Rcrs9gL5j7HO zZ%xn-Gn6oK1G(ida7nKb^AlY*eDejPBbCLC<}C9YN-Jru@@=2RpScFRP6|=)v(;>F z55^Q{OMT(LVDn6BmFS=a9Z}QFc!p~NG@lt$1=6GwC_jJj>foTxEat$@g}?hv(~e<4 zO)40GKfa%3-9JtlDcV@w4PoH~JQktLmtpfg%D+_W`j3UmZ$&>2=rr4_5#q~LPT$^F zYI@bji92*j7tOS~>u%So3La5x9E*q|7V3e9F^g|Ql8Aal<@R0i0NB;m`YmbgxnVhS=kMpK-dlm4fg8Usyzw{7`XxCC z0INAp;g5SGxG(eJ@*_SNCTtrZuds5CE0Yc+;(`y!*yY_7gvz;*@3fSqgvy4f`9WZg z5Ri(K)mAgI)xWYyn+_3L3tH>vBpzeKnDm2}Gy5OTiac40Vnui-6h4KMLR1aSTqTCWQd_DD?|`B34I&475!Bn0w=>uBMhttPWX|>e|9-$zd|k4Dpz!2PWThWE8;Me>0~M%at-2e(R+F6`8h@p`Ped=Rx70%kYdl z>OheeI02xL5!v16P2Vr|F{mB=dyx3Kq6om%1pWF~>XFb5FB9HYl~|eS;qvmSrq$cB zzAr3zMk@kbbnXmy9J(UB&N<{b^r$s=cfY?A^Y@#HhRE6$(f}B9wpEG1p+IHc8U3eA z4Wt8r-t&Yxa^&Ovkb)$;%i{384b#{Yj8TPcUSrwD;V$(L4?AQ_ypjrS-~~95dDr9x-FoPW5dnzeH>eZxowLuR2CjmX{;rGKu!4f zpDAc+qX$slQi+rPHaK?|I>a*;Tx@PsdMGBLr}m4X?*}WUx`L_Pv0>r)0R!e-j!Moc z>NBc)@5cSs>gqGRo(fqz@h*|cm)Af4J=nQ3oBV1|2tub;O1}WGvdYZ zKw?i)_P(*gTY8DFghTxtg7Vv0h9}Bk-@K)m)o0=OrL7@GKYo`a{iiI!`oG0zw5L?m zhD*NJsmH#t1zJ-8M($k&ya!(Zx8T6@$1d#tI%;F%6Rl=U2?Z&ph&Hc)%de-#$D_0S z2lyXsN|i?q;2tOZzCP}L=@+2P@a{FX9VQYP2}o)ZSD6VC8hkGC61tTAsu(Z2fZl!q z%?A6D3O^?#?dP}m`>twGyGe`bSbS#Lh<}h-wu_l}B=fER_-|YIqj~cu;_~Vq7z7`Q zZ+Ak5r-{}z*ZWw`TnAs7`=lM^^$Dq;_@3g#`;Bwff(7!!J?6)Uy4BlGZMOoT6b*uo zkN)KHU@esOyXNoH@5>yynu_W?hR!@0+f?h#%_e@P&HI-J+na=Mvht@3)XSW_u+FCy z1*|L`na!WK?;UKrwY!k#H_2`2Em+G$wP`(}CkonB9uCa3g*Yi-Fr>4Nc=bBGP@(&054w~a* zrFl=;>RaO?4}6V7*?{)tU*XJzXEzfowZdXoKjkgzsF||)`r6$X4I-;_B7tSUx;bKc z{G7oT_pMK9Er=~_rvxs0TQHO!(0BBa@E-ZQLFyMKATbL&C5;vbF zBp4XjE9_7b8snn|rxg0YcjJIwPJ@QTftNg?Y{&(dmFEp&+m%Bx2hDvT5b?mp{*7YE zo=2I5p$Y#8!~Vi+x?`ICm%_sWX~V;~)5o^KtxCKYkUuM+2zEJ#wqJEX?E8V*fN@~R zFD0K!?aeus#MNW(gC{PP9|JUj8GXr6*-eOmo}t&IY>sO7?{)12HA z^A_hux!*f$32T23zsFV^-H}+joA;WH`Sz&jjrK;W0C`D0B;ZZ)INc^njVbu}@6FU; z53=EQ3Eb=SV@N$O9kCP3iGZt*6_Izwz z8`f#dRmsaFv&-zO?9p_^>+s>So*) z&+*5G_Wi0?Z6QeG%)88+3hd^PnZ@$u1`EZs@nYf_?|TYxC;oB~WtkoVlJB$EGh0hm z8D>9tzKD0782t(H&)f@|QseDo#$F4ezdLs1ec=fp=EVvIgD^(Huncw)HZ&L@ zYqK&DAALXJ7#s{M2P))Go?rJWM(u*PBs3j-^bHfshir2fN|+0Ulwha)EC2gvU*PNm z$RKflh|d6-io^XmFcRuM8Gr6R{re?$2OJ5aT6HtgUd-Y8LA9EfVQAuzrJ#l>@~plS z%rKEHp3?sa9pO{T8>t`7(hBrw{?ko*TMhK~&iuQ#7b_LRSFT6&?0p1;FC99fk(whf z1w`c#r2`M^6&PNP9p5pwi!xEYlf1ck$pK&3cI#c+mJtD4h$6YCw7+avs(McWV)K8F zlN*q(O!}8>9{_qT)+`Qg2 zr)d=q8z8hpbrMK#x9EfisQty&ych)uvAAOq^WA}*KOgpH@o{?cRT+#@fK!i8d0dbU zAP*U5Q?^#dYFGUF$5+8% zjahnyho+J}E_7$ZDVMB66T<%Yg)rw|{AvgBargoCdeZ28^IjC0Q!X5>Af5!(>KlF;6v-&*Uc~- zH~d2khj2CbIQK9(f2t`sU?PF9yh8O=aT-P+1>Uz0UqoTryu5798YqpeHb_J{H`=~4 z&lG^SG^3XXr60{b>O*`i&9Z-YYpWdc&s-yI#sJhvJIzXY&@dZ60t?ZBwO5*Z+Nr8% zBEmkinSp$C8cy~<@KO`|@?i*Z52_N>l+k{A3uwfeJ7$>67l<6d3q&2)*L2}roP8ke6TWd-Xs{rM&Sa`FCEl4y_I z00I5&!bzR}AAY2)q7IVC-2Hnlc<_~M;m(@6lR~BV!l3b|EpCx*Wc*3`V4=ySAn zzJdh;d?3lNB>|m@POE+WDU>9fb}&GQ$v`Bhsp&)gXZL1%H@FY^b?f}OWu9d&Sf|X_ zf#8+&e@31AuP*nLJXBN1vAu1Cy18Ys6ebBkq_Ms=dbkLTMof~@J~K<1BudQ~ZB1ve zq2LkG(P!Dx(y||E7Ffpj_Cy(f`$+_U|@g35{qdag$tl!EiNvQ`J zk_=)Wmeu*Cm;E=;yZ>rBs%(Bs*$=M`h0~@@pl;X?`KqgTWwKL!Elhgi6(5{13tG+* z^KtE+vuJ}PsZ<>dC=j)>Rwg$owcvWlpymGDP~V5TiD~_-CK&kFgJWg$pVG1$cZUt* z|JU08{OE;6jHMl=dI%Mj*oqLy%62g?%&pKc&N^6~Va#viSwd*WwUc#9W#zA(V>%Mc zWn-`{bb&x}Oj_j-NiXBe?Pih3@~L;jf~CH<1t*LMb)VoyXoT(gdf|1AgFD0Ju;itG zGq?VSM74NqWj#wEp|Cctw|8+Fz!{PR*b00PJK(66UuUoICG&X-?pS%`!_0ffeqFot zPV|Qv%w_bPh?Y5-+cIU1>3f`GvVe4>e(`E2#R}MLg#%{`fa%98AFYW>xwI3Le{;UP z4N%p_gS!ibsJGepRkh`~p1}>bOU029FjmkHI;V}LYml(&ckMfd_37Cu`O;a=k9-z7 zZM)g{aawQ?Qd$?2i+-K;>*>!0vN2NBhv%N(R>XDYY=7*EV|qv_Yg7#KXeS!|=IJL= zr2>>x&Kgd?ykQMwKyB5I`VCNAZ6gwCwD10hTq)z28n z%dKM17WI@;AmOhH2;S-pP_YC+=%XgcB+^QxyC%4a{H611FVp5Gu(l zBX1|!G^MgtFbOsY>U|{rZTGS31<41X`8-UU=;gC=T2-LV8gWq9)oeH*mZ@XK1O)>S zL)%-j+KBs!MtN+r)c?{=|H!<&L!B<+#vsDVOT^qLIu&V&>~N9pM53E6)}!35Cw)Jt ze_K<1%yx19LB>#z?xcC?9B>NheNcCIE$oN@(A6Ah)F&NWKkN~B%1q<~=-D@7v!=ha zO*Xp&g*XwOmEZx+5Xk5eU5~&?yL+x}&s&cCg=*9Qu=qCtoXcx#_d=m6j$$;n5E~|cP#5YP-aoQKC8g8n+8Jmldc}o$KBv;IHTO~KBMQ{ z(cmlMOqXq<{?Wj?Se*fFwue8H?==`{iaM2NOcZha`iPSssj@Ht+c$A>xn;SNCa>M| z$ed;Q`0f;yQD*;xi$yKLk%LO#*qI*29o+qEne$Vy9LRK6d*bu?pf)Po5 znqV?MGQtOkU3*LP6juHoS>rO^QiU5a-EuJpf@x@G&viZWW|ew8w14Q%B~jVh(h-cP z$3W&j+4CBJWGdn}lmU5@OriXPyBjv+DexwW8LY*5p|VQV?e@cTx`f*HiO^Tan)>Yu zO?fR&Ha7c~EuhDKPN~)<|M?6icArIyTYyL(x&M_KoC zAC(m#Ls->>1U>dYGvub8X_J0|m)wNcTFP8yXowz_Zl_gw!gpH~e?b{6CzvSRV0C zq;nKfq`wrnq{OSAZ;Qnwz@SqzGi>$pY~PKZol#C5Oz&Jd9^k8#MeNFt3_E@DSb~A+ z$kyt@egH804HYgn<8x5y_I$laTfL8RAd&Xr4HCI+I9@MO&I|Ji(MyC$Fnkkg@XJUY zv}jJteS214uXm-*YZt%)?86R6y;TxlaF#hzmCY;*EWQ0r2hZa|#^}6r`e>FaHbDvo zAP-PCMgg{!gJZ|8RV>IA$miGx4;Vb!t1FZ3Ws51nGu1eea8c@=-Rp$i5LoqZ(Ag$1 z;_|KHu|B`tSEG;POBoL;zlq~q&n72BZVuG?u@s4Pq4C>neb1e=r!zR1+ET zGw0TPayUA9>Kc#P)3V$9tRnu7Rs3nhwsjCbB#(!>|MARS049}C%gWpFzxRTZpJGra zHpzO;uM?s7tt#h?b?IWeudj&j^;rO@>b&R$r-Y^soA}Hp!G8V-uuXXX{{M}$O&*(IpS>kR0ho>b$>6h@7Qrf6tOavL7waE^^JuF2_gH`)L62sSIi(}i?Pc{ zS+k7>qxT-pX+5s%_s8$gARCRiM zm~U;%S?jrlcKLIp=LiW3;J(!hZ<2q#HYy+ndb~S^yMirS!toJ%93L2R$Wq*FU{Ly< zz6nHnqvqA^BdOQYgf_%cQZO!bDPFWiLinwe5V&r)2iAE1$&)8pKRsCStPmJx4CdZl zqi6?RNaj<+YVp|&3-b!^V_P#gg3aQbMr*q)%JO7AZLW3Pq_tL27;y+RGzs~A3VUb6 zXgZ0VpOldoRPnfa!_KhL!ljBk_?tZUTSEp--@BWupHB%yjscWk;&|z)I#&qmNqpA| zxmzVxz#?Y>jHXg(x&hTXF~0KpwP6e=z=y^1!E6#3hRk+nYgLI1dc?lYW6c>kMq$AS zDRPQVOk|^N#ovm5mUc@CUFQ8)n2?1kzzQrbX>@7~YOQ%?!H7w+^~f z;MAS3rdoDPKKhhgapBxaohU-nTbq@U(1|)5&TWyJCL4xpS=BS-1Ijm_9-M{tka_Wco+UE)OCJPJ5+R9!y%7NkzQJC+HV%N6 zTqPs9_j&sC!^leKpVF9cT=HA?QoNWa3W>aR%iQXaq&PlN5Vu64yjsEcbgKj->pzY^~<@fz0}?HxoQ8FlRT((v4?6q>Wv;sHGAV zLqi4;l4;sX85e5Tl;_ZUDk`riik9vB&%l|4UzE!kxl;T(NLKQMz{iPo zH@ayLs~#rC(Gb$(JyP07Hv)L^E_Y61PJWx80(^c94cp9l1>Nc~0WEFNsX`9afBHDl z>{=8!xYj^-&9btzGM0wz*=GSSk416PneuCjqE zXM8z&?wDUHFWytX`tEEV`lGuqp!1C0c=4lp=fRnfImbs97r#Z-+@+~xqZ5Cf;G2`j z+jfZ>HFEk*jRdS38*sn|6-&!cLdd52l>T2qX~;(O7a-8LyXBdw=uLB=rf;G?Pv0P*}2jOVrX$|Wt0#P?2C5&=`a z&)sws$`{hT%x(`v8sS8wYRM$Xl^3SdUdo7Wwm9e{Tq1mqGX)pw=C71bo2st69{BiL zbDbDA$uh+MShtq?LQ?ZwoH>N4o*rHSYft{sE6%* zc)^5Ou3Gb0PmD&`a9Biz^B^Fs&0wP=@aelhlY2U-(_V^iHKGA|bFAsDZV-|^|8W5$ z5%B4?<-?jm)la$nQF_8JFs5WjqcaB=*2RcLphBr8K`+W~E!lG@oco&ct(be0x8WKb zVT_ex#?^3=aL>nHwG52(MFM)tA0ug6+&d<+qS%2Wp z63MAv`@2vyM4oCIvfj;m*&~8n#8$%6q@!jPsRb03^!-<@hQxM}moV8(2SWoDsd|7E z<2VW_#sPpu`Ny^4aiO(+sOrrl#MT72bSP89b4IXZ^pl>knbI8@*nxa4Oe{*&c_ALT zRkW(|&+fszXShsuj)7B&>~nn~k`!4MTE|bR+A!|>w29Xk{11~#ZJnf9&qO%wuSv1O z@tL#o*e(X?@>zw>WOje2i2k)(gcGXHz^Y;PUpMj?^AO>!GP*`4KOJ4)W6|%Oz!Z_h z;y%}%0LL6|qZK$}4awa4Yxsn8K8l8H3W&ur?O$h$uKnPke|tKUFDKO(Z7@1*SKxTT zoUrWjd|IdF`Gc<8s=7?8Rand$`BhyN!B06^^goP^KC`$Wqo*~lGm}i@ya%}OZ<9xmKyxFSOdm%& zJh7EeE4C%|SaDCj&+qC`3r(HGTeT(_dtn#%xHqi;;Be>eukkT6!surjP~3`~FXJZ8TgTtz zkIEi-4EmuCtS3N8v^XnPY<(59U?VR390KMNyF1JQ4Hk9kFs|+NitDv1lXE_XRg=dF zPV!;Te>$=I_wg2=ic~oNX7=Hjf%KT@z;O^1Mz^%#_jg5DK zA_wK#++40qowImY*I~`1qU)l|eyWC}Y{S75^N}uk8e&WL~*k5-XA#CEY^tN z&D}eGj%u}Hy??H1fqkr*mifN?$^FMUw4FK(`s7T~aY_}Jub_%<&*1B#8C6!e@{bJI z7D!qM!v8~Gln37i@E#E4{v-Zo=NS+bJoIA%x8vX;2!8$F$9*XT|NjuvhyDmL6J+qx zw^q>)9e=t{|C@5rv{Ncv2RLJ$Rad|$XT8K7%qs+;SVxOw&q+wgT`RE(r-Zo2$7!v{fX=I1N~Uf zDd!kzFa+9I?+uC%MuqC%3DMSRI_yX6>$n3w9uJS>p$~3Ao|pZLcoEKLLk@j@tCW8>6w5~LTaX9+RW`I!wFYhscW~{^FF05 z3R-kn4ta0ca{kn8{^>bEj$nUrAt3}wgECDpkrEN0N0fBEu>yRIXaAm$@yYOLj1y?> zq{71Gh5ZusFnsQ?hn^H8D!qj1Pn<0OII2PD#Id_dLJq8@dr(u$Ewt6MSP5iCM+pyJ z>uUp`7RlQ~Q@#*yYLg68GavbFXaJq3Zmj@EDb>*xu9Z0K>tJLMRpnb?c}Cr$LZqs14;W@l23F9P_3fz;+nyveEL>@ z#5q`aaJz2FciOPI$Vl{7SUgvypA=m*yB|UQjzv=D#_15NH&)0b9rX8`4h;GIN+&z! zp=r<1MNTT!idipp?JuclqCHK?1pGTnpRtXX{~}%a7f=|cXp`-?Q7pG+Nj#?G@a{Vz z^a&t<)qMzxv&>%!Ch)!xG<+sx6GSUtB#Zht5?uV{_%#i{*gW)#o(B(LF<*2FbeEws zr%?Yc`V~#xdGOs!X#S21m$ZI{g3}xVrTd%|PfYRPjX>t|+3^K>%Km=TV_5&CQ=9tD zL(sFf+{haA+e9q8raCH#Q9&AlXrHQ|L+E3`5c6jf=07gPOaquRWOf%P6RiT!6<<7J zdnlC^cC?t&4DQ^Y{}Cp{NL=!k94urcrsOv~FJ)(0R!@g}zyaG&CD^zc=(ed*Aq&w) z0Y``)Uvv+vg<`?M>*d)-CsVB0&_cm3G&%+ zI`<$w4hGwfKpEf18$1qEorw`eIGsS>&E@%#j_UZ#eqI$_5Tc#R;uH>ieQ3U%VFDDv^XxjvGdt+q}I$n${QA~6${aQ7uyynV7^*kLWvg4p z9__pyxIoJk&yUC$^kIm0P)u)&VCG7ps276sH3}4G7F~U~RH!16?R`b+6dtXji$UK3qc?j0wyESuJZ=hN5Kzw|wj{zYIM`!}K0{pECD1(yDkSEyCgpMezz=e$~ z3Q6gG|J`%dT#rii-gJQr<_=MP4=i5_Y>;YVN+!PO5b9D%BzJrZxdyAT;j2KAFS*FG z&8glj0Ryjr1LlTFZ6BGz-Dp&62U%0CKat>cg^n#B5d*84{b1dCd*>}vkCynDE7lMC zyC^YIZwdNahTpawPfpYYqHX0A)o13?sPFPcsqBDKL#g0Y7%JCw;imTq;IlQTEmMPy zb2sd6*nnrE0J?&z)Q9(G@4ZV8mOcL00!+7<|6Sl;8mRrBM`tgG F{13}#uKxf4 literal 0 HcmV?d00001 From 86911e2a115feb4182097fe49da3e9bbe220d846 Mon Sep 17 00:00:00 2001 From: mumian Date: Fri, 2 Dec 2016 15:10:34 -0500 Subject: [PATCH 02/90] format --- .../hdinsight-domain-joined-architecture.md | 26 +++++++++++-------- 1 file changed, 15 insertions(+), 11 deletions(-) diff --git a/articles/hdinsight/hdinsight-domain-joined-architecture.md b/articles/hdinsight/hdinsight-domain-joined-architecture.md index e67c1acd73b9d..38803797f95d5 100644 --- a/articles/hdinsight/hdinsight-domain-joined-architecture.md +++ b/articles/hdinsight/hdinsight-domain-joined-architecture.md @@ -32,7 +32,7 @@ To achieve this setup, there are multiple architectures that you can follow. The 1. HDINSIGHT INTEGRATED WITH ACTIVE DIRECTORY RUNNING ON AZURE IAAS - This is by far the simplest architecture for integrating HDInsight with active directory. The architecture diagram is provided below. In this architecture, you will have your active directory domain controller running on a (or multiple) VMs in Azure. Usually these VMs will be within a Virtual network. You can setup a new Virtual network within which you can place your HDInsight cluster. For HDInsight to have a line of sight to the active directory, you will need to peer these virtual networks using VNET to VNET peering. + This is by far the simplest architecture for integrating HDInsight with active directory. The architecture diagram is provided below. In this architecture, you will have your active directory domain controller running on a (or multiple) VMs in Azure. Usually these VMs will be within a Virtual network. You can setup a new Virtual network within which you can place your HDInsight cluster. For HDInsight to have a line of sight to the active directory, you will need to peer these virtual networks using [VNET to VNET peering](../virtual-network/virtual-networks-create-vnetpeering-arm-portal.md). ![Domain-join HDInsight cluster topology](./media/hdinsight-domain-joined-architecture/image1.png) @@ -49,7 +49,7 @@ To achieve this setup, there are multiple architectures that you can follow. The 2. HDINSIGHT INTEGRATED WITH A CLOUD-ONLY AZURE ACTIVE DIRECTORY. - For a cloud-only azure active directory, you will need to configure a domain controller so that HDInsight can be integrated with your azure active directory (AAD). This is achieved using azure active directory domain services (AD DS). The AD DS creates domain controller machines on the cloud, and provides you with IP addresses for them. It creates two domain controllers for high availability. + For a cloud-only azure active directory, you will need to configure a domain controller so that HDInsight can be integrated with your azure active directory (AAD). This is achieved using [azure active directory domain services](../active-directory-domain-services/active-directory-ds-overview.md) (AD DS). The AD DS creates domain controller machines on the cloud, and provides you with IP addresses for them. It creates two domain controllers for high availability. The architecture for this setup is shown below. The AD DS only exists in Classic VNETs today, and hence you will need access to Classic portal, and will need to create a classic VNET for configuring AD DS. The HDInsight VNET exists in ARM portal, which will need to be peered with the classic VNET using VNET to VNET peering. @@ -60,8 +60,10 @@ To achieve this setup, there are multiple architectures that you can follow. The Pre-requisites that need to be setup on active directory - * An Organizational unit must be created, within which you want to place the HDInsight cluster VMs and the service principals used by the cluster. * LDAPS must be setup when you configure AD DS. The certificate used to setup LDAPS must be a real certificate (not a self-signed certificate). - * Reverse DNS zones must be created on the domain for the IP address range of the HDI Subnet (for example 10.2.0.0/24 in the above picture). * Password hashes must be synced from AAD to AD DS. + * An [Organizational unit](../active-directory-domain-services/active-directory-ds-admin-guide-create-ou.md) must be created, within which you want to place the HDInsight cluster VMs and the service principals used by the cluster. + * [LDAPS](../active-directory-domain-services/active-directory-ds-admin-guide-configure-secure-ldap.md) must be setup when you configure AD DS. The certificate used to setup LDAPS must be a real certificate (not a self-signed certificate). + * Reverse DNS zones must be created on the domain for the IP address range of the HDI Subnet (for example 10.2.0.0/24 in the above picture). + * [Password hashes](../active-directory-domain-services/active-directory-ds-getting-started-password-sync.md) must be synced from AAD to AD DS. * A service account, or a user account is needed, which will be used to create the HDInsight cluster. This account must have the following permissions - Permissions to create service principal objects and machine objects within the organizational unit. @@ -70,11 +72,10 @@ To achieve this setup, there are multiple architectures that you can follow. The 3. HDINSIGHT INTEGRATED WITH AN ON-PREMISES ACTIVE DIRECTORY VIA VPN SETUP. - This architecture is like the architecture #1. The only difference is that in this case, your active directory is on-premises and the line of sight for HDInsight to active directory is via a VPN connection from Azure to on-premises network. The architecture diagram for this setup is shown below. + This architecture is like the architecture #1. The only difference is that in this case, your active directory is on-premises and the line of sight for HDInsight to active directory is via a [VPN connection from Azure to on-premises network](../expressroute/expressroute-introduction.md). The architecture diagram for this setup is shown below. ![Domain-join HDInsight cluster topology](./media/hdinsight-domain-joined-architecture/image3.png) - Pre-requisites that need to be setup on the on-premises active directory * An Organizational unit must be created, within which you want to place the HDInsight cluster VMs and the service principals used by the cluster. @@ -88,7 +89,7 @@ To achieve this setup, there are multiple architectures that you can follow. The 4. HDINSIGHT INTEGRATED WITH AN ON-PREMISES ACTIVE DIRECTORY SYNCED TO AN AZURE ACTIVE DIRECTORY - This architecture is like the architecture #2. The only difference is that in this case, the on-premises active directory is synced to the azure active directory (AAD). You will need to configure a domain controller on the cloud so that HDInsight can be integrated with your azure active directory (AAD). This is achieved using azure active directory domain services (AD DS). The AD DS creates domain controller machines on the cloud, and provides you with IP addresses for them. It creates two domain controllers for high availability. + This architecture is like the architecture #2. The only difference is that in this case, the on-premises active directory is synced to the azure active directory (AAD). You will need to configure a domain controller on the cloud so that HDInsight can be integrated with your azure active directory (AAD). This is achieved using [azure active directory domain services](../active-directory-domain-services/active-directory-ds-overview.md) (AD DS). The AD DS creates domain controller machines on the cloud, and provides you with IP addresses for them. It creates two domain controllers for high availability. The architecture for this setup is shown below. The AD DS only exists in Classic VNETs today, and hence you will need access to Classic portal, and will need to create a classic VNET for configuring AD DS. The HDInsight VNET exists in ARM portal, which will need to be peered with the classic VNET using VNET to VNET peering. @@ -99,8 +100,10 @@ To achieve this setup, there are multiple architectures that you can follow. The Pre-requisites that need to be setup on active directory - * An Organizational unit must be created, within which you want to place the HDInsight cluster VMs and the service principals used by the cluster. * LDAPS must be setup when you configure AD DS. The certificate used to setup LDAPS must be a real certificate (not a self-signed certificate). - * Reverse DNS zones must be created on the domain for the IP address range of the HDI Subnet (for example 10.2.0.0/24 in the above picture). * Password hashes must be synced from AAD to AD DS. + * An [Organizational unit](../active-directory-domain-services/active-directory-ds-admin-guide-create-ou.md) must be created, within which you want to place the HDInsight cluster VMs and the service principals used by the cluster. + * LDAPS must be setup when you configure AD DS. The certificate used to setup LDAPS must be a real certificate (not a self-signed certificate). + * Reverse DNS zones must be created on the domain for the IP address range of the HDI Subnet (for example 10.2.0.0/24 in the above picture). + * [Password hashes](../active-directory-domain-services/active-directory-ds-getting-started-password-sync.md) must be synced from AAD to AD DS. * A service account, or a user account is needed, which will be used to create the HDInsight cluster. This account must have the following permissions - Permissions to create service principal objects and machine objects within the organizational unit. @@ -123,8 +126,9 @@ To achieve this setup, there are multiple architectures that you can follow. The Pre-requisites that need to be setup on active directory * An Organizational unit must be created, within which you want to place the HDInsight cluster VMs and the service principals used by the cluster. - * LDAPS must be setup when you configure AD DS. You can create a self-signed certificate to configure LDAPS. However, to use a self-signed certificate, you will need to request an exception from hdipreview@microsoft.com. - * Reverse DNS zones must be created on the domain for the IP address range of the HDI Subnet (for example 10.2.0.0/24 in the above picture). * Password hashes must be synced from AAD to AD DS. + * LDAPS must be setup when you configure AD DS. You can create a [self-signed certificate](../active-directory-domain-services/active-directory-ds-admin-guide-configure-secure-ldap.md) to configure LDAPS. However, to use a self-signed certificate, you will need to request an exception from [hdipreview@microsoft.com](hdipreview@microsoft.com). + * Reverse DNS zones must be created on the domain for the IP address range of the HDI Subnet (for example 10.2.0.0/24 in the above picture). + * Password hashes must be synced from AAD to AD DS. * A service account, or a user account is needed, which will be used to create the HDInsight cluster. This account must have the following permissions - Permissions to create service principal objects and machine objects within the organizational unit. From 3c8eb6f1f85879b9396900832071b80ad805c968 Mon Sep 17 00:00:00 2001 From: mumian Date: Mon, 5 Dec 2016 09:42:21 -0500 Subject: [PATCH 03/90] fix warning --- articles/hdinsight/hdinsight-domain-joined-architecture.md | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/articles/hdinsight/hdinsight-domain-joined-architecture.md b/articles/hdinsight/hdinsight-domain-joined-architecture.md index 38803797f95d5..1236cc2cacaa1 100644 --- a/articles/hdinsight/hdinsight-domain-joined-architecture.md +++ b/articles/hdinsight/hdinsight-domain-joined-architecture.md @@ -126,7 +126,7 @@ To achieve this setup, there are multiple architectures that you can follow. The Pre-requisites that need to be setup on active directory * An Organizational unit must be created, within which you want to place the HDInsight cluster VMs and the service principals used by the cluster. - * LDAPS must be setup when you configure AD DS. You can create a [self-signed certificate](../active-directory-domain-services/active-directory-ds-admin-guide-configure-secure-ldap.md) to configure LDAPS. However, to use a self-signed certificate, you will need to request an exception from [hdipreview@microsoft.com](hdipreview@microsoft.com). + * LDAPS must be setup when you configure AD DS. You can create a [self-signed certificate](../active-directory-domain-services/active-directory-ds-admin-guide-configure-secure-ldap.md) to configure LDAPS. However, to use a self-signed certificate, you will need to request an exception from hdipreview@microsoft.com. * Reverse DNS zones must be created on the domain for the IP address range of the HDI Subnet (for example 10.2.0.0/24 in the above picture). * Password hashes must be synced from AAD to AD DS. * A service account, or a user account is needed, which will be used to create the HDInsight cluster. This account must have the following permissions @@ -139,5 +139,5 @@ To achieve this setup, there are multiple architectures that you can follow. The * For configuring a Domain-joined HDInsight cluster, see [Configure Domain-joined HDInsight clusters](hdinsight-domain-joined-configure.md). * For managing a Domain-joined HDInsight clusters, see [Manage Domain-joined HDInsight clusters](hdinsight-domain-joined-manage.md). * For configuring Hive policies and run Hive queries, see [Configure Hive policies for Domain-joined HDInsight clusters](hdinsight-domain-joined-run-hive.md). -* For running Hive queries using SSH on Domain-joined HDInsight clusters, see [Use SSH with Linux-based Hadoop on HDInsight from Linux, Unix, or OS X](hdinsight-hadoop-linux-use-ssh-unix.md#connect-to-a-domain-joined-hdinsight-cluster). +* For running Hive queries using SSH on Domain-joined HDInsight clusters, see [Use SSH with Linux-based Hadoop on HDInsight from Linux, Unix, or OS X](hdinsight-hadoop-linux-use-ssh-unix.md). From abe38925aece193c0872207d401322d5ad18534b Mon Sep 17 00:00:00 2001 From: mumian Date: Tue, 10 Jan 2017 11:24:55 -0500 Subject: [PATCH 04/90] incorporate feedback --- .../hdinsight-domain-joined-architecture.md | 46 +++++++++---------- 1 file changed, 23 insertions(+), 23 deletions(-) diff --git a/articles/hdinsight/hdinsight-domain-joined-architecture.md b/articles/hdinsight/hdinsight-domain-joined-architecture.md index 1236cc2cacaa1..d559989da28f6 100644 --- a/articles/hdinsight/hdinsight-domain-joined-architecture.md +++ b/articles/hdinsight/hdinsight-domain-joined-architecture.md @@ -14,7 +14,7 @@ ms.devlang: na ms.topic: hero-article ms.tgt_pltfrm: na ms.workload: big-data -ms.date: 10/31/2016 +ms.date: 01/10/2017 ms.author: saurinsh --- @@ -22,17 +22,17 @@ ms.author: saurinsh Today, HDInsight is a single user cluster, which works fine for most companies who have smaller application teams building their BigData workloads. However, as Hadoop is gaining popularity, a lot of enterprises are moving towards a model where clusters are managed by IT teams, and multiple application teams are sharing clusters. Thus, multi-user clusters are one of the most requested functionality in HDInsight. -Instead of building our own multi-user authentication, and authorization, HDInsight has decided to rely on the most popular identity provider – Active Directory. After integrating HDInsight with active directory, multiple users from active directory will be able to communicate with the cluster using their active directory credentials. The powerful security groups functionality in active directory can be used to manage multi-user authorization in HDInsight. HDInsight will map the active directory user to a local Hadoop user, so all the services running on HDInsight (Ambari, Hive server, Ranger, Spark thrift server, etc) will seamlessly work for the logged in user. +Instead of building our own multi-user authentication, and authorization, HDInsight has decided to rely on the most popular identity provider – Active Directory. After integrating HDInsight with active directory, multiple users from active directory can communicate with the cluster using their active directory credentials. The powerful security groups functionality in active directory can be used to manage multi-user authorization in HDInsight. HDInsight maps the active directory user to a local Hadoop user, so all the services running on HDInsight (Ambari, Hive server, Ranger, Spark thrift server, etc) work seamlessly for the logged in user. -## What are different ways that HDInsight can be integrated with Active Directory? (Title is too long to fit into the TOC) +## Integrate HDInsight with Active Directory -When HDInsight is integrated with active directory, the HDInsight Linux nodes will be domain-joined to the active directory domain. HDInsight will create service principals for the hadoop services running on the cluster and place them within a specified Organizational Unit in the active directory. HDInsight will also create reverse DNS mappings in the active directory domain for the IP addresses of the nodes that are joined to the domain. +When HDInsight is integrated with active directory, the HDInsight Linux nodes is domain-joined to the active directory domain. HDInsight creates service principals for the hadoop services running on the cluster and place them within a specified Organizational Unit in the active directory. HDInsight also creates reverse DNS mappings in the active directory domain for the IP addresses of the nodes that are joined to the domain. -To achieve this setup, there are multiple architectures that you can follow. The details about these architectures are provided below. You will need to decide which architecture works better for you. +To achieve this setup, there are multiple architectures that you can follow. The details about these architectures are provided below. You need to decide which architecture works better for you. -1. HDINSIGHT INTEGRATED WITH ACTIVE DIRECTORY RUNNING ON AZURE IAAS +**1. HDInsight integrated with AD running on Azure IAAS** - This is by far the simplest architecture for integrating HDInsight with active directory. The architecture diagram is provided below. In this architecture, you will have your active directory domain controller running on a (or multiple) VMs in Azure. Usually these VMs will be within a Virtual network. You can setup a new Virtual network within which you can place your HDInsight cluster. For HDInsight to have a line of sight to the active directory, you will need to peer these virtual networks using [VNET to VNET peering](../virtual-network/virtual-networks-create-vnetpeering-arm-portal.md). + This is by far the simplest architecture for integrating HDInsight with active directory. The architecture diagram is provided below. In this architecture, you have your active directory domain controller running on a (or multiple) VMs in Azure. Usually these VMs is within a Virtual network. You can setup a new Virtual network within which you can place your HDInsight cluster. For HDInsight to have a line of sight to the active directory, you need to peer these virtual networks using [VNET to VNET peering](../virtual-network/virtual-networks-create-vnetpeering-arm-portal.md). ![Domain-join HDInsight cluster topology](./media/hdinsight-domain-joined-architecture/image1.png) @@ -41,17 +41,17 @@ To achieve this setup, there are multiple architectures that you can follow. The * An Organizational unit must be created, within which you want to place the HDInsight cluster VMs and the service principals used by the cluster. * LDAPS must be setup for communicating with the active directory. The certificate used to setup LDAPS must be a real certificate (not a self-signed certificate). * Reverse DNS zones must be created on the domain for the IP address range of the HDI Subnet (for example 10.2.0.0/24 in the above picture). - * A service account, or a user account is needed, which will be used to create the HDInsight cluster. This account must have the following permissions: + * A service account, or a user account is needed, which isused to create the HDInsight cluster. This account must have the following permissions: - Permissions to create service principal objects and machine objects within the organizational unit. - Permissions to create reverse DNS proxy rules - Permissions to join machines to the active directory domain. -2. HDINSIGHT INTEGRATED WITH A CLOUD-ONLY AZURE ACTIVE DIRECTORY. +**2. HDInsight integrated with a cloud-only Azure AD** - For a cloud-only azure active directory, you will need to configure a domain controller so that HDInsight can be integrated with your azure active directory (AAD). This is achieved using [azure active directory domain services](../active-directory-domain-services/active-directory-ds-overview.md) (AD DS). The AD DS creates domain controller machines on the cloud, and provides you with IP addresses for them. It creates two domain controllers for high availability. + For a cloud-only azure active directory, you need to configure a domain controller so that HDInsight can be integrated with your azure active directory (AAD). This is achieved using [azure active directory domain services](../active-directory-domain-services/active-directory-ds-overview.md) (AD DS). The AD DS creates domain controller machines on the cloud, and provides you with IP addresses for them. It creates two domain controllers for high availability. - The architecture for this setup is shown below. The AD DS only exists in Classic VNETs today, and hence you will need access to Classic portal, and will need to create a classic VNET for configuring AD DS. The HDInsight VNET exists in ARM portal, which will need to be peered with the classic VNET using VNET to VNET peering. + The architecture for this setup is shown below. The AD DS only exists in Classic VNETs today, and hence you need access to Classic portal, and need to create a classic VNET for configuring AD DS. The HDInsight VNET exists in ARM portal, which need to be peered with the classic VNET using VNET to VNET peering. > [!NOTE] > Peering between Classic and ARM VNETs can happen only when they both are in same subscription and same region. @@ -64,13 +64,13 @@ To achieve this setup, there are multiple architectures that you can follow. The * [LDAPS](../active-directory-domain-services/active-directory-ds-admin-guide-configure-secure-ldap.md) must be setup when you configure AD DS. The certificate used to setup LDAPS must be a real certificate (not a self-signed certificate). * Reverse DNS zones must be created on the domain for the IP address range of the HDI Subnet (for example 10.2.0.0/24 in the above picture). * [Password hashes](../active-directory-domain-services/active-directory-ds-getting-started-password-sync.md) must be synced from AAD to AD DS. - * A service account, or a user account is needed, which will be used to create the HDInsight cluster. This account must have the following permissions + * A service account, or a user account is needed, which is used to create the HDInsight cluster. This account must have the following permissions - Permissions to create service principal objects and machine objects within the organizational unit. - Permissions to create reverse DNS proxy rules - Permissions to join machines to the active directory domain. -3. HDINSIGHT INTEGRATED WITH AN ON-PREMISES ACTIVE DIRECTORY VIA VPN SETUP. +**3. HDInsight integrated with an on-premises AD via VPN** This architecture is like the architecture #1. The only difference is that in this case, your active directory is on-premises and the line of sight for HDInsight to active directory is via a [VPN connection from Azure to on-premises network](../expressroute/expressroute-introduction.md). The architecture diagram for this setup is shown below. @@ -81,17 +81,17 @@ To achieve this setup, there are multiple architectures that you can follow. The * An Organizational unit must be created, within which you want to place the HDInsight cluster VMs and the service principals used by the cluster. * LDAPS must be setup for communicating with the active directory. The certificate used to setup LDAPS must be a real certificate (not a self-signed certificate). * Reverse DNS zones must be created on the domain for the IP address range of the HDI Subnet (for example 10.2.0.0/24 in the above picture). - * A service account, or a user account is needed, which will be used to create the HDInsight cluster. This account must have the following permissions + * A service account, or a user account is needed, which is used to create the HDInsight cluster. This account must have the following permissions - Permissions to create service principal objects and machine objects within the organizational unit. - Permissions to create reverse DNS proxy rules - Permissions to join machines to the active directory domain. -4. HDINSIGHT INTEGRATED WITH AN ON-PREMISES ACTIVE DIRECTORY SYNCED TO AN AZURE ACTIVE DIRECTORY +**4. HDIsight integrated with an on-premises AD synced to an Azure AD** - This architecture is like the architecture #2. The only difference is that in this case, the on-premises active directory is synced to the azure active directory (AAD). You will need to configure a domain controller on the cloud so that HDInsight can be integrated with your azure active directory (AAD). This is achieved using [azure active directory domain services](../active-directory-domain-services/active-directory-ds-overview.md) (AD DS). The AD DS creates domain controller machines on the cloud, and provides you with IP addresses for them. It creates two domain controllers for high availability. + This architecture is like the architecture #2. The only difference is that in this case, the on-premises active directory is synced to the azure active directory (AAD). You need to configure a domain controller on the cloud so that HDInsight can be integrated with your azure active directory (AAD). This is achieved using [azure active directory domain services](../active-directory-domain-services/active-directory-ds-overview.md) (AD DS). The AD DS creates domain controller machines on the cloud, and provides you with IP addresses for them. It creates two domain controllers for high availability. - The architecture for this setup is shown below. The AD DS only exists in Classic VNETs today, and hence you will need access to Classic portal, and will need to create a classic VNET for configuring AD DS. The HDInsight VNET exists in ARM portal, which will need to be peered with the classic VNET using VNET to VNET peering. + The architecture for this setup is shown below. The AD DS only exists in Classic VNETs today, and hence you need access to Classic portal, and need to create a classic VNET for configuring AD DS. The HDInsight VNET exists in ARM portal, which need to be peered with the classic VNET using VNET to VNET peering. > [!NOTE] > Peering between Classic and ARM VNETs can happen only when they both are in same subscription and same region. @@ -104,19 +104,19 @@ To achieve this setup, there are multiple architectures that you can follow. The * LDAPS must be setup when you configure AD DS. The certificate used to setup LDAPS must be a real certificate (not a self-signed certificate). * Reverse DNS zones must be created on the domain for the IP address range of the HDI Subnet (for example 10.2.0.0/24 in the above picture). * [Password hashes](../active-directory-domain-services/active-directory-ds-getting-started-password-sync.md) must be synced from AAD to AD DS. - * A service account, or a user account is needed, which will be used to create the HDInsight cluster. This account must have the following permissions + * A service account, or a user account is needed, which is used to create the HDInsight cluster. This account must have the following permissions - Permissions to create service principal objects and machine objects within the organizational unit. - Permissions to create reverse DNS proxy rules - Permissions to join machines to the active directory domain. -5. HDINSIGHT INTEGRATED WITH A NON-DEFAULT AZURE ACTIVE DIRECTORY (RECOMMENDED ONLY AS A PLAYGROUND SCENARIO). +**5. HDInsight integrated with a non-default Azure AD (recommended only for testing and development)** - This architecture is like architecture #2. In most companies, the admin access to Active Directory is restricted to only certain individuals. Thus, when you want to do a POC, or just try out creating a domain-joined cluster, instead of waiting for admin to configure pre-requisites on the active directory, it may be beneficial to just create a new azure active directory in the subscription. Since this is an AAD that you created, you will have full permissions to this AAD to configure the AD DS. + This architecture is like architecture #2. In most companies, the admin access to Active Directory is restricted to only certain individuals. Thus, when you want to do a POC, or just try out creating a domain-joined cluster, instead of waiting for admin to configure pre-requisites on the active directory, it may be beneficial to just create a new azure active directory in the subscription. Since this is an AAD that you created, you have full permissions to this AAD to configure the AD DS. The architecture diagram for this setup is shown below. The AD DS creates domain controller machines on the cloud, and provides you with IP addresses for them. It creates two domain controllers for high availability. - The architecture for this setup is shown below. The AD DS only exists in Classic VNETs today, and hence you will need access to Classic portal, and will need to create a classic VNET for configuring AD DS. The HDInsight VNET exists in ARM portal, which will need to be peered with the classic VNET using VNET to VNET peering. + The architecture for this setup is shown below. The AD DS only exists in Classic VNETs today, and hence you need access to Classic portal, and need to create a classic VNET for configuring AD DS. The HDInsight VNET exists in ARM portal, which need to be peered with the classic VNET using VNET to VNET peering. > [!NOTE] > Peering between Classic and ARM VNETs can happen only when they both are in same subscription and same region. @@ -126,10 +126,10 @@ To achieve this setup, there are multiple architectures that you can follow. The Pre-requisites that need to be setup on active directory * An Organizational unit must be created, within which you want to place the HDInsight cluster VMs and the service principals used by the cluster. - * LDAPS must be setup when you configure AD DS. You can create a [self-signed certificate](../active-directory-domain-services/active-directory-ds-admin-guide-configure-secure-ldap.md) to configure LDAPS. However, to use a self-signed certificate, you will need to request an exception from hdipreview@microsoft.com. + * LDAPS must be setup when you configure AD DS. You can create a [self-signed certificate](../active-directory-domain-services/active-directory-ds-admin-guide-configure-secure-ldap.md) to configure LDAPS. However, to use a self-signed certificate, you need to request an exception from hdipreview@microsoft.com. * Reverse DNS zones must be created on the domain for the IP address range of the HDI Subnet (for example 10.2.0.0/24 in the above picture). * Password hashes must be synced from AAD to AD DS. - * A service account, or a user account is needed, which will be used to create the HDInsight cluster. This account must have the following permissions + * A service account, or a user account is needed, which is used to create the HDInsight cluster. This account must have the following permissions - Permissions to create service principal objects and machine objects within the organizational unit. - Permissions to create reverse DNS proxy rules From 29c67a3b63437575d0bcc5fc8e86d02032a80d46 Mon Sep 17 00:00:00 2001 From: mumian Date: Tue, 10 Jan 2017 15:17:14 -0500 Subject: [PATCH 05/90] format --- .../hdinsight-domain-joined-architecture.md | 128 +++++++++--------- 1 file changed, 64 insertions(+), 64 deletions(-) diff --git a/articles/hdinsight/hdinsight-domain-joined-architecture.md b/articles/hdinsight/hdinsight-domain-joined-architecture.md index d559989da28f6..cf875af4355be 100644 --- a/articles/hdinsight/hdinsight-domain-joined-architecture.md +++ b/articles/hdinsight/hdinsight-domain-joined-architecture.md @@ -32,108 +32,108 @@ To achieve this setup, there are multiple architectures that you can follow. The **1. HDInsight integrated with AD running on Azure IAAS** - This is by far the simplest architecture for integrating HDInsight with active directory. The architecture diagram is provided below. In this architecture, you have your active directory domain controller running on a (or multiple) VMs in Azure. Usually these VMs is within a Virtual network. You can setup a new Virtual network within which you can place your HDInsight cluster. For HDInsight to have a line of sight to the active directory, you need to peer these virtual networks using [VNET to VNET peering](../virtual-network/virtual-networks-create-vnetpeering-arm-portal.md). +This is by far the simplest architecture for integrating HDInsight with active directory. The architecture diagram is provided below. In this architecture, you have your active directory domain controller running on a (or multiple) VMs in Azure. Usually these VMs is within a Virtual network. You can setup a new Virtual network within which you can place your HDInsight cluster. For HDInsight to have a line of sight to the active directory, you need to peer these virtual networks using [VNET to VNET peering](../virtual-network/virtual-networks-create-vnetpeering-arm-portal.md). - ![Domain-join HDInsight cluster topology](./media/hdinsight-domain-joined-architecture/image1.png) +![Domain-join HDInsight cluster topology](./media/hdinsight-domain-joined-architecture/image1.png) - Pre-requisites that need to be setup on active directory +Pre-requisites that need to be setup on active directory - * An Organizational unit must be created, within which you want to place the HDInsight cluster VMs and the service principals used by the cluster. - * LDAPS must be setup for communicating with the active directory. The certificate used to setup LDAPS must be a real certificate (not a self-signed certificate). - * Reverse DNS zones must be created on the domain for the IP address range of the HDI Subnet (for example 10.2.0.0/24 in the above picture). - * A service account, or a user account is needed, which isused to create the HDInsight cluster. This account must have the following permissions: +* An Organizational unit must be created, within which you want to place the HDInsight cluster VMs and the service principals used by the cluster. +* LDAPS must be setup for communicating with the active directory. The certificate used to setup LDAPS must be a real certificate (not a self-signed certificate). +* Reverse DNS zones must be created on the domain for the IP address range of the HDI Subnet (for example 10.2.0.0/24 in the above picture). +* A service account, or a user account is needed, which isused to create the HDInsight cluster. This account must have the following permissions: - - Permissions to create service principal objects and machine objects within the organizational unit. - - Permissions to create reverse DNS proxy rules - - Permissions to join machines to the active directory domain. + - Permissions to create service principal objects and machine objects within the organizational unit. + - Permissions to create reverse DNS proxy rules + - Permissions to join machines to the active directory domain. **2. HDInsight integrated with a cloud-only Azure AD** - For a cloud-only azure active directory, you need to configure a domain controller so that HDInsight can be integrated with your azure active directory (AAD). This is achieved using [azure active directory domain services](../active-directory-domain-services/active-directory-ds-overview.md) (AD DS). The AD DS creates domain controller machines on the cloud, and provides you with IP addresses for them. It creates two domain controllers for high availability. +For a cloud-only azure active directory, you need to configure a domain controller so that HDInsight can be integrated with your azure active directory (AAD). This is achieved using [azure active directory domain services](../active-directory-domain-services/active-directory-ds-overview.md) (AD DS). The AD DS creates domain controller machines on the cloud, and provides you with IP addresses for them. It creates two domain controllers for high availability. - The architecture for this setup is shown below. The AD DS only exists in Classic VNETs today, and hence you need access to Classic portal, and need to create a classic VNET for configuring AD DS. The HDInsight VNET exists in ARM portal, which need to be peered with the classic VNET using VNET to VNET peering. +The architecture for this setup is shown below. The AD DS only exists in Classic VNETs today, and hence you need access to Classic portal, and need to create a classic VNET for configuring AD DS. The HDInsight VNET exists in ARM portal, which need to be peered with the classic VNET using VNET to VNET peering. - > [!NOTE] - > Peering between Classic and ARM VNETs can happen only when they both are in same subscription and same region. +> [!NOTE] +> Peering between Classic and ARM VNETs can happen only when they both are in same subscription and same region. - ![Domain-join HDInsight cluster topology](./media/hdinsight-domain-joined-architecture/image2.png) +![Domain-join HDInsight cluster topology](./media/hdinsight-domain-joined-architecture/image2.png) - Pre-requisites that need to be setup on active directory +Pre-requisites that need to be setup on active directory - * An [Organizational unit](../active-directory-domain-services/active-directory-ds-admin-guide-create-ou.md) must be created, within which you want to place the HDInsight cluster VMs and the service principals used by the cluster. - * [LDAPS](../active-directory-domain-services/active-directory-ds-admin-guide-configure-secure-ldap.md) must be setup when you configure AD DS. The certificate used to setup LDAPS must be a real certificate (not a self-signed certificate). - * Reverse DNS zones must be created on the domain for the IP address range of the HDI Subnet (for example 10.2.0.0/24 in the above picture). - * [Password hashes](../active-directory-domain-services/active-directory-ds-getting-started-password-sync.md) must be synced from AAD to AD DS. - * A service account, or a user account is needed, which is used to create the HDInsight cluster. This account must have the following permissions +* An [Organizational unit](../active-directory-domain-services/active-directory-ds-admin-guide-create-ou.md) must be created, within which you want to place the HDInsight cluster VMs and the service principals used by the cluster. +* [LDAPS](../active-directory-domain-services/active-directory-ds-admin-guide-configure-secure-ldap.md) must be setup when you configure AD DS. The certificate used to setup LDAPS must be a real certificate (not a self-signed certificate). +* Reverse DNS zones must be created on the domain for the IP address range of the HDI Subnet (for example 10.2.0.0/24 in the above picture). +* [Password hashes](../active-directory-domain-services/active-directory-ds-getting-started-password-sync.md) must be synced from AAD to AD DS. +* A service account, or a user account is needed, which is used to create the HDInsight cluster. This account must have the following permissions - - Permissions to create service principal objects and machine objects within the organizational unit. - - Permissions to create reverse DNS proxy rules - - Permissions to join machines to the active directory domain. + - Permissions to create service principal objects and machine objects within the organizational unit. + - Permissions to create reverse DNS proxy rules + - Permissions to join machines to the active directory domain. **3. HDInsight integrated with an on-premises AD via VPN** - This architecture is like the architecture #1. The only difference is that in this case, your active directory is on-premises and the line of sight for HDInsight to active directory is via a [VPN connection from Azure to on-premises network](../expressroute/expressroute-introduction.md). The architecture diagram for this setup is shown below. +This architecture is like the architecture #1. The only difference is that in this case, your active directory is on-premises and the line of sight for HDInsight to active directory is via a [VPN connection from Azure to on-premises network](../expressroute/expressroute-introduction.md). The architecture diagram for this setup is shown below. - ![Domain-join HDInsight cluster topology](./media/hdinsight-domain-joined-architecture/image3.png) +![Domain-join HDInsight cluster topology](./media/hdinsight-domain-joined-architecture/image3.png) - Pre-requisites that need to be setup on the on-premises active directory +Pre-requisites that need to be setup on the on-premises active directory - * An Organizational unit must be created, within which you want to place the HDInsight cluster VMs and the service principals used by the cluster. - * LDAPS must be setup for communicating with the active directory. The certificate used to setup LDAPS must be a real certificate (not a self-signed certificate). - * Reverse DNS zones must be created on the domain for the IP address range of the HDI Subnet (for example 10.2.0.0/24 in the above picture). - * A service account, or a user account is needed, which is used to create the HDInsight cluster. This account must have the following permissions +* An Organizational unit must be created, within which you want to place the HDInsight cluster VMs and the service principals used by the cluster. +* LDAPS must be setup for communicating with the active directory. The certificate used to setup LDAPS must be a real certificate (not a self-signed certificate). +* Reverse DNS zones must be created on the domain for the IP address range of the HDI Subnet (for example 10.2.0.0/24 in the above picture). +* A service account, or a user account is needed, which is used to create the HDInsight cluster. This account must have the following permissions - - Permissions to create service principal objects and machine objects within the organizational unit. - - Permissions to create reverse DNS proxy rules - - Permissions to join machines to the active directory domain. + - Permissions to create service principal objects and machine objects within the organizational unit. + - Permissions to create reverse DNS proxy rules + - Permissions to join machines to the active directory domain. **4. HDIsight integrated with an on-premises AD synced to an Azure AD** - This architecture is like the architecture #2. The only difference is that in this case, the on-premises active directory is synced to the azure active directory (AAD). You need to configure a domain controller on the cloud so that HDInsight can be integrated with your azure active directory (AAD). This is achieved using [azure active directory domain services](../active-directory-domain-services/active-directory-ds-overview.md) (AD DS). The AD DS creates domain controller machines on the cloud, and provides you with IP addresses for them. It creates two domain controllers for high availability. +This architecture is like the architecture #2. The only difference is that in this case, the on-premises active directory is synced to the azure active directory (AAD). You need to configure a domain controller on the cloud so that HDInsight can be integrated with your azure active directory (AAD). This is achieved using [azure active directory domain services](../active-directory-domain-services/active-directory-ds-overview.md) (AD DS). The AD DS creates domain controller machines on the cloud, and provides you with IP addresses for them. It creates two domain controllers for high availability. - The architecture for this setup is shown below. The AD DS only exists in Classic VNETs today, and hence you need access to Classic portal, and need to create a classic VNET for configuring AD DS. The HDInsight VNET exists in ARM portal, which need to be peered with the classic VNET using VNET to VNET peering. +The architecture for this setup is shown below. The AD DS only exists in Classic VNETs today, and hence you need access to Classic portal, and need to create a classic VNET for configuring AD DS. The HDInsight VNET exists in ARM portal, which need to be peered with the classic VNET using VNET to VNET peering. - > [!NOTE] - > Peering between Classic and ARM VNETs can happen only when they both are in same subscription and same region. +> [!NOTE] +> Peering between Classic and ARM VNETs can happen only when they both are in same subscription and same region. - ![Domain-join HDInsight cluster topology](./media/hdinsight-domain-joined-architecture/image2.png) +![Domain-join HDInsight cluster topology](./media/hdinsight-domain-joined-architecture/image2.png) - Pre-requisites that need to be setup on active directory +Pre-requisites that need to be setup on active directory - * An [Organizational unit](../active-directory-domain-services/active-directory-ds-admin-guide-create-ou.md) must be created, within which you want to place the HDInsight cluster VMs and the service principals used by the cluster. - * LDAPS must be setup when you configure AD DS. The certificate used to setup LDAPS must be a real certificate (not a self-signed certificate). - * Reverse DNS zones must be created on the domain for the IP address range of the HDI Subnet (for example 10.2.0.0/24 in the above picture). - * [Password hashes](../active-directory-domain-services/active-directory-ds-getting-started-password-sync.md) must be synced from AAD to AD DS. - * A service account, or a user account is needed, which is used to create the HDInsight cluster. This account must have the following permissions +* An [Organizational unit](../active-directory-domain-services/active-directory-ds-admin-guide-create-ou.md) must be created, within which you want to place the HDInsight cluster VMs and the service principals used by the cluster. +* LDAPS must be setup when you configure AD DS. The certificate used to setup LDAPS must be a real certificate (not a self-signed certificate). +* Reverse DNS zones must be created on the domain for the IP address range of the HDI Subnet (for example 10.2.0.0/24 in the above picture). +* [Password hashes](../active-directory-domain-services/active-directory-ds-getting-started-password-sync.md) must be synced from AAD to AD DS. +* A service account, or a user account is needed, which is used to create the HDInsight cluster. This account must have the following permissions - - Permissions to create service principal objects and machine objects within the organizational unit. - - Permissions to create reverse DNS proxy rules - - Permissions to join machines to the active directory domain. + - Permissions to create service principal objects and machine objects within the organizational unit. + - Permissions to create reverse DNS proxy rules + - Permissions to join machines to the active directory domain. **5. HDInsight integrated with a non-default Azure AD (recommended only for testing and development)** - This architecture is like architecture #2. In most companies, the admin access to Active Directory is restricted to only certain individuals. Thus, when you want to do a POC, or just try out creating a domain-joined cluster, instead of waiting for admin to configure pre-requisites on the active directory, it may be beneficial to just create a new azure active directory in the subscription. Since this is an AAD that you created, you have full permissions to this AAD to configure the AD DS. +This architecture is like architecture #2. In most companies, the admin access to Active Directory is restricted to only certain individuals. Thus, when you want to do a POC, or just try out creating a domain-joined cluster, instead of waiting for admin to configure pre-requisites on the active directory, it may be beneficial to just create a new azure active directory in the subscription. Since this is an AAD that you created, you have full permissions to this AAD to configure the AD DS. - The architecture diagram for this setup is shown below. The AD DS creates domain controller machines on the cloud, and provides you with IP addresses for them. It creates two domain controllers for high availability. +The architecture diagram for this setup is shown below. The AD DS creates domain controller machines on the cloud, and provides you with IP addresses for them. It creates two domain controllers for high availability. - The architecture for this setup is shown below. The AD DS only exists in Classic VNETs today, and hence you need access to Classic portal, and need to create a classic VNET for configuring AD DS. The HDInsight VNET exists in ARM portal, which need to be peered with the classic VNET using VNET to VNET peering. +The architecture for this setup is shown below. The AD DS only exists in Classic VNETs today, and hence you need access to Classic portal, and need to create a classic VNET for configuring AD DS. The HDInsight VNET exists in ARM portal, which need to be peered with the classic VNET using VNET to VNET peering. - > [!NOTE] - > Peering between Classic and ARM VNETs can happen only when they both are in same subscription and same region. +> [!NOTE] +> Peering between Classic and ARM VNETs can happen only when they both are in same subscription and same region. - ![Domain-join HDInsight cluster topology](./media/hdinsight-domain-joined-architecture/image2.png) +![Domain-join HDInsight cluster topology](./media/hdinsight-domain-joined-architecture/image2.png) - Pre-requisites that need to be setup on active directory - - * An Organizational unit must be created, within which you want to place the HDInsight cluster VMs and the service principals used by the cluster. - * LDAPS must be setup when you configure AD DS. You can create a [self-signed certificate](../active-directory-domain-services/active-directory-ds-admin-guide-configure-secure-ldap.md) to configure LDAPS. However, to use a self-signed certificate, you need to request an exception from hdipreview@microsoft.com. - * Reverse DNS zones must be created on the domain for the IP address range of the HDI Subnet (for example 10.2.0.0/24 in the above picture). - * Password hashes must be synced from AAD to AD DS. - * A service account, or a user account is needed, which is used to create the HDInsight cluster. This account must have the following permissions +Pre-requisites that need to be setup on active directory - - Permissions to create service principal objects and machine objects within the organizational unit. - - Permissions to create reverse DNS proxy rules - - Permissions to join machines to the active directory domain. +* An Organizational unit must be created, within which you want to place the HDInsight cluster VMs and the service principals used by the cluster. +* LDAPS must be setup when you configure AD DS. You can create a [self-signed certificate](../active-directory-domain-services/active-directory-ds-admin-guide-configure-secure-ldap.md) to configure LDAPS. However, to use a self-signed certificate, you need to request an exception from hdipreview@microsoft.com. +* Reverse DNS zones must be created on the domain for the IP address range of the HDI Subnet (for example 10.2.0.0/24 in the above picture). +* Password hashes must be synced from AAD to AD DS. +* A service account, or a user account is needed, which is used to create the HDInsight cluster. This account must have the following permissions + + - Permissions to create service principal objects and machine objects within the organizational unit. + - Permissions to create reverse DNS proxy rules + - Permissions to join machines to the active directory domain. ## Next steps * For configuring a Domain-joined HDInsight cluster, see [Configure Domain-joined HDInsight clusters](hdinsight-domain-joined-configure.md). From f21b38b958a9043ef5a18de4ab4fdfd5f2d85a49 Mon Sep 17 00:00:00 2001 From: mumian Date: Tue, 10 Jan 2017 15:24:44 -0500 Subject: [PATCH 06/90] Acrolinx --- .../hdinsight-domain-joined-architecture.md | 20 +++++++++---------- 1 file changed, 10 insertions(+), 10 deletions(-) diff --git a/articles/hdinsight/hdinsight-domain-joined-architecture.md b/articles/hdinsight/hdinsight-domain-joined-architecture.md index cf875af4355be..ad06cea33eae3 100644 --- a/articles/hdinsight/hdinsight-domain-joined-architecture.md +++ b/articles/hdinsight/hdinsight-domain-joined-architecture.md @@ -1,6 +1,6 @@ --- -title: Domain-joind HDInsight architecture| Microsoft Docs -description: Learn .... +title: Domain-joined HDInsight architecture| Microsoft Docs +description: Learn how to plan domain-joined HDInsight services: hdinsight documentationcenter: '' author: saurinsh @@ -22,7 +22,7 @@ ms.author: saurinsh Today, HDInsight is a single user cluster, which works fine for most companies who have smaller application teams building their BigData workloads. However, as Hadoop is gaining popularity, a lot of enterprises are moving towards a model where clusters are managed by IT teams, and multiple application teams are sharing clusters. Thus, multi-user clusters are one of the most requested functionality in HDInsight. -Instead of building our own multi-user authentication, and authorization, HDInsight has decided to rely on the most popular identity provider – Active Directory. After integrating HDInsight with active directory, multiple users from active directory can communicate with the cluster using their active directory credentials. The powerful security groups functionality in active directory can be used to manage multi-user authorization in HDInsight. HDInsight maps the active directory user to a local Hadoop user, so all the services running on HDInsight (Ambari, Hive server, Ranger, Spark thrift server, etc) work seamlessly for the logged in user. +Instead of building our own multi-user authentication, and authorization, HDInsight has decided to rely on the most popular identity provider – Active Directory. After integrating HDInsight with active directory, multiple users from active directory can communicate with the cluster using their active directory credentials. The powerful security groups functionality in active directory can be used to manage multi-user authorization in HDInsight. HDInsight maps the active directory user to a local Hadoop user, so all the services running on HDInsight (Ambari, Hive server, Ranger, Spark thrift server, and so on) work seamlessly for the logged in user. ## Integrate HDInsight with Active Directory @@ -41,7 +41,7 @@ Pre-requisites that need to be setup on active directory * An Organizational unit must be created, within which you want to place the HDInsight cluster VMs and the service principals used by the cluster. * LDAPS must be setup for communicating with the active directory. The certificate used to setup LDAPS must be a real certificate (not a self-signed certificate). * Reverse DNS zones must be created on the domain for the IP address range of the HDI Subnet (for example 10.2.0.0/24 in the above picture). -* A service account, or a user account is needed, which isused to create the HDInsight cluster. This account must have the following permissions: +* A service account, or a user account is needed, which issued to create the HDInsight cluster. This account must have the following permissions: - Permissions to create service principal objects and machine objects within the organizational unit. - Permissions to create reverse DNS proxy rules @@ -51,10 +51,10 @@ Pre-requisites that need to be setup on active directory For a cloud-only azure active directory, you need to configure a domain controller so that HDInsight can be integrated with your azure active directory (AAD). This is achieved using [azure active directory domain services](../active-directory-domain-services/active-directory-ds-overview.md) (AD DS). The AD DS creates domain controller machines on the cloud, and provides you with IP addresses for them. It creates two domain controllers for high availability. -The architecture for this setup is shown below. The AD DS only exists in Classic VNETs today, and hence you need access to Classic portal, and need to create a classic VNET for configuring AD DS. The HDInsight VNET exists in ARM portal, which need to be peered with the classic VNET using VNET to VNET peering. +The architecture for this setup is shown below. The AD DS only exists in Classic VNETs today, and hence you need access to Classic portal, and need to create a classic VNET for configuring AD DS. The HDInsight VNET exists in the Azure portal, which need to be peered with the classic VNET using VNET to VNET peering. > [!NOTE] -> Peering between Classic and ARM VNETs can happen only when they both are in same subscription and same region. +> Peering between Classic and Azure Resource Manager VNETs can happen only when they both are in same subscription and same region. ![Domain-join HDInsight cluster topology](./media/hdinsight-domain-joined-architecture/image2.png) @@ -91,10 +91,10 @@ Pre-requisites that need to be setup on the on-premises active directory This architecture is like the architecture #2. The only difference is that in this case, the on-premises active directory is synced to the azure active directory (AAD). You need to configure a domain controller on the cloud so that HDInsight can be integrated with your azure active directory (AAD). This is achieved using [azure active directory domain services](../active-directory-domain-services/active-directory-ds-overview.md) (AD DS). The AD DS creates domain controller machines on the cloud, and provides you with IP addresses for them. It creates two domain controllers for high availability. -The architecture for this setup is shown below. The AD DS only exists in Classic VNETs today, and hence you need access to Classic portal, and need to create a classic VNET for configuring AD DS. The HDInsight VNET exists in ARM portal, which need to be peered with the classic VNET using VNET to VNET peering. +The architecture for this setup is shown below. The AD DS only exists in Classic VNETs today, and hence you need access to Classic portal, and need to create a classic VNET for configuring AD DS. The HDInsight VNET exists in the Azure portal, which need to be peered with the classic VNET using VNET to VNET peering. > [!NOTE] -> Peering between Classic and ARM VNETs can happen only when they both are in same subscription and same region. +> Peering between Classic and Resource Group VNETs can happen only when they both are in same subscription and same region. ![Domain-join HDInsight cluster topology](./media/hdinsight-domain-joined-architecture/image2.png) @@ -116,10 +116,10 @@ This architecture is like architecture #2. In most companies, the admin access t The architecture diagram for this setup is shown below. The AD DS creates domain controller machines on the cloud, and provides you with IP addresses for them. It creates two domain controllers for high availability. -The architecture for this setup is shown below. The AD DS only exists in Classic VNETs today, and hence you need access to Classic portal, and need to create a classic VNET for configuring AD DS. The HDInsight VNET exists in ARM portal, which need to be peered with the classic VNET using VNET to VNET peering. +The architecture for this setup is shown below. The AD DS only exists in Classic VNETs today, and hence you need access to Classic portal, and need to create a classic VNET for configuring AD DS. The HDInsight VNET exists in the Azure portal, which need to be peered with the classic VNET using VNET to VNET peering. > [!NOTE] -> Peering between Classic and ARM VNETs can happen only when they both are in same subscription and same region. +> Peering between Classic and Resource Manager VNETs can happen only when they both are in same subscription and same region. ![Domain-join HDInsight cluster topology](./media/hdinsight-domain-joined-architecture/image2.png) From 9ba469483cfd9c660d732a0cf4176f50cac2b9c8 Mon Sep 17 00:00:00 2001 From: mumian Date: Tue, 10 Jan 2017 16:18:51 -0500 Subject: [PATCH 07/90] update --- .../hdinsight-domain-joined-architecture.md | 34 +++++++++---------- 1 file changed, 17 insertions(+), 17 deletions(-) diff --git a/articles/hdinsight/hdinsight-domain-joined-architecture.md b/articles/hdinsight/hdinsight-domain-joined-architecture.md index ad06cea33eae3..8c3f926c5d5ab 100644 --- a/articles/hdinsight/hdinsight-domain-joined-architecture.md +++ b/articles/hdinsight/hdinsight-domain-joined-architecture.md @@ -1,6 +1,6 @@ --- -title: Domain-joined HDInsight architecture| Microsoft Docs -description: Learn how to plan domain-joined HDInsight +title: Domain-joined Azure HDInsight architecture| Microsoft Docs +description: Learn how to plan domain-joined HDInsight. services: hdinsight documentationcenter: '' author: saurinsh @@ -18,21 +18,21 @@ ms.date: 01/10/2017 ms.author: saurinsh --- -# Plan Domain-joined HDInsight clusters +# Plan Azure Domain-joined Hadoop clusters in HDInsight -Today, HDInsight is a single user cluster, which works fine for most companies who have smaller application teams building their BigData workloads. However, as Hadoop is gaining popularity, a lot of enterprises are moving towards a model where clusters are managed by IT teams, and multiple application teams are sharing clusters. Thus, multi-user clusters are one of the most requested functionality in HDInsight. +Today, HDInsight is a single user cluster, which works fine for most companies who have smaller application teams building their BigData workloads. However, as Hadoop is gaining popularity, many enterprises are moving towards a model where clusters are managed by IT teams, and multiple application teams are sharing clusters. Thus, multi-user clusters are one of the most requested functionalities in HDInsight. -Instead of building our own multi-user authentication, and authorization, HDInsight has decided to rely on the most popular identity provider – Active Directory. After integrating HDInsight with active directory, multiple users from active directory can communicate with the cluster using their active directory credentials. The powerful security groups functionality in active directory can be used to manage multi-user authorization in HDInsight. HDInsight maps the active directory user to a local Hadoop user, so all the services running on HDInsight (Ambari, Hive server, Ranger, Spark thrift server, and so on) work seamlessly for the logged in user. +Instead of building our own multi-user authentication, and authorization, HDInsight relies on the most popular identity provider – Active Directory. After integrating HDInsight with active directory, AD users can communicate with the cluster using their active directory credentials. The powerful security groups functionality in active directory can be used to manage multi-user authorization in HDInsight. HDInsight maps the active directory user to a local Hadoop user, so all the services running on HDInsight (Ambari, Hive server, Ranger, Spark thrift server, and so on) work seamlessly for the logged in user. ## Integrate HDInsight with Active Directory -When HDInsight is integrated with active directory, the HDInsight Linux nodes is domain-joined to the active directory domain. HDInsight creates service principals for the hadoop services running on the cluster and place them within a specified Organizational Unit in the active directory. HDInsight also creates reverse DNS mappings in the active directory domain for the IP addresses of the nodes that are joined to the domain. +When HDInsight is integrated with active directory, the HDInsight Linux nodes are domain-joined to the active directory domain. HDInsight creates service principals for the hadoop services running on the cluster and place them within a specified Organizational Unit in the active directory. HDInsight also creates reverse DNS mappings in the active directory domain for the IP addresses of the nodes that are joined to the domain. -To achieve this setup, there are multiple architectures that you can follow. The details about these architectures are provided below. You need to decide which architecture works better for you. +To achieve this setup, there are multiple architectures that you can follow. You need to decide which architecture works better for you. **1. HDInsight integrated with AD running on Azure IAAS** -This is by far the simplest architecture for integrating HDInsight with active directory. The architecture diagram is provided below. In this architecture, you have your active directory domain controller running on a (or multiple) VMs in Azure. Usually these VMs is within a Virtual network. You can setup a new Virtual network within which you can place your HDInsight cluster. For HDInsight to have a line of sight to the active directory, you need to peer these virtual networks using [VNET to VNET peering](../virtual-network/virtual-networks-create-vnetpeering-arm-portal.md). +This is the simplest architecture for integrating HDInsight with active directory. The active directory domain controller runs on one (or multiple) virtual machines (VM) in Azure. Usually these VMs are within a virtual network. You can setup a new virtual network within which you can place your HDInsight cluster. For HDInsight to have a line of sight to the active directory, you need to peer these virtual networks using [VNET to VNET peering](../virtual-network/virtual-networks-create-vnetpeering-arm-portal.md). ![Domain-join HDInsight cluster topology](./media/hdinsight-domain-joined-architecture/image1.png) @@ -51,10 +51,10 @@ Pre-requisites that need to be setup on active directory For a cloud-only azure active directory, you need to configure a domain controller so that HDInsight can be integrated with your azure active directory (AAD). This is achieved using [azure active directory domain services](../active-directory-domain-services/active-directory-ds-overview.md) (AD DS). The AD DS creates domain controller machines on the cloud, and provides you with IP addresses for them. It creates two domain controllers for high availability. -The architecture for this setup is shown below. The AD DS only exists in Classic VNETs today, and hence you need access to Classic portal, and need to create a classic VNET for configuring AD DS. The HDInsight VNET exists in the Azure portal, which need to be peered with the classic VNET using VNET to VNET peering. +The AD DS only exists in Classic VNETs today, and hence you need access to Classic portal, and need to create a classic VNET for configuring AD DS. The HDInsight VNET exists in the Azure portal, which needs to be peered with the classic VNET using VNET to VNET peering. > [!NOTE] -> Peering between Classic and Azure Resource Manager VNETs can happen only when they both are in same subscription and same region. +> Peering between Classic and Azure Resource Manager VNETs requires both vnets are in the same region, and both vnets are under the same Azure subscription. ![Domain-join HDInsight cluster topology](./media/hdinsight-domain-joined-architecture/image2.png) @@ -72,7 +72,7 @@ Pre-requisites that need to be setup on active directory **3. HDInsight integrated with an on-premises AD via VPN** -This architecture is like the architecture #1. The only difference is that in this case, your active directory is on-premises and the line of sight for HDInsight to active directory is via a [VPN connection from Azure to on-premises network](../expressroute/expressroute-introduction.md). The architecture diagram for this setup is shown below. +This architecture is like the architecture #1. The only difference is that in this case, your active directory is on-premises and the line of sight for HDInsight to active directory is via a [VPN connection from Azure to on-premises network](../expressroute/expressroute-introduction.md). ![Domain-join HDInsight cluster topology](./media/hdinsight-domain-joined-architecture/image3.png) @@ -91,10 +91,10 @@ Pre-requisites that need to be setup on the on-premises active directory This architecture is like the architecture #2. The only difference is that in this case, the on-premises active directory is synced to the azure active directory (AAD). You need to configure a domain controller on the cloud so that HDInsight can be integrated with your azure active directory (AAD). This is achieved using [azure active directory domain services](../active-directory-domain-services/active-directory-ds-overview.md) (AD DS). The AD DS creates domain controller machines on the cloud, and provides you with IP addresses for them. It creates two domain controllers for high availability. -The architecture for this setup is shown below. The AD DS only exists in Classic VNETs today, and hence you need access to Classic portal, and need to create a classic VNET for configuring AD DS. The HDInsight VNET exists in the Azure portal, which need to be peered with the classic VNET using VNET to VNET peering. +The AD DS only exists in Classic VNETs today, and hence you need access to Classic portal, and need to create a classic VNET for configuring AD DS. The HDInsight VNET exists in the Azure portal, which needs to be peered with the classic VNET using VNET to VNET peering. > [!NOTE] -> Peering between Classic and Resource Group VNETs can happen only when they both are in same subscription and same region. +> Peering between Classic and Azure Resource Manager VNETs requires both vnets are in the same region, and both vnets are under the same Azure subscription. ![Domain-join HDInsight cluster topology](./media/hdinsight-domain-joined-architecture/image2.png) @@ -114,12 +114,12 @@ Pre-requisites that need to be setup on active directory This architecture is like architecture #2. In most companies, the admin access to Active Directory is restricted to only certain individuals. Thus, when you want to do a POC, or just try out creating a domain-joined cluster, instead of waiting for admin to configure pre-requisites on the active directory, it may be beneficial to just create a new azure active directory in the subscription. Since this is an AAD that you created, you have full permissions to this AAD to configure the AD DS. -The architecture diagram for this setup is shown below. The AD DS creates domain controller machines on the cloud, and provides you with IP addresses for them. It creates two domain controllers for high availability. +The AD DS creates domain controller machines on the cloud, and provides you with IP addresses for them. It creates two domain controllers for high availability. -The architecture for this setup is shown below. The AD DS only exists in Classic VNETs today, and hence you need access to Classic portal, and need to create a classic VNET for configuring AD DS. The HDInsight VNET exists in the Azure portal, which need to be peered with the classic VNET using VNET to VNET peering. +The AD DS only exists in Classic VNETs today, and hence you need access to Classic portal, and need to create a classic VNET for configuring AD DS. The HDInsight VNET exists in the Azure portal, which needs to be peered with the classic VNET using VNET to VNET peering. > [!NOTE] -> Peering between Classic and Resource Manager VNETs can happen only when they both are in same subscription and same region. +> Peering between Classic and Azure Resource Manager VNETs requires both vnets are in the same region, and both vnets are under the same Azure subscription. ![Domain-join HDInsight cluster topology](./media/hdinsight-domain-joined-architecture/image2.png) @@ -137,7 +137,7 @@ Pre-requisites that need to be setup on active directory ## Next steps * For configuring a Domain-joined HDInsight cluster, see [Configure Domain-joined HDInsight clusters](hdinsight-domain-joined-configure.md). -* For managing a Domain-joined HDInsight clusters, see [Manage Domain-joined HDInsight clusters](hdinsight-domain-joined-manage.md). +* For managing Domain-joined HDInsight clusters, see [Manage Domain-joined HDInsight clusters](hdinsight-domain-joined-manage.md). * For configuring Hive policies and run Hive queries, see [Configure Hive policies for Domain-joined HDInsight clusters](hdinsight-domain-joined-run-hive.md). * For running Hive queries using SSH on Domain-joined HDInsight clusters, see [Use SSH with Linux-based Hadoop on HDInsight from Linux, Unix, or OS X](hdinsight-hadoop-linux-use-ssh-unix.md). From 0d80259fa9c6b7476d98cb50d760ccd8e328da8d Mon Sep 17 00:00:00 2001 From: Bhanu Prakash Date: Wed, 11 Jan 2017 17:46:17 -0800 Subject: [PATCH 08/90] Create workflow.png --- articles/hdinsight/media/hdinsight-upgrade-cluster/workflow.png | 1 + 1 file changed, 1 insertion(+) create mode 100644 articles/hdinsight/media/hdinsight-upgrade-cluster/workflow.png diff --git a/articles/hdinsight/media/hdinsight-upgrade-cluster/workflow.png b/articles/hdinsight/media/hdinsight-upgrade-cluster/workflow.png new file mode 100644 index 0000000000000..8b137891791fe --- /dev/null +++ b/articles/hdinsight/media/hdinsight-upgrade-cluster/workflow.png @@ -0,0 +1 @@ + From ae8d815509ad3cb48e16f39d0b6e2424bf249b2c Mon Sep 17 00:00:00 2001 From: Bhanu Prakash Date: Wed, 11 Jan 2017 17:51:55 -0800 Subject: [PATCH 09/90] Add files via upload --- .../upgrade-workflow.png | Bin 0 -> 24249 bytes 1 file changed, 0 insertions(+), 0 deletions(-) create mode 100644 articles/hdinsight/media/hdinsight-upgrade-cluster/upgrade-workflow.png diff --git a/articles/hdinsight/media/hdinsight-upgrade-cluster/upgrade-workflow.png b/articles/hdinsight/media/hdinsight-upgrade-cluster/upgrade-workflow.png new file mode 100644 index 0000000000000000000000000000000000000000..f4f5607b199d61a811151232d0b13544186978ff GIT binary patch literal 24249 zcmbrl2Ut^0*C+}ipdwWTkuC@-C3K`nl_pJ5=>(JxLZlf&73mMs?6ejkDs zAA(F7Tj2dg2J)xv1ibTQTrS!^1i8wPE})_0*y%%%6F`s|K#-#dY4<0{^e4!E;@IX- zkn2Z~t>E0|N06)N+;P!%Z1p3^k#}nSNRac9AWPn{1868ZwgYWNC*Ymq3m`hR1Gv5f zITu8n0Nfk^5qK*&0`2UN7nCm`6)xV{3V*PG_g|PlQ(S-nL=^tu{-JPz4q*L-xxjL4 z11S8V0}#ylL*%0IpWA=X0s0pV0Q_9gyr7Wtmmom@Py2%AKmC8`1N}*1#zi<{sjy|Kq!nG(hW^@ysp!O1 zbuD*}Z%i)WP-}bJJICke=aQtc2Eb-mxoB&?Ah>+x`gJO*n>TOYW@KgM;JDAj&oBJw zk(8{g{1X+GXU|^h=@}WBnp)euef!SE#m)1>2fv`8u&~I;*x1C>%*?FZ+=7Clva-tB zy2h54wyv(eq2aNqnVI?drKRQNl{G9DkKf-vK0bxNd<0B+^__~oGXVib+r@vvF34wd z0shTPY>Y1sI1Sw?J@^i8LUpiOTb7OASSN(2sYi=#uxaVV^%n!`ct39$-YWAycvrUH z9=P#f9orD|wy?H)OfNkm5BzCAeYI|LPY7Ay`v5fGwb_s1%3UNOZT6Eo_TX2ZfwnHh ze5<*{>|23FU$SLlhIYHfiFoP1-Set4_3vO|Ui~IVWx(IMNS-1KBSSperXz*TwnN~LGy2z5 zwY>8;$cG$C;?nI8gf!@1L_=$XsJ44uO9smw_-e2?v$Pw9i)fOZpW_g{K)Eg7^1va=OJ z@R@6Zj_cZq_=~y%xab45vrXQUPuI)Z(`c$d!C@XrkX`UV1rh zeQUzkEDyH=4_{zfz6dn&@Y4G}e3qZEA8Ayt>r?lO&_M9x%aL*!cvlW_`v${iHnD#u zIZN3sTL23OF8{UnY`8XeujLn;f$Zg(ci8J;2?o|Zw=PSz#UKL-30NP1t=$Rd6s2Ny z-HTQqRT-D=$lEsOAdnz|4>iYozeFJW18r?fW_w%f@d-~9KgTZnD8HEZ|JjvaGsiHT z5gl;6;A8`Nx~BKGVlHLKA(Kh!5&x^V@S46Z@_>5v^p6zwGqn1fGRQOvWeWUYV(LT0 zQ|SF>Ukb0P_VCH_q#vbeJRqxdo+$}h$x*oo&BI1E2rx3fLS0Kiufm< zDtwe)_2Y%)w1V2KHB%UGjYrn0C)9o)_x|v=;0C(daDf**%?z2kToKY-Zyk4cYUm6|bDXR7z4w=;szg3&cKJyBv zaF-11+SnWUhuURisdd!xo<0k&W3DT3#=nhj{Fc23SkA0~_S%$)mxz>SP?o?3W5My$ z^lS$ea#zxgNReHQuZAIs0;jv>Nd;xzTz~-!1~%E3p~NhkSfOfMo(zx~Kq4of)?h(t zP0#u})q~vhs6mh-08==kKo)3S7(iP$A_1)Mi5hR!xA4hdrF5Bo!0<#mVg~E%sKe*tJZqcKCU6QJI(LL3Yq&6UkgFHFK+}Qg?c=IG9ei zQ_aU6>LttZs3+?JlD{W?MKa&M4GIjO#9Y~Ki0QM&J^QfGr* zYG0#ujT8!>O!q4l2)~#lSBvJwIWX(h#U|#tR*tDoyUp??UkyJYs(%(v1yL-!StWkU z@yQz4Z~BAyrwKnjm|13UozQtow1enhC?k51*GnmGsK-JrCCT>Ly|EE>F3 zn>;SJQd@e2odK48_vfq@P6ZZ4ik{J(eiLJ&_52kMX~FEEAb%yzJu-}uOVh4 z=uNsE+O*;@ceiTu*5xoL4KS9yC_;J1Ty-_G|Mm2weNWf!r^%*|&$ekby!c6fT4J0+ zs~jQ<@&S04?cZ!X^ACGtV|TTNZRYgd=(4o#dy#f$mW2~#yOyzx|IRpl?!49(gL?U-shYi_$?J|e_LQhkS=bW z<0!pPle0N{g4rf~UBo_`ZVR(Q4hcAu@u*qQS6W77ZEWj2Ku+DnR@R;rv+HMRJ&tih z?+^Ox^sUT?t@EmVhk(ae96u$Vk$C64d`9~K_vwuH@c0iavMgBLG1qw2w5j7|UpK1{ zZpYSh`YR7VsWYPQPP!eoT&LxBrUy-xt0H_1#|Rs)DNz4*{_Up8X;-zxxgGIoYWUS{ zX3%{F5?G*zN1R#ScEraE3eseYOcdkcg2$b_2o$ zkqu#D+<6=1)FAsh8#DsR}5;0&~Ch4dm)0z z&d}OXNCu4sBEFtb@lNo~#dOnHxARgskxRU)Xb2Q_MrLdg6TF1B3eTjrLLd}M)e$EP zOkpa!yr1QSwncB&A`QCQvGabnc$*;#RSucsi%j(_+PcZ81h?fZfP?m;q92}Rt5-`J zADZo_X58qy@o|p-tmnAv&JGTIMqNIX3ibfv?ic%9r2bdH!BC1| zD9K2dWF6;MRRlZ!{P)ABHW*WoM?n#Lgzoa$LyxiNuwdvrU&GY|+c|0cqU)lvNy3M_ z!g91HJfn3>`6~}Yr!V(-OM-C|4PK&=P{xuOtDx-~QhYzH?cjPJey07n#ZE$2S0GLY zq4TY_bLM!7>0)E|A=10~_Q@k}NwxD9Y&Ldm{~AR9HqT?Dft2$hAX|NRztlROLG_{2feJ>d)Q7@kI@LPgUFPGx;(5 zX{=l6_+rOFk6jWA?!z5IS8|*20HuN<(M0?%TqQ!K~p4)2Va!{IfUAWEsw5{Q3%sO`SMx7|wEi z``XPcFa3rkj2lBn$w2=s=RqjcUomycH3>fWn}|$Sa#^%!DKc@7@?=*-asD|KgtEQJ zwM-TWU#hoh5t5iqiY8P>Cl-iP>P5lyEZz1J9eqQ@GBh@bTvjA=urA=4GZv~IWinZe zU|i#Es!Hh=>r#X=AC+zna8WJvk+&7M3y6vB{S_scwy|Y`yT*^5UwdlUQARcZs$5yoUE}Hr>hdq+kef0-bNi#bu zI8|jygrw3QZbVtJFVmn39+>nWb&y4qFHb}t5Ikksjn z(BHuNN;mkbmVSa>YPY*#gQ!<6o`XBNA|h%!7ao9xuJv8#oLEWbUMjhdbofM4P1!~L z-M_#M7ItDD-fAvc`bk$QUgh(2_F`!y&n-l|9lKec#04$v_MR+)x@+z5FZFO;2l6Pl zeEWrwFHiH1Qnm|=L1HwzwNauMQ-|wD2n@&`D_M?6&=fX{>Qt$=&k$|@1fr>jrrl5V zF2qVo1;~?)+fnL+wR9o5e#jEx6TGT@_ftkn))dOXAO81%!NQKzpHcBy+axQ+fjdOI zXClkt1gTO2$A=2|?L&gQOkW|;fcH)VLeDYnJ{%G@x>A=b$~!u&Knz=V$`zF=DE?sy_msclH2_kE;+!(pQRjlWRd zr*`RjqSkY;6^Yo{sr`++|3da)yqcqhFvb7;XY4jeCeIH`?O=X#Yreo|f%{$;iTv82 z!c;QKQYI>6HniG;t<00~3(Bq;{&H=wtypltep~x32Uo4_%?C}xL%yRkOB3l7GvT0d zhDw2LulWNI`tZFQb75dp=cOtqrifq=m?BArS99kLo6N#fnXe2>kG-Dl{7T>8Ee%b4 zAH@hV;aFeH@8p_-uXMVh35BX`1ob-_&8d}TB$O`rpf^=>YGiSfO1*Auqd4DiU+oxI zIGG+)D%4}YJ!uUVZ!hQ#l{nK(q%q5loBNypKG_CSa z=T-Uc9EuW2N@J^-nMINBs${CuX$;8EOHILlXkT62__HhOPBPnn5~hE}3;+K4?Q~0L z>_*$R5u_3?5jX`BuH+j6+h7<&PG9ZSy;V1$0wdhqJQZ-#ID-21S9|NfI)r+p5inE5 zdGnmLrJ3A?wC06}kk6V4k3Duj-Qd%E)VV2GF%hIo!*JUB>2A&=!6T`|eO%GxD9h1# zir{oxWvzB9UDIf*0MtJq2mS~Rjm==Za+Oc6IlI*=5~NPwarD{ySBvk*f}flYF^ONg zSrm%g0z_5MSLue=7-IBkSFkzO_pgDsRBnNvXYI_G$TWNBIaOv9?jNLF%V^4$u_4n_ zPe@#Z_NZxM^jMIinR}g8m+l;s9p%nfd{u^Z=zw9nDXAH{$tUio!t-CdIi_X?6K<0D zgmYv@f5UwVs1nUDTV;<49g*8^Vq;o1J^M!R)kA-nZss<>hVsk3B&$+hFAn$~{*vc3xtuSMjKXze>l=~k}_cVBuKgb<>SPUO0&BLeH} z$+-)wrgU__Bpycs` z<9l9EwT;x=`|pwOp5 z0MSJ!vONE693(#|^9iIK{}A)H(YAJ#G|GU_AO+s# ztkFaWvyX|I@`x(hCevuzPKHaX>VmQJjZ`@IdAVW|6nW^rwAK|^6Le6Q2uIR!ylr^} z)-o>qm=$7hGL>?~F_^q3`io4%E9NVr*)WI-$2t2*7WvMz+v-SWLd<&$gcW1V!`xV! z1(}iY6q(?xK|#1>p&9j91wqRf1{^#Uyggj}}re{prWd^1BLYIuE)G1UDw` z`wY9#8eU$B7c2I|csTL{LKN8oJ&y)-4a)g>-ugGWdX


)XsieO9E6FHPd)%NL! z@m zfo=Rcdx}11+e50TBR?wV;M3KLD^=zy5EwqALlg8|8>wM^$m(U3>#uiZz1$#$`eQdOVi)EC(pJ>($xBS<>1-8BD(cDC0L+oFD5y0?RIWZ+ z0~IfZ8ELoIsnLI)a>rsWv+fFT(Bl)`uLkrMf%L)5dZzJ-H*3S0{Sd_a_QDW3(fj=- z!>9KYCZqRh-$dy)JDx<@Cf`wS_T?$??5it|5q}Vz-3>6o@Af?0HBNzEUJ=9m~kIjj_0HlyPUw!nuux)vwU6k424l;w9qX z9&nuY=DT?uU+V)<*n<@91a~qVxgTPR{~<{0iZw1xFPtcZ9JWm3<9|aInYFG09((eM z2xeTz&cR#XcVCEU^!3-glbU|q(-f35Ygt(I74+AjJu^&bWU^bhlVZo0zVhWLk7($~ z^A0_KbA6rhV1wk!N903yufRmol~3l&uKsh}v3qXJ2Tkh8`n==MQP20sj_}qhNQvsPTG#1%oD9U4N=3ta<#4T3R z{aN))ob*zdvym>QM9wtVdm zGf>7mpVeD$nHlyN@!99&VuoqxNHt_=Ds>)H2O)IJD-gPXXPfm!EYDXF7WJ*Y&Efeh z&Oj56pgHzEwn8u@7&~?h80z2{=(zhltRJ+0e3NZ_+12*vN4j1-9SmB zPFqCM`)CE+--HbV#X7zyI$Xm@baJd`(W>x;`AY!IpWTJ|@E)O zKA(jRxz7rTe1g*0&9I*ry2talIO!@%`y&{ifQpevUbM%TpQ^@KCHf2N|Hk^{%o@!=$*tC57fs zxWeXbc`8`TFMg5Cn^?=_d7>Qt%~Oe|u3~kXZpyXf^2o1%7=Y(f7jnz3WJ&LQGtgM* z?I0mwpgO?Ic_uwjj&6HV4Q?E6gInsVB2-9C6NigQaUufFaxCIiGCq%)1FT>1N*_%7 z3jXpJ&Ve^;$qlKg2|krZ1DA-j0QDE^%N|8%F-{FIz~@JlGw@o3Cdxb9Lwm@5 z&dl2X(CzsUZuXj!EY_i%_=4HNM!wN76t6f)KRQt{4mx}928`0l`3iQst{B*{l{aFi zL?0#VCugRMIY0pg^97Yl%ExW*_gqBd_AN18%`Ub_;NVd*v3br_xLSgDo(Oxx8Ej%J z@7ZaS2w*U;M;r1UjVvigS95`SG+TQ!6Oa*l_lFELNoAG_Zmn&%olJKYt#`$=ozdtbWB+=K1TOxLxkOJ4FGY zXU6Lk-xDt4K`Kd9)5pVdkXO>u8M=D&*D^AKta~jdEZv>llh(IUg!rD~USD(_FjCP@gwlGkX<2 zn1cB2!38)6l5zzk_upvBC4&Np+(Gzexbw({hpbo~B%zm#mJoK~a{u)Z{yT;G-#5NZ zASQO&*XUAKZ~FxPR-)8pI8)?oD^k*p9YfQ zMjHfrQZ34u!BS?CmSq)IjB_)!Cv@hWHPdYjr;>_beHD;VZ&Bq7r1>;D(uVqB+2!_@ z-_v$S7BuXq^6p--O>mxxtjw+{MuJ-iFEyNHr2byYo0wk4)HQ|%62|DmiRremDcsb% zgfl@^4HtNZ?>VMaWmc_7M*Cjx(HWTp>=63w<}?wvQkb5F_x|Thk*mjBDf80JzhdY> zD*;dMbH-#6c`5oZOc}8_7OdcOnqS>Hl0|maMk;B=Cr&NO$fNV~BO^hVdXJURUU6vi zmm%Q`?>{*4a0hXffmXt-QSo{YcnlUKYm$R4AuM1=0zMeJ=wR!J-fO5`;!efZ(MZhx zwBgw`kAS6L5DC(Q1fth4@n7?w=fxM}M`HX0am;hap`x+_J(XfNn+h96adz_+-YDe) z#9JypVfiowlt_H+Cz;e@m8^=agde>TTFO?s#gN$Sb>_wAb-jA1mQ=ufr!# zz)wx02$7=^PtHPD_^%E6?hAI#H%DuQgTcx0*IKvF`+ePeA)d7qfttuE{MQ}*f4$?*6<$#JV}<8rjy%l)ZCn1T0-i&Vy7<{u^boZs z_7t@&{K*&l{#!WtH+QVE&)0{KxLoUAd-DW*)FYxL3ntUT;fC0Te)1Hkzj_hq{Y7E& zra>Vka8&O?W@1wG6Lj?lAZqR+xR@Gkr_Q0LjkSPM-v-$lK zcHqR#Zi;ApXX{%vt;>!}92bZ7efFnZ9t3E@QTcvvXmGOLn0qK&r}CTf$ofychQi7) zMI+T}D%@ZPb+(%b_u<=!=)}~^y)SZ$a0&T3)xnxz=bumJjZ9Uy!W^cN?F7w9*E2rJ zZlpBVe~Ve5(|GjN4tA)fJm11u^hgY_>yC2BP>=<+z0OGU6WRzM!!~jPajR{L;0zKi zhXD34-Q34w-5%u5sCecl=D7FAgu0}Oj_X`N>U%Y6N-+jE3RP{^%*)=fr8ue1F$)ch zjId#Al0_yzLZdS^!Srf(gKMf8E98KVyW?!^Z=c5`cExOIdxO-JlwyG0HQN-qGltad zj9HP77Avc~gd1$X^?K%OT?t}1vfB{HN)s(sG{cA+G>^UF1=yep)vfb*c;yE~f6Ri+ z*hP>INb3FFGR9hCAX`d``0BzUUk9+AMvbeZ-o)dwfBH%^&$-cfL#_=0kU+Nxl(yCx z)T0)5r+1W%gihiQ@E1pW*s67SSz`?1&C)-CDZ#;yJ!Z7XsKjo-UwY9*EnmNQ!JHqs zTofWghl4jrE}TD`4H>MhM-p&5gfMzQC1V%P|D^B9_r71`)_+uEWj#I?xC;T|0C6A< zqV*|Vz1i^nhnv<52u}=@InyqMRZI9H*ZzB~ROOI~DV*KFFM|PHurGyTtYzdt2zm`C zJtZvXU3l>wzCX-%@j5rwczg+_ozUSSiVifCy1Mto% zB>O%H+o+%Lo3$BQDKnA=y0reYS#ttGN$F#9!R$WdR7c1$yVg?!rzM=OB=#ss5%(MO zIE%q3R$~)p#94OsF}0onc7E@oUIECorR*P>{*6@rr*|HA*`R;FOC>B))BE9to>9lZ zt2N~)VIC(!DT8n1!K1NY%9GK@rp2F?6`L7gbdJx#-i52-SJY%Cy4mG{h$9T=q?4gq zgo^;&uzI)Q8pjSPObTwz?bHY;Qs>?EjO<}dj&MuSiqFg)uFT3NM3B6J0K*K$$)_Rq zxusX}6KLap3~tmR(fUw4<85FX7$xwfT0$OmYiu}d0&5P;0Nxr;pgxgh$MJ+Eilwo? z(wKp3eHNjV^7XJ9CTkYJ#f0~yENVpW%R-*0MJK8~edv!6S|K(`>GaK86TFLcG|Aqy z_zj$mEEcJa0B-7MarTvPHl{;kK4aH}+6StR;?Hte!b(sRk*SZ+vu{CI^0({Aa%2*q zslOt&WIc!~iqpxen{+Df+z1|0BMq^|vBvxOaAz^?4x!mx*d+V&OrlqJ* zHzxg1CZOP#91^H7aFWAfz4R=vY54{sxc*v;J2(IpwRMbOy&H_^k@jQxQ-HWf4)ZCr zaXOI)j$ZUsrys|PgCBo#o0mm0H#bt87sA252&PP%-?zGF zsGlI8KwS|c;coQfG2$qktRv>!_eJDz1Ni;iLG z=5!v$w~-tc#9X()=L|meb_&twBa;Mb%!vrxI?bWUYVJ?B3`nw=aa_q^wlc9y&EzGZ zRM%&BCxl4m!+f_LvIz0S*veJQxO**+ZgE>~0&`Wlqo?WPJ&0PeLpdRkfCMEu5BXXY z4XB@6I54Z&W>oOuMj4K%?l?hwWUc^VKTQtTe^v?6kW-&Y7iKHAy+%Vm_3+nC9?|>U z8p{F?K)da;NnF}{fEROTOYp4v)^$_d)ouo{c;+yteO`l!0EKACoWu!uZ(14dX_d-> z>D~w9sOEDKaas0eO3W@A`F^@eelKi$YZ)b`VQVxk*pqD=5WXZlGw~ zEt&WnCeCF~Xa+W{fUsGyv0~NT*=mxd0#lmLtEJ9o5SaR2!w@eG@>6l3pxKsm6Wp&= zbnlw9u50I098&%=Zqm}Eui$x6+8r_PA*VGT@uuFe`nfe=7p|L$eJPL9pV*2o@pI$` z6+oD*K6&gqKLQf)I&}Od1y-ppl0ED|QAi0%gBvux-6&O-5>V`%upjj*{~p#C+RFpl zK(Jx255D1IqCAlg_v=nhW@iDn{=~#ZE15m|c@Yx?8y_XzU1zLGOeC_P>jqEVa*f0F zQfvs0bgMC$+WuNhgwm_MId2h84`P2}oAX7`uCDqn(`wM;cQI2u(o0~}spc504h8&@ z`J95Vr@zq_UAO_U108Fb4D5j#>Gym_YP?~$+CiL{li&F9T;g9Go&TNPJHF_&P#!3Qn`0MnBRSc;a(ak{A5Agt9kU?2V< zrlRnrw*liZZzB0GK(GD3cL@8xI8hrHMCD(!$bv1V*^@Dg$HhCgfW11=djXhLW>qP6 zX54%K=zVAkr}7;f{3yz;JCzoo`x>p{6u2@C zj`OFp8xGYol;Qq3_l(8%cj6QDDewH=c6IZ1D_4p;%8yIyY%8`vW&*1E9oJk016_{N z{n+oF2Z>pTGPS z9{7|=>`%7Py#`bp|K6be`+d(CwstmlWA+A?yp9rfZm+Q{$O-8Y%82Q-FifyFw2JQs z8CL7R&M~1IaYWTmI(Q$GP#+p2`pX4&c)c!>W_+N@xgiLtr{`P zRb-4dzu!df-=&UO);2x9>>`txpljs83P?LW zedHQoAz48v*S{4EK{4E-r`W8O7tHvSj$w26dax1_yk5$D6t#h33gdH!<=4(6D9(tE z*S}p$0ChN#j(z`$t8tR>&wQr-ycZt=V*~XSg3_KBm-qFRhmzhmN=TefVQ%z`N5`A0 zKiotUN`7LrXFLe$@FcNSQO99WWTBHMgylVIKUEnyB|?W1Y7^KOf6Ntm2#HIM_HdJ? z^VPhA@M;a@uNbhG@xDz1>7njdl)<{|2fSCB679%Qy({pq1KPHxCp?u{5w2emqltT?cq#)!vF(R ziApB|49fKwN>)^zJlZ~DN!2{KVJQo+K=jeNXEQ)3mhy=!nq8gl!oGAn2u~&>Jf*w5 zY%i{BuWAp1q7arRidfM!P%ql}{YSw;bx*EAW=hy$iwd753vQDsE3{%Qd%ZfnlPonQEDmHxfa7Et@&$_i ze~im9nMUlAZi@TeD1?m*3zOR>PWI0TFxWCOe!~}~vD6+*G*oZ|VEqYT;)H>&k3~d7 zLuF^WBD>d7B0T93Q_iR<0@!gL8&(qF2wuo_sV9}^-wUu={~5C(@ki9}JnuvA9UxNZ zpMXO~@tSXLHE%OPfx;hg=I_+FgKyB;*LO(Y`&y1I+6_4dMeon?guSE6L`DmD%$xgU z*8`R|@vv4nJ^bt=5ZJ(zue$iHm4D}jsbzM@ZQ1)piT%f%|DJp)yH@{|MZJ0<1i3fH z285sjE-)%Ndkw~i5*cAvVTtcz5?#&0xnq|KiTdF7+(L@%=VkSIyoTV`Fn2%|xL{!q zxqJNv-FhUPbhN$lLSS(rJdXVlWH942RJ;!|Sf zqNv}liLA&;%s`x6{TlB9&`Lm@DA4>~{{c@owWu$daLUkV%znx2HDTqw;-fV-eNo=k zTikR_JIn?Wz2sHBskgM@0P9`Ds$VLe#m0CO zAIG6B9!C;mJoD4yQRtnkjDQX|3@aAa@b)x0jT)6+Do0d(QE1w4F}f)hPgk>IXWmSnAG}p=OThh1*Hc8HpP}c3*Xp4ug?hDdx_nxrlvvKX zF~izhhWR<(pn!f4vkKDF;jZC%76xFe48gP!-jC$#_0->th1E^1hp#qv60xQE$noGb z%d-&}#}+4ZCEQ4cUsHds;uEk=oQW#fsa(wjxB|G{a7E8tgRl7>yV?smeKlkX11VB& zf3J(=VoU=2rcXiVnL*#G@fb}XEYJbce~u2qUtBHlxdgE!0^y=dHoo?p6X+n94?^ey zRhYL_M|3HJB!D>)6H=(%^Ni4>|9h3gsIaUMg2?f&8h1YB;9%l(meauQmfotD>jT35 z*8yO(1ym`eD$Z>FGTUTe*Fyo9IlGr6X zHTtfSRP_GmVnpJL7$Jwdb_FWjaJ;;i|=AIFtPYnJPureU} z{LgXKH0w^8aJoh>&Rs#wEg60Bqt1@Dk1XN8dE9>$+5f`_13kEOIO~;vANv1j(EaZV z@c$>HSMhhvkWPCg2u-|%N4B^aBEM@rym{$}sdSgQQa8=$r*#~nH$(NP|AZW`kGOdbo}$!TYDVs_ zChx!6)47?Wc=z*qFW3sAKckzLn4=6l2N5$xXC$-~`HOeig&i@WtZ$o~ z*p8twP(w<`;^G+m^Mfaco~*ywU$f18MYe;Hc>83)p|*&#Bt+zI}w%uv!@QxP0Qt#+LIPLH7D(Jvva^x zh~9Z{q)QL_ooco)8u;Glt9WsijBY~8E%m+jR58jjR1nn5IIN%HQL^rx#ZBF9NX%pU zsf3|`nm(DxJCnwy$^IK=KO3ic%WB|EZ@>xos^{`D`iH}sTiPSW+-d!iKdkdyC~gS! zGiRPN+GXZ83x)HX=UaYfC>^11^t)qB>&w$yl&bxF*&KW{WGIoWJ0T<@X!Cv^;ccJO zKuLnR_o^EqXW~N1dGR>yTWbf@R7yr;MGH+C z2;xM62+5hNNTsOoK=i@sx>LHNT)T>ytq3dlO2tT4T7S{Twj-3}gN(Gdi4Z|vCmo9o z$%pX|Fu96v2v&Vla1;+eNQE|uj)Sb9EC$V;woF`j3IEaD_kRsQj3Ms%ABOv&DIe#y z6#T8NGp<^K!zCUHSEb|IC(+B1=BNAS9T%Yf1Z-|35xLJwzd6wir1!QLIxH+V~RC^GFS(QAH}vq=WM?aO>Xv$N&;0y7M!Ehue(R z6e-P*9pDjyh<)}o<^G-jE3nwWE}2Jgf(&f#PQ7TDR7=|LA*7p}*d^-}W}B>=^2;H5 z0viD90vNJ{1A?_hK2>^n-2fao-+NbRQFkR7I(daO2`Va;)6Om_0;;W^V|AvtADetN zkC@$bs@0`qI^eb9!CPwBiS*=tL(qNJf3g~z{~8(DJp2i|X}NrhsWv%rb|yJ-hGu&I z6}gz;sGAWnzyd#(_!F$BP^Yg?XY$ObFue{9Y$XvMoQ2^_el(t>yUB@SJWlqS6?cCC zEC?XX&kJJ5#LE>d>Lo#)O_5~R`)7s?Z9QKjZFbaKC;A)7ZvY$JD2UYtwIM_Sl>YcF z*{&;{2x1oIIQQ9a^ma$of!Gg;Z6P(7*p|)(LHw0|J0d`;Qdb8`tar-`c{!}A5tb_h z(SgUtn1{qBX_5^YbVio|qUkA9M$9!0Weyq;=IHL3Y8?caP zzaZA}h?*^tuk9Pc-IyLz?F)!A!~ads(?I;w$OYDB5lblznO2pc*0lQaK#{NCZ5a5= zF2n$3f9>*T;SPU=qB9$gWATC0V}Y#)_Wb&V-drsI;-g=KruTHy(_LM2i7zDp%6Or_ z(})Z}Ro`@BHsH5b`Chn$MPSf&w3EUdPSH7-J6$4Hgm{OJh=Cam?l+s46YSdf@F{AY zi>5W)E!fGl3k8)FEfX$6Y1#R==E17b@g!5l;*-xC#7eG+6&Oc!CB0~E8yOh;z=NmN4v=gr5LqSwCL1(F5`PY_eg!7@!~4}{mhS6e zMwkEdLjGe_)GCKs(j%Xs|F!_3EGJtV`zhPLftbW7%x*9jn}{%f(9rytdX>LWneHN; zlaJ?_uVv1?TX-c9>g?bo(jm2^DaviKdKpu&);Gi&9#{C^0m@#3W!eE; zHwyd_n>X8j7k)VwpMLNTyTdx z))pFx35DeX3;K4khf}0~rX~db_`rZh00O{AsgGG7F0v0i(cF>Wr20$iFX-|<)|yjC zTL1zKM1jmQQ-uCVgTnWZ1bRrdl4MTSxwJB+PYe0Nq7DX9gQJcYYmYemd5({i8}7@~ zSi{DsoU9P*96q{q?JC#i0y+F=8I*P)IT_K?A<~d*@|zJ_ONmn9L^YTFXIX|S*A)ho zp5DP|$aV)0FTbDbH#x1gl*-CJyq5+OvDG@D)>fDihvE-9qc9WQxrF~V>R0kkbg_1w zlE6v%FFO8z_mRON#VG82L3AC7=*$nQiGeDUV0dTbo%?)YwTqhlsTL)9t}`{{R{e{i zNT)!WkBRRLoGbymsB>BSOj6_2xdg^-Yj`MATY=I9^CTB9DCrx5U({1G3<3Tqv{3+} zu_vWMG*e*+bIgUT4I%>gteqzT0ZU9K8e!1t5dc;0slTzCm^}epO9P z!H4lk2U{E}+8aI%s*3?{zcmHtpqM7_%~3>L^St@y9g{7pjc9|pQ4Hc{3SNyJ_+|m_ zWDKkO03#y8>*y3sGv`5clGv|`)52@3$DiS!k~{Bp4JYe16Om(YGd$$|EZWa-J4yEh zp49A@QYt|k3<-x#CwUoufmMr62`=-#MlO6qz>P(2<9iR4JJQ<3lWQgYrL!^B6j?C( z+BtrRsVVsP6-N64WqYoml)%XNIVJIJ0U650 zeOe{KXisLvSysD&%YdXGr%v5|R(hfhm6N#s z1_@tN-0ko4`uec~Lr^>EEOOz3FYFpq;i$kRmMbfQ64w_*CvCv?u;qQf*T|A9xhKaa zHk~qL995maqIA{vHb#aQHJyJ0(L~46=xe0FQBc>}bR`TueqF2_PMZ2cr=Qzu0Ig1* zKcU~}vCvB<(X{^-Ji;f1G1{gF+_Z?bhnF{#_4TAF)HP{wH4k2b?I@<<=e7 zWYVowK*R!zt`re)!3CukL%>j0QKHnfd?E-TbOvDMHWdOfo=8OT2hU z&%1)F$kM-$S@ZNl%~-x|65+{FH0GXs-A2{oB;DcxKi=tES0uV0zc|Q~7_d7q)1k** zJ1;ls&xrWl{3DdZY*G)!qJr{XN$|6#W?WNRqc5sPSofo15DMA(vfFx2e+&2N(^J>y zt2{OVUsv-XDMXyN)J<{4tbW;MZVhss7W&g^L z2V0)b(h$+M@2HLzcMCu9NdI+l$F#2Iz~z^j_e+B;AorR$*XQ-cYe+O(9L>(8Ns3HO zq0+y+*~VNI{sSlemt^PNd*M;ZhU6qbp&jHwd2lsi& z{r&01#6FX!mbHMyS>n|5Ti-2FW2X9-CV&ni?^glOdVv*Z6k*I zitv`WDDQi(QLBF^qnnylJtQEn?v6q$W;b;`L zU6aFJ)&AB8`(yUEcKQmRkED5>ExX3}b9(jS_QDQ+#}+iidWkoGoCH81S8;7ppfw+~ zih|aD&>HjU0$Nf9`aMD99(9bg=h_Trp|#zgy4y*|X^txbA@L>uP@X;o3c-ZWq^WG(U~L zjRz`1Cd8ec?}_q0O{;TnFTSxlL?mRo74h!spM7Gk{*%0<+xpUPvgS`tS1mg9@#@GOnpteW8USVcoTlluz{aRcRu)b3YLy<@F%Mx*kQ~NJa(^D*V zbkYOcj%YO075j(<{!0-q5bX6cPv{M!rxZ5p$sZ;{2Ro8zEJa=kdp=BLB~*3;*oR3S zO|ah;dDY5xo=S%j1^8aMp}fOLdAPy_x6C~}@?7gRKXx@UXl=5*M~f>B=4y64y?=(>75|tN-f5fJmYrdww6&f8wlz1yhxyrK$Uft`lQZ+nBJu$iL#JUpLEj!U;ws zLPgmlW{1c7BJr;7ACRSYFt;BM(CU~LfnA1-wb*GXpMIHH@Ru_}7!cyc9Ax4QuS1(wrdm|FFC z;Q(C`OP zRH%4z9*?+fF&aaU+R-kIG0wLlS&_;T6(#{=cfN*$EKwP=>K& z=F`2es&{i*ubQ_PIqJUDp-AoJD;OiKF}h1{jG8ag@L^~@3nqqs*$>}bjKgi0=1Zq= zG!2)m+c=8}{>ZFbMEUE}q(ydmj1W77%1HQJJ<_ZEaT>Mu{ipT9EDt zZM%O-iJycI%K_pC;P;q`>`lDzVkNb5b3yk40CrYy{a=iu@94kFG{@@TC z$Q-_b_b-V%Y$i~_%KeWU9Q7!@oJ)Ign|V0_a471FDpL?mina2|`Rtn53(_gw#Q-S* zPiGVyoK}gr;R&SB%E*KUFIVR%ksL#6(C4O&5^0`o*BloR+2V-sr@by&=aTg@C z3v}Kp*vvnbpz~z0WoPm4n)dS8GyFrRNi*kh(V3opP(a_FCH<~5fm!0t40 z{N>nEZ2F$dhk(KaL;k7t{-=~P)}kn**~{NV*>|z{0n2W5-xCGDYv2W)1C2Cc9;jT^ z72*&Zpls#@aiu01wkx&+su)w~iL39euC7?U$(Aemg*o>2BiSPE!@i2z2FD>X5bnlc z0b{I)H3lPi1NCPy0C=Uc%(v=L&h8A=^d>rkuG8?gqYlf3KPe;6xQydosv+vWE?J7Fx1UB^RV?lm zGs7y@qFUT83<{(1H67ccvPUQl*YUO-?aISuB?;Wp$VUz~Jv zWA}Te59VUP4d^ov>w>Sg^6(1XPw9f(LbsGzpp0HSIHLj&u86G`dZKDPr;>yih?uok z<%WlUp<>wr-A@pjcE=_h>>b|5yR%V`j6mjL+@!}P|HqSs+7{%Pno^@@${6YL>Pl;O zV^4ZNqIrrV?hUqpa1c=H9qKge8&4DIsolTIAtWw}IRClXLyDHd@Pv2;y z1)8KqWfCZde=}6u8Lt3$F2nh-J!O*!ns)j%@&!?{+qzv%8;ln=I-@`zPQtN$m*;rcNm_ zNdwzI-1}HLwA#Y@`MjB>iZE_Wmm;cq6}Q8-o<4L!_$YplvoIukXn)Xf9WGG^7Vp;i zCN`%tJJo2b$A@#*@vH<@^?pAs2XEBrbo36|1PoCVV`I9VQU2%*;Ziujz5a@B(R&Ki zdpD=go3f9H7h@4{hSdn15<4!}^~o9t+}MzTd#BPRMeeSF!i3TfS8vic5m(OLbzV%G z@%T&8=C6UwolzOH0y`3v3_Z8_ts`G?%;H-pEM*+hR`py>ugFUAP9{8C-TJG)m1#bw z&R_*G_5##?K!qaFAqcHpEyl^WYvI5km~Cju{U7aZBcV+o4i}j{#Sccxho;pvcuR$F znl$QuHAxkFHX^zUU`p;pCSmd%t8rf6n_b3P7i@9$u*nqS`L}}4a&}MUC}C$}5{Rd^ zdqTUzgv!b!$2~WIJ{@c67Qa;?MzQDl@vOz&5Hz~-EP%M}kC+9{hmwK*{O|hIUtRr* zS!->QFQO@=vHqu@cCzVm@AenPY}Rz@p+emCd_MZL6kh76V11d4hf!`0BD z01+Cz282}d;|}mx_OmtMP&`f%jLR2Ouciw$52XpF#M2OHR5I9JKvcj3k_l#yvNs7H zsJ((L^3K}t!EWdnm;crmfOfEpJ=_=lmg(Oc0{RYS5^>r`xQ*XDesx`$As_uAt=J}a z{VbuwOb4<$!fid1gQ1&M)9<`}e9oRgV?pI190po@fY_>^kRmIyhZmo9U^RJAp|(oFEex4j#<3&GJ<%%h^jLluMjLlJIp!QSQic zTq4&>*AP(u&5tl_fBiseHST#-u`le9CXLi66{j{BGJN(&#n7VX6;{CINs#|8rs1Dm za`UOK_6{nQR?^fn<)yN4KOZ5$YUA!X)E_^N^9yZSu>9fZGN?ma9ze6z-{v2=;~87Yhd_PqvU4%~zMZ9PMM*i*Z2i8SPvzuwY5?o_R95_W^}V`hBW%@(+6bv>=W=%IO8RwshP&@Z z>APG6dlia7$(ak_*n7EcB+Bw1OUjVGwxoVIwdM9Nrlvw8Yq5UGbjNB$)qvU zhs#sdrX0HCa(M8KIW=Dw8=7I20#oCa)zOMRn5~)z8nfSma(06SZ+3UJ!{H5hTyoO$ zq4x~>&>kb+Km^KR7;>+*G6wPT(2>kKpOIyjb5}zplW^f=O<(cmG+~2kM+A>dH4sxn z+|P@_TXpN7nDIIf!Ft+FyNdz%h;p)VNOH!Y!=b9EzOtxnY z5*e~&>cz)fc_@!(bn9Gel5HgeB%?+F@*kV}jE5`_n7OMZ*QXVCK`iyLZ6W}s_h1jipE0j4S9xeO?fAV4i*l*uf0}kh7Aj{UL2ys#SXOGG$IrF z>WOLUb=s8LyT0ApJUOwXMjiaQN=Kieb^>_uY!n8Jk5t=LRogB!1(#z;kma#PL zQQjl-;Gs2S#NNZv)1(w;+dW^tlPy-3&hxWVDz{y5952UJa6bzw^Ws>}Y%PZ-N%|Sy zlNp^s31WOhq}>rS6Z{ef%VfUwWt;EyA+3a+^<_V?PL+wDQJj*~qI4`%|20vHv)ZMS z+Gng1a5Ks>Twas4g+=725~}0(!%?nL8Olt<7kQdw_=Q$V!7AS=bC1p z7T~rm1jsUd8g?7Zajy`ls zTRy{U%16}po|O$i!AUu0d4Xr__@%HWQ+GL}Kf{wmC`${dFy_vb5LMr%j?%LYbr$(Y zP>wlffCccWIbMLHf(woB00W{5l)?Ze9oh1{W%YzEsBBVO%V&$v?A8nCxBy_5M6++U z(%)Uog^aBA9u|~v#?`^kKjQ6+nbe-}l zJS$T$Rw=ULh4PvGp{VJl2gz3b>(JuYU!eG zpfa2ZYd%5EH@>JoD?Iq{np2qQwfvhn>PtChlhIcnzI*wfkaypWS*KK%KH(#2>Zc=*Iuwh5HNdt-l2R!|gpN@bRCioR7bC>x+D)$;N8JW?d@(KPQh{ LAG?1PeeJ&h_C`|O literal 0 HcmV?d00001 From a690b73e7ef6e7dced114df640fe9155ed06887e Mon Sep 17 00:00:00 2001 From: Bhanu Prakash Date: Wed, 11 Jan 2017 17:53:37 -0800 Subject: [PATCH 10/90] Create hdinsight-upgrade-cluster.md --- .../hdinsight/hdinsight-upgrade-cluster.md | 52 +++++++++++++++++++ 1 file changed, 52 insertions(+) create mode 100644 articles/hdinsight/hdinsight-upgrade-cluster.md diff --git a/articles/hdinsight/hdinsight-upgrade-cluster.md b/articles/hdinsight/hdinsight-upgrade-cluster.md new file mode 100644 index 0000000000000..4d374df51cf22 --- /dev/null +++ b/articles/hdinsight/hdinsight-upgrade-cluster.md @@ -0,0 +1,52 @@ +--- +title: Migrate from Windows-based HDInsight to Linux-based HDInsight | Microsoft Docs +description: Learn how to migrate from a Windows-based HDInsight cluster to a Linux-based HDInsight cluster. +services: hdinsight +documentationcenter: '' +author: bhanupr +editor: bhanupr + +ms.assetid: +ms.service: hdinsight +ms.devlang: na +ms.topic: article +ms.tgt_pltfrm: na +ms.workload: big-data +ms.date: 01/11/2017 +ms.author: bhanupr + +--- +# Upgrade HDInsight cluster to a newer version +To take advantage of the latest HDInsight features, we recommend that HDInsight clusters be upgraded to latest version. +Please follow the below guidelines to upgrade your HDInsight cluster versions. + +> [!NOTE] +> HDInsight clusters version 3.2 and 3.3 are nearing deprecation date. For information on the version of Ubuntu available with HDInsight, along with other component versioning information, see [HDInsight component versions](hdinsight-component-versioning.md). +> +> + +## Upgrade tasks +The workflow to upgrade HDInsight Cluster is as follows. + +![Upgrade workflow diagram](./media/hdinsight-upgrade-cluster/upgrade-workflow.png) + +1. Read each section of this document to understand changes that may be required when upgrading your HDInsight cluster. +2. Create a new cluster as a test/quality assurance environment. For more information on creating a cluster, see [Learn how to create Linux-based HDInsight clusters](hdinsight-hadoop-provision-linux-clusters.md) +3. Copy existing jobs, data sources and sinks to the new environment. See [Copy Data To Test Environment](hdinsight-hadoop-provision-linux-clusters.md) for more details. +4. Perform validation testing to make sure that your jobs work as expected on the new cluster. + + +Once you have verified that everything works as expected, schedule +downtime for the migration. During this downtime, do the following +actions. + +1. Backup any transient data stored locally on the cluster nodes. For example, if you have data stored directly on a head node. +2. Delete the existing cluster. +3. Create a new cluster in the same VNET subnet with latest (or supported) HDI version using the same default data store that the previous cluster used. This will allow the new cluster to continue working against your existing production data. +4. Import any transient data you backed up. +5. Start jobs/continue processing using the new cluster. + + + + + From 3c1a962d8bea93ecfcc3a76e16840aba7c7445b5 Mon Sep 17 00:00:00 2001 From: Bhanu Prakash Date: Mon, 16 Jan 2017 20:54:16 -0800 Subject: [PATCH 11/90] Update hdinsight-upgrade-cluster.md --- articles/hdinsight/hdinsight-upgrade-cluster.md | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/articles/hdinsight/hdinsight-upgrade-cluster.md b/articles/hdinsight/hdinsight-upgrade-cluster.md index 4d374df51cf22..8e1e9a0a1d06e 100644 --- a/articles/hdinsight/hdinsight-upgrade-cluster.md +++ b/articles/hdinsight/hdinsight-upgrade-cluster.md @@ -32,7 +32,7 @@ The workflow to upgrade HDInsight Cluster is as follows. 1. Read each section of this document to understand changes that may be required when upgrading your HDInsight cluster. 2. Create a new cluster as a test/quality assurance environment. For more information on creating a cluster, see [Learn how to create Linux-based HDInsight clusters](hdinsight-hadoop-provision-linux-clusters.md) -3. Copy existing jobs, data sources and sinks to the new environment. See [Copy Data To Test Environment](hdinsight-hadoop-provision-linux-clusters.md) for more details. +3. Copy existing jobs, data sources and sinks to the new environment. See [Copy Data To Test Environment](hdinsight-hadoop-provision-linux-clusters.md#copy-data-to-the-test-environment) for more details. 4. Perform validation testing to make sure that your jobs work as expected on the new cluster. From 9280429e725afeb8b4964e9363689720e511427e Mon Sep 17 00:00:00 2001 From: mumian Date: Tue, 17 Jan 2017 09:11:36 -0500 Subject: [PATCH 12/90] update --- .../hdinsight-administer-use-portal-linux.md | 10 +++-- ...t-apache-spark-jupyter-notebook-kernels.md | 38 +++++++++--------- ...nsight-azure-portal-cluster-dashboards.png | Bin 0 -> 12071 bytes .../hdinsight-jupyter-notebook.png | Bin 0 -> 2844 bytes 4 files changed, 25 insertions(+), 23 deletions(-) create mode 100644 articles/hdinsight/media/hdinsight-apache-spark-jupyter-notebook-kernels/hdinsight-azure-portal-cluster-dashboards.png create mode 100644 articles/hdinsight/media/hdinsight-apache-spark-jupyter-notebook-kernels/hdinsight-jupyter-notebook.png diff --git a/articles/hdinsight/hdinsight-administer-use-portal-linux.md b/articles/hdinsight/hdinsight-administer-use-portal-linux.md index ca20e763ab805..de9103175becb 100644 --- a/articles/hdinsight/hdinsight-administer-use-portal-linux.md +++ b/articles/hdinsight/hdinsight-administer-use-portal-linux.md @@ -14,7 +14,7 @@ ms.workload: big-data ms.tgt_pltfrm: na ms.devlang: na ms.topic: article -ms.date: 12/20/2016 +ms.date: 01/11/2017 ms.author: jgao --- @@ -40,6 +40,8 @@ Before you begin this article, you must have the following: ![Azure portal HDInsight cluster button](./media/hdinsight-administer-use-portal-linux/azure-portal-hdinsight-button.png) + If you don't see HDInsight cluster, click **More services** on the bottom of the list, and then click **HDInsight clusters** under the **Intelligence + Analytics** section. + ## Create clusters [!INCLUDE [delete-cluster-warning](../../includes/hdinsight-delete-cluster-warning.md)] @@ -54,14 +56,14 @@ see [What version of Hadoop is in Azure HDInsight](hdinsight-component-versionin ![Azure portal HDInsight cluster essentials](./media/hdinsight-administer-use-portal-linux/hdinsight-essentials.png) - **Overview menu**: + **Overview menu:** - * **Dashboard**, **Cluster Dashboard** and **URL: These are all ways to access the cluster dashboard, which is Ambari Web for Linux-based clusters. + * **Dashboard**: Opens the cluster dashboard, which is Ambari Web for Linux-based clusters. * **Secure Shell**: Shows the instructions to connect to the cluster using Secure Shell (SSH) connection. * **Scale Cluster**: Allows you to change the number of worker nodes for this cluster. * **Delete**: Deletes the cluster. - **Left menu** + **Left menu:** * **Activity logs**: Show and query activity logs. * **Access control (IAM)**: Use role assignments. See [Use role assignments to manage access to your Azure subscription resources](../active-directory/role-based-access-control-configure.md). diff --git a/articles/hdinsight/hdinsight-apache-spark-jupyter-notebook-kernels.md b/articles/hdinsight/hdinsight-apache-spark-jupyter-notebook-kernels.md index 8d51626cd52da..bcd08a358872a 100644 --- a/articles/hdinsight/hdinsight-apache-spark-jupyter-notebook-kernels.md +++ b/articles/hdinsight/hdinsight-apache-spark-jupyter-notebook-kernels.md @@ -18,24 +18,27 @@ ms.date: 10/05/2016 ms.author: nitinme --- -# Kernels available for Jupyter notebooks with Apache Spark clusters on HDInsight Linux -Apache Spark cluster on HDInsight (Linux) includes Jupyter notebooks that you can use to test your applications. A kernel is a program that runs and interprets your code. HDInsight Spark clusters provide two kernels that you can use with the Jupyter notebook. These are: +# Jupyter notebooks kernels with Apache Spark clusters in HDInsight -1. **PySpark** (for applications written in Python) -2. **Spark** (for applications written in Scala) +HDInsight Spark clusters provide two kernels that you can use with the Jupyter notebook for testing your Spark applications. A kernel is a program that runs and interprets your code.The two kernels are: -In this article, you will learn about how to use these kernels and what are the benefits you get from using them. +- **PySpark** (for applications written in Python) +- **Spark** (for applications written in Scala) + +In this article, you learn how to use these kernels and the benefits of using them. **Prerequisites:** You must have the following: -* An Azure subscription. See [Get Azure free trial](https://azure.microsoft.com/documentation/videos/get-azure-free-trial-for-testing-hadoop-in-hdinsight/). -* An Apache Spark cluster on HDInsight Linux. For instructions, see [Create Apache Spark clusters in Azure HDInsight](hdinsight-apache-spark-jupyter-spark-sql.md). +* An Apache Spark cluster in HDInsight. For instructions, see [Create Apache Spark clusters in Azure HDInsight](hdinsight-apache-spark-jupyter-spark-sql.md). + +## Create a Jupyter notebook +1. From the [Azure Portal](https://portal.azure.com/), open your cluster. See [List and show clusters](hdinsight-administer-use-portal-linux.md#list-and-show-clusters) for the instructions. The cluster is opened in a new portal blade. +2. From the **Quick links** section, click **Cluster dashboards** to open the **Cluster dashboards** blade. If you don't see **Quick Links**, click **Overview** from the left menu on the blade. -## How do I use the kernels? -1. From the [Azure Portal](https://portal.azure.com/), from the startboard, click the tile for your Spark cluster (if you pinned it to the startboard). You can also navigate to your cluster under **Browse All** > **HDInsight Clusters**. -2. From the Spark cluster blade, click **Cluster Dashboard**, and then click **Jupyter Notebook**. If prompted, enter the admin credentials for the cluster. + ![Cluster dashboards](./media/hdinsight-apache-spark-jupyter-notebook-kernels/hdinsight-azure-portal-cluster-dashboards.png "Cluster dashboards") +3. Click **Jupyter Notebook**. If prompted, enter the admin credentials for the cluster. > [!NOTE] > You may also reach the Jupyter Notebook for your cluster by opening the following URL in your browser. Replace **CLUSTERNAME** with the name of your cluster: @@ -43,30 +46,27 @@ You must have the following: > `https://CLUSTERNAME.azurehdinsight.net/jupyter` > > -3. Create a new notebook with the new kernels. Click **New**, and then click **Pyspark** or **Spark**. You should use the Spark kernel for Scala applications and PySpark kernel for Python applications. +3. Click **New**, and then click either **Pyspark** or **Spark** to a new notebook. You should use the Spark kernel for Scala applications and PySpark kernel for Python applications. ![Create a new Jupyter notebook](./media/hdinsight-apache-spark-jupyter-notebook-kernels/jupyter-kernels.png "Create a new Jupyter notebook") 4. This should open a new notebook with the kernel you selected. -## Why should I use the PySpark or Spark kernels? +## Choose between the kernels Here are a few benefits of using the new kernels. -1. **Preset contexts**. With the **PySpark** or **Spark** kernels that are provided with Jupyter notebooks, you do not need to set the Spark or Hive contexts explicitly before you can start working with the application you are developing; these are available for you by default. These contexts are: +- **Preset contexts**. With either the **PySpark** or the **Spark** kernels, you do not need to set the Spark or Hive contexts explicitly before you start working with your applications; these are available for you by default. These contexts are: * **sc** - for Spark context * **sqlContext** - for Hive context So, you don't have to run statements like the following to set the contexts: - ################################################### - # YOU DO NOT NEED TO RUN THIS WITH THE NEW KERNELS - ################################################### - sc = SparkContext('yarn-client') - sqlContext = HiveContext(sc) + sc = SparkContext('yarn-client') + sqlContext = HiveContext(sc) Instead, you can directly use the preset contexts in your application. -1. **Cell magics**. The PySpark kernel provides some predefined “magics”, which are special commands that you can call with `%%` (e.g. `%%MAGIC` ). The magic command must be the first word in a code cell and allow for multiple lines of content. The magic word should be the first word in the cell. Adding anything before the magic, even comments, will cause an error. For more information on magics, see [here](http://ipython.readthedocs.org/en/stable/interactive/magics.html). +- **Cell magics**. The PySpark kernel provides some predefined “magics”, which are special commands that you can call with `%%` (e.g. `%%MAGIC` ). The magic command must be the first word in a code cell and allow for multiple lines of content. The magic word should be the first word in the cell. Adding anything before the magic, even comments, will cause an error. For more information on magics, see [here](http://ipython.readthedocs.org/en/stable/interactive/magics.html). The table below lists the different magics available through the kernels. diff --git a/articles/hdinsight/media/hdinsight-apache-spark-jupyter-notebook-kernels/hdinsight-azure-portal-cluster-dashboards.png b/articles/hdinsight/media/hdinsight-apache-spark-jupyter-notebook-kernels/hdinsight-azure-portal-cluster-dashboards.png new file mode 100644 index 0000000000000000000000000000000000000000..f1c9a99d7891cdf86a739d6d70b44dd739f1331d GIT binary patch literal 12071 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 R0tUGQG7<{nwW0=r{|_I@Q_BDV literal 0 HcmV?d00001 diff --git a/articles/hdinsight/media/hdinsight-apache-spark-jupyter-notebook-kernels/hdinsight-jupyter-notebook.png b/articles/hdinsight/media/hdinsight-apache-spark-jupyter-notebook-kernels/hdinsight-jupyter-notebook.png new file mode 100644 index 0000000000000000000000000000000000000000..bbc8c966e007ea86c95ddb5427283785563cc59c GIT binary patch literal 2844 zcma)8`8U*!7ygWO5M~Tz&!{X(WtVM+cVuV85K8hUq71KXGPW4o5GqU45Jt8MlRach z$etqE$xD*KgeJ@I)p`Gc?+^Dr=iGbGJ?EZ#p65J?XloOGUU6Ok0Qk*JQCE%-cN8ID zwxeuYOLCigTWb5 z38toLZeUxO0Ge<%0c8AX1AW*1`I4a~ZF*pBbxm(=3?XNjlG@SrWbX9LETW-WSIzS$ zc|9UvJx90tMRT(hpitPhECGfSAcihr0fF0>ci&f06etS31c*~6KNtIxk0xky3}#V% z*wSP+Ux7%aO3JF97z0ui-6$k4F4zF-a0>b~S~_3jBN(35mvzDk#gvn#jV=CT_86rY z)PO>5b*d&UKWF4JZT?+6u`e4j^4kAzldgvfI(`bRd4BIU=3QK!A~6e=fr4|K2j7kP zU|q?dk1s5k%xDGurqTTH0JJ-;#H(=tHg^ zrAh~r3or;|W2RE@t|pnHkbu;dCHfN6A#Y_Hwag^7G<${26l43$#Ng`vs}{MjiECzB z&JapL!I!J?6*rIWmwVQZQX95Zw`)6sV{*?DZ&UUVEce|xB*Y3_>0DlYd!Vsp4+wLKsZ2qh)hxHE-~0c(6Fg}Xx-6TXw8UGc_(;sLpL z{^bCk;@1C7n;T_XKNE(*3O;#{4G+VKluq~I(VH2WnR0S+*0~1FB_&{B>O|^f(wGiH z2h0)0E(3spC?V0m3;NYu!K9yC8H$tLX3Aq+w!%^Z@z%zt+&?c3gv{#R58NLZAWH{l z3ZtRgr}B79f}P~_06`#1^{KCzRAt#0-1TEJoD^DEiO+D>ooo6%JMAj&z`V|r*@yN1 z4`O!OE*fZOH`1vE8AQ#}wd}205y)@I>j+jBSDz`8gJoRf8lWx<`MB{_%Kf{1yPYS; z3!TWplppv|DG}qIAg#roAL0#%AzIkV_6oDDNYy?eZG$kV#* z5KgUEFP}}gOiL2AoV5}*xc9?f$WEqjxFsjDHR>duh<426b{^X3J<$FUeOUJ2Csq7V zcEem$ipHrhtY6^vH60g{S8h(vOx^U545sPi?TylQ5J2aQv~~7=>UBeZ6Aq2&h;(YY zI1)bpg&9W=VSIjGZjoqv9`kz|Cy}={bM3{D03XPlU0!egta60~Nf{HdJ{tz5^0aT8#Y2sz0``-w47MrU_-|B4}Bf@Ym!-JuM1j~LjomlRJUw7 z?PYK)$s5HX{t*uv>5?n@6pdRZN%yd!-xxW|#w(yafFl8#0Nuy7sI4-BipX6)>{2>4 zWlR?*LRx=+|5pm7rqIH3Fq;P$p>JH%J3kuv;ISzO;-+abqYG8wkv{11A+$9E}oz!#Rss|Lv-Q3+fz z`4kGJtZel;ehtL3k`;Y=q9fwrj9oVnb3~;7)a8g>pd*n{dwRsR#M@f|!={*tCP8N^ z@nf@zefVCi^o#V}VBv(8ik*e!rkhvZGTx1mEpXf4CBSWbMp;5exRkKN+m2yzV8R0U z8cPB42$GU!@J8&jJoF(r&mKF3D};g#Cq$eQ64I$u%6s0zDElOHlzHOHE7z(9k#gDh zRb?11D%Cth81{;07JBPPtL_8H;IGa;yukejXlgI920g@2d^&{EmHDhk9%+~Q~bx;{VQJ#m6|h5JhCauI;kMnCeCGy%gU zyEmiVAld@p?f^*{p|}2RCx?2^-8o)Ebh{{uO96nRwu~Q&tg#@wL>@djVb24+S@~rS zZu5U*cu|z&IpFtu=cN)+5dh{n+hxFj41S827m(SI1ORxnj3|fUOF@EPbbDTTX|Hs> z2^SF4#-vH|19IuqdOc?5+b2ZI)IRg&OB<1j@QBej#nRVbHRiEaColNwg9-L0r=Qg^ zMq!@j2bqr;nCgX*Nt%Afo3POe7?^%(=mM#Azu}aKvnrZ%^Zodzer(wu$G#O3cdD(M zQ$qTgE_0ZqWMG8tdC3`%m~3#jN&L9G*qFR^sZY(o2O9GiyEvksoV&H0Ez%&IxA26u zDebC_A6%U((3C+pVy9thO9nMwcS=RLc6i!jI(}GV@v`^Tw%TL%!%vBWwAo6oP;sbO z0BxM<(QBr>SmZxWTRamR5rGnuc6Olyj1T!K={3fJ)(w#zMHyQ5t5>r_Zia=8#2dS$ zVrtZ16SjhUir(FU4m9Mf5lR(RKDMacID7Mf+_yvPCC6ju`+Iu&NG)2*TK@hk**&GC z)alyAb&FmVU-eASH5_-l3oLMQ@ZSBT0-v8LVZWXIw^zbxtr>fvoB3IY3T<0l@bVfZ z`|aqb>HwxrEc~0`o9ye-ElNt9VfcH8Hs{0@g#@Cs@^28vU%VgbVE+qN%U(2fy_>DeMilg6C7re3cBawyaC;STx>)Mmd$M}+F`gt1n6e=|ut9JJ zJzhfi;plajt4X0E7MAJ&5{=RhuItSa;subF^VLfSjPdP;``=R&1(<|)l>kJVj>Y<@ zp}J8ZfP*vM&Lv4#A(#U|UVXu)y5a5<9#kti$h4xbu^hPPO?^5m`%f@k4{u!tA4^ef z-TG3s6xFpmdBSQ_@M7jtS-Bo}N}Y>CnTo`YZtIsC#-qr)98nUKjK#>A*J|7I@b$98 zPsCHU(E1|1ORlRm_i0|!4cW5hKqgNs`SssDElFaNOQOs(%D4me&9Mq-pKF5Z#$cSM zqf{c^?<@A8LGF8VUP{ZR}3TSz( z#qk%?8vgvBmYV-v*VB%e*;N6>f0NH0CuMxzV@B)h=!lDpzjA!k`Kxgvvx0Nf&d%;0 zeM{zRY{<-1%ePz2wLKMHvzYR0RgDck`lT)T?J)_&a%xpkMJc980pGkuZoWb@xzg0< zTPy*E>ThdcYOQjvH$lih%B@i~8e-yLPlTtC6V~ejVfF zNk^gVPtz=+mF0}b=J-!>eT&}S-Yc+S1Zw=bGI?{*$HQ~sdq(w>gY6qi0)gtoV}Xqz zj4*Guj30nJ(_I++>KH#4v2A;SN5XMY{;Ac(;#DPy80EieKO*b;xibEU boRqYO=uo+n0gEI2akhY&u{El~$SwMRlP_0A literal 0 HcmV?d00001 From 0c938375c005f9e2b0681c417469dd218fa5a3cb Mon Sep 17 00:00:00 2001 From: Sabotta Date: Tue, 17 Jan 2017 17:51:29 -0800 Subject: [PATCH 13/90] Update virtual-machines-windows-portal-sql-server-provision.md Updated steps for selecting a VM image. --- ...chines-windows-portal-sql-server-provision.md | 16 ++++++---------- 1 file changed, 6 insertions(+), 10 deletions(-) diff --git a/articles/virtual-machines/windows/sql/virtual-machines-windows-portal-sql-server-provision.md b/articles/virtual-machines/windows/sql/virtual-machines-windows-portal-sql-server-provision.md index 329f2f0faeac2..97cafeeec20e0 100644 --- a/articles/virtual-machines/windows/sql/virtual-machines-windows-portal-sql-server-provision.md +++ b/articles/virtual-machines/windows/sql/virtual-machines-windows-portal-sql-server-provision.md @@ -14,7 +14,7 @@ ms.devlang: na ms.topic: hero-article ms.tgt_pltfrm: vm-windows-sql-server ms.workload: infrastructure-services -ms.date: 09/21/2016 +ms.date: 01/17/2017 ms.author: jroth --- @@ -43,14 +43,10 @@ In this tutorial, you will: > If you do not have an Azure account, visit [Azure free trial](https://azure.microsoft.com/pricing/free-trial/). > > -2. On the Azure portal, click **New**. The portal opens the **New** blade. The SQL Server VM resources are in the **Virtual Machines** group of the Marketplace. -3. In the **New** blade, click **Virtual Machines**. -4. To see all the available images, click **See all** on the **Virtual Machines** blade. - - ![Azure Virtual Machines Blade](./media/virtual-machines-windows-portal-sql-server-provision/azure-compute-blade.png) -5. Under **Database servers**, click **SQL Server**. You might have to scroll down to locate **Database servers**. Review the available SQL Server templates. - - ![Virtual Machine Gallery SQL Images](./media/virtual-machines-windows-portal-sql-server-provision/virtual-machine-gallery-sql-server.png) +2. On the Azure portal, click **New**. The portal opens the **New** blade. The SQL Server VM resources are in the **Compute** group of the Marketplace. +3. In the **New** blade, click **Compute**. +4. In the **Filter** text box type SQL Server, and press the ENTER key. +5. Review the available SQL Server templates. 6. Each template identifies a SQL Server version and an operating system. Select one of these images from the list. Then review the details blade that provides a description of the virtual machine image. > [!NOTE] @@ -79,7 +75,7 @@ On the **Basics** blade, provide the following information: * Specify a **User name** for the local administrator account on the VM. This account is also added to the SQL Server **sysadmin** fixed server role. * Provide a strong **Password**. * If you have multiple subscriptions, verify that the subscription is correct for the new VM. -* In the **Resource group** box, type a name for a new resource group. Alternatively, to use an existing resource group click **Select existing**. A resource group is a collection of related resources in Azure (virtual machines, storage accounts, virtual networks, etc.). +* In the **Resource group** box, type a name for a new resource group. Alternatively, to use an existing resource group click **Use existing**. A resource group is a collection of related resources in Azure (virtual machines, storage accounts, virtual networks, etc.). > [!NOTE] > Using a new resource group is helpful if you are just testing or learning about SQL Server deployments in Azure. After you finish with your test, delete the resource group to automatically delete the VM and all resources associated with that resource group. For more information about resource groups, see [Azure Resource Manager Overview](../../../azure-resource-manager/resource-group-overview.md). From 939dfc9c0db8f40a578d60fa2aa7aee43ef6ed2f Mon Sep 17 00:00:00 2001 From: Sabotta Date: Wed, 18 Jan 2017 15:31:07 -0800 Subject: [PATCH 14/90] Update virtual-machines-windows-portal-sql-server-provision.md Updated list of options for SQL Automated Backup --- .../virtual-machines-windows-portal-sql-server-provision.md | 4 +++- 1 file changed, 3 insertions(+), 1 deletion(-) diff --git a/articles/virtual-machines/windows/sql/virtual-machines-windows-portal-sql-server-provision.md b/articles/virtual-machines/windows/sql/virtual-machines-windows-portal-sql-server-provision.md index 97cafeeec20e0..4b116acb0398f 100644 --- a/articles/virtual-machines/windows/sql/virtual-machines-windows-portal-sql-server-provision.md +++ b/articles/virtual-machines/windows/sql/virtual-machines-windows-portal-sql-server-provision.md @@ -44,7 +44,7 @@ In this tutorial, you will: > > 2. On the Azure portal, click **New**. The portal opens the **New** blade. The SQL Server VM resources are in the **Compute** group of the Marketplace. -3. In the **New** blade, click **Compute**. +3. In the **New** blade, click **Compute** and then click **See all**. 4. In the **Filter** text box type SQL Server, and press the ENTER key. 5. Review the available SQL Server templates. 6. Each template identifies a SQL Server version and an operating system. Select one of these images from the list. Then review the details blade that provides a description of the virtual machine image. @@ -209,6 +209,8 @@ When you enable SQL automated backup, you can configure the following: * Retention period (days) for backups * Storage account to use for backups * Encryption option and password for backups +* Backup system databases +* Configure backup schedule To encrypt the backup, click **Enable**. Then specify the **Password**. Azure creates a certificate to encrypt the backups and uses the specified password to protect that certificate. From c5a06d1bf2df847fc16337f8fa13f17eaad02682 Mon Sep 17 00:00:00 2001 From: Rajesh Nagpal Date: Thu, 19 Jan 2017 16:36:09 -0800 Subject: [PATCH 15/90] Update documentdb-performance-tips.md Adding performance tip to ensure that the host process is 64-bit. Earlier we used to block them and forcing them to change to 64 bit when using cross partition queries on partitioned collections. We have got rid of that and now allow those queries even on 32-bit host process. @mimig1 @arramac please review the text. --- articles/documentdb/documentdb-performance-tips.md | 9 ++++++++- 1 file changed, 8 insertions(+), 1 deletion(-) diff --git a/articles/documentdb/documentdb-performance-tips.md b/articles/documentdb/documentdb-performance-tips.md index c119e095db70b..68b6166060018 100644 --- a/articles/documentdb/documentdb-performance-tips.md +++ b/articles/documentdb/documentdb-performance-tips.md @@ -14,7 +14,7 @@ ms.workload: data-services ms.tgt_pltfrm: na ms.devlang: na ms.topic: article -ms.date: 11/16/2016 +ms.date: 01/19/2017 ms.author: mimig --- @@ -126,6 +126,13 @@ So if you're asking "How can I improve my database performance?" consider the fo 10. **Increase number of threads/tasks** See [Increase number of threads/tasks](#increase-threads) in the Networking section. + +11. **Make sure you are using 64-bit host process** + Though we support the SDK to work in a 32-bit host process, but if you are using cross partition queries, 64-bit host processing is recommended for improved performance. + For Executable applications, this can be done by unchecking the "Prefer 32-bit" option in the project properties window, on the Build tab. + For VSTest based test projects, this can be done by selecting Test->Test Settings->Default Processor Architecture as X64, from Visual Studio Test menu option. + For locally deployed ASP.NET Web applications, this can be done by checking the "Use the 64 bit version of IIS Express for web sites and projects", under Tools->Options->Projects and Solutions->Web Projects. + For ASP.NET Web applications deployed on Azure, this can be done by choosing the Platform as 64-bit in the Application Settings on the Azure portal. ## Indexing Policy 1. **Use lazy indexing for faster peak time ingestion rates** From 4d9e55e4d2247240b0b148878fc19fa96ea71fd7 Mon Sep 17 00:00:00 2001 From: Rajesh Nagpal Date: Thu, 19 Jan 2017 22:32:05 -0800 Subject: [PATCH 16/90] Update documentdb-performance-tips.md Minor textual updates. --- articles/documentdb/documentdb-performance-tips.md | 7 ++++++- 1 file changed, 6 insertions(+), 1 deletion(-) diff --git a/articles/documentdb/documentdb-performance-tips.md b/articles/documentdb/documentdb-performance-tips.md index 68b6166060018..6c7d98f620808 100644 --- a/articles/documentdb/documentdb-performance-tips.md +++ b/articles/documentdb/documentdb-performance-tips.md @@ -128,10 +128,15 @@ So if you're asking "How can I improve my database performance?" consider the fo See [Increase number of threads/tasks](#increase-threads) in the Networking section. 11. **Make sure you are using 64-bit host process** - Though we support the SDK to work in a 32-bit host process, but if you are using cross partition queries, 64-bit host processing is recommended for improved performance. + + Though we support the SDK to work in a 32-bit host process, but if you are using cross partition queries, 64-bit host processing is recommended for improved performance. The following type of applications have 32-bit host process as the default, so in order to change that to 64-bit, follow the below steps based on the type of your application: + For Executable applications, this can be done by unchecking the "Prefer 32-bit" option in the project properties window, on the Build tab. + For VSTest based test projects, this can be done by selecting Test->Test Settings->Default Processor Architecture as X64, from Visual Studio Test menu option. + For locally deployed ASP.NET Web applications, this can be done by checking the "Use the 64 bit version of IIS Express for web sites and projects", under Tools->Options->Projects and Solutions->Web Projects. + For ASP.NET Web applications deployed on Azure, this can be done by choosing the Platform as 64-bit in the Application Settings on the Azure portal. ## Indexing Policy From 1b626dbe3912f510da67169d4c5b39743626987e Mon Sep 17 00:00:00 2001 From: Mimi Gentz Date: Fri, 20 Jan 2017 15:39:33 -0600 Subject: [PATCH 17/90] Reviewed and made editorial corrections. UI elements are always bolded. --- articles/documentdb/documentdb-performance-tips.md | 12 ++++++------ 1 file changed, 6 insertions(+), 6 deletions(-) diff --git a/articles/documentdb/documentdb-performance-tips.md b/articles/documentdb/documentdb-performance-tips.md index 6c7d98f620808..eea0139450dfa 100644 --- a/articles/documentdb/documentdb-performance-tips.md +++ b/articles/documentdb/documentdb-performance-tips.md @@ -127,17 +127,17 @@ So if you're asking "How can I improve my database performance?" consider the fo See [Increase number of threads/tasks](#increase-threads) in the Networking section. -11. **Make sure you are using 64-bit host process** +11. **Use 64-bit host processing** - Though we support the SDK to work in a 32-bit host process, but if you are using cross partition queries, 64-bit host processing is recommended for improved performance. The following type of applications have 32-bit host process as the default, so in order to change that to 64-bit, follow the below steps based on the type of your application: + The DocumentDB SDK works in a 32-bit host process; however, if you are using cross partition queries, 64-bit host processing is recommended for improved performance. The following type of applications have 32-bit host process as the default, so in order to change that to 64-bit, follow these steps based on the type of your application: - For Executable applications, this can be done by unchecking the "Prefer 32-bit" option in the project properties window, on the Build tab. + - For Executable applications, this can be done by unchecking the **Prefer 32-bit** option in the **Project Properties** window, on the **Build** tab. - For VSTest based test projects, this can be done by selecting Test->Test Settings->Default Processor Architecture as X64, from Visual Studio Test menu option. + - For VSTest based test projects, this can be done by selecting **Test**->**Test Settings**->**Default Processor Architecture as X64**, from the **Visual Studio Test** menu option. - For locally deployed ASP.NET Web applications, this can be done by checking the "Use the 64 bit version of IIS Express for web sites and projects", under Tools->Options->Projects and Solutions->Web Projects. + - For locally deployed ASP.NET Web applications, this can be done by checking the **Use the 64 bit version of IIS Express for web sites and projects**, under **Tools**->**Options**->**Projects and Solutions**->**Web Projects**. - For ASP.NET Web applications deployed on Azure, this can be done by choosing the Platform as 64-bit in the Application Settings on the Azure portal. + - For ASP.NET Web applications deployed on Azure, this can be done by choosing the **Platform as 64-bit** in the **Application Settings** on the Azure portal. ## Indexing Policy 1. **Use lazy indexing for faster peak time ingestion rates** From 9bfd1911c6101b41ea33a87dba597c9210e3f17e Mon Sep 17 00:00:00 2001 From: Todd Abel Date: Fri, 20 Jan 2017 14:24:58 -0800 Subject: [PATCH 18/90] Added overview document --- .../ai-search-events.PNG | Bin 0 -> 30242 bytes .../azure-monitoring-metrics.PNG | Bin 0 -> 88667 bytes .../service-fabric-diagnostics-overview.md | 354 ++++++++++++++++++ 3 files changed, 354 insertions(+) create mode 100644 articles/service-fabric/media/service-fabric-diagnostics-overview/ai-search-events.PNG create mode 100644 articles/service-fabric/media/service-fabric-diagnostics-overview/azure-monitoring-metrics.PNG create mode 100644 articles/service-fabric/service-fabric-diagnostics-overview.md diff --git a/articles/service-fabric/media/service-fabric-diagnostics-overview/ai-search-events.PNG b/articles/service-fabric/media/service-fabric-diagnostics-overview/ai-search-events.PNG new file mode 100644 index 0000000000000000000000000000000000000000..92f56c15aaa8fe4c4c0b62f3b871b060f916b4e4 GIT binary patch literal 30242 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 z {u=H;IJweGM;%fl5{HyW8wkTMe2NV12gXtg?bzu-IVd1l3Xr$X8Nbu(`Z)jMv| zdF=+%K_U4xDYf^EJXZXOZfSZH&nF%KOssiwUhE-WFx@tKefAV^5Eg(hly9X3Tx<&f zjA(vK-Z|h2FXQ%7)(w{t138DiD_l*Psn%658#zcyz-si$hXCHleBpVs#B+nyyZml{ zd8K8Ofz% zTLR{{QuYJ7s929Q-A_f+TDreJuYpWZTT!x6;*WlMYmY@WX^2Ctj5WnDA2IDGQ61V^ z#D!NbRKP>+KSwo=H9T8_B&b`^0KiV8Fb82_-Z6i2Fj%6=G$EEvPd~x4gFbyxjyjZ*ujIa@X3~s)!*3 ziRb^ezBE@c8N&x)ABZ!b%uBySb7p|RU2-*AXi})k;R9rbQ70MaO$_RyVe^ zA96nqlrz}S?R7ffA`M*sK8_rFMnuO268 zitR+P5=Sr+?5=p2p`5OiBy30N-`+kr$-H>~=b+m{r72{rXwPm**(z~__J(L~SMkA* zVZWwz1tS>JXkT$%-Z^3 zv(f?jWT#jG?xyJ8<(5kq)2AGrj0^S>>jol6JX=cp`}wMtjmUeah!I`*HjQDE?8{tJ zQ3%#!?k7WPkE+|CgsQFgZkE~sQg5%F;974k8I#f|;@alOVB4g7ly=APV6r4w70pOr znjN1t5)OTNOg!JG1NCDU$r*Z9jHJ?YeQ$WbR`;4z5G2NORbkPMykXaVdaqVnj0sDR z%}~^WS=pi*o|c)*7bwP5I&B)D$Tq32R&kxO#bvDSWibRlvv0(@47&tRzui(~!aqIoeujNc5t+Y_3sO2w~Pl#M(w}%&pAECr*yV zd*(@KjF=v!~3auGogqdTEgsuHktT%IOP=RvrYUzbQL_-g?@{UP7c63H8Dhgr=n+2k6b)9Pu`W~Z^f$1a9w(` z6yoZ&yv?>evY8s$s>8-ejQlLZh9hM~Q!HeZx08^nU^VByRzh>nK!J&_Q5PfeugUTy z7`YT2HT5nT8{NusO>yz3Ee6;$RzviZA~zubww}?Nus-U|CMS-UuT)u@_QZ zi7oYY+sYhJDPF}UR2=~4K%(Yt{mo8=XLTm<>sG_|<7Qx6>>Z&GHqG@KYySoD`ADsP z&D=PdopX^2sl?jBm_n^)S?E=&U{H{iH=-j!+SY$Q!LTd z6$=goTU0D5Rh}(cf{F8Y^yPGI>hT8+>(o|aXTtqQxT9SkEC-P>X$_!$2)5>b7WFqFNQ>_{1pRVF9NV zKh;f2w9z5#d3Z1m4vS#_$Kmnr_^5xOIys$`s=CRx!gbp^$W>m23`TgQw0c;jde%~M z5@u0w@I@VfJshCh^O)T`vhP64#PRISwN2tXvses`C7$3rboLiWq?m`T`;P%$s}e0a z3d_-_G}bJ{$c(9Ul$tqYru+OI&GC}Fx)^!C*sh(i$9!*kg;@YU(CD0qh8}z`28fRc zI0Mim(a`iu=PlRJfpN%klxhvr$F{t4NXaJP;U~a0{w{emH|$AQW=dbadXJ% zSda5TcL9v&@t?y=^$NjrG6LhI>)0X0KA*c-o!FKixnOi=MrNePD{Z@Y5gU$R9`Z%R zazy<2jHdk3VuNTQ3QMYDGg5h$OrYt<(qF^PaM|tv!)l}Uq()Igd3AA7vlfxaQ)iGP z5D5T3XMia~m7J#FT`Ft6x=q6fEqw^a9*c%K%cBJ)Lpbq4lG9%Fh_Q+VY?j^XyuJLP z|I9z;TO)%nKr=>u4$qN|zKEDjutaD&RTjyUG%ySDQz%WsmVP?~L>d=$pH3?Wu<2h> zF+}2*Xg{^^UgPa zrfU8SRaE!wd;0Xb_wKW0t+gXnl%&y7h)`f)V9;e{BtFByz@x#y!15x$fqrs>>UIEq zfpz^XEe2CDPV)Bv!Aew76b7a`9`(rt5qkXANk+#N1_q=1?>{Uao!nO#nAZYX2~l+~ z!($MlF=+0-KdY&=m2-M_jegR!pb66|2K*Jg(+NwwvS>`~x|l%GvxXX$oZRA@WUEi) z>3QEd;p@7>No})SIGOy1F@^dz;P!FcYR@;z)v(&e(eaFdi7E6c6l}atPE1Vf=I&1F zx3s)W<~L!?20(igvgsDWtz>RaZC_GS(lR_ejD?R6jEjpqjYoeY?nsAqcyu&1IhoCq zkdi`>0RmlfP!U1D1U6>NU~&3XS6hoiPfrgJ^5L{+U}S8yMv#<{aAP%P13ZM7<}@^D z2HxJ>0HdR$U%ve3x4=#<)fOZ8)HF2R^G)giw2<&yxrr3$WYC559K<=?D*v7N@2bGY zcSKVEzJtC11K5NA_ZhaUXzYL1@ONa6QOtk80v-5lits;E>=RJ^GuPjV#5)21GXvnE z5BWb=@t^aPtpE3)8hMM4X0RrL{@>9(zXny`0^`Op>gwv;Ufs?41zJ@glV5LcJnHJ} zb4qJ#ACtuEhOD02Xh}&)tsR7(+HqhT^&l#hD;$6h=9ZQg6)mIql0#cgZmt906O?sDD_4i8CcSZLe|;LFL$Uz|Q>y=P_Zd?XFoOt-qt6l!`7 zzuhPj2}HhqJ%*(&I_{>;@&ir?zt;Fh_RupkOKWN>-5ULSnY78GsKEY0DRm7E@YvXO zcJ=i1a*4=WD=c1y<;BJPS`^Od5IA_JqcNWM6v9f$RYB$D=*z#KA0B)-d3cU)Nl1=O z%&3l1&gwiWC&t$?Zah35eAC+obiUp+tk+_l)I4*qky)`cbrhbuf784#3pz>Qo|~WB zoKYq)9T>-bjydDv;-cc^MQ()nP??(Mx_xiV$x&UN|2kfwv_{@gTkv~QmUfEhzzt34F_)aX&H(;sU)BTEf@wOY0Ulbx_yp6?@vF= zEiA-e7hb>f+oZf-#s7_mhm3~S+u}}qeidlc1&r0h!ov$1j$$Z-RJ}ztZ;nlGH0?b{ z_@1Iw+?o*Ih?(iXY0>t$9!|$t+EvvA;1%GrvF=TG>g$tSc%9{#*uHLDR|6B1kpbg{bt39r$W_$`Frvfqwl5n0-8(rvVPRqC zx3}bN#@f}UTp1Z8?0aP#RhDZsz5P->^Zjr5_`LaNROo{@hDTWNsD|HSn07hgQ+}jG zLo^+Ie0+=q8_}4)$A0_Png3BmN8^K7HwMTwVP&v$;N_f{bPQ7Go*tC|?3ZFs@c0Et zWeY(2JTtwyw-=7go;nCrOt*N(ZhHC_U1dAQ|FrSQ(=#%I(`@Q>0?8^AGd}z-J2*5p zLl~D@OsDTNBp5@=fs!tfs_)!akowU%IO02V6<$yD$m`XMuXCRTK~78I8{gZ)Eh~{` zf+U(49#gPW0uBX$LE=5@gA1X@$$H4>sQqZ`hM>BJW?p?c9(}8a+3XM<{-8`#OH+4$zh>XpKGGq4@B1)*jxKbhhzmzYMi)5fo=8iTV3Wria|9%$?N}|tURPz2AQ6!pJ#!0-$e*I!2@Bp5~A8C28vl*N3adEi~xQPZPr=u_23K?t|6%`c^pv}n0Ll;#w zHF#-k)XhsWgHLpy0OZ&VQpt^V0&Hxb8ctXrH|SSTMg3OU45SquVo~4%Shd%!erk=| zJ6Q%pa^iX6Ys1l_r_y3tTKGXh=hxSgIyPx#J?OPois6mO7$HF!$SKtQt11b9`17iE zg?8x|TqL}jTBw?N1%~VO!)0-3jq9FHc25fzDnRY!{fIg^2>#zgrhnICn3u0_&)l3wpok_k zpu2&}%gfi!0A-6SD@S~__4Sel1|U8ue`71FqJfBiG6#TdgZ)x)Z*MR7EwHSN2^S9! zys)5!P7<=I9t^Z}b>*N@{FyJcf5A2z9CWhW>{?W@=e6R&4-P0SEPO*H9j6|WN}8OM zl!PJ@5*8PSf%jQfR`&ej;vit*Z|(!k*)B#9S5m@&CTQ3sB&*MHV5h@R-~*qv69p4I9{lSx`Pb5l2W_#e!Vlw4;B+&pYu)j*~EYTwSaG6Sfc*8G^8BpAV1JkFdUQN z6JDm@L#NDAebM8ZcxtBWKH*33Or=EP?PRH)DOXC%j(ei1@5&&~V-tF3Duh?K`Vto>>ep|Z$ha1?Oe!!pya zLo^eenA?7S4*|*4*49>4PmlKbcyc+PWMyb{SPJS!ZUvsz-kZ`g3KTuE%4Y?BT229h zR-VT%ddw1827VP6H$8&3tz=*g@=#BjA;gGzHvvebovvd`Xt(+g)Ia0{;p9E#I zcX%Ip#Euc6+@0T>PQ5#pSzmh|uU2E-Vq+B{=jP@{+UC;L(}jA&Aa1@_=mR@92&oQ; zA+@))?OuO=yr_H?EU!f+QK+qL6!)>D(Ja%AMXBa1casUce@H*uiVu7dFbsSo6}&&Q zs+N3s#$(hnJ6T4b&bm3<8g3e3P4O#$Gp;%(ynRAt-Of|S_voC#q-0u8*_->r+A;kM zlw^atUx2Q~Yi7cBol0iBINoRD+l>%R;qG6KtgMx%jU5=$IwaV`-GeABZqApPAa5jpDP;^I8hMdoFJWfLlYF-7-S%gW)T zmy+TpnU%ximXl<8=>Drwp9Law5 z`sjfe+0N>LTX)V)d*cF5;~BLZCnxUbe9KF7k)#5i6ck?o0e-iblIrG><;xKW2Y-5~ zy7M6ok_CeByxF5xg{4ZluW(Fn?)_q&H!6N$vpPl@POkZ0Q~8NN(#1_HIVFbxDx+4VxTpy% z_m_1h%tPI~hkN7u%O8s^7R1nOGpGMmm|Zw3I{G@O{Ywu`nNFi&Z1s1c$4M2)R~OaH zRl`idMH|5Ja=TXN%=&sE=I%Dv6B;dRQHk*e^5D&h05%m|MsSXL%q|baPg%Gc>`NXH zgHGHy$kk4W=MpFt#T$6`9A9PH$8e(FT)AnIlZ*#KaQg0dKg^}wWX-;+zozoR;pI`} zH3SHhf)-hpSq`Kz#>NDxquD(72k(JGMI|^mTN>8Px^?PBrD@6TM{(w$Nb4W23-3X% zGzS91jKl1d^r{Q;IrZvf5+ti$*X5pWh11}5SR)n#8jvTU@QXQx$FWSJaG}IXtiB2GZft;kDqG?;T}LO=wg=+QY$xsV-7APn;E3-(#p;p z%$#3Iv`6q$QGaoTO}Fsp-00fU#jlcg)?h1Bdn;MULIL~$v`FX?$9z&iidkJ-!|(;x z1gbk) zVpQVM)0uV8dUK{M>13QBys|H*p{^gn1MwlxG!1k;7tleFu4Z~YMas%nvxjf^9Y$dE z!)gNKdLxH4YH59$h8{7VsGGZ|_IY`w$oBy_<+ z9F`f?+cAV;cX%mAG0m>y-O&B$mh6}q@g**E^1Vm$_;=9q&_~x@8W5jA#p){jGGC=$ zr|Pn0NO<5iDk;TbG#L3!jq{8pX~G8bXE*iGGDjw&L*l8$)zIl07p^vM^t=1}t=xNp z_eycJj|H_88O+apP6kNv{&9lH42-2Jx}OWPcTGwee0Y1cD7aGm~Sz}oDw?iU3u^WE(+qbV~IK5+(LX) zGHw%2KQR9Xlh#pWU^fE{(Yc0(L0_S^_tl%HIk{ z@D*^FJ>dFFhDz`6laSZNSY%UtPfKGAY%QJ6!*=R%U)Y$A-rep$s!T#EgW475W= zn8N5Gy}bzNln2NA)8TxbR?IPY#5l1WmWl&4c#JziZSpHR+UoggGU}da-^duUSVK0w zHe}?a(|_xl(+(YsDjjGGwhOuqf1@JgY`YgW@ULikdM9}PCrbv&V@g&FnMLY!ChPTz zEQXBZv-EJ_%M7{MXmR3N7MTDGONHrER?y>FGpg3`3qdrv(|H7+6fNRM9B8Kfc+$VU z?P4eJB^pHEdex+JWP^p_<|QxP`K3oHhE#wkGxJntJ*_MRJ1FQS)pg!})uqS%Zph#B z$XQ8Fri)9{4LVdgLACA)VD~V?7RKQVd$_!d0KqU7| zYCYC`aHBy3OK>+6PlQwr`hjdxanFJVe%5yDk9p+p85qPIT3Ni4KQnnXwH_FwBE?+! zd&k!`)|cw}#V%&~Wu5+V%W?c-6C9EUf7}x581;^rJx@>9T<73+WqD=R(%|l%GPV&Q zWE(mzp^(N4>$&O?y_{azaZxy4HKUOXzss*ece3+mP3q-Br~9nNV0=6|=)KPn+e>`< zvu&T8BCtD%dpu(1B=d_**+9>koY@q^K=e9q-2|UJIFB8dalH6T zO?)(2;`g9UL2(4~k{rS3n`21>hxUFQ_3tS;O?3*aHS1IzK(!<_cVG}HvVs1$zAi<1 z`30r?@^IC%G`^xO6ebE(a%+>l3E}q z>EKZ|8KYkz2qa8^%+%~Wx(3rG$MqW01Hv?)b*g*_JsnGbrvKx{2Y>M5l-aD~_ljuM zMAaHYR?>2lqKvd3A`GQ-ap=UMVL;RQt6#i-Ms<+SZ_ff=okr3Ag77R=_I-PnQ_n`36Kzj2=`ER{Ei`{^?s_huF#=M0Qw3SH{I(@VXPu(SkPa?2%iyLfDm zaugozjcApB_FO?_gK?2{J8Yn*uZZ` z2buy+CVymlWA*e_ohho-0@yFHe&eDLON2y;j#jW#)QHEPe@psA1v-q$Gj~%gDJlCF z-U50V<3)PNy^t(U2B4WT9&L#yoXQApJf*+EQD%t!K%}#pS(#NSJUPP1P#^0j)7r$} zvp#RQhTMd~B26(vvtr6dJ@+1+>q{0alRb{KnE=1QEL_e-SGHu&0W5s7i>qt>=kp7q zJKEf7*TU7O3(B~qoa@lsv>^HU?_Dty&bi73ZcJ?hywL-8=~P5dF~SL)#@?8cQGlDP ztI0D^NmUC+>4+NVF{IN7iQ<8O{TLI#+O=&Wi9;!4HI_)nim5z1zmOyLKpKc0i>oha zNm9O5S98r<&9V2mKJ7h28skq$u0Ud9I>~L&-qtQOcm1svSyEDRT5It@hCsTIS8v#> zMD8GcU)QZ|VL8#5yuTw&ER_{%C%kKe$-;3u=e#Q;gl@}Gb6i}5gM(sjZn#fH#&-Z2k$J@WDV<)wkA9r^1OxI4BFk zTQ2ZRo<#q_j&N#<`e)NX)39*DmcS|+eRy`ouisU~+O?s+0XzZGLVB1b{=_X0+x6ad zdBCrtYRvD2Bk_%cPR9VOiZFzCM$|Xu^i`0oE|&SmAsU4={B*bcxW^!#hZ2EhcD)P>ekzh zu+oubsb=PX{VFN%w6LF7Fg7af+Yo%Tc_f~|pDErT2G(wyfh4?!#F>2iylc-t{8u&I zW@d3yIa(9je=(aPDvySSLzgeSe1Pxr@BWPJ?(NwLy9yVh0o4%W{;O#r zz~v8-FF?0Olh*x8>#D8*;HhrLn}W05)3s!VVOoBc4fSBtpapJ&lSLllzaSgiEQto1 zIOq*BK5wwnpiCj^9FmaNa?22BJCeQTF27g zMbQT5y+ezEv#M+MrXy66wEpgD{?i5=my(13cjo_$V3fwYQV1Do8$ELKf?_BC`7{oL z!{YDBe~$j&sWn*&fCA!zV{#7vs-WZUDyaw!VC6sa^bCz=PnSU9h|H?G5|AlVeSJgs z)RgMNgx?hu>$$ug(#nqfVJRTcYV7FfsQ~X9ROs+l6?*PT|H7DbUfuE+q9~ zz&)m!44*U!y-Rl7K>4C8`17i=o}R$cf}>GVP5FFX$$-ncj|=4?TU7^4{K7@U*gscc z^1h6F${00=OoJ4N^8wJ*ae0YSrdx}TGY~KCrohSVu*}e}MogoeiHzjyyH@Q;Oyojp zig32xPM|oZI6Z&ik{w^+&{B!_W3kdu zg#FaqTYE?~d?Ge>L~QKm#A^rBc0MId@Tclei5CAn1gG51uKM=Hz>v*Qi z`^z#bcRWTULJJ@6TiXIBWxkVhjxuGDKM0HLeym%}tPGd34hwZu{R>(zl*>tp$o8+p66?f+$|y_^CW8)78{OYi!YM>AJ_(WcO+VQW@E$ zkge&D8SG|6tE+1*E8y#uVdr`h9PcDZ)p7in=%egSn|mQXKE%Ec1-xeSXnY-~%Sxvr z@q7~>Vh!XUnT|Bgj9x9Nnuz3E?}W7$KLjoh`Eoifl&usm^b*!uMp2wbb7OlS@z~G* zPLhaVGHRAWkfoH0Cv!gc(z{XCWIEcYzAub1Kb;w3_^$ygX_f_pPr*n~0HflAp`qa# zxj$)~8xIf9t)2aaLC2x4fa>aGP))y*TZGBJu@$QC^3N7^2(N&^5#7T$s8v;07e$(u zcJwD7sqf9{K(MmNK(d3t8JB;sk}vdY;zl1_lPR<@7u}m_{u3a>+|? z1*#vS<>acYhd$~!qWC@gsi^A*{~pmiy#4sG7K;QIfrlr$dSP)fwBT|{i&4`Q(!qK6 za2LU@Urx18%Cy#YhHmU!lr?Mpsy#Ko+i zaSj3=hYC{K))7Q)e9iaTEq*`9lAeFr3=WThe{vDee!acE2ERPptR1b&r<1IhLwFq5 z3y)Zs%dtWNs9anzvfFaSzK55OJ254j_4?b}+DnO=B$9;VUDg7GYlNY^CAL2I;E2Fi zW#LD$l+ub{qIvqPrIL3$q=VAdGF2oapKwPmez)A5%4_`AWqwRaN(y&aNpjbOlEfQLG@ zlU{l;e(IBt8*TC-mtuN^>o*r#WwHl^z0I>_+W)>RSO-LiuE-fhrSr06tFa z_cdR0QKE`_Xkzs{r8iYc%1u3==-Q?oUl~d36p(Lz#?|P+j>dF+Pua{)vP>Ko* z%$8?|2Jyw`Wn-SICRHj>1d`MeKtDokW@tt_8mKq~^lm+GPyPQAq_(yteKPjH8Tzp7 zq)MOGX{1_0+To|CIk3pdkq8K^a0eUa9Tr3L^CdtOOKEMWD}C0UIO0EmEzza5M7QcH z0z0+3?DItF#D78dkL;&JL`1WAjQk(0k3H?(IBO)C z&Qqb-XLQ$Kcph?e{Si-zv!R|E?U93K$f|hEOSPFa1)~7c4-E|fhb1lw3d+>%DkbI7 z*9NQU-V281&!0WOqG$sLYDHZGD|&r$4h}+^6*@?cItvllJ&7!)rSeKN=%X-!A~A$Q zavhA_VsVN(k_8dWjxj`O)C2tR!j}SJI;yJdKP3~&5^pY2e++qVa!D?fft4ajS&M3o z_xF!gcxta*PJTx?Vc=jl%7$(ox)bj#5>QYIk{leQX?M8PXLbS~r0`m^nDxtU#hhi? zw@l5983zXcjbTw5Y$PC8Kk~(uWn+ggQ~?deB(H1Q@LIIA8SJA-@-^ufe^?pMcYs9d zjc#Oa*9WL^RhR^M>3KU-?1{EAjnUYg7Sj?61XRM*Y%p`Cbu&%o@5?)S&+{&%A1j-y zWznCYelW6{pF~M%e6fR>kd*VVugW1|!sdM}DF+dhT9lG;N+5c1d(JWbg(c3zDToH; zA$#ts&D2RI4QOm6;AjRRs+0;p)Ajna?ZZ=w1b~>z>hOVQFPx+Xw|}nZt`XiK8jluZ z(=jp+R2cX=e?oITZODqq=9Wp_pt z86%9m`1pF8?hImI>V!rS_eZJ^u`4P>q+G{*^2;bwj*Ev9WaBDMG+<37-Dr{p8omG= znz+8Yp(G7+?95U&Y{raO3KkX?276xOcUV|oKk-=!CYu$+xe(fJgP<+K&g2R@U2BUVG%e@lHN#g@ zFPK_*sC9Cng-YeMhPTGqx?U}hjggL<-jx}2iW(Rl_F=`vM!tiul}Eb};@?(bkm~p# z1;g($x-jn`P~|U;;(|%?$;6qxyGN`q8*|d#!);Jr0!Df^Ei4kU9nHcMWO}tnfNQ*T zsj--tLD}DuWe<^D6W~pnoErbl{PKDQj*p8`Z;ZRTLX(KRkhjasT8d0~`@`Y$u@iTQ z7^R>fZVwKQ8*bLo$#?gfa`sChlrZN!>0b$N(NRUEd}z3%ol`*Rm1(I_^708kK(RO6 zmRvRF-?u#6$a}kLU&b4zvV^sJVPl<%4tsF6fAhBdV${^stU%68KK(7=_DY}s^!zmY zAu4a`p7IMIdgJ#=nEDcHOQn--f8U%Wx;%@x=da;mhG(*czNJ)_`=JvKn(m=>(Kvr$ zjKK@5RySXLsTWm{)bNW-C*cMeZE(0)x6{+P?nRQF9puIBZrHu+aZtR19Ys5{6$-pz zJHIeo{^gP437FJx`P@bII`k1*N$r(_?KS_&CzX`qMm|Jx_pjGz3fBL^A3Le*XjNI6 zjy#UCq$c39y>rk*!rJ%}Pl&DLREGl(xtyyM-AUdy3W7ph>eT4*(z4Ec-#kw=vtA}Av3U9TDCN+s`pu8mQy6lo z<_Ezax5=`$jkn{&^}SUr`W;WU8?Ve(606%bW2_ov35@ zcvyoN-eIH9pMlBq_*{$kLXP7u5!T4K@E=)NG}pdCugXmz=5Y|Gx_g_;b{3h7x><;o z{gay743{MZg)jz{G@2FdF~+|6rAR4_`tcxlFM6*@rh;O;;$oQupP0(D8!1e( z&*}S70>R1s-uT>^s=lsO^uJ*>V(!C1Qw_B$43nH)mm+!cun|7}`8J0*8_zoG>#YsO z$Eb8SqOCSwEkSP+7(WC1si}C=Y_Kf3?NJ0@tR;~d=Na#?G69i*fG-~MDy|i(b(^!! zbBEtTVt+ayR3B+YPCPQJv^DH$=UWEXM$J>YGhC!u zFsF*OgNb>#HT z*LAth&t9HSFZLo{yf@@eehiyOU3h;q*pb2e0jy-tM7^Atrzq zx-%%lnJ=^9V!bXP>xkNK!YB5UYTOO`$QKvy>1(H6=U;RaO50q8P55DWxUxC3q3LXL zORJ)16>@JV+c6}n&PV-`elV5DW;9&ajr!Toy~@^)($pSYvF$XYd`uypM5VK_b<+76?}cosuQ^ z(*sWFf6MS-@Upl#4FI|EfR22w-edEVgTPNoQiN8%_k(LSPl>&7#AEI=PFvA|M{$E^ zXvcFFJFcfhue1KgFEJw=35)&xm(Q7R+OCcFKVJIY{+#_WT=Onl_NF|$7*LVhfP#X` z#pZdLADN78q{GH2KyWngFsq9;D%f*X$z3CCDbRBD?LHjw$|XPbM=TXpH#QHG6nxCm zo1*~imLRu?Vi~3NSSUNm{u=zJP6-Y^7M=DD+2f25@SockVp3d<0^F{+vJX3z!tmfm zcB>bU2p7_CEfpZAA57~Hu(06ztJ}!!HuduIq7{kqE~^O2ipLygWJpL%EB}$b zqPvoqo)SJ=r@#*L%=v-7l$iq+&2@xhj&3ICvx1X9IwkVzssYyrI_WDrbI?Ir+G3{& zY3!Kd&(6$xxKtC%`$Mk5;oi3E?p=lxg(%pR~m4O1~H2(Te3Myw`vF{gHjVG%+*tEvBa@ zX*Cq+==)iJq^e2Z?=3-%&#F`SSY>x6Y`>P-9r*_Dy-R)FPW_`cmp|hUONfq@N3cTLWDG*J;j>lI zoHQ*Pa*h%~?enhL)z+*>W*;nxVmS&GyMGfHAsdl9sxQp$Hw424vq5=bJ4R}nULF0| z7JltE-DrJhxUZ7aP{m>l6xPVD%O~mR=xAAm*2SEC$HyF&6!h${97ReqhqF3Me5UIB zx~mEN{F^7+1!CZp6?t?;T3UI$@DDncY@Q}YZ1#ESse8b9W&alvB8_7a?f%FlZCKGMEOp!RIk z&j$WN&|Hj*8L#x%$HyBy(gVed9Ox=bW=lq@*{66PN0*vjT1uT>yj|IDk2&gFuB@_{ z#ZH6#KnB(IwP6mPPhtOVIVj3`QI7JaC7d&Is?B-Z(q36fv=}*5Hi_mO$FJW0!!ne; z>AJbT2nr7mM?t*Kdq=UcyG!||6|+B<6rF%Ty6tre&hP2K%JiIrR}Ueiof)dKQPtE9 zQWkzDIRTygTpNVea*WF#vzH(fm}IA4&JO}aczLm!n~@UQ>@c-;mSuY*$Hmk&N(FG? zD?7F85TJle_j#|EL}<9J$A|t;5|ThWSf-Yb4l5mM%R5oop91|_oD$pcskpe{p_`!R zwEYnqhnOn38=H%34jF4IhvR<)`Lcrv=Cb@`yxkCJpF+peDC$UR@ZnG0y1It0p($A_ zd?vzBdv&(Sz>HJr4Dal8Oe?xO|9%XWuaj%xBRcbAx!UNqPXfIBwh130+b+rO^|r?_ zwfGmb19wNZN9uG=I^$9#bWGh*zf0M_JXwPfZLICToh^fB)EdmJqQ~?aa`NlY_A>lw z^d%$M27gixs)fR@80cwL!T~E(%4>xBLwH;H%^)3a$17P;^1DVbM%a@4Nv6CMPB;DL zvLFA!oOt3h-L4kFVF&_IdMQ{pX z4^+(Qb~6qYS@|;m8+Y)P7@(%q(`8AdFVrWK@-&{7&~W2%_jpfsUA=i6rd_#KOAEvq zI$#0N@s5m){B37&&k=CFQDD;RK+)mjL&ij%SxlR)L(9)U2F8M7+X$lQnjtAHdKf%5 zokhsNdjiAk|FaJFh zN($fPNyn-;wm$zlkdc=k==-y`c{#!Y9zB?mL|8c-?Ox@xirRmExORXh3q^1iWA0v- z5HZ2J6N@sI^>VIMs0wh>457#Q(=EN3HDQMXuiZO*q9|FM0q{B)7OJ>BzqssP_qQQB zo0(e2ASWlkyMHvjKIFPPPeNp1iHee|a$AzaZX4h^GG)scRj;2lv-9R}&@j)=S^EY% z;dD7YH5WAd(@)6i2j!c%-U08Ui}Ra>^ScJE^PP2Nl{udssE!esHvrYaZgK`WbCKvX z($h<7xTBA!`{JjvH8s^C^nLhXZTqGBdn67QFvun-?f21i^xly@0b>p^luJ0u(-wZ+JXCCK9Tq|v-jI;Z(_LV}h-P*{Gu}**QeOnNtk?aI1+M3+ z%0^6JUvG9v%^PyRrcbs0Vd3HKm3_v%{@Jk2)#j|zrLGB|Gb0g^xbq6@s~^>RhTgOu zA$k*6)fqFol)9WZXH;(OmYga-?ndnsrtXkqYFT-%V)=558Thw~K;@_6k!w(?-yL#o zsh796d*`(~uglQk$eW&DDBB9!=4W0Zncl4D0Td*^MAG2GbmXb2sby9qVX;W@BJ(#R ze>S8LcI4*fCZq!5@0zsTRf+J4V@-NY>$~|vve1Du=+b%u#}z|8{ZVdr{JxtFp|0#g zPQ2O(SFH--dK|(NkeCxZLMK-zU}ci@EiHuQIP+*Zy*if;QPBX@#J`KCkIRnd!TlWX zz}?We75&6a_ob{?(beFiN6x^!6+lbjDWqsBGV^^J|CiEeHE$>4K`E}b`)EiNuD z{HJza#kJJzZwd>62Z}3ktq${Nu7UIkcRYc6+;^>9yb%6B(|;UsqRn{MvgtNRFS3p& zE>fPejPs>=Uq0?yDqIl(8!FB$yWa{?UP65D?Jm-V9CK?5FnIb#!AW_6+1C;IR{MsR zE8wYqGQAQGr;%jZspX}(6xwHi)m{7~GctCnBl$dH_`uVBh z7Wx2nHaW5yP}M3hfq8PJP|-FMR5aYx9YSN43}&laTv^P?Z${}<2tYT&br22qrF-E& z)f`0u1T~D$90lYB*-xl?VZ(z=?>r+!CkgZ`)Lw)dZiSxIByjn4*?8Pg*0b)v#%%?r z69N~xca6N5eG$oIywMHgD!fd#+Icyg%sb&GrsiQ8<<*?_=B-rbKZj)X8b!UzwA*u5W`3pj+C=%KyMnu<5r2r+Y(gLjmk-<_lE@ zId}Er%uIO0xQAa_r@>7vVlBKh#o%1gV^W8XY8~oA`4h+C%FpxfBuOh<6GtyQD`B;8 zB1?B9hU3~%pR638{D)7Pm|Uc8i~Ro>-ViMloO*Wpm!!cpQlbYb8BR-ig1D-tr%2ss-Y7*(MkGsi@!)5fSNFSjf&b zK7S6ry1ELXs`-x#_rsa3=b~t)M0F;k0349MCGe$%x`d9B*>+E7-w5pH8 z6!x0)%{<8`SH04x*scDcS}gyh`~|#WZ@Yf#R|MWAzU;z+oJSmEv!ww2=HvLLFMZoy zEbfW@`U$y(a!mrf6vIMT*X4@EHXJ%tXh0k=`xqNk9#2I<0Si^G!*>8N$t%7PTmDlK zK&a_|=qws0#zh9b1)P$?diq*@ZrRQMu1pA{fch2q4N;t<8MFw$YSl!Rq!9y zPR2`FgIYlx{f~Y7WwO=C$WX5Iilp8cfW|~p?`c#LXQ<6l{hxSzu2|J%%t*HUg5p9v zjJ0!&C_;3(&^6uoT0dKqD{N8OfVHT1j@%+rrExlho}F z&j!G_^%Ymx=q<0SGgB?Ws)zD}t-PaBqmBJvR$li;eQ%R>=xp<>RanADQMHlY(?zuB z52$QTTdj^5-PEa2eJ3Ju6@^urhqT)A>-n$Y?x(T4&T`hR-MQDUfo5V(s&}_mP}#;9 zn>nqNhvLyDSCY1Cj#boDZa>O*P7TvgE$USg1C?brmnO8@PkOcvLHH)oPS+tJu|g#~ zPwpPN%Szbn%d~Q2{h$apRIC*^N_^YN*(D&Bj&N_Ebewd!Wj{0p5}#m4eKSr{#VxKe zmoxR2=&Z8sgU3hvM@$Z*IF-j zl9Y3ci)CIdWBSelZUqEy7R~NfATNbe8|^wRZoe85bGxBsKu0uZ9nZFruW)~e-fOs# zeE`|n?=nIA?~mr-sc|xsFE36FuEFUc#JNJjSWNxYGj1-Npx`Zai~5LccrL`j%CUi! zrBao(`C{RxBe|RR-9j*5Zj?;D$X$j^*lUd(1JOm2{D zC|;-cUQCjct*Tw+2Fm552@OyKcThB3}igqvWD0+;J-QiXiEx$PIf9v|C7b&xiOi;C&ozk)i<1~7J@%7li3a=peVES>UN z7(XaeNXgBOpC=tJB`1dhEo`do7Fhhw!AJ}!0JrD+y{zrp3E>$Shl=fJ){e>Bj~pDB z;|eO)oZQ@|-Jx%n=XZ9@*XD!Zk<=CZE{A9t0P~eb@pW~a$4j-+ki4o*?qnvN;J#=A zI{|2lzv)(xSF0uozi-LFI{%SZ$8}8^U8a|9!dS7^TW8h{-K#Lm*WE6}a)nPLjqE!@ zAbZUHJ{gS|ROw5)GR!eMW^1{DTrQ+K>V|1|X;nPp~=hPeN$|y$1U}qt^@S4&8=#%CEQHG2}e>o~zF3 zZ=`OK`ha;X?+ph)9`1C3J6Uv$}`z|(*1?p$hr7ME^!Vd^ zdn8=z5T7GvJXF^9t8YhNjR?jz(cgRD)bGF)^qP8wKwz zE&%r<85!9_Zp4O9(-_aX7kp*MLkY{w>}>uCC$tNh&TpY&B?8(Pa{%%7MmnDtINR)r z$1moc_|a(;aDp!QXEjkeeXutcI98kYy_r(X=4=&jERY1f|u#I$$ZJY-~ zOJX9l6tG206n7UYfqcI8)fyx!#@=@rJx;r zP71+6R2Nr_8BqN4X}^Npcx3*>>qkft4v^kg2E{HYO?y4u8KDLlM6K{D2SgJo1DCIEBL^8Lf}l0*>;chvDd+c_{*0s5z)~- z5!h6mIJj0H=v2^vj_`&(_lRMOOk3^hr|I)I-1grfN5n+XHm-=mUHme=PV5;PX_jj4@XJ`mT6c)ZirL}%ZucCfq6Ini zgfWs(coTBe|xvUSYdxp1g+mhOe z9wkO~9B@K5&9_sn0KAk#Fr`rK9zo;!oe;E7a`TY~@-;NH>GZ=xcz1B#B`N{SEVi#5 zktWfO8)g@%P4lp%Fa5GL&JTPvcEEFrQ;=NRMh;xfkARW-~R z-*Innkw7~+ISQ3EQaYdop1P(+X|$21M@0lg==}Q64_|xUhLgoeE=n?8U0o=@5jAHw zKjeOltd+7|sqMhqZiClDQ(pLKP2%T@o;&rOc|p~$cjF#6KPiTyDr>_n*XczNqZ-*Q z_8mRi;*7rdzttO_X@MZ3^nUt+N8x5M$~1~B*IjxrQq_0}Q;0}YQa!4k|653Eaa%A1 z`*1f}24Y>_ety-#nm`+Dk^y0RUWJ6!vN#-;aADz<*RNeLvYM$KQ_xw`d- zm{sDia~eYOjI9YQR2FR6U+k8dPR+NU!YM|_kcj2g+>OK}a9fs}yHv-S!{BcV3LW+l zRD7)jghi?dU)TT8yBtQfLP&{<(E*LlXZ=OaM?V9%Fozrus<{D5QpaRa_b+W7V4TF*v19c+Tz1Z!IXaubwp-i6SO_l5b<(Yg;=ww*5ET`r-{)uiK1BnC z1jPlnb=FyDS;}V1`V6Nx6pOrH2(LrB&7CY1mz1EfsTuyhJ}51#!2EgVqqMvX<>eJ< zZ*Rkhq(r@EGcvN_f(!Y!zLg|478JtCJ{1kX0Cv{qZ=-ZnxXqb=&G}#XqOn#A(-r!@U>^v z$pVA2UrJkoUyE2+pT7lNcFwpsaw^!`m4(UJRF;mLeOwwfUE?Ks!kK^tdFzo{TZmv+Z@AbE&RvbMFpuwgANH`rFUMRZ z-?O;)?iUfUv2-7128~3#XPE4F8kQDp#}55P1>uf{1$mos&&H?lUgmOC%Dztv91f4}YwCDmR;OjfDR?#G zE40aZw2^(kLatdKC-?3p42EwX+QYQ@k0XZRP-n~0_|VXhJ`Lu+rq^g>F;;*AAR;2- zV7vnx#Fy1b=V&Pff~%{mj_C6{R*}NLIs3rhIfKBzDLS}LE=M82nFhWnhBza^ZE?L6 z3tSK3`&^!ee{gWH3L?%JP^@s)gRmVGG29;4%VoJ<{Aws^>^}yom^k6qU?z*ri&3%$XbiL zakha0(TQGRI@5smcC@s%U}1p>5&0MB?4={<);NLwsBLRN2cPA(_Gp&2b#%96N_Df+?xur;)>~~IG zk(`gA%d*A$Xl7s%MtR4GA?1iE0SO{>%)pJ|~WNK8z?<(FKH5yKO4;RWX*!0*KPqc^m*h(Ti9^-gx^!o$(&Rr%Yn zAaA3-dZr&`zWe;1{d24>c|I-JgED@cQamXP`<1L1AMBqTPeFy0eua7cV%9 zfmR}-M~&Z;6pnzO5i~-6I>FC9Kxav4Sd#pPa(M7-NdnV2epMuFDV{uFTTsVut z$x-#@_7+r$flnA1+}_oW5Ep;A@>qz$4-p{DF2um%P&XfS^XXYpxi2n>oQfc4Z`eCH zV_w)K%es1zT$zR9nnE;+asFA}X04$x7}kq8EtT(F5HabnSuHCqFmQH& z@c-M}zKjgd7ayVd9U+5KM_zuc1y#vgDb+6q%xhP(NTJ?RWj zFYXe?L`x39EFVl*@gu%efx)b8! zd(hA(45X!@%b?hSMv2?HI`VF&hxwfD8u1z|dWd_Y0xx58dUC2fDy9(4TP;C#z5O(LzI{xTOmB z?s`E)Lkhf|z47beSL2R|xd(Hq6YebyxF z{fW*#@SFYbXj;n)0>|Nv{MEQT zbQ-=FK1&VS{zgUFI?MSS+GEZAZt85sTLo+Jm$VP1jrRC?+$GxPPm4Fn#lfU`+}HO@*5k$8WwI3;TpTBeYW$F)OWC^Y#-XtfxBbR$2~C@is-JxZ9ASqfTI`w zKJsQge>~6J2G`G@|IJx~SMyfjh4J@bhHoN%wf7CYU$71zO??1yZXqfl=;GurqQg$U zk=|I0i`G4cd*d#`Ph&6on(@qQhVHh%+WRKfm+zBz=n@o!=f>ULecmniDBIoK(S~cc z{R0K{6>xQMgpU~R*M!Z)xxS+j;NT_SJapW+e2d(VAIrIVJoO`77cvvSNVrVT6W8e= z*KuZj5pLM_1g;33io0Uw;TL;e(S#-c7rp96l`Gi2SA!Bzi{S&m(Wbbe}{WJ=M7? zxgOX)-nYxjcH#GO-Cq?n4L=$-56@;V#@{kNK}&lpE)1Q5-^(=?>Flrf&(Wgyg=}kK z$rk)Kdnv-4e39K$iu+_c7X``wbboFz3^ly2=!QJl*ku+p<|M#T2R$1M-(`k6=$Q`% zzUa0`7r4{m#dwJp+YT%!+=RTkLO40N;GD3Dm>n_-HV$^WjI)!oEa!xrmI`dG%0y*H z1FAclu()&w%G&D?2#)gpi8}V& zM`obPZLYwZ2Uer3qYjbYf$(+n8j}6u^~ax^tJCq<)K9RjCJRaa(FpeRg_EP~mu$P| z@-EIUXtHU=7+wn9My-y_fKF#I_-2QVftQOroa8*w zuv}EM4U+@oF(DuxtIPIcm{$;H$vNfm?RgBj-)tM-=QeHZ?e%>(7guf5P#kX;*+z>^ z2j0(Lhb_{U=JrNJdxl|7_*g6}O+kHUGcJ#wi3m?Q$Bqv29cS3f&y?C6%``M8d^`eO zeXy-I6RC|w2=xqrkDDjNQpNL`OR%(HD~cOSbU!zW=v`m7A6;TV&S!8f_hS(Iz&0}e z%~_5C|L*HM&ivVZ9(m4OW!b{EDm<032(yAmqE_~c^)IfBorzL8M{nh>!bJZ#oD}Z#m0(?X_ETAM4S2bDV7OnTp0_sH_Ttj* zcsk>AIM_Sl;jz~t#yc2!a(vg8?m*M9`;tGqF9WHSl>{b88)_0BW|c( z+{Xqnww_G;6i=isz$V$R2+v?l4NdBE`J;WY?M*iAcx2aG_&|=^?)p50hyXYvbhH|9 zy_e_lwz0RvaxvnPtFi%GJ6s?J&$&^Pu&XW)@8z!1LTCOiUf5fgkBefaixK9d-%A!l zdqqhyE{mCgVcy|bRJa9^YGh8b7`;7S-0yZfz|O%QSxselA?r(Qs!BtwPpAr%p35HV zi-wek81D5Q%~)8l4R&^pxH*03RjZeqzJ`ziIe+vi-qbGdvD!D)yqV zrAodV+~+yz*)}du!*jhDyi1FA;-o>wP5Ys|O=stfY=Qvq}&W}f3hA>ZmM2V1`>OUO$ zA|9D(YKMsJHrq~ID93cO}io zxsem~+*yyq(Y*M*CK0_0rELuEzCGzeq=|sZYAluYPEsM#*Z0iJyoTa6Sg}BkIZF}^ zrktD{b;V#-B4#HV=v7``u7S@6gWe#mnhSH30NPQQz8Rsa+uZ zU({HEY%u`)f{q6~9)k@OwPG(_xTCFzRxvo}KH_9!uOhTR81x(D>J2{^KX^I1YjHCc z^jcrGSJyKyVlvJR8IPLQMrs+e&n-aTB5Xis(jV7~j_?p5@keb$Rx>DQLgh;ml_&B;Dr=b*OO|{6ZE7DY( zem!b15Y{LNarV<|F{8E!?_{sU{<16-ROMln7`N711e5*aG0YIpLs{V)AXd~em`xODmN@yC>RyFWRc<%P+Zx8ygNFUM&^DP4Ym z719=Wdne7Fli(F0`&6aXiy6pV(Ncp*_ke!Saj*!S*0wf{?O-he1`~(7`@^B1RH76U zA#$vka<;y$@8I7}<@-_J(ulJ|Mq`p3n+`e0Tjjp(O{o~tJT?pxW?I)PW6ywtgFD9g z#&ieu9!{)Vu!tBRBnBklXCp2EY%YHLM7x#}B-!;)^;K6ar3%&_9~5|U;y;CvUH5{iAA)CTq`VG$F?z!19GgGw)M@- z{X(L5gw~K? zZ4GAe+97?R!Emy1OjkRnS(#GwNH3--HR&1+hVLGY@{rwIou`3(^snDjmD~NvA^e=Y zFfAYnHeyW74x4~qjk^vBe$nz!560Zk3EfK#4fKhoOGUhQIBpzvwzRJmZ;DuWWXBtL zm!q5~h+x_O*}Cx)4uy^Cf<=?(o!mlSNpy&ImvL)%_PR_)-6Lot~1tdKGAaB#zL zuW-x_8?XD?ABAGnF_`zNc{c3} z{4Z?@3K}YrQk|uvp$s5y>R{k>TlbnRFjeK!!mZdVhV`EEbY#}%i-9Kwwg@)+evH;* zrB=k)nvy+QwfO9iu}H4S($Vi`X%`JUr(SgeXk+vEGa$OXvrVr}*xJBB_H}|7!VID% zB4%(IDJkY<>ZMPI(9Wst@S0{n097nMNOt=vpxf`!fJP z%3FuU`J3@Y-Uhsy{uK%u%hgRL$}LEZ+Zc~P6*8q_^p-c(=yw=@&>y@W=vKxQq&2N| z`d!U#)Q@4yLUw_2AF{?qUt*2|V5c0{5I0}M%C!;Z>Mw%R7pWqidg~^}SWv`y%W;Zu z55(gWZ^z_-cufV{m&nR*Di_h}hQCd|9T$X8>VEeS4kB*79bC~M=ea@z6Em(cTM-Ep z5%h=%xi@G30%rt`Q~^cfJA=Z;wfg|yMBd@^C zNtdV)eqig%xO&B(wCeKs;8BO4tvj*A^m9jGiBlxCCRw$mHlDQ#H~U845UB z&)I~YX&Sr4ShkT@uozi1q;`q1-g_2-hQYJ@KF2%hOYpz_U+Ty=1=BF%9=5U95)f6MGjRqq+bS{o>UajdBmdXgNMR#mHS&xDzXj#0YPy zM2oaLt)@_Cj&ycH+Su53_{k`giS`gSEOuniWsv)mts4; zu0X}rbP=6&-=XovW7j6no+vR`ZAA?9CQyuL7W-lV?>adao=%<^Ci^?eJ5mE~Nlsmf zhUZ#GycrlhJzzM-`o?0jeCOdUFX6wbU+An*e{esCi{NnMb!_LXnR%G`s5hSWZg6CZ zQfbrX@-%#qy#@vKWoq0qdB8BwP*jQ`o-6MaG*oDg{(*{y@m>pX@k9k@>g2j+#;8yi zzkWp|voO)X=CXa&B{(4M-d>S`vx3K{pmG)A$61C{xn6o_BH}va$$zlAHZuxM_aC9L zGMx443GcfVMagm>#$smRi0*d}hizu<3}$f37a`?jXAf_uLvdY)yr^WC!^ z#JN$^wRS?Dh&5J`u57EvRR08>W$Hw&P38P$=iLvb9$3nK1pENf~Ne8+GRM56N$fU^m(23?~oA zH=lNl)Ya8t^XAQ1v0??*ty_npq9QalHe&16t;oyE>s|_IYiq;ay?YOPkMRBd`}bq{ z^5s~$awQHN;AqF-gbCfF7=yv>S)tq1>eZ{UX3ZLH%kjW=Fm8iw&d<-+ed@Wb!9uZ> zk&%J)^mL@8r0Bk~0ySO242F{(7F6N`bxz0_F_wK)JoH6|Jk0%_JuuQIO8-vsjFN|N zJNAp=J(MsV<-Y1%bzK-QB8HW6V|`=9V2Q!}@X6gv9Um+R_2W(d#Y5X(QG<;zzx_@T zOH=$4b!KB*WjfY(yPjB~yNHh*1K8NZ*}+NL=mST)!FA1aeMuD~o~b}7G6r(5qD#kD zMLXc{=%LkfNBKmmFxXUWn}DBYGQ*w#rqZ(siec2(tKOwcIIkC}-}BBp8( zuBUv?5orb&_r%rS2~z_SbTs<@k(c5x6Tgpna(q2$==E@;VO!|q&eXd#Eyp&Jy16_Z zEnTgc5txJ-V$hHFjm8!+x+&aPgMoSad*kWoBF4Nu-V?)|8KCYQexdr?vu=Zx+=fye ztqylRlx~<=nK%*;8k{1SSoq6kfM*UxMwo~gPYR5FaI|+2QA7bytp+pQ zlEPT9tsl5wL2`f6<%h?uC-l{SKJ5z?3`yP*n$e6RW||ypj@ajlnCMBloKp%d&Olf> zD`b?`ELd5b(*2Hw-EvLwy1P7Th8Cgg3wyaA_!-@+D3~Y?JbM&&>kBtIHcU55G0d5b zH!_y1t5=kq%Qz2$k<9tJf99RBw^NSsc3WG0p2>+|&Al z>1;D=i{xJOv=r47c30@83oO;($LU=&p-cM#Rr39DQ*VxDeeyjjDPmoXZZ5VFY(bwAEBb6LJQ^{%eoAP zZyFjnPV!KV_YB7{k5ClJLy*4my5YD)sOG!P+PAMgA6!wCHDpg?a1g=El^b30`4363tnF zW;w?k=~j1+K317peLzR-S#)l^wD02Zsd_!oASFz}O5@pA1di23iMZN1;kLN*a8cwm z__zh=zV#G9z1dTfr!HM|NBhz6`C6lZLAv*BcnWW1E|=|CMyBbO$5HutVH0&Wu36g6 zn4XQA!qigjILzHo4a>}$A_Ry5>)NATy;KRFh3mnm$hgo6kl&ISzxU2%ACHuXxW z`clRc{B75V=#+EJ*Z{_h5Y|iJ=>ML|!`%!yn;{l70(uC5alUbCTfn zL_LplO?#tUw#PohK!HYa%9tV_M~kcCWd8(=^or71sqrErd&hMc4BsZ-ieR9-5~H-w zIO7c5cH3<_>d#Sh8vlFt?7`pu_BZ_MSHIF32#%6Ckx4Lc4x)=;61KZ0p zHB-$P-)MdC<;#OHyZ&(Bd{#{@6GJ=RD@2R~i-A1cI|9zOPDrjC+MvIbsw@p$oaApY zP-w*Xh_S}eytb~x{qXyO2HOj%i`3_w#hiLW14;uR#qi}ndokeoGe!1;`RB)ofjL&) zFOu+F>K8a`(F6D}XI=NVE$%|}|85f_e6V7HRJJteaSe9%)#J?|&)&1G^x0=c+Z$H@ zRmDrJdyu-{&>*Hb33dxatY@gE!gRE!7;wcXpBVUh1R~Kp7PrLBRYS&VywK3&$ZxY4 znDt^b^@OtytoZBi<%#rY;fkJb?82?km z;G~Z}-J>`%-!4L;LO#=21`$&|VIcS0*=vx`5&n)2t;fK)4Z5~a;8HA<%Jsk)28vt< zIfn<4XHKjv`{;z5MFfY6`1!hfQBU5_S|i^9u8f(XVkXc@3_^;8_6BvGvR-p6XxJug z4s-Rx4Y6k-N$!)&0EfxKaEe#mPoMQZH< zbzwS^U|>-<2O9^J_VUSZmE+gOnGR_;kB$7I@6%1fOYI`-1|Q0n`<8jc3X^(|cChIv7}EW4?&N4EbJm zZJ~&w{$2H~(5_(dLiSni_Wg@8cY9Yo&J|5{TDRd?q1$GLv@J^R4+cCF3elgAx=il7 zND-Oi4s*dWoZ1Z53+80zTM-OaX!J8RB@KT5UR+#^l9CcsS66EmCO{O8(9l4P?4DjT$xTp!*Mn2xlZRGcyqo5TF8M)v8rG8 z^&als_+R{V)ART!XKnWs#+V!T>m04WqdFrXrvgm79*JFoN*HjW@davU(~cV z=qwG_H_0zf`)$5BGo?nkY|Gi!@oT0W-A+b`G45dJ1ZOeCM|wxeez=Ok7O279bm!tv z&OU^S(e2pF6@|pe^%LUiBLXy6XDa$)XJw9Nm6{;Ne}adldhr#}GchV40X`z4INRVN zZ6FpGGPz#FFuW*Y8vZl&PCP&J$G9tDo_@|ic?vEHE5=svcnuT>!r31`M^7>SYjmc^ z&(TBnap08ZZgwv4kmFz0VyTpEWxQ`3{N&utj+~7D8+DZ$>=d8vz8 z7`&LVJ`(W6IeCMdclae4kuAwm%|ckWy@{3!;Q0gB5|jL^vEI=K%t z{JBl8moVQlU9IRgWu0ANTPcVrUijIpS+i7la9woO;sY=?HdeRE{bZXcI=BvgXWF!B z_}=%vhnScceUAc%;>hsbgxA`-^&7Bu!$!2pHAwdFPsPH|7t8h4j@-Nhc>cwg@vkSJ z!pEO{ima?0{rlffJ&P}wd?iZ{T_;u{25)I&jb_`STS1t!p9%+#l3GS8E#!&u%+7SU zr^Tou9HnPABgP!`78nD;2P@rzO2km=y(fiYZ0xJaR|AfML=h{5LCCgUwqmsP?atWH z)~ts7#`67GTf7^sEwW#-e)?|r<-5#Oo-~e`LFKdjO*+E6zbaox|KmJD;Uz}ENbgA4 zi4jECq!2L_NLyFC24~Vxr%}t_2Xi)<(v*SRPGTHS@{3ph^0H=Tq&eJ(;W{JS{l(I^ z2sj#obg>~cey@(6g?ZtV)OfZ+qn`fd=Y@^`+K9GgcEU|(E+{;D!r)XM&p6MpgYF~# zvMz5~o*A0zgOWh z-d8sjo?F6w{BhDHczD8%xNpq&G_5C(XHOWYY7s&|#Rqd9!jFFnVCn!LjjA-Ge(i6~)T!vKB5sm=b{0{kKQ zP5g1&%lO^SH+5$8ROMR{46NV4Spf$1awPqlYpzj4pQG|L&iOuzL~wL{_Uzee7*iNf z1kj-8GF*P-$dNefth3aZ=Eyva`KqcaHK4hE8ub(+=bd*RF1qLNV>y=j=0a z$L+V_qWSaGV0L$R!!=i5smnAp9DQJZe=r|@Ra?D|;1as8jPi}a4iOBNB3Kr38cNjg zW+s@PFk?+cbG;bO1G{}#X%!=KLEZ*j{MGMq-==4=yDF#q6ALsf(`xh8t;T9RaU`8- zGI<;-b(HsT=!^eY%G(&f;9guN>*WJKM1)O(wDsK332MmohVCq$V)#u9OhR&bHeM0q zm+mLye52LqadmLQy<()YqU&%mAnE!*I0I17SSE(EryMI!b$4Mf^O2w*yhSkB>xey# zZ@Pu_9+jkv6SMJ*5u@)PQ|{2fPVV>dK*2*dp!!}}lCtZH(ImzokCWAKWC1kR4xmBF z_yCeyUyAzHX5DwXn~?gpCafyig@U>w6jbM7Yk8WU+nzARW@>dls>QIUpi8OBR%4We zi}CuKvDe{Y5eyua?+fPfXMwl*5mU8x0|hGEO2a+BK?FzxUAlmXZbP^?Jnz$jlC-V6 ztFpc(9G4Vs!}ijBVh^{7A$Z`hKw`!U0G%qRt#C$&N6E)3Wcz?FMs6Y?oaAL$$G}kR z)yg%^;A++wpdc6sX8mDWUK*%9_lK@xbSdJs)sqXuC*!g4HzLfP>5s?hdz@XM0nMt+ zJ%faqf|o)6tX^DRU!uo3Mg)hSdmzr2`zWA$7OFpJD@Y6{FHDd?w?lR;?6X?s?^Bgy5)3p*Xb>Oi#gTR{+Z!74Km6ej zasU1I2nP;Af%PzZ2NA|fKjeWZ5%$PAl z*LCyFH{<;C&sW3$&O7habx>^Zce?6u9b?Ci)!*;E_g>s|(@iQ`2-`{H|3^RikuFce z-a1P_!=CM2`5HEC7%sl} zV%&G%eYoV3OH?HACq)C7<^EDMu?^gZ3of`oXB7y=$Pa$-1O1FbhcOL2PTUs1OR>Q= za(i5_;kyU#vBZRU%syiVoSdCuFW2t=v~&c?wGtE*AY!vdgsnf~hQ;EmWh=1g%cW>( zZboiiK0f;7Q#d*}9u&|+0n#@sIe0N-uoFg6ei>2+;v}b8KUr@Q905l^05AhMlY%ABTG+pTLU(irJ+KM z*BUW&nJ4~AF|-+6+*j}IvJht2#?F7co21P{8;HimHZQ zfwBi0%Ed@-L9FMYqE-|#OjF5r(17B@ljojBa-L z?5N0A7p8-VK|mKf;wJktNd#KYSq>jDEx_48KhqB>l!(~ zK~7%kvSx+9Go2}u8L(*L_lBK~ch7tPZ=Lyz0RxMz@Z72!l89p8BgA6#hO-gZ#?BV8 zaIN+~Lj?o)Y1DUicA>6i;DMH}3U}hSJKw--sh{Jev?VyuST22#t!5`n^bS+kI96BZ z{cD9m)f`-?kb8MB0|$nan?%oWtvAF})APb7%C%@2NIMldCc!}edHUvuv_7K*7y19P48u`SieVlu9H7|e#iQE&+l64xlNAzGw7N@**&qg&ALwO zdib;VdaZx=e6Qy|^?bkQ_c?pQnHJ72SU=;;L+|hQYzKex@1E;4eD|=kvsJOMFEtHo z*REGLCElmSB_*h+w4{xkHg&Sjo^e(oCMFWsTz!R@x}C_(?z>LHu|W49A162MC<(7h zx_)F;=i(8;ULE)h*e^HKp`VN0?K>&ZWAvtl2l-bkup{c{2wM1#xF))C1UAN z;537?Ir(FqWg)DI!St_MZMYwJ4RJPy@h7a@d?Yv$uNj`?SZWcoBe1?~zt-n?Cu=4C zlx(R;y+!UDx|dxj#%y1(#)6}bBa*8vvw0MQm2z$w`_Wsh%?TZcO&9$Oh1b1_|4h3} z?xRGU7dAm_ejEuGxt1uDn0lB2+(!%V@4f`j@j!#0f#RG!scaiKC2&o9y%rMWx!{aM zw;t01bF9;GQRGxSFzQO#&qKnJ?t9)MAX(6@mESR((r`AL&sfHoQT#K`XdvjK{$>6) z{A}|J_#}4&I;tLF1b<2Q<_ThEoNOc(u28 zz{S}a5#eDX)~irbQicG3e|WgLYs|vJFBZ!^>;yl5KN0l#_;T@5)YjI)+iPg<(a#TT z#)r9Ui%3w9hP00Nx6;p5@0hXRc-8kO9a-o@SeqC~_3N2_CHzj+MlVnrYSo<=;OYYb;UCi&8BY2eZ3 z!9w4B8abR9u)+d(+!q$Za_t#EAO>WpOMtrZu%d9Ww7Wu<8{-|Vvru%)DG_6nVuyw* zU4^V!m3qfx@HnQ3k;?t0Xc!9I9bFLa>ZgU^c&zwP=P3O^Pz=+cW-8scyt_&9I9Ue^P0 z(AVF=`Cw(_{@_g3j*4`&@S2hHvqwaIvxr&N$6zX8?nhtnTBE3A&@QQ$`+P@NUn%e6!EG;N zSHV35@ybrhUlnBTygoOxaGzh zaPQrBV$A4~n0LW>8pCkL%;`95_Dm$i$Kl$mufXI<6Evp5&-ch9kw=35yno;Q5w;X2 zs~`UQQcId&8Zc3ua+fD z9|_$mC>XNp3aK*=gO!%c#R#CG8!X0WxO<=)Y<}H!9=Oj|m=Pz&JqS4>m}o516{Jnt zO_w3M=+NkAA+;mH@6iQ`!R5@{!cl6veD%!ULl>ars%$mxhWiekTLuLK{j52%Y;~XF z!?2*CN`z17*G6?|NHP--Gu2Q)(hZCC6PR+B1`-Wb7Oi5SF01wOxO0Z7w-5J$#xfNW z!$c$ncL$9hFEpxI8G3J3u4c80aQB0k2)h2zn4yMZ5j}Nya_<6sf9(@^FLOC68!Hg* z=A&7P`hx!YU2+*zwjP>csBEs+Yswnr+#AlY1kzAe@y!uRA2`eM1HoW&x*74B7^w0$ zq3hfP-(d)G4~D%Q2gVzGCil~q`P((?7t@UP1qTe1d?NJTp-?Q7W1%w}-EMwEg`1-@ ze4O3jCPsDeAl$LO3D{?F){xh|wKm0JNZ*hu!t2Ja&mD? zl?Dlq^^N_SOV;tg*a9AR3O9AN5cn{xX=~6L2GX3vVA@oUFtY+U1C?oTg~<7e_YTw1 z+C5b{*i^PpXIw6hn5xx+bLvYDW>vD1UQ?hVX{-nh7ZEK(1v^p&eH9p%+)n_4C)Mci?xE zzmMA!E)an=aHb$0TQ7Oh&z@DEkHk453|3tD7rc1J{cGo#2-%l< z8HsKOeV6 z%|(E-mrmXDp~&J~e@*`gUsmlxl6$xq>UDT#)E$U$@jp0{%nU09%@z1<`nyWDv0zcXPG7{ZF@cYDT zb>@H~=%;&MR#EhL(#;5V^i<(Mmy)c;68tXhUBtTv|l&{u;b=U^yO$zYMF&_vlFT<0G!ezWPEun(+Z{2s;C}$v$&GdqS6vCfWW!b3Vhf zS&KDK{okZ57X^;Tm!-*gBI|SfAaX8ll6~du%EGek_-E#)xGC&Rd_Q9D*NT}P3v5H7 z2$4UgeSl7zPCP#RW_XFw|8o9vykEE;zZiBY&I=f)$BXb-(+~f*X>X&XwN{R^9h_|( z@t`b6vGdUWH&G|&f})AV)&7)t1KulIk6rZ#+jyBKfgug32ZuE89? zk#gM(?m09N9QpmYcr$)2?OG)UHXId-b>fmXxlLgt9 zS%D)}AotFm#Pu?e{+?Ygig5G7V~O8WH?%vGpVPFm{~UR%jz0JP9^v)HzQNiW&T#bA zF2d_{Ut#D&vJ~9A_kX&LZ8aI#T9tvPNBsaH&b~V1c0906JU${Odxt}? z4`F(KruH8UtVPBQo<}Vhm}Ydxjvd-KYtZdL&=6uO(ZM#%U^tl>YQex8m-iF{ola%J zz(B5z<*B%J{S&w(Vlw_d<%ei%Z9UA;ph2E42J!W4|B4-@`!P9SBtAUrSBDuG6b#Hw ze(#q5VrkxbxQKD}=kd4T{-n#%+->Z$Bj)mt?|u)T6>h=nGk=cJ-m!Q&V+sDf?^FD0 z%+#*zFVYdWFC_|vZUFy1Ft1BFNWMB{g3uGd+I@2!0t7luy7pT^yEFzB0C1|KG^ z(!SK{1Nh0-=doJ$9d^!|1?It#*J!}*otvJ%hXn^V;$Qnd#zUj7!6o5S_1@s@5vvOqHdo=v zNk2q_XP6jT$M56K*^-6%8*z_Zb3FgA&G;E+is3&{Q7(#xb`eX2;zxHII7F(vZ9@MaoT+t8&aMUhI91*qF zL0}3|rX=nCV!BZ4i^a%j3>gfDufrRii3E60v0C`4`m%Mj$C~oJXy|Cd#Zl9>*K}}l zJZu>|S;oiN)8gYTeZo$8=nI1K{cE246Q%csqHZPL5-jqfL+R zIAdc?I)1tHCH!jF>)2P9k06gwTo^eO*TtU=5BaW_tB2<6Z<4l@wAW%?|^~GytV^zAQvn>#@x}h=+?Y09SE4^kNSuxs4zb{XEy}o*0%ROJb7Tx4}W2NSX zu2yu)cX*82#LQ-#i;G+{eO)Wo7mp!deSKzq@%wJF9xpk5G+dcvfY*bMn}_B4?c+N= zU)+!Ray`9q<}dL4te@eI;pgkQ=&N0Jjt=m1^Fq95sHVj|AVwbd!$+>)-uL~nymVjX zemgI60v?-q6CNCQJ$^FkQoY6pvo9y|#dGW}*FQy5i=00e(nyf&HH2|XVt}#6$6IIp z5^v1@1@0SpncSzo2=@w56RxVOQSL(IG|Ck6<#|> zI`^mIi^s9JwHi5c?Lhhwx_tg+@@@EG;yf{aJ5V5>@jC14yC?I@dafMhKB$)GM1#Dd zJcAG=eIB2SO*U=)-XlCFjnaP{on>4UUmJ#1q)Vi`lbg z?(XjH?%a3&@8|u%Z-?1A=gf28*QK>;en@4;+^?VMJ|y{+R*zoN2mRU}u5K4kI(L6} zpWSN9Anh4R8|VW-oo9oE+}n=`2$g=C4`z+Eqr!C`$|)IPzf2d0vnmAQMJ)+&c^ciJt*YE9{c*7I< z#4P-=%zb7>o3;@_a9D)jQ)EKe=4!Q|xTX>3+K5I-zOrD)7EDTw%SzKDw8tGR6g;_x zL#n>_0`72eRj%#B^>2ER(fX~LiF%JTpX8I}%SpO&nmQYlQYOw2Yyv+1*SR*WAzsGU zP))r#MS_!O!~i3;>=K7J0WN(Q-qu|*@TNQ);G)=xxCoV z;D`^27{c2dxJ8|Xf80Lfn_*^4k`AqTjdSkrmo8b>E{6K=1d!hmjVhS{;_ zuJM@nS6mbw77HLE5P$n3F&Q-rHU~h)CPy zRk@}ymW7&fuE}UaM`O73Der1gy=@>Xi%r=&tyA^t!Q8&~W4;RsCgSjnBk_BSzlcqY z)%yc;i`ga^h7pNWBBEJ|Fw29-%*=@&etHZtQmmpHwaEc%i9SO}5t!ES=%e91x(P`! zhQ_2`d~a^r*aFK{6Q8=?&ClIA@t_maDSmDhyv}ZwYw!y;4V)Uj`SNk?_Xl9fEV9K|llq43Rx^RRag?ap5Tx1= z%hU%9yg9eW6}zvcC{yPNsx>d4cHVB7v|UbsSxi5011=@;JChN8u{D`rMl;l zp83?5ER#49kgbzL<<+zQq5mQuK^E=brlw?8#)v0-9l$5gsmyXH*VW2L0x)Eo3c#DL z*_v@%XdbjE*yP9JX3@^VQ_d81+o8ThgN>#Vz0nweHM(KFf+ZPjT+II zvbhHB*qY%WJN*Lg{uYxlrkh@H1|+06EWz+*0K>-7{#aRKXK!!I8uCo&^?Izg4NS%; z=SnpFfVdVAcBEgZFc7={5&yx~y8V?)txS6nNEZXRG5*^b<)-wR8I_k~J*cRpBpd() zD<7VwPPK{O9_3!|$&*XDx$VW(BYG*}Uaq(9H;NJn3?lWy8|S|c$7wl24AW=SX~HU2 zD?L(Yz(-l6gkc?n`MfIPr!A-y?_q)_Dn> zn$hX}-r1))7pqh!F|3&i&h3;n?WvX*4hFQiFt|j8d6Q0w`lf}douAI}?`pH{((lT6 zk2EJ#vfc{)DQEs#-d?%XPd;J#b;^?n^H;6ESO=4{8Y~e}eS>;>j5&(}oDXoKe{2!2=8mqG>#ywf&Gy;S5)k4_hV3tNsr* z01Adva7Z)i&z`wl`;bdumj7Q3sNf?Szrd-LEaJBlFXsb;R1`lbp=NM|ugINWHB&y_ z@_d6!LuE$>u2&_#SjRc7ER2<_31*SNK!5Oqn^iMA7xBh0$hi82sg0O~8*b$4n zgerEwz8DTeFFNKDINb3JP7@50>sEAQnZge)Wr@rqrCAE-{}d!j$i#15w!a?he>w=1 z)4DjZhj!l_Dqp;wucJ^?_X{#hGL6$s*zb*W0wJS|%^*?=0RbI)A^>%51UTF1K0BSS zm9|%#JN*1f0EBKi1AS}B9!Mfy0ODN{M#i5%zCbl1r=mi!z1nJ(7aOZP2z~y}>+NyB ziKu?~UcE%a$MgBlu^xd=15hW~0Km4)f&v6R&)dIN8J4?sI855X3PP_~gxpr*wzjNQ zRaFkeSadJ$r%SbT8VzWGwICCj@caEHz;n1v$NNnrl21MqTCIlnuQ}TWzUk+2Z2=DQ z49ebRH^vGj{yh1W@NR*&X8Da9V->M{cU1$94n@htZE%j$$xErEN7@SsIl8Th;~}!i z;U)u|#W$cOG40c2S7D=Sy`6A~#ltQ<|G_Hg;(2z|@oB=|5!8a944Kdg4SWal^blQ{ z2mYmp4RBu2nf4y*yM9Y!v4$9`KusTB1f^Jcx;tvh7*^u7lM0oWV>MSBpGEj*TtY!P z2JKA_+*3u!tdyo7J)ZDi!9-e~QkY9UidMLP7gyHuD0~C=(z^EzE+3;dTdPUCW?6$w zL^X&aC@+t93072-f}9?io*_+@X$X`-l-CTOoG3O?#N4G)aL%?)aAEI-RdW@bvR7U< z$pfQ{Tf;)L&XGN+4KUCR zai?|al;6^5B3%Q0hVrwr5RrxS!lA8qa8vATmoHFVkze98ZII)LWbACA2So=vyD9S_ zAjsoeUe1h01o9pid`1bwVeBHbZpmVY*N%Ljg@ycIQ6ev6$Gx+&GdLtfsWLh#DP&C{dvEgb^= z8lQQd#xdOT40peguut5;>iB(QlnQJbEN52dCP(sHW2yHHE{@`VpjV~&ghbnfKB*dL z#t1K_B=%Je`&?AZz7&V{XKK5g5g7tl;N%z3()~p;!qJ0K9R5U6iaU|9j9I;6qw)Ljy(Caes{^w>Ztg86ZSDd~ry%mTiB#8cDzD_IGUn@8mwTv#M_t6=()E zhD2OP{H^Qz23>j$>;NI?`YD|0datT#f~XBYlO)*)0KA{M=>2DCo_;D~SPH9}U(S?6 zLbb^ZFSfxYe_we+h{y?F@M7;YEWynQAE;>LIfLD|1=1~Xat}Lh+dxFWw+VKl^>QY| zWm=Oe$ro`RY%`fogbli6?w7|^i$D3n-L6m_zr6^Yx%Eyb2zLE^`u#kKV%2XPayLgR z@`(R#k1XO@=<%uin#bPk1UhkB`)8gPv{mg-leRh)( zMef|>WP)%!R#71^95vIp6Wgn?gF{VTY=`NAFwqjS>6ddlm1PZKn_skmhN_k6N(R5@Z{k^OIc|OQhan0WG(SeJaaqNy#U^G zEB55J357I{C!)83_wqwY64d#NTfpJ7*n6E2yl-k$fvO5XFs=4sSp~XjgCW)%I>z!X zX!M7?;VY{Vhg5sWu!k)431WfCw3+OI<4Ov;a(mJw z93vy4+)<|noDkm(X%0%j*KIL3ugxFr^arBy_jb&Np48P{{1FVEtx@B{$>*3I7@ozo*zWzM&;8ICsiaHr^UG%-X@E?u^#!@Yv>`cD(7yO*(N*Y+$t#5 ztqtQi@vp$$CKCJb(CZ@xX$i|19!-^YhI-ji-cTZ2pL{CtparcQ5jZU7UfW*Z&Ua3a z!mPKSQhh-cs)ABSxDXsUT)Q6TCd{CQ1PV$W@Put_Z|6t~MYu&SD5P-7ZDXvt?h|va zAx1z54z-=0ZVsRLlqHmGCNja#G~y42e6$}x%1Y|$K@ANcoyapqELi{b{kp@S;<#Vt zA~Fy3Q)s??{`?t`YUFL@R#qy3IYG!Gm7j5N@+4ReB7ZrKv*F1*f}Ze)JAUF?dk7sG zj-U_^H)?|x`8t(RbgL?V3;ifYwvhmcw{Rri@$^T!OiKb+Vq2QnW}IvE|0(PkRO5RD zPpc`a2Tl{r7ZtcmC|y&R?{>sZCa+sPk5{lo$QWzM+tun_5p59=E^^cl-L- z08>u9Q_R=e!sqk}IbTjHCw1fF?%todPvRX6JRaT^!g%bsw|_&9EH380)<2lriIC~bq$jntJ$1)l^aIzUC;`wFZ{+@lvIR9{0L;G*t z^v|33eoT^e;%d0WyJx?$KnK<(W=~}Bz(V^iJUrLonv~H~h55c69|P@5q&t^j#JV*E z_TJh}m%WG>xx1AzW{0?})`}@OF?c|*=nNe@_3PW~SiQ~lQM(0I)*PA)1Fh8fV*U^Q z+Y_9Fqk$yxJNgoRg^af>|LnBtfk^rEWQ>zVvwQuYirGyfBo+*4I$s+zQfW6&KE=`s zr=#xLDJZJgk$y;PQDPjY9?QIu$htv3TB6#Tl30?$)oPk!OCgegE3duu3b}F)>vOtj zk||}H(SODVrY>SGX&i0-uTa3t~uI#%9Q*Ap+FPNek4PP zROo3kN<~)D!Dcl_GUA7b&F!rEc3z6rlw*aCHglL}Pk;aM-C6Uwpk;ICh1~Sonh$^v zHW>XmJOBj<(;LoFZ-_DpjPvd2JGdJ_-ri3N`oi6Ed*%*kz`K;k1*7_*PYNDw18kwI zgihu}gF?&>L~q>3)DOSL&M%G!>${YAdv20NvEP7OU^1rqP(%!}TD^cJ^+ez7mnf|( zMvH^<`?JADmgFym133Jht*>yuF~6rADN?0zSD&JM`IVY0l%-$r*{5?6_USbzEzO?Y z?kKEX&6p#<>?86OSEfAg+23ATjktCRsSz43(5eTA;Khgm1R5-3yIs+^1Si^QFLsjj z?S>dm9UgboL1ld@+>?UB_ZNgR>Dcof=tv~lt@aA&r(O#j^g`ra=&BhFha4j!d!xY# z!fW8g8t#v5OeT^FVy{tj?FGnB>|pY@iImON3<-$qqhB3qL}tq9`~khgp`)ltu5_`B zqgQ2vbf-k3PMf`d2tXec zt*5s=Sy`2R`~KZOHaMuWBk3K%BEy?xPTH(p<5)ofO`7F~JHQxM(min0Og=x9ZsZwCh7?4*dSSj@XKpw`MQ47ofT{j&pl(a1LSfXaI=Nz{fZz}m#!@- zby)bdunW`u4*bglXx#N#AA6@_rX;*+g`WN3i0G%)IOZ*sN+;VU4NG~q!#83;e7{!a zKj6JeM9W?){MiO0KIEDjOjahxQ+aj}Gq0?n?>uhf96(;yOZl0Ua9h zjJ=-U7y1`#a|_y~O&l1#V?c)IP3vNkPLLY!nL>UG=N^B<_ToEpOT&LE6Luyc@EP&% z9?^4Pb*Mkq%d9>Rjx(ky0=V1;a*QjaUh-B)I72f8WRnc8C8*Eel#iau_gL4G0~2ab%c@#Npxxvkg$eYZ#FIK3p?)Y<$c2q;C|q> zTW_2bp|j`F+DWUggOj!Zirh*71(YY^`44wGHa*m*1BQEG0fiI=n1 z3|tN$Qp~UaLfks@Hz)&sz%Rt|6g~8F-uF@rn1;eq3DWc&PovA8xMq&vW^S)Yk_K>( z#6!E1x>+A#o=E9muFJ)7qAf9r5-Ap@h~%O}sr4c4Tzp53{f@;p=%ne>GbFJZC%~`+ zYtWBb(;rS^F2tLnRyEQyAvG4wwbs#wYVRT_Zu7W;hP)gTj(bWY`y8Y^oj#O`$we}c z&Zh;IZlXjPburo1OKYUH3Yc!%0S^kS)VdSo&f*L6}4-zCulkE&?_$4P&L#?&>k z*oio5=uk~ETG=t_31_}MB-Dg$9({@EOSyA8vStJ>XD@d6`^y6klcNGoPVfF5ya3IY zM5XYg%g6w^+`#)QE1|9NL2C=ADt2E=Ld;?)tE2!z?hFs~aLSwAfiN)z!t<;A2+Q%WoB zN{O0*xm`c9#d*T=$YNqHg2SGCKngDfb{;_^@k17+4owvD5TDi|sTc|Ek!Ni#``B6L z72nb3wSfY|cWZ}%GIHKtO`&|}${>mM=~utmRz`S}IH}uksFNY2^y@L=YDVB68H)Vl z?v2}#@(H>?$t?`u%LBsk4Kw$ry(vAlG39aLtt@}0kHGqge@5*3l?3lvV1iz(v(J-PpJURJ!(Fh)zth1-Y+-cz5ZGh2Xb90KepD;)WpJ6<}2KDfscMF zj0B!h5)BL1VX?D{vH5S9ePEpKkCRz>hWAd7ES+ z9mbFU=9p-rE@6Y3t-%rhGa^PRb_dtEXO8KDXK~HB{#CZI@>=LFC}ve+e2R(r@%QU~ zaG7lMxY4d#;oM?Sx-4RFe~CASw{~?sD&M)q_)Vvstk}LobC%46zHXmHzy5>C!Hkk_ zW=o6cHvSbd(#2X3Y4>6;zHa)O%hMw6#o06IcZhMA_dCch6O-*%bU{%^OVk%n^eFhu z%N8*b8#e{+R3}ruM;un0ZGxB=piJMhk z6Il>y+u3pH)1QP&O@G37U^M>0Xzi|yE*swWzbzhfAPt1nhF4Ty2OC|JS!%QN@ULdI zKE$#uvPBP%OS67lB{N(CM37kE^L8N{F|t74L~Xm5!|g7Cvf6&x4syOMzX&UZDnp)f zj4d>a@M@D1Nm*fWgA_2ko7A57m*z~;SkdAHTgzv<82s^fc5=_Y^%KZK)CNpb@j2k$ z%HBUL78KjKj^JP5VAwfb;Gx`~#Y`&5!)8#AS~60wFyM25;ixpVRbZP!rwT|BkfOPG z>b+n-$~6yib|Y=Bkg5&TS1Em5+-_cz3LwJGTc~SVzDhPsC5G*g$ACkmFbDYor;Cp= zO{+{CwS(*p&#wI1V7#Mf=J{U=8af%(=i8n^o21HC>f9AZoexWZF90snu^9Fo+-oVa>3`B!~t82rwH_k^26qo#Xz!@Pu4=yVXuZ~qOvf6Hg5*N1u{M`|P z-r^`NNwpuC!3?Kf^P;I>1QL8_%09S=zENr1t<(wI)eIEIo1i=eD!vZ4!-2uJBmP^M zsC%^8cK2>FJrmNwGWr>L&JBblcZS7pE2>zfOsn+hrnsE`QU1k#lqNypqV{0qxrEc$ zu|!HoF+%o^1=PqhTX9(lF|kVw_yxKEgY%I z6Yp}O1lV<1m$6}z;kU9c3SAt!mQ-Ss&|`nP%C`8d?2jopesEORN})CG`N!FR zXhc(l@-j?G-B4Vg!i)FlhwPog#BR6ti$h>qe|k+4IPO6@(fG7YuG_ZUnvrNmf>8a72ittV-P24Qs89gToh~S=Ke(ZMYB^ z5HP^TdU4FzEd2Xl^`6RaEsGra4EtZj)VLC|oj}{9s~G&Eo&QY%>*QtWAG#{ z&d1+7@*{JNzJZmp#(U6S&?syi$JclM;*lzF^L|K{#OT$K<=c>Bj+Gguvi z@$7^!Q7j~kF;*fCOm_?b9I8v!Rd@t3&BmWqy1Ve5&Yu;K8$+L8|EK0k{5Bqt%_ezy zU%Xq|EQ%BU!y8zyr^FOsc zMMW{47K~vOT;3ytb)iTJIJ(JmYPY)f_~IYzU0q%BDY#{w#fuYNM@qOlk z;x329a_;$Ro+l!uNbDzmrOheR2#D7c@&z=hwJtv=BiYQ3g;|a#y0!FrvGoK(!FQf> zuS|*z{gIb?tY@8cQ-GMZT`PRAJ4y%~oWsvJ+n{NjTxO!mSeyLzbW&0Iu+sr|Qhp>9 z=_49EUeNKr45qYu>!j>bCUv*6>)dG|CJA2MA_sn1sgY z-D8xLwl8slAm!HePq`J5#4*P>XO6qM9rHS2dLBDZ8=Q~;{wVmAqM{l8NJ#iImARsm0jMy-)_x2>0XrDFwaOL`?t&c@!O;cM&<~u{GvJ? zXA2)BmX42}ZtNGwRx$R?yl#D-xSSRoFkP6S^!!P$tdeg1+mjC#teuQMr6S>;&h$58 za!rkzd4@Oix4ktm*y^q}PWiiL8a8(V%Dyd|vtL}#aL>@Vn)INvOj4>v1Z=mOpsb^u z+%L?>)y!__EoN-{b*Vmx%)q*^+}Q~P2|WKxH$7)subx_eG-=7`9|zZUr}QeucXRF05HgY)~39QZl`b-VDF&O}Oej<*~iL zFXeP{|zf~AC;hG}kl`n++*3yvhBpERCWXF~0E>%(3JaI2i{+C0&E2iY zV&DAD&+E1}@zp*1q7r1#Vs8A$(fi! z`{kxJ<6m27$&%=cz$Q*OhF`|3;C+dbpgY61Sc_g0BCEWQi`k9NPu5hDcPox0)JQCK zQS59E^zIb*$PC465&1#ufgkHx790l~3ziuBFXdh+t_-#D*;LD7xkm2>e`ovoAciLz z-z0wQPUf`WfTf*|N1GYE6h2$3l~ImjJ1qoI$?P+}oo-MR2U5>z7WxI;M=e%p7&KOQ z46&WSS>O$HiDS9VJuB~7F-V`whAi~+o`WeOJ@0)-`^poAm(UxPHX-}7#p&evKzn_) z`qmRRr0<`%cnjC_{$CE z(XpZqdmv`iT7n%((m1r9Pq&}_S*X9AYTbt~Xq@!Vwdvt=W}z@?{9A5a7E-KO-$oRs zRaf((1;@hQ<*-W>NnKCcF}*7-R<@jrgPxRHjhs7+*P6~LDbeQv$oVtMJ+)5c$rA+w zrF?j^=krgsa< zd!jzHbC^7&4PF4=ngK`@o9&`@%33xUcG3RLRdz^#jWfg}u^KJv)Pqon)DhMyJZ1X) zu`)Cj_-lC9zZmRg?CJLq7_ry-+DE z_-W~N6>Y8Z9;cJtJDh`o#=Nexwad@x`m}JevcDvV>_{I;=R6F=KQb^g&^~n*V zsQ<7~-8JKj$u%-aXb*)!@E-liRWCcbpI%J7-;o~bYbn7ObC5yvI(#0zK^&NW&(w47 z+~!lxyX)GZG5J!nO!VR7io6oeT z)gmp^vvKU&#pN6SN-X1*ZGP0<`|)D944s)Z&Ez_0+U?EuDM|U!D@n|xDpZ)1%*62#gdgus;ap;O#)_?ma|>vFY+=nVQ*uAmnx^K>MHZwrd@Au zFE7Q&cnM|q>m=YTw>0EySljkNioB(3kbm3ZUF^#Vcpfn7a0CE`6o6L+3OKgDRQpMi z11`(UnHhHuypv^7Pr+Qj-EZURMg0EFRiM!hd=gM-@1cVfAv~%fAp#s9E*pKI!$yQ9 zW5Ich`S~}NuY2cxtHIFpSNaz2eUTLci2OY@oEWs?hs$?WoGWwWN-}54BU1!?d0JDW z-!zLswO`$L@K=5R_VUFn3M{awj39jLDnf?(rU7rv?8W-FXGefIQhrGxf$He(QlO41 z5AQ@LN7l_e6nZ!Ip`&c;XdCM2T>smtIwqpo{R1M2b|^Nzd=?fXmMJo$o=jM?j18)P zL$kYD_1Rh5`eVjDV7+M`r26=W;o2|3^L(w*et&EvjR(9pLX#`VVPhxR zkkVdOm=%RkW@L)Iz5g3;)GAv*Y(_RuWCvr7zP=6*c5c;wNwgh)o&f?EW$7jbCOO!d z-lOc0L}wmuLVU8$()+M1EaR?-kqPj<*%IdK*SXj|W$fx@+|S88RV%E-mVaq|(N+CN zQU{~WS5FR$i{~CP(M|sF6_V~6=1m`y5Dy}VKb1AWU)-85+)BJBZB`59A3 z!KH3KtZo?h?0;=P|Hi(xP4bFe+k?oF{sXiAA8*mPpFTYfm^6dq;;?}H5}cWt*_Rf?0%IaS01!yj?0jCA&WY!R-|&uMjPC_^xxc-dh1fx*T8u!0tLD|S`B1bXav(we zx6{#Q6*b($^tp8s18~^c)WteBglQ~{57qfTBcPf>>gTvaq$0Q8OV)i7h}#@xg$Qj` zW<}o=Ie>-NU@N}J)LbzZnRlHn^{36R#nnOBvb(FX`tN*SeHX^D`_KZpUbL}BT5lD? z@Upd{>bT|(Dm)o zlOhhM<)3JsPWJPCzfOvU*>@z2xNeS6hEM9Pg+~*dA7~!wolRvlvkucBT$Z^j+&|=X zO?OaYd4810aaLqrnLhu3VhR?i@@w^D^2+~{=cgZ}B#AH$-D_yR*vK4KWcrR!Z&Vs* zw<;IVS-$+%JJ}!F4TH{qfd~7WG=uV-N;Ek+S*0P5y^iuxLtoPVCL@gA^xV>~pQcC8 z?J)O0*&dKiLr_pqz`i+5a$0L~1st$-V+>fhxW}zD57+Ga9q(G1|H7s3qrgg?13q|1 zCtqbotO=pF2P0L{hm?D*8q=6Sqn}QvOSxVAko)s>z3vPCb4LK7@}D0T2xLx8dcM7G zg)uv<1|}pVoN--G$uOHGudb}9C}r8jq^6c2jR5}MBC{>Sb3pi-1NeAxgRU1F6jQ&C z0=I5)HL-_@R|Y#cvakE0p&Dzt4?pqZ!UiB#%3Q^EdybVBn;PT`&*Gjf=nxTO>cMq0!#?+rVR%ZDu9ZIY~#mzSO=8PX<1-7!kESaZw% zc?*%3TJ~fAs`sy4G$2j{nz`oUxk73ylTmFWxpN_Q6=HJ-_O|8_<@dEwU$;lUkoN=~ zWNgC>Zl9%RHQ8@0OJCbqj!#ea=Nkq63-TkZRzwpbXGih>z%uGYv+^T2UvXse=Jt5L zm`#{@5`dj5?|O@J$%Qeszt~~7(V{4u=6w)hPa_u#Jg7}dN;+7q2BOU|F)@jN5tNRq z#RLHT;PKe~qk~`BrRCsI`TG&+(fk7M;9upVG+a;Z})mt zQF;R6qz=tLnS?V~41DR{t9TWttlD&=KFO+>>Ox)}JsviLo=&hdcx1$kefA~Zi?6qN za(cpvsSBr#1YhWBs2AmY2_lTy%5LY|1{-`I`M5%cdU8`S_81JTbpj^?(VaFecq9{; z>lt?+<1=nK0z)f)fjG0k&dHDo!3-}9FX_DCPeYa^$7OGD<56v@uj~t%hlud}prST@ z>-<~O{t~8z2>&bDu-4WZ*SE3sre=AwRUgWS)Yoicepn;!;>Ay+%8ioYYq^%k)=Qsv zNiuUz>TlZLRZ|OOQVGJx(stP~onEC7R_21R3#C|gv+KRaylg&Z0B%VG%{R22Z~QmN zmy%l^rx;@>q&^s(t&{#ZoSn2~M#JEf9 z{S+1uy!C4RO zG29yrv;YFT)aEet?07`=!DAiC-}U2xQ5Grpe`KaAIjn<_8dG`5ZWh*^`YD<4_6A(JF&Y5$jOoraES68gvY3ZB#>(*pTFdKPg+e#eNCePoUD0f~THO=O#%!=waVi+x^a9Zj-U z?G+KMNiw#r3ZOHE7sBc)Wcg3%8$=0B&COI4uv!5T5AL75|NEZJ6#!osx&UcyPB~zX zHlqnk$DZMNmqf>sTA9h#ZDA@Z-b?xAi#QmwrM2~zd0y_~E!FX0wm4yoVS=N`{r(KJ z9nP*2l4;m!{~{;hjRc<&b;+nvA^i7!U+;}wpZ{a;BElGxP2bK4`*;sfRw$XbMTNiq zbGUo`U#o%F-GIdbdqKL9r|IBB>)67^V^~=Vk_%Y8%k*w< z=7-Vb3=o!yUAk8$xA`pL2aNd$EF3P&P~C9yf;LDjaUQ0`1K(V(EW#WUa{Z(k#{Yr{ z9M!+N9a%?#&RJTx?wC$^p~jAad)p2!`vIwPoB0iG1oZaKhN_+NGtx~7VC$~r70V_A ziMoG5V}tw>iU2K)7%`i{rY^uwPKuJozIl37V(`gR`bQCoY3_AtnY zkIFXf-6+5>=FHma=^a%GERe;MM~kc{h3nqj93xV&eEz8L+Y9~e?EQnuQVt%eq3jt7 zaAg=t|1tEnJ9z{?!|R6A8|D9uA{ijT@MhM%iaR?HTmR@B+M&Cuk?&>N(D9Vf4Jq&X z>P+J1GVQLRSAz>B@uCcbyPG&pN!Gd;m~)=}vR`WJoC8h?7?1l1ZQ6zLNU6lhkaPVc z(2A~u<;n0xeQ%?zwp`y^&lv?RxZ5vfP0~pfBhMdws+L$A(^j{>(#33qG5L=BGo%ON z7?<>-(TITI+8+`t=n}3RG~{Y@xIk0lA0_I@s2?1>hS9Cljq}=s>?x4|K(-AUS@4B zcBAX#!~XR6#yI*5taZyR)925z7bDf<+gVZ>9nSW9N1W7@(z`r~v9%&@MQ(93ar&_i zXnhxB`Yd>8|H>6=cyFHi=M)^~Gw)LQ?OwgZa@fz#oZFbPb0hePLv4Ln(n@E!e)4Zk z(-Pw{*>^I7v42nO#PVHc&Y}f43R(Inn6C9WqGwqNBG^1W<}7lx5UtM61ntQq+jAAy z-#AmhA!aCe;;qX))7PavQ|RK`AHSW}ZF^=rxG&1}N;iGud!X^(0hP0~2y7}WupWQq z=R8>wi-Y~VjUR56E@HkWk%9TIA?wGeH>lgTDw-k`2RCy%sJke&v?=;|-);s8X4J#f zORO3<`POFAT8fm3CJzy3jPl>3ZlxMsG|G~UR05AR#ly#LzOat z0~w#8spaPOzFiq;K=zWIlH$`qW)XmOrh_|s39I`3Ky0FeBb7K!O5AX@I zZyZQO_5zP4J1(GiPpqZiJph!W1fM*JSP)8Iz>V= zTTdSa%K#~GL0JXgZtMX&y5Vx9&ci-b00!toySNkU2*y}0Frv_a_nW8fcv`)E=m*4*_yApM%HRG{aCf5U%+-3Wo%$>_{hCUY7Y`Hb z77FV zOvc;HzvFby?yjjbQQ#o0t*(|T-(Hcorup8}wZa%ZCg)X~U6};oqspRyCq()@K@&QD z^+J49`s6Y-P5s&EU|H%Z*GgC9V3#l?`|0~FWKt8}wjD>nv+HsrQ-&3^p_p&e@2iA| z638TKFH>w)J6y|MI@QqjaCAH{Hr8818@q9K<^#~o@ku>yDwi_gU|}hg;{5NyknpN2 zq(@@?h+g1Pf|5^AGv8i(&Tz}$UY(kL3Hf|;*kdPV`@tiPpJk*y|Mo!PAv9A)?*nHx zhfS7mt18EDQ!~-(7vMx5>11#BnY>YyJD1GSPUnXNm+0y%x{`_)lNDN-8f?C%Gp!w; zZ~gY4rte`HL330R0+kes!=&0Sk+#PEyX@&4|Q^ zc1FjkKx5daRzcFk?uN!3z$#K?&*tuihJ+%lQcvU3&`e$?#bB7-Y;=+N{^IslWW0d{ z0UcfJ_iq$9w1cRM2}M*)Z2XWcF}Tk12x=#Q(ZrIPtjLoYv}bewE*$A7;s?gb`nM+x z=JVJ0lzwi7_r?i+{#H!UX&J5f%3W~!F8T_;X}7 z`z9-A)$9|4cxh3#^Q3;8D*FjbYO0nB5ULvH+QrH#=}gqOy0q%fUUN$bY1A_zunKSX zbUL-ylp(ciy)k1ftzNtoXkFyce5fz=#F(u$#-sS~1|NH-EQDCcl`-#;QHg>@yv1dH1BlU(^+%+9LIGiq^oh2rFM1b>G8LY06T)S z>3T*FPABi4Py0z82Q3~EEyz-9*60TwsJSET@bTf>1Pq%qJ{yu>7QIaiHk_4GYD!8N z@G3;Uy#?;S{~u9!uy+lp_u5QIUt|!CfA#tMNzqVOcL-^AZWfO1+Ulit`!U8jNo1c| zSYb?YD`tHBSs!G2PhV|-1{BiqD!E7TQrq8)w?DuC&LHKII|tU?}K286i$8h$?5$1PnBvvDjQ;Sz8rWEB()xb^(^(D-jRtT?S5^wPw} zFsvO^6-dA@v}e-7cd0uPj^`CzCA>nE<~ZqK2OKow!I@D&+2IxUW79)sWvw)>pp?5m zSr_9crL~wN0XG#JQj3Bz1$jAgwqj&cI`8vpF8v%DU7aN0<|tsWX#!uzGagCT^)`*F z+8qhz3gw|wVzrrrpSt?UoYb)viD$0Ee3yVsR zN4x(#5OQ2a#l@<&1tmaMSSKy=#;(q<{rdX)mODRVXlMxFO=ee<0dsZ{HMRJ_tU>s! zD$%e1fc9wAr7jAD&ix5(R|vt2f}d?3=$Sc?xOcEl_@c5Ujr)*|njMQ6=s>0Emc^J<8(i~mbtnv>^9 z=MPPdat9g`QWvn{+x#D4Ulmr>+D0pqQUcN`9g>1{cSx7Ch_LAH?(XjH?(XjHUZjA8 zi%!pE@BN>1c`mr(VKV0zZ;p42792evKR+U25#fvZu1q0iJLpX3EB%ee80PY@FctCl z@1JEkTf3aj0j0koyf=d*%*c;7YgPs`xnj$$4rP;Y3L4vprvM!|R6#+3GoX;<;6xR; z(&@qD`SeFZ^^IEjw;UUR=c_qxgB~LDVqWW+FA0&rke8^KSc$EWq3@9kH~^>md(T^U zV8*Z%=K6F^eU}-Rd*|mS<;XvK?n-27Z0XyPSI6C%j>q+cCShq|5?}r4(#b%zhY_gV zZif=bp`TzG0hKuIyY@os_qJjzD+)c>p01S$NQwe|8#}LsNZlmMGzS z=9nWMK;Z)s&Nx9m!#i`fWtZmQZ}9rr7v=YXPk+Pdf#l6;rNkXA&=}UndeU>p#i+-h;Pyj3e*#fa(;G zB>QI}3QuM7*^DtX7006C;g!@Orz>Xv=w9(bCl@camLKquegi`19P2(Qp=Z{4vc}|m z&4E#z`GElMT*fefBoM3@iKgtcZIwp$^PejUxXqoNZGSY5uIIHFV$?H;@`6f{mha6K z>XO5|puU+&^mSg^23{n;C%5mK%imA%MAQ$Gzs7R*%0p%P^53?fZZQ!u8JR#Y1s8(ent zWZganEiQr{jklQwt+*tz(Z$w)42v8V{G{=8c&JH8aPTx|tJ8Vq?RylIg)U^LVd73W z5rS~3Sis`rwqk@`HiA=h^m1xD31c!zana{x__&?=2XiTS+a3wx7clh|zB7%76Xu-Y zBkROvoiPpwXfQ!LKTnL|}hdFh+HUijU=;+x*@NQrn3 zGcsynnkrr187{!$qVvQ2CANX43Ur)IsRGaUHC7z6OfXMV1oOPN>43svw!`+RLw&kv zvH)-tERi<^J)_fDoC!v_nwsyg4%Qdd(V0g>Stfc2+I_+!msbnh;kV|Ml$L8zsAk|0d-Tm z(s5>by&6QMMEag(#XOtAZ~(bC(FcqJ(@T5exeg5IuQw|uvpPYIj!CoFE;FY)EPg#n zcr{XY6*KFrxpHd&ervu860@w47@1nA8IJJF0xqMKbLjWc%J(}4J31O%FgM88W|~}p`%^2 zi=&pC&ghmN8=E0-YBIYsHGkz1pUxAHuj;a{RR8ri5X{-krCk?;;aM8*3>ilmxhK` z7N38<4o<|4aIUd*o$d=if2T4(l9ICWLXt0VqJUjj#pX*2j@AA4jl$$gD7f9tUa6Uh zfhZy(0ti8sKje>>o6j%K7uSB*T6re zh^s4iyC^5iYuIxkLxYUD6UBjwdQ;t0w^X63rJ1@Pyx|#j%wBcypf$;i90g=yz|(#` zSa)ZA76jc5U!zM!_a;DG_P!@72wm0xC~h+}O3JIQrB!wWm?blgIp;`U!a3tcWY%TQO+;weYhT~D9wcA+SpRwT z3mM`2#52^VXC9EoMI9DgD#b#WpstQ8!>C~NwKnw2c?zh;eZZ6#vYo}E-@EL{$9KL` z2M=&3umL7IXw9+>1(;fkq=VxCLJ6qI>dwbAo>$RH8}1Qqe1I_|%Bu4oE=k7`4-Ogk zJ0GG-7+K#gAatn=Wzipu&Urb`3O+mpq3G-H4n_c?Hl&rE52pS>L0VDxo+nQjtjH?g zfvVg;H;#e3uH5^HK7bTZ%D@VI&;I~3rdBzqN8F54!?N*bX0}LQuG5C?;NXy&35$gNYv*`Qjz{*ie0OKZzUK?9 zb79J6$&sQf&Di)*{@XfJ@ML4SWVp>$ngWVyjCiH;K(%*Jo}-=ziar)s1WMq&3<%-x?|@!gRw zzQF!H%=N$By9;K*gqk$1DmOo%$Etsv-RZ?B^Kam{zSF9mj`*U8^PJkNr#v4V0< z*Xg3eIdh1+?K(c^#9;A1b8%O3QMbsf5L~#^jqaR=7uDhS{Bqv-ev0Ju7jM9IqgD>Y zN=vAV54DIMZIYdk5I(`%uZrhRw|$ZZ>EG*s9Juvag0D}I^84XrM(e@0q%SX+hR;dm zvl$e!4ixKuCl1`y%VJe#%KVhbrHTnRGv|OEU74;^4rm3mX~_Qm4gS4XJ}Mx4nZDPa zmm>AAIj}|(*Js9!^idYmmz1CC_Z^TC)v)f>0FBQR^>;p7GMXNj&hT;Li@?3_Z5Ioh zQP2wF?{L#U2tUeIA#@p>{%5WFtb(!{0)33c2~&Rm4gv#QW>rIwgiqj;Q$L_nldBf* z>w<){>w7shkoDqB&DeS2u9NoR*Ll>Io*ULE9i5`Gg^i=}zbj?UJX9a(GdasS>zWVS zqk?&d$M4>3nP$qIew>cTiX0FicK1|fg@!@szq6wR^cs2>24LrkWCzo^>{LUd!cKg+ z1SUnk3%+r8_pk=LfYR{(TRwQ}aaQE@Ysq-zYpv-HHzy!+bh^tCVWY#nssvn~Cy}O> zrl`;r9aq)qVk6o9q->s(@E>-FThlS1I z!M_#_R5Y%%b#(lGrxV^u;rsc%T|lO#bRYp{($MhGQAtRw@{2&(;+u!v-EUxE;WVq* z{&iT@*5hpyMDGJ~^7BPMbT@NC&s6CNh>DAAPQCCVA|h5>ZSf=Hvq{c5(Z?qx8Qh+2 z(9qLk>eDHJWM=2)RDU5NAWVZsMn{$6=v~|7Bqar-i22a)@l7Lord7E%5&b6WxK6OQ zl6C_+_%g7#haXqSY?_SMwe9+Otj$zAo7Qy`9xG@4Lx%owcg*${%YWx=SoW7Dt%b1y zPuH4uS3p?<(>WqBiHU`XeF^HiAwY}Q0Zsx){BFCi-?RIKn_OL7Om6}5BC?su#DTjV z+S=O8fUFrkKsn_F_)ByQjNCOT2sh$$cwJ$k_<4^3@{}9KW*pvdGynbG2UYGs6oSC* z?eD4x0O3`MG=S6zrGperC+ ze>?M?6L<79Gc%K}&pz-&Df7j$Sye}28?~X45dgAKgJl|&i2woJ?r)9eDU-cagtI9?>d#er(Ov+JlZjcpPTLxoi?{K_S$fA?@w#p3w; zo2u>b5Q$ef>m;X00~;MOj<&TA9cEzVL`m)cj6eABhcd3*@Zbqs-}Z07!2j7DDw`gN zaYa1i6&FgU67`pcv1o6y+z162%J}5O0_xBR7Y-w3!^5P-Jv=%h7i|aifl|R8FdIL= z7c%5bWYO%xD>#wlYy{a`F*N*Edg zb~W_{z_rL${m&asCs;ebimK*iPoUpS3W76?c(jqfl0I8oH+mxl(S9c}|0JfLQ3u5< zXXwLd4Y(ip$FS zfNN5Ll#QZ8GHLn8gS0#N5~}@Ur#o=DG_j^IBpnP>sqt$VO!DZb3$+=Q-Gn z0mbvz2L#?QBLY@YY^4LlbikyY+bIo1+TdOJ&Tff1fxg&+Pt`!2UMKMKHPRz+KqfJ# zrDeo5;opDV=YtynMAp9XNeKq0tth7a33>|t31y4Gg(})jEn^%ynk)R3N}Q^k;dY}z z^QlTurz6GiKP$}t>JwW(@;II=c2V>QLD4YMihnbv$tCLpLSwq|jHWkV7QPHmP7L@4 zggIQkRR@q-|0HU_pTqya1PW5owLtjfMCr8ZCe=RVwf?l6Za`%|azH;gLz50eMm`tSC4{&tA19HszUb0ZbkF;A@Ul*JcF0!dt&y7F&oYPuc<1KClJHS%k`-x&4ZZZV<2)3kKBf?oIA8adt6 z?0gu3*^{==H7prbxR?sc*17{Eh>;^AqXCZLW1sQu6x#d6+eZ zqIMk)L9K3YP#iwUxS~TPhlW)}V#(I45NgWhENx8AHL-Y>wBkApU++DwG zLi;r{=6dk!b-{pU2nE}hr5xX|Sy2gNOAA2pig@lj*4MLZO+7j4^P7))61gEJ{m?l;qA8JW$TZ0+ec)AD z1d)z9AwO*xQ~)_g9AlJnG}Rmhar;6BW@d=^ z8G(|tZBSYrQ#ujfUh!*7D-KHj(7Kt^xkrkE`u!oZGbfzZ>&w)NNNpEpZW*o6DhI6=WxG`_Ef167=Ha)-o zvjfs3a)OS(@i)xM#KU`mk?@3rX;W~I9 zn@%{*Ptp>?)ickAom0-J1EOvtLy^TYEt3Z~H`aU$_!EcTxPcT)(qFX3*fSeHq^SCL zY=Xaq)1_}=1jjNmQi)_k)Q7KKpg8xq!`QS!BKYvlNsPhk!4tvBD=B%$XJEjxdsRZi z^r>%Br>(|h4*P2c8x)R?H8E8r36hB$c<0!6u23d96p@XcO_Q-vNi`|Rqd>-Mv$s=C zj(X{Mr#v#7xt-@P($DychlRpaE=ZhK3tk!PON2$s`BCvSlaK2~qvttt1>}jA^0HvJ zswev5gqicoG=8D*n1z5LcaM)@U{s;CS%iD&U>ai+rxzA^vlG0qJ~A*BB}`nSz~i> zcvHdn9Z#1n^*Yfr+5y(5XGJW;Qm5>a{XOMKNSPB^iFM=^!^m>%CHtZwf7FDA6gSiBm?85=RVs4=LCdHpcvJUft>+zgw zxjl7Dv1|!FXKsmaQN#qO01mg?fKBS+&z~A%z=jY3K>zA3|DlBiEIB#3hv%QZXPZYp zsdWed1&XzUjpB!V{l38OBePh`Z5-&Cy1L7a9`K=vVcS%pBJS=aob@&zvUD5YW?6M% z?mHYIBnA#njBL3cP^W4U=zCot5UdH!h^OYyY^B_?B%VH|Av*hHdTjsxMOjo_`YopV z663tTH^1v+n|Z^k8uw~jju`j5$eji;iNyU`kuy+0p81jCm_wI|1U!z3f1T<@A{A_93pC?u{9G2xo)Tk_Kzwfs)+t64E?TYH}%yJ8xS1$?gzw&e+oOmdDPM4k{74JLBE zOulYDxt&~-7~UYZ&3%VQij0L+xfe?dbVFGPS=o<{)gw4JlmNbobdY)y`vY2R|?_+Q%LT3RkSTbMTlV;irmne(0&qDZp>L z6qvaUBCpkD)L%p+np@W{x?Y;eJbjQioQknP^l5?cM~1zy`tm)Rv{%YOnc{3}Xy(iP z$*5^^ioPk7%WP7)EIO@|M34>YDD3ei6e_4UAsle5wu^OAUZpDOYeVYlkKL1qQBPnz z7lCqx`5M%gA5uM$hc7-7(1iV3yRlX-p2%p?nM{Aitg((K)& z2xE%sT8=~NCcDZ?Q?WulR9Zv%$UxgCKO^wlDVgvwc{2a^cpAg$JQe3kn=}EQi{NuE zp(SQkgpv)C(^X7OaNV;rbpz@0iMAKBW%g z^~3#3`wPoiJm|C!JUlWY^!)J$(wRO^Ym9r9rGdXC4h;>H;!n<+~i~R=!(4dYNaQS?MHF zJ^zRWyuW>&vjeuWh>b>F47ZvU8A7e;Tk5r#Az}i-f?A|53*NrR7LZ4tcU{A)q#pD{ zvJ5lc! zc&ZsMxiA-h4_05Cpr7$zL{uckA|J~1^QuYheD12QnP++2>g_B=1aw1&iF8H+s% z-^S?l$}-Rbn)Y@`6jeGTFh>O^%GA)!mwWz3TetC^xN`<8sZcMe%!5K8+eJjIQZ!F+ zmmmK6Q?z7`>Q~UXhtExL3BnTAs{60OO5OgjLp=erE50eg{5CF(5yr4D77!+_DzxC} z+!}a#{?lbDJ#+$?jzd{@YA+>K_xCj#8B?XHl%3BIK~?)Ir6G%tfpjRDVxHiR@S$Lj z+9zR3o-$$-Ghul!QPZU`3-eRv6uln9AL^cs8NCE%#42}cPJBJ#<8L&faN%zrb_Me+owxe%ylXSvjy``1MtCF#8U&AxgeDwmwGJKONlNp7s~7%N zhAqKx0jcNn1?VV|l;J}}bL^M6wRDq8da?SNx$aB5)hYh8a^Gd^`nxv@$mU*IO}dDz zW=!R$s~cE6us%fE6xIj*H90*X0o`!E9Y5TRc|>;%K|A|#4(sINWtujoTCyK0N$^<@ z!?068Ty%rZ@E6nhh<1k1=?B|QPoHG+Eh0Mei2aAo`~(~OX368ew=G-dBP1qn8}vwu zD~Yw6MWNMFKJ~TyIARHI(K;=tWwS5xt7Gb4khkO`jafUdVo^%pIXB;BJ8g4mT4E;C ze!JYIa9F_hYS=sU&4;g1gOOxhE_`;AlC3RVSvXR_i@r~!u&@;d-*PX{(uKOD)c2YD zW&Gw-xhSlj5^Lrn>*rZ+F^jn^h# zii^1=X6tk(PZPOyDWtz*w?4{xXSErgDAT<$=lJGy&wrq5J}@|*#KQa}eTAH!bB?<9 zh>)eIG|93Y^OscZw;N(aE`8t_ODcKIUqXxY`yEjJg_!&3q<8q;5t7M94;P_`t zS|s}tDTstC{A~oC{+i5wAMEX1fWjm5KK-=$R{iKiLUfZ1#om9_oJw*iMx|cVUn$bp zCV%uZ)i63$rQCKd^YbT?d%6e#9*(gn>+?zPrqR-6lSJ%N;c;$|~n@ci18AHYSTeKi*c4o`yC|zqGN{fOuZ4bAq zfantsh9eDOMVTcgl6TZ5g~^4G-P^>EN_{Xogs}b=uH%bJ@6{x}^LvrFdAc@bed(epoqm zuvH2T6Ts%r>Eq4cQ$)(XZI8w7xbMYCly8Wbx!>ZkyDl86?B}*Di{cKgt0)6nTk1I;d!)~Z96su}3r9z{Wi(cUfe&ARMLtHF}BKP;I zP)jSD$^jJ*2cOaLAvFw#1{EUco6n*(XMS*s%&lR$dRy8)t%08@62`H_GVb3lo*``-A{eyx2 zk->0e$a!OyCibJFV4okF7{N&?A& z*5}UJEPHNP#l_}!{VlDX3Ro(L3+WxZ_}*-a%>)JEz8yc%_lTLUtG~_ee(c@TlmgYw z_t7RVoa>BqG1JR>ybZb6+np8CJ8o-YzwFBW{aYmcFY-vz8<(nD^j!|s(NChATiEFK zVo-^OCgxat&}--gC>DG=kT_^AutK=4kLTRBdz1~#pBD;{Ej zSs)3KnAM^F^Zs2240+o|Nf&K#>q*E)yRnl#Q4d^4kes98ikR0L$01uD;4_lbb}uBL6%AGGbf@N;`h;ySt{%8VmuMc$DZ_y(&9KWSUmm+ zyQM*=?-0>&;fON*^pj@_WESJ9p-64Pa=ib1%5bViQUXHPoHU`7LI1$1x>~~Okk}%; z`dbFhy%doiq`<%F*g3c`VUc-tHF3)%B0$rJ{H(u3}{!=jaH6=0GOk0?5mP-}zclHieUb^W==@(nIztoTCL&gc>vRqU z9@MREtrHK;qQ!M#fF)dE;SB30{57MMYnA}VE;^yY>1u#C<2W~i_fmi-=pfQUc-uYS zOwG*vo32Hkq4A(S=z2C=>6cUV-DR1hiNt4Vn6q~*?@KqR6X<$ldJ0CON|=knNDA@_ z?Y`g~DY(LBl*|pR5BPaKujc|fKlYz_6jb7JrG1Lbs{0v;a@T`26g1;1x47uO4LDPr zvbqV76G04TXI73RcL&p#_M72_dErZQ2TnM1Gd0^WtTb z&*|QBCU77QY(P_)S!t*x1tvVcgp`M7%(_UWNNs)z@$VnH#Dbj=;g&&6rti`m`Q${c zchv5BWEELx7uKh#DEaLpy%pj@`{Gtd+MY*qyi}h51iDYHF6`}~k)tnHX)y|F8l~^p zxdLUzPGGva!~B*kOcu5x4V_r<4^+31kCOUf!bGyh&f_A-GxN<}*;c~?5G1ni?O_f_ zQ_@49M&q8;RWgeINZenEOm*AUm)~N$hy0eFG(Vz5oGUR&G~hj>>Se*gLxh1A@uDVj z_UE+=p`o>lp}y}+gLmmCowuvrE6Aerr5zZ%9U1^7{oU_`rkL=-0M*&g(<+Itq*`in z43`x%^S+1R(=BFB=9D6@h52fz)Tu+t&^KefFtrK9pl##**=2-psr5RUOTXV5)7o)x zsTVm!lINhvLii=ud99{EagRzag}uLbwrNcAJ=hXpoM2oB`$i_kW|Ko>TX`qo)mxU0 zQhVFWia)94td9+-2e2s0i>2WC@J>S5RLPa%$?5FrvpPwWMjvGgay4Q4M9U|f)dCjq z6@^RjKe6es-J6-0F0lnT59&)t4T1OZD;?ZyAOcr-`wN()sVOiSI`-9e3AQ^QMe=Cq zc*^(1KJZYxB$~P~GPOvg9CYzk^7Hg5+}Xv4TgCk4^uze*kaUhH;ZoH9taCh+l6zP2 zq2Pvz+W>t0i}F;Yw2{1iSjA9mM_;M99W6o`Qd83+!EM|qiC~LqHVtKq)@E1zZ*(i`}MS=pF`L=36?gFiSoVY634<>SJHu>JBaZjIk6-^ zZ0gtk4t1!5cYmK#uN;=>;{BUj1Z@smyeDn9?}n=a4&FJ6jJX){`|6jX5D{524br_g z=VMR%sOD@orqQkkj1Hq~UzBF2Lv?*XWw|1k86E>+HGJpfBUwfx(2DC6^p|wwpHNxd zp5;$^AIg*JWlLf}Hi_duo|Tl@?$_c2F31)8sZ9vYnM(Rwxm{%3YBk^sIp_LTlv2@c1WDJ;n(3(7 z%yz$HOt9UKxCudZX~y&6xG*j2)^ypUGt4c-gc_s2<;}G@>Shu{CoVnx1q6QBl+H!z zNw+$f9pWa&$&*KXFNJmV3ljs)=G*GFFTX(JA+JRQgKeOH%K-VYw6IX(GW|!G2j+t42wQVX{*=k%G&HR~G$#pt|Ufq>Mk{g60rzGe znBDQrs*lTN(e}v=+_GPVvdEK;u#loPTEy|C-ix})#ZAVdG!f0x9fp06r6-CbZ*`GX z0|PdOIxyfxhn5si>Auj0PMmC%%Hnb;gw8!&h6nIP3w+(g!2B+$zzPR76enJ-DT1z%>47>krb?5wZ7G296K0P7LW z5klT;HGNp5RMU20XFlPk3bUoq53fu1r&+4#fK*@Wx-%UrJ6c64=`D_w)%mu@YIRvN zjf+`bLPL|??4);IBwLdt{fpWzKC#UQ_w_cjm*w9tb##kAB*0o^<`xN&ndB$vWa%o> zo~pflEQI`%HWv=3l|*(%1Jblidg!TMOfDEj+1U=Aow9ZJsgrC0?JVl?8f~rS|X21`%y|d$?0;^Zo@aN zkCXB3L}b^L@7qH8#9doe?&waYVpo_o)soqN^f^NCArS@8Hw|Mo*7O<5aH(}5)^ z`xvd&rh69Gr#*-Mt@4j`LhX%Bq_Bxc?z}w6-!(keee;tr7S8U{=$AE>*c@wd(iCCu zDj5!#=9>hFgM`ooRs4KWnL;-x&$h?Dnfq?6O`&+d2mPALB`Dd5Wa(pzQ!pZ_Wn|BA ziEfSwvJC-gL*@xt>X!&HrNwp}iD?(2lbAXLE`W#mXEv75nO_0p-RN_==wzLU<24=E zsM|sa^GBTFzmw(O#x<~HVJTKlQ&YuA7iYGj>U48bT z!ogN`@q?233HmM%^hSr#@Fj;->T~{Pd(kLRvOtH3LB-~4K!$9!Dn6Jq+^r2o9H{E% zqA7&fqmh;?!0xgRgLd zm}w0rIs0M0&ddNwQTed5@ThCVqAXn(o*@BShMcWcYSJG(zl|U%d~q4#FkA9#wt^>~ z`36jx^f>f=KHXWRuy0#Oruco=5+wzfH6O1TX``fFh|xPwK2u<$!Zph*OIyHy1AWtO zPim6!?iY~WbP}N5da<2UtdvTsEfF%ke_v`0+l(Suz4o1pTDZMlVxZw&?54R34x?c6 zp`^-aTd!*y-(Q9j5x42STjZ}{&rvkWp35n>P}oIVL8F06CGY>lo`q<7jS?tDE7l-< ziCyx^#Y9HEhi=bk3;TFN`N#d^shID4juGaehhJrrNWuh(%;95BD~tNM zs&<>qvASP9wW8)(>G28v^~)Y9PeZgGj;Y}4mdnXy62 znq(dmvZubOWznDW;?(g-rHc6^twElPFy!Ynt(Gifn|2#AF9L>(HN%e!l}ZjftX-pU z?8ViJ{0q9k<%Mv7+GW0W$?zAG=lqi70@V6Wd99dFp|x#sQSDWpxxv@~ zHHX&P^lBlu;x`ZGvRm{1hpFz)SlHw&R|1F_`VXR$UAK__-SGC*2pThK%z^@#m`wx9 zry-?V_iIo8gL$^HGvt2(YI?%@G@m}rHK0=?VK&=|3TmX>MzitCWpg3IY9m4n8@Og; zT=bRt|4JRYL}r4NzbzzFTD0&rVs?Ja*djcQ9t_|o&A6~O`N_2krpd4>VROZZ(h0M_ zq9q%5E4eT=>!z8m$uq_3p=)x4zQODwk8rW-f7B&K(aEmwLY1U@#&wehg`wg4<@7i~ z=uFHrz(!L6p6OSGcRxeMAQ?#N4D5f*i_{k{b++cQ#`TTJ@A)neNcNu_nsGK!P3?ZvgmGGo?czpkZcM8L2 zQ;Pe}RV5@^6uj9-D|{J#tK<`zn%r-8gmk*!96UFxXr{S572Mrp*}u4traKg)CPN6Z zD(i4>9>by@D;SFb5zL^oaNZe>w5^G9BG0yer?zDBEl7jD zR5+vDk7Mxdsf=xMP>C9{Gh38mZ24|IZ9%3m6q0S|f*q-=T)d|E1lNe!o?i$hB68l{ z?X5+@#YS0@0Gh%CXJek&{f*eGC2`2M`+3KQiw6Nsbcxf(NgpL^O@F-A@v#V~lG5e; zbRl(NE z5xD1b1?8g@FI4EOpwOKLolXwPRi-5O_c0fQ4Dhz4^sEH#k(e%B##!rq=e#9$x&9#- zGfdmJWbOlIo3k+Hdi&Z&QT^x?*LDqvbAE3v1FG!gCz=8QF>}@DVqt&@BKVooV_dJW zrjSMAY@Y1xkde#FU(*#a7dcTAgVH^DEO+f6s*+~8)l3Ub&Em&V+TdOMVqZ@W8Q8#} z^@8(?jCnDM5)SP-1ty2jIeT{H!=6g}CCpX)!Ph(=w6_V)y%G@WpeazwrwH+^63JrW zqwN*G?Fj#5Dv}&gMyJ}R2{@iLVQ-tj8m07o+u4YE+D zKUy@EYqSp6i2bfvWvB8v2#0H-x{13y`IebJLOxByZpT$q+Mlj{Z<&(r8gaTJXIp<( zc&%f^7b@rzKeM!~brn1lFx*xv@8@YkC>nO$Otf?{D2rfwG8J*LZQ+3+EY3_TTKlD7 zvBgriD6i=pRw+nl-;-ZyiYrvF#KKtkNFudTw-YBfX-f=ZzWHETEvK<*C!;m^)*$_9 z!bt(Xhm8`|HXmx>nuk)>MDwgX33Ep$KhnA|Jg2_B+#zItl(QitfwQDqV=>KoQ8eCD zMTVOQ5FzdXjS3MOo`1RULgTJ|qhnIAo*D;B z#*5r!0gB{Pqy43B;#J-L!EILWx9_W|(K>Z1@b830L#`c;0yGtqTM|RALoI&#A39%M zw&@;=WjB($$!x_r8fMb;D;Kz1CEW5Wj2feMO0_F&wi%h6Y*;(~HgB=ao!^49C~LNy zX^X&vfd7Tz5LyNJL}Z`Z)porB54_GETp1Pv^ zjk~GN<$u4jZ#Hkq+HVj&Xz0S8S@cc+-Bb;Z=iE%LAHM7~GqY;)+fQRcV}`TnP<^?U-B-k3IQpwH zySw$QJR!ZQI+8SZ;{Jtiki*)=KwnfYV(yX!{D~HPZX5Y}VrD&Q9(Q?vX%d5q#s->z z;@3QH{)m+H3@=ef8t!8=f~hit`iO`IcU=}Fy6Zk8&w(C^jyk;))OpuxpValcoMDR0 zXFn_h!MsG0E|c7FKeD--Ra61PuyiuF_vB=vhYSbo_G~LA$`Hz%yEKRKTBM}?w=(x1 z6chJ(ECx)J?6d~Zo48QvR2CZ49B(( zXyBXDTw=WBpYQo62hETBo{Hx$8LQ@cwPqE#+tG3C40Sk_&9ajntAz(Qt6~u*)=|=% zq`53UkQ;wZl^bK#+$_ryUh8bKK%%E)aA5Lc?_75%;6=(Ooa)|N?kYJV$fz=TB)ji! zwG7jv+kUybyN%}D=biZMwd}?^y0?K#>_T2R$X{Yc=G@uX@)d@a(c2Mw-!yDK=4=0* z?CxH~#G5yo0#c$vD%d&fnm=M7HG`nAFhfbGcraE+!jpka&_TrMN=i~9wE?rts&l%9 zQN>f`Qf(tj{Dtnd5|s)+Z-(ffXveV|xl<;y`>JxwEQG>zQq$>cv=qaWY5C*J=?em( zHqXI47si1Y&30V9(^f?7Y97ufvaeB()Nj|_ByktdO)Iignj5rXH>VPf7F!1o5IvT- znt#x`y;w~=%KaFF=YO}`&||-9ssyS@fL87~FE4XX9DVq@;orAa(KMg*ab%5(DEtTR znn#MByY8fS8Tdkb z_w$jSb|_;OB(VeWu|qrNlRPdk^p13qh})n1{#s_l<-`KU4>hUrs2c4-x#QHt2t7lIGSwVS2H_9TDN z)FFg#G74D9-{txAV&WVoE*a*jPp{Cezi9tr66E`}h!ZUQMKY6m-SuET=&h57K?zMz z(3!DVa@M+3BoDHfbHsE5OJLl4%j;1FW0Cd;@>x**^{*L&f8LQ9vCj%AGFBO3M^1SC zZPZ$j_+zBsnV%&vg~npO+Y7)80r{!G$q9*9(4H0AS}?5>%Q1;-3b**@QD0yf@&^Dl z1%G?R6aI@g1rVQTuNbxeFoA)n|DRt?!-9uQTsnnY>~kfJ*VT>A#;D2>tq1(*wn&r2wHH^^WU} zcUKgNt(`5H1kD>j4Abj$Vr;oT648~FMrWjjxgcTp&5S^yqQXxy*3XAwC?61w{=XfCnwz=E1(czWyUC z>zHdpz~Geyjpr@9iq!+Yv1QFGLK6783$6ZgV66ZEssW0~r_SdyiJw0~xmrId3guFR zBeWXHSZMK3Z*Cx!5;>qL&hdLsMqnypd+)bDD<~7riizpuTJU=DJmz+(4vhBe-PAkv zKC@XA>#GZ)g#)W?!j<=OJ{yW{cBJWKJNoAYzN`HW)~Mk=eokn|AJlqSnhDZ<4HP@f zYKWZ>&jVJ8!oZmL@I&1+^97c^d3v0`JKid0HN&BL>bq9*8$uJhi-0lFDE}~d8%WX< zLjO=ms#oik7{0ZhKV5@?kNU_7E5#d9w!Qs4F>$(yq9*4J8Z?96yaE*5kaB$QC*qyO1M=Xn#%XKgawcm}wT|?v!AA zu4 zkyE%|6y}W1Ki;Cmxeu?y^1!<_i{31`HHnAl7vacl_Tb+k-Um`6qxC)Xt>`w6B# zW>GQ4G8#;OWVkiF@+~Fvt&jM>jT$D=EJi$J3~8kugQ>t~8jg+?7>CRriE3`}74OHr z*yg({Zokcg&V|ejI<$FIj{CT07R5%+`NWTp;X?E(6P)oOag^>1fQI2tMolTx~y$gVeQ-I+cXN7S}cZr7i$7ekx`Y-rFiLNDdTZjQ9B1b?H%zP zS~reVIz)=ecS?otjAO3km=8tggr@J6bU;Eu2iHs28V1K z*|R43QDI0v#fJ&8BkPDP|H4^bHknM$F}MChGkVFuGG3frt6`Z%kVz$dqBREfZp;<4 zCx~{-$mOi?hs;xjY=hF262mQBqW$PIn*e2|kyKn=|B8}w;eDU$Fd&=dZWBU4yRSz# zl}<7BSuHY22G?ctmyZ%v0e+H;j)w7Fy7L+s&Ys*`W!M-La3o z#e~SQNoDd#Z_Ut6twnc;jLM8EW|r}1Yz<|L9XsdM3o*{vR;6OJunUbER#RH6v~6$N zwYLvlL(VMxw4Pulnp{oHv<>px^E>M%Yvi~kA6Jv(@=vYH+CeBLY2aD2_I8p5h~>GD z%oKVou~gk&SKeMlMmvYY>}2a_t9^}QC3aJtA8yLj=UoJ2HI2v-v2usY`m2E~e3OdL zS40&Fw{r}R#rbvE4zqf#*J-6gCwoMWVR)#LY5k3v_u-31r|-23P<-ks8{T~?*hr>0 zEr`2OEpKA@sx_!);dYv#tYGR-^NivL5|TL!fiuhHHWC=R8#Q{17&y;y_0yA*eKDDKeW?(Xic z#oZ+Y_ux|O-96`?d1vmo`5()Tw?NxrsjWS-iiJGwO^Zbg=!-}wv#XA zp}o__iBHK#;O6ZjfD@!JT=wCx{Y0C>M{aQPy3K4wb0p#oh+2he?#EaU`otweBzQs$ zMvsm$C?%GIv!hcZ5S!PNTEXdE{#Bx<#FO$;Dh2YrcBca~`Ukf)*~_MudifFUtviGJ zPbzN+pF}96TLU4E5>F52iF^htBMQM?knZ8R5BO@=v%n=o>g zg+}5pBEFNk6HraYmSt4L(F9^rs9)T7)O3H!+?`WaC&{MHQfbCh>(hb@aH9R(Ps=ofC7(hPHWosqojuqmx8C@jvHahK_`MZhQm z{#(W61aPa}kX&!X81GI&EXp6xJWTSkjCa_#hYRb{*jhZ#rC}wOUxtU$UKFX%;L+SL zaz=S`oD@{n5^9O{*dao5dhIMl0s?UgWMO0xQA_2&fGLDzbJaP+rWRJ_ifOiG+oXrKiC%jj;G+G|$=XL6$PQXUvlnQbYsCUdanMDJPZaDN z6aP-h$5Z;t#qCINVkv4_(22pvaqYSxVZBE`xwldLXta_lb*ZdA+y2R~s-RO64ptqG zhM_I=*BnhR@wR>V0j_iW=T5bWPn`+&k|f#2pQD2JT6PEsaRo$XrgT=N z8a3K+G*2lqKE<@xjiV^aG!t24dhR=~V<6+YIlNz%L*KwWt_M#Mp&moARp4+AkC&rwMcuUWxreFv^lf{?4 zeK*M~87=Yn*4JP&AXBVsa`ROthIm6S8hHS>{L2|y)lh?-Z>w6_T7-IK&5N~X)ia1aJnPK(*#==UO)~vb zOHQk5UQn~pA>O>MQ?LDe({x(z)1WG6eLAIe;%4LdllU7cGfVBp^UIhDT@AoSA+>VC zD5Np8BiK>Eo>h^vOESuj3eWtip)~l1EpoSQw=B4ZxGvC?MaylJgny|}+wEJ`yyqd# zXv1YpW>fHD*X17g}V?dal+7a=N2}v1AXUBGy+fuRYPE)U(t}NGJz#!u0jL zs~uQQ>XBIfdn9(~KyRJJ>ada<3cnjtiIlI@# zWqcGhW8Z)X1Pz)e0&PbjGYiBZ&#HjFxW4sC>_Qaf>QYO~O)6+oKwci9nWF;eg2aoN zVCd6^OF1h9ZP3Nrw2D9V9DhOfy3eFU@Ww8_-QLBa5xxqvC4R9Q{X3wK@X%8W6{nLC zE`2$A)D`N!Jh zC~cgSfK9+5Qsv{;_f*qVEksn6m*0Hr-OwX!Y+T?X{`T$LR@H$Y({j~3j(63msrdJg z4<+(Om;2Pof(`5qf1`r}1C#$cezfxCVogg*i}>07t+}-|nWGq`T+j)7WZB_1EHjgs z%6BFErlRhWoy?rx;ppH{OZ=ri$a3r6=YpS=Fr3l17=V5!C;p31eyZ+iV4UM13?I(w z6Y-neksFeqW_xgSOBVe8*_K4>`3s`yQ2Nn>k>tYvbS4(3P(VBRKRVL~k&u7+!~Y3S z|JR?mfDGFE7<*p!$_)TJ7ZO68^3eJ5%tha2?EYbAci(6NP0;XpP)1xvMnqnpl#d7E z_m#Qp4fvS_M?zv49tlOvSOp7Uo&j~98xd2Rn@n}P)*2ezosT|D3l-p>*O3hCLH&2| zr|i!jKlXPFA+g3wb<}T(brXpSle->o3l43#WMy@1o3eS_IXT7oHEW$d1w-MOPJ>L~OPI5=GWN=d1B zI5{}@31c1zfBTzC!A=L|3|0?hJ8)^m9gD+0-=G-dAchYAy>briY^TSGog)fsl6!q{UoQAs`cz=$G5;^EE+I1ppyJIjU;bIXE!r;tm$0 zR200GBse|XEr2Td2zAbpsCicb>ZDV*e}Di}u5^89Z#A_+)f|Z_kVFuLb0C!K6&U@` zd83aBfO!?{(SZ*3FBWs~P7%?)04ftmrZZ$X=hD0<>lS~nO&4{#P{Avz-w1M3FGd__ zXmDQY;C!2ar2=r5gfzssw;r!W#pQoFX={YWHfyKLdFLcgyrUQ6#{J@j>m{nO6)9~j zMtK`{-iulS;7fS(h6Kf$=Ub zOSWDT&MkZp_SV^1u=T3T5pqUW7W3X%Mu@*ZSw>K<|2Iew6z{6Ixf!$J#yPa;s*tHt z-u`=4X{}^JaYwE;B^6a(NzL1|CYw0$Fdd5$E-DhrbV~bJBm+f3{?UP*c1$u;m3)Gl z@}DB@_;+YKQd;#=E0#QwKiWD>p}IdzjLpHggoOEsJa7S$`6!oHH}gV-oK2OBXY~b= zm=qJ6508&#>q{M$F~nd>U)Qsh2;{>w&4O`AHtuRBg@R;U!Ao;Z>+CR{bH7iA?lWyyJ3VVJ`feQr-wZtbX(@ zH`mJ?t>fOv=;}7-wotk-qKrA6=yV~Tp5I)-Ck1$#DIK?$7BYA^@~&+8zS@ZjaJ9tv z5|FiAqBJ>)hPeu^h&|XS<-^3r`dpR$4NTCf_x|rd*`l4WAHY$BpI&c0WKb!f!Pg;L zAlXA1e>L;zdmA}3^VK?LD4Hn1@BLq?HswNtVuqRRQJ;#;#m!ry-|jH4 zS*}~BYaO=U7CNMWX#F_zm1Y02#X?T@D%I~j9O;zc8{kfR0Or&UYOh#z(VtIsCVPW@ z=u9XfD`~d@_P2J*O{~&WYMbgp zKeV(wTuxM|8rY8RozlH=R=JmD@omlw3c&XKgdxuaaDT4@XpZgG#NDXew8te>!Z#uOy3JhKRJ0APZ?Mk5cfF#=-Ih}N zGW3rJF}nQQ^&*n!LP2}t+UGJ?VE_(?E&L4z#yZi~IM*-=b8hS;J?t__l$eAZf=5|I-z_v0s0SH^rfnR|Ojse7_o>yJhID$Hgjkg^$?FR`uEH>iGDGoncW<0b#wyD5hOa#ll8}HLmgmA=R?a zL9}~!%*IG5uF_b)P3nq)PKB_$xXO0sHtoTPRj&+VpuN0ZQ3l+4nQPjqbP}iTo4(6^ zH_|psC;3CYc?XT~A4Oy^_`CINK*0OmbQ%LZ4Nd5~cTf2p;rz6#yC?)4*-h7@|CwXo z{cjO>U!kvr`+pFi|9N8if7{Xh2Lyv5wYY9QtAFq*Stl0A32%y?#m1}u4%m0`uJH7( zv+Zb^Ou^kDvE(+tSD`6e4FLcGd8IjTqHmcFAc80z0h0}x>`t`d*njqUvkTDeZr_tt zzF*rar$*_5VPEwTonM*M-#UQ}hzA)6-D0P|JoA%v zv-#Pu38p>B0ku*>llFRcXEhVg=@9*xGX(|UDO`;?{d!X}MD+m{79IgLu%jd33({)Sla-bhHdbNxfA?p`9)uErK;%QgWW$;%8Tu2O+ShQ{0U~_3;nzXPZ3W?Hw8d-TB_#-p>3T z@Tw{)5o?&^r{)GTetjn+b3Lb(v#SD@XTEd%84?0#VQDF^2M!GlWfA=zSXQLT?h@Y-pJj?mODYS(d&OvE!aj(FMk1^2%SXoTrjbLL zM|Ju0r7|MUuuE?Iy8`?J3TU|+BH<+kJYmGDUWr_oek!@K^pa@2+yB$KP&dUOB7>QZZb1lBO>NkbHURq}2DP^tD!57?5zuMq{6<4VA?$-kfUEQGMmm|h z;g|%L>&VPn+pNFH`m0!kn8lf4@87?l%j21L6(8Y{TB-5(7j~0KxsCt2+qNnX{>kFL ze>fGnQFkbo2F1u|p9Z~OeGf3;`U_e9J5yW?7*PYOTvRkz!%pVFjM=KgACz^iAE9Sj zAC`EJ_QRXa54H&k_VMuvE>_ZPjgD_Kj_l0V2cwRboj2Np{)~(d9I+qglUKYa^6}=} z2Q{~}7_0|JiA%{1O??jd6`LAtn&qp}p-`#Sg-|kM|8lTXVfyI6Xp+ATq6lS77e^8w{TcyVPM?MMLqhRBa#O)cSI7GJ!TT zy{A8#c)HYXT!z@E=W|0eBL;702RM?s2}Tnu6d@7eA2Qx%SSio%8`?rR&CHl^f_mP5 zd5PO$m6=pgRt4x!0!nhlSY&2a;0_RM6BhlV{^W+}$x@9}P^bqwL-O6cqU>sZJ3tB$ zD-Ih37*RW(!H6%m9e16Hc>swU=u*%s*KGJ;o|5t>kq;ojO}EPwbZ6;>k`zQ9o_b`( zFFPPCuC2lN>IuSxb=SEqJJ3Q&C>LNCaX-y!IcwcgFc)yY( zAAt2P%ZLRh^g>n27A4m=sCM^$wzhhd>of_0`RRH_)hZR?0(c7uH+=5iUmvf6HZrW2 z+TGLQP01QhmrCAU*l_D<=tRj0J}M@R%cM1#X={Zlg!y;^dS7GX>26h91LtX$x z=H>vJ^Y*^|VJ%$+#q=9tssv5r&WQoB+r z>5lm`tpqs2wlghaE0@e_oeEmoK54m7k#t*(4h)n^aKEQ>cdS?1ReGPZp`%o^ma1r- zF>SXeLI7HYA;Hz`Av}SGiD`hZ1Vd$>J@g}G7Gh|R9Ub7Z$dj!92UT@~)hwvP5;GY* zoV7b1=OksIkcNq8C+k-|2&I5sGFK|nUt9X}sS;bymlck3CP&BRP^?r`{@m5YrPmFe zi|bNHQx(fKO5E~%%Vib_eVSPlTZ4>=iIJK%4n6+x#f^IsQp5re7IzPDF0I==> zaJM*qE9mz8h95VfWh0?YML0H{haO{G)^vlRGxk01``x3fO1u}e7(;nN@o|NF-?;^e z090nZz!I&fB@!V~28(?!*P8p#cxZI^N54L@=6JREW2;^O|I8wJ8D}hJ;7>kjI?ks9 z`Yj?RL`TPf4KYGHDm@n6q`~&{&Wb*nwWKq3=lUd>6H1(xmzQhz;%;ixfBu>4xEzm+ z^j6qT|6`$aDvj``ATbb|L`!fW3^@~rDhwS6nSet%A*re>Gax4b4pO;lJ9rKevEOJh zHE(@-YX9PMqJ9k}VKy%piH8@Dql!GO-SGBB#T?AYx55r5l^ZB4sgVFS#ydnQ0I1eP zA~Vx_PntH%p!sxdlo{j@upW_wZO*G>vEI+#mCG2P|E#XI)BvBv27O9lgpD9=9P^DJ5gx zchp(bti>Z9WC=phrdp*YIb`wZVWY$2PVu>W<`eMP+M5LS z3Nap4%l!`XVl}LX#;Jy|UjQNR?GqC(QBbPN@A2xOKVOS@8FhBK9LTayDTMrXT#$ta+T+oJ2$O8c59v> z=OX*I^A!U6VX_-K#Vc{#J(T5Lz)Bwc-avPXR!etFc+dKzUQc65UqaJzopJ?W*5JI z!LGwcj}6#u&&vylcP$gOJnYR#C;DQ2^kZj#-{`pUl!w0mH?;BtR=ol_=)kJCwBdM8 zGqTP=OLS@9N+gU%FAy437gslTM|1oJM837{X|&!dqe*38(36`FSG-KJ+WoQ7AlK{1 z596)4$*!5N$BRWxsP$9jF;wa4-UScI8Ea`&iGd~t4(h9HsPQa13?hwfNpVUkg>*jkoZ05n1-|7~4#^;`(kr1(_>fIiGtn^Z;sT=0wxdkD38CI)21H^lUpERKLiMFrN$`s{`&arCeM zKya731c4(fds1{@!j2S^WxYVVNIJ84H<<}gcsvfKgqknIrBvQdc~oXm4X?sy7;HKl zeUJGjY?!;}D+om7^R>+i2c1O#Y3-BPD#n-T>1M@|*pVJUT`C{BlONM-R+jltlD@LF zABh#T_(jpi%avYC!*+KRJdo`_&|nlt6+HwfZuvz;#~#^Vi~#GT6jLBD8&B}qWxOTm z`ZXm#e6=1sDTB*xRjeIHqZq^QaT_}O_7^aD7n{$Vbs*r|rW1DE_iFsrJ;f9w7v1RS z%rzU+t5%nx*7$%L9c^(N&uHA}v`oj7P*pz0fUuuqDP;vs?3u!10lWIAM#X|m@waF9Se@o)3F%d%j@W|{5U67h$T}l3IAjei^QhUrLC<4+!Nif;Men` zzYxM^o=vYisgm+igM$8%xk=SAzc97$p1@pLN5u16*GmM_c=0u<#CHVtQ?Lu+^Zdx3 z;In^*ALmlHS5GwfoTDf^u|(-V8;p{s%%#cbY#zslG(PnK4c`vvUV60}QGG`lp^P4w zNBz;`;;kjF+0_~4JBrcS;U0+{dC!ao2?>dw;3%yd{w?=Ja!%Out1BT1iIhqmTpqV- zrszGM0EtVc)=}OTv*EAh3GF0;Ch;^xBFe+beD=V+YbzVe#lP#_df$7cj5{$r4DNb( zGd|xu5$bF{_493UMHNQRG6?f|qtq&0a_&?oI<-Pdf1jo|EQy3~NYA|+{{zz#D&lpL z2Oq9Wbx2%ZTqh^yS(7#RGk6z&7)iFu&Y->s{%qG6E0^tVfV8A9{WB3MBHLAZT}C>> zN{wYqsxImYSZ&m9>;6L1Ww_+=BT!WyiC0u2oTw%r`ttnv`6~m=@XX*dm+$ZP5Siwu znTTmtCRwmls^4EJj|uL5>E>bHK|HinRF5zR8(_$~3)_x`XCVd;n+?7$PmC~QIO5u2IFFddZRA|hLq&~fNjvFpAv1PMoL zJ5t0*!h`t!8^y_2-%gbO9K-=z93NWi#}qz=ZLx!T_bFA zPJ7J6+6KB0c+G$nzcY}W5r2mr0~l@Vii-%7U#hHk&8U6NQN^#w&T2&lGI)(^%H1<> zelpAFwZ{Y+TcpWsxhC@W&0vPt5kw{(R?o#KRgFn@z3_%__`uw*QPMJe$hn&ga&)sj z){uHJ_sqYUz4STfJZ8*FaZY#d-X_{@IpyuEdyZqCVQM{UTcUt|F#X^*;lk{VLn)U6 z9dp!5Z>L@zXgsABY`0ytdm48GwqjVTOcH|>!}>|Q3tvwtp4uPW6WPu_=)6C^ey&(8;OX>$Bgi%Li-%Zzu zpH6nb7eKSAo?AP6-=f;1n%HjQ%N-jqQaFnq2kFy#3i;IXSsRa7T7lisUQFCqwsxOy z^;QR_`0DnGPMcSqVqO7cCM;Lmtd|hxi(I^EwEdcDW(;-g2ls zF6ZT}G0P*f`dsrh?cD!c!r2Q>mT_0fe+OVk6f>((R2P zTqT0S(2sfc)?cmkLRX|`!~@PGPgB^bCe)`wvsh=0RSzp+XnpqHFyo3=Q-ncnhfbIw zyQ!Kba3~A((XbLlYk3{DxwLRuzYi^-FHdvg+^Y+3Ge)LPcFjg3d>IR+PZ$0Aa;VrA zT!TnPAJqhxtos@q|q+cd{Y{EK0Q&`VFkN0DoMPr z+IN}PsS5;Z0qOv@HW#8SfNSP3;~W(m(ta~eq&73lNc^LP9@Ui$pVNd*R?xcCgYlF> zMP+`e(})_INi)1dBJ9W;*!HRxZMIyY;mkSM>s#IBS%Mm&D?!v*Pn?Q(1!WT5zyp7! z=R#IFp*czb3J;%_2%LfvPKk#(j9-PH#K zA&?!}Y3gpQj+u zYsc=aXHP-5Pop3JZuDp;ESbe8GWD(@2uiv-8I{&#czC&cWEph&{zMak50-8?ve(uO$aBnkq;4)42wm~-D(Z(Xbp9?^_d#dE)z>3A?HmK6Xx zeMB}%kyeSz2M^BYN2S-00jVT%YHB%GWyAFA;E@WRCad-64g`sV^}3?7H**>S$@u6b++}n$F!=&VRF9C z&Ci$mdwwIF{}kf&AzZ$tX%4ot93)-MP?w(&6zaXj5VYKheQTdU3Za$lGIjwWCA|*jMC)= z+WH{qAb|cQ@qQ}tFkzyloo@Z(>i?jrt(}WX?KyZ;t!wXgK=gMYNmnTbT=F;r;F5zi zOTflhyQO?q%bg;a9k=h}HW@e1zm|3S37 z)mUVW)9uoKw(cqVQ9CzNiCUI0q9l$=Y6w3Msk}wya}ao}oZ+zF5onJ(e-^+&9g5az zYuL^wGa4O&h=i1qde+Y11^E^7IQrZxG_B`@!-0PuX4MEZN|l!X2BEpw=m>*HhL<0R zdIvjNP%yA1FT=sUsWs8_z%Sf0SVHk52(8jk}i z*JxD6q(N5vLdfZX>2ud6UMwcap+P`E-FDV*G1AgFV%x>#C|##TO+#Y)gbi#_3OS8cBLSAy9>jfNd(L=X+)S z1Pw|8nmUKBVMU7JYh*7oEa|iB?hoKEnPUWU1mwA9F+P3r{~YkaLW^B~BM#^#G_T|P zVzu%FX{-!&YI?y=!&>wTLpn#g_*i4lann*>#_{AVr4 zs+PrZF%!uY)2I(2B>RV?$gsG~>o^;-S0Sibncff;;PCKY9nN%}NO3#w6f7zEl=Cg; zb~5A-+}gu{E|DAm^H|+dyK~xK{pQ2qW4m1}vOkFJXZ+}AS>6yVtRvgbL!LFS?Hh+R z{30x$2J0SouGm<`i>z1vB1B+vR1ktpuwbs>?>JsXEkYUv*RtQmMgiv^#CNhYFn`XQ z%W}}X`A*K2OgWG>BGw=%rs!^8B(vXt3SBxjx#&8&LSuEpNdC8>JOAw+b&VRP6I}?} z+9N34dqLVVG#b*H)b+e=?nN$%zbJuB@D)Bu*8$x`I?ZqyR_07XjFeN5#OBhcj@8uT ztod=0r?1cYTT2DK>sv$bdKh(V<&Pi^G{D#B5aEdI_7uTafYA+I(sZg{Dg zs>sEin@aEw-vunrFD?QS(<_B8&-pg5FkIT*Xv6i3HA_0pziUSXCoogo7VGmFGujIt zFp|%l5?T8j06j7Gr_jo8%A$eM>Iw1jN8)y-xKmYC9#y-oaEQX~nIwAX;Z?0$Uk|VS z#q`amr{~Jc8IDzmSbZU%{?#b_n|H;Rm+h(lR=%~qn-p*?Tw(Ea_bAmDX%;)|2h=v> z87>5J|8RIWwo}N^haeIgrBObCb0gY5mE(oawA?DN-|0NIhn{|PiuJ_S;a~d+L1*d< z_9`@9thX)NVD}-L@MazGitWMS`{SJJ*(Rb->#A?frHsX}N-ZqdeVAJWj{!KUuRzxB z3w2HH6oUF|%eu+qu5pU9Mx#Rl%@N*FNT6;qH}4dlYL!;ZLqt+>>@qzQsxS7y@ss1E ze_Ke~9?>yEQ(HlwARSUTW*Ad5RzX}H=x)uOcY^;|n*H}NoqW!oq3uL0V4G21Y4LQX z8rmz`(r<3|h2&DI*V(*J&ma`N!1sTAal-i?gP$`})oB}>MW`GW9)1#Et8YIAH0|#0 zmd0n0BW~8yVpM1q3lkmLd!uFSv$Ho8;~eU=-5mgnxRhWJNh{i-o@c|vl7maa2OlOR0U9zWm5==P(AGBWF;4Ff9W<; zOXHRuqpS!!b_1g8QJbQ=d}Mq)8^7!;JFqoSshT}X+aoP@x(+?g$vjtS%QoEb119LF zm4BMxJ&KT0>`E#=(T%EOI4aLd-e*>N5DwbRSXkT3^%zp|<a}G zt^A=@mfB_a+s*XP$i(1Azi0++uFm6qjZuXuDjL>&1QQoplAgzB{|W*$r-EhJPoz*p znds)xG&q@OmRK@S8{oVe3Q-Z(D0L|g;F>r z4V9n{PmJ@b*C(_?JUk02@4wgPM2O!pW5MoF5wDx^yH=tD<0PHp2vik&?y+KLwV!#f z+%4|O{Ew_U*Wv@TnwP%7O6U$rAjAmR1nO*RXeluYD}9{caV%u2w?e|vQd3b4`#FPX zN^P3av)pJMVhl&$(pg~h2&P}=y22G zi(~~vQ?B-yg`KTYdPPL+{opUluQCi)Z;5i1u@B80wPU#4!aoT-#!cEi%QP81?WEvx zJ~(N+%saPwej3j}ChF55KJ)3v`*|%JP0_ zNPQ&?8!45{FDyLlMv_Sp77k!A34w!b??(OF)E`Atz-?LZJ64Pq^%2UkLDSL#)d|3f zg2c#_G0_4bKf3=}@oZtvTK^RzT9|@bY|pd(4yMT$9BMJ__M?}xyrOY*J>F09-Mu4r zKOt$}pY#QkuQcb={-FJ=h_b47=~KVefYo-NmwDILyqV^jJZA+C8Fil85Wxfp>onY8 zL{&TR&fSUR_@9x_I$oJuNn7g6m2nDQA%n+aEj*Y0j;T!6>zzc8Gc%i;n}PQm_PBi6 zSvOV$T$U6D=7N(%WiO8>Qq7lloRAd)n;w~_XLK}yORf#KV;!tDU+(5cSf0`I4N%tR z5%~4(;+h?+&3)f#^Ic~Ma69k#3E2BI`&@JuDz&P3BbKC0t|OpPz+y{tk}zc}S8-gh zl0E0$pN#&O2dHU{;k*Sp&6RU-xa3lVVimE^wf#EJ@{|BzF>kF57{O`kdG31Uqd#4w zU#hik+cBy+J8Jwsa%4UXe&xTbrMn5q(}>?}ZRL5EHIl_KRbyx6!DZqATo19Xem)>k zgW^)*XY_PRhr%BZmkBGG3sMAlxVYJMq1q8YSkjUIdj$MS$O!7)cOnfUkw_I(XW(sM_0^i7Y6_b##UcY3Vw?Y3^(DCd|x?K$P3-IPBlu!fS@ zJn;+rivTSp4Sc+-*@*SV$Eti+CyqyJ$G}-U<9(f`mC9nY;>73lx?alST+fux`0((c z-s+WLGb>JT_M1H9_++Zbu7?|FFdPh~!X2+*Jc3One{ugbB&o2Z>viMI_fTc()Hbw@ z0@Ay3xN7jRZ&Mvj4W~k1!guoH4`Mspy1oZz_J${vG49Fed_=qk=2~H6=LWjTI4YTM zzpM=$sQ)lC$O{rO^jY(|=$}0Wo!?&1!R{+j$$j$zI(xq*@{&}nS0hxlUqtU!LB1XE z2G&`nBj{%U3AF?|I0ytC7}-!yA$>mLa*BeOS2Zzzs;P8j?pP_P+vBOgiJ z-%WPhkD!l}Iu#nO%2H5J*nKI zExYNU{gT-4JtZ|Yc!1}jn-@B{z{nj#tt}^nQMYQ-f^hfe8QOWQ`gAd|I#3S05Cr&3FcD_b1fSGu&%*KaC^w>Do@s5lfjBRZY%h0E->qfSmoT_jFEp}V^0_NkYul`s$=7P1=kLc@-*l{rHXiLbfU@%f zEo@znLou$Vae-@0k6R?AnKGBbu(gsmLHiOIgHi(gL8g>dnUBz}^Bs(stu@Dqk2%Ze z=8rQMXOASqrj4l{&M^G0jwb%A;F)bpFKA}yQMW0o3@*^cD!fL6xO~&qg}IR+xwxQad|#pKbch*=T(2cFvy9g>%q_XSvneUu+@?q!zmA-fmLBSt)C(ov;3 zupfMXx8@B;Mjl2zd3PLn)49?r@BcM3#(Y6DqAd*?&GH-eXX2#=s0p7zTJ#P%4hfTO>`|&xecmpiQ8_dJvrDfxlfeHV1x+BxKd#XUsB-OPbo$A20h&9&FHGZP2=YIx8pO zH$>ts-(k17u&~_*_3h53l&Vl89NF0UVYShya~0QCBc1XUy|WW!Ix9_?qX!mfh6G#Y zBYQ|@&S>X}V+O-mhU#JSWN)cEv7SRBzfX3G zu-I%Js@FPkCo*XHu}-vn^oEO?t0m?$e5dQVZCwGSe(yxnXwXN+K9Kv7$9W4znZHQ|cl<>eIJlT~4hR&B zNHSO|4oltl{_v+w&;@bB0~&zw;^Q1yFs|<@7PGQeo5HHazwHq^V|S2Pn(iGD7PjzY zlXzFo(p4=|N5RR7-P4t!R#EaU#NS%NGwml1fdMQOf0qKBOBGES~V)=eab z@!EF5zBs&O+zEdAT>7nwe>r<`Lx3#bjw7fJ$(<~_9?q3g60l3VxI_m!&zMF>3%JBQ z^#}>UCvnjn$uB`(p1KOBh8!XeiLEax={1o$KxMZMACDKT=U{J?ovKf~UEAMdl|%J|zuQD^J2{UmUj6d%qjh!}=(Atlx7=tW zJe>$OV+5ZSJD9S7jL=^VK7Fm%S)o{wG6Ft6{<-PTb=4}p>LOZ`#PAu+f3=zv3dj^` z9#m9RD!NvC+0lc<1~j{tD`6$pi-3wYHZ4y`!eWi5ZEj~khv$$)Cpg*?_(*Ri4~Y~M z6#SC(Jdv0?o<4k!A{uz@X;IZg&^4kSSwyf+l)n z%XpDViTHQrGqxCC%G6XXfL=rEn>LplU}=aNJTYS8d&?~;8DS6QZz>DfJ{Aqlm6!)g ze~+w!Is(YIJO&MV@9jeo(L}87&brLj&luJ)^{@7Wd-oaKO%~NLrLwXO^P9)X z3i;pdku3s_s;DkLJLa?3S(2Np?haSzE1wgXzxk>$jip*o@X$+3c{vARQt$Qh4e?&_ z<$VnuVPjAo7V;1t>|Y}Joy_Zt^ZvNk-k>Di0^YAOX?zMiV;JO9Q*(d5@~jDzm>*hj zbff#AF{9m=Db_4^MRaJv$8s*S!Ujf32SLJyXj6UvpRf4R!a& zlPskyAz8*GOSUW_215oZg-1n?WDCtmhOv!FV_&kDCF_tqWTa#)gV4}oCu??NZ46mP znDPC1I?wl$1aW9k!V0di|Hqa7hTyWIaI?u0^BMyefU^tZwZ!=NJtC)d3<^UNti>uTK_b zlBHzXM+t)HcC_z-v9aI<#l&|V0+M~^0ux?E+lmPXHlvPQxDoF>HW$D`>>r=0@V_Nt zRPZ3Ij`T&0<(QL6ky$=%9fI^SeSQd zw>MGr+QvA`p%i3DB;s~-=Tl-n;t1PrPK)6-m;qO8c;8Y zL&zV;Ej5y^Y?P(WiGaq<{hpoVFr;Qf%f&b)Y>xHp@58W-&tIJj16`GVm}Zh$z1VS@ zCBGW5`U2R*O+fjLl~}JtUV+>1ZZ0{WVj2(3j!~pG95~3|CmO)T<6l-)sW!ClZe?;x zOCfpc9+Mss*M60qDGn~bcz!DK!OrvMJZ@3V8JS|WI6k6`yzW*7d~J9#rv+{okUxKh z?|HY*%1Po*(}DeR!MfiD4qb`Ijn@XaU3&M<8){l6{r+hqyV}8W+PFXO!2Eu0Bv_z% zzj#Z6=hg+OSmAuC637qBAQK*$!knWDoSkMm2@^wVI(+voYAK(BK8%sDw(5{{a8jJh6GrN((y+vC+PM69ro?6-oWp=b?UGi4P`7Vg_&&RRE*VUg+I zK;<>I(JR`IJ-*F!H|?^LBnyGqBG~fi7 zGrt6+&`GN>+O9Qqs<%C-#Y?df@LPqS&Z{?^jxqwbVFT-Utwu1*i`|!29F##Oh9nF*3Pla@&pRaw= zWfY3Xh8-m(rpTf8zz1P6#klYr_!`T`1HtzS3|zcMBYh%LTJE9+hFm3c+k>Lk)W4$1 zY&5TdMJ^q?C}m;9QQ_m^eFu)%RE7F>NH3l90!-8#Ppz-O?AR5F`$Ao*`{|gj@S5rQ zF%*FKOjoINwS$rM9Ion*2htPY_HchGD^v1b%+0PWx$m)%nIUvzq^C^9=(1Kw0O0B^ z=x4j?-^G&ZxGT6YP2^B$1;BbB7Q6OH0-cgm%BK`q>p`d8Jun^OeSVL}))q^5BW`{b z-hqYn2kvj^)_vSTAz=5(DhWpR4)S?B% zyQ^Rsc!!3G0Oi)_{SD>>`_T?B2{T0!%dLt=dVqqEaK;pMA;#LhjuVyV4VK&F0a`@) zShXV~gtRlHoBiu(sG}!q=8=tNMKX8d>Ht_A&nZrmkeF`E zr1sE4sqPLYfaC& z7W($+;soDmdj1&UKYg9sDSG*rK!K?^QjDhh_37=b_9 z(<6nDA1aB+{aL$wA6148jh7RZ}DSgfT?o#4F%E_?Tk0`@VdUS!N3r|2a}y zyWE_TUxW3hwSfq9J<2Z#ub0x+R^0jf1^I9CU@S-QV{0^M?D1zWGs%h@i6LJUc$^SA zErP5W>opn>0Eu^47S=N=DEIi3vmhhU8=on~wJ#E#Z1KJ@U};t97Fu4?KJ@t8`#G7Z z#rg9hh6``5hJG?5JrALPsWpP|9A)M%N}5s6o#mU5g{7s!iBFKD-GXm^W zTYxyT#w`Dvd^q&L(=hSc3yEK&jd?y_+Qd2T)}+V^jQbwjAet}N&8N*lR#XV}ADVj? z>Q{+Y1l@<&=?+`d_&FC?9v*^t;acw#)6#&R3|1b*6_18Ge|lG%y7HaSswa8XuOdbv zO_J)*%UG`noJE;CWe2WXB;U1MJnGdrd4KO0S>0=Gan@``AJe3*t?jK6p2Rc{nv@&7 z(Pa$UfA*MdwQ<&0jb|3JTYb%}dqD8xJ&X}V#dw3DMI~CWf!N`-e<%Fj&mucDIMzFg zYs>Sgk9%BfOAyYdNT4BkUqs-F(I=v(&Yw8SrhrUV`ays8dI;`P_SjAJTNU1P6yXv% z=9-^b04+#tb>)npt}mL4S0cw*x2g};^3Ckm`}lkofSCcMJU6<*OoD)gW2J=jO;Opt>E6JHlIPL zp_qMS$BX*dj+=Ay^SQ(~Fv?_Y&t_$lc90kV;#Oz|02$Mca7OWK7ij@KFc7fDRLKD1 zmvdWK&~3Rc%mQ{^7b6LT)OjB+NEhy5P3Cc2rZQFQp7%}Os4Zdjeup<1fA>DjD&n{^ zF&b(t8lJZ5$+h}GKUnf(x7o@Ov{Qz*%lXwh`opbGZs9ST)-n6^{&c&fWER}IjSty5 zO~>t>Y_MCdXSxLJOp1yEtT?GUfIjQ9nf~@?t(zqORk(S^{!?s0R!EP{G5!-8fi>&E zt8@R>S>*?d4wJ%d%E%5xK|xVzPzOr^y&&7he~TS1~c0Li8NDk0tZh&=R~GHD-c<4*jhB*;SmLz!Q5!uLJ>j1qEqng0sQdD^ zyng3P$+t=QR&EUBn~wnm=jV19(0@6eACHzePq~ z^H({PxA={Jzo+QG6+4!bx-See(PiJxpbFS%a4h8bZ!>9u%%gI2eDVgUh;e9?n>oOI zZ;KNRA1j0s8MM3SjROwCa0BF9Hj2&R--&^14x@<1`YgdIc~W!sIHpNCKT`a!3B`;f zo+ixj6vYf5yv~Ibu}1YDq^L}(*cYnfUJGs+T&%6Vhaw@Z_>q*CFRMLc@W^%yQx-tB zp7zB&wR=`kL1hAcR_x5nDoAt#6;x>33Ry6idif+ZS?rS<&2X4bOdDcf|Dk zz|Cm7is{Pls;xJ+=E#|HtU}*DT_=7}tC(FyrcL9l)h^W8+9v#fa#(); +``` +5. Start instrumenting your code in your methods. Here are a few samples +```csharp + _logger.LogDebug("Debug level event from Microsoft.Logging"); + _logger.LogInformation("Informational level event from Microsoft.Logging"); + + // In this variant, we're adding structured properties RequestName and Duration that will have values MyRequest and the duration of the request. + // More on why you'll want to do this later. + _logger.LogInformation("{RequestName} {Duration}", "MyRequest", requestDuration); +``` + +### Using other logging providers +There are some third party providers that work with this approach, [SeriLog](https://serilog.net/), [NLog](http://nlog-project.org/) and [loggr](https://github.com/imobile3/Loggr.Extensions.Logging) are three examples. Each of these can be plugged into ASP.Net Core Logging and can also be used separately. SeriLog uses has a feature that allows enrichment of all messages sent from a logger, which can be useful to to output the service name, type, partition information. To leverage this capability with in the ASP.NET Core infrastructure, perform the following + +1. Add **Serilog**, **Serilog.Extensions.Logging**, **Serilog.Sinks.Observable** NuGet packages to the project. Also add **Serilog.Sinks.Literate** for this example, a better approach is shown later in this article +2. Create a LoggerConfiguration and the logger instance in SeriLog +```csharp + Log.Logger = new LoggerConfiguration().WriteTo.LiterateConsole().CreateLogger(); +``` +3. Add an SeriLog.ILogger argument to the service constructor and pass the newly created logger +```csharp + ServiceRuntime.RegisterServiceAsync("StatelessType", context => new Stateless(context, Log.Logger)).GetAwaiter().GetResult(); +``` +4. In the service constructor, add the following which creates the property enrichers for the ServiceTypeName, ServiceName, PartitionId and InstanceId properties of the service. It also adds it to the ASP.NET Core logging factory so the Microsoft.Extensions.Logging.ILogger can be used in your code. +```csharp + public Stateless(StatelessServiceContext context, Serilog.ILogger serilog) + : base(context) + { + PropertyEnricher[] properties = new PropertyEnricher[] + { + new PropertyEnricher("ServiceTypeName", context.ServiceTypeName), + new PropertyEnricher("ServiceName", context.ServiceName), + new PropertyEnricher("PartitionId", context.PartitionId), + new PropertyEnricher("InstanceId", context.ReplicaOrInstanceId), + }; + + serilog.ForContext(properties); + + _logger = new LoggerFactory().AddSerilog(serilog.ForContext(properties)).CreateLogger(); + } +``` +5. Instrument the code the same as when using ASP.NET Core without SiriLog. + +[!NOTE] It is not recommended that the static Log.Logger be used with this approach because Service Fabric can host multiple instances of the same service type within a single process. This would mean that the last writer of the property enrichers would have their values shown for all instances running. This is one reason why the _logger variable is a private member variable of the service class. This also means that the _logger must be made available to common code that may be used across services. + +## Which one should I use? +If your application cares deeply about performance, then EventSource is the best approach to use because it will **generally** use fewer resources and perform better than using ASP.NET Core logging or any of the thrid party solutions. This isn't an issue for many services, but if your service is very performance oriented using EventSource may be a better choice. Of course, to get the same benefits of structure logging, EventSource requires a large investement from the engineering team. The best way to determine what to choose for your project is to do a quick prototype of what you would do for each approach and then choose the approach that best fits your needs. + +# Event and log collection + +## Azure Diagnostics + +Beyond what Azure Monitoring already provides, Azure also provides a means of collecting events from each of the services to a central location. There are two articles that show how to configure event collection for [Windows](service-fabric-diagnostics-how-to-setup-wad.md) and [Linux](service-fabric-diagnostics-how-to-setup-lad.md). These articles show collecting the event data and sending it to Azure storage. This is very easily done in the portal or ARM template by enabling diagnostics. Turning this on collects a few event sources that Service Fabric automatically produces: + +- EventSource events and performance counters when using the Reliable Actor programming model. The events are enumerated in the article on [Diagnostic and performance monitoring for Reliable Actors](service-fabric-reliable-actors-diagnostics.md) +- EventSource events when using the Reliable Services programming model. The events are enumerated in the article on [Diagnostic functionality for Stateful Reliable Services](service-fabric-reliable-services-diagnostics.md) +- System events are emitted as ETW events. There are a large number of events that are emitted from Service Fabric as part of this category they include service placement, start/stop events. The best way to see the events emitted is to use [Visual Studio's diagnostic viewer](service-fabric-diagnostics-how-to-monitor-and-diagnose-services-locally.md) when running on your local machine. Because these events are native ETW events, there are some limitations for how they can be collected +- As of the 5.4 release of Service Fabric health and load metric events are also exposed. This allows collection of these events to be used for historical reporting and alerting. These events are also native ETW events and will have some limitations for how they can be collected + +When configured, these events will appear in one of the Azure Storage accounts created when the cluster was created, assuming diagnostic was enabled. The tables are named *WADServiceFabricReliableActorEventTable*, *WADServiceFabricReliableServiceEventTable* and *WADServiceFabricSystemEventTable*. The health events are not added by default and require that the ARM template be modified. Refer to [Collect log by using Azure Diagnostics](service-fabric-diagnostics-how-to-setup-wad.md) for details. + +These articles also show how to get custom events into Azure storage. Any of the existing Azure Diagnostic articles on how to configure performance counters or other monitoring information from a VM to Azure Diagnostics will also work with a Service Fabric cluster. For instance, if Azure table storage as a destination isn't what you want, there is an article on how [Streaming Azure Diagnostics data in the hot path by using Event Hubs](../event-hubs/event-hubs-streaming-azure-diags-data.md). Once the events are in Event Hub, they can be read and sent to the location of your choosing. + +One of the downsides of using Azure Diagnostics is that the configuration is done using a resource manager template and therefore occurs at the VMSS level only. A VMSS corresponds to a node type in Service Fabric. This means you must configure each node type for all of the applications and services that may run on a node of that type. This could be a large number of EventSources depending on the number of applications and services configured. Additionally, a resource manager deployment must be done any time the configuration of any application has changed. Ideally, monitoring configuration would travel along with the service configuration. + +Azure Diagnostics only works for Service Fabric clusters deployed to Azure, but it works for both Windows and Linux clusters. + +## EventFlow +[EventFlow was release by the Visual Studio](service-fabric-diagnostic-collect-logs-without-an-agent.md) team and provides a mechanism for routing events from a node to one or more monitoring destinations. Because it is included as a NuGet package in your service project the code and the configuration for EventFlow travels with the service, eliminating the per node configuration issue mentioned about Azure Diagnostics. EventFlow runs within your service process and directly connects to the configured outputs. Because of this direct connection, EventFlow works for Azure, container or on-premise deployments of a service. Care must be taken when running in high density scenarios such as a container because each EventFlow pipeline will make an external connection, if you are hosting lots of processes, you'll end up with lots of outbound connections! This isn't as much of an issue for Service Fabric applications because all replicas of a ServiceType run within the same process, limiting the number of outbound connections. EventFlow also offers filtering of events, so only the events that match the specified filter are sent. + +[!NOTE] +In a future release of Service Fabric an EventSource host application will be made available allowing listening to ETW based inputs, collection of node level metrics and rolling log file support. + +Using EventFlow is pretty easy +1. Add the NuGet package to your service project +2. Within the service's **main** function create the EventFlow pipeline and configure the outputs. In this case, we're showing using SeriLog as an output +```csharp + internal static class Program + { + /// + /// This is the entry point of the service host process. + /// + private static void Main() + { + try + { + using (var pipeline = ServiceFabricDiagnosticPipelineFactory.CreatePipeline("MonitoringE2E-Stateless-Pipeline")) + { + IObserver serilogInput = pipeline.Inputs.OfType().First(); + Log.Logger = new LoggerConfiguration().WriteTo.Observers(events => events.Subscribe(serilogInput)).CreateLogger(); + + // The ServiceManifest.XML file defines one or more service type names. + // Registering a service maps a service type name to a .NET type. + // When Service Fabric creates an instance of this service type, + // an instance of the class is created in this host process. + + ServiceRuntime.RegisterServiceAsync("StatelessType", context => new Stateless(context, Log.Logger)).GetAwaiter().GetResult(); + ServiceEventSource.Current.ServiceTypeRegistered(Process.GetCurrentProcess().Id, typeof(Stateless).Name); + + // Prevents this host process from terminating so services keep running. + Thread.Sleep(Timeout.Infinite); + } + } + catch (Exception e) + { + ServiceEventSource.Current.ServiceHostInitializationFailed(e.ToString()); + throw; + } + } + } +``` +3. Create a new file in the service's PackageRoot | Config folder named *eventFlowConfig.json*. Inside the file the configuration looks like +```json + { + "inputs": [ + { + "type": "EventSource", + "sources": [ + { "providerName": "Microsoft-ServiceFabric-Services" }, + { "providerName": "Microsoft-ServiceFabric-Actors" }, + { "providerName": "MyCompany-MonitoringE2E-Stateless" } + ] + }, + { + "type": "Serilog" + } + ], + "filters": [ + { + "type": "drop", + "include": "Level == Verbose" + }, + { + "type": "metadata", + "metadata": "request", + "requestNameProperty": "RequestName", + "include": "RequestName==MyRequest", + "durationProperty": "Duration", + "durationUnit": "milliseconds" + } + ], + "outputs": [ + { + "type": "StdOutput" + }, + { + "type": "ApplicationInsights", + "instrumentationKey": "== instrumentation key here ==" + } + ], + "schemaVersion": "2016-08-11", + "extensions": [] + } +``` +In the configuration there are two inputs defined, the two EventSource based sources created by Service Fabric and the EventSource for the service. Notice that the system level and health events that use ETW are not available to EventFlow. This is because a high level privilege is required to listen to an ETW source and services should never run with any high privileges. The other input is SeriLog, it's configuration occurred in the **main** method. There are also some filters applied, the first tells EventFlow to drop all events that are of an event level of verbose. We'll come back to the other filter definition in a minute. There are also two outputs configured, standard output, which will write to the output window within Visual Studio. The other output is ApplicationInsights, just be sure to add your instrumentation key. + +4. The last step is to instrument the code. In this example, we're going to instrument RunAsync in a few different ways as an example. In the code below, we're still using SeriLog and some of the syntax used is specific to SeriLog. Be aware of the specific capabilities for the logging solution you choose. There are three events generated, a debug level event and two informational, the second which is tracking the request duration. With the configuration of EventFlow above, the Debug level event should not flow to the output. + +```csharp + Stopwatch sw = Stopwatch.StartNew(); + + while (true) + { + cancellationToken.ThrowIfCancellationRequested(); + + sw.Restart(); + + // Delay a random interval to provide a more interesting request duration. + await Task.Delay(TimeSpan.FromMilliseconds(DateTime.Now.Millisecond), cancellationToken); + + ServiceEventSource.Current.ServiceMessage(this.Context, "Working-{0}", ++iterations); + _logger.LogDebug("Debug level event from Microsoft.Logging"); + _logger.LogInformation("Informational level event from Microsoft.Logging"); + _logger.LogInformation("{RequestName} {Duration}", "MyRequest", sw.ElapsedMilliseconds); + } +``` + +5. To view the events in Application Insights, open the Azure portal and navigate to your ApplicationInsights resource. Then click "Search" in the upper left and the events should be visible. + +![Application Insights Search view of events](./media/service-fabric-diagnostics-overview/ai-search-events.png) + +The trace are at the bottom of the picture. You can see we have only two events, the debug level event was dropped by EventFlow. So what's the request entry just above the trace? It's the third '_logger' instrumentation line that shows the event was translated into a request metric within Application Insights. Let's go back to the filter definition, where the type is 'metadata'. This is declaring that an event that has a property of 'RequestName' with the value 'MyRequest' and that another property, 'Duration' contains the duration of the request in milliseconds. This is what you see in the request event in Application Insights. The same approach works with any of the supported EventFlow inputs including EventSource. + +If the cluster is a standalone cluster that cannot for be connected to a cloud based solution for policy reasons, EventFlow supports Elastic Search as an output, but other outputs can be written and pull requests are encouraged. Some of the third party providers for ASP.NET Core logging also have solutions that will support on premise installations. + +# Azure Service Fabric health and load reporting + +Service Fabric has it's own health model that is described in detail in a few articles +- [Introduction to Service Fabric health monitoring](service-fabric/service-fabric-health-introduction.md) +- [Report and check service health](service-fabric-diagnostics-how-to-report-and-check-service-health.md) +- [Add custom Service Fabric health reports](service-fabric/service-fabric-report-health.md) +- [View Service Fabric health reports](service-fabric-view-entities-aggregated-health.md) + +Health monitoring is critical to various aspects of operating a service. Most importantly is when Service Fabric is performing an upgrade, after each service has been upgraded and is made available to a subset of your customers, health checks must be passing before moving to the next upgrade domain. If good health cannot be achieved, the deployment will be rolled back leaving the application is a known good state. While some customers were impacted before the services could be rolled back, most customers didn't experience an issue. Also the resolution occurred relatively quickly and without having to wait for action from an human operator. The more health checks that are incorporated into the code, the more resilient the service will be to deployment issues. + +Another aspect of service health is reporting metrics from the service. Metrics are important in Service Fabric because they are used to balance resource usage and can be used as an indicator of system health. Let's say your application contains many services and each instance reports a Request Per Second (RPS) metric. If one of the service is using more resources than another service, Service Fabric will move service instances around the cluster trying to maintain even resource utilization. The article [Managing resource consumption and load in Service Fabric with metrics](service-fabric-cluster-resource-manager-metrics) provides a detailed explanation of how this works. + +Metrics also give insight into how your service is performing and over time can be used to check that the service is operating within expected parameters. For instance, if based on trends, at 9am on Monday morning the average RPS is 1000, then you may setup a health report that alerts if the RPS is below 500 or above 1500. Everything may be perfectly fine, but it may be worth a look to ensure your customers are having a great experience. Your service can define a set of metrics that can be reported for health purposes, but does not affect the resource balancing of the cluster, just set the metric weight to zero. We recommend that you start all metric with a weight of zero and don't increase the weight until you are sure that you understand how this will impact resource balancing for your cluster. + +[!TIP] +Take care not to have too main weighted metrics, it can be difficult to understand why service instances are being moved around, a few metrics can go a long way! + +Candidates for metrics and health reports are anything that can indicate the health and performance of your application. A CPU performance counter can tell you how utilized your node is, but it doesn't really say if a particular service is health or not because multiple services will be running on a single node. On the other hand a metric such as RPS or items processed or request latency can all indicate the health of a particular service. + +To report health, add code such as + +```csharp + if (!result.HasValue) + { + HealthInformation healthInformation = new HealthInformation("ServiceCode", "StateDictionary", HealthState.Error); + this.Partition.ReportInstanceHealth(healthInformation); + } +``` + +To report a metric add code like the following to your service + +```csharp +this.ServicePartition.ReportLoad(new List { new LoadMetric("MemoryInMb", 1234), new LoadMetric("metric1", 42) }); +``` + +## Watchdogs +A watchdog is a separate service that can watch health and load across services and report health for anything in the health model hierarchy. This can help to prevent errors that would not be detected based on the view of a single service. Watchdogs are also a good place to host code that can perform remediation actions for known conditions without any human interaction. + +# Visualization, Analysis and Alerting +The last part of monitoring is visualizing the event stream, reporting on service performance and alerting when an issue is detected. There are a lot of solutions that are used for this aspect of monitoring, Application Insights and OMS can be used to alert based on the stream of events. PowerBI or a third party solution such as [Kibana](https://www.elastic.co/products/kibana) or [Splunk](https://www.splunk.com/) can be used for visualizing the data. + +## Next steps +* [Azure Monitoring Overview](../monitoring-and-diagnostics/monitoring-overview.md) +* [How to collect logs with Azure Diagnostics](service-fabric-diagnostics-how-to-setup-wad.md) +* [Using ElasticSearch as a Service Fabric application trace store](service-fabric-diagnostic-how-to-use-elasticsearch.md) + From 168f636cfed49bfa01231d5b942ef80d6dab6f22 Mon Sep 17 00:00:00 2001 From: Bhanu Prakash Date: Sun, 22 Jan 2017 22:54:01 -0800 Subject: [PATCH 19/90] Update hdinsight-upgrade-cluster.md --- articles/hdinsight/hdinsight-upgrade-cluster.md | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/articles/hdinsight/hdinsight-upgrade-cluster.md b/articles/hdinsight/hdinsight-upgrade-cluster.md index 4d374df51cf22..8e1e9a0a1d06e 100644 --- a/articles/hdinsight/hdinsight-upgrade-cluster.md +++ b/articles/hdinsight/hdinsight-upgrade-cluster.md @@ -32,7 +32,7 @@ The workflow to upgrade HDInsight Cluster is as follows. 1. Read each section of this document to understand changes that may be required when upgrading your HDInsight cluster. 2. Create a new cluster as a test/quality assurance environment. For more information on creating a cluster, see [Learn how to create Linux-based HDInsight clusters](hdinsight-hadoop-provision-linux-clusters.md) -3. Copy existing jobs, data sources and sinks to the new environment. See [Copy Data To Test Environment](hdinsight-hadoop-provision-linux-clusters.md) for more details. +3. Copy existing jobs, data sources and sinks to the new environment. See [Copy Data To Test Environment](hdinsight-hadoop-provision-linux-clusters.md#copy-data-to-the-test-environment) for more details. 4. Perform validation testing to make sure that your jobs work as expected on the new cluster. From 7bfe09d2c7ce6d3ca2820ce4cc40ef4984c4698f Mon Sep 17 00:00:00 2001 From: Bhanu Prakash Date: Tue, 24 Jan 2017 23:04:58 -0800 Subject: [PATCH 20/90] Update hdinsight-upgrade-cluster.md Grammatical changes --- articles/hdinsight/hdinsight-upgrade-cluster.md | 10 +++++----- 1 file changed, 5 insertions(+), 5 deletions(-) diff --git a/articles/hdinsight/hdinsight-upgrade-cluster.md b/articles/hdinsight/hdinsight-upgrade-cluster.md index 8e1e9a0a1d06e..fccc1c519bb2a 100644 --- a/articles/hdinsight/hdinsight-upgrade-cluster.md +++ b/articles/hdinsight/hdinsight-upgrade-cluster.md @@ -18,7 +18,7 @@ ms.author: bhanupr --- # Upgrade HDInsight cluster to a newer version To take advantage of the latest HDInsight features, we recommend that HDInsight clusters be upgraded to latest version. -Please follow the below guidelines to upgrade your HDInsight cluster versions. +Follow the below guidelines to upgrade your HDInsight cluster versions. > [!NOTE] > HDInsight clusters version 3.2 and 3.3 are nearing deprecation date. For information on the version of Ubuntu available with HDInsight, along with other component versioning information, see [HDInsight component versions](hdinsight-component-versioning.md). @@ -32,17 +32,17 @@ The workflow to upgrade HDInsight Cluster is as follows. 1. Read each section of this document to understand changes that may be required when upgrading your HDInsight cluster. 2. Create a new cluster as a test/quality assurance environment. For more information on creating a cluster, see [Learn how to create Linux-based HDInsight clusters](hdinsight-hadoop-provision-linux-clusters.md) -3. Copy existing jobs, data sources and sinks to the new environment. See [Copy Data To Test Environment](hdinsight-hadoop-provision-linux-clusters.md#copy-data-to-the-test-environment) for more details. +3. Copy existing jobs, data sources, and sinks to the new environment. See [Copy Data To Test Environment](hdinsight-hadoop-provision-linux-clusters.md#copy-data-to-the-test-environment) for more details. 4. Perform validation testing to make sure that your jobs work as expected on the new cluster. Once you have verified that everything works as expected, schedule downtime for the migration. During this downtime, do the following -actions. +actions: -1. Backup any transient data stored locally on the cluster nodes. For example, if you have data stored directly on a head node. +1. Back up any transient data stored locally on the cluster nodes. For example, if you have data stored directly on a head node. 2. Delete the existing cluster. -3. Create a new cluster in the same VNET subnet with latest (or supported) HDI version using the same default data store that the previous cluster used. This will allow the new cluster to continue working against your existing production data. +3. Create a new cluster in the same VNET subnet with latest (or supported) HDI version using the same default data store that the previous cluster used. This allows the new cluster to continue working against your existing production data. 4. Import any transient data you backed up. 5. Start jobs/continue processing using the new cluster. From 420155bdeb0e9f1199e1287cc16740ffbc658a8e Mon Sep 17 00:00:00 2001 From: Bhanu Prakash Date: Tue, 24 Jan 2017 23:10:33 -0800 Subject: [PATCH 21/90] Update hdinsight-upgrade-cluster.md --- articles/hdinsight/hdinsight-upgrade-cluster.md | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/articles/hdinsight/hdinsight-upgrade-cluster.md b/articles/hdinsight/hdinsight-upgrade-cluster.md index fccc1c519bb2a..db61101096afa 100644 --- a/articles/hdinsight/hdinsight-upgrade-cluster.md +++ b/articles/hdinsight/hdinsight-upgrade-cluster.md @@ -32,7 +32,7 @@ The workflow to upgrade HDInsight Cluster is as follows. 1. Read each section of this document to understand changes that may be required when upgrading your HDInsight cluster. 2. Create a new cluster as a test/quality assurance environment. For more information on creating a cluster, see [Learn how to create Linux-based HDInsight clusters](hdinsight-hadoop-provision-linux-clusters.md) -3. Copy existing jobs, data sources, and sinks to the new environment. See [Copy Data To Test Environment](hdinsight-hadoop-provision-linux-clusters.md#copy-data-to-the-test-environment) for more details. +3. Copy existing jobs, data sources, and sinks to the new environment. See [Copy Data To Test Environment](hdinsight-migrate-from-windows-to-linux.md#copy-data-to-the-test-environment) for more details. 4. Perform validation testing to make sure that your jobs work as expected on the new cluster. From 94ce3f058a3650b6f3e110b96a6d68d1c5bf3bd0 Mon Sep 17 00:00:00 2001 From: Bhanu Prakash Date: Tue, 24 Jan 2017 23:22:49 -0800 Subject: [PATCH 22/90] Update hdinsight-upgrade-cluster.md --- articles/hdinsight/hdinsight-upgrade-cluster.md | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/articles/hdinsight/hdinsight-upgrade-cluster.md b/articles/hdinsight/hdinsight-upgrade-cluster.md index db61101096afa..abd98e8e76a98 100644 --- a/articles/hdinsight/hdinsight-upgrade-cluster.md +++ b/articles/hdinsight/hdinsight-upgrade-cluster.md @@ -21,7 +21,7 @@ To take advantage of the latest HDInsight features, we recommend that HDInsight Follow the below guidelines to upgrade your HDInsight cluster versions. > [!NOTE] -> HDInsight clusters version 3.2 and 3.3 are nearing deprecation date. For information on the version of Ubuntu available with HDInsight, along with other component versioning information, see [HDInsight component versions](hdinsight-component-versioning.md). +> HDInsight clusters version 3.2 and 3.3 are nearing deprecation date. For information on supported version of HDInsight, see [HDInsight component versions](hdinsight-component-versioning.md#supported-hdinsight-versions). > > From f90c6b7c373294f56a9bdf3eee2cde80154b58ba Mon Sep 17 00:00:00 2001 From: Bhanu Prakash Date: Tue, 24 Jan 2017 23:28:22 -0800 Subject: [PATCH 23/90] Update hdinsight-upgrade-cluster.md --- articles/hdinsight/hdinsight-upgrade-cluster.md | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/articles/hdinsight/hdinsight-upgrade-cluster.md b/articles/hdinsight/hdinsight-upgrade-cluster.md index abd98e8e76a98..c977312487323 100644 --- a/articles/hdinsight/hdinsight-upgrade-cluster.md +++ b/articles/hdinsight/hdinsight-upgrade-cluster.md @@ -31,7 +31,7 @@ The workflow to upgrade HDInsight Cluster is as follows. ![Upgrade workflow diagram](./media/hdinsight-upgrade-cluster/upgrade-workflow.png) 1. Read each section of this document to understand changes that may be required when upgrading your HDInsight cluster. -2. Create a new cluster as a test/quality assurance environment. For more information on creating a cluster, see [Learn how to create Linux-based HDInsight clusters](hdinsight-hadoop-provision-linux-clusters.md) +2. Create a cluster as a test/quality assurance environment. For more information on creating a cluster, see [Learn how to create Linux-based HDInsight clusters](hdinsight-hadoop-provision-linux-clusters.md) 3. Copy existing jobs, data sources, and sinks to the new environment. See [Copy Data To Test Environment](hdinsight-migrate-from-windows-to-linux.md#copy-data-to-the-test-environment) for more details. 4. Perform validation testing to make sure that your jobs work as expected on the new cluster. @@ -42,7 +42,7 @@ actions: 1. Back up any transient data stored locally on the cluster nodes. For example, if you have data stored directly on a head node. 2. Delete the existing cluster. -3. Create a new cluster in the same VNET subnet with latest (or supported) HDI version using the same default data store that the previous cluster used. This allows the new cluster to continue working against your existing production data. +3. Create a cluster in the same VNET subnet with latest (or supported) HDI version using the same default data store that the previous cluster used. This allows the new cluster to continue working against your existing production data. 4. Import any transient data you backed up. 5. Start jobs/continue processing using the new cluster. From f6881b133b64541795f8fe88837b4c4c9d67851a Mon Sep 17 00:00:00 2001 From: mumian Date: Fri, 27 Jan 2017 11:49:04 -0500 Subject: [PATCH 24/90] update --- ...t-apache-spark-jupyter-notebook-kernels.md | 50 +++++++++---------- .../hdinsight-domain-joined-architecture.md | 40 +++++++-------- 2 files changed, 45 insertions(+), 45 deletions(-) diff --git a/articles/hdinsight/hdinsight-apache-spark-jupyter-notebook-kernels.md b/articles/hdinsight/hdinsight-apache-spark-jupyter-notebook-kernels.md index 59f4ae9b4af60..23c0a407d30af 100644 --- a/articles/hdinsight/hdinsight-apache-spark-jupyter-notebook-kernels.md +++ b/articles/hdinsight/hdinsight-apache-spark-jupyter-notebook-kernels.md @@ -18,57 +18,57 @@ ms.date: 10/05/2016 ms.author: nitinme --- -# Kernels available for Jupyter notebooks with Apache Spark clusters on HDInsight +# Jupyter notebooks kernels with Apache Spark clusters in HDInsight -Apache Spark cluster on HDInsight (Linux) includes Jupyter notebooks that you can use to test your applications. A kernel is a program that runs and interprets your code. HDInsight Spark clusters provide two kernels that you can use with the Jupyter notebook. These are: +HDInsight Spark clusters provide two kernels that you can use with the Jupyter notebook for testing your Spark applications. A kernel is a program that runs and interprets your code.The two kernels are: -1. **PySpark** (for applications written in Python) -2. **Spark** (for applications written in Scala) +- **PySpark** (for applications written in Python) +- **Spark** (for applications written in Scala) -In this article, you will learn about how to use these kernels and what are the benefits you get from using them. +In this article, you learn how to use these kernels and the benefits of using them. **Prerequisites:** You must have the following: -* An Azure subscription. See [Get Azure free trial](https://azure.microsoft.com/documentation/videos/get-azure-free-trial-for-testing-hadoop-in-hdinsight/). -* An Apache Spark cluster on HDInsight. For instructions, see [Create Apache Spark clusters in Azure HDInsight](hdinsight-apache-spark-jupyter-spark-sql.md). +* An Apache Spark cluster in HDInsight. For instructions, see [Create Apache Spark clusters in Azure HDInsight](hdinsight-apache-spark-jupyter-spark-sql.md). -## How do I use the kernels? -1. From the [Azure Portal](https://portal.azure.com/), from the startboard, click the tile for your Spark cluster (if you pinned it to the startboard). You can also navigate to your cluster under **Browse All** > **HDInsight Clusters**. -2. From the Spark cluster blade, click **Cluster Dashboard**, and then click **Jupyter Notebook**. If prompted, enter the admin credentials for the cluster. +## Create a Jupyter notebook +1. From the [Azure Portal](https://portal.azure.com/), open your cluster. See [List and show clusters](hdinsight-administer-use-portal-linux.md#list-and-show-clusters) for the instructions. The cluster is opened in a new portal blade. +2. From the **Quick links** section, click **Cluster dashboards** to open the **Cluster dashboards** blade. If you don't see **Quick Links**, click **Overview** from the left menu on the blade. + ![Cluster dashboards](./media/hdinsight-apache-spark-jupyter-notebook-kernels/hdinsight-azure-portal-cluster-dashboards.png "Cluster dashboards") +3. Click **Jupyter Notebook**. If prompted, enter the admin credentials for the cluster. + > [!NOTE] > You may also reach the Jupyter Notebook for your cluster by opening the following URL in your browser. Replace **CLUSTERNAME** with the name of your cluster: > > `https://CLUSTERNAME.azurehdinsight.net/jupyter` - > - > -3. Create a new notebook with the new kernels. Click **New**, and then click **Pyspark** or **Spark**. You should use the Spark kernel for Scala applications and PySpark kernel for Python applications. + > + > +3. Click **New**, and then click either **Pyspark** or **Spark** to create a new notebook. You should use the Spark kernel for Scala applications and PySpark kernel for Python applications. + + ![Create a new Jupyter notebook](./media/hdinsight-apache-spark-jupyter-notebook-kernels/jupyter-kernels.png "Create a new Jupyter notebook") - ![Create a new Jupyter notebook](./media/hdinsight-apache-spark-jupyter-notebook-kernels/jupyter-kernels.png "Create a new Jupyter notebook") 4. This should open a new notebook with the kernel you selected. -## Why should I use the PySpark or Spark kernels? +## Choose between the kernels Here are a few benefits of using the new kernels. -1. **Preset contexts**. With the **PySpark** or **Spark** kernels that are provided with Jupyter notebooks, you do not need to set the Spark or Hive contexts explicitly before you can start working with the application you are developing; these are available for you by default. These contexts are: - +- **Preset contexts**. With either the **PySpark** or the **Spark** kernels, you do not need to set the Spark or Hive contexts explicitly before you start working with your applications; these are available for you by default. These contexts are: + * **sc** - for Spark context * **sqlContext** - for Hive context So, you don't have to run statements like the following to set the contexts: - ################################################### - # YOU DO NOT NEED TO RUN THIS WITH THE NEW KERNELS - ################################################### - sc = SparkContext('yarn-client') - sqlContext = HiveContext(sc) + sc = SparkContext('yarn-client') + sqlContext = HiveContext(sc) Instead, you can directly use the preset contexts in your application. -1. **Cell magics**. The PySpark kernel provides some predefined “magics”, which are special commands that you can call with `%%` (e.g. `%%MAGIC` ). The magic command must be the first word in a code cell and allow for multiple lines of content. The magic word should be the first word in the cell. Adding anything before the magic, even comments, will cause an error. For more information on magics, see [here](http://ipython.readthedocs.org/en/stable/interactive/magics.html). - +- **Cell magics**. The PySpark kernel provides some predefined “magics”, which are special commands that you can call with `%%` (e.g. `%%MAGIC` ). The magic command must be the first word in a code cell and allow for multiple lines of content. The magic word should be the first word in the cell. Adding anything before the magic, even comments, will cause an error. For more information on magics, see [here](http://ipython.readthedocs.org/en/stable/interactive/magics.html). + The table below lists the different magics available through the kernels. | Magic | Example | Description | @@ -163,4 +163,4 @@ The new kernels are in evolving stage and will mature over time. This could also ### Manage resources * [Manage resources for the Apache Spark cluster in Azure HDInsight](hdinsight-apache-spark-resource-manager.md) -* [Track and debug jobs running on an Apache Spark cluster in HDInsight](hdinsight-apache-spark-job-debugging.md) \ No newline at end of file +* [Track and debug jobs running on an Apache Spark cluster in HDInsight](hdinsight-apache-spark-job-debugging.md) diff --git a/articles/hdinsight/hdinsight-domain-joined-architecture.md b/articles/hdinsight/hdinsight-domain-joined-architecture.md index 8c3f926c5d5ab..cb46d2156b3e5 100644 --- a/articles/hdinsight/hdinsight-domain-joined-architecture.md +++ b/articles/hdinsight/hdinsight-domain-joined-architecture.md @@ -22,34 +22,34 @@ ms.author: saurinsh Today, HDInsight is a single user cluster, which works fine for most companies who have smaller application teams building their BigData workloads. However, as Hadoop is gaining popularity, many enterprises are moving towards a model where clusters are managed by IT teams, and multiple application teams are sharing clusters. Thus, multi-user clusters are one of the most requested functionalities in HDInsight. -Instead of building our own multi-user authentication, and authorization, HDInsight relies on the most popular identity provider – Active Directory. After integrating HDInsight with active directory, AD users can communicate with the cluster using their active directory credentials. The powerful security groups functionality in active directory can be used to manage multi-user authorization in HDInsight. HDInsight maps the active directory user to a local Hadoop user, so all the services running on HDInsight (Ambari, Hive server, Ranger, Spark thrift server, and so on) work seamlessly for the logged in user. +Instead of building our own multi-user authentication, and authorization, HDInsight relies on the most popular identity provider – Active Directory. After integrating HDInsight with Active Directory, AD users can communicate with the cluster using their Active Directory credentials. The powerful security groups functionality in Active Directory can be used to manage multi-user authorization in HDInsight. HDInsight maps the Active Directory user to a local Hadoop user, so all the services running on HDInsight (Ambari, Hive server, Ranger, Spark thrift server, and so on) work seamlessly for the logged in user. ## Integrate HDInsight with Active Directory -When HDInsight is integrated with active directory, the HDInsight Linux nodes are domain-joined to the active directory domain. HDInsight creates service principals for the hadoop services running on the cluster and place them within a specified Organizational Unit in the active directory. HDInsight also creates reverse DNS mappings in the active directory domain for the IP addresses of the nodes that are joined to the domain. +When HDInsight is integrated with Active Directory, the HDInsight Linux nodes are domain-joined to the Active Directory domain. HDInsight creates service principals for the hadoop services running on the cluster and place them within a specified Organizational Unit in the Active Directory. HDInsight also creates reverse DNS mappings in the Active Directory domain for the IP addresses of the nodes that are joined to the domain. To achieve this setup, there are multiple architectures that you can follow. You need to decide which architecture works better for you. **1. HDInsight integrated with AD running on Azure IAAS** -This is the simplest architecture for integrating HDInsight with active directory. The active directory domain controller runs on one (or multiple) virtual machines (VM) in Azure. Usually these VMs are within a virtual network. You can setup a new virtual network within which you can place your HDInsight cluster. For HDInsight to have a line of sight to the active directory, you need to peer these virtual networks using [VNET to VNET peering](../virtual-network/virtual-networks-create-vnetpeering-arm-portal.md). +This is the simplest architecture for integrating HDInsight with Active Directory. The Active Directory domain controller runs on one (or multiple) virtual machines (VM) in Azure. Usually these VMs are within a virtual network. You can setup a new virtual network within which you can place your HDInsight cluster. For HDInsight to have a line of sight to the Active Directory, you need to peer these virtual networks using [VNET to VNET peering](../virtual-network/virtual-networks-create-vnetpeering-arm-portal.md). ![Domain-join HDInsight cluster topology](./media/hdinsight-domain-joined-architecture/image1.png) -Pre-requisites that need to be setup on active directory +Prerequisites that need to be setup on Active Directory * An Organizational unit must be created, within which you want to place the HDInsight cluster VMs and the service principals used by the cluster. -* LDAPS must be setup for communicating with the active directory. The certificate used to setup LDAPS must be a real certificate (not a self-signed certificate). +* LDAPS must be setup for communicating with the Active Directory. The certificate used to setup LDAPS must be a real certificate (not a self-signed certificate). * Reverse DNS zones must be created on the domain for the IP address range of the HDI Subnet (for example 10.2.0.0/24 in the above picture). * A service account, or a user account is needed, which issued to create the HDInsight cluster. This account must have the following permissions: - Permissions to create service principal objects and machine objects within the organizational unit. - Permissions to create reverse DNS proxy rules - - Permissions to join machines to the active directory domain. + - Permissions to join machines to the Active Directory domain. **2. HDInsight integrated with a cloud-only Azure AD** -For a cloud-only azure active directory, you need to configure a domain controller so that HDInsight can be integrated with your azure active directory (AAD). This is achieved using [azure active directory domain services](../active-directory-domain-services/active-directory-ds-overview.md) (AD DS). The AD DS creates domain controller machines on the cloud, and provides you with IP addresses for them. It creates two domain controllers for high availability. +For a cloud-only Azure Active Directory, you need to configure a domain controller so that HDInsight can be integrated with your Azure Active Directory (AAD). This is achieved using [Azure Active Directory domain services](../active-directory-domain-services/active-directory-ds-overview.md) (AD DS). The AD DS creates domain controller machines on the cloud, and provides you with IP addresses for them. It creates two domain controllers for high availability. The AD DS only exists in Classic VNETs today, and hence you need access to Classic portal, and need to create a classic VNET for configuring AD DS. The HDInsight VNET exists in the Azure portal, which needs to be peered with the classic VNET using VNET to VNET peering. @@ -58,7 +58,7 @@ The AD DS only exists in Classic VNETs today, and hence you need access to Class ![Domain-join HDInsight cluster topology](./media/hdinsight-domain-joined-architecture/image2.png) -Pre-requisites that need to be setup on active directory +Prerequisites that need to be setup on Active Directory * An [Organizational unit](../active-directory-domain-services/active-directory-ds-admin-guide-create-ou.md) must be created, within which you want to place the HDInsight cluster VMs and the service principals used by the cluster. * [LDAPS](../active-directory-domain-services/active-directory-ds-admin-guide-configure-secure-ldap.md) must be setup when you configure AD DS. The certificate used to setup LDAPS must be a real certificate (not a self-signed certificate). @@ -68,28 +68,28 @@ Pre-requisites that need to be setup on active directory - Permissions to create service principal objects and machine objects within the organizational unit. - Permissions to create reverse DNS proxy rules - - Permissions to join machines to the active directory domain. + - Permissions to join machines to the Active Directory domain. **3. HDInsight integrated with an on-premises AD via VPN** -This architecture is like the architecture #1. The only difference is that in this case, your active directory is on-premises and the line of sight for HDInsight to active directory is via a [VPN connection from Azure to on-premises network](../expressroute/expressroute-introduction.md). +This architecture is like the architecture #1. The only difference is that in this case, your Active Directory is on-premises and the line of sight for HDInsight to Active Directory is via a [VPN connection from Azure to on-premises network](../expressroute/expressroute-introduction.md). ![Domain-join HDInsight cluster topology](./media/hdinsight-domain-joined-architecture/image3.png) -Pre-requisites that need to be setup on the on-premises active directory +Prerequisites that need to be setup on the on-premises Active Directory * An Organizational unit must be created, within which you want to place the HDInsight cluster VMs and the service principals used by the cluster. -* LDAPS must be setup for communicating with the active directory. The certificate used to setup LDAPS must be a real certificate (not a self-signed certificate). +* LDAPS must be setup for communicating with the Active Directory. The certificate used to setup LDAPS must be a real certificate (not a self-signed certificate). * Reverse DNS zones must be created on the domain for the IP address range of the HDI Subnet (for example 10.2.0.0/24 in the above picture). * A service account, or a user account is needed, which is used to create the HDInsight cluster. This account must have the following permissions - Permissions to create service principal objects and machine objects within the organizational unit. - Permissions to create reverse DNS proxy rules - - Permissions to join machines to the active directory domain. + - Permissions to join machines to the Active Directory domain. -**4. HDIsight integrated with an on-premises AD synced to an Azure AD** +**4. HDInsight integrated with an on-premises AD synced to an Azure AD** -This architecture is like the architecture #2. The only difference is that in this case, the on-premises active directory is synced to the azure active directory (AAD). You need to configure a domain controller on the cloud so that HDInsight can be integrated with your azure active directory (AAD). This is achieved using [azure active directory domain services](../active-directory-domain-services/active-directory-ds-overview.md) (AD DS). The AD DS creates domain controller machines on the cloud, and provides you with IP addresses for them. It creates two domain controllers for high availability. +This architecture is like the architecture #2. The only difference is that in this case, the on-premises Active Directory is synced to the Azure Active Directory (AAD). You need to configure a domain controller on the cloud so that HDInsight can be integrated with your Azure Active Directory (AAD). This is achieved using [Azure Active Directory domain services](../active-directory-domain-services/active-directory-ds-overview.md) (AD DS). The AD DS creates domain controller machines on the cloud, and provides you with IP addresses for them. It creates two domain controllers for high availability. The AD DS only exists in Classic VNETs today, and hence you need access to Classic portal, and need to create a classic VNET for configuring AD DS. The HDInsight VNET exists in the Azure portal, which needs to be peered with the classic VNET using VNET to VNET peering. @@ -98,7 +98,7 @@ The AD DS only exists in Classic VNETs today, and hence you need access to Class ![Domain-join HDInsight cluster topology](./media/hdinsight-domain-joined-architecture/image2.png) -Pre-requisites that need to be setup on active directory +Prerequisites that need to be setup on Active Directory * An [Organizational unit](../active-directory-domain-services/active-directory-ds-admin-guide-create-ou.md) must be created, within which you want to place the HDInsight cluster VMs and the service principals used by the cluster. * LDAPS must be setup when you configure AD DS. The certificate used to setup LDAPS must be a real certificate (not a self-signed certificate). @@ -108,11 +108,11 @@ Pre-requisites that need to be setup on active directory - Permissions to create service principal objects and machine objects within the organizational unit. - Permissions to create reverse DNS proxy rules - - Permissions to join machines to the active directory domain. + - Permissions to join machines to the Active Directory domain. **5. HDInsight integrated with a non-default Azure AD (recommended only for testing and development)** -This architecture is like architecture #2. In most companies, the admin access to Active Directory is restricted to only certain individuals. Thus, when you want to do a POC, or just try out creating a domain-joined cluster, instead of waiting for admin to configure pre-requisites on the active directory, it may be beneficial to just create a new azure active directory in the subscription. Since this is an AAD that you created, you have full permissions to this AAD to configure the AD DS. +This architecture is like architecture #2. In most companies, the admin access to Active Directory is restricted to only certain individuals. Thus, when you want to do a POC, or just try out creating a domain-joined cluster, instead of waiting for admin to configure pre-requisites on the Active Directory, it may be beneficial to just create a new Azure Active Directory in the subscription. Since this is an AAD that you created, you have full permissions to this AAD to configure the AD DS. The AD DS creates domain controller machines on the cloud, and provides you with IP addresses for them. It creates two domain controllers for high availability. @@ -123,7 +123,7 @@ The AD DS only exists in Classic VNETs today, and hence you need access to Class ![Domain-join HDInsight cluster topology](./media/hdinsight-domain-joined-architecture/image2.png) -Pre-requisites that need to be setup on active directory +Prerequisites that need to be setup on Active Directory * An Organizational unit must be created, within which you want to place the HDInsight cluster VMs and the service principals used by the cluster. * LDAPS must be setup when you configure AD DS. You can create a [self-signed certificate](../active-directory-domain-services/active-directory-ds-admin-guide-configure-secure-ldap.md) to configure LDAPS. However, to use a self-signed certificate, you need to request an exception from hdipreview@microsoft.com. @@ -133,7 +133,7 @@ Pre-requisites that need to be setup on active directory - Permissions to create service principal objects and machine objects within the organizational unit. - Permissions to create reverse DNS proxy rules - - Permissions to join machines to the active directory domain. + - Permissions to join machines to the Active Directory domain. ## Next steps * For configuring a Domain-joined HDInsight cluster, see [Configure Domain-joined HDInsight clusters](hdinsight-domain-joined-configure.md). From 988c887d2d26ab3ab5b287f803c7d598bd6620e3 Mon Sep 17 00:00:00 2001 From: Mimi Gentz Date: Wed, 1 Feb 2017 15:54:41 -0600 Subject: [PATCH 25/90] DocDB: Staging MVA video for testing purposes. --- articles/documentdb/documentdb-introduction.md | 8 ++++++++ 1 file changed, 8 insertions(+) diff --git a/articles/documentdb/documentdb-introduction.md b/articles/documentdb/documentdb-introduction.md index 74343445b96eb..cd6bf32408e2b 100644 --- a/articles/documentdb/documentdb-introduction.md +++ b/articles/documentdb/documentdb-introduction.md @@ -84,6 +84,14 @@ DocumentDB allows you to write application logic as named programs written entir JavaScript execution within DocumentDB is modeled after the concepts supported by relational database systems, with JavaScript as a modern replacement for Transact-SQL. All JavaScript logic is executed within an ambient ACID transaction with snapshot isolation. During the course of its execution, if the JavaScript throws an exception, then the entire transaction is aborted. +## Are there any online courses on DocumentDB? + +Yes, there's a [Microsoft Virtual Academy](https://mva.microsoft.com/en-US/training-courses/azure-documentdb-planetscale-nosql-16847) course on Azure DocumentDB. + +>[!VIDEO https://mva.microsoft.com/en-US/training-courses-embed/azure-documentdb-planetscale-nosql-16847] +> +> + ## Next steps Already have an Azure account? Then you can get started with DocumentDB in the [Azure Portal](https://portal.azure.com/#gallery/Microsoft.DocumentDB) by [creating a DocumentDB database account](documentdb-create-account.md). From 5988fb9ae3966cd56943a3057deae6c8003d5761 Mon Sep 17 00:00:00 2001 From: Gilad Mittelman Date: Thu, 2 Feb 2017 12:31:58 +0200 Subject: [PATCH 26/90] added OMS reference --- ...iting_get_started_blob_view_audit_logs.png | Bin 0 -> 12884 bytes ...uditing_get_started_blob_audit_records.png | Bin 0 -> 10031 bytes ...diting_get_started_table_audit_records.png | Bin 0 -> 9968 bytes .../sql-database-auditing-get-started.md | 118 +++++++++++------- 4 files changed, 76 insertions(+), 42 deletions(-) create mode 100644 articles/sql-database/media/sql-database-auditing-get-started/10_auditing_get_started_blob_view_audit_logs.png create mode 100644 articles/sql-database/media/sql-database-auditing-get-started/11_auditing_get_started_blob_audit_records.png create mode 100644 articles/sql-database/media/sql-database-auditing-get-started/12_auditing_get_started_table_audit_records.png diff --git a/articles/sql-database/media/sql-database-auditing-get-started/10_auditing_get_started_blob_view_audit_logs.png b/articles/sql-database/media/sql-database-auditing-get-started/10_auditing_get_started_blob_view_audit_logs.png new file mode 100644 index 0000000000000000000000000000000000000000..78924467bd802717d1e92c7905d4a5f7b87ece2d GIT binary patch literal 12884 zcmb`u2Q*w!_Xj#kkVHvH!Dxw==%Wpy6E%8?-n$rO2u2N}Bu4L}MkiX-A&3xBM(=eb z7=|Ev=Z$>d|Nq`vZ>_i9TJOzTQ|`HUpR@P5`|SPu?Qq#ajrZ`GN-(aG#`C3t zr;e+gr?;htEx^sv5#q@MvGrsUZZfqNCSj4k*}Ik(AexJ(6> zR<0TQ?QpoBk7ViG4q+k*VS1)R2qloYM<}DIa2rE()07)ci6SGsX`*3G1L7_r3E@}a z1LKbG5!xnMKyIW+`kr;nOW!mlX*IteP`jH|Ea~L2Ae^4y4Aqhpg z{NRTRcx@a+4m+~PTU5!dpIHxLOu{Z*4hpQLS~k`R?Ky`{*S>J?!m1AdS&S*L`}l(M zb4s^(&flw6>bVYrf#*dz$mhke;a*R;2*V@R{q65cfTy<7bd%7|_d@tpLFtGYV|3B= z0!;XM0u;I0QN^$T{^tD&aJ|FQy8VS7!{)0(53NmB3p1heuac^pwmt8%<=y0hLD0%# zHLe5_4%<2?g{Mnjx9^k|U9!+uaMyiSO?b3-*!|EW5N(vv*-!CkN{fQ{u;ZwH``oW* zW^mBuxh2G86Rj4G1P#o@ZlelAep8k?tXnWYvi3}`)uGmUJbFro1okCt{Vpx3Uq`b_ zDAR=r3sbvYAXiv+sp6ooJ5s+nlyye4tC5BaGNG__88W#8;b!srZ}TjwgSlYQcaTRD z#~$JdmMTIvy&8+<3rC2wPqd*)U~p|o(d$5g8jAP@F^q!E8^$-h?lYJhA5saw>3+A( z*K_W}@$$dkOOVeUQy~a~gA%US*#*J#sPEa;CMY%i+Y@!iT5e}}0^*+GM=7&@ff*tU znXZF{Ye&0nFsVDyni_J^op+$%;l;N5gE@9S!7=&_Bw%nt)gWF!GJIWLE^45f#y5dy zT{AoUoO~Fnz0K-%pw;f10yy-Zd_Pc{rUMIxg^P%!yZH__M(nIr7#`TTJU)!zFT=Qw z%kzPu9COh;fdg*lKs^>G9yxvHL$^S6-M&4m*}0*$yLTJnqYI6PBP%}dHP*#b38>{? z%3{ykyDwImKYe*yme-tZgzOfr2p8~g+f8?t!W2pG(SBW0ENKrYrzICS7U(lo5?Z(b zKAQHCC~kP43axI5&#t?wJQb6g1>2ln(w?VHRlmNB;B40N(MH>UZkIcye~;l6t#kw> zsD~V`=KFKe2#Y(l+Pl$bqkj_hGrNGTv75&{3YyWpIRc*7OZM|kv660H%%zMYD@II z8YW^ksCG|?3hT_`_P4eg(`_|a2wO{PD2~X26K?=hM zVpeKGb?x`IIR+@TSGM&;DI^la3Yv|)=g960Os8tur6_z~`?@p0(r&TpQwES{sJh?l z4K=5=)Uw$2vd2{EH_75AdD9>TQR4M1wQjGArSDl~YWNE;;2s~H=GNu+^*M&^o{9vm z#}#_BLL|Uk$neioNmuk)4tyA1W#b+?>U0#4pKKd@#(^#prnO-fn|3s#GLcek7~S-b zj*s!19dsT(-Z4D_Vw~d`n?p{2i|L&oPQKr}CG)%lB>*lf#*j`JXLChoX9_FEH6Reg zr%`$#3!9c2EVb)iG_$`MTTiW1fYq1btVZRS)03?t;r$1b0-s#P?SkP+yk7nW*`BV+ z&yycjN!kR>g8QwxfTwS_^XufJE`cvUBAZ zcMB^Er+Cgj%iQwlpr|9}LVlnf^>@^CEe* zI_K!doUB781vL%7w3CDBVqP2WKghf4d{~Z*`ujrLx6w?82R9SuC5@mjrGKpOxLof?f2lo_AX_V*aC_`sfNwMX8-CqhQ?8~jb zWDU>b*2hP|RgAA=j>2iUmov7}_Oyhlo|j3kdDO8=?K(Q!z73|KH5ZHY$E~^kQ%?xh zvibYxOW1RJrp;aJ5x^-#+4G;VGc=K}e2Xj-r{H4@7OVq3^8JYvP^wjh)s|N=Jh1Xi zJk;A-ubv?Kv($~%50Ul6y~W6MB}3-%#@fsIxiKv%&-L>ZnyJ3Gg|N1zEHs5}~(3Sjs0G=bbu)oqdFYo{R!H>Ty405^2w#R1t`ws(y zByL^V%>V6NGl{a{uNX%hmY(T@z}xSJGnZM3)=JWDt!WlVd>y3Gr${-Rv^MGA(i+Tt zN(~aiPQgC!e4{H3tV89o2+3sWiM_*3w?-i&*4wF1VyK}xcJ-JXN>EsX)0VPyHyvpG zO6>RJsEN(?6hwUIJT>Fx-5e?=jj(PiBZrgkua}~pLKi;@xKS_9NVDv@&y=+-2rh~@3u2tX})0RF|6Qg z4)c^Vc+KbA0^pnb5gzY(ZD5{v#_i7hL-4xSQ8#lAr_sgN<{jFLyL#0zEy&)4-ZMO* zQ(-~&z7u+6kWN2Gs%Jnz#J>XzKVv7z6TKcFM}sekB!PxtY4CGb zNov>kJ#&1lWTt{5D6pFIw=ZAyY`@xm-()c#V8_y{F1ZgSGD16vKIG7?X67}r+l}O( zZQXvZv2r_FAG?!Z(&!@VDqY%J_H~x#FF~h&=N1^98IPpwMp#`9t!ebh!ww}K_N@nH zH02ED7yS-}au=V{@b}#-Lr?cPwXo?@gr*UR@}y$c8_hDe)^=$3b11;?8(Vgd)N~qm z_4Tjg3If76=o6!vdwoqs8%-w%D;dUwje!6xn>fjRzJHk%&1(Xk)1?_E-s(1QI?%Qo% zgn#@4oICxbG}Lj2>;o?eUMskZFzhPIyV6JGdfR`H(;ikPjDRz(cMHbL=y+#PMd<1T@^c)|pe z*ET;w5n^2ED4HjS671wFN9Q4aml6GZ;I}8w4wh5(VP#=mn76`}vF_fB zFWXgnj&`|?T2--Tl3MR-TSYFZ>hrP{8tWD|7N>Upd8%zR@*UGN7F${qv{ERJ2KeJ> zfM$_$fLGenSD(WF)4(EIHYd!#y|7)%O~VtZl=MsbnHEQJen7y1`k~R>d{peX2~FK? zLYc-&9GQ6L!g|eJBj7{{y9XVNw*JCNC^KBa^8bc+^wB{DSP^&nuBBZC+g_4=+ItC` z<9&9FbkWsu{T!747MP66vU}6dQ@GJxk)l!JR~pAbdo4X=*W$8YY%Xz3>{N1a<}db- z=uqi(ry+7A4{3$|aO8_h)mOa^51HciQ6e1>gylML0&}MvPFuf9RATJzw`#U`j$M5F zM}9PaCxbAUn2X0)_?b(c|6qWpqTA)uSzU9*O^=H6MaBN|#ZRwuP8-)Tm_>i1##Wib zlX2bF?sF$-ZEm#F1~7UtclL4V(xT{rXL1c1=->8uuULEgOzg1nfMp`-@u);*Hb0m* zRa=>FU?NH42X||!r^eMzX~tBmma*c*=DuEF$fm&r@NubN=N{<|VQXx}=UDJ}6Pi*zAMq&fcpk9A`Py?~sUl9yOdryJ)KxBnUoDu?Mjkdtc$wF}P8B$bh zV1N$vj2GCw5+nMhN*FAarJyq|*-k>ksyH3B zT^YGKBmc%+jp9}HngVIJ>dV;z15`gfG&}FZmX~g8|9ZNXLa!ZUyXa4G!)ST^n@>(S zj$*Jwmy&R>YS4Hv-fTJwt%YZs{=J*^I-k8*K@}E>s{2Px`2~5PiKMuYT3z(ujV+a? z0(8a(WorI711hj8DNH}-KZG>Y9JG7-c@2YJ$8Hs2K`^5?7&~&t^I<30#2=8h1o#nD z=iIMPZ}Tp;@Qi3SiSfAvGlkBF2KOsf>}!sJsdX&zHaP_6{y6$$fbn~$kGCHm&WCON4rm32saij1s{ z54#`BvDqGyOTH$U_yddQ2(ep{?Blg({&BAV00qKKj8AEKo$9wBOJ|*w$I`&dDT^WS z(HG47&KnM6l+XJYk}grgdgS@XnB%%{8L$8G^&~5PaC+_whGzvIVCgI8A`6^}zNSa- z{wW;b)t~-fR&V_O!0JPA>-@&P{QrA-VAO>W0ARSlY6NNH1A;yAFhqc*+bA*s(?T#3 z58#6jO=LRSVL$7jIN?DxT0WCt-D-4Bg=og9xNQOe(l!_%JDNh3{l7##&w~0eRUHrUWEQor| zHnIFHdMFuUef^CUc7!|>4CsEPr*Qf@#a1HC#=nj+O*~%lT zt6ckTt1;H6=ZyUu|F-oZ006aKT1(5TT&Uwx95U{mQ(M4mwdCI=i3x<+;s#kuJw>XG z7henC_Iy+HIcxNV=Z7-;&jkT;-Dl&!IGuP*)CV}sulA=+CE>zZ<9DOJ=U-m9)wPCJ zDYn#rSc!f%zo7+cO@4mn68MF`sY=_D^GC6v#z;|V@;Lp`aTm3dp}MM3+o8TxQ%_f&5ENX@R;#-^2A6N)ee_ zf&71Qs`fLgN(iky)a(p4(KKWkZ3EbuIZk3NMwgEg@g#e<|}enAV(gvY7pzbx+2_ME`Ez04I}(1e=vVg zOOu9nP!{-$mpnMDmZ#XG%kl-e%g=|kfY^9`pFkPdY}J4c+c6SlI*|Yr-0Gh>^VG-N zQY8a@M)Hx;i;KC@(q0 zkanx^*vwR}y?3bCHxrF+n|?Hl`C;&)wa(|or5^8@U2aS^+C5X!#rK2R#+gDDVW~G2bF~CTDF7YMhhM(;fG~R0cwIln9Ggn7Q4#4fYI8HO-!YT!%V8{ zis&pMA&<6PuXsk~k-2)kJsV%!>U}yY{x!ScekYnwBxK6Bk1QT8i9OTr^f?|Qc<)z| z`q2>`6n0dRrcg-Vd_hoA=hjJVQw6{8gti!;$kMSNy~rv)cw1~)!%IB)Cy%vEt?6=; zT)V>7pbwRwmTJ+`LfSHoB5O3<565R_JVt$DeGwaRM3K3AU_WB|)#dEBL|qln1BdfD z;Z5hz&ES28aK-ae*7Nx5rGrj2c#qgncbUV~OL-{O?(F4<+5Wrh@BBnAX>RGxKH~pY zMsBCnx;nDaFv$lU8+57Hbjf-71OC|ST*1kEP}ZC?8AEdzuok_*!Cj8TuC=dKO2}S1 zIa=K;5T+F1GQzdh1sLNYhkx00;`!q8tqc9-;fMQ8io9*g^f_fxRNdy@yoFm5u#S%- z%XOFD#_I50T_<6g_H}1?R>Fou>stw+`=% z)xBjE${YbI#MENbzm1hEx(WK(ern}jU4wtQr_D3=OeCU!3uCuJQeieC-zw%Z*8TIaXs+eqTOfZc@`7@!ITU{=M&bF8L83*dvDKqLD!oxIL=?-MI}0hqPw{ zA+-tVbm9Zw`rl;|RE>n%LdH5W=W6+n1L+-BO%SDH)4yYIx8aAgL*Kx3Pcg-(1|)P4 z&My{UwXm3_QLQZGr(Tfd8IUuhRvX%h#M^K-><$0n1hE_CuQk(y4O(h+jBdYM*6niv zqC&d`!FYqmCcT^0Hw%iX1_mYh$o zB`4+F^S2JP$dUk!&Q5%#6cny8p@tsYV%nvGex zA0PJ}Dzi~8)G<96g+YnN-A`t`CZ8}rFm20xU~Tm^c_(Z-r+Clmui!t_DVwgovW+ci z?+gXoza}>mqXLPEwPuHS`*Q-rH@hw0jJL-KTb!OX#2XK(bvYkD6ooP1VUy^C>FZf-O1eiz_vrY~UUgxHMoMawy*R&ir?= zWm^k?rwJeZ)OpdQ=4_==;$Pk?0H+mNkl6cL_3&x>B(3eYF!pl#RhEfu>x(JPeE_5LB;uj(p8fvV3qje=udY4O^1|Rz0-K>! zLbM11NF&QB`rQSBjT%*w2BY8|ZfIiNmXJ`-knqA+cNng@8>@tcc_f6No|feEK1~Ns zIltcUCZqQN6}7%#tU&;6B+7;N<-zcG>U7FHpAYT_`TEuEcFlKrO8pZg8uzvOfe){#yMIf z6aBra!tp?RVT`rz(i%$AD~*{$an8zSg<9!WmU_N!cTOKJrtxnK%a*b_syomgpfZmB z#SUJXfBA&@K}xF9zKi67x-HLI3VVL5GiS+|(+SbWdSiU_JtZ3ch4~ZK4G=q`rQ*u5}}`!$WV(oWiqM@K*n zJ`7L*O@9pEhnRP=ynN#g?HO@5y%kY7{a|2d^Cc!kY_`Do^!Vq=pR0+>1g@hS7sU=$^W)u;1*x8{s!II_X}pNMlsm9Chx8G@#45E2 zl%wxyr^VkL^mWpY%rLj3Z<&i)OI8^L;O@~e%8IFiwTDI)SsKed9|PLRfUFBZ+hnhh z{iPOXk=P^fm;##DOURO`J{Sp#ghfMT9Z!inB0}>T4(Y^wFQeH@j=p7U4v{f~k6SV| zTI7C~8fi!;*I``ADDJdH>9|EtEGh9J1^ytwZYj} zJAx{->7QGs(~`In`-60+QW^^qJm=eaCYnO z6Z3rWm8P3Jp_`URcc4Dcq+7lE59O_|0x~W4?FGQeQ0xszcDL*AS7Ddn#vsJxD)f1c6TeouHjJik6deG8<#mV5$@yuKvjxp=nTu}VvNA-xnS{>6?tNS+-shOu?`;5 zM(WbS0@(ONi0|$TbojvBU0^BmK@JGyhPuWpy^8~~bz9F>Geen42fL_K%-;J&Bjwv7 zq34ECTihZ`3Kzyd-aCN1yJ&&GD80U3B!OnY?ZMgp$O-;Zg9dILbZh$YCjQyLPQ#d^ zJDxRrDF%yQ4_V!QJA3|Vd%z7b#y?%umc=Y5iD`spq8p=5T7iw0C7g`f14hfn;`@84 zqx&sVq_kO7RkUl*Qx|FM&7KZ4y32&;>(UCh<&C|_{6Y)(KgfhE&{7M)k#@x%)XM~cElfr+|b~VY#>0o84pST_)Ca89|yUS!f{$WKmiaZ1<hIhOL7`{J4^ zznBB@fg-RXHQ^Foe?GsN28|7D6EGY^Q%_}?qv5PkVQ`s2P?_%^p;?~X*2u`fW0R2c;R8ABh+ z)RXt?*RR{0G&W_(`#PHL)u9}ZY<2YY8#W9o zvF}RS-!JA8Q!2J)X2@5fFLftu*{oJ}+`N;;ypKld$M+A{#_Ko~$=p{f1UAQH!o*J< zKVn*KlXNEX8=mnrYHQVK4ZR)`8sX48o=MW_@*SDTuY?!rb6~_Di2_LrZmlEnEE3!V zIBPg)Y`!3Sc_4*Dw!fSn>$%+%ZcuhZ75&z)e-GBvR9|GUZqMd0q9y$#p96k~U9y)_ zAjtq)KatglSaEzV^qySjK$m+WTw!U65#?Q%4eS&TL&5Xu`T!u4nE83`@xqW(>VV4V zVE6ge$)`pes5mNPUpm|CGro#Gp5Od%n*LM@9mDOXrV2A)n=gY~23;8Y~RYYGi)rhm_%l#86bYig|7Z(n0$GR8nfTG80nPc}pcn|-A+U<0&)v*t` zlc%`*e8zNN7?W_DLyVjVPnh0pqXPWiYMPmWwnY5ZkDns%*+FD&88@Hhf0cM^%yg(f z&QU75$AZ;0aGD)qlQG$QplW=eySm|tggj2xB0lHowV&Rdy-=3qn!$G@`9IZLniK?Y z7fIunEj&mQxlzXw5?0f{Fm6=<6~$mC}&6={Ire*!9J;E4GTvb%ir))YQG-DCOA91zmZ^Z__6D&xV(C`CteN zZsAt@D@uqRt3E418nBVoGLNa}I?NbmZ`D-Qp{S%M zv2QcSK1OHSoAUJ-@83t#QBK!>L_J9__pE#_$YuKyCNAq}{Fe`0*{N+cscT7h-faaD z>=6Gk{AkpAtgbG);Z3|hR?nQVz{**Y`=pmx$pyFW(^%$FDxXz|_`s94!uS=irx5)| zwrh_PLG{eyxwE5;n?+^f=}moWjklJouuB})zg--D^Fa^k>QlJ+*@o?Gbt-MIey)aE z$)C)N?bd8_^d(+AsP}N1^!G{4w^xkMsOF*y^gf^?hn$}+l`Z+oC3@2Pqyup~&l#Hz z5u!R%$SMu!ayI+5%aa}x1eZko^vY%>2ZuIQLLtMWkw?~)+Fky^2e@Klu=4kT&s}9U zaiSO^`4tZ;ZXtFcLEKH?;Ztr(e^~D1>})z^oJ?u~;m@q;_iW;dc=Xaw?oO~E{(oiD zD6OsgTv|$P0MNvD{sD25Sj+s+f9N>MJP>FC=`(yN!8ev)cKY)A)>H#aEVz5}pWyqi zaUNF?YP?Lu!?_F7f|4&3TDuv0uvH@=IC&6u_L@+dZOKmG3YQuhkm)4=0F&*&fPoxC z!2S{MQ>V|rK&|WmY}CIs04T!4h5Uj7q$u>17B0kH2;{xatd#J6Y|4F>nrmY?*?)A^ zZkk`YAA0r-FnSkUOIe=q-$9k3(6zfeW3}8l+H*5ijs@2O&Aw;(xe9Gf(mRQ=c}C3Q1DZP0K!qT|d68wLNz^Ke$i zf5CK@-l}TTxIVCvOY63VoEfK#9eiiopdaDHPsLTq#4}nCAKW_N08qmJW5&PCRZxfQ zg`JA5?p(=Vw&tx;!Ez5YRH*pD%!&?P>a1Sj$h42+agCW7BjxxB{|Nzr|B=IN|sqC3V(evtV)A3Ht*TyAoSb?iUuG z`=nmFqZjGNWB*D>WQrx`6%sEIMf%$N?~(-rHawi>8`HnM&DJx1AXiam^FxMq@;v>z zH$mE*>S1|a%{lhncZu=-aL!>%iMKb!sczp<^*6c6k02-CPJjgxMKYouD@v%FOdZ@) z;6DVX&YX?q87b?IUABUBm2f$ps_@Q$8gDfVkNwH*Xp$%MbzYD2K?t-YBl%uujW^!N`~oR(Z{LBYr;bbopvtM^sYvK0Hdn~WIf6Vu|P5vIxHEheIB|6~P z47B>PZKysFV9BF8G-9aSFYIsewbkoOf`09Y;b=)jtF!_D2etrFPYMU%q{>3x6dZ|T zo`3Gz+Sx1)w5MJlhoQ)7Y}cJ}*Zu zQE<={MqMa=x~mPXIR!DY>Xoxi_2pTf?}+MpM^WPG#2{1>CBme0v)K{c6*r1ez}cnt z{M6X&)?*#!eMsP?xeJvbF6K-AXNt8)=ehi9!47V(kO5t;Z%^?82mx4PTz~Bl8STf5xs?#PY05;3@q>h)ke@&$xR37!Eix9Znx@91X9DiW6!B zaZ!uyHmxq*#VH&vpHPxT>>|u774*f z_hn-t!TR0r-mn?!gxM-7yu;Pf`>>Pov>LZdqAgfZ7$nF$tPL$Jt7qQhmJ$$jW|b6p zvG|MzwEyBPcx-VsavSWE^Yi3nP9$qCR04<|Nv_RLDx9(p@PYHpCml{XG9#*BG^4)` zgVx(rq#DS#BHsP+QP1YZNrFeT$>@GP#l% zSH|W+)8${9@aR!!AL+afoeMc+J^j6vP^t7Pte$5A9fVYGxk5SqJ!15riQeNk8PZdP zA2vco7q335wxt_vXl;B$^}D=jGNSJ{FM~0#E=y6p89$v%h*>P&3la4^r8iw~r8O}h z_k$1ANUHA*tj5ET@L2RU*h?C<@|dfhhAs_pfD0bM%J`UWdLcnuBFN7;-DgZea_8uF zl@=n;*uix#SP?vwmUxirr|kY)b-ET63aCY(@vR1+Zm+^x*sK-5!r|9|sa(e*LAnyg ztG{9ar3vk&u-NE*m0bF~pX%w1(}IJ3vOv6qJEZl zrXkn2h6bN4r!lryMXW!~KdizLKib z!b1WI+ehuixSgV*0^piSYaCQ9MuIj?ral^yt6$rXZYS&@(4)76-!^V8>z+zBc;YF@ zz?{u|E5u$QIL)-}x&=k}z}TBCnMjCIBOD)2veXT+lc6H*`Kl2gXw+C{_9~iC{Nelz zsya%fL*uCLPqh|I&e1)ob($WPH zKcNdB`Z&EIwQBpmj&(8^q7gkr^gANO`Y8f2EE;O!hDF~0lm;xfyv>6i$Ea03<`Fp( zimYd_76N0?vJQrOR;`k{fdc`jVof=lMH_E|D-GU8g^ALwju-8z;9^juN-$EH;vWpN zfIPJ%RnrS}XXbL7L&2HXiIAm!4$~-c9*ynMkKgh1@GTvh`un^+m&-SGht`sQQQy8& z*LnDz#(@T;!+$&DdSDczjDou~^@RwOMDW3sv*RtqzuTdl6rSRqd2~j!#w68zNJYjs z-zDFqG4M10)1@7|3j$A?iM{7AvK)~b3nX-I-w{2sj zB;qG`cURk=q4|<0sC?Lo#)P4R0Y{gbZ3u(ZX8w6N$nOmyNJ!tB`P+N}@&8iHCpfDh zDuBD!7&te{^`)5J7rcb1O8)uyA9xFy2xb`#Ok5g+ELp5bbOIjm7KlI${>e4PCR3TDsf1K|*OLzbSgq@P~ zQb%rVN;`Zi=hI!VH{8JM2UkYhwS`g@%BPK z3;M70O`892*uF`IxCDHY1a7kMKOm1otq021>m_Yq|&5a*-)>z zWC^a}@N(JFyt!&GO_DbF;6HM5D(Q$da)0$P&TCnX%Nz!C*nZD*qq)EF|CdYp(h+m| zUw4eH-dI4Sn{m({H}tPZ!eHh)*B^ozXdh+Xp9;r=>2-g;y@vI|b#x`HS+{_rA3@L$ z!fF)-kXAx|3Y3bD+(y|TWMiUS9J_q!ojrQDW^Bqp pdV>8hgcrv>=>N$P%3m`we_*th&MeEq{R0G`{8C-MQr05m{{T1YLh=9r literal 0 HcmV?d00001 diff --git a/articles/sql-database/media/sql-database-auditing-get-started/11_auditing_get_started_blob_audit_records.png b/articles/sql-database/media/sql-database-auditing-get-started/11_auditing_get_started_blob_audit_records.png new file mode 100644 index 0000000000000000000000000000000000000000..cb3d0775300fe8d6cc4732df95762eb7b4eb4742 GIT binary patch literal 10031 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 VSK_jK;TH-h%d5+kJvV>X= literal 0 HcmV?d00001 diff --git a/articles/sql-database/media/sql-database-auditing-get-started/12_auditing_get_started_table_audit_records.png b/articles/sql-database/media/sql-database-auditing-get-started/12_auditing_get_started_table_audit_records.png new file mode 100644 index 0000000000000000000000000000000000000000..46337d130f05c36e57775b0bd94b7bea050fd9ff GIT binary patch literal 9968 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 j **Important** - the introduction of the new Blob Auditing brings a major change to the way Server auditing policy is being inherited by the database. See [Blob/Table differences in Server auditing policy inheritance](#subheading-8) section for additional details. + You can configure auditing for different types of event categories, as explained in the [Set up auditing for your database](#subheading-2) section. @@ -53,57 +55,73 @@ The following section describes the configuration of auditing using the Azure Po ### Blob Auditing 1. Launch the [Azure Portal](https://portal.azure.com) at https://portal.azure.com. 2. Navigate to the settings blade of the SQL Database / SQL Server you want to audit. In the Settings blade, select **Auditing & Threat detection**. - + ![Navigation pane][1] 3. In the database auditing configuration blade, you can check the **Inherit settings from server** checkbox to designate that this database will be audited according to its server's settings. If this option is checked, you will see a **View server auditing settings** link that allows you to view or modify the server auditing settings from this context. - + ![Navigation pane][2] 4. If you prefer to enable Blob Auditing on the database-level (in addition or instead of server-level auditing), **uncheck** the **Inherit Auditing settings from server** option, turn **ON** Auditing, and choose the **Blob** Auditing Type. - + > If server Blob auditing is enabled, the database configured audit will exist side by side with the server Blob audit. - > - > - + ![Navigation pane][3] 5. Select **Storage Details** to open the Audit Logs Storage Blade. Select the Azure storage account where logs will be saved, and the retention period, after which the old logs will be deleted, then click **OK** at the bottom. **Tip:** Use the same storage account for all audited databases to get the most out of the auditing reports templates. - + ![Navigation pane][4] 6. If you want to customize the audited events, you can do this via PowerShell or REST API - see the [Automation (PowerShell / REST API)](#subheading-7) section for more details. 7. Click **Save**. ### Table Auditing -> [!NOTE] + > Before setting up **Table auditing**, check if you are using a ["Downlevel Client"](sql-database-auditing-and-dynamic-data-masking-downlevel-clients.md). Also, if you have strict firewall settings, please note that the [IP endpoint of your database will change](sql-database-auditing-and-dynamic-data-masking-downlevel-clients.md) when enabling Table Auditing. -> -> + 1. Launch the [Azure Portal](https://portal.azure.com) at https://portal.azure.com. 2. Navigate to the settings blade of the SQL Database / SQL Server you want to audit. In the Settings blade, select **Auditing & Threat detection** (*[see screenshot in Blob Auditing section](#auditing-screenshot)*). 3. In the database auditing configuration blade, you can check the **Inherit settings from server** checkbox to designate that this database will be audited according to its server's settings. If this option is checked, you will see a **View server auditing settings** link that allows you to view or modify the server auditing settings from this context. - + ![Navigation pane][2] 4. If you prefer not to inherit Auditing settings from server, **uncheck** the **Inherit Auditing settings from server** option, turn **ON** Auditing, and choose **Table** Auditing Type. - + ![Navigation pane][3-tbl] 5. Select **Storage Details** to open the Audit Logs Storage Blade. Select the Azure storage account where logs will be saved, and the retention period, after which the old logs will be deleted. **Tip:** Use the same storage account for all audited databases to get the most out of the auditing reports templates (*[see screenshot in Blob Auditing section](#storage-screenshot)*). 6. Click on **Audited Events** to customize which events to audit. In the **Logging by event** blade, click **Success** and **Failure** to log all events, or choose individual event categories. - + > Customizing audited events can also be done via PowerShell or REST API - see the [Automation (PowerShell / REST API)](#subheading-7) section for more details. - > - > - + ![Navigation pane][5] 7. Once you've configured your auditing settings, you can turn on the new **Threat Detection** (preview) feature, and configure the emails to receive security alerts. Threat Detection allows you to receive proactive alerts on anomalous database activities that may indicate potential security threats. See [Getting Started with Threat Detection](sql-database-threat-detection-get-started.md) for more details. 8. Click **Save**. + +## Blob/Table differences in Server auditing policy inheritance + +###Blob Auditing + +1. If **Server Blob auditing is enabled**, it will **always audit** the database, regardless of: + - The database auditing settings. + - Whether or not the "Inherit settings from server" checkbox is checked in the database blade. + +2. Enabling Blob auditing in the database, in addition to enabling it in the server, will **not** override or change any of the settings of the Server Blob auditing - both audits will exist side by side. In other words, the database will be audited twice in parallel (once by the Server policy and once by the Database policy). + +3. The only reason to enable both Server Blob auditing and Database Blob auditing is if there is a need to audit different event types or categories for a specific database than are being audited for the rest of the databases on this server (e.g. if table inserts need to be audited only for a specific database). Otherwise, it is recommended to only enable Server Blob auditing and leave the database-level auditing disabled for all databases. + +###Table Auditing + +1. If **Server Table auditing is enabled**, it will only apply to the database if the "Inherit settings from server" checkbox is checked in the database blade. If the checkbox is unchecked and the database-level auditing is disabled, the database will not be audited. + +2. If the "Inherit settings from server" checkbox is checked, any changes made to the auditing settings in database will override the server settings for this database. + + + ## Analyze audit logs and reports Audit logs are aggregated in the Azure storage account you chose during setup. You can explore audit logs using a tool such as [Azure Storage Explorer](http://storageexplorer.com/). -See below specifics for analysis of both **Table** and **Blob** audit logs. +See below specifics for analysis of both **Blob** and **Table** audit logs. ### Blob Auditing Blob Auditing logs are saved as a collection of Blob files within a container named "**sqldbauditlogs**". @@ -112,23 +130,34 @@ For further details about the Blob audit logs storage folder hierarchy, Blob nam There are several methods to view Blob Auditing logs: -1. Through the Azure Portal - **see method (1) in the [Table Auditing section](#activity-ui) below** (Excel download not supported). +1. Through the [Azure Portal](https://portal.azure.com) - open the relevant database. At the top of the database's **Auditing & Threat detection** blade, click on **View audit logs**. + + ![Navigation Pane][10] + + An **Audit records** blade will open, where you'll be able to view the logs. + + * You can choose to view specific dates by clicking on **Filter** at the top area of the Audit records blade + * You can toggle between audit records that were created by server policy or database policy audit + + ![Navigation Pane][11] 2. Download log files from your Azure Storage Blob container via the portal or by using a tool such as [Azure Storage Explorer](http://storageexplorer.com/). - + Once you have downloaded the log file locally, you can double-click the file to open, view and analyze the logs in SSMS. - + Additional methods: - + * You can **download multiple files simultaneously** via Azure Storage Explorer - right-click on a specific subfolder (e.g. a subfolder that includes all log files for a specific date) and choose "Save as" to save in a local folder. - + After downloading several files (or an entire day, as described above), you can merge them locally as follows: - + **Open SSMS -> File -> Open -> Merge Extended Events -> Choose all files to merge** * Programmatically: - + * Extended Events Reader **C# library** ([more info here](https://blogs.msdn.microsoft.com/extended_events/2011/07/20/introducing-the-extended-events-reader/)) * Querying Extended Events Files Using **PowerShell** ([more info here](https://sqlscope.wordpress.com/2014/11/15/reading-extended-event-files-using-client-side-tools-only/)) +3. We have created a **sample application** that runs in Azure and utilizes OMS public APIs to push SQL audit logs into OMS for consumption via the OMS dashboard ([more info here](https://github.com/Microsoft/Azure-SQL-DB-auditing-OMS-integration)). + ### Table Auditing Table Auditing logs are saved as a collection of Azure Storage Tables with a **SQLDBAuditLogs** prefix. @@ -136,18 +165,21 @@ For further details about the Table audit log format, see the [Table Audit Log F There are several methods to view Table Auditing logs: - +1. Through the [Azure Portal](https://portal.azure.com) - open the relevant database. At the top of the database's **Auditing & Threat detection** blade, click on **View audit logs**. + + ![Navigation Pane][10] + + An **Audit records** blade will open, where you'll be able to view the logs. + + * You can choose to view specific dates by clicking on **Filter** at the top area of the Audit records blade + * You can download and view the audit logs in Excel format by clicking on **Open in Excel** at the top area of the Audit records blade + + ![Navigation Pane][12] -1. Through the [Azure Portal](https://portal.azure.com) - at the top of the **Auditing & Threat detection** blade, click on **More** and then on **Explore**. An **Audit records** blade will open, where you'll be able to view the logs. - - * You can choose to view specific dates by clicking on **Filter** at the top area of the Audit records blade - * You can download and view the audit logs in Excel format by clicking on **Open in Excel** at the top area of the Audit records blade - - ![Navigation Pane][7] 2. Alternatively, a preconfigured report template is available as a [downloadable Excel spreadsheet](http://go.microsoft.com/fwlink/?LinkId=403540) to help you quickly analyze log data. To use the template on your audit logs, you need Excel 2013 or later and Power Query, which you can download [here](http://www.microsoft.com/download/details.aspx?id=39379). - + You can also import your audit logs into the Excel template directly from your Azure storage account using Power Query. You can then explore your audit records and create dashboards and reports on top of the log data. - + ![Navigation Pane][9] ## Practices for usage in production @@ -162,7 +194,7 @@ When using Geo-replicated databases, it is possible to set up Auditing on either 1. **Primary database** - turn on **Blob Auditing** either on the server or the database itself, as described in [Set up auditing for your database](#subheading-2-1) section. 2. **Secondary database** - Blob Auditing can only be turned on/off from the Primary database auditing settings. - + * Turn on **Blob Auditing** on the **Primary database**, as described in [Set up auditing for your database](#subheading-2-1) section. (**Note:** Blob Auditing must be enabled on the database itself, not the server). * Once Blob Auditing is enabled on the Primary database, it will also become enabled on the Secondary database. * **Important:** By default, the **storage settings** for the Secondary database will be identical to those of the Primary database, causing **cross-regional traffic**. You can avoid this by enabling Blob Auditing on the **Secondary Server** and configuring a **local storage** in the Secondary Server storage settings (this will override the storage location for the Secondary database and result in each database saving the Audit logs to a local storage). @@ -173,10 +205,10 @@ When using Geo-replicated databases, it is possible to set up Auditing on either In production, you are likely to refresh your storage keys periodically. When refreshing your keys, you need to re-save the auditing policy. The process is as follows: 1. In the storage details blade switch the **Storage Access Key** from *Primary* to *Secondary*, and then click **OK** at the bottom. Then click **SAVE** at the top of the auditing configuration blade. - + ![Navigation Pane][6] 2. Go to the storage configuration blade and **regenerate** the *Primary Access Key*. - + ![Navigation Pane][8] 3. Go back to the auditing configuration blade, switch the **Storage Access Key** from *Secondary* to *Primary*, and then click **OK** at the bottom. Then click **SAVE** at the top of the auditing configuration blade. 4. Go back to the storage configuration blade and **regenerate** the *Secondary Access Key* (in preparation for the next keys refresh cycle). @@ -185,7 +217,7 @@ In production, you are likely to refresh your storage keys periodically. When re You can also configure Auditing in Azure SQL Database using the following automation tools: 1. **PowerShell cmdlets** - + * [Get-AzureRMSqlDatabaseAuditingPolicy][101] * [Get-AzureRMSqlServerAuditingPolicy][102] * [Remove-AzureRMSqlDatabaseAuditing][103] @@ -194,14 +226,14 @@ You can also configure Auditing in Azure SQL Database using the following automa * [Set-AzureRMSqlServerAuditingPolicy][106] * [Use-AzureRMSqlServerAuditingPolicy][107] 2. **REST API - Blob auditing** - + * [Create or Update Database Blob Auditing Policy](https://msdn.microsoft.com/en-us/library/azure/mt695939.aspx) * [Create or Update Server Blob Auditing Policy](https://msdn.microsoft.com/en-us/library/azure/mt771861.aspx) * [Get Database Blob Auditing Policy](https://msdn.microsoft.com/en-us/library/azure/mt695938.aspx) * [Get Server Blob Auditing Policy](https://msdn.microsoft.com/en-us/library/azure/mt771860.aspx) * [Get Server Blob Auditing Operation Result](https://msdn.microsoft.com/en-us/library/azure/mt771862.aspx) 3. **REST API - Table auditing** - + * [Create or Update Database Auditing Policy](https://msdn.microsoft.com/en-us/library/azure/mt604471.aspx) * [Create or Update Server Auditing Policy](https://msdn.microsoft.com/en-us/library/azure/mt604383.aspx) * [Get Database Auditing Policy](https://msdn.microsoft.com/en-us/library/azure/mt604381.aspx) @@ -214,7 +246,7 @@ You can also configure Auditing in Azure SQL Database using the following automa [Practices for usage in production]: #subheading-5 [Storage Key Regeneration]: #subheading-6 [Automation (PowerShell / REST API)]: #subheading-7 - +[Blob/Table differences in Server auditing policy inheritance](#subheading-8) [1]: ./media/sql-database-auditing-get-started/1_auditing_get_started_settings.png @@ -227,7 +259,9 @@ You can also configure Auditing in Azure SQL Database using the following automa [7]: ./media/sql-database-auditing-get-started/7_auditing_get_started_activity_log.png [8]: ./media/sql-database-auditing-get-started/8_auditing_get_started_regenerate_key.png [9]: ./media/sql-database-auditing-get-started/9_auditing_get_started_report_template.png - +[10]: ./media/sql-database-auditing-get-started/10_auditing_get_started_blob_view_audit_logs.png +[11]: ./media/sql-database-auditing-get-started/11_auditing_get_started_blob_audit_records.png +[12]: ./media/sql-database-auditing-get-started/12_auditing_get_started_table_audit_records.png [101]: https://msdn.microsoft.com/en-us/library/azure/mt603731(v=azure.200).aspx [102]: https://msdn.microsoft.com/en-us/library/azure/mt619329(v=azure.200).aspx From 68eab7372607eaac606f5b425e691f0430d1543f Mon Sep 17 00:00:00 2001 From: ArnoMicrosoft Date: Thu, 2 Feb 2017 09:04:56 -0800 Subject: [PATCH 27/90] Update documentdb-key-value-store-cost.md --- articles/documentdb/documentdb-key-value-store-cost.md | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/articles/documentdb/documentdb-key-value-store-cost.md b/articles/documentdb/documentdb-key-value-store-cost.md index 18f2de5c891ee..3749a4ff3072e 100644 --- a/articles/documentdb/documentdb-key-value-store-cost.md +++ b/articles/documentdb/documentdb-key-value-store-cost.md @@ -42,7 +42,7 @@ The following table shows the number of RUs required to perform read and write t |50 KB|50 RUs|250 RUs| |100 KB|100 RUs|500 RUs| -## Cost of running DocumentDB in Read/Write mode without indexing +## Cost of Reads and Writes If you provision 1,000 RU/sec, this amounts to 3.6m RU/hour and will cost $0.08 for the hour (in the US and Europe). For a 1KB size document, this means that you can consume 3.6m reads or 0.72m writes (3.6mRU / 5) using your provisioned throughput. Normalized to million reads and writes, the cost would be $0.022 /m reads ($0.08 / 3.6) and $0.111/m writes ($0.08 / 0.72). The cost per million becomes minimal as shown in the table below. From 57b84da707de42cb1cfa906b4db496baf414f43d Mon Sep 17 00:00:00 2001 From: mumian Date: Thu, 2 Feb 2017 12:54:24 -0500 Subject: [PATCH 28/90] replace images --- ...t-apache-spark-jupyter-notebook-kernels.md | 4 +- .../hdinsight-domain-joined-architecture.md | 80 +++++++++--------- ...hdinsight-domain-joined-architecture_1.png | Bin 0 -> 13373 bytes ...hdinsight-domain-joined-architecture_2.png | Bin 0 -> 16884 bytes ...hdinsight-domain-joined-architecture_3.png | Bin 0 -> 11715 bytes .../image1.png | Bin 61139 -> 0 bytes .../image2.png | Bin 101450 -> 0 bytes .../image3.png | Bin 67283 -> 0 bytes 8 files changed, 42 insertions(+), 42 deletions(-) create mode 100644 articles/hdinsight/media/hdinsight-domain-joined-architecture/hdinsight-domain-joined-architecture_1.png create mode 100644 articles/hdinsight/media/hdinsight-domain-joined-architecture/hdinsight-domain-joined-architecture_2.png create mode 100644 articles/hdinsight/media/hdinsight-domain-joined-architecture/hdinsight-domain-joined-architecture_3.png delete mode 100644 articles/hdinsight/media/hdinsight-domain-joined-architecture/image1.png delete mode 100644 articles/hdinsight/media/hdinsight-domain-joined-architecture/image2.png delete mode 100644 articles/hdinsight/media/hdinsight-domain-joined-architecture/image3.png diff --git a/articles/hdinsight/hdinsight-apache-spark-jupyter-notebook-kernels.md b/articles/hdinsight/hdinsight-apache-spark-jupyter-notebook-kernels.md index 1a5862f246548..f73eb436b85b3 100644 --- a/articles/hdinsight/hdinsight-apache-spark-jupyter-notebook-kernels.md +++ b/articles/hdinsight/hdinsight-apache-spark-jupyter-notebook-kernels.md @@ -34,7 +34,7 @@ You must have the following: * An Apache Spark cluster in HDInsight. For instructions, see [Create Apache Spark clusters in Azure HDInsight](hdinsight-apache-spark-jupyter-spark-sql.md). ## Create a Jupyter notebook -1. From the [Azure Portal](https://portal.azure.com/), open your cluster. See [List and show clusters](hdinsight-administer-use-portal-linux.md#list-and-show-clusters) for the instructions. The cluster is opened in a new portal blade. +1. From the [Azure portal](https://portal.azure.com/), open your cluster. See [List and show clusters](hdinsight-administer-use-portal-linux.md#list-and-show-clusters) for the instructions. The cluster is opened in a new portal blade. 2. From the **Quick links** section, click **Cluster dashboards** to open the **Cluster dashboards** blade. If you don't see **Quick Links**, click **Overview** from the left menu on the blade. ![Cluster dashboards](./media/hdinsight-apache-spark-jupyter-notebook-kernels/hdinsight-azure-portal-cluster-dashboards.png "Cluster dashboards") @@ -155,7 +155,7 @@ The new kernels are in evolving stage and will mature over time. This could also * [Run jobs remotely on a Spark cluster using Livy](hdinsight-apache-spark-livy-rest-interface.md) ### Tools and extensions -* [Use HDInsight Tools Plugin for IntelliJ IDEA to create and submit Spark Scala applicatons](hdinsight-apache-spark-intellij-tool-plugin.md) +* [Use HDInsight Tools Plugin for IntelliJ IDEA to create and submit Spark Scala applications](hdinsight-apache-spark-intellij-tool-plugin.md) * [Use HDInsight Tools Plugin for IntelliJ IDEA to debug Spark applications remotely](hdinsight-apache-spark-intellij-tool-plugin-debug-jobs-remotely.md) * [Use Zeppelin notebooks with a Spark cluster on HDInsight](hdinsight-apache-spark-use-zeppelin-notebook.md) * [Use external packages with Jupyter notebooks](hdinsight-apache-spark-jupyter-notebook-use-external-packages.md) diff --git a/articles/hdinsight/hdinsight-domain-joined-architecture.md b/articles/hdinsight/hdinsight-domain-joined-architecture.md index cb46d2156b3e5..f6d9adec7a7bf 100644 --- a/articles/hdinsight/hdinsight-domain-joined-architecture.md +++ b/articles/hdinsight/hdinsight-domain-joined-architecture.md @@ -14,33 +14,33 @@ ms.devlang: na ms.topic: hero-article ms.tgt_pltfrm: na ms.workload: big-data -ms.date: 01/10/2017 +ms.date: 02/02/2017 ms.author: saurinsh --- # Plan Azure Domain-joined Hadoop clusters in HDInsight -Today, HDInsight is a single user cluster, which works fine for most companies who have smaller application teams building their BigData workloads. However, as Hadoop is gaining popularity, many enterprises are moving towards a model where clusters are managed by IT teams, and multiple application teams are sharing clusters. Thus, multi-user clusters are one of the most requested functionalities in HDInsight. +The traditional Hadoop is a single user cluster. It suits for most companies that have smaller application teams building their BigData workloads. As Hadoop is gaining popularity, many enterprises are moving towards a model where clusters are managed by IT teams, and multiple application teams share clusters. Thus, multi-user clusters are one of the most requested functionalities in HDInsight. -Instead of building our own multi-user authentication, and authorization, HDInsight relies on the most popular identity provider – Active Directory. After integrating HDInsight with Active Directory, AD users can communicate with the cluster using their Active Directory credentials. The powerful security groups functionality in Active Directory can be used to manage multi-user authorization in HDInsight. HDInsight maps the Active Directory user to a local Hadoop user, so all the services running on HDInsight (Ambari, Hive server, Ranger, Spark thrift server, and so on) work seamlessly for the logged in user. +Instead of building its own multi-user authentication and authorization, HDInsight relies on the most popular identity provider – Active Directory (AD). The powerful security groups functionality in Active Directory can be used to manage multi-user authorization in HDInsight. By integrating HDInsight with Active Directory, Active Directory users can communicate with the clusters using their Active Directory credentials. HDInsight maps Active Directory user to a local Hadoop user, so that all the services running on HDInsight (Ambari, Hive server, Ranger, Spark thrift server, and so on) work seamlessly for the authenticated user. ## Integrate HDInsight with Active Directory -When HDInsight is integrated with Active Directory, the HDInsight Linux nodes are domain-joined to the Active Directory domain. HDInsight creates service principals for the hadoop services running on the cluster and place them within a specified Organizational Unit in the Active Directory. HDInsight also creates reverse DNS mappings in the Active Directory domain for the IP addresses of the nodes that are joined to the domain. +By integrating HDInsight with Active Directory, the HDInsight cluster nodes are domain-joined to the Active Directory domain. HDInsight creates service principals for the Hadoop services running on the cluster and place them within a specified Organizational Unit (OU) in the Active Directory. HDInsight also creates reverse DNS mappings in the Active Directory domain for the IP addresses of the nodes that are joined to the domain. To achieve this setup, there are multiple architectures that you can follow. You need to decide which architecture works better for you. **1. HDInsight integrated with AD running on Azure IAAS** -This is the simplest architecture for integrating HDInsight with Active Directory. The Active Directory domain controller runs on one (or multiple) virtual machines (VM) in Azure. Usually these VMs are within a virtual network. You can setup a new virtual network within which you can place your HDInsight cluster. For HDInsight to have a line of sight to the Active Directory, you need to peer these virtual networks using [VNET to VNET peering](../virtual-network/virtual-networks-create-vnetpeering-arm-portal.md). +This is the simplest architecture for integrating HDInsight with Active Directory. The Active Directory domain controller runs on one (or multiple) virtual machines (VM) in Azure. Usually these VMs are within a virtual network. You can setup another virtual network for HDInsight cluster. For HDInsight to have a line of sight to the Active Directory, you need to peer these virtual networks using [VNET to VNET peering](../virtual-network/virtual-networks-create-vnetpeering-arm-portal.md). -![Domain-join HDInsight cluster topology](./media/hdinsight-domain-joined-architecture/image1.png) +![Domain-join HDInsight cluster topology](./media/hdinsight-domain-joined-architecture/hdinsight-domain-joined-architecture_1.png) -Prerequisites that need to be setup on Active Directory +Prerequisites that need to be setup on Active Directory: -* An Organizational unit must be created, within which you want to place the HDInsight cluster VMs and the service principals used by the cluster. -* LDAPS must be setup for communicating with the Active Directory. The certificate used to setup LDAPS must be a real certificate (not a self-signed certificate). -* Reverse DNS zones must be created on the domain for the IP address range of the HDI Subnet (for example 10.2.0.0/24 in the above picture). +* An [Organizational Unit](../active-directory-domain-services/active-directory-ds-admin-guide-create-ou.md) must be created, within which you want to place the HDInsight cluster VMs and the service principals used by the cluster. +* [LDAPS](../active-directory-domain-services/active-directory-ds-admin-guide-configure-secure-ldap.md) must be setup for communicating with the Active Directory. The certificate used to setup LDAPS must be a real certificate (not a self-signed certificate). +* Reverse DNS zones must be created on the domain for the IP address range of the HDInsight Subnet (for example 10.2.0.0/24 in the previous picture). * A service account, or a user account is needed, which issued to create the HDInsight cluster. This account must have the following permissions: - Permissions to create service principal objects and machine objects within the organizational unit. @@ -49,22 +49,22 @@ Prerequisites that need to be setup on Active Directory **2. HDInsight integrated with a cloud-only Azure AD** -For a cloud-only Azure Active Directory, you need to configure a domain controller so that HDInsight can be integrated with your Azure Active Directory (AAD). This is achieved using [Azure Active Directory domain services](../active-directory-domain-services/active-directory-ds-overview.md) (AD DS). The AD DS creates domain controller machines on the cloud, and provides you with IP addresses for them. It creates two domain controllers for high availability. +For a cloud-only Azure Active Directory (Azure AD), you need to configure a domain controller so that HDInsight can be integrated with your Azure Active Directory. This is achieved by using [Azure Active Directory domain services](../active-directory-domain-services/active-directory-ds-overview.md) (Azure AD DS). The Azure AD DS creates domain controller machines on the cloud, and provides you with IP addresses for them. It creates two domain controllers for high availability. -The AD DS only exists in Classic VNETs today, and hence you need access to Classic portal, and need to create a classic VNET for configuring AD DS. The HDInsight VNET exists in the Azure portal, which needs to be peered with the classic VNET using VNET to VNET peering. +Currently, Azure AD DS only exists in classic VNETs. It is only accessible using the classic Azure portal. The HDInsight VNET exists in the Azure portal, which needs to be peered with the classic VNET using VNET to VNET peering. > [!NOTE] -> Peering between Classic and Azure Resource Manager VNETs requires both vnets are in the same region, and both vnets are under the same Azure subscription. +> Peering between a classic VNet and an Azure Resource Manager VNet requires both VNets are in the same region, and both VNets are under the same Azure subscription. -![Domain-join HDInsight cluster topology](./media/hdinsight-domain-joined-architecture/image2.png) +![Domain-join HDInsight cluster topology](./media/hdinsight-domain-joined-architecture/hdinsight-domain-joined-architecture_2.png) -Prerequisites that need to be setup on Active Directory +Prerequisites that need to be setup on Active Directory: -* An [Organizational unit](../active-directory-domain-services/active-directory-ds-admin-guide-create-ou.md) must be created, within which you want to place the HDInsight cluster VMs and the service principals used by the cluster. +* An [Organizational Unit](../active-directory-domain-services/active-directory-ds-admin-guide-create-ou.md) must be created, within which you want to place the HDInsight cluster VMs and the service principals used by the cluster. * [LDAPS](../active-directory-domain-services/active-directory-ds-admin-guide-configure-secure-ldap.md) must be setup when you configure AD DS. The certificate used to setup LDAPS must be a real certificate (not a self-signed certificate). * Reverse DNS zones must be created on the domain for the IP address range of the HDI Subnet (for example 10.2.0.0/24 in the above picture). -* [Password hashes](../active-directory-domain-services/active-directory-ds-getting-started-password-sync.md) must be synced from AAD to AD DS. -* A service account, or a user account is needed, which is used to create the HDInsight cluster. This account must have the following permissions +* [Password hashes](../active-directory-domain-services/active-directory-ds-getting-started-password-sync.md) must be synced from Azure AD to AD DS. +* A service account, or a user account is needed, which is used to create the HDInsight cluster. This account must have the following permissions: - Permissions to create service principal objects and machine objects within the organizational unit. - Permissions to create reverse DNS proxy rules @@ -72,16 +72,16 @@ Prerequisites that need to be setup on Active Directory **3. HDInsight integrated with an on-premises AD via VPN** -This architecture is like the architecture #1. The only difference is that in this case, your Active Directory is on-premises and the line of sight for HDInsight to Active Directory is via a [VPN connection from Azure to on-premises network](../expressroute/expressroute-introduction.md). +This architecture is similar the architecture #1. The only difference is that the Active Directory is on-premises and the line of sight for HDInsight to Active Directory is via a [VPN connection from Azure to on-premises network](../expressroute/expressroute-introduction.md). -![Domain-join HDInsight cluster topology](./media/hdinsight-domain-joined-architecture/image3.png) +![Domain-join HDInsight cluster topology](./media/hdinsight-domain-joined-architecture/hdinsight-domain-joined-architecture_3.png) -Prerequisites that need to be setup on the on-premises Active Directory +Prerequisites that need to be setup on the on-premises Active Directory: -* An Organizational unit must be created, within which you want to place the HDInsight cluster VMs and the service principals used by the cluster. -* LDAPS must be setup for communicating with the Active Directory. The certificate used to setup LDAPS must be a real certificate (not a self-signed certificate). +* An [Organizational Unit](../active-directory-domain-services/active-directory-ds-admin-guide-create-ou.md) must be created, within which you want to place the HDInsight cluster VMs and the service principals used by the cluster. +* [LDAPS](../active-directory-domain-services/active-directory-ds-admin-guide-configure-secure-ldap.md) must be setup for communicating with the Active Directory. The certificate used to setup LDAPS must be a real certificate (not a self-signed certificate). * Reverse DNS zones must be created on the domain for the IP address range of the HDI Subnet (for example 10.2.0.0/24 in the above picture). -* A service account, or a user account is needed, which is used to create the HDInsight cluster. This account must have the following permissions +* A service account, or a user account is needed, which is used to create the HDInsight cluster. This account must have the following permissions: - Permissions to create service principal objects and machine objects within the organizational unit. - Permissions to create reverse DNS proxy rules @@ -89,22 +89,22 @@ Prerequisites that need to be setup on the on-premises Active Directory **4. HDInsight integrated with an on-premises AD synced to an Azure AD** -This architecture is like the architecture #2. The only difference is that in this case, the on-premises Active Directory is synced to the Azure Active Directory (AAD). You need to configure a domain controller on the cloud so that HDInsight can be integrated with your Azure Active Directory (AAD). This is achieved using [Azure Active Directory domain services](../active-directory-domain-services/active-directory-ds-overview.md) (AD DS). The AD DS creates domain controller machines on the cloud, and provides you with IP addresses for them. It creates two domain controllers for high availability. +This architecture is simliar to the architecture #2. The only difference is that the on-premises Active Directory is synced to the Azure Active Directory. You need to configure a domain controller in the cloud so that HDInsight can be integrated with your Azure Active Directory. This is achieved using [Azure Active Directory domain services](../active-directory-domain-services/active-directory-ds-overview.md) (AD DS). The AD DS creates domain controller machines on the cloud, and provides you with IP addresses for them. It creates two domain controllers for high availability. -The AD DS only exists in Classic VNETs today, and hence you need access to Classic portal, and need to create a classic VNET for configuring AD DS. The HDInsight VNET exists in the Azure portal, which needs to be peered with the classic VNET using VNET to VNET peering. +Currently, Azure AD DS only exists in classic VNETs. It is only accessible using the classic Azure portal. The HDInsight VNET exists in the Azure portal, which needs to be peered with the classic VNET using VNET to VNET peering. -> [!NOTE] -> Peering between Classic and Azure Resource Manager VNETs requires both vnets are in the same region, and both vnets are under the same Azure subscription. +> [!NOTE] +> Peering between a classic VNet and an Azure Resource Manager VNet requires both VNets are in the same region, and both VNets are under the same Azure subscription. -![Domain-join HDInsight cluster topology](./media/hdinsight-domain-joined-architecture/image2.png) +![Domain-join HDInsight cluster topology](./media/hdinsight-domain-joined-architecture/hdinsight-domain-joined-architecture_2.png) -Prerequisites that need to be setup on Active Directory +Prerequisites that need to be setup on Active Directory: * An [Organizational unit](../active-directory-domain-services/active-directory-ds-admin-guide-create-ou.md) must be created, within which you want to place the HDInsight cluster VMs and the service principals used by the cluster. -* LDAPS must be setup when you configure AD DS. The certificate used to setup LDAPS must be a real certificate (not a self-signed certificate). +* [LDAPS](../active-directory-domain-services/active-directory-ds-admin-guide-configure-secure-ldap.md) must be setup when you configure AD DS. The certificate used to setup LDAPS must be a real certificate (not a self-signed certificate). * Reverse DNS zones must be created on the domain for the IP address range of the HDI Subnet (for example 10.2.0.0/24 in the above picture). -* [Password hashes](../active-directory-domain-services/active-directory-ds-getting-started-password-sync.md) must be synced from AAD to AD DS. -* A service account, or a user account is needed, which is used to create the HDInsight cluster. This account must have the following permissions +* [Password hashes](../active-directory-domain-services/active-directory-ds-getting-started-password-sync.md) must be synced from Azure AD to AD DS. +* A service account, or a user account is needed, which is used to create the HDInsight cluster. This account must have the following permissions: - Permissions to create service principal objects and machine objects within the organizational unit. - Permissions to create reverse DNS proxy rules @@ -112,7 +112,7 @@ Prerequisites that need to be setup on Active Directory **5. HDInsight integrated with a non-default Azure AD (recommended only for testing and development)** -This architecture is like architecture #2. In most companies, the admin access to Active Directory is restricted to only certain individuals. Thus, when you want to do a POC, or just try out creating a domain-joined cluster, instead of waiting for admin to configure pre-requisites on the Active Directory, it may be beneficial to just create a new Azure Active Directory in the subscription. Since this is an AAD that you created, you have full permissions to this AAD to configure the AD DS. +This architecture is similar to architecture #2. For most companies, the admin access to Active Directory is restricted to only certain individuals. Thus, when you want to do a proof-of-concept, or just try out creating a domain-joined cluster, instead of waiting for admin to configure pre-requisites on the Active Directory, it may be beneficial to just create a new Azure Active Directory in the subscription. Since this is an Azure AD that you created, you have full permissions to this Azure AD to configure the AD DS. The AD DS creates domain controller machines on the cloud, and provides you with IP addresses for them. It creates two domain controllers for high availability. @@ -121,15 +121,15 @@ The AD DS only exists in Classic VNETs today, and hence you need access to Class > [!NOTE] > Peering between Classic and Azure Resource Manager VNETs requires both vnets are in the same region, and both vnets are under the same Azure subscription. -![Domain-join HDInsight cluster topology](./media/hdinsight-domain-joined-architecture/image2.png) +![Domain-join HDInsight cluster topology](./media/hdinsight-domain-joined-architecture/hdinsight-domain-joined-architecture_2.png) -Prerequisites that need to be setup on Active Directory +Prerequisites that need to be setup on Active Directory: -* An Organizational unit must be created, within which you want to place the HDInsight cluster VMs and the service principals used by the cluster. -* LDAPS must be setup when you configure AD DS. You can create a [self-signed certificate](../active-directory-domain-services/active-directory-ds-admin-guide-configure-secure-ldap.md) to configure LDAPS. However, to use a self-signed certificate, you need to request an exception from hdipreview@microsoft.com. +* An [Organizational unit](../active-directory-domain-services/active-directory-ds-admin-guide-create-ou.md) must be created, within which you want to place the HDInsight cluster VMs and the service principals used by the cluster. +* [LDAPS](../active-directory-domain-services/active-directory-ds-admin-guide-configure-secure-ldap.md) must be setup when you configure AD DS. You can create a [self-signed certificate](../active-directory-domain-services/active-directory-ds-admin-guide-configure-secure-ldap.md) to configure LDAPS. However, to use a self-signed certificate, you need to request an exception from hdipreview@microsoft.com. * Reverse DNS zones must be created on the domain for the IP address range of the HDI Subnet (for example 10.2.0.0/24 in the above picture). -* Password hashes must be synced from AAD to AD DS. -* A service account, or a user account is needed, which is used to create the HDInsight cluster. This account must have the following permissions +* [Password hashes](../active-directory-domain-services/active-directory-ds-getting-started-password-sync.md) must be synced from Azure AD to AD DS. +* A service account, or a user account is needed, which is used to create the HDInsight cluster. This account must have the following permissions: - Permissions to create service principal objects and machine objects within the organizational unit. - Permissions to create reverse DNS proxy rules diff --git a/articles/hdinsight/media/hdinsight-domain-joined-architecture/hdinsight-domain-joined-architecture_1.png b/articles/hdinsight/media/hdinsight-domain-joined-architecture/hdinsight-domain-joined-architecture_1.png new file mode 100644 index 0000000000000000000000000000000000000000..9864475d4e69789659e0cb920a225e022a6502f7 GIT binary patch literal 13373 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 bXejiA(GoPzIV#})Kv1%hN)pv#pM(Do%6Axw literal 0 HcmV?d00001 diff --git a/articles/hdinsight/media/hdinsight-domain-joined-architecture/hdinsight-domain-joined-architecture_2.png b/articles/hdinsight/media/hdinsight-domain-joined-architecture/hdinsight-domain-joined-architecture_2.png new file mode 100644 index 0000000000000000000000000000000000000000..04b74d9acc795d0481484c33aa32d7cb8a5d9a89 GIT binary patch literal 16884 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 FzW@j4W=H@4 literal 0 HcmV?d00001 diff --git a/articles/hdinsight/media/hdinsight-domain-joined-architecture/hdinsight-domain-joined-architecture_3.png b/articles/hdinsight/media/hdinsight-domain-joined-architecture/hdinsight-domain-joined-architecture_3.png new file mode 100644 index 0000000000000000000000000000000000000000..e1d0bf62e5145ed944e1eeb5ca501042c77dcc35 GIT binary patch literal 11715 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 AdjJ3c literal 0 HcmV?d00001 diff --git a/articles/hdinsight/media/hdinsight-domain-joined-architecture/image1.png b/articles/hdinsight/media/hdinsight-domain-joined-architecture/image1.png deleted file mode 100644 index 18ba694b5418793eae52ebc9e05c1dd8873ccc38..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 61139 zcmeFZWmuH!_clz2z|c6vkkUDHOM|3@AR!&1NXXFLgObt`BCUjUNH-{rbcfQVlz{r& z1MaQ+zkmDr?f1j`;eQ;D$05ov_kCa2y4E_^xz4qQ@Z0K&c-JVdAt52*-BOa%LPA2% zMnXbi#X2LKc@h0_@TxQb;MamQ1^D zH~i5)XE^oGuKCb7i;zt3CkG0g>9T3tT1b2;5K)DXEF0o z-uSsII77b#^9A^tY)MhkK68HU3-8a^e!3ytO{dEO%op=db8{Ip+)pKt(4>0yS6HC- z9@HpWqE}`kSYCg;F~X>>4K=|_#qhWFW?H3mXlUj1dX1E8UXhvAmN`2cKWbH zEEGE1Lga8SJemQLKA-Q-^ExPX@FXwU8rY_eC>a@9?Q3)^(&Jn(qdHdr_DzfyC6NAx zR7uy{qLhkX?vw@d{@lx)Rs?!W8WMNmw%{Xl;c9JdT?);Pc4RQ=0gRb@`a#RidaSvW5%>DGK9-fqu0B)xP6^BaMWw{KC1EMqo zrXOC3eKEwCaDw`?42~}m7VUdzpV;mhA)!wiB8M8?#sI^18}VI5`2Td=4oytHN9xMw z^DVsV;|WdLM)n;f5}PP!GZv@D1d>$E^-uR^!M^$Mx2RdyQqzQA?dG~Yqp2YD#b+#r zEi#kR#OR|zSq3Wk{kabuW5}2kSjoFa*^%g&ak1O-NJyl46?2`(aE?PAL0`sC0`pLj zzTY@_a%g=@0Nxn6_DAg53m^4!4ABPJ-`f!D{MaQN+coHQvfJO+=lDHh&%d5$Y)vC3 z$^#`AHH=o?PL-QR>H;?{*5SE$wU5gcIQA*PN zi2)rjV&;*?6ADL08Ebp|Gxfa{g_sPb{3YXH+~)cesSTyUzEPgFl&`J}cKGyp;5hh{ z3iGs(dZ>5yg0n zvjXvqr96OkI#W8cBzWnf;0ELsXJb|pQh7WKOQP0&+;br74xZ( zfG3-O5D0ybyyW&kLVls>c#IZF2qY@D+pnZ<^hjEbnIZi)+AW8OI+@;JwYiSAXm-Wr zS9otTH=LtGv@`pV72Z|?AO<3VxvcAW{!pi9lKsdE1hlHc!W8ePnzZ`R1y;}elgzy? zTwI>}k}tAHpiUr$MrBMmin5NM=SqZu!dZ*b!hK}KGuf_h$kRhJYL^*&9B|}gDrE?r z6Y2&Ti8O9tOjgvI`{%AUC7b`;DO?sq%{6bB22HjLBVBt|n#jd=s^UkFzi}`#wJ$yr zvgdV1YVFu`r1hGig)WLHD zEFuvdB%@YDdJ1xP3WNq~(MNr)neYT3JA9HmvyV93BvB2~3#(tQxM@Bxnx)Wp=L|M- znCK`TeA6o&nZ?<^a#{{SlPxw?XaTYV1G?%bU-M;N~YwAjJ4ix6FN^c|0M=Y z>&tqv7j?BF%SkzFUG-z4^NQNXbnlLx-otO7(o{a#%LI(3L|jkv*tR98sq2X|R%c?L z<*Li&+6aTQUkOX>iWx>7?l>!Mz{!#5+V||4Zi_C{C9he)f=$sF$nEi$(#k@w!Gi-1 z810l77bfotH#&83He!MT!f@HhTRLf-()#wP&bpFH9k0t;%Y`KuN@ss`Z-U}C<|ooY zXpP~ul{o~LPUO^cI|id29p|{iR@&0a3cdJCEib0&V_DGzR4at_wtbb(4o4$M*9gG3 zG#UBGJ<{uetmA|hUSah;J*d4{+AnKwW-V%jkgp{ZxvN$gvwXTfRyD0%NtMu~Eid@4 zF1!>t)0&eOx_yEUGT#$|?9SRGW@?uLcMZJi?!A=eC!OA)cXu4By)-ywnUK(Fd0Laj zxqmLLgYxcjTZ8csj2HL$N~tXk&uhB$cLC)#KVq3&Yc%mUQ+LXisZcKS0|58efuoJ0 zbqc-cWq#4IG@dz@?sGn?DQb=Z=5JZACkQ$u6$s4{1_HrpeN2xclPI{($LJxIYYvEt zH*+ThVK@SAg02=-{$g2qD>hJmdsMK5GpS%lWRBy=3_PzY=C9q(f@J@KhZ&vF~5 zBMdl>Z0L)gRwx3c;O)#0z6K>WmW3;xQ~Qe9-6>mz$Q<{s&6d1XV0m_JiJOZ(|vSrDgsa&uSoVOQv)5=47TaBZ6$SlnC;!NB_tKu;5)ws4RMm zI(a)%%RQupy6cVJAFjs~9tsDb5{T}I_? zT+9?69YJd9XqWbM3_RzwkhxoI6$o z%r=A|i$M5Do|qiS?&%9Gqh9tA#I_f5VZp}1Uu?XizY$aTd`H_zwg@Bf&6iTzm8mp~ z3zChY7tF)NEYt4o5xPu6^i7L4@xi=>#OGb)=kl;8;%OZbxd{wtNVD@bmdlzcg)zG? z`5=@skG9nEou-b%0CkU4j8Tp_lu#Kcj;0Wxo|zR z-)79VS}Z7Kpd&^KVh0rpV<_PpC{d*lM9@J&t+W9*Wod0XsGfmkJ#QzOohqSvjrtkV zD?!M2Dc6AQ-^KDd>3TT99-Fg~%5KTZSAyzAHj#WHjGp>Eu|G)$f#c?IGVr4#Jm88?l zH?$ZeA9L81%pR{g`9Y22Vsf-wn-V5Hx<-wo$a`7PbP$^5XjT!(kjO7gJvJJ?j!0ee zK~0o=JS~}Dy`z-7J47N5*&wvnSTw(FMDjf#-#}&X$wr?QUf(V-%DEoi;lBJN`f!1s zB`}BdNpfMI4_B-^J+vjGlN6PM@gWnV^Cg+0f?RD+Q%;jX;#=Ouu-DeLbur9&XLDTe zWo|mohM6)&-$PU#^vHeUSoH|R+F-xckwBMB{Bl%1j%&%Mn)?9r9oqJq<2)b#nqS3g>P8@++BkvkSTc5m(CT?pu+$ZW;2V*O2o?eMX-}@sWMFTZ=40kxs~Th_?-Il=nZ?wJ za*G=Yx$$dXDNQbeFFEXC#AWrAEP1uN07pW(H0qOdPQ|l|N4aBt z`kKUbPlkucfe(8r4cMFX4crKBGi{V4o>E7EOc{FOQ=#CK>+t$Nm0mU=3SDcLw0`z0 z^Y(p_ra$nup!Nh3oTyX-L8HcfM5YQR(C$^ren1z@5+iK*i5_%~Cg{7|!f*Qn>upHs zdI>!XcLtMZ!8*!if`J_0_>~O;olZy~&2azla#=!PlDgSs(>KblZ!Od4$h!XI1Ft2@ zZ6uVS4w6f54pqB~6_jwkRgH^;m5ce4ane7Gh$IubFn4$lE`9cdLRKqHI4qV9V2CQF z%Z+?yikmI&`MoUrG134Qp+8SaG0U=ru(4?$gj1U-wq?{UbMnw$P`|9@MK-SrC;Dkh za|{qM07~NfC1Ju|G`uG1cNI!GC~Mc9_&>$!dMYrWJXq!m<=Q*M5@ zVfqrw^1$-bpeAh#2L!-;ABSMXb|n&`!2ZF-*ick|57Z^MW=4FkMBElq>~o`HEJNbo zAfHc&eMjFY2*q&+8w@*%yK+~QD|cP$xY=`}o-^wBCWNYq>94(7ELon873sA ziw{Nwe7*yR4bu#KUfukZ#M>;gK$O5mZa_ono@jh9IU~D%+$G|N_KKn12S}NgNH{O| z=G}KZ8K3d{IEQc?Jz=~U4mmY6aj>h!V#>(oW0HzIz;1Q4K0m=;@K-;iJb=qBvP=?2YF8u}gf{BxN;?Qt_ zv9{T6vy$xI9TV#|?_pE)N|?TtZfOxsPE3voEW@RbavqK;VsqN`=7Oft9T~;ZLn#zd z?*|u1{;8hGP|+gvm^fRT9-Rw7`!ECd%|IzJHA`C(2@^tKkA>M7JiHG&uhY%mUwy_{ zI_M4tD~2qvDsUS+0zv`7KrY@VG)EOI9iLyD7A64X1fIw>4vH@ie98GqP4=1X1N)W( zYtzg+Id+Iun{7yM>zxpWlgqf%QQ0OmFetvUoq$Qw^3J1_gl12kJD#TCK>gWU#ca+ix z9EFAe#y1>0H>tU1PXSQ~xI@u0`ax5Idk+aiuIwL0dH|m{Thp3cx>xjx*X>St#|;G? z(aY_GYxOvWm=EgIy05ZutRwwqZ{ha*<%59qB{%#75t5~oQ{b8gFT|txsHx{q29o%_ z*dRXFLsi-1CW!txZ*#d&jn3%3qqArU)NSk+TF46C^tQ(O(>CI>RcjKw?N6`g_cda5 zabgMb@ddpIijP(1^WY@BbY2FYBMgJ3nUSiQt!VvWAz3~mK-Qd_9oLUZ~+)w=y$B{)Rc_e6*Mmk+Dkvn9=eeV&o{w<+&2Y zH?E2R;S-Y{#Fkh{*Ox`y*TuwpRCL!F=aG1KpNBM*^E-)y37yVa@X7wzmtZb@MRfIs z-D_bBge8+fJdJCp1+Dv2!e>EX-p>PKd#Zw@G!k=ks|mT^I`|s4AY1%|w66QMdA8WO z2&@8Z&YXxE8l;IA{oIuFfwBH`Vd_aC&=d2@-P@da+6N}%KZjHkQONOgLy{|Irc|W9`QR=7l^6O_4JIT&?A$=uZ4+=L z>TZ0%D;nC(i*5#+iUW_0qIeiV0vIu_GYI!fL0>;p&}9Ay)GC`Bk3NJz@o7p5xvRT> z`Ze&+7*p*gPU731DwFS0cDr(Z+)dAJiGG-%XEzOTgc72L(KG;d6}E>y>-D%29fX7$ z{;h|K_6>&`8U7EJkiM`5ud>0}$E(K!mEwMCK%gvR1-QOYyEs_s*3;EJ-o~%Bd+C5l zT;)}GfIk$QPbk}KiSN7tIuvDM?IlAlZ7LHLd=SW*z~_hbEhXs8wo@FLK8l86*w zKo06peuqiTyEc|M?%TAGoW}@Uq@o+z%?^(yK3)2TEGoadGsBFxSH>HWaC!IdD;qOM zQC`o>OrpaOcQ$`AllmHgU>(DZf?Fx}{vGr57rS(>SxYB9xEept zXn()SFJ7r)&GvINC7kmDQGs>90z8B663#`FiE7}1AO2BmsyDS-cLIB#7-y&ORNCi?bX#jR)y)wjs3Vs z+`rWJE!fMS3*eSP@lpHrVRXo~593SRATg$X@WDX8vaa$owf%(8N1(?f+0c!Y%1 zbs6|8X=TOJx%NyX3ztR!qJZS6@QHOnDa7v`(&kDC;P_5CaE5{<9N7-XF6vAix{eRD zxeOP(X1D!QR>wy*-_8>zfY5MKwd8K0i(scBotY&~_TwIalw*>>shQwkCLV3ia2FkCHyP^yBbltR^5? zl&#rj0O=FiGdIP3JL7dE!YaW8pP%H6FZ+UU^t0@KfvXCu8@ES ze~rWwD>*T2NImWA$q2jbZ4i<$o899sHMiU1H~gZ64#Ug)sjpO0IW=R`tv~|a%e_@V#gSb zPfC&dbuzM;`;$AgD(#G4nk=Ac)Vptp zu%!(A@gEg^Xn!Y!PKI~u#16|!iBR|zZk^ps=64d^(VZC zLs>-}#dcOD&s7ocFVEWE`|XgqVc=ziizz>ekGe*8$s<`%FUcWXiy=2#=BiA1=YQ!y zSs#=(3J9)#%6sXP!7Kt=qHMueKgGRzvvTDByHzm3|FhMVU;S@%2C1rqCFu@w;Rf>wzSzD%LJPqc7lwZ-4tD2++~m0AOp7c0~k(aR-{p?@4n8;ri>mB@-Gkd*-`HP`ep5nQKRd}%{u`6 z#6cjb>Gf^%CtdxioX0p?qH*>}Y&o!X$MB>h^Kdpt!1f&S>sIk-fk~^+98mF#z3>2RZ=BbW}I?n5sJeODF6)(FIJaScZW86T&)RhdI{`c0P|zgV zolt6v=dplyye@z_e%yA={LdOV zZnRvBQ4E813cDi4Tn4|Q+a6oWh4&s-3T^Hbz&IQ}I6;k8hMt2EyH>XlYAAoii@9y9 zyfIl+!^8ftavLL2@I2y`g0f;rLE^}gpH{g51UR!qR*1%i6@F4;(#{)YM+utyjBe#U zKvuJR9>M8NAf}~^nK!>qvPo)k(-1i~d)UrGuHN|Jz08JL*g$>b&jFHZZ@F3&fOSMWgmZ>jV(4hsbz& zfG!YNh!xAoeu+}ZKrPlw?Jt0tZl)XDWY1-A$Qsdfm>g}MP~9jMfF!MzG)>zToyC<2 zKIktF{bq$PQF-Z{z12HS^2B08)7kwd${C~3X7_f{#kVdkK;TRj6pRGC{9xVa@nwr}{gfB_Z*VuP>BLT|pr_TlM_sxmm&2h6*FQ-Jnv?)5uSQ9x!zc+_lvLX;P4 zu7%Z8-mu8l#R#mpNgZmOtiQWI^|9n3nV(D(O|AxO!tABv#hYi zw9q9oK@uaXT!$93r;Uv)4m*N|^~dWbh=U>< zb>}eP9iNsDinji7wybsx%vOOCi$==k>bydf6(ggSoGcI_@cw;<72$d17h1KqljrHx{e(01Nn7*pi~1_@2nf8 z9_wPI264KL0~;s!Xk`!|rAK*iZ-6thDma;qXJF~RC1U7mlP>Bmfw0|UfO^+9UXMuU z(US2es7%!)>d!owly0w{i;v2aNTTR(ijR_|C-X7MMKwfF_{TOt#g$GY^}}-(ySaNK z<6LVxgER;ujcGvQf(!ZnEb_EFD?|#2%4E^p?77da}m&x~hJt!)XAD zGN9wZ5}qd#xB|7d?fBe_UcCd!ZQnH>CccG_t_(&n%rJ%R(DUyi=0D;qY|#70%v?*n z+UE6?F%giKcY9-B5k`f4lX$s+=gB&OA_w_Pv(qvl{p~fKbD>&>YGvP`5P6QcdHm;I zoa&uCSY-~3iYuN6VJ=W4LZ{+O@s;2{J1!#55g4aqXJ_{cwJ8BrIL{FuH))B&e==Cj z$5~N4ISbJYiG2j-gBH+Dgp2}a`qmevNfb%de*muFSN^(+KI6&?L6^ctjNvU0!G%Ji zPKD68K5XC1!Zz1Uc(O8{xvC$ZZ*q%3u-M-35sV zNS5{H_7>M&G>v#vA0LJC^Sth73YiN9`9i;i!KE{a%}@8mB|faHf_T_iPmuDn6}v#OBmmF6Dw zrLhPveHA9$C$(7GOaAe$KOt67$N~cmnA}Ia8kl{GHxmzS^rysk2AuYuvLf>BHpHTZ zEzM7GLr>livqRv5Uxc32-X^~1HMxo_a^pB&iQVpTGJ7zf(>v-p*lZ6+h@J{l{q?!w zvLq3hJUr_vMm{m*7Kf1eLn4Y6XMRA^XmX)$^ED+#PPAUugm}tK_To%EQynJj% z<{Hj95umiR?b(~VQHPyV-ILR|GD=SpMi6Wj3n95YBgRC< ztjWuEQ{r0=XxtW|mbI^w00c`G&5PAzpi!IEWiiWZ|8*O)dPht2nm-XjM34)}^i%sG zf!t_2xfC%|2ijv=ng4cJ1QqW>7S!2b`kq4XgSB2?cK5Hg+z^xNB?u$lfMSDz)1$)- zGNbC`WS|y?)2);x>s}i2U>jKZS;qOkY%P1bGVaYY_ae9V0Ob8TPZlbei^C0#0_8V+ zaweUTOKwk^(jRUg1D7q&8+nc|<-{S)CP(Ev{>MkBAh)x02MWjGH!Dgy3d3{U#07Uv zaXTt-n(H^bcH8lnN?>fz3&)XLjw+(hf!5rkpD-5k<$VUeH1O7BpW#lO(~F?UdH2V9qE9HIq25e|nAfiSLAR{M`INJ=hs6GXg$LqY`{x`l z%J!}Gl@$qFgv>5M9m6wQHJUoyE$x`}ba*dRO?~^5^xN(yON54#@dRFSut~ExVtnl8 z`lS-p{GPR38_)G6o{U4b(YD`~bJhkX82xrGy^)++|M+NA;DT6YwYBQY+F*MHmvIBw zv#ZrPM^i3L_@XD`X(-LpMyHE7a*D`j_brPK?)GiMgP;WXtYhvGu~eT-`wGM3qv$ie z5Od#D6x)Qu-8o|KfllaTaRx9_Z0E9^ULefl+6zeTWj5#=_S~*5O_b@D z6TmYoaAUaV?n;>xrUh*Vgk{iudmq!nZYCE-BDGDDi^yu2u(WN9vp{N=V3h!4w(VUE zAHL?CdI{IK^|}@1_qZvNM8JXrVHfKavGiEY=ilmRUAtoEdBSjiA^k9pc7TAka`)z^ zaou(dcYg1rUP}wZM$)3;rpHHYmy2zC6f_An4HN~kZWv7ptEadt0b*#K1T+!>Sa|ke z@@^2crK0_IzRpTnJ55B{qoff{q@Q`081_U{J34b_cc+m)LCCIg z7qVzg-OZH#(hR87fiX*NLgLj9^N#dJf+-jWnWOy|DS?&)<~?7jLBB#mkz2T_@hRaP z*X-Bb#!Og|on32e&1NE3@x$)`?>^=g9Z)C^=OUUXNdUp3j;wKZG4i*zYBXU=Z<2cm zZ05)T`fSB0;TdkaAB5Z$gQa+jzrS{+Y#7tRKd6uh;6NUKNhd65uwKiK+#n0|sQrSb z5m_$Uo2n=g&uWHcsri3f69)BDmc`;o>+{{lbJgXsGp1)e?K;KwvYUMz>P&HXHJPyF zNi#t=Miz*Gw&-*TEO|w@F?zKJjcT1I6f@CMT+qDqTl+B(GRQ-Gh-2*_{LPnoS}X|V zD<1jTG{vz%_V23?@@Vj-WZU-wgnKwrC942df=~#fD1P5?)aYVQqH;yL@n`^v*$nv8*GfFFs2d3?=2<_Vk)IXB{W3(w`2tn1#TX<$~W*spb9+3>FBU;gA_GruZDQ0~Tvs zuLAV+X&ot(vY_IQ=lh~~5S0EhhL9L>YYPw}rtpK`jU*l}soY(7q{g-0;<{ZGTbV*& zF4yNVS20}`>amsJe)8nzk%DsAB=PtSfd4H*GA{4%)!y6*PTdnV_iHJX5~|8xRET5 z4b0@i$ZJ8fn7(YevZ_cAV=p-$^7VufI4>oc@xuqH+QEpmMs~DZV$QMj#{%(IjPgxOBdBlvww#EUh zOm1MvYEjgYh81GYd-rJ$j0EXS3~Z#M941_z`5<*?n~R&fVvcTYAbqA}>=leBfHhFW?%c`AmSxysu0~%mN7$cb#6#qz~#+_qd7%VVj_*0H0CBOPv!i zyl&Kk^k#f~*!EEt@@FfE^%0q`q<47-(ia?@{_05G=;z#heSMh>W`6s-^?RS+XU==J zzMw!S;I(_4b>qd9WN_ICMCNj=XZ<}n?mfH7RlhqeB3Vh1ey>`RVAnIg<0x=*(8#p` zI@mG5q<{tz0OG$LsRb(}BqIG-q(CXVOgrkY4))=GjT?=)dr#=6PsL&dJ4T}cWSGR_ zHDp!M?|Uh2^mHc-AH^xjkSHP@zT3tgV$58V@@sh!yY!wPV@>5%g8-13uU}i|@;0uZ0wCY;4xrOrhbHo6>LkzWd({ zI~mvXR8%AaW_;3>7aGZbPQ3g$$V^rA2e{mg3+ijjX2C(CriTZ({yCaV7n1*%b#dfo z$CQoI9#iR94o$L}{1qwbPaTKspte@KH@z$G)J&_le<%r!&B7yd+mCzQebGjbdeid) zP4?DlaD8X2g}Z}Y*1Q0^m0Z;S@HB%dhIj_X=~ zIWY4!Um#FTQOx4{!B9{ucnPPbWnAc?5z^z<1>vWJtQ>M~@!)ye&Mcmj=c*GLSK@#v_i&@!fXn2Kb2f1R#%@A8e=Q!d656=IM5K-FcK1jZqWmaA|Z7 zpCN3F@0Q^BKS5hnf(olGgDYg>l~KK~&wFaI2i0?x(@~*$AE}Wm=&~K;G(wRms}#If zw$Hjg4L5}47R-CPzm)~XF3!W(v_4B#sq6zX-k8`gDKHUEg@^T2VUKD#j*uj8ijVaB%d zXCBVOb+fqmsEeN{^^0vp;n5bpg5i?u;L;Y-Iy-zLRVZ8^zEvL)b3fiJWDNx6TosVBXzb7-ubyZr1|1l;r**wtK7px{5t^wMs zH;Q|;$amp-JZf0+OX46G#|CtcRor_RC8#H_vPPiZx1qpz6)>2`NFx@Bb4i;PBS46> zuL><_6b!Z7v$MDV(weo#ZFF~`NV8!->Kz8WV6&`x)L`dc1gLC+s-rV1sc>tae~Qv( zD>5-mNJe=S(By%!AZg^GTh3k!^$L6)RY^WS;DlZu`;-U19gY_@{vjv+6&e$?MMLq~ zLILbzippQL$agZkBvk8rrUj5!77ZSl^^ChhK<1Kd7J2DQjRI#kcJZ3M+$T(!1$P(7S~`H(07mUH zCXw?U@OE%ynt-uOtZ)r)d_(OHF7jKZmNB8XP+@DcyzdsIu-F^^D4qX`LCCBSOsMO$ z^KB?qWcug-;n8SgiQ^CU1_rDbINno4bur>1$FyZ&@UtR$95e!Yx|n#3k?<##D?EcFZ2Hg>CRM7#S|K zU=i7#@(57z7US+!B0eTvvq$`LIWpes$zkL6ls*WE6kz`G-1Km2$?c{BP3+?AIgx{n zyv!^S2#owYm;K$rMS#FqC>vc5dO~-9JD&S5Y*CdREFnnIe`-B7*3bElY9@SS_;8{K z_tg@-H80Q%tq!%>pHsr*Sa5UuXlnu*XqoKTa#)_fOdyuAFNW@russ(tfH53Og9?`4 z0F!7K>r)72Ot!A5On!(4?{qK_#bXmsSAf0D_8yKIDu=~KDgRF%fSCjHcftgl4nhav zLDwSFnZSRMbaj^45v2GvC-=&3 znRAP!sU94cznFji4}}N*1x)UeDxe{(3PkreV0a7O-WBGfTeB7?^j^~QZRH(&9MSDO zQdf2RqIn;7k(#B^7b?^Co?;Kt?t(pllHu%F z6qvS5$p9D@X6NN}C;XtJUSq|C$Fo($I&1TN#z|`z;hlw1@~9&KVDD*GMkQKG6df4vXTdMh(&&y+MRv-p67{H2z3mmE_^`(j7iVoK zafY79X+9akeJHjhMX&uR9@Vi>kP4ss~~0ww@m=Kp|zK$&QHRsUSkQgczIW_?%J-D?6^-dRF2R`%76lJz_J zB4$)TU1qc;StQ4H#RRR3OENU#Y5u8b{-5{F8p-q=q3AzGPoiuo96Ks5VTRpM4x3mD zFNCQUj?H&Y4tGSYQYVIKw4J*6n!VgeH^JqQ!~Un@_wPDQ0e?XTPbDEfwWRrs)5`b` zi*qUagKFa3pfFW~+!ZJ9`LJ+E23lObxL7xCQBld;J*sfltO6EY>0H>2{}3PmT&ZGQ z60tuL!5z#ymAVi2%Q8=mW@hsaO|`2MBYzmo>v^~gU`D7sdXfzDojE3(IsROD$Dw`z z_+yq7W*deY%tAi@Rrx;#;oqN;fZ;-d*I_>5IO}(s%p0~)W3H@-!wGN1@5JifCKg6F zYDbT^29B1DD@bnb`t_7Z#poCAZy!@@YONFgXEyii7=G#}nwqzvW(7F_q#>%IN&B35 z&_l@r*eX_f+bm{eQZ)C5oD%Gjv)Fmp)QuN1@z?(A`TFzR0R}VJp5pHnfd&UcFfBPG zOy*xRYpmbbuLx|VL1}4&dPqgLU?za%2J&6@hjZL^=PayuXB+c{2A+)k)=U0PT#CZ` z0!Vq`S5n?j=9%?2)7JfMWe3yB^wHJ_3e)v~&0@iYfIx$7QV|;hItv9Nu;Lk|jav-t zEV5#Y($IHBRag%Gc`^M>eAG{Ri7Li`;N3X)LfggvCiE4s6r=!F0ZNZ8p9(u1HJnYy zg6*&E$Axp%dSxGWA}hq=4KgJCmLeyozJ_!T;k5DN#B3aldBEQ{S=HChZ0Abu*pSyvM3RrMJ65^tLb*>>eR$YM1c?m6bKKG?`s`}WEuTM5B{wp zi5;P13i?Yfx)$(GN%o`BU92}SpZ$G8tEkl`QqZ<&06s_##BHXC^|0lo>UL=YM96;5 z`j}eMv#;@xNhF>H_4hrLQa%G@)+U6^D)<)g7^c9>M>uw&BPw(@G`8%ifq}vV(rOYw z+bk&25iMG=trmG5)F}%B4MuxlE4&u8#kElL;-IXse~a5x3_vs+LmrFKb*NlUwbBz3^jNs|u;@ti{_UbW*a8=haF3w( zrmEqBI6*4PJO_~#6D5OTOV&hp;V4k<*pb-(Ae;QM%pdBq4vLN}csdXux@D2IE^E8G z*|xljqxDo?GKyKS{h0RGZ=sMa!X;g*2_}cMM%Qnmd>0p;ycpTLcQ&ufx87X<& zCI4MbFSu6lWNRz+0Qw@;B~HXtkP&CkuuQVI@DY@D?wBh9w1vK;SgKdJ)%OJ$(;81T zQ>6rqL|a6ryrJ~B0v3YT zui=~cWv?N!4cXfKKE$0F3**TW!S^?}#b=l-E88e-+RLMI*Oqou>+0B@*2$v?mmLq3 z+5V&A_sex#m|_q^j%64qK`n+gd!_ekz4j#8n2XPH(mz$pUDFf%r zUEtnty%qQrWpQj;)C#0CFx0xeUF{R2XU!9+7Afr(<1v}dtRnvEYY2LTw8%ToZ?E95 z+BVbTqtGtLMieprbKmZdWFMUQ>E*G6`)N#nYrkPlP~XyELqW~78YLyuj!bxAL6u|u zxSBcm2_ZA@px0es4<^MWUny-qS})%&d(Qe_z{p>%88HFf<}{;Q+!f}w?EJ_%RT;CM z40l6j@7Y}u>8ATVk495PoQ3p6fdbh}*3H$`bs+3zdW#Gd%I~$n?>kt`2bdPx6_Fmm zUjn)>a#Q~8*}I$^T;-hZ`|Ag~5*+J`4?x?GsyK1kZEOo!zJv^p57;~BtCgWPGTcf1 z8sZojO?}h0`cc7?7%K@<=%as+sw|W{$M%4y0?Fm8wLbU^sM|6%_c!&CV|uGoqveX- zg8i0Yl%^l(;Z&s2mV(_(s}+mRJ(?UXhX<3i6Lac&cY1^+IHZ3_WI39;Nj7da|& z_V3*BMrPj2E`eu4@6A8|cu=*~UtSP*ERI7XtV^gT`poMtQQ68y#r64RfE-co3_ZN& zH1zMeQJa~-mupi^UVGH3{)TS57%A=iAj)>L8+vnY@wDyx%-6+ub}KQXGE-Nv%lFU_ zF*#B6Ac*-j>Ob@jew8*-yk)>F!jtZqfP2DcpFWY%jCcSwB|z~)khau?b)9o*sffOt zkjI#1Fm+WHCmucjG*?r8;K{2E=^VST5Zv?{S^^FRzTe>~w#1LKHko*l$yolG9j52uIZV25 zWx5*L>kPoD)vgq3l&Q^Q1U4zg6k~F!t4PQLby(gmfv5Fd*HXk|Icl7<6|I-6bt8-5}tI zN(~_04bmM$Bj8Ab^Z?(3d+)Q)Iq!SU_x=sP-#pKA*SglV*1EwBwsd~%6j{1~Sn(lu zgy{4>K!_gCPK^O%1ZA<_|ITv#{UU$0s!^ozI?4C<7H=F=ORvsLKua8A&q&4=uy->T z6DRB=goiuePHQt{q}s$IMjW-Hr}>9OYe>)*Kr8XzpZ*W(pnye0Qcuq)-Z6Et1W;>5 zJZ?Rq+r1xP`(97y3?9B24}MD&SpQIIeLI>Am_eI?0<17k0G7X?W0VO1+^{|4`#K54cU&`aZrsEy@l)rAZuEYzCHNYUK1 zUli5g`=Hjr!231&@V0l!F6uzTEjFvRgyuxrRz&Wt_(21(;Qmi|o=Q@Z59a^toVVHE z#DsUL7A0iFY&0B+{3Zd(x0WzdR$H2(ZzPHL#$qHr>ih8N8w-)ML@HKnPAMUuKcEAwutmO zg&L^^id`F{-YRwKdCwex^eP7AzqGrC%`$6defS5n10@31!k@LL&_C6lE%)x$H$L7p z)8vvr6Jl<{@v-l&l}PE9=!LBNmKm^6{JkmNAfP3nT z?Zs2>OSK)Bmj39OsQX%Ry4_~0P??Q4f|8}{t4Tb3xklQ!sG8hag|Ecv0tfs59)rIp z6vp1)%-4!N)^Bwa$|qSKucPKGf*-5Gj*Iv}@hKK#*=VEGTgD0!|IYGSJeS=^g%a9< z=r3U*CDi~H#!)c|uGJ#9bDsv=qXgl9W*YwYU;2y3i$G<2!Fg>tR|@o*RVlNbSvS6@c*D>{3L{KwNxubk-ht5kYrHIAu5W3IIrWn|^0nQ1}&dv{swsrhxzZHh2 zBNaaZ)&{;V{KyN&kyX9j-AZ`7&%Nh)8)@~L{rfh(fkY4vI8*stN&WvooSVn(c> zAV9gG-N({WHA92wZapp!IL^zHRz%P0dAiZR*0pr|oh)!q_%ja&`rWLY zslwmSK2V#Brb`1_5dUE*zKInFP+>@D3P!lkFE^XWIRD-G6BgH5+qfEcT1lHTXD5+g z3L#IQMCLzv&i6{xn5E*^Z>V`4KtqzA{#y*Hu%{G3QWhwe(U}~#ED>^q`|KO3W0cbL zaNh{d&^UpgD#q^MT-f(ynT$|Wrf2{0yZl+&o6E%0%N z?PDT>GS%l_&tOK!>7tAC0-YWBG1-zhaOUXkE@}>RV)05E_I_}?cl27c#C+HFY)7!s z2CeE^>elnNnjIu1ZBsag1Nqth5j7X*W_8kd|N3Ucxg~IQ{~89a=tS{?`sdXCXTf3{ zppl~D*jys-04!~3hW=N>2Cq1E<>3c$U0*VPpySa*^l8A~R1~5C_`nSDQ%!{VFx~wgIN}vOHRaV+1GM(~b9cCz6b|6# z<}|zjHZ79EKc0yTm`h-RWcrE^_Fuzel%*x4t!(b%MYKz6St;rW^qC;fx zR-(6aJL5+T5HRW!Ot{nziT}}P<_VJd+7eEfWyi^8z^tkRzltv7;EzY}f z>C z{|#*^%>h9wMyM7g?vkius{dgkAI2BWSE4)KnTqW9@rf7To3DhK5N|7CVBbGoSv4cw z$r1C+vX=HIw%g$9veu3TI83NIq%&$<@@jwzP6$&>$&UASXxAP;5omd z%nlQLDLK(Ix(hs!R6h#{+SCQ8kSLz60tOK}t$$O)w#fljzOME+CX_p4>pYZsc}AFg z5#07=wev!cYkM7Z7mp&7*>nP%te-#KO~o^J@CZebf9QK6IZ(Zm0!zs{H-cr2}_N> z`%*F-es>5F^S1!#@4b8W0MIgvAU!vF?pjl02Q(v!DS;}W$qb6D^MjI*DCEgpTS=ii z1QpK$8_2Oy z?r4B4iN)+W2I!h4Tic!nv>;qEEmha<|K`h$`5>K2qhb@Qd>9<1ZcX!F<=x*8@(Si; zR(9*G=&Qi3=bcR7jw8d0{@W*L13p0?C{Voj^3oEZG%TC@Z65oek*DC-eZ34Hla^+5 z%*Hd*@nVVkweeGQ-~y;6wyk9sOt)V_a`8!87I29IG_w0{8vchL z4kreFxa|GMuO1$`+}slpfOhkF!nhJf&KyD~#n$h+HH+xB^J+~g;JT-TogDWcKNqUC z)8{K3C;7v3N}&vg2D=7QX>7i6PmZhh(ViIFVFA77HfFz{MPMws-x)cUj6ZAsZ@XB9 za~ja9e(+m})7C=-JVL^uo2HJjzleI!P6el`9K;rht&PhaT!{veFZR<^IA+TPtevi;Ut2Bc0fX)X|+aFST z9$>fq9y&vG{Czmff{e6qu>DHYo;XW9SH}JB0n1G5W><5#V#55qJ>t4s8d|_6Uts1@ zogKeH4G>wy&gZz-lla*9m1taMY=K)_4~f|S(6j%=VH?u}_==9XB=@UlO|6~Z6DG+S zVY}>5Un}UuN^(Dj`6@ZD2*jL#6z4)^W!XO+jel@`xs>&Xd^YNhbN^v+OadT1f@8v>XaUui9md<{Vb!Ad;P6T8g9 zXYnYpcU#)gv-{d~CU}Myfi)KUn}F*CzAdY#L_ZaVEqxT|Uk<2$2KrEBz#>uM_*~5R z6Pv46*{FM3ZtDsgYT(m|*B>milpW+jVT+yL)4Y>+>QY$j}6IAu`f zA@cM)l0MOfO>_A&RcL`+kmK*N2v*%ty3IpCT0o#F43sUnFGNdXni`V_ovmwr?^yrD zpxvcV$f(@=1EA!G057KA8ALB%mFS;N~D#@C)hkzFt1vU?qqm~zZy|gf=|2A4+V6;v#!mXfJXEdWWj!O-y z8D`PyKcH;p^gNS~-0xik%Z&{zfpKhWcF{?bg%(J|XqH795iVhlHdwuw34bgFLtvry ziYfI|h0WgoZ$D;z_hZOE(QNxPTZIQMiA3!uHI~rfTOynS%ptNNJwGF>(Vv}`Ged2f2PWTarx7vBV>B_BSGf+!10X~CITEy{`bi?DaBBWpD-P@^ z1t^6giVk9{Fp+S2F(33gy%5cQ@78qITUGN>hEKkpgWf|tp#Gwi27wEcy6I1Gx>myV z!%zh@4*E|{hY-mjBz!$}hlj#OsLP0Rxmg};F)=BBSiGn+{ddIZZ2jS3MQ~!7z`q^( zZF|UfMR*L3t*o8Z8T^IUP;d42jD`siywkSOpA~Sd_c}KOBP^x>T znHyUw=6>C1Ystv|9{7)L=XejQJdKn#S@I#>_*$aSLo1rRdfl6bNJPGW>UaWry~ujf zjTz1Ilkfxn&FE#vY$wLm-MsmwE-wX|IFp;)d&iwN84NDw%>CbBQo9VI_i)~f7_fo* zz;%S;r%$jHF(B*DlX6j-pm$6A4^v6W1wiNYUxu{XMDmp7K)w)4>uq#aw)kzMR6SEhVK!-Z z-12R_>$1=Cw43q$uuPq!pOJ%#@VAfrzax>FV-7d@0~*EbgUAb*6^EZGY6||*sk#KY zq1- zQEGWWwa|eQ%r{V_BWR7K^UEU$>Ix!YdC%}-&giD}W#DS-RT?lm?KF1U(j1#_tKtJ) zroveQ&^oI*XzcR57TzAQz@vBkQ|GXBn$>2uM5hmAtB@bCAfUS?6YW$yAj&RcHH zMn1!FR3$A@C(I3s#NuVB=nh3NOWK>E!!{xwX&3wVq{NxgaL&U+KUQx&p-$|>u(Ido zB(ao5u&9d?TjzZ^lZn&eWaeOK^#IUz=pO{4T|V&EyoZwZR(9-7I;V&*97;WRHc;~8 zhc_HA^hWc2T;GnWYitTRKTBI!`dsbdq+!SyACr@lQ!K1|Wc{F`C5>d$njNHx-Po9i zSeyR+wg4kx)lbD(`*rs4FrzqM^>~}S%)0+c4Y2Wi7~**Uq`=+;htR+5EpEfyh_~9{ zvS`RYxW@GG)hHJDy+Mb~_|Kd06U)jadf6WynX4}qL%*2LVd^~0`QG;Kmch)D))GcU zN05s6df?HgZUCgGt~RM=?GCvGd|PevdV8z3xBPe=xsHtH)Pk6!Nj|KTGbwUB=!1qj z0^*hPp_fs1?{NJ}vP#!-M>dfUXj1$st$|7eM;F{V59K-*Nn|R+zB7I#pq7w(o$p;Z zq9zbC-=VSg9ICudnu2ebmQ@QrHkI)EMc(MA!c6>zZ=^?-5O>r>uJ0CaZ;frU~!wao9+*uJ7{qDc0qO zoToBGj5X}1J?_zy;z(NE%QTM+J!uM1I70@-<ISW(b++O3j^ zY$?b(vQyFjQo{zbhxi&^X5x*xLa%#J{=BKH6hoG`;055&_!AqJ_ygdn=U&R{#(8T@l20n>7 zT-cS+eYr$m?iTtKPu>4A5+3C;ndCE{Na7#O6K+}`6bCQdDR07 zuZWg{ZsCxx56pwjXt?;cJYGzKFI{)K1RDjcTK1(R&!NJfKBH=i)Z{{1{SGv|y5vp? zb=y5Y3xV!`?x$jj-R7Vo(s`c9k}Z3sAWK^Q%n}5lAFpLm*}!r(uP~6lq{!x-#t5k# ztB6CLe8G z`xwajZdyVs$jUGqOq4XvXe8Gd8~wMy2Cblkl=4Rzy>)QUQfMq?0PPWz%(Ew&vXF0Yy!uXRp18^R7(ZqgHS9 zi=uq`t3iT`oUZJorvPr0E2C zt_J-Mjwd=UGu7sSg+6ZT7jTa3ia3t(V6OLPlEgHtovSzLQUjoiZT3YjhRf0=M~R$b zB{6uaq9X{cbZhASi8f(wlH0Qiy6O?x$R}WbwcPKd@_I}5JnvXQQcaeOHt=u@eoahj ztGXvP5PDW@EkkneB9@kmRnxZ!TbBw`O%qc4Ejewgq;J}EarXqfI7-9a_O#Xvdq=+B zPnWC=LaY?5>;PNhpEeu&$&~`@qUXPW4b$m4&PoIz3CIsLG}2z-$ZTe!n$?QPykOUQ zWrK~>9VeMKAo{T7Jy{w$ne`tQ4(^5dOZ1)>dvj|FA#BDZo0#k%j~ikPm{{xCan^Fc zt<|#6tySQ4;RK=BHye%3^Va6GLdWYBE8tJj1nNeMUuwszzlOe^+D=c#A7CJq7jkN; zS)pTmjQf3vU%wn#X3YO5J6(%2;?k!yMVo(2Oy$b>&CHT`Y#x+`SqTGwE4_xEeU=U< z%itc)HZRX^5$S}xD<0nhmd!MHkXe}_F-w|7rRyM7(~emQNdZLSUg#mp0xA!5n>!wi znM$1WUdFRXsQ<2=+Y(=?zjF`;4x@+?cwq6)d$Tl2Jsz(Usmp1X-ts)e&IC)Pz`t%G zsqeleZ9}a(h7KER6p?TP{aN~AVo7eC4#bUQGS7_WDo2d=_8ixfh%F(NJ*PkBU8B$cgQI)Xmq^^82w2e_%!WW^Ct%0So+-9GXhjPtSS_8H5e1=+aP2(no+E?_u`_~Ig&B6W0BjsGz zn^L!*yW%Q!k{{p96WsjRS&McIJjiRgZVwa>_{k<0E0nZl-if7EEAU9Bk5U&fr7ARS zJPQgB!{Itz0X}(U`)f)d@-Q#qaRC}+{icNsgSObYWCkqJJWUFl028BIR#r;Ga zLnyxUNS>^_=G9tpgcAsdFl;}(+j*8LIOXIuN}r&=%R8Be?_X-{8`zXN)EduPd*hrf zhR*KH`q-V;(PU*S^Of&qBGyrt3t2jYH@w6A*2L%mCZV4&9lBBaQd$$ULC!Cr_p|Jb zLeyI6h*|bWitY(}Pm8JOObUhEB*JeD-|?6et(j+7GG*sjSXJ&Fe<(dW^r2)MSzSkS z2#c}*+Y?{1dw1rccJgQg?9N>eCaa%a%Rb}DC(bWiVJ4-lWx=c<4@!**N=^MoG;v?c zxH%4v!i0w#!sxrlI&Gtq z7s^6}5LEtqI2nE)r``N+f9aN@U1?wjf=rClGrn2N$<3J!}8CaNis@dmtk^>&>i`m%~bK1oOGbbAh{7q~SAPGL_Bi}ta9G+K$O zt29nsa3f-%?s`rTPez;1;&+dHSio{ho%t;Y7W)iL-B&@R)rdV|+7t9P>7sTpR4PB= zc>+EWQ+8P`u#f!dpLb*dj1bN3C-SP=M$2!1_vk;nwT+T>Ji89Ze4Vn^&iH0Vw|7Sg zqqhYX00D$g$Jhb>ho;Roj@g131ig{;7~u;m2I>r1fsp$Q^C9#yg&@ez7ft*R0bBKN#i!LhlZb5l8zVQX(nSa z&nLUl%kmfA*PYR2){msvfxOT2-MOA9c2MN(n1(3Jw-s|4EWiD)5fy$+oku*=!K=!} z{vkN>ErIjLsVr#XI1h!uhF3o*Nq^2>Y3Za7$zFMFyQWd{yp#EEX%ZIZU?uM1adPl3 z`JR|FyKAfAqK;~E@+AVJGbL_DD)ZPSI&&cY`pLwHI=0a0u=NSis897OBA@TR^Pe4Z zp=2kGuS_gHte^t!PssKgD1;{I?r?HwG@Y)U~z=45vx+zzAVNv8bA_ zgU*M0--aNiVk5QO%X(9b>^9<&-&jD_uSY5TGg&~{$5)F~Lh9kGTQk{=Fg|1=$%d4; z?K0I5mPeA5%O%H4?`B$#b%>lh5(Pmfc$jfYxydF(0bMb>Et4ol1=GeeEDzn^;k9&i zUo3t8^?iYuh+xh#-O=xslZ+T;`TS8f=y*aybThMDNOfmr$x92zCG5LbrNL29G+zK~ z$aqlV*N(3>+vsU(JZ6J68%}S=4@20+H#RS)2>g|8>#-$G;3TAqp(^az1sQdb*nPu*VmZwPrZ@wMiRz904DnP3bcY`mp~4n>;B- zHY*P)NE@g1IV^T8MMQ5LBu4-k@U{@y0^f1tngGX5V=6iE4NiMB3R%xVnq*vYO@)C} zp16&LYq6zL1Q$%BTWlGCehgLIk_o?H`+ONR5*Lu)hRcq3TWKGba*it^*;KCaS#{GrUPgs+$M_KlPDghuob!xF9IqYHhLu zu|TJiOL{n;C3S>p68Ph17&qnWR+_PkqwiY4Dtvi}BVpIV`1tqU&t< zwk@F5LebML_WOrKZVkAXV;Otfya%&;mz>6^q<+_WVg0H8rX0kKU!eA#6KxOL6OUHWe;cGS{XETd*orxeM4+V(_ zRdFNqDlFLCR0Nw=KMB}%TE8{Tg>}}$e3E3RrBhCQ>{5!}Wh$qcG(XcQ6bE*XKQYQQ z(5$;JQ&Air`Mk>g!o|zA_h{fX8%WSsh~$!%vXf*AE0T8971pwV-m+sR-RJ~J4uruA zmDKZ`RP=Fxn<~C?9C_Abl`3$btX3a>KBpxNq-F@@mQB;Nlq~vJNN`saKH5%s43>a( zkhHtkUpk$@X#5U=4S!V6GLl*2H6-Naa#_ZKX5~lv3~|>R;NC}DKf+MFm(DHIjbXj! z>18H|UiJXWdrwdXQ@T-u(Xgd_?bg zxIwbVDI3`HM|sntL7YoJ4&| zz;z8Obd=Vw$Cc#IvRlKr&%FWcWN+wDwGD>QSAQ&AQjxegI*I3*v&4NX#0H`cQ6D3E z)+reF$b5yrdAc*uuvR|c{N+=>6lvUd3phk6aqP66D#Zi=>KGkf&`Bc2Yd_9_0qwN$ zRmv>8JPjrw>hownz6?6Qw@acto{aDN1B-@ljV*>9V1c2d>xGme*l1Jri#?98{IJ(- z<;^Fb%kM>=Wr;ZY+dd_*k1ycarT;{q|4Nn0xt%WDZ?{_b_EG80;G9e1e!yl?Bs;Zc zTKaepXR^Use?dpVCh=>BfBoVm7XTg!4^}oR7Ca|c_A7Io9t{EehDj5}8>T8ncz?20 zyl4}&flZiuI%hoGU36&ms0+SRG*S9`c!0TXVimLwKCR9mKCy$4w!)9Eu8rnhMMpt- zt<5p3SH(k{u8|xD0W z4Nb1|zX&agE%@4)f=}ut9?b=ydU|zXaX~XDjoDJsK?g@osk$EDz)NQ7mMe;Kcm0WW z;?7cbCf87_a#Hx*9RVgVLc{0&4N=cEO1DL-2BoOhgmVun>L42C`n(kg!k8 zc5C=T&&XgX8wl2^iwHCAJ-Imet<-AHV_JRUOuWLFHf{oeHeU5}gLOO+HzQn2hBf#a zrt;D?MT0@xE?aZxWyC0few()BkaKrjt*_>f^sGZ6ZahhS=zNj-VS=Dl=X{~nGYd3* zoY4kyBmJLJHX+GzGw~zqPpIN}BoFcVFV1CO+$u6c3R#`tK@jU+CUv%E(wbi3dbgEz zjS#u}({9hPS8ZGm!93LI`-+rVE83i6 zDJ}>LL1Qmuu)b0xl^X2nG3y{mOKtgxscTXuYSw}^oalqIFJJl6s-9LU!*$fvB73fh z6lu6MMS9OPF4{oz+tJE)?wps=q=XP-bH)+e^VRbV{Oq`>h;uTr(2I(LY9~*10rjz` zx`Wh@3ARY7tOaW;-(mh)%5qjrGM&SxDE+5zPo z`GKO*s0mn+1|K8pD5$tIV1D0Z?(;<(rpMKugyBNt*`Dwi`qihWO95`sZB7XN>RF)k zMB{p%K}(hWF+fv9fa$*hpOGM~GZP=TU=|~+SX=4cV^$Cn7QM4MYDQ=vntwarm9bQkPKA0E@U#o*$o4lpQ96ALx*wynpPMKq;;?qyCyaPRt1fJ2G7k2U zf5$J0m=}!Oz$=48BmIB6*Gsn^h^Ny&`v}gXeYQE&`sl;9*dTw$`%#fwdH0U)Uy_ST zgkhFX(WCp~O|vy~ZzA`hUZT_vX>;{m-0eHesQk6!(;Z$s1XTFySrMMAtXKrmU*4sp zJ5FD&bXd2_o^QSh zOI;Mz@Q58 zFdY(U0m(Nl>?Ql}F9bvc=hQx~X<)8QJ~X<|;jds+g{0Upb{>)ajz#hs2Zi5KIa%=v zS1RM@F@Buok;>4_%?`%QOFL1*jP>f7maE6Eb{A)Ud;!Y5AE{lt-Ne|QBwFR+>x2vn zWf;vCtsgL$i(s!l;KbqY+J|wbZ_&!`Ew9(}Bq7H8Z4(*A*s#_&fonuBmeP^s;?(u# z5`gG?JxDSDKa!PloEb~ zJqthx)+*eHTGGl*P#Np4>gob+4d~s!KHO^Fa=LdZK`7tMx>A8FC2(tw6VAG*VZo$KymJkMd{SHV!H z&7_FZgE{0!U)ase8PHq*9{)g~v?H|PCAk{~JAj`}U;Gv^J=t*|t$hCj;+Bk^e34Nr z!+mj@kp?nr-wRVJTdlDUU~(C`nJOHCe0CAL)jx)+TS}UI-fWGXZohs zgs>m98nQz4E}dkE@2i-`K@w(|H28*8=z>V;F(4uvOLOJC z>CjpG1anE!%rH2XwvRlt^<(SxOFsf$PrBR9NXq_H@@k{KGT{NRgD(x~mrw%v!~hnm zDhw6R75$tQstls}cU06oa6)#}!jvWTGY+~P`$lIf#qwSY|N4f#-O^^~>12FQZ=4*A zLBAlam$>b^B!Fj51D;+b2->?>9|d|PdUGjXR3@?1bn3N!xvp9pd%>JFVJ<>1R?eIS z=n4_>fK&t!Hq>#cYt?uaCnV#qDFXM9AdQv&(CI7H%bK&h@Z)Qqkt+2w{)9w~(zJCn zGHFg}LAli*lVmi``@zG#h5iZQ$K&pCrNly7EZx~PRu{3OcW*(Ql5WQ-l&x2ttR?vJ z8tC%gnle#v+%C@ZjD947cCO?^BSoQ=d>*sh49Ktsh!@Rh?X2uTbP21B*jOo8Fn_jE;mAYyj%N>{I6m2EAlaz=V$P60OEZk0E z&&F-^e(0O(AYAT(81xc(ZYaF}K31D4)U8Remp!s1Z0226(_AB2yD- zQJ;c8fWntFEojU_XFeM1+ex)V=Ceb0D=wBy!iFkOpUrbDR?``5I__TAZ5&ZFxUO1r6){^A8DnHXX$i_3|DFM{Dh4N%!7!VljHbS49G68C~4|P4_6Vx zHhBXsQDQ#Zj#@)zjjK_SL$GVnOP-E}$PlbsQ(it@SY1_BLya6klN zF2Kc)#7I+!h3%!$pG%eU zi(lW*i>l*ZNm~ayQrGJOl!IVXlAV1D`Y!VX01zn4Tqj1 z7b-+MAS~68&=ntfZ2H6Csqu&LrHmXL0`LleY9xO_9dp6jQW4l@o=@DCRZKh?e|5VO zHtfC(pe_%rBfrI$DSYE1k=+9;n%g@0&a;5LN>Gg}oc>0(JwGUTil;j;q;@D~2|fKc7Xs^RQAb&cEr$Q<88pYbS#p zk@a{D-)*BsUmkwfH5m1`LowB-_EM@TcDIc_K2dwS{He$T5sYNzOh2j1E#FRrKpZF6 z3{=*hAK)-R=tqm)kk}u2G7_W6ZRM9|E9|@~#I zR;52Tttw*qJG>VIT2A(!L(HW3Fv$E(}c$sEpa9Py*d zF7FxhvANV^^nuaGO}#!?jpF$XrQpt{36A-yH7?mZoPAb2A4c>2PdD04GYUolWhoUqjOAkmM_UH)c5bf*WQ8S%_80`s08 zVUaNH<;|pGioHhfE7`pBq@#8z=XctI(x9aA)nBiHWt}i1myFuPCh&U|@! zH2@%k>LpFMNEF)wv)gw6)KN`4H)o#5um3MS*5k|ob1 zZ%SS5e@oAkj(6rq{lGyj7=+e9j|)rWmW0T+uVELIRXV@XIC2UqoKS_eF%3tVz`urT zheLUjN#I?i2b`8z3u1jJhb+3>63CamNpy`8)XM8MdkV(qS`X9Z>+s9@$_jz%^^XwX zHx79E0=SDnd@?r7lh~`uzlS-;(SK9DZRt~OK=ztt+!oubLKTx_V)@SC2NG(g7 zO3^7L<06?*kV%k>IZF6*_>bH%Ov(cMasxM3^29o<+a$LFe~hgNa3-1j1iPALSI3Tb z*w1-y<0i>z)G>Y>85^@ z@LIrWNwsD^|JOTaf{gogr$cX2OtQyeU=C_4Vwy$hv;0FoyuP0{$wfwIK1revFN$e~ zv#+P-s%A)Up4ILo=var~^_NPt@yC~}KV`t`R&p_23fS{VuJ&d(Y0QK($8?>q%lY1O zWVz?;bbtcfE&@mijk}4jonKUhDD~c6uTPw%b|wedRNwfO0qBV|^vUW(P-7Oc%&`$GUAFk0GZV#>#mo4=V$eahHAkdt_B{ z^#x*JcO&~PJ=P{E=}=hR>|+pe-r~=TdUd3Df48YyjyF8e?t@;ZVZx*<<|HxN2Ql=y z#r@69dN+P9>F&)lb#K;Y54TB8Ccwk?MrM7>=R;B=S5reU&lO*&j@tWW@n%4WCn+F8 z63ai!Fm}$9z>|D5!7GEdj#)mpSr9Z6&uyAYy*#bP8j*Ag{Q@*d{axPjN3nAuNGU(s zRr!2p@Ydg2(bt*lNc`-hmA|^6qfcJ=zP>&&IXxxCH;7ClF>3ia(ZC$%;7G!KZdLgQ z2PJ$i(I1*!B@{q3^u=@f87gK{i|c?2<^d%>m7&kMY&@khK@riH(a{n*-E7^;kEl%- zg}TS%3sc-yEx{5O-^;^?de!ugf3}lvcCHakM5cRNj;Gmt7{@O9b;_FR@M`*#-khSw zaMh=#w}}i-hj&rJTrh8Fk9woXv_`psQjt~(1Da?WvMET_ZJM(wVk-Yil$yhl9#K_& zc@#eMQ>$hz_IgUl7kgck$m$os;o6rT#$U36>iejG=yG)R4qK+HXq(rf-{f9A-o3nB z=66b&YxnN8vNY08l99=zqGJp4RUzM6vF)h;yH1^6QG&Bz81`un@KUWB?YExQ$NKNm zE(yKO4qV>4UY1&f3$6>~hEVErq@R`CEJldIi|o5tdCPXDtK-*{@a`SAKHVuXyjgXe z?O8sDNwq*LTbjW*7>RCDj*h~5Cz@H_Vy6!_`%_7Ys@;+n27S{;CRQoB_kvy?I#T8J zJ|RuTq}n__5B1L+oN|bicf{}9<^1UHHhz+DFVAGP>I}Jl?UkQZtz&*giLoXht20I^ zK>*)L`ZqhrjO6<`bJ1m0IAfWN<6#zpk=chIX1=^PA51(U(~m@z$#37Ct?H0tZ-yRV zKq3$ae0U?ai(rGfIkn`teZOh_Ik2RE{bf%} zXZx+R^o=>zai@x<%WSDFu^FyN;Knxf2aFp@;(6UzhIB6B5a8+&TrJTzB&oGiB?l}N z+rsjsz$F5Q=P9L|UiFbR&0%G!yD^-@UmCp0LQr%TZMhr;ZhHf-nJFOj+!?69Jx-w> zabbOD1 zAM{DB?yV;_&DAvyGIA}6*L04%2i_&>terzlj=A_RWgnh)tni=5X_DU%ZSF2h;dxe4 zRKheXP1ho3IA&|K-muTyb}l29=cc8O<6GRqAQc`bGI@I~CmF5zW@7d2=8ta9E?yPw z1^!UzG3?jB7G?e^q%6$ajeeP0?6duHN&aw?0+!AK>Z3ifv`SOSm2$0Mvj2LFCk)2@ zPz5!uaLnfw!k#TDfHs7iUpOvPFqI-bdKX?n3~S+VRmwE>44 zb4GsNYqx8wORcut%X2Xo1X{G;N$1vQA6l)#_|wNtycJ%t>8o0PCf&<4!BZjAIC=#b zo=fhP(A9gsUHF|RXRHoE)%LC^r8c_5P)7cKm;Fk+-9D%eje^}}kW35{FoENj653mP z^3^^O?q52<;K~0vcnWZq@aGyAjEMY>GA~oj?;M^a{u@vnAm)FE;CJG5n;Zq#!*DwQ z%XBEueyOYe&`&9YVVq>8pXReI$44`wLcIH;qwaxgiiqP`HErZ<(0sq}SAr*CN!ErkEotpgVm)X_to&4kv5zeG-?j z4AW?AG%^5 zfkSnWi2Wv&<*S9`$B&9#Tl}k>Hycl{s`n9f6-_q6Fe(4)i-D@Gz?+TUz;2<|n~?g= z%Ni+}+(;&^RoDHM1ikM(B}DKLJBgga9oule@;r~QZrevAEUXadb=~5YX_&EUtKd_* zz!KwCAWJ1%12_qvZN}CJg4f@IfEItwgu2#l3yA=?6W&*(X=Al$XC~-t$8xY>;P$dx zavX~*V(RSX$6AX8J`gv1C)F=hcp3|V!0mBqpM|XmhHiJAs{W&zFy5_9jw5X2y8mp^ zKH~HF{gy3$2bHGBG_`Xj1iAKvc6lDF#tU!f%$|$3c=}jG3wNCFNc_aq^3T<=1MdCH zzGl272sjShhXwkQ%8YF9U;O&jn0F;R6Z+*vK=rSBZ>D5zB?< z&rCp}J@+w!NlKIBLIHb?F=X22t2_y?8Jg6V*$dpKmY+koS_x--*UaLf-~q1C`v$Z; zb9x#t$+2LVd}koH$11RO=Enn6TFDdAj14~73>W<=66sk0{k1nha3$y`}uo2J@0 z2R5aVtiqP*4Sd<3v4$BWR~#UB9>X7$ zZekvjAyin7Li>R&*=#o#;$9mkQLe9H>Z~Z$3vN(SYNTVHn>kI#gJmEF=kdSV@ zH#wq9LkB`1Nh=O4s8a;cM*b#xws=1B!D|_jU=>ooVJ4dpYB5{LH^%S)U-H;4V*FEt z1t=e>7Z@RHt84nrUT_=M2v;m=RaAC~p_K=m`33IVttLW{B0sK5R&<*Tv zF|k*0bY#y|WGO75177Es-YKK7YoV~;#RkICq}J-?7ui_sW)*DE1xHar3u_#F=}_lX zwX;vX=oyawuy>CELxr~GZ#}Q5kreS3lzxl>F)NKTK0xuhA7?SA+5D#TiM^z;y1BUq z!c0r_COYsyUV8If8qA0BU#vFF04$6pE1z=2mF+I4K?90MVIJ4#bE()$(=MHRkg=!N^F7sK3|N3O~G$U~mN z)&?w~XA#HZhf}if^LCQxIllXr1CDEc8C2Loq)V#D^Lowo!5U-ljmL^cn-(^oTQkua zzsUtGMW(4-1cSt0D)S||B}L~8%2=d)`wgf#;)NnSo#lb&tm}vy8~g7Y+sR8v5HoAI zL9I{a6hd@i1h}e6QQqdGSaGplY07Th$4+Xxw~@U7fE(A{?deqiPI_=_p7YD&0xS+|+t+<#2FZsnQ(GH6>K?4{*%sVeyHDLCVvfV<~ z(Cagh9SY<?iDo|#BL(7$My@w+seooVl@02R0;i+xH&Ux0*LI40ji-;F z!&h`}t7#BpJIzy+%2~C??|v7A|H1DmgUt$h7E(}MY&=4TS6g;a%AQ^M0%$HUqk zIz1J^W7i$(EtK%MV%Ex5RepOuwz1{?dNDhWr(wxVo{{8D z-~no%r(~!3tku4>AC~v~*&r&@!l594wt>c{P4HU7c6&z%{fW3nnwi&{#&qOd+)>cT zl8H&=J;@|Al$u&GEg{a{5^9rR#+Uxd4;+`DsHIl``gGZzrY;t$P@8%hi_`^olyOt} z%EOa*F1|cisq9Cr0d>SILsOul#q9Z>l{neJprq1%p&HzsYXS(*dwK)xc}C#$*}DSj ztEQgr72?)DD-iJNUX|}j1_WV6rhJ(KJT{2gVk(ZNh2ChKlY8B{KR6!MQ$>y+qH@1b z7iD<}WbqU_#@k6Crm6K-$1`p}k$j{4ZAa??3Uv}1%7b>(-sX+nup*6}bF#p7PcS48QXMZ**U7^m!wF>AZ#rc{Qfs zx56>A2nubWJ;9d8-`ndew_-w#g`jGoF}SBISmsNNkz5oVN`rY^CJCV!PQOeG(2pZu zD6xX18F@93^0>Uy(_biqd3bl2$n2#NeQ%bVO#`+dGZ~V*8a_84$qnD{q3l4!iu*I; z_7UV{4fRcPzlz)^^Gf}10;`8w4~1_Q=Ztb%f0>rnG+0czNa&;a-oqLO`ZWiqso=P4 zo#G*B_>cNbs4N_ihs-c)H~B(}xjvJKV*X|IMbZpj$|y)Ks4ZXu{QCLPAmLP@yVQYX zB@E_^gEJdV(VCF)!<;jzoWQRhXWc?OH%CHBX1Bk0Gg{J?yGxrw|NYV?V*oomZ?Z3S zF?&M@Ht@bK9LQj`oA2;DoAuTDf9<_xK$Pv)20DsLcgKKqOCt;^N=gXQ-JLR&lr+*v zmmmlt-Jo<1NQ1!8jSgKBf_R=m_kLr)dw=KW`EmFK!^}K)tb66Xu4|h)&`r}lu70RZ zZ|QM^yLBK>ZQZ$-ey?%UxA$V)yaS>?htkfo{k=|9T136Kt`bNoYe^{u@AwYE?8G9rCv+fei+n9hGSr3Vs78U)JzT=hR%^_ZT zY&YxyF(=NCc*2ZNOs{VE9g>qLcd9e_Qc!X9RX9Xti!(T3%Wuw6 z^9@J^@gx*ryYY6Cd-ifxM@QGq`w-7GDV zW#5Nc=9WDE6E0WKbu+sj8&Z9tU#qXqfRF#q619br0+G+{b=#CSYT!CNVNHg(T`l@M z-|s2=VhUK|Hdu=Z)2uNoYk2XWeI2n}^XbLNaq2YfN+#0TGoq`FjIPd8tbqHM<sLU>vlrq!gzBly|Y75$L0 zRXNx9?8Q!_r61n?gG|NuT(#E_QH;Wsp2qM%2Kd*ogJLdu=W2|e-5WRXqF^6GP{>{R zMW(xa9`oj(K5a|(OdrMLJ2~0FuynO-b!9kLOqOQYsNSmBxOu~v7Pn@A@t9T znfQ&=XBVF=kMf%vDVT@W1C+2hpD-Et?W~jJl92=F;LlhE%f^a-M3+HW0KHh?v)aeT zc94=9;WyYDe9ro}Q^kjh+?1Sf3@?h{iEelkH_<>${r#;riQ9M~$K1Kn2M zawifAm~EL43|5L7 z6pH{G&Mpf9{<*QQDoUNRISQ)m5`snlb-2LUZd0Lzy^QlGA(y&mz(GL&G1KAwGGrA7 z;7|VviAuX42_f{mL*FGdF-GdaheLuhP&dV3Og_`mWgvS;A8k{|Msi#KY;Fjp^pFloo0W}COXg+@ z!nomfW~bZ&JL=pqXPnH`)Rr)&FupHYrEnAmyzDl%Cln=NPP~!z0BJ4G(uptZ%1kl?v2nfU&E*1!hnL^zj{k3ZO
qu#=AFP)tEAU0DKQ?Vbqc{cReVfebSz`mo(UnsA7+>tbaBLpki_0`1yEw$7 zJY#~hTy`mXZhPNcIK)fgK@0c;&%S2M z@i3$_D4A`_e;g1kkGBX~Ed2_v->Cfo$-jdm|RFEC*+J{&eF}(1#^d zl{CUo0k$0UO!~YEJH&(|Fg_v;S3&50j3vEgHp$9I=ky2}lEuzjV-l64oeT$O4PjxQ zxiwBgaE*oy&&Sisua32>XgHg-=j$>wm)!KQGvv%npH>&lZG6mJ3x=oC@OjfZhL1dr zHLAdG#Ov{ym={Q$;-L!nDY`nuH#jyT;{4s3U;Zgz2+0QBTCYv_@hfVisy;$F4ex^Z^Q zRlcwJW&Xyya>pb6{n*!b%#>7%HLuqaIbWd8PI)~>wlD=x5|@@C_#in2`pnhbhqS^7YnX|Cg?O>)ewc|BALMqJy+C%<8C+t{VHWg^7`Pkj5qNIZi`(LTMgDXOB zP`xpu$ygUJrsrpxWbRh%w|g04G?*#o4N$|nXOUZuz2}vuOsL+WF8QL?k^0=y%v65V z%OE0z?l1^h3t2r5f07kHh;6rF1gy=*5cBf+?L01^PZ;l!J3*WILH)ym-}sv!)6$S<`sTpEOaL; zbCpJ=BH>)9bmywE8J0{nYjHqCP@Uap$oz5+1$RJWvyefX$(eU?H{uqhjmu;BLPA{F zOX2My=BVJeqnRHz*F1a}>Ju7BjCr`t%`eC32jnHdZ;Ui;qHe4@C=Wa_;V2#iPl;?l zK*6Qq8XU;X681j%etC0ds~~pB+tTHXpfzmG`nC1U$1$++Sq0b1-HMfN#<;QNwK8DU z7VmMLK=$$xlqHTAKi}OFVa<%sPN`*h85{OgIf5>D0rkHl>BNT(s{o--WKu<}dR3@D z`upgvSOq20)oq^XB+L2`Rb@LQ@os8C2Z_@{pk2G*=Ac7sH%Pn(y~rz_X6z+%7G$u# zfM7>?>SnNgLc8oYs?^FB=xt}rMTf--{ro_;Ff2Wp`x41vvnl3{goK|`!ychu7}vNO z$!k;LhrS`q->WM| zB5AaGiN9epq55I`=>VSf0?w_Du`n*z4j#zpc{J1keR838mZ#44Tlr8{CqHqvU53Db zu1)H|lMQZ~hf8%d6JYuD-DcK~WIT>eAT`~C$7>okqGn><3`KoBI-OcI)U(UIs=EP) z61;S?7}fxt5yA49oX<$dQv>fU@tok{yt}R>&>Muoht-WQga@9W#`UGD)Sy_0oVSgx zC%NfO^0=M=M1<}p$5Gsc#_~1jF8z30%KU2|yd#C4c$U6}#sSEhbR0YUCNO@2A#Q1S zJOI4)CosQ1VV~>;PDSqJz6qhVMr%Y3b9R4CZZvH&Zfut|npZtDz;&;RPVD*NtvsuQo{k5( zrk+^|WB5YW0Hjv<^{t?PWUpqU&o?VNu(NVF-rS_f+8oR8r<{#`w833o-P(6?tjGB+ zz;ueP#zT-n+NSe^6e=R6?=-Z{0_0`F^d4G~Bsr)vJ16e3OSL%`f=Ox%-;8{r?p72& zCBq5^aC3>J{^G8+`TiL|{})wJj7@hLIDP44XnUI~3rJoZCO7YOCgS)@1;_e{G6aTn zcHJ?1uA9|ta0dtfj_ltodO&Lm9jz2ufq z|NP*V*q-|C(~27RLMVW)3lMZlMnjNf7d=cxaRNlkcU8&1ep7?UktfDvw>a!{+d2K@ zzuc8&QapR9xv@$)_iCdDwzxe{ii-%6ro@>EYC(WW{!h8kbY4y$JP9#Z`)=!&RV?i6 z(j3s!*30(dJf-a5iu*qL$DT^U`%M~K^MS@S3g_zHQ;9h0Nzd)9X18!{N0A^nN#Y`{ z72(UZr^lkws^pgu0D@S-Ug-YA4Sd4(v4syVbfW?#Ys(^~(vIgF zFDVUsHxx8K6SFz45q&Xzw@UA(PN_~E0oE$h_Q!qQs(teMbufzb`SR_Au?L@APCpr{ z$-4X3vyHmK@qjzu`KC_i>mvXx93 z=4Nb+H)m(wj2%3)n5W#V23U%)KQrGtipyp5G)Nr7XX$f=1eS11hJD2czhc^1y*dPv zxxAo7K)xOk|6;}7e+qbSH~&nU3`=Z(92zj*A>~Q?H7G2WAT7_pu4YNq9TxDTR2(lR zQ>{dD|0R!jZFs%^rZmxzj|4M~=|)kQxe_ewh{~mo^2k7MNoj#T6k2@qDC79}0YXwb zaK6bcgLr#159V&`=cq}Qi*XhLF!QnW6Uv9lgPYSI5;(}3j5i?zRDqmX+fKGD&x5&zR3;@4hT2$rG&(%xi2Wiz6M$VQhK+#n8Y6#I$ zwyC!(NvU6uB*qZ>)}#vDigsyt6OjI2dp2?^Q^u2`Pz;gSWO-BNeyzy|n?Z>@M34r_9=q zu zCmV~9p87%xpuWOc?i1$cv6RR#23ZZPkv0>gpC5@VLOSK$^n*=orO+x|H#i-uiK*UL z?rt-vk~?LeOnWk~=~-P$icnek?$E~`m-4y!H!#&bc`oND>f$M9ipXTZUHbZ|&!)dM z+H`9wsO+F!Ah9mm8hFks%9Qx4!`62FCim@C&s`H?Il3&kSN=qtdU6RXe`lDlFn^q} zx5vBM#_|208A|M8b;?>K36{?Eci)@;$07RM7O7Dz@QWOa)pb9xV=z6Wu0Q!E270K{dQo_ zZA#Ah{Z~YhQ}pO`;n6rE!szGQgXn&AuRY5@U1;f9e;7%2(Est3vL$2&6(ZeuYXDwJ zc;r_=`{rcGMgm)eOXU4L0Cqd3b2!RoZxpm5|KQn4&or1FHS^hEKOQ6bqLBBuO@aOl zis* z3q{DsPdQ+@ln-mp{;5mFJHJqF$6E7{?t`tXarX11M+kUf23Y_n+%Zi5-Pm$KLU3w! zYC>u>+1<4@B|TcxgLjEB-*jD@Cv{a4V@?ea6~!agM}=#1V)fKkV)2kN)%Pz|e(ZCk zd1Zfc6c8%#J}_A!9>8KWveV6Gf-iyxnRMNdOMv;`PV%okwN%Vb{St@Gspf@ecgc?H^ISjoU+baeqJpL zU>XNXHCs#y9f>XaT|O5gX|yEYJ5|ZRQnhpRlzR;6rE~Hnk(!a2rFK1BUWv=pUsjzG z2Z~~)wKZeQ#iF96c*~Li7}h3wes!XG4;CqY=k#Z9SE*@g3b}X%*?DhYlBxa)x5)62wvLXDvjM&{AZ{-4#^7u2bc6mBrM-zAc);^Wo@XfDyNJQtG1CeZ3Q?e5(`3?uP+rpj{hZGDHUx zbq?3`6W?D%#Ew*_dys%$ozM#KnoUJcAYm>_JdrRLhHjVZu+3PYV)P8iriz)yjf|=w zJGrCO3Q}&x4iam$3q>ge^;Lceza}@Q2}sd>bP#T<<}r8e+sm)7#&8K zzXmV?l+)bXY(%XNzY0G&s3Y`U{)S8HOZpA-;wI)6FVOujXpa?fM@tQE8sX6D`WAp$ zi*5HXcssD)JYGDjbjK_+!vsJ$%T~KudMe0qc#i7>+k$`Sfqh6=YNH@;v$awHykK`2pMyBxn;vD*dFOzm+G2 zaFOP@5YiwiXkde+h;wS!_N%2x#A(qy-amPAJHoVbi=`nSK zWX=zAnt+2J<8a6Et3=<;`^Cnj{$*3j{!@PMj&JK$iLu?S0H8tX9uPdx^gMbR8KC=; z^R%r@rL$8=>X}WXaG!Y6s_m=j#Ib;V_j}*?4;eWY{w4i7ZYWs{%N=P1IxzClE5G@Ap!94-V(yU zER(;Jm~kw%7tk`9Rk|<@^ArVc2abxzksp29&%|krVi}XV$25D3|5HP{byhqhKtb1E z?OGCCyhT|T+FRbp!n{Bx2RPfxi11gBXlm(r#1K-Dl3&t=~`*{EbH1 z-Kc<8mhinkG1jG06~bua>ILD=Ty|2s+0uy};1-yYI=>>3^EpZ~3;5tYdBt!cZz|aX zPI?wnRYV0!-oOKNCiz6+gMDAuDtE>bz$img;mg?%=)9273eNrfF*zQd##2gTu=KHj z-gxUGy;_%QgVQH9-6IRqTa~l+dxw=(L?W*_TMs8^ce8WpI!E1vWD?O^c>%1=^{0^B z9%HN#a-dJa0QK}KikFFFh|$D_J>z) zV&8&e3Zd``4ve?aKBkTX-$|&yq=h(1R4yAI!XpjO_^}fhE?Z)OjV`7Q%%6k??+-q@ z3f~tl;3>u9OQ)R@3WW1WDPQ6wicLaq@l7+@?*)}>92nC^%|8js?v;6`_iZbjU1x1V zkrUKb> z0;uY$!v8JP^=yMRKQChG)6!;1dD!_&z+O`?aP;e7To#Qw*1LPm?Ak3?&`EAOn?==Y zFDgEgbCgDJ^6Ihd2eyX%>hj|1GOBkAw)5ci1KwUXa2eW}0rmUd)u((MP4BU?7>VzC zRm&gd5;p2E#S5=wX!?L*``ty5syp`WsSVge)_RFqYT$M3D#9Y*x`YoYe$ zF~bIp1=v%c>zY?e?d^L`sircNZt;Dfr(yu+3hWMgzB=TQ|KAcaf1}=9A9$)DyS|hk zFlg{WDqH9IRUj`a>izvpXVie$;E3A-=#Fzb<0fV;Yhv`vE^m_^(h-W^xKv6vJ-}bnDlg$yRimbldE556A9cS?7&yy&nA*J0C~6TD zb|fNL#x%UKL@I%ao2>n;IMUZDIdIH`omF8ue)8En8IU@}^W1T<8HV8n(CSd$+IGU@ z!a*}6`X|C3sxN@%`3)ucn`4^|qYP6<7D=naZSBwM+BS04(;jWqx$=N|thrmW-WhZx zK;-zc0nh3p3+Cls3?d>`#6b&76$~iC>?D;Tc#7VG8u`%&FIHgyhsUkcOp=K+yUZh4 zPR*+z-?f8FjD&`_Ls6F!W?0^+$~~eFC?BC>EuO9%jsn z=`sLL4FGUEPWfV$TfT)Z6#*6a|0Er9*}lf_y#}OSnnMB5eDfmCdM)b#0{MMbM$g)h z%K643EZ`H%=|lYo=Ixu5s6J(P8yX~uL94AfT&W{V&w>U|68ijQ5WT4|Lfo37t%C;3 zWmO*9V3*~#mVFU_-3n`Jl*hQ){4y5H-mjE1Wc$x-2{ z4$Ox3D2Lewt8tQ;qkQYXbHgPri|DG8*@R!BwE})D;>b_LLTMNe@RtB58|_a;)Sf%S ze;|q=6F@9IRY(x6iJMbzYpcEYu27!$15A*$49mA&t?fE%g|4@CyN z0KE79q={rPW|@Zp&rEy);N|~KXeoFA5Z5Yss@82S1LV@f*+z?VF@$E>#Pu1BcK%|+ zm7Pn8LIXQNYR1{g{^{AuvP8~GZ&c(Sy%Kyx$!V_`B5!&!eB-9<{B4~3>@wPP?%HGY z8^L;GvwY|6?yq%oGlDZbq&$5-9l_<3Ar4-W`+0YcG)}SsLhSFT@Zmn4UK4GVNUm$X)kqaf;ujDp0E3^EDS*E4@Nh;$m2L8uW;JaOMm7cdB!7(hPg$lce4_>wH zvk&dqkQL|OiZsBPpDT%$3voHxWj3?sFiwlM%xWWXn1Qf9C$n=Tcxa<%Phv7KFp>$M z25uIdOZl;3DjlmLTh7VC|aLiQ|0y8U8t_c{E{n} z?|BIUJQz7dA>OaHGa6)q%kY=qcJ>~)3UuR|SmHMuRvw!(KZ^Iqnn%oOM%v-Ls5AP& zwX95EM}4*I2W103J&_objJFtW-Z;WNihd93Q(2^B`|@=oKgAkPUY%biwF?pKGgH4E zP}44KqCU#&ZPLkp52$UPbY=lGc&Pflrf>wsnLW`Fo8mO4IFV+0*BplHzG)J;}G*- zR{GfNl3e;h;A_4_*84CGMFrHqjVaAs9eMln7t_)2tbgGxXp(!QF8~7mycYlgcS*C} zCwvN#%AiD(O(rhZJ)<)B-tGP=^MbaK1FSOR<76Zw5h3Bt8RQVf16RQuYtA>*XlFN| zA`E7(sPKE{3__+;DYZGAlZG59(5D_Ngwf~cN&T5^sjm<~_f5U^t9|9=9e}-AmT@Tr zK7$eKDeAx6VOiQfLDi(~{Kj%N^zr0ohgmR7;ECfC2#~%4%+mc?1c0ZG9f==V!um3;? zuIlG}+nG4os3q4)|8>^tHh#}ES`W_ygmX4V7`n?>_{Us>;)uZ$$4+);3PSbIK(oD3 zwnXfV_toWjsqXw8R1!6!&{}|^h2U?t>K|#l6R8YuA~8*m*0mCag~9{EoT>6AHHmO$ zp_Js?a69N|R1UtZbO^v{oJxE)H1DlxaC*Oi^ddNf>mL^FAF4qt!Yuw#fz%RyQZN9$ zGvrNH_uYaC84zY3JL4x1h5a~>yN8~Lpb&RuCuLf+?kZ5NDe2kTqO?BMu)*y5ZV32s z8d?xXpUc6iwpj`6)^`+tGQR&jA#$4bZO5t2Upz#8fjCbgOVj|!zr|P*fd%Lr9%mRf zPRG(LuyR`JGw=EUIwHg7Py-4&A~Ymq&EI_#dv2tpV_bVEza^c8lf~E0#KV0TNZ2ei zlbYjPh`YHxtInho>Wks7)`;RPVha>vf(e3e z2@0sQFxWYnY$!|@I;qe#1HyayDx)wK|46tc-qK)d&?yVJ(gKQ#VV-D>FG z519gO;KMQi_Vcmm^QIaNTujI&C*`;&rri`;dxwcs;+;vwq5RR;#@cNb;QHM; zi=>vHOK&DjoUFQN%{T$VvEcWb5Wny4@YFX&w*Q@f?6<3`fCffs(l#uR7#JE_&K((P za%Tt22&sjSwN0W7dKB-V_}bYjBH-6K2NA*rq2hp!H=XVe6;RU_8nto>#bd3!)t`_^Y-0>&Q0j#n&Tf%4A6J|L}Q z+TG%Elsq529)v!z*4fpsryy%=n-r5{b9`@+tRe66&#K26-0%mX`@bxP{aIo6wkm+Y z9MUa)@8Sy~q!4PX9kjKYA{YLOfSpfv*;?aC0INH2qAk7|>MiDsnI!4do>x?K02CA4 zr3$hmeBU|e$*PLi{_iK{G^uXP)OO&7er#i;xUzEA&ve(@Gr-U9f$cY* zP?LPtQ+%x_0?8i&w?d@r9}$^{a`s8~Kg5Qe9LyuW@h8VML)^uHKh^_&`>4V^`J4kbLp!tMm% z1=rQkPgL&2*q5MHh}F`d?1y=4k964IpJk`a&~Jb)cii@0EuqNl?4$q^66m_)zde*c ztS71;5M(HVegzp(H<5B7dgj@E@6%ioJ2VIY#qJA?A+f;G8;RE^HK0&MZ!(>AeuHoj zv*is%YYJOGnfET)^w^tssw=&+8*vu${KB43pY!Ec7yxerxSr^Ye#gz~fI$NNGDu#$ zNQ2~6aiHLRdLFrNsl)$1QP|jCE#u`FJ`P?kT@I_w-foS%2gOTxfXp3Y@4QL5W)~9g zra^SnmngsV-culz%rSyCd-0Wgf*1n0U4N#B`SYYI5Wzsnu07XLaF*0(1@#PAGcMH3 zx9>GI)JfEJy;nlej~SNL`_D6P5jRPa+3p4k+63qGIi^-b1~^PKI+H&O$}^sCHk$ zaS#U;n|pE}$UtbZvllKEt%bd~_Tt%qL?IFOt1<3ZZeTHW7qPIv67a3$NdNmj>c4!Q zJN9p@8XJMqS+bb_)g_W%jl;7*e)M_oxL47+flaE(iAs(HHp{*d4- z1%&Djl0rFdlO24Q)7@M>s$@oWu$u~~;s50V>>p+HE>=Kkbv$6zd;GDn+LQkC6)G+b zYFa1hInc=K9E?YN2Rjn?(=3sQ_QV%b5}k7zF|WX8;3@pqls<|fV=n4{ZZ)&_x%Y3o zkrR9a;OkZ8U@;`(v$t?d()bBjIiKp1J}URc2y7#v)2H5SML2BSMLaXfmi;rnbrOX; z0D}*JKU;fe)7v_)>qa}0o9k~*7yx!K_eVOTP3IO;;3_@QXMN1v-D5N)zFF!tVqoJu z-B#PC(-u+;{}fmhmA>t2U%X6q4UiORLyi=xu-l9D%*3Gb>M?)22@naAE z!y8#O17NgFf91?T%#_HS;q8tU2SGhxhnYN)`EjE}h^>G1y#4Im-Wj#C0KD-)fFjd@ z@CBsgL#G8;CA)S1c)ewRonG@TBZK*QjpQWmb1*h8uu0x~qQWoY{+Q zr~04f8%zJ6{2q)%_D}Av#Uu+H-pd^Y65&KW!grc-f9K0sm$_*RZc@(f?bdNiI_>Z` zb>vMySXXIvsavoQWt9|?TMH!xdQt#H6pX(fkR|c|D5yvow|9`dO0g67JOd(?Fs8y& zlW#4tX2Gev@b565TNG6Mr-hdl02#|TE47&4cIlJ5RIG2uu_|M$JN4@dHU{Ka1r@_CZWGAkQPQ(ZPZ%mv^>rVWfD6EPzU zRCl`)1DOh%DHCx%d-02;8h7Fg+D1Q4xi|h`JG%Pk&yyiXF$V^NJYRzkiM}_4Uq9{x zZ#VWLGIxWn(#$`46o~vtSX71ylGQt4p>2D$eplcnF%IG=VXK)uikWSHAsVqzG!_B! zE~g+NbRb|dQk1_ILt#Rgit{4*;8P)_2)6(weOVU2AP;4`=EnHw?Uu*oOyipg z7Q^@M8MvM~YLR2esC>nS^tu&py_kBY-`PC5&K9`&#CK&|MdF7)KNw4PXStfIptBun zeybo)27apmCC8$PwJ1`;0A+p&XrY>-~F;w&e3s*>t2euPThV2WSnYwv1YZQ?{(P1l5Atlr7^_* zh6}L*kEqCLfzQuQ+;N@uSGm$YC*4q?|MBHdvUH6hud#NND0#}A7MjjuY1Xq_ecT3J zh{c`q`N5VCLEl4*-VmR2G-*Wl#W-8Qocx=Ps(jAQWxi?JC|y<34{;JL}EH4HoEN;s%2_SCdrT)M*q^`8#9j z6lGDZTb`<`D#FHdnhTqCh>rZ5BeGdsp1V^k$--y(jAG#T>Q6bsaZvzKICfi0DaL5* z>f_ovJ7e`z7@alpXV)BC2G+r-gb}1yegzlJJtH0}6eS%~Y718pGV?v1-oytzPT%)X_oLy|1asq|gD< z?hX9mpI*Y@)A&x&XsUu93GRudQpO&${(g>Y-$M9U_&cX08|t8KhPr-Z^5d3e!yYMAS>ClNf# zNoMtrmU!PSpuhbY3~XEsuyNoC)bSgG`*~>Nqc_s`h%|`C zE46A)YeLDfLjAPu5~+q)Zi7t{KN|%wmbk6}r!gk_Y$`G%W99pEO^yN+d3?+8=|kqB zA_1azJc6gD5QQ-wFr|JlX4p)$hobEHJ3UsHScG=xosw@``1WgyP%1n900{NT<9L~6)X#jVGl7cZ+j zN981HP1wY7+}lvWfLOjlXq&N2M#d12s~!=Yrp6?_n?WmBjV}}dWQFQ)D!=39tpYP6 z>vuL^ShdE_`l=TFE_N1Ev>v#^ai(@B9vGdmkf+?;wgq)I<|x21^7Py7n#)!S#XGBy zxMk0nhrVOH-rZItbL9rdzg2`q#K7-DCR1ZXa1E>kCgRYL?l^@E$f=2tC`GvsPDzfkLBKZ2rX`2D!mYhH=SxpiR znQm2I^<1rTBkxl2pXbtB7u-+U9pQ742p0K%=x3iUrqRkFC`U26qAbQgPxie~ff?7C z3Fpwz)kz*X=%l@V(f59u4Y`w((I?4TLU9=rNM@HJ3`|?83N5)0u8;M7iI4-i0U{Vj zZ%D2o`wdVce7}?kI~Fj5QOJxP#rK*c!xSeL5XgJw)MF2GkWNsu9p~4m2B93}F9&nY zf)ItYY+-*jnM+o;0hOEQ)={-updH+;WI{vs<{<$8I>l33PWtpBPey*n{6ZJ*ERQx# zB+#v0a$8+)iTq$Jft0R+L>Qi^6_wl80zGT5>Be6FU_J90}GI z1IitjPwxo`bPg50mQq+pvU}?|w6oa|tZ>rS;fI-=$2%0Dh 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