I have a similar problem but i dont have any walls. Do car parks behave like walls?
Use event.preventDefault() before implementing your code and this should solve your issue.
As of iOS 18 you can pause video recording (finally)... BUT this isn't available to your app in react expo using expo-av. I wish / pray its added. Who knows.
You can do so using the CustomPainter
widget.
It is pretty much like a pen, you can take it where ever you want.
It depends on what you're trying to do. I've done it a few ways:
Use Windows Environment Variables. See the docs for more info.
Store them in SQL.
I encountered this issue in both the browser and GitKraken when accessing Azure DevOps. The solution was to disable 'Internet Protocol Version 6 (TCP/IPv6)' in the Network Connection properties.
Found the solution through:
Yes using npm install git+https://github.com/DS4SD/docling.git
is the correct approach to install a package directly from its GitHub repository.
You can verify by checking the node modules
There is an error in this line, please change styles to style.
<View style={styles.itemLeft}>
the following solution works: setName(fileTitle) works
Try to do the following:
Errors to utils file are imported from pyspark.errors import ...
https://github.com/apache/spark/blob/master/python/pyspark/sql/utils.py#L36
I can only help with the first part of your question - why 9 row limit.
I experienced the same problem - 1 header row and 9 data rows.
The default style was 35px per row, therefore 350px total height.
The default css styling sets block-size: 350px which limits you to 10 visible rows.
In the example: https://adazzle.github.io/react-data-grid/#/CommonFeatures you can see that the className "fill-grid" has a css rule: block-size: 100%.
Setting the className prop on DataTable to "fill-grid" and creating a css rule for the "fill-grid" class allowed me to see all rows in the table.
In my case, with Gradle and a custom configuration in the build.gradle, Clean Java Language Server Workspace did not work.
The problem was the following:
The build.gradle contained a custom configuration. By default, many IDEs (including VS Code with the Java extensions) do not automatically pick up libraries that are only declared in a custom configuration. They expect the dependencies to appear in one of the standard configurations.
How to Fix in that case:
I wrote library for that
public function add(mixed ...$args): void
{
$addMethodOverloader = MethodOverloader::create($this)
->register($this->addByFirstNameLastNameAndNumber(...),'string', 'string', 'int')
->register($this->adddByUser(...), User::Class)
->register($this->addByPlayer(...), Player::class)
->register($this->addByArray(...), 'array')
->register($this->addNyNameAndNumber(...), 'string', 'int')
->onFailure(function() {
throw new MyCustomException();
});
$addMethodOverloader->invoke($args);
}
$userRepository = new UserRepository();
$userRepository->add('Micheal', 'Jordan', 23);
$userRepository->add('Micheal Jordan', 23);
$userRepository->add(new User("Micheal", "Jordan", 23));
$userRepository->add(new Player("Micheal", "Jordan", 23));
$userRepository->add(['fist_name' => 'Micheal', 'last_name' => 'Jordan', 'number' => 23]);
Added
if (didPop) {return;}
worked for me!
This is what I got from them yesterday,sounds like they do not like that my handle is not matching my name on the account. It's only me and my open source projects, my advice do not add any more information except for the handle since they are not making any sense.
Hi there,
I've checked this out and the account's been caught by one of our systems that highlights accounts for manual review.
In this case it appears we restricted the account because of the information in the GitHub profile. A user account is a representative of an individual, so any information filled in the profile should represent a person not an organization or a project. In order to clear the flag, we need you to amend your profile.
There is no requirement for you to display any personal information or an avatar; you’re fine to leave these blank if you’d prefer. Please let us know when you complete that.
Regards, Jade
Generally, it is a permission issue.
Try this command :
sudo npm i firebase
It will ask for your PC password and you are done .
etc-override is only used at broker creation. If broker already exists, content from etc-override is not copied to etc.
I found an article of Microsoft.
Don't use secure strings or objects as output values. If you include a secure value as an output value, the value isn't displayed in the deployment history and can't be retrieved from another template. Instead, save the secure value in a key vault, and pass as a parameter from the key vault.
In this case I am changing the way of deployment and doing it this way.
For step 5 the property RunAsPreJob must set to false on the AzureKeyVault@2 task. So you can download the secret after defined in step 3/4.
For me this workaround/option/solution works now.
As of Jan 2025, https://circleci.com/docs/configuration-reference/#requires
Requires allows status
:
The possible status values are: success, failed and canceled.
workflows:
my-workflow:
jobs:
- notify-build-canceled:
requires:
- build: canceled
- cleanup:
requires:
- deploy:
- failed
- canceled
```
In Yarn 2.x and above, the yarn global commands are removed. To uninstall a global package, you can still use npm instead:
npm uninstall -g <Package>
One of the tests suggests that it is SequenceChain.getConsecutiveSequences()
.
Oh, thou pitiable wight, dost thou yet lack the wit to compass so plain a query? Were thy faculties less clouded by indolence, thou might'st discern the answer, as clear as the sun at noonday. Methinks the ancients themselves would marvel at such a profound lack of sagacity! Pray, summon what scant sense remains within thee and cease to burden the air with questions that even a babe might resolve.
i can't find the documentation for it, but i think you should do something like this.
withHooks({
onInit: ({ isLoading }) => {
if (isLoading) {
screenLockService.lock();
} else {
screenLockService.unlock();
}
},
});
now when isLoading changes it should update the lockscreen
Might be useful to check this guide - https://docs.talsec.app/appsec-articles/articles/how-to-implement-secure-storage-in-flutter
How are you processing messages in the outbox table?
If you are reading from the Write-Ahead Log (WAL), you can delete the messages as soon as you insert them, as the insertion entry in the WAL will still be there. This is a common practice when implementing this pattern.
You can even take it a step further and write directly to the WAL without even writing to a DB table using pg_logical-emit-message().
Ok Thank you very much for your help, it works now, i had to stop the event propagating as said earlier, here is the new version :
$(document).click('.buttonVoirProduit',async()=>{
console.log('buttonVoirProduit Clicked');
/*console.log('buttonVoirProduitId Ooutside : ', buttonVoirProduitId);*/
console.log('buttonId : ', buttonVoirProduitId);
const divFicheProduit = document.createElement('div');
divFicheProduit.style.width = '100%';
divFicheProduit.style.height = '100%';
divFicheProduit.style.opacity = '80%';
divFicheProduit.style.background = 'black';
divFicheProduit.style.display = 'flex';
divFicheProduit.style.position = 'absolute';
divFicheProduit.style.left = '50%';
divFicheProduit.style.transform = `translateX(-50%)`;
divFicheProduit.style.top = '200px';
divFicheProduit.id = `ficheProduit${buttonVoirProduitId}`;
divFicheProduitId = divFicheProduit.id;
console.log(`divFicheProduitId after buttonVoirProduit clicked : `,divFicheProduitId);
const buttonLeave = document.createElement('img');
buttonLeave.src = 'icones/cancel.png';
buttonLeave.classList.add('buttonLeave');
buttonLeave.id = `buttonLeave${buttonVoirProduitId}`;
buttonLeave.style.right = '0px';
buttonLeave.style.top = '0px';
buttonLeave.style.cursor = 'pointer';
buttonLeave.style.zIndex = '1000';
buttonLeave.style.position = 'absolute';
buttonLeave.style.width = '25px';
buttonLeave.style.height = 'auto';
buttonLeave.style.aspectRatio = 'preserve';
buttonLeave.style.filter = 'brightness(0) saturate(100%) invert(92%) sepia(3%) saturate(2225%) hue-rotate(339deg) brightness(101%) contrast(91%)';
const imgFicheProduit = document.createElement('img');
imgFicheProduit.style.width = '50%';
/*divFicheProduit.style.zIndex = '1000';*/
divFicheProduit.append(buttonLeave);
document.body.appendChild(divFicheProduit);
buttonLeave.addEventListener('click', async(e) =>{
e.stopPropagation();
divFicheProduit.style.display = 'none';
});
});
This is combination of VISA.NET Shared Components version and VISA Shared Components version
I came across the same error and could not figure it out either.
node-cache-manager was only updated to newest version within these last days. https://github.com/node-cache-manager/node-cache-manager/tags
So I updated the package.json to use version 5.x
"cache-manager": "^5.0.0", And now the caching works as expected.
Keep an eye on the package issue queue for further updates.
The difference is that a hundred years Yekaterinburg Time (YEKT) was different, according to this site in 1900 it was UTC +4:02:33, judging by your example you have +5:02:33, perhaps there are other variables to consider.
As suggested by @ADyson i used Filter.
Purpose of index here is that e.g, using the following code when multiples elements are selected, index represents the number of the element from the selected multiple elements
$('.test').text((i, originalText) => {
return 'updated value of' + i;
});
multiple elements can have the 'test' class, so index represents the number of the current element on whom the text function is being executed right now
I'll try to answer to my best.
As for the immutable part, I'd say you're right but when I do some changes, they are inplace.
1/ con.insert(yourtable, {"col1": ['value1'], "col2": ['value2']})
| See https://ibis-project.org/backends/duckdb#ibis.backends.duckdb.Backend.insert
2/ con.raw_sql("DELETE FROM mytable WHERE col == 'value'")
| See : https://ibis-project.org/how-to/extending/sql#backend.raw_sql
3/ I'd go for mutate
| See : https://ibis-project.org/reference/expression-tables.html#ibis.expr.types.relations.Table.mutate
This is my 'caveman' solution until I get an actual working automated scailing of the height:
I manually enter the desired starting height:
#self.height = self.minimum_height
self.height = dp(220)
I then add a cumulative height change within the add and remove functions:
self.height += dp(40)
For anyone who is really intrested in building multiplayer games on phaser using matter/arcade physics I can recommend the following server side lib/framework (nodejs) - https://colyseus.io/
As well, they have the tutorial for phaser example - https://colyseus.io/learn/phaser/
In that case all important calculations (like player movement etc) should be done on SERVER SIDE on each tick and the client side should visualize the updates.
Seriously, colyseus saved me a lot of hours and it's pretty simple!
I defer to @Mark Wiemer's comment about Typescript inferring unknown
. I found that I could get it to return the correct types by using typeof obj[K][number]
in the return type.
function mapToCreateObjects<K extends keyof U, T, U extends Record<K, T[]>>(
obj: U,
key: K,
): Record<K, { create: typeof obj[K][number] }[]> {
return {
[key]: obj[key].map((item) => ({ create: item })),
} as Record<K, { create: typeof obj[K][number] }[]>;
}
The transformedFruits
variable now has this type:
{ vegetables: { create: number }[], fruits: { create: string }[] }
I hope this is helpful!
Thanks @mklement0 for the great links. That was a set of good reads to refamiliarize myself with.
It turned out in my case that I needed to surround the password with "
characters.
I failed to mention that I am calling az postgres flexible-server execute
in a PS1 script that is itself called from another PS1 script, all running in pwsh.
Ultimately what worked was, basically:
# $rawPW is the raw password from a KV Secret or elsewhere
$p = """" + $rawPW + """"
...
az postgres flexible-server execute -n the-instance-name -u theName -p $p -d theDatabase -q "select * from MyTable"
This is what I got from them yesterday,sounds like they do not like that my handle is not matching my name on the account. It's only me and my open source projects, my advice do not add any more information except for the handle since they are not making any sense.
Hi there,
I've checked this out and the account's been caught by one of our systems that highlights accounts for manual review.
In this case it appears we restricted the account because of the information in the GitHub profile. A user account is a representative of an individual, so any information filled in the profile should represent a person not an organization or a project. In order to clear the flag, we need you to amend your profile.
There is no requirement for you to display any personal information or an avatar; you’re fine to leave these blank if you’d prefer. Please let us know when you complete that.
Regards, Jade
Updating import from 'apollo-boost' to 'apollo-client' resolved the issue.
ApolloClient imported from 'apollo-boost' doesnt consume the link property as it used 'apollo-http-link' by default.
Update: the problem was the S3 configuration. The process was so long that the S3 at certain point cut the connection and the process threw an error. Changing the S3 configuration solved the problem.
Thank You @Sridevi.
The key is to add Workspace ID to the URL So, in the second WEB activity where the Bearer Token is passed, instead of the following URL: https://api.powerbi.com/v1.0/myorg/reports/
Add Workspace ID, like this: https://api.powerbi.com/v1.0/myorg/groups/{Workspace ID}/reports
For completeness, in the specific case of your array A
always containing only zeroes or ones as it does in your example, you can simply multiply A
and B
:
A *= B
While push_back
is as efficient as possible (read up on "amortized complexity") it is still very slow. You could reserve
your vector to some upper bound, which speeds up the push back considerably.
This does not entirely explain why the parallel version would be slower than the sequential. Could it be that the parallel one overflows your memory and you're swapping to disc?
But really, I would try to reformulate the algorithm. Do you actually need the vector or is there a way to do the resulting computation on it without having it stored?
When you have more than 7 or 8 such agents, the better way would be to insert into them into a table and use that table to either left join or sub query with in clause based on the need.
Check here to see how to set coreLibraryDesugaringEnabled to true
ExecutionContext is of .Net6
FunctionContext is of .Net8 Isolated. so after we upgrade our code from .net6 to .net8, better to use FunctionContext to get invocationid
Make sure your app is published, probably production. It worked for me
I've developed a new React Native add calendar package. It is completely native for both systems iOS and Android. It uses their underlying intent system without dependencies, so it should last for many years without any update. The reason why I developed it, is because all other packages have some major problems (see README under topic "Why?" for comparison).
https://www.npmjs.com/package/react-native-add-calendar-event-intent
I downgraded connect-redis verion to version 6 and the error stopped.
To resolve this I used Objdetect's getPredefinedDictionary method as shown below:
for the import:
import org.opencv.objdetect.Objdetect;
And for the usage in code:
Dictionary dictionary = Objdetect.getPredefinedDictionary(Objdetect.DICT_4X4_50);
This seems to be possible now. If you are using YAML Pipeline for your Build and Release, you can look at my configuration here.
I have created a streamlit that detects SMS fraud, and here I have to type or enter a message from the dataset because I take data science, the problem is how do I make my streamlit directly connect and automatically be detected and can read incoming messages without entering the dataset again?
This is now possible (not sure of browser support, though). See https://developer.mozilla.org/en-US/docs/Web/URI/Fragment/Text_fragments
If only fails on the longer name. These are all defined as Arduino String (capital S). The shorter ones print just fine. Why does only the longer one fail? I think that is a length part to this. A little s or big S fails to print the longer one. So. now, I know how to fix it but why does it work for shorter and fail for longer all defined the same?
Serial.printf("%s %S\r\n", multiCity[whichCity].CityName.c_str(),
multiCity[whichCity].CityName);
Requesting city #1 - Benicia, CA Benicia, CA
Requesting city #2 - Dayton, OH Dayton, OH
Requesting city #3 - Shreveport, LA p⸮⸮?
Requesting city #0 - Bangui, RP Bangui, RP
When you initialize COM port (in Python) Arduino will restart. So, I suggest you try increasing time from 1ms to 1s by changing your code to:
import serial
import time
arduino2 = serial.Serial(port='COM12', baudrate=9600, timeout=.1)
time.sleep(1000)
arduino2.write(str.encode("u"))
This additional time should be enough for Arduino Nano to restart and respond to serial communication.
Question:
Android - Show full-screen notification when app is in the background
Based on the documentation for setFullScreenIntent
(https://developer.android.com/reference/android/app/Notification.Builder#setFullScreenIntent(android.app.PendingIntent,%20boolean)), full-screen intents are intended for urgent, high-priority notifications such as incoming calls or alarms.
From the related article (https://source.android.com/docs/core/permissions/fsi-limits), there are guidelines on how to use this feature and limitations on its behavior, but the exact behavior can depend on the state of the device (locked /unlocked ...) and system-level restrictions.
These are untested notes based on research. While this answer is late for the original poster, I hope it is useful to anyone who encounters this issue in the future.
I was Able to solve the problem using "prettier.endOfLine": "auto"
my answer is very simple UNINSTALL and REINSTALL Node JS. Resolved for me.
This kind of behavior as I understand it from my own experience is done by default "Kafka design":
Delivery Guarantees at least once: This means messages are delivered one or more times. If there is a system failure, messages are never lost, but they may be delivered more than once.
Official docs: https://docs.confluent.io/kafka/design/delivery-semantics.html
Maybe use the FLIR_ONE_WIRELESS interface instead?
first_item, last_item = some_list[0:], some_list[-1:]
Actually the quarkus.oidc.token.lifespan-grace=60
is doing the work as expected. Current time is allowed to be later than token expiration time by at most the configured number of seconds.
In my case this was not working because I was overriding the configuration using the implements TenantConfigResolver
so I had to add the equivalent there config.getToken().setLifespanGrace(60);
Based on their website, it seems like there isn't an existing Imageflow plugin for Google cloud storage as of now. About implementing IBlobProvider for Google Cloud Storage, it might be suitable to open an issue in their GitHub page to get a direct response from their team and other developers.
You can also file a feature request in Google Cloud here. Have a read also what to expect after you’ve opened an issue.
The solution I found was create an txt file that contains the ascii art, and use the fs module, like this
const fs = require('fs');
fs.readFile('./ascii.txt', 'utf8', (err, data) => {
if (err) {
console.error('Error reading the file:', err);
return;
}
console.log(data);
});
yes, thank you, I had the same problem and after waiting a while it began to fetch installation file...thank you for your support
Lately I've been persidict
when it comes to persistent dictionaries. But shelve
or pickle
are also options for your task.
Surefire was incorrectly marking many tests as failed, including those provided as examples, even though they were actually functioning correctly. This explains why running the tests with -Dtest revealed no errors.
Upon closer inspection of the Mockito logs located just below the error messages in Surefire, I discovered that the issue was related to entirely different classes. The problem was ultimately resolved by adding @ExtendWith(MockitoExtension.class) before the class declarations.
The problem is that you specify an empty path in your proxy_pass directive. So writing
proxy_pass http://localhost:8082;
would prevent the rewriting/normalization behaviour. The subject is covered in detail here in the documentation of nginx https://nginx.org/en/docs/http/ngx_http_proxy_module.html#proxy_pass
If you're trying to move a large batch of files at once, it's better to use the sync option of s3 command.
Is multithread and a way faster.
aws s3 sync . s3://your-bucket-name
You can use the ConsoleR package that serves multiple features like Menu, CheckBox, AsciiArt, Alert, Table, and ...
Setup a CloudFront distribution before S3 bucket. This will reduce latency of accessing the file from other regions, because:
Getting Uncaught TypeError: Cannot set properties of undefined (setting 'scroll_to_notices')
when installing PyTorch 2.5
try to use Python versions from 3.9
up to 3.12
, because PyTorch 2.5 officially supports Python versions from 3.9 up to 3.12.
CUDA 12.4
is compatible with NVIDIA driver
version is 566.36
.
For cuDNN cuDNN 9.1.0.70
version is compatible with CUDA 12.4
.
For Installation:
Create a new virtual environment using conda with python version 3.12.0
:
conda create -n pytorch_env python==3.12.0
Activate the env:
conda activate pytorch_env
Install pyTorch with CUDA 12.4
:
conda install pytorch torchvision torchaudio pytorch-cuda=12.4 -c pytorch -c nvidia
Now try to verify it:
print(torch.cuda.is_available())
Or use req.params['webServ'] instead
Currently the picker does not expose such a setting for the modern mode. This may be achievable but using overrides of the internal logic. In the classic component type you can define dates which will allow such behavior - https://docs.telerik.com/kendo-ui/api/javascript/ui/timepicker/configuration/dates
hey bro is the problem solved ?? because even i got same error so what's the solution
I you worry about data corruption use a SQLite Transaction. If you do it the right way, nothing will become corrupted.
Both applications should access the database independently.
What you can do with messaging, is to inform the other application that table xy has changed or even which specific records have changed. The other application can then re-query its data or do whatever is necessary.
See also: Can SQLite support multiple users?
As this is not supported by current SHACL standard versions, I assume you are open to discussing some SHACL extension?
This is what we support now in our product, for pretty much exactly your use case: https://datashapes.org/dynamic.html#example-state
is there any alternative of private endpoint ?
There are a number of restrictions and limitations on azure app service. Adjusting the graceful shutdown period is not supported on multi-tenant app services (i.e. azure app service) to configure the shutdown period.
More details in this link:
one particular controller: ibuilder.Services.AddTransient<OldController, CustomOldController>();
i~i fj|v`v systemay
Not sure what you mean with legit, but the way read it as, how do I tell my users the new repository is trustworthy, and the new location, is the formal origin, and not some kind of meaningless clone.
I think it would also help if you create a on the old repository, referring to the new repository (in the README). After you have done that, you could consider to put the old repository in archive / readonly mode.
In this case the issue was that the timeout was not long enough on the _pactVerifier
. By default, this time is set to 5 seconds PactNet and this can be overridden using
_pactVerifier.WithRequestTimeout(TimeSpan.FromSeconds(20))
to increase the verifier timeout to 20 seconds in this case.
Karafka author here. Please see this thread: https://github.com/karafka/karafka-rdkafka/issues/126
I am actively working to provide a systematic solution that covers all the MacOS versions, meanwhile please put this in your zshrc
:
export CPPFLAGS="-I/Library/Developer/CommandLineTools/SDKs/MacOSX15.0.sdk/usr/include/c++/v1/"
A simple alternative to sandbox testing - and which applies more widely that just to RingCentral - is to use a fax testing service like Faxbeep. It freely provides test fax numbers in the US and additional countries that instantly display your fax on a web interface. This makes it easy to verify your fax API implementation and debug issues. Faxes are generally retained for 30 days, but deleted immediately upon request for privacy reasons.
(Disclaimer: I run the service)
I am trying to set up a similar thing (if I understand it correctly): A possibility to have certain attributes changed in the cart with one click so that all products which have an attribute of the same category also are updated. Will this work if I buy WooCommerce Product Add-Ons? Which one specifically, there are several with such a name? Or will I still have to do manual programming like in this thread, because i think i would like to avoid that :D thanks! I didn't find very much on this topic, thats why I posted this here.
How can I do a similar operation in WPF?
class BooleanToContentConverter : IValueConverter
{
public string TrueContent { get; set; }
public string FalseContent { get; set; }
public object Convert(object value, Type targetType, object parameter, CultureInfo culture)
{
return (bool)value ? TrueContent : FalseContent;
}
public object ConvertBack(object value, Type targetType, object parameter, CultureInfo culture)
{
throw new NotImplementedException();
}
}
<Page.Resources>
<conv:BooleanToContentConverter x:Key="StateContent" TrueContent="Pause" FalseContent="Play"/>
</Page.Resources>
I haven't tried it this way, but the contents of all objects change at the same time.
To solve this problem I delete the files in the following path
C:\Users\Abdelwahid\AppData\Roaming\jupyter\runtime
You can't use JavaScript if the app is in the background, as it is halted, hence you need to send to a server, then pull from the server from your JavaScript when the app is resumed (via the foreground event). What are the dependencies that you report as 404, out of curiosity?
Looks like you need windowOptOutEdgeToEdgeEnforcement
Just mark readen items of list as readen and don't read them again. After reading complete, use intervals/timeouts to close
MY SOLLUTION
Change order of fields, first goes FK field.
UPDATE tickets SET pending_department_id = 1 AND other_field = 0 WHERE id = 1;
Try to change the branch you're using, I was facing with the same issue, after change to dev branch, every warning come again to my project.
A slightly better solution can be done using @property and css variables.
@property --rotate {
syntax: '<angle>';
initial-value: 0deg;
inherits: false;
}
.gradient-button {
animation: rotate-gradient 1s linear infinite;
background-image: linear-gradient(var(--rotate), red, yellow, green);
}
@keyframes rotate-gradient {
from {
--rotate: 0deg;
}
to {
--rotate: 360deg;
}
}
<button id="fill" class="gradient-button">Fill Form</button>
You defined lookup k
as a function
, so lookup k
can be applied to t
. See https://ocaml.org/manual/5.3/expr.html#sss:expr-function-definition
On sqlexpress, we can backup database to another on MSSMS (Microsoft SQL Server Management Studio) like this:
Right-Click on Databases\Restore Database...
Then choose Source and Destination databases to copy.
Okay.. may I made this a bit too complicated.. After some further thinking about that structure I think it would be way more handy to dispatch directly depending tasks inside the initial Job.
E.g. the POST Requests which need to call the operationStatus Ressource should do that inside their jobs after finishing succesfull their Request. Furthermore that way should be better for requests which are followed by a decision making job (listPlacements => decide which placement should be used), because no cache handling are needed that way.
So I will build the jobs in a way that directly depending jobs(tasks) get dispatched inside. That way I capsulate already enough imo.
The big processes still will get builded as chains as otherwise I would duplicate to much code.
May that thinking process helps someone :D At least it helped me.
Good evening sir, can you help me assist with some queries regarding of purchase order? I will send you via this link below👇🏼 https://youtu.be/GBIIQ0kP15E?si=hw1Xei1BrbA9Y9XM