From e4c3e2e1f445b1635f257e98cd756465ed388755 Mon Sep 17 00:00:00 2001 From: Daniel Schubert Date: Wed, 1 Feb 2017 23:20:47 +0100 Subject: [PATCH] prooduction version 1 --- .gitignore | 5 + VinylDownload.class.php | 404 ++++++++++++++++ code-gen.rb | 66 +++ includes/js/ajax.js | 29 ++ includes/options.php | 140 ++++++ unique-codes.csv | 1000 +++++++++++++++++++++++++++++++++++++++ unique-codes.ods | Bin 0 -> 47463 bytes unique-codes.txt | 1000 +++++++++++++++++++++++++++++++++++++++ vinyl-downloader.php | 56 +++ 9 files changed, 2700 insertions(+) create mode 100644 .gitignore create mode 100644 VinylDownload.class.php create mode 100644 code-gen.rb create mode 100644 includes/js/ajax.js create mode 100644 includes/options.php create mode 100644 unique-codes.csv create mode 100644 unique-codes.ods create mode 100644 unique-codes.txt create mode 100644 vinyl-downloader.php diff --git a/.gitignore b/.gitignore new file mode 100644 index 0000000..fa3b424 --- /dev/null +++ b/.gitignore @@ -0,0 +1,5 @@ +*zip +*bak +*old +/file/* + diff --git a/VinylDownload.class.php b/VinylDownload.class.php new file mode 100644 index 0000000..3698292 --- /dev/null +++ b/VinylDownload.class.php @@ -0,0 +1,404 @@ +database ); + if (!$db) die ($error); + return $db; + } + + public function query_code($code) { + $db = $this->db_connect(); + + $c = SQLite3::escapeString ( $code ) ; + $q = "SELECT * FROM '" . self::TABLE . "' WHERE code='" . $c . "'" ; + + $result = @$db->query( $q ); + $row = @$result->fetchArray(); + + $db->close(); + + // row == false when no row was found + return $row; + } + + + private function increase_count_in_db() { + $db = @$this->db_connect(); + $db->exec( "UPDATE '" . self::TABLE . "' SET count = count + 1 WHERE code='" . $this->code . "'" ); + $db->close(); + } + + public function reached_max_dl( $count ) { + $max = false; + $count += 1; + + if ( $count > self::MAXDOWNLOADS ) $max = true; + + return $max; + } + + + public function gen_response( $c , $f ){ + + $this->code = $c; + $content = "Code ungültig oder abgelaufen."; + + // row == false when no row was found + if ( $row = $this->query_code($this->code) ) { + // max count not reached + if ( false === $this->reached_max_dl( $row['count'] ) ) { + $content =' + +
+

+ + + +

+
+ + + '; + } + } + + return $content; + } + + + public function dl_trigger($format) { + // Start Download + switch ($format) { + case 'mp3': + $file = $this->mp3_file; + $filename = 'Rainer_von_Vielen-Überall_Chaos_2017-MP3.zip'; + break; + case 'wav': + $file = $this->wav_file; + $filename = 'Rainer_von_Vielen-Überall_Chaos_2017-WAV.zip'; + break; + } + + $this->downloader( $file, $filename ); + $this->increase_count_in_db(); + } + + + private function downloader( $file, $filename ){ + // Force the browser to start the download automatically + + // Variables: + // $file = real name of actual download file on the server + // $filename = new name of local download file - this is what the visitor's file will actually be called when he/she saves it + + ob_start(); + + $mm_type='application/zip'; + + header("Content-Type: ".$mm_type); + header('Content-Disposition: attachment; filename="'.$filename.'"'); + header("Content-Description: File Transfer"); + header("Content-Length: " .(string)(filesize($file)) ); + header("Cache-Control: public, must-revalidate"); + header("Pragma: public"); + header("Content-Transfer-Encoding: binary\n"); + + ob_end_clean(); + readfile($file); + } + + +/* +* Nicht benoetigt:: +*/ + + private function downloader_large_file( $filePath ) + { + if(!empty($filePath)){ + + $fileInfo = pathinfo($filePath); + $fileName = $fileInfo['basename']; + $fileExtnesion = $fileInfo['extension']; + $default_contentType = "application/octet-stream"; + $content_types_list = $this->mimeTypes(); + + // to find and use specific content type, check out this IANA page : http://www.iana.org/assignments/media-types/media-types.xhtml + + if (array_key_exists($fileExtnesion, $content_types_list)) { + $contentType = $content_types_list[$fileExtnesion]; + } else { + $contentType = $default_contentType; + } + + if (file_exists($filePath)) { + $size = filesize($filePath); + $offset = 0; + $length = $size; + //HEADERS FOR PARTIAL DOWNLOAD FACILITY BEGINS + + if ( isset( $_SERVER['HTTP_RANGE'] ) ) { + preg_match('/bytes=(\d+)-(\d+)?/', $_SERVER['HTTP_RANGE'], $matches); + $offset = intval($matches[1]); + $length = intval($matches[2]) - $offset; + $fhandle = fopen($filePath, 'r'); + fseek($fhandle, $offset); // seek to the requested offset, this is 0 if it's not a partial content request + $data = fread($fhandle, $length); + fclose($fhandle); + header('HTTP/1.1 206 Partial Content'); + header('Content-Range: bytes ' . $offset . '-' . ($offset + $length) . '/' . $size); + }//HEADERS FOR PARTIAL DOWNLOAD FACILITY BEGINS + + //USUAL HEADERS FOR DOWNLOAD + header("Content-Disposition: attachment;filename=".$fileName); + header('Content-Type: '.$contentType); + header("Accept-Ranges: bytes"); + header("Pragma: public"); + header("Expires: -1"); + header("Cache-Control: no-cache"); + header("Cache-Control: public, must-revalidate, post-check=0, pre-check=0"); + header("Content-Length: ".filesize($filePath)); + + $chunksize = 8 * (1024 * 1024); //8MB (highest possible fread length) + + if ($size > $chunksize){ + $handle = fopen($_FILES["file"]["tmp_name"], 'rb'); + $buffer = ''; + while (!feof($handle) && (connection_status() === CONNECTION_NORMAL)) + { + $buffer = fread($handle, $chunksize); + print $buffer; + ob_flush(); + flush(); + } + if(connection_status() !== CONNECTION_NORMAL){ + echo "Connection aborted"; + } + fclose($handle); + + } else { + ob_clean(); + flush(); + readfile($filePath); + } + + } else { + echo 'File does not exist!'; + } + + } else { + echo 'There is no file to download!'; + } + } + + + /* Function to get correct MIME type for download */ + private function mimeTypes( $defaultType = null ) + { + /* Just add any required MIME type if you are going to download something not listed here.*/ + $mime_types = array("323" => "text/h323", + "acx" => "application/internet-property-stream", + "ai" => "application/postscript", + "aif" => "audio/x-aiff", + "aifc" => "audio/x-aiff", + "aiff" => "audio/x-aiff", + "asf" => "video/x-ms-asf", + "asr" => "video/x-ms-asf", + "asx" => "video/x-ms-asf", + "au" => "audio/basic", + "avi" => "video/x-msvideo", + "axs" => "application/olescript", + "bas" => "text/plain", + "bcpio" => "application/x-bcpio", + "bin" => "application/octet-stream", + "bmp" => "image/bmp", + "c" => "text/plain", + "cat" => "application/vnd.ms-pkiseccat", + "cdf" => "application/x-cdf", + "cer" => "application/x-x509-ca-cert", + "class" => "application/octet-stream", + "clp" => "application/x-msclip", + "cmx" => "image/x-cmx", + "cod" => "image/cis-cod", + "cpio" => "application/x-cpio", + "crd" => "application/x-mscardfile", + "crl" => "application/pkix-crl", + "crt" => "application/x-x509-ca-cert", + "csh" => "application/x-csh", + "css" => "text/css", + "dcr" => "application/x-director", + "der" => "application/x-x509-ca-cert", + "dir" => "application/x-director", + "dll" => "application/x-msdownload", + "dms" => "application/octet-stream", + "doc" => "application/msword", + "dot" => "application/msword", + "dvi" => "application/x-dvi", + "dxr" => "application/x-director", + "eps" => "application/postscript", + "etx" => "text/x-setext", + "evy" => "application/envoy", + "exe" => "application/octet-stream", + "fif" => "application/fractals", + "flr" => "x-world/x-vrml", + "gif" => "image/gif", + "gtar" => "application/x-gtar", + "gz" => "application/x-gzip", + "h" => "text/plain", + "hdf" => "application/x-hdf", + "hlp" => "application/winhlp", + "hqx" => "application/mac-binhex40", + "hta" => "application/hta", + "htc" => "text/x-component", + "htm" => "text/html", + "html" => "text/html", + "htt" => "text/webviewhtml", + "ico" => "image/x-icon", + "ief" => "image/ief", + "iii" => "application/x-iphone", + "ins" => "application/x-internet-signup", + "isp" => "application/x-internet-signup", + "jfif" => "image/pipeg", + "jpe" => "image/jpeg", + "jpeg" => "image/jpeg", + "jpg" => "image/jpeg", + "js" => "application/x-javascript", + "latex" => "application/x-latex", + "lha" => "application/octet-stream", + "lsf" => "video/x-la-asf", + "lsx" => "video/x-la-asf", + "lzh" => "application/octet-stream", + "m13" => "application/x-msmediaview", + "m14" => "application/x-msmediaview", + "m3u" => "audio/x-mpegurl", + "man" => "application/x-troff-man", + "mdb" => "application/x-msaccess", + "me" => "application/x-troff-me", + "mht" => "message/rfc822", + "mhtml" => "message/rfc822", + "mid" => "audio/mid", + "mny" => "application/x-msmoney", + "mov" => "video/quicktime", + "movie" => "video/x-sgi-movie", + "mp2" => "video/mpeg", + "mp3" => "audio/mpeg", + "mpa" => "video/mpeg", + "mpe" => "video/mpeg", + "mpeg" => "video/mpeg", + "mpg" => "video/mpeg", + "mpp" => "application/vnd.ms-project", + "mpv2" => "video/mpeg", + "ms" => "application/x-troff-ms", + "mvb" => "application/x-msmediaview", + "nws" => "message/rfc822", + "oda" => "application/oda", + "p10" => "application/pkcs10", + "p12" => "application/x-pkcs12", + "p7b" => "application/x-pkcs7-certificates", + "p7c" => "application/x-pkcs7-mime", + "p7m" => "application/x-pkcs7-mime", + "p7r" => "application/x-pkcs7-certreqresp", + "p7s" => "application/x-pkcs7-signature", + "pbm" => "image/x-portable-bitmap", + "pdf" => "application/pdf", + "pfx" => "application/x-pkcs12", + "pgm" => "image/x-portable-graymap", + "pko" => "application/ynd.ms-pkipko", + "pma" => "application/x-perfmon", + "pmc" => "application/x-perfmon", + "pml" => "application/x-perfmon", + "pmr" => "application/x-perfmon", + "pmw" => "application/x-perfmon", + "pnm" => "image/x-portable-anymap", + "pot" => "application/vnd.ms-powerpoint", + "ppm" => "image/x-portable-pixmap", + "pps" => "application/vnd.ms-powerpoint", + "ppt" => "application/vnd.ms-powerpoint", + "prf" => "application/pics-rules", + "ps" => "application/postscript", + "pub" => "application/x-mspublisher", + "qt" => "video/quicktime", + "ra" => "audio/x-pn-realaudio", + "ram" => "audio/x-pn-realaudio", + "ras" => "image/x-cmu-raster", + "rgb" => "image/x-rgb", + "rmi" => "audio/mid", + "roff" => "application/x-troff", + "rtf" => "application/rtf", + "rtx" => "text/richtext", + "scd" => "application/x-msschedule", + "sct" => "text/scriptlet", + "setpay" => "application/set-payment-initiation", + "setreg" => "application/set-registration-initiation", + "sh" => "application/x-sh", + "shar" => "application/x-shar", + "sit" => "application/x-stuffit", + "snd" => "audio/basic", + "spc" => "application/x-pkcs7-certificates", + "spl" => "application/futuresplash", + "src" => "application/x-wais-source", + "sst" => "application/vnd.ms-pkicertstore", + "stl" => "application/vnd.ms-pkistl", + "stm" => "text/html", + "svg" => "image/svg+xml", + "sv4cpio" => "application/x-sv4cpio", + "sv4crc" => "application/x-sv4crc", + "t" => "application/x-troff", + "tar" => "application/x-tar", + "tcl" => "application/x-tcl", + "tex" => "application/x-tex", + "texi" => "application/x-texinfo", + "texinfo" => "application/x-texinfo", + "tgz" => "application/x-compressed", + "tif" => "image/tiff", + "tiff" => "image/tiff", + "tr" => "application/x-troff", + "trm" => "application/x-msterminal", + "tsv" => "text/tab-separated-values", + "txt" => "text/plain", + "uls" => "text/iuls", + "ustar" => "application/x-ustar", + "vcf" => "text/x-vcard", + "vrml" => "x-world/x-vrml", + "wav" => "audio/x-wav", + "wcm" => "application/vnd.ms-works", + "wdb" => "application/vnd.ms-works", + "wks" => "application/vnd.ms-works", + "wmf" => "application/x-msmetafile", + "wps" => "application/vnd.ms-works", + "wri" => "application/x-mswrite", + "wrl" => "x-world/x-vrml", + "wrz" => "x-world/x-vrml", + "xaf" => "x-world/x-vrml", + "xbm" => "image/x-xbitmap", + "xla" => "application/vnd.ms-excel", + "xlc" => "application/vnd.ms-excel", + "xlm" => "application/vnd.ms-excel", + "xls" => "application/vnd.ms-excel", + "xlt" => "application/vnd.ms-excel", + "xlw" => "application/vnd.ms-excel", + "xof" => "x-world/x-vrml", + "xpm" => "image/x-xpixmap", + "xwd" => "image/x-xwindowdump", + "z" => "application/x-compress", + "rar" => "application/x-rar-compressed", + "zip" => "application/zip"); + return $mime_types; + } +} + + +?> diff --git a/code-gen.rb b/code-gen.rb new file mode 100644 index 0000000..7d04fb3 --- /dev/null +++ b/code-gen.rb @@ -0,0 +1,66 @@ + +def generate_codes(length, count) + codes = Array.[] + + for i in 1..count do + codes.push([*('a'..'z'),*('0'..'9'),*('A'..'Z')].shuffle[0,length].join) + end + + return codes +end + + +def make_codes_uniq(count,codes, length) + codes.uniq! + if codes.count < count + puts "dup\n" + puts codes.count + count = count - codes.count + c = generate_codes(length, count) + + c.each{|elem| codes.push(elem)} + + make_codes_uniq(count, codes, length) + else + return codes + end +end + +def write_out(codes) + ## write the codes to csv and txt files + ["txt", "csv"].each do |f| + of = File.open("unique-codes." + f , "w") + out = Array.[] + + case f + when "txt" + codes.each {|c| out.push(c.chomp)} + when "csv" + ## creates line suited for the rvv-dl application database + id = 0 + codes.each {|c| + out.push("\"#{id}\";\"" + c.chomp + "\";\"\";\"\";\"" + Time.now.inspect + "\";\"" + Time.now.inspect + "\"" ) + id += 1 + } + end + + out.each { |l| of.puts l } + of.close + end +end + +def build_files() + ## how long shall the codes be + length = 8 + + ## how many codes do we need? + count = 1000 + + codes = generate_codes(length, count) + + ## make shure the codes are unique + codes = make_codes_uniq(count, codes, length) + write_out(codes) +end + +build_files() diff --git a/includes/js/ajax.js b/includes/js/ajax.js new file mode 100644 index 0000000..19497de --- /dev/null +++ b/includes/js/ajax.js @@ -0,0 +1,29 @@ +jQuery(document).ready(function($) { + + // Code submission + jQuery('#code_form').submit(function(e) { + e.preventDefault(); // this disables the submit button so the user stays on the page + + // Validation + if ( code.length < 8 ) { + jQuery('#resp').html('Code ist zu kurz!'); + } else { + + data = {'code' : $('input[name=code]').val(), + 'action' : 'submit_code', + 'format' : $('select[name=format]').val() + }; + + // ajax call + $.ajax({ + type: "POST", + dataType: "json", + url: frontendajax.ajaxurl, + data: data}) + .done(function(msg){ + jQuery('#resp').html(msg.resp); + }) + .fail( function(eins) { console.log("Fehler", eins);}); + } + }); +}); diff --git a/includes/options.php b/includes/options.php new file mode 100644 index 0000000..dec9612 --- /dev/null +++ b/includes/options.php @@ -0,0 +1,140 @@ +options = get_option( 'dlt_downloader' ); + ?> +
+

My Settings

+
+ +
+ Coded by Daniel Schubert www.schubertdaniel.de +
+ ', + isset( $this->options['downloader_zip_file'] ) ? esc_attr( $this->options['downloader_zip_file']) : '' + ); + } + + + public function downloader_sqlite_database_callback() + { + printf( + '', + isset( $this->options['downloader_sqlite_database'] ) ? esc_attr( $this->options['downloader_sqlite_database']) : '' + ); + } +} + +if( is_admin() ) + $dlt_downloader_settings_page = new DltDownloaderSettingsPage(); diff --git a/unique-codes.csv b/unique-codes.csv new file mode 100644 index 0000000..cc20759 --- /dev/null +++ b/unique-codes.csv @@ -0,0 +1,1000 @@ +0,CMXjyOp7,0 +1,EFGeqVO8,0 +2,Ke5iVkgI,0 +3,Kejus1t0,0 +4,fE0exnyw,0 +5,6YOPfxNJ,0 +6,H0tL1Moh,0 +7,s0TGjh24,0 +8,jsaFXn6d,0 +9,HCY6GrdW,0 +10,taUoGmZ8,0 +11,mjdWQDp9,0 +12,VrIElJNa,0 +13,cD2EwaQ8,0 +14,J8Kijsq0,0 +15,OCLa4MTm,0 +16,UirGoy7X,0 +17,hU71saDb,0 +18,QLSoMH20,0 +19,vxmaFzXg,0 +20,eAqYkupL,0 +21,1c3yXTCo,0 +22,U3PcMtjv,0 +23,m5AuOXZr,0 +24,1CfdvSYu,0 +25,DMLFPZGj,0 +26,ghjpS8LF,0 +27,ij0ts2gF,0 +28,07hRxjPY,0 +29,ZgOiaPxl,0 +30,6RePcMvD,0 +31,r729SMRt,0 +32,BaJUKV5L,0 +33,38hpyEtq,0 +34,BgZtjk2E,0 +35,DWLfr2Vm,0 +36,leExUGZu,0 +37,C506Knru,0 +38,6R5vU0iO,0 +39,ZYrfye1l,0 +40,kNGBRAzU,0 +41,AnORWPsi,0 +42,aG7oEsF4,0 +43,8SlR0vd3,0 +44,vmbB3dUw,0 +45,r3ycn2hB,0 +46,m6cBRnCT,0 +47,PB70keqT,0 +48,RMkiFd2C,0 +49,QrWgcbqR,0 +50,GQSN6hdn,0 +51,03F7bnpV,0 +52,vMFpVD09,0 +53,aAlZ24mq,0 +54,9Rjm7HLn,0 +55,waCgLZUc,0 +56,ixNPnJ1s,0 +57,qtyBSdKf,0 +58,G4oFbKDs,0 +59,WIqmCbw1,0 +60,gLjCZP5b,0 +61,07TMEqNL,0 +62,PgIBXN04,0 +63,wusJtn0d,0 +64,qnzObEpd,0 +65,ImzVJQvs,0 +66,50PeBOd7,0 +67,ozE87a0e,0 +68,j5yEw0UD,0 +69,Vmnf3Q6P,0 +70,EpncTOZ6,0 +71,xd2PhrOT,0 +72,iupRXmwv,0 +73,ZHnYi37A,0 +74,dAmjNnPt,0 +75,aWIGzh0Y,0 +76,Cda4ZYn6,0 +77,C0uH6Swi,0 +78,UmWx1ACu,0 +79,htyESX5F,0 +80,Bcxn0ZAH,0 +81,u2Cg1eiM,0 +82,2zmuWv3T,0 +83,Qehd6olp,0 +84,xKYGsajk,0 +85,3Q5psrkA,0 +86,txecomT1,0 +87,7lNAmCEr,0 +88,45OrhDl9,0 +89,YDUm3E85,0 +90,EKsyxIOB,0 +91,KkbSRUWn,0 +92,J4n5xdUF,0 +93,czWsBZD6,0 +94,W0eHxLfM,0 +95,OrZeuFMx,0 +96,rPWpkK20,0 +97,967P54Dn,0 +98,Lt8Bly1u,0 +99,kPvtAKHG,0 +100,9BRzEcYQ,0 +101,mVuXki1o,0 +102,eyNr5TuP,0 +103,NZpPexjq,0 +104,lPGayovL,0 +105,RzrPFh6m,0 +106,njoFKViJ,0 +107,SqmIsnP6,0 +108,QNMym1Je,0 +109,QsKwpexT,0 +110,dvOb5PIy,0 +111,khuj4piH,0 +112,Qz3wtslU,0 +113,42VuQpFa,0 +114,ma9Ce2hH,0 +115,pX6K1Ex5,0 +116,hX4AszP3,0 +117,oXK3a6ys,0 +118,IEu6Q9Fh,0 +119,TxXacumP,0 +120,hEDzUrBf,0 +121,Zb17CEnO,0 +122,vwM5EnzX,0 +123,Ucvy51AM,0 +124,wu3JWEsx,0 +125,saBPELO8,0 +126,nPg6sOim,0 +127,W4XUqlDb,0 +128,Ys045FyT,0 +129,AB0MZ6C8,0 +130,xJA15hjO,0 +131,rLNn0U6d,0 +132,wIX8SRhO,0 +133,X3musJTA,0 +134,UKz2pf5W,0 +135,vCJOqrz1,0 +136,bh1pPXkS,0 +137,PMsJEG8W,0 +138,VdR9BApr,0 +139,5eUC0wyM,0 +140,29JqWUhr,0 +141,r421iOeg,0 +142,eVpz2ZEk,0 +143,KHWPa0on,0 +144,7XoaG2PZ,0 +145,vnsSF4K2,0 +146,kQqLH7fG,0 +147,MpFAPUeY,0 +148,0jtwVFUJ,0 +149,7S4iyatE,0 +150,aHnwzBNv,0 +151,xQ2SVCcn,0 +152,knhMSbx9,0 +153,JIY9KRGy,0 +154,L3qZz0PI,0 +155,Ym6B1G8R,0 +156,k8nifx3I,0 +157,lPqzLGpk,0 +158,wf4ZqA8U,0 +159,jAU6HwPp,0 +160,OLXesCAP,0 +161,8tLNz0eJ,0 +162,xGO62B9Y,0 +163,PZLUIz38,0 +164,X0i5RbkA,0 +165,wTJynChc,0 +166,SlfFH8Yp,0 +167,lKxnY76M,0 +168,xt7PZ9ID,0 +169,2zWKBenI,0 +170,MotDE5q3,0 +171,ICnhoQ6F,0 +172,Z8gRqASV,0 +173,QX3764Ut,0 +174,y4F0hxPm,0 +175,7aVjiFNk,0 +176,ayGKTcRg,0 +177,OAxKl5hQ,0 +178,p0Z8jFYB,0 +179,WQdLPXGJ,0 +180,5Onepuoa,0 +181,750J4hiB,0 +182,SYUwbA8v,0 +183,Xzkbdnt1,0 +184,5VlprmYD,0 +185,3N8rdjM1,0 +186,0qJmvMNQ,0 +187,6b8BjyU0,0 +188,Z91UTv4O,0 +189,TZxtrBOG,0 +190,36xMwaUo,0 +191,SbuYMw4p,0 +192,zp0bBr7P,0 +193,D9LNjy8P,0 +194,n50zPpam,0 +195,6DAHCYyv,0 +196,N92Cf8vw,0 +197,QRbO6Zlk,0 +198,x0QapXBO,0 +199,W2fbyU8K,0 +200,Qd4xtJIe,0 +201,5CNE3wlX,0 +202,lNQaJzvr,0 +203,TjLFhtMS,0 +204,WmrXqyae,0 +205,PAuCoyhD,0 +206,cPHvrtAD,0 +207,wgn9xhBs,0 +208,LyQaDrqK,0 +209,QNkxrd3b,0 +210,C8IjGET7,0 +211,eQEXZIMu,0 +212,iuD4MAon,0 +213,btuWQNxY,0 +214,jo2UiH1D,0 +215,JRKXbpg9,0 +216,fule8bEw,0 +217,7UKLxndB,0 +218,ryZf39tF,0 +219,YIDS1hBP,0 +220,tR03BuZI,0 +221,Rkvou0tP,0 +222,qBFh6xRH,0 +223,g8zBM1mf,0 +224,p38GtFI7,0 +225,l6PakAte,0 +226,o2XOEZRF,0 +227,8IxtOZzN,0 +228,lQzRYgIb,0 +229,vlCWMqb6,0 +230,r49ZXujn,0 +231,BEjTzs2V,0 +232,AyZMnDWl,0 +233,YP0d8ysr,0 +234,3SZ4Ej2y,0 +235,57PvezAn,0 +236,SEfNIoaV,0 +237,ibNL5MBX,0 +238,wP2cJ759,0 +239,GMQJKhxI,0 +240,j53wyboP,0 +241,ygs6BXQ8,0 +242,dSz0NJUH,0 +243,4Me5AVd1,0 +244,A2znqdlE,0 +245,bnWHDp9j,0 +246,Fo3Juf4d,0 +247,oMsA182h,0 +248,uepwALZs,0 +249,v64Wh3ZH,0 +250,RksTpPBK,0 +251,OfSsPUEb,0 +252,8i3VYxMd,0 +253,IiV0oJqF,0 +254,xWy105Nt,0 +255,lB85qkf3,0 +256,zTVwgAOu,0 +257,ijHNoBcb,0 +258,sMkjS2aR,0 +259,zlMyOnW6,0 +260,6cnITWBU,0 +261,BukLiDt9,0 +262,ap0KXHM1,0 +263,47zMiZGq,0 +264,48Q9rCon,0 +265,gRH9P4au,0 +266,QXxDj0za,0 +267,rY1sPbIW,0 +268,JG4EdKWB,0 +269,Dbol5ayR,0 +270,GZIRTVgx,0 +271,ApJvIbzW,0 +272,GYCiq52R,0 +273,niS3WUZT,0 +274,127IBEpY,0 +275,ECZbRa4W,0 +276,soMkpiaj,0 +277,v5fQPzaU,0 +278,ReSPzcsk,0 +279,lXCkTB75,0 +280,3dAQTjUw,0 +281,cvK39uWq,0 +282,Ms51QCYb,0 +283,QIYK4DRu,0 +284,BMQyj9ke,0 +285,jkBsDbX4,0 +286,WpY1ljti,0 +287,H2AtOnq9,0 +288,g5u7q49v,0 +289,ThE69jQt,0 +290,A1TO45N3,0 +291,bfpjMAOL,0 +292,bqR9vEjX,0 +293,4GOzIW2x,0 +294,kJc6OQRi,0 +295,ykgpd6P2,0 +296,Z8KmVEvR,0 +297,7DYxt8Al,0 +298,WP9rdZkc,0 +299,oyFn8hAO,0 +300,qQnhztFS,0 +301,KlYieFHf,0 +302,6pcydmAw,0 +303,M83QkSws,0 +304,edrEoc79,0 +305,r2LshXwY,0 +306,6D8qok5r,0 +307,kSj3cIbt,0 +308,zrAyIu80,0 +309,NH7Cg4os,0 +310,xEzsVNO1,0 +311,p6yQzLUN,0 +312,2hsPIAnR,0 +313,n1d0NI89,0 +314,e9SQaFAO,0 +315,OrHRuCxk,0 +316,fi25TExP,0 +317,GV0OHojl,0 +318,pIUT9sbe,0 +319,e9qT0lWk,0 +320,MiSzJg6k,0 +321,eBtlAN3G,0 +322,ZTA5Rdt4,0 +323,Xiodm4Qr,0 +324,jmWxtA0X,0 +325,Awp87Hy3,0 +326,CnWetYym,0 +327,hcjxLumk,0 +328,ugIRyiCc,0 +329,9IbRXY7N,0 +330,FxX4js7K,0 +331,hjboTeLR,0 +332,OHRxwWsM,0 +333,VUzBWrcH,0 +334,79LZa8FD,0 +335,7Hm8MZrb,0 +336,gak5oPYh,0 +337,xW0i3HdR,0 +338,gylSGh54,0 +339,qFCba1o3,0 +340,JV2t9Ika,0 +341,7c6dgA3u,0 +342,ts34LBbm,0 +343,T9fsv1V5,0 +344,OLDchf0s,0 +345,I1NG2SUO,0 +346,xBFqy7pN,0 +347,k7zYXAEl,0 +348,ZYHq4CPu,0 +349,7mdkMqPz,0 +350,iOHo3Jxs,0 +351,T9o3swJI,0 +352,WjFMAvfV,0 +353,msIZ2Mqe,0 +354,3sGvJ7ma,0 +355,REWDdmSl,0 +356,H8fwZXm2,0 +357,hcYy2wMG,0 +358,IiuzrYDo,0 +359,jpVi1hBz,0 +360,Tj2sclvF,0 +361,S3uh4dn6,0 +362,fXrJacFV,0 +363,46Kq7RQa,0 +364,HhsV0alZ,0 +365,ZvYAx1Kz,0 +366,KN6fuvE9,0 +367,EaOQFceW,0 +368,EIDl62VF,0 +369,uIXDSKWL,0 +370,HvLDVwJA,0 +371,8t9zbOEN,0 +372,BOsHcUmp,0 +373,dtbM6P25,0 +374,LBe7Ghpv,0 +375,oV4UJRSY,0 +376,MhTEXUYI,0 +377,sHjLKxFk,0 +378,LMp5BeSQ,0 +379,RuB5IPXM,0 +380,pKQPdusv,0 +381,TQpC5kKB,0 +382,eU2SFvCl,0 +383,cYrSXLmf,0 +384,T3zJL0u2,0 +385,Oszl2HbW,0 +386,Zha3pEJk,0 +387,fOsehUui,0 +388,hnfTXrIP,0 +389,CsXOmkNj,0 +390,TXCAYJFg,0 +391,UnPGqZpo,0 +392,WOyx7tPL,0 +393,smGr0Kf9,0 +394,wGOXvQax,0 +395,Z9IHYgAk,0 +396,d5VYJunl,0 +397,Fic60gXj,0 +398,Kqpflmcv,0 +399,T09i2RB5,0 +400,wl7nyJNz,0 +401,XBWrIOpR,0 +402,OHtJVuAg,0 +403,4Z7FsQ9l,0 +404,9zDCcH83,0 +405,dOV84jEB,0 +406,9zSC1YkZ,0 +407,bg43Ucyo,0 +408,e50hOasZ,0 +409,8tc9AfRw,0 +410,pYSJ6M4K,0 +411,PCdkR6iZ,0 +412,fEMhwqtz,0 +413,6r9pGMzC,0 +414,gacWHbRT,0 +415,7Fo34tX0,0 +416,gzSAfR0v,0 +417,F2MPsnvL,0 +418,YltQ6E3L,0 +419,iphHg8sK,0 +420,FAXVgeP9,0 +421,VciN8QYF,0 +422,7VFfOYT3,0 +423,4ATQ1iY5,0 +424,9xmqdsKr,0 +425,w5rdcl2V,0 +426,XH3YolgK,0 +427,No52vT0l,0 +428,BXfY12m4,0 +429,4wJaU9uk,0 +430,blPJtQL0,0 +431,cNn4oa5P,0 +432,k8TzGMQp,0 +433,P0HeMJRn,0 +434,HBgm0x1C,0 +435,UlGi4g8N,0 +436,Efgsmx1O,0 +437,a8yBdT3z,0 +438,MZ0LfqJa,0 +439,m7sQtBdL,0 +440,0AVhzUbD,0 +441,XUMulCHF,0 +442,0mxoGYK5,0 +443,Efcr3hRW,0 +444,iuqMdYAf,0 +445,MixhFv6T,0 +446,iZCWnTG6,0 +447,uaepXk4l,0 +448,OQrF1Daw,0 +449,8Oblw0ja,0 +450,A7dy8jno,0 +451,3QraXxlI,0 +452,JtXCMN0p,0 +453,mEXLdCh6,0 +454,fstVSrbF,0 +455,RTzw2sij,0 +456,dRjyVYpN,0 +457,6OeAUb7Q,0 +458,A2gRbzim,0 +459,5IiKCg1U,0 +460,N4ZTC0l5,0 +461,pYfoZ4yn,0 +462,1Jez4aj3,0 +463,DQgJVtKh,0 +464,IDpmyjTv,0 +465,gUo5dJfc,0 +466,MmzWEI7e,0 +467,ar142zFq,0 +468,3H8zvlR9,0 +469,eyjawBhU,0 +470,J4FIYk5i,0 +471,pXsUwmag,0 +472,ERkQDBc4,0 +473,rMAfShje,0 +474,OvjAIbYS,0 +475,aNPi4prJ,0 +476,3xHwLYnS,0 +477,35bhKpTH,0 +478,1KyW2dj9,0 +479,cr6gZlhG,0 +480,uVFTbrdm,0 +481,A5hSzaOm,0 +482,apCBUFPv,0 +483,ZN3Rm0ax,0 +484,2VOleuTy,0 +485,CcLYAki0,0 +486,SO4Yk93D,0 +487,k9KwDIHT,0 +488,hRgpNIz7,0 +489,5ZXDyQlm,0 +490,Mp2VCASm,0 +491,zD9UKZ6v,0 +492,soWNOuVS,0 +493,sOl47F9L,0 +494,ZO5XrJaT,0 +495,nKAuj9lF,0 +496,oT7HABMR,0 +497,8kLPabT5,0 +498,G2FuUAn4,0 +499,dINWO0L7,0 +500,MdwePgz9,0 +501,aUKNL7mu,0 +502,caRpCVkj,0 +503,zqVhFJjn,0 +504,m3FTWYeC,0 +505,KpvbqIRf,0 +506,LXAlj3oF,0 +507,IQR9kUJC,0 +508,dIXvBLMS,0 +509,Pz6widY2,0 +510,RLOjagSQ,0 +511,hk4Yq7Nl,0 +512,DmsKc07z,0 +513,Gt80hIAy,0 +514,YxFQwbsD,0 +515,9wNbHLyp,0 +516,V8FyPpqN,0 +517,UZufDe9x,0 +518,Rhn2ipUN,0 +519,iqOxfbPQ,0 +520,XwLesjc9,0 +521,76gqlrsb,0 +522,OwbCVBgJ,0 +523,enyx3jaG,0 +524,o83vKnk7,0 +525,tL7d36eb,0 +526,BpszPO6k,0 +527,peU7Cbc9,0 +528,1kWahs8n,0 +529,cfiyFU8N,0 +530,wrd7Dj9N,0 +531,sctxDZ3O,0 +532,BoD1qwyQ,0 +533,7ClPQE9H,0 +534,fnlYwPCH,0 +535,UC34vwEu,0 +536,8UBCxzks,0 +537,nwbG71tc,0 +538,DNm9gErn,0 +539,KH9WaBwl,0 +540,oIpseyln,0 +541,Z2XNLo4Y,0 +542,OLqvX5NE,0 +543,7HhFZsKU,0 +544,hZMdi4On,0 +545,WdRvpxA6,0 +546,k2OXUzsn,0 +547,4ULrFAH3,0 +548,gr7eui9O,0 +549,WrKzC5tJ,0 +550,sjtQ5CKS,0 +551,J7xPSg1G,0 +552,X0MaCNV9,0 +553,kqODHvws,0 +554,CAN4IKnk,0 +555,O52TNHao,0 +556,fvpdcDWa,0 +557,xwlNOTjD,0 +558,GNwYg0cr,0 +559,JgWuolN7,0 +560,Wapvjur3,0 +561,mMdsRyt1,0 +562,64ZpcC5R,0 +563,icC8QTUt,0 +564,qTIrktW8,0 +565,QkE5Yxvt,0 +566,4RJAvSFU,0 +567,2Ctp0Vcw,0 +568,tnyrWYh7,0 +569,x2GcNUOm,0 +570,BDJIisoR,0 +571,aWf3MJXD,0 +572,SoPm9j4D,0 +573,8ELwACfU,0 +574,4vgFOda8,0 +575,rboZB0S8,0 +576,v2cpF7nl,0 +577,qbtnHg0T,0 +578,bNTiG9WD,0 +579,hFPcAQYI,0 +580,MytXSLWf,0 +581,4wrkBPEO,0 +582,zRMULar4,0 +583,UIXrwGES,0 +584,LVPSRZi9,0 +585,NGnF8i1Q,0 +586,YwujiXzJ,0 +587,vp1BUoGi,0 +588,c25UxkA7,0 +589,XzUKOFos,0 +590,zISZPk9u,0 +591,R2Fz6esc,0 +592,xHzIVemf,0 +593,HMIwkdSX,0 +594,CzXL1R0i,0 +595,P92DpCoO,0 +596,rYogPy09,0 +597,HQcmTG7U,0 +598,sxamYP1u,0 +599,Ot1qdIwa,0 +600,mHaTVQYx,0 +601,6ckY1nQ0,0 +602,EJTFfdow,0 +603,Qyt4vTS6,0 +604,vnyoMCcT,0 +605,ML3BI8qO,0 +606,HTNJfFYi,0 +607,Py0zQlmA,0 +608,2JW5SAfC,0 +609,ZjPwDiQ8,0 +610,0sOEktCN,0 +611,gXJwmrsy,0 +612,7YyWkMQj,0 +613,Ty4kKrmD,0 +614,4ChUH6L3,0 +615,wUC0Imhu,0 +616,NarKx8d6,0 +617,TVYJDAdQ,0 +618,KBD2Gaws,0 +619,poxG8DN2,0 +620,1aqKFoLp,0 +621,YVuegbPR,0 +622,6F03BC1z,0 +623,hSF3Z2BI,0 +624,CqyplNPr,0 +625,JRV4Mc92,0 +626,pZOcjRCu,0 +627,oe2I9lMv,0 +628,EUyDjw4g,0 +629,Ju1kNnGL,0 +630,uiEZXdGC,0 +631,3ZcFusgI,0 +632,xNr97MSA,0 +633,qYDaxdUF,0 +634,vQSZxe9P,0 +635,YIn5QeaH,0 +636,GHl5YuUC,0 +637,w81JqKBM,0 +638,fKevi8pz,0 +639,fy4DBNQg,0 +640,xT7FA6dg,0 +641,gfIo5MkC,0 +642,ZseJBWcS,0 +643,vrEweARJ,0 +644,GIgWzvc7,0 +645,snguBtdO,0 +646,kDpJUqQW,0 +647,JQMCosq8,0 +648,j59zoLtZ,0 +649,Lb2zTlke,0 +650,3GW6I5a9,0 +651,JqKGQ7Y0,0 +652,gyDVcJOu,0 +653,2bItNvY4,0 +654,dHnkpzam,0 +655,dpa4LSRg,0 +656,FlKosxyt,0 +657,eLsmvFbZ,0 +658,DXwCRrxc,0 +659,Ih7rS2k1,0 +660,Uv3P6lOC,0 +661,xv12gAQi,0 +662,8BPtk72T,0 +663,Y0rSL3UJ,0 +664,TJU1spyB,0 +665,Cbe9A3TW,0 +666,6yPQqbs5,0 +667,1z2Fr3kj,0 +668,wyvCYJ9G,0 +669,IAKR1sgP,0 +670,2qoyzYMS,0 +671,HGOKmSj8,0 +672,szwHftWP,0 +673,WTBl1qSV,0 +674,DvzPp50c,0 +675,YHLd8X5f,0 +676,A1DcbotS,0 +677,MKCo6sOe,0 +678,BhnS0Hx5,0 +679,3NmxDaO9,0 +680,9n8zOcbj,0 +681,cWBPVink,0 +682,hLNBcos5,0 +683,Huo6YVDS,0 +684,I5q1H8hn,0 +685,TaZyGo56,0 +686,QlcyMfj6,0 +687,U4fkYeLi,0 +688,ox27NF9q,0 +689,fpjxug49,0 +690,OgfeKm72,0 +691,qZnNLBIE,0 +692,DpY59qXK,0 +693,4uB9lpdP,0 +694,Q4qUaNCL,0 +695,Ecx2ML1g,0 +696,EksJuVow,0 +697,E8JxGzre,0 +698,BEsLhA5Z,0 +699,u4firnEA,0 +700,Rt5pewJn,0 +701,RpWxSBYX,0 +702,uES421AV,0 +703,34k2UQZH,0 +704,PT9pjCNB,0 +705,2KkQLphW,0 +706,YAQo1aWL,0 +707,Pum7OWzU,0 +708,PSxo9av0,0 +709,ol9rnML6,0 +710,PSAt26eq,0 +711,UgRkPY46,0 +712,NVCyJ6Tq,0 +713,1cWYzfyB,0 +714,81tIFUbh,0 +715,ATVksdf8,0 +716,EwHXGIYb,0 +717,MzvIbTdF,0 +718,LJQ45pql,0 +719,lsgJdObD,0 +720,VNogipvn,0 +721,wIfEtGPD,0 +722,HlmMNfFb,0 +723,DPxbic45,0 +724,zBHqJekP,0 +725,Px6zhvpY,0 +726,uiOzZ6Em,0 +727,1AHQUlht,0 +728,uIKTx97d,0 +729,vYbwU2eX,0 +730,n1KHgyqa,0 +731,4vhmuFIT,0 +732,ulj2dXcC,0 +733,GPrKelVb,0 +734,B4UizfL1,0 +735,yVI36vEz,0 +736,U5WpF7Lm,0 +737,W4pghOl5,0 +738,7artWiGn,0 +739,73igkmbN,0 +740,LVGI7uma,0 +741,ALXvf0mQ,0 +742,NPZKz1k4,0 +743,xzZLNoKV,0 +744,MSscrARN,0 +745,NjUhxqFP,0 +746,Wd0DXhH6,0 +747,8YG1d4rO,0 +748,VS9JobQe,0 +749,8SwK5ha9,0 +750,d07OYQh8,0 +751,kOYmwSIv,0 +752,lJ7ShPqN,0 +753,GzMAJQ6R,0 +754,MhnHlT6X,0 +755,CYRZm1QV,0 +756,Zu9fO6m5,0 +757,PZKq5OW3,0 +758,4IVCsBAi,0 +759,lnYB05wR,0 +760,LJ508hAD,0 +761,MrnLRBSo,0 +762,iVtNUIXA,0 +763,i3CTdZbJ,0 +764,DxnR0KTd,0 +765,Mcyb9ZTj,0 +766,PeynspAC,0 +767,vksA5U2y,0 +768,EyWdg25R,0 +769,20ZhI83G,0 +770,FwNjhu80,0 +771,6dr7zBGs,0 +772,3qtJM17C,0 +773,kjSHXl9p,0 +774,xtMNmwT2,0 +775,qaUKZ8y6,0 +776,m6TsJ1Wp,0 +777,5o8TzPhD,0 +778,kcfrbswM,0 +779,rJ2et7m5,0 +780,JPrc4oy3,0 +781,38gihOVw,0 +782,tZ5EKruF,0 +783,vVJikMKU,0 +784,cmjOLYHG,0 +785,JPNFiKHX,0 +786,alsUNoWu,0 +787,X7wk1NJO,0 +788,mg4bMrtG,0 +789,qHreJyDS,0 +790,Lxa3vzfl,0 +791,fs3DBCAj,0 +792,o7QC6y52,0 +793,6RuLwBYg,0 +794,YdHsi1NR,0 +795,qkabGNms,0 +796,ryGp0Dxb,0 +797,cYkFUeig,0 +798,vFErQYKs,0 +799,fSKJ8ApU,0 +800,LVm56Rdt,0 +801,PF5Za6Oz,0 +802,7ZOw02nd,0 +803,AMVpnQtb,0 +804,XHGgyurV,0 +805,gUqfArY9,0 +806,Sd1sfaPx,0 +807,GL0RVBwu,0 +808,BM5sCpnH,0 +809,gtFdA8ok,0 +810,4RWrSC2G,0 +811,7wvDiYd3,0 +812,Bq52t0W6,0 +813,shYPJaVF,0 +814,41py9aq7,0 +815,G47Cp091,0 +816,v30SVU87,0 +817,7DPNyVxI,0 +818,Fw4N6Z9Q,0 +819,xiogyYeU,0 +820,Jse90fLo,0 +821,JhjnNQBr,0 +822,U0mZocn8,0 +823,PkbDTRpw,0 +824,RY7zaPG6,0 +825,czpLABPG,0 +826,RotCBOXE,0 +827,ZV7swB0h,0 +828,p139QrtX,0 +829,sZo7BfNE,0 +830,LisZOEkT,0 +831,Jp4Ogky9,0 +832,6jlYV3rU,0 +833,R6YM5bvO,0 +834,rknaLICQ,0 +835,TKuawY6B,0 +836,CfGE8Xlw,0 +837,UDdw1KHY,0 +838,hHPe2Xbl,0 +839,VY1a7uiM,0 +840,BVSioRF1,0 +841,0lctQHJY,0 +842,rhuC9mfR,0 +843,Y27pWI1r,0 +844,zJidf0Gp,0 +845,L7edDAq4,0 +846,Nq7E02Md,0 +847,3GBVC590,0 +848,ryJIBmlZ,0 +849,JFdtD90v,0 +850,RcaMQb8N,0 +851,SxKa3p5B,0 +852,PBAzSYcn,0 +853,QwDSXEPM,0 +854,J6y4Euaw,0 +855,9JjpKmXQ,0 +856,oKDj5EV0,0 +857,ujBVlQi2,0 +858,mDr71oqa,0 +859,4W9b6pzj,0 +860,pi7ocC9b,0 +861,u4MkwNbI,0 +862,cQeW05dO,0 +863,0xHXkTLC,0 +864,jr0HqpLu,0 +865,6zx7850m,0 +866,aS9TtcI5,0 +867,VGbSpqa7,0 +868,xlM4aI1A,0 +869,P6jVE3ei,0 +870,iRMWuOG3,0 +871,yQTp8FuE,0 +872,Xrvs1e3m,0 +873,HOCkdb1t,0 +874,czTNk16S,0 +875,H4wOgj9Y,0 +876,mKMxAWbF,0 +877,h1SITNrx,0 +878,V1OBFUrS,0 +879,YizHqE21,0 +880,kd7RKImG,0 +881,FX8E7TO9,0 +882,txq2w37h,0 +883,MxIZVSou,0 +884,IuaibrED,0 +885,m5UlpX2W,0 +886,xH5pPs1I,0 +887,2HR4h0Nv,0 +888,tCo8T1BI,0 +889,cFuoe92T,0 +890,o4O3ZM5a,0 +891,Ruto18Kc,0 +892,nKPQ5Bg7,0 +893,WHCDxPyl,0 +894,UXDBslFR,0 +895,8dRfFzkZ,0 +896,FjtCJG0I,0 +897,0pE3Pfo5,0 +898,DiaPwxgX,0 +899,0JOsXBEi,0 +900,1GNdr5CV,0 +901,KFPSBIlT,0 +902,T2Z18LoV,0 +903,RE8PJBCY,0 +904,DimeZ0zv,0 +905,qlA52BOT,0 +906,uFWIxGOv,0 +907,GLcKi0D2,0 +908,1uKAblrz,0 +909,10nedJlQ,0 +910,vVUkmpwy,0 +911,gFaV5z8e,0 +912,pb87A2vk,0 +913,QXtE8Ce6,0 +914,2onY017G,0 +915,YUtOgzjT,0 +916,9wbligyH,0 +917,BuVNntQm,0 +918,wFMnxvsb,0 +919,Qpnh6C2G,0 +920,BLvekCOz,0 +921,gIL9b1pY,0 +922,dzOiNpjX,0 +923,d0254Oc3,0 +924,gb4QJneL,0 +925,M87Bj4sT,0 +926,wgcBCrYv,0 +927,4bq1GdFU,0 +928,mxonsurl,0 +929,wyagIuJQ,0 +930,AQN51SW9,0 +931,pLdQs564,0 +932,obQe906O,0 +933,lGwCnMpF,0 +934,iR8yZ4XW,0 +935,d4izhKcA,0 +936,AvK3sjTZ,0 +937,ivIlW3d1,0 +938,ysmbnBJP,0 +939,gvbHqhjr,0 +940,HONuejTE,0 +941,GfegJUvA,0 +942,oXhnJ2KQ,0 +943,LnNOD7s8,0 +944,YIZ7R2nO,0 +945,4VyfnmcF,0 +946,3PXtDF9b,0 +947,IbqCFPsg,0 +948,FewAanBl,0 +949,O9tUb6YF,0 +950,oKOde9L5,0 +951,K6BvRe9q,0 +952,DISvlX1H,0 +953,rKo0gOSb,0 +954,ywraD0Ks,0 +955,sElWXP8z,0 +956,ugf0kcOW,0 +957,vQlpFwBx,0 +958,AG7imoIJ,0 +959,KCip3dgo,0 +960,zTPsIvXu,0 +961,1zF3tAIj,0 +962,0R8qAt1O,0 +963,LloCmZjb,0 +964,lgHsJuTG,0 +965,oTykU3X2,0 +966,mX6jqPLO,0 +967,0GTpRcfz,0 +968,vUKyo7t3,0 +969,bQJinc1A,0 +970,KxhPl2f8,0 +971,AJqzxc8P,0 +972,5E8VMwgj,0 +973,RQG3VJTS,0 +974,Z9Q5DK3r,0 +975,h6IPMviY,0 +976,KrYEAaC1,0 +977,kUwtRlvh,0 +978,mS7ay4X1,0 +979,yLAEwOQj,0 +980,JgIbRQE7,0 +981,SHlJk6YT,0 +982,IMTF2sVq,0 +983,cqwTupzW,0 +984,Cky6fRdM,0 +985,TpQABjgD,0 +986,2dIvGqr8,0 +987,MbVYWutE,0 +988,YwUdX3oq,0 +989,YRmedNI9,0 +990,R8TolJy2,0 +991,Gt4QHwS5,0 +992,iE6hpncf,0 +993,MxS73f9k,0 +994,mn1DVj2u,0 +995,HderK4Li,0 +996,GbN5TMyY,0 +997,B1IzOSmb,0 +998,qg2wt3bl,0 +999,MhzO3S79,0 diff --git a/unique-codes.ods b/unique-codes.ods new file mode 100644 index 0000000000000000000000000000000000000000..7f060feb2d2633bd109dad294bb138db26e7e182 GIT binary patch literal 47463 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 H(bfM0c%X}n literal 0 HcmV?d00001 diff --git a/unique-codes.txt b/unique-codes.txt new file mode 100644 index 0000000..86041ef --- /dev/null +++ b/unique-codes.txt @@ -0,0 +1,1000 @@ +CMXjyOp7 +EFGeqVO8 +Ke5iVkgI +Kejus1t0 +fE0exnyw +6YOPfxNJ +H0tL1Moh +s0TGjh24 +jsaFXn6d +HCY6GrdW +taUoGmZ8 +mjdWQDp9 +VrIElJNa +cD2EwaQ8 +J8Kijsq0 +OCLa4MTm +UirGoy7X +hU71saDb +QLSoMH20 +vxmaFzXg +eAqYkupL +1c3yXTCo +U3PcMtjv +m5AuOXZr +1CfdvSYu +DMLFPZGj +ghjpS8LF +ij0ts2gF +07hRxjPY +ZgOiaPxl +6RePcMvD +r729SMRt +BaJUKV5L +38hpyEtq +BgZtjk2E +DWLfr2Vm +leExUGZu +C506Knru +6R5vU0iO +ZYrfye1l +kNGBRAzU +AnORWPsi +aG7oEsF4 +8SlR0vd3 +vmbB3dUw +r3ycn2hB +m6cBRnCT +PB70keqT +RMkiFd2C +QrWgcbqR +GQSN6hdn +03F7bnpV +vMFpVD09 +aAlZ24mq +9Rjm7HLn +waCgLZUc +ixNPnJ1s +qtyBSdKf +G4oFbKDs +WIqmCbw1 +gLjCZP5b +07TMEqNL +PgIBXN04 +wusJtn0d +qnzObEpd +ImzVJQvs +50PeBOd7 +ozE87a0e +j5yEw0UD +Vmnf3Q6P +EpncTOZ6 +xd2PhrOT +iupRXmwv +ZHnYi37A +dAmjNnPt +aWIGzh0Y +Cda4ZYn6 +C0uH6Swi +UmWx1ACu +htyESX5F +Bcxn0ZAH +u2Cg1eiM +2zmuWv3T +Qehd6olp +xKYGsajk +3Q5psrkA +txecomT1 +7lNAmCEr +45OrhDl9 +YDUm3E85 +EKsyxIOB +KkbSRUWn +J4n5xdUF +czWsBZD6 +W0eHxLfM +OrZeuFMx +rPWpkK20 +967P54Dn +Lt8Bly1u +kPvtAKHG +9BRzEcYQ +mVuXki1o +eyNr5TuP +NZpPexjq +lPGayovL +RzrPFh6m +njoFKViJ +SqmIsnP6 +QNMym1Je +QsKwpexT +dvOb5PIy +khuj4piH +Qz3wtslU +42VuQpFa +ma9Ce2hH +pX6K1Ex5 +hX4AszP3 +oXK3a6ys +IEu6Q9Fh +TxXacumP +hEDzUrBf +Zb17CEnO +vwM5EnzX +Ucvy51AM +wu3JWEsx +saBPELO8 +nPg6sOim +W4XUqlDb +Ys045FyT +AB0MZ6C8 +xJA15hjO +rLNn0U6d +wIX8SRhO +X3musJTA +UKz2pf5W +vCJOqrz1 +bh1pPXkS +PMsJEG8W +VdR9BApr +5eUC0wyM +29JqWUhr +r421iOeg +eVpz2ZEk +KHWPa0on +7XoaG2PZ +vnsSF4K2 +kQqLH7fG +MpFAPUeY +0jtwVFUJ +7S4iyatE +aHnwzBNv +xQ2SVCcn +knhMSbx9 +JIY9KRGy +L3qZz0PI +Ym6B1G8R +k8nifx3I +lPqzLGpk +wf4ZqA8U +jAU6HwPp +OLXesCAP +8tLNz0eJ +xGO62B9Y +PZLUIz38 +X0i5RbkA +wTJynChc +SlfFH8Yp +lKxnY76M +xt7PZ9ID +2zWKBenI +MotDE5q3 +ICnhoQ6F +Z8gRqASV +QX3764Ut +y4F0hxPm +7aVjiFNk +ayGKTcRg +OAxKl5hQ +p0Z8jFYB +WQdLPXGJ +5Onepuoa +750J4hiB +SYUwbA8v +Xzkbdnt1 +5VlprmYD +3N8rdjM1 +0qJmvMNQ +6b8BjyU0 +Z91UTv4O +TZxtrBOG +36xMwaUo +SbuYMw4p +zp0bBr7P +D9LNjy8P +n50zPpam +6DAHCYyv +N92Cf8vw +QRbO6Zlk +x0QapXBO +W2fbyU8K +Qd4xtJIe +5CNE3wlX +lNQaJzvr +TjLFhtMS +WmrXqyae +PAuCoyhD +cPHvrtAD +wgn9xhBs +LyQaDrqK +QNkxrd3b +C8IjGET7 +eQEXZIMu +iuD4MAon +btuWQNxY +jo2UiH1D +JRKXbpg9 +fule8bEw +7UKLxndB +ryZf39tF +YIDS1hBP +tR03BuZI +Rkvou0tP +qBFh6xRH +g8zBM1mf +p38GtFI7 +l6PakAte +o2XOEZRF +8IxtOZzN +lQzRYgIb +vlCWMqb6 +r49ZXujn +BEjTzs2V +AyZMnDWl +YP0d8ysr +3SZ4Ej2y +57PvezAn +SEfNIoaV +ibNL5MBX +wP2cJ759 +GMQJKhxI +j53wyboP +ygs6BXQ8 +dSz0NJUH +4Me5AVd1 +A2znqdlE +bnWHDp9j +Fo3Juf4d +oMsA182h +uepwALZs +v64Wh3ZH +RksTpPBK +OfSsPUEb +8i3VYxMd +IiV0oJqF +xWy105Nt +lB85qkf3 +zTVwgAOu +ijHNoBcb +sMkjS2aR +zlMyOnW6 +6cnITWBU +BukLiDt9 +ap0KXHM1 +47zMiZGq +48Q9rCon +gRH9P4au +QXxDj0za +rY1sPbIW +JG4EdKWB +Dbol5ayR +GZIRTVgx +ApJvIbzW +GYCiq52R +niS3WUZT +127IBEpY +ECZbRa4W +soMkpiaj +v5fQPzaU +ReSPzcsk +lXCkTB75 +3dAQTjUw +cvK39uWq +Ms51QCYb +QIYK4DRu +BMQyj9ke +jkBsDbX4 +WpY1ljti +H2AtOnq9 +g5u7q49v +ThE69jQt +A1TO45N3 +bfpjMAOL +bqR9vEjX +4GOzIW2x +kJc6OQRi +ykgpd6P2 +Z8KmVEvR +7DYxt8Al +WP9rdZkc +oyFn8hAO +qQnhztFS +KlYieFHf +6pcydmAw +M83QkSws +edrEoc79 +r2LshXwY +6D8qok5r +kSj3cIbt +zrAyIu80 +NH7Cg4os +xEzsVNO1 +p6yQzLUN +2hsPIAnR +n1d0NI89 +e9SQaFAO +OrHRuCxk +fi25TExP +GV0OHojl +pIUT9sbe +e9qT0lWk +MiSzJg6k +eBtlAN3G +ZTA5Rdt4 +Xiodm4Qr +jmWxtA0X +Awp87Hy3 +CnWetYym +hcjxLumk +ugIRyiCc +9IbRXY7N +FxX4js7K +hjboTeLR +OHRxwWsM +VUzBWrcH +79LZa8FD +7Hm8MZrb +gak5oPYh +xW0i3HdR +gylSGh54 +qFCba1o3 +JV2t9Ika +7c6dgA3u +ts34LBbm +T9fsv1V5 +OLDchf0s +I1NG2SUO +xBFqy7pN +k7zYXAEl +ZYHq4CPu +7mdkMqPz +iOHo3Jxs +T9o3swJI +WjFMAvfV +msIZ2Mqe +3sGvJ7ma +REWDdmSl +H8fwZXm2 +hcYy2wMG +IiuzrYDo +jpVi1hBz +Tj2sclvF +S3uh4dn6 +fXrJacFV +46Kq7RQa +HhsV0alZ +ZvYAx1Kz +KN6fuvE9 +EaOQFceW +EIDl62VF +uIXDSKWL +HvLDVwJA +8t9zbOEN +BOsHcUmp +dtbM6P25 +LBe7Ghpv +oV4UJRSY +MhTEXUYI +sHjLKxFk +LMp5BeSQ +RuB5IPXM +pKQPdusv +TQpC5kKB +eU2SFvCl +cYrSXLmf +T3zJL0u2 +Oszl2HbW +Zha3pEJk +fOsehUui +hnfTXrIP +CsXOmkNj +TXCAYJFg +UnPGqZpo +WOyx7tPL +smGr0Kf9 +wGOXvQax +Z9IHYgAk +d5VYJunl +Fic60gXj +Kqpflmcv +T09i2RB5 +wl7nyJNz +XBWrIOpR +OHtJVuAg +4Z7FsQ9l +9zDCcH83 +dOV84jEB +9zSC1YkZ +bg43Ucyo +e50hOasZ +8tc9AfRw +pYSJ6M4K +PCdkR6iZ +fEMhwqtz +6r9pGMzC +gacWHbRT +7Fo34tX0 +gzSAfR0v +F2MPsnvL +YltQ6E3L +iphHg8sK +FAXVgeP9 +VciN8QYF +7VFfOYT3 +4ATQ1iY5 +9xmqdsKr +w5rdcl2V +XH3YolgK +No52vT0l +BXfY12m4 +4wJaU9uk +blPJtQL0 +cNn4oa5P +k8TzGMQp +P0HeMJRn +HBgm0x1C +UlGi4g8N +Efgsmx1O +a8yBdT3z +MZ0LfqJa +m7sQtBdL +0AVhzUbD +XUMulCHF +0mxoGYK5 +Efcr3hRW +iuqMdYAf +MixhFv6T +iZCWnTG6 +uaepXk4l +OQrF1Daw +8Oblw0ja +A7dy8jno +3QraXxlI +JtXCMN0p +mEXLdCh6 +fstVSrbF +RTzw2sij +dRjyVYpN +6OeAUb7Q +A2gRbzim +5IiKCg1U +N4ZTC0l5 +pYfoZ4yn +1Jez4aj3 +DQgJVtKh +IDpmyjTv +gUo5dJfc +MmzWEI7e +ar142zFq +3H8zvlR9 +eyjawBhU +J4FIYk5i +pXsUwmag +ERkQDBc4 +rMAfShje +OvjAIbYS +aNPi4prJ +3xHwLYnS +35bhKpTH +1KyW2dj9 +cr6gZlhG +uVFTbrdm +A5hSzaOm +apCBUFPv +ZN3Rm0ax +2VOleuTy +CcLYAki0 +SO4Yk93D +k9KwDIHT +hRgpNIz7 +5ZXDyQlm +Mp2VCASm +zD9UKZ6v +soWNOuVS +sOl47F9L +ZO5XrJaT +nKAuj9lF +oT7HABMR +8kLPabT5 +G2FuUAn4 +dINWO0L7 +MdwePgz9 +aUKNL7mu +caRpCVkj +zqVhFJjn +m3FTWYeC +KpvbqIRf +LXAlj3oF +IQR9kUJC +dIXvBLMS +Pz6widY2 +RLOjagSQ +hk4Yq7Nl +DmsKc07z +Gt80hIAy +YxFQwbsD +9wNbHLyp +V8FyPpqN +UZufDe9x +Rhn2ipUN +iqOxfbPQ +XwLesjc9 +76gqlrsb +OwbCVBgJ +enyx3jaG +o83vKnk7 +tL7d36eb +BpszPO6k +peU7Cbc9 +1kWahs8n +cfiyFU8N +wrd7Dj9N +sctxDZ3O +BoD1qwyQ +7ClPQE9H +fnlYwPCH +UC34vwEu +8UBCxzks +nwbG71tc +DNm9gErn +KH9WaBwl +oIpseyln +Z2XNLo4Y +OLqvX5NE +7HhFZsKU +hZMdi4On +WdRvpxA6 +k2OXUzsn +4ULrFAH3 +gr7eui9O +WrKzC5tJ +sjtQ5CKS +J7xPSg1G +X0MaCNV9 +kqODHvws +CAN4IKnk +O52TNHao +fvpdcDWa +xwlNOTjD +GNwYg0cr +JgWuolN7 +Wapvjur3 +mMdsRyt1 +64ZpcC5R +icC8QTUt +qTIrktW8 +QkE5Yxvt +4RJAvSFU +2Ctp0Vcw +tnyrWYh7 +x2GcNUOm +BDJIisoR +aWf3MJXD +SoPm9j4D +8ELwACfU +4vgFOda8 +rboZB0S8 +v2cpF7nl +qbtnHg0T +bNTiG9WD +hFPcAQYI +MytXSLWf +4wrkBPEO +zRMULar4 +UIXrwGES +LVPSRZi9 +NGnF8i1Q +YwujiXzJ +vp1BUoGi +c25UxkA7 +XzUKOFos +zISZPk9u +R2Fz6esc +xHzIVemf +HMIwkdSX +CzXL1R0i +P92DpCoO +rYogPy09 +HQcmTG7U +sxamYP1u +Ot1qdIwa +mHaTVQYx +6ckY1nQ0 +EJTFfdow +Qyt4vTS6 +vnyoMCcT +ML3BI8qO +HTNJfFYi +Py0zQlmA +2JW5SAfC +ZjPwDiQ8 +0sOEktCN +gXJwmrsy +7YyWkMQj +Ty4kKrmD +4ChUH6L3 +wUC0Imhu +NarKx8d6 +TVYJDAdQ +KBD2Gaws +poxG8DN2 +1aqKFoLp +YVuegbPR +6F03BC1z +hSF3Z2BI +CqyplNPr +JRV4Mc92 +pZOcjRCu +oe2I9lMv +EUyDjw4g +Ju1kNnGL +uiEZXdGC +3ZcFusgI +xNr97MSA +qYDaxdUF +vQSZxe9P +YIn5QeaH +GHl5YuUC +w81JqKBM +fKevi8pz +fy4DBNQg +xT7FA6dg +gfIo5MkC +ZseJBWcS +vrEweARJ +GIgWzvc7 +snguBtdO +kDpJUqQW +JQMCosq8 +j59zoLtZ +Lb2zTlke +3GW6I5a9 +JqKGQ7Y0 +gyDVcJOu +2bItNvY4 +dHnkpzam +dpa4LSRg +FlKosxyt +eLsmvFbZ +DXwCRrxc +Ih7rS2k1 +Uv3P6lOC +xv12gAQi +8BPtk72T +Y0rSL3UJ +TJU1spyB +Cbe9A3TW +6yPQqbs5 +1z2Fr3kj +wyvCYJ9G +IAKR1sgP +2qoyzYMS +HGOKmSj8 +szwHftWP +WTBl1qSV +DvzPp50c +YHLd8X5f +A1DcbotS +MKCo6sOe +BhnS0Hx5 +3NmxDaO9 +9n8zOcbj +cWBPVink +hLNBcos5 +Huo6YVDS +I5q1H8hn +TaZyGo56 +QlcyMfj6 +U4fkYeLi +ox27NF9q +fpjxug49 +OgfeKm72 +qZnNLBIE +DpY59qXK +4uB9lpdP +Q4qUaNCL +Ecx2ML1g +EksJuVow +E8JxGzre +BEsLhA5Z +u4firnEA +Rt5pewJn +RpWxSBYX +uES421AV +34k2UQZH +PT9pjCNB +2KkQLphW +YAQo1aWL +Pum7OWzU +PSxo9av0 +ol9rnML6 +PSAt26eq +UgRkPY46 +NVCyJ6Tq +1cWYzfyB +81tIFUbh +ATVksdf8 +EwHXGIYb +MzvIbTdF +LJQ45pql +lsgJdObD +VNogipvn +wIfEtGPD +HlmMNfFb +DPxbic45 +zBHqJekP +Px6zhvpY +uiOzZ6Em +1AHQUlht +uIKTx97d +vYbwU2eX +n1KHgyqa +4vhmuFIT +ulj2dXcC +GPrKelVb +B4UizfL1 +yVI36vEz +U5WpF7Lm +W4pghOl5 +7artWiGn +73igkmbN +LVGI7uma +ALXvf0mQ +NPZKz1k4 +xzZLNoKV +MSscrARN +NjUhxqFP +Wd0DXhH6 +8YG1d4rO +VS9JobQe +8SwK5ha9 +d07OYQh8 +kOYmwSIv +lJ7ShPqN +GzMAJQ6R +MhnHlT6X +CYRZm1QV +Zu9fO6m5 +PZKq5OW3 +4IVCsBAi +lnYB05wR +LJ508hAD +MrnLRBSo +iVtNUIXA +i3CTdZbJ +DxnR0KTd +Mcyb9ZTj +PeynspAC +vksA5U2y +EyWdg25R +20ZhI83G +FwNjhu80 +6dr7zBGs +3qtJM17C +kjSHXl9p +xtMNmwT2 +qaUKZ8y6 +m6TsJ1Wp +5o8TzPhD +kcfrbswM +rJ2et7m5 +JPrc4oy3 +38gihOVw +tZ5EKruF +vVJikMKU +cmjOLYHG +JPNFiKHX +alsUNoWu +X7wk1NJO +mg4bMrtG +qHreJyDS +Lxa3vzfl +fs3DBCAj +o7QC6y52 +6RuLwBYg +YdHsi1NR +qkabGNms +ryGp0Dxb +cYkFUeig +vFErQYKs +fSKJ8ApU +LVm56Rdt +PF5Za6Oz +7ZOw02nd +AMVpnQtb +XHGgyurV +gUqfArY9 +Sd1sfaPx +GL0RVBwu +BM5sCpnH +gtFdA8ok +4RWrSC2G +7wvDiYd3 +Bq52t0W6 +shYPJaVF +41py9aq7 +G47Cp091 +v30SVU87 +7DPNyVxI +Fw4N6Z9Q +xiogyYeU +Jse90fLo +JhjnNQBr +U0mZocn8 +PkbDTRpw +RY7zaPG6 +czpLABPG +RotCBOXE +ZV7swB0h +p139QrtX +sZo7BfNE +LisZOEkT +Jp4Ogky9 +6jlYV3rU +R6YM5bvO +rknaLICQ +TKuawY6B +CfGE8Xlw +UDdw1KHY +hHPe2Xbl +VY1a7uiM +BVSioRF1 +0lctQHJY +rhuC9mfR +Y27pWI1r +zJidf0Gp +L7edDAq4 +Nq7E02Md +3GBVC590 +ryJIBmlZ +JFdtD90v +RcaMQb8N +SxKa3p5B +PBAzSYcn +QwDSXEPM +J6y4Euaw +9JjpKmXQ +oKDj5EV0 +ujBVlQi2 +mDr71oqa +4W9b6pzj +pi7ocC9b +u4MkwNbI +cQeW05dO +0xHXkTLC +jr0HqpLu +6zx7850m +aS9TtcI5 +VGbSpqa7 +xlM4aI1A +P6jVE3ei +iRMWuOG3 +yQTp8FuE +Xrvs1e3m +HOCkdb1t +czTNk16S +H4wOgj9Y +mKMxAWbF +h1SITNrx +V1OBFUrS +YizHqE21 +kd7RKImG +FX8E7TO9 +txq2w37h +MxIZVSou +IuaibrED +m5UlpX2W +xH5pPs1I +2HR4h0Nv +tCo8T1BI +cFuoe92T +o4O3ZM5a +Ruto18Kc +nKPQ5Bg7 +WHCDxPyl +UXDBslFR +8dRfFzkZ +FjtCJG0I +0pE3Pfo5 +DiaPwxgX +0JOsXBEi +1GNdr5CV +KFPSBIlT +T2Z18LoV +RE8PJBCY +DimeZ0zv +qlA52BOT +uFWIxGOv +GLcKi0D2 +1uKAblrz +10nedJlQ +vVUkmpwy +gFaV5z8e +pb87A2vk +QXtE8Ce6 +2onY017G +YUtOgzjT +9wbligyH +BuVNntQm +wFMnxvsb +Qpnh6C2G +BLvekCOz +gIL9b1pY +dzOiNpjX +d0254Oc3 +gb4QJneL +M87Bj4sT +wgcBCrYv +4bq1GdFU +mxonsurl +wyagIuJQ +AQN51SW9 +pLdQs564 +obQe906O +lGwCnMpF +iR8yZ4XW +d4izhKcA +AvK3sjTZ +ivIlW3d1 +ysmbnBJP +gvbHqhjr +HONuejTE +GfegJUvA +oXhnJ2KQ +LnNOD7s8 +YIZ7R2nO +4VyfnmcF +3PXtDF9b +IbqCFPsg +FewAanBl +O9tUb6YF +oKOde9L5 +K6BvRe9q +DISvlX1H +rKo0gOSb +ywraD0Ks +sElWXP8z +ugf0kcOW +vQlpFwBx +AG7imoIJ +KCip3dgo +zTPsIvXu +1zF3tAIj +0R8qAt1O +LloCmZjb +lgHsJuTG +oTykU3X2 +mX6jqPLO +0GTpRcfz +vUKyo7t3 +bQJinc1A +KxhPl2f8 +AJqzxc8P +5E8VMwgj +RQG3VJTS +Z9Q5DK3r +h6IPMviY +KrYEAaC1 +kUwtRlvh +mS7ay4X1 +yLAEwOQj +JgIbRQE7 +SHlJk6YT +IMTF2sVq +cqwTupzW +Cky6fRdM +TpQABjgD +2dIvGqr8 +MbVYWutE +YwUdX3oq +YRmedNI9 +R8TolJy2 +Gt4QHwS5 +iE6hpncf +MxS73f9k +mn1DVj2u +HderK4Li +GbN5TMyY +B1IzOSmb +qg2wt3bl +MhzO3S79 diff --git a/vinyl-downloader.php b/vinyl-downloader.php new file mode 100644 index 0000000..188bed9 --- /dev/null +++ b/vinyl-downloader.php @@ -0,0 +1,56 @@ + +Version: 0.8 +Author URI: http://www.schubertdaniel.de +*/ + +include_once(ABSPATH.'wp-admin/includes/plugin.php'); +require_once(__DIR__ . '/VinylDownload.class.php'); + +/* include settings page for admin */ +if (is_admin()) + require_once(__DIR__ . '/includes/options.php'); + + /* + * ajax callback + */ + +function submit_code() { + $d = new VinylDownload; + //$d->database = $this->options['downloader_sqlite_database'] + //$d->file = $this->options['downloader_zip_file'] + + if (!empty($_POST)) { + + /* TODO : validation */ + $code = $_POST['code']; + $format = $_POST['format']; + + $d->database = ( ABSPATH . 'db/vinyl-dl-codes.sqlite' ); + + $resp = $d->gen_response($code, $format); + + } else { + $code = null; + $resp = 'POST leer'; + } + + echo json_encode(array('code' => $code, 'resp' => $resp )); + wp_die(); +} + + +add_action('wp_ajax_nopriv_submit_code', 'submit_code'); +add_action('wp_ajax_submit_code', 'submit_code'); +wp_enqueue_script( 'ajax_submit_code', + plugins_url('includes/js/ajax.js', __FILE__ ), + array( 'jquery' ) + ); +wp_localize_script( 'ajax_submit_code', + 'frontendajax', + array('ajaxurl' => admin_url( 'admin-ajax.php')) + );