Commit bf137ad8 authored by Patrick's avatar Patrick
Browse files

CHANGES.md, README.md und 248 weitere dateien aktualisiert...

Showing with 144827 additions and 682 deletions
+144827 -682
commit 4374b79aed648738d2458ce027cbe2b372bf7b3a
Author: isaacs <i@izs.me>
Date: Wed Jun 26 12:12:17 2019 -0700
Add support for stat options
Fix #158
diff --git a/polyfills.js b/polyfills.js
index b964ed0..bc9759b 100644
--- a/polyfills.js
+++ b/polyfills.js
@@ -273,17 +273,23 @@ function patch (fs) {
}
+ // stat options added in v10.5.0
+ var supportsStatOptions = /^v[1-9][1-9]|^v10\.[5-9]/.test(process.version)
function statFix (orig) {
if (!orig) return orig
// Older versions of Node erroneously returned signed integers for
// uid + gid.
- return function (target, cb) {
- return orig.call(fs, target, function (er, stats) {
- if (!stats) return cb.apply(this, arguments)
+ return function (target, options, cb) {
+ if (typeof options === 'function')
+ cb = options, options = null
+ function callback (er, stats) {
+ if (!stats) return cb && cb.apply(this, arguments)
if (stats.uid < 0) stats.uid += 0x100000000
if (stats.gid < 0) stats.gid += 0x100000000
if (cb) cb.apply(this, arguments)
- })
+ }
+ return supportsStatOptions ? orig.call(fs, target, options || {}, callback)
+ : orig.call(fs, target, callback)
}
}
@@ -291,8 +297,8 @@ function patch (fs) {
if (!orig) return orig
// Older versions of Node erroneously returned signed integers for
// uid + gid.
- return function (target) {
- var stats = orig.call(fs, target)
+ return function (target, options) {
+ var stats = orig.call(fs, target, options)
if (stats.uid < 0) stats.uid += 0x100000000
if (stats.gid < 0) stats.gid += 0x100000000
return stats;
The ISC License
Copyright (c) Isaac Z. Schlueter and Contributors
Copyright (c) Isaac Z. Schlueter, Ben Noordhuis, and Contributors
Permission to use, copy, modify, and/or distribute this software for any
purpose with or without fee is hereby granted, provided that the above
......
......@@ -7,9 +7,7 @@ The improvements are meant to normalize behavior across different
platforms and environments, and to make filesystem access more
resilient to errors.
## Improvements over [fs module](http://api.nodejs.org/fs.html)
graceful-fs:
## Improvements over [fs module](https://nodejs.org/api/fs.html)
* Queues up `open` and `readdir` calls, and retries them once
something closes if there is an EMFILE error from too many file
......@@ -34,3 +32,102 @@ var fs = require('graceful-fs')
// now go and do stuff with it...
fs.readFileSync('some-file-or-whatever')
```
## Global Patching
If you want to patch the global fs module (or any other fs-like
module) you can do this:
```javascript
// Make sure to read the caveat below.
var realFs = require('fs')
var gracefulFs = require('graceful-fs')
gracefulFs.gracefulify(realFs)
```
This should only ever be done at the top-level application layer, in
order to delay on EMFILE errors from any fs-using dependencies. You
should **not** do this in a library, because it can cause unexpected
delays in other parts of the program.
## Changes
This module is fairly stable at this point, and used by a lot of
things. That being said, because it implements a subtle behavior
change in a core part of the node API, even modest changes can be
extremely breaking, and the versioning is thus biased towards
bumping the major when in doubt.
The main change between major versions has been switching between
providing a fully-patched `fs` module vs monkey-patching the node core
builtin, and the approach by which a non-monkey-patched `fs` was
created.
The goal is to trade `EMFILE` errors for slower fs operations. So, if
you try to open a zillion files, rather than crashing, `open`
operations will be queued up and wait for something else to `close`.
There are advantages to each approach. Monkey-patching the fs means
that no `EMFILE` errors can possibly occur anywhere in your
application, because everything is using the same core `fs` module,
which is patched. However, it can also obviously cause undesirable
side-effects, especially if the module is loaded multiple times.
Implementing a separate-but-identical patched `fs` module is more
surgical (and doesn't run the risk of patching multiple times), but
also imposes the challenge of keeping in sync with the core module.
The current approach loads the `fs` module, and then creates a
lookalike object that has all the same methods, except a few that are
patched. It is safe to use in all versions of Node from 0.8 through
7.0.
### v4
* Do not monkey-patch the fs module. This module may now be used as a
drop-in dep, and users can opt into monkey-patching the fs builtin
if their app requires it.
### v3
* Monkey-patch fs, because the eval approach no longer works on recent
node.
* fixed possible type-error throw if rename fails on windows
* verify that we *never* get EMFILE errors
* Ignore ENOSYS from chmod/chown
* clarify that graceful-fs must be used as a drop-in
### v2.1.0
* Use eval rather than monkey-patching fs.
* readdir: Always sort the results
* win32: requeue a file if error has an OK status
### v2.0
* A return to monkey patching
* wrap process.cwd
### v1.1
* wrap readFile
* Wrap fs.writeFile.
* readdir protection
* Don't clobber the fs builtin
* Handle fs.read EAGAIN errors by trying again
* Expose the curOpen counter
* No-op lchown/lchmod if not implemented
* fs.rename patch only for win32
* Patch fs.rename to handle AV software on Windows
* Close #4 Chown should not fail on einval or eperm if non-root
* Fix isaacs/fstream#1 Only wrap fs one time
* Fix #3 Start at 1024 max files, then back off on EMFILE
* lutimes that doens't blow up on Linux
* A full on-rewrite using a queue instead of just swallowing the EMFILE error
* Wrap Read/Write streams as well
### 1.0
* Update engines for node 0.6
* Be lstat-graceful on Windows
* first
#!/bin/bash
# set -e
false
echo 'ok'
module.exports = require('natives').require('fs', ['stream'])
// Monkey-patching the fs module.
// It's ugly, but there is simply no other way to do this.
var fs = module.exports = require('./fs.js')
var assert = require('assert')
// fix up some busted stuff, mostly on windows and old nodes
require('./polyfills.js')
var fs = require('fs')
var polyfills = require('./polyfills.js')
var legacy = require('./legacy-streams.js')
var clone = require('./clone.js')
var util = require('util')
/* istanbul ignore next - node 0.x polyfill */
var gracefulQueue
var previousSymbol
/* istanbul ignore else - node 0.x polyfill */
if (typeof Symbol === 'function' && typeof Symbol.for === 'function') {
gracefulQueue = Symbol.for('graceful-fs.queue')
// This is used in testing by future versions
previousSymbol = Symbol.for('graceful-fs.previous')
} else {
gracefulQueue = '___graceful-fs.queue'
previousSymbol = '___graceful-fs.previous'
}
function noop () {}
var debug = noop
if (util.debuglog)
debug = util.debuglog('gfs')
else if (/\bgfs\b/i.test(process.env.NODE_DEBUG || ''))
debug = util.debuglog('gfs4')
else if (/\bgfs4\b/i.test(process.env.NODE_DEBUG || ''))
debug = function() {
var m = util.format.apply(util, arguments)
m = 'GFS: ' + m.split(/\n/).join('\nGFS: ')
m = 'GFS4: ' + m.split(/\n/).join('\nGFS4: ')
console.error(m)
}
if (/\bgfs\b/i.test(process.env.NODE_DEBUG || '')) {
process.on('exit', function() {
debug('fds', fds)
debug(queue)
assert.equal(queue.length, 0)
// Once time initialization
if (!global[gracefulQueue]) {
// This queue can be shared by multiple loaded instances
var queue = []
Object.defineProperty(global, gracefulQueue, {
get: function() {
return queue
}
})
}
var originalOpen = fs.open
fs.open = open
function open(path, flags, mode, cb) {
if (typeof mode === "function") cb = mode, mode = null
if (typeof cb !== "function") cb = noop
new OpenReq(path, flags, mode, cb)
}
function OpenReq(path, flags, mode, cb) {
this.path = path
this.flags = flags
this.mode = mode
this.cb = cb
Req.call(this)
}
util.inherits(OpenReq, Req)
OpenReq.prototype.process = function() {
originalOpen.call(fs, this.path, this.flags, this.mode, this.done)
// Patch fs.close/closeSync to shared queue version, because we need
// to retry() whenever a close happens *anywhere* in the program.
// This is essential when multiple graceful-fs instances are
// in play at the same time.
fs.close = (function (fs$close) {
function close (fd, cb) {
return fs$close.call(fs, fd, function (err) {
// This function uses the graceful-fs shared queue
if (!err) {
retry()
}
if (typeof cb === 'function')
cb.apply(this, arguments)
})
}
Object.defineProperty(close, previousSymbol, {
value: fs$close
})
return close
})(fs.close)
fs.closeSync = (function (fs$closeSync) {
function closeSync (fd) {
// This function uses the graceful-fs shared queue
fs$closeSync.apply(fs, arguments)
retry()
}
Object.defineProperty(closeSync, previousSymbol, {
value: fs$closeSync
})
return closeSync
})(fs.closeSync)
if (/\bgfs4\b/i.test(process.env.NODE_DEBUG || '')) {
process.on('exit', function() {
debug(global[gracefulQueue])
require('assert').equal(global[gracefulQueue].length, 0)
})
}
}
var fds = {}
OpenReq.prototype.done = function(er, fd) {
debug('open done', er, fd)
if (fd)
fds['fd' + fd] = this.path
Req.prototype.done.call(this, er, fd)
module.exports = patch(clone(fs))
if (process.env.TEST_GRACEFUL_FS_GLOBAL_PATCH && !fs.__patched) {
module.exports = patch(fs)
fs.__patched = true;
}
function patch (fs) {
// Everything that references the open() function needs to be in here
polyfills(fs)
fs.gracefulify = patch
fs.createReadStream = createReadStream
fs.createWriteStream = createWriteStream
var fs$readFile = fs.readFile
fs.readFile = readFile
function readFile (path, options, cb) {
if (typeof options === 'function')
cb = options, options = null
return go$readFile(path, options, cb)
function go$readFile (path, options, cb) {
return fs$readFile(path, options, function (err) {
if (err && (err.code === 'EMFILE' || err.code === 'ENFILE'))
enqueue([go$readFile, [path, options, cb]])
else {
if (typeof cb === 'function')
cb.apply(this, arguments)
retry()
}
})
}
}
var originalReaddir = fs.readdir
fs.readdir = readdir
var fs$writeFile = fs.writeFile
fs.writeFile = writeFile
function writeFile (path, data, options, cb) {
if (typeof options === 'function')
cb = options, options = null
return go$writeFile(path, data, options, cb)
function go$writeFile (path, data, options, cb) {
return fs$writeFile(path, data, options, function (err) {
if (err && (err.code === 'EMFILE' || err.code === 'ENFILE'))
enqueue([go$writeFile, [path, data, options, cb]])
else {
if (typeof cb === 'function')
cb.apply(this, arguments)
retry()
}
})
}
}
function readdir(path, cb) {
if (typeof cb !== "function") cb = noop
new ReaddirReq(path, cb)
}
var fs$appendFile = fs.appendFile
if (fs$appendFile)
fs.appendFile = appendFile
function appendFile (path, data, options, cb) {
if (typeof options === 'function')
cb = options, options = null
return go$appendFile(path, data, options, cb)
function go$appendFile (path, data, options, cb) {
return fs$appendFile(path, data, options, function (err) {
if (err && (err.code === 'EMFILE' || err.code === 'ENFILE'))
enqueue([go$appendFile, [path, data, options, cb]])
else {
if (typeof cb === 'function')
cb.apply(this, arguments)
retry()
}
})
}
}
function ReaddirReq(path, cb) {
this.path = path
this.cb = cb
Req.call(this)
}
var fs$readdir = fs.readdir
fs.readdir = readdir
function readdir (path, options, cb) {
var args = [path]
if (typeof options !== 'function') {
args.push(options)
} else {
cb = options
}
args.push(go$readdir$cb)
return go$readdir(args)
function go$readdir$cb (err, files) {
if (files && files.sort)
files.sort()
if (err && (err.code === 'EMFILE' || err.code === 'ENFILE'))
enqueue([go$readdir, [args]])
else {
if (typeof cb === 'function')
cb.apply(this, arguments)
retry()
}
}
}
util.inherits(ReaddirReq, Req)
function go$readdir (args) {
return fs$readdir.apply(fs, args)
}
ReaddirReq.prototype.process = function() {
originalReaddir.call(fs, this.path, this.done)
}
if (process.version.substr(0, 4) === 'v0.8') {
var legStreams = legacy(fs)
ReadStream = legStreams.ReadStream
WriteStream = legStreams.WriteStream
}
ReaddirReq.prototype.done = function(er, files) {
if (files && files.sort)
files = files.sort()
Req.prototype.done.call(this, er, files)
onclose()
}
var fs$ReadStream = fs.ReadStream
if (fs$ReadStream) {
ReadStream.prototype = Object.create(fs$ReadStream.prototype)
ReadStream.prototype.open = ReadStream$open
}
var fs$WriteStream = fs.WriteStream
if (fs$WriteStream) {
WriteStream.prototype = Object.create(fs$WriteStream.prototype)
WriteStream.prototype.open = WriteStream$open
}
var originalClose = fs.close
fs.close = close
Object.defineProperty(fs, 'ReadStream', {
get: function () {
return ReadStream
},
set: function (val) {
ReadStream = val
},
enumerable: true,
configurable: true
})
Object.defineProperty(fs, 'WriteStream', {
get: function () {
return WriteStream
},
set: function (val) {
WriteStream = val
},
enumerable: true,
configurable: true
})
function close (fd, cb) {
debug('close', fd)
if (typeof cb !== "function") cb = noop
delete fds['fd' + fd]
originalClose.call(fs, fd, function(er) {
onclose()
cb(er)
// legacy names
var FileReadStream = ReadStream
Object.defineProperty(fs, 'FileReadStream', {
get: function () {
return FileReadStream
},
set: function (val) {
FileReadStream = val
},
enumerable: true,
configurable: true
})
var FileWriteStream = WriteStream
Object.defineProperty(fs, 'FileWriteStream', {
get: function () {
return FileWriteStream
},
set: function (val) {
FileWriteStream = val
},
enumerable: true,
configurable: true
})
}
function ReadStream (path, options) {
if (this instanceof ReadStream)
return fs$ReadStream.apply(this, arguments), this
else
return ReadStream.apply(Object.create(ReadStream.prototype), arguments)
}
var originalCloseSync = fs.closeSync
fs.closeSync = closeSync
function ReadStream$open () {
var that = this
open(that.path, that.flags, that.mode, function (err, fd) {
if (err) {
if (that.autoClose)
that.destroy()
that.emit('error', err)
} else {
that.fd = fd
that.emit('open', fd)
that.read()
}
})
}
function closeSync (fd) {
try {
return originalCloseSync(fd)
} finally {
onclose()
function WriteStream (path, options) {
if (this instanceof WriteStream)
return fs$WriteStream.apply(this, arguments), this
else
return WriteStream.apply(Object.create(WriteStream.prototype), arguments)
}
}
function WriteStream$open () {
var that = this
open(that.path, that.flags, that.mode, function (err, fd) {
if (err) {
that.destroy()
that.emit('error', err)
} else {
that.fd = fd
that.emit('open', fd)
}
})
}
// Req class
function Req () {
// start processing
this.done = this.done.bind(this)
this.failures = 0
this.process()
}
function createReadStream (path, options) {
return new fs.ReadStream(path, options)
}
Req.prototype.done = function (er, result) {
var tryAgain = false
if (er) {
var code = er.code
var tryAgain = code === "EMFILE" || code === "ENFILE"
if (process.platform === "win32")
tryAgain = tryAgain || code === "OK"
function createWriteStream (path, options) {
return new fs.WriteStream(path, options)
}
if (tryAgain) {
this.failures ++
enqueue(this)
} else {
var cb = this.cb
cb(er, result)
var fs$open = fs.open
fs.open = open
function open (path, flags, mode, cb) {
if (typeof mode === 'function')
cb = mode, mode = null
return go$open(path, flags, mode, cb)
function go$open (path, flags, mode, cb) {
return fs$open(path, flags, mode, function (err, fd) {
if (err && (err.code === 'EMFILE' || err.code === 'ENFILE'))
enqueue([go$open, [path, flags, mode, cb]])
else {
if (typeof cb === 'function')
cb.apply(this, arguments)
retry()
}
})
}
}
}
var queue = []
return fs
}
function enqueue(req) {
queue.push(req)
debug('enqueue %d %s', queue.length, req.constructor.name, req)
function enqueue (elem) {
debug('ENQUEUE', elem[0].name, elem[1])
global[gracefulQueue].push(elem)
}
function onclose() {
var req = queue.shift()
if (req) {
debug('process', req.constructor.name, req)
req.process()
function retry () {
var elem = global[gracefulQueue].shift()
if (elem) {
debug('RETRY', elem[0].name, elem[1])
elem[0].apply(null, elem[1])
}
}
{
"_from": "graceful-fs@^3.0.0",
"_id": "graceful-fs@3.0.12",
"_from": "graceful-fs@4.2.3",
"_id": "graceful-fs@4.2.3",
"_inBundle": false,
"_integrity": "sha512-J55gaCS4iTTJfTXIxSVw3EMQckcqkpdRv3IR7gu6sq0+tbC363Zx6KH/SEwXASK9JRbhyZmVjJEVJIOxYsB3Qg==",
"_integrity": "sha512-a30VEBm4PEdx1dRB7MFK7BejejvCvBronbLjht+sHuGYj8PHs7M/5Z+rt5lw551vZ7yfTCj4Vuyy3mSJytDWRQ==",
"_location": "/vinyl-fs/graceful-fs",
"_phantomChildren": {},
"_requested": {
"type": "range",
"type": "version",
"registry": true,
"raw": "graceful-fs@^3.0.0",
"raw": "graceful-fs@4.2.3",
"name": "graceful-fs",
"escapedName": "graceful-fs",
"rawSpec": "^3.0.0",
"rawSpec": "4.2.3",
"saveSpec": null,
"fetchSpec": "^3.0.0"
"fetchSpec": "4.2.3"
},
"_requiredBy": [
"/vinyl-fs"
],
"_resolved": "https://registry.npmjs.org/graceful-fs/-/graceful-fs-3.0.12.tgz",
"_shasum": "0034947ce9ed695ec8ab0b854bc919e82b1ffaef",
"_spec": "graceful-fs@^3.0.0",
"_where": "C:\\Work\\OneDrive - bwstaff\\M4_Lab\\TV3\\NewVersion01\\LAFJLBmf939XYm5gj\\dev\\node_modules\\vinyl-fs",
"author": {
"name": "Isaac Z. Schlueter",
"email": "i@izs.me",
"url": "http://blog.izs.me"
},
"_resolved": "https://registry.npmjs.org/graceful-fs/-/graceful-fs-4.2.3.tgz",
"_shasum": "4a12ff1b60376ef09862c2093edd908328be8423",
"_spec": "graceful-fs@4.2.3",
"_where": "C:\\Work\\OneDrive - bwstaff\\M4_Lab\\Main\\02_Plattform_Main\\m4labplatform",
"bugs": {
"url": "https://github.com/isaacs/node-graceful-fs/issues"
},
"bundleDependencies": false,
"dependencies": {
"natives": "^1.1.3"
},
"dependencies": {},
"deprecated": false,
"description": "A drop-in replacement for fs, making various improvements.",
"devDependencies": {
"import-fresh": "^2.0.0",
"mkdirp": "^0.5.0",
"rimraf": "^2.2.8",
"tap": "^1.2.0"
"tap": "^12.7.0"
},
"directories": {
"test": "test"
},
"engines": {
"node": ">=0.4.0"
},
"files": [
"fs.js",
"graceful-fs.js",
"legacy-streams.js",
"polyfills.js",
"clone.js"
],
"homepage": "https://github.com/isaacs/node-graceful-fs#readme",
"keywords": [
"fs",
......@@ -67,15 +65,15 @@
"license": "ISC",
"main": "graceful-fs.js",
"name": "graceful-fs",
"publishConfig": {
"tag": "old"
},
"repository": {
"type": "git",
"url": "git://github.com/isaacs/node-graceful-fs.git"
"url": "git+https://github.com/isaacs/node-graceful-fs.git"
},
"scripts": {
"test": "tap test/*.js"
"postpublish": "git push origin --follow-tags",
"postversion": "npm publish",
"preversion": "npm test",
"test": "node test.js | tap -"
},
"version": "3.0.12"
"version": "4.2.3"
}
var fs = require('./fs.js')
var constants = require('constants')
var origCwd = process.cwd
var cwd = null
var platform = process.env.GRACEFUL_FS_PLATFORM || process.platform
process.cwd = function() {
if (!cwd)
cwd = origCwd.call(process)
return cwd
}
try {
process.cwd()
} catch (er) {}
var chdir = process.chdir
process.chdir = function(d) {
cwd = null
chdir.call(process, d)
}
// (re-)implement some things that are known busted or missing.
// lchmod, broken prior to 0.6.2
// back-port the fix here.
if (constants.hasOwnProperty('O_SYMLINK') &&
process.version.match(/^v0\.6\.[0-2]|^v0\.5\./)) {
fs.lchmod = function (path, mode, callback) {
callback = callback || noop
fs.open( path
, constants.O_WRONLY | constants.O_SYMLINK
, mode
, function (err, fd) {
if (err) {
callback(err)
return
}
// prefer to return the chmod error, if one occurs,
// but still try to close, and report closing errors if they occur.
fs.fchmod(fd, mode, function (err) {
fs.close(fd, function(err2) {
callback(err || err2)
})
})
})
module.exports = patch
function patch (fs) {
// (re-)implement some things that are known busted or missing.
// lchmod, broken prior to 0.6.2
// back-port the fix here.
if (constants.hasOwnProperty('O_SYMLINK') &&
process.version.match(/^v0\.6\.[0-2]|^v0\.5\./)) {
patchLchmod(fs)
}
// lutimes implementation, or no-op
if (!fs.lutimes) {
patchLutimes(fs)
}
fs.lchmodSync = function (path, mode) {
var fd = fs.openSync(path, constants.O_WRONLY | constants.O_SYMLINK, mode)
// https://github.com/isaacs/node-graceful-fs/issues/4
// Chown should not fail on einval or eperm if non-root.
// It should not fail on enosys ever, as this just indicates
// that a fs doesn't support the intended operation.
fs.chown = chownFix(fs.chown)
fs.fchown = chownFix(fs.fchown)
fs.lchown = chownFix(fs.lchown)
fs.chmod = chmodFix(fs.chmod)
fs.fchmod = chmodFix(fs.fchmod)
fs.lchmod = chmodFix(fs.lchmod)
fs.chownSync = chownFixSync(fs.chownSync)
fs.fchownSync = chownFixSync(fs.fchownSync)
fs.lchownSync = chownFixSync(fs.lchownSync)
fs.chmodSync = chmodFixSync(fs.chmodSync)
fs.fchmodSync = chmodFixSync(fs.fchmodSync)
fs.lchmodSync = chmodFixSync(fs.lchmodSync)
fs.stat = statFix(fs.stat)
fs.fstat = statFix(fs.fstat)
fs.lstat = statFix(fs.lstat)
// prefer to return the chmod error, if one occurs,
// but still try to close, and report closing errors if they occur.
var err, err2
try {
var ret = fs.fchmodSync(fd, mode)
} catch (er) {
err = er
fs.statSync = statFixSync(fs.statSync)
fs.fstatSync = statFixSync(fs.fstatSync)
fs.lstatSync = statFixSync(fs.lstatSync)
// if lchmod/lchown do not exist, then make them no-ops
if (!fs.lchmod) {
fs.lchmod = function (path, mode, cb) {
if (cb) process.nextTick(cb)
}
try {
fs.closeSync(fd)
} catch (er) {
err2 = er
fs.lchmodSync = function () {}
}
if (!fs.lchown) {
fs.lchown = function (path, uid, gid, cb) {
if (cb) process.nextTick(cb)
}
if (err || err2) throw (err || err2)
return ret
fs.lchownSync = function () {}
}
}
// lutimes implementation, or no-op
if (!fs.lutimes) {
if (constants.hasOwnProperty("O_SYMLINK")) {
fs.lutimes = function (path, at, mt, cb) {
fs.open(path, constants.O_SYMLINK, function (er, fd) {
cb = cb || noop
if (er) return cb(er)
fs.futimes(fd, at, mt, function (er) {
fs.close(fd, function (er2) {
return cb(er || er2)
})
})
// on Windows, A/V software can lock the directory, causing this
// to fail with an EACCES or EPERM if the directory contains newly
// created files. Try again on failure, for up to 60 seconds.
// Set the timeout this long because some Windows Anti-Virus, such as Parity
// bit9, may lock files for up to a minute, causing npm package install
// failures. Also, take care to yield the scheduler. Windows scheduling gives
// CPU to a busy looping process, which can cause the program causing the lock
// contention to be starved of CPU by node, so the contention doesn't resolve.
if (platform === "win32") {
fs.rename = (function (fs$rename) { return function (from, to, cb) {
var start = Date.now()
var backoff = 0;
fs$rename(from, to, function CB (er) {
if (er
&& (er.code === "EACCES" || er.code === "EPERM")
&& Date.now() - start < 60000) {
setTimeout(function() {
fs.stat(to, function (stater, st) {
if (stater && stater.code === "ENOENT")
fs$rename(from, to, CB);
else
cb(er)
})
}, backoff)
if (backoff < 100)
backoff += 10;
return;
}
if (cb) cb(er)
})
}})(fs.rename)
}
// if read() returns EAGAIN, then just try it again.
fs.read = (function (fs$read) {
function read (fd, buffer, offset, length, position, callback_) {
var callback
if (callback_ && typeof callback_ === 'function') {
var eagCounter = 0
callback = function (er, _, __) {
if (er && er.code === 'EAGAIN' && eagCounter < 10) {
eagCounter ++
return fs$read.call(fs, fd, buffer, offset, length, position, callback)
}
callback_.apply(this, arguments)
}
}
return fs$read.call(fs, fd, buffer, offset, length, position, callback)
}
fs.lutimesSync = function (path, at, mt) {
var fd = fs.openSync(path, constants.O_SYMLINK)
, err
, err2
, ret
// This ensures `util.promisify` works as it does for native `fs.read`.
read.__proto__ = fs$read
return read
})(fs.read)
fs.readSync = (function (fs$readSync) { return function (fd, buffer, offset, length, position) {
var eagCounter = 0
while (true) {
try {
var ret = fs.futimesSync(fd, at, mt)
} catch (er) {
err = er
}
try {
fs.closeSync(fd)
return fs$readSync.call(fs, fd, buffer, offset, length, position)
} catch (er) {
err2 = er
if (er.code === 'EAGAIN' && eagCounter < 10) {
eagCounter ++
continue
}
throw er
}
if (err || err2) throw (err || err2)
return ret
}
} else if (fs.utimensat && constants.hasOwnProperty("AT_SYMLINK_NOFOLLOW")) {
// maybe utimensat will be bound soonish?
fs.lutimes = function (path, at, mt, cb) {
fs.utimensat(path, at, mt, constants.AT_SYMLINK_NOFOLLOW, cb)
}})(fs.readSync)
function patchLchmod (fs) {
fs.lchmod = function (path, mode, callback) {
fs.open( path
, constants.O_WRONLY | constants.O_SYMLINK
, mode
, function (err, fd) {
if (err) {
if (callback) callback(err)
return
}
// prefer to return the chmod error, if one occurs,
// but still try to close, and report closing errors if they occur.
fs.fchmod(fd, mode, function (err) {
fs.close(fd, function(err2) {
if (callback) callback(err || err2)
})
})
})
}
fs.lutimesSync = function (path, at, mt) {
return fs.utimensatSync(path, at, mt, constants.AT_SYMLINK_NOFOLLOW)
}
fs.lchmodSync = function (path, mode) {
var fd = fs.openSync(path, constants.O_WRONLY | constants.O_SYMLINK, mode)
} else {
fs.lutimes = function (_a, _b, _c, cb) { process.nextTick(cb) }
fs.lutimesSync = function () {}
// prefer to return the chmod error, if one occurs,
// but still try to close, and report closing errors if they occur.
var threw = true
var ret
try {
ret = fs.fchmodSync(fd, mode)
threw = false
} finally {
if (threw) {
try {
fs.closeSync(fd)
} catch (er) {}
} else {
fs.closeSync(fd)
}
}
return ret
}
}
}
// https://github.com/isaacs/node-graceful-fs/issues/4
// Chown should not fail on einval or eperm if non-root.
// It should not fail on enosys ever, as this just indicates
// that a fs doesn't support the intended operation.
fs.chown = chownFix(fs.chown)
fs.fchown = chownFix(fs.fchown)
fs.lchown = chownFix(fs.lchown)
fs.chmod = chownFix(fs.chmod)
fs.fchmod = chownFix(fs.fchmod)
fs.lchmod = chownFix(fs.lchmod)
fs.chownSync = chownFixSync(fs.chownSync)
fs.fchownSync = chownFixSync(fs.fchownSync)
fs.lchownSync = chownFixSync(fs.lchownSync)
function patchLutimes (fs) {
if (constants.hasOwnProperty("O_SYMLINK")) {
fs.lutimes = function (path, at, mt, cb) {
fs.open(path, constants.O_SYMLINK, function (er, fd) {
if (er) {
if (cb) cb(er)
return
}
fs.futimes(fd, at, mt, function (er) {
fs.close(fd, function (er2) {
if (cb) cb(er || er2)
})
})
})
}
fs.chmodSync = chownFix(fs.chmodSync)
fs.fchmodSync = chownFix(fs.fchmodSync)
fs.lchmodSync = chownFix(fs.lchmodSync)
fs.lutimesSync = function (path, at, mt) {
var fd = fs.openSync(path, constants.O_SYMLINK)
var ret
var threw = true
try {
ret = fs.futimesSync(fd, at, mt)
threw = false
} finally {
if (threw) {
try {
fs.closeSync(fd)
} catch (er) {}
} else {
fs.closeSync(fd)
}
}
return ret
}
function chownFix (orig) {
if (!orig) return orig
return function (target, uid, gid, cb) {
return orig.call(fs, target, uid, gid, function (er, res) {
if (chownErOk(er)) er = null
cb(er, res)
})
} else {
fs.lutimes = function (_a, _b, _c, cb) { if (cb) process.nextTick(cb) }
fs.lutimesSync = function () {}
}
}
}
function chownFixSync (orig) {
if (!orig) return orig
return function (target, uid, gid) {
try {
return orig.call(fs, target, uid, gid)
} catch (er) {
if (!chownErOk(er)) throw er
function chmodFix (orig) {
if (!orig) return orig
return function (target, mode, cb) {
return orig.call(fs, target, mode, function (er) {
if (chownErOk(er)) er = null
if (cb) cb.apply(this, arguments)
})
}
}
}
// ENOSYS means that the fs doesn't support the op. Just ignore
// that, because it doesn't matter.
//
// if there's no getuid, or if getuid() is something other
// than 0, and the error is EINVAL or EPERM, then just ignore
// it.
//
// This specific case is a silent failure in cp, install, tar,
// and most other unix tools that manage permissions.
//
// When running as root, or if other types of errors are
// encountered, then it's strict.
function chownErOk (er) {
if (!er)
return true
if (er.code === "ENOSYS")
return true
var nonroot = !process.getuid || process.getuid() !== 0
if (nonroot) {
if (er.code === "EINVAL" || er.code === "EPERM")
return true
function chmodFixSync (orig) {
if (!orig) return orig
return function (target, mode) {
try {
return orig.call(fs, target, mode)
} catch (er) {
if (!chownErOk(er)) throw er
}
}
}
return false
}
// if lchmod/lchown do not exist, then make them no-ops
if (!fs.lchmod) {
fs.lchmod = function (path, mode, cb) {
process.nextTick(cb)
}
fs.lchmodSync = function () {}
}
if (!fs.lchown) {
fs.lchown = function (path, uid, gid, cb) {
process.nextTick(cb)
function chownFix (orig) {
if (!orig) return orig
return function (target, uid, gid, cb) {
return orig.call(fs, target, uid, gid, function (er) {
if (chownErOk(er)) er = null
if (cb) cb.apply(this, arguments)
})
}
}
fs.lchownSync = function () {}
}
// on Windows, A/V software can lock the directory, causing this
// to fail with an EACCES or EPERM if the directory contains newly
// created files. Try again on failure, for up to 1 second.
if (process.platform === "win32") {
var rename_ = fs.rename
fs.rename = function rename (from, to, cb) {
var start = Date.now()
rename_(from, to, function CB (er) {
if (er
&& (er.code === "EACCES" || er.code === "EPERM")
&& Date.now() - start < 1000) {
return rename_(from, to, CB)
function chownFixSync (orig) {
if (!orig) return orig
return function (target, uid, gid) {
try {
return orig.call(fs, target, uid, gid)
} catch (er) {
if (!chownErOk(er)) throw er
}
if(cb) cb(er)
})
}
}
}
// if read() returns EAGAIN, then just try it again.
var read = fs.read
fs.read = function (fd, buffer, offset, length, position, callback_) {
var callback
if (callback_ && typeof callback_ === 'function') {
var eagCounter = 0
callback = function (er, _, __) {
if (er && er.code === 'EAGAIN' && eagCounter < 10) {
eagCounter ++
return read.call(fs, fd, buffer, offset, length, position, callback)
function statFix (orig) {
if (!orig) return orig
// Older versions of Node erroneously returned signed integers for
// uid + gid.
return function (target, options, cb) {
if (typeof options === 'function') {
cb = options
options = null
}
callback_.apply(this, arguments)
function callback (er, stats) {
if (stats) {
if (stats.uid < 0) stats.uid += 0x100000000
if (stats.gid < 0) stats.gid += 0x100000000
}
if (cb) cb.apply(this, arguments)
}
return options ? orig.call(fs, target, options, callback)
: orig.call(fs, target, callback)
}
}
return read.call(fs, fd, buffer, offset, length, position, callback)
}
var readSync = fs.readSync
fs.readSync = function (fd, buffer, offset, length, position) {
var eagCounter = 0
while (true) {
try {
return readSync.call(fs, fd, buffer, offset, length, position)
} catch (er) {
if (er.code === 'EAGAIN' && eagCounter < 10) {
eagCounter ++
continue
}
throw er
function statFixSync (orig) {
if (!orig) return orig
// Older versions of Node erroneously returned signed integers for
// uid + gid.
return function (target, options) {
var stats = options ? orig.call(fs, target, options)
: orig.call(fs, target)
if (stats.uid < 0) stats.uid += 0x100000000
if (stats.gid < 0) stats.gid += 0x100000000
return stats;
}
}
}
// ENOSYS means that the fs doesn't support the op. Just ignore
// that, because it doesn't matter.
//
// if there's no getuid, or if getuid() is something other
// than 0, and the error is EINVAL or EPERM, then just ignore
// it.
//
// This specific case is a silent failure in cp, install, tar,
// and most other unix tools that manage permissions.
//
// When running as root, or if other types of errors are
// encountered, then it's strict.
function chownErOk (er) {
if (!er)
return true
if (er.code === "ENOSYS")
return true
var nonroot = !process.getuid || process.getuid() !== 0
if (nonroot) {
if (er.code === "EINVAL" || er.code === "EPERM")
return true
}
return false
}
}
var test = require('tap').test
var fs = require('../')
test('open lots of stuff', function (t) {
// Get around EBADF from libuv by making sure that stderr is opened
// Otherwise Darwin will refuse to give us a FD for stderr!
process.stderr.write('')
// How many parallel open()'s to do
var n = 1024
var opens = 0
var fds = []
var going = true
var closing = false
var doneCalled = 0
for (var i = 0; i < n; i++) {
go()
}
function go() {
opens++
fs.open(__filename, 'r', function (er, fd) {
if (er) throw er
fds.push(fd)
if (going) go()
})
}
// should hit ulimit pretty fast
setTimeout(function () {
going = false
t.equal(opens - fds.length, n)
done()
}, 100)
function done () {
if (closing) return
doneCalled++
if (fds.length === 0) {
console.error('done called %d times', doneCalled)
// First because of the timeout
// Then to close the fd's opened afterwards
// Then this time, to complete.
// Might take multiple passes, depending on CPU speed
// and ulimit, but at least 3 in every case.
t.ok(doneCalled >= 2)
return t.end()
}
closing = true
setTimeout(function () {
// console.error('do closing again')
closing = false
done()
}, 100)
// console.error('closing time')
var closes = fds.slice(0)
fds.length = 0
closes.forEach(function (fd) {
fs.close(fd, function (er) {
if (er) throw er
})
})
}
})
var test = require('tap').test
var fs = require('../graceful-fs.js')
test('graceful fs is monkeypatched fs', function (t) {
t.equal(fs, require('../fs.js'))
t.end()
})
test('open an existing file works', function (t) {
var fd = fs.openSync(__filename, 'r')
fs.closeSync(fd)
fs.open(__filename, 'r', function (er, fd) {
if (er) throw er
fs.close(fd, function (er) {
if (er) throw er
t.pass('works')
t.end()
})
})
})
test('open a non-existing file throws', function (t) {
var er
try {
var fd = fs.openSync('this file does not exist', 'r')
} catch (x) {
er = x
}
t.ok(er, 'should throw')
t.notOk(fd, 'should not get an fd')
t.equal(er.code, 'ENOENT')
fs.open('neither does this file', 'r', function (er, fd) {
t.ok(er, 'should throw')
t.notOk(fd, 'should not get an fd')
t.equal(er.code, 'ENOENT')
t.end()
})
})
var test = require("tap").test
var fs = require("../fs.js")
var readdir = fs.readdir
fs.readdir = function(path, cb) {
process.nextTick(function() {
cb(null, ["b", "z", "a"])
})
}
var g = require("../")
test("readdir reorder", function (t) {
g.readdir("whatevers", function (er, files) {
if (er)
throw er
t.same(files, [ "a", "b", "z" ])
t.end()
})
})
var fs = require('../');
var rimraf = require('rimraf');
var mkdirp = require('mkdirp');
var test = require('tap').test;
var p = require('path').resolve(__dirname, 'files');
process.chdir(__dirname)
// Make sure to reserve the stderr fd
process.stderr.write('');
var num = 4097;
var paths = new Array(num);
test('make files', function (t) {
rimraf.sync(p);
mkdirp.sync(p);
for (var i = 0; i < num; ++i) {
paths[i] = 'files/file-' + i;
fs.writeFileSync(paths[i], 'content');
}
t.end();
})
test('read files', function (t) {
// now read them
var done = 0;
for (var i = 0; i < num; ++i) {
fs.readFile(paths[i], function(err, data) {
if (err)
throw err;
++done;
if (done === num) {
t.pass('success');
t.end()
}
});
}
});
test('cleanup', function (t) {
rimraf.sync(p);
t.end();
});
......@@ -1550,9 +1550,9 @@
}
},
"assert-plus": {
"version": "1.0.0",
"resolved": "https://registry.npmjs.org/assert-plus/-/assert-plus-1.0.0.tgz",
"integrity": "sha1-8S4PPF13sLHN2RRpQuTpbB5N1SU="
"version": "0.2.0",
"resolved": "https://registry.npmjs.org/assert-plus/-/assert-plus-0.2.0.tgz",
"integrity": "sha1-104bh+ev/A24qttwIfP+SBAasjQ="
},
"assign-symbols": {
"version": "1.0.0",
......@@ -1616,14 +1616,14 @@
}
},
"aws-sign2": {
"version": "0.7.0",
"resolved": "https://registry.npmjs.org/aws-sign2/-/aws-sign2-0.7.0.tgz",
"integrity": "sha1-tG6JCTSpWR8tL2+G1+ap8bP+dqg="
"version": "0.6.0",
"resolved": "https://registry.npmjs.org/aws-sign2/-/aws-sign2-0.6.0.tgz",
"integrity": "sha1-FDQt0428yU0OW4fXY81jYSwOeU8="
},
"aws4": {
"version": "1.9.1",
"resolved": "https://registry.npmjs.org/aws4/-/aws4-1.9.1.tgz",
"integrity": "sha512-wMHVg2EOHaMRxbzgFJ9gtjOOCrI80OHLG14rxi28XwOW8ux6IiEbRCGGGqCtdAIg4FQCbW20k9RsT4y3gJlFug=="
"version": "1.11.0",
"resolved": "https://registry.npmjs.org/aws4/-/aws4-1.11.0.tgz",
"integrity": "sha512-xh1Rl34h6Fi1DC2WWKfxUTVqRsNnr6LsKz2+hfwDxQJWmrx8+c7ylaqBMcHfl1U1r2dsifOvKX3LQuLNZ+XSvA=="
},
"babel-code-frame": {
"version": "6.26.0",
......@@ -2034,6 +2034,14 @@
"integrity": "sha1-aN/1++YMUes3cl6p4+0xDcwed24=",
"dev": true
},
"boom": {
"version": "2.10.1",
"resolved": "https://registry.npmjs.org/boom/-/boom-2.10.1.tgz",
"integrity": "sha1-OciRjO/1eZ+D+UkqhI9iWt0Mdm8=",
"requires": {
"hoek": "2.16.3"
}
},
"brace-expansion": {
"version": "1.1.11",
"resolved": "https://registry.npmjs.org/brace-expansion/-/brace-expansion-1.1.11.tgz",
......@@ -2597,8 +2605,7 @@
"co": {
"version": "4.6.0",
"resolved": "https://registry.npmjs.org/co/-/co-4.6.0.tgz",
"integrity": "sha1-bqa989hTrlTMuOR7+gvz+QMfsYQ=",
"dev": true
"integrity": "sha1-bqa989hTrlTMuOR7+gvz+QMfsYQ="
},
"coa": {
"version": "1.0.4",
......@@ -2926,6 +2933,14 @@
}
}
},
"cryptiles": {
"version": "2.0.5",
"resolved": "https://registry.npmjs.org/cryptiles/-/cryptiles-2.0.5.tgz",
"integrity": "sha1-O9/s3GCBR8HGcgL6KR59ylnqo7g=",
"requires": {
"boom": "2.10.1"
}
},
"crypto-browserify": {
"version": "3.12.0",
"resolved": "https://registry.npmjs.org/crypto-browserify/-/crypto-browserify-3.12.0.tgz",
......@@ -3108,6 +3123,13 @@
"integrity": "sha1-hTz6D3y+L+1d4gMmuN1YEDX24vA=",
"requires": {
"assert-plus": "1.0.0"
},
"dependencies": {
"assert-plus": {
"version": "1.0.0",
"resolved": "https://registry.npmjs.org/assert-plus/-/assert-plus-1.0.0.tgz",
"integrity": "sha1-8S4PPF13sLHN2RRpQuTpbB5N1SU="
}
}
},
"dateformat": {
......@@ -3527,6 +3549,14 @@
"memory-fs": "0.4.1",
"object-assign": "4.1.1",
"tapable": "0.2.9"
},
"dependencies": {
"graceful-fs": {
"version": "4.2.3",
"resolved": "https://registry.npmjs.org/graceful-fs/-/graceful-fs-4.2.3.tgz",
"integrity": "sha512-a30VEBm4PEdx1dRB7MFK7BejejvCvBronbLjht+sHuGYj8PHs7M/5Z+rt5lw551vZ7yfTCj4Vuyy3mSJytDWRQ==",
"dev": true
}
}
},
"entities": {
......@@ -3923,7 +3953,8 @@
"fast-json-stable-stringify": {
"version": "2.0.0",
"resolved": "https://registry.npmjs.org/fast-json-stable-stringify/-/fast-json-stable-stringify-2.0.0.tgz",
"integrity": "sha1-1RQsDK7msRifh9OnYREGT4bIu/I="
"integrity": "sha1-1RQsDK7msRifh9OnYREGT4bIu/I=",
"dev": true
},
"fastparse": {
"version": "1.1.2",
......@@ -5080,6 +5111,13 @@
"integrity": "sha1-Xv+OPmhNVprkyysSgmBOi6YhSfo=",
"requires": {
"assert-plus": "1.0.0"
},
"dependencies": {
"assert-plus": {
"version": "1.0.0",
"resolved": "https://registry.npmjs.org/assert-plus/-/assert-plus-1.0.0.tgz",
"integrity": "sha1-8S4PPF13sLHN2RRpQuTpbB5N1SU="
}
}
},
"glob": {
......@@ -5266,16 +5304,23 @@
"integrity": "sha1-0p4KBV3qUTj00H7UDomC6DwgZs0=",
"dev": true,
"requires": {
"graceful-fs": "1.2.3",
"graceful-fs": "4.2.3",
"inherits": "1.0.2",
"minimatch": "0.2.14"
},
"dependencies": {
"graceful-fs": {
"version": "4.2.3",
"resolved": "https://registry.npmjs.org/graceful-fs/-/graceful-fs-4.2.3.tgz",
"integrity": "sha512-a30VEBm4PEdx1dRB7MFK7BejejvCvBronbLjht+sHuGYj8PHs7M/5Z+rt5lw551vZ7yfTCj4Vuyy3mSJytDWRQ==",
"dev": true
}
}
},
"graceful-fs": {
"version": "1.2.3",
"resolved": "https://registry.npmjs.org/graceful-fs/-/graceful-fs-1.2.3.tgz",
"integrity": "sha1-FaSAaldUfLLS2/J/QuiajDRRs2Q=",
"dev": true
"version": "4.2.3",
"resolved": "https://registry.npmjs.org/graceful-fs/-/graceful-fs-4.2.3.tgz",
"integrity": "sha512-a30VEBm4PEdx1dRB7MFK7BejejvCvBronbLjht+sHuGYj8PHs7M/5Z+rt5lw551vZ7yfTCj4Vuyy3mSJytDWRQ=="
},
"inherits": {
"version": "1.0.2",
......@@ -5310,12 +5355,6 @@
"sparkles": "1.0.1"
}
},
"graceful-fs": {
"version": "4.2.3",
"resolved": "https://registry.npmjs.org/graceful-fs/-/graceful-fs-4.2.3.tgz",
"integrity": "sha512-a30VEBm4PEdx1dRB7MFK7BejejvCvBronbLjht+sHuGYj8PHs7M/5Z+rt5lw551vZ7yfTCj4Vuyy3mSJytDWRQ==",
"dev": true
},
"graceful-readlink": {
"version": "1.0.1",
"resolved": "https://registry.npmjs.org/graceful-readlink/-/graceful-readlink-1.0.1.tgz",
......@@ -5661,39 +5700,27 @@
}
},
"har-schema": {
"version": "2.0.0",
"resolved": "https://registry.npmjs.org/har-schema/-/har-schema-2.0.0.tgz",
"integrity": "sha1-qUwiJOvKwEeCoNkDVSHyRzW37JI="
"version": "1.0.5",
"resolved": "https://registry.npmjs.org/har-schema/-/har-schema-1.0.5.tgz",
"integrity": "sha1-0mMTX0MwfALGAq/I/pWXDAFRNp4="
},
"har-validator": {
"version": "5.1.3",
"resolved": "https://registry.npmjs.org/har-validator/-/har-validator-5.1.3.tgz",
"integrity": "sha512-sNvOCzEQNr/qrvJgc3UG/kD4QtlHycrzwS+6mfTrrSq97BvaYcPZZI1ZSqGSPR73Cxn4LKTD4PttRwfU7jWq5g==",
"version": "4.2.1",
"resolved": "https://registry.npmjs.org/har-validator/-/har-validator-4.2.1.tgz",
"integrity": "sha1-M0gdDxu/9gDdID11gSpqX7oALio=",
"requires": {
"ajv": "6.11.0",
"har-schema": "2.0.0"
"ajv": "4.11.8",
"har-schema": "1.0.5"
},
"dependencies": {
"ajv": {
"version": "6.11.0",
"resolved": "https://registry.npmjs.org/ajv/-/ajv-6.11.0.tgz",
"integrity": "sha512-nCprB/0syFYy9fVYU1ox1l2KN8S9I+tziH8D4zdZuLT3N6RMlGSGt5FSTpAiHB/Whv8Qs1cWHma1aMKZyaHRKA==",
"version": "4.11.8",
"resolved": "https://registry.npmjs.org/ajv/-/ajv-4.11.8.tgz",
"integrity": "sha1-gv+wKynmYq5TvcIK8VlHcGc5xTY=",
"requires": {
"fast-deep-equal": "3.1.1",
"fast-json-stable-stringify": "2.0.0",
"json-schema-traverse": "0.4.1",
"uri-js": "4.2.2"
"co": "4.6.0",
"json-stable-stringify": "1.0.1"
}
},
"fast-deep-equal": {
"version": "3.1.1",
"resolved": "https://registry.npmjs.org/fast-deep-equal/-/fast-deep-equal-3.1.1.tgz",
"integrity": "sha512-8UEa58QDLauDNfpbrX55Q9jrGHThw2ZMdOky5Gl1CDtVeJDPVrG4Jxx1N8jw2gkWaff5UUuX1KJd+9zGe2B+ZA=="
},
"json-schema-traverse": {
"version": "0.4.1",
"resolved": "https://registry.npmjs.org/json-schema-traverse/-/json-schema-traverse-0.4.1.tgz",
"integrity": "sha512-xbbCH5dCYU5T8LcEhhuh7HJ88HXuW3qsI3Y0zOZFKfZEHcpWiHU/Jxzk629Brsab/mMiHQti9wMP+845RPe3Vg=="
}
}
},
......@@ -5822,6 +5849,17 @@
"minimalistic-assert": "1.0.1"
}
},
"hawk": {
"version": "3.1.3",
"resolved": "https://registry.npmjs.org/hawk/-/hawk-3.1.3.tgz",
"integrity": "sha1-B4REvXwWQLD+VA0sm3PVlnjo4cQ=",
"requires": {
"boom": "2.10.1",
"cryptiles": "2.0.5",
"hoek": "2.16.3",
"sntp": "1.0.9"
}
},
"he": {
"version": "1.2.0",
"resolved": "https://registry.npmjs.org/he/-/he-1.2.0.tgz",
......@@ -5849,6 +5887,11 @@
"minimalistic-crypto-utils": "1.0.1"
}
},
"hoek": {
"version": "2.16.3",
"resolved": "https://registry.npmjs.org/hoek/-/hoek-2.16.3.tgz",
"integrity": "sha1-ILt0A9POo5jpHcRxCo/xuCdKJe0="
},
"homedir-polyfill": {
"version": "1.0.3",
"resolved": "https://registry.npmjs.org/homedir-polyfill/-/homedir-polyfill-1.0.3.tgz",
......@@ -6064,11 +6107,11 @@
}
},
"http-signature": {
"version": "1.2.0",
"resolved": "https://registry.npmjs.org/http-signature/-/http-signature-1.2.0.tgz",
"integrity": "sha1-muzZJRFHcvPZW2WmCruPfBj7rOE=",
"version": "1.1.1",
"resolved": "https://registry.npmjs.org/http-signature/-/http-signature-1.1.1.tgz",
"integrity": "sha1-33LiZwZs0Kxn+3at+OE0qPvPkb8=",
"requires": {
"assert-plus": "1.0.0",
"assert-plus": "0.2.0",
"jsprim": "1.4.1",
"sshpk": "1.16.1"
}
......@@ -6600,6 +6643,14 @@
"integrity": "sha1-NJptRMU6Ud6JtAgFxdXlm0F9M0A=",
"dev": true
},
"json-stable-stringify": {
"version": "1.0.1",
"resolved": "https://registry.npmjs.org/json-stable-stringify/-/json-stable-stringify-1.0.1.tgz",
"integrity": "sha1-mnWdOcXy/1A/1TAGRu1EX4jE+a8=",
"requires": {
"jsonify": "0.0.0"
}
},
"json-stringify-safe": {
"version": "5.0.1",
"resolved": "https://registry.npmjs.org/json-stringify-safe/-/json-stringify-safe-5.0.1.tgz",
......@@ -6614,6 +6665,11 @@
"minimist": "1.2.0"
}
},
"jsonify": {
"version": "0.0.0",
"resolved": "https://registry.npmjs.org/jsonify/-/jsonify-0.0.0.tgz",
"integrity": "sha1-LHS27kHZPKUbe1qu6PUDYx0lKnM="
},
"jsprim": {
"version": "1.4.1",
"resolved": "https://registry.npmjs.org/jsprim/-/jsprim-1.4.1.tgz",
......@@ -6623,6 +6679,13 @@
"extsprintf": "1.3.0",
"json-schema": "0.2.3",
"verror": "1.10.0"
},
"dependencies": {
"assert-plus": {
"version": "1.0.0",
"resolved": "https://registry.npmjs.org/assert-plus/-/assert-plus-1.0.0.tgz",
"integrity": "sha1-8S4PPF13sLHN2RRpQuTpbB5N1SU="
}
}
},
"kind-of": {
......@@ -6678,6 +6741,12 @@
"strip-bom": "2.0.0"
},
"dependencies": {
"graceful-fs": {
"version": "4.2.3",
"resolved": "https://registry.npmjs.org/graceful-fs/-/graceful-fs-4.2.3.tgz",
"integrity": "sha512-a30VEBm4PEdx1dRB7MFK7BejejvCvBronbLjht+sHuGYj8PHs7M/5Z+rt5lw551vZ7yfTCj4Vuyy3mSJytDWRQ==",
"dev": true
},
"pify": {
"version": "2.3.0",
"resolved": "https://registry.npmjs.org/pify/-/pify-2.3.0.tgz",
......@@ -7251,12 +7320,6 @@
}
}
},
"natives": {
"version": "1.1.6",
"resolved": "https://registry.npmjs.org/natives/-/natives-1.1.6.tgz",
"integrity": "sha512-6+TDFewD4yxY14ptjKaS63GVdtKiES1pTPyxn9Jb0rBqPMZ7VcCiooEhPNsr+mqHtMGxa/5c/HhcC4uPEUw/nA==",
"dev": true
},
"ncname": {
"version": "1.0.0",
"resolved": "https://registry.npmjs.org/ncname/-/ncname-1.0.0.tgz",
......@@ -7720,6 +7783,13 @@
"graceful-fs": "4.2.3",
"npm-normalize-package-bin": "1.0.1",
"write-file-atomic": "2.4.3"
},
"dependencies": {
"graceful-fs": {
"version": "4.2.3",
"resolved": "https://registry.npmjs.org/graceful-fs/-/graceful-fs-4.2.3.tgz",
"integrity": "sha512-a30VEBm4PEdx1dRB7MFK7BejejvCvBronbLjht+sHuGYj8PHs7M/5Z+rt5lw551vZ7yfTCj4Vuyy3mSJytDWRQ=="
}
}
},
"bluebird": {
......@@ -7782,6 +7852,13 @@
"ssri": "6.0.1",
"unique-filename": "1.1.1",
"y18n": "4.0.0"
},
"dependencies": {
"graceful-fs": {
"version": "4.2.3",
"resolved": "https://registry.npmjs.org/graceful-fs/-/graceful-fs-4.2.3.tgz",
"integrity": "sha512-a30VEBm4PEdx1dRB7MFK7BejejvCvBronbLjht+sHuGYj8PHs7M/5Z+rt5lw551vZ7yfTCj4Vuyy3mSJytDWRQ=="
}
}
},
"call-limit": {
......@@ -7877,6 +7954,13 @@
"requires": {
"graceful-fs": "4.2.3",
"mkdirp": "0.5.1"
},
"dependencies": {
"graceful-fs": {
"version": "4.2.3",
"resolved": "https://registry.npmjs.org/graceful-fs/-/graceful-fs-4.2.3.tgz",
"integrity": "sha512-a30VEBm4PEdx1dRB7MFK7BejejvCvBronbLjht+sHuGYj8PHs7M/5Z+rt5lw551vZ7yfTCj4Vuyy3mSJytDWRQ=="
}
}
},
"co": {
......@@ -7972,6 +8056,13 @@
"unique-string": "1.0.0",
"write-file-atomic": "2.4.3",
"xdg-basedir": "3.0.0"
},
"dependencies": {
"graceful-fs": {
"version": "4.2.3",
"resolved": "https://registry.npmjs.org/graceful-fs/-/graceful-fs-4.2.3.tgz",
"integrity": "sha512-a30VEBm4PEdx1dRB7MFK7BejejvCvBronbLjht+sHuGYj8PHs7M/5Z+rt5lw551vZ7yfTCj4Vuyy3mSJytDWRQ=="
}
}
},
"console-control-strings": {
......@@ -8387,6 +8478,13 @@
"graceful-fs": "4.2.3",
"path-is-inside": "1.0.2",
"rimraf": "2.6.3"
},
"dependencies": {
"graceful-fs": {
"version": "4.2.3",
"resolved": "https://registry.npmjs.org/graceful-fs/-/graceful-fs-4.2.3.tgz",
"integrity": "sha512-a30VEBm4PEdx1dRB7MFK7BejejvCvBronbLjht+sHuGYj8PHs7M/5Z+rt5lw551vZ7yfTCj4Vuyy3mSJytDWRQ=="
}
}
},
"fs-write-stream-atomic": {
......@@ -8399,6 +8497,11 @@
"readable-stream": "2.3.6"
},
"dependencies": {
"graceful-fs": {
"version": "4.2.3",
"resolved": "https://registry.npmjs.org/graceful-fs/-/graceful-fs-4.2.3.tgz",
"integrity": "sha512-a30VEBm4PEdx1dRB7MFK7BejejvCvBronbLjht+sHuGYj8PHs7M/5Z+rt5lw551vZ7yfTCj4Vuyy3mSJytDWRQ=="
},
"iferr": {
"version": "0.1.5",
"bundled": true
......@@ -8487,6 +8590,11 @@
"version": "1.2.0",
"bundled": true
},
"graceful-fs": {
"version": "4.2.3",
"resolved": "https://registry.npmjs.org/graceful-fs/-/graceful-fs-4.2.3.tgz",
"integrity": "sha512-a30VEBm4PEdx1dRB7MFK7BejejvCvBronbLjht+sHuGYj8PHs7M/5Z+rt5lw551vZ7yfTCj4Vuyy3mSJytDWRQ=="
},
"iferr": {
"version": "0.1.5",
"bundled": true
......@@ -8555,7 +8663,8 @@
},
"graceful-fs": {
"version": "4.2.3",
"bundled": true
"resolved": "https://registry.npmjs.org/graceful-fs/-/graceful-fs-4.2.3.tgz",
"integrity": "sha512-a30VEBm4PEdx1dRB7MFK7BejejvCvBronbLjht+sHuGYj8PHs7M/5Z+rt5lw551vZ7yfTCj4Vuyy3mSJytDWRQ=="
},
"har-schema": {
"version": "2.0.0",
......@@ -8872,6 +8981,13 @@
"read-package-json": "2.1.1",
"rimraf": "2.6.3",
"worker-farm": "1.7.0"
},
"dependencies": {
"graceful-fs": {
"version": "4.2.3",
"resolved": "https://registry.npmjs.org/graceful-fs/-/graceful-fs-4.2.3.tgz",
"integrity": "sha512-a30VEBm4PEdx1dRB7MFK7BejejvCvBronbLjht+sHuGYj8PHs7M/5Z+rt5lw551vZ7yfTCj4Vuyy3mSJytDWRQ=="
}
}
},
"libnpm": {
......@@ -9268,6 +9384,11 @@
"which": "1.3.1"
},
"dependencies": {
"graceful-fs": {
"version": "4.2.3",
"resolved": "https://registry.npmjs.org/graceful-fs/-/graceful-fs-4.2.3.tgz",
"integrity": "sha512-a30VEBm4PEdx1dRB7MFK7BejejvCvBronbLjht+sHuGYj8PHs7M/5Z+rt5lw551vZ7yfTCj4Vuyy3mSJytDWRQ=="
},
"nopt": {
"version": "3.0.6",
"bundled": true,
......@@ -9346,6 +9467,13 @@
"uid-number": "0.0.6",
"umask": "1.1.0",
"which": "1.3.1"
},
"dependencies": {
"graceful-fs": {
"version": "4.2.3",
"resolved": "https://registry.npmjs.org/graceful-fs/-/graceful-fs-4.2.3.tgz",
"integrity": "sha512-a30VEBm4PEdx1dRB7MFK7BejejvCvBronbLjht+sHuGYj8PHs7M/5Z+rt5lw551vZ7yfTCj4Vuyy3mSJytDWRQ=="
}
}
},
"npm-logical-tree": {
......@@ -9765,6 +9893,13 @@
"bundled": true,
"requires": {
"graceful-fs": "4.2.3"
},
"dependencies": {
"graceful-fs": {
"version": "4.2.3",
"resolved": "https://registry.npmjs.org/graceful-fs/-/graceful-fs-4.2.3.tgz",
"integrity": "sha512-a30VEBm4PEdx1dRB7MFK7BejejvCvBronbLjht+sHuGYj8PHs7M/5Z+rt5lw551vZ7yfTCj4Vuyy3mSJytDWRQ=="
}
}
},
"read-installed": {
......@@ -9778,6 +9913,14 @@
"semver": "5.7.1",
"slide": "1.1.6",
"util-extend": "1.0.3"
},
"dependencies": {
"graceful-fs": {
"version": "4.2.3",
"resolved": "https://registry.npmjs.org/graceful-fs/-/graceful-fs-4.2.3.tgz",
"integrity": "sha512-a30VEBm4PEdx1dRB7MFK7BejejvCvBronbLjht+sHuGYj8PHs7M/5Z+rt5lw551vZ7yfTCj4Vuyy3mSJytDWRQ==",
"optional": true
}
}
},
"read-package-json": {
......@@ -9789,6 +9932,14 @@
"json-parse-better-errors": "1.0.2",
"normalize-package-data": "2.5.0",
"npm-normalize-package-bin": "1.0.1"
},
"dependencies": {
"graceful-fs": {
"version": "4.2.3",
"resolved": "https://registry.npmjs.org/graceful-fs/-/graceful-fs-4.2.3.tgz",
"integrity": "sha512-a30VEBm4PEdx1dRB7MFK7BejejvCvBronbLjht+sHuGYj8PHs7M/5Z+rt5lw551vZ7yfTCj4Vuyy3mSJytDWRQ==",
"optional": true
}
}
},
"read-package-tree": {
......@@ -9817,6 +9968,13 @@
"dezalgo": "1.0.3",
"graceful-fs": "4.2.3",
"once": "1.4.0"
},
"dependencies": {
"graceful-fs": {
"version": "4.2.3",
"resolved": "https://registry.npmjs.org/graceful-fs/-/graceful-fs-4.2.3.tgz",
"integrity": "sha512-a30VEBm4PEdx1dRB7MFK7BejejvCvBronbLjht+sHuGYj8PHs7M/5Z+rt5lw551vZ7yfTCj4Vuyy3mSJytDWRQ=="
}
}
},
"registry-auth-token": {
......@@ -9924,6 +10082,13 @@
"bundled": true,
"requires": {
"graceful-fs": "4.2.3"
},
"dependencies": {
"graceful-fs": {
"version": "4.2.3",
"resolved": "https://registry.npmjs.org/graceful-fs/-/graceful-fs-4.2.3.tgz",
"integrity": "sha512-a30VEBm4PEdx1dRB7MFK7BejejvCvBronbLjht+sHuGYj8PHs7M/5Z+rt5lw551vZ7yfTCj4Vuyy3mSJytDWRQ=="
}
}
},
"shebang-command": {
......@@ -10451,6 +10616,13 @@
"graceful-fs": "4.2.3",
"imurmurhash": "0.1.4",
"signal-exit": "3.0.2"
},
"dependencies": {
"graceful-fs": {
"version": "4.2.3",
"resolved": "https://registry.npmjs.org/graceful-fs/-/graceful-fs-4.2.3.tgz",
"integrity": "sha512-a30VEBm4PEdx1dRB7MFK7BejejvCvBronbLjht+sHuGYj8PHs7M/5Z+rt5lw551vZ7yfTCj4Vuyy3mSJytDWRQ=="
}
}
},
"xdg-basedir": {
......@@ -10533,9 +10705,9 @@
"dev": true
},
"oauth-sign": {
"version": "0.9.0",
"resolved": "https://registry.npmjs.org/oauth-sign/-/oauth-sign-0.9.0.tgz",
"integrity": "sha512-fexhUFFPTGV8ybAtSIGbV6gOkSv8UtRbDBnAyLQw4QPKkgNlsH2ByPGtMUqdWkos6YCRmAqViwgZrJc/mRDzZQ=="
"version": "0.8.2",
"resolved": "https://registry.npmjs.org/oauth-sign/-/oauth-sign-0.8.2.tgz",
"integrity": "sha1-Rqarfwrq2N6unsBWV4C31O/rnUM="
},
"object-assign": {
"version": "4.1.1",
......@@ -10972,6 +11144,12 @@
"pinkie-promise": "2.0.1"
},
"dependencies": {
"graceful-fs": {
"version": "4.2.3",
"resolved": "https://registry.npmjs.org/graceful-fs/-/graceful-fs-4.2.3.tgz",
"integrity": "sha512-a30VEBm4PEdx1dRB7MFK7BejejvCvBronbLjht+sHuGYj8PHs7M/5Z+rt5lw551vZ7yfTCj4Vuyy3mSJytDWRQ==",
"dev": true
},
"pify": {
"version": "2.3.0",
"resolved": "https://registry.npmjs.org/pify/-/pify-2.3.0.tgz",
......@@ -10994,9 +11172,9 @@
}
},
"performance-now": {
"version": "2.1.0",
"resolved": "https://registry.npmjs.org/performance-now/-/performance-now-2.1.0.tgz",
"integrity": "sha1-Ywn04OX6kT7BxpMHrjZLSzd8nns="
"version": "0.2.0",
"resolved": "https://registry.npmjs.org/performance-now/-/performance-now-0.2.0.tgz",
"integrity": "sha1-M+8wxcd9TqIcWlOGnZG1bY8lVeU="
},
"pify": {
"version": "4.0.1",
......@@ -11686,11 +11864,6 @@
"integrity": "sha1-8FKijacOYYkX7wqKw0wa5aaChrM=",
"dev": true
},
"psl": {
"version": "1.7.0",
"resolved": "https://registry.npmjs.org/psl/-/psl-1.7.0.tgz",
"integrity": "sha512-5NsSEDv8zY70ScRnOTn7bK7eanl2MvFrOrS/R6x+dBt5g1ghnj9Zv90kO8GwT8gxcu2ANyFprnFYB85IogIJOQ=="
},
"public-encrypt": {
"version": "4.0.3",
"resolved": "https://registry.npmjs.org/public-encrypt/-/public-encrypt-4.0.3.tgz",
......@@ -11708,7 +11881,8 @@
"punycode": {
"version": "2.1.1",
"resolved": "https://registry.npmjs.org/punycode/-/punycode-2.1.1.tgz",
"integrity": "sha512-XRsRjdf+j5ml+y/6GKHPZbrF/8p2Yga0JPtdqTIY2Xe5ohJPD9saDJJLPvp9+NSBprVvevdXZybnj2cv8OEd0A=="
"integrity": "sha512-XRsRjdf+j5ml+y/6GKHPZbrF/8p2Yga0JPtdqTIY2Xe5ohJPD9saDJJLPvp9+NSBprVvevdXZybnj2cv8OEd0A==",
"dev": true
},
"q": {
"version": "1.5.1",
......@@ -12079,6 +12253,12 @@
}
}
},
"graceful-fs": {
"version": "4.2.3",
"resolved": "https://registry.npmjs.org/graceful-fs/-/graceful-fs-4.2.3.tgz",
"integrity": "sha512-a30VEBm4PEdx1dRB7MFK7BejejvCvBronbLjht+sHuGYj8PHs7M/5Z+rt5lw551vZ7yfTCj4Vuyy3mSJytDWRQ==",
"dev": true
},
"is-accessor-descriptor": {
"version": "1.0.0",
"resolved": "https://registry.npmjs.org/is-accessor-descriptor/-/is-accessor-descriptor-1.0.0.tgz",
......@@ -12426,36 +12606,38 @@
}
},
"request": {
"version": "2.88.2",
"resolved": "https://registry.npmjs.org/request/-/request-2.88.2.tgz",
"integrity": "sha512-MsvtOrfG9ZcrOwAW+Qi+F6HbD0CWXEh9ou77uOb7FM2WPhwT7smM833PzanhJLsgXjN89Ir6V2PczXNnMpwKhw==",
"version": "2.81.0",
"resolved": "https://registry.npmjs.org/request/-/request-2.81.0.tgz",
"integrity": "sha1-xpKJRqDgbF+Nb4qTM0af/aRimKA=",
"requires": {
"aws-sign2": "0.7.0",
"aws4": "1.9.1",
"aws-sign2": "0.6.0",
"aws4": "1.11.0",
"caseless": "0.12.0",
"combined-stream": "1.0.8",
"extend": "3.0.2",
"forever-agent": "0.6.1",
"form-data": "2.3.3",
"har-validator": "5.1.3",
"http-signature": "1.2.0",
"form-data": "2.1.4",
"har-validator": "4.2.1",
"hawk": "3.1.3",
"http-signature": "1.1.1",
"is-typedarray": "1.0.0",
"isstream": "0.1.2",
"json-stringify-safe": "5.0.1",
"mime-types": "2.1.25",
"oauth-sign": "0.9.0",
"performance-now": "2.1.0",
"qs": "6.5.2",
"oauth-sign": "0.8.2",
"performance-now": "0.2.0",
"qs": "6.4.0",
"safe-buffer": "5.1.2",
"tough-cookie": "2.5.0",
"stringstream": "0.0.6",
"tough-cookie": "2.3.4",
"tunnel-agent": "0.6.0",
"uuid": "3.4.0"
},
"dependencies": {
"form-data": {
"version": "2.3.3",
"resolved": "https://registry.npmjs.org/form-data/-/form-data-2.3.3.tgz",
"integrity": "sha512-1lLKB2Mu3aGP1Q/2eCOx0fNbRMe7XdwktwOruhfqqd0rIJWwN4Dh+E3hrPSlDCXnSR7UtZ1N38rVXm+6+MEhJQ==",
"version": "2.1.4",
"resolved": "https://registry.npmjs.org/form-data/-/form-data-2.1.4.tgz",
"integrity": "sha1-M8GDrPGTJ27KqYFDpp6Uv+4XUNE=",
"requires": {
"asynckit": "0.4.0",
"combined-stream": "1.0.8",
......@@ -12463,9 +12645,9 @@
}
},
"qs": {
"version": "6.5.2",
"resolved": "https://registry.npmjs.org/qs/-/qs-6.5.2.tgz",
"integrity": "sha512-N5ZAX4/LxJmF+7wN74pUD6qAh9/wnvdQcjq9TZjevvXzSUo7bfmw91saqMjzGS2xq91/odN2dW/WOl7qQHNDGA=="
"version": "6.4.0",
"resolved": "https://registry.npmjs.org/qs/-/qs-6.4.0.tgz",
"integrity": "sha1-E+JtKK1rD/qpExLNO/cI7TUecjM="
}
}
},
......@@ -12972,6 +13154,14 @@
"kind-of": "3.2.2"
}
},
"sntp": {
"version": "1.0.9",
"resolved": "https://registry.npmjs.org/sntp/-/sntp-1.0.9.tgz",
"integrity": "sha1-ZUEYTMkK7qbG57NeJlkIJEPGYZg=",
"requires": {
"hoek": "2.16.3"
}
},
"soap": {
"version": "0.30.0",
"resolved": "https://registry.npmjs.org/soap/-/soap-0.30.0.tgz",
......@@ -12983,7 +13173,7 @@
"debug": "4.1.1",
"httpntlm": "1.7.6",
"lodash": "4.17.15",
"request": "2.88.2",
"request": "2.81.0",
"sax": "1.2.4",
"serve-static": "1.14.1",
"strip-bom": "3.0.0",
......@@ -13123,6 +13313,13 @@
"jsbn": "0.1.1",
"safer-buffer": "2.1.2",
"tweetnacl": "0.14.5"
},
"dependencies": {
"assert-plus": {
"version": "1.0.0",
"resolved": "https://registry.npmjs.org/assert-plus/-/assert-plus-1.0.0.tgz",
"integrity": "sha1-8S4PPF13sLHN2RRpQuTpbB5N1SU="
}
}
},
"stackframe": {
......@@ -13283,6 +13480,11 @@
"integrity": "sha1-YuIDvEF2bGwoyfyEMB2rHFMQ+pQ=",
"dev": true
},
"stringstream": {
"version": "0.0.6",
"resolved": "https://registry.npmjs.org/stringstream/-/stringstream-0.0.6.tgz",
"integrity": "sha512-87GEBAkegbBcweToUrdzf3eLhWNg06FJTebl4BVJz/JgWy8CvEr9dRtX5qWphiynMSQlxxi+QqN0z5T32SLlhA=="
},
"strip-ansi": {
"version": "3.0.1",
"resolved": "https://registry.npmjs.org/strip-ansi/-/strip-ansi-3.0.1.tgz",
......@@ -13555,12 +13757,18 @@
"dev": true
},
"tough-cookie": {
"version": "2.5.0",
"resolved": "https://registry.npmjs.org/tough-cookie/-/tough-cookie-2.5.0.tgz",
"integrity": "sha512-nlLsUzgm1kfLXSXfRZMc1KLAugd4hqJHDTvc2hDIwS3mZAfMEuMbc03SujMF+GEcpaX/qboeycw6iO8JwVv2+g==",
"version": "2.3.4",
"resolved": "https://registry.npmjs.org/tough-cookie/-/tough-cookie-2.3.4.tgz",
"integrity": "sha512-TZ6TTfI5NtZnuyy/Kecv+CnoROnyXn2DN97LontgQpCwsX2XyLYCC0ENhYkehSOwAp8rTQKc/NUIF7BkQ5rKLA==",
"requires": {
"psl": "1.7.0",
"punycode": "2.1.1"
"punycode": "1.4.1"
},
"dependencies": {
"punycode": {
"version": "1.4.1",
"resolved": "https://registry.npmjs.org/punycode/-/punycode-1.4.1.tgz",
"integrity": "sha1-wNWmOycYgArY4esPpSachN1BhF4="
}
}
},
"trim-right": {
......@@ -13814,6 +14022,7 @@
"version": "4.2.2",
"resolved": "https://registry.npmjs.org/uri-js/-/uri-js-4.2.2.tgz",
"integrity": "sha512-KY9Frmirql91X2Qgjry0Wd4Y+YTdrdZheS8TFwvkbLWf/G5KNJDCh6pKL5OZctEW4+0Baa5idK2ZQuELRwPznQ==",
"dev": true,
"requires": {
"punycode": "2.1.1"
}
......@@ -13937,6 +14146,13 @@
"assert-plus": "1.0.0",
"core-util-is": "1.0.2",
"extsprintf": "1.3.0"
},
"dependencies": {
"assert-plus": {
"version": "1.0.0",
"resolved": "https://registry.npmjs.org/assert-plus/-/assert-plus-1.0.0.tgz",
"integrity": "sha1-8S4PPF13sLHN2RRpQuTpbB5N1SU="
}
}
},
"vinyl": {
......@@ -13959,7 +14175,7 @@
"defaults": "1.0.3",
"glob-stream": "3.1.18",
"glob-watcher": "0.0.6",
"graceful-fs": "3.0.12",
"graceful-fs": "4.2.3",
"mkdirp": "0.5.1",
"strip-bom": "1.0.0",
"through2": "0.6.5",
......@@ -13973,13 +14189,10 @@
"dev": true
},
"graceful-fs": {
"version": "3.0.12",
"resolved": "https://registry.npmjs.org/graceful-fs/-/graceful-fs-3.0.12.tgz",
"integrity": "sha512-J55gaCS4iTTJfTXIxSVw3EMQckcqkpdRv3IR7gu6sq0+tbC363Zx6KH/SEwXASK9JRbhyZmVjJEVJIOxYsB3Qg==",
"dev": true,
"requires": {
"natives": "1.1.6"
}
"version": "4.2.3",
"resolved": "https://registry.npmjs.org/graceful-fs/-/graceful-fs-4.2.3.tgz",
"integrity": "sha512-a30VEBm4PEdx1dRB7MFK7BejejvCvBronbLjht+sHuGYj8PHs7M/5Z+rt5lw551vZ7yfTCj4Vuyy3mSJytDWRQ==",
"dev": true
},
"isarray": {
"version": "0.0.1",
......@@ -14238,6 +14451,14 @@
"chokidar": "2.1.8",
"graceful-fs": "4.2.3",
"neo-async": "2.6.1"
},
"dependencies": {
"graceful-fs": {
"version": "4.2.3",
"resolved": "https://registry.npmjs.org/graceful-fs/-/graceful-fs-4.2.3.tgz",
"integrity": "sha512-a30VEBm4PEdx1dRB7MFK7BejejvCvBronbLjht+sHuGYj8PHs7M/5Z+rt5lw551vZ7yfTCj4Vuyy3mSJytDWRQ==",
"dev": true
}
}
},
"webpack": {
......@@ -14364,6 +14585,14 @@
"parse-json": "2.2.0",
"pify": "2.3.0",
"strip-bom": "3.0.0"
},
"dependencies": {
"graceful-fs": {
"version": "4.2.3",
"resolved": "https://registry.npmjs.org/graceful-fs/-/graceful-fs-4.2.3.tgz",
"integrity": "sha512-a30VEBm4PEdx1dRB7MFK7BejejvCvBronbLjht+sHuGYj8PHs7M/5Z+rt5lw551vZ7yfTCj4Vuyy3mSJytDWRQ==",
"dev": true
}
}
},
"path-type": {
......
......@@ -57,6 +57,7 @@
"http-auth": "^4.1.2",
"jquery": "^3.4.1",
"npm": "^6.13.6",
"request": "^2.81.0",
"soap": "^0.30.0"
},
"babel": {
......
......@@ -6,13 +6,451 @@ const bodyParser = require('body-parser')
const soap = require('soap');
app.use(bodyParser.urlencoded({ extended: false }))
app.use(bodyParser.json())
const request = require('ajax-request');
const request_ajax = require('ajax-request');
const request = require('request');
app.use(express.static('vcm'));
app.listen(process.env.PORT || 8083);
console.log("on 8083");
//https://traffic.ls.hereapi.com/traffic/6.1/flow.json?bbox=48.8575,8.9757;48.6747,9.3712&responseattributes=sh%2Cfc&apiKey=9Grm-6B7VRvxAnbf2eKw29gR-9uuJP8VaXXYR8LK93Y
var flow
request('https://traffic.ls.hereapi.com/traffic/6.2/flow.json?prox=48.7823,9.1807,919&responseattributes=sh%2Cfc&apiKey=9Grm-6B7VRvxAnbf2eKw29gR-9uuJP8VaXXYR8LK93Y', {json:true},(err, res, body) => {
if (err) {return console.log(err); }
console.log(body.url);
console.log(body.explanation);
flow = res
})
var accident
request('https://traffic.ls.hereapi.com/traffic/6.3/incidents.json?apiKey=9Grm-6B7VRvxAnbf2eKw29gR-9uuJP8VaXXYR8LK93Y&bbox=48.790,9.139;48.771,9.239', { json: true }, (err, res, body) => {
if (err) { return console.log(err); }
console.log(body.url);
console.log(body.explanation);
accident = res
console.log(accident[1]);
});
var testjsonsflow = {
"type": "FeatureCollection",
"features": [
{
"type": "Feature",
"properties": {},
"geometry": {
"type": "LineString",
"coordinates": [
[
9.211758404732821,
48.79928779052079,
-0.003812428450083977
],
[
9.21372550369925,
48.79757037042029,
-0.004464600820639255
],
[
9.217416766673484,
48.79386716715126,
-0.0037284616307613283
],
[
9.217370353016513,
48.79390319685058,
-0.0038132023499026415
]
]
},
"vcsMeta": {
"style": {
"type": "vector",
"stroke": {
"color": [
51,
153,
204,
1
],
"width": 39,
"lineDash": null
}
}
}
}
],
"vcsMeta": {
"version": "1.0",
"altitudeMode": "clampToGround",
"embeddedIcons": []
}
}
var flowjson;
app.get('/FLOW', function (req, res) {
console.log('command angekommen!')
try {
// res.json(testjsonsflow);
res.json(flowjson);
console.log('.../loadSetP successful!');
}
catch (err) {
console.log('.../loadSetP failed!\n' + err);
}
});
app.get('/CONSTRUCTION', function (req, res) {
console.log('command angekommen!')
try {
var testjson = {
"name":"incident" + "01",
"type":"FeatureCollection",
"crs": { "type": "name", "properties": { "name": "urn:ogc:def:crs:OGC:1.3:CRS84" } },
"features": buildJSON('CONSTRUCTION')
};
res.json(testjson);
console.log('.../loadSetP successful!');
}
catch (err) {
console.log('.../loadSetP failed!\n' + err);
}
});
app.get('/ROAD_CLOSURE', function (req, res) {
console.log('command angekommen!')
try {
var testjson = {
"name":"incident" + "01",
"type":"FeatureCollection",
"crs": { "type": "name", "properties": { "name": "urn:ogc:def:crs:OGC:1.3:CRS84" } },
"features": buildJSON('ROAD_CLOSURE')
};
res.json(testjson);
console.log('.../loadSetP successful!');
}
catch (err) {
console.log('.../loadSetP failed!\n' + err);
}
});
function buildFLOW(){
var JsonFeature = [];
var length = flow.body.RWS[0].RW.length;
console.log(length);
for (var i = 0; i<= length -1; i++){
var shplength = flow.body.RWS[0].RW[i].FIS[0].FI[0].SHP.length;
// var type = accident.body.TRAFFIC_ITEMS.TRAFFIC_ITEM[i].TRAFFIC_ITEM_TYPE_DESC;
var mid = flow.body.RWS[0].RW[i].mid;
var LI = flow.body.RWS[0].RW[i].LI;
var DE = flow.body.RWS[0].RW[i].DE;
var PBT = flow.body.RWS[0].RW[i].PBT;
var TMC = flow.body.RWS[0].RW[i].FIS[0].FI[0].TMC;
var CF = flow.body.RWS[0].RW[i].FIS[0].FI[0].CF[0];
var locationshp = [];
for (var j = 0; j <= shplength - 1; j++ ){
var value = flow.body.RWS[0].RW[i].FIS[0].FI[0].SHP[j].value[0];
// console.log(value[0])
var splitvalue = [];
splitvalue = value.split(" ");
// console.log(splitvalue.length)
var coord = [];
for (var k = 0; k <= splitvalue.length -2; k++){
var latlon = [];
latlon = splitvalue[k].split(",");
var lat = latlon[0];
var lon = latlon[1];
coord.push([parseFloat(lon),parseFloat(lat)])
}
// var FC = accident.body.TRAFFIC_ITEMS.TRAFFIC_ITEM[i].LOCATION.GEOLOC.ORIGIN.LONGITUDE;
locationshp.push(coord)
// console.log(value)
}
if (CF.JF){
// console.log("CF.JF -- " + CF.JF)
}
if ((CF.JF >= 3) ){
JsonFeature.push({
"type":"Feature",
"properties": { "id": mid, "name": "linestring" , "LI": LI, "DE": DE, "PBT":PBT, "TMC":TMC, "CF":CF},
"geometry":{
"type":"MultiLineString",
"coordinates": locationshp
},
"vcsMeta": {
"style": {
"type": "vector",
"stroke": {
"color": [
153,
0,
0,
1
],
"width": 2,
"lineDash": null
}
}
}
})
} else if ((CF.JF <3 && CF.JF >= 2) ){
JsonFeature.push({
"type":"Feature",
"properties": { "id": mid, "name": "linestring" , "LI": LI, "DE": DE, "PBT":PBT, "TMC":TMC, "CF":CF},
"geometry":{
"type":"MultiLineString",
"coordinates": locationshp
},
"vcsMeta": {
"style": {
"type": "vector",
"stroke": {
"color": [
255,
153,
51,
1
],
"width": 2,
"lineDash": null
}
}
}
})
} else if ((CF.JF <2 && CF.JF >= 1)){
JsonFeature.push({
"type":"Feature",
"properties": { "id": mid, "name": "linestring" , "LI": LI, "DE": DE, "PBT":PBT, "TMC":TMC, "CF":CF},
"geometry":{
"type":"MultiLineString",
"coordinates": locationshp
},
"vcsMeta": {
"style": {
"type": "vector",
"stroke": {
"color": [
230,
230,
0,
1
],
"width": 2,
"lineDash": null
}
}
}
})
} else if ((CF.JF < 1)){
JsonFeature.push({
"type":"Feature",
"properties": { "id": mid, "name": "linestring" , "LI": LI, "DE": DE, "PBT":PBT, "TMC":TMC, "CF":CF},
"geometry":{
"type":"MultiLineString",
"coordinates": locationshp
},
"vcsMeta": {
"style": {
"type": "vector",
"stroke": {
"color": [
0,
153,
0,
1
],
"width": 2,
"lineDash": null
}
}
}
})
}
// JsonFeature.push({
// "type":"Feature",
// "properties": { "id": mid, "name": "linestring" , "LI": LI, "DE": DE, "PBT":PBT, "TMC":TMC, "CF":CF},
// "geometry":{
// "type":"MultiLineString",
// "coordinates": locationshp
// },
// "vcsMeta": {
// "style": {
// "type": "vector",
// "stroke": {
// "color": [
// 51,
// 153,
// 204,
// 1
// ],
// "width": 39,
// "lineDash": null
// }
// }
// }
// })
// console.log(JsonFeature)
}
return JsonFeature
}
function buildJSON(type){
var JsonFeature = [];
var length = accident.body.TRAFFIC_ITEMS.TRAFFIC_ITEM.length;
console.log(length)
for (var i = 0; i <= length - 1; i++){
// console.log(accident.body.TRAFFIC_ITEMS.TRAFFIC_ITEM[i])
var lat = accident.body.TRAFFIC_ITEMS.TRAFFIC_ITEM[i].LOCATION.GEOLOC.ORIGIN.LATITUDE;
var lon = accident.body.TRAFFIC_ITEMS.TRAFFIC_ITEM[i].LOCATION.GEOLOC.ORIGIN.LONGITUDE;
// var type = accident.body.TRAFFIC_ITEMS.TRAFFIC_ITEM[i].TRAFFIC_ITEM_TYPE_DESC;
var id = accident.body.TRAFFIC_ITEMS.TRAFFIC_ITEM[i].TRAFFIC_ITEM_ID;
var origid = accident.body.TRAFFIC_ITEMS.TRAFFIC_ITEM[i].ORIGINAL_TRAFFIC_ITEM_ID;
var TRAFFIC_ITEM_DESCRIPTION = accident.body.TRAFFIC_ITEMS.TRAFFIC_ITEM[i].TRAFFIC_ITEM_DESCRIPTION;
var COMMENTS = accident.body.TRAFFIC_ITEMS.TRAFFIC_ITEM[i].COMMENTS;
var CRITICALITY = accident.body.TRAFFIC_ITEMS.TRAFFIC_ITEM[i].CRITICALITY;
var VERIFIED = accident.body.TRAFFIC_ITEMS.TRAFFIC_ITEM[i].VERIFIED;
var TRAFFIC_ITEM_TYPE_DESC = accident.body.TRAFFIC_ITEMS.TRAFFIC_ITEM[i].TRAFFIC_ITEM_TYPE_DESC;
var TRAFFIC_ITEM_STATUS_SHORT_DESC = accident.body.TRAFFIC_ITEMS.TRAFFIC_ITEM[i].TRAFFIC_ITEM_STATUS_SHORT_DESC;
var TRAFFIC_ITEM_DETAIL = accident.body.TRAFFIC_ITEMS.TRAFFIC_ITEM[i].TRAFFIC_ITEM_DETAIL;
var START_TIME = accident.body.TRAFFIC_ITEMS.TRAFFIC_ITEM[i].START_TIME;
var LOCATION = accident.body.TRAFFIC_ITEMS.TRAFFIC_ITEM[i].LOCATION;
var ENTRY_TIME = accident.body.TRAFFIC_ITEMS.TRAFFIC_ITEM[i].ENTRY_TIME;
var END_TIME = accident.body.TRAFFIC_ITEMS.TRAFFIC_ITEM[i].END_TIME;
var ABBREVIATION = accident.body.TRAFFIC_ITEMS.TRAFFIC_ITEM[i].ABBREVIATION;
if (type == 'CONSTRUCTION'){
console.log(i)
if (TRAFFIC_ITEM_TYPE_DESC == "CONSTRUCTION"){
JsonFeature.push({
"type":"Feature",
"properties": { "id": id, "name": "datapoint" , "original_traffic_id": origid, "TRAFFIC_ITEM_DESCRIPTION": TRAFFIC_ITEM_DESCRIPTION, "COMMENTS":COMMENTS, "CRITICALITY":CRITICALITY,
"VERIFIED":VERIFIED,"TRAFFIC_ITEM_TYPE_DESC":TRAFFIC_ITEM_TYPE_DESC, "TRAFFIC_ITEM_STATUS_SHORT_DESC":TRAFFIC_ITEM_STATUS_SHORT_DESC, "TRAFFIC_ITEM_DETAIL":TRAFFIC_ITEM_DETAIL,
"START_TIME":START_TIME, "LOCATION":LOCATION, "ENTRY_TIME":ENTRY_TIME, "END_TIME":END_TIME, "ABBREVIATION":ABBREVIATION},
"geometry":{
"type":"MultiPoint",
"coordinates": [ [lon, lat]]
}
})
}
} else if (type == "ROAD_CLOSURE"){
if (TRAFFIC_ITEM_TYPE_DESC == "ROAD_CLOSURE"){
JsonFeature.push({
"type":"Feature",
"properties": { "id": id, "name": "datapoint" , "original_traffic_id": origid, "TRAFFIC_ITEM_DESCRIPTION": TRAFFIC_ITEM_DESCRIPTION, "COMMENTS":COMMENTS, "CRITICALITY":CRITICALITY,
"VERIFIED":VERIFIED,"TRAFFIC_ITEM_TYPE_DESC":TRAFFIC_ITEM_TYPE_DESC, "TRAFFIC_ITEM_STATUS_SHORT_DESC":TRAFFIC_ITEM_STATUS_SHORT_DESC, "TRAFFIC_ITEM_DETAIL":TRAFFIC_ITEM_DETAIL,
"START_TIME":START_TIME, "LOCATION":LOCATION, "ENTRY_TIME":ENTRY_TIME, "END_TIME":END_TIME, "ABBREVIATION":ABBREVIATION},
"geometry":{
"type":"MultiPoint",
"coordinates": [ [lon, lat]]
}
})
}
}
}
return JsonFeature;
}
app.post('/getTrafficIncidents', function (req, res) {
console.log('command angekommen!')
try {
res.json(accident);
console.log('.../loadSetP successful!');
}
catch (err) {
console.log('.../loadSetP failed!\n' + err);
}
});
app.post('/FLOWdata', function (req, res) {
console.log('command angekommen!')
try {
flowjson = {
"name":"flow" + "01",
"type":"FeatureCollection",
"crs": { "type": "name", "properties": { "name": "urn:ogc:def:crs:OGC:1.3:CRS84" } },
"features": buildFLOW()
};
res.json(flowjson);
console.log('.../loadSetP successful!');
}
catch (err) {
console.log('.../loadSetP failed!\n' + err);
}
});
app.post('/FLOWtest', function (req, res) {
console.log('command angekommen!')
try {
res.json(testjsonsflow);
console.log('.../loadSetP successful!');
}
catch (err) {
console.log('.../loadSetP failed!\n' + err);
}
});
var IDGeojson = 100000
var ballonContent = {
......
......@@ -207,6 +207,111 @@
"allAvailable": false,
"properties": [],
"balloonHeader": "Balloon header"
},{
"template": [
"<div class='balloon' id='myBalloon'>",
"<div class='balloon-content'>",
"<h1 class='balloon-title'>Balloon header</h1>",
"<% for (var key in obj) { %>",
"<% if (obj[key] instanceof Object){%>",
"<% for (var key2 in obj[key]) { %>",
"<p class='balloon-text'><span class='balloon-street'> <strong> <%=key%>.<%=key2%> </strong> : <%=obj[key][key2]%></span><br></p>",
"<% } %>",
"<% } else{ %>",
"<p class='balloon-text'>",
"<span class='balloon-street'> <strong> <%=key%> </strong> : <%=obj[key]%></span><br>",
"</p>",
"<% } %>",
"<% } %>",
"</div>",
"<div class='balloon-close-col'>",
"<button class='close-balloon'><i class='fa fa-times fa-lg'></i></button>",
"</div>",
"<div class='dialog-image-balloon'></div>",
"<div class='balloon-left-edge'></div>",
"</div>"
],
"layerTypes": [
null
],
"layerNames": [
"FLOW"
],
"minTop": "balloonHeight + 30",
"minLeft": "70",
"allAvailable": true,
"properties": [],
"balloonHeader": "Balloon header"
},{
"template": [
"<div class='balloon' id='myBalloon'>",
"<div class='balloon-content'>",
"<h1 class='balloon-title'>Balloon header</h1>",
"<% for (var key in obj) { %>",
"<% if (obj[key] instanceof Object){%>",
"<% for (var key2 in obj[key]) { %>",
"<p class='balloon-text'><span class='balloon-street'> <strong> <%=key%>.<%=key2%> </strong> : <%=obj[key][key2]%></span><br></p>",
"<% } %>",
"<% } else{ %>",
"<p class='balloon-text'>",
"<span class='balloon-street'> <strong> <%=key%> </strong> : <%=obj[key]%></span><br>",
"</p>",
"<% } %>",
"<% } %>",
"</div>",
"<div class='balloon-close-col'>",
"<button class='close-balloon'><i class='fa fa-times fa-lg'></i></button>",
"</div>",
"<div class='dialog-image-balloon'></div>",
"<div class='balloon-left-edge'></div>",
"</div>"
],
"layerTypes": [
null
],
"layerNames": [
"CONSTRUCTION"
],
"minTop": "balloonHeight + 30",
"minLeft": "70",
"allAvailable": true,
"properties": [],
"balloonHeader": "Balloon header"
},{
"template": [
"<div class='balloon' id='myBalloon'>",
"<div class='balloon-content'>",
"<h1 class='balloon-title'>Balloon header</h1>",
"<% for (var key in obj) { %>",
"<% if (obj[key] instanceof Object){%>",
"<% for (var key2 in obj[key]) { %>",
"<p class='balloon-text'><span class='balloon-street'> <strong> <%=key%>.<%=key2%> </strong> : <%=obj[key][key2]%></span><br></p>",
"<% } %>",
"<% } else{ %>",
"<p class='balloon-text'>",
"<span class='balloon-street'> <strong> <%=key%> </strong> : <%=obj[key]%></span><br>",
"</p>",
"<% } %>",
"<% } %>",
"</div>",
"<div class='balloon-close-col'>",
"<button class='close-balloon'><i class='fa fa-times fa-lg'></i></button>",
"</div>",
"<div class='dialog-image-balloon'></div>",
"<div class='balloon-left-edge'></div>",
"</div>"
],
"layerTypes": [
null
],
"layerNames": [
"ROAD_CLOSURE"
],
"minTop": "balloonHeight + 30",
"minLeft": "70",
"allAvailable": true,
"properties": [],
"balloonHeader": "Balloon header"
},
{
"template": [
......@@ -834,6 +939,71 @@
}
],
"layers": [
{ "name": "Test",
"url": "./datasource-data/TestHere/test.json",
"type": "vcs.vcm.layer.GeoJSON",
"datasourceId": "...",
"activeOnStartup": true,
"exclusive": false,
"projection": {
"epsg": "4326",
"proj4": ""
},
"altitudeMode": "relativeToGround",
"heightAboveGround": 0
},
{ "name": "Railday",
"url": "./datasource-data/accoustic/DE_a_ag1_Aggrail_Lden.json",
"type": "vcs.vcm.layer.GeoJSON",
"datasourceId": "...",
"activeOnStartup": false,
"exclusive": false,
"projection": {
"epsg": "4326",
"proj4": ""
},
"altitudeMode": "relativeToGround",
"heightAboveGround": 0
},
{ "name": "Railnight",
"url": "./datasource-data/accoustic/DE_a_ag1_Aggrail_Lnight.json",
"type": "vcs.vcm.layer.GeoJSON",
"datasourceId": "...",
"activeOnStartup": false,
"exclusive": false,
"projection": {
"epsg": "4326",
"proj4": ""
},
"altitudeMode": "relativeToGround",
"heightAboveGround": 0
},
{ "name": "Streetday",
"url": "./datasource-data/accoustic/DE_a_ag1_Aggroad_Lden.json",
"type": "vcs.vcm.layer.GeoJSON",
"datasourceId": "...",
"activeOnStartup": false,
"exclusive": false,
"projection": {
"epsg": "4326",
"proj4": ""
},
"altitudeMode": "relativeToGround",
"heightAboveGround": 0
},
{ "name": "Streetnight",
"url": "./datasource-data/accoustic/DE_a_ag1_Aggroad_Lnight.json",
"type": "vcs.vcm.layer.GeoJSON",
"datasourceId": "...",
"activeOnStartup": false,
"exclusive": false,
"projection": {
"epsg": "4326",
"proj4": ""
},
"altitudeMode": "relativeToGround",
"heightAboveGround": 0
},
{
"name": "Böckingerstrasse",
"url": "./datasource-data/f02945f6-7978-4abc-940b-4c47af169b12/tileset.json",
......
......@@ -20,4 +20,24 @@
display: none;
overflow: hidden;
background-color: #f1f1f1;
}
\ No newline at end of file
}
.switch-toggle {
float: left;
background: #242729;
}
.switch-toggle input {
position: absolute;
opacity: 0;
}
.switch-toggle input + label {
width: 3rem;
float:left;
text-align:center;
color: #fff;
cursor: pointer;
}
.switch-toggle input:checked + label {
background: green;
}
\ No newline at end of file
{"TIMESTAMP":"12/17/2020 14:41:26 GMT","VERSION":2.4,"TRAFFIC_ITEMS":{"TRAFFIC_ITEM":[{"TRAFFIC_ITEM_ID":711716174877874647,"ORIGINAL_TRAFFIC_ITEM_ID":3260759043408795416,"TRAFFIC_ITEM_STATUS_SHORT_DESC":"ACTIVE","TRAFFIC_ITEM_TYPE_DESC":"CONSTRUCTION","START_TIME":"12/17/2020 12:22:25","END_TIME":"12/18/2020 11:00:22","ENTRY_TIME":"12/17/2020 12:24:31","CRITICALITY":{"ID":"0","DESCRIPTION":"critical"},"VERIFIED":true,"ABBREVIATION":{"SHORT_DESC":"CONST","DESCRIPTION":"construction"},"LOCATION":{"INTERSECTION":{"ORIGIN":{"ID":"","STREET1":{"ADDRESS1":"Augustenstraße"},"STREET2":{"ADDRESS1":"Senefelderstraße"},"COUNTY":"Stuttgart","STATE":"","PROXIMITY":{"ID":"MID","DESCRIPTION":"midway between"}},"TO":{"ID":"","STREET1":{"ADDRESS1":"Augustenstraße"},"STREET2":{"ADDRESS1":"Silberburgstraße"},"COUNTY":"Stuttgart","STATE":"","PROXIMITY":{"ID":"MID","DESCRIPTION":"midway between"}}},"GEOLOC":{"ORIGIN":{"LATITUDE":48.77161,"LONGITUDE":9.16662},"TO":[{"LATITUDE":48.77205,"LONGITUDE":9.16806}],"GEOMETRY":{"SHAPES":{"SHP":[{"value":"48.77161,9.16662 48.77205,9.16806","FC":5,"LID":"52852348F","LE":0.11661033764852913,"FW":"SD"}]}}},"TPEGOpenLRBase64":"CCgBEAAkIwaEuyKumgAJBQQEAy4ACgQDBHUAAJAALAAJBQQEA64AMAAA","POLITICAL_BOUNDARY":{"METRO_AREA":{"value":"","ID":218},"COUNTY":"Stuttgart","MUNICIPALITY":{"NAME":"Stuttgart"}},"NAVTECH":{"EDGE":{"EDGE_ID":["52852348"]},"VERSION_ID":"202004"},"LENGTH":0.07245},"TRAFFIC_ITEM_DETAIL":{"ROAD_CLOSED":false,"EVENT":{"EVENT_ITEM_CANCELLED":false,"SCHEDULED_CONSTRUCTION_EVENT":{"SCHEDULED_CONSTRUCTION_TYPE_DESC":"CONSTRUCTION","SCHEDULED_CONSTRUCTION_DETAIL":"construction"}},"ALERTC":[{"EVENT_CODE":701,"SUPP_TRAFFIC_CODE":[4]}]},"TRAFFIC_ITEM_DESCRIPTION":[{"value":"Zwischen Senefelderstraße und Silberburgstraße - Baustelle. eine Umleitung ist eingerichtet.","TYPE":"short_desc"},{"value":"Zwischen Senefelderstraße und Silberburgstraße - Baustelle. eine Umleitung ist eingerichtet.","TYPE":"desc"},{"value":"Baustelle. eine Umleitung ist eingerichtet.","TYPE":"no_exit_description"}],"mid":"e6db969c-8233-47b6-8f86-b446ec259333|1608207871215","PRODUCT":"basic"},{"TRAFFIC_ITEM_ID":3398694447995353468,"ORIGINAL_TRAFFIC_ITEM_ID":3398694447995353468,"TRAFFIC_ITEM_STATUS_SHORT_DESC":"ACTIVE","TRAFFIC_ITEM_TYPE_DESC":"CONSTRUCTION","START_TIME":"12/15/2020 15:44:43","END_TIME":"12/31/2020 22:59:00","ENTRY_TIME":"12/15/2020 15:44:43","CRITICALITY":{"ID":"2","DESCRIPTION":"minor"},"VERIFIED":true,"ABBREVIATION":{"SHORT_DESC":"CONST","DESCRIPTION":"construction"},"COMMENTS":"Stadtgebiet Stuttgart, Jägerstraße, in beiden Richtungen, in Höhe Heilbronner Straße, Baustelle, Fahrbahnverengung, bis 31.12.2020","LOCATION":{"INTERSECTION":{"ORIGIN":{"ID":"","STREET1":{"ADDRESS1":""},"STREET2":{"ADDRESS1":""},"COUNTY":"","STATE":"","PROXIMITY":{"ID":"AFT","DESCRIPTION":"past"}}},"GEOLOC":{"ORIGIN":{"LATITUDE":48.786325,"LONGITUDE":9.180011},"TO":[{"LATITUDE":48.78623,"LONGITUDE":9.17979}],"GEOMETRY":{"SHAPES":{"SHP":[{"value":"48.78631,9.17999 48.78635,9.18006 48.78642,9.18018","FC":5,"LID":"1236608390F","LE":0.018562659673404557,"FW":"SD"},{"value":"48.78642,9.18018 48.78657,9.18022","FC":2,"LID":"1226470429F","LE":0.016937670537516984,"FW":"MD"},{"value":"48.78657,9.18022 48.78675,9.18027","FC":2,"LID":"1232479160F","LE":0.020351408193896216,"FW":"MD"},{"value":"48.78675,9.18027 48.78703,9.18035","FC":2,"LID":"1232479161F","LE":0.03168753746269842,"FW":"MD"},{"value":"48.78703,9.18035 48.78733,9.18042","FC":2,"LID":"589239502F","LE":0.0337559374545165,"FW":"MD"},{"value":"48.78733,9.18042 48.78728,9.1802 48.78726,9.18012 48.78696,9.17952 48.78688,9.17932","FC":5,"LID":"52853185T","LE":0.09585107011624797,"FW":"SD"},{"value":"48.78688,9.17932 48.7868,9.17936","FC":5,"LID":"574413649T","LE":0.009369380615031647,"FW":"SD"},{"value":"48.7868,9.17936 48.78638,9.17968","FC":5,"LID":"574413648T","LE":0.0522918990633943,"FW":"SD"},{"value":"48.78638,9.17968 48.78623,9.17979","FC":5,"LID":"52853183T","LE":0.018536271737541223,"FW":"SD"}]}}},"POLITICAL_BOUNDARY":{"METRO_AREA":{"value":"","ID":218}},"NAVTECH":{"EDGE":{"EDGE_ID":["1236608390","1226470429","1232479160","1232479161","589239502","52853185","574413649","574413648","52853183"]},"VERSION_ID":"202004"},"LENGTH":0.18475},"TRAFFIC_ITEM_DETAIL":{"ROAD_CLOSED":false,"EVENT":{"EVENT_ITEM_CANCELLED":false,"SCHEDULED_CONSTRUCTION_EVENT":{"SCHEDULED_CONSTRUCTION_TYPE_DESC":"CONSTRUCTION","SCHEDULED_CONSTRUCTION_DETAIL":"construction"}},"ALERTC":[{"EVENT_CODE":701},{"EVENT_CODE":518}]},"TRAFFIC_ITEM_DESCRIPTION":[{"value":"Baustelle. Fahrbahnverengung.","TYPE":"short_desc"},{"value":"Baustelle. Fahrbahnverengung. Stadtgebiet Stuttgart, Jägerstraße, in beiden Richtungen, in Höhe Heilbronner Straße, Baustelle, Fahrbahnverengung, bis 31.12.2020","TYPE":"desc"},{"value":"Baustelle. Fahrbahnverengung. Stadtgebiet Stuttgart, Jägerstraße, in beiden Richtungen, in Höhe Heilbronner Straße, Baustelle, Fahrbahnverengung, bis 31.12.2020","TYPE":"no_exit_description"}],"mid":"ADAC/1586686081_reverse|1608047072670","PRODUCT":"basic"},{"TRAFFIC_ITEM_ID":2633367068012695584,"ORIGINAL_TRAFFIC_ITEM_ID":2633367068012695584,"TRAFFIC_ITEM_STATUS_SHORT_DESC":"ACTIVE","TRAFFIC_ITEM_TYPE_DESC":"CONSTRUCTION","START_TIME":"12/09/2020 23:00:00","END_TIME":"09/30/2021 21:59:00","ENTRY_TIME":"12/15/2020 15:44:43","CRITICALITY":{"ID":"2","DESCRIPTION":"minor"},"VERIFIED":true,"ABBREVIATION":{"SHORT_DESC":"CONST","DESCRIPTION":"construction"},"COMMENTS":"Stadtgebiet Stuttgart, Heilbronner Straße, in beiden Richtungen, zwischen Arnulf-Klett Platz und Am Hauptbahnhof, Fahrbahnverengung, Baustelle, von 10.12.2020 bis 30.09.2021","LOCATION":{"INTERSECTION":{"ORIGIN":{"ID":"","STREET1":{"ADDRESS1":""},"STREET2":{"ADDRESS1":""},"COUNTY":"","STATE":"","PROXIMITY":{"ID":"AFT","DESCRIPTION":"past"}}},"GEOLOC":{"ORIGIN":{"LATITUDE":48.78417,"LONGITUDE":9.17908},"TO":[{"LATITUDE":48.7906,"LONGITUDE":9.18112}],"GEOMETRY":{"SHAPES":{"SHP":[{"value":"48.78417,9.17908 48.78428,9.17923 48.78436,9.17934","FC":2,"LID":"52852913F","LE":0.028487081317034497,"FW":"MD"},{"value":"48.78436,9.17934 48.78444,9.17944 48.78472,9.17977","FC":2,"LID":"53123545F","LE":0.051005921813103185,"FW":"MD"},{"value":"48.78472,9.17977 48.78483,9.17989 48.78492,9.17999 48.78498,9.18005","FC":2,"LID":"1251777598F","LE":0.03549455849256219,"FW":"MD"},{"value":"48.78498,9.18005 48.78506,9.18011 48.78514,9.18016 48.7852,9.18019","FC":2,"LID":"1251777599F","LE":0.026582084714544943,"FW":"MD"},{"value":"48.7852,9.18019 48.78528,9.18021 48.78536,9.18022 48.78556,9.18022 48.7857,9.18023 48.78584,9.18026 48.78598,9.1803","FC":2,"LID":"1190912643F","LE":0.08733834693549355,"FW":"MD"},{"value":"48.78598,9.1803 48.78608,9.18032 48.78618,9.18034","FC":2,"LID":"1190912644F","LE":0.022434631888156958,"FW":"MD"},{"value":"48.78618,9.18034 48.78698,9.18053","FC":2,"LID":"589242751F","LE":0.09005344190143923,"FW":"MD"},{"value":"48.78698,9.18053 48.78724,9.18058","FC":2,"LID":"589242752F","LE":0.02914593883565874,"FW":"MD"},{"value":"48.78724,9.18058 48.78739,9.18061 48.78752,9.18064 48.78764,9.18067","FC":2,"LID":"76871483F","LE":0.0449748452868604,"FW":"MD"},{"value":"48.78764,9.18067 48.78822,9.18083","FC":2,"LID":"76871478F","LE":0.06556215793950082,"FW":"MD"},{"value":"48.78822,9.18083 48.78858,9.18093 48.78868,9.18096","FC":2,"LID":"589234918F","LE":0.05203948851790515,"FW":"MD"},{"value":"48.78868,9.18096 48.78953,9.18103","FC":3,"LID":"1188705775F","LE":0.09466471324277316,"FW":"SD"},{"value":"48.78953,9.18103 48.78986,9.18106","FC":3,"LID":"1196572259F","LE":0.03676405409402691,"FW":"SD"},{"value":"48.78986,9.18106 48.79024,9.18109","FC":3,"LID":"1196572260F","LE":0.04231562954506399,"FW":"SD"},{"value":"48.79024,9.18109 48.7906,9.18112","FC":3,"LID":"1196572261F","LE":0.04009464848666778,"FW":"SD"}]}}},"TPEGOpenLRBase64":"CCkBEAAlJAaHACKw4wAJBQQBAh4ACgUEAoVqAADMAoMACQUEAgOCADAAAA==","POLITICAL_BOUNDARY":{"METRO_AREA":{"value":"","ID":218}},"NAVTECH":{"EDGE":{"EDGE_ID":["52852913","53123545","1251777598","1251777599","1190912643","1190912644","589242751","589242752","76871483","76871478","589234918","1188705775","1196572259","1196572260","1196572261"]},"VERSION_ID":"202004"},"LENGTH":0.46413},"TRAFFIC_ITEM_DETAIL":{"ROAD_CLOSED":false,"EVENT":{"EVENT_ITEM_CANCELLED":false,"SCHEDULED_CONSTRUCTION_EVENT":{"SCHEDULED_CONSTRUCTION_TYPE_DESC":"CONSTRUCTION","SCHEDULED_CONSTRUCTION_DETAIL":"construction"}},"ALERTC":[{"EVENT_CODE":701},{"EVENT_CODE":518}]},"TRAFFIC_ITEM_DESCRIPTION":[{"value":"Baustelle. Fahrbahnverengung.","TYPE":"short_desc"},{"value":"Baustelle. Fahrbahnverengung. Stadtgebiet Stuttgart, Heilbronner Straße, in beiden Richtungen, zwischen Arnulf-Klett Platz und Am Hauptbahnhof, Fahrbahnverengung, Baustelle, von 10.12.2020 bis 30.09.2021","TYPE":"desc"},{"value":"Baustelle. Fahrbahnverengung. Stadtgebiet Stuttgart, Heilbronner Straße, in beiden Richtungen, zwischen Arnulf-Klett Platz und Am Hauptbahnhof, Fahrbahnverengung, Baustelle, von 10.12.2020 bis 30.09.2021","TYPE":"no_exit_description"}],"mid":"ADAC/203267770_original|1608047072670","PRODUCT":"basic"},{"TRAFFIC_ITEM_ID":3294712490363049918,"ORIGINAL_TRAFFIC_ITEM_ID":3294712490363049918,"TRAFFIC_ITEM_STATUS_SHORT_DESC":"ACTIVE","TRAFFIC_ITEM_TYPE_DESC":"CONSTRUCTION","START_TIME":"12/15/2020 15:44:42","END_TIME":"12/18/2020 22:59:00","ENTRY_TIME":"12/15/2020 15:44:42","CRITICALITY":{"ID":"0","DESCRIPTION":"critical"},"VERIFIED":true,"ABBREVIATION":{"SHORT_DESC":"CONST","DESCRIPTION":"construction"},"COMMENTS":"Stuttgart-Nord, Feuerbacher Heide zwischen Am Bismarckturm und Lenzhalde gesperrt, Baustelle, bis voraussichtlich 18.12.2020","LOCATION":{"INTERSECTION":{"ORIGIN":{"ID":"","STREET1":{"ADDRESS1":""},"STREET2":{"ADDRESS1":""},"COUNTY":"","STATE":"","PROXIMITY":{"ID":"AFT","DESCRIPTION":"past"}}},"GEOLOC":{"ORIGIN":{"LATITUDE":48.79145,"LONGITUDE":9.15668},"TO":[{"LATITUDE":48.78729,"LONGITUDE":9.15157}],"GEOMETRY":{"SHAPES":{"SHP":[{"value":"48.79145,9.15668 48.79115,9.15637 48.79076,9.15586 48.79041,9.15534","FC":5,"LID":"52881421T","LE":0.15225497405140115,"FW":"SD"},{"value":"48.79041,9.15534 48.79035,9.15525","FC":5,"LID":"52881419T","LE":0.009394037289061852,"FW":"SD"},{"value":"48.79035,9.15525 48.78965,9.15412","FC":5,"LID":"1233996613T","LE":0.11381512465839826,"FW":"SD"},{"value":"48.78965,9.15412 48.78944,9.15378","FC":5,"LID":"1233996612T","LE":0.03419829883181487,"FW":"SD"},{"value":"48.78944,9.15378 48.78925,9.15349 48.78888,9.15311 48.78884,9.15308","FC":5,"LID":"1233996627T","LE":0.0846983642207865,"FW":"SD"},{"value":"48.78884,9.15308 48.78849,9.15279","FC":5,"LID":"1233996626T","LE":0.04437352740246703,"FW":"SD"},{"value":"48.78849,9.15279 48.78829,9.15258 48.78785,9.152 48.78777,9.1519","FC":5,"LID":"1280401354T","LE":0.10349825856539882,"FW":"SD"},{"value":"48.78777,9.1519 48.78765,9.15176","FC":5,"LID":"1280401356T","LE":0.016849565169700067,"FW":"SD"},{"value":"48.78765,9.15176 48.78756,9.15168","FC":5,"LID":"1280401355T","LE":0.011607374340227615,"FW":"SD"},{"value":"48.78756,9.15168 48.78746,9.15163 48.78729,9.15157","FC":5,"LID":"52852637T","LE":0.031124423562728213,"FW":"SD"}]}}},"TPEGOpenLRBase64":"CCkBEAAlJAaC7CKyNgAJBQQEA5gACgUEBIRZAP4B/mAACQUEBAMJADAAAA==","POLITICAL_BOUNDARY":{"METRO_AREA":{"value":"","ID":218}},"NAVTECH":{"EDGE":{"EDGE_ID":["52881421","52881419","1233996613","1233996612","1233996627","1233996626","1280401354","1280401356","1280401355","52852637"]},"VERSION_ID":"202004"},"LENGTH":0.37394},"TRAFFIC_ITEM_DETAIL":{"ROAD_CLOSED":true,"EVENT":{"EVENT_ITEM_CANCELLED":false,"SCHEDULED_CONSTRUCTION_EVENT":{"SCHEDULED_CONSTRUCTION_TYPE_DESC":"CONSTRUCTION","SCHEDULED_CONSTRUCTION_DETAIL":"construction"}},"ALERTC":[{"EVENT_CODE":735}]},"TRAFFIC_ITEM_DESCRIPTION":[{"value":"Wegen Baustelle gesperrt.","TYPE":"short_desc"},{"value":"Wegen Baustelle gesperrt. Stuttgart-Nord, Feuerbacher Heide zwischen Am Bismarckturm und Lenzhalde gesperrt, Baustelle, bis voraussichtlich 18.12.2020","TYPE":"desc"},{"value":"Wegen Baustelle gesperrt. Stuttgart-Nord, Feuerbacher Heide zwischen Am Bismarckturm und Lenzhalde gesperrt, Baustelle, bis voraussichtlich 18.12.2020","TYPE":"no_exit_description"}],"mid":"LMS-BW/r_IVLZStuttgart/r_IVLZStuttgart/8118_TIC-IVLZStuttgart/1_DBWLMS-BW/244083|1608047072670","PRODUCT":"basic"},{"TRAFFIC_ITEM_ID":827604263824456220,"ORIGINAL_TRAFFIC_ITEM_ID":827604263824456220,"TRAFFIC_ITEM_STATUS_SHORT_DESC":"ACTIVE","TRAFFIC_ITEM_TYPE_DESC":"CONSTRUCTION","START_TIME":"12/15/2020 15:46:12","END_TIME":"12/21/2020 22:59:00","ENTRY_TIME":"12/15/2020 15:46:23","CRITICALITY":{"ID":"2","DESCRIPTION":"minor"},"VERIFIED":true,"ABBREVIATION":{"SHORT_DESC":"CONST","DESCRIPTION":"construction"},"RDS-TMC_LOCATIONS":{"RDS-TMC":[{"ORIGIN":{"EBU_COUNTRY_CODE":"D","TABLE_ID":1,"LOCATION_ID":"14310","LOCATION_DESC":"Heilmannstraße","RDS_DIRECTION":"+"},"TO":{"EBU_COUNTRY_CODE":"D","TABLE_ID":1,"LOCATION_ID":"14309","LOCATION_DESC":"Nordbahnhofstraße","RDS_DIRECTION":"+"},"DIRECTION":"-","ALERTC":{"TRAFFIC_CODE":514,"QUANTIFIERS":0,"DESCRIPTION":"Fahrbahn von auf einen Fahrstreifen verengt.","ALERTC_DURATION":"L","ALERTC_DIRECTION":1,"UPDATE_CLASS":5,"PHRASE_CODE":"D15","EXTENT":"2","DURATION":0},"LENGTH":0.27902,"PRIMARY_OFFSET":0.26784},{"ORIGIN":{"EBU_COUNTRY_CODE":"D","TABLE_ID":1,"LOCATION_ID":"14310","LOCATION_DESC":"Heilmannstraße","RDS_DIRECTION":"+"},"TO":{"EBU_COUNTRY_CODE":"D","TABLE_ID":1,"LOCATION_ID":"14309","LOCATION_DESC":"Nordbahnhofstraße","RDS_DIRECTION":"+"},"DIRECTION":"-","ALERTC":{"TRAFFIC_CODE":803,"QUANTIFIERS":0,"DESCRIPTION":"Bauarbeiten auf Abschnitt.","ALERTC_DURATION":"L","ALERTC_DIRECTION":1,"UPDATE_CLASS":11,"PHRASE_CODE":"E11","EXTENT":"2","DURATION":0},"LENGTH":0.27902,"PRIMARY_OFFSET":0.26784}]},"LOCATION":{"DEFINED":{"ORIGIN":{"ROADWAY":{"DESCRIPTION":[{"value":"Cannstatter Straße","TYPE":"NTCSA"},{"value":"Cannstatter Straße","TYPE":"RDSGN"},{"value":"Cannstatter Straße","TYPE":"LOCAL"}],"ID":14308},"POINT":{"DESCRIPTION":[{"value":"Heilmannstraße","TYPE":"NTCSA"},{"value":"Heilmannstraße","TYPE":"RDSGN"},{"value":"Heilmannstraße","TYPE":"LOCAL"},{"value":"Cannstatter Straße","TYPE":"BNAME"}],"ID":14310},"DIRECTION":{"DESCRIPTION":[{"value":"HEILBRONNER STRAßE","TYPE":"LOCAL"},{"value":"HEILBRONNER STRAßE","TYPE":"NTCSA"},{"value":"HEILBRONNER STRAßE","TYPE":"RDSGN"}],"ID":0},"PROXIMITY":{"ID":"AT","DESCRIPTION":"at"}},"TO":{"ROADWAY":{"DESCRIPTION":[{"value":"Budapester Platz","TYPE":"NTCSA"},{"value":"Budapester Platz","TYPE":"RDSGN"},{"value":"Budapester Platz","TYPE":"LOCAL"}],"ID":14308},"POINT":{"DESCRIPTION":[{"value":"Nordbahnhofstraße","TYPE":"NTCSA"},{"value":"Nordbahnhofstraße","TYPE":"RDSGN"},{"value":"Nordbahnhofstraße","TYPE":"LOCAL"},{"value":"Budapester Platz","TYPE":"BNAME"}],"ID":14309},"DIRECTION":{"DESCRIPTION":[{"value":"HEILBRONNER STRAßE","TYPE":"LOCAL"},{"value":"HEILBRONNER STRAßE","TYPE":"NTCSA"},{"value":"HEILBRONNER STRAßE","TYPE":"RDSGN"}],"ID":0},"PROXIMITY":{"ID":"AT","DESCRIPTION":"at"}}},"GEOLOC":{"ORIGIN":{"LATITUDE":48.78872,"LONGITUDE":9.1909},"TO":[{"LATITUDE":48.79077,"LONGITUDE":9.18628}]},"TPEGOpenLRBase64":"CCkBEAAlJAaJJyKxtwAJBQQCA9AACgUEAoNZAP4WANgACQUEAgNWADAAFw==","NAVTECH":{"EDGE":{"EDGE_ID":["1265466132","1265466133","589239598","1188587922","1265465812","1265465811","540887036","1115246844","1115246845","1115246843","1115246842","1115246841","1115246840","1115246839","1115246838","574413617","574413618","52888414","1189088334"]},"VERSION_ID":"202004"},"LENGTH":0.27902},"TRAFFIC_ITEM_DETAIL":{"ROAD_CLOSED":false,"EVENT":{"EVENT_ITEM_CANCELLED":false,"SCHEDULED_CONSTRUCTION_EVENT":{"SCHEDULED_CONSTRUCTION_TYPE_DESC":"CONSTRUCTION","SCHEDULED_CONSTRUCTION_DETAIL":"construction"}},"ALERTC":[{"EVENT_CODE":514},{"EVENT_CODE":803}]},"TRAFFIC_ITEM_DESCRIPTION":[{"value":"Zwischen Heilmannstraße und Nordbahnhofstraße - Bauarbeiten auf Abschnitt. Fahrbahn von auf einen Fahrstreifen verengt.","TYPE":"short_desc"},{"value":"Zwischen Heilmannstraße und Nordbahnhofstraße - Bauarbeiten auf Abschnitt. Fahrbahn von auf einen Fahrstreifen verengt.","TYPE":"desc"},{"value":"Bauarbeiten auf Abschnitt. Fahrbahn von auf einen Fahrstreifen verengt.","TYPE":"no_exit_description"}],"mid":"9abe56fc-a5c5-4995-8743-b87afec2fe03|1608047183368","PRODUCT":"basic"},{"TRAFFIC_ITEM_ID":4432406554275314397,"ORIGINAL_TRAFFIC_ITEM_ID":4432406554275314397,"TRAFFIC_ITEM_STATUS_SHORT_DESC":"ACTIVE","TRAFFIC_ITEM_TYPE_DESC":"CONSTRUCTION","START_TIME":"12/15/2020 15:46:11","END_TIME":"12/31/2021 22:59:00","ENTRY_TIME":"12/15/2020 15:46:11","CRITICALITY":{"ID":"2","DESCRIPTION":"minor"},"VERIFIED":true,"ABBREVIATION":{"SHORT_DESC":"CONST","DESCRIPTION":"construction"},"LOCATION":{"INTERSECTION":{"ORIGIN":{"ID":"","STREET1":{"ADDRESS1":""},"STREET2":{"ADDRESS1":"Arnulf-Klett-Platz"},"COUNTY":"Stuttgart","STATE":"","PROXIMITY":{"ID":"MID","DESCRIPTION":"midway between"}},"TO":{"ID":"","STREET1":{"ADDRESS1":""},"STREET2":{"ADDRESS1":"Heilbronner Straße"},"COUNTY":"Stuttgart","STATE":"","PROXIMITY":{"ID":"MID","DESCRIPTION":"midway between"}}},"GEOLOC":{"ORIGIN":{"LATITUDE":48.78386,"LONGITUDE":9.17983},"TO":[{"LATITUDE":48.784295,"LONGITUDE":9.179332}],"GEOMETRY":{"SHAPES":{"SHP":[{"value":"48.78386,9.17983 48.784,9.17955 48.78404,9.17948 48.78408,9.17943 48.78412,9.17939 48.78417,9.17936 48.78422,9.17934 48.78428,9.17933 48.78436,9.17934","FC":3,"LID":"851356186F","LE":0.07107640482616133,"FW":"SD"}]}}},"TPEGOpenLRBase64":"CCgBEAAkIwaHIyKw1QAJBQQCA9oACgQDAkcA/88AMgAJBQQCA34AMAAA","POLITICAL_BOUNDARY":{"METRO_AREA":{"value":"","ID":218},"COUNTY":"Stuttgart","MUNICIPALITY":{"NAME":"Stuttgart"}},"NAVTECH":{"EDGE":{"EDGE_ID":["851356186"]},"VERSION_ID":"202004"},"LENGTH":0.04416},"TRAFFIC_ITEM_DETAIL":{"ROAD_CLOSED":false,"EVENT":{"EVENT_ITEM_CANCELLED":false,"SCHEDULED_CONSTRUCTION_EVENT":{"SCHEDULED_CONSTRUCTION_TYPE_DESC":"CONSTRUCTION","SCHEDULED_CONSTRUCTION_DETAIL":"construction"}},"ALERTC":[{"EVENT_CODE":803},{"EVENT_CODE":514}]},"TRAFFIC_ITEM_DESCRIPTION":[{"value":"Zwischen Arnulf-Klett-Platz und Heilbronner Straße - Bauarbeiten auf Abschnitt. Fahrbahn von auf einen Fahrstreifen verengt.","TYPE":"short_desc"},{"value":"Zwischen Arnulf-Klett-Platz und Heilbronner Straße - Bauarbeiten auf Abschnitt. Fahrbahn von auf einen Fahrstreifen verengt.","TYPE":"desc"},{"value":"Bauarbeiten auf Abschnitt. Fahrbahn von auf einen Fahrstreifen verengt.","TYPE":"no_exit_description"}],"mid":"HERE-Europe-PR/r_HERE-Europe-PR/99047_TIC/NAVTEQ-ORIGINAL-1|1608047129931","PRODUCT":"basic"},{"TRAFFIC_ITEM_ID":3948327483708000332,"ORIGINAL_TRAFFIC_ITEM_ID":3948327483708000332,"TRAFFIC_ITEM_STATUS_SHORT_DESC":"ACTIVE","TRAFFIC_ITEM_TYPE_DESC":"CONSTRUCTION","START_TIME":"12/15/2020 15:46:12","END_TIME":"12/18/2020 22:59:00","ENTRY_TIME":"12/15/2020 15:46:12","CRITICALITY":{"ID":"2","DESCRIPTION":"minor"},"VERIFIED":true,"ABBREVIATION":{"SHORT_DESC":"CONST","DESCRIPTION":"construction"},"RDS-TMC_LOCATIONS":{"RDS-TMC":[{"ORIGIN":{"EBU_COUNTRY_CODE":"D","TABLE_ID":1,"LOCATION_ID":"14327","LOCATION_DESC":"Heilbronner Straße","RDS_DIRECTION":"+"},"TO":{"EBU_COUNTRY_CODE":"D","TABLE_ID":1,"LOCATION_ID":"14326","LOCATION_DESC":"Ossietzkystraße","RDS_DIRECTION":"+"},"DIRECTION":"-","ALERTC":{"TRAFFIC_CODE":803,"QUANTIFIERS":0,"DESCRIPTION":"Bauarbeiten auf Abschnitt.","ALERTC_DURATION":"L","ALERTC_DIRECTION":1,"UPDATE_CLASS":11,"PHRASE_CODE":"E11","EXTENT":"1","DURATION":0},"LENGTH":0.07599,"PRIMARY_OFFSET":0.34633}]},"LOCATION":{"DEFINED":{"ORIGIN":{"ROADWAY":{"DESCRIPTION":[{"value":"Kriegsbergstraße","TYPE":"NTCSA"},{"value":"Kriegsbergstraße","TYPE":"RDSGN"},{"value":"Kriegsbergstraße","TYPE":"LOCAL"}],"ID":14322},"POINT":{"DESCRIPTION":[{"value":"Heilbronner Straße","TYPE":"NTCSA"},{"value":"Heilbronner Straße","TYPE":"RDSGN"},{"value":"Heilbronner Straße","TYPE":"LOCAL"},{"value":"Kriegsbergstraße","TYPE":"BNAME"}],"ID":14327},"DIRECTION":{"DESCRIPTION":[{"value":"ROTEBÜHLSTRAßE","TYPE":"LOCAL"},{"value":"ROTEBÜHLSTRAßE","TYPE":"NTCSA"},{"value":"ROTEBÜHLSTRAßE","TYPE":"RDSGN"}],"ID":0},"PROXIMITY":{"ID":"AT","DESCRIPTION":"at"}},"TO":{"ROADWAY":{"DESCRIPTION":[{"value":"Kriegsbergstraße","TYPE":"NTCSA"},{"value":"Kriegsbergstraße","TYPE":"RDSGN"},{"value":"Kriegsbergstraße","TYPE":"LOCAL"}],"ID":14322},"POINT":{"DESCRIPTION":[{"value":"Ossietzkystraße","TYPE":"NTCSA"},{"value":"Ossietzkystraße","TYPE":"RDSGN"},{"value":"Ossietzkystraße","TYPE":"LOCAL"},{"value":"Kriegsbergstraße","TYPE":"BNAME"}],"ID":14326},"DIRECTION":{"DESCRIPTION":[{"value":"ROTEBÜHLSTRAßE","TYPE":"LOCAL"},{"value":"ROTEBÜHLSTRAßE","TYPE":"NTCSA"},{"value":"ROTEBÜHLSTRAßE","TYPE":"RDSGN"}],"ID":0},"PROXIMITY":{"ID":"AT","DESCRIPTION":"at"}}},"GEOLOC":{"ORIGIN":{"LATITUDE":48.78417,"LONGITUDE":9.17908},"TO":[{"LATITUDE":48.78429,"LONGITUDE":9.1776}]},"TPEGOpenLRBase64":"CCgBEAAkIwaHACKw4wAJBQQCAtwACgQDAnkA/2sADAAJBQQCAi4AMAAA","NAVTECH":{"EDGE":{"EDGE_ID":["52852912","722269979","1234075027","1234075026"]},"VERSION_ID":"202004"},"LENGTH":0.07599},"TRAFFIC_ITEM_DETAIL":{"ROAD_CLOSED":false,"EVENT":{"EVENT_ITEM_CANCELLED":false,"SCHEDULED_CONSTRUCTION_EVENT":{"SCHEDULED_CONSTRUCTION_TYPE_DESC":"CONSTRUCTION","SCHEDULED_CONSTRUCTION_DETAIL":"construction"}},"ALERTC":[{"EVENT_CODE":803}]},"TRAFFIC_ITEM_DESCRIPTION":[{"value":"Zwischen Heilbronner Straße und Ossietzkystraße - Bauarbeiten auf Abschnitt.","TYPE":"short_desc"},{"value":"Zwischen Heilbronner Straße und Ossietzkystraße - Bauarbeiten auf Abschnitt.","TYPE":"desc"},{"value":"Bauarbeiten auf Abschnitt.","TYPE":"no_exit_description"}],"mid":"HERE-Europe-PR/r_HERE-Europe-PR/233515_TIC/NAVTEQ-ORIGINAL-1|1608047129931","PRODUCT":"basic"},{"TRAFFIC_ITEM_ID":946702600611959340,"ORIGINAL_TRAFFIC_ITEM_ID":946702600611959340,"TRAFFIC_ITEM_STATUS_SHORT_DESC":"ACTIVE","TRAFFIC_ITEM_TYPE_DESC":"CONSTRUCTION","START_TIME":"12/15/2020 15:44:43","END_TIME":"12/31/2020 22:59:00","ENTRY_TIME":"12/15/2020 15:44:43","CRITICALITY":{"ID":"2","DESCRIPTION":"minor"},"VERIFIED":true,"ABBREVIATION":{"SHORT_DESC":"CONST","DESCRIPTION":"construction"},"COMMENTS":"Stadtgebiet Stuttgart, Jägerstraße, in beiden Richtungen, in Höhe Heilbronner Straße, Baustelle, Fahrbahnverengung, bis 31.12.2020","LOCATION":{"INTERSECTION":{"ORIGIN":{"ID":"","STREET1":{"ADDRESS1":""},"STREET2":{"ADDRESS1":""},"COUNTY":"","STATE":"","PROXIMITY":{"ID":"AFT","DESCRIPTION":"past"}}},"GEOLOC":{"ORIGIN":{"LATITUDE":48.78623,"LONGITUDE":9.17979},"TO":[{"LATITUDE":48.786325,"LONGITUDE":9.180011}],"GEOMETRY":{"SHAPES":{"SHP":[{"value":"48.78623,9.17979 48.78638,9.17968","FC":5,"LID":"52853183F","LE":0.018536271737541223,"FW":"SD"},{"value":"48.78638,9.17968 48.7868,9.17936","FC":5,"LID":"574413648F","LE":0.0522918990633943,"FW":"SD"},{"value":"48.7868,9.17936 48.78688,9.17932","FC":5,"LID":"574413649F","LE":0.009369380615031647,"FW":"SD"},{"value":"48.78688,9.17932 48.78696,9.17952 48.78726,9.18012 48.78728,9.1802 48.78733,9.18042","FC":5,"LID":"52853185F","LE":0.09585107011624797,"FW":"SD"},{"value":"48.78733,9.18042 48.78703,9.18035","FC":2,"LID":"589239502T","LE":0.0337559374545165,"FW":"MD"},{"value":"48.78703,9.18035 48.78675,9.18027","FC":2,"LID":"1232479161T","LE":0.03168753746269842,"FW":"MD"},{"value":"48.78675,9.18027 48.78657,9.18022","FC":2,"LID":"1232479160T","LE":0.020351408193896216,"FW":"MD"},{"value":"48.78657,9.18022 48.78642,9.18018","FC":2,"LID":"1226470429T","LE":0.016937670537516984,"FW":"MD"},{"value":"48.78642,9.18018 48.78635,9.18006 48.78631,9.17999","FC":5,"LID":"1236608390T","LE":0.018562659673404557,"FW":"SD"}]}}},"TPEGOpenLRBase64":"CCkBEAAlJAaHISKxQwAJBQQEA+4ACgUEBII7AAAAAAAACQUEBAMqADAAEQ==","POLITICAL_BOUNDARY":{"METRO_AREA":{"value":"","ID":218}},"NAVTECH":{"EDGE":{"EDGE_ID":["52853183","574413648","574413649","52853185","589239502","1232479161","1232479160","1226470429","1236608390"]},"VERSION_ID":"202004"},"LENGTH":0.18475},"TRAFFIC_ITEM_DETAIL":{"ROAD_CLOSED":false,"EVENT":{"EVENT_ITEM_CANCELLED":false,"SCHEDULED_CONSTRUCTION_EVENT":{"SCHEDULED_CONSTRUCTION_TYPE_DESC":"CONSTRUCTION","SCHEDULED_CONSTRUCTION_DETAIL":"construction"}},"ALERTC":[{"EVENT_CODE":701},{"EVENT_CODE":518}]},"TRAFFIC_ITEM_DESCRIPTION":[{"value":"Baustelle. Fahrbahnverengung.","TYPE":"short_desc"},{"value":"Baustelle. Fahrbahnverengung. Stadtgebiet Stuttgart, Jägerstraße, in beiden Richtungen, in Höhe Heilbronner Straße, Baustelle, Fahrbahnverengung, bis 31.12.2020","TYPE":"desc"},{"value":"Baustelle. Fahrbahnverengung. Stadtgebiet Stuttgart, Jägerstraße, in beiden Richtungen, in Höhe Heilbronner Straße, Baustelle, Fahrbahnverengung, bis 31.12.2020","TYPE":"no_exit_description"}],"mid":"ADAC/1586686081_original|1608047072670","PRODUCT":"basic"},{"TRAFFIC_ITEM_ID":4401015693302025755,"ORIGINAL_TRAFFIC_ITEM_ID":3992938573233681562,"TRAFFIC_ITEM_STATUS_SHORT_DESC":"ACTIVE","TRAFFIC_ITEM_TYPE_DESC":"CONSTRUCTION","START_TIME":"12/16/2020 15:46:09","END_TIME":"12/20/2020 15:45:37","ENTRY_TIME":"12/16/2020 15:46:17","CRITICALITY":{"ID":"0","DESCRIPTION":"critical"},"VERIFIED":true,"ABBREVIATION":{"SHORT_DESC":"CONST","DESCRIPTION":"construction"},"LOCATION":{"INTERSECTION":{"ORIGIN":{"ID":"","STREET1":{"ADDRESS1":"Sängerstraße"},"STREET2":{"ADDRESS1":"Willy-Brandt-Straße"},"COUNTY":"Stuttgart","STATE":"","PROXIMITY":{"ID":"MID","DESCRIPTION":"midway between"}},"TO":{"ID":"","STREET1":{"ADDRESS1":"Sängerstraße"},"STREET2":{"ADDRESS1":"Landhausstraße"},"COUNTY":"Stuttgart","STATE":"","PROXIMITY":{"ID":"MID","DESCRIPTION":"midway between"}}},"GEOLOC":{"ORIGIN":{"LATITUDE":48.78254,"LONGITUDE":9.18772},"TO":[{"LATITUDE":48.78242,"LONGITUDE":9.18807}],"GEOMETRY":{"SHAPES":{"SHP":[{"value":"48.78254,9.18772 48.78242,9.18807","FC":5,"LID":"1090689572T","LE":0.028977018721502726,"FW":"SD"}]}}},"TPEGOpenLRBase64":"CCgBEAAkIwaIkyKwlwAJBQQEA1MACgQDBB0AACP/9AAJBQQEA9MAMAAA","POLITICAL_BOUNDARY":{"METRO_AREA":{"value":"","ID":218},"COUNTY":"Stuttgart","MUNICIPALITY":{"NAME":"Stuttgart"}},"NAVTECH":{"EDGE":{"EDGE_ID":["1090689572"]},"VERSION_ID":"202004"},"LENGTH":0.018},"TRAFFIC_ITEM_DETAIL":{"ROAD_CLOSED":true,"EVENT":{"EVENT_ITEM_CANCELLED":false,"SCHEDULED_CONSTRUCTION_EVENT":{"SCHEDULED_CONSTRUCTION_TYPE_DESC":"CONSTRUCTION","SCHEDULED_CONSTRUCTION_DETAIL":"construction"}},"ALERTC":[{"EVENT_CODE":735,"SUPP_TRAFFIC_CODE":[63]}]},"TRAFFIC_ITEM_DESCRIPTION":[{"value":"Geschlossen zwischen Willy-Brandt-Straße und Landhausstraße - Wegen Baustelle gesperrt. eine örtliche Umleitung ist eingerichtet.","TYPE":"short_desc"},{"value":"Geschlossen zwischen Willy-Brandt-Straße und Landhausstraße - Wegen Baustelle gesperrt. eine örtliche Umleitung ist eingerichtet.","TYPE":"desc"},{"value":"Wegen Baustelle gesperrt. eine örtliche Umleitung ist eingerichtet.","TYPE":"no_exit_description"}],"mid":"0aa89719-e80d-4e84-871e-f5103115f9c3|1608133577315","PRODUCT":"basic"},{"TRAFFIC_ITEM_ID":2370466029812104886,"ORIGINAL_TRAFFIC_ITEM_ID":2068618593608323609,"TRAFFIC_ITEM_STATUS_SHORT_DESC":"ACTIVE","TRAFFIC_ITEM_TYPE_DESC":"CONSTRUCTION","START_TIME":"12/17/2020 09:46:55","END_TIME":"12/18/2020 09:45:37","ENTRY_TIME":"12/17/2020 09:46:55","CRITICALITY":{"ID":"0","DESCRIPTION":"critical"},"VERIFIED":true,"ABBREVIATION":{"SHORT_DESC":"CONST","DESCRIPTION":"construction"},"LOCATION":{"INTERSECTION":{"ORIGIN":{"ID":"","STREET1":{"ADDRESS1":"Lerchenstraße"},"STREET2":{"ADDRESS1":"Hegelstraße"},"COUNTY":"Stuttgart","STATE":"","PROXIMITY":{"ID":"MID","DESCRIPTION":"midway between"}},"TO":{"ID":"","STREET1":{"ADDRESS1":"Lerchenstraße"},"STREET2":{"ADDRESS1":"Hoppenlaustraße"},"COUNTY":"Stuttgart","STATE":"","PROXIMITY":{"ID":"MID","DESCRIPTION":"midway between"}}},"GEOLOC":{"ORIGIN":{"LATITUDE":48.783043,"LONGITUDE":9.166595},"TO":[{"LATITUDE":48.78295,"LONGITUDE":9.16628}],"GEOMETRY":{"SHAPES":{"SHP":[{"value":"48.7831,9.16679 48.78295,9.16628","FC":5,"LID":"52853245T","LE":0.041023890507023174,"FW":"SD"}]}}},"TPEGOpenLRBase64":"CCgBEAAkIwaEwyKwsQAJBQQEA68ACgQDBCkA/83/8QAJBQQEAy8AMAAA","POLITICAL_BOUNDARY":{"METRO_AREA":{"value":"","ID":218},"COUNTY":"Stuttgart","MUNICIPALITY":{"NAME":"Stuttgart"}},"NAVTECH":{"EDGE":{"EDGE_ID":["52853245"]},"VERSION_ID":"202004"},"LENGTH":0.02548},"TRAFFIC_ITEM_DETAIL":{"ROAD_CLOSED":true,"EVENT":{"EVENT_ITEM_CANCELLED":false,"SCHEDULED_CONSTRUCTION_EVENT":{"SCHEDULED_CONSTRUCTION_TYPE_DESC":"CONSTRUCTION","SCHEDULED_CONSTRUCTION_DETAIL":"construction"}},"ALERTC":[{"EVENT_CODE":735}]},"TRAFFIC_ITEM_DESCRIPTION":[{"value":"Geschlossen zwischen Hegelstraße und Hoppenlaustraße - Wegen Baustelle gesperrt.","TYPE":"short_desc"},{"value":"Geschlossen zwischen Hegelstraße und Hoppenlaustraße - Wegen Baustelle gesperrt.","TYPE":"desc"},{"value":"Wegen Baustelle gesperrt.","TYPE":"no_exit_description"}],"mid":"NAVTEQ/r_NAVTEQ/10886118_TIC/NAVTEQ-ORIGINAL-1|1608198384545","PRODUCT":"basic"},{"TRAFFIC_ITEM_ID":1945169082182305705,"ORIGINAL_TRAFFIC_ITEM_ID":4478685570035415403,"TRAFFIC_ITEM_STATUS_SHORT_DESC":"ACTIVE","TRAFFIC_ITEM_TYPE_DESC":"CONSTRUCTION","START_TIME":"12/16/2020 15:46:09","END_TIME":"12/20/2020 15:45:37","ENTRY_TIME":"12/16/2020 15:46:18","CRITICALITY":{"ID":"0","DESCRIPTION":"critical"},"VERIFIED":true,"ABBREVIATION":{"SHORT_DESC":"CONST","DESCRIPTION":"construction"},"LOCATION":{"INTERSECTION":{"ORIGIN":{"ID":"","STREET1":{"ADDRESS1":""},"STREET2":{"ADDRESS1":""},"COUNTY":"","STATE":"","PROXIMITY":{"ID":"AFT","DESCRIPTION":"past"}}},"GEOLOC":{"ORIGIN":{"LATITUDE":48.78242,"LONGITUDE":9.18807},"TO":[{"LATITUDE":48.78254,"LONGITUDE":9.18772}],"GEOMETRY":{"SHAPES":{"SHP":[{"value":"48.78242,9.18807 48.78254,9.18772","FC":5,"LID":"1090689572F","LE":0.028977018721502726,"FW":"SD"}]}}},"TPEGOpenLRBase64":"CCgBEAAkIwaIoyKwkgAJBQQEA9MACgQDBB0A/90ADAAJBQQEA1MAMAAA","POLITICAL_BOUNDARY":{"METRO_AREA":{"value":"","ID":218}},"NAVTECH":{"EDGE":{"EDGE_ID":["1090689572"]},"VERSION_ID":"202004"},"LENGTH":0.018},"TRAFFIC_ITEM_DETAIL":{"ROAD_CLOSED":true,"EVENT":{"EVENT_ITEM_CANCELLED":false,"SCHEDULED_CONSTRUCTION_EVENT":{"SCHEDULED_CONSTRUCTION_TYPE_DESC":"CONSTRUCTION","SCHEDULED_CONSTRUCTION_DETAIL":"construction"}},"ALERTC":[{"EVENT_CODE":735,"SUPP_TRAFFIC_CODE":[63]}]},"TRAFFIC_ITEM_DESCRIPTION":[{"value":"Wegen Baustelle gesperrt. eine örtliche Umleitung ist eingerichtet.","TYPE":"short_desc"},{"value":"Wegen Baustelle gesperrt. eine örtliche Umleitung ist eingerichtet.","TYPE":"desc"},{"value":"Wegen Baustelle gesperrt. eine örtliche Umleitung ist eingerichtet.","TYPE":"no_exit_description"}],"mid":"946c487b-50f1-4642-8dfb-e06a5d1183e9|1608133578022","PRODUCT":"basic"},{"TRAFFIC_ITEM_ID":2438656320007653137,"ORIGINAL_TRAFFIC_ITEM_ID":2438656320007653137,"TRAFFIC_ITEM_STATUS_SHORT_DESC":"ACTIVE","TRAFFIC_ITEM_TYPE_DESC":"CONSTRUCTION","START_TIME":"12/15/2020 15:46:09","END_TIME":"12/31/2020 22:59:00","ENTRY_TIME":"12/16/2020 03:55:11","CRITICALITY":{"ID":"2","DESCRIPTION":"minor"},"VERIFIED":true,"ABBREVIATION":{"SHORT_DESC":"CONST","DESCRIPTION":"construction"},"RDS-TMC_LOCATIONS":{"RDS-TMC":[{"ORIGIN":{"EBU_COUNTRY_CODE":"D","TABLE_ID":1,"LOCATION_ID":"14315","LOCATION_DESC":"Lautenschlagerstraße","RDS_DIRECTION":"-"},"TO":{"EBU_COUNTRY_CODE":"D","TABLE_ID":1,"LOCATION_ID":"14316","LOCATION_DESC":"Konrad-Adenauer-Straße","RDS_DIRECTION":"-"},"DIRECTION":"+","ALERTC":{"TRAFFIC_CODE":518,"DESCRIPTION":"Fahrbahnverengung.","ALERTC_DURATION":"L","ALERTC_DIRECTION":1,"UPDATE_CLASS":5,"PHRASE_CODE":"D19","EXTENT":"2","DURATION":0},"LENGTH":0.15657,"PRIMARY_OFFSET":0.0842},{"ORIGIN":{"EBU_COUNTRY_CODE":"D","TABLE_ID":1,"LOCATION_ID":"14315","LOCATION_DESC":"Lautenschlagerstraße","RDS_DIRECTION":"-"},"TO":{"EBU_COUNTRY_CODE":"D","TABLE_ID":1,"LOCATION_ID":"14316","LOCATION_DESC":"Konrad-Adenauer-Straße","RDS_DIRECTION":"-"},"DIRECTION":"+","ALERTC":{"TRAFFIC_CODE":803,"QUANTIFIERS":0,"DESCRIPTION":"Bauarbeiten auf Abschnitt.","ALERTC_DURATION":"L","ALERTC_DIRECTION":1,"UPDATE_CLASS":11,"PHRASE_CODE":"E11","EXTENT":"2","DURATION":0},"LENGTH":0.15657,"PRIMARY_OFFSET":0.0842}]},"LOCATION":{"DEFINED":{"ORIGIN":{"ROADWAY":{"DESCRIPTION":[{"value":"Arnulf-Klett-Platz","TYPE":"NTCSA"},{"value":"Arnulf-Klett-Platz","TYPE":"RDSGN"},{"value":"Arnulf-Klett-Platz","TYPE":"LOCAL"}],"ID":14313},"POINT":{"DESCRIPTION":[{"value":"Lautenschlagerstraße","TYPE":"NTCSA"},{"value":"Lautenschlagerstraße","TYPE":"RDSGN"},{"value":"Lautenschlagerstraße","TYPE":"LOCAL"},{"value":"Arnulf-Klett-Platz","TYPE":"BNAME"}],"ID":14315},"DIRECTION":{"DESCRIPTION":[{"value":"KONRAD-ADENAUER-STRAßE","TYPE":"LOCAL"},{"value":"KONRAD-ADENAUER-STRAßE","TYPE":"NTCSA"},{"value":"KONRAD-ADENAUER-STRAßE","TYPE":"RDSGN"}],"ID":0},"PROXIMITY":{"ID":"AT","DESCRIPTION":"at"}},"TO":{"ROADWAY":{"DESCRIPTION":[{"value":"Gebhard-Müller-Platz","TYPE":"NTCSA"},{"value":"Gebhard-Müller-Platz","TYPE":"RDSGN"},{"value":"Gebhard-Müller-Platz","TYPE":"LOCAL"}],"ID":14313},"POINT":{"DESCRIPTION":[{"value":"Konrad-Adenauer-Straße","TYPE":"NTCSA"},{"value":"Konrad-Adenauer-Straße","TYPE":"RDSGN"},{"value":"Konrad-Adenauer-Straße","TYPE":"LOCAL"},{"value":"Gebhard-Müller-Platz","TYPE":"BNAME"}],"ID":14316},"DIRECTION":{"DESCRIPTION":[{"value":"KONRAD-ADENAUER-STRAßE","TYPE":"LOCAL"},{"value":"KONRAD-ADENAUER-STRAßE","TYPE":"NTCSA"},{"value":"KONRAD-ADENAUER-STRAßE","TYPE":"RDSGN"}],"ID":0},"PROXIMITY":{"ID":"AT","DESCRIPTION":"at"}}},"GEOLOC":{"ORIGIN":{"LATITUDE":48.78275,"LONGITUDE":9.18206},"TO":[{"LATITUDE":48.78179,"LONGITUDE":9.18515}]},"TPEGOpenLRBase64":"CCoBEAAmJQaHOCKwwgAJBQQCAlcACgUEAoMVAAHo/1kACQUEAgLSADCBGQA=","NAVTECH":{"EDGE":{"EDGE_ID":["841534048","716479357","716479356","706870702","706870701"]},"VERSION_ID":"202004"},"LENGTH":0.15657},"TRAFFIC_ITEM_DETAIL":{"ROAD_CLOSED":false,"EVENT":{"EVENT_ITEM_CANCELLED":false,"SCHEDULED_CONSTRUCTION_EVENT":{"SCHEDULED_CONSTRUCTION_TYPE_DESC":"CONSTRUCTION","SCHEDULED_CONSTRUCTION_DETAIL":"construction"}},"ALERTC":[{"EVENT_CODE":518},{"EVENT_CODE":803}]},"TRAFFIC_ITEM_DESCRIPTION":[{"value":"Zwischen Lautenschlagerstraße und Konrad-Adenauer-Straße - Bauarbeiten auf Abschnitt. Fahrbahnverengung.","TYPE":"short_desc"},{"value":"Zwischen Lautenschlagerstraße und Konrad-Adenauer-Straße - Bauarbeiten auf Abschnitt. Fahrbahnverengung.","TYPE":"desc"},{"value":"Bauarbeiten auf Abschnitt. Fahrbahnverengung.","TYPE":"no_exit_description"}],"mid":"48dc9f33-0411-47c6-ae8f-87d59abd591f|1608090911247","PRODUCT":"basic"},{"TRAFFIC_ITEM_ID":327121107549763699,"ORIGINAL_TRAFFIC_ITEM_ID":3178022420691006842,"TRAFFIC_ITEM_STATUS_SHORT_DESC":"ACTIVE","TRAFFIC_ITEM_TYPE_DESC":"CONSTRUCTION","START_TIME":"12/17/2020 09:46:55","END_TIME":"12/18/2020 09:45:37","ENTRY_TIME":"12/17/2020 09:46:55","CRITICALITY":{"ID":"0","DESCRIPTION":"critical"},"VERIFIED":true,"ABBREVIATION":{"SHORT_DESC":"CONST","DESCRIPTION":"construction"},"LOCATION":{"INTERSECTION":{"ORIGIN":{"ID":"","STREET1":{"ADDRESS1":"Eichstraße"},"STREET2":{"ADDRESS1":"Nadlerstraße"},"COUNTY":"Stuttgart","STATE":"","PROXIMITY":{"ID":"AT","DESCRIPTION":"at"}},"TO":{"ID":"","STREET1":{"ADDRESS1":"Eichstraße"},"STREET2":{"ADDRESS1":"Nadlerstraße"},"COUNTY":"Stuttgart","STATE":"","PROXIMITY":{"ID":"AT","DESCRIPTION":"at"}}},"GEOLOC":{"ORIGIN":{"LATITUDE":48.77387,"LONGITUDE":9.17811},"TO":[{"LATITUDE":48.77443,"LONGITUDE":9.17763}],"GEOMETRY":{"SHAPES":{"SHP":[{"value":"48.77387,9.17811 48.77408,9.17836 48.7743,9.17865 48.77437,9.17853","FC":5,"LID":"76871960F","LE":0.07392809153258348,"FW":"SD"},{"value":"48.77437,9.17853 48.77467,9.17799","FC":5,"LID":"589250012F","LE":0.05184935675655247,"FW":"SD"},{"value":"48.77467,9.17799 48.77456,9.17781 48.77449,9.1777 48.77443,9.17763","FC":5,"LID":"53229308T","LE":0.03766771464291719,"FW":"SD"}]}}},"TPEGOpenLRBase64":"CCkBEAAlJAaG0yKvAwAJBQQEAxsACgUEBIEkAP/QADgACQUEBAMeADAAAA==","POLITICAL_BOUNDARY":{"METRO_AREA":{"value":"","ID":218},"COUNTY":"Stuttgart","MUNICIPALITY":{"NAME":"Stuttgart"}},"NAVTECH":{"EDGE":{"EDGE_ID":["76871960","589250012","53229308"]},"VERSION_ID":"202004"},"LENGTH":0.10155},"TRAFFIC_ITEM_DETAIL":{"ROAD_CLOSED":true,"EVENT":{"EVENT_ITEM_CANCELLED":false,"SCHEDULED_CONSTRUCTION_EVENT":{"SCHEDULED_CONSTRUCTION_TYPE_DESC":"CONSTRUCTION","SCHEDULED_CONSTRUCTION_DETAIL":"construction"}},"ALERTC":[{"EVENT_CODE":735}]},"TRAFFIC_ITEM_DESCRIPTION":[{"value":"Geschlossen bei Nadlerstraße - Wegen Baustelle gesperrt.","TYPE":"short_desc"},{"value":"Geschlossen bei Nadlerstraße - Wegen Baustelle gesperrt.","TYPE":"desc"},{"value":"Wegen Baustelle gesperrt.","TYPE":"no_exit_description"}],"mid":"NAVTEQ/r_NAVTEQ/10885152_TIC/NAVTEQ-ORIGINAL-1|1608198384540","PRODUCT":"basic"},{"TRAFFIC_ITEM_ID":1737718185808422944,"ORIGINAL_TRAFFIC_ITEM_ID":1737718185808422944,"TRAFFIC_ITEM_STATUS_SHORT_DESC":"ACTIVE","TRAFFIC_ITEM_TYPE_DESC":"CONSTRUCTION","START_TIME":"12/15/2020 15:44:42","END_TIME":"12/18/2020 22:59:00","ENTRY_TIME":"12/15/2020 15:44:42","CRITICALITY":{"ID":"2","DESCRIPTION":"minor"},"VERIFIED":true,"ABBREVIATION":{"SHORT_DESC":"CONST","DESCRIPTION":"construction"},"COMMENTS":"Stuttgart, Am Kräherwald in Höhe Lenzhalde in beiden Richtungen Baustelle, vorübergehende Regelung durch provisorische Ampelanlagen, für beide Richtungen nur ein Fahrstreifen abwechselnd frei, bis voraussichtlich 18.12.2020","RDS-TMC_LOCATIONS":{"RDS-TMC":[{"ORIGIN":{"EBU_COUNTRY_CODE":"D","TABLE_ID":1,"LOCATION_ID":"54762","LOCATION_DESC":"Killesberg","RDS_DIRECTION":"+"},"TO":{"EBU_COUNTRY_CODE":"D","TABLE_ID":1,"LOCATION_ID":"54761","LOCATION_DESC":"Zeppelinstraße","RDS_DIRECTION":"+"},"DIRECTION":"-","ALERTC":{"TRAFFIC_CODE":708,"QUANTIFIERS":0,"DESCRIPTION":"Vorübergehende Regelung mit provisorischer Ampelanlage.","ALERTC_DURATION":"L","ALERTC_DIRECTION":1,"UPDATE_CLASS":11,"PHRASE_CODE":"E8","EXTENT":"1","DURATION":0},"LENGTH":0.27974,"PRIMARY_OFFSET":0.00551},{"ORIGIN":{"EBU_COUNTRY_CODE":"D","TABLE_ID":1,"LOCATION_ID":"54762","LOCATION_DESC":"Killesberg","RDS_DIRECTION":"+"},"TO":{"EBU_COUNTRY_CODE":"D","TABLE_ID":1,"LOCATION_ID":"54761","LOCATION_DESC":"Zeppelinstraße","RDS_DIRECTION":"+"},"DIRECTION":"-","ALERTC":{"TRAFFIC_CODE":742,"QUANTIFIERS":0,"DESCRIPTION":"Baustelle; für beide Richtungen nur ein Fahrstreifen abwechselnd frei.","ALERTC_DURATION":"L","ALERTC_DIRECTION":1,"UPDATE_CLASS":5,"PHRASE_CODE":"E1.E14","EXTENT":"1","DURATION":0},"LENGTH":0.27974,"PRIMARY_OFFSET":0.00551}]},"LOCATION":{"DEFINED":{"ORIGIN":{"ROADWAY":{"DESCRIPTION":[{"value":"Am Kräherwald","TYPE":"NTCSA"},{"value":"Am Kräherwald","TYPE":"RDSGN"},{"value":"Am Kräherwald","TYPE":"LOCAL"}],"ID":30971},"POINT":{"DESCRIPTION":[{"value":"Killesberg","TYPE":"NTCSA"},{"value":"Killesberg","TYPE":"RDSGN"},{"value":"Killesberg","TYPE":"LOCAL"},{"value":"Am Kräherwald","TYPE":"BNAME"}],"ID":54762},"DIRECTION":{"DESCRIPTION":[{"value":"LEONBERG","TYPE":"LOCAL"},{"value":"LEONBERG","TYPE":"NTCSA"},{"value":"LEONBERG","TYPE":"RDSGN"}],"ID":0},"PROXIMITY":{"ID":"AT","DESCRIPTION":"at"}},"TO":{"ROADWAY":{"DESCRIPTION":[{"value":"Am Kräherwald","TYPE":"NTCSA"},{"value":"Am Kräherwald","TYPE":"RDSGN"},{"value":"Am Kräherwald","TYPE":"LOCAL"}],"ID":30971},"POINT":{"DESCRIPTION":[{"value":"Zeppelinstraße","TYPE":"NTCSA"},{"value":"Zeppelinstraße","TYPE":"RDSGN"},{"value":"Zeppelinstraße","TYPE":"LOCAL"},{"value":"Am Kräherwald","TYPE":"BNAME"}],"ID":54761},"DIRECTION":{"DESCRIPTION":[{"value":"LEONBERG","TYPE":"LOCAL"},{"value":"LEONBERG","TYPE":"NTCSA"},{"value":"LEONBERG","TYPE":"RDSGN"}],"ID":0},"PROXIMITY":{"ID":"AT","DESCRIPTION":"at"}}},"GEOLOC":{"ORIGIN":{"LATITUDE":48.78726,"LONGITUDE":9.15096},"TO":[{"LATITUDE":48.78417,"LONGITUDE":9.14701}]},"TPEGOpenLRBase64":"CCkBEAAlJAaB5yKxfAAJBQQCA44ACgUEAoNhAP5h/rMACQUEAgMfADAWCQ==","NAVTECH":{"EDGE":{"EDGE_ID":["1071213747","809477092","1188661476","1188661475","52852320","809470388","1265157734","1265157733","1265744608"]},"VERSION_ID":"202004"},"LENGTH":0.27974},"TRAFFIC_ITEM_DETAIL":{"ROAD_CLOSED":false,"EVENT":{"EVENT_ITEM_CANCELLED":false,"SCHEDULED_CONSTRUCTION_EVENT":{"SCHEDULED_CONSTRUCTION_TYPE_DESC":"CONSTRUCTION","SCHEDULED_CONSTRUCTION_DETAIL":"construction"}},"ALERTC":[{"EVENT_CODE":708},{"EVENT_CODE":742}]},"TRAFFIC_ITEM_DESCRIPTION":[{"value":"Zwischen Killesberg und Zeppelinstraße - Vorübergehende Regelung mit provisorischer Ampelanlage. Baustelle; für beide Richtungen nur ein Fahrstreifen abwechselnd frei.","TYPE":"short_desc"},{"value":"Zwischen Killesberg und Zeppelinstraße - Vorübergehende Regelung mit provisorischer Ampelanlage. Baustelle; für beide Richtungen nur ein Fahrstreifen abwechselnd frei. Stuttgart, Am Kräherwald in Höhe Lenzhalde in beiden Richtungen Baustelle, vorübergehende Regelung durch provisorische Ampelanlagen, für beide Richtungen nur ein Fahrstreifen abwechselnd frei, bis voraussichtlich 18.12.2020","TYPE":"desc"},{"value":"Vorübergehende Regelung mit provisorischer Ampelanlage. Baustelle; für beide Richtungen nur ein Fahrstreifen abwechselnd frei. Stuttgart, Am Kräherwald in Höhe Lenzhalde in beiden Richtungen Baustelle, vorübergehende Regelung durch provisorische Ampelanlagen, für beide Richtungen nur ein Fahrstreifen abwechselnd frei, bis voraussichtlich 18.12.2020","TYPE":"no_exit_description"}],"mid":"LMS-BW/r_IVLZStuttgart/r_IVLZStuttgart/8606_TIC-IVLZStuttgart/1_DBWLMS-BW/253988_reverse|1608047072670","PRODUCT":"basic"},{"TRAFFIC_ITEM_ID":3548704514586727824,"ORIGINAL_TRAFFIC_ITEM_ID":3548704514586727824,"TRAFFIC_ITEM_STATUS_SHORT_DESC":"ACTIVE","TRAFFIC_ITEM_TYPE_DESC":"CONSTRUCTION","START_TIME":"12/15/2020 15:46:12","END_TIME":"03/30/2021 21:59:00","ENTRY_TIME":"12/15/2020 15:46:23","CRITICALITY":{"ID":"2","DESCRIPTION":"minor"},"VERIFIED":true,"ABBREVIATION":{"SHORT_DESC":"CONST","DESCRIPTION":"construction"},"RDS-TMC_LOCATIONS":{"RDS-TMC":[{"ORIGIN":{"EBU_COUNTRY_CODE":"D","TABLE_ID":1,"LOCATION_ID":"42096","LOCATION_DESC":"Fritz-Elsas-Straße","RDS_DIRECTION":"+"},"DIRECTION":"-","ALERTC":{"TRAFFIC_CODE":503,"QUANTIFIERS":0,"DESCRIPTION":"Linker Fahrstreifen gesperrt.","ALERTC_DURATION":"L","ALERTC_DIRECTION":1,"UPDATE_CLASS":5,"PHRASE_CODE":"D4","EXTENT":"1","DURATION":0},"LENGTH":0.08629,"PRIMARY_OFFSET":0.1819},{"ORIGIN":{"EBU_COUNTRY_CODE":"D","TABLE_ID":1,"LOCATION_ID":"42096","LOCATION_DESC":"Fritz-Elsas-Straße","RDS_DIRECTION":"+"},"DIRECTION":"-","ALERTC":{"TRAFFIC_CODE":803,"QUANTIFIERS":0,"DESCRIPTION":"Bauarbeiten auf Abschnitt.","ALERTC_DURATION":"L","ALERTC_DIRECTION":1,"UPDATE_CLASS":11,"PHRASE_CODE":"E11","EXTENT":"1","DURATION":0},"LENGTH":0.08629,"PRIMARY_OFFSET":0.1819}]},"LOCATION":{"DEFINED":{"ORIGIN":{"ROADWAY":{"DESCRIPTION":[{"value":"Theodor-Heuss-Straße","TYPE":"NTCSA"},{"value":"Theodor-Heuss-Straße","TYPE":"RDSGN"},{"value":"Theodor-Heuss-Straße","TYPE":"LOCAL"}],"ID":42124},"POINT":{"DESCRIPTION":[{"value":"Lange Straße","TYPE":"NTCSA"},{"value":"Lange Straße","TYPE":"RDSGN"},{"value":"Lange Straße","TYPE":"LOCAL"},{"value":"Theodor-Heuss-Straße","TYPE":"BNAME"}],"ID":42096},"DIRECTION":{"DESCRIPTION":[{"value":"ÖSTERREICHISCHER PLATZ","TYPE":"LOCAL"},{"value":"ÖSTERREICHISCHER PLATZ","TYPE":"NTCSA"},{"value":"ÖSTERREICHISCHER PLATZ","TYPE":"RDSGN"}],"ID":0},"PROXIMITY":{"ID":"AT","DESCRIPTION":"at"}},"TO":{"ROADWAY":{"DESCRIPTION":[{"value":"Theodor-Heuss-Straße","TYPE":"NTCSA"},{"value":"Theodor-Heuss-Straße","TYPE":"RDSGN"},{"value":"Theodor-Heuss-Straße","TYPE":"LOCAL"}],"ID":42124},"POINT":{"DESCRIPTION":[{"value":"Fritz-Elsas-Straße","TYPE":"NTCSA"},{"value":"Fritz-Elsas-Straße","TYPE":"RDSGN"},{"value":"Fritz-Elsas-Straße","TYPE":"LOCAL"},{"value":"Theodor-Heuss-Straße","TYPE":"BNAME"}],"ID":42096},"DIRECTION":{"DESCRIPTION":[{"value":"ÖSTERREICHISCHER PLATZ","TYPE":"LOCAL"},{"value":"ÖSTERREICHISCHER PLATZ","TYPE":"NTCSA"},{"value":"ÖSTERREICHISCHER PLATZ","TYPE":"RDSGN"}],"ID":0},"PROXIMITY":{"ID":"AT","DESCRIPTION":"at"}}},"GEOLOC":{"ORIGIN":{"LATITUDE":48.77623,"LONGITUDE":9.17273},"TO":[{"LATITUDE":48.77522,"LONGITUDE":9.17162}]},"TPEGOpenLRBase64":"CCkBEAAlJAaF2CKvcQAJBQQBApsACgUEAYELAP+R/5sACQUEAQIZADAAAA==","NAVTECH":{"EDGE":{"EDGE_ID":["76871572","76871571","589251743","855633701","855633700"]},"VERSION_ID":"202004"},"LENGTH":0.08629},"TRAFFIC_ITEM_DETAIL":{"ROAD_CLOSED":false,"EVENT":{"EVENT_ITEM_CANCELLED":false,"SCHEDULED_CONSTRUCTION_EVENT":{"SCHEDULED_CONSTRUCTION_TYPE_DESC":"CONSTRUCTION","SCHEDULED_CONSTRUCTION_DETAIL":"construction"}},"ALERTC":[{"EVENT_CODE":503},{"EVENT_CODE":803}]},"TRAFFIC_ITEM_DESCRIPTION":[{"value":"Bei Fritz-Elsas-Straße - Bauarbeiten auf Abschnitt. Linker Fahrstreifen gesperrt.","TYPE":"short_desc"},{"value":"Bei Fritz-Elsas-Straße - Bauarbeiten auf Abschnitt. Linker Fahrstreifen gesperrt.","TYPE":"desc"},{"value":"Bauarbeiten auf Abschnitt. Linker Fahrstreifen gesperrt.","TYPE":"no_exit_description"}],"mid":"98f9c054-efff-4dec-850e-cb719e364a82|1608047183760","PRODUCT":"basic"},{"TRAFFIC_ITEM_ID":1382082596731240982,"ORIGINAL_TRAFFIC_ITEM_ID":1382082596731240982,"TRAFFIC_ITEM_STATUS_SHORT_DESC":"ACTIVE","TRAFFIC_ITEM_TYPE_DESC":"CONSTRUCTION","START_TIME":"02/11/2020 02:35:00","END_TIME":"12/31/2020 22:59:00","ENTRY_TIME":"12/15/2020 15:44:45","CRITICALITY":{"ID":"2","DESCRIPTION":"minor"},"VERIFIED":true,"ABBREVIATION":{"SHORT_DESC":"CONST","DESCRIPTION":"construction"},"LOCATION":{"INTERSECTION":{"ORIGIN":{"ID":"","STREET1":{"ADDRESS1":"Jägerstraße"},"STREET2":{"ADDRESS1":""},"COUNTY":"","STATE":"","PROXIMITY":{"ID":"AFT","DESCRIPTION":"past"}},"TO":{"ID":"","STREET1":{"ADDRESS1":"Jägerstraße"},"STREET2":{"ADDRESS1":""},"COUNTY":"","STATE":"","PROXIMITY":{"ID":"AFT","DESCRIPTION":"past"}}},"GEOLOC":{"ORIGIN":{"LATITUDE":48.786322,"LONGITUDE":9.180008},"TO":[{"LATITUDE":48.786228,"LONGITUDE":9.179785}],"GEOMETRY":{"SHAPES":{"SHP":[{"value":"48.78631,9.17999 48.78623,9.17979","FC":5,"LID":"1236608389T","LE":0.017179789353681394,"FW":"SD"}]}}},"TPEGOpenLRBase64":"CCgBEAAkIwaHMyKxTAAJBQQEA6MACgQDBCQA/9n/7QAJBQQEAyoAMBMA","POLITICAL_BOUNDARY":{"METRO_AREA":{"value":"","ID":218}},"NAVTECH":{"EDGE":{"EDGE_ID":["1236608389"]},"VERSION_ID":"202004"},"LENGTH":0.01067},"TRAFFIC_ITEM_DETAIL":{"ROAD_CLOSED":false,"EVENT":{"EVENT_ITEM_CANCELLED":false,"SCHEDULED_CONSTRUCTION_EVENT":{"SCHEDULED_CONSTRUCTION_TYPE_DESC":"CONSTRUCTION","SCHEDULED_CONSTRUCTION_DETAIL":"construction"}},"ALERTC":[{"EVENT_CODE":803}]},"TRAFFIC_ITEM_DESCRIPTION":[{"value":"Bauarbeiten auf Abschnitt.","TYPE":"short_desc"},{"value":"Bauarbeiten auf Abschnitt.","TYPE":"desc"},{"value":"Bauarbeiten auf Abschnitt.","TYPE":"no_exit_description"}],"mid":"28366|1608047067799","PRODUCT":"basic"},{"TRAFFIC_ITEM_ID":4572131690502468412,"ORIGINAL_TRAFFIC_ITEM_ID":3594639132852251517,"TRAFFIC_ITEM_STATUS_SHORT_DESC":"ACTIVE","TRAFFIC_ITEM_TYPE_DESC":"CONSTRUCTION","START_TIME":"12/17/2020 12:07:10","END_TIME":"12/18/2020 12:06:22","ENTRY_TIME":"12/17/2020 12:07:10","CRITICALITY":{"ID":"0","DESCRIPTION":"critical"},"VERIFIED":true,"ABBREVIATION":{"SHORT_DESC":"CONST","DESCRIPTION":"construction"},"LOCATION":{"INTERSECTION":{"ORIGIN":{"ID":"","STREET1":{"ADDRESS1":"Lerchenstraße"},"STREET2":{"ADDRESS1":"Hoppenlaustraße"},"COUNTY":"Stuttgart","STATE":"","PROXIMITY":{"ID":"MID","DESCRIPTION":"midway between"}},"TO":{"ID":"","STREET1":{"ADDRESS1":"Lerchenstraße"},"STREET2":{"ADDRESS1":"Hegelstraße"},"COUNTY":"Stuttgart","STATE":"","PROXIMITY":{"ID":"MID","DESCRIPTION":"midway between"}}},"GEOLOC":{"ORIGIN":{"LATITUDE":48.78295,"LONGITUDE":9.16628},"TO":[{"LATITUDE":48.783043,"LONGITUDE":9.166595}],"GEOMETRY":{"SHAPES":{"SHP":[{"value":"48.78295,9.16628 48.7831,9.16679","FC":5,"LID":"52853245F","LE":0.041023890507023174,"FW":"SD"}]}}},"TPEGOpenLRBase64":"CCgBEAAkIwaErCKwqgAJBQQEAy8ACgQDBCkAADMADwAJBQQEA68AMAAA","POLITICAL_BOUNDARY":{"METRO_AREA":{"value":"","ID":218},"COUNTY":"Stuttgart","MUNICIPALITY":{"NAME":"Stuttgart"}},"NAVTECH":{"EDGE":{"EDGE_ID":["52853245"]},"VERSION_ID":"202004"},"LENGTH":0.02548},"TRAFFIC_ITEM_DETAIL":{"ROAD_CLOSED":true,"EVENT":{"EVENT_ITEM_CANCELLED":false,"SCHEDULED_CONSTRUCTION_EVENT":{"SCHEDULED_CONSTRUCTION_TYPE_DESC":"CONSTRUCTION","SCHEDULED_CONSTRUCTION_DETAIL":"construction"}},"ALERTC":[{"EVENT_CODE":735}]},"TRAFFIC_ITEM_DESCRIPTION":[{"value":"Geschlossen zwischen Hoppenlaustraße und Hegelstraße - Wegen Baustelle gesperrt.","TYPE":"short_desc"},{"value":"Geschlossen zwischen Hoppenlaustraße und Hegelstraße - Wegen Baustelle gesperrt.","TYPE":"desc"},{"value":"Wegen Baustelle gesperrt.","TYPE":"no_exit_description"}],"mid":"NAVTEQ/r_NAVTEQ/10886118_TIC/NAVTEQ-REVERSE-1|1608206794512","PRODUCT":"basic"},{"TRAFFIC_ITEM_ID":1561977083379889723,"ORIGINAL_TRAFFIC_ITEM_ID":1561977083379889723,"TRAFFIC_ITEM_STATUS_SHORT_DESC":"ACTIVE","TRAFFIC_ITEM_TYPE_DESC":"CONSTRUCTION","START_TIME":"12/15/2020 15:46:10","END_TIME":"12/18/2020 22:59:00","ENTRY_TIME":"12/15/2020 15:46:10","CRITICALITY":{"ID":"2","DESCRIPTION":"minor"},"VERIFIED":true,"ABBREVIATION":{"SHORT_DESC":"CONST","DESCRIPTION":"construction"},"RDS-TMC_LOCATIONS":{"RDS-TMC":[{"ORIGIN":{"EBU_COUNTRY_CODE":"D","TABLE_ID":1,"LOCATION_ID":"14327","LOCATION_DESC":"Friedrichsplatz","RDS_DIRECTION":"-"},"DIRECTION":"+","ALERTC":{"TRAFFIC_CODE":803,"QUANTIFIERS":0,"DESCRIPTION":"Bauarbeiten auf Abschnitt.","ALERTC_DURATION":"L","ALERTC_DIRECTION":1,"UPDATE_CLASS":11,"PHRASE_CODE":"E11","EXTENT":"1","DURATION":0},"LENGTH":0.07683,"PRIMARY_OFFSET":0.0}]},"LOCATION":{"DEFINED":{"ORIGIN":{"ROADWAY":{"DESCRIPTION":[{"value":"Kriegsbergstraße","TYPE":"NTCSA"},{"value":"Kriegsbergstraße","TYPE":"RDSGN"},{"value":"Kriegsbergstraße","TYPE":"LOCAL"}],"ID":14322},"POINT":{"DESCRIPTION":[{"value":"Kronenstraße","TYPE":"NTCSA"},{"value":"Kronenstraße","TYPE":"RDSGN"},{"value":"Kronenstraße","TYPE":"LOCAL"},{"value":"Kriegsbergstraße","TYPE":"BNAME"}],"ID":14327},"DIRECTION":{"DESCRIPTION":[{"value":"ARNULF-KLETT-PLATZ","TYPE":"LOCAL"},{"value":"ARNULF-KLETT-PLATZ","TYPE":"NTCSA"},{"value":"ARNULF-KLETT-PLATZ","TYPE":"RDSGN"}],"ID":0},"PROXIMITY":{"ID":"AT","DESCRIPTION":"at"}},"TO":{"ROADWAY":{"DESCRIPTION":[{"value":"Kriegsbergstraße","TYPE":"NTCSA"},{"value":"Kriegsbergstraße","TYPE":"RDSGN"},{"value":"Kriegsbergstraße","TYPE":"LOCAL"}],"ID":14322},"POINT":{"DESCRIPTION":[{"value":"Friedrichsplatz","TYPE":"NTCSA"},{"value":"Friedrichsplatz","TYPE":"RDSGN"},{"value":"Friedrichsplatz","TYPE":"LOCAL"},{"value":"Kriegsbergstraße","TYPE":"BNAME"}],"ID":14327},"DIRECTION":{"DESCRIPTION":[{"value":"ARNULF-KLETT-PLATZ","TYPE":"LOCAL"},{"value":"ARNULF-KLETT-PLATZ","TYPE":"NTCSA"},{"value":"ARNULF-KLETT-PLATZ","TYPE":"RDSGN"}],"ID":0},"PROXIMITY":{"ID":"AT","DESCRIPTION":"at"}}},"GEOLOC":{"ORIGIN":{"LATITUDE":48.78412,"LONGITUDE":9.17743},"TO":[{"LATITUDE":48.78407,"LONGITUDE":9.17893}]},"TPEGOpenLRBase64":"CCgBEAAkIwaGsyKw4QAJBQQCAi0ACgQDAnwAAJf/+wAJBQQCAtoAMAAA","NAVTECH":{"EDGE":{"EDGE_ID":["1234106080","1234106081","1205225983","1205225982","52888365"]},"VERSION_ID":"202004"},"LENGTH":0.07683},"TRAFFIC_ITEM_DETAIL":{"ROAD_CLOSED":false,"EVENT":{"EVENT_ITEM_CANCELLED":false,"SCHEDULED_CONSTRUCTION_EVENT":{"SCHEDULED_CONSTRUCTION_TYPE_DESC":"CONSTRUCTION","SCHEDULED_CONSTRUCTION_DETAIL":"construction"}},"ALERTC":[{"EVENT_CODE":803}]},"TRAFFIC_ITEM_DESCRIPTION":[{"value":"Bei Friedrichsplatz - Bauarbeiten auf Abschnitt.","TYPE":"short_desc"},{"value":"Bei Friedrichsplatz - Bauarbeiten auf Abschnitt.","TYPE":"desc"},{"value":"Bauarbeiten auf Abschnitt.","TYPE":"no_exit_description"}],"mid":"HERE-Europe-PR/r_HERE-Europe-PR/233515_TIC/NAVTEQ-REVERSE-1|1608047129931","PRODUCT":"basic"},{"TRAFFIC_ITEM_ID":550603799007483964,"ORIGINAL_TRAFFIC_ITEM_ID":550603799007483964,"TRAFFIC_ITEM_STATUS_SHORT_DESC":"ACTIVE","TRAFFIC_ITEM_TYPE_DESC":"CONSTRUCTION","START_TIME":"12/15/2020 15:44:42","END_TIME":"12/31/2020 22:59:00","ENTRY_TIME":"12/15/2020 15:44:42","CRITICALITY":{"ID":"2","DESCRIPTION":"minor"},"VERIFIED":true,"ABBREVIATION":{"SHORT_DESC":"CONST","DESCRIPTION":"construction"},"COMMENTS":"Stadtgebiet Stuttgart, Schillerstraße, Konrad-Adenauer-Straße - Heilbronner Straße, in beiden Richtungen, zwischen Kreuzung Gebhard-Müller-Platz und Hauptbahnhof, Fahrbahnverengung, Baustelle, bis 31.12.2020","RDS-TMC_LOCATIONS":{"RDS-TMC":[{"ORIGIN":{"EBU_COUNTRY_CODE":"D","TABLE_ID":1,"LOCATION_ID":"14315","LOCATION_DESC":"Hauptbahnhof","RDS_DIRECTION":"+"},"DIRECTION":"-","ALERTC":{"TRAFFIC_CODE":701,"QUANTIFIERS":0,"DESCRIPTION":"Baustelle.","ALERTC_DURATION":"L","ALERTC_DIRECTION":1,"UPDATE_CLASS":11,"PHRASE_CODE":"E1","EXTENT":"1","DURATION":0},"LENGTH":0.14291,"PRIMARY_OFFSET":0.00268},{"ORIGIN":{"EBU_COUNTRY_CODE":"D","TABLE_ID":1,"LOCATION_ID":"14315","LOCATION_DESC":"Hauptbahnhof","RDS_DIRECTION":"+"},"DIRECTION":"-","ALERTC":{"TRAFFIC_CODE":518,"DESCRIPTION":"Fahrbahnverengung.","ALERTC_DURATION":"L","ALERTC_DIRECTION":1,"UPDATE_CLASS":5,"PHRASE_CODE":"D19","EXTENT":"1","DURATION":0},"LENGTH":0.14291,"PRIMARY_OFFSET":0.00268}]},"LOCATION":{"DEFINED":{"ORIGIN":{"ROADWAY":{"DESCRIPTION":[{"value":"Schillerstraße","TYPE":"NTCSA"},{"value":"Schillerstraße","TYPE":"RDSGN"},{"value":"Schillerstraße","TYPE":"LOCAL"}],"ID":14313},"POINT":{"DESCRIPTION":[{"value":"Gebhard-Müller-Platz","TYPE":"NTCSA"},{"value":"Gebhard-Müller-Platz","TYPE":"RDSGN"},{"value":"Gebhard-Müller-Platz","TYPE":"LOCAL"},{"value":"Schillerstraße","TYPE":"BNAME"}],"ID":14315},"DIRECTION":{"DESCRIPTION":[{"value":"HEILBRONNER STRAßE","TYPE":"LOCAL"},{"value":"HEILBRONNER STRAßE","TYPE":"NTCSA"},{"value":"HEILBRONNER STRAßE","TYPE":"RDSGN"}],"ID":0},"PROXIMITY":{"ID":"AT","DESCRIPTION":"at"}},"TO":{"ROADWAY":{"DESCRIPTION":[{"value":"Schillerstraße","TYPE":"NTCSA"},{"value":"Schillerstraße","TYPE":"RDSGN"},{"value":"Schillerstraße","TYPE":"LOCAL"}],"ID":14313},"POINT":{"DESCRIPTION":[{"value":"Hauptbahnhof","TYPE":"NTCSA"},{"value":"Hauptbahnhof","TYPE":"RDSGN"},{"value":"Hauptbahnhof","TYPE":"LOCAL"},{"value":"Schillerstraße","TYPE":"BNAME"}],"ID":14315},"DIRECTION":{"DESCRIPTION":[{"value":"HEILBRONNER STRAßE","TYPE":"LOCAL"},{"value":"HEILBRONNER STRAßE","TYPE":"NTCSA"},{"value":"HEILBRONNER STRAßE","TYPE":"RDSGN"}],"ID":0},"PROXIMITY":{"ID":"AT","DESCRIPTION":"at"}}},"GEOLOC":{"ORIGIN":{"LATITUDE":48.78159,"LONGITUDE":9.18646},"TO":[{"LATITUDE":48.78241,"LONGITUDE":9.18358}]},"TPEGOpenLRBase64":"CCkBEAAlJAaIWCKwawAJBQQCAtAACgUEAoFqAP7bAFMACQUEAgJQADAABA==","NAVTECH":{"EDGE":{"EDGE_ID":["574379214","574379215","706870696","706870697"]},"VERSION_ID":"202004"},"LENGTH":0.14291},"TRAFFIC_ITEM_DETAIL":{"ROAD_CLOSED":false,"EVENT":{"EVENT_ITEM_CANCELLED":false,"SCHEDULED_CONSTRUCTION_EVENT":{"SCHEDULED_CONSTRUCTION_TYPE_DESC":"CONSTRUCTION","SCHEDULED_CONSTRUCTION_DETAIL":"construction"}},"ALERTC":[{"EVENT_CODE":701},{"EVENT_CODE":518}]},"TRAFFIC_ITEM_DESCRIPTION":[{"value":"Bei Hauptbahnhof - Baustelle. Fahrbahnverengung.","TYPE":"short_desc"},{"value":"Bei Hauptbahnhof - Baustelle. Fahrbahnverengung. Stadtgebiet Stuttgart, Schillerstraße, Konrad-Adenauer-Straße - Heilbronner Straße, in beiden Richtungen, zwischen Kreuzung Gebhard-Müller-Platz und Hauptbahnhof, Fahrbahnverengung, Baustelle, bis 31.12.2020","TYPE":"desc"},{"value":"Baustelle. Fahrbahnverengung. Stadtgebiet Stuttgart, Schillerstraße, Konrad-Adenauer-Straße - Heilbronner Straße, in beiden Richtungen, zwischen Kreuzung Gebhard-Müller-Platz und Hauptbahnhof, Fahrbahnverengung, Baustelle, bis 31.12.2020","TYPE":"no_exit_description"}],"mid":"ADAC/1204793137_original|1608047072670","PRODUCT":"basic"},{"TRAFFIC_ITEM_ID":3054400731117117738,"ORIGINAL_TRAFFIC_ITEM_ID":3054400731117117738,"TRAFFIC_ITEM_STATUS_SHORT_DESC":"ACTIVE","TRAFFIC_ITEM_TYPE_DESC":"CONSTRUCTION","START_TIME":"12/15/2020 15:46:09","END_TIME":"12/31/2020 11:00:00","ENTRY_TIME":"12/15/2020 15:46:09","CRITICALITY":{"ID":"2","DESCRIPTION":"minor"},"VERIFIED":true,"ABBREVIATION":{"SHORT_DESC":"CONST","DESCRIPTION":"construction"},"LOCATION":{"INTERSECTION":{"ORIGIN":{"ID":"","STREET1":{"ADDRESS1":"Konrad-Adenauer-Straße"},"STREET2":{"ADDRESS1":"B14"},"COUNTY":"Stuttgart","STATE":"","PROXIMITY":{"ID":"MID","DESCRIPTION":"midway between"}},"TO":{"ID":"","STREET1":{"ADDRESS1":"Gebhard-Müller-Platz"},"STREET2":{"ADDRESS1":"Gebhard-Müller-Platz"},"COUNTY":"Stuttgart","STATE":"","PROXIMITY":{"ID":"MID","DESCRIPTION":"midway between"}}},"GEOLOC":{"ORIGIN":{"LATITUDE":48.77975,"LONGITUDE":9.18586},"TO":[{"LATITUDE":48.78184,"LONGITUDE":9.18721}],"GEOMETRY":{"SHAPES":{"SHP":[{"value":"48.77975,9.18586 48.77986,9.18593 48.78011,9.18608","FC":3,"LID":"1189035467F","LE":0.043177767125916214,"FW":"SD"},{"value":"48.78011,9.18608 48.7804,9.18627","FC":3,"LID":"1265694574F","LE":0.03514295821577,"FW":"SD"},{"value":"48.7804,9.18627 48.78049,9.18633","FC":3,"LID":"1265694575F","LE":0.010936633542959937,"FW":"SD"},{"value":"48.78049,9.18633 48.78073,9.18648","FC":3,"LID":"1193066245F","LE":0.028876299525298934,"FW":"SD"},{"value":"48.78073,9.18648 48.781,9.18665","FC":3,"LID":"1193066246F","LE":0.032521204747916914,"FW":"SD"},{"value":"48.781,9.18665 48.78129,9.18683","FC":3,"LID":"52888534F","LE":0.03485726235318157,"FW":"SD"},{"value":"48.78129,9.18683 48.78144,9.18692","FC":3,"LID":"53228737F","LE":0.017944484034024245,"FW":"SD"},{"value":"48.78144,9.18692 48.78172,9.18712","FC":3,"LID":"589242984F","LE":0.03443238271895092,"FW":"SD"},{"value":"48.78172,9.18712 48.78184,9.18721","FC":3,"LID":"589242985F","LE":0.014894073453246047,"FW":"SD"}]}}},"TPEGOpenLRBase64":"CCkBEAAlJAaIKCKwAQAJBQQCAxwACgUEAoI3AACyAPwACQUEAgOSADA6AA==","POLITICAL_BOUNDARY":{"METRO_AREA":{"value":"","ID":218},"COUNTY":"Stuttgart","MUNICIPALITY":{"NAME":"Stuttgart"}},"NAVTECH":{"EDGE":{"EDGE_ID":["1189035467","1265694574","1265694575","1193066245","1193066246","52888534","53228737","589242984","589242985"]},"VERSION_ID":"202004"},"LENGTH":0.15707},"TRAFFIC_ITEM_DETAIL":{"ROAD_CLOSED":false,"EVENT":{"EVENT_ITEM_CANCELLED":false,"SCHEDULED_CONSTRUCTION_EVENT":{"SCHEDULED_CONSTRUCTION_TYPE_DESC":"CONSTRUCTION","SCHEDULED_CONSTRUCTION_DETAIL":"construction"}},"ALERTC":[{"EVENT_CODE":803}]},"TRAFFIC_ITEM_DESCRIPTION":[{"value":"Zwischen B14 und Gebhard-Müller-Platz - Bauarbeiten auf Abschnitt.","TYPE":"short_desc"},{"value":"Zwischen B14 und Gebhard-Müller-Platz - Bauarbeiten auf Abschnitt.","TYPE":"desc"},{"value":"Bauarbeiten auf Abschnitt.","TYPE":"no_exit_description"}],"mid":"HERE-Europe-PR/r_HERE-Europe-PR/227062_TIC/NAVTEQ-ORIGINAL-1|1608047129931","PRODUCT":"basic"},{"TRAFFIC_ITEM_ID":3077956326196462546,"ORIGINAL_TRAFFIC_ITEM_ID":3077956326196462546,"TRAFFIC_ITEM_STATUS_SHORT_DESC":"ACTIVE","TRAFFIC_ITEM_TYPE_DESC":"CONSTRUCTION","START_TIME":"12/09/2020 23:00:00","END_TIME":"09/30/2021 21:59:00","ENTRY_TIME":"12/15/2020 15:44:42","CRITICALITY":{"ID":"2","DESCRIPTION":"minor"},"VERIFIED":true,"ABBREVIATION":{"SHORT_DESC":"CONST","DESCRIPTION":"construction"},"COMMENTS":"Stadtgebiet Stuttgart, Heilbronner Straße, in beiden Richtungen, zwischen Arnulf-Klett Platz und Am Hauptbahnhof, Fahrbahnverengung, Baustelle, von 10.12.2020 bis 30.09.2021","LOCATION":{"INTERSECTION":{"ORIGIN":{"ID":"","STREET1":{"ADDRESS1":""},"STREET2":{"ADDRESS1":""},"COUNTY":"","STATE":"","PROXIMITY":{"ID":"AFT","DESCRIPTION":"past"}}},"GEOLOC":{"ORIGIN":{"LATITUDE":48.7906,"LONGITUDE":9.18112},"TO":[{"LATITUDE":48.78417,"LONGITUDE":9.17908}],"GEOMETRY":{"SHAPES":{"SHP":[{"value":"48.7906,9.18112 48.79024,9.18109","FC":3,"LID":"1196572261T","LE":0.04009464848666778,"FW":"SD"},{"value":"48.79024,9.18109 48.78986,9.18106","FC":3,"LID":"1196572260T","LE":0.04231562954506399,"FW":"SD"},{"value":"48.78986,9.18106 48.78953,9.18103","FC":3,"LID":"1196572259T","LE":0.03676405409402691,"FW":"SD"},{"value":"48.78953,9.18103 48.78868,9.18096","FC":3,"LID":"1188705775T","LE":0.09466471324277316,"FW":"SD"},{"value":"48.78868,9.18096 48.78858,9.18093 48.78822,9.18083","FC":2,"LID":"589234918T","LE":0.05203948851790515,"FW":"MD"},{"value":"48.78822,9.18083 48.78764,9.18067","FC":2,"LID":"76871478T","LE":0.06556215793950082,"FW":"MD"},{"value":"48.78764,9.18067 48.78752,9.18064 48.78739,9.18061 48.78724,9.18058","FC":2,"LID":"76871483T","LE":0.0449748452868604,"FW":"MD"},{"value":"48.78724,9.18058 48.78698,9.18053","FC":2,"LID":"589242752T","LE":0.02914593883565874,"FW":"MD"},{"value":"48.78698,9.18053 48.78618,9.18034","FC":2,"LID":"589242751T","LE":0.09005344190143923,"FW":"MD"},{"value":"48.78618,9.18034 48.78608,9.18032 48.78598,9.1803","FC":2,"LID":"1190912644T","LE":0.022434631888156958,"FW":"MD"},{"value":"48.78598,9.1803 48.78584,9.18026 48.7857,9.18023 48.78556,9.18022 48.78536,9.18022 48.78528,9.18021 48.7852,9.18019","FC":2,"LID":"1190912643T","LE":0.08733834693549355,"FW":"MD"},{"value":"48.7852,9.18019 48.78514,9.18016 48.78506,9.18011 48.78498,9.18005","FC":2,"LID":"1251777599T","LE":0.026582084714544943,"FW":"MD"},{"value":"48.78498,9.18005 48.78492,9.17999 48.78483,9.17989 48.78472,9.17977","FC":2,"LID":"1251777598T","LE":0.03549455849256219,"FW":"MD"},{"value":"48.78472,9.17977 48.78444,9.17944 48.78436,9.17934","FC":2,"LID":"53123545T","LE":0.051005921813103185,"FW":"MD"},{"value":"48.78436,9.17934 48.78428,9.17923 48.78417,9.17908","FC":2,"LID":"52852913T","LE":0.028487081317034497,"FW":"MD"}]}}},"POLITICAL_BOUNDARY":{"METRO_AREA":{"value":"","ID":218}},"NAVTECH":{"EDGE":{"EDGE_ID":["1196572261","1196572260","1196572259","1188705775","589234918","76871478","76871483","589242752","589242751","1190912644","1190912643","1251777599","1251777598","53123545","52852913"]},"VERSION_ID":"202004"},"LENGTH":0.46413},"TRAFFIC_ITEM_DETAIL":{"ROAD_CLOSED":false,"EVENT":{"EVENT_ITEM_CANCELLED":false,"SCHEDULED_CONSTRUCTION_EVENT":{"SCHEDULED_CONSTRUCTION_TYPE_DESC":"CONSTRUCTION","SCHEDULED_CONSTRUCTION_DETAIL":"construction"}},"ALERTC":[{"EVENT_CODE":701},{"EVENT_CODE":518}]},"TRAFFIC_ITEM_DESCRIPTION":[{"value":"Baustelle. Fahrbahnverengung.","TYPE":"short_desc"},{"value":"Baustelle. Fahrbahnverengung. Stadtgebiet Stuttgart, Heilbronner Straße, in beiden Richtungen, zwischen Arnulf-Klett Platz und Am Hauptbahnhof, Fahrbahnverengung, Baustelle, von 10.12.2020 bis 30.09.2021","TYPE":"desc"},{"value":"Baustelle. Fahrbahnverengung. Stadtgebiet Stuttgart, Heilbronner Straße, in beiden Richtungen, zwischen Arnulf-Klett Platz und Am Hauptbahnhof, Fahrbahnverengung, Baustelle, von 10.12.2020 bis 30.09.2021","TYPE":"no_exit_description"}],"mid":"ADAC/203267770_reverse|1608047072670","PRODUCT":"basic"},{"TRAFFIC_ITEM_ID":3524944435272417886,"ORIGINAL_TRAFFIC_ITEM_ID":3524944435272417886,"TRAFFIC_ITEM_STATUS_SHORT_DESC":"ACTIVE","TRAFFIC_ITEM_TYPE_DESC":"CONSTRUCTION","START_TIME":"12/15/2020 15:44:42","END_TIME":"12/18/2020 22:59:00","ENTRY_TIME":"12/15/2020 15:44:42","CRITICALITY":{"ID":"2","DESCRIPTION":"minor"},"VERIFIED":true,"ABBREVIATION":{"SHORT_DESC":"CONST","DESCRIPTION":"construction"},"COMMENTS":"Stuttgart, Am Kräherwald in Höhe Lenzhalde in beiden Richtungen Baustelle, vorübergehende Regelung durch provisorische Ampelanlagen, für beide Richtungen nur ein Fahrstreifen abwechselnd frei, bis voraussichtlich 18.12.2020","RDS-TMC_LOCATIONS":{"RDS-TMC":[{"ORIGIN":{"EBU_COUNTRY_CODE":"D","TABLE_ID":1,"LOCATION_ID":"54762","LOCATION_DESC":"Doggenburg","RDS_DIRECTION":"-"},"DIRECTION":"+","ALERTC":{"TRAFFIC_CODE":708,"QUANTIFIERS":0,"DESCRIPTION":"Vorübergehende Regelung mit provisorischer Ampelanlage.","ALERTC_DURATION":"L","ALERTC_DIRECTION":1,"UPDATE_CLASS":11,"PHRASE_CODE":"E8","EXTENT":"1","DURATION":0},"LENGTH":0.28484,"PRIMARY_OFFSET":0.02014},{"ORIGIN":{"EBU_COUNTRY_CODE":"D","TABLE_ID":1,"LOCATION_ID":"54762","LOCATION_DESC":"Doggenburg","RDS_DIRECTION":"-"},"DIRECTION":"+","ALERTC":{"TRAFFIC_CODE":742,"QUANTIFIERS":0,"DESCRIPTION":"Baustelle; für beide Richtungen nur ein Fahrstreifen abwechselnd frei.","ALERTC_DURATION":"L","ALERTC_DIRECTION":1,"UPDATE_CLASS":5,"PHRASE_CODE":"E1.E14","EXTENT":"1","DURATION":0},"LENGTH":0.28484,"PRIMARY_OFFSET":0.02014}]},"LOCATION":{"DEFINED":{"ORIGIN":{"ROADWAY":{"DESCRIPTION":[{"value":"Am Kräherwald","TYPE":"NTCSA"},{"value":"Am Kräherwald","TYPE":"RDSGN"},{"value":"Am Kräherwald","TYPE":"LOCAL"}],"ID":30971},"POINT":{"DESCRIPTION":[{"value":"Zeppelinstraße","TYPE":"NTCSA"},{"value":"Zeppelinstraße","TYPE":"RDSGN"},{"value":"Zeppelinstraße","TYPE":"LOCAL"},{"value":"Am Kräherwald","TYPE":"BNAME"}],"ID":54762},"DIRECTION":{"DESCRIPTION":[{"value":"STUTTGART","TYPE":"LOCAL"},{"value":"STUTTGART","TYPE":"NTCSA"},{"value":"STUTTGART","TYPE":"RDSGN"}],"ID":0},"PROXIMITY":{"ID":"AT","DESCRIPTION":"at"}},"TO":{"ROADWAY":{"DESCRIPTION":[{"value":"Am Kräherwald","TYPE":"NTCSA"},{"value":"Am Kräherwald","TYPE":"RDSGN"},{"value":"Am Kräherwald","TYPE":"LOCAL"}],"ID":30971},"POINT":{"DESCRIPTION":[{"value":"Doggenburg","TYPE":"NTCSA"},{"value":"Doggenburg","TYPE":"RDSGN"},{"value":"Doggenburg","TYPE":"LOCAL"},{"value":"Am Kräherwald","TYPE":"BNAME"}],"ID":54762},"DIRECTION":{"DESCRIPTION":[{"value":"STUTTGART","TYPE":"LOCAL"},{"value":"STUTTGART","TYPE":"NTCSA"},{"value":"STUTTGART","TYPE":"RDSGN"}],"ID":0},"PROXIMITY":{"ID":"AT","DESCRIPTION":"at"}}},"GEOLOC":{"ORIGIN":{"LATITUDE":48.78417,"LONGITUDE":9.14701},"TO":[{"LATITUDE":48.78733,"LONGITUDE":9.15101}]},"TPEGOpenLRBase64":"CCkBEAAlJAaBJiKw4AAJBQQCAx8ACgUEAoNhAAGfAU0ACQUEAgOOADAJFg==","NAVTECH":{"EDGE":{"EDGE_ID":["1265744608","1265157733","1265157734","809470388","52852320","1188661475","1188661476","809477092","1071213747"]},"VERSION_ID":"202004"},"LENGTH":0.28484},"TRAFFIC_ITEM_DETAIL":{"ROAD_CLOSED":false,"EVENT":{"EVENT_ITEM_CANCELLED":false,"SCHEDULED_CONSTRUCTION_EVENT":{"SCHEDULED_CONSTRUCTION_TYPE_DESC":"CONSTRUCTION","SCHEDULED_CONSTRUCTION_DETAIL":"construction"}},"ALERTC":[{"EVENT_CODE":708},{"EVENT_CODE":742}]},"TRAFFIC_ITEM_DESCRIPTION":[{"value":"Bei Doggenburg - Vorübergehende Regelung mit provisorischer Ampelanlage. Baustelle; für beide Richtungen nur ein Fahrstreifen abwechselnd frei.","TYPE":"short_desc"},{"value":"Bei Doggenburg - Vorübergehende Regelung mit provisorischer Ampelanlage. Baustelle; für beide Richtungen nur ein Fahrstreifen abwechselnd frei. Stuttgart, Am Kräherwald in Höhe Lenzhalde in beiden Richtungen Baustelle, vorübergehende Regelung durch provisorische Ampelanlagen, für beide Richtungen nur ein Fahrstreifen abwechselnd frei, bis voraussichtlich 18.12.2020","TYPE":"desc"},{"value":"Vorübergehende Regelung mit provisorischer Ampelanlage. Baustelle; für beide Richtungen nur ein Fahrstreifen abwechselnd frei. Stuttgart, Am Kräherwald in Höhe Lenzhalde in beiden Richtungen Baustelle, vorübergehende Regelung durch provisorische Ampelanlagen, für beide Richtungen nur ein Fahrstreifen abwechselnd frei, bis voraussichtlich 18.12.2020","TYPE":"no_exit_description"}],"mid":"LMS-BW/r_IVLZStuttgart/r_IVLZStuttgart/8606_TIC-IVLZStuttgart/1_DBWLMS-BW/253988_original|1608047072670","PRODUCT":"basic"},{"TRAFFIC_ITEM_ID":505084262114183522,"ORIGINAL_TRAFFIC_ITEM_ID":626080552464381400,"TRAFFIC_ITEM_STATUS_SHORT_DESC":"ACTIVE","TRAFFIC_ITEM_TYPE_DESC":"CONSTRUCTION","START_TIME":"12/16/2020 15:46:09","END_TIME":"12/20/2020 15:45:37","ENTRY_TIME":"12/16/2020 15:46:17","CRITICALITY":{"ID":"2","DESCRIPTION":"minor"},"VERIFIED":true,"ABBREVIATION":{"SHORT_DESC":"CONST","DESCRIPTION":"construction"},"RDS-TMC_LOCATIONS":{"RDS-TMC":[{"ORIGIN":{"EBU_COUNTRY_CODE":"D","TABLE_ID":1,"LOCATION_ID":"20796","LOCATION_DESC":"Neckartor","RDS_DIRECTION":"+"},"TO":{"EBU_COUNTRY_CODE":"D","TABLE_ID":1,"LOCATION_ID":"20795","LOCATION_DESC":"Charlottenplatz","RDS_DIRECTION":"+"},"DIRECTION":"-","ALERTC":{"TRAFFIC_CODE":518,"DESCRIPTION":"Fahrbahnverengung.","ALERTC_DURATION":"L","ALERTC_DIRECTION":1,"UPDATE_CLASS":5,"PHRASE_CODE":"D19","EXTENT":"2","DURATION":0},"LENGTH":0.60546,"PRIMARY_OFFSET":0.16741},{"ORIGIN":{"EBU_COUNTRY_CODE":"D","TABLE_ID":1,"LOCATION_ID":"20796","LOCATION_DESC":"Neckartor","RDS_DIRECTION":"+"},"TO":{"EBU_COUNTRY_CODE":"D","TABLE_ID":1,"LOCATION_ID":"20795","LOCATION_DESC":"Charlottenplatz","RDS_DIRECTION":"+"},"DIRECTION":"-","ALERTC":{"TRAFFIC_CODE":803,"QUANTIFIERS":0,"DESCRIPTION":"Bauarbeiten auf Abschnitt.","ALERTC_DURATION":"L","ALERTC_DIRECTION":1,"UPDATE_CLASS":11,"PHRASE_CODE":"E11","EXTENT":"2","DURATION":0},"LENGTH":0.60546,"PRIMARY_OFFSET":0.16741}]},"LOCATION":{"DEFINED":{"ORIGIN":{"ROADWAY":{"DESCRIPTION":[{"value":"Willy-Brandt-Straße","TYPE":"NTCSA"},{"value":"Willy-Brandt-Straße","TYPE":"RDSGN"},{"value":"Willy-Brandt-Straße","TYPE":"LOCAL"}],"ID":50206},"POINT":{"DESCRIPTION":[{"value":"Neckartor","TYPE":"NTCSA"},{"value":"Neckartor","TYPE":"RDSGN"},{"value":"Neckartor","TYPE":"LOCAL"},{"value":"Willy-Brandt-Straße","TYPE":"BNAME"}],"ID":20796},"DIRECTION":{"DESCRIPTION":[{"value":"STUTTGART","TYPE":"LOCAL"},{"value":"STUTTGART","TYPE":"NTCSA"},{"value":"STUTTGART","TYPE":"RDSGN"}],"ID":0},"PROXIMITY":{"ID":"AT","DESCRIPTION":"at"}},"TO":{"ROADWAY":{"DESCRIPTION":[{"value":"Konrad-Adenauer-Straße","TYPE":"NTCSA"},{"value":"Konrad-Adenauer-Straße","TYPE":"RDSGN"},{"value":"Konrad-Adenauer-Straße","TYPE":"LOCAL"}],"ID":50206},"POINT":{"DESCRIPTION":[{"value":"Charlottenplatz","TYPE":"NTCSA"},{"value":"Charlottenplatz","TYPE":"RDSGN"},{"value":"Charlottenplatz","TYPE":"LOCAL"},{"value":"Konrad-Adenauer-Straße","TYPE":"BNAME"}],"ID":20795},"DIRECTION":{"DESCRIPTION":[{"value":"STUTTGART","TYPE":"LOCAL"},{"value":"STUTTGART","TYPE":"NTCSA"},{"value":"STUTTGART","TYPE":"RDSGN"}],"ID":0},"PROXIMITY":{"ID":"AT","DESCRIPTION":"at"}}},"GEOLOC":{"ORIGIN":{"LATITUDE":48.78488,"LONGITUDE":9.18917},"TO":[{"LATITUDE":48.77693,"LONGITUDE":9.18364}]},"TPEGOpenLRBase64":"CCsBEAAnJgaI+yKxNwAJBQQBApcACgUEAYplAPzJ+6sACQUEAQIdADCBCIIN","NAVTECH":{"EDGE":{"EDGE_ID":["851354797","933046951","933046950","851354792","589239602","589235127","855628540","855628539","1275672243","1275672242","563887856","563887861","563887860","52888853","52853167","52853166","78591319"]},"VERSION_ID":"202004"},"LENGTH":0.60546},"TRAFFIC_ITEM_DETAIL":{"ROAD_CLOSED":false,"EVENT":{"EVENT_ITEM_CANCELLED":false,"SCHEDULED_CONSTRUCTION_EVENT":{"SCHEDULED_CONSTRUCTION_TYPE_DESC":"CONSTRUCTION","SCHEDULED_CONSTRUCTION_DETAIL":"construction"}},"ALERTC":[{"EVENT_CODE":518},{"EVENT_CODE":803}]},"TRAFFIC_ITEM_DESCRIPTION":[{"value":"Zwischen Neckartor und Charlottenplatz - Bauarbeiten auf Abschnitt. Fahrbahnverengung.","TYPE":"short_desc"},{"value":"Zwischen Neckartor und Charlottenplatz - Bauarbeiten auf Abschnitt. Fahrbahnverengung.","TYPE":"desc"},{"value":"Bauarbeiten auf Abschnitt. Fahrbahnverengung.","TYPE":"no_exit_description"}],"mid":"ffb1f935-cf49-4794-b083-87c50e21b215|1608133577285","PRODUCT":"basic"},{"TRAFFIC_ITEM_ID":3875566210008068345,"ORIGINAL_TRAFFIC_ITEM_ID":3892077491525165935,"TRAFFIC_ITEM_STATUS_SHORT_DESC":"ACTIVE","TRAFFIC_ITEM_TYPE_DESC":"ROAD_CLOSURE","START_TIME":"12/17/2020 09:52:54","END_TIME":"12/18/2020 09:51:47","ENTRY_TIME":"12/17/2020 09:52:54","CRITICALITY":{"ID":"0","DESCRIPTION":"critical"},"VERIFIED":true,"ABBREVIATION":{"SHORT_DESC":"CLOS","DESCRIPTION":""},"RDS-TMC_LOCATIONS":{"RDS-TMC":[{"ORIGIN":{"EBU_COUNTRY_CODE":"D","TABLE_ID":1,"LOCATION_ID":"14340","LOCATION_DESC":"Doggenburg","RDS_DIRECTION":"-"},"DIRECTION":"+","ALERTC":{"TRAFFIC_CODE":401,"DESCRIPTION":"Gesperrt.","ALERTC_DURATION":"L","ALERTC_DIRECTION":1,"URGENCY":"U","UPDATE_CLASS":5,"PHRASE_CODE":"C1","EXTENT":"1","DURATION":0},"LENGTH":0.03203,"PRIMARY_OFFSET":0.0}]},"LOCATION":{"DEFINED":{"ORIGIN":{"ROADWAY":{"DESCRIPTION":[{"value":"Herdweg/Lenzhalde","TYPE":"NTCSA"},{"value":"Herdweg/Lenzhalde","TYPE":"RDSGN"},{"value":"Herdweg/Lenzhalde","TYPE":"LOCAL"}],"ID":14336},"POINT":{"DESCRIPTION":[{"value":"Gäubahn","TYPE":"NTCSA"},{"value":"Gäubahn","TYPE":"RDSGN"},{"value":"Gäubahn","TYPE":"LOCAL"},{"value":"Herdweg/Lenzhalde","TYPE":"BNAME"}],"ID":14340},"DIRECTION":{"DESCRIPTION":[{"value":"DOGGENBURG","TYPE":"LOCAL"},{"value":"DOGGENBURG","TYPE":"NTCSA"},{"value":"DOGGENBURG","TYPE":"RDSGN"}],"ID":0},"PROXIMITY":{"ID":"AT","DESCRIPTION":"at"}},"TO":{"ROADWAY":{"DESCRIPTION":[{"value":"Herdweg/Lenzhalde","TYPE":"NTCSA"},{"value":"Herdweg/Lenzhalde","TYPE":"RDSGN"},{"value":"Herdweg/Lenzhalde","TYPE":"LOCAL"}],"ID":14336},"POINT":{"DESCRIPTION":[{"value":"Doggenburg","TYPE":"NTCSA"},{"value":"Doggenburg","TYPE":"RDSGN"},{"value":"Doggenburg","TYPE":"LOCAL"},{"value":"Herdweg/Lenzhalde","TYPE":"BNAME"}],"ID":14340},"DIRECTION":{"DESCRIPTION":[{"value":"DOGGENBURG","TYPE":"LOCAL"},{"value":"DOGGENBURG","TYPE":"NTCSA"},{"value":"DOGGENBURG","TYPE":"RDSGN"}],"ID":0},"PROXIMITY":{"ID":"AT","DESCRIPTION":"at"}}},"GEOLOC":{"ORIGIN":{"LATITUDE":48.78729,"LONGITUDE":9.15157},"TO":[{"LATITUDE":48.78718,"LONGITUDE":9.15089}]},"TPEGOpenLRBase64":"CCgBEAAkIwaB/iKxdAAJBQQCA7kACgQDAjMA/7z/9QAJBQQCAzUAMAAA","NAVTECH":{"EDGE":{"EDGE_ID":["809478833","809478832","53123516"]},"VERSION_ID":"202004"},"LENGTH":0.03203},"TRAFFIC_ITEM_DETAIL":{"ROAD_CLOSED":true,"INCIDENT":{"RESPONSE_VEHICLES":false,"MISCELLANEOUS_INCIDENT":{"MISCELLANEOUS_TYPE_DESC":""}},"ALERTC":[{"EVENT_CODE":401}]},"TRAFFIC_ITEM_DESCRIPTION":[{"value":"Geschlossen bei Doggenburg - Gesperrt.","TYPE":"short_desc"},{"value":"Geschlossen bei Doggenburg - Gesperrt.","TYPE":"desc"},{"value":"Gesperrt.","TYPE":"no_exit_description"}],"mid":"override-D01+14336-809478833-1608048509456|1608198766248","PRODUCT":"basic"},{"TRAFFIC_ITEM_ID":2874628134805646228,"ORIGINAL_TRAFFIC_ITEM_ID":2809916621436943122,"TRAFFIC_ITEM_STATUS_SHORT_DESC":"ACTIVE","TRAFFIC_ITEM_TYPE_DESC":"CONSTRUCTION","START_TIME":"12/17/2020 09:46:55","END_TIME":"12/18/2020 09:45:37","ENTRY_TIME":"12/17/2020 09:46:55","CRITICALITY":{"ID":"0","DESCRIPTION":"critical"},"VERIFIED":true,"ABBREVIATION":{"SHORT_DESC":"CONST","DESCRIPTION":"construction"},"LOCATION":{"INTERSECTION":{"ORIGIN":{"ID":"","STREET1":{"ADDRESS1":""},"STREET2":{"ADDRESS1":"Hegelstraße"},"COUNTY":"Stuttgart","STATE":"","PROXIMITY":{"ID":"MID","DESCRIPTION":"midway between"}},"TO":{"ID":"","STREET1":{"ADDRESS1":""},"STREET2":{"ADDRESS1":"Lerchenstraße"},"COUNTY":"Stuttgart","STATE":"","PROXIMITY":{"ID":"MID","DESCRIPTION":"midway between"}}},"GEOLOC":{"ORIGIN":{"LATITUDE":48.783146,"LONGITUDE":9.166287},"TO":[{"LATITUDE":48.783011,"LONGITUDE":9.166295}],"GEOMETRY":{"SHAPES":{"SHP":[{"value":"48.78321,9.16626 48.78314,9.16629 48.78308,9.1663 48.78303,9.1663 48.78295,9.16628","FC":5,"LID":"52888609T","LE":0.029378955031999596,"FW":"SD"}]}}},"TPEGOpenLRBase64":"CCgBEAAkIwaEqyKwtgAJBQQEA3oACgQDBB0AAAL/5gAJBQQEAwEAMAAA","POLITICAL_BOUNDARY":{"METRO_AREA":{"value":"","ID":218},"COUNTY":"Stuttgart","MUNICIPALITY":{"NAME":"Stuttgart"}},"NAVTECH":{"EDGE":{"EDGE_ID":["52888609"]},"VERSION_ID":"202004"},"LENGTH":0.01825},"TRAFFIC_ITEM_DETAIL":{"ROAD_CLOSED":true,"EVENT":{"EVENT_ITEM_CANCELLED":false,"SCHEDULED_CONSTRUCTION_EVENT":{"SCHEDULED_CONSTRUCTION_TYPE_DESC":"CONSTRUCTION","SCHEDULED_CONSTRUCTION_DETAIL":"construction"}},"ALERTC":[{"EVENT_CODE":735}]},"TRAFFIC_ITEM_DESCRIPTION":[{"value":"Geschlossen zwischen Hegelstraße und Lerchenstraße - Wegen Baustelle gesperrt.","TYPE":"short_desc"},{"value":"Geschlossen zwischen Hegelstraße und Lerchenstraße - Wegen Baustelle gesperrt.","TYPE":"desc"},{"value":"Wegen Baustelle gesperrt.","TYPE":"no_exit_description"}],"mid":"HERE-Europe-PR/r_HERE-Europe-PR/77050_TIC/NAVTEQ-ORIGINAL-1|1608198384529","PRODUCT":"basic"},{"TRAFFIC_ITEM_ID":1222014698298517349,"ORIGINAL_TRAFFIC_ITEM_ID":1222014698298517349,"TRAFFIC_ITEM_STATUS_SHORT_DESC":"ACTIVE","TRAFFIC_ITEM_TYPE_DESC":"CONSTRUCTION","START_TIME":"12/15/2020 15:46:12","END_TIME":"12/18/2020 22:59:00","ENTRY_TIME":"12/15/2020 15:46:12","CRITICALITY":{"ID":"2","DESCRIPTION":"minor"},"VERIFIED":true,"ABBREVIATION":{"SHORT_DESC":"CONST","DESCRIPTION":"construction"},"RDS-TMC_LOCATIONS":{"RDS-TMC":[{"ORIGIN":{"EBU_COUNTRY_CODE":"D","TABLE_ID":1,"LOCATION_ID":"14318","LOCATION_DESC":"Senefelderstraße","RDS_DIRECTION":"+"},"DIRECTION":"-","ALERTC":{"TRAFFIC_CODE":803,"QUANTIFIERS":0,"DESCRIPTION":"Bauarbeiten auf Abschnitt.","ALERTC_DURATION":"L","ALERTC_DIRECTION":1,"UPDATE_CLASS":11,"PHRASE_CODE":"E11","EXTENT":"1","DURATION":0},"LENGTH":0.19865,"PRIMARY_OFFSET":0.25816}]},"LOCATION":{"DEFINED":{"ORIGIN":{"ROADWAY":{"DESCRIPTION":[{"value":"Rotebühlstraße","TYPE":"NTCSA"},{"value":"Rotebühlstraße","TYPE":"RDSGN"},{"value":"Rotebühlstraße","TYPE":"LOCAL"}],"ID":53062},"POINT":{"DESCRIPTION":[{"value":"Silberburgstraße","TYPE":"NTCSA"},{"value":"Silberburgstraße","TYPE":"RDSGN"},{"value":"Silberburgstraße","TYPE":"LOCAL"},{"value":"Rotebühlstraße","TYPE":"BNAME"}],"ID":14318},"DIRECTION":{"DESCRIPTION":[{"value":"BIRKENKOPF","TYPE":"LOCAL"},{"value":"BIRKENKOPF","TYPE":"NTCSA"},{"value":"BIRKENKOPF","TYPE":"RDSGN"}],"ID":0},"PROXIMITY":{"ID":"AT","DESCRIPTION":"at"}},"TO":{"ROADWAY":{"DESCRIPTION":[{"value":"Rotebühlstraße","TYPE":"NTCSA"},{"value":"Rotebühlstraße","TYPE":"RDSGN"},{"value":"Rotebühlstraße","TYPE":"LOCAL"}],"ID":53062},"POINT":{"DESCRIPTION":[{"value":"Senefelderstraße","TYPE":"NTCSA"},{"value":"Senefelderstraße","TYPE":"RDSGN"},{"value":"Senefelderstraße","TYPE":"LOCAL"},{"value":"Rotebühlstraße","TYPE":"BNAME"}],"ID":14318},"DIRECTION":{"DESCRIPTION":[{"value":"BIRKENKOPF","TYPE":"LOCAL"},{"value":"BIRKENKOPF","TYPE":"NTCSA"},{"value":"BIRKENKOPF","TYPE":"RDSGN"}],"ID":0},"PROXIMITY":{"ID":"AT","DESCRIPTION":"at"}}},"GEOLOC":{"ORIGIN":{"LATITUDE":48.77303,"LONGITUDE":9.1673},"TO":[{"LATITUDE":48.77192,"LONGITUDE":9.16331}]},"TPEGOpenLRBase64":"CCkBEAAlJAaE3CKu3AAJBQQCA7AACgUEAoJAAP5v/5EACQUEAgMxADAAAA==","NAVTECH":{"EDGE":{"EDGE_ID":["1188633283","1188633282","1188632885","1188633104","1236226993","1236226992","589241608","1188632687","1188632686"]},"VERSION_ID":"202004"},"LENGTH":0.19865},"TRAFFIC_ITEM_DETAIL":{"ROAD_CLOSED":false,"EVENT":{"EVENT_ITEM_CANCELLED":false,"SCHEDULED_CONSTRUCTION_EVENT":{"SCHEDULED_CONSTRUCTION_TYPE_DESC":"CONSTRUCTION","SCHEDULED_CONSTRUCTION_DETAIL":"construction"}},"ALERTC":[{"EVENT_CODE":803}]},"TRAFFIC_ITEM_DESCRIPTION":[{"value":"Bei Senefelderstraße - Bauarbeiten auf Abschnitt.","TYPE":"short_desc"},{"value":"Bei Senefelderstraße - Bauarbeiten auf Abschnitt.","TYPE":"desc"},{"value":"Bauarbeiten auf Abschnitt.","TYPE":"no_exit_description"}],"mid":"HERE-Europe-PR/r_HERE-Europe-PR/252996_TIC/NAVTEQ-REVERSE-1|1608047129931","PRODUCT":"basic"},{"TRAFFIC_ITEM_ID":456457506387012148,"ORIGINAL_TRAFFIC_ITEM_ID":2670894768263638109,"TRAFFIC_ITEM_STATUS_SHORT_DESC":"ACTIVE","TRAFFIC_ITEM_TYPE_DESC":"ROAD_CLOSURE","START_TIME":"12/17/2020 10:46:54","END_TIME":"12/18/2020 10:46:44","ENTRY_TIME":"12/17/2020 10:46:54","CRITICALITY":{"ID":"0","DESCRIPTION":"critical"},"VERIFIED":true,"ABBREVIATION":{"SHORT_DESC":"CLOS","DESCRIPTION":""},"LOCATION":{"INTERSECTION":{"ORIGIN":{"ID":"","STREET1":{"ADDRESS1":""},"STREET2":{"ADDRESS1":""},"COUNTY":"","STATE":"","PROXIMITY":{"ID":"AFT","DESCRIPTION":"past"}}},"GEOLOC":{"ORIGIN":{"LATITUDE":48.78748,"LONGITUDE":9.23092},"TO":[{"LATITUDE":48.78768,"LONGITUDE":9.23056}],"GEOMETRY":{"SHAPES":{"SHP":[{"value":"48.78748,9.23092 48.78768,9.23056","FC":5,"LID":"1245759009F","LE":0.03456093477811367,"FW":"SD"}]}}},"TPEGOpenLRBase64":"CCgBEAAkIwaQcCKxfQAJBQQEA9wACgQDBCMA/9wAFAAJBQQEA1wAMAAA","POLITICAL_BOUNDARY":{"METRO_AREA":{"value":"","ID":218}},"NAVTECH":{"EDGE":{"EDGE_ID":["1245759009"]},"VERSION_ID":"202004"},"LENGTH":0.02147},"TRAFFIC_ITEM_DETAIL":{"ROAD_CLOSED":true,"INCIDENT":{"RESPONSE_VEHICLES":false,"MISCELLANEOUS_INCIDENT":{"MISCELLANEOUS_TYPE_DESC":""}},"ALERTC":[{"EVENT_CODE":401}]},"TRAFFIC_ITEM_DESCRIPTION":[{"value":"Gesperrt.","TYPE":"short_desc"},{"value":"Gesperrt.","TYPE":"desc"},{"value":"Gesperrt.","TYPE":"no_exit_description"}],"mid":"override-S1245759009F-1245759009-1608103179775|1608202010756","PRODUCT":"basic"},{"TRAFFIC_ITEM_ID":1935656073345608578,"ORIGINAL_TRAFFIC_ITEM_ID":1935656073345608578,"TRAFFIC_ITEM_STATUS_SHORT_DESC":"ACTIVE","TRAFFIC_ITEM_TYPE_DESC":"CONSTRUCTION","START_TIME":"12/15/2020 15:46:09","END_TIME":"12/21/2020 22:59:00","ENTRY_TIME":"12/15/2020 15:46:23","CRITICALITY":{"ID":"2","DESCRIPTION":"minor"},"VERIFIED":true,"ABBREVIATION":{"SHORT_DESC":"CONST","DESCRIPTION":"construction"},"RDS-TMC_LOCATIONS":{"RDS-TMC":[{"ORIGIN":{"EBU_COUNTRY_CODE":"D","TABLE_ID":1,"LOCATION_ID":"14310","LOCATION_DESC":"Heilbronner Straße/B27","RDS_DIRECTION":"-"},"TO":{"EBU_COUNTRY_CODE":"D","TABLE_ID":1,"LOCATION_ID":"14311","LOCATION_DESC":"Cannstatter Straße/B14","RDS_DIRECTION":"-"},"DIRECTION":"+","ALERTC":{"TRAFFIC_CODE":514,"QUANTIFIERS":0,"DESCRIPTION":"Fahrbahn von auf einen Fahrstreifen verengt.","ALERTC_DURATION":"L","ALERTC_DIRECTION":1,"UPDATE_CLASS":5,"PHRASE_CODE":"D15","EXTENT":"2","DURATION":0},"LENGTH":0.27903,"PRIMARY_OFFSET":0.02504},{"ORIGIN":{"EBU_COUNTRY_CODE":"D","TABLE_ID":1,"LOCATION_ID":"14310","LOCATION_DESC":"Heilbronner Straße/B27","RDS_DIRECTION":"-"},"TO":{"EBU_COUNTRY_CODE":"D","TABLE_ID":1,"LOCATION_ID":"14311","LOCATION_DESC":"Cannstatter Straße/B14","RDS_DIRECTION":"-"},"DIRECTION":"+","ALERTC":{"TRAFFIC_CODE":803,"QUANTIFIERS":0,"DESCRIPTION":"Bauarbeiten auf Abschnitt.","ALERTC_DURATION":"L","ALERTC_DIRECTION":1,"UPDATE_CLASS":11,"PHRASE_CODE":"E11","EXTENT":"2","DURATION":0},"LENGTH":0.27903,"PRIMARY_OFFSET":0.02504}]},"LOCATION":{"DEFINED":{"ORIGIN":{"ROADWAY":{"DESCRIPTION":[{"value":"Wolframstraße","TYPE":"NTCSA"},{"value":"Wolframstraße","TYPE":"RDSGN"},{"value":"Wolframstraße","TYPE":"LOCAL"}],"ID":14308},"POINT":{"DESCRIPTION":[{"value":"Heilbronner Straße/B27","TYPE":"NTCSA"},{"value":"Heilbronner Straße/B27","TYPE":"RDSGN"},{"value":"Heilbronner Straße/B27","TYPE":"LOCAL"},{"value":"Wolframstraße","TYPE":"BNAME"}],"ID":14310},"DIRECTION":{"DESCRIPTION":[{"value":"CANNSTATTER STRAßE","TYPE":"LOCAL"},{"value":"CANNSTATTER STRAßE","TYPE":"NTCSA"},{"value":"CANNSTATTER STRAßE","TYPE":"RDSGN"}],"ID":0},"PROXIMITY":{"ID":"AT","DESCRIPTION":"at"}},"TO":{"ROADWAY":{"DESCRIPTION":[{"value":"Wolframstraße","TYPE":"NTCSA"},{"value":"Wolframstraße","TYPE":"RDSGN"},{"value":"Wolframstraße","TYPE":"LOCAL"}],"ID":14308},"POINT":{"DESCRIPTION":[{"value":"Cannstatter Straße/B14","TYPE":"NTCSA"},{"value":"Cannstatter Straße/B14","TYPE":"RDSGN"},{"value":"Cannstatter Straße/B14","TYPE":"LOCAL"},{"value":"Wolframstraße","TYPE":"BNAME"}],"ID":14311},"DIRECTION":{"DESCRIPTION":[{"value":"CANNSTATTER STRAßE","TYPE":"LOCAL"},{"value":"CANNSTATTER STRAßE","TYPE":"NTCSA"},{"value":"CANNSTATTER STRAßE","TYPE":"RDSGN"}],"ID":0},"PROXIMITY":{"ID":"AT","DESCRIPTION":"at"}}},"GEOLOC":{"ORIGIN":{"LATITUDE":48.79077,"LONGITUDE":9.18628},"TO":[{"LATITUDE":48.78872,"LONGITUDE":9.1909}]},"TPEGOpenLRBase64":"CCkBEAAlJAaIQyKyHAAJBQQCA1YACgUEAoNZAAHq/ygACQUEAgPQADAXAA==","NAVTECH":{"EDGE":{"EDGE_ID":["1189088334","52888414","574413618","574413617","1115246838","1115246839","1115246840","1115246841","1115246842","1115246843","1115246845","1115246844","540887036","1265465811","1265465812","1188587922","589239598","1265466133","1265466132"]},"VERSION_ID":"202004"},"LENGTH":0.27903},"TRAFFIC_ITEM_DETAIL":{"ROAD_CLOSED":false,"EVENT":{"EVENT_ITEM_CANCELLED":false,"SCHEDULED_CONSTRUCTION_EVENT":{"SCHEDULED_CONSTRUCTION_TYPE_DESC":"CONSTRUCTION","SCHEDULED_CONSTRUCTION_DETAIL":"construction"}},"ALERTC":[{"EVENT_CODE":514},{"EVENT_CODE":803}]},"TRAFFIC_ITEM_DESCRIPTION":[{"value":"Zwischen Heilbronner Straße/B27 und Cannstatter Straße/B14 - Bauarbeiten auf Abschnitt. Fahrbahn von auf einen Fahrstreifen verengt.","TYPE":"short_desc"},{"value":"Zwischen Heilbronner Straße/B27 und Cannstatter Straße/B14 - Bauarbeiten auf Abschnitt. Fahrbahn von auf einen Fahrstreifen verengt.","TYPE":"desc"},{"value":"Bauarbeiten auf Abschnitt. Fahrbahn von auf einen Fahrstreifen verengt.","TYPE":"no_exit_description"}],"mid":"08ae72c1-1497-440e-aa05-21d15ae11f38|1608047183374","PRODUCT":"basic"},{"TRAFFIC_ITEM_ID":3843148658068682097,"ORIGINAL_TRAFFIC_ITEM_ID":3843148658068682097,"TRAFFIC_ITEM_STATUS_SHORT_DESC":"ACTIVE","TRAFFIC_ITEM_TYPE_DESC":"CONSTRUCTION","START_TIME":"12/15/2020 15:46:11","END_TIME":"12/18/2020 22:59:00","ENTRY_TIME":"12/15/2020 15:46:11","CRITICALITY":{"ID":"2","DESCRIPTION":"minor"},"VERIFIED":true,"ABBREVIATION":{"SHORT_DESC":"CONST","DESCRIPTION":"construction"},"RDS-TMC_LOCATIONS":{"RDS-TMC":[{"ORIGIN":{"EBU_COUNTRY_CODE":"D","TABLE_ID":1,"LOCATION_ID":"53064","LOCATION_DESC":"Silberburgstraße","RDS_DIRECTION":"-"},"DIRECTION":"+","ALERTC":{"TRAFFIC_CODE":803,"QUANTIFIERS":0,"DESCRIPTION":"Bauarbeiten auf Abschnitt.","ALERTC_DURATION":"L","ALERTC_DIRECTION":1,"UPDATE_CLASS":11,"PHRASE_CODE":"E11","EXTENT":"1","DURATION":0},"LENGTH":0.19867,"PRIMARY_OFFSET":0.15719}]},"LOCATION":{"DEFINED":{"ORIGIN":{"ROADWAY":{"DESCRIPTION":[{"value":"Rotebühlstraße","TYPE":"NTCSA"},{"value":"Rotebühlstraße","TYPE":"RDSGN"},{"value":"Rotebühlstraße","TYPE":"LOCAL"}],"ID":53062},"POINT":{"DESCRIPTION":[{"value":"Senefelderstraße","TYPE":"NTCSA"},{"value":"Senefelderstraße","TYPE":"RDSGN"},{"value":"Senefelderstraße","TYPE":"LOCAL"},{"value":"Rotebühlstraße","TYPE":"BNAME"}],"ID":53064},"DIRECTION":{"DESCRIPTION":[{"value":"STUTTGART-WEST","TYPE":"LOCAL"},{"value":"STUTTGART-WEST","TYPE":"NTCSA"},{"value":"STUTTGART-WEST","TYPE":"RDSGN"}],"ID":0},"PROXIMITY":{"ID":"AT","DESCRIPTION":"at"}},"TO":{"ROADWAY":{"DESCRIPTION":[{"value":"Rotebühlstraße","TYPE":"NTCSA"},{"value":"Rotebühlstraße","TYPE":"RDSGN"},{"value":"Rotebühlstraße","TYPE":"LOCAL"}],"ID":53062},"POINT":{"DESCRIPTION":[{"value":"Silberburgstraße","TYPE":"NTCSA"},{"value":"Silberburgstraße","TYPE":"RDSGN"},{"value":"Silberburgstraße","TYPE":"LOCAL"},{"value":"Rotebühlstraße","TYPE":"BNAME"}],"ID":53064},"DIRECTION":{"DESCRIPTION":[{"value":"STUTTGART-WEST","TYPE":"LOCAL"},{"value":"STUTTGART-WEST","TYPE":"NTCSA"},{"value":"STUTTGART-WEST","TYPE":"RDSGN"}],"ID":0},"PROXIMITY":{"ID":"AT","DESCRIPTION":"at"}}},"GEOLOC":{"ORIGIN":{"LATITUDE":48.77192,"LONGITUDE":9.16331},"TO":[{"LATITUDE":48.77303,"LONGITUDE":9.1673}]},"TPEGOpenLRBase64":"CCkBEAAlJAaEISKuqAAJBQQCAzEACgUEAoJAAAGRAG8ACQUEAgOwADAAAA==","NAVTECH":{"EDGE":{"EDGE_ID":["1188632686","1188632687","589241608","1236226992","1236226993","1188633104","1188632885","1188633282","1188633283"]},"VERSION_ID":"202004"},"LENGTH":0.19867},"TRAFFIC_ITEM_DETAIL":{"ROAD_CLOSED":false,"EVENT":{"EVENT_ITEM_CANCELLED":false,"SCHEDULED_CONSTRUCTION_EVENT":{"SCHEDULED_CONSTRUCTION_TYPE_DESC":"CONSTRUCTION","SCHEDULED_CONSTRUCTION_DETAIL":"construction"}},"ALERTC":[{"EVENT_CODE":803}]},"TRAFFIC_ITEM_DESCRIPTION":[{"value":"Bei Silberburgstraße - Bauarbeiten auf Abschnitt.","TYPE":"short_desc"},{"value":"Bei Silberburgstraße - Bauarbeiten auf Abschnitt.","TYPE":"desc"},{"value":"Bauarbeiten auf Abschnitt.","TYPE":"no_exit_description"}],"mid":"HERE-Europe-PR/r_HERE-Europe-PR/252996_TIC/NAVTEQ-ORIGINAL-1|1608047129931","PRODUCT":"basic"},{"TRAFFIC_ITEM_ID":1504123306603357608,"ORIGINAL_TRAFFIC_ITEM_ID":1454767416629063173,"TRAFFIC_ITEM_STATUS_SHORT_DESC":"ACTIVE","TRAFFIC_ITEM_TYPE_DESC":"ROAD_CLOSURE","START_TIME":"12/17/2020 13:37:56","END_TIME":"12/18/2020 12:37:46","ENTRY_TIME":"12/17/2020 13:37:56","CRITICALITY":{"ID":"0","DESCRIPTION":"critical"},"VERIFIED":true,"ABBREVIATION":{"SHORT_DESC":"CLOS","DESCRIPTION":""},"RDS-TMC_LOCATIONS":{"RDS-TMC":[{"ORIGIN":{"EBU_COUNTRY_CODE":"D","TABLE_ID":1,"LOCATION_ID":"54850","LOCATION_DESC":"Mercedes-Benz-Arena","RDS_DIRECTION":"+"},"DIRECTION":"-","ALERTC":{"TRAFFIC_CODE":401,"DESCRIPTION":"Gesperrt.","ALERTC_DURATION":"L","ALERTC_DIRECTION":1,"URGENCY":"U","UPDATE_CLASS":5,"PHRASE_CODE":"C1","EXTENT":"1","DURATION":0},"LENGTH":0.07096,"PRIMARY_OFFSET":0.25496}]},"LOCATION":{"DEFINED":{"ORIGIN":{"ROADWAY":{"DESCRIPTION":[{"value":"Mercedesstraße","TYPE":"NTCSA"},{"value":"Mercedesstraße","TYPE":"RDSGN"},{"value":"Mercedesstraße","TYPE":"LOCAL"}],"ID":54846},"POINT":{"DESCRIPTION":[{"value":"Martin-Schrenk-Weg","TYPE":"NTCSA"},{"value":"Martin-Schrenk-Weg","TYPE":"RDSGN"},{"value":"Martin-Schrenk-Weg","TYPE":"LOCAL"},{"value":"Mercedesstraße","TYPE":"BNAME"}],"ID":54850},"DIRECTION":{"DESCRIPTION":[{"value":"KÖNIG-KARL-STRAßE","TYPE":"LOCAL"},{"value":"KÖNIG-KARL-STRAßE","TYPE":"NTCSA"},{"value":"KÖNIG-KARL-STRAßE","TYPE":"RDSGN"}],"ID":0},"PROXIMITY":{"ID":"AT","DESCRIPTION":"at"}},"TO":{"ROADWAY":{"DESCRIPTION":[{"value":"Mercedesstraße","TYPE":"NTCSA"},{"value":"Mercedesstraße","TYPE":"RDSGN"},{"value":"Mercedesstraße","TYPE":"LOCAL"}],"ID":54846},"POINT":{"DESCRIPTION":[{"value":"Mercedes-Benz-Arena","TYPE":"NTCSA"},{"value":"Mercedes-Benz-Arena","TYPE":"RDSGN"},{"value":"Mercedes-Benz-Arena","TYPE":"LOCAL"},{"value":"Mercedesstraße","TYPE":"BNAME"}],"ID":54850},"DIRECTION":{"DESCRIPTION":[{"value":"KÖNIG-KARL-STRAßE","TYPE":"LOCAL"},{"value":"KÖNIG-KARL-STRAßE","TYPE":"NTCSA"},{"value":"KÖNIG-KARL-STRAßE","TYPE":"RDSGN"}],"ID":0},"PROXIMITY":{"ID":"AT","DESCRIPTION":"at"}}},"GEOLOC":{"ORIGIN":{"LATITUDE":48.78966,"LONGITUDE":9.23337},"TO":[{"LATITUDE":48.79031,"LONGITUDE":9.23217}]},"TPEGOpenLRBase64":"CCgBEAAkIwaQ4iKx4wAJBQQDA9wACgQDA3IA/4gAQQAJBQQDA1wAMAAA","NAVTECH":{"EDGE":{"EDGE_ID":["52882989"]},"VERSION_ID":"202004"},"LENGTH":0.07096},"TRAFFIC_ITEM_DETAIL":{"ROAD_CLOSED":true,"INCIDENT":{"RESPONSE_VEHICLES":false,"MISCELLANEOUS_INCIDENT":{"MISCELLANEOUS_TYPE_DESC":""}},"ALERTC":[{"EVENT_CODE":401}]},"TRAFFIC_ITEM_DESCRIPTION":[{"value":"Geschlossen bei Mercedes-Benz-Arena - Gesperrt.","TYPE":"short_desc"},{"value":"Geschlossen bei Mercedes-Benz-Arena - Gesperrt.","TYPE":"desc"},{"value":"Gesperrt.","TYPE":"no_exit_description"}],"mid":"override-D01-54846-820268230-1608200007469|1608212269292","PRODUCT":"basic"}]},"diagnostic":{"info":"","sfile":"Incident-E0D01-1608216084974.xml.gz|pr1","pdd":"trafficml-incident-24-v6"},"TIMESTAMP2":"2020-12-17T14:41:26.000+0000","EXTENDED_COUNTRY_CODE":"E0"}
\ No newline at end of file
This source diff could not be displayed because it is too large. You can view the blob instead.
Supports Markdown
0% or .
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment