page looks like
![](data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAAZkAAAG6CAIAAABV/6wBAAAgAElEQVR4nO2dTW/dxtmG5y8pgDb8IXaysbOa9dkIhiNk5xSONh7DqwTO3knRVQEigZ0ssnMQtGhRFEWJIoFivHAV1U1q2YFlAXwX/JpPfpxDHpJz3xe00OH3c56Hl4ZDiiNyEjU//Hj6+Otvf/+HP/JnXT+Pv/72hx9P5y6fNSHmPgAyLac/nf37/Je5j4IM5t/nv2Q//N/cR7Em6LLIOf3pbO5DIFtClw2CLoscumy90GWDoMsihy5bL3TZIOiyyKHL1gtdNgjLZakUPhKV5XmmEm2C8i8p03niIAFMl+k5rPJKlgpdNghPuyxTiVnkmUoqRZnzMpXo9qpOFPpsQTguo79WA102iD4uC86zXJbnVcOO58ticFzGvzSrgS4bRLfLUqWJqdNlpc0os6VguiyVbDWvB7psEJ0uS2UyzGXFlSbPmIXguCxJEvZtrgO6bBABl4U6iHu4jA2zRWG4TE9fW1cCWQR02SDYLouclmcyUkmZLRq6bBDsL4scumy90GWD6HkfsxJaz/uYbJUtBt1lRr5SyT85C4cuG0TP58uqM4DPl60Nq12mdYZSZEuHLhtEv+f+hUz7PffP82Np8H+Y1gtdNgj+P2bk0GXrhS4bBF0WOXTZeqHLBkGXRQ5dtl7oskHQZZHDd2SvFL4jeyh0WeRcXPz207//y581/lxc/DZ3+awJuowQEgN0GSEkBugyQkgM0GWEkBigyyKH45av9Ifjlg+FLoscPpOxUvhMxlDossjhs7LrhS4bBF0WOXTZeqHLBkGXRQ5dtl7oskHQZZFDl60XumwQ4feXGW9U1KZbryjzvJ60edGZ962MzexmSCC+BW0q6LL1QpcNwtsuK21jmcg7TmxwbN/gDHvjbcOkk52hy9YLXTaIgMuklImtIp9jUimk9L44PpVSSk/TrFoj7DIyJnTZeqHLBhFymcqcYUhcl2UqScoFHRulUqaZSuw5qUxUlra4zBj2ieyM7jIzUeVoDd6Jez9M4oEuG0SLy+yhLh2XlSrzD+mTSpk6czT5BVxmDsdJdsYdt9wZ69c7kcwPXTaIVpdVNksqs9n3A/TxyZzB5WRqz6m24LiMHf+TYV1j1t7SBtfyTySzQ5cNosNluTbipeUyTWU+mZUuy7XrzHoNtsv2h91fVnrLtJZ3IpkbumwQ3S6rLzWV7jK7NeU8glG5rPFcoyn2l+0Pp+8/lSJRqWUt70QyM3TZIPq4zDOKb91VVmO3zBqXlU2zpFmjzWXFAhTaWLj3MctnBX3jzVNli4IuG4TXZb4LPd1V3msR66al5jLrHkKXy3ilMyaeZzI8vZuBiWRW6LJB2C7Trx39z8pqj+0bNyibzvvi2TRjkbqrzLg2DT33z3NqPDwucxvVoYlkVuiyQfD/MSPHe43pbXZTZUuDLhsEXRY5zvNlvkcB+SjMIqHLBkGXRQ7/h2m90GWDoMsih+/IXil8R/ZQ6LLI4bjl6/3huOWDoMsIITFAlxFCYoAuI4TEAF1GCIkBuowQEgN0GVkfDx48uHXr1iZ2bt269eDBg7m/7NVAl0XODz+ePv7629//4Y9r/Hn89bc//HhqRfTxycn9+/efP39+FTvPnz+/f//+xycns1TO6qDLImfVz8p6nxc9Ojo6Ozu7vLz8X+xcXl6enZ0dHR3N8uWvDrosctb+P0yuyzabzdXV1dye2RNXV1ebzWaWb3510GWRE6XL3r59+ysGb9++pct6QpdFTqwu+wUDuqw/lsvKVyWH340YWKAa+aL7pYqe8ed8K+qDnPl3mNZzvG9u1F4ZGXjjYzW6nW8r2nR9T/5jdFYJb8p5rXjwq9ghKAN3HCb3Lb5LfvdlyGX/7cGffncohHj/i5ZFvnhfHP7uT32mf/G+cDdW7MG7hXGgy/rjaZdZ1e2869/7Vmt9oBJ9iBL/Ge99rakwxgMoF2o2rS9Rv8Q7tLnqqFvfxG0Pa+d/j27nMbTu191Z51cxUlAlvrFLmpWWbrKAyy4vL//TzfcfHR7evHkobn4eXubzm+Lwo+/7TP/8phBCmBv7/qNDIYR/C+NweXlJl/Wk22V5bp9dbQPCmn/3nbf8pVJI6Rvm3B6NqXr7fKZU6lmimpxKKQNvr5eya4QUbeeyeK+3XwwdxzBkU55D9L3jdYygSvzvyK7/UCzcZGGXnXfy3Z3DwzvffXfnUNx4FFzo0Q1xeOe7PtMf3RCHN24YG/vuzqG4cSOwhXGgy/rTz2WmldpGgTNdZg1aog1bbp+C5jbtwU48e612J1Nr0JRicqKy/iPXFeNO1QOBNqvY30K3PPpuquWrGCmoEm9/WaaSYliG5b9NNuSyn7t4dEMc3nn6889P7xwWv9Q8vXNYXZIXJnraPl3b3qM7h+LGo2Y7h3eePvJvoVm7kmC5or6XRz93QZf1p6/LdLu0jc7b5rJ6eIxAR5HZR9Zuu3p3MnW2p3mi34jC1Rh6zuFu67LOTbV9FSMFVRLo+/e4cha8nX76Al6XvX79+l8dfPaeeOfDb+xfi0/ivc+0D+W80HRzg998+E611DcfvvPOh99oW9e3oP1ubEs/Fm1bQV6/fk2X9aSvy/SGmd0fH3KZ5SRtoHN3ADNzfCbfOdbiMnN7lTic0z50zNp4oPoh7+Sy9k21fhUjBVXid1m55gJk5ujMmrulywx/6R9MsTUfQ9PtKbWASpWFttCIKrz3HjKjy/ozRbvMf3Zp56/nDO7uw2lzmd7MqPczvF2mRSDTXV3Wsqn2r2KkoEp8LivX69Pdth9CIsvDLstaefiu09h792GWZdmT44Pyt3rBg+Mn4enBJZ8cHxQLdG5B29ST4wP7sKy92NBl/Zm2v8zaqI22E22bAZu1uqxRQnNGD+0vs45Vqp1d5t9U11cxUlAl/nHL27/qOfCKLA+77J9tPLwuDo4fmxPE9YeeWfXH0HR3yuPjA3H9+PignB/YwuPjA88e3c12QJf1Z8h9TO16x+3jUc1DEv6nCTwPV4We8wi2DFtcVrZikmY/7aOja8dsC6jRzc4u82yq86sYKagS22VuN9xSbObH67JXr179I8xXHxyIgw++MqZ9el2U0z69LsT1T5up1aKh6doWyilffXCgzW6m21sof28WsJYxP/h59eoVXdaTsZ4vq2Z7XabNt3YT0pfnRmaXy5x12k97/Zh8V2eefqw+LuvaVI+vYqSgStzxMT13XRZss5DL/h7kk2tCHNz+0pr65e0DIa59Uv9aXODdvn2tWTY0vd5sNeXL2wfN3E+8W9DW/sTclLZMeTxt0GX96fXcv/3gl4eiU8h30dRMtpsD1eTigSxrvXqJRJn/UmDeWTAm1b1K5p2EwCPy5fNrifFZw+rk8h2DvXzHpgZ9FTsEpRPl/zBdXFz8DYOLiwu6rCf8f8zIidVlf8WALusPXRY5Ubrs5cuXf8Hg5cuXdFlP6LLIifJdjKenp+fn53+OnfPz89PTU76LsSd0WeSsfdxyd+zuk5OTe/fuPXv27GXsPHv27N69eyd8R3Y/6DKyPu7evXt0dDT94CEzc3R0dPfu3bm/7NVAlxFCYoAuI4TEAF1GCIkBuowQEgN0GSEkBuiyyPH/pxMhy2PXUh/lhCGLZfcSmR2GsJBdTApdRjpYe4nnDGExu5gUuox0sPYSzxnCYnYxKXQZ6WDtJZ4zhMXsYlLoMtLB2ks8ZwiL2cWk0GWkg7WXeM4QFrOLSaHLSAdFidivA24GrSs/et8X7HmfrTPXh/Ei75YtCCHK4Ytbd1CE0Ocw2jdlb8E3pkXfdScLwR0nMO33/fffhX60/ldG+0Yucl+VHD4W++vs/xXtAl0WOU2JlNVkD4Zuv8y8GYNYW7qqXH04KHdjxo6sQbaaIfGamam0t1+vpJ89TQh9DqN1U8FRabrWnSUEe9Ds1rW224WwTSo9GXUS6m7FN4jEsNTQZaSDLV1mnxDOyu75Zs0wRqKR1mlVj+QiAyLQj0yr8h6H0bqpoS6r150lBLfR1LLM0F3IZmwJY7LjMk9Cm1lK+eogML3vV7QldFnkTOWyUIlrJ4nHF5YItLW0Vexh8drOUvcwWjc1xGXe4Ub3GkKby5y1hu5CqszoZdAmW3GFE5oplXr/djWTgy5r+Yq2hC6LnC1dZp+xnpW915nGORIYXq9dBO74oa1nqXMYrZvq7zLPunsPodVl9lpDd1FIy7oYdF3WmtBMqdT1ZCq1UdkCLmv9iraELoucwS7TMK4FgpXpu2QIyaxLBB47dp2l9mG0bqqny/zr7j2EdpdZaw3dRS0tvXHmuKw9oZlS+k2kalF9/MRAJ13rV7QldFnkiC2vMS1aTg/jjGtpx2mTx2zU2IexwnZZKIR+LuvVLnN3oUlLa5wlMlAe3oSWLjNafeW1I9tlZGymc5l7Unvuuyf2n/lOEQzsbHI2ub7+smAI/a4x+/SXeXZhS8uXsK6EVi7Tjlgpb3/roK9oS+iyyBHOrfrQPfhhLvOdb8pzHtjq7CECe3ttZ2mv+5jaofldVhm9fd29hzDtfUy/5Q0BdiW0dlnTtGtpW/b+iraELoscrUSc8spUYj0FFnJZ91WQe9Hgq+YBIkil2+LocTHWvinf3EwlwWfEjHX3HkJYRp61hu7C8yBZKs3i6Exo47Lqe9FXH5Yauox0YJZIsPfVvJqwLiTsewJBRTVTPdvz/u+Bs6hnD6LtifauayJtqcAWymPpPAzP9icIwV4m+Ny//Ten/y5aHvCvFNedUP2omtsD9XPFzu57fkW7QJdFzu4lMjsMYSG7mBS6jHSw9hLPGcJidjEpdBnpYO0lnjOExexiUugy0sHaSzxnCIvZxaTQZaSDtZd4zhAWs4tJoctIB4G7R4Qsjl1LfZQThiyW3UtkdhjCQnYxKXQZ6WDtJZ4zhMXsYlLoMtLB2ks8ZwiL2cWk0GWkg7WXeM4QFrOLSaHLSAdrL/GcISxmF5NCl5EO1l7iOUNYzC4mhS4jHQgh8vyNFC+E+5P85nslxm+JeCHTvFjL/56v/dIWgnzTtfYiojBP1EwloXcr7boL81+4zZGjROi1bYuALiMd1CWSqV9NeV2p5MIu7fSicMTyXJbnRQiiOeZM/SrEC32KQ2nA2aPQTtTW4fhG2UX5ngrzPXWBt+QuB7qMdBB2WYCmXVZzpZI5dRByWZ5X8m2JyxOOzp5Cs05U7ZVp0+zCbPmZ76lbKHQZ6SDkslQFzn/PyT9zA63NZXmeyhdC/BoUQ4fL9hTavl2m2yyVS2+S5XlOl5FOAi57I822TCqNfijtGlPvqGq5mpuQdpcVV5qVj65UUh5toq7y3HKZNdcNzVl97BCqY57cZV1DGywOuox0YIrA3/GfyuZjIbVaYTLtbNpMTrvLisvMRF3l+ZVKqgZafczNwbfPDSwwdghVIHtwWV72zdFlJA6622XZb4l+jeae58t2WdMuq25c1D+JumoOvn1uHlhg7BCqY95Pu0ym67EZXUY66OwvswWxNpc1/WXphecmgO6ylrl5YIGR2L/L6l6ytdiMLiMdtN7HfKPUVZ5eiPW2y4rGVPGUWXrhuQI12mXhuaHVR2LPLjNvXK7DZnQZ6aD1+bKmj785jdfjMuf5siuVaP2A6YV5Fdk+N7DA2CGU25YTPl+WqcQyV3EXYOF3M+ky0kHbQ/ONBUILFJdv9d29Ge9j+o/Q0Y22mHyjfSwantbcXLtxWYTmLjBiCAX6k/lj6kUIYQznZo8IOskDuiNCl5EO1v5vejlDWMwuJoUuIx2svcRzhrCYXUwKXUY6KEokcP04+CeCEGaJly7rhC4jHay9xHOGsJhdTApdRjpYe4nnDGExu5gUuox0IAhZCbuW+ignDCGEzAtdRgiJAbqMEBIDdBkhJAboMkJIDNBlEDx48ODWrVubSLl169aDBw/m/o7JzNBl8fPxycn9+/efP39+FSnPnz+/f//+xycnc3/TZE7osvg5Ojo6Ozu7vLz8X6RcXl6enZ0dHR3N/U2TOaHL4mez2VxdXc0tnGm5urrabDZzf9NkTuiy+NlsNm/fvv01at6+fUuXgUOXxU/hsl+ihi4jdFn8FC777xh88X7z33PvfzHKJseBLiN0WfxsNpvLy8v/7Mr3Hx0KcfPz6uPnN4U4/Oj7nTc7DpeXl3QZOHRZ/BQuO9+VRzfE4Z3v2ibMCF1G6LL4KVz28648uiHE4Z2n/plP7xxqL2+58chd4emdw2qGvnQ5ZVfoMkKXxc9ms3n9+vW/duebD9+pdfXeZ9qMz97TJzSfPntPvPPhN/W65SLaVH3yTrx+/ZouA4cui5/RXFbz2XuF0GolGfi0FVDZaDKjywhdFj+Fy7LRefiuEO8+LD88OT7QXxFaTX/4rjg4fpI9OT6oJlkLCiHEwfGTXY+FLiN0WfwULvvnjjy8Lg6OH+tTHh8flJMeXhfi+kN9ev3p4XVxcPzQmWJsaAToMkKXxc9ms3n16tU/duXT60IcfPBV/fmrDw7E9U+rWc2crz44ENWMcjWhT/jHp9e1j8aH7Xn16hVdBg5dFj+Fy/4+Al/e1q8Pr33SzPnkWnPFeO3agT7vy9sH4uD2l6Ht6FvZHrqM0GXxs9lsLi4u/hY1FxcXdBk4dFn8FC77a9TQZYQui5/NZvPy5cu/RM3Lly/pMnDosvg5Ojo6PT09Pz//c6Scn5+fnp7yXYzg0GXxc3Jycu/evWfPnr2MlGfPnt27d++E78jGhi6D4O7du0dHR9OPIjIPR0dHd+/enfs7JjNDlxFCYoAuI4TEAF1GCIkBuowQEgN0GSEkBuiyyLHfr0NiZ+6Kmw3cyEFALm5AkNONGzkIyMUNCHK6cSMHAbm4AUFON27kICAXNyDI6caNHATk4gYEOd24kYOAXNyAIKcbN3IQkIsbEOR040YOAnJxA4KcbtzIQUAubkCQ040bOQi+4s5UUj0knqgsz5RUWZ6nMvAguUzNdZqJNe3revdczkuVypyNayQq678jezuJSgNbto4rhL477Ui0yfaGUtketGfPRkyJyvp+mT4EXUZixSnuTCXaeVmcZ9ZH7awxTk1nrrvh4LrNKWvMr2yalJPNhVJpu6z/QTYr2lOqfXg23RaXFXj5F8Ci2LbnC2q2Yu3WP6PrywxBl5FosYu7OEn0s0IXhsdWqdzWZfq6gVUzlWgtw9wRnlcY/Q7SbUaF7dZKpqSUrm98h1Z7yf2GMqWUb6+B6e0xhqHLSLT4XWacJtpZaZxCqbJO1gEus9Z12mTNnL4L9ttRP5e1ScezO6ky7UIwrFnNes52M6VSz171yUGXOTGGoctItLjFbXfP6PO0U6hsMgXmemhZt4+h+i/Z7yBbXTbkOrOSlnUx6LrMkJ57WCp1FZpKmfqOuCPGMHQZiRZvcVu9y3ozQe+m3s5l7roDWkFDXNZ+kO0uG3BImrT0xpnjsuoa0C+zTKnUia9Ypc1lvY1bQpeRaAkWt3G2VCcLTLtsQI+ZIS2tcZaYLmu6s7wyK11mNAjLa0e2y8YBN3IQ7OKuzqkSp699kv6y/q2gPfWXDbCrczFZN868ug61purvvTk+VR46+8vGATdyEFyXJXaDQbux6bVVfSr5XVY1SFrXDbnDUutwlwUPcsz7mH5dGm5UHrGZcqoCrcVuN4Y77mP2chpdRqLF4zLjHPE9bmY/FtbyYEWmkmrt9nV9ve2ex8e2dJnnIMPmGmSywHMhqTS/tcA9FP0gGmk3D9YFj6fjywxCl5FocV1mP+RvdfO4lLftgo/my7RjXW3nibWijr0R35k77CCDz/337YBqecC/UlyziP0sru8YmtsD3n9UaH/uv8dRC7qMxApycQOCnG7cyEFALm5AkNONGzkIyMUNCHK6cSMHAbm4AUFON27kICAXNyDI6caNHATk4gYEOd24kYOAXNyAIKcbN3IQkIsbEOR040YOAnJxA4KcbtzIQUAubkCQ040bOQjIxQ0IcrpxIwcBubgBQU43buQgIBc3IMjpxo0cBOTiBgQ53biRg4Bc3IAgpxs3chCQixsQ5HTjRg4CcnEDgpxu3MhBACtu/UWt/UcvmpTikPZ0MGDpNsCNHATI4rZeqD8vdNmewI0cBMjiXpTL9gpkuktwIwcBsrjpMkRwIwcBsrhnc5kxrpI50pJMM2s8Ju/45jsCme4S3MhBgCzumVym94w1Y2aWytLN1ozlqTpHvBwGZLpLcCMHAbK452qXecYzNl1mHlqPcciHApnuEtzIQZi6uFP5QojyJ1FXk+6rNzP2lzUD9VpjKJvjqicqm0JldBmJF8jinrvv3+gJs1xWy0xNoDLMdJfgRg4CYnGXvVJz9JeV+9R7zmyX2Z1mo4KY7grcyEEAK27jRuK+hZYpKWVi7rk5IO1IUjmRytDSbYAbOQjIxQ0IcrpxIwcBubgBQU43buQgIBc3IMjpxo0cBOTiBgQ53biRg4Bc3IAgpxs3chCQixsQ5HTjRg4CcnEDgpxu3MhBQC5uQJDTjRs5CFZxCxIdLemGAjdyEFjrccP81uBGDgJrPW6Y3xrcyEFgrccN81uDGzkIrPW4YX5rcCMHgbUeN8xvDW7kILDW44b5rcGNHIQl17rzsrES/dVezTunnTeAeZauZlnTzB25bw7TdyISlRmfQ0e2DJac3z2DGzkIS6/1SjOVp3zDf2gq0mWSKel50WKxAY90vG9FDM+optZbmu4Firuw9PzuEdzIQVh8rTujRNp2s97Xakx2XKYNR2nvKFNKOZsOT3dclueppMsWDG7kICy+1t0Rbx0fFdJyRjjyuEyznqOdTKnUozp9ctBlUwyZNA6Lz+/+wI0chMXXumf0bvs6s5KWdTHousyQnv2m/0yp1PVkKmXqaQoaLmvGJFkei8/v/sCNHITF17rHPLZwNGnpjTPHZdU1oF9m5SDh1RaqRWXqu6y17xfQZcsHN3IQFl/rLS6z22XGTCGSxHRZ053llVnpMqPVV147sl0WA7iRg7D4Wm+5xjT7y5xVLFl5HqSw+/irZl5lrmq4XfaXxQBu5CAsvtb73cd0+r6c0XxN3Xhbeyo11tYbfr3uYy7RaYvP7/7AjRyEpde6ez3p04rnQbJUagu5V4E+I6pUX9lcvY/LUrm8B8yWnt89ghs5CEuu9cBz/6ErR9sjleKaRewHbqupqbaj5vaATL3H0Pbc//K6zZac3z2DGzkIrPW4YX5rcCMHgbUeN8xvDW7kILDW44b5rcGNHATWetwwvzW4kYPAWo8b5rcGN3IQ3FonkdGSbihwIweBtR43zG8NbuQgsNbjhvmtwY0cBNZ63DC/NbiRg8BajxvmtwY3chBY63HD/NbgRg4Caz1umN8a3MhBwKh1+z/Epf4GWbHE/wkfC4z89gI3chBwat03BFOmkuW9pmdUcPLbCW7kIEDVujXoSaaSuEWWg+W3HdzIQQCrdc1mS3xz4viA5bcN3MhBgKt1ZxjNuIHLbxjcyEHAq3Xnbf5Rg5ffILiRgwBY6+47syMGML8hcCMHAa3Wi1FMfPc04wQtvy3gRg4CVq03dy5RbIaV31ZwIwcBqNZT6R/CKeorTaD8doEbOQgYta4/959YA83F3TrDyG8vcCMHgbUeN8xvDW7kILDW44b5rcGNHATWetwwvzW4kYPAWo8b5rcGN3IQWOtxw/zW4EYOglvrJDJa0g0FbuQgsNbjhvmtwY0cBNZ63DC/NbiRg8BajxvmtwY3chBY63HD/NbgRg4Caz1umN8a3MhBYK3HDfNbgxs5CDC1bgwrV70aI/5XZcDktxvcyEFAqnWvuSIfjAkpvx3gRg4CVK17XsCYyphNBpbfdnAjBwGs1p0RMmW0V5cFYPltAzdyENBq3Wiaxd4oy/Hy2wJu5CDg1XrVNJMq+kZZjpjfILiRgwBY6yjDluR5DpnfELiRg4BY63XLjC5DAjdyEBBrnS6DBDdyEBBrnS6DBDdyEOBq3RxMLnqdweU3DG7kILDW44b5rcGNHATWetwwvzW4kYPAWo8b5rcGN3IQWOtxw/zW4EYOAms9bpjfGtzIQXBrnURGS7qhwI0cBNZ63DC/NbiRg8BajxvmtwY3chBY63HD/NbgRg4Caz1umN8a3MhBYK3HDfNbgxs5CKz1uGF+a3AjBwGp1o1h5SriHU4uz3Os/HaAGzkISLWeyua9GKXXIjcZVn47wI0cBKRaT1NtKDkhBMArf6Dy2wFu5CBA1nppsugbZTlofv3gRg4CYK1X3WbxN8pyyPyGwI0cBLxaB2qU5Yj5DYIbOQhotQ7VKMvx8tsCbuQggNW6p88/y2JuoIHltw3cyEGAqnXfgxipjLqJBpXfdnAjBwGp1j2NslRG3nGGlN8OcCMHAafWzcHkUB78x8lvJ7iRg8BajxvmtwY3chBY63HD/NbgRg4Caz1umN8a3MhBYK3HDfNbgxs5CKz1uGF+a3AjB8GtdRIZLemGAjdyEJCLGxDkdONGDgJycQOCnG7cyEFALm5AkNONGzkIyMUNCHK6cSMHAbm4AUFON27kICAXNyDI6caNHATk4gYEOd24kYOAXNyAIKcbN3IQkIsbEOR040YOAnJxA4KcbtzIQUAubkCQ040bOQjIxQ0IcrpxIwcBubgBQU43buQg4BV3897/RQ3AVA3cOe34A3jpbsCNHIS9FPcbKS6W4Y3aGEvUWWFZumwicCMHActlqSxNUTttSTKjyyYFN3IQsFymsQdxDIUumxTcyEHAdtlo3jCuXeu2njEkZzm1aRGq8rf6IDSXNdsr5/o2VU+UafFbdyOTLiPRMl1xp/KFEL4f+WaiPQ4hlSNeYBbmKayTqcTQj0ztAdOzxmHmDLNdpg+pHtpUbbjCZnRZG7iRgwDaLut35g/aXMv1YWkv02UhMyUqy/NUBg7Pu6n+zUu6jEQLossylYzfKxV61EO7+uzpsiR0W6J1U/2gy0i04LmsuQjM8zxTaswDK92kX2QmKhvWLhMyrVm1pIIAAAaySURBVK1l9ry1bqofdBmJFjSXGX3ogy7PWmj0qPWcNZ6xzNTDZbmpxeCmzPV7QJeRaIEqbltkgzTQQqaklPX1n9Z5X01Q9Q1H/UKxvpoUicr0O6Ey1Q+1uUdgbUrfQ08jQ6XbAjdyEJCLGxDkdONGDgJycQOCnG7cyEFALm5AkNONGzkIyMUNCHK6cSMHAbm4AUFON27kICAXNyDI6caNHATk4gYEOd24kYOAXNyAIKcbN3IQkIsbEOR040YOAnJxA4KcbtzIQUAubkCQ040bOQjIxQ0IcrpxIwcBubgBQU43buQgIBc3IMjpxo0cBOTiBgQ53biRg4Bc3IAgpxs3chCQixsQ5HTjRg4CcnEDgpxu3MhBQC5uQJDTjRs5CMjFDQhyunEjBwG5uAFBTjdu5CAAFndoVN6pqUdaGr7b+pB3PWLAdNfgRg7CXop7ueNjzmKzbXY6eCRMP3QZiRYsl2UqMUfJ3a/MdnDZDqvq0GUkWrBcplHIbJRhy3tDl80JbuQggLqsMNlwM2h9XmXLLlFZPbUxo3EpW++mFpK2btvyzfSkHBe9maWNc15MtAY+z5195DldRiJmuuJO5QshfD/yzUR77Il90m+5tkzrXxOVGc28xpRmN5djwo7lm+nVmsaGig+prLdjNd4ypezw6DISLaDtsu3vDGq+KH9NVBbsmzfton3qsbyxrvHBaFXqXjOunFPlXkDTZSRaUF2Wb9tj1t9lzlVgh8vs5YMu0xuWFVUYxbxEZV6V0WUkXoBdVpz3k7TLUimMnrQul3mX1zfva5f5LVzJTPlURpeReIFymemATCXb95e1uaxZxNvN5bgstLzuL19Hmh6Jc1PAHxldRqIFq7iN24XbPI+hXwdK6flVF5sQiVLNc2zaukmSdC9vHHC1Rn3QeihWJKkMNjex0m2CGzkIyMUNCHK6cSMHAbm4AUFON27kICAXNyDI6caNHATk4gYEOd24kYOAXNyAIKcbN3IQkIsbEOR040YOAnJxA4KcbtzIQUAubkCQ040bOQjIxQ0IcrpxIwcBubgBQU43buQgIBc3IMjpxo0cBOTiBgQ53biRg4Bc3IAgpxs3chCQixsQ5HTjRg4CcnEDgpxu3MhBQC5uQJDTjRs5CMjFDQhyunEjBwG5uAFBTjdu5CAgFzcgyOnGjRwE5OIGBDnduJGDgFzcgCCnGzdyEICLO1PJVmMxrRngdNNlsbOX4l7K+Jg6241avnboMhItoC6rRpeky3DAjRwESJelsho7ly7DATdyEABdlkoh03IQ8elcpo0rLlU1YnmisrGmb3dUdBmJlumKO5UvhPD9yDcT7bHnYQmZFh3/U7fL9H2kqtnTWNO3gC4j0YLVLstUUtprHy7LtdaZTCeZPhS6jEQLlMuy6hpNZ1qdlbt0FDTW9IHQZSRa6LKJm2ZVi8q20FjTh0GXkWiBcpnGfq4xi865UkOahcaaPhi6jEQLanHv7T5molRzJ1K7L7nr9O2OCjXdeU6XRQ9ycQOCnG7cyEFALm5AkNONGzkIyMUNCHK6cSMHAbm4AUFON27kICAXNyDI6caNHATk4gYEOd24kYOAXNyAIKcbN3IQkIsbEOR040YOAnJxA4KcbtzIQUAubkCQ040bOQjIxQ0IcrpxIwcBubgBQU43buQgIBc3IMjpxo0cBOTiBgQ53biRg4Bc3IAgpxs3chCQixsQ5HTjRg4CcnEDgpxu3MhBQC5uQJDTjRs5CMjFDQhyunEjBwG5uAFBTjdu5CAgFzcgyOnGjRwEwOJOm/GMdh9wcmUAprsGN3IQ8MbHNFU28QCZS4MuI9GC5rJMJVANMQu6jEQLmMvKIX4BW2QFdBmJFiyXaSqbqbMstQYfLz8nSeKfPrJw6TISLdMVdypfCOH7kW8m2mM3WVaqoZHa/ptnhaaa/aaq+DU0fUzoMhItWO0yk0IeM3Sf6TtOZXMAoenjQZeRaEF2WSGPOW4FFM3CRGVW4ys0fTToMhIt8C6b6a5meUGZqLTf9JGgy0i0YLms7FGv/DXNddyQQ3H3P+2FL11GogWsuM0HZWd90ixTife+Q2j6KICl2wA3chCQi3tmQl1iE3WV5XmOnW7cyEFALu5ZSGXRu29f34amjwtyunEjBwG5uGeherLNNlZo+rggpxs3chCQixsQ5HTjRg4CcnEDgpxu3MhBQC5uQJDTjRs5CMjFDQhyunEjBwG5uAFBTjdu5CAgFzcgyOnGjRwE5OIGBDnduJGDgFzcgCCnGzdyEJCLGxDkdONGDoIgYMxdcbPx/27khEEhAH7qAAAAAElFTkSuQmCC)
<%@ Page Language="C#" AutoEventWireup="true" CodeFile="Default.aspx.cs" Inherits="_Default" Transaction="Supported" %>
<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
<html xmlns="http://www.w3.org/1999/xhtml">
<head runat="server">
<title></title>
</head>
<body>
<form id="form1" runat="server">
<asp:ScriptManager ID="sm" runat="server"></asp:ScriptManager>
<div>
<asp:UpdatePanel ID="up" runat="server">
<ContentTemplate>
<table align="center">
<tr><td>EID</td><td><asp:TextBox ID="tb" runat="server"></asp:TextBox></td></tr>
<tr><td>NAME</td><td><asp:TextBox ID="tb1" runat="server"></asp:TextBox></td></tr>
<tr><td>DEPARTMENT NAME</td><td><asp:DropDownList ID="ddl" runat="server"></asp:DropDownList> <asp:Button
ID="btn" runat="server" Text="Add More" onclick="btn_Click" /></td></tr>
<tr><td> </td><td><asp:GridView ID="gv" runat="server" DataKeyNames="did"
AutoGenerateColumns="false" onrowcancelingedit="gv_RowCancelingEdit"
onrowdeleting="gv_RowDeleting" onrowediting="gv_RowEditing"
onrowupdating="gv_RowUpdating" >
<Columns>
<asp:CommandField HeaderText="UPDATE" ShowEditButton="True" ShowHeader="True" />
<asp:CommandField HeaderText="DELETE" ShowDeleteButton="True" ShowHeader="True" />
<asp:BoundField HeaderText="DID" DataField="DID" ReadOnly="true" />
<asp:TemplateField HeaderText="DNAME">
<ItemTemplate>
<asp:Label ID="lb" runat="server" Text='<%#Eval("dname") %>'></asp:Label>
</ItemTemplate>
<EditItemTemplate>
<asp:DropDownList ID="ddl1" runat="server"></asp:DropDownList>
</EditItemTemplate>
</asp:TemplateField>
</Columns>
</asp:GridView></td></tr>
<tr><td> </td><td><asp:Button ID="btn1" runat="server" Text="Save" Width="80"
onclick="btn1_Click" /></td></tr>
<tr><td> </td><td>
<asp:GridView ID="gv1" runat="server" AutoGenerateColumns="false"
onselectedindexchanging="gv1_SelectedIndexChanging">
<Columns>
<asp:TemplateField>
<HeaderTemplate>
<table>
<tr><td>SELECT</td><td>EID</td><td>NAME</td></tr>
</HeaderTemplate>
<ItemTemplate>
<tr><td><asp:LinkButton ID="lbtn" runat="server" Font-Underline="false" Text="+" CommandName="select" CommandArgument='<%#Eval("id") %>'></asp:LinkButton></td><td><%#Eval("id") %></td><td><%#Eval("name") %></td></tr>
<tr><td colspan="3">
<asp:GridView ID="gv2" runat="server" Width="100%" Visible="false"></asp:GridView>
</td></tr>
</ItemTemplate>
<FooterTemplate>
</table>
</FooterTemplate>
</asp:TemplateField>
</Columns>
</asp:GridView>
</td></tr>
</table>
</ContentTemplate>
</asp:UpdatePanel>
</div>
</form>
</body>
</html>
c# code
using System;
using System.Collections.Generic;
using System.Linq;
using System.Web;
using System.Web.UI;
using System.Web.UI.WebControls;
using TestModel;
using System.Data;
using System.Data.SqlClient;
using System.Configuration;
public partial class _Default : System.Web.UI.Page
{
#region
TestEntities te = new TestEntities();
DataTable dt = new DataTable();
SqlConnection cn;
SqlCommand cm;
SqlTransaction st;
#endregion
protected void Page_Load(object sender, EventArgs e)
{
if (!IsPostBack)
{
List<DEPT1> p = new List<DEPT1>();
DEPT1 o = new DEPT1();
o.DID = 0;
o.DNAME = "Select";
p.Add(o);
ddl.DataSource = p.Union(te.DEPT1);
ddl.DataTextField = "dname";
ddl.DataValueField = "did";
ddl.DataBind();
fill();
ViewState["i"] = 0;
}
}
protected void btn_Click(object sender, EventArgs e)
{
dt.Columns.Add("DID", typeof(string));
dt.Columns.Add("DNAME", typeof(string));
DataRow dr;
dr = dt.NewRow();
dr[0] = ddl.SelectedValue.ToString();
dr[1] = ddl.SelectedItem.Text;
dt.Rows.Add(dr);
foreach (GridViewRow gvr in gv.Rows)
{
dr = dt.NewRow();
dr[0] = gvr.Cells[2].Text;
dr[1] = ((Label)gvr.Cells[3].FindControl("lb")).Text;
dt.Rows.Add(dr);
}
gv.DataSource = dt;
gv.DataBind();
ViewState["dt"] = dt;
}
protected void gv_RowCancelingEdit(object sender, GridViewCancelEditEventArgs e)
{
gv.EditIndex = -1;
gv.DataSource = (DataTable)ViewState["dt"];
gv.DataBind();
}
protected void gv_RowEditing(object sender, GridViewEditEventArgs e)
{
gv.EditIndex = e.NewEditIndex;
gv.DataSource = (DataTable)ViewState["dt"];
gv.DataBind();
List<DEPT1> p = new List<DEPT1>();
DEPT1 o = new DEPT1();
o.DID = 0;
o.DNAME = "Select";
p.Add(o);
((DropDownList)gv.Rows[e.NewEditIndex].Cells[3].FindControl("ddl1")).DataSource = p.Union(te.DEPT1);
((DropDownList)gv.Rows[e.NewEditIndex].Cells[3].FindControl("ddl1")).DataTextField = "dname";
((DropDownList)gv.Rows[e.NewEditIndex].Cells[3].FindControl("ddl1")).DataValueField = "did";
((DropDownList)gv.Rows[e.NewEditIndex].Cells[3].FindControl("ddl1")).DataBind();
((DropDownList)gv.Rows[e.NewEditIndex].Cells[3].FindControl("ddl1")).SelectedValue = Convert.ToInt32(gv.DataKeys[e.NewEditIndex].Value).ToString();
}
protected void gv_RowUpdating(object sender, GridViewUpdateEventArgs e)
{
((DataTable)ViewState["dt"]).Rows[e.RowIndex][0] = ((DropDownList)gv.Rows[e.RowIndex].Cells[3].FindControl("ddl1")).SelectedValue;
((DataTable)ViewState["dt"]).Rows[e.RowIndex][1] = ((DropDownList)gv.Rows[e.RowIndex].Cells[3].FindControl("ddl1")).SelectedItem.Text;
ViewState["dt"] = ((DataTable)ViewState["dt"]);
gv.EditIndex = -1;
gv.DataSource = (DataTable)ViewState["dt"];
gv.DataBind();
}
protected void gv_RowDeleting(object sender, GridViewDeleteEventArgs e)
{
((DataTable)ViewState["dt"]).Rows.RemoveAt(e.RowIndex);
ViewState["dt"] = ((DataTable)ViewState["dt"]);
gv.DataSource = (DataTable)ViewState["dt"];
gv.DataBind();
}
void fill()
{
gv1.DataSource = te.EMPs.ToList();
gv1.DataBind();
}
protected void btn1_Click(object sender, EventArgs e)
{
try
{
cn = new SqlConnection("server=SWASH-DBS\\SWASHSQLINT;database=test;uid=ken;pwd=kc@2011");
cn.Open();
st = cn.BeginTransaction();
cm = new SqlCommand("insert into emp values(" + tb.Text + ",'" + tb1.Text + "')", cn);
cm.Transaction = st;
cm.ExecuteNonQuery();
for (int i = 0; i < gv.Rows.Count; i++)
{
cm = new SqlCommand("insert into empdetails(eid,did) values(" + tb.Text + "," + gv.Rows[i].Cells[2].Text + ")", cn);
cm.Transaction = st;
cm.ExecuteNonQuery();
}
st.Commit();
ScriptManager.RegisterStartupScript(this, GetType(), "x", "alert('One record saved.')", true);
fill();
}
catch (Exception ex)
{
ScriptManager.RegisterStartupScript(this, GetType(), "x", "alert('" + ex.Message + "')", true); ;
st.Rollback();
}
}
protected void gv1_SelectedIndexChanging(object sender, GridViewSelectEventArgs e)
{
if (Convert.ToInt32(ViewState["i"]) == 0)
{
int j = 0;
j = Convert.ToInt32(((LinkButton)gv1.Rows[e.NewSelectedIndex].FindControl("lbtn")).CommandArgument);
var m = (from x in te.EMPDETAILS
join y in te.DEPT1
on x.DID equals y.DID
where x.EID == j
select new { y.DNAME }).ToList();
((GridView)gv1.Rows[e.NewSelectedIndex].FindControl("gv2")).Visible = true;
((GridView)gv1.Rows[e.NewSelectedIndex].FindControl("gv2")).DataSource = m;
((GridView)gv1.Rows[e.NewSelectedIndex].FindControl("gv2")).DataBind();
((LinkButton)gv1.Rows[e.NewSelectedIndex].FindControl("lbtn")).Text = "-";
ViewState["i"] = 1;
}
else
{
((LinkButton)gv1.Rows[e.NewSelectedIndex].FindControl("lbtn")).Text = "+";
((GridView)gv1.Rows[e.NewSelectedIndex].FindControl("gv2")).Visible = false;
ViewState["i"] = 0;
}
}
}
<%@ Page Language="C#" AutoEventWireup="true" CodeFile="Default.aspx.cs" Inherits="_Default" Transaction="Supported" %>
<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
<html xmlns="http://www.w3.org/1999/xhtml">
<head runat="server">
<title></title>
</head>
<body>
<form id="form1" runat="server">
<asp:ScriptManager ID="sm" runat="server"></asp:ScriptManager>
<div>
<asp:UpdatePanel ID="up" runat="server">
<ContentTemplate>
<table align="center">
<tr><td>EID</td><td><asp:TextBox ID="tb" runat="server"></asp:TextBox></td></tr>
<tr><td>NAME</td><td><asp:TextBox ID="tb1" runat="server"></asp:TextBox></td></tr>
<tr><td>DEPARTMENT NAME</td><td><asp:DropDownList ID="ddl" runat="server"></asp:DropDownList> <asp:Button
ID="btn" runat="server" Text="Add More" onclick="btn_Click" /></td></tr>
<tr><td> </td><td><asp:GridView ID="gv" runat="server" DataKeyNames="did"
AutoGenerateColumns="false" onrowcancelingedit="gv_RowCancelingEdit"
onrowdeleting="gv_RowDeleting" onrowediting="gv_RowEditing"
onrowupdating="gv_RowUpdating" >
<Columns>
<asp:CommandField HeaderText="UPDATE" ShowEditButton="True" ShowHeader="True" />
<asp:CommandField HeaderText="DELETE" ShowDeleteButton="True" ShowHeader="True" />
<asp:BoundField HeaderText="DID" DataField="DID" ReadOnly="true" />
<asp:TemplateField HeaderText="DNAME">
<ItemTemplate>
<asp:Label ID="lb" runat="server" Text='<%#Eval("dname") %>'></asp:Label>
</ItemTemplate>
<EditItemTemplate>
<asp:DropDownList ID="ddl1" runat="server"></asp:DropDownList>
</EditItemTemplate>
</asp:TemplateField>
</Columns>
</asp:GridView></td></tr>
<tr><td> </td><td><asp:Button ID="btn1" runat="server" Text="Save" Width="80"
onclick="btn1_Click" /></td></tr>
<tr><td> </td><td>
<asp:GridView ID="gv1" runat="server" AutoGenerateColumns="false"
onselectedindexchanging="gv1_SelectedIndexChanging">
<Columns>
<asp:TemplateField>
<HeaderTemplate>
<table>
<tr><td>SELECT</td><td>EID</td><td>NAME</td></tr>
</HeaderTemplate>
<ItemTemplate>
<tr><td><asp:LinkButton ID="lbtn" runat="server" Font-Underline="false" Text="+" CommandName="select" CommandArgument='<%#Eval("id") %>'></asp:LinkButton></td><td><%#Eval("id") %></td><td><%#Eval("name") %></td></tr>
<tr><td colspan="3">
<asp:GridView ID="gv2" runat="server" Width="100%" Visible="false"></asp:GridView>
</td></tr>
</ItemTemplate>
<FooterTemplate>
</table>
</FooterTemplate>
</asp:TemplateField>
</Columns>
</asp:GridView>
</td></tr>
</table>
</ContentTemplate>
</asp:UpdatePanel>
</div>
</form>
</body>
</html>
c# code
using System;
using System.Collections.Generic;
using System.Linq;
using System.Web;
using System.Web.UI;
using System.Web.UI.WebControls;
using TestModel;
using System.Data;
using System.Data.SqlClient;
using System.Configuration;
public partial class _Default : System.Web.UI.Page
{
#region
TestEntities te = new TestEntities();
DataTable dt = new DataTable();
SqlConnection cn;
SqlCommand cm;
SqlTransaction st;
#endregion
protected void Page_Load(object sender, EventArgs e)
{
if (!IsPostBack)
{
List<DEPT1> p = new List<DEPT1>();
DEPT1 o = new DEPT1();
o.DID = 0;
o.DNAME = "Select";
p.Add(o);
ddl.DataSource = p.Union(te.DEPT1);
ddl.DataTextField = "dname";
ddl.DataValueField = "did";
ddl.DataBind();
fill();
ViewState["i"] = 0;
}
}
protected void btn_Click(object sender, EventArgs e)
{
dt.Columns.Add("DID", typeof(string));
dt.Columns.Add("DNAME", typeof(string));
DataRow dr;
dr = dt.NewRow();
dr[0] = ddl.SelectedValue.ToString();
dr[1] = ddl.SelectedItem.Text;
dt.Rows.Add(dr);
foreach (GridViewRow gvr in gv.Rows)
{
dr = dt.NewRow();
dr[0] = gvr.Cells[2].Text;
dr[1] = ((Label)gvr.Cells[3].FindControl("lb")).Text;
dt.Rows.Add(dr);
}
gv.DataSource = dt;
gv.DataBind();
ViewState["dt"] = dt;
}
protected void gv_RowCancelingEdit(object sender, GridViewCancelEditEventArgs e)
{
gv.EditIndex = -1;
gv.DataSource = (DataTable)ViewState["dt"];
gv.DataBind();
}
protected void gv_RowEditing(object sender, GridViewEditEventArgs e)
{
gv.EditIndex = e.NewEditIndex;
gv.DataSource = (DataTable)ViewState["dt"];
gv.DataBind();
List<DEPT1> p = new List<DEPT1>();
DEPT1 o = new DEPT1();
o.DID = 0;
o.DNAME = "Select";
p.Add(o);
((DropDownList)gv.Rows[e.NewEditIndex].Cells[3].FindControl("ddl1")).DataSource = p.Union(te.DEPT1);
((DropDownList)gv.Rows[e.NewEditIndex].Cells[3].FindControl("ddl1")).DataTextField = "dname";
((DropDownList)gv.Rows[e.NewEditIndex].Cells[3].FindControl("ddl1")).DataValueField = "did";
((DropDownList)gv.Rows[e.NewEditIndex].Cells[3].FindControl("ddl1")).DataBind();
((DropDownList)gv.Rows[e.NewEditIndex].Cells[3].FindControl("ddl1")).SelectedValue = Convert.ToInt32(gv.DataKeys[e.NewEditIndex].Value).ToString();
}
protected void gv_RowUpdating(object sender, GridViewUpdateEventArgs e)
{
((DataTable)ViewState["dt"]).Rows[e.RowIndex][0] = ((DropDownList)gv.Rows[e.RowIndex].Cells[3].FindControl("ddl1")).SelectedValue;
((DataTable)ViewState["dt"]).Rows[e.RowIndex][1] = ((DropDownList)gv.Rows[e.RowIndex].Cells[3].FindControl("ddl1")).SelectedItem.Text;
ViewState["dt"] = ((DataTable)ViewState["dt"]);
gv.EditIndex = -1;
gv.DataSource = (DataTable)ViewState["dt"];
gv.DataBind();
}
protected void gv_RowDeleting(object sender, GridViewDeleteEventArgs e)
{
((DataTable)ViewState["dt"]).Rows.RemoveAt(e.RowIndex);
ViewState["dt"] = ((DataTable)ViewState["dt"]);
gv.DataSource = (DataTable)ViewState["dt"];
gv.DataBind();
}
void fill()
{
gv1.DataSource = te.EMPs.ToList();
gv1.DataBind();
}
protected void btn1_Click(object sender, EventArgs e)
{
try
{
cn = new SqlConnection("server=SWASH-DBS\\SWASHSQLINT;database=test;uid=ken;pwd=kc@2011");
cn.Open();
st = cn.BeginTransaction();
cm = new SqlCommand("insert into emp values(" + tb.Text + ",'" + tb1.Text + "')", cn);
cm.Transaction = st;
cm.ExecuteNonQuery();
for (int i = 0; i < gv.Rows.Count; i++)
{
cm = new SqlCommand("insert into empdetails(eid,did) values(" + tb.Text + "," + gv.Rows[i].Cells[2].Text + ")", cn);
cm.Transaction = st;
cm.ExecuteNonQuery();
}
st.Commit();
ScriptManager.RegisterStartupScript(this, GetType(), "x", "alert('One record saved.')", true);
fill();
}
catch (Exception ex)
{
ScriptManager.RegisterStartupScript(this, GetType(), "x", "alert('" + ex.Message + "')", true); ;
st.Rollback();
}
}
protected void gv1_SelectedIndexChanging(object sender, GridViewSelectEventArgs e)
{
if (Convert.ToInt32(ViewState["i"]) == 0)
{
int j = 0;
j = Convert.ToInt32(((LinkButton)gv1.Rows[e.NewSelectedIndex].FindControl("lbtn")).CommandArgument);
var m = (from x in te.EMPDETAILS
join y in te.DEPT1
on x.DID equals y.DID
where x.EID == j
select new { y.DNAME }).ToList();
((GridView)gv1.Rows[e.NewSelectedIndex].FindControl("gv2")).Visible = true;
((GridView)gv1.Rows[e.NewSelectedIndex].FindControl("gv2")).DataSource = m;
((GridView)gv1.Rows[e.NewSelectedIndex].FindControl("gv2")).DataBind();
((LinkButton)gv1.Rows[e.NewSelectedIndex].FindControl("lbtn")).Text = "-";
ViewState["i"] = 1;
}
else
{
((LinkButton)gv1.Rows[e.NewSelectedIndex].FindControl("lbtn")).Text = "+";
((GridView)gv1.Rows[e.NewSelectedIndex].FindControl("gv2")).Visible = false;
ViewState["i"] = 0;
}
}
}
No comments:
Post a Comment