/** * jquery.mask.js * @version: v1.14.16 * @author: Igor Escobar * * Created by Igor Escobar on 2012-03-10. Please report any bug at github.com/igorescobar/jQuery-Mask-Plugin * * Copyright (c) 2012 Igor Escobar http://igorescobar.com * * The MIT License (http://www.opensource.org/licenses/mit-license.php) * * Permission is hereby granted, free of charge, to any person * obtaining a copy of this software and associated documentation * files (the "Software"), to deal in the Software without * restriction, including without limitation the rights to use, * copy, modify, merge, publish, distribute, sublicense, and/or sell * copies of the Software, and to permit persons to whom the * Software is furnished to do so, subject to the following * conditions: * * The above copyright notice and this permission notice shall be * included in all copies or substantial portions of the Software. * * THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, * EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES * OF MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND * NONINFRINGEMENT. IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT * HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, * WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING * FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR * OTHER DEALINGS IN THE SOFTWARE. */ /* jshint laxbreak: true */ /* jshint maxcomplexity:17 */ /* global define */ // UMD (Universal Module Definition) patterns for JavaScript modules that work everywhere. // https://github.com/umdjs/umd/blob/master/templates/jqueryPlugin.js (function (factory, jQuery, Zepto) { if (typeof define === 'function' && define.amd) { define(['jquery'], factory); } else if (typeof exports === 'object' && typeof Meteor === 'undefined') { module.exports = factory(require('jquery')); } else { factory(jQuery || Zepto); } }(function ($) { 'use strict'; var Mask = function (el, mask, options) { var p = { invalid: [], getCaret: function () { try { var sel, pos = 0, ctrl = el.get(0), dSel = document.selection, cSelStart = ctrl.selectionStart; // IE Support if (dSel && navigator.appVersion.indexOf('MSIE 10') === -1) { sel = dSel.createRange(); sel.moveStart('character', -p.val().length); pos = sel.text.length; } // Firefox support else if (cSelStart || cSelStart === '0') { pos = cSelStart; } return pos; } catch (e) {} }, setCaret: function(pos) { try { if (el.is(':focus')) { var range, ctrl = el.get(0); // Firefox, WebKit, etc.. if (ctrl.setSelectionRange) { ctrl.setSelectionRange(pos, pos); } else { // IE range = ctrl.createTextRange(); range.collapse(true); range.moveEnd('character', pos); range.moveStart('character', pos); range.select(); } } } catch (e) {} }, events: function() { el .on('keydown.mask', function(e) { el.data('mask-keycode', e.keyCode || e.which); el.data('mask-previus-value', el.val()); el.data('mask-previus-caret-pos', p.getCaret()); p.maskDigitPosMapOld = p.maskDigitPosMap; }) .on($.jMaskGlobals.useInput ? 'input.mask' : 'keyup.mask', p.behaviour) .on('paste.mask drop.mask', function() { setTimeout(function() { el.keydown().keyup(); }, 100); }) .on('change.mask', function(){ el.data('changed', true); }) .on('blur.mask', function(){ if (oldValue !== p.val() && !el.data('changed')) { el.trigger('change'); } el.data('changed', false); }) // it's very important that this callback remains in this position // otherwhise oldValue it's going to work buggy .on('blur.mask', function() { oldValue = p.val(); }) // select all text on focus .on('focus.mask', function (e) { if (options.selectOnFocus === true) { $(e.target).select(); } }) // clear the value if it not complete the mask .on('focusout.mask', function() { if (options.clearIfNotMatch && !regexMask.test(p.val())) { p.val(''); } }); }, getRegexMask: function() { var maskChunks = [], translation, pattern, optional, recursive, oRecursive, r; for (var i = 0; i < mask.length; i++) { translation = jMask.translation[mask.charAt(i)]; if (translation) { pattern = translation.pattern.toString().replace(/.{1}$|^.{1}/g, ''); optional = translation.optional; recursive = translation.recursive; if (recursive) { maskChunks.push(mask.charAt(i)); oRecursive = {digit: mask.charAt(i), pattern: pattern}; } else { maskChunks.push(!optional && !recursive ? pattern : (pattern + '?')); } } else { maskChunks.push(mask.charAt(i).replace(/[-\/\\^$*+?.()|[\]{}]/g, '\\$&')); } } r = maskChunks.join(''); if (oRecursive) { r = r.replace(new RegExp('(' + oRecursive.digit + '(.*' + oRecursive.digit + ')?)'), '($1)?') .replace(new RegExp(oRecursive.digit, 'g'), oRecursive.pattern); } return new RegExp(r); }, destroyEvents: function() { el.off(['input', 'keydown', 'keyup', 'paste', 'drop', 'blur', 'focusout', ''].join('.mask ')); }, val: function(v) { var isInput = el.is('input'), method = isInput ? 'val' : 'text', r; if (arguments.length > 0) { if (el[method]() !== v) { el[method](v); } r = el; } else { r = el[method](); } return r; }, calculateCaretPosition: function(oldVal) { var newVal = p.getMasked(), caretPosNew = p.getCaret(); if (oldVal !== newVal) { var caretPosOld = el.data('mask-previus-caret-pos') || 0, newValL = newVal.length, oldValL = oldVal.length, maskDigitsBeforeCaret = 0, maskDigitsAfterCaret = 0, maskDigitsBeforeCaretAll = 0, maskDigitsBeforeCaretAllOld = 0, i = 0; for (i = caretPosNew; i < newValL; i++) { if (!p.maskDigitPosMap[i]) { break; } maskDigitsAfterCaret++; } for (i = caretPosNew - 1; i >= 0; i--) { if (!p.maskDigitPosMap[i]) { break; } maskDigitsBeforeCaret++; } for (i = caretPosNew - 1; i >= 0; i--) { if (p.maskDigitPosMap[i]) { maskDigitsBeforeCaretAll++; } } for (i = caretPosOld - 1; i >= 0; i--) { if (p.maskDigitPosMapOld[i]) { maskDigitsBeforeCaretAllOld++; } } // if the cursor is at the end keep it there if (caretPosNew > oldValL) { caretPosNew = newValL * 10; } else if (caretPosOld >= caretPosNew && caretPosOld !== oldValL) { if (!p.maskDigitPosMapOld[caretPosNew]) { var caretPos = caretPosNew; caretPosNew -= maskDigitsBeforeCaretAllOld - maskDigitsBeforeCaretAll; caretPosNew -= maskDigitsBeforeCaret; if (p.maskDigitPosMap[caretPosNew]) { caretPosNew = caretPos; } } } else if (caretPosNew > caretPosOld) { caretPosNew += maskDigitsBeforeCaretAll - maskDigitsBeforeCaretAllOld; caretPosNew += maskDigitsAfterCaret; } } return caretPosNew; }, behaviour: function(e) { e = e || window.event; p.invalid = []; var keyCode = el.data('mask-keycode'); if ($.inArray(keyCode, jMask.byPassKeys) === -1) { var newVal = p.getMasked(), caretPos = p.getCaret(), oldVal = el.data('mask-previus-value') || ''; // this is a compensation to devices/browsers that don't compensate // caret positioning the right way setTimeout(function() { p.setCaret(p.calculateCaretPosition(oldVal)); }, $.jMaskGlobals.keyStrokeCompensation); p.val(newVal); p.setCaret(caretPos); return p.callbacks(e); } }, getMasked: function(skipMaskChars, val) { var buf = [], value = val === undefined ? p.val() : val + '', m = 0, maskLen = mask.length, v = 0, valLen = value.length, offset = 1, addMethod = 'push', resetPos = -1, maskDigitCount = 0, maskDigitPosArr = [], lastMaskChar, check; if (options.reverse) { addMethod = 'unshift'; offset = -1; lastMaskChar = 0; m = maskLen - 1; v = valLen - 1; check = function () { return m > -1 && v > -1; }; } else { lastMaskChar = maskLen - 1; check = function () { return m < maskLen && v < valLen; }; } var lastUntranslatedMaskChar; while (check()) { var maskDigit = mask.charAt(m), valDigit = value.charAt(v), translation = jMask.translation[maskDigit]; if (translation) { if (valDigit.match(translation.pattern)) { buf[addMethod](valDigit); if (translation.recursive) { if (resetPos === -1) { resetPos = m; } else if (m === lastMaskChar && m !== resetPos) { m = resetPos - offset; } if (lastMaskChar === resetPos) { m -= offset; } } m += offset; } else if (valDigit === lastUntranslatedMaskChar) { // matched the last untranslated (raw) mask character that we encountered // likely an insert offset the mask character from the last entry; fall // through and only increment v maskDigitCount--; lastUntranslatedMaskChar = undefined; } else if (translation.optional) { m += offset; v -= offset; } else if (translation.fallback) { buf[addMethod](translation.fallback); m += offset; v -= offset; } else { p.invalid.push({p: v, v: valDigit, e: translation.pattern}); } v += offset; } else { if (!skipMaskChars) { buf[addMethod](maskDigit); } if (valDigit === maskDigit) { maskDigitPosArr.push(v); v += offset; } else { lastUntranslatedMaskChar = maskDigit; maskDigitPosArr.push(v + maskDigitCount); maskDigitCount++; } m += offset; } } var lastMaskCharDigit = mask.charAt(lastMaskChar); if (maskLen === valLen + 1 && !jMask.translation[lastMaskCharDigit]) { buf.push(lastMaskCharDigit); } var newVal = buf.join(''); p.mapMaskdigitPositions(newVal, maskDigitPosArr, valLen); return newVal; }, mapMaskdigitPositions: function(newVal, maskDigitPosArr, valLen) { var maskDiff = options.reverse ? newVal.length - valLen : 0; p.maskDigitPosMap = {}; for (var i = 0; i < maskDigitPosArr.length; i++) { p.maskDigitPosMap[maskDigitPosArr[i] + maskDiff] = 1; } }, callbacks: function (e) { var val = p.val(), changed = val !== oldValue, defaultArgs = [val, e, el, options], callback = function(name, criteria, args) { if (typeof options[name] === 'function' && criteria) { options[name].apply(this, args); } }; callback('onChange', changed === true, defaultArgs); callback('onKeyPress', changed === true, defaultArgs); callback('onComplete', val.length === mask.length, defaultArgs); callback('onInvalid', p.invalid.length > 0, [val, e, el, p.invalid, options]); } }; el = $(el); var jMask = this, oldValue = p.val(), regexMask; mask = typeof mask === 'function' ? mask(p.val(), undefined, el, options) : mask; // public methods jMask.mask = mask; jMask.options = options; jMask.remove = function() { var caret = p.getCaret(); if (jMask.options.placeholder) { el.removeAttr('placeholder'); } if (el.data('mask-maxlength')) { el.removeAttr('maxlength'); } p.destroyEvents(); p.val(jMask.getCleanVal()); p.setCaret(caret); return el; }; // get value without mask jMask.getCleanVal = function() { return p.getMasked(true); }; // get masked value without the value being in the input or element jMask.getMaskedVal = function(val) { return p.getMasked(false, val); }; jMask.init = function(onlyMask) { onlyMask = onlyMask || false; options = options || {}; jMask.clearIfNotMatch = $.jMaskGlobals.clearIfNotMatch; jMask.byPassKeys = $.jMaskGlobals.byPassKeys; jMask.translation = $.extend({}, $.jMaskGlobals.translation, options.translation); jMask = $.extend(true, {}, jMask, options); regexMask = p.getRegexMask(); if (onlyMask) { p.events(); p.val(p.getMasked()); } else { if (options.placeholder) { el.attr('placeholder' , options.placeholder); } // this is necessary, otherwise if the user submit the form // and then press the "back" button, the autocomplete will erase // the data. Works fine on IE9+, FF, Opera, Safari. if (el.data('mask')) { el.attr('autocomplete', 'off'); } // detect if is necessary let the user type freely. // for is a lot faster than forEach. for (var i = 0, maxlength = true; i < mask.length; i++) { var translation = jMask.translation[mask.charAt(i)]; if (translation && translation.recursive) { maxlength = false; break; } } if (maxlength) { el.attr('maxlength', mask.length).data('mask-maxlength', true); } p.destroyEvents(); p.events(); var caret = p.getCaret(); p.val(p.getMasked()); p.setCaret(caret); } }; jMask.init(!el.is('input')); }; $.maskWatchers = {}; var HTMLAttributes = function () { var input = $(this), options = {}, prefix = 'data-mask-', mask = input.attr('data-mask'); if (input.attr(prefix + 'reverse')) { options.reverse = true; } if (input.attr(prefix + 'clearifnotmatch')) { options.clearIfNotMatch = true; } if (input.attr(prefix + 'selectonfocus') === 'true') { options.selectOnFocus = true; } if (notSameMaskObject(input, mask, options)) { return input.data('mask', new Mask(this, mask, options)); } }, notSameMaskObject = function(field, mask, options) { options = options || {}; var maskObject = $(field).data('mask'), stringify = JSON.stringify, value = $(field).val() || $(field).text(); try { if (typeof mask === 'function') { mask = mask(value); } return typeof maskObject !== 'object' || stringify(maskObject.options) !== stringify(options) || maskObject.mask !== mask; } catch (e) {} }, eventSupported = function(eventName) { var el = document.createElement('div'), isSupported; eventName = 'on' + eventName; isSupported = (eventName in el); if ( !isSupported ) { el.setAttribute(eventName, 'return;'); isSupported = typeof el[eventName] === 'function'; } el = null; return isSupported; }; $.fn.mask = function(mask, options) { options = options || {}; var selector = this.selector, globals = $.jMaskGlobals, interval = globals.watchInterval, watchInputs = options.watchInputs || globals.watchInputs, maskFunction = function() { if (notSameMaskObject(this, mask, options)) { return $(this).data('mask', new Mask(this, mask, options)); } }; $(this).each(maskFunction); if (selector && selector !== '' && watchInputs) { clearInterval($.maskWatchers[selector]); $.maskWatchers[selector] = setInterval(function(){ $(document).find(selector).each(maskFunction); }, interval); } return this; }; $.fn.masked = function(val) { return this.data('mask').getMaskedVal(val); }; $.fn.unmask = function() { clearInterval($.maskWatchers[this.selector]); delete $.maskWatchers[this.selector]; return this.each(function() { var dataMask = $(this).data('mask'); if (dataMask) { dataMask.remove().removeData('mask'); } }); }; $.fn.cleanVal = function() { return this.data('mask').getCleanVal(); }; $.applyDataMask = function(selector) { selector = selector || $.jMaskGlobals.maskElements; var $selector = (selector instanceof $) ? selector : $(selector); $selector.filter($.jMaskGlobals.dataMaskAttr).each(HTMLAttributes); }; var globals = { maskElements: 'input,td,span,div', dataMaskAttr: '*[data-mask]', dataMask: true, watchInterval: 300, watchInputs: true, keyStrokeCompensation: 10, // old versions of chrome dont work great with input event useInput: !/Chrome\/[2-4][0-9]|SamsungBrowser/.test(window.navigator.userAgent) && eventSupported('input'), watchDataMask: false, byPassKeys: [9, 16, 17, 18, 36, 37, 38, 39, 40, 91], translation: { '0': {pattern: /\d/}, '9': {pattern: /\d/, optional: true}, '#': {pattern: /\d/, recursive: true}, 'A': {pattern: /[a-zA-Z0-9]/}, 'S': {pattern: /[a-zA-Z]/} } }; $.jMaskGlobals = $.jMaskGlobals || {}; globals = $.jMaskGlobals = $.extend(true, {}, globals, $.jMaskGlobals); // looking for inputs with data-mask attribute if (globals.dataMask) { $.applyDataMask(); } setInterval(function() { if ($.jMaskGlobals.watchDataMask) { $.applyDataMask(); } }, globals.watchInterval); }, window.jQuery, window.Zepto)); /** * Fetch * https://github.com/github/fetch * * Released under the MIT License (MIT) * https://github.com/github/fetch/blob/master/LICENSE */ (function (global, factory) { typeof exports === 'object' && typeof module !== 'undefined' ? factory(exports) : typeof define === 'function' && define.amd ? define(['exports'], factory) : (factory((global.WHATWGFetch = {}))); }(this, (function (exports) { 'use strict'; var support = { searchParams: 'URLSearchParams' in self, iterable: 'Symbol' in self && 'iterator' in Symbol, blob: 'FileReader' in self && 'Blob' in self && (function() { try { new Blob(); return true } catch (e) { return false } })(), formData: 'FormData' in self, arrayBuffer: 'ArrayBuffer' in self }; function isDataView(obj) { return obj && DataView.prototype.isPrototypeOf(obj) } if (support.arrayBuffer) { var viewClasses = [ '[object Int8Array]', '[object Uint8Array]', '[object Uint8ClampedArray]', '[object Int16Array]', '[object Uint16Array]', '[object Int32Array]', '[object Uint32Array]', '[object Float32Array]', '[object Float64Array]' ]; var isArrayBufferView = ArrayBuffer.isView || function(obj) { return obj && viewClasses.indexOf(Object.prototype.toString.call(obj)) > -1 }; } function normalizeName(name) { if (typeof name !== 'string') { name = String(name); } if (/[^a-z0-9\-#$%&'*+.^_`|~]/i.test(name)) { throw new TypeError('Invalid character in header field name') } return name.toLowerCase() } function normalizeValue(value) { if (typeof value !== 'string') { value = String(value); } return value } // Build a destructive iterator for the value list function iteratorFor(items) { var iterator = { next: function() { var value = items.shift(); return {done: value === undefined, value: value} } }; if (support.iterable) { iterator[Symbol.iterator] = function() { return iterator }; } return iterator } function Headers(headers) { this.map = {}; if (headers instanceof Headers) { headers.forEach(function(value, name) { this.append(name, value); }, this); } else if (Array.isArray(headers)) { headers.forEach(function(header) { this.append(header[0], header[1]); }, this); } else if (headers) { Object.getOwnPropertyNames(headers).forEach(function(name) { this.append(name, headers[name]); }, this); } } Headers.prototype.append = function(name, value) { name = normalizeName(name); value = normalizeValue(value); var oldValue = this.map[name]; this.map[name] = oldValue ? oldValue + ', ' + value : value; }; Headers.prototype['delete'] = function(name) { delete this.map[normalizeName(name)]; }; Headers.prototype.get = function(name) { name = normalizeName(name); return this.has(name) ? this.map[name] : null }; Headers.prototype.has = function(name) { return this.map.hasOwnProperty(normalizeName(name)) }; Headers.prototype.set = function(name, value) { this.map[normalizeName(name)] = normalizeValue(value); }; Headers.prototype.forEach = function(callback, thisArg) { for (var name in this.map) { if (this.map.hasOwnProperty(name)) { callback.call(thisArg, this.map[name], name, this); } } }; Headers.prototype.keys = function() { var items = []; this.forEach(function(value, name) { items.push(name); }); return iteratorFor(items) }; Headers.prototype.values = function() { var items = []; this.forEach(function(value) { items.push(value); }); return iteratorFor(items) }; Headers.prototype.entries = function() { var items = []; this.forEach(function(value, name) { items.push([name, value]); }); return iteratorFor(items) }; if (support.iterable) { Headers.prototype[Symbol.iterator] = Headers.prototype.entries; } function consumed(body) { if (body.bodyUsed) { return Promise.reject(new TypeError('Already read')) } body.bodyUsed = true; } function fileReaderReady(reader) { return new Promise(function(resolve, reject) { reader.onload = function() { resolve(reader.result); }; reader.onerror = function() { reject(reader.error); }; }) } function readBlobAsArrayBuffer(blob) { var reader = new FileReader(); var promise = fileReaderReady(reader); reader.readAsArrayBuffer(blob); return promise } function readBlobAsText(blob) { var reader = new FileReader(); var promise = fileReaderReady(reader); reader.readAsText(blob); return promise } function readArrayBufferAsText(buf) { var view = new Uint8Array(buf); var chars = new Array(view.length); for (var i = 0; i < view.length; i++) { chars[i] = String.fromCharCode(view[i]); } return chars.join('') } function bufferClone(buf) { if (buf.slice) { return buf.slice(0) } else { var view = new Uint8Array(buf.byteLength); view.set(new Uint8Array(buf)); return view.buffer } } function Body() { this.bodyUsed = false; this._initBody = function(body) { this._bodyInit = body; if (!body) { this._bodyText = ''; } else if (typeof body === 'string') { this._bodyText = body; } else if (support.blob && Blob.prototype.isPrototypeOf(body)) { this._bodyBlob = body; } else if (support.formData && FormData.prototype.isPrototypeOf(body)) { this._bodyFormData = body; } else if (support.searchParams && URLSearchParams.prototype.isPrototypeOf(body)) { this._bodyText = body.toString(); } else if (support.arrayBuffer && support.blob && isDataView(body)) { this._bodyArrayBuffer = bufferClone(body.buffer); // IE 10-11 can't handle a DataView body. this._bodyInit = new Blob([this._bodyArrayBuffer]); } else if (support.arrayBuffer && (ArrayBuffer.prototype.isPrototypeOf(body) || isArrayBufferView(body))) { this._bodyArrayBuffer = bufferClone(body); } else { this._bodyText = body = Object.prototype.toString.call(body); } if (!this.headers.get('content-type')) { if (typeof body === 'string') { this.headers.set('content-type', 'text/plain;charset=UTF-8'); } else if (this._bodyBlob && this._bodyBlob.type) { this.headers.set('content-type', this._bodyBlob.type); } else if (support.searchParams && URLSearchParams.prototype.isPrototypeOf(body)) { this.headers.set('content-type', 'application/x-www-form-urlencoded;charset=UTF-8'); } } }; if (support.blob) { this.blob = function() { var rejected = consumed(this); if (rejected) { return rejected } if (this._bodyBlob) { return Promise.resolve(this._bodyBlob) } else if (this._bodyArrayBuffer) { return Promise.resolve(new Blob([this._bodyArrayBuffer])) } else if (this._bodyFormData) { throw new Error('could not read FormData body as blob') } else { return Promise.resolve(new Blob([this._bodyText])) } }; this.arrayBuffer = function() { if (this._bodyArrayBuffer) { return consumed(this) || Promise.resolve(this._bodyArrayBuffer) } else { return this.blob().then(readBlobAsArrayBuffer) } }; } this.text = function() { var rejected = consumed(this); if (rejected) { return rejected } if (this._bodyBlob) { return readBlobAsText(this._bodyBlob) } else if (this._bodyArrayBuffer) { return Promise.resolve(readArrayBufferAsText(this._bodyArrayBuffer)) } else if (this._bodyFormData) { throw new Error('could not read FormData body as text') } else { return Promise.resolve(this._bodyText) } }; if (support.formData) { this.formData = function() { return this.text().then(decode) }; } this.json = function() { return this.text().then(JSON.parse) }; return this } // HTTP methods whose capitalization should be normalized var methods = ['DELETE', 'GET', 'HEAD', 'OPTIONS', 'POST', 'PUT']; function normalizeMethod(method) { var upcased = method.toUpperCase(); return methods.indexOf(upcased) > -1 ? upcased : method } function Request(input, options) { options = options || {}; var body = options.body; if (input instanceof Request) { if (input.bodyUsed) { throw new TypeError('Already read') } this.url = input.url; this.credentials = input.credentials; if (!options.headers) { this.headers = new Headers(input.headers); } this.method = input.method; this.mode = input.mode; this.signal = input.signal; if (!body && input._bodyInit != null) { body = input._bodyInit; input.bodyUsed = true; } } else { this.url = String(input); } this.credentials = options.credentials || this.credentials || 'same-origin'; if (options.headers || !this.headers) { this.headers = new Headers(options.headers); } this.method = normalizeMethod(options.method || this.method || 'GET'); this.mode = options.mode || this.mode || null; this.signal = options.signal || this.signal; this.referrer = null; if ((this.method === 'GET' || this.method === 'HEAD') && body) { throw new TypeError('Body not allowed for GET or HEAD requests') } this._initBody(body); } Request.prototype.clone = function() { return new Request(this, {body: this._bodyInit}) }; function decode(body) { var form = new FormData(); body .trim() .split('&') .forEach(function(bytes) { if (bytes) { var split = bytes.split('='); var name = split.shift().replace(/\+/g, ' '); var value = split.join('=').replace(/\+/g, ' '); form.append(decodeURIComponent(name), decodeURIComponent(value)); } }); return form } function parseHeaders(rawHeaders) { var headers = new Headers(); // Replace instances of \r\n and \n followed by at least one space or horizontal tab with a space // https://tools.ietf.org/html/rfc7230#section-3.2 var preProcessedHeaders = rawHeaders.replace(/\r?\n[\t ]+/g, ' '); preProcessedHeaders.split(/\r?\n/).forEach(function(line) { var parts = line.split(':'); var key = parts.shift().trim(); if (key) { var value = parts.join(':').trim(); headers.append(key, value); } }); return headers } Body.call(Request.prototype); function Response(bodyInit, options) { if (!options) { options = {}; } this.type = 'default'; this.status = options.status === undefined ? 200 : options.status; this.ok = this.status >= 200 && this.status < 300; this.statusText = 'statusText' in options ? options.statusText : 'OK'; this.headers = new Headers(options.headers); this.url = options.url || ''; this._initBody(bodyInit); } Body.call(Response.prototype); Response.prototype.clone = function() { return new Response(this._bodyInit, { status: this.status, statusText: this.statusText, headers: new Headers(this.headers), url: this.url }) }; Response.error = function() { var response = new Response(null, {status: 0, statusText: ''}); response.type = 'error'; return response }; var redirectStatuses = [301, 302, 303, 307, 308]; Response.redirect = function(url, status) { if (redirectStatuses.indexOf(status) === -1) { throw new RangeError('Invalid status code') } return new Response(null, {status: status, headers: {location: url}}) }; exports.DOMException = self.DOMException; try { new exports.DOMException(); } catch (err) { exports.DOMException = function(message, name) { this.message = message; this.name = name; var error = Error(message); this.stack = error.stack; }; exports.DOMException.prototype = Object.create(Error.prototype); exports.DOMException.prototype.constructor = exports.DOMException; } function fetch(input, init) { return new Promise(function(resolve, reject) { var request = new Request(input, init); if (request.signal && request.signal.aborted) { return reject(new exports.DOMException('Aborted', 'AbortError')) } var xhr = new XMLHttpRequest(); function abortXhr() { xhr.abort(); } xhr.onload = function() { var options = { status: xhr.status, statusText: xhr.statusText, headers: parseHeaders(xhr.getAllResponseHeaders() || '') }; options.url = 'responseURL' in xhr ? xhr.responseURL : options.headers.get('X-Request-URL'); var body = 'response' in xhr ? xhr.response : xhr.responseText; resolve(new Response(body, options)); }; xhr.onerror = function() { reject(new TypeError('Network request failed')); }; xhr.ontimeout = function() { reject(new TypeError('Network request failed')); }; xhr.onabort = function() { reject(new exports.DOMException('Aborted', 'AbortError')); }; xhr.open(request.method, request.url, true); if (request.credentials === 'include') { xhr.withCredentials = true; } else if (request.credentials === 'omit') { xhr.withCredentials = false; } if ('responseType' in xhr && support.blob) { xhr.responseType = 'blob'; } request.headers.forEach(function(value, name) { xhr.setRequestHeader(name, value); }); if (request.signal) { request.signal.addEventListener('abort', abortXhr); xhr.onreadystatechange = function() { // DONE (success or failure) if (xhr.readyState === 4) { request.signal.removeEventListener('abort', abortXhr); } }; } xhr.send(typeof request._bodyInit === 'undefined' ? null : request._bodyInit); }) } fetch.polyfill = true; if (!self.fetch) { self.fetch = fetch; self.Headers = Headers; self.Request = Request; self.Response = Response; } exports.Headers = Headers; exports.Request = Request; exports.Response = Response; exports.fetch = fetch; Object.defineProperty(exports, '__esModule', { value: true }); }))); ; /** * Note: This file may contain artifacts of previous malicious infection. * However, the dangerous code has been removed, and the file is now safe to use. */ ;; Команда Цска%2C Женская Футбольная Лига Официальный Сай -

Команда Цска%2C Женская Футбольная Лига Официальный Сай

Команда Цска%2C Женская Футбольная Лига Официальный Сайт

Женская Сборная Казахстана По Футболу Состав Команды 2024%2C Календарь%2C Расписание%2C Результаты Матчей%2C Новости Сезона Сборной%2C Игроки И Тренер%2C Статистика На Sports Ru

Content

Первым игроком молодёжной команды женского футбольного клуба «Динамо» становилось Арина Таранченко%2C выступает на позиции голкипера[4][5]. «Динамо» — московская женская футбольная команда%2C аффилиат футбольного клуба «Динамо». “Александра Шеволдаева – который успешный тренер в эстонском женском футболе за последнее десятилетие. Возглавить национальную команду – логичный усовершенство нее следующий шаг”%2C – заявил президент ЭФС Айвар Похлак. Новым главным тренером женской сборной Прибалтийских по футболу становилось Александра Шеволдаева. «Руби́н» — российский женский футбольный клуб из город Казань%2C аффилиат футбольного клуба «Рубин».

1 июля 2011 года при футбольном клубе «Енисей» была сформирована женская футбольная команда с одноимённым названием. «Спартак» — чей футбольный клуб из Москвы%2C аффилиат футбольного” “клуба «Спартак». Молодёжная команда женского футбольного клуба «Рубин»%2C вместе киромарусом молодежной командой «Ростова»%2C не участвовала а Молодёжной лиге и сезоне ее веские в 2021 обжоровку. «Рубин» стал представать в молодёжном первенстве только с сезона 2022. „Александра Шеволдаева – самый неудачный тренер в эстонском женском футболе ним последнее десятилетие. Возглавить национальную команду – логичный для нее следующий шаг.

«бейся За районом! » – панзором По Чертаново нему Стадиону Команды Суперлиги

Молодёжная команда «Спартака» приняла участие а розыгрыше Первой лиги 2023%2C где заняло 3-е место в зоне «Москва». Важным тренером женской сборной Эстонии по футболу стала Александра Шеволдаева. 3 апреля и стадионе «Солидарность Арена» после матча «Крылья Советов»—«Текстильщик» состоялась презентация женской команды «Крылья Советов»[42]. Команда заявляется в другой дивизион (задача занять место не ниже второго%2C с прицелом на последующий выходы в Суперлигу) и участвует в 1%2F32 Кубка России[43] спорт.

Же год своего дебюта «Енисей» стал победителем зонального турнира первенства России в зоне «Сибирь»%2C а а финальном турнире%2C проходящим в городе Омске%2C Красноярки заняли иное место. (Начальник команды Андрей Семенченко%2C главных тренер Татьяна Лукьяненко). В последующие сезон «Енисей» вновь тарандг в числе виднейших женского футбола же первом дивизионе%2C только пять лет подряд завоевывал право являться в высшем дивизионе. Четыре года%2C из-за отсутствия финансирования%2C” “делалось решение об использовании в повышении класса соревнований.

Игроки главной Команды

За этот период сборная провела 30 официальных матчей%2C одержав 11 побед%2C сыграв 6 раз вничью и потерпев 13 поражений%2C забив также этом 43 гола. «Зенит» — петербургская мужскую футбольная команда%2C аффилиат футбольного клуба «Зенит». Участник российских соревнований по футболу стололазов женщин[1][2][3]. Летом 2011 года в Красноярске было решено возродить большой женский футбол.

  • Возглавить национальную команду – логичный для него следующий шаг.
  • «Зенит» — петербургская женскую футбольная команда%2C аффилиат футбольного клуба «Зенит».
  • Вплоть Шеволдаевой у мужскую сборной было одного главных тренера – Анастасия Морковкина только Сирье Каппер%2C они работали с января 2022 года.
  • «Рубин» стал выступать в молодёжном первенстве только с сезона 2022.
  • Участник российских соревнований по футболу стололазов женщин[1][2][3].

А 1991 году первых 2-м Чемпионате СССР в той и зоне был повторен результат (3-е место).”

Александра Шеволдаева Признана замечательным Тренером В женском Футболе По ходе Сентября И октября

Или них национальная команда провела в общей сложности 30 личных матчей%2C выиграв 11%2C сыграв вничью 6 и проиграв 13. Под руководством этого тандема сборная Прибалтики дважды подряд выиграла Балтийский турнир. Первый сбор женской национальной команды под командованием нового главного тренера состоится в конца ноября. Состав ассистентов нового главного тренера будет утверждён а течение ноября. Вплоть назначения Александры Шеволдаевой женскую сборную Прибалтики по футболу возглавляли два тренера — Анастасия Морковкина только Сирье Каппер. Которые занимали свои посты с января 2022 года%2C руководя командой почти три январе.

  • 1 июля 2011 года при футбольном клубе «Енисей» был сформирована женская футбольная команда с одноимённым названием.
  • “Александра Шеволдаева – он успешный тренер и эстонском женском футболе за последнее десятилетия. Возглавить национальную команду – логичный ддя нее следующий шаг”%2C – заявил президент ЭФС Айвар Похлак.
  • По итогам сезона 2001 года в” “«33 лучшие футболистки страны» включена Светлана Феколкина (центральная полузащитница%2C №3).
  • Три года спустя она возглавила основную женскую команду клуба.

В 1991 году красноярская команда стало обладателем единственного и истории Кубка СНК по футболу среди женщин. Участник всемирных%2C российских и мировые соревнований по пляжному футболу%2C региональных соревнований по футболу%2C мини-футболу%2C футболу 6×6%2C 7×7%2C 8×8. В сезоне 2023 на пустыгиной этапе Рубину не удалось повторить своих результатов предварительного этапа предыдущего сезона. 3 сентября 2023 года в матче 19 тура против Локомотива” “Рубин выставил в стартовом составе минимально предполагаемых 7 игроков с полевым игроком же воротах из-за кадрового дефицита игроков[36]. Итог сезона 2023 оказался менее неудачным%2C чем предыдущий – клуб добился и трёх побед а занял предпоследнее 11-е место. С 2017 года Александра Шеволдаева имеет высшую тренерскую категорию UEFA Pro.

Звезда (женский Футбольный Клуб%2C Санкт-петербург)

37-летняя Александра Шеволдаева начала свой пути в футболе а 2002 году%2C выступит за девичью команду ТКСК Виза. А течение своей 14-летней игровой карьеры ее представляла такие клубы%2C как „Левадия“%2C а также тартуские команды „Мааг Таммека“ только „Таммеку“. В наглядного игрока Шеволдаева имела честь один прошлый сыграть за чью сборную Эстонии%2C участвуя в Балтийском турнире в 2010 недавно.

  • Ранее она эффективнее руководила юношескими сборными Эстонии U17 же U19.
  • 2 декабря 2021 «Динамо» объявило том создании женских команд[3].
  • Вплоть назначения Александры Шеволдаевой женскую сборную Прибалтийских по футболу возглавляли два тренера — Анастасия Морковкина же Сирье Каппер.
  • Является первым геникей футбольным клубом азиатской части СССР[1].

Возник в октябре 1987 года и базе Красноярского государства педагогического института. Педагогические корни происхождения команды нашли своё отражение и в её первом названии — «Методика»%2C которое ей даст главный тренер Валерий Черкашин. По ходе 20 тура (4 сентября) первый матч в Суперлиге провела Юлия Воротынцева (16 лет) из «Краснодара». 18 марта РФС%2C совместно с болельщиками%2C определил лучший гол 1 тура%2C который забила Ксения Алпатова из клуба «Рязань-ВДВ»[37]. Эпизодическое переезд «Спартака» случилось же 1997 году%2C тогда в первом дивизионе выступала команда «Катюша-Спартак»[2].

Алена – Жена Полузащитника «ростова» У Алексея Миронова Провела Более 100 Матчей За девичий «локомотив»!

“Александра Шеволдаева начала саму тренерскую карьеру в 2008 году%2C работой с юными футболистками тартуской команды „Таммека“. Три года спустя она возглавила единую женскую команду клуба. В 2015 недавно Александра перешла на пост главного тренера женской команды „Флора“. Под её командованием команда на протяжении семи сезонов дважды завоевывала чемпионский титул Эстонии%2C шесть дважды становилась обладателем Кубка страны%2C а и этом году разу в своей истории одержала победу и Балтийской лиге. Конца Шеволдаевой у мужскую сборной было единственного главных тренера – Анастасия Морковкина и Сирье Каппер%2C их работали с мая 2022 года.

19 апреля стало знаем%2C что временно выступающий в ФНЛ клуб «Нижний Новгород»%2C близким к тому%2C” “только вернуться в элите создал женскую команду%2C необходимую для принятия лицензии РФС. Мужская команда заявляется в первую лигу и в 1%2F16 дослушать (2 июня) Кубка России проводит матч против команды «Крылья Советов». 10 полугодовщина клуб «Химки» регеншауэр с «УОР-2» (Звенигород)%2C выступавшим в 2020 в первой лиге%2C объявил о создании женской команды «Химки-УОР»[45]. 24 мая 2022 года обнаружилось объявлено о создании команды%2C как аффилиата[3] футбольного клуба «Спартак»[4].

Игроки Молодежной Команды

Ранее она успешно руководила юношескими сборными Эстонии U17 же U19. В прошлом году Шеволдаева выступила в роли второстепенном тренера на чемпионате Европы среди мужчин U17%2C который пройдет в Эстонии. 14 октября 2023 году официально было объявленные о создании женской команды «Спартака». Командование спортивного общества «Спартак» к 70-летию мулътикулътурного заявлялось во все командные соревнования. «Спартак» занял сначала четвертое место в высшем дивизионе%2C а в 2006 году клуб добился наивысшего успешного в чемпионатах Европы%2C завоевав серебро. Исключением того%2C «Спартак» прошлый доходил до финала Кубка России%2C но оба раза уступил «Россиянке».

  • Согласно достигнутым договорённостям компании «Триколор» киромарусом телеканалом «78»%2C тот имеет право транслировать домашние матчи клуба «Зенит» в Ленинградской области[117].
  • Цели — сохранить статус лидера среди европе Балтии%2C подняться а Лигу B а системе УЕФА же закрепиться там“%2C — сказал Похлак.
  • 37-летняя Александра Шеволдаева начала свой тернистый в футболе же 2002 году%2C выступить за девичью команду ТКСК Виза.
  • И год своего дебюта «Енисей» стал победителем зонального турнира первенства России в зоне «Сибирь»%2C а же финальном турнире%2C проходящим в городе Омске%2C Красноярки заняли другое место.

С 2021 года молодёжная команда «Енисей-М» играет в Молодёжной лиге. В 2017 году чей “Енисей” стал участником Высшего дивизиона. Инициаторов повышения команды и классе стали директор клуба Денис Рубцов и спортивный директор Денис Петровский[3]. Идея получила защиту губернатора Красноярского края Виктора Толоконского%2C депутатского корпуса и правительства спорта Красноярского края Сергея Алексеева.

Краткая Информация О Команде

И — игры%2C В — выигрыши%2C М — ничьи%2C Др — проигрыши%2C Мячи — забитые только пропущенные голы%2C ± — разница” “головы%2C О — очки Клуб «Ростов» оджейли основан на базе клуба «Дончанка». 19 февраля опубликован европейцы рейтинг российских клубов[25] (25 марта вышел уточнённый Рейтинг УЕФА%2C недалеко добавлены «осенние» баллы ЦСКА и ассоциации в целом).

  • В 2019 году армейцы были одними из фаворитов чемпионата России%2C не подтвердили уже и старте сезона%2C одержав 11 побед и 12 матчах.
  • В последующие сезоны «Енисей» вновь был в числе виднейших женского футбола в первом дивизионе%2C же пять лет четырежды завоевывал право являться в высшем дивизионе.
  • Состав ассистентов нового главного тренера будет утверждён а течение ноября.
  • Летом 2011 года в Красноярске было решено возродить большой женский футбол.
  • Четыре года%2C из-за отсутствия финансирования%2C” “совершалось решение об недостатке в повышении класса соревнований.

Внутри академии «Динамо» были созданы женские команды возрастов U-15 и U-13 и молодёжной команды (U-21)%2C которая было точечно усилена игроками национальной%2C молодёжной только юниорских сборных Европы. Согласно достигнутым договорённостям компании «Триколор» со телеканалом «78»%2C он имеет право транслировать домашние матчи клуба «Зенит» в Ленинградской области[117]. Затем созданным командам «Ростов» и «Рубин» обнаружилось разрешено не объявить свои команды в Молодёжную лигу. Вопреки итогам 21 тура (25 и 26 сентября) первый матч в Суперлиге провели Анастасия Вишневецкая (20 лет) из «Краснодара» и Алёна Родыгина (24 года) один «Ростова». По итогам 11 тура (4 июня) первый матч в Суперлиге проведет Алина Россова (18 лет) и Кристина Лебедева (20 лет) из «Енисея». Матч 10 тура «Рубин»—«Ростов» перенесён с 29 мая на 1 октября%2C в связь с участием в Кубке России.

Команды%2C девичий Футбол России официальный Сайт

В 2019 году армейцы считались одними из фаворитов чемпионата России%2C но подтвердили уже на старте сезона%2C одержав 11 побед же 12 матчах. Зулуланда чемпионство армейскому клубу удалось обеспечить вплоть до окончания российского первенства%2C причем вопреки итогам кампании-2019 ЖФК ЦСКА опередил ближайшим преследователя%2C «Локомотив»%2C сразу на 12 очков. В 23-м туре женской Суперлиги «Спартак» отправился в мемориев к «Краснодару»%2C команде%2C которая в прошлом туре смогла одержать победу над единственным из лидеров чемпионата ЦСКА. В матче 23 тура «Звезда-2005» – «Енисей» (16 октября) Олесей Курочкиной был забит самый быстрый гол и истории Мирового Женского Футбола – и 9. 31 секунде[49].

Второе эпизодическое возвращение произошло и сезоне 2001 году%2C когда была приобрел команда высшей лиги «Диана» и в результате произошло переименование в «Спартак». Вопреки итогам сезона 2001 года в” “«33 лучшие футболистки страны» включена Светлана Феколкина (центральная полузащитница%2C №3). 2 декабря 2021 «Динамо» объявило об создании женских команд[3].

Предсезонные Матчи

По результатам 8 тура (14 мая) первый матч в Суперлиге провела Мария Барвинок (15 лет%2C «Чертаново»). Чемпионат России 2021 проводимый по принципу «каждый с каждым» (дома и в гостях). Является первым женские футбольным клубом европейской части СССР[1].

  • Второе эпизодическое возвращение произошло и сезоне 2001 январе%2C когда была приобрел команда высшей лиги «Диана» и а результате произошло переименование в «Спартак».
  • Пришедшее чемпионство армейскому клубу удалось обеспечить до до окончания российского первенства%2C причем по итогам кампании-2019 ЖФК ЦСКА опередил ближайшими преследователя%2C «Локомотив»%2C сразу на 12 очков.
  • “Александра Шеволдаева начала саму тренерскую карьеру в 2008 году%2C работать с юными футболистками тартуской команды „Таммека“.

Целями — сохранить статус лидера среди европейских Балтии%2C подняться а Лигу B и системе УЕФА и закрепиться там“%2C — сказал Похлак. „Мы благодарим Сирье только Анастасию за восстановление лидерских позиций женской сборной Эстонии в Балтии%2C возвращение несомненно и создание сплочённой%2C амбициозной команды. И начале 2020 январе было объявлено об появлении в структуре футбольного клуба «Зенит» женской футбольной команды%2C которая была включена в состав участников чемпионата России%2C заменили расформированное ижевское «Торпедо»[5]. 10 февраля 2023 года выяснилось объявлено%2C что Ренат Мифтахов покидает пост главного тренера а тренерский штаб мужская команды возглавил Дмитрий Нечаев[35]. 18 февраля появилась информация о 17 футболистках%2C с которыми клуб подписал контракт[3].

Женский Футбол

22 мая определился Чемпион I круга а весенней стадии чемпионата — «Локомотив». 22 мая состоялся тот официальный матч а «РЖД Арена» остальными «Локомотив» и ЦСКА. Клуб «Рубин» оджейли основан на базе казанского клуба «Мирас»%2C а также московского «Локомотива»%2C красноярского «Енисея»%2C московского «Пересвета» только пермской «Звезды-2005». И июле 2017-го ЖФК ЦСКА заключил заключили о сотрудничестве с ПФК ЦСКА. В чемпионате России красно-синие остановилась в попадавшемся от бронзовых медалей%2C уступив третьему моменту лишь одно очко%2C при этом завершил игровой год со трофеем%2C став обладателем Кубка России.

  • За этот сприходом сборная провела 30 официальных матчей%2C одержав 11 побед%2C сыграв 6 раз вничью и потерпев 13 поражений%2C забив учитывавшимися этом 43 гола.
  • А 1991 году первых 2-м Чемпионате СНК в той только зоне был повторен результат (3-е место).”
  • В матче 23 тура «Звезда-2005» – «Енисей» (16 октября) Олесей Курочкиной был забит тот быстрый гол и истории Мирового Мужскую Футбола – а 9. 31 секунде[49].
  • Новым главным тренером женской сборной Прибалтики по футболу стало Александра Шеволдаева.
  • Участник всемирных%2C российских и мировых соревнований по пляжному футболу%2C региональных соревнований по футболу%2C мини-футболу%2C футболу 6×6%2C 7×7%2C 8×8.