Edit File by line

Deprecated: str_replace(): Passing null to parameter #2 ($replace) of type array|string is deprecated in /home/sportsfever/public_html/filemanger/function.php on line 93

Warning: Undefined array key "page_file_edit_line" in /home/sportsfever/public_html/filemanger/edit_text_line.php on line 32
/home/sportsfe.../httpdocs/clone/wp-inclu.../js/dist
File: block-editor.js
[6000] Fix | Delete
/***/ }),
[6001] Fix | Delete
[6002] Fix | Delete
/***/ 9434:
[6003] Fix | Delete
/***/ ((module, __unused_webpack_exports, __webpack_require__) => {
[6004] Fix | Delete
[6005] Fix | Delete
"use strict";
[6006] Fix | Delete
[6007] Fix | Delete
[6008] Fix | Delete
let Container = __webpack_require__(683)
[6009] Fix | Delete
[6010] Fix | Delete
let LazyResult, Processor
[6011] Fix | Delete
[6012] Fix | Delete
class Root extends Container {
[6013] Fix | Delete
constructor(defaults) {
[6014] Fix | Delete
super(defaults)
[6015] Fix | Delete
this.type = 'root'
[6016] Fix | Delete
if (!this.nodes) this.nodes = []
[6017] Fix | Delete
}
[6018] Fix | Delete
[6019] Fix | Delete
normalize(child, sample, type) {
[6020] Fix | Delete
let nodes = super.normalize(child)
[6021] Fix | Delete
[6022] Fix | Delete
if (sample) {
[6023] Fix | Delete
if (type === 'prepend') {
[6024] Fix | Delete
if (this.nodes.length > 1) {
[6025] Fix | Delete
sample.raws.before = this.nodes[1].raws.before
[6026] Fix | Delete
} else {
[6027] Fix | Delete
delete sample.raws.before
[6028] Fix | Delete
}
[6029] Fix | Delete
} else if (this.first !== sample) {
[6030] Fix | Delete
for (let node of nodes) {
[6031] Fix | Delete
node.raws.before = sample.raws.before
[6032] Fix | Delete
}
[6033] Fix | Delete
}
[6034] Fix | Delete
}
[6035] Fix | Delete
[6036] Fix | Delete
return nodes
[6037] Fix | Delete
}
[6038] Fix | Delete
[6039] Fix | Delete
removeChild(child, ignore) {
[6040] Fix | Delete
let index = this.index(child)
[6041] Fix | Delete
[6042] Fix | Delete
if (!ignore && index === 0 && this.nodes.length > 1) {
[6043] Fix | Delete
this.nodes[1].raws.before = this.nodes[index].raws.before
[6044] Fix | Delete
}
[6045] Fix | Delete
[6046] Fix | Delete
return super.removeChild(child)
[6047] Fix | Delete
}
[6048] Fix | Delete
[6049] Fix | Delete
toResult(opts = {}) {
[6050] Fix | Delete
let lazy = new LazyResult(new Processor(), this, opts)
[6051] Fix | Delete
return lazy.stringify()
[6052] Fix | Delete
}
[6053] Fix | Delete
}
[6054] Fix | Delete
[6055] Fix | Delete
Root.registerLazyResult = dependant => {
[6056] Fix | Delete
LazyResult = dependant
[6057] Fix | Delete
}
[6058] Fix | Delete
[6059] Fix | Delete
Root.registerProcessor = dependant => {
[6060] Fix | Delete
Processor = dependant
[6061] Fix | Delete
}
[6062] Fix | Delete
[6063] Fix | Delete
module.exports = Root
[6064] Fix | Delete
Root.default = Root
[6065] Fix | Delete
[6066] Fix | Delete
Container.registerRoot(Root)
[6067] Fix | Delete
[6068] Fix | Delete
[6069] Fix | Delete
/***/ }),
[6070] Fix | Delete
[6071] Fix | Delete
/***/ 4092:
[6072] Fix | Delete
/***/ ((module, __unused_webpack_exports, __webpack_require__) => {
[6073] Fix | Delete
[6074] Fix | Delete
"use strict";
[6075] Fix | Delete
[6076] Fix | Delete
[6077] Fix | Delete
let Container = __webpack_require__(683)
[6078] Fix | Delete
let list = __webpack_require__(7374)
[6079] Fix | Delete
[6080] Fix | Delete
class Rule extends Container {
[6081] Fix | Delete
constructor(defaults) {
[6082] Fix | Delete
super(defaults)
[6083] Fix | Delete
this.type = 'rule'
[6084] Fix | Delete
if (!this.nodes) this.nodes = []
[6085] Fix | Delete
}
[6086] Fix | Delete
[6087] Fix | Delete
get selectors() {
[6088] Fix | Delete
return list.comma(this.selector)
[6089] Fix | Delete
}
[6090] Fix | Delete
[6091] Fix | Delete
set selectors(values) {
[6092] Fix | Delete
let match = this.selector ? this.selector.match(/,\s*/) : null
[6093] Fix | Delete
let sep = match ? match[0] : ',' + this.raw('between', 'beforeOpen')
[6094] Fix | Delete
this.selector = values.join(sep)
[6095] Fix | Delete
}
[6096] Fix | Delete
}
[6097] Fix | Delete
[6098] Fix | Delete
module.exports = Rule
[6099] Fix | Delete
Rule.default = Rule
[6100] Fix | Delete
[6101] Fix | Delete
Container.registerRule(Rule)
[6102] Fix | Delete
[6103] Fix | Delete
[6104] Fix | Delete
/***/ }),
[6105] Fix | Delete
[6106] Fix | Delete
/***/ 346:
[6107] Fix | Delete
/***/ ((module) => {
[6108] Fix | Delete
[6109] Fix | Delete
"use strict";
[6110] Fix | Delete
[6111] Fix | Delete
[6112] Fix | Delete
const DEFAULT_RAW = {
[6113] Fix | Delete
after: '\n',
[6114] Fix | Delete
beforeClose: '\n',
[6115] Fix | Delete
beforeComment: '\n',
[6116] Fix | Delete
beforeDecl: '\n',
[6117] Fix | Delete
beforeOpen: ' ',
[6118] Fix | Delete
beforeRule: '\n',
[6119] Fix | Delete
colon: ': ',
[6120] Fix | Delete
commentLeft: ' ',
[6121] Fix | Delete
commentRight: ' ',
[6122] Fix | Delete
emptyBody: '',
[6123] Fix | Delete
indent: ' ',
[6124] Fix | Delete
semicolon: false
[6125] Fix | Delete
}
[6126] Fix | Delete
[6127] Fix | Delete
function capitalize(str) {
[6128] Fix | Delete
return str[0].toUpperCase() + str.slice(1)
[6129] Fix | Delete
}
[6130] Fix | Delete
[6131] Fix | Delete
class Stringifier {
[6132] Fix | Delete
constructor(builder) {
[6133] Fix | Delete
this.builder = builder
[6134] Fix | Delete
}
[6135] Fix | Delete
[6136] Fix | Delete
atrule(node, semicolon) {
[6137] Fix | Delete
let name = '@' + node.name
[6138] Fix | Delete
let params = node.params ? this.rawValue(node, 'params') : ''
[6139] Fix | Delete
[6140] Fix | Delete
if (typeof node.raws.afterName !== 'undefined') {
[6141] Fix | Delete
name += node.raws.afterName
[6142] Fix | Delete
} else if (params) {
[6143] Fix | Delete
name += ' '
[6144] Fix | Delete
}
[6145] Fix | Delete
[6146] Fix | Delete
if (node.nodes) {
[6147] Fix | Delete
this.block(node, name + params)
[6148] Fix | Delete
} else {
[6149] Fix | Delete
let end = (node.raws.between || '') + (semicolon ? ';' : '')
[6150] Fix | Delete
this.builder(name + params + end, node)
[6151] Fix | Delete
}
[6152] Fix | Delete
}
[6153] Fix | Delete
[6154] Fix | Delete
beforeAfter(node, detect) {
[6155] Fix | Delete
let value
[6156] Fix | Delete
if (node.type === 'decl') {
[6157] Fix | Delete
value = this.raw(node, null, 'beforeDecl')
[6158] Fix | Delete
} else if (node.type === 'comment') {
[6159] Fix | Delete
value = this.raw(node, null, 'beforeComment')
[6160] Fix | Delete
} else if (detect === 'before') {
[6161] Fix | Delete
value = this.raw(node, null, 'beforeRule')
[6162] Fix | Delete
} else {
[6163] Fix | Delete
value = this.raw(node, null, 'beforeClose')
[6164] Fix | Delete
}
[6165] Fix | Delete
[6166] Fix | Delete
let buf = node.parent
[6167] Fix | Delete
let depth = 0
[6168] Fix | Delete
while (buf && buf.type !== 'root') {
[6169] Fix | Delete
depth += 1
[6170] Fix | Delete
buf = buf.parent
[6171] Fix | Delete
}
[6172] Fix | Delete
[6173] Fix | Delete
if (value.includes('\n')) {
[6174] Fix | Delete
let indent = this.raw(node, null, 'indent')
[6175] Fix | Delete
if (indent.length) {
[6176] Fix | Delete
for (let step = 0; step < depth; step++) value += indent
[6177] Fix | Delete
}
[6178] Fix | Delete
}
[6179] Fix | Delete
[6180] Fix | Delete
return value
[6181] Fix | Delete
}
[6182] Fix | Delete
[6183] Fix | Delete
block(node, start) {
[6184] Fix | Delete
let between = this.raw(node, 'between', 'beforeOpen')
[6185] Fix | Delete
this.builder(start + between + '{', node, 'start')
[6186] Fix | Delete
[6187] Fix | Delete
let after
[6188] Fix | Delete
if (node.nodes && node.nodes.length) {
[6189] Fix | Delete
this.body(node)
[6190] Fix | Delete
after = this.raw(node, 'after')
[6191] Fix | Delete
} else {
[6192] Fix | Delete
after = this.raw(node, 'after', 'emptyBody')
[6193] Fix | Delete
}
[6194] Fix | Delete
[6195] Fix | Delete
if (after) this.builder(after)
[6196] Fix | Delete
this.builder('}', node, 'end')
[6197] Fix | Delete
}
[6198] Fix | Delete
[6199] Fix | Delete
body(node) {
[6200] Fix | Delete
let last = node.nodes.length - 1
[6201] Fix | Delete
while (last > 0) {
[6202] Fix | Delete
if (node.nodes[last].type !== 'comment') break
[6203] Fix | Delete
last -= 1
[6204] Fix | Delete
}
[6205] Fix | Delete
[6206] Fix | Delete
let semicolon = this.raw(node, 'semicolon')
[6207] Fix | Delete
for (let i = 0; i < node.nodes.length; i++) {
[6208] Fix | Delete
let child = node.nodes[i]
[6209] Fix | Delete
let before = this.raw(child, 'before')
[6210] Fix | Delete
if (before) this.builder(before)
[6211] Fix | Delete
this.stringify(child, last !== i || semicolon)
[6212] Fix | Delete
}
[6213] Fix | Delete
}
[6214] Fix | Delete
[6215] Fix | Delete
comment(node) {
[6216] Fix | Delete
let left = this.raw(node, 'left', 'commentLeft')
[6217] Fix | Delete
let right = this.raw(node, 'right', 'commentRight')
[6218] Fix | Delete
this.builder('/*' + left + node.text + right + '*/', node)
[6219] Fix | Delete
}
[6220] Fix | Delete
[6221] Fix | Delete
decl(node, semicolon) {
[6222] Fix | Delete
let between = this.raw(node, 'between', 'colon')
[6223] Fix | Delete
let string = node.prop + between + this.rawValue(node, 'value')
[6224] Fix | Delete
[6225] Fix | Delete
if (node.important) {
[6226] Fix | Delete
string += node.raws.important || ' !important'
[6227] Fix | Delete
}
[6228] Fix | Delete
[6229] Fix | Delete
if (semicolon) string += ';'
[6230] Fix | Delete
this.builder(string, node)
[6231] Fix | Delete
}
[6232] Fix | Delete
[6233] Fix | Delete
document(node) {
[6234] Fix | Delete
this.body(node)
[6235] Fix | Delete
}
[6236] Fix | Delete
[6237] Fix | Delete
raw(node, own, detect) {
[6238] Fix | Delete
let value
[6239] Fix | Delete
if (!detect) detect = own
[6240] Fix | Delete
[6241] Fix | Delete
// Already had
[6242] Fix | Delete
if (own) {
[6243] Fix | Delete
value = node.raws[own]
[6244] Fix | Delete
if (typeof value !== 'undefined') return value
[6245] Fix | Delete
}
[6246] Fix | Delete
[6247] Fix | Delete
let parent = node.parent
[6248] Fix | Delete
[6249] Fix | Delete
if (detect === 'before') {
[6250] Fix | Delete
// Hack for first rule in CSS
[6251] Fix | Delete
if (!parent || (parent.type === 'root' && parent.first === node)) {
[6252] Fix | Delete
return ''
[6253] Fix | Delete
}
[6254] Fix | Delete
[6255] Fix | Delete
// `root` nodes in `document` should use only their own raws
[6256] Fix | Delete
if (parent && parent.type === 'document') {
[6257] Fix | Delete
return ''
[6258] Fix | Delete
}
[6259] Fix | Delete
}
[6260] Fix | Delete
[6261] Fix | Delete
// Floating child without parent
[6262] Fix | Delete
if (!parent) return DEFAULT_RAW[detect]
[6263] Fix | Delete
[6264] Fix | Delete
// Detect style by other nodes
[6265] Fix | Delete
let root = node.root()
[6266] Fix | Delete
if (!root.rawCache) root.rawCache = {}
[6267] Fix | Delete
if (typeof root.rawCache[detect] !== 'undefined') {
[6268] Fix | Delete
return root.rawCache[detect]
[6269] Fix | Delete
}
[6270] Fix | Delete
[6271] Fix | Delete
if (detect === 'before' || detect === 'after') {
[6272] Fix | Delete
return this.beforeAfter(node, detect)
[6273] Fix | Delete
} else {
[6274] Fix | Delete
let method = 'raw' + capitalize(detect)
[6275] Fix | Delete
if (this[method]) {
[6276] Fix | Delete
value = this[method](root, node)
[6277] Fix | Delete
} else {
[6278] Fix | Delete
root.walk(i => {
[6279] Fix | Delete
value = i.raws[own]
[6280] Fix | Delete
if (typeof value !== 'undefined') return false
[6281] Fix | Delete
})
[6282] Fix | Delete
}
[6283] Fix | Delete
}
[6284] Fix | Delete
[6285] Fix | Delete
if (typeof value === 'undefined') value = DEFAULT_RAW[detect]
[6286] Fix | Delete
[6287] Fix | Delete
root.rawCache[detect] = value
[6288] Fix | Delete
return value
[6289] Fix | Delete
}
[6290] Fix | Delete
[6291] Fix | Delete
rawBeforeClose(root) {
[6292] Fix | Delete
let value
[6293] Fix | Delete
root.walk(i => {
[6294] Fix | Delete
if (i.nodes && i.nodes.length > 0) {
[6295] Fix | Delete
if (typeof i.raws.after !== 'undefined') {
[6296] Fix | Delete
value = i.raws.after
[6297] Fix | Delete
if (value.includes('\n')) {
[6298] Fix | Delete
value = value.replace(/[^\n]+$/, '')
[6299] Fix | Delete
}
[6300] Fix | Delete
return false
[6301] Fix | Delete
}
[6302] Fix | Delete
}
[6303] Fix | Delete
})
[6304] Fix | Delete
if (value) value = value.replace(/\S/g, '')
[6305] Fix | Delete
return value
[6306] Fix | Delete
}
[6307] Fix | Delete
[6308] Fix | Delete
rawBeforeComment(root, node) {
[6309] Fix | Delete
let value
[6310] Fix | Delete
root.walkComments(i => {
[6311] Fix | Delete
if (typeof i.raws.before !== 'undefined') {
[6312] Fix | Delete
value = i.raws.before
[6313] Fix | Delete
if (value.includes('\n')) {
[6314] Fix | Delete
value = value.replace(/[^\n]+$/, '')
[6315] Fix | Delete
}
[6316] Fix | Delete
return false
[6317] Fix | Delete
}
[6318] Fix | Delete
})
[6319] Fix | Delete
if (typeof value === 'undefined') {
[6320] Fix | Delete
value = this.raw(node, null, 'beforeDecl')
[6321] Fix | Delete
} else if (value) {
[6322] Fix | Delete
value = value.replace(/\S/g, '')
[6323] Fix | Delete
}
[6324] Fix | Delete
return value
[6325] Fix | Delete
}
[6326] Fix | Delete
[6327] Fix | Delete
rawBeforeDecl(root, node) {
[6328] Fix | Delete
let value
[6329] Fix | Delete
root.walkDecls(i => {
[6330] Fix | Delete
if (typeof i.raws.before !== 'undefined') {
[6331] Fix | Delete
value = i.raws.before
[6332] Fix | Delete
if (value.includes('\n')) {
[6333] Fix | Delete
value = value.replace(/[^\n]+$/, '')
[6334] Fix | Delete
}
[6335] Fix | Delete
return false
[6336] Fix | Delete
}
[6337] Fix | Delete
})
[6338] Fix | Delete
if (typeof value === 'undefined') {
[6339] Fix | Delete
value = this.raw(node, null, 'beforeRule')
[6340] Fix | Delete
} else if (value) {
[6341] Fix | Delete
value = value.replace(/\S/g, '')
[6342] Fix | Delete
}
[6343] Fix | Delete
return value
[6344] Fix | Delete
}
[6345] Fix | Delete
[6346] Fix | Delete
rawBeforeOpen(root) {
[6347] Fix | Delete
let value
[6348] Fix | Delete
root.walk(i => {
[6349] Fix | Delete
if (i.type !== 'decl') {
[6350] Fix | Delete
value = i.raws.between
[6351] Fix | Delete
if (typeof value !== 'undefined') return false
[6352] Fix | Delete
}
[6353] Fix | Delete
})
[6354] Fix | Delete
return value
[6355] Fix | Delete
}
[6356] Fix | Delete
[6357] Fix | Delete
rawBeforeRule(root) {
[6358] Fix | Delete
let value
[6359] Fix | Delete
root.walk(i => {
[6360] Fix | Delete
if (i.nodes && (i.parent !== root || root.first !== i)) {
[6361] Fix | Delete
if (typeof i.raws.before !== 'undefined') {
[6362] Fix | Delete
value = i.raws.before
[6363] Fix | Delete
if (value.includes('\n')) {
[6364] Fix | Delete
value = value.replace(/[^\n]+$/, '')
[6365] Fix | Delete
}
[6366] Fix | Delete
return false
[6367] Fix | Delete
}
[6368] Fix | Delete
}
[6369] Fix | Delete
})
[6370] Fix | Delete
if (value) value = value.replace(/\S/g, '')
[6371] Fix | Delete
return value
[6372] Fix | Delete
}
[6373] Fix | Delete
[6374] Fix | Delete
rawColon(root) {
[6375] Fix | Delete
let value
[6376] Fix | Delete
root.walkDecls(i => {
[6377] Fix | Delete
if (typeof i.raws.between !== 'undefined') {
[6378] Fix | Delete
value = i.raws.between.replace(/[^\s:]/g, '')
[6379] Fix | Delete
return false
[6380] Fix | Delete
}
[6381] Fix | Delete
})
[6382] Fix | Delete
return value
[6383] Fix | Delete
}
[6384] Fix | Delete
[6385] Fix | Delete
rawEmptyBody(root) {
[6386] Fix | Delete
let value
[6387] Fix | Delete
root.walk(i => {
[6388] Fix | Delete
if (i.nodes && i.nodes.length === 0) {
[6389] Fix | Delete
value = i.raws.after
[6390] Fix | Delete
if (typeof value !== 'undefined') return false
[6391] Fix | Delete
}
[6392] Fix | Delete
})
[6393] Fix | Delete
return value
[6394] Fix | Delete
}
[6395] Fix | Delete
[6396] Fix | Delete
rawIndent(root) {
[6397] Fix | Delete
if (root.raws.indent) return root.raws.indent
[6398] Fix | Delete
let value
[6399] Fix | Delete
root.walk(i => {
[6400] Fix | Delete
let p = i.parent
[6401] Fix | Delete
if (p && p !== root && p.parent && p.parent === root) {
[6402] Fix | Delete
if (typeof i.raws.before !== 'undefined') {
[6403] Fix | Delete
let parts = i.raws.before.split('\n')
[6404] Fix | Delete
value = parts[parts.length - 1]
[6405] Fix | Delete
value = value.replace(/\S/g, '')
[6406] Fix | Delete
return false
[6407] Fix | Delete
}
[6408] Fix | Delete
}
[6409] Fix | Delete
})
[6410] Fix | Delete
return value
[6411] Fix | Delete
}
[6412] Fix | Delete
[6413] Fix | Delete
rawSemicolon(root) {
[6414] Fix | Delete
let value
[6415] Fix | Delete
root.walk(i => {
[6416] Fix | Delete
if (i.nodes && i.nodes.length && i.last.type === 'decl') {
[6417] Fix | Delete
value = i.raws.semicolon
[6418] Fix | Delete
if (typeof value !== 'undefined') return false
[6419] Fix | Delete
}
[6420] Fix | Delete
})
[6421] Fix | Delete
return value
[6422] Fix | Delete
}
[6423] Fix | Delete
[6424] Fix | Delete
rawValue(node, prop) {
[6425] Fix | Delete
let value = node[prop]
[6426] Fix | Delete
let raw = node.raws[prop]
[6427] Fix | Delete
if (raw && raw.value === value) {
[6428] Fix | Delete
return raw.raw
[6429] Fix | Delete
}
[6430] Fix | Delete
[6431] Fix | Delete
return value
[6432] Fix | Delete
}
[6433] Fix | Delete
[6434] Fix | Delete
root(node) {
[6435] Fix | Delete
this.body(node)
[6436] Fix | Delete
if (node.raws.after) this.builder(node.raws.after)
[6437] Fix | Delete
}
[6438] Fix | Delete
[6439] Fix | Delete
rule(node) {
[6440] Fix | Delete
this.block(node, this.rawValue(node, 'selector'))
[6441] Fix | Delete
if (node.raws.ownSemicolon) {
[6442] Fix | Delete
this.builder(node.raws.ownSemicolon, node, 'end')
[6443] Fix | Delete
}
[6444] Fix | Delete
}
[6445] Fix | Delete
[6446] Fix | Delete
stringify(node, semicolon) {
[6447] Fix | Delete
/* c8 ignore start */
[6448] Fix | Delete
if (!this[node.type]) {
[6449] Fix | Delete
throw new Error(
[6450] Fix | Delete
'Unknown AST node type ' +
[6451] Fix | Delete
node.type +
[6452] Fix | Delete
'. ' +
[6453] Fix | Delete
'Maybe you need to change PostCSS stringifier.'
[6454] Fix | Delete
)
[6455] Fix | Delete
}
[6456] Fix | Delete
/* c8 ignore stop */
[6457] Fix | Delete
this[node.type](node, semicolon)
[6458] Fix | Delete
}
[6459] Fix | Delete
}
[6460] Fix | Delete
[6461] Fix | Delete
module.exports = Stringifier
[6462] Fix | Delete
Stringifier.default = Stringifier
[6463] Fix | Delete
[6464] Fix | Delete
[6465] Fix | Delete
/***/ }),
[6466] Fix | Delete
[6467] Fix | Delete
/***/ 633:
[6468] Fix | Delete
/***/ ((module, __unused_webpack_exports, __webpack_require__) => {
[6469] Fix | Delete
[6470] Fix | Delete
"use strict";
[6471] Fix | Delete
[6472] Fix | Delete
[6473] Fix | Delete
let Stringifier = __webpack_require__(346)
[6474] Fix | Delete
[6475] Fix | Delete
function stringify(node, builder) {
[6476] Fix | Delete
let str = new Stringifier(builder)
[6477] Fix | Delete
str.stringify(node)
[6478] Fix | Delete
}
[6479] Fix | Delete
[6480] Fix | Delete
module.exports = stringify
[6481] Fix | Delete
stringify.default = stringify
[6482] Fix | Delete
[6483] Fix | Delete
[6484] Fix | Delete
/***/ }),
[6485] Fix | Delete
[6486] Fix | Delete
/***/ 1381:
[6487] Fix | Delete
/***/ ((module) => {
[6488] Fix | Delete
[6489] Fix | Delete
"use strict";
[6490] Fix | Delete
[6491] Fix | Delete
[6492] Fix | Delete
module.exports.isClean = Symbol('isClean')
[6493] Fix | Delete
[6494] Fix | Delete
module.exports.my = Symbol('my')
[6495] Fix | Delete
[6496] Fix | Delete
[6497] Fix | Delete
/***/ }),
[6498] Fix | Delete
[6499] Fix | Delete
It is recommended that you Edit text format, this type of Fix handles quite a lot in one request
Function